From 63bb0d93b11f02080a820729a2ebb0b69465a352 Mon Sep 17 00:00:00 2001 From: Packit Date: Aug 26 2020 08:55:13 +0000 Subject: osbuild-composer-20 base --- diff --git a/.github/koji.conf b/.github/koji.conf new file mode 100644 index 0000000..f5a14eb --- /dev/null +++ b/.github/koji.conf @@ -0,0 +1,68 @@ +; Koji installed from pip is missing the default config. +; This one is taken from Fedora 32 and installed in Github Actions. +[koji] + +;configuration for koji cli tool + +;url of XMLRPC server +;server = http://hub.example.com/kojihub +server = https://koji.fedoraproject.org/kojihub + +;url of web interface +;weburl = http://www.example.com/koji +weburl = https://koji.fedoraproject.org/koji + +;url of package download site +;pkgurl = http://www.example.com/packages + +;path to the koji top directory +;topdir = /mnt/koji +topurl = https://kojipkgs.fedoraproject.org/ + +;configuration for Kerberos authentication +authtype = kerberos +krb_rdns = false + +;the service name of the principal being used by the hub +;krbservice = host + +;the principal to auth as for automated clients +;principal = client@EXAMPLE.COM + +;the keytab to auth as for automated clients +;keytab = /etc/krb5.keytab + +;enable to lookup dns canonical hostname for krb auth +;krb_canon_host = no + +;The realm of server principal. Using client's realm if not set +;krb_server_realm = EXAMPLE.COM + + +;configuration for SSL authentication + +;client certificate +;cert = ~/.koji/client.crt + +;certificate of the CA that issued the HTTP server certificate +;serverca = ~/.koji/serverca.crt + +;plugin paths, separated by ':' as the same as the shell's PATH +;koji_cli_plugins module and ~/.koji/plugins are always loaded in advance, +;and then be overridden by this option +;plugin_paths = ~/.koji/plugins + +;[not_implemented_yet] +;enabled plugins for CLI, runroot and save_failed_tree are available +;plugins = +; runroot plugin is enabled by default in fedora +plugins = runroot + +;timeout of XMLRPC requests by seconds, default: 60 * 60 * 12 = 43200 +;timeout = 43200 + +;timeout of GSSAPI/SSL authentication by seconds, default: 60 +;auth_timeout = 60 + +; use the fast upload feature of koji by default +use_fast_upload = yes diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..88fa1cd --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,101 @@ +name: Tests + +# NOTE(mhayden): Restricting branches prevents jobs from being doubled since +# a push to a pull request triggers two events. +on: + pull_request: + branches: + - "*" + push: + branches: + - master + +jobs: + lint: + name: "🛃 Checks" + runs-on: ubuntu-latest + steps: + + - name: Set up Go 1.12 + uses: actions/setup-go@v1 + with: + go-version: 1.12 + id: go + + - name: Check out code into the Go module directory + uses: actions/checkout@v2 + + - name: Check that source has been prepared + run: | + ./tools/prepare-source.sh + if [ -n "$(git status --porcelain)" ]; then + echo + echo "Please include these changes in your branch: " + git status -vv + exit "1" + else + exit "0" + fi + + - name: Install golangci-lint + run: curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh| sh -s -- -b $(go env GOPATH)/bin v1.23.7 + + - name: Run golangci-lint + run: $(go env GOPATH)/bin/golangci-lint run + + - name: Run unit tests + run: go test -v -race -covermode=atomic -coverprofile=coverage.txt -coverpkg=./... ./... + + - name: Send coverage to codecov.io + run: bash <(curl -s https://codecov.io/bash) + + koji: + name: "麹 Koji test" + runs-on: ubuntu-latest + services: + postgres: + image: docker.io/library/postgres:12-alpine + env: + POSTGRES_USER: koji + POSTGRES_PASSWORD: kojipass + POSTGRES_DB: koji + koji: + image: quay.io/osbuild/ghci-koji:v1 + env: + POSTGRES_USER: koji + POSTGRES_PASSWORD: kojipass + POSTGRES_DB: koji + POSTGRES_HOST: postgres + ports: + - 8080:80 + steps: + - name: Set up Go 1.12 + uses: actions/setup-go@v1 + with: + go-version: 1.12 + id: go + + # We need python for koji client. + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: 3.8 + + - name: Check out code into the Go module directory + uses: actions/checkout@v2 + + # Koji from pip is missing its config file. + # To fix this, the default Fedora 32 config is included in the repo + # and installed here. See the last line of the script. + - name: Install koji client + run: | + sudo apt-get install -y libkrb5-dev + python -m pip install --upgrade pip + pip install koji + sudo cp .github/koji.conf /etc/koji.conf + + - name: Run unit tests + run: go test -v -race -covermode atomic -coverprofile=coverage.txt -tags koji_test ./internal/upload/koji + + - name: Send coverage to codecov.io + run: bash <(curl -s https://codecov.io/bash) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1122ff0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +__pycache__ + +/osbuild-composer +/osbuild-worker +/osbuild-weldr-tests +/osbuild-pipeline +/osbuild-upload-azure +/osbuild-upload-aws +/osbuild-dnf-json-tests +/osbuild-tests +/osbuild-weldr-tests + +/rpmbuild diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..b3e7f70 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "osbuild"] + path = osbuild + url = https://github.com/osbuild/osbuild.git diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 0000000..34f2dc8 --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,16 @@ +linters-settings: + govet: + disable: + - shadow # default value recommended by golangci + - composites + +run: + build-tags: + - integration + +issues: + # Maximum issues count per one linter. Set to 0 to disable. Default is 50. + max-issues-per-linter: 0 + + # Maximum count of issues with the same text. Set to 0 to disable. Default is 3. + max-same-issues: 0 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..169cae3 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,86 @@ +# Contributing to osbuild-composer + +First of all, thank you for taking the time to contribute to osbuild-composer. +In this document you will find information that can help you with your +contribution. + +### Running from sources + +We recommend using the latest stable Fedora for development but latest minor +release of RHEL/CentOS 8 should work just fine as well. To run osbuild-composer +from sources, follow these steps: + +1. Clone the repository and create a local checkout: + +``` +$ git clone https://github.com/osbuild/osbuild-composer.git +$ cd osbuild-composer +``` + +2. To install the build-requirements for Fedora and friends, use: + +``` +$ sudo dnf group install 'RPM Development Tools' # Install rpmbuild +$ sudo dnf builddep osbuild-composer.spec # Install build-time dependencies +$ sudo dnf -y install cockpit-composer # Optional: Install cockpit integration +$ sudo systemctl start cockpit.socket # Optional: Start cockpit +``` + +3. Finally, use the following to compile the project from the working +directory, install it, and then run it: + +``` +$ rm -rf rpmbuild/ +$ make rpm +$ sudo dnf -y install rpmbuild/RPMS/x86_64/* +$ sudo systemctl start osbuild-composer.socket +``` + +You can now open https://localhost:9090 in your browser to open cockpit console +and check the "Image Builder" section. + +Alternatively you can use `composer-cli` to interact with the Weldr API. We +don't have any client for the RCM API, so the only option there is a +plain `curl`. + +When developing the code, use `go` executable to build, run, and test you +code [1]: + +``` +$ go test ./... +$ go build ./... +$ go run ./cmd/osbuild-pipeline/ +``` + +### Testing + +See [test/README.md](test/README.md) for more information about testing. + +### Planning the work + +In general we encourage you to first fill in an issue and discuss the feature +you would like to work on before you start. This can prevent the scenario where +you work on something we don't want to include in our code. + +That being said, you are of course welcome to implement an example of what you +would like to achieve. + +### Creating a PR + +The commits in the PR should have these properties: + +* Preferably minimal and well documented + * Where minimal means: don't do unrelated changes even if the code is + obviously wrong + * Well documented: both code and commit message + * The commit message should start with the module you work on, + like: `weldr: `, or `distro:` +* The code should compile and the composer should start, so that we can run + `git bisect` on it +* All code should be covered by unit-tests + +### Notes: + +[1] If you are running macOS, you can still compile osbuild-composer. If it + doesn't work out of the box, use `-tags macos` together with any `go` + command, for example: `go test -tags macos ./...` diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..f777ea9 --- /dev/null +++ b/Makefile @@ -0,0 +1,277 @@ +# +# Maintenance Helpers +# +# This makefile contains targets used for development, as well as helpers to +# aid automatization of maintenance. Unless a target is documented in +# `make help`, it is not supported and is only meant to be used by developers +# to aid their daily development work. +# +# All supported targets honor the `SRCDIR` variable to find the source-tree. +# For most unsupported targets, you are expected to have the source-tree as +# your working directory. To specify a different source-tree, simply override +# the variable via `SRCDIR=` on the commandline. By default, the working +# directory is used for build output, but `BUILDDIR=` allows overriding +# it. +# + +BUILDDIR ?= . +SRCDIR ?= . + +RST2MAN ?= rst2man + +# +# Automatic Variables +# +# This section contains a bunch of automatic variables used all over the place. +# They mostly try to fetch information from the repository sources to avoid +# hard-coding them in this makefile. +# +# Most of the variables here are pre-fetched so they will only ever be +# evaluated once. This, however, means they are always executed regardless of +# which target is run. +# +# VERSION: +# This evaluates the `Version` field of the specfile. Therefore, it will +# be set to the latest version number of this repository without any +# prefix (just a plain number). +# +# COMMIT: +# This evaluates to the latest git commit sha. This will not work if +# the source is not a git checkout. Hence, this variable is not +# pre-fetched but evaluated at time of use. +# + +VERSION := $(shell (cd "$(SRCDIR)" && grep "^Version:" osbuild-composer.spec | sed 's/[^[:digit:]]*\([[:digit:]]\+\).*/\1/')) +COMMIT = $(shell (cd "$(SRCDIR)" && git rev-parse HEAD)) + +# +# Generic Targets +# +# The following is a set of generic targets used across the makefile. The +# following targets are defined: +# +# help +# This target prints all supported targets. It is meant as +# documentation of targets we support and might use outside of this +# repository. +# This is also the default target. +# +# $(BUILDDIR)/ +# $(BUILDDIR)/%/ +# This target simply creates the specified directory. It is limited to +# the build-dir as a safety measure. Note that this requires you to use +# a trailing slash after the directory to not mix it up with regular +# files. Lastly, you mostly want this as order-only dependency, since +# timestamps on directories do not affect their content. +# + +.PHONY: help +help: + @echo "make [TARGETS...]" + @echo + @echo "This is the maintenance makefile of osbuild. The following" + @echo "targets are available:" + @echo + @echo " help: Print this usage information." + @echo " man: Generate all man-pages" + +$(BUILDDIR)/: + mkdir -p "$@" + +$(BUILDDIR)/%/: + mkdir -p "$@" + +# +# Documentation +# +# The following targets build the included documentation. This includes the +# packaged man-pages, but also all other kinds of documentation that needs to +# be generated. Note that these targets are relied upon by automatic +# deployments to our website, as well as package manager scripts. +# + +MANPAGES_RST = $(wildcard $(SRCDIR)/docs/*.[0123456789].rst) +MANPAGES_TROFF = $(patsubst $(SRCDIR)/%.rst,$(BUILDDIR)/%,$(MANPAGES_RST)) + +$(MANPAGES_TROFF): $(BUILDDIR)/docs/%: $(SRCDIR)/docs/%.rst | $(BUILDDIR)/docs/ + $(RST2MAN) "$<" "$@" + +.PHONY: man +man: $(MANPAGES_TROFF) + +# +# Maintenance Targets +# +# The following targets are meant for development and repository maintenance. +# They are not supported nor is their use recommended in scripts. +# + +.PHONY: build +build: + go build -o osbuild-composer ./cmd/osbuild-composer/ + go build -o osbuild-worker ./cmd/osbuild-worker/ + go build -o osbuild-pipeline ./cmd/osbuild-pipeline/ + go build -o osbuild-upload-azure ./cmd/osbuild-upload-azure/ + go build -o osbuild-upload-aws ./cmd/osbuild-upload-aws/ + go test -c -tags=integration -o osbuild-tests ./cmd/osbuild-tests/main_test.go + go test -c -tags=integration -o osbuild-weldr-tests ./internal/client/ + go test -c -tags=integration -o osbuild-dnf-json-tests ./cmd/osbuild-dnf-json-tests/main_test.go + go test -c -tags=integration,travis -o osbuild-image-tests ./cmd/osbuild-image-tests/ + +.PHONY: install +install: + - mkdir -p /usr/libexec/osbuild-composer + cp osbuild-composer /usr/libexec/osbuild-composer/ + cp osbuild-worker /usr/libexec/osbuild-composer/ + cp dnf-json /usr/libexec/osbuild-composer/ + - mkdir -p /usr/share/osbuild-composer/repositories + cp repositories/* /usr/share/osbuild-composer/repositories + - mkdir -p /etc/sysusers.d/ + cp distribution/osbuild-composer.conf /etc/sysusers.d/ + systemd-sysusers osbuild-composer.conf + - mkdir -p /etc/systemd/system/ + cp distribution/*.service /etc/systemd/system/ + cp distribution/*.socket /etc/systemd/system/ + systemctl daemon-reload + +.PHONY: ca +ca: +ifneq (/etc/osbuild-composer/ca-key.pem/etc/osbuild-composer/ca-crt.pem,$(wildcard /etc/osbuild-composer/ca-key.pem)$(wildcard /etc/osbuild-composer/ca-crt.pem)) + @echo CA key or certificate file is missing, generating a new pair... + - mkdir -p /etc/osbuild-composer + openssl req -new -nodes -x509 -days 365 -keyout /etc/osbuild-composer/ca-key.pem -out /etc/osbuild-composer/ca-crt.pem -subj "/CN=osbuild.org" +else + @echo CA key and certificate files already exist, skipping... +endif + +.PHONY: composer-key-pair +composer-key-pair: ca + openssl genrsa -out /etc/osbuild-composer/composer-key.pem 2048 + openssl req -new -sha256 -key /etc/osbuild-composer/composer-key.pem -out /etc/osbuild-composer/composer-csr.pem -subj "/CN=localhost" # TODO: we need to generate certificates with another hostname + openssl x509 -req -in /etc/osbuild-composer/composer-csr.pem -CA /etc/osbuild-composer/ca-crt.pem -CAkey /etc/osbuild-composer/ca-key.pem -CAcreateserial -out /etc/osbuild-composer/composer-crt.pem + chown _osbuild-composer:_osbuild-composer /etc/osbuild-composer/composer-key.pem /etc/osbuild-composer/composer-csr.pem /etc/osbuild-composer/composer-crt.pem + +.PHONY: worker-key-pair +worker-key-pair: ca + openssl genrsa -out /etc/osbuild-composer/worker-key.pem 2048 + openssl req -new -sha256 -key /etc/osbuild-composer/worker-key.pem -out /etc/osbuild-composer/worker-csr.pem -subj "/CN=localhost" + openssl x509 -req -in /etc/osbuild-composer/worker-csr.pem -CA /etc/osbuild-composer/ca-crt.pem -CAkey /etc/osbuild-composer/ca-key.pem -CAcreateserial -out /etc/osbuild-composer/worker-crt.pem + + +# +# Building packages +# +# The following rules build osbuild-composer packages from the current HEAD +# commit, based on the spec file in this directory. The resulting packages +# have the commit hash in their version, so that they don't get overwritten +# when calling `make rpm` again after switching to another branch. +# +# All resulting files (spec files, source rpms, rpms) are written into +# ./rpmbuild, using rpmbuild's usual directory structure. +# + +OLD_RPM_SPECFILE=rpmbuild/SPECS/golang-github-osbuild-composer-$(COMMIT).spec +RPM_SPECFILE=rpmbuild/SPECS/osbuild-composer-$(COMMIT).spec +RPM_TARBALL=rpmbuild/SOURCES/osbuild-composer-$(COMMIT).tar.gz + +$(OLD_RPM_SPECFILE): + mkdir -p $(CURDIR)/rpmbuild/SPECS + (echo "%global commit $(COMMIT)"; git show HEAD:golang-github-osbuild-composer.spec) > $(OLD_RPM_SPECFILE) + +$(RPM_SPECFILE): + mkdir -p $(CURDIR)/rpmbuild/SPECS + (echo "%global commit $(COMMIT)"; git show HEAD:osbuild-composer.spec) > $(RPM_SPECFILE) + +$(RPM_TARBALL): + mkdir -p $(CURDIR)/rpmbuild/SOURCES + git archive --prefix=osbuild-composer-$(COMMIT)/ --format=tar.gz HEAD > $(RPM_TARBALL) + +.PHONY: srpm +srpm: $(RPM_SPECFILE) $(RPM_TARBALL) + rpmbuild -bs \ + --define "_topdir $(CURDIR)/rpmbuild" \ + --with tests \ + $(RPM_SPECFILE) + +.PHONY: rpm +rpm: $(RPM_SPECFILE) $(RPM_TARBALL) + rpmbuild -bb \ + --define "_topdir $(CURDIR)/rpmbuild" \ + --with tests \ + $(RPM_SPECFILE) + +.PHONY: old-srpm +old-srpm: $(OLD_RPM_SPECFILE) $(RPM_TARBALL) + rpmbuild -bs \ + --define "_topdir $(CURDIR)/rpmbuild" \ + $(OLD_RPM_SPECFILE) + +.PHONY: old-rpm +old-rpm: $(OLD_RPM_SPECFILE) $(RPM_TARBALL) + rpmbuild -bb \ + --define "_topdir $(CURDIR)/rpmbuild" \ + $(OLD_RPM_SPECFILE) + +# +# Releasing +# + +NEXT_VERSION := $(shell expr "$(VERSION)" + 1) + +.PHONY: release +release: + @echo + @echo "Checklist for release of osbuild-composer-$(NEXT_VERSION):" + @echo + @echo " * Create news entry in NEWS.md with a short description of" + @echo " any changes since the last release, which are relevant to" + @echo " users, packagers, distributors, or dependent projects." + @echo + @echo " Use the following template, break lines at 80ch:" + @echo + @echo "--------------------------------------------------------------------------------" + @echo "## CHANGES WITH $(NEXT_VERSION):" + @echo + @echo " * ..." + @echo + @echo " * ..." + @echo + @echo -n "Contributions from: " +# We omit the contributor list if `git log` fails. If you hit this, +# consider fetching missing tags via `git fetch --tags`, or just copy +# this command and remove the stderr-redirect. + @echo `( git log --format='%an, ' v$(VERSION)..HEAD 2>/dev/null | sort -u | tr -d '\n' | sed 's/, $$//' ) || echo` + @echo + @echo "— Location, YYYY-MM-DD" + @echo "--------------------------------------------------------------------------------" + @echo + @echo " To get a list of changes since the last release, you may use:" + @echo + @echo " git log v$(VERSION)..HEAD" + @echo + @echo " * Bump the project version. The canonical location so far is" + @echo " 'osbuild-composer.spec' and" + @echo " 'golang-github-osbuild-composer.spec'." + @echo + @echo " * Make sure the spec-file is updated for the new release and" + @echo " correctly supports all new features. This should already be" + @echo " done by previous commits that introduced the changes, but" + @echo " a sanity check does not hurt." + @echo + @echo " * Commit the version bump, specfile changes and NEWS.md in any" + @echo " order you want." + @echo + @echo " * Tag the release via:" + @echo + @echo " git tag -s -m 'osbuild-composer $(NEXT_VERSION)' v$(NEXT_VERSION) HEAD" + @echo + @echo " * Push master as well as the tag:" + @echo + @echo " git push origin master" + @echo " git push origin v$(NEXT_VERSION)" + @echo + @echo " * Create a release on github. Use 'NEWS.md' verbatim from the" + @echo " top until the end of the section for this release as release" + @echo " notes. Use 'v$(NEXT_VERSION)' as release name and as tag for" + @echo " the release." + @echo diff --git a/NEWS.md b/NEWS.md new file mode 100644 index 0000000..b8907b0 --- /dev/null +++ b/NEWS.md @@ -0,0 +1,466 @@ +# OSBuild Composer - Operating System Image Composition Services + +## CHANGES WITH 20: + + * VMDK images are now stream optimized to be compatible with vCenter by + defult. + + * RPMs are pulled from the correct repositories on RHEL, depending on whether + the host is running on Beta or GA. + + * Cloud credentials can now no longer be returned by the API. + +Contributions from: Alexander Todorov, Brian C. Lane, Lars Karlitski, + Major Hayden, Tom Gundersen + +— London, 2020-08-23 + +## CHANGES WITH 19: + + * Bug fixes to the weldr API. + + * Default image size was increased to be able to build empty blueprints by + default. + + * OpenStack images are now tested on the target footprint in CI. + + * Other test improvements. + +Contributions from: Alexander Todorov, Brian C. Lane, Jenn Giardino, + Major Hayden, Martin Sehnoutka + +— London, 2020-08-10 + +## CHANGES WITH 18: + + * Qcow and openstack images for Fedora have now cloudinit service enabled + by default. This change leads to a higher consistency with the official + images. + + * Fedora 32 image builds were failing if an installed package shipped + a custom SELinux policy. This is now fixed. + + * The DNF integration now uses the fastestmirror plugin. This should lead + to faster and more reliable depsolves. + + * Tar archives returned from Weldr routes could have contained files with + a timestamp newer than the current time. This led to warnings when + untarring these archives. The timestamps are now fixed. + + * The RCM subpackage was removed. It was never properly finished and will + be superseded by a Koji integration at some point. + +Contributions from: Chloe Kaubisch, Christian Kellner, David Rheinsberg, + Lars Karlitski, Major Hayden, Martin Sehnoutka, + Ondřej Budai, Tom Gundersen + +— Liberec, 2020-07-22 + +## CHANGES WITH 17: + + * AWS images are now built in the raw format. Previously used vhdx was + space-efficient but actually caused about 30% of uploads to fail. + + * The spec file had a wrong version of lorax-composer to obsolete, causing + upgrades to fail. This is now fixed. + +Contributions from: Major Hayden, Tom Gundersen + +— Liberec, 2020-07-08 + +## CHANGES WITH 16: + + * osbuild-composer now obsoletes lorax-composer on RHEL. + + * An upload failure (e.g. due to invalid credentials) now causes the compose + to appear as failed. + + * RHEL 8 repositories are switched to the beta ones to allow composer to be + tested on 8.3 Beta. This will be reverted when GA comes. + + * OSTree images no longer contains /etc/fstab. The filesystem layout is + determined by the installer and thus it doesn't make any sense to include + it. + + * If both group and user customizations were used, the user would be created + before the group, causing a build to fail. This is now fixed. + + * Composer now correctly passes UID and GID to org.osbuild.{users,groups} + stages as ints instead of strings. + + * The subpackages (worker, tests and rcm) now require a matching version of + osbuild-composer to be installed. Previously, they would be happy with + just an arbitrary one. + + * Support for testing OpenStack images in actual OpenStack is now available. + Note that upload to OpenStack is still not available for the end users + (it's on the roadmap though). + + * Worker now logs not only job failures but also job successes. + + * All DNF errors were mistakenly tagged as RepoError, this is now fixed. + + * As always, a lot of test and CI improvements are included in this release. + +Contributions from: Alexander Todorov, Christian Kellner, Major Hayden, Martin + Sehnoutka, Ondřej Budai, Tom Gundersen + +— Liberec, 2020-06-29 + +## CHANGES WITH 15: + + * Support for building RHEL for Edge is now available. + + * Composer has now support for building QCOW2 and tar images for ppc64le and + s390x architectures. + + * Tar images for RHEL have returned. The Image Builder team found out that + they are used as a way to install RHEL for Satellite. + + * Blueprints containing packages with a wildcard version no longer causes + the built image to have both x86_64 and i686 versions of one package + installed. + + * GPG check is now disabled by default. If you have a custom + repository in /etc/osbuild-composer/repositories, just set gpg_check + to true to enable the check. Note that all the pre-defined repositories + have GPG check enabled. + + * Composer now supports a cancellation of jobs. This can be done by calling + /compose/cancel route of Weldr API. + + * osbuild-composer previously crashed when osbuild didn't return the right + machine-readable output (e.g. because of a disk being out of space). This + is now fixed. + + * Because of the GPG check change and RHEL for Edge support, composer + now requires osbuild 17 or higher. + + * osbuild-composer previously required the python package to be installed + on RHEL. Now, it uses the always-installed platform-python. + + * The buildroot for RHEL 8 didn't have selinux labels before. This is now + fixed. + + * When Composer crashed, it left temporary directories in /var/cache. The + temporary directories are now moved to /var/tmp, which is managed by + systemd with PrivateTmp set to true, so they're now correctly removed + after a crash. + + * Several weldr API routes were aligned to work in the same way as with + Lorax. /blueprints/freeze now correctly supports option to output TOML. + Projects and modules routes return all fields as Lorax returns. + + * AWS upload now logs the current state to the system journal. Emojis are + of course included. 🎉 + + * As always, amazing improvements in the CI infrastructure happened. Also, + the test coverage went up. Thanks all for doing this! + +Contributions from: Alexander Todorov, Brian C. Lane, Christian Kellner, + Jakub Rusz, Lars Karlitski, Major Hayden, Martin + Sehnoutka, Ondřej Budai, Peter Robinson, Tom + Gundersen + +— Liberec, 2020-06-12 + +## CHANGES WITH 14: + + * AWS uploads doesn't anymore report to AWS that composer uploads + the image in vhdx format. This surprisingly makes the upload process + more stable. + + * Uploads were always in WAITING state. This is now fixed. + + * The /projects/source/* routes now correctly supports all the features + of Weldr API v1. + + * AWS upload now logs the progress to journal. Even better logging is + hopefully coming soon. + + * AWS upload's status is now correctly set to FAILED when ImportSnapshot + fails. Before, this hanged the upload indefinitely. + + * Store unmarshalling is now safer in some cases. For example, stored + manifests are now longer checked when loaded from disk. Therefore, + changing of manifest schema doesn't lead to crashes when old manifests + are present in the store. + + * When store loading failed in non-verbose mode of osbuild-composer, it + crashed the process because of nil logger. This is now fixed. + + * The upstream spec file for building osbuild-composer package now + excludes the i686 architecture. Note that composer never supported + this arch. + + * The upstream spec file now correctly specifies the composer's dependency + to osbuild-ostree. This was forgotten in the previous release which + introduced Fedora IoT support. + + * The previous version didn't have repositories defined for s390x and + ppc64le architectures. This is now fixed. Note that this only fixes + some codepaths, osbuild-composer still cannot build any images on + these architectures. + +Contributions from: Brian C. Lane, Lars Karlitski, Major Hayden, Martin + Sehnoutka, Ondřej Budai, Stef Walter, Tom Gundersen + +— Liberec, 2020-06-03 + +## CHANGES WITH 13: + + * Fedora IoT is now supported for Fedora 32 in the form of producing the + commit tarball. Feel free to test it and report any issues you find. + + * Support for RHEL was completely revamped. Now, osbuild-composer supports + building images only for the latest RHEL 8. The separate minor versions + are no longer available. Additionally, it now uses the Red Hat CDN which + requires the host system to be properly subscribed. If you need to use + different package repositories to build RHEL from, use a repository + override in /etc/osbuild-composer/repositories. + + * Several image types were removed: ext4-filesystem, partitioned-disk, + and tar. The use-cases for these image types were not clearly defined and + without a clear definition, it was very hard to define test cases for + them. + + * Support for Fedora 30 was dropped as it is now EOL. So long and thanks + for all the fish! + + * The timeout for AWS upload is removed. It's very hard to predict how long + will the AWS upload take. With the timeout in place, it caused the test + suite to produce a lot of false positives. + + * Build logs were broken in the previous release, this release fixes it. + This time, they were properly saved but weldr API read them from a wrong + location. This is now fixed and covered with basic tests. + + * Weldr API has now support for /compose/metadata and /compose/results + routes. This allows users to easily access a manifest used to build + an image. + + * Preliminary support for ppc64le and s390x is added to RHEL distribution. + No images cannot be built yet but at least it won't crash on startup. + + * The weldr API socket has now correct permissions. As the result, it can + be read and written only by root and the weldr group. This is the same + behaviour as Lorax has. + + * By mistake, workers incorrectly used the default store for every build. + However, this can currently cause the store to grow indefinitely, so + this release switched the osbuild store to use a temporary directory again. + + * /status route in weldr API now correctly returns msgs field. + + * Handling of json (un)marshalling in store is revamped. It should + make it more stable and simplify the maintenance of the store backwards + compatibility. + + * Initial support for koji is now added. It's currently not hooked up + to composer and only supports password authentication. More coming soon. + + * Again, the automated testing was greatly improved during this cycle, + big thanks to everyone involved! + +Contributions from: Alexander Todorov, Brian C. Lane, David Rheinsberg, Jacob + Kozol, Lars Karlitski, Major Hayden, Ondřej Budai, Tom + Gundersen + + +— Liberec, 2020-05-28 + +## CHANGES WITH 12: + + * In previous versions support for running remote workers was + broken. This is now fixed and running remote workers is once + again possible. See #568 for more information. + + * The job queue and the store are now two separate Go packages. + One of the benefits is that it is now possible to build images + without using the store which is too complicated for some usecases. + + * A blueprint name is now checked against the regex + `^[a-zA-Z0-9._-]+$`. This is the same limitation as in + lorax-composer. + + * All osbuild calls now use the new --output-directory argument. + This change is a must because the old way of retrieving images from + the osbuild store will soon be deprecated. + + * Some routes from the weldr API are now implemented in a more + efficient way. + + * As always, the team worked hard on improving the tests and the CI. + +Contributions from: Brian C. Lane, David Rheinsberg, Jiri Kortus, Lars + Karlitski, Major Hayden, Ondřej Budai + +— Liberec, 2020-05-13 + +## CHANGES WITH 11: + + * The support for uploading VHD images to Azure is now available. + + * AMI images are now produced in the vhdx format. This fixes + the issue that those images couldn't be previously booted in EC2. + + * In version 10 the logs weren't saved when osbuild failed. This + is now fixed. + + * The warnings when upgrading/removing the RPM package are now fixed. + Note that updating to version 11 still produces them because + the upgrade process runs also the scriptlets from version 10. + + * The size calculation for Fedora 31 vhd images is fixed. + + * The size field was removed from the tar assembler struct. + The field has actually never been supported in osbuild + and it doesn't make any sense. + + * The minimal required version of osbuild is bumped to 12. + + * This release also got big upgrades to the testing infrastructure, + more tests are run on a CI and they now run faster. Also, the unit + test coverage is improved. + +Contributions from: Alexander Todorov, Jacob Kozol, Jakub Rusz, + Jiri Kortus, Lars Karlitski, Major Hayden, + Ondřej Budai, Tom Gundersen + +— Liberec, 2020-04-29 + +## CHANGES WITH 10: + + * The correct `metadata_expire` value is now passed to dnf. In the + past, this led to a lot of failed builds, because dnf has the + default expire time set to 48 hours, whereas the Fedora updates + repos have the expire time of 6 hours. + + * A decision was made that the minimal Go version required for + building the project is 1.12. This is now enforced by the CI. + + * The intermediate s3 object is now deleted after the upload to AWS + is finished. It has no value for users. + + * The upload to AWS has now a bigger timeout. The current coronavirus + situation is affecting the AWS responsiveness in a negative way. + + * The weldr API has better test coverage. In the process, several + bugs in sources and composes were fixed. + + * Worker and jobqueue packages are receiving a big refactoring. + This is the prerequisite for having multiple job queues for building + images for different distributions and architectures. + + * The image tests now boot the AWS images in the actual EC2. + +Contributions from: Alexander Todorov, Brian C. Lane, + Jacob Kozol, Jakub Rusz, Lars Karlitski, + Major Hayden, Martin Sehnoutka, + Ondřej Budai, Tom Gundersen + +— Liberec, 2020-04-15 + +## CHANGES WITH 9: + + * Fedora is now build with updates and modules repositories + enabled, therefore up-to-date images are now produced. + + * A new man-page `osbuild-composer(7)` with high-level + description of the project is now available. It can be built + by the new man target in the Makfile. + + * All Fedora images have now a generic initramfs. This should + make the images more reproducible and less likely failing to boot + if the image build was done in a less usual environment. + + * Metalink is now used to access the Fedora repositories. This change + should hopefully lead to more stable builds. + + * Composer is now released to Fedora 32 and 33 in a new + osbuild-composer package. The old golang-github-osbuild-composer + package will be automatically upgraded to the new one. + + * The internal osbuild-pipeline command now has a more user-friendly + interface. + + * The RCM API (in development, experimental) is reworked to allow + any distribution-architecture-image type combination. + + * The work on a high-level description of image types began. + See image-types directory. + + * The osbuild-worker arguments are reworked, they are now much more + flexible. + + * The image-info tool used in the integration tests can be now run + on Fedora 32. + + * The unit test coverage is now much bigger, thanks to all + contributors! + + * Internal distribution representation is significantly reworked, + this simplifies the process of adding the support for all currently + missing architectures. + + * Integration tests were also improved, the image tests are fully + switched to the new Go implementation and an automatic way + of generating test cases is added. The weldr API coverage is also + much better. Several bugs in it were fixed in the process. + + * Codecov.io is now used to monitor the test coverage of the code. + + * As always, minor fixes and improvements all over the place. + +Contributions from: Alexander Todorov, Brian C. Lane, David + Rheinsberg, Jacob Kozol, Jakub Rusz, Jiri + Kortus, Lars Karlitski, Martin Sehnoutka, + Ondřej Budai, Tom Gundersen + +— Liberec, 2020-04-01 + +## CHANGES WITH 8: + + * All generated pipelines now use the `org.osbuild.rpm` stage of + osbuild, rather than `org.osbuild.dnf`. This improves on splitting + resource acquisition from image building and should make image + composition more reliable and faster. + + * The `STATE_DIRECTORY` environment variable now allows changing the + state directory path of `osbuild-composer`. This is to support older + systemd versions that do not pass in `StateDirectory=` to the service + executable. + + * Minor fixes and improvements all over the place. + +Contributions from: Alexander Todorov, Brian C. Lane, Jacob Kozol, Jakub + Rusz, Lars Karlitski, Major Hayden, Martin + Sehnoutka, Ondřej Budai, Tom Gundersen + +— Berlin, 2020-03-18 + +## CHANGES WITH 7: + + * Support for `RHEL 8.1` as image type is now available. + + * Semantic versioning of blueprints in the lorax API is now enforced. + This was always the case for the original lorax API, and *Composer* + now follows this as well. + + * Lots of internal improvements, including many automatic tests, + improved error handling, better cache directory management, as well + as preparations to move over from `org.osbuild.dnf` to + `org.osbuild.rpm` in all build pipelines. + +Contributions from: Alexander Todorov, Brian C. Lane, Jacob Kozol, Lars + Karlitski, Major Hayden, Ondřej Budai, Tom Gundersen + +— Berlin, 2020-03-05 + +## CHANGES BEFORE 7: + + * Initial implementation of 'osbuild-composer'. + +Contributions from: Alexander Todorov, Brian C. Lane, Christian Kellner, + Jacob Kozol, Jakub Rusz, Lars Karlitski, Martin + Sehnoutka, Ondřej Budai, Tom Gundersen diff --git a/README.md b/README.md new file mode 100644 index 0000000..624b0db --- /dev/null +++ b/README.md @@ -0,0 +1,97 @@ +OSBuild Composer +================ + +Operating System Image Composition Services + +The composer project is a set of HTTP services for composing operating system +images. It builds on the pipeline execution engine of *osbuild* and defines +its own class of images that it supports building. + +Multiple APIs are available to access a composer service. This includes +support for the [lorax-composer](https://github.com/weldr/lorax) API, and as +such can serve as drop-in replacement for lorax-composer. + +You can control a composer instance either directly via the provided APIs, or +through higher-level user-interfaces from external projects. This, for +instance, includes a +[Cockpit Module](https://github.com/osbuild/cockpit-composer) or using the +[composer-cli](https://weldr.io/lorax/composer-cli.html) command-line tool. + +### Project + + * **Website**: + * **Bug Tracker**: + +### About + +Composer is a middleman between the workhorses from *osbuild* and the +user-interfaces like *cockpit-composer*, *composer-cli*, or others. It defines +a set of high-level image compositions that it supports building. Builds of +these compositions can be requested via the different APIs of *Composer*, which +will then translate the requests into pipeline-descriptions for *osbuild*. The +pipeline output is then either provided back to the user, or uploaded to a user +specified target. + +The following image visualizes the overall architecture of the OSBuild +infrastructure and the place that *Composer* takes: + +![overview](docs/osbuild-composer.svg) + +Consult the `osbuild-composer(7)` man-page for an introduction into composer, +information on running your own composer instance, as well as details on the +provided infrastructure and services. + +### Requirements + +The requirements for this project are: + + * `osbuild >= 11` + * `systemd >= 244` + +At build-time, the following software is required: + + * `go >= 1.12` + * `python-docutils >= 0.13` + +### Build + +The standard go package system is used. Consult upstream documentation for +detailed help. In most situations the following commands are sufficient to +build and install from source: + +```sh +mkdir build +go build -o build ./... +``` + +The man-pages require `python-docutils` and can be built via: + +```sh +make man +``` + +### Repository: + + - **web**: + - **https**: `https://github.com/osbuild/osbuild-composer.git` + - **ssh**: `git@github.com:osbuild/osbuild-composer.git` + +### Pull request gating + +Each pull request against `osbuild-composer` starts a series of automated +tests. Tests run via GitHub Actions, Travis CI, and Jenkins. Each push to +the pull request will launch theses tests automatically. + +Jenkins only tests pull requests from members of the `osbuild` organization in +GitHub. A member of the `osbuild` organization must say `ok to test` in a pull +request comment to approve testing. Anyone can ask for testing to run by +saying the bot's favorite word, `schutzbot`, in a pull request comment. +Testing will begin shortly after the comment is posted. + +Test results in Jenkins are available by clicking the *Details* link on the +right side of the Schutzbot check in the pull request page. + +### License: + + - **Apache-2.0** + - See LICENSE file for details. diff --git a/cmd/osbuild-composer/main.go b/cmd/osbuild-composer/main.go new file mode 100644 index 0000000..917c4cd --- /dev/null +++ b/cmd/osbuild-composer/main.go @@ -0,0 +1,176 @@ +package main + +import ( + "crypto/tls" + "crypto/x509" + "flag" + "io/ioutil" + "log" + "os" + "path" + + "github.com/osbuild/osbuild-composer/internal/distro/fedora31" + "github.com/osbuild/osbuild-composer/internal/distro/fedora32" + "github.com/osbuild/osbuild-composer/internal/distro/rhel8" + "github.com/osbuild/osbuild-composer/internal/jobqueue/fsjobqueue" + + "github.com/osbuild/osbuild-composer/internal/common" + "github.com/osbuild/osbuild-composer/internal/distro" + "github.com/osbuild/osbuild-composer/internal/rpmmd" + "github.com/osbuild/osbuild-composer/internal/store" + "github.com/osbuild/osbuild-composer/internal/weldr" + "github.com/osbuild/osbuild-composer/internal/worker" + + "github.com/coreos/go-systemd/activation" +) + +type connectionConfig struct { + CACertFile string + ServerKeyFile string + ServerCertFile string +} + +func createTLSConfig(c *connectionConfig) (*tls.Config, error) { + caCertPEM, err := ioutil.ReadFile(c.CACertFile) + if err != nil { + return nil, err + } + + roots := x509.NewCertPool() + ok := roots.AppendCertsFromPEM(caCertPEM) + if !ok { + panic("failed to parse root certificate") + } + + cert, err := tls.LoadX509KeyPair(c.ServerCertFile, c.ServerKeyFile) + if err != nil { + return nil, err + } + return &tls.Config{ + Certificates: []tls.Certificate{cert}, + ClientAuth: tls.RequireAndVerifyClientCert, + ClientCAs: roots, + }, nil +} + +func main() { + var verbose bool + flag.BoolVar(&verbose, "v", false, "Print access log") + flag.Parse() + + stateDir, ok := os.LookupEnv("STATE_DIRECTORY") + if !ok { + log.Fatal("STATE_DIRECTORY is not set. Is the service file missing StateDirectory=?") + } + + listeners, err := activation.ListenersWithNames() + if err != nil { + log.Fatalf("Could not get listening sockets: " + err.Error()) + } + + if _, exists := listeners["osbuild-composer.socket"]; !exists { + log.Fatalf("osbuild-composer.socket doesn't exist") + } + + composerListeners := listeners["osbuild-composer.socket"] + + if len(composerListeners) != 2 && len(composerListeners) != 3 { + log.Fatalf("Unexpected number of listening sockets (%d), expected 2 or 3", len(composerListeners)) + } + + weldrListener := composerListeners[0] + jobListener := composerListeners[1] + + cacheDirectory, ok := os.LookupEnv("CACHE_DIRECTORY") + if !ok { + log.Fatal("CACHE_DIRECTORY is not set. Is the service file missing CacheDirectory=?") + } + + rpm := rpmmd.NewRPMMD(path.Join(cacheDirectory, "rpmmd"), "/usr/libexec/osbuild-composer/dnf-json") + + distros, err := distro.NewRegistry(fedora31.New(), fedora32.New(), rhel8.New()) + if err != nil { + log.Fatalf("Error loading distros: %v", err) + } + + distribution, beta, err := distros.FromHost() + if err != nil { + log.Fatalf("Could not determine distro from host: " + err.Error()) + } + + arch, err := distribution.GetArch(common.CurrentArch()) + if err != nil { + log.Fatalf("Host distro does not support host architecture: " + err.Error()) + } + + // TODO: refactor to be more generic + name := distribution.Name() + if beta { + name += "-beta" + } + + repoMap, err := rpmmd.LoadRepositories([]string{"/etc/osbuild-composer", "/usr/share/osbuild-composer"}, name) + if err != nil { + log.Fatalf("Could not load repositories for %s: %v", distribution.Name(), err) + } + + var logger *log.Logger + if verbose { + logger = log.New(os.Stdout, "", 0) + } + + store := store.New(&stateDir, arch, logger) + + queueDir := path.Join(stateDir, "jobs") + err = os.Mkdir(queueDir, 0700) + if err != nil && !os.IsExist(err) { + log.Fatalf("cannot create queue directory: %v", err) + } + + jobs, err := fsjobqueue.New(queueDir, []string{"osbuild"}) + if err != nil { + log.Fatalf("cannot create jobqueue: %v", err) + } + + artifactsDir := path.Join(stateDir, "artifacts") + err = os.Mkdir(artifactsDir, 0755) + if err != nil && !os.IsExist(err) { + log.Fatalf("cannot create artifacts directory: %v", err) + } + + compatOutputDir := path.Join(stateDir, "outputs") + + workers := worker.NewServer(logger, jobs, artifactsDir) + weldrAPI := weldr.New(rpm, arch, distribution, repoMap[common.CurrentArch()], logger, store, workers, compatOutputDir) + + go func() { + err := workers.Serve(jobListener) + common.PanicOnError(err) + }() + + if remoteWorkerListeners, exists := listeners["osbuild-remote-worker.socket"]; exists { + for _, listener := range remoteWorkerListeners { + log.Printf("Starting remote listener\n") + + tlsConfig, err := createTLSConfig(&connectionConfig{ + CACertFile: "/etc/osbuild-composer/ca-crt.pem", + ServerKeyFile: "/etc/osbuild-composer/composer-key.pem", + ServerCertFile: "/etc/osbuild-composer/composer-crt.pem", + }) + + if err != nil { + log.Fatalf("TLS configuration cannot be created: " + err.Error()) + } + + listener := tls.NewListener(listener, tlsConfig) + go func() { + err := workers.Serve(listener) + common.PanicOnError(err) + }() + } + } + + err = weldrAPI.Serve(weldrListener) + common.PanicOnError(err) + +} diff --git a/cmd/osbuild-dnf-json-tests/main_test.go b/cmd/osbuild-dnf-json-tests/main_test.go new file mode 100644 index 0000000..6c0b3bc --- /dev/null +++ b/cmd/osbuild-dnf-json-tests/main_test.go @@ -0,0 +1,96 @@ +// This package contains tests related to dnf-json and rpmmd package. + +// +build integration + +package main + +import ( + "fmt" + "io/ioutil" + "os" + "path" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/osbuild/osbuild-composer/internal/blueprint" + "github.com/osbuild/osbuild-composer/internal/distro" + "github.com/osbuild/osbuild-composer/internal/distro/fedora31" + "github.com/osbuild/osbuild-composer/internal/distro/fedora32" + "github.com/osbuild/osbuild-composer/internal/rpmmd" + "github.com/osbuild/osbuild-composer/internal/test" +) + +func TestFetchChecksum(t *testing.T) { + dir, err := test.SetUpTemporaryRepository() + defer func(dir string) { + err := test.TearDownTemporaryRepository(dir) + assert.Nil(t, err, "Failed to clean up temporary repository.") + }(dir) + assert.Nilf(t, err, "Failed to set up temporary repository: %v", err) + + repoCfg := rpmmd.RepoConfig{ + Name: "repo", + BaseURL: fmt.Sprintf("file://%s", dir), + IgnoreSSL: true, + } + + // use a fullpath to dnf-json, this allows this test to have an arbitrary + // working directory + rpmMetadata := rpmmd.NewRPMMD(path.Join(dir, "rpmmd"), "/usr/libexec/osbuild-composer/dnf-json") + _, c, err := rpmMetadata.FetchMetadata([]rpmmd.RepoConfig{repoCfg}, "platform:f31", "x86_64") + assert.Nilf(t, err, "Failed to fetch checksum: %v", err) + assert.NotEqual(t, "", c["repo"], "The checksum is empty") +} + +// This test loads all the repositories available in /repositories directory +// and tries to run depsolve for each architecture. With N architectures available +// this should run cross-arch dependency solving N-1 times. +func TestCrossArchDepsolve(t *testing.T) { + // Load repositories from the definition we provide in the RPM package + repoDir := "/usr/share/osbuild-composer" + + // NOTE: we can add RHEL, but don't make it hard requirement because it will fail outside of VPN + for _, distroStruct := range []distro.Distro{fedora31.New(), fedora32.New()} { + t.Run(distroStruct.Name(), func(t *testing.T) { + + // Run tests in parallel to speed up run times. + t.Parallel() + + // Set up temporary directory for rpm/dnf cache + dir, err := ioutil.TempDir("/tmp", "rpmmd-test-") + require.Nilf(t, err, "Failed to create tmp dir for depsolve test: %v", err) + defer os.RemoveAll(dir) + + // use a fullpath to dnf-json, this allows this test to have an arbitrary + // working directory + rpm := rpmmd.NewRPMMD(dir, "/usr/libexec/osbuild-composer/dnf-json") + + repos, err := rpmmd.LoadRepositories([]string{repoDir}, distroStruct.Name()) + require.NoErrorf(t, err, "Failed to LoadRepositories %v", distroStruct.Name()) + + for _, archStr := range distroStruct.ListArches() { + t.Run(archStr, func(t *testing.T) { + arch, err := distroStruct.GetArch(archStr) + require.NoError(t, err) + + for _, imgTypeStr := range arch.ListImageTypes() { + t.Run(imgTypeStr, func(t *testing.T) { + imgType, err := arch.GetImageType(imgTypeStr) + require.NoError(t, err) + + buildPackages := imgType.BuildPackages() + _, _, err = rpm.Depsolve(buildPackages, []string{}, repos[archStr], distroStruct.ModulePlatformID(), archStr) + assert.NoError(t, err) + + basePackagesInclude, basePackagesExclude := imgType.Packages(blueprint.Blueprint{}) + _, _, err = rpm.Depsolve(basePackagesInclude, basePackagesExclude, repos[archStr], distroStruct.ModulePlatformID(), archStr) + assert.NoError(t, err) + }) + } + }) + } + }) + } +} diff --git a/cmd/osbuild-image-tests/aws.go b/cmd/osbuild-image-tests/aws.go new file mode 100644 index 0000000..b000bf7 --- /dev/null +++ b/cmd/osbuild-image-tests/aws.go @@ -0,0 +1,281 @@ +// +build integration + +package main + +import ( + "encoding/base64" + "errors" + "fmt" + "io/ioutil" + "os" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/ec2" + "github.com/osbuild/osbuild-composer/internal/upload/awsupload" +) + +type awsCredentials struct { + AccessKeyId string + SecretAccessKey string + Region string + Bucket string +} + +// getAWSCredentialsFromEnv gets the credentials from environment variables +// If none of the environment variables is set, it returns nil. +// If some but not all environment variables are set, it returns an error. +func getAWSCredentialsFromEnv() (*awsCredentials, error) { + accessKeyId, akExists := os.LookupEnv("AWS_ACCESS_KEY_ID") + secretAccessKey, sakExists := os.LookupEnv("AWS_SECRET_ACCESS_KEY") + region, regionExists := os.LookupEnv("AWS_REGION") + bucket, bucketExists := os.LookupEnv("AWS_BUCKET") + + // Workaround Travis security feature. If non of the variables is set, just ignore the test + if !akExists && !sakExists && !bucketExists && !regionExists { + return nil, nil + } + // If only one/two of them are not set, then fail + if !akExists || !sakExists || !bucketExists || !regionExists { + return nil, errors.New("not all required env variables were set") + } + + return &awsCredentials{ + AccessKeyId: accessKeyId, + SecretAccessKey: secretAccessKey, + Region: region, + Bucket: bucket, + }, nil +} + +// encodeBase64 encodes string to base64-encoded string +func encodeBase64(input string) string { + return base64.StdEncoding.EncodeToString([]byte(input)) +} + +// createUserData creates cloud-init's user-data that contains user redhat with +// the specified public key +func createUserData(publicKeyFile string) (string, error) { + publicKey, err := ioutil.ReadFile(publicKeyFile) + if err != nil { + return "", fmt.Errorf("cannot read the public key: %#v", err) + } + + userData := fmt.Sprintf(`#cloud-config +user: redhat +ssh_authorized_keys: + - %s +`, string(publicKey)) + + return userData, nil +} + +// wrapErrorf returns error constructed using fmt.Errorf from format and any +// other args. If innerError != nil, it's appended at the end of the new +// error. +func wrapErrorf(innerError error, format string, a ...interface{}) error { + if innerError != nil { + a = append(a, innerError) + return fmt.Errorf(format+"\n\ninner error: %#s", a...) + } + + return fmt.Errorf(format, a...) +} + +// uploadImageToAWS mimics the upload feature of osbuild-composer. +// It takes an image and an image name and creates an ec2 instance from them. +// The s3 key is never returned - the same thing is done in osbuild-composer, +// the user has no way of getting the s3 key. +func uploadImageToAWS(c *awsCredentials, imagePath string, imageName string) error { + uploader, err := awsupload.New(c.Region, c.AccessKeyId, c.SecretAccessKey) + if err != nil { + return fmt.Errorf("cannot create aws uploader: %#v", err) + } + + _, err = uploader.Upload(imagePath, c.Bucket, imageName) + if err != nil { + return fmt.Errorf("cannot upload the image: %#v", err) + } + _, err = uploader.Register(imageName, c.Bucket, imageName) + if err != nil { + return fmt.Errorf("cannot register the image: %#v", err) + } + + return nil +} + +// newEC2 creates EC2 struct from given credentials +func newEC2(c *awsCredentials) (*ec2.EC2, error) { + creds := credentials.NewStaticCredentials(c.AccessKeyId, c.SecretAccessKey, "") + sess, err := session.NewSession(&aws.Config{ + Credentials: creds, + Region: aws.String(c.Region), + }) + if err != nil { + return nil, fmt.Errorf("cannot create aws session: %#v", err) + } + + return ec2.New(sess), nil +} + +type imageDescription struct { + Id *string + SnapshotId *string + // this doesn't support multiple snapshots per one image, + // because this feature is not supported in composer +} + +// describeEC2Image searches for EC2 image by its name and returns +// its id and snapshot id +func describeEC2Image(e *ec2.EC2, imageName string) (*imageDescription, error) { + imageDescriptions, err := e.DescribeImages(&ec2.DescribeImagesInput{ + Filters: []*ec2.Filter{ + { + Name: aws.String("name"), + Values: []*string{ + aws.String(imageName), + }, + }, + }, + }) + if err != nil { + return nil, fmt.Errorf("cannot describe the image: %#v", err) + } + imageId := imageDescriptions.Images[0].ImageId + snapshotId := imageDescriptions.Images[0].BlockDeviceMappings[0].Ebs.SnapshotId + + return &imageDescription{ + Id: imageId, + SnapshotId: snapshotId, + }, nil +} + +// deleteEC2Image deletes the specified image and its associated snapshot +func deleteEC2Image(e *ec2.EC2, imageDesc *imageDescription) error { + var retErr error + + // firstly, deregister the image + _, err := e.DeregisterImage(&ec2.DeregisterImageInput{ + ImageId: imageDesc.Id, + }) + + if err != nil { + retErr = wrapErrorf(retErr, "cannot deregister the image: %#v", err) + } + + // now it's possible to delete the snapshot + _, err = e.DeleteSnapshot(&ec2.DeleteSnapshotInput{ + SnapshotId: imageDesc.SnapshotId, + }) + + if err != nil { + retErr = wrapErrorf(retErr, "cannot delete the snapshot: %#v", err) + } + + return retErr +} + +// withBootedImageInEC2 runs the function f in the context of booted +// image in AWS EC2 +func withBootedImageInEC2(e *ec2.EC2, imageDesc *imageDescription, publicKey string, f func(address string) error) (retErr error) { + // generate user data with given public key + userData, err := createUserData(publicKey) + if err != nil { + return err + } + + // Security group must be now generated, because by default + // all traffic to EC2 instance is filtered. + + securityGroupName, err := generateRandomString("osbuild-image-tests-security-group-") + if err != nil { + return fmt.Errorf("cannot generate a random name for the image: %#v", err) + } + + // Firstly create a security group + securityGroup, err := e.CreateSecurityGroup(&ec2.CreateSecurityGroupInput{ + GroupName: aws.String(securityGroupName), + Description: aws.String("image-tests-security-group"), + }) + if err != nil { + return fmt.Errorf("cannot create a new security group: %#v", err) + } + + defer func() { + _, err = e.DeleteSecurityGroup(&ec2.DeleteSecurityGroupInput{ + GroupId: securityGroup.GroupId, + }) + + if err != nil { + retErr = wrapErrorf(retErr, "cannot delete the security group: %#v", err) + } + }() + + // Authorize incoming SSH connections. + _, err = e.AuthorizeSecurityGroupIngress(&ec2.AuthorizeSecurityGroupIngressInput{ + CidrIp: aws.String("0.0.0.0/0"), + GroupId: securityGroup.GroupId, + FromPort: aws.Int64(22), + ToPort: aws.Int64(22), + IpProtocol: aws.String("tcp"), + }) + if err != nil { + return fmt.Errorf("canot add a rule to the security group: %#v", err) + } + + // Finally, run the instance from the given image and with the created security group + res, err := e.RunInstances(&ec2.RunInstancesInput{ + MaxCount: aws.Int64(1), + MinCount: aws.Int64(1), + ImageId: imageDesc.Id, + InstanceType: aws.String("t3.micro"), + SecurityGroupIds: []*string{securityGroup.GroupId}, + UserData: aws.String(encodeBase64(userData)), + }) + if err != nil { + return fmt.Errorf("cannot create a new instance: %#v", err) + } + + describeInstanceInput := &ec2.DescribeInstancesInput{ + InstanceIds: []*string{ + res.Instances[0].InstanceId, + }, + } + + defer func() { + // We need to terminate the instance now and wait until the termination is done. + // Otherwise, it wouldn't be possible to delete the image. + _, err = e.TerminateInstances(&ec2.TerminateInstancesInput{ + InstanceIds: []*string{ + res.Instances[0].InstanceId, + }, + }) + if err != nil { + retErr = wrapErrorf(retErr, "cannot terminate the instance: %#v", err) + return + } + + err = e.WaitUntilInstanceTerminated(describeInstanceInput) + if err != nil { + retErr = wrapErrorf(retErr, "waiting for the instance termination failed: %#v", err) + } + }() + + // The instance has no IP address yet. It's assigned when the instance + // is in the state "EXISTS". However, in this state the instance is not + // much usable, therefore wait until "RUNNING" state, in which the instance + // actually can do something useful for us. + err = e.WaitUntilInstanceRunning(describeInstanceInput) + if err != nil { + return fmt.Errorf("waiting for the instance to be running failed: %#v", err) + } + + // By describing the instance, we can get the ip address. + out, err := e.DescribeInstances(describeInstanceInput) + if err != nil { + return fmt.Errorf("cannot describe the instance: %#v", err) + } + + return f(*out.Reservations[0].Instances[0].PublicIpAddress) +} diff --git a/cmd/osbuild-image-tests/azuretest/azure.go b/cmd/osbuild-image-tests/azuretest/azure.go new file mode 100644 index 0000000..ed27fae --- /dev/null +++ b/cmd/osbuild-image-tests/azuretest/azure.go @@ -0,0 +1,325 @@ +// +build integration + +package azuretest + +import ( + "context" + "errors" + "fmt" + "io/ioutil" + "log" + "net/url" + "os" + + "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network" + "github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources" + "github.com/Azure/azure-storage-blob-go/azblob" + "github.com/Azure/go-autorest/autorest/azure/auth" + + "github.com/osbuild/osbuild-composer/internal/upload/azure" +) + +// wrapErrorf returns error constructed using fmt.Errorf from format and any +// other args. If innerError != nil, it's appended at the end of the new +// error. +func wrapErrorf(innerError error, format string, a ...interface{}) error { + if innerError != nil { + a = append(a, innerError) + return fmt.Errorf(format+"\n\ninner error: %#s", a...) + } + + return fmt.Errorf(format, a...) +} + +type azureCredentials struct { + azure.Credentials + ContainerName string + SubscriptionID string + ClientID string + ClientSecret string + TenantID string + Location string + ResourceGroup string +} + +// getAzureCredentialsFromEnv gets the credentials from environment variables +// If none of the environment variables is set, it returns nil. +// If some but not all environment variables are set, it returns an error. +func GetAzureCredentialsFromEnv() (*azureCredentials, error) { + storageAccount, saExists := os.LookupEnv("AZURE_STORAGE_ACCOUNT") + storageAccessKey, sakExists := os.LookupEnv("AZURE_STORAGE_ACCESS_KEY") + containerName, cExists := os.LookupEnv("AZURE_CONTAINER_NAME") + subscriptionId, siExists := os.LookupEnv("AZURE_SUBSCRIPTION_ID") + clientId, ciExists := os.LookupEnv("AZURE_CLIENT_ID") + clientSecret, csExists := os.LookupEnv("AZURE_CLIENT_SECRET") + tenantId, tiExists := os.LookupEnv("AZURE_TENANT_ID") + location, lExists := os.LookupEnv("AZURE_LOCATION") + resourceGroup, rgExists := os.LookupEnv("AZURE_RESOURCE_GROUP") + + // Workaround Travis security feature. If non of the variables is set, just ignore the test + if !saExists && !sakExists && !cExists && !siExists && !ciExists && !csExists && !tiExists && !lExists && !rgExists { + return nil, nil + } + // If only one/two of them are not set, then fail + if !saExists || !sakExists || !cExists || !siExists || !ciExists || !csExists || !tiExists || !lExists || !rgExists { + return nil, errors.New("not all required env variables were set") + } + + return &azureCredentials{ + Credentials: azure.Credentials{ + StorageAccount: storageAccount, + StorageAccessKey: storageAccessKey, + }, + ContainerName: containerName, + SubscriptionID: subscriptionId, + ClientID: clientId, + ClientSecret: clientSecret, + TenantID: tenantId, + Location: location, + ResourceGroup: resourceGroup, + }, nil +} + +// UploadImageToAzure mimics the upload feature of osbuild-composer. +func UploadImageToAzure(c *azureCredentials, imagePath string, imageName string) error { + metadata := azure.ImageMetadata{ + ContainerName: c.ContainerName, + ImageName: imageName, + } + err := azure.UploadImage(c.Credentials, metadata, imagePath, 16) + if err != nil { + return fmt.Errorf("upload to azure failed: %v", err) + } + + return nil +} + +// DeleteImageFromAzure deletes the image uploaded by osbuild-composer +// (or UpluadImageToAzure method). +func DeleteImageFromAzure(c *azureCredentials, imageName string) error { + // Create a default request pipeline using your storage account name and account key. + credential, err := azblob.NewSharedKeyCredential(c.StorageAccount, c.StorageAccessKey) + if err != nil { + return err + } + + p := azblob.NewPipeline(credential, azblob.PipelineOptions{}) + + // get storage account blob service URL endpoint. + URL, _ := url.Parse(fmt.Sprintf("https://%s.blob.core.windows.net/%s", c.StorageAccount, c.ContainerName)) + + // Create a ContainerURL object that wraps the container URL and a request + // pipeline to make requests. + containerURL := azblob.NewContainerURL(*URL, p) + + // Create the container, use a never-expiring context + ctx := context.Background() + + blobURL := containerURL.NewPageBlobURL(imageName) + + _, err = blobURL.Delete(ctx, azblob.DeleteSnapshotsOptionInclude, azblob.BlobAccessConditions{}) + + if err != nil { + return fmt.Errorf("cannot delete the image: %v", err) + } + + return nil +} + +// readPublicKey reads the public key from a file and returns it as a string +func readPublicKey(publicKeyFile string) (string, error) { + publicKey, err := ioutil.ReadFile(publicKeyFile) + if err != nil { + return "", fmt.Errorf("cannot read the public key file: %v", err) + } + + return string(publicKey), nil +} + +// deleteResource is a convenient wrapper around Azure SDK to delete a resource +func deleteResource(client resources.Client, id string, apiVersion string) error { + deleteFuture, err := client.DeleteByID(context.Background(), id, apiVersion) + if err != nil { + return fmt.Errorf("cannot delete the resourceType %s: %v", id, err) + } + + err = deleteFuture.WaitForCompletionRef(context.Background(), client.BaseClient.Client) + if err != nil { + return fmt.Errorf("waiting for the resourceType %s deletion failed: %v", id, err) + } + + _, err = deleteFuture.Result(client) + if err != nil { + return fmt.Errorf("cannot retrieve the result of %s deletion: %v", id, err) + } + + return nil +} + +// withBootedImageInAzure runs the function f in the context of booted +// image in Azure +func WithBootedImageInAzure(creds *azureCredentials, imageName, testId, publicKeyFile string, f func(address string) error) (retErr error) { + publicKey, err := readPublicKey(publicKeyFile) + if err != nil { + return err + } + + clientCredentialsConfig := auth.NewClientCredentialsConfig(creds.ClientID, creds.ClientSecret, creds.TenantID) + authorizer, err := clientCredentialsConfig.Authorizer() + if err != nil { + return fmt.Errorf("cannot create the authorizer: %v", err) + } + + template, err := loadDeploymentTemplate() + if err != nil { + return err + } + + // Azure requires a lot of names - for a virtual machine, a virtual network, + // a virtual interface and so on and so forth. + // Let's create all of them here from the test id so we can delete them + // later. + deploymentName := testId + imagePath := fmt.Sprintf("https://%s.blob.core.windows.net/%s/%s", creds.StorageAccount, creds.ContainerName, imageName) + + parameters := deploymentParameters{ + NetworkInterfaceName: newDeploymentParameter("iface-" + testId), + NetworkSecurityGroupName: newDeploymentParameter("nsg-" + testId), + VirtualNetworkName: newDeploymentParameter("vnet-" + testId), + PublicIPAddressName: newDeploymentParameter("ip-" + testId), + VirtualMachineName: newDeploymentParameter("vm-" + testId), + DiskName: newDeploymentParameter("disk-" + testId), + ImageName: newDeploymentParameter("image-" + testId), + Location: newDeploymentParameter(creds.Location), + ImagePath: newDeploymentParameter(imagePath), + AdminUsername: newDeploymentParameter("redhat"), + AdminPublicKey: newDeploymentParameter(publicKey), + } + + deploymentsClient := resources.NewDeploymentsClient(creds.SubscriptionID) + deploymentsClient.Authorizer = authorizer + + deploymentFuture, err := deploymentsClient.CreateOrUpdate(context.Background(), creds.ResourceGroup, deploymentName, resources.Deployment{ + Properties: &resources.DeploymentProperties{ + Mode: resources.Incremental, + Template: template, + Parameters: parameters, + }, + }) + + // Let's registed the clean-up function as soon as possible. + defer func() { + resourcesClient := resources.NewClient(creds.SubscriptionID) + resourcesClient.Authorizer = authorizer + + // This array specifies all the resources we need to delete. The + // order is important, e.g. one cannot delete a network interface + // that is still attached to a virtual machine. + resourcesToDelete := []struct { + resType string + name string + apiVersion string + }{ + { + resType: "Microsoft.Compute/virtualMachines", + name: parameters.VirtualMachineName.Value, + apiVersion: "2019-07-01", + }, + { + resType: "Microsoft.Network/networkInterfaces", + name: parameters.NetworkInterfaceName.Value, + apiVersion: "2019-09-01", + }, + { + resType: "Microsoft.Network/publicIPAddresses", + name: parameters.PublicIPAddressName.Value, + apiVersion: "2019-09-01", + }, + { + resType: "Microsoft.Network/networkSecurityGroups", + name: parameters.NetworkSecurityGroupName.Value, + apiVersion: "2019-09-01", + }, + { + resType: "Microsoft.Network/virtualNetworks", + name: parameters.VirtualNetworkName.Value, + apiVersion: "2019-09-01", + }, + { + resType: "Microsoft.Compute/disks", + name: parameters.DiskName.Value, + apiVersion: "2019-07-01", + }, + { + resType: "Microsoft.Compute/images", + name: parameters.ImageName.Value, + apiVersion: "2019-07-01", + }, + } + + // Delete all the resources + for _, resourceToDelete := range resourcesToDelete { + resourceID := fmt.Sprintf( + "subscriptions/%s/resourceGroups/%s/providers/%s/%s", + creds.SubscriptionID, + creds.ResourceGroup, + resourceToDelete.resType, + resourceToDelete.name, + ) + + err := deleteResource(resourcesClient, resourceID, resourceToDelete.apiVersion) + if err != nil { + log.Printf("deleting the resource %s errored: %v", resourceToDelete.name, err) + retErr = wrapErrorf(retErr, "cannot delete the resource %s: %v", resourceToDelete.name, err) + // do not return here, try deleting as much as possible + } + } + + // Delete the deployment + // This actually does not delete any resources created by the + // deployment as one might think. Therefore the code above + // is needed. + result, err := deploymentsClient.Delete(context.Background(), creds.ResourceGroup, deploymentName) + if err != nil { + retErr = wrapErrorf(retErr, "cannot create the request for the deployment deletion: %v", err) + return + } + + err = result.WaitForCompletionRef(context.Background(), deploymentsClient.Client) + if err != nil { + retErr = wrapErrorf(retErr, "waiting for the deployment deletion failed: %v", err) + return + } + + _, err = result.Result(deploymentsClient) + if err != nil { + retErr = wrapErrorf(retErr, "cannot retrieve the deployment deletion result: %v", err) + return + } + }() + + if err != nil { + return fmt.Errorf("creating a deployment failed: %v", err) + } + + err = deploymentFuture.WaitForCompletionRef(context.Background(), deploymentsClient.Client) + if err != nil { + return fmt.Errorf("waiting for deployment completion failed: %v", err) + } + + _, err = deploymentFuture.Result(deploymentsClient) + if err != nil { + return fmt.Errorf("retrieving the deployment result failed: %v", err) + } + + // get the IP address + publicIPAddressClient := network.NewPublicIPAddressesClient(creds.SubscriptionID) + publicIPAddressClient.Authorizer = authorizer + + publicIPAddress, err := publicIPAddressClient.Get(context.Background(), creds.ResourceGroup, parameters.PublicIPAddressName.Value, "") + if err != nil { + return fmt.Errorf("cannot get the ip address details: %v", err) + } + + return f(*publicIPAddress.IPAddress) +} diff --git a/cmd/osbuild-image-tests/azuretest/deployment.go b/cmd/osbuild-image-tests/azuretest/deployment.go new file mode 100644 index 0000000..f3e51a1 --- /dev/null +++ b/cmd/osbuild-image-tests/azuretest/deployment.go @@ -0,0 +1,56 @@ +// +build integration + +package azuretest + +import ( + "encoding/json" + "fmt" + "os" + + "github.com/osbuild/osbuild-composer/cmd/osbuild-image-tests/constants" +) + +// loadDeploymentTemplate loads the deployment template from the specified +// path and return it as a "dynamically" typed object +func loadDeploymentTemplate() (interface{}, error) { + f, err := os.Open(constants.TestPaths.AzureDeploymentTemplate) + if err != nil { + return nil, fmt.Errorf("cannot open the deployment file: %v", err) + } + + defer f.Close() + + var result interface{} + + err = json.NewDecoder(f).Decode(&result) + + if err != nil { + return nil, fmt.Errorf("cannot decode the deployment file: %v", err) + } + + return result, nil +} + +// struct for encoding a deployment parameter +type deploymentParameter struct { + Value string `json:"value"` +} + +func newDeploymentParameter(value string) deploymentParameter { + return deploymentParameter{Value: value} +} + +// struct for encoding deployment parameters +type deploymentParameters struct { + NetworkInterfaceName deploymentParameter `json:"networkInterfaceName"` + NetworkSecurityGroupName deploymentParameter `json:"networkSecurityGroupName"` + VirtualNetworkName deploymentParameter `json:"virtualNetworkName"` + PublicIPAddressName deploymentParameter `json:"publicIPAddressName"` + VirtualMachineName deploymentParameter `json:"virtualMachineName"` + DiskName deploymentParameter `json:"diskName"` + ImageName deploymentParameter `json:"imageName"` + Location deploymentParameter `json:"location"` + ImagePath deploymentParameter `json:"imagePath"` + AdminUsername deploymentParameter `json:"adminUsername"` + AdminPublicKey deploymentParameter `json:"adminPublicKey"` +} diff --git a/cmd/osbuild-image-tests/constants/constants-travis.go b/cmd/osbuild-image-tests/constants/constants-travis.go new file mode 100644 index 0000000..c2fffab --- /dev/null +++ b/cmd/osbuild-image-tests/constants/constants-travis.go @@ -0,0 +1,47 @@ +// +build travis + +package constants + +import ( + "os" + "os/exec" +) + +func GetOsbuildCommand(store, outputDirectory string) *exec.Cmd { + cmd := exec.Command( + "python3", + "-m", "osbuild", + "--libdir", ".", + "--store", store, + "--output-directory", outputDirectory, + "--json", + "-", + ) + cmd.Dir = "osbuild" + return cmd +} + +func GetImageInfoCommand(imagePath string) *exec.Cmd { + cmd := exec.Command( + "tools/image-info", + imagePath, + ) + cmd.Env = append(os.Environ(), "PYTHONPATH=osbuild") + return cmd +} + +var TestPaths = struct { + ImageInfo string + PrivateKey string + TestCasesDirectory string + UserData string + MetaData string + AzureDeploymentTemplate string +}{ + ImageInfo: "tools/image-info", + PrivateKey: "test/keyring/id_rsa", + TestCasesDirectory: "test/cases", + UserData: "test/cloud-init/user-data", + MetaData: "test/cloud-init/meta-data", + AzureDeploymentTemplate: "test/azure-deployment-template.json", +} diff --git a/cmd/osbuild-image-tests/constants/constants.go b/cmd/osbuild-image-tests/constants/constants.go new file mode 100644 index 0000000..4a966c7 --- /dev/null +++ b/cmd/osbuild-image-tests/constants/constants.go @@ -0,0 +1,38 @@ +// +build integration,!travis + +package constants + +import "os/exec" + +func GetOsbuildCommand(store, outputDirectory string) *exec.Cmd { + return exec.Command( + "osbuild", + "--store", store, + "--output-directory", outputDirectory, + "--json", + "-", + ) +} + +func GetImageInfoCommand(imagePath string) *exec.Cmd { + return exec.Command( + "/usr/libexec/osbuild-composer/image-info", + imagePath, + ) +} + +var TestPaths = struct { + ImageInfo string + PrivateKey string + TestCasesDirectory string + UserData string + MetaData string + AzureDeploymentTemplate string +}{ + ImageInfo: "/usr/libexec/osbuild-composer/image-info", + PrivateKey: "/usr/share/tests/osbuild-composer/keyring/id_rsa", + TestCasesDirectory: "/usr/share/tests/osbuild-composer/cases", + UserData: "/usr/share/tests/osbuild-composer/cloud-init/user-data", + MetaData: "/usr/share/tests/osbuild-composer/cloud-init/meta-data", + AzureDeploymentTemplate: "/usr/share/tests/osbuild-composer/azure-deployment-template.json", +} diff --git a/cmd/osbuild-image-tests/context-managers.go b/cmd/osbuild-image-tests/context-managers.go new file mode 100644 index 0000000..5125954 --- /dev/null +++ b/cmd/osbuild-image-tests/context-managers.go @@ -0,0 +1,271 @@ +// +build integration + +package main + +import ( + "fmt" + "io" + "io/ioutil" + "log" + "os" + "os/exec" + "runtime" + "strconv" + "strings" + "time" + + "github.com/osbuild/osbuild-composer/cmd/osbuild-image-tests/constants" + "github.com/osbuild/osbuild-composer/internal/common" + "github.com/osbuild/osbuild-composer/internal/distro" +) + +// withNetworkNamespace provides the function f with a new network namespace +// which is deleted immediately after f returns +func withNetworkNamespace(f func(ns netNS) error) error { + ns, err := newNetworkNamespace() + if err != nil { + return err + } + + defer func() { + err := ns.Delete() + if err != nil { + log.Printf("cannot delete network namespace: %#v", err) + } + }() + + return f(ns) +} + +// withTempFile provides the function f with a new temporary file +// dir and pattern parameters have the same semantics as in ioutil.TempFile +func withTempFile(dir, pattern string, f func(file *os.File) error) error { + tempFile, err := ioutil.TempFile(dir, pattern) + if err != nil { + return fmt.Errorf("cannot create the temporary file: %#v", err) + } + + defer func() { + err := os.Remove(tempFile.Name()) + if err != nil { + log.Printf("cannot remove the temporary file: %#v", err) + } + }() + + return f(tempFile) +} + +func withTempDir(dir, pattern string, f func(dir string) error) error { + tempDir, err := ioutil.TempDir(dir, pattern) + if err != nil { + return fmt.Errorf("cannot create the temporary directory %#v", err) + } + + defer func() { + err := os.RemoveAll(tempDir) + if err != nil { + log.Printf("cannot remove the temporary directory: %#v", err) + } + }() + + return f(tempDir) +} + +// writeCloudInitSO creates cloud-init iso from specified userData and +// metaData and writes it to the writer +func writeCloudInitISO(writer io.Writer, userData, metaData string) error { + isoCmd := exec.Command( + "genisoimage", + "-quiet", + "-input-charset", "utf-8", + "-volid", "cidata", + "-joliet", + "-rock", + userData, + metaData, + ) + isoCmd.Stdout = writer + isoCmd.Stderr = os.Stderr + + err := isoCmd.Run() + if err != nil { + return fmt.Errorf("cannot create cloud-init iso: %#v", err) + } + + return nil +} + +// withBootedQemuImage boots the specified image in the specified namespace +// using qemu. The VM is killed immediately after function returns. +func withBootedQemuImage(image string, ns netNS, f func() error) error { + return withTempFile("", "osbuild-image-tests-cloudinit", func(cloudInitFile *os.File) error { + err := writeCloudInitISO( + cloudInitFile, + constants.TestPaths.UserData, + constants.TestPaths.MetaData, + ) + if err != nil { + return err + } + + err = cloudInitFile.Close() + if err != nil { + return fmt.Errorf("cannot close temporary cloudinit file: %#v", err) + } + + var qemuCmd *exec.Cmd + if common.CurrentArch() == "x86_64" { + hostDistroName, _, err := distro.GetHostDistroName() + if err != nil { + return fmt.Errorf("cannot determing the current distro: %v", err) + } + + var qemuPath string + if strings.HasPrefix(hostDistroName, "rhel") { + qemuPath = "/usr/libexec/qemu-kvm" + } else { + qemuPath = "qemu-system-x86_64" + } + + qemuCmd = ns.NamespacedCommand( + qemuPath, + "-cpu", "host", + "-smp", strconv.Itoa(runtime.NumCPU()), + "-m", "1024", + "-snapshot", + "-M", "accel=kvm", + "-cdrom", cloudInitFile.Name(), + "-net", "nic,model=rtl8139", "-net", "user,hostfwd=tcp::22-:22", + "-nographic", + image, + ) + } else if common.CurrentArch() == "aarch64" { + // This command does not use KVM as I was unable to make it work in Beaker, + // once we have machines that can use KVM, enable it to make it faster + qemuCmd = ns.NamespacedCommand( + "qemu-system-aarch64", + "-cpu", "host", + "-M", "virt", + "-m", "2048", + // As opposed to x86_64, aarch64 uses UEFI, this one comes from edk2-aarch64 package on Fedora + "-bios", "/usr/share/edk2/aarch64/QEMU_EFI.fd", + "-boot", "efi", + "-M", "accel=kvm", + "-snapshot", + "-cdrom", cloudInitFile.Name(), + "-net", "nic,model=rtl8139", "-net", "user,hostfwd=tcp::22-:22", + "-nographic", + image, + ) + } else { + panic("Running on unknown architecture.") + } + + err = qemuCmd.Start() + if err != nil { + return fmt.Errorf("cannot start the qemu process: %#v", err) + } + + defer func() { + err := killProcessCleanly(qemuCmd.Process, time.Second) + if err != nil { + log.Printf("cannot kill the qemu process: %#v", err) + } + }() + + return f() + }) +} + +// withBootedNspawnImage boots the specified image in the specified namespace +// using nspawn. The VM is killed immediately after function returns. +func withBootedNspawnImage(image string, ns netNS, f func() error) error { + cmd := exec.Command( + "systemd-nspawn", + "--boot", "--register=no", + "--image", image, + "--network-namespace-path", ns.Path(), + ) + + err := cmd.Start() + if err != nil { + return fmt.Errorf("cannot start the systemd-nspawn process: %#v", err) + } + + defer func() { + err := killProcessCleanly(cmd.Process, time.Second) + if err != nil { + log.Printf("cannot kill the systemd-nspawn process: %#v", err) + } + }() + + return f() +} + +// withBootedNspawnImage boots the specified directory in the specified namespace +// using nspawn. The VM is killed immediately after function returns. +func withBootedNspawnDirectory(dir string, ns netNS, f func() error) error { + cmd := exec.Command( + "systemd-nspawn", + "--boot", "--register=no", + "--directory", dir, + "--network-namespace-path", ns.Path(), + ) + + err := cmd.Start() + if err != nil { + return fmt.Errorf("cannot start the systemd-nspawn process: %#v", err) + } + + defer func() { + err := killProcessCleanly(cmd.Process, time.Second) + if err != nil { + log.Printf("cannot kill the systemd-nspawn process: %#v", err) + } + }() + + return f() +} + +// withExtractedTarArchive extracts the provided archive and passes +// a path to the result to the function f. The result is deleted +// immediately after the function returns. +func withExtractedTarArchive(archive string, f func(dir string) error) error { + return withTempDir("", "tar-archive", func(dir string) error { + cmd := exec.Command( + "tar", + "xf", archive, + "-C", dir, + ) + cmd.Stderr = os.Stderr + cmd.Stdout = os.Stdout + + err := cmd.Run() + if err != nil { + return fmt.Errorf("cannot untar the archive: %#v", err) + } + + return f(dir) + }) +} + +// withSSHKeyPair runs the function f with a newly generated +// ssh key-pair, they key-pair is deleted immediately after +// the function f returns +func withSSHKeyPair(f func(privateKey, publicKey string) error) error { + return withTempDir("", "keys", func(dir string) error { + privateKey := dir + "/id_rsa" + publicKey := dir + "/id_rsa.pub" + cmd := exec.Command("ssh-keygen", + "-N", "", + "-f", privateKey, + ) + + err := cmd.Run() + if err != nil { + return fmt.Errorf("ssh-keygen failed: %#v", err) + } + + return f(privateKey, publicKey) + }) +} diff --git a/cmd/osbuild-image-tests/helpers.go b/cmd/osbuild-image-tests/helpers.go new file mode 100644 index 0000000..d679549 --- /dev/null +++ b/cmd/osbuild-image-tests/helpers.go @@ -0,0 +1,65 @@ +// +build integration + +package main + +import ( + "log" + "os" + "syscall" + "time" + + "github.com/google/uuid" +) + +// durationMin returns the smaller of two given durations +func durationMin(a, b time.Duration) time.Duration { + if a < b { + return a + } + return b +} + +// killProcessCleanly firstly sends SIGTERM to the process. If it still exists +// after the specified timeout, it sends SIGKILL +func killProcessCleanly(process *os.Process, timeout time.Duration) error { + err := process.Signal(syscall.SIGTERM) + if err != nil { + log.Printf("cannot send SIGTERM to process, sending SIGKILL instead: %#v", err) + return process.Kill() + } + + const pollInterval = 10 * time.Millisecond + + for { + p, err := os.FindProcess(process.Pid) + if err != nil { + return nil + } + + err = p.Signal(syscall.Signal(0)) + if err != nil { + return nil + } + + sleep := durationMin(pollInterval, timeout) + if sleep == 0 { + break + } + + timeout -= sleep + time.Sleep(sleep) + } + + return process.Kill() +} + +// generateRandomString generates a new random string with specified prefix. +// The random part is based on UUID. +func generateRandomString(prefix string) (string, error) { + id, err := uuid.NewRandom() + if err != nil { + return "", err + } + + return prefix + id.String(), nil +} diff --git a/cmd/osbuild-image-tests/main_test.go b/cmd/osbuild-image-tests/main_test.go new file mode 100644 index 0000000..8da90df --- /dev/null +++ b/cmd/osbuild-image-tests/main_test.go @@ -0,0 +1,528 @@ +// +build integration + +package main + +import ( + "bytes" + "context" + "encoding/json" + "flag" + "fmt" + "io" + "io/ioutil" + "log" + "os" + "os/exec" + "path" + "strings" + "testing" + "time" + + "github.com/gophercloud/gophercloud" + "github.com/gophercloud/gophercloud/openstack" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/osbuild/osbuild-composer/cmd/osbuild-image-tests/azuretest" + "github.com/osbuild/osbuild-composer/cmd/osbuild-image-tests/constants" + "github.com/osbuild/osbuild-composer/cmd/osbuild-image-tests/openstacktest" + "github.com/osbuild/osbuild-composer/cmd/osbuild-image-tests/vmwaretest" + "github.com/osbuild/osbuild-composer/internal/common" +) + +type testcaseStruct struct { + ComposeRequest struct { + Distro string + Arch string + Filename string + } `json:"compose-request"` + Manifest json.RawMessage + ImageInfo json.RawMessage `json:"image-info"` + Boot *struct { + Type string + } +} + +var disableLocalBoot = flag.Bool("disable-local-boot", false, "when this flag is given, no images are booted locally using qemu (this does not affect testing in clouds)") + +// runOsbuild runs osbuild with the specified manifest and output-directory. +func runOsbuild(manifest []byte, store, outputDirectory string) error { + cmd := constants.GetOsbuildCommand(store, outputDirectory) + + cmd.Stdin = bytes.NewReader(manifest) + var outBuffer bytes.Buffer + cmd.Stdout = &outBuffer + cmd.Stderr = &outBuffer + + err := cmd.Run() + if err != nil { + // Pretty print the osbuild error output. + buf := new(bytes.Buffer) + _ = json.Indent(buf, outBuffer.Bytes(), "", " ") + fmt.Println(buf) + + return fmt.Errorf("running osbuild failed: %v", err) + } + + return nil +} + +// testImageInfo runs image-info on image specified by imageImage and +// compares the result with expected image info +func testImageInfo(t *testing.T, imagePath string, rawImageInfoExpected []byte) { + var imageInfoExpected interface{} + err := json.Unmarshal(rawImageInfoExpected, &imageInfoExpected) + require.NoErrorf(t, err, "cannot decode expected image info: %#v", err) + + cmd := constants.GetImageInfoCommand(imagePath) + cmd.Stderr = os.Stderr + reader, writer := io.Pipe() + cmd.Stdout = writer + + err = cmd.Start() + require.NoErrorf(t, err, "image-info cannot start: %#v", err) + + var imageInfoGot interface{} + err = json.NewDecoder(reader).Decode(&imageInfoGot) + require.NoErrorf(t, err, "decoding image-info output failed: %#v", err) + + err = cmd.Wait() + require.NoErrorf(t, err, "running image-info failed: %#v", err) + + assert.Equal(t, imageInfoExpected, imageInfoGot) +} + +type timeoutError struct{} + +func (*timeoutError) Error() string { return "" } + +// trySSHOnce tries to test the running image using ssh once +// It returns timeoutError if ssh command returns 255, if it runs for more +// that 10 seconds or if systemd-is-running returns starting. +// It returns nil if systemd-is-running returns running or degraded. +// It can also return other errors in other error cases. +func trySSHOnce(address string, privateKey string, ns *netNS) error { + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + cmdName := "ssh" + cmdArgs := []string{ + "-p", "22", + "-i", privateKey, + "-o", "StrictHostKeyChecking=no", + "-o", "UserKnownHostsFile=/dev/null", + "redhat@" + address, + "systemctl --wait is-system-running", + } + + var cmd *exec.Cmd + + if ns != nil { + cmd = ns.NamespacedCommandContext(ctx, cmdName, cmdArgs...) + } else { + cmd = exec.CommandContext(ctx, cmdName, cmdArgs...) + } + + output, err := cmd.Output() + + if ctx.Err() == context.DeadlineExceeded { + return &timeoutError{} + } + + if err != nil { + if exitError, ok := err.(*exec.ExitError); ok { + if exitError.ExitCode() == 255 { + return &timeoutError{} + } + } else { + return fmt.Errorf("ssh command failed from unknown reason: %#v", err) + } + } + + outputString := strings.TrimSpace(string(output)) + switch outputString { + case "running": + return nil + case "degraded": + log.Print("ssh test passed, but the system is degraded") + return nil + case "starting": + return &timeoutError{} + default: + return fmt.Errorf("ssh test failed, system status is: %s", outputString) + } +} + +// testSSH tests the running image using ssh. +// It tries 20 attempts before giving up. If a major error occurs, it might +// return earlier. +func testSSH(t *testing.T, address string, privateKey string, ns *netNS) { + const attempts = 20 + for i := 0; i < attempts; i++ { + err := trySSHOnce(address, privateKey, ns) + if err == nil { + // pass the test + return + } + + // if any other error than the timeout one happened, fail the test immediately + if _, ok := err.(*timeoutError); !ok { + t.Fatal(err) + } + + time.Sleep(10 * time.Second) + } + + t.Errorf("ssh test failure, %d attempts were made", attempts) +} + +func testBootUsingQemu(t *testing.T, imagePath string) { + if *disableLocalBoot { + t.Skip("local booting was disabled by -disable-local-boot, skipping") + } + err := withNetworkNamespace(func(ns netNS) error { + return withBootedQemuImage(imagePath, ns, func() error { + testSSH(t, "localhost", constants.TestPaths.PrivateKey, &ns) + return nil + }) + }) + require.NoError(t, err) +} + +func testBootUsingNspawnImage(t *testing.T, imagePath string) { + err := withNetworkNamespace(func(ns netNS) error { + return withBootedNspawnImage(imagePath, ns, func() error { + testSSH(t, "localhost", constants.TestPaths.PrivateKey, &ns) + return nil + }) + }) + require.NoError(t, err) +} + +func testBootUsingNspawnDirectory(t *testing.T, imagePath string) { + err := withNetworkNamespace(func(ns netNS) error { + return withExtractedTarArchive(imagePath, func(dir string) error { + return withBootedNspawnDirectory(dir, ns, func() error { + testSSH(t, "localhost", constants.TestPaths.PrivateKey, &ns) + return nil + }) + }) + }) + require.NoError(t, err) +} + +func testBootUsingAWS(t *testing.T, imagePath string) { + creds, err := getAWSCredentialsFromEnv() + require.NoError(t, err) + + // if no credentials are given, fall back to qemu + if creds == nil { + log.Print("no AWS credentials given, falling back to booting using qemu") + testBootUsingQemu(t, imagePath) + return + + } + + imageName, err := generateRandomString("osbuild-image-tests-image-") + require.NoError(t, err) + + e, err := newEC2(creds) + require.NoError(t, err) + + // the following line should be done by osbuild-composer at some point + err = uploadImageToAWS(creds, imagePath, imageName) + require.NoErrorf(t, err, "upload to amazon failed, resources could have been leaked") + + imageDesc, err := describeEC2Image(e, imageName) + require.NoErrorf(t, err, "cannot describe the ec2 image") + + // delete the image after the test is over + defer func() { + err = deleteEC2Image(e, imageDesc) + require.NoErrorf(t, err, "cannot delete the ec2 image, resources could have been leaked") + }() + + // boot the uploaded image and try to connect to it + err = withSSHKeyPair(func(privateKey, publicKey string) error { + return withBootedImageInEC2(e, imageDesc, publicKey, func(address string) error { + testSSH(t, address, privateKey, nil) + return nil + }) + }) + require.NoError(t, err) +} + +func testBootUsingAzure(t *testing.T, imagePath string) { + creds, err := azuretest.GetAzureCredentialsFromEnv() + require.NoError(t, err) + + // if no credentials are given, fall back to qemu + if creds == nil { + log.Print("no Azure credentials given, falling back to booting using qemu") + testBootUsingQemu(t, imagePath) + return + } + + // create a random test id to name all the resources used in this test + testId, err := generateRandomString("") + require.NoError(t, err) + + imageName := "image-" + testId + ".vhd" + + // the following line should be done by osbuild-composer at some point + err = azuretest.UploadImageToAzure(creds, imagePath, imageName) + require.NoErrorf(t, err, "upload to azure failed, resources could have been leaked") + + // delete the image after the test is over + defer func() { + err = azuretest.DeleteImageFromAzure(creds, imageName) + require.NoErrorf(t, err, "cannot delete the azure image, resources could have been leaked") + }() + + // boot the uploaded image and try to connect to it + err = withSSHKeyPair(func(privateKey, publicKey string) error { + return azuretest.WithBootedImageInAzure(creds, imageName, testId, publicKey, func(address string) error { + testSSH(t, address, privateKey, nil) + return nil + }) + }) + require.NoError(t, err) +} + +func testBootUsingOpenStack(t *testing.T, imagePath string) { + creds, err := openstack.AuthOptionsFromEnv() + + // if no credentials are given, fall back to qemu + if (creds == gophercloud.AuthOptions{}) { + log.Print("No OpenStack credentials given, falling back to booting using qemu") + testBootUsingQemu(t, imagePath) + return + } + require.NoError(t, err) + + // provider is the top-level client that all OpenStack services derive from + provider, err := openstack.AuthenticatedClient(creds) + require.NoError(t, err) + + // create a random test id to name all the resources used in this test + imageName, err := generateRandomString("osbuild-image-tests-openstack-image-") + require.NoError(t, err) + + // the following line should be done by osbuild-composer at some point + image, err := openstacktest.UploadImageToOpenStack(provider, imagePath, imageName) + require.NoErrorf(t, err, "Upload to OpenStack failed, resources could have been leaked") + require.NotNil(t, image) + + // delete the image after the test is over + defer func() { + err = openstacktest.DeleteImageFromOpenStack(provider, image.ID) + require.NoErrorf(t, err, "Cannot delete OpenStack image, resources could have been leaked") + }() + + // boot the uploaded image and try to connect to it + err = withSSHKeyPair(func(privateKey, publicKey string) error { + userData, err := createUserData(publicKey) + require.NoErrorf(t, err, "Creating user data failed: %v", err) + + return openstacktest.WithBootedImageInOpenStack(provider, image.ID, userData, func(address string) error { + testSSH(t, address, privateKey, nil) + return nil + }) + }) + require.NoError(t, err) +} + +func testBootUsingVMware(t *testing.T, imagePath string) { + creds, err := vmwaretest.AuthOptionsFromEnv() + + // if no credentials are given, fall back to qemu + if (creds == nil) { + log.Print("No vCenter credentials given, falling back to booting using qemu") + log.Printf("Error=%v", err) + testBootUsingQemu(t, imagePath) + return + } + require.NoError(t, err) + + // convert to streamOptimized vmdk + imagePath, err = vmwaretest.ConvertToStreamOptimizedVmdk(imagePath) + require.NoError(t, err) + require.NotEqual(t, "", imagePath) + defer os.Remove(imagePath) + + // create a random test id to name all the resources used in this test + imageName, err := generateRandomString("osbuild-image-tests-vmware-image-") + require.NoError(t, err) + + // the following line should be done by osbuild-composer at some point + err = vmwaretest.ImportImage(creds, imagePath, imageName) + require.NoErrorf(t, err, "Upload to vCenter failed, resources could have been leaked") + + // delete the image after the test is over + defer func() { + err = vmwaretest.DeleteImage(creds, imageName) + require.NoErrorf(t, err, "Cannot delete image from vCenter, resources could have been leaked") + }() + + // boot the uploaded image and try to connect to it + err = vmwaretest.WithSSHKeyPair(func(privateKey, publicKey string) error { + return vmwaretest.WithBootedImage(creds, imagePath, imageName, publicKey, func(address string) error { + testSSH(t, address, privateKey, nil) + return nil + }) + }) + require.NoError(t, err) +} + +// testBoot tests if the image is able to successfully boot +// Before the test it boots the image respecting the specified bootType. +// The test passes if the function is able to connect to the image via ssh +// in defined number of attempts and systemd-is-running returns running +// or degraded status. +func testBoot(t *testing.T, imagePath string, bootType string) { + switch bootType { + case "qemu": + testBootUsingQemu(t, imagePath) + + case "nspawn": + testBootUsingNspawnImage(t, imagePath) + + case "nspawn-extract": + testBootUsingNspawnDirectory(t, imagePath) + + case "aws": + testBootUsingAWS(t, imagePath) + + case "azure": + testBootUsingAzure(t, imagePath) + + case "openstack": + testBootUsingOpenStack(t, imagePath) + + case "vmware": + testBootUsingVMware(t, imagePath) + + default: + panic("unknown boot type!") + } +} + +func kvmAvailable() bool { + _, err := os.Stat("/dev/kvm") + // File exists + if err == nil { + // KVM is available + return true + } else if os.IsNotExist(err) { + // KVM is not available as /dev/kvm is missing + return false + } else { + // The error was different than non-existing file which is unexpected + panic(err) + } +} + +// testImage performs a series of tests specified in the testcase +// on an image +func testImage(t *testing.T, testcase testcaseStruct, imagePath string) { + if testcase.ImageInfo != nil { + t.Run("image info", func(t *testing.T) { + testImageInfo(t, imagePath, testcase.ImageInfo) + }) + } + + if testcase.Boot != nil { + if common.CurrentArch() == "aarch64" && !kvmAvailable() { + t.Log("Running on aarch64 without KVM support, skipping the boot test.") + return + } + t.Run("boot", func(t *testing.T) { + testBoot(t, imagePath, testcase.Boot.Type) + }) + } +} + +// runTestcase builds the pipeline specified in the testcase and then it +// tests the result +func runTestcase(t *testing.T, testcase testcaseStruct, store string) { + _ = os.Mkdir("/var/lib/osbuild-composer-tests", 0755) + outputDirectory, err := ioutil.TempDir("/var/lib/osbuild-composer-tests", "osbuild-image-tests-*") + require.NoError(t, err, "error creating temporary output directory") + + defer func() { + err := os.RemoveAll(outputDirectory) + require.NoError(t, err, "error removing temporary output directory") + }() + + err = runOsbuild(testcase.Manifest, store, outputDirectory) + require.NoError(t, err) + + imagePath := fmt.Sprintf("%s/%s", outputDirectory, testcase.ComposeRequest.Filename) + + testImage(t, testcase, imagePath) +} + +// getAllCases returns paths to all testcases in the testcase directory +func getAllCases() ([]string, error) { + cases, err := ioutil.ReadDir(constants.TestPaths.TestCasesDirectory) + if err != nil { + return nil, fmt.Errorf("cannot list test cases: %#v", err) + } + + casesPaths := []string{} + for _, c := range cases { + if c.IsDir() { + continue + } + + casePath := fmt.Sprintf("%s/%s", constants.TestPaths.TestCasesDirectory, c.Name()) + casesPaths = append(casesPaths, casePath) + } + + return casesPaths, nil +} + +// runTests opens, parses and runs all the specified testcases +func runTests(t *testing.T, cases []string) { + _ = os.Mkdir("/var/lib/osbuild-composer-tests", 0755) + store, err := ioutil.TempDir("/var/lib/osbuild-composer-tests", "osbuild-image-tests-*") + require.NoError(t, err, "error creating temporary store") + + defer func() { + err := os.RemoveAll(store) + require.NoError(t, err, "error removing temporary store") + }() + + for _, p := range cases { + t.Run(path.Base(p), func(t *testing.T) { + f, err := os.Open(p) + if err != nil { + t.Skipf("%s: cannot open test case: %#v", p, err) + } + + var testcase testcaseStruct + err = json.NewDecoder(f).Decode(&testcase) + require.NoErrorf(t, err, "%s: cannot decode test case", p) + + currentArch := common.CurrentArch() + if testcase.ComposeRequest.Arch != currentArch { + t.Skipf("the required arch is %s, the current arch is %s", testcase.ComposeRequest.Arch, currentArch) + } + + runTestcase(t, testcase, store) + }) + + } +} + +func TestImages(t *testing.T) { + cases := flag.Args() + // if no cases were specified, run the default set + if len(cases) == 0 { + var err error + cases, err = getAllCases() + require.NoError(t, err) + } + + runTests(t, cases) +} diff --git a/cmd/osbuild-image-tests/netns.go b/cmd/osbuild-image-tests/netns.go new file mode 100644 index 0000000..d7b9f0a --- /dev/null +++ b/cmd/osbuild-image-tests/netns.go @@ -0,0 +1,148 @@ +// +build integration + +package main + +import ( + "context" + "fmt" + "io/ioutil" + "log" + "os" + "os/exec" + "path" + "runtime" + "syscall" + + "golang.org/x/sys/unix" +) + +const netnsDir = "/var/run/netns" + +// Network namespace abstraction +type netNS string + +// newNetworkNamespace returns a new network namespace with a random +// name. The calling goroutine remains in the same namespace +// as before the call. +func newNetworkNamespace() (netNS, error) { + // This method needs to unshare the current thread. Go runtime can switch + // the goroutine to run on a different thread at any point, so we need + // to ensure that this method runs in the same thread for its whole + // lifetime. + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + _, err := os.Stat(netnsDir) + + if err != nil { + if os.IsNotExist(err) { + err := os.Mkdir(netnsDir, 0755) + if err != nil { + return "", fmt.Errorf("cannot create %s: %#v", netnsDir, err) + } + } else { + return "", fmt.Errorf("cannot stat %s: %#v", netnsDir, err) + } + } + + f, err := ioutil.TempFile(netnsDir, "osbuild-composer-namespace") + if err != nil { + return "", fmt.Errorf("cannot create a tempfile: %#v", err) + } + + // We want to remove the temporary file if the namespace initialization fails. + // The best method I could thought of is to have the following variable + // denoting if the initialization was successful. It is set to true right + // before the end of this function. + initOK := false + defer func() { + if !initOK { + err := os.Remove(f.Name()) + if err != nil { + log.Printf("cannot remove the temporary namespace: %#v", err) + } + } + }() + + oldNS, err := os.Open("/proc/self/ns/net") + if err != nil { + return "", fmt.Errorf("cannot open the current namespace: %#v", err) + } + + err = syscall.Unshare(syscall.CLONE_NEWNET) + if err != nil { + return "", fmt.Errorf("cannot unshare the network namespace") + } + defer func() { + err = unix.Setns(int(oldNS.Fd()), syscall.CLONE_NEWNET) + if err != nil { + // We cannot return to the original namespace. + // As we don't know nothing about affected threads, let's just + // quit immediately. + log.Fatalf("returning to the original namespace failed, quitting: %#v", err) + } + }() + + cmd := exec.Command("ip", "link", "set", "up", "dev", "lo") + cmd.Stderr = os.Stderr + cmd.Stdout = os.Stderr + err = cmd.Run() + if err != nil { + return "", fmt.Errorf("cannot set up a loopback device in the new namespace: %#v", err) + } + + cmd = exec.Command("mount", "-o", "bind", "/proc/self/ns/net", f.Name()) + cmd.Stderr = os.Stderr + cmd.Stdout = os.Stderr + err = cmd.Run() + if err != nil { + return "", fmt.Errorf("cannot bind mount the new namespace: %#v", err) + } + + ns := netNS(path.Base(f.Name())) + + // Initialization OK, do not delete the namespace file. + initOK = true + return ns, nil +} + +// NamespaceCommand returns an *exec.Cmd struct with the difference +// that it's prepended by "ip netns exec NAMESPACE_NAME" command, which +// runs the command in a namespaced environment. +func (n netNS) NamespacedCommand(name string, arg ...string) *exec.Cmd { + args := []string{"netns", "exec", string(n), name} + args = append(args, arg...) + return exec.Command("ip", args...) +} + +// NamespaceCommand returns an *exec.Cmd struct with the difference +// that it's prepended by "ip netns exec NAMESPACE_NAME" command, which +// runs the command in a namespaced environment. +func (n netNS) NamespacedCommandContext(ctx context.Context, name string, arg ...string) *exec.Cmd { + args := []string{"netns", "exec", string(n), name} + args = append(args, arg...) + return exec.CommandContext(ctx, "ip", args...) +} + +// Path returns the path to the namespace file +func (n netNS) Path() string { + return path.Join(netnsDir, string(n)) +} + +// Delete deletes the namespaces +func (n netNS) Delete() error { + cmd := exec.Command("umount", n.Path()) + cmd.Stderr = os.Stderr + cmd.Stdout = os.Stdout + err := cmd.Run() + if err != nil { + return fmt.Errorf("cannot unmount the network namespace: %#v", err) + } + + err = os.Remove(n.Path()) + if err != nil { + return fmt.Errorf("cannot delete the network namespace file: %#v", err) + } + + return nil +} diff --git a/cmd/osbuild-image-tests/openstacktest/openstack.go b/cmd/osbuild-image-tests/openstacktest/openstack.go new file mode 100644 index 0000000..8fdd7de --- /dev/null +++ b/cmd/osbuild-image-tests/openstacktest/openstack.go @@ -0,0 +1,133 @@ +// +build integration + +package openstacktest + +import ( + "fmt" + "os" + + "github.com/gophercloud/gophercloud" + "github.com/gophercloud/gophercloud/openstack" + "github.com/gophercloud/gophercloud/openstack/imageservice/v2/images" + "github.com/gophercloud/gophercloud/openstack/imageservice/v2/imagedata" + "github.com/gophercloud/gophercloud/openstack/compute/v2/servers" +) + +const WaitTimeout = 600 // in seconds + +func UploadImageToOpenStack(p *gophercloud.ProviderClient, imagePath string, imageName string) (*images.Image, error) { + client, err := openstack.NewImageServiceV2(p, gophercloud.EndpointOpts{ + Region: os.Getenv("OS_REGION_NAME"), + }) + if err != nil { + return nil, fmt.Errorf("Error creating ImageService client: %v", err) + } + + // create a new image which gives us the ID + image, err := images.Create(client, images.CreateOpts{ + Name: imageName, + DiskFormat: "qcow2", + ContainerFormat: "bare", + }).Extract() + if err != nil { + return image, fmt.Errorf("Creating image failed: %v", err) + } + + // then upload the actual binary data + imageData, err := os.Open(imagePath) + if err != nil { + return image, fmt.Errorf("Error opening %s: %v", imagePath, err) + } + defer imageData.Close() + + err = imagedata.Upload(client, image.ID, imageData).ExtractErr() + if err != nil { + return image, fmt.Errorf("Upload to OpenStack failed: %v", err) + } + + // wait for the status to change from Queued to Active + err = gophercloud.WaitFor(WaitTimeout, func() (bool, error) { + actual, err := images.Get(client, image.ID).Extract() + return actual.Status == images.ImageStatusActive, err + }) + if err != nil { + return image, fmt.Errorf("Waiting for image to become Active failed: %v", err) + } + + return image, nil +} + +func DeleteImageFromOpenStack(p *gophercloud.ProviderClient, imageUUID string) error { + client, err := openstack.NewImageServiceV2(p, gophercloud.EndpointOpts{ + Region: os.Getenv("OS_REGION_NAME"), + }) + if err != nil { + return fmt.Errorf("Error creating ImageService client: %v", err) + } + + err = images.Delete(client, imageUUID).ExtractErr() + if err != nil { + return fmt.Errorf("cannot delete the image: %v", err) + } + + return nil +} + +func WithBootedImageInOpenStack(p *gophercloud.ProviderClient, imageID, userData string, f func(address string) error) (retErr error) { + client, err := openstack.NewComputeV2(p, gophercloud.EndpointOpts{ + Region: os.Getenv("OS_REGION_NAME"), + }) + if err != nil { + return fmt.Errorf("Error creating Compute client: %v", err) + } + + server, err := servers.Create(client, servers.CreateOpts{ + Name: "osbuild-composer-vm-for-" + imageID, + FlavorRef: "77b8cf27-be16-40d9-95b1-81db4522be1e", // ci.m1.medium.ephemeral + Networks: []servers.Network{ // provider_net_cci_2 + servers.Network{UUID: "74e8faa7-87ba-41b2-a000-438013194814"}, + }, + ImageRef: imageID, + UserData: []byte(userData), + }).Extract() + if err != nil { + return fmt.Errorf("Cannot create instance: %v", err) + } + + // cleanup + defer func(){ + err := servers.ForceDelete(client, server.ID).ExtractErr() + if err != nil { + fmt.Printf("Force deleting instance %s failed: %v", server.ID, err) + return + } + }() + + // wait for the status to become Active + err = servers.WaitForStatus(client, server.ID, "ACTIVE", WaitTimeout) + if err != nil { + return fmt.Errorf("Waiting for instance %s to become Active failed: %v", server.ID, err) + } + + // get server details again to refresh the IP addresses + server, err = servers.Get(client, server.ID).Extract() + if err != nil { + return fmt.Errorf("Cannot get instance details: %v\n", err) + } + + // server.AccessIPv4 is empty so list all addresses and + // get the first fixed one. ssh should be equally happy with v4 or v6 + var fixedIP string + for _, networkAddresses := range server.Addresses["provider_net_cci_2"].([]interface{}) { + address := networkAddresses.(map[string]interface{}) + if address["OS-EXT-IPS:type"] == "fixed" { + fixedIP = address["addr"].(string) + break + } + } + if fixedIP == "" { + return fmt.Errorf("Cannot find IP address for instance %s", server.ID) + } + + return f(fixedIP) +} diff --git a/cmd/osbuild-image-tests/vmwaretest/vmware.go b/cmd/osbuild-image-tests/vmwaretest/vmware.go new file mode 100644 index 0000000..9c9a299 --- /dev/null +++ b/cmd/osbuild-image-tests/vmwaretest/vmware.go @@ -0,0 +1,245 @@ +// +build integration + +package vmwaretest + +import ( + "errors" + "fmt" + "io/ioutil" + "os" + "os/exec" + "path/filepath" + "strings" + + // importing the packages registers these cli commands + "github.com/vmware/govmomi/govc/cli" + _ "github.com/vmware/govmomi/govc/datastore" + _ "github.com/vmware/govmomi/govc/importx" + _ "github.com/vmware/govmomi/govc/vm" + _ "github.com/vmware/govmomi/govc/vm/guest" +) + +const WaitTimeout = 6000 // in seconds + +type AuthOptions struct { + Host string + Username string + Password string + Datacenter string + Cluster string + Network string + Datastore string + Folder string +} + +func AuthOptionsFromEnv() (*AuthOptions, error) { + host, hostExists := os.LookupEnv("GOVMOMI_URL") + username, userExists := os.LookupEnv("GOVMOMI_USERNAME") + password, pwdExists := os.LookupEnv("GOVMOMI_PASSWORD") + datacenter, dcExists := os.LookupEnv("GOVMOMI_DATACENTER") + cluster, clusterExists := os.LookupEnv("GOVMOMI_CLUSTER") + network, netExists := os.LookupEnv("GOVMOMI_NETWORK") + datastore, dsExists := os.LookupEnv("GOVMOMI_DATASTORE") + folder, folderExists := os.LookupEnv("GOVMOMI_FOLDER") + + // If only one/two of them are not set, then fail + if !hostExists { + return nil, errors.New("GOVMOMI_URL not set") + } + + if !userExists { + return nil, errors.New("GOVMOMI_USERNAME not set") + } + + if !pwdExists { + return nil, errors.New("GOVMOMI_PASSWORD not set") + } + + if !dcExists { + return nil, errors.New("GOVMOMI_DATACENTER not set") + } + + if !clusterExists { + return nil, errors.New("GOVMOMI_CLUSTER not set") + } + + if !netExists { + return nil, errors.New("GOVMOMI_NETWORK not set") + } + + if !dsExists { + return nil, errors.New("GOVMOMI_DATASTORE not set") + } + + if !folderExists { + return nil, errors.New("GOVMOMI_FOLDER not set") + } + + return &AuthOptions{ + Host: host, + Username: username, + Password: password, + Datacenter: datacenter, + Cluster: cluster, + Network: network, + Datastore: datastore, + Folder: folder, + }, nil +} + +func ImportImage(creds *AuthOptions, imagePath, imageName string) error { + args := []string{ + "import.vmdk", + fmt.Sprintf("-u=%s:%s@%s", creds.Username, creds.Password, creds.Host), + "-k=true", + fmt.Sprintf("-dc=%s", creds.Datacenter), + fmt.Sprintf("-ds=%s", creds.Datastore), + imagePath, + imageName, + } + retcode := cli.Run(args) + + if retcode != 0 { + return errors.New("importing vmdk failed") + } + return nil +} + +func DeleteImage(creds *AuthOptions, directoryName string) error { + retcode := cli.Run([]string{ + "datastore.rm", + "-f=true", + fmt.Sprintf("-u=%s:%s@%s", creds.Username, creds.Password, creds.Host), + "-k=true", + fmt.Sprintf("-dc=%s", creds.Datacenter), + fmt.Sprintf("-ds=%s", creds.Datastore), + directoryName + "*", // because vm.create creates another directory with _1 prefix + }) + + if retcode != 0 { + return errors.New("deleting directory failed") + } + return nil +} + +func runWithStdout(args []string) (string, int) { + oldStdout := os.Stdout + r, w, _ := os.Pipe() + os.Stdout = w + + retcode := cli.Run(args) + + w.Close() + out, _ := ioutil.ReadAll(r) + os.Stdout = oldStdout + + return strings.TrimSpace(string(out)), retcode +} + +func WithBootedImage(creds *AuthOptions, imagePath, imageName, publicKey string, f func(address string) error) (retErr error) { + vmdkBaseName := filepath.Base(imagePath) + + args := []string{ + "vm.create", + fmt.Sprintf("-u=%s:%s@%s", creds.Username, creds.Password, creds.Host), + "-k=true", + fmt.Sprintf("-dc=%s", creds.Datacenter), + fmt.Sprintf("-ds=%s", creds.Datastore), + fmt.Sprintf("-folder=%s", creds.Folder), + fmt.Sprintf("-net=%s", creds.Network), + "-m=2048", "-g=rhel8_64Guest", "-on=true", "-firmware=bios", + fmt.Sprintf("-disk=%s/%s", imageName, vmdkBaseName), + "--disk.controller=ide", + imageName, + } + retcode := cli.Run(args) + if retcode != 0 { + return errors.New("Creating VM from vmdk failed") + } + + defer func() { + args = []string{ + "vm.destroy", + fmt.Sprintf("-u=%s:%s@%s", creds.Username, creds.Password, creds.Host), + "-k=true", + imageName, + } + retcode := cli.Run(args) + + if retcode != 0 { + fmt.Printf("Deleting VM %s failed", imageName) + return + } + }() + + // note: by default this will wait/block until an IP address is returned + // note: using exec() instead of running the command b/c .Run() returns an int + args = []string{ + "vm.ip", + fmt.Sprintf("-u=%s:%s@%s", creds.Username, creds.Password, creds.Host), + "-k=true", + imageName, + } + ipAddress, retcode := runWithStdout(args) + + if retcode != 0 { + return errors.New("Getting IP address for VM failed") + } + + // Disabled b/c of https://github.com/vmware/govmomi/issues/2054 + // upload public key on the VM + //args = []string{ + // "guest.mkdir", + // fmt.Sprintf("-u=%s:%s@%s", creds.Username, creds.Password, creds.Host), + // "-k=true", + // fmt.Sprintf("-vm=%s", imageName), + // "-p", "/root/.ssh", + //} + //retcode = cli.Run(args) + //if retcode != 0 { + // return errors.New("mkdir /root/.ssh on VM failed") + //} + + //args = []string{ + // "guest.upload", + // fmt.Sprintf("-u=%s:%s@%s", creds.Username, creds.Password, creds.Host), + // "-k=true", + // fmt.Sprintf("-vm=%s", imageName), + // "-f=true", + // publicKey, // this is a file path + // "/root/.ssh/authorized_keys", + //} + //retcode = cli.Run(args) + //if retcode != 0 { + // return errors.New("Uploading public key to VM failed") + //} + + return f(ipAddress) +} + +// hard-coded SSH keys b/c we're having troubles uploading publicKey +// to the VM, see https://github.com/vmware/govmomi/issues/2054 +func WithSSHKeyPair(f func(privateKey, publicKey string) error) error { + public := "/usr/share/tests/osbuild-composer/keyring/id_rsa.pub" + private := "/usr/share/tests/osbuild-composer/keyring/id_rsa" + + return f(private, public) +} + +func ConvertToStreamOptimizedVmdk(imagePath string) (string, error) { + optimizedVmdk, err := ioutil.TempFile("/var/tmp", "osbuild-composer-stream-optimized-*.vmdk") + if err != nil { + return "", err + } + optimizedVmdk.Close() + + cmd := exec.Command( + "/usr/bin/qemu-img", "convert", "-O", "vmdk", "-o", "subformat=streamOptimized", + imagePath, optimizedVmdk.Name()) + err = cmd.Run() + if err != nil { + return "", err + } + + return optimizedVmdk.Name(), nil +} diff --git a/cmd/osbuild-koji/main.go b/cmd/osbuild-koji/main.go new file mode 100644 index 0000000..f26994e --- /dev/null +++ b/cmd/osbuild-koji/main.go @@ -0,0 +1,116 @@ +package main + +import ( + "flag" + "fmt" + "log" + "os" + "path" + "time" + + "github.com/google/uuid" + "github.com/osbuild/osbuild-composer/internal/upload/koji" +) + +func main() { + var server, user, password, name, version, release, arch, filename string + flag.StringVar(&server, "server", "", "url to API") + flag.StringVar(&user, "user", "", "koji username") + flag.StringVar(&password, "password", "", "koji password") + flag.StringVar(&name, "name", "", "image name") + flag.StringVar(&version, "version", "", "image verison") + flag.StringVar(&release, "release", "", "image release") + flag.StringVar(&arch, "arch", "", "image architecture") + flag.StringVar(&filename, "filename", "", "filename") + flag.Parse() + + id, err := uuid.NewRandom() + if err != nil { + println(err.Error()) + return + } + dir := fmt.Sprintf("osbuild-%v", id) + + file, err := os.Open(filename) + if err != nil { + println(err.Error()) + return + } + defer file.Close() + + k, err := koji.New(server) + if err != nil { + println(err.Error()) + return + } + + err = k.Login("osbuild", "osbuildpass") + if err != nil { + println(err.Error()) + return + } + defer func() { + err := k.Logout() + if err != nil { + log.Print("logging out of koji failed ", err) + } + }() + + hash, length, err := k.Upload(file, dir, path.Base(filename)) + if err != nil { + println(err.Error()) + return + } + + build := koji.Build{ + Name: name, + Version: version, + Release: release, + StartTime: time.Now().Unix(), + EndTime: time.Now().Unix(), + } + buildRoots := []koji.BuildRoot{ + { + ID: 1, + Host: koji.Host{ + Os: "RHEL8", + Arch: arch, + }, + ContentGenerator: koji.ContentGenerator{ + Name: "osbuild", + Version: "1", + }, + Container: koji.Container{ + Type: "nspawn", + Arch: arch, + }, + Tools: []koji.Tool{}, + Components: []koji.Component{}, + }, + } + output := []koji.Output{ + { + BuildRootID: 1, + Filename: path.Base(filename), + FileSize: length, + Arch: arch, + ChecksumType: "md5", + MD5: hash, + Type: "image", + Components: []koji.Component{}, + Extra: koji.OutputExtra{ + Image: koji.OutputExtraImageInfo{ + Arch: arch, + }, + }, + }, + } + + result, err := k.CGImport(build, buildRoots, output, dir) + if err != nil { + println(err.Error()) + return + } + + fmt.Printf("Success, build id: %d\n", result.BuildID) +} diff --git a/cmd/osbuild-pipeline/main.go b/cmd/osbuild-pipeline/main.go new file mode 100644 index 0000000..c221d4f --- /dev/null +++ b/cmd/osbuild-pipeline/main.go @@ -0,0 +1,165 @@ +package main + +import ( + "encoding/json" + "flag" + "fmt" + "io" + "io/ioutil" + "os" + "path" + + "github.com/osbuild/osbuild-composer/internal/distro/fedora31" + "github.com/osbuild/osbuild-composer/internal/distro/fedora32" + "github.com/osbuild/osbuild-composer/internal/distro/rhel8" + + "github.com/osbuild/osbuild-composer/internal/blueprint" + "github.com/osbuild/osbuild-composer/internal/distro" + "github.com/osbuild/osbuild-composer/internal/rpmmd" +) + +type repository struct { + BaseURL string `json:"baseurl,omitempty"` + Metalink string `json:"metalink,omitempty"` + MirrorList string `json:"mirrorlist,omitempty"` + GPGKey string `json:"gpgkey,omitempty"` + CheckGPG bool `json:"check_gpg,omitempty"` +} + +type composeRequest struct { + Distro string `json:"distro"` + Arch string `json:"arch"` + ImageType string `json:"image-type"` + Blueprint blueprint.Blueprint `json:"blueprint"` + Repositories []repository `json:"repositories"` +} + +type rpmMD struct { + BuildPackages []rpmmd.PackageSpec `json:"build-packages"` + Packages []rpmmd.PackageSpec `json:"packages"` + Checksums map[string]string `json:"checksums"` +} + +func main() { + var rpmmdArg bool + flag.BoolVar(&rpmmdArg, "rpmmd", false, "output rpmmd struct instead of pipeline manifest") + flag.Parse() + + // Path to composeRequet or '-' for stdin + composeRequestArg := flag.Arg(0) + + composeRequest := &composeRequest{} + if composeRequestArg != "" { + var reader io.Reader + if composeRequestArg == "-" { + reader = os.Stdin + } else { + var err error + reader, err = os.Open(composeRequestArg) + if err != nil { + panic("Could not open compose request: " + err.Error()) + } + } + file, err := ioutil.ReadAll(reader) + if err != nil { + panic("Could not read compose request: " + err.Error()) + } + err = json.Unmarshal(file, &composeRequest) + if err != nil { + panic("Could not parse blueprint: " + err.Error()) + } + } + + distros, err := distro.NewRegistry(fedora31.New(), fedora32.New(), rhel8.New()) + if err != nil { + panic(err) + } + + d := distros.GetDistro(composeRequest.Distro) + if d == nil { + _, _ = fmt.Fprintf(os.Stderr, "The provided distribution '%s' is not supported. Use one of these:\n", composeRequest.Distro) + for _, d := range distros.List() { + _, _ = fmt.Fprintln(os.Stderr, " *", d) + } + return + } + + arch, err := d.GetArch(composeRequest.Arch) + if err != nil { + fmt.Fprintf(os.Stderr, "The provided architecture '%s' is not supported by %s. Use one of these:\n", composeRequest.Arch, d.Name()) + for _, a := range d.ListArches() { + _, _ = fmt.Fprintln(os.Stderr, " *", a) + } + return + } + + imageType, err := arch.GetImageType(composeRequest.ImageType) + if err != nil { + fmt.Fprintf(os.Stderr, "The provided image type '%s' is not supported by %s for %s. Use one of these:\n", composeRequest.ImageType, d.Name(), arch.Name()) + for _, t := range arch.ListImageTypes() { + _, _ = fmt.Fprintln(os.Stderr, " *", t) + } + return + } + + repos := make([]rpmmd.RepoConfig, len(composeRequest.Repositories)) + for i, repo := range composeRequest.Repositories { + repos[i] = rpmmd.RepoConfig{ + Name: fmt.Sprintf("repo-%d", i), + BaseURL: repo.BaseURL, + Metalink: repo.Metalink, + MirrorList: repo.MirrorList, + GPGKey: repo.GPGKey, + CheckGPG: repo.CheckGPG, + } + } + + packages, excludePkgs := imageType.Packages(composeRequest.Blueprint) + + home, err := os.UserHomeDir() + if err != nil { + panic("os.UserHomeDir(): " + err.Error()) + } + + rpmmd := rpmmd.NewRPMMD(path.Join(home, ".cache/osbuild-composer/rpmmd"), "/usr/libexec/osbuild-composer/dnf-json") + packageSpecs, checksums, err := rpmmd.Depsolve(packages, excludePkgs, repos, d.ModulePlatformID(), arch.Name()) + if err != nil { + panic("Could not depsolve: " + err.Error()) + } + + buildPkgs := imageType.BuildPackages() + buildPackageSpecs, _, err := rpmmd.Depsolve(buildPkgs, nil, repos, d.ModulePlatformID(), arch.Name()) + if err != nil { + panic("Could not depsolve build packages: " + err.Error()) + } + + var bytes []byte + if rpmmdArg { + rpmMDInfo := rpmMD{ + BuildPackages: buildPackageSpecs, + Packages: packageSpecs, + Checksums: checksums, + } + bytes, err = json.Marshal(rpmMDInfo) + if err != nil { + panic(err) + } + } else { + manifest, err := imageType.Manifest(composeRequest.Blueprint.Customizations, + distro.ImageOptions{ + Size: imageType.Size(0), + }, + repos, + packageSpecs, + buildPackageSpecs) + if err != nil { + panic(err.Error()) + } + + bytes, err = json.Marshal(manifest) + if err != nil { + panic(err) + } + } + os.Stdout.Write(bytes) +} diff --git a/cmd/osbuild-store-dump/main.go b/cmd/osbuild-store-dump/main.go new file mode 100644 index 0000000..508e6fa --- /dev/null +++ b/cmd/osbuild-store-dump/main.go @@ -0,0 +1,184 @@ +// This fills and saves a store with more or less arbitrary data. It is meant to generate test stores as +// test data for testing upgrades to composer. +package main + +import ( + "os" + "path" + "time" + + "github.com/google/uuid" + "github.com/osbuild/osbuild-composer/internal/blueprint" + "github.com/osbuild/osbuild-composer/internal/distro" + "github.com/osbuild/osbuild-composer/internal/distro/fedora32" + "github.com/osbuild/osbuild-composer/internal/rpmmd" + "github.com/osbuild/osbuild-composer/internal/store" + "github.com/osbuild/osbuild-composer/internal/target" +) + +func getManifest(bp blueprint.Blueprint, t distro.ImageType, a distro.Arch, d distro.Distro, rpmmd rpmmd.RPMMD, repos []rpmmd.RepoConfig) distro.Manifest { + packages, excludePackages := t.Packages(bp) + pkgs, _, err := rpmmd.Depsolve(packages, excludePackages, repos, d.ModulePlatformID(), a.Name()) + if err != nil { + panic(err) + } + buildPkgs, _, err := rpmmd.Depsolve(t.BuildPackages(), nil, repos, d.ModulePlatformID(), a.Name()) + if err != nil { + panic(err) + } + manifest, err := t.Manifest(bp.Customizations, distro.ImageOptions{}, repos, pkgs, buildPkgs) + if err != nil { + panic(err) + } + + return manifest +} + +func main() { + cwd, err := os.Getwd() + if err != nil { + panic(err) + } + id1, err := uuid.NewRandom() + if err != nil { + panic(err) + } + id2, err := uuid.NewRandom() + if err != nil { + panic(err) + } + hostname := "my-host" + description := "Mostly harmless." + password := "password" + sshKey := "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + home := "/home/my-home" + shell := "/bin/true" + uid := 42 + gid := 42 + bp1 := blueprint.Blueprint{ + Name: "my-blueprint-1", + Description: "My first blueprint", + Packages: []blueprint.Package{ + { + Name: "tmux", + }, + }, + Groups: []blueprint.Group{ + { + Name: "core", + }, + }, + } + bp2 := blueprint.Blueprint{ + Name: "my-blueprint-2", + Description: "My second blueprint", + Version: "0.0.2", + Customizations: &blueprint.Customizations{ + Hostname: &hostname, + Kernel: &blueprint.KernelCustomization{ + Append: "debug", + }, + SSHKey: []blueprint.SSHKeyCustomization{ + { + User: "me", + Key: sshKey, + }, + }, + User: []blueprint.UserCustomization{ + { + Name: "myself", + Description: &description, + Password: &password, + Key: &sshKey, + Home: &home, + Shell: &shell, + Groups: []string{ + "wheel", + }, + UID: &uid, + GID: &gid, + }, + }, + }, + } + awsTarget := target.NewAWSTarget( + &target.AWSTargetOptions{ + Filename: "image.ami", + Region: "far-away-1", + AccessKeyID: "MyKey", + SecretAccessKey: "MySecret", + Bucket: "list", + Key: "image", + }, + ) + awsTarget.Uuid = id1 + awsTarget.ImageName = "My Image" + awsTarget.Created = time.Now() + + d := fedora32.New() + a, err := d.GetArch("x86_64") + if err != nil { + panic(err) + } + t1, err := a.GetImageType("qcow2") + if err != nil { + panic(err) + } + t2, err := a.GetImageType("fedora-iot-commit") + if err != nil { + panic(err) + } + allRepos, err := rpmmd.LoadRepositories([]string{cwd}, "fedora-32") + if err != nil { + panic(err) + } + repos := allRepos["x86_64"] + homeDir, err := os.UserHomeDir() + if err != nil { + panic("os.UserHomeDir(): " + err.Error()) + } + rpmmd := rpmmd.NewRPMMD(path.Join(homeDir, ".cache/osbuild-composer/rpmmd"), "/usr/libexec/osbuild-composer/dnf-json") + + s := store.New(&cwd, a, nil) + if s == nil { + panic("could not create store") + } + err = s.PushBlueprint(bp1, "message 1") + if err != nil { + panic(err) + } + err = s.PushBlueprint(bp1, "message 2") + if err != nil { + panic(err) + } + err = s.PushBlueprintToWorkspace(bp2) + if err != nil { + panic(err) + } + err = s.PushCompose(id1, + getManifest(bp2, t1, a, d, rpmmd, repos), + t1, + &bp2, + 0, + []*target.Target{ + awsTarget, + }, + id1, + ) + if err != nil { + panic(err) + } + err = s.PushCompose(id2, + getManifest(bp2, t2, a, d, rpmmd, repos), + t2, + &bp2, + 0, + []*target.Target{ + awsTarget, + }, + id2, + ) + if err != nil { + panic(err) + } +} diff --git a/cmd/osbuild-tests/main_test.go b/cmd/osbuild-tests/main_test.go new file mode 100644 index 0000000..315c8ee --- /dev/null +++ b/cmd/osbuild-tests/main_test.go @@ -0,0 +1,372 @@ +// +build integration + +package main + +import ( + "bytes" + "encoding/json" + "io/ioutil" + "log" + "os" + "os/exec" + "time" + + "github.com/BurntSushi/toml" + "github.com/google/uuid" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/osbuild/osbuild-composer/internal/blueprint" + "github.com/osbuild/osbuild-composer/internal/weldr" + + "testing" +) + +func TestComposeCommands(t *testing.T) { + // common setup + tmpdir := NewTemporaryWorkDir(t, "osbuild-tests-") + defer tmpdir.Close(t) + + bp := blueprint.Blueprint{ + Name: "empty", + Description: "Test blueprint in toml format", + Packages: []blueprint.Package{{Name: "bash", Version: "*"}}, + } + pushBlueprint(t, &bp) + defer deleteBlueprint(t, &bp) + + runComposer(t, "blueprints", "save", "empty") + _, err := os.Stat("empty.toml") + require.NoError(t, err, "Error accessing 'empty.toml: %v'", err) + + runComposer(t, "compose", "types") + runComposer(t, "compose", "status") + runComposer(t, "compose", "list") + runComposer(t, "compose", "list", "waiting") + runComposer(t, "compose", "list", "running") + runComposer(t, "compose", "list", "finished") + runComposer(t, "compose", "list", "failed") + + // Full integration tests + uuid := buildCompose(t, "empty", "qcow2") + defer deleteCompose(t, uuid) + + runComposer(t, "compose", "info", uuid.String()) + + runComposer(t, "compose", "metadata", uuid.String()) + _, err = os.Stat(uuid.String() + "-metadata.tar") + require.NoError(t, err, "'%s-metadata.tar' not found", uuid.String()) + defer os.Remove(uuid.String() + "-metadata.tar") + + runComposer(t, "compose", "results", uuid.String()) + _, err = os.Stat(uuid.String() + ".tar") + require.NoError(t, err, "'%s.tar' not found", uuid.String()) + defer os.Remove(uuid.String() + ".tar") + + // Just assert that result wasn't empty + result := runComposer(t, "compose", "log", uuid.String()) + require.NotNil(t, result) + result = runComposer(t, "compose", "log", uuid.String(), "1024") + require.NotNil(t, result) + + runComposer(t, "compose", "logs", uuid.String()) + _, err = os.Stat(uuid.String() + "-logs.tar") + require.NoError(t, err, "'%s-logs.tar' not found", uuid.String()) + defer os.Remove(uuid.String() + "-logs.tar") + + runComposer(t, "compose", "image", uuid.String()) + _, err = os.Stat(uuid.String() + "-disk.qcow2") + require.NoError(t, err, "'%s-disk.qcow2' not found", uuid.String()) + defer os.Remove(uuid.String() + "-disk.qcow2") + + // workers ask the composer every 15 seconds if a compose was canceled. + // Use 20 seconds here to be sure this is hit. + uuid = startCompose(t, "empty", "qcow2") + defer deleteCompose(t, uuid) + runComposer(t, "compose", "cancel", uuid.String()) + time.Sleep(20 * time.Second) + status := waitForCompose(t, uuid) + assert.Equal(t, "FAILED", status) + + // Check that reusing the cache works ok + uuid = buildCompose(t, "empty", "qcow2") + defer deleteCompose(t, uuid) +} + +func TestBlueprintCommands(t *testing.T) { + // common setup + tmpdir := NewTemporaryWorkDir(t, "osbuild-tests-") + defer tmpdir.Close(t) + + bp := blueprint.Blueprint{ + Name: "empty", + Description: "Test empty blueprint in toml format", + } + pushBlueprint(t, &bp) + defer deleteBlueprint(t, &bp) + + runComposer(t, "blueprints", "list") + runComposer(t, "blueprints", "show", "empty") + + runComposer(t, "blueprints", "changes", "empty") + runComposer(t, "blueprints", "diff", "empty", "NEWEST", "WORKSPACE") + + runComposer(t, "blueprints", "save", "empty") + _, err := os.Stat("empty.toml") + require.NoError(t, err, "'empty.toml' not found") + defer os.Remove("empty.toml") + + runComposer(t, "blueprints", "depsolve", "empty") + runComposer(t, "blueprints", "freeze", "empty") + runComposer(t, "blueprints", "freeze", "show", "empty") + runComposer(t, "blueprints", "freeze", "save", "empty") + _, err = os.Stat("empty.frozen.toml") + require.NoError(t, err, "'empty.frozen.toml' not found") + defer os.Remove("empty.frozen.toml") + + runComposer(t, "blueprints", "tag", "empty") + + // undo the latest commit we can find + var changes weldr.BlueprintsChangesV0 + rawReply := runComposerJSON(t, "blueprints", "changes", "empty") + err = json.Unmarshal(rawReply, &changes) + require.Nilf(t, err, "Error searching for commits to undo: %v", err) + runComposer(t, "blueprints", "undo", "empty", changes.BlueprintsChanges[0].Changes[0].Commit) + + runComposer(t, "blueprints", "workspace", "empty") +} + +func TestModulesCommands(t *testing.T) { + runComposer(t, "modules", "list") +} + +func TestProjectsCommands(t *testing.T) { + runComposer(t, "projects", "list") + runComposer(t, "projects", "info", "filesystem") + runComposer(t, "projects", "info", "filesystem", "kernel") +} + +func TestStatusCommands(t *testing.T) { + runComposer(t, "status", "show") +} + +func TestSourcesCommands(t *testing.T) { + sources_toml, err := ioutil.TempFile("", "SOURCES-*.TOML") + require.NoErrorf(t, err, "Could not create temporary file: %v", err) + defer os.Remove(sources_toml.Name()) + + _, err = sources_toml.Write([]byte(`id = "osbuild-test-addon-source" +name = "Testing sources add command" +url = "file://REPO-PATH" +type = "yum-baseurl" +proxy = "https://proxy-url/" +check_ssl = true +check_gpg = true +gpgkey_urls = ["https://url/path/to/gpg-key"] +`)) + require.NoError(t, err) + + runComposer(t, "sources", "list") + runComposer(t, "sources", "add", sources_toml.Name()) + runComposer(t, "sources", "info", "osbuild-test-addon-source") + runComposer(t, "sources", "change", sources_toml.Name()) + runComposer(t, "sources", "delete", "osbuild-test-addon-source") +} + +func buildCompose(t *testing.T, bpName string, outputType string) uuid.UUID { + uuid := startCompose(t, bpName, outputType) + status := waitForCompose(t, uuid) + logs := getLogs(t, uuid) + assert.NotEmpty(t, logs, "logs are empty after the build is finished/failed") + + if !assert.Equalf(t, "FINISHED", status, "Unexpected compose result: %s", status) { + log.Print("logs from the build: ", logs) + t.FailNow() + } + + return uuid +} + +func startCompose(t *testing.T, name, outputType string) uuid.UUID { + var reply struct { + BuildID uuid.UUID `json:"build_id"` + Status bool `json:"status"` + } + rawReply := runComposerJSON(t, "compose", "start", name, outputType) + err := json.Unmarshal(rawReply, &reply) + require.Nilf(t, err, "Unexpected reply: %v", err) + require.Truef(t, reply.Status, "Unexpected status %v", reply.Status) + + return reply.BuildID +} + +func deleteCompose(t *testing.T, id uuid.UUID) { + type deleteUUID struct { + ID uuid.UUID `json:"uuid"` + Status bool `json:"status"` + } + var reply struct { + IDs []deleteUUID `json:"uuids"` + Errors []interface{} `json:"errors"` + } + rawReply := runComposerJSON(t, "compose", "delete", id.String()) + err := json.Unmarshal(rawReply, &reply) + require.Nilf(t, err, "Unexpected reply: %v", err) + require.Zerof(t, len(reply.Errors), "Unexpected errors") + require.Equalf(t, 1, len(reply.IDs), "Unexpected number of UUIDs returned: %d", len(reply.IDs)) + require.Truef(t, reply.IDs[0].Status, "Unexpected status %v", reply.IDs[0].Status) +} + +func waitForCompose(t *testing.T, uuid uuid.UUID) string { + for { + status := getComposeStatus(t, uuid) + if status == "FINISHED" || status == "FAILED" { + return status + } + time.Sleep(time.Second) + } +} + +func getComposeStatus(t *testing.T, uuid uuid.UUID) string { + var reply struct { + QueueStatus string `json:"queue_status"` + } + rawReply := runComposerJSON(t, "compose", "info", uuid.String()) + err := json.Unmarshal(rawReply, &reply) + require.Nilf(t, err, "Unexpected reply: %v", err) + + return reply.QueueStatus +} + +func getLogs(t *testing.T, uuid uuid.UUID) string { + cmd := exec.Command("composer-cli", "compose", "log", uuid.String()) + cmd.Stderr = os.Stderr + stdoutReader, err := cmd.StdoutPipe() + require.NoError(t, err) + + err = cmd.Start() + require.NoError(t, err) + + var buffer bytes.Buffer + _, err = buffer.ReadFrom(stdoutReader) + require.NoError(t, err) + + err = cmd.Wait() + require.NoError(t, err) + + return buffer.String() +} + +func pushBlueprint(t *testing.T, bp *blueprint.Blueprint) { + tmpfile, err := ioutil.TempFile("", "osbuild-test-") + require.Nilf(t, err, "Could not create temporary file: %v", err) + defer os.Remove(tmpfile.Name()) + + err = toml.NewEncoder(tmpfile).Encode(bp) + require.Nilf(t, err, "Could not marshal blueprint TOML: %v", err) + err = tmpfile.Close() + require.Nilf(t, err, "Could not close toml file: %v", err) + + var reply struct { + Status bool `json:"status"` + } + rawReply := runComposerJSON(t, "blueprints", "push", tmpfile.Name()) + err = json.Unmarshal(rawReply, &reply) + require.Nilf(t, err, "Unexpected reply: %v", err) + require.Truef(t, reply.Status, "Unexpected status %v", reply.Status) +} + +func deleteBlueprint(t *testing.T, bp *blueprint.Blueprint) { + var reply struct { + Status bool `json:"status"` + } + rawReply := runComposerJSON(t, "blueprints", "delete", bp.Name) + err := json.Unmarshal(rawReply, &reply) + require.Nilf(t, err, "Unexpected reply: %v", err) + require.Truef(t, reply.Status, "Unexpected status %v", reply.Status) +} + +func runComposer(t *testing.T, command ...string) []byte { + cmd := exec.Command("composer-cli", command...) + stdout, err := cmd.StdoutPipe() + require.Nilf(t, err, "Could not create command: %v", err) + + err = cmd.Start() + require.Nilf(t, err, "Could not start command: %v", err) + + contents, err := ioutil.ReadAll(stdout) + require.NoError(t, err, "Could not read stdout from command") + + err = cmd.Wait() + require.NoErrorf(t, err, "Command failed: %v", err) + + return contents +} + +func runComposerJSON(t *testing.T, command ...string) json.RawMessage { + command = append([]string{"--json"}, command...) + contents := runComposer(t, command...) + + var result json.RawMessage + + if len(contents) != 0 { + err := json.Unmarshal(contents, &result) + if err != nil { + // We did not get JSON, try interpreting it as TOML + var data interface{} + err = toml.Unmarshal(contents, &data) + require.Nilf(t, err, "Could not parse output: %v", err) + buffer := bytes.Buffer{} + err = json.NewEncoder(&buffer).Encode(data) + require.Nilf(t, err, "Could not remarshal TOML to JSON: %v", err) + err = json.NewDecoder(&buffer).Decode(&result) + require.Nilf(t, err, "Could not decode the remarshalled JSON: %v", err) + } + } + + buffer := bytes.Buffer{} + encoder := json.NewEncoder(&buffer) + encoder.SetIndent("", " ") + err := encoder.Encode(result) + require.Nilf(t, err, "Could not remarshal the recevied JSON: %v", err) + + return result +} + +type TemporaryWorkDir struct { + OldWorkDir string + Path string +} + +// Creates a new temporary directory based on pattern and changes the current +// working directory to it. +// +// Example: +// d := NewTemporaryWorkDir(t, "foo-*") +// defer d.Close(t) +func NewTemporaryWorkDir(t *testing.T, pattern string) TemporaryWorkDir { + var d TemporaryWorkDir + var err error + + d.OldWorkDir, err = os.Getwd() + require.Nilf(t, err, "os.GetWd: %v", err) + + d.Path, err = ioutil.TempDir("", pattern) + require.Nilf(t, err, "ioutil.TempDir: %v", err) + + err = os.Chdir(d.Path) + require.Nilf(t, err, "os.ChDir: %v", err) + + return d +} + +// Change back to the previous working directory and removes the temporary one. +func (d *TemporaryWorkDir) Close(t *testing.T) { + var err error + + err = os.Chdir(d.OldWorkDir) + require.Nilf(t, err, "os.ChDir: %v", err) + + err = os.RemoveAll(d.Path) + require.Nilf(t, err, "os.RemoveAll: %v", err) +} diff --git a/cmd/osbuild-upload-aws/main.go b/cmd/osbuild-upload-aws/main.go new file mode 100644 index 0000000..7bc132b --- /dev/null +++ b/cmd/osbuild-upload-aws/main.go @@ -0,0 +1,49 @@ +package main + +import ( + "flag" + "fmt" + + "github.com/aws/aws-sdk-go/aws" + "github.com/osbuild/osbuild-composer/internal/upload/awsupload" +) + +func main() { + var accessKeyID string + var secretAccessKey string + var region string + var bucketName string + var keyName string + var filename string + var imageName string + flag.StringVar(&accessKeyID, "access-key-id", "", "access key ID") + flag.StringVar(&secretAccessKey, "secret-access-key", "", "secret access key") + flag.StringVar(®ion, "region", "", "target region") + flag.StringVar(&bucketName, "bucket", "", "target S3 bucket name") + flag.StringVar(&keyName, "key", "", "target S3 key name") + flag.StringVar(&filename, "image", "", "image file to upload") + flag.StringVar(&imageName, "name", "", "AMI name") + flag.Parse() + + a, err := awsupload.New(region, accessKeyID, secretAccessKey) + if err != nil { + println(err.Error()) + return + } + + uploadOutput, err := a.Upload(filename, bucketName, keyName) + if err != nil { + println(err.Error()) + return + } + + fmt.Printf("file uploaded to %s\n", aws.StringValue(&uploadOutput.Location)) + + ami, err := a.Register(imageName, bucketName, keyName) + if err != nil { + println(err.Error()) + return + } + + fmt.Printf("AMI registered: %s\n", aws.StringValue(ami)) +} diff --git a/cmd/osbuild-upload-azure/main.go b/cmd/osbuild-upload-azure/main.go new file mode 100644 index 0000000..a1be472 --- /dev/null +++ b/cmd/osbuild-upload-azure/main.go @@ -0,0 +1,51 @@ +package main + +import ( + "flag" + "fmt" + "os" + "path" + + "github.com/osbuild/osbuild-composer/internal/upload/azure" +) + +func checkStringNotEmpty(variable string, errorMessage string) { + if variable == "" { + fmt.Fprintln(os.Stderr, errorMessage) + flag.Usage() + os.Exit(1) + } +} + +func main() { + var storageAccount string + var storageAccessKey string + var fileName string + var containerName string + var threads int + flag.StringVar(&storageAccount, "storage-account", "", "Azure storage account (mandatory)") + flag.StringVar(&storageAccessKey, "storage-access-key", "", "Azure storage access key (mandatory)") + flag.StringVar(&fileName, "image", "", "image to upload (mandatory)") + flag.StringVar(&containerName, "container", "", "name of storage container (see Azure docs for explanation, mandatory)") + flag.IntVar(&threads, "threads", 16, "number of threads for parallel upload") + flag.Parse() + + checkStringNotEmpty(storageAccount, "You need to specify storage account") + checkStringNotEmpty(storageAccessKey, "You need to specify storage access key") + checkStringNotEmpty(fileName, "You need to specify image file") + checkStringNotEmpty(containerName, "You need to specify container name") + + fmt.Println("Image to upload is:", fileName) + + err := azure.UploadImage(azure.Credentials{ + StorageAccount: storageAccount, + StorageAccessKey: storageAccessKey, + }, azure.ImageMetadata{ + ImageName: path.Base(fileName), + ContainerName: containerName, + }, fileName, threads) + + if err != nil { + fmt.Println("Error: ", err) + } +} diff --git a/cmd/osbuild-worker/main.go b/cmd/osbuild-worker/main.go new file mode 100644 index 0000000..1913f06 --- /dev/null +++ b/cmd/osbuild-worker/main.go @@ -0,0 +1,306 @@ +package main + +import ( + "context" + "crypto/tls" + "crypto/x509" + "errors" + "flag" + "fmt" + "io" + "io/ioutil" + "log" + "os" + "os/exec" + "path" + "time" + + "github.com/google/uuid" + "github.com/osbuild/osbuild-composer/internal/common" + "github.com/osbuild/osbuild-composer/internal/target" + "github.com/osbuild/osbuild-composer/internal/upload/awsupload" + "github.com/osbuild/osbuild-composer/internal/upload/azure" + "github.com/osbuild/osbuild-composer/internal/worker" +) + +type connectionConfig struct { + CACertFile string + ClientKeyFile string + ClientCertFile string +} + +func createTLSConfig(config *connectionConfig) (*tls.Config, error) { + caCertPEM, err := ioutil.ReadFile(config.CACertFile) + if err != nil { + return nil, err + } + + roots := x509.NewCertPool() + ok := roots.AppendCertsFromPEM(caCertPEM) + if !ok { + return nil, errors.New("failed to append root certificate") + } + + cert, err := tls.LoadX509KeyPair(config.ClientCertFile, config.ClientKeyFile) + if err != nil { + return nil, err + } + + return &tls.Config{ + RootCAs: roots, + Certificates: []tls.Certificate{cert}, + }, nil +} + +type TargetsError struct { + Errors []error +} + +func (e *TargetsError) Error() string { + errString := fmt.Sprintf("%d target(s) errored:\n", len(e.Errors)) + + for _, err := range e.Errors { + errString += err.Error() + "\n" + } + + return errString +} + +func openAsStreamOptimizedVmdk(imagePath string) (*os.File, error) { + newPath := imagePath + ".stream" + cmd := exec.Command( + "/usr/bin/qemu-img", "convert", "-O", "vmdk", "-o", "subformat=streamOptimized", + imagePath, newPath) + err := cmd.Run() + if err != nil { + return nil, err + } + f, err := os.Open(newPath) + if err != nil { + return nil, err + } + err = os.Remove(newPath) + if err != nil { + return nil, err + } + return f, err +} + +func RunJob(job *worker.Job, store string, uploadFunc func(uuid.UUID, string, io.Reader) error) (*common.ComposeResult, error) { + outputDirectory, err := ioutil.TempDir("/var/tmp", "osbuild-worker-*") + if err != nil { + return nil, fmt.Errorf("error creating temporary output directory: %v", err) + } + defer func() { + err := os.RemoveAll(outputDirectory) + if err != nil { + log.Printf("Error removing temporary output directory (%s): %v", outputDirectory, err) + } + }() + + result, err := RunOSBuild(job.Manifest, store, outputDirectory, os.Stderr) + if err != nil { + return nil, err + } + + var r []error + + for _, t := range job.Targets { + switch options := t.Options.(type) { + case *target.LocalTargetOptions: + var f *os.File + imagePath := path.Join(outputDirectory, options.Filename) + if options.StreamOptimized { + f, err = openAsStreamOptimizedVmdk(imagePath) + if err != nil { + r = append(r, err) + continue + } + } else { + f, err = os.Open(imagePath) + if err != nil { + r = append(r, err) + continue + } + } + + err = uploadFunc(job.Id, options.Filename, f) + if err != nil { + r = append(r, err) + continue + } + + case *target.AWSTargetOptions: + + a, err := awsupload.New(options.Region, options.AccessKeyID, options.SecretAccessKey) + if err != nil { + r = append(r, err) + continue + } + + if options.Key == "" { + options.Key = job.Id.String() + } + + _, err = a.Upload(path.Join(outputDirectory, options.Filename), options.Bucket, options.Key) + if err != nil { + r = append(r, err) + continue + } + + /* TODO: communicate back the AMI */ + _, err = a.Register(t.ImageName, options.Bucket, options.Key) + if err != nil { + r = append(r, err) + continue + } + case *target.AzureTargetOptions: + + credentials := azure.Credentials{ + StorageAccount: options.StorageAccount, + StorageAccessKey: options.StorageAccessKey, + } + metadata := azure.ImageMetadata{ + ContainerName: options.Container, + ImageName: t.ImageName, + } + + const azureMaxUploadGoroutines = 4 + err := azure.UploadImage( + credentials, + metadata, + path.Join(outputDirectory, options.Filename), + azureMaxUploadGoroutines, + ) + + if err != nil { + r = append(r, err) + continue + } + default: + r = append(r, fmt.Errorf("invalid target type")) + } + } + + err = os.RemoveAll(outputDirectory) + if err != nil { + log.Printf("Error removing osbuild output directory (%s): %v", outputDirectory, err) + } + + if len(r) > 0 { + return result, &TargetsError{r} + } + + return result, nil +} + +// Regularly ask osbuild-composer if the compose we're currently working on was +// canceled and exit the process if it was. +// It would be cleaner to kill the osbuild process using (`exec.CommandContext` +// or similar), but osbuild does not currently support this. Exiting here will +// make systemd clean up the whole cgroup and restart this service. +func WatchJob(ctx context.Context, client *worker.Client, job *worker.Job) { + for { + select { + case <-time.After(15 * time.Second): + if client.JobCanceled(job) { + log.Println("Job was canceled. Exiting.") + os.Exit(0) + } + case <-ctx.Done(): + return + } + } +} + +func main() { + var unix bool + flag.BoolVar(&unix, "unix", false, "Interpret 'address' as a path to a unix domain socket instead of a network address") + + flag.Usage = func() { + fmt.Fprintf(flag.CommandLine.Output(), "Usage: %s [-unix] address\n", os.Args[0]) + flag.PrintDefaults() + os.Exit(0) + } + + flag.Parse() + + address := flag.Arg(0) + if address == "" { + flag.Usage() + } + + cacheDirectory, ok := os.LookupEnv("CACHE_DIRECTORY") + if !ok { + log.Fatal("CACHE_DIRECTORY is not set. Is the service file missing CacheDirectory=?") + } + store := path.Join(cacheDirectory, "osbuild-store") + + var client *worker.Client + if unix { + client = worker.NewClientUnix(address) + } else { + conf, err := createTLSConfig(&connectionConfig{ + CACertFile: "/etc/osbuild-composer/ca-crt.pem", + ClientKeyFile: "/etc/osbuild-composer/worker-key.pem", + ClientCertFile: "/etc/osbuild-composer/worker-crt.pem", + }) + if err != nil { + log.Fatalf("Error creating TLS config: %v", err) + } + + client = worker.NewClient(address, conf) + } + + for { + fmt.Println("Waiting for a new job...") + job, err := client.AddJob() + if err != nil { + log.Fatal(err) + } + + fmt.Printf("Running job %s\n", job.Id) + + ctx, cancel := context.WithCancel(context.Background()) + go WatchJob(ctx, client, job) + + var status common.ImageBuildState + result, err := RunJob(job, store, client.UploadImage) + if err != nil { + log.Printf(" Job failed: %v", err) + status = common.IBFailed + + // If the error comes from osbuild, retrieve the result + if osbuildError, ok := err.(*OSBuildError); ok { + result = osbuildError.Result + } + + // Ensure we always have a non-nil result, composer doesn't like nils. + // This can happen in cases when OSBuild crashes and doesn't produce + // a meaningful output. E.g. when the machine runs of disk space. + if result == nil { + result = &common.ComposeResult{ + Success: false, + } + } + + // set the success to false on every error. This is hacky but composer + // currently relies only on this flag to decide whether a compose was + // successful. There's no different way how to inform composer that + // e.g. an upload fail. Therefore, this line reuses the osbuild success + // flag to indicate all error kinds. + result.Success = false + } else { + log.Printf(" 🎉 Job completed successfully: %s", job.Id) + status = common.IBFinished + } + + // signal to WatchJob() that it can stop watching + cancel() + + err = client.UpdateJob(job, status, result) + if err != nil { + log.Fatalf("Error reporting job result: %v", err) + } + } +} diff --git a/cmd/osbuild-worker/osbuild.go b/cmd/osbuild-worker/osbuild.go new file mode 100644 index 0000000..bca387d --- /dev/null +++ b/cmd/osbuild-worker/osbuild.go @@ -0,0 +1,68 @@ +package main + +import ( + "encoding/json" + "fmt" + "io" + "os/exec" + + "github.com/osbuild/osbuild-composer/internal/common" + "github.com/osbuild/osbuild-composer/internal/distro" +) + +type OSBuildError struct { + Message string + Result *common.ComposeResult +} + +func (e *OSBuildError) Error() string { + return e.Message +} + +func RunOSBuild(manifest distro.Manifest, store, outputDirectory string, errorWriter io.Writer) (*common.ComposeResult, error) { + cmd := exec.Command( + "osbuild", + "--store", store, + "--output-directory", outputDirectory, + "--json", "-", + ) + cmd.Stderr = errorWriter + + stdin, err := cmd.StdinPipe() + if err != nil { + return nil, fmt.Errorf("error setting up stdin for osbuild: %v", err) + } + + stdout, err := cmd.StdoutPipe() + if err != nil { + return nil, fmt.Errorf("error setting up stdout for osbuild: %v", err) + } + + err = cmd.Start() + if err != nil { + return nil, fmt.Errorf("error starting osbuild: %v", err) + } + + err = json.NewEncoder(stdin).Encode(manifest) + if err != nil { + return nil, fmt.Errorf("error encoding osbuild pipeline: %v", err) + } + // FIXME: handle or comment this possible error + _ = stdin.Close() + + var result common.ComposeResult + err = json.NewDecoder(stdout).Decode(&result) + if err != nil { + return nil, fmt.Errorf("error decoding osbuild output: %#v", err) + } + + err = cmd.Wait() + if err != nil { + return nil, &OSBuildError{ + Message: fmt.Sprintf("running osbuild failed: %v", err), + Result: &result, + } + } + + return &result, nil +} diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 0000000..8e84e86 --- /dev/null +++ b/codecov.yml @@ -0,0 +1,9 @@ +coverage: + status: + patch: no + project: + default: + threshold: 5% +codecov: + require_ci_to_pass: no +comment: no diff --git a/distribution/osbuild-composer.conf b/distribution/osbuild-composer.conf new file mode 100644 index 0000000..26912fd --- /dev/null +++ b/distribution/osbuild-composer.conf @@ -0,0 +1,2 @@ +u _osbuild-composer - "OSBuild Composer user" +g weldr - diff --git a/distribution/osbuild-composer.service b/distribution/osbuild-composer.service new file mode 100644 index 0000000..c66f77c --- /dev/null +++ b/distribution/osbuild-composer.service @@ -0,0 +1,21 @@ +[Unit] +Description=OSBuild Composer +After=multi-user.target +Requires=osbuild-composer.socket +Wants=osbuild-worker@1.service + +[Service] +Type=simple +ExecStart=/usr/libexec/osbuild-composer/osbuild-composer +CacheDirectory=osbuild-composer +StateDirectory=osbuild-composer +WorkingDirectory=/usr/libexec/osbuild-composer/ +User=_osbuild-composer +Restart=on-failure + +# systemd >= 240 sets this, but osbuild-composer runs on earlier versions +Environment="CACHE_DIRECTORY=/var/cache/osbuild-composer" +Environment="STATE_DIRECTORY=/var/lib/osbuild-composer" + +[Install] +WantedBy=multi-user.target diff --git a/distribution/osbuild-composer.socket b/distribution/osbuild-composer.socket new file mode 100644 index 0000000..aa38749 --- /dev/null +++ b/distribution/osbuild-composer.socket @@ -0,0 +1,11 @@ +[Unit] +Description=OSBuild Composer API sockets + +[Socket] +ListenStream=/run/weldr/api.socket +ListenStream=/run/osbuild-composer/job.socket +SocketGroup=weldr +SocketMode=660 + +[Install] +WantedBy=sockets.target diff --git a/distribution/osbuild-remote-worker.socket b/distribution/osbuild-remote-worker.socket new file mode 100644 index 0000000..6753ec3 --- /dev/null +++ b/distribution/osbuild-remote-worker.socket @@ -0,0 +1,9 @@ +[Unit] +Description=OSBuild Composer API sockets + +[Socket] +Service=osbuild-composer.service +ListenStream=8700 + +[Install] +WantedBy=sockets.target diff --git a/distribution/osbuild-remote-worker@.service b/distribution/osbuild-remote-worker@.service new file mode 100644 index 0000000..0994e29 --- /dev/null +++ b/distribution/osbuild-remote-worker@.service @@ -0,0 +1,15 @@ +[Unit] +Description=OSBuild Composer Remote Worker (%i) +After=multi-user.target + +[Service] +Type=simple +PrivateTmp=true +ExecStart=/usr/libexec/osbuild-composer/osbuild-worker %i +Restart=on-failure +RestartSec=10s +CPUSchedulingPolicy=batch +IOSchedulingClass=idle +CacheDirectory=osbuild-worker +# systemd >= 240 sets this, but osbuild-worker runs on earlier versions +Environment="CACHE_DIRECTORY=/var/cache/osbuild-worker" diff --git a/distribution/osbuild-worker@.service b/distribution/osbuild-worker@.service new file mode 100644 index 0000000..b06cdb8 --- /dev/null +++ b/distribution/osbuild-worker@.service @@ -0,0 +1,19 @@ +[Unit] +Description=OSBuild Composer Worker (%i) +Requires=osbuild-composer.socket +After=multi-user.target osbuild-composer.socket + +[Service] +Type=simple +PrivateTmp=true +ExecStart=/usr/libexec/osbuild-composer/osbuild-worker -unix /run/osbuild-composer/job.socket +Restart=always +RestartSec=1s +CPUSchedulingPolicy=batch +IOSchedulingClass=idle +CacheDirectory=osbuild-worker +# systemd >= 240 sets this, but osbuild-worker runs on earlier versions +Environment="CACHE_DIRECTORY=/var/cache/osbuild-worker" + +[Install] +WantedBy=osbuild-composer.service diff --git a/dnf-json b/dnf-json new file mode 100755 index 0000000..c70ce86 --- /dev/null +++ b/dnf-json @@ -0,0 +1,200 @@ +#!/usr/bin/python3 + +import datetime +import dnf +import hashlib +import hawkey +import json +import sys +import tempfile + +DNF_ERROR_EXIT_CODE = 10 + + +def timestamp_to_rfc3339(timestamp): + d = datetime.datetime.utcfromtimestamp(package.buildtime) + return d.strftime('%Y-%m-%dT%H:%M:%SZ') + + +def dnfrepo(desc, parent_conf=None): + """Makes a dnf.repo.Repo out of a JSON repository description""" + + repo = dnf.repo.Repo(desc["id"], parent_conf) + + if "baseurl" in desc: + repo.baseurl = desc["baseurl"] + elif "metalink" in desc: + repo.metalink = desc["metalink"] + elif "mirrorlist" in desc: + repo.mirrorlist = desc["mirrorlist"] + else: + assert False + + if desc.get("ignoressl", False): + repo.sslverify = False + if "sslcacert" in desc: + repo.sslcacert = desc["sslcacert"] + if "sslclientkey" in desc: + repo.sslclientkey = desc["sslclientkey"] + if "sslclientcert" in desc: + repo.sslclientcert = desc["sslclientcert"] + + # In dnf, the default metadata expiration time is 48 hours. However, + # some repositories never expire the metadata, and others expire it much + # sooner than that. Therefore we must make this configurable. If nothing + # is provided, we default to never expiring the metadata, as hardcoding + # some arbitrary does not seem very helpful. + repo.metadata_expire = desc.get("metadata_expire", "-1") + + return repo + + +def create_base(repos, module_platform_id, persistdir, cachedir, arch): + base = dnf.Base() + + # Enable fastestmirror to ensure we choose the fastest mirrors for + # downloading metadata (when depsolving) and downloading packages. + base.conf.fastestmirror = True + + # Try another mirror if it takes longer than 5 seconds to connect. + base.conf.timeout = 5 + + # Set the rest of the dnf configuration. + base.conf.module_platform_id = module_platform_id + base.conf.config_file_path = "/dev/null" + base.conf.persistdir = persistdir + base.conf.cachedir = cachedir + base.conf.substitutions['arch'] = arch + base.conf.substitutions['basearch'] = dnf.rpm.basearch(arch) + + for repo in repos: + base.repos.add(dnfrepo(repo, base.conf)) + + base.fill_sack(load_system_repo=False) + return base + + +def exit_with_dnf_error(kind: str, reason: str): + json.dump({"kind": kind, "reason": reason}, sys.stdout) + sys.exit(DNF_ERROR_EXIT_CODE) + + +def repo_checksums(base): + checksums = {} + for repo in base.repos.iter_enabled(): + # Uses the same algorithm as libdnf to find cache dir: + # https://github.com/rpm-software-management/libdnf/blob/master/libdnf/repo/Repo.cpp#L1288 + if repo.metalink: + url = repo.metalink + elif repo.mirrorlist: + url = repo.mirrorlist + elif repo.baseurl: + url = repo.baseurl[0] + else: + assert False + + digest = hashlib.sha256(url.encode()).hexdigest()[:16] + + repomd_file = f"{repo.id}-{digest}/repodata/repomd.xml" + with open(f"{base.conf.cachedir}/{repomd_file}", "rb") as f: + repomd = f.read() + + checksums[repo.id] = "sha256:" + hashlib.sha256(repomd).hexdigest() + + return checksums + + +call = json.load(sys.stdin) +command = call["command"] +arguments = call["arguments"] +repos = arguments.get("repos", {}) +arch = arguments["arch"] +cachedir = arguments["cachedir"] +module_platform_id = arguments["module_platform_id"] + +with tempfile.TemporaryDirectory() as persistdir: + try: + base = create_base( + repos, + module_platform_id, + persistdir, + cachedir, + arch + ) + except dnf.exceptions.Error as e: + exit_with_dnf_error( + type(e).__name__, + f"Error occurred when setting up repo: {e}" + ) + + if command == "dump": + packages = [] + for package in base.sack.query().available(): + packages.append({ + "name": package.name, + "summary": package.summary, + "description": package.description, + "url": package.url, + "epoch": package.epoch, + "version": package.version, + "release": package.release, + "arch": package.arch, + "buildtime": timestamp_to_rfc3339(package.buildtime), + "license": package.license + }) + json.dump({ + "checksums": repo_checksums(base), + "packages": packages + }, sys.stdout) + + elif command == "depsolve": + errors = [] + + try: + base.install_specs( + arguments["package-specs"], + exclude=arguments.get("exclude-specs", []) + ) + except dnf.exceptions.MarkingErrors as e: + exit_with_dnf_error( + "MarkingErrors", + f"Error occurred when marking packages for installation: {e}" + ) + + try: + base.resolve() + except dnf.exceptions.DepsolveError as e: + exit_with_dnf_error( + "DepsolveError", + ( + "There was a problem depsolving " + f"{arguments['package-specs']}: {e}" + ) + ) + + dependencies = [] + for tsi in base.transaction: + # Avoid using the install_set() helper, as it does not guarantee + # a stable order + if tsi.action not in dnf.transaction.FORWARD_ACTIONS: + continue + package = tsi.pkg + + dependencies.append({ + "name": package.name, + "epoch": package.epoch, + "version": package.version, + "release": package.release, + "arch": package.arch, + "repo_id": package.reponame, + "path": package.relativepath, + "remote_location": package.remote_location(), + "checksum": ( + f"{hawkey.chksum_name(package.chksum[0])}:" + f"{package.chksum[1].hex()}" + ) + }) + json.dump({ + "checksums": repo_checksums(base), + "dependencies": dependencies + }, sys.stdout) diff --git a/docs/errors.md b/docs/errors.md new file mode 100644 index 0000000..f9b9520 --- /dev/null +++ b/docs/errors.md @@ -0,0 +1,27 @@ +# Error Handling + +## When to Panic + +Always use `panic` for errors that can only happen when other code in +*osbuild-composer* is wrong (also know as *programmer error*). This way, we +catch these kinds of errors in unit tests while developing. + +Since only developers interact with these errors, a stacktrace including the +error is all that's necessary. Don't include an additional message. + +For example, Go's `json.Marshal` can fail when receiving values that cannot be +marshaled. However, when passing a known struct, we know it cannot fail: + +```golang +bytes, err := json.Marshal(); +if err != nil { + panic(err) +} +``` + +Some packages have functions prefixed with `Must`, which `panic()` on error. +Use these when possible to save the error check: + +```golang +re := regexp.MustCompile("v[0-9]") +``` diff --git a/docs/osbuild-composer-cloud.svg b/docs/osbuild-composer-cloud.svg new file mode 100644 index 0000000..2cd0716 --- /dev/null +++ b/docs/osbuild-composer-cloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/osbuild-composer-koji.svg b/docs/osbuild-composer-koji.svg new file mode 100644 index 0000000..15844eb --- /dev/null +++ b/docs/osbuild-composer-koji.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/osbuild-composer.7.rst b/docs/osbuild-composer.7.rst new file mode 100644 index 0000000..d856290 --- /dev/null +++ b/docs/osbuild-composer.7.rst @@ -0,0 +1,77 @@ +================ +osbuild-composer +================ + +------------------------ +OSBuild Composer Service +------------------------ + +:Manual section: 7 +:Manual group: Miscellaneous + +DESCRIPTION +=========== + +The composer project is a set of HTTP services for composing operating system +images. It builds on the pipeline execution engine of *osbuild* [#osbuild]_ and +defines its own class of images that it supports building. + +Multiple APIs are available to access a composer service. This includes +support for the *lorax-composer* [#lorax-github]_ API, and as +such can serve as drop-in replacement for lorax-composer. + +You can control a composer instance either directly via the provided APIs, or +through higher-level user-interfaces from external projects. This, for +instance, includes a *Cockpit Module* [#cockpit-composer]_ or using the +*composer-cli* [#composer-cli]_ command-line tool. + +Frontends +--------- + +*Composer* does not ship with frontends itself. However, several external +frontends for *Composer* already exist. These include: + +**Cockpit Composer** + This module for *Cockpit* [#cockpit]_ allows a great level of control of a + *Composer* instance running on a cockpit-managed machine. + +**Composer CLI** + This command-line tool originated in the *lorax* [#lorax-github]_ project, + but can be used with *Composer* just as well. + +RUNNING +======= + +To deploy a composer instance, all you need is to + + | + | # systemctl start osbuild-composer.socket + | + +Now you can access the service using `composer-cli`, for example: + + | + | # composer-cli status show + | + +or using *Cockpit* with the *Cockpit Composer* module from a +browser: `http://localhost:9090` + +SEE ALSO +======== + +``osbuild``\(1), ``osbuild-manifest``\(5) + +NOTES +===== + +.. [#osbuild] OSBuild: + https://www.osbuild.org +.. [#lorax-github] Lorax Composer: + https://github.com/weldr/lorax +.. [#cockpit-composer] Cockpit Composer: + https://github.com/osbuild/cockpit-composer +.. [#composer-cli] Composer CLI: + https://weldr.io/lorax/composer-cli.html +.. [#cockpit] Cockpit Project: + https://www.cockpit-project.org/ diff --git a/docs/osbuild-composer.svg b/docs/osbuild-composer.svg new file mode 100644 index 0000000..afccaf9 --- /dev/null +++ b/docs/osbuild-composer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..c87978a --- /dev/null +++ b/go.mod @@ -0,0 +1,27 @@ +module github.com/osbuild/osbuild-composer + +go 1.12 + +require ( + github.com/Azure/azure-sdk-for-go v41.3.0+incompatible + github.com/Azure/azure-storage-blob-go v0.8.0 + github.com/Azure/go-autorest/autorest v0.10.0 // indirect + github.com/Azure/go-autorest/autorest/azure/auth v0.4.2 + github.com/Azure/go-autorest/autorest/to v0.3.0 // indirect + github.com/Azure/go-autorest/autorest/validation v0.2.0 // indirect + github.com/BurntSushi/toml v0.3.1 + github.com/aws/aws-sdk-go v1.25.37 + github.com/coreos/go-semver v0.3.0 + github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f + github.com/gobwas/glob v0.2.3 + github.com/google/go-cmp v0.3.1 + github.com/google/uuid v1.1.1 + github.com/gophercloud/gophercloud v0.11.0 + github.com/julienschmidt/httprouter v1.2.0 + github.com/kolo/xmlrpc v0.0.0-20190909154602-56d5ec7c422e + github.com/pkg/errors v0.9.1 // indirect + github.com/stretchr/testify v1.4.0 + github.com/vmware/govmomi v0.23.0 + golang.org/x/net v0.0.0-20200202094626-16171245cfb2 // indirect + golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4 +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..6799ff0 --- /dev/null +++ b/go.sum @@ -0,0 +1,119 @@ +github.com/Azure/azure-pipeline-go v0.2.1 h1:OLBdZJ3yvOn2MezlWvbrBMTEUQC72zAftRZOMdj5HYo= +github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= +github.com/Azure/azure-sdk-for-go v41.3.0+incompatible h1:W5px0x53aa47nmIAuF1XWR1ZzFuUnkJBGUuzHnNp+Nk= +github.com/Azure/azure-sdk-for-go v41.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-storage-blob-go v0.8.0 h1:53qhf0Oxa0nOjgbDeeYPUeyiNmafAFEY95rZLK0Tj6o= +github.com/Azure/azure-storage-blob-go v0.8.0/go.mod h1:lPI3aLPpuLTeUwh1sViKXFxwl2B6teiRqI0deQUvsw0= +github.com/Azure/go-autorest/autorest v0.9.0 h1:MRvx8gncNaXJqOoLmhNjUAKh33JJF8LyxPhomEtOsjs= +github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest v0.9.3 h1:OZEIaBbMdUE/Js+BQKlpO81XlISgipr6yDJ+PSwsgi4= +github.com/Azure/go-autorest/autorest v0.9.3/go.mod h1:GsRuLYvwzLjjjRoWEIyMUaYq8GNUx2nRB378IPt/1p0= +github.com/Azure/go-autorest/autorest v0.10.0 h1:mvdtztBqcL8se7MdrUweNieTNi4kfNG6GOJuurQJpuY= +github.com/Azure/go-autorest/autorest v0.10.0/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= +github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= +github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= +github.com/Azure/go-autorest/autorest/adal v0.8.2 h1:O1X4oexUxnZCaEUGsvMnr8ZGj8HI37tNezwY4npRqA0= +github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= +github.com/Azure/go-autorest/autorest/azure/auth v0.4.2 h1:iM6UAvjR97ZIeR93qTcwpKNMpV+/FTWjwEbuPD495Tk= +github.com/Azure/go-autorest/autorest/azure/auth v0.4.2/go.mod h1:90gmfKdlmKgfjUpnCEpOJzsUEjrWDSLwHIG73tSXddM= +github.com/Azure/go-autorest/autorest/azure/cli v0.3.1 h1:LXl088ZQlP0SBppGFsRZonW6hSvwgL5gRByMbvUbx8U= +github.com/Azure/go-autorest/autorest/azure/cli v0.3.1/go.mod h1:ZG5p860J94/0kI9mNJVoIoLgXcirM2gF5i2kWloofxw= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/date v0.2.0 h1:yW+Zlqf26583pE43KhfnhFcdmSWlm5Ew6bxipnr/tbM= +github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= +github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.3.0 h1:qJumjCaCudz+OcqE9/XtEPfvtOjOmKaui4EOpFI6zZc= +github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= +github.com/Azure/go-autorest/autorest/to v0.3.0 h1:zebkZaadz7+wIQYgC7GXaz3Wb28yKYfVkkBKwc38VF8= +github.com/Azure/go-autorest/autorest/to v0.3.0/go.mod h1:MgwOyqaIuKdG4TL/2ywSsIWKAfJfgHDo8ObuUk3t5sA= +github.com/Azure/go-autorest/autorest/validation v0.2.0 h1:15vMO4y76dehZSq7pAaOLQxC6dZYsSrj2GQpflyM/L4= +github.com/Azure/go-autorest/autorest/validation v0.2.0/go.mod h1:3EEqHnBxQGHXRYq3HT1WyXAvT7LLY3tl70hw6tQIbjI= +github.com/Azure/go-autorest/logger v0.1.0 h1:ruG4BSDXONFRrZZJ2GUXDiUyVpayPmb1GnWeHDdaNKY= +github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/tracing v0.5.0 h1:TRn4WjSnkcSy5AEG3pnbtFSwNtwzjr4VYyQflFE619k= +github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/aws/aws-sdk-go v1.25.37 h1:gBtB/F3dophWpsUQKN/Kni+JzYEH2mGHF4hWNtfED1w= +github.com/aws/aws-sdk-go v1.25.37/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f h1:JOrtw2xFKzlg+cbHpyrpLDmnN1HqhBfnX7WDiW7eG2c= +github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-xdr v0.0.0-20161123171359-e6a2ba005892/go.mod h1:CTDl0pzVzE5DEzZhPfvhY/9sPFMQIxaJ9VAMs9AagrE= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dimchansky/utfbom v1.1.0 h1:FcM3g+nofKgUteL8dm/UpdRXNC9KmADgTpLKsu0TRo4= +github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/uuid v0.0.0-20170306145142-6a5e28554805/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gophercloud/gophercloud v0.11.0 h1:pYMP9UZBdQa3lsfIZ1tZor4EbtxiuB6BHhocenkiH/E= +github.com/gophercloud/gophercloud v0.11.0/go.mod h1:gmC5oQqMDOMO1t1gq5DquX/yAU808e/4mzjjDA76+Ss= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/julienschmidt/httprouter v1.2.0 h1:TDTW5Yz1mjftljbcKqRcrYhd4XeOoI98t+9HbQbYf7g= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kolo/xmlrpc v0.0.0-20190909154602-56d5ec7c422e h1:JZPIpxHmcXiQn101f6P9wkfRZs2A9268tHHnanj+esA= +github.com/kolo/xmlrpc v0.0.0-20190909154602-56d5ec7c422e/go.mod h1:o03bZfuBwAXHetKXuInt4S7omeXUu62/A845kiycsSQ= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149 h1:HfxbT6/JcvIljmERptWhwa8XzP7H3T+Z2N26gTsaDaA= +github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/vmware/govmomi v0.23.0 h1:DC97v1FdSr3cPfq3eBKD5C1O4JtYxo+NTcbGTKe2k48= +github.com/vmware/govmomi v0.23.0/go.mod h1:Y+Wq4lst78L85Ge/F8+ORXIWiKYqaro1vhAulACy9Lc= +github.com/vmware/vmw-guestinfo v0.0.0-20170707015358-25eff159a728/go.mod h1:x9oS4Wk2s2u4tS29nEaDLdzvuHdB19CvSGJjPgkZJNk= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191202143827-86a70503ff7e/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413 h1:ULYEB3JvPRE/IfO+9uO7vKV/xzVTO7XPAwm8xbf4w2g= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2 h1:CCH4IOTTfewWjGOlSp+zGcjutRKlBEZQ6wTn8ozI/nI= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4 h1:sfkvUWPNGwSV+8/fNqctR5lS2AqCSqYwXdrjCxp/dXo= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191203134012-c197fd4bf371/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.7 h1:VUgggvou5XRW9mHwD/yXxIYSMtY0zoKQf/v226p2nyo= +gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/golang-github-osbuild-composer.spec b/golang-github-osbuild-composer.spec new file mode 100644 index 0000000..208a6f1 --- /dev/null +++ b/golang-github-osbuild-composer.spec @@ -0,0 +1,208 @@ +%global goipath github.com/osbuild/osbuild-composer + +Version: 20 + +%gometa + +%global common_description %{expand: +An image building service based on osbuild +It is inspired by lorax-composer and exposes the same API. +As such, it is a drop-in replacement. +} + +Name: %{goname} +Release: 1%{?dist} +Summary: An image building service based on osbuild + +# osbuild-composer doesn't have support for building i686 images +# and also RHEL and Fedora has now only limited support for this arch. +ExcludeArch: i686 + +# Upstream license specification: Apache-2.0 +License: ASL 2.0 +URL: %{gourl} +Source0: %{gosource} + + +BuildRequires: %{?go_compiler:compiler(go-compiler)}%{!?go_compiler:golang} +BuildRequires: systemd +%if 0%{?fedora} +BuildRequires: systemd-rpm-macros +BuildRequires: git +BuildRequires: golang(github.com/aws/aws-sdk-go) +BuildRequires: golang(github.com/Azure/azure-sdk-for-go) +BuildRequires: golang(github.com/Azure/azure-storage-blob-go/azblob) +BuildRequires: golang(github.com/BurntSushi/toml) +BuildRequires: golang(github.com/coreos/go-semver/semver) +BuildRequires: golang(github.com/coreos/go-systemd/activation) +BuildRequires: golang(github.com/google/uuid) +BuildRequires: golang(github.com/julienschmidt/httprouter) +BuildRequires: golang(github.com/gobwas/glob) +BuildRequires: golang(github.com/google/go-cmp/cmp) +BuildRequires: golang(github.com/gophercloud/gophercloud) +BuildRequires: golang(github.com/stretchr/testify) +%endif + +Requires: %{name}-worker = %{version}-%{release} +Requires: systemd +Requires: osbuild >= 18 +Requires: osbuild-ostree >= 18 +Requires: qemu-img + +Provides: osbuild-composer +Provides: weldr + +%description +%{common_description} + +%prep +%if 0%{?rhel} +%forgeautosetup -p1 +%else +%goprep +%endif + +%build +%if 0%{?rhel} +GO_BUILD_PATH=$PWD/_build +install -m 0755 -vd $(dirname $GO_BUILD_PATH/src/%{goipath}) +ln -fs $PWD $GO_BUILD_PATH/src/%{goipath} +cd $GO_BUILD_PATH/src/%{goipath} +install -m 0755 -vd _bin +export PATH=$PWD/_bin${PATH:+:$PATH} +export GOPATH=$GO_BUILD_PATH:%{gopath} +export GOFLAGS=-mod=vendor +%endif + +%gobuild -o _bin/osbuild-composer %{goipath}/cmd/osbuild-composer +%gobuild -o _bin/osbuild-worker %{goipath}/cmd/osbuild-worker + +# Build test binaries with `go test -c`, so that they can take advantage of +# golang's testing package. The golang rpm macros don't support building them +# directly. Thus, do it manually, taking care to also include a build id. +# +# On Fedora, also turn off go modules and set the path to the one into which +# the golang-* packages install source code. +%if 0%{?fedora} +export GO111MODULE=off +export GOPATH=%{gobuilddir}:%{gopath} +%endif + +TEST_LDFLAGS="${LDFLAGS:-} -B 0x$(od -N 20 -An -tx1 -w100 /dev/urandom | tr -d ' ')" + +go test -c -tags=integration -ldflags="${TEST_LDFLAGS}" -o _bin/osbuild-tests %{goipath}/cmd/osbuild-tests +go test -c -tags=integration -ldflags="${TEST_LDFLAGS}" -o _bin/osbuild-dnf-json-tests %{goipath}/cmd/osbuild-dnf-json-tests +go test -c -tags=integration -ldflags="${TEST_LDFLAGS}" -o _bin/osbuild-weldr-tests %{goipath}/internal/client/ +go test -c -tags=integration -ldflags="${TEST_LDFLAGS}" -o _bin/osbuild-image-tests %{goipath}/cmd/osbuild-image-tests + +%install +install -m 0755 -vd %{buildroot}%{_libexecdir}/osbuild-composer +install -m 0755 -vp _bin/osbuild-composer %{buildroot}%{_libexecdir}/osbuild-composer/ +install -m 0755 -vp _bin/osbuild-worker %{buildroot}%{_libexecdir}/osbuild-composer/ +install -m 0755 -vp dnf-json %{buildroot}%{_libexecdir}/osbuild-composer/ + +install -m 0755 -vd %{buildroot}%{_datadir}/osbuild-composer/repositories +install -m 0644 -vp repositories/* %{buildroot}%{_datadir}/osbuild-composer/repositories/ + +install -m 0755 -vd %{buildroot}%{_unitdir} +install -m 0644 -vp distribution/*.{service,socket} %{buildroot}%{_unitdir}/ + +install -m 0755 -vd %{buildroot}%{_sysusersdir} +install -m 0644 -vp distribution/osbuild-composer.conf %{buildroot}%{_sysusersdir}/ + +install -m 0755 -vd %{buildroot}%{_localstatedir}/cache/osbuild-composer/dnf-cache + +install -m 0755 -vd %{buildroot}%{_libexecdir}/tests/osbuild-composer +install -m 0755 -vp _bin/osbuild-tests %{buildroot}%{_libexecdir}/tests/osbuild-composer/ +install -m 0755 -vp _bin/osbuild-weldr-tests %{buildroot}%{_libexecdir}/tests/osbuild-composer/ +install -m 0755 -vp _bin/osbuild-dnf-json-tests %{buildroot}%{_libexecdir}/tests/osbuild-composer/ +install -m 0755 -vp _bin/osbuild-image-tests %{buildroot}%{_libexecdir}/tests/osbuild-composer/ +install -m 0755 -vp tools/image-info %{buildroot}%{_libexecdir}/osbuild-composer/ + +install -m 0755 -vd %{buildroot}%{_datadir}/tests/osbuild-composer +install -m 0644 -vp test/azure-deployment-template.json %{buildroot}%{_datadir}/tests/osbuild-composer/ + +install -m 0755 -vd %{buildroot}%{_datadir}/tests/osbuild-composer/cases +install -m 0644 -vp test/cases/* %{buildroot}%{_datadir}/tests/osbuild-composer/cases/ +install -m 0755 -vd %{buildroot}%{_datadir}/tests/osbuild-composer/keyring +install -m 0600 -vp test/keyring/* %{buildroot}%{_datadir}/tests/osbuild-composer/keyring/ + +install -m 0755 -vd %{buildroot}%{_datadir}/tests/osbuild-composer/cloud-init +install -m 0644 -vp test/cloud-init/* %{buildroot}%{_datadir}/tests/osbuild-composer/cloud-init/ + +%check +%if 0%{?rhel} +export GOFLAGS=-mod=vendor +export GOPATH=$PWD/_build:%{gopath} +%gotest ./... +%else +%gocheck +%endif + +%post +%systemd_post osbuild-composer.service osbuild-composer.socket osbuild-remote-worker.socket + +%preun +%systemd_preun osbuild-composer.service osbuild-composer.socket osbuild-remote-worker.socket + +%postun +%systemd_postun_with_restart osbuild-composer.service osbuild-composer.socket osbuild-remote-worker.socket + +%files +%license LICENSE +%doc README.md +%{_libexecdir}/osbuild-composer/osbuild-composer +%{_libexecdir}/osbuild-composer/dnf-json +%{_datadir}/osbuild-composer/ +%{_unitdir}/osbuild-composer.service +%{_unitdir}/osbuild-composer.socket +%{_unitdir}/osbuild-remote-worker.socket +%{_sysusersdir}/osbuild-composer.conf + +%package worker +Summary: The worker for osbuild-composer +Requires: systemd +Requires: osbuild + +%description worker +The worker for osbuild-composer + +%files worker +%{_libexecdir}/osbuild-composer/osbuild-worker +%{_unitdir}/osbuild-worker@.service +%{_unitdir}/osbuild-remote-worker@.service + +%post worker +%systemd_post osbuild-worker@.service osbuild-remote-worker@.service + +%preun worker +# systemd_preun uses systemctl disable --now which doesn't work well with template services. +# See https://github.com/systemd/systemd/issues/15620 +# The following lines mimicks its behaviour by running two commands: + +# disable and stop all the worker services +systemctl --no-reload disable osbuild-worker@.service osbuild-remote-worker@.service +systemctl stop "osbuild-worker@*.service" "osbuild-remote-worker@*.service" + +%postun worker +# restart all the worker services +%systemd_postun_with_restart "osbuild-worker@*.service" "osbuild-remote-worker@*.service" + +%package tests +Summary: Integration tests +Requires: %{name} = %{version}-%{release} +Requires: composer-cli +Requires: createrepo_c +Requires: genisoimage +Requires: qemu-kvm-core + +%description tests +Integration tests to be run on a pristine-dedicated system to test the osbuild-composer package. + +%files tests +%{_libexecdir}/tests/osbuild-composer/ +%{_datadir}/tests/osbuild-composer/ +%{_libexecdir}/osbuild-composer/image-info + +%changelog +# the changelog is distribution-specific, therefore it doesn't make sense to have it upstream diff --git a/image-types/README.md b/image-types/README.md new file mode 100644 index 0000000..dee8b92 --- /dev/null +++ b/image-types/README.md @@ -0,0 +1,8 @@ +# OSBuild Composer Image Types + +This directory contains high-level descriptions of all image types that +*osbuild-composer* generates, grouped by operating system. + +Each of them contains a short description of the purpose and intended use case +of the image type, and any peculiarities that make this image type differ from +a standard installation. diff --git a/image-types/rhel8/README.md b/image-types/rhel8/README.md new file mode 100644 index 0000000..0e4e156 --- /dev/null +++ b/image-types/rhel8/README.md @@ -0,0 +1,10 @@ +# Red Hat Enterprise Linux 8 + +*osbuild-composer* can create [Red Hat Enterprise Linux 8][rhel] images. + +A RHEL installation consists of the `@Core` group and the `kernel` package from +RHEL repositories. The default file system is `xfs`. + +RHEL supports `x86_64`, `aarch64`, `ppc64le`, and `s390x` architectures. + +[rhel]: https://access.redhat.com/products/red-hat-enterprise-linux diff --git a/image-types/rhel8/amazon-ec2.md b/image-types/rhel8/amazon-ec2.md new file mode 100644 index 0000000..5eeb2f7 --- /dev/null +++ b/image-types/rhel8/amazon-ec2.md @@ -0,0 +1,29 @@ +# Amazon EC2 Image + +This image is meant to be used in [Amazon Elastic Compute Cloud (EC2)][ec2], a +popular cloud computing platform. It conforms to Amazon’s +[guidelines][guidelines] and [requirements][requirements] for shared AMIs. + + +## Implementation Choices + +EC2 uses Amazon Machine Images (AMIs) internally, which can only be created +inside EC2. An image in a standard format (ova, vmdk, vhd/x, or raw) must be +imported from S3 storage. *osbuild-composer* generates this image type in the +RAW format for the best compatibility with AWS. + +This image is available for `x86_64` and `aarch64`, because those are the only +architectures available in EC2. + +EC2 doesn't require any specialized firmware. Thus, in order to keep the +resulting image size small, all `-firmware` packages are excluded. An exception +is the `linux-firmware` package, which cannot be excluded because the `kernel` +package depends on it. + +`dracut-config-rescue` is excluded from the image, because the boot loader +entry it provides is broken. + + +[ec2]: https://aws.amazon.com/ec2 +[guidelines]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/building-shared-amis.html +[requirements]: https://docs.aws.amazon.com/vm-import/latest/userguide/vmie_prereqs.html diff --git a/image-types/rhel8/kvm-guest-image.md b/image-types/rhel8/kvm-guest-image.md new file mode 100644 index 0000000..9ed46c8 --- /dev/null +++ b/image-types/rhel8/kvm-guest-image.md @@ -0,0 +1,18 @@ +# KVM Guest Image + +This is an image meant to be used as a generic base image for various +virtualization environments. + +To be usable in common environments, it is provided in the *qcow2* format and +has *cloud-init* installed and enabled. + + +## Implementation Choices + +`dracut-config-rescue` is excluded from the image, because the boot loader +entry it provides is broken. + +The environments this image is meant to be used in usually don't require any +specialized firmware. Thus, in order to keep the resulting image size small, +all `-firmware` packages are excluded. An exception is the `linux-firmware` +package, which cannot be excluded because the `kernel` package depends on it. diff --git a/image-types/rhel8/microsoft-azure.md b/image-types/rhel8/microsoft-azure.md new file mode 100644 index 0000000..ca82ada --- /dev/null +++ b/image-types/rhel8/microsoft-azure.md @@ -0,0 +1,14 @@ +# Microsoft Azure Image + +This image is meant to be used in [Microsoft Azure][azure], a popular cloud +computing platform. It conforms to Azure's [requirements for images][rhelrequirements]. + + +## Implementation Choices + +This image is only availble for `x86_64`, because it is the only architecture available +in Azure. + + +[azure]: https://azure.microsoft.com +[rhelrequirements]: https://docs.microsoft.com/en-us/azure/virtual-machines/linux/create-upload-generic \ No newline at end of file diff --git a/image-types/rhel8/openstack.md b/image-types/rhel8/openstack.md new file mode 100644 index 0000000..d41db93 --- /dev/null +++ b/image-types/rhel8/openstack.md @@ -0,0 +1,21 @@ +# OpenStack Image + +This image is meant to be run in an OpenStack environment. It has to conform to +OpenStack’s [image requirements][requirements]. + + +## Implementation Choices + +To be usable in OpenStack, it is provided in the *qcow2* format and has +*cloud-init* installed and enabled. + +`dracut-config-rescue` is excluded from the image, because the boot loader +entry it provides is broken. + +The environments this image is meant to be used in usually don't require any +specialized firmware. Thus, in order to keep the resulting image size small, +all `-firmware` packages are excluded. An exception is the `linux-firmware` +package, which cannot be excluded because the `kernel` package depends on it. + + +[requirements]: https://docs.openstack.org/image-guide/openstack-images.html diff --git a/image-types/rhel8/vmware.md b/image-types/rhel8/vmware.md new file mode 100644 index 0000000..f0bd9d4 --- /dev/null +++ b/image-types/rhel8/vmware.md @@ -0,0 +1,7 @@ +# VMWare Image + +This image is meant to be used in various VMWare environments, such as +[vSphere][vsphere]. + + +[vsphere]: https://www.vmware.com/products/vsphere.html diff --git a/internal/blueprint/blueprint.go b/internal/blueprint/blueprint.go new file mode 100644 index 0000000..c090d9a --- /dev/null +++ b/internal/blueprint/blueprint.go @@ -0,0 +1,116 @@ +// Package blueprint contains primitives for representing weldr blueprints +package blueprint + +import ( + "encoding/json" + "fmt" + + "github.com/coreos/go-semver/semver" +) + +// A Blueprint is a high-level description of an image. +type Blueprint struct { + Name string `json:"name" toml:"name"` + Description string `json:"description" toml:"description"` + Version string `json:"version,omitempty" toml:"version,omitempty"` + Packages []Package `json:"packages" toml:"packages"` + Modules []Package `json:"modules" toml:"modules"` + Groups []Group `json:"groups" toml:"groups"` + Customizations *Customizations `json:"customizations,omitempty" toml:"customizations,omitempty"` +} + +type Change struct { + Commit string `json:"commit" toml:"commit"` + Message string `json:"message" toml:"message"` + Revision *int `json:"revision" toml:"revision"` + Timestamp string `json:"timestamp" toml:"timestamp"` + Blueprint Blueprint `json:"-" toml:"-"` +} + +// A Package specifies an RPM package. +type Package struct { + Name string `json:"name" toml:"name"` + Version string `json:"version,omitempty" toml:"version,omitempty"` +} + +// A group specifies an package group. +type Group struct { + Name string `json:"name" toml:"name"` +} + +// DeepCopy returns a deep copy of the blueprint +// This uses json.Marshal and Unmarshal which are not very efficient +func (b *Blueprint) DeepCopy() Blueprint { + bpJSON, err := json.Marshal(b) + if err != nil { + panic(err) + } + + var bp Blueprint + err = json.Unmarshal(bpJSON, &bp) + if err != nil { + panic(err) + } + return bp +} + +// Initialize ensures that the blueprint has sane defaults for any missing fields +func (b *Blueprint) Initialize() error { + if b.Packages == nil { + b.Packages = []Package{} + } + if b.Modules == nil { + b.Modules = []Package{} + } + if b.Groups == nil { + b.Groups = []Group{} + } + if b.Version == "" { + b.Version = "0.0.0" + } + // Return an error if the version is not valid + _, err := semver.NewVersion(b.Version) + if err != nil { + return fmt.Errorf("Invalid 'version', must use Semantic Versioning: %s", err.Error()) + } + return nil +} + +// BumpVersion increments the previous blueprint's version +// If the old version string is not vaild semver it will use the new version as-is +// This assumes that the new blueprint's version has already been validated via Initialize +func (b *Blueprint) BumpVersion(old string) { + var ver *semver.Version + ver, err := semver.NewVersion(old) + if err != nil { + return + } + + ver.BumpPatch() + b.Version = ver.String() +} + +// packages, modules, and groups all resolve to rpm packages right now. This +// function returns a combined list of "name-version" strings. +func (b *Blueprint) GetPackages() []string { + packages := []string{} + for _, pkg := range b.Packages { + packages = append(packages, pkg.ToNameVersion()) + } + for _, pkg := range b.Modules { + packages = append(packages, pkg.ToNameVersion()) + } + for _, group := range b.Groups { + packages = append(packages, "@"+group.Name) + } + return packages +} + +func (p Package) ToNameVersion() string { + // Omit version to prevent all packages with prefix of name to be installed + if p.Version == "*" || p.Version == "" { + return p.Name + } + + return p.Name + "-" + p.Version +} diff --git a/internal/blueprint/blueprint_test.go b/internal/blueprint/blueprint_test.go new file mode 100644 index 0000000..53b56f1 --- /dev/null +++ b/internal/blueprint/blueprint_test.go @@ -0,0 +1,95 @@ +package blueprint + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestDeepCopy(t *testing.T) { + bpOrig := Blueprint{ + Name: "deepcopy-test", + Description: "Testing DeepCopy function", + Version: "0.0.1", + Packages: []Package{ + {Name: "dep-package1", Version: "*"}}, + Modules: []Package{ + {Name: "dep-package2", Version: "*"}}, + } + + bpCopy := bpOrig.DeepCopy() + require.Equalf(t, bpOrig, bpCopy, "Blueprints.DeepCopy is different from original.") + + // Modify the copy + bpCopy.Packages[0].Version = "1.2.3" + require.Equalf(t, bpOrig.Packages[0].Version, "*", "Blueprint.DeepCopy failed, original modified") + + // Modify the original + bpOrig.Packages[0].Version = "42.0" + require.Equalf(t, bpCopy.Packages[0].Version, "1.2.3", "Blueprint.DeepCopy failed, copy modified.") +} + +func TestBlueprintInitialize(t *testing.T) { + cases := []struct { + NewBlueprint Blueprint + ExpectedError bool + }{ + {Blueprint{Name: "bp-test-1", Description: "Empty version", Version: ""}, false}, + {Blueprint{Name: "bp-test-2", Description: "Invalid version 1", Version: "0"}, true}, + {Blueprint{Name: "bp-test-2", Description: "Invalid version 2", Version: "0.0"}, true}, + {Blueprint{Name: "bp-test-3", Description: "Invalid version 3", Version: "0.0.0.0"}, true}, + {Blueprint{Name: "bp-test-4", Description: "Invalid version 4", Version: "0.a.0"}, true}, + {Blueprint{Name: "bp-test-5", Description: "Invalid version 5", Version: "foo"}, true}, + {Blueprint{Name: "bp-test-7", Description: "Zero version", Version: "0.0.0"}, false}, + {Blueprint{Name: "bp-test-8", Description: "X.Y.Z version", Version: "2.1.3"}, false}, + } + + for _, c := range cases { + bp := c.NewBlueprint + err := bp.Initialize() + assert.Equalf(t, (err != nil), c.ExpectedError, "Initialize(%#v) returnted an unexpected error: %#v", c.NewBlueprint, err) + } +} + +func TestBumpVersion(t *testing.T) { + cases := []struct { + NewBlueprint Blueprint + OldVersion string + ExpectedVersion string + }{ + {Blueprint{Name: "bp-test-1", Description: "Empty version", Version: "0.0.1"}, "", "0.0.1"}, + {Blueprint{Name: "bp-test-2", Description: "Invalid version 1", Version: "0.0.1"}, "0", "0.0.1"}, + {Blueprint{Name: "bp-test-3", Description: "Invalid version 2", Version: "0.0.1"}, "0.0.0.0", "0.0.1"}, + {Blueprint{Name: "bp-test-4", Description: "Invalid version 3", Version: "0.0.1"}, "0.a.0", "0.0.1"}, + {Blueprint{Name: "bp-test-5", Description: "Invalid version 4", Version: "0.0.1"}, "foo", "0.0.1"}, + {Blueprint{Name: "bp-test-6", Description: "Invalid version 5", Version: "0.0.1"}, "0.0", "0.0.1"}, + {Blueprint{Name: "bp-test-8", Description: "Same version", Version: "4.2.0"}, "4.2.0", "4.2.1"}, + } + + for _, c := range cases { + bp := c.NewBlueprint + err := bp.Initialize() + require.NoError(t, err) + + bp.BumpVersion(c.OldVersion) + assert.Equalf(t, c.ExpectedVersion, bp.Version, "BumpVersion(%#v) is expected to return %#v, but instead returned %#v.", c.OldVersion, c.ExpectedVersion, bp.Version) + } +} + +func TestGetPackages(t *testing.T) { + + bp := Blueprint{ + Name: "packages-test", + Description: "Testing GetPackages function", + Version: "0.0.1", + Packages: []Package{ + {Name: "tmux", Version: "1.2"}}, + Modules: []Package{ + {Name: "openssh-server", Version: "*"}}, + Groups: []Group{ + {Name: "anaconda-tools"}}, + } + Received_packages := bp.GetPackages() + assert.ElementsMatch(t, []string{"tmux-1.2", "openssh-server", "@anaconda-tools"}, Received_packages) +} diff --git a/internal/blueprint/customizations.go b/internal/blueprint/customizations.go new file mode 100644 index 0000000..b94ab79 --- /dev/null +++ b/internal/blueprint/customizations.go @@ -0,0 +1,178 @@ +package blueprint + +type Customizations struct { + Hostname *string `json:"hostname,omitempty" toml:"hostname,omitempty"` + Kernel *KernelCustomization `json:"kernel,omitempty" toml:"kernel,omitempty"` + SSHKey []SSHKeyCustomization `json:"sshkey,omitempty" toml:"sshkey,omitempty"` + User []UserCustomization `json:"user,omitempty" toml:"user,omitempty"` + Group []GroupCustomization `json:"group,omitempty" toml:"group,omitempty"` + Timezone *TimezoneCustomization `json:"timezone,omitempty" toml:"timezone,omitempty"` + Locale *LocaleCustomization `json:"locale,omitempty" toml:"locale,omitempty"` + Firewall *FirewallCustomization `json:"firewall,omitempty" toml:"firewall,omitempty"` + Services *ServicesCustomization `json:"services,omitempty" toml:"services,omitempty"` +} + +type KernelCustomization struct { + Append string `json:"append" toml:"append"` +} + +type SSHKeyCustomization struct { + User string `json:"user" toml:"user"` + Key string `json:"key" toml:"key"` +} + +type UserCustomization struct { + Name string `json:"name" toml:"name"` + Description *string `json:"description,omitempty" toml:"description,omitempty"` + Password *string `json:"password,omitempty" toml:"password,omitempty"` + Key *string `json:"key,omitempty" toml:"key,omitempty"` + Home *string `json:"home,omitempty" toml:"home,omitempty"` + Shell *string `json:"shell,omitempty" toml:"shell,omitempty"` + Groups []string `json:"groups,omitempty" toml:"groups,omitempty"` + UID *int `json:"uid,omitempty" toml:"uid,omitempty"` + GID *int `json:"gid,omitempty" toml:"gid,omitempty"` +} + +type GroupCustomization struct { + Name string `json:"name" toml:"name"` + GID *int `json:"gid,omitempty" toml:"gid,omitempty"` +} + +type TimezoneCustomization struct { + Timezone *string `json:"timezone,omitempty" toml:"timezone,omitempty"` + NTPServers []string `json:"ntpservers,omitempty" toml:"ntpservers,omitempty"` +} + +type LocaleCustomization struct { + Languages []string `json:"languages,omitempty" toml:"languages,omitempty"` + Keyboard *string `json:"keyboard,omitempty" toml:"keyboard,omitempty"` +} + +type FirewallCustomization struct { + Ports []string `json:"ports,omitempty" toml:"ports,omitempty"` + Services *FirewallServicesCustomization `json:"services,omitempty" toml:"services,omitempty"` +} + +type FirewallServicesCustomization struct { + Enabled []string `json:"enabled,omitempty" toml:"enabled,omitempty"` + Disabled []string `json:"disabled,omitempty" toml:"disabled,omitempty"` +} + +type ServicesCustomization struct { + Enabled []string `json:"enabled,omitempty" toml:"enabled,omitempty"` + Disabled []string `json:"disabled,omitempty" toml:"disabled,omitempty"` +} + +type CustomizationError struct { + Message string +} + +func (e *CustomizationError) Error() string { + return e.Message +} + +func (c *Customizations) GetHostname() *string { + if c == nil { + return nil + } + return c.Hostname +} + +func (c *Customizations) GetPrimaryLocale() (*string, *string) { + if c == nil { + return nil, nil + } + if c.Locale == nil { + return nil, nil + } + if len(c.Locale.Languages) == 0 { + return nil, c.Locale.Keyboard + } + return &c.Locale.Languages[0], c.Locale.Keyboard +} + +func (c *Customizations) GetTimezoneSettings() (*string, []string) { + if c == nil { + return nil, nil + } + if c.Timezone == nil { + return nil, nil + } + return c.Timezone.Timezone, c.Timezone.NTPServers +} + +func (c *Customizations) GetUsers() []UserCustomization { + if c == nil { + return nil + } + + users := []UserCustomization{} + + // prepend sshkey for backwards compat (overridden by users) + if len(c.SSHKey) > 0 { + for _, c := range c.SSHKey { + users = append(users, UserCustomization{ + Name: c.User, + Key: &c.Key, + }) + } + } + + return append(users, c.User...) +} + +func (c *Customizations) GetGroups() []GroupCustomization { + if c == nil { + return nil + } + + // This is for parity with lorax, which assumes that for each + // user, a group with that name already exists. Thus, filter groups + // named like an existing user. + + groups := []GroupCustomization{} + for _, group := range c.Group { + exists := false + for _, user := range c.User { + if user.Name == group.Name { + exists = true + break + } + } + for _, key := range c.SSHKey { + if key.User == group.Name { + exists = true + break + } + } + if !exists { + groups = append(groups, group) + } + } + + return groups +} + +func (c *Customizations) GetKernel() *KernelCustomization { + if c == nil { + return nil + } + + return c.Kernel +} + +func (c *Customizations) GetFirewall() *FirewallCustomization { + if c == nil { + return nil + } + + return c.Firewall +} + +func (c *Customizations) GetServices() *ServicesCustomization { + if c == nil { + return nil + } + + return c.Services +} diff --git a/internal/blueprint/customizations_test.go b/internal/blueprint/customizations_test.go new file mode 100644 index 0000000..1ebe21c --- /dev/null +++ b/internal/blueprint/customizations_test.go @@ -0,0 +1,267 @@ +package blueprint + +import ( + "github.com/stretchr/testify/assert" + "testing" +) + +func TestGetHostname(t *testing.T) { + + var expectedHostname = "Hostname" + + TestCustomizations := Customizations{ + Hostname: &expectedHostname, + } + + retHostname := TestCustomizations.GetHostname() + assert.Equal(t, &expectedHostname, retHostname) + +} + +func TestGetKernel(t *testing.T) { + + expectedKernel := KernelCustomization{ + Append: "--test", + } + + TestCustomizations := Customizations{ + Kernel: &expectedKernel, + } + + retKernel := TestCustomizations.GetKernel() + + assert.Equal(t, &expectedKernel, retKernel) +} + +func TestSSHKey(t *testing.T) { + + expectedSSHKeys := []SSHKeyCustomization{ + SSHKeyCustomization{ + User: "test-user", + Key: "test-key", + }, + } + TestCustomizations := Customizations{ + SSHKey: expectedSSHKeys, + } + + retUser := TestCustomizations.GetUsers()[0].Name + retKey := *TestCustomizations.GetUsers()[0].Key + + assert.Equal(t, expectedSSHKeys[0].User, retUser) + assert.Equal(t, expectedSSHKeys[0].Key, retKey) + +} + +func TestGetUsers(t *testing.T) { + + Desc := "Test descritpion" + Pass := "testpass" + Key := "testkey" + Home := "Home" + Shell := "Shell" + Groups := []string{ + "Group", + } + UID := 123 + GID := 321 + + expectedUsers := []UserCustomization{ + UserCustomization{ + Name: "John", + Description: &Desc, + Password: &Pass, + Key: &Key, + Home: &Home, + Shell: &Shell, + Groups: Groups, + UID: &UID, + GID: &GID, + }, + } + + TestCustomizations := Customizations{ + User: expectedUsers, + } + + retUsers := TestCustomizations.GetUsers() + + assert.ElementsMatch(t, expectedUsers, retUsers) +} + +func TestGetGroups(t *testing.T) { + + GID := 1234 + expectedGroups := []GroupCustomization{ + GroupCustomization{ + Name: "TestGroup", + GID: &GID, + }, + } + + TestCustomizations := Customizations{ + Group: expectedGroups, + } + + retGroups := TestCustomizations.GetGroups() + + assert.ElementsMatch(t, expectedGroups, retGroups) +} + +func TestGetTimezoneSettings(t *testing.T) { + + expectedTimezone := "testZONE" + expectedNTPServers := []string{ + "server", + } + + expectedTimezoneCustomization := TimezoneCustomization{ + Timezone: &expectedTimezone, + NTPServers: expectedNTPServers, + } + + TestCustomizations := Customizations{ + Timezone: &expectedTimezoneCustomization, + } + + retTimezone, retNTPServers := TestCustomizations.GetTimezoneSettings() + + assert.Equal(t, expectedTimezone, *retTimezone) + assert.Equal(t, expectedNTPServers, retNTPServers) + +} + +func TestGetPrimaryLocale(t *testing.T) { + + expectedLanguages := []string{ + "enUS", + } + expectedKeyboard := "en" + + expectedLocaleCustomization := LocaleCustomization{ + Languages: expectedLanguages, + Keyboard: &expectedKeyboard, + } + + TestCustomizations := Customizations{ + Locale: &expectedLocaleCustomization, + } + + retLanguage, retKeyboard := TestCustomizations.GetPrimaryLocale() + + assert.Equal(t, expectedLanguages[0], *retLanguage) + assert.Equal(t, expectedKeyboard, *retKeyboard) +} + +func TestGetFirewall(t *testing.T) { + + expectedPorts := []string{"22", "9090"} + + expectedServices := FirewallServicesCustomization{ + Enabled: []string{"cockpit", "osbuild-composer"}, + Disabled: []string{"TCP", "httpd"}, + } + + expectedFirewall := FirewallCustomization{ + Ports: expectedPorts, + Services: &expectedServices, + } + + TestCustomizations := Customizations{ + Firewall: &expectedFirewall, + } + + retFirewall := TestCustomizations.GetFirewall() + + assert.ElementsMatch(t, expectedFirewall.Ports, retFirewall.Ports) + assert.ElementsMatch(t, expectedFirewall.Services.Enabled, retFirewall.Services.Enabled) + assert.ElementsMatch(t, expectedFirewall.Services.Disabled, retFirewall.Services.Disabled) +} + +func TestGetServices(t *testing.T) { + + expectedServices := ServicesCustomization{ + Enabled: []string{"cockpit", "osbuild-composer"}, + Disabled: []string{"sshd", "ftp"}, + } + + TestCustomizations := Customizations{ + Services: &expectedServices, + } + + retServices := TestCustomizations.GetServices() + + assert.ElementsMatch(t, expectedServices.Enabled, retServices.Enabled) + assert.ElementsMatch(t, expectedServices.Disabled, retServices.Disabled) +} + +func TestError(t *testing.T) { + expectedError := CustomizationError{ + Message: "test error", + } + + retError := expectedError.Error() + + assert.Equal(t, expectedError.Message, retError) + +} + +//This tests calling all the functions on a Blueprint with no Customizations +func TestNoCustomizationsInBlueprint(t *testing.T) { + + TestBP := Blueprint{} + + assert.Nil(t, TestBP.Customizations.GetHostname()) + assert.Nil(t, TestBP.Customizations.GetUsers()) + assert.Nil(t, TestBP.Customizations.GetGroups()) + assert.Nil(t, TestBP.Customizations.GetKernel()) + assert.Nil(t, TestBP.Customizations.GetFirewall()) + assert.Nil(t, TestBP.Customizations.GetServices()) + + nilLanguage, nilKeyboard := TestBP.Customizations.GetPrimaryLocale() + assert.Nil(t, nilLanguage) + assert.Nil(t, nilKeyboard) + + nilTimezone, nilNTPServers := TestBP.Customizations.GetTimezoneSettings() + assert.Nil(t, nilTimezone) + assert.Nil(t, nilNTPServers) +} + +//This tests additional scenarios where GetPrimaryLocale() returns nil values +func TestNilGetPrimaryLocale(t *testing.T) { + + //Case empty Customization + TestCustomizationsEmpty := Customizations{} + + retLanguage, retKeyboard := TestCustomizationsEmpty.GetPrimaryLocale() + + assert.Nil(t, retLanguage) + assert.Nil(t, retKeyboard) + + //Case empty Languages + expectedKeyboard := "en" + expectedLocaleCustomization := LocaleCustomization{ + Keyboard: &expectedKeyboard, + } + + TestCustomizations := Customizations{ + Locale: &expectedLocaleCustomization, + } + + retLanguage, retKeyboard = TestCustomizations.GetPrimaryLocale() + + assert.Nil(t, retLanguage) + assert.Equal(t, expectedKeyboard, *retKeyboard) + +} + +//This tests additional scenario where GetTimezoneSEtting() returns nil values +func TestNilGetTimezoneSettings(t *testing.T) { + + TestCustomizationsEmpty := Customizations{} + + retTimezone, retNTPServers := TestCustomizationsEmpty.GetTimezoneSettings() + + assert.Nil(t, retTimezone) + assert.Nil(t, retNTPServers) +} diff --git a/internal/client/blueprints.go b/internal/client/blueprints.go new file mode 100644 index 0000000..1573146 --- /dev/null +++ b/internal/client/blueprints.go @@ -0,0 +1,170 @@ +// Package client - blueprints contains functions for the blueprint API +// Copyright (C) 2020 by Red Hat, Inc. +package client + +import ( + "encoding/json" + "fmt" + "net/http" + "strings" + + "github.com/osbuild/osbuild-composer/internal/weldr" +) + +// PostTOMLBlueprintV0 sends a TOML blueprint string to the API +// and returns an APIResponse +func PostTOMLBlueprintV0(socket *http.Client, blueprint string) (*APIResponse, error) { + body, resp, err := PostTOML(socket, "/api/v0/blueprints/new", blueprint) + if resp != nil || err != nil { + return resp, err + } + return NewAPIResponse(body) +} + +// PostTOMLWorkspaceV0 sends a TOML blueprint string to the API +// and returns an APIResponse +func PostTOMLWorkspaceV0(socket *http.Client, blueprint string) (*APIResponse, error) { + body, resp, err := PostTOML(socket, "/api/v0/blueprints/workspace", blueprint) + if resp != nil || err != nil { + return resp, err + } + return NewAPIResponse(body) +} + +// PostJSONBlueprintV0 sends a JSON blueprint string to the API +// and returns an APIResponse +func PostJSONBlueprintV0(socket *http.Client, blueprint string) (*APIResponse, error) { + body, resp, err := PostJSON(socket, "/api/v0/blueprints/new", blueprint) + if resp != nil || err != nil { + return resp, err + } + return NewAPIResponse(body) +} + +// PostJSONWorkspaceV0 sends a JSON blueprint string to the API +// and returns an APIResponse +func PostJSONWorkspaceV0(socket *http.Client, blueprint string) (*APIResponse, error) { + body, resp, err := PostJSON(socket, "/api/v0/blueprints/workspace", blueprint) + if resp != nil || err != nil { + return resp, err + } + return NewAPIResponse(body) +} + +// DeleteBlueprintV0 deletes the named blueprint and returns an APIResponse +func DeleteBlueprintV0(socket *http.Client, bpName string) (*APIResponse, error) { + body, resp, err := DeleteRaw(socket, "/api/v0/blueprints/delete/"+bpName) + if resp != nil || err != nil { + return resp, err + } + return NewAPIResponse(body) +} + +// DeleteWorkspaceV0 deletes the named blueprint's workspace and returns an APIResponse +func DeleteWorkspaceV0(socket *http.Client, bpName string) (*APIResponse, error) { + body, resp, err := DeleteRaw(socket, "/api/v0/blueprints/workspace/"+bpName) + if resp != nil || err != nil { + return resp, err + } + return NewAPIResponse(body) +} + +// ListBlueprintsV0 returns a list of blueprint names +func ListBlueprintsV0(socket *http.Client) ([]string, *APIResponse, error) { + body, resp, err := GetJSONAll(socket, "/api/v0/blueprints/list") + if resp != nil || err != nil { + return nil, resp, err + } + var list weldr.BlueprintsListV0 + err = json.Unmarshal(body, &list) + if err != nil { + return nil, nil, err + } + return list.Blueprints, nil, nil +} + +// GetBlueprintInfoTOMLV0 returns the requested blueprint as a TOML string +func GetBlueprintInfoTOMLV0(socket *http.Client, bpName string) (string, *APIResponse, error) { + body, resp, err := GetRaw(socket, "GET", "/api/v0/blueprints/info/"+bpName+"?format=toml") + if resp != nil || err != nil { + return "", resp, err + } + return string(body), nil, nil +} + +// GetBlueprintsInfoJSONV0 returns the requested blueprints and their changed state +func GetBlueprintsInfoJSONV0(socket *http.Client, bpName string) (weldr.BlueprintsInfoV0, *APIResponse, error) { + body, resp, err := GetRaw(socket, "GET", "/api/v0/blueprints/info/"+bpName) + if resp != nil || err != nil { + return weldr.BlueprintsInfoV0{}, resp, err + } + var info weldr.BlueprintsInfoV0 + err = json.Unmarshal(body, &info) + if err != nil { + return weldr.BlueprintsInfoV0{}, nil, err + } + return info, nil, nil +} + +// GetBlueprintsChangesV0 returns the changes to the listed blueprints +func GetBlueprintsChangesV0(socket *http.Client, bpNames []string) (weldr.BlueprintsChangesV0, *APIResponse, error) { + names := strings.Join(bpNames, ",") + body, resp, err := GetRaw(socket, "GET", "/api/v0/blueprints/changes/"+names) + if resp != nil || err != nil { + return weldr.BlueprintsChangesV0{}, resp, err + } + var changes weldr.BlueprintsChangesV0 + err = json.Unmarshal(body, &changes) + if err != nil { + return weldr.BlueprintsChangesV0{}, nil, err + } + return changes, nil, nil +} + +// UndoBlueprintChangeV0 reverts a blueprint to a previous commit +func UndoBlueprintChangeV0(socket *http.Client, blueprint, commit string) (*APIResponse, error) { + request := fmt.Sprintf("/api/v0/blueprints/undo/%s/%s", blueprint, commit) + body, resp, err := PostRaw(socket, request, "", nil) + if resp != nil || err != nil { + return resp, err + } + return NewAPIResponse(body) +} + +// TagBlueprintV0 tags the current blueprint commit as a new revision +func TagBlueprintV0(socket *http.Client, blueprint string) (*APIResponse, error) { + body, resp, err := PostRaw(socket, "/api/v0/blueprints/tag/"+blueprint, "", nil) + if resp != nil || err != nil { + return resp, err + } + return NewAPIResponse(body) +} + +// DepsolveBlueprintV0 depsolves the listed blueprint +func DepsolveBlueprintV0(socket *http.Client, blueprint string) (weldr.BlueprintsDepsolveV0, *APIResponse, error) { + body, resp, err := GetRaw(socket, "GET", "/api/v0/blueprints/depsolve/"+blueprint) + if resp != nil || err != nil { + return weldr.BlueprintsDepsolveV0{}, resp, err + } + var deps weldr.BlueprintsDepsolveV0 + err = json.Unmarshal(body, &deps) + if err != nil { + return weldr.BlueprintsDepsolveV0{}, nil, err + } + return deps, nil, nil +} + +// FreezeBlueprintV0 depsolves the listed blueprint and returns the blueprint with frozen package +// versions +func FreezeBlueprintV0(socket *http.Client, blueprint string) (weldr.BlueprintsFreezeV0, *APIResponse, error) { + body, resp, err := GetRaw(socket, "GET", "/api/v0/blueprints/freeze/"+blueprint) + if resp != nil || err != nil { + return weldr.BlueprintsFreezeV0{}, resp, err + } + var frozen weldr.BlueprintsFreezeV0 + err = json.Unmarshal(body, &frozen) + if err != nil { + return weldr.BlueprintsFreezeV0{}, nil, err + } + return frozen, nil, nil +} diff --git a/internal/client/blueprints_test.go b/internal/client/blueprints_test.go new file mode 100644 index 0000000..67c635b --- /dev/null +++ b/internal/client/blueprints_test.go @@ -0,0 +1,1083 @@ +// Package client - blueprints_test contains functions to check the blueprints API +// Copyright (C) 2020 by Red Hat, Inc. + +// Tests should be self-contained and not depend on the state of the server +// They should use their own blueprints, not the default blueprints +// They should not assume version numbers for packages will match +// They should run tests that depend on previous results from the same function +// not from other functions. +// The blueprint version number may get bumped if the server has had tests run before +// do not assume the bp version will match unless first deleting the old one. +package client + +import ( + "encoding/json" + "sort" + "strings" + "testing" + + "github.com/BurntSushi/toml" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +// POST a new TOML blueprint +func TestPostTOMLBlueprintV0(t *testing.T) { + bp := ` + name="test-toml-blueprint-v0" + description="postTOMLBlueprintV0" + version="0.0.1" + [[packages]] + name="bash" + version="*" + + [[modules]] + name="util-linux" + version="*" + + [[customizations.user]] + name="root" + password="qweqweqwe" + ` + resp, err := PostTOMLBlueprintV0(testState.socket, bp) + require.NoError(t, err, "failed with a client error") + require.True(t, resp.Status, "POST failed: %#v", resp) +} + +// POST an invalid TOML blueprint +func TestPostInvalidTOMLBlueprintV0(t *testing.T) { + // Use a blueprint that's missing a trailing ']' on package + bp := ` + name="test-invalid-toml-blueprint-v0" + version="0.0.1" + description="postInvalidTOMLBlueprintV0" + [package + name="bash" + version="*" + ` + resp, err := PostTOMLBlueprintV0(testState.socket, bp) + require.NoError(t, err, "failed with a client error") + require.False(t, resp.Status, "did not return an error") +} + +// POST an empty TOML blueprint +func TestPostEmptyTOMLBlueprintV0(t *testing.T) { + resp, err := PostTOMLBlueprintV0(testState.socket, "") + require.NoError(t, err, "failed with a client error") + require.False(t, resp.Status, "did not return an error") +} + +// POST a TOML blueprint with an empty name +func TestPostEmptyNameTOMLBlueprintV0(t *testing.T) { + // Use a blueprint with an empty Name + bp := ` + name="" + version="0.0.1" + description="postEmptyNameTOMLBlueprintV0" + [package] + name="bash" + version="*" + ` + resp, err := PostTOMLBlueprintV0(testState.socket, bp) + require.NoError(t, err, "failed with a client error") + require.NotNil(t, resp, "did not return an error") + require.False(t, resp.Status, "wrong Status (true)") + require.Equal(t, "InvalidChars", resp.Errors[0].ID) + require.Contains(t, resp.Errors[0].Msg, "Invalid characters in API path") +} + +// POST a TOML blueprint with an invalid name chars +func TestPostInvalidNameTOMLBlueprintV0(t *testing.T) { + // Use a blueprint with invalid Name + bp := ` + name="I w𝒊ll 𝟉ο𝘁 𝛠a𝔰ꜱ 𝘁𝒉𝝸𝚜" + version="0.0.1" + description="postInvalidNameTOMLBlueprintV0" + [package] + name="bash" + version="*" + ` + resp, err := PostTOMLBlueprintV0(testState.socket, bp) + require.NoError(t, err, "failed with a client error") + require.NotNil(t, resp, "did not return an error") + require.False(t, resp.Status, "wrong Status (true)") + require.Equal(t, "InvalidChars", resp.Errors[0].ID) + require.Contains(t, resp.Errors[0].Msg, "Invalid characters in API path") +} + +// POST a new JSON blueprint +func TestPostJSONBlueprintV0(t *testing.T) { + bp := `{ + "name": "test-json-blueprint-v0", + "description": "postJSONBlueprintV0", + "version": "0.0.1", + "packages": [{"name": "bash", "version": "*"}], + "modules": [{"name": "util-linux", "version": "*"}], + "customizations": {"user": [{"name": "root", "password": "qweqweqwe"}]} + }` + + resp, err := PostJSONBlueprintV0(testState.socket, bp) + require.NoError(t, err, "failed with a client error") + require.True(t, resp.Status, "POST failed: %#v", resp) +} + +// POST an invalid JSON blueprint +func TestPostInvalidJSONBlueprintV0(t *testing.T) { + // Use a blueprint that's missing a trailing '"' on name + bp := `{ + "name": "test-invalid-json-blueprint-v0", + "version": "0.0.1", + "description": "postInvalidJSONBlueprintV0", + "modules": [{"name: "util-linux", "version": "*"}], + }` + + resp, err := PostJSONBlueprintV0(testState.socket, bp) + require.NoError(t, err, "failed with a client error") + require.False(t, resp.Status, "did not return an error") +} + +// POST an empty JSON blueprint +func TestPostEmptyJSONBlueprintV0(t *testing.T) { + resp, err := PostJSONBlueprintV0(testState.socket, "") + require.NoError(t, err, "failed with a client error") + require.False(t, resp.Status, "did not return an error") +} + +// POST a JSON blueprint with an empty name +func TestPostEmptyNameJSONBlueprintV0(t *testing.T) { + // Use a blueprint with an empty Name + bp := `{ + "name": "", + "version": "0.0.1", + "description": "postEmptyNameJSONBlueprintV0", + "modules": [{"name": "util-linux", "version": "*"}] + }` + + resp, err := PostJSONBlueprintV0(testState.socket, bp) + require.NoError(t, err, "failed with a client error") + require.NotNil(t, resp, "did not return an error") + require.False(t, resp.Status, "wrong Status (true)") + require.Equal(t, "InvalidChars", resp.Errors[0].ID) + require.Contains(t, resp.Errors[0].Msg, "Invalid characters in API path") +} + +// POST a JSON blueprint with invalid name chars +func TestPostInvalidNameJSONBlueprintV0(t *testing.T) { + // Use a blueprint with an empty Name + bp := `{ + "name": "I w𝒊ll 𝟉ο𝘁 𝛠a𝔰ꜱ 𝘁𝒉𝝸𝚜", + "description": "postInvalidNameJSONBlueprintV0", + "version": "0.0.1", + "modules": [{"name": "util-linux", "version": "*"}] + }` + + resp, err := PostJSONBlueprintV0(testState.socket, bp) + require.NoError(t, err, "failed with a client error") + require.NotNil(t, resp, "did not return an error") + require.False(t, resp.Status, "wrong Status (true)") + require.Equal(t, "InvalidChars", resp.Errors[0].ID) + require.Contains(t, resp.Errors[0].Msg, "Invalid characters in API path") +} + +// POST a blueprint to the workspace as TOML +func TestPostTOMLWorkspaceV0(t *testing.T) { + bp := ` + name="test-toml-blueprint-ws-v0" + description="postTOMLBlueprintWSV0" + version="0.0.1" + [[packages]] + name="bash" + version="*" + + [[modules]] + name="util-linux" + version="*" + + [[customizations.user]] + name="root" + password="qweqweqwe" + ` + resp, err := PostTOMLWorkspaceV0(testState.socket, bp) + require.NoError(t, err, "failed with a client error") + require.True(t, resp.Status, "POST failed: %#v", resp) +} + +// POST an invalid TOML blueprint to the workspace +func TestPostInvalidTOMLWorkspaceV0(t *testing.T) { + // Use a blueprint that's missing a trailing ']' on package + bp := ` + name="test-invalid-toml-blueprint-ws-v0" + version="0.0.1" + description="postInvalidTOMLWorkspaceV0" + [package + name="bash" + version="*" + ` + resp, err := PostTOMLWorkspaceV0(testState.socket, bp) + require.NoError(t, err, "failed with a client error") + require.False(t, resp.Status, "did not return an error") +} + +// POST an empty TOML blueprint to the workspace +func TestPostEmptyTOMLWorkspaceV0(t *testing.T) { + resp, err := PostTOMLWorkspaceV0(testState.socket, "") + require.NoError(t, err, "failed with a client error") + require.False(t, resp.Status, "did not return an error") +} + +// POST a TOML blueprint with an empty name to the workspace +func TestPostEmptyNameTOMLWorkspaceV0(t *testing.T) { + // Use a blueprint with an empty Name + bp := ` + name="" + version="0.0.1" + description="postEmptyNameTOMLWorkspaceV0" + [package] + name="bash" + version="*" + ` + resp, err := PostTOMLWorkspaceV0(testState.socket, bp) + require.NoError(t, err, "failed with a client error") + require.NotNil(t, resp, "did not return an error") + require.False(t, resp.Status, "wrong Status (true)") + require.Equal(t, "InvalidChars", resp.Errors[0].ID) + require.Contains(t, resp.Errors[0].Msg, "Invalid characters in API path") +} + +// POST a TOML blueprint with an invalid name chars to the workspace +func TestPostInvalidNameTOMLWorkspaceV0(t *testing.T) { + // Use a blueprint with invalid Name + bp := ` + name="I w𝒊ll 𝟉ο𝘁 𝛠a𝔰ꜱ 𝘁𝒉𝝸𝚜" + version="0.0.1" + description="postInvalidNameTOMLWorkspaceV0" + [package] + name="bash" + version="*" + ` + resp, err := PostTOMLWorkspaceV0(testState.socket, bp) + require.NoError(t, err, "failed with a client error") + require.NotNil(t, resp, "did not return an error") + require.False(t, resp.Status, "wrong Status (true)") + require.Equal(t, "InvalidChars", resp.Errors[0].ID) + require.Contains(t, resp.Errors[0].Msg, "Invalid characters in API path") +} + +// POST a blueprint to the workspace as JSON +func TestPostJSONWorkspaceV0(t *testing.T) { + bp := `{ + "name": "test-json-blueprint-ws-v0", + "description": "postJSONBlueprintWSV0", + "version": "0.0.1", + "packages": [{"name": "bash", "version": "*"}], + "modules": [{"name": "util-linux", "version": "*"}], + "customizations": {"user": [{"name": "root", "password": "qweqweqwe"}]} + }` + + resp, err := PostJSONWorkspaceV0(testState.socket, bp) + require.NoError(t, err, "failed with a client error") + require.True(t, resp.Status, "POST failed: %#v", resp) +} + +// POST an invalid JSON blueprint to the workspace +func TestPostInvalidJSONWorkspaceV0(t *testing.T) { + // Use a blueprint that's missing a trailing '"' on name + bp := `{ + "name": "test-invalid-json-blueprint-ws-v0", + "version": "0.0.1", + "description": "TestPostInvalidJSONWorkspaceV0", + "modules": [{"name: "util-linux", "version": "*"}], + }` + + resp, err := PostJSONBlueprintV0(testState.socket, bp) + require.NoError(t, err, "failed with a client error") + require.False(t, resp.Status, "did not return an error") +} + +// POST an empty JSON blueprint to the workspace +func TestPostEmptyJSONWorkspaceV0(t *testing.T) { + resp, err := PostJSONBlueprintV0(testState.socket, "") + require.NoError(t, err, "failed with a client error") + require.False(t, resp.Status, "did not return an error") +} + +// POST a JSON blueprint with an empty name to the workspace +func TestPostEmptyNameJSONWorkspaceV0(t *testing.T) { + // Use a blueprint with an empty Name + bp := `{ + "name": "", + "version": "0.0.1", + "description": "TestPostEmptyNameJSONWorkspaceV0", + "modules": [{"name": "util-linux", "version": "*"}] + }` + + resp, err := PostJSONWorkspaceV0(testState.socket, bp) + require.NoError(t, err, "failed with a client error") + require.NotNil(t, resp, "did not return an error") + require.False(t, resp.Status, "wrong Status (true)") + require.Equal(t, "InvalidChars", resp.Errors[0].ID) + require.Contains(t, resp.Errors[0].Msg, "Invalid characters in API path") +} + +// POST a JSON blueprint with invalid name chars to the workspace +func TestPostInvalidNameJSONWorkspaceV0(t *testing.T) { + // Use a blueprint with an empty Name + bp := `{ + "name": "I w𝒊ll 𝟉ο𝘁 𝛠a𝔰ꜱ 𝘁𝒉𝝸𝚜", + "version": "0.0.1", + "description": "TestPostInvalidNameJSONWorkspaceV0", + "modules": [{"name": "util-linux", "version": "*"}] + }` + + resp, err := PostJSONWorkspaceV0(testState.socket, bp) + require.NoError(t, err, "failed with a client error") + require.NotNil(t, resp, "did not return an error") + require.False(t, resp.Status, "wrong Status (true)") + require.Equal(t, "InvalidChars", resp.Errors[0].ID) + require.Contains(t, resp.Errors[0].Msg, "Invalid characters in API path") +} + +// delete a blueprint +func TestDeleteBlueprintV0(t *testing.T) { + // POST a blueprint to delete + bp := `{ + "name": "test-delete-blueprint-v0", + "description": "deleteBlueprintV0", + "version": "0.0.1", + "packages": [{"name": "bash", "version": "*"}], + "modules": [{"name": "util-linux", "version": "*"}], + "customizations": {"user": [{"name": "root", "password": "qweqweqwe"}]} + }` + + resp, err := PostJSONBlueprintV0(testState.socket, bp) + require.NoError(t, err, "failed with a client error") + require.True(t, resp.Status, "POST failed: %#v", resp) + + // Delete the blueprint + resp, err = DeleteBlueprintV0(testState.socket, "test-delete-blueprint-v0") + require.NoError(t, err, "DELETE failed with a client error") + require.True(t, resp.Status, "DELETE failed: %#v", resp) +} + +// delete a non-existent blueprint +func TestDeleteNonBlueprint0(t *testing.T) { + resp, err := DeleteBlueprintV0(testState.socket, "test-delete-non-blueprint-v0") + require.NoError(t, err, "failed with a client error") + require.False(t, resp.Status, "did not return an error") +} + +// delete a blueprint with invalid name characters +func TestDeleteInvalidBlueprintV0(t *testing.T) { + resp, err := DeleteBlueprintV0(testState.socket, "I w𝒊ll 𝟉ο𝘁 𝛠a𝔰ꜱ 𝘁𝒉𝝸𝚜") + require.NoError(t, err, "failed with a client error") + require.NotNil(t, resp, "did not return an error") + require.False(t, resp.Status, "wrong Status (true)") + require.Equal(t, "InvalidChars", resp.Errors[0].ID) + require.Contains(t, resp.Errors[0].Msg, "Invalid characters in API path") +} + +// delete a new blueprint from the workspace +func TestDeleteNewWorkspaceV0(t *testing.T) { + // POST a blueprint to delete + bp := `{ + "name": "test-delete-new-blueprint-ws-v0", + "description": "deleteNewBlueprintWSV0", + "version": "0.0.1", + "packages": [{"name": "bash", "version": "*"}], + "modules": [{"name": "util-linux", "version": "*"}], + "customizations": {"user": [{"name": "root", "password": "qweqweqwe"}]} + }` + + resp, err := PostJSONWorkspaceV0(testState.socket, bp) + require.NoError(t, err, "POST failed with a client error") + require.True(t, resp.Status, "POST failed: %#v", resp) + + // Delete the blueprint + resp, err = DeleteWorkspaceV0(testState.socket, "test-delete-new-blueprint-ws-v0") + require.NoError(t, err, "DELETE failed with a client error") + require.True(t, resp.Status, "DELETE failed: %#v", resp) +} + +// delete blueprint changes from the workspace +func TestDeleteChangesWorkspaceV0(t *testing.T) { + // POST a blueprint first + bp := `{ + "name": "test-delete-blueprint-changes-ws-v0", + "description": "deleteBlueprintChangesWSV0", + "version": "0.0.1", + "packages": [{"name": "bash", "version": "*"}], + "modules": [{"name": "util-linux", "version": "*"}], + "customizations": {"user": [{"name": "root", "password": "qweqweqwe"}]} + }` + + resp, err := PostJSONBlueprintV0(testState.socket, bp) + require.NoError(t, err, "POST blueprint failed with a client error") + require.True(t, resp.Status, "POST blueprint failed: %#v", resp) + + // Post blueprint changes to the workspace + bp = `{ + "name": "test-delete-blueprint-changes-ws-v0", + "description": "workspace copy", + "version": "0.2.0", + "packages": [{"name": "frobozz", "version": "*"}], + "modules": [{"name": "util-linux", "version": "*"}], + "customizations": {"user": [{"name": "root", "password": "qweqweqwe"}]} + }` + + resp, err = PostJSONWorkspaceV0(testState.socket, bp) + require.NoError(t, err, "POST workspace failed with a client error") + require.True(t, resp.Status, "POST workspace failed: %#v", resp) + + // Get the blueprint, make sure it is the modified one and that changes = true + info, api, err := GetBlueprintsInfoJSONV0(testState.socket, "test-delete-blueprint-changes-ws-v0") + require.NoError(t, err, "GET blueprint failed with a client error") + require.Nil(t, api, "GET blueprint request failed: %#v", api) + require.Greater(t, len(info.Blueprints), 0, "No blueprints returned") + require.Greater(t, len(info.Changes), 0, "No change states returned") + require.Equal(t, "test-delete-blueprint-changes-ws-v0", info.Blueprints[0].Name, "wrong blueprint returned") + require.Equal(t, "test-delete-blueprint-changes-ws-v0", info.Changes[0].Name, "wrong change state returned") + require.True(t, info.Changes[0].Changed, "wrong change state returned (false)") + require.Equal(t, "workspace copy", info.Blueprints[0].Description, "workspace copy not returned") + + // Delete the blueprint from the workspace + resp, err = DeleteWorkspaceV0(testState.socket, "test-delete-blueprint-changes-ws-v0") + require.NoError(t, err, "DELETE workspace failed with a client error") + require.True(t, resp.Status, "DELETE workspace failed: %#v", resp) + + // Get the blueprint, make sure it is the un-modified one + info, api, err = GetBlueprintsInfoJSONV0(testState.socket, "test-delete-blueprint-changes-ws-v0") + require.NoError(t, err, "GET blueprint failed with a client error") + require.Nil(t, api, "GET blueprint request failed: %#v", api) + require.Greater(t, len(info.Blueprints), 0, "No blueprints returned") + require.Greater(t, len(info.Changes), 0, "No change states returned") + require.Equal(t, "test-delete-blueprint-changes-ws-v0", info.Blueprints[0].Name, "wrong blueprint returned") + require.Equal(t, "test-delete-blueprint-changes-ws-v0", info.Changes[0].Name, "wrong change state returned") + require.False(t, info.Changes[0].Changed, "wrong change state returned (true)") + require.Equal(t, "deleteBlueprintChangesWSV0", info.Blueprints[0].Description, "original blueprint not returned") +} + +// delete a non-existent blueprint workspace +func TestDeleteNonWorkspace0(t *testing.T) { + resp, err := DeleteWorkspaceV0(testState.socket, "test-delete-non-blueprint-ws-v0") + require.NoError(t, err, "failed with a client error") + require.False(t, resp.Status, "did not return an error") +} + +// delete a blueprint with invalid name characters +func TestDeleteInvalidWorkspaceV0(t *testing.T) { + resp, err := DeleteWorkspaceV0(testState.socket, "I w𝒊ll 𝟉ο𝘁 𝛠a𝔰ꜱ 𝘁𝒉𝝸𝚜") + require.NoError(t, err, "failed with a client error") + require.NotNil(t, resp, "did not return an error") + require.False(t, resp.Status, "wrong Status (true)") + require.Equal(t, "InvalidChars", resp.Errors[0].ID) + require.Contains(t, resp.Errors[0].Msg, "Invalid characters in API path") +} + +// list blueprints +func TestListBlueprintsV0(t *testing.T) { + // Post a couple of blueprints + bps := []string{`{ + "name": "test-list-blueprint-1-v0", + "description": "listBlueprintsV0", + "version": "0.0.1", + "packages": [{"name": "bash", "version": "*"}], + "modules": [{"name": "util-linux", "version": "*"}], + "customizations": {"user": [{"name": "root", "password": "qweqweqwe"}]} + }`, + `{ + "name": "test-list-blueprint-2-v0", + "description": "listBlueprintsV0", + "version": "0.0.1", + "packages": [{"name": "bash", "version": "*"}], + "modules": [{"name": "util-linux", "version": "*"}], + "customizations": {"user": [{"name": "root", "password": "qweqweqwe"}]} + }`} + + for i := range bps { + resp, err := PostJSONBlueprintV0(testState.socket, bps[i]) + require.NoError(t, err, "POST blueprint failed with a client error") + require.True(t, resp.Status, "POST blueprint failed: %#v", resp) + } + + // Get the list of blueprints + list, api, err := ListBlueprintsV0(testState.socket) + require.NoError(t, err, "GET blueprint failed with a client error") + require.Nil(t, api, "ListBlueprints failed: %#v", api) + require.Contains(t, list, "test-list-blueprint-1-v0") + require.Contains(t, list, "test-list-blueprint-2-v0") +} + +// get blueprint contents as TOML +func TestGetTOMLBlueprintV0(t *testing.T) { + bp := `{ + "name": "test-get-blueprint-1-v0", + "description": "getTOMLBlueprintV0", + "version": "0.0.1", + "packages": [{"name": "bash", "version": "*"}], + "modules": [{"name": "util-linux", "version": "*"}], + "customizations": {"user": [{"name": "root", "password": "qweqweqwe"}]} + }` + + // Post a blueprint + resp, err := PostJSONBlueprintV0(testState.socket, bp) + require.NoError(t, err, "POST blueprint failed with a client error") + require.True(t, resp.Status, "POST blueprint failed: %#v", resp) + + // Get it as TOML + body, api, err := GetBlueprintInfoTOMLV0(testState.socket, "test-get-blueprint-1-v0") + require.NoError(t, err, "GET blueprint failed with a client error") + require.Nil(t, api, "GetBlueprintInfoTOML failed: %#v", api) + require.Greater(t, len(body), 0, "body of response is empty") + + // Can it be decoded as TOML? + var decoded interface{} + _, err = toml.Decode(body, &decoded) + require.NoError(t, err, "TOML decode failed") +} + +// get non-existent blueprint contents as TOML +func TestGetNonTOMLBlueprintV0(t *testing.T) { + _, api, err := GetBlueprintInfoTOMLV0(testState.socket, "test-get-non-blueprint-1-v0") + require.NoError(t, err, "failed with a client error") + require.NotNil(t, api, "did not return an error") + require.False(t, api.Status, "wrong Status (true)") +} + +// get blueprint with invalid name characters +func TestGetInvalidTOMLBlueprintV0(t *testing.T) { + _, api, err := GetBlueprintInfoTOMLV0(testState.socket, "I w𝒊ll 𝟉ο𝘁 𝛠a𝔰ꜱ 𝘁𝒉𝝸𝚜") + require.NoError(t, err, "failed with a client error") + require.NotNil(t, api, "did not return an error") + require.False(t, api.Status, "wrong Status (true)") + require.Equal(t, "InvalidChars", api.Errors[0].ID) + require.Contains(t, api.Errors[0].Msg, "Invalid characters in API path") +} + +// get blueprint contents as JSON +func TestGetJSONBlueprintV0(t *testing.T) { + bp := `{ + "name": "test-get-blueprint-2-v0", + "description": "getJSONBlueprintV0", + "version": "0.0.1", + "packages": [{"name": "bash", "version": "*"}], + "modules": [{"name": "util-linux", "version": "*"}], + "customizations": {"user": [{"name": "root", "password": "qweqweqwe"}]} + }` + + // Post a blueprint + resp, err := PostJSONBlueprintV0(testState.socket, bp) + require.NoError(t, err, "POST blueprint failed with a client error") + require.True(t, resp.Status, "POST blueprint failed: %#v", resp) + + // Get the blueprint and its changed state + info, api, err := GetBlueprintsInfoJSONV0(testState.socket, "test-get-blueprint-2-v0") + require.NoError(t, err, "GET blueprint failed with a client error") + require.Nil(t, api, "GetBlueprintInfoJSON failed: %#v", api) + require.Greater(t, len(info.Blueprints), 0, "No blueprints returned") + require.Greater(t, len(info.Changes), 0, "No change states returned") + require.Equal(t, "test-get-blueprint-2-v0", info.Blueprints[0].Name, "wrong blueprint returned") + require.Equal(t, "test-get-blueprint-2-v0", info.Changes[0].Name, "wrong change state returned") + require.False(t, info.Changes[0].Changed, "wrong change state returned (true)") +} + +// get non-existent blueprint contents as JSON +func TestGetNonJSONBkueprintV0(t *testing.T) { + resp, api, err := GetBlueprintsInfoJSONV0(testState.socket, "test-get-non-blueprint-1-v0") + require.NoError(t, err, "GET blueprint failed with a client error") + require.Nil(t, api, "ListBlueprints failed: %#v", api) + require.Greater(t, len(resp.Errors), 0, "failed with no error: %#v", resp) +} + +// pushing the same blueprint bumps the version number returned by show +func TestBumpBlueprintVersionV0(t *testing.T) { + bp := `{ + "name": "test-bump-blueprint-1-v0", + "description": "bumpBlueprintVersionV0", + "version": "2.1.2", + "packages": [{"name": "bash", "version": "*"}], + "modules": [{"name": "util-linux", "version": "*"}], + "customizations": {"user": [{"name": "root", "password": "qweqweqwe"}]} + }` + + // List blueprints + list, api, err := ListBlueprintsV0(testState.socket) + require.NoError(t, err, "GET blueprint failed with a client error") + require.Nil(t, api, "ListBlueprints failed: %#v", api) + + // If the blueprint already exists it needs to be deleted to start from a known state + sorted := sort.StringSlice(list) + if isStringInSlice(sorted, "test-bump-blueprint-1-v0") { + // Delete this blueprint if it already exists + resp, err := DeleteBlueprintV0(testState.socket, "test-bump-blueprint-1-v0") + require.NoError(t, err, "DELETE blueprint failed with a client error") + require.True(t, resp.Status, "DELETE blueprint failed: %#v", resp) + } + + // Post a blueprint + resp, err := PostJSONBlueprintV0(testState.socket, bp) + require.NoError(t, err, "POST blueprint failed with a client error") + require.True(t, resp.Status, "POST blueprint failed: %#v", resp) + + // Post a blueprint again to bump verion to 2.1.3 + resp, err = PostJSONBlueprintV0(testState.socket, bp) + require.NoError(t, err, "POST blueprint 2nd time failed with a client error") + require.True(t, resp.Status, "POST blueprint 2nd time failed: %#v", resp) + + // Get the blueprint and its changed state + info, api, err := GetBlueprintsInfoJSONV0(testState.socket, "test-bump-blueprint-1-v0") + require.NoError(t, err, "GET blueprint failed with a client error") + require.Nil(t, api, "GetBlueprintsInfoJSON failed: %#v", api) + require.Greater(t, len(info.Blueprints), 0, "No blueprints returned") + require.Equal(t, "test-bump-blueprint-1-v0", info.Blueprints[0].Name, "wrong blueprint returned") + require.Equal(t, "2.1.3", info.Blueprints[0].Version, "wrong blueprint version") +} + +// Make several changes to a blueprint and list the changes +func TestBlueprintChangesV0(t *testing.T) { + bps := []string{`{ + "name": "test-blueprint-changes-v0", + "description": "CheckBlueprintChangesV0", + "version": "0.0.1", + "packages": [{"name": "bash", "version": "*"}], + "modules": [{"name": "util-linux", "version": "*"}] + }`, + `{ + "name": "test-blueprint-changes-v0", + "description": "CheckBlueprintChangesV0", + "version": "0.1.0", + "packages": [{"name": "bash", "version": "*"}, {"name": "tmux", "version": "*"}], + "modules": [{"name": "util-linux", "version": "*"}], + "customizations": {"user": [{"name": "root", "password": "qweqweqwe"}]} + }`, + `{ + "name": "test-blueprint-changes-v0", + "description": "CheckBlueprintChangesV0", + "version": "0.1.1", + "packages": [{"name": "bash", "version": "*"}, {"name": "tmux", "version": "*"}], + "modules": [], + "customizations": {"user": [{"name": "root", "password": "asdasdasd"}]} + }`} + + // Push 3 changes to the blueprint + for i := range bps { + resp, err := PostJSONBlueprintV0(testState.socket, bps[i]) + require.NoError(t, err, "POST blueprint #%d failed with a client error") + require.True(t, resp.Status, "POST blueprint #%d failed: %#v", i, resp) + } + + // List the changes + changes, api, err := GetBlueprintsChangesV0(testState.socket, []string{"test-blueprint-changes-v0"}) + require.NoError(t, err, "GET blueprint failed with a client error") + require.Nil(t, api, "GetBlueprintsChanges failed: %#v", api) + require.Equal(t, 1, len(changes.BlueprintsChanges), "No changes returned") + require.Equal(t, "test-blueprint-changes-v0", changes.BlueprintsChanges[0].Name, "Wrong blueprint changes returned") + require.Greater(t, len(changes.BlueprintsChanges[0].Changes), 2, "Wrong number of changes returned") +} + +// Get changes for a non-existent blueprint +func TestBlueprintNonChangesV0(t *testing.T) { + resp, api, err := GetBlueprintsChangesV0(testState.socket, []string{"test-non-blueprint-changes-v0"}) + require.NoError(t, err, "GET blueprint failed with a client error") + require.Nil(t, api, "GetBlueprintsChanges failed: %#v", api) + require.Greater(t, len(resp.Errors), 0, "failed with no error: %#v", resp) +} + +// get changes with invalid name characters +func TestInvalidBlueprintChangesV0(t *testing.T) { + _, api, err := GetBlueprintsChangesV0(testState.socket, []string{"I w𝒊ll 𝟉ο𝘁 𝛠a𝔰ꜱ 𝘁𝒉𝝸𝚜"}) + require.NoError(t, err, "failed with a client error") + require.NotNil(t, api, "did not return an error") + require.False(t, api.Status, "wrong Status (true)") + require.Equal(t, "InvalidChars", api.Errors[0].ID) + require.Contains(t, api.Errors[0].Msg, "Invalid characters in API path") +} + +// Undo blueprint changes +func TestUndoBlueprintV0(t *testing.T) { + bps := []string{`{ + "name": "test-undo-blueprint-v0", + "description": "CheckUndoBlueprintV0", + "version": "0.0.5", + "packages": [{"name": "bash", "version": "*"}], + "modules": [{"name": "util-linux", "version": "*"}], + "customizations": {"user": [{"name": "root", "password": "qweqweqwe"}]} + }`, + `{ + "name": "test-undo-blueprint-v0", + "description": "CheckUndoBlueprintv0", + "version": "0.0.6", + "packages": [{"name": "bash", "version": "0.5.*"}], + "modules": [{"name": "util-linux", "version": "*"}], + "customizations": {"user": [{"name": "root", "password": "qweqweqwe"}]} + }`} + + // Push original version of the blueprint + resp, err := PostJSONBlueprintV0(testState.socket, bps[0]) + require.NoError(t, err, "POST blueprint #0 failed with a client error") + require.True(t, resp.Status, "POST blueprint #0 failed: %#v", resp) + + // Get the commit hash + changes, api, err := GetBlueprintsChangesV0(testState.socket, []string{"test-undo-blueprint-v0"}) + require.NoError(t, err, "GET blueprint #0 failed with a client error") + require.Nil(t, api, "GetBlueprintsChanges #0 failed: %#v", api) + require.Equal(t, 1, len(changes.BlueprintsChanges), "No changes returned") + require.Greater(t, len(changes.BlueprintsChanges[0].Changes), 0, "Wrong number of changes returned") + commit := changes.BlueprintsChanges[0].Changes[0].Commit + require.NotEmpty(t, commit, "First commit is empty") + + // Push the new version with wrong bash version + resp, err = PostJSONBlueprintV0(testState.socket, bps[1]) + require.NoError(t, err, "POST blueprint #1 failed with a client error") + require.True(t, resp.Status, "POST blueprint #1 failed: %#v", resp) + + // Get the blueprint, confirm bash version is '0.5.*' + info, api, err := GetBlueprintsInfoJSONV0(testState.socket, "test-undo-blueprint-v0") + require.NoError(t, err, "GET blueprint #1 failed with a client error") + require.Nil(t, api, "GetBlueprintsInfo #1 failed: %#v", api) + require.Greater(t, len(info.Blueprints), 0, "No blueprints returned") + require.Greater(t, len(info.Blueprints[0].Packages), 0, "No packages in the blueprint") + require.Equal(t, "bash", info.Blueprints[0].Packages[0].Name, "Wrong package in blueprint") + require.Equal(t, "0.5.*", info.Blueprints[0].Packages[0].Version, "Wrong version in blueprint") + + // Revert the blueprint to the original version + resp, err = UndoBlueprintChangeV0(testState.socket, "test-undo-blueprint-v0", commit) + require.NoError(t, err, "Undo blueprint failed with a client error") + require.True(t, resp.Status, "Undo blueprint failed: %#v", resp) + + // Get the blueprint, confirm bash version is '*' + info, api, err = GetBlueprintsInfoJSONV0(testState.socket, "test-undo-blueprint-v0") + require.NoError(t, err, "GET blueprint failed with a client error") + require.Nil(t, api, "GetBlueprintsInfo failed: %#v", api) + require.Greater(t, len(info.Blueprints), 0, "No blueprints returned") + require.Greater(t, len(info.Blueprints[0].Packages), 0, "No packages in the blueprint") + require.Equal(t, "bash", info.Blueprints[0].Packages[0].Name, "Wrong package in blueprint") + require.Equal(t, "*", info.Blueprints[0].Packages[0].Version, "Wrong version in blueprint") +} + +// Undo non-existent commit blueprint changes +func TestUndoBlueprintNonCommitV0(t *testing.T) { + bps := []string{`{ + "name": "test-undo-blueprint-non-commit-v0", + "description": "CheckUndoBlueprintNonCommitV0", + "version": "0.0.5", + "packages": [{"name": "bash", "version": "*"}], + "modules": [{"name": "util-linux", "version": "*"}], + "customizations": {"user": [{"name": "root", "password": "qweqweqwe"}]} + }`, + `{ + "name": "test-undo-blueprint-non-commit-v0", + "description": "CheckUndoBlueprintNonCommitv0", + "version": "0.0.6", + "packages": [{"name": "bash", "version": "0.5.*"}], + "modules": [{"name": "util-linux", "version": "*"}], + "customizations": {"user": [{"name": "root", "password": "qweqweqwe"}]} + }`} + + for i := range bps { + resp, err := PostJSONBlueprintV0(testState.socket, bps[i]) + require.NoError(t, err, "POST blueprint #%d failed with a client error") + require.True(t, resp.Status, "POST blueprint #%d failed: %#v", i, resp) + } + + resp, err := UndoBlueprintChangeV0(testState.socket, "test-undo-blueprint-non-commit-v0", "FFFF") + require.NoError(t, err, "POST blueprint failed with a client error") + require.False(t, resp.Status, "did not return an error") +} + +// Undo non-existent blueprint changes +func TestUndoNonBlueprintV0(t *testing.T) { + resp, err := UndoBlueprintChangeV0(testState.socket, "test-undo-non-blueprint-v0", "FFFF") + require.NoError(t, err, "blueprint failed with a client error") + require.False(t, resp.Status, "did not return an error") +} + +// undo a blueprint with invalid name characters +func TestUndoInvalidBlueprintV0(t *testing.T) { + resp, err := UndoBlueprintChangeV0(testState.socket, "I w𝒊ll 𝟉ο𝘁 𝛠a𝔰ꜱ 𝘁𝒉𝝸𝚜", "FFFF") + require.NoError(t, err, "failed with a client error") + require.NotNil(t, resp, "did not return an error") + require.False(t, resp.Status, "wrong Status (true)") + require.Equal(t, "InvalidChars", resp.Errors[0].ID) + require.Contains(t, resp.Errors[0].Msg, "Invalid characters in API path") +} + +// undo a blueprint with invalid commit characters +func TestUndoInvalidBlueprintCommitV0(t *testing.T) { + resp, err := UndoBlueprintChangeV0(testState.socket, "test-undo-non-blueprint-v0", "I w𝒊ll 𝟉ο𝘁 𝛠a𝔰ꜱ 𝘁𝒉𝝸𝚜") + require.NoError(t, err, "failed with a client error") + require.NotNil(t, resp, "did not return an error") + require.False(t, resp.Status, "wrong Status (true)") + require.Equal(t, "InvalidChars", resp.Errors[0].ID) + require.Contains(t, resp.Errors[0].Msg, "Invalid characters in API path") +} + +// Tag a blueprint with a new revision +// The blueprint revision tag cannot be reset, it always increments by one, and cannot be deleted. +// So to test tagging we tag two blueprint changes and make sure the second is first +1 +func TestBlueprintTagV0(t *testing.T) { + bps := []string{`{ + "name": "test-tag-blueprint-v0", + "description": "CheckBlueprintTagV0", + "version": "0.0.1", + "packages": [{"name": "bash", "version": "0.1.*"}], + "modules": [{"name": "util-linux", "version": "*"}], + "customizations": {"user": [{"name": "root", "password": "qweqweqwe"}]} + }`, + `{ + "name": "test-tag-blueprint-v0", + "description": "CheckBlueprintTagV0", + "version": "0.0.1", + "packages": [{"name": "bash", "version": "0.5.*"}], + "modules": [{"name": "util-linux", "version": "*"}], + "customizations": {"user": [{"name": "root", "password": "qweqweqwe"}]} + }`} + + // Push a blueprint + resp, err := PostJSONBlueprintV0(testState.socket, bps[0]) + require.NoError(t, err, "POST blueprint #0 failed with a client error") + require.True(t, resp.Status, "POST blueprint #0 failed: %#v", resp) + + // Tag the blueprint + tagResp, err := TagBlueprintV0(testState.socket, "test-tag-blueprint-v0") + require.NoError(t, err, "Tag blueprint #0 failed with a client error") + require.True(t, tagResp.Status, "Tag blueprint #0 failed: %#v", resp) + + // Get changes, get the blueprint's revision + changes, api, err := GetBlueprintsChangesV0(testState.socket, []string{"test-tag-blueprint-v0"}) + require.NoError(t, err, "GET blueprint failed with a client error") + require.Nil(t, api, "GetBlueprintsChanges failed: %#v", api) + require.Equal(t, 1, len(changes.BlueprintsChanges), "No changes returned") + require.Greater(t, len(changes.BlueprintsChanges[0].Changes), 0, "Wrong number of changes returned") + + revision := changes.BlueprintsChanges[0].Changes[0].Revision + require.NotNil(t, revision, "Revision is zero") + require.NotEqual(t, 0, *revision, "Revision is zero") + + // Push a new version of the blueprint + resp, err = PostJSONBlueprintV0(testState.socket, bps[1]) + require.NoError(t, err, "POST blueprint #1 failed with a client error") + require.True(t, resp.Status, "POST blueprint #1 failed: %#v", resp) + + // Tag the blueprint + tagResp, err = TagBlueprintV0(testState.socket, "test-tag-blueprint-v0") + require.NoError(t, err, "Tag blueprint #1 failed with a client error") + require.True(t, tagResp.Status, "Tag blueprint #1 failed: %#v", resp) + + // Get changes, confirm that Revision is revision +1 + changes, api, err = GetBlueprintsChangesV0(testState.socket, []string{"test-tag-blueprint-v0"}) + require.NoError(t, err, "GET blueprint failed with a client error") + require.Nil(t, api, "GetBlueprintsChanges failed: %#v", api) + require.Equal(t, 1, len(changes.BlueprintsChanges), "No changes returned") + require.Greater(t, len(changes.BlueprintsChanges[0].Changes), 0, "Wrong number of changes returned") + + newRevision := changes.BlueprintsChanges[0].Changes[0].Revision + require.NotNil(t, newRevision, "Revision is not %d", *revision+1) + require.Equal(t, *revision+1, *newRevision, "Revision is not %d", *revision+1) +} + +// Tag a non-existent blueprint +func TestNonBlueprintTagV0(t *testing.T) { + tagResp, err := TagBlueprintV0(testState.socket, "test-tag-non-blueprint-v0") + require.NoError(t, err, "failed with a client error") + require.False(t, tagResp.Status, "did not return an error") +} + +// tag a blueprint with invalid name characters +func TestTagInvalidBlueprintV0(t *testing.T) { + resp, err := TagBlueprintV0(testState.socket, "I w𝒊ll 𝟉ο𝘁 𝛠a𝔰ꜱ 𝘁𝒉𝝸𝚜") + require.NoError(t, err, "failed with a client error") + require.NotNil(t, resp, "did not return an error") + require.False(t, resp.Status, "wrong Status (true)") + require.Equal(t, "InvalidChars", resp.Errors[0].ID) + require.Contains(t, resp.Errors[0].Msg, "Invalid characters in API path") +} + +// depsolve a blueprint with packages and modules +func TestBlueprintDepsolveV0(t *testing.T) { + bp := `{ + "name": "test-deps-blueprint-v0", + "description": "CheckBlueprintDepsolveV0", + "version": "0.0.1", + "packages": [{"name": "bash", "version": "*"}], + "modules": [{"name": "util-linux", "version": "*"}] + }` + + // Push a blueprint + resp, err := PostJSONBlueprintV0(testState.socket, bp) + require.NoError(t, err, "POST blueprint failed with a client error") + require.True(t, resp.Status, "POST blueprint failed: %#v", resp) + + // Depsolve the blueprint + deps, api, err := DepsolveBlueprintV0(testState.socket, "test-deps-blueprint-v0") + require.NoError(t, err, "Depsolve blueprint failed with a client error") + require.Nil(t, api, "DepsolveBlueprint failed: %#v", api) + require.Greater(t, len(deps.Blueprints), 0, "No blueprint dependencies returned") + require.Greater(t, len(deps.Blueprints[0].Dependencies), 2, "Not enough dependencies returned") + + // TODO + // Get the bash and util-linux dependencies and make sure their versions are not * + +} + +// When gsl with version * was specified in the blueprint, +// composer depsolved both x86_64 and i686 version of gsl. +// This test case should prevent this from happening. +// gsl is used because it has x86_64 and i686 versions on both RHEL and Fedora. +// Also, gsl-devel package exists, which is not dependant on gsl and shouldn't +// be depsolved. +func TestMultilibBlueprintDepsolveV0(t *testing.T) { + if testState.unitTest { + t.Skip() + } + versionStrings := []string{"*", "2.*", ""} + for _, versionString := range versionStrings { + t.Run(versionString, func(t *testing.T) { + bp := `{ + "name": "test-multilib-deps-blueprint-v0", + "description": "CheckBlueprintDepsolveV0", + "version": "0.0.1", + "packages": [{"name": "gsl", "version": "` + versionString + `"}] + }` + + resp, err := PostJSONBlueprintV0(testState.socket, bp) + require.NoError(t, err, "POST blueprint failed with a client error") + require.True(t, resp.Status, "POST blueprint failed: %#v", resp) + + deps, api, err := DepsolveBlueprintV0(testState.socket, "test-multilib-deps-blueprint-v0") + require.NoError(t, err, "Depsolve blueprint failed with a client error") + require.Nil(t, api, "DepsolveBlueprint failed: %#v", api) + + gslCount := 0 + for _, dep := range deps.Blueprints[0].Dependencies { + if strings.HasPrefix(dep.Name, "gsl") { + gslCount += 1 + } + } + + if !assert.Equalf(t, 1, gslCount, "gsl is specified %d-times in the depsolve, should be there only once", gslCount) { + depsolveOutput, err := json.MarshalIndent(deps, "", " ") + require.NoError(t, err) + t.Logf("depsolve output:\n%s", depsolveOutput) + t.FailNow() + } + }) + } +} + +// depsolve a non-existent blueprint +func TestNonBlueprintDepsolveV0(t *testing.T) { + resp, api, err := DepsolveBlueprintV0(testState.socket, "test-deps-non-blueprint-v0") + require.NoError(t, err, "Depsolve blueprint failed with a client error") + require.Nil(t, api, "DepsolveBlueprint failed: %#v", api) + require.Greater(t, len(resp.Errors), 0, "failed with no error: %#v", resp) +} + +// depsolve a blueprint with invalid name characters +func TestDepsolveInvalidBlueprintV0(t *testing.T) { + _, api, err := DepsolveBlueprintV0(testState.socket, "I w𝒊ll 𝟉ο𝘁 𝛠a𝔰ꜱ 𝘁𝒉𝝸𝚜") + require.NoError(t, err, "failed with a client error") + require.NotNil(t, api, "did not return an error") + require.False(t, api.Status, "wrong Status (true)") + require.Equal(t, "InvalidChars", api.Errors[0].ID) + require.Contains(t, api.Errors[0].Msg, "Invalid characters in API path") +} + +// depsolve a blueprint with a depsolve that will fail +func TestBadDepsolveBlueprintV0(t *testing.T) { + if testState.unitTest { + t.Skip() + } + bp := `{ + "name": "test-baddep-blueprint-v0", + "description": "TestBadDepsolveBlueprintV0", + "version": "0.0.1", + "packages": [{"name": "bash", "version": "*"}, {"name": "bad-package", "version": "1.32.1"}] + }` + + // Push a blueprint + resp, err := PostJSONBlueprintV0(testState.socket, bp) + require.NoError(t, err, "POST blueprint failed with a client error") + require.True(t, resp.Status, "POST blueprint failed: %#v", resp) + + // Depsolve the blueprint + deps, api, err := DepsolveBlueprintV0(testState.socket, "test-baddep-blueprint-v0") + require.NoError(t, err, "Depsolve blueprint failed with a client error") + require.Nil(t, api, "DepsolveBlueprint failed: %#v", api) + require.Greater(t, len(deps.Blueprints), 0, "No blueprints returned") + require.Greater(t, len(deps.Errors), 0, "Not enough errors returned") +} + +// freeze a blueprint +func TestBlueprintFreezeV0(t *testing.T) { + if testState.unitTest { + // The unit test mock server uses packages named dep-packageN + bp := `{ + "name": "test", + "description": "CheckBlueprintFreezeV0", + "version": "0.0.1", + "packages": [{"name": "dep-package1", "version": "*"}], + "modules": [{"name": "dep-package2", "version": "*"}] + }` + + // Push a blueprint + resp, err := PostJSONBlueprintV0(testState.socket, bp) + require.NoError(t, err, "POST blueprint failed with a client error") + require.True(t, resp.Status, "POST blueprint failed: %#v", resp) + + // The unit test server returns hard-coded frozen packages + // in the modules section with an empty packages list + frozen, api, err := FreezeBlueprintV0(testState.socket, "test") + require.NoError(t, err, "Freeze blueprint failed with a client error") + require.Nil(t, api, "FreezeBlueprint failed: %#v", api) + require.Greater(t, len(frozen.Blueprints), 0, "No frozen blueprints returned") + require.Equal(t, 1, len(frozen.Blueprints[0].Blueprint.Packages), "No frozen packages returned") + require.Equal(t, 1, len(frozen.Blueprints[0].Blueprint.Modules), "No frozen modules returned") + return + } + + // Integration test + bp := `{ + "name": "test-freeze-blueprint-v0", + "description": "CheckBlueprintFreezeV0", + "version": "0.0.1", + "packages": [{"name": "bash", "version": "*"}], + "modules": [{"name": "util-linux", "version": "*"}] + }` + + // Push a blueprint + resp, err := PostJSONBlueprintV0(testState.socket, bp) + require.NoError(t, err, "POST blueprint failed with a client error") + require.True(t, resp.Status, "POST blueprint failed: %#v", resp) + + // Freeze the blueprint + frozen, api, err := FreezeBlueprintV0(testState.socket, "test-freeze-blueprint-v0") + require.NoError(t, err, "Freeze blueprint failed with a client error") + require.Nil(t, api, "FreezeBlueprint failed: %#v", api) + require.Greater(t, len(frozen.Blueprints), 0, "No frozen blueprints returned") + require.Greater(t, len(frozen.Blueprints[0].Blueprint.Packages), 0, "No frozen packages returned") + require.Equal(t, "bash", frozen.Blueprints[0].Blueprint.Packages[0].Name, "Wrong package in frozen blueprint") + require.NotEqual(t, "*", frozen.Blueprints[0].Blueprint.Packages[0].Version, "Wrong version in frozen blueprint") + require.Greater(t, len(frozen.Blueprints[0].Blueprint.Modules), 0, "No frozen modules returned") + require.Equal(t, "util-linux", frozen.Blueprints[0].Blueprint.Modules[0].Name, "Wrong module in frozen blueprint") + require.NotEqual(t, "*", frozen.Blueprints[0].Blueprint.Modules[0].Version, "Wrong version in frozen blueprint module") +} + +// freeze a non-existent blueprint +func TestNonBlueprintFreezeV0(t *testing.T) { + resp, api, err := FreezeBlueprintV0(testState.socket, "test-freeze-non-blueprint-v0") + require.NoError(t, err, "Freeze blueprint failed with a client error") + require.Nil(t, api, "FreezeBlueprint failed: %#v", api) + require.Greater(t, len(resp.Errors), 0, "failed with no error: %#v", resp) +} + +// freeze a blueprint with invalid name characters +func TestFreezeInvalidBlueprintV0(t *testing.T) { + _, api, err := FreezeBlueprintV0(testState.socket, "I w𝒊ll 𝟉ο𝘁 𝛠a𝔰ꜱ 𝘁𝒉𝝸𝚜") + require.NoError(t, err, "failed with a client error") + require.NotNil(t, api, "did not return an error") + require.False(t, api.Status, "wrong Status (true)") + require.Equal(t, "InvalidChars", api.Errors[0].ID) + require.Contains(t, api.Errors[0].Msg, "Invalid characters in API path") +} + +// TODO diff of blueprint changes diff --git a/internal/client/client.go b/internal/client/client.go new file mode 100644 index 0000000..b0f89d1 --- /dev/null +++ b/internal/client/client.go @@ -0,0 +1,225 @@ +// Package client contains functions for communicating with the API server +// Copyright (C) 2020 by Red Hat, Inc. +package client + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + "io" + "io/ioutil" + "net/http" +) + +// Request handles sending the request, handling errors, returning the response +// socket is the path to a Unix Domain socket +// path is the full URL path, including query strings +// body is the data to send with POST +// headers is a map of header:value to add to the request +// +// If it is successful a http.Response will be returned. If there is an error, the response will be +// nil and error will be returned. +func Request(socket *http.Client, method, path, body string, headers map[string]string) (*http.Response, error) { + req, err := http.NewRequest(method, "http://localhost"+path, bytes.NewReader([]byte(body))) + if err != nil { + return nil, err + } + + for h, v := range headers { + req.Header.Set(h, v) + } + + resp, err := socket.Do(req) + if err != nil { + return nil, err + } + + return resp, nil +} + +// APIErrorMsg is an individual API error with an ID and a message string +type APIErrorMsg struct { + ID string `json:"id"` + Msg string `json:"msg"` +} + +// String returns the error id and message as a string +func (r *APIErrorMsg) String() string { + return fmt.Sprintf("%s: %s", r.ID, r.Msg) +} + +// APIResponse is returned by some requests to indicate success or failure. +// It is always returned when the status code is 400, indicating some kind of error with the request. +// If Status is true the Errors list will not be included or will be empty. +// When Status is false it will include at least one APIErrorMsg with details about the error. +type APIResponse struct { + Status bool `json:"status"` + Errors []APIErrorMsg `json:"errors,omitempty"` +} + +// String returns the description of the first error, if there is one +func (r *APIResponse) String() string { + if len(r.Errors) == 0 { + return "" + } + return r.Errors[0].String() +} + +// AllErrors returns a list of error description strings +func (r *APIResponse) AllErrors() (all []string) { + for i := range r.Errors { + all = append(all, r.Errors[i].String()) + } + return all +} + +// NewAPIResponse converts the response body to a status response +func NewAPIResponse(body []byte) (*APIResponse, error) { + var status APIResponse + err := json.Unmarshal(body, &status) + if err != nil { + return nil, err + } + return &status, nil +} + +// apiError converts an API error 400 JSON to a status response +// +// The response body should alway be of the form: +// {"status": false, "errors": [{"id": ERROR_ID, "msg": ERROR_MESSAGE}, ...]} +func apiError(resp *http.Response) (*APIResponse, error) { + defer resp.Body.Close() + + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err + } + return NewAPIResponse(body) +} + +// GetRawBody returns the resp.Body io.ReadCloser to the caller +// NOTE: The caller is responsible for closing the Body when finished +func GetRawBody(socket *http.Client, method, path string) (io.ReadCloser, *APIResponse, error) { + resp, err := Request(socket, method, path, "", map[string]string{}) + if err != nil { + return nil, nil, err + } + + // Convert the API's JSON error response to an error type and return it + // lorax-composer (wrongly) returns 404 for some of its json responses + if resp.StatusCode == 400 || resp.StatusCode == 404 { + apiResponse, err := apiError(resp) + return nil, apiResponse, err + } + return resp.Body, nil, nil +} + +// GetRaw returns raw data from a GET request +// Errors from the API are returned as an APIResponse, client errors are returned as error +func GetRaw(socket *http.Client, method, path string) ([]byte, *APIResponse, error) { + body, resp, err := GetRawBody(socket, method, path) + if err != nil || resp != nil { + return nil, resp, err + } + defer body.Close() + + bodyBytes, err := ioutil.ReadAll(body) + if err != nil { + return nil, nil, err + } + + return bodyBytes, nil, nil +} + +// GetJSONAll returns all JSON results from a GET request using offset/limit +// This function makes 2 requests, the first with limit=0 to get the total number of results, +// and then with limit=TOTAL to fetch all of the results. +// The path passed to GetJSONAll should not include the limit or offset query parameters +// Errors from the API are returned as an APIResponse, client errors are returned as error +func GetJSONAll(socket *http.Client, path string) ([]byte, *APIResponse, error) { + body, api, err := GetRaw(socket, "GET", path+"?limit=0") + if api != nil || err != nil { + return nil, api, err + } + + // We just want the total + var j interface{} + err = json.Unmarshal(body, &j) + if err != nil { + return nil, nil, err + } + m := j.(map[string]interface{}) + var v interface{} + var ok bool + if v, ok = m["total"]; !ok { + return nil, nil, errors.New("Response is missing the total value") + } + + switch total := v.(type) { + case float64: + allResults := fmt.Sprintf("%s?limit=%v", path, total) + return GetRaw(socket, "GET", allResults) + } + return nil, nil, errors.New("Response 'total' is not a float64") +} + +// PostRaw sends a POST with raw data and returns the raw response body +// Errors from the API are returned as an APIResponse, client errors are returned as error +func PostRaw(socket *http.Client, path, body string, headers map[string]string) ([]byte, *APIResponse, error) { + resp, err := Request(socket, "POST", path, body, headers) + if err != nil { + return nil, nil, err + } + + // Convert the API's JSON error response to an APIResponse + if resp.StatusCode == 400 { + apiResponse, err := apiError(resp) + return nil, apiResponse, err + } + defer resp.Body.Close() + + responseBody, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, nil, err + } + + return responseBody, nil, nil +} + +// PostTOML sends a POST with TOML data and the Content-Type header set to "text/x-toml" +// Errors from the API are returned as an APIResponse, client errors are returned as error +func PostTOML(socket *http.Client, path, body string) ([]byte, *APIResponse, error) { + headers := map[string]string{"Content-Type": "text/x-toml"} + return PostRaw(socket, path, body, headers) +} + +// PostJSON sends a POST with JSON data and the Content-Type header set to "application/json" +// Errors from the API are returned as an APIResponse, client errors are returned as error +func PostJSON(socket *http.Client, path, body string) ([]byte, *APIResponse, error) { + headers := map[string]string{"Content-Type": "application/json"} + return PostRaw(socket, path, body, headers) +} + +// DeleteRaw sends a DELETE request +// Errors from the API are returned as an APIResponse, client errors are returned as error +func DeleteRaw(socket *http.Client, path string) ([]byte, *APIResponse, error) { + resp, err := Request(socket, "DELETE", path, "", nil) + if err != nil { + return nil, nil, err + } + + // Convert the API's JSON error response to an APIResponse + if resp.StatusCode == 400 { + apiResponse, err := apiError(resp) + return nil, apiResponse, err + } + defer resp.Body.Close() + + responseBody, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, nil, err + } + + return responseBody, nil, nil +} diff --git a/internal/client/client_test.go b/internal/client/client_test.go new file mode 100644 index 0000000..efa61f6 --- /dev/null +++ b/internal/client/client_test.go @@ -0,0 +1,109 @@ +// Package client contains functions for communicating with the API server +// Copyright (C) 2020 by Red Hat, Inc. +package client + +import ( + "net/http" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestRequest(t *testing.T) { + // Make a request to the status route + resp, err := Request(testState.socket, "GET", "/api/status", "", map[string]string{}) + require.NoError(t, err) + require.Equal(t, 200, resp.StatusCode) + + // Make a request to a bad route + resp, err = Request(testState.socket, "GET", "/invalidroute", "", map[string]string{}) + require.NoError(t, err) + require.Equal(t, http.StatusNotFound, resp.StatusCode) + + // Test that apiError returns an error response + _, err = apiError(resp) + require.NoError(t, err) + + // Make a request with a bad offset to trigger a JSON response with Status set to 400 + resp, err = Request(testState.socket, "GET", "/api/v0/blueprints/list?offset=bad", "", map[string]string{}) + require.NoError(t, err) + require.Equal(t, http.StatusBadRequest, resp.StatusCode) +} + +func TestAPIErrorMsg(t *testing.T) { + err := APIErrorMsg{ID: "ERROR_ID", Msg: "Meaningful error message"} + require.Equal(t, "ERROR_ID: Meaningful error message", err.String()) +} + +func TestAPIResponse(t *testing.T) { + resp := APIResponse{Status: true} + require.Equal(t, "", resp.String()) + + resp = APIResponse{Status: false, + Errors: []APIErrorMsg{ + {ID: "ONE_ERROR", Msg: "First message"}, + {ID: "TWO_ERROR", Msg: "Second message"}}, + } + require.Equal(t, "ONE_ERROR: First message", resp.String()) + require.ElementsMatch(t, []string{ + "ONE_ERROR: First message", + "TWO_ERROR: Second message"}, resp.AllErrors()) +} + +func TestGetRaw(t *testing.T) { + // Get raw data + b, resp, err := GetRaw(testState.socket, "GET", "/api/status") + require.NoError(t, err) + require.Nil(t, resp) + require.Greater(t, len(b), 0) + + // Get an API error + b, resp, err = GetRaw(testState.socket, "GET", "/api/v0/blueprints/list?offset=bad") + require.NoError(t, err) + require.NotNilf(t, resp, "GetRaw bad request did not return an error: %v", b) + require.False(t, resp.Status) + require.GreaterOrEqual(t, len(resp.AllErrors()), 1) + require.Equal(t, "BadLimitOrOffset", resp.Errors[0].ID) +} + +func TestGetJSONAll(t *testing.T) { + // Get all the projects + b, resp, err := GetJSONAll(testState.socket, "/api/v0/projects/list") + require.NoError(t, err) + require.Nil(t, resp) + require.GreaterOrEqualf(t, len(b), 100, "GetJSONAll response is too short: %#v", b) + + // Run it on a route that doesn't support offset/limit + _, _, err = GetJSONAll(testState.socket, "/api/status") + require.EqualError(t, err, "Response is missing the total value") +} + +func TestPostRaw(t *testing.T) { + // There are no routes that accept raw POST w/o Content-Type so this ends up testing the error path + b, resp, err := PostRaw(testState.socket, "/api/v0/blueprints/new", "nobody", nil) + require.NoError(t, err) + require.NotNilf(t, resp, "PostRaw bad request did not return an error: %v", b) + require.False(t, resp.Status) + require.GreaterOrEqualf(t, len(resp.AllErrors()), 1, "GetRaw error did not return error message: %#v", resp) + require.Equalf(t, "BlueprintsError", resp.Errors[0].ID, "GetRaw error ID is not BlueprintsError: %#v", resp) +} + +func TestPostTOML(t *testing.T) { + blueprint := `name = "test-blueprint" + description = "TOML test blueprint" + version = "0.0.1"` + b, resp, err := PostTOML(testState.socket, "/api/v0/blueprints/new", blueprint) + require.NoError(t, err) + require.Nil(t, resp) + require.Contains(t, string(b), "true") +} + +func TestPostJSON(t *testing.T) { + blueprint := `{"name": "test-blueprint", + "description": "JSON test blueprint", + "version": "0.0.1"}` + b, resp, err := PostJSON(testState.socket, "/api/v0/blueprints/new", blueprint) + require.NoError(t, err) + require.Nil(t, resp) + require.Contains(t, string(b), "true") +} diff --git a/internal/client/compose.go b/internal/client/compose.go new file mode 100644 index 0000000..5c7e3e7 --- /dev/null +++ b/internal/client/compose.go @@ -0,0 +1,212 @@ +// Package client - compose contains functions for the compose API +// Copyright (C) 2020 by Red Hat, Inc. +package client + +import ( + "encoding/json" + "io" + "net/http" + "net/url" + + "github.com/osbuild/osbuild-composer/internal/weldr" +) + +// PostComposeV0 sends a JSON compose string to the API +// and returns an APIResponse +func PostComposeV0(socket *http.Client, compose string) (*APIResponse, error) { + body, resp, err := PostJSON(socket, "/api/v0/compose", compose) + if resp != nil || err != nil { + return resp, err + } + return NewAPIResponse(body) +} + +// NewComposeResponseV0 converts the response body to a status response +func NewComposeResponseV0(body []byte) (*weldr.ComposeResponseV0, error) { + var response weldr.ComposeResponseV0 + err := json.Unmarshal(body, &response) + if err != nil { + return nil, err + } + return &response, nil +} + +// GetFinishedComposesV0 returns a list of the finished composes +func GetFinishedComposesV0(socket *http.Client) ([]weldr.ComposeEntryV0, *APIResponse, error) { + body, resp, err := GetRaw(socket, "GET", "/api/v0/compose/finished") + if resp != nil || err != nil { + return []weldr.ComposeEntryV0{}, resp, err + } + var finished weldr.ComposeFinishedResponseV0 + err = json.Unmarshal(body, &finished) + if err != nil { + return []weldr.ComposeEntryV0{}, nil, err + } + return finished.Finished, nil, nil +} + +// GetFailedComposesV0 returns a list of the failed composes +func GetFailedComposesV0(socket *http.Client) ([]weldr.ComposeEntryV0, *APIResponse, error) { + body, resp, err := GetRaw(socket, "GET", "/api/v0/compose/failed") + if resp != nil || err != nil { + return []weldr.ComposeEntryV0{}, resp, err + } + var failed weldr.ComposeFailedResponseV0 + err = json.Unmarshal(body, &failed) + if err != nil { + return []weldr.ComposeEntryV0{}, nil, err + } + return failed.Failed, nil, nil +} + +// GetComposeStatusV0 returns a list of composes matching the optional filter parameters +func GetComposeStatusV0(socket *http.Client, uuids, blueprint, status, composeType string) ([]weldr.ComposeEntryV0, *APIResponse, error) { + // Build the query string + route := "/api/v0/compose/status/" + uuids + + params := url.Values{} + if len(blueprint) > 0 { + params.Add("blueprint", blueprint) + } + if len(status) > 0 { + params.Add("status", status) + } + if len(composeType) > 0 { + params.Add("type", composeType) + } + + if len(params) > 0 { + route = route + "?" + params.Encode() + } + + body, resp, err := GetRaw(socket, "GET", route) + if resp != nil || err != nil { + return []weldr.ComposeEntryV0{}, resp, err + } + var composes weldr.ComposeStatusResponseV0 + err = json.Unmarshal(body, &composes) + if err != nil { + return []weldr.ComposeEntryV0{}, nil, err + } + return composes.UUIDs, nil, nil +} + +// GetComposeTypesV0 returns a list of the failed composes +func GetComposesTypesV0(socket *http.Client) ([]weldr.ComposeTypeV0, *APIResponse, error) { + body, resp, err := GetRaw(socket, "GET", "/api/v0/compose/types") + if resp != nil || err != nil { + return []weldr.ComposeTypeV0{}, resp, err + } + var composeTypes weldr.ComposeTypesResponseV0 + err = json.Unmarshal(body, &composeTypes) + if err != nil { + return []weldr.ComposeTypeV0{}, nil, err + } + return composeTypes.Types, nil, nil +} + +// DeleteComposeV0 deletes one or more composes based on their uuid +func DeleteComposeV0(socket *http.Client, uuids string) (weldr.DeleteComposeResponseV0, *APIResponse, error) { + body, resp, err := DeleteRaw(socket, "/api/v0/compose/delete/"+uuids) + if resp != nil || err != nil { + return weldr.DeleteComposeResponseV0{}, resp, err + } + var deleteResponse weldr.DeleteComposeResponseV0 + err = json.Unmarshal(body, &deleteResponse) + if err != nil { + return weldr.DeleteComposeResponseV0{}, nil, err + } + return deleteResponse, nil, nil +} + +// GetComposeInfoV0 returns detailed information about the selected compose +func GetComposeInfoV0(socket *http.Client, uuid string) (weldr.ComposeInfoResponseV0, *APIResponse, error) { + body, resp, err := GetRaw(socket, "GET", "/api/v0/compose/info/"+uuid) + if resp != nil || err != nil { + return weldr.ComposeInfoResponseV0{}, resp, err + } + var info weldr.ComposeInfoResponseV0 + err = json.Unmarshal(body, &info) + if err != nil { + return weldr.ComposeInfoResponseV0{}, nil, err + } + return info, nil, nil +} + +// GetComposeQueueV0 returns the list of composes in the queue +func GetComposeQueueV0(socket *http.Client) (weldr.ComposeQueueResponseV0, *APIResponse, error) { + body, resp, err := GetRaw(socket, "GET", "/api/v0/compose/queue") + if resp != nil || err != nil { + return weldr.ComposeQueueResponseV0{}, resp, err + } + var queue weldr.ComposeQueueResponseV0 + err = json.Unmarshal(body, &queue) + if err != nil { + return weldr.ComposeQueueResponseV0{}, nil, err + } + return queue, nil, nil +} + +// Test compose metadata for unknown uuid + +// Test compose results for unknown uuid + +// WriteComposeImageV0 requests the image for a compose and writes it to an io.Writer +func WriteComposeImageV0(socket *http.Client, w io.Writer, uuid string) (*APIResponse, error) { + body, resp, err := GetRawBody(socket, "GET", "/api/v0/compose/image/"+uuid) + if resp != nil || err != nil { + return resp, err + } + _, err = io.Copy(w, body) + body.Close() + + return nil, err +} + +// WriteComposeLogsV0 requests the logs for a compose and writes it to an io.Writer +func WriteComposeLogsV0(socket *http.Client, w io.Writer, uuid string) (*APIResponse, error) { + body, resp, err := GetRawBody(socket, "GET", "/api/v0/compose/logs/"+uuid) + if resp != nil || err != nil { + return resp, err + } + _, err = io.Copy(w, body) + body.Close() + + return nil, err +} + +// WriteComposeLogV0 requests the log for a compose and writes it to an io.Writer +func WriteComposeLogV0(socket *http.Client, w io.Writer, uuid string) (*APIResponse, error) { + body, resp, err := GetRawBody(socket, "GET", "/api/v0/compose/log/"+uuid) + if resp != nil || err != nil { + return resp, err + } + _, err = io.Copy(w, body) + body.Close() + + return nil, err +} + +// WriteComposeMetadataV0 requests the metadata for a compose and writes it to an io.Writer +func WriteComposeMetadataV0(socket *http.Client, w io.Writer, uuid string) (*APIResponse, error) { + body, resp, err := GetRawBody(socket, "GET", "/api/v0/compose/metadata/"+uuid) + if resp != nil || err != nil { + return resp, err + } + _, err = io.Copy(w, body) + body.Close() + + return nil, err +} + +// WriteComposeResultsV0 requests the results for a compose and writes it to an io.Writer +func WriteComposeResultsV0(socket *http.Client, w io.Writer, uuid string) (*APIResponse, error) { + body, resp, err := GetRawBody(socket, "GET", "/api/v0/compose/metadata/"+uuid) + if resp != nil || err != nil { + return resp, err + } + _, err = io.Copy(w, body) + body.Close() + + return nil, err +} diff --git a/internal/client/compose_test.go b/internal/client/compose_test.go new file mode 100644 index 0000000..1e4b0fa --- /dev/null +++ b/internal/client/compose_test.go @@ -0,0 +1,452 @@ +// Package client - compose_test contains functions to check the compose API +// Copyright (C) 2020 by Red Hat, Inc. + +// Tests should be self-contained and not depend on the state of the server +// They should use their own blueprints, not the default blueprints +// They should not assume version numbers for packages will match +// They should run tests that depend on previous results from the same function +// not from other functions. +// +// NOTE: The compose fail/finish tests use fake composes so the following are not +// fully tested here: +// +// * image download +// * log download +// * logs archive download +// +// In addition osbuild-composer has not implemented: +// +// * compose/results +// * compose/metadata +package client + +import ( + "io/ioutil" + "net/http" + "testing" + + "github.com/google/uuid" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/osbuild/osbuild-composer/internal/weldr" +) + +// Test the compose types API +func TestComposeTypesV0(t *testing.T) { + composeTypes, resp, err := GetComposesTypesV0(testState.socket) + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) + require.Greater(t, len(composeTypes), 0) + var found bool + for _, t := range composeTypes { + if t.Name == "qcow2" && t.Enabled == true { + found = true + break + } + } + require.True(t, found, "qcow2 not in list of compose types: %#v", composeTypes) +} + +// Test compose with invalid type fails +func TestComposeInvalidTypeV0(t *testing.T) { + // lorax-composer checks the blueprint name before checking the compose type + // so we need to push an empty blueprint to make sure the right failure is checked + bp := ` + name="test-compose-invalid-type-v0" + description="TestComposeInvalidTypeV0" + version="0.0.1" + ` + resp, err := PostTOMLBlueprintV0(testState.socket, bp) + require.NoError(t, err, "failed with a client error") + require.True(t, resp.Status, "POST failed: %#v", resp) + + compose := `{ + "blueprint_name": "test-compose-invalid-type-v0", + "compose_type": "snakes", + "branch": "master" + }` + resp, err = PostComposeV0(testState.socket, compose) + require.NoError(t, err, "failed with a client error") + require.NotNil(t, resp) + require.False(t, resp.Status, "POST did not fail") + require.Equal(t, len(resp.Errors), 1) + require.Contains(t, resp.Errors[0].Msg, "snakes") +} + +// Test compose for unknown blueprint fails +func TestComposeInvalidBlueprintV0(t *testing.T) { + compose := `{ + "blueprint_name": "test-invalid-bp-compose-v0", + "compose_type": "qcow2", + "branch": "master" + }` + resp, err := PostComposeV0(testState.socket, compose) + require.NoError(t, err, "failed with a client error") + require.NotNil(t, resp) + require.False(t, resp.Status, "POST did not fail") + require.Equal(t, len(resp.Errors), 1) + require.Contains(t, resp.Errors[0].Msg, "test-invalid-bp-compose-v0") +} + +// Test compose for empty blueprint fails +func TestComposeEmptyBlueprintV0(t *testing.T) { + compose := `{ + "blueprint_name": "", + "compose_type": "qcow2", + "branch": "master" + }` + resp, err := PostComposeV0(testState.socket, compose) + require.NoError(t, err, "failed with a client error") + require.NotNil(t, resp) + require.False(t, resp.Status, "POST did not fail") + require.Greater(t, len(resp.Errors), 0) + require.Contains(t, resp.Errors[0].Msg, "Invalid characters in API path") +} + +// Test compose for blueprint with invalid characters fails +func TestComposeInvalidCharsBlueprintV0(t *testing.T) { + compose := `{ + "blueprint_name": "I w𝒊ll 𝟉ο𝘁 𝛠a𝔰ꜱ 𝘁𝒉𝝸𝚜", + "compose_type": "qcow2", + "branch": "master" + }` + resp, err := PostComposeV0(testState.socket, compose) + require.NoError(t, err, "failed with a client error") + require.NotNil(t, resp) + require.False(t, resp.Status, "POST did not fail") + require.Greater(t, len(resp.Errors), 0) + require.Contains(t, resp.Errors[0].Msg, "Invalid characters in API path") +} + +// Test compose cancel for unknown uuid fails +// Is cancel implemented at all? + +// Test compose delete for unknown uuid +func TestDeleteUnknownComposeV0(t *testing.T) { + status, resp, err := DeleteComposeV0(testState.socket, "c91818f9-8025-47af-89d2-f030d7000c2c") + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) + // TODO -- fix the API Handler in osbuild-composer, should be no uuids + assert.Equal(t, 0, len(status.UUIDs), "%#v", status) + require.Equal(t, 1, len(status.Errors), "%#v", status) + require.Equal(t, "UnknownUUID", status.Errors[0].ID) + require.Contains(t, status.Errors[0].Msg, "c91818f9-8025-47af-89d2-f030d7000c2c") +} + +// Test compose info for unknown uuid +func TestUnknownComposeInfoV0(t *testing.T) { + _, resp, err := GetComposeInfoV0(testState.socket, "c91818f9-8025-47af-89d2-f030d7000c2c") + require.NoError(t, err, "failed with a client error") + require.NotNil(t, resp) + require.False(t, resp.Status) + require.Equal(t, 1, len(resp.Errors)) + require.Equal(t, "UnknownUUID", resp.Errors[0].ID) + require.Contains(t, resp.Errors[0].Msg, "c91818f9-8025-47af-89d2-f030d7000c2c") +} + +// Test compose metadata for unknown uuid +// TODO osbuild-composer has not implemented compose/metadata yet + +// Test compose results for unknown uuid +// TODO osbuild-composer has not implemented compose/results yet + +// Test compose image for unknown uuid +func TestComposeInvalidImageV0(t *testing.T) { + resp, err := WriteComposeImageV0(testState.socket, ioutil.Discard, "c91818f9-8025-47af-89d2-f030d7000c2c") + require.NoError(t, err, "failed with a client error") + require.NotNil(t, resp) + require.False(t, resp.Status) + require.Equal(t, 1, len(resp.Errors)) + require.Equal(t, "UnknownUUID", resp.Errors[0].ID) + require.Contains(t, resp.Errors[0].Msg, "c91818f9-8025-47af-89d2-f030d7000c2c") +} + +// Test compose logs for unknown uuid +func TestComposeInvalidLogsV0(t *testing.T) { + resp, err := WriteComposeLogsV0(testState.socket, ioutil.Discard, "c91818f9-8025-47af-89d2-f030d7000c2c") + require.NoError(t, err, "failed with a client error") + require.NotNil(t, resp) + require.False(t, resp.Status) + require.Equal(t, 1, len(resp.Errors)) + require.Equal(t, "UnknownUUID", resp.Errors[0].ID) + require.Contains(t, resp.Errors[0].Msg, "c91818f9-8025-47af-89d2-f030d7000c2c") +} + +// Test compose log for unknown uuid +func TestComposeInvalidLogV0(t *testing.T) { + resp, err := WriteComposeLogV0(testState.socket, ioutil.Discard, "c91818f9-8025-47af-89d2-f030d7000c2c") + require.NoError(t, err, "failed with a client error") + require.NotNil(t, resp) + require.False(t, resp.Status) + require.Equal(t, 1, len(resp.Errors)) + require.Equal(t, "UnknownUUID", resp.Errors[0].ID) + require.Contains(t, resp.Errors[0].Msg, "c91818f9-8025-47af-89d2-f030d7000c2c") +} + +// Test compose metadata for unknown uuid +func TestComposeInvalidMetadataV0(t *testing.T) { + resp, err := WriteComposeMetadataV0(testState.socket, ioutil.Discard, "c91818f9-8025-47af-89d2-f030d7000c2c") + require.NoError(t, err, "failed with a client error") + require.NotNil(t, resp) + require.False(t, resp.Status) + require.Equal(t, 1, len(resp.Errors)) + require.Equal(t, "UnknownUUID", resp.Errors[0].ID) + require.Contains(t, resp.Errors[0].Msg, "c91818f9-8025-47af-89d2-f030d7000c2c") +} + +// Test compose results for unknown uuid +func TestComposeInvalidResultsV0(t *testing.T) { + resp, err := WriteComposeResultsV0(testState.socket, ioutil.Discard, "c91818f9-8025-47af-89d2-f030d7000c2c") + require.NoError(t, err, "failed with a client error") + require.NotNil(t, resp) + require.False(t, resp.Status) + require.Equal(t, 1, len(resp.Errors)) + require.Equal(t, "UnknownUUID", resp.Errors[0].ID) + require.Contains(t, resp.Errors[0].Msg, "c91818f9-8025-47af-89d2-f030d7000c2c") +} + +// Test status filter for unknown uuid +func TestComposeInvalidStatusV0(t *testing.T) { + status, resp, err := GetComposeStatusV0(testState.socket, "c91818f9-8025-47af-89d2-f030d7000c2c", "", "", "") + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) + require.Equal(t, 0, len(status)) +} + +// Test status filter for unknown blueprint +func TestComposeUnknownBlueprintStatusV0(t *testing.T) { + status, resp, err := GetComposeStatusV0(testState.socket, "*", "unknown-blueprint-test", "", "") + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) + require.Equal(t, 0, len(status)) +} + +// Test status filter for blueprint with invalid characters +func TestComposeInvalidBlueprintStatusV0(t *testing.T) { + status, resp, err := GetComposeStatusV0(testState.socket, "*", "I w𝒊ll 𝟉ο𝘁 𝛠a𝔰ꜱ 𝘁𝒉𝝸𝚜", "", "") + require.NoError(t, err, "failed with a client error") + require.NotNil(t, resp) + require.Equal(t, "InvalidChars", resp.Errors[0].ID) + require.Contains(t, resp.Errors[0].Msg, "Invalid characters in API path") + require.Equal(t, 0, len(status)) +} + +// Helper for searching compose results for a UUID +func UUIDInComposeResults(buildID uuid.UUID, results []weldr.ComposeEntryV0) bool { + for idx := range results { + if results[idx].ID == buildID { + return true + } + } + return false +} + +// Helper to wait for a build id to not be in the queue +func WaitForBuild(socket *http.Client, buildID uuid.UUID) (*APIResponse, error) { + for { + queue, resp, err := GetComposeQueueV0(testState.socket) + if err != nil { + return nil, err + } + if resp != nil { + return resp, nil + } + + if !UUIDInComposeResults(buildID, queue.New) && + !UUIDInComposeResults(buildID, queue.Run) { + break + } + } + return nil, nil +} + +// Setup and run the failed compose tests +func TestFailedComposeV0(t *testing.T) { + bp := ` + name="test-failed-compose-v0" + description="TestFailedComposeV0" + version="0.0.1" + [[packages]] + name="bash" + version="*" + + [[modules]] + name="util-linux" + version="*" + + [[customizations.user]] + name="root" + password="qweqweqwe" + ` + resp, err := PostTOMLBlueprintV0(testState.socket, bp) + require.NoError(t, err, "failed with a client error") + require.True(t, resp.Status, "POST failed: %#v", resp) + + compose := `{ + "blueprint_name": "test-failed-compose-v0", + "compose_type": "qcow2", + "branch": "master" + }` + // Create a failed test compose + body, resp, err := PostJSON(testState.socket, "/api/v1/compose?test=1", compose) + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) + + response, err := NewComposeResponseV0(body) + require.NoError(t, err, "failed with a client error") + require.True(t, response.Status, "POST failed: %#v", response) + buildID := response.BuildID + + // Wait until the build is not listed in the queue + resp, err = WaitForBuild(testState.socket, buildID) + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) + + // Test finished after compose (should not have finished) + finished, resp, err := GetFinishedComposesV0(testState.socket) + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) + require.False(t, UUIDInComposeResults(buildID, finished)) + + // Test failed after compose (should have failed) + failed, resp, err := GetFailedComposesV0(testState.socket) + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) + require.True(t, UUIDInComposeResults(buildID, failed), "%s not found in failed list: %#v", buildID, failed) + + // Test status filter on failed compose + status, resp, err := GetComposeStatusV0(testState.socket, "*", "", "FAILED", "") + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) + require.True(t, UUIDInComposeResults(buildID, status), "%s not found in status list: %#v", buildID, status) + + // Test status of build id + status, resp, err = GetComposeStatusV0(testState.socket, buildID.String(), "", "", "") + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) + require.True(t, UUIDInComposeResults(buildID, status), "%s not found in status list: %#v", buildID, status) + + // Test status filter using FINISHED, should not be listed + status, resp, err = GetComposeStatusV0(testState.socket, "*", "", "FINISHED", "") + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) + require.False(t, UUIDInComposeResults(buildID, status)) + + // Test compose info for the failed compose + info, resp, err := GetComposeInfoV0(testState.socket, buildID.String()) + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) + require.Equal(t, "FAILED", info.QueueStatus) + require.Equal(t, buildID, info.ID) + + // Test requesting the compose logs for the failed build + resp, err = WriteComposeLogsV0(testState.socket, ioutil.Discard, buildID.String()) + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) + + // Test requesting the compose metadata for the failed build + resp, err = WriteComposeMetadataV0(testState.socket, ioutil.Discard, buildID.String()) + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) + + // Test requesting the compose results for the failed build + resp, err = WriteComposeResultsV0(testState.socket, ioutil.Discard, buildID.String()) + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) +} + +// Setup and run the finished compose tests +func TestFinishedComposeV0(t *testing.T) { + bp := ` + name="test-finished-compose-v0" + description="TestFinishedComposeV0" + version="0.0.1" + [[packages]] + name="bash" + version="*" + + [[modules]] + name="util-linux" + version="*" + + [[customizations.user]] + name="root" + password="qweqweqwe" + ` + resp, err := PostTOMLBlueprintV0(testState.socket, bp) + require.NoError(t, err, "failed with a client error") + require.True(t, resp.Status, "POST failed: %#v", resp) + + compose := `{ + "blueprint_name": "test-finished-compose-v0", + "compose_type": "qcow2", + "branch": "master" + }` + // Create a finished test compose + body, resp, err := PostJSON(testState.socket, "/api/v1/compose?test=2", compose) + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) + + response, err := NewComposeResponseV0(body) + require.NoError(t, err, "failed with a client error") + require.True(t, response.Status, "POST failed: %#v", response) + buildID := response.BuildID + + // Wait until the build is not listed in the queue + resp, err = WaitForBuild(testState.socket, buildID) + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) + + // Test failed after compose (should not have failed) + failed, resp, err := GetFailedComposesV0(testState.socket) + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) + require.False(t, UUIDInComposeResults(buildID, failed)) + + // Test finished after compose (should have finished) + finished, resp, err := GetFinishedComposesV0(testState.socket) + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) + require.True(t, UUIDInComposeResults(buildID, finished), "%s not found in finished list: %#v", buildID, finished) + + // Test status filter on finished compose + status, resp, err := GetComposeStatusV0(testState.socket, "*", "", "FINISHED", "") + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) + require.True(t, UUIDInComposeResults(buildID, status), "%s not found in status list: %#v", buildID, status) + + // Test status of build id + status, resp, err = GetComposeStatusV0(testState.socket, buildID.String(), "", "", "") + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) + require.True(t, UUIDInComposeResults(buildID, status), "%s not found in status list: %#v", buildID, status) + + // Test status filter using FAILED, should not be listed + status, resp, err = GetComposeStatusV0(testState.socket, "*", "", "FAILED", "") + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) + require.False(t, UUIDInComposeResults(buildID, status)) + + // Test compose info for the finished compose + info, resp, err := GetComposeInfoV0(testState.socket, buildID.String()) + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) + require.Equal(t, "FINISHED", info.QueueStatus) + require.Equal(t, buildID, info.ID) + + // Test requesting the compose logs for the finished build + resp, err = WriteComposeLogsV0(testState.socket, ioutil.Discard, buildID.String()) + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) + + // Test requesting the compose metadata for the finished build + resp, err = WriteComposeMetadataV0(testState.socket, ioutil.Discard, buildID.String()) + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) + + // Test requesting the compose results for the finished build + resp, err = WriteComposeResultsV0(testState.socket, ioutil.Discard, buildID.String()) + require.NoError(t, err, "failed with a client error") + require.Nil(t, resp) +} diff --git a/internal/client/integration_test.go b/internal/client/integration_test.go new file mode 100644 index 0000000..73a1982 --- /dev/null +++ b/internal/client/integration_test.go @@ -0,0 +1,52 @@ +// Package client - integration_test contains functions to setup integration tests +// Copyright (C) 2020 by Red Hat, Inc. + +// +build integration + +package client + +import ( + "fmt" + "os" + "testing" + + "github.com/osbuild/osbuild-composer/internal/test" +) + +// Hold test state to share between tests +var testState *TestState + +// Setup the socket to use for running the tests +// Also makes sure there is a running server to test against +func executeTests(m *testing.M) int { + var err error + testState, err = setUpTestState("/run/weldr/api.socket", false) + if err != nil { + fmt.Printf("ERROR: Test setup failed: %s\n", err) + panic(err) + } + + // Setup the test repo + dir, err := test.SetUpTemporaryRepository() + if err != nil { + fmt.Printf("ERROR: Test repo setup failed: %s\n", err) + panic(err) + } + + // Cleanup after the tests + defer func() { + err := test.TearDownTemporaryRepository(dir) + if err != nil { + fmt.Printf("ERROR: Failed to clean up temporary repository: %s\n", err) + } + }() + + testState.repoDir = dir + + // Run the tests + return m.Run() +} + +func TestMain(m *testing.M) { + os.Exit(executeTests(m)) +} diff --git a/internal/client/modules.go b/internal/client/modules.go new file mode 100644 index 0000000..c95f4c5 --- /dev/null +++ b/internal/client/modules.go @@ -0,0 +1,70 @@ +// Package client - modules contains functions for the modules API +// Copyright (C) 2020 by Red Hat, Inc. +package client + +import ( + "encoding/json" + "fmt" + "net/http" + // "strings" + + "github.com/osbuild/osbuild-composer/internal/rpmmd" + "github.com/osbuild/osbuild-composer/internal/weldr" +) + +// ListAllModulesV0 returns a list of all the available module names +func ListAllModulesV0(socket *http.Client) ([]weldr.ModuleName, *APIResponse, error) { + body, resp, err := GetJSONAll(socket, "/api/v0/modules/list") + if resp != nil || err != nil { + return nil, resp, err + } + var list weldr.ModulesListV0 + err = json.Unmarshal(body, &list) + if err != nil { + return nil, nil, err + } + return list.Modules, nil, nil +} + +// ListSomeModulesV0 returns a list of all the available modules names +func ListSomeModulesV0(socket *http.Client, offset, limit int) ([]weldr.ModuleName, *APIResponse, error) { + path := fmt.Sprintf("/api/v0/modules/list?offset=%d&limit=%d", offset, limit) + body, resp, err := GetRaw(socket, "GET", path) + if resp != nil || err != nil { + return nil, resp, err + } + var list weldr.ModulesListV0 + err = json.Unmarshal(body, &list) + if err != nil { + return nil, nil, err + } + return list.Modules, nil, nil +} + +// ListModulesV0 returns a list of all the available modules names +func ListModulesV0(socket *http.Client, moduleNames string) ([]weldr.ModuleName, *APIResponse, error) { + body, resp, err := GetRaw(socket, "GET", "/api/v0/modules/list/"+moduleNames) + if resp != nil || err != nil { + return nil, resp, err + } + var list weldr.ModulesListV0 + err = json.Unmarshal(body, &list) + if err != nil { + return nil, nil, err + } + return list.Modules, nil, nil +} + +// GetModulesInfoV0 returns detailed module info on the named modules +func GetModulesInfoV0(socket *http.Client, modulesNames string) ([]rpmmd.PackageInfo, *APIResponse, error) { + body, resp, err := GetRaw(socket, "GET", "/api/v0/modules/info/"+modulesNames) + if resp != nil || err != nil { + return nil, resp, err + } + var list weldr.ModulesInfoV0 + err = json.Unmarshal(body, &list) + if err != nil { + return nil, nil, err + } + return list.Modules, nil, nil +} diff --git a/internal/client/modules_test.go b/internal/client/modules_test.go new file mode 100644 index 0000000..b352982 --- /dev/null +++ b/internal/client/modules_test.go @@ -0,0 +1,104 @@ +// Package client - modules_test contains functions to check the modules API +// Copyright (C) 2020 by Red Hat, Inc. + +// Tests should be self-contained and not depend on the state of the server +// They should use their own blueprints, not the default blueprints +// They should not assume version numbers for packages will match +// They should run tests that depend on previous results from the same function +// not from other functions. +package client + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +// List all the modules +func TestListAllModulesV0(t *testing.T) { + modules, api, err := ListAllModulesV0(testState.socket) + require.NoError(t, err) + require.Nil(t, api, "ListAllModules failed: %#v", api) + require.True(t, len(modules) > 1, "Not enough modules returned") +} + +// List some modules +func TestListSomeModulesV0(t *testing.T) { + modules, api, err := ListSomeModulesV0(testState.socket, 0, 5) + require.NoError(t, err) + require.Nil(t, api, "ListSomeProjects failed: %#v", api) + require.True(t, len(modules) == 5, "Not enough modules returned") +} + +// List one module +func TestListOneModulesV0(t *testing.T) { + var moduleNames string + + // Unit test uses modules/packages named packageN + if testState.unitTest { + moduleNames = "package1" + } else { + moduleNames = "bash" + } + modules, api, err := ListModulesV0(testState.socket, moduleNames) + require.NoError(t, err) + require.Nil(t, api, "ListModules failed: %#v", api) + require.True(t, len(modules) == 1, "Not enough modules returned") +} + +// List two modules +func TestListTwoModulesV0(t *testing.T) { + var moduleNames string + + // Unit test uses modules/packages named packageN + if testState.unitTest { + moduleNames = "package1,package2" + } else { + moduleNames = "bash,tmux" + } + modules, api, err := ListModulesV0(testState.socket, moduleNames) + require.NoError(t, err) + require.Nil(t, api, "ListModules failed: %#v", api) + require.True(t, len(modules) == 2, "Not enough modules returned") +} + +// Get info on a specific module +func TestOneModuleInfoV0(t *testing.T) { + var moduleNames string + + // Unit test uses modules/packages named packageN + if testState.unitTest { + moduleNames = "package1" + } else { + moduleNames = "bash" + } + modules, api, err := GetModulesInfoV0(testState.socket, moduleNames) + require.NoError(t, err) + require.Nil(t, api, "GetModulesInfo failed: %#v", api) + require.True(t, len(modules) == 1, "Not enough modules returned: %#v", modules) +} + +// Get info on two specific modules +func TestTwoModuleInfoV0(t *testing.T) { + var moduleNames string + + // Unit test uses modules/packages named packageN + if testState.unitTest { + moduleNames = "package1,package2" + } else { + moduleNames = "bash,tmux" + } + modules, api, err := GetModulesInfoV0(testState.socket, moduleNames) + require.NoError(t, err) + require.Nil(t, api, "GetModulesInfo failed: %#v", api) + require.True(t, len(modules) == 2, "Not enough modules returned: %#v", modules) +} + +// Test an invalid info request +func TestEmptyModuleInfoV0(t *testing.T) { + modules, api, err := GetModulesInfoV0(testState.socket, "") + require.NoError(t, err) + require.NotNil(t, api, "did not return an error") + require.False(t, api.Status, "wrong Status (true)") + require.True(t, len(modules) == 0) +} diff --git a/internal/client/projects.go b/internal/client/projects.go new file mode 100644 index 0000000..5a99343 --- /dev/null +++ b/internal/client/projects.go @@ -0,0 +1,70 @@ +// Package client - projects contains functions for the projects API +// Copyright (C) 2020 by Red Hat, Inc. +package client + +import ( + "encoding/json" + "fmt" + "net/http" + // "strings" + + "github.com/osbuild/osbuild-composer/internal/rpmmd" + "github.com/osbuild/osbuild-composer/internal/weldr" +) + +// ListAllProjectsV0 returns a list of all the available project names +func ListAllProjectsV0(socket *http.Client) ([]rpmmd.PackageInfo, *APIResponse, error) { + body, resp, err := GetJSONAll(socket, "/api/v0/projects/list") + if resp != nil || err != nil { + return nil, resp, err + } + var list weldr.ProjectsListV0 + err = json.Unmarshal(body, &list) + if err != nil { + return nil, nil, err + } + return list.Projects, nil, nil +} + +// ListSomeProjectsV0 returns a list of all the available project names +func ListSomeProjectsV0(socket *http.Client, offset, limit int) ([]rpmmd.PackageInfo, *APIResponse, error) { + path := fmt.Sprintf("/api/v0/projects/list?offset=%d&limit=%d", offset, limit) + body, resp, err := GetRaw(socket, "GET", path) + if resp != nil || err != nil { + return nil, resp, err + } + var list weldr.ProjectsListV0 + err = json.Unmarshal(body, &list) + if err != nil { + return nil, nil, err + } + return list.Projects, nil, nil +} + +// GetProjectsInfoV0 returns detailed project info on the named projects +func GetProjectsInfoV0(socket *http.Client, projNames string) ([]rpmmd.PackageInfo, *APIResponse, error) { + body, resp, err := GetRaw(socket, "GET", "/api/v0/projects/info/"+projNames) + if resp != nil || err != nil { + return nil, resp, err + } + var list weldr.ProjectsInfoV0 + err = json.Unmarshal(body, &list) + if err != nil { + return nil, nil, err + } + return list.Projects, nil, nil +} + +//DepsolveProjectsV0 returns the dependencies of the names projects +func DepsolveProjectsV0(socket *http.Client, projNames string) ([]rpmmd.PackageSpec, *APIResponse, error) { + body, resp, err := GetRaw(socket, "GET", "/api/v0/projects/depsolve/"+projNames) + if resp != nil || err != nil { + return nil, resp, err + } + var deps weldr.ProjectsDependenciesV0 + err = json.Unmarshal(body, &deps) + if err != nil { + return nil, nil, err + } + return deps.Projects, nil, nil +} diff --git a/internal/client/projects_test.go b/internal/client/projects_test.go new file mode 100644 index 0000000..66568bc --- /dev/null +++ b/internal/client/projects_test.go @@ -0,0 +1,98 @@ +// Package client - projects_test contains functions to check the projects API +// Copyright (C) 2020 by Red Hat, Inc. + +// Tests should be self-contained and not depend on the state of the server +// They should use their own blueprints, not the default blueprints +// They should not assume version numbers for packages will match +// They should run tests that depend on previous results from the same function +// not from other functions. +package client + +import ( + // "strings" + "testing" + + "github.com/stretchr/testify/require" +) + +// List all the projects +func TestListAllProjectsV0(t *testing.T) { + projs, api, err := ListAllProjectsV0(testState.socket) + require.NoError(t, err) + require.Nil(t, api, "ListAllProjects failed: %#v", api) + require.True(t, len(projs) > 1, "Not enough projects returned") +} + +// List some of the projects +func TestListSomeProjectsV0(t *testing.T) { + projs, api, err := ListSomeProjectsV0(testState.socket, 0, 5) + require.NoError(t, err) + require.Nil(t, api, "ListSomeProjects failed: %#v", api) + require.True(t, len(projs) == 5, "Not enough projects returned") +} + +// Get info on a specific project +func TestOneProjectsInfoV0(t *testing.T) { + var moduleNames string + + // Unit test uses modules/packages named packageN + if testState.unitTest { + moduleNames = "package1" + } else { + moduleNames = "bash" + } + projs, api, err := GetProjectsInfoV0(testState.socket, moduleNames) + require.NoError(t, err) + require.Nil(t, api, "GetProjectsInfo failed: %#v", api) + require.True(t, len(projs) == 1, "Not enough projects returned") +} + +// Get info on a two specific projects +func TestTwoProjectsInfoV0(t *testing.T) { + var moduleNames string + + // Unit test uses modules/packages named packageN + if testState.unitTest { + moduleNames = "package1,package2" + } else { + moduleNames = "bash,tmux" + } + projs, api, err := GetProjectsInfoV0(testState.socket, moduleNames) + require.NoError(t, err) + require.Nil(t, api, "GetProjectsInfo failed: %#v", api) + require.True(t, len(projs) == 2, "Not enough projects returned") +} + +// Test an invalid info request +func TestEmptyProjectsInfoV0(t *testing.T) { + projs, api, err := GetProjectsInfoV0(testState.socket, "") + require.NoError(t, err) + require.NotNil(t, api, "did not return an error") + require.False(t, api.Status, "wrong Status (true)") + require.True(t, len(projs) == 0) +} + +// Depsolve projects +func TestDepsolveOneProjectV0(t *testing.T) { + deps, api, err := DepsolveProjectsV0(testState.socket, "bash") + require.NoError(t, err) + require.Nil(t, api, "DepsolveProjects failed: %#v", api) + require.True(t, len(deps) > 2, "Not enough dependencies returned") +} + +// Depsolve several projects +func TestDepsolveTwoProjectV0(t *testing.T) { + deps, api, err := DepsolveProjectsV0(testState.socket, "bash,tmux") + require.NoError(t, err) + require.Nil(t, api, "DepsolveProjects failed: %#v", api) + require.True(t, len(deps) > 2, "Not enough dependencies returned") +} + +// Depsolve empty projects list +func TestEmptyDepsolveProjectV0(t *testing.T) { + deps, api, err := DepsolveProjectsV0(testState.socket, "") + require.NoError(t, err) + require.NotNil(t, api, "did not return an error") + require.False(t, api.Status, "wrong Status (true)") + require.True(t, len(deps) == 0) +} diff --git a/internal/client/source.go b/internal/client/source.go new file mode 100644 index 0000000..03cac0e --- /dev/null +++ b/internal/client/source.go @@ -0,0 +1,126 @@ +// Package client - source contains functions for the source API +// Copyright (C) 2020 by Red Hat, Inc. +package client + +import ( + "encoding/json" + // "fmt" + "net/http" + // "strings" + + "github.com/osbuild/osbuild-composer/internal/weldr" +) + +// ListSourcesV0 returns a list of source names +func ListSourcesV0(socket *http.Client) ([]string, *APIResponse, error) { + body, resp, err := GetRaw(socket, "GET", "/api/v0/projects/source/list") + if resp != nil || err != nil { + return nil, resp, err + } + var list weldr.SourceListV0 + err = json.Unmarshal(body, &list) + if err != nil { + return nil, nil, err + } + return list.Sources, nil, nil +} + +// ListSourcesV1 returns a list of source ids +func ListSourcesV1(socket *http.Client) ([]string, *APIResponse, error) { + body, resp, err := GetRaw(socket, "GET", "/api/v1/projects/source/list") + if resp != nil || err != nil { + return nil, resp, err + } + var list weldr.SourceListV1 + err = json.Unmarshal(body, &list) + if err != nil { + return nil, nil, err + } + return list.Sources, nil, nil +} + +// GetSourceInfoV0 returns detailed information on the named sources +func GetSourceInfoV0(socket *http.Client, sourceNames string) (map[string]weldr.SourceConfigV0, *APIResponse, error) { + body, resp, err := GetRaw(socket, "GET", "/api/v0/projects/source/info/"+sourceNames) + if resp != nil || err != nil { + return nil, resp, err + } + var info weldr.SourceInfoResponseV0 + err = json.Unmarshal(body, &info) + if err != nil { + return nil, nil, err + } + return info.Sources, nil, nil +} + +// GetSourceInfoV1 returns detailed information on the named sources +func GetSourceInfoV1(socket *http.Client, sourceNames string) (map[string]weldr.SourceConfigV1, *APIResponse, error) { + body, resp, err := GetRaw(socket, "GET", "/api/v1/projects/source/info/"+sourceNames) + if resp != nil || err != nil { + return nil, resp, err + } + var info weldr.SourceInfoResponseV1 + err = json.Unmarshal(body, &info) + if err != nil { + return nil, nil, err + } + return info.Sources, nil, nil +} + +// PostJSONSourceV0 sends a JSON source string to the API +// and returns an APIResponse +func PostJSONSourceV0(socket *http.Client, source string) (*APIResponse, error) { + body, resp, err := PostJSON(socket, "/api/v0/projects/source/new", source) + if resp != nil || err != nil { + return resp, err + } + return NewAPIResponse(body) +} + +// PostJSONSourceV1 sends a JSON source string to the API +// and returns an APIResponse +func PostJSONSourceV1(socket *http.Client, source string) (*APIResponse, error) { + body, resp, err := PostJSON(socket, "/api/v1/projects/source/new", source) + if resp != nil || err != nil { + return resp, err + } + return NewAPIResponse(body) +} + +// PostTOMLSourceV0 sends a TOML source string to the API +// and returns an APIResponse +func PostTOMLSourceV0(socket *http.Client, source string) (*APIResponse, error) { + body, resp, err := PostTOML(socket, "/api/v0/projects/source/new", source) + if resp != nil || err != nil { + return resp, err + } + return NewAPIResponse(body) +} + +// PostTOMLSourceV1 sends a TOML source string to the API +// and returns an APIResponse +func PostTOMLSourceV1(socket *http.Client, source string) (*APIResponse, error) { + body, resp, err := PostTOML(socket, "/api/v1/projects/source/new", source) + if resp != nil || err != nil { + return resp, err + } + return NewAPIResponse(body) +} + +// DeleteSourceV0 deletes the named source and returns an APIResponse +func DeleteSourceV0(socket *http.Client, sourceName string) (*APIResponse, error) { + body, resp, err := DeleteRaw(socket, "/api/v0/projects/source/delete/"+sourceName) + if resp != nil || err != nil { + return resp, err + } + return NewAPIResponse(body) +} + +// DeleteSourceV1 deletes the named source and returns an APIResponse +func DeleteSourceV1(socket *http.Client, sourceName string) (*APIResponse, error) { + body, resp, err := DeleteRaw(socket, "/api/v1/projects/source/delete/"+sourceName) + if resp != nil || err != nil { + return resp, err + } + return NewAPIResponse(body) +} diff --git a/internal/client/source_test.go b/internal/client/source_test.go new file mode 100644 index 0000000..8d26101 --- /dev/null +++ b/internal/client/source_test.go @@ -0,0 +1,564 @@ +// Package client - source_test contains functions to check the source API +// Copyright (C) 2020 by Red Hat, Inc. + +// Tests should be self-contained and not depend on the state of the server +// They should use their own blueprints, not the default blueprints +// They should not assume version numbers for packages will match +// They should run tests that depend on previous results from the same function +// not from other functions. +package client + +import ( + "strings" + "testing" + + "github.com/stretchr/testify/require" +) + +// POST a new JSON source +func TestPOSTJSONSourceV0(t *testing.T) { + source := `{ + "name": "package-repo-json-v0", + "url": "file://REPO-PATH", + "type": "yum-baseurl", + "proxy": "https://proxy-url/", + "check_ssl": true, + "check_gpg": true, + "gpgkey_urls": ["https://url/path/to/gpg-key"] + }` + source = strings.Replace(source, "REPO-PATH", testState.repoDir, 1) + + resp, err := PostJSONSourceV0(testState.socket, source) + require.NoError(t, err, "POST source failed with a client error") + require.True(t, resp.Status, "POST source failed: %#v", resp) + + resp, err = DeleteSourceV0(testState.socket, "package-repo-json-v0") + require.NoError(t, err, "DELETE source failed with a client error") + require.True(t, resp.Status, "DELETE source failed: %#v", resp) +} + +// POST an empty JSON source using V0 API +func TestPOSTEmptyJSONSourceV0(t *testing.T) { + resp, err := PostJSONSourceV0(testState.socket, "") + require.NoError(t, err, "POST source failed with a client error") + require.False(t, resp.Status, "did not return an error") +} + +// POST an empty JSON source using V1 API +func TestPOSTEmptyJSONSourceV1(t *testing.T) { + resp, err := PostJSONSourceV1(testState.socket, "") + require.NoError(t, err, "POST source failed with a client error") + require.False(t, resp.Status, "did not return an error") +} + +// POST an invalid JSON source using V0 API +func TestPOSTInvalidJSONSourceV0(t *testing.T) { + // Missing quote in url + source := `{ + "name": "package-repo-json-v0", + "url": "file://REPO-PATH, + "type": "yum-baseurl", + "proxy": "https://proxy-url/", + "check_ssl": true, + "check_gpg": true, + "gpgkey_urls": ["https://url/path/to/gpg-key"] + }` + + resp, err := PostJSONSourceV0(testState.socket, source) + require.NoError(t, err, "POST source failed with a client error") + require.False(t, resp.Status, "did not return an error") +} + +// POST an invalid JSON source using V1 API +func TestPOSTInvalidJSONSourceV1(t *testing.T) { + // Missing quote in url + source := `{ + "id": "package-repo-json-v1", + "name": "json package repo", + "url": "file://REPO-PATH, + "type": "yum-baseurl", + "proxy": "https://proxy-url/", + "check_ssl": true, + "check_gpg": true, + "gpgkey_urls": ["https://url/path/to/gpg-key"] + }` + + resp, err := PostJSONSourceV1(testState.socket, source) + require.NoError(t, err, "POST source failed with a client error") + require.False(t, resp.Status, "did not return an error") +} + +// POST a new TOML source using V0 API +func TestPOSTTOMLSourceV0(t *testing.T) { + source := ` + name = "package-repo-toml-v0" + url = "file://REPO-PATH" + type = "yum-baseurl" + proxy = "https://proxy-url/" + check_ssl = true + check_gpg = true + gpgkey_urls = ["https://url/path/to/gpg-key"] + ` + source = strings.Replace(source, "REPO-PATH", testState.repoDir, 1) + + resp, err := PostTOMLSourceV0(testState.socket, source) + require.NoError(t, err, "POST source failed with a client error") + require.True(t, resp.Status, "POST source failed: %#v", resp) + + resp, err = DeleteSourceV0(testState.socket, "package-repo-toml-v0") + require.NoError(t, err, "DELETE source failed with a client error") + require.True(t, resp.Status, "DELETE source failed: %#v", resp) +} + +// POST a new TOML source using V1 API +func TestPOSTTOMLSourceV1(t *testing.T) { + source := ` + id = "package-repo-toml-v1" + name = "toml package repo" + url = "file://REPO-PATH" + type = "yum-baseurl" + proxy = "https://proxy-url/" + check_ssl = true + check_gpg = true + gpgkey_urls = ["https://url/path/to/gpg-key"] + ` + source = strings.Replace(source, "REPO-PATH", testState.repoDir, 1) + + resp, err := PostTOMLSourceV1(testState.socket, source) + require.NoError(t, err, "POST source failed with a client error") + require.True(t, resp.Status, "POST source failed: %#v", resp) + + resp, err = DeleteSourceV1(testState.socket, "package-repo-toml-v1") + require.NoError(t, err, "DELETE source failed with a client error") + require.True(t, resp.Status, "DELETE source failed: %#v", resp) +} + +// POST an empty TOML source using V0 API +func TestPOSTEmptyTOMLSourceV0(t *testing.T) { + resp, err := PostTOMLSourceV0(testState.socket, "") + require.NoError(t, err, "POST source failed with a client error") + require.False(t, resp.Status, "did not return an error") +} + +// POST an empty TOML source using V1 API +func TestPOSTEmptyTOMLSourceV1(t *testing.T) { + resp, err := PostTOMLSourceV1(testState.socket, "") + require.NoError(t, err, "POST source failed with a client error") + require.False(t, resp.Status, "did not return an error") +} + +// POST an invalid TOML source using V0 API +func TestPOSTInvalidTOMLSourceV0(t *testing.T) { + // Missing quote in url + source := ` + name = "package-repo-toml-v0" + url = "file://REPO-PATH + type = "yum-baseurl" + proxy = "https://proxy-url/" + check_ssl = true + check_gpg = true + gpgkey_urls = ["https://url/path/to/gpg-key"] + ` + + resp, err := PostTOMLSourceV0(testState.socket, source) + require.NoError(t, err, "POST source failed with a client error") + require.False(t, resp.Status, "did not return an error") +} + +// POST an invalid TOML source using V1 API +func TestPOSTInvalidTOMLSourceV1(t *testing.T) { + // Missing quote in url + source := ` + id = "package-repo-toml-v1" + name = "toml package repo" + url = "file://REPO-PATH + type = "yum-baseurl" + proxy = "https://proxy-url/" + check_ssl = true + check_gpg = true + gpgkey_urls = ["https://url/path/to/gpg-key"] + ` + + resp, err := PostTOMLSourceV1(testState.socket, source) + require.NoError(t, err, "POST source failed with a client error") + require.False(t, resp.Status, "did not return an error") +} + +// POST a wrong TOML source using V0 API +func TestPOSTWrongTOMLSourceV0(t *testing.T) { + // Should not have a [] section + source := ` + [package-repo-toml-v0] + name = "package-repo-toml-v0" + url = "file://REPO-PATH + type = "yum-baseurl" + proxy = "https://proxy-url/" + check_ssl = true + check_gpg = true + gpgkey_urls = ["https://url/path/to/gpg-key"] + ` + + resp, err := PostTOMLSourceV0(testState.socket, source) + require.NoError(t, err, "POST source failed with a client error") + require.False(t, resp.Status, "did not return an error") +} + +// POST a wrong TOML source using V1 API +func TestPOSTWrongTOMLSourceV1(t *testing.T) { + // Should not have a [] section + source := ` + [package-repo-toml-v1] + id = "package-repo-toml-v1" + name = "toml package repo" + url = "file://REPO-PATH + type = "yum-baseurl" + proxy = "https://proxy-url/" + check_ssl = true + check_gpg = true + gpgkey_urls = ["https://url/path/to/gpg-key"] + ` + + resp, err := PostTOMLSourceV1(testState.socket, source) + require.NoError(t, err, "POST source failed with a client error") + require.False(t, resp.Status, "did not return an error") +} + +// list sources using the v0 API +func TestListSourcesV0(t *testing.T) { + sources := []string{`{ + "name": "package-repo-1", + "url": "file://REPO-PATH", + "type": "yum-baseurl", + "proxy": "https://proxy-url/", + "check_ssl": true, + "check_gpg": true, + "gpgkey_urls": ["https://url/path/to/gpg-key"] + }`, + `{ + "name": "package-repo-2", + "url": "file://REPO-PATH", + "type": "yum-baseurl", + "proxy": "https://proxy-url/", + "check_ssl": true, + "check_gpg": true, + "gpgkey_urls": ["https://url/path/to/gpg-key"] + }`} + + for i := range sources { + source := strings.Replace(sources[i], "REPO-PATH", testState.repoDir, 1) + resp, err := PostJSONSourceV0(testState.socket, source) + require.NoError(t, err, "POST source failed with a client error") + require.True(t, resp.Status, "POST source failed: %#v", resp) + } + + // Remove the test sources, ignoring any errors + defer func() { + for _, n := range []string{"package-repo-1", "package-repo-2"} { + resp, err := DeleteSourceV0(testState.socket, n) + require.NoError(t, err, "DELETE source failed with a client error") + require.True(t, resp.Status, "DELETE source failed: %#v", resp) + } + }() + + // Get the list of sources + list, api, err := ListSourcesV0(testState.socket) + require.NoError(t, err, "GET source failed with a client error") + require.Nil(t, api, "ListSources failed: %#v", api) + require.True(t, len(list) > 1, "Not enough sources returned") + require.Contains(t, list, "package-repo-1") + require.Contains(t, list, "package-repo-2") +} + +// list sources using the v1 API +func TestListSourcesV1(t *testing.T) { + sources := []string{`{ + "id": "package-repo-1", + "name": "First test package repo", + "url": "file://REPO-PATH", + "type": "yum-baseurl", + "proxy": "https://proxy-url/", + "check_ssl": true, + "check_gpg": true, + "gpgkey_urls": ["https://url/path/to/gpg-key"] + }`, + `{ + "id": "package-repo-2", + "name": "Second test package repo", + "url": "file://REPO-PATH", + "type": "yum-baseurl", + "proxy": "https://proxy-url/", + "check_ssl": true, + "check_gpg": true, + "gpgkey_urls": ["https://url/path/to/gpg-key"] + }`} + + for i := range sources { + source := strings.Replace(sources[i], "REPO-PATH", testState.repoDir, 1) + resp, err := PostJSONSourceV1(testState.socket, source) + require.NoError(t, err, "POST source failed with a client error") + require.True(t, resp.Status, "POST source failed: %#v", resp) + } + + // Remove the test sources, ignoring any errors + defer func() { + for _, n := range []string{"package-repo-1", "package-repo-2"} { + resp, err := DeleteSourceV1(testState.socket, n) + require.NoError(t, err, "DELETE source failed with a client error") + require.True(t, resp.Status, "DELETE source failed: %#v", resp) + } + }() + + // Get the list of sources + list, api, err := ListSourcesV1(testState.socket) + require.NoError(t, err, "GET source failed with a client error") + require.Nil(t, api, "ListSources failed: %#v", api) + require.True(t, len(list) > 1, "Not enough sources returned") + require.Contains(t, list, "package-repo-1") + require.Contains(t, list, "package-repo-2") +} + +// Get the source info using the v0 API +func TestGetSourceInfoV0(t *testing.T) { + source := ` + name = "package-repo-info-v0" + url = "file://REPO-PATH" + type = "yum-baseurl" + proxy = "https://proxy-url/" + check_ssl = true + check_gpg = true + gpgkey_urls = ["https://url/path/to/gpg-key"] + ` + source = strings.Replace(source, "REPO-PATH", testState.repoDir, 1) + + resp, err := PostTOMLSourceV0(testState.socket, source) + require.NoError(t, err, "POST source failed with a client error") + require.True(t, resp.Status, "POST source failed: %#v", resp) + + info, resp, err := GetSourceInfoV0(testState.socket, "package-repo-info-v0") + require.NoError(t, err, "GET source failed with a client error") + require.Nil(t, resp, "GET source failed: %#v", resp) + require.Contains(t, info, "package-repo-info-v0", "No source info returned") + require.Equal(t, "package-repo-info-v0", info["package-repo-info-v0"].Name) + require.Equal(t, "file://"+testState.repoDir, info["package-repo-info-v0"].URL) + + resp, err = DeleteSourceV0(testState.socket, "package-repo-info-v0") + require.NoError(t, err, "DELETE source failed with a client error") + require.True(t, resp.Status, "DELETE source failed: %#v", resp) +} + +// Get the source info using the v1 API +func TestGetSourceInfoV1(t *testing.T) { + source := ` + id = "package-repo-info-v1" + name = "repo for info test v1" + url = "file://REPO-PATH" + type = "yum-baseurl" + proxy = "https://proxy-url/" + check_ssl = true + check_gpg = true + gpgkey_urls = ["https://url/path/to/gpg-key"] + ` + source = strings.Replace(source, "REPO-PATH", testState.repoDir, 1) + + resp, err := PostTOMLSourceV1(testState.socket, source) + require.NoError(t, err, "POST source failed with a client error") + require.True(t, resp.Status, "POST source failed: %#v", resp) + + info, resp, err := GetSourceInfoV1(testState.socket, "package-repo-info-v1") + require.NoError(t, err, "GET source failed with a client error") + require.Nil(t, resp, "GET source failed: %#v", resp) + require.Contains(t, info, "package-repo-info-v1", "No source info returned") + require.Equal(t, "repo for info test v1", info["package-repo-info-v1"].Name) + require.Equal(t, "file://"+testState.repoDir, info["package-repo-info-v1"].URL) + + resp, err = DeleteSourceV1(testState.socket, "package-repo-info-v1") + require.NoError(t, err, "DELETE source failed with a client error") + require.True(t, resp.Status, "DELETE source failed: %#v", resp) +} + +func UploadUserDefinedSourcesV0(t *testing.T, sources []string) { + for i := range sources { + source := strings.Replace(sources[i], "REPO-PATH", testState.repoDir, 1) + resp, err := PostJSONSourceV0(testState.socket, source) + require.NoError(t, err, "POST source failed with a client error") + require.True(t, resp.Status, "POST source failed: %#v", resp) + } +} + +func UploadUserDefinedSourcesV1(t *testing.T, sources []string) { + for i := range sources { + source := strings.Replace(sources[i], "REPO-PATH", testState.repoDir, 1) + resp, err := PostJSONSourceV1(testState.socket, source) + require.NoError(t, err, "POST source failed with a client error") + require.True(t, resp.Status, "POST source failed: %#v", resp) + } +} + +// verify user defined sources are not present +func VerifyNoUserDefinedSourcesV0(t *testing.T, source_names []string) { + list, api, err := ListSourcesV0(testState.socket) + require.NoError(t, err, "GET source failed with a client error") + require.Nil(t, api, "ListSources failed: %#v", api) + require.GreaterOrEqual(t, len(list), 1, "Not enough sources returned") + for i := range source_names { + require.NotContains(t, list, source_names[i]) + } +} + +// verify user defined sources are not present +func VerifyNoUserDefinedSourcesV1(t *testing.T, source_names []string) { + list, api, err := ListSourcesV1(testState.socket) + require.NoError(t, err, "GET source failed with a client error") + require.Nil(t, api, "ListSources failed: %#v", api) + require.GreaterOrEqual(t, len(list), 1, "Not enough sources returned") + for i := range source_names { + require.NotContains(t, list, source_names[i]) + } +} + +func TestDeleteUserDefinedSourcesV0(t *testing.T) { + source_names := []string{"package-repo-1", "package-repo-2"} + sources := []string{`{ + "name": "package-repo-1", + "url": "file://REPO-PATH", + "type": "yum-baseurl", + "proxy": "https://proxy-url/", + "check_ssl": true, + "check_gpg": true, + "gpgkey_urls": ["https://url/path/to/gpg-key"] + }`, + `{ + "name": "package-repo-2", + "url": "file://REPO-PATH", + "type": "yum-baseurl", + "proxy": "https://proxy-url/", + "check_ssl": true, + "check_gpg": true, + "gpgkey_urls": ["https://url/path/to/gpg-key"] + }`} + + // verify test starts without user defined sources + VerifyNoUserDefinedSourcesV0(t, source_names) + + // post user defined sources + UploadUserDefinedSourcesV0(t, sources) + // note: not verifying user defined sources have been pushed b/c correct + // operation of PostJSONSourceV0 is validated in the test functions above + + // Remove the test sources + for _, n := range source_names { + resp, err := DeleteSourceV0(testState.socket, n) + require.NoError(t, err, "DELETE source failed with a client error") + require.True(t, resp.Status, "DELETE source failed: %#v", resp) + } + + // verify removed sources are not present after removal + VerifyNoUserDefinedSourcesV0(t, source_names) +} + +func TestDeleteUserDefinedSourcesV1(t *testing.T) { + source_names := []string{"package-repo-1", "package-repo-2"} + sources := []string{`{ + "id": "package-repo-1", + "name": "First test package repo", + "url": "file://REPO-PATH", + "type": "yum-baseurl", + "proxy": "https://proxy-url/", + "check_ssl": true, + "check_gpg": true, + "gpgkey_urls": ["https://url/path/to/gpg-key"] + }`, + `{ + "id": "package-repo-2", + "name": "Second test package repo", + "url": "file://REPO-PATH", + "type": "yum-baseurl", + "proxy": "https://proxy-url/", + "check_ssl": true, + "check_gpg": true, + "gpgkey_urls": ["https://url/path/to/gpg-key"] + }`} + + // verify test starts without user defined sources + VerifyNoUserDefinedSourcesV1(t, source_names) + + // post user defined sources + UploadUserDefinedSourcesV1(t, sources) + // note: not verifying user defined sources have been pushed b/c correct + // operation of PostJSONSourceV0 is validated in the test functions above + + // Remove the test sources + for _, n := range source_names { + resp, err := DeleteSourceV1(testState.socket, n) + require.NoError(t, err, "DELETE source failed with a client error") + require.True(t, resp.Status, "DELETE source failed: %#v", resp) + } + + // verify removed sources are not present after removal + VerifyNoUserDefinedSourcesV0(t, source_names) +} + +func Index(vs []string, t string) int { + for i, v := range vs { + if v == t { + return i + } + } + return -1 +} + +func Include(vs []string, t string) bool { + return Index(vs, t) >= 0 +} + +func TestDeleteSystemSourcesV0(t *testing.T) { + sources_list, api, err := ListSourcesV0(testState.socket) + require.NoError(t, err, "GET source failed with a client error") + require.Nil(t, api, "ListSources failed: %#v", api) + + for _, repo_name := range []string{"test-system-repo", "fedora", "baseos"} { + // skip repository names which are not present b/c this test can be + // executed both as a unit test and as an integration test + if !Include(sources_list, repo_name) { + continue + } + + // try removing system source + resp, err := DeleteSourceV0(testState.socket, repo_name) + require.NoError(t, err, "DELETE source failed with a client error") + require.False(t, resp.Status, "DELETE system source test failed: %#v", resp) + + // verify that system sources are still there + list, api, err := ListSourcesV0(testState.socket) + require.NoError(t, err, "GET source failed with a client error") + require.Nil(t, api, "ListSources failed: %#v", api) + require.GreaterOrEqual(t, len(list), 1, "Not enough sources returned") + require.Contains(t, list, repo_name) + } +} + +func TestDeleteSystemSourcesV1(t *testing.T) { + sources_list, api, err := ListSourcesV1(testState.socket) + require.NoError(t, err, "GET source failed with a client error") + require.Nil(t, api, "ListSources failed: %#v", api) + + for _, repo_name := range []string{"test-system-repo", "fedora", "baseos"} { + // skip repository names which are not present b/c this test can be + // executed both as a unit test and as an integration test + if !Include(sources_list, repo_name) { + continue + } + + // try removing system source + resp, err := DeleteSourceV1(testState.socket, repo_name) + require.NoError(t, err, "DELETE source failed with a client error") + require.False(t, resp.Status, "DELETE system source test failed: %#v", resp) + + // verify that system sources are still there + list, api, err := ListSourcesV1(testState.socket) + require.NoError(t, err, "GET source failed with a client error") + require.Nil(t, api, "ListSources failed: %#v", api) + require.GreaterOrEqual(t, len(list), 1, "Not enough sources returned") + require.Contains(t, list, repo_name) + } +} diff --git a/internal/client/unit_test.go b/internal/client/unit_test.go new file mode 100644 index 0000000..90d6a89 --- /dev/null +++ b/internal/client/unit_test.go @@ -0,0 +1,71 @@ +// Package client contains functions for communicating with the API server +// Copyright (C) 2020 by Red Hat, Inc. + +// +build !integration + +package client + +import ( + "io/ioutil" + "log" + "net" + "net/http" + "os" + "testing" + + "github.com/osbuild/osbuild-composer/internal/distro/fedoratest" + rpmmd_mock "github.com/osbuild/osbuild-composer/internal/mocks/rpmmd" + "github.com/osbuild/osbuild-composer/internal/rpmmd" + "github.com/osbuild/osbuild-composer/internal/weldr" +) + +// Hold test state to share between tests +var testState *TestState + +func executeTests(m *testing.M) int { + // Setup the mocked server running on a temporary domain socket + tmpdir, err := ioutil.TempDir("", "client_test-") + if err != nil { + panic(err) + } + defer os.RemoveAll(tmpdir) + + socketPath := tmpdir + "/client_test.socket" + ln, err := net.Listen("unix", socketPath) + if err != nil { + panic(err) + } + + // Create a mock API server listening on the temporary socket + fixture := rpmmd_mock.BaseFixture() + rpm := rpmmd_mock.NewRPMMDMock(fixture) + distro := fedoratest.New() + arch, err := distro.GetArch("x86_64") + if err != nil { + panic(err) + } + repos := []rpmmd.RepoConfig{{Name: "test-system-repo", BaseURL: "http://example.com/test/os/test_arch"}} + logger := log.New(os.Stdout, "", 0) + api := weldr.New(rpm, arch, distro, repos, logger, fixture.Store, fixture.Workers, "") + server := http.Server{Handler: api} + defer server.Close() + + go func() { + err := server.Serve(ln) + if err != nil && err != http.ErrServerClosed { + panic(err) + } + }() + + testState, err = setUpTestState(socketPath, true) + if err != nil { + log.Fatalf("ERROR: Test setup failed: %s\n", err) + } + + // Run the tests + return m.Run() +} + +func TestMain(m *testing.M) { + os.Exit(executeTests(m)) +} diff --git a/internal/client/utils.go b/internal/client/utils.go new file mode 100644 index 0000000..fee6bc3 --- /dev/null +++ b/internal/client/utils.go @@ -0,0 +1,62 @@ +// Package weldrcheck contains functions used to run integration tests on a running API server +// Copyright (C) 2020 by Red Hat, Inc. + +// nolint: deadcode,unused // These functions are used by the *_test.go code +package client + +import ( + "context" + "fmt" + "net" + "net/http" + "sort" + "strconv" +) + +type TestState struct { + socket *http.Client + apiVersion int + repoDir string + unitTest bool +} + +// isStringInSlice returns true if the string is present, false if not +// slice must be sorted +// TODO decide if this belongs in a more widely useful package location +func isStringInSlice(slice []string, s string) bool { + i := sort.SearchStrings(slice, s) + if i < len(slice) && slice[i] == s { + return true + } + return false +} + +func setUpTestState(socketPath string, unitTest bool) (*TestState, error) { + state := TestState{unitTest: unitTest} + + state.socket = &http.Client{ + Transport: &http.Transport{ + DialContext: func(_ context.Context, _, _ string) (net.Conn, error) { + return net.Dial("unix", socketPath) + }, + }, + } + + // Make sure the server is running + status, resp, err := GetStatusV0(state.socket) + if err != nil { + return nil, fmt.Errorf("status request failed with client error: %s", err) + } + if resp != nil { + return nil, fmt.Errorf("status request failed: %v\n", resp) + } + apiVersion, e := strconv.Atoi(status.API) + if e != nil { + state.apiVersion = 0 + } else { + state.apiVersion = apiVersion + } + fmt.Printf("Running tests against %s %s server using V%d API\n\n", status.Backend, status.Build, state.apiVersion) + + return &state, nil +} diff --git a/internal/client/weldr.go b/internal/client/weldr.go new file mode 100644 index 0000000..1090ee9 --- /dev/null +++ b/internal/client/weldr.go @@ -0,0 +1,23 @@ +// Package client - weldr contains functions to return API structures +// Copyright (C) 2020 by Red Hat, Inc. +package client + +import ( + "encoding/json" + "net/http" + + "github.com/osbuild/osbuild-composer/internal/weldr" +) + +// GetStatusV0 makes a GET request to /api/status and returns the v0 response as a StatusResponseV0 +func GetStatusV0(socket *http.Client) (reply weldr.StatusV0, resp *APIResponse, err error) { + body, resp, err := GetRaw(socket, "GET", "/api/status") + if resp != nil || err != nil { + return reply, resp, err + } + err = json.Unmarshal(body, &reply) + if err != nil { + return reply, nil, err + } + return reply, nil, nil +} diff --git a/internal/common/compose_result.go b/internal/common/compose_result.go new file mode 100644 index 0000000..fcbff3f --- /dev/null +++ b/internal/common/compose_result.go @@ -0,0 +1,84 @@ +package common + +import ( + "encoding/json" + "fmt" + "io" +) + +type assembler struct { + Name string `json:"name"` + Options json.RawMessage `json:"options"` + Success bool `json:"success"` + Output string `json:"output"` +} + +type stage struct { + Name string `json:"name"` + Options json.RawMessage `json:"options"` + Success bool `json:"success"` + Output string `json:"output"` +} + +type build struct { + Stages []stage `json:"stages"` + TreeID string `json:"tree_id"` + Success bool `json:"success"` +} + +type ComposeResult struct { + TreeID string `json:"tree_id"` + OutputID string `json:"output_id"` + Build *build `json:"build"` + Stages []stage `json:"stages"` + Assembler *assembler `json:"assembler"` + Success bool `json:"success"` +} + +func (cr *ComposeResult) Write(writer io.Writer) error { + if cr.Build == nil && len(cr.Stages) == 0 && cr.Assembler == nil { + fmt.Fprintf(writer, "The compose result is empty.\n") + } + + if cr.Build != nil { + fmt.Fprintf(writer, "Build pipeline:\n") + + for _, stage := range cr.Build.Stages { + fmt.Fprintf(writer, "Stage %s\n", stage.Name) + enc := json.NewEncoder(writer) + enc.SetIndent("", " ") + err := enc.Encode(stage.Options) + if err != nil { + return err + } + fmt.Fprintf(writer, "\nOutput:\n%s\n", stage.Output) + } + } + + if len(cr.Stages) > 0 { + fmt.Fprintf(writer, "Stages:\n") + for _, stage := range cr.Stages { + fmt.Fprintf(writer, "Stage: %s\n", stage.Name) + enc := json.NewEncoder(writer) + enc.SetIndent("", " ") + err := enc.Encode(stage.Options) + if err != nil { + return err + } + fmt.Fprintf(writer, "\nOutput:\n%s\n", stage.Output) + } + } + + if cr.Assembler != nil { + fmt.Fprintf(writer, "Assembler %s:\n", cr.Assembler.Name) + enc := json.NewEncoder(writer) + enc.SetIndent("", " ") + err := enc.Encode(cr.Assembler.Options) + if err != nil { + return err + } + fmt.Fprintf(writer, "\nOutput:\n%s\n", cr.Assembler.Output) + } + + return nil +} diff --git a/internal/common/compose_result_test.go b/internal/common/compose_result_test.go new file mode 100644 index 0000000..501ee17 --- /dev/null +++ b/internal/common/compose_result_test.go @@ -0,0 +1,80 @@ +package common + +import ( + "bytes" + "github.com/stretchr/testify/assert" + "testing" +) + +func TestWriteFull(t *testing.T) { + + const testOptions = `{"msg": "test"}` + + testStage := stage{ + Name: "testStage", + Options: []byte(testOptions), + Success: true, + Output: "Finished", + } + + testBuild := build{ + Stages: []stage{testStage}, + TreeID: "treeID", + Success: true, + } + + testAssembler := assembler{ + Name: "testAssembler", + Options: []byte(testOptions), + Success: true, + Output: "Done", + } + + testComposeResult := ComposeResult{ + TreeID: "TreeID", + OutputID: "OutputID", + Build: &testBuild, + Stages: []stage{testStage}, + Assembler: &testAssembler, + Success: true, + } + + var b bytes.Buffer + assert.NoError(t, testComposeResult.Write(&b)) + expectedMessage := + `Build pipeline: +Stage testStage +{ + "msg": "test" +} + +Output: +Finished +Stages: +Stage: testStage +{ + "msg": "test" +} + +Output: +Finished +Assembler testAssembler: +{ + "msg": "test" +} + +Output: +Done +` + assert.Equal(t, expectedMessage, b.String()) +} + +func TestWriteEmpty(t *testing.T) { + + testComposeResult := ComposeResult{} + + var b bytes.Buffer + assert.NoError(t, testComposeResult.Write(&b)) + assert.Equal(t, "The compose result is empty.\n", b.String()) + +} diff --git a/internal/common/helpers.go b/internal/common/helpers.go new file mode 100644 index 0000000..1c05aa9 --- /dev/null +++ b/internal/common/helpers.go @@ -0,0 +1,25 @@ +package common + +import "runtime" + +var RuntimeGOARCH = runtime.GOARCH + +func CurrentArch() string { + if RuntimeGOARCH == "amd64" { + return "x86_64" + } else if RuntimeGOARCH == "arm64" { + return "aarch64" + } else if RuntimeGOARCH == "ppc64le" { + return "ppc64le" + } else if RuntimeGOARCH == "s390x" { + return "s390x" + } else { + panic("unsupported architecture") + } +} + +func PanicOnError(err error) { + if err != nil { + panic(err) + } +} diff --git a/internal/common/helpers_test.go b/internal/common/helpers_test.go new file mode 100644 index 0000000..2ec6876 --- /dev/null +++ b/internal/common/helpers_test.go @@ -0,0 +1,47 @@ +package common + +import ( + "errors" + "github.com/stretchr/testify/assert" + "testing" +) + +func TestCurrentArchAMD64(t *testing.T) { + origRuntimeGOARCH := RuntimeGOARCH + defer func() { RuntimeGOARCH = origRuntimeGOARCH }() + RuntimeGOARCH = "amd64" + assert.Equal(t, "x86_64", CurrentArch()) +} + +func TestCurrentArchARM64(t *testing.T) { + origRuntimeGOARCH := RuntimeGOARCH + defer func() { RuntimeGOARCH = origRuntimeGOARCH }() + RuntimeGOARCH = "arm64" + assert.Equal(t, "aarch64", CurrentArch()) +} + +func TestCurrentArchPPC64LE(t *testing.T) { + origRuntimeGOARCH := RuntimeGOARCH + defer func() { RuntimeGOARCH = origRuntimeGOARCH }() + RuntimeGOARCH = "ppc64le" + assert.Equal(t, "ppc64le", CurrentArch()) +} + +func TestCurrentArchS390X(t *testing.T) { + origRuntimeGOARCH := RuntimeGOARCH + defer func() { RuntimeGOARCH = origRuntimeGOARCH }() + RuntimeGOARCH = "s390x" + assert.Equal(t, "s390x", CurrentArch()) +} + +func TestCurrentArchUnsupported(t *testing.T) { + origRuntimeGOARCH := RuntimeGOARCH + defer func() { RuntimeGOARCH = origRuntimeGOARCH }() + RuntimeGOARCH = "UKNOWN" + assert.PanicsWithValue(t, "unsupported architecture", func() { CurrentArch() }) +} + +func TestPanicOnError(t *testing.T) { + err := errors.New("Error message") + assert.PanicsWithValue(t, err, func() { PanicOnError(err) }) +} diff --git a/internal/common/states.go b/internal/common/states.go new file mode 100644 index 0000000..0de0387 --- /dev/null +++ b/internal/common/states.go @@ -0,0 +1,99 @@ +package common + +import ( + "encoding/json" +) + +func getStateMapping() []string { + return []string{"WAITING", "RUNNING", "FINISHED", "FAILED"} +} + +type ImageBuildState int + +const ( + IBWaiting ImageBuildState = iota + IBRunning + IBFinished + IBFailed +) + +// CustomJsonConversionError is thrown when parsing strings into enumerations +type CustomJsonConversionError struct { + reason string +} + +// Error returns the error as a string +func (err *CustomJsonConversionError) Error() string { + return err.reason +} + +// CustomTypeError is thrown when parsing strings into enumerations +type CustomTypeError struct { + reason string +} + +// Error returns the error as a string +func (err *CustomTypeError) Error() string { + return err.reason +} + +// ToString converts ImageBuildState into a human readable string +func (ibs ImageBuildState) ToString() string { + return getStateMapping()[int(ibs)] +} + +func unmarshalStateHelper(data []byte, mapping []string) (int, error) { + var stringInput string + err := json.Unmarshal(data, &stringInput) + if err != nil { + return 0, err + } + for n, str := range getStateMapping() { + if str == stringInput { + return n, nil + } + } + return 0, &CustomJsonConversionError{"invalid image build status:" + stringInput} +} + +// UnmarshalJSON converts a JSON string into an ImageBuildState +func (ibs *ImageBuildState) UnmarshalJSON(data []byte) error { + val, err := unmarshalStateHelper(data, getStateMapping()) + if err != nil { + return err + } + *ibs = ImageBuildState(val) + return nil +} + +func (ibs ImageBuildState) MarshalJSON() ([]byte, error) { + return json.Marshal(getStateMapping()[ibs]) +} + +type ComposeState int + +const ( + CWaiting ComposeState = iota + CRunning + CFinished + CFailed +) + +// ToString converts ImageBuildState into a human readable string +func (cs ComposeState) ToString() string { + return getStateMapping()[int(cs)] +} + +// UnmarshalJSON converts a JSON string into an ImageBuildState +func (ibs *ComposeState) UnmarshalJSON(data []byte) error { + val, err := unmarshalStateHelper(data, getStateMapping()) + if err != nil { + return err + } + *ibs = ComposeState(val) + return nil +} + +func (ibs ComposeState) MarshalJSON() ([]byte, error) { + return json.Marshal(getStateMapping()[ibs]) +} diff --git a/internal/common/states_test.go b/internal/common/states_test.go new file mode 100644 index 0000000..8d0344d --- /dev/null +++ b/internal/common/states_test.go @@ -0,0 +1,49 @@ +package common + +import ( + "encoding/json" + "github.com/stretchr/testify/assert" + "testing" +) + +func TestJSONConversions(t *testing.T) { + type TestJson struct { + Ibs ImageBuildState `json:"ibs"` + Cs ComposeState `json:"cs"` + } + typedCases := []TestJson{ + { + Ibs: IBWaiting, + Cs: CWaiting, + }, + { + Ibs: IBRunning, + Cs: CFailed, + }, + } + strCases := []string{ + `{"ibs": "WAITING", "cs": "WAITING"}`, + `{"ibs": "RUNNING", "cs": "FAILED"}`, + } + + for n, c := range strCases { + var inputStringAsStruct *TestJson + err := json.Unmarshal([]byte(c), &inputStringAsStruct) + assert.NoErrorf(t, err, "Failed to unmarshal: %#v", err) + assert.Equal(t, inputStringAsStruct, &typedCases[n]) + } + + var byteArrays [][]byte + for _, c := range typedCases { + data, err := json.Marshal(c) + assert.NoError(t, err) + byteArrays = append(byteArrays, data) + } + for n, b := range byteArrays { + var inputStringAsStruct *TestJson + err := json.Unmarshal(b, &inputStringAsStruct) + assert.NoError(t, err) + assert.Equal(t, inputStringAsStruct, &typedCases[n]) + } + +} diff --git a/internal/crypt/crypt.go b/internal/crypt/crypt.go new file mode 100644 index 0000000..eede15e --- /dev/null +++ b/internal/crypt/crypt.go @@ -0,0 +1,59 @@ +package crypt + +import ( + "crypto/rand" + "math/big" + "strings" +) + +// CryptSHA512 encrypts the given password with SHA512 and a random salt. +// +// Note that this function is not deterministic. +func CryptSHA512(phrase string) (string, error) { + const SHA512SaltLength = 16 + + salt, err := genSalt(SHA512SaltLength) + + if err != nil { + return "", nil + } + + hashSettings := "$6$" + salt + return crypt(phrase, hashSettings) +} + +func genSalt(length int) (string, error) { + saltChars := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./" + + b := make([]byte, length) + + for i := range b { + runeIndex, err := rand.Int(rand.Reader, big.NewInt(int64(len(saltChars)))) + if err != nil { + return "", err + } + b[i] = saltChars[runeIndex.Int64()] + } + + return string(b), nil +} + +// PasswordIsCrypted returns true if the password appears to be an encrypted +// one, according to a very simple heuristic. +// +// Any string starting with one of $2$, $6$ or $5$ is considered to be +// encrypted. Any other string is consdirede to be unencrypted. +// +// This functionality is taken from pylorax. +func PasswordIsCrypted(s string) bool { + // taken from lorax src: src/pylorax/api/compose.py:533 + prefixes := [...]string{"$2b$", "$6$", "$5$"} + + for _, prefix := range prefixes { + if strings.HasPrefix(s, prefix) { + return true + } + } + + return false +} diff --git a/internal/crypt/crypt_impl.go b/internal/crypt/crypt_impl.go new file mode 100644 index 0000000..e24cc66 --- /dev/null +++ b/internal/crypt/crypt_impl.go @@ -0,0 +1,87 @@ +// +build !darwin + +// Copied from https://github.com/amoghe/go-crypt/blob/b3e291286513a0c993f7c4dd7060d327d2d56143/crypt_r.go +// Original sources are under MIT license: +// The MIT License (MIT) +// +// Copyright (c) 2015 Akshay Moghe +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// Package crypt provides wrappers around functions available in crypt.h +// +// It wraps around the GNU specific extension (crypt_r) when it is available +// (i.e. where GOOS=linux). This makes the go function reentrant (and thus +// callable from concurrent goroutines). +package crypt + +import ( + "unsafe" +) + +/* + #cgo LDFLAGS: -lcrypt + + // this is needed for Ubuntu + #define _GNU_SOURCE + + #include + #include + #include + + char *gnu_ext_crypt(char *pass, char *salt) { + char *enc = NULL; + char *ret = NULL; + struct crypt_data data; + data.initialized = 0; + + enc = crypt_r(pass, salt, &data); + if(enc == NULL) { + return NULL; + } + + ret = (char *)malloc((strlen(enc)+1) * sizeof(char)); // for trailing null + strcpy(ret, enc); + ret[strlen(enc)]= '\0'; + + return ret; + } +*/ +import "C" + +// Crypt provides a wrapper around the glibc crypt_r() function. +// For the meaning of the arguments, refer to the package README. +func crypt(pass, salt string) (string, error) { + c_pass := C.CString(pass) + defer C.free(unsafe.Pointer(c_pass)) + + c_salt := C.CString(salt) + defer C.free(unsafe.Pointer(c_salt)) + + c_enc, err := C.gnu_ext_crypt(c_pass, c_salt) + if c_enc == nil { + return "", err + } + defer C.free(unsafe.Pointer(c_enc)) + + // Return nil error if the string is non-nil. + // As per the errno.h manpage, functions are allowed to set errno + // on success. Caller should ignore errno on success. + return C.GoString(c_enc), nil +} diff --git a/internal/crypt/crypt_impl_macos.go b/internal/crypt/crypt_impl_macos.go new file mode 100644 index 0000000..a6dde18 --- /dev/null +++ b/internal/crypt/crypt_impl_macos.go @@ -0,0 +1,7 @@ +// +build darwin + +package crypt + +func crypt(pass, salt string) (string, error) { + panic("You must not run osbuild-composer on macOS!") +} diff --git a/internal/crypt/crypt_test.go b/internal/crypt/crypt_test.go new file mode 100644 index 0000000..613f38e --- /dev/null +++ b/internal/crypt/crypt_test.go @@ -0,0 +1,64 @@ +// +build !darwin + +package crypt + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func Test_crypt_PasswordIsCrypted(t *testing.T) { + + tests := []struct { + name string + password string + want bool + }{ + { + name: "bcrypt", + password: "$2b$04$123465789012345678901uac5A8egfBuZVHMrDZsQzR96IqNBivCy", + want: true, + }, { + name: "sha256", + password: "$5$1234567890123456$v.2bOKKLlpmUSKn0rxJmgnh.e3wOKivAVNZmNrOsoA3", + want: true, + }, { + name: "sha512", + password: "$6$1234567890123456$d.pgKQFaiD8bRiExg5NesbGR/3u51YvxeYaQXPzx4C6oSYREw8VoReiuYZjx0V9OhGVTZFqhc6emAxT1RC5BV.", + want: true, + }, { + name: "scrypt", + password: "$7$123456789012345", //not actual hash output from scrypt + want: false, + }, { + name: "plain", + password: "password", + want: false, + }, + } + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + if got := PasswordIsCrypted(test.password); got != test.want { + t.Errorf("PasswordIsCrypted() =%v, want %v", got, test.want) + } + }) + } +} + +func TestCryptSHA512(t *testing.T) { + retPassFirst, err := CryptSHA512("testPass") + assert.NoError(t, err) + retPassSecond, _ := CryptSHA512("testPass") + expectedPassStart := "$6$" + assert.Equal(t, expectedPassStart, retPassFirst[0:3]) + assert.NotEqual(t, retPassFirst, retPassSecond) +} + +func TestGenSalt(t *testing.T) { + length := 10 + retSaltFirst, err := genSalt(length) + assert.NoError(t, err) + retSaltSecond, _ := genSalt(length) + assert.NotEqual(t, retSaltFirst, retSaltSecond) +} diff --git a/internal/distro/distro.go b/internal/distro/distro.go new file mode 100644 index 0000000..f74143f --- /dev/null +++ b/internal/distro/distro.go @@ -0,0 +1,211 @@ +package distro + +import ( + "bufio" + "encoding/json" + "errors" + "fmt" + "io" + "os" + "sort" + "strings" + + "github.com/osbuild/osbuild-composer/internal/blueprint" + "github.com/osbuild/osbuild-composer/internal/rpmmd" +) + +// A Distro represents composer's notion of what a given distribution is. +type Distro interface { + // Returns the name of the distro. + Name() string + + // Returns the module platform id of the distro. This is used by DNF + // for modularity support. + ModulePlatformID() string + + // Returns a sorted list of the names of the architectures this distro + // supports. + ListArches() []string + + // Returns an object representing the given architecture as support + // by this distro. + GetArch(arch string) (Arch, error) +} + +// An Arch represents a given distribution's support for a given architecture. +type Arch interface { + // Returns the name of the architecture. + Name() string + + // Returns a sorted list of the names of the image types this architecture + // supports. + ListImageTypes() []string + + // Returns an object representing a given image format for this architecture, + // on this distro. + GetImageType(imageType string) (ImageType, error) + + // Returns the parent distro + Distro() Distro +} + +// An ImageType represents a given distribution's support for a given Image Type +// for a given architecture. +type ImageType interface { + // Returns the name of the image type. + Name() string + + // Returns the parent architecture + Arch() Arch + + // Returns the canonical filename for the image type. + Filename() string + + // Retrns the MIME-type for the image type. + MIMEType() string + + // Returns the proper image size for a given output format. If the input size + // is 0 the default value for the format will be returned. + Size(size uint64) uint64 + + // Returns the default packages to include and exclude when making the image + // type. + Packages(bp blueprint.Blueprint) ([]string, []string) + + // Returns the build packages for the output type. + BuildPackages() []string + + // Returns an osbuild manifest, containing the sources and pipeline necessary + // to build an image, given output format with all packages and customizations + // specified in the given blueprint. + Manifest(b *blueprint.Customizations, options ImageOptions, repos []rpmmd.RepoConfig, packageSpecs, buildPackageSpecs []rpmmd.PackageSpec) (Manifest, error) +} + +// The ImageOptions specify options for a specific image build +type ImageOptions struct { + OSTree OSTreeImageOptions + Size uint64 +} + +// The OSTreeImageOptions specify ostree-specific image options +type OSTreeImageOptions struct { + Ref string + Parent string +} + +// A Manifest is an opaque JSON object, which is a valid input to osbuild +type Manifest []byte + +func (m Manifest) MarshalJSON() ([]byte, error) { + return json.RawMessage(m).MarshalJSON() +} + +func (m *Manifest) UnmarshalJSON(payload []byte) error { + var raw json.RawMessage + err := (&raw).UnmarshalJSON(payload) + if err != nil { + return err + } + *m = Manifest(raw) + return nil +} + +type Registry struct { + distros map[string]Distro +} + +func NewRegistry(distros ...Distro) (*Registry, error) { + reg := &Registry{ + distros: make(map[string]Distro), + } + for _, distro := range distros { + name := distro.Name() + if _, exists := reg.distros[name]; exists { + return nil, fmt.Errorf("NewRegistry: passed two distros with the same name: %s", distro.Name()) + } + reg.distros[name] = distro + } + return reg, nil +} + +func (r *Registry) GetDistro(name string) Distro { + distro, ok := r.distros[name] + if !ok { + return nil + } + + return distro +} + +// List returns the names of all distros in a Registry, sorted alphabetically. +func (r *Registry) List() []string { + list := []string{} + for _, distro := range r.distros { + list = append(list, distro.Name()) + } + sort.Strings(list) + return list +} + +func (r *Registry) FromHost() (Distro, bool, error) { + name, beta, err := GetHostDistroName() + if err != nil { + return nil, false, err + } + + d := r.GetDistro(name) + if d == nil { + return nil, false, errors.New("unknown distro: " + name) + } + + return d, beta, nil +} + +func GetHostDistroName() (string, bool, error) { + f, err := os.Open("/etc/os-release") + if err != nil { + return "", false, err + } + defer f.Close() + osrelease, err := readOSRelease(f) + if err != nil { + return "", false, err + } + + // NOTE: We only consider major releases + version := strings.Split(osrelease["VERSION_ID"], ".") + name := osrelease["ID"] + "-" + version[0] + + // TODO: We should probably index these things by the full CPE + beta := strings.Contains(osrelease["CPE_NAME"], "beta") + return name, beta, nil +} + +func readOSRelease(r io.Reader) (map[string]string, error) { + osrelease := make(map[string]string) + scanner := bufio.NewScanner(r) + for scanner.Scan() { + line := strings.TrimSpace(scanner.Text()) + if len(line) == 0 { + continue + } + + parts := strings.SplitN(line, "=", 2) + if len(parts) != 2 { + return nil, errors.New("readOSRelease: invalid input") + } + + key := strings.TrimSpace(parts[0]) + value := strings.TrimSpace(parts[1]) + if value[0] == '"' { + if len(value) < 2 || value[len(value)-1] != '"' { + return nil, errors.New("readOSRelease: invalid input") + } + value = value[1 : len(value)-1] + } + + osrelease[key] = value + } + + return osrelease, nil +} diff --git a/internal/distro/distro_test.go b/internal/distro/distro_test.go new file mode 100644 index 0000000..71b4d24 --- /dev/null +++ b/internal/distro/distro_test.go @@ -0,0 +1,36 @@ +package distro_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/osbuild/osbuild-composer/internal/distro" + "github.com/osbuild/osbuild-composer/internal/distro/distro_test_common" + "github.com/osbuild/osbuild-composer/internal/distro/fedora31" + "github.com/osbuild/osbuild-composer/internal/distro/fedora32" + "github.com/osbuild/osbuild-composer/internal/distro/rhel8" +) + +func TestDistro_Manifest(t *testing.T) { + distro_test_common.TestDistro_Manifest( + t, + "../../test/cases/", + "*", + fedora31.New(), fedora32.New(), rhel8.New(), + ) +} + +// Test that all distros are registered properly and that Registry.List() works. +func TestDistro_RegistryList(t *testing.T) { + expected := []string{ + "fedora-31", + "fedora-32", + "rhel-8", + } + + distros, err := distro.NewRegistry(fedora31.New(), fedora32.New(), rhel8.New()) + require.NoError(t, err) + + require.Equalf(t, expected, distros.List(), "unexpected list of distros") +} diff --git a/internal/distro/distro_test_common/distro_test_common.go b/internal/distro/distro_test_common/distro_test_common.go new file mode 100644 index 0000000..b8313fc --- /dev/null +++ b/internal/distro/distro_test_common/distro_test_common.go @@ -0,0 +1,102 @@ +package distro_test_common + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "path" + "path/filepath" + "testing" + + "github.com/osbuild/osbuild-composer/internal/blueprint" + "github.com/osbuild/osbuild-composer/internal/distro" + "github.com/osbuild/osbuild-composer/internal/rpmmd" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestDistro_Manifest(t *testing.T, pipelinePath string, prefix string, distros ...distro.Distro) { + assert := assert.New(t) + fileNames, err := filepath.Glob(filepath.Join(pipelinePath, prefix)) + assert.NoErrorf(err, "Could not read pipelines directory '%s': %v", pipelinePath, err) + require.Greaterf(t, len(fileNames), 0, "No pipelines found in %s for %s", pipelinePath, prefix) + for _, fileName := range fileNames { + type repository struct { + BaseURL string `json:"baseurl,omitempty"` + Metalink string `json:"metalink,omitempty"` + MirrorList string `json:"mirrorlist,omitempty"` + GPGKey string `json:"gpgkey,omitempty"` + CheckGPG bool `json:"check_gpg,omitempty"` + } + type composeRequest struct { + Distro string `json:"distro"` + Arch string `json:"arch"` + ImageType string `json:"image-type"` + Repositories []repository `json:"repositories"` + Blueprint *blueprint.Blueprint `json:"blueprint"` + } + type rpmMD struct { + BuildPackages []rpmmd.PackageSpec `json:"build-packages"` + Packages []rpmmd.PackageSpec `json:"packages"` + } + var tt struct { + ComposeRequest *composeRequest `json:"compose-request"` + RpmMD *rpmMD `json:"rpmmd"` + Manifest distro.Manifest `json:"manifest,omitempty"` + } + file, err := ioutil.ReadFile(fileName) + assert.NoErrorf(err, "Could not read test-case '%s': %v", fileName, err) + err = json.Unmarshal([]byte(file), &tt) + assert.NoErrorf(err, "Could not parse test-case '%s': %v", fileName, err) + if tt.ComposeRequest == nil || tt.ComposeRequest.Blueprint == nil { + t.Logf("Skipping '%s'.", fileName) + continue + } + + repos := make([]rpmmd.RepoConfig, len(tt.ComposeRequest.Repositories)) + for i, repo := range tt.ComposeRequest.Repositories { + repos[i] = rpmmd.RepoConfig{ + Name: fmt.Sprintf("repo-%d", i), + BaseURL: repo.BaseURL, + Metalink: repo.Metalink, + MirrorList: repo.MirrorList, + GPGKey: repo.GPGKey, + CheckGPG: repo.CheckGPG, + } + } + t.Run(path.Base(fileName), func(t *testing.T) { + distros, err := distro.NewRegistry(distros...) + require.NoError(t, err) + d := distros.GetDistro(tt.ComposeRequest.Distro) + if d == nil { + t.Errorf("unknown distro: %v", tt.ComposeRequest.Distro) + return + } + arch, err := d.GetArch(tt.ComposeRequest.Arch) + if err != nil { + t.Errorf("unknown arch: %v", tt.ComposeRequest.Arch) + return + } + imageType, err := arch.GetImageType(tt.ComposeRequest.ImageType) + if err != nil { + t.Errorf("unknown image type: %v", tt.ComposeRequest.ImageType) + return + } + got, err := imageType.Manifest(tt.ComposeRequest.Blueprint.Customizations, + distro.ImageOptions{ + Size: imageType.Size(0), + }, + repos, + tt.RpmMD.Packages, + tt.RpmMD.BuildPackages) + + if (err == nil && tt.Manifest == nil) || (err != nil && tt.Manifest != nil) { + t.Errorf("distro.Manifest() error = %v", err) + return + } + if tt.Manifest != nil { + require.JSONEqf(t, string(tt.Manifest), string(got), "Distro: %s\nArch: %s\nImage type: %s\nTest case file: %s\n", d.Name(), arch.Name(), imageType.Name(), fileName) + } + }) + } +} diff --git a/internal/distro/fedora31/distro.go b/internal/distro/fedora31/distro.go new file mode 100644 index 0000000..d4d21c6 --- /dev/null +++ b/internal/distro/fedora31/distro.go @@ -0,0 +1,697 @@ +package fedora31 + +import ( + "encoding/json" + "errors" + "sort" + + "github.com/osbuild/osbuild-composer/internal/distro" + "github.com/osbuild/osbuild-composer/internal/osbuild" + + "github.com/google/uuid" + + "github.com/osbuild/osbuild-composer/internal/blueprint" + "github.com/osbuild/osbuild-composer/internal/crypt" + "github.com/osbuild/osbuild-composer/internal/rpmmd" +) + +const name = "fedora-31" +const modulePlatformID = "platform:f31" + +type Fedora31 struct { + arches map[string]arch + buildPackages []string +} + +type imageType struct { + arch *arch + name string + filename string + mimeType string + packages []string + excludedPackages []string + enabledServices []string + disabledServices []string + kernelOptions string + bootable bool + defaultSize uint64 + assembler func(uefi bool, size uint64) *osbuild.Assembler +} + +type arch struct { + distro *Fedora31 + name string + bootloaderPackages []string + buildPackages []string + legacy string + uefi bool + imageTypes map[string]imageType +} + +func (a *arch) Distro() distro.Distro { + return a.distro +} + +func (t *imageType) Arch() distro.Arch { + return t.arch +} + +func (d *Fedora31) ListArches() []string { + archs := make([]string, 0, len(d.arches)) + for name := range d.arches { + archs = append(archs, name) + } + sort.Strings(archs) + return archs +} + +func (d *Fedora31) GetArch(arch string) (distro.Arch, error) { + a, exists := d.arches[arch] + if !exists { + return nil, errors.New("invalid architecture: " + arch) + } + + return &a, nil +} + +func (d *Fedora31) setArches(arches ...arch) { + d.arches = map[string]arch{} + for _, a := range arches { + d.arches[a.name] = arch{ + distro: d, + name: a.name, + bootloaderPackages: a.bootloaderPackages, + buildPackages: a.buildPackages, + uefi: a.uefi, + imageTypes: a.imageTypes, + } + } +} + +func (a *arch) Name() string { + return a.name +} + +func (a *arch) ListImageTypes() []string { + formats := make([]string, 0, len(a.imageTypes)) + for name := range a.imageTypes { + formats = append(formats, name) + } + sort.Strings(formats) + return formats +} + +func (a *arch) GetImageType(imageType string) (distro.ImageType, error) { + t, exists := a.imageTypes[imageType] + if !exists { + return nil, errors.New("invalid image type: " + imageType) + } + + return &t, nil +} + +func (a *arch) setImageTypes(imageTypes ...imageType) { + a.imageTypes = map[string]imageType{} + for _, it := range imageTypes { + a.imageTypes[it.name] = imageType{ + arch: a, + name: it.name, + filename: it.filename, + mimeType: it.mimeType, + packages: it.packages, + excludedPackages: it.excludedPackages, + enabledServices: it.enabledServices, + disabledServices: it.disabledServices, + kernelOptions: it.kernelOptions, + bootable: it.bootable, + defaultSize: it.defaultSize, + assembler: it.assembler, + } + } +} + +func (t *imageType) Name() string { + return t.name +} + +func (t *imageType) Filename() string { + return t.filename +} + +func (t *imageType) MIMEType() string { + return t.mimeType +} + +func (t *imageType) Size(size uint64) uint64 { + const MegaByte = 1024 * 1024 + // Microsoft Azure requires vhd images to be rounded up to the nearest MB + if t.name == "vhd" && size%MegaByte != 0 { + size = (size/MegaByte + 1) * MegaByte + } + if size == 0 { + size = t.defaultSize + } + return size +} + +func (t *imageType) Packages(bp blueprint.Blueprint) ([]string, []string) { + packages := append(t.packages, bp.GetPackages()...) + timezone, _ := bp.Customizations.GetTimezoneSettings() + if timezone != nil { + packages = append(packages, "chrony") + } + if t.bootable { + packages = append(packages, t.arch.bootloaderPackages...) + } + + return packages, t.excludedPackages +} + +func (t *imageType) BuildPackages() []string { + return append(t.arch.distro.buildPackages, t.arch.buildPackages...) +} + +func (t *imageType) Manifest(c *blueprint.Customizations, + options distro.ImageOptions, + repos []rpmmd.RepoConfig, + packageSpecs, + buildPackageSpecs []rpmmd.PackageSpec) (distro.Manifest, error) { + pipeline, err := t.pipeline(c, repos, packageSpecs, buildPackageSpecs, options.Size) + if err != nil { + return distro.Manifest{}, err + } + + return json.Marshal( + osbuild.Manifest{ + Sources: *sources(append(packageSpecs, buildPackageSpecs...)), + Pipeline: *pipeline, + }, + ) +} + +func New() *Fedora31 { + const GigaByte = 1024 * 1024 * 1024 + + amiImgType := imageType{ + name: "ami", + filename: "image.raw", + mimeType: "application/octet-stream", + packages: []string{ + "@Core", + "chrony", + "kernel", + "selinux-policy-targeted", + "langpacks-en", + "libxcrypt-compat", + "xfsprogs", + "cloud-init", + "checkpolicy", + "net-tools", + }, + excludedPackages: []string{ + "dracut-config-rescue", + }, + enabledServices: []string{ + "cloud-init.service", + }, + kernelOptions: "ro no_timer_check console=ttyS0,115200n8 console=tty1 biosdevname=0 net.ifnames=0 console=ttyS0,115200", + bootable: true, + defaultSize: 6 * GigaByte, + assembler: func(uefi bool, size uint64) *osbuild.Assembler { + return qemuAssembler("raw", "image.raw", uefi, size) + }, + } + + qcow2ImageType := imageType{ + name: "qcow2", + filename: "disk.qcow2", + mimeType: "application/x-qemu-disk", + packages: []string{ + "kernel-core", + "@Fedora Cloud Server", + "chrony", + "polkit", + "systemd-udev", + "selinux-policy-targeted", + "langpacks-en", + }, + excludedPackages: []string{ + "dracut-config-rescue", + "etables", + "firewalld", + "gobject-introspection", + "plymouth", + }, + enabledServices: []string{ + "cloud-init.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + }, + kernelOptions: "ro biosdevname=0 net.ifnames=0", + bootable: true, + defaultSize: 2 * GigaByte, + assembler: func(uefi bool, size uint64) *osbuild.Assembler { + return qemuAssembler("qcow2", "disk.qcow2", uefi, size) + }, + } + + openstackImgType := imageType{ + name: "openstack", + filename: "disk.qcow2", + mimeType: "application/x-qemu-disk", + packages: []string{ + "@Core", + "chrony", + "kernel", + "selinux-policy-targeted", + "spice-vdagent", + "qemu-guest-agent", + "xen-libs", + "langpacks-en", + "cloud-init", + "libdrm", + }, + excludedPackages: []string{ + "dracut-config-rescue", + }, + enabledServices: []string{ + "cloud-init.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + }, + kernelOptions: "ro biosdevname=0 net.ifnames=0", + bootable: true, + defaultSize: 2 * GigaByte, + assembler: func(uefi bool, size uint64) *osbuild.Assembler { + return qemuAssembler("qcow2", "disk.qcow2", uefi, size) + }, + } + + vhdImgType := imageType{ + name: "vhd", + filename: "disk.vhd", + mimeType: "application/x-vhd", + packages: []string{ + "@Core", + "chrony", + "kernel", + "selinux-policy-targeted", + "langpacks-en", + "net-tools", + "ntfsprogs", + "WALinuxAgent", + "libxcrypt-compat", + "initscripts", + "glibc-all-langpacks", + }, + excludedPackages: []string{ + "dracut-config-rescue", + }, + enabledServices: []string{ + "sshd", + "waagent", // needed to run in Azure + }, + disabledServices: []string{ + "proc-sys-fs-binfmt_misc.mount", + "loadmodules.service", + }, + // These kernel parameters are required by Azure documentation + kernelOptions: "ro biosdevname=0 rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0", + bootable: true, + defaultSize: 2 * GigaByte, + assembler: func(uefi bool, size uint64) *osbuild.Assembler { + return qemuAssembler("vpc", "disk.vhd", uefi, size) + }, + } + + vmdkImgType := imageType{ + name: "vmdk", + filename: "disk.vmdk", + mimeType: "application/x-vmdk", + packages: []string{ + "@core", + "chrony", + "firewalld", + "kernel", + "langpacks-en", + "open-vm-tools", + "selinux-policy-targeted", + }, + excludedPackages: []string{ + "dracut-config-rescue", + }, + kernelOptions: "ro biosdevname=0 net.ifnames=0", + bootable: true, + defaultSize: 2 * GigaByte, + assembler: func(uefi bool, size uint64) *osbuild.Assembler { + return qemuAssembler("vmdk", "disk.vmdk", uefi, size) + }, + } + + r := Fedora31{ + buildPackages: []string{ + "dnf", + "dosfstools", + "e2fsprogs", + "policycoreutils", + "qemu-img", + "systemd", + "tar", + "xz", + }, + } + x8664 := arch{ + distro: &r, + name: "x86_64", + bootloaderPackages: []string{ + "dracut-config-generic", + "grub2-pc", + }, + buildPackages: []string{ + "grub2-pc", + }, + legacy: "i386-pc", + } + x8664.setImageTypes( + amiImgType, + qcow2ImageType, + openstackImgType, + vhdImgType, + vmdkImgType, + ) + + aarch64 := arch{ + distro: &r, + name: "aarch64", + bootloaderPackages: []string{ + "dracut-config-generic", + "efibootmgr", + "grub2-efi-aa64", + "grub2-tools", + "shim-aa64", + }, + uefi: true, + } + aarch64.setImageTypes( + amiImgType, + qcow2ImageType, + openstackImgType, + ) + + r.setArches(x8664, aarch64) + + return &r +} + +func (r *Fedora31) Name() string { + return name +} + +func (r *Fedora31) ModulePlatformID() string { + return modulePlatformID +} + +func sources(packages []rpmmd.PackageSpec) *osbuild.Sources { + files := &osbuild.FilesSource{ + URLs: make(map[string]osbuild.FileSource), + } + for _, pkg := range packages { + fileSource := osbuild.FileSource{ + URL: pkg.RemoteLocation, + } + files.URLs[pkg.Checksum] = fileSource + } + return &osbuild.Sources{ + "org.osbuild.files": files, + } +} + +func (t *imageType) pipeline(c *blueprint.Customizations, repos []rpmmd.RepoConfig, packageSpecs, buildPackageSpecs []rpmmd.PackageSpec, size uint64) (*osbuild.Pipeline, error) { + p := &osbuild.Pipeline{} + p.SetBuild(t.buildPipeline(repos, *t.arch, buildPackageSpecs), "org.osbuild.fedora31") + + p.AddStage(osbuild.NewRPMStage(t.rpmStageOptions(repos, packageSpecs))) + p.AddStage(osbuild.NewFixBLSStage()) + + // TODO support setting all languages and install corresponding langpack-* package + language, keyboard := c.GetPrimaryLocale() + + if language != nil { + p.AddStage(osbuild.NewLocaleStage(&osbuild.LocaleStageOptions{*language})) + } else { + p.AddStage(osbuild.NewLocaleStage(&osbuild.LocaleStageOptions{"en_US"})) + } + + if keyboard != nil { + p.AddStage(osbuild.NewKeymapStage(&osbuild.KeymapStageOptions{*keyboard})) + } + + if hostname := c.GetHostname(); hostname != nil { + p.AddStage(osbuild.NewHostnameStage(&osbuild.HostnameStageOptions{*hostname})) + } + + timezone, ntpServers := c.GetTimezoneSettings() + + if timezone != nil { + p.AddStage(osbuild.NewTimezoneStage(&osbuild.TimezoneStageOptions{*timezone})) + } + + if len(ntpServers) > 0 { + p.AddStage(osbuild.NewChronyStage(&osbuild.ChronyStageOptions{ntpServers})) + } + + if groups := c.GetGroups(); len(groups) > 0 { + p.AddStage(osbuild.NewGroupsStage(t.groupStageOptions(groups))) + } + + if users := c.GetUsers(); len(users) > 0 { + options, err := t.userStageOptions(users) + if err != nil { + return nil, err + } + p.AddStage(osbuild.NewUsersStage(options)) + } + + if t.bootable { + p.AddStage(osbuild.NewFSTabStage(t.fsTabStageOptions(t.arch.uefi))) + p.AddStage(osbuild.NewGRUB2Stage(t.grub2StageOptions(t.kernelOptions, c.GetKernel(), t.arch.uefi))) + } + + if services := c.GetServices(); services != nil || t.enabledServices != nil { + p.AddStage(osbuild.NewSystemdStage(t.systemdStageOptions(t.enabledServices, t.disabledServices, services))) + } + + if firewall := c.GetFirewall(); firewall != nil { + p.AddStage(osbuild.NewFirewallStage(t.firewallStageOptions(firewall))) + } + + p.AddStage(osbuild.NewSELinuxStage(t.selinuxStageOptions())) + + p.Assembler = t.assembler(t.arch.uefi, size) + + return p, nil +} + +func (r *imageType) buildPipeline(repos []rpmmd.RepoConfig, arch arch, buildPackageSpecs []rpmmd.PackageSpec) *osbuild.Pipeline { + p := &osbuild.Pipeline{} + p.AddStage(osbuild.NewRPMStage(r.rpmStageOptions(repos, buildPackageSpecs))) + return p +} + +func (r *imageType) rpmStageOptions(repos []rpmmd.RepoConfig, specs []rpmmd.PackageSpec) *osbuild.RPMStageOptions { + var gpgKeys []string + for _, repo := range repos { + if repo.GPGKey == "" { + continue + } + gpgKeys = append(gpgKeys, repo.GPGKey) + } + + var packages []osbuild.RPMPackage + for _, spec := range specs { + pkg := osbuild.RPMPackage{ + Checksum: spec.Checksum, + CheckGPG: spec.CheckGPG, + } + packages = append(packages, pkg) + } + + return &osbuild.RPMStageOptions{ + GPGKeys: gpgKeys, + Packages: packages, + } +} + +func (r *imageType) userStageOptions(users []blueprint.UserCustomization) (*osbuild.UsersStageOptions, error) { + options := osbuild.UsersStageOptions{ + Users: make(map[string]osbuild.UsersStageOptionsUser), + } + + for _, c := range users { + if c.Password != nil && !crypt.PasswordIsCrypted(*c.Password) { + cryptedPassword, err := crypt.CryptSHA512(*c.Password) + if err != nil { + return nil, err + } + + c.Password = &cryptedPassword + } + + user := osbuild.UsersStageOptionsUser{ + Groups: c.Groups, + Description: c.Description, + Home: c.Home, + Shell: c.Shell, + Password: c.Password, + Key: c.Key, + } + + user.UID = c.UID + user.GID = c.GID + + options.Users[c.Name] = user + } + + return &options, nil +} + +func (r *imageType) groupStageOptions(groups []blueprint.GroupCustomization) *osbuild.GroupsStageOptions { + options := osbuild.GroupsStageOptions{ + Groups: map[string]osbuild.GroupsStageOptionsGroup{}, + } + + for _, group := range groups { + groupData := osbuild.GroupsStageOptionsGroup{ + Name: group.Name, + } + groupData.GID = group.GID + + options.Groups[group.Name] = groupData + } + + return &options +} + +func (r *imageType) firewallStageOptions(firewall *blueprint.FirewallCustomization) *osbuild.FirewallStageOptions { + options := osbuild.FirewallStageOptions{ + Ports: firewall.Ports, + } + + if firewall.Services != nil { + options.EnabledServices = firewall.Services.Enabled + options.DisabledServices = firewall.Services.Disabled + } + + return &options +} + +func (r *imageType) systemdStageOptions(enabledServices, disabledServices []string, s *blueprint.ServicesCustomization) *osbuild.SystemdStageOptions { + if s != nil { + enabledServices = append(enabledServices, s.Enabled...) + disabledServices = append(disabledServices, s.Disabled...) + } + return &osbuild.SystemdStageOptions{ + EnabledServices: enabledServices, + DisabledServices: disabledServices, + } +} + +func (r *imageType) fsTabStageOptions(uefi bool) *osbuild.FSTabStageOptions { + options := osbuild.FSTabStageOptions{} + options.AddFilesystem("76a22bf4-f153-4541-b6c7-0332c0dfaeac", "ext4", "/", "defaults", 1, 1) + if uefi { + options.AddFilesystem("46BB-8120", "vfat", "/boot/efi", "umask=0077,shortname=winnt", 0, 2) + } + return &options +} + +func (r *imageType) grub2StageOptions(kernelOptions string, kernel *blueprint.KernelCustomization, uefi bool) *osbuild.GRUB2StageOptions { + id := uuid.MustParse("76a22bf4-f153-4541-b6c7-0332c0dfaeac") + + if kernel != nil { + kernelOptions += " " + kernel.Append + } + + var uefiOptions *osbuild.GRUB2UEFI + if uefi { + uefiOptions = &osbuild.GRUB2UEFI{ + Vendor: "fedora", + } + } + + var legacy string + if !uefi { + legacy = r.arch.legacy + } + + return &osbuild.GRUB2StageOptions{ + RootFilesystemUUID: id, + KernelOptions: kernelOptions, + Legacy: legacy, + UEFI: uefiOptions, + } +} + +func (r *imageType) selinuxStageOptions() *osbuild.SELinuxStageOptions { + return &osbuild.SELinuxStageOptions{ + FileContexts: "etc/selinux/targeted/contexts/files/file_contexts", + } +} + +func qemuAssembler(format string, filename string, uefi bool, size uint64) *osbuild.Assembler { + var options osbuild.QEMUAssemblerOptions + if uefi { + options = osbuild.QEMUAssemblerOptions{ + Format: format, + Filename: filename, + Size: size, + PTUUID: "8DFDFF87-C96E-EA48-A3A6-9408F1F6B1EF", + PTType: "gpt", + Partitions: []osbuild.QEMUPartition{ + { + Start: 2048, + Size: 972800, + Type: "c12a7328-f81f-11d2-ba4b-00a0c93ec93b", + UUID: "02C1E068-1D2F-4DA3-91FD-8DD76A955C9D", + Filesystem: &osbuild.QEMUFilesystem{ + Type: "vfat", + UUID: "46BB-8120", + Label: "EFI System Partition", + Mountpoint: "/boot/efi", + }, + }, + { + Start: 976896, + UUID: "8D760010-FAAE-46D1-9E5B-4A2EAC5030CD", + Filesystem: &osbuild.QEMUFilesystem{ + Type: "ext4", + UUID: "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + Mountpoint: "/", + }, + }, + }, + } + } else { + options = osbuild.QEMUAssemblerOptions{ + Format: format, + Filename: filename, + Size: size, + PTUUID: "0x14fc63d2", + PTType: "mbr", + Partitions: []osbuild.QEMUPartition{ + { + Start: 2048, + Bootable: true, + Filesystem: &osbuild.QEMUFilesystem{ + Type: "ext4", + UUID: "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + Mountpoint: "/", + }, + }, + }, + } + } + return osbuild.NewQEMUAssembler(&options) +} diff --git a/internal/distro/fedora31/distro_test.go b/internal/distro/fedora31/distro_test.go new file mode 100644 index 0000000..9d8be0d --- /dev/null +++ b/internal/distro/fedora31/distro_test.go @@ -0,0 +1,291 @@ +package fedora31_test + +import ( + "testing" + + "github.com/osbuild/osbuild-composer/internal/blueprint" + "github.com/osbuild/osbuild-composer/internal/distro/distro_test_common" + "github.com/osbuild/osbuild-composer/internal/distro/fedora31" + "github.com/stretchr/testify/assert" +) + +func TestFilenameFromType(t *testing.T) { + type args struct { + outputFormat string + } + tests := []struct { + name string + args args + want string + want1 string + wantErr bool + }{ + { + name: "ami", + args: args{"ami"}, + want: "image.raw", + want1: "application/octet-stream", + }, + { + name: "openstack", + args: args{"openstack"}, + want: "disk.qcow2", + want1: "application/x-qemu-disk", + }, + { + name: "qcow2", + args: args{"qcow2"}, + want: "disk.qcow2", + want1: "application/x-qemu-disk", + }, + { + name: "vhd", + args: args{"vhd"}, + want: "disk.vhd", + want1: "application/x-vhd", + }, + { + name: "vmdk", + args: args{"vmdk"}, + want: "disk.vmdk", + want1: "application/x-vmdk", + }, + { + name: "invalid-output-type", + args: args{"foobar"}, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + dist := fedora31.New() + arch, _ := dist.GetArch("x86_64") + imgType, err := arch.GetImageType(tt.args.outputFormat) + if (err != nil) != tt.wantErr { + t.Errorf("Arch.GetImageType() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !tt.wantErr { + got := imgType.Filename() + got1 := imgType.MIMEType() + if got != tt.want { + t.Errorf("ImageType.Filename() got = %v, want %v", got, tt.want) + } + if got1 != tt.want1 { + t.Errorf("ImageType.MIMEType() got1 = %v, want %v", got1, tt.want1) + } + } + }) + } +} + +func TestImageType_BuildPackages(t *testing.T) { + x8664BuildPackages := []string{ + "dnf", + "dosfstools", + "e2fsprogs", + "grub2-pc", + "policycoreutils", + "qemu-img", + "systemd", + "tar", + "xz", + } + aarch64BuildPackages := []string{ + "dnf", + "dosfstools", + "e2fsprogs", + "policycoreutils", + "qemu-img", + "systemd", + "tar", + "xz", + } + buildPackages := map[string][]string{ + "x86_64": x8664BuildPackages, + "aarch64": aarch64BuildPackages, + } + d := fedora31.New() + for _, archLabel := range d.ListArches() { + archStruct, err := d.GetArch(archLabel) + if err != nil { + t.Errorf("d.GetArch(%v) returned err = %v; expected nil", archLabel, err) + continue + } + for _, itLabel := range archStruct.ListImageTypes() { + itStruct, err := archStruct.GetImageType(itLabel) + if err != nil { + t.Errorf("d.GetArch(%v) returned err = %v; expected nil", archLabel, err) + continue + } + assert.ElementsMatch(t, buildPackages[archLabel], itStruct.BuildPackages()) + } + } +} + +func TestImageType_Size(t *testing.T) { + const gigaByte = 1024 * 1024 * 1024 + sizeMap := []struct { + name string + inputSize uint64 + outputSize uint64 + }{ + { + name: "ami", + inputSize: 6*gigaByte + 1, + outputSize: 6*gigaByte + 1, + }, + { + name: "ami", + inputSize: 0, + outputSize: 6 * gigaByte, + }, + { + name: "vhd", + inputSize: 10 * gigaByte, + outputSize: 10 * gigaByte, + }, + { + name: "vhd", + inputSize: 10*gigaByte - 1, + outputSize: 10 * gigaByte, + }, + } + + distro := fedora31.New() + arch, err := distro.GetArch("x86_64") + if assert.NoError(t, err) { + for _, mapping := range sizeMap { + imgType, err := arch.GetImageType(mapping.name) + if assert.NoError(t, err) { + size := imgType.Size(mapping.inputSize) + assert.Equalf(t, mapping.outputSize, size, "Image type: %s, input size: %d, expected: %d, got: %d", + mapping.name, mapping.inputSize, mapping.outputSize, size) + } + } + } +} + +func TestImageType_BasePackages(t *testing.T) { + pkgMaps := []struct { + name string + basePackages []string + bootloaderPackages []string + excludedPackages []string + bootable bool + }{ + { + name: "ami", + basePackages: []string{ + "@Core", + "chrony", + "kernel", + "selinux-policy-targeted", + "langpacks-en", + "libxcrypt-compat", + "xfsprogs", + "cloud-init", + "checkpolicy", + "net-tools", + }, + bootloaderPackages: []string{ + "dracut-config-generic", + "grub2-pc", + }, + excludedPackages: []string{ + "dracut-config-rescue", + }, + bootable: true, + }, + { + name: "openstack", + basePackages: []string{ + "@Core", + "chrony", + "kernel", + "selinux-policy-targeted", + "spice-vdagent", + "qemu-guest-agent", + "xen-libs", + "langpacks-en", + "cloud-init", + "libdrm", + }, + bootloaderPackages: []string{ + "dracut-config-generic", + "grub2-pc", + }, + excludedPackages: []string{ + "dracut-config-rescue", + }, + bootable: true, + }, + } + distro := fedora31.New() + arch, err := distro.GetArch("x86_64") + assert.NoError(t, err) + + for _, pkgMap := range pkgMaps { + imgType, err := arch.GetImageType(pkgMap.name) + assert.NoError(t, err) + basePackages, excludedPackages := imgType.Packages(blueprint.Blueprint{}) + assert.Equalf( + t, + append(pkgMap.basePackages, pkgMap.bootloaderPackages...), + basePackages, + "image type: %s", + pkgMap.name, + ) + assert.Equalf(t, pkgMap.excludedPackages, excludedPackages, "image type: %s", pkgMap.name) + } +} + +func TestDistro_Manifest(t *testing.T) { + distro_test_common.TestDistro_Manifest(t, "../../../test/cases/", "fedora_31*", fedora31.New()) +} + +func TestFedora31_ListArches(t *testing.T) { + distro := fedora31.New() + arches := distro.ListArches() + assert.Equal(t, []string{"aarch64", "x86_64"}, arches) +} + +func TestFedora31_GetArch(t *testing.T) { + distro := fedora31.New() + arches := []struct { + name string + errorExpected bool + }{ + { + name: "x86_64", + }, + { + name: "aarch64", + }, + { + name: "foo-arch", + errorExpected: true, + }, + } + + for _, a := range arches { + actualArch, err := distro.GetArch(a.name) + if !a.errorExpected { + assert.Equal(t, a.name, actualArch.Name()) + assert.NoError(t, err) + } else { + assert.Nil(t, actualArch) + assert.Error(t, err) + } + } +} + +func TestFedora31_Name(t *testing.T) { + distro := fedora31.New() + assert.Equal(t, "fedora-31", distro.Name()) +} + +func TestFedora31_ModulePlatformID(t *testing.T) { + distro := fedora31.New() + assert.Equal(t, "platform:f31", distro.ModulePlatformID()) +} diff --git a/internal/distro/fedora32/distro.go b/internal/distro/fedora32/distro.go new file mode 100644 index 0000000..81d13e2 --- /dev/null +++ b/internal/distro/fedora32/distro.go @@ -0,0 +1,802 @@ +package fedora32 + +import ( + "encoding/json" + "errors" + "fmt" + "sort" + + "github.com/osbuild/osbuild-composer/internal/distro" + "github.com/osbuild/osbuild-composer/internal/osbuild" + + "github.com/google/uuid" + + "github.com/osbuild/osbuild-composer/internal/blueprint" + "github.com/osbuild/osbuild-composer/internal/crypt" + "github.com/osbuild/osbuild-composer/internal/rpmmd" +) + +const name = "fedora-32" +const modulePlatformID = "platform:f32" + +type distribution struct { + arches map[string]architecture + imageTypes map[string]imageType + buildPackages []string +} + +type architecture struct { + distro *distribution + name string + bootloaderPackages []string + buildPackages []string + legacy string + uefi bool + imageTypes map[string]imageType +} + +type imageType struct { + arch *architecture + name string + filename string + mimeType string + packages []string + excludedPackages []string + enabledServices []string + disabledServices []string + kernelOptions string + bootable bool + rpmOstree bool + defaultSize uint64 + assembler func(uefi bool, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler +} + +func (a *architecture) Distro() distro.Distro { + return a.distro +} + +func (t *imageType) Arch() distro.Arch { + return t.arch +} + +func (d *distribution) ListArches() []string { + archs := make([]string, 0, len(d.arches)) + for name := range d.arches { + archs = append(archs, name) + } + sort.Strings(archs) + return archs +} + +func (d *distribution) GetArch(arch string) (distro.Arch, error) { + a, exists := d.arches[arch] + if !exists { + return nil, errors.New("invalid architecture: " + arch) + } + + return &a, nil +} + +func (d *distribution) setArches(arches ...architecture) { + d.arches = map[string]architecture{} + for _, a := range arches { + d.arches[a.name] = architecture{ + distro: d, + name: a.name, + bootloaderPackages: a.bootloaderPackages, + buildPackages: a.buildPackages, + uefi: a.uefi, + imageTypes: a.imageTypes, + } + } +} + +func (a *architecture) Name() string { + return a.name +} + +func (a *architecture) ListImageTypes() []string { + formats := make([]string, 0, len(a.imageTypes)) + for name := range a.imageTypes { + formats = append(formats, name) + } + sort.Strings(formats) + return formats +} + +func (a *architecture) GetImageType(imageType string) (distro.ImageType, error) { + t, exists := a.imageTypes[imageType] + if !exists { + return nil, errors.New("invalid image type: " + imageType) + } + + return &t, nil +} + +func (a *architecture) setImageTypes(imageTypes ...imageType) { + a.imageTypes = map[string]imageType{} + for _, it := range imageTypes { + a.imageTypes[it.name] = imageType{ + arch: a, + name: it.name, + filename: it.filename, + mimeType: it.mimeType, + packages: it.packages, + excludedPackages: it.excludedPackages, + enabledServices: it.enabledServices, + disabledServices: it.disabledServices, + kernelOptions: it.kernelOptions, + bootable: it.bootable, + rpmOstree: it.rpmOstree, + defaultSize: it.defaultSize, + assembler: it.assembler, + } + } +} + +func (t *imageType) Name() string { + return t.name +} + +func (t *imageType) Filename() string { + return t.filename +} + +func (t *imageType) MIMEType() string { + return t.mimeType +} + +func (t *imageType) Size(size uint64) uint64 { + const MegaByte = 1024 * 1024 + // Microsoft Azure requires vhd images to be rounded up to the nearest MB + if t.name == "vhd" && size%MegaByte != 0 { + size = (size/MegaByte + 1) * MegaByte + } + if size == 0 { + size = t.defaultSize + } + return size +} + +func (t *imageType) Packages(bp blueprint.Blueprint) ([]string, []string) { + packages := append(t.packages, bp.GetPackages()...) + timezone, _ := bp.Customizations.GetTimezoneSettings() + if timezone != nil { + packages = append(packages, "chrony") + } + if t.bootable { + packages = append(packages, t.arch.bootloaderPackages...) + } + + return packages, t.excludedPackages +} + +func (t *imageType) BuildPackages() []string { + packages := append(t.arch.distro.buildPackages, t.arch.buildPackages...) + if t.rpmOstree { + packages = append(packages, "rpm-ostree") + } + return packages +} + +func (t *imageType) Manifest(c *blueprint.Customizations, + options distro.ImageOptions, + repos []rpmmd.RepoConfig, + packageSpecs, + buildPackageSpecs []rpmmd.PackageSpec) (distro.Manifest, error) { + pipeline, err := t.pipeline(c, options, repos, packageSpecs, buildPackageSpecs) + if err != nil { + return distro.Manifest{}, err + } + + return json.Marshal( + osbuild.Manifest{ + Sources: *sources(append(packageSpecs, buildPackageSpecs...)), + Pipeline: *pipeline, + }, + ) +} + +func (d *distribution) Name() string { + return name +} + +func (d *distribution) ModulePlatformID() string { + return modulePlatformID +} + +func sources(packages []rpmmd.PackageSpec) *osbuild.Sources { + files := &osbuild.FilesSource{ + URLs: make(map[string]osbuild.FileSource), + } + for _, pkg := range packages { + fileSource := osbuild.FileSource{ + URL: pkg.RemoteLocation, + } + files.URLs[pkg.Checksum] = fileSource + } + return &osbuild.Sources{ + "org.osbuild.files": files, + } +} + +func (t *imageType) pipeline(c *blueprint.Customizations, options distro.ImageOptions, repos []rpmmd.RepoConfig, packageSpecs, buildPackageSpecs []rpmmd.PackageSpec) (*osbuild.Pipeline, error) { + p := &osbuild.Pipeline{} + p.SetBuild(t.buildPipeline(repos, *t.arch, buildPackageSpecs), "org.osbuild.fedora32") + + p.AddStage(osbuild.NewRPMStage(t.rpmStageOptions(*t.arch, repos, packageSpecs))) + p.AddStage(osbuild.NewFixBLSStage()) + + // TODO support setting all languages and install corresponding langpack-* package + language, keyboard := c.GetPrimaryLocale() + + if language != nil { + p.AddStage(osbuild.NewLocaleStage(&osbuild.LocaleStageOptions{Language: *language})) + } else { + p.AddStage(osbuild.NewLocaleStage(&osbuild.LocaleStageOptions{Language: "en_US"})) + } + + if keyboard != nil { + p.AddStage(osbuild.NewKeymapStage(&osbuild.KeymapStageOptions{Keymap: *keyboard})) + } + + if hostname := c.GetHostname(); hostname != nil { + p.AddStage(osbuild.NewHostnameStage(&osbuild.HostnameStageOptions{Hostname: *hostname})) + } + + timezone, ntpServers := c.GetTimezoneSettings() + + if timezone != nil { + p.AddStage(osbuild.NewTimezoneStage(&osbuild.TimezoneStageOptions{Zone: *timezone})) + } + + if len(ntpServers) > 0 { + p.AddStage(osbuild.NewChronyStage(&osbuild.ChronyStageOptions{Timeservers: ntpServers})) + } + + if groups := c.GetGroups(); len(groups) > 0 { + p.AddStage(osbuild.NewGroupsStage(t.groupStageOptions(groups))) + } + + if users := c.GetUsers(); len(users) > 0 { + options, err := t.userStageOptions(users) + if err != nil { + return nil, err + } + p.AddStage(osbuild.NewUsersStage(options)) + } + + if t.bootable { + p.AddStage(osbuild.NewFSTabStage(t.fsTabStageOptions(t.arch.uefi))) + p.AddStage(osbuild.NewGRUB2Stage(t.grub2StageOptions(t.kernelOptions, c.GetKernel(), t.arch.uefi))) + } + + if services := c.GetServices(); services != nil || t.enabledServices != nil { + p.AddStage(osbuild.NewSystemdStage(t.systemdStageOptions(t.enabledServices, t.disabledServices, services))) + } + + if firewall := c.GetFirewall(); firewall != nil { + p.AddStage(osbuild.NewFirewallStage(t.firewallStageOptions(firewall))) + } + + p.AddStage(osbuild.NewSELinuxStage(t.selinuxStageOptions())) + + if t.rpmOstree { + p.AddStage(osbuild.NewRPMOSTreeStage(&osbuild.RPMOSTreeStageOptions{ + EtcGroupMembers: []string{ + // NOTE: We may want to make this configurable. + "wheel", "docker", + }, + })) + } + + p.Assembler = t.assembler(t.arch.uefi, options, t.arch) + + return p, nil +} + +func (t *imageType) buildPipeline(repos []rpmmd.RepoConfig, arch architecture, buildPackageSpecs []rpmmd.PackageSpec) *osbuild.Pipeline { + p := &osbuild.Pipeline{} + p.AddStage(osbuild.NewRPMStage(t.rpmStageOptions(arch, repos, buildPackageSpecs))) + + selinuxOptions := osbuild.SELinuxStageOptions{ + FileContexts: "etc/selinux/targeted/contexts/files/file_contexts", + Labels: map[string]string{ + "/usr/bin/cp": "system_u:object_r:install_exec_t:s0", + }, + } + + p.AddStage(osbuild.NewSELinuxStage(&selinuxOptions)) + return p +} + +func (t *imageType) rpmStageOptions(arch architecture, repos []rpmmd.RepoConfig, specs []rpmmd.PackageSpec) *osbuild.RPMStageOptions { + var gpgKeys []string + for _, repo := range repos { + if repo.GPGKey == "" { + continue + } + gpgKeys = append(gpgKeys, repo.GPGKey) + } + + var packages []osbuild.RPMPackage + for _, spec := range specs { + pkg := osbuild.RPMPackage{ + Checksum: spec.Checksum, + CheckGPG: spec.CheckGPG, + } + packages = append(packages, pkg) + } + + return &osbuild.RPMStageOptions{ + GPGKeys: gpgKeys, + Packages: packages, + } +} + +func (t *imageType) userStageOptions(users []blueprint.UserCustomization) (*osbuild.UsersStageOptions, error) { + options := osbuild.UsersStageOptions{ + Users: make(map[string]osbuild.UsersStageOptionsUser), + } + + for _, c := range users { + if c.Password != nil && !crypt.PasswordIsCrypted(*c.Password) { + cryptedPassword, err := crypt.CryptSHA512(*c.Password) + if err != nil { + return nil, err + } + + c.Password = &cryptedPassword + } + + user := osbuild.UsersStageOptionsUser{ + Groups: c.Groups, + Description: c.Description, + Home: c.Home, + Shell: c.Shell, + Password: c.Password, + Key: c.Key, + } + + user.UID = c.UID + user.GID = c.GID + + options.Users[c.Name] = user + } + + return &options, nil +} + +func (t *imageType) groupStageOptions(groups []blueprint.GroupCustomization) *osbuild.GroupsStageOptions { + options := osbuild.GroupsStageOptions{ + Groups: map[string]osbuild.GroupsStageOptionsGroup{}, + } + + for _, group := range groups { + groupData := osbuild.GroupsStageOptionsGroup{ + Name: group.Name, + } + groupData.GID = group.GID + + options.Groups[group.Name] = groupData + } + + return &options +} + +func (t *imageType) firewallStageOptions(firewall *blueprint.FirewallCustomization) *osbuild.FirewallStageOptions { + options := osbuild.FirewallStageOptions{ + Ports: firewall.Ports, + } + + if firewall.Services != nil { + options.EnabledServices = firewall.Services.Enabled + options.DisabledServices = firewall.Services.Disabled + } + + return &options +} + +func (t *imageType) systemdStageOptions(enabledServices, disabledServices []string, s *blueprint.ServicesCustomization) *osbuild.SystemdStageOptions { + if s != nil { + enabledServices = append(enabledServices, s.Enabled...) + disabledServices = append(disabledServices, s.Disabled...) + } + return &osbuild.SystemdStageOptions{ + EnabledServices: enabledServices, + DisabledServices: disabledServices, + } +} + +func (t *imageType) fsTabStageOptions(uefi bool) *osbuild.FSTabStageOptions { + options := osbuild.FSTabStageOptions{} + options.AddFilesystem("76a22bf4-f153-4541-b6c7-0332c0dfaeac", "ext4", "/", "defaults", 1, 1) + if uefi { + options.AddFilesystem("46BB-8120", "vfat", "/boot/efi", "umask=0077,shortname=winnt", 0, 2) + } + return &options +} + +func (t *imageType) grub2StageOptions(kernelOptions string, kernel *blueprint.KernelCustomization, uefi bool) *osbuild.GRUB2StageOptions { + id := uuid.MustParse("76a22bf4-f153-4541-b6c7-0332c0dfaeac") + + if kernel != nil { + kernelOptions += " " + kernel.Append + } + + var uefiOptions *osbuild.GRUB2UEFI + if uefi { + uefiOptions = &osbuild.GRUB2UEFI{ + Vendor: "fedora", + } + } + + var legacy string + if !uefi { + legacy = t.arch.legacy + } + + return &osbuild.GRUB2StageOptions{ + RootFilesystemUUID: id, + KernelOptions: kernelOptions, + Legacy: legacy, + UEFI: uefiOptions, + } +} + +func (t *imageType) selinuxStageOptions() *osbuild.SELinuxStageOptions { + return &osbuild.SELinuxStageOptions{ + FileContexts: "etc/selinux/targeted/contexts/files/file_contexts", + } +} + +func qemuAssembler(format string, filename string, uefi bool, imageOptions distro.ImageOptions) *osbuild.Assembler { + var options osbuild.QEMUAssemblerOptions + if uefi { + options = osbuild.QEMUAssemblerOptions{ + Format: format, + Filename: filename, + Size: imageOptions.Size, + PTUUID: "8DFDFF87-C96E-EA48-A3A6-9408F1F6B1EF", + PTType: "gpt", + Partitions: []osbuild.QEMUPartition{ + { + Start: 2048, + Size: 972800, + Type: "C12A7328-F81F-11D2-BA4B-00A0C93EC93B", + UUID: "02C1E068-1D2F-4DA3-91FD-8DD76A955C9D", + Filesystem: &osbuild.QEMUFilesystem{ + Type: "vfat", + UUID: "46BB-8120", + Label: "EFI System Partition", + Mountpoint: "/boot/efi", + }, + }, + { + Start: 976896, + UUID: "8D760010-FAAE-46D1-9E5B-4A2EAC5030CD", + Filesystem: &osbuild.QEMUFilesystem{ + Type: "ext4", + UUID: "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + Mountpoint: "/", + }, + }, + }, + } + } else { + options = osbuild.QEMUAssemblerOptions{ + Format: format, + Filename: filename, + Size: imageOptions.Size, + PTUUID: "0x14fc63d2", + PTType: "mbr", + Partitions: []osbuild.QEMUPartition{ + { + Start: 2048, + Bootable: true, + Filesystem: &osbuild.QEMUFilesystem{ + Type: "ext4", + UUID: "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + Mountpoint: "/", + }, + }, + }, + } + } + return osbuild.NewQEMUAssembler(&options) +} + +func ostreeCommitAssembler(options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler { + ref := options.OSTree.Ref + if ref == "" { + ref = fmt.Sprintf("fedora/32/%s/iot", arch.Name()) + } + return osbuild.NewOSTreeCommitAssembler( + &osbuild.OSTreeCommitAssemblerOptions{ + Ref: ref, + Parent: options.OSTree.Parent, + Tar: osbuild.OSTreeCommitAssemblerTarOptions{ + Filename: "commit.tar", + }, + }, + ) +} + +// New creates a new distro object, defining the supported architectures and image types +func New() distro.Distro { + const GigaByte = 1024 * 1024 * 1024 + + iotImgType := imageType{ + name: "fedora-iot-commit", + filename: "commit.tar", + mimeType: "application/x-tar", + packages: []string{ + "fedora-release-iot", + "glibc", "glibc-minimal-langpack", "nss-altfiles", + "sssd-client", "libsss_sudo", "shadow-utils", + "kernel", + "dracut-config-generic", "dracut-network", + "rpm-ostree", "polkit", "lvm2", + "chrony", "zram", + "cryptsetup", "pinentry", + "keyutils", + "e2fsprogs", "dosfstools", + "gnupg2", + "basesystem", "python3", "bash", + "xz", "gzip", + "coreutils", "which", "curl", + "firewalld", "iptables", + "NetworkManager", "NetworkManager-wifi", "NetworkManager-wwan", + "wpa_supplicant", "iwd", + "dnsmasq", "traceroute", + "hostname", "iproute", "iputils", + "openssh-clients", "openssh-server", "passwd", + "policycoreutils", "procps-ng", "rootfiles", "rpm", + "selinux-policy-targeted", "setup", "shadow-utils", + "sudo", "systemd", "util-linux", "vim-minimal", + "less", "tar", + "fwupd", // "usbguard", BUG: this fails due to an SELinux policy issue + "greenboot", "greenboot-grub2", "greenboot-rpm-ostree-grub2", "greenboot-reboot", "greenboot-status", + "ignition", + "rsync", + "ima-evm-utils", + "bash-completion", + "tmux", "screen", + "policycoreutils-python-utils", + "setools-console", + "audit", "rng-tools", + "bluez", "bluez-libs", "bluez-mesh", "wpan-tools", + "kernel-tools", "libgpiod-utils", + "podman", "container-selinux", "skopeo", "criu", + "slirp4netns", + "clevis", "clevis-dracut", "clevis-luks", + "attr", + // x86 specific + "grub2", "grub2-efi-x64", "efibootmgr", "shim-x64", "microcode_ctl", + "iwl1000-firmware", "iwl100-firmware", "iwl105-firmware", "iwl135-firmware", + "iwl2000-firmware", "iwl2030-firmware", "iwl3160-firmware", "iwl5000-firmware", + "iwl5150-firmware", "iwl6000-firmware", "iwl6050-firmware", "iwl7260-firmware", + }, + enabledServices: []string{ + "NetworkManager.service", "firewalld.service", "rngd.service", "sshd.service", "zram-swap.service", + }, + rpmOstree: true, + assembler: func(uefi bool, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler { + return ostreeCommitAssembler(options, arch) + }, + } + amiImgType := imageType{ + name: "ami", + filename: "image.raw", + mimeType: "application/octet-stream", + packages: []string{ + "@Core", + "chrony", + "kernel", + "selinux-policy-targeted", + "langpacks-en", + "libxcrypt-compat", + "xfsprogs", + "cloud-init", + "checkpolicy", + "net-tools", + }, + excludedPackages: []string{ + "dracut-config-rescue", + }, + enabledServices: []string{ + "cloud-init.service", + }, + kernelOptions: "ro no_timer_check console=ttyS0,115200n8 console=tty1 biosdevname=0 net.ifnames=0 console=ttyS0,115200", + bootable: true, + defaultSize: 6 * GigaByte, + assembler: func(uefi bool, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler { + return qemuAssembler("raw", "image.raw", uefi, options) + }, + } + + qcow2ImageType := imageType{ + name: "qcow2", + filename: "disk.qcow2", + mimeType: "application/x-qemu-disk", + packages: []string{ + "kernel-core", + "@Fedora Cloud Server", + "chrony", + "polkit", + "systemd-udev", + "selinux-policy-targeted", + "langpacks-en", + }, + excludedPackages: []string{ + "dracut-config-rescue", + "etables", + "firewalld", + "gobject-introspection", + "plymouth", + }, + enabledServices: []string{ + "cloud-init.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + }, + kernelOptions: "ro biosdevname=0 net.ifnames=0", + bootable: true, + defaultSize: 2 * GigaByte, + assembler: func(uefi bool, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler { + return qemuAssembler("qcow2", "disk.qcow2", uefi, options) + }, + } + + openstackImgType := imageType{ + name: "openstack", + filename: "disk.qcow2", + mimeType: "application/x-qemu-disk", + packages: []string{ + "@Core", + "chrony", + "kernel", + "selinux-policy-targeted", + "spice-vdagent", + "qemu-guest-agent", + "xen-libs", + "langpacks-en", + "cloud-init", + "libdrm", + }, + excludedPackages: []string{ + "dracut-config-rescue", + }, + enabledServices: []string{ + "cloud-init.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + }, + kernelOptions: "ro biosdevname=0 net.ifnames=0", + bootable: true, + defaultSize: 2 * GigaByte, + assembler: func(uefi bool, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler { + return qemuAssembler("qcow2", "disk.qcow2", uefi, options) + }, + } + + vhdImgType := imageType{ + name: "vhd", + filename: "disk.vhd", + mimeType: "application/x-vhd", + packages: []string{ + "@Core", + "chrony", + "kernel", + "selinux-policy-targeted", + "langpacks-en", + "net-tools", + "ntfsprogs", + "WALinuxAgent", + "libxcrypt-compat", + "initscripts", + "glibc-all-langpacks", + }, + excludedPackages: []string{ + "dracut-config-rescue", + }, + enabledServices: []string{ + "sshd", + "waagent", // needed to run in Azure + }, + disabledServices: []string{ + "proc-sys-fs-binfmt_misc.mount", + "loadmodules.service", + }, + // These kernel parameters are required by Azure documentation + kernelOptions: "ro biosdevname=0 rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0", + bootable: true, + defaultSize: 2 * GigaByte, + assembler: func(uefi bool, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler { + return qemuAssembler("vpc", "disk.vhd", uefi, options) + }, + } + + vmdkImgType := imageType{ + name: "vmdk", + filename: "disk.vmdk", + mimeType: "application/x-vmdk", + packages: []string{ + "@core", + "chrony", + "firewalld", + "kernel", + "langpacks-en", + "open-vm-tools", + "selinux-policy-targeted", + }, + excludedPackages: []string{ + "dracut-config-rescue", + }, + kernelOptions: "ro biosdevname=0 net.ifnames=0", + bootable: true, + defaultSize: 2 * GigaByte, + assembler: func(uefi bool, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler { + return qemuAssembler("vmdk", "disk.vmdk", uefi, options) + }, + } + + r := distribution{ + imageTypes: map[string]imageType{}, + buildPackages: []string{ + "dnf", + "dosfstools", + "e2fsprogs", + "policycoreutils", + "qemu-img", + "selinux-policy-targeted", + "systemd", + "tar", + "xz", + }, + } + x8664 := architecture{ + distro: &r, + name: "x86_64", + bootloaderPackages: []string{ + "dracut-config-generic", + "grub2-pc", + }, + buildPackages: []string{ + "grub2-pc", + }, + legacy: "i386-pc", + } + x8664.setImageTypes( + iotImgType, + amiImgType, + qcow2ImageType, + openstackImgType, + vhdImgType, + vmdkImgType, + ) + + aarch64 := architecture{ + distro: &r, + name: "aarch64", + bootloaderPackages: []string{ + "dracut-config-generic", + "efibootmgr", + "grub2-efi-aa64", + "grub2-tools", + "shim-aa64", + }, + uefi: true, + } + aarch64.setImageTypes( + amiImgType, + qcow2ImageType, + openstackImgType, + ) + + r.setArches(x8664, aarch64) + + return &r +} diff --git a/internal/distro/fedora32/distro_test.go b/internal/distro/fedora32/distro_test.go new file mode 100644 index 0000000..f9d2291 --- /dev/null +++ b/internal/distro/fedora32/distro_test.go @@ -0,0 +1,338 @@ +package fedora32_test + +import ( + "testing" + + "github.com/osbuild/osbuild-composer/internal/blueprint" + "github.com/osbuild/osbuild-composer/internal/distro/distro_test_common" + "github.com/osbuild/osbuild-composer/internal/distro/fedora32" + "github.com/stretchr/testify/assert" +) + +func TestFilenameFromType(t *testing.T) { + type args struct { + outputFormat string + } + tests := []struct { + name string + args args + want string + want1 string + wantErr bool + }{ + { + name: "ami", + args: args{"ami"}, + want: "image.raw", + want1: "application/octet-stream", + }, + { + name: "openstack", + args: args{"openstack"}, + want: "disk.qcow2", + want1: "application/x-qemu-disk", + }, + { + name: "qcow2", + args: args{"qcow2"}, + want: "disk.qcow2", + want1: "application/x-qemu-disk", + }, + { + name: "vhd", + args: args{"vhd"}, + want: "disk.vhd", + want1: "application/x-vhd", + }, + { + name: "vmdk", + args: args{"vmdk"}, + want: "disk.vmdk", + want1: "application/x-vmdk", + }, + { + name: "invalid-output-type", + args: args{"foobar"}, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + dist := fedora32.New() + arch, _ := dist.GetArch("x86_64") + imgType, err := arch.GetImageType(tt.args.outputFormat) + if (err != nil) != tt.wantErr { + t.Errorf("Arch.GetImageType() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !tt.wantErr { + got := imgType.Filename() + got1 := imgType.MIMEType() + if got != tt.want { + t.Errorf("ImageType.Filename() got = %v, want %v", got, tt.want) + } + if got1 != tt.want1 { + t.Errorf("ImageType.MIMEType() got1 = %v, want %v", got1, tt.want1) + } + } + }) + } +} + +func TestImageType_BuildPackages(t *testing.T) { + x8664BuildPackages := []string{ + "dnf", + "dosfstools", + "e2fsprogs", + "grub2-pc", + "policycoreutils", + "qemu-img", + "selinux-policy-targeted", + "systemd", + "tar", + "xz", + } + aarch64BuildPackages := []string{ + "dnf", + "dosfstools", + "e2fsprogs", + "policycoreutils", + "qemu-img", + "selinux-policy-targeted", + "systemd", + "tar", + "xz", + } + buildPackages := map[string][]string{ + "x86_64": x8664BuildPackages, + "aarch64": aarch64BuildPackages, + } + d := fedora32.New() + for _, archLabel := range d.ListArches() { + archStruct, err := d.GetArch(archLabel) + if err != nil { + t.Errorf("d.GetArch(%v) returned err = %v; expected nil", archLabel, err) + continue + } + for _, itLabel := range archStruct.ListImageTypes() { + itStruct, err := archStruct.GetImageType(itLabel) + if err != nil { + t.Errorf("d.GetArch(%v) returned err = %v; expected nil", archLabel, err) + continue + } + if itLabel == "fedora-iot-commit" { + // For now we only include rpm-ostree when building fedora-iot-commit image types, this we may want + // to reconsider. The only reason to specia-case it is that it might pull in a lot of dependencies + // for a niche usecase. + assert.ElementsMatch(t, append(buildPackages[archLabel], "rpm-ostree"), itStruct.BuildPackages()) + } else { + assert.ElementsMatch(t, buildPackages[archLabel], itStruct.BuildPackages()) + } + } + } +} + +func TestImageType_Name(t *testing.T) { + distro := fedora32.New() + imgMap := []struct { + arch string + imgNames []string + }{ + { + arch: "x86_64", + imgNames: []string{ + "ami", + "qcow2", + "openstack", + "vhd", + "vmdk", + }, + }, + { + arch: "aarch64", + imgNames: []string{ + "ami", + "qcow2", + "openstack", + }, + }, + } + for _, mapping := range imgMap { + arch, err := distro.GetArch(mapping.arch) + if assert.NoError(t, err) { + for _, imgName := range mapping.imgNames { + imgType, err := arch.GetImageType(imgName) + if assert.NoError(t, err) { + assert.Equalf(t, imgName, imgType.Name(), "arch: %s", mapping.arch) + } + } + } + } +} + +func TestImageType_Size(t *testing.T) { + const gigaByte = 1024 * 1024 * 1024 + sizeMap := []struct { + name string + inputSize uint64 + outputSize uint64 + }{ + { + name: "ami", + inputSize: 6*gigaByte + 1, + outputSize: 6*gigaByte + 1, + }, + { + name: "ami", + inputSize: 0, + outputSize: 6 * gigaByte, + }, + { + name: "vhd", + inputSize: 10 * gigaByte, + outputSize: 10 * gigaByte, + }, + { + name: "vhd", + inputSize: 10*gigaByte - 1, + outputSize: 10 * gigaByte, + }, + } + + distro := fedora32.New() + arch, err := distro.GetArch("x86_64") + if assert.NoError(t, err) { + for _, mapping := range sizeMap { + imgType, err := arch.GetImageType(mapping.name) + if assert.NoError(t, err) { + size := imgType.Size(mapping.inputSize) + assert.Equalf(t, mapping.outputSize, size, "Image type: %s, input size: %d, expected: %d, got: %d", + mapping.name, mapping.inputSize, mapping.outputSize, size) + } + } + } +} + +func TestImageType_BasePackages(t *testing.T) { + pkgMaps := []struct { + name string + basePackages []string + bootloaderPackages []string + excludedPackages []string + bootable bool + }{ + { + name: "ami", + basePackages: []string{ + "@Core", + "chrony", + "kernel", + "selinux-policy-targeted", + "langpacks-en", + "libxcrypt-compat", + "xfsprogs", + "cloud-init", + "checkpolicy", + "net-tools", + }, + bootloaderPackages: []string{ + "dracut-config-generic", + "grub2-pc", + }, + excludedPackages: []string{ + "dracut-config-rescue", + }, + bootable: true, + }, + { + name: "openstack", + basePackages: []string{ + "@Core", + "chrony", + "kernel", + "selinux-policy-targeted", + "spice-vdagent", + "qemu-guest-agent", + "xen-libs", + "langpacks-en", + "cloud-init", + "libdrm", + }, + bootloaderPackages: []string{ + "dracut-config-generic", + "grub2-pc", + }, + excludedPackages: []string{ + "dracut-config-rescue", + }, + bootable: true, + }, + } + distro := fedora32.New() + arch, err := distro.GetArch("x86_64") + assert.NoError(t, err) + + for _, pkgMap := range pkgMaps { + imgType, err := arch.GetImageType(pkgMap.name) + assert.NoError(t, err) + basePackages, excludedPackages := imgType.Packages(blueprint.Blueprint{}) + assert.Equalf( + t, + append(pkgMap.basePackages, pkgMap.bootloaderPackages...), + basePackages, + "image type: %s", + pkgMap.name, + ) + assert.Equalf(t, pkgMap.excludedPackages, excludedPackages, "image type: %s", pkgMap.name) + } +} + +func TestDistro_Manifest(t *testing.T) { + distro_test_common.TestDistro_Manifest(t, "../../../test/cases/", "fedora_32*", fedora32.New()) +} + +func TestFedora32_ListArches(t *testing.T) { + distro := fedora32.New() + arches := distro.ListArches() + assert.Equal(t, []string{"aarch64", "x86_64"}, arches) +} + +func TestFedora32_GetArch(t *testing.T) { + distro := fedora32.New() + arches := []struct { + name string + errorExpected bool + }{ + { + name: "x86_64", + }, + { + name: "aarch64", + }, + { + name: "foo-arch", + errorExpected: true, + }, + } + + for _, a := range arches { + actualArch, err := distro.GetArch(a.name) + if !a.errorExpected { + assert.Equal(t, a.name, actualArch.Name()) + assert.NoError(t, err) + } else { + assert.Nil(t, actualArch) + assert.Error(t, err) + } + } +} + +func TestFedora32_Name(t *testing.T) { + distro := fedora32.New() + assert.Equal(t, "fedora-32", distro.Name()) +} + +func TestFedora32_ModulePlatformID(t *testing.T) { + distro := fedora32.New() + assert.Equal(t, "platform:f32", distro.ModulePlatformID()) +} diff --git a/internal/distro/fedoratest/distro.go b/internal/distro/fedoratest/distro.go new file mode 100644 index 0000000..8cb6449 --- /dev/null +++ b/internal/distro/fedoratest/distro.go @@ -0,0 +1,118 @@ +package fedoratest + +import ( + "encoding/json" + "errors" + + "github.com/osbuild/osbuild-composer/internal/blueprint" + "github.com/osbuild/osbuild-composer/internal/distro" + "github.com/osbuild/osbuild-composer/internal/osbuild" + "github.com/osbuild/osbuild-composer/internal/rpmmd" +) + +const name = "fedora-30" +const modulePlatformID = "platform:f30" + +type FedoraTestDistro struct{} + +type arch struct { + name string + distro *FedoraTestDistro +} + +type imageType struct { + name string + arch *arch +} + +func (a *arch) Distro() distro.Distro { + return a.distro +} + +func (t *imageType) Arch() distro.Arch { + return t.arch +} + +func (d *FedoraTestDistro) ListArches() []string { + return []string{"x86_64"} +} + +func (d *FedoraTestDistro) GetArch(name string) (distro.Arch, error) { + if name != "x86_64" { + return nil, errors.New("invalid architecture: " + name) + } + + return &arch{ + name: name, + distro: d, + }, nil +} + +func (a *arch) Name() string { + return a.name +} + +func (a *arch) ListImageTypes() []string { + return []string{"qcow2"} +} + +func (a *arch) GetImageType(name string) (distro.ImageType, error) { + if name != "qcow2" { + return nil, errors.New("invalid image type: " + name) + } + + return &imageType{ + name: name, + arch: a, + }, nil +} + +func (t *imageType) Name() string { + return t.name +} + +func (t *imageType) Filename() string { + return "test.img" +} + +func (t *imageType) MIMEType() string { + return "application/x-test" +} + +func (t *imageType) Size(size uint64) uint64 { + return size +} + +func (t *imageType) Packages(bp blueprint.Blueprint) ([]string, []string) { + return nil, nil +} + +func (t *imageType) BuildPackages() []string { + return nil +} + +func (t *imageType) Manifest(c *blueprint.Customizations, + options distro.ImageOptions, + repos []rpmmd.RepoConfig, + packageSpecs, + buildPackageSpecs []rpmmd.PackageSpec) (distro.Manifest, error) { + + return json.Marshal( + osbuild.Manifest{ + Sources: osbuild.Sources{}, + Pipeline: osbuild.Pipeline{}, + }, + ) +} + +func New() *FedoraTestDistro { + return &FedoraTestDistro{} +} + +func (d *FedoraTestDistro) Name() string { + return name +} + +func (d *FedoraTestDistro) ModulePlatformID() string { + return modulePlatformID +} diff --git a/internal/distro/osrelease_test.go b/internal/distro/osrelease_test.go new file mode 100644 index 0000000..490040b --- /dev/null +++ b/internal/distro/osrelease_test.go @@ -0,0 +1,54 @@ +package distro + +import ( + "reflect" + "strings" + "testing" +) + +func TestOSRelease(t *testing.T) { + var cases = []struct { + Input string + OSRelease map[string]string + }{ + { + ``, + map[string]string{}, + }, + { + `NAME=Fedora +VERSION="30 (Workstation Edition)" +ID=fedora +VERSION_ID=30 +VERSION_CODENAME="" +PLATFORM_ID="platform:f30" +PRETTY_NAME="Fedora 30 (Workstation Edition)" +VARIANT="Workstation Edition" +VARIANT_ID=workstation`, + map[string]string{ + "NAME": "Fedora", + "VERSION": "30 (Workstation Edition)", + "ID": "fedora", + "VERSION_ID": "30", + "VERSION_CODENAME": "", + "PLATFORM_ID": "platform:f30", + "PRETTY_NAME": "Fedora 30 (Workstation Edition)", + "VARIANT": "Workstation Edition", + "VARIANT_ID": "workstation", + }, + }, + } + + for i, c := range cases { + r := strings.NewReader(c.Input) + + osrelease, err := readOSRelease(r) + if err != nil { + t.Fatalf("%d: readOSRelease: %v", i, err) + } + + if !reflect.DeepEqual(osrelease, c.OSRelease) { + t.Fatalf("%d: readOSRelease returned unexpected result: %#v", i, osrelease) + } + } +} diff --git a/internal/distro/rhel8/distro.go b/internal/distro/rhel8/distro.go new file mode 100644 index 0000000..a8c4998 --- /dev/null +++ b/internal/distro/rhel8/distro.go @@ -0,0 +1,1063 @@ +package rhel8 + +import ( + "encoding/json" + "errors" + "fmt" + "sort" + + "github.com/osbuild/osbuild-composer/internal/distro" + "github.com/osbuild/osbuild-composer/internal/osbuild" + + "github.com/google/uuid" + + "github.com/osbuild/osbuild-composer/internal/blueprint" + "github.com/osbuild/osbuild-composer/internal/crypt" + "github.com/osbuild/osbuild-composer/internal/rpmmd" +) + +const name = "rhel-8" +const modulePlatformID = "platform:el8" + +type distribution struct { + arches map[string]architecture + imageTypes map[string]imageType + buildPackages []string +} + +type architecture struct { + distro *distribution + name string + bootloaderPackages []string + buildPackages []string + legacy string + uefi bool + imageTypes map[string]imageType +} + +type imageType struct { + arch *architecture + name string + filename string + mimeType string + packages []string + excludedPackages []string + enabledServices []string + disabledServices []string + defaultTarget string + kernelOptions string + bootable bool + rpmOstree bool + defaultSize uint64 + assembler func(uefi bool, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler +} + +func (a *architecture) Distro() distro.Distro { + return a.distro +} + +func (t *imageType) Arch() distro.Arch { + return t.arch +} + +func (d *distribution) ListArches() []string { + archs := make([]string, 0, len(d.arches)) + for name := range d.arches { + archs = append(archs, name) + } + sort.Strings(archs) + return archs +} + +func (d *distribution) GetArch(arch string) (distro.Arch, error) { + a, exists := d.arches[arch] + if !exists { + return nil, errors.New("invalid architecture: " + arch) + } + + return &a, nil +} + +func (d *distribution) setArches(arches ...architecture) { + d.arches = map[string]architecture{} + for _, a := range arches { + d.arches[a.name] = architecture{ + distro: d, + name: a.name, + bootloaderPackages: a.bootloaderPackages, + buildPackages: a.buildPackages, + uefi: a.uefi, + imageTypes: a.imageTypes, + } + } +} + +func (a *architecture) Name() string { + return a.name +} + +func (a *architecture) ListImageTypes() []string { + formats := make([]string, 0, len(a.imageTypes)) + for name := range a.imageTypes { + formats = append(formats, name) + } + sort.Strings(formats) + return formats +} + +func (a *architecture) GetImageType(imageType string) (distro.ImageType, error) { + t, exists := a.imageTypes[imageType] + if !exists { + return nil, errors.New("invalid image type: " + imageType) + } + + return &t, nil +} + +func (a *architecture) setImageTypes(imageTypes ...imageType) { + a.imageTypes = map[string]imageType{} + for _, it := range imageTypes { + a.imageTypes[it.name] = imageType{ + arch: a, + name: it.name, + filename: it.filename, + mimeType: it.mimeType, + packages: it.packages, + excludedPackages: it.excludedPackages, + enabledServices: it.enabledServices, + disabledServices: it.disabledServices, + defaultTarget: it.defaultTarget, + kernelOptions: it.kernelOptions, + bootable: it.bootable, + rpmOstree: it.rpmOstree, + defaultSize: it.defaultSize, + assembler: it.assembler, + } + } +} + +func (t *imageType) Name() string { + return t.name +} + +func (t *imageType) Filename() string { + return t.filename +} + +func (t *imageType) MIMEType() string { + return t.mimeType +} + +func (t *imageType) Size(size uint64) uint64 { + const MegaByte = 1024 * 1024 + // Microsoft Azure requires vhd images to be rounded up to the nearest MB + if t.name == "vhd" && size%MegaByte != 0 { + size = (size/MegaByte + 1) * MegaByte + } + if size == 0 { + size = t.defaultSize + } + return size +} + +func (t *imageType) Packages(bp blueprint.Blueprint) ([]string, []string) { + packages := append(t.packages, bp.GetPackages()...) + timezone, _ := bp.Customizations.GetTimezoneSettings() + if timezone != nil { + packages = append(packages, "chrony") + } + if t.bootable { + packages = append(packages, t.arch.bootloaderPackages...) + } + + return packages, t.excludedPackages +} + +func (t *imageType) BuildPackages() []string { + packages := append(t.arch.distro.buildPackages, t.arch.buildPackages...) + if t.rpmOstree { + packages = append(packages, "rpm-ostree") + } + return packages +} + +func (t *imageType) Manifest(c *blueprint.Customizations, + options distro.ImageOptions, + repos []rpmmd.RepoConfig, + packageSpecs, + buildPackageSpecs []rpmmd.PackageSpec) (distro.Manifest, error) { + pipeline, err := t.pipeline(c, options, repos, packageSpecs, buildPackageSpecs) + if err != nil { + return distro.Manifest{}, err + } + + return json.Marshal( + osbuild.Manifest{ + Sources: *sources(append(packageSpecs, buildPackageSpecs...)), + Pipeline: *pipeline, + }, + ) +} + +func (d *distribution) Name() string { + return name +} + +func (d *distribution) ModulePlatformID() string { + return modulePlatformID +} + +func sources(packages []rpmmd.PackageSpec) *osbuild.Sources { + files := &osbuild.FilesSource{ + URLs: make(map[string]osbuild.FileSource), + } + for _, pkg := range packages { + fileSource := osbuild.FileSource{ + URL: pkg.RemoteLocation, + } + if pkg.Secrets == "org.osbuild.rhsm" { + fileSource.Secrets = &osbuild.Secret{ + Name: "org.osbuild.rhsm", + } + } + files.URLs[pkg.Checksum] = fileSource + } + return &osbuild.Sources{ + "org.osbuild.files": files, + } +} + +func (t *imageType) pipeline(c *blueprint.Customizations, options distro.ImageOptions, repos []rpmmd.RepoConfig, packageSpecs, buildPackageSpecs []rpmmd.PackageSpec) (*osbuild.Pipeline, error) { + p := &osbuild.Pipeline{} + p.SetBuild(t.buildPipeline(repos, *t.arch, buildPackageSpecs), "org.osbuild.rhel82") + + if t.arch.Name() == "s390x" { + p.AddStage(osbuild.NewKernelCmdlineStage(&osbuild.KernelCmdlineStageOptions{ + RootFsUUID: "0bd700f8-090f-4556-b797-b340297ea1bd", + KernelOpts: "net.ifnames=0 crashkernel=auto", + })) + } + + p.AddStage(osbuild.NewRPMStage(t.rpmStageOptions(*t.arch, repos, packageSpecs))) + p.AddStage(osbuild.NewFixBLSStage()) + + if t.bootable { + p.AddStage(osbuild.NewFSTabStage(t.fsTabStageOptions(t.arch.uefi))) + if t.arch.Name() != "s390x" { + p.AddStage(osbuild.NewGRUB2Stage(t.grub2StageOptions(t.kernelOptions, c.GetKernel(), t.arch.uefi))) + } + } + + // TODO support setting all languages and install corresponding langpack-* package + language, keyboard := c.GetPrimaryLocale() + + if language != nil { + p.AddStage(osbuild.NewLocaleStage(&osbuild.LocaleStageOptions{Language: *language})) + } else { + p.AddStage(osbuild.NewLocaleStage(&osbuild.LocaleStageOptions{Language: "en_US"})) + } + + if keyboard != nil { + p.AddStage(osbuild.NewKeymapStage(&osbuild.KeymapStageOptions{Keymap: *keyboard})) + } + + if hostname := c.GetHostname(); hostname != nil { + p.AddStage(osbuild.NewHostnameStage(&osbuild.HostnameStageOptions{Hostname: *hostname})) + } + + timezone, ntpServers := c.GetTimezoneSettings() + + if timezone != nil { + p.AddStage(osbuild.NewTimezoneStage(&osbuild.TimezoneStageOptions{Zone: *timezone})) + } + + if len(ntpServers) > 0 { + p.AddStage(osbuild.NewChronyStage(&osbuild.ChronyStageOptions{Timeservers: ntpServers})) + } + + if groups := c.GetGroups(); len(groups) > 0 { + p.AddStage(osbuild.NewGroupsStage(t.groupStageOptions(groups))) + } + + if users := c.GetUsers(); len(users) > 0 { + options, err := t.userStageOptions(users) + if err != nil { + return nil, err + } + p.AddStage(osbuild.NewUsersStage(options)) + } + + if services := c.GetServices(); services != nil || t.enabledServices != nil { + p.AddStage(osbuild.NewSystemdStage(t.systemdStageOptions(t.enabledServices, t.disabledServices, services, t.defaultTarget))) + } + + if firewall := c.GetFirewall(); firewall != nil { + p.AddStage(osbuild.NewFirewallStage(t.firewallStageOptions(firewall))) + } + + if t.arch.Name() == "s390x" { + p.AddStage(osbuild.NewZiplStage(&osbuild.ZiplStageOptions{})) + } + + p.AddStage(osbuild.NewSELinuxStage(t.selinuxStageOptions())) + + if t.rpmOstree { + p.AddStage(osbuild.NewRPMOSTreeStage(&osbuild.RPMOSTreeStageOptions{ + EtcGroupMembers: []string{ + // NOTE: We may want to make this configurable. + "wheel", "docker", + }, + })) + } + + p.Assembler = t.assembler(t.arch.uefi, options, t.arch) + + return p, nil +} + +func (t *imageType) buildPipeline(repos []rpmmd.RepoConfig, arch architecture, buildPackageSpecs []rpmmd.PackageSpec) *osbuild.Pipeline { + p := &osbuild.Pipeline{} + p.AddStage(osbuild.NewRPMStage(t.rpmStageOptions(arch, repos, buildPackageSpecs))) + p.AddStage(osbuild.NewSELinuxStage(t.selinuxStageOptions())) + return p +} + +func (t *imageType) rpmStageOptions(arch architecture, repos []rpmmd.RepoConfig, specs []rpmmd.PackageSpec) *osbuild.RPMStageOptions { + var gpgKeys []string + for _, repo := range repos { + if repo.GPGKey == "" { + continue + } + gpgKeys = append(gpgKeys, repo.GPGKey) + } + + var packages []osbuild.RPMPackage + for _, spec := range specs { + pkg := osbuild.RPMPackage{ + Checksum: spec.Checksum, + CheckGPG: spec.CheckGPG, + } + packages = append(packages, pkg) + } + + return &osbuild.RPMStageOptions{ + GPGKeys: gpgKeys, + Packages: packages, + } +} + +func (t *imageType) userStageOptions(users []blueprint.UserCustomization) (*osbuild.UsersStageOptions, error) { + options := osbuild.UsersStageOptions{ + Users: make(map[string]osbuild.UsersStageOptionsUser), + } + + for _, c := range users { + if c.Password != nil && !crypt.PasswordIsCrypted(*c.Password) { + cryptedPassword, err := crypt.CryptSHA512(*c.Password) + if err != nil { + return nil, err + } + + c.Password = &cryptedPassword + } + + user := osbuild.UsersStageOptionsUser{ + Groups: c.Groups, + Description: c.Description, + Home: c.Home, + Shell: c.Shell, + Password: c.Password, + Key: c.Key, + } + + user.UID = c.UID + user.GID = c.GID + + options.Users[c.Name] = user + } + + return &options, nil +} + +func (t *imageType) groupStageOptions(groups []blueprint.GroupCustomization) *osbuild.GroupsStageOptions { + options := osbuild.GroupsStageOptions{ + Groups: map[string]osbuild.GroupsStageOptionsGroup{}, + } + + for _, group := range groups { + groupData := osbuild.GroupsStageOptionsGroup{ + Name: group.Name, + } + groupData.GID = group.GID + + options.Groups[group.Name] = groupData + } + + return &options +} + +func (t *imageType) firewallStageOptions(firewall *blueprint.FirewallCustomization) *osbuild.FirewallStageOptions { + options := osbuild.FirewallStageOptions{ + Ports: firewall.Ports, + } + + if firewall.Services != nil { + options.EnabledServices = firewall.Services.Enabled + options.DisabledServices = firewall.Services.Disabled + } + + return &options +} + +func (t *imageType) systemdStageOptions(enabledServices, disabledServices []string, s *blueprint.ServicesCustomization, target string) *osbuild.SystemdStageOptions { + if s != nil { + enabledServices = append(enabledServices, s.Enabled...) + disabledServices = append(disabledServices, s.Disabled...) + } + return &osbuild.SystemdStageOptions{ + EnabledServices: enabledServices, + DisabledServices: disabledServices, + DefaultTarget: target, + } +} + +func (t *imageType) fsTabStageOptions(uefi bool) *osbuild.FSTabStageOptions { + options := osbuild.FSTabStageOptions{} + options.AddFilesystem("0bd700f8-090f-4556-b797-b340297ea1bd", "xfs", "/", "defaults", 0, 0) + if uefi { + options.AddFilesystem("46BB-8120", "vfat", "/boot/efi", "umask=0077,shortname=winnt", 0, 2) + } + return &options +} + +func (t *imageType) grub2StageOptions(kernelOptions string, kernel *blueprint.KernelCustomization, uefi bool) *osbuild.GRUB2StageOptions { + id := uuid.MustParse("0bd700f8-090f-4556-b797-b340297ea1bd") + + if kernel != nil { + kernelOptions += " " + kernel.Append + } + + var uefiOptions *osbuild.GRUB2UEFI + if uefi { + uefiOptions = &osbuild.GRUB2UEFI{ + Vendor: "redhat", + } + } + + var legacy string + if !uefi { + legacy = t.arch.legacy + } + + return &osbuild.GRUB2StageOptions{ + RootFilesystemUUID: id, + KernelOptions: kernelOptions, + Legacy: legacy, + UEFI: uefiOptions, + } +} + +func (t *imageType) selinuxStageOptions() *osbuild.SELinuxStageOptions { + return &osbuild.SELinuxStageOptions{ + FileContexts: "etc/selinux/targeted/contexts/files/file_contexts", + } +} + +func qemuAssembler(format string, filename string, uefi bool, imageOptions distro.ImageOptions, arch distro.Arch) *osbuild.Assembler { + var options osbuild.QEMUAssemblerOptions + if uefi { + options = osbuild.QEMUAssemblerOptions{ + Format: format, + Filename: filename, + Size: imageOptions.Size, + PTUUID: "8DFDFF87-C96E-EA48-A3A6-9408F1F6B1EF", + PTType: "gpt", + Partitions: []osbuild.QEMUPartition{ + { + Start: 2048, + Size: 972800, + Type: "C12A7328-F81F-11D2-BA4B-00A0C93EC93B", + Filesystem: &osbuild.QEMUFilesystem{ + Type: "vfat", + UUID: "46BB-8120", + Label: "EFI System Partition", + Mountpoint: "/boot/efi", + }, + }, + { + Start: 976896, + Filesystem: &osbuild.QEMUFilesystem{ + Type: "xfs", + UUID: "0bd700f8-090f-4556-b797-b340297ea1bd", + Mountpoint: "/", + }, + }, + }, + } + } else { + if arch.Name() == "ppc64le" { + options = osbuild.QEMUAssemblerOptions{ + Bootloader: &osbuild.QEMUBootloader{ + Type: "grub2", + Platform: "powerpc-ieee1275", + }, + Format: format, + Filename: filename, + Size: imageOptions.Size, + PTUUID: "0x14fc63d2", + PTType: "dos", + Partitions: []osbuild.QEMUPartition{ + { + Size: 8192, + Type: "41", + Bootable: true, + }, + { + Start: 10240, + Filesystem: &osbuild.QEMUFilesystem{ + Type: "xfs", + UUID: "0bd700f8-090f-4556-b797-b340297ea1bd", + Mountpoint: "/", + }, + }, + }, + } + } else if arch.Name() == "s390x" { + options = osbuild.QEMUAssemblerOptions{ + Bootloader: &osbuild.QEMUBootloader{ + Type: "zipl", + }, + Format: format, + Filename: filename, + Size: imageOptions.Size, + PTUUID: "0x14fc63d2", + PTType: "dos", + Partitions: []osbuild.QEMUPartition{ + { + Start: 2048, + Bootable: true, + Filesystem: &osbuild.QEMUFilesystem{ + Type: "xfs", + UUID: "0bd700f8-090f-4556-b797-b340297ea1bd", + Mountpoint: "/", + }, + }, + }, + } + } else { + options = osbuild.QEMUAssemblerOptions{ + Format: format, + Filename: filename, + Size: imageOptions.Size, + PTUUID: "0x14fc63d2", + PTType: "mbr", + Partitions: []osbuild.QEMUPartition{ + { + Start: 2048, + Bootable: true, + Filesystem: &osbuild.QEMUFilesystem{ + Type: "xfs", + UUID: "0bd700f8-090f-4556-b797-b340297ea1bd", + Mountpoint: "/", + }, + }, + }, + } + } + } + return osbuild.NewQEMUAssembler(&options) +} + +func tarAssembler(filename, compression string) *osbuild.Assembler { + return osbuild.NewTarAssembler( + &osbuild.TarAssemblerOptions{ + Filename: filename, + Compression: compression, + }) +} + +func ostreeCommitAssembler(options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler { + ref := options.OSTree.Ref + if ref == "" { + ref = fmt.Sprintf("rhel/8/%s/edge", arch.Name()) + } + return osbuild.NewOSTreeCommitAssembler( + &osbuild.OSTreeCommitAssemblerOptions{ + Ref: ref, + Parent: options.OSTree.Parent, + Tar: osbuild.OSTreeCommitAssemblerTarOptions{ + Filename: "commit.tar", + }, + }, + ) +} + +// New creates a new distro object, defining the supported architectures and image types +func New() distro.Distro { + const GigaByte = 1024 * 1024 * 1024 + + edgeImgTypeX86_64 := imageType{ + name: "rhel-edge-commit", + filename: "commit.tar", + mimeType: "application/x-tar", + packages: []string{ + "redhat-release", // TODO: is this correct for Edge? + "glibc", "glibc-minimal-langpack", "nss-altfiles", + "kernel", + "dracut-config-generic", "dracut-network", + "basesystem", "bash", "platform-python", + "shadow-utils", "chrony", "setup", "shadow-utils", + "sudo", "systemd", "coreutils", "util-linux", + "curl", "vim-minimal", + "rpm", "rpm-ostree", "polkit", + "lvm2", "cryptsetup", "pinentry", + "e2fsprogs", "dosfstools", + "keyutils", "gnupg2", + "attr", "xz", "gzip", + "firewalld", "iptables", + "NetworkManager", "NetworkManager-wifi", "NetworkManager-wwan", + "wpa_supplicant", + "dnsmasq", "traceroute", + "hostname", "iproute", "iputils", + "openssh-clients", "procps-ng", "rootfiles", + "openssh-server", "passwd", + "policycoreutils", "policycoreutils-python-utils", + "selinux-policy-targeted", "setools-console", + "less", "tar", "rsync", + "fwupd", "usbguard", + "bash-completion", "tmux", + "ima-evm-utils", + "audit", "rng-tools", + "podman", "container-selinux", "skopeo", "criu", + "slirp4netns", "fuse-overlayfs", + "clevis", "clevis-dracut", "clevis-luks", + // x86 specific + "grub2", "grub2-efi-x64", "efibootmgr", "shim-x64", "microcode_ctl", + "iwl1000-firmware", "iwl100-firmware", "iwl105-firmware", "iwl135-firmware", + "iwl2000-firmware", "iwl2030-firmware", "iwl3160-firmware", "iwl5000-firmware", + "iwl5150-firmware", "iwl6000-firmware", "iwl6050-firmware", "iwl7260-firmware", + }, + enabledServices: []string{ + "NetworkManager.service", "firewalld.service", "rngd.service", "sshd.service", + }, + rpmOstree: true, + assembler: func(uefi bool, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler { + return ostreeCommitAssembler(options, arch) + }, + } + edgeImgTypeAarch64 := imageType{ + name: "rhel-edge-commit", + filename: "commit.tar", + mimeType: "application/x-tar", + packages: []string{ + "redhat-release", // TODO: is this correct for Edge? + "glibc", "glibc-minimal-langpack", "nss-altfiles", + "kernel", + "dracut-config-generic", "dracut-network", + "basesystem", "bash", "platform-python", + "shadow-utils", "chrony", "setup", "shadow-utils", + "sudo", "systemd", "coreutils", "util-linux", + "curl", "vim-minimal", + "rpm", "rpm-ostree", "polkit", + "lvm2", "cryptsetup", "pinentry", + "e2fsprogs", "dosfstools", + "keyutils", "gnupg2", + "attr", "xz", "gzip", + "firewalld", "iptables", + "NetworkManager", "NetworkManager-wifi", "NetworkManager-wwan", + "wpa_supplicant", + "dnsmasq", "traceroute", + "hostname", "iproute", "iputils", + "openssh-clients", "procps-ng", "rootfiles", + "openssh-server", "passwd", + "policycoreutils", "policycoreutils-python-utils", + "selinux-policy-targeted", "setools-console", + "less", "tar", "rsync", + "fwupd", "usbguard", + "bash-completion", "tmux", + "ima-evm-utils", + "audit", "rng-tools", + "podman", "container-selinux", "skopeo", "criu", + "slirp4netns", "fuse-overlayfs", + "clevis", "clevis-dracut", "clevis-luks", + // aarch64 specific + "grub2-efi-aa64", "efibootmgr", "shim-aa64", + "iwl7260-firmware", + }, + enabledServices: []string{ + "NetworkManager.service", "firewalld.service", "rngd.service", "sshd.service", + }, + rpmOstree: true, + assembler: func(uefi bool, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler { + return ostreeCommitAssembler(options, arch) + }, + } + amiImgType := imageType{ + name: "ami", + filename: "image.raw", + mimeType: "application/octet-stream", + packages: []string{ + "checkpolicy", + "chrony", + "cloud-init", + "cloud-init", + "cloud-utils-growpart", + "@core", + "dhcp-client", + "gdisk", + "insights-client", + "kernel", + "langpacks-en", + "net-tools", + "NetworkManager", + "redhat-release", + "redhat-release-eula", + "rng-tools", + "rsync", + "selinux-policy-targeted", + "tar", + "yum-utils", + + // TODO this doesn't exist in BaseOS or AppStream + // "rh-amazon-rhui-client", + }, + excludedPackages: []string{ + "aic94xx-firmware", + "alsa-firmware", + "alsa-lib", + "alsa-tools-firmware", + "biosdevname", + "dracut-config-rescue", + "firewalld", + "iprutils", + "ivtv-firmware", + "iwl1000-firmware", + "iwl100-firmware", + "iwl105-firmware", + "iwl135-firmware", + "iwl2000-firmware", + "iwl2030-firmware", + "iwl3160-firmware", + "iwl3945-firmware", + "iwl4965-firmware", + "iwl5000-firmware", + "iwl5150-firmware", + "iwl6000-firmware", + "iwl6000g2a-firmware", + "iwl6000g2b-firmware", + "iwl6050-firmware", + "iwl7260-firmware", + "libertas-sd8686-firmware", + "libertas-sd8787-firmware", + "libertas-usb8388-firmware", + "plymouth", + + // TODO this cannot be removed, because the kernel (?) + // depends on it. The ec2 kickstart force-removes it. + // "linux-firmware", + + // TODO setfiles failes because of usr/sbin/timedatex. Exlude until + // https://errata.devel.redhat.com/advisory/47339 lands + "timedatex", + }, + defaultTarget: "multi-user.target", + kernelOptions: "ro console=ttyS0,115200n8 console=tty0 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295 crashkernel=auto", + bootable: true, + defaultSize: 6 * GigaByte, + assembler: func(uefi bool, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler { + return qemuAssembler("raw", "image.raw", uefi, options, arch) + }, + } + + qcow2ImageType := imageType{ + name: "qcow2", + filename: "disk.qcow2", + mimeType: "application/x-qemu-disk", + packages: []string{ + "@core", + "chrony", + "dnf", + "kernel", + "yum", + "nfs-utils", + "dnf-utils", + "cloud-init", + "python3-jsonschema", + "qemu-guest-agent", + "cloud-utils-growpart", + "dracut-norescue", + "tar", + "tcpdump", + "rsync", + "dnf-plugin-spacewalk", + "rhn-client-tools", + "rhnlib", + "rhnsd", + "rhn-setup", + "NetworkManager", + "dhcp-client", + "cockpit-ws", + "cockpit-system", + "subscription-manager-cockpit", + "redhat-release", + "redhat-release-eula", + "rng-tools", + "insights-client", + // TODO: rh-amazon-rhui-client + }, + excludedPackages: []string{ + "dracut-config-rescue", + "aic94xx-firmware", + "alsa-firmware", + "alsa-lib", + "alsa-tools-firmware", + "firewalld", + "ivtv-firmware", + "iwl1000-firmware", + "iwl100-firmware", + "iwl105-firmware", + "iwl135-firmware", + "iwl2000-firmware", + "iwl2030-firmware", + "iwl3160-firmware", + "iwl3945-firmware", + "iwl4965-firmware", + "iwl5000-firmware", + "iwl5150-firmware", + "iwl6000-firmware", + "iwl6000g2a-firmware", + "iwl6000g2b-firmware", + "iwl6050-firmware", + "iwl7260-firmware", + "libertas-sd8686-firmware", + "libertas-sd8787-firmware", + "libertas-usb8388-firmware", + "langpacks-*", + "langpacks-en", + "biosdevname", + "plymouth", + "iprutils", + "langpacks-en", + "fedora-release", + "fedora-repos", + + // TODO setfiles failes because of usr/sbin/timedatex. Exlude until + // https://errata.devel.redhat.com/advisory/47339 lands + "timedatex", + }, + kernelOptions: "console=ttyS0 console=ttyS0,115200n8 no_timer_check crashkernel=auto net.ifnames=0", + bootable: true, + defaultSize: 4 * GigaByte, + assembler: func(uefi bool, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler { + return qemuAssembler("qcow2", "disk.qcow2", uefi, options, arch) + }, + } + + openstackImgType := imageType{ + name: "openstack", + filename: "disk.qcow2", + mimeType: "application/x-qemu-disk", + packages: []string{ + // Defaults + "@Core", + "langpacks-en", + + // From the lorax kickstart + "kernel", + "selinux-policy-targeted", + "cloud-init", + "qemu-guest-agent", + "spice-vdagent", + }, + excludedPackages: []string{ + "dracut-config-rescue", + }, + kernelOptions: "ro net.ifnames=0", + bootable: true, + defaultSize: 4 * GigaByte, + assembler: func(uefi bool, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler { + return qemuAssembler("qcow2", "disk.qcow2", uefi, options, arch) + }, + } + + tarImgType := imageType{ + name: "tar", + filename: "root.tar.xz", + mimeType: "application/x-tar", + packages: []string{ + "policycoreutils", + "selinux-policy-targeted", + }, + bootable: false, + kernelOptions: "ro net.ifnames=0", + assembler: func(uefi bool, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler { + return tarAssembler("root.tar.xz", "xz") + }, + } + + vhdImgType := imageType{ + name: "vhd", + filename: "disk.vhd", + mimeType: "application/x-vhd", + packages: []string{ + // Defaults + "@Core", + "langpacks-en", + + // From the lorax kickstart + "kernel", + "selinux-policy-targeted", + "chrony", + "WALinuxAgent", + "python3", + "net-tools", + "cloud-init", + "cloud-utils-growpart", + "gdisk", + }, + excludedPackages: []string{ + "dracut-config-rescue", + + // TODO setfiles failes because of usr/sbin/timedatex. Exlude until + // https://errata.devel.redhat.com/advisory/47339 lands + "timedatex", + }, + enabledServices: []string{ + "sshd", + "waagent", + }, + defaultTarget: "multi-user.target", + kernelOptions: "ro biosdevname=0 rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0", + bootable: true, + defaultSize: 4 * GigaByte, + assembler: func(uefi bool, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler { + return qemuAssembler("vpc", "disk.vhd", uefi, options, arch) + }, + } + + vmdkImgType := imageType{ + name: "vmdk", + filename: "disk.vmdk", + mimeType: "application/x-vmdk", + packages: []string{ + "@core", + "chrony", + "firewalld", + "kernel", + "langpacks-en", + "open-vm-tools", + "selinux-policy-targeted", + }, + excludedPackages: []string{ + "dracut-config-rescue", + + // TODO setfiles failes because of usr/sbin/timedatex. Exlude until + // https://errata.devel.redhat.com/advisory/47339 lands + "timedatex", + }, + kernelOptions: "ro net.ifnames=0", + bootable: true, + defaultSize: 4 * GigaByte, + assembler: func(uefi bool, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler { + return qemuAssembler("vmdk", "disk.vmdk", uefi, options, arch) + }, + } + + r := distribution{ + imageTypes: map[string]imageType{}, + buildPackages: []string{ + "dnf", + "dosfstools", + "e2fsprogs", + "glibc", + "policycoreutils", + "python36", + "qemu-img", + "selinux-policy-targeted", + "systemd", + "tar", + "xfsprogs", + "xz", + }, + } + x8664 := architecture{ + distro: &r, + name: "x86_64", + bootloaderPackages: []string{ + "dracut-config-generic", + "grub2-pc", + }, + buildPackages: []string{ + "grub2-pc", + }, + legacy: "i386-pc", + } + x8664.setImageTypes( + amiImgType, + edgeImgTypeX86_64, + qcow2ImageType, + openstackImgType, + tarImgType, + vhdImgType, + vmdkImgType, + ) + + aarch64 := architecture{ + distro: &r, + name: "aarch64", + bootloaderPackages: []string{ + "dracut-config-generic", + "efibootmgr", + "grub2-efi-aa64", + "grub2-tools", + "shim-aa64", + }, + uefi: true, + } + aarch64.setImageTypes( + amiImgType, + edgeImgTypeAarch64, + qcow2ImageType, + openstackImgType, + tarImgType, + ) + + ppc64le := architecture{ + distro: &r, + name: "ppc64le", + bootloaderPackages: []string{ + "dracut-config-generic", + "powerpc-utils", + "grub2-ppc64le", + "grub2-ppc64le-modules", + }, + buildPackages: []string{ + "grub2-ppc64le", + "grub2-ppc64le-modules", + }, + legacy: "powerpc-ieee1275", + uefi: false, + } + ppc64le.setImageTypes( + qcow2ImageType, + tarImgType, + ) + + s390x := architecture{ + distro: &r, + name: "s390x", + bootloaderPackages: []string{ + "dracut-config-generic", + "s390utils-base", + }, + uefi: false, + } + s390x.setImageTypes( + tarImgType, + qcow2ImageType, + ) + + r.setArches(x8664, aarch64, ppc64le, s390x) + + return &r +} diff --git a/internal/distro/rhel8/distro_test.go b/internal/distro/rhel8/distro_test.go new file mode 100644 index 0000000..97e7c33 --- /dev/null +++ b/internal/distro/rhel8/distro_test.go @@ -0,0 +1,403 @@ +package rhel8_test + +import ( + "testing" + + "github.com/osbuild/osbuild-composer/internal/blueprint" + "github.com/osbuild/osbuild-composer/internal/distro/distro_test_common" + "github.com/osbuild/osbuild-composer/internal/distro/rhel8" + "github.com/stretchr/testify/assert" +) + +func TestFilenameFromType(t *testing.T) { + type args struct { + outputFormat string + } + tests := []struct { + name string + args args + want string + want1 string + wantErr bool + }{ + { + name: "ami", + args: args{"ami"}, + want: "image.raw", + want1: "application/octet-stream", + }, + { + name: "openstack", + args: args{"openstack"}, + want: "disk.qcow2", + want1: "application/x-qemu-disk", + }, + { + name: "qcow2", + args: args{"qcow2"}, + want: "disk.qcow2", + want1: "application/x-qemu-disk", + }, + { + name: "tar", + args: args{"tar"}, + want: "root.tar.xz", + want1: "application/x-tar", + }, + + { + name: "vhd", + args: args{"vhd"}, + want: "disk.vhd", + want1: "application/x-vhd", + }, + { + name: "vmdk", + args: args{"vmdk"}, + want: "disk.vmdk", + want1: "application/x-vmdk", + }, + { + name: "invalid-output-type", + args: args{"foobar"}, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + dist := rhel8.New() + arch, _ := dist.GetArch("x86_64") + imgType, err := arch.GetImageType(tt.args.outputFormat) + if (err != nil) != tt.wantErr { + t.Errorf("Arch.GetImageType() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !tt.wantErr { + got := imgType.Filename() + got1 := imgType.MIMEType() + if got != tt.want { + t.Errorf("ImageType.Filename() got = %v, want %v", got, tt.want) + } + if got1 != tt.want1 { + t.Errorf("ImageType.MIMEType() got1 = %v, want %v", got1, tt.want1) + } + } + }) + } +} + +func TestImageType_BuildPackages(t *testing.T) { + x8664BuildPackages := []string{ + "dnf", + "dosfstools", + "e2fsprogs", + "grub2-pc", + "policycoreutils", + "qemu-img", + "systemd", + "tar", + "xz", + } + aarch64BuildPackages := []string{ + "dnf", + "dosfstools", + "e2fsprogs", + "policycoreutils", + "qemu-img", + "systemd", + "tar", + "xz", + } + buildPackages := map[string][]string{ + "x86_64": x8664BuildPackages, + "aarch64": aarch64BuildPackages, + "ppc64le": nil, + "s390x": nil, + } + d := rhel8.New() + for _, archLabel := range d.ListArches() { + archStruct, err := d.GetArch(archLabel) + if assert.NoErrorf(t, err, "d.GetArch(%v) returned err = %v; expected nil", archLabel, err) { + continue + } + for _, itLabel := range archStruct.ListImageTypes() { + itStruct, err := archStruct.GetImageType(itLabel) + if assert.NoErrorf(t, err, "d.GetArch(%v) returned err = %v; expected nil", archLabel, err) { + continue + } + assert.ElementsMatch(t, buildPackages[archLabel], itStruct.BuildPackages()) + } + } +} + +func TestImageType_Name(t *testing.T) { + distro := rhel8.New() + imgMap := []struct { + arch string + imgNames []string + }{ + { + arch: "x86_64", + imgNames: []string{ + "ami", + "qcow2", + "openstack", + "tar", + "vhd", + "vmdk", + }, + }, + { + arch: "aarch64", + imgNames: []string{ + "ami", + "qcow2", + "openstack", + "tar", + }, + }, + { + arch: "ppc64le", + imgNames: []string{ + "qcow2", + "tar", + }, + }, + { + arch: "s390x", + imgNames: []string{ + "tar", + }, + }, + } + for _, mapping := range imgMap { + arch, err := distro.GetArch(mapping.arch) + if assert.NoError(t, err) { + for _, imgName := range mapping.imgNames { + imgType, err := arch.GetImageType(imgName) + if assert.NoError(t, err) { + assert.Equalf(t, imgName, imgType.Name(), "arch: %s", mapping.arch) + } + } + } + } +} + +func TestImageType_Size(t *testing.T) { + const gigaByte = 1024 * 1024 * 1024 + sizeMap := []struct { + name string + inputSize uint64 + outputSize uint64 + }{ + { + name: "ami", + inputSize: 6*gigaByte + 1, + outputSize: 6*gigaByte + 1, + }, + { + name: "ami", + inputSize: 0, + outputSize: 6 * gigaByte, + }, + { + name: "vhd", + inputSize: 10 * gigaByte, + outputSize: 10 * gigaByte, + }, + { + name: "vhd", + inputSize: 10*gigaByte - 1, + outputSize: 10 * gigaByte, + }, + } + + distro := rhel8.New() + arch, err := distro.GetArch("x86_64") + if assert.NoError(t, err) { + for _, mapping := range sizeMap { + imgType, err := arch.GetImageType(mapping.name) + if assert.NoError(t, err) { + size := imgType.Size(mapping.inputSize) + assert.Equalf(t, mapping.outputSize, size, "Image type: %s, input size: %d, expected: %d, got: %d", + mapping.name, mapping.inputSize, mapping.outputSize, size) + } + } + } +} + +func TestImageType_BasePackages(t *testing.T) { + pkgMaps := []struct { + name string + basePackages []string + bootloaderPackages []string + excludedPackages []string + bootable bool + }{ + { + name: "ami", + basePackages: []string{ + "checkpolicy", + "chrony", + "cloud-init", + "cloud-init", + "cloud-utils-growpart", + "@core", + "dhcp-client", + "gdisk", + "insights-client", + "kernel", + "langpacks-en", + "net-tools", + "NetworkManager", + "redhat-release", + "redhat-release-eula", + "rng-tools", + "rsync", + "selinux-policy-targeted", + "tar", + "yum-utils", + }, + bootloaderPackages: []string{ + "dracut-config-generic", + "grub2-pc", + }, + excludedPackages: []string{ + "aic94xx-firmware", + "alsa-firmware", + "alsa-lib", + "alsa-tools-firmware", + "biosdevname", + "dracut-config-rescue", + "firewalld", + "iprutils", + "ivtv-firmware", + "iwl1000-firmware", + "iwl100-firmware", + "iwl105-firmware", + "iwl135-firmware", + "iwl2000-firmware", + "iwl2030-firmware", + "iwl3160-firmware", + "iwl3945-firmware", + "iwl4965-firmware", + "iwl5000-firmware", + "iwl5150-firmware", + "iwl6000-firmware", + "iwl6000g2a-firmware", + "iwl6000g2b-firmware", + "iwl6050-firmware", + "iwl7260-firmware", + "libertas-sd8686-firmware", + "libertas-sd8787-firmware", + "libertas-usb8388-firmware", + "plymouth", + + // TODO this cannot be removed, because the kernel (?) + // depends on it. The ec2 kickstart force-removes it. + // "linux-firmware", + + // TODO setfiles failes because of usr/sbin/timedatex. Exlude until + // https://errata.devel.redhat.com/advisory/47339 lands + "timedatex", + }, + bootable: true, + }, + { + name: "openstack", + basePackages: []string{ + // Defaults + "@Core", + "langpacks-en", + + // From the lorax kickstart + "kernel", + "selinux-policy-targeted", + "cloud-init", + "qemu-guest-agent", + "spice-vdagent", + }, + bootloaderPackages: []string{ + "dracut-config-generic", + "grub2-pc", + }, + excludedPackages: []string{ + "dracut-config-rescue", + }, + bootable: true, + }, + } + distro := rhel8.New() + arch, err := distro.GetArch("x86_64") + assert.NoError(t, err) + + for _, pkgMap := range pkgMaps { + imgType, err := arch.GetImageType(pkgMap.name) + assert.NoError(t, err) + basePackages, excludedPackages := imgType.Packages(blueprint.Blueprint{}) + assert.Equalf( + t, + append(pkgMap.basePackages, pkgMap.bootloaderPackages...), + basePackages, + "image type: %s", + pkgMap.name, + ) + assert.Equalf(t, pkgMap.excludedPackages, excludedPackages, "image type: %s", pkgMap.name) + } +} + +func TestDistro_Manifest(t *testing.T) { + distro_test_common.TestDistro_Manifest(t, "../../../test/cases/", "rhel_8*", rhel8.New()) +} + +func TestRhel8_ListArches(t *testing.T) { + distro := rhel8.New() + arches := distro.ListArches() + assert.Equal(t, []string{"aarch64", "ppc64le", "s390x", "x86_64"}, arches) +} + +func TestRhel8_GetArch(t *testing.T) { + distro := rhel8.New() + arches := []struct { + name string + errorExpected bool + }{ + { + name: "x86_64", + }, + { + name: "aarch64", + }, + { + name: "ppc64le", + }, + { + name: "s390x", + }, + { + name: "foo-arch", + errorExpected: true, + }, + } + + for _, a := range arches { + actualArch, err := distro.GetArch(a.name) + if !a.errorExpected { + assert.Equal(t, a.name, actualArch.Name()) + assert.NoError(t, err) + } else { + assert.Nil(t, actualArch) + assert.Error(t, err) + } + } +} + +func TestRhel8_Name(t *testing.T) { + distro := rhel8.New() + assert.Equal(t, "rhel-8", distro.Name()) +} + +func TestRhel8_ModulePlatformID(t *testing.T) { + distro := rhel8.New() + assert.Equal(t, "platform:el8", distro.ModulePlatformID()) +} diff --git a/internal/distro/test_distro/distro.go b/internal/distro/test_distro/distro.go new file mode 100644 index 0000000..a0d2c9d --- /dev/null +++ b/internal/distro/test_distro/distro.go @@ -0,0 +1,105 @@ +package test_distro + +import ( + "encoding/json" + "errors" + + "github.com/osbuild/osbuild-composer/internal/blueprint" + "github.com/osbuild/osbuild-composer/internal/distro" + "github.com/osbuild/osbuild-composer/internal/osbuild" + "github.com/osbuild/osbuild-composer/internal/rpmmd" +) + +type TestDistro struct{} +type TestArch struct{} +type TestImageType struct{} + +const name = "test-distro" +const modulePlatformID = "platform:test" + +func (d *TestDistro) ListArches() []string { + return []string{"test_arch"} +} + +func (a *TestArch) Distro() distro.Distro { + return &TestDistro{} +} + +func (t *TestImageType) Arch() distro.Arch { + return &TestArch{} +} + +func (d *TestDistro) GetArch(arch string) (distro.Arch, error) { + if arch != "test_arch" { + return nil, errors.New("invalid arch: " + arch) + } + return &TestArch{}, nil +} + +func (a *TestArch) Name() string { + return "test_arch" +} + +func (a *TestArch) ListImageTypes() []string { + return []string{"test_type"} +} + +func (a *TestArch) GetImageType(imageType string) (distro.ImageType, error) { + if imageType != "test_type" { + return nil, errors.New("invalid image type: " + imageType) + } + return &TestImageType{}, nil +} + +func (t *TestImageType) Name() string { + return "test_type" +} + +func (t *TestImageType) Filename() string { + return "test.img" +} + +func (t *TestImageType) MIMEType() string { + return "application/x-test" +} + +func (t *TestImageType) Size(size uint64) uint64 { + return 0 +} + +func (t *TestImageType) Packages(bp blueprint.Blueprint) ([]string, []string) { + return nil, nil +} + +func (t *TestImageType) BuildPackages() []string { + return nil +} + +func (t *TestImageType) Manifest(b *blueprint.Customizations, options distro.ImageOptions, repos []rpmmd.RepoConfig, packageSpecs, buildPackageSpecs []rpmmd.PackageSpec) (distro.Manifest, error) { + return json.Marshal( + osbuild.Manifest{ + Sources: osbuild.Sources{}, + Pipeline: osbuild.Pipeline{}, + }, + ) +} + +func New() *TestDistro { + return &TestDistro{} +} + +func (d *TestDistro) Name() string { + return name +} + +func (d *TestDistro) ModulePlatformID() string { + return modulePlatformID +} + +func (d *TestDistro) FilenameFromType(outputFormat string) (string, string, error) { + if outputFormat == "test_format" { + return "test.img", "application/x-test", nil + } + + return "", "", errors.New("invalid output format: " + outputFormat) +} diff --git a/internal/jobqueue/fsjobqueue/fsjobqueue.go b/internal/jobqueue/fsjobqueue/fsjobqueue.go new file mode 100644 index 0000000..7a407d9 --- /dev/null +++ b/internal/jobqueue/fsjobqueue/fsjobqueue.go @@ -0,0 +1,397 @@ +// Package fsjobqueue implements a filesystem-backed job queue. It implements +// the interfaces in package jobqueue. +// +// Jobs are stored in the file system, using the `jsondb` package. However, +// this package does not use the file system as a database, but keeps some +// state in memory. This means that access to a given directory must be +// exclusive to only one `fsJobQueue` object at a time. A single `fsJobQueue` +// can be safely accessed from multiple goroutines, though. +// +// Data is stored non-reduntantly. Any data structure necessary for efficient +// access (e.g., dependants) are kept in memory. +package fsjobqueue + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "reflect" + "sort" + "sync" + "time" + + "github.com/google/uuid" + "github.com/osbuild/osbuild-composer/internal/jobqueue" + "github.com/osbuild/osbuild-composer/internal/jsondb" +) + +type fsJobQueue struct { + // Protects all fields of this struct. In particular, it ensures + // transactions on `db` are atomic. All public functions except + // JobStatus hold it while they're running. Dequeue() releases it + // briefly while waiting on pending channels. + mu sync.Mutex + + db *jsondb.JSONDatabase + + // Maps job types to channels of job ids for that type. + pending map[string]chan uuid.UUID + + // Maps job ids to the jobs that depend on it, if any of those + // dependants have not yet finished. + dependants map[uuid.UUID][]uuid.UUID +} + +// On-disk job struct. Contains all necessary (but non-redundant) information +// about a job. These are not held in memory by the job queue, but +// (de)serialized on each access. +type job struct { + Id uuid.UUID `json:"id"` + Type string `json:"type"` + Args json.RawMessage `json:"args,omitempty"` + Dependencies []uuid.UUID `json:"dependencies"` + Result json.RawMessage `json:"result,omitempty"` + + QueuedAt time.Time `json:"queued_at,omitempty"` + StartedAt time.Time `json:"started_at,omitempty"` + FinishedAt time.Time `json:"finished_at,omitempty"` + + Canceled bool `json:"canceled,omitempty"` +} + +// Create a new fsJobQueue object for `dir`. This object must have exclusive +// access to `dir`. If `dir` contains jobs created from previous runs, they are +// loaded and rescheduled to run if necessary. +func New(dir string, acceptedJobTypes []string) (*fsJobQueue, error) { + q := &fsJobQueue{ + db: jsondb.New(dir, 0600), + pending: make(map[string]chan uuid.UUID), + dependants: make(map[uuid.UUID][]uuid.UUID), + } + + for _, jt := range acceptedJobTypes { + q.pending[jt] = make(chan uuid.UUID, 100) + } + + // Look for jobs that are still pending and build the dependant map. + ids, err := q.db.List() + if err != nil { + return nil, fmt.Errorf("error listing jobs: %v", err) + } + for _, id := range ids { + uuid, err := uuid.Parse(id) + if err != nil { + return nil, fmt.Errorf("invalid job '%s' in db: %v", id, err) + } + j, err := q.readJob(uuid) + if err != nil { + return nil, err + } + err = q.maybeEnqueue(j, true) + if err != nil { + return nil, err + } + } + + return q, nil +} + +func (q *fsJobQueue) Enqueue(jobType string, args interface{}, dependencies []uuid.UUID) (uuid.UUID, error) { + q.mu.Lock() + defer q.mu.Unlock() + + if _, exists := q.pending[jobType]; !exists { + return uuid.Nil, fmt.Errorf("this queue does not accept job type '%s'", jobType) + } + + var j = job{ + Id: uuid.New(), + Type: jobType, + Dependencies: uniqueUUIDList(dependencies), + QueuedAt: time.Now(), + } + + var err error + j.Args, err = json.Marshal(args) + if err != nil { + return uuid.Nil, fmt.Errorf("error marshaling job arguments: %v", err) + } + + // Verify dependendencies early, so that the job doesn't get written + // when one of them doesn't exist. + for _, d := range j.Dependencies { + exists, err := q.db.Read(d.String(), nil) + if err != nil { + return uuid.Nil, err + } + if !exists { + return uuid.Nil, jobqueue.ErrNotExist + } + } + + // Write the job before updating in-memory state, so that the latter + // doesn't become corrupt when writing fails. + err = q.db.Write(j.Id.String(), j) + if err != nil { + return uuid.Nil, fmt.Errorf("cannot write job: %v:", err) + } + + err = q.maybeEnqueue(&j, true) + if err != nil { + return uuid.Nil, err + } + + return j.Id, nil +} + +func (q *fsJobQueue) Dequeue(ctx context.Context, jobTypes []string, args interface{}) (uuid.UUID, error) { + q.mu.Lock() + defer q.mu.Unlock() + + // Return early if the context is already canceled. + if err := ctx.Err(); err != nil { + return uuid.Nil, err + } + + // Filter q.pending by the `jobTypes`. Ignore those job types that this + // queue doesn't accept. + chans := []chan uuid.UUID{} + for _, jt := range jobTypes { + if c, exists := q.pending[jt]; exists { + chans = append(chans, c) + } + } + + // Loop until finding a non-canceled job. + var j *job + for { + // Unlock the mutex while polling channels, so that multiple goroutines + // can wait at the same time. + q.mu.Unlock() + id, err := selectUUIDChannel(ctx, chans) + q.mu.Lock() + + if err != nil { + return uuid.Nil, err + } + + j, err = q.readJob(id) + if err != nil { + return uuid.Nil, err + } + + if !j.Canceled { + break + } + } + + err := json.Unmarshal(j.Args, args) + if err != nil { + return uuid.Nil, fmt.Errorf("error unmarshaling arguments for job '%s': %v", j.Id, err) + } + + j.StartedAt = time.Now() + + err = q.db.Write(j.Id.String(), j) + if err != nil { + return uuid.Nil, fmt.Errorf("error writing job %s: %v", j.Id, err) + } + + return j.Id, nil +} + +func (q *fsJobQueue) FinishJob(id uuid.UUID, result interface{}) error { + q.mu.Lock() + defer q.mu.Unlock() + + j, err := q.readJob(id) + if err != nil { + return err + } + + if j.Canceled { + return jobqueue.ErrCanceled + } + + if j.StartedAt.IsZero() || !j.FinishedAt.IsZero() { + return jobqueue.ErrNotRunning + } + + j.FinishedAt = time.Now() + + j.Result, err = json.Marshal(result) + if err != nil { + return fmt.Errorf("error marshaling result: %v", err) + } + + // Write before notifying dependants, because it will be read again. + err = q.db.Write(id.String(), j) + if err != nil { + return fmt.Errorf("error writing job %s: %v", id, err) + } + + for _, depid := range q.dependants[id] { + dep, err := q.readJob(depid) + if err != nil { + return err + } + err = q.maybeEnqueue(dep, false) + if err != nil { + return err + } + } + delete(q.dependants, id) + + return nil +} + +func (q *fsJobQueue) CancelJob(id uuid.UUID) error { + q.mu.Lock() + defer q.mu.Unlock() + + j, err := q.readJob(id) + if err != nil { + return err + } + + if !j.FinishedAt.IsZero() { + return nil + } + + j.Canceled = true + + err = q.db.Write(id.String(), j) + if err != nil { + return fmt.Errorf("error writing job %s: %v", id, err) + } + + return nil +} + +func (q *fsJobQueue) JobStatus(id uuid.UUID, result interface{}) (queued, started, finished time.Time, canceled bool, err error) { + j, err := q.readJob(id) + if err != nil { + return + } + + if !j.FinishedAt.IsZero() && !j.Canceled { + err = json.Unmarshal(j.Result, result) + if err != nil { + err = fmt.Errorf("error unmarshaling result for job '%s': %v", id, err) + return + } + } + + queued = j.QueuedAt + started = j.StartedAt + finished = j.FinishedAt + canceled = j.Canceled + + return +} + +// Reads job with `id`. This is a thin wrapper around `q.db.Read`, which +// returns the job directly, or and error if a job with `id` does not exist. +func (q *fsJobQueue) readJob(id uuid.UUID) (*job, error) { + var j job + exists, err := q.db.Read(id.String(), &j) + if err != nil { + return nil, fmt.Errorf("error reading job '%s': %v", id, err) + } + if !exists { + // return corrupt database? + return nil, jobqueue.ErrNotExist + } + return &j, nil +} + +// Enqueue `job` if it is pending and all its dependencies have finished. +// Update `q.dependants` if the job was not queued and updateDependants is true +// (i.e., when this is a new job). +func (q *fsJobQueue) maybeEnqueue(j *job, updateDependants bool) error { + if !j.StartedAt.IsZero() { + return nil + } + + depsFinished := true + for _, id := range j.Dependencies { + j, err := q.readJob(id) + if err != nil { + return err + } + if j.FinishedAt.IsZero() { + depsFinished = false + break + } + } + + if depsFinished { + c, exists := q.pending[j.Type] + if !exists { + return fmt.Errorf("this queue doesn't accept job type '%s'", j.Type) + } + c <- j.Id + } else if updateDependants { + for _, id := range j.Dependencies { + q.dependants[id] = append(q.dependants[id], j.Id) + } + } + + return nil +} + +// Sorts and removes duplicates from `ids`. +func uniqueUUIDList(ids []uuid.UUID) []uuid.UUID { + s := map[uuid.UUID]bool{} + for _, id := range ids { + s[id] = true + } + + l := []uuid.UUID{} + for id := range s { + l = append(l, id) + } + + sort.Slice(l, func(i, j int) bool { + for b := 0; b < 16; b++ { + if l[i][b] < l[j][b] { + return true + } + } + return false + }) + + return l +} + +// Select on a list of `chan uuid.UUID`s. Returns an error if one of the +// channels is closed. +// +// Uses reflect.Select(), because the `select` statement cannot operate on an +// unknown amount of channels. +func selectUUIDChannel(ctx context.Context, chans []chan uuid.UUID) (uuid.UUID, error) { + cases := []reflect.SelectCase{ + { + Dir: reflect.SelectRecv, + Chan: reflect.ValueOf(ctx.Done()), + }, + } + for _, c := range chans { + cases = append(cases, reflect.SelectCase{ + Dir: reflect.SelectRecv, + Chan: reflect.ValueOf(c), + }) + } + + chosen, value, recvOK := reflect.Select(cases) + if !recvOK { + if chosen == 0 { + return uuid.Nil, ctx.Err() + } else { + return uuid.Nil, errors.New("channel was closed unexpectedly") + } + } + + return value.Interface().(uuid.UUID), nil +} diff --git a/internal/jobqueue/fsjobqueue/fsjobqueue_private_test.go b/internal/jobqueue/fsjobqueue/fsjobqueue_private_test.go new file mode 100644 index 0000000..e122b22 --- /dev/null +++ b/internal/jobqueue/fsjobqueue/fsjobqueue_private_test.go @@ -0,0 +1,35 @@ +package fsjobqueue + +import ( + "testing" + + "github.com/google/uuid" + "github.com/stretchr/testify/require" +) + +func uuidList(t *testing.T, strs ...string) []uuid.UUID { + var err error + ids := make([]uuid.UUID, len(strs)) + for i, s := range strs { + ids[i], err = uuid.Parse(s) + require.NoError(t, err) + } + return ids +} + +func TestUniqueUUIDList(t *testing.T) { + l := uniqueUUIDList([]uuid.UUID{}) + require.Empty(t, l) + + s := uuidList(t, "8ad6bbcd-55f9-4cd8-be45-d0370ff079d2", "a0ad7428-b813-4efb-a156-da2b524f4868", "36e5817c-f29d-4043-8d7d-95ffaa77ff88") + l = uniqueUUIDList(s) + require.ElementsMatch(t, s, l) + + s = uuidList(t, "8ad6bbcd-55f9-4cd8-be45-d0370ff079d2", "8ad6bbcd-55f9-4cd8-be45-d0370ff079d2") + l = uniqueUUIDList(s) + require.ElementsMatch(t, uuidList(t, "8ad6bbcd-55f9-4cd8-be45-d0370ff079d2"), l) + + s = uuidList(t, "8ad6bbcd-55f9-4cd8-be45-d0370ff079d2", "a0ad7428-b813-4efb-a156-da2b524f4868", "8ad6bbcd-55f9-4cd8-be45-d0370ff079d2") + l = uniqueUUIDList(s) + require.ElementsMatch(t, uuidList(t, "8ad6bbcd-55f9-4cd8-be45-d0370ff079d2", "a0ad7428-b813-4efb-a156-da2b524f4868"), l) +} diff --git a/internal/jobqueue/fsjobqueue/fsjobqueue_test.go b/internal/jobqueue/fsjobqueue/fsjobqueue_test.go new file mode 100644 index 0000000..108da86 --- /dev/null +++ b/internal/jobqueue/fsjobqueue/fsjobqueue_test.go @@ -0,0 +1,257 @@ +package fsjobqueue_test + +import ( + "context" + "encoding/json" + "io/ioutil" + "os" + "testing" + "time" + + "github.com/google/uuid" + "github.com/stretchr/testify/require" + + "github.com/osbuild/osbuild-composer/internal/jobqueue" + "github.com/osbuild/osbuild-composer/internal/jobqueue/fsjobqueue" +) + +type testResult struct { +} + +func cleanupTempDir(t *testing.T, dir string) { + err := os.RemoveAll(dir) + require.NoError(t, err) +} + +func newTemporaryQueue(t *testing.T, jobTypes []string) (jobqueue.JobQueue, string) { + dir, err := ioutil.TempDir("", "jobqueue-test-") + require.NoError(t, err) + + q, err := fsjobqueue.New(dir, jobTypes) + require.NoError(t, err) + require.NotNil(t, q) + + return q, dir +} + +func pushTestJob(t *testing.T, q jobqueue.JobQueue, jobType string, args interface{}, dependencies []uuid.UUID) uuid.UUID { + t.Helper() + id, err := q.Enqueue(jobType, args, dependencies) + require.NoError(t, err) + require.NotEmpty(t, id) + return id +} + +func finishNextTestJob(t *testing.T, q jobqueue.JobQueue, jobType string, result interface{}) uuid.UUID { + id, err := q.Dequeue(context.Background(), []string{jobType}, &json.RawMessage{}) + require.NoError(t, err) + require.NotEmpty(t, id) + + err = q.FinishJob(id, result) + require.NoError(t, err) + + return id +} + +func TestNonExistant(t *testing.T) { + q, err := fsjobqueue.New("/non-existant-directory", []string{}) + require.Error(t, err) + require.Nil(t, q) +} + +func TestErrors(t *testing.T) { + q, dir := newTemporaryQueue(t, []string{"test"}) + defer cleanupTempDir(t, dir) + + // not serializable to JSON + id, err := q.Enqueue("test", make(chan string), nil) + require.Error(t, err) + require.Equal(t, uuid.Nil, id) + + // invalid dependency + id, err = q.Enqueue("test", "arg0", []uuid.UUID{uuid.New()}) + require.Error(t, err) + require.Equal(t, uuid.Nil, id) +} + +func TestArgs(t *testing.T) { + type argument struct { + I int + S string + } + + q, dir := newTemporaryQueue(t, []string{"fish", "octopus"}) + defer cleanupTempDir(t, dir) + + oneargs := argument{7, "🐠"} + one := pushTestJob(t, q, "fish", oneargs, nil) + + twoargs := argument{42, "🐙"} + two := pushTestJob(t, q, "octopus", twoargs, nil) + + var args argument + id, err := q.Dequeue(context.Background(), []string{"octopus"}, &args) + require.NoError(t, err) + require.Equal(t, two, id) + require.Equal(t, twoargs, args) + + id, err = q.Dequeue(context.Background(), []string{"fish"}, &args) + require.NoError(t, err) + require.Equal(t, one, id) + require.Equal(t, oneargs, args) +} + +func TestJobTypes(t *testing.T) { + q, dir := newTemporaryQueue(t, []string{"octopus", "clownfish"}) + defer cleanupTempDir(t, dir) + + one := pushTestJob(t, q, "octopus", nil, nil) + two := pushTestJob(t, q, "clownfish", nil, nil) + + require.Equal(t, two, finishNextTestJob(t, q, "clownfish", testResult{})) + require.Equal(t, one, finishNextTestJob(t, q, "octopus", testResult{})) + + ctx, cancel := context.WithCancel(context.Background()) + cancel() + id, err := q.Dequeue(ctx, []string{"zebra"}, nil) + require.Equal(t, err, context.Canceled) + require.Equal(t, uuid.Nil, id) +} + +func TestDependencies(t *testing.T) { + q, dir := newTemporaryQueue(t, []string{"test"}) + defer cleanupTempDir(t, dir) + + t.Run("done-before-pushing-dependant", func(t *testing.T) { + one := pushTestJob(t, q, "test", nil, nil) + two := pushTestJob(t, q, "test", nil, nil) + + r := []uuid.UUID{} + r = append(r, finishNextTestJob(t, q, "test", testResult{})) + r = append(r, finishNextTestJob(t, q, "test", testResult{})) + require.ElementsMatch(t, []uuid.UUID{one, two}, r) + + j := pushTestJob(t, q, "test", nil, []uuid.UUID{one, two}) + queued, started, finished, canceled, err := q.JobStatus(j, nil) + require.NoError(t, err) + require.True(t, !queued.IsZero()) + require.True(t, started.IsZero()) + require.True(t, finished.IsZero()) + require.False(t, canceled) + + require.Equal(t, j, finishNextTestJob(t, q, "test", testResult{})) + + queued, started, finished, canceled, err = q.JobStatus(j, &testResult{}) + require.NoError(t, err) + require.True(t, !queued.IsZero()) + require.True(t, !started.IsZero()) + require.True(t, !finished.IsZero()) + require.False(t, canceled) + }) + + t.Run("done-after-pushing-dependant", func(t *testing.T) { + one := pushTestJob(t, q, "test", nil, nil) + two := pushTestJob(t, q, "test", nil, nil) + + j := pushTestJob(t, q, "test", nil, []uuid.UUID{one, two}) + queued, started, finished, canceled, err := q.JobStatus(j, nil) + require.NoError(t, err) + require.True(t, !queued.IsZero()) + require.True(t, started.IsZero()) + require.True(t, finished.IsZero()) + require.False(t, canceled) + + r := []uuid.UUID{} + r = append(r, finishNextTestJob(t, q, "test", testResult{})) + r = append(r, finishNextTestJob(t, q, "test", testResult{})) + require.ElementsMatch(t, []uuid.UUID{one, two}, r) + + require.Equal(t, j, finishNextTestJob(t, q, "test", testResult{})) + + queued, started, finished, canceled, err = q.JobStatus(j, &testResult{}) + require.NoError(t, err) + require.True(t, !queued.IsZero()) + require.True(t, !started.IsZero()) + require.True(t, !finished.IsZero()) + require.False(t, canceled) + }) +} + +// Test that a job queue allows parallel access to multiple workers, mainly to +// verify the quirky unlocking in Dequeue(). +func TestMultipleWorkers(t *testing.T) { + q, dir := newTemporaryQueue(t, []string{"octopus", "clownfish"}) + defer cleanupTempDir(t, dir) + + done := make(chan struct{}) + go func() { + defer close(done) + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + id, err := q.Dequeue(ctx, []string{"octopus"}, &json.RawMessage{}) + require.NoError(t, err) + require.NotEmpty(t, id) + }() + + // Increase the likelihood that the above goroutine was scheduled and + // is waiting in Dequeue(). + time.Sleep(10 * time.Millisecond) + + // This call to Dequeue() should not block on the one in the goroutine. + id := pushTestJob(t, q, "clownfish", nil, nil) + r, err := q.Dequeue(context.Background(), []string{"clownfish"}, &json.RawMessage{}) + require.NoError(t, err) + require.Equal(t, id, r) + + // Now wake up the Dequeue() in the goroutine and wait for it to finish. + _ = pushTestJob(t, q, "octopus", nil, nil) + <-done +} + +func TestCancel(t *testing.T) { + q, dir := newTemporaryQueue(t, []string{"octopus", "clownfish"}) + defer cleanupTempDir(t, dir) + + // Cancel a non-existing job + err := q.CancelJob(uuid.New()) + require.Error(t, err) + + // Cancel a pending job + id := pushTestJob(t, q, "clownfish", nil, nil) + require.NotEmpty(t, id) + err = q.CancelJob(id) + require.NoError(t, err) + _, _, _, canceled, err := q.JobStatus(id, &testResult{}) + require.NoError(t, err) + require.True(t, canceled) + err = q.FinishJob(id, &testResult{}) + require.Error(t, err) + + // Cancel a running job, which should not dequeue the canceled job from above + id = pushTestJob(t, q, "clownfish", nil, nil) + require.NotEmpty(t, id) + r, err := q.Dequeue(context.Background(), []string{"clownfish"}, &json.RawMessage{}) + require.NoError(t, err) + require.Equal(t, id, r) + err = q.CancelJob(id) + require.NoError(t, err) + _, _, _, canceled, err = q.JobStatus(id, &testResult{}) + require.NoError(t, err) + require.True(t, canceled) + err = q.FinishJob(id, &testResult{}) + require.Error(t, err) + + // Cancel a finished job, which is a no-op + id = pushTestJob(t, q, "clownfish", nil, nil) + require.NotEmpty(t, id) + r, err = q.Dequeue(context.Background(), []string{"clownfish"}, &json.RawMessage{}) + require.NoError(t, err) + require.Equal(t, id, r) + err = q.FinishJob(id, &testResult{}) + require.NoError(t, err) + err = q.CancelJob(id) + require.NoError(t, err) + _, _, _, canceled, err = q.JobStatus(id, &testResult{}) + require.NoError(t, err) + require.False(t, canceled) +} diff --git a/internal/jobqueue/jobqueue.go b/internal/jobqueue/jobqueue.go new file mode 100644 index 0000000..6dbd96b --- /dev/null +++ b/internal/jobqueue/jobqueue.go @@ -0,0 +1,67 @@ +// Package jobqueue provides a generic interface to a simple job queue. +// +// Jobs are pushed to the queue with Enqueue(). Workers call Dequeue() to +// receive a job and FinishJob() to report one as finished. +// +// Each job has a type and arguments corresponding to this type. These are +// opaque to the job queue, but it mandates that the arguments must be +// serializable to JSON. Similarly, a job's result has opaque result arguments +// that are determined by its type. +// +// A job can have dependencies. It is not run until all its dependencies have +// finished. +package jobqueue + +import ( + "context" + "errors" + "time" + + "github.com/google/uuid" +) + +// JobQueue is an interface to a simple job queue. It is safe for concurrent use. +type JobQueue interface { + // Enqueues a job. + // + // `args` must be JSON-serializable and fit the given `jobType`, i.e., a worker + // that is running that job must know the format of `args`. + // + // All dependencies must already exist, but the job isn't run until all of them + // have finished. + // + // Returns the id of the new job, or an error. + Enqueue(jobType string, args interface{}, dependencies []uuid.UUID) (uuid.UUID, error) + + // Dequeues a job, blocking until one is available. + // + // Waits until a job with a type of any of `jobTypes` is available, or `ctx` is + // canceled. + // + // All jobs in `jobTypes` must take the same type of `args`, corresponding to + // the one that was passed to Enqueue(). + // + // Returns the job's id or an error. + Dequeue(ctx context.Context, jobTypes []string, args interface{}) (uuid.UUID, error) + + // Mark the job with `id` as finished. `result` must fit the associated + // job type and must be serializable to JSON. + FinishJob(id uuid.UUID, result interface{}) error + + // Cancel a job. Does nothing if the job has already finished. + CancelJob(id uuid.UUID) error + + // Returns the current status of the job, in the form of three times: + // queued, started, and finished. `started` and `finished` might be the + // zero time (check with t.IsZero()), when the job is not running or + // finished, respectively. + // + // If the job is finished, its result will be returned in `result`. + JobStatus(id uuid.UUID, result interface{}) (queued, started, finished time.Time, canceled bool, err error) +} + +var ( + ErrNotExist = errors.New("job does not exist") + ErrNotRunning = errors.New("job is not running") + ErrCanceled = errors.New("job ws canceled") +) diff --git a/internal/jobqueue/testjobqueue/testjobqueue.go b/internal/jobqueue/testjobqueue/testjobqueue.go new file mode 100644 index 0000000..2c0d5e3 --- /dev/null +++ b/internal/jobqueue/testjobqueue/testjobqueue.go @@ -0,0 +1,210 @@ +// Package testjobqueue implements jobqueue interface. It is meant for testing, +// and as such doesn't implement two invariants of jobqueue: it is not safe for +// concurrent access and `Dequeue()` doesn't wait for new jobs to appear. +package testjobqueue + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "sort" + "time" + + "github.com/google/uuid" + "github.com/osbuild/osbuild-composer/internal/jobqueue" +) + +type testJobQueue struct { + jobs map[uuid.UUID]*job + + pending map[string][]uuid.UUID + + // Maps job ids to the jobs that depend on it + dependants map[uuid.UUID][]uuid.UUID +} + +type job struct { + Id uuid.UUID + Type string + Args json.RawMessage + Dependencies []uuid.UUID + Result json.RawMessage + QueuedAt time.Time + StartedAt time.Time + FinishedAt time.Time + Canceled bool +} + +func New() *testJobQueue { + return &testJobQueue{ + jobs: make(map[uuid.UUID]*job), + pending: make(map[string][]uuid.UUID), + } +} + +func (q *testJobQueue) Enqueue(jobType string, args interface{}, dependencies []uuid.UUID) (uuid.UUID, error) { + var j = job{ + Id: uuid.New(), + Type: jobType, + Dependencies: uniqueUUIDList(dependencies), + QueuedAt: time.Now(), + } + + var err error + j.Args, err = json.Marshal(args) + if err != nil { + return uuid.Nil, err + } + + q.jobs[j.Id] = &j + + // Verify dependencies and check how many of them are already finished. + finished, err := q.countFinishedJobs(j.Dependencies) + if err != nil { + return uuid.Nil, err + } + + // If all dependencies have finished, or there are none, queue the job. + // Otherwise, update dependants so that this check is done again when + // FinishJob() is called for a dependency. + if finished == len(j.Dependencies) { + q.pending[j.Type] = append(q.pending[j.Type], j.Id) + } else { + for _, id := range j.Dependencies { + q.dependants[id] = append(q.dependants[id], j.Id) + } + } + + return j.Id, nil +} + +func (q *testJobQueue) Dequeue(ctx context.Context, jobTypes []string, args interface{}) (uuid.UUID, error) { + for _, t := range jobTypes { + if len(q.pending[t]) == 0 { + continue + } + + id := q.pending[t][0] + q.pending[t] = q.pending[t][1:] + + j := q.jobs[id] + + err := json.Unmarshal(j.Args, args) + if err != nil { + return uuid.Nil, err + } + + j.StartedAt = time.Now() + return j.Id, nil + } + + return uuid.Nil, errors.New("no job available") +} + +func (q *testJobQueue) FinishJob(id uuid.UUID, result interface{}) error { + j, exists := q.jobs[id] + if !exists { + return jobqueue.ErrNotExist + } + + if j.StartedAt.IsZero() || !j.FinishedAt.IsZero() { + return jobqueue.ErrNotRunning + } + + var err error + j.Result, err = json.Marshal(result) + if err != nil { + return fmt.Errorf("error marshaling result: %v", err) + } + + j.FinishedAt = time.Now() + + for _, depid := range q.dependants[id] { + dep := q.jobs[depid] + n, err := q.countFinishedJobs(dep.Dependencies) + if err != nil { + return err + } + if n == len(dep.Dependencies) { + q.pending[dep.Type] = append(q.pending[dep.Type], dep.Id) + } + } + delete(q.dependants, id) + + return nil +} + +func (q *testJobQueue) CancelJob(id uuid.UUID) error { + j, exists := q.jobs[id] + if !exists { + return jobqueue.ErrNotExist + } + + j.Canceled = true + + return nil +} + +func (q *testJobQueue) JobStatus(id uuid.UUID, result interface{}) (queued, started, finished time.Time, canceled bool, err error) { + j, exists := q.jobs[id] + if !exists { + err = jobqueue.ErrNotExist + return + } + + if !j.FinishedAt.IsZero() { + err = json.Unmarshal(j.Result, result) + if err != nil { + return + } + } + + queued = j.QueuedAt + started = j.StartedAt + finished = j.FinishedAt + canceled = j.Canceled + + return +} + +// Returns the number of finished jobs in `ids`. +func (q *testJobQueue) countFinishedJobs(ids []uuid.UUID) (int, error) { + n := 0 + for _, id := range ids { + j, exists := q.jobs[id] + if !exists { + return 0, jobqueue.ErrNotExist + } + if j.Result != nil { + n += 1 + } + } + + return n, nil +} + +// Sorts and removes duplicates from `ids`. +// Copied from fsjobqueue, which also contains a test. +func uniqueUUIDList(ids []uuid.UUID) []uuid.UUID { + s := map[uuid.UUID]bool{} + for _, id := range ids { + s[id] = true + } + + l := []uuid.UUID{} + for id := range s { + l = append(l, id) + } + + sort.Slice(l, func(i, j int) bool { + for b := 0; b < 16; b++ { + if l[i][b] < l[j][b] { + return true + } + } + return false + }) + + return l +} diff --git a/internal/jsondb/db.go b/internal/jsondb/db.go new file mode 100644 index 0000000..10cef85 --- /dev/null +++ b/internal/jsondb/db.go @@ -0,0 +1,131 @@ +// Package jsondb implements a simple database of JSON documents, backed by the +// file system. +// +// It supports two operations: Read() and Write(). Their signatures mirror +// those of json.Unmarshal() and json.Marshal(): +// +// err := db.Write("my-string", "octopus") +// +// var v string +// exists, err := db.Read("my-string", &v) +// +// The JSON documents are stored in a directory, in the form name.json (name as +// passed to Read() and Write()). Thus, names may only contain characters that +// may appear in filenames. + +package jsondb + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "os" + "path" + "path/filepath" + "strings" +) + +type JSONDatabase struct { + dir string + perm os.FileMode +} + +// Create a new JSONDatabase in `dir`. Each document that is saved to it will +// have a file mode of `perm`. +func New(dir string, perm os.FileMode) *JSONDatabase { + return &JSONDatabase{dir, perm} +} + +// Reads the value at `name`. `document` must be a type that is deserializable +// from the JSON document `name`, or nil to not deserialize at all. Returns +// false if a document with `name` does not exist. +func (db *JSONDatabase) Read(name string, document interface{}) (bool, error) { + f, err := os.Open(path.Join(db.dir, name+".json")) + if err != nil { + if os.IsNotExist(err) { + return false, nil + } + return false, fmt.Errorf("error accessing db file %s: %v", name, err) + } + defer f.Close() + + if document != nil { + err = json.NewDecoder(f).Decode(&document) + if err != nil { + return false, fmt.Errorf("error reading db file %s: %v", name, err) + } + } + + return true, nil +} + +// Returns a list of all documents' names. +func (db *JSONDatabase) List() ([]string, error) { + f, err := os.Open(db.dir) + if err != nil { + return nil, err + } + defer f.Close() + + infos, err := f.Readdir(-1) + if err != nil { + return nil, err + } + + names := make([]string, len(infos)) + for i, info := range infos { + names[i] = strings.TrimSuffix(info.Name(), ".json") + } + + return names, nil +} + +// Writes `document` to `name`, overwriting a previous document if it exists. +// `document` must be serializable to JSON. +func (db *JSONDatabase) Write(name string, document interface{}) error { + return writeFileAtomically(db.dir, name+".json", db.perm, func(f *os.File) error { + return json.NewEncoder(f).Encode(document) + }) +} + +// writeFileAtomically writes data to `filename` in `directory` atomically, by +// first creating a temporary file in `directory` and only moving it when +// writing succeeded. `writer` gets passed the open file handle to write to and +// does not need to take care of closing it. +func writeFileAtomically(dir, filename string, mode os.FileMode, writer func(f *os.File) error) error { + tmpfile, err := ioutil.TempFile(dir, filename+"-*.tmp") + if err != nil { + return err + } + + // Remove `tmpfile` in each error case. We cannot use `defer` here, + // because `tmpfile` shouldn't be removed when everything works: it + // will be renamed to `filename`. Ignore errors from `os.Remove()`, + // because the error relating to `tempfile` is more relevant. + + err = tmpfile.Chmod(mode) + if err != nil { + _ = os.Remove(tmpfile.Name()) + return fmt.Errorf("error setting permissions on %s: %v", tmpfile.Name(), err) + } + + err = writer(tmpfile) + if err != nil { + _ = os.Remove(tmpfile.Name()) + return fmt.Errorf("error writing to %s: %v", tmpfile.Name(), err) + } + + err = tmpfile.Close() + if err != nil { + _ = os.Remove(tmpfile.Name()) + return fmt.Errorf("error closing %s: %v", tmpfile.Name(), err) + } + + err = os.Rename(tmpfile.Name(), path.Join(dir, filename)) + if err != nil { + _ = os.Remove(tmpfile.Name()) + return fmt.Errorf("error moving %s to %s: %v", filepath.Base(tmpfile.Name()), filename, err) + } + + return nil +} diff --git a/internal/jsondb/db_private_test.go b/internal/jsondb/db_private_test.go new file mode 100644 index 0000000..d093919 --- /dev/null +++ b/internal/jsondb/db_private_test.go @@ -0,0 +1,64 @@ +package jsondb + +import ( + "errors" + "io/ioutil" + "os" + "path" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestWriteFileAtomically(t *testing.T) { + dir, err := ioutil.TempDir("", "jsondb-test-") + require.NoError(t, err) + + defer func() { + err := os.RemoveAll(dir) + require.NoError(t, err) + }() + + t.Run("success", func(t *testing.T) { + octopus := []byte("🐙\n") + + // use an uncommon mode to check it's set correctly + perm := os.FileMode(0750) + + err = writeFileAtomically(dir, "octopus", perm, func(f *os.File) error { + _, err := f.Write(octopus) + return err + }) + require.NoError(t, err) + + // ensure that there are no stray temporary files + infos, err := ioutil.ReadDir(dir) + require.NoError(t, err) + require.Equal(t, 1, len(infos)) + require.Equal(t, "octopus", infos[0].Name()) + require.Equal(t, perm, infos[0].Mode()) + + filename := path.Join(dir, "octopus") + contents, err := ioutil.ReadFile(filename) + require.NoError(t, err) + require.Equal(t, octopus, contents) + + err = os.Remove(filename) + require.NoError(t, err) + }) + + t.Run("error", func(t *testing.T) { + err = writeFileAtomically(dir, "no-octopus", 0750, func(f *os.File) error { + return errors.New("something went wrong") + }) + require.Error(t, err) + + _, err := os.Stat(path.Join(dir, "no-octopus")) + require.Error(t, err) + + // ensure there are no stray temporary files + infos, err := ioutil.ReadDir(dir) + require.NoError(t, err) + require.Equal(t, 0, len(infos)) + }) +} diff --git a/internal/jsondb/db_test.go b/internal/jsondb/db_test.go new file mode 100644 index 0000000..c18b459 --- /dev/null +++ b/internal/jsondb/db_test.go @@ -0,0 +1,137 @@ +package jsondb_test + +import ( + "io/ioutil" + "os" + "path" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/osbuild/osbuild-composer/internal/jsondb" +) + +type document struct { + Animal string `json:"animal"` + CanSwim bool `json:"can-swim"` +} + +func cleanupTempDir(t *testing.T, dir string) { + err := os.RemoveAll(dir) + require.NoError(t, err) +} + +// If the passed directory is not readable (writable), we should notice on the +// first read (write). +func TestDegenerate(t *testing.T) { + t.Run("no-exist", func(t *testing.T) { + db := jsondb.New("/non-existant-directory", 0755) + + var d document + exist, err := db.Read("one", &d) + assert.False(t, exist) + assert.NoError(t, err) + + err = db.Write("one", &d) + assert.Error(t, err) + + l, err := db.List() + assert.Error(t, err) + assert.Nil(t, l) + }) + + t.Run("invalid-json", func(t *testing.T) { + dir, err := ioutil.TempDir("", "jsondb-test-") + require.NoError(t, err) + defer cleanupTempDir(t, dir) + + db := jsondb.New(dir, 0755) + + // write-only file + err = ioutil.WriteFile(path.Join(dir, "one.json"), []byte("{"), 0644) + require.NoError(t, err) + + var d document + _, err = db.Read("one", &d) + assert.Error(t, err) + }) +} + +func TestCorrupt(t *testing.T) { + dir, err := ioutil.TempDir("", "jsondb-test-") + require.NoError(t, err) + defer cleanupTempDir(t, dir) + + err = ioutil.WriteFile(path.Join(dir, "one.json"), []byte("{"), 0755) + require.NoError(t, err) + + db := jsondb.New(dir, 0755) + var d document + _, err = db.Read("one", &d) + require.Error(t, err) +} + +func TestRead(t *testing.T) { + dir, err := ioutil.TempDir("", "jsondb-test-") + require.NoError(t, err) + defer cleanupTempDir(t, dir) + + err = ioutil.WriteFile(path.Join(dir, "one.json"), []byte("true"), 0755) + require.NoError(t, err) + + db := jsondb.New(dir, 0755) + + var b bool + exists, err := db.Read("one", &b) + require.NoError(t, err) + require.True(t, exists) + require.True(t, b) + + // nil means don't deserialize + exists, err = db.Read("one", nil) + require.NoError(t, err) + require.True(t, exists) + + b = false + exists, err = db.Read("two", &b) + require.NoError(t, err) + require.False(t, exists) + require.False(t, b) + + // nil means don't deserialize + exists, err = db.Read("two", nil) + require.NoError(t, err) + require.False(t, exists) +} + +func TestMultiple(t *testing.T) { + dir, err := ioutil.TempDir("", "jsondb-test-") + require.NoError(t, err) + defer cleanupTempDir(t, dir) + + perm := os.FileMode(0600) + documents := map[string]document{ + "one": document{"octopus", true}, + "two": document{"zebra", false}, + "three": document{"clownfish", true}, + } + + db := jsondb.New(dir, perm) + + for name, doc := range documents { + err = db.Write(name, doc) + require.NoError(t, err) + } + names, err := db.List() + require.NoError(t, err) + require.ElementsMatch(t, []string{"one", "two", "three"}, names) + + for name, doc := range documents { + var d document + exist, err := db.Read(name, &d) + require.NoError(t, err) + require.True(t, exist) + require.Equalf(t, doc, d, "error retrieving document '%s'", name) + } +} diff --git a/internal/mocks/distro/distro_mock.go b/internal/mocks/distro/distro_mock.go new file mode 100644 index 0000000..ce65d50 --- /dev/null +++ b/internal/mocks/distro/distro_mock.go @@ -0,0 +1,14 @@ +package distro_mock + +import ( + "github.com/osbuild/osbuild-composer/internal/distro" + "github.com/osbuild/osbuild-composer/internal/distro/fedoratest" +) + +func NewDefaultRegistry() (*distro.Registry, error) { + ftest := fedoratest.New() + if ftest == nil { + panic("Attempt to register Fedora test failed") + } + return distro.NewRegistry(ftest) +} diff --git a/internal/mocks/rpmmd/fixtures.go b/internal/mocks/rpmmd/fixtures.go new file mode 100644 index 0000000..edd07e9 --- /dev/null +++ b/internal/mocks/rpmmd/fixtures.go @@ -0,0 +1,180 @@ +package rpmmd_mock + +import ( + "fmt" + "sort" + "time" + + "github.com/osbuild/osbuild-composer/internal/jobqueue/testjobqueue" + "github.com/osbuild/osbuild-composer/internal/worker" + + "github.com/osbuild/osbuild-composer/internal/rpmmd" + "github.com/osbuild/osbuild-composer/internal/store" +) + +type FixtureGenerator func() Fixture + +func generatePackageList() rpmmd.PackageList { + baseTime, err := time.Parse(time.RFC3339, "2006-01-02T15:04:05Z") + + if err != nil { + panic(err) + } + + var packageList rpmmd.PackageList + + for i := 0; i < 22; i++ { + basePackage := rpmmd.Package{ + Name: fmt.Sprintf("package%d", i), + Summary: fmt.Sprintf("pkg%d sum", i), + Description: fmt.Sprintf("pkg%d desc", i), + URL: fmt.Sprintf("https://pkg%d.example.com", i), + Epoch: 0, + Version: fmt.Sprintf("%d.0", i), + Release: fmt.Sprintf("%d.fc30", i), + Arch: "x86_64", + BuildTime: baseTime.AddDate(0, i, 0), + License: "MIT", + } + + secondBuild := basePackage + + secondBuild.Version = fmt.Sprintf("%d.1", i) + secondBuild.BuildTime = basePackage.BuildTime.AddDate(0, 0, 1) + + packageList = append(packageList, basePackage, secondBuild) + } + + sort.Slice(packageList, func(i, j int) bool { + return packageList[i].Name < packageList[j].Name + }) + + return packageList +} + +func createBaseWorkersFixture() *worker.Server { + return worker.NewServer(nil, testjobqueue.New(), "") +} + +func createBaseDepsolveFixture() []rpmmd.PackageSpec { + return []rpmmd.PackageSpec{ + { + Name: "dep-package3", + Epoch: 7, + Version: "3.0.3", + Release: "1.fc30", + Arch: "x86_64", + }, + { + Name: "dep-package1", + Epoch: 0, + Version: "1.33", + Release: "2.fc30", + Arch: "x86_64", + }, + { + Name: "dep-package2", + Epoch: 0, + Version: "2.9", + Release: "1.fc30", + Arch: "x86_64", + }, + } +} + +func BaseFixture() Fixture { + return Fixture{ + fetchPackageList{ + generatePackageList(), + map[string]string{"base": "sha256:f34848ca92665c342abd5816c9e3eda0e82180671195362bcd0080544a3bc2ac"}, + nil, + }, + depsolve{ + createBaseDepsolveFixture(), + map[string]string{"base": "sha256:f34848ca92665c342abd5816c9e3eda0e82180671195362bcd0080544a3bc2ac"}, + nil, + }, + store.FixtureBase(), + createBaseWorkersFixture(), + } +} + +func NoComposesFixture() Fixture { + return Fixture{ + fetchPackageList{ + generatePackageList(), + map[string]string{"base": "sha256:f34848ca92665c342abd5816c9e3eda0e82180671195362bcd0080544a3bc2ac"}, + nil, + }, + depsolve{ + createBaseDepsolveFixture(), + map[string]string{"base": "sha256:f34848ca92665c342abd5816c9e3eda0e82180671195362bcd0080544a3bc2ac"}, + nil, + }, + store.FixtureEmpty(), + createBaseWorkersFixture(), + } +} + +func NonExistingPackage() Fixture { + return Fixture{ + fetchPackageList{ + generatePackageList(), + map[string]string{"base": "sha256:f34848ca92665c342abd5816c9e3eda0e82180671195362bcd0080544a3bc2ac"}, + nil, + }, + depsolve{ + nil, + nil, + &rpmmd.DNFError{ + Kind: "MarkingErrors", + Reason: "Error occurred when marking packages for installation: Problems in request:\nmissing packages: fash", + }, + }, + store.FixtureBase(), + createBaseWorkersFixture(), + } +} + +func BadDepsolve() Fixture { + return Fixture{ + fetchPackageList{ + generatePackageList(), + map[string]string{"base": "sha256:f34848ca92665c342abd5816c9e3eda0e82180671195362bcd0080544a3bc2ac"}, + nil, + }, + depsolve{ + nil, + nil, + &rpmmd.DNFError{ + Kind: "DepsolveError", + Reason: "There was a problem depsolving ['go2rpm']: \n Problem: conflicting requests\n - nothing provides askalono-cli needed by go2rpm-1-4.fc31.noarch", + }, + }, + store.FixtureBase(), + createBaseWorkersFixture(), + } +} + +func BadFetch() Fixture { + return Fixture{ + fetchPackageList{ + ret: nil, + checksums: nil, + err: &rpmmd.DNFError{ + Kind: "FetchError", + Reason: "There was a problem when fetching packages.", + }, + }, + depsolve{ + nil, + nil, + &rpmmd.DNFError{ + Kind: "DepsolveError", + Reason: "There was a problem depsolving ['go2rpm']: \n Problem: conflicting requests\n - nothing provides askalono-cli needed by go2rpm-1-4.fc31.noarch", + }, + }, + store.FixtureBase(), + createBaseWorkersFixture(), + } +} diff --git a/internal/mocks/rpmmd/rpmmd_mock.go b/internal/mocks/rpmmd/rpmmd_mock.go new file mode 100644 index 0000000..49049f7 --- /dev/null +++ b/internal/mocks/rpmmd/rpmmd_mock.go @@ -0,0 +1,41 @@ +package rpmmd_mock + +import ( + "github.com/osbuild/osbuild-composer/internal/rpmmd" + "github.com/osbuild/osbuild-composer/internal/store" + "github.com/osbuild/osbuild-composer/internal/worker" +) + +type fetchPackageList struct { + ret rpmmd.PackageList + checksums map[string]string + err error +} +type depsolve struct { + ret []rpmmd.PackageSpec + checksums map[string]string + err error +} + +type Fixture struct { + fetchPackageList + depsolve + *store.Store + Workers *worker.Server +} + +type rpmmdMock struct { + Fixture Fixture +} + +func NewRPMMDMock(fixture Fixture) rpmmd.RPMMD { + return &rpmmdMock{Fixture: fixture} +} + +func (r *rpmmdMock) FetchMetadata(repos []rpmmd.RepoConfig, modulePlatformID string, arch string) (rpmmd.PackageList, map[string]string, error) { + return r.Fixture.fetchPackageList.ret, r.Fixture.fetchPackageList.checksums, r.Fixture.fetchPackageList.err +} + +func (r *rpmmdMock) Depsolve(specs, excludeSpecs []string, repos []rpmmd.RepoConfig, modulePlatformID, arch string) ([]rpmmd.PackageSpec, map[string]string, error) { + return r.Fixture.depsolve.ret, r.Fixture.fetchPackageList.checksums, r.Fixture.depsolve.err +} diff --git a/internal/osbuild/assembler.go b/internal/osbuild/assembler.go new file mode 100644 index 0000000..3547668 --- /dev/null +++ b/internal/osbuild/assembler.go @@ -0,0 +1,55 @@ +package osbuild + +import ( + "encoding/json" + "errors" +) + +// An Assembler turns a filesystem tree into a target image. +type Assembler struct { + Name string `json:"name"` + Options AssemblerOptions `json:"options"` +} + +// AssemblerOptions specify the operations of a given assembler-type. +type AssemblerOptions interface { + isAssemblerOptions() +} + +type rawAssembler struct { + Name string `json:"name"` + Options json.RawMessage `json:"options"` +} + +// UnmarshalJSON unmarshals JSON into an Assembler object. Each type of +// assembler has a custom unmarshaller for its options, selected based on the +// stage name. +func (assembler *Assembler) UnmarshalJSON(data []byte) error { + var rawAssembler rawAssembler + err := json.Unmarshal(data, &rawAssembler) + if err != nil { + return err + } + var options AssemblerOptions + switch rawAssembler.Name { + case "org.osbuild.ostree.commit": + options = new(OSTreeCommitAssemblerOptions) + case "org.osbuild.qemu": + options = new(QEMUAssemblerOptions) + case "org.osbuild.rawfs": + options = new(RawFSAssemblerOptions) + case "org.osbuild.tar": + options = new(TarAssemblerOptions) + default: + return errors.New("unexpected assembler name") + } + err = json.Unmarshal(rawAssembler.Options, options) + if err != nil { + return err + } + + assembler.Name = rawAssembler.Name + assembler.Options = options + + return nil +} diff --git a/internal/osbuild/assembler_test.go b/internal/osbuild/assembler_test.go new file mode 100644 index 0000000..644420c --- /dev/null +++ b/internal/osbuild/assembler_test.go @@ -0,0 +1,171 @@ +package osbuild + +import ( + "encoding/json" + "testing" + + "github.com/google/uuid" + "github.com/stretchr/testify/assert" +) + +func TestAssembler_UnmarshalJSON(t *testing.T) { + tests := []struct { + name string + assembler Assembler + data []byte + errorExpected bool + }{ + { + // invalid JSON - note the missing brace at the end of the string + name: "invalid json", + data: []byte(`{"name":"org.osbuild.tar","options":{"filename":""}`), + errorExpected: true, + }, + { + // valid JSON, but with an unknown assembler (org.osbuild.foo) + name: "unknown assembler", + data: []byte(`{"name":"org.osbuild.foo","options":{"bar":null}}`), + errorExpected: true, + }, + { + name: "missing options", + data: []byte(`{"name":"org.osbuild.rawfs"`), + errorExpected: true, + }, + { + name: "missing name", + data: []byte(`{"options":{"bar":null}}`), + errorExpected: true, + }, + { + name: "qemu assembler empty", + assembler: Assembler{ + Name: "org.osbuild.qemu", + Options: &QEMUAssemblerOptions{}, + }, + data: []byte(`{"name":"org.osbuild.qemu","options":{"format":"","filename":"","size":0,"ptuuid":"","pttype":"","partitions":null}}`), + }, + { + name: "qemu assembler full", + assembler: Assembler{ + Name: "org.osbuild.qemu", + Options: &QEMUAssemblerOptions{ + Format: "qcow2", + Filename: "disk.qcow2", + Size: 2147483648, + PTUUID: "0x14fc63d2", + PTType: "mbr", + Partitions: []QEMUPartition{QEMUPartition{ + Start: 2048, + Bootable: true, + Filesystem: &QEMUFilesystem{ + Type: "ext4", + UUID: "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + Label: "root", + Mountpoint: "/", + }, + }}, + }, + }, + data: []byte(`{"name":"org.osbuild.qemu","options":{"format":"qcow2","filename":"disk.qcow2","size":2147483648,"ptuuid":"0x14fc63d2","pttype":"mbr","partitions":[{"start":2048,"bootable":true,"filesystem":{"type":"ext4","uuid":"76a22bf4-f153-4541-b6c7-0332c0dfaeac","label":"root","mountpoint":"/"}}]}}`), + }, + { + name: "tar assembler empty", + assembler: Assembler{ + Name: "org.osbuild.tar", + Options: &TarAssemblerOptions{}, + }, + data: []byte(`{"name":"org.osbuild.tar","options":{"filename":""}}`), + }, + { + name: "tar assembler full", + assembler: Assembler{ + Name: "org.osbuild.tar", + Options: &TarAssemblerOptions{ + Filename: "root.tar.xz", + Compression: "xz", + }, + }, + data: []byte(`{"name":"org.osbuild.tar","options":{"filename":"root.tar.xz","compression":"xz"}}`), + }, + { + name: "rawfs assembler empty", + assembler: Assembler{ + Name: "org.osbuild.rawfs", + Options: &RawFSAssemblerOptions{}, + }, + data: []byte(`{"name":"org.osbuild.rawfs","options":{"filename":"","root_fs_uuid":"00000000-0000-0000-0000-000000000000","size":0}}`), + }, + { + name: "rawfs assembler full", + assembler: Assembler{ + Name: "org.osbuild.rawfs", + Options: &RawFSAssemblerOptions{ + Filename: "filesystem.img", + RootFilesystemUUID: uuid.MustParse("76a22bf4-f153-4541-b6c7-0332c0dfaeac"), + Size: 2147483648, + }, + }, + data: []byte(`{"name":"org.osbuild.rawfs","options":{"filename":"filesystem.img","root_fs_uuid":"76a22bf4-f153-4541-b6c7-0332c0dfaeac","size":2147483648}}`), + }, + { + name: "ostree commit assembler", + assembler: Assembler{ + Name: "org.osbuild.ostree.commit", + Options: &OSTreeCommitAssemblerOptions{ + Ref: "foo", + Tar: OSTreeCommitAssemblerTarOptions{ + Filename: "foo.tar", + }, + }, + }, + data: []byte(`{"name":"org.osbuild.ostree.commit","options":{"ref":"foo","tar":{"filename":"foo.tar"}}}`), + }, + } + + assert := assert.New(t) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assembler := &tt.assembler + var gotAssembler Assembler + err := gotAssembler.UnmarshalJSON(tt.data) + if tt.errorExpected { + assert.NotNil(err) + return + } else { + assert.Nil(err) + } + gotBytes, err := json.Marshal(assembler) + assert.Nilf(err, "Could not marshal assembler: %v", err) + assert.Equal(tt.data, gotBytes) + assert.Equal(&gotAssembler, assembler) + }) + } +} + +func TestNewQEMUAssembler(t *testing.T) { + options := &QEMUAssemblerOptions{} + expectedAssembler := &Assembler{ + Name: "org.osbuild.qemu", + Options: &QEMUAssemblerOptions{}, + } + assert.Equal(t, expectedAssembler, NewQEMUAssembler(options)) +} + +func TestNewTarAssembler(t *testing.T) { + options := &TarAssemblerOptions{} + expectedAssembler := &Assembler{ + Name: "org.osbuild.tar", + Options: &TarAssemblerOptions{}, + } + assert.Equal(t, expectedAssembler, NewTarAssembler(options)) +} + +func TestNewRawFSAssembler(t *testing.T) { + options := &RawFSAssemblerOptions{} + expectedAssembler := &Assembler{ + Name: "org.osbuild.rawfs", + Options: &RawFSAssemblerOptions{}, + } + assert.Equal(t, expectedAssembler, NewRawFSAssembler(options)) +} diff --git a/internal/osbuild/chrony_stage.go b/internal/osbuild/chrony_stage.go new file mode 100644 index 0000000..1be51c2 --- /dev/null +++ b/internal/osbuild/chrony_stage.go @@ -0,0 +1,14 @@ +package osbuild + +type ChronyStageOptions struct { + Timeservers []string `json:"timeservers"` +} + +func (ChronyStageOptions) isStageOptions() {} + +func NewChronyStage(options *ChronyStageOptions) *Stage { + return &Stage{ + Name: "org.osbuild.chrony", + Options: options, + } +} diff --git a/internal/osbuild/chrony_stage_test.go b/internal/osbuild/chrony_stage_test.go new file mode 100644 index 0000000..df3050f --- /dev/null +++ b/internal/osbuild/chrony_stage_test.go @@ -0,0 +1,16 @@ +package osbuild + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNewChronyStage(t *testing.T) { + expectedStage := &Stage{ + Name: "org.osbuild.chrony", + Options: &ChronyStageOptions{}, + } + actualStage := NewChronyStage(&ChronyStageOptions{}) + assert.Equal(t, expectedStage, actualStage) +} diff --git a/internal/osbuild/files_source.go b/internal/osbuild/files_source.go new file mode 100644 index 0000000..43b8307 --- /dev/null +++ b/internal/osbuild/files_source.go @@ -0,0 +1,16 @@ +package osbuild + +type Secret struct { + Name string `json:"name,omitempty"` +} +type FileSource struct { + URL string `json:"url"` + Secrets *Secret `json:"secrets,omitempty"` +} + +// The FilesSourceOptions specifies a custom script to run in the image +type FilesSource struct { + URLs map[string]FileSource `json:"urls"` +} + +func (FilesSource) isSource() {} diff --git a/internal/osbuild/firewall_stage.go b/internal/osbuild/firewall_stage.go new file mode 100644 index 0000000..fd74fb1 --- /dev/null +++ b/internal/osbuild/firewall_stage.go @@ -0,0 +1,16 @@ +package osbuild + +type FirewallStageOptions struct { + Ports []string `json:"ports,omitempty"` + EnabledServices []string `json:"enabled_services,omitempty"` + DisabledServices []string `json:"disabled_services,omitempty"` +} + +func (FirewallStageOptions) isStageOptions() {} + +func NewFirewallStage(options *FirewallStageOptions) *Stage { + return &Stage{ + Name: "org.osbuild.firewall", + Options: options, + } +} diff --git a/internal/osbuild/firewall_stage_test.go b/internal/osbuild/firewall_stage_test.go new file mode 100644 index 0000000..14e1d92 --- /dev/null +++ b/internal/osbuild/firewall_stage_test.go @@ -0,0 +1,16 @@ +package osbuild + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNewFirewallStage(t *testing.T) { + expectedFirewall := &Stage{ + Name: "org.osbuild.firewall", + Options: &FirewallStageOptions{}, + } + actualFirewall := NewFirewallStage(&FirewallStageOptions{}) + assert.Equal(t, expectedFirewall, actualFirewall) +} diff --git a/internal/osbuild/fix_bls_stage.go b/internal/osbuild/fix_bls_stage.go new file mode 100644 index 0000000..b96074c --- /dev/null +++ b/internal/osbuild/fix_bls_stage.go @@ -0,0 +1,21 @@ +package osbuild + +// A FixBLSStageOptions struct is empty, as the stage takes no options. +// +// The FixBLSStage fixes the paths in the Boot Loader Specification +// snippets installed into /boot. grub2's kernel install script will +// try to guess the correct path to the kernel and bootloader, and adjust +// the boot loader scripts accordingly. When run under OSBuild this does +// not work correctly, so this stage essentially reverts the "fixup". +type FixBLSStageOptions struct { +} + +func (FixBLSStageOptions) isStageOptions() {} + +// NewFixBLSStage creates a new FixBLSStage. +func NewFixBLSStage() *Stage { + return &Stage{ + Name: "org.osbuild.fix-bls", + Options: &FixBLSStageOptions{}, + } +} diff --git a/internal/osbuild/fix_bls_stage_test.go b/internal/osbuild/fix_bls_stage_test.go new file mode 100644 index 0000000..4d6349b --- /dev/null +++ b/internal/osbuild/fix_bls_stage_test.go @@ -0,0 +1,16 @@ +package osbuild + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNewFixBLSStage(t *testing.T) { + expectedStage := &Stage{ + Name: "org.osbuild.fix-bls", + Options: &FixBLSStageOptions{}, + } + actualStage := NewFixBLSStage() + assert.Equal(t, expectedStage, actualStage) +} diff --git a/internal/osbuild/fstab_stage.go b/internal/osbuild/fstab_stage.go new file mode 100644 index 0000000..4bf6792 --- /dev/null +++ b/internal/osbuild/fstab_stage.go @@ -0,0 +1,44 @@ +package osbuild + +// The FSTabStageOptions describe the content of the /etc/fstab file. +// +// The structure of the options follows the format of /etc/fstab, except +// that filesystem must be identified by their UUID and ommitted fields +// are set to their defaults (if possible). +type FSTabStageOptions struct { + FileSystems []*FSTabEntry `json:"filesystems"` +} + +func (FSTabStageOptions) isStageOptions() {} + +// NewFSTabStage creates a now FSTabStage object +func NewFSTabStage(options *FSTabStageOptions) *Stage { + return &Stage{ + Name: "org.osbuild.fstab", + Options: options, + } +} + +// An FSTabEntry represents one line in /etc/fstab. With the one exception +// that the the spec field must be represented as an UUID. +type FSTabEntry struct { + UUID string `json:"uuid,omitempty"` + Label string `json:"label,omitempty"` + VFSType string `json:"vfs_type"` + Path string `json:"path,omitempty"` + Options string `json:"options,omitempty"` + Freq uint64 `json:"freq,omitempty"` + PassNo uint64 `json:"passno,omitempty"` +} + +// AddFilesystem adds one entry to and FSTabStageOptions object. +func (options *FSTabStageOptions) AddFilesystem(id string, vfsType string, path string, opts string, freq uint64, passNo uint64) { + options.FileSystems = append(options.FileSystems, &FSTabEntry{ + UUID: id, + VFSType: vfsType, + Path: path, + Options: opts, + Freq: freq, + PassNo: passNo, + }) +} diff --git a/internal/osbuild/fstab_stage_test.go b/internal/osbuild/fstab_stage_test.go new file mode 100644 index 0000000..049f752 --- /dev/null +++ b/internal/osbuild/fstab_stage_test.go @@ -0,0 +1,52 @@ +package osbuild + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNewFSTabStage(t *testing.T) { + expectedStage := &Stage{ + Name: "org.osbuild.fstab", + Options: &FSTabStageOptions{}, + } + actualStage := NewFSTabStage(&FSTabStageOptions{}) + assert.Equal(t, expectedStage, actualStage) +} + +func TestAddFilesystem(t *testing.T) { + options := &FSTabStageOptions{} + filesystems := []*FSTabEntry{ + { + UUID: "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + VFSType: "ext4", + Path: "/", + Options: "defaults", + Freq: 1, + PassNo: 1, + }, + { + UUID: "bba22bf4-f153-4541-b6c7-0332c0dfaeac", + VFSType: "xfs", + Path: "/home", + Options: "defaults", + Freq: 1, + PassNo: 2, + }, + { + UUID: "cca22bf4-f153-4541-b6c7-0332c0dfaeac", + VFSType: "xfs", + Path: "/var", + Options: "defaults", + Freq: 1, + PassNo: 1, + }, + } + + for i, fs := range filesystems { + options.AddFilesystem(fs.UUID, fs.VFSType, fs.Path, fs.Options, fs.Freq, fs.PassNo) + assert.Equal(t, options.FileSystems[i], fs) + } + assert.Equal(t, len(filesystems), len(options.FileSystems)) +} diff --git a/internal/osbuild/groups_stage.go b/internal/osbuild/groups_stage.go new file mode 100644 index 0000000..9c778fc --- /dev/null +++ b/internal/osbuild/groups_stage.go @@ -0,0 +1,19 @@ +package osbuild + +type GroupsStageOptions struct { + Groups map[string]GroupsStageOptionsGroup `json:"groups"` +} + +func (GroupsStageOptions) isStageOptions() {} + +type GroupsStageOptionsGroup struct { + Name string `json:"name"` + GID *int `json:"gid,omitempty"` +} + +func NewGroupsStage(options *GroupsStageOptions) *Stage { + return &Stage{ + Name: "org.osbuild.groups", + Options: options, + } +} diff --git a/internal/osbuild/groups_stage_test.go b/internal/osbuild/groups_stage_test.go new file mode 100644 index 0000000..a8b3ff6 --- /dev/null +++ b/internal/osbuild/groups_stage_test.go @@ -0,0 +1,16 @@ +package osbuild + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNewGroupsStage(t *testing.T) { + expectedStage := &Stage{ + Name: "org.osbuild.groups", + Options: &GroupsStageOptions{}, + } + actualStage := NewGroupsStage(&GroupsStageOptions{}) + assert.Equal(t, expectedStage, actualStage) +} diff --git a/internal/osbuild/grub2_stage.go b/internal/osbuild/grub2_stage.go new file mode 100644 index 0000000..c522973 --- /dev/null +++ b/internal/osbuild/grub2_stage.go @@ -0,0 +1,33 @@ +package osbuild + +import "github.com/google/uuid" + +// The GRUB2StageOptions describes the bootloader configuration. +// +// The stage is responsible for installing all bootloader files in +// /boot as well as config files in /etc necessary for regenerating +// the configuration in /boot. +// +// Note that it is the role of an assembler to install any necessary +// bootloaders that are stored in the image outside of any filesystem. +type GRUB2StageOptions struct { + RootFilesystemUUID uuid.UUID `json:"root_fs_uuid"` + BootFilesystemUUID *uuid.UUID `json:"boot_fs_uuid,omitempty"` + KernelOptions string `json:"kernel_opts,omitempty"` + Legacy string `json:"legacy,omitempty"` + UEFI *GRUB2UEFI `json:"uefi,omitempty"` +} + +type GRUB2UEFI struct { + Vendor string `json:"vendor"` +} + +func (GRUB2StageOptions) isStageOptions() {} + +// NewGRUB2Stage creates a new GRUB2 stage object. +func NewGRUB2Stage(options *GRUB2StageOptions) *Stage { + return &Stage{ + Name: "org.osbuild.grub2", + Options: options, + } +} diff --git a/internal/osbuild/grub2_stage_test.go b/internal/osbuild/grub2_stage_test.go new file mode 100644 index 0000000..6dca7e1 --- /dev/null +++ b/internal/osbuild/grub2_stage_test.go @@ -0,0 +1,16 @@ +package osbuild + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNewGRUB2Stage(t *testing.T) { + expectedStage := &Stage{ + Name: "org.osbuild.grub2", + Options: &GRUB2StageOptions{}, + } + actualStage := NewGRUB2Stage(&GRUB2StageOptions{}) + assert.Equal(t, expectedStage, actualStage) +} diff --git a/internal/osbuild/hostname_stage.go b/internal/osbuild/hostname_stage.go new file mode 100644 index 0000000..71d7a44 --- /dev/null +++ b/internal/osbuild/hostname_stage.go @@ -0,0 +1,14 @@ +package osbuild + +type HostnameStageOptions struct { + Hostname string `json:"hostname"` +} + +func (HostnameStageOptions) isStageOptions() {} + +func NewHostnameStage(options *HostnameStageOptions) *Stage { + return &Stage{ + Name: "org.osbuild.hostname", + Options: options, + } +} diff --git a/internal/osbuild/hostname_stage_test.go b/internal/osbuild/hostname_stage_test.go new file mode 100644 index 0000000..efa1684 --- /dev/null +++ b/internal/osbuild/hostname_stage_test.go @@ -0,0 +1,16 @@ +package osbuild + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNewHostnameStage(t *testing.T) { + expectedStage := &Stage{ + Name: "org.osbuild.hostname", + Options: &HostnameStageOptions{}, + } + actualStage := NewHostnameStage(&HostnameStageOptions{}) + assert.Equal(t, expectedStage, actualStage) +} diff --git a/internal/osbuild/kernel_cmdline_stage.go b/internal/osbuild/kernel_cmdline_stage.go new file mode 100644 index 0000000..4e9a178 --- /dev/null +++ b/internal/osbuild/kernel_cmdline_stage.go @@ -0,0 +1,19 @@ +package osbuild + +// KernelCmdlineStageOptions describe how to create kernel-cmdline stage +// +// Configures the kernel boot parameters, also known as the kernel command line. +type KernelCmdlineStageOptions struct { + RootFsUUID string `json:"root_fs_uuid,omitempty"` + KernelOpts string `json:"kernel_opts,omitempty"` +} + +func (KernelCmdlineStageOptions) isStageOptions() {} + +// NewKernelCmdlineStage creates a new kernel-cmdline Stage object. +func NewKernelCmdlineStage(options *KernelCmdlineStageOptions) *Stage { + return &Stage{ + Name: "org.osbuild.kernel-cmdline", + Options: options, + } +} diff --git a/internal/osbuild/kernel_cmdline_stage_test.go b/internal/osbuild/kernel_cmdline_stage_test.go new file mode 100644 index 0000000..1a24c63 --- /dev/null +++ b/internal/osbuild/kernel_cmdline_stage_test.go @@ -0,0 +1,16 @@ +package osbuild + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNewKernelCmdlineStage(t *testing.T) { + expectedStage := &Stage{ + Name: "org.osbuild.kernel-cmdline", + Options: &KernelCmdlineStageOptions{}, + } + actualStage := NewKernelCmdlineStage(&KernelCmdlineStageOptions{}) + assert.Equal(t, expectedStage, actualStage) +} diff --git a/internal/osbuild/keymap_stage.go b/internal/osbuild/keymap_stage.go new file mode 100644 index 0000000..9fd4fb7 --- /dev/null +++ b/internal/osbuild/keymap_stage.go @@ -0,0 +1,14 @@ +package osbuild + +type KeymapStageOptions struct { + Keymap string `json:"keymap"` +} + +func (KeymapStageOptions) isStageOptions() {} + +func NewKeymapStage(options *KeymapStageOptions) *Stage { + return &Stage{ + Name: "org.osbuild.keymap", + Options: options, + } +} diff --git a/internal/osbuild/keymap_stage_test.go b/internal/osbuild/keymap_stage_test.go new file mode 100644 index 0000000..76f61bf --- /dev/null +++ b/internal/osbuild/keymap_stage_test.go @@ -0,0 +1,16 @@ +package osbuild + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNewKeymapStage(t *testing.T) { + expectedStage := &Stage{ + Name: "org.osbuild.keymap", + Options: &KeymapStageOptions{}, + } + actualStage := NewKeymapStage(&KeymapStageOptions{}) + assert.Equal(t, expectedStage, actualStage) +} diff --git a/internal/osbuild/locale_stage.go b/internal/osbuild/locale_stage.go new file mode 100644 index 0000000..8e6d3f4 --- /dev/null +++ b/internal/osbuild/locale_stage.go @@ -0,0 +1,19 @@ +package osbuild + +// The LocaleStageOptions describes the image's locale. +// +// A locale is typically specified as language_[territory], where language +// is specified in ISO 639 and territory in ISO 3166. +type LocaleStageOptions struct { + Language string `json:"language"` +} + +func (LocaleStageOptions) isStageOptions() {} + +// NewLocaleStage creates a new Locale Stage object. +func NewLocaleStage(options *LocaleStageOptions) *Stage { + return &Stage{ + Name: "org.osbuild.locale", + Options: options, + } +} diff --git a/internal/osbuild/locale_stage_test.go b/internal/osbuild/locale_stage_test.go new file mode 100644 index 0000000..5d3a6b9 --- /dev/null +++ b/internal/osbuild/locale_stage_test.go @@ -0,0 +1,16 @@ +package osbuild + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNewLocaleStage(t *testing.T) { + expectedStage := &Stage{ + Name: "org.osbuild.locale", + Options: &LocaleStageOptions{}, + } + actualStage := NewLocaleStage(&LocaleStageOptions{}) + assert.Equal(t, expectedStage, actualStage) +} diff --git a/internal/osbuild/osbuild.go b/internal/osbuild/osbuild.go new file mode 100644 index 0000000..760ea7b --- /dev/null +++ b/internal/osbuild/osbuild.go @@ -0,0 +1,47 @@ +// Package osbuild provides primitives for representing and (un)marshalling +// OSBuild types. +package osbuild + +// A Manifest represents an OSBuild source and pipeline manifest +type Manifest struct { + Sources Sources `json:"sources"` + Pipeline Pipeline `json:"pipeline"` +} + +// A Pipeline represents an OSBuild pipeline +type Pipeline struct { + // The build environment which can run this pipeline + Build *Build `json:"build,omitempty"` + // Sequence of stages that produce the filesystem tree, which is the + // payload of the produced image. + Stages []*Stage `json:"stages,omitempty"` + // Assembler that assembles the filesystem tree into the target image. + Assembler *Assembler `json:"assembler,omitempty"` +} + +type Build struct { + // Pipeline describes how to create the build root + Pipeline *Pipeline `json:"pipeline"` + // The runner to use in this build root + Runner string `json:"runner"` +} + +// SetBuild sets the pipeline and runner for generating the build environment +// for a pipeline. +func (p *Pipeline) SetBuild(pipeline *Pipeline, runner string) { + p.Build = &Build{ + Pipeline: pipeline, + Runner: runner, + } +} + +// AddStage appends a stage to the list of stages of a pipeline. The stages +// will be executed in the order they are appended. +func (p *Pipeline) AddStage(stage *Stage) { + p.Stages = append(p.Stages, stage) +} + +// SetAssembler sets the assembler for a pipeline. +func (p *Pipeline) SetAssembler(assembler *Assembler) { + p.Assembler = assembler +} diff --git a/internal/osbuild/osbuild_test.go b/internal/osbuild/osbuild_test.go new file mode 100644 index 0000000..718315c --- /dev/null +++ b/internal/osbuild/osbuild_test.go @@ -0,0 +1,59 @@ +// Package osbuild provides primitives for representing and (un)marshalling +// OSBuild types. +package osbuild + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestPipeline_SetBuild(t *testing.T) { + expectedPipeline := &Pipeline{ + Build: &Build{ + Pipeline: &Pipeline{}, + Runner: "org.osbuild.fedora31", + }, + } + actualPipeline := &Pipeline{} + actualPipeline.SetBuild(&Pipeline{}, "org.osbuild.fedora31") + assert.Equal(t, expectedPipeline, actualPipeline) +} + +func TestPipeline_AddStage(t *testing.T) { + expectedPipeline := &Pipeline{ + Build: &Build{ + Pipeline: &Pipeline{}, + Runner: "org.osbuild.fedora31", + }, + Stages: []*Stage{ + { + Name: "org.osbuild.rpm", + }, + }, + } + actualPipeline := &Pipeline{ + Build: &Build{ + Pipeline: &Pipeline{}, + Runner: "org.osbuild.fedora31", + }, + } + actualPipeline.AddStage(&Stage{ + Name: "org.osbuild.rpm", + }) + assert.Equal(t, expectedPipeline, actualPipeline) + assert.Equal(t, 1, len(actualPipeline.Stages)) +} + +func TestPipeline_SetAssembler(t *testing.T) { + expectedPipeline := &Pipeline{ + Assembler: &Assembler{ + Name: "org.osbuild.testassembler", + }, + } + actualPipeline := &Pipeline{} + actualPipeline.SetAssembler(&Assembler{ + Name: "org.osbuild.testassembler", + }) + assert.Equal(t, expectedPipeline, actualPipeline) +} diff --git a/internal/osbuild/ostree_commit_assembler.go b/internal/osbuild/ostree_commit_assembler.go new file mode 100644 index 0000000..eabb28b --- /dev/null +++ b/internal/osbuild/ostree_commit_assembler.go @@ -0,0 +1,23 @@ +package osbuild + +// OSTreeCommitAssemblerOptions desrcibe how to assemble a tree into an OSTree commit. +type OSTreeCommitAssemblerOptions struct { + Ref string `json:"ref"` + Parent string `json:"parent,omitempty"` + Tar OSTreeCommitAssemblerTarOptions `json:"tar"` +} + +// OSTreeCommitAssemblerTarOptions desrcibes the output tarball +type OSTreeCommitAssemblerTarOptions struct { + Filename string `json:"filename"` +} + +func (OSTreeCommitAssemblerOptions) isAssemblerOptions() {} + +// NewOSTreeCommitAssembler creates a new OSTree Commit Assembler object. +func NewOSTreeCommitAssembler(options *OSTreeCommitAssemblerOptions) *Assembler { + return &Assembler{ + Name: "org.osbuild.ostree.commit", + Options: options, + } +} diff --git a/internal/osbuild/qemu_assembler.go b/internal/osbuild/qemu_assembler.go new file mode 100644 index 0000000..0e3292c --- /dev/null +++ b/internal/osbuild/qemu_assembler.go @@ -0,0 +1,48 @@ +package osbuild + +// QEMUAssemblerOptions desrcibe how to assemble a tree into an image using qemu. +// +// The assembler creates an image of the given size, adds a GRUB2 bootloader +// and if necessary and a partition table to it with the given PTUUID +// containing the indicated partitions. Finally, the image is converted into +// the target format and stored with the given filename. +type QEMUAssemblerOptions struct { + Bootloader *QEMUBootloader `json:"bootloader,omitempty"` + Format string `json:"format"` + Filename string `json:"filename"` + Size uint64 `json:"size"` + PTUUID string `json:"ptuuid"` + PTType string `json:"pttype"` + Partitions []QEMUPartition `json:"partitions"` +} + +type QEMUPartition struct { + Start uint64 `json:"start"` + Size uint64 `json:"size,omitempty"` + Type string `json:"type,omitempty"` + Bootable bool `json:"bootable,omitempty"` + UUID string `json:"uuid,omitempty"` + Filesystem *QEMUFilesystem `json:"filesystem,omitempty"` +} + +type QEMUFilesystem struct { + Type string `json:"type"` + UUID string `json:"uuid"` + Label string `json:"label,omitempty"` + Mountpoint string `json:"mountpoint"` +} + +type QEMUBootloader struct { + Type string `json:"type,omitempty"` + Platform string `json:"platform,omitempty"` +} + +func (QEMUAssemblerOptions) isAssemblerOptions() {} + +// NewQEMUAssembler creates a new QEMU Assembler object. +func NewQEMUAssembler(options *QEMUAssemblerOptions) *Assembler { + return &Assembler{ + Name: "org.osbuild.qemu", + Options: options, + } +} diff --git a/internal/osbuild/rawfs_assembler.go b/internal/osbuild/rawfs_assembler.go new file mode 100644 index 0000000..3d84038 --- /dev/null +++ b/internal/osbuild/rawfs_assembler.go @@ -0,0 +1,22 @@ +package osbuild + +import "github.com/google/uuid" + +// RawFSAssemblerOptions desrcibe how to assemble a tree into a raw filesystem +// image. +type RawFSAssemblerOptions struct { + Filename string `json:"filename"` + RootFilesystemUUID uuid.UUID `json:"root_fs_uuid"` + Size uint64 `json:"size"` + FilesystemType string `json:"fs_type,omitempty"` +} + +func (RawFSAssemblerOptions) isAssemblerOptions() {} + +// NewRawFSAssembler creates a new RawFS Assembler object. +func NewRawFSAssembler(options *RawFSAssemblerOptions) *Assembler { + return &Assembler{ + Name: "org.osbuild.rawfs", + Options: options, + } +} diff --git a/internal/osbuild/rpm_ostree_stage.go b/internal/osbuild/rpm_ostree_stage.go new file mode 100644 index 0000000..b5a9614 --- /dev/null +++ b/internal/osbuild/rpm_ostree_stage.go @@ -0,0 +1,16 @@ +package osbuild + +// The RPM-OSTree stage describes how to transform the imgae into an OSTree. +type RPMOSTreeStageOptions struct { + EtcGroupMembers []string `json:"etc_group_members,omitempty"` +} + +func (RPMOSTreeStageOptions) isStageOptions() {} + +// NewLocaleStage creates a new Locale Stage object. +func NewRPMOSTreeStage(options *RPMOSTreeStageOptions) *Stage { + return &Stage{ + Name: "org.osbuild.rpm-ostree", + Options: options, + } +} diff --git a/internal/osbuild/rpm_stage.go b/internal/osbuild/rpm_stage.go new file mode 100644 index 0000000..71cbcd2 --- /dev/null +++ b/internal/osbuild/rpm_stage.go @@ -0,0 +1,30 @@ +package osbuild + +// The RPMStageOptions describe the operations of the RPM stage. +// +// The RPM stage installs a given set of packages, identified by their +// content hash. This ensures that given a set of RPM stage options, +// the output is be reproducible, if the underlying tools are. +type RPMStageOptions struct { + GPGKeys []string `json:"gpgkeys,omitempty"` + Packages []RPMPackage `json:"packages"` +} + +// RPMPackage represents one RPM, as referenced by its content hash +// (checksum). The files source must indicate where to fetch the given +// RPM. If CheckGPG is `true` the RPM must be signed with one of the +// GPGKeys given in the RPMStageOptions. +type RPMPackage struct { + Checksum string `json:"checksum"` + CheckGPG bool `json:"check_gpg,omitempty"` +} + +func (RPMStageOptions) isStageOptions() {} + +// NewRPMStage creates a new RPM stage. +func NewRPMStage(options *RPMStageOptions) *Stage { + return &Stage{ + Name: "org.osbuild.rpm", + Options: options, + } +} diff --git a/internal/osbuild/rpm_stage_test.go b/internal/osbuild/rpm_stage_test.go new file mode 100644 index 0000000..caa4e90 --- /dev/null +++ b/internal/osbuild/rpm_stage_test.go @@ -0,0 +1,16 @@ +package osbuild + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNewRPMStage(t *testing.T) { + expectedStage := &Stage{ + Name: "org.osbuild.rpm", + Options: &RPMStageOptions{}, + } + actualStage := NewRPMStage(&RPMStageOptions{}) + assert.Equal(t, expectedStage, actualStage) +} diff --git a/internal/osbuild/script_stage.go b/internal/osbuild/script_stage.go new file mode 100644 index 0000000..4d2bc76 --- /dev/null +++ b/internal/osbuild/script_stage.go @@ -0,0 +1,24 @@ +package osbuild + +// The ScriptStageOptions specifies a custom script to run in the image +type ScriptStageOptions struct { + Script string `json:"script"` +} + +func (ScriptStageOptions) isStageOptions() {} + +// NewScriptStageOptions creates a new script stage options object, with +// the mandatory fields set. +func NewScriptStageOptions(script string) *ScriptStageOptions { + return &ScriptStageOptions{ + Script: script, + } +} + +// NewScriptStage creates a new Script Stage object. +func NewScriptStage(options *ScriptStageOptions) *Stage { + return &Stage{ + Name: "org.osbuild.script", + Options: options, + } +} diff --git a/internal/osbuild/script_stage_test.go b/internal/osbuild/script_stage_test.go new file mode 100644 index 0000000..1c181df --- /dev/null +++ b/internal/osbuild/script_stage_test.go @@ -0,0 +1,24 @@ +package osbuild + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNewScriptStageOptions(t *testing.T) { + expectedOptions := &ScriptStageOptions{ + Script: "/root/test.sh", + } + actualOptions := NewScriptStageOptions("/root/test.sh") + assert.Equal(t, expectedOptions, actualOptions) +} + +func TestNewScriptStage(t *testing.T) { + expectedStage := &Stage{ + Name: "org.osbuild.script", + Options: &ScriptStageOptions{}, + } + actualStage := NewScriptStage(&ScriptStageOptions{}) + assert.Equal(t, expectedStage, actualStage) +} diff --git a/internal/osbuild/selinux_stage.go b/internal/osbuild/selinux_stage.go new file mode 100644 index 0000000..1e75812 --- /dev/null +++ b/internal/osbuild/selinux_stage.go @@ -0,0 +1,28 @@ +package osbuild + +// The SELinuxStageOptions describe how to apply selinux labels. +// +// A file contexts configuration file is sepcified that describes +// the filesystem labels to apply to the image. +type SELinuxStageOptions struct { + FileContexts string `json:"file_contexts"` + Labels map[string]string `json:"labels,omitempty"` +} + +func (SELinuxStageOptions) isStageOptions() {} + +// NewSELinuxStageOptions creates a new SELinuxStaeOptions object, with +// the mandatory fields set. +func NewSELinuxStageOptions(fileContexts string) *SELinuxStageOptions { + return &SELinuxStageOptions{ + FileContexts: fileContexts, + } +} + +// NewSELinuxStage creates a new SELinux Stage object. +func NewSELinuxStage(options *SELinuxStageOptions) *Stage { + return &Stage{ + Name: "org.osbuild.selinux", + Options: options, + } +} diff --git a/internal/osbuild/selinux_stage_test.go b/internal/osbuild/selinux_stage_test.go new file mode 100644 index 0000000..9aaf562 --- /dev/null +++ b/internal/osbuild/selinux_stage_test.go @@ -0,0 +1,24 @@ +package osbuild + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNewSELinuxStageOptions(t *testing.T) { + expectedOptions := &SELinuxStageOptions{ + FileContexts: "etc/selinux/targeted/contexts/files/file_contexts", + } + actualOptions := NewSELinuxStageOptions("etc/selinux/targeted/contexts/files/file_contexts") + assert.Equal(t, expectedOptions, actualOptions) +} + +func TestNewSELinuxStage(t *testing.T) { + expectedStage := &Stage{ + Name: "org.osbuild.selinux", + Options: &SELinuxStageOptions{}, + } + actualStage := NewSELinuxStage(&SELinuxStageOptions{}) + assert.Equal(t, expectedStage, actualStage) +} diff --git a/internal/osbuild/source.go b/internal/osbuild/source.go new file mode 100644 index 0000000..ca76321 --- /dev/null +++ b/internal/osbuild/source.go @@ -0,0 +1,43 @@ +package osbuild + +import ( + "encoding/json" + "errors" +) + +// A Sources map contains all the sources made available to an osbuild run +type Sources map[string]Source + +// Source specifies the operations of a given source-type. +type Source interface { + isSource() +} + +type rawSources map[string]json.RawMessage + +// UnmarshalJSON unmarshals JSON into a Source object. Each type of source has +// a custom unmarshaller for its options, selected based on the source name. +func (sources *Sources) UnmarshalJSON(data []byte) error { + var rawSources rawSources + err := json.Unmarshal(data, &rawSources) + if err != nil { + return err + } + *sources = make(map[string]Source) + for name, rawSource := range rawSources { + var source Source + switch name { + case "org.osbuild.files": + source = new(FilesSource) + default: + return errors.New("unexpected suorce name" + name) + } + err = json.Unmarshal(rawSource, source) + if err != nil { + return err + } + (*sources)[name] = source + } + + return nil +} diff --git a/internal/osbuild/source_test.go b/internal/osbuild/source_test.go new file mode 100644 index 0000000..44306d4 --- /dev/null +++ b/internal/osbuild/source_test.go @@ -0,0 +1,100 @@ +package osbuild + +import ( + "bytes" + "encoding/json" + "reflect" + "testing" +) + +func TestSource_UnmarshalJSON(t *testing.T) { + type fields struct { + Name string + Source Source + } + type args struct { + data []byte + } + tests := []struct { + name string + fields fields + args args + wantErr bool + }{ + { + name: "invalid json", + args: args{ + data: []byte(`{"name":"org.osbuild.foo","options":{"bar":null}`), + }, + wantErr: true, + }, + { + name: "unknown source", + args: args{ + data: []byte(`{"name":"org.osbuild.foo","options":{"bar":null}}`), + }, + wantErr: true, + }, + { + name: "missing options", + args: args{ + data: []byte(`{"name":"org.osbuild.files"}`), + }, + wantErr: true, + }, + { + name: "missing name", + args: args{ + data: []byte(`{"foo":null,"options":{"bar":null}}`), + }, + wantErr: true, + }, + { + name: "files-empty", + fields: fields{ + Name: "org.osbuild.files", + Source: &FilesSource{URLs: map[string]FileSource{}}, + }, + args: args{ + data: []byte(`{"org.osbuild.files":{"urls":{}}}`), + }, + }, + { + name: "files", + fields: fields{ + Name: "org.osbuild.files", + Source: &FilesSource{URLs: map[string]FileSource{ + "checksum1": FileSource{URL: "url1"}, + "checksum2": FileSource{URL: "url2"}, + }}, + }, + args: args{ + data: []byte(`{"org.osbuild.files":{"urls":{"checksum1":{"url":"url1"},"checksum2":{"url":"url2"}}}}`), + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + sources := &Sources{ + tt.fields.Name: tt.fields.Source, + } + var gotSources Sources + if err := gotSources.UnmarshalJSON(tt.args.data); (err != nil) != tt.wantErr { + t.Errorf("Sources.UnmarshalJSON() error = %v, wantErr %v", err, tt.wantErr) + } + if tt.wantErr { + return + } + gotBytes, err := json.Marshal(sources) + if err != nil { + t.Errorf("Could not marshal source: %v", err) + } + if !bytes.Equal(gotBytes, tt.args.data) { + t.Errorf("Expected '%v', got '%v'", string(tt.args.data), string(gotBytes)) + } + if !reflect.DeepEqual(&gotSources, sources) { + t.Errorf("got '%v', expected '%v'", &gotSources, sources) + } + }) + } +} diff --git a/internal/osbuild/stage.go b/internal/osbuild/stage.go new file mode 100644 index 0000000..dd26895 --- /dev/null +++ b/internal/osbuild/stage.go @@ -0,0 +1,83 @@ +package osbuild + +import ( + "encoding/json" + "fmt" +) + +// A Stage transforms a filesystem tree. +type Stage struct { + // Well-known name in reverse domain-name notation, uniquely identifying + // the stage type. + Name string `json:"name"` + // Stage-type specific options fully determining the operations of the + // stage. + Options StageOptions `json:"options"` +} + +// StageOptions specify the operations of a given stage-type. +type StageOptions interface { + isStageOptions() +} + +type rawStage struct { + Name string `json:"name"` + Options json.RawMessage `json:"options"` +} + +// UnmarshalJSON unmarshals JSON into a Stage object. Each type of stage has +// a custom unmarshaller for its options, selected based on the stage name. +func (stage *Stage) UnmarshalJSON(data []byte) error { + var rawStage rawStage + err := json.Unmarshal(data, &rawStage) + if err != nil { + return err + } + var options StageOptions + switch rawStage.Name { + case "org.osbuild.fix-bls": + // TODO: verify that we can unmarshall this also if "options" is omitted + options = new(FixBLSStageOptions) + case "org.osbuild.fstab": + options = new(FSTabStageOptions) + case "org.osbuild.grub2": + options = new(GRUB2StageOptions) + case "org.osbuild.locale": + options = new(LocaleStageOptions) + case "org.osbuild.selinux": + options = new(SELinuxStageOptions) + case "org.osbuild.hostname": + options = new(HostnameStageOptions) + case "org.osbuild.users": + options = new(UsersStageOptions) + case "org.osbuild.groups": + options = new(GroupsStageOptions) + case "org.osbuild.timezone": + options = new(TimezoneStageOptions) + case "org.osbuild.chrony": + options = new(ChronyStageOptions) + case "org.osbuild.keymap": + options = new(KeymapStageOptions) + case "org.osbuild.firewall": + options = new(FirewallStageOptions) + case "org.osbuild.rpm": + options = new(RPMStageOptions) + case "org.osbuild.rpm-ostree": + options = new(RPMOSTreeStageOptions) + case "org.osbuild.systemd": + options = new(SystemdStageOptions) + case "org.osbuild.script": + options = new(ScriptStageOptions) + default: + return fmt.Errorf("unexpected stage name: %s", rawStage.Name) + } + err = json.Unmarshal(rawStage.Options, options) + if err != nil { + return err + } + + stage.Name = rawStage.Name + stage.Options = options + + return nil +} diff --git a/internal/osbuild/stage_test.go b/internal/osbuild/stage_test.go new file mode 100644 index 0000000..35463aa --- /dev/null +++ b/internal/osbuild/stage_test.go @@ -0,0 +1,308 @@ +package osbuild + +import ( + "bytes" + "encoding/json" + "reflect" + "testing" + + "github.com/google/uuid" +) + +func TestStage_UnmarshalJSON(t *testing.T) { + nullUUID := uuid.MustParse("00000000-0000-0000-0000-000000000000") + type fields struct { + Name string + Options StageOptions + } + type args struct { + data []byte + } + tests := []struct { + name string + fields fields + args args + wantErr bool + }{ + { + name: "invalid json", + args: args{ + data: []byte(`{"name":"org.osbuild.foo","options":{"bar":null}`), + }, + wantErr: true, + }, + { + name: "unknown stage", + args: args{ + data: []byte(`{"name":"org.osbuild.foo","options":{"bar":null}}`), + }, + wantErr: true, + }, + { + name: "missing options", + args: args{ + data: []byte(`{"name":"org.osbuild.locale"}`), + }, + wantErr: true, + }, + { + name: "missing name", + args: args{ + data: []byte(`{"foo":null,"options":{"bar":null}}`), + }, + wantErr: true, + }, + { + name: "chrony", + fields: fields{ + Name: "org.osbuild.chrony", + Options: &ChronyStageOptions{}, + }, + args: args{ + data: []byte(`{"name":"org.osbuild.chrony","options":{"timeservers":null}}`), + }, + }, + { + name: "firewall", + fields: fields{ + Name: "org.osbuild.firewall", + Options: &FirewallStageOptions{}, + }, + args: args{ + data: []byte(`{"name":"org.osbuild.firewall","options":{}}`), + }, + }, + { + name: "fix-bls", + fields: fields{ + Name: "org.osbuild.fix-bls", + Options: &FixBLSStageOptions{}, + }, + args: args{ + data: []byte(`{"name":"org.osbuild.fix-bls","options":{}}`), + }, + }, + { + name: "fstab", + fields: fields{ + Name: "org.osbuild.fstab", + Options: &FSTabStageOptions{}, + }, + args: args{ + data: []byte(`{"name":"org.osbuild.fstab","options":{"filesystems":null}}`), + }, + }, + { + name: "groups", + fields: fields{ + Name: "org.osbuild.groups", + Options: &GroupsStageOptions{}, + }, + args: args{ + data: []byte(`{"name":"org.osbuild.groups","options":{"groups":null}}`), + }, + }, + { + name: "grub2", + fields: fields{ + Name: "org.osbuild.grub2", + Options: &GRUB2StageOptions{ + RootFilesystemUUID: nullUUID, + }, + }, + args: args{ + data: []byte(`{"name":"org.osbuild.grub2","options":{"root_fs_uuid":"00000000-0000-0000-0000-000000000000"}}`), + }, + }, + { + name: "grub2-uefi", + fields: fields{ + Name: "org.osbuild.grub2", + Options: &GRUB2StageOptions{ + RootFilesystemUUID: nullUUID, + UEFI: &GRUB2UEFI{ + Vendor: "vendor", + }, + }, + }, + args: args{ + data: []byte(`{"name":"org.osbuild.grub2","options":{"root_fs_uuid":"00000000-0000-0000-0000-000000000000","uefi":{"vendor":"vendor"}}}`), + }, + }, + { + name: "grub2-separate-boot", + fields: fields{ + Name: "org.osbuild.grub2", + Options: &GRUB2StageOptions{ + RootFilesystemUUID: nullUUID, + BootFilesystemUUID: &nullUUID, + }, + }, + args: args{ + data: []byte(`{"name":"org.osbuild.grub2","options":{"root_fs_uuid":"00000000-0000-0000-0000-000000000000","boot_fs_uuid":"00000000-0000-0000-0000-000000000000"}}`), + }, + }, + { + name: "hostname", + fields: fields{ + Name: "org.osbuild.hostname", + Options: &HostnameStageOptions{}, + }, + args: args{ + data: []byte(`{"name":"org.osbuild.hostname","options":{"hostname":""}}`), + }, + }, + { + name: "keymap", + fields: fields{ + Name: "org.osbuild.keymap", + Options: &KeymapStageOptions{}, + }, + args: args{ + data: []byte(`{"name":"org.osbuild.keymap","options":{"keymap":""}}`), + }, + }, + { + name: "locale", + fields: fields{ + Name: "org.osbuild.locale", + Options: &LocaleStageOptions{}, + }, + args: args{ + data: []byte(`{"name":"org.osbuild.locale","options":{"language":""}}`), + }, + }, + { + name: "rpm-empty", + fields: fields{ + Name: "org.osbuild.rpm", + Options: &RPMStageOptions{}, + }, + args: args{ + data: []byte(`{"name":"org.osbuild.rpm","options":{"packages":null}}`), + }, + }, + { + name: "rpm", + fields: fields{ + Name: "org.osbuild.rpm", + Options: &RPMStageOptions{ + GPGKeys: []string{"key1", "key2"}, + Packages: []RPMPackage{ + { + Checksum: "checksum1", + }, + { + Checksum: "checksum2", + CheckGPG: true, + }, + }, + }, + }, + args: args{ + data: []byte(`{"name":"org.osbuild.rpm","options":{"gpgkeys":["key1","key2"],"packages":[{"checksum":"checksum1"},{"checksum":"checksum2","check_gpg":true}]}}`), + }, + }, + { + name: "rpm-ostree", + fields: fields{ + Name: "org.osbuild.rpm-ostree", + Options: &RPMOSTreeStageOptions{ + EtcGroupMembers: []string{ + "wheel", + }, + }, + }, + args: args{ + data: []byte(`{"name":"org.osbuild.rpm-ostree","options":{"etc_group_members":["wheel"]}}`), + }, + }, + { + name: "script", + fields: fields{ + Name: "org.osbuild.script", + Options: &ScriptStageOptions{}, + }, + args: args{ + data: []byte(`{"name":"org.osbuild.script","options":{"script":""}}`), + }, + }, + { + name: "selinux", + fields: fields{ + Name: "org.osbuild.selinux", + Options: &SELinuxStageOptions{}, + }, + args: args{ + data: []byte(`{"name":"org.osbuild.selinux","options":{"file_contexts":""}}`), + }, + }, + { + name: "systemd", + fields: fields{ + Name: "org.osbuild.systemd", + Options: &SystemdStageOptions{}, + }, + args: args{ + data: []byte(`{"name":"org.osbuild.systemd","options":{}}`), + }, + }, + { + name: "systemd-enabled", + fields: fields{ + Name: "org.osbuild.systemd", + Options: &SystemdStageOptions{ + EnabledServices: []string{"foo.service"}, + }, + }, + args: args{ + data: []byte(`{"name":"org.osbuild.systemd","options":{"enabled_services":["foo.service"]}}`), + }, + }, + { + name: "timezone", + fields: fields{ + Name: "org.osbuild.timezone", + Options: &TimezoneStageOptions{}, + }, + args: args{ + data: []byte(`{"name":"org.osbuild.timezone","options":{"zone":""}}`), + }, + }, + { + name: "users", + fields: fields{ + Name: "org.osbuild.users", + Options: &UsersStageOptions{}, + }, + args: args{ + data: []byte(`{"name":"org.osbuild.users","options":{"users":null}}`), + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + stage := &Stage{ + Name: tt.fields.Name, + Options: tt.fields.Options, + } + var gotStage Stage + if err := gotStage.UnmarshalJSON(tt.args.data); (err != nil) != tt.wantErr { + t.Errorf("Stage.UnmarshalJSON() error = %v, wantErr %v", err, tt.wantErr) + } + if tt.wantErr { + return + } + gotBytes, err := json.Marshal(stage) + if err != nil { + t.Errorf("Could not marshal stage: %v", err) + } + if !bytes.Equal(gotBytes, tt.args.data) { + t.Errorf("Expected `%v`, got `%v`", string(tt.args.data), string(gotBytes)) + } + if !reflect.DeepEqual(&gotStage, stage) { + t.Errorf("got {%v, %v}, expected {%v, %v}", gotStage.Name, gotStage.Options, stage.Name, stage.Options) + } + }) + } +} diff --git a/internal/osbuild/systemd_stage.go b/internal/osbuild/systemd_stage.go new file mode 100644 index 0000000..b0c6043 --- /dev/null +++ b/internal/osbuild/systemd_stage.go @@ -0,0 +1,16 @@ +package osbuild + +type SystemdStageOptions struct { + EnabledServices []string `json:"enabled_services,omitempty"` + DisabledServices []string `json:"disabled_services,omitempty"` + DefaultTarget string `json:"default_target,omitempty"` +} + +func (SystemdStageOptions) isStageOptions() {} + +func NewSystemdStage(options *SystemdStageOptions) *Stage { + return &Stage{ + Name: "org.osbuild.systemd", + Options: options, + } +} diff --git a/internal/osbuild/systemd_stage_test.go b/internal/osbuild/systemd_stage_test.go new file mode 100644 index 0000000..7d7fddb --- /dev/null +++ b/internal/osbuild/systemd_stage_test.go @@ -0,0 +1,16 @@ +package osbuild + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNewSystemdStage(t *testing.T) { + expectedStage := &Stage{ + Name: "org.osbuild.systemd", + Options: &SystemdStageOptions{}, + } + actualStage := NewSystemdStage(&SystemdStageOptions{}) + assert.Equal(t, expectedStage, actualStage) +} diff --git a/internal/osbuild/tar_assembler.go b/internal/osbuild/tar_assembler.go new file mode 100644 index 0000000..527185d --- /dev/null +++ b/internal/osbuild/tar_assembler.go @@ -0,0 +1,20 @@ +package osbuild + +// TarAssemblerOptions desrcibe how to assemble a tree into a tar ball. +// +// The assembler tars and optionally compresses the tree using the provided +// compression type, and stores the output with the given filename. +type TarAssemblerOptions struct { + Filename string `json:"filename"` + Compression string `json:"compression,omitempty"` +} + +func (TarAssemblerOptions) isAssemblerOptions() {} + +// NewTarAssembler creates a new Tar Assembler object. +func NewTarAssembler(options *TarAssemblerOptions) *Assembler { + return &Assembler{ + Name: "org.osbuild.tar", + Options: options, + } +} diff --git a/internal/osbuild/timezone_stage.go b/internal/osbuild/timezone_stage.go new file mode 100644 index 0000000..130ac5f --- /dev/null +++ b/internal/osbuild/timezone_stage.go @@ -0,0 +1,14 @@ +package osbuild + +type TimezoneStageOptions struct { + Zone string `json:"zone"` +} + +func (TimezoneStageOptions) isStageOptions() {} + +func NewTimezoneStage(options *TimezoneStageOptions) *Stage { + return &Stage{ + Name: "org.osbuild.timezone", + Options: options, + } +} diff --git a/internal/osbuild/timezone_stage_test.go b/internal/osbuild/timezone_stage_test.go new file mode 100644 index 0000000..350705c --- /dev/null +++ b/internal/osbuild/timezone_stage_test.go @@ -0,0 +1,16 @@ +package osbuild + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNewTimezoneStage(t *testing.T) { + expectedStage := &Stage{ + Name: "org.osbuild.timezone", + Options: &TimezoneStageOptions{}, + } + actualStage := NewTimezoneStage(&TimezoneStageOptions{}) + assert.Equal(t, expectedStage, actualStage) +} diff --git a/internal/osbuild/users_stage.go b/internal/osbuild/users_stage.go new file mode 100644 index 0000000..982915a --- /dev/null +++ b/internal/osbuild/users_stage.go @@ -0,0 +1,25 @@ +package osbuild + +type UsersStageOptions struct { + Users map[string]UsersStageOptionsUser `json:"users"` +} + +func (UsersStageOptions) isStageOptions() {} + +type UsersStageOptionsUser struct { + UID *int `json:"uid,omitempty"` + GID *int `json:"gid,omitempty"` + Groups []string `json:"groups,omitempty"` + Description *string `json:"description,omitempty"` + Home *string `json:"home,omitempty"` + Shell *string `json:"shell,omitempty"` + Password *string `json:"password,omitempty"` + Key *string `json:"key,omitempty"` +} + +func NewUsersStage(options *UsersStageOptions) *Stage { + return &Stage{ + Name: "org.osbuild.users", + Options: options, + } +} diff --git a/internal/osbuild/users_stage_test.go b/internal/osbuild/users_stage_test.go new file mode 100644 index 0000000..1b24b47 --- /dev/null +++ b/internal/osbuild/users_stage_test.go @@ -0,0 +1,16 @@ +package osbuild + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNewUsersStage(t *testing.T) { + expectedStage := &Stage{ + Name: "org.osbuild.users", + Options: &UsersStageOptions{}, + } + actualStage := NewUsersStage(&UsersStageOptions{}) + assert.Equal(t, expectedStage, actualStage) +} diff --git a/internal/osbuild/zipl_stage.go b/internal/osbuild/zipl_stage.go new file mode 100644 index 0000000..6b2f52f --- /dev/null +++ b/internal/osbuild/zipl_stage.go @@ -0,0 +1,25 @@ +package osbuild + +// The ZiplStageOptions describe how to create zipl stage +// +// The only configuration option available is a boot timeout and it is optional +type ZiplStageOptions struct { + Timeout int `json:"timeout,omitempty"` +} + +func (ZiplStageOptions) isStageOptions() {} + +// NewZiplStageOptions creates a new ZiplStageOptions object with no timeout +func NewZiplStageOptions() *ZiplStageOptions { + return &ZiplStageOptions{ + Timeout: 0, + } +} + +// NewZiplStage creates a new zipl Stage object. +func NewZiplStage(options *ZiplStageOptions) *Stage { + return &Stage{ + Name: "org.osbuild.zipl", + Options: options, + } +} diff --git a/internal/osbuild/zipl_stage_test.go b/internal/osbuild/zipl_stage_test.go new file mode 100644 index 0000000..68bb096 --- /dev/null +++ b/internal/osbuild/zipl_stage_test.go @@ -0,0 +1,24 @@ +package osbuild + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNewZiplStageOptions(t *testing.T) { + expectedOptions := &ZiplStageOptions{ + Timeout: 0, + } + actualOptions := NewZiplStageOptions() + assert.Equal(t, expectedOptions, actualOptions) +} + +func TestNewZiplStage(t *testing.T) { + expectedStage := &Stage{ + Name: "org.osbuild.zipl", + Options: &ZiplStageOptions{}, + } + actualStage := NewZiplStage(&ZiplStageOptions{}) + assert.Equal(t, expectedStage, actualStage) +} diff --git a/internal/rpmmd/repository.go b/internal/rpmmd/repository.go new file mode 100644 index 0000000..a8a895c --- /dev/null +++ b/internal/rpmmd/repository.go @@ -0,0 +1,484 @@ +package rpmmd + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "os" + "os/exec" + "path/filepath" + "sort" + "strconv" + "strings" + "time" + + "github.com/gobwas/glob" +) + +type repository struct { + Name string `json:"name"` + BaseURL string `json:"baseurl,omitempty"` + Metalink string `json:"metalink,omitempty"` + MirrorList string `json:"mirrorlist,omitempty"` + GPGKey string `json:"gpgkey,omitempty"` + CheckGPG bool `json:"check_gpg,omitempty"` + RHSM bool `json:"rhsm,omitempty"` + MetadataExpire string `json:"metadata_expire,omitempty"` +} + +type dnfRepoConfig struct { + ID string `json:"id"` + BaseURL string `json:"baseurl,omitempty"` + Metalink string `json:"metalink,omitempty"` + MirrorList string `json:"mirrorlist,omitempty"` + GPGKey string `json:"gpgkey,omitempty"` + IgnoreSSL bool `json:"ignoressl"` + SSLCACert string `json:"sslcacert,omitempty"` + SSLClientKey string `json:"sslclientkey,omitempty"` + SSLClientCert string `json:"sslclientcert,omitempty"` + MetadataExpire string `json:"metadata_expire,omitempty"` +} + +type RepoConfig struct { + Name string + BaseURL string + Metalink string + MirrorList string + GPGKey string + CheckGPG bool + IgnoreSSL bool + MetadataExpire string + RHSM bool +} + +type PackageList []Package + +type Package struct { + Name string + Summary string + Description string + URL string + Epoch uint + Version string + Release string + Arch string + BuildTime time.Time + License string +} + +func (pkg Package) ToPackageBuild() PackageBuild { + // Convert the time to the API time format + return PackageBuild{ + Arch: pkg.Arch, + BuildTime: pkg.BuildTime.Format("2006-01-02T15:04:05"), + Epoch: pkg.Epoch, + Release: pkg.Release, + Changelog: "CHANGELOG_NEEDED", // the same value as lorax-composer puts here + BuildConfigRef: "BUILD_CONFIG_REF", // the same value as lorax-composer puts here + BuildEnvRef: "BUILD_ENV_REF", // the same value as lorax-composer puts here + Source: PackageSource{ + License: pkg.License, + Version: pkg.Version, + SourceRef: "SOURCE_REF", // the same value as lorax-composer puts here + }, + } +} + +func (pkg Package) ToPackageInfo() PackageInfo { + return PackageInfo{ + Name: pkg.Name, + Summary: pkg.Summary, + Description: pkg.Description, + Homepage: pkg.URL, + UpstreamVCS: "UPSTREAM_VCS", // the same value as lorax-composer puts here + Builds: []PackageBuild{pkg.ToPackageBuild()}, + Dependencies: nil, + } +} + +// TODO: the public API of this package should not be reused for serialization. +type PackageSpec struct { + Name string `json:"name"` + Epoch uint `json:"epoch"` + Version string `json:"version,omitempty"` + Release string `json:"release,omitempty"` + Arch string `json:"arch,omitempty"` + RemoteLocation string `json:"remote_location,omitempty"` + Checksum string `json:"checksum,omitempty"` + Secrets string `json:"secrets,omitempty"` + CheckGPG bool `json:"check_gpg,omitempty"` +} + +type dnfPackageSpec struct { + Name string `json:"name"` + Epoch uint `json:"epoch"` + Version string `json:"version,omitempty"` + Release string `json:"release,omitempty"` + Arch string `json:"arch,omitempty"` + RepoID string `json:"repo_id,omitempty"` + Path string `json:"path,omitempty"` + RemoteLocation string `json:"remote_location,omitempty"` + Checksum string `json:"checksum,omitempty"` + Secrets string `json:"secrets,omitempty"` +} + +type PackageSource struct { + License string `json:"license"` + Version string `json:"version"` + SourceRef string `json:"source_ref"` + Metadata struct{} `json:"metadata"` // it's just an empty struct in lorax-composer +} + +type PackageBuild struct { + Arch string `json:"arch"` + BuildTime string `json:"build_time"` + Epoch uint `json:"epoch"` + Release string `json:"release"` + Source PackageSource `json:"source"` + Changelog string `json:"changelog"` + BuildConfigRef string `json:"build_config_ref"` + BuildEnvRef string `json:"build_env_ref"` + Metadata struct{} `json:"metadata"` // it's just an empty struct in lorax-composer +} + +type PackageInfo struct { + Name string `json:"name"` + Summary string `json:"summary"` + Description string `json:"description"` + Homepage string `json:"homepage"` + UpstreamVCS string `json:"upstream_vcs"` + Builds []PackageBuild `json:"builds"` + Dependencies []PackageSpec `json:"dependencies,omitempty"` +} + +type RPMMD interface { + // FetchMetadata returns all metadata about the repositories we use in the code. Specifically it is a + // list of packages and dictionary of checksums of the repositories. + FetchMetadata(repos []RepoConfig, modulePlatformID string, arch string) (PackageList, map[string]string, error) + + // Depsolve takes a list of required content (specs), explicitly unwanted content (excludeSpecs), list + // or repositories, and platform ID for modularity. It returns a list of all packages (with solved + // dependencies) that will be installed into the system. + Depsolve(specs, excludeSpecs []string, repos []RepoConfig, modulePlatformID, arch string) ([]PackageSpec, map[string]string, error) +} + +type DNFError struct { + Kind string `json:"kind"` + Reason string `json:"reason"` +} + +func (err *DNFError) Error() string { + return fmt.Sprintf("DNF error occured: %s: %s", err.Kind, err.Reason) +} + +type RepositoryError struct { + msg string +} + +func (re *RepositoryError) Error() string { + return re.msg +} + +type RHSMSecrets struct { + SSLCACert string `json:"sslcacert,omitempty"` + SSLClientKey string `json:"sslclientkey,omitempty"` + SSLClientCert string `json:"sslclientcert,omitempty"` +} + +func getRHSMSecrets() *RHSMSecrets { + keys, err := filepath.Glob("/etc/pki/entitlement/*-key.pem") + if err != nil { + return nil + } + for _, key := range keys { + cert := strings.TrimSuffix(key, "-key.pem") + ".pem" + if _, err := os.Stat(cert); err == nil { + return &RHSMSecrets{ + SSLCACert: "/etc/rhsm/ca/redhat-uep.pem", + SSLClientKey: key, + SSLClientCert: cert, + } + } + } + return nil +} + +func LoadRepositories(confPaths []string, distro string) (map[string][]RepoConfig, error) { + var f *os.File + var err error + path := "/repositories/" + distro + ".json" + + for _, confPath := range confPaths { + f, err = os.Open(confPath + path) + if err == nil { + break + } else if !os.IsNotExist(err) { + return nil, err + } + } + if err != nil { + return nil, &RepositoryError{"LoadRepositories failed: none of the provided paths contain distro configuration"} + } + defer f.Close() + + var reposMap map[string][]repository + repoConfigs := make(map[string][]RepoConfig) + + err = json.NewDecoder(f).Decode(&reposMap) + if err != nil { + return nil, err + } + + for arch, repos := range reposMap { + for _, repo := range repos { + config := RepoConfig{ + Name: repo.Name, + BaseURL: repo.BaseURL, + Metalink: repo.Metalink, + MirrorList: repo.MirrorList, + GPGKey: repo.GPGKey, + CheckGPG: repo.CheckGPG, + RHSM: repo.RHSM, + MetadataExpire: repo.MetadataExpire, + } + + repoConfigs[arch] = append(repoConfigs[arch], config) + } + } + return repoConfigs, nil +} + +func runDNF(dnfJsonPath string, command string, arguments interface{}, result interface{}) error { + var call = struct { + Command string `json:"command"` + Arguments interface{} `json:"arguments,omitempty"` + }{ + command, + arguments, + } + + cmd := exec.Command(dnfJsonPath) + + stdin, err := cmd.StdinPipe() + if err != nil { + return err + } + + cmd.Stderr = os.Stderr + stdout, err := cmd.StdoutPipe() + if err != nil { + return err + } + + err = cmd.Start() + if err != nil { + return err + } + + err = json.NewEncoder(stdin).Encode(call) + if err != nil { + return err + } + stdin.Close() + + output, err := ioutil.ReadAll(stdout) + if err != nil { + return err + } + + err = cmd.Wait() + + const DnfErrorExitCode = 10 + if runError, ok := err.(*exec.ExitError); ok && runError.ExitCode() == DnfErrorExitCode { + var dnfError DNFError + err = json.Unmarshal(output, &dnfError) + if err != nil { + return err + } + + return &dnfError + } + + err = json.Unmarshal(output, result) + + if err != nil { + return err + } + + return nil +} + +type rpmmdImpl struct { + CacheDir string + RHSM *RHSMSecrets + dnfJsonPath string +} + +func NewRPMMD(cacheDir, dnfJsonPath string) RPMMD { + return &rpmmdImpl{ + CacheDir: cacheDir, + RHSM: getRHSMSecrets(), + dnfJsonPath: dnfJsonPath, + } +} + +func (repo RepoConfig) toDNFRepoConfig(rpmmd *rpmmdImpl, i int) (dnfRepoConfig, error) { + id := strconv.Itoa(i) + dnfRepo := dnfRepoConfig{ + ID: id, + BaseURL: repo.BaseURL, + Metalink: repo.Metalink, + MirrorList: repo.MirrorList, + GPGKey: repo.GPGKey, + IgnoreSSL: repo.IgnoreSSL, + MetadataExpire: repo.MetadataExpire, + } + if repo.RHSM { + if rpmmd.RHSM == nil { + return dnfRepoConfig{}, fmt.Errorf("RHSM secrets not found on host") + } + dnfRepo.SSLCACert = rpmmd.RHSM.SSLCACert + dnfRepo.SSLClientKey = rpmmd.RHSM.SSLClientKey + dnfRepo.SSLClientCert = rpmmd.RHSM.SSLClientCert + } + return dnfRepo, nil +} + +func (r *rpmmdImpl) FetchMetadata(repos []RepoConfig, modulePlatformID string, arch string) (PackageList, map[string]string, error) { + var dnfRepoConfigs []dnfRepoConfig + for i, repo := range repos { + dnfRepo, err := repo.toDNFRepoConfig(r, i) + if err != nil { + return nil, nil, err + } + dnfRepoConfigs = append(dnfRepoConfigs, dnfRepo) + } + + var arguments = struct { + Repos []dnfRepoConfig `json:"repos"` + CacheDir string `json:"cachedir"` + ModulePlatformID string `json:"module_platform_id"` + Arch string `json:"arch"` + }{dnfRepoConfigs, r.CacheDir, modulePlatformID, arch} + var reply struct { + Checksums map[string]string `json:"checksums"` + Packages PackageList `json:"packages"` + } + + err := runDNF(r.dnfJsonPath, "dump", arguments, &reply) + + sort.Slice(reply.Packages, func(i, j int) bool { + return reply.Packages[i].Name < reply.Packages[j].Name + }) + checksums := make(map[string]string) + for i, repo := range repos { + checksums[repo.Name] = reply.Checksums[strconv.Itoa(i)] + } + return reply.Packages, checksums, err +} + +func (r *rpmmdImpl) Depsolve(specs, excludeSpecs []string, repos []RepoConfig, modulePlatformID, arch string) ([]PackageSpec, map[string]string, error) { + var dnfRepoConfigs []dnfRepoConfig + + for i, repo := range repos { + dnfRepo, err := repo.toDNFRepoConfig(r, i) + if err != nil { + return nil, nil, err + } + dnfRepoConfigs = append(dnfRepoConfigs, dnfRepo) + } + + var arguments = struct { + PackageSpecs []string `json:"package-specs"` + ExcludSpecs []string `json:"exclude-specs"` + Repos []dnfRepoConfig `json:"repos"` + CacheDir string `json:"cachedir"` + ModulePlatformID string `json:"module_platform_id"` + Arch string `json:"arch"` + }{specs, excludeSpecs, dnfRepoConfigs, r.CacheDir, modulePlatformID, arch} + var reply struct { + Checksums map[string]string `json:"checksums"` + Dependencies []dnfPackageSpec `json:"dependencies"` + } + err := runDNF(r.dnfJsonPath, "depsolve", arguments, &reply) + + dependencies := make([]PackageSpec, len(reply.Dependencies)) + for i, pack := range reply.Dependencies { + id, err := strconv.Atoi(pack.RepoID) + if err != nil { + panic(err) + } + repo := repos[id] + dep := reply.Dependencies[i] + dependencies[i].Name = dep.Name + dependencies[i].Epoch = dep.Epoch + dependencies[i].Version = dep.Version + dependencies[i].Release = dep.Release + dependencies[i].Arch = dep.Arch + dependencies[i].RemoteLocation = dep.RemoteLocation + dependencies[i].Checksum = dep.Checksum + dependencies[i].CheckGPG = repo.CheckGPG + if repo.RHSM { + dependencies[i].Secrets = "org.osbuild.rhsm" + } + } + + return dependencies, reply.Checksums, err +} + +func (packages PackageList) Search(globPatterns ...string) (PackageList, error) { + var globs []glob.Glob + + for _, globPattern := range globPatterns { + g, err := glob.Compile(globPattern) + if err != nil { + return nil, err + } + + globs = append(globs, g) + } + + var foundPackages PackageList + + for _, pkg := range packages { + for _, g := range globs { + if g.Match(pkg.Name) { + foundPackages = append(foundPackages, pkg) + break + } + } + } + + sort.Slice(packages, func(i, j int) bool { + return packages[i].Name < packages[j].Name + }) + + return foundPackages, nil +} + +func (packages PackageList) ToPackageInfos() []PackageInfo { + resultsNames := make(map[string]int) + var results []PackageInfo + + for _, pkg := range packages { + if index, ok := resultsNames[pkg.Name]; ok { + foundPkg := &results[index] + + foundPkg.Builds = append(foundPkg.Builds, pkg.ToPackageBuild()) + } else { + newIndex := len(results) + resultsNames[pkg.Name] = newIndex + + packageInfo := pkg.ToPackageInfo() + + results = append(results, packageInfo) + } + } + + return results +} + +func (pkg *PackageInfo) FillDependencies(rpmmd RPMMD, repos []RepoConfig, modulePlatformID string, arch string) (err error) { + pkg.Dependencies, _, err = rpmmd.Depsolve([]string{pkg.Name}, nil, repos, modulePlatformID, arch) + return +} diff --git a/internal/store/compose.go b/internal/store/compose.go new file mode 100644 index 0000000..494a49c --- /dev/null +++ b/internal/store/compose.go @@ -0,0 +1,90 @@ +package store + +import ( + "time" + + "github.com/google/uuid" + "github.com/osbuild/osbuild-composer/internal/blueprint" + "github.com/osbuild/osbuild-composer/internal/common" + "github.com/osbuild/osbuild-composer/internal/distro" + "github.com/osbuild/osbuild-composer/internal/target" +) + +type StateTransitionError struct { + message string +} + +func (ste *StateTransitionError) Error() string { + return ste.message +} + +// ImageBuild represents a single image build inside a compose +type ImageBuild struct { + ID int + ImageType distro.ImageType + Manifest distro.Manifest + Targets []*target.Target + JobCreated time.Time + JobStarted time.Time + JobFinished time.Time + Size uint64 + JobID uuid.UUID + // Kept for backwards compatibility. Image builds which were done + // before the move to the job queue use this to store whether they + // finished successfully. + QueueStatus common.ImageBuildState +} + +// DeepCopy creates a copy of the ImageBuild structure +func (ib *ImageBuild) DeepCopy() ImageBuild { + var newTargets []*target.Target + for _, t := range ib.Targets { + newTarget := *t + newTargets = append(newTargets, &newTarget) + } + // Create new image build struct + return ImageBuild{ + ID: ib.ID, + QueueStatus: ib.QueueStatus, + ImageType: ib.ImageType, + Manifest: ib.Manifest, + Targets: newTargets, + JobCreated: ib.JobCreated, + JobStarted: ib.JobStarted, + JobFinished: ib.JobFinished, + Size: ib.Size, + JobID: ib.JobID, + } +} + +func (ib *ImageBuild) GetLocalTargetOptions() *target.LocalTargetOptions { + for _, t := range ib.Targets { + switch options := t.Options.(type) { + case *target.LocalTargetOptions: + return options + } + } + + return nil +} + +// A Compose represent the task of building a set of images from a single blueprint. +// It contains all the information necessary to generate the inputs for the job, as +// well as the job's state. +type Compose struct { + Blueprint *blueprint.Blueprint + ImageBuild ImageBuild +} + +// DeepCopy creates a copy of the Compose structure +func (c *Compose) DeepCopy() Compose { + var newBpPtr *blueprint.Blueprint = nil + if c.Blueprint != nil { + bpCopy := *c.Blueprint + newBpPtr = &bpCopy + } + return Compose{ + Blueprint: newBpPtr, + ImageBuild: c.ImageBuild.DeepCopy(), + } +} diff --git a/internal/store/fixtures.go b/internal/store/fixtures.go new file mode 100644 index 0000000..0fc5072 --- /dev/null +++ b/internal/store/fixtures.go @@ -0,0 +1,230 @@ +package store + +import ( + "time" + + "github.com/google/uuid" + "github.com/osbuild/osbuild-composer/internal/blueprint" + "github.com/osbuild/osbuild-composer/internal/common" + "github.com/osbuild/osbuild-composer/internal/distro" + "github.com/osbuild/osbuild-composer/internal/distro/fedoratest" + "github.com/osbuild/osbuild-composer/internal/target" +) + +func FixtureBase() *Store { + var bName = "test" + var b = blueprint.Blueprint{ + Name: bName, + Version: "0.0.0", + Packages: []blueprint.Package{}, + Modules: []blueprint.Package{}, + Groups: []blueprint.Group{}, + Customizations: nil, + } + + var date = time.Date(2019, 11, 27, 13, 19, 0, 0, time.FixedZone("UTC+1", 60*60)) + + var localTarget = &target.Target{ + Uuid: uuid.MustParse("20000000-0000-0000-0000-000000000000"), + Name: "org.osbuild.local", + ImageName: "localimage", + Created: date, + Status: common.IBWaiting, + Options: &target.LocalTargetOptions{}, + } + + var awsTarget = &target.Target{ + Uuid: uuid.MustParse("10000000-0000-0000-0000-000000000000"), + Name: "org.osbuild.aws", + ImageName: "awsimage", + Created: date, + Status: common.IBWaiting, + Options: &target.AWSTargetOptions{ + Region: "frankfurt", + AccessKeyID: "accesskey", + SecretAccessKey: "secretkey", + Bucket: "clay", + Key: "imagekey", + }, + } + + d := fedoratest.New() + arch, err := d.GetArch("x86_64") + if err != nil { + panic("invalid architecture x86_64 for fedoratest") + } + imgType, err := arch.GetImageType("qcow2") + if err != nil { + panic("invalid image type qcow2 for x86_64 @ fedoratest") + } + manifest, err := imgType.Manifest(nil, distro.ImageOptions{}, nil, nil, nil) + if err != nil { + panic("could not create manifest") + } + s := New(nil, arch, nil) + + s.blueprints[bName] = b + s.composes = map[uuid.UUID]Compose{ + uuid.MustParse("30000000-0000-0000-0000-000000000000"): { + Blueprint: &b, + ImageBuild: ImageBuild{ + QueueStatus: common.IBWaiting, + ImageType: imgType, + Manifest: manifest, + Targets: []*target.Target{localTarget, awsTarget}, + JobCreated: date, + }, + }, + uuid.MustParse("30000000-0000-0000-0000-000000000001"): { + Blueprint: &b, + ImageBuild: ImageBuild{ + QueueStatus: common.IBRunning, + ImageType: imgType, + Manifest: manifest, + Targets: []*target.Target{localTarget}, + JobCreated: date, + JobStarted: date, + }, + }, + uuid.MustParse("30000000-0000-0000-0000-000000000002"): { + Blueprint: &b, + ImageBuild: ImageBuild{ + QueueStatus: common.IBFinished, + ImageType: imgType, + Manifest: manifest, + Targets: []*target.Target{localTarget, awsTarget}, + JobCreated: date, + JobStarted: date, + JobFinished: date, + }, + }, + uuid.MustParse("30000000-0000-0000-0000-000000000003"): { + Blueprint: &b, + ImageBuild: ImageBuild{ + QueueStatus: common.IBFailed, + ImageType: imgType, + Manifest: manifest, + Targets: []*target.Target{localTarget, awsTarget}, + JobCreated: date, + JobStarted: date, + JobFinished: date, + }, + }, + } + + return s +} +func FixtureFinished() *Store { + var bName = "test" + var b = blueprint.Blueprint{ + Name: bName, + Version: "0.0.0", + Packages: []blueprint.Package{}, + Modules: []blueprint.Package{}, + Groups: []blueprint.Group{}, + Customizations: nil, + } + + var date = time.Date(2019, 11, 27, 13, 19, 0, 0, time.FixedZone("UTC+1", 60*60)) + + var localTarget = &target.Target{ + Uuid: uuid.MustParse("20000000-0000-0000-0000-000000000000"), + Name: "org.osbuild.local", + ImageName: "localimage", + Created: date, + Status: common.IBWaiting, + Options: &target.LocalTargetOptions{}, + } + + var awsTarget = &target.Target{ + Uuid: uuid.MustParse("10000000-0000-0000-0000-000000000000"), + Name: "org.osbuild.aws", + ImageName: "awsimage", + Created: date, + Status: common.IBWaiting, + Options: &target.AWSTargetOptions{ + Region: "frankfurt", + AccessKeyID: "accesskey", + SecretAccessKey: "secretkey", + Bucket: "clay", + Key: "imagekey", + }, + } + + d := fedoratest.New() + arch, err := d.GetArch("x86_64") + if err != nil { + panic("invalid architecture x86_64 for fedoratest") + } + imgType, err := arch.GetImageType("qcow2") + if err != nil { + panic("invalid image type qcow2 for x86_64 @ fedoratest") + } + manifest, err := imgType.Manifest(nil, distro.ImageOptions{}, nil, nil, nil) + if err != nil { + panic("could not create manifest") + } + s := New(nil, arch, nil) + + s.blueprints[bName] = b + s.composes = map[uuid.UUID]Compose{ + uuid.MustParse("30000000-0000-0000-0000-000000000000"): { + Blueprint: &b, + ImageBuild: ImageBuild{ + QueueStatus: common.IBFinished, + ImageType: imgType, + Manifest: manifest, + Targets: []*target.Target{localTarget, awsTarget}, + JobCreated: date, + }, + }, + uuid.MustParse("30000000-0000-0000-0000-000000000001"): { + Blueprint: &b, + ImageBuild: ImageBuild{ + QueueStatus: common.IBFinished, + ImageType: imgType, + Manifest: manifest, + Targets: []*target.Target{localTarget}, + JobCreated: date, + JobStarted: date, + }, + }, + uuid.MustParse("30000000-0000-0000-0000-000000000003"): { + Blueprint: &b, + ImageBuild: ImageBuild{ + QueueStatus: common.IBFailed, + ImageType: imgType, + Manifest: manifest, + Targets: []*target.Target{localTarget, awsTarget}, + JobCreated: date, + JobStarted: date, + JobFinished: date, + }, + }, + } + + return s +} + +func FixtureEmpty() *Store { + var bName = "test" + var b = blueprint.Blueprint{ + Name: bName, + Version: "0.0.0", + Packages: []blueprint.Package{}, + Modules: []blueprint.Package{}, + Groups: []blueprint.Group{}, + Customizations: nil, + } + + d := fedoratest.New() + arch, err := d.GetArch("x86_64") + if err != nil { + panic("invalid architecture x86_64 for fedoratest") + } + s := New(nil, arch, nil) + + s.blueprints[bName] = b + + return s +} diff --git a/internal/store/json.go b/internal/store/json.go new file mode 100644 index 0000000..8f5cbc4 --- /dev/null +++ b/internal/store/json.go @@ -0,0 +1,363 @@ +package store + +import ( + "errors" + "log" + "sort" + "time" + + "github.com/google/uuid" + "github.com/osbuild/osbuild-composer/internal/blueprint" + "github.com/osbuild/osbuild-composer/internal/common" + "github.com/osbuild/osbuild-composer/internal/distro" + "github.com/osbuild/osbuild-composer/internal/target" +) + +type storeV0 struct { + Blueprints blueprintsV0 `json:"blueprints"` + Workspace workspaceV0 `json:"workspace"` + Composes composesV0 `json:"composes"` + Sources sourcesV0 `json:"sources"` + Changes changesV0 `json:"changes"` + Commits commitsV0 `json:"commits"` +} + +type blueprintsV0 map[string]blueprint.Blueprint +type workspaceV0 map[string]blueprint.Blueprint + +// A Compose represent the task of building a set of images from a single blueprint. +// It contains all the information necessary to generate the inputs for the job, as +// well as the job's state. +type composeV0 struct { + Blueprint *blueprint.Blueprint `json:"blueprint"` + ImageBuilds []imageBuildV0 `json:"image_builds"` +} + +type composesV0 map[uuid.UUID]composeV0 + +// ImageBuild represents a single image build inside a compose +type imageBuildV0 struct { + ID int `json:"id"` + ImageType string `json:"image_type"` + Manifest distro.Manifest `json:"manifest"` + Targets []*target.Target `json:"targets"` + JobCreated time.Time `json:"job_created"` + JobStarted time.Time `json:"job_started"` + JobFinished time.Time `json:"job_finished"` + Size uint64 `json:"size"` + JobID uuid.UUID `json:"jobid,omitempty"` + + // Kept for backwards compatibility. Image builds which were done + // before the move to the job queue use this to store whether they + // finished successfully. + QueueStatus common.ImageBuildState `json:"queue_status,omitempty"` +} + +type sourceV0 struct { + Name string `json:"name"` + Type string `json:"type"` + URL string `json:"url"` + CheckGPG bool `json:"check_gpg"` + CheckSSL bool `json:"check_ssl"` + System bool `json:"system"` +} + +type sourcesV0 map[string]sourceV0 + +type changeV0 struct { + Commit string `json:"commit"` + Message string `json:"message"` + Revision *int `json:"revision"` + Timestamp string `json:"timestamp"` + // BUG: We are currently not (un)marshalling the Blueprint field. +} + +type changesV0 map[string]map[string]changeV0 + +type commitsV0 map[string][]string + +func newBlueprintsFromV0(blueprintsStruct blueprintsV0) map[string]blueprint.Blueprint { + blueprints := make(map[string]blueprint.Blueprint) + for name, blueprint := range blueprintsStruct { + blueprints[name] = blueprint.DeepCopy() + } + return blueprints +} + +func newWorkspaceFromV0(workspaceStruct workspaceV0) map[string]blueprint.Blueprint { + workspace := make(map[string]blueprint.Blueprint) + for name, blueprint := range workspaceStruct { + workspace[name] = blueprint.DeepCopy() + } + return workspace +} + +func newComposesFromV0(composesStruct composesV0, arch distro.Arch, log *log.Logger) map[uuid.UUID]Compose { + composes := make(map[uuid.UUID]Compose) + + for composeID, composeStruct := range composesStruct { + c, err := newComposeFromV0(composeStruct, arch) + if err != nil { + if log != nil { + log.Printf("ignoring compose: %v", err) + } + continue + } + composes[composeID] = c + } + + return composes +} + +func newImageBuildFromV0(imageBuildStruct imageBuildV0, arch distro.Arch) (ImageBuild, error) { + imgType := imageTypeFromCompatString(imageBuildStruct.ImageType, arch) + if imgType == nil { + // Invalid type strings in serialization format, this may happen + // on upgrades. + return ImageBuild{}, errors.New("invalid Image Type string") + } + // Backwards compatibility: fail all builds that are queued or + // running. Jobs status is now handled outside of the store + // (and the compose). The fields are kept so that previously + // succeeded builds still show up correctly. + queueStatus := imageBuildStruct.QueueStatus + switch queueStatus { + case common.IBRunning, common.IBWaiting: + queueStatus = common.IBFailed + } + return ImageBuild{ + ID: imageBuildStruct.ID, + ImageType: imgType, + Manifest: imageBuildStruct.Manifest, + Targets: imageBuildStruct.Targets, + JobCreated: imageBuildStruct.JobCreated, + JobStarted: imageBuildStruct.JobStarted, + JobFinished: imageBuildStruct.JobFinished, + Size: imageBuildStruct.Size, + JobID: imageBuildStruct.JobID, + QueueStatus: queueStatus, + }, nil +} + +func newComposeFromV0(composeStruct composeV0, arch distro.Arch) (Compose, error) { + if len(composeStruct.ImageBuilds) != 1 { + return Compose{}, errors.New("compose with unsupported number of image builds") + } + ib, err := newImageBuildFromV0(composeStruct.ImageBuilds[0], arch) + if err != nil { + return Compose{}, err + } + bp := composeStruct.Blueprint.DeepCopy() + return Compose{ + Blueprint: &bp, + ImageBuild: ib, + }, nil +} + +func newSourceConfigsFromV0(sourcesStruct sourcesV0) map[string]SourceConfig { + sources := make(map[string]SourceConfig) + + for name, source := range sourcesStruct { + sources[name] = SourceConfig(source) + } + + return sources +} + +func newChangesFromV0(changesStruct changesV0) map[string]map[string]blueprint.Change { + changes := make(map[string]map[string]blueprint.Change) + + for name, commitsStruct := range changesStruct { + commits := make(map[string]blueprint.Change) + for commitID, change := range commitsStruct { + commits[commitID] = blueprint.Change{ + Commit: change.Commit, + Message: change.Message, + Revision: change.Revision, + Timestamp: change.Timestamp, + } + } + changes[name] = commits + } + + return changes +} + +func newCommitsFromV0(commitsMapStruct commitsV0, changesMapStruct changesV0) map[string][]string { + commitsMap := make(map[string][]string) + for name, commitsStruct := range commitsMapStruct { + commits := make([]string, len(commitsStruct)) + copy(commits, commitsStruct) + commitsMap[name] = commits + } + + // Populate BlueprintsCommits for existing blueprints without commit history + // BlueprintsCommits tracks the order of the commits in BlueprintsChanges, + // but may not be in-sync with BlueprintsChanges because it was added later. + // This will sort the existing commits by timestamp and version to update + // the store. BUT since the timestamp resolution is only 1s it is possible + // that the order may be slightly wrong. + for name, changes := range changesMapStruct { + if _, exists := commitsMap[name]; !exists { + changesSlice := make([]changeV0, 0, len(changes)) + + // Copy the change objects from a map to a sortable slice + for _, change := range changes { + changesSlice = append(changesSlice, change) + } + + // Sort the changes by Timestamp ascending + sort.Slice(changesSlice, func(i, j int) bool { + return changesSlice[i].Timestamp <= changesSlice[j].Timestamp + }) + + // Create a sorted list of commits based on the sorted list of change objects + commits := make([]string, 0, len(changes)) + for _, c := range changesSlice { + commits = append(commits, c.Commit) + } + + // Assign the commits to the commit map, as an approximation of what we want + commitsMap[name] = commits + } + } + + return commitsMap +} + +func newStoreFromV0(storeStruct storeV0, arch distro.Arch, log *log.Logger) *Store { + return &Store{ + blueprints: newBlueprintsFromV0(storeStruct.Blueprints), + workspace: newWorkspaceFromV0(storeStruct.Workspace), + composes: newComposesFromV0(storeStruct.Composes, arch, log), + sources: newSourceConfigsFromV0(storeStruct.Sources), + blueprintsChanges: newChangesFromV0(storeStruct.Changes), + blueprintsCommits: newCommitsFromV0(storeStruct.Commits, storeStruct.Changes), + } +} + +func newBlueprintsV0(blueprints map[string]blueprint.Blueprint) blueprintsV0 { + blueprintsStruct := make(blueprintsV0) + for name, blueprint := range blueprints { + blueprintsStruct[name] = blueprint.DeepCopy() + } + return blueprintsStruct +} + +func newWorkspaceV0(workspace map[string]blueprint.Blueprint) workspaceV0 { + workspaceStruct := make(workspaceV0) + for name, blueprint := range workspace { + workspaceStruct[name] = blueprint.DeepCopy() + } + return workspaceStruct +} + +func newComposeV0(compose Compose) composeV0 { + bp := compose.Blueprint.DeepCopy() + return composeV0{ + Blueprint: &bp, + ImageBuilds: []imageBuildV0{ + { + ID: compose.ImageBuild.ID, + ImageType: imageTypeToCompatString(compose.ImageBuild.ImageType), + Manifest: compose.ImageBuild.Manifest, + Targets: compose.ImageBuild.Targets, + JobCreated: compose.ImageBuild.JobCreated, + JobStarted: compose.ImageBuild.JobStarted, + JobFinished: compose.ImageBuild.JobFinished, + Size: compose.ImageBuild.Size, + JobID: compose.ImageBuild.JobID, + QueueStatus: compose.ImageBuild.QueueStatus, + }, + }, + } +} + +func newComposesV0(composes map[uuid.UUID]Compose) composesV0 { + composesStruct := make(composesV0) + for composeID, compose := range composes { + composesStruct[composeID] = newComposeV0(compose) + } + return composesStruct +} + +func newSourcesV0(sources map[string]SourceConfig) sourcesV0 { + sourcesStruct := make(sourcesV0) + for name, source := range sources { + sourcesStruct[name] = sourceV0(source) + } + return sourcesStruct +} + +func newChangesV0(changes map[string]map[string]blueprint.Change) changesV0 { + changesStruct := make(changesV0) + for name, commits := range changes { + commitsStruct := make(map[string]changeV0) + for commitID, change := range commits { + commitsStruct[commitID] = changeV0{ + Commit: change.Commit, + Message: change.Message, + Revision: change.Revision, + Timestamp: change.Timestamp, + } + } + changesStruct[name] = commitsStruct + } + return changesStruct +} + +func newCommitsV0(commits map[string][]string) commitsV0 { + commitsStruct := make(commitsV0) + for name, changes := range commits { + commitsStruct[name] = changes + } + return commitsStruct +} + +func (store *Store) toStoreV0() *storeV0 { + return &storeV0{ + Blueprints: newBlueprintsV0(store.blueprints), + Workspace: newWorkspaceV0(store.workspace), + Composes: newComposesV0(store.composes), + Sources: newSourcesV0(store.sources), + Changes: newChangesV0(store.blueprintsChanges), + Commits: newCommitsV0(store.blueprintsCommits), + } +} + +var imageTypeCompatMapping = map[string]string{ + "vhd": "Azure", + "ami": "AWS", + "liveiso": "LiveISO", + "openstack": "OpenStack", + "qcow2": "qcow2", + "vmdk": "VMWare", + "ext4-filesystem": "Raw-filesystem", + "partitioned-disk": "Partitioned-disk", + "tar": "Tar", + "fedora-iot-commit": "fedora-iot-commit", + "rhel-edge-commit": "rhel-edge-commit", + "test_type": "test_type", // used only in json_test.go + "test_type_invalid": "test_type_invalid", // used only in json_test.go +} + +func imageTypeToCompatString(imgType distro.ImageType) string { + imgTypeString, exists := imageTypeCompatMapping[imgType.Name()] + if !exists { + panic("No mapping exists for " + imgType.Name()) + } + return imgTypeString +} + +func imageTypeFromCompatString(input string, arch distro.Arch) distro.ImageType { + for k, v := range imageTypeCompatMapping { + if v == input { + imgType, err := arch.GetImageType(k) + if err != nil { + return nil + } + return imgType + } + } + return nil +} diff --git a/internal/store/json_test.go b/internal/store/json_test.go new file mode 100644 index 0000000..202064a --- /dev/null +++ b/internal/store/json_test.go @@ -0,0 +1,1545 @@ +package store + +import ( + "encoding/json" + "io/ioutil" + "path/filepath" + "reflect" + "testing" + "time" + + "github.com/google/uuid" + "github.com/osbuild/osbuild-composer/internal/blueprint" + "github.com/osbuild/osbuild-composer/internal/common" + "github.com/osbuild/osbuild-composer/internal/distro" + "github.com/osbuild/osbuild-composer/internal/distro/fedora32" + "github.com/osbuild/osbuild-composer/internal/distro/fedoratest" + "github.com/osbuild/osbuild-composer/internal/distro/test_distro" + "github.com/osbuild/osbuild-composer/internal/target" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +// MustParseTime parses a time string and panics if there is an error +func MustParseTime(ts string) time.Time { + t, err := time.Parse(time.RFC3339, ts) + if err != nil { + panic(err) + } + return t +} + +func Test_imageTypeToCompatString(t *testing.T) { + type args struct { + input distro.ImageType + } + tests := []struct { + name string + args args + want string + }{ + { + name: "valid", + args: args{ + input: &test_distro.TestImageType{}, + }, + want: "test_type", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := imageTypeToCompatString(tt.args.input) + if got != tt.want { + t.Errorf("imageTypeStringToCompatString() got = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_imageTypeFromCompatString(t *testing.T) { + type args struct { + input string + arch distro.Arch + } + tests := []struct { + name string + args args + want distro.ImageType + }{ + { + name: "valid", + args: args{ + input: "test_type", + arch: &test_distro.TestArch{}, + }, + want: &test_distro.TestImageType{}, + }, + { + name: "invalid mapping", + args: args{ + input: "foo", + arch: &test_distro.TestArch{}, + }, + want: nil, + }, + { + name: "invalid distro name", + args: args{ + input: "test_type_invalid", + arch: &test_distro.TestArch{}, + }, + want: nil, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := imageTypeFromCompatString(tt.args.input, tt.args.arch) + if got != tt.want { + t.Errorf("imageTypeStringFromCompatString() got = %v, want %v", got, tt.want) + } + }) + } +} + +func TestMarshalEmpty(t *testing.T) { + d := fedoratest.New() + arch, err := d.GetArch("x86_64") + if err != nil { + panic("invalid architecture x86_64 for fedoratest") + } + store1 := FixtureEmpty() + storeV0 := store1.toStoreV0() + store2 := newStoreFromV0(*storeV0, arch, nil) + if !reflect.DeepEqual(store1, store2) { + t.Errorf("marshal/unmarshal roundtrip not a noop for empty store: %v != %v", store1, store2) + } +} + +func TestMarshalFinished(t *testing.T) { + d := fedoratest.New() + arch, err := d.GetArch("x86_64") + if err != nil { + panic("invalid architecture x86_64 for fedoratest") + } + store1 := FixtureFinished() + storeV0 := store1.toStoreV0() + store2 := newStoreFromV0(*storeV0, arch, nil) + if !reflect.DeepEqual(store1, store2) { + t.Errorf("marshal/unmarshal roundtrip not a noop for base store: %v != %v", store1, store2) + } +} + +func TestStore_toStoreV0(t *testing.T) { + type fields struct { + blueprints map[string]blueprint.Blueprint + workspace map[string]blueprint.Blueprint + composes map[uuid.UUID]Compose + sources map[string]SourceConfig + blueprintsChanges map[string]map[string]blueprint.Change + blueprintsCommits map[string][]string + } + tests := []struct { + name string + fields fields + want *storeV0 + }{ + { + name: "empty", + fields: fields{}, + want: &storeV0{ + Blueprints: make(blueprintsV0), + Workspace: make(workspaceV0), + Composes: make(composesV0), + Sources: make(sourcesV0), + Changes: make(changesV0), + Commits: make(commitsV0), + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + store := &Store{ + blueprints: tt.fields.blueprints, + workspace: tt.fields.workspace, + composes: tt.fields.composes, + sources: tt.fields.sources, + blueprintsChanges: tt.fields.blueprintsChanges, + blueprintsCommits: tt.fields.blueprintsCommits, + } + if got := store.toStoreV0(); !reflect.DeepEqual(got, tt.want) { + t.Errorf("Store.toStoreV0() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_newStoreFromV0(t *testing.T) { + type args struct { + storeStruct storeV0 + arch distro.Arch + } + tests := []struct { + name string + args args + want *Store + }{ + { + name: "empty", + args: args{ + storeStruct: storeV0{}, + arch: &test_distro.TestArch{}, + }, + want: New(nil, &test_distro.TestArch{}, nil), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := newStoreFromV0(tt.args.storeStruct, tt.args.arch, nil); !reflect.DeepEqual(got, tt.want) { + t.Errorf("newStoreFromV0() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_newCommitsV0(t *testing.T) { + type args struct { + commits map[string][]string + } + tests := []struct { + name string + args args + want commitsV0 + }{ + { + name: "empty", + args: args{ + commits: make(map[string][]string), + }, + want: commitsV0{}, + }, + { + name: "One blueprint's commits", + args: args{ + commits: map[string][]string{ + "test-blueprint-changes-v0": { + "79e2043a83637ffdd4db078c6da23deaae09c84b", + "72fdb76b9994bd72770e283bf3a5206756daf497", + "4774980638f4162d9909a613c3ccd938e60bb3a9", + }, + }, + }, + want: commitsV0{ + "test-blueprint-changes-v0": { + "79e2043a83637ffdd4db078c6da23deaae09c84b", + "72fdb76b9994bd72770e283bf3a5206756daf497", + "4774980638f4162d9909a613c3ccd938e60bb3a9", + }, + }, + }, + { + name: "Two blueprint's commits", + args: args{ + commits: map[string][]string{ + "test-blueprint-changes-v0": { + "79e2043a83637ffdd4db078c6da23deaae09c84b", + "72fdb76b9994bd72770e283bf3a5206756daf497", + "4774980638f4162d9909a613c3ccd938e60bb3a9", + }, + "second-blueprint": { + "3c2a2653d044433bae36e3236d394688126fa386", + "7619ec57c37b4396b5a91358c98792df9e143c18", + "8d3cc55a6d2841b2bc6e6578d2ec21123110a858", + }, + }, + }, + want: commitsV0{ + "test-blueprint-changes-v0": { + "79e2043a83637ffdd4db078c6da23deaae09c84b", + "72fdb76b9994bd72770e283bf3a5206756daf497", + "4774980638f4162d9909a613c3ccd938e60bb3a9", + }, + "second-blueprint": { + "3c2a2653d044433bae36e3236d394688126fa386", + "7619ec57c37b4396b5a91358c98792df9e143c18", + "8d3cc55a6d2841b2bc6e6578d2ec21123110a858", + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := newCommitsV0(tt.args.commits); !reflect.DeepEqual(got, tt.want) { + t.Errorf("newCommitsV0() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_upgrade(t *testing.T) { + assert := assert.New(t) + testPath, err := filepath.Abs("./test/*.json") + require.NoError(t, err) + fileNames, err := filepath.Glob(testPath) + assert.NoErrorf(err, "Could not read test store directory '%s': %v", testPath, err) + require.Greaterf(t, len(fileNames), 0, "No test stores found in %s", testPath) + for _, fileName := range fileNames { + var storeStruct storeV0 + file, err := ioutil.ReadFile(fileName) + assert.NoErrorf(err, "Could not read test-store '%s': %v", fileName, err) + err = json.Unmarshal([]byte(file), &storeStruct) + assert.NoErrorf(err, "Could not parse test-store '%s': %v", fileName, err) + arch, err := fedora32.New().GetArch("x86_64") + assert.NoError(err) + store := newStoreFromV0(storeStruct, arch, nil) + assert.Equal(1, len(store.blueprints)) + assert.Equal(1, len(store.blueprintsChanges)) + assert.Equal(1, len(store.blueprintsCommits)) + assert.LessOrEqual(1, len(store.composes)) + assert.Equal(1, len(store.workspace)) + } +} + +func Test_newCommitsFromV0(t *testing.T) { + exampleChanges := changesV0{ + "test-blueprint-changes-v0": { + "4774980638f4162d9909a613c3ccd938e60bb3a9": { + Commit: "4774980638f4162d9909a613c3ccd938e60bb3a9", + Message: "Recipe test-blueprint-changes-v0, version 0.1.2 saved.", + Revision: nil, + Timestamp: "2020-07-29T09:52:07Z", + }, + "72fdb76b9994bd72770e283bf3a5206756daf497": { + Commit: "72fdb76b9994bd72770e283bf3a5206756daf497", + Message: "Recipe test-blueprint-changes-v0, version 0.1.1 saved.", + Revision: nil, + Timestamp: "2020-07-09T13:33:06Z", + }, + "79e2043a83637ffdd4db078c6da23deaae09c84b": { + Commit: "79e2043a83637ffdd4db078c6da23deaae09c84b", + Message: "Recipe test-blueprint-changes-v0, version 0.0.1 saved.", + Revision: nil, + Timestamp: "2020-07-07T02:57:00Z", + }, + }, + } + type args struct { + changes changesV0 + commits commitsV0 + } + tests := []struct { + name string + args args + want map[string][]string + }{ + { + name: "empty", + args: args{ + changes: make(changesV0), + commits: make(commitsV0), + }, + want: make(map[string][]string), + }, + { + name: "Changes with no commits", + args: args{ + changes: exampleChanges, + commits: make(commitsV0), + }, + want: map[string][]string{ + "test-blueprint-changes-v0": { + // Oldest sorted first + "79e2043a83637ffdd4db078c6da23deaae09c84b", + "72fdb76b9994bd72770e283bf3a5206756daf497", + "4774980638f4162d9909a613c3ccd938e60bb3a9", + }, + }, + }, + { + name: "Changes with commits", + args: args{ + changes: exampleChanges, + commits: commitsV0{ + "test-blueprint-changes-v0": { + "79e2043a83637ffdd4db078c6da23deaae09c84b", + "72fdb76b9994bd72770e283bf3a5206756daf497", + "4774980638f4162d9909a613c3ccd938e60bb3a9", + }, + }, + }, + want: map[string][]string{ + "test-blueprint-changes-v0": { + // Oldest sorted first + "79e2043a83637ffdd4db078c6da23deaae09c84b", + "72fdb76b9994bd72770e283bf3a5206756daf497", + "4774980638f4162d9909a613c3ccd938e60bb3a9", + }, + }, + }} + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := newCommitsFromV0(tt.args.commits, tt.args.changes); !reflect.DeepEqual(got, tt.want) { + t.Errorf("newCommitsFromV0() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_newBlueprintsFromV0(t *testing.T) { + tests := []struct { + name string + blueprints blueprintsV0 + want map[string]blueprint.Blueprint + }{ + { + name: "empty", + blueprints: blueprintsV0{}, + want: make(map[string]blueprint.Blueprint), + }, + { + name: "Two Blueprints", + blueprints: blueprintsV0{ + "blueprint-1": { + Name: "blueprint-1", + Description: "First Blueprint in Test", + Version: "0.0.1", + }, + "blueprint-2": { + Name: "blueprint-2", + Description: "Second Blueprint in Test", + Version: "0.0.1", + }, + }, + want: map[string]blueprint.Blueprint{ + "blueprint-1": blueprint.Blueprint{ + Name: "blueprint-1", + Description: "First Blueprint in Test", + Version: "0.0.1"}, + "blueprint-2": blueprint.Blueprint{ + Name: "blueprint-2", + Description: "Second Blueprint in Test", + Version: "0.0.1"}, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := newBlueprintsFromV0(tt.blueprints); !reflect.DeepEqual(got, tt.want) { + t.Errorf("newBlueprintsFromV0() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_newBlueprintsV0(t *testing.T) { + tests := []struct { + name string + blueprints map[string]blueprint.Blueprint + want blueprintsV0 + }{ + { + name: "empty", + blueprints: make(map[string]blueprint.Blueprint), + want: blueprintsV0{}, + }, + { + name: "Two Blueprints", + blueprints: map[string]blueprint.Blueprint{ + "blueprint-1": blueprint.Blueprint{ + Name: "blueprint-1", + Description: "First Blueprint in Test", + Version: "0.0.1"}, + "blueprint-2": blueprint.Blueprint{ + Name: "blueprint-2", + Description: "Second Blueprint in Test", + Version: "0.0.1"}, + }, + want: blueprintsV0{ + "blueprint-1": { + Name: "blueprint-1", + Description: "First Blueprint in Test", + Version: "0.0.1", + }, + "blueprint-2": { + Name: "blueprint-2", + Description: "Second Blueprint in Test", + Version: "0.0.1", + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := newBlueprintsV0(tt.blueprints); !reflect.DeepEqual(got, tt.want) { + t.Errorf("newBlueprintsV0() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_newWorkspaceFromV0(t *testing.T) { + tests := []struct { + name string + blueprints workspaceV0 + want map[string]blueprint.Blueprint + }{ + { + name: "empty", + blueprints: workspaceV0{}, + want: make(map[string]blueprint.Blueprint), + }, + { + name: "Two Blueprints", + blueprints: workspaceV0{ + "blueprint-1": { + Name: "blueprint-1", + Description: "First Blueprint in Test", + Version: "0.0.1", + }, + "blueprint-2": { + Name: "blueprint-2", + Description: "Second Blueprint in Test", + Version: "0.0.1", + }, + }, + want: map[string]blueprint.Blueprint{ + "blueprint-1": blueprint.Blueprint{ + Name: "blueprint-1", + Description: "First Blueprint in Test", + Version: "0.0.1"}, + "blueprint-2": blueprint.Blueprint{ + Name: "blueprint-2", + Description: "Second Blueprint in Test", + Version: "0.0.1"}, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := newWorkspaceFromV0(tt.blueprints); !reflect.DeepEqual(got, tt.want) { + t.Errorf("newWorkspaceFromV0() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_newWorkspaceV0(t *testing.T) { + tests := []struct { + name string + blueprints map[string]blueprint.Blueprint + want workspaceV0 + }{ + { + name: "empty", + blueprints: make(map[string]blueprint.Blueprint), + want: workspaceV0{}, + }, + { + name: "Two Blueprints", + blueprints: map[string]blueprint.Blueprint{ + "blueprint-1": blueprint.Blueprint{ + Name: "blueprint-1", + Description: "First Blueprint in Test", + Version: "0.0.1"}, + "blueprint-2": blueprint.Blueprint{ + Name: "blueprint-2", + Description: "Second Blueprint in Test", + Version: "0.0.1"}, + }, + want: workspaceV0{ + "blueprint-1": { + Name: "blueprint-1", + Description: "First Blueprint in Test", + Version: "0.0.1", + }, + "blueprint-2": { + Name: "blueprint-2", + Description: "Second Blueprint in Test", + Version: "0.0.1", + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := newWorkspaceV0(tt.blueprints); !reflect.DeepEqual(got, tt.want) { + t.Errorf("newWorkspaceV0() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_newChangesFromV0(t *testing.T) { + tests := []struct { + name string + changes changesV0 + want map[string]map[string]blueprint.Change + }{ + { + name: "empty", + changes: changesV0{}, + want: make(map[string]map[string]blueprint.Change), + }, + { + name: "One Blueprint's Changes", + changes: changesV0{ + "test-blueprint-changes-1": { + "4774980638f4162d9909a613c3ccd938e60bb3a9": { + Commit: "4774980638f4162d9909a613c3ccd938e60bb3a9", + Message: "Recipe test-blueprint-changes-v0, version 0.1.2 saved.", + Revision: nil, + Timestamp: "2020-07-29T09:52:07Z", + }, + "72fdb76b9994bd72770e283bf3a5206756daf497": { + Commit: "72fdb76b9994bd72770e283bf3a5206756daf497", + Message: "Recipe test-blueprint-changes-v0, version 0.1.1 saved.", + Revision: nil, + Timestamp: "2020-07-09T13:33:06Z", + }, + "79e2043a83637ffdd4db078c6da23deaae09c84b": { + Commit: "79e2043a83637ffdd4db078c6da23deaae09c84b", + Message: "Recipe test-blueprint-changes-v0, version 0.0.1 saved.", + Revision: nil, + Timestamp: "2020-07-07T02:57:00Z", + }, + }, + }, + want: map[string]map[string]blueprint.Change{ + "test-blueprint-changes-1": { + "4774980638f4162d9909a613c3ccd938e60bb3a9": { + Commit: "4774980638f4162d9909a613c3ccd938e60bb3a9", + Message: "Recipe test-blueprint-changes-v0, version 0.1.2 saved.", + Revision: nil, + Timestamp: "2020-07-29T09:52:07Z", + }, + "72fdb76b9994bd72770e283bf3a5206756daf497": { + Commit: "72fdb76b9994bd72770e283bf3a5206756daf497", + Message: "Recipe test-blueprint-changes-v0, version 0.1.1 saved.", + Revision: nil, + Timestamp: "2020-07-09T13:33:06Z", + }, + "79e2043a83637ffdd4db078c6da23deaae09c84b": { + Commit: "79e2043a83637ffdd4db078c6da23deaae09c84b", + Message: "Recipe test-blueprint-changes-v0, version 0.0.1 saved.", + Revision: nil, + Timestamp: "2020-07-07T02:57:00Z", + }, + }, + }, + }, + { + name: "Two Blueprint's Changes", + changes: changesV0{ + "test-blueprint-changes-1": { + "4774980638f4162d9909a613c3ccd938e60bb3a9": { + Commit: "4774980638f4162d9909a613c3ccd938e60bb3a9", + Message: "Recipe test-blueprint-changes-v0, version 0.1.2 saved.", + Revision: nil, + Timestamp: "2020-07-29T09:52:07Z", + }, + }, + "test-blueprint-changes-2": { + "72fdb76b9994bd72770e283bf3a5206756daf497": { + Commit: "72fdb76b9994bd72770e283bf3a5206756daf497", + Message: "Recipe test-blueprint-changes-v0, version 0.1.1 saved.", + Revision: nil, + Timestamp: "2020-07-09T13:33:06Z", + }, + "79e2043a83637ffdd4db078c6da23deaae09c84b": { + Commit: "79e2043a83637ffdd4db078c6da23deaae09c84b", + Message: "Recipe test-blueprint-changes-v0, version 0.0.1 saved.", + Revision: nil, + Timestamp: "2020-07-07T02:57:00Z", + }, + }, + }, + want: map[string]map[string]blueprint.Change{ + "test-blueprint-changes-1": { + "4774980638f4162d9909a613c3ccd938e60bb3a9": { + Commit: "4774980638f4162d9909a613c3ccd938e60bb3a9", + Message: "Recipe test-blueprint-changes-v0, version 0.1.2 saved.", + Revision: nil, + Timestamp: "2020-07-29T09:52:07Z", + }, + }, + "test-blueprint-changes-2": { + "72fdb76b9994bd72770e283bf3a5206756daf497": { + Commit: "72fdb76b9994bd72770e283bf3a5206756daf497", + Message: "Recipe test-blueprint-changes-v0, version 0.1.1 saved.", + Revision: nil, + Timestamp: "2020-07-09T13:33:06Z", + }, + "79e2043a83637ffdd4db078c6da23deaae09c84b": { + Commit: "79e2043a83637ffdd4db078c6da23deaae09c84b", + Message: "Recipe test-blueprint-changes-v0, version 0.0.1 saved.", + Revision: nil, + Timestamp: "2020-07-07T02:57:00Z", + }, + }, + }, + }} + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := newChangesFromV0(tt.changes); !reflect.DeepEqual(got, tt.want) { + t.Errorf("newChangesFromV0() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_newChangesV0(t *testing.T) { + tests := []struct { + name string + changes map[string]map[string]blueprint.Change + want changesV0 + }{ + { + name: "empty", + changes: make(map[string]map[string]blueprint.Change), + want: changesV0{}, + }, + { + name: "One Blueprint's Changes", + changes: map[string]map[string]blueprint.Change{ + "test-blueprint-changes-1": { + "4774980638f4162d9909a613c3ccd938e60bb3a9": { + Commit: "4774980638f4162d9909a613c3ccd938e60bb3a9", + Message: "Recipe test-blueprint-changes-v0, version 0.1.2 saved.", + Revision: nil, + Timestamp: "2020-07-29T09:52:07Z", + }, + "72fdb76b9994bd72770e283bf3a5206756daf497": { + Commit: "72fdb76b9994bd72770e283bf3a5206756daf497", + Message: "Recipe test-blueprint-changes-v0, version 0.1.1 saved.", + Revision: nil, + Timestamp: "2020-07-09T13:33:06Z", + }, + "79e2043a83637ffdd4db078c6da23deaae09c84b": { + Commit: "79e2043a83637ffdd4db078c6da23deaae09c84b", + Message: "Recipe test-blueprint-changes-v0, version 0.0.1 saved.", + Revision: nil, + Timestamp: "2020-07-07T02:57:00Z", + }, + }, + }, + want: changesV0{ + "test-blueprint-changes-1": { + "4774980638f4162d9909a613c3ccd938e60bb3a9": { + Commit: "4774980638f4162d9909a613c3ccd938e60bb3a9", + Message: "Recipe test-blueprint-changes-v0, version 0.1.2 saved.", + Revision: nil, + Timestamp: "2020-07-29T09:52:07Z", + }, + "72fdb76b9994bd72770e283bf3a5206756daf497": { + Commit: "72fdb76b9994bd72770e283bf3a5206756daf497", + Message: "Recipe test-blueprint-changes-v0, version 0.1.1 saved.", + Revision: nil, + Timestamp: "2020-07-09T13:33:06Z", + }, + "79e2043a83637ffdd4db078c6da23deaae09c84b": { + Commit: "79e2043a83637ffdd4db078c6da23deaae09c84b", + Message: "Recipe test-blueprint-changes-v0, version 0.0.1 saved.", + Revision: nil, + Timestamp: "2020-07-07T02:57:00Z", + }, + }, + }, + }, + { + name: "Two Blueprint's Changes", + changes: map[string]map[string]blueprint.Change{ + "test-blueprint-changes-1": { + "4774980638f4162d9909a613c3ccd938e60bb3a9": { + Commit: "4774980638f4162d9909a613c3ccd938e60bb3a9", + Message: "Recipe test-blueprint-changes-v0, version 0.1.2 saved.", + Revision: nil, + Timestamp: "2020-07-29T09:52:07Z", + }, + }, + "test-blueprint-changes-2": { + "72fdb76b9994bd72770e283bf3a5206756daf497": { + Commit: "72fdb76b9994bd72770e283bf3a5206756daf497", + Message: "Recipe test-blueprint-changes-v0, version 0.1.1 saved.", + Revision: nil, + Timestamp: "2020-07-09T13:33:06Z", + }, + "79e2043a83637ffdd4db078c6da23deaae09c84b": { + Commit: "79e2043a83637ffdd4db078c6da23deaae09c84b", + Message: "Recipe test-blueprint-changes-v0, version 0.0.1 saved.", + Revision: nil, + Timestamp: "2020-07-07T02:57:00Z", + }, + }, + }, + want: changesV0{ + "test-blueprint-changes-1": { + "4774980638f4162d9909a613c3ccd938e60bb3a9": { + Commit: "4774980638f4162d9909a613c3ccd938e60bb3a9", + Message: "Recipe test-blueprint-changes-v0, version 0.1.2 saved.", + Revision: nil, + Timestamp: "2020-07-29T09:52:07Z", + }, + }, + "test-blueprint-changes-2": { + "72fdb76b9994bd72770e283bf3a5206756daf497": { + Commit: "72fdb76b9994bd72770e283bf3a5206756daf497", + Message: "Recipe test-blueprint-changes-v0, version 0.1.1 saved.", + Revision: nil, + Timestamp: "2020-07-09T13:33:06Z", + }, + "79e2043a83637ffdd4db078c6da23deaae09c84b": { + Commit: "79e2043a83637ffdd4db078c6da23deaae09c84b", + Message: "Recipe test-blueprint-changes-v0, version 0.0.1 saved.", + Revision: nil, + Timestamp: "2020-07-07T02:57:00Z", + }, + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := newChangesV0(tt.changes); !reflect.DeepEqual(got, tt.want) { + t.Errorf("newChangesV0() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_newSourceConfigsFromV0(t *testing.T) { + tests := []struct { + name string + sources sourcesV0 + want map[string]SourceConfig + }{ + { + name: "empty", + sources: sourcesV0{}, + want: make(map[string]SourceConfig), + }, + { + name: "One Source", + sources: sourcesV0{ + "repo-1": { + Name: "testRepo1", + Type: "yum-mirrorlist", + URL: "testURL", + CheckGPG: true, + CheckSSL: true, + System: false, + }, + }, + want: map[string]SourceConfig{ + "repo-1": { + Name: "testRepo1", + Type: "yum-mirrorlist", + URL: "testURL", + CheckGPG: true, + CheckSSL: true, + System: false, + }, + }, + }, + { + name: "Two Sources", + sources: sourcesV0{ + "repo-1": { + Name: "testRepo1", + Type: "yum-mirrorlist", + URL: "testURL", + CheckGPG: true, + CheckSSL: true, + System: false, + }, + "repo-2": { + Name: "testRepo2", + Type: "yum-baseurl", + URL: "testURL", + CheckGPG: true, + CheckSSL: true, + System: false, + }, + }, + want: map[string]SourceConfig{ + "repo-1": { + Name: "testRepo1", + Type: "yum-mirrorlist", + URL: "testURL", + CheckGPG: true, + CheckSSL: true, + System: false, + }, + "repo-2": { + Name: "testRepo2", + Type: "yum-baseurl", + URL: "testURL", + CheckGPG: true, + CheckSSL: true, + System: false, + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := newSourceConfigsFromV0(tt.sources); !reflect.DeepEqual(got, tt.want) { + t.Errorf("newSourceConfigsFromV0() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_newSourcesFromV0(t *testing.T) { + tests := []struct { + name string + sources map[string]SourceConfig + want sourcesV0 + }{ + { + name: "empty", + sources: make(map[string]SourceConfig), + want: sourcesV0{}, + }, + { + name: "One Source", + sources: map[string]SourceConfig{ + "repo-1": { + Name: "testRepo1", + Type: "yum-mirrorlist", + URL: "testURL", + CheckGPG: true, + CheckSSL: true, + System: false, + }, + }, + want: sourcesV0{ + "repo-1": { + Name: "testRepo1", + Type: "yum-mirrorlist", + URL: "testURL", + CheckGPG: true, + CheckSSL: true, + System: false, + }, + }, + }, + { + name: "Two Sources", + sources: map[string]SourceConfig{ + "repo-1": { + Name: "testRepo1", + Type: "yum-mirrorlist", + URL: "testURL", + CheckGPG: true, + CheckSSL: true, + System: false, + }, + "repo-2": { + Name: "testRepo2", + Type: "yum-baseurl", + URL: "testURL", + CheckGPG: true, + CheckSSL: true, + System: false, + }, + }, + want: sourcesV0{ + "repo-1": { + Name: "testRepo1", + Type: "yum-mirrorlist", + URL: "testURL", + CheckGPG: true, + CheckSSL: true, + System: false, + }, + "repo-2": { + Name: "testRepo2", + Type: "yum-baseurl", + URL: "testURL", + CheckGPG: true, + CheckSSL: true, + System: false, + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := newSourcesV0(tt.sources); !reflect.DeepEqual(got, tt.want) { + t.Errorf("newSourcesV0() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_newComposeV0(t *testing.T) { + bp := blueprint.Blueprint{ + Name: "tmux", + Description: "tmux blueprint", + Version: "0.0.1", + Packages: []blueprint.Package{ + {Name: "tmux", Version: "*"}}, + } + + tests := []struct { + name string + compose Compose + want composeV0 + }{ + { + name: "qcow2 compose", + compose: Compose{ + Blueprint: &bp, + ImageBuild: ImageBuild{ + ID: 0, + ImageType: &test_distro.TestImageType{}, + Manifest: []byte("JSON MANIFEST GOES HERE"), + Targets: []*target.Target{ + { + Uuid: uuid.MustParse("f53b49c0-d321-447e-8ab8-6e827891e3f0"), + ImageName: "", + Name: "org.osbuild.local", + Created: MustParseTime("2020-08-12T09:21:44.427717205-07:00"), + Status: common.IBWaiting, + Options: target.LocalTargetOptions{ + ComposeId: uuid.MustParse("6b512b52-1e9d-4dac-869c-108fd4860a3e"), + ImageBuildId: 0, + Filename: "disk.qcow2", + }, + }, + }, + JobCreated: MustParseTime("2020-08-12T09:21:50.07040195-07:00"), + JobStarted: MustParseTime("0001-01-01T00:00:00Z"), + JobFinished: MustParseTime("0001-01-01T00:00:00Z"), + Size: 2147483648, + JobID: uuid.MustParse("22445cd3-7fa5-4dca-b7f8-4f9857b3e3a0"), + QueueStatus: common.IBFinished, + }, + }, + want: composeV0{ + Blueprint: &bp, + ImageBuilds: []imageBuildV0{ + { + ID: 0, + ImageType: "test_type", + Manifest: []byte("JSON MANIFEST GOES HERE"), + Targets: []*target.Target{ + { + Uuid: uuid.MustParse("f53b49c0-d321-447e-8ab8-6e827891e3f0"), + ImageName: "", + Name: "org.osbuild.local", + Created: MustParseTime("2020-08-12T09:21:44.427717205-07:00"), + Status: common.IBWaiting, + Options: target.LocalTargetOptions{ + ComposeId: uuid.MustParse("6b512b52-1e9d-4dac-869c-108fd4860a3e"), + ImageBuildId: 0, + Filename: "disk.qcow2", + }, + }, + }, + JobCreated: MustParseTime("2020-08-12T09:21:50.07040195-07:00"), + JobStarted: MustParseTime("0001-01-01T00:00:00Z"), + JobFinished: MustParseTime("0001-01-01T00:00:00Z"), + Size: 2147483648, + JobID: uuid.MustParse("22445cd3-7fa5-4dca-b7f8-4f9857b3e3a0"), + QueueStatus: common.IBFinished, + }, + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := newComposeV0(tt.compose); !reflect.DeepEqual(got, tt.want) { + t.Errorf("newComposeV0() = %#v, want %#v", got, tt.want) + } + }) + } +} + +func Test_newComposeFromV0(t *testing.T) { + bp := blueprint.Blueprint{ + Name: "tmux", + Description: "tmux blueprint", + Version: "0.0.1", + Packages: []blueprint.Package{ + {Name: "tmux", Version: "*"}}, + } + + tests := []struct { + name string + compose composeV0 + arch distro.Arch + want Compose + errOk bool + }{ + { + name: "empty", + compose: composeV0{}, + arch: &test_distro.TestArch{}, + want: Compose{}, + errOk: true, + }, + { + name: "qcow2 compose", + arch: &test_distro.TestArch{}, + errOk: false, + compose: composeV0{ + Blueprint: &bp, + ImageBuilds: []imageBuildV0{ + { + ID: 0, + ImageType: "test_type", + Manifest: []byte("JSON MANIFEST GOES HERE"), + Targets: []*target.Target{ + { + Uuid: uuid.MustParse("f53b49c0-d321-447e-8ab8-6e827891e3f0"), + ImageName: "", + Name: "org.osbuild.local", + Created: MustParseTime("2020-08-12T09:21:44.427717205-07:00"), + Status: common.IBWaiting, + Options: target.LocalTargetOptions{ + ComposeId: uuid.MustParse("6b512b52-1e9d-4dac-869c-108fd4860a3e"), + ImageBuildId: 0, + Filename: "disk.qcow2", + }, + }, + }, + JobCreated: MustParseTime("2020-08-12T09:21:50.07040195-07:00"), + JobStarted: MustParseTime("0001-01-01T00:00:00Z"), + JobFinished: MustParseTime("0001-01-01T00:00:00Z"), + Size: 2147483648, + JobID: uuid.MustParse("22445cd3-7fa5-4dca-b7f8-4f9857b3e3a0"), + QueueStatus: common.IBFinished, + }, + }, + }, + want: Compose{ + Blueprint: &bp, + ImageBuild: ImageBuild{ + ID: 0, + ImageType: &test_distro.TestImageType{}, + Manifest: []byte("JSON MANIFEST GOES HERE"), + Targets: []*target.Target{ + { + Uuid: uuid.MustParse("f53b49c0-d321-447e-8ab8-6e827891e3f0"), + ImageName: "", + Name: "org.osbuild.local", + Created: MustParseTime("2020-08-12T09:21:44.427717205-07:00"), + Status: common.IBWaiting, + Options: target.LocalTargetOptions{ + ComposeId: uuid.MustParse("6b512b52-1e9d-4dac-869c-108fd4860a3e"), + ImageBuildId: 0, + Filename: "disk.qcow2", + }, + }, + }, + JobCreated: MustParseTime("2020-08-12T09:21:50.07040195-07:00"), + JobStarted: MustParseTime("0001-01-01T00:00:00Z"), + JobFinished: MustParseTime("0001-01-01T00:00:00Z"), + Size: 2147483648, + JobID: uuid.MustParse("22445cd3-7fa5-4dca-b7f8-4f9857b3e3a0"), + QueueStatus: common.IBFinished, + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := newComposeFromV0(tt.compose, tt.arch) + if err != nil { + if !tt.errOk { + t.Errorf("newComposeFromV0() error = %v", err) + } + } else if !reflect.DeepEqual(got, tt.want) { + t.Errorf("newComposeFromV0() = %#v, want %#v", got, tt.want) + } + }) + } +} + +func Test_newComposesV0(t *testing.T) { + bp := blueprint.Blueprint{ + Name: "tmux", + Description: "tmux blueprint", + Version: "0.0.1", + Packages: []blueprint.Package{ + {Name: "tmux", Version: "*"}}, + } + + tests := []struct { + name string + composes map[uuid.UUID]Compose + want composesV0 + }{ + { + name: "two composes", + composes: map[uuid.UUID]Compose{ + uuid.MustParse("f53b49c0-d321-447e-8ab8-6e827891e3f0"): { + Blueprint: &bp, + ImageBuild: ImageBuild{ + ID: 0, + ImageType: &test_distro.TestImageType{}, + Manifest: []byte("JSON MANIFEST GOES HERE"), + Targets: []*target.Target{ + { + Uuid: uuid.MustParse("f53b49c0-d321-447e-8ab8-6e827891e3f0"), + ImageName: "", + Name: "org.osbuild.local", + Created: MustParseTime("2020-08-12T09:21:44.427717205-07:00"), + Status: common.IBWaiting, + Options: target.LocalTargetOptions{ + ComposeId: uuid.MustParse("6b512b52-1e9d-4dac-869c-108fd4860a3e"), + ImageBuildId: 0, + Filename: "disk.qcow2", + }, + }, + }, + JobCreated: MustParseTime("2020-08-12T09:21:50.07040195-07:00"), + JobStarted: MustParseTime("0001-01-01T00:00:00Z"), + JobFinished: MustParseTime("0001-01-01T00:00:00Z"), + Size: 2147483648, + JobID: uuid.MustParse("22445cd3-7fa5-4dca-b7f8-4f9857b3e3a0"), + QueueStatus: common.IBFinished, + }, + }, + uuid.MustParse("14c454d0-26f3-4a56-8ceb-a5673aaba686"): { + Blueprint: &bp, + ImageBuild: ImageBuild{ + ID: 0, + ImageType: &test_distro.TestImageType{}, + Manifest: []byte("JSON MANIFEST GOES HERE"), + Targets: []*target.Target{ + { + Uuid: uuid.MustParse("14c454d0-26f3-4a56-8ceb-a5673aaba686"), + ImageName: "", + Name: "org.osbuild.local", + Created: MustParseTime("2020-08-12T09:21:44.427717205-07:00"), + Status: common.IBWaiting, + Options: target.LocalTargetOptions{ + ComposeId: uuid.MustParse("14c454d0-26f3-4a56-8ceb-a5673aaba686"), + ImageBuildId: 0, + Filename: "disk.qcow2", + }, + }, + }, + JobCreated: MustParseTime("2020-08-12T09:21:50.07040195-07:00"), + JobStarted: MustParseTime("0001-01-01T00:00:00Z"), + JobFinished: MustParseTime("0001-01-01T00:00:00Z"), + Size: 2147483648, + JobID: uuid.MustParse("6ac04049-341a-4297-b50b-5424bec9f193"), + QueueStatus: common.IBFinished, + }, + }, + }, + want: composesV0{ + uuid.MustParse("f53b49c0-d321-447e-8ab8-6e827891e3f0"): { + Blueprint: &bp, + ImageBuilds: []imageBuildV0{ + imageBuildV0{ + ID: 0, + ImageType: "test_type", + Manifest: []byte("JSON MANIFEST GOES HERE"), + Targets: []*target.Target{ + { + Uuid: uuid.MustParse("f53b49c0-d321-447e-8ab8-6e827891e3f0"), + ImageName: "", + Name: "org.osbuild.local", + Created: MustParseTime("2020-08-12T09:21:44.427717205-07:00"), + Status: common.IBWaiting, + Options: target.LocalTargetOptions{ + ComposeId: uuid.MustParse("6b512b52-1e9d-4dac-869c-108fd4860a3e"), + ImageBuildId: 0, + Filename: "disk.qcow2", + }, + }, + }, + JobCreated: MustParseTime("2020-08-12T09:21:50.07040195-07:00"), + JobStarted: MustParseTime("0001-01-01T00:00:00Z"), + JobFinished: MustParseTime("0001-01-01T00:00:00Z"), + Size: 2147483648, + JobID: uuid.MustParse("22445cd3-7fa5-4dca-b7f8-4f9857b3e3a0"), + QueueStatus: common.IBFinished, + }, + }, + }, + uuid.MustParse("14c454d0-26f3-4a56-8ceb-a5673aaba686"): { + Blueprint: &bp, + ImageBuilds: []imageBuildV0{ + imageBuildV0{ + ID: 0, + ImageType: "test_type", + Manifest: []byte("JSON MANIFEST GOES HERE"), + Targets: []*target.Target{ + { + Uuid: uuid.MustParse("14c454d0-26f3-4a56-8ceb-a5673aaba686"), + ImageName: "", + Name: "org.osbuild.local", + Created: MustParseTime("2020-08-12T09:21:44.427717205-07:00"), + Status: common.IBWaiting, + Options: target.LocalTargetOptions{ + ComposeId: uuid.MustParse("14c454d0-26f3-4a56-8ceb-a5673aaba686"), + ImageBuildId: 0, + Filename: "disk.qcow2", + }, + }, + }, + JobCreated: MustParseTime("2020-08-12T09:21:50.07040195-07:00"), + JobStarted: MustParseTime("0001-01-01T00:00:00Z"), + JobFinished: MustParseTime("0001-01-01T00:00:00Z"), + Size: 2147483648, + JobID: uuid.MustParse("6ac04049-341a-4297-b50b-5424bec9f193"), + QueueStatus: common.IBFinished, + }, + }, + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := newComposesV0(tt.composes); !reflect.DeepEqual(got, tt.want) { + t.Errorf("newComposesV0() = %#v, want %#v", got, tt.want) + } + }) + } +} + +func Test_newComposesFromV0(t *testing.T) { + bp := blueprint.Blueprint{ + Name: "tmux", + Description: "tmux blueprint", + Version: "0.0.1", + Packages: []blueprint.Package{ + {Name: "tmux", Version: "*"}}, + } + + tests := []struct { + name string + arch distro.Arch + composes composesV0 + want map[uuid.UUID]Compose + }{ + { + name: "empty", + arch: &test_distro.TestArch{}, + composes: composesV0{}, + want: make(map[uuid.UUID]Compose), + }, + { + name: "two composes", + arch: &test_distro.TestArch{}, + composes: composesV0{ + uuid.MustParse("f53b49c0-d321-447e-8ab8-6e827891e3f0"): { + Blueprint: &bp, + ImageBuilds: []imageBuildV0{ + { + ID: 0, + ImageType: "test_type", + Manifest: []byte("JSON MANIFEST GOES HERE"), + Targets: []*target.Target{ + { + Uuid: uuid.MustParse("f53b49c0-d321-447e-8ab8-6e827891e3f0"), + ImageName: "", + Name: "org.osbuild.local", + Created: MustParseTime("2020-08-12T09:21:44.427717205-07:00"), + Status: common.IBWaiting, + Options: target.LocalTargetOptions{ + ComposeId: uuid.MustParse("6b512b52-1e9d-4dac-869c-108fd4860a3e"), + ImageBuildId: 0, + Filename: "disk.qcow2", + }, + }, + }, + JobCreated: MustParseTime("2020-08-12T09:21:50.07040195-07:00"), + JobStarted: MustParseTime("0001-01-01T00:00:00Z"), + JobFinished: MustParseTime("0001-01-01T00:00:00Z"), + Size: 2147483648, + JobID: uuid.MustParse("22445cd3-7fa5-4dca-b7f8-4f9857b3e3a0"), + QueueStatus: common.IBFinished, + }, + }, + }, + uuid.MustParse("14c454d0-26f3-4a56-8ceb-a5673aaba686"): { + Blueprint: &bp, + ImageBuilds: []imageBuildV0{ + { + ID: 0, + ImageType: "test_type", + Manifest: []byte("JSON MANIFEST GOES HERE"), + Targets: []*target.Target{ + { + Uuid: uuid.MustParse("14c454d0-26f3-4a56-8ceb-a5673aaba686"), + ImageName: "", + Name: "org.osbuild.local", + Created: MustParseTime("2020-08-12T09:21:44.427717205-07:00"), + Status: common.IBWaiting, + Options: target.LocalTargetOptions{ + ComposeId: uuid.MustParse("14c454d0-26f3-4a56-8ceb-a5673aaba686"), + ImageBuildId: 0, + Filename: "disk.qcow2", + }, + }, + }, + JobCreated: MustParseTime("2020-08-12T09:21:50.07040195-07:00"), + JobStarted: MustParseTime("0001-01-01T00:00:00Z"), + JobFinished: MustParseTime("0001-01-01T00:00:00Z"), + Size: 2147483648, + JobID: uuid.MustParse("6ac04049-341a-4297-b50b-5424bec9f193"), + QueueStatus: common.IBFinished, + }, + }, + }, + }, + want: map[uuid.UUID]Compose{ + uuid.MustParse("f53b49c0-d321-447e-8ab8-6e827891e3f0"): { + Blueprint: &bp, + ImageBuild: ImageBuild{ + ID: 0, + ImageType: &test_distro.TestImageType{}, + Manifest: []byte("JSON MANIFEST GOES HERE"), + Targets: []*target.Target{ + { + Uuid: uuid.MustParse("f53b49c0-d321-447e-8ab8-6e827891e3f0"), + ImageName: "", + Name: "org.osbuild.local", + Created: MustParseTime("2020-08-12T09:21:44.427717205-07:00"), + Status: common.IBWaiting, + Options: target.LocalTargetOptions{ + ComposeId: uuid.MustParse("6b512b52-1e9d-4dac-869c-108fd4860a3e"), + ImageBuildId: 0, + Filename: "disk.qcow2", + }, + }, + }, + JobCreated: MustParseTime("2020-08-12T09:21:50.07040195-07:00"), + JobStarted: MustParseTime("0001-01-01T00:00:00Z"), + JobFinished: MustParseTime("0001-01-01T00:00:00Z"), + Size: 2147483648, + JobID: uuid.MustParse("22445cd3-7fa5-4dca-b7f8-4f9857b3e3a0"), + QueueStatus: common.IBFinished, + }, + }, + uuid.MustParse("14c454d0-26f3-4a56-8ceb-a5673aaba686"): { + Blueprint: &bp, + ImageBuild: ImageBuild{ + ID: 0, + ImageType: &test_distro.TestImageType{}, + Manifest: []byte("JSON MANIFEST GOES HERE"), + Targets: []*target.Target{ + { + Uuid: uuid.MustParse("14c454d0-26f3-4a56-8ceb-a5673aaba686"), + ImageName: "", + Name: "org.osbuild.local", + Created: MustParseTime("2020-08-12T09:21:44.427717205-07:00"), + Status: common.IBWaiting, + Options: target.LocalTargetOptions{ + ComposeId: uuid.MustParse("14c454d0-26f3-4a56-8ceb-a5673aaba686"), + ImageBuildId: 0, + Filename: "disk.qcow2", + }, + }, + }, + JobCreated: MustParseTime("2020-08-12T09:21:50.07040195-07:00"), + JobStarted: MustParseTime("0001-01-01T00:00:00Z"), + JobFinished: MustParseTime("0001-01-01T00:00:00Z"), + Size: 2147483648, + JobID: uuid.MustParse("6ac04049-341a-4297-b50b-5424bec9f193"), + QueueStatus: common.IBFinished, + }, + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := newComposesFromV0(tt.composes, tt.arch, nil); !reflect.DeepEqual(got, tt.want) { + t.Errorf("newComposesFromV0() = %#v, want %#v", got, tt.want) + } + }) + } +} + +func Test_newImageBuildFromV0(t *testing.T) { + tests := []struct { + name string + arch distro.Arch + ib imageBuildV0 + want ImageBuild + errOk bool + }{ + { + name: "empty", + arch: &test_distro.TestArch{}, + errOk: true, + ib: imageBuildV0{}, + want: ImageBuild{}, + }, + { + name: "qcow2 image build", + arch: &test_distro.TestArch{}, + errOk: false, + ib: imageBuildV0{ + ID: 0, + ImageType: "test_type", + Manifest: []byte("JSON MANIFEST GOES HERE"), + Targets: []*target.Target{ + { + Uuid: uuid.MustParse("f53b49c0-d321-447e-8ab8-6e827891e3f0"), + ImageName: "", + Name: "org.osbuild.local", + Created: MustParseTime("2020-08-12T09:21:44.427717205-07:00"), + Status: common.IBWaiting, + Options: target.LocalTargetOptions{ + ComposeId: uuid.MustParse("6b512b52-1e9d-4dac-869c-108fd4860a3e"), + ImageBuildId: 0, + Filename: "disk.qcow2", + }, + }, + }, + JobCreated: MustParseTime("2020-08-12T09:21:50.07040195-07:00"), + JobStarted: MustParseTime("0001-01-01T00:00:00Z"), + JobFinished: MustParseTime("0001-01-01T00:00:00Z"), + Size: 2147483648, + JobID: uuid.MustParse("22445cd3-7fa5-4dca-b7f8-4f9857b3e3a0"), + QueueStatus: common.IBFinished, + }, + want: ImageBuild{ + ID: 0, + ImageType: &test_distro.TestImageType{}, + Manifest: []byte("JSON MANIFEST GOES HERE"), + Targets: []*target.Target{ + { + Uuid: uuid.MustParse("f53b49c0-d321-447e-8ab8-6e827891e3f0"), + ImageName: "", + Name: "org.osbuild.local", + Created: MustParseTime("2020-08-12T09:21:44.427717205-07:00"), + Status: common.IBWaiting, + Options: target.LocalTargetOptions{ + ComposeId: uuid.MustParse("6b512b52-1e9d-4dac-869c-108fd4860a3e"), + ImageBuildId: 0, + Filename: "disk.qcow2", + }, + }, + }, + JobCreated: MustParseTime("2020-08-12T09:21:50.07040195-07:00"), + JobStarted: MustParseTime("0001-01-01T00:00:00Z"), + JobFinished: MustParseTime("0001-01-01T00:00:00Z"), + Size: 2147483648, + JobID: uuid.MustParse("22445cd3-7fa5-4dca-b7f8-4f9857b3e3a0"), + QueueStatus: common.IBFinished, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := newImageBuildFromV0(tt.ib, tt.arch) + if err != nil { + if !tt.errOk { + t.Errorf("newImageBuildFromV0() error = %v", err) + } + } else if !reflect.DeepEqual(got, tt.want) { + t.Errorf("newImageBuildFromV0() = %#v, want %#v", got, tt.want) + } + }) + } +} diff --git a/internal/store/store.go b/internal/store/store.go new file mode 100644 index 0000000..5dbd84d --- /dev/null +++ b/internal/store/store.go @@ -0,0 +1,547 @@ +// Package store contains primitives for representing and changing the +// osbuild-composer state. +package store + +import ( + "crypto/rand" + "crypto/sha1" + "encoding/hex" + "errors" + "fmt" + "log" + "sort" + "sync" + "time" + + "github.com/osbuild/osbuild-composer/internal/distro" + "github.com/osbuild/osbuild-composer/internal/jsondb" + + "github.com/osbuild/osbuild-composer/internal/blueprint" + "github.com/osbuild/osbuild-composer/internal/common" + "github.com/osbuild/osbuild-composer/internal/rpmmd" + "github.com/osbuild/osbuild-composer/internal/target" + + "github.com/google/uuid" +) + +// StoreDBName is the name under which to save the store to the underlying jsondb +const StoreDBName = "state" + +// A Store contains all the persistent state of osbuild-composer, and is serialized +// on every change, and deserialized on start. +type Store struct { + blueprints map[string]blueprint.Blueprint + workspace map[string]blueprint.Blueprint + composes map[uuid.UUID]Compose + sources map[string]SourceConfig + blueprintsChanges map[string]map[string]blueprint.Change + blueprintsCommits map[string][]string + + mu sync.RWMutex // protects all fields + stateDir *string + db *jsondb.JSONDatabase +} + +type SourceConfig struct { + Name string `json:"name" toml:"name"` + Type string `json:"type" toml:"type"` + URL string `json:"url" toml:"url"` + CheckGPG bool `json:"check_gpg" toml:"check_gpg"` + CheckSSL bool `json:"check_ssl" toml:"check_ssl"` + System bool `json:"system" toml:"system"` +} + +type NotFoundError struct { + message string +} + +func (e *NotFoundError) Error() string { + return e.message +} + +type NoLocalTargetError struct { + message string +} + +func (e *NoLocalTargetError) Error() string { + return e.message +} + +func New(stateDir *string, arch distro.Arch, log *log.Logger) *Store { + var storeStruct storeV0 + var db *jsondb.JSONDatabase + + if stateDir != nil { + db = jsondb.New(*stateDir, 0600) + _, err := db.Read(StoreDBName, &storeStruct) + if err != nil && log != nil { + log.Fatalf("cannot read state: %v", err) + } + } + + store := newStoreFromV0(storeStruct, arch, log) + + store.stateDir = stateDir + store.db = db + + return store +} + +func randomSHA1String() (string, error) { + hash := sha1.New() + data := make([]byte, 20) + n, err := rand.Read(data) + if err != nil { + return "", err + } else if n != 20 { + return "", errors.New("randomSHA1String: short read from rand") + } + _, err = hash.Write(data) + if err != nil { + return "", err + } + return hex.EncodeToString(hash.Sum(nil)), nil +} + +func (s *Store) change(f func() error) error { + s.mu.Lock() + defer s.mu.Unlock() + + result := f() + + if s.stateDir != nil { + err := s.db.Write(StoreDBName, s.toStoreV0()) + if err != nil { + panic(err) + } + } + + return result +} + +func (s *Store) ListBlueprints() []string { + s.mu.RLock() + defer s.mu.RUnlock() + + names := make([]string, 0, len(s.blueprints)) + for name := range s.blueprints { + names = append(names, name) + } + sort.Strings(names) + + return names +} + +func (s *Store) GetBlueprint(name string) (*blueprint.Blueprint, bool) { + s.mu.RLock() + defer s.mu.RUnlock() + + bp, inWorkspace := s.workspace[name] + if !inWorkspace { + var ok bool + bp, ok = s.blueprints[name] + if !ok { + return nil, false + } + } + + return &bp, inWorkspace +} + +func (s *Store) GetBlueprintCommitted(name string) *blueprint.Blueprint { + s.mu.RLock() + defer s.mu.RUnlock() + + bp, ok := s.blueprints[name] + if !ok { + return nil + } + + return &bp +} + +// GetBlueprintChange returns a specific change to a blueprint +// If the blueprint or change do not exist then an error is returned +func (s *Store) GetBlueprintChange(name string, commit string) (*blueprint.Change, error) { + s.mu.RLock() + defer s.mu.RUnlock() + + if _, ok := s.blueprintsChanges[name]; !ok { + return nil, errors.New("Unknown blueprint") + } + change, ok := s.blueprintsChanges[name][commit] + if !ok { + return nil, errors.New("Unknown commit") + } + return &change, nil +} + +// GetBlueprintChanges returns the list of changes, oldest first +func (s *Store) GetBlueprintChanges(name string) []blueprint.Change { + s.mu.RLock() + defer s.mu.RUnlock() + + var changes []blueprint.Change + + for _, commit := range s.blueprintsCommits[name] { + changes = append(changes, s.blueprintsChanges[name][commit]) + } + + return changes +} + +func (s *Store) PushBlueprint(bp blueprint.Blueprint, commitMsg string) error { + return s.change(func() error { + commit, err := randomSHA1String() + if err != nil { + return err + } + + // Make sure the blueprint has default values and that the version is valid + err = bp.Initialize() + if err != nil { + return err + } + + timestamp := time.Now().Format("2006-01-02T15:04:05Z") + change := blueprint.Change{ + Commit: commit, + Message: commitMsg, + Timestamp: timestamp, + Blueprint: bp, + } + + delete(s.workspace, bp.Name) + if s.blueprintsChanges[bp.Name] == nil { + s.blueprintsChanges[bp.Name] = make(map[string]blueprint.Change) + } + s.blueprintsChanges[bp.Name][commit] = change + // Keep track of the order of the commits + s.blueprintsCommits[bp.Name] = append(s.blueprintsCommits[bp.Name], commit) + + if old, ok := s.blueprints[bp.Name]; ok { + if bp.Version == "" || bp.Version == old.Version { + bp.BumpVersion(old.Version) + } + } + s.blueprints[bp.Name] = bp + return nil + }) +} + +func (s *Store) PushBlueprintToWorkspace(bp blueprint.Blueprint) error { + return s.change(func() error { + // Make sure the blueprint has default values and that the version is valid + err := bp.Initialize() + if err != nil { + return err + } + + s.workspace[bp.Name] = bp + return nil + }) +} + +// DeleteBlueprint will remove the named blueprint from the store +// if the blueprint does not exist it will return an error +// The workspace copy is deleted unconditionally, it will not return an error if it does not exist. +func (s *Store) DeleteBlueprint(name string) error { + return s.change(func() error { + delete(s.workspace, name) + if _, ok := s.blueprints[name]; !ok { + return fmt.Errorf("Unknown blueprint: %s", name) + } + delete(s.blueprints, name) + return nil + }) +} + +// DeleteBlueprintFromWorkspace deletes the workspace copy of a blueprint +// if the blueprint doesn't exist in the workspace it returns an error +func (s *Store) DeleteBlueprintFromWorkspace(name string) error { + return s.change(func() error { + if _, ok := s.workspace[name]; !ok { + return fmt.Errorf("Unknown blueprint: %s", name) + } + delete(s.workspace, name) + return nil + }) +} + +// TagBlueprint will tag the most recent commit +// It will return an error if the blueprint doesn't exist +func (s *Store) TagBlueprint(name string) error { + return s.change(func() error { + _, ok := s.blueprints[name] + if !ok { + return errors.New("Unknown blueprint") + } + + if len(s.blueprintsCommits[name]) == 0 { + return errors.New("No commits for blueprint") + } + + latest := s.blueprintsCommits[name][len(s.blueprintsCommits[name])-1] + // If the most recent commit already has a revision, don't bump it + if s.blueprintsChanges[name][latest].Revision != nil { + return nil + } + + // Get the latest revision for this blueprint + var revision int + var change blueprint.Change + for i := len(s.blueprintsCommits[name]) - 1; i >= 0; i-- { + commit := s.blueprintsCommits[name][i] + change = s.blueprintsChanges[name][commit] + if change.Revision != nil && *change.Revision > revision { + revision = *change.Revision + break + } + } + + // Bump the revision (if there was none it will start at 1) + revision++ + change.Revision = &revision + s.blueprintsChanges[name][latest] = change + return nil + }) +} + +func (s *Store) GetCompose(id uuid.UUID) (Compose, bool) { + s.mu.RLock() + defer s.mu.RUnlock() + + compose, exists := s.composes[id] + return compose, exists +} + +// GetAllComposes creates a deep copy of all composes present in this store +// and returns them as a dictionary with compose UUIDs as keys +func (s *Store) GetAllComposes() map[uuid.UUID]Compose { + s.mu.RLock() + defer s.mu.RUnlock() + + composes := make(map[uuid.UUID]Compose) + + for id, singleCompose := range s.composes { + newCompose := singleCompose.DeepCopy() + composes[id] = newCompose + } + + return composes +} + +func (s *Store) PushCompose(composeID uuid.UUID, manifest distro.Manifest, imageType distro.ImageType, bp *blueprint.Blueprint, size uint64, targets []*target.Target, jobId uuid.UUID) error { + if _, exists := s.GetCompose(composeID); exists { + panic("a compose with this id already exists") + } + + if targets == nil { + targets = []*target.Target{} + } + + // FIXME: handle or comment this possible error + _ = s.change(func() error { + s.composes[composeID] = Compose{ + Blueprint: bp, + ImageBuild: ImageBuild{ + Manifest: manifest, + ImageType: imageType, + Targets: targets, + JobCreated: time.Now(), + Size: size, + JobID: jobId, + }, + } + return nil + }) + return nil +} + +// PushTestCompose is used for testing +// Set testSuccess to create a fake successful compose, otherwise it will create a failed compose +// It does not actually run a compose job +func (s *Store) PushTestCompose(composeID uuid.UUID, manifest distro.Manifest, imageType distro.ImageType, bp *blueprint.Blueprint, size uint64, targets []*target.Target, testSuccess bool) error { + if targets == nil { + targets = []*target.Target{} + } + + var status common.ImageBuildState + if testSuccess { + status = common.IBFinished + } else { + status = common.IBFailed + } + + // FIXME: handle or comment this possible error + _ = s.change(func() error { + s.composes[composeID] = Compose{ + Blueprint: bp, + ImageBuild: ImageBuild{ + QueueStatus: status, + Manifest: manifest, + ImageType: imageType, + Targets: targets, + JobCreated: time.Now(), + JobStarted: time.Now(), + Size: size, + }, + } + return nil + }) + + return nil +} + +// DeleteCompose deletes the compose from the state file and also removes all files on disk that are +// associated with this compose +func (s *Store) DeleteCompose(id uuid.UUID) error { + return s.change(func() error { + if _, exists := s.composes[id]; !exists { + return &NotFoundError{} + } + + delete(s.composes, id) + + return nil + }) +} + +// PushSource stores a SourceConfig in store.Sources +func (s *Store) PushSource(key string, source SourceConfig) { + // FIXME: handle or comment this possible error + _ = s.change(func() error { + s.sources[key] = source + return nil + }) +} + +// DeleteSourceByName removes a SourceConfig from store.Sources using the .Name field +func (s *Store) DeleteSourceByName(name string) { + // FIXME: handle or comment this possible error + _ = s.change(func() error { + for key := range s.sources { + if s.sources[key].Name == name { + delete(s.sources, key) + return nil + } + } + return nil + }) +} + +// DeleteSourceByID removes a SourceConfig from store.Sources using the ID +func (s *Store) DeleteSourceByID(key string) { + // FIXME: handle or comment this possible error + _ = s.change(func() error { + delete(s.sources, key) + return nil + }) +} + +// ListSourcesByName returns the repo source names +// Name is different than Id, it can be a full description of the repo +func (s *Store) ListSourcesByName() []string { + s.mu.RLock() + defer s.mu.RUnlock() + names := make([]string, 0, len(s.sources)) + for _, source := range s.sources { + names = append(names, source.Name) + } + sort.Strings(names) + + return names +} + +// ListSourcesById returns the repo source id +// Id is a short identifier for the repo, not a full name description +func (s *Store) ListSourcesById() []string { + s.mu.RLock() + defer s.mu.RUnlock() + names := make([]string, 0, len(s.sources)) + for name := range s.sources { + names = append(names, name) + } + sort.Strings(names) + + return names +} + +func (s *Store) GetSource(name string) *SourceConfig { + s.mu.RLock() + defer s.mu.RUnlock() + + source, ok := s.sources[name] + if !ok { + return nil + } + return &source +} + +// GetAllSourcesByName returns the sources using the repo name as the key +func (s *Store) GetAllSourcesByName() map[string]SourceConfig { + s.mu.RLock() + defer s.mu.RUnlock() + + sources := make(map[string]SourceConfig) + + for _, v := range s.sources { + sources[v.Name] = v + } + + return sources +} + +// GetAllSourcesByID returns the sources using the repo id as the key +func (s *Store) GetAllSourcesByID() map[string]SourceConfig { + s.mu.RLock() + defer s.mu.RUnlock() + + sources := make(map[string]SourceConfig) + + for k, v := range s.sources { + sources[k] = v + } + + return sources +} + +func NewSourceConfig(repo rpmmd.RepoConfig, system bool) SourceConfig { + sc := SourceConfig{ + Name: repo.Name, + CheckGPG: repo.CheckGPG, + CheckSSL: !repo.IgnoreSSL, + System: system, + } + + if repo.BaseURL != "" { + sc.URL = repo.BaseURL + sc.Type = "yum-baseurl" + } else if repo.Metalink != "" { + sc.URL = repo.Metalink + sc.Type = "yum-metalink" + } else if repo.MirrorList != "" { + sc.URL = repo.MirrorList + sc.Type = "yum-mirrorlist" + } + + return sc +} + +func (s *SourceConfig) RepoConfig(name string) rpmmd.RepoConfig { + var repo rpmmd.RepoConfig + + repo.Name = name + repo.IgnoreSSL = !s.CheckSSL + repo.CheckGPG = s.CheckGPG + + if s.Type == "yum-baseurl" { + repo.BaseURL = s.URL + } else if s.Type == "yum-metalink" { + repo.Metalink = s.URL + } else if s.Type == "yum-mirrorlist" { + repo.MirrorList = s.URL + } + + return repo +} diff --git a/internal/store/store_test.go b/internal/store/store_test.go new file mode 100644 index 0000000..674b073 --- /dev/null +++ b/internal/store/store_test.go @@ -0,0 +1,403 @@ +package store + +import ( + "io/ioutil" + "os" + "testing" + "time" + + "github.com/google/uuid" + "github.com/stretchr/testify/suite" + + "github.com/osbuild/osbuild-composer/internal/blueprint" + "github.com/osbuild/osbuild-composer/internal/common" + "github.com/osbuild/osbuild-composer/internal/distro" + "github.com/osbuild/osbuild-composer/internal/distro/test_distro" + "github.com/osbuild/osbuild-composer/internal/osbuild" + "github.com/osbuild/osbuild-composer/internal/rpmmd" + "github.com/osbuild/osbuild-composer/internal/target" +) + +//struct for sharing state between tests +type storeTest struct { + suite.Suite + dir string + myStore *Store + myCustomizations blueprint.Customizations + myBP blueprint.Blueprint + CommitHash string + myChange blueprint.Change + myTarget *target.Target + mySources map[string]osbuild.Source + myCompose Compose + myImageBuild ImageBuild + mySourceConfig SourceConfig + myDistro *test_distro.TestDistro + myArch distro.Arch + myImageType distro.ImageType + myManifest distro.Manifest + myRepoConfig []rpmmd.RepoConfig + myPackageSpec []rpmmd.PackageSpec + myImageOptions distro.ImageOptions +} + +//func to initialize some default values before the suite is ran +func (suite *storeTest) SetupSuite() { + suite.myRepoConfig = []rpmmd.RepoConfig{rpmmd.RepoConfig{ + Name: "testRepo", + MirrorList: "testURL", + }} + suite.myPackageSpec = []rpmmd.PackageSpec{rpmmd.PackageSpec{}} + suite.myDistro = test_distro.New() + suite.myArch, _ = suite.myDistro.GetArch("test_arch") + suite.myImageType, _ = suite.myArch.GetImageType("test_type") + suite.myManifest, _ = suite.myImageType.Manifest(&suite.myCustomizations, suite.myImageOptions, suite.myRepoConfig, nil, suite.myPackageSpec) + suite.mySourceConfig = SourceConfig{ + Name: "testSourceConfig", + } + suite.myCompose = Compose{ + Blueprint: &suite.myBP, + ImageBuild: suite.myImageBuild, + } + suite.myImageBuild = ImageBuild{ + ID: 123, + } + suite.mySources = make(map[string]osbuild.Source) + suite.myCustomizations = blueprint.Customizations{} + suite.myBP = blueprint.Blueprint{ + Name: "testBP", + Description: "Testing blueprint", + Version: "0.0.1", + Packages: []blueprint.Package{ + {Name: "test1", Version: "*"}}, + Modules: []blueprint.Package{ + {Name: "test2", Version: "*"}}, + Groups: []blueprint.Group{ + {Name: "test3"}}, + Customizations: &suite.myCustomizations, + } + suite.CommitHash = "firstCommit" + suite.myChange = blueprint.Change{ + Commit: "firstCommit", + Message: "firstCommitMessage", + Revision: nil, + Timestamp: "now", + Blueprint: suite.myBP, + } + suite.myTarget = &target.Target{ + Uuid: uuid.New(), + ImageName: "ImageName", + Name: "Name", + Created: time.Now(), + Options: nil, + } + +} + +//setup before each test +func (suite *storeTest) SetupTest() { + tmpDir, err := ioutil.TempDir("/tmp", "osbuild-composer-test-") + suite.NoError(err) + distro := test_distro.New() + arch, err := distro.GetArch("test_arch") + suite.NoError(err) + suite.dir = tmpDir + suite.myStore = New(&suite.dir, arch, nil) +} + +//teardown after each test +func (suite *storeTest) TearDownTest() { + os.RemoveAll(suite.dir) +} + +func (suite *storeTest) TestRandomSHA1String() { + hash, err := randomSHA1String() + suite.NoError(err) + suite.Len(hash, 40) +} + +//Check initial state of fields +func (suite *storeTest) TestNewEmpty() { + suite.Empty(suite.myStore.blueprints) + suite.Empty(suite.myStore.workspace) + suite.Empty(suite.myStore.composes) + suite.Empty(suite.myStore.sources) + suite.Empty(suite.myStore.blueprintsChanges) + suite.Empty(suite.myStore.blueprintsCommits) + suite.Equal(&suite.dir, suite.myStore.stateDir) +} + +//Push a blueprint +func (suite *storeTest) TestPushBlueprint() { + suite.myStore.PushBlueprint(suite.myBP, "testing commit") + suite.Equal(suite.myBP, suite.myStore.blueprints["testBP"]) + //force a version bump + suite.myStore.PushBlueprint(suite.myBP, "testing commit") + suite.Equal("0.0.2", suite.myStore.blueprints["testBP"].Version) +} + +//List the blueprint +func (suite *storeTest) TestListBlueprints() { + suite.myStore.blueprints["testBP"] = suite.myBP + suite.Equal([]string{"testBP"}, suite.myStore.ListBlueprints()) +} + +//Push a blueprint to workspace +func (suite *storeTest) TestPushBlueprintToWorkspace() { + suite.NoError(suite.myStore.PushBlueprintToWorkspace(suite.myBP)) + suite.Equal(suite.myBP, suite.myStore.workspace["testBP"]) +} + +func (suite *storeTest) TestGetBlueprint() { + suite.myStore.blueprints["testBP"] = suite.myBP + suite.myStore.workspace["WIPtestBP"] = suite.myBP + //Get pushed BP + actualBP, inWorkspace := suite.myStore.GetBlueprint("testBP") + suite.Equal(&suite.myBP, actualBP) + suite.False(inWorkspace) + //Get BP in worskapce + actualBP, inWorkspace = suite.myStore.GetBlueprint("WIPtestBP") + suite.Equal(&suite.myBP, actualBP) + suite.True(inWorkspace) + //Try to get a non existing BP + actualBP, inWorkspace = suite.myStore.GetBlueprint("Non_existing_BP") + suite.Empty(actualBP) + suite.False(inWorkspace) +} + +func (suite *storeTest) TestGetBlueprintCommited() { + suite.myStore.blueprints["testBP"] = suite.myBP + //Get pushed BP + actualBP := suite.myStore.GetBlueprintCommitted("testBP") + suite.Equal(&suite.myBP, actualBP) + //Try to get workspace BP + actualBP = suite.myStore.GetBlueprintCommitted("WIPtestBP") + suite.Empty(actualBP) +} + +func (suite *storeTest) TestGetBlueprintChanges() { + suite.myStore.blueprintsCommits["testBP"] = []string{"firstCommit", "secondCommit"} + actualChanges := suite.myStore.GetBlueprintChanges("testBP") + suite.Len(actualChanges, 2) +} + +func (suite *storeTest) TestGetBlueprintChange() { + Commit := make(map[string]blueprint.Change) + Commit[suite.CommitHash] = suite.myChange + suite.myStore.blueprintsCommits["testBP"] = []string{suite.CommitHash} + suite.myStore.blueprintsChanges["testBP"] = Commit + + actualChange, err := suite.myStore.GetBlueprintChange("testBP", suite.CommitHash) + suite.NoError(err) + expectedChange := suite.myChange + suite.Equal(&expectedChange, actualChange) + + //Try to get non existing BP + actualChange, err = suite.myStore.GetBlueprintChange("Non_existing_BP", suite.CommitHash) + suite.Nil(actualChange) + suite.EqualError(err, "Unknown blueprint") + + //Try to get a non existing Commit + actualChange, err = suite.myStore.GetBlueprintChange("testBP", "Non_existing_commit") + suite.Nil(actualChange) + suite.EqualError(err, "Unknown commit") +} + +func (suite *storeTest) TestTagBlueprint() { + Commit := make(map[string]blueprint.Change) + Commit[suite.CommitHash] = suite.myChange + suite.myStore.blueprints["testBP"] = suite.myBP + suite.myStore.blueprintsCommits["testBP"] = []string{suite.CommitHash} + suite.myStore.blueprintsChanges["testBP"] = Commit + + //Check that the blueprints change has no revision + suite.Nil(suite.myStore.blueprintsChanges["testBP"][suite.CommitHash].Revision) + suite.NoError(suite.myStore.TagBlueprint("testBP")) + //The blueprints change should have a revision now + actualRevision := suite.myStore.blueprintsChanges["testBP"][suite.CommitHash].Revision + suite.Equal(1, *actualRevision) + //Try to tag it again (should not change) + suite.NoError(suite.myStore.TagBlueprint("testBP")) + suite.Equal(1, *actualRevision) + //Try to tag a non existing BNP + suite.EqualError(suite.myStore.TagBlueprint("Non_existing_BP"), "Unknown blueprint") + //Remove commits from a blueprint and try to tag it + suite.myStore.blueprintsCommits["testBP"] = []string{} + suite.EqualError(suite.myStore.TagBlueprint("testBP"), "No commits for blueprint") +} + +func (suite *storeTest) TestDeleteBlueprint() { + suite.myStore.blueprints["testBP"] = suite.myBP + suite.NoError(suite.myStore.DeleteBlueprint("testBP")) + suite.Empty(suite.myStore.blueprints) + //Try to delete again (should return an error) + suite.EqualError(suite.myStore.DeleteBlueprint("testBP"), "Unknown blueprint: testBP") +} + +func (suite *storeTest) TestDeleteBlueprintFromWorkspace() { + suite.myStore.workspace["WIPtestBP"] = suite.myBP + suite.NoError(suite.myStore.DeleteBlueprintFromWorkspace("WIPtestBP")) + suite.Empty(suite.myStore.workspace) + //Try to delete again (should return an error) + suite.EqualError(suite.myStore.DeleteBlueprintFromWorkspace("WIPtestBP"), "Unknown blueprint: WIPtestBP") +} + +func (suite *storeTest) TestPushCompose() { + testID := uuid.New() + err := suite.myStore.PushCompose(testID, suite.myManifest, suite.myImageType, &suite.myBP, 123, nil, uuid.New()) + suite.NoError(err) + suite.Panics(func() { + err = suite.myStore.PushCompose(testID, suite.myManifest, suite.myImageType, &suite.myBP, 123, []*target.Target{suite.myTarget}, uuid.New()) + }) + suite.NoError(err) + testID = uuid.New() +} + +func (suite *storeTest) TestPushTestCompose() { + ID := uuid.New() + err := suite.myStore.PushTestCompose(ID, suite.myManifest, suite.myImageType, &suite.myBP, 123, nil, true) + suite.NoError(err) + suite.Equal(common.ImageBuildState(2), suite.myStore.composes[ID].ImageBuild.QueueStatus) + ID = uuid.New() + err = suite.myStore.PushTestCompose(ID, suite.myManifest, suite.myImageType, &suite.myBP, 123, []*target.Target{suite.myTarget}, false) + suite.NoError(err) + suite.Equal(common.ImageBuildState(3), suite.myStore.composes[ID].ImageBuild.QueueStatus) + +} + +func (suite *storeTest) TestGetAllComposes() { + suite.myStore.composes = make(map[uuid.UUID]Compose) + suite.myStore.composes[uuid.New()] = suite.myCompose + compose := suite.myStore.GetAllComposes() + suite.Equal(suite.myStore.composes, compose) +} + +func (suite *storeTest) TestDeleteCompose() { + ID := uuid.New() + suite.myStore.composes = make(map[uuid.UUID]Compose) + suite.myStore.composes[ID] = suite.myCompose + err := suite.myStore.DeleteCompose(ID) + suite.NoError(err) + suite.Equal(suite.myStore.composes, map[uuid.UUID]Compose{}) + err = suite.myStore.DeleteCompose(ID) + suite.Error(err) +} + +func (suite *storeTest) TestDeleteSourceByName() { + suite.myStore.sources = make(map[string]SourceConfig) + suite.myStore.sources["testSource"] = suite.mySourceConfig + suite.myStore.DeleteSourceByName("testSourceConfig") + suite.Equal(map[string]SourceConfig{}, suite.myStore.sources) +} + +func (suite *storeTest) TestDeleteSourceByID() { + suite.myStore.sources = make(map[string]SourceConfig) + suite.myStore.sources["testSource"] = suite.mySourceConfig + suite.myStore.DeleteSourceByID("testSource") + suite.Equal(map[string]SourceConfig{}, suite.myStore.sources) +} + +func (suite *storeTest) TestPushSource() { + expectedSource := map[string]SourceConfig{"testKey": SourceConfig{Name: "testSourceConfig", Type: "", URL: "", CheckGPG: false, CheckSSL: false, System: false}} + suite.myStore.PushSource("testKey", suite.mySourceConfig) + suite.Equal(expectedSource, suite.myStore.sources) +} + +func (suite *storeTest) TestListSourcesByName() { + suite.myStore.sources = make(map[string]SourceConfig) + suite.myStore.sources["testSource"] = suite.mySourceConfig + actualSources := suite.myStore.ListSourcesByName() + suite.Equal([]string([]string{"testSourceConfig"}), actualSources) +} + +func (suite *storeTest) TestListSourcesById() { + suite.myStore.sources = make(map[string]SourceConfig) + suite.myStore.sources["testSource"] = suite.mySourceConfig + actualSources := suite.myStore.ListSourcesById() + suite.Equal([]string([]string{"testSource"}), actualSources) +} + +func (suite *storeTest) TestGetSource() { + suite.myStore.sources = make(map[string]SourceConfig) + suite.myStore.sources["testSource"] = suite.mySourceConfig + expectedSource := SourceConfig(SourceConfig{Name: "testSourceConfig", Type: "", URL: "", CheckGPG: false, CheckSSL: false, System: false}) + actualSource := suite.myStore.GetSource("testSource") + suite.Equal(&expectedSource, actualSource) + actualSource = suite.myStore.GetSource("nonExistingSource") + suite.Nil(actualSource) +} + +func (suite *storeTest) TestGetAllSourcesByName() { + suite.myStore.sources = make(map[string]SourceConfig) + suite.myStore.sources["testSource"] = suite.mySourceConfig + expectedSource := map[string]SourceConfig{"testSourceConfig": SourceConfig{Name: "testSourceConfig", Type: "", URL: "", CheckGPG: false, CheckSSL: false, System: false}} + actualSource := suite.myStore.GetAllSourcesByName() + suite.Equal(expectedSource, actualSource) +} + +func (suite *storeTest) TestGetAllSourcesByID() { + suite.myStore.sources = make(map[string]SourceConfig) + suite.myStore.sources["testSource"] = suite.mySourceConfig + expectedSource := map[string]SourceConfig{"testSource": SourceConfig{Name: "testSourceConfig", Type: "", URL: "", CheckGPG: false, CheckSSL: false, System: false}} + actualSource := suite.myStore.GetAllSourcesByID() + suite.Equal(expectedSource, actualSource) +} + +func (suite *storeTest) TestNewSourceConfigWithBaseURL() { + myRepoConfig := rpmmd.RepoConfig{ + Name: "testRepo", + BaseURL: "testURL", + CheckGPG: true, + } + expectedSource := SourceConfig{Name: "testRepo", Type: "yum-baseurl", URL: "testURL", CheckGPG: true, CheckSSL: true, System: true} + actualSource := NewSourceConfig(myRepoConfig, true) + suite.Equal(expectedSource, actualSource) +} + +func (suite *storeTest) TestNewSourceConfigWithMetaLink() { + myRepoConfig := rpmmd.RepoConfig{ + Name: "testRepo", + Metalink: "testURL", + CheckGPG: true, + } + expectedSource := SourceConfig{Name: "testRepo", Type: "yum-metalink", URL: "testURL", CheckGPG: true, CheckSSL: true, System: true} + actualSource := NewSourceConfig(myRepoConfig, true) + suite.Equal(expectedSource, actualSource) +} + +func (suite *storeTest) TestNewSourceConfigWithMirrorList() { + myRepoConfig := rpmmd.RepoConfig{ + Name: "testRepo", + MirrorList: "testURL", + } + expectedSource := SourceConfig{Name: "testRepo", Type: "yum-mirrorlist", URL: "testURL", CheckGPG: false, CheckSSL: true, System: true} + actualSource := NewSourceConfig(myRepoConfig, true) + suite.Equal(expectedSource, actualSource) +} + +func (suite *storeTest) TestRepoConfigBaseURL() { + expectedRepo := rpmmd.RepoConfig{Name: "testSourceConfig", BaseURL: "testURL", Metalink: "", MirrorList: "", GPGKey: "", IgnoreSSL: true, MetadataExpire: ""} + suite.mySourceConfig.Type = "yum-baseurl" + suite.mySourceConfig.URL = "testURL" + actualRepo := suite.mySourceConfig.RepoConfig("testSourceConfig") + suite.Equal(expectedRepo, actualRepo) +} + +func (suite *storeTest) TestRepoConfigMetalink() { + expectedRepo := rpmmd.RepoConfig{Name: "testSourceConfig", BaseURL: "", Metalink: "testURL", MirrorList: "", GPGKey: "", IgnoreSSL: true, MetadataExpire: ""} + suite.mySourceConfig.Type = "yum-metalink" + suite.mySourceConfig.URL = "testURL" + actualRepo := suite.mySourceConfig.RepoConfig("testSourceConfig") + suite.Equal(expectedRepo, actualRepo) +} + +func (suite *storeTest) TestRepoConfigMirrorlist() { + expectedRepo := rpmmd.RepoConfig{Name: "testSourceConfig", BaseURL: "", Metalink: "", MirrorList: "testURL", GPGKey: "", IgnoreSSL: true, MetadataExpire: ""} + suite.mySourceConfig.Type = "yum-mirrorlist" + suite.mySourceConfig.URL = "testURL" + actualRepo := suite.mySourceConfig.RepoConfig("testSourceConfig") + suite.Equal(expectedRepo, actualRepo) +} +func TestStore(t *testing.T) { + suite.Run(t, new(storeTest)) +} diff --git a/internal/store/test/state-v12.json b/internal/store/test/state-v12.json new file mode 100644 index 0000000..bab7bbe --- /dev/null +++ b/internal/store/test/state-v12.json @@ -0,0 +1 @@ +{"blueprints":{"my-blueprint-1":{"name":"my-blueprint-1","description":"My first blueprint","version":"0.0.1","packages":[{"name":"tmux"}],"modules":[],"groups":[{"name":"core"}]}},"workspace":{"my-blueprint-2":{"name":"my-blueprint-2","description":"My second blueprint","version":"0.0.2","packages":[],"modules":[],"groups":[],"customizations":{"hostname":"my-host","kernel":{"append":"debug"},"sshkey":[{"user":"me","key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost"}],"user":[{"name":"myself","description":"Mostly harmless.","password":"password","key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost","home":"/home/my-home","shell":"/bin/true","groups":["wheel"],"uid":42,"gid":42}]}}},"composes":{"d04cba52-6269-495c-892f-c1cf94382164":{"blueprint":{"name":"my-blueprint-2","description":"My second blueprint","version":"0.0.2","packages":null,"modules":null,"groups":null,"customizations":{"hostname":"my-host","kernel":{"append":"debug"},"sshkey":[{"user":"me","key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost"}],"user":[{"name":"myself","description":"Mostly harmless.","password":"password","key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost","home":"/home/my-home","shell":"/bin/true","groups":["wheel"],"uid":42,"gid":42}]}},"image_builds":[{"id":0,"image_type":"qcow2","manifest":{"sources":{"org.osbuild.files":{"urls":{"sha256:0079ca4f9bd2df6d8dd84d9ec6a0250bb32c64b8abf5785a2889d1ad7eabc90d":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libsss_certmap-2.3.0-1.fc32.x86_64.rpm","sha256:01705d02dcf229b9b69ce8e97c81346a9c0e444ee07c43681895294577281775":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libsecret-0.20.3-1.fc32.x86_64.rpm","sha256:024dd8a75eb5472692d0291292d25939b97a0295e5ab0958dcd22600d392eaae":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/r/rsync-3.1.3-11.fc32.x86_64.rpm","sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-six-1.14.0-2.fc32.noarch.rpm","sha256:02de6f2778310a36a3e4dfd47f9c35c67140e77c4142371ae126f6478cdf46be":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/d/dnf-4.2.21-1.fc32.noarch.rpm","sha256:0353b55c967a79bba2bf46e0c9f8a14297f555a0b7a4e4c79ccbdbca81b010f3":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/s/sssd-nfs-idmap-2.3.0-1.fc32.x86_64.rpm","sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.x86_64.rpm","sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/langpacks-en-3.0-3.fc32.noarch.rpm","sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/geolite2-country-20191217-2.fc32.noarch.rpm","sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libtasn1-4.16.0-1.fc32.x86_64.rpm","sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/i/iproute-tc-5.5.0-1.fc32.x86_64.rpm","sha256:0c84ca581adcd4ce0d258ad78b29bf08f3f9d7135c69d85be96167c4df5cface":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/c/console-login-helper-messages-issuegen-0.18.1-1.fc32.noarch.rpm","sha256:0d4393708282029b372343241060b3916b31e991b18b93d7c9d002d4438f1a9c":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libnfsidmap-2.4.3-1.rc2.fc32.x86_64.rpm","sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libselinux-3.0-3.fc32.x86_64.rpm","sha256:0ee42cf758be23b9e87406e99969e9a1693b5e01adb1d67b7823eb82e5b7025d":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/g/grub2-common-2.04-19.fc32.noarch.rpm","sha256:0f29f9c9a8ac60616c4f606508067a8f97443780b0425e29ef0bec8e1cbb876a":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/s/selinux-policy-3.14.5-39.fc32.noarch.rpm","sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-7.fc32.x86_64.rpm","sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/f/filesystem-3.14-2.fc32.x86_64.rpm","sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/cpio-2.13-4.fc32.x86_64.rpm","sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.31-2.fc32.x86_64.rpm","sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.x86_64.rpm","sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libselinux-utils-3.0-3.fc32.x86_64.rpm","sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/passwd-0.80-8.fc32.x86_64.rpm","sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/pigz-2.4-6.fc32.x86_64.rpm","sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-policycoreutils-3.0-2.fc32.noarch.rpm","sha256:16702883a79532a400d7304146cdb47b0599983b9fb48ab918ef9fa1ce0be394":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libtalloc-2.3.1-2.fc32.x86_64.rpm","sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/gmp-6.1.2-13.fc32.x86_64.rpm","sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/diffutils-3.7-4.fc32.x86_64.rpm","sha256:19b0dec8fce924341e35a9165bcc384843a77498db5ca435521b12212233adf2":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/o/openssh-clients-8.3p1-1.fc32.x86_64.rpm","sha256:1a19c6f772fe9d1e339333639756d28fbc33d552b6ac734510291fd22a88a6a5":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libzstd-1.4.5-3.fc32.x86_64.rpm","sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.x86_64.rpm","sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libksba-1.3.5-11.fc32.x86_64.rpm","sha256:1bb8798507c8999d4f59465527bdcf64b95266f6e885f84e0253117dc146d83a":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/g/gettext-libs-0.20.2-1.fc32.x86_64.rpm","sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libcap-2.26-7.fc32.x86_64.rpm","sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/x/xz-5.2.5-1.fc32.x86_64.rpm","sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libmnl-1.0.4-11.fc32.x86_64.rpm","sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/systemd-245.4-1.fc32.x86_64.rpm","sha256:1e1e9900e9d3a2b8eb6684060672526948df2cb9f751e7d72cb4fa5bffe71747":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/cloud-init-19.4-2.fc32.noarch.rpm","sha256:1ec0d908c774fa4efa15029e21d9d160e24e10b040357d64b4224e90b3b7d3c2":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-unbound-1.10.1-1.fc32.x86_64.rpm","sha256:1ec745d027098ff44efd29e56c03801be3f2dd7c1e1b9e23388d0916e340593e":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/n/NetworkManager-1.22.12-1.fc32.x86_64.rpm","sha256:1f5c2af3943f9212b8ecd8349c76908047594b44ffa670d833899826c3a83441":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/g/gnupg2-smime-2.2.20-2.fc32.x86_64.rpm","sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libidn2-2.3.0-2.fc32.x86_64.rpm","sha256:20ad2f907034a1c3e76dd4691886223bf588ff946fd57545ecdfcd58bc4c3b4b":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libuuid-2.35.2-1.fc32.x86_64.rpm","sha256:223ed731b03d273f2e7f36528ea10804d2b05e4ead7613d69dc9cdb1542a33be":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/c/console-login-helper-messages-0.18.1-1.fc32.noarch.rpm","sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm","sha256:24520e03276e0d850169efc9d83b12a9a01eee5d7202dadca12d2e0a8b7352ba":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.31-2.fc32.x86_64.rpm","sha256:25ae9056f75df4efff0d17d916e7c3889c421368613acec7f1c4119bd17eac13":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.24-1.fc32.x86_64.rpm","sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm","sha256:26cca773f1f258105f0f825a8e0faebcaa183655b5d91cd972afbe791b586478":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-44.fc32.x86_64.rpm","sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.x86_64.rpm","sha256:26fa850e30bf0ea42b3d8a573ed58b62eeeaec754a051eaea3e768e29673144d":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libtextstyle-0.20.2-1.fc32.x86_64.rpm","sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libss-1.45.5-3.fc32.x86_64.rpm","sha256:280b880de2f5c6bbd8e000c63dff495533925893ef02cc599222cdb3c7586a22":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/m/mtools-4.0.24-1.fc32.x86_64.rpm","sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/f/file-5.38-2.fc32.x86_64.rpm","sha256:287e95efe7718018c583b49892b89257f2dec97e0a144ffb4ea0863865a0a926":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/i/ipcalc-0.4.1-1.fc32.x86_64.rpm","sha256:28fd8db75d20cf14174cad3a5c2cd740d899ee2a064c48b892981b154e94a4d0":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-libcomps-0.1.15-1.fc32.x86_64.rpm","sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libsepol-3.0-3.fc32.x86_64.rpm","sha256:2ad9ccdab138ec355fe3132dbcaa381491b80949841000e764f17945753fc77a":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/o/openssl-1.1.1g-1.fc32.x86_64.rpm","sha256:2b6853be09f6155dbbddfb25c9bd65d289493f9d1f51c891b4539b9245739dd0":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libstdc++-10.1.1-1.fc32.x86_64.rpm","sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/less-551-3.fc32.x86_64.rpm","sha256:2bbe073544977e15c66507fb382b46349f46f773365511aba63353014f17dd28":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-3.fc32.1.x86_64.rpm","sha256:2c68b021959911bd946c5d43d3c6ebdf3dcae378e4ee1e68f98780b94616cc87":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libssh-0.9.4-2.fc32.x86_64.rpm","sha256:2c8e76fcc1ad8197ffdb66d06fb498a1129e71e0f7c04a05176867e5788bbf05":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libmount-2.35.2-1.fc32.x86_64.rpm","sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/t/tar-1.32-4.fc32.x86_64.rpm","sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.x86_64.rpm","sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/systemd-udev-245.4-1.fc32.x86_64.rpm","sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.x86_64.rpm","sha256:36778f8a4fa111c4f796bbea8fd52f7b9708de8f4351070faa30bc985db59885":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libtdb-1.4.3-2.fc32.x86_64.rpm","sha256:3882823d0eb18e0e8146584f4a32a4801961f6fdc09075607746317eba3265be":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-urllib3-1.25.7-3.fc32.noarch.rpm","sha256:391faab010ca30610a14e0b3d54fbc0331be39bc831086fb877f8021fe4b171f":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-oauthlib-3.0.2-5.fc32.noarch.rpm","sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/chrony-3.5-8.fc32.x86_64.rpm","sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64.rpm","sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm","sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/n/npth-1.6-4.fc32.x86_64.rpm","sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/kmod-27-1.fc32.x86_64.rpm","sha256:3ff527ad844ae60ef49d79a420dfec69b20d01187218c831f43814779d568ac1":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/d/dnf-plugins-core-4.0.15-1.fc32.noarch.rpm","sha256:4158624697b461fbcb28b325922445a7c164d72723c4c9975f6bc3a9d2dd3f3a":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/d/dbus-broker-23-2.fc32.x86_64.rpm","sha256:417dab5baecca2da19780bdc1098e0f09bad94c1dc4c31ad7f123a96ec01ce1f":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/e/elfutils-libelf-0.179-2.fc32.x86_64.rpm","sha256:419e497c76ba728fe8eeb254bf3ff2e22bcd3e3480a0215b286dbeb019caf398":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/g/grub2-pc-2.04-19.fc32.x86_64.rpm","sha256:4296471e898b26f01fcf2b420728e39e8f50f0015f7e7c686807a6e86efc69a1":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-pip-19.3.1-3.fc32.noarch.rpm","sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-40.fc32.x86_64.rpm","sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libcom_err-1.45.5-3.fc32.x86_64.rpm","sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-2.fc32.x86_64.rpm","sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/o/os-prober-1.77-4.fc32.x86_64.rpm","sha256:463d8259936601d23a02c407a4fb294c0e3bc9a213282c4525137bc1b18bbf6b":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/u/unbound-libs-1.10.1-1.fc32.x86_64.rpm","sha256:46407b730b272223b8b64d12df0725af571b4a5c5ab89b9f41e12a49e07c6e6b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/c-ares-1.15.0-5.fc32.x86_64.rpm","sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-4.fc32.x86_64.rpm","sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/q/qemu-img-4.2.0-7.fc32.x86_64.rpm","sha256:47c21130eb66c93ffc5c9528606d4c02ce5d9cdeb784baa031cb98e7ddbac9c3":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-libs-3.8.3-1.fc32.x86_64.rpm","sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dracut-config-generic-050-26.git20200316.fc32.x86_64.rpm","sha256:4860a733ca3f22089c6c283cbdcf53123a702d60b5bffdd4fe9d76826f91139a":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-prettytable-0.7.2-22.fc32.noarch.rpm","sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dhcp-common-4.4.2-5.b1.fc32.noarch.rpm","sha256:4929636a918bb0af18de939fabd41b4e998dfd3aeb3693a02d7b05377bc0f18f":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libtirpc-1.2.6-0.fc32.x86_64.rpm","sha256:495db9bd35d0631b2813ba2b8f10b284be56b2f23e56123674857e6d7e9853cf":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libgcc-10.1.1-1.fc32.x86_64.rpm","sha256:4b9da0cedada16eb80a2d66b86aa62c9b026501e13a3e947a5a03a06f41d9dbb":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/parted-3.3-3.fc32.x86_64.rpm","sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/pam-1.3.1-24.fc32.x86_64.rpm","sha256:4c9d77d63ddc7dda0e018fc1c97d46025794e336e58d838a631fcc130dfa3b9b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-jsonpatch-1.21-11.fc32.noarch.rpm","sha256:4d80736f9a52519104eeb228eb1ea95d0d6e9addc766eebacc9a5137fb2a5977":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/u/util-linux-2.35.2-1.fc32.x86_64.rpm","sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/shadow-utils-4.8.1-2.fc32.x86_64.rpm","sha256:4e066ace8364aba9311fa74f4a87c21f98091bc1af5a6a4daa06441469234041":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/syslinux-extlinux-nonlinux-6.04-0.13.fc32.noarch.rpm","sha256:4eb5b62f33ac69aeddad8b0cc017d6cef909d8b8ffd45cd833d43044d115ce67":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/g/glib2-2.64.3-1.fc32.x86_64.rpm","sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libndp-1.7-5.fc32.x86_64.rpm","sha256:50308833a750fcba4422052e5dd6f72a4691340813c803ef157283621ed35215":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libsolv-0.7.12-1.fc32.x86_64.rpm","sha256:506b1d8ba1f1fbf138a94de6a1705da12360c81e6797cb60df488c87e9a366fe":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-libs-4.15.1-3.fc32.1.x86_64.rpm","sha256:51a1a7b6eb8b1e9158ef775e4087836349d0012fd5ec46e082deaa8367400353":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/f/fedora-release-common-32-2.noarch.rpm","sha256:53823a669b4ab38d3ab58a6d8524e47f9d7c6998e006b9b5cab59dc1e5b47f88":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-plugin-selinux-4.15.1-3.fc32.1.x86_64.rpm","sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-9.fc32.x86_64.rpm","sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/gzip-1.10-2.fc32.x86_64.rpm","sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libsemanage-3.0-3.fc32.x86_64.rpm","sha256:55bafcdf9c31b1456af3bf584bfe7ac745a03f4decd17197ea97b498d68b3b82":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-libsemanage-3.0-3.fc32.x86_64.rpm","sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/kmod-libs-27-1.fc32.x86_64.rpm","sha256:56ecdfc358f2149bc9f6fd38161d33fe45177c11059fd813143c8d314b1019fc":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/j/json-c-0.13.1-13.fc32.x86_64.rpm","sha256:5719dd2fb399cadec08b4ac41c794239d2a2de2f012faeb970ab90a07bba0084":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-babel-2.8.0-2.fc32.noarch.rpm","sha256:5978ef81620bea4c5634d5ea93f162e61a83aabeeab35f29e8506ea66bb016ad":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libxcrypt-compat-4.4.16-3.fc32.x86_64.rpm","sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libassuan-2.5.3-3.fc32.x86_64.rpm","sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch.rpm","sha256:5b7e8c9fc5f038530130a02af79ed7dbbc34804b22338edf9f16354818d04351":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/c/coreutils-8.32-4.fc32.1.x86_64.rpm","sha256:5d43a1d2f9d3e3e1e0d6c3cc09bf2850a689b226bbf2c200abb5d0aebc351455":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libxcrypt-4.4.16-3.fc32.x86_64.rpm","sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.x86_64.rpm","sha256:5e74c26703101a54a70deb68b7e24092f35338c142862933f650776290c5d87f":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libfido2-1.3.1-2.fc32.x86_64.rpm","sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-3.fc32.x86_64.rpm","sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm","sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm","sha256:61c51596cc97f35177efe8dc5e2ca52d8fd528570f33c184497f419259b73c90":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-idna-2.8-6.fc32.noarch.rpm","sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.x86_64.rpm","sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libcroco-0.6.13-3.fc32.x86_64.rpm","sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/m/mkpasswd-5.5.6-1.fc32.x86_64.rpm","sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libattr-2.4.48-8.fc32.x86_64.rpm","sha256:6615aae3def0c49910e43e2d69f7ae8852694953dceb4b6235b5cf4099296d70":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-jsonpointer-1.10-19.fc32.noarch.rpm","sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libdb-5.3.28-40.fc32.x86_64.rpm","sha256:6890a9545194ad6cf1b0c58e5273132171a9ced9cb665a1442aa62b6b6d3d2ea":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-jsonschema-3.2.0-2.fc32.noarch.rpm","sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-font-en-3.0-3.fc32.noarch.rpm","sha256:6a59645a1336fcfed2c045e1cd7fc8969e1727b28b5b8dcf35c69bdef7c4d0a4":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/g/grub2-tools-2.04-19.fc32.x86_64.rpm","sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-dbus-1.2.16-1.fc32.x86_64.rpm","sha256:6baf7b9b0d84b51cf059d00ab923ed763e804136c1b1098128be8396a72f548e":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-dnf-plugins-core-4.0.15-1.fc32.noarch.rpm","sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-10.fc32.x86_64.rpm","sha256:6f5f53b66f7c3bf6958f6f163788583265ff0360188620c3b0f7ddedeac3d1f4":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-setools-4.3.0-1.fc32.x86_64.rpm","sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/t/tss2-1331-4.fc32.x86_64.rpm","sha256:6fac977d63ca18d28a1fba1b0a9fe24b6973fbc3c5aace97091f401fe57cce9a":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/e/elfutils-libs-0.179-2.fc32.x86_64.rpm","sha256:6fc1181ed798617668f195579acfcf8fb212513a776f376eecfb3d086c66b2d9":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libref_array-0.1.5-44.fc32.x86_64.rpm","sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm","sha256:6fc3d1a25b34a2d434b3481331359175cec06f115d63db3299ade82609cb278d":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/e/elfutils-default-yama-scope-0.179-2.fc32.noarch.rpm","sha256:703fb5ca1651bb72d8ab58576ce3d78c9479cbb2e78ff8666ae3a3d1cd9bb0da":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/checkpolicy-3.0-3.fc32.x86_64.rpm","sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/a/acl-2.2.53-5.fc32.x86_64.rpm","sha256:7124f9fedc862e3bab80f05b804b6c9580603ce3155727e888646d4d4f5ddc50":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-cffi-1.14.0-1.fc32.x86_64.rpm","sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm","sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libusbx-1.0.23-1.fc32.x86_64.rpm","sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm","sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/systemd-pam-245.4-1.fc32.x86_64.rpm","sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/grep-3.3-4.fc32.x86_64.rpm","sha256:7705a532986761cae92684e2dc9012ba37f10891c46096c57f2628be2b82d106":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/linux-firmware-whence-20200519-108.fc32.noarch.rpm","sha256:782953e28d5a059ca6592732e99cd3113db10e2a7ca78a44470e6ebc66f316fa":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libsss_sudo-2.3.0-1.fc32.x86_64.rpm","sha256:784186e517b8a48371a101c28ad7af608277e5bcbcc7d75c203f4a8f0d8cb2e2":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/y/yum-4.2.21-1.fc32.noarch.rpm","sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/systemd-libs-245.4-1.fc32.x86_64.rpm","sha256:78de81d45789ae9bccf6dd82f2b2835ac868f1a584e05d0e9f89f40bb4a202c7":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/syslinux-extlinux-6.04-0.13.fc32.x86_64.rpm","sha256:79fefe36917dc3f002d5a0c2ed15ab2dec4c66c9847b4b658047a4324e7be9d0":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-pytz-2020.1-1.fc32.noarch.rpm","sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/b/bash-5.0.11-2.fc32.x86_64.rpm","sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libevent-2.1.8-8.fc32.x86_64.rpm","sha256:7c2b9d82983189251cbe90d0debb6c0938d9a4f484332405b8d3582a618a0ccb":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-sign-libs-4.15.1-3.fc32.1.x86_64.rpm","sha256:7c5b1d5e9099b5314698573f542e88810b2571a05c5e25b3291d7d8d379f93ed":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/c/curl-7.69.1-3.fc32.x86_64.rpm","sha256:7c7eff31251dedcc3285a8b08c1b18f7fd9ee2e07dff86ad090f45a81e19e85e":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/polkit-pkla-compat-0.1-16.fc32.x86_64.rpm","sha256:7cca8885c45a4f801cb78c42597ddd35bb44c68c9181fbc7cb3f94bce320ec5c":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/c/crypto-policies-scripts-20200527-1.gitb234a47.fc32.noarch.rpm","sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libargon2-20171227-4.fc32.x86_64.rpm","sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm","sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/pinentry-1.1.0-7.fc32.x86_64.rpm","sha256:7e1ebb8cb74f5a1675085d6067c87ab4f1f9d21e1974d219f9d48fc468e2a7c5":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libcurl-7.69.1-3.fc32.x86_64.rpm","sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.x86_64.rpm","sha256:808e7209893298d11ac27f148c1b3d1a2b28e303e7930b43659a08dc0f660ac4":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/groff-base-1.22.3-21.fc32.x86_64.rpm","sha256:80cf220a3314f965c088e03d2b750426767db0b36b6b7c5e8059b9217ff4de6d":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/m/mozjs60-60.9.0-5.fc32.x86_64.rpm","sha256:81b6181b947d50e0a1ea681298417e552421d6714900d07a34dc25899e5c9f60":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-configobj-5.0.6-20.fc32.noarch.rpm","sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/geolite2-city-20191217-2.fc32.noarch.rpm","sha256:82a0c6703444fa28ab032b3e4aa355deabff92f3f39d5490faa5c9b9150eaceb":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libsmartcols-2.35.2-1.fc32.x86_64.rpm","sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/w/which-2.21-19.fc32.x86_64.rpm","sha256:8347e3ad3a1631e2df362f4105e40e046c0fde6626b549591b76426747c7d753":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/s/sssd-common-2.3.0-1.fc32.x86_64.rpm","sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.x86_64.rpm","sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/x/xz-libs-5.2.5-1.fc32.x86_64.rpm","sha256:860a309d10907bc4735c8af1513bc2f29633df73ab9a00c585ec994ec23f7f90":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/pcre2-syntax-10.35-1.fc32.noarch.rpm","sha256:860db405a0e85d81f1fa5450a8b05dab7e170920231c812caae3a48b4fc87e48":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/linux-firmware-20200519-108.fc32.noarch.rpm","sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/cracklib-2.9.6-22.fc32.x86_64.rpm","sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/i/iproute-5.5.0-1.fc32.x86_64.rpm","sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-2.fc32.x86_64.rpm","sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libffi-3.1-24.fc32.x86_64.rpm","sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/f/fonts-filesystem-2.0.3-1.fc32.noarch.rpm","sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.x86_64.rpm","sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-en-3.0-3.fc32.noarch.rpm","sha256:888fae3e1c57f0d389c3678e0bb292bf7cfcccf798c55c8c60f08eba61608717":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-pyrsistent-0.16.0-1.fc32.x86_64.rpm","sha256:88c92b121d4cec2a457772ef54270f07b3e755ece739a2fdbc446ffd08f21f00":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/g/gnupg2-2.2.20-2.fc32.x86_64.rpm","sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/popt-1.16-19.fc32.x86_64.rpm","sha256:8c047278ce11e7ba7169a9c9537c3c6544f52c7eee8754179acd839ed59c028f":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dhcp-client-4.4.2-5.b1.fc32.x86_64.rpm","sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-3.0-2.fc32.x86_64.rpm","sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libnl3-3.5.0-2.fc32.x86_64.rpm","sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/e/expat-2.2.8-2.fc32.x86_64.rpm","sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-7.fc32.noarch.rpm","sha256:924367aa63693da4660dcb806fbf52b3bcb7c4d12b40c4b4ba6329079936d073":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/n/net-tools-2.0-0.56.20160912git.fc32.x86_64.rpm","sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/pcre-8.44-1.fc32.x86_64.rpm","sha256:93417d6ae53af8f0a8ecd54a60700624b47f562f355a8b60eb9de9598bc3599b":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/s/sssd-kcm-2.3.0-1.fc32.x86_64.rpm","sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-5.fc32.noarch.rpm","sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libsigsegv-2.11-10.fc32.x86_64.rpm","sha256:95a13407e6f4c40c731655053e99f955fd56f66fafadd5f7f0e7c04fa58ffe8b":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-rpm-4.15.1-3.fc32.1.x86_64.rpm","sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm","sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/j/jansson-2.12-5.fc32.x86_64.rpm","sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.x86_64.rpm","sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dracut-050-26.git20200316.fc32.x86_64.rpm","sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libedit-3.1-32.20191231cvs.fc32.x86_64.rpm","sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libgpg-error-1.36-3.fc32.x86_64.rpm","sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libyaml-0.2.2-3.fc32.x86_64.rpm","sha256:9d4691918d7add910e8c03d61cccda0316b62d77b30ac2e502cf2e55289d1823":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libcollection-0.7.0-44.fc32.x86_64.rpm","sha256:9dbf41afbd3b67340971e5b4fc61ccd2358f045019915d97d3fbc5bc6541fe0e":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-dnf-4.2.21-1.fc32.noarch.rpm","sha256:9ebb22c37f0f44203bc579625757b18cbf7dd751de2959d3a4235f56d4b748ad":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python-pip-wheel-19.3.1-3.fc32.noarch.rpm","sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libpwquality-1.4.2-2.fc32.x86_64.rpm","sha256:9f179bd9e552ee6cb2e6e9b638a53161709441e42ff3dfad56856470fd3117e8":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/n/NetworkManager-libnm-1.22.12-1.fc32.x86_64.rpm","sha256:9f453039643c37e6b71f93d7d65a821bdd8939791ab5a52a376751a63229ab39":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/g/gnutls-3.6.13-4.fc32.x86_64.rpm","sha256:a01c177ed13a098094ffc202a1390069ec47f59a3f54293d984d906464ec2834":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/f/fedora-release-32-2.noarch.rpm","sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/kbd-2.2.0-1.fc32.x86_64.rpm","sha256:a0b87b2dc3c5f536e94d6a4f3563a621dfbc067a62c3d1fe69bdb70c3cecec57":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-pycparser-2.19-2.fc32.noarch.rpm","sha256:a107b3d3790a5bcfdc28f6f4718969039b103a681a2647f3cbcb82cf92e97acb":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-pyserial-3.4-7.fc32.noarch.rpm","sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/shared-mime-info-1.15-3.fc32.x86_64.rpm","sha256:a2ad5970a8d117e9216e2e1e70f8b8247a25dc0a556e5fcba245f73ced3283bf":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libgomp-10.1.1-1.fc32.x86_64.rpm","sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm","sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm","sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libaio-0.3.111-7.fc32.x86_64.rpm","sha256:a63900b34fef430d9afa5dcbad6ea8b727f8d2aa730d64ee899e5c298c8278ff":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/s/sssd-client-2.3.0-1.fc32.x86_64.rpm","sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch.rpm","sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libxml2-2.9.10-3.fc32.x86_64.rpm","sha256:a8123a1759678459d974a0f6cace694ebcca37fd0841c84ec99718f0e3a2a2ad":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libsss_idmap-2.3.0-1.fc32.x86_64.rpm","sha256:a883c4ecd38b3208be7f52555aa529d746da55488951b5b47e130313b753a8c3":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/s/selinux-policy-targeted-3.14.5-39.fc32.noarch.rpm","sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libnghttp2-1.40.0-2.fc32.x86_64.rpm","sha256:a95e0092daedde142a4ed2dc6589bd4f4dee36bc69ad982bcb42351f9975c994":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/librepo-1.11.3-1.fc32.x86_64.rpm","sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libbrotli-1.0.7-10.fc32.x86_64.rpm","sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/o/openldap-2.4.47-4.fc32.x86_64.rpm","sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.x86_64.rpm","sha256:af88353a1f306849da587aa4c49b1104caff506e84cc6d6805e844c937d37d56":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/c/coreutils-common-8.32-4.fc32.1.x86_64.rpm","sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm","sha256:affae36e6d8dccdd9048ca24fcc2e87f83f08c27636c1e70f081625f445df320":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libdnf-0.47.0-1.fc32.x86_64.rpm","sha256:b079eacd62d18714a20dbaf853e3184f21f1262c8a7f4d4c6de47d66e28ca036":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/o/openssh-8.3p1-1.fc32.x86_64.rpm","sha256:b1111e77a5fdbacaa04acc90d3844706158bc5892173862928705620b8910adb":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm","sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libcbor-0.5.0-7.fc32.x86_64.rpm","sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/n/ncurses-6.1-15.20191109.fc32.x86_64.rpm","sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libpcap-1.9.1-3.fc32.x86_64.rpm","sha256:b4053e72ef23e59a43b4f77b0f3abeb92c4b72c9df7d4f62572560edfbfa02a4":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libarchive-3.4.3-1.fc32.x86_64.rpm","sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libuser-0.62-24.fc32.x86_64.rpm","sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libcap-ng-0.7.10-2.fc32.x86_64.rpm","sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-5.fc32.x86_64.rpm","sha256:b906f2e1a8045b0b895ff0a8196ca41822ba495731338debb6f21129d4bc51c2":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libssh-config-0.9.4-2.fc32.noarch.rpm","sha256:bb8942d19e594c0f4ca181bd58796bd5d3cb681c3f17cd2ec2654c3afe28e39a":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-cryptography-2.8-3.fc32.x86_64.rpm","sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/i/initscripts-10.02-3.fc32.x86_64.rpm","sha256:bcb07748c8688c788ec69c3a33c0abd1bb3a496b9aa09b5729265670bc7ba0eb":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-attrs-19.3.0-2.fc32.noarch.rpm","sha256:be1358f7c9accf20d34d468264e88019c9b30a0e77b58726b221c0fcd66560f7":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-3.8.3-1.fc32.x86_64.rpm","sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/psmisc-23.3-3.fc32.x86_64.rpm","sha256:beaca54bd436c280070054af7343947f739cf8ab8789e955ca9ea1a620950f76":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/o/openssh-server-8.3p1-1.fc32.x86_64.rpm","sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/n/nettle-3.5.1-5.fc32.x86_64.rpm","sha256:c05d01195aa4ca0f4a471574cc7ece8a0f4daf437935d845cd0745e2512cb9c9":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-markupsafe-1.1.1-5.fc32.x86_64.rpm","sha256:c0a0c6f3e30c20815496be8de00f9596737e2693feb85f7484f200ffa9174530":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libpipeline-1.5.2-2.fc32.x86_64.rpm","sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/z/zlib-1.2.11-21.fc32.x86_64.rpm","sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/device-mapper-1.02.171-1.fc32.x86_64.rpm","sha256:c13c7da4b097499576861cb12fdd02e520af69b5f23d615b3968c54f40f8fd47":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-pyyaml-5.3.1-1.fc32.x86_64.rpm","sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.x86_64.rpm","sha256:c23c45c7d0040856ac295aab919b3953dec18f54c98fcc95775948b283a67656":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/g/gpgme-1.13.1-7.fc32.x86_64.rpm","sha256:c2c4278b5355cd340f349302fd99c88443e4f87d542a210ad52747d773f73bfb":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/f/fedora-release-cloud-32-2.noarch.rpm","sha256:c2f7b54f06f9bac66c8f13ed80d217a718670a4fdb10cb44692eeb5426131d6b":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libmodulemd-2.9.3-1.fc32.x86_64.rpm","sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dosfstools-4.1-10.fc32.x86_64.rpm","sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/a/alternatives-1.11-6.fc32.x86_64.rpm","sha256:c6ada06d383423665aa32c638ecdc40c54ee0b1b866c6396f9533d8691ad53e2":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-gpg-1.13.1-7.fc32.x86_64.rpm","sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch.rpm","sha256:c7e5d5de11d4c791596ca39d1587c50caba0e06f12a7c24c5d40421d291cd661":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/f/findutils-4.7.0-4.fc32.x86_64.rpm","sha256:c84a5e00f504e0f60aa02cac7eb5cde57ed7958f2965ea2fce0c7e9cd0ff532b":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-4.15.1-3.fc32.1.x86_64.rpm","sha256:c9a3aef41c86259a7bb6dba7febb780737a1237ca8ff1c205797ead5951be712":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/v/vim-minimal-8.2.806-1.fc32.x86_64.rpm","sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-26.fc32.x86_64.rpm","sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/r/rootfiles-8.1-27.fc32.noarch.rpm","sha256:ca540fb7088948fdfe6e6b52a5e2b6a74d2d17136857da9f3f4a1ee29c8eb74b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libdhash-0.5.0-44.fc32.x86_64.rpm","sha256:ca80c458fab5bdde0276702f06217d1219085428560af6039aa1c5cf1e58ff3b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/m/man-db-2.9.0-2.fc32.x86_64.rpm","sha256:cbdc61d713e4cbe52b2bece117912da0f1e3782cb3b33caa068e96c854c990be":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/grubby-8.40-40.fc32.x86_64.rpm","sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm","sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-4.fc32.x86_64.rpm","sha256:ce1a80b0ba6f09a7e5a188436088dd31d10c5f7b43dbe9c1788f705127c8e6b2":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-44.fc32.x86_64.rpm","sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libpsl-0.21.0-4.fc32.x86_64.rpm","sha256:cfad2b3209d56d57f624640a06ea70238be35eaa702cd32b81f62a1df83cca14":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/g/gettext-0.20.2-1.fc32.x86_64.rpm","sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm","sha256:d0bc781a80be1d1fe204ec6b26255240261d55f6e24a28343572f2221a00533e":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-jwt-1.7.1-7.fc32.noarch.rpm","sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/gawk-5.0.1-7.fc32.x86_64.rpm","sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/polkit-libs-0.116-7.fc32.x86_64.rpm","sha256:d43d17930e5fedbbeb2a45bdbfff713485c6cd01ca6cbb9443370192e73daf40":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libblkid-2.35.2-1.fc32.x86_64.rpm","sha256:d46293795b113fe996bebd2056f7b05f187f0bdcd3186b5012a8b8d91846e6c2":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python-unversioned-command-3.8.3-1.fc32.noarch.rpm","sha256:d49f0b1c8ecf9bc808ae93e9298a40fbcc124fe67c3bbdd37705b6b5d8cfdd87":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/polkit-0.116-7.fc32.x86_64.rpm","sha256:d593124bca390187150aceebd4ce67688d6c22e0294d1ae495d5197dea0b5a16":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/pcre2-10.35-1.fc32.x86_64.rpm","sha256:d611f0c4252c4c4b893850807748e62cf4d17d72d544ef2744091df3206d8178":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-requests-2.22.0-8.fc32.noarch.rpm","sha256:d732c7bdc86058b34d37450ddcca4ab4eeebd305320d3c9fa2dc432abd83d5a9":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-jinja2-2.11.2-1.fc32.noarch.rpm","sha256:d7961e92751ef2e208e634b75fdeee407532f04c161b9ec0bef27bf7704758ce":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/g/grub2-tools-minimal-2.04-19.fc32.x86_64.rpm","sha256:d7a895002e2291f776c8bf40dc99848105ca8c8e1651ba4692cc44ab838bc0a1":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libfdisk-2.35.2-1.fc32.x86_64.rpm","sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-8.fc32.noarch.rpm","sha256:da3a9847d09f807ea1dbf3e7c3f28e1fb0a8c22e372050efa70250350a792600":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libsss_autofs-2.3.0-1.fc32.x86_64.rpm","sha256:dab54013f8316b766c40c71f9c0c2124c1f0c219b417d588b5ba1dccf7d63fd7":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libtevent-0.10.2-2.fc32.x86_64.rpm","sha256:dbcf6ba5f6ab0cdc884572f07427114b8492d453420a80ffd521578a752b8064":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/syslinux-6.04-0.13.fc32.x86_64.rpm","sha256:dc2558fdefc439075ebdf57bd9f2f691d6a6f278879713f2e093398dcb62c25a":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/syslinux-nonlinux-6.04-0.13.fc32.noarch.rpm","sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/glibc-2.31-2.fc32.x86_64.rpm","sha256:dd35afac4bd8b91e9db66da79690d4cc0a431a29eacef33380f0e4643364f3aa":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libmaxminddb-1.4.2-1.fc32.x86_64.rpm","sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/p11-kit-0.23.20-1.fc32.x86_64.rpm","sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/h/hostname-3.23-2.fc32.x86_64.rpm","sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libseccomp-2.4.2-3.fc32.x86_64.rpm","sha256:df3f5d6c41e2be1f4fb2b5a58e70833b414d307bbe85709f2636f0c464499ec5":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/t/tzdata-2020a-1.fc32.noarch.rpm","sha256:e058893d6de91ec7c268bc59c3eb332957b9c2133b5b395943e14a14ed92548d":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/c/console-login-helper-messages-motdgen-0.18.1-1.fc32.noarch.rpm","sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/f/file-libs-5.38-2.fc32.x86_64.rpm","sha256:e20984afd6d2aa8b76c157b55c6ffad65566c15b29646c8636f26b7bbabd5e50":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libcomps-0.1.15-1.fc32.x86_64.rpm","sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/krb5-libs-1.18-1.fc32.x86_64.rpm","sha256:e3175d0dba977f1cff702498ea68cc13134a0f525a869025e2ee3ede987d7867":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/x/xfsprogs-5.4.0-3.fc32.x86_64.rpm","sha256:e46edb66c422a6878b1f77777f04544a9174521f3eaac3b4c55ff0583938dd15":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/f/fedora-gpg-keys-32-2.noarch.rpm","sha256:e48ec5686644366c7388f7068f93f1d86f9657a66a7cab5bfeef774ad81b3c94":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libsss_nss_idmap-2.3.0-1.fc32.x86_64.rpm","sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/sudo-1.9.0-0.1.b4.fc32.x86_64.rpm","sha256:e6530742863132f93dd090c7b8009f6e17a3dc56d5862a97f5518d7f27cf783d":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/m/mpfr-4.0.2-4.fc32.x86_64.rpm","sha256:e795bb396d986aadb61199f2c8f1b411f99d3b4e4ee919367305dadea585f9a2":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/c/console-login-helper-messages-profile-0.18.1-1.fc32.noarch.rpm","sha256:e7b9fd73c260cd22d3a36823530d4f623ea0e16844b900a5677c769afa76341c":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-chardet-3.0.4-15.fc32.noarch.rpm","sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/glibc-common-2.31-2.fc32.x86_64.rpm","sha256:ea6910a5b20bc1db78688d16425eb97a82960996dcde565cbc66098bbbd77847":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-build-libs-4.15.1-3.fc32.1.x86_64.rpm","sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.x86_64.rpm","sha256:eb9f0657a88801f28eb2309b7d046ab0cc1176cd8bb6c21175ef1de183d4b9e7":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-libdnf-0.47.0-1.fc32.x86_64.rpm","sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm","sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.x86_64.rpm","sha256:ecb8a942ab85ec5a1ff1a9ec652a104e6aca0283475821000fc1cb719c783589":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/d/dnf-data-4.2.21-1.fc32.noarch.rpm","sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dbus-1.12.16-4.fc32.x86_64.rpm","sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libverto-0.3.0-9.fc32.x86_64.rpm","sha256:ee9fb01963d4192f679883a74588d2e0dba0e5f2c53e4181455b610f5fac672d":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/k/kpartx-0.8.2-4.fc32.x86_64.rpm","sha256:f00b659341553c1e3c121b71fc4334fc6468b393bf3e0c3b7e90e75cffbf4a8e":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/c/crypto-policies-20200527-1.gitb234a47.fc32.noarch.rpm","sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/a/audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm","sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.x86_64.rpm","sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/r/readline-8.0-4.fc32.x86_64.rpm","sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-7.fc32.x86_64.rpm","sha256:f463968cf5f6f7df198f4775b7ef658cfcdf72f9f9b87e497646eaf968b6372a":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/e/elfutils-debuginfod-client-0.179-2.fc32.x86_64.rpm","sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/i/iptables-libs-1.8.4-7.fc32.x86_64.rpm","sha256:f6203a41ed91197bb770a38a101d977f0f56de86ccc5a71cee9c0e198f26bcbc":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-ply-3.11-7.fc32.noarch.rpm","sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-libselinux-3.0-3.fc32.x86_64.rpm","sha256:f80935f69caf21b67bc50deab4db4478a3cba4997dc65286349426bfbb7223b2":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-hawkey-0.47.0-1.fc32.x86_64.rpm","sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libacl-2.2.53-5.fc32.x86_64.rpm","sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libutempter-1.1.6-18.fc32.x86_64.rpm","sha256:fa5746133a0e03485cb74ed5747010e19817f890ed538971fb6d6d47fd21eecd":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/f/fedora-repos-32-2.noarch.rpm","sha256:fa791a4328b4c41b7190d862de921605f266a64abee03b2ea2e8d2b644be307f":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-pysocks-1.7.1-4.fc32.noarch.rpm","sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libunistring-0.9.10-7.fc32.x86_64.rpm","sha256:fb83e33ef9fbe36a185caab7c686735578f5e1d24f0088834fedb64dda77bbb2":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/i/iputils-20190515-7.fc32.x86_64.rpm","sha256:fbabd02b2ab3aecfdfa7484fefb8190bf134e615ddd8ce1d38e27a5907b50a40":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/g/grub2-pc-modules-2.04-19.fc32.noarch.rpm","sha256:fc84fd1569f0ff7d2202369fedf6aeb5ac1d3239e2323c1fe373ddc696540470":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libldb-2.1.3-1.fc32.x86_64.rpm","sha256:fd4404aec80bb4fa767f4fcc686a37b0cc406e766c9b3704c1b481d648c76c1a":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/o/openssl-pkcs11-0.4.10-6.fc32.x86_64.rpm","sha256:fdf652eae6502ff726fc3b532348ebe59dccb16e0629331371ff83e309b259af":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/cloud-utils-growpart-0.31-6.fc32.noarch.rpm","sha256:fed6244fce0c0b48933d622dfbb00cf73931b2f746b27675a025a33b591d9820":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libini_config-1.3.1-44.fc32.x86_64.rpm","sha256:fef247293abdc1cc22766e19bc55829240f36531dcfa0168410bec60595f7b8a":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/k/kernel-core-5.6.14-300.fc32.x86_64.rpm","sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.x86_64.rpm","sha256:ff1546cec9a7487b81e58e8604feb080eddd484ffd1a1f187865467d28850e81":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libreport-filesystem-2.13.1-4.fc32.noarch.rpm","sha256:ffaa05614a9c419fe0ade73fa572f58d51bcd1a0f3f5c8ab4d6757e70e97fa36":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/o/openssl-libs-1.1.1g-1.fc32.x86_64.rpm","sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/sed-4.5-5.fc32.x86_64.rpm"}}},"pipeline":{"build":{"pipeline":{"stages":[{"name":"org.osbuild.rpm","options":{"gpgkeys":["-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n","-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n","-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n","-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n"],"packages":["sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b","sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c","sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96","sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce","sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975","sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0","sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4","sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d","sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829","sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5","sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1","sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740","sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6","sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940","sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960","sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8","sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4","sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949","sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b","sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec","sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79","sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99","sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e","sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9","sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4","sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5","sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4","sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2","sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32","sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836","sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5","sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe","sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00","sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9","sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095","sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85","sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf","sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48","sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813","sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248","sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b","sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22","sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd","sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2","sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d","sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b","sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4","sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886","sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b","sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88","sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c","sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7","sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314","sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896","sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4","sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa","sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe","sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab","sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401","sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c","sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278","sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2","sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e","sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b","sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe","sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9","sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f","sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6","sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b","sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825","sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9","sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f","sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923","sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf","sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb","sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590","sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438","sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa","sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf","sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927","sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8","sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6","sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c","sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844","sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a","sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60","sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e","sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1","sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986","sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886","sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6","sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1","sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102","sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659","sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464","sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466","sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875","sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59","sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d","sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b","sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e","sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec","sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808","sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939","sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899","sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604","sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4","sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569","sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5","sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee","sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb","sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9","sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9","sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8","sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61","sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280","sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9","sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103","sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973","sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9","sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db","sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3","sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd","sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5","sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b","sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1","sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff","sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b","sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61","sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b","sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647","sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c","sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338","sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9","sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80","sha256:5b7e8c9fc5f038530130a02af79ed7dbbc34804b22338edf9f16354818d04351","sha256:af88353a1f306849da587aa4c49b1104caff506e84cc6d6805e844c937d37d56","sha256:f00b659341553c1e3c121b71fc4334fc6468b393bf3e0c3b7e90e75cffbf4a8e","sha256:7cca8885c45a4f801cb78c42597ddd35bb44c68c9181fbc7cb3f94bce320ec5c","sha256:7c5b1d5e9099b5314698573f542e88810b2571a05c5e25b3291d7d8d379f93ed","sha256:4158624697b461fbcb28b325922445a7c164d72723c4c9975f6bc3a9d2dd3f3a","sha256:02de6f2778310a36a3e4dfd47f9c35c67140e77c4142371ae126f6478cdf46be","sha256:ecb8a942ab85ec5a1ff1a9ec652a104e6aca0283475821000fc1cb719c783589","sha256:f463968cf5f6f7df198f4775b7ef658cfcdf72f9f9b87e497646eaf968b6372a","sha256:6fc3d1a25b34a2d434b3481331359175cec06f115d63db3299ade82609cb278d","sha256:417dab5baecca2da19780bdc1098e0f09bad94c1dc4c31ad7f123a96ec01ce1f","sha256:6fac977d63ca18d28a1fba1b0a9fe24b6973fbc3c5aace97091f401fe57cce9a","sha256:e46edb66c422a6878b1f77777f04544a9174521f3eaac3b4c55ff0583938dd15","sha256:a01c177ed13a098094ffc202a1390069ec47f59a3f54293d984d906464ec2834","sha256:51a1a7b6eb8b1e9158ef775e4087836349d0012fd5ec46e082deaa8367400353","sha256:fa5746133a0e03485cb74ed5747010e19817f890ed538971fb6d6d47fd21eecd","sha256:c7e5d5de11d4c791596ca39d1587c50caba0e06f12a7c24c5d40421d291cd661","sha256:cfad2b3209d56d57f624640a06ea70238be35eaa702cd32b81f62a1df83cca14","sha256:1bb8798507c8999d4f59465527bdcf64b95266f6e885f84e0253117dc146d83a","sha256:4eb5b62f33ac69aeddad8b0cc017d6cef909d8b8ffd45cd833d43044d115ce67","sha256:88c92b121d4cec2a457772ef54270f07b3e755ece739a2fdbc446ffd08f21f00","sha256:1f5c2af3943f9212b8ecd8349c76908047594b44ffa670d833899826c3a83441","sha256:9f453039643c37e6b71f93d7d65a821bdd8939791ab5a52a376751a63229ab39","sha256:c23c45c7d0040856ac295aab919b3953dec18f54c98fcc95775948b283a67656","sha256:0ee42cf758be23b9e87406e99969e9a1693b5e01adb1d67b7823eb82e5b7025d","sha256:419e497c76ba728fe8eeb254bf3ff2e22bcd3e3480a0215b286dbeb019caf398","sha256:fbabd02b2ab3aecfdfa7484fefb8190bf134e615ddd8ce1d38e27a5907b50a40","sha256:6a59645a1336fcfed2c045e1cd7fc8969e1727b28b5b8dcf35c69bdef7c4d0a4","sha256:d7961e92751ef2e208e634b75fdeee407532f04c161b9ec0bef27bf7704758ce","sha256:56ecdfc358f2149bc9f6fd38161d33fe45177c11059fd813143c8d314b1019fc","sha256:ee9fb01963d4192f679883a74588d2e0dba0e5f2c53e4181455b610f5fac672d","sha256:b4053e72ef23e59a43b4f77b0f3abeb92c4b72c9df7d4f62572560edfbfa02a4","sha256:d43d17930e5fedbbeb2a45bdbfff713485c6cd01ca6cbb9443370192e73daf40","sha256:e20984afd6d2aa8b76c157b55c6ffad65566c15b29646c8636f26b7bbabd5e50","sha256:7e1ebb8cb74f5a1675085d6067c87ab4f1f9d21e1974d219f9d48fc468e2a7c5","sha256:affae36e6d8dccdd9048ca24fcc2e87f83f08c27636c1e70f081625f445df320","sha256:d7a895002e2291f776c8bf40dc99848105ca8c8e1651ba4692cc44ab838bc0a1","sha256:495db9bd35d0631b2813ba2b8f10b284be56b2f23e56123674857e6d7e9853cf","sha256:a2ad5970a8d117e9216e2e1e70f8b8247a25dc0a556e5fcba245f73ced3283bf","sha256:c2f7b54f06f9bac66c8f13ed80d217a718670a4fdb10cb44692eeb5426131d6b","sha256:2c8e76fcc1ad8197ffdb66d06fb498a1129e71e0f7c04a05176867e5788bbf05","sha256:a95e0092daedde142a4ed2dc6589bd4f4dee36bc69ad982bcb42351f9975c994","sha256:ff1546cec9a7487b81e58e8604feb080eddd484ffd1a1f187865467d28850e81","sha256:01705d02dcf229b9b69ce8e97c81346a9c0e444ee07c43681895294577281775","sha256:82a0c6703444fa28ab032b3e4aa355deabff92f3f39d5490faa5c9b9150eaceb","sha256:50308833a750fcba4422052e5dd6f72a4691340813c803ef157283621ed35215","sha256:2c68b021959911bd946c5d43d3c6ebdf3dcae378e4ee1e68f98780b94616cc87","sha256:b906f2e1a8045b0b895ff0a8196ca41822ba495731338debb6f21129d4bc51c2","sha256:2b6853be09f6155dbbddfb25c9bd65d289493f9d1f51c891b4539b9245739dd0","sha256:26fa850e30bf0ea42b3d8a573ed58b62eeeaec754a051eaea3e768e29673144d","sha256:4929636a918bb0af18de939fabd41b4e998dfd3aeb3693a02d7b05377bc0f18f","sha256:20ad2f907034a1c3e76dd4691886223bf588ff946fd57545ecdfcd58bc4c3b4b","sha256:5d43a1d2f9d3e3e1e0d6c3cc09bf2850a689b226bbf2c200abb5d0aebc351455","sha256:5978ef81620bea4c5634d5ea93f162e61a83aabeeab35f29e8506ea66bb016ad","sha256:1a19c6f772fe9d1e339333639756d28fbc33d552b6ac734510291fd22a88a6a5","sha256:e6530742863132f93dd090c7b8009f6e17a3dc56d5862a97f5518d7f27cf783d","sha256:2ad9ccdab138ec355fe3132dbcaa381491b80949841000e764f17945753fc77a","sha256:ffaa05614a9c419fe0ade73fa572f58d51bcd1a0f3f5c8ab4d6757e70e97fa36","sha256:fd4404aec80bb4fa767f4fcc686a37b0cc406e766c9b3704c1b481d648c76c1a","sha256:d593124bca390187150aceebd4ce67688d6c22e0294d1ae495d5197dea0b5a16","sha256:860a309d10907bc4735c8af1513bc2f29633df73ab9a00c585ec994ec23f7f90","sha256:9ebb22c37f0f44203bc579625757b18cbf7dd751de2959d3a4235f56d4b748ad","sha256:d46293795b113fe996bebd2056f7b05f187f0bdcd3186b5012a8b8d91846e6c2","sha256:be1358f7c9accf20d34d468264e88019c9b30a0e77b58726b221c0fcd66560f7","sha256:9dbf41afbd3b67340971e5b4fc61ccd2358f045019915d97d3fbc5bc6541fe0e","sha256:c6ada06d383423665aa32c638ecdc40c54ee0b1b866c6396f9533d8691ad53e2","sha256:f80935f69caf21b67bc50deab4db4478a3cba4997dc65286349426bfbb7223b2","sha256:28fd8db75d20cf14174cad3a5c2cd740d899ee2a064c48b892981b154e94a4d0","sha256:eb9f0657a88801f28eb2309b7d046ab0cc1176cd8bb6c21175ef1de183d4b9e7","sha256:47c21130eb66c93ffc5c9528606d4c02ce5d9cdeb784baa031cb98e7ddbac9c3","sha256:4296471e898b26f01fcf2b420728e39e8f50f0015f7e7c686807a6e86efc69a1","sha256:95a13407e6f4c40c731655053e99f955fd56f66fafadd5f7f0e7c04fa58ffe8b","sha256:1ec0d908c774fa4efa15029e21d9d160e24e10b040357d64b4224e90b3b7d3c2","sha256:c84a5e00f504e0f60aa02cac7eb5cde57ed7958f2965ea2fce0c7e9cd0ff532b","sha256:ea6910a5b20bc1db78688d16425eb97a82960996dcde565cbc66098bbbd77847","sha256:506b1d8ba1f1fbf138a94de6a1705da12360c81e6797cb60df488c87e9a366fe","sha256:2bbe073544977e15c66507fb382b46349f46f773365511aba63353014f17dd28","sha256:7c2b9d82983189251cbe90d0debb6c0938d9a4f484332405b8d3582a618a0ccb","sha256:df3f5d6c41e2be1f4fb2b5a58e70833b414d307bbe85709f2636f0c464499ec5","sha256:463d8259936601d23a02c407a4fb294c0e3bc9a213282c4525137bc1b18bbf6b","sha256:4d80736f9a52519104eeb228eb1ea95d0d6e9addc766eebacc9a5137fb2a5977"]}}]},"runner":"org.osbuild.fedora32"},"stages":[{"name":"org.osbuild.rpm","options":{"gpgkeys":["-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n","-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n","-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n","-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n"],"packages":["sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b","sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c","sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d","sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96","sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce","sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975","sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0","sha256:46407b730b272223b8b64d12df0725af571b4a5c5ab89b9f41e12a49e07c6e6b","sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4","sha256:703fb5ca1651bb72d8ab58576ce3d78c9479cbb2e78ff8666ae3a3d1cd9bb0da","sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57","sha256:1e1e9900e9d3a2b8eb6684060672526948df2cb9f751e7d72cb4fa5bffe71747","sha256:fdf652eae6502ff726fc3b532348ebe59dccb16e0629331371ff83e309b259af","sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309","sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56","sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280","sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d","sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829","sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5","sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1","sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740","sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6","sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940","sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960","sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315","sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8","sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4","sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949","sha256:8c047278ce11e7ba7169a9c9537c3c6544f52c7eee8754179acd839ed59c028f","sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013","sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b","sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79","sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73","sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99","sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e","sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9","sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4","sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5","sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4","sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012","sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2","sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32","sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836","sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3","sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f","sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5","sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00","sha256:24520e03276e0d850169efc9d83b12a9a01eee5d7202dadca12d2e0a8b7352ba","sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9","sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095","sha256:808e7209893298d11ac27f148c1b3d1a2b28e303e7930b43659a08dc0f660ac4","sha256:cbdc61d713e4cbe52b2bece117912da0f1e3782cb3b33caa068e96c854c990be","sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85","sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823","sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf","sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339","sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684","sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae","sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48","sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8","sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813","sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248","sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b","sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22","sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd","sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2","sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d","sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0","sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389","sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca","sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884","sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b","sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886","sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b","sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88","sha256:26cca773f1f258105f0f825a8e0faebcaa183655b5d91cd972afbe791b586478","sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c","sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7","sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314","sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5","sha256:9d4691918d7add910e8c03d61cccda0316b62d77b30ac2e502cf2e55289d1823","sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896","sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4","sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa","sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe","sha256:ca540fb7088948fdfe6e6b52a5e2b6a74d2d17136857da9f3f4a1ee29c8eb74b","sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09","sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab","sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401","sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c","sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278","sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2","sha256:fed6244fce0c0b48933d622dfbb00cf73931b2f746b27675a025a33b591d9820","sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e","sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b","sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe","sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9","sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f","sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f","sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6","sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b","sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825","sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1","sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9","sha256:ce1a80b0ba6f09a7e5a188436088dd31d10c5f7b43dbe9c1788f705127c8e6b2","sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f","sha256:c0a0c6f3e30c20815496be8de00f9596737e2693feb85f7484f200ffa9174530","sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923","sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf","sha256:6fc1181ed798617668f195579acfcf8fb212513a776f376eecfb3d086c66b2d9","sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb","sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590","sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438","sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa","sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf","sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927","sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8","sha256:16702883a79532a400d7304146cdb47b0599983b9fb48ab918ef9fa1ce0be394","sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6","sha256:36778f8a4fa111c4f796bbea8fd52f7b9708de8f4351070faa30bc985db59885","sha256:dab54013f8316b766c40c71f9c0c2124c1f0c219b417d588b5ba1dccf7d63fd7","sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c","sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844","sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975","sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a","sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60","sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e","sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1","sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986","sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467","sha256:25ae9056f75df4efff0d17d916e7c3889c421368613acec7f1c4119bd17eac13","sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886","sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6","sha256:ca80c458fab5bdde0276702f06217d1219085428560af6039aa1c5cf1e58ff3b","sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1","sha256:80cf220a3314f965c088e03d2b750426767db0b36b6b7c5e8059b9217ff4de6d","sha256:280b880de2f5c6bbd8e000c63dff495533925893ef02cc599222cdb3c7586a22","sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102","sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659","sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464","sha256:924367aa63693da4660dcb806fbf52b3bcb7c4d12b40c4b4ba6329079936d073","sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466","sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875","sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59","sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d","sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b","sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e","sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec","sha256:4b9da0cedada16eb80a2d66b86aa62c9b026501e13a3e947a5a03a06f41d9dbb","sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719","sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808","sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939","sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899","sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604","sha256:d49f0b1c8ecf9bc808ae93e9298a40fbcc124fe67c3bbdd37705b6b5d8cfdd87","sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386","sha256:7c7eff31251dedcc3285a8b08c1b18f7fd9ee2e07dff86ad090f45a81e19e85e","sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4","sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569","sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444","sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5","sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee","sha256:bcb07748c8688c788ec69c3a33c0abd1bb3a496b9aa09b5729265670bc7ba0eb","sha256:b1111e77a5fdbacaa04acc90d3844706158bc5892173862928705620b8910adb","sha256:5719dd2fb399cadec08b4ac41c794239d2a2de2f012faeb970ab90a07bba0084","sha256:7124f9fedc862e3bab80f05b804b6c9580603ce3155727e888646d4d4f5ddc50","sha256:e7b9fd73c260cd22d3a36823530d4f623ea0e16844b900a5677c769afa76341c","sha256:81b6181b947d50e0a1ea681298417e552421d6714900d07a34dc25899e5c9f60","sha256:bb8942d19e594c0f4ca181bd58796bd5d3cb681c3f17cd2ec2654c3afe28e39a","sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862","sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070","sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4","sha256:61c51596cc97f35177efe8dc5e2ca52d8fd528570f33c184497f419259b73c90","sha256:4c9d77d63ddc7dda0e018fc1c97d46025794e336e58d838a631fcc130dfa3b9b","sha256:6615aae3def0c49910e43e2d69f7ae8852694953dceb4b6235b5cf4099296d70","sha256:6890a9545194ad6cf1b0c58e5273132171a9ced9cb665a1442aa62b6b6d3d2ea","sha256:d0bc781a80be1d1fe204ec6b26255240261d55f6e24a28343572f2221a00533e","sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124","sha256:55bafcdf9c31b1456af3bf584bfe7ac745a03f4decd17197ea97b498d68b3b82","sha256:c05d01195aa4ca0f4a471574cc7ece8a0f4daf437935d845cd0745e2512cb9c9","sha256:391faab010ca30610a14e0b3d54fbc0331be39bc831086fb877f8021fe4b171f","sha256:f6203a41ed91197bb770a38a101d977f0f56de86ccc5a71cee9c0e198f26bcbc","sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2","sha256:4860a733ca3f22089c6c283cbdcf53123a702d60b5bffdd4fe9d76826f91139a","sha256:a0b87b2dc3c5f536e94d6a4f3563a621dfbc067a62c3d1fe69bdb70c3cecec57","sha256:a107b3d3790a5bcfdc28f6f4718969039b103a681a2647f3cbcb82cf92e97acb","sha256:fa791a4328b4c41b7190d862de921605f266a64abee03b2ea2e8d2b644be307f","sha256:c13c7da4b097499576861cb12fdd02e520af69b5f23d615b3968c54f40f8fd47","sha256:d611f0c4252c4c4b893850807748e62cf4d17d72d544ef2744091df3206d8178","sha256:6f5f53b66f7c3bf6958f6f163788583265ff0360188620c3b0f7ddedeac3d1f4","sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb","sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f","sha256:3882823d0eb18e0e8146584f4a32a4801961f6fdc09075607746317eba3265be","sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9","sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8","sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58","sha256:024dd8a75eb5472692d0291292d25939b97a0295e5ab0958dcd22600d392eaae","sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61","sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280","sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9","sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103","sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973","sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b","sha256:dbcf6ba5f6ab0cdc884572f07427114b8492d453420a80ffd521578a752b8064","sha256:78de81d45789ae9bccf6dd82f2b2835ac868f1a584e05d0e9f89f40bb4a202c7","sha256:4e066ace8364aba9311fa74f4a87c21f98091bc1af5a6a4daa06441469234041","sha256:dc2558fdefc439075ebdf57bd9f2f691d6a6f278879713f2e093398dcb62c25a","sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9","sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db","sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3","sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd","sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5","sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b","sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1","sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff","sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b","sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61","sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b","sha256:e3175d0dba977f1cff702498ea68cc13134a0f525a869025e2ee3ede987d7867","sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647","sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c","sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338","sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9","sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80","sha256:1ec745d027098ff44efd29e56c03801be3f2dd7c1e1b9e23388d0916e340593e","sha256:9f179bd9e552ee6cb2e6e9b638a53161709441e42ff3dfad56856470fd3117e8","sha256:223ed731b03d273f2e7f36528ea10804d2b05e4ead7613d69dc9cdb1542a33be","sha256:0c84ca581adcd4ce0d258ad78b29bf08f3f9d7135c69d85be96167c4df5cface","sha256:e058893d6de91ec7c268bc59c3eb332957b9c2133b5b395943e14a14ed92548d","sha256:e795bb396d986aadb61199f2c8f1b411f99d3b4e4ee919367305dadea585f9a2","sha256:5b7e8c9fc5f038530130a02af79ed7dbbc34804b22338edf9f16354818d04351","sha256:af88353a1f306849da587aa4c49b1104caff506e84cc6d6805e844c937d37d56","sha256:f00b659341553c1e3c121b71fc4334fc6468b393bf3e0c3b7e90e75cffbf4a8e","sha256:7cca8885c45a4f801cb78c42597ddd35bb44c68c9181fbc7cb3f94bce320ec5c","sha256:7c5b1d5e9099b5314698573f542e88810b2571a05c5e25b3291d7d8d379f93ed","sha256:4158624697b461fbcb28b325922445a7c164d72723c4c9975f6bc3a9d2dd3f3a","sha256:02de6f2778310a36a3e4dfd47f9c35c67140e77c4142371ae126f6478cdf46be","sha256:ecb8a942ab85ec5a1ff1a9ec652a104e6aca0283475821000fc1cb719c783589","sha256:3ff527ad844ae60ef49d79a420dfec69b20d01187218c831f43814779d568ac1","sha256:f463968cf5f6f7df198f4775b7ef658cfcdf72f9f9b87e497646eaf968b6372a","sha256:6fc3d1a25b34a2d434b3481331359175cec06f115d63db3299ade82609cb278d","sha256:417dab5baecca2da19780bdc1098e0f09bad94c1dc4c31ad7f123a96ec01ce1f","sha256:6fac977d63ca18d28a1fba1b0a9fe24b6973fbc3c5aace97091f401fe57cce9a","sha256:e46edb66c422a6878b1f77777f04544a9174521f3eaac3b4c55ff0583938dd15","sha256:c2c4278b5355cd340f349302fd99c88443e4f87d542a210ad52747d773f73bfb","sha256:51a1a7b6eb8b1e9158ef775e4087836349d0012fd5ec46e082deaa8367400353","sha256:fa5746133a0e03485cb74ed5747010e19817f890ed538971fb6d6d47fd21eecd","sha256:c7e5d5de11d4c791596ca39d1587c50caba0e06f12a7c24c5d40421d291cd661","sha256:cfad2b3209d56d57f624640a06ea70238be35eaa702cd32b81f62a1df83cca14","sha256:1bb8798507c8999d4f59465527bdcf64b95266f6e885f84e0253117dc146d83a","sha256:4eb5b62f33ac69aeddad8b0cc017d6cef909d8b8ffd45cd833d43044d115ce67","sha256:88c92b121d4cec2a457772ef54270f07b3e755ece739a2fdbc446ffd08f21f00","sha256:1f5c2af3943f9212b8ecd8349c76908047594b44ffa670d833899826c3a83441","sha256:9f453039643c37e6b71f93d7d65a821bdd8939791ab5a52a376751a63229ab39","sha256:c23c45c7d0040856ac295aab919b3953dec18f54c98fcc95775948b283a67656","sha256:0ee42cf758be23b9e87406e99969e9a1693b5e01adb1d67b7823eb82e5b7025d","sha256:419e497c76ba728fe8eeb254bf3ff2e22bcd3e3480a0215b286dbeb019caf398","sha256:fbabd02b2ab3aecfdfa7484fefb8190bf134e615ddd8ce1d38e27a5907b50a40","sha256:6a59645a1336fcfed2c045e1cd7fc8969e1727b28b5b8dcf35c69bdef7c4d0a4","sha256:d7961e92751ef2e208e634b75fdeee407532f04c161b9ec0bef27bf7704758ce","sha256:287e95efe7718018c583b49892b89257f2dec97e0a144ffb4ea0863865a0a926","sha256:fb83e33ef9fbe36a185caab7c686735578f5e1d24f0088834fedb64dda77bbb2","sha256:56ecdfc358f2149bc9f6fd38161d33fe45177c11059fd813143c8d314b1019fc","sha256:fef247293abdc1cc22766e19bc55829240f36531dcfa0168410bec60595f7b8a","sha256:ee9fb01963d4192f679883a74588d2e0dba0e5f2c53e4181455b610f5fac672d","sha256:b4053e72ef23e59a43b4f77b0f3abeb92c4b72c9df7d4f62572560edfbfa02a4","sha256:d43d17930e5fedbbeb2a45bdbfff713485c6cd01ca6cbb9443370192e73daf40","sha256:e20984afd6d2aa8b76c157b55c6ffad65566c15b29646c8636f26b7bbabd5e50","sha256:7e1ebb8cb74f5a1675085d6067c87ab4f1f9d21e1974d219f9d48fc468e2a7c5","sha256:affae36e6d8dccdd9048ca24fcc2e87f83f08c27636c1e70f081625f445df320","sha256:d7a895002e2291f776c8bf40dc99848105ca8c8e1651ba4692cc44ab838bc0a1","sha256:5e74c26703101a54a70deb68b7e24092f35338c142862933f650776290c5d87f","sha256:495db9bd35d0631b2813ba2b8f10b284be56b2f23e56123674857e6d7e9853cf","sha256:a2ad5970a8d117e9216e2e1e70f8b8247a25dc0a556e5fcba245f73ced3283bf","sha256:fc84fd1569f0ff7d2202369fedf6aeb5ac1d3239e2323c1fe373ddc696540470","sha256:dd35afac4bd8b91e9db66da79690d4cc0a431a29eacef33380f0e4643364f3aa","sha256:c2f7b54f06f9bac66c8f13ed80d217a718670a4fdb10cb44692eeb5426131d6b","sha256:2c8e76fcc1ad8197ffdb66d06fb498a1129e71e0f7c04a05176867e5788bbf05","sha256:0d4393708282029b372343241060b3916b31e991b18b93d7c9d002d4438f1a9c","sha256:a95e0092daedde142a4ed2dc6589bd4f4dee36bc69ad982bcb42351f9975c994","sha256:ff1546cec9a7487b81e58e8604feb080eddd484ffd1a1f187865467d28850e81","sha256:01705d02dcf229b9b69ce8e97c81346a9c0e444ee07c43681895294577281775","sha256:82a0c6703444fa28ab032b3e4aa355deabff92f3f39d5490faa5c9b9150eaceb","sha256:50308833a750fcba4422052e5dd6f72a4691340813c803ef157283621ed35215","sha256:2c68b021959911bd946c5d43d3c6ebdf3dcae378e4ee1e68f98780b94616cc87","sha256:b906f2e1a8045b0b895ff0a8196ca41822ba495731338debb6f21129d4bc51c2","sha256:da3a9847d09f807ea1dbf3e7c3f28e1fb0a8c22e372050efa70250350a792600","sha256:0079ca4f9bd2df6d8dd84d9ec6a0250bb32c64b8abf5785a2889d1ad7eabc90d","sha256:a8123a1759678459d974a0f6cace694ebcca37fd0841c84ec99718f0e3a2a2ad","sha256:e48ec5686644366c7388f7068f93f1d86f9657a66a7cab5bfeef774ad81b3c94","sha256:782953e28d5a059ca6592732e99cd3113db10e2a7ca78a44470e6ebc66f316fa","sha256:2b6853be09f6155dbbddfb25c9bd65d289493f9d1f51c891b4539b9245739dd0","sha256:26fa850e30bf0ea42b3d8a573ed58b62eeeaec754a051eaea3e768e29673144d","sha256:4929636a918bb0af18de939fabd41b4e998dfd3aeb3693a02d7b05377bc0f18f","sha256:20ad2f907034a1c3e76dd4691886223bf588ff946fd57545ecdfcd58bc4c3b4b","sha256:5d43a1d2f9d3e3e1e0d6c3cc09bf2850a689b226bbf2c200abb5d0aebc351455","sha256:5978ef81620bea4c5634d5ea93f162e61a83aabeeab35f29e8506ea66bb016ad","sha256:1a19c6f772fe9d1e339333639756d28fbc33d552b6ac734510291fd22a88a6a5","sha256:860db405a0e85d81f1fa5450a8b05dab7e170920231c812caae3a48b4fc87e48","sha256:7705a532986761cae92684e2dc9012ba37f10891c46096c57f2628be2b82d106","sha256:e6530742863132f93dd090c7b8009f6e17a3dc56d5862a97f5518d7f27cf783d","sha256:b079eacd62d18714a20dbaf853e3184f21f1262c8a7f4d4c6de47d66e28ca036","sha256:19b0dec8fce924341e35a9165bcc384843a77498db5ca435521b12212233adf2","sha256:beaca54bd436c280070054af7343947f739cf8ab8789e955ca9ea1a620950f76","sha256:2ad9ccdab138ec355fe3132dbcaa381491b80949841000e764f17945753fc77a","sha256:ffaa05614a9c419fe0ade73fa572f58d51bcd1a0f3f5c8ab4d6757e70e97fa36","sha256:fd4404aec80bb4fa767f4fcc686a37b0cc406e766c9b3704c1b481d648c76c1a","sha256:d593124bca390187150aceebd4ce67688d6c22e0294d1ae495d5197dea0b5a16","sha256:860a309d10907bc4735c8af1513bc2f29633df73ab9a00c585ec994ec23f7f90","sha256:9ebb22c37f0f44203bc579625757b18cbf7dd751de2959d3a4235f56d4b748ad","sha256:d46293795b113fe996bebd2056f7b05f187f0bdcd3186b5012a8b8d91846e6c2","sha256:be1358f7c9accf20d34d468264e88019c9b30a0e77b58726b221c0fcd66560f7","sha256:9dbf41afbd3b67340971e5b4fc61ccd2358f045019915d97d3fbc5bc6541fe0e","sha256:6baf7b9b0d84b51cf059d00ab923ed763e804136c1b1098128be8396a72f548e","sha256:c6ada06d383423665aa32c638ecdc40c54ee0b1b866c6396f9533d8691ad53e2","sha256:f80935f69caf21b67bc50deab4db4478a3cba4997dc65286349426bfbb7223b2","sha256:d732c7bdc86058b34d37450ddcca4ab4eeebd305320d3c9fa2dc432abd83d5a9","sha256:28fd8db75d20cf14174cad3a5c2cd740d899ee2a064c48b892981b154e94a4d0","sha256:eb9f0657a88801f28eb2309b7d046ab0cc1176cd8bb6c21175ef1de183d4b9e7","sha256:47c21130eb66c93ffc5c9528606d4c02ce5d9cdeb784baa031cb98e7ddbac9c3","sha256:4296471e898b26f01fcf2b420728e39e8f50f0015f7e7c686807a6e86efc69a1","sha256:888fae3e1c57f0d389c3678e0bb292bf7cfcccf798c55c8c60f08eba61608717","sha256:79fefe36917dc3f002d5a0c2ed15ab2dec4c66c9847b4b658047a4324e7be9d0","sha256:95a13407e6f4c40c731655053e99f955fd56f66fafadd5f7f0e7c04fa58ffe8b","sha256:1ec0d908c774fa4efa15029e21d9d160e24e10b040357d64b4224e90b3b7d3c2","sha256:c84a5e00f504e0f60aa02cac7eb5cde57ed7958f2965ea2fce0c7e9cd0ff532b","sha256:ea6910a5b20bc1db78688d16425eb97a82960996dcde565cbc66098bbbd77847","sha256:506b1d8ba1f1fbf138a94de6a1705da12360c81e6797cb60df488c87e9a366fe","sha256:53823a669b4ab38d3ab58a6d8524e47f9d7c6998e006b9b5cab59dc1e5b47f88","sha256:2bbe073544977e15c66507fb382b46349f46f773365511aba63353014f17dd28","sha256:7c2b9d82983189251cbe90d0debb6c0938d9a4f484332405b8d3582a618a0ccb","sha256:0f29f9c9a8ac60616c4f606508067a8f97443780b0425e29ef0bec8e1cbb876a","sha256:a883c4ecd38b3208be7f52555aa529d746da55488951b5b47e130313b753a8c3","sha256:a63900b34fef430d9afa5dcbad6ea8b727f8d2aa730d64ee899e5c298c8278ff","sha256:8347e3ad3a1631e2df362f4105e40e046c0fde6626b549591b76426747c7d753","sha256:93417d6ae53af8f0a8ecd54a60700624b47f562f355a8b60eb9de9598bc3599b","sha256:0353b55c967a79bba2bf46e0c9f8a14297f555a0b7a4e4c79ccbdbca81b010f3","sha256:df3f5d6c41e2be1f4fb2b5a58e70833b414d307bbe85709f2636f0c464499ec5","sha256:463d8259936601d23a02c407a4fb294c0e3bc9a213282c4525137bc1b18bbf6b","sha256:4d80736f9a52519104eeb228eb1ea95d0d6e9addc766eebacc9a5137fb2a5977","sha256:c9a3aef41c86259a7bb6dba7febb780737a1237ca8ff1c205797ead5951be712","sha256:784186e517b8a48371a101c28ad7af608277e5bcbcc7d75c203f4a8f0d8cb2e2"]}},{"name":"org.osbuild.fix-bls","options":{}},{"name":"org.osbuild.locale","options":{"language":"en_US"}},{"name":"org.osbuild.hostname","options":{"hostname":"my-host"}},{"name":"org.osbuild.users","options":{"users":{"me":{"key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost"},"myself":{"uid":"42","gid":"42","groups":["wheel"],"description":"Mostly harmless.","home":"/home/my-home","shell":"/bin/true","password":"$6$i1t.aSeZ580Staq4$FxPszG0mtrcf/Us/mBr6y/G5kkfDvO..jCsnt/Uz2UyRV4rL/0WztFkm3oS3o76PsNkkA1nBDNNG4piRhfFGF0","key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost"}}}},{"name":"org.osbuild.fstab","options":{"filesystems":[{"uuid":"76a22bf4-f153-4541-b6c7-0332c0dfaeac","vfs_type":"ext4","path":"/","options":"defaults","freq":1,"passno":1}]}},{"name":"org.osbuild.grub2","options":{"root_fs_uuid":"76a22bf4-f153-4541-b6c7-0332c0dfaeac","kernel_opts":"ro biosdevname=0 net.ifnames=0 debug","legacy":true}},{"name":"org.osbuild.selinux","options":{"file_contexts":"etc/selinux/targeted/contexts/files/file_contexts"}}],"assembler":{"name":"org.osbuild.qemu","options":{"format":"qcow2","filename":"disk.qcow2","size":0,"ptuuid":"0x14fc63d2","pttype":"mbr","partitions":[{"start":2048,"bootable":true,"filesystem":{"type":"ext4","uuid":"76a22bf4-f153-4541-b6c7-0332c0dfaeac","mountpoint":"/"}}]}}}},"targets":[{"uuid":"d04cba52-6269-495c-892f-c1cf94382164","image_name":"My Image","name":"org.osbuild.aws","created":"2020-05-31T21:26:29.741512452+02:00","status":"WAITING","options":{"filename":"image.ami","region":"far-away-1","accessKeyID":"MyKey","secretAccessKey":"MySecret","bucket":"list","key":"image"}}],"job_created":"2020-05-31T21:26:44.412906746+02:00","job_started":"0001-01-01T00:00:00Z","job_finished":"0001-01-01T00:00:00Z","size":0,"jobid":"d04cba52-6269-495c-892f-c1cf94382164"}]},"eaa5f624-a5b5-4de2-9d29-2ce3882da171":{"blueprint":{"name":"my-blueprint-2","description":"My second blueprint","version":"0.0.2","packages":null,"modules":null,"groups":null,"customizations":{"hostname":"my-host","kernel":{"append":"debug"},"sshkey":[{"user":"me","key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost"}],"user":[{"name":"myself","description":"Mostly harmless.","password":"password","key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost","home":"/home/my-home","shell":"/bin/true","groups":["wheel"],"uid":42,"gid":42}]}},"image_builds":[{"id":0,"image_type":"Raw-filesystem","manifest":{"sources":{"org.osbuild.files":{"urls":{"sha256:01705d02dcf229b9b69ce8e97c81346a9c0e444ee07c43681895294577281775":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libsecret-0.20.3-1.fc32.x86_64.rpm","sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-six-1.14.0-2.fc32.noarch.rpm","sha256:02de6f2778310a36a3e4dfd47f9c35c67140e77c4142371ae126f6478cdf46be":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/d/dnf-4.2.21-1.fc32.noarch.rpm","sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.x86_64.rpm","sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/langpacks-en-3.0-3.fc32.noarch.rpm","sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libtasn1-4.16.0-1.fc32.x86_64.rpm","sha256:052ddc487a29acce1b5d44532f79f8ab594d0ac6565504071f4c7706d97fc552":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/gobject-introspection-1.64.1-1.fc32.x86_64.rpm","sha256:08c41c10745c172c34880e384cf5cff014a9627f4895e59fa482948b27e2ce9e":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/i/iptables-nft-1.8.4-7.fc32.x86_64.rpm","sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libselinux-3.0-3.fc32.x86_64.rpm","sha256:0ee42cf758be23b9e87406e99969e9a1693b5e01adb1d67b7823eb82e5b7025d":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/g/grub2-common-2.04-19.fc32.noarch.rpm","sha256:0f29f9c9a8ac60616c4f606508067a8f97443780b0425e29ef0bec8e1cbb876a":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/s/selinux-policy-3.14.5-39.fc32.noarch.rpm","sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-7.fc32.x86_64.rpm","sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/f/filesystem-3.14-2.fc32.x86_64.rpm","sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/cpio-2.13-4.fc32.x86_64.rpm","sha256:117a930b438715f04f9365dbe99d2e8f3db96d8d1652b05794b6ba286683474f":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/f/firewalld-0.8.2-3.fc32.noarch.rpm","sha256:129adf9147d5d120546ca8e0fb5f165761106d386d366fe82591e372754d0b4a":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-decorator-4.4.0-6.fc32.noarch.rpm","sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.31-2.fc32.x86_64.rpm","sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.x86_64.rpm","sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libselinux-utils-3.0-3.fc32.x86_64.rpm","sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/pigz-2.4-6.fc32.x86_64.rpm","sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/gmp-6.1.2-13.fc32.x86_64.rpm","sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/diffutils-3.7-4.fc32.x86_64.rpm","sha256:1a19c6f772fe9d1e339333639756d28fbc33d552b6ac734510291fd22a88a6a5":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libzstd-1.4.5-3.fc32.x86_64.rpm","sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.x86_64.rpm","sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libksba-1.3.5-11.fc32.x86_64.rpm","sha256:1bb8798507c8999d4f59465527bdcf64b95266f6e885f84e0253117dc146d83a":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/g/gettext-libs-0.20.2-1.fc32.x86_64.rpm","sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libcap-2.26-7.fc32.x86_64.rpm","sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/x/xz-5.2.5-1.fc32.x86_64.rpm","sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libmnl-1.0.4-11.fc32.x86_64.rpm","sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/systemd-245.4-1.fc32.x86_64.rpm","sha256:1ec0d908c774fa4efa15029e21d9d160e24e10b040357d64b4224e90b3b7d3c2":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-unbound-1.10.1-1.fc32.x86_64.rpm","sha256:1f5c2af3943f9212b8ecd8349c76908047594b44ffa670d833899826c3a83441":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/g/gnupg2-smime-2.2.20-2.fc32.x86_64.rpm","sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libidn2-2.3.0-2.fc32.x86_64.rpm","sha256:20ad2f907034a1c3e76dd4691886223bf588ff946fd57545ecdfcd58bc4c3b4b":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libuuid-2.35.2-1.fc32.x86_64.rpm","sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm","sha256:24520e03276e0d850169efc9d83b12a9a01eee5d7202dadca12d2e0a8b7352ba":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.31-2.fc32.x86_64.rpm","sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm","sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.x86_64.rpm","sha256:26fa850e30bf0ea42b3d8a573ed58b62eeeaec754a051eaea3e768e29673144d":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libtextstyle-0.20.2-1.fc32.x86_64.rpm","sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libss-1.45.5-3.fc32.x86_64.rpm","sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/f/file-5.38-2.fc32.x86_64.rpm","sha256:28fd8db75d20cf14174cad3a5c2cd740d899ee2a064c48b892981b154e94a4d0":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-libcomps-0.1.15-1.fc32.x86_64.rpm","sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libsepol-3.0-3.fc32.x86_64.rpm","sha256:2ad9ccdab138ec355fe3132dbcaa381491b80949841000e764f17945753fc77a":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/o/openssl-1.1.1g-1.fc32.x86_64.rpm","sha256:2b6853be09f6155dbbddfb25c9bd65d289493f9d1f51c891b4539b9245739dd0":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libstdc++-10.1.1-1.fc32.x86_64.rpm","sha256:2bbe073544977e15c66507fb382b46349f46f773365511aba63353014f17dd28":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-3.fc32.1.x86_64.rpm","sha256:2c68b021959911bd946c5d43d3c6ebdf3dcae378e4ee1e68f98780b94616cc87":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libssh-0.9.4-2.fc32.x86_64.rpm","sha256:2c8e76fcc1ad8197ffdb66d06fb498a1129e71e0f7c04a05176867e5788bbf05":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libmount-2.35.2-1.fc32.x86_64.rpm","sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/t/tar-1.32-4.fc32.x86_64.rpm","sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.x86_64.rpm","sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/systemd-udev-245.4-1.fc32.x86_64.rpm","sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.x86_64.rpm","sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/chrony-3.5-8.fc32.x86_64.rpm","sha256:3afab9512fd4d56a13c95b530c805ac8b2bc872572ec5bb435eccdd59fbbc8b6":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libnftnl-1.1.5-2.fc32.x86_64.rpm","sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64.rpm","sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm","sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/n/npth-1.6-4.fc32.x86_64.rpm","sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/kmod-27-1.fc32.x86_64.rpm","sha256:4158624697b461fbcb28b325922445a7c164d72723c4c9975f6bc3a9d2dd3f3a":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/d/dbus-broker-23-2.fc32.x86_64.rpm","sha256:417dab5baecca2da19780bdc1098e0f09bad94c1dc4c31ad7f123a96ec01ce1f":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/e/elfutils-libelf-0.179-2.fc32.x86_64.rpm","sha256:419e497c76ba728fe8eeb254bf3ff2e22bcd3e3480a0215b286dbeb019caf398":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/g/grub2-pc-2.04-19.fc32.x86_64.rpm","sha256:4296471e898b26f01fcf2b420728e39e8f50f0015f7e7c686807a6e86efc69a1":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-pip-19.3.1-3.fc32.noarch.rpm","sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-40.fc32.x86_64.rpm","sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libcom_err-1.45.5-3.fc32.x86_64.rpm","sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-2.fc32.x86_64.rpm","sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/o/os-prober-1.77-4.fc32.x86_64.rpm","sha256:463d8259936601d23a02c407a4fb294c0e3bc9a213282c4525137bc1b18bbf6b":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/u/unbound-libs-1.10.1-1.fc32.x86_64.rpm","sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-4.fc32.x86_64.rpm","sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/q/qemu-img-4.2.0-7.fc32.x86_64.rpm","sha256:47c21130eb66c93ffc5c9528606d4c02ce5d9cdeb784baa031cb98e7ddbac9c3":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-libs-3.8.3-1.fc32.x86_64.rpm","sha256:4929636a918bb0af18de939fabd41b4e998dfd3aeb3693a02d7b05377bc0f18f":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libtirpc-1.2.6-0.fc32.x86_64.rpm","sha256:495db9bd35d0631b2813ba2b8f10b284be56b2f23e56123674857e6d7e9853cf":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libgcc-10.1.1-1.fc32.x86_64.rpm","sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/pam-1.3.1-24.fc32.x86_64.rpm","sha256:4d80736f9a52519104eeb228eb1ea95d0d6e9addc766eebacc9a5137fb2a5977":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/u/util-linux-2.35.2-1.fc32.x86_64.rpm","sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/shadow-utils-4.8.1-2.fc32.x86_64.rpm","sha256:4eb5b62f33ac69aeddad8b0cc017d6cef909d8b8ffd45cd833d43044d115ce67":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/g/glib2-2.64.3-1.fc32.x86_64.rpm","sha256:50308833a750fcba4422052e5dd6f72a4691340813c803ef157283621ed35215":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libsolv-0.7.12-1.fc32.x86_64.rpm","sha256:506b1d8ba1f1fbf138a94de6a1705da12360c81e6797cb60df488c87e9a366fe":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-libs-4.15.1-3.fc32.1.x86_64.rpm","sha256:51a1a7b6eb8b1e9158ef775e4087836349d0012fd5ec46e082deaa8367400353":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/f/fedora-release-common-32-2.noarch.rpm","sha256:53823a669b4ab38d3ab58a6d8524e47f9d7c6998e006b9b5cab59dc1e5b47f88":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-plugin-selinux-4.15.1-3.fc32.1.x86_64.rpm","sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-9.fc32.x86_64.rpm","sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/gzip-1.10-2.fc32.x86_64.rpm","sha256:5443d1bc0b7eb269a050c1221818a0a82cee6803114f70ee26d05d6756879b7f":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-firewall-0.8.2-3.fc32.noarch.rpm","sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libsemanage-3.0-3.fc32.x86_64.rpm","sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/kmod-libs-27-1.fc32.x86_64.rpm","sha256:56ecdfc358f2149bc9f6fd38161d33fe45177c11059fd813143c8d314b1019fc":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/j/json-c-0.13.1-13.fc32.x86_64.rpm","sha256:5978ef81620bea4c5634d5ea93f162e61a83aabeeab35f29e8506ea66bb016ad":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libxcrypt-compat-4.4.16-3.fc32.x86_64.rpm","sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libassuan-2.5.3-3.fc32.x86_64.rpm","sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch.rpm","sha256:5b7e8c9fc5f038530130a02af79ed7dbbc34804b22338edf9f16354818d04351":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/c/coreutils-8.32-4.fc32.1.x86_64.rpm","sha256:5d43a1d2f9d3e3e1e0d6c3cc09bf2850a689b226bbf2c200abb5d0aebc351455":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libxcrypt-4.4.16-3.fc32.x86_64.rpm","sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.x86_64.rpm","sha256:5da6c745f8cec5da45e87739660edf1f8796f00c888a043da51d4d29bc7e5e51":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/a/alsa-sof-firmware-1.4.2-6.fc32.noarch.rpm","sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-3.fc32.x86_64.rpm","sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm","sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm","sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.x86_64.rpm","sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libcroco-0.6.13-3.fc32.x86_64.rpm","sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/m/mkpasswd-5.5.6-1.fc32.x86_64.rpm","sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libattr-2.4.48-8.fc32.x86_64.rpm","sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libdb-5.3.28-40.fc32.x86_64.rpm","sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-font-en-3.0-3.fc32.noarch.rpm","sha256:6a59645a1336fcfed2c045e1cd7fc8969e1727b28b5b8dcf35c69bdef7c4d0a4":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/g/grub2-tools-2.04-19.fc32.x86_64.rpm","sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-dbus-1.2.16-1.fc32.x86_64.rpm","sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-10.fc32.x86_64.rpm","sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/t/tss2-1331-4.fc32.x86_64.rpm","sha256:6fac977d63ca18d28a1fba1b0a9fe24b6973fbc3c5aace97091f401fe57cce9a":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/e/elfutils-libs-0.179-2.fc32.x86_64.rpm","sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm","sha256:6fc3d1a25b34a2d434b3481331359175cec06f115d63db3299ade82609cb278d":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/e/elfutils-default-yama-scope-0.179-2.fc32.noarch.rpm","sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/a/acl-2.2.53-5.fc32.x86_64.rpm","sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm","sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libusbx-1.0.23-1.fc32.x86_64.rpm","sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm","sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/systemd-pam-245.4-1.fc32.x86_64.rpm","sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/grep-3.3-4.fc32.x86_64.rpm","sha256:7705a532986761cae92684e2dc9012ba37f10891c46096c57f2628be2b82d106":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/linux-firmware-whence-20200519-108.fc32.noarch.rpm","sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/systemd-libs-245.4-1.fc32.x86_64.rpm","sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/b/bash-5.0.11-2.fc32.x86_64.rpm","sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libevent-2.1.8-8.fc32.x86_64.rpm","sha256:7c21c21c3e3dbace06bee03fe4835ae6cb1e3ef86750ba2853f39d40dead2309":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/i/ipset-7.6-1.fc32.x86_64.rpm","sha256:7c2b9d82983189251cbe90d0debb6c0938d9a4f484332405b8d3582a618a0ccb":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-sign-libs-4.15.1-3.fc32.1.x86_64.rpm","sha256:7c5b1d5e9099b5314698573f542e88810b2571a05c5e25b3291d7d8d379f93ed":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/c/curl-7.69.1-3.fc32.x86_64.rpm","sha256:7cca8885c45a4f801cb78c42597ddd35bb44c68c9181fbc7cb3f94bce320ec5c":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/c/crypto-policies-scripts-20200527-1.gitb234a47.fc32.noarch.rpm","sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libargon2-20171227-4.fc32.x86_64.rpm","sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm","sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/pinentry-1.1.0-7.fc32.x86_64.rpm","sha256:7e1ebb8cb74f5a1675085d6067c87ab4f1f9d21e1974d219f9d48fc468e2a7c5":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libcurl-7.69.1-3.fc32.x86_64.rpm","sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.x86_64.rpm","sha256:82a0c6703444fa28ab032b3e4aa355deabff92f3f39d5490faa5c9b9150eaceb":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libsmartcols-2.35.2-1.fc32.x86_64.rpm","sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/w/which-2.21-19.fc32.x86_64.rpm","sha256:83b6744785189474b9e4faa5368b80c22c958bf4fcdc453e1447f7194edfc790":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/f/firewalld-filesystem-0.8.2-3.fc32.noarch.rpm","sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.x86_64.rpm","sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/x/xz-libs-5.2.5-1.fc32.x86_64.rpm","sha256:860a309d10907bc4735c8af1513bc2f29633df73ab9a00c585ec994ec23f7f90":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/pcre2-syntax-10.35-1.fc32.noarch.rpm","sha256:860db405a0e85d81f1fa5450a8b05dab7e170920231c812caae3a48b4fc87e48":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/linux-firmware-20200519-108.fc32.noarch.rpm","sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/cracklib-2.9.6-22.fc32.x86_64.rpm","sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-2.fc32.x86_64.rpm","sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libffi-3.1-24.fc32.x86_64.rpm","sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/f/fonts-filesystem-2.0.3-1.fc32.noarch.rpm","sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.x86_64.rpm","sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-en-3.0-3.fc32.noarch.rpm","sha256:88c92b121d4cec2a457772ef54270f07b3e755ece739a2fdbc446ffd08f21f00":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/g/gnupg2-2.2.20-2.fc32.x86_64.rpm","sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/popt-1.16-19.fc32.x86_64.rpm","sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-3.0-2.fc32.x86_64.rpm","sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/e/expat-2.2.8-2.fc32.x86_64.rpm","sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-7.fc32.noarch.rpm","sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/pcre-8.44-1.fc32.x86_64.rpm","sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libsigsegv-2.11-10.fc32.x86_64.rpm","sha256:95a13407e6f4c40c731655053e99f955fd56f66fafadd5f7f0e7c04fa58ffe8b":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-rpm-4.15.1-3.fc32.1.x86_64.rpm","sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm","sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/j/jansson-2.12-5.fc32.x86_64.rpm","sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.x86_64.rpm","sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dracut-050-26.git20200316.fc32.x86_64.rpm","sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libedit-3.1-32.20191231cvs.fc32.x86_64.rpm","sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libgpg-error-1.36-3.fc32.x86_64.rpm","sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libyaml-0.2.2-3.fc32.x86_64.rpm","sha256:9dbf41afbd3b67340971e5b4fc61ccd2358f045019915d97d3fbc5bc6541fe0e":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-dnf-4.2.21-1.fc32.noarch.rpm","sha256:9ebb22c37f0f44203bc579625757b18cbf7dd751de2959d3a4235f56d4b748ad":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python-pip-wheel-19.3.1-3.fc32.noarch.rpm","sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libpwquality-1.4.2-2.fc32.x86_64.rpm","sha256:9ecfb4c0a291cf7dcb8e585913123eee521c1a7dde63865729cd0407983501b3":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/k/kernel-5.6.14-300.fc32.x86_64.rpm","sha256:9f453039643c37e6b71f93d7d65a821bdd8939791ab5a52a376751a63229ab39":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/g/gnutls-3.6.13-4.fc32.x86_64.rpm","sha256:a01c177ed13a098094ffc202a1390069ec47f59a3f54293d984d906464ec2834":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/f/fedora-release-32-2.noarch.rpm","sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/kbd-2.2.0-1.fc32.x86_64.rpm","sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/shared-mime-info-1.15-3.fc32.x86_64.rpm","sha256:a2ad5970a8d117e9216e2e1e70f8b8247a25dc0a556e5fcba245f73ced3283bf":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libgomp-10.1.1-1.fc32.x86_64.rpm","sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm","sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm","sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libaio-0.3.111-7.fc32.x86_64.rpm","sha256:a610fbda2dd5c901f68ee0f9faaf09238921a15fdc52f823f41edc8b38fec2a1":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-nftables-0.9.3-3.fc32.x86_64.rpm","sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch.rpm","sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libxml2-2.9.10-3.fc32.x86_64.rpm","sha256:a883c4ecd38b3208be7f52555aa529d746da55488951b5b47e130313b753a8c3":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/s/selinux-policy-targeted-3.14.5-39.fc32.noarch.rpm","sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libnghttp2-1.40.0-2.fc32.x86_64.rpm","sha256:a95e0092daedde142a4ed2dc6589bd4f4dee36bc69ad982bcb42351f9975c994":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/librepo-1.11.3-1.fc32.x86_64.rpm","sha256:aa95c26e5b440953c42cf6e27161bf9d067dae7f4ab1da1cc19c2284dfd145fb":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/k/kernel-modules-5.6.14-300.fc32.x86_64.rpm","sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libbrotli-1.0.7-10.fc32.x86_64.rpm","sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/o/openldap-2.4.47-4.fc32.x86_64.rpm","sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.x86_64.rpm","sha256:af88353a1f306849da587aa4c49b1104caff506e84cc6d6805e844c937d37d56":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/c/coreutils-common-8.32-4.fc32.1.x86_64.rpm","sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm","sha256:affae36e6d8dccdd9048ca24fcc2e87f83f08c27636c1e70f081625f445df320":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libdnf-0.47.0-1.fc32.x86_64.rpm","sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/n/ncurses-6.1-15.20191109.fc32.x86_64.rpm","sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libpcap-1.9.1-3.fc32.x86_64.rpm","sha256:b4053e72ef23e59a43b4f77b0f3abeb92c4b72c9df7d4f62572560edfbfa02a4":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libarchive-3.4.3-1.fc32.x86_64.rpm","sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libcap-ng-0.7.10-2.fc32.x86_64.rpm","sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-5.fc32.x86_64.rpm","sha256:b906f2e1a8045b0b895ff0a8196ca41822ba495731338debb6f21129d4bc51c2":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libssh-config-0.9.4-2.fc32.noarch.rpm","sha256:be1358f7c9accf20d34d468264e88019c9b30a0e77b58726b221c0fcd66560f7":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-3.8.3-1.fc32.x86_64.rpm","sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/n/nettle-3.5.1-5.fc32.x86_64.rpm","sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/z/zlib-1.2.11-21.fc32.x86_64.rpm","sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/device-mapper-1.02.171-1.fc32.x86_64.rpm","sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.x86_64.rpm","sha256:c23c45c7d0040856ac295aab919b3953dec18f54c98fcc95775948b283a67656":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/g/gpgme-1.13.1-7.fc32.x86_64.rpm","sha256:c2f7b54f06f9bac66c8f13ed80d217a718670a4fdb10cb44692eeb5426131d6b":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libmodulemd-2.9.3-1.fc32.x86_64.rpm","sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dosfstools-4.1-10.fc32.x86_64.rpm","sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/a/alternatives-1.11-6.fc32.x86_64.rpm","sha256:c6ada06d383423665aa32c638ecdc40c54ee0b1b866c6396f9533d8691ad53e2":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-gpg-1.13.1-7.fc32.x86_64.rpm","sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch.rpm","sha256:c7e5d5de11d4c791596ca39d1587c50caba0e06f12a7c24c5d40421d291cd661":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/f/findutils-4.7.0-4.fc32.x86_64.rpm","sha256:c84a5e00f504e0f60aa02cac7eb5cde57ed7958f2965ea2fce0c7e9cd0ff532b":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-4.15.1-3.fc32.1.x86_64.rpm","sha256:cb0c64cc81e0b384bbc9d27ffcb2a655b13c91a799aad8972264aed1767926a3":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-slip-dbus-0.6.4-19.fc32.noarch.rpm","sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm","sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-4.fc32.x86_64.rpm","sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libpsl-0.21.0-4.fc32.x86_64.rpm","sha256:cfad2b3209d56d57f624640a06ea70238be35eaa702cd32b81f62a1df83cca14":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/g/gettext-0.20.2-1.fc32.x86_64.rpm","sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm","sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/gawk-5.0.1-7.fc32.x86_64.rpm","sha256:d2abba1a0523bd9df5073900593ab13ec2ed2e391440be4d883314fa154370f8":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-slip-0.6.4-19.fc32.noarch.rpm","sha256:d43d17930e5fedbbeb2a45bdbfff713485c6cd01ca6cbb9443370192e73daf40":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libblkid-2.35.2-1.fc32.x86_64.rpm","sha256:d46293795b113fe996bebd2056f7b05f187f0bdcd3186b5012a8b8d91846e6c2":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python-unversioned-command-3.8.3-1.fc32.noarch.rpm","sha256:d593124bca390187150aceebd4ce67688d6c22e0294d1ae495d5197dea0b5a16":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/pcre2-10.35-1.fc32.x86_64.rpm","sha256:d7961e92751ef2e208e634b75fdeee407532f04c161b9ec0bef27bf7704758ce":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/g/grub2-tools-minimal-2.04-19.fc32.x86_64.rpm","sha256:d7a895002e2291f776c8bf40dc99848105ca8c8e1651ba4692cc44ab838bc0a1":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libfdisk-2.35.2-1.fc32.x86_64.rpm","sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/glibc-2.31-2.fc32.x86_64.rpm","sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/p11-kit-0.23.20-1.fc32.x86_64.rpm","sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libseccomp-2.4.2-3.fc32.x86_64.rpm","sha256:df3f5d6c41e2be1f4fb2b5a58e70833b414d307bbe85709f2636f0c464499ec5":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/t/tzdata-2020a-1.fc32.noarch.rpm","sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/f/file-libs-5.38-2.fc32.x86_64.rpm","sha256:e20984afd6d2aa8b76c157b55c6ffad65566c15b29646c8636f26b7bbabd5e50":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libcomps-0.1.15-1.fc32.x86_64.rpm","sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/krb5-libs-1.18-1.fc32.x86_64.rpm","sha256:e46edb66c422a6878b1f77777f04544a9174521f3eaac3b4c55ff0583938dd15":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/f/fedora-gpg-keys-32-2.noarch.rpm","sha256:e6530742863132f93dd090c7b8009f6e17a3dc56d5862a97f5518d7f27cf783d":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/m/mpfr-4.0.2-4.fc32.x86_64.rpm","sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/glibc-common-2.31-2.fc32.x86_64.rpm","sha256:ea6910a5b20bc1db78688d16425eb97a82960996dcde565cbc66098bbbd77847":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-build-libs-4.15.1-3.fc32.1.x86_64.rpm","sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.x86_64.rpm","sha256:eb9f0657a88801f28eb2309b7d046ab0cc1176cd8bb6c21175ef1de183d4b9e7":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-libdnf-0.47.0-1.fc32.x86_64.rpm","sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm","sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.x86_64.rpm","sha256:ecb8a942ab85ec5a1ff1a9ec652a104e6aca0283475821000fc1cb719c783589":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/d/dnf-data-4.2.21-1.fc32.noarch.rpm","sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dbus-1.12.16-4.fc32.x86_64.rpm","sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libverto-0.3.0-9.fc32.x86_64.rpm","sha256:ee9fb01963d4192f679883a74588d2e0dba0e5f2c53e4181455b610f5fac672d":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/k/kpartx-0.8.2-4.fc32.x86_64.rpm","sha256:f00b659341553c1e3c121b71fc4334fc6468b393bf3e0c3b7e90e75cffbf4a8e":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/c/crypto-policies-20200527-1.gitb234a47.fc32.noarch.rpm","sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.x86_64.rpm","sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/r/readline-8.0-4.fc32.x86_64.rpm","sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-7.fc32.x86_64.rpm","sha256:f463968cf5f6f7df198f4775b7ef658cfcdf72f9f9b87e497646eaf968b6372a":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/e/elfutils-debuginfod-client-0.179-2.fc32.x86_64.rpm","sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/i/iptables-libs-1.8.4-7.fc32.x86_64.rpm","sha256:f60fc561675e41ffa2c48b229960291e2438441d5ed758c1f28cb06b5d4e4ea9":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/i/ipset-libs-7.6-1.fc32.x86_64.rpm","sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-libselinux-3.0-3.fc32.x86_64.rpm","sha256:f80935f69caf21b67bc50deab4db4478a3cba4997dc65286349426bfbb7223b2":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-hawkey-0.47.0-1.fc32.x86_64.rpm","sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libacl-2.2.53-5.fc32.x86_64.rpm","sha256:f844f75efe3aca759eb80d426f6530ab03de0467665239bd21e5129ced6bae1c":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/n/nftables-0.9.3-3.fc32.x86_64.rpm","sha256:f93eb1920c645923ec14f70130ba5e4bf1cf93f8196c237e7c95abbf452c1bb6":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-gobject-base-3.36.1-1.fc32.x86_64.rpm","sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libutempter-1.1.6-18.fc32.x86_64.rpm","sha256:fa5746133a0e03485cb74ed5747010e19817f890ed538971fb6d6d47fd21eecd":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/f/fedora-repos-32-2.noarch.rpm","sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libunistring-0.9.10-7.fc32.x86_64.rpm","sha256:fbabd02b2ab3aecfdfa7484fefb8190bf134e615ddd8ce1d38e27a5907b50a40":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/g/grub2-pc-modules-2.04-19.fc32.noarch.rpm","sha256:fd4404aec80bb4fa767f4fcc686a37b0cc406e766c9b3704c1b481d648c76c1a":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/o/openssl-pkcs11-0.4.10-6.fc32.x86_64.rpm","sha256:fef247293abdc1cc22766e19bc55829240f36531dcfa0168410bec60595f7b8a":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/k/kernel-core-5.6.14-300.fc32.x86_64.rpm","sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.x86_64.rpm","sha256:ff1546cec9a7487b81e58e8604feb080eddd484ffd1a1f187865467d28850e81":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/l/libreport-filesystem-2.13.1-4.fc32.noarch.rpm","sha256:ffaa05614a9c419fe0ade73fa572f58d51bcd1a0f3f5c8ab4d6757e70e97fa36":"http://ftp.fau.de/fedora/linux/updates/32/Everything/x86_64/Packages/o/openssl-libs-1.1.1g-1.fc32.x86_64.rpm","sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/sed-4.5-5.fc32.x86_64.rpm"}}},"pipeline":{"build":{"pipeline":{"stages":[{"name":"org.osbuild.rpm","options":{"gpgkeys":["-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n","-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n","-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n","-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n"],"packages":["sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b","sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c","sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96","sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce","sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975","sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0","sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4","sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d","sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829","sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5","sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1","sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740","sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6","sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940","sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960","sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8","sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4","sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949","sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b","sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec","sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79","sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99","sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e","sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9","sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4","sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5","sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4","sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2","sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32","sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836","sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5","sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe","sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00","sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9","sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095","sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85","sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf","sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48","sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813","sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248","sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b","sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22","sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd","sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2","sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d","sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b","sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4","sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886","sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b","sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88","sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c","sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7","sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314","sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896","sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4","sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa","sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe","sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab","sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401","sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c","sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278","sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2","sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e","sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b","sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe","sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9","sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f","sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6","sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b","sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825","sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9","sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f","sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923","sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf","sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb","sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590","sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438","sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa","sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf","sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927","sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8","sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6","sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c","sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844","sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a","sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60","sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e","sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1","sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986","sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886","sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6","sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1","sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102","sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659","sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464","sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466","sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875","sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59","sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d","sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b","sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e","sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec","sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808","sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939","sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899","sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604","sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4","sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569","sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5","sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee","sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb","sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9","sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9","sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8","sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61","sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280","sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9","sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103","sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973","sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9","sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db","sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3","sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd","sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5","sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b","sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1","sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff","sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b","sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61","sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b","sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647","sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c","sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338","sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9","sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80","sha256:5b7e8c9fc5f038530130a02af79ed7dbbc34804b22338edf9f16354818d04351","sha256:af88353a1f306849da587aa4c49b1104caff506e84cc6d6805e844c937d37d56","sha256:f00b659341553c1e3c121b71fc4334fc6468b393bf3e0c3b7e90e75cffbf4a8e","sha256:7cca8885c45a4f801cb78c42597ddd35bb44c68c9181fbc7cb3f94bce320ec5c","sha256:7c5b1d5e9099b5314698573f542e88810b2571a05c5e25b3291d7d8d379f93ed","sha256:4158624697b461fbcb28b325922445a7c164d72723c4c9975f6bc3a9d2dd3f3a","sha256:02de6f2778310a36a3e4dfd47f9c35c67140e77c4142371ae126f6478cdf46be","sha256:ecb8a942ab85ec5a1ff1a9ec652a104e6aca0283475821000fc1cb719c783589","sha256:f463968cf5f6f7df198f4775b7ef658cfcdf72f9f9b87e497646eaf968b6372a","sha256:6fc3d1a25b34a2d434b3481331359175cec06f115d63db3299ade82609cb278d","sha256:417dab5baecca2da19780bdc1098e0f09bad94c1dc4c31ad7f123a96ec01ce1f","sha256:6fac977d63ca18d28a1fba1b0a9fe24b6973fbc3c5aace97091f401fe57cce9a","sha256:e46edb66c422a6878b1f77777f04544a9174521f3eaac3b4c55ff0583938dd15","sha256:a01c177ed13a098094ffc202a1390069ec47f59a3f54293d984d906464ec2834","sha256:51a1a7b6eb8b1e9158ef775e4087836349d0012fd5ec46e082deaa8367400353","sha256:fa5746133a0e03485cb74ed5747010e19817f890ed538971fb6d6d47fd21eecd","sha256:c7e5d5de11d4c791596ca39d1587c50caba0e06f12a7c24c5d40421d291cd661","sha256:cfad2b3209d56d57f624640a06ea70238be35eaa702cd32b81f62a1df83cca14","sha256:1bb8798507c8999d4f59465527bdcf64b95266f6e885f84e0253117dc146d83a","sha256:4eb5b62f33ac69aeddad8b0cc017d6cef909d8b8ffd45cd833d43044d115ce67","sha256:88c92b121d4cec2a457772ef54270f07b3e755ece739a2fdbc446ffd08f21f00","sha256:1f5c2af3943f9212b8ecd8349c76908047594b44ffa670d833899826c3a83441","sha256:9f453039643c37e6b71f93d7d65a821bdd8939791ab5a52a376751a63229ab39","sha256:c23c45c7d0040856ac295aab919b3953dec18f54c98fcc95775948b283a67656","sha256:0ee42cf758be23b9e87406e99969e9a1693b5e01adb1d67b7823eb82e5b7025d","sha256:419e497c76ba728fe8eeb254bf3ff2e22bcd3e3480a0215b286dbeb019caf398","sha256:fbabd02b2ab3aecfdfa7484fefb8190bf134e615ddd8ce1d38e27a5907b50a40","sha256:6a59645a1336fcfed2c045e1cd7fc8969e1727b28b5b8dcf35c69bdef7c4d0a4","sha256:d7961e92751ef2e208e634b75fdeee407532f04c161b9ec0bef27bf7704758ce","sha256:56ecdfc358f2149bc9f6fd38161d33fe45177c11059fd813143c8d314b1019fc","sha256:ee9fb01963d4192f679883a74588d2e0dba0e5f2c53e4181455b610f5fac672d","sha256:b4053e72ef23e59a43b4f77b0f3abeb92c4b72c9df7d4f62572560edfbfa02a4","sha256:d43d17930e5fedbbeb2a45bdbfff713485c6cd01ca6cbb9443370192e73daf40","sha256:e20984afd6d2aa8b76c157b55c6ffad65566c15b29646c8636f26b7bbabd5e50","sha256:7e1ebb8cb74f5a1675085d6067c87ab4f1f9d21e1974d219f9d48fc468e2a7c5","sha256:affae36e6d8dccdd9048ca24fcc2e87f83f08c27636c1e70f081625f445df320","sha256:d7a895002e2291f776c8bf40dc99848105ca8c8e1651ba4692cc44ab838bc0a1","sha256:495db9bd35d0631b2813ba2b8f10b284be56b2f23e56123674857e6d7e9853cf","sha256:a2ad5970a8d117e9216e2e1e70f8b8247a25dc0a556e5fcba245f73ced3283bf","sha256:c2f7b54f06f9bac66c8f13ed80d217a718670a4fdb10cb44692eeb5426131d6b","sha256:2c8e76fcc1ad8197ffdb66d06fb498a1129e71e0f7c04a05176867e5788bbf05","sha256:a95e0092daedde142a4ed2dc6589bd4f4dee36bc69ad982bcb42351f9975c994","sha256:ff1546cec9a7487b81e58e8604feb080eddd484ffd1a1f187865467d28850e81","sha256:01705d02dcf229b9b69ce8e97c81346a9c0e444ee07c43681895294577281775","sha256:82a0c6703444fa28ab032b3e4aa355deabff92f3f39d5490faa5c9b9150eaceb","sha256:50308833a750fcba4422052e5dd6f72a4691340813c803ef157283621ed35215","sha256:2c68b021959911bd946c5d43d3c6ebdf3dcae378e4ee1e68f98780b94616cc87","sha256:b906f2e1a8045b0b895ff0a8196ca41822ba495731338debb6f21129d4bc51c2","sha256:2b6853be09f6155dbbddfb25c9bd65d289493f9d1f51c891b4539b9245739dd0","sha256:26fa850e30bf0ea42b3d8a573ed58b62eeeaec754a051eaea3e768e29673144d","sha256:4929636a918bb0af18de939fabd41b4e998dfd3aeb3693a02d7b05377bc0f18f","sha256:20ad2f907034a1c3e76dd4691886223bf588ff946fd57545ecdfcd58bc4c3b4b","sha256:5d43a1d2f9d3e3e1e0d6c3cc09bf2850a689b226bbf2c200abb5d0aebc351455","sha256:5978ef81620bea4c5634d5ea93f162e61a83aabeeab35f29e8506ea66bb016ad","sha256:1a19c6f772fe9d1e339333639756d28fbc33d552b6ac734510291fd22a88a6a5","sha256:e6530742863132f93dd090c7b8009f6e17a3dc56d5862a97f5518d7f27cf783d","sha256:2ad9ccdab138ec355fe3132dbcaa381491b80949841000e764f17945753fc77a","sha256:ffaa05614a9c419fe0ade73fa572f58d51bcd1a0f3f5c8ab4d6757e70e97fa36","sha256:fd4404aec80bb4fa767f4fcc686a37b0cc406e766c9b3704c1b481d648c76c1a","sha256:d593124bca390187150aceebd4ce67688d6c22e0294d1ae495d5197dea0b5a16","sha256:860a309d10907bc4735c8af1513bc2f29633df73ab9a00c585ec994ec23f7f90","sha256:9ebb22c37f0f44203bc579625757b18cbf7dd751de2959d3a4235f56d4b748ad","sha256:d46293795b113fe996bebd2056f7b05f187f0bdcd3186b5012a8b8d91846e6c2","sha256:be1358f7c9accf20d34d468264e88019c9b30a0e77b58726b221c0fcd66560f7","sha256:9dbf41afbd3b67340971e5b4fc61ccd2358f045019915d97d3fbc5bc6541fe0e","sha256:c6ada06d383423665aa32c638ecdc40c54ee0b1b866c6396f9533d8691ad53e2","sha256:f80935f69caf21b67bc50deab4db4478a3cba4997dc65286349426bfbb7223b2","sha256:28fd8db75d20cf14174cad3a5c2cd740d899ee2a064c48b892981b154e94a4d0","sha256:eb9f0657a88801f28eb2309b7d046ab0cc1176cd8bb6c21175ef1de183d4b9e7","sha256:47c21130eb66c93ffc5c9528606d4c02ce5d9cdeb784baa031cb98e7ddbac9c3","sha256:4296471e898b26f01fcf2b420728e39e8f50f0015f7e7c686807a6e86efc69a1","sha256:95a13407e6f4c40c731655053e99f955fd56f66fafadd5f7f0e7c04fa58ffe8b","sha256:1ec0d908c774fa4efa15029e21d9d160e24e10b040357d64b4224e90b3b7d3c2","sha256:c84a5e00f504e0f60aa02cac7eb5cde57ed7958f2965ea2fce0c7e9cd0ff532b","sha256:ea6910a5b20bc1db78688d16425eb97a82960996dcde565cbc66098bbbd77847","sha256:506b1d8ba1f1fbf138a94de6a1705da12360c81e6797cb60df488c87e9a366fe","sha256:2bbe073544977e15c66507fb382b46349f46f773365511aba63353014f17dd28","sha256:7c2b9d82983189251cbe90d0debb6c0938d9a4f484332405b8d3582a618a0ccb","sha256:df3f5d6c41e2be1f4fb2b5a58e70833b414d307bbe85709f2636f0c464499ec5","sha256:463d8259936601d23a02c407a4fb294c0e3bc9a213282c4525137bc1b18bbf6b","sha256:4d80736f9a52519104eeb228eb1ea95d0d6e9addc766eebacc9a5137fb2a5977"]}}]},"runner":"org.osbuild.fedora32"},"stages":[{"name":"org.osbuild.rpm","options":{"gpgkeys":["-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n","-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n","-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n","-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n"],"packages":["sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b","sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c","sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96","sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce","sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975","sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0","sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4","sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57","sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309","sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56","sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280","sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d","sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829","sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5","sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1","sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740","sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6","sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940","sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960","sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315","sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4","sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949","sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b","sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79","sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9","sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4","sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012","sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32","sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836","sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5","sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00","sha256:24520e03276e0d850169efc9d83b12a9a01eee5d7202dadca12d2e0a8b7352ba","sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9","sha256:052ddc487a29acce1b5d44532f79f8ab594d0ac6565504071f4c7706d97fc552","sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095","sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85","sha256:7c21c21c3e3dbace06bee03fe4835ae6cb1e3ef86750ba2853f39d40dead2309","sha256:f60fc561675e41ffa2c48b229960291e2438441d5ed758c1f28cb06b5d4e4ea9","sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48","sha256:08c41c10745c172c34880e384cf5cff014a9627f4895e59fa482948b27e2ce9e","sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8","sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813","sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248","sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b","sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22","sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd","sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2","sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d","sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0","sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389","sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca","sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b","sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886","sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88","sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c","sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7","sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314","sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896","sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa","sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe","sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09","sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401","sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c","sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278","sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2","sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e","sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b","sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9","sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f","sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6","sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b","sha256:3afab9512fd4d56a13c95b530c805ac8b2bc872572ec5bb435eccdd59fbbc8b6","sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825","sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9","sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f","sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923","sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf","sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb","sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590","sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438","sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa","sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf","sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927","sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6","sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c","sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a","sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60","sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e","sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1","sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886","sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6","sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1","sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102","sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659","sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464","sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466","sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59","sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b","sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e","sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec","sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808","sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939","sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604","sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4","sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569","sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5","sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee","sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070","sha256:129adf9147d5d120546ca8e0fb5f165761106d386d366fe82591e372754d0b4a","sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124","sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb","sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f","sha256:d2abba1a0523bd9df5073900593ab13ec2ed2e391440be4d883314fa154370f8","sha256:cb0c64cc81e0b384bbc9d27ffcb2a655b13c91a799aad8972264aed1767926a3","sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9","sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8","sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61","sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280","sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9","sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103","sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973","sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9","sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db","sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3","sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd","sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5","sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1","sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff","sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b","sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647","sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c","sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338","sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80","sha256:5da6c745f8cec5da45e87739660edf1f8796f00c888a043da51d4d29bc7e5e51","sha256:5b7e8c9fc5f038530130a02af79ed7dbbc34804b22338edf9f16354818d04351","sha256:af88353a1f306849da587aa4c49b1104caff506e84cc6d6805e844c937d37d56","sha256:f00b659341553c1e3c121b71fc4334fc6468b393bf3e0c3b7e90e75cffbf4a8e","sha256:7cca8885c45a4f801cb78c42597ddd35bb44c68c9181fbc7cb3f94bce320ec5c","sha256:7c5b1d5e9099b5314698573f542e88810b2571a05c5e25b3291d7d8d379f93ed","sha256:4158624697b461fbcb28b325922445a7c164d72723c4c9975f6bc3a9d2dd3f3a","sha256:f463968cf5f6f7df198f4775b7ef658cfcdf72f9f9b87e497646eaf968b6372a","sha256:6fc3d1a25b34a2d434b3481331359175cec06f115d63db3299ade82609cb278d","sha256:417dab5baecca2da19780bdc1098e0f09bad94c1dc4c31ad7f123a96ec01ce1f","sha256:6fac977d63ca18d28a1fba1b0a9fe24b6973fbc3c5aace97091f401fe57cce9a","sha256:e46edb66c422a6878b1f77777f04544a9174521f3eaac3b4c55ff0583938dd15","sha256:a01c177ed13a098094ffc202a1390069ec47f59a3f54293d984d906464ec2834","sha256:51a1a7b6eb8b1e9158ef775e4087836349d0012fd5ec46e082deaa8367400353","sha256:fa5746133a0e03485cb74ed5747010e19817f890ed538971fb6d6d47fd21eecd","sha256:c7e5d5de11d4c791596ca39d1587c50caba0e06f12a7c24c5d40421d291cd661","sha256:117a930b438715f04f9365dbe99d2e8f3db96d8d1652b05794b6ba286683474f","sha256:83b6744785189474b9e4faa5368b80c22c958bf4fcdc453e1447f7194edfc790","sha256:4eb5b62f33ac69aeddad8b0cc017d6cef909d8b8ffd45cd833d43044d115ce67","sha256:9f453039643c37e6b71f93d7d65a821bdd8939791ab5a52a376751a63229ab39","sha256:56ecdfc358f2149bc9f6fd38161d33fe45177c11059fd813143c8d314b1019fc","sha256:9ecfb4c0a291cf7dcb8e585913123eee521c1a7dde63865729cd0407983501b3","sha256:fef247293abdc1cc22766e19bc55829240f36531dcfa0168410bec60595f7b8a","sha256:aa95c26e5b440953c42cf6e27161bf9d067dae7f4ab1da1cc19c2284dfd145fb","sha256:ee9fb01963d4192f679883a74588d2e0dba0e5f2c53e4181455b610f5fac672d","sha256:b4053e72ef23e59a43b4f77b0f3abeb92c4b72c9df7d4f62572560edfbfa02a4","sha256:d43d17930e5fedbbeb2a45bdbfff713485c6cd01ca6cbb9443370192e73daf40","sha256:7e1ebb8cb74f5a1675085d6067c87ab4f1f9d21e1974d219f9d48fc468e2a7c5","sha256:d7a895002e2291f776c8bf40dc99848105ca8c8e1651ba4692cc44ab838bc0a1","sha256:495db9bd35d0631b2813ba2b8f10b284be56b2f23e56123674857e6d7e9853cf","sha256:2c8e76fcc1ad8197ffdb66d06fb498a1129e71e0f7c04a05176867e5788bbf05","sha256:82a0c6703444fa28ab032b3e4aa355deabff92f3f39d5490faa5c9b9150eaceb","sha256:2c68b021959911bd946c5d43d3c6ebdf3dcae378e4ee1e68f98780b94616cc87","sha256:b906f2e1a8045b0b895ff0a8196ca41822ba495731338debb6f21129d4bc51c2","sha256:4929636a918bb0af18de939fabd41b4e998dfd3aeb3693a02d7b05377bc0f18f","sha256:20ad2f907034a1c3e76dd4691886223bf588ff946fd57545ecdfcd58bc4c3b4b","sha256:5d43a1d2f9d3e3e1e0d6c3cc09bf2850a689b226bbf2c200abb5d0aebc351455","sha256:5978ef81620bea4c5634d5ea93f162e61a83aabeeab35f29e8506ea66bb016ad","sha256:1a19c6f772fe9d1e339333639756d28fbc33d552b6ac734510291fd22a88a6a5","sha256:860db405a0e85d81f1fa5450a8b05dab7e170920231c812caae3a48b4fc87e48","sha256:7705a532986761cae92684e2dc9012ba37f10891c46096c57f2628be2b82d106","sha256:e6530742863132f93dd090c7b8009f6e17a3dc56d5862a97f5518d7f27cf783d","sha256:f844f75efe3aca759eb80d426f6530ab03de0467665239bd21e5129ced6bae1c","sha256:ffaa05614a9c419fe0ade73fa572f58d51bcd1a0f3f5c8ab4d6757e70e97fa36","sha256:fd4404aec80bb4fa767f4fcc686a37b0cc406e766c9b3704c1b481d648c76c1a","sha256:d593124bca390187150aceebd4ce67688d6c22e0294d1ae495d5197dea0b5a16","sha256:860a309d10907bc4735c8af1513bc2f29633df73ab9a00c585ec994ec23f7f90","sha256:9ebb22c37f0f44203bc579625757b18cbf7dd751de2959d3a4235f56d4b748ad","sha256:d46293795b113fe996bebd2056f7b05f187f0bdcd3186b5012a8b8d91846e6c2","sha256:be1358f7c9accf20d34d468264e88019c9b30a0e77b58726b221c0fcd66560f7","sha256:5443d1bc0b7eb269a050c1221818a0a82cee6803114f70ee26d05d6756879b7f","sha256:f93eb1920c645923ec14f70130ba5e4bf1cf93f8196c237e7c95abbf452c1bb6","sha256:47c21130eb66c93ffc5c9528606d4c02ce5d9cdeb784baa031cb98e7ddbac9c3","sha256:a610fbda2dd5c901f68ee0f9faaf09238921a15fdc52f823f41edc8b38fec2a1","sha256:4296471e898b26f01fcf2b420728e39e8f50f0015f7e7c686807a6e86efc69a1","sha256:c84a5e00f504e0f60aa02cac7eb5cde57ed7958f2965ea2fce0c7e9cd0ff532b","sha256:506b1d8ba1f1fbf138a94de6a1705da12360c81e6797cb60df488c87e9a366fe","sha256:53823a669b4ab38d3ab58a6d8524e47f9d7c6998e006b9b5cab59dc1e5b47f88","sha256:0f29f9c9a8ac60616c4f606508067a8f97443780b0425e29ef0bec8e1cbb876a","sha256:a883c4ecd38b3208be7f52555aa529d746da55488951b5b47e130313b753a8c3","sha256:df3f5d6c41e2be1f4fb2b5a58e70833b414d307bbe85709f2636f0c464499ec5","sha256:4d80736f9a52519104eeb228eb1ea95d0d6e9addc766eebacc9a5137fb2a5977"]}},{"name":"org.osbuild.fix-bls","options":{}},{"name":"org.osbuild.locale","options":{"language":"en_US"}},{"name":"org.osbuild.hostname","options":{"hostname":"my-host"}},{"name":"org.osbuild.users","options":{"users":{"me":{"key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost"},"myself":{"uid":"42","gid":"42","groups":["wheel"],"description":"Mostly harmless.","home":"/home/my-home","shell":"/bin/true","password":"$6$HESpUWGCBYNKYHmc$ywn123ogfz8tk1rWE0sydxnnVoqLJLqik2tymZ6dfFXPl3eKrQTf.1VBOGGIs/I3H2O/72IMFvZAj8tQEnJRr.","key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost"}}}},{"name":"org.osbuild.selinux","options":{"file_contexts":"etc/selinux/targeted/contexts/files/file_contexts"}}],"assembler":{"name":"org.osbuild.rawfs","options":{"filename":"filesystem.img","root_fs_uuid":"76a22bf4-f153-4541-b6c7-0332c0dfaeac","size":0}}}},"targets":[{"uuid":"d04cba52-6269-495c-892f-c1cf94382164","image_name":"My Image","name":"org.osbuild.aws","created":"2020-05-31T21:26:29.741512452+02:00","status":"WAITING","options":{"filename":"image.ami","region":"far-away-1","accessKeyID":"MyKey","secretAccessKey":"MySecret","bucket":"list","key":"image"}}],"job_created":"2020-05-31T21:26:49.883652603+02:00","job_started":"0001-01-01T00:00:00Z","job_finished":"0001-01-01T00:00:00Z","size":0,"jobid":"eaa5f624-a5b5-4de2-9d29-2ce3882da171"}]}},"sources":{},"changes":{"my-blueprint-1":{"8e7c980d084d93f6c29f2d6bdb7b9ba800a9ca7b":{"commit":"8e7c980d084d93f6c29f2d6bdb7b9ba800a9ca7b","message":"message 1","revision":null,"timestamp":"2020-05-31T21:26:29Z"},"9c37ea6f6f3445faa531b19ee291b00b0b2d51d2":{"commit":"9c37ea6f6f3445faa531b19ee291b00b0b2d51d2","message":"message 2","revision":null,"timestamp":"2020-05-31T21:26:29Z"}}},"commits":{"my-blueprint-1":["8e7c980d084d93f6c29f2d6bdb7b9ba800a9ca7b","9c37ea6f6f3445faa531b19ee291b00b0b2d51d2"]}} diff --git a/internal/store/test/state-v13.json b/internal/store/test/state-v13.json new file mode 100644 index 0000000..b6af290 --- /dev/null +++ b/internal/store/test/state-v13.json @@ -0,0 +1 @@ +{"blueprints":{"my-blueprint-1":{"name":"my-blueprint-1","description":"My first blueprint","version":"0.0.1","packages":[{"name":"tmux"}],"modules":[],"groups":[{"name":"core"}]}},"workspace":{"my-blueprint-2":{"name":"my-blueprint-2","description":"My second blueprint","version":"0.0.2","packages":[],"modules":[],"groups":[],"customizations":{"hostname":"my-host","kernel":{"append":"debug"},"sshkey":[{"user":"me","key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost"}],"user":[{"name":"myself","description":"Mostly harmless.","password":"password","key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost","home":"/home/my-home","shell":"/bin/true","groups":["wheel"],"uid":42,"gid":42}]}}},"composes":{"15d6926b-4171-4ef3-ae8e-26cb8e269718":{"blueprint":{"name":"my-blueprint-2","description":"My second blueprint","version":"0.0.2","packages":null,"modules":null,"groups":null,"customizations":{"hostname":"my-host","kernel":{"append":"debug"},"sshkey":[{"user":"me","key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost"}],"user":[{"name":"myself","description":"Mostly harmless.","password":"password","key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost","home":"/home/my-home","shell":"/bin/true","groups":["wheel"],"uid":42,"gid":42}]}},"image_builds":[{"id":0,"image_type":"fedora-iot-commit","manifest":{"sources":{"org.osbuild.files":{"urls":{"sha256:00d0bb6a08f20bea2b6bd0d2c4de99b51c770b2dab266d1d3da85891efeded01":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/a/attr-2.4.48-8.fc32.x86_64.rpm"},"sha256:01705d02dcf229b9b69ce8e97c81346a9c0e444ee07c43681895294577281775":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libsecret-0.20.3-1.fc32.x86_64.rpm"},"sha256:01a6ffdc7f32576d33dd95d0ed94bb9aaa0f32d3a36fcd30c1149e7cd959fd33":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/c/clevis-luks-13-1.fc32.x86_64.rpm"},"sha256:024dd8a75eb5472692d0291292d25939b97a0295e5ab0958dcd22600d392eaae":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/r/rsync-3.1.3-11.fc32.x86_64.rpm"},"sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-six-1.14.0-2.fc32.noarch.rpm"},"sha256:02de6f2778310a36a3e4dfd47f9c35c67140e77c4142371ae126f6478cdf46be":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/d/dnf-4.2.21-1.fc32.noarch.rpm"},"sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.x86_64.rpm"},"sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libtasn1-4.16.0-1.fc32.x86_64.rpm"},"sha256:052ddc487a29acce1b5d44532f79f8ab594d0ac6565504071f4c7706d97fc552":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/gobject-introspection-1.64.1-1.fc32.x86_64.rpm"},"sha256:05efccb06aa336d2547eb8fd5b7e0935c883f89084688f32ce0b09954149b796":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/e/efivar-libs-37-7.fc32.x86_64.rpm"},"sha256:08c41c10745c172c34880e384cf5cff014a9627f4895e59fa482948b27e2ce9e":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/i/iptables-nft-1.8.4-7.fc32.x86_64.rpm"},"sha256:0bace0cf41921db39247c99bfccb228818b83b68c7b8be7c8c4a92ea298a9a29":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/pkgconf-m4-1.6.3-3.fc32.noarch.rpm"},"sha256:0bf75fbc7a1ff39fc941802ada44bda3fb38b37f49de242a16aee50936a0d6c1":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/i/iwl2030-firmware-18.168.6.1-108.fc32.noarch.rpm"},"sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/i/iproute-tc-5.5.0-1.fc32.x86_64.rpm"},"sha256:0d99e49dd942bbe206ec2d2bfd546df428457ff22c9f4886eef1dba328b2b03b":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/podman-plugins-1.9.2-1.fc32.x86_64.rpm"},"sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libselinux-3.0-3.fc32.x86_64.rpm"},"sha256:0ee42cf758be23b9e87406e99969e9a1693b5e01adb1d67b7823eb82e5b7025d":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/grub2-common-2.04-19.fc32.noarch.rpm"},"sha256:0f29f9c9a8ac60616c4f606508067a8f97443780b0425e29ef0bec8e1cbb876a":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/s/selinux-policy-3.14.5-39.fc32.noarch.rpm"},"sha256:106e898fb411ed0bbd391d66799faff80b79d32a0c3a083d958b2b89784f272e":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/f/fuse-overlayfs-1.0.0-1.fc32.x86_64.rpm"},"sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-7.fc32.x86_64.rpm"},"sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/f/filesystem-3.14-2.fc32.x86_64.rpm"},"sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/cpio-2.13-4.fc32.x86_64.rpm"},"sha256:117a930b438715f04f9365dbe99d2e8f3db96d8d1652b05794b6ba286683474f":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/f/firewalld-0.8.2-3.fc32.noarch.rpm"},"sha256:11d6aa88c7e5bbaad38353bbb557ad8370452cd258f2a0d16bfd490116138d67":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dracut-network-050-26.git20200316.fc32.x86_64.rpm"},"sha256:127b927e1402bc6e19afd785ad354ae0df64ff629f018c2939164465c0f5a3bd":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/n/NetworkManager-wwan-1.22.12-1.fc32.x86_64.rpm"},"sha256:129adf9147d5d120546ca8e0fb5f165761106d386d366fe82591e372754d0b4a":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-decorator-4.4.0-6.fc32.noarch.rpm"},"sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.31-2.fc32.x86_64.rpm"},"sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.x86_64.rpm"},"sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libselinux-utils-3.0-3.fc32.x86_64.rpm"},"sha256:14bd7e305e13795e0d37c613dfa3ead3a3219d28c32b27ad6527d3592361923d":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libftdi-1.4-2.fc32.x86_64.rpm"},"sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/passwd-0.80-8.fc32.x86_64.rpm"},"sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/pigz-2.4-6.fc32.x86_64.rpm"},"sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-policycoreutils-3.0-2.fc32.noarch.rpm"},"sha256:17869f00d1c94c6b6ff9497f41acf36c9311b0fe0091dbc3739920af26983b27":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/c/clevis-systemd-13-1.fc32.x86_64.rpm"},"sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/gmp-6.1.2-13.fc32.x86_64.rpm"},"sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/diffutils-3.7-4.fc32.x86_64.rpm"},"sha256:19b0dec8fce924341e35a9165bcc384843a77498db5ca435521b12212233adf2":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/o/openssh-clients-8.3p1-1.fc32.x86_64.rpm"},"sha256:1a19c6f772fe9d1e339333639756d28fbc33d552b6ac734510291fd22a88a6a5":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libzstd-1.4.5-3.fc32.x86_64.rpm"},"sha256:1a2f22eed83ef568021c464cce841ef98725b614093f2c518307e85d5b6e759b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/i/iwd-1.6-1.fc32.x86_64.rpm"},"sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.x86_64.rpm"},"sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libksba-1.3.5-11.fc32.x86_64.rpm"},"sha256:1b71cb73cbe079ccc1cf5c6bc52a8f990dccb3ea0d184879741eb36795d43b5d":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-ostree-libs-2020.2-3.fc32.x86_64.rpm"},"sha256:1bb8798507c8999d4f59465527bdcf64b95266f6e885f84e0253117dc146d83a":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/gettext-libs-0.20.2-1.fc32.x86_64.rpm"},"sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libcap-2.26-7.fc32.x86_64.rpm"},"sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/x/xz-5.2.5-1.fc32.x86_64.rpm"},"sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libmnl-1.0.4-11.fc32.x86_64.rpm"},"sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/systemd-245.4-1.fc32.x86_64.rpm"},"sha256:1ec0d908c774fa4efa15029e21d9d160e24e10b040357d64b4224e90b3b7d3c2":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-unbound-1.10.1-1.fc32.x86_64.rpm"},"sha256:1ec745d027098ff44efd29e56c03801be3f2dd7c1e1b9e23388d0916e340593e":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/n/NetworkManager-1.22.12-1.fc32.x86_64.rpm"},"sha256:1f5c2af3943f9212b8ecd8349c76908047594b44ffa670d833899826c3a83441":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/gnupg2-smime-2.2.20-2.fc32.x86_64.rpm"},"sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libidn2-2.3.0-2.fc32.x86_64.rpm"},"sha256:20ad2f907034a1c3e76dd4691886223bf588ff946fd57545ecdfcd58bc4c3b4b":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libuuid-2.35.2-1.fc32.x86_64.rpm"},"sha256:2141f1dec8fe7a442c061f603bf4ee6203e10a290990789af0f4ef9db5523679":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/b/bluez-mesh-5.54-1.fc32.x86_64.rpm"},"sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm"},"sha256:2434cd04a437c06f59d67ee2580443c0ba676c39440cd0f74cca768ec57577f9":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libluksmeta-9-7.fc32.x86_64.rpm"},"sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm"},"sha256:264368802760a9a89aea4542a2b1220f73f42fd9ef241934c14c100a0a577d73":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/i/iwl1000-firmware-39.31.5.1-108.fc32.noarch.rpm"},"sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.x86_64.rpm"},"sha256:26fa850e30bf0ea42b3d8a573ed58b62eeeaec754a051eaea3e768e29673144d":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libtextstyle-0.20.2-1.fc32.x86_64.rpm"},"sha256:272fbaa658475350293016eb19226b3b90b7e69f9f56fe6ba093a49f8084ff76":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/greenboot-0.9-2.fc32.noarch.rpm"},"sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libss-1.45.5-3.fc32.x86_64.rpm"},"sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/f/file-5.38-2.fc32.x86_64.rpm"},"sha256:28f4bcbf53258114ebbf0a167351d67e204ff6f717b49b3893c2372845e6bd0a":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/i/iptables-1.8.4-7.fc32.x86_64.rpm"},"sha256:28fd8db75d20cf14174cad3a5c2cd740d899ee2a064c48b892981b154e94a4d0":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-libcomps-0.1.15-1.fc32.x86_64.rpm"},"sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libsepol-3.0-3.fc32.x86_64.rpm"},"sha256:2a8c676f2126b8b99c3ea8dfccfc3d901c51108b4268a084b5b54951a90e2b20":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/i/iwl7260-firmware-25.30.13.0-108.fc32.noarch.rpm"},"sha256:2ad9ccdab138ec355fe3132dbcaa381491b80949841000e764f17945753fc77a":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/o/openssl-1.1.1g-1.fc32.x86_64.rpm"},"sha256:2b6853be09f6155dbbddfb25c9bd65d289493f9d1f51c891b4539b9245739dd0":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libstdc++-10.1.1-1.fc32.x86_64.rpm"},"sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/less-551-3.fc32.x86_64.rpm"},"sha256:2bbe073544977e15c66507fb382b46349f46f773365511aba63353014f17dd28":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-3.fc32.1.x86_64.rpm"},"sha256:2c68b021959911bd946c5d43d3c6ebdf3dcae378e4ee1e68f98780b94616cc87":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libssh-0.9.4-2.fc32.x86_64.rpm"},"sha256:2c8e76fcc1ad8197ffdb66d06fb498a1129e71e0f7c04a05176867e5788bbf05":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libmount-2.35.2-1.fc32.x86_64.rpm"},"sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/t/tar-1.32-4.fc32.x86_64.rpm"},"sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.x86_64.rpm"},"sha256:317654c97a9dc11fe498b61d4189ff31cd1277250993d826e9bc5815d0485f29":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/f/flashrom-1.2-2.fc32.x86_64.rpm"},"sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/systemd-udev-245.4-1.fc32.x86_64.rpm"},"sha256:34825050240f3e717579b9e66ba42f8fe2f2f548a4b36c476773b18161b0dae1":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/t/tpm2-tss-2.4.1-1.fc32.x86_64.rpm"},"sha256:35642d97e77aa48070364b7cd2e4704bb53b87b732c7dc484b59f51446aaaca8":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/n/nmap-ncat-7.80-4.fc32.x86_64.rpm"},"sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.x86_64.rpm"},"sha256:3795bd2d716af630dd57ec1f03ac353dcb992ced24d27f2718b188a4b2ea06dc":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/i/iwl2000-firmware-18.168.6.1-108.fc32.noarch.rpm"},"sha256:38409cd1f5770e10f086bd9dda1d9651dcc2433a17d43f9acd8f4877e074a6dd":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/o/ostree-2020.3-4.fc32.x86_64.rpm"},"sha256:38917ef4bc657c6f0be02d457f5d4ea9e0a8bd2c8fcdaf341b3705c1a65e0691":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/c/containernetworking-plugins-0.8.6-1.fc32.x86_64.rpm"},"sha256:397f0b024d3c58ca6e174c6de5abcb19304d7c58903199e1e6fe02e84d5bcb3a":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/gdisk-1.0.5-1.fc32.x86_64.rpm"},"sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/chrony-3.5-8.fc32.x86_64.rpm"},"sha256:39961756e07f6f49ddf2ff277dc04a63fa4d5b4fb035480945bd2f665ba1dd4d":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libell-0.30-1.fc32.x86_64.rpm"},"sha256:3afab9512fd4d56a13c95b530c805ac8b2bc872572ec5bb435eccdd59fbbc8b6":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libnftnl-1.1.5-2.fc32.x86_64.rpm"},"sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64.rpm"},"sha256:3b76bc46dd279404408d34946cfdb0c3899359a1c6b48e614e63d1259a94262a":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/lvm2-2.03.09-1.fc32.x86_64.rpm"},"sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm"},"sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/n/npth-1.6-4.fc32.x86_64.rpm"},"sha256:3cd56dea57c00e2c4a9d5aac69a1e843ebef581ba76dde9d9878082fa1215485":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-python-utils-3.0-2.fc32.noarch.rpm"},"sha256:3f7861ea2d8b4380b567f629a86fa31951a55f46f6eee017cb84ed87baf2c19e":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/z/zram-0.4-1.fc32.noarch.rpm"},"sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/kmod-27-1.fc32.x86_64.rpm"},"sha256:3fba1453714af580419d209b9eab7aa946646df137da8b96d89c5fa2a7fef467":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/m/microcode_ctl-2.1-37.fc32.x86_64.rpm"},"sha256:4158624697b461fbcb28b325922445a7c164d72723c4c9975f6bc3a9d2dd3f3a":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/d/dbus-broker-23-2.fc32.x86_64.rpm"},"sha256:417dab5baecca2da19780bdc1098e0f09bad94c1dc4c31ad7f123a96ec01ce1f":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/e/elfutils-libelf-0.179-2.fc32.x86_64.rpm"},"sha256:419e497c76ba728fe8eeb254bf3ff2e22bcd3e3480a0215b286dbeb019caf398":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/grub2-pc-2.04-19.fc32.x86_64.rpm"},"sha256:4296471e898b26f01fcf2b420728e39e8f50f0015f7e7c686807a6e86efc69a1":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-pip-19.3.1-3.fc32.noarch.rpm"},"sha256:42ea9c4807022a6382338ab9d7f60a48ae1b665b8a31c7ace4bdb24e1fe70142":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/i/iwl5000-firmware-8.83.5.1_1-108.fc32.noarch.rpm"},"sha256:42fcfac5037eab4099648e0f0ed3eb2aec6eb6a23a9e3808f9b69619ea7c44e3":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/n/nss-altfiles-2.18.1-16.fc32.x86_64.rpm"},"sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-40.fc32.x86_64.rpm"},"sha256:4375c398dff722a29bd1700bc8dc8b528345412d1e17d8d9d1176d9774962957":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/lzo-2.10-2.fc32.x86_64.rpm"},"sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libcom_err-1.45.5-3.fc32.x86_64.rpm"},"sha256:449d2888d6b835d207a55a2d9b4478eff1b926581fcead6260b6508e4db1b782":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/compat-readline5-5.2-36.fc32.x86_64.rpm"},"sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-2.fc32.x86_64.rpm"},"sha256:45132e53c649def28d63c199d8c3a3b9fd16fa8bca7426ad4e9c202e52a233b4":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/f/fuse-common-3.9.1-1.fc32.x86_64.rpm"},"sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/o/os-prober-1.77-4.fc32.x86_64.rpm"},"sha256:463d8259936601d23a02c407a4fb294c0e3bc9a213282c4525137bc1b18bbf6b":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/u/unbound-libs-1.10.1-1.fc32.x86_64.rpm"},"sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-4.fc32.x86_64.rpm"},"sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/q/qemu-img-4.2.0-7.fc32.x86_64.rpm"},"sha256:4765dd8175221961116334b14dd0d436dd88bfe77fa23297c08f0d621e3d1395":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/o/ostree-libs-2020.3-4.fc32.x86_64.rpm"},"sha256:47c21130eb66c93ffc5c9528606d4c02ce5d9cdeb784baa031cb98e7ddbac9c3":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-libs-3.8.3-1.fc32.x86_64.rpm"},"sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dracut-config-generic-050-26.git20200316.fc32.x86_64.rpm"},"sha256:4929636a918bb0af18de939fabd41b4e998dfd3aeb3693a02d7b05377bc0f18f":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libtirpc-1.2.6-0.fc32.x86_64.rpm"},"sha256:495db9bd35d0631b2813ba2b8f10b284be56b2f23e56123674857e6d7e9853cf":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libgcc-10.1.1-1.fc32.x86_64.rpm"},"sha256:4a7b63b32f176b8861f6ac7363bc8010caea0c323eaa83167227118f05603022":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/pkgconf-pkg-config-1.6.3-3.fc32.x86_64.rpm"},"sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/pam-1.3.1-24.fc32.x86_64.rpm"},"sha256:4cd01a3135b9e72906eaf4552e29929334dcccee2ed092a38bf60698522ecd5f":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/r/rng-tools-6.9-3.fc32.x86_64.rpm"},"sha256:4d80736f9a52519104eeb228eb1ea95d0d6e9addc766eebacc9a5137fb2a5977":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/u/util-linux-2.35.2-1.fc32.x86_64.rpm"},"sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/shadow-utils-4.8.1-2.fc32.x86_64.rpm"},"sha256:4eb5b62f33ac69aeddad8b0cc017d6cef909d8b8ffd45cd833d43044d115ce67":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/glib2-2.64.3-1.fc32.x86_64.rpm"},"sha256:4eb6a2e34173a2b6ca7db031cecce56c0bed711691abf1c8d6bfe6cb7ca45dc0":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libmbim-utils-1.22.0-1.fc32.x86_64.rpm"},"sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libndp-1.7-5.fc32.x86_64.rpm"},"sha256:50308833a750fcba4422052e5dd6f72a4691340813c803ef157283621ed35215":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libsolv-0.7.12-1.fc32.x86_64.rpm"},"sha256:506b1d8ba1f1fbf138a94de6a1705da12360c81e6797cb60df488c87e9a366fe":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-libs-4.15.1-3.fc32.1.x86_64.rpm"},"sha256:51a1a7b6eb8b1e9158ef775e4087836349d0012fd5ec46e082deaa8367400353":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/f/fedora-release-common-32-2.noarch.rpm"},"sha256:52fe378ffab317ec4d26ae5fc0389dec874002a8d70a9413cefb68c7b16b0612":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/protobuf-c-1.3.2-2.fc32.x86_64.rpm"},"sha256:53823a669b4ab38d3ab58a6d8524e47f9d7c6998e006b9b5cab59dc1e5b47f88":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-plugin-selinux-4.15.1-3.fc32.1.x86_64.rpm"},"sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-9.fc32.x86_64.rpm"},"sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/gzip-1.10-2.fc32.x86_64.rpm"},"sha256:5443d1bc0b7eb269a050c1221818a0a82cee6803114f70ee26d05d6756879b7f":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-firewall-0.8.2-3.fc32.noarch.rpm"},"sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libsemanage-3.0-3.fc32.x86_64.rpm"},"sha256:5512fe7e48b36fd7bced7116658060e7e299f773855b15e32926c0b87c0e9bf8":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/i/iwl100-firmware-39.31.5.1-108.fc32.noarch.rpm"},"sha256:55bafcdf9c31b1456af3bf584bfe7ac745a03f4decd17197ea97b498d68b3b82":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-libsemanage-3.0-3.fc32.x86_64.rpm"},"sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/kmod-libs-27-1.fc32.x86_64.rpm"},"sha256:563e2e1dac4491aaac379b3ee5de9e06c07b2abdcd46d150675323149ff35e01":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libjcat-0.1.2-1.fc32.x86_64.rpm"},"sha256:56ecdfc358f2149bc9f6fd38161d33fe45177c11059fd813143c8d314b1019fc":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/j/json-c-0.13.1-13.fc32.x86_64.rpm"},"sha256:57a0a54f8a8bfdd8e6db8e603eee6f089dc9631842d6348819a61cc0e5e370d9":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/i/iwl6000-firmware-9.221.4.1-108.fc32.noarch.rpm"},"sha256:594123c4d3bf897629f713a505e52b9712049c71fc23da3b64493b8e528799db":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/c/crun-0.13-2.fc32.x86_64.rpm"},"sha256:5978ef81620bea4c5634d5ea93f162e61a83aabeeab35f29e8506ea66bb016ad":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libxcrypt-compat-4.4.16-3.fc32.x86_64.rpm"},"sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libassuan-2.5.3-3.fc32.x86_64.rpm"},"sha256:5a4c0187b96690e0088057f7656c67d399fad44b28b86644e3434c581377c229":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libproxy-0.4.15-17.fc32.x86_64.rpm"},"sha256:5ad0d1b4e641e5d2fe7f6385ace0f827a431c5a52c6dc3516d85e655caca880f":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libqmi-1.24.8-1.fc32.x86_64.rpm"},"sha256:5b7e8c9fc5f038530130a02af79ed7dbbc34804b22338edf9f16354818d04351":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/c/coreutils-8.32-4.fc32.1.x86_64.rpm"},"sha256:5c91890bf33527b9fb422cbed17600e761750a4e596fad3f0d0fa419070e82b0":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/pkgconf-1.6.3-3.fc32.x86_64.rpm"},"sha256:5ca72f281bb7f3e31b43ce8ab22007db34058583a00c40c36caeb666eca69d9e":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/greenboot-reboot-0.9-2.fc32.noarch.rpm"},"sha256:5cb45a56740652066e10e22fa0ea7370af10495d962ccaa58be226f23f044890":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/c/clevis-13-1.fc32.x86_64.rpm"},"sha256:5d43a1d2f9d3e3e1e0d6c3cc09bf2850a689b226bbf2c200abb5d0aebc351455":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libxcrypt-4.4.16-3.fc32.x86_64.rpm"},"sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.x86_64.rpm"},"sha256:5d7fc2ac2305ecf64ca34e9f5c414a5bc8f1f3a2381f4f1924b5d2330688e2b0":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/greenboot-rpm-ostree-grub2-0.9-2.fc32.noarch.rpm"},"sha256:5da6c745f8cec5da45e87739660edf1f8796f00c888a043da51d4d29bc7e5e51":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/a/alsa-sof-firmware-1.4.2-6.fc32.noarch.rpm"},"sha256:5e365a64b85fbc88527e72fcf93ac26d4aa01ad7f7b0e53b2a7c04ecbb931f32":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/s/slirp4netns-1.0.0-1.fc32.x86_64.rpm"},"sha256:5e74c26703101a54a70deb68b7e24092f35338c142862933f650776290c5d87f":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libfido2-1.3.1-2.fc32.x86_64.rpm"},"sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-3.fc32.x86_64.rpm"},"sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm"},"sha256:60473569449e81e97e37a76e7dcfc036be470e21ac3a26efaa502b34c15f0899":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/i/ignition-2.3.0-1.gitee616d5.fc32.x86_64.rpm"},"sha256:605c3cf38451c6b93f331b605ab03ca611e37aa11d14a4019de61278add04f74":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/m/ModemManager-glib-1.12.8-1.fc32.x86_64.rpm"},"sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm"},"sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.x86_64.rpm"},"sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libcroco-0.6.13-3.fc32.x86_64.rpm"},"sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/m/mkpasswd-5.5.6-1.fc32.x86_64.rpm"},"sha256:64567be564634937bd918d33a3f04017808d29269a5b0891a0f4d4aecad6161b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libsysfs-2.1.0-28.fc32.x86_64.rpm"},"sha256:64922311f45700f2f4f98d78efbdfa240987a6a2b1396ffe694d30e2b5f34ac3":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libqmi-utils-1.24.8-1.fc32.x86_64.rpm"},"sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libattr-2.4.48-8.fc32.x86_64.rpm"},"sha256:65f706f658c2d525b0a810e5b23923e1c365c3add9cc0980241c81207e7250c0":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/c/clevis-dracut-13-1.fc32.x86_64.rpm"},"sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libdb-5.3.28-40.fc32.x86_64.rpm"},"sha256:6952dfc6a8f583c9aeafb16d5d34208d7e39fd7ec8628c5aa8ccde039acbe548":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libpkgconf-1.6.3-3.fc32.x86_64.rpm"},"sha256:6a59645a1336fcfed2c045e1cd7fc8969e1727b28b5b8dcf35c69bdef7c4d0a4":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/grub2-tools-2.04-19.fc32.x86_64.rpm"},"sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-dbus-1.2.16-1.fc32.x86_64.rpm"},"sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-10.fc32.x86_64.rpm"},"sha256:6f5f53b66f7c3bf6958f6f163788583265ff0360188620c3b0f7ddedeac3d1f4":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-setools-4.3.0-1.fc32.x86_64.rpm"},"sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/t/tss2-1331-4.fc32.x86_64.rpm"},"sha256:6fac977d63ca18d28a1fba1b0a9fe24b6973fbc3c5aace97091f401fe57cce9a":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/e/elfutils-libs-0.179-2.fc32.x86_64.rpm"},"sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm"},"sha256:6fc3d1a25b34a2d434b3481331359175cec06f115d63db3299ade82609cb278d":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/e/elfutils-default-yama-scope-0.179-2.fc32.noarch.rpm"},"sha256:703fb5ca1651bb72d8ab58576ce3d78c9479cbb2e78ff8666ae3a3d1cd9bb0da":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/checkpolicy-3.0-3.fc32.x86_64.rpm"},"sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/a/acl-2.2.53-5.fc32.x86_64.rpm"},"sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm"},"sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libusbx-1.0.23-1.fc32.x86_64.rpm"},"sha256:73a44979eee8724634cbba7b68d2fa6f5213d6b691bea5f847cd443231e2faf1":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/grub2-efi-x64-2.04-19.fc32.x86_64.rpm"},"sha256:73c2359d19669a15a9edf0b5da2aaaeb46c00ec7af7bc1d57816a4043995cb5c":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/s/skopeo-0.2.0-1.fc32.x86_64.rpm"},"sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm"},"sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/systemd-pam-245.4-1.fc32.x86_64.rpm"},"sha256:753387d3c2d19d4175702ef537b548238a1b9b7311ee62113193bd93fc81cbc6":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libslirp-4.2.0-2.fc32.x86_64.rpm"},"sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/grep-3.3-4.fc32.x86_64.rpm"},"sha256:7705a532986761cae92684e2dc9012ba37f10891c46096c57f2628be2b82d106":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/linux-firmware-whence-20200519-108.fc32.noarch.rpm"},"sha256:782953e28d5a059ca6592732e99cd3113db10e2a7ca78a44470e6ebc66f316fa":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libsss_sudo-2.3.0-1.fc32.x86_64.rpm"},"sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/systemd-libs-245.4-1.fc32.x86_64.rpm"},"sha256:7a525abda7230bfbc87763dfe58bf7684e385b3c78ca242a1685a589300909e9":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/device-mapper-persistent-data-0.8.5-3.fc32.x86_64.rpm"},"sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/b/bash-5.0.11-2.fc32.x86_64.rpm"},"sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libevent-2.1.8-8.fc32.x86_64.rpm"},"sha256:7c21c21c3e3dbace06bee03fe4835ae6cb1e3ef86750ba2853f39d40dead2309":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/i/ipset-7.6-1.fc32.x86_64.rpm"},"sha256:7c2b9d82983189251cbe90d0debb6c0938d9a4f484332405b8d3582a618a0ccb":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-sign-libs-4.15.1-3.fc32.1.x86_64.rpm"},"sha256:7c5b1d5e9099b5314698573f542e88810b2571a05c5e25b3291d7d8d379f93ed":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/c/curl-7.69.1-3.fc32.x86_64.rpm"},"sha256:7c7eff31251dedcc3285a8b08c1b18f7fd9ee2e07dff86ad090f45a81e19e85e":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/polkit-pkla-compat-0.1-16.fc32.x86_64.rpm"},"sha256:7cca8885c45a4f801cb78c42597ddd35bb44c68c9181fbc7cb3f94bce320ec5c":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/c/crypto-policies-scripts-20200527-1.gitb234a47.fc32.noarch.rpm"},"sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libargon2-20171227-4.fc32.x86_64.rpm"},"sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm"},"sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/pinentry-1.1.0-7.fc32.x86_64.rpm"},"sha256:7e1ebb8cb74f5a1675085d6067c87ab4f1f9d21e1974d219f9d48fc468e2a7c5":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libcurl-7.69.1-3.fc32.x86_64.rpm"},"sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.x86_64.rpm"},"sha256:80131ec2e611eed5a4c454bb1a8555daa08d4d8eb5b95af6e7018362d1452fa0":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/greenboot-grub2-0.9-2.fc32.noarch.rpm"},"sha256:80cf220a3314f965c088e03d2b750426767db0b36b6b7c5e8059b9217ff4de6d":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/m/mozjs60-60.9.0-5.fc32.x86_64.rpm"},"sha256:8189e658a2dd9a7302dbd3e2030f8cc328650785b6c7d7265d22f5e5916624f8":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/c/container-selinux-2.132.0-1.fc32.noarch.rpm"},"sha256:824fe37d58cadac2f23678c9eb95c29b4acb1852df97cf799e77aa7e8034b54e":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libgudev-232-7.fc32.x86_64.rpm"},"sha256:82a0c6703444fa28ab032b3e4aa355deabff92f3f39d5490faa5c9b9150eaceb":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libsmartcols-2.35.2-1.fc32.x86_64.rpm"},"sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/w/which-2.21-19.fc32.x86_64.rpm"},"sha256:83b6744785189474b9e4faa5368b80c22c958bf4fcdc453e1447f7194edfc790":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/f/firewalld-filesystem-0.8.2-3.fc32.noarch.rpm"},"sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.x86_64.rpm"},"sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/x/xz-libs-5.2.5-1.fc32.x86_64.rpm"},"sha256:84c338b327a3fb2f6edb79caa2242804fff8c83ffa3db0d9227f55eef4107b2a":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/setools-console-4.3.0-1.fc32.x86_64.rpm"},"sha256:860a309d10907bc4735c8af1513bc2f29633df73ab9a00c585ec994ec23f7f90":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/pcre2-syntax-10.35-1.fc32.noarch.rpm"},"sha256:860db405a0e85d81f1fa5450a8b05dab7e170920231c812caae3a48b4fc87e48":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/linux-firmware-20200519-108.fc32.noarch.rpm"},"sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/cracklib-2.9.6-22.fc32.x86_64.rpm"},"sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/i/iproute-5.5.0-1.fc32.x86_64.rpm"},"sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-2.fc32.x86_64.rpm"},"sha256:86acbe8d77b05c1fe9bb0168443a579b1d4538f9733813db4e72e4a4a2be29e3":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libgusb-0.3.4-1.fc32.x86_64.rpm"},"sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libffi-3.1-24.fc32.x86_64.rpm"},"sha256:872639e4ccb4f1c5de66d5eaa85ca673141b10e3d614b33c84ff887c228d465d":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/j/jitterentropy-2.2.0-2.fc32.x86_64.rpm"},"sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/f/fonts-filesystem-2.0.3-1.fc32.noarch.rpm"},"sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.x86_64.rpm"},"sha256:88c92b121d4cec2a457772ef54270f07b3e755ece739a2fdbc446ffd08f21f00":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/gnupg2-2.2.20-2.fc32.x86_64.rpm"},"sha256:8a03d482b5294f7452b2f9ce31ebb6aea9eefac002281c1b9152fbb1a0341987":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/j/json-glib-1.4.4-4.fc32.x86_64.rpm"},"sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/popt-1.16-19.fc32.x86_64.rpm"},"sha256:8aa8258a1a13c1120d6c28321f618385111cb9363dae09eea2e4af481053e28b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/device-mapper-event-libs-1.02.171-1.fc32.x86_64.rpm"},"sha256:8beab7787d9573cdf49f9ce3c35dde05e33fd1de580c9be2e7ff1b0aa36d59f8":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/f/fedora-release-iot-32-2.noarch.rpm"},"sha256:8c560f3927e36e41657067e4bdc741fd8f3b55b497f0fc3c2331fb361ba8de8b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/t/tpm2-tools-4.1-2.fc32.x86_64.rpm"},"sha256:8df8541abd806578e43fe28a7ea2c41efbbb813866bed35fabe779274790a538":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/f/fuse3-3.9.1-1.fc32.x86_64.rpm"},"sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-3.0-2.fc32.x86_64.rpm"},"sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libnl3-3.5.0-2.fc32.x86_64.rpm"},"sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/e/expat-2.2.8-2.fc32.x86_64.rpm"},"sha256:9194788f87e4a1aa8835f1305d290cc2cd67cee6a5b1ab82643d3a068c0145b6":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/y/yajl-2.1.0-14.fc32.x86_64.rpm"},"sha256:91b3ccbda70e2ad208151a0f3a48e4da096187a54daa008dded706ccc6d43929":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/i/iwl105-firmware-18.168.6.1-108.fc32.noarch.rpm"},"sha256:92d42a4fa8980b427dbaec2ccb82b85d6dd5c39c29d51bd7deca7c4ab902ffa8":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/i/iwl135-firmware-18.168.6.1-108.fc32.noarch.rpm"},"sha256:92db4ef35ccca32d605e47a333c140d1a36c25688a0f209f1132f08484e31bf0":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/podman-1.9.2-1.fc32.x86_64.rpm"},"sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/pcre-8.44-1.fc32.x86_64.rpm"},"sha256:9369d4fed30402f45705b7a5cb51b6eeefb1dabbe0942c84514c6fdf1edac5e0":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/f/fuse-2.9.9-9.fc32.x86_64.rpm"},"sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libsigsegv-2.11-10.fc32.x86_64.rpm"},"sha256:958c280ebbeaec0f6e4d229148d07c10db7b121e4b457faaa4df075fb63c3bf9":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/i/iwl5150-firmware-8.24.2.2-108.fc32.noarch.rpm"},"sha256:95a13407e6f4c40c731655053e99f955fd56f66fafadd5f7f0e7c04fa58ffe8b":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-rpm-4.15.1-3.fc32.1.x86_64.rpm"},"sha256:96e0c019cb91d8deefb7664cfe417807d23562d2a1bfd2cbfd1051e243136b57":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/screen-4.8.0-2.fc32.x86_64.rpm"},"sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm"},"sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/j/jansson-2.12-5.fc32.x86_64.rpm"},"sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.x86_64.rpm"},"sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dracut-050-26.git20200316.fc32.x86_64.rpm"},"sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libedit-3.1-32.20191231cvs.fc32.x86_64.rpm"},"sha256:9a2beeeede69d8910115608c2d98efa6a8dba73ab2df246df5b0f10e2fa37f54":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/device-mapper-event-1.02.171-1.fc32.x86_64.rpm"},"sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libgpg-error-1.36-3.fc32.x86_64.rpm"},"sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libyaml-0.2.2-3.fc32.x86_64.rpm"},"sha256:9cf9b01f2c727e3576a8aa71fd7fe1bf4ec9ed1c9f50b756657cf9aeae18418f":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/m/mokutil-0.3.0-15.fc32.x86_64.rpm"},"sha256:9da157b866a2e34eba3d3991b1fb708fa2c0cd49d61c0bac32f476cf904a28ba":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/k/kernel-tools-libs-5.6.7-300.fc32.x86_64.rpm"},"sha256:9dbf41afbd3b67340971e5b4fc61ccd2358f045019915d97d3fbc5bc6541fe0e":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-dnf-4.2.21-1.fc32.noarch.rpm"},"sha256:9dcc75ac945924ce496c9280e7ac31b88886d94a6494d0710725a81dd9d42c9a":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/w/wpa_supplicant-2.9-3.fc32.x86_64.rpm"},"sha256:9ebb22c37f0f44203bc579625757b18cbf7dd751de2959d3a4235f56d4b748ad":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python-pip-wheel-19.3.1-3.fc32.noarch.rpm"},"sha256:9ebc5843faeb852bbbe3d53f03182197f6595a928ffa3f5d7a530749ee1e4ec8":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libmodman-2.0.1-21.fc32.x86_64.rpm"},"sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libpwquality-1.4.2-2.fc32.x86_64.rpm"},"sha256:9ecfb4c0a291cf7dcb8e585913123eee521c1a7dde63865729cd0407983501b3":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/k/kernel-5.6.14-300.fc32.x86_64.rpm"},"sha256:9ee276ed9d036a4483bb8d1bd6f6d697b161a04276c6ce5f1d3f40d48e04bccb":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/keyutils-1.6-4.fc32.x86_64.rpm"},"sha256:9f179bd9e552ee6cb2e6e9b638a53161709441e42ff3dfad56856470fd3117e8":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/n/NetworkManager-libnm-1.22.12-1.fc32.x86_64.rpm"},"sha256:9f453039643c37e6b71f93d7d65a821bdd8939791ab5a52a376751a63229ab39":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/gnutls-3.6.13-4.fc32.x86_64.rpm"},"sha256:9fa1959637c902dfeb19a0f16c7f42f7da4aab293f7c025c66d39debad6dbc34":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/luksmeta-9-7.fc32.x86_64.rpm"},"sha256:a01c177ed13a098094ffc202a1390069ec47f59a3f54293d984d906464ec2834":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/f/fedora-release-32-2.noarch.rpm"},"sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/kbd-2.2.0-1.fc32.x86_64.rpm"},"sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/shared-mime-info-1.15-3.fc32.x86_64.rpm"},"sha256:a2ad5970a8d117e9216e2e1e70f8b8247a25dc0a556e5fcba245f73ced3283bf":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libgomp-10.1.1-1.fc32.x86_64.rpm"},"sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm"},"sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm"},"sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libaio-0.3.111-7.fc32.x86_64.rpm"},"sha256:a4706de7a0d59f2b1e9e73f48c4279429676410c77fb93f82abf1b7b34330f82":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-8.fc32.noarch.rpm"},"sha256:a610fbda2dd5c901f68ee0f9faaf09238921a15fdc52f823f41edc8b38fec2a1":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-nftables-0.9.3-3.fc32.x86_64.rpm"},"sha256:a63900b34fef430d9afa5dcbad6ea8b727f8d2aa730d64ee899e5c298c8278ff":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/s/sssd-client-2.3.0-1.fc32.x86_64.rpm"},"sha256:a7452c18c2cffc266ec36c54105b884c4d63181f20cebd705e33730534cb9093":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libvarlink-util-18-3.fc32.x86_64.rpm"},"sha256:a7deef0a324ccb272a25f5eb6b30c72d0a842bf2c602c31fe3b60f984b2e50af":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/e/efibootmgr-16-7.fc32.x86_64.rpm"},"sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libxml2-2.9.10-3.fc32.x86_64.rpm"},"sha256:a8123a1759678459d974a0f6cace694ebcca37fd0841c84ec99718f0e3a2a2ad":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libsss_idmap-2.3.0-1.fc32.x86_64.rpm"},"sha256:a883c4ecd38b3208be7f52555aa529d746da55488951b5b47e130313b753a8c3":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/s/selinux-policy-targeted-3.14.5-39.fc32.noarch.rpm"},"sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libnghttp2-1.40.0-2.fc32.x86_64.rpm"},"sha256:a95e0092daedde142a4ed2dc6589bd4f4dee36bc69ad982bcb42351f9975c994":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/librepo-1.11.3-1.fc32.x86_64.rpm"},"sha256:a9d5719cf5d4fdc4ae28099d623a751b0470264e7d2280be2669a066348b4ce1":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/a/abattis-cantarell-fonts-0.201-2.fc32.noarch.rpm"},"sha256:aa95c26e5b440953c42cf6e27161bf9d067dae7f4ab1da1cc19c2284dfd145fb":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/k/kernel-modules-5.6.14-300.fc32.x86_64.rpm"},"sha256:aac9be36fc9c345245b4a0db66bfb9ff8df25e36ae0c1ae89eca9bcf88e052e4":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libgcab1-1.4-2.fc32.x86_64.rpm"},"sha256:ab4c27523d6b5a0df75febac43cafa2dd9897dc3c1bb2f0d6990ca603b6168fe":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/f/fuse3-libs-3.9.1-1.fc32.x86_64.rpm"},"sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libbrotli-1.0.7-10.fc32.x86_64.rpm"},"sha256:ad1ba7eebdd7f1a7b439adb60b24b698a25e48785a4bb6d47a5877114cb9e5b6":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/f/fwupd-1.4.2-2.fc32.x86_64.rpm"},"sha256:ad50ed0c4f4c956e3b59ac9fc7bf5fba22068a661ea75a46eb81bc2209af4cc5":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libxmlb-0.1.14-2.fc32.x86_64.rpm"},"sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/o/openldap-2.4.47-4.fc32.x86_64.rpm"},"sha256:ae1c442bcc919efb57c73c9b79748ea3a3de0378d0a693fcc3fea5620022d29f":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/c/catatonit-0.1.5-2.fc32.x86_64.rpm"},"sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.x86_64.rpm"},"sha256:af18c71bca1121ac3cdeace9f7249079ee0568fcbb15ca7e46131fa9b9b521f8":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/b/bluez-libs-5.54-1.fc32.x86_64.rpm"},"sha256:af88353a1f306849da587aa4c49b1104caff506e84cc6d6805e844c937d37d56":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/c/coreutils-common-8.32-4.fc32.1.x86_64.rpm"},"sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm"},"sha256:affae36e6d8dccdd9048ca24fcc2e87f83f08c27636c1e70f081625f445df320":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libdnf-0.47.0-1.fc32.x86_64.rpm"},"sha256:b079eacd62d18714a20dbaf853e3184f21f1262c8a7f4d4c6de47d66e28ca036":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/o/openssh-8.3p1-1.fc32.x86_64.rpm"},"sha256:b09015ae5fb5772b73bc7932991aaf6e1f6d509432af605a565ef53d2d50606a":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libsoup-2.70.0-1.fc32.x86_64.rpm"},"sha256:b1111e77a5fdbacaa04acc90d3844706158bc5892173862928705620b8910adb":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm"},"sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libcbor-0.5.0-7.fc32.x86_64.rpm"},"sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/n/ncurses-6.1-15.20191109.fc32.x86_64.rpm"},"sha256:b3201777d78ee13ee45ddbd982af5999ce058907b5dc552669644931b79c5f51":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libgpiod-utils-1.5.1-1.fc32.x86_64.rpm"},"sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libpcap-1.9.1-3.fc32.x86_64.rpm"},"sha256:b359ca3cdc68b6e5031f65975df38a8b96c19ddc4c367e1e3463fc8484a0b3b7":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libnet-1.1.6-19.fc32.x86_64.rpm"},"sha256:b4053e72ef23e59a43b4f77b0f3abeb92c4b72c9df7d4f62572560edfbfa02a4":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libarchive-3.4.3-1.fc32.x86_64.rpm"},"sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libuser-0.62-24.fc32.x86_64.rpm"},"sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libcap-ng-0.7.10-2.fc32.x86_64.rpm"},"sha256:b67f1634acc7b84b284bda8afeef546aed4a3388dc7df67417001704aa444af1":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/b/btrfs-progs-5.6-1.fc32.x86_64.rpm"},"sha256:b6f9a3356f2f8e094e08c9811250199e6caaea2dad91c7c54f7594c4196d3060":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/i/iwl6050-firmware-41.28.5.1-108.fc32.noarch.rpm"},"sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-5.fc32.x86_64.rpm"},"sha256:b743aafa82f3326f8f2e6d5464ae7fa57fabab3ad791099eaf2d151b43208b42":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/e/efi-filesystem-4-4.fc32.noarch.rpm"},"sha256:b906f2e1a8045b0b895ff0a8196ca41822ba495731338debb6f21129d4bc51c2":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libssh-config-0.9.4-2.fc32.noarch.rpm"},"sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/i/initscripts-10.02-3.fc32.x86_64.rpm"},"sha256:bd03e1eee15b69f60f505a73b028d3799726aef24ff8607fd01a04c3855097af":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/c/criu-3.14-1.fc32.x86_64.rpm"},"sha256:be1358f7c9accf20d34d468264e88019c9b30a0e77b58726b221c0fcd66560f7":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-3.8.3-1.fc32.x86_64.rpm"},"sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/psmisc-23.3-3.fc32.x86_64.rpm"},"sha256:beaca54bd436c280070054af7343947f739cf8ab8789e955ca9ea1a620950f76":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/o/openssh-server-8.3p1-1.fc32.x86_64.rpm"},"sha256:bfeba60bfb137f270e3b28db96ecfe8b226ea05e1761f6cb5ccc64c48c73c748":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/b/bluez-5.54-1.fc32.x86_64.rpm"},"sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/n/nettle-3.5.1-5.fc32.x86_64.rpm"},"sha256:c07fd5357963f99610bc676b25f1dfcbf1bae0b63538b5e1cd82ce42b79fd819":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/b/bash-completion-2.8-8.fc32.noarch.rpm"},"sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/z/zlib-1.2.11-21.fc32.x86_64.rpm"},"sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/device-mapper-1.02.171-1.fc32.x86_64.rpm"},"sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.x86_64.rpm"},"sha256:c23c45c7d0040856ac295aab919b3953dec18f54c98fcc95775948b283a67656":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/gpgme-1.13.1-7.fc32.x86_64.rpm"},"sha256:c2f7b54f06f9bac66c8f13ed80d217a718670a4fdb10cb44692eeb5426131d6b":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libmodulemd-2.9.3-1.fc32.x86_64.rpm"},"sha256:c3e2a3c23288899456fb996f3074c10637bcd4886bc446698cb1efa2734c1e4d":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/t/traceroute-2.1.0-10.fc32.x86_64.rpm"},"sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dosfstools-4.1-10.fc32.x86_64.rpm"},"sha256:c50ff544430830086ce484b20a2b6eaa934c82b6277a6f4fb02fc8cbc9e25db7":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/r/runc-1.0.0-144.dev.gite6555cc.fc32.x86_64.rpm"},"sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/a/alternatives-1.11-6.fc32.x86_64.rpm"},"sha256:c6ada06d383423665aa32c638ecdc40c54ee0b1b866c6396f9533d8691ad53e2":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-gpg-1.13.1-7.fc32.x86_64.rpm"},"sha256:c7e5d5de11d4c791596ca39d1587c50caba0e06f12a7c24c5d40421d291cd661":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/f/findutils-4.7.0-4.fc32.x86_64.rpm"},"sha256:c84a5e00f504e0f60aa02cac7eb5cde57ed7958f2965ea2fce0c7e9cd0ff532b":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-4.15.1-3.fc32.1.x86_64.rpm"},"sha256:c8daa43a4504f9a4b6c106baf8a56aa0d256fc3c71bd417ea75b9c7fd830a9b7":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libgpiod-1.5.1-1.fc32.x86_64.rpm"},"sha256:c8f8df00d8f6fea68e60a55c94227c77b2e73a2c3e4f21ff74d08ffa39b48e08":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/gsettings-desktop-schemas-3.36.1-1.fc32.x86_64.rpm"},"sha256:c9a3aef41c86259a7bb6dba7febb780737a1237ca8ff1c205797ead5951be712":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/v/vim-minimal-8.2.806-1.fc32.x86_64.rpm"},"sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-26.fc32.x86_64.rpm"},"sha256:c9d01bc0eaadd75df645101940a7df4efb55c60004db73b7f270adda9f71887d":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/greenboot-status-0.9-2.fc32.noarch.rpm"},"sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/r/rootfiles-8.1-27.fc32.noarch.rpm"},"sha256:cb0c64cc81e0b384bbc9d27ffcb2a655b13c91a799aad8972264aed1767926a3":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-slip-dbus-0.6.4-19.fc32.noarch.rpm"},"sha256:cbfc109588fa0e34bdc408dbb37dadf7873fb5788dd3fd8cd04c17c75f26e6db":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libsmbios-2.4.2-7.fc32.x86_64.rpm"},"sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm"},"sha256:cc35e29f4d4559ee6bf167eb0e1e1fabd9d4690cc3587799e3b814a202249c1d":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-ostree-2020.2-3.fc32.x86_64.rpm"},"sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-4.fc32.x86_64.rpm"},"sha256:cd01ae91895e60f189106a159bb551f906a8b663110f421ad6ee83c9e008851e":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/b/bubblewrap-0.4.1-1.fc32.x86_64.rpm"},"sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libpsl-0.21.0-4.fc32.x86_64.rpm"},"sha256:cfad2b3209d56d57f624640a06ea70238be35eaa702cd32b81f62a1df83cca14":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/gettext-0.20.2-1.fc32.x86_64.rpm"},"sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm"},"sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/gawk-5.0.1-7.fc32.x86_64.rpm"},"sha256:d2abba1a0523bd9df5073900593ab13ec2ed2e391440be4d883314fa154370f8":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-slip-0.6.4-19.fc32.noarch.rpm"},"sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/polkit-libs-0.116-7.fc32.x86_64.rpm"},"sha256:d43d17930e5fedbbeb2a45bdbfff713485c6cd01ca6cbb9443370192e73daf40":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libblkid-2.35.2-1.fc32.x86_64.rpm"},"sha256:d46293795b113fe996bebd2056f7b05f187f0bdcd3186b5012a8b8d91846e6c2":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python-unversioned-command-3.8.3-1.fc32.noarch.rpm"},"sha256:d49f0b1c8ecf9bc808ae93e9298a40fbcc124fe67c3bbdd37705b6b5d8cfdd87":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/polkit-0.116-7.fc32.x86_64.rpm"},"sha256:d593124bca390187150aceebd4ce67688d6c22e0294d1ae495d5197dea0b5a16":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/pcre2-10.35-1.fc32.x86_64.rpm"},"sha256:d61ea8b6299f00397f740b73de146ef4daa6d6bb5863d525459765fa0f23a991":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/w/wpan-tools-0.9-4.fc32.x86_64.rpm"},"sha256:d74b76ce8c2c7306cc3f012d1ec56b1d5c67788748f56ecd505f257d342f97ee":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libbsd-0.10.0-2.fc32.x86_64.rpm"},"sha256:d7961e92751ef2e208e634b75fdeee407532f04c161b9ec0bef27bf7704758ce":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/grub2-tools-minimal-2.04-19.fc32.x86_64.rpm"},"sha256:d7a895002e2291f776c8bf40dc99848105ca8c8e1651ba4692cc44ab838bc0a1":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libfdisk-2.35.2-1.fc32.x86_64.rpm"},"sha256:d7fec1fb54953f1901cc505c225af94cb61f2206d0503be12313169a4b915e18":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/j/jose-10-6.fc32.x86_64.rpm"},"sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/glibc-2.31-2.fc32.x86_64.rpm"},"sha256:de74076fc5073ad07ffa78fed6e7cd8f10133d99c1c73149b4ac74428699a6d1":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libmbim-1.22.0-1.fc32.x86_64.rpm"},"sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/p11-kit-0.23.20-1.fc32.x86_64.rpm"},"sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/h/hostname-3.23-2.fc32.x86_64.rpm"},"sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libseccomp-2.4.2-3.fc32.x86_64.rpm"},"sha256:df3f5d6c41e2be1f4fb2b5a58e70833b414d307bbe85709f2636f0c464499ec5":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/t/tzdata-2020a-1.fc32.noarch.rpm"},"sha256:dfe11cb1ea42634a1d4b00f046dc94cac4861538f136c3972f2f7c133d058b2a":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/c/containers-common-0.2.0-1.fc32.x86_64.rpm"},"sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/f/file-libs-5.38-2.fc32.x86_64.rpm"},"sha256:e0f9c4327d62e35ee2a066c95dfa37f86021b405515d0f902b72a7437b7b98e9":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-2.3.0-1.fc32.x86_64.rpm"},"sha256:e20984afd6d2aa8b76c157b55c6ffad65566c15b29646c8636f26b7bbabd5e50":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libcomps-0.1.15-1.fc32.x86_64.rpm"},"sha256:e2295bea21a9cc04c7d5935b61405e8394d6f48dc81d74118778e0d074a6d131":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/glib-networking-2.64.2-1.fc32.x86_64.rpm"},"sha256:e2857fd9eff9ca18e18f97ed4c305a9a089fdeec0c14e45bf2110fb172dcba25":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/i/iwl3160-firmware-25.30.13.0-108.fc32.noarch.rpm"},"sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/krb5-libs-1.18-1.fc32.x86_64.rpm"},"sha256:e40be03bd5808e640bb5fb18196499680a7b7b1d3fce47617f987baee849c0e5":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dmidecode-3.2-5.fc32.x86_64.rpm"},"sha256:e46edb66c422a6878b1f77777f04544a9174521f3eaac3b4c55ff0583938dd15":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/f/fedora-gpg-keys-32-2.noarch.rpm"},"sha256:e48ec5686644366c7388f7068f93f1d86f9657a66a7cab5bfeef774ad81b3c94":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libsss_nss_idmap-2.3.0-1.fc32.x86_64.rpm"},"sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/sudo-1.9.0-0.1.b4.fc32.x86_64.rpm"},"sha256:e5efc87172d7081559137feaa221047385a5e248ffafd9794c2bfc73b61f8f37":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/pciutils-libs-3.6.4-1.fc32.x86_64.rpm"},"sha256:e6530742863132f93dd090c7b8009f6e17a3dc56d5862a97f5518d7f27cf783d":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/m/mpfr-4.0.2-4.fc32.x86_64.rpm"},"sha256:e70f0d36095323778aa79d8d1b61050e2a335eb657e88cfe29dccde3ca6e1965":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/k/kernel-tools-5.6.7-300.fc32.x86_64.rpm"},"sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/glibc-common-2.31-2.fc32.x86_64.rpm"},"sha256:e851ba0019baa83e1bebbe92e1a1cf629694ccf3b42c5ff84e0ed7bea74931d3":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/lvm2-libs-2.03.09-1.fc32.x86_64.rpm"},"sha256:ea5f929563fb9ca0cf08da250c62c93d4755f4a41c1aca23eeeaf3e58e90d766":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/t/tmux-3.0a-2.fc32.x86_64.rpm"},"sha256:ea6910a5b20bc1db78688d16425eb97a82960996dcde565cbc66098bbbd77847":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-build-libs-4.15.1-3.fc32.1.x86_64.rpm"},"sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.x86_64.rpm"},"sha256:eb9f0657a88801f28eb2309b7d046ab0cc1176cd8bb6c21175ef1de183d4b9e7":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-libdnf-0.47.0-1.fc32.x86_64.rpm"},"sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm"},"sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.x86_64.rpm"},"sha256:eca030fe486281117fab11efbf9b80b9ca171ef0e7ad7f0e8bf767fce21a7b07":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/c/conmon-2.0.16-2.fc32.x86_64.rpm"},"sha256:ecb8a942ab85ec5a1ff1a9ec652a104e6aca0283475821000fc1cb719c783589":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/d/dnf-data-4.2.21-1.fc32.noarch.rpm"},"sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dbus-1.12.16-4.fc32.x86_64.rpm"},"sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libverto-0.3.0-9.fc32.x86_64.rpm"},"sha256:ee1681ee1ae6a3f86a876562939fbfe415ba78b0a803059e1b6d6cd63b0fa1a3":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/shim-x64-15-8.x86_64.rpm"},"sha256:ee9fb01963d4192f679883a74588d2e0dba0e5f2c53e4181455b610f5fac672d":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/k/kpartx-0.8.2-4.fc32.x86_64.rpm"},"sha256:f00b659341553c1e3c121b71fc4334fc6468b393bf3e0c3b7e90e75cffbf4a8e":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/c/crypto-policies-20200527-1.gitb234a47.fc32.noarch.rpm"},"sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/a/audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm"},"sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.x86_64.rpm"},"sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/r/readline-8.0-4.fc32.x86_64.rpm"},"sha256:f36550dfc144e4608da672616fa44b2f2341f99bb38972e66e4a8fef4b59172c":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/glibc-minimal-langpack-2.31-2.fc32.x86_64.rpm"},"sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-7.fc32.x86_64.rpm"},"sha256:f463968cf5f6f7df198f4775b7ef658cfcdf72f9f9b87e497646eaf968b6372a":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/e/elfutils-debuginfod-client-0.179-2.fc32.x86_64.rpm"},"sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/i/iptables-libs-1.8.4-7.fc32.x86_64.rpm"},"sha256:f60fc561675e41ffa2c48b229960291e2438441d5ed758c1f28cb06b5d4e4ea9":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/i/ipset-libs-7.6-1.fc32.x86_64.rpm"},"sha256:f61d05c4417dbb22910c93df8e40058e2866f8df80c21a1cae26ccf1cfebddf8":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/d/dnsmasq-2.81-3.fc32.x86_64.rpm"},"sha256:f729c554ed4ac6335a548380a6f6335a332a3a2aca5321a322415a208701607d":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dbxtool-8-11.fc32.x86_64.rpm"},"sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-libselinux-3.0-3.fc32.x86_64.rpm"},"sha256:f80935f69caf21b67bc50deab4db4478a3cba4997dc65286349426bfbb7223b2":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-hawkey-0.47.0-1.fc32.x86_64.rpm"},"sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libacl-2.2.53-5.fc32.x86_64.rpm"},"sha256:f844f75efe3aca759eb80d426f6530ab03de0467665239bd21e5129ced6bae1c":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/n/nftables-0.9.3-3.fc32.x86_64.rpm"},"sha256:f8988c57082e58c840d066c0a6c9967b32f0e26897b992ebb89886bdb4be3cea":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/n/NetworkManager-wifi-1.22.12-1.fc32.x86_64.rpm"},"sha256:f93eb1920c645923ec14f70130ba5e4bf1cf93f8196c237e7c95abbf452c1bb6":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-gobject-base-3.36.1-1.fc32.x86_64.rpm"},"sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libutempter-1.1.6-18.fc32.x86_64.rpm"},"sha256:fa5746133a0e03485cb74ed5747010e19817f890ed538971fb6d6d47fd21eecd":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/f/fedora-repos-32-2.noarch.rpm"},"sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libunistring-0.9.10-7.fc32.x86_64.rpm"},"sha256:fb83e33ef9fbe36a185caab7c686735578f5e1d24f0088834fedb64dda77bbb2":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/i/iputils-20190515-7.fc32.x86_64.rpm"},"sha256:fbabd02b2ab3aecfdfa7484fefb8190bf134e615ddd8ce1d38e27a5907b50a40":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/grub2-pc-modules-2.04-19.fc32.noarch.rpm"},"sha256:fc8a8027325828861bae0c41d2582d61f8cb4b9ed42a50e49c57939eabcad1b7":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/m/ModemManager-1.12.8-1.fc32.x86_64.rpm"},"sha256:fd4404aec80bb4fa767f4fcc686a37b0cc406e766c9b3704c1b481d648c76c1a":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/o/openssl-pkcs11-0.4.10-6.fc32.x86_64.rpm"},"sha256:fef247293abdc1cc22766e19bc55829240f36531dcfa0168410bec60595f7b8a":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/k/kernel-core-5.6.14-300.fc32.x86_64.rpm"},"sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.x86_64.rpm"},"sha256:ff1546cec9a7487b81e58e8604feb080eddd484ffd1a1f187865467d28850e81":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libreport-filesystem-2.13.1-4.fc32.noarch.rpm"},"sha256:ff44071d53a2ed543c2ddad99cca8fc25493cbefc5d7ad869f9b6dbda340a465":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libjose-10-6.fc32.x86_64.rpm"},"sha256:ffaa05614a9c419fe0ade73fa572f58d51bcd1a0f3f5c8ab4d6757e70e97fa36":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/o/openssl-libs-1.1.1g-1.fc32.x86_64.rpm"},"sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/sed-4.5-5.fc32.x86_64.rpm"}}}},"pipeline":{"build":{"pipeline":{"stages":[{"name":"org.osbuild.rpm","options":{"gpgkeys":["-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n","-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n","-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n","-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n"],"packages":["sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b","sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c","sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96","sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce","sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975","sha256:cd01ae91895e60f189106a159bb551f906a8b663110f421ad6ee83c9e008851e","sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0","sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4","sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d","sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829","sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5","sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1","sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740","sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6","sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940","sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960","sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8","sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4","sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949","sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b","sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec","sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79","sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99","sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e","sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9","sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4","sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5","sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4","sha256:9369d4fed30402f45705b7a5cb51b6eeefb1dabbe0942c84514c6fdf1edac5e0","sha256:45132e53c649def28d63c199d8c3a3b9fd16fa8bca7426ad4e9c202e52a233b4","sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2","sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32","sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836","sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5","sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe","sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00","sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9","sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095","sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85","sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf","sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48","sha256:8a03d482b5294f7452b2f9ce31ebb6aea9eefac002281c1b9152fbb1a0341987","sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813","sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248","sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b","sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22","sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd","sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2","sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d","sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b","sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4","sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886","sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b","sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88","sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c","sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7","sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314","sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896","sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4","sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa","sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe","sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab","sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401","sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c","sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278","sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2","sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e","sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b","sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe","sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9","sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f","sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6","sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b","sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825","sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9","sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f","sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923","sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf","sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb","sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590","sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438","sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa","sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf","sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927","sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8","sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6","sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c","sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844","sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a","sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60","sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e","sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1","sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986","sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886","sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6","sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1","sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102","sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659","sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464","sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466","sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875","sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59","sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d","sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b","sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e","sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec","sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808","sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939","sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899","sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604","sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386","sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4","sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569","sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5","sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee","sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb","sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9","sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9","sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8","sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61","sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280","sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9","sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103","sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973","sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9","sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db","sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3","sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd","sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5","sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b","sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1","sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff","sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b","sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61","sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b","sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647","sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c","sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338","sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9","sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80","sha256:5b7e8c9fc5f038530130a02af79ed7dbbc34804b22338edf9f16354818d04351","sha256:af88353a1f306849da587aa4c49b1104caff506e84cc6d6805e844c937d37d56","sha256:f00b659341553c1e3c121b71fc4334fc6468b393bf3e0c3b7e90e75cffbf4a8e","sha256:7cca8885c45a4f801cb78c42597ddd35bb44c68c9181fbc7cb3f94bce320ec5c","sha256:7c5b1d5e9099b5314698573f542e88810b2571a05c5e25b3291d7d8d379f93ed","sha256:4158624697b461fbcb28b325922445a7c164d72723c4c9975f6bc3a9d2dd3f3a","sha256:02de6f2778310a36a3e4dfd47f9c35c67140e77c4142371ae126f6478cdf46be","sha256:ecb8a942ab85ec5a1ff1a9ec652a104e6aca0283475821000fc1cb719c783589","sha256:f463968cf5f6f7df198f4775b7ef658cfcdf72f9f9b87e497646eaf968b6372a","sha256:6fc3d1a25b34a2d434b3481331359175cec06f115d63db3299ade82609cb278d","sha256:417dab5baecca2da19780bdc1098e0f09bad94c1dc4c31ad7f123a96ec01ce1f","sha256:6fac977d63ca18d28a1fba1b0a9fe24b6973fbc3c5aace97091f401fe57cce9a","sha256:e46edb66c422a6878b1f77777f04544a9174521f3eaac3b4c55ff0583938dd15","sha256:a01c177ed13a098094ffc202a1390069ec47f59a3f54293d984d906464ec2834","sha256:51a1a7b6eb8b1e9158ef775e4087836349d0012fd5ec46e082deaa8367400353","sha256:fa5746133a0e03485cb74ed5747010e19817f890ed538971fb6d6d47fd21eecd","sha256:c7e5d5de11d4c791596ca39d1587c50caba0e06f12a7c24c5d40421d291cd661","sha256:cfad2b3209d56d57f624640a06ea70238be35eaa702cd32b81f62a1df83cca14","sha256:1bb8798507c8999d4f59465527bdcf64b95266f6e885f84e0253117dc146d83a","sha256:4eb5b62f33ac69aeddad8b0cc017d6cef909d8b8ffd45cd833d43044d115ce67","sha256:88c92b121d4cec2a457772ef54270f07b3e755ece739a2fdbc446ffd08f21f00","sha256:1f5c2af3943f9212b8ecd8349c76908047594b44ffa670d833899826c3a83441","sha256:9f453039643c37e6b71f93d7d65a821bdd8939791ab5a52a376751a63229ab39","sha256:c23c45c7d0040856ac295aab919b3953dec18f54c98fcc95775948b283a67656","sha256:0ee42cf758be23b9e87406e99969e9a1693b5e01adb1d67b7823eb82e5b7025d","sha256:419e497c76ba728fe8eeb254bf3ff2e22bcd3e3480a0215b286dbeb019caf398","sha256:fbabd02b2ab3aecfdfa7484fefb8190bf134e615ddd8ce1d38e27a5907b50a40","sha256:6a59645a1336fcfed2c045e1cd7fc8969e1727b28b5b8dcf35c69bdef7c4d0a4","sha256:d7961e92751ef2e208e634b75fdeee407532f04c161b9ec0bef27bf7704758ce","sha256:56ecdfc358f2149bc9f6fd38161d33fe45177c11059fd813143c8d314b1019fc","sha256:ee9fb01963d4192f679883a74588d2e0dba0e5f2c53e4181455b610f5fac672d","sha256:b4053e72ef23e59a43b4f77b0f3abeb92c4b72c9df7d4f62572560edfbfa02a4","sha256:d43d17930e5fedbbeb2a45bdbfff713485c6cd01ca6cbb9443370192e73daf40","sha256:e20984afd6d2aa8b76c157b55c6ffad65566c15b29646c8636f26b7bbabd5e50","sha256:7e1ebb8cb74f5a1675085d6067c87ab4f1f9d21e1974d219f9d48fc468e2a7c5","sha256:affae36e6d8dccdd9048ca24fcc2e87f83f08c27636c1e70f081625f445df320","sha256:d7a895002e2291f776c8bf40dc99848105ca8c8e1651ba4692cc44ab838bc0a1","sha256:495db9bd35d0631b2813ba2b8f10b284be56b2f23e56123674857e6d7e9853cf","sha256:a2ad5970a8d117e9216e2e1e70f8b8247a25dc0a556e5fcba245f73ced3283bf","sha256:c2f7b54f06f9bac66c8f13ed80d217a718670a4fdb10cb44692eeb5426131d6b","sha256:2c8e76fcc1ad8197ffdb66d06fb498a1129e71e0f7c04a05176867e5788bbf05","sha256:a95e0092daedde142a4ed2dc6589bd4f4dee36bc69ad982bcb42351f9975c994","sha256:ff1546cec9a7487b81e58e8604feb080eddd484ffd1a1f187865467d28850e81","sha256:01705d02dcf229b9b69ce8e97c81346a9c0e444ee07c43681895294577281775","sha256:82a0c6703444fa28ab032b3e4aa355deabff92f3f39d5490faa5c9b9150eaceb","sha256:50308833a750fcba4422052e5dd6f72a4691340813c803ef157283621ed35215","sha256:2c68b021959911bd946c5d43d3c6ebdf3dcae378e4ee1e68f98780b94616cc87","sha256:b906f2e1a8045b0b895ff0a8196ca41822ba495731338debb6f21129d4bc51c2","sha256:2b6853be09f6155dbbddfb25c9bd65d289493f9d1f51c891b4539b9245739dd0","sha256:26fa850e30bf0ea42b3d8a573ed58b62eeeaec754a051eaea3e768e29673144d","sha256:4929636a918bb0af18de939fabd41b4e998dfd3aeb3693a02d7b05377bc0f18f","sha256:20ad2f907034a1c3e76dd4691886223bf588ff946fd57545ecdfcd58bc4c3b4b","sha256:5d43a1d2f9d3e3e1e0d6c3cc09bf2850a689b226bbf2c200abb5d0aebc351455","sha256:5978ef81620bea4c5634d5ea93f162e61a83aabeeab35f29e8506ea66bb016ad","sha256:1a19c6f772fe9d1e339333639756d28fbc33d552b6ac734510291fd22a88a6a5","sha256:e6530742863132f93dd090c7b8009f6e17a3dc56d5862a97f5518d7f27cf783d","sha256:2ad9ccdab138ec355fe3132dbcaa381491b80949841000e764f17945753fc77a","sha256:ffaa05614a9c419fe0ade73fa572f58d51bcd1a0f3f5c8ab4d6757e70e97fa36","sha256:fd4404aec80bb4fa767f4fcc686a37b0cc406e766c9b3704c1b481d648c76c1a","sha256:38409cd1f5770e10f086bd9dda1d9651dcc2433a17d43f9acd8f4877e074a6dd","sha256:4765dd8175221961116334b14dd0d436dd88bfe77fa23297c08f0d621e3d1395","sha256:d593124bca390187150aceebd4ce67688d6c22e0294d1ae495d5197dea0b5a16","sha256:860a309d10907bc4735c8af1513bc2f29633df73ab9a00c585ec994ec23f7f90","sha256:9ebb22c37f0f44203bc579625757b18cbf7dd751de2959d3a4235f56d4b748ad","sha256:d46293795b113fe996bebd2056f7b05f187f0bdcd3186b5012a8b8d91846e6c2","sha256:be1358f7c9accf20d34d468264e88019c9b30a0e77b58726b221c0fcd66560f7","sha256:9dbf41afbd3b67340971e5b4fc61ccd2358f045019915d97d3fbc5bc6541fe0e","sha256:c6ada06d383423665aa32c638ecdc40c54ee0b1b866c6396f9533d8691ad53e2","sha256:f80935f69caf21b67bc50deab4db4478a3cba4997dc65286349426bfbb7223b2","sha256:28fd8db75d20cf14174cad3a5c2cd740d899ee2a064c48b892981b154e94a4d0","sha256:eb9f0657a88801f28eb2309b7d046ab0cc1176cd8bb6c21175ef1de183d4b9e7","sha256:47c21130eb66c93ffc5c9528606d4c02ce5d9cdeb784baa031cb98e7ddbac9c3","sha256:4296471e898b26f01fcf2b420728e39e8f50f0015f7e7c686807a6e86efc69a1","sha256:95a13407e6f4c40c731655053e99f955fd56f66fafadd5f7f0e7c04fa58ffe8b","sha256:1ec0d908c774fa4efa15029e21d9d160e24e10b040357d64b4224e90b3b7d3c2","sha256:c84a5e00f504e0f60aa02cac7eb5cde57ed7958f2965ea2fce0c7e9cd0ff532b","sha256:ea6910a5b20bc1db78688d16425eb97a82960996dcde565cbc66098bbbd77847","sha256:506b1d8ba1f1fbf138a94de6a1705da12360c81e6797cb60df488c87e9a366fe","sha256:cc35e29f4d4559ee6bf167eb0e1e1fabd9d4690cc3587799e3b814a202249c1d","sha256:1b71cb73cbe079ccc1cf5c6bc52a8f990dccb3ea0d184879741eb36795d43b5d","sha256:2bbe073544977e15c66507fb382b46349f46f773365511aba63353014f17dd28","sha256:7c2b9d82983189251cbe90d0debb6c0938d9a4f484332405b8d3582a618a0ccb","sha256:df3f5d6c41e2be1f4fb2b5a58e70833b414d307bbe85709f2636f0c464499ec5","sha256:463d8259936601d23a02c407a4fb294c0e3bc9a213282c4525137bc1b18bbf6b","sha256:4d80736f9a52519104eeb228eb1ea95d0d6e9addc766eebacc9a5137fb2a5977"]}}]},"runner":"org.osbuild.fedora32"},"stages":[{"name":"org.osbuild.rpm","options":{"gpgkeys":["-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n","-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n","-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n","-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n"],"packages":["sha256:fc8a8027325828861bae0c41d2582d61f8cb4b9ed42a50e49c57939eabcad1b7","sha256:605c3cf38451c6b93f331b605ab03ca611e37aa11d14a4019de61278add04f74","sha256:a9d5719cf5d4fdc4ae28099d623a751b0470264e7d2280be2669a066348b4ce1","sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b","sha256:a4706de7a0d59f2b1e9e73f48c4279429676410c77fb93f82abf1b7b34330f82","sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c","sha256:00d0bb6a08f20bea2b6bd0d2c4de99b51c770b2dab266d1d3da85891efeded01","sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d","sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96","sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce","sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975","sha256:c07fd5357963f99610bc676b25f1dfcbf1bae0b63538b5e1cd82ce42b79fd819","sha256:bfeba60bfb137f270e3b28db96ecfe8b226ea05e1761f6cb5ccc64c48c73c748","sha256:af18c71bca1121ac3cdeace9f7249079ee0568fcbb15ca7e46131fa9b9b521f8","sha256:2141f1dec8fe7a442c061f603bf4ee6203e10a290990789af0f4ef9db5523679","sha256:b67f1634acc7b84b284bda8afeef546aed4a3388dc7df67417001704aa444af1","sha256:cd01ae91895e60f189106a159bb551f906a8b663110f421ad6ee83c9e008851e","sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0","sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4","sha256:703fb5ca1651bb72d8ab58576ce3d78c9479cbb2e78ff8666ae3a3d1cd9bb0da","sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57","sha256:449d2888d6b835d207a55a2d9b4478eff1b926581fcead6260b6508e4db1b782","sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d","sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829","sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5","sha256:e0f9c4327d62e35ee2a066c95dfa37f86021b405515d0f902b72a7437b7b98e9","sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1","sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740","sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6","sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940","sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960","sha256:f729c554ed4ac6335a548380a6f6335a332a3a2aca5321a322415a208701607d","sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4","sha256:9a2beeeede69d8910115608c2d98efa6a8dba73ab2df246df5b0f10e2fa37f54","sha256:8aa8258a1a13c1120d6c28321f618385111cb9363dae09eea2e4af481053e28b","sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949","sha256:7a525abda7230bfbc87763dfe58bf7684e385b3c78ca242a1685a589300909e9","sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b","sha256:e40be03bd5808e640bb5fb18196499680a7b7b1d3fce47617f987baee849c0e5","sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec","sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79","sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73","sha256:11d6aa88c7e5bbaad38353bbb557ad8370452cd258f2a0d16bfd490116138d67","sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99","sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e","sha256:b743aafa82f3326f8f2e6d5464ae7fa57fabab3ad791099eaf2d151b43208b42","sha256:a7deef0a324ccb272a25f5eb6b30c72d0a842bf2c602c31fe3b60f984b2e50af","sha256:05efccb06aa336d2547eb8fd5b7e0935c883f89084688f32ce0b09954149b796","sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9","sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4","sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5","sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4","sha256:317654c97a9dc11fe498b61d4189ff31cd1277250993d826e9bc5815d0485f29","sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012","sha256:9369d4fed30402f45705b7a5cb51b6eeefb1dabbe0942c84514c6fdf1edac5e0","sha256:45132e53c649def28d63c199d8c3a3b9fd16fa8bca7426ad4e9c202e52a233b4","sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2","sha256:8df8541abd806578e43fe28a7ea2c41efbbb813866bed35fabe779274790a538","sha256:ab4c27523d6b5a0df75febac43cafa2dd9897dc3c1bb2f0d6990ca603b6168fe","sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32","sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836","sha256:397f0b024d3c58ca6e174c6de5abcb19304d7c58903199e1e6fe02e84d5bcb3a","sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5","sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00","sha256:f36550dfc144e4608da672616fa44b2f2341f99bb38972e66e4a8fef4b59172c","sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9","sha256:052ddc487a29acce1b5d44532f79f8ab594d0ac6565504071f4c7706d97fc552","sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095","sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85","sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823","sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf","sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339","sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684","sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae","sha256:7c21c21c3e3dbace06bee03fe4835ae6cb1e3ef86750ba2853f39d40dead2309","sha256:f60fc561675e41ffa2c48b229960291e2438441d5ed758c1f28cb06b5d4e4ea9","sha256:28f4bcbf53258114ebbf0a167351d67e204ff6f717b49b3893c2372845e6bd0a","sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48","sha256:08c41c10745c172c34880e384cf5cff014a9627f4895e59fa482948b27e2ce9e","sha256:1a2f22eed83ef568021c464cce841ef98725b614093f2c518307e85d5b6e759b","sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8","sha256:872639e4ccb4f1c5de66d5eaa85ca673141b10e3d614b33c84ff887c228d465d","sha256:d7fec1fb54953f1901cc505c225af94cb61f2206d0503be12313169a4b915e18","sha256:8a03d482b5294f7452b2f9ce31ebb6aea9eefac002281c1b9152fbb1a0341987","sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813","sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248","sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b","sha256:9ee276ed9d036a4483bb8d1bd6f6d697b161a04276c6ce5f1d3f40d48e04bccb","sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22","sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd","sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2","sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d","sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884","sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b","sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4","sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886","sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b","sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88","sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c","sha256:d74b76ce8c2c7306cc3f012d1ec56b1d5c67788748f56ecd505f257d342f97ee","sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7","sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314","sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5","sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896","sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4","sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa","sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe","sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09","sha256:39961756e07f6f49ddf2ff277dc04a63fa4d5b4fb035480945bd2f665ba1dd4d","sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab","sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401","sha256:14bd7e305e13795e0d37c613dfa3ead3a3219d28c32b27ad6527d3592361923d","sha256:aac9be36fc9c345245b4a0db66bfb9ff8df25e36ae0c1ae89eca9bcf88e052e4","sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c","sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278","sha256:c8daa43a4504f9a4b6c106baf8a56aa0d256fc3c71bd417ea75b9c7fd830a9b7","sha256:b3201777d78ee13ee45ddbd982af5999ce058907b5dc552669644931b79c5f51","sha256:824fe37d58cadac2f23678c9eb95c29b4acb1852df97cf799e77aa7e8034b54e","sha256:86acbe8d77b05c1fe9bb0168443a579b1d4538f9733813db4e72e4a4a2be29e3","sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2","sha256:ff44071d53a2ed543c2ddad99cca8fc25493cbefc5d7ad869f9b6dbda340a465","sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e","sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b","sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe","sha256:2434cd04a437c06f59d67ee2580443c0ba676c39440cd0f74cca768ec57577f9","sha256:de74076fc5073ad07ffa78fed6e7cd8f10133d99c1c73149b4ac74428699a6d1","sha256:4eb6a2e34173a2b6ca7db031cecce56c0bed711691abf1c8d6bfe6cb7ca45dc0","sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9","sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f","sha256:9ebc5843faeb852bbbe3d53f03182197f6595a928ffa3f5d7a530749ee1e4ec8","sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f","sha256:b359ca3cdc68b6e5031f65975df38a8b96c19ddc4c367e1e3463fc8484a0b3b7","sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6","sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b","sha256:3afab9512fd4d56a13c95b530c805ac8b2bc872572ec5bb435eccdd59fbbc8b6","sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825","sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1","sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9","sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f","sha256:6952dfc6a8f583c9aeafb16d5d34208d7e39fd7ec8628c5aa8ccde039acbe548","sha256:5a4c0187b96690e0088057f7656c67d399fad44b28b86644e3434c581377c229","sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923","sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf","sha256:5ad0d1b4e641e5d2fe7f6385ace0f827a431c5a52c6dc3516d85e655caca880f","sha256:64922311f45700f2f4f98d78efbdfa240987a6a2b1396ffe694d30e2b5f34ac3","sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb","sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590","sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438","sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa","sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf","sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927","sha256:cbfc109588fa0e34bdc408dbb37dadf7873fb5788dd3fd8cd04c17c75f26e6db","sha256:b09015ae5fb5772b73bc7932991aaf6e1f6d509432af605a565ef53d2d50606a","sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8","sha256:64567be564634937bd918d33a3f04017808d29269a5b0891a0f4d4aecad6161b","sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6","sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c","sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844","sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975","sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a","sha256:a7452c18c2cffc266ec36c54105b884c4d63181f20cebd705e33730534cb9093","sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60","sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e","sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1","sha256:ad50ed0c4f4c956e3b59ac9fc7bf5fba22068a661ea75a46eb81bc2209af4cc5","sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986","sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467","sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886","sha256:9fa1959637c902dfeb19a0f16c7f42f7da4aab293f7c025c66d39debad6dbc34","sha256:3b76bc46dd279404408d34946cfdb0c3899359a1c6b48e614e63d1259a94262a","sha256:e851ba0019baa83e1bebbe92e1a1cf629694ccf3b42c5ff84e0ed7bea74931d3","sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6","sha256:4375c398dff722a29bd1700bc8dc8b528345412d1e17d8d9d1176d9774962957","sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1","sha256:9cf9b01f2c727e3576a8aa71fd7fe1bf4ec9ed1c9f50b756657cf9aeae18418f","sha256:80cf220a3314f965c088e03d2b750426767db0b36b6b7c5e8059b9217ff4de6d","sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102","sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659","sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464","sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466","sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875","sha256:42fcfac5037eab4099648e0f0ed3eb2aec6eb6a23a9e3808f9b69619ea7c44e3","sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59","sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d","sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b","sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e","sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec","sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719","sha256:e5efc87172d7081559137feaa221047385a5e248ffafd9794c2bfc73b61f8f37","sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808","sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939","sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899","sha256:5c91890bf33527b9fb422cbed17600e761750a4e596fad3f0d0fa419070e82b0","sha256:0bace0cf41921db39247c99bfccb228818b83b68c7b8be7c8c4a92ea298a9a29","sha256:4a7b63b32f176b8861f6ac7363bc8010caea0c323eaa83167227118f05603022","sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604","sha256:3cd56dea57c00e2c4a9d5aac69a1e843ebef581ba76dde9d9878082fa1215485","sha256:d49f0b1c8ecf9bc808ae93e9298a40fbcc124fe67c3bbdd37705b6b5d8cfdd87","sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386","sha256:7c7eff31251dedcc3285a8b08c1b18f7fd9ee2e07dff86ad090f45a81e19e85e","sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4","sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569","sha256:52fe378ffab317ec4d26ae5fc0389dec874002a8d70a9413cefb68c7b16b0612","sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444","sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5","sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee","sha256:b1111e77a5fdbacaa04acc90d3844706158bc5892173862928705620b8910adb","sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070","sha256:129adf9147d5d120546ca8e0fb5f165761106d386d366fe82591e372754d0b4a","sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124","sha256:55bafcdf9c31b1456af3bf584bfe7ac745a03f4decd17197ea97b498d68b3b82","sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2","sha256:6f5f53b66f7c3bf6958f6f163788583265ff0360188620c3b0f7ddedeac3d1f4","sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb","sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f","sha256:d2abba1a0523bd9df5073900593ab13ec2ed2e391440be4d883314fa154370f8","sha256:cb0c64cc81e0b384bbc9d27ffcb2a655b13c91a799aad8972264aed1767926a3","sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9","sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8","sha256:4cd01a3135b9e72906eaf4552e29929334dcccee2ed092a38bf60698522ecd5f","sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58","sha256:024dd8a75eb5472692d0291292d25939b97a0295e5ab0958dcd22600d392eaae","sha256:c50ff544430830086ce484b20a2b6eaa934c82b6277a6f4fb02fc8cbc9e25db7","sha256:96e0c019cb91d8deefb7664cfe417807d23562d2a1bfd2cbfd1051e243136b57","sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61","sha256:84c338b327a3fb2f6edb79caa2242804fff8c83ffa3db0d9227f55eef4107b2a","sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280","sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9","sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103","sha256:ee1681ee1ae6a3f86a876562939fbfe415ba78b0a803059e1b6d6cd63b0fa1a3","sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973","sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b","sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9","sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db","sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3","sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd","sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5","sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b","sha256:ea5f929563fb9ca0cf08da250c62c93d4755f4a41c1aca23eeeaf3e58e90d766","sha256:8c560f3927e36e41657067e4bdc741fd8f3b55b497f0fc3c2331fb361ba8de8b","sha256:c3e2a3c23288899456fb996f3074c10637bcd4886bc446698cb1efa2734c1e4d","sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1","sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff","sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b","sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61","sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b","sha256:9dcc75ac945924ce496c9280e7ac31b88886d94a6494d0710725a81dd9d42c9a","sha256:d61ea8b6299f00397f740b73de146ef4daa6d6bb5863d525459765fa0f23a991","sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647","sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c","sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338","sha256:9194788f87e4a1aa8835f1305d290cc2cd67cee6a5b1ab82643d3a068c0145b6","sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9","sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80","sha256:3f7861ea2d8b4380b567f629a86fa31951a55f46f6eee017cb84ed87baf2c19e","sha256:1ec745d027098ff44efd29e56c03801be3f2dd7c1e1b9e23388d0916e340593e","sha256:9f179bd9e552ee6cb2e6e9b638a53161709441e42ff3dfad56856470fd3117e8","sha256:f8988c57082e58c840d066c0a6c9967b32f0e26897b992ebb89886bdb4be3cea","sha256:127b927e1402bc6e19afd785ad354ae0df64ff629f018c2939164465c0f5a3bd","sha256:5da6c745f8cec5da45e87739660edf1f8796f00c888a043da51d4d29bc7e5e51","sha256:ae1c442bcc919efb57c73c9b79748ea3a3de0378d0a693fcc3fea5620022d29f","sha256:5cb45a56740652066e10e22fa0ea7370af10495d962ccaa58be226f23f044890","sha256:65f706f658c2d525b0a810e5b23923e1c365c3add9cc0980241c81207e7250c0","sha256:01a6ffdc7f32576d33dd95d0ed94bb9aaa0f32d3a36fcd30c1149e7cd959fd33","sha256:17869f00d1c94c6b6ff9497f41acf36c9311b0fe0091dbc3739920af26983b27","sha256:eca030fe486281117fab11efbf9b80b9ca171ef0e7ad7f0e8bf767fce21a7b07","sha256:8189e658a2dd9a7302dbd3e2030f8cc328650785b6c7d7265d22f5e5916624f8","sha256:38917ef4bc657c6f0be02d457f5d4ea9e0a8bd2c8fcdaf341b3705c1a65e0691","sha256:dfe11cb1ea42634a1d4b00f046dc94cac4861538f136c3972f2f7c133d058b2a","sha256:5b7e8c9fc5f038530130a02af79ed7dbbc34804b22338edf9f16354818d04351","sha256:af88353a1f306849da587aa4c49b1104caff506e84cc6d6805e844c937d37d56","sha256:bd03e1eee15b69f60f505a73b028d3799726aef24ff8607fd01a04c3855097af","sha256:594123c4d3bf897629f713a505e52b9712049c71fc23da3b64493b8e528799db","sha256:f00b659341553c1e3c121b71fc4334fc6468b393bf3e0c3b7e90e75cffbf4a8e","sha256:7cca8885c45a4f801cb78c42597ddd35bb44c68c9181fbc7cb3f94bce320ec5c","sha256:7c5b1d5e9099b5314698573f542e88810b2571a05c5e25b3291d7d8d379f93ed","sha256:4158624697b461fbcb28b325922445a7c164d72723c4c9975f6bc3a9d2dd3f3a","sha256:f61d05c4417dbb22910c93df8e40058e2866f8df80c21a1cae26ccf1cfebddf8","sha256:f463968cf5f6f7df198f4775b7ef658cfcdf72f9f9b87e497646eaf968b6372a","sha256:6fc3d1a25b34a2d434b3481331359175cec06f115d63db3299ade82609cb278d","sha256:417dab5baecca2da19780bdc1098e0f09bad94c1dc4c31ad7f123a96ec01ce1f","sha256:6fac977d63ca18d28a1fba1b0a9fe24b6973fbc3c5aace97091f401fe57cce9a","sha256:e46edb66c422a6878b1f77777f04544a9174521f3eaac3b4c55ff0583938dd15","sha256:51a1a7b6eb8b1e9158ef775e4087836349d0012fd5ec46e082deaa8367400353","sha256:8beab7787d9573cdf49f9ce3c35dde05e33fd1de580c9be2e7ff1b0aa36d59f8","sha256:fa5746133a0e03485cb74ed5747010e19817f890ed538971fb6d6d47fd21eecd","sha256:c7e5d5de11d4c791596ca39d1587c50caba0e06f12a7c24c5d40421d291cd661","sha256:117a930b438715f04f9365dbe99d2e8f3db96d8d1652b05794b6ba286683474f","sha256:83b6744785189474b9e4faa5368b80c22c958bf4fcdc453e1447f7194edfc790","sha256:106e898fb411ed0bbd391d66799faff80b79d32a0c3a083d958b2b89784f272e","sha256:ad1ba7eebdd7f1a7b439adb60b24b698a25e48785a4bb6d47a5877114cb9e5b6","sha256:cfad2b3209d56d57f624640a06ea70238be35eaa702cd32b81f62a1df83cca14","sha256:1bb8798507c8999d4f59465527bdcf64b95266f6e885f84e0253117dc146d83a","sha256:e2295bea21a9cc04c7d5935b61405e8394d6f48dc81d74118778e0d074a6d131","sha256:4eb5b62f33ac69aeddad8b0cc017d6cef909d8b8ffd45cd833d43044d115ce67","sha256:88c92b121d4cec2a457772ef54270f07b3e755ece739a2fdbc446ffd08f21f00","sha256:1f5c2af3943f9212b8ecd8349c76908047594b44ffa670d833899826c3a83441","sha256:9f453039643c37e6b71f93d7d65a821bdd8939791ab5a52a376751a63229ab39","sha256:c23c45c7d0040856ac295aab919b3953dec18f54c98fcc95775948b283a67656","sha256:272fbaa658475350293016eb19226b3b90b7e69f9f56fe6ba093a49f8084ff76","sha256:80131ec2e611eed5a4c454bb1a8555daa08d4d8eb5b95af6e7018362d1452fa0","sha256:5ca72f281bb7f3e31b43ce8ab22007db34058583a00c40c36caeb666eca69d9e","sha256:5d7fc2ac2305ecf64ca34e9f5c414a5bc8f1f3a2381f4f1924b5d2330688e2b0","sha256:c9d01bc0eaadd75df645101940a7df4efb55c60004db73b7f270adda9f71887d","sha256:0ee42cf758be23b9e87406e99969e9a1693b5e01adb1d67b7823eb82e5b7025d","sha256:73a44979eee8724634cbba7b68d2fa6f5213d6b691bea5f847cd443231e2faf1","sha256:419e497c76ba728fe8eeb254bf3ff2e22bcd3e3480a0215b286dbeb019caf398","sha256:fbabd02b2ab3aecfdfa7484fefb8190bf134e615ddd8ce1d38e27a5907b50a40","sha256:6a59645a1336fcfed2c045e1cd7fc8969e1727b28b5b8dcf35c69bdef7c4d0a4","sha256:d7961e92751ef2e208e634b75fdeee407532f04c161b9ec0bef27bf7704758ce","sha256:c8f8df00d8f6fea68e60a55c94227c77b2e73a2c3e4f21ff74d08ffa39b48e08","sha256:60473569449e81e97e37a76e7dcfc036be470e21ac3a26efaa502b34c15f0899","sha256:fb83e33ef9fbe36a185caab7c686735578f5e1d24f0088834fedb64dda77bbb2","sha256:5512fe7e48b36fd7bced7116658060e7e299f773855b15e32926c0b87c0e9bf8","sha256:264368802760a9a89aea4542a2b1220f73f42fd9ef241934c14c100a0a577d73","sha256:91b3ccbda70e2ad208151a0f3a48e4da096187a54daa008dded706ccc6d43929","sha256:92d42a4fa8980b427dbaec2ccb82b85d6dd5c39c29d51bd7deca7c4ab902ffa8","sha256:3795bd2d716af630dd57ec1f03ac353dcb992ced24d27f2718b188a4b2ea06dc","sha256:0bf75fbc7a1ff39fc941802ada44bda3fb38b37f49de242a16aee50936a0d6c1","sha256:e2857fd9eff9ca18e18f97ed4c305a9a089fdeec0c14e45bf2110fb172dcba25","sha256:42ea9c4807022a6382338ab9d7f60a48ae1b665b8a31c7ace4bdb24e1fe70142","sha256:958c280ebbeaec0f6e4d229148d07c10db7b121e4b457faaa4df075fb63c3bf9","sha256:57a0a54f8a8bfdd8e6db8e603eee6f089dc9631842d6348819a61cc0e5e370d9","sha256:b6f9a3356f2f8e094e08c9811250199e6caaea2dad91c7c54f7594c4196d3060","sha256:2a8c676f2126b8b99c3ea8dfccfc3d901c51108b4268a084b5b54951a90e2b20","sha256:56ecdfc358f2149bc9f6fd38161d33fe45177c11059fd813143c8d314b1019fc","sha256:9ecfb4c0a291cf7dcb8e585913123eee521c1a7dde63865729cd0407983501b3","sha256:fef247293abdc1cc22766e19bc55829240f36531dcfa0168410bec60595f7b8a","sha256:aa95c26e5b440953c42cf6e27161bf9d067dae7f4ab1da1cc19c2284dfd145fb","sha256:e70f0d36095323778aa79d8d1b61050e2a335eb657e88cfe29dccde3ca6e1965","sha256:9da157b866a2e34eba3d3991b1fb708fa2c0cd49d61c0bac32f476cf904a28ba","sha256:ee9fb01963d4192f679883a74588d2e0dba0e5f2c53e4181455b610f5fac672d","sha256:b4053e72ef23e59a43b4f77b0f3abeb92c4b72c9df7d4f62572560edfbfa02a4","sha256:d43d17930e5fedbbeb2a45bdbfff713485c6cd01ca6cbb9443370192e73daf40","sha256:7e1ebb8cb74f5a1675085d6067c87ab4f1f9d21e1974d219f9d48fc468e2a7c5","sha256:d7a895002e2291f776c8bf40dc99848105ca8c8e1651ba4692cc44ab838bc0a1","sha256:5e74c26703101a54a70deb68b7e24092f35338c142862933f650776290c5d87f","sha256:495db9bd35d0631b2813ba2b8f10b284be56b2f23e56123674857e6d7e9853cf","sha256:a2ad5970a8d117e9216e2e1e70f8b8247a25dc0a556e5fcba245f73ced3283bf","sha256:563e2e1dac4491aaac379b3ee5de9e06c07b2abdcd46d150675323149ff35e01","sha256:c2f7b54f06f9bac66c8f13ed80d217a718670a4fdb10cb44692eeb5426131d6b","sha256:2c8e76fcc1ad8197ffdb66d06fb498a1129e71e0f7c04a05176867e5788bbf05","sha256:a95e0092daedde142a4ed2dc6589bd4f4dee36bc69ad982bcb42351f9975c994","sha256:01705d02dcf229b9b69ce8e97c81346a9c0e444ee07c43681895294577281775","sha256:753387d3c2d19d4175702ef537b548238a1b9b7311ee62113193bd93fc81cbc6","sha256:82a0c6703444fa28ab032b3e4aa355deabff92f3f39d5490faa5c9b9150eaceb","sha256:50308833a750fcba4422052e5dd6f72a4691340813c803ef157283621ed35215","sha256:2c68b021959911bd946c5d43d3c6ebdf3dcae378e4ee1e68f98780b94616cc87","sha256:b906f2e1a8045b0b895ff0a8196ca41822ba495731338debb6f21129d4bc51c2","sha256:a8123a1759678459d974a0f6cace694ebcca37fd0841c84ec99718f0e3a2a2ad","sha256:e48ec5686644366c7388f7068f93f1d86f9657a66a7cab5bfeef774ad81b3c94","sha256:782953e28d5a059ca6592732e99cd3113db10e2a7ca78a44470e6ebc66f316fa","sha256:2b6853be09f6155dbbddfb25c9bd65d289493f9d1f51c891b4539b9245739dd0","sha256:26fa850e30bf0ea42b3d8a573ed58b62eeeaec754a051eaea3e768e29673144d","sha256:4929636a918bb0af18de939fabd41b4e998dfd3aeb3693a02d7b05377bc0f18f","sha256:20ad2f907034a1c3e76dd4691886223bf588ff946fd57545ecdfcd58bc4c3b4b","sha256:5d43a1d2f9d3e3e1e0d6c3cc09bf2850a689b226bbf2c200abb5d0aebc351455","sha256:5978ef81620bea4c5634d5ea93f162e61a83aabeeab35f29e8506ea66bb016ad","sha256:1a19c6f772fe9d1e339333639756d28fbc33d552b6ac734510291fd22a88a6a5","sha256:860db405a0e85d81f1fa5450a8b05dab7e170920231c812caae3a48b4fc87e48","sha256:7705a532986761cae92684e2dc9012ba37f10891c46096c57f2628be2b82d106","sha256:3fba1453714af580419d209b9eab7aa946646df137da8b96d89c5fa2a7fef467","sha256:e6530742863132f93dd090c7b8009f6e17a3dc56d5862a97f5518d7f27cf783d","sha256:f844f75efe3aca759eb80d426f6530ab03de0467665239bd21e5129ced6bae1c","sha256:35642d97e77aa48070364b7cd2e4704bb53b87b732c7dc484b59f51446aaaca8","sha256:b079eacd62d18714a20dbaf853e3184f21f1262c8a7f4d4c6de47d66e28ca036","sha256:19b0dec8fce924341e35a9165bcc384843a77498db5ca435521b12212233adf2","sha256:beaca54bd436c280070054af7343947f739cf8ab8789e955ca9ea1a620950f76","sha256:2ad9ccdab138ec355fe3132dbcaa381491b80949841000e764f17945753fc77a","sha256:ffaa05614a9c419fe0ade73fa572f58d51bcd1a0f3f5c8ab4d6757e70e97fa36","sha256:fd4404aec80bb4fa767f4fcc686a37b0cc406e766c9b3704c1b481d648c76c1a","sha256:38409cd1f5770e10f086bd9dda1d9651dcc2433a17d43f9acd8f4877e074a6dd","sha256:4765dd8175221961116334b14dd0d436dd88bfe77fa23297c08f0d621e3d1395","sha256:d593124bca390187150aceebd4ce67688d6c22e0294d1ae495d5197dea0b5a16","sha256:860a309d10907bc4735c8af1513bc2f29633df73ab9a00c585ec994ec23f7f90","sha256:92db4ef35ccca32d605e47a333c140d1a36c25688a0f209f1132f08484e31bf0","sha256:0d99e49dd942bbe206ec2d2bfd546df428457ff22c9f4886eef1dba328b2b03b","sha256:9ebb22c37f0f44203bc579625757b18cbf7dd751de2959d3a4235f56d4b748ad","sha256:d46293795b113fe996bebd2056f7b05f187f0bdcd3186b5012a8b8d91846e6c2","sha256:be1358f7c9accf20d34d468264e88019c9b30a0e77b58726b221c0fcd66560f7","sha256:5443d1bc0b7eb269a050c1221818a0a82cee6803114f70ee26d05d6756879b7f","sha256:f93eb1920c645923ec14f70130ba5e4bf1cf93f8196c237e7c95abbf452c1bb6","sha256:47c21130eb66c93ffc5c9528606d4c02ce5d9cdeb784baa031cb98e7ddbac9c3","sha256:a610fbda2dd5c901f68ee0f9faaf09238921a15fdc52f823f41edc8b38fec2a1","sha256:4296471e898b26f01fcf2b420728e39e8f50f0015f7e7c686807a6e86efc69a1","sha256:c84a5e00f504e0f60aa02cac7eb5cde57ed7958f2965ea2fce0c7e9cd0ff532b","sha256:506b1d8ba1f1fbf138a94de6a1705da12360c81e6797cb60df488c87e9a366fe","sha256:cc35e29f4d4559ee6bf167eb0e1e1fabd9d4690cc3587799e3b814a202249c1d","sha256:1b71cb73cbe079ccc1cf5c6bc52a8f990dccb3ea0d184879741eb36795d43b5d","sha256:53823a669b4ab38d3ab58a6d8524e47f9d7c6998e006b9b5cab59dc1e5b47f88","sha256:0f29f9c9a8ac60616c4f606508067a8f97443780b0425e29ef0bec8e1cbb876a","sha256:a883c4ecd38b3208be7f52555aa529d746da55488951b5b47e130313b753a8c3","sha256:73c2359d19669a15a9edf0b5da2aaaeb46c00ec7af7bc1d57816a4043995cb5c","sha256:5e365a64b85fbc88527e72fcf93ac26d4aa01ad7f7b0e53b2a7c04ecbb931f32","sha256:a63900b34fef430d9afa5dcbad6ea8b727f8d2aa730d64ee899e5c298c8278ff","sha256:34825050240f3e717579b9e66ba42f8fe2f2f548a4b36c476773b18161b0dae1","sha256:df3f5d6c41e2be1f4fb2b5a58e70833b414d307bbe85709f2636f0c464499ec5","sha256:4d80736f9a52519104eeb228eb1ea95d0d6e9addc766eebacc9a5137fb2a5977","sha256:c9a3aef41c86259a7bb6dba7febb780737a1237ca8ff1c205797ead5951be712"]}},{"name":"org.osbuild.fix-bls","options":{}},{"name":"org.osbuild.locale","options":{"language":"en_US"}},{"name":"org.osbuild.hostname","options":{"hostname":"my-host"}},{"name":"org.osbuild.users","options":{"users":{"me":{"key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost"},"myself":{"uid":"42","gid":"42","groups":["wheel"],"description":"Mostly harmless.","home":"/home/my-home","shell":"/bin/true","password":"$6$1bOHrvcjwPN8kC2/$FjLjFyn4vSkiMc0kAoJpXo6nAVtWCYn5/LEZwmGI8fv7/pBhiUKwtrv/wEVai9pnEz5OF2sSYq27yI.AcUpaA1","key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost"}}}},{"name":"org.osbuild.fstab","options":{"filesystems":[{"label":"root","vfs_type":"ext4","path":"/","options":"defaults","freq":1,"passno":1},{"label":"boot","vfs_type":"ext4","path":"/boot","options":"defaults","freq":1,"passno":1},{"label":"EFI-SYSTEM","vfs_type":"vfat","path":"/boot/efi","options":"umask=0077,shortname=winnt","passno":2}]}},{"name":"org.osbuild.systemd","options":{"enabled_services":["NetworkManager.service","firewalld.service","rngd.service","sshd.service","zram-swap.service"]}},{"name":"org.osbuild.selinux","options":{"file_contexts":"etc/selinux/targeted/contexts/files/file_contexts"}},{"name":"org.osbuild.rpm-ostree","options":{"etc_group_members":["wheel","docker"]}}],"assembler":{"name":"org.osbuild.ostree.commit","options":{"ref":"fedora/32/x86_64/iot","tar":{"filename":"commit.tar"}}}}},"targets":[{"uuid":"3b15ea23-3ce7-4af4-805a-f0c6f7a7f79c","image_name":"My Image","name":"org.osbuild.aws","created":"2020-05-31T21:29:07.712359709+02:00","status":"WAITING","options":{"filename":"image.ami","region":"far-away-1","accessKeyID":"MyKey","secretAccessKey":"MySecret","bucket":"list","key":"image"}}],"job_created":"2020-05-31T21:29:51.663937387+02:00","job_started":"0001-01-01T00:00:00Z","job_finished":"0001-01-01T00:00:00Z","size":0,"jobid":"15d6926b-4171-4ef3-ae8e-26cb8e269718"}]},"3b15ea23-3ce7-4af4-805a-f0c6f7a7f79c":{"blueprint":{"name":"my-blueprint-2","description":"My second blueprint","version":"0.0.2","packages":null,"modules":null,"groups":null,"customizations":{"hostname":"my-host","kernel":{"append":"debug"},"sshkey":[{"user":"me","key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost"}],"user":[{"name":"myself","description":"Mostly harmless.","password":"password","key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost","home":"/home/my-home","shell":"/bin/true","groups":["wheel"],"uid":42,"gid":42}]}},"image_builds":[{"id":0,"image_type":"qcow2","manifest":{"sources":{"org.osbuild.files":{"urls":{"sha256:0079ca4f9bd2df6d8dd84d9ec6a0250bb32c64b8abf5785a2889d1ad7eabc90d":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libsss_certmap-2.3.0-1.fc32.x86_64.rpm"},"sha256:01705d02dcf229b9b69ce8e97c81346a9c0e444ee07c43681895294577281775":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libsecret-0.20.3-1.fc32.x86_64.rpm"},"sha256:024dd8a75eb5472692d0291292d25939b97a0295e5ab0958dcd22600d392eaae":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/r/rsync-3.1.3-11.fc32.x86_64.rpm"},"sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-six-1.14.0-2.fc32.noarch.rpm"},"sha256:02de6f2778310a36a3e4dfd47f9c35c67140e77c4142371ae126f6478cdf46be":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/d/dnf-4.2.21-1.fc32.noarch.rpm"},"sha256:0353b55c967a79bba2bf46e0c9f8a14297f555a0b7a4e4c79ccbdbca81b010f3":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/s/sssd-nfs-idmap-2.3.0-1.fc32.x86_64.rpm"},"sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.x86_64.rpm"},"sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/langpacks-en-3.0-3.fc32.noarch.rpm"},"sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/geolite2-country-20191217-2.fc32.noarch.rpm"},"sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libtasn1-4.16.0-1.fc32.x86_64.rpm"},"sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/i/iproute-tc-5.5.0-1.fc32.x86_64.rpm"},"sha256:0c84ca581adcd4ce0d258ad78b29bf08f3f9d7135c69d85be96167c4df5cface":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/c/console-login-helper-messages-issuegen-0.18.1-1.fc32.noarch.rpm"},"sha256:0d4393708282029b372343241060b3916b31e991b18b93d7c9d002d4438f1a9c":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libnfsidmap-2.4.3-1.rc2.fc32.x86_64.rpm"},"sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libselinux-3.0-3.fc32.x86_64.rpm"},"sha256:0ee42cf758be23b9e87406e99969e9a1693b5e01adb1d67b7823eb82e5b7025d":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/grub2-common-2.04-19.fc32.noarch.rpm"},"sha256:0f29f9c9a8ac60616c4f606508067a8f97443780b0425e29ef0bec8e1cbb876a":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/s/selinux-policy-3.14.5-39.fc32.noarch.rpm"},"sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-7.fc32.x86_64.rpm"},"sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/f/filesystem-3.14-2.fc32.x86_64.rpm"},"sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/cpio-2.13-4.fc32.x86_64.rpm"},"sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.31-2.fc32.x86_64.rpm"},"sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.x86_64.rpm"},"sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libselinux-utils-3.0-3.fc32.x86_64.rpm"},"sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/passwd-0.80-8.fc32.x86_64.rpm"},"sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/pigz-2.4-6.fc32.x86_64.rpm"},"sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-policycoreutils-3.0-2.fc32.noarch.rpm"},"sha256:16702883a79532a400d7304146cdb47b0599983b9fb48ab918ef9fa1ce0be394":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libtalloc-2.3.1-2.fc32.x86_64.rpm"},"sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/gmp-6.1.2-13.fc32.x86_64.rpm"},"sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/diffutils-3.7-4.fc32.x86_64.rpm"},"sha256:19b0dec8fce924341e35a9165bcc384843a77498db5ca435521b12212233adf2":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/o/openssh-clients-8.3p1-1.fc32.x86_64.rpm"},"sha256:1a19c6f772fe9d1e339333639756d28fbc33d552b6ac734510291fd22a88a6a5":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libzstd-1.4.5-3.fc32.x86_64.rpm"},"sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.x86_64.rpm"},"sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libksba-1.3.5-11.fc32.x86_64.rpm"},"sha256:1bb8798507c8999d4f59465527bdcf64b95266f6e885f84e0253117dc146d83a":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/gettext-libs-0.20.2-1.fc32.x86_64.rpm"},"sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libcap-2.26-7.fc32.x86_64.rpm"},"sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/x/xz-5.2.5-1.fc32.x86_64.rpm"},"sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libmnl-1.0.4-11.fc32.x86_64.rpm"},"sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/systemd-245.4-1.fc32.x86_64.rpm"},"sha256:1e1e9900e9d3a2b8eb6684060672526948df2cb9f751e7d72cb4fa5bffe71747":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/cloud-init-19.4-2.fc32.noarch.rpm"},"sha256:1ec0d908c774fa4efa15029e21d9d160e24e10b040357d64b4224e90b3b7d3c2":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-unbound-1.10.1-1.fc32.x86_64.rpm"},"sha256:1ec745d027098ff44efd29e56c03801be3f2dd7c1e1b9e23388d0916e340593e":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/n/NetworkManager-1.22.12-1.fc32.x86_64.rpm"},"sha256:1f5c2af3943f9212b8ecd8349c76908047594b44ffa670d833899826c3a83441":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/gnupg2-smime-2.2.20-2.fc32.x86_64.rpm"},"sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libidn2-2.3.0-2.fc32.x86_64.rpm"},"sha256:20ad2f907034a1c3e76dd4691886223bf588ff946fd57545ecdfcd58bc4c3b4b":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libuuid-2.35.2-1.fc32.x86_64.rpm"},"sha256:223ed731b03d273f2e7f36528ea10804d2b05e4ead7613d69dc9cdb1542a33be":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/c/console-login-helper-messages-0.18.1-1.fc32.noarch.rpm"},"sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm"},"sha256:24520e03276e0d850169efc9d83b12a9a01eee5d7202dadca12d2e0a8b7352ba":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.31-2.fc32.x86_64.rpm"},"sha256:25ae9056f75df4efff0d17d916e7c3889c421368613acec7f1c4119bd17eac13":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.24-1.fc32.x86_64.rpm"},"sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm"},"sha256:26cca773f1f258105f0f825a8e0faebcaa183655b5d91cd972afbe791b586478":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-44.fc32.x86_64.rpm"},"sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.x86_64.rpm"},"sha256:26fa850e30bf0ea42b3d8a573ed58b62eeeaec754a051eaea3e768e29673144d":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libtextstyle-0.20.2-1.fc32.x86_64.rpm"},"sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libss-1.45.5-3.fc32.x86_64.rpm"},"sha256:280b880de2f5c6bbd8e000c63dff495533925893ef02cc599222cdb3c7586a22":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/m/mtools-4.0.24-1.fc32.x86_64.rpm"},"sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/f/file-5.38-2.fc32.x86_64.rpm"},"sha256:287e95efe7718018c583b49892b89257f2dec97e0a144ffb4ea0863865a0a926":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/i/ipcalc-0.4.1-1.fc32.x86_64.rpm"},"sha256:28fd8db75d20cf14174cad3a5c2cd740d899ee2a064c48b892981b154e94a4d0":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-libcomps-0.1.15-1.fc32.x86_64.rpm"},"sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libsepol-3.0-3.fc32.x86_64.rpm"},"sha256:2ad9ccdab138ec355fe3132dbcaa381491b80949841000e764f17945753fc77a":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/o/openssl-1.1.1g-1.fc32.x86_64.rpm"},"sha256:2b6853be09f6155dbbddfb25c9bd65d289493f9d1f51c891b4539b9245739dd0":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libstdc++-10.1.1-1.fc32.x86_64.rpm"},"sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/less-551-3.fc32.x86_64.rpm"},"sha256:2bbe073544977e15c66507fb382b46349f46f773365511aba63353014f17dd28":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-3.fc32.1.x86_64.rpm"},"sha256:2c68b021959911bd946c5d43d3c6ebdf3dcae378e4ee1e68f98780b94616cc87":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libssh-0.9.4-2.fc32.x86_64.rpm"},"sha256:2c8e76fcc1ad8197ffdb66d06fb498a1129e71e0f7c04a05176867e5788bbf05":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libmount-2.35.2-1.fc32.x86_64.rpm"},"sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/t/tar-1.32-4.fc32.x86_64.rpm"},"sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.x86_64.rpm"},"sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/systemd-udev-245.4-1.fc32.x86_64.rpm"},"sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.x86_64.rpm"},"sha256:36778f8a4fa111c4f796bbea8fd52f7b9708de8f4351070faa30bc985db59885":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libtdb-1.4.3-2.fc32.x86_64.rpm"},"sha256:3882823d0eb18e0e8146584f4a32a4801961f6fdc09075607746317eba3265be":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-urllib3-1.25.7-3.fc32.noarch.rpm"},"sha256:391faab010ca30610a14e0b3d54fbc0331be39bc831086fb877f8021fe4b171f":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-oauthlib-3.0.2-5.fc32.noarch.rpm"},"sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/chrony-3.5-8.fc32.x86_64.rpm"},"sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64.rpm"},"sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm"},"sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/n/npth-1.6-4.fc32.x86_64.rpm"},"sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/kmod-27-1.fc32.x86_64.rpm"},"sha256:3ff527ad844ae60ef49d79a420dfec69b20d01187218c831f43814779d568ac1":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/d/dnf-plugins-core-4.0.15-1.fc32.noarch.rpm"},"sha256:4158624697b461fbcb28b325922445a7c164d72723c4c9975f6bc3a9d2dd3f3a":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/d/dbus-broker-23-2.fc32.x86_64.rpm"},"sha256:417dab5baecca2da19780bdc1098e0f09bad94c1dc4c31ad7f123a96ec01ce1f":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/e/elfutils-libelf-0.179-2.fc32.x86_64.rpm"},"sha256:419e497c76ba728fe8eeb254bf3ff2e22bcd3e3480a0215b286dbeb019caf398":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/grub2-pc-2.04-19.fc32.x86_64.rpm"},"sha256:4296471e898b26f01fcf2b420728e39e8f50f0015f7e7c686807a6e86efc69a1":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-pip-19.3.1-3.fc32.noarch.rpm"},"sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-40.fc32.x86_64.rpm"},"sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libcom_err-1.45.5-3.fc32.x86_64.rpm"},"sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-2.fc32.x86_64.rpm"},"sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/o/os-prober-1.77-4.fc32.x86_64.rpm"},"sha256:463d8259936601d23a02c407a4fb294c0e3bc9a213282c4525137bc1b18bbf6b":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/u/unbound-libs-1.10.1-1.fc32.x86_64.rpm"},"sha256:46407b730b272223b8b64d12df0725af571b4a5c5ab89b9f41e12a49e07c6e6b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/c-ares-1.15.0-5.fc32.x86_64.rpm"},"sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-4.fc32.x86_64.rpm"},"sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/q/qemu-img-4.2.0-7.fc32.x86_64.rpm"},"sha256:47c21130eb66c93ffc5c9528606d4c02ce5d9cdeb784baa031cb98e7ddbac9c3":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-libs-3.8.3-1.fc32.x86_64.rpm"},"sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dracut-config-generic-050-26.git20200316.fc32.x86_64.rpm"},"sha256:4860a733ca3f22089c6c283cbdcf53123a702d60b5bffdd4fe9d76826f91139a":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-prettytable-0.7.2-22.fc32.noarch.rpm"},"sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dhcp-common-4.4.2-5.b1.fc32.noarch.rpm"},"sha256:4929636a918bb0af18de939fabd41b4e998dfd3aeb3693a02d7b05377bc0f18f":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libtirpc-1.2.6-0.fc32.x86_64.rpm"},"sha256:495db9bd35d0631b2813ba2b8f10b284be56b2f23e56123674857e6d7e9853cf":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libgcc-10.1.1-1.fc32.x86_64.rpm"},"sha256:4b9da0cedada16eb80a2d66b86aa62c9b026501e13a3e947a5a03a06f41d9dbb":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/parted-3.3-3.fc32.x86_64.rpm"},"sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/pam-1.3.1-24.fc32.x86_64.rpm"},"sha256:4c9d77d63ddc7dda0e018fc1c97d46025794e336e58d838a631fcc130dfa3b9b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-jsonpatch-1.21-11.fc32.noarch.rpm"},"sha256:4d80736f9a52519104eeb228eb1ea95d0d6e9addc766eebacc9a5137fb2a5977":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/u/util-linux-2.35.2-1.fc32.x86_64.rpm"},"sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/shadow-utils-4.8.1-2.fc32.x86_64.rpm"},"sha256:4e066ace8364aba9311fa74f4a87c21f98091bc1af5a6a4daa06441469234041":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/syslinux-extlinux-nonlinux-6.04-0.13.fc32.noarch.rpm"},"sha256:4eb5b62f33ac69aeddad8b0cc017d6cef909d8b8ffd45cd833d43044d115ce67":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/glib2-2.64.3-1.fc32.x86_64.rpm"},"sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libndp-1.7-5.fc32.x86_64.rpm"},"sha256:50308833a750fcba4422052e5dd6f72a4691340813c803ef157283621ed35215":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libsolv-0.7.12-1.fc32.x86_64.rpm"},"sha256:506b1d8ba1f1fbf138a94de6a1705da12360c81e6797cb60df488c87e9a366fe":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-libs-4.15.1-3.fc32.1.x86_64.rpm"},"sha256:51a1a7b6eb8b1e9158ef775e4087836349d0012fd5ec46e082deaa8367400353":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/f/fedora-release-common-32-2.noarch.rpm"},"sha256:53823a669b4ab38d3ab58a6d8524e47f9d7c6998e006b9b5cab59dc1e5b47f88":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-plugin-selinux-4.15.1-3.fc32.1.x86_64.rpm"},"sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-9.fc32.x86_64.rpm"},"sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/gzip-1.10-2.fc32.x86_64.rpm"},"sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libsemanage-3.0-3.fc32.x86_64.rpm"},"sha256:55bafcdf9c31b1456af3bf584bfe7ac745a03f4decd17197ea97b498d68b3b82":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-libsemanage-3.0-3.fc32.x86_64.rpm"},"sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/kmod-libs-27-1.fc32.x86_64.rpm"},"sha256:56ecdfc358f2149bc9f6fd38161d33fe45177c11059fd813143c8d314b1019fc":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/j/json-c-0.13.1-13.fc32.x86_64.rpm"},"sha256:5719dd2fb399cadec08b4ac41c794239d2a2de2f012faeb970ab90a07bba0084":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-babel-2.8.0-2.fc32.noarch.rpm"},"sha256:5978ef81620bea4c5634d5ea93f162e61a83aabeeab35f29e8506ea66bb016ad":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libxcrypt-compat-4.4.16-3.fc32.x86_64.rpm"},"sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libassuan-2.5.3-3.fc32.x86_64.rpm"},"sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch.rpm"},"sha256:5b7e8c9fc5f038530130a02af79ed7dbbc34804b22338edf9f16354818d04351":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/c/coreutils-8.32-4.fc32.1.x86_64.rpm"},"sha256:5d43a1d2f9d3e3e1e0d6c3cc09bf2850a689b226bbf2c200abb5d0aebc351455":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libxcrypt-4.4.16-3.fc32.x86_64.rpm"},"sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.x86_64.rpm"},"sha256:5e74c26703101a54a70deb68b7e24092f35338c142862933f650776290c5d87f":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libfido2-1.3.1-2.fc32.x86_64.rpm"},"sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-3.fc32.x86_64.rpm"},"sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm"},"sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm"},"sha256:61c51596cc97f35177efe8dc5e2ca52d8fd528570f33c184497f419259b73c90":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-idna-2.8-6.fc32.noarch.rpm"},"sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.x86_64.rpm"},"sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libcroco-0.6.13-3.fc32.x86_64.rpm"},"sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/m/mkpasswd-5.5.6-1.fc32.x86_64.rpm"},"sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libattr-2.4.48-8.fc32.x86_64.rpm"},"sha256:6615aae3def0c49910e43e2d69f7ae8852694953dceb4b6235b5cf4099296d70":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-jsonpointer-1.10-19.fc32.noarch.rpm"},"sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libdb-5.3.28-40.fc32.x86_64.rpm"},"sha256:6890a9545194ad6cf1b0c58e5273132171a9ced9cb665a1442aa62b6b6d3d2ea":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-jsonschema-3.2.0-2.fc32.noarch.rpm"},"sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-font-en-3.0-3.fc32.noarch.rpm"},"sha256:6a59645a1336fcfed2c045e1cd7fc8969e1727b28b5b8dcf35c69bdef7c4d0a4":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/grub2-tools-2.04-19.fc32.x86_64.rpm"},"sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-dbus-1.2.16-1.fc32.x86_64.rpm"},"sha256:6baf7b9b0d84b51cf059d00ab923ed763e804136c1b1098128be8396a72f548e":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-dnf-plugins-core-4.0.15-1.fc32.noarch.rpm"},"sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-10.fc32.x86_64.rpm"},"sha256:6f5f53b66f7c3bf6958f6f163788583265ff0360188620c3b0f7ddedeac3d1f4":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-setools-4.3.0-1.fc32.x86_64.rpm"},"sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/t/tss2-1331-4.fc32.x86_64.rpm"},"sha256:6fac977d63ca18d28a1fba1b0a9fe24b6973fbc3c5aace97091f401fe57cce9a":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/e/elfutils-libs-0.179-2.fc32.x86_64.rpm"},"sha256:6fc1181ed798617668f195579acfcf8fb212513a776f376eecfb3d086c66b2d9":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libref_array-0.1.5-44.fc32.x86_64.rpm"},"sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm"},"sha256:6fc3d1a25b34a2d434b3481331359175cec06f115d63db3299ade82609cb278d":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/e/elfutils-default-yama-scope-0.179-2.fc32.noarch.rpm"},"sha256:703fb5ca1651bb72d8ab58576ce3d78c9479cbb2e78ff8666ae3a3d1cd9bb0da":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/checkpolicy-3.0-3.fc32.x86_64.rpm"},"sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/a/acl-2.2.53-5.fc32.x86_64.rpm"},"sha256:7124f9fedc862e3bab80f05b804b6c9580603ce3155727e888646d4d4f5ddc50":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-cffi-1.14.0-1.fc32.x86_64.rpm"},"sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm"},"sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libusbx-1.0.23-1.fc32.x86_64.rpm"},"sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm"},"sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/systemd-pam-245.4-1.fc32.x86_64.rpm"},"sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/grep-3.3-4.fc32.x86_64.rpm"},"sha256:7705a532986761cae92684e2dc9012ba37f10891c46096c57f2628be2b82d106":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/linux-firmware-whence-20200519-108.fc32.noarch.rpm"},"sha256:782953e28d5a059ca6592732e99cd3113db10e2a7ca78a44470e6ebc66f316fa":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libsss_sudo-2.3.0-1.fc32.x86_64.rpm"},"sha256:784186e517b8a48371a101c28ad7af608277e5bcbcc7d75c203f4a8f0d8cb2e2":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/y/yum-4.2.21-1.fc32.noarch.rpm"},"sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/systemd-libs-245.4-1.fc32.x86_64.rpm"},"sha256:78de81d45789ae9bccf6dd82f2b2835ac868f1a584e05d0e9f89f40bb4a202c7":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/syslinux-extlinux-6.04-0.13.fc32.x86_64.rpm"},"sha256:79fefe36917dc3f002d5a0c2ed15ab2dec4c66c9847b4b658047a4324e7be9d0":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-pytz-2020.1-1.fc32.noarch.rpm"},"sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/b/bash-5.0.11-2.fc32.x86_64.rpm"},"sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libevent-2.1.8-8.fc32.x86_64.rpm"},"sha256:7c2b9d82983189251cbe90d0debb6c0938d9a4f484332405b8d3582a618a0ccb":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-sign-libs-4.15.1-3.fc32.1.x86_64.rpm"},"sha256:7c5b1d5e9099b5314698573f542e88810b2571a05c5e25b3291d7d8d379f93ed":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/c/curl-7.69.1-3.fc32.x86_64.rpm"},"sha256:7c7eff31251dedcc3285a8b08c1b18f7fd9ee2e07dff86ad090f45a81e19e85e":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/polkit-pkla-compat-0.1-16.fc32.x86_64.rpm"},"sha256:7cca8885c45a4f801cb78c42597ddd35bb44c68c9181fbc7cb3f94bce320ec5c":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/c/crypto-policies-scripts-20200527-1.gitb234a47.fc32.noarch.rpm"},"sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libargon2-20171227-4.fc32.x86_64.rpm"},"sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm"},"sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/pinentry-1.1.0-7.fc32.x86_64.rpm"},"sha256:7e1ebb8cb74f5a1675085d6067c87ab4f1f9d21e1974d219f9d48fc468e2a7c5":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libcurl-7.69.1-3.fc32.x86_64.rpm"},"sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.x86_64.rpm"},"sha256:808e7209893298d11ac27f148c1b3d1a2b28e303e7930b43659a08dc0f660ac4":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/groff-base-1.22.3-21.fc32.x86_64.rpm"},"sha256:80cf220a3314f965c088e03d2b750426767db0b36b6b7c5e8059b9217ff4de6d":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/m/mozjs60-60.9.0-5.fc32.x86_64.rpm"},"sha256:81b6181b947d50e0a1ea681298417e552421d6714900d07a34dc25899e5c9f60":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-configobj-5.0.6-20.fc32.noarch.rpm"},"sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/geolite2-city-20191217-2.fc32.noarch.rpm"},"sha256:82a0c6703444fa28ab032b3e4aa355deabff92f3f39d5490faa5c9b9150eaceb":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libsmartcols-2.35.2-1.fc32.x86_64.rpm"},"sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/w/which-2.21-19.fc32.x86_64.rpm"},"sha256:8347e3ad3a1631e2df362f4105e40e046c0fde6626b549591b76426747c7d753":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/s/sssd-common-2.3.0-1.fc32.x86_64.rpm"},"sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.x86_64.rpm"},"sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/x/xz-libs-5.2.5-1.fc32.x86_64.rpm"},"sha256:860a309d10907bc4735c8af1513bc2f29633df73ab9a00c585ec994ec23f7f90":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/pcre2-syntax-10.35-1.fc32.noarch.rpm"},"sha256:860db405a0e85d81f1fa5450a8b05dab7e170920231c812caae3a48b4fc87e48":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/linux-firmware-20200519-108.fc32.noarch.rpm"},"sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/cracklib-2.9.6-22.fc32.x86_64.rpm"},"sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/i/iproute-5.5.0-1.fc32.x86_64.rpm"},"sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-2.fc32.x86_64.rpm"},"sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libffi-3.1-24.fc32.x86_64.rpm"},"sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/f/fonts-filesystem-2.0.3-1.fc32.noarch.rpm"},"sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.x86_64.rpm"},"sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-en-3.0-3.fc32.noarch.rpm"},"sha256:888fae3e1c57f0d389c3678e0bb292bf7cfcccf798c55c8c60f08eba61608717":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-pyrsistent-0.16.0-1.fc32.x86_64.rpm"},"sha256:88c92b121d4cec2a457772ef54270f07b3e755ece739a2fdbc446ffd08f21f00":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/gnupg2-2.2.20-2.fc32.x86_64.rpm"},"sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/popt-1.16-19.fc32.x86_64.rpm"},"sha256:8c047278ce11e7ba7169a9c9537c3c6544f52c7eee8754179acd839ed59c028f":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dhcp-client-4.4.2-5.b1.fc32.x86_64.rpm"},"sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-3.0-2.fc32.x86_64.rpm"},"sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libnl3-3.5.0-2.fc32.x86_64.rpm"},"sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/e/expat-2.2.8-2.fc32.x86_64.rpm"},"sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-7.fc32.noarch.rpm"},"sha256:924367aa63693da4660dcb806fbf52b3bcb7c4d12b40c4b4ba6329079936d073":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/n/net-tools-2.0-0.56.20160912git.fc32.x86_64.rpm"},"sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/pcre-8.44-1.fc32.x86_64.rpm"},"sha256:93417d6ae53af8f0a8ecd54a60700624b47f562f355a8b60eb9de9598bc3599b":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/s/sssd-kcm-2.3.0-1.fc32.x86_64.rpm"},"sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-5.fc32.noarch.rpm"},"sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libsigsegv-2.11-10.fc32.x86_64.rpm"},"sha256:95a13407e6f4c40c731655053e99f955fd56f66fafadd5f7f0e7c04fa58ffe8b":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-rpm-4.15.1-3.fc32.1.x86_64.rpm"},"sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm"},"sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/j/jansson-2.12-5.fc32.x86_64.rpm"},"sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.x86_64.rpm"},"sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dracut-050-26.git20200316.fc32.x86_64.rpm"},"sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libedit-3.1-32.20191231cvs.fc32.x86_64.rpm"},"sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libgpg-error-1.36-3.fc32.x86_64.rpm"},"sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libyaml-0.2.2-3.fc32.x86_64.rpm"},"sha256:9d4691918d7add910e8c03d61cccda0316b62d77b30ac2e502cf2e55289d1823":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libcollection-0.7.0-44.fc32.x86_64.rpm"},"sha256:9dbf41afbd3b67340971e5b4fc61ccd2358f045019915d97d3fbc5bc6541fe0e":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-dnf-4.2.21-1.fc32.noarch.rpm"},"sha256:9ebb22c37f0f44203bc579625757b18cbf7dd751de2959d3a4235f56d4b748ad":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python-pip-wheel-19.3.1-3.fc32.noarch.rpm"},"sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libpwquality-1.4.2-2.fc32.x86_64.rpm"},"sha256:9f179bd9e552ee6cb2e6e9b638a53161709441e42ff3dfad56856470fd3117e8":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/n/NetworkManager-libnm-1.22.12-1.fc32.x86_64.rpm"},"sha256:9f453039643c37e6b71f93d7d65a821bdd8939791ab5a52a376751a63229ab39":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/gnutls-3.6.13-4.fc32.x86_64.rpm"},"sha256:a01c177ed13a098094ffc202a1390069ec47f59a3f54293d984d906464ec2834":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/f/fedora-release-32-2.noarch.rpm"},"sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/kbd-2.2.0-1.fc32.x86_64.rpm"},"sha256:a0b87b2dc3c5f536e94d6a4f3563a621dfbc067a62c3d1fe69bdb70c3cecec57":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-pycparser-2.19-2.fc32.noarch.rpm"},"sha256:a107b3d3790a5bcfdc28f6f4718969039b103a681a2647f3cbcb82cf92e97acb":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-pyserial-3.4-7.fc32.noarch.rpm"},"sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/shared-mime-info-1.15-3.fc32.x86_64.rpm"},"sha256:a2ad5970a8d117e9216e2e1e70f8b8247a25dc0a556e5fcba245f73ced3283bf":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libgomp-10.1.1-1.fc32.x86_64.rpm"},"sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm"},"sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm"},"sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libaio-0.3.111-7.fc32.x86_64.rpm"},"sha256:a63900b34fef430d9afa5dcbad6ea8b727f8d2aa730d64ee899e5c298c8278ff":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/s/sssd-client-2.3.0-1.fc32.x86_64.rpm"},"sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch.rpm"},"sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libxml2-2.9.10-3.fc32.x86_64.rpm"},"sha256:a8123a1759678459d974a0f6cace694ebcca37fd0841c84ec99718f0e3a2a2ad":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libsss_idmap-2.3.0-1.fc32.x86_64.rpm"},"sha256:a883c4ecd38b3208be7f52555aa529d746da55488951b5b47e130313b753a8c3":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/s/selinux-policy-targeted-3.14.5-39.fc32.noarch.rpm"},"sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libnghttp2-1.40.0-2.fc32.x86_64.rpm"},"sha256:a95e0092daedde142a4ed2dc6589bd4f4dee36bc69ad982bcb42351f9975c994":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/librepo-1.11.3-1.fc32.x86_64.rpm"},"sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libbrotli-1.0.7-10.fc32.x86_64.rpm"},"sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/o/openldap-2.4.47-4.fc32.x86_64.rpm"},"sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.x86_64.rpm"},"sha256:af88353a1f306849da587aa4c49b1104caff506e84cc6d6805e844c937d37d56":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/c/coreutils-common-8.32-4.fc32.1.x86_64.rpm"},"sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm"},"sha256:affae36e6d8dccdd9048ca24fcc2e87f83f08c27636c1e70f081625f445df320":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libdnf-0.47.0-1.fc32.x86_64.rpm"},"sha256:b079eacd62d18714a20dbaf853e3184f21f1262c8a7f4d4c6de47d66e28ca036":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/o/openssh-8.3p1-1.fc32.x86_64.rpm"},"sha256:b1111e77a5fdbacaa04acc90d3844706158bc5892173862928705620b8910adb":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm"},"sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libcbor-0.5.0-7.fc32.x86_64.rpm"},"sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/n/ncurses-6.1-15.20191109.fc32.x86_64.rpm"},"sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libpcap-1.9.1-3.fc32.x86_64.rpm"},"sha256:b4053e72ef23e59a43b4f77b0f3abeb92c4b72c9df7d4f62572560edfbfa02a4":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libarchive-3.4.3-1.fc32.x86_64.rpm"},"sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libuser-0.62-24.fc32.x86_64.rpm"},"sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libcap-ng-0.7.10-2.fc32.x86_64.rpm"},"sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-5.fc32.x86_64.rpm"},"sha256:b906f2e1a8045b0b895ff0a8196ca41822ba495731338debb6f21129d4bc51c2":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libssh-config-0.9.4-2.fc32.noarch.rpm"},"sha256:bb8942d19e594c0f4ca181bd58796bd5d3cb681c3f17cd2ec2654c3afe28e39a":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-cryptography-2.8-3.fc32.x86_64.rpm"},"sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/i/initscripts-10.02-3.fc32.x86_64.rpm"},"sha256:bcb07748c8688c788ec69c3a33c0abd1bb3a496b9aa09b5729265670bc7ba0eb":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-attrs-19.3.0-2.fc32.noarch.rpm"},"sha256:be1358f7c9accf20d34d468264e88019c9b30a0e77b58726b221c0fcd66560f7":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-3.8.3-1.fc32.x86_64.rpm"},"sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/psmisc-23.3-3.fc32.x86_64.rpm"},"sha256:beaca54bd436c280070054af7343947f739cf8ab8789e955ca9ea1a620950f76":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/o/openssh-server-8.3p1-1.fc32.x86_64.rpm"},"sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/n/nettle-3.5.1-5.fc32.x86_64.rpm"},"sha256:c05d01195aa4ca0f4a471574cc7ece8a0f4daf437935d845cd0745e2512cb9c9":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-markupsafe-1.1.1-5.fc32.x86_64.rpm"},"sha256:c0a0c6f3e30c20815496be8de00f9596737e2693feb85f7484f200ffa9174530":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libpipeline-1.5.2-2.fc32.x86_64.rpm"},"sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/z/zlib-1.2.11-21.fc32.x86_64.rpm"},"sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/device-mapper-1.02.171-1.fc32.x86_64.rpm"},"sha256:c13c7da4b097499576861cb12fdd02e520af69b5f23d615b3968c54f40f8fd47":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-pyyaml-5.3.1-1.fc32.x86_64.rpm"},"sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.x86_64.rpm"},"sha256:c23c45c7d0040856ac295aab919b3953dec18f54c98fcc95775948b283a67656":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/gpgme-1.13.1-7.fc32.x86_64.rpm"},"sha256:c2c4278b5355cd340f349302fd99c88443e4f87d542a210ad52747d773f73bfb":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/f/fedora-release-cloud-32-2.noarch.rpm"},"sha256:c2f7b54f06f9bac66c8f13ed80d217a718670a4fdb10cb44692eeb5426131d6b":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libmodulemd-2.9.3-1.fc32.x86_64.rpm"},"sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dosfstools-4.1-10.fc32.x86_64.rpm"},"sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/a/alternatives-1.11-6.fc32.x86_64.rpm"},"sha256:c6ada06d383423665aa32c638ecdc40c54ee0b1b866c6396f9533d8691ad53e2":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-gpg-1.13.1-7.fc32.x86_64.rpm"},"sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch.rpm"},"sha256:c7e5d5de11d4c791596ca39d1587c50caba0e06f12a7c24c5d40421d291cd661":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/f/findutils-4.7.0-4.fc32.x86_64.rpm"},"sha256:c84a5e00f504e0f60aa02cac7eb5cde57ed7958f2965ea2fce0c7e9cd0ff532b":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-4.15.1-3.fc32.1.x86_64.rpm"},"sha256:c9a3aef41c86259a7bb6dba7febb780737a1237ca8ff1c205797ead5951be712":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/v/vim-minimal-8.2.806-1.fc32.x86_64.rpm"},"sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-26.fc32.x86_64.rpm"},"sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/r/rootfiles-8.1-27.fc32.noarch.rpm"},"sha256:ca540fb7088948fdfe6e6b52a5e2b6a74d2d17136857da9f3f4a1ee29c8eb74b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libdhash-0.5.0-44.fc32.x86_64.rpm"},"sha256:ca80c458fab5bdde0276702f06217d1219085428560af6039aa1c5cf1e58ff3b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/m/man-db-2.9.0-2.fc32.x86_64.rpm"},"sha256:cbdc61d713e4cbe52b2bece117912da0f1e3782cb3b33caa068e96c854c990be":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/grubby-8.40-40.fc32.x86_64.rpm"},"sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm"},"sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-4.fc32.x86_64.rpm"},"sha256:ce1a80b0ba6f09a7e5a188436088dd31d10c5f7b43dbe9c1788f705127c8e6b2":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-44.fc32.x86_64.rpm"},"sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libpsl-0.21.0-4.fc32.x86_64.rpm"},"sha256:cfad2b3209d56d57f624640a06ea70238be35eaa702cd32b81f62a1df83cca14":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/gettext-0.20.2-1.fc32.x86_64.rpm"},"sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm"},"sha256:d0bc781a80be1d1fe204ec6b26255240261d55f6e24a28343572f2221a00533e":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-jwt-1.7.1-7.fc32.noarch.rpm"},"sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/gawk-5.0.1-7.fc32.x86_64.rpm"},"sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/polkit-libs-0.116-7.fc32.x86_64.rpm"},"sha256:d43d17930e5fedbbeb2a45bdbfff713485c6cd01ca6cbb9443370192e73daf40":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libblkid-2.35.2-1.fc32.x86_64.rpm"},"sha256:d46293795b113fe996bebd2056f7b05f187f0bdcd3186b5012a8b8d91846e6c2":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python-unversioned-command-3.8.3-1.fc32.noarch.rpm"},"sha256:d49f0b1c8ecf9bc808ae93e9298a40fbcc124fe67c3bbdd37705b6b5d8cfdd87":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/polkit-0.116-7.fc32.x86_64.rpm"},"sha256:d593124bca390187150aceebd4ce67688d6c22e0294d1ae495d5197dea0b5a16":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/pcre2-10.35-1.fc32.x86_64.rpm"},"sha256:d611f0c4252c4c4b893850807748e62cf4d17d72d544ef2744091df3206d8178":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-requests-2.22.0-8.fc32.noarch.rpm"},"sha256:d732c7bdc86058b34d37450ddcca4ab4eeebd305320d3c9fa2dc432abd83d5a9":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-jinja2-2.11.2-1.fc32.noarch.rpm"},"sha256:d7961e92751ef2e208e634b75fdeee407532f04c161b9ec0bef27bf7704758ce":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/grub2-tools-minimal-2.04-19.fc32.x86_64.rpm"},"sha256:d7a895002e2291f776c8bf40dc99848105ca8c8e1651ba4692cc44ab838bc0a1":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libfdisk-2.35.2-1.fc32.x86_64.rpm"},"sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-8.fc32.noarch.rpm"},"sha256:da3a9847d09f807ea1dbf3e7c3f28e1fb0a8c22e372050efa70250350a792600":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libsss_autofs-2.3.0-1.fc32.x86_64.rpm"},"sha256:dab54013f8316b766c40c71f9c0c2124c1f0c219b417d588b5ba1dccf7d63fd7":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libtevent-0.10.2-2.fc32.x86_64.rpm"},"sha256:dbcf6ba5f6ab0cdc884572f07427114b8492d453420a80ffd521578a752b8064":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/syslinux-6.04-0.13.fc32.x86_64.rpm"},"sha256:dc2558fdefc439075ebdf57bd9f2f691d6a6f278879713f2e093398dcb62c25a":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/syslinux-nonlinux-6.04-0.13.fc32.noarch.rpm"},"sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/glibc-2.31-2.fc32.x86_64.rpm"},"sha256:dd35afac4bd8b91e9db66da79690d4cc0a431a29eacef33380f0e4643364f3aa":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libmaxminddb-1.4.2-1.fc32.x86_64.rpm"},"sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/p11-kit-0.23.20-1.fc32.x86_64.rpm"},"sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/h/hostname-3.23-2.fc32.x86_64.rpm"},"sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libseccomp-2.4.2-3.fc32.x86_64.rpm"},"sha256:df3f5d6c41e2be1f4fb2b5a58e70833b414d307bbe85709f2636f0c464499ec5":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/t/tzdata-2020a-1.fc32.noarch.rpm"},"sha256:e058893d6de91ec7c268bc59c3eb332957b9c2133b5b395943e14a14ed92548d":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/c/console-login-helper-messages-motdgen-0.18.1-1.fc32.noarch.rpm"},"sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/f/file-libs-5.38-2.fc32.x86_64.rpm"},"sha256:e20984afd6d2aa8b76c157b55c6ffad65566c15b29646c8636f26b7bbabd5e50":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libcomps-0.1.15-1.fc32.x86_64.rpm"},"sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/k/krb5-libs-1.18-1.fc32.x86_64.rpm"},"sha256:e3175d0dba977f1cff702498ea68cc13134a0f525a869025e2ee3ede987d7867":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/x/xfsprogs-5.4.0-3.fc32.x86_64.rpm"},"sha256:e46edb66c422a6878b1f77777f04544a9174521f3eaac3b4c55ff0583938dd15":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/f/fedora-gpg-keys-32-2.noarch.rpm"},"sha256:e48ec5686644366c7388f7068f93f1d86f9657a66a7cab5bfeef774ad81b3c94":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libsss_nss_idmap-2.3.0-1.fc32.x86_64.rpm"},"sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/sudo-1.9.0-0.1.b4.fc32.x86_64.rpm"},"sha256:e6530742863132f93dd090c7b8009f6e17a3dc56d5862a97f5518d7f27cf783d":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/m/mpfr-4.0.2-4.fc32.x86_64.rpm"},"sha256:e795bb396d986aadb61199f2c8f1b411f99d3b4e4ee919367305dadea585f9a2":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/c/console-login-helper-messages-profile-0.18.1-1.fc32.noarch.rpm"},"sha256:e7b9fd73c260cd22d3a36823530d4f623ea0e16844b900a5677c769afa76341c":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-chardet-3.0.4-15.fc32.noarch.rpm"},"sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/glibc-common-2.31-2.fc32.x86_64.rpm"},"sha256:ea6910a5b20bc1db78688d16425eb97a82960996dcde565cbc66098bbbd77847":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/r/rpm-build-libs-4.15.1-3.fc32.1.x86_64.rpm"},"sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.x86_64.rpm"},"sha256:eb9f0657a88801f28eb2309b7d046ab0cc1176cd8bb6c21175ef1de183d4b9e7":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-libdnf-0.47.0-1.fc32.x86_64.rpm"},"sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm"},"sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.x86_64.rpm"},"sha256:ecb8a942ab85ec5a1ff1a9ec652a104e6aca0283475821000fc1cb719c783589":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/d/dnf-data-4.2.21-1.fc32.noarch.rpm"},"sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/d/dbus-1.12.16-4.fc32.x86_64.rpm"},"sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libverto-0.3.0-9.fc32.x86_64.rpm"},"sha256:ee9fb01963d4192f679883a74588d2e0dba0e5f2c53e4181455b610f5fac672d":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/k/kpartx-0.8.2-4.fc32.x86_64.rpm"},"sha256:f00b659341553c1e3c121b71fc4334fc6468b393bf3e0c3b7e90e75cffbf4a8e":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/c/crypto-policies-20200527-1.gitb234a47.fc32.noarch.rpm"},"sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/a/audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm"},"sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.x86_64.rpm"},"sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/r/readline-8.0-4.fc32.x86_64.rpm"},"sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-7.fc32.x86_64.rpm"},"sha256:f463968cf5f6f7df198f4775b7ef658cfcdf72f9f9b87e497646eaf968b6372a":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/e/elfutils-debuginfod-client-0.179-2.fc32.x86_64.rpm"},"sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/i/iptables-libs-1.8.4-7.fc32.x86_64.rpm"},"sha256:f6203a41ed91197bb770a38a101d977f0f56de86ccc5a71cee9c0e198f26bcbc":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-ply-3.11-7.fc32.noarch.rpm"},"sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-libselinux-3.0-3.fc32.x86_64.rpm"},"sha256:f80935f69caf21b67bc50deab4db4478a3cba4997dc65286349426bfbb7223b2":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/p/python3-hawkey-0.47.0-1.fc32.x86_64.rpm"},"sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libacl-2.2.53-5.fc32.x86_64.rpm"},"sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libutempter-1.1.6-18.fc32.x86_64.rpm"},"sha256:fa5746133a0e03485cb74ed5747010e19817f890ed538971fb6d6d47fd21eecd":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/f/fedora-repos-32-2.noarch.rpm"},"sha256:fa791a4328b4c41b7190d862de921605f266a64abee03b2ea2e8d2b644be307f":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/p/python3-pysocks-1.7.1-4.fc32.noarch.rpm"},"sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libunistring-0.9.10-7.fc32.x86_64.rpm"},"sha256:fb83e33ef9fbe36a185caab7c686735578f5e1d24f0088834fedb64dda77bbb2":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/i/iputils-20190515-7.fc32.x86_64.rpm"},"sha256:fbabd02b2ab3aecfdfa7484fefb8190bf134e615ddd8ce1d38e27a5907b50a40":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/g/grub2-pc-modules-2.04-19.fc32.noarch.rpm"},"sha256:fc84fd1569f0ff7d2202369fedf6aeb5ac1d3239e2323c1fe373ddc696540470":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libldb-2.1.3-1.fc32.x86_64.rpm"},"sha256:fd4404aec80bb4fa767f4fcc686a37b0cc406e766c9b3704c1b481d648c76c1a":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/o/openssl-pkcs11-0.4.10-6.fc32.x86_64.rpm"},"sha256:fdf652eae6502ff726fc3b532348ebe59dccb16e0629331371ff83e309b259af":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/cloud-utils-growpart-0.31-6.fc32.noarch.rpm"},"sha256:fed6244fce0c0b48933d622dfbb00cf73931b2f746b27675a025a33b591d9820":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/l/libini_config-1.3.1-44.fc32.x86_64.rpm"},"sha256:fef247293abdc1cc22766e19bc55829240f36531dcfa0168410bec60595f7b8a":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/k/kernel-core-5.6.14-300.fc32.x86_64.rpm"},"sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.x86_64.rpm"},"sha256:ff1546cec9a7487b81e58e8604feb080eddd484ffd1a1f187865467d28850e81":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/l/libreport-filesystem-2.13.1-4.fc32.noarch.rpm"},"sha256:ffaa05614a9c419fe0ade73fa572f58d51bcd1a0f3f5c8ab4d6757e70e97fa36":{"url":"https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/updates/32/Everything/x86_64/Packages/o/openssl-libs-1.1.1g-1.fc32.x86_64.rpm"},"sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61":{"url":"https://mirrors.dotsrc.org/fedora-buffet/fedora/linux/releases/32/Everything/x86_64/os/Packages/s/sed-4.5-5.fc32.x86_64.rpm"}}}},"pipeline":{"build":{"pipeline":{"stages":[{"name":"org.osbuild.rpm","options":{"gpgkeys":["-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n","-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n","-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n","-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n"],"packages":["sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b","sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c","sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96","sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce","sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975","sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0","sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4","sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d","sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829","sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5","sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1","sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740","sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6","sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940","sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960","sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8","sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4","sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949","sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b","sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec","sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79","sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99","sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e","sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9","sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4","sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5","sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4","sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2","sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32","sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836","sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5","sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe","sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00","sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9","sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095","sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85","sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf","sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48","sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813","sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248","sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b","sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22","sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd","sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2","sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d","sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b","sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4","sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886","sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b","sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88","sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c","sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7","sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314","sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896","sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4","sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa","sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe","sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab","sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401","sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c","sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278","sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2","sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e","sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b","sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe","sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9","sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f","sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6","sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b","sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825","sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9","sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f","sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923","sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf","sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb","sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590","sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438","sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa","sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf","sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927","sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8","sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6","sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c","sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844","sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a","sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60","sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e","sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1","sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986","sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886","sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6","sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1","sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102","sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659","sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464","sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466","sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875","sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59","sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d","sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b","sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e","sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec","sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808","sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939","sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899","sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604","sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4","sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569","sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5","sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee","sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb","sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9","sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9","sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8","sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61","sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280","sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9","sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103","sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973","sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9","sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db","sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3","sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd","sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5","sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b","sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1","sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff","sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b","sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61","sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b","sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647","sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c","sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338","sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9","sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80","sha256:5b7e8c9fc5f038530130a02af79ed7dbbc34804b22338edf9f16354818d04351","sha256:af88353a1f306849da587aa4c49b1104caff506e84cc6d6805e844c937d37d56","sha256:f00b659341553c1e3c121b71fc4334fc6468b393bf3e0c3b7e90e75cffbf4a8e","sha256:7cca8885c45a4f801cb78c42597ddd35bb44c68c9181fbc7cb3f94bce320ec5c","sha256:7c5b1d5e9099b5314698573f542e88810b2571a05c5e25b3291d7d8d379f93ed","sha256:4158624697b461fbcb28b325922445a7c164d72723c4c9975f6bc3a9d2dd3f3a","sha256:02de6f2778310a36a3e4dfd47f9c35c67140e77c4142371ae126f6478cdf46be","sha256:ecb8a942ab85ec5a1ff1a9ec652a104e6aca0283475821000fc1cb719c783589","sha256:f463968cf5f6f7df198f4775b7ef658cfcdf72f9f9b87e497646eaf968b6372a","sha256:6fc3d1a25b34a2d434b3481331359175cec06f115d63db3299ade82609cb278d","sha256:417dab5baecca2da19780bdc1098e0f09bad94c1dc4c31ad7f123a96ec01ce1f","sha256:6fac977d63ca18d28a1fba1b0a9fe24b6973fbc3c5aace97091f401fe57cce9a","sha256:e46edb66c422a6878b1f77777f04544a9174521f3eaac3b4c55ff0583938dd15","sha256:a01c177ed13a098094ffc202a1390069ec47f59a3f54293d984d906464ec2834","sha256:51a1a7b6eb8b1e9158ef775e4087836349d0012fd5ec46e082deaa8367400353","sha256:fa5746133a0e03485cb74ed5747010e19817f890ed538971fb6d6d47fd21eecd","sha256:c7e5d5de11d4c791596ca39d1587c50caba0e06f12a7c24c5d40421d291cd661","sha256:cfad2b3209d56d57f624640a06ea70238be35eaa702cd32b81f62a1df83cca14","sha256:1bb8798507c8999d4f59465527bdcf64b95266f6e885f84e0253117dc146d83a","sha256:4eb5b62f33ac69aeddad8b0cc017d6cef909d8b8ffd45cd833d43044d115ce67","sha256:88c92b121d4cec2a457772ef54270f07b3e755ece739a2fdbc446ffd08f21f00","sha256:1f5c2af3943f9212b8ecd8349c76908047594b44ffa670d833899826c3a83441","sha256:9f453039643c37e6b71f93d7d65a821bdd8939791ab5a52a376751a63229ab39","sha256:c23c45c7d0040856ac295aab919b3953dec18f54c98fcc95775948b283a67656","sha256:0ee42cf758be23b9e87406e99969e9a1693b5e01adb1d67b7823eb82e5b7025d","sha256:419e497c76ba728fe8eeb254bf3ff2e22bcd3e3480a0215b286dbeb019caf398","sha256:fbabd02b2ab3aecfdfa7484fefb8190bf134e615ddd8ce1d38e27a5907b50a40","sha256:6a59645a1336fcfed2c045e1cd7fc8969e1727b28b5b8dcf35c69bdef7c4d0a4","sha256:d7961e92751ef2e208e634b75fdeee407532f04c161b9ec0bef27bf7704758ce","sha256:56ecdfc358f2149bc9f6fd38161d33fe45177c11059fd813143c8d314b1019fc","sha256:ee9fb01963d4192f679883a74588d2e0dba0e5f2c53e4181455b610f5fac672d","sha256:b4053e72ef23e59a43b4f77b0f3abeb92c4b72c9df7d4f62572560edfbfa02a4","sha256:d43d17930e5fedbbeb2a45bdbfff713485c6cd01ca6cbb9443370192e73daf40","sha256:e20984afd6d2aa8b76c157b55c6ffad65566c15b29646c8636f26b7bbabd5e50","sha256:7e1ebb8cb74f5a1675085d6067c87ab4f1f9d21e1974d219f9d48fc468e2a7c5","sha256:affae36e6d8dccdd9048ca24fcc2e87f83f08c27636c1e70f081625f445df320","sha256:d7a895002e2291f776c8bf40dc99848105ca8c8e1651ba4692cc44ab838bc0a1","sha256:495db9bd35d0631b2813ba2b8f10b284be56b2f23e56123674857e6d7e9853cf","sha256:a2ad5970a8d117e9216e2e1e70f8b8247a25dc0a556e5fcba245f73ced3283bf","sha256:c2f7b54f06f9bac66c8f13ed80d217a718670a4fdb10cb44692eeb5426131d6b","sha256:2c8e76fcc1ad8197ffdb66d06fb498a1129e71e0f7c04a05176867e5788bbf05","sha256:a95e0092daedde142a4ed2dc6589bd4f4dee36bc69ad982bcb42351f9975c994","sha256:ff1546cec9a7487b81e58e8604feb080eddd484ffd1a1f187865467d28850e81","sha256:01705d02dcf229b9b69ce8e97c81346a9c0e444ee07c43681895294577281775","sha256:82a0c6703444fa28ab032b3e4aa355deabff92f3f39d5490faa5c9b9150eaceb","sha256:50308833a750fcba4422052e5dd6f72a4691340813c803ef157283621ed35215","sha256:2c68b021959911bd946c5d43d3c6ebdf3dcae378e4ee1e68f98780b94616cc87","sha256:b906f2e1a8045b0b895ff0a8196ca41822ba495731338debb6f21129d4bc51c2","sha256:2b6853be09f6155dbbddfb25c9bd65d289493f9d1f51c891b4539b9245739dd0","sha256:26fa850e30bf0ea42b3d8a573ed58b62eeeaec754a051eaea3e768e29673144d","sha256:4929636a918bb0af18de939fabd41b4e998dfd3aeb3693a02d7b05377bc0f18f","sha256:20ad2f907034a1c3e76dd4691886223bf588ff946fd57545ecdfcd58bc4c3b4b","sha256:5d43a1d2f9d3e3e1e0d6c3cc09bf2850a689b226bbf2c200abb5d0aebc351455","sha256:5978ef81620bea4c5634d5ea93f162e61a83aabeeab35f29e8506ea66bb016ad","sha256:1a19c6f772fe9d1e339333639756d28fbc33d552b6ac734510291fd22a88a6a5","sha256:e6530742863132f93dd090c7b8009f6e17a3dc56d5862a97f5518d7f27cf783d","sha256:2ad9ccdab138ec355fe3132dbcaa381491b80949841000e764f17945753fc77a","sha256:ffaa05614a9c419fe0ade73fa572f58d51bcd1a0f3f5c8ab4d6757e70e97fa36","sha256:fd4404aec80bb4fa767f4fcc686a37b0cc406e766c9b3704c1b481d648c76c1a","sha256:d593124bca390187150aceebd4ce67688d6c22e0294d1ae495d5197dea0b5a16","sha256:860a309d10907bc4735c8af1513bc2f29633df73ab9a00c585ec994ec23f7f90","sha256:9ebb22c37f0f44203bc579625757b18cbf7dd751de2959d3a4235f56d4b748ad","sha256:d46293795b113fe996bebd2056f7b05f187f0bdcd3186b5012a8b8d91846e6c2","sha256:be1358f7c9accf20d34d468264e88019c9b30a0e77b58726b221c0fcd66560f7","sha256:9dbf41afbd3b67340971e5b4fc61ccd2358f045019915d97d3fbc5bc6541fe0e","sha256:c6ada06d383423665aa32c638ecdc40c54ee0b1b866c6396f9533d8691ad53e2","sha256:f80935f69caf21b67bc50deab4db4478a3cba4997dc65286349426bfbb7223b2","sha256:28fd8db75d20cf14174cad3a5c2cd740d899ee2a064c48b892981b154e94a4d0","sha256:eb9f0657a88801f28eb2309b7d046ab0cc1176cd8bb6c21175ef1de183d4b9e7","sha256:47c21130eb66c93ffc5c9528606d4c02ce5d9cdeb784baa031cb98e7ddbac9c3","sha256:4296471e898b26f01fcf2b420728e39e8f50f0015f7e7c686807a6e86efc69a1","sha256:95a13407e6f4c40c731655053e99f955fd56f66fafadd5f7f0e7c04fa58ffe8b","sha256:1ec0d908c774fa4efa15029e21d9d160e24e10b040357d64b4224e90b3b7d3c2","sha256:c84a5e00f504e0f60aa02cac7eb5cde57ed7958f2965ea2fce0c7e9cd0ff532b","sha256:ea6910a5b20bc1db78688d16425eb97a82960996dcde565cbc66098bbbd77847","sha256:506b1d8ba1f1fbf138a94de6a1705da12360c81e6797cb60df488c87e9a366fe","sha256:2bbe073544977e15c66507fb382b46349f46f773365511aba63353014f17dd28","sha256:7c2b9d82983189251cbe90d0debb6c0938d9a4f484332405b8d3582a618a0ccb","sha256:df3f5d6c41e2be1f4fb2b5a58e70833b414d307bbe85709f2636f0c464499ec5","sha256:463d8259936601d23a02c407a4fb294c0e3bc9a213282c4525137bc1b18bbf6b","sha256:4d80736f9a52519104eeb228eb1ea95d0d6e9addc766eebacc9a5137fb2a5977"]}}]},"runner":"org.osbuild.fedora32"},"stages":[{"name":"org.osbuild.rpm","options":{"gpgkeys":["-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n","-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n","-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n","-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n"],"packages":["sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b","sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c","sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d","sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96","sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce","sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975","sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0","sha256:46407b730b272223b8b64d12df0725af571b4a5c5ab89b9f41e12a49e07c6e6b","sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4","sha256:703fb5ca1651bb72d8ab58576ce3d78c9479cbb2e78ff8666ae3a3d1cd9bb0da","sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57","sha256:1e1e9900e9d3a2b8eb6684060672526948df2cb9f751e7d72cb4fa5bffe71747","sha256:fdf652eae6502ff726fc3b532348ebe59dccb16e0629331371ff83e309b259af","sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309","sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56","sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280","sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d","sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829","sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5","sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1","sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740","sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6","sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940","sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960","sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315","sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8","sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4","sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949","sha256:8c047278ce11e7ba7169a9c9537c3c6544f52c7eee8754179acd839ed59c028f","sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013","sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b","sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79","sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73","sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99","sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e","sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9","sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4","sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5","sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4","sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012","sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2","sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32","sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836","sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3","sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f","sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5","sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00","sha256:24520e03276e0d850169efc9d83b12a9a01eee5d7202dadca12d2e0a8b7352ba","sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9","sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095","sha256:808e7209893298d11ac27f148c1b3d1a2b28e303e7930b43659a08dc0f660ac4","sha256:cbdc61d713e4cbe52b2bece117912da0f1e3782cb3b33caa068e96c854c990be","sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85","sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823","sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf","sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339","sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684","sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae","sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48","sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8","sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813","sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248","sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b","sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22","sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd","sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2","sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d","sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0","sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389","sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca","sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884","sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b","sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886","sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b","sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88","sha256:26cca773f1f258105f0f825a8e0faebcaa183655b5d91cd972afbe791b586478","sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c","sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7","sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314","sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5","sha256:9d4691918d7add910e8c03d61cccda0316b62d77b30ac2e502cf2e55289d1823","sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896","sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4","sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa","sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe","sha256:ca540fb7088948fdfe6e6b52a5e2b6a74d2d17136857da9f3f4a1ee29c8eb74b","sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09","sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab","sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401","sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c","sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278","sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2","sha256:fed6244fce0c0b48933d622dfbb00cf73931b2f746b27675a025a33b591d9820","sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e","sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b","sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe","sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9","sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f","sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f","sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6","sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b","sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825","sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1","sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9","sha256:ce1a80b0ba6f09a7e5a188436088dd31d10c5f7b43dbe9c1788f705127c8e6b2","sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f","sha256:c0a0c6f3e30c20815496be8de00f9596737e2693feb85f7484f200ffa9174530","sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923","sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf","sha256:6fc1181ed798617668f195579acfcf8fb212513a776f376eecfb3d086c66b2d9","sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb","sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590","sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438","sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa","sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf","sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927","sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8","sha256:16702883a79532a400d7304146cdb47b0599983b9fb48ab918ef9fa1ce0be394","sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6","sha256:36778f8a4fa111c4f796bbea8fd52f7b9708de8f4351070faa30bc985db59885","sha256:dab54013f8316b766c40c71f9c0c2124c1f0c219b417d588b5ba1dccf7d63fd7","sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c","sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844","sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975","sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a","sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60","sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e","sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1","sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986","sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467","sha256:25ae9056f75df4efff0d17d916e7c3889c421368613acec7f1c4119bd17eac13","sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886","sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6","sha256:ca80c458fab5bdde0276702f06217d1219085428560af6039aa1c5cf1e58ff3b","sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1","sha256:80cf220a3314f965c088e03d2b750426767db0b36b6b7c5e8059b9217ff4de6d","sha256:280b880de2f5c6bbd8e000c63dff495533925893ef02cc599222cdb3c7586a22","sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102","sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659","sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464","sha256:924367aa63693da4660dcb806fbf52b3bcb7c4d12b40c4b4ba6329079936d073","sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466","sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875","sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59","sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d","sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b","sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e","sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec","sha256:4b9da0cedada16eb80a2d66b86aa62c9b026501e13a3e947a5a03a06f41d9dbb","sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719","sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808","sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939","sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899","sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604","sha256:d49f0b1c8ecf9bc808ae93e9298a40fbcc124fe67c3bbdd37705b6b5d8cfdd87","sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386","sha256:7c7eff31251dedcc3285a8b08c1b18f7fd9ee2e07dff86ad090f45a81e19e85e","sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4","sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569","sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444","sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5","sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee","sha256:bcb07748c8688c788ec69c3a33c0abd1bb3a496b9aa09b5729265670bc7ba0eb","sha256:b1111e77a5fdbacaa04acc90d3844706158bc5892173862928705620b8910adb","sha256:5719dd2fb399cadec08b4ac41c794239d2a2de2f012faeb970ab90a07bba0084","sha256:7124f9fedc862e3bab80f05b804b6c9580603ce3155727e888646d4d4f5ddc50","sha256:e7b9fd73c260cd22d3a36823530d4f623ea0e16844b900a5677c769afa76341c","sha256:81b6181b947d50e0a1ea681298417e552421d6714900d07a34dc25899e5c9f60","sha256:bb8942d19e594c0f4ca181bd58796bd5d3cb681c3f17cd2ec2654c3afe28e39a","sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862","sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070","sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4","sha256:61c51596cc97f35177efe8dc5e2ca52d8fd528570f33c184497f419259b73c90","sha256:4c9d77d63ddc7dda0e018fc1c97d46025794e336e58d838a631fcc130dfa3b9b","sha256:6615aae3def0c49910e43e2d69f7ae8852694953dceb4b6235b5cf4099296d70","sha256:6890a9545194ad6cf1b0c58e5273132171a9ced9cb665a1442aa62b6b6d3d2ea","sha256:d0bc781a80be1d1fe204ec6b26255240261d55f6e24a28343572f2221a00533e","sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124","sha256:55bafcdf9c31b1456af3bf584bfe7ac745a03f4decd17197ea97b498d68b3b82","sha256:c05d01195aa4ca0f4a471574cc7ece8a0f4daf437935d845cd0745e2512cb9c9","sha256:391faab010ca30610a14e0b3d54fbc0331be39bc831086fb877f8021fe4b171f","sha256:f6203a41ed91197bb770a38a101d977f0f56de86ccc5a71cee9c0e198f26bcbc","sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2","sha256:4860a733ca3f22089c6c283cbdcf53123a702d60b5bffdd4fe9d76826f91139a","sha256:a0b87b2dc3c5f536e94d6a4f3563a621dfbc067a62c3d1fe69bdb70c3cecec57","sha256:a107b3d3790a5bcfdc28f6f4718969039b103a681a2647f3cbcb82cf92e97acb","sha256:fa791a4328b4c41b7190d862de921605f266a64abee03b2ea2e8d2b644be307f","sha256:c13c7da4b097499576861cb12fdd02e520af69b5f23d615b3968c54f40f8fd47","sha256:d611f0c4252c4c4b893850807748e62cf4d17d72d544ef2744091df3206d8178","sha256:6f5f53b66f7c3bf6958f6f163788583265ff0360188620c3b0f7ddedeac3d1f4","sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb","sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f","sha256:3882823d0eb18e0e8146584f4a32a4801961f6fdc09075607746317eba3265be","sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9","sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8","sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58","sha256:024dd8a75eb5472692d0291292d25939b97a0295e5ab0958dcd22600d392eaae","sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61","sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280","sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9","sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103","sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973","sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b","sha256:dbcf6ba5f6ab0cdc884572f07427114b8492d453420a80ffd521578a752b8064","sha256:78de81d45789ae9bccf6dd82f2b2835ac868f1a584e05d0e9f89f40bb4a202c7","sha256:4e066ace8364aba9311fa74f4a87c21f98091bc1af5a6a4daa06441469234041","sha256:dc2558fdefc439075ebdf57bd9f2f691d6a6f278879713f2e093398dcb62c25a","sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9","sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db","sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3","sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd","sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5","sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b","sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1","sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff","sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b","sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61","sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b","sha256:e3175d0dba977f1cff702498ea68cc13134a0f525a869025e2ee3ede987d7867","sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647","sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c","sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338","sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9","sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80","sha256:1ec745d027098ff44efd29e56c03801be3f2dd7c1e1b9e23388d0916e340593e","sha256:9f179bd9e552ee6cb2e6e9b638a53161709441e42ff3dfad56856470fd3117e8","sha256:223ed731b03d273f2e7f36528ea10804d2b05e4ead7613d69dc9cdb1542a33be","sha256:0c84ca581adcd4ce0d258ad78b29bf08f3f9d7135c69d85be96167c4df5cface","sha256:e058893d6de91ec7c268bc59c3eb332957b9c2133b5b395943e14a14ed92548d","sha256:e795bb396d986aadb61199f2c8f1b411f99d3b4e4ee919367305dadea585f9a2","sha256:5b7e8c9fc5f038530130a02af79ed7dbbc34804b22338edf9f16354818d04351","sha256:af88353a1f306849da587aa4c49b1104caff506e84cc6d6805e844c937d37d56","sha256:f00b659341553c1e3c121b71fc4334fc6468b393bf3e0c3b7e90e75cffbf4a8e","sha256:7cca8885c45a4f801cb78c42597ddd35bb44c68c9181fbc7cb3f94bce320ec5c","sha256:7c5b1d5e9099b5314698573f542e88810b2571a05c5e25b3291d7d8d379f93ed","sha256:4158624697b461fbcb28b325922445a7c164d72723c4c9975f6bc3a9d2dd3f3a","sha256:02de6f2778310a36a3e4dfd47f9c35c67140e77c4142371ae126f6478cdf46be","sha256:ecb8a942ab85ec5a1ff1a9ec652a104e6aca0283475821000fc1cb719c783589","sha256:3ff527ad844ae60ef49d79a420dfec69b20d01187218c831f43814779d568ac1","sha256:f463968cf5f6f7df198f4775b7ef658cfcdf72f9f9b87e497646eaf968b6372a","sha256:6fc3d1a25b34a2d434b3481331359175cec06f115d63db3299ade82609cb278d","sha256:417dab5baecca2da19780bdc1098e0f09bad94c1dc4c31ad7f123a96ec01ce1f","sha256:6fac977d63ca18d28a1fba1b0a9fe24b6973fbc3c5aace97091f401fe57cce9a","sha256:e46edb66c422a6878b1f77777f04544a9174521f3eaac3b4c55ff0583938dd15","sha256:c2c4278b5355cd340f349302fd99c88443e4f87d542a210ad52747d773f73bfb","sha256:51a1a7b6eb8b1e9158ef775e4087836349d0012fd5ec46e082deaa8367400353","sha256:fa5746133a0e03485cb74ed5747010e19817f890ed538971fb6d6d47fd21eecd","sha256:c7e5d5de11d4c791596ca39d1587c50caba0e06f12a7c24c5d40421d291cd661","sha256:cfad2b3209d56d57f624640a06ea70238be35eaa702cd32b81f62a1df83cca14","sha256:1bb8798507c8999d4f59465527bdcf64b95266f6e885f84e0253117dc146d83a","sha256:4eb5b62f33ac69aeddad8b0cc017d6cef909d8b8ffd45cd833d43044d115ce67","sha256:88c92b121d4cec2a457772ef54270f07b3e755ece739a2fdbc446ffd08f21f00","sha256:1f5c2af3943f9212b8ecd8349c76908047594b44ffa670d833899826c3a83441","sha256:9f453039643c37e6b71f93d7d65a821bdd8939791ab5a52a376751a63229ab39","sha256:c23c45c7d0040856ac295aab919b3953dec18f54c98fcc95775948b283a67656","sha256:0ee42cf758be23b9e87406e99969e9a1693b5e01adb1d67b7823eb82e5b7025d","sha256:419e497c76ba728fe8eeb254bf3ff2e22bcd3e3480a0215b286dbeb019caf398","sha256:fbabd02b2ab3aecfdfa7484fefb8190bf134e615ddd8ce1d38e27a5907b50a40","sha256:6a59645a1336fcfed2c045e1cd7fc8969e1727b28b5b8dcf35c69bdef7c4d0a4","sha256:d7961e92751ef2e208e634b75fdeee407532f04c161b9ec0bef27bf7704758ce","sha256:287e95efe7718018c583b49892b89257f2dec97e0a144ffb4ea0863865a0a926","sha256:fb83e33ef9fbe36a185caab7c686735578f5e1d24f0088834fedb64dda77bbb2","sha256:56ecdfc358f2149bc9f6fd38161d33fe45177c11059fd813143c8d314b1019fc","sha256:fef247293abdc1cc22766e19bc55829240f36531dcfa0168410bec60595f7b8a","sha256:ee9fb01963d4192f679883a74588d2e0dba0e5f2c53e4181455b610f5fac672d","sha256:b4053e72ef23e59a43b4f77b0f3abeb92c4b72c9df7d4f62572560edfbfa02a4","sha256:d43d17930e5fedbbeb2a45bdbfff713485c6cd01ca6cbb9443370192e73daf40","sha256:e20984afd6d2aa8b76c157b55c6ffad65566c15b29646c8636f26b7bbabd5e50","sha256:7e1ebb8cb74f5a1675085d6067c87ab4f1f9d21e1974d219f9d48fc468e2a7c5","sha256:affae36e6d8dccdd9048ca24fcc2e87f83f08c27636c1e70f081625f445df320","sha256:d7a895002e2291f776c8bf40dc99848105ca8c8e1651ba4692cc44ab838bc0a1","sha256:5e74c26703101a54a70deb68b7e24092f35338c142862933f650776290c5d87f","sha256:495db9bd35d0631b2813ba2b8f10b284be56b2f23e56123674857e6d7e9853cf","sha256:a2ad5970a8d117e9216e2e1e70f8b8247a25dc0a556e5fcba245f73ced3283bf","sha256:fc84fd1569f0ff7d2202369fedf6aeb5ac1d3239e2323c1fe373ddc696540470","sha256:dd35afac4bd8b91e9db66da79690d4cc0a431a29eacef33380f0e4643364f3aa","sha256:c2f7b54f06f9bac66c8f13ed80d217a718670a4fdb10cb44692eeb5426131d6b","sha256:2c8e76fcc1ad8197ffdb66d06fb498a1129e71e0f7c04a05176867e5788bbf05","sha256:0d4393708282029b372343241060b3916b31e991b18b93d7c9d002d4438f1a9c","sha256:a95e0092daedde142a4ed2dc6589bd4f4dee36bc69ad982bcb42351f9975c994","sha256:ff1546cec9a7487b81e58e8604feb080eddd484ffd1a1f187865467d28850e81","sha256:01705d02dcf229b9b69ce8e97c81346a9c0e444ee07c43681895294577281775","sha256:82a0c6703444fa28ab032b3e4aa355deabff92f3f39d5490faa5c9b9150eaceb","sha256:50308833a750fcba4422052e5dd6f72a4691340813c803ef157283621ed35215","sha256:2c68b021959911bd946c5d43d3c6ebdf3dcae378e4ee1e68f98780b94616cc87","sha256:b906f2e1a8045b0b895ff0a8196ca41822ba495731338debb6f21129d4bc51c2","sha256:da3a9847d09f807ea1dbf3e7c3f28e1fb0a8c22e372050efa70250350a792600","sha256:0079ca4f9bd2df6d8dd84d9ec6a0250bb32c64b8abf5785a2889d1ad7eabc90d","sha256:a8123a1759678459d974a0f6cace694ebcca37fd0841c84ec99718f0e3a2a2ad","sha256:e48ec5686644366c7388f7068f93f1d86f9657a66a7cab5bfeef774ad81b3c94","sha256:782953e28d5a059ca6592732e99cd3113db10e2a7ca78a44470e6ebc66f316fa","sha256:2b6853be09f6155dbbddfb25c9bd65d289493f9d1f51c891b4539b9245739dd0","sha256:26fa850e30bf0ea42b3d8a573ed58b62eeeaec754a051eaea3e768e29673144d","sha256:4929636a918bb0af18de939fabd41b4e998dfd3aeb3693a02d7b05377bc0f18f","sha256:20ad2f907034a1c3e76dd4691886223bf588ff946fd57545ecdfcd58bc4c3b4b","sha256:5d43a1d2f9d3e3e1e0d6c3cc09bf2850a689b226bbf2c200abb5d0aebc351455","sha256:5978ef81620bea4c5634d5ea93f162e61a83aabeeab35f29e8506ea66bb016ad","sha256:1a19c6f772fe9d1e339333639756d28fbc33d552b6ac734510291fd22a88a6a5","sha256:860db405a0e85d81f1fa5450a8b05dab7e170920231c812caae3a48b4fc87e48","sha256:7705a532986761cae92684e2dc9012ba37f10891c46096c57f2628be2b82d106","sha256:e6530742863132f93dd090c7b8009f6e17a3dc56d5862a97f5518d7f27cf783d","sha256:b079eacd62d18714a20dbaf853e3184f21f1262c8a7f4d4c6de47d66e28ca036","sha256:19b0dec8fce924341e35a9165bcc384843a77498db5ca435521b12212233adf2","sha256:beaca54bd436c280070054af7343947f739cf8ab8789e955ca9ea1a620950f76","sha256:2ad9ccdab138ec355fe3132dbcaa381491b80949841000e764f17945753fc77a","sha256:ffaa05614a9c419fe0ade73fa572f58d51bcd1a0f3f5c8ab4d6757e70e97fa36","sha256:fd4404aec80bb4fa767f4fcc686a37b0cc406e766c9b3704c1b481d648c76c1a","sha256:d593124bca390187150aceebd4ce67688d6c22e0294d1ae495d5197dea0b5a16","sha256:860a309d10907bc4735c8af1513bc2f29633df73ab9a00c585ec994ec23f7f90","sha256:9ebb22c37f0f44203bc579625757b18cbf7dd751de2959d3a4235f56d4b748ad","sha256:d46293795b113fe996bebd2056f7b05f187f0bdcd3186b5012a8b8d91846e6c2","sha256:be1358f7c9accf20d34d468264e88019c9b30a0e77b58726b221c0fcd66560f7","sha256:9dbf41afbd3b67340971e5b4fc61ccd2358f045019915d97d3fbc5bc6541fe0e","sha256:6baf7b9b0d84b51cf059d00ab923ed763e804136c1b1098128be8396a72f548e","sha256:c6ada06d383423665aa32c638ecdc40c54ee0b1b866c6396f9533d8691ad53e2","sha256:f80935f69caf21b67bc50deab4db4478a3cba4997dc65286349426bfbb7223b2","sha256:d732c7bdc86058b34d37450ddcca4ab4eeebd305320d3c9fa2dc432abd83d5a9","sha256:28fd8db75d20cf14174cad3a5c2cd740d899ee2a064c48b892981b154e94a4d0","sha256:eb9f0657a88801f28eb2309b7d046ab0cc1176cd8bb6c21175ef1de183d4b9e7","sha256:47c21130eb66c93ffc5c9528606d4c02ce5d9cdeb784baa031cb98e7ddbac9c3","sha256:4296471e898b26f01fcf2b420728e39e8f50f0015f7e7c686807a6e86efc69a1","sha256:888fae3e1c57f0d389c3678e0bb292bf7cfcccf798c55c8c60f08eba61608717","sha256:79fefe36917dc3f002d5a0c2ed15ab2dec4c66c9847b4b658047a4324e7be9d0","sha256:95a13407e6f4c40c731655053e99f955fd56f66fafadd5f7f0e7c04fa58ffe8b","sha256:1ec0d908c774fa4efa15029e21d9d160e24e10b040357d64b4224e90b3b7d3c2","sha256:c84a5e00f504e0f60aa02cac7eb5cde57ed7958f2965ea2fce0c7e9cd0ff532b","sha256:ea6910a5b20bc1db78688d16425eb97a82960996dcde565cbc66098bbbd77847","sha256:506b1d8ba1f1fbf138a94de6a1705da12360c81e6797cb60df488c87e9a366fe","sha256:53823a669b4ab38d3ab58a6d8524e47f9d7c6998e006b9b5cab59dc1e5b47f88","sha256:2bbe073544977e15c66507fb382b46349f46f773365511aba63353014f17dd28","sha256:7c2b9d82983189251cbe90d0debb6c0938d9a4f484332405b8d3582a618a0ccb","sha256:0f29f9c9a8ac60616c4f606508067a8f97443780b0425e29ef0bec8e1cbb876a","sha256:a883c4ecd38b3208be7f52555aa529d746da55488951b5b47e130313b753a8c3","sha256:a63900b34fef430d9afa5dcbad6ea8b727f8d2aa730d64ee899e5c298c8278ff","sha256:8347e3ad3a1631e2df362f4105e40e046c0fde6626b549591b76426747c7d753","sha256:93417d6ae53af8f0a8ecd54a60700624b47f562f355a8b60eb9de9598bc3599b","sha256:0353b55c967a79bba2bf46e0c9f8a14297f555a0b7a4e4c79ccbdbca81b010f3","sha256:df3f5d6c41e2be1f4fb2b5a58e70833b414d307bbe85709f2636f0c464499ec5","sha256:463d8259936601d23a02c407a4fb294c0e3bc9a213282c4525137bc1b18bbf6b","sha256:4d80736f9a52519104eeb228eb1ea95d0d6e9addc766eebacc9a5137fb2a5977","sha256:c9a3aef41c86259a7bb6dba7febb780737a1237ca8ff1c205797ead5951be712","sha256:784186e517b8a48371a101c28ad7af608277e5bcbcc7d75c203f4a8f0d8cb2e2"]}},{"name":"org.osbuild.fix-bls","options":{}},{"name":"org.osbuild.locale","options":{"language":"en_US"}},{"name":"org.osbuild.hostname","options":{"hostname":"my-host"}},{"name":"org.osbuild.users","options":{"users":{"me":{"key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost"},"myself":{"uid":"42","gid":"42","groups":["wheel"],"description":"Mostly harmless.","home":"/home/my-home","shell":"/bin/true","password":"$6$.JqV797428ehXN3m$w5BFz2WCfi6OK0eltGgcWdTeCXmDb8phMmsRkHc/Fk5zNaGFuWmaOnPXKf13YjuA399ZvDmGHhYmRX3coguLz/","key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost"}}}},{"name":"org.osbuild.fstab","options":{"filesystems":[{"uuid":"76a22bf4-f153-4541-b6c7-0332c0dfaeac","vfs_type":"ext4","path":"/","options":"defaults","freq":1,"passno":1}]}},{"name":"org.osbuild.grub2","options":{"root_fs_uuid":"76a22bf4-f153-4541-b6c7-0332c0dfaeac","kernel_opts":"ro biosdevname=0 net.ifnames=0 debug","legacy":true}},{"name":"org.osbuild.selinux","options":{"file_contexts":"etc/selinux/targeted/contexts/files/file_contexts"}}],"assembler":{"name":"org.osbuild.qemu","options":{"format":"qcow2","filename":"disk.qcow2","size":0,"ptuuid":"0x14fc63d2","pttype":"mbr","partitions":[{"start":2048,"bootable":true,"filesystem":{"type":"ext4","uuid":"76a22bf4-f153-4541-b6c7-0332c0dfaeac","mountpoint":"/"}}]}}}},"targets":[{"uuid":"3b15ea23-3ce7-4af4-805a-f0c6f7a7f79c","image_name":"My Image","name":"org.osbuild.aws","created":"2020-05-31T21:29:07.712359709+02:00","status":"WAITING","options":{"filename":"image.ami","region":"far-away-1","accessKeyID":"MyKey","secretAccessKey":"MySecret","bucket":"list","key":"image"}}],"job_created":"2020-05-31T21:29:45.883695291+02:00","job_started":"0001-01-01T00:00:00Z","job_finished":"0001-01-01T00:00:00Z","size":0,"jobid":"3b15ea23-3ce7-4af4-805a-f0c6f7a7f79c"}]}},"sources":{},"changes":{"my-blueprint-1":{"7ae2b68f37726af333cc5055735187e2c6251c5b":{"commit":"7ae2b68f37726af333cc5055735187e2c6251c5b","message":"message 1","revision":null,"timestamp":"2020-05-31T21:29:07Z"},"f3e9282b1a3addbc5569b50313f89b801b412693":{"commit":"f3e9282b1a3addbc5569b50313f89b801b412693","message":"message 2","revision":null,"timestamp":"2020-05-31T21:29:07Z"}}},"commits":{"my-blueprint-1":["7ae2b68f37726af333cc5055735187e2c6251c5b","f3e9282b1a3addbc5569b50313f89b801b412693"]}} diff --git a/internal/target/aws_target.go b/internal/target/aws_target.go new file mode 100644 index 0000000..3ff41f4 --- /dev/null +++ b/internal/target/aws_target.go @@ -0,0 +1,16 @@ +package target + +type AWSTargetOptions struct { + Filename string `json:"filename"` + Region string `json:"region"` + AccessKeyID string `json:"accessKeyID"` + SecretAccessKey string `json:"secretAccessKey"` + Bucket string `json:"bucket"` + Key string `json:"key"` +} + +func (AWSTargetOptions) isTargetOptions() {} + +func NewAWSTarget(options *AWSTargetOptions) *Target { + return newTarget("org.osbuild.aws", options) +} diff --git a/internal/target/azure_target.go b/internal/target/azure_target.go new file mode 100644 index 0000000..458c9ae --- /dev/null +++ b/internal/target/azure_target.go @@ -0,0 +1,14 @@ +package target + +type AzureTargetOptions struct { + Filename string `json:"filename"` + StorageAccount string `json:"storageAccount"` + StorageAccessKey string `json:"storageAccessKey"` + Container string `json:"container"` +} + +func (AzureTargetOptions) isTargetOptions() {} + +func NewAzureTarget(options *AzureTargetOptions) *Target { + return newTarget("org.osbuild.azure", options) +} diff --git a/internal/target/local_target.go b/internal/target/local_target.go new file mode 100644 index 0000000..49083a8 --- /dev/null +++ b/internal/target/local_target.go @@ -0,0 +1,16 @@ +package target + +import "github.com/google/uuid" + +type LocalTargetOptions struct { + ComposeId uuid.UUID `json:"compose_id"` + ImageBuildId int `json:"image_build_id"` + Filename string `json:"filename"` + StreamOptimized bool `json:"stream_optimized"` // return image as stream optimized +} + +func (LocalTargetOptions) isTargetOptions() {} + +func NewLocalTarget(options *LocalTargetOptions) *Target { + return newTarget("org.osbuild.local", options) +} diff --git a/internal/target/target.go b/internal/target/target.go new file mode 100644 index 0000000..e078dfc --- /dev/null +++ b/internal/target/target.go @@ -0,0 +1,79 @@ +package target + +import ( + "encoding/json" + "errors" + "github.com/google/uuid" + "github.com/osbuild/osbuild-composer/internal/common" + "time" +) + +type Target struct { + Uuid uuid.UUID `json:"uuid"` + ImageName string `json:"image_name"` + Name string `json:"name"` + Created time.Time `json:"created"` + Status common.ImageBuildState `json:"status"` + Options TargetOptions `json:"options"` +} + +func newTarget(name string, options TargetOptions) *Target { + return &Target{ + Uuid: uuid.New(), + Name: name, + Created: time.Now(), + Status: common.IBWaiting, + Options: options, + } +} + +type TargetOptions interface { + isTargetOptions() +} + +type rawTarget struct { + Uuid uuid.UUID `json:"uuid"` + ImageName string `json:"image_name"` + Name string `json:"name"` + Created time.Time `json:"created"` + Status common.ImageBuildState `json:"status"` + Options json.RawMessage `json:"options"` +} + +func (target *Target) UnmarshalJSON(data []byte) error { + var rawTarget rawTarget + err := json.Unmarshal(data, &rawTarget) + if err != nil { + return err + } + options, err := UnmarshalTargetOptions(rawTarget.Name, rawTarget.Options) + if err != nil { + return err + } + + target.Uuid = rawTarget.Uuid + target.ImageName = rawTarget.ImageName + target.Name = rawTarget.Name + target.Created = rawTarget.Created + target.Status = rawTarget.Status + target.Options = options + + return nil +} + +func UnmarshalTargetOptions(targetName string, rawOptions json.RawMessage) (TargetOptions, error) { + var options TargetOptions + switch targetName { + case "org.osbuild.azure": + options = new(AzureTargetOptions) + case "org.osbuild.aws": + options = new(AWSTargetOptions) + case "org.osbuild.local": + options = new(LocalTargetOptions) + default: + return nil, errors.New("unexpected target name") + } + err := json.Unmarshal(rawOptions, options) + + return options, err +} diff --git a/internal/test/helpers.go b/internal/test/helpers.go new file mode 100644 index 0000000..cd83f49 --- /dev/null +++ b/internal/test/helpers.go @@ -0,0 +1,228 @@ +package test + +import ( + "bytes" + "context" + "encoding/json" + "io/ioutil" + "net" + "net/http" + "net/http/httptest" + "os" + "os/exec" + "path" + "testing" + "time" + + "github.com/BurntSushi/toml" + "github.com/google/go-cmp/cmp" + "github.com/google/uuid" + "github.com/osbuild/osbuild-composer/internal/distro" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +type API interface { + ServeHTTP(writer http.ResponseWriter, request *http.Request) +} + +func externalRequest(method, path, body string) *http.Response { + client := http.Client{ + Transport: &http.Transport{ + DialContext: func(_ context.Context, _, _ string) (net.Conn, error) { + return net.Dial("unix", "/run/weldr/api.socket") + }, + }, + } + + req, err := http.NewRequest(method, "http://localhost"+path, bytes.NewReader([]byte(body))) + if err != nil { + panic(err) + } + + if method == "POST" { + req.Header.Set("Content-Type", "application/json") + } + + resp, err := client.Do(req) + if err != nil { + panic(err) + } + + return resp +} + +func internalRequest(api API, method, path, body string) *http.Response { + req := httptest.NewRequest(method, path, bytes.NewReader([]byte(body))) + req.Header.Set("Content-Type", "application/json") + resp := httptest.NewRecorder() + api.ServeHTTP(resp, req) + + return resp.Result() +} + +func SendHTTP(api API, external bool, method, path, body string) *http.Response { + if len(os.Getenv("OSBUILD_COMPOSER_TEST_EXTERNAL")) > 0 { + if !external { + return nil + } + return externalRequest(method, path, body) + } else { + return internalRequest(api, method, path, body) + } +} + +// this function serves to drop fields that shouldn't be tested from the unmarshalled json objects +func dropFields(obj interface{}, fields ...string) { + switch v := obj.(type) { + // if the interface type is a map attempt to delete the fields + case map[string]interface{}: + for i, field := range fields { + if _, ok := v[field]; ok { + delete(v, field) + // if the field is found remove it from the fields slice + if len(fields) < i-1 { + fields = append(fields[:i], fields[i+1:]...) + } else { + fields = fields[:i] + } + } + } + // call dropFields on the remaining elements since they may contain a map containing the field + for _, val := range v { + dropFields(val, fields...) + } + // if the type is a list of interfaces call dropFields on each interface + case []interface{}: + for _, element := range v { + dropFields(element, fields...) + } + default: + return + } +} + +func TestRoute(t *testing.T, api API, external bool, method, path, body string, expectedStatus int, expectedJSON string, ignoreFields ...string) { + t.Helper() + + resp := SendHTTP(api, external, method, path, body) + if resp == nil { + t.Skip("This test is for internal testing only") + } + + replyJSON, err := ioutil.ReadAll(resp.Body) + require.NoErrorf(t, err, "%s: could not read response body", path) + + assert.Equalf(t, expectedStatus, resp.StatusCode, "SendHTTP failed for path %s: %v", path, string(replyJSON)) + + if expectedJSON == "" { + require.Lenf(t, replyJSON, 0, "%s: expected no response body, but got:\n%s", path, replyJSON) + } + + var reply, expected interface{} + err = json.Unmarshal(replyJSON, &reply) + require.NoErrorf(t, err, "%s: json.Unmarshal failed for\n%s", path, string(replyJSON)) + + if expectedJSON == "*" { + return + } + + err = json.Unmarshal([]byte(expectedJSON), &expected) + require.NoErrorf(t, err, "%s: expected JSON is invalid", path) + + dropFields(reply, ignoreFields...) + dropFields(expected, ignoreFields...) + + require.Equal(t, expected, reply) +} + +func TestTOMLRoute(t *testing.T, api API, external bool, method, path, body string, expectedStatus int, expectedTOML string, ignoreFields ...string) { + t.Helper() + + resp := SendHTTP(api, external, method, path, body) + if resp == nil { + t.Skip("This test is for internal testing only") + } + + replyTOML, err := ioutil.ReadAll(resp.Body) + require.NoErrorf(t, err, "%s: could not read response body", path) + + assert.Equalf(t, expectedStatus, resp.StatusCode, "SendHTTP failed for path %s: %v", path, string(replyTOML)) + + if expectedTOML == "" { + require.Lenf(t, replyTOML, 0, "%s: expected no response body, but got:\n%s", path, replyTOML) + } + + var reply, expected interface{} + err = toml.Unmarshal(replyTOML, &reply) + require.NoErrorf(t, err, "%s: json.Unmarshal failed for\n%s", path, string(replyTOML)) + + if expectedTOML == "*" { + return + } + + err = toml.Unmarshal([]byte(expectedTOML), &expected) + require.NoErrorf(t, err, "%s: expected TOML is invalid", path) + + dropFields(reply, ignoreFields...) + dropFields(expected, ignoreFields...) + + require.Equal(t, expected, reply) +} + +func TestNonJsonRoute(t *testing.T, api API, external bool, method, path, body string, expectedStatus int, expectedResponse string) { + response := SendHTTP(api, external, method, path, body) + assert.Equalf(t, expectedStatus, response.StatusCode, "%s: status mismatch", path) + + responseBodyBytes, err := ioutil.ReadAll(response.Body) + require.NoErrorf(t, err, "%s: could not read response body", path) + + responseBody := string(responseBodyBytes) + require.Equalf(t, expectedResponse, responseBody, "%s: body mismatch", path) +} + +func IgnoreDates() cmp.Option { + return cmp.Comparer(func(a, b time.Time) bool { return true }) +} + +func IgnoreUuids() cmp.Option { + return cmp.Comparer(func(a, b uuid.UUID) bool { return true }) +} + +func Ignore(what string) cmp.Option { + return cmp.FilterPath(func(p cmp.Path) bool { return p.String() == what }, cmp.Ignore()) +} + +// CompareImageType considers two image type objects equal if and only if the names of their distro/arch/imagetype +// are. The thinking is that the objects are static, and resolving by these three keys should always give equivalent +// objects. Whether we actually have object equality, is an implementation detail, so we don't want to rely on that. +func CompareImageTypes() cmp.Option { + return cmp.Comparer(func(x, y distro.ImageType) bool { + return x.Name() == y.Name() && + x.Arch().Name() == y.Arch().Name() && + x.Arch().Distro().Name() == y.Arch().Distro().Name() + }) +} + +// Create a temporary repository +func SetUpTemporaryRepository() (string, error) { + dir, err := ioutil.TempDir("/tmp", "osbuild-composer-test-") + if err != nil { + return "", err + } + cmd := exec.Command("createrepo_c", path.Join(dir)) + err = cmd.Start() + if err != nil { + return "", err + } + err = cmd.Wait() + if err != nil { + return "", err + } + return dir, nil +} + +// Remove the temporary repository +func TearDownTemporaryRepository(dir string) error { + return os.RemoveAll(dir) +} diff --git a/internal/upload/awsupload/awsupload.go b/internal/upload/awsupload/awsupload.go new file mode 100644 index 0000000..7782855 --- /dev/null +++ b/internal/upload/awsupload/awsupload.go @@ -0,0 +1,191 @@ +package awsupload + +import ( + "log" + "os" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/ec2" + "github.com/aws/aws-sdk-go/service/s3" + "github.com/aws/aws-sdk-go/service/s3/s3manager" +) + +type AWS struct { + uploader *s3manager.Uploader + importer *ec2.EC2 + s3 *s3.S3 +} + +func New(region, accessKeyID, accessKey string) (*AWS, error) { + // Session credentials + creds := credentials.NewStaticCredentials(accessKeyID, accessKey, "") + + // Create a Session with a custom region + sess, err := session.NewSession(&aws.Config{ + Credentials: creds, + Region: aws.String(region), + }) + if err != nil { + return nil, err + } + + return &AWS{ + uploader: s3manager.NewUploader(sess), + importer: ec2.New(sess), + s3: s3.New(sess), + }, nil +} + +func (a *AWS) Upload(filename, bucket, key string) (*s3manager.UploadOutput, error) { + file, err := os.Open(filename) + if err != nil { + return nil, err + } + + log.Printf("[AWS] 🚀 Uploading image to S3: %s/%s", bucket, key) + return a.uploader.Upload( + &s3manager.UploadInput{ + Bucket: aws.String(bucket), + Key: aws.String(key), + Body: file, + }, + ) +} + +// WaitUntilImportSnapshotCompleted uses the Amazon EC2 API operation +// DescribeImportSnapshots to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func WaitUntilImportSnapshotTaskCompleted(c *ec2.EC2, input *ec2.DescribeImportSnapshotTasksInput) error { + return WaitUntilImportSnapshotTaskCompletedWithContext(c, aws.BackgroundContext(), input) +} + +// WaitUntilImportSnapshotCompletedWithContext is an extended version of +// WaitUntilImportSnapshotCompleted. With the support for passing in a +// context and options to configure the Waiter and the underlying request +// options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +// +// NOTE(mhayden): The MaxAttempts is set to zero here so that we will keep +// checking the status of the image import until it succeeds or fails. This +// process can take anywhere from 5 to 60+ minutes depending on how quickly +// AWS can import the snapshot. +func WaitUntilImportSnapshotTaskCompletedWithContext(c *ec2.EC2, ctx aws.Context, input *ec2.DescribeImportSnapshotTasksInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilImportSnapshotTaskCompleted", + MaxAttempts: 0, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "ImportSnapshotTasks[].SnapshotTaskDetail.Status", + Expected: "completed", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "ImportSnapshotTasks[].SnapshotTaskDetail.Status", + Expected: "deleted", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *ec2.DescribeImportSnapshotTasksInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeImportSnapshotTasksRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +func (a *AWS) Register(name, bucket, key string) (*string, error) { + log.Printf("[AWS] 📥 Importing snapshot from image: %s/%s", bucket, key) + importTaskOutput, err := a.importer.ImportSnapshot( + &ec2.ImportSnapshotInput{ + DiskContainer: &ec2.SnapshotDiskContainer{ + UserBucket: &ec2.UserBucket{ + S3Bucket: aws.String(bucket), + S3Key: aws.String(key), + }, + }, + }, + ) + if err != nil { + return nil, err + } + + log.Printf("[AWS] ⏱ Waiting for snapshot to finish importing: %s", *importTaskOutput.ImportTaskId) + err = WaitUntilImportSnapshotTaskCompleted( + a.importer, + &ec2.DescribeImportSnapshotTasksInput{ + ImportTaskIds: []*string{ + importTaskOutput.ImportTaskId, + }, + }, + ) + if err != nil { + return nil, err + } + + // we no longer need the object in s3, let's just delete it + log.Printf("[AWS] 🧹 Deleting image from S3: %s/%s", bucket, key) + _, err = a.s3.DeleteObject(&s3.DeleteObjectInput{ + Bucket: aws.String(bucket), + Key: aws.String(key), + }) + if err != nil { + return nil, err + } + + importOutput, err := a.importer.DescribeImportSnapshotTasks( + &ec2.DescribeImportSnapshotTasksInput{ + ImportTaskIds: []*string{ + importTaskOutput.ImportTaskId, + }, + }, + ) + if err != nil { + return nil, err + } + + snapshotID := importOutput.ImportSnapshotTasks[0].SnapshotTaskDetail.SnapshotId + log.Printf("[AWS] 📋 Registering AMI from imported snapshot: %s", *snapshotID) + registerOutput, err := a.importer.RegisterImage( + &ec2.RegisterImageInput{ + Architecture: aws.String("x86_64"), + VirtualizationType: aws.String("hvm"), + Name: aws.String(name), + RootDeviceName: aws.String("/dev/sda1"), + EnaSupport: aws.Bool(true), + BlockDeviceMappings: []*ec2.BlockDeviceMapping{ + { + DeviceName: aws.String("/dev/sda1"), + Ebs: &ec2.EbsBlockDevice{ + SnapshotId: snapshotID, + }, + }, + }, + }, + ) + if err != nil { + return nil, err + } + + log.Printf("[AWS] 🎉 AMI registered: %s", *registerOutput.ImageId) + return registerOutput.ImageId, nil +} diff --git a/internal/upload/azure/azure.go b/internal/upload/azure/azure.go new file mode 100644 index 0000000..8e18fe7 --- /dev/null +++ b/internal/upload/azure/azure.go @@ -0,0 +1,159 @@ +package azure + +import ( + "bufio" + "bytes" + "context" + "crypto/md5" + "errors" + "fmt" + "io" + "net/url" + "os" + "strings" + "sync" + + "github.com/Azure/azure-storage-blob-go/azblob" +) + +// Credentials contains credentials to connect to your account +// It uses so called "Client credentials", see the official documentation for more information: +// https://docs.microsoft.com/en-us/azure/go/azure-sdk-go-authorization#available-authentication-types-and-methods +type Credentials struct { + StorageAccount string + StorageAccessKey string +} + +// ImageMetadata contains information needed to store the image in a proper place. +// In case of Azure cloud storage this includes container name and blob name. +type ImageMetadata struct { + ContainerName string + ImageName string +} + +// UploadImage takes the metadata and credentials required to upload the image specified by `fileName` +// It can speed up the upload by using goroutines. The number of parallel goroutines is bounded by +// the `threads` argument. +func UploadImage(credentials Credentials, metadata ImageMetadata, fileName string, threads int) error { + // Azure cannot create an image from a storage blob without .vhd extension + if !strings.HasSuffix(metadata.ImageName, ".vhd") { + metadata.ImageName = metadata.ImageName + ".vhd" + } + + // Create a default request pipeline using your storage account name and account key. + credential, err := azblob.NewSharedKeyCredential(credentials.StorageAccount, credentials.StorageAccessKey) + if err != nil { + return fmt.Errorf("cannot create azure credentials: %v", err) + } + + p := azblob.NewPipeline(credential, azblob.PipelineOptions{}) + + // get storage account blob service URL endpoint. + URL, _ := url.Parse(fmt.Sprintf("https://%s.blob.core.windows.net/%s", credentials.StorageAccount, metadata.ContainerName)) + + // Create a ContainerURL object that wraps the container URL and a request + // pipeline to make requests. + containerURL := azblob.NewContainerURL(*URL, p) + + // Create the container, use a never-expiring context + ctx := context.Background() + + // Open the image file for reading + imageFile, err := os.Open(fileName) + if err != nil { + return fmt.Errorf("cannot open the image: %v", err) + } + defer imageFile.Close() + + // Stat image to get the file size + stat, err := imageFile.Stat() + if err != nil { + return fmt.Errorf("cannot stat the image: %v", err) + } + + // Hash the imageFile + imageFileHash := md5.New() + if _, err := io.Copy(imageFileHash, imageFile); err != nil { + return fmt.Errorf("cannot create md5 of the image: %v", err) + } + // Move the cursor back to the start of the imageFile + if _, err := imageFile.Seek(0, 0); err != nil { + return fmt.Errorf("cannot seek the image: %v", err) + } + + // Create page blob URL. Page blob is required for VM images + blobURL := containerURL.NewPageBlobURL(metadata.ImageName) + _, err = blobURL.Create(ctx, stat.Size(), 0, azblob.BlobHTTPHeaders{}, azblob.Metadata{}, azblob.BlobAccessConditions{}) + if err != nil { + return fmt.Errorf("cannot create the blob URL: %v", err) + } + // Wrong MD5 does not seem to have any impact on the upload + _, err = blobURL.SetHTTPHeaders(ctx, azblob.BlobHTTPHeaders{ContentMD5: imageFileHash.Sum(nil)}, azblob.BlobAccessConditions{}) + if err != nil { + return fmt.Errorf("cannot set the HTTP headers on the blob URL: %v", err) + } + + // Create control variables + // This channel simulates behavior of a semaphore and bounds the number of parallel threads + var semaphore = make(chan int, threads) + // Forward error from goroutine to the caller + var errorInGoroutine = make(chan error, 1) + var counter int64 = 0 + + // Create buffered reader to speed up the upload + reader := bufio.NewReader(imageFile) + // Run the upload + run := true + var wg sync.WaitGroup + for run { + buffer := make([]byte, azblob.PageBlobMaxUploadPagesBytes) + n, err := reader.Read(buffer) + if err != nil { + if err == io.EOF { + run = false + } else { + return fmt.Errorf("reading the image failed: %v", err) + } + } + if n == 0 { + break + } + wg.Add(1) + semaphore <- 1 + go func(counter int64, buffer []byte, n int) { + defer wg.Done() + _, err = blobURL.UploadPages(ctx, counter*azblob.PageBlobMaxUploadPagesBytes, bytes.NewReader(buffer[:n]), azblob.PageBlobAccessConditions{}, nil) + if err != nil { + err = fmt.Errorf("uploading a page failed: %v", err) + // Send the error to the error channel in a non-blocking way. If there is already an error, just discard this one + select { + case errorInGoroutine <- err: + default: + } + } + <-semaphore + }(counter, buffer, n) + counter++ + } + // Wait for all goroutines to finish + wg.Wait() + // Check any errors during the transmission using a nonblocking read from the channel + select { + case err := <-errorInGoroutine: + return err + default: + } + // Check properties, specifically MD5 sum of the blob + props, err := blobURL.GetProperties(ctx, azblob.BlobAccessConditions{}) + if err != nil { + return fmt.Errorf("getting the properties of the new blob failed: %v", err) + } + var blobChecksum []byte = props.ContentMD5() + var fileChecksum []byte = imageFileHash.Sum(nil) + + if !bytes.Equal(blobChecksum, fileChecksum) { + return errors.New("error during image upload. the image seems to be corrupted") + } + + return nil +} diff --git a/internal/upload/azure/azure_test.go b/internal/upload/azure/azure_test.go new file mode 100644 index 0000000..e649f4b --- /dev/null +++ b/internal/upload/azure/azure_test.go @@ -0,0 +1,119 @@ +package azure + +import ( + "bytes" + "context" + "crypto/md5" + "fmt" + "io" + "net/url" + "os" + "os/exec" + "path" + "testing" + + "github.com/Azure/azure-storage-blob-go/azblob" +) + +func handleErrors(t *testing.T, err error) { + if err != nil { + t.Fatal(err) + } +} + +func loadEnvVar(t *testing.T, envVarName string) (string, bool) { + variable, exists := os.LookupEnv(envVarName) + if !exists { + t.Logf("Environment variable does not exist: %s", envVarName) + return "", false + } + return variable, true +} + +func TestAzure_FileUpload(t *testing.T) { + // Load configuration + storageAccount, saExists := loadEnvVar(t, "AZURE_STORAGE_ACCOUNT") + storageAccessKey, sakExists := loadEnvVar(t, "AZURE_STORAGE_ACCESS_KEY") + containerName, cnExists := loadEnvVar(t, "AZURE_STORAGE_CONTAINER") + fileName := "/tmp/testing-image.vhd" + var threads int = 4 + + // Workaround Travis security feature. If non of the variables is set, just ignore the test + if saExists == false && sakExists == false && cnExists == false { + t.Log("No AZURE configuration provided, assuming that this is running in CI. Skipping the test.") + return + } + // If only one/two of them are not set, then fail + if saExists == false || sakExists == false || cnExists == false { + t.Fatal("You need to define all variables for AZURE connection.") + } + + // Prepare the file + cmd := exec.Command("dd", "bs=512", "count=512", "if=/dev/urandom", fmt.Sprintf("of=%s", fileName)) + err := cmd.Run() + handleErrors(t, err) + t.Log("Image to upload is:", fileName) + + // Calculate MD5 sum of the file + f, err := os.Open(fileName) + handleErrors(t, err) + + h := md5.New() + _, err = io.Copy(h, f) + handleErrors(t, err) + imageChecksum := h.Sum(nil) + err = f.Close() + handleErrors(t, err) + + credentials := Credentials{ + StorageAccount: storageAccount, + StorageAccessKey: storageAccessKey, + } + metadata := ImageMetadata{ + ImageName: path.Base(fileName), + ContainerName: containerName, + } + // Upload the image + err = UploadImage(credentials, metadata, fileName, threads) + handleErrors(t, err) + + // Download the image + // Create a default request pipeline using your storage account name and account key. + credential, err := azblob.NewSharedKeyCredential(credentials.StorageAccount, credentials.StorageAccessKey) + handleErrors(t, err) + + p := azblob.NewPipeline(credential, azblob.PipelineOptions{}) + + // get storage account blob service URL endpoint. + URL, _ := url.Parse(fmt.Sprintf("https://%s.blob.core.windows.net/%s", credentials.StorageAccount, metadata.ContainerName)) + + // Create a ContainerURL object that wraps the container URL and a request + // pipeline to make requests. + containerURL := azblob.NewContainerURL(*URL, p) + + // Create the container, use a never-expiring context + ctx := context.Background() + + blobURL := containerURL.NewPageBlobURL(metadata.ImageName) + + get, err := blobURL.Download(ctx, 0, 0, azblob.BlobAccessConditions{}, false) + handleErrors(t, err) + blobData := &bytes.Buffer{} + reader := get.Body(azblob.RetryReaderOptions{}) + _, err = blobData.ReadFrom(reader) + handleErrors(t, err) + reader.Close() // The client must close the response body when finished with it + blobBytes := blobData.Bytes() + blobChecksum := md5.Sum(blobBytes) + t.Logf("Local image checksum: %x\n", imageChecksum) + t.Logf("Downloaded blob checksum : %x\n", blobChecksum) + + // Delete the blob and throw away any errors + _, _ = blobURL.Delete(ctx, azblob.DeleteSnapshotsOptionInclude, azblob.BlobAccessConditions{}) + _ = os.Remove(fileName) + + if !bytes.Equal(imageChecksum, blobChecksum[:]) { + t.Fatalf("Checksums do not match! Local file: %x, cloud blob: %x", imageChecksum, blobChecksum[:]) + } + +} diff --git a/internal/upload/koji/README.md b/internal/upload/koji/README.md new file mode 100644 index 0000000..683966b --- /dev/null +++ b/internal/upload/koji/README.md @@ -0,0 +1,22 @@ +## How to run the Koji test + +Firstly, you need to start the koji container: + +``` +sudo ./internal/upload/koji/run-koji-container.sh +``` + +This command starts a kojihub instance available at +http://localhost:8080/kojihub . You can test that it started successfully +by running: +``` +koji --server=http://localhost:8080/kojihub --user=osbuild --password=osbuildpass --authtype=password hello +``` + +Now, you can run the koji test using: +``` +go test -v -tags koji_test ./internal/upload/koji +``` + +The test is run on each PR in the Github CI. See `.github/workflows/tests.yml` +for more details. diff --git a/internal/upload/koji/koji.go b/internal/upload/koji/koji.go new file mode 100644 index 0000000..71a77c6 --- /dev/null +++ b/internal/upload/koji/koji.go @@ -0,0 +1,302 @@ +package koji + +import ( + "bytes" + "crypto/md5" + "encoding/json" + "fmt" + "hash/adler32" + "io" + "io/ioutil" + "net/http" + "net/url" + + "github.com/kolo/xmlrpc" +) + +type Koji struct { + sessionID int64 + sessionKey string + callnum int + xmlrpc *xmlrpc.Client + server string +} + +type BuildExtra struct { + Image interface{} `json:"image"` // No extra info tracked at build level. +} + +type Build struct { + Name string `json:"name"` + Version string `json:"version"` + Release string `json:"release"` + Source string `json:"source"` + StartTime int64 `json:"start_time"` + EndTime int64 `json:"end_time"` + Extra BuildExtra `json:"extra"` +} + +type Host struct { + Os string `json:"os"` + Arch string `json:"arch"` +} + +type ContentGenerator struct { + Name string `json:"name"` + Version string `json:"version"` +} + +type Container struct { + Type string `json:"type"` + Arch string `json:"arch"` +} + +type Tool struct { + Name string `json:"name"` + Version string `json:"version"` +} + +type Component struct { + Type string `json:"type"` // must be 'rpm' + Name string `json:"name"` + Version string `json:"version"` + Release string `json:"release"` + Epoch *uint64 `json:"epoch"` + Arch string `json:"arch"` + Sigmd5 string `json:"sigmd5"` + Signature *string `json:"signature"` +} + +type BuildRoot struct { + ID uint64 `json:"id"` + Host Host `json:"host"` + ContentGenerator ContentGenerator `json:"content_generator"` + Container Container `json:"container"` + Tools []Tool `json:"tools"` + Components []Component `json:"components"` +} + +type OutputExtraImageInfo struct { + // TODO: Ideally this is where the pipeline would be passed. + Arch string `json:"arch"` // TODO: why? +} + +type OutputExtra struct { + Image OutputExtraImageInfo `json:"image"` +} + +type Output struct { + BuildRootID uint64 `json:"buildroot_id"` + Filename string `json:"filename"` + FileSize uint64 `json:"filesize"` + Arch string `json:"arch"` + ChecksumType string `json:"checksum_type"` // must be 'md5' + MD5 string `json:"checksum"` + Type string `json:"type"` + Components []Component `json:"component"` + Extra OutputExtra `json:"extra"` +} + +type Metadata struct { + MetadataVersion int `json:"metadata_version"` // must be '0' + Build Build `json:"build"` + BuildRoots []BuildRoot `json:"buildroots"` + Output []Output `json:"output"` +} + +type CGImportResult struct { + BuildID int `xmlrpc:"build_id"` +} + +// RoundTrip implements the RoundTripper interface, using the default +// transport. When a session has been established, also pass along the +// session credentials. This may not be how the RoundTripper interface +// is meant to be used, but the underlying XML-RPC helpers don't allow +// us to adjust the URL per-call (these arguments should really be in +// the body). +func (k *Koji) RoundTrip(req *http.Request) (*http.Response, error) { + if k.sessionKey == "" { + return http.DefaultTransport.RoundTrip(req) + } + + // Clone the request, so as not to alter the passed in value. + rClone := new(http.Request) + *rClone = *req + rClone.Header = make(http.Header, len(req.Header)) + for idx, header := range req.Header { + rClone.Header[idx] = append([]string(nil), header...) + } + + values := rClone.URL.Query() + values.Add("session-id", fmt.Sprintf("%v", k.sessionID)) + values.Add("session-key", k.sessionKey) + values.Add("callnum", fmt.Sprintf("%v", k.callnum)) + rClone.URL.RawQuery = values.Encode() + + // Each call is given a unique callnum. + k.callnum++ + + return http.DefaultTransport.RoundTrip(rClone) +} + +func New(server string) (*Koji, error) { + k := &Koji{} + client, err := xmlrpc.NewClient(server, k) + if err != nil { + return nil, err + } + k.xmlrpc = client + k.server = server + return k, nil +} + +// GetAPIVersion gets the version of the API of the remote Koji instance +func (k *Koji) GetAPIVersion() (int, error) { + var version int + err := k.xmlrpc.Call("getAPIVersion", nil, &version) + if err != nil { + return 0, err + } + + return version, nil +} + +// Login sets up a new session with the given user/password +func (k *Koji) Login(user, password string) error { + args := []interface{}{user, password} + var reply struct { + SessionID int64 `xmlrpc:"session-id"` + SessionKey string `xmlrpc:"session-key"` + } + err := k.xmlrpc.Call("login", args, &reply) + if err != nil { + return err + } + k.sessionID = reply.SessionID + k.sessionKey = reply.SessionKey + k.callnum = 0 + return nil +} + +// Logout ends the session +func (k *Koji) Logout() error { + err := k.xmlrpc.Call("logout", nil, nil) + if err != nil { + return err + } + return nil +} + +// CGImport imports previously uploaded content, by specifying its metadata, and the temporary +// directory where it is located. +func (k *Koji) CGImport(build Build, buildRoots []BuildRoot, output []Output, directory string) (*CGImportResult, error) { + m := &Metadata{ + Build: build, + BuildRoots: buildRoots, + Output: output, + } + metadata, err := json.Marshal(m) + if err != nil { + return nil, err + } + + var result CGImportResult + err = k.xmlrpc.Call("CGImport", []interface{}{string(metadata), directory}, &result) + if err != nil { + return nil, err + } + + return &result, nil +} + +// uploadChunk uploads a byte slice to a given filepath/filname at a given offset +func (k *Koji) uploadChunk(chunk []byte, filepath, filename string, offset uint64) error { + // We have to open-code a bastardized version of XML-RPC: We send an octet-stream, as + // if it was an RPC call, and get a regular XML-RPC reply back. In addition to the + // standard URL parameters, we also have to pass any other parameters as part of the + // URL, as the body can only contain the payload. + u, err := url.Parse(k.server) + if err != nil { + return err + } + q := u.Query() + q.Add("filepath", filepath) + q.Add("filename", filename) + q.Add("offset", fmt.Sprintf("%v", offset)) + q.Add("fileverify", "adler32") + q.Add("session-id", fmt.Sprintf("%v", k.sessionID)) + q.Add("session-key", k.sessionKey) + q.Add("callnum", fmt.Sprintf("%v", k.callnum)) + u.RawQuery = q.Encode() + + // Each call is given a unique callnum. + k.callnum++ + + resp, err := http.Post(u.String(), "application/octet-stream", bytes.NewBuffer(chunk)) + if err != nil { + return err + } + defer resp.Body.Close() + + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return err + } + + err = xmlrpc.Response.Err(body) + if err != nil { + return err + } + + var reply struct { + Size int `xmlrpc:"size"` + HexDigest string `xmlrpc:"hexdigest"` + } + + err = xmlrpc.Response.Unmarshal(body, &reply) + if err != nil { + return fmt.Errorf("cannot unmarshal the xmlrpc response: %v", err) + } + + if reply.Size != len(chunk) { + return fmt.Errorf("Sent a chunk of %d bytes, but server got %d bytes", len(chunk), reply.Size) + } + + digest := fmt.Sprintf("%08x", adler32.Checksum(chunk)) + if reply.HexDigest != digest { + return fmt.Errorf("Sent a chunk with Adler32 digest %s, but server computed digest %s", digest, reply.HexDigest) + } + + return nil +} + +// Upload uploads file to the temporary filepath on the kojiserver under the name filename +// The md5sum and size of the file is returned on success. +func (k *Koji) Upload(file io.Reader, filepath, filename string) (string, uint64, error) { + chunk := make([]byte, 1024*1024) // upload a megabyte at a time + offset := uint64(0) + hash := md5.New() + for { + n, err := file.Read(chunk) + if err != nil { + if err == io.EOF { + break + } + return "", 0, err + } + err = k.uploadChunk(chunk[:n], filepath, filename, offset) + if err != nil { + return "", 0, err + } + offset += uint64(n) + + m, err := hash.Write(chunk[:n]) + if err != nil { + return "", 0, err + } + if m != n { + return "", 0, fmt.Errorf("sent %d bytes, but hashed %d", n, m) + } + } + return fmt.Sprintf("%x", hash.Sum(nil)), offset, nil +} diff --git a/internal/upload/koji/koji_test.go b/internal/upload/koji/koji_test.go new file mode 100644 index 0000000..0cd8bb5 --- /dev/null +++ b/internal/upload/koji/koji_test.go @@ -0,0 +1,132 @@ +//+build koji_test + +package koji_test + +import ( + "crypto/rand" + "io" + "io/ioutil" + "os" + "os/exec" + "strconv" + "testing" + "time" + + "github.com/google/uuid" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/osbuild/osbuild-composer/internal/upload/koji" +) + +func TestKojiImport(t *testing.T) { + // define constants + server := "http://localhost:8080/kojihub" + user := "osbuild" + password := "osbuildpass" + filename := "image.qcow2" + filesize := 1024 + // you cannot create two build with a same name, let's create a random one each time + buildName := "osbuild-image-" + uuid.Must(uuid.NewRandom()).String() + // koji needs to specify a directory to which the upload should happen, let's reuse the build name + uploadDirectory := buildName + + // authenticate + k, err := koji.New(server) + require.NoError(t, err) + err = k.Login(user, password) + require.NoError(t, err) + + defer func() { + err := k.Logout() + if err != nil { + require.NoError(t, err) + } + }() + + // Create a random file + f, err := ioutil.TempFile("", "osbuild-koji-test-*.qcow2") + require.NoError(t, err) + defer func() { + assert.NoError(t, f.Close()) + assert.NoError(t, os.Remove(f.Name())) + }() + + _, err = io.CopyN(f, rand.Reader, int64(filesize)) + require.NoError(t, err) + _, err = f.Seek(0, io.SeekStart) + require.NoError(t, err) + + // Upload the file + hash, _, err := k.Upload(f, uploadDirectory, filename) + require.NoError(t, err) + + // Import the build + build := koji.Build{ + Name: buildName, + Version: "1", + Release: "1", + StartTime: time.Now().Unix(), + EndTime: time.Now().Unix(), + } + buildRoots := []koji.BuildRoot{ + { + ID: 1, + Host: koji.Host{ + Os: "RHEL8", + Arch: "noarch", + }, + ContentGenerator: koji.ContentGenerator{ + Name: "osbuild", + Version: "1", + }, + Container: koji.Container{ + Type: "nspawn", + Arch: "noarch", + }, + Tools: []koji.Tool{}, + Components: []koji.Component{}, + }, + } + output := []koji.Output{ + { + BuildRootID: 1, + Filename: filename, + FileSize: uint64(filesize), + Arch: "noarch", + ChecksumType: "md5", + MD5: hash, + Type: "image", + Components: []koji.Component{}, + Extra: koji.OutputExtra{ + Image: koji.OutputExtraImageInfo{ + Arch: "noarch", + }, + }, + }, + } + + result, err := k.CGImport(build, buildRoots, output, uploadDirectory) + require.NoError(t, err) + + // check if the build is really there: + cmd := exec.Command( + "koji", + "--server", server, + "--user", user, + "--password", password, + "--authtype", "password", + "list-builds", + "--buildid", strconv.Itoa(result.BuildID), + ) + + // sample output: + // Build Built by State + // ------------------------------------------------------- ---------------- ---------------- + // osbuild-image-92882b90-4bd9-4422-8b8a-40863f94535a-1-1 osbuild COMPLETE + out, err := cmd.CombinedOutput() + assert.NoError(t, err) + + // let's check for COMPLETE, koji will exit with non-zero status code if the build doesn't exist + assert.Contains(t, string(out), "COMPLETE") +} diff --git a/internal/upload/koji/run-koji-container.sh b/internal/upload/koji/run-koji-container.sh new file mode 100755 index 0000000..fe77376 --- /dev/null +++ b/internal/upload/koji/run-koji-container.sh @@ -0,0 +1,43 @@ +#!/bin/bash +set -eu + +if [ $UID != 0 ]; then + echo must be run as root + exit 1 +fi + +clean_up () { + EXIT_CODE=$? + + echo "Shutting down containers, please wait..." + + podman stop org.osbuild.koji.koji || true + podman rm org.osbuild.koji.koji || true + + podman stop org.osbuild.koji.postgres || true + podman rm org.osbuild.koji.postgres || true + + podman network rm -f org.osbuild.koji || true + + exit $EXIT_CODE +} + +trap clean_up EXIT + +podman network create org.osbuild.koji +podman run -d --name org.osbuild.koji.postgres --network org.osbuild.koji \ + -e POSTGRES_USER=koji \ + -e POSTGRES_PASSWORD=kojipass \ + -e POSTGRES_DB=koji \ + docker.io/library/postgres:12-alpine + +podman run -d --name org.osbuild.koji.koji --network org.osbuild.koji \ + -p 8080:80 \ + -e POSTGRES_USER=koji \ + -e POSTGRES_PASSWORD=kojipass \ + -e POSTGRES_DB=koji \ + -e POSTGRES_HOST=org.osbuild.koji.postgres \ + quay.io/osbuild/ghci-koji:rc1 + +echo "Running, press CTRL+C to stop..." +sleep infinity diff --git a/internal/weldr/api.go b/internal/weldr/api.go new file mode 100644 index 0000000..243242a --- /dev/null +++ b/internal/weldr/api.go @@ -0,0 +1,2658 @@ +package weldr + +import ( + "archive/tar" + "bytes" + "encoding/json" + errors_package "errors" + "fmt" + "io" + "log" + "net" + "net/http" + "net/url" + "os" + "path" + "regexp" + "sort" + "strconv" + "strings" + "time" + + "github.com/BurntSushi/toml" + "github.com/google/uuid" + "github.com/julienschmidt/httprouter" + + "github.com/osbuild/osbuild-composer/internal/blueprint" + "github.com/osbuild/osbuild-composer/internal/common" + "github.com/osbuild/osbuild-composer/internal/distro" + "github.com/osbuild/osbuild-composer/internal/jobqueue" + "github.com/osbuild/osbuild-composer/internal/rpmmd" + "github.com/osbuild/osbuild-composer/internal/store" + "github.com/osbuild/osbuild-composer/internal/target" + "github.com/osbuild/osbuild-composer/internal/worker" +) + +type API struct { + store *store.Store + workers *worker.Server + + rpmmd rpmmd.RPMMD + arch distro.Arch + distro distro.Distro + repos []rpmmd.RepoConfig + + logger *log.Logger + router *httprouter.Router + + compatOutputDir string +} + +// systemRepoIDs returns a list of the system repos +// NOTE: The system repos have no concept of id vs. name so the id is returned +func (api *API) systemRepoNames() (names []string) { + for _, repo := range api.repos { + names = append(names, repo.Name) + } + return names +} + +var ValidBlueprintName = regexp.MustCompile(`^[a-zA-Z0-9._-]+$`) + +func New(rpmmd rpmmd.RPMMD, arch distro.Arch, distro distro.Distro, repos []rpmmd.RepoConfig, logger *log.Logger, store *store.Store, workers *worker.Server, compatOutputDir string) *API { + api := &API{ + store: store, + workers: workers, + rpmmd: rpmmd, + arch: arch, + distro: distro, + repos: repos, + logger: logger, + compatOutputDir: compatOutputDir, + } + + api.router = httprouter.New() + api.router.RedirectTrailingSlash = false + api.router.RedirectFixedPath = false + api.router.MethodNotAllowed = http.HandlerFunc(methodNotAllowedHandler) + api.router.NotFound = http.HandlerFunc(notFoundHandler) + + api.router.GET("/api/status", api.statusHandler) + api.router.GET("/api/v:version/projects/source/list", api.sourceListHandler) + api.router.GET("/api/v:version/projects/source/info/", api.sourceEmptyInfoHandler) + api.router.GET("/api/v:version/projects/source/info/:sources", api.sourceInfoHandler) + api.router.POST("/api/v:version/projects/source/new", api.sourceNewHandler) + api.router.DELETE("/api/v:version/projects/source/delete/*source", api.sourceDeleteHandler) + + api.router.GET("/api/v:version/projects/depsolve", api.projectsDepsolveHandler) + api.router.GET("/api/v:version/projects/depsolve/*projects", api.projectsDepsolveHandler) + + api.router.GET("/api/v:version/modules/list", api.modulesListHandler) + api.router.GET("/api/v:version/modules/list/*modules", api.modulesListHandler) + api.router.GET("/api/v:version/projects/list", api.projectsListHandler) + api.router.GET("/api/v:version/projects/list/", api.projectsListHandler) + + // these are the same, except that modules/info also includes dependencies + api.router.GET("/api/v:version/modules/info", api.modulesInfoHandler) + api.router.GET("/api/v:version/modules/info/*modules", api.modulesInfoHandler) + api.router.GET("/api/v:version/projects/info", api.modulesInfoHandler) + api.router.GET("/api/v:version/projects/info/*modules", api.modulesInfoHandler) + + api.router.GET("/api/v:version/blueprints/list", api.blueprintsListHandler) + api.router.GET("/api/v:version/blueprints/info/*blueprints", api.blueprintsInfoHandler) + api.router.GET("/api/v:version/blueprints/depsolve/*blueprints", api.blueprintsDepsolveHandler) + api.router.GET("/api/v:version/blueprints/freeze/*blueprints", api.blueprintsFreezeHandler) + api.router.GET("/api/v:version/blueprints/diff/:blueprint/:from/:to", api.blueprintsDiffHandler) + api.router.GET("/api/v:version/blueprints/changes/*blueprints", api.blueprintsChangesHandler) + api.router.POST("/api/v:version/blueprints/new", api.blueprintsNewHandler) + api.router.POST("/api/v:version/blueprints/workspace", api.blueprintsWorkspaceHandler) + api.router.POST("/api/v:version/blueprints/undo/:blueprint/:commit", api.blueprintUndoHandler) + api.router.POST("/api/v:version/blueprints/tag/:blueprint", api.blueprintsTagHandler) + api.router.DELETE("/api/v:version/blueprints/delete/:blueprint", api.blueprintDeleteHandler) + api.router.DELETE("/api/v:version/blueprints/workspace/:blueprint", api.blueprintDeleteWorkspaceHandler) + + api.router.POST("/api/v:version/compose", api.composeHandler) + api.router.DELETE("/api/v:version/compose/delete/:uuids", api.composeDeleteHandler) + api.router.GET("/api/v:version/compose/types", api.composeTypesHandler) + api.router.GET("/api/v:version/compose/queue", api.composeQueueHandler) + api.router.GET("/api/v:version/compose/status/:uuids", api.composeStatusHandler) + api.router.GET("/api/v:version/compose/info/:uuid", api.composeInfoHandler) + api.router.GET("/api/v:version/compose/finished", api.composeFinishedHandler) + api.router.GET("/api/v:version/compose/failed", api.composeFailedHandler) + api.router.GET("/api/v:version/compose/image/:uuid", api.composeImageHandler) + api.router.GET("/api/v:version/compose/metadata/:uuid", api.composeMetadataHandler) + api.router.GET("/api/v:version/compose/results/:uuid", api.composeResultsHandler) + api.router.GET("/api/v:version/compose/logs/:uuid", api.composeLogsHandler) + api.router.GET("/api/v:version/compose/log/:uuid", api.composeLogHandler) + api.router.POST("/api/v:version/compose/uploads/schedule/:uuid", api.uploadsScheduleHandler) + api.router.DELETE("/api/v:version/compose/cancel/:uuid", api.composeCancelHandler) + + api.router.DELETE("/api/v:version/upload/delete/:uuid", api.uploadsDeleteHandler) + api.router.GET("/api/v:version/upload/info/:uuid", api.uploadsInfoHandler) + api.router.GET("/api/v:version/upload/log/:uuid", api.uploadsLogHandler) + api.router.POST("/api/v:version/upload/reset/:uuid", api.uploadsResetHandler) + api.router.DELETE("/api/v:version/upload/cancel/:uuid", api.uploadsCancelHandler) + + api.router.GET("/api/v:version/upload/providers", api.providersHandler) + api.router.POST("/api/v:version/upload/providers/save", api.providersSaveHandler) + api.router.DELETE("/api/v:version/upload/providers/delete/:provider/:profile", api.providersDeleteHandler) + + return api +} + +func (api *API) Serve(listener net.Listener) error { + server := http.Server{Handler: api} + + err := server.Serve(listener) + if err != nil && err != http.ErrServerClosed { + return err + } + + return nil +} + +func (api *API) ServeHTTP(writer http.ResponseWriter, request *http.Request) { + if api.logger != nil { + log.Println(request.Method, request.URL.Path) + } + + writer.Header().Set("Content-Type", "application/json; charset=utf-8") + api.router.ServeHTTP(writer, request) +} + +type composeStatus struct { + State common.ComposeState + Queued time.Time + Started time.Time + Finished time.Time + Result *common.ComposeResult +} + +// Returns the state of the image in `compose` and the times the job was +// queued, started, and finished. Assumes that there's only one image in the +// compose. +func (api *API) getComposeStatus(compose store.Compose) *composeStatus { + jobId := compose.ImageBuild.JobID + + // backwards compatibility: composes that were around before splitting + // the job queue from the store still contain their valid status and + // times. Return those here as a fallback. + if jobId == uuid.Nil { + var state common.ComposeState + switch compose.ImageBuild.QueueStatus { + case common.IBWaiting: + state = common.CWaiting + case common.IBRunning: + state = common.CRunning + case common.IBFinished: + state = common.CFinished + case common.IBFailed: + state = common.CFailed + } + return &composeStatus{ + State: state, + Queued: compose.ImageBuild.JobCreated, + Started: compose.ImageBuild.JobStarted, + Finished: compose.ImageBuild.JobFinished, + Result: &common.ComposeResult{}, + } + } + + // is it ok to ignore this error? + jobStatus, _ := api.workers.JobStatus(jobId) + return &composeStatus{ + State: jobStatus.State, + Queued: jobStatus.Queued, + Started: jobStatus.Started, + Finished: jobStatus.Finished, + Result: jobStatus.Result.OSBuildOutput, + } +} + +// Opens the image file for `compose`. This asks the worker server for the +// artifact first, and then falls back to looking in +// `{outputs}/{composeId}/{imageBuildId}` for backwards compatibility. +func (api *API) openImageFile(composeId uuid.UUID, compose store.Compose) (io.Reader, int64, error) { + name := compose.ImageBuild.ImageType.Filename() + + reader, size, err := api.workers.JobArtifact(compose.ImageBuild.JobID, name) + if err != nil { + if api.compatOutputDir == "" || err != jobqueue.ErrNotExist { + return nil, 0, err + } + + p := path.Join(api.compatOutputDir, composeId.String(), "0", name) + f, err := os.Open(p) + if err != nil { + return nil, 0, err + } + + info, err := f.Stat() + if err != nil { + return nil, 0, err + } + + reader = f + size = info.Size() + } + + return reader, size, nil +} + +func verifyRequestVersion(writer http.ResponseWriter, params httprouter.Params, minVersion uint) bool { + versionString := params.ByName("version") + + version, err := strconv.ParseUint(versionString, 10, 0) + + var MaxApiVersion uint = 1 + + if err != nil || uint(version) < minVersion || uint(version) > MaxApiVersion { + notFoundHandler(writer, nil) + return false + } + + return true +} + +func isRequestVersionAtLeast(params httprouter.Params, minVersion uint) bool { + versionString := params.ByName("version") + + version, err := strconv.ParseUint(versionString, 10, 0) + + common.PanicOnError(err) + + return uint(version) >= minVersion +} + +func methodNotAllowedHandler(writer http.ResponseWriter, request *http.Request) { + writer.WriteHeader(http.StatusMethodNotAllowed) +} + +func notFoundHandler(writer http.ResponseWriter, request *http.Request) { + errors := responseError{ + Code: http.StatusNotFound, + ID: "HTTPError", + Msg: "Not Found", + } + statusResponseError(writer, http.StatusNotFound, errors) +} + +func notImplementedHandler(writer http.ResponseWriter, httpRequest *http.Request, _ httprouter.Params) { + writer.WriteHeader(http.StatusNotImplemented) +} + +func statusResponseOK(writer http.ResponseWriter) { + type reply struct { + Status bool `json:"status"` + } + + writer.WriteHeader(http.StatusOK) + err := json.NewEncoder(writer).Encode(reply{true}) + common.PanicOnError(err) +} + +type responseError struct { + Code int `json:"code,omitempty"` + ID string `json:"id"` + Msg string `json:"msg"` +} + +// verifyStringsWithRegex checks a slive of strings against a regex of allowed characters +// it writes the InvalidChars error to the writer and returns false if any of them fail the check +// It will also return an error if the string is empty +func verifyStringsWithRegex(writer http.ResponseWriter, strings []string, re *regexp.Regexp) bool { + for _, s := range strings { + if len(s) > 0 && re.MatchString(s) { + continue + } + errors := responseError{ + ID: "InvalidChars", + Msg: "Invalid characters in API path", + } + statusResponseError(writer, http.StatusBadRequest, errors) + return false + } + return true +} + +func statusResponseError(writer http.ResponseWriter, code int, errors ...responseError) { + type reply struct { + Status bool `json:"status"` + Errors []responseError `json:"errors,omitempty"` + } + + writer.WriteHeader(code) + err := json.NewEncoder(writer).Encode(reply{false, errors}) + common.PanicOnError(err) +} + +func (api *API) statusHandler(writer http.ResponseWriter, request *http.Request, _ httprouter.Params) { + type reply struct { + API string `json:"api"` + DBSupported bool `json:"db_supported"` + DBVersion string `json:"db_version"` + SchemaVersion string `json:"schema_version"` + Backend string `json:"backend"` + Build string `json:"build"` + Messages []string `json:"msgs"` + } + + err := json.NewEncoder(writer).Encode(reply{ + API: "1", + DBSupported: true, + DBVersion: "0", + SchemaVersion: "0", + Backend: "osbuild-composer", + Build: "devel", + Messages: make([]string, 0), + }) + common.PanicOnError(err) +} + +func (api *API) sourceListHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + type reply struct { + Sources []string `json:"sources"` + } + + // The v0 API used the repo Name, a descriptive string, as the key + // In the v1 API this was changed to separate the Name and the Id (a short identifier) + var names []string + if isRequestVersionAtLeast(params, 1) { + names = api.store.ListSourcesById() + } else { + names = api.store.ListSourcesByName() + } + names = append(names, api.systemRepoNames()...) + + err := json.NewEncoder(writer).Encode(reply{ + Sources: names, + }) + common.PanicOnError(err) +} + +func (api *API) sourceEmptyInfoHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + errors := responseError{ + Code: http.StatusNotFound, + ID: "HTTPError", + Msg: "Not Found", + } + statusResponseError(writer, http.StatusNotFound, errors) +} + +// getSourceConfigs retrieves the list of sources from the system repos an store +// Returning a list of store.SourceConfig entries indexed by the id of the source +func (api *API) getSourceConfigs(params httprouter.Params) (map[string]store.SourceConfig, []responseError) { + names := params.ByName("sources") + + sources := map[string]store.SourceConfig{} + errors := []responseError{} + + // if names is "*" we want all sources + if names == "*" { + sources = api.store.GetAllSourcesByID() + for _, repo := range api.repos { + sources[repo.Name] = store.NewSourceConfig(repo, true) + } + } else { + for _, name := range strings.Split(names, ",") { + // check if the source is one of the base repos + found := false + for _, repo := range api.repos { + if name == repo.Name { + sources[repo.Name] = store.NewSourceConfig(repo, true) + found = true + break + } + } + if found { + continue + } + // check if the source is in the store + if source := api.store.GetSource(name); source != nil { + sources[name] = *source + } else { + error := responseError{ + ID: "UnknownSource", + Msg: fmt.Sprintf("%s is not a valid source", name), + } + errors = append(errors, error) + } + } + } + + return sources, errors +} + +// sourceInfoHandler routes the call to the correct API version handler +func (api *API) sourceInfoHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + versionString := params.ByName("version") + version, err := strconv.ParseUint(versionString, 10, 0) + if err != nil { + notFoundHandler(writer, nil) + return + } + switch version { + case 0: + api.sourceInfoHandlerV0(writer, request, params) + case 1: + api.sourceInfoHandlerV1(writer, request, params) + default: + notFoundHandler(writer, nil) + } +} + +// sourceInfoHandlerV0 handles the API v0 response +func (api *API) sourceInfoHandlerV0(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + sources, errors := api.getSourceConfigs(params) + + // V0 responses use the source name as the key + v0Sources := make(map[string]SourceConfigV0, len(sources)) + for _, s := range sources { + v0Sources[s.Name] = NewSourceConfigV0(s) + } + + q, err := url.ParseQuery(request.URL.RawQuery) + if err != nil { + errors := responseError{ + ID: "InvalidChars", + Msg: fmt.Sprintf("invalid query string: %v", err), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + format := q.Get("format") + if format == "json" || format == "" { + err := json.NewEncoder(writer).Encode(SourceInfoResponseV0{ + Sources: v0Sources, + Errors: errors, + }) + common.PanicOnError(err) + } else if format == "toml" { + encoder := toml.NewEncoder(writer) + encoder.Indent = "" + err := encoder.Encode(sources) + common.PanicOnError(err) + } else { + errors := responseError{ + ID: "InvalidChars", + Msg: fmt.Sprintf("invalid format parameter: %s", format), + } + statusResponseError(writer, http.StatusBadRequest, errors) + } +} + +// sourceInfoHandlerV1 handles the API v0 response +func (api *API) sourceInfoHandlerV1(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + sources, errors := api.getSourceConfigs(params) + + // V1 responses use the source id as the key + v1Sources := make(map[string]SourceConfigV1, len(sources)) + for id, s := range sources { + v1Sources[id] = NewSourceConfigV1(id, s) + } + + q, err := url.ParseQuery(request.URL.RawQuery) + if err != nil { + errors := responseError{ + ID: "InvalidChars", + Msg: fmt.Sprintf("invalid query string: %v", err), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + format := q.Get("format") + if format == "json" || format == "" { + err := json.NewEncoder(writer).Encode(SourceInfoResponseV1{ + Sources: v1Sources, + Errors: errors, + }) + common.PanicOnError(err) + } else if format == "toml" { + encoder := toml.NewEncoder(writer) + encoder.Indent = "" + err := encoder.Encode(sources) + common.PanicOnError(err) + } else { + errors := responseError{ + ID: "InvalidChars", + Msg: fmt.Sprintf("invalid format parameter: %s", format), + } + statusResponseError(writer, http.StatusBadRequest, errors) + } +} + +// DecodeSourceConfigV0 parses a request.Body into a SourceConfigV0 +func DecodeSourceConfigV0(body io.Reader, contentType string) (source SourceConfigV0, err error) { + if contentType == "application/json" { + err = json.NewDecoder(body).Decode(&source) + } else if contentType == "text/x-toml" { + _, err = toml.DecodeReader(body, &source) + } else { + err = errors_package.New("blueprint must be in json or toml format") + } + return source, err +} + +// DecodeSourceConfigV1 parses a request.Body into a SourceConfigV1 +func DecodeSourceConfigV1(body io.Reader, contentType string) (source SourceConfigV1, err error) { + if contentType == "application/json" { + err = json.NewDecoder(body).Decode(&source) + } else if contentType == "text/x-toml" { + _, err = toml.DecodeReader(body, &source) + } else { + err = errors_package.New("blueprint must be in json or toml format") + } + + if err == nil && len(source.GetKey()) == 0 { + err = errors_package.New("'id' field is missing from request") + } + + return source, err +} + +func (api *API) sourceNewHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { // TODO: version 1 API + return + } + + contentType := request.Header["Content-Type"] + if len(contentType) == 0 { + errors := responseError{ + ID: "HTTPError", + Msg: "malformed Content-Type header", + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + if request.ContentLength == 0 { + errors := responseError{ + ID: "ProjectsError", + Msg: "Missing source", + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + var source SourceConfig + var err error + if isRequestVersionAtLeast(params, 1) { + source, err = DecodeSourceConfigV1(request.Body, contentType[0]) + } else { + source, err = DecodeSourceConfigV0(request.Body, contentType[0]) + } + + // Basic check of the source, should at least have a name and type + if err == nil { + if len(source.GetName()) == 0 { + err = errors_package.New("'name' field is missing from request") + } else if len(source.GetType()) == 0 { + err = errors_package.New("'type' field is missing from request") + } + } + + if err != nil { + errors := responseError{ + ID: "ProjectsError", + Msg: "Problem parsing POST body: " + err.Error(), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + api.store.PushSource(source.GetKey(), source.SourceConfig()) + + statusResponseOK(writer) +} + +func (api *API) sourceDeleteHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + name := strings.Split(params.ByName("source"), ",") + + if name[0] == "/" { + errors := responseError{ + Code: http.StatusNotFound, + ID: "HTTPError", + Msg: "Not Found", + } + statusResponseError(writer, http.StatusNotFound, errors) + return + } + + // Check for system repos and return an error + for _, id := range api.systemRepoNames() { + if id == name[0][1:] { + errors := responseError{ + ID: "SystemSource", + Msg: id + " is a system source, it cannot be deleted.", + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + } + + // Only delete the first name, which will have a / at the start because of the /*source route + if isRequestVersionAtLeast(params, 1) { + api.store.DeleteSourceByID(name[0][1:]) + } else { + api.store.DeleteSourceByName(name[0][1:]) + } + + statusResponseOK(writer) +} + +func (api *API) modulesListHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + type module struct { + Name string `json:"name"` + GroupType string `json:"group_type"` + } + + type reply struct { + Total uint `json:"total"` + Offset uint `json:"offset"` + Limit uint `json:"limit"` + Modules []module `json:"modules"` + } + + offset, limit, err := parseOffsetAndLimit(request.URL.Query()) + if err != nil { + errors := responseError{ + ID: "BadLimitOrOffset", + Msg: fmt.Sprintf("BadRequest: %s", err.Error()), + } + + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + modulesParam := params.ByName("modules") + + availablePackages, err := api.fetchPackageList() + + if err != nil { + errors := responseError{ + ID: "ModulesError", + Msg: fmt.Sprintf("msg: %s", err.Error()), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + var packages rpmmd.PackageList + if modulesParam != "" && modulesParam != "/" { + // we have modules for search + + // remove leading / + modulesParam = modulesParam[1:] + + names := strings.Split(modulesParam, ",") + + packages, err = availablePackages.Search(names...) + + if err != nil { + errors := responseError{ + ID: "ModulesError", + Msg: fmt.Sprintf("Wrong glob pattern: %s", err.Error()), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + if len(packages) == 0 { + errors := responseError{ + ID: "UnknownModule", + Msg: "No packages have been found.", + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + } else { + // just return all available packages + packages = availablePackages + } + + packageInfos := packages.ToPackageInfos() + + total := uint(len(packageInfos)) + start := min(offset, total) + n := min(limit, total-start) + + modules := make([]module, n) + for i := uint(0); i < n; i++ { + modules[i] = module{packageInfos[start+i].Name, "rpm"} + } + + err = json.NewEncoder(writer).Encode(reply{ + Total: total, + Offset: offset, + Limit: limit, + Modules: modules, + }) + common.PanicOnError(err) +} + +func (api *API) projectsListHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + type reply struct { + Total uint `json:"total"` + Offset uint `json:"offset"` + Limit uint `json:"limit"` + Projects []rpmmd.PackageInfo `json:"projects"` + } + + offset, limit, err := parseOffsetAndLimit(request.URL.Query()) + if err != nil { + errors := responseError{ + ID: "BadLimitOrOffset", + Msg: fmt.Sprintf("BadRequest: %s", err.Error()), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + availablePackages, err := api.fetchPackageList() + + if err != nil { + errors := responseError{ + ID: "ProjectsError", + Msg: fmt.Sprintf("msg: %s", err.Error()), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + packageInfos := availablePackages.ToPackageInfos() + + total := uint(len(packageInfos)) + start := min(offset, total) + n := min(limit, total-start) + + packages := make([]rpmmd.PackageInfo, n) + for i := uint(0); i < n; i++ { + packages[i] = packageInfos[start+i] + } + + err = json.NewEncoder(writer).Encode(reply{ + Total: total, + Offset: offset, + Limit: limit, + Projects: packages, + }) + common.PanicOnError(err) +} + +func (api *API) modulesInfoHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + type projectsReply struct { + Projects []rpmmd.PackageInfo `json:"projects"` + } + type modulesReply struct { + Modules []rpmmd.PackageInfo `json:"modules"` + } + + // handle both projects/info and modules/info, the latter includes dependencies + modulesRequested := strings.HasPrefix(request.URL.Path, "/api/v0/modules") + + var errorId, unknownErrorId string + if modulesRequested { + errorId = "ModulesError" + unknownErrorId = "UnknownModule" + } else { + errorId = "ProjectsError" + unknownErrorId = "UnknownProject" + } + + modules := params.ByName("modules") + + if modules == "" || modules == "/" { + errors := responseError{ + ID: unknownErrorId, + Msg: "No packages specified.", + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + // remove leading / + modules = modules[1:] + + names := strings.Split(modules, ",") + + availablePackages, err := api.fetchPackageList() + + if err != nil { + errors := responseError{ + ID: "ModulesError", + Msg: fmt.Sprintf("msg: %s", err.Error()), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + foundPackages, err := availablePackages.Search(names...) + + if err != nil { + errors := responseError{ + ID: errorId, + Msg: fmt.Sprintf("Wrong glob pattern: %s", err.Error()), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + if len(foundPackages) == 0 { + errors := responseError{ + ID: unknownErrorId, + Msg: "No packages have been found.", + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + packageInfos := foundPackages.ToPackageInfos() + + if modulesRequested { + for i := range packageInfos { + err := packageInfos[i].FillDependencies(api.rpmmd, api.repos, api.distro.ModulePlatformID(), api.arch.Name()) + if err != nil { + errors := responseError{ + ID: errorId, + Msg: fmt.Sprintf("Cannot depsolve package %s: %s", packageInfos[i].Name, err.Error()), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + } + } + + if modulesRequested { + err = json.NewEncoder(writer).Encode(modulesReply{packageInfos}) + } else { + err = json.NewEncoder(writer).Encode(projectsReply{packageInfos}) + } + common.PanicOnError(err) +} + +func (api *API) projectsDepsolveHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + type reply struct { + Projects []rpmmd.PackageSpec `json:"projects"` + } + + projects := params.ByName("projects") + + if projects == "" || projects == "/" { + errors := responseError{ + ID: "UnknownProject", + Msg: "No packages specified.", + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + // remove leading / + projects = projects[1:] + names := strings.Split(projects, ",") + + packages, _, err := api.rpmmd.Depsolve(names, nil, api.repos, api.distro.ModulePlatformID(), api.arch.Name()) + + if err != nil { + errors := responseError{ + ID: "PROJECTS_ERROR", + Msg: fmt.Sprintf("BadRequest: %s", err.Error()), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + err = json.NewEncoder(writer).Encode(reply{ + Projects: packages, + }) + common.PanicOnError(err) +} + +func (api *API) blueprintsListHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + type reply struct { + Total uint `json:"total"` + Offset uint `json:"offset"` + Limit uint `json:"limit"` + Blueprints []string `json:"blueprints"` + } + + offset, limit, err := parseOffsetAndLimit(request.URL.Query()) + if err != nil { + errors := responseError{ + ID: "BadLimitOrOffset", + Msg: fmt.Sprintf("BadRequest: %s", err.Error()), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + names := api.store.ListBlueprints() + total := uint(len(names)) + offset = min(offset, total) + limit = min(limit, total-offset) + + err = json.NewEncoder(writer).Encode(reply{ + Total: total, + Offset: offset, + Limit: limit, + Blueprints: names[offset : offset+limit], + }) + common.PanicOnError(err) +} + +func (api *API) blueprintsInfoHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + type change struct { + Changed bool `json:"changed"` + Name string `json:"name"` + } + type reply struct { + Blueprints []blueprint.Blueprint `json:"blueprints"` + Changes []change `json:"changes"` + Errors []responseError `json:"errors"` + } + + names := strings.Split(params.ByName("blueprints"), ",") + if names[0] == "/" { + errors := responseError{ + Code: http.StatusNotFound, + ID: "HTTPError", + Msg: "Not Found", + } + statusResponseError(writer, http.StatusNotFound, errors) + return + } + + // Remove the leading / from the first entry (check above ensures it is not just a / + names[0] = names[0][1:] + + if !verifyStringsWithRegex(writer, names, ValidBlueprintName) { + return + } + + query, err := url.ParseQuery(request.URL.RawQuery) + if err != nil { + errors := responseError{ + ID: "InvalidChars", + Msg: fmt.Sprintf("invalid query string: %v", err), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + blueprints := []blueprint.Blueprint{} + changes := []change{} + blueprintErrors := []responseError{} + + for _, name := range names { + blueprint, changed := api.store.GetBlueprint(name) + if blueprint == nil { + blueprintErrors = append(blueprintErrors, responseError{ + ID: "UnknownBlueprint", + Msg: fmt.Sprintf("%s: ", name), + }) + continue + } + blueprints = append(blueprints, *blueprint) + changes = append(changes, change{changed, blueprint.Name}) + } + + format := query.Get("format") + if format == "json" || format == "" { + err := json.NewEncoder(writer).Encode(reply{ + Blueprints: blueprints, + Changes: changes, + Errors: blueprintErrors, + }) + common.PanicOnError(err) + } else if format == "toml" { + // lorax concatenates multiple blueprints with `\n\n` here, + // which is never useful. Deviate by only returning the first + // blueprint. + if len(blueprints) > 1 { + errors := responseError{ + ID: "HTTPError", + Msg: "toml format only supported when requesting one blueprint", + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + if len(blueprintErrors) > 0 { + statusResponseError(writer, http.StatusBadRequest, blueprintErrors...) + return + } + encoder := toml.NewEncoder(writer) + encoder.Indent = "" + err := encoder.Encode(blueprints[0]) + common.PanicOnError(err) + } else { + errors := responseError{ + ID: "InvalidChars", + Msg: fmt.Sprintf("invalid format parameter: %s", format), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } +} + +func (api *API) blueprintsDepsolveHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + type entry struct { + Blueprint blueprint.Blueprint `json:"blueprint"` + Dependencies []rpmmd.PackageSpec `json:"dependencies"` + } + type reply struct { + Blueprints []entry `json:"blueprints"` + Errors []responseError `json:"errors"` + } + + names := strings.Split(params.ByName("blueprints"), ",") + if names[0] == "/" { + errors := responseError{ + Code: http.StatusNotFound, + ID: "HTTPError", + Msg: "Not Found", + } + statusResponseError(writer, http.StatusNotFound, errors) + return + } + + // Remove the leading / from the first entry (check above ensures it is not just a / + names[0] = names[0][1:] + + if !verifyStringsWithRegex(writer, names, ValidBlueprintName) { + return + } + + blueprints := []entry{} + blueprintsErrors := []responseError{} + for _, name := range names { + blueprint, _ := api.store.GetBlueprint(name) + if blueprint == nil { + blueprintsErrors = append(blueprintsErrors, responseError{ + ID: "UnknownBlueprint", + Msg: fmt.Sprintf("%s: blueprint not found", name), + }) + continue + } + + dependencies, _, err := api.depsolveBlueprint(blueprint, nil) + + if err != nil { + blueprintsErrors = append(blueprintsErrors, responseError{ + ID: "BlueprintsError", + Msg: fmt.Sprintf("%s: %s", name, err.Error()), + }) + dependencies = []rpmmd.PackageSpec{} + } + + blueprints = append(blueprints, entry{*blueprint, dependencies}) + } + + err := json.NewEncoder(writer).Encode(reply{ + Blueprints: blueprints, + Errors: blueprintsErrors, + }) + common.PanicOnError(err) +} + +// setPkgEVRA replaces the version globs in the blueprint with their EVRA values from the dependencies +// +// The dependencies must be pre-sorted for this function to work properly +// It will return an error if it cannot find a package in the dependencies +func setPkgEVRA(dependencies []rpmmd.PackageSpec, packages []blueprint.Package) error { + for pkgIndex, pkg := range packages { + i := sort.Search(len(dependencies), func(i int) bool { + return dependencies[i].Name >= pkg.Name + }) + if i < len(dependencies) && dependencies[i].Name == pkg.Name { + if dependencies[i].Epoch == 0 { + packages[pkgIndex].Version = fmt.Sprintf("%s-%s.%s", dependencies[i].Version, dependencies[i].Release, dependencies[i].Arch) + } else { + packages[pkgIndex].Version = fmt.Sprintf("%d:%s-%s.%s", dependencies[i].Epoch, dependencies[i].Version, dependencies[i].Release, dependencies[i].Arch) + } + } else { + // Packages should not be missing from the depsolve results + return fmt.Errorf("%s missing from depsolve results", pkg.Name) + } + } + return nil +} + +func (api *API) blueprintsFreezeHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + type blueprintFrozen struct { + Blueprint blueprint.Blueprint `json:"blueprint"` + } + + type reply struct { + Blueprints []blueprintFrozen `json:"blueprints"` + Errors []responseError `json:"errors"` + } + + names := strings.Split(params.ByName("blueprints"), ",") + if names[0] == "/" { + errors := responseError{ + Code: http.StatusNotFound, + ID: "HTTPError", + Msg: "Not Found", + } + statusResponseError(writer, http.StatusNotFound, errors) + return + } + + // Remove the leading / from the first entry (check above ensures it is not just a / + names[0] = names[0][1:] + + if !verifyStringsWithRegex(writer, names, ValidBlueprintName) { + return + } + + blueprints := []blueprintFrozen{} + errors := []responseError{} + for _, name := range names { + bp, _ := api.store.GetBlueprint(name) + if bp == nil { + rerr := responseError{ + ID: "UnknownBlueprint", + Msg: fmt.Sprintf("%s: blueprint_not_found", name), + } + errors = append(errors, rerr) + break + } + // Make a copy of the blueprint since we will be replacing the version globs + blueprint := bp.DeepCopy() + dependencies, _, err := api.depsolveBlueprint(&blueprint, nil) + if err != nil { + rerr := responseError{ + ID: "BlueprintsError", + Msg: fmt.Sprintf("%s: %s", name, err.Error()), + } + errors = append(errors, rerr) + break + } + // Sort dependencies by Name (names should be unique so no need to sort by EVRA) + sort.Slice(dependencies, func(i, j int) bool { + return dependencies[i].Name < dependencies[j].Name + }) + + err = setPkgEVRA(dependencies, blueprint.Packages) + if err != nil { + rerr := responseError{ + ID: "BlueprintsError", + Msg: fmt.Sprintf("%s: %s", name, err.Error()), + } + errors = append(errors, rerr) + break + } + + err = setPkgEVRA(dependencies, blueprint.Modules) + if err != nil { + rerr := responseError{ + ID: "BlueprintsError", + Msg: fmt.Sprintf("%s: %s", name, err.Error()), + } + errors = append(errors, rerr) + break + } + blueprints = append(blueprints, blueprintFrozen{blueprint}) + } + + format := request.URL.Query().Get("format") + + if format == "toml" { + // lorax concatenates multiple blueprints with `\n\n` here, + // which is never useful. Deviate by only returning the first + // blueprint. + if len(blueprints) == 0 { + // lorax-composer just outputs an empty string if there were no blueprints + writer.WriteHeader(http.StatusOK) + fmt.Fprintf(writer, "") + return + } else if len(blueprints) > 1 { + errors := responseError{ + ID: "HTTPError", + Msg: "toml format only supported when requesting one blueprint", + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + encoder := toml.NewEncoder(writer) + encoder.Indent = "" + err := encoder.Encode(blueprints[0].Blueprint) + common.PanicOnError(err) + } else { + err := json.NewEncoder(writer).Encode(reply{ + Blueprints: blueprints, + Errors: errors, + }) + common.PanicOnError(err) + } +} + +func (api *API) blueprintsDiffHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + type pack struct { + Package blueprint.Package `json:"Package"` + } + + type diff struct { + New *pack `json:"new"` + Old *pack `json:"old"` + } + + type reply struct { + Diffs []diff `json:"diff"` + } + + name := params.ByName("blueprint") + if !verifyStringsWithRegex(writer, []string{name}, ValidBlueprintName) { + return + } + + fromCommit := params.ByName("from") + if !verifyStringsWithRegex(writer, []string{fromCommit}, ValidBlueprintName) { + return + } + + toCommit := params.ByName("to") + if !verifyStringsWithRegex(writer, []string{toCommit}, ValidBlueprintName) { + return + } + + if len(name) == 0 || len(fromCommit) == 0 || len(toCommit) == 0 { + errors := responseError{ + Code: http.StatusNotFound, + ID: "HTTPError", + Msg: "Not Found", + } + statusResponseError(writer, http.StatusNotFound, errors) + return + } + if fromCommit != "NEWEST" { + errors := responseError{ + ID: "UnknownCommit", + Msg: fmt.Sprintf("ggit-error: revspec '%s' not found (-3)", fromCommit), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + if toCommit != "WORKSPACE" { + errors := responseError{ + ID: "UnknownCommit", + Msg: fmt.Sprintf("ggit-error: revspec '%s' not found (-3)", toCommit), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + // Fetch old and new blueprint details from store and return error if not found + oldBlueprint := api.store.GetBlueprintCommitted(name) + newBlueprint, _ := api.store.GetBlueprint(name) + if oldBlueprint == nil || newBlueprint == nil { + errors := responseError{ + ID: "UnknownBlueprint", + Msg: fmt.Sprintf("Unknown blueprint name: %s", name), + } + statusResponseError(writer, http.StatusNotFound, errors) + return + } + + newSlice := newBlueprint.Packages + oldMap := make(map[string]blueprint.Package) + diffs := []diff{} + + for _, oldPackage := range oldBlueprint.Packages { + oldMap[oldPackage.Name] = oldPackage + } + + // For each package in new blueprint check if the old one contains it + for _, newPackage := range newSlice { + oldPackage, found := oldMap[newPackage.Name] + // If found remove from old packages map but otherwise create a diff with the added package + if found { + delete(oldMap, oldPackage.Name) + // Create a diff if the versions changed + if oldPackage.Version != newPackage.Version { + diffs = append(diffs, diff{Old: &pack{oldPackage}, New: &pack{newPackage}}) + } + } else { + diffs = append(diffs, diff{Old: nil, New: &pack{newPackage}}) + } + } + + // All packages remaining in the old packages map have been removed in the new blueprint so create a diff + for _, oldPackage := range oldMap { + diffs = append(diffs, diff{Old: &pack{oldPackage}, New: nil}) + } + + err := json.NewEncoder(writer).Encode(reply{diffs}) + common.PanicOnError(err) +} + +func (api *API) blueprintsChangesHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + type change struct { + Changes []blueprint.Change `json:"changes"` + Name string `json:"name"` + Total int `json:"total"` + } + + type reply struct { + BlueprintsChanges []change `json:"blueprints"` + Errors []responseError `json:"errors"` + Limit uint `json:"limit"` + Offset uint `json:"offset"` + } + + names := strings.Split(params.ByName("blueprints"), ",") + if names[0] == "/" { + errors := responseError{ + Code: http.StatusNotFound, + ID: "HTTPError", + Msg: "Not Found", + } + statusResponseError(writer, http.StatusNotFound, errors) + return + } + + // Remove the leading / from the first entry (check above ensures it is not just a / + names[0] = names[0][1:] + + if !verifyStringsWithRegex(writer, names, ValidBlueprintName) { + return + } + + offset, limit, err := parseOffsetAndLimit(request.URL.Query()) + if err != nil { + errors := responseError{ + ID: "BadLimitOrOffset", + Msg: fmt.Sprintf("BadRequest: %s", err.Error()), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + allChanges := []change{} + errors := []responseError{} + for _, name := range names { + bpChanges := api.store.GetBlueprintChanges(name) + // Reverse the changes, newest first + reversed := make([]blueprint.Change, 0, len(bpChanges)) + for i := len(bpChanges) - 1; i >= 0; i-- { + reversed = append(reversed, bpChanges[i]) + } + if bpChanges != nil { + change := change{ + Changes: reversed, + Name: name, + Total: len(bpChanges), + } + allChanges = append(allChanges, change) + } else { + error := responseError{ + ID: "UnknownBlueprint", + Msg: name, + } + errors = append(errors, error) + } + } + + err = json.NewEncoder(writer).Encode(reply{ + BlueprintsChanges: allChanges, + Errors: errors, + Offset: offset, + Limit: limit, + }) + common.PanicOnError(err) +} + +func (api *API) blueprintsNewHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + contentType := request.Header["Content-Type"] + if len(contentType) == 0 { + errors := responseError{ + ID: "BlueprintsError", + Msg: "missing Content-Type header", + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + if request.ContentLength == 0 { + errors := responseError{ + ID: "BlueprintsError", + Msg: "Missing blueprint", + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + var blueprint blueprint.Blueprint + var err error + if contentType[0] == "application/json" { + err = json.NewDecoder(request.Body).Decode(&blueprint) + } else if contentType[0] == "text/x-toml" { + _, err = toml.DecodeReader(request.Body, &blueprint) + } else { + err = errors_package.New("blueprint must be in json or toml format") + } + + if err != nil { + errors := responseError{ + ID: "BlueprintsError", + Msg: "400 Bad Request: The browser (or proxy) sent a request that this server could not understand: " + err.Error(), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + if !verifyStringsWithRegex(writer, []string{blueprint.Name}, ValidBlueprintName) { + return + } + + commitMsg := "Recipe " + blueprint.Name + ", version " + blueprint.Version + " saved." + err = api.store.PushBlueprint(blueprint, commitMsg) + if err != nil { + errors := responseError{ + ID: "BlueprintsError", + Msg: err.Error(), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + statusResponseOK(writer) +} + +func (api *API) blueprintsWorkspaceHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + contentType := request.Header["Content-Type"] + if len(contentType) == 0 { + errors := responseError{ + ID: "BlueprintsError", + Msg: "missing Content-Type header", + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + if request.ContentLength == 0 { + errors := responseError{ + ID: "BlueprintsError", + Msg: "Missing blueprint", + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + var blueprint blueprint.Blueprint + var err error + if contentType[0] == "application/json" { + err = json.NewDecoder(request.Body).Decode(&blueprint) + } else if contentType[0] == "text/x-toml" { + _, err = toml.DecodeReader(request.Body, &blueprint) + } else { + err = errors_package.New("blueprint must be in json or toml format") + } + + if err != nil { + errors := responseError{ + ID: "BlueprintsError", + Msg: "400 Bad Request: The browser (or proxy) sent a request that this server could not understand: " + err.Error(), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + if !verifyStringsWithRegex(writer, []string{blueprint.Name}, ValidBlueprintName) { + return + } + + err = api.store.PushBlueprintToWorkspace(blueprint) + if err != nil { + errors := responseError{ + ID: "BlueprintsError", + Msg: err.Error(), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + statusResponseOK(writer) +} + +func (api *API) blueprintUndoHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + name := params.ByName("blueprint") + if !verifyStringsWithRegex(writer, []string{name}, ValidBlueprintName) { + return + } + + commit := params.ByName("commit") + if !verifyStringsWithRegex(writer, []string{commit}, ValidBlueprintName) { + return + } + + bpChange, err := api.store.GetBlueprintChange(name, commit) + if err != nil { + errors := responseError{ + ID: "BlueprintsError", + Msg: err.Error(), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + bp := bpChange.Blueprint + commitMsg := name + ".toml reverted to commit " + commit + err = api.store.PushBlueprint(bp, commitMsg) + if err != nil { + errors := responseError{ + ID: "BlueprintsError", + Msg: err.Error(), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + statusResponseOK(writer) +} + +func (api *API) blueprintDeleteHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + name := params.ByName("blueprint") + if !verifyStringsWithRegex(writer, []string{name}, ValidBlueprintName) { + return + } + + if err := api.store.DeleteBlueprint(name); err != nil { + errors := responseError{ + ID: "BlueprintsError", + Msg: err.Error(), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + statusResponseOK(writer) +} + +func (api *API) blueprintDeleteWorkspaceHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + name := params.ByName("blueprint") + if !verifyStringsWithRegex(writer, []string{name}, ValidBlueprintName) { + return + } + + if err := api.store.DeleteBlueprintFromWorkspace(name); err != nil { + errors := responseError{ + ID: "BlueprintsError", + Msg: err.Error(), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + statusResponseOK(writer) +} + +// blueprintsTagHandler tags the current blueprint commit as a new revision +func (api *API) blueprintsTagHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + name := params.ByName("blueprint") + if !verifyStringsWithRegex(writer, []string{name}, ValidBlueprintName) { + return + } + + err := api.store.TagBlueprint(name) + if err != nil { + errors := responseError{ + ID: "BlueprintsError", + Msg: err.Error(), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + statusResponseOK(writer) +} + +// Schedule new compose by first translating the appropriate blueprint into a pipeline and then +// pushing it into the channel for waiting builds. +func (api *API) composeHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + type OSTreeRequest struct { + Ref string `json:"ref"` + Parent string `json:"parent"` + } + + // https://weldr.io/lorax/pylorax.api.html#pylorax.api.v0.v0_compose_start + type ComposeRequest struct { + BlueprintName string `json:"blueprint_name"` + ComposeType string `json:"compose_type"` + Size uint64 `json:"size"` + OSTree OSTreeRequest `json:"ostree"` + Branch string `json:"branch"` + Upload *uploadRequest `json:"upload"` + } + type ComposeReply struct { + BuildID uuid.UUID `json:"build_id"` + Status bool `json:"status"` + } + + contentType := request.Header["Content-Type"] + if len(contentType) != 1 || contentType[0] != "application/json" { + errors := responseError{ + ID: "MissingPost", + Msg: "blueprint must be json", + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + var cr ComposeRequest + err := json.NewDecoder(request.Body).Decode(&cr) + if err != nil { + errors := responseError{ + Code: http.StatusNotFound, + ID: "HTTPError", + Msg: "Not Found", + } + statusResponseError(writer, http.StatusNotFound, errors) + return + } + + imageType, err := api.arch.GetImageType(cr.ComposeType) + if err != nil { + errors := responseError{ + ID: "UnknownComposeType", + Msg: fmt.Sprintf("Unknown compose type for architecture: %s", cr.ComposeType), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + if !verifyStringsWithRegex(writer, []string{cr.BlueprintName}, ValidBlueprintName) { + return + } + + composeID := uuid.New() + + var targets []*target.Target + if isRequestVersionAtLeast(params, 1) && cr.Upload != nil { + t := uploadRequestToTarget(*cr.Upload, imageType) + targets = append(targets, t) + } + + targets = append(targets, target.NewLocalTarget( + &target.LocalTargetOptions{ + ComposeId: composeID, + ImageBuildId: 0, + Filename: imageType.Filename(), + StreamOptimized: imageType.Name() == "vmdk", // TODO: move conversion to osbuild + }, + )) + + bp := api.store.GetBlueprintCommitted(cr.BlueprintName) + if bp == nil { + errors := responseError{ + ID: "UnknownBlueprint", + Msg: fmt.Sprintf("Unknown blueprint name: %s", cr.BlueprintName), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + packages, buildPackages, err := api.depsolveBlueprint(bp, imageType) + if err != nil { + errors := responseError{ + ID: "DepsolveError", + Msg: err.Error(), + } + statusResponseError(writer, http.StatusInternalServerError, errors) + return + } + + // Check for test parameter + q, err := url.ParseQuery(request.URL.RawQuery) + if err != nil { + errors := responseError{ + ID: "InvalidChars", + Msg: fmt.Sprintf("invalid query string: %v", err), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + size := imageType.Size(cr.Size) + manifest, err := imageType.Manifest(bp.Customizations, + distro.ImageOptions{ + Size: size, + OSTree: distro.OSTreeImageOptions{ + Ref: cr.OSTree.Ref, + Parent: cr.OSTree.Parent, + }, + }, + api.allRepositories(), + packages, + buildPackages) + if err != nil { + errors := responseError{ + ID: "ManifestCreationFailed", + Msg: fmt.Sprintf("failed to create osbuild manifest: %v", err), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + testMode := q.Get("test") + if testMode == "1" { + // Create a failed compose + err = api.store.PushTestCompose(composeID, manifest, imageType, bp, size, targets, false) + } else if testMode == "2" { + // Create a successful compose + err = api.store.PushTestCompose(composeID, manifest, imageType, bp, size, targets, true) + } else { + var jobId uuid.UUID + + jobId, err = api.workers.Enqueue(manifest, targets) + if err == nil { + err = api.store.PushCompose(composeID, manifest, imageType, bp, size, targets, jobId) + } + } + + // TODO: we should probably do some kind of blueprint validation in future + // for now, let's just 500 and bail out + if err != nil { + log.Println("error when pushing new compose: ", err.Error()) + errors := responseError{ + ID: "ComposePushErrored", + Msg: err.Error(), + } + statusResponseError(writer, http.StatusInternalServerError, errors) + return + } + + err = json.NewEncoder(writer).Encode(ComposeReply{ + BuildID: composeID, + Status: true, + }) + common.PanicOnError(err) +} + +func (api *API) composeDeleteHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + type composeDeleteStatus struct { + UUID uuid.UUID `json:"uuid"` + Status bool `json:"status"` + } + + type composeDeleteError struct { + ID string `json:"id"` + Msg string `json:"msg"` + } + + uuidsParam := params.ByName("uuids") + + results := []composeDeleteStatus{} + errors := []composeDeleteError{} + uuidStrings := strings.Split(uuidsParam, ",") + for _, uuidString := range uuidStrings { + id, err := uuid.Parse(uuidString) + if err != nil { + errors = append(errors, composeDeleteError{ + "UnknownUUID", + fmt.Sprintf("%s is not a valid uuid", uuidString), + }) + continue + } + + compose, exists := api.store.GetCompose(id) + if !exists { + errors = append(errors, composeDeleteError{ + "UnknownUUID", + fmt.Sprintf("compose %s doesn't exist", id), + }) + continue + } + + composeStatus := api.getComposeStatus(compose) + if composeStatus.State != common.CFinished && composeStatus.State != common.CFailed { + errors = append(errors, composeDeleteError{ + "BuildInWrongState", + fmt.Sprintf("Compose %s is not in FINISHED or FAILED.", id), + }) + continue + } + + err = api.store.DeleteCompose(id) + if err != nil { + errors = append(errors, composeDeleteError{ + "ComposeError", + fmt.Sprintf("%s: %s", id, err.Error()), + }) + continue + } + + // Delete artifacts from the worker server or — if that doesn't + // have this job — the compat output dir. Ignore errors, + // because there's no point of reporting them to the client + // after the compose itself has already been deleted. + err = api.workers.DeleteArtifacts(compose.ImageBuild.JobID) + if err == jobqueue.ErrNotExist && api.compatOutputDir != "" { + _ = os.RemoveAll(path.Join(api.compatOutputDir, id.String())) + } + + results = append(results, composeDeleteStatus{id, true}) + } + + reply := struct { + UUIDs []composeDeleteStatus `json:"uuids"` + Errors []composeDeleteError `json:"errors"` + }{results, errors} + + err := json.NewEncoder(writer).Encode(reply) + common.PanicOnError(err) +} + +func (api *API) composeCancelHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + uuidString := params.ByName("uuid") + id, err := uuid.Parse(uuidString) + if err != nil { + errors := responseError{ + ID: "UnknownUUID", + Msg: fmt.Sprintf("%s is not a valid build uuid", uuidString), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + compose, exists := api.store.GetCompose(id) + if !exists { + errors := responseError{ + ID: "UnknownUUID", + Msg: fmt.Sprintf("Compose %s doesn't exist", uuidString), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + composeStatus := api.getComposeStatus(compose) + if composeStatus.State == common.CWaiting { + errors := responseError{ + ID: "BuildInWrongState", + Msg: fmt.Sprintf("Build %s has not started yet. No logs to view.", uuidString), + } + statusResponseError(writer, http.StatusOK, errors) // weirdly, Lorax returns 200 in this case + return + } + + err = api.workers.Cancel(compose.ImageBuild.JobID) + if err != nil { + errors := responseError{ + ID: "InternalServerError", + Msg: fmt.Sprintf("Internal server error: %v", err), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + reply := CancelComposeStatusV0{id, true} + _ = json.NewEncoder(writer).Encode(reply) +} + +func (api *API) composeTypesHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + type composeType struct { + Name string `json:"name"` + Enabled bool `json:"enabled"` + } + + var reply struct { + Types []composeType `json:"types"` + } + + for _, format := range api.arch.ListImageTypes() { + reply.Types = append(reply.Types, composeType{format, true}) + } + + err := json.NewEncoder(writer).Encode(reply) + common.PanicOnError(err) +} + +func (api *API) composeQueueHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + reply := struct { + New []*ComposeEntry `json:"new"` + Run []*ComposeEntry `json:"run"` + }{[]*ComposeEntry{}, []*ComposeEntry{}} + + includeUploads := isRequestVersionAtLeast(params, 1) + + composes := api.store.GetAllComposes() + for id, compose := range composes { + composeStatus := api.getComposeStatus(compose) + switch composeStatus.State { + case common.CWaiting: + reply.New = append(reply.New, composeToComposeEntry(id, compose, composeStatus, includeUploads)) + case common.CRunning: + reply.Run = append(reply.Run, composeToComposeEntry(id, compose, composeStatus, includeUploads)) + } + } + + err := json.NewEncoder(writer).Encode(reply) + common.PanicOnError(err) +} + +func (api *API) composeStatusHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + // TODO: lorax has some params: /api/v0/compose/status/[?blueprint=&status=&type=] + if !verifyRequestVersion(writer, params, 0) { + return + } + + var reply struct { + UUIDs []*ComposeEntry `json:"uuids"` + } + + uuidsParam := params.ByName("uuids") + + composes := api.store.GetAllComposes() + uuids := []uuid.UUID{} + + if uuidsParam != "*" { + for _, uuidString := range strings.Split(uuidsParam, ",") { + id, err := uuid.Parse(uuidString) + if err != nil { + errors := responseError{ + ID: "UnknownUUID", + Msg: fmt.Sprintf("%s is not a valid build uuid", uuidString), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + uuids = append(uuids, id) + } + } else { + for id := range composes { + uuids = append(uuids, id) + } + } + + q, err := url.ParseQuery(request.URL.RawQuery) + if err != nil { + errors := responseError{ + ID: "InvalidChars", + Msg: fmt.Sprintf("invalid query string: %v", err), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + filterBlueprint := q.Get("blueprint") + if len(filterBlueprint) > 0 && !verifyStringsWithRegex(writer, []string{filterBlueprint}, ValidBlueprintName) { + return + } + + filterStatus := q.Get("status") + filterImageType := q.Get("type") + + filteredUUIDs := []uuid.UUID{} + for _, id := range uuids { + compose, exists := composes[id] + if !exists { + continue + } + composeStatus := api.getComposeStatus(compose) + if filterBlueprint != "" && compose.Blueprint.Name != filterBlueprint { + continue + } else if filterStatus != "" && composeStatus.State.ToString() != filterStatus { + continue + } else if filterImageType != "" && compose.ImageBuild.ImageType.Name() != filterImageType { + continue + } + filteredUUIDs = append(filteredUUIDs, id) + } + + reply.UUIDs = []*ComposeEntry{} + includeUploads := isRequestVersionAtLeast(params, 1) + for _, id := range filteredUUIDs { + if compose, exists := composes[id]; exists { + composeStatus := api.getComposeStatus(compose) + reply.UUIDs = append(reply.UUIDs, composeToComposeEntry(id, compose, composeStatus, includeUploads)) + } + } + sortComposeEntries(reply.UUIDs) + + err = json.NewEncoder(writer).Encode(reply) + common.PanicOnError(err) +} + +func (api *API) composeInfoHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + uuidString := params.ByName("uuid") + id, err := uuid.Parse(uuidString) + if err != nil { + errors := responseError{ + ID: "UnknownUUID", + Msg: fmt.Sprintf("%s is not a valid build uuid", uuidString), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + compose, exists := api.store.GetCompose(id) + + if !exists { + errors := responseError{ + ID: "UnknownUUID", + Msg: fmt.Sprintf("%s is not a valid build uuid", uuidString), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + type Dependencies struct { + Packages []map[string]interface{} `json:"packages"` + } + + var reply struct { + ID uuid.UUID `json:"id"` + Config string `json:"config"` // anaconda config, let's ignore this field + Blueprint *blueprint.Blueprint `json:"blueprint"` // blueprint not frozen! + Commit string `json:"commit"` // empty for now + Deps Dependencies `json:"deps"` // empty for now + ComposeType string `json:"compose_type"` + QueueStatus string `json:"queue_status"` + ImageSize uint64 `json:"image_size"` + Uploads []uploadResponse `json:"uploads,omitempty"` + } + + reply.ID = id + reply.Blueprint = compose.Blueprint + reply.Deps = Dependencies{ + Packages: make([]map[string]interface{}, 0), + } + // Weldr API assumes only one image build per compose, that's why only the + // 1st build is considered + composeStatus := api.getComposeStatus(compose) + reply.ComposeType = compose.ImageBuild.ImageType.Name() + reply.QueueStatus = composeStatus.State.ToString() + reply.ImageSize = compose.ImageBuild.Size + + if isRequestVersionAtLeast(params, 1) { + reply.Uploads = targetsToUploadResponses(compose.ImageBuild.Targets, composeStatus.State) + } + + err = json.NewEncoder(writer).Encode(reply) + common.PanicOnError(err) +} + +func (api *API) composeImageHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + uuidString := params.ByName("uuid") + uuid, err := uuid.Parse(uuidString) + if err != nil { + errors := responseError{ + ID: "UnknownUUID", + Msg: fmt.Sprintf("%s is not a valid build uuid", uuidString), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + compose, exists := api.store.GetCompose(uuid) + if !exists { + errors := responseError{ + ID: "UnknownUUID", + Msg: fmt.Sprintf("Compose %s doesn't exist", uuidString), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + composeStatus := api.getComposeStatus(compose) + if composeStatus.State != common.CFinished { + errors := responseError{ + ID: "BuildInWrongState", + Msg: fmt.Sprintf("Build %s is in wrong state: %s", uuidString, composeStatus.State.ToString()), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + imageName := compose.ImageBuild.ImageType.Filename() + imageMime := compose.ImageBuild.ImageType.MIMEType() + + reader, fileSize, err := api.openImageFile(uuid, compose) + if err != nil { + errors := responseError{ + ID: "InternalServerError", + Msg: fmt.Sprintf("Error accessing image file for compose %s: %v", uuid, err), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + writer.Header().Set("Content-Disposition", "attachment; filename="+uuid.String()+"-"+imageName) + writer.Header().Set("Content-Type", imageMime) + writer.Header().Set("Content-Length", fmt.Sprintf("%d", fileSize)) + + _, err = io.Copy(writer, reader) + common.PanicOnError(err) +} + +// composeMetadataHandler returns a tar of the metadata used to compose the requested UUID +func (api *API) composeMetadataHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + uuidString := params.ByName("uuid") + uuid, err := uuid.Parse(uuidString) + if err != nil { + errors := responseError{ + ID: "UnknownUUID", + Msg: fmt.Sprintf("%s is not a valid build uuid", uuidString), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + compose, exists := api.store.GetCompose(uuid) + if !exists { + errors := responseError{ + ID: "UnknownUUID", + Msg: fmt.Sprintf("Compose %s doesn't exist", uuidString), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + composeStatus := api.getComposeStatus(compose) + if composeStatus.State != common.CFinished && composeStatus.State != common.CFailed { + errors := responseError{ + ID: "BuildInWrongState", + Msg: fmt.Sprintf("Build %s is in wrong state: %s", uuidString, composeStatus.State.ToString()), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + metadata, err := json.Marshal(&compose.ImageBuild.Manifest) + common.PanicOnError(err) + + writer.Header().Set("Content-Disposition", "attachment; filename="+uuid.String()+"-metadata.tar") + writer.Header().Set("Content-Type", "application/x-tar") + // NOTE: Do not set Content-Length, it will use chunked transfer encoding automatically + + tw := tar.NewWriter(writer) + hdr := &tar.Header{ + Name: uuid.String() + ".json", + Mode: 0600, + Size: int64(len(metadata)), + ModTime: time.Now().Truncate(time.Second), + } + err = tw.WriteHeader(hdr) + common.PanicOnError(err) + + _, err = tw.Write(metadata) + common.PanicOnError(err) + + err = tw.Close() + common.PanicOnError(err) +} + +// composeResultsHandler returns a tar of the metadata, logs, and image from a compose +func (api *API) composeResultsHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + uuidString := params.ByName("uuid") + uuid, err := uuid.Parse(uuidString) + if err != nil { + errors := responseError{ + ID: "UnknownUUID", + Msg: fmt.Sprintf("%s is not a valid build uuid", uuidString), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + compose, exists := api.store.GetCompose(uuid) + if !exists { + errors := responseError{ + ID: "UnknownUUID", + Msg: fmt.Sprintf("Compose %s doesn't exist", uuidString), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + composeStatus := api.getComposeStatus(compose) + if composeStatus.State != common.CFinished && composeStatus.State != common.CFailed { + errors := responseError{ + ID: "BuildInWrongState", + Msg: fmt.Sprintf("Build %s is in wrong state: %s", uuidString, composeStatus.State.ToString()), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + metadata, err := json.Marshal(&compose.ImageBuild.Manifest) + common.PanicOnError(err) + + writer.Header().Set("Content-Disposition", "attachment; filename="+uuid.String()+".tar") + writer.Header().Set("Content-Type", "application/x-tar") + // NOTE: Do not set Content-Length, it should use chunked transfer encoding automatically + + tw := tar.NewWriter(writer) + hdr := &tar.Header{ + Name: uuid.String() + ".json", + Mode: 0644, + Size: int64(len(metadata)), + ModTime: time.Now().Truncate(time.Second), + } + err = tw.WriteHeader(hdr) + common.PanicOnError(err) + _, err = tw.Write(metadata) + common.PanicOnError(err) + + // Add the logs + var fileContents bytes.Buffer + if composeStatus.Result != nil { + err = composeStatus.Result.Write(&fileContents) + common.PanicOnError(err) + + hdr = &tar.Header{ + Name: "logs/osbuild.log", + Mode: 0644, + Size: int64(fileContents.Len()), + ModTime: time.Now().Truncate(time.Second), + } + err = tw.WriteHeader(hdr) + common.PanicOnError(err) + _, err = tw.Write(fileContents.Bytes()) + common.PanicOnError(err) + } + + reader, fileSize, err := api.openImageFile(uuid, compose) + if err == nil { + hdr = &tar.Header{ + Name: uuid.String() + "-" + compose.ImageBuild.ImageType.Filename(), + Mode: 0644, + Size: int64(fileSize), + ModTime: time.Now().Truncate(time.Second), + } + err = tw.WriteHeader(hdr) + common.PanicOnError(err) + _, err = io.Copy(tw, reader) + common.PanicOnError(err) + } + + err = tw.Close() + common.PanicOnError(err) +} + +func (api *API) composeLogsHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + uuidString := params.ByName("uuid") + id, err := uuid.Parse(uuidString) + if err != nil { + errors := responseError{ + ID: "UnknownUUID", + Msg: fmt.Sprintf("%s is not a valid build uuid", uuidString), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + compose, exists := api.store.GetCompose(id) + if !exists { + errors := responseError{ + ID: "UnknownUUID", + Msg: fmt.Sprintf("Compose %s doesn't exist", uuidString), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + composeStatus := api.getComposeStatus(compose) + if composeStatus.State != common.CFinished && composeStatus.State != common.CFailed { + errors := responseError{ + ID: "BuildInWrongState", + Msg: fmt.Sprintf("Build %s not in FINISHED or FAILED state.", uuidString), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + writer.Header().Set("Content-Disposition", "attachment; filename="+id.String()+"-logs.tar") + writer.Header().Set("Content-Type", "application/x-tar") + + tw := tar.NewWriter(writer) + + // tar format needs to contain file size before the actual file content, therefore the intermediate buffer + var fileContents bytes.Buffer + err = composeStatus.Result.Write(&fileContents) + common.PanicOnError(err) + + header := &tar.Header{ + Name: "logs/osbuild.log", + Mode: 0644, + Size: int64(fileContents.Len()), + ModTime: time.Now().Truncate(time.Second), + } + + err = tw.WriteHeader(header) + common.PanicOnError(err) + + _, err = io.Copy(tw, &fileContents) + common.PanicOnError(err) + + err = tw.Close() + common.PanicOnError(err) +} + +func (api *API) composeLogHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + // TODO: implement size param + if !verifyRequestVersion(writer, params, 0) { + return + } + + uuidString := params.ByName("uuid") + id, err := uuid.Parse(uuidString) + if err != nil { + errors := responseError{ + ID: "UnknownUUID", + Msg: fmt.Sprintf("%s is not a valid build uuid", uuidString), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + compose, exists := api.store.GetCompose(id) + if !exists { + errors := responseError{ + ID: "UnknownUUID", + Msg: fmt.Sprintf("Compose %s doesn't exist", uuidString), + } + statusResponseError(writer, http.StatusBadRequest, errors) + return + } + + composeStatus := api.getComposeStatus(compose) + if composeStatus.State == common.CWaiting { + errors := responseError{ + ID: "BuildInWrongState", + Msg: fmt.Sprintf("Build %s has not started yet. No logs to view.", uuidString), + } + statusResponseError(writer, http.StatusOK, errors) // weirdly, Lorax returns 200 in this case + return + } + + if composeStatus.State == common.CRunning { + fmt.Fprintf(writer, "Build %s is still running.\n", uuidString) + return + } + + err = composeStatus.Result.Write(writer) + common.PanicOnError(err) +} + +func (api *API) composeFinishedHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + reply := struct { + Finished []*ComposeEntry `json:"finished"` + }{[]*ComposeEntry{}} + + includeUploads := isRequestVersionAtLeast(params, 1) + for id, compose := range api.store.GetAllComposes() { + composeStatus := api.getComposeStatus(compose) + if composeStatus.State != common.CFinished { + continue + } + reply.Finished = append(reply.Finished, composeToComposeEntry(id, compose, composeStatus, includeUploads)) + } + sortComposeEntries(reply.Finished) + + err := json.NewEncoder(writer).Encode(reply) + common.PanicOnError(err) +} + +func (api *API) composeFailedHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 0) { + return + } + + reply := struct { + Failed []*ComposeEntry `json:"failed"` + }{[]*ComposeEntry{}} + + includeUploads := isRequestVersionAtLeast(params, 1) + for id, compose := range api.store.GetAllComposes() { + composeStatus := api.getComposeStatus(compose) + if composeStatus.State != common.CFailed { + continue + } + reply.Failed = append(reply.Failed, composeToComposeEntry(id, compose, composeStatus, includeUploads)) + } + sortComposeEntries(reply.Failed) + + err := json.NewEncoder(writer).Encode(reply) + common.PanicOnError(err) +} + +func (api *API) fetchPackageList() (rpmmd.PackageList, error) { + packages, _, err := api.rpmmd.FetchMetadata(api.allRepositories(), api.distro.ModulePlatformID(), api.arch.Name()) + return packages, err +} + +// Returns all configured repositories (base + sources) as rpmmd.RepoConfig +func (api *API) allRepositories() []rpmmd.RepoConfig { + repos := append([]rpmmd.RepoConfig{}, api.repos...) + for id, source := range api.store.GetAllSourcesByID() { + repos = append(repos, source.RepoConfig(id)) + } + return repos +} + +func (api *API) depsolveBlueprint(bp *blueprint.Blueprint, imageType distro.ImageType) ([]rpmmd.PackageSpec, []rpmmd.PackageSpec, error) { + repos := api.allRepositories() + + specs := bp.GetPackages() + excludeSpecs := []string{} + if imageType != nil { + // When the output type is known, include the base packages in the depsolve + // transaction. + specs, excludeSpecs = imageType.Packages(*bp) + } + + packages, _, err := api.rpmmd.Depsolve(specs, excludeSpecs, repos, api.distro.ModulePlatformID(), api.arch.Name()) + if err != nil { + return nil, nil, err + } + + buildPackages := []rpmmd.PackageSpec{} + if imageType != nil { + buildSpecs := imageType.BuildPackages() + buildPackages, _, err = api.rpmmd.Depsolve(buildSpecs, nil, repos, api.distro.ModulePlatformID(), api.arch.Name()) + if err != nil { + return nil, nil, err + } + } + + return packages, buildPackages, err +} + +func (api *API) uploadsScheduleHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 1) { + return + } + + // TODO: implement this route (it is v1 only) + notImplementedHandler(writer, request, params) +} + +func (api *API) uploadsDeleteHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 1) { + return + } + + // TODO: implement this route (it is v1 only) + notImplementedHandler(writer, request, params) +} + +func (api *API) uploadsInfoHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 1) { + return + } + + // TODO: implement this route (it is v1 only) + notImplementedHandler(writer, request, params) +} + +func (api *API) uploadsLogHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 1) { + return + } + + // TODO: implement this route (it is v1 only) + notImplementedHandler(writer, request, params) +} + +func (api *API) uploadsResetHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 1) { + return + } + + // TODO: implement this route (it is v1 only) + notImplementedHandler(writer, request, params) +} + +func (api *API) uploadsCancelHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 1) { + return + } + + // TODO: implement this route (it is v1 only) + notImplementedHandler(writer, request, params) +} + +func (api *API) providersHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 1) { + return + } + + // TODO: implement this route (it is v1 only) + notImplementedHandler(writer, request, params) +} + +func (api *API) providersSaveHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 1) { + return + } + + // TODO: implement this route (it is v1 only) + notImplementedHandler(writer, request, params) +} + +func (api *API) providersDeleteHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + if !verifyRequestVersion(writer, params, 1) { + return + } + + // TODO: implement this route (it is v1 only) + notImplementedHandler(writer, request, params) +} diff --git a/internal/weldr/api_test.go b/internal/weldr/api_test.go new file mode 100644 index 0000000..3d973a4 --- /dev/null +++ b/internal/weldr/api_test.go @@ -0,0 +1,1035 @@ +package weldr + +import ( + "archive/tar" + "bytes" + "io" + "math/rand" + "net/http" + "net/http/httptest" + "os" + "strconv" + "testing" + "time" + + "github.com/osbuild/osbuild-composer/internal/blueprint" + "github.com/osbuild/osbuild-composer/internal/common" + "github.com/osbuild/osbuild-composer/internal/distro" + test_distro "github.com/osbuild/osbuild-composer/internal/distro/fedoratest" + rpmmd_mock "github.com/osbuild/osbuild-composer/internal/mocks/rpmmd" + "github.com/osbuild/osbuild-composer/internal/rpmmd" + "github.com/osbuild/osbuild-composer/internal/store" + "github.com/osbuild/osbuild-composer/internal/target" + "github.com/osbuild/osbuild-composer/internal/test" + + "github.com/BurntSushi/toml" + "github.com/google/go-cmp/cmp" + "github.com/stretchr/testify/require" +) + +func createWeldrAPI(fixtureGenerator rpmmd_mock.FixtureGenerator) (*API, *store.Store) { + fixture := fixtureGenerator() + rpm := rpmmd_mock.NewRPMMDMock(fixture) + repos := []rpmmd.RepoConfig{{Name: "test-id", BaseURL: "http://example.com/test/os/x86_64", CheckGPG: true}} + d := test_distro.New() + arch, err := d.GetArch("x86_64") + if err != nil { + panic(err) + } + + return New(rpm, arch, d, repos, nil, fixture.Store, fixture.Workers, ""), fixture.Store +} + +func TestBasic(t *testing.T) { + var cases = []struct { + Path string + ExpectedStatus int + ExpectedJSON string + }{ + {"/api/status", http.StatusOK, `{"api":"1","db_supported":true,"db_version":"0","schema_version":"0","backend":"osbuild-composer","build":"devel","msgs":[]}`}, + + {"/api/v0/projects/source/list", http.StatusOK, `{"sources":["test-id"]}`}, + + {"/api/v0/projects/source/info", http.StatusNotFound, `{"errors":[{"code":404,"id":"HTTPError","msg":"Not Found"}],"status":false}`}, + {"/api/v0/projects/source/info/", http.StatusNotFound, `{"errors":[{"code":404,"id":"HTTPError","msg":"Not Found"}],"status":false}`}, + {"/api/v0/projects/source/info/foo", http.StatusOK, `{"errors":[{"id":"UnknownSource","msg":"foo is not a valid source"}],"sources":{}}`}, + {"/api/v0/projects/source/info/test-id", http.StatusOK, `{"sources":{"test-id":{"name":"test-id","type":"yum-baseurl","url":"http://example.com/test/os/x86_64","check_gpg":true,"check_ssl":true,"system":true}},"errors":[]}`}, + {"/api/v0/projects/source/info/*", http.StatusOK, `{"sources":{"test-id":{"name":"test-id","type":"yum-baseurl","url":"http://example.com/test/os/x86_64","check_gpg":true,"check_ssl":true,"system":true}},"errors":[]}`}, + + {"/api/v0/blueprints/list", http.StatusOK, `{"total":1,"offset":0,"limit":1,"blueprints":["test"]}`}, + {"/api/v0/blueprints/info/", http.StatusNotFound, `{"errors":[{"code":404,"id":"HTTPError","msg":"Not Found"}],"status":false}`}, + {"/api/v0/blueprints/info/foo", http.StatusOK, `{"blueprints":[],"changes":[],"errors":[{"id":"UnknownBlueprint","msg":"foo: "}]}`}, + } + + for _, c := range cases { + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + test.TestRoute(t, api, true, "GET", c.Path, ``, c.ExpectedStatus, c.ExpectedJSON) + } +} + +func TestBlueprintsNew(t *testing.T) { + var cases = []struct { + Method string + Path string + Body string + ExpectedStatus int + ExpectedJSON string + }{ + {"POST", "/api/v0/blueprints/new", `{"name":"test","description":"Test","packages":[],"version":""}`, http.StatusOK, `{"status":true}`}, + {"POST", "/api/v0/blueprints/new", `{"name":"test","description":"Test","packages":[{"name":"httpd","version":"2.4.*"}],"version":"0.0.0"}`, http.StatusOK, `{"status":true}`}, + {"POST", "/api/v0/blueprints/new", `{"name":"test","description":"Test","packages:}`, http.StatusBadRequest, `{"status":false,"errors":[{"id":"BlueprintsError","msg":"400 Bad Request: The browser (or proxy) sent a request that this server could not understand: unexpected EOF"}]}`}, + {"POST", "/api/v0/blueprints/new", `{"name":"","description":"Test","packages":[{"name":"httpd","version":"2.4.*"}],"version":"0.0.0"}`, http.StatusBadRequest, `{"status":false,"errors":[{"id":"InvalidChars","msg":"Invalid characters in API path"}]}`}, + {"POST", "/api/v0/blueprints/new", ``, http.StatusBadRequest, `{"status":false,"errors":[{"id":"BlueprintsError","msg":"Missing blueprint"}]}`}, + } + + for _, c := range cases { + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + test.TestRoute(t, api, true, c.Method, c.Path, c.Body, c.ExpectedStatus, c.ExpectedJSON) + } +} + +func TestBlueprintsNewToml(t *testing.T) { + blueprint := ` +name = "test" +description = "Test" +version = "0.0.0" + +[[packages]] +name = "httpd" +version = "2.4.*"` + + req := httptest.NewRequest("POST", "/api/v0/blueprints/new", bytes.NewReader([]byte(blueprint))) + req.Header.Set("Content-Type", "text/x-toml") + recorder := httptest.NewRecorder() + + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + api.ServeHTTP(recorder, req) + + r := recorder.Result() + require.Equal(t, http.StatusOK, r.StatusCode) +} + +func TestBlueprintsEmptyToml(t *testing.T) { + req := httptest.NewRequest("POST", "/api/v0/blueprints/new", bytes.NewReader(nil)) + req.Header.Set("Content-Type", "text/x-toml") + recorder := httptest.NewRecorder() + + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + api.ServeHTTP(recorder, req) + + r := recorder.Result() + require.Equal(t, http.StatusBadRequest, r.StatusCode) +} + +func TestBlueprintsInvalidToml(t *testing.T) { + blueprint := ` +name = "test" +description = "Test" +version = "0.0.0" + +[[packages +name = "httpd" +version = "2.4.*"` + + req := httptest.NewRequest("POST", "/api/v0/blueprints/new", bytes.NewReader([]byte(blueprint))) + req.Header.Set("Content-Type", "text/x-toml") + recorder := httptest.NewRecorder() + + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + api.ServeHTTP(recorder, req) + + r := recorder.Result() + require.Equal(t, http.StatusBadRequest, r.StatusCode) +} + +func TestBlueprintsWorkspaceJSON(t *testing.T) { + var cases = []struct { + Method string + Path string + Body string + ExpectedStatus int + ExpectedJSON string + }{ + {"POST", "/api/v0/blueprints/workspace", `{"name":"test","description":"Test","packages":[{"name":"systemd","version":"123"}],"version":"0.0.0"}`, http.StatusOK, `{"status":true}`}, + {"POST", "/api/v0/blueprints/workspace", `{"name":"test","description":"Test","packages:}`, http.StatusBadRequest, `{"status":false,"errors":[{"id":"BlueprintsError","msg":"400 Bad Request: The browser (or proxy) sent a request that this server could not understand: unexpected EOF"}]}`}, + {"POST", "/api/v0/blueprints/workspace", ``, http.StatusBadRequest, `{"status":false,"errors":[{"id":"BlueprintsError","msg":"Missing blueprint"}]}`}, + } + + for _, c := range cases { + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + test.TestRoute(t, api, true, c.Method, c.Path, c.Body, c.ExpectedStatus, c.ExpectedJSON) + } +} + +func TestBlueprintsWorkspaceTOML(t *testing.T) { + blueprint := ` +name = "test" +description = "Test" +version = "0.0.0" + +[[packages]] +name = "httpd" +version = "2.4.*"` + + req := httptest.NewRequest("POST", "/api/v0/blueprints/workspace", bytes.NewReader([]byte(blueprint))) + req.Header.Set("Content-Type", "text/x-toml") + recorder := httptest.NewRecorder() + + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + api.ServeHTTP(recorder, req) + + r := recorder.Result() + require.Equal(t, http.StatusOK, r.StatusCode) +} + +func TestBlueprintsWorkspaceEmptyTOML(t *testing.T) { + req := httptest.NewRequest("POST", "/api/v0/blueprints/workspace", bytes.NewReader(nil)) + req.Header.Set("Content-Type", "text/x-toml") + recorder := httptest.NewRecorder() + + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + api.ServeHTTP(recorder, req) + + r := recorder.Result() + require.Equal(t, http.StatusBadRequest, r.StatusCode) +} + +func TestBlueprintsWorkspaceInvalidTOML(t *testing.T) { + blueprint := ` +name = "test" +description = "Test" +version = "0.0.0" + +[[packages +name = "httpd" +version = "2.4.*"` + + req := httptest.NewRequest("POST", "/api/v0/blueprints/workspace", bytes.NewReader([]byte(blueprint))) + req.Header.Set("Content-Type", "text/x-toml") + recorder := httptest.NewRecorder() + + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + api.ServeHTTP(recorder, req) + + r := recorder.Result() + require.Equal(t, http.StatusBadRequest, r.StatusCode) +} + +func TestBlueprintsInfo(t *testing.T) { + var cases = []struct { + Method string + Path string + Body string + ExpectedStatus int + ExpectedJSON string + }{ + {"GET", "/api/v0/blueprints/info/test1", ``, http.StatusOK, `{"blueprints":[{"name":"test1","description":"Test","modules":[],"packages":[{"name":"httpd","version":"2.4.*"}],"groups":[],"version":"0.0.0"}], + "changes":[{"name":"test1","changed":false}], "errors":[]}`}, + {"GET", "/api/v0/blueprints/info/test2", ``, http.StatusOK, `{"blueprints":[{"name":"test2","description":"Test","modules":[],"packages":[{"name":"systemd","version":"123"}],"groups":[],"version":"0.0.0"}], + "changes":[{"name":"test2","changed":true}], "errors":[]}`}, + {"GET", "/api/v0/blueprints/info/test3-non", ``, http.StatusOK, `{"blueprints":[],"changes":[],"errors":[{"id":"UnknownBlueprint","msg":"test3-non: "}]}`}, + } + + for _, c := range cases { + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + test.SendHTTP(api, true, "POST", "/api/v0/blueprints/new", `{"name":"test1","description":"Test","packages":[{"name":"httpd","version":"2.4.*"}],"version":"0.0.0"}`) + test.SendHTTP(api, true, "POST", "/api/v0/blueprints/new", `{"name":"test2","description":"Test","packages":[{"name":"httpd","version":"2.4.*"}],"version":"0.0.0"}`) + test.SendHTTP(api, true, "POST", "/api/v0/blueprints/workspace", `{"name":"test2","description":"Test","packages":[{"name":"systemd","version":"123"}],"version":"0.0.0"}`) + test.TestRoute(t, api, true, c.Method, c.Path, c.Body, c.ExpectedStatus, c.ExpectedJSON) + test.SendHTTP(api, true, "DELETE", "/api/v0/blueprints/delete/test2", ``) + test.SendHTTP(api, true, "DELETE", "/api/v0/blueprints/delete/test1", ``) + } +} + +func TestBlueprintsInfoToml(t *testing.T) { + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + test.SendHTTP(api, true, "POST", "/api/v0/blueprints/new", `{"name":"test1","description":"Test","packages":[{"name":"httpd","version":"2.4.*"}],"version":"0.0.0"}`) + + req := httptest.NewRequest("GET", "/api/v0/blueprints/info/test1?format=toml", nil) + recorder := httptest.NewRecorder() + api.ServeHTTP(recorder, req) + + resp := recorder.Result() + require.Equal(t, http.StatusOK, resp.StatusCode) + + var got blueprint.Blueprint + _, err := toml.DecodeReader(resp.Body, &got) + require.NoErrorf(t, err, "error decoding toml file") + + expected := blueprint.Blueprint{ + Name: "test1", + Description: "Test", + Version: "0.0.0", + Packages: []blueprint.Package{ + {"httpd", "2.4.*"}, + }, + Groups: []blueprint.Group{}, + Modules: []blueprint.Package{}, + } + require.Equalf(t, expected, got, "received unexpected blueprint") +} + +func TestNonExistentBlueprintsInfoToml(t *testing.T) { + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + req := httptest.NewRequest("GET", "/api/v0/blueprints/info/test3-non?format=toml", nil) + recorder := httptest.NewRecorder() + api.ServeHTTP(recorder, req) + + resp := recorder.Result() + require.Equal(t, http.StatusBadRequest, resp.StatusCode) +} + +func TestSetPkgEVRA(t *testing.T) { + + // Sorted list of dependencies + deps := []rpmmd.PackageSpec{ + { + Name: "dep-package1", + Epoch: 0, + Version: "1.33", + Release: "2.fc30", + Arch: "x86_64", + }, + { + Name: "dep-package2", + Epoch: 0, + Version: "2.9", + Release: "1.fc30", + Arch: "x86_64", + }, + { + Name: "dep-package3", + Epoch: 7, + Version: "3.0.3", + Release: "1.fc30", + Arch: "x86_64", + }, + } + pkgs := []blueprint.Package{ + {Name: "dep-package1", Version: "*"}, + {Name: "dep-package2", Version: "*"}, + } + // Replace globs with dependencies + err := setPkgEVRA(deps, pkgs) + require.NoErrorf(t, err, "setPkgEVRA failed") + require.Equalf(t, "1.33-2.fc30.x86_64", pkgs[0].Version, "setPkgEVRA Unexpected pkg version") + require.Equalf(t, "2.9-1.fc30.x86_64", pkgs[1].Version, "setPkgEVRA Unexpected pkg version") + + // Test that a missing package in deps returns an error + pkgs = []blueprint.Package{ + {Name: "dep-package1", Version: "*"}, + {Name: "dep-package0", Version: "*"}, + } + err = setPkgEVRA(deps, pkgs) + require.EqualErrorf(t, err, "dep-package0 missing from depsolve results", "setPkgEVRA missing package failed to return error") +} + +func TestBlueprintsFreeze(t *testing.T) { + t.Run("json", func(t *testing.T) { + var cases = []struct { + Fixture rpmmd_mock.FixtureGenerator + Path string + ExpectedStatus int + ExpectedJSON string + }{ + {rpmmd_mock.BaseFixture, "/api/v0/blueprints/freeze/test,test2", http.StatusOK, `{"blueprints":[{"blueprint":{"name":"test","description":"Test","version":"0.0.1","packages":[{"name":"dep-package1","version":"1.33-2.fc30.x86_64"},{"name":"dep-package3","version":"7:3.0.3-1.fc30.x86_64"}],"modules":[{"name":"dep-package2","version":"2.9-1.fc30.x86_64"}],"groups":[]}},{"blueprint":{"name":"test2","description":"Test","version":"0.0.0","packages":[{"name":"dep-package1","version":"1.33-2.fc30.x86_64"},{"name":"dep-package3","version":"7:3.0.3-1.fc30.x86_64"}],"modules":[{"name":"dep-package2","version":"2.9-1.fc30.x86_64"}],"groups":[]}}],"errors":[]}`}, + } + + for _, c := range cases { + api, _ := createWeldrAPI(c.Fixture) + test.SendHTTP(api, false, "POST", "/api/v0/blueprints/new", `{"name":"test","description":"Test","packages":[{"name":"dep-package1","version":"*"},{"name":"dep-package3","version":"*"}], "modules":[{"name":"dep-package2","version":"*"}],"version":"0.0.0"}`) + test.SendHTTP(api, false, "POST", "/api/v0/blueprints/new", `{"name":"test2","description":"Test","packages":[{"name":"dep-package1","version":"*"},{"name":"dep-package3","version":"*"}], "modules":[{"name":"dep-package2","version":"*"}],"version":"0.0.0"}`) + test.TestRoute(t, api, false, "GET", c.Path, ``, c.ExpectedStatus, c.ExpectedJSON) + } + }) + + t.Run("toml", func(t *testing.T) { + var cases = []struct { + Fixture rpmmd_mock.FixtureGenerator + Path string + ExpectedStatus int + ExpectedTOML string + }{ + {rpmmd_mock.BaseFixture, "/api/v0/blueprints/freeze/test?format=toml", http.StatusOK, "name=\"test\"\n description=\"Test\"\n version=\"0.0.1\"\n groups = []\n [[packages]]\n name=\"dep-package1\"\n version=\"1.33-2.fc30.x86_64\"\n [[packages]]\n name=\"dep-package3\"\n version=\"7:3.0.3-1.fc30.x86_64\"\n [[modules]]\n name=\"dep-package2\"\n version=\"2.9-1.fc30.x86_64\""}, + {rpmmd_mock.BaseFixture, "/api/v0/blueprints/freeze/missing?format=toml", http.StatusOK, ""}, + } + + for _, c := range cases { + api, _ := createWeldrAPI(c.Fixture) + test.SendHTTP(api, false, "POST", "/api/v0/blueprints/new", `{"name":"test","description":"Test","packages":[{"name":"dep-package1","version":"*"},{"name":"dep-package3","version":"*"}], "modules":[{"name":"dep-package2","version":"*"}],"version":"0.0.0"}`) + test.TestTOMLRoute(t, api, false, "GET", c.Path, ``, c.ExpectedStatus, c.ExpectedTOML) + } + }) + + t.Run("toml-multiple", func(t *testing.T) { + var cases = []struct { + Fixture rpmmd_mock.FixtureGenerator + Path string + ExpectedStatus int + ExpectedJSON string + }{ + {rpmmd_mock.BaseFixture, "/api/v0/blueprints/freeze/test,test2?format=toml", http.StatusBadRequest, "{\"status\":false,\"errors\":[{\"id\":\"HTTPError\",\"msg\":\"toml format only supported when requesting one blueprint\"}]}"}, + } + + for _, c := range cases { + api, _ := createWeldrAPI(c.Fixture) + test.SendHTTP(api, false, "POST", "/api/v0/blueprints/new", `{"name":"test","description":"Test","packages":[{"name":"dep-package1","version":"*"},{"name":"dep-package3","version":"*"}], "modules":[{"name":"dep-package2","version":"*"}],"version":"0.0.0"}`) + test.SendHTTP(api, false, "POST", "/api/v0/blueprints/new", `{"name":"test2","description":"Test","packages":[{"name":"dep-package1","version":"*"},{"name":"dep-package3","version":"*"}], "modules":[{"name":"dep-package2","version":"*"}],"version":"0.0.0"}`) + test.TestRoute(t, api, false, "GET", c.Path, ``, c.ExpectedStatus, c.ExpectedJSON) + } + }) +} + +func TestBlueprintsDiff(t *testing.T) { + var cases = []struct { + Method string + Path string + Body string + ExpectedStatus int + ExpectedJSON string + }{ + {"GET", "/api/v0/blueprints/diff/test/NEWEST/WORKSPACE", ``, http.StatusOK, `{"diff":[{"new":{"Package":{"name":"systemd","version":"123"}},"old":null},{"new":null,"old":{"Package":{"name":"httpd","version":"2.4.*"}}}]}`}, + } + + for _, c := range cases { + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + test.SendHTTP(api, true, "POST", "/api/v0/blueprints/new", `{"name":"test","description":"Test","packages":[{"name":"httpd","version":"2.4.*"}],"version":"0.0.0"}`) + test.SendHTTP(api, true, "POST", "/api/v0/blueprints/workspace", `{"name":"test","description":"Test","packages":[{"name":"systemd","version":"123"}],"version":"0.0.0"}`) + test.TestRoute(t, api, true, c.Method, c.Path, c.Body, c.ExpectedStatus, c.ExpectedJSON) + test.SendHTTP(api, true, "DELETE", "/api/v0/blueprints/delete/test", ``) + } +} + +func TestBlueprintsDelete(t *testing.T) { + var cases = []struct { + Method string + Path string + Body string + ExpectedStatus int + ExpectedJSON string + }{ + {"DELETE", "/api/v0/blueprints/delete/test", ``, http.StatusOK, `{"status":true}`}, + {"DELETE", "/api/v0/blueprints/delete/test3-non", ``, http.StatusBadRequest, `{"status":false,"errors":[{"id":"BlueprintsError","msg":"Unknown blueprint: test3-non"}]}`}, + } + + for _, c := range cases { + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + test.SendHTTP(api, true, "POST", "/api/v0/blueprints/new", `{"name":"test","description":"Test","packages":[{"name":"httpd","version":"2.4.*"}],"version":"0.0.0"}`) + test.TestRoute(t, api, true, c.Method, c.Path, c.Body, c.ExpectedStatus, c.ExpectedJSON) + test.SendHTTP(api, true, "DELETE", "/api/v0/blueprints/delete/test", ``) + } +} + +func TestBlueprintsChanges(t *testing.T) { + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + rand.Seed(time.Now().UnixNano()) + id := strconv.Itoa(rand.Int()) + ignoreFields := []string{"commit", "timestamp"} + + test.SendHTTP(api, true, "POST", "/api/v0/blueprints/new", `{"name":"`+id+`","description":"Test","packages":[{"name":"httpd","version":"2.4.*"}],"version":"0.0.0"}`) + test.TestRoute(t, api, true, "GET", "/api/v0/blueprints/changes/failing"+id, ``, http.StatusOK, `{"blueprints":[],"errors":[{"id":"UnknownBlueprint","msg":"failing`+id+`"}],"limit":20,"offset":0}`, ignoreFields...) + test.TestRoute(t, api, true, "GET", "/api/v0/blueprints/changes/"+id, ``, http.StatusOK, `{"blueprints":[{"changes":[{"commit":"","message":"Recipe `+id+`, version 0.0.0 saved.","revision":null,"timestamp":""}],"name":"`+id+`","total":1}],"errors":[],"limit":20,"offset":0}`, ignoreFields...) + test.SendHTTP(api, true, "DELETE", "/api/v0/blueprints/delete/"+id, ``) + test.SendHTTP(api, true, "POST", "/api/v0/blueprints/new", `{"name":"`+id+`","description":"Test","packages":[{"name":"httpd","version":"2.4.*"}],"version":"0.0.0"}`) + test.TestRoute(t, api, true, "GET", "/api/v0/blueprints/changes/"+id, ``, http.StatusOK, `{"blueprints":[{"changes":[{"commit":"","message":"Recipe `+id+`, version 0.0.0 saved.","revision":null,"timestamp":""},{"commit":"","message":"Recipe `+id+`, version 0.0.0 saved.","revision":null,"timestamp":""}],"name":"`+id+`","total":2}],"errors":[],"limit":20,"offset":0}`, ignoreFields...) + test.SendHTTP(api, true, "DELETE", "/api/v0/blueprints/delete/"+id, ``) +} + +func TestBlueprintsDepsolve(t *testing.T) { + var cases = []struct { + Fixture rpmmd_mock.FixtureGenerator + ExpectedStatus int + ExpectedJSON string + }{ + {rpmmd_mock.BaseFixture, http.StatusOK, `{"blueprints":[{"blueprint":{"name":"test","description":"Test","version":"0.0.1","packages":[{"name":"dep-package1","version":"*"}],"groups":[],"modules":[{"name":"dep-package3","version":"*"}]},"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]}],"errors":[]}`}, + {rpmmd_mock.NonExistingPackage, http.StatusOK, `{"blueprints":[{"blueprint":{"name":"test","description":"Test","version":"0.0.1","packages":[{"name":"dep-package1","version":"*"}],"groups":[],"modules":[{"name":"dep-package3","version":"*"}]},"dependencies":[]}],"errors":[{"id":"BlueprintsError","msg":"test: DNF error occured: MarkingErrors: Error occurred when marking packages for installation: Problems in request:\nmissing packages: fash"}]}`}, + {rpmmd_mock.BadDepsolve, http.StatusOK, `{"blueprints":[{"blueprint":{"name":"test","description":"Test","version":"0.0.1","packages":[{"name":"dep-package1","version":"*"}],"groups":[],"modules":[{"name":"dep-package3","version":"*"}]},"dependencies":[]}],"errors":[{"id":"BlueprintsError","msg":"test: DNF error occured: DepsolveError: There was a problem depsolving ['go2rpm']: \n Problem: conflicting requests\n - nothing provides askalono-cli needed by go2rpm-1-4.fc31.noarch"}]}`}, + } + + for _, c := range cases { + api, _ := createWeldrAPI(c.Fixture) + test.SendHTTP(api, false, "POST", "/api/v0/blueprints/new", `{"name":"test","description":"Test","packages":[{"name":"dep-package1","version":"*"}],"modules":[{"name":"dep-package3","version":"*"}],"version":"0.0.0"}`) + test.TestRoute(t, api, false, "GET", "/api/v0/blueprints/depsolve/test", ``, c.ExpectedStatus, c.ExpectedJSON) + test.SendHTTP(api, false, "DELETE", "/api/v0/blueprints/delete/test", ``) + } +} + +func TestCompose(t *testing.T) { + arch, err := test_distro.New().GetArch("x86_64") + require.NoError(t, err) + imgType, err := arch.GetImageType("qcow2") + require.NoError(t, err) + manifest, err := imgType.Manifest(nil, distro.ImageOptions{}, nil, nil, nil) + require.NoError(t, err) + expectedComposeLocal := &store.Compose{ + Blueprint: &blueprint.Blueprint{ + Name: "test", + Version: "0.0.0", + Packages: []blueprint.Package{}, + Modules: []blueprint.Package{}, + Groups: []blueprint.Group{}, + Customizations: nil, + }, + ImageBuild: store.ImageBuild{ + QueueStatus: common.IBWaiting, + ImageType: imgType, + Manifest: manifest, + Targets: []*target.Target{ + { + // skip Uuid and Created fields - they are ignored + Name: "org.osbuild.local", + Options: &target.LocalTargetOptions{ + Filename: "test.img", + }, + }, + }, + }, + } + expectedComposeLocalAndAws := &store.Compose{ + Blueprint: &blueprint.Blueprint{ + Name: "test", + Version: "0.0.0", + Packages: []blueprint.Package{}, + Modules: []blueprint.Package{}, + Groups: []blueprint.Group{}, + Customizations: nil, + }, + ImageBuild: store.ImageBuild{ + QueueStatus: common.IBWaiting, + ImageType: imgType, + Manifest: manifest, + Targets: []*target.Target{ + { + Name: "org.osbuild.aws", + Status: common.IBWaiting, + ImageName: "test_upload", + Options: &target.AWSTargetOptions{ + Filename: "test.img", + Region: "frankfurt", + AccessKeyID: "accesskey", + SecretAccessKey: "secretkey", + Bucket: "clay", + Key: "imagekey", + }, + }, + { + // skip Uuid and Created fields - they are ignored + Name: "org.osbuild.local", + Options: &target.LocalTargetOptions{ + Filename: "test.img", + }, + }, + }, + }, + } + + var cases = []struct { + External bool + Method string + Path string + Body string + ExpectedStatus int + ExpectedJSON string + ExpectedCompose *store.Compose + IgnoreFields []string + }{ + {true, "POST", "/api/v0/compose", `{"blueprint_name": "http-server","compose_type": "qcow2","branch": "master"}`, http.StatusBadRequest, `{"status":false,"errors":[{"id":"UnknownBlueprint","msg":"Unknown blueprint name: http-server"}]}`, nil, []string{"build_id"}}, + {false, "POST", "/api/v0/compose", `{"blueprint_name": "test","compose_type": "qcow2","branch": "master"}`, http.StatusOK, `{"status": true}`, expectedComposeLocal, []string{"build_id"}}, + {false, "POST", "/api/v1/compose", `{"blueprint_name": "test","compose_type":"qcow2","branch":"master","upload":{"image_name":"test_upload","provider":"aws","settings":{"region":"frankfurt","accessKeyID":"accesskey","secretAccessKey":"secretkey","bucket":"clay","key":"imagekey"}}}`, http.StatusOK, `{"status": true}`, expectedComposeLocalAndAws, []string{"build_id"}}, + } + + for _, c := range cases { + api, s := createWeldrAPI(rpmmd_mock.NoComposesFixture) + test.TestRoute(t, api, c.External, c.Method, c.Path, c.Body, c.ExpectedStatus, c.ExpectedJSON, c.IgnoreFields...) + + if c.ExpectedStatus != http.StatusOK { + continue + } + + composes := s.GetAllComposes() + + require.Equalf(t, 1, len(composes), "%s: bad compose count in store", c.Path) + + // I have no idea how to get the compose in better way + var composeStruct store.Compose + for _, c := range composes { + composeStruct = c + break + } + + require.NotNilf(t, composeStruct.ImageBuild.Manifest, "%s: the compose in the store did not contain a blueprint", c.Path) + + if diff := cmp.Diff(composeStruct, *c.ExpectedCompose, test.IgnoreDates(), test.IgnoreUuids(), test.Ignore("Targets.Options.Location"), test.CompareImageTypes()); diff != "" { + t.Errorf("%s: compose in store isn't the same as expected, diff:\n%s", c.Path, diff) + } + } +} + +func TestComposeDelete(t *testing.T) { + if len(os.Getenv("OSBUILD_COMPOSER_TEST_EXTERNAL")) > 0 { + t.Skip("This test is for internal testing only") + } + + var cases = []struct { + Path string + ExpectedJSON string + ExpectedIDsInStore []string + }{ + {"/api/v0/compose/delete/30000000-0000-0000-0000-000000000002", `{"uuids":[{"uuid":"30000000-0000-0000-0000-000000000002","status":true}],"errors":[]}`, []string{"30000000-0000-0000-0000-000000000000", "30000000-0000-0000-0000-000000000001", "30000000-0000-0000-0000-000000000003"}}, + {"/api/v0/compose/delete/30000000-0000-0000-0000-000000000002,30000000-0000-0000-0000-000000000003", `{"uuids":[{"uuid":"30000000-0000-0000-0000-000000000002","status":true},{"uuid":"30000000-0000-0000-0000-000000000003","status":true}],"errors":[]}`, []string{"30000000-0000-0000-0000-000000000000", "30000000-0000-0000-0000-000000000001"}}, + {"/api/v0/compose/delete/30000000-0000-0000-0000-000000000003,30000000-0000-0000-0000-000000000000", `{"uuids":[{"uuid":"30000000-0000-0000-0000-000000000003","status":true}],"errors":[{"id":"BuildInWrongState","msg":"Compose 30000000-0000-0000-0000-000000000000 is not in FINISHED or FAILED."}]}`, []string{"30000000-0000-0000-0000-000000000000", "30000000-0000-0000-0000-000000000001", "30000000-0000-0000-0000-000000000002"}}, + {"/api/v0/compose/delete/30000000-0000-0000-0000-000000000003,30000000-0000-0000-0000", `{"uuids":[{"uuid":"30000000-0000-0000-0000-000000000003","status":true}],"errors":[{"id":"UnknownUUID","msg":"30000000-0000-0000-0000 is not a valid uuid"}]}`, []string{"30000000-0000-0000-0000-000000000000", "30000000-0000-0000-0000-000000000001", "30000000-0000-0000-0000-000000000002"}}, + {"/api/v0/compose/delete/30000000-0000-0000-0000-000000000003,42000000-0000-0000-0000-000000000000", `{"uuids":[{"uuid":"30000000-0000-0000-0000-000000000003","status":true}],"errors":[{"id":"UnknownUUID","msg":"compose 42000000-0000-0000-0000-000000000000 doesn't exist"}]}`, []string{"30000000-0000-0000-0000-000000000000", "30000000-0000-0000-0000-000000000001", "30000000-0000-0000-0000-000000000002"}}, + } + + for _, c := range cases { + api, s := createWeldrAPI(rpmmd_mock.BaseFixture) + test.TestRoute(t, api, false, "DELETE", c.Path, "", http.StatusOK, c.ExpectedJSON) + + idsInStore := []string{} + + for id := range s.GetAllComposes() { + idsInStore = append(idsInStore, id.String()) + } + + require.ElementsMatch(t, c.ExpectedIDsInStore, idsInStore, "%s: composes in store are different", c.Path) + } +} + +func TestComposeStatus(t *testing.T) { + var cases = []struct { + Fixture rpmmd_mock.FixtureGenerator + Method string + Path string + Body string + ExpectedStatus int + ExpectedJSON string + }{ + {rpmmd_mock.BaseFixture, "GET", "/api/v0/compose/status/30000000-0000-0000-0000-000000000000,30000000-0000-0000-0000-000000000002", ``, http.StatusOK, `{"uuids":[{"id":"30000000-0000-0000-0000-000000000000","blueprint":"test","version":"0.0.0","compose_type":"qcow2","image_size":0,"queue_status":"WAITING","job_created":1574857140},{"id":"30000000-0000-0000-0000-000000000002","blueprint":"test","version":"0.0.0","compose_type":"qcow2","image_size":0,"queue_status":"FINISHED","job_created":1574857140,"job_started":1574857140,"job_finished":1574857140}]}`}, + {rpmmd_mock.BaseFixture, "GET", "/api/v0/compose/status/*", ``, http.StatusOK, `{"uuids":[{"id":"30000000-0000-0000-0000-000000000000","blueprint":"test","version":"0.0.0","compose_type":"qcow2","image_size":0,"queue_status":"WAITING","job_created":1574857140},{"id":"30000000-0000-0000-0000-000000000001","blueprint":"test","version":"0.0.0","compose_type":"qcow2","image_size":0,"queue_status":"RUNNING","job_created":1574857140,"job_started":1574857140},{"id":"30000000-0000-0000-0000-000000000002","blueprint":"test","version":"0.0.0","compose_type":"qcow2","image_size":0,"queue_status":"FINISHED","job_created":1574857140,"job_started":1574857140,"job_finished":1574857140},{"id":"30000000-0000-0000-0000-000000000003","blueprint":"test","version":"0.0.0","compose_type":"qcow2","image_size":0,"queue_status":"FAILED","job_created":1574857140,"job_started":1574857140,"job_finished":1574857140}]}`}, + {rpmmd_mock.BaseFixture, "GET", "/api/v0/compose/status/*?name=test", ``, http.StatusOK, `{"uuids":[{"id":"30000000-0000-0000-0000-000000000000","blueprint":"test","version":"0.0.0","compose_type":"qcow2","image_size":0,"queue_status":"WAITING","job_created":1574857140},{"id":"30000000-0000-0000-0000-000000000001","blueprint":"test","version":"0.0.0","compose_type":"qcow2","image_size":0,"queue_status":"RUNNING","job_created":1574857140,"job_started":1574857140},{"id":"30000000-0000-0000-0000-000000000002","blueprint":"test","version":"0.0.0","compose_type":"qcow2","image_size":0,"queue_status":"FINISHED","job_created":1574857140,"job_started":1574857140,"job_finished":1574857140},{"id":"30000000-0000-0000-0000-000000000003","blueprint":"test","version":"0.0.0","compose_type":"qcow2","image_size":0,"queue_status":"FAILED","job_created":1574857140,"job_started":1574857140,"job_finished":1574857140}]}`}, + {rpmmd_mock.BaseFixture, "GET", "/api/v0/compose/status/*?status=FINISHED", ``, http.StatusOK, `{"uuids":[{"id":"30000000-0000-0000-0000-000000000002","blueprint":"test","version":"0.0.0","compose_type":"qcow2","image_size":0,"queue_status":"FINISHED","job_created":1574857140,"job_started":1574857140,"job_finished":1574857140}]}`}, + {rpmmd_mock.BaseFixture, "GET", "/api/v0/compose/status/*?type=qcow2", ``, http.StatusOK, `{"uuids":[{"id":"30000000-0000-0000-0000-000000000000","blueprint":"test","version":"0.0.0","compose_type":"qcow2","image_size":0,"queue_status":"WAITING","job_created":1574857140},{"id":"30000000-0000-0000-0000-000000000001","blueprint":"test","version":"0.0.0","compose_type":"qcow2","image_size":0,"queue_status":"RUNNING","job_created":1574857140,"job_started":1574857140},{"id":"30000000-0000-0000-0000-000000000002","blueprint":"test","version":"0.0.0","compose_type":"qcow2","image_size":0,"queue_status":"FINISHED","job_created":1574857140,"job_started":1574857140,"job_finished":1574857140},{"id":"30000000-0000-0000-0000-000000000003","blueprint":"test","version":"0.0.0","compose_type":"qcow2","image_size":0,"queue_status":"FAILED","job_created":1574857140,"job_started":1574857140,"job_finished":1574857140}]}`}, + {rpmmd_mock.BaseFixture, "GET", "/api/v1/compose/status/30000000-0000-0000-0000-000000000000", ``, http.StatusOK, `{"uuids":[{"id":"30000000-0000-0000-0000-000000000000","blueprint":"test","version":"0.0.0","compose_type":"qcow2","image_size":0,"queue_status":"WAITING","job_created":1574857140,"uploads":[{"uuid":"10000000-0000-0000-0000-000000000000","status":"WAITING","provider_name":"aws","image_name":"awsimage","creation_time":1574857140,"settings":{"region":"frankfurt","bucket":"clay","key":"imagekey"}}]}]}`}, + } + + if len(os.Getenv("OSBUILD_COMPOSER_TEST_EXTERNAL")) > 0 { + t.Skip("This test is for internal testing only") + } + + for _, c := range cases { + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + test.TestRoute(t, api, false, c.Method, c.Path, c.Body, c.ExpectedStatus, c.ExpectedJSON, "id", "job_created", "job_started") + } +} + +func TestComposeInfo(t *testing.T) { + var cases = []struct { + Fixture rpmmd_mock.FixtureGenerator + Method string + Path string + Body string + ExpectedStatus int + ExpectedJSON string + }{ + {rpmmd_mock.BaseFixture, "GET", "/api/v0/compose/info/30000000-0000-0000-0000-000000000000", ``, http.StatusOK, `{"id":"30000000-0000-0000-0000-000000000000","config":"","blueprint":{"name":"test","description":"","version":"0.0.0","packages":[],"modules":[],"groups":[]},"commit":"","deps":{"packages":[]},"compose_type":"qcow2","queue_status":"WAITING","image_size":0}`}, + {rpmmd_mock.BaseFixture, "GET", "/api/v1/compose/info/30000000-0000-0000-0000-000000000000", ``, http.StatusOK, `{"id":"30000000-0000-0000-0000-000000000000","config":"","blueprint":{"name":"test","description":"","version":"0.0.0","packages":[],"modules":[],"groups":[]},"commit":"","deps":{"packages":[]},"compose_type":"qcow2","queue_status":"WAITING","image_size":0,"uploads":[{"uuid":"10000000-0000-0000-0000-000000000000","status":"WAITING","provider_name":"aws","image_name":"awsimage","creation_time":1574857140,"settings":{"region":"frankfurt","bucket":"clay","key":"imagekey"}}]}`}, + {rpmmd_mock.BaseFixture, "GET", "/api/v1/compose/info/30000000-0000-0000-0000", ``, http.StatusBadRequest, `{"status":false,"errors":[{"id":"UnknownUUID","msg":"30000000-0000-0000-0000 is not a valid build uuid"}]}`}, + {rpmmd_mock.BaseFixture, "GET", "/api/v1/compose/info/42000000-0000-0000-0000-000000000000", ``, http.StatusBadRequest, `{"status":false,"errors":[{"id":"UnknownUUID","msg":"42000000-0000-0000-0000-000000000000 is not a valid build uuid"}]}`}, + } + + if len(os.Getenv("OSBUILD_COMPOSER_TEST_EXTERNAL")) > 0 { + t.Skip("This test is for internal testing only") + } + + for _, c := range cases { + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + test.TestRoute(t, api, false, c.Method, c.Path, c.Body, c.ExpectedStatus, c.ExpectedJSON) + } +} + +func TestComposeLogs(t *testing.T) { + if len(os.Getenv("OSBUILD_COMPOSER_TEST_EXTERNAL")) > 0 { + t.Skip("This test is for internal testing only") + } + + var successCases = []struct { + Path string + ExpectedContentDisposition string + ExpectedContentType string + ExpectedFileName string + ExpectedFileContent string + }{ + {"/api/v0/compose/logs/30000000-0000-0000-0000-000000000002", "attachment; filename=30000000-0000-0000-0000-000000000002-logs.tar", "application/x-tar", "logs/osbuild.log", "The compose result is empty.\n"}, + {"/api/v1/compose/logs/30000000-0000-0000-0000-000000000002", "attachment; filename=30000000-0000-0000-0000-000000000002-logs.tar", "application/x-tar", "logs/osbuild.log", "The compose result is empty.\n"}, + {"/api/v0/compose/metadata/30000000-0000-0000-0000-000000000002", "attachment; filename=30000000-0000-0000-0000-000000000002-metadata.tar", "application/x-tar", "30000000-0000-0000-0000-000000000002.json", "{\"sources\":{},\"pipeline\":{}}"}, + {"/api/v1/compose/metadata/30000000-0000-0000-0000-000000000002", "attachment; filename=30000000-0000-0000-0000-000000000002-metadata.tar", "application/x-tar", "30000000-0000-0000-0000-000000000002.json", "{\"sources\":{},\"pipeline\":{}}"}, + {"/api/v0/compose/results/30000000-0000-0000-0000-000000000002", "attachment; filename=30000000-0000-0000-0000-000000000002.tar", "application/x-tar", "30000000-0000-0000-0000-000000000002.json", "{\"sources\":{},\"pipeline\":{}}"}, + {"/api/v1/compose/results/30000000-0000-0000-0000-000000000002", "attachment; filename=30000000-0000-0000-0000-000000000002.tar", "application/x-tar", "30000000-0000-0000-0000-000000000002.json", "{\"sources\":{},\"pipeline\":{}}"}, + } + + for _, c := range successCases { + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + + response := test.SendHTTP(api, false, "GET", c.Path, "") + require.Equalf(t, http.StatusOK, response.StatusCode, "%s: unexpected status code", c.Path) + require.Equalf(t, c.ExpectedContentDisposition, response.Header.Get("content-disposition"), "%s: header mismatch", c.Path) + require.Equalf(t, c.ExpectedContentType, response.Header.Get("content-type"), "%s: header mismatch", c.Path) + + tr := tar.NewReader(response.Body) + h, err := tr.Next() + + require.NoErrorf(t, err, "untarring failed with error") + require.Falsef(t, h.ModTime.After(time.Now()), "ModTime cannot be in the future") + require.Equalf(t, c.ExpectedFileName, h.Name, "%s: unexpected file name", c.Path) + + var buffer bytes.Buffer + + _, err = io.Copy(&buffer, tr) + require.NoErrorf(t, err, "cannot copy untar result") + require.Equalf(t, c.ExpectedFileContent, buffer.String(), "%s: unexpected log content", c.Path) + } + + var failureCases = []struct { + Path string + ExpectedJSON string + }{ + {"/api/v1/compose/logs/30000000-0000-0000-0000", `{"status":false,"errors":[{"id":"UnknownUUID","msg":"30000000-0000-0000-0000 is not a valid build uuid"}]}`}, + {"/api/v1/compose/logs/42000000-0000-0000-0000-000000000000", `{"status":false,"errors":[{"id":"UnknownUUID","msg":"Compose 42000000-0000-0000-0000-000000000000 doesn't exist"}]}`}, + {"/api/v1/compose/logs/30000000-0000-0000-0000-000000000000", `{"status":false,"errors":[{"id":"BuildInWrongState","msg":"Build 30000000-0000-0000-0000-000000000000 not in FINISHED or FAILED state."}]}`}, + {"/api/v1/compose/metadata/30000000-0000-0000-0000-000000000000", `{"status":false,"errors":[{"id":"BuildInWrongState","msg":"Build 30000000-0000-0000-0000-000000000000 is in wrong state: WAITING"}]}`}, + {"/api/v1/compose/results/30000000-0000-0000-0000-000000000000", `{"status":false,"errors":[{"id":"BuildInWrongState","msg":"Build 30000000-0000-0000-0000-000000000000 is in wrong state: WAITING"}]}`}, + {"/api/v1/compose/metadata/30000000-0000-0000-0000-000000000001", `{"status":false,"errors":[{"id":"BuildInWrongState","msg":"Build 30000000-0000-0000-0000-000000000001 is in wrong state: RUNNING"}]}`}, + {"/api/v1/compose/results/30000000-0000-0000-0000-000000000001", `{"status":false,"errors":[{"id":"BuildInWrongState","msg":"Build 30000000-0000-0000-0000-000000000001 is in wrong state: RUNNING"}]}`}, + } + + if len(os.Getenv("OSBUILD_COMPOSER_TEST_EXTERNAL")) > 0 { + t.Skip("This test is for internal testing only") + } + + for _, c := range failureCases { + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + test.TestRoute(t, api, false, "GET", c.Path, "", http.StatusBadRequest, c.ExpectedJSON) + } +} + +func TestComposeLog(t *testing.T) { + var cases = []struct { + Fixture rpmmd_mock.FixtureGenerator + Method string + Path string + ExpectedStatus int + ExpectedResponse string + }{ + {rpmmd_mock.BaseFixture, "GET", "/api/v0/compose/log/30000000-0000-0000-0000-000000000000", http.StatusOK, `{"status":false,"errors":[{"id":"BuildInWrongState","msg":"Build 30000000-0000-0000-0000-000000000000 has not started yet. No logs to view."}]}` + "\n"}, + {rpmmd_mock.BaseFixture, "GET", "/api/v0/compose/log/30000000-0000-0000-0000-000000000001", http.StatusOK, `Build 30000000-0000-0000-0000-000000000001 is still running.` + "\n"}, + {rpmmd_mock.BaseFixture, "GET", "/api/v0/compose/log/30000000-0000-0000-0000-000000000002", http.StatusOK, `The compose result is empty.` + "\n"}, + {rpmmd_mock.BaseFixture, "GET", "/api/v1/compose/log/30000000-0000-0000-0000-000000000002", http.StatusOK, `The compose result is empty.` + "\n"}, + {rpmmd_mock.BaseFixture, "GET", "/api/v1/compose/log/30000000-0000-0000-0000", http.StatusBadRequest, `{"status":false,"errors":[{"id":"UnknownUUID","msg":"30000000-0000-0000-0000 is not a valid build uuid"}]}` + "\n"}, + {rpmmd_mock.BaseFixture, "GET", "/api/v1/compose/log/42000000-0000-0000-0000-000000000000", http.StatusBadRequest, `{"status":false,"errors":[{"id":"UnknownUUID","msg":"Compose 42000000-0000-0000-0000-000000000000 doesn't exist"}]}` + "\n"}, + } + + if len(os.Getenv("OSBUILD_COMPOSER_TEST_EXTERNAL")) > 0 { + t.Skip("This test is for internal testing only") + } + + for _, c := range cases { + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + test.TestNonJsonRoute(t, api, false, "GET", c.Path, "", c.ExpectedStatus, c.ExpectedResponse) + } +} + +func TestComposeQueue(t *testing.T) { + var cases = []struct { + Fixture rpmmd_mock.FixtureGenerator + Method string + Path string + Body string + ExpectedStatus int + ExpectedJSON string + }{ + {rpmmd_mock.BaseFixture, "GET", "/api/v0/compose/queue", ``, http.StatusOK, `{"new":[{"blueprint":"test","version":"0.0.0","compose_type":"qcow2","image_size":0,"queue_status":"WAITING"}],"run":[{"blueprint":"test","version":"0.0.0","compose_type":"qcow2","image_size":0,"queue_status":"RUNNING"}]}`}, + {rpmmd_mock.BaseFixture, "GET", "/api/v1/compose/queue", ``, http.StatusOK, `{"new":[{"blueprint":"test","version":"0.0.0","compose_type":"qcow2","image_size":0,"queue_status":"WAITING","uploads":[{"uuid":"10000000-0000-0000-0000-000000000000","status":"WAITING","provider_name":"aws","image_name":"awsimage","creation_time":1574857140,"settings":{"region":"frankfurt","bucket":"clay","key":"imagekey"}}]}],"run":[{"blueprint":"test","version":"0.0.0","compose_type":"qcow2","image_size":0,"queue_status":"RUNNING"}]}`}, + {rpmmd_mock.NoComposesFixture, "GET", "/api/v0/compose/queue", ``, http.StatusOK, `{"new":[],"run":[]}`}, + } + + if len(os.Getenv("OSBUILD_COMPOSER_TEST_EXTERNAL")) > 0 { + t.Skip("This test is for internal testing only") + } + + for _, c := range cases { + api, _ := createWeldrAPI(c.Fixture) + test.TestRoute(t, api, false, c.Method, c.Path, c.Body, c.ExpectedStatus, c.ExpectedJSON, "id", "job_created", "job_started") + } +} + +func TestComposeFinished(t *testing.T) { + var cases = []struct { + Fixture rpmmd_mock.FixtureGenerator + Method string + Path string + Body string + ExpectedStatus int + ExpectedJSON string + }{ + {rpmmd_mock.BaseFixture, "GET", "/api/v0/compose/finished", ``, http.StatusOK, `{"finished":[{"id":"30000000-0000-0000-0000-000000000002","blueprint":"test","version":"0.0.0","compose_type":"qcow2","image_size":0,"queue_status":"FINISHED","job_created":1574857140,"job_started":1574857140,"job_finished":1574857140}]}`}, + {rpmmd_mock.BaseFixture, "GET", "/api/v1/compose/finished", ``, http.StatusOK, `{"finished":[{"id":"30000000-0000-0000-0000-000000000002","blueprint":"test","version":"0.0.0","compose_type":"qcow2","image_size":0,"queue_status":"FINISHED","job_created":1574857140,"job_started":1574857140,"job_finished":1574857140,"uploads":[{"uuid":"10000000-0000-0000-0000-000000000000","status":"FINISHED","provider_name":"aws","image_name":"awsimage","creation_time":1574857140,"settings":{"region":"frankfurt","bucket":"clay","key":"imagekey"}}]}]}`}, + {rpmmd_mock.NoComposesFixture, "GET", "/api/v0/compose/finished", ``, http.StatusOK, `{"finished":[]}`}, + } + + if len(os.Getenv("OSBUILD_COMPOSER_TEST_EXTERNAL")) > 0 { + t.Skip("This test is for internal testing only") + } + + for _, c := range cases { + api, _ := createWeldrAPI(c.Fixture) + test.TestRoute(t, api, false, c.Method, c.Path, c.Body, c.ExpectedStatus, c.ExpectedJSON, "id", "job_created", "job_started") + } +} + +func TestComposeFailed(t *testing.T) { + var cases = []struct { + Fixture rpmmd_mock.FixtureGenerator + Method string + Path string + Body string + ExpectedStatus int + ExpectedJSON string + }{ + {rpmmd_mock.BaseFixture, "GET", "/api/v0/compose/failed", ``, http.StatusOK, `{"failed":[{"id":"30000000-0000-0000-0000-000000000003","blueprint":"test","version":"0.0.0","compose_type":"qcow2","image_size":0,"queue_status":"FAILED","job_created":1574857140,"job_started":1574857140,"job_finished":1574857140}]}`}, + {rpmmd_mock.BaseFixture, "GET", "/api/v1/compose/failed", ``, http.StatusOK, `{"failed":[{"id":"30000000-0000-0000-0000-000000000003","blueprint":"test","version":"0.0.0","compose_type":"qcow2","image_size":0,"queue_status":"FAILED","job_created":1574857140,"job_started":1574857140,"job_finished":1574857140,"uploads":[{"uuid":"10000000-0000-0000-0000-000000000000","status":"FAILED","provider_name":"aws","image_name":"awsimage","creation_time":1574857140,"settings":{"region":"frankfurt","bucket":"clay","key":"imagekey"}}]}]}`}, + {rpmmd_mock.NoComposesFixture, "GET", "/api/v0/compose/failed", ``, http.StatusOK, `{"failed":[]}`}, + } + + if len(os.Getenv("OSBUILD_COMPOSER_TEST_EXTERNAL")) > 0 { + t.Skip("This test is for internal testing only") + } + + for _, c := range cases { + api, _ := createWeldrAPI(c.Fixture) + test.TestRoute(t, api, false, c.Method, c.Path, c.Body, c.ExpectedStatus, c.ExpectedJSON, "id", "job_created", "job_started") + } +} + +func TestSourcesNew(t *testing.T) { + var cases = []struct { + Method string + Path string + Body string + ExpectedStatus int + ExpectedJSON string + }{ + {"POST", "/api/v0/projects/source/new", ``, http.StatusBadRequest, `{"errors": [{"id": "ProjectsError","msg": "Missing source"}],"status":false}`}, + // Bad JSON, missing quote after name + {"POST", "/api/v0/projects/source/new", `{"name: "fish","url": "https://download.opensuse.org/repositories/shells:/fish:/release:/3/Fedora_29/","type": "yum-baseurl","check_ssl": false,"check_gpg": false}`, http.StatusBadRequest, `{"errors": [{"id": "ProjectsError","msg": "Problem parsing POST body: invalid character 'f' after object key"}],"status":false}`}, + {"POST", "/api/v0/projects/source/new", `{"name": "fish","url": "https://download.opensuse.org/repositories/shells:/fish:/release:/3/Fedora_29/","type": "yum-baseurl","check_ssl": false,"check_gpg": false}`, http.StatusOK, `{"status":true}`}, + } + + for _, c := range cases { + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + test.TestRoute(t, api, true, c.Method, c.Path, c.Body, c.ExpectedStatus, c.ExpectedJSON) + test.SendHTTP(api, true, "DELETE", "/api/v0/projects/source/delete/fish", ``) + } +} + +func TestSourcesNewToml(t *testing.T) { + source := ` +name = "fish" +url = "https://download.opensuse.org/repositories/shells:/fish:/release:/3/Fedora_29/" +type = "yum-baseurl" +check_ssl = false +check_gpg = false +` + req := httptest.NewRequest("POST", "/api/v0/projects/source/new", bytes.NewReader([]byte(source))) + req.Header.Set("Content-Type", "text/x-toml") + recorder := httptest.NewRecorder() + + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + api.ServeHTTP(recorder, req) + + r := recorder.Result() + require.Equal(t, http.StatusOK, r.StatusCode) + + test.SendHTTP(api, true, "DELETE", "/api/v0/projects/source/delete/fish", ``) +} + +// Empty TOML, and invalid TOML should return an error +func TestSourcesNewWrongToml(t *testing.T) { + sources := []string{``, ` +[fish] +name = "fish" +url = "https://download.opensuse.org/repositories/shells:/fish:/release:/3/Fedora_29/" +type = "yum-baseurl" +check_ssl = false +check_gpg = false +`} + for _, source := range sources { + req := httptest.NewRequest("POST", "/api/v0/projects/source/new", bytes.NewReader([]byte(source))) + req.Header.Set("Content-Type", "text/x-toml") + recorder := httptest.NewRecorder() + + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + api.ServeHTTP(recorder, req) + + r := recorder.Result() + require.Equal(t, http.StatusBadRequest, r.StatusCode) + } +} + +func TestSourcesInfo(t *testing.T) { + sourceStr := `{"name":"fish","type":"yum-baseurl","url":"https://download.opensuse.org/repositories/shells:/fish:/release:/3/Fedora_29/","check_gpg":false,"check_ssl":false,"system":false}` + + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + test.SendHTTP(api, true, "POST", "/api/v0/projects/source/new", sourceStr) + test.TestRoute(t, api, true, "GET", "/api/v0/projects/source/info/fish", ``, 200, `{"sources":{"fish":`+sourceStr+`},"errors":[]}`) + test.TestRoute(t, api, true, "GET", "/api/v0/projects/source/info/fish?format=json", ``, 200, `{"sources":{"fish":`+sourceStr+`},"errors":[]}`) + test.TestRoute(t, api, true, "GET", "/api/v0/projects/source/info/fish?format=son", ``, 400, `{"status":false,"errors":[{"id":"InvalidChars","msg":"invalid format parameter: son"}]}`) +} + +func TestSourcesInfoToml(t *testing.T) { + sourceStr := `{"name":"fish","type":"yum-baseurl","url":"https://download.opensuse.org/repositories/shells:/fish:/release:/3/Fedora_29/","check_gpg":false,"check_ssl":false,"system":false}` + + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + test.SendHTTP(api, true, "POST", "/api/v0/projects/source/new", sourceStr) + + req := httptest.NewRequest("GET", "/api/v0/projects/source/info/fish?format=toml", nil) + recorder := httptest.NewRecorder() + api.ServeHTTP(recorder, req) + resp := recorder.Result() + + var sources map[string]store.SourceConfig + _, err := toml.DecodeReader(resp.Body, &sources) + require.NoErrorf(t, err, "error decoding toml file") + + expected := map[string]store.SourceConfig{ + "fish": { + Name: "fish", + Type: "yum-baseurl", + URL: "https://download.opensuse.org/repositories/shells:/fish:/release:/3/Fedora_29/", + }, + } + + require.Equal(t, expected, sources) +} + +func TestSourcesDelete(t *testing.T) { + var cases = []struct { + Method string + Path string + Body string + ExpectedStatus int + ExpectedJSON string + }{ + {"DELETE", "/api/v0/projects/source/delete/", ``, http.StatusNotFound, `{"status":false,"errors":[{"code":404,"id":"HTTPError","msg":"Not Found"}]}`}, + {"DELETE", "/api/v0/projects/source/delete/fish", ``, http.StatusOK, `{"status":true}`}, + } + + for _, c := range cases { + api, _ := createWeldrAPI(rpmmd_mock.BaseFixture) + test.SendHTTP(api, true, "POST", "/api/v0/projects/source/new", `{"name": "fish","url": "https://download.opensuse.org/repositories/shells:/fish:/release:/3/Fedora_29/","type": "yum-baseurl","check_ssl": false,"check_gpg": false}`) + test.TestRoute(t, api, true, c.Method, c.Path, c.Body, c.ExpectedStatus, c.ExpectedJSON) + test.SendHTTP(api, true, "DELETE", "/api/v0/projects/source/delete/fish", ``) + } +} + +func TestProjectsDepsolve(t *testing.T) { + var cases = []struct { + Fixture rpmmd_mock.FixtureGenerator + Path string + ExpectedStatus int + ExpectedJSON string + }{ + {rpmmd_mock.NonExistingPackage, "/api/v0/projects/depsolve/fash", http.StatusBadRequest, `{"status":false,"errors":[{"id":"PROJECTS_ERROR","msg":"BadRequest: DNF error occured: MarkingErrors: Error occurred when marking packages for installation: Problems in request:\nmissing packages: fash"}]}`}, + {rpmmd_mock.BaseFixture, "/api/v0/projects/depsolve/fish", http.StatusOK, `{"projects":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]}`}, + {rpmmd_mock.BadDepsolve, "/api/v0/projects/depsolve/go2rpm", http.StatusBadRequest, `{"status":false,"errors":[{"id":"PROJECTS_ERROR","msg":"BadRequest: DNF error occured: DepsolveError: There was a problem depsolving ['go2rpm']: \n Problem: conflicting requests\n - nothing provides askalono-cli needed by go2rpm-1-4.fc31.noarch"}]}`}, + } + + for _, c := range cases { + api, _ := createWeldrAPI(c.Fixture) + test.TestRoute(t, api, true, "GET", c.Path, ``, c.ExpectedStatus, c.ExpectedJSON) + } +} + +func TestProjectsInfo(t *testing.T) { + var cases = []struct { + Fixture rpmmd_mock.FixtureGenerator + Path string + ExpectedStatus int + ExpectedJSON string + }{ + {rpmmd_mock.BaseFixture, "/api/v0/projects/info", http.StatusBadRequest, `{"status":false,"errors":[{"id":"UnknownProject","msg":"No packages specified."}]}`}, + {rpmmd_mock.BaseFixture, "/api/v0/projects/info/", http.StatusBadRequest, `{"status":false,"errors":[{"id":"UnknownProject","msg":"No packages specified."}]}`}, + {rpmmd_mock.BaseFixture, "/api/v0/projects/info/nonexistingpkg", http.StatusBadRequest, `{"status":false,"errors":[{"id":"UnknownProject","msg":"No packages have been found."}]}`}, + {rpmmd_mock.BaseFixture, "/api/v0/projects/info/*", http.StatusOK, `{"projects":[{"name":"package0","summary":"pkg0 sum","description":"pkg0 desc","homepage":"https://pkg0.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-01-03T15:04:05","epoch":0,"release":"0.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"0.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-01-02T15:04:05","epoch":0,"release":"0.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"0.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package1","summary":"pkg1 sum","description":"pkg1 desc","homepage":"https://pkg1.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-02-02T15:04:05","epoch":0,"release":"1.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"1.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-02-03T15:04:05","epoch":0,"release":"1.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"1.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package10","summary":"pkg10 sum","description":"pkg10 desc","homepage":"https://pkg10.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-11-02T15:04:05","epoch":0,"release":"10.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"10.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-11-03T15:04:05","epoch":0,"release":"10.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"10.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package11","summary":"pkg11 sum","description":"pkg11 desc","homepage":"https://pkg11.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-12-03T15:04:05","epoch":0,"release":"11.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"11.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-12-02T15:04:05","epoch":0,"release":"11.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"11.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package12","summary":"pkg12 sum","description":"pkg12 desc","homepage":"https://pkg12.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-01-02T15:04:05","epoch":0,"release":"12.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"12.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-01-03T15:04:05","epoch":0,"release":"12.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"12.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package13","summary":"pkg13 sum","description":"pkg13 desc","homepage":"https://pkg13.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-02-02T15:04:05","epoch":0,"release":"13.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"13.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-02-03T15:04:05","epoch":0,"release":"13.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"13.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package14","summary":"pkg14 sum","description":"pkg14 desc","homepage":"https://pkg14.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-03-03T15:04:05","epoch":0,"release":"14.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"14.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-03-02T15:04:05","epoch":0,"release":"14.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"14.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package15","summary":"pkg15 sum","description":"pkg15 desc","homepage":"https://pkg15.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-04-03T15:04:05","epoch":0,"release":"15.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"15.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-04-02T15:04:05","epoch":0,"release":"15.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"15.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package16","summary":"pkg16 sum","description":"pkg16 desc","homepage":"https://pkg16.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-05-02T15:04:05","epoch":0,"release":"16.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"16.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-05-03T15:04:05","epoch":0,"release":"16.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"16.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package17","summary":"pkg17 sum","description":"pkg17 desc","homepage":"https://pkg17.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-06-03T15:04:05","epoch":0,"release":"17.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"17.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-06-02T15:04:05","epoch":0,"release":"17.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"17.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package18","summary":"pkg18 sum","description":"pkg18 desc","homepage":"https://pkg18.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-07-02T15:04:05","epoch":0,"release":"18.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"18.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-07-03T15:04:05","epoch":0,"release":"18.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"18.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package19","summary":"pkg19 sum","description":"pkg19 desc","homepage":"https://pkg19.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-08-03T15:04:05","epoch":0,"release":"19.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"19.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-08-02T15:04:05","epoch":0,"release":"19.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"19.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package2","summary":"pkg2 sum","description":"pkg2 desc","homepage":"https://pkg2.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-03-02T15:04:05","epoch":0,"release":"2.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"2.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-03-03T15:04:05","epoch":0,"release":"2.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"2.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package20","summary":"pkg20 sum","description":"pkg20 desc","homepage":"https://pkg20.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-09-03T15:04:05","epoch":0,"release":"20.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"20.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-09-02T15:04:05","epoch":0,"release":"20.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"20.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package21","summary":"pkg21 sum","description":"pkg21 desc","homepage":"https://pkg21.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-10-02T15:04:05","epoch":0,"release":"21.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"21.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-10-03T15:04:05","epoch":0,"release":"21.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"21.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package3","summary":"pkg3 sum","description":"pkg3 desc","homepage":"https://pkg3.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-04-03T15:04:05","epoch":0,"release":"3.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"3.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-04-02T15:04:05","epoch":0,"release":"3.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"3.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package4","summary":"pkg4 sum","description":"pkg4 desc","homepage":"https://pkg4.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-05-03T15:04:05","epoch":0,"release":"4.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"4.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-05-02T15:04:05","epoch":0,"release":"4.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"4.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package5","summary":"pkg5 sum","description":"pkg5 desc","homepage":"https://pkg5.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-06-03T15:04:05","epoch":0,"release":"5.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"5.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-06-02T15:04:05","epoch":0,"release":"5.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"5.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package6","summary":"pkg6 sum","description":"pkg6 desc","homepage":"https://pkg6.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-07-02T15:04:05","epoch":0,"release":"6.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"6.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-07-03T15:04:05","epoch":0,"release":"6.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"6.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package7","summary":"pkg7 sum","description":"pkg7 desc","homepage":"https://pkg7.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-08-02T15:04:05","epoch":0,"release":"7.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"7.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-08-03T15:04:05","epoch":0,"release":"7.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"7.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package8","summary":"pkg8 sum","description":"pkg8 desc","homepage":"https://pkg8.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-09-03T15:04:05","epoch":0,"release":"8.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"8.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-09-02T15:04:05","epoch":0,"release":"8.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"8.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package9","summary":"pkg9 sum","description":"pkg9 desc","homepage":"https://pkg9.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-10-02T15:04:05","epoch":0,"release":"9.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"9.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-10-03T15:04:05","epoch":0,"release":"9.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"9.1","source_ref":"SOURCE_REF","metadata":{}}}]}]}`}, + {rpmmd_mock.BaseFixture, "/api/v0/projects/info/package2*,package16", http.StatusOK, `{"projects":[{"name":"package16","summary":"pkg16 sum","description":"pkg16 desc","homepage":"https://pkg16.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-05-02T15:04:05","epoch":0,"release":"16.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"16.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-05-03T15:04:05","epoch":0,"release":"16.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"16.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package2","summary":"pkg2 sum","description":"pkg2 desc","homepage":"https://pkg2.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-03-02T15:04:05","epoch":0,"release":"2.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"2.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-03-03T15:04:05","epoch":0,"release":"2.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"2.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package20","summary":"pkg20 sum","description":"pkg20 desc","homepage":"https://pkg20.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-09-03T15:04:05","epoch":0,"release":"20.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"20.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-09-02T15:04:05","epoch":0,"release":"20.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"20.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package21","summary":"pkg21 sum","description":"pkg21 desc","homepage":"https://pkg21.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-10-02T15:04:05","epoch":0,"release":"21.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"21.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-10-03T15:04:05","epoch":0,"release":"21.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"21.1","source_ref":"SOURCE_REF","metadata":{}}}]}]}`}, + {rpmmd_mock.BadFetch, "/api/v0/projects/info/package2*,package16", http.StatusBadRequest, `{"status":false,"errors":[{"id":"ModulesError","msg":"msg: DNF error occured: FetchError: There was a problem when fetching packages."}]}`}, + } + + for _, c := range cases { + api, _ := createWeldrAPI(c.Fixture) + test.TestRoute(t, api, true, "GET", c.Path, ``, c.ExpectedStatus, c.ExpectedJSON) + } +} + +func TestModulesInfo(t *testing.T) { + var cases = []struct { + Fixture rpmmd_mock.FixtureGenerator + Path string + ExpectedStatus int + ExpectedJSON string + }{ + {rpmmd_mock.BaseFixture, "/api/v0/modules/info", http.StatusBadRequest, `{"status":false,"errors":[{"id":"UnknownModule","msg":"No packages specified."}]}`}, + {rpmmd_mock.BaseFixture, "/api/v0/modules/info/", http.StatusBadRequest, `{"status":false,"errors":[{"id":"UnknownModule","msg":"No packages specified."}]}`}, + {rpmmd_mock.BaseFixture, "/api/v0/modules/info/nonexistingpkg", http.StatusBadRequest, `{"status":false,"errors":[{"id":"UnknownModule","msg":"No packages have been found."}]}`}, + {rpmmd_mock.BadDepsolve, "/api/v0/modules/info/package1", http.StatusBadRequest, `{"status":false,"errors":[{"id":"ModulesError","msg":"Cannot depsolve package package1: DNF error occured: DepsolveError: There was a problem depsolving ['go2rpm']: \n Problem: conflicting requests\n - nothing provides askalono-cli needed by go2rpm-1-4.fc31.noarch"}]}`}, + {rpmmd_mock.BaseFixture, "/api/v0/modules/info/package2*,package16", http.StatusOK, `{"modules":[{"name":"package16","summary":"pkg16 sum","description":"pkg16 desc","homepage":"https://pkg16.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-05-02T15:04:05","epoch":0,"release":"16.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"16.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-05-03T15:04:05","epoch":0,"release":"16.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"16.1","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]},{"name":"package2","summary":"pkg2 sum","description":"pkg2 desc","homepage":"https://pkg2.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-03-02T15:04:05","epoch":0,"release":"2.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"2.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-03-03T15:04:05","epoch":0,"release":"2.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"2.1","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]},{"name":"package20","summary":"pkg20 sum","description":"pkg20 desc","homepage":"https://pkg20.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-09-03T15:04:05","epoch":0,"release":"20.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"20.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-09-02T15:04:05","epoch":0,"release":"20.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"20.0","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]},{"name":"package21","summary":"pkg21 sum","description":"pkg21 desc","homepage":"https://pkg21.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-10-02T15:04:05","epoch":0,"release":"21.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"21.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-10-03T15:04:05","epoch":0,"release":"21.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"21.1","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]}]}`}, + {rpmmd_mock.BaseFixture, "/api/v0/modules/info/*", http.StatusOK, `{"modules":[{"name":"package0","summary":"pkg0 sum","description":"pkg0 desc","homepage":"https://pkg0.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-01-03T15:04:05","epoch":0,"release":"0.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"0.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-01-02T15:04:05","epoch":0,"release":"0.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"0.0","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]},{"name":"package1","summary":"pkg1 sum","description":"pkg1 desc","homepage":"https://pkg1.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-02-02T15:04:05","epoch":0,"release":"1.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"1.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-02-03T15:04:05","epoch":0,"release":"1.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"1.1","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]},{"name":"package10","summary":"pkg10 sum","description":"pkg10 desc","homepage":"https://pkg10.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-11-02T15:04:05","epoch":0,"release":"10.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"10.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-11-03T15:04:05","epoch":0,"release":"10.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"10.1","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]},{"name":"package11","summary":"pkg11 sum","description":"pkg11 desc","homepage":"https://pkg11.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-12-03T15:04:05","epoch":0,"release":"11.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"11.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-12-02T15:04:05","epoch":0,"release":"11.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"11.0","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]},{"name":"package12","summary":"pkg12 sum","description":"pkg12 desc","homepage":"https://pkg12.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-01-02T15:04:05","epoch":0,"release":"12.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"12.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-01-03T15:04:05","epoch":0,"release":"12.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"12.1","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]},{"name":"package13","summary":"pkg13 sum","description":"pkg13 desc","homepage":"https://pkg13.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-02-02T15:04:05","epoch":0,"release":"13.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"13.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-02-03T15:04:05","epoch":0,"release":"13.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"13.1","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]},{"name":"package14","summary":"pkg14 sum","description":"pkg14 desc","homepage":"https://pkg14.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-03-03T15:04:05","epoch":0,"release":"14.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"14.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-03-02T15:04:05","epoch":0,"release":"14.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"14.0","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]},{"name":"package15","summary":"pkg15 sum","description":"pkg15 desc","homepage":"https://pkg15.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-04-03T15:04:05","epoch":0,"release":"15.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"15.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-04-02T15:04:05","epoch":0,"release":"15.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"15.0","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]},{"name":"package16","summary":"pkg16 sum","description":"pkg16 desc","homepage":"https://pkg16.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-05-02T15:04:05","epoch":0,"release":"16.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"16.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-05-03T15:04:05","epoch":0,"release":"16.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"16.1","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]},{"name":"package17","summary":"pkg17 sum","description":"pkg17 desc","homepage":"https://pkg17.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-06-03T15:04:05","epoch":0,"release":"17.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"17.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-06-02T15:04:05","epoch":0,"release":"17.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"17.0","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]},{"name":"package18","summary":"pkg18 sum","description":"pkg18 desc","homepage":"https://pkg18.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-07-02T15:04:05","epoch":0,"release":"18.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"18.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-07-03T15:04:05","epoch":0,"release":"18.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"18.1","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]},{"name":"package19","summary":"pkg19 sum","description":"pkg19 desc","homepage":"https://pkg19.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-08-03T15:04:05","epoch":0,"release":"19.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"19.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-08-02T15:04:05","epoch":0,"release":"19.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"19.0","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]},{"name":"package2","summary":"pkg2 sum","description":"pkg2 desc","homepage":"https://pkg2.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-03-02T15:04:05","epoch":0,"release":"2.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"2.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-03-03T15:04:05","epoch":0,"release":"2.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"2.1","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]},{"name":"package20","summary":"pkg20 sum","description":"pkg20 desc","homepage":"https://pkg20.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-09-03T15:04:05","epoch":0,"release":"20.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"20.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-09-02T15:04:05","epoch":0,"release":"20.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"20.0","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]},{"name":"package21","summary":"pkg21 sum","description":"pkg21 desc","homepage":"https://pkg21.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-10-02T15:04:05","epoch":0,"release":"21.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"21.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-10-03T15:04:05","epoch":0,"release":"21.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"21.1","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]},{"name":"package3","summary":"pkg3 sum","description":"pkg3 desc","homepage":"https://pkg3.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-04-03T15:04:05","epoch":0,"release":"3.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"3.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-04-02T15:04:05","epoch":0,"release":"3.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"3.0","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]},{"name":"package4","summary":"pkg4 sum","description":"pkg4 desc","homepage":"https://pkg4.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-05-03T15:04:05","epoch":0,"release":"4.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"4.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-05-02T15:04:05","epoch":0,"release":"4.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"4.0","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]},{"name":"package5","summary":"pkg5 sum","description":"pkg5 desc","homepage":"https://pkg5.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-06-03T15:04:05","epoch":0,"release":"5.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"5.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-06-02T15:04:05","epoch":0,"release":"5.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"5.0","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]},{"name":"package6","summary":"pkg6 sum","description":"pkg6 desc","homepage":"https://pkg6.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-07-02T15:04:05","epoch":0,"release":"6.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"6.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-07-03T15:04:05","epoch":0,"release":"6.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"6.1","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]},{"name":"package7","summary":"pkg7 sum","description":"pkg7 desc","homepage":"https://pkg7.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-08-02T15:04:05","epoch":0,"release":"7.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"7.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-08-03T15:04:05","epoch":0,"release":"7.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"7.1","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]},{"name":"package8","summary":"pkg8 sum","description":"pkg8 desc","homepage":"https://pkg8.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-09-03T15:04:05","epoch":0,"release":"8.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"8.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-09-02T15:04:05","epoch":0,"release":"8.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"8.0","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]},{"name":"package9","summary":"pkg9 sum","description":"pkg9 desc","homepage":"https://pkg9.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-10-02T15:04:05","epoch":0,"release":"9.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"9.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-10-03T15:04:05","epoch":0,"release":"9.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"9.1","source_ref":"SOURCE_REF","metadata":{}}}],"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]}]}`}, + {rpmmd_mock.BadFetch, "/api/v0/modules/info/package2*,package16", http.StatusBadRequest, `{"status":false,"errors":[{"id":"ModulesError","msg":"msg: DNF error occured: FetchError: There was a problem when fetching packages."}]}`}, + } + + for _, c := range cases { + api, _ := createWeldrAPI(c.Fixture) + test.TestRoute(t, api, true, "GET", c.Path, ``, c.ExpectedStatus, c.ExpectedJSON) + } +} + +func TestProjectsList(t *testing.T) { + var cases = []struct { + Fixture rpmmd_mock.FixtureGenerator + Path string + ExpectedStatus int + ExpectedJSON string + }{ + {rpmmd_mock.BaseFixture, "/api/v0/projects/list", http.StatusOK, `{"total":22,"offset":0,"limit":20,"projects":[{"name":"package0","summary":"pkg0 sum","description":"pkg0 desc","homepage":"https://pkg0.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-01-03T15:04:05","epoch":0,"release":"0.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"0.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-01-02T15:04:05","epoch":0,"release":"0.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"0.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package1","summary":"pkg1 sum","description":"pkg1 desc","homepage":"https://pkg1.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-02-02T15:04:05","epoch":0,"release":"1.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"1.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-02-03T15:04:05","epoch":0,"release":"1.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"1.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package10","summary":"pkg10 sum","description":"pkg10 desc","homepage":"https://pkg10.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-11-02T15:04:05","epoch":0,"release":"10.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"10.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-11-03T15:04:05","epoch":0,"release":"10.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"10.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package11","summary":"pkg11 sum","description":"pkg11 desc","homepage":"https://pkg11.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-12-03T15:04:05","epoch":0,"release":"11.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"11.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-12-02T15:04:05","epoch":0,"release":"11.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"11.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package12","summary":"pkg12 sum","description":"pkg12 desc","homepage":"https://pkg12.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-01-02T15:04:05","epoch":0,"release":"12.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"12.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-01-03T15:04:05","epoch":0,"release":"12.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"12.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package13","summary":"pkg13 sum","description":"pkg13 desc","homepage":"https://pkg13.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-02-02T15:04:05","epoch":0,"release":"13.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"13.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-02-03T15:04:05","epoch":0,"release":"13.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"13.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package14","summary":"pkg14 sum","description":"pkg14 desc","homepage":"https://pkg14.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-03-03T15:04:05","epoch":0,"release":"14.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"14.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-03-02T15:04:05","epoch":0,"release":"14.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"14.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package15","summary":"pkg15 sum","description":"pkg15 desc","homepage":"https://pkg15.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-04-03T15:04:05","epoch":0,"release":"15.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"15.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-04-02T15:04:05","epoch":0,"release":"15.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"15.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package16","summary":"pkg16 sum","description":"pkg16 desc","homepage":"https://pkg16.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-05-02T15:04:05","epoch":0,"release":"16.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"16.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-05-03T15:04:05","epoch":0,"release":"16.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"16.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package17","summary":"pkg17 sum","description":"pkg17 desc","homepage":"https://pkg17.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-06-03T15:04:05","epoch":0,"release":"17.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"17.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-06-02T15:04:05","epoch":0,"release":"17.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"17.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package18","summary":"pkg18 sum","description":"pkg18 desc","homepage":"https://pkg18.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-07-02T15:04:05","epoch":0,"release":"18.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"18.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-07-03T15:04:05","epoch":0,"release":"18.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"18.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package19","summary":"pkg19 sum","description":"pkg19 desc","homepage":"https://pkg19.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-08-03T15:04:05","epoch":0,"release":"19.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"19.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-08-02T15:04:05","epoch":0,"release":"19.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"19.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package2","summary":"pkg2 sum","description":"pkg2 desc","homepage":"https://pkg2.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-03-02T15:04:05","epoch":0,"release":"2.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"2.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-03-03T15:04:05","epoch":0,"release":"2.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"2.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package20","summary":"pkg20 sum","description":"pkg20 desc","homepage":"https://pkg20.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-09-03T15:04:05","epoch":0,"release":"20.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"20.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-09-02T15:04:05","epoch":0,"release":"20.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"20.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package21","summary":"pkg21 sum","description":"pkg21 desc","homepage":"https://pkg21.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-10-02T15:04:05","epoch":0,"release":"21.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"21.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-10-03T15:04:05","epoch":0,"release":"21.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"21.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package3","summary":"pkg3 sum","description":"pkg3 desc","homepage":"https://pkg3.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-04-03T15:04:05","epoch":0,"release":"3.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"3.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-04-02T15:04:05","epoch":0,"release":"3.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"3.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package4","summary":"pkg4 sum","description":"pkg4 desc","homepage":"https://pkg4.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-05-03T15:04:05","epoch":0,"release":"4.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"4.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-05-02T15:04:05","epoch":0,"release":"4.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"4.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package5","summary":"pkg5 sum","description":"pkg5 desc","homepage":"https://pkg5.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-06-03T15:04:05","epoch":0,"release":"5.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"5.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-06-02T15:04:05","epoch":0,"release":"5.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"5.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package6","summary":"pkg6 sum","description":"pkg6 desc","homepage":"https://pkg6.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-07-02T15:04:05","epoch":0,"release":"6.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"6.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-07-03T15:04:05","epoch":0,"release":"6.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"6.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package7","summary":"pkg7 sum","description":"pkg7 desc","homepage":"https://pkg7.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-08-02T15:04:05","epoch":0,"release":"7.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"7.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-08-03T15:04:05","epoch":0,"release":"7.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"7.1","source_ref":"SOURCE_REF","metadata":{}}}]}]}`}, + {rpmmd_mock.BaseFixture, "/api/v0/projects/list/", http.StatusOK, `{"total":22,"offset":0,"limit":20,"projects":[{"name":"package0","summary":"pkg0 sum","description":"pkg0 desc","homepage":"https://pkg0.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-01-03T15:04:05","epoch":0,"release":"0.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"0.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-01-02T15:04:05","epoch":0,"release":"0.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"0.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package1","summary":"pkg1 sum","description":"pkg1 desc","homepage":"https://pkg1.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-02-02T15:04:05","epoch":0,"release":"1.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"1.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-02-03T15:04:05","epoch":0,"release":"1.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"1.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package10","summary":"pkg10 sum","description":"pkg10 desc","homepage":"https://pkg10.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-11-02T15:04:05","epoch":0,"release":"10.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"10.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-11-03T15:04:05","epoch":0,"release":"10.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"10.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package11","summary":"pkg11 sum","description":"pkg11 desc","homepage":"https://pkg11.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-12-03T15:04:05","epoch":0,"release":"11.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"11.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-12-02T15:04:05","epoch":0,"release":"11.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"11.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package12","summary":"pkg12 sum","description":"pkg12 desc","homepage":"https://pkg12.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-01-02T15:04:05","epoch":0,"release":"12.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"12.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-01-03T15:04:05","epoch":0,"release":"12.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"12.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package13","summary":"pkg13 sum","description":"pkg13 desc","homepage":"https://pkg13.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-02-02T15:04:05","epoch":0,"release":"13.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"13.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-02-03T15:04:05","epoch":0,"release":"13.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"13.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package14","summary":"pkg14 sum","description":"pkg14 desc","homepage":"https://pkg14.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-03-03T15:04:05","epoch":0,"release":"14.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"14.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-03-02T15:04:05","epoch":0,"release":"14.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"14.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package15","summary":"pkg15 sum","description":"pkg15 desc","homepage":"https://pkg15.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-04-03T15:04:05","epoch":0,"release":"15.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"15.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-04-02T15:04:05","epoch":0,"release":"15.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"15.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package16","summary":"pkg16 sum","description":"pkg16 desc","homepage":"https://pkg16.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-05-02T15:04:05","epoch":0,"release":"16.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"16.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-05-03T15:04:05","epoch":0,"release":"16.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"16.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package17","summary":"pkg17 sum","description":"pkg17 desc","homepage":"https://pkg17.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-06-03T15:04:05","epoch":0,"release":"17.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"17.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-06-02T15:04:05","epoch":0,"release":"17.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"17.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package18","summary":"pkg18 sum","description":"pkg18 desc","homepage":"https://pkg18.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-07-02T15:04:05","epoch":0,"release":"18.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"18.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-07-03T15:04:05","epoch":0,"release":"18.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"18.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package19","summary":"pkg19 sum","description":"pkg19 desc","homepage":"https://pkg19.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-08-03T15:04:05","epoch":0,"release":"19.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"19.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-08-02T15:04:05","epoch":0,"release":"19.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"19.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package2","summary":"pkg2 sum","description":"pkg2 desc","homepage":"https://pkg2.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-03-02T15:04:05","epoch":0,"release":"2.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"2.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-03-03T15:04:05","epoch":0,"release":"2.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"2.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package20","summary":"pkg20 sum","description":"pkg20 desc","homepage":"https://pkg20.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-09-03T15:04:05","epoch":0,"release":"20.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"20.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-09-02T15:04:05","epoch":0,"release":"20.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"20.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package21","summary":"pkg21 sum","description":"pkg21 desc","homepage":"https://pkg21.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2007-10-02T15:04:05","epoch":0,"release":"21.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"21.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2007-10-03T15:04:05","epoch":0,"release":"21.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"21.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package3","summary":"pkg3 sum","description":"pkg3 desc","homepage":"https://pkg3.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-04-03T15:04:05","epoch":0,"release":"3.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"3.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-04-02T15:04:05","epoch":0,"release":"3.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"3.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package4","summary":"pkg4 sum","description":"pkg4 desc","homepage":"https://pkg4.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-05-03T15:04:05","epoch":0,"release":"4.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"4.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-05-02T15:04:05","epoch":0,"release":"4.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"4.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package5","summary":"pkg5 sum","description":"pkg5 desc","homepage":"https://pkg5.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-06-03T15:04:05","epoch":0,"release":"5.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"5.1","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-06-02T15:04:05","epoch":0,"release":"5.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"5.0","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package6","summary":"pkg6 sum","description":"pkg6 desc","homepage":"https://pkg6.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-07-02T15:04:05","epoch":0,"release":"6.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"6.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-07-03T15:04:05","epoch":0,"release":"6.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"6.1","source_ref":"SOURCE_REF","metadata":{}}}]},{"name":"package7","summary":"pkg7 sum","description":"pkg7 desc","homepage":"https://pkg7.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-08-02T15:04:05","epoch":0,"release":"7.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"7.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-08-03T15:04:05","epoch":0,"release":"7.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"7.1","source_ref":"SOURCE_REF","metadata":{}}}]}]}`}, + {rpmmd_mock.BadFetch, "/api/v0/projects/list/", http.StatusBadRequest, `{"status":false,"errors":[{"id":"ProjectsError","msg":"msg: DNF error occured: FetchError: There was a problem when fetching packages."}]}`}, + {rpmmd_mock.BaseFixture, "/api/v0/projects/list?offset=1&limit=1", http.StatusOK, `{"total":22,"offset":1,"limit":1,"projects":[{"name":"package1","summary":"pkg1 sum","description":"pkg1 desc","homepage":"https://pkg1.example.com","upstream_vcs":"UPSTREAM_VCS","builds":[{"arch":"x86_64","build_time":"2006-02-02T15:04:05","epoch":0,"release":"1.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"1.0","source_ref":"SOURCE_REF","metadata":{}}},{"arch":"x86_64","build_time":"2006-02-03T15:04:05","epoch":0,"release":"1.fc30","changelog":"CHANGELOG_NEEDED","build_config_ref":"BUILD_CONFIG_REF","build_env_ref":"BUILD_ENV_REF","metadata":{},"source":{"license":"MIT","version":"1.1","source_ref":"SOURCE_REF","metadata":{}}}]}]}`}, + } + + for _, c := range cases { + api, _ := createWeldrAPI(c.Fixture) + test.TestRoute(t, api, true, "GET", c.Path, ``, c.ExpectedStatus, c.ExpectedJSON) + } +} + +func TestModulesList(t *testing.T) { + var cases = []struct { + Fixture rpmmd_mock.FixtureGenerator + Path string + ExpectedStatus int + ExpectedJSON string + }{ + {rpmmd_mock.BaseFixture, "/api/v0/modules/list", http.StatusOK, `{"total":22,"offset":0,"limit":20,"modules":[{"name":"package0","group_type":"rpm"},{"name":"package1","group_type":"rpm"},{"name":"package10","group_type":"rpm"},{"name":"package11","group_type":"rpm"},{"name":"package12","group_type":"rpm"},{"name":"package13","group_type":"rpm"},{"name":"package14","group_type":"rpm"},{"name":"package15","group_type":"rpm"},{"name":"package16","group_type":"rpm"},{"name":"package17","group_type":"rpm"},{"name":"package18","group_type":"rpm"},{"name":"package19","group_type":"rpm"},{"name":"package2","group_type":"rpm"},{"name":"package20","group_type":"rpm"},{"name":"package21","group_type":"rpm"},{"name":"package3","group_type":"rpm"},{"name":"package4","group_type":"rpm"},{"name":"package5","group_type":"rpm"},{"name":"package6","group_type":"rpm"},{"name":"package7","group_type":"rpm"}]}`}, + {rpmmd_mock.BaseFixture, "/api/v0/modules/list/", http.StatusOK, `{"total":22,"offset":0,"limit":20,"modules":[{"name":"package0","group_type":"rpm"},{"name":"package1","group_type":"rpm"},{"name":"package10","group_type":"rpm"},{"name":"package11","group_type":"rpm"},{"name":"package12","group_type":"rpm"},{"name":"package13","group_type":"rpm"},{"name":"package14","group_type":"rpm"},{"name":"package15","group_type":"rpm"},{"name":"package16","group_type":"rpm"},{"name":"package17","group_type":"rpm"},{"name":"package18","group_type":"rpm"},{"name":"package19","group_type":"rpm"},{"name":"package2","group_type":"rpm"},{"name":"package20","group_type":"rpm"},{"name":"package21","group_type":"rpm"},{"name":"package3","group_type":"rpm"},{"name":"package4","group_type":"rpm"},{"name":"package5","group_type":"rpm"},{"name":"package6","group_type":"rpm"},{"name":"package7","group_type":"rpm"}]}`}, + {rpmmd_mock.BaseFixture, "/api/v0/modules/list/nonexistingpkg", http.StatusBadRequest, `{"status":false,"errors":[{"id":"UnknownModule","msg":"No packages have been found."}]}`}, + {rpmmd_mock.BaseFixture, "/api/v0/modules/list/package2*,package16", http.StatusOK, `{"total":4,"offset":0,"limit":20,"modules":[{"name":"package16","group_type":"rpm"},{"name":"package2","group_type":"rpm"},{"name":"package20","group_type":"rpm"},{"name":"package21","group_type":"rpm"}]}`}, + {rpmmd_mock.BadFetch, "/api/v0/modules/list/package2*,package16", http.StatusBadRequest, `{"status":false,"errors":[{"id":"ModulesError","msg":"msg: DNF error occured: FetchError: There was a problem when fetching packages."}]}`}, + {rpmmd_mock.BaseFixture, "/api/v0/modules/list/package2*,package16?offset=1&limit=1", http.StatusOK, `{"total":4,"offset":1,"limit":1,"modules":[{"name":"package2","group_type":"rpm"}]}`}, + {rpmmd_mock.BaseFixture, "/api/v0/modules/list/*", http.StatusOK, `{"total":22,"offset":0,"limit":20,"modules":[{"name":"package0","group_type":"rpm"},{"name":"package1","group_type":"rpm"},{"name":"package10","group_type":"rpm"},{"name":"package11","group_type":"rpm"},{"name":"package12","group_type":"rpm"},{"name":"package13","group_type":"rpm"},{"name":"package14","group_type":"rpm"},{"name":"package15","group_type":"rpm"},{"name":"package16","group_type":"rpm"},{"name":"package17","group_type":"rpm"},{"name":"package18","group_type":"rpm"},{"name":"package19","group_type":"rpm"},{"name":"package2","group_type":"rpm"},{"name":"package20","group_type":"rpm"},{"name":"package21","group_type":"rpm"},{"name":"package3","group_type":"rpm"},{"name":"package4","group_type":"rpm"},{"name":"package5","group_type":"rpm"},{"name":"package6","group_type":"rpm"},{"name":"package7","group_type":"rpm"}]}`}, + } + + for _, c := range cases { + api, _ := createWeldrAPI(c.Fixture) + test.TestRoute(t, api, true, "GET", c.Path, ``, c.ExpectedStatus, c.ExpectedJSON) + } +} diff --git a/internal/weldr/compose.go b/internal/weldr/compose.go new file mode 100644 index 0000000..dfc90e7 --- /dev/null +++ b/internal/weldr/compose.go @@ -0,0 +1,70 @@ +package weldr + +import ( + "sort" + + "github.com/google/uuid" + + "github.com/osbuild/osbuild-composer/internal/common" + "github.com/osbuild/osbuild-composer/internal/store" +) + +type ComposeEntry struct { + ID uuid.UUID `json:"id"` + Blueprint string `json:"blueprint"` + Version string `json:"version"` + ComposeType string `json:"compose_type"` + ImageSize uint64 `json:"image_size"` // This is user-provided image size, not actual file size + QueueStatus common.ImageBuildState `json:"queue_status"` + JobCreated float64 `json:"job_created"` + JobStarted float64 `json:"job_started,omitempty"` + JobFinished float64 `json:"job_finished,omitempty"` + Uploads []uploadResponse `json:"uploads,omitempty"` +} + +func composeToComposeEntry(id uuid.UUID, compose store.Compose, status *composeStatus, includeUploads bool) *ComposeEntry { + var composeEntry ComposeEntry + + composeEntry.ID = id + composeEntry.Blueprint = compose.Blueprint.Name + composeEntry.Version = compose.Blueprint.Version + composeEntry.ComposeType = compose.ImageBuild.ImageType.Name() + + if includeUploads { + composeEntry.Uploads = targetsToUploadResponses(compose.ImageBuild.Targets, status.State) + } + + switch status.State { + case common.CWaiting: + composeEntry.QueueStatus = common.IBWaiting + composeEntry.JobCreated = float64(status.Queued.UnixNano()) / 1000000000 + + case common.CRunning: + composeEntry.QueueStatus = common.IBRunning + composeEntry.JobCreated = float64(status.Queued.UnixNano()) / 1000000000 + composeEntry.JobStarted = float64(status.Started.UnixNano()) / 1000000000 + + case common.CFinished: + composeEntry.QueueStatus = common.IBFinished + composeEntry.ImageSize = compose.ImageBuild.Size + composeEntry.JobCreated = float64(status.Queued.UnixNano()) / 1000000000 + composeEntry.JobStarted = float64(status.Started.UnixNano()) / 1000000000 + composeEntry.JobFinished = float64(status.Finished.UnixNano()) / 1000000000 + + case common.CFailed: + composeEntry.QueueStatus = common.IBFailed + composeEntry.JobCreated = float64(status.Queued.UnixNano()) / 1000000000 + composeEntry.JobStarted = float64(status.Started.UnixNano()) / 1000000000 + composeEntry.JobFinished = float64(status.Finished.UnixNano()) / 1000000000 + default: + panic("invalid compose state") + } + + return &composeEntry +} + +func sortComposeEntries(entries []*ComposeEntry) { + sort.Slice(entries, func(i, j int) bool { + return entries[i].ID.String() < entries[j].ID.String() + }) +} diff --git a/internal/weldr/json.go b/internal/weldr/json.go new file mode 100644 index 0000000..669b93f --- /dev/null +++ b/internal/weldr/json.go @@ -0,0 +1,349 @@ +// Package weldr - json contains Exported API request/response structures +// Copyright (C) 2020 by Red Hat, Inc. +package weldr + +import ( + "github.com/google/uuid" + + "github.com/osbuild/osbuild-composer/internal/blueprint" + "github.com/osbuild/osbuild-composer/internal/common" + "github.com/osbuild/osbuild-composer/internal/rpmmd" + "github.com/osbuild/osbuild-composer/internal/store" +) + +// StatusV0 is the response to /api/status from a v0+ server +type StatusV0 struct { + API string `json:"api"` + DBSupported bool `json:"db_supported"` + DBVersion string `json:"db_version"` + SchemaVersion string `json:"schema_version"` + Backend string `json:"backend"` + Build string `json:"build"` + Messages []string `json:"messages"` +} + +// BlueprintsListV0 is the response to /blueprints/list request +type BlueprintsListV0 struct { + Total uint `json:"total"` + Offset uint `json:"offset"` + Limit uint `json:"limit"` + Blueprints []string `json:"blueprints"` +} + +// ResponseError holds the API response error details +type ResponseError struct { + Code int `json:"code,omitempty"` + ID string `json:"id"` + Msg string `json:"msg"` +} + +// BlueprintsInfoV0 is the response to /blueprints/info?format=json request +type BlueprintsInfoV0 struct { + Blueprints []blueprint.Blueprint `json:"blueprints"` + Changes []infoChange `json:"changes"` + Errors []ResponseError `json:"errors"` +} +type infoChange struct { + Changed bool `json:"changed"` + Name string `json:"name"` +} + +// BlueprintsChangesV0 is the response to /blueprints/changes/ request +type BlueprintsChangesV0 struct { + BlueprintsChanges []bpChange `json:"blueprints"` + Errors []ResponseError `json:"errors"` + Limit uint `json:"limit"` + Offset uint `json:"offset"` +} +type bpChange struct { + Changes []blueprint.Change `json:"changes"` + Name string `json:"name"` + Total int `json:"total"` +} + +// BlueprintsDepsolveV0 is the response to /blueprints/depsolve/ request +type BlueprintsDepsolveV0 struct { + Blueprints []depsolveEntry `json:"blueprints"` + Errors []ResponseError `json:"errors"` +} +type depsolveEntry struct { + Blueprint blueprint.Blueprint `json:"blueprint"` + Dependencies []rpmmd.PackageSpec `json:"dependencies"` +} + +// BlueprintsFreezeV0 is the response to /blueprints/freeze/ request +type BlueprintsFreezeV0 struct { + Blueprints []blueprintFrozen `json:"blueprints"` + Errors []ResponseError `json:"errors"` +} +type blueprintFrozen struct { + Blueprint blueprint.Blueprint `json:"blueprint"` +} + +// SourceListV0 is the response to /source/list request +type SourceListV0 struct { + Sources []string `json:"sources"` +} + +// SourceListV1 is the response to /source/list request +type SourceListV1 struct { + Sources []string `json:"sources"` +} + +// SourceInfoV0 is the response to a /source/info request +type SourceInfoV0 struct { + Sources map[string]SourceConfigV0 `json:"sources"` + Errors []ResponseError `json:"errors"` +} + +// SourceConfig returns a SourceConfig struct populated with the supported variables +func (s *SourceInfoV0) SourceConfig(sourceName string) (ssc store.SourceConfig, ok bool) { + si, ok := s.Sources[sourceName] + if !ok { + return ssc, false + } + + return si.SourceConfig(), true +} + +// SourceConfig interface defines the common functions needed to query the SourceConfigV0/V1 structs +type SourceConfig interface { + GetKey() string + GetName() string + GetType() string + SourceConfig() store.SourceConfig +} + +// NewSourceConfigV0 converts a store.SourceConfig to a SourceConfigV0 +// The store does not support proxy and gpgkey_urls +func NewSourceConfigV0(s store.SourceConfig) SourceConfigV0 { + var sc SourceConfigV0 + + sc.Name = s.Name + sc.Type = s.Type + sc.URL = s.URL + sc.CheckGPG = s.CheckGPG + sc.CheckSSL = s.CheckSSL + sc.System = s.System + + return sc +} + +// SourceConfigV0 holds the source repository information +type SourceConfigV0 struct { + Name string `json:"name" toml:"name"` + Type string `json:"type" toml:"type"` + URL string `json:"url" toml:"url"` + CheckGPG bool `json:"check_gpg" toml:"check_gpg"` + CheckSSL bool `json:"check_ssl" toml:"check_ssl"` + System bool `json:"system" toml:"system"` + Proxy string `json:"proxy,omitempty" toml:"proxy,omitempty"` + GPGUrls []string `json:"gpgkey_urls,omitempty" toml:"gpgkey_urls,omitempty"` +} + +// Key return the key, .Name in this case +func (s SourceConfigV0) GetKey() string { + return s.Name +} + +// Name return the .Name field +func (s SourceConfigV0) GetName() string { + return s.Name +} + +// Type return the .Type field +func (s SourceConfigV0) GetType() string { + return s.Type +} + +// SourceConfig returns a SourceConfig struct populated with the supported variables +// The store does not support proxy and gpgkey_urls +func (s SourceConfigV0) SourceConfig() (ssc store.SourceConfig) { + ssc.Name = s.Name + ssc.Type = s.Type + ssc.URL = s.URL + ssc.CheckGPG = s.CheckGPG + ssc.CheckSSL = s.CheckSSL + + return ssc +} + +// SourceInfoResponseV0 +type SourceInfoResponseV0 struct { + Sources map[string]SourceConfigV0 `json:"sources"` + Errors []responseError `json:"errors"` +} + +// NewSourceConfigV1 converts a store.SourceConfig to a SourceConfigV1 +// The store does not support proxy and gpgkey_urls +func NewSourceConfigV1(id string, s store.SourceConfig) SourceConfigV1 { + var sc SourceConfigV1 + + sc.ID = id + sc.Name = s.Name + sc.Type = s.Type + sc.URL = s.URL + sc.CheckGPG = s.CheckGPG + sc.CheckSSL = s.CheckSSL + sc.System = s.System + + return sc +} + +// SourceConfigV1 holds the source repository information +type SourceConfigV1 struct { + ID string `json:"id" toml:"id"` + Name string `json:"name" toml:"name"` + Type string `json:"type" toml:"type"` + URL string `json:"url" toml:"url"` + CheckGPG bool `json:"check_gpg" toml:"check_gpg"` + CheckSSL bool `json:"check_ssl" toml:"check_ssl"` + System bool `json:"system" toml:"system"` + Proxy string `json:"proxy,omitempty" toml:"proxy,omitempty"` + GPGUrls []string `json:"gpgkey_urls,omitempty" toml:"gpgkey_urls,omitempty"` +} + +// Key returns the key, .ID in this case +func (s SourceConfigV1) GetKey() string { + return s.ID +} + +// Name return the .Name field +func (s SourceConfigV1) GetName() string { + return s.Name +} + +// Type return the .Type field +func (s SourceConfigV1) GetType() string { + return s.Type +} + +// SourceConfig returns a SourceConfig struct populated with the supported variables +// The store does not support proxy and gpgkey_urls +func (s SourceConfigV1) SourceConfig() (ssc store.SourceConfig) { + ssc.Name = s.Name + ssc.Type = s.Type + ssc.URL = s.URL + ssc.CheckGPG = s.CheckGPG + ssc.CheckSSL = s.CheckSSL + + return ssc +} + +// SourceInfoResponseV1 +type SourceInfoResponseV1 struct { + Sources map[string]SourceConfigV1 `json:"sources"` + Errors []responseError `json:"errors"` +} + +// ProjectsListV0 is the response to /projects/list request +type ProjectsListV0 struct { + Total uint `json:"total"` + Offset uint `json:"offset"` + Limit uint `json:"limit"` + Projects []rpmmd.PackageInfo `json:"projects"` +} + +// ProjectsInfoV0 is the response to /projects/info request +type ProjectsInfoV0 struct { + Projects []rpmmd.PackageInfo `json:"projects"` +} + +// ProjectsDependenciesV0 is the response to /projects/depsolve request +type ProjectsDependenciesV0 struct { + Projects []rpmmd.PackageSpec `json:"projects"` +} + +type ModuleName struct { + Name string `json:"name"` + GroupType string `json:"group_type"` +} + +type ModulesListV0 struct { + Total uint `json:"total"` + Offset uint `json:"offset"` + Limit uint `json:"limit"` + Modules []ModuleName `json:"modules"` +} + +// ModulesInfoV0 is the response to /modules/info request +type ModulesInfoV0 struct { + Modules []rpmmd.PackageInfo `json:"modules"` +} + +type ComposeRequestV0 struct { + BlueprintName string `json:"blueprint_name"` + ComposeType string `json:"compose_type"` + Branch string `json:"branch"` +} +type ComposeResponseV0 struct { + BuildID uuid.UUID `json:"build_id"` + Status bool `json:"status"` +} + +// This is similar to weldr.ComposeEntry but different because internally the image types are capitalized +type ComposeEntryV0 struct { + ID uuid.UUID `json:"id"` + Blueprint string `json:"blueprint"` + Version string `json:"version"` + ComposeType string `json:"compose_type"` + ImageSize uint64 `json:"image_size"` // This is user-provided image size, not actual file size + QueueStatus common.ImageBuildState `json:"queue_status"` + JobCreated float64 `json:"job_created"` + JobStarted float64 `json:"job_started,omitempty"` + JobFinished float64 `json:"job_finished,omitempty"` + Uploads []uploadResponse `json:"uploads,omitempty"` +} + +type ComposeFinishedResponseV0 struct { + Finished []ComposeEntryV0 `json:"finished"` +} +type ComposeFailedResponseV0 struct { + Failed []ComposeEntryV0 `json:"failed"` +} +type ComposeStatusResponseV0 struct { + UUIDs []ComposeEntryV0 `json:"uuids"` +} + +type ComposeTypeV0 struct { + Name string `json:"name"` + Enabled bool `json:"enabled"` +} + +type ComposeTypesResponseV0 struct { + Types []ComposeTypeV0 `json:"types"` +} + +type DeleteComposeStatusV0 struct { + UUID uuid.UUID `json:"uuid"` + Status bool `json:"status"` +} + +type DeleteComposeResponseV0 struct { + UUIDs []DeleteComposeStatusV0 `json:"uuids"` + Errors []ResponseError `json:"errors"` +} + +type CancelComposeStatusV0 struct { + UUID uuid.UUID `json:"uuid"` + Status bool `json:"status"` +} + +// NOTE: This does not include the lorax-composer specific 'config' field +type ComposeInfoResponseV0 struct { + ID uuid.UUID `json:"id"` + Blueprint *blueprint.Blueprint `json:"blueprint"` // blueprint not frozen! + Commit string `json:"commit"` // empty for now + Deps struct { + Packages []rpmmd.Package `json:"packages"` + } `json:"deps"` + ComposeType string `json:"compose_type"` + QueueStatus string `json:"queue_status"` + ImageSize uint64 `json:"image_size"` + Uploads []uploadResponse `json:"uploads,omitempty"` +} + +type ComposeQueueResponseV0 struct { + New []ComposeEntryV0 `json:"new"` + Run []ComposeEntryV0 `json:"run"` +} diff --git a/internal/weldr/upload.go b/internal/weldr/upload.go new file mode 100644 index 0000000..4836ab3 --- /dev/null +++ b/internal/weldr/upload.go @@ -0,0 +1,167 @@ +package weldr + +import ( + "encoding/json" + "errors" + "time" + + "github.com/osbuild/osbuild-composer/internal/common" + "github.com/osbuild/osbuild-composer/internal/distro" + + "github.com/google/uuid" + "github.com/osbuild/osbuild-composer/internal/target" +) + +type uploadResponse struct { + UUID uuid.UUID `json:"uuid"` + Status common.ImageBuildState `json:"status"` + ProviderName string `json:"provider_name"` + ImageName string `json:"image_name"` + CreationTime float64 `json:"creation_time"` + Settings uploadSettings `json:"settings"` +} + +type uploadSettings interface { + isUploadSettings() +} + +type awsUploadSettings struct { + Region string `json:"region"` + AccessKeyID string `json:"accessKeyID,omitempty"` + SecretAccessKey string `json:"secretAccessKey,omitempty"` + Bucket string `json:"bucket"` + Key string `json:"key"` +} + +func (awsUploadSettings) isUploadSettings() {} + +type azureUploadSettings struct { + StorageAccount string `json:"storageAccount,omitempty"` + StorageAccessKey string `json:"storageAccessKey,omitempty"` + Container string `json:"container"` +} + +func (azureUploadSettings) isUploadSettings() {} + +type uploadRequest struct { + Provider string `json:"provider"` + ImageName string `json:"image_name"` + Settings uploadSettings `json:"settings"` +} + +type rawUploadRequest struct { + Provider string `json:"provider"` + ImageName string `json:"image_name"` + Settings json.RawMessage `json:"settings"` +} + +func (u *uploadRequest) UnmarshalJSON(data []byte) error { + var rawUploadRequest rawUploadRequest + err := json.Unmarshal(data, &rawUploadRequest) + if err != nil { + return err + } + + var settings uploadSettings + switch rawUploadRequest.Provider { + case "azure": + settings = new(azureUploadSettings) + case "aws": + settings = new(awsUploadSettings) + default: + return errors.New("unexpected provider name") + } + err = json.Unmarshal(rawUploadRequest.Settings, settings) + if err != nil { + return err + } + + u.Provider = rawUploadRequest.Provider + u.ImageName = rawUploadRequest.ImageName + u.Settings = settings + + return err +} + +// Converts a `Target` to a serializable `uploadResponse`. +// +// This ignore the status in `targets`, because that's never set correctly. +// Instead, it sets each target's status to the ImageBuildState equivalent of +// `state`. +// +// This also ignores any sensitive data passed into targets. Access keys may +// be passed as input to composer, but should not be possible to be queried. +func targetsToUploadResponses(targets []*target.Target, state common.ComposeState) []uploadResponse { + var uploads []uploadResponse + for _, t := range targets { + upload := uploadResponse{ + UUID: t.Uuid, + ImageName: t.ImageName, + CreationTime: float64(t.Created.UnixNano()) / 1000000000, + } + + switch state { + case common.CWaiting: + upload.Status = common.IBWaiting + case common.CRunning: + upload.Status = common.IBRunning + case common.CFinished: + upload.Status = common.IBFinished + case common.CFailed: + upload.Status = common.IBFailed + } + + switch options := t.Options.(type) { + case *target.AWSTargetOptions: + upload.ProviderName = "aws" + upload.Settings = &awsUploadSettings{ + Region: options.Region, + Bucket: options.Bucket, + Key: options.Key, + // AccessKeyID and SecretAccessKey are intentionally not included. + } + uploads = append(uploads, upload) + case *target.AzureTargetOptions: + upload.ProviderName = "azure" + upload.Settings = &azureUploadSettings{ + Container: options.Container, + // StorageAccount and StorageAccessKey are intentionally not included. + } + uploads = append(uploads, upload) + } + } + + return uploads +} + +func uploadRequestToTarget(u uploadRequest, imageType distro.ImageType) *target.Target { + var t target.Target + + t.Uuid = uuid.New() + t.ImageName = u.ImageName + t.Status = common.IBWaiting + t.Created = time.Now() + + switch options := u.Settings.(type) { + case *awsUploadSettings: + t.Name = "org.osbuild.aws" + t.Options = &target.AWSTargetOptions{ + Filename: imageType.Filename(), + Region: options.Region, + AccessKeyID: options.AccessKeyID, + SecretAccessKey: options.SecretAccessKey, + Bucket: options.Bucket, + Key: options.Key, + } + case *azureUploadSettings: + t.Name = "org.osbuild.azure" + t.Options = &target.AzureTargetOptions{ + Filename: imageType.Filename(), + StorageAccount: options.StorageAccount, + StorageAccessKey: options.StorageAccessKey, + Container: options.Container, + } + } + + return &t +} diff --git a/internal/weldr/util.go b/internal/weldr/util.go new file mode 100644 index 0000000..2637235 --- /dev/null +++ b/internal/weldr/util.go @@ -0,0 +1,35 @@ +package weldr + +import ( + "errors" + "net/url" + "strconv" +) + +func parseOffsetAndLimit(query url.Values) (uint, uint, error) { + var offset, limit uint64 = 0, 20 + var err error + + if v := query.Get("offset"); v != "" { + offset, err = strconv.ParseUint(v, 10, 64) + if err != nil { + return 0, 0, errors.New("invalid value for 'offset': " + err.Error()) + } + } + + if v := query.Get("limit"); v != "" { + limit, err = strconv.ParseUint(v, 10, 64) + if err != nil { + return 0, 0, errors.New("invalid value for 'limit': " + err.Error()) + } + } + + return uint(offset), uint(limit), nil +} + +func min(a, b uint) uint { + if a < b { + return a + } + return b +} diff --git a/internal/worker/client.go b/internal/worker/client.go new file mode 100644 index 0000000..b369a98 --- /dev/null +++ b/internal/worker/client.go @@ -0,0 +1,150 @@ +package worker + +import ( + "bytes" + "context" + "crypto/tls" + "encoding/json" + "errors" + "fmt" + "io" + "net" + "net/http" + + "github.com/google/uuid" + + "github.com/osbuild/osbuild-composer/internal/common" + "github.com/osbuild/osbuild-composer/internal/distro" + "github.com/osbuild/osbuild-composer/internal/target" +) + +type Client struct { + client *http.Client + scheme string + hostname string +} + +type Job struct { + Id uuid.UUID + Manifest distro.Manifest + Targets []*target.Target +} + +func NewClient(address string, conf *tls.Config) *Client { + client := &http.Client{ + Transport: &http.Transport{ + TLSClientConfig: conf, + }, + } + + var scheme string + // Use https if the TLS configuration is present, otherwise use http. + if conf != nil { + scheme = "https" + } else { + scheme = "http" + } + + return &Client{client, scheme, address} +} + +func NewClientUnix(path string) *Client { + client := &http.Client{ + Transport: &http.Transport{ + DialContext: func(context context.Context, network, addr string) (net.Conn, error) { + return net.Dial("unix", path) + }, + }, + } + + return &Client{client, "http", "localhost"} +} + +func (c *Client) AddJob() (*Job, error) { + var b bytes.Buffer + err := json.NewEncoder(&b).Encode(addJobRequest{}) + if err != nil { + panic(err) + } + response, err := c.client.Post(c.createURL("/job-queue/v1/jobs"), "application/json", &b) + if err != nil { + return nil, err + } + defer response.Body.Close() + + if response.StatusCode != http.StatusCreated { + var er errorResponse + _ = json.NewDecoder(response.Body).Decode(&er) + return nil, fmt.Errorf("couldn't create job, got %d: %s", response.StatusCode, er.Message) + } + + var jr addJobResponse + err = json.NewDecoder(response.Body).Decode(&jr) + if err != nil { + return nil, err + } + + return &Job{ + jr.Id, + jr.Manifest, + jr.Targets, + }, nil +} + +func (c *Client) JobCanceled(job *Job) bool { + response, err := c.client.Get(c.createURL("/job-queue/v1/jobs/" + job.Id.String())) + if err != nil { + return true + } + defer response.Body.Close() + + if response.StatusCode != http.StatusOK { + return true + } + + var jr jobResponse + err = json.NewDecoder(response.Body).Decode(&jr) + if err != nil { + return true + } + + return jr.Canceled +} + +func (c *Client) UpdateJob(job *Job, status common.ImageBuildState, result *common.ComposeResult) error { + var b bytes.Buffer + err := json.NewEncoder(&b).Encode(&updateJobRequest{status, result}) + if err != nil { + panic(err) + } + urlPath := fmt.Sprintf("/job-queue/v1/jobs/%s", job.Id) + url := c.createURL(urlPath) + req, err := http.NewRequest("PATCH", url, &b) + if err != nil { + return err + } + + req.Header.Set("Content-Type", "application/json") + response, err := c.client.Do(req) + if err != nil { + return err + } + defer response.Body.Close() + + if response.StatusCode != http.StatusOK { + return errors.New("error setting job status") + } + + return nil +} + +func (c *Client) UploadImage(job uuid.UUID, name string, reader io.Reader) error { + url := c.createURL(fmt.Sprintf("/job-queue/v1/jobs/%s/artifacts/%s", job, name)) + _, err := c.client.Post(url, "application/octet-stream", reader) + + return err +} + +func (c *Client) createURL(path string) string { + return c.scheme + "://" + c.hostname + path +} diff --git a/internal/worker/json.go b/internal/worker/json.go new file mode 100644 index 0000000..774d0c8 --- /dev/null +++ b/internal/worker/json.go @@ -0,0 +1,56 @@ +package worker + +import ( + "github.com/google/uuid" + + "github.com/osbuild/osbuild-composer/internal/common" + "github.com/osbuild/osbuild-composer/internal/distro" + "github.com/osbuild/osbuild-composer/internal/target" +) + +// +// JSON-serializable types for the jobqueue +// + +type OSBuildJob struct { + Manifest distro.Manifest `json:"manifest"` + Targets []*target.Target `json:"targets,omitempty"` +} + +type OSBuildJobResult struct { + OSBuildOutput *common.ComposeResult `json:"osbuild_output,omitempty"` +} + +// +// JSON-serializable types for the HTTP API +// + +type statusResponse struct { + Status string `json:"status"` +} + +type errorResponse struct { + Message string `json:"message"` +} + +type addJobRequest struct { +} + +type addJobResponse struct { + Id uuid.UUID `json:"id"` + Manifest distro.Manifest `json:"manifest"` + Targets []*target.Target `json:"targets,omitempty"` +} + +type jobResponse struct { + Id uuid.UUID `json:"id"` + Canceled bool `json:"canceled"` +} + +type updateJobRequest struct { + Status common.ImageBuildState `json:"status"` + Result *common.ComposeResult `json:"result"` +} + +type updateJobResponse struct { +} diff --git a/internal/worker/server.go b/internal/worker/server.go new file mode 100644 index 0000000..38c2294 --- /dev/null +++ b/internal/worker/server.go @@ -0,0 +1,333 @@ +package worker + +import ( + "encoding/json" + "fmt" + "io" + "io/ioutil" + "log" + "net" + "net/http" + "os" + "path" + "time" + + "github.com/google/uuid" + "github.com/julienschmidt/httprouter" + + "github.com/osbuild/osbuild-composer/internal/common" + "github.com/osbuild/osbuild-composer/internal/distro" + "github.com/osbuild/osbuild-composer/internal/jobqueue" + "github.com/osbuild/osbuild-composer/internal/target" +) + +type Server struct { + logger *log.Logger + jobs jobqueue.JobQueue + router *httprouter.Router + artifactsDir string +} + +type JobStatus struct { + State common.ComposeState + Queued time.Time + Started time.Time + Finished time.Time + Canceled bool + Result OSBuildJobResult +} + +func NewServer(logger *log.Logger, jobs jobqueue.JobQueue, artifactsDir string) *Server { + s := &Server{ + logger: logger, + jobs: jobs, + artifactsDir: artifactsDir, + } + + s.router = httprouter.New() + s.router.RedirectTrailingSlash = false + s.router.RedirectFixedPath = false + s.router.MethodNotAllowed = http.HandlerFunc(methodNotAllowedHandler) + s.router.NotFound = http.HandlerFunc(notFoundHandler) + + // Add a basic status handler for checking if osbuild-composer is alive. + s.router.GET("/status", s.statusHandler) + + // Add handlers for managing jobs. + s.router.POST("/job-queue/v1/jobs", s.addJobHandler) + s.router.GET("/job-queue/v1/jobs/:job_id", s.jobHandler) + s.router.PATCH("/job-queue/v1/jobs/:job_id", s.updateJobHandler) + s.router.POST("/job-queue/v1/jobs/:job_id/artifacts/:name", s.addJobImageHandler) + + return s +} + +func (s *Server) Serve(listener net.Listener) error { + server := http.Server{Handler: s} + + err := server.Serve(listener) + if err != nil && err != http.ErrServerClosed { + return err + } + + return nil +} + +func (s *Server) ServeHTTP(writer http.ResponseWriter, request *http.Request) { + if s.logger != nil { + log.Println(request.Method, request.URL.Path) + } + + writer.Header().Set("Content-Type", "application/json; charset=utf-8") + s.router.ServeHTTP(writer, request) +} + +func (s *Server) Enqueue(manifest distro.Manifest, targets []*target.Target) (uuid.UUID, error) { + job := OSBuildJob{ + Manifest: manifest, + Targets: targets, + } + + return s.jobs.Enqueue("osbuild", job, nil) +} + +func (s *Server) JobStatus(id uuid.UUID) (*JobStatus, error) { + var canceled bool + var result OSBuildJobResult + + queued, started, finished, canceled, err := s.jobs.JobStatus(id, &result) + if err != nil { + return nil, err + } + state := common.CWaiting + if canceled { + state = common.CFailed + } else if !finished.IsZero() { + if result.OSBuildOutput != nil && result.OSBuildOutput.Success { + state = common.CFinished + } else { + state = common.CFailed + } + } else if !started.IsZero() { + state = common.CRunning + } + + return &JobStatus{ + State: state, + Queued: queued, + Started: started, + Finished: finished, + Canceled: canceled, + Result: result, + }, nil +} + +func (s *Server) Cancel(id uuid.UUID) error { + return s.jobs.CancelJob(id) +} + +// Provides access to artifacts of a job. Returns an io.Reader for the artifact +// and the artifact's size. +func (s *Server) JobArtifact(id uuid.UUID, name string) (io.Reader, int64, error) { + status, err := s.JobStatus(id) + if err != nil { + return nil, 0, err + } + + if status.Finished.IsZero() { + return nil, 0, fmt.Errorf("Cannot access artifacts before job is finished: %s", id) + } + + p := path.Join(s.artifactsDir, id.String(), name) + f, err := os.Open(p) + if err != nil { + return nil, 0, fmt.Errorf("Error accessing artifact %s for job %s: %v", name, id, err) + } + + info, err := f.Stat() + if err != nil { + return nil, 0, fmt.Errorf("Error getting size of artifact %s for job %s: %v", name, id, err) + } + + return f, info.Size(), nil +} + +// Deletes all artifacts for job `id`. +func (s *Server) DeleteArtifacts(id uuid.UUID) error { + status, err := s.JobStatus(id) + if err != nil { + return err + } + + if status.Finished.IsZero() { + return fmt.Errorf("Cannot delete artifacts before job is finished: %s", id) + } + + return os.RemoveAll(path.Join(s.artifactsDir, id.String())) +} + +// jsonErrorf() is similar to http.Error(), but returns the message in a json +// object with a "message" field. +func jsonErrorf(writer http.ResponseWriter, code int, message string, args ...interface{}) { + writer.WriteHeader(code) + + // ignore error, because we cannot do anything useful with it + _ = json.NewEncoder(writer).Encode(&errorResponse{ + Message: fmt.Sprintf(message, args...), + }) +} + +func methodNotAllowedHandler(writer http.ResponseWriter, request *http.Request) { + jsonErrorf(writer, http.StatusMethodNotAllowed, "method not allowed") +} + +func notFoundHandler(writer http.ResponseWriter, request *http.Request) { + jsonErrorf(writer, http.StatusNotFound, "not found") +} + +func (s *Server) statusHandler(writer http.ResponseWriter, request *http.Request, _ httprouter.Params) { + writer.WriteHeader(http.StatusOK) + + // Send back a status message. + _ = json.NewEncoder(writer).Encode(&statusResponse{ + Status: "OK", + }) +} + +func (s *Server) jobHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + id, err := uuid.Parse(params.ByName("job_id")) + if err != nil { + jsonErrorf(writer, http.StatusBadRequest, "cannot parse compose id: %v", err) + return + } + + status, err := s.JobStatus(id) + if err != nil { + switch err { + case jobqueue.ErrNotExist: + jsonErrorf(writer, http.StatusNotFound, "job does not exist: %s", id) + default: + jsonErrorf(writer, http.StatusInternalServerError, "%v", err) + } + return + } + + _ = json.NewEncoder(writer).Encode(jobResponse{ + Id: id, + Canceled: status.Canceled, + }) +} + +func (s *Server) addJobHandler(writer http.ResponseWriter, request *http.Request, _ httprouter.Params) { + contentType := request.Header["Content-Type"] + if len(contentType) != 1 || contentType[0] != "application/json" { + jsonErrorf(writer, http.StatusUnsupportedMediaType, "request must contain application/json data") + return + } + + var body addJobRequest + err := json.NewDecoder(request.Body).Decode(&body) + if err != nil { + jsonErrorf(writer, http.StatusBadRequest, "%v", err) + return + } + + var job OSBuildJob + id, err := s.jobs.Dequeue(request.Context(), []string{"osbuild"}, &job) + if err != nil { + jsonErrorf(writer, http.StatusInternalServerError, "%v", err) + return + } + + writer.WriteHeader(http.StatusCreated) + // FIXME: handle or comment this possible error + _ = json.NewEncoder(writer).Encode(addJobResponse{ + Id: id, + Manifest: job.Manifest, + Targets: job.Targets, + }) +} + +func (s *Server) updateJobHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + contentType := request.Header["Content-Type"] + if len(contentType) != 1 || contentType[0] != "application/json" { + jsonErrorf(writer, http.StatusUnsupportedMediaType, "request must contain application/json data") + return + } + + id, err := uuid.Parse(params.ByName("job_id")) + if err != nil { + jsonErrorf(writer, http.StatusBadRequest, "cannot parse compose id: %v", err) + return + } + + var body updateJobRequest + err = json.NewDecoder(request.Body).Decode(&body) + if err != nil { + jsonErrorf(writer, http.StatusBadRequest, "cannot parse request body: %v", err) + return + } + + // The jobqueue doesn't support setting the status before a job is + // finished. This branch should never be hit, because the worker + // doesn't attempt this. Change the API to remove this awkwardness. + if body.Status != common.IBFinished && body.Status != common.IBFailed { + jsonErrorf(writer, http.StatusBadRequest, "setting status of a job to waiting or running is not supported") + return + } + + err = s.jobs.FinishJob(id, OSBuildJobResult{OSBuildOutput: body.Result}) + if err != nil { + switch err { + case jobqueue.ErrNotExist: + jsonErrorf(writer, http.StatusNotFound, "job does not exist: %s", id) + case jobqueue.ErrNotRunning: + jsonErrorf(writer, http.StatusBadRequest, "job is not running: %s", id) + default: + jsonErrorf(writer, http.StatusInternalServerError, "%v", err) + } + return + } + + _ = json.NewEncoder(writer).Encode(updateJobResponse{}) +} + +func (s *Server) addJobImageHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + id, err := uuid.Parse(params.ByName("job_id")) + if err != nil { + jsonErrorf(writer, http.StatusBadRequest, "cannot parse compose id: %v", err) + return + } + + name := params.ByName("name") + if name == "" { + jsonErrorf(writer, http.StatusBadRequest, "invalid artifact name") + return + } + + if s.artifactsDir == "" { + _, err := io.Copy(ioutil.Discard, request.Body) + if err != nil { + jsonErrorf(writer, http.StatusInternalServerError, "error discarding artifact: %v", err) + } + return + } + + err = os.Mkdir(path.Join(s.artifactsDir, id.String()), 0700) + if err != nil { + jsonErrorf(writer, http.StatusInternalServerError, "cannot create artifact directory: %v", err) + return + } + + f, err := os.Create(path.Join(s.artifactsDir, id.String(), name)) + if err != nil { + jsonErrorf(writer, http.StatusInternalServerError, "cannot create artifact file: %v", err) + return + } + + _, err = io.Copy(f, request.Body) + if err != nil { + jsonErrorf(writer, http.StatusInternalServerError, "error writing artifact file: %v", err) + return + } +} diff --git a/internal/worker/server_test.go b/internal/worker/server_test.go new file mode 100644 index 0000000..baa1db5 --- /dev/null +++ b/internal/worker/server_test.go @@ -0,0 +1,171 @@ +package worker_test + +import ( + "fmt" + "net/http" + "testing" + + "github.com/google/uuid" + "github.com/stretchr/testify/require" + + "github.com/osbuild/osbuild-composer/internal/distro" + "github.com/osbuild/osbuild-composer/internal/distro/fedoratest" + "github.com/osbuild/osbuild-composer/internal/jobqueue/testjobqueue" + "github.com/osbuild/osbuild-composer/internal/test" + "github.com/osbuild/osbuild-composer/internal/worker" +) + +// Ensure that the status request returns OK. +func TestStatus(t *testing.T) { + server := worker.NewServer(nil, testjobqueue.New(), "") + test.TestRoute(t, server, false, "GET", "/status", ``, http.StatusOK, `{"status":"OK"}`, "message") +} + +func TestErrors(t *testing.T) { + var cases = []struct { + Method string + Path string + Body string + ExpectedStatus int + }{ + // Bogus path + {"GET", "/foo", ``, http.StatusNotFound}, + // Create job with invalid body + {"POST", "/job-queue/v1/jobs", ``, http.StatusBadRequest}, + // Wrong method + {"GET", "/job-queue/v1/jobs", ``, http.StatusMethodNotAllowed}, + // Update job with invalid ID + {"PATCH", "/job-queue/v1/jobs/foo", `{"status":"FINISHED"}`, http.StatusBadRequest}, + // Update job that does not exist, with invalid body + {"PATCH", "/job-queue/v1/jobs/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", ``, http.StatusBadRequest}, + // Update job that does not exist + {"PATCH", "/job-queue/v1/jobs/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", `{"status":"FINISHED"}`, http.StatusNotFound}, + } + + for _, c := range cases { + server := worker.NewServer(nil, testjobqueue.New(), "") + test.TestRoute(t, server, false, c.Method, c.Path, c.Body, c.ExpectedStatus, "{}", "message") + } +} + +func TestCreate(t *testing.T) { + distroStruct := fedoratest.New() + arch, err := distroStruct.GetArch("x86_64") + if err != nil { + t.Fatalf("error getting arch from distro") + } + imageType, err := arch.GetImageType("qcow2") + if err != nil { + t.Fatalf("error getting image type from arch") + } + manifest, err := imageType.Manifest(nil, distro.ImageOptions{Size: imageType.Size(0)}, nil, nil, nil) + if err != nil { + t.Fatalf("error creating osbuild manifest") + } + server := worker.NewServer(nil, testjobqueue.New(), "") + + id, err := server.Enqueue(manifest, nil) + require.NoError(t, err) + + test.TestRoute(t, server, false, "POST", "/job-queue/v1/jobs", `{}`, http.StatusCreated, + `{"id":"`+id.String()+`","manifest":{"sources":{},"pipeline":{}}}`, "created") + + test.TestRoute(t, server, false, "GET", fmt.Sprintf("/job-queue/v1/jobs/%s", id), `{}`, http.StatusOK, + `{"id":"`+id.String()+`","canceled":false}`) +} + +func TestCancel(t *testing.T) { + distroStruct := fedoratest.New() + arch, err := distroStruct.GetArch("x86_64") + if err != nil { + t.Fatalf("error getting arch from distro") + } + imageType, err := arch.GetImageType("qcow2") + if err != nil { + t.Fatalf("error getting image type from arch") + } + manifest, err := imageType.Manifest(nil, distro.ImageOptions{Size: imageType.Size(0)}, nil, nil, nil) + if err != nil { + t.Fatalf("error creating osbuild manifest") + } + server := worker.NewServer(nil, testjobqueue.New(), "") + + id, err := server.Enqueue(manifest, nil) + require.NoError(t, err) + + test.TestRoute(t, server, false, "POST", "/job-queue/v1/jobs", `{}`, http.StatusCreated, + `{"id":"`+id.String()+`","manifest":{"sources":{},"pipeline":{}}}`, "created") + + err = server.Cancel(id) + require.NoError(t, err) + + test.TestRoute(t, server, false, "GET", fmt.Sprintf("/job-queue/v1/jobs/%s", id), `{}`, http.StatusOK, + `{"id":"`+id.String()+`","canceled":true}`) +} + +func testUpdateTransition(t *testing.T, from, to string, expectedStatus int) { + distroStruct := fedoratest.New() + arch, err := distroStruct.GetArch("x86_64") + if err != nil { + t.Fatalf("error getting arch from distro") + } + imageType, err := arch.GetImageType("qcow2") + if err != nil { + t.Fatalf("error getting image type from arch") + } + server := worker.NewServer(nil, testjobqueue.New(), "") + + id := uuid.Nil + if from != "VOID" { + manifest, err := imageType.Manifest(nil, distro.ImageOptions{Size: imageType.Size(0)}, nil, nil, nil) + if err != nil { + t.Fatalf("error creating osbuild manifest") + } + + id, err = server.Enqueue(manifest, nil) + require.NoError(t, err) + + if from != "WAITING" { + test.SendHTTP(server, false, "POST", "/job-queue/v1/jobs", `{}`) + if from != "RUNNING" { + test.SendHTTP(server, false, "PATCH", "/job-queue/v1/jobs/"+id.String(), `{"status":"`+from+`"}`) + } + } + } + + test.TestRoute(t, server, false, "PATCH", "/job-queue/v1/jobs/"+id.String(), `{"status":"`+to+`"}`, expectedStatus, "{}", "message") +} + +func TestUpdate(t *testing.T) { + var cases = []struct { + From string + To string + ExpectedStatus int + }{ + {"VOID", "WAITING", http.StatusBadRequest}, + {"VOID", "RUNNING", http.StatusBadRequest}, + {"VOID", "FINISHED", http.StatusNotFound}, + {"VOID", "FAILED", http.StatusNotFound}, + {"WAITING", "WAITING", http.StatusBadRequest}, + {"WAITING", "RUNNING", http.StatusBadRequest}, + {"WAITING", "FINISHED", http.StatusBadRequest}, + {"WAITING", "FAILED", http.StatusBadRequest}, + {"RUNNING", "WAITING", http.StatusBadRequest}, + {"RUNNING", "RUNNING", http.StatusBadRequest}, + {"RUNNING", "FINISHED", http.StatusOK}, + {"RUNNING", "FAILED", http.StatusOK}, + {"FINISHED", "WAITING", http.StatusBadRequest}, + {"FINISHED", "RUNNING", http.StatusBadRequest}, + {"FINISHED", "FINISHED", http.StatusBadRequest}, + {"FINISHED", "FAILED", http.StatusBadRequest}, + {"FAILED", "WAITING", http.StatusBadRequest}, + {"FAILED", "RUNNING", http.StatusBadRequest}, + {"FAILED", "FINISHED", http.StatusBadRequest}, + {"FAILED", "FAILED", http.StatusBadRequest}, + } + + for _, c := range cases { + t.Log(c) + testUpdateTransition(t, c.From, c.To, c.ExpectedStatus) + } +} diff --git a/osbuild-composer.spec b/osbuild-composer.spec new file mode 100644 index 0000000..690159a --- /dev/null +++ b/osbuild-composer.spec @@ -0,0 +1,242 @@ +# Do not build with tests by default +# Pass --with tests to rpmbuild to override +%bcond_with tests + +%global goipath github.com/osbuild/osbuild-composer + +Version: 20 + +%gometa + +%global common_description %{expand: +An image building service based on osbuild +It is inspired by lorax-composer and exposes the same API. +As such, it is a drop-in replacement. +} + +Name: osbuild-composer +Release: 1%{?dist} +Summary: An image building service based on osbuild + +# osbuild-composer doesn't have support for building i686 images +# and also RHEL and Fedora has now only limited support for this arch. +ExcludeArch: i686 + +# Upstream license specification: Apache-2.0 +License: ASL 2.0 +URL: %{gourl} +Source0: %{gosource} + + +BuildRequires: %{?go_compiler:compiler(go-compiler)}%{!?go_compiler:golang} +BuildRequires: systemd +%if 0%{?fedora} +BuildRequires: systemd-rpm-macros +BuildRequires: git +BuildRequires: golang(github.com/aws/aws-sdk-go) +BuildRequires: golang(github.com/Azure/azure-sdk-for-go) +BuildRequires: golang(github.com/Azure/azure-storage-blob-go/azblob) +BuildRequires: golang(github.com/BurntSushi/toml) +BuildRequires: golang(github.com/coreos/go-semver/semver) +BuildRequires: golang(github.com/coreos/go-systemd/activation) +BuildRequires: golang(github.com/google/uuid) +BuildRequires: golang(github.com/julienschmidt/httprouter) +BuildRequires: golang(github.com/gobwas/glob) +BuildRequires: golang(github.com/google/go-cmp/cmp) +BuildRequires: golang(github.com/gophercloud/gophercloud) +BuildRequires: golang(github.com/stretchr/testify/assert) +BuildRequires: golang(github.com/vmware/govmomi) +%endif + +Requires: %{name}-worker = %{version}-%{release} +Requires: systemd +Requires: osbuild >= 18 +Requires: osbuild-ostree >= 18 +Requires: qemu-img + +Provides: weldr + +%if 0%{?rhel} +Obsoletes: lorax-composer <= 29 +Conflicts: lorax-composer +%endif + +# remove in F34 +Obsoletes: golang-github-osbuild-composer < %{version}-%{release} +Provides: golang-github-osbuild-composer = %{version}-%{release} + +%description +%{common_description} + +%prep +%if 0%{?rhel} +%forgeautosetup -p1 +%else +%goprep +%endif + +%build +%if 0%{?rhel} +GO_BUILD_PATH=$PWD/_build +install -m 0755 -vd $(dirname $GO_BUILD_PATH/src/%{goipath}) +ln -fs $PWD $GO_BUILD_PATH/src/%{goipath} +cd $GO_BUILD_PATH/src/%{goipath} +install -m 0755 -vd _bin +export PATH=$PWD/_bin${PATH:+:$PATH} +export GOPATH=$GO_BUILD_PATH:%{gopath} +export GOFLAGS=-mod=vendor +%endif + +%gobuild -o _bin/osbuild-composer %{goipath}/cmd/osbuild-composer +%gobuild -o _bin/osbuild-worker %{goipath}/cmd/osbuild-worker + + +%if %{with tests} || 0%{?rhel} + +# Build test binaries with `go test -c`, so that they can take advantage of +# golang's testing package. The golang rpm macros don't support building them +# directly. Thus, do it manually, taking care to also include a build id. +# +# On Fedora, also turn off go modules and set the path to the one into which +# the golang-* packages install source code. +%if 0%{?fedora} +export GO111MODULE=off +export GOPATH=%{gobuilddir}:%{gopath} +%endif + +TEST_LDFLAGS="${LDFLAGS:-} -B 0x$(od -N 20 -An -tx1 -w100 /dev/urandom | tr -d ' ')" + +go test -c -tags=integration -ldflags="${TEST_LDFLAGS}" -o _bin/osbuild-tests %{goipath}/cmd/osbuild-tests +go test -c -tags=integration -ldflags="${TEST_LDFLAGS}" -o _bin/osbuild-dnf-json-tests %{goipath}/cmd/osbuild-dnf-json-tests +go test -c -tags=integration -ldflags="${TEST_LDFLAGS}" -o _bin/osbuild-weldr-tests %{goipath}/internal/client/ +go test -c -tags=integration -ldflags="${TEST_LDFLAGS}" -o _bin/osbuild-image-tests %{goipath}/cmd/osbuild-image-tests + +%endif + +%install +install -m 0755 -vd %{buildroot}%{_libexecdir}/osbuild-composer +install -m 0755 -vp _bin/osbuild-composer %{buildroot}%{_libexecdir}/osbuild-composer/ +install -m 0755 -vp _bin/osbuild-worker %{buildroot}%{_libexecdir}/osbuild-composer/ +install -m 0755 -vp dnf-json %{buildroot}%{_libexecdir}/osbuild-composer/ + +install -m 0755 -vd %{buildroot}%{_datadir}/osbuild-composer/repositories +install -m 0644 -vp repositories/* %{buildroot}%{_datadir}/osbuild-composer/repositories/ + +install -m 0755 -vd %{buildroot}%{_unitdir} +install -m 0644 -vp distribution/*.{service,socket} %{buildroot}%{_unitdir}/ + +install -m 0755 -vd %{buildroot}%{_sysusersdir} +install -m 0644 -vp distribution/osbuild-composer.conf %{buildroot}%{_sysusersdir}/ + +install -m 0755 -vd %{buildroot}%{_localstatedir}/cache/osbuild-composer/dnf-cache + +%if %{with tests} || 0%{?rhel} + +install -m 0755 -vd %{buildroot}%{_libexecdir}/tests/osbuild-composer +install -m 0755 -vp _bin/osbuild-tests %{buildroot}%{_libexecdir}/tests/osbuild-composer/ +install -m 0755 -vp _bin/osbuild-weldr-tests %{buildroot}%{_libexecdir}/tests/osbuild-composer/ +install -m 0755 -vp _bin/osbuild-dnf-json-tests %{buildroot}%{_libexecdir}/tests/osbuild-composer/ +install -m 0755 -vp _bin/osbuild-image-tests %{buildroot}%{_libexecdir}/tests/osbuild-composer/ +install -m 0755 -vp tools/image-info %{buildroot}%{_libexecdir}/osbuild-composer/ + +install -m 0755 -vd %{buildroot}%{_datadir}/tests/osbuild-composer +install -m 0644 -vp test/azure-deployment-template.json %{buildroot}%{_datadir}/tests/osbuild-composer/ + +install -m 0755 -vd %{buildroot}%{_datadir}/tests/osbuild-composer/cases +install -m 0644 -vp test/cases/* %{buildroot}%{_datadir}/tests/osbuild-composer/cases/ +install -m 0755 -vd %{buildroot}%{_datadir}/tests/osbuild-composer/keyring +install -m 0600 -vp test/keyring/* %{buildroot}%{_datadir}/tests/osbuild-composer/keyring/ + +install -m 0755 -vd %{buildroot}%{_datadir}/tests/osbuild-composer/cloud-init +install -m 0644 -vp test/cloud-init/* %{buildroot}%{_datadir}/tests/osbuild-composer/cloud-init/ + +%endif + +%check +%if 0%{?rhel} +export GOFLAGS=-mod=vendor +export GOPATH=$PWD/_build:%{gopath} +%gotest ./... +%else +%gocheck +%endif + +%post +%systemd_post osbuild-composer.service osbuild-composer.socket osbuild-remote-worker.socket + +%preun +%systemd_preun osbuild-composer.service osbuild-composer.socket osbuild-remote-worker.socket + +%postun +%systemd_postun_with_restart osbuild-composer.service osbuild-composer.socket osbuild-remote-worker.socket + +%files +%license LICENSE +%doc README.md +%{_libexecdir}/osbuild-composer/osbuild-composer +%{_libexecdir}/osbuild-composer/dnf-json +%{_datadir}/osbuild-composer/ +%{_unitdir}/osbuild-composer.service +%{_unitdir}/osbuild-composer.socket +%{_unitdir}/osbuild-remote-worker.socket +%{_sysusersdir}/osbuild-composer.conf + +%package worker +Summary: The worker for osbuild-composer +Requires: systemd +Requires: osbuild + +# remove in F34 +Obsoletes: golang-github-osbuild-composer-worker < %{version}-%{release} +Provides: golang-github-osbuild-composer-worker = %{version}-%{release} + +%description worker +The worker for osbuild-composer + +%files worker +%{_libexecdir}/osbuild-composer/osbuild-worker +%{_unitdir}/osbuild-worker@.service +%{_unitdir}/osbuild-remote-worker@.service + +%post worker +%systemd_post osbuild-worker@.service osbuild-remote-worker@.service + +%preun worker +# systemd_preun uses systemctl disable --now which doesn't work well with template services. +# See https://github.com/systemd/systemd/issues/15620 +# The following lines mimicks its behaviour by running two commands: + +# disable and stop all the worker services +systemctl --no-reload disable osbuild-worker@.service osbuild-remote-worker@.service +systemctl stop "osbuild-worker@*.service" "osbuild-remote-worker@*.service" + +%postun worker +# restart all the worker services +%systemd_postun_with_restart "osbuild-worker@*.service" "osbuild-remote-worker@*.service" + +%if %{with tests} || 0%{?rhel} + +%package tests +Summary: Integration tests +Requires: %{name} = %{version}-%{release} +Requires: composer-cli +Requires: createrepo_c +Requires: genisoimage +Requires: qemu-kvm-core +Requires: systemd-container +%ifarch %{arm} +Requires: edk2-aarch64 +%endif + +%description tests +Integration tests to be run on a pristine-dedicated system to test the osbuild-composer package. + +%files tests +%{_libexecdir}/tests/osbuild-composer/ +%{_datadir}/tests/osbuild-composer/ +%{_libexecdir}/osbuild-composer/image-info + +%endif + +%changelog +# the changelog is distribution-specific, therefore it doesn't make sense to have it upstream diff --git a/repositories/fedora-31.json b/repositories/fedora-31.json new file mode 100644 index 0000000..75b89ed --- /dev/null +++ b/repositories/fedora-31.json @@ -0,0 +1,59 @@ + +{ + "x86_64": [ + { + "name": "fedora", + "metalink": "https://mirrors.fedoraproject.org/metalink?repo=fedora-31&arch=x86_64", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + }, + { + "name": "updates", + "metalink": "https://mirrors.fedoraproject.org/metalink?repo=updates-released-f31&arch=x86_64", + "metadata_expire": "6h", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + }, + { + "name": "fedora-modular", + "metalink": "https://mirrors.fedoraproject.org/metalink?repo=fedora-modular-31&arch=x86_64", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + }, + { + "name": "updates-modular", + "metalink": "https://mirrors.fedoraproject.org/metalink?repo=updates-released-modular-f31&arch=x86_64", + "metadata_expire": "6h", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ], + "aarch64": [ + { + "name": "fedora", + "metalink": "https://mirrors.fedoraproject.org/metalink?repo=fedora-31&arch=aarch64", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + }, + { + "name": "updates", + "metalink": "https://mirrors.fedoraproject.org/metalink?repo=updates-released-f31&arch=aarch64", + "metadata_expire": "6h", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + }, + { + "name": "fedora-modular", + "metalink": "https://mirrors.fedoraproject.org/metalink?repo=fedora-modular-31&arch=aarch64", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + }, + { + "name": "updates-modular", + "metalink": "https://mirrors.fedoraproject.org/metalink?repo=updates-released-modular-f31&arch=aarch64", + "metadata_expire": "6h", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ] +} diff --git a/repositories/fedora-32.json b/repositories/fedora-32.json new file mode 100644 index 0000000..41594c5 --- /dev/null +++ b/repositories/fedora-32.json @@ -0,0 +1,58 @@ +{ + "x86_64": [ + { + "name": "fedora", + "metalink": "https://mirrors.fedoraproject.org/metalink?repo=fedora-32&arch=x86_64", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + }, + { + "name": "updates", + "metalink": "https://mirrors.fedoraproject.org/metalink?repo=updates-released-f32&arch=x86_64", + "metadata_expire": "6h", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + }, + { + "name": "fedora-modular", + "metalink": "https://mirrors.fedoraproject.org/metalink?repo=fedora-modular-32&arch=x86_64", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + }, + { + "name": "updates-modular", + "metalink": "https://mirrors.fedoraproject.org/metalink?repo=updates-released-modular-f32&arch=x86_64", + "metadata_expire": "6h", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ], + "aarch64": [ + { + "name": "fedora", + "metalink": "https://mirrors.fedoraproject.org/metalink?repo=fedora-32&arch=aarch64", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + }, + { + "name": "updates", + "metalink": "https://mirrors.fedoraproject.org/metalink?repo=updates-released-f32&arch=aarch64", + "metadata_expire": "6h", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + }, + { + "name": "fedora-modular", + "metalink": "https://mirrors.fedoraproject.org/metalink?repo=fedora-modular-32&arch=aarch64", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + }, + { + "name": "updates-modular", + "metalink": "https://mirrors.fedoraproject.org/metalink?repo=updates-released-modular-f32&arch=aarch64", + "metadata_expire": "6h", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ] +} diff --git a/repositories/rhel-8-beta.json b/repositories/rhel-8-beta.json new file mode 100644 index 0000000..522fe4a --- /dev/null +++ b/repositories/rhel-8-beta.json @@ -0,0 +1,66 @@ +{ + "aarch64": [ + { + "name": "baseos", + "baseurl": "https://cdn.redhat.com/content/beta/rhel8/8/aarch64/baseos/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "rhsm": true, + "check_gpg": true + }, + { + "name": "appstream", + "baseurl": "https://cdn.redhat.com/content/beta/rhel8/8/aarch64/appstream/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "rhsm": true, + "check_gpg": true + } + ], + "ppc64le": [ + { + "name": "baseos", + "baseurl": "https://cdn.redhat.com/content/beta/rhel8/8/ppc64le/baseos/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "rhsm": true, + "check_gpg": true + }, + { + "name": "appstream", + "baseurl": "https://cdn.redhat.com/content/beta/rhel8/8/ppc64le/appstream/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "rhsm": true, + "check_gpg": true + } + ], + "s390x": [ + { + "name": "baseos", + "baseurl": "https://cdn.redhat.com/content/beta/rhel8/8/s390x/baseos/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "rhsm": true, + "check_gpg": true + }, + { + "name": "appstream", + "baseurl": "https://cdn.redhat.com/content/beta/rhel8/8/s390x/appstream/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "rhsm": true, + "check_gpg": true + } + ], + "x86_64": [ + { + "name": "baseos", + "baseurl": "https://cdn.redhat.com/content/beta/rhel8/8/x86_64/baseos/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "rhsm": true, + "check_gpg": true + }, + { + "name": "appstream", + "baseurl": "https://cdn.redhat.com/content/beta/rhel8/8/x86_64/appstream/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "rhsm": true, + "check_gpg": true + } + ] +} diff --git a/repositories/rhel-8.json b/repositories/rhel-8.json new file mode 100644 index 0000000..cb2fcd5 --- /dev/null +++ b/repositories/rhel-8.json @@ -0,0 +1,66 @@ +{ + "aarch64": [ + { + "name": "baseos", + "baseurl": "https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "rhsm": true, + "check_gpg": true + }, + { + "name": "appstream", + "baseurl": "https://cdn.redhat.com/content/dist/rhel8/8/aarch64/appstream/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "rhsm": true, + "check_gpg": true + } + ], + "ppc64le": [ + { + "name": "baseos", + "baseurl": "https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "rhsm": true, + "check_gpg": true + }, + { + "name": "appstream", + "baseurl": "https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/appstream/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "rhsm": true, + "check_gpg": true + } + ], + "s390x": [ + { + "name": "baseos", + "baseurl": "https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "rhsm": true, + "check_gpg": true + }, + { + "name": "appstream", + "baseurl": "https://cdn.redhat.com/content/dist/rhel8/8/s390x/appstream/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "rhsm": true, + "check_gpg": true + } + ], + "x86_64": [ + { + "name": "baseos", + "baseurl": "https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "rhsm": true, + "check_gpg": true + }, + { + "name": "appstream", + "baseurl": "https://cdn.redhat.com/content/dist/rhel8/8/x86_64/appstream/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "rhsm": true, + "check_gpg": true + } + ] +} diff --git a/schutzbot/Jenkinsfile b/schutzbot/Jenkinsfile new file mode 100644 index 0000000..d9d20e3 --- /dev/null +++ b/schutzbot/Jenkinsfile @@ -0,0 +1,422 @@ +pipeline { + agent none + + environment { + AWS_REGION = "us-east-2" + AWS_BUCKET = "imagebuilder-jenkins-testing-use2" + } + + options { + timestamps() + ansiColor('xterm') + // Cancel the pipeline if it runs for more than three hours. + timeout( + time: 3, + unit: "HOURS" + ) + } + stages { + + stage("Prepare 🤔") { + agent { label "schutzbot" } + options { + // Don't checkout the git repository here. It just clogs + // up the Jenkins disk space and does nothing for us. + skipDefaultCheckout() + } + steps { + sh ( + label: "Get environment variables", + script: "env | sort" + ) + } + } + + stage("Mock build 👷🏻") { + // Halt the pipeline immediately if a single mock build fails. + // A failure to build an RPM is serious and must be + // investigated. + failFast true + + parallel { + + stage('F31') { + agent { label "f31cloudbase && x86_64" } + environment { + AWS_CREDS = credentials('aws-credentials-osbuildci') + } + steps { + sh "schutzbot/ci_details.sh" + retry(3) { + sh "schutzbot/mockbuild.sh" + } + stash ( + includes: 'osbuild-mock.repo', + name: 'fedora31' + ) + } + } + stage('F32') { + agent { label "f32cloudbase && x86_64" } + environment { + AWS_CREDS = credentials('aws-credentials-osbuildci') + } + steps { + sh "schutzbot/ci_details.sh" + retry(3) { + sh "schutzbot/mockbuild.sh" + } + stash ( + includes: 'osbuild-mock.repo', + name: 'fedora32' + ) + } + } + stage('EL8') { + agent { label "rhel8cloudbase && x86_64" } + environment { + AWS_CREDS = credentials('aws-credentials-osbuildci') + RHN_REGISTRATION_SCRIPT = credentials('rhn-register-script-production') + } + steps { + sh "schutzbot/ci_details.sh" + retry(3) { + sh "schutzbot/mockbuild.sh" + } + stash ( + includes: 'osbuild-mock.repo', + name: 'rhel8cdn' + ) + } + } + stage('EL8.3') { + agent { label "rhel83cloudbase && x86_64" } + environment { + AWS_CREDS = credentials('aws-credentials-osbuildci') + RHN_REGISTRATION_SCRIPT = credentials('rhn-register-script-production-beta') + } + steps { + sh "schutzbot/ci_details.sh" + retry(3) { + sh "schutzbot/mockbuild.sh" + } + stash ( + includes: 'osbuild-mock.repo', + name: 'rhel83' + ) + } + } + } + } + + stage("Testing 🍌") { + parallel { + + stage('F31 Base') { + agent { label "f31cloudbase && x86_64" } + environment { TEST_TYPE = "base" } + steps { + unstash 'fedora31' + run_tests('base') + } + post { + always { + preserve_logs('fedora31-base') + } + } + } + stage('F31 Image') { + agent { label "f31cloudbase && psi && x86_64" } + environment { + TEST_TYPE = "image" + AWS_CREDS = credentials('aws-credentials-osbuildci') + AZURE_CREDS = credentials('azure') + OPENSTACK_CREDS = credentials("psi-openstack-creds") + VCENTER_CREDS = credentials('vmware-vcenter-credentials') + } + steps { + unstash 'fedora31' + run_tests('image') + } + post { + always { + preserve_logs('fedora31-image') + } + } + } + stage('F31 Integration') { + agent { label "f31cloudbase && x86_64" } + environment { + TEST_TYPE = "integration" + AWS_CREDS = credentials('aws-credentials-osbuildci') + } + steps { + unstash 'fedora31' + run_tests('integration') + } + post { + always { + preserve_logs('fedora31-integration') + } + } + } + + stage('F32 Base') { + agent { label "f32cloudbase && x86_64" } + environment { TEST_TYPE = "base" } + steps { + unstash 'fedora32' + run_tests('base') + } + post { + always { + preserve_logs('fedora32-base') + } + } + } + stage('F32 Image') { + agent { label "f32cloudbase && psi && x86_64" } + environment { + TEST_TYPE = "image" + AWS_CREDS = credentials('aws-credentials-osbuildci') + AZURE_CREDS = credentials('azure') + OPENSTACK_CREDS = credentials("psi-openstack-creds") + VCENTER_CREDS = credentials('vmware-vcenter-credentials') + } + steps { + unstash 'fedora32' + run_tests('image') + } + post { + always { + preserve_logs('fedora32-image') + } + } + } + stage('F32 Integration') { + agent { label "f32cloudbase && x86_64" } + environment { + TEST_TYPE = "integration" + AWS_CREDS = credentials('aws-credentials-osbuildci') + } + steps { + unstash 'fedora32' + run_tests('integration') + } + post { + always { + preserve_logs('fedora32-integration') + } + } + } + + stage('EL8 Base') { + agent { label "rhel8cloudbase && x86_64" } + environment { + TEST_TYPE = "base" + RHN_REGISTRATION_SCRIPT = credentials('rhn-register-script-production') + } + steps { + unstash 'rhel8cdn' + run_tests('base') + } + post { + always { + preserve_logs('rhel8-base') + } + } + } + stage('EL8 Image') { + agent { label "rhel8cloudbase && psi && x86_64" } + environment { + TEST_TYPE = "image" + AWS_CREDS = credentials('aws-credentials-osbuildci') + AZURE_CREDS = credentials('azure') + OPENSTACK_CREDS = credentials("psi-openstack-creds") + RHN_REGISTRATION_SCRIPT = credentials('rhn-register-script-production') + VCENTER_CREDS = credentials('vmware-vcenter-credentials') + } + steps { + unstash 'rhel8cdn' + run_tests('image') + } + post { + always { + preserve_logs('rhel8-image') + } + } + } + stage('EL8 Integration') { + agent { label "rhel8cloudbase && x86_64" } + environment { + TEST_TYPE = "integration" + AWS_CREDS = credentials('aws-credentials-osbuildci') + RHN_REGISTRATION_SCRIPT = credentials('rhn-register-script-production') + } + steps { + unstash 'rhel8cdn' + run_tests('integration') + } + post { + always { + preserve_logs('rhel8-integration') + } + } + } + + stage('EL8.3 Base') { + agent { label "rhel83cloudbase && x86_64" } + environment { + TEST_TYPE = "base" + RHN_REGISTRATION_SCRIPT = credentials('rhn-register-script-production-beta') + } + steps { + unstash 'rhel83' + run_tests('base') + } + post { + always { + preserve_logs('rhel83-base') + } + } + } + stage('EL8.3 Image') { + agent { label "rhel83cloudbase && psi && x86_64" } + environment { + TEST_TYPE = "image" + AWS_CREDS = credentials('aws-credentials-osbuildci') + AZURE_CREDS = credentials('azure') + OPENSTACK_CREDS = credentials("psi-openstack-creds") + RHN_REGISTRATION_SCRIPT = credentials('rhn-register-script-production-beta') + VCENTER_CREDS = credentials('vmware-vcenter-credentials') + } + steps { + unstash 'rhel83' + run_tests('image') + } + post { + always { + preserve_logs('rhel83-image') + } + } + } + stage('EL8.3 Integration') { + agent { label "rhel83cloudbase && x86_64" } + environment { + TEST_TYPE = "integration" + AWS_CREDS = credentials('aws-credentials-osbuildci') + RHN_REGISTRATION_SCRIPT = credentials('rhn-register-script-production-beta') + } + steps { + unstash 'rhel83' + run_tests('integration') + } + post { + always { + preserve_logs('rhel83-integration') + } + } + } + } + } + } + + post { + success { + node('schutzbot') { + script { + if (env.BRANCH_NAME == 'master') { + telegramSend "💚 CI passed for osbuild-composer master branch ${env.BUILD_URL}" + } + } + } + } + unsuccessful { + node('schutzbot') { + script { + if (env.BRANCH_NAME == 'master') { + telegramSend "💣 CI failed for osbuild-composer master branch ${env.BUILD_URL}" + } + } + } + } + } + +} + +// Set up a function to hold the steps needed to run the tests so we don't +// need to copy/paste the same lines over and over above. +void run_tests(test_type) { + + // Get CI machine details. + sh ( + label: "Get CI machine details", + script: "schutzbot/ci_details.sh" + ) + + // Deploy the Image Builder packages and services. + sh ( + label: "Deploy", + script: "schutzbot/deploy.sh" + ) + + // Run the base tests. + if (test_type == 'base') { + sh ( + label: "Base tests", + script: "schutzbot/run_base_tests.sh" + ) + } + + if (test_type == 'image') { + sh ( + label: "Image tests", + script: "schutzbot/run_image_tests.sh" + ) + } + + if (test_type == 'integration') { + // Run the qcow2 test. + sh ( + label: "Integration test: QCOW2", + script: "test/image-tests/qemu.sh qcow2" + ) + + // Run the openstack test. + sh ( + label: "Integration test: OpenStack", + script: "test/image-tests/qemu.sh openstack" + ) + + // Run the VHD/Azure test. + sh ( + label: "Integration test: VHD", + script: "test/image-tests/qemu.sh vhd" + ) + + // Run the AWS test. + sh ( + label: "Integration test: AWS", + script: "test/image-tests/aws.sh" + ) + } + +} + +// Move logs to a unique location and tell Jenkins to capture them on success +// or failure. +void preserve_logs(test_slug) { + + // Save the systemd journal. + sh "journalctl --boot > systemd-journald.log" + + // Make a directory for the log files and move the logs there. + sh "mkdir ${test_slug} && mv *.log *.jpg ${test_slug}/ || true" + + // Artifact the logs. + archiveArtifacts ( + allowEmptyArchive: true, + artifacts: "${test_slug}/*.log,${test_slug}/*.jpg" + ) + +} diff --git a/schutzbot/ci_details.sh b/schutzbot/ci_details.sh new file mode 100755 index 0000000..5f32d11 --- /dev/null +++ b/schutzbot/ci_details.sh @@ -0,0 +1,46 @@ +#!/bin/bash +# Dumps details about the instance running the CI job. + +PRIMARY_IP=$(ip route get 8.8.8.8 | head -n 1 | cut -d' ' -f7) +EXTERNAL_IP=$(curl --retry 5 -s -4 icanhazip.com) +PTR=$(curl --retry 5 -s -4 icanhazptr.com) +CPUS=$(nproc) +MEM=$(free -m | grep -oP '\d+' | head -n 1) +DISK=$(df --output=size -h / | sed '1d;s/[^0-9]//g') +HOSTNAME=$(uname -n) +ARCH=$(uname -m) +KERNEL=$(uname -r) + +echo -e "\033[0;36m" +cat << EOF +------------------------------------------------------------------------------ +CI MACHINE SPECS +------------------------------------------------------------------------------ + + Hostname: ${HOSTNAME} + Primary IP: ${PRIMARY_IP} + External IP: ${EXTERNAL_IP} + Reverse DNS: ${PTR} + CPUs: ${CPUS} + RAM: ${MEM} GB + DISK: ${DISK} GB + ARCH: ${ARCH} + KERNEL: ${KERNEL} + +------------------------------------------------------------------------------ +EOF +echo -e "\033[0m" + +echo "List of installed packages:" +rpm -qa | sort +echo "------------------------------------------------------------------------------" + +# Ensure cloud-init has completely finished on the instance. This ensures that +# the instance is fully ready to go. +while true; do + if [[ -f /var/lib/cloud/instance/boot-finished ]]; then + break + fi + echo -e "\n🤔 Waiting for cloud-init to finish running..." + sleep 5 +done diff --git a/schutzbot/deploy.sh b/schutzbot/deploy.sh new file mode 100755 index 0000000..5f4d299 --- /dev/null +++ b/schutzbot/deploy.sh @@ -0,0 +1,68 @@ +#!/bin/bash +set -euxo pipefail + +function retry { + local count=0 + local retries=5 + until "$@"; do + exit=$? + count=$(($count + 1)) + if [[ $count -lt $retries ]]; then + echo "Retrying command..." + sleep 1 + else + echo "Command failed after ${retries} retries. Giving up." + return $exit + fi + done + return 0 +} + +# Get OS details. +source /etc/os-release + +# Register RHEL if we are provided with a registration script. +if [[ -n "${RHN_REGISTRATION_SCRIPT:-}" ]] && ! sudo subscription-manager status; then + sudo chmod +x $RHN_REGISTRATION_SCRIPT + sudo $RHN_REGISTRATION_SCRIPT +fi + +# Restart systemd to work around some Fedora issues in cloud images. +sudo systemctl restart systemd-journald + +# Remove Fedora's modular repositories to speed up dnf. +sudo rm -f /etc/yum.repos.d/fedora*modular* + +# Enable fastestmirror and disable weak dependency installation to speed up +# dnf operations. +echo -e "fastestmirror=1\ninstall_weak_deps=0" | sudo tee -a /etc/dnf/dnf.conf + +# Ensure we are using the latest dnf since early revisions of Fedora 31 had +# some dnf repo priority bugs like BZ 1733582. +# NOTE(mhayden): We can exclude kernel updates here to save time with dracut +# and module updates. The system will not be rebooted in CI anyway, so a +# kernel update is not needed. +if [[ $ID == fedora ]]; then + sudo dnf -y upgrade --exclude kernel --exclude kernel-core +fi + +# Add osbuild team ssh keys. +cat schutzbot/team_ssh_keys.txt | tee -a ~/.ssh/authorized_keys > /dev/null + +# Set up a dnf repository for the RPMs we built via mock. +sudo cp osbuild-mock.repo /etc/yum.repos.d/osbuild-mock.repo +sudo dnf repository-packages osbuild-mock list + +# Install the Image Builder packages. +# Note: installing only -tests to catch missing dependencies +retry sudo dnf -y install osbuild-composer-tests + +# Set up a directory to hold repository overrides. +sudo mkdir -p /etc/osbuild-composer/repositories + +# Start services. +sudo systemctl enable --now osbuild-composer.socket + +# Verify that the API is running. +sudo composer-cli status show +sudo composer-cli sources list diff --git a/schutzbot/mockbuild.sh b/schutzbot/mockbuild.sh new file mode 100755 index 0000000..2f763bc --- /dev/null +++ b/schutzbot/mockbuild.sh @@ -0,0 +1,129 @@ +#!/bin/bash +set -euo pipefail + +# Colorful output. +function greenprint { + echo -e "\033[1;32m${1}\033[0m" +} + +# Get OS and architecture details. +source /etc/os-release +ARCH=$(uname -m) + +# Mock is only available in EPEL for RHEL. +if [[ $ID == rhel ]] && ! rpm -q epel-release; then + greenprint "📦 Setting up EPEL repository" + curl -Ls --retry 5 --output /tmp/epel.rpm \ + https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm + sudo rpm -Uvh /tmp/epel.rpm +fi + +# Register RHEL if we are provided with a registration script. +if [[ -n "${RHN_REGISTRATION_SCRIPT:-}" ]] && ! sudo subscription-manager status; then + greenprint "🪙 Registering RHEL instance" + sudo chmod +x $RHN_REGISTRATION_SCRIPT + sudo $RHN_REGISTRATION_SCRIPT +fi + +# Install requirements for building RPMs in mock. +greenprint "📦 Installing mock requirements" +sudo dnf -y install createrepo_c make mock python3-pip rpm-build + +# Install s3cmd if it is not present. +if ! s3cmd --version > /dev/null 2>&1; then + greenprint "📦 Installing s3cmd" + sudo pip3 -q install s3cmd +fi + +# Jenkins sets a workspace variable as the root of its working directory. +WORKSPACE=${WORKSPACE:-$(pwd)} + +# Mock configuration file to use for building RPMs. +MOCK_CONFIG="${ID}-${VERSION_ID%.*}-$(uname -m)" + +# Jenkins takes the proposed PR and merges it onto master. Although this +# creates a new SHA (which is slightly confusing), it ensures that the code +# merges properly against master and it tests the code against the latest +# commit in master, which is certainly good. +POST_MERGE_SHA=$(git rev-parse --short HEAD) + +# Bucket in S3 where our artifacts are uploaded +REPO_BUCKET=osbuild-composer-repos + +# Public URL for the S3 bucket with our artifacts. +MOCK_REPO_BASE_URL="http://osbuild-composer-repos.s3-website.us-east-2.amazonaws.com" + +# Directory to hold the RPMs temporarily before we upload them. +REPO_DIR=repo/${JOB_NAME}/${POST_MERGE_SHA}/${ID}${VERSION_ID//./}_${ARCH} + +# Maintain a directory for the master branch that always contains the latest +# RPM packages. +REPO_DIR_LATEST=repo/${JOB_NAME}/latest + +# Full URL to the RPM repository after they are uploaded. +REPO_URL=${MOCK_REPO_BASE_URL}/${JOB_NAME}/${POST_MERGE_SHA}/${ID}${VERSION_ID//./}_${ARCH} + +# Print some data. +greenprint "🧬 Using mock config: ${MOCK_CONFIG}" +greenprint "📦 Post merge SHA: ${POST_MERGE_SHA}" +greenprint "📤 RPMS will be uploaded to: ${REPO_URL}" + +# Build source RPMs. +greenprint "🔧 Building source RPMs." +make srpm +make -C osbuild srpm + +# Update the mock configs if we are on 8.3 beta. +if [[ $VERSION_ID == 8.3 ]]; then + # Remove the existing (non-beta) repos from the template. + sudo sed -i '/# repos/q' /etc/mock/templates/rhel-8.tpl + + # Add the enabled repos to the template. + cat /etc/yum.repos.d/redhat.repo | sudo tee -a /etc/mock/templates/rhel-8.tpl + + # We need triple quotes at the end of the template to mark the end of + # the repo list. + echo '"""' | sudo tee -a /etc/mock/templates/rhel-8.tpl +fi + +# Compile RPMs in a mock chroot +greenprint "🎁 Building RPMs with mock" +sudo mock -v -r $MOCK_CONFIG --resultdir $REPO_DIR --with=tests \ + rpmbuild/SRPMS/*.src.rpm osbuild/rpmbuild/SRPMS/*.src.rpm + +# Change the ownership of all of our repo files from root to our CI user. +sudo chown -R $USER ${REPO_DIR%%/*} + +# Move the logs out of the way. +greenprint "🧹 Retaining logs from mock build" +mv ${REPO_DIR}/*.log $WORKSPACE + +# Create a repo of the built RPMs. +greenprint "⛓️ Creating dnf repository" +createrepo_c ${REPO_DIR} + +# Copy the current build to the latest directory. +mkdir -p $REPO_DIR_LATEST +cp -arv ${REPO_DIR}/ ${REPO_DIR_LATEST}/ + +# Remove the previous latest build for this branch. +# Don't fail if the path is missing. +s3cmd --recursive rm s3://${REPO_BUCKET}/${JOB_NAME}/latest/${ID}${VERSION_ID//./}_${ARCH} || true + +# Upload repository to S3. +greenprint "☁ Uploading RPMs to S3" +pushd repo + s3cmd --acl-public sync . s3://${REPO_BUCKET}/ +popd + +# Create a repository file. +greenprint "📜 Generating dnf repository file" +tee osbuild-mock.repo << EOF +[osbuild-mock] +name=osbuild mock ${JOB_NAME}-${POST_MERGE_SHA} ${ID}${VERSION_ID//./} +baseurl=${REPO_URL} +enabled=1 +gpgcheck=0 +# Default dnf repo priority is 99. Lower number means higher priority. +priority=5 +EOF \ No newline at end of file diff --git a/schutzbot/run_base_tests.sh b/schutzbot/run_base_tests.sh new file mode 100755 index 0000000..648be38 --- /dev/null +++ b/schutzbot/run_base_tests.sh @@ -0,0 +1,63 @@ +#!/bin/bash +set -euo pipefail + +WORKING_DIRECTORY=/usr/libexec/osbuild-composer +TESTS_PATH=/usr/libexec/tests/osbuild-composer + +PASSED_TESTS=() +FAILED_TESTS=() + +TEST_CASES=( + "osbuild-weldr-tests" + "osbuild-dnf-json-tests" + "osbuild-tests" +) + +# Print out a nice test divider so we know when tests stop and start. +test_divider () { + printf "%0.s-" {1..78} && echo +} + +# Run a test case and store the result as passed or failed. +run_test_case () { + TEST_NAME=$(basename $1) + echo + test_divider + echo "🏃🏻 Running test: ${TEST_NAME}" + test_divider + + if sudo ${1} -test.v | tee ${WORKSPACE}/${TEST_NAME}.log; then + PASSED_TESTS+=($TEST_NAME) + else + FAILED_TESTS+=($TEST_NAME) + fi + + test_divider + echo +} + +# Ensure osbuild-composer-tests is installed. +sudo dnf -y install osbuild-composer-tests + +# Change to the working directory. +cd $WORKING_DIRECTORY + +# Run each test case. +for TEST_CASE in "${TEST_CASES[@]}"; do + run_test_case ${TESTS_PATH}/$TEST_CASE +done + +# Print a report of the test results. +test_divider +echo "😃 Passed tests: ${PASSED_TESTS[@]}" +echo "☹ Failed tests: ${FAILED_TESTS[@]}" +test_divider + +# Exit with a failure if any tests failed. +if [ ${#FAILED_TESTS[@]} -eq 0 ]; then + echo "🎉 All tests passed." + exit 0 +else + echo "🔥 One or more tests failed." + exit 1 +fi diff --git a/schutzbot/run_image_tests.sh b/schutzbot/run_image_tests.sh new file mode 100755 index 0000000..38712ae --- /dev/null +++ b/schutzbot/run_image_tests.sh @@ -0,0 +1,101 @@ +#!/bin/bash +set -euo pipefail + +# Get OS and architecture details. +source /etc/os-release +ARCH=$(uname -m) + +WORKING_DIRECTORY=/usr/libexec/osbuild-composer +IMAGE_TEST_CASE_RUNNER=/usr/libexec/tests/osbuild-composer/osbuild-image-tests +IMAGE_TEST_CASES_PATH=/usr/share/tests/osbuild-composer/cases + +PASSED_TESTS=() +FAILED_TESTS=() + +# Print out a nice test divider so we know when tests stop and start. +test_divider () { + printf "%0.s-" {1..78} && echo +} + +# Get a list of test cases. +get_test_cases () { + TEST_CASE_SELECTOR="${ID}_${VERSION_ID%.*}-${ARCH}*.json" + pushd $IMAGE_TEST_CASES_PATH > /dev/null + ls $TEST_CASE_SELECTOR + popd > /dev/null +} + +# Run a test case and store the result as passed or failed. +run_test_case () { + TEST_RUNNER=$1 + TEST_CASE_FILENAME=$2 + TEST_NAME=$(basename $TEST_CASE_FILENAME) + + echo + test_divider + echo "🏃🏻 Running test: ${TEST_NAME}" + test_divider + + # Set up the testing command with Azure secrets in the environment. + # + # This works by having a text file stored in Jenkins credentials. + # In Jenkinsfile, the following line assigns the path to this secret file + # to an environment variable called AZURE_CREDS: + # AZURE_CREDS = credentials('azure') + # + # The file is in the following format: + # KEY1=VALUE1 + # KEY2=VALUE2 + # + # Using `env $(cat $AZURE_CREDS)` we can take all the key-value pairs and + # save them as environment variables. + # Read test/README.md to see all required environment variables for Azure + # uploads + # + # AZURE_CREDS might not be defined in all cases (e.g. Azure doesn't + # support aarch64), therefore the following line sets AZURE_CREDS to + # /dev/null if the variable is undefined. + AZURE_CREDS=${AZURE_CREDS-/dev/null} + OPENSTACK_CREDS=${OPENSTACK_CREDS-/dev/null} + VCENTER_CREDS=${VCENTER_CREDS-/dev/null} + TEST_CMD="env $(cat $AZURE_CREDS $OPENSTACK_CREDS $VCENTER_CREDS) $TEST_RUNNER -test.v ${IMAGE_TEST_CASES_PATH}/${TEST_CASE_FILENAME}" + + # Run the test and add the test name to the list of passed or failed + # tests depending on the result. + if sudo $TEST_CMD 2>&1 | tee ${WORKSPACE}/${TEST_NAME}.log; then + PASSED_TESTS+=("$TEST_NAME") + else + FAILED_TESTS+=("$TEST_NAME") + fi + + test_divider + echo +} + +# Ensure osbuild-composer-tests is installed. +if ! rpm -qi osbuild-composer-tests > /dev/null 2>&1; then + sudo dnf -y install osbuild-composer-tests +fi + +# Change to the working directory. +cd $WORKING_DIRECTORY + +# Run each test case. +for TEST_CASE in $(get_test_cases); do + run_test_case $IMAGE_TEST_CASE_RUNNER $TEST_CASE +done + +# Print a report of the test results. +test_divider +echo "😃 Passed tests: " "${PASSED_TESTS[@]}" +echo "☹ Failed tests: " "${FAILED_TESTS[@]}" +test_divider + +# Exit with a failure if any tests failed. +if [ ${#FAILED_TESTS[@]} -eq 0 ]; then + echo "🎉 All tests passed." + exit 0 +else + echo "🔥 One or more tests failed." + exit 1 +fi diff --git a/schutzbot/team_ssh_keys.txt b/schutzbot/team_ssh_keys.txt new file mode 100644 index 0000000..43a55f5 --- /dev/null +++ b/schutzbot/team_ssh_keys.txt @@ -0,0 +1,19 @@ +# SSH keys from members of the osbuild team that are used in CI. +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCxjfFIIlGfCn9iclHymWrEBrTU2lL6tkSGT1ep7dCPzw1jY6WnhQlPXMpePriNxNXlG8cWO9/RFpBd0z9FwNy+kfgh9fuyNY49I+Ma6OyTVBg5hNoFxfRXG5iHtc/SQlnbEFiKpSk4lipo4QZtBtmgAqgkSA6Dzhygb6u5M9ixTIx4WBjuSM0GXQzNjpefyiWu+sIR+h2UrQkKABuuIYQbrjl+FhVmaLvrvyTO2usOtvnYBjhbPwyO72WPjapKd/9hTaqPE1wFy6UF2nXc4Pgw0giQb6sibFTz7NTexW35Q98qpQOWMYKcpgZrlSaHHKZSMhtzO7MdZrOLFUXoS1AeAy4ghtcNrOBTlb5SvP73zz0qBRF2cCO4O0wp5wwqPhvw2ntb3pTLPtdetJ+V50QPnpnXySSnZp2zFwce21bXx67nh9lnhLrZgje7coQnPAFx/cl36ESJygiuPcBw+k18YulYMXUqaBtkwJLkRjDpjTX2e5MJ16oD7sJHc4/W5kyfLvdMsVhdq1CXHGVVOpzogb095VYi0RXFpnZR/1eVgC/R+WVytYfY80rfVOcdAo2GZfnJ5zYRUXJJ9MZkanxx3E7UOikEJN9sUj200z6Cyy0IfIqTbJ1B5f7fd3acRrL4DcYUdFI/1ByNW6F1j7cZiAGOJKNbzXF0T3tf8x0e1Q== major@redhat.com +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDE+WCsyhgXLEBvcNKmEO5w9cYsqlcTUpQLgtHAO8+Ub1bw3UTuiJ/Qd3QmAr6gnb1US0Zs8srTZ5W34jOmYcupmmujLEUUrc/Lj2UzIDWqYi04GD3nzGM/oRWT2glJUXBe63bdy38/GfGdNqp9ZkVgaOEkwVyaxAuNcgNXoEJroSWMStvnDki9SvmXn972QFn+vfQdSt+6z18YFqyE0UhNVX+VE6rezNFRzARCrd+nCc8fVdTRd2vQ+0McButDLzwRXEwLjNOPfXCvoI5EH8+uhOWzLlR9ChfsMcbsipDRHyee0hKWhqg/C8j2DCC9r0zHArPcvLi+qGNIxdSE+KXjWRInr/DSttN/MwDulhJ4uHQQA/PDM1W8yddZpfBv1PaDO+wsm6s2bMN1mzgUPAOZK+i6gaYuoVc89f6+aHJVEPgtqT9Zp+6PD13RWDV6jfi0pfmwRi/CXLlc588oU5D8LEmlUNnUvSNmyV7OJayIK+K6+e7hWGC6/UWess+WSBc= larskarlitski@redhat.com +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQR4bv/n0rVI0ZHV4QoEjNrnHsUFFAcLJ6FWnnJyI31aFXWjjPf3NkbynPqqv3ksk9mj6jJzIBnlo2lZ0kLKIlnblJAyz0GVctxPsBQjzijgLPWTWXS/cLoyLZNS7AsqyTe9rzUATDHmBSje5FaJ6Shas2fybiD5V56fVekgen+sKVBWyFAKsxlWV1EytH5WLn0X0H6K50eCA7sNDfNlGs8k8EXmQPmLOEV55nGI4xBxLmAwx/dn9F3t2EhBwGzw1B6Zc4HA/ayWtJcoARO3gNiazTHKZUz37AAoJ2MnLB698L39aYZ/M55zduSLcyUqF+DBHMfzHH3QRsG0kzv+X9 tgunders@redhat.com +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDV/HNj7nVUp+Yh2hAhHgU+R6X9tLAnApUALhPK8oqH/WG6SjXDiLLEoCSisqu+3+WQ3/UcJeoRl5jpyRAjhxnsz/o5tfLXFDJBZ1/njE9T+e73tjfgS6s+BRpCdEAv6/BUVCxz4B5yI7+5mph0JFpv/soe8uhR6MlxAVxAhaLla4S2UPcn6SciyVznIzrTWgfsSHk/o5hIDVfJ68qYVPWqZWmV86hjE/VhPVgmiqFFh2YsJO/FlH36+wtABcKHbovkCjqQ9PkUqfns+82CNjP/XQ6GJZVK5xpYT59ILjlFwA5s9SYkLcjI+Xy2GGNm4ftNqtoF57q33pfDkxQsYJ+D obudai@redhat.com +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDm5/cfoo+5LBS+0bZ51w8gnB8gUUnUf4Kl4TaLIJF0wBrsywMBXtyRZFhEf04U40bNvWoVjkA3ISvq2Y1PBTRYy78VI5LfOA9/39THVDUZy1l9siSXKpNKx3bUgWGQ17jql7zwzF/Ad4h7E2YD56gtfRXmmF2eFQ2q6OZBXxJgDpbyvBpV0HdmarKTnUSwuvCjkLBSbFSc9MGrFkkkfQjkXtDq6ovzaxr40+u2pEZn/GuwTGFi93Lyovfa/Z4fOrHbJD+AlSmRKUO9Wm+QkSyIuQYeQlr1lN2Mx5tgV2umuuM++mEZq0clfMl7LCz/BfvEUb7w6KxmR++G9nATv1s/ anilsson@redhat.com +ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAw6IgsAlMJQlOtJXvtlY1racZPntLiy4+iDwrPMCgbYbsylY5TI2S4JCzC3OsnOF/abozKOhTrX04KOSOPkG8iZjBEUsMX4rQXtdViyec8pAdKOimzN9tdlfC2joW8jPlr/wpKMnMRCQmNDUZIOl1ujyTeY592JE8sj9TTqyc+fk= bcl@redhat.com +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDCk/bA7cpp5ynNr+0SGFFjfdJY1M4EUGqbqbcEQ3uU/CX7AhDEHB2pZMAoCPenoIlB0tz3qTvhQqn9jskiT70qU7bDIRbouXit3Jo0YheYZB7+eD/zxAHropUqjA3Bs6JSoBf2z48FumiFfP+eI0UFJ601Zux2fJCTpLuiboEscegWGyzJrl8/b7XCppNusewM1POyErZDlgHh/2gD7rsupMQKxv3rDOexbGMsA3aGgdrPkvg966tCN5Fz7eBM1RQ3o2ywojTgX9I3U/VeZRJ3w1T1IRDAF/DIMh/dA0afsSXn/7PJUx4NiTRstaBbuYYOMs+PQYSE6o2MLdRXZMQA2Dve/dARkg8LO1gvgNEtNUnDcmVPBrKvULDY9viHrGym9Q0Uo6eaxkqQMjzunV5ozUK6pmuYrMK0dODsVDiB4Ja5CQ6pybAOi+i45FqTT8Wc032KbvydWFpnNCvq31vXfVIysqtGASbhWyvry/Qjr04fkcwQhv6Lnph0pAJr5x9ow5rQrQBJZA23hRXDRuUQqpmnFvzK9TWxb1YQSdyQtpuPplbFUfr5JvyCDwHSBzmPZQUESgddmwCmsO6j0KZVmyJkSbXcWW69LMKGmpb1+Fgg2oo9kAW3e89XWyC7VfLIw5Qog08GtlgcpW92w75nSu3wPMi3ww2g78aG5zgLGw== daherrma@redhat.com +ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEApQ0yn8aUPRXoJgGZpWXcOjMXjJgmq9KN/tg0iyK9nuR3uRfdiNGTpgKr7DY9HfdP07R09e/uZ8qnLcXUrXYfJj087JNTMHjT1Ifb0KUB9Mzy82RDUFuefds356arhzhW6YS4cOOgY2GmEt2KhftjdHRic/eElZW9I5mA3Oz/uDk= ckellner@redhat.com +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8E4VU/3riYCdVAQMBWpwXHiN2/MmUoriYDe6o+hNQ6E1aubdHJ4kYIBxLPYaRvy5sLrbXhsFQH3eNx3HD0TvLiaKU6p9Vj1vEJuTGxB0rIWFATGxvUmBRmUrPNSiWJNCfhjNHTHqboNTf9rX+qgQY5ZqobVpbWHm+sq9QFMtrrF29FiWyowQIFQEPVFx7069Hfk0/JZlEc6rwqX+uiLU8fWP8X1uyXVuNP1xODFX+E/+SC4AbF/wfLlzZ1DVAadzBmCqmqaYQ/dTutXXOeCkiyT8WsPMwp/3FVM+IBwNbyr99fxX0l9j99g7v3vBX3rxV1R4jdQg6htdB7f+ihLAjnAqdNM2ufj0zLn7luJ9icVmV88+DkZf85Y81y/wqqiXEA8BgLlR8zsgnO4RcJoZHq6IErCjvOHBD2rgUAPtJWRLGPUeO53nKyYSobLslIg5dK4klp94DBblV6R+e0tsZQMVvlyj2iBSY/aBR0Cm4em8sXsoZeUQ9+JW6KWXM0yCLAYzhPOsWVi+65qaGjM9JfJKkrdk70Bqx9CixY25WRHiEtUbTpzqNoVil8AB/Ajvofjd36GhQhcng4MKfAUnGm5QQo4k1XT0ExSAwBI3FkkUNZQREhzAdkFdbSo/Iteh2u/OENgJ84nonCUVVFm/vw4nhG+Vmi8E7PJno/jzwoQ== jgiardin@redhat.com +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDQqwlSYW+lD0qlxrol3JQgcN0QSaT9sm3vmhxX18OnP/3XyxZwgnEiJtIDnoZ2FAWOEKTQ9PP0Ab9gfko9mWl6OP5Nj0wT37ZeWYAJoOA3qLw1PCUF8caHs9NcgTEc2Gd+yKIxObQo2xGZQFLBW7owI4S9Rl1a30+5oLFRZJXx8Yd5+b1xFUU/4oOSkc3birHlwTZrFrW6H+AYT4u9ioSvBKtmj7KCqzbRW7p6Sk40p0EoCYU83ZsevzYXTHTAFRHD/gsRS4N7SOUClz+ZnakVBV7fa0ETLkfSmVplhlklBQjBM7OVLeghjlSRXhAcVV63iJfTMNlTjM47MB/C48L+AlH9KMYmbR1ur44NsNGFKTe08B3Q1YfcSR4no6B5iR+zgb6fpDolklAcW5qbHiOOad3Gd8M7VGpDrHZzQe7QGe6fVMKjVq7xfJFgvOaW44F7RTgL6FnT3bNoi6k26enl1O7WlM0v8j/SwtJlSl3I0HpJXLWP/sgr7U590hZSRgG2U5hoXV9YXUCyLFy4pom82CSkAPT2DybdbnhCf4FAnW2CuZMr7KXuVrHC11LA+S2HLN9Fc9f8SA745+0gO5GTvoSWEt6oAgqPWgK6xj3aeHqWN4WQvMHzdftLh4ZxjHd+c7VxreEMQgZJ124W5nUttn4S0xpJHFMADJ44Kjxg6w== jkozol-1@redhat.com +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDMk4+D+GkL/se9RYdQ6mmv0v7cG3gXPiZdLvsbRFk+JMgnLEFUu4uwRN9+huMWdTXYLVcCZVw1l9kmDAOwPKYCGwetOwYI73nYt4n7i9zSQqKknxEO2w+16PvWy6kbgk7zQp9YEqJlIeZbVXiDuFeFyqEH5TxdAfDLu0VG/Db0M1Cor3v7g0/utHWVfS0QiLMQ5xLZ3jAbn/uTjOzsvtA219BTfdx7IVxKmG9/zeLUqyHBcOquI2rUjgHj1FN4yMCob2pSmAfV2u1iQZYHghXlw/kzh4BODjOSWCO9v+621eBdDJ36hdMHWizevxLz9Tj7X1Pwz+4TS/WABXs5MXBFcxx65wpSBr84LfZfWebe+vFe3Kkmdop3FPt7uuZyl8xdRsvfoIG3qZg2izX4IAtXo9tR++yIsEkP/5k/NVwkq158molT0HUruuK9regPRRvf7j6psAH4bMhV3o430eD7ibC5g1yT3kKbGnbJJX+HHL0+lt8IKMPCHWEWOT8uR0x9VUbT4RYFXt53I/ZXHXop+eypEctoKlsgMv1rpPGwSnrhtK1hgf399ph7GDjixZiuzcTP+Ulmj3atB32UHR7mRjarnaCI1w7PJt8pmg9K+8/XUa51q7bap1PGwsJS0lZ3zJEXFPdJfqO8/fkhDb4NYPlX0/bg/LNI9YqPg8CWSw== jkozol-2@redhat.com +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDZ9VgDuObR96fouIDfvzTQxfvMdb4OaK9UPYtQkaVg25a+Yb734Xf0bPFGjM9vtvJmy19qUSlCioqmkEcwheczoDsI/nLBnlRFH3FTmRt3WGJdWcO5MkVXbQAlTqMAlMI86OkeV3jGi5aKYbQ2QJa2ilvQ4JjTEPcAdBmaV9iFgrh9DnIHiAG4RJhrl2BGyf29FIGHusQp7rQSvkwuFPsITjXLcwUKSKbI4+ycwmJN492ovcsiqzG5+YWx12fm3woUWvqFIrt70yc+C7QP68qKJE6qnzWtzZxqtdHR48US0l9xTWB78HGlu0chtTfcF9xT7gokHmx95RWmfXU2fygt1wEYiKNoQnhZTb71ay6fWgzZMOnWrQSyhvKQpIGdPuyevCG7aNtQYTfgCfmPAfZpR1hLQe0feTTLWeS/3aBHUYwYigskFfOZuKy/3Gd8UA2uLeFSOaQ4rYK7sk/FnhGkzxpnW0FR6EXpvWRWdiusjvIZJRyHqb8O3I2uY9aiqV92OaEzwrBlNqqqg0+a7sZOlV8ZtVtzuqBO3yD4tVLGMvO/f28GJ0FnHExrLWHCStqlRiZvqukoJrGBRHJS0j2UK8agwzDM0jHQ4mxbfOwf618puV/YeRhd77GsFcrPD0KONTMeOEoN1jETTBBGZ7Ly/0MsnpP0WR/s8uuvmT7Xaw== msehnout-1@redhat.com +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC1pAobLYTC9BepQi0MViep8sQ0+OpTxP5FSZyiww+IQHpiXPvAzzYL0CYGagvPCI9zPQXx852XjP4T4/Oda5ejcP4+RbT/6ndbUm78xlzRrkYi4dd7OVdmm/1vriK1Q5llcnh+69wao5lXXTZ/j84O2bzAFGnG8MJfMa0gRiqOBCt24EQW1a5NYgTAZQBuD92/pJqc1b1S+hZWerxSdtVrhHi8oRlCwYbVWyhxF+OygfZqe4UyaH5m+eHYLJsxOfwvl9aUvp0ahlOT92l74l0ILuzYSTYIFr/W46F/9tYxiV+rEzjX9niR3sUE9R4U6Jia2aIQXJ6gsftX0Oi5r8nr7DJSPzr4zYMPcxZMEe3nt9ig1dp5DEuT16/e9dgfOuPYBPuEpxVjUPgXeYXIEURRuN9WaCXTkhpAEjIlAzaZsUGMNOVIQsPaHyYnsN/Chk2t4wf/ZIXbGefsTqPLwedbhULPzojHJMfg6Jt2PmUkOhmDtY0jd1vE2cV8/o6refnInf8ePliYZeM7xaF3zZz6ZAmpVAwhkyzJA8AoC4Y4A8+nEWnE641B/l6hXeSd2gdmYSi8FkIstTq6+cUammnJRt/yWLQyYkG4T0RYe9Xp79ZdYC28WOCy6tCzin24a1Zxwf2bWUwnji/01GLxwBHL+wIGHA0noG6XNqbdhRumGQ== msehnout-2@redhat.com +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDCv+bp9I2UqM4msF8D2deAp8s7LjdmH4zHZgioKFRcWMT7ibAVb9B/DNyV9E5VwNs/ofPVjstylHq8R4AJIJGVhVN8woeBjDYdniVJ42Ae7IqoERACDiqASERQSAtYSi+YNZ91jR7ERyHRYspy7lvLhWTyutZbavZa1rk1H9a2pDCfl2RK1Pb+oL41jFzHpupHdBNR0P9feJbbAvwqK6lZI0vMSdY8sJoiVq5MdvB2dy+S+BFs3TNNREaAr4l9XrJ42kmCkBSWVJkmQlCwT8CefZiTKecDNPQE0NI28ABUwQ2T3UElL65Uw5HrWNqIH6CcDfQPDgRfXnfLbPmJMTFQMWRy0H35EdCz0G21M+DfiSxgtOTL2gY872acqtyRwuOdD8/kKD7BuQtlsjpfJtORY+DIMHFF1hfNSWEDztD/4rP9eehYqY3s6UPMTeaowf+6QoAQqDvZG/RH85LhL1FV42N63cIPuTfPErw35hlOhYOUqYrApNtOdsOoEMUunGM= msehnout-3@redhat.com +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDjBCoSJv5HrA0PquLDJYU36oPI0H23AmU2gs8F3k6kBA71N9pHbs/C+YxFYyrsjLqaLwdo44sE2vXB5igJTZN/YpHYytbKHIGdnh3qc0myMvxDLJUxA1kxx3XfT8vbJ0AHrRIJdV6lxfrifI92a0vqRL1pAuWzW/NYytk6DeYDXbUy4xtHOlRIf2WXqZ2pZXsFleaYMdfmUP0y0awe5YDQsNkOBD2HDbU9669jP+UB0nirVuxDhZr1kZmQ8QdQxlePN5LN0RmbNY5Hm1/2SDuXhWh90/fbbWoCkrLTlkAUHckZPmGiEBhD2n4c7jHc25/fhaZsjZITRzHKP5wWW7LE3tXJVMF4eFEzgCoYEr6RpdEwQqQl86WiA0VuLQZbfju5T8t3y6PcGvXD5BF5BJuq710Uqw6y+gy4gNepO4U32jwBz2DDMMBhHsgjSmPfdTvqrjUnlt9NWTXnVDP34Zc5V+RwCgyB09gkwqW+Ae0jDoRSo1hTBSi7v9Gp5R/Hed0= msehnout-4@redhat.com +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDRhju+UtbgUyUzE56Hr8fcRsy0lwk6SKDGn6M7TQ+B0EL5mMTmylbGZ4eP3h+II+GVF5DcoDfXolQvSVn6kSz5lSq/adlbAgGZdxd8Q6N1V+zmMejQf3ZpKQoFWFkmzQoHV+yJkMtWGz//RYqn6eHXvuyDxGyCsdEzBnt10VZL9/g+C45w8l5FlMdGHOhBIkZg1UDLL+2pu8/t4DuPskyr83Thrmb0eZBC4BLLS8Ob9BSZroUgDE1BoSGmfUVnt2Yipjj9qTJ1vWpZPGuqXyCtHHBneJA1b+Hu21CCX/FtSWBNgkbGW2l0rgl8py/GIjqYXPQG0UHkpg6RNlXDARb/GxJVRA2rILX7BsnndKlEh+Kw9Q/IgxpcR5RxZwbH1hYxX1igVyrRW2kAobJhazGV5gBfgm4tZ05dqBL6QX/PqTd6lC5jsyRStwCYIwkh0+Knl2WRagRK/matzvX6MmQXV/vArtY2S4sG73lWN/Af5PnWXQRHRTAyZdSbQC/Ti8c= msehnout-5@redhat.com +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDoVIpowzsQseMML/7I9LcA18G7quBjp2te6GHX9g2IrKh3PxssIS4jQSskRePaCl1yLWhTRDgADkDuOwd8SrQFy7eo7I/GD2wDcdLaWYy4GkdV1M9nhquqpbdLQ2m/3sRhqdHEHadGuw0iYdNgR0M5sNig+xL+G+G4MvjL7hcuaC7GUVbAFWQgePwFWLxjTmX2zmpKQMwk1r4n/i4Wj2GJ7CayxOc9qtnLdnZm9Tj3WA/aRLdbnlM0TCzXrtfO5OLVa9/n3AHY4qqZ1PmRCizLlLtvDeTjhM5qTYCk/xnUNCVnPhe+YqkqXlV6D/D7SI6EIiEd+GI+qJsHt9AgKZpr msehnout-6@redhat.com +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDY/ylCrPBzil4TnZR4tWULpz3QgfBMQyEnMOHDAJNp/FK70hD+PUiRm3UY96pmGXonQvqiDoyPuVh025FkWshPK91Dyq8QD8h25q5C5Cg6kMgBpdGzbX44ksms1KyOHmSZ48MpWw3PFOrlNP1vysr6Imjz9Jixmx4sOZvqKnrbsbOW04gowVzpZM8m048lvf6/KhqeImfeSRc9Rtpos8GqEQVlwRevE1qBON963V1QtFOrm9weoQgb369SdqRRdxaGNAymNh3d78DneOWXmEyBflLSpIDx5I2s/1NB1Dp95Bp3VvlV3CH1HC7LAFKYi+xsz3/KHdgtvgShX6LFSdsp rvykydal@dhcp-lab-144.englab.brq.redhat.com \ No newline at end of file diff --git a/test/README.md b/test/README.md new file mode 100644 index 0000000..bd47265 --- /dev/null +++ b/test/README.md @@ -0,0 +1,177 @@ +# osbuild-composer testing information + +Test binaries, regardless of their scope/type (e.g. unit, API, integration) +must follow the syntax of the Go +[testing package](https://golang.org/pkg/testing/), that is implement only +`TestXxx` functions with their setup/teardown when necessary in a `yyy_test.go` +file. + +Test scenario discovery, execution and reporting will be handled by `go test`. + +Some test files will be executed directly by `go test` during rpm build time +and/or in CI. These are usually unit tests. Scenarios which require more complex +setup, e.g. a running osbuild-composer are not intented to be executed directly +by `go test` at build time. Instead they are intended to be executed as +stand-alone test binaries on a clean system which has been configured in +advance (because this is easier/more feasible). These stand-alone test binaries +are also compiled via `go test -c -o` during rpm build or via `make build`. +See *Integration testing* for more information. + + +## Image tests + +In the `test/cases` directory, sample image builds and their tests are +collected for the various distros, architectures, configuration we support. + +Each test case describes how the image is built, the expected osbuild +manifest used internally, the expected image-info output and how to +boot-test the image. + +To (re)generate these test cases use the tool +`tools/test-case-generators/generate-test-cases`. + +### Setting up Azure upload tests + +By default, the vhd images are run locally using qemu. However, when +the right set of environment flags is passed to the osbuild-image-tests, +it uploads the image to Azure, boots it and tries to ssh into it. + +#### Required flags +- `AZURE_STORAGE_ACCOUNT` +- `AZURE_STORAGE_ACCESS_KEY` +- `AZURE_CONTAINER_NAME` +- `AZURE_SUBSCRIPTION_ID` +- `AZURE_CLIENT_ID` +- `AZURE_CLIENT_SECRET` +- `AZURE_TENANT_ID` +- `AZURE_LOCATION` +- `AZURE_RESOURCE_GROUP` + +#### Setting up all the required resources + +1) Firstly, go to *Subscriptions* in the left-side menu. Here you can find + the `AZURE_SUBSCRIPTION_ID`. + +2) Now, you need to create a new resource group. In the left-side menu, + select *Resource groups*. Click on *Add* above the resource group list. + The name you choose is your `AZURE_RESOURCE_GROUP`. The region you choose + is your `AZURE_LOCATION`. However, it must be in the "machine-readable + form". You can list all the locations with their machine-readable names + using Azure CLI: `az account list-locations -o table`. + E.g. the machine-readable name of US East location is `eastus`. + + Note that terms *location* and *region* are synonyms in Azure's context. + +3) Storage time! Go to Storage accounts in the left-side menu. Click on + *Add* above the list. Use the resource group you created in + the previous step. Also, the region should be the same. The name you + choose is your `AZURE_STORAGE_ACCOUNT`. + + After the storage account is created, open it. + Select *Settings > Access keys*. Choose one of the keys, this is your + `AZURE_STORAGE_ACCESS_KEY`. Select *Blob service > Containers* and create + a new one. Its name is your `AZURE_CONTAINER_NAME`. + +4) Now it’s time to create an application. This is needed because Azure uses + OAuth to do authorization. In the left-side menu, choose *Azure Active + Directory*. Go to *Manage > App registrations* and register a new + application. + + When it’s created, open it. In the overview, you can see + the Application (client) ID and the Directory (tenant) ID. These are your + `AZURE_CLIENT_ID` and `AZURE_TENANT_ID`. + + Now, go to *Manage > Certificates & Secrets* under your new application + and create a new client secret. The is your `AZURE_CLIENT_SECRET`. + +5) The last step is to give the new application access to the resource group. + This step must be done by Azure administrator (@larskarlitski): Go to + the *Access control (IAM)* section under the newly created resource group. + Here, add the new application with the *Developer* role. + +### Setting up OpenStack upload tests + +The following environment variables are required + +- `OS_AUTH_URL` +- `OS_USERNAME` +- `OS_PASSWORD` +- `OS_PROJECT_ID` +- `OS_DOMAIN_NAME` + + +### Setting up VMware vCenter upload tests + +The following environment variables are required + +- `GOVMOMI_URL` - vCenter hostname +- `GOVMOMI_USERNAME` +- `GOVMOMI_PASSWORD` +- `GOVMOMI_DATACENTER` +- `GOVMOMI_CLUSTER` +- `GOVMOMI_NETWORK` +- `GOVMOMI_DATASTORE` +- `GOVMOMI_FOLDER` +- `GOVMOMI_INSECURE` - value of 1 will skip checking SSL certificates + +**WARNING:** when configuring the credentials for Schutzbot we've experienced +an issue where the first line in the credentials file gets lost resulting in +incomplete credentials. The work-around is to define a dummy ENV variable on +the first line! + +## Notes on asserts and comparing expected values + +When comparing for expected values in test functions you should use the +[testify/assert](https://godoc.org/github.com/stretchr/testify/assert) or +[testify/require](https://godoc.org/github.com/stretchr/testify/require) +packages. Both of them provide an impressive array of assertions with the +possibility to use formatted strings as error messages. For example: + +``` +assert.Nilf(t, err, "Failed to set up temporary repository: %v", err) +``` + +If you want to fail immediately, not doing any more of the asserts use the +require package instead of the assert package, otherwise you'll end up with +panics and nil pointer memory problems. + +Stand-alone test binaries also have the `-test.failfast` option. + + +## Notes on code coverage + +Code coverage is recorded in +[codecov.io](https://codecov.io/github/osbuild/osbuild-composer). +This information comes only from unit tests and for the time being +we're not concerned with collecting coverage information from integration +tests, see `.github/workflows/tests.yml`. + + +## Integration testing + +This will consume the osbuild-composer API surface via the `composer-cli` +command line interface. Implementation is under `cmd/osbuild-tests/`. + +The easiest way to get started with integration testing from a git +checkout is: + +* `dnf -y install rpm-build` +* `dnf -y builddep osbuild-composer.spec` +* `make rpm` to build the software under test +* `dnf install rpmbuild/RPMS/x86_64/osbuild-composer-*.rpm` - this will + install both osbuild-composer, its -debuginfo, -debugsource and -tests packages +* `systemctl start osbuild-composer` +* `/usr/libexec/tests/osbuild-composer/osbuild-tests` to execute the test suite. + It is best that you use a fresh system for installing and running the tests! + +**NOTE:** + +The easiest way to start osbuild-composer is via systemd because it takes care +of setting up the UNIX socket for the API server. + +If you are working on a pull request that adds more integration tests +(without modifying osbuild-composer itself) then you can execute the test suite +from the local directory without installing it: + +* `make build` - will build everything under `cmd/` +* `./osbuild-tests` - will execute the freshly built integration test suite diff --git a/test/azure-deployment-template.json b/test/azure-deployment-template.json new file mode 100644 index 0000000..d69b94c --- /dev/null +++ b/test/azure-deployment-template.json @@ -0,0 +1,198 @@ +{ + "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "networkInterfaceName": { + "type": "string" + }, + "networkSecurityGroupName": { + "type": "string" + }, + "virtualNetworkName": { + "type": "string" + }, + "publicIPAddressName": { + "type": "string" + }, + "virtualMachineName": { + "type": "string" + }, + "diskName": { + "type": "string" + }, + "imageName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "imagePath": { + "type": "string" + }, + "adminUsername": { + "type": "string" + }, + "adminPublicKey": { + "type": "secureString" + } + }, + "variables": { + "nsgId": "[resourceId(resourceGroup().name, 'Microsoft.Network/networkSecurityGroups', parameters('networkSecurityGroupName'))]", + "vnetId": "[resourceId(resourceGroup().name,'Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]", + "subnetRef": "[concat(variables('vnetId'), '/subnets/default')]" + }, + "resources": [ + { + "name": "[parameters('networkInterfaceName')]", + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-07-01", + "location": "[parameters('location')]", + "dependsOn": [ + "[concat('Microsoft.Network/networkSecurityGroups/', parameters('networkSecurityGroupName'))]", + "[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]", + "[concat('Microsoft.Network/publicIpAddresses/', parameters('publicIPAddressName'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "[variables('subnetRef')]" + }, + "privateIPAllocationMethod": "Dynamic", + "publicIpAddress": { + "id": "[resourceId(resourceGroup().name, 'Microsoft.Network/publicIpAddresses', parameters('publicIPAddressName'))]" + } + } + } + ], + "networkSecurityGroup": { + "id": "[variables('nsgId')]" + } + } + }, + { + "name": "[parameters('networkSecurityGroupName')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-02-01", + "location": "[parameters('location')]", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "priority": 300, + "protocol": "TCP", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "22" + } + } + ] + } + }, + { + "name": "[parameters('virtualNetworkName')]", + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2019-09-01", + "location": "[parameters('location')]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.5.0/24" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.5.0/24" + } + } + ] + } + }, + { + "name": "[parameters('publicIPAddressName')]", + "type": "Microsoft.Network/publicIpAddresses", + "apiVersion": "2019-02-01", + "location": "[parameters('location')]", + "properties": { + "publicIpAllocationMethod": "Dynamic" + }, + "sku": { + "name": "Basic" + } + }, + { + "name": "[parameters('imageName')]", + "type": "Microsoft.Compute/images", + "apiVersion": "2019-07-01", + "location": "[parameters('location')]", + "properties": { + "hyperVGeneration": "V1", + "storageProfile": { + "osDisk": { + "osType": "Linux", + "blobUri": "[parameters('imagePath')]", + "osState": "Generalized" + } + } + } + }, + { + "name": "[parameters('virtualMachineName')]", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "location": "[parameters('location')]", + "dependsOn": [ + "[concat('Microsoft.Network/networkInterfaces/', parameters('networkInterfaceName'))]", + "[concat('Microsoft.Compute/images/', parameters('imageName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_B1s" + }, + "storageProfile": { + "imageReference": { + "id": "[resourceId(resourceGroup().name, 'Microsoft.Compute/images', parameters('imageName'))]" + }, + "osDisk": { + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "Standard_LRS" + }, + "name": "[parameters('diskName')]", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces', parameters('networkInterfaceName'))]" + } + ] + }, + "osProfile": { + "computerName": "[parameters('virtualMachineName')]", + "adminUsername": "[parameters('adminUsername')]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]", + "keyData": "[parameters('adminPublicKey')]" + } + ] + } + } + } + } + } + ] +} diff --git a/test/cases/fedora_31-aarch64-ami-boot.json b/test/cases/fedora_31-aarch64-ami-boot.json new file mode 100644 index 0000000..ac661c3 --- /dev/null +++ b/test/cases/fedora_31-aarch64-ami-boot.json @@ -0,0 +1,11319 @@ +{ + "boot": { + "type": "aws" + }, + "compose-request": { + "distro": "fedora-31", + "arch": "aarch64", + "image-type": "ami", + "repositories": [ + { + "baseurl": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ], + "filename": "image.raw", + "blueprint": {} + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:0064998ad79a6250297b379852b5a06932d8e074270bea02d75888758755bd23": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.aarch64.rpm" + }, + "sha256:0064a42567b657d85831ec162a314cd00f7befe48ce634387463754677206c9c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gettext-0.20.1-2.fc31.aarch64.rpm" + }, + "sha256:00e59535d45094b7d47e25c93d21179f3138839968776107df99fa0678f1440f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-libelf-0.177-1.fc31.aarch64.rpm" + }, + "sha256:01ea4ecad746f1309b5c943f2b2709f7e5400d33e4d51c85401205ed18d61621": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libX11-1.6.8-3.fc31.aarch64.rpm" + }, + "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:02f7f1cdd5cbe11b16e093686db5c584a68db4e6b1015c4d36c0246a54f801bb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_certmap-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:03559557dbf64805e44d7e956f6b228c90831766fd1f485eecdfddf7a646a220": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kbd-2.0.4-14.fc31.aarch64.rpm" + }, + "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/linux-firmware-20190923-102.fc31.noarch.rpm" + }, + "sha256:03b9d49b78b7e758eecce6a25782767ec5dc921d28f053b17a651b1c8bb96d7b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXtst-1.2.3-10.fc31.aarch64.rpm" + }, + "sha256:0458f6a42cd644322b6eb24b01f0f75de47d5e10ae077797dfada1ce2a1f7fcd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dconf-0.34.0-1.fc31.aarch64.rpm" + }, + "sha256:047f9e29fcfa56be98ca3f42249f3ccb2a93df99f2438e3983e2064025f0d79d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jsonschema-3.0.2-1.fc31.noarch.rpm" + }, + "sha256:04826477197ec239d756f81cb6d38fde2f65e71499a8dbaf0c666d93084f1ea3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdatrie-0.2.9-10.fc31.aarch64.rpm" + }, + "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:054f0851c8b42292ac5c24ea649764b022dacc6d40a00e333abacc67e2c2a215": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sssd-client-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm" + }, + "sha256:06cf2f5439e0ce2c7fc655bdf4868d3c47a5fbe5b71e9dc305232a7732896e14": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/w/which-2.21-15.fc31.aarch64.rpm" + }, + "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-six-1.12.0-2.fc31.noarch.rpm" + }, + "sha256:077e72f02d2eef2a2bfd8ab057527a02005806e731303fbff1e28f61716f2943": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sssd-nfs-idmap-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:07cd9ddc7f7a16dc9739647af90706cfbcf70b281f5474e622b0769e211e0dc8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/u/util-linux-2.34-3.fc31.aarch64.rpm" + }, + "sha256:07f4ccd9f3cb20ceb4483adb673adfef15394b246bd93a84f169eb07acb68d71": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/passwd-0.80-6.fc31.aarch64.rpm" + }, + "sha256:089d4c5c48e89cd1444f283571fce20fbf5f1b20f3a5ff1ce74266bbc2cd0fec": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/checkpolicy-2.9-2.fc31.aarch64.rpm" + }, + "sha256:0a4100f50b31df500afc5d255dd87117553df7032447f3e226196fd64f9c3f47": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.aarch64.rpm" + }, + "sha256:0a80e2a0ede76c98337c220f01dfadacace037b48f09fe072c5d33f356e50b8e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssh-server-8.0p1-8.fc31.1.aarch64.rpm" + }, + "sha256:0ae87f94df2e114f287d60e9041ac159349f51322e32eeefa19a96db0acb78e7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pigz-2.4-5.fc31.aarch64.rpm" + }, + "sha256:0b109cfab724680af15e7be85cf9f4f4828cd8290f0aa8fcebcbb14cd176be94": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/initscripts-10.02-2.fc31.aarch64.rpm" + }, + "sha256:0b1ddcc8c3096814bc5027133fb077ef587b49a1a4e4d6426327c75cf2066b11": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/alternatives-1.11-5.fc31.aarch64.rpm" + }, + "sha256:0b2a6b7e3b62ff9c02ec3012f08fbf396a7990bf9599b49b75eecbee3b257f7f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgpg-error-1.36-2.fc31.aarch64.rpm" + }, + "sha256:0b8baef3612880639ed59ae79475086aac8ce236fd35977e0d87305d0bb9a529": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pixman-0.38.4-1.fc31.aarch64.rpm" + }, + "sha256:0c49f27ae0aaf95fbdc52cfb9406c41eefff41b205f85fdc6ef6787ec3af5146": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libselinux-2.9-5.fc31.aarch64.rpm" + }, + "sha256:0cb1a66cb3bb44797a8aeb47db85db1f6c0fcf4d4571d8a5f8981f83b51c08af": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/graphite2-1.3.13-1.fc31.aarch64.rpm" + }, + "sha256:0edff1a5f04f7f5d47537b4c049b95331f9ad33963c9c63ca4b13345a37296d4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fipscheck-1.5.0-7.fc31.aarch64.rpm" + }, + "sha256:0f3591f036f0be85a9d28e9099d43a8b2e5a500a9588825c1dd994d1a323ceba": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/coreutils-8.31-4.fc31.aarch64.rpm" + }, + "sha256:0f661b922a9e9cbe82e948ec1d83c6fca6e61e08de50815a5b6c069a64f4e883": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXrandr-1.5.2-2.fc31.aarch64.rpm" + }, + "sha256:0ff534e46d982b5a213eb562e3cb30d1935a25a9f433d325457069eec9131217": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-bootchart-233-5.fc31.aarch64.rpm" + }, + "sha256:1088699171a35873eb5a776f0212ceff2bc9d67e3f1d8f2e107bbf751c36ca90": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cracklib-2.9.6-21.fc31.aarch64.rpm" + }, + "sha256:1135e96b6f9ed29e4ed4c0f060876891a244442a503f0b18ab238589da20d464": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jinja2-2.10.1-2.fc31.noarch.rpm" + }, + "sha256:1138343dfb107de07f54d4723aee2686fdd1af3e4532d14bd399b9b6b7873040": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/jansson-2.12-4.fc31.aarch64.rpm" + }, + "sha256:11e8ee935d9c9d349f4c081d035fc4ee34539af23ef8122e6901b22cf97f346f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsigsegv-2.11-8.fc31.aarch64.rpm" + }, + "sha256:121e2a4e79f6dbf37af2182cb12ff28345db993a7f83de344f6f5fbcf5a705a5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sssd-kcm-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:12c732f4a960848bd4fbc8111c2c0cf584799b1fdf0eb89c2cdcb26da5bc03b8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnupg2-2.2.17-2.fc31.aarch64.rpm" + }, + "sha256:143c50c0663f963c7689c1cec43b81cf1433d5d3b67eb8233ba06506c1b3e095": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jwt-1.7.1-3.fc31.noarch.rpm" + }, + "sha256:1472adb267192ca8a323e544fd9749c4765334fc5779e8de4ee583eff77fc078": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-client-1.17.0-2.fc31.aarch64.rpm" + }, + "sha256:14a759b4daf287d66f5b803b0fbb52621f8429607be109e5d3c313a57cc276e2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.aarch64.rpm" + }, + "sha256:159972ccc01cd5840c2aad04818efc965b64c5120b1fcce92a47f45ab1abf4a5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXcomposite-0.4.4-17.fc31.aarch64.rpm" + }, + "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dnf-plugins-core-4.0.9-1.fc31.noarch.rpm" + }, + "sha256:1738cf24111bcd0bff08880c4d5efa624c09a2080c901f67ab032ed201a8751e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdb-5.3.28-38.fc31.aarch64.rpm" + }, + "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm" + }, + "sha256:181173a9353f593105978b8e4038b7bf53fd22c63f4514fd271a74d48f9c59f8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/bash-5.0.7-3.fc31.aarch64.rpm" + }, + "sha256:19217c1730a3f16e15eedd95e3f97471097a1bd066f7783fd273cfb392f4042e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-tools-2.02-100.fc31.aarch64.rpm" + }, + "sha256:1b65944efe48ba0cca34011891480a1db29a7e95dad058376bfca34d68fb0791": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-ply-3.11-3.fc31.noarch.rpm" + }, + "sha256:1b85657077726361a4b157a909796649fe93131fdc4aa67fd5329adc8d2fc833": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.aarch64.rpm" + }, + "sha256:1bdeed5fd5907e0cacd5706ebc93ade09462a0c71e2316d9841e33a896b99b87": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/c-ares-1.15.0-4.fc31.aarch64.rpm" + }, + "sha256:1c2edf26d16b55bac2824452c1c584ff52acf8477920f384f6019f647c241450": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lz4-libs-1.9.1-1.fc31.aarch64.rpm" + }, + "sha256:1d530a23a8ea2b831068593fe6aa7a32923c6276504def5a85ad065aaac9ac5f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-6.1-12.20190803.fc31.aarch64.rpm" + }, + "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kbd-misc-2.0.4-14.fc31.noarch.rpm" + }, + "sha256:1e049e86c5dd5c4d6737d47dd194d553ffbd65c81a4077cf6e1029a0fde80fb5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-requests-2.22.0-3.fc31.noarch.rpm" + }, + "sha256:1f44142da3bf5e09b98488b40ed8a2d5dbd841c36bb4553749e6d65d7fe5c15c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-setools-4.2.2-1.fc31.aarch64.rpm" + }, + "sha256:20cc74172d531506391309e8f82c6512404ada35f22c68fcd0b83a01dc6e0ca8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpwquality-1.4.1-1.fc31.aarch64.rpm" + }, + "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm" + }, + "sha256:21d9ceffd6fb52d235a95e4d7708d719eac758a9dfd80ba2d6119dfdc46c80ff": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/chrony-3.5-4.fc31.aarch64.rpm" + }, + "sha256:23908e2eae2ccfd2efb1d19cdf46e3dca4680ac2d562c1c96f7fb0d22859fc82": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.aarch64.rpm" + }, + "sha256:23e335d288f55da26dc77e0d1ceb7cbe4e3890b4e28ff4a2435fc4481a6e737f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libref_array-0.1.5-43.fc31.aarch64.rpm" + }, + "sha256:23e8c23c89737665a5288a3a171548e94898be9ed4a24c056d8bc851c6800090": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtasn1-4.14-2.fc31.aarch64.rpm" + }, + "sha256:253f9f540248a0bdd537ee8ea4f670752af74d85be98ea81593a30710e1e5808": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/linux-atm-libs-2.5.1-25.fc31.aarch64.rpm" + }, + "sha256:2575f8d1fb953934730b9fe6803bf3de12669dcee78852057ea4e88f9d4d76a4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libevent-2.1.8-7.fc31.aarch64.rpm" + }, + "sha256:264828f11342a94f056fb27a2e78fc5e14226230b3dbac8bdad6a4c8598fd24f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.aarch64.rpm" + }, + "sha256:26da63b51fc7b85d1a30098bfb9c2fa276b2d2129a28cee8cc80acd2eabe96e0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kernel-5.3.7-301.fc31.aarch64.rpm" + }, + "sha256:284d46ebd3d3fd4a915b624a75e9931c948807fcb13fed01681e623d0ba7b1ce": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lmdb-libs-0.9.23-3.fc31.aarch64.rpm" + }, + "sha256:28cdab6faa95e1d7d1c32d977627ef5a86b262e2b0e20e76ddd73f598ee126e4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-all-langpacks-2.30-5.fc31.aarch64.rpm" + }, + "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dejavu-sans-fonts-2.37-2.fc31.noarch.rpm" + }, + "sha256:2aafea82072ad28a8b662e32902f66b47166a00b5c9cf19b1dd589f39776560f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXi-1.7.10-2.fc31.aarch64.rpm" + }, + "sha256:2ad8824aa48378aa741fbd863104d950ad4f669566af2d4f433be6d9afd8ead6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/shadow-utils-4.6-16.fc31.aarch64.rpm" + }, + "sha256:2b1052455234b751e869f22c496bb660dec53eafe198673bab25053e394e41cb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_idmap-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:2b24b5729cd74e3b1efe261bfd732fd1995b0e64d76587a3d90762d77cc58c77": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libunistring-0.9.10-6.fc31.aarch64.rpm" + }, + "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm" + }, + "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm" + }, + "sha256:2d9a2e736dd5231df3c5c748ce0ba5a75a409dacfe73f14676781f32d565a7df": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jsonpointer-1.10-16.fc31.noarch.rpm" + }, + "sha256:2dd8505a96714cdb79829a1377e36a53e05cc9b65a7f35a258ca3e4aaa76c700": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.aarch64.rpm" + }, + "sha256:2efe5f560e0c56dec38c9456ae8482a5a9006833d257de4a2a6246d261f647e2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/plymouth-core-libs-0.9.4-10.20191001gita8aad27.fc31.aarch64.rpm" + }, + "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm" + }, + "sha256:2fc552b80866318c0ac934f5385fd2090743701639c318b75138ae985ff5606a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libarchive-3.4.0-1.fc31.aarch64.rpm" + }, + "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/langpacks-en-2.0-7.fc31.noarch.rpm" + }, + "sha256:30e07680d23bfb5d4b2727893337619c56f13b46daec2f13f8985f642bf84250": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.aarch64.rpm" + }, + "sha256:311729a146f8833ff882370348d69313322dcf7586b68d5eed192eb633dcd58a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libndp-1.7-4.fc31.aarch64.rpm" + }, + "sha256:31dacda6745f326be70d854d50ae5d3cd0c9d4f19aeab6b4d09920e1436d8bdc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libini_config-1.3.1-43.fc31.aarch64.rpm" + }, + "sha256:32cc0c295cd013db597cd31868736be3708edb25ab1952fdd0ed879ec5e8d191": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libsemanage-2.9-3.fc31.aarch64.rpm" + }, + "sha256:32cc578c8da626a8c1a5316a59d482967a32547be6c077f73fb90e11fb0f1e6a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pyserial-3.4-3.fc31.noarch.rpm" + }, + "sha256:32d56c08f75c7626f1a0efd7aa05ca2ea3649d55445b5ac42a2f7f10fad8b46b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pyrsistent-0.15.4-1.fc31.aarch64.rpm" + }, + "sha256:3308454f1353d5aced0a9574bc969ae272923ef1faa425bd9080de6e56e1bcbb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmaxminddb-1.2.0-8.fc31.aarch64.rpm" + }, + "sha256:332ef2695e27190536747f53bab03ba5df0ca903564f6071623d99fa524d6d2f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mokutil-0.3.0-11.fc30.aarch64.rpm" + }, + "sha256:339895e6b901ff4c81966893ec7da9848da3acea26e5b202033bfb79dfcbb6cb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mpfr-3.1.6-5.fc31.aarch64.rpm" + }, + "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dejavu-fonts-common-2.37-2.fc31.noarch.rpm" + }, + "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm" + }, + "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm" + }, + "sha256:36ce07aa1f90dfdf5ae9824acff24fc3aafe5633b07a022732ca06258e0255b6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsemanage-2.9-3.fc31.aarch64.rpm" + }, + "sha256:3975c15d461cebe50d1f179fb86d288c18f643c32f179bbab13425596ab64001": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/keyutils-libs-1.6-3.fc31.aarch64.rpm" + }, + "sha256:3976706367650c755852d995bbe8c4e6bbd13b6e8e0148b7beddb4aba3679d8a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.aarch64.rpm" + }, + "sha256:3a7d7619061a4adb275ef4b41d993375ad7863863741624186add801800e524f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-1.12.16-3.fc31.aarch64.rpm" + }, + "sha256:3ad68b7569e311a1ca7da4da7b42021a7acb001ab4b2cc6e63b3ba0f87cbd55c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/harfbuzz-2.6.1-2.fc31.aarch64.rpm" + }, + "sha256:3b16753c7590bc968a693e97ce9d318d58e1483fd2999a874becd95abc9d35ff": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gcr-3.33.4-1.fc31.aarch64.rpm" + }, + "sha256:3d5e22e2c2d20d409cc9a878a88dc088d6f02c81652eb0957f95d1abb185f7b7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kernel-modules-5.3.7-301.fc31.aarch64.rpm" + }, + "sha256:3e6b2cfce9c4a62f7cde13bb6ae135d5f6f0d6cb179ab3dbd61ba1533477f257": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/ipcalc-0.2.5-3.fc31.aarch64.rpm" + }, + "sha256:3fb9cec5d598a549e97041993399d49c5943821b1f3441881cf15cb26f38e437": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libkcapi-1.1.5-1.fc31.aarch64.rpm" + }, + "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-release-31-1.noarch.rpm" + }, + "sha256:424e1777ae71117d20055ffa5f0ed2ead59a8076528450cf7536e18c70624bd8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssh-8.0p1-8.fc31.1.aarch64.rpm" + }, + "sha256:4290088d905017724f6c909cb1b3193055a6aff62cd20e39ea196694f90753c8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gpgme-1.13.1-3.fc31.aarch64.rpm" + }, + "sha256:42945876fb8932bad3e50b50349af4bdabe713d7be1c8efc1b0f7b042e556aa5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/tss2-1331-2.fc31.aarch64.rpm" + }, + "sha256:429cf175b6c3b2bedcabf3391ad3166fe6e62259877f309e57500d2c7f1f1882": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmount-2.34-3.fc31.aarch64.rpm" + }, + "sha256:42a4e01c47e28b71cafb658a5993b7f4b7692ac6b916878d580fecab7ae9d16c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.aarch64.rpm" + }, + "sha256:42ae595f75734daaed3430e1117d3cb05bd9a18108506bb9600125693d3d1688": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-langpack-en-2.30-5.fc31.aarch64.rpm" + }, + "sha256:436c2f09d2de629da293ab82af47b7697f4a8c151127cbd993d0e8605a4f423c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.aarch64.rpm" + }, + "sha256:44a92faf198bf015f5e94cf42ae615215fe0a6c0697b1f6c32d205bd450e7ce4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pcre-8.43-2.fc31.1.aarch64.rpm" + }, + "sha256:4549e51322d0b10016f1daa8dedc807fddf7d2d4e77719baa696de15b88821bb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/jbigkit-libs-2.1-17.fc31.aarch64.rpm" + }, + "sha256:46acc45e148eea376c3aa8e83a4d3bf1cf66fa35ccc670f592017428ce75ca77": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.aarch64.rpm" + }, + "sha256:46b0c36e90fd16371444eb5376fc01232b6e64073e42ed1f141344a9aadbe568": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXcursor-1.1.15-6.fc31.aarch64.rpm" + }, + "sha256:47383173cbb135c2590998a4e82c6f9d40a516450d2fbd1e169ace92337b7fd5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-markupsafe-1.1.1-2.fc31.aarch64.rpm" + }, + "sha256:477474e74c5f30884f0a4571445ecf987b521f61139fc0ba7d516e075f47e7ce": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/v/vim-minimal-8.1.2102-1.fc31.aarch64.rpm" + }, + "sha256:48ee663f069c5019c842f316216ef3bf8dfcbbec479c98d1f2b24749c22e57f3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtalloc-2.3.0-1.fc31.aarch64.rpm" + }, + "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm" + }, + "sha256:4bb03b2162523fa694e0e44f46b04263ff0f5dab22c3e93124ec9b5650af2002": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/deltarpm-3.6.2-2.fc31.aarch64.rpm" + }, + "sha256:4c55460197fe24d0a105e3071824a933069e0b655910fd7ee7335e2396de15dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXft-2.3.3-2.fc31.aarch64.rpm" + }, + "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm" + }, + "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm" + }, + "sha256:4cca3f986ddbd38cfbfb6d1c8d336a1aaed78f7da1f38356ce1e034ba35ec492": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-attrs-19.1.0-2.fc31.noarch.rpm" + }, + "sha256:4d4853ac550a0cfc5b3bcbcb7f12c81461393a6aa0e96a23648985f8a7f2e8e2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/os-prober-1.77-3.fc31.aarch64.rpm" + }, + "sha256:4de89d25d09c57b09a51ab93fdf84ade211e835c16d3ba6e4e261dcc0c4e50a1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gzip-1.10-1.fc31.aarch64.rpm" + }, + "sha256:4e365f48d5c85b82f71e8d000d00cdf7ed3c23cd94c31fbf3543572413541c3d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcap-ng-0.7.9-8.fc31.aarch64.rpm" + }, + "sha256:4f37b1e322e3001b076e0128541cc82c180d7054b1c0b7200f46fda4d654cd71": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/librepo-1.10.5-1.fc31.aarch64.rpm" + }, + "sha256:4fe97b617adfa7c0f97ba5b2b6e1c0d2e2b15c54ba8db66fc389cacc0f1b2b60": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libuser-0.62-21.fc31.aarch64.rpm" + }, + "sha256:500d0a1b49962ec79ca00224528d6e599d3845eb60b8b13a678d03edfaa755ec": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXfixes-5.0.3-10.fc31.aarch64.rpm" + }, + "sha256:504971d079493a49afb8fb7f067f5dfcc59f3e007afcc63734c15fe1066e4b4d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-broker-21-6.fc31.aarch64.rpm" + }, + "sha256:504b334756e12eefb42d44e53da61fb4321b860e3b5f380b5c21c5c3784a8c75": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/net-tools-2.0-0.55.20160912git.fc31.aarch64.rpm" + }, + "sha256:513e24bc56f483b171664ea4dec51cc0cce1f9cc8f4939cde8a65ea976ed952d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-rpm-4.15.0-6.fc31.aarch64.rpm" + }, + "sha256:51f15beba5e5bfc6ff646741b3fbaa3a484ebb40fd8c6c59b8f1f6346dd93e93": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libssh-0.9.0-6.fc31.aarch64.rpm" + }, + "sha256:54c024db70df7966590050dfc5dcc1315174e10c3a57e118ea10178238d70889": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-1.1.1d-2.fc31.aarch64.rpm" + }, + "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm" + }, + "sha256:563f82b7c56043ed5a5ff55dcc643bcc5ac2a1e9ae940481f1c21595a83ba60a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/efi-filesystem-4-3.fc31.noarch.rpm" + }, + "sha256:566a389a620f634ab341a9a39cffdb1c607b4682224cf3d5ac530b6c57c78d0f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcap-2.26-6.fc31.aarch64.rpm" + }, + "sha256:56f3d59b74bf8ceafea695d10fb7ad4672ec93f824ef9b0508c7bcdedeffb101": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnghttp2-1.39.2-1.fc31.aarch64.rpm" + }, + "sha256:5745966147d1651d663d9e7d37a740ebbb4daee49b5cb7a2e61375ea6b37404e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/expat-2.2.8-1.fc31.aarch64.rpm" + }, + "sha256:575640462a8c2d0687ea225cc7b6bbf7aa0814e311619ddf6cd16e1bc22f9513": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libksba-1.3.5-10.fc31.aarch64.rpm" + }, + "sha256:57a9aff6b8d5ecdb66015e4dfcec0a171ae18751e1d5f9a339361cc45b9a8e2f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.aarch64.rpm" + }, + "sha256:57bb6739fb8635dfe5300d0e361b99caedce2fb7142db37394734e13d4fa48f8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxcrypt-compat-4.4.10-1.fc31.aarch64.rpm" + }, + "sha256:57bd1ce5d776daca117795bc8e3852f1d29a6fc3fc1edd21729d161de2d7798d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtiff-4.0.10-6.fc31.aarch64.rpm" + }, + "sha256:58a44f9472918a511d3eee0b3f08926dab2ebf4994584403bd196e6c92a06f5a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xz-5.2.4-6.fc31.aarch64.rpm" + }, + "sha256:58c8a3d4ac7c8c318b5596b192dbd0350a1122983b69bfc1cb5eb3ecec5b7cf6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXext-1.3.4-2.fc31.aarch64.rpm" + }, + "sha256:59f289c6f3b0180ae3eddaa974e2f972bf15c48135a2abed9eb2f72dfdae1be4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXau-1.0.9-2.fc31.aarch64.rpm" + }, + "sha256:5a32c492b921e9287422006f255833605b328f3efd071609673be161bb4e7f04": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libstdc++-9.2.1-1.fc31.aarch64.rpm" + }, + "sha256:5a7e957102a23c9924398fe45f5cdec66edcd10adcad7130d6ebf02c2706ad49": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-policycoreutils-2.9-5.fc31.noarch.rpm" + }, + "sha256:5b75073853ff34026cf180d7466314783a7a81defaa43e6b7416a38d9f19230b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libepoxy-1.5.3-4.fc31.aarch64.rpm" + }, + "sha256:5ba547e1c2c515b3ca091e04c0a6b15b297e25b567a6613a07bd2bee41f39684": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pango-1.44.6-1.fc31.aarch64.rpm" + }, + "sha256:5d87d829a1d939c520b25f1c790cd1f3bd6c8b769f4f21303ec5e16a3b509445": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sed-4.5-4.fc31.aarch64.rpm" + }, + "sha256:5e2a37ee7e1147a446be67d63b1be55f2e82c0ae0a84dd1afc6a3fec64e62804": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libblkid-2.34-3.fc31.aarch64.rpm" + }, + "sha256:5ef4f8487a78a43f7502c055ac77c047ce159da5641e5b61c2669395ae1efe62": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdb-utils-5.3.28-38.fc31.aarch64.rpm" + }, + "sha256:5f2bdb8f9a18257ee80a243e1be96e3ef6fa660e37fdf7b4443d8e8f7abf86ef": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.aarch64.rpm" + }, + "sha256:608a967cbdbad6b7320060e986bf8f8e7f6b61bff5ae6571006397b46a60771c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libbasicobjects-0.1.1-43.fc31.aarch64.rpm" + }, + "sha256:611b0995f8475747341db33373ec0178afcb724183aada71b5d3a2c437d19527": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dhcp-client-4.4.1-15.fc31.aarch64.rpm" + }, + "sha256:618e9a7e3f1f8191beee70d3ad1c8754870887d251480e7e6dd1f3de2d8226d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.aarch64.rpm" + }, + "sha256:63ff108f557096a9724053c37e37d3c2af1a1ec0b33124480b3742ff3da46292": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-decorator-4.4.0-2.fc31.noarch.rpm" + }, + "sha256:64206147fbbabe1e050f17442a2a3d1458b27beea0d8f3ff9e258a2842dd7a01": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/q/qemu-img-4.1.0-2.fc31.aarch64.rpm" + }, + "sha256:64b0063f6b3a42b712c0ee622328e36ddf94a15da547e3c8da3a4191e0941c92": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libassuan-2.5.3-2.fc31.aarch64.rpm" + }, + "sha256:6728ee255cb8c80b85f6d610bfd795025939a77d2591ad61fe1c4f9d657c386e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/trousers-lib-0.3.13-13.fc31.aarch64.rpm" + }, + "sha256:67bbf2a262929b1b4c2fb9532c471da5ab2c0f642b0df770cf947c0131a9e1ad": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libselinux-2.9-5.fc31.aarch64.rpm" + }, + "sha256:682af90a049fa78429d5ebd194700609f762e59ceb6c4ca28b17e7f4fd1683aa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-prettytable-0.7.2-18.fc31.noarch.rpm" + }, + "sha256:69f2c758068234b1abc39ffaf94c8825ae4baa9810cc54e5d49a5c891fa98435": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libkcapi-hmaccalc-1.1.5-1.fc31.aarch64.rpm" + }, + "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm" + }, + "sha256:6b11c1e14d4a02edf8beee776f9f896729bd0f28c66cb4c1d2bd021cdffc6aa0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gtk3-3.24.12-3.fc31.aarch64.rpm" + }, + "sha256:6b2e3b36c2a3e988f40548688b32ef3ce2e4c7906127215c82736189684a95a6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgomp-9.2.1-1.fc31.aarch64.rpm" + }, + "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm" + }, + "sha256:6bc6909c53c0eb2bad7640b3fb79da5cacf5fd8951dee08347b8d18df1b004f8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdnf-0.35.3-6.fc31.aarch64.rpm" + }, + "sha256:6c6f1152899318bdc0500cfb0b0cdbbc19ba0e017b5888ece1358250caa2629f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pytz-2019.2-1.fc31.noarch.rpm" + }, + "sha256:6ce37675749741e4ea05e934aa5b7376d596cc117bd317199d0a15e2236aa058": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-plugin-selinux-4.15.0-6.fc31.aarch64.rpm" + }, + "sha256:6d4c3ae013d07e50d085b3419dfd41ac79ba11ada62d8c4570d21764ef6f11ec": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.aarch64.rpm" + }, + "sha256:6e76674266f1e136186e3f005ddbf13791b1fea78cd30e8501f3dd1b209fa9f2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.aarch64.rpm" + }, + "sha256:6e78ce3d460b7e1377f487fed5563999fb44d310c441798a4d23d34960e23d45": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.aarch64.rpm" + }, + "sha256:6ed7f318c5e93b59254d7b7652131f33db713eeb61f52413f21e533069ed24bf": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pycparser-2.14-20.fc31.noarch.rpm" + }, + "sha256:6f7bd7a58d5aed77bbab94aa38edcbc4cac924d72ab6c72ce718f24b6528e1a5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdhash-0.5.0-43.fc31.aarch64.rpm" + }, + "sha256:700acef9fc8051726700645696fd67b0fc3b7fec08290ef9c2964fe7a9d3e8cd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-audit-3.0-0.12.20190507gitf58ec40.fc31.aarch64.rpm" + }, + "sha256:7027d2c6a004469720e3c64eb7fcb2ace1fffd61ec4380afbf875d59a3876f3a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libuuid-2.34-3.fc31.aarch64.rpm" + }, + "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm" + }, + "sha256:7102de1c840d5b915a40fde5c408f182d677ecdd5126dedf033ebb63b5419607": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grep-3.3-3.fc31.aarch64.rpm" + }, + "sha256:71ec6fd79756af905e474553f4ca7ae6985e32615df0ee2f2f487c8496e7160f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/avahi-libs-0.7-20.fc31.aarch64.rpm" + }, + "sha256:7292bf1d13ef336ef411ef695f87c7c7ecd21a13e05c86cc475930ca61117503": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-libs-4.15.0-6.fc31.aarch64.rpm" + }, + "sha256:72bc6a2b459ee27dcd7c213d3aab5a993fc90fcffba2ef02fab7ae3857d379f7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/freetype-2.10.0-3.fc31.aarch64.rpm" + }, + "sha256:73a7249de97f0ad66bc1a867ac5b5d08b741ab152d4dd7ce45cc231d64126b58": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-asn1crypto-0.24.0-7.fc31.noarch.rpm" + }, + "sha256:7487afe052c79100e906a4d2cb2ee1043410ca10a8e60a65d95776f63a513595": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.aarch64.rpm" + }, + "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dhcp-common-4.4.1-15.fc31.noarch.rpm" + }, + "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/y/yum-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:7623bcecb8340ed57e1aa2951b13a1c5b1dfefa80eb226f269294df29cb40c08": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libseccomp-2.4.1-1.fc31.aarch64.rpm" + }, + "sha256:7637132d543741e8c5b581523ca5db24adc6eb6d78530944881c360da694cf15": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-efi-aa64-2.02-100.fc31.aarch64.rpm" + }, + "sha256:763bbd8d0e3e80b56041273dd412f0c3708c90cd0affd929d474ae61f7c3798c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iptables-1.8.3-5.fc31.aarch64.rpm" + }, + "sha256:768cc2c561bd6476df45fbd9280bbaeb87d2addcd0c51601d2226a590d7dc872": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsmartcols-2.34-3.fc31.aarch64.rpm" + }, + "sha256:77ff28552aba96ce4b80d51a9c390ef4958afad18ede879bf31022f2509e2d90": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpng-1.6.37-2.fc31.aarch64.rpm" + }, + "sha256:78b600621e00f4a0acc8f58de056ae9393ce4e1cded56837b4e557c1bc84b06b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-urllib3-1.25.3-4.fc31.noarch.rpm" + }, + "sha256:798376bc628acd54407d945702dce73ab90633919f88fe9b7ecde3f38ebc2fe9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cpio-2.12-12.fc31.aarch64.rpm" + }, + "sha256:79db5a94baa6acad360b52fdf6d49cf91d7b6290e0d55f457b2820937d2739f4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/efivar-libs-37-1.fc30.aarch64.rpm" + }, + "sha256:7a5aadb5da769b563cf1e548d8cabd26c00720a67df7e4a445a5a9ae5b0891b8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.aarch64.rpm" + }, + "sha256:7ae36bfe222068561cf0259400b54e210ad628aaa66dd4b87e20a2291996c71d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dracut-049-27.git20181204.fc31.1.aarch64.rpm" + }, + "sha256:7b01a3bf09861003bd9524e9d460ed68b8d2de4233a09f7af731cb07f75ef913": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iputils-20190515-3.fc31.aarch64.rpm" + }, + "sha256:7bd78cde4202401947dea928274579074bc78fdae096057e788c1b6a86a10ecc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/trousers-0.3.13-13.fc31.aarch64.rpm" + }, + "sha256:7c66a9a33e131200e13a638613ec054a94be901399424df27a0b4f94532ee36d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxml2-2.9.9-3.fc31.aarch64.rpm" + }, + "sha256:7d0ec23fb8dab882db8b7ec9a9cbb2728d6df2af5c02ee06cc6fa357f210ff09": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/krb5-libs-1.17-45.fc31.aarch64.rpm" + }, + "sha256:7f23849dcd356019c4e83058e9e49d544300ad7b9a6f6a7528831e393ca1197c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fuse-libs-2.9.9-8.fc31.aarch64.rpm" + }, + "sha256:80434d5f64abdd521330153fc0c983c5923a833ab59f57ec3bc3a8cf1d748c8c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libyaml-0.2.2-2.fc31.aarch64.rpm" + }, + "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/langpacks-core-en-2.0-7.fc31.noarch.rpm" + }, + "sha256:81100039c817e2f3703fb365c63d6d891f3f977dd9e670c3c9b12662de3c255b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.aarch64.rpm" + }, + "sha256:81169dd168c02aed3b1e57e5af16ec3dbdfb74c15373ee40e9eec5aac60a3d25": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.aarch64.rpm" + }, + "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-common-2.02-100.fc31.noarch.rpm" + }, + "sha256:816fe17af41a66dd718eb247273be824b75f53fb539455b58b892528ca12cde5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpsl-0.21.0-2.fc31.aarch64.rpm" + }, + "sha256:81f5b3786ab1b634016c0c066379dda739386b4b1d639111b4575748e27caa56": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.aarch64.rpm" + }, + "sha256:8221111dc9a9aa5c68805f153c3fbe5314c8a0f335af29685733b958253dd278": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-idna-2.8-2.fc31.noarch.rpm" + }, + "sha256:82bc08ef5d8049d3d07a5eb00f61d3f94d7577ef814f6791352f75835bff477a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.aarch64.rpm" + }, + "sha256:82cc8c43bfe0e731ec78e31c8af6250ec1f13989978105a1b38d518470cf5bde": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsolv-0.7.5-3.fc31.aarch64.rpm" + }, + "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm" + }, + "sha256:84365601f93db7fda27e4d89826d4893830572e98df35275abdf15659cfe3fc5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-3.7.4-5.fc31.aarch64.rpm" + }, + "sha256:84fa6157b3e986b9ce67cc03bfed4e2b96fa7d075df70e038fbcd2b486737d35": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/man-db-2.8.4-5.fc31.aarch64.rpm" + }, + "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm" + }, + "sha256:855131926b9a3764835de3e7171b9ce579847ce161f3ba8406a5b6fdfa781f55": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/parted-3.2.153-1.fc31.aarch64.rpm" + }, + "sha256:859b03ef657a7c682ff7f341145a7c2ba9025fd5430f36ecb020eeafc55bba2d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnftnl-1.1.3-2.fc31.aarch64.rpm" + }, + "sha256:88831a57114969801a557d700451a70337f944b868a3d792d47e6e9e91961f3c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/audit-3.0-0.12.20190507gitf58ec40.fc31.aarch64.rpm" + }, + "sha256:8891f85ba3caf6de4b6b234c6aa7a98d347228937a378d04da7af56556799bd1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/ipset-7.3-1.fc31.aarch64.rpm" + }, + "sha256:898a918a7adfefc3ce13d10b30b2ec7ccada96155afa15ee3f4e589b3f1baa38": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcurl-7.66.0-1.fc31.aarch64.rpm" + }, + "sha256:89a35174435a790c0fbf3bc4306d51c867ecce66fb65bae0e7706a9f8f9a19b3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/groff-base-1.22.3-20.fc31.aarch64.rpm" + }, + "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:8c4b392a5e1ed79b7a5b302d8fb14d0470b3a6306a7b36aee275acf0daa61537": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fribidi-1.0.5-4.fc31.aarch64.rpm" + }, + "sha256:8d00fa6cdfcc955dc4e14d0f8b6ba6217d2dd0334ea0e1aa44694c9e0ad0b06d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rest-0.8.1-6.fc31.aarch64.rpm" + }, + "sha256:8d17464a13f79b54c8dfe76d716a42d6c875bce408e29344c1ecf916957a649e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcroco-0.6.13-2.fc31.aarch64.rpm" + }, + "sha256:8d21bbf2063bb50cf3d12281731fbd8b26dece5f154d7a50f0952695fea6751f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.aarch64.rpm" + }, + "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm" + }, + "sha256:8dbce1e34a19be338f49b792874abc861fd64acc5653f7f5cd523d5e5865897e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/brotli-1.0.7-6.fc31.aarch64.rpm" + }, + "sha256:8e10cf2b0645e342b001338a4463c5a02a8a302c25affba37da700a987e2c064": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnutls-3.6.10-1.fc31.aarch64.rpm" + }, + "sha256:8fd19268d460d7f49f3dd96644a2b8a3076a7a7ccbe3e35e27eeafc6ab8d9c95": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-libs-1.12.16-3.fc31.aarch64.rpm" + }, + "sha256:91d628d3e4a82976361ecb306d4f0049aa65c811fdd5051b3f8423b75e4a10e9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtdb-1.4.2-1.fc31.aarch64.rpm" + }, + "sha256:920d2d8df80fb92e358f4925bbd2891977c98e0b9d2f69b44f1e74bec26d6a1e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cups-libs-2.2.12-2.fc31.aarch64.rpm" + }, + "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/linux-firmware-whence-20190923-102.fc31.noarch.rpm" + }, + "sha256:9404d90bbb474b30b80c90719df01d784b925127e9710f12c44c72d14c2708fc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gcr-base-3.33.4-1.fc31.aarch64.rpm" + }, + "sha256:974bdde5f821c071bcbe0de191677981685cb8290952be75a7ab15747988a99e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/policycoreutils-2.9-5.fc31.aarch64.rpm" + }, + "sha256:98d811216e2e0e4ad49925489824210fc3e9b57bb09eefcd4047886375d34f57": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcom_err-1.45.3-1.fc31.aarch64.rpm" + }, + "sha256:995ee9636461072248d5c6792d3852fb1ab277a622b18eb7d3c231133446dd7d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.aarch64.rpm" + }, + "sha256:99a6e2861b7eb51684d1b83901a7e54caf649b711556a660d93bfef114eab72c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libattr-2.4.48-7.fc31.aarch64.rpm" + }, + "sha256:99c0e924fa7eb70fc9301b692d4ba72ec480af840498b8251f68a419317bd108": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_sudo-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:99e8930364200470ee5bd065dccb7c4c1caa4863c6f8975740643fe9d2485c18": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.aarch64.rpm" + }, + "sha256:9ac1ef0ef80d7ff65903120f8b2a5a2a5723dce7c9c131e17cea3572cb81d0f4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXinerama-1.1.4-4.fc31.aarch64.rpm" + }, + "sha256:9bf695c87aa5acc7695251a4c75c576375c45c5b043af00a7ddf503223030309": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kernel-core-5.3.7-301.fc31.aarch64.rpm" + }, + "sha256:9c039f6f6e5385344ea56a6490a472b0f475d8d7612b422191d2152b8e1fc55a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/curl-7.66.0-1.fc31.aarch64.rpm" + }, + "sha256:9c08d246ce73d8741777f290e7110ff9dae97a15e09f3469317ed7c8e9fb64ce": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/atk-2.34.1-1.fc31.aarch64.rpm" + }, + "sha256:9c8771c8c5eb38351dd30f994133bc9149ec93813d1a7c2cd2dd8f7dc7431d49": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/nettle-3.5.1-3.fc31.aarch64.rpm" + }, + "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-repos-31-1.noarch.rpm" + }, + "sha256:9cc3e6534ae34343e7e4d056d46b9551da7d0a82c7bad378c3626d4b70d1bf62": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cloud-init-17.1-11.fc31.noarch.rpm" + }, + "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dateutil-2.8.0-3.fc31.noarch.rpm" + }, + "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm" + }, + "sha256:9ed0b44834b6a637c70aa00ab243aecb534f9aea461e1388652ab039898239c8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xz-libs-5.2.4-6.fc31.aarch64.rpm" + }, + "sha256:9ff53c6f07da3adeaa20da76c1c78b886710b460db7a316415f8bc9182096fb0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/procps-ng-3.3.15-6.fc31.aarch64.rpm" + }, + "sha256:9ffb9a376d1df3d3d394ec2f8533f939547d8ccd634f1f77db52970630215d71": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cairo-1.16.0-6.fc31.aarch64.rpm" + }, + "sha256:a00e85fb7902d8869492e32816c7834830682745eeab1efba264bdd3185f479d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/diffutils-3.7-3.fc31.aarch64.rpm" + }, + "sha256:a084b365795c7262fa09b2fc590dfbabbbf30cb9c1c7f9b5274eae4c5d761482": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lua-libs-5.3.5-6.fc31.aarch64.rpm" + }, + "sha256:a108fbc1ba9886604483ec05ef2150c961adb0906db5f9ea46c239bfcdf06b55": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/filesystem-3.12-2.fc31.aarch64.rpm" + }, + "sha256:a2f6ae2742a2aac3f5bb5f1ad5cfa4d9b8fdf7cfd01033246027db7064abaa1f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxcb-1.13.1-3.fc31.aarch64.rpm" + }, + "sha256:a314b2a8ed8a9e7e80aedfb1f76c75910d0da9549d072c424c2dddbe63a09874": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dbus-1.2.8-6.fc31.aarch64.rpm" + }, + "sha256:a349c40034b5a181cab1bd409384ddb901c274e110b16721d434f5bf42e92c0f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-firewall-0.7.2-1.fc31.noarch.rpm" + }, + "sha256:a39fb89e06572d188309dc4daf1d23e21be190e59f9ef8ff3c3ccceaefe505da": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libzstd-1.4.2-1.fc31.aarch64.rpm" + }, + "sha256:a3be2e9e42d68f5e5e58f1dd86d5b6e4fc1ff91e98f44d26221d6bda38c9f372": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/hostname-3.20-9.fc31.aarch64.rpm" + }, + "sha256:a40b4873535c2b0b826063e5248981d1ce0d04ef5ec6d9c21facc07ce2446b40": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpipeline-1.5.1-3.fc31.aarch64.rpm" + }, + "sha256:a436dca481707ca10a0c5bb189d9a25ff76c4f66f1d32b0847dc6d13ba46c17a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-udev-243-4.gitef67743.fc31.aarch64.rpm" + }, + "sha256:a4f7846fb262ad61885f64b8a354f9303fe5ce129378e4781eefa0bffdef828e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xfsprogs-5.1.0-2.fc31.aarch64.rpm" + }, + "sha256:a516dfa62a327d440fe38b93af81dbecb112fe45fff0f227583c451631479122": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/acl-2.2.53-4.fc31.aarch64.rpm" + }, + "sha256:a5fa076ed2c83974cacf4ce386bfdc576ce532fba4f8645dda5c2b67efc5d501": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmodman-2.0.1-20.fc31.aarch64.rpm" + }, + "sha256:a61e3fed8d1c860bf09b5ec5586e30b88b1b1dea157cd371def9fcf72e313a3d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcollection-0.7.0-43.fc31.aarch64.rpm" + }, + "sha256:a63ae4aa727a4b75b602a67f1e42946e39dc124e9f1aeb3e795af40ad4e15cbf": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcomps-0.1.11-3.fc31.aarch64.rpm" + }, + "sha256:a6caaef9bed1bd17292e1fdde4efee9730f8cff5826a9cb6c952e6f3cd052243": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.aarch64.rpm" + }, + "sha256:a7f5877c9ebfb44347765c7deb266e53fdd62403ccc0a7ff17fdb101bc28caff": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.aarch64.rpm" + }, + "sha256:a96e76f00865249f70a3f2ef293946e9786150faa83e37185e61592290817cb4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libacl-2.2.53-4.fc31.aarch64.rpm" + }, + "sha256:a9f81157c1f977adf96403fe534e2fecc9f3a82a58c5b53fd58aad9954873790": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/nftables-0.9.1-3.fc31.aarch64.rpm" + }, + "sha256:aa3658efc21bcc6d79344eeeaf20285407f6f3b90d905a66a37a8cfc835b2a61": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.aarch64.rpm" + }, + "sha256:ab35a2d7f21aac1f33f9521607789e1c303fb63e4ea0681e9f724f86a1cc15c5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/firewalld-0.7.2-1.fc31.noarch.rpm" + }, + "sha256:abf022d05aa55e7aa8d0736b899d86613d30a7e1751b04666920f367d4311a1a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-2.30-5.fc31.aarch64.rpm" + }, + "sha256:ac3230db1dfd77c5a90b1eda2c002e75f6abe1aa2d4416aea12515c956211e4f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gobject-introspection-1.62.0-1.fc31.aarch64.rpm" + }, + "sha256:ac7985d2591bc2bd1d90efdb68751a3d7435cf902b3895cb308e830ce48f1f44": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/shim-aa64-15-8.aarch64.rpm" + }, + "sha256:acd149c4bf17a15db75fca1f19e34784a9ed275e19c0721aa78f5eb94797a685": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/u/unbound-libs-1.9.3-1.fc31.aarch64.rpm" + }, + "sha256:ae9a3e144f31b6172d266b984c8385fba94bdcf3002d3182a4118f8d29f5f718": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-4.15.0-6.fc31.aarch64.rpm" + }, + "sha256:aeac986c84b8038eccd191310bb09f3d396f7c05171ac0fb8691182918459c90": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/less-551-2.fc31.aarch64.rpm" + }, + "sha256:af00a0b026235e70f7cb7606166dfcaea0d227a3de70363ff67a644036ed8bfc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-tools-extra-2.02-100.fc31.aarch64.rpm" + }, + "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm" + }, + "sha256:af589a85af85270c027bacb5ccaf88c93378d364a7c1436ee7bca1290cf762f7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libverto-0.3.0-8.fc31.aarch64.rpm" + }, + "sha256:af594688a568ec4db7dae9d60390dce1ab547527bbf2415752f211de3748b97f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-243-4.gitef67743.fc31.aarch64.rpm" + }, + "sha256:b04fecd603225051ca56c6674cb72f12f4de0cc1cbbfda0ab7d0af0e655b2c99": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libthai-0.1.28-3.fc31.aarch64.rpm" + }, + "sha256:b0d153ea83902561a9e60c9c244a497c3b19a9c4e40cf9e8437d0221af0f2ca3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pcre2-10.33-14.fc31.aarch64.rpm" + }, + "sha256:b1094a9a9725546315d6eac7f792d5875a5f0c950cd84e43fc2fbb3e639ee43e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-slip-0.6.4-16.fc31.noarch.rpm" + }, + "sha256:b25f063f82484e4fa42d1ad31a2cf23e882a99dc1ccb191b24e14a6a789d87a0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.aarch64.rpm" + }, + "sha256:b37d963f89a7e0d466e1317da6cd2c20b3ce3ec9789e1027c16176734f88c4fc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/NetworkManager-1.20.4-1.fc31.aarch64.rpm" + }, + "sha256:b3d8740cee57c5025ef88e9d71df141a6600fdf26215969acae393a2b052892d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.aarch64.rpm" + }, + "sha256:b6498a7a8056483e1d42362b1fb27bd6c54ed7cc7bd180cae20d64a13ae4c88c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-unbound-1.9.3-1.fc31.aarch64.rpm" + }, + "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm" + }, + "sha256:b9ad5c82b3b83871269ee705ee12896efd1e3485b0d2005c9cff2a100100cd34": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gmp-6.1.2-10.fc31.aarch64.rpm" + }, + "sha256:b9b609d17e9274c1551ac6ebab4b53f6e4a5ae9253db5465c65fdb8c919a09dd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libffi-3.1-23.fc31.aarch64.rpm" + }, + "sha256:bb305f3ddc74c4c30ae838a2bbff3cd325eea8427622c7f82e4d06a564bace6f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/coreutils-common-8.31-4.fc31.aarch64.rpm" + }, + "sha256:bd2e7c9e3df976723ade08f16667b31044b678e62ee29e024ad193af6d9a28e1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-slip-dbus-0.6.4-16.fc31.noarch.rpm" + }, + "sha256:be8bf30729c71aabe30f2c4cf8e5c43ce3cdf892c218fadf53c0af29a76fd6b3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgcc-9.2.1-1.fc31.aarch64.rpm" + }, + "sha256:bf92fc95c282da9c76018679d9180fb6c98aaf864f66bbef630941040579f92b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.aarch64.rpm" + }, + "sha256:c0287bc7c1f54bcd19c43904f9a5c7c0cc4c82eae2c455071f6d7ea50714668f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbxtool-8-10.fc31.aarch64.rpm" + }, + "sha256:c05d42fba4fc1ebc2df9ee49f971c744937d8b307626c90b3cf79bf91619863a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/shared-mime-info-1.14-1.fc31.aarch64.rpm" + }, + "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-distro-1.4.0-2.fc31.noarch.rpm" + }, + "sha256:c1590c5cdfc7aad868c75c54c11a2c7d692001f758ead33aa10f9838955148c4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsoup-2.68.2-1.fc31.aarch64.rpm" + }, + "sha256:c1893a7c51ebb0371b87e2179d6e0e5d0fbb71acb4234cf4adc293af11c75578": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.aarch64.rpm" + }, + "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/selinux-policy-targeted-3.14.4-37.fc31.noarch.rpm" + }, + "sha256:c36dd24858c4e8d207eb0f87af16e4c599a16bb981416d47db467b70a841fe08": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dosfstools-4.1-9.fc31.aarch64.rpm" + }, + "sha256:c45162d6aeab69ce8f58353c88e7e068c59f36921989aa49ac23738f7c9cea82": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-gobject-base-3.34.0-3.fc31.aarch64.rpm" + }, + "sha256:c599ffa97fde329ff872bd6db99e8c218601df6549302f89ff747d34ca24042c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libproxy-0.4.15-14.fc31.aarch64.rpm" + }, + "sha256:c68bed5b576d7baa67a59c726d2340f7c0df7e9b93f90b3a22d3f62e9f99456a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kmod-libs-26-4.fc31.aarch64.rpm" + }, + "sha256:c6de19d0d4b8f67957ca6122462090895034495852814f36396bc134905f5f5e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libss-1.45.3-1.fc31.aarch64.rpm" + }, + "sha256:c6ffcbd829ea30ef40fa61095cef03f2b6eafa3228187a478d6d027911f12e2f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libidn2-2.2.0-2.fc31.aarch64.rpm" + }, + "sha256:c80fbc5228457b9b1978b098f47d2a66ca5636526965847078edb6f1c302e392": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libusbx-1.0.22-4.fc31.aarch64.rpm" + }, + "sha256:c84f89f65e2a691d7fcbc7021c3c5d796e0f39483e3fe95e83579c630575b78a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glib-networking-2.62.1-1.fc31.aarch64.rpm" + }, + "sha256:c8fc5b492af902894b927e79314b52bbdd8e45b2d2018abd8113d8e1807adeca": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gettext-libs-0.20.1-2.fc31.aarch64.rpm" + }, + "sha256:c935f74584d7289ca58d1b23cbdacd38450d351dbc3dcd0bc713723c4d50a545": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.aarch64.rpm" + }, + "sha256:c958419128c1330b50c741113394b147da1ccda055ab1ee19fabc199f68971ea": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.aarch64.rpm" + }, + "sha256:cb478c89af0caac9a40c32a2b4a48242b16ff9e2e6daa375b2de88e396f524dd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sudo-1.8.28-1.fc31.aarch64.rpm" + }, + "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm" + }, + "sha256:cdc526097cd2fecb75e44ad11a69b10eb7804f310298c064c3b931515d4f3d5c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-configobj-5.0.6-16.fc31.noarch.rpm" + }, + "sha256:cddb050897cd8666090b172711fb7947b3bf844f5a190f8c689fd79a222e1761": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lcms2-2.9-6.fc31.aarch64.rpm" + }, + "sha256:ce421671bfd14a427771eb3c78b060352a61cca889b1bf1b342c328dd521623d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_autofs-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:cf480f0df368b3cc9f36e42d5d573afa93fcb3889614dee172c0ad367785f520": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/polkit-libs-0.116-4.fc31.aarch64.rpm" + }, + "sha256:d01f7e794c3dd3f38de1b69fd360db4b858826eba4e6fd4edc79c8a74774ab00": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.aarch64.rpm" + }, + "sha256:d02489175567be57a48a3edf5deb66d100e99df73a37b26062fea4d6af014cbc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/readline-8.0-3.fc31.aarch64.rpm" + }, + "sha256:d1520137d9cb96cd10a63893b45b4794b120502bdbab0862e001ac2486195aa6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsecret-0.19.1-1.fc31.aarch64.rpm" + }, + "sha256:d1ce6a69f0c2d96a97a04036a5c59deda82b5e1b0843c114f0fb896279ec7bbc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnfsidmap-2.4.1-1.rc1.fc31.aarch64.rpm" + }, + "sha256:d22fbf5e32d176db1414b0854c78f0ea1b5f489a83490ee4e3f67bc5e98905af": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libaio-0.3.111-6.fc31.aarch64.rpm" + }, + "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/geolite2-city-20190806-1.fc31.noarch.rpm" + }, + "sha256:d287bfdcebb9fbb31d5f58cc71311f48a85970d0fd92f5beb0193270c155faac": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmetalink-0.1.3-9.fc31.aarch64.rpm" + }, + "sha256:d2be7b0f17350a8a0f301617cb1d7b024076bc16986abaab94453ec1cee1f1f2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/popt-1.16-18.fc31.aarch64.rpm" + }, + "sha256:d2d3b613de0ecf3ae022e5d5d1576858c91b203af6a52a7a9aa36245f0cdbd05": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libldb-2.0.7-1.fc31.aarch64.rpm" + }, + "sha256:d2f7d49bd565c2fec4ca945ae97ac3b8a607f114d3a7558b90b2caaa5871459b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgcrypt-1.8.5-1.fc31.aarch64.rpm" + }, + "sha256:d35fe17711337362bdf09540523bddbdc16406d0ff7650043a3cdd1cfc222ae8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-cryptography-2.6.1-2.fc31.aarch64.rpm" + }, + "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm" + }, + "sha256:d429648fe5b233a46fdbfc31a283ca4b6be5177ae84f3e7e63fec5f9bebd17d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-gpg-1.13.1-3.fc31.aarch64.rpm" + }, + "sha256:d45b8157ccb1d538f06120150470433ddaa714680e10ffe97bfc5853b5a0321e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/ebtables-legacy-2.0.10-37.fc31.aarch64.rpm" + }, + "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dnf-plugins-core-4.0.9-1.fc31.noarch.rpm" + }, + "sha256:d54f02fc39b3e87253808f665918d26ffe901f1228e25121c908661b47ba266b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pysocks-1.7.0-2.fc31.noarch.rpm" + }, + "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/selinux-policy-3.14.4-37.fc31.noarch.rpm" + }, + "sha256:d6b491f91a567b4245d07d28a0547cb1b8e97a1f814e3f7d76dd685bb6658b64": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iptables-libs-1.8.3-5.fc31.aarch64.rpm" + }, + "sha256:d877864e501fe38a1b0c7e11572e61c5d9eb9857436541f1c2d5ad2f8bd29b83": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libargon2-20171227-3.fc31.aarch64.rpm" + }, + "sha256:d8d28daa56fa4894a767957aa9948cad6d274e2b70d8b10aa69d9356c8a22eff": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openldap-2.4.47-3.fc31.aarch64.rpm" + }, + "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rootfiles-8.1-25.fc31.noarch.rpm" + }, + "sha256:d9641a59b33831e32fa61f3479152d5eac33e0526b32e67ae33f1c1102c69d4b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sssd-common-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:d96bdfbaba63ac6755a20d8a4d954bc5010695d671ba305a54362c1d3c69fc37": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/efibootmgr-16-6.fc31.aarch64.rpm" + }, + "sha256:dc6b772101df9f3029c2cd80a10663663ad877e129c8d724902f5cc9f1785e60": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.aarch64.rpm" + }, + "sha256:dc8a707761f45962518e251f87a5e1d83199fbd1fe1e249f89ed457528c1fba1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/plymouth-0.9.4-10.20191001gita8aad27.fc31.aarch64.rpm" + }, + "sha256:dcc584a55c425c26a62fe579beead8488589c3892c34e8fab95c7fd7ec1cf6c6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/findutils-4.6.0-24.fc31.aarch64.rpm" + }, + "sha256:ddd0635b899826bed59036ba17f8112c35660b32f3d1639266f5e394166a9dbf": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-tools-minimal-2.02-100.fc31.aarch64.rpm" + }, + "sha256:ddd9b320e97d333bb4b7ccbdf70e401693065177a7d9317c6d7d1b69318209f7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnetfilter_conntrack-1.0.7-3.fc31.aarch64.rpm" + }, + "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm" + }, + "sha256:e0408a5020069e7a4585e3bb4d1bba1b8bf0afe481ff63b70e2221e9c5464cad": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kpartx-0.8.0-3.fc31.aarch64.rpm" + }, + "sha256:e0af6b40e51fe0b9f68367355219aa56717888d2a07c10a001cc8667de1a5a2f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/tar-1.32-2.fc31.aarch64.rpm" + }, + "sha256:e17ef6f7d4f1869ff5813d6f8f2983cd6f5cd23d4a666b7ae19154636e911644": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-babel-2.7.0-2.fc31.noarch.rpm" + }, + "sha256:e1deab5e887a199233f9a439d2d20d864d434e9a4ac7fe460f230d368fb3779f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsepol-2.9-2.fc31.aarch64.rpm" + }, + "sha256:e1e5250ea932beac32caf373ae55b4655c50ae8a1bd9d42e3ceac590a13031ef": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgusb-0.3.0-5.fc31.aarch64.rpm" + }, + "sha256:e29356f3ea2554e8be23401a08a941f406d337cf6b38e7ee99926fb9b3f1f541": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.aarch64.rpm" + }, + "sha256:e3046e1e508453e332277ab86ebf67df0106edca2c6e8e54ba2bffb76f9ed4d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-common-2.30-5.fc31.aarch64.rpm" + }, + "sha256:e30906c30d3dea50c62e74bc7aa870eb928af4c6fb474c894f55ef6ba41f5841": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fontconfig-2.13.92-3.fc31.aarch64.rpm" + }, + "sha256:e35e30f6477652a93d3c02ec86faa233884aefb2ff9fcf4058909d9736fb2d15": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxcrypt-4.4.10-1.fc31.aarch64.rpm" + }, + "sha256:e4e6a5e014442aa8d7768555da9d44e6381569e0c44e61d2d2a06d6692748945": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtextstyle-0.20.1-2.fc31.aarch64.rpm" + }, + "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-release-common-31-1.noarch.rpm" + }, + "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kbd-legacy-2.0.4-14.fc31.noarch.rpm" + }, + "sha256:e6a986f10b17ba67e86c417251d855e1eeac0ca1c85c2ee7ae3bfc7d6c966087": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gawk-5.0.1-5.fc31.aarch64.rpm" + }, + "sha256:e76b3b9d14a0016542f61d0ab2981fbf2d779e522d0c36d9095a1cffecbf9272": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/firewalld-filesystem-0.7.2-1.fc31.noarch.rpm" + }, + "sha256:e78343046ae389b1c11d36f8de0b8bfbb9ded7bdc39fb52b3f719a39047bf42a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libselinux-utils-2.9-5.fc31.aarch64.rpm" + }, + "sha256:e7e629e7e89f970660407fb22c8b706c4c9a65a5f43286ddeef1e165b446fcaa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/device-mapper-1.02.163-2.fc31.aarch64.rpm" + }, + "sha256:e88e27b7ac16c753e20f65cd13ed163019ac702c4195eb75d766acd44cb55263": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kmod-26-4.fc31.aarch64.rpm" + }, + "sha256:e8a13bb46e5149142a1e0a359460c1c65b2cbcbff20f2d0c50f9adbad57538a1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libfdisk-2.34-3.fc31.aarch64.rpm" + }, + "sha256:e98119ac7a707287668e7a9a74ef2809ee5f555af04f52775367e428e08dbb33": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jsonpatch-1.21-8.fc31.noarch.rpm" + }, + "sha256:e9c1fa22b0b6d6b7ac782ba60d4c6a2c747bd683f075720a4d82aec45adbd905": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iproute-5.3.0-1.fc31.aarch64.rpm" + }, + "sha256:e9c7f59547a9eec5304db7a312b435592f07f7aee4f3db617e5ddfac0f4d048c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.aarch64.rpm" + }, + "sha256:ea35fa3f5c16e074a59d66ff9037e48ca7c0126444e09daf640b7a37dacd76ad": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/jasper-libs-2.0.14-9.fc31.aarch64.rpm" + }, + "sha256:ea68ed6fc06f142c95e907b619a9696146dff1bba308773df12e412d8277eec0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libutempter-1.1.6-17.fc31.aarch64.rpm" + }, + "sha256:ead6cd0d8e509f07e36456aff75eca8433821813d675382d28fe4e7dbecc48dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmnl-1.0.4-10.fc31.aarch64.rpm" + }, + "sha256:eb1992de281538771ba578a65eabe620dc35aef6c621d8c5351a2ba38ac440f4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pam-1.3.1-18.fc31.aarch64.rpm" + }, + "sha256:eb35167d6095465a58611b80853213af5838f271b75fa1a5e3c051a04a9078a7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.aarch64.rpm" + }, + "sha256:ec305ea347ab987f5a00574bc3eaebaf2412483ed1b79615fdd86ca18ab146bc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.aarch64.rpm" + }, + "sha256:ec48b0cd759656b4c5d8d13dcc81c6fa23914f8e214b4cda1ed08e1896177fe9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXrender-0.9.10-10.fc31.aarch64.rpm" + }, + "sha256:edee134762456246cd8de577597e350b60a04bc43ac4a47622b9a263ddd74cf2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.aarch64.rpm" + }, + "sha256:ee2f71a3a318270e9cc55aa9dde8889f2e664fec681f9fd5719361f8e4a1afac": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iproute-tc-5.3.0-1.fc31.aarch64.rpm" + }, + "sha256:ee3977f4ee783225903f964c60932795d8c11307043e73527b394dec02487047": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pinentry-1.1.0-6.fc31.aarch64.rpm" + }, + "sha256:ee5ed9701778c4cb91af4c2e2ef996b9c178d32b652edf4506394cac72fefb96": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnl3-3.5.0-1.fc31.aarch64.rpm" + }, + "sha256:ee6dbb4914a35ee8a816ecde34d29221e3f4622324f6287c328e8ac22ae572ad": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-chardet-3.0.4-10.fc31.noarch.rpm" + }, + "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm" + }, + "sha256:f0b9a02ed639d2cff7a85262d440c65f2fa2ba318166b45d969a2802f102535b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-cffi-1.12.3-1.fc31.aarch64.rpm" + }, + "sha256:f11d53128f33f9e73dc21c01159a283cc3fcd2e39f2712dbfa930018ae67fb69": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpath_utils-0.2.1-43.fc31.aarch64.rpm" + }, + "sha256:f1419585dbb27e3bf76aab5a5f8fb9580816a7a0e7fc93377b97646a0259a794": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/npth-1.6-3.fc31.aarch64.rpm" + }, + "sha256:f195c83de6568cf550a3b2d70725697196c1a9269cddb9b825f5a887de9d6eed": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/NetworkManager-libnm-1.20.4-1.fc31.aarch64.rpm" + }, + "sha256:f23f467c4099be4cb4dfdc1be13b7a7bb6e8c6da7c21182658a034827b64df39": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/z/zlib-1.2.11-19.fc31.aarch64.rpm" + }, + "sha256:f2471f1b946309f419a2bf1b4b3ad473d53f7ac0ee15b9c2426eb2e6cb4e87c0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnfnetlink-1.0.1-16.fc31.aarch64.rpm" + }, + "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm" + }, + "sha256:f2d11878777b28a284e9a571a6a9cf893a97f0935291b10686eb93a2a3dfdfb8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_nss_idmap-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:f34cde4c2bd6ab93a697d8c350e98f4d70f897f74fee35a06c25eb4b98f46c9a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.aarch64.rpm" + }, + "sha256:f369cbc73e31dbae49565c6acfcc8ce4ea0158d1480121b5c6dcc1d224998a62": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/ipset-libs-7.3-1.fc31.aarch64.rpm" + }, + "sha256:f3d5fd211e3faf1b61be64fd3f1659dd640a873c66747a5cc341f888e4179dea": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glib2-2.62.1-1.fc31.aarch64.rpm" + }, + "sha256:f43fa8496a54ad89eef4f48c3813190b5509a21c873bc1d5fcd0dda80ae2b425": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/file-5.37-3.fc31.aarch64.rpm" + }, + "sha256:f63c88d8b294addf2791a5b291e3ab13750a24fe92fec65c96d365edad767f57": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/file-libs-5.37-3.fc31.aarch64.rpm" + }, + "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm" + }, + "sha256:f6d37f25fa7215b7ae185b12f687d60c4363cfb8e35d591595a9b0f379488fc6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtevent-0.10.1-1.fc31.aarch64.rpm" + }, + "sha256:f74b53f33812f65d12377946d363a773e48cf6bc6c4bb2acec5bb4a048861b88": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.aarch64.rpm" + }, + "sha256:f7954ba55d833c6341ec87b0cf57817084c705673b8b50aff3e3606fcbdcfbb5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXdamage-1.1.4-17.fc31.aarch64.rpm" + }, + "sha256:f85438d6cb268c431f3aed5c678f1632b56d57393a3eb52e31d75bc6462bc88d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dracut-config-generic-049-27.git20181204.fc31.1.aarch64.rpm" + }, + "sha256:f85469c0c19ce86e8fdd0dd5a3e6e5c9b78e3436ae9ce70ba86b2b4a3794f693": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-oauthlib-3.0.2-2.fc31.noarch.rpm" + }, + "sha256:f8e118c35bb5f8ae3dca517ef38c7a38bbdd491011af9e1c4c5c7523f13e6f9c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mkpasswd-5.5.2-1.fc31.aarch64.rpm" + }, + "sha256:f958a85509e118c832458a5f502e5d59695eb3df96ae0bd603203a82d188b2ae": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pyyaml-5.1.2-1.fc31.aarch64.rpm" + }, + "sha256:fabb9a86711308b3dbf146e8f155ab8e857172455e805aab912500bf157368ac": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/plymouth-scripts-0.9.4-10.20191001gita8aad27.fc31.aarch64.rpm" + }, + "sha256:fb2b070b96ed58a31da7889452ce3cdbfb60f6161a3e2f0ce2738b4d3facfd2d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/json-glib-1.4.4-3.fc31.aarch64.rpm" + }, + "sha256:fb6b61cabfce21597c33c62743c13dd96bcea39aa806a144bc2b2665b48273a8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpcap-1.9.0-4.fc31.aarch64.rpm" + }, + "sha256:fd9ac175e5af929bb942528904d6e6e48caed800e22a7a45825d535bdc1537ba": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/json-c-0.13.1-6.fc31.aarch64.rpm" + }, + "sha256:fe6afcdab2793cd75a838a758a282d4581f1272f3f32df6a58777c0721e54b2e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-libs-0.177-1.fc31.aarch64.rpm" + }, + "sha256:fe6f4202a8e7e52add27c6d2e2af65884a974bcde4b5e89979badb782719ca1a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libs-3.7.4-5.fc31.aarch64.rpm" + }, + "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/geolite2-country-20190806-1.fc31.noarch.rpm" + }, + "sha256:ffa75117ea710fef320f1ae878e8c81e7a056386dea78aa5787dc091c5a100a5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/colord-libs-1.4.4-2.fc31.aarch64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "checksum": "sha256:a516dfa62a327d440fe38b93af81dbecb112fe45fff0f227583c451631479122", + "check_gpg": true + }, + { + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "checksum": "sha256:0b1ddcc8c3096814bc5027133fb077ef587b49a1a4e4d6426327c75cf2066b11", + "check_gpg": true + }, + { + "checksum": "sha256:a6caaef9bed1bd17292e1fdde4efee9730f8cff5826a9cb6c952e6f3cd052243", + "check_gpg": true + }, + { + "checksum": "sha256:42a4e01c47e28b71cafb658a5993b7f4b7692ac6b916878d580fecab7ae9d16c", + "check_gpg": true + }, + { + "checksum": "sha256:9c08d246ce73d8741777f290e7110ff9dae97a15e09f3469317ed7c8e9fb64ce", + "check_gpg": true + }, + { + "checksum": "sha256:b25f063f82484e4fa42d1ad31a2cf23e882a99dc1ccb191b24e14a6a789d87a0", + "check_gpg": true + }, + { + "checksum": "sha256:71ec6fd79756af905e474553f4ca7ae6985e32615df0ee2f2f487c8496e7160f", + "check_gpg": true + }, + { + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "checksum": "sha256:181173a9353f593105978b8e4038b7bf53fd22c63f4514fd271a74d48f9c59f8", + "check_gpg": true + }, + { + "checksum": "sha256:8dbce1e34a19be338f49b792874abc861fd64acc5653f7f5cd523d5e5865897e", + "check_gpg": true + }, + { + "checksum": "sha256:995ee9636461072248d5c6792d3852fb1ab277a622b18eb7d3c231133446dd7d", + "check_gpg": true + }, + { + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "checksum": "sha256:9ffb9a376d1df3d3d394ec2f8533f939547d8ccd634f1f77db52970630215d71", + "check_gpg": true + }, + { + "checksum": "sha256:23908e2eae2ccfd2efb1d19cdf46e3dca4680ac2d562c1c96f7fb0d22859fc82", + "check_gpg": true + }, + { + "checksum": "sha256:ffa75117ea710fef320f1ae878e8c81e7a056386dea78aa5787dc091c5a100a5", + "check_gpg": true + }, + { + "checksum": "sha256:0f3591f036f0be85a9d28e9099d43a8b2e5a500a9588825c1dd994d1a323ceba", + "check_gpg": true + }, + { + "checksum": "sha256:bb305f3ddc74c4c30ae838a2bbff3cd325eea8427622c7f82e4d06a564bace6f", + "check_gpg": true + }, + { + "checksum": "sha256:1088699171a35873eb5a776f0212ceff2bc9d67e3f1d8f2e107bbf751c36ca90", + "check_gpg": true + }, + { + "checksum": "sha256:99e8930364200470ee5bd065dccb7c4c1caa4863c6f8975740643fe9d2485c18", + "check_gpg": true + }, + { + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "checksum": "sha256:6e76674266f1e136186e3f005ddbf13791b1fea78cd30e8501f3dd1b209fa9f2", + "check_gpg": true + }, + { + "checksum": "sha256:920d2d8df80fb92e358f4925bbd2891977c98e0b9d2f69b44f1e74bec26d6a1e", + "check_gpg": true + }, + { + "checksum": "sha256:9c039f6f6e5385344ea56a6490a472b0f475d8d7612b422191d2152b8e1fc55a", + "check_gpg": true + }, + { + "checksum": "sha256:1b85657077726361a4b157a909796649fe93131fdc4aa67fd5329adc8d2fc833", + "check_gpg": true + }, + { + "checksum": "sha256:3a7d7619061a4adb275ef4b41d993375ad7863863741624186add801800e524f", + "check_gpg": true + }, + { + "checksum": "sha256:504971d079493a49afb8fb7f067f5dfcc59f3e007afcc63734c15fe1066e4b4d", + "check_gpg": true + }, + { + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "checksum": "sha256:8fd19268d460d7f49f3dd96644a2b8a3076a7a7ccbe3e35e27eeafc6ab8d9c95", + "check_gpg": true + }, + { + "checksum": "sha256:0458f6a42cd644322b6eb24b01f0f75de47d5e10ae077797dfada1ce2a1f7fcd", + "check_gpg": true + }, + { + "checksum": "sha256:4bb03b2162523fa694e0e44f46b04263ff0f5dab22c3e93124ec9b5650af2002", + "check_gpg": true + }, + { + "checksum": "sha256:e7e629e7e89f970660407fb22c8b706c4c9a65a5f43286ddeef1e165b446fcaa", + "check_gpg": true + }, + { + "checksum": "sha256:30e07680d23bfb5d4b2727893337619c56f13b46daec2f13f8985f642bf84250", + "check_gpg": true + }, + { + "checksum": "sha256:a00e85fb7902d8869492e32816c7834830682745eeab1efba264bdd3185f479d", + "check_gpg": true + }, + { + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "checksum": "sha256:c36dd24858c4e8d207eb0f87af16e4c599a16bb981416d47db467b70a841fe08", + "check_gpg": true + }, + { + "checksum": "sha256:ec305ea347ab987f5a00574bc3eaebaf2412483ed1b79615fdd86ca18ab146bc", + "check_gpg": true + }, + { + "checksum": "sha256:2dd8505a96714cdb79829a1377e36a53e05cc9b65a7f35a258ca3e4aaa76c700", + "check_gpg": true + }, + { + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "checksum": "sha256:00e59535d45094b7d47e25c93d21179f3138839968776107df99fa0678f1440f", + "check_gpg": true + }, + { + "checksum": "sha256:fe6afcdab2793cd75a838a758a282d4581f1272f3f32df6a58777c0721e54b2e", + "check_gpg": true + }, + { + "checksum": "sha256:5745966147d1651d663d9e7d37a740ebbb4daee49b5cb7a2e61375ea6b37404e", + "check_gpg": true + }, + { + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "checksum": "sha256:f63c88d8b294addf2791a5b291e3ab13750a24fe92fec65c96d365edad767f57", + "check_gpg": true + }, + { + "checksum": "sha256:a108fbc1ba9886604483ec05ef2150c961adb0906db5f9ea46c239bfcdf06b55", + "check_gpg": true + }, + { + "checksum": "sha256:0edff1a5f04f7f5d47537b4c049b95331f9ad33963c9c63ca4b13345a37296d4", + "check_gpg": true + }, + { + "checksum": "sha256:81100039c817e2f3703fb365c63d6d891f3f977dd9e670c3c9b12662de3c255b", + "check_gpg": true + }, + { + "checksum": "sha256:e30906c30d3dea50c62e74bc7aa870eb928af4c6fb474c894f55ef6ba41f5841", + "check_gpg": true + }, + { + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "checksum": "sha256:72bc6a2b459ee27dcd7c213d3aab5a993fc90fcffba2ef02fab7ae3857d379f7", + "check_gpg": true + }, + { + "checksum": "sha256:8c4b392a5e1ed79b7a5b302d8fb14d0470b3a6306a7b36aee275acf0daa61537", + "check_gpg": true + }, + { + "checksum": "sha256:7f23849dcd356019c4e83058e9e49d544300ad7b9a6f6a7528831e393ca1197c", + "check_gpg": true + }, + { + "checksum": "sha256:e6a986f10b17ba67e86c417251d855e1eeac0ca1c85c2ee7ae3bfc7d6c966087", + "check_gpg": true + }, + { + "checksum": "sha256:3b16753c7590bc968a693e97ce9d318d58e1483fd2999a874becd95abc9d35ff", + "check_gpg": true + }, + { + "checksum": "sha256:9404d90bbb474b30b80c90719df01d784b925127e9710f12c44c72d14c2708fc", + "check_gpg": true + }, + { + "checksum": "sha256:f74b53f33812f65d12377946d363a773e48cf6bc6c4bb2acec5bb4a048861b88", + "check_gpg": true + }, + { + "checksum": "sha256:6e78ce3d460b7e1377f487fed5563999fb44d310c441798a4d23d34960e23d45", + "check_gpg": true + }, + { + "checksum": "sha256:b3d8740cee57c5025ef88e9d71df141a6600fdf26215969acae393a2b052892d", + "check_gpg": true + }, + { + "checksum": "sha256:c84f89f65e2a691d7fcbc7021c3c5d796e0f39483e3fe95e83579c630575b78a", + "check_gpg": true + }, + { + "checksum": "sha256:f3d5fd211e3faf1b61be64fd3f1659dd640a873c66747a5cc341f888e4179dea", + "check_gpg": true + }, + { + "checksum": "sha256:abf022d05aa55e7aa8d0736b899d86613d30a7e1751b04666920f367d4311a1a", + "check_gpg": true + }, + { + "checksum": "sha256:28cdab6faa95e1d7d1c32d977627ef5a86b262e2b0e20e76ddd73f598ee126e4", + "check_gpg": true + }, + { + "checksum": "sha256:e3046e1e508453e332277ab86ebf67df0106edca2c6e8e54ba2bffb76f9ed4d7", + "check_gpg": true + }, + { + "checksum": "sha256:b9ad5c82b3b83871269ee705ee12896efd1e3485b0d2005c9cff2a100100cd34", + "check_gpg": true + }, + { + "checksum": "sha256:81f5b3786ab1b634016c0c066379dda739386b4b1d639111b4575748e27caa56", + "check_gpg": true + }, + { + "checksum": "sha256:12c732f4a960848bd4fbc8111c2c0cf584799b1fdf0eb89c2cdcb26da5bc03b8", + "check_gpg": true + }, + { + "checksum": "sha256:0a4100f50b31df500afc5d255dd87117553df7032447f3e226196fd64f9c3f47", + "check_gpg": true + }, + { + "checksum": "sha256:8e10cf2b0645e342b001338a4463c5a02a8a302c25affba37da700a987e2c064", + "check_gpg": true + }, + { + "checksum": "sha256:4290088d905017724f6c909cb1b3193055a6aff62cd20e39ea196694f90753c8", + "check_gpg": true + }, + { + "checksum": "sha256:0cb1a66cb3bb44797a8aeb47db85db1f6c0fcf4d4571d8a5f8981f83b51c08af", + "check_gpg": true + }, + { + "checksum": "sha256:7102de1c840d5b915a40fde5c408f182d677ecdd5126dedf033ebb63b5419607", + "check_gpg": true + }, + { + "checksum": "sha256:82bc08ef5d8049d3d07a5eb00f61d3f94d7577ef814f6791352f75835bff477a", + "check_gpg": true + }, + { + "checksum": "sha256:0064998ad79a6250297b379852b5a06932d8e074270bea02d75888758755bd23", + "check_gpg": true + }, + { + "checksum": "sha256:6b11c1e14d4a02edf8beee776f9f896729bd0f28c66cb4c1d2bd021cdffc6aa0", + "check_gpg": true + }, + { + "checksum": "sha256:4de89d25d09c57b09a51ab93fdf84ade211e835c16d3ba6e4e261dcc0c4e50a1", + "check_gpg": true + }, + { + "checksum": "sha256:3ad68b7569e311a1ca7da4da7b42021a7acb001ab4b2cc6e63b3ba0f87cbd55c", + "check_gpg": true + }, + { + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "checksum": "sha256:c935f74584d7289ca58d1b23cbdacd38450d351dbc3dcd0bc713723c4d50a545", + "check_gpg": true + }, + { + "checksum": "sha256:d6b491f91a567b4245d07d28a0547cb1b8e97a1f814e3f7d76dd685bb6658b64", + "check_gpg": true + }, + { + "checksum": "sha256:ea35fa3f5c16e074a59d66ff9037e48ca7c0126444e09daf640b7a37dacd76ad", + "check_gpg": true + }, + { + "checksum": "sha256:4549e51322d0b10016f1daa8dedc807fddf7d2d4e77719baa696de15b88821bb", + "check_gpg": true + }, + { + "checksum": "sha256:fd9ac175e5af929bb942528904d6e6e48caed800e22a7a45825d535bdc1537ba", + "check_gpg": true + }, + { + "checksum": "sha256:fb2b070b96ed58a31da7889452ce3cdbfb60f6161a3e2f0ce2738b4d3facfd2d", + "check_gpg": true + }, + { + "checksum": "sha256:3975c15d461cebe50d1f179fb86d288c18f643c32f179bbab13425596ab64001", + "check_gpg": true + }, + { + "checksum": "sha256:c68bed5b576d7baa67a59c726d2340f7c0df7e9b93f90b3a22d3f62e9f99456a", + "check_gpg": true + }, + { + "checksum": "sha256:7d0ec23fb8dab882db8b7ec9a9cbb2728d6df2af5c02ee06cc6fa357f210ff09", + "check_gpg": true + }, + { + "checksum": "sha256:cddb050897cd8666090b172711fb7947b3bf844f5a190f8c689fd79a222e1761", + "check_gpg": true + }, + { + "checksum": "sha256:01ea4ecad746f1309b5c943f2b2709f7e5400d33e4d51c85401205ed18d61621", + "check_gpg": true + }, + { + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "checksum": "sha256:59f289c6f3b0180ae3eddaa974e2f972bf15c48135a2abed9eb2f72dfdae1be4", + "check_gpg": true + }, + { + "checksum": "sha256:159972ccc01cd5840c2aad04818efc965b64c5120b1fcce92a47f45ab1abf4a5", + "check_gpg": true + }, + { + "checksum": "sha256:46b0c36e90fd16371444eb5376fc01232b6e64073e42ed1f141344a9aadbe568", + "check_gpg": true + }, + { + "checksum": "sha256:f7954ba55d833c6341ec87b0cf57817084c705673b8b50aff3e3606fcbdcfbb5", + "check_gpg": true + }, + { + "checksum": "sha256:58c8a3d4ac7c8c318b5596b192dbd0350a1122983b69bfc1cb5eb3ecec5b7cf6", + "check_gpg": true + }, + { + "checksum": "sha256:500d0a1b49962ec79ca00224528d6e599d3845eb60b8b13a678d03edfaa755ec", + "check_gpg": true + }, + { + "checksum": "sha256:4c55460197fe24d0a105e3071824a933069e0b655910fd7ee7335e2396de15dc", + "check_gpg": true + }, + { + "checksum": "sha256:2aafea82072ad28a8b662e32902f66b47166a00b5c9cf19b1dd589f39776560f", + "check_gpg": true + }, + { + "checksum": "sha256:9ac1ef0ef80d7ff65903120f8b2a5a2a5723dce7c9c131e17cea3572cb81d0f4", + "check_gpg": true + }, + { + "checksum": "sha256:0f661b922a9e9cbe82e948ec1d83c6fca6e61e08de50815a5b6c069a64f4e883", + "check_gpg": true + }, + { + "checksum": "sha256:ec48b0cd759656b4c5d8d13dcc81c6fa23914f8e214b4cda1ed08e1896177fe9", + "check_gpg": true + }, + { + "checksum": "sha256:03b9d49b78b7e758eecce6a25782767ec5dc921d28f053b17a651b1c8bb96d7b", + "check_gpg": true + }, + { + "checksum": "sha256:a96e76f00865249f70a3f2ef293946e9786150faa83e37185e61592290817cb4", + "check_gpg": true + }, + { + "checksum": "sha256:d22fbf5e32d176db1414b0854c78f0ea1b5f489a83490ee4e3f67bc5e98905af", + "check_gpg": true + }, + { + "checksum": "sha256:2fc552b80866318c0ac934f5385fd2090743701639c318b75138ae985ff5606a", + "check_gpg": true + }, + { + "checksum": "sha256:d877864e501fe38a1b0c7e11572e61c5d9eb9857436541f1c2d5ad2f8bd29b83", + "check_gpg": true + }, + { + "checksum": "sha256:64b0063f6b3a42b712c0ee622328e36ddf94a15da547e3c8da3a4191e0941c92", + "check_gpg": true + }, + { + "checksum": "sha256:99a6e2861b7eb51684d1b83901a7e54caf649b711556a660d93bfef114eab72c", + "check_gpg": true + }, + { + "checksum": "sha256:5e2a37ee7e1147a446be67d63b1be55f2e82c0ae0a84dd1afc6a3fec64e62804", + "check_gpg": true + }, + { + "checksum": "sha256:566a389a620f634ab341a9a39cffdb1c607b4682224cf3d5ac530b6c57c78d0f", + "check_gpg": true + }, + { + "checksum": "sha256:4e365f48d5c85b82f71e8d000d00cdf7ed3c23cd94c31fbf3543572413541c3d", + "check_gpg": true + }, + { + "checksum": "sha256:98d811216e2e0e4ad49925489824210fc3e9b57bb09eefcd4047886375d34f57", + "check_gpg": true + }, + { + "checksum": "sha256:a63ae4aa727a4b75b602a67f1e42946e39dc124e9f1aeb3e795af40ad4e15cbf", + "check_gpg": true + }, + { + "checksum": "sha256:898a918a7adfefc3ce13d10b30b2ec7ccada96155afa15ee3f4e589b3f1baa38", + "check_gpg": true + }, + { + "checksum": "sha256:04826477197ec239d756f81cb6d38fde2f65e71499a8dbaf0c666d93084f1ea3", + "check_gpg": true + }, + { + "checksum": "sha256:1738cf24111bcd0bff08880c4d5efa624c09a2080c901f67ab032ed201a8751e", + "check_gpg": true + }, + { + "checksum": "sha256:5ef4f8487a78a43f7502c055ac77c047ce159da5641e5b61c2669395ae1efe62", + "check_gpg": true + }, + { + "checksum": "sha256:6bc6909c53c0eb2bad7640b3fb79da5cacf5fd8951dee08347b8d18df1b004f8", + "check_gpg": true + }, + { + "checksum": "sha256:3976706367650c755852d995bbe8c4e6bbd13b6e8e0148b7beddb4aba3679d8a", + "check_gpg": true + }, + { + "checksum": "sha256:5b75073853ff34026cf180d7466314783a7a81defaa43e6b7416a38d9f19230b", + "check_gpg": true + }, + { + "checksum": "sha256:2575f8d1fb953934730b9fe6803bf3de12669dcee78852057ea4e88f9d4d76a4", + "check_gpg": true + }, + { + "checksum": "sha256:e8a13bb46e5149142a1e0a359460c1c65b2cbcbff20f2d0c50f9adbad57538a1", + "check_gpg": true + }, + { + "checksum": "sha256:b9b609d17e9274c1551ac6ebab4b53f6e4a5ae9253db5465c65fdb8c919a09dd", + "check_gpg": true + }, + { + "checksum": "sha256:be8bf30729c71aabe30f2c4cf8e5c43ce3cdf892c218fadf53c0af29a76fd6b3", + "check_gpg": true + }, + { + "checksum": "sha256:d2f7d49bd565c2fec4ca945ae97ac3b8a607f114d3a7558b90b2caaa5871459b", + "check_gpg": true + }, + { + "checksum": "sha256:6b2e3b36c2a3e988f40548688b32ef3ce2e4c7906127215c82736189684a95a6", + "check_gpg": true + }, + { + "checksum": "sha256:0b2a6b7e3b62ff9c02ec3012f08fbf396a7990bf9599b49b75eecbee3b257f7f", + "check_gpg": true + }, + { + "checksum": "sha256:e1e5250ea932beac32caf373ae55b4655c50ae8a1bd9d42e3ceac590a13031ef", + "check_gpg": true + }, + { + "checksum": "sha256:c6ffcbd829ea30ef40fa61095cef03f2b6eafa3228187a478d6d027911f12e2f", + "check_gpg": true + }, + { + "checksum": "sha256:618e9a7e3f1f8191beee70d3ad1c8754870887d251480e7e6dd1f3de2d8226d1", + "check_gpg": true + }, + { + "checksum": "sha256:575640462a8c2d0687ea225cc7b6bbf7aa0814e311619ddf6cd16e1bc22f9513", + "check_gpg": true + }, + { + "checksum": "sha256:d287bfdcebb9fbb31d5f58cc71311f48a85970d0fd92f5beb0193270c155faac", + "check_gpg": true + }, + { + "checksum": "sha256:a5fa076ed2c83974cacf4ce386bfdc576ce532fba4f8645dda5c2b67efc5d501", + "check_gpg": true + }, + { + "checksum": "sha256:e9c7f59547a9eec5304db7a312b435592f07f7aee4f3db617e5ddfac0f4d048c", + "check_gpg": true + }, + { + "checksum": "sha256:429cf175b6c3b2bedcabf3391ad3166fe6e62259877f309e57500d2c7f1f1882", + "check_gpg": true + }, + { + "checksum": "sha256:56f3d59b74bf8ceafea695d10fb7ad4672ec93f824ef9b0508c7bcdedeffb101", + "check_gpg": true + }, + { + "checksum": "sha256:8d21bbf2063bb50cf3d12281731fbd8b26dece5f154d7a50f0952695fea6751f", + "check_gpg": true + }, + { + "checksum": "sha256:fb6b61cabfce21597c33c62743c13dd96bcea39aa806a144bc2b2665b48273a8", + "check_gpg": true + }, + { + "checksum": "sha256:77ff28552aba96ce4b80d51a9c390ef4958afad18ede879bf31022f2509e2d90", + "check_gpg": true + }, + { + "checksum": "sha256:c599ffa97fde329ff872bd6db99e8c218601df6549302f89ff747d34ca24042c", + "check_gpg": true + }, + { + "checksum": "sha256:816fe17af41a66dd718eb247273be824b75f53fb539455b58b892528ca12cde5", + "check_gpg": true + }, + { + "checksum": "sha256:20cc74172d531506391309e8f82c6512404ada35f22c68fcd0b83a01dc6e0ca8", + "check_gpg": true + }, + { + "checksum": "sha256:4f37b1e322e3001b076e0128541cc82c180d7054b1c0b7200f46fda4d654cd71", + "check_gpg": true + }, + { + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "checksum": "sha256:7623bcecb8340ed57e1aa2951b13a1c5b1dfefa80eb226f269294df29cb40c08", + "check_gpg": true + }, + { + "checksum": "sha256:d1520137d9cb96cd10a63893b45b4794b120502bdbab0862e001ac2486195aa6", + "check_gpg": true + }, + { + "checksum": "sha256:0c49f27ae0aaf95fbdc52cfb9406c41eefff41b205f85fdc6ef6787ec3af5146", + "check_gpg": true + }, + { + "checksum": "sha256:e78343046ae389b1c11d36f8de0b8bfbb9ded7bdc39fb52b3f719a39047bf42a", + "check_gpg": true + }, + { + "checksum": "sha256:36ce07aa1f90dfdf5ae9824acff24fc3aafe5633b07a022732ca06258e0255b6", + "check_gpg": true + }, + { + "checksum": "sha256:e1deab5e887a199233f9a439d2d20d864d434e9a4ac7fe460f230d368fb3779f", + "check_gpg": true + }, + { + "checksum": "sha256:11e8ee935d9c9d349f4c081d035fc4ee34539af23ef8122e6901b22cf97f346f", + "check_gpg": true + }, + { + "checksum": "sha256:768cc2c561bd6476df45fbd9280bbaeb87d2addcd0c51601d2226a590d7dc872", + "check_gpg": true + }, + { + "checksum": "sha256:82cc8c43bfe0e731ec78e31c8af6250ec1f13989978105a1b38d518470cf5bde", + "check_gpg": true + }, + { + "checksum": "sha256:c1590c5cdfc7aad868c75c54c11a2c7d692001f758ead33aa10f9838955148c4", + "check_gpg": true + }, + { + "checksum": "sha256:c6de19d0d4b8f67957ca6122462090895034495852814f36396bc134905f5f5e", + "check_gpg": true + }, + { + "checksum": "sha256:51f15beba5e5bfc6ff646741b3fbaa3a484ebb40fd8c6c59b8f1f6346dd93e93", + "check_gpg": true + }, + { + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "checksum": "sha256:5a32c492b921e9287422006f255833605b328f3efd071609673be161bb4e7f04", + "check_gpg": true + }, + { + "checksum": "sha256:23e8c23c89737665a5288a3a171548e94898be9ed4a24c056d8bc851c6800090", + "check_gpg": true + }, + { + "checksum": "sha256:b04fecd603225051ca56c6674cb72f12f4de0cc1cbbfda0ab7d0af0e655b2c99", + "check_gpg": true + }, + { + "checksum": "sha256:57bd1ce5d776daca117795bc8e3852f1d29a6fc3fc1edd21729d161de2d7798d", + "check_gpg": true + }, + { + "checksum": "sha256:14a759b4daf287d66f5b803b0fbb52621f8429607be109e5d3c313a57cc276e2", + "check_gpg": true + }, + { + "checksum": "sha256:2b24b5729cd74e3b1efe261bfd732fd1995b0e64d76587a3d90762d77cc58c77", + "check_gpg": true + }, + { + "checksum": "sha256:c80fbc5228457b9b1978b098f47d2a66ca5636526965847078edb6f1c302e392", + "check_gpg": true + }, + { + "checksum": "sha256:ea68ed6fc06f142c95e907b619a9696146dff1bba308773df12e412d8277eec0", + "check_gpg": true + }, + { + "checksum": "sha256:7027d2c6a004469720e3c64eb7fcb2ace1fffd61ec4380afbf875d59a3876f3a", + "check_gpg": true + }, + { + "checksum": "sha256:af589a85af85270c027bacb5ccaf88c93378d364a7c1436ee7bca1290cf762f7", + "check_gpg": true + }, + { + "checksum": "sha256:1472adb267192ca8a323e544fd9749c4765334fc5779e8de4ee583eff77fc078", + "check_gpg": true + }, + { + "checksum": "sha256:f34cde4c2bd6ab93a697d8c350e98f4d70f897f74fee35a06c25eb4b98f46c9a", + "check_gpg": true + }, + { + "checksum": "sha256:aa3658efc21bcc6d79344eeeaf20285407f6f3b90d905a66a37a8cfc835b2a61", + "check_gpg": true + }, + { + "checksum": "sha256:a2f6ae2742a2aac3f5bb5f1ad5cfa4d9b8fdf7cfd01033246027db7064abaa1f", + "check_gpg": true + }, + { + "checksum": "sha256:e35e30f6477652a93d3c02ec86faa233884aefb2ff9fcf4058909d9736fb2d15", + "check_gpg": true + }, + { + "checksum": "sha256:57a9aff6b8d5ecdb66015e4dfcec0a171ae18751e1d5f9a339361cc45b9a8e2f", + "check_gpg": true + }, + { + "checksum": "sha256:7c66a9a33e131200e13a638613ec054a94be901399424df27a0b4f94532ee36d", + "check_gpg": true + }, + { + "checksum": "sha256:80434d5f64abdd521330153fc0c983c5923a833ab59f57ec3bc3a8cf1d748c8c", + "check_gpg": true + }, + { + "checksum": "sha256:a39fb89e06572d188309dc4daf1d23e21be190e59f9ef8ff3c3ccceaefe505da", + "check_gpg": true + }, + { + "checksum": "sha256:a084b365795c7262fa09b2fc590dfbabbbf30cb9c1c7f9b5274eae4c5d761482", + "check_gpg": true + }, + { + "checksum": "sha256:1c2edf26d16b55bac2824452c1c584ff52acf8477920f384f6019f647c241450", + "check_gpg": true + }, + { + "checksum": "sha256:f8e118c35bb5f8ae3dca517ef38c7a38bbdd491011af9e1c4c5c7523f13e6f9c", + "check_gpg": true + }, + { + "checksum": "sha256:339895e6b901ff4c81966893ec7da9848da3acea26e5b202033bfb79dfcbb6cb", + "check_gpg": true + }, + { + "checksum": "sha256:1d530a23a8ea2b831068593fe6aa7a32923c6276504def5a85ad065aaac9ac5f", + "check_gpg": true + }, + { + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "checksum": "sha256:264828f11342a94f056fb27a2e78fc5e14226230b3dbac8bdad6a4c8598fd24f", + "check_gpg": true + }, + { + "checksum": "sha256:9c8771c8c5eb38351dd30f994133bc9149ec93813d1a7c2cd2dd8f7dc7431d49", + "check_gpg": true + }, + { + "checksum": "sha256:f1419585dbb27e3bf76aab5a5f8fb9580816a7a0e7fc93377b97646a0259a794", + "check_gpg": true + }, + { + "checksum": "sha256:d8d28daa56fa4894a767957aa9948cad6d274e2b70d8b10aa69d9356c8a22eff", + "check_gpg": true + }, + { + "checksum": "sha256:424e1777ae71117d20055ffa5f0ed2ead59a8076528450cf7536e18c70624bd8", + "check_gpg": true + }, + { + "checksum": "sha256:eb35167d6095465a58611b80853213af5838f271b75fa1a5e3c051a04a9078a7", + "check_gpg": true + }, + { + "checksum": "sha256:54c024db70df7966590050dfc5dcc1315174e10c3a57e118ea10178238d70889", + "check_gpg": true + }, + { + "checksum": "sha256:a7f5877c9ebfb44347765c7deb266e53fdd62403ccc0a7ff17fdb101bc28caff", + "check_gpg": true + }, + { + "checksum": "sha256:dc6b772101df9f3029c2cd80a10663663ad877e129c8d724902f5cc9f1785e60", + "check_gpg": true + }, + { + "checksum": "sha256:6d4c3ae013d07e50d085b3419dfd41ac79ba11ada62d8c4570d21764ef6f11ec", + "check_gpg": true + }, + { + "checksum": "sha256:bf92fc95c282da9c76018679d9180fb6c98aaf864f66bbef630941040579f92b", + "check_gpg": true + }, + { + "checksum": "sha256:eb1992de281538771ba578a65eabe620dc35aef6c621d8c5351a2ba38ac440f4", + "check_gpg": true + }, + { + "checksum": "sha256:5ba547e1c2c515b3ca091e04c0a6b15b297e25b567a6613a07bd2bee41f39684", + "check_gpg": true + }, + { + "checksum": "sha256:44a92faf198bf015f5e94cf42ae615215fe0a6c0697b1f6c32d205bd450e7ce4", + "check_gpg": true + }, + { + "checksum": "sha256:b0d153ea83902561a9e60c9c244a497c3b19a9c4e40cf9e8437d0221af0f2ca3", + "check_gpg": true + }, + { + "checksum": "sha256:ee3977f4ee783225903f964c60932795d8c11307043e73527b394dec02487047", + "check_gpg": true + }, + { + "checksum": "sha256:0b8baef3612880639ed59ae79475086aac8ce236fd35977e0d87305d0bb9a529", + "check_gpg": true + }, + { + "checksum": "sha256:974bdde5f821c071bcbe0de191677981685cb8290952be75a7ab15747988a99e", + "check_gpg": true + }, + { + "checksum": "sha256:d2be7b0f17350a8a0f301617cb1d7b024076bc16986abaab94453ec1cee1f1f2", + "check_gpg": true + }, + { + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "checksum": "sha256:84365601f93db7fda27e4d89826d4893830572e98df35275abdf15659cfe3fc5", + "check_gpg": true + }, + { + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "checksum": "sha256:d429648fe5b233a46fdbfc31a283ca4b6be5177ae84f3e7e63fec5f9bebd17d1", + "check_gpg": true + }, + { + "checksum": "sha256:edee134762456246cd8de577597e350b60a04bc43ac4a47622b9a263ddd74cf2", + "check_gpg": true + }, + { + "checksum": "sha256:7a5aadb5da769b563cf1e548d8cabd26c00720a67df7e4a445a5a9ae5b0891b8", + "check_gpg": true + }, + { + "checksum": "sha256:436c2f09d2de629da293ab82af47b7697f4a8c151127cbd993d0e8605a4f423c", + "check_gpg": true + }, + { + "checksum": "sha256:fe6f4202a8e7e52add27c6d2e2af65884a974bcde4b5e89979badb782719ca1a", + "check_gpg": true + }, + { + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "checksum": "sha256:513e24bc56f483b171664ea4dec51cc0cce1f9cc8f4939cde8a65ea976ed952d", + "check_gpg": true + }, + { + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "checksum": "sha256:b6498a7a8056483e1d42362b1fb27bd6c54ed7cc7bd180cae20d64a13ae4c88c", + "check_gpg": true + }, + { + "checksum": "sha256:64206147fbbabe1e050f17442a2a3d1458b27beea0d8f3ff9e258a2842dd7a01", + "check_gpg": true + }, + { + "checksum": "sha256:5f2bdb8f9a18257ee80a243e1be96e3ef6fa660e37fdf7b4443d8e8f7abf86ef", + "check_gpg": true + }, + { + "checksum": "sha256:d02489175567be57a48a3edf5deb66d100e99df73a37b26062fea4d6af014cbc", + "check_gpg": true + }, + { + "checksum": "sha256:8d00fa6cdfcc955dc4e14d0f8b6ba6217d2dd0334ea0e1aa44694c9e0ad0b06d", + "check_gpg": true + }, + { + "checksum": "sha256:ae9a3e144f31b6172d266b984c8385fba94bdcf3002d3182a4118f8d29f5f718", + "check_gpg": true + }, + { + "checksum": "sha256:c958419128c1330b50c741113394b147da1ccda055ab1ee19fabc199f68971ea", + "check_gpg": true + }, + { + "checksum": "sha256:7292bf1d13ef336ef411ef695f87c7c7ecd21a13e05c86cc475930ca61117503", + "check_gpg": true + }, + { + "checksum": "sha256:d01f7e794c3dd3f38de1b69fd360db4b858826eba4e6fd4edc79c8a74774ab00", + "check_gpg": true + }, + { + "checksum": "sha256:46acc45e148eea376c3aa8e83a4d3bf1cf66fa35ccc670f592017428ce75ca77", + "check_gpg": true + }, + { + "checksum": "sha256:5d87d829a1d939c520b25f1c790cd1f3bd6c8b769f4f21303ec5e16a3b509445", + "check_gpg": true + }, + { + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "checksum": "sha256:2ad8824aa48378aa741fbd863104d950ad4f669566af2d4f433be6d9afd8ead6", + "check_gpg": true + }, + { + "checksum": "sha256:c05d42fba4fc1ebc2df9ee49f971c744937d8b307626c90b3cf79bf91619863a", + "check_gpg": true + }, + { + "checksum": "sha256:81169dd168c02aed3b1e57e5af16ec3dbdfb74c15373ee40e9eec5aac60a3d25", + "check_gpg": true + }, + { + "checksum": "sha256:af594688a568ec4db7dae9d60390dce1ab547527bbf2415752f211de3748b97f", + "check_gpg": true + }, + { + "checksum": "sha256:7487afe052c79100e906a4d2cb2ee1043410ca10a8e60a65d95776f63a513595", + "check_gpg": true + }, + { + "checksum": "sha256:e29356f3ea2554e8be23401a08a941f406d337cf6b38e7ee99926fb9b3f1f541", + "check_gpg": true + }, + { + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "checksum": "sha256:e0af6b40e51fe0b9f68367355219aa56717888d2a07c10a001cc8667de1a5a2f", + "check_gpg": true + }, + { + "checksum": "sha256:7bd78cde4202401947dea928274579074bc78fdae096057e788c1b6a86a10ecc", + "check_gpg": true + }, + { + "checksum": "sha256:6728ee255cb8c80b85f6d610bfd795025939a77d2591ad61fe1c4f9d657c386e", + "check_gpg": true + }, + { + "checksum": "sha256:42945876fb8932bad3e50b50349af4bdabe713d7be1c8efc1b0f7b042e556aa5", + "check_gpg": true + }, + { + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "checksum": "sha256:acd149c4bf17a15db75fca1f19e34784a9ed275e19c0721aa78f5eb94797a685", + "check_gpg": true + }, + { + "checksum": "sha256:07cd9ddc7f7a16dc9739647af90706cfbcf70b281f5474e622b0769e211e0dc8", + "check_gpg": true + }, + { + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "checksum": "sha256:58a44f9472918a511d3eee0b3f08926dab2ebf4994584403bd196e6c92a06f5a", + "check_gpg": true + }, + { + "checksum": "sha256:9ed0b44834b6a637c70aa00ab243aecb534f9aea461e1388652ab039898239c8", + "check_gpg": true + }, + { + "checksum": "sha256:c1893a7c51ebb0371b87e2179d6e0e5d0fbb71acb4234cf4adc293af11c75578", + "check_gpg": true + }, + { + "checksum": "sha256:f23f467c4099be4cb4dfdc1be13b7a7bb6e8c6da7c21182658a034827b64df39", + "check_gpg": true + } + ] + } + } + ] + }, + "runner": "org.osbuild.fedora31" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:b37d963f89a7e0d466e1317da6cd2c20b3ce3ec9789e1027c16176734f88c4fc", + "check_gpg": true + }, + { + "checksum": "sha256:f195c83de6568cf550a3b2d70725697196c1a9269cddb9b825f5a887de9d6eed", + "check_gpg": true + }, + { + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "checksum": "sha256:a516dfa62a327d440fe38b93af81dbecb112fe45fff0f227583c451631479122", + "check_gpg": true + }, + { + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "checksum": "sha256:0b1ddcc8c3096814bc5027133fb077ef587b49a1a4e4d6426327c75cf2066b11", + "check_gpg": true + }, + { + "checksum": "sha256:a6caaef9bed1bd17292e1fdde4efee9730f8cff5826a9cb6c952e6f3cd052243", + "check_gpg": true + }, + { + "checksum": "sha256:42a4e01c47e28b71cafb658a5993b7f4b7692ac6b916878d580fecab7ae9d16c", + "check_gpg": true + }, + { + "checksum": "sha256:9c08d246ce73d8741777f290e7110ff9dae97a15e09f3469317ed7c8e9fb64ce", + "check_gpg": true + }, + { + "checksum": "sha256:88831a57114969801a557d700451a70337f944b868a3d792d47e6e9e91961f3c", + "check_gpg": true + }, + { + "checksum": "sha256:b25f063f82484e4fa42d1ad31a2cf23e882a99dc1ccb191b24e14a6a789d87a0", + "check_gpg": true + }, + { + "checksum": "sha256:71ec6fd79756af905e474553f4ca7ae6985e32615df0ee2f2f487c8496e7160f", + "check_gpg": true + }, + { + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "checksum": "sha256:181173a9353f593105978b8e4038b7bf53fd22c63f4514fd271a74d48f9c59f8", + "check_gpg": true + }, + { + "checksum": "sha256:8dbce1e34a19be338f49b792874abc861fd64acc5653f7f5cd523d5e5865897e", + "check_gpg": true + }, + { + "checksum": "sha256:995ee9636461072248d5c6792d3852fb1ab277a622b18eb7d3c231133446dd7d", + "check_gpg": true + }, + { + "checksum": "sha256:1bdeed5fd5907e0cacd5706ebc93ade09462a0c71e2316d9841e33a896b99b87", + "check_gpg": true + }, + { + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "checksum": "sha256:9ffb9a376d1df3d3d394ec2f8533f939547d8ccd634f1f77db52970630215d71", + "check_gpg": true + }, + { + "checksum": "sha256:23908e2eae2ccfd2efb1d19cdf46e3dca4680ac2d562c1c96f7fb0d22859fc82", + "check_gpg": true + }, + { + "checksum": "sha256:089d4c5c48e89cd1444f283571fce20fbf5f1b20f3a5ff1ce74266bbc2cd0fec", + "check_gpg": true + }, + { + "checksum": "sha256:21d9ceffd6fb52d235a95e4d7708d719eac758a9dfd80ba2d6119dfdc46c80ff", + "check_gpg": true + }, + { + "checksum": "sha256:9cc3e6534ae34343e7e4d056d46b9551da7d0a82c7bad378c3626d4b70d1bf62", + "check_gpg": true + }, + { + "checksum": "sha256:ffa75117ea710fef320f1ae878e8c81e7a056386dea78aa5787dc091c5a100a5", + "check_gpg": true + }, + { + "checksum": "sha256:0f3591f036f0be85a9d28e9099d43a8b2e5a500a9588825c1dd994d1a323ceba", + "check_gpg": true + }, + { + "checksum": "sha256:bb305f3ddc74c4c30ae838a2bbff3cd325eea8427622c7f82e4d06a564bace6f", + "check_gpg": true + }, + { + "checksum": "sha256:798376bc628acd54407d945702dce73ab90633919f88fe9b7ecde3f38ebc2fe9", + "check_gpg": true + }, + { + "checksum": "sha256:1088699171a35873eb5a776f0212ceff2bc9d67e3f1d8f2e107bbf751c36ca90", + "check_gpg": true + }, + { + "checksum": "sha256:99e8930364200470ee5bd065dccb7c4c1caa4863c6f8975740643fe9d2485c18", + "check_gpg": true + }, + { + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "checksum": "sha256:6e76674266f1e136186e3f005ddbf13791b1fea78cd30e8501f3dd1b209fa9f2", + "check_gpg": true + }, + { + "checksum": "sha256:920d2d8df80fb92e358f4925bbd2891977c98e0b9d2f69b44f1e74bec26d6a1e", + "check_gpg": true + }, + { + "checksum": "sha256:9c039f6f6e5385344ea56a6490a472b0f475d8d7612b422191d2152b8e1fc55a", + "check_gpg": true + }, + { + "checksum": "sha256:1b85657077726361a4b157a909796649fe93131fdc4aa67fd5329adc8d2fc833", + "check_gpg": true + }, + { + "checksum": "sha256:3a7d7619061a4adb275ef4b41d993375ad7863863741624186add801800e524f", + "check_gpg": true + }, + { + "checksum": "sha256:504971d079493a49afb8fb7f067f5dfcc59f3e007afcc63734c15fe1066e4b4d", + "check_gpg": true + }, + { + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "checksum": "sha256:8fd19268d460d7f49f3dd96644a2b8a3076a7a7ccbe3e35e27eeafc6ab8d9c95", + "check_gpg": true + }, + { + "checksum": "sha256:c0287bc7c1f54bcd19c43904f9a5c7c0cc4c82eae2c455071f6d7ea50714668f", + "check_gpg": true + }, + { + "checksum": "sha256:0458f6a42cd644322b6eb24b01f0f75de47d5e10ae077797dfada1ce2a1f7fcd", + "check_gpg": true + }, + { + "checksum": "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc", + "check_gpg": true + }, + { + "checksum": "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a", + "check_gpg": true + }, + { + "checksum": "sha256:4bb03b2162523fa694e0e44f46b04263ff0f5dab22c3e93124ec9b5650af2002", + "check_gpg": true + }, + { + "checksum": "sha256:e7e629e7e89f970660407fb22c8b706c4c9a65a5f43286ddeef1e165b446fcaa", + "check_gpg": true + }, + { + "checksum": "sha256:30e07680d23bfb5d4b2727893337619c56f13b46daec2f13f8985f642bf84250", + "check_gpg": true + }, + { + "checksum": "sha256:611b0995f8475747341db33373ec0178afcb724183aada71b5d3a2c437d19527", + "check_gpg": true + }, + { + "checksum": "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d", + "check_gpg": true + }, + { + "checksum": "sha256:a00e85fb7902d8869492e32816c7834830682745eeab1efba264bdd3185f479d", + "check_gpg": true + }, + { + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "checksum": "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063", + "check_gpg": true + }, + { + "checksum": "sha256:7ae36bfe222068561cf0259400b54e210ad628aaa66dd4b87e20a2291996c71d", + "check_gpg": true + }, + { + "checksum": "sha256:f85438d6cb268c431f3aed5c678f1632b56d57393a3eb52e31d75bc6462bc88d", + "check_gpg": true + }, + { + "checksum": "sha256:ec305ea347ab987f5a00574bc3eaebaf2412483ed1b79615fdd86ca18ab146bc", + "check_gpg": true + }, + { + "checksum": "sha256:2dd8505a96714cdb79829a1377e36a53e05cc9b65a7f35a258ca3e4aaa76c700", + "check_gpg": true + }, + { + "checksum": "sha256:d45b8157ccb1d538f06120150470433ddaa714680e10ffe97bfc5853b5a0321e", + "check_gpg": true + }, + { + "checksum": "sha256:563f82b7c56043ed5a5ff55dcc643bcc5ac2a1e9ae940481f1c21595a83ba60a", + "check_gpg": true + }, + { + "checksum": "sha256:d96bdfbaba63ac6755a20d8a4d954bc5010695d671ba305a54362c1d3c69fc37", + "check_gpg": true + }, + { + "checksum": "sha256:79db5a94baa6acad360b52fdf6d49cf91d7b6290e0d55f457b2820937d2739f4", + "check_gpg": true + }, + { + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "checksum": "sha256:00e59535d45094b7d47e25c93d21179f3138839968776107df99fa0678f1440f", + "check_gpg": true + }, + { + "checksum": "sha256:fe6afcdab2793cd75a838a758a282d4581f1272f3f32df6a58777c0721e54b2e", + "check_gpg": true + }, + { + "checksum": "sha256:5745966147d1651d663d9e7d37a740ebbb4daee49b5cb7a2e61375ea6b37404e", + "check_gpg": true + }, + { + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "checksum": "sha256:f43fa8496a54ad89eef4f48c3813190b5509a21c873bc1d5fcd0dda80ae2b425", + "check_gpg": true + }, + { + "checksum": "sha256:f63c88d8b294addf2791a5b291e3ab13750a24fe92fec65c96d365edad767f57", + "check_gpg": true + }, + { + "checksum": "sha256:a108fbc1ba9886604483ec05ef2150c961adb0906db5f9ea46c239bfcdf06b55", + "check_gpg": true + }, + { + "checksum": "sha256:dcc584a55c425c26a62fe579beead8488589c3892c34e8fab95c7fd7ec1cf6c6", + "check_gpg": true + }, + { + "checksum": "sha256:0edff1a5f04f7f5d47537b4c049b95331f9ad33963c9c63ca4b13345a37296d4", + "check_gpg": true + }, + { + "checksum": "sha256:81100039c817e2f3703fb365c63d6d891f3f977dd9e670c3c9b12662de3c255b", + "check_gpg": true + }, + { + "checksum": "sha256:ab35a2d7f21aac1f33f9521607789e1c303fb63e4ea0681e9f724f86a1cc15c5", + "check_gpg": true + }, + { + "checksum": "sha256:e76b3b9d14a0016542f61d0ab2981fbf2d779e522d0c36d9095a1cffecbf9272", + "check_gpg": true + }, + { + "checksum": "sha256:e30906c30d3dea50c62e74bc7aa870eb928af4c6fb474c894f55ef6ba41f5841", + "check_gpg": true + }, + { + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "checksum": "sha256:72bc6a2b459ee27dcd7c213d3aab5a993fc90fcffba2ef02fab7ae3857d379f7", + "check_gpg": true + }, + { + "checksum": "sha256:8c4b392a5e1ed79b7a5b302d8fb14d0470b3a6306a7b36aee275acf0daa61537", + "check_gpg": true + }, + { + "checksum": "sha256:7f23849dcd356019c4e83058e9e49d544300ad7b9a6f6a7528831e393ca1197c", + "check_gpg": true + }, + { + "checksum": "sha256:e6a986f10b17ba67e86c417251d855e1eeac0ca1c85c2ee7ae3bfc7d6c966087", + "check_gpg": true + }, + { + "checksum": "sha256:3b16753c7590bc968a693e97ce9d318d58e1483fd2999a874becd95abc9d35ff", + "check_gpg": true + }, + { + "checksum": "sha256:9404d90bbb474b30b80c90719df01d784b925127e9710f12c44c72d14c2708fc", + "check_gpg": true + }, + { + "checksum": "sha256:f74b53f33812f65d12377946d363a773e48cf6bc6c4bb2acec5bb4a048861b88", + "check_gpg": true + }, + { + "checksum": "sha256:6e78ce3d460b7e1377f487fed5563999fb44d310c441798a4d23d34960e23d45", + "check_gpg": true + }, + { + "checksum": "sha256:b3d8740cee57c5025ef88e9d71df141a6600fdf26215969acae393a2b052892d", + "check_gpg": true + }, + { + "checksum": "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565", + "check_gpg": true + }, + { + "checksum": "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b", + "check_gpg": true + }, + { + "checksum": "sha256:0064a42567b657d85831ec162a314cd00f7befe48ce634387463754677206c9c", + "check_gpg": true + }, + { + "checksum": "sha256:c8fc5b492af902894b927e79314b52bbdd8e45b2d2018abd8113d8e1807adeca", + "check_gpg": true + }, + { + "checksum": "sha256:c84f89f65e2a691d7fcbc7021c3c5d796e0f39483e3fe95e83579c630575b78a", + "check_gpg": true + }, + { + "checksum": "sha256:f3d5fd211e3faf1b61be64fd3f1659dd640a873c66747a5cc341f888e4179dea", + "check_gpg": true + }, + { + "checksum": "sha256:abf022d05aa55e7aa8d0736b899d86613d30a7e1751b04666920f367d4311a1a", + "check_gpg": true + }, + { + "checksum": "sha256:e3046e1e508453e332277ab86ebf67df0106edca2c6e8e54ba2bffb76f9ed4d7", + "check_gpg": true + }, + { + "checksum": "sha256:42ae595f75734daaed3430e1117d3cb05bd9a18108506bb9600125693d3d1688", + "check_gpg": true + }, + { + "checksum": "sha256:b9ad5c82b3b83871269ee705ee12896efd1e3485b0d2005c9cff2a100100cd34", + "check_gpg": true + }, + { + "checksum": "sha256:81f5b3786ab1b634016c0c066379dda739386b4b1d639111b4575748e27caa56", + "check_gpg": true + }, + { + "checksum": "sha256:12c732f4a960848bd4fbc8111c2c0cf584799b1fdf0eb89c2cdcb26da5bc03b8", + "check_gpg": true + }, + { + "checksum": "sha256:0a4100f50b31df500afc5d255dd87117553df7032447f3e226196fd64f9c3f47", + "check_gpg": true + }, + { + "checksum": "sha256:8e10cf2b0645e342b001338a4463c5a02a8a302c25affba37da700a987e2c064", + "check_gpg": true + }, + { + "checksum": "sha256:ac3230db1dfd77c5a90b1eda2c002e75f6abe1aa2d4416aea12515c956211e4f", + "check_gpg": true + }, + { + "checksum": "sha256:4290088d905017724f6c909cb1b3193055a6aff62cd20e39ea196694f90753c8", + "check_gpg": true + }, + { + "checksum": "sha256:0cb1a66cb3bb44797a8aeb47db85db1f6c0fcf4d4571d8a5f8981f83b51c08af", + "check_gpg": true + }, + { + "checksum": "sha256:7102de1c840d5b915a40fde5c408f182d677ecdd5126dedf033ebb63b5419607", + "check_gpg": true + }, + { + "checksum": "sha256:89a35174435a790c0fbf3bc4306d51c867ecce66fb65bae0e7706a9f8f9a19b3", + "check_gpg": true + }, + { + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "checksum": "sha256:7637132d543741e8c5b581523ca5db24adc6eb6d78530944881c360da694cf15", + "check_gpg": true + }, + { + "checksum": "sha256:19217c1730a3f16e15eedd95e3f97471097a1bd066f7783fd273cfb392f4042e", + "check_gpg": true + }, + { + "checksum": "sha256:af00a0b026235e70f7cb7606166dfcaea0d227a3de70363ff67a644036ed8bfc", + "check_gpg": true + }, + { + "checksum": "sha256:ddd0635b899826bed59036ba17f8112c35660b32f3d1639266f5e394166a9dbf", + "check_gpg": true + }, + { + "checksum": "sha256:82bc08ef5d8049d3d07a5eb00f61d3f94d7577ef814f6791352f75835bff477a", + "check_gpg": true + }, + { + "checksum": "sha256:0064998ad79a6250297b379852b5a06932d8e074270bea02d75888758755bd23", + "check_gpg": true + }, + { + "checksum": "sha256:6b11c1e14d4a02edf8beee776f9f896729bd0f28c66cb4c1d2bd021cdffc6aa0", + "check_gpg": true + }, + { + "checksum": "sha256:4de89d25d09c57b09a51ab93fdf84ade211e835c16d3ba6e4e261dcc0c4e50a1", + "check_gpg": true + }, + { + "checksum": "sha256:3ad68b7569e311a1ca7da4da7b42021a7acb001ab4b2cc6e63b3ba0f87cbd55c", + "check_gpg": true + }, + { + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "checksum": "sha256:a3be2e9e42d68f5e5e58f1dd86d5b6e4fc1ff91e98f44d26221d6bda38c9f372", + "check_gpg": true + }, + { + "checksum": "sha256:c935f74584d7289ca58d1b23cbdacd38450d351dbc3dcd0bc713723c4d50a545", + "check_gpg": true + }, + { + "checksum": "sha256:0b109cfab724680af15e7be85cf9f4f4828cd8290f0aa8fcebcbb14cd176be94", + "check_gpg": true + }, + { + "checksum": "sha256:3e6b2cfce9c4a62f7cde13bb6ae135d5f6f0d6cb179ab3dbd61ba1533477f257", + "check_gpg": true + }, + { + "checksum": "sha256:e9c1fa22b0b6d6b7ac782ba60d4c6a2c747bd683f075720a4d82aec45adbd905", + "check_gpg": true + }, + { + "checksum": "sha256:ee2f71a3a318270e9cc55aa9dde8889f2e664fec681f9fd5719361f8e4a1afac", + "check_gpg": true + }, + { + "checksum": "sha256:8891f85ba3caf6de4b6b234c6aa7a98d347228937a378d04da7af56556799bd1", + "check_gpg": true + }, + { + "checksum": "sha256:f369cbc73e31dbae49565c6acfcc8ce4ea0158d1480121b5c6dcc1d224998a62", + "check_gpg": true + }, + { + "checksum": "sha256:763bbd8d0e3e80b56041273dd412f0c3708c90cd0affd929d474ae61f7c3798c", + "check_gpg": true + }, + { + "checksum": "sha256:d6b491f91a567b4245d07d28a0547cb1b8e97a1f814e3f7d76dd685bb6658b64", + "check_gpg": true + }, + { + "checksum": "sha256:7b01a3bf09861003bd9524e9d460ed68b8d2de4233a09f7af731cb07f75ef913", + "check_gpg": true + }, + { + "checksum": "sha256:1138343dfb107de07f54d4723aee2686fdd1af3e4532d14bd399b9b6b7873040", + "check_gpg": true + }, + { + "checksum": "sha256:ea35fa3f5c16e074a59d66ff9037e48ca7c0126444e09daf640b7a37dacd76ad", + "check_gpg": true + }, + { + "checksum": "sha256:4549e51322d0b10016f1daa8dedc807fddf7d2d4e77719baa696de15b88821bb", + "check_gpg": true + }, + { + "checksum": "sha256:fd9ac175e5af929bb942528904d6e6e48caed800e22a7a45825d535bdc1537ba", + "check_gpg": true + }, + { + "checksum": "sha256:fb2b070b96ed58a31da7889452ce3cdbfb60f6161a3e2f0ce2738b4d3facfd2d", + "check_gpg": true + }, + { + "checksum": "sha256:03559557dbf64805e44d7e956f6b228c90831766fd1f485eecdfddf7a646a220", + "check_gpg": true + }, + { + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "checksum": "sha256:26da63b51fc7b85d1a30098bfb9c2fa276b2d2129a28cee8cc80acd2eabe96e0", + "check_gpg": true + }, + { + "checksum": "sha256:9bf695c87aa5acc7695251a4c75c576375c45c5b043af00a7ddf503223030309", + "check_gpg": true + }, + { + "checksum": "sha256:3d5e22e2c2d20d409cc9a878a88dc088d6f02c81652eb0957f95d1abb185f7b7", + "check_gpg": true + }, + { + "checksum": "sha256:3975c15d461cebe50d1f179fb86d288c18f643c32f179bbab13425596ab64001", + "check_gpg": true + }, + { + "checksum": "sha256:e88e27b7ac16c753e20f65cd13ed163019ac702c4195eb75d766acd44cb55263", + "check_gpg": true + }, + { + "checksum": "sha256:c68bed5b576d7baa67a59c726d2340f7c0df7e9b93f90b3a22d3f62e9f99456a", + "check_gpg": true + }, + { + "checksum": "sha256:e0408a5020069e7a4585e3bb4d1bba1b8bf0afe481ff63b70e2221e9c5464cad", + "check_gpg": true + }, + { + "checksum": "sha256:7d0ec23fb8dab882db8b7ec9a9cbb2728d6df2af5c02ee06cc6fa357f210ff09", + "check_gpg": true + }, + { + "checksum": "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552", + "check_gpg": true + }, + { + "checksum": "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b", + "check_gpg": true + }, + { + "checksum": "sha256:cddb050897cd8666090b172711fb7947b3bf844f5a190f8c689fd79a222e1761", + "check_gpg": true + }, + { + "checksum": "sha256:aeac986c84b8038eccd191310bb09f3d396f7c05171ac0fb8691182918459c90", + "check_gpg": true + }, + { + "checksum": "sha256:01ea4ecad746f1309b5c943f2b2709f7e5400d33e4d51c85401205ed18d61621", + "check_gpg": true + }, + { + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "checksum": "sha256:59f289c6f3b0180ae3eddaa974e2f972bf15c48135a2abed9eb2f72dfdae1be4", + "check_gpg": true + }, + { + "checksum": "sha256:159972ccc01cd5840c2aad04818efc965b64c5120b1fcce92a47f45ab1abf4a5", + "check_gpg": true + }, + { + "checksum": "sha256:46b0c36e90fd16371444eb5376fc01232b6e64073e42ed1f141344a9aadbe568", + "check_gpg": true + }, + { + "checksum": "sha256:f7954ba55d833c6341ec87b0cf57817084c705673b8b50aff3e3606fcbdcfbb5", + "check_gpg": true + }, + { + "checksum": "sha256:58c8a3d4ac7c8c318b5596b192dbd0350a1122983b69bfc1cb5eb3ecec5b7cf6", + "check_gpg": true + }, + { + "checksum": "sha256:500d0a1b49962ec79ca00224528d6e599d3845eb60b8b13a678d03edfaa755ec", + "check_gpg": true + }, + { + "checksum": "sha256:4c55460197fe24d0a105e3071824a933069e0b655910fd7ee7335e2396de15dc", + "check_gpg": true + }, + { + "checksum": "sha256:2aafea82072ad28a8b662e32902f66b47166a00b5c9cf19b1dd589f39776560f", + "check_gpg": true + }, + { + "checksum": "sha256:9ac1ef0ef80d7ff65903120f8b2a5a2a5723dce7c9c131e17cea3572cb81d0f4", + "check_gpg": true + }, + { + "checksum": "sha256:0f661b922a9e9cbe82e948ec1d83c6fca6e61e08de50815a5b6c069a64f4e883", + "check_gpg": true + }, + { + "checksum": "sha256:ec48b0cd759656b4c5d8d13dcc81c6fa23914f8e214b4cda1ed08e1896177fe9", + "check_gpg": true + }, + { + "checksum": "sha256:03b9d49b78b7e758eecce6a25782767ec5dc921d28f053b17a651b1c8bb96d7b", + "check_gpg": true + }, + { + "checksum": "sha256:a96e76f00865249f70a3f2ef293946e9786150faa83e37185e61592290817cb4", + "check_gpg": true + }, + { + "checksum": "sha256:2fc552b80866318c0ac934f5385fd2090743701639c318b75138ae985ff5606a", + "check_gpg": true + }, + { + "checksum": "sha256:d877864e501fe38a1b0c7e11572e61c5d9eb9857436541f1c2d5ad2f8bd29b83", + "check_gpg": true + }, + { + "checksum": "sha256:64b0063f6b3a42b712c0ee622328e36ddf94a15da547e3c8da3a4191e0941c92", + "check_gpg": true + }, + { + "checksum": "sha256:99a6e2861b7eb51684d1b83901a7e54caf649b711556a660d93bfef114eab72c", + "check_gpg": true + }, + { + "checksum": "sha256:608a967cbdbad6b7320060e986bf8f8e7f6b61bff5ae6571006397b46a60771c", + "check_gpg": true + }, + { + "checksum": "sha256:5e2a37ee7e1147a446be67d63b1be55f2e82c0ae0a84dd1afc6a3fec64e62804", + "check_gpg": true + }, + { + "checksum": "sha256:566a389a620f634ab341a9a39cffdb1c607b4682224cf3d5ac530b6c57c78d0f", + "check_gpg": true + }, + { + "checksum": "sha256:4e365f48d5c85b82f71e8d000d00cdf7ed3c23cd94c31fbf3543572413541c3d", + "check_gpg": true + }, + { + "checksum": "sha256:a61e3fed8d1c860bf09b5ec5586e30b88b1b1dea157cd371def9fcf72e313a3d", + "check_gpg": true + }, + { + "checksum": "sha256:98d811216e2e0e4ad49925489824210fc3e9b57bb09eefcd4047886375d34f57", + "check_gpg": true + }, + { + "checksum": "sha256:a63ae4aa727a4b75b602a67f1e42946e39dc124e9f1aeb3e795af40ad4e15cbf", + "check_gpg": true + }, + { + "checksum": "sha256:8d17464a13f79b54c8dfe76d716a42d6c875bce408e29344c1ecf916957a649e", + "check_gpg": true + }, + { + "checksum": "sha256:898a918a7adfefc3ce13d10b30b2ec7ccada96155afa15ee3f4e589b3f1baa38", + "check_gpg": true + }, + { + "checksum": "sha256:04826477197ec239d756f81cb6d38fde2f65e71499a8dbaf0c666d93084f1ea3", + "check_gpg": true + }, + { + "checksum": "sha256:1738cf24111bcd0bff08880c4d5efa624c09a2080c901f67ab032ed201a8751e", + "check_gpg": true + }, + { + "checksum": "sha256:5ef4f8487a78a43f7502c055ac77c047ce159da5641e5b61c2669395ae1efe62", + "check_gpg": true + }, + { + "checksum": "sha256:6f7bd7a58d5aed77bbab94aa38edcbc4cac924d72ab6c72ce718f24b6528e1a5", + "check_gpg": true + }, + { + "checksum": "sha256:6bc6909c53c0eb2bad7640b3fb79da5cacf5fd8951dee08347b8d18df1b004f8", + "check_gpg": true + }, + { + "checksum": "sha256:3976706367650c755852d995bbe8c4e6bbd13b6e8e0148b7beddb4aba3679d8a", + "check_gpg": true + }, + { + "checksum": "sha256:5b75073853ff34026cf180d7466314783a7a81defaa43e6b7416a38d9f19230b", + "check_gpg": true + }, + { + "checksum": "sha256:2575f8d1fb953934730b9fe6803bf3de12669dcee78852057ea4e88f9d4d76a4", + "check_gpg": true + }, + { + "checksum": "sha256:e8a13bb46e5149142a1e0a359460c1c65b2cbcbff20f2d0c50f9adbad57538a1", + "check_gpg": true + }, + { + "checksum": "sha256:b9b609d17e9274c1551ac6ebab4b53f6e4a5ae9253db5465c65fdb8c919a09dd", + "check_gpg": true + }, + { + "checksum": "sha256:be8bf30729c71aabe30f2c4cf8e5c43ce3cdf892c218fadf53c0af29a76fd6b3", + "check_gpg": true + }, + { + "checksum": "sha256:d2f7d49bd565c2fec4ca945ae97ac3b8a607f114d3a7558b90b2caaa5871459b", + "check_gpg": true + }, + { + "checksum": "sha256:6b2e3b36c2a3e988f40548688b32ef3ce2e4c7906127215c82736189684a95a6", + "check_gpg": true + }, + { + "checksum": "sha256:0b2a6b7e3b62ff9c02ec3012f08fbf396a7990bf9599b49b75eecbee3b257f7f", + "check_gpg": true + }, + { + "checksum": "sha256:e1e5250ea932beac32caf373ae55b4655c50ae8a1bd9d42e3ceac590a13031ef", + "check_gpg": true + }, + { + "checksum": "sha256:c6ffcbd829ea30ef40fa61095cef03f2b6eafa3228187a478d6d027911f12e2f", + "check_gpg": true + }, + { + "checksum": "sha256:31dacda6745f326be70d854d50ae5d3cd0c9d4f19aeab6b4d09920e1436d8bdc", + "check_gpg": true + }, + { + "checksum": "sha256:618e9a7e3f1f8191beee70d3ad1c8754870887d251480e7e6dd1f3de2d8226d1", + "check_gpg": true + }, + { + "checksum": "sha256:3fb9cec5d598a549e97041993399d49c5943821b1f3441881cf15cb26f38e437", + "check_gpg": true + }, + { + "checksum": "sha256:69f2c758068234b1abc39ffaf94c8825ae4baa9810cc54e5d49a5c891fa98435", + "check_gpg": true + }, + { + "checksum": "sha256:575640462a8c2d0687ea225cc7b6bbf7aa0814e311619ddf6cd16e1bc22f9513", + "check_gpg": true + }, + { + "checksum": "sha256:d2d3b613de0ecf3ae022e5d5d1576858c91b203af6a52a7a9aa36245f0cdbd05", + "check_gpg": true + }, + { + "checksum": "sha256:3308454f1353d5aced0a9574bc969ae272923ef1faa425bd9080de6e56e1bcbb", + "check_gpg": true + }, + { + "checksum": "sha256:d287bfdcebb9fbb31d5f58cc71311f48a85970d0fd92f5beb0193270c155faac", + "check_gpg": true + }, + { + "checksum": "sha256:ead6cd0d8e509f07e36456aff75eca8433821813d675382d28fe4e7dbecc48dc", + "check_gpg": true + }, + { + "checksum": "sha256:a5fa076ed2c83974cacf4ce386bfdc576ce532fba4f8645dda5c2b67efc5d501", + "check_gpg": true + }, + { + "checksum": "sha256:e9c7f59547a9eec5304db7a312b435592f07f7aee4f3db617e5ddfac0f4d048c", + "check_gpg": true + }, + { + "checksum": "sha256:429cf175b6c3b2bedcabf3391ad3166fe6e62259877f309e57500d2c7f1f1882", + "check_gpg": true + }, + { + "checksum": "sha256:311729a146f8833ff882370348d69313322dcf7586b68d5eed192eb633dcd58a", + "check_gpg": true + }, + { + "checksum": "sha256:ddd9b320e97d333bb4b7ccbdf70e401693065177a7d9317c6d7d1b69318209f7", + "check_gpg": true + }, + { + "checksum": "sha256:f2471f1b946309f419a2bf1b4b3ad473d53f7ac0ee15b9c2426eb2e6cb4e87c0", + "check_gpg": true + }, + { + "checksum": "sha256:d1ce6a69f0c2d96a97a04036a5c59deda82b5e1b0843c114f0fb896279ec7bbc", + "check_gpg": true + }, + { + "checksum": "sha256:859b03ef657a7c682ff7f341145a7c2ba9025fd5430f36ecb020eeafc55bba2d", + "check_gpg": true + }, + { + "checksum": "sha256:56f3d59b74bf8ceafea695d10fb7ad4672ec93f824ef9b0508c7bcdedeffb101", + "check_gpg": true + }, + { + "checksum": "sha256:ee5ed9701778c4cb91af4c2e2ef996b9c178d32b652edf4506394cac72fefb96", + "check_gpg": true + }, + { + "checksum": "sha256:8d21bbf2063bb50cf3d12281731fbd8b26dece5f154d7a50f0952695fea6751f", + "check_gpg": true + }, + { + "checksum": "sha256:f11d53128f33f9e73dc21c01159a283cc3fcd2e39f2712dbfa930018ae67fb69", + "check_gpg": true + }, + { + "checksum": "sha256:fb6b61cabfce21597c33c62743c13dd96bcea39aa806a144bc2b2665b48273a8", + "check_gpg": true + }, + { + "checksum": "sha256:a40b4873535c2b0b826063e5248981d1ce0d04ef5ec6d9c21facc07ce2446b40", + "check_gpg": true + }, + { + "checksum": "sha256:77ff28552aba96ce4b80d51a9c390ef4958afad18ede879bf31022f2509e2d90", + "check_gpg": true + }, + { + "checksum": "sha256:c599ffa97fde329ff872bd6db99e8c218601df6549302f89ff747d34ca24042c", + "check_gpg": true + }, + { + "checksum": "sha256:816fe17af41a66dd718eb247273be824b75f53fb539455b58b892528ca12cde5", + "check_gpg": true + }, + { + "checksum": "sha256:20cc74172d531506391309e8f82c6512404ada35f22c68fcd0b83a01dc6e0ca8", + "check_gpg": true + }, + { + "checksum": "sha256:23e335d288f55da26dc77e0d1ceb7cbe4e3890b4e28ff4a2435fc4481a6e737f", + "check_gpg": true + }, + { + "checksum": "sha256:4f37b1e322e3001b076e0128541cc82c180d7054b1c0b7200f46fda4d654cd71", + "check_gpg": true + }, + { + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "checksum": "sha256:7623bcecb8340ed57e1aa2951b13a1c5b1dfefa80eb226f269294df29cb40c08", + "check_gpg": true + }, + { + "checksum": "sha256:d1520137d9cb96cd10a63893b45b4794b120502bdbab0862e001ac2486195aa6", + "check_gpg": true + }, + { + "checksum": "sha256:0c49f27ae0aaf95fbdc52cfb9406c41eefff41b205f85fdc6ef6787ec3af5146", + "check_gpg": true + }, + { + "checksum": "sha256:e78343046ae389b1c11d36f8de0b8bfbb9ded7bdc39fb52b3f719a39047bf42a", + "check_gpg": true + }, + { + "checksum": "sha256:36ce07aa1f90dfdf5ae9824acff24fc3aafe5633b07a022732ca06258e0255b6", + "check_gpg": true + }, + { + "checksum": "sha256:e1deab5e887a199233f9a439d2d20d864d434e9a4ac7fe460f230d368fb3779f", + "check_gpg": true + }, + { + "checksum": "sha256:11e8ee935d9c9d349f4c081d035fc4ee34539af23ef8122e6901b22cf97f346f", + "check_gpg": true + }, + { + "checksum": "sha256:768cc2c561bd6476df45fbd9280bbaeb87d2addcd0c51601d2226a590d7dc872", + "check_gpg": true + }, + { + "checksum": "sha256:82cc8c43bfe0e731ec78e31c8af6250ec1f13989978105a1b38d518470cf5bde", + "check_gpg": true + }, + { + "checksum": "sha256:c1590c5cdfc7aad868c75c54c11a2c7d692001f758ead33aa10f9838955148c4", + "check_gpg": true + }, + { + "checksum": "sha256:c6de19d0d4b8f67957ca6122462090895034495852814f36396bc134905f5f5e", + "check_gpg": true + }, + { + "checksum": "sha256:51f15beba5e5bfc6ff646741b3fbaa3a484ebb40fd8c6c59b8f1f6346dd93e93", + "check_gpg": true + }, + { + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "checksum": "sha256:ce421671bfd14a427771eb3c78b060352a61cca889b1bf1b342c328dd521623d", + "check_gpg": true + }, + { + "checksum": "sha256:02f7f1cdd5cbe11b16e093686db5c584a68db4e6b1015c4d36c0246a54f801bb", + "check_gpg": true + }, + { + "checksum": "sha256:2b1052455234b751e869f22c496bb660dec53eafe198673bab25053e394e41cb", + "check_gpg": true + }, + { + "checksum": "sha256:f2d11878777b28a284e9a571a6a9cf893a97f0935291b10686eb93a2a3dfdfb8", + "check_gpg": true + }, + { + "checksum": "sha256:99c0e924fa7eb70fc9301b692d4ba72ec480af840498b8251f68a419317bd108", + "check_gpg": true + }, + { + "checksum": "sha256:5a32c492b921e9287422006f255833605b328f3efd071609673be161bb4e7f04", + "check_gpg": true + }, + { + "checksum": "sha256:48ee663f069c5019c842f316216ef3bf8dfcbbec479c98d1f2b24749c22e57f3", + "check_gpg": true + }, + { + "checksum": "sha256:23e8c23c89737665a5288a3a171548e94898be9ed4a24c056d8bc851c6800090", + "check_gpg": true + }, + { + "checksum": "sha256:91d628d3e4a82976361ecb306d4f0049aa65c811fdd5051b3f8423b75e4a10e9", + "check_gpg": true + }, + { + "checksum": "sha256:f6d37f25fa7215b7ae185b12f687d60c4363cfb8e35d591595a9b0f379488fc6", + "check_gpg": true + }, + { + "checksum": "sha256:e4e6a5e014442aa8d7768555da9d44e6381569e0c44e61d2d2a06d6692748945", + "check_gpg": true + }, + { + "checksum": "sha256:b04fecd603225051ca56c6674cb72f12f4de0cc1cbbfda0ab7d0af0e655b2c99", + "check_gpg": true + }, + { + "checksum": "sha256:57bd1ce5d776daca117795bc8e3852f1d29a6fc3fc1edd21729d161de2d7798d", + "check_gpg": true + }, + { + "checksum": "sha256:14a759b4daf287d66f5b803b0fbb52621f8429607be109e5d3c313a57cc276e2", + "check_gpg": true + }, + { + "checksum": "sha256:2b24b5729cd74e3b1efe261bfd732fd1995b0e64d76587a3d90762d77cc58c77", + "check_gpg": true + }, + { + "checksum": "sha256:c80fbc5228457b9b1978b098f47d2a66ca5636526965847078edb6f1c302e392", + "check_gpg": true + }, + { + "checksum": "sha256:4fe97b617adfa7c0f97ba5b2b6e1c0d2e2b15c54ba8db66fc389cacc0f1b2b60", + "check_gpg": true + }, + { + "checksum": "sha256:ea68ed6fc06f142c95e907b619a9696146dff1bba308773df12e412d8277eec0", + "check_gpg": true + }, + { + "checksum": "sha256:7027d2c6a004469720e3c64eb7fcb2ace1fffd61ec4380afbf875d59a3876f3a", + "check_gpg": true + }, + { + "checksum": "sha256:af589a85af85270c027bacb5ccaf88c93378d364a7c1436ee7bca1290cf762f7", + "check_gpg": true + }, + { + "checksum": "sha256:1472adb267192ca8a323e544fd9749c4765334fc5779e8de4ee583eff77fc078", + "check_gpg": true + }, + { + "checksum": "sha256:f34cde4c2bd6ab93a697d8c350e98f4d70f897f74fee35a06c25eb4b98f46c9a", + "check_gpg": true + }, + { + "checksum": "sha256:aa3658efc21bcc6d79344eeeaf20285407f6f3b90d905a66a37a8cfc835b2a61", + "check_gpg": true + }, + { + "checksum": "sha256:a2f6ae2742a2aac3f5bb5f1ad5cfa4d9b8fdf7cfd01033246027db7064abaa1f", + "check_gpg": true + }, + { + "checksum": "sha256:e35e30f6477652a93d3c02ec86faa233884aefb2ff9fcf4058909d9736fb2d15", + "check_gpg": true + }, + { + "checksum": "sha256:57bb6739fb8635dfe5300d0e361b99caedce2fb7142db37394734e13d4fa48f8", + "check_gpg": true + }, + { + "checksum": "sha256:57a9aff6b8d5ecdb66015e4dfcec0a171ae18751e1d5f9a339361cc45b9a8e2f", + "check_gpg": true + }, + { + "checksum": "sha256:7c66a9a33e131200e13a638613ec054a94be901399424df27a0b4f94532ee36d", + "check_gpg": true + }, + { + "checksum": "sha256:80434d5f64abdd521330153fc0c983c5923a833ab59f57ec3bc3a8cf1d748c8c", + "check_gpg": true + }, + { + "checksum": "sha256:a39fb89e06572d188309dc4daf1d23e21be190e59f9ef8ff3c3ccceaefe505da", + "check_gpg": true + }, + { + "checksum": "sha256:253f9f540248a0bdd537ee8ea4f670752af74d85be98ea81593a30710e1e5808", + "check_gpg": true + }, + { + "checksum": "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47", + "check_gpg": true + }, + { + "checksum": "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70", + "check_gpg": true + }, + { + "checksum": "sha256:284d46ebd3d3fd4a915b624a75e9931c948807fcb13fed01681e623d0ba7b1ce", + "check_gpg": true + }, + { + "checksum": "sha256:a084b365795c7262fa09b2fc590dfbabbbf30cb9c1c7f9b5274eae4c5d761482", + "check_gpg": true + }, + { + "checksum": "sha256:1c2edf26d16b55bac2824452c1c584ff52acf8477920f384f6019f647c241450", + "check_gpg": true + }, + { + "checksum": "sha256:84fa6157b3e986b9ce67cc03bfed4e2b96fa7d075df70e038fbcd2b486737d35", + "check_gpg": true + }, + { + "checksum": "sha256:f8e118c35bb5f8ae3dca517ef38c7a38bbdd491011af9e1c4c5c7523f13e6f9c", + "check_gpg": true + }, + { + "checksum": "sha256:332ef2695e27190536747f53bab03ba5df0ca903564f6071623d99fa524d6d2f", + "check_gpg": true + }, + { + "checksum": "sha256:339895e6b901ff4c81966893ec7da9848da3acea26e5b202033bfb79dfcbb6cb", + "check_gpg": true + }, + { + "checksum": "sha256:1d530a23a8ea2b831068593fe6aa7a32923c6276504def5a85ad065aaac9ac5f", + "check_gpg": true + }, + { + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "checksum": "sha256:264828f11342a94f056fb27a2e78fc5e14226230b3dbac8bdad6a4c8598fd24f", + "check_gpg": true + }, + { + "checksum": "sha256:504b334756e12eefb42d44e53da61fb4321b860e3b5f380b5c21c5c3784a8c75", + "check_gpg": true + }, + { + "checksum": "sha256:9c8771c8c5eb38351dd30f994133bc9149ec93813d1a7c2cd2dd8f7dc7431d49", + "check_gpg": true + }, + { + "checksum": "sha256:a9f81157c1f977adf96403fe534e2fecc9f3a82a58c5b53fd58aad9954873790", + "check_gpg": true + }, + { + "checksum": "sha256:f1419585dbb27e3bf76aab5a5f8fb9580816a7a0e7fc93377b97646a0259a794", + "check_gpg": true + }, + { + "checksum": "sha256:d8d28daa56fa4894a767957aa9948cad6d274e2b70d8b10aa69d9356c8a22eff", + "check_gpg": true + }, + { + "checksum": "sha256:424e1777ae71117d20055ffa5f0ed2ead59a8076528450cf7536e18c70624bd8", + "check_gpg": true + }, + { + "checksum": "sha256:eb35167d6095465a58611b80853213af5838f271b75fa1a5e3c051a04a9078a7", + "check_gpg": true + }, + { + "checksum": "sha256:0a80e2a0ede76c98337c220f01dfadacace037b48f09fe072c5d33f356e50b8e", + "check_gpg": true + }, + { + "checksum": "sha256:54c024db70df7966590050dfc5dcc1315174e10c3a57e118ea10178238d70889", + "check_gpg": true + }, + { + "checksum": "sha256:a7f5877c9ebfb44347765c7deb266e53fdd62403ccc0a7ff17fdb101bc28caff", + "check_gpg": true + }, + { + "checksum": "sha256:dc6b772101df9f3029c2cd80a10663663ad877e129c8d724902f5cc9f1785e60", + "check_gpg": true + }, + { + "checksum": "sha256:4d4853ac550a0cfc5b3bcbcb7f12c81461393a6aa0e96a23648985f8a7f2e8e2", + "check_gpg": true + }, + { + "checksum": "sha256:6d4c3ae013d07e50d085b3419dfd41ac79ba11ada62d8c4570d21764ef6f11ec", + "check_gpg": true + }, + { + "checksum": "sha256:bf92fc95c282da9c76018679d9180fb6c98aaf864f66bbef630941040579f92b", + "check_gpg": true + }, + { + "checksum": "sha256:eb1992de281538771ba578a65eabe620dc35aef6c621d8c5351a2ba38ac440f4", + "check_gpg": true + }, + { + "checksum": "sha256:5ba547e1c2c515b3ca091e04c0a6b15b297e25b567a6613a07bd2bee41f39684", + "check_gpg": true + }, + { + "checksum": "sha256:855131926b9a3764835de3e7171b9ce579847ce161f3ba8406a5b6fdfa781f55", + "check_gpg": true + }, + { + "checksum": "sha256:07f4ccd9f3cb20ceb4483adb673adfef15394b246bd93a84f169eb07acb68d71", + "check_gpg": true + }, + { + "checksum": "sha256:44a92faf198bf015f5e94cf42ae615215fe0a6c0697b1f6c32d205bd450e7ce4", + "check_gpg": true + }, + { + "checksum": "sha256:b0d153ea83902561a9e60c9c244a497c3b19a9c4e40cf9e8437d0221af0f2ca3", + "check_gpg": true + }, + { + "checksum": "sha256:0ae87f94df2e114f287d60e9041ac159349f51322e32eeefa19a96db0acb78e7", + "check_gpg": true + }, + { + "checksum": "sha256:ee3977f4ee783225903f964c60932795d8c11307043e73527b394dec02487047", + "check_gpg": true + }, + { + "checksum": "sha256:0b8baef3612880639ed59ae79475086aac8ce236fd35977e0d87305d0bb9a529", + "check_gpg": true + }, + { + "checksum": "sha256:dc8a707761f45962518e251f87a5e1d83199fbd1fe1e249f89ed457528c1fba1", + "check_gpg": true + }, + { + "checksum": "sha256:2efe5f560e0c56dec38c9456ae8482a5a9006833d257de4a2a6246d261f647e2", + "check_gpg": true + }, + { + "checksum": "sha256:fabb9a86711308b3dbf146e8f155ab8e857172455e805aab912500bf157368ac", + "check_gpg": true + }, + { + "checksum": "sha256:974bdde5f821c071bcbe0de191677981685cb8290952be75a7ab15747988a99e", + "check_gpg": true + }, + { + "checksum": "sha256:cf480f0df368b3cc9f36e42d5d573afa93fcb3889614dee172c0ad367785f520", + "check_gpg": true + }, + { + "checksum": "sha256:d2be7b0f17350a8a0f301617cb1d7b024076bc16986abaab94453ec1cee1f1f2", + "check_gpg": true + }, + { + "checksum": "sha256:9ff53c6f07da3adeaa20da76c1c78b886710b460db7a316415f8bc9182096fb0", + "check_gpg": true + }, + { + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "checksum": "sha256:84365601f93db7fda27e4d89826d4893830572e98df35275abdf15659cfe3fc5", + "check_gpg": true + }, + { + "checksum": "sha256:73a7249de97f0ad66bc1a867ac5b5d08b741ab152d4dd7ce45cc231d64126b58", + "check_gpg": true + }, + { + "checksum": "sha256:4cca3f986ddbd38cfbfb6d1c8d336a1aaed78f7da1f38356ce1e034ba35ec492", + "check_gpg": true + }, + { + "checksum": "sha256:700acef9fc8051726700645696fd67b0fc3b7fec08290ef9c2964fe7a9d3e8cd", + "check_gpg": true + }, + { + "checksum": "sha256:e17ef6f7d4f1869ff5813d6f8f2983cd6f5cd23d4a666b7ae19154636e911644", + "check_gpg": true + }, + { + "checksum": "sha256:f0b9a02ed639d2cff7a85262d440c65f2fa2ba318166b45d969a2802f102535b", + "check_gpg": true + }, + { + "checksum": "sha256:ee6dbb4914a35ee8a816ecde34d29221e3f4622324f6287c328e8ac22ae572ad", + "check_gpg": true + }, + { + "checksum": "sha256:cdc526097cd2fecb75e44ad11a69b10eb7804f310298c064c3b931515d4f3d5c", + "check_gpg": true + }, + { + "checksum": "sha256:d35fe17711337362bdf09540523bddbdc16406d0ff7650043a3cdd1cfc222ae8", + "check_gpg": true + }, + { + "checksum": "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653", + "check_gpg": true + }, + { + "checksum": "sha256:a314b2a8ed8a9e7e80aedfb1f76c75910d0da9549d072c424c2dddbe63a09874", + "check_gpg": true + }, + { + "checksum": "sha256:63ff108f557096a9724053c37e37d3c2af1a1ec0b33124480b3742ff3da46292", + "check_gpg": true + }, + { + "checksum": "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f", + "check_gpg": true + }, + { + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "checksum": "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02", + "check_gpg": true + }, + { + "checksum": "sha256:a349c40034b5a181cab1bd409384ddb901c274e110b16721d434f5bf42e92c0f", + "check_gpg": true + }, + { + "checksum": "sha256:c45162d6aeab69ce8f58353c88e7e068c59f36921989aa49ac23738f7c9cea82", + "check_gpg": true + }, + { + "checksum": "sha256:d429648fe5b233a46fdbfc31a283ca4b6be5177ae84f3e7e63fec5f9bebd17d1", + "check_gpg": true + }, + { + "checksum": "sha256:edee134762456246cd8de577597e350b60a04bc43ac4a47622b9a263ddd74cf2", + "check_gpg": true + }, + { + "checksum": "sha256:8221111dc9a9aa5c68805f153c3fbe5314c8a0f335af29685733b958253dd278", + "check_gpg": true + }, + { + "checksum": "sha256:1135e96b6f9ed29e4ed4c0f060876891a244442a503f0b18ab238589da20d464", + "check_gpg": true + }, + { + "checksum": "sha256:e98119ac7a707287668e7a9a74ef2809ee5f555af04f52775367e428e08dbb33", + "check_gpg": true + }, + { + "checksum": "sha256:2d9a2e736dd5231df3c5c748ce0ba5a75a409dacfe73f14676781f32d565a7df", + "check_gpg": true + }, + { + "checksum": "sha256:047f9e29fcfa56be98ca3f42249f3ccb2a93df99f2438e3983e2064025f0d79d", + "check_gpg": true + }, + { + "checksum": "sha256:143c50c0663f963c7689c1cec43b81cf1433d5d3b67eb8233ba06506c1b3e095", + "check_gpg": true + }, + { + "checksum": "sha256:7a5aadb5da769b563cf1e548d8cabd26c00720a67df7e4a445a5a9ae5b0891b8", + "check_gpg": true + }, + { + "checksum": "sha256:436c2f09d2de629da293ab82af47b7697f4a8c151127cbd993d0e8605a4f423c", + "check_gpg": true + }, + { + "checksum": "sha256:fe6f4202a8e7e52add27c6d2e2af65884a974bcde4b5e89979badb782719ca1a", + "check_gpg": true + }, + { + "checksum": "sha256:67bbf2a262929b1b4c2fb9532c471da5ab2c0f642b0df770cf947c0131a9e1ad", + "check_gpg": true + }, + { + "checksum": "sha256:32cc0c295cd013db597cd31868736be3708edb25ab1952fdd0ed879ec5e8d191", + "check_gpg": true + }, + { + "checksum": "sha256:47383173cbb135c2590998a4e82c6f9d40a516450d2fbd1e169ace92337b7fd5", + "check_gpg": true + }, + { + "checksum": "sha256:f85469c0c19ce86e8fdd0dd5a3e6e5c9b78e3436ae9ce70ba86b2b4a3794f693", + "check_gpg": true + }, + { + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "checksum": "sha256:1b65944efe48ba0cca34011891480a1db29a7e95dad058376bfca34d68fb0791", + "check_gpg": true + }, + { + "checksum": "sha256:5a7e957102a23c9924398fe45f5cdec66edcd10adcad7130d6ebf02c2706ad49", + "check_gpg": true + }, + { + "checksum": "sha256:682af90a049fa78429d5ebd194700609f762e59ceb6c4ca28b17e7f4fd1683aa", + "check_gpg": true + }, + { + "checksum": "sha256:6ed7f318c5e93b59254d7b7652131f33db713eeb61f52413f21e533069ed24bf", + "check_gpg": true + }, + { + "checksum": "sha256:32d56c08f75c7626f1a0efd7aa05ca2ea3649d55445b5ac42a2f7f10fad8b46b", + "check_gpg": true + }, + { + "checksum": "sha256:32cc578c8da626a8c1a5316a59d482967a32547be6c077f73fb90e11fb0f1e6a", + "check_gpg": true + }, + { + "checksum": "sha256:d54f02fc39b3e87253808f665918d26ffe901f1228e25121c908661b47ba266b", + "check_gpg": true + }, + { + "checksum": "sha256:6c6f1152899318bdc0500cfb0b0cdbbc19ba0e017b5888ece1358250caa2629f", + "check_gpg": true + }, + { + "checksum": "sha256:f958a85509e118c832458a5f502e5d59695eb3df96ae0bd603203a82d188b2ae", + "check_gpg": true + }, + { + "checksum": "sha256:1e049e86c5dd5c4d6737d47dd194d553ffbd65c81a4077cf6e1029a0fde80fb5", + "check_gpg": true + }, + { + "checksum": "sha256:513e24bc56f483b171664ea4dec51cc0cce1f9cc8f4939cde8a65ea976ed952d", + "check_gpg": true + }, + { + "checksum": "sha256:1f44142da3bf5e09b98488b40ed8a2d5dbd841c36bb4553749e6d65d7fe5c15c", + "check_gpg": true + }, + { + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "checksum": "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142", + "check_gpg": true + }, + { + "checksum": "sha256:b1094a9a9725546315d6eac7f792d5875a5f0c950cd84e43fc2fbb3e639ee43e", + "check_gpg": true + }, + { + "checksum": "sha256:bd2e7c9e3df976723ade08f16667b31044b678e62ee29e024ad193af6d9a28e1", + "check_gpg": true + }, + { + "checksum": "sha256:b6498a7a8056483e1d42362b1fb27bd6c54ed7cc7bd180cae20d64a13ae4c88c", + "check_gpg": true + }, + { + "checksum": "sha256:78b600621e00f4a0acc8f58de056ae9393ce4e1cded56837b4e557c1bc84b06b", + "check_gpg": true + }, + { + "checksum": "sha256:5f2bdb8f9a18257ee80a243e1be96e3ef6fa660e37fdf7b4443d8e8f7abf86ef", + "check_gpg": true + }, + { + "checksum": "sha256:d02489175567be57a48a3edf5deb66d100e99df73a37b26062fea4d6af014cbc", + "check_gpg": true + }, + { + "checksum": "sha256:8d00fa6cdfcc955dc4e14d0f8b6ba6217d2dd0334ea0e1aa44694c9e0ad0b06d", + "check_gpg": true + }, + { + "checksum": "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663", + "check_gpg": true + }, + { + "checksum": "sha256:ae9a3e144f31b6172d266b984c8385fba94bdcf3002d3182a4118f8d29f5f718", + "check_gpg": true + }, + { + "checksum": "sha256:c958419128c1330b50c741113394b147da1ccda055ab1ee19fabc199f68971ea", + "check_gpg": true + }, + { + "checksum": "sha256:7292bf1d13ef336ef411ef695f87c7c7ecd21a13e05c86cc475930ca61117503", + "check_gpg": true + }, + { + "checksum": "sha256:6ce37675749741e4ea05e934aa5b7376d596cc117bd317199d0a15e2236aa058", + "check_gpg": true + }, + { + "checksum": "sha256:d01f7e794c3dd3f38de1b69fd360db4b858826eba4e6fd4edc79c8a74774ab00", + "check_gpg": true + }, + { + "checksum": "sha256:46acc45e148eea376c3aa8e83a4d3bf1cf66fa35ccc670f592017428ce75ca77", + "check_gpg": true + }, + { + "checksum": "sha256:5d87d829a1d939c520b25f1c790cd1f3bd6c8b769f4f21303ec5e16a3b509445", + "check_gpg": true + }, + { + "checksum": "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108", + "check_gpg": true + }, + { + "checksum": "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a", + "check_gpg": true + }, + { + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "checksum": "sha256:2ad8824aa48378aa741fbd863104d950ad4f669566af2d4f433be6d9afd8ead6", + "check_gpg": true + }, + { + "checksum": "sha256:c05d42fba4fc1ebc2df9ee49f971c744937d8b307626c90b3cf79bf91619863a", + "check_gpg": true + }, + { + "checksum": "sha256:ac7985d2591bc2bd1d90efdb68751a3d7435cf902b3895cb308e830ce48f1f44", + "check_gpg": true + }, + { + "checksum": "sha256:81169dd168c02aed3b1e57e5af16ec3dbdfb74c15373ee40e9eec5aac60a3d25", + "check_gpg": true + }, + { + "checksum": "sha256:054f0851c8b42292ac5c24ea649764b022dacc6d40a00e333abacc67e2c2a215", + "check_gpg": true + }, + { + "checksum": "sha256:d9641a59b33831e32fa61f3479152d5eac33e0526b32e67ae33f1c1102c69d4b", + "check_gpg": true + }, + { + "checksum": "sha256:121e2a4e79f6dbf37af2182cb12ff28345db993a7f83de344f6f5fbcf5a705a5", + "check_gpg": true + }, + { + "checksum": "sha256:077e72f02d2eef2a2bfd8ab057527a02005806e731303fbff1e28f61716f2943", + "check_gpg": true + }, + { + "checksum": "sha256:cb478c89af0caac9a40c32a2b4a48242b16ff9e2e6daa375b2de88e396f524dd", + "check_gpg": true + }, + { + "checksum": "sha256:af594688a568ec4db7dae9d60390dce1ab547527bbf2415752f211de3748b97f", + "check_gpg": true + }, + { + "checksum": "sha256:0ff534e46d982b5a213eb562e3cb30d1935a25a9f433d325457069eec9131217", + "check_gpg": true + }, + { + "checksum": "sha256:7487afe052c79100e906a4d2cb2ee1043410ca10a8e60a65d95776f63a513595", + "check_gpg": true + }, + { + "checksum": "sha256:e29356f3ea2554e8be23401a08a941f406d337cf6b38e7ee99926fb9b3f1f541", + "check_gpg": true + }, + { + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "checksum": "sha256:a436dca481707ca10a0c5bb189d9a25ff76c4f66f1d32b0847dc6d13ba46c17a", + "check_gpg": true + }, + { + "checksum": "sha256:7bd78cde4202401947dea928274579074bc78fdae096057e788c1b6a86a10ecc", + "check_gpg": true + }, + { + "checksum": "sha256:6728ee255cb8c80b85f6d610bfd795025939a77d2591ad61fe1c4f9d657c386e", + "check_gpg": true + }, + { + "checksum": "sha256:42945876fb8932bad3e50b50349af4bdabe713d7be1c8efc1b0f7b042e556aa5", + "check_gpg": true + }, + { + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "checksum": "sha256:acd149c4bf17a15db75fca1f19e34784a9ed275e19c0721aa78f5eb94797a685", + "check_gpg": true + }, + { + "checksum": "sha256:07cd9ddc7f7a16dc9739647af90706cfbcf70b281f5474e622b0769e211e0dc8", + "check_gpg": true + }, + { + "checksum": "sha256:477474e74c5f30884f0a4571445ecf987b521f61139fc0ba7d516e075f47e7ce", + "check_gpg": true + }, + { + "checksum": "sha256:06cf2f5439e0ce2c7fc655bdf4868d3c47a5fbe5b71e9dc305232a7732896e14", + "check_gpg": true + }, + { + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "checksum": "sha256:a4f7846fb262ad61885f64b8a354f9303fe5ce129378e4781eefa0bffdef828e", + "check_gpg": true + }, + { + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "checksum": "sha256:58a44f9472918a511d3eee0b3f08926dab2ebf4994584403bd196e6c92a06f5a", + "check_gpg": true + }, + { + "checksum": "sha256:9ed0b44834b6a637c70aa00ab243aecb534f9aea461e1388652ab039898239c8", + "check_gpg": true + }, + { + "checksum": "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488", + "check_gpg": true + }, + { + "checksum": "sha256:c1893a7c51ebb0371b87e2179d6e0e5d0fbb71acb4234cf4adc293af11c75578", + "check_gpg": true + }, + { + "checksum": "sha256:f23f467c4099be4cb4dfdc1be13b7a7bb6e8c6da7c21182658a034827b64df39", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "vfs_type": "ext4", + "path": "/", + "options": "defaults", + "freq": 1, + "passno": 1 + }, + { + "uuid": "46BB-8120", + "vfs_type": "vfat", + "path": "/boot/efi", + "options": "umask=0077,shortname=winnt", + "passno": 2 + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "kernel_opts": "ro no_timer_check console=ttyS0,115200n8 console=tty1 biosdevname=0 net.ifnames=0 console=ttyS0,115200", + "uefi": { + "vendor": "fedora" + } + } + }, + { + "name": "org.osbuild.systemd", + "options": { + "enabled_services": [ + "cloud-init.service" + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "raw", + "filename": "image.raw", + "size": 6442450944, + "ptuuid": "8DFDFF87-C96E-EA48-A3A6-9408F1F6B1EF", + "pttype": "gpt", + "partitions": [ + { + "start": 2048, + "size": 972800, + "type": "c12a7328-f81f-11d2-ba4b-00a0c93ec93b", + "uuid": "02C1E068-1D2F-4DA3-91FD-8DD76A955C9D", + "filesystem": { + "type": "vfat", + "uuid": "46BB-8120", + "label": "EFI System Partition", + "mountpoint": "/boot/efi" + } + }, + { + "start": 976896, + "uuid": "8D760010-FAAE-46D1-9E5B-4A2EAC5030CD", + "filesystem": { + "type": "ext4", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.111", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm", + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/acl-2.2.53-4.fc31.aarch64.rpm", + "checksum": "sha256:a516dfa62a327d440fe38b93af81dbecb112fe45fff0f227583c451631479122", + "check_gpg": true + }, + { + "name": "adobe-source-code-pro-fonts", + "epoch": 0, + "version": "2.030.1.050", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm", + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "name": "adwaita-cursor-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "name": "adwaita-icon-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/alternatives-1.11-5.fc31.aarch64.rpm", + "checksum": "sha256:0b1ddcc8c3096814bc5027133fb077ef587b49a1a4e4d6426327c75cf2066b11", + "check_gpg": true + }, + { + "name": "at-spi2-atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.aarch64.rpm", + "checksum": "sha256:a6caaef9bed1bd17292e1fdde4efee9730f8cff5826a9cb6c952e6f3cd052243", + "check_gpg": true + }, + { + "name": "at-spi2-core", + "epoch": 0, + "version": "2.34.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.aarch64.rpm", + "checksum": "sha256:42a4e01c47e28b71cafb658a5993b7f4b7692ac6b916878d580fecab7ae9d16c", + "check_gpg": true + }, + { + "name": "atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/atk-2.34.1-1.fc31.aarch64.rpm", + "checksum": "sha256:9c08d246ce73d8741777f290e7110ff9dae97a15e09f3469317ed7c8e9fb64ce", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.aarch64.rpm", + "checksum": "sha256:b25f063f82484e4fa42d1ad31a2cf23e882a99dc1ccb191b24e14a6a789d87a0", + "check_gpg": true + }, + { + "name": "avahi-libs", + "epoch": 0, + "version": "0.7", + "release": "20.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/avahi-libs-0.7-20.fc31.aarch64.rpm", + "checksum": "sha256:71ec6fd79756af905e474553f4ca7ae6985e32615df0ee2f2f487c8496e7160f", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "8.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm", + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.7", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/bash-5.0.7-3.fc31.aarch64.rpm", + "checksum": "sha256:181173a9353f593105978b8e4038b7bf53fd22c63f4514fd271a74d48f9c59f8", + "check_gpg": true + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.7", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/brotli-1.0.7-6.fc31.aarch64.rpm", + "checksum": "sha256:8dbce1e34a19be338f49b792874abc861fd64acc5653f7f5cd523d5e5865897e", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.aarch64.rpm", + "checksum": "sha256:995ee9636461072248d5c6792d3852fb1ab277a622b18eb7d3c231133446dd7d", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm", + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "name": "cairo", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cairo-1.16.0-6.fc31.aarch64.rpm", + "checksum": "sha256:9ffb9a376d1df3d3d394ec2f8533f939547d8ccd634f1f77db52970630215d71", + "check_gpg": true + }, + { + "name": "cairo-gobject", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.aarch64.rpm", + "checksum": "sha256:23908e2eae2ccfd2efb1d19cdf46e3dca4680ac2d562c1c96f7fb0d22859fc82", + "check_gpg": true + }, + { + "name": "colord-libs", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/colord-libs-1.4.4-2.fc31.aarch64.rpm", + "checksum": "sha256:ffa75117ea710fef320f1ae878e8c81e7a056386dea78aa5787dc091c5a100a5", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/coreutils-8.31-4.fc31.aarch64.rpm", + "checksum": "sha256:0f3591f036f0be85a9d28e9099d43a8b2e5a500a9588825c1dd994d1a323ceba", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/coreutils-common-8.31-4.fc31.aarch64.rpm", + "checksum": "sha256:bb305f3ddc74c4c30ae838a2bbff3cd325eea8427622c7f82e4d06a564bace6f", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cracklib-2.9.6-21.fc31.aarch64.rpm", + "checksum": "sha256:1088699171a35873eb5a776f0212ceff2bc9d67e3f1d8f2e107bbf751c36ca90", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.aarch64.rpm", + "checksum": "sha256:99e8930364200470ee5bd065dccb7c4c1caa4863c6f8975740643fe9d2485c18", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20190816", + "release": "4.gitbb9bf99.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm", + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.2.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.aarch64.rpm", + "checksum": "sha256:6e76674266f1e136186e3f005ddbf13791b1fea78cd30e8501f3dd1b209fa9f2", + "check_gpg": true + }, + { + "name": "cups-libs", + "epoch": 1, + "version": "2.2.12", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cups-libs-2.2.12-2.fc31.aarch64.rpm", + "checksum": "sha256:920d2d8df80fb92e358f4925bbd2891977c98e0b9d2f69b44f1e74bec26d6a1e", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/curl-7.66.0-1.fc31.aarch64.rpm", + "checksum": "sha256:9c039f6f6e5385344ea56a6490a472b0f475d8d7612b422191d2152b8e1fc55a", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.aarch64.rpm", + "checksum": "sha256:1b85657077726361a4b157a909796649fe93131fdc4aa67fd5329adc8d2fc833", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-1.12.16-3.fc31.aarch64.rpm", + "checksum": "sha256:3a7d7619061a4adb275ef4b41d993375ad7863863741624186add801800e524f", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "21", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-broker-21-6.fc31.aarch64.rpm", + "checksum": "sha256:504971d079493a49afb8fb7f067f5dfcc59f3e007afcc63734c15fe1066e4b4d", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm", + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-libs-1.12.16-3.fc31.aarch64.rpm", + "checksum": "sha256:8fd19268d460d7f49f3dd96644a2b8a3076a7a7ccbe3e35e27eeafc6ab8d9c95", + "check_gpg": true + }, + { + "name": "dconf", + "epoch": 0, + "version": "0.34.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dconf-0.34.0-1.fc31.aarch64.rpm", + "checksum": "sha256:0458f6a42cd644322b6eb24b01f0f75de47d5e10ae077797dfada1ce2a1f7fcd", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/deltarpm-3.6.2-2.fc31.aarch64.rpm", + "checksum": "sha256:4bb03b2162523fa694e0e44f46b04263ff0f5dab22c3e93124ec9b5650af2002", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/device-mapper-1.02.163-2.fc31.aarch64.rpm", + "checksum": "sha256:e7e629e7e89f970660407fb22c8b706c4c9a65a5f43286ddeef1e165b446fcaa", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.aarch64.rpm", + "checksum": "sha256:30e07680d23bfb5d4b2727893337619c56f13b46daec2f13f8985f642bf84250", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/diffutils-3.7-3.fc31.aarch64.rpm", + "checksum": "sha256:a00e85fb7902d8869492e32816c7834830682745eeab1efba264bdd3185f479d", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "9.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dosfstools-4.1-9.fc31.aarch64.rpm", + "checksum": "sha256:c36dd24858c4e8d207eb0f87af16e4c599a16bb981416d47db467b70a841fe08", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.aarch64.rpm", + "checksum": "sha256:ec305ea347ab987f5a00574bc3eaebaf2412483ed1b79615fdd86ca18ab146bc", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.aarch64.rpm", + "checksum": "sha256:2dd8505a96714cdb79829a1377e36a53e05cc9b65a7f35a258ca3e4aaa76c700", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm", + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-libelf-0.177-1.fc31.aarch64.rpm", + "checksum": "sha256:00e59535d45094b7d47e25c93d21179f3138839968776107df99fa0678f1440f", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-libs-0.177-1.fc31.aarch64.rpm", + "checksum": "sha256:fe6afcdab2793cd75a838a758a282d4581f1272f3f32df6a58777c0721e54b2e", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/expat-2.2.8-1.fc31.aarch64.rpm", + "checksum": "sha256:5745966147d1651d663d9e7d37a740ebbb4daee49b5cb7a2e61375ea6b37404e", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm", + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-release-31-1.noarch.rpm", + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-release-common-31-1.noarch.rpm", + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-repos-31-1.noarch.rpm", + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/file-libs-5.37-3.fc31.aarch64.rpm", + "checksum": "sha256:f63c88d8b294addf2791a5b291e3ab13750a24fe92fec65c96d365edad767f57", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.12", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/filesystem-3.12-2.fc31.aarch64.rpm", + "checksum": "sha256:a108fbc1ba9886604483ec05ef2150c961adb0906db5f9ea46c239bfcdf06b55", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fipscheck-1.5.0-7.fc31.aarch64.rpm", + "checksum": "sha256:0edff1a5f04f7f5d47537b4c049b95331f9ad33963c9c63ca4b13345a37296d4", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.aarch64.rpm", + "checksum": "sha256:81100039c817e2f3703fb365c63d6d891f3f977dd9e670c3c9b12662de3c255b", + "check_gpg": true + }, + { + "name": "fontconfig", + "epoch": 0, + "version": "2.13.92", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fontconfig-2.13.92-3.fc31.aarch64.rpm", + "checksum": "sha256:e30906c30d3dea50c62e74bc7aa870eb928af4c6fb474c894f55ef6ba41f5841", + "check_gpg": true + }, + { + "name": "fontpackages-filesystem", + "epoch": 0, + "version": "1.44", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm", + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.10.0", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/freetype-2.10.0-3.fc31.aarch64.rpm", + "checksum": "sha256:72bc6a2b459ee27dcd7c213d3aab5a993fc90fcffba2ef02fab7ae3857d379f7", + "check_gpg": true + }, + { + "name": "fribidi", + "epoch": 0, + "version": "1.0.5", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fribidi-1.0.5-4.fc31.aarch64.rpm", + "checksum": "sha256:8c4b392a5e1ed79b7a5b302d8fb14d0470b3a6306a7b36aee275acf0daa61537", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fuse-libs-2.9.9-8.fc31.aarch64.rpm", + "checksum": "sha256:7f23849dcd356019c4e83058e9e49d544300ad7b9a6f6a7528831e393ca1197c", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gawk-5.0.1-5.fc31.aarch64.rpm", + "checksum": "sha256:e6a986f10b17ba67e86c417251d855e1eeac0ca1c85c2ee7ae3bfc7d6c966087", + "check_gpg": true + }, + { + "name": "gcr", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gcr-3.33.4-1.fc31.aarch64.rpm", + "checksum": "sha256:3b16753c7590bc968a693e97ce9d318d58e1483fd2999a874becd95abc9d35ff", + "check_gpg": true + }, + { + "name": "gcr-base", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gcr-base-3.33.4-1.fc31.aarch64.rpm", + "checksum": "sha256:9404d90bbb474b30b80c90719df01d784b925127e9710f12c44c72d14c2708fc", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.aarch64.rpm", + "checksum": "sha256:f74b53f33812f65d12377946d363a773e48cf6bc6c4bb2acec5bb4a048861b88", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.aarch64.rpm", + "checksum": "sha256:6e78ce3d460b7e1377f487fed5563999fb44d310c441798a4d23d34960e23d45", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2-modules", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.aarch64.rpm", + "checksum": "sha256:b3d8740cee57c5025ef88e9d71df141a6600fdf26215969acae393a2b052892d", + "check_gpg": true + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glib-networking-2.62.1-1.fc31.aarch64.rpm", + "checksum": "sha256:c84f89f65e2a691d7fcbc7021c3c5d796e0f39483e3fe95e83579c630575b78a", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glib2-2.62.1-1.fc31.aarch64.rpm", + "checksum": "sha256:f3d5fd211e3faf1b61be64fd3f1659dd640a873c66747a5cc341f888e4179dea", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-2.30-5.fc31.aarch64.rpm", + "checksum": "sha256:abf022d05aa55e7aa8d0736b899d86613d30a7e1751b04666920f367d4311a1a", + "check_gpg": true + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-all-langpacks-2.30-5.fc31.aarch64.rpm", + "checksum": "sha256:28cdab6faa95e1d7d1c32d977627ef5a86b262e2b0e20e76ddd73f598ee126e4", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-common-2.30-5.fc31.aarch64.rpm", + "checksum": "sha256:e3046e1e508453e332277ab86ebf67df0106edca2c6e8e54ba2bffb76f9ed4d7", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gmp-6.1.2-10.fc31.aarch64.rpm", + "checksum": "sha256:b9ad5c82b3b83871269ee705ee12896efd1e3485b0d2005c9cff2a100100cd34", + "check_gpg": true + }, + { + "name": "gnome-keyring", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.aarch64.rpm", + "checksum": "sha256:81f5b3786ab1b634016c0c066379dda739386b4b1d639111b4575748e27caa56", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnupg2-2.2.17-2.fc31.aarch64.rpm", + "checksum": "sha256:12c732f4a960848bd4fbc8111c2c0cf584799b1fdf0eb89c2cdcb26da5bc03b8", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.aarch64.rpm", + "checksum": "sha256:0a4100f50b31df500afc5d255dd87117553df7032447f3e226196fd64f9c3f47", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.10", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnutls-3.6.10-1.fc31.aarch64.rpm", + "checksum": "sha256:8e10cf2b0645e342b001338a4463c5a02a8a302c25affba37da700a987e2c064", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gpgme-1.13.1-3.fc31.aarch64.rpm", + "checksum": "sha256:4290088d905017724f6c909cb1b3193055a6aff62cd20e39ea196694f90753c8", + "check_gpg": true + }, + { + "name": "graphite2", + "epoch": 0, + "version": "1.3.13", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/graphite2-1.3.13-1.fc31.aarch64.rpm", + "checksum": "sha256:0cb1a66cb3bb44797a8aeb47db85db1f6c0fcf4d4571d8a5f8981f83b51c08af", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grep-3.3-3.fc31.aarch64.rpm", + "checksum": "sha256:7102de1c840d5b915a40fde5c408f182d677ecdd5126dedf033ebb63b5419607", + "check_gpg": true + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.aarch64.rpm", + "checksum": "sha256:82bc08ef5d8049d3d07a5eb00f61d3f94d7577ef814f6791352f75835bff477a", + "check_gpg": true + }, + { + "name": "gtk-update-icon-cache", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.aarch64.rpm", + "checksum": "sha256:0064998ad79a6250297b379852b5a06932d8e074270bea02d75888758755bd23", + "check_gpg": true + }, + { + "name": "gtk3", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gtk3-3.24.12-3.fc31.aarch64.rpm", + "checksum": "sha256:6b11c1e14d4a02edf8beee776f9f896729bd0f28c66cb4c1d2bd021cdffc6aa0", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gzip-1.10-1.fc31.aarch64.rpm", + "checksum": "sha256:4de89d25d09c57b09a51ab93fdf84ade211e835c16d3ba6e4e261dcc0c4e50a1", + "check_gpg": true + }, + { + "name": "harfbuzz", + "epoch": 0, + "version": "2.6.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/harfbuzz-2.6.1-2.fc31.aarch64.rpm", + "checksum": "sha256:3ad68b7569e311a1ca7da4da7b42021a7acb001ab4b2cc6e63b3ba0f87cbd55c", + "check_gpg": true + }, + { + "name": "hicolor-icon-theme", + "epoch": 0, + "version": "0.17", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm", + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.aarch64.rpm", + "checksum": "sha256:c935f74584d7289ca58d1b23cbdacd38450d351dbc3dcd0bc713723c4d50a545", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.3", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iptables-libs-1.8.3-5.fc31.aarch64.rpm", + "checksum": "sha256:d6b491f91a567b4245d07d28a0547cb1b8e97a1f814e3f7d76dd685bb6658b64", + "check_gpg": true + }, + { + "name": "jasper-libs", + "epoch": 0, + "version": "2.0.14", + "release": "9.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/jasper-libs-2.0.14-9.fc31.aarch64.rpm", + "checksum": "sha256:ea35fa3f5c16e074a59d66ff9037e48ca7c0126444e09daf640b7a37dacd76ad", + "check_gpg": true + }, + { + "name": "jbigkit-libs", + "epoch": 0, + "version": "2.1", + "release": "17.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/jbigkit-libs-2.1-17.fc31.aarch64.rpm", + "checksum": "sha256:4549e51322d0b10016f1daa8dedc807fddf7d2d4e77719baa696de15b88821bb", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/json-c-0.13.1-6.fc31.aarch64.rpm", + "checksum": "sha256:fd9ac175e5af929bb942528904d6e6e48caed800e22a7a45825d535bdc1537ba", + "check_gpg": true + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/json-glib-1.4.4-3.fc31.aarch64.rpm", + "checksum": "sha256:fb2b070b96ed58a31da7889452ce3cdbfb60f6161a3e2f0ce2738b4d3facfd2d", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/keyutils-libs-1.6-3.fc31.aarch64.rpm", + "checksum": "sha256:3975c15d461cebe50d1f179fb86d288c18f643c32f179bbab13425596ab64001", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kmod-libs-26-4.fc31.aarch64.rpm", + "checksum": "sha256:c68bed5b576d7baa67a59c726d2340f7c0df7e9b93f90b3a22d3f62e9f99456a", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.17", + "release": "45.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/krb5-libs-1.17-45.fc31.aarch64.rpm", + "checksum": "sha256:7d0ec23fb8dab882db8b7ec9a9cbb2728d6df2af5c02ee06cc6fa357f210ff09", + "check_gpg": true + }, + { + "name": "lcms2", + "epoch": 0, + "version": "2.9", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lcms2-2.9-6.fc31.aarch64.rpm", + "checksum": "sha256:cddb050897cd8666090b172711fb7947b3bf844f5a190f8c689fd79a222e1761", + "check_gpg": true + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libX11-1.6.8-3.fc31.aarch64.rpm", + "checksum": "sha256:01ea4ecad746f1309b5c943f2b2709f7e5400d33e4d51c85401205ed18d61621", + "check_gpg": true + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm", + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXau-1.0.9-2.fc31.aarch64.rpm", + "checksum": "sha256:59f289c6f3b0180ae3eddaa974e2f972bf15c48135a2abed9eb2f72dfdae1be4", + "check_gpg": true + }, + { + "name": "libXcomposite", + "epoch": 0, + "version": "0.4.4", + "release": "17.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXcomposite-0.4.4-17.fc31.aarch64.rpm", + "checksum": "sha256:159972ccc01cd5840c2aad04818efc965b64c5120b1fcce92a47f45ab1abf4a5", + "check_gpg": true + }, + { + "name": "libXcursor", + "epoch": 0, + "version": "1.1.15", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXcursor-1.1.15-6.fc31.aarch64.rpm", + "checksum": "sha256:46b0c36e90fd16371444eb5376fc01232b6e64073e42ed1f141344a9aadbe568", + "check_gpg": true + }, + { + "name": "libXdamage", + "epoch": 0, + "version": "1.1.4", + "release": "17.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXdamage-1.1.4-17.fc31.aarch64.rpm", + "checksum": "sha256:f7954ba55d833c6341ec87b0cf57817084c705673b8b50aff3e3606fcbdcfbb5", + "check_gpg": true + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXext-1.3.4-2.fc31.aarch64.rpm", + "checksum": "sha256:58c8a3d4ac7c8c318b5596b192dbd0350a1122983b69bfc1cb5eb3ecec5b7cf6", + "check_gpg": true + }, + { + "name": "libXfixes", + "epoch": 0, + "version": "5.0.3", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXfixes-5.0.3-10.fc31.aarch64.rpm", + "checksum": "sha256:500d0a1b49962ec79ca00224528d6e599d3845eb60b8b13a678d03edfaa755ec", + "check_gpg": true + }, + { + "name": "libXft", + "epoch": 0, + "version": "2.3.3", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXft-2.3.3-2.fc31.aarch64.rpm", + "checksum": "sha256:4c55460197fe24d0a105e3071824a933069e0b655910fd7ee7335e2396de15dc", + "check_gpg": true + }, + { + "name": "libXi", + "epoch": 0, + "version": "1.7.10", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXi-1.7.10-2.fc31.aarch64.rpm", + "checksum": "sha256:2aafea82072ad28a8b662e32902f66b47166a00b5c9cf19b1dd589f39776560f", + "check_gpg": true + }, + { + "name": "libXinerama", + "epoch": 0, + "version": "1.1.4", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXinerama-1.1.4-4.fc31.aarch64.rpm", + "checksum": "sha256:9ac1ef0ef80d7ff65903120f8b2a5a2a5723dce7c9c131e17cea3572cb81d0f4", + "check_gpg": true + }, + { + "name": "libXrandr", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXrandr-1.5.2-2.fc31.aarch64.rpm", + "checksum": "sha256:0f661b922a9e9cbe82e948ec1d83c6fca6e61e08de50815a5b6c069a64f4e883", + "check_gpg": true + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXrender-0.9.10-10.fc31.aarch64.rpm", + "checksum": "sha256:ec48b0cd759656b4c5d8d13dcc81c6fa23914f8e214b4cda1ed08e1896177fe9", + "check_gpg": true + }, + { + "name": "libXtst", + "epoch": 0, + "version": "1.2.3", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXtst-1.2.3-10.fc31.aarch64.rpm", + "checksum": "sha256:03b9d49b78b7e758eecce6a25782767ec5dc921d28f053b17a651b1c8bb96d7b", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libacl-2.2.53-4.fc31.aarch64.rpm", + "checksum": "sha256:a96e76f00865249f70a3f2ef293946e9786150faa83e37185e61592290817cb4", + "check_gpg": true + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.111", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libaio-0.3.111-6.fc31.aarch64.rpm", + "checksum": "sha256:d22fbf5e32d176db1414b0854c78f0ea1b5f489a83490ee4e3f67bc5e98905af", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libarchive-3.4.0-1.fc31.aarch64.rpm", + "checksum": "sha256:2fc552b80866318c0ac934f5385fd2090743701639c318b75138ae985ff5606a", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libargon2-20171227-3.fc31.aarch64.rpm", + "checksum": "sha256:d877864e501fe38a1b0c7e11572e61c5d9eb9857436541f1c2d5ad2f8bd29b83", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libassuan-2.5.3-2.fc31.aarch64.rpm", + "checksum": "sha256:64b0063f6b3a42b712c0ee622328e36ddf94a15da547e3c8da3a4191e0941c92", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "7.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libattr-2.4.48-7.fc31.aarch64.rpm", + "checksum": "sha256:99a6e2861b7eb51684d1b83901a7e54caf649b711556a660d93bfef114eab72c", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libblkid-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:5e2a37ee7e1147a446be67d63b1be55f2e82c0ae0a84dd1afc6a3fec64e62804", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcap-2.26-6.fc31.aarch64.rpm", + "checksum": "sha256:566a389a620f634ab341a9a39cffdb1c607b4682224cf3d5ac530b6c57c78d0f", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcap-ng-0.7.9-8.fc31.aarch64.rpm", + "checksum": "sha256:4e365f48d5c85b82f71e8d000d00cdf7ed3c23cd94c31fbf3543572413541c3d", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcom_err-1.45.3-1.fc31.aarch64.rpm", + "checksum": "sha256:98d811216e2e0e4ad49925489824210fc3e9b57bb09eefcd4047886375d34f57", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcomps-0.1.11-3.fc31.aarch64.rpm", + "checksum": "sha256:a63ae4aa727a4b75b602a67f1e42946e39dc124e9f1aeb3e795af40ad4e15cbf", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcurl-7.66.0-1.fc31.aarch64.rpm", + "checksum": "sha256:898a918a7adfefc3ce13d10b30b2ec7ccada96155afa15ee3f4e589b3f1baa38", + "check_gpg": true + }, + { + "name": "libdatrie", + "epoch": 0, + "version": "0.2.9", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdatrie-0.2.9-10.fc31.aarch64.rpm", + "checksum": "sha256:04826477197ec239d756f81cb6d38fde2f65e71499a8dbaf0c666d93084f1ea3", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdb-5.3.28-38.fc31.aarch64.rpm", + "checksum": "sha256:1738cf24111bcd0bff08880c4d5efa624c09a2080c901f67ab032ed201a8751e", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdb-utils-5.3.28-38.fc31.aarch64.rpm", + "checksum": "sha256:5ef4f8487a78a43f7502c055ac77c047ce159da5641e5b61c2669395ae1efe62", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdnf-0.35.3-6.fc31.aarch64.rpm", + "checksum": "sha256:6bc6909c53c0eb2bad7640b3fb79da5cacf5fd8951dee08347b8d18df1b004f8", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "28.20190324cvs.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.aarch64.rpm", + "checksum": "sha256:3976706367650c755852d995bbe8c4e6bbd13b6e8e0148b7beddb4aba3679d8a", + "check_gpg": true + }, + { + "name": "libepoxy", + "epoch": 0, + "version": "1.5.3", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libepoxy-1.5.3-4.fc31.aarch64.rpm", + "checksum": "sha256:5b75073853ff34026cf180d7466314783a7a81defaa43e6b7416a38d9f19230b", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "7.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libevent-2.1.8-7.fc31.aarch64.rpm", + "checksum": "sha256:2575f8d1fb953934730b9fe6803bf3de12669dcee78852057ea4e88f9d4d76a4", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libfdisk-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:e8a13bb46e5149142a1e0a359460c1c65b2cbcbff20f2d0c50f9adbad57538a1", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "23.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libffi-3.1-23.fc31.aarch64.rpm", + "checksum": "sha256:b9b609d17e9274c1551ac6ebab4b53f6e4a5ae9253db5465c65fdb8c919a09dd", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgcc-9.2.1-1.fc31.aarch64.rpm", + "checksum": "sha256:be8bf30729c71aabe30f2c4cf8e5c43ce3cdf892c218fadf53c0af29a76fd6b3", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgcrypt-1.8.5-1.fc31.aarch64.rpm", + "checksum": "sha256:d2f7d49bd565c2fec4ca945ae97ac3b8a607f114d3a7558b90b2caaa5871459b", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgomp-9.2.1-1.fc31.aarch64.rpm", + "checksum": "sha256:6b2e3b36c2a3e988f40548688b32ef3ce2e4c7906127215c82736189684a95a6", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgpg-error-1.36-2.fc31.aarch64.rpm", + "checksum": "sha256:0b2a6b7e3b62ff9c02ec3012f08fbf396a7990bf9599b49b75eecbee3b257f7f", + "check_gpg": true + }, + { + "name": "libgusb", + "epoch": 0, + "version": "0.3.0", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgusb-0.3.0-5.fc31.aarch64.rpm", + "checksum": "sha256:e1e5250ea932beac32caf373ae55b4655c50ae8a1bd9d42e3ceac590a13031ef", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libidn2-2.2.0-2.fc31.aarch64.rpm", + "checksum": "sha256:c6ffcbd829ea30ef40fa61095cef03f2b6eafa3228187a478d6d027911f12e2f", + "check_gpg": true + }, + { + "name": "libjpeg-turbo", + "epoch": 0, + "version": "2.0.2", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.aarch64.rpm", + "checksum": "sha256:618e9a7e3f1f8191beee70d3ad1c8754870887d251480e7e6dd1f3de2d8226d1", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libksba-1.3.5-10.fc31.aarch64.rpm", + "checksum": "sha256:575640462a8c2d0687ea225cc7b6bbf7aa0814e311619ddf6cd16e1bc22f9513", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "9.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmetalink-0.1.3-9.fc31.aarch64.rpm", + "checksum": "sha256:d287bfdcebb9fbb31d5f58cc71311f48a85970d0fd92f5beb0193270c155faac", + "check_gpg": true + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "20.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmodman-2.0.1-20.fc31.aarch64.rpm", + "checksum": "sha256:a5fa076ed2c83974cacf4ce386bfdc576ce532fba4f8645dda5c2b67efc5d501", + "check_gpg": true + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.15", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.aarch64.rpm", + "checksum": "sha256:e9c7f59547a9eec5304db7a312b435592f07f7aee4f3db617e5ddfac0f4d048c", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmount-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:429cf175b6c3b2bedcabf3391ad3166fe6e62259877f309e57500d2c7f1f1882", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.39.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnghttp2-1.39.2-1.fc31.aarch64.rpm", + "checksum": "sha256:56f3d59b74bf8ceafea695d10fb7ad4672ec93f824ef9b0508c7bcdedeffb101", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "5.20180605git4a062cf.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.aarch64.rpm", + "checksum": "sha256:8d21bbf2063bb50cf3d12281731fbd8b26dece5f154d7a50f0952695fea6751f", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.0", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpcap-1.9.0-4.fc31.aarch64.rpm", + "checksum": "sha256:fb6b61cabfce21597c33c62743c13dd96bcea39aa806a144bc2b2665b48273a8", + "check_gpg": true + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.37", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpng-1.6.37-2.fc31.aarch64.rpm", + "checksum": "sha256:77ff28552aba96ce4b80d51a9c390ef4958afad18ede879bf31022f2509e2d90", + "check_gpg": true + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "14.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libproxy-0.4.15-14.fc31.aarch64.rpm", + "checksum": "sha256:c599ffa97fde329ff872bd6db99e8c218601df6549302f89ff747d34ca24042c", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpsl-0.21.0-2.fc31.aarch64.rpm", + "checksum": "sha256:816fe17af41a66dd718eb247273be824b75f53fb539455b58b892528ca12cde5", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpwquality-1.4.1-1.fc31.aarch64.rpm", + "checksum": "sha256:20cc74172d531506391309e8f82c6512404ada35f22c68fcd0b83a01dc6e0ca8", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.10.5", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/librepo-1.10.5-1.fc31.aarch64.rpm", + "checksum": "sha256:4f37b1e322e3001b076e0128541cc82c180d7054b1c0b7200f46fda4d654cd71", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.10.1", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm", + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libseccomp-2.4.1-1.fc31.aarch64.rpm", + "checksum": "sha256:7623bcecb8340ed57e1aa2951b13a1c5b1dfefa80eb226f269294df29cb40c08", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.19.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsecret-0.19.1-1.fc31.aarch64.rpm", + "checksum": "sha256:d1520137d9cb96cd10a63893b45b4794b120502bdbab0862e001ac2486195aa6", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libselinux-2.9-5.fc31.aarch64.rpm", + "checksum": "sha256:0c49f27ae0aaf95fbdc52cfb9406c41eefff41b205f85fdc6ef6787ec3af5146", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libselinux-utils-2.9-5.fc31.aarch64.rpm", + "checksum": "sha256:e78343046ae389b1c11d36f8de0b8bfbb9ded7bdc39fb52b3f719a39047bf42a", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsemanage-2.9-3.fc31.aarch64.rpm", + "checksum": "sha256:36ce07aa1f90dfdf5ae9824acff24fc3aafe5633b07a022732ca06258e0255b6", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsepol-2.9-2.fc31.aarch64.rpm", + "checksum": "sha256:e1deab5e887a199233f9a439d2d20d864d434e9a4ac7fe460f230d368fb3779f", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsigsegv-2.11-8.fc31.aarch64.rpm", + "checksum": "sha256:11e8ee935d9c9d349f4c081d035fc4ee34539af23ef8122e6901b22cf97f346f", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsmartcols-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:768cc2c561bd6476df45fbd9280bbaeb87d2addcd0c51601d2226a590d7dc872", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.5", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsolv-0.7.5-3.fc31.aarch64.rpm", + "checksum": "sha256:82cc8c43bfe0e731ec78e31c8af6250ec1f13989978105a1b38d518470cf5bde", + "check_gpg": true + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.68.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsoup-2.68.2-1.fc31.aarch64.rpm", + "checksum": "sha256:c1590c5cdfc7aad868c75c54c11a2c7d692001f758ead33aa10f9838955148c4", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libss-1.45.3-1.fc31.aarch64.rpm", + "checksum": "sha256:c6de19d0d4b8f67957ca6122462090895034495852814f36396bc134905f5f5e", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libssh-0.9.0-6.fc31.aarch64.rpm", + "checksum": "sha256:51f15beba5e5bfc6ff646741b3fbaa3a484ebb40fd8c6c59b8f1f6346dd93e93", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm", + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libstdc++-9.2.1-1.fc31.aarch64.rpm", + "checksum": "sha256:5a32c492b921e9287422006f255833605b328f3efd071609673be161bb4e7f04", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.14", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtasn1-4.14-2.fc31.aarch64.rpm", + "checksum": "sha256:23e8c23c89737665a5288a3a171548e94898be9ed4a24c056d8bc851c6800090", + "check_gpg": true + }, + { + "name": "libthai", + "epoch": 0, + "version": "0.1.28", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libthai-0.1.28-3.fc31.aarch64.rpm", + "checksum": "sha256:b04fecd603225051ca56c6674cb72f12f4de0cc1cbbfda0ab7d0af0e655b2c99", + "check_gpg": true + }, + { + "name": "libtiff", + "epoch": 0, + "version": "4.0.10", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtiff-4.0.10-6.fc31.aarch64.rpm", + "checksum": "sha256:57bd1ce5d776daca117795bc8e3852f1d29a6fc3fc1edd21729d161de2d7798d", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "2.rc3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.aarch64.rpm", + "checksum": "sha256:14a759b4daf287d66f5b803b0fbb52621f8429607be109e5d3c313a57cc276e2", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libunistring-0.9.10-6.fc31.aarch64.rpm", + "checksum": "sha256:2b24b5729cd74e3b1efe261bfd732fd1995b0e64d76587a3d90762d77cc58c77", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.22", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libusbx-1.0.22-4.fc31.aarch64.rpm", + "checksum": "sha256:c80fbc5228457b9b1978b098f47d2a66ca5636526965847078edb6f1c302e392", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "17.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libutempter-1.1.6-17.fc31.aarch64.rpm", + "checksum": "sha256:ea68ed6fc06f142c95e907b619a9696146dff1bba308773df12e412d8277eec0", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libuuid-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:7027d2c6a004469720e3c64eb7fcb2ace1fffd61ec4380afbf875d59a3876f3a", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libverto-0.3.0-8.fc31.aarch64.rpm", + "checksum": "sha256:af589a85af85270c027bacb5ccaf88c93378d364a7c1436ee7bca1290cf762f7", + "check_gpg": true + }, + { + "name": "libwayland-client", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-client-1.17.0-2.fc31.aarch64.rpm", + "checksum": "sha256:1472adb267192ca8a323e544fd9749c4765334fc5779e8de4ee583eff77fc078", + "check_gpg": true + }, + { + "name": "libwayland-cursor", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.aarch64.rpm", + "checksum": "sha256:f34cde4c2bd6ab93a697d8c350e98f4d70f897f74fee35a06c25eb4b98f46c9a", + "check_gpg": true + }, + { + "name": "libwayland-egl", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.aarch64.rpm", + "checksum": "sha256:aa3658efc21bcc6d79344eeeaf20285407f6f3b90d905a66a37a8cfc835b2a61", + "check_gpg": true + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxcb-1.13.1-3.fc31.aarch64.rpm", + "checksum": "sha256:a2f6ae2742a2aac3f5bb5f1ad5cfa4d9b8fdf7cfd01033246027db7064abaa1f", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxcrypt-4.4.10-1.fc31.aarch64.rpm", + "checksum": "sha256:e35e30f6477652a93d3c02ec86faa233884aefb2ff9fcf4058909d9736fb2d15", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.8.4", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.aarch64.rpm", + "checksum": "sha256:57a9aff6b8d5ecdb66015e4dfcec0a171ae18751e1d5f9a339361cc45b9a8e2f", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.9", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxml2-2.9.9-3.fc31.aarch64.rpm", + "checksum": "sha256:7c66a9a33e131200e13a638613ec054a94be901399424df27a0b4f94532ee36d", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libyaml-0.2.2-2.fc31.aarch64.rpm", + "checksum": "sha256:80434d5f64abdd521330153fc0c983c5923a833ab59f57ec3bc3a8cf1d748c8c", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libzstd-1.4.2-1.fc31.aarch64.rpm", + "checksum": "sha256:a39fb89e06572d188309dc4daf1d23e21be190e59f9ef8ff3c3ccceaefe505da", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lua-libs-5.3.5-6.fc31.aarch64.rpm", + "checksum": "sha256:a084b365795c7262fa09b2fc590dfbabbbf30cb9c1c7f9b5274eae4c5d761482", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lz4-libs-1.9.1-1.fc31.aarch64.rpm", + "checksum": "sha256:1c2edf26d16b55bac2824452c1c584ff52acf8477920f384f6019f647c241450", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mkpasswd-5.5.2-1.fc31.aarch64.rpm", + "checksum": "sha256:f8e118c35bb5f8ae3dca517ef38c7a38bbdd491011af9e1c4c5c7523f13e6f9c", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mpfr-3.1.6-5.fc31.aarch64.rpm", + "checksum": "sha256:339895e6b901ff4c81966893ec7da9848da3acea26e5b202033bfb79dfcbb6cb", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-6.1-12.20190803.fc31.aarch64.rpm", + "checksum": "sha256:1d530a23a8ea2b831068593fe6aa7a32923c6276504def5a85ad065aaac9ac5f", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm", + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.aarch64.rpm", + "checksum": "sha256:264828f11342a94f056fb27a2e78fc5e14226230b3dbac8bdad6a4c8598fd24f", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/nettle-3.5.1-3.fc31.aarch64.rpm", + "checksum": "sha256:9c8771c8c5eb38351dd30f994133bc9149ec93813d1a7c2cd2dd8f7dc7431d49", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/npth-1.6-3.fc31.aarch64.rpm", + "checksum": "sha256:f1419585dbb27e3bf76aab5a5f8fb9580816a7a0e7fc93377b97646a0259a794", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openldap-2.4.47-3.fc31.aarch64.rpm", + "checksum": "sha256:d8d28daa56fa4894a767957aa9948cad6d274e2b70d8b10aa69d9356c8a22eff", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssh-8.0p1-8.fc31.1.aarch64.rpm", + "checksum": "sha256:424e1777ae71117d20055ffa5f0ed2ead59a8076528450cf7536e18c70624bd8", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.aarch64.rpm", + "checksum": "sha256:eb35167d6095465a58611b80853213af5838f271b75fa1a5e3c051a04a9078a7", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-1.1.1d-2.fc31.aarch64.rpm", + "checksum": "sha256:54c024db70df7966590050dfc5dcc1315174e10c3a57e118ea10178238d70889", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.aarch64.rpm", + "checksum": "sha256:a7f5877c9ebfb44347765c7deb266e53fdd62403ccc0a7ff17fdb101bc28caff", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.aarch64.rpm", + "checksum": "sha256:dc6b772101df9f3029c2cd80a10663663ad877e129c8d724902f5cc9f1785e60", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.aarch64.rpm", + "checksum": "sha256:6d4c3ae013d07e50d085b3419dfd41ac79ba11ada62d8c4570d21764ef6f11ec", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.aarch64.rpm", + "checksum": "sha256:bf92fc95c282da9c76018679d9180fb6c98aaf864f66bbef630941040579f92b", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "18.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pam-1.3.1-18.fc31.aarch64.rpm", + "checksum": "sha256:eb1992de281538771ba578a65eabe620dc35aef6c621d8c5351a2ba38ac440f4", + "check_gpg": true + }, + { + "name": "pango", + "epoch": 0, + "version": "1.44.6", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pango-1.44.6-1.fc31.aarch64.rpm", + "checksum": "sha256:5ba547e1c2c515b3ca091e04c0a6b15b297e25b567a6613a07bd2bee41f39684", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.43", + "release": "2.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pcre-8.43-2.fc31.1.aarch64.rpm", + "checksum": "sha256:44a92faf198bf015f5e94cf42ae615215fe0a6c0697b1f6c32d205bd450e7ce4", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.33", + "release": "14.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pcre2-10.33-14.fc31.aarch64.rpm", + "checksum": "sha256:b0d153ea83902561a9e60c9c244a497c3b19a9c4e40cf9e8437d0221af0f2ca3", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pinentry-1.1.0-6.fc31.aarch64.rpm", + "checksum": "sha256:ee3977f4ee783225903f964c60932795d8c11307043e73527b394dec02487047", + "check_gpg": true + }, + { + "name": "pixman", + "epoch": 0, + "version": "0.38.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pixman-0.38.4-1.fc31.aarch64.rpm", + "checksum": "sha256:0b8baef3612880639ed59ae79475086aac8ce236fd35977e0d87305d0bb9a529", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/policycoreutils-2.9-5.fc31.aarch64.rpm", + "checksum": "sha256:974bdde5f821c071bcbe0de191677981685cb8290952be75a7ab15747988a99e", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "18.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/popt-1.16-18.fc31.aarch64.rpm", + "checksum": "sha256:d2be7b0f17350a8a0f301617cb1d7b024076bc16986abaab94453ec1cee1f1f2", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm", + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm", + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-3.7.4-5.fc31.aarch64.rpm", + "checksum": "sha256:84365601f93db7fda27e4d89826d4893830572e98df35275abdf15659cfe3fc5", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-gpg-1.13.1-3.fc31.aarch64.rpm", + "checksum": "sha256:d429648fe5b233a46fdbfc31a283ca4b6be5177ae84f3e7e63fec5f9bebd17d1", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.aarch64.rpm", + "checksum": "sha256:edee134762456246cd8de577597e350b60a04bc43ac4a47622b9a263ddd74cf2", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.aarch64.rpm", + "checksum": "sha256:7a5aadb5da769b563cf1e548d8cabd26c00720a67df7e4a445a5a9ae5b0891b8", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.aarch64.rpm", + "checksum": "sha256:436c2f09d2de629da293ab82af47b7697f4a8c151127cbd993d0e8605a4f423c", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libs-3.7.4-5.fc31.aarch64.rpm", + "checksum": "sha256:fe6f4202a8e7e52add27c6d2e2af65884a974bcde4b5e89979badb782719ca1a", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-rpm-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:513e24bc56f483b171664ea4dec51cc0cce1f9cc8f4939cde8a65ea976ed952d", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-unbound-1.9.3-1.fc31.aarch64.rpm", + "checksum": "sha256:b6498a7a8056483e1d42362b1fb27bd6c54ed7cc7bd180cae20d64a13ae4c88c", + "check_gpg": true + }, + { + "name": "qemu-img", + "epoch": 2, + "version": "4.1.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/q/qemu-img-4.1.0-2.fc31.aarch64.rpm", + "checksum": "sha256:64206147fbbabe1e050f17442a2a3d1458b27beea0d8f3ff9e258a2842dd7a01", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.aarch64.rpm", + "checksum": "sha256:5f2bdb8f9a18257ee80a243e1be96e3ef6fa660e37fdf7b4443d8e8f7abf86ef", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/readline-8.0-3.fc31.aarch64.rpm", + "checksum": "sha256:d02489175567be57a48a3edf5deb66d100e99df73a37b26062fea4d6af014cbc", + "check_gpg": true + }, + { + "name": "rest", + "epoch": 0, + "version": "0.8.1", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rest-0.8.1-6.fc31.aarch64.rpm", + "checksum": "sha256:8d00fa6cdfcc955dc4e14d0f8b6ba6217d2dd0334ea0e1aa44694c9e0ad0b06d", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:ae9a3e144f31b6172d266b984c8385fba94bdcf3002d3182a4118f8d29f5f718", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:c958419128c1330b50c741113394b147da1ccda055ab1ee19fabc199f68971ea", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-libs-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:7292bf1d13ef336ef411ef695f87c7c7ecd21a13e05c86cc475930ca61117503", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:d01f7e794c3dd3f38de1b69fd360db4b858826eba4e6fd4edc79c8a74774ab00", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:46acc45e148eea376c3aa8e83a4d3bf1cf66fa35ccc670f592017428ce75ca77", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sed-4.5-4.fc31.aarch64.rpm", + "checksum": "sha256:5d87d829a1d939c520b25f1c790cd1f3bd6c8b769f4f21303ec5e16a3b509445", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.3", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm", + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "16.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/shadow-utils-4.6-16.fc31.aarch64.rpm", + "checksum": "sha256:2ad8824aa48378aa741fbd863104d950ad4f669566af2d4f433be6d9afd8ead6", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.14", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/shared-mime-info-1.14-1.fc31.aarch64.rpm", + "checksum": "sha256:c05d42fba4fc1ebc2df9ee49f971c744937d8b307626c90b3cf79bf91619863a", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.29.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.aarch64.rpm", + "checksum": "sha256:81169dd168c02aed3b1e57e5af16ec3dbdfb74c15373ee40e9eec5aac60a3d25", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-243-4.gitef67743.fc31.aarch64.rpm", + "checksum": "sha256:af594688a568ec4db7dae9d60390dce1ab547527bbf2415752f211de3748b97f", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.aarch64.rpm", + "checksum": "sha256:7487afe052c79100e906a4d2cb2ee1043410ca10a8e60a65d95776f63a513595", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.aarch64.rpm", + "checksum": "sha256:e29356f3ea2554e8be23401a08a941f406d337cf6b38e7ee99926fb9b3f1f541", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm", + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/tar-1.32-2.fc31.aarch64.rpm", + "checksum": "sha256:e0af6b40e51fe0b9f68367355219aa56717888d2a07c10a001cc8667de1a5a2f", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/trousers-0.3.13-13.fc31.aarch64.rpm", + "checksum": "sha256:7bd78cde4202401947dea928274579074bc78fdae096057e788c1b6a86a10ecc", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/trousers-lib-0.3.13-13.fc31.aarch64.rpm", + "checksum": "sha256:6728ee255cb8c80b85f6d610bfd795025939a77d2591ad61fe1c4f9d657c386e", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/tss2-1331-2.fc31.aarch64.rpm", + "checksum": "sha256:42945876fb8932bad3e50b50349af4bdabe713d7be1c8efc1b0f7b042e556aa5", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm", + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/u/unbound-libs-1.9.3-1.fc31.aarch64.rpm", + "checksum": "sha256:acd149c4bf17a15db75fca1f19e34784a9ed275e19c0721aa78f5eb94797a685", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/u/util-linux-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:07cd9ddc7f7a16dc9739647af90706cfbcf70b281f5474e622b0769e211e0dc8", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm", + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.27", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm", + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xz-5.2.4-6.fc31.aarch64.rpm", + "checksum": "sha256:58a44f9472918a511d3eee0b3f08926dab2ebf4994584403bd196e6c92a06f5a", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xz-libs-5.2.4-6.fc31.aarch64.rpm", + "checksum": "sha256:9ed0b44834b6a637c70aa00ab243aecb534f9aea461e1388652ab039898239c8", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.2", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.aarch64.rpm", + "checksum": "sha256:c1893a7c51ebb0371b87e2179d6e0e5d0fbb71acb4234cf4adc293af11c75578", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "19.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/z/zlib-1.2.11-19.fc31.aarch64.rpm", + "checksum": "sha256:f23f467c4099be4cb4dfdc1be13b7a7bb6e8c6da7c21182658a034827b64df39", + "check_gpg": true + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.20.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/NetworkManager-1.20.4-1.fc31.aarch64.rpm", + "checksum": "sha256:b37d963f89a7e0d466e1317da6cd2c20b3ce3ec9789e1027c16176734f88c4fc", + "check_gpg": true + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.20.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/NetworkManager-libnm-1.20.4-1.fc31.aarch64.rpm", + "checksum": "sha256:f195c83de6568cf550a3b2d70725697196c1a9269cddb9b825f5a887de9d6eed", + "check_gpg": true + }, + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.111", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm", + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/acl-2.2.53-4.fc31.aarch64.rpm", + "checksum": "sha256:a516dfa62a327d440fe38b93af81dbecb112fe45fff0f227583c451631479122", + "check_gpg": true + }, + { + "name": "adobe-source-code-pro-fonts", + "epoch": 0, + "version": "2.030.1.050", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm", + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "name": "adwaita-cursor-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "name": "adwaita-icon-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/alternatives-1.11-5.fc31.aarch64.rpm", + "checksum": "sha256:0b1ddcc8c3096814bc5027133fb077ef587b49a1a4e4d6426327c75cf2066b11", + "check_gpg": true + }, + { + "name": "at-spi2-atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.aarch64.rpm", + "checksum": "sha256:a6caaef9bed1bd17292e1fdde4efee9730f8cff5826a9cb6c952e6f3cd052243", + "check_gpg": true + }, + { + "name": "at-spi2-core", + "epoch": 0, + "version": "2.34.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.aarch64.rpm", + "checksum": "sha256:42a4e01c47e28b71cafb658a5993b7f4b7692ac6b916878d580fecab7ae9d16c", + "check_gpg": true + }, + { + "name": "atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/atk-2.34.1-1.fc31.aarch64.rpm", + "checksum": "sha256:9c08d246ce73d8741777f290e7110ff9dae97a15e09f3469317ed7c8e9fb64ce", + "check_gpg": true + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/audit-3.0-0.12.20190507gitf58ec40.fc31.aarch64.rpm", + "checksum": "sha256:88831a57114969801a557d700451a70337f944b868a3d792d47e6e9e91961f3c", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.aarch64.rpm", + "checksum": "sha256:b25f063f82484e4fa42d1ad31a2cf23e882a99dc1ccb191b24e14a6a789d87a0", + "check_gpg": true + }, + { + "name": "avahi-libs", + "epoch": 0, + "version": "0.7", + "release": "20.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/avahi-libs-0.7-20.fc31.aarch64.rpm", + "checksum": "sha256:71ec6fd79756af905e474553f4ca7ae6985e32615df0ee2f2f487c8496e7160f", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "8.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm", + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.7", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/bash-5.0.7-3.fc31.aarch64.rpm", + "checksum": "sha256:181173a9353f593105978b8e4038b7bf53fd22c63f4514fd271a74d48f9c59f8", + "check_gpg": true + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.7", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/brotli-1.0.7-6.fc31.aarch64.rpm", + "checksum": "sha256:8dbce1e34a19be338f49b792874abc861fd64acc5653f7f5cd523d5e5865897e", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.aarch64.rpm", + "checksum": "sha256:995ee9636461072248d5c6792d3852fb1ab277a622b18eb7d3c231133446dd7d", + "check_gpg": true + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.15.0", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/c-ares-1.15.0-4.fc31.aarch64.rpm", + "checksum": "sha256:1bdeed5fd5907e0cacd5706ebc93ade09462a0c71e2316d9841e33a896b99b87", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm", + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "name": "cairo", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cairo-1.16.0-6.fc31.aarch64.rpm", + "checksum": "sha256:9ffb9a376d1df3d3d394ec2f8533f939547d8ccd634f1f77db52970630215d71", + "check_gpg": true + }, + { + "name": "cairo-gobject", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.aarch64.rpm", + "checksum": "sha256:23908e2eae2ccfd2efb1d19cdf46e3dca4680ac2d562c1c96f7fb0d22859fc82", + "check_gpg": true + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "2.9", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/checkpolicy-2.9-2.fc31.aarch64.rpm", + "checksum": "sha256:089d4c5c48e89cd1444f283571fce20fbf5f1b20f3a5ff1ce74266bbc2cd0fec", + "check_gpg": true + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/chrony-3.5-4.fc31.aarch64.rpm", + "checksum": "sha256:21d9ceffd6fb52d235a95e4d7708d719eac758a9dfd80ba2d6119dfdc46c80ff", + "check_gpg": true + }, + { + "name": "cloud-init", + "epoch": 0, + "version": "17.1", + "release": "11.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cloud-init-17.1-11.fc31.noarch.rpm", + "checksum": "sha256:9cc3e6534ae34343e7e4d056d46b9551da7d0a82c7bad378c3626d4b70d1bf62", + "check_gpg": true + }, + { + "name": "colord-libs", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/colord-libs-1.4.4-2.fc31.aarch64.rpm", + "checksum": "sha256:ffa75117ea710fef320f1ae878e8c81e7a056386dea78aa5787dc091c5a100a5", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/coreutils-8.31-4.fc31.aarch64.rpm", + "checksum": "sha256:0f3591f036f0be85a9d28e9099d43a8b2e5a500a9588825c1dd994d1a323ceba", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/coreutils-common-8.31-4.fc31.aarch64.rpm", + "checksum": "sha256:bb305f3ddc74c4c30ae838a2bbff3cd325eea8427622c7f82e4d06a564bace6f", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "12.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cpio-2.12-12.fc31.aarch64.rpm", + "checksum": "sha256:798376bc628acd54407d945702dce73ab90633919f88fe9b7ecde3f38ebc2fe9", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cracklib-2.9.6-21.fc31.aarch64.rpm", + "checksum": "sha256:1088699171a35873eb5a776f0212ceff2bc9d67e3f1d8f2e107bbf751c36ca90", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.aarch64.rpm", + "checksum": "sha256:99e8930364200470ee5bd065dccb7c4c1caa4863c6f8975740643fe9d2485c18", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20190816", + "release": "4.gitbb9bf99.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm", + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.2.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.aarch64.rpm", + "checksum": "sha256:6e76674266f1e136186e3f005ddbf13791b1fea78cd30e8501f3dd1b209fa9f2", + "check_gpg": true + }, + { + "name": "cups-libs", + "epoch": 1, + "version": "2.2.12", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cups-libs-2.2.12-2.fc31.aarch64.rpm", + "checksum": "sha256:920d2d8df80fb92e358f4925bbd2891977c98e0b9d2f69b44f1e74bec26d6a1e", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/curl-7.66.0-1.fc31.aarch64.rpm", + "checksum": "sha256:9c039f6f6e5385344ea56a6490a472b0f475d8d7612b422191d2152b8e1fc55a", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.aarch64.rpm", + "checksum": "sha256:1b85657077726361a4b157a909796649fe93131fdc4aa67fd5329adc8d2fc833", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-1.12.16-3.fc31.aarch64.rpm", + "checksum": "sha256:3a7d7619061a4adb275ef4b41d993375ad7863863741624186add801800e524f", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "21", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-broker-21-6.fc31.aarch64.rpm", + "checksum": "sha256:504971d079493a49afb8fb7f067f5dfcc59f3e007afcc63734c15fe1066e4b4d", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm", + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-libs-1.12.16-3.fc31.aarch64.rpm", + "checksum": "sha256:8fd19268d460d7f49f3dd96644a2b8a3076a7a7ccbe3e35e27eeafc6ab8d9c95", + "check_gpg": true + }, + { + "name": "dbxtool", + "epoch": 0, + "version": "8", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbxtool-8-10.fc31.aarch64.rpm", + "checksum": "sha256:c0287bc7c1f54bcd19c43904f9a5c7c0cc4c82eae2c455071f6d7ea50714668f", + "check_gpg": true + }, + { + "name": "dconf", + "epoch": 0, + "version": "0.34.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dconf-0.34.0-1.fc31.aarch64.rpm", + "checksum": "sha256:0458f6a42cd644322b6eb24b01f0f75de47d5e10ae077797dfada1ce2a1f7fcd", + "check_gpg": true + }, + { + "name": "dejavu-fonts-common", + "epoch": 0, + "version": "2.37", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dejavu-fonts-common-2.37-2.fc31.noarch.rpm", + "checksum": "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc", + "check_gpg": true + }, + { + "name": "dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dejavu-sans-fonts-2.37-2.fc31.noarch.rpm", + "checksum": "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/deltarpm-3.6.2-2.fc31.aarch64.rpm", + "checksum": "sha256:4bb03b2162523fa694e0e44f46b04263ff0f5dab22c3e93124ec9b5650af2002", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/device-mapper-1.02.163-2.fc31.aarch64.rpm", + "checksum": "sha256:e7e629e7e89f970660407fb22c8b706c4c9a65a5f43286ddeef1e165b446fcaa", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.aarch64.rpm", + "checksum": "sha256:30e07680d23bfb5d4b2727893337619c56f13b46daec2f13f8985f642bf84250", + "check_gpg": true + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.4.1", + "release": "15.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dhcp-client-4.4.1-15.fc31.aarch64.rpm", + "checksum": "sha256:611b0995f8475747341db33373ec0178afcb724183aada71b5d3a2c437d19527", + "check_gpg": true + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.4.1", + "release": "15.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dhcp-common-4.4.1-15.fc31.noarch.rpm", + "checksum": "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/diffutils-3.7-3.fc31.aarch64.rpm", + "checksum": "sha256:a00e85fb7902d8869492e32816c7834830682745eeab1efba264bdd3185f479d", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.9", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dnf-plugins-core-4.0.9-1.fc31.noarch.rpm", + "checksum": "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "27.git20181204.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dracut-049-27.git20181204.fc31.1.aarch64.rpm", + "checksum": "sha256:7ae36bfe222068561cf0259400b54e210ad628aaa66dd4b87e20a2291996c71d", + "check_gpg": true + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "049", + "release": "27.git20181204.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dracut-config-generic-049-27.git20181204.fc31.1.aarch64.rpm", + "checksum": "sha256:f85438d6cb268c431f3aed5c678f1632b56d57393a3eb52e31d75bc6462bc88d", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.aarch64.rpm", + "checksum": "sha256:ec305ea347ab987f5a00574bc3eaebaf2412483ed1b79615fdd86ca18ab146bc", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.aarch64.rpm", + "checksum": "sha256:2dd8505a96714cdb79829a1377e36a53e05cc9b65a7f35a258ca3e4aaa76c700", + "check_gpg": true + }, + { + "name": "ebtables-legacy", + "epoch": 0, + "version": "2.0.10", + "release": "37.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/ebtables-legacy-2.0.10-37.fc31.aarch64.rpm", + "checksum": "sha256:d45b8157ccb1d538f06120150470433ddaa714680e10ffe97bfc5853b5a0321e", + "check_gpg": true + }, + { + "name": "efi-filesystem", + "epoch": 0, + "version": "4", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/efi-filesystem-4-3.fc31.noarch.rpm", + "checksum": "sha256:563f82b7c56043ed5a5ff55dcc643bcc5ac2a1e9ae940481f1c21595a83ba60a", + "check_gpg": true + }, + { + "name": "efibootmgr", + "epoch": 0, + "version": "16", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/efibootmgr-16-6.fc31.aarch64.rpm", + "checksum": "sha256:d96bdfbaba63ac6755a20d8a4d954bc5010695d671ba305a54362c1d3c69fc37", + "check_gpg": true + }, + { + "name": "efivar-libs", + "epoch": 0, + "version": "37", + "release": "1.fc30", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/efivar-libs-37-1.fc30.aarch64.rpm", + "checksum": "sha256:79db5a94baa6acad360b52fdf6d49cf91d7b6290e0d55f457b2820937d2739f4", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm", + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-libelf-0.177-1.fc31.aarch64.rpm", + "checksum": "sha256:00e59535d45094b7d47e25c93d21179f3138839968776107df99fa0678f1440f", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-libs-0.177-1.fc31.aarch64.rpm", + "checksum": "sha256:fe6afcdab2793cd75a838a758a282d4581f1272f3f32df6a58777c0721e54b2e", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/expat-2.2.8-1.fc31.aarch64.rpm", + "checksum": "sha256:5745966147d1651d663d9e7d37a740ebbb4daee49b5cb7a2e61375ea6b37404e", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm", + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-release-31-1.noarch.rpm", + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-release-common-31-1.noarch.rpm", + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-repos-31-1.noarch.rpm", + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/file-5.37-3.fc31.aarch64.rpm", + "checksum": "sha256:f43fa8496a54ad89eef4f48c3813190b5509a21c873bc1d5fcd0dda80ae2b425", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/file-libs-5.37-3.fc31.aarch64.rpm", + "checksum": "sha256:f63c88d8b294addf2791a5b291e3ab13750a24fe92fec65c96d365edad767f57", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.12", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/filesystem-3.12-2.fc31.aarch64.rpm", + "checksum": "sha256:a108fbc1ba9886604483ec05ef2150c961adb0906db5f9ea46c239bfcdf06b55", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "24.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/findutils-4.6.0-24.fc31.aarch64.rpm", + "checksum": "sha256:dcc584a55c425c26a62fe579beead8488589c3892c34e8fab95c7fd7ec1cf6c6", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fipscheck-1.5.0-7.fc31.aarch64.rpm", + "checksum": "sha256:0edff1a5f04f7f5d47537b4c049b95331f9ad33963c9c63ca4b13345a37296d4", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.aarch64.rpm", + "checksum": "sha256:81100039c817e2f3703fb365c63d6d891f3f977dd9e670c3c9b12662de3c255b", + "check_gpg": true + }, + { + "name": "firewalld", + "epoch": 0, + "version": "0.7.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/firewalld-0.7.2-1.fc31.noarch.rpm", + "checksum": "sha256:ab35a2d7f21aac1f33f9521607789e1c303fb63e4ea0681e9f724f86a1cc15c5", + "check_gpg": true + }, + { + "name": "firewalld-filesystem", + "epoch": 0, + "version": "0.7.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/firewalld-filesystem-0.7.2-1.fc31.noarch.rpm", + "checksum": "sha256:e76b3b9d14a0016542f61d0ab2981fbf2d779e522d0c36d9095a1cffecbf9272", + "check_gpg": true + }, + { + "name": "fontconfig", + "epoch": 0, + "version": "2.13.92", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fontconfig-2.13.92-3.fc31.aarch64.rpm", + "checksum": "sha256:e30906c30d3dea50c62e74bc7aa870eb928af4c6fb474c894f55ef6ba41f5841", + "check_gpg": true + }, + { + "name": "fontpackages-filesystem", + "epoch": 0, + "version": "1.44", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm", + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.10.0", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/freetype-2.10.0-3.fc31.aarch64.rpm", + "checksum": "sha256:72bc6a2b459ee27dcd7c213d3aab5a993fc90fcffba2ef02fab7ae3857d379f7", + "check_gpg": true + }, + { + "name": "fribidi", + "epoch": 0, + "version": "1.0.5", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fribidi-1.0.5-4.fc31.aarch64.rpm", + "checksum": "sha256:8c4b392a5e1ed79b7a5b302d8fb14d0470b3a6306a7b36aee275acf0daa61537", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fuse-libs-2.9.9-8.fc31.aarch64.rpm", + "checksum": "sha256:7f23849dcd356019c4e83058e9e49d544300ad7b9a6f6a7528831e393ca1197c", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gawk-5.0.1-5.fc31.aarch64.rpm", + "checksum": "sha256:e6a986f10b17ba67e86c417251d855e1eeac0ca1c85c2ee7ae3bfc7d6c966087", + "check_gpg": true + }, + { + "name": "gcr", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gcr-3.33.4-1.fc31.aarch64.rpm", + "checksum": "sha256:3b16753c7590bc968a693e97ce9d318d58e1483fd2999a874becd95abc9d35ff", + "check_gpg": true + }, + { + "name": "gcr-base", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gcr-base-3.33.4-1.fc31.aarch64.rpm", + "checksum": "sha256:9404d90bbb474b30b80c90719df01d784b925127e9710f12c44c72d14c2708fc", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.aarch64.rpm", + "checksum": "sha256:f74b53f33812f65d12377946d363a773e48cf6bc6c4bb2acec5bb4a048861b88", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.aarch64.rpm", + "checksum": "sha256:6e78ce3d460b7e1377f487fed5563999fb44d310c441798a4d23d34960e23d45", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2-modules", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.aarch64.rpm", + "checksum": "sha256:b3d8740cee57c5025ef88e9d71df141a6600fdf26215969acae393a2b052892d", + "check_gpg": true + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20190806", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/geolite2-city-20190806-1.fc31.noarch.rpm", + "checksum": "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565", + "check_gpg": true + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20190806", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/geolite2-country-20190806-1.fc31.noarch.rpm", + "checksum": "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gettext-0.20.1-2.fc31.aarch64.rpm", + "checksum": "sha256:0064a42567b657d85831ec162a314cd00f7befe48ce634387463754677206c9c", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gettext-libs-0.20.1-2.fc31.aarch64.rpm", + "checksum": "sha256:c8fc5b492af902894b927e79314b52bbdd8e45b2d2018abd8113d8e1807adeca", + "check_gpg": true + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glib-networking-2.62.1-1.fc31.aarch64.rpm", + "checksum": "sha256:c84f89f65e2a691d7fcbc7021c3c5d796e0f39483e3fe95e83579c630575b78a", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glib2-2.62.1-1.fc31.aarch64.rpm", + "checksum": "sha256:f3d5fd211e3faf1b61be64fd3f1659dd640a873c66747a5cc341f888e4179dea", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-2.30-5.fc31.aarch64.rpm", + "checksum": "sha256:abf022d05aa55e7aa8d0736b899d86613d30a7e1751b04666920f367d4311a1a", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-common-2.30-5.fc31.aarch64.rpm", + "checksum": "sha256:e3046e1e508453e332277ab86ebf67df0106edca2c6e8e54ba2bffb76f9ed4d7", + "check_gpg": true + }, + { + "name": "glibc-langpack-en", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-langpack-en-2.30-5.fc31.aarch64.rpm", + "checksum": "sha256:42ae595f75734daaed3430e1117d3cb05bd9a18108506bb9600125693d3d1688", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gmp-6.1.2-10.fc31.aarch64.rpm", + "checksum": "sha256:b9ad5c82b3b83871269ee705ee12896efd1e3485b0d2005c9cff2a100100cd34", + "check_gpg": true + }, + { + "name": "gnome-keyring", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.aarch64.rpm", + "checksum": "sha256:81f5b3786ab1b634016c0c066379dda739386b4b1d639111b4575748e27caa56", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnupg2-2.2.17-2.fc31.aarch64.rpm", + "checksum": "sha256:12c732f4a960848bd4fbc8111c2c0cf584799b1fdf0eb89c2cdcb26da5bc03b8", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.aarch64.rpm", + "checksum": "sha256:0a4100f50b31df500afc5d255dd87117553df7032447f3e226196fd64f9c3f47", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.10", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnutls-3.6.10-1.fc31.aarch64.rpm", + "checksum": "sha256:8e10cf2b0645e342b001338a4463c5a02a8a302c25affba37da700a987e2c064", + "check_gpg": true + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.62.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gobject-introspection-1.62.0-1.fc31.aarch64.rpm", + "checksum": "sha256:ac3230db1dfd77c5a90b1eda2c002e75f6abe1aa2d4416aea12515c956211e4f", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gpgme-1.13.1-3.fc31.aarch64.rpm", + "checksum": "sha256:4290088d905017724f6c909cb1b3193055a6aff62cd20e39ea196694f90753c8", + "check_gpg": true + }, + { + "name": "graphite2", + "epoch": 0, + "version": "1.3.13", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/graphite2-1.3.13-1.fc31.aarch64.rpm", + "checksum": "sha256:0cb1a66cb3bb44797a8aeb47db85db1f6c0fcf4d4571d8a5f8981f83b51c08af", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grep-3.3-3.fc31.aarch64.rpm", + "checksum": "sha256:7102de1c840d5b915a40fde5c408f182d677ecdd5126dedf033ebb63b5419607", + "check_gpg": true + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "20.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/groff-base-1.22.3-20.fc31.aarch64.rpm", + "checksum": "sha256:89a35174435a790c0fbf3bc4306d51c867ecce66fb65bae0e7706a9f8f9a19b3", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-common-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "name": "grub2-efi-aa64", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-efi-aa64-2.02-100.fc31.aarch64.rpm", + "checksum": "sha256:7637132d543741e8c5b581523ca5db24adc6eb6d78530944881c360da694cf15", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-tools-2.02-100.fc31.aarch64.rpm", + "checksum": "sha256:19217c1730a3f16e15eedd95e3f97471097a1bd066f7783fd273cfb392f4042e", + "check_gpg": true + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-tools-extra-2.02-100.fc31.aarch64.rpm", + "checksum": "sha256:af00a0b026235e70f7cb7606166dfcaea0d227a3de70363ff67a644036ed8bfc", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-tools-minimal-2.02-100.fc31.aarch64.rpm", + "checksum": "sha256:ddd0635b899826bed59036ba17f8112c35660b32f3d1639266f5e394166a9dbf", + "check_gpg": true + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.aarch64.rpm", + "checksum": "sha256:82bc08ef5d8049d3d07a5eb00f61d3f94d7577ef814f6791352f75835bff477a", + "check_gpg": true + }, + { + "name": "gtk-update-icon-cache", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.aarch64.rpm", + "checksum": "sha256:0064998ad79a6250297b379852b5a06932d8e074270bea02d75888758755bd23", + "check_gpg": true + }, + { + "name": "gtk3", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gtk3-3.24.12-3.fc31.aarch64.rpm", + "checksum": "sha256:6b11c1e14d4a02edf8beee776f9f896729bd0f28c66cb4c1d2bd021cdffc6aa0", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gzip-1.10-1.fc31.aarch64.rpm", + "checksum": "sha256:4de89d25d09c57b09a51ab93fdf84ade211e835c16d3ba6e4e261dcc0c4e50a1", + "check_gpg": true + }, + { + "name": "harfbuzz", + "epoch": 0, + "version": "2.6.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/harfbuzz-2.6.1-2.fc31.aarch64.rpm", + "checksum": "sha256:3ad68b7569e311a1ca7da4da7b42021a7acb001ab4b2cc6e63b3ba0f87cbd55c", + "check_gpg": true + }, + { + "name": "hicolor-icon-theme", + "epoch": 0, + "version": "0.17", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm", + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.20", + "release": "9.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/hostname-3.20-9.fc31.aarch64.rpm", + "checksum": "sha256:a3be2e9e42d68f5e5e58f1dd86d5b6e4fc1ff91e98f44d26221d6bda38c9f372", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.aarch64.rpm", + "checksum": "sha256:c935f74584d7289ca58d1b23cbdacd38450d351dbc3dcd0bc713723c4d50a545", + "check_gpg": true + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.02", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/initscripts-10.02-2.fc31.aarch64.rpm", + "checksum": "sha256:0b109cfab724680af15e7be85cf9f4f4828cd8290f0aa8fcebcbb14cd176be94", + "check_gpg": true + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.2.5", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/ipcalc-0.2.5-3.fc31.aarch64.rpm", + "checksum": "sha256:3e6b2cfce9c4a62f7cde13bb6ae135d5f6f0d6cb179ab3dbd61ba1533477f257", + "check_gpg": true + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.3.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iproute-5.3.0-1.fc31.aarch64.rpm", + "checksum": "sha256:e9c1fa22b0b6d6b7ac782ba60d4c6a2c747bd683f075720a4d82aec45adbd905", + "check_gpg": true + }, + { + "name": "iproute-tc", + "epoch": 0, + "version": "5.3.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iproute-tc-5.3.0-1.fc31.aarch64.rpm", + "checksum": "sha256:ee2f71a3a318270e9cc55aa9dde8889f2e664fec681f9fd5719361f8e4a1afac", + "check_gpg": true + }, + { + "name": "ipset", + "epoch": 0, + "version": "7.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/ipset-7.3-1.fc31.aarch64.rpm", + "checksum": "sha256:8891f85ba3caf6de4b6b234c6aa7a98d347228937a378d04da7af56556799bd1", + "check_gpg": true + }, + { + "name": "ipset-libs", + "epoch": 0, + "version": "7.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/ipset-libs-7.3-1.fc31.aarch64.rpm", + "checksum": "sha256:f369cbc73e31dbae49565c6acfcc8ce4ea0158d1480121b5c6dcc1d224998a62", + "check_gpg": true + }, + { + "name": "iptables", + "epoch": 0, + "version": "1.8.3", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iptables-1.8.3-5.fc31.aarch64.rpm", + "checksum": "sha256:763bbd8d0e3e80b56041273dd412f0c3708c90cd0affd929d474ae61f7c3798c", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.3", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iptables-libs-1.8.3-5.fc31.aarch64.rpm", + "checksum": "sha256:d6b491f91a567b4245d07d28a0547cb1b8e97a1f814e3f7d76dd685bb6658b64", + "check_gpg": true + }, + { + "name": "iputils", + "epoch": 0, + "version": "20190515", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iputils-20190515-3.fc31.aarch64.rpm", + "checksum": "sha256:7b01a3bf09861003bd9524e9d460ed68b8d2de4233a09f7af731cb07f75ef913", + "check_gpg": true + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.12", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/jansson-2.12-4.fc31.aarch64.rpm", + "checksum": "sha256:1138343dfb107de07f54d4723aee2686fdd1af3e4532d14bd399b9b6b7873040", + "check_gpg": true + }, + { + "name": "jasper-libs", + "epoch": 0, + "version": "2.0.14", + "release": "9.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/jasper-libs-2.0.14-9.fc31.aarch64.rpm", + "checksum": "sha256:ea35fa3f5c16e074a59d66ff9037e48ca7c0126444e09daf640b7a37dacd76ad", + "check_gpg": true + }, + { + "name": "jbigkit-libs", + "epoch": 0, + "version": "2.1", + "release": "17.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/jbigkit-libs-2.1-17.fc31.aarch64.rpm", + "checksum": "sha256:4549e51322d0b10016f1daa8dedc807fddf7d2d4e77719baa696de15b88821bb", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/json-c-0.13.1-6.fc31.aarch64.rpm", + "checksum": "sha256:fd9ac175e5af929bb942528904d6e6e48caed800e22a7a45825d535bdc1537ba", + "check_gpg": true + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/json-glib-1.4.4-3.fc31.aarch64.rpm", + "checksum": "sha256:fb2b070b96ed58a31da7889452ce3cdbfb60f6161a3e2f0ce2738b4d3facfd2d", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kbd-2.0.4-14.fc31.aarch64.rpm", + "checksum": "sha256:03559557dbf64805e44d7e956f6b228c90831766fd1f485eecdfddf7a646a220", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kbd-legacy-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kbd-misc-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "name": "kernel", + "epoch": 0, + "version": "5.3.7", + "release": "301.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kernel-5.3.7-301.fc31.aarch64.rpm", + "checksum": "sha256:26da63b51fc7b85d1a30098bfb9c2fa276b2d2129a28cee8cc80acd2eabe96e0", + "check_gpg": true + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "5.3.7", + "release": "301.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kernel-core-5.3.7-301.fc31.aarch64.rpm", + "checksum": "sha256:9bf695c87aa5acc7695251a4c75c576375c45c5b043af00a7ddf503223030309", + "check_gpg": true + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "5.3.7", + "release": "301.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kernel-modules-5.3.7-301.fc31.aarch64.rpm", + "checksum": "sha256:3d5e22e2c2d20d409cc9a878a88dc088d6f02c81652eb0957f95d1abb185f7b7", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/keyutils-libs-1.6-3.fc31.aarch64.rpm", + "checksum": "sha256:3975c15d461cebe50d1f179fb86d288c18f643c32f179bbab13425596ab64001", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kmod-26-4.fc31.aarch64.rpm", + "checksum": "sha256:e88e27b7ac16c753e20f65cd13ed163019ac702c4195eb75d766acd44cb55263", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kmod-libs-26-4.fc31.aarch64.rpm", + "checksum": "sha256:c68bed5b576d7baa67a59c726d2340f7c0df7e9b93f90b3a22d3f62e9f99456a", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.0", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kpartx-0.8.0-3.fc31.aarch64.rpm", + "checksum": "sha256:e0408a5020069e7a4585e3bb4d1bba1b8bf0afe481ff63b70e2221e9c5464cad", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.17", + "release": "45.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/krb5-libs-1.17-45.fc31.aarch64.rpm", + "checksum": "sha256:7d0ec23fb8dab882db8b7ec9a9cbb2728d6df2af5c02ee06cc6fa357f210ff09", + "check_gpg": true + }, + { + "name": "langpacks-core-en", + "epoch": 0, + "version": "2.0", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/langpacks-core-en-2.0-7.fc31.noarch.rpm", + "checksum": "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552", + "check_gpg": true + }, + { + "name": "langpacks-en", + "epoch": 0, + "version": "2.0", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/langpacks-en-2.0-7.fc31.noarch.rpm", + "checksum": "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b", + "check_gpg": true + }, + { + "name": "lcms2", + "epoch": 0, + "version": "2.9", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lcms2-2.9-6.fc31.aarch64.rpm", + "checksum": "sha256:cddb050897cd8666090b172711fb7947b3bf844f5a190f8c689fd79a222e1761", + "check_gpg": true + }, + { + "name": "less", + "epoch": 0, + "version": "551", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/less-551-2.fc31.aarch64.rpm", + "checksum": "sha256:aeac986c84b8038eccd191310bb09f3d396f7c05171ac0fb8691182918459c90", + "check_gpg": true + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libX11-1.6.8-3.fc31.aarch64.rpm", + "checksum": "sha256:01ea4ecad746f1309b5c943f2b2709f7e5400d33e4d51c85401205ed18d61621", + "check_gpg": true + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm", + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXau-1.0.9-2.fc31.aarch64.rpm", + "checksum": "sha256:59f289c6f3b0180ae3eddaa974e2f972bf15c48135a2abed9eb2f72dfdae1be4", + "check_gpg": true + }, + { + "name": "libXcomposite", + "epoch": 0, + "version": "0.4.4", + "release": "17.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXcomposite-0.4.4-17.fc31.aarch64.rpm", + "checksum": "sha256:159972ccc01cd5840c2aad04818efc965b64c5120b1fcce92a47f45ab1abf4a5", + "check_gpg": true + }, + { + "name": "libXcursor", + "epoch": 0, + "version": "1.1.15", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXcursor-1.1.15-6.fc31.aarch64.rpm", + "checksum": "sha256:46b0c36e90fd16371444eb5376fc01232b6e64073e42ed1f141344a9aadbe568", + "check_gpg": true + }, + { + "name": "libXdamage", + "epoch": 0, + "version": "1.1.4", + "release": "17.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXdamage-1.1.4-17.fc31.aarch64.rpm", + "checksum": "sha256:f7954ba55d833c6341ec87b0cf57817084c705673b8b50aff3e3606fcbdcfbb5", + "check_gpg": true + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXext-1.3.4-2.fc31.aarch64.rpm", + "checksum": "sha256:58c8a3d4ac7c8c318b5596b192dbd0350a1122983b69bfc1cb5eb3ecec5b7cf6", + "check_gpg": true + }, + { + "name": "libXfixes", + "epoch": 0, + "version": "5.0.3", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXfixes-5.0.3-10.fc31.aarch64.rpm", + "checksum": "sha256:500d0a1b49962ec79ca00224528d6e599d3845eb60b8b13a678d03edfaa755ec", + "check_gpg": true + }, + { + "name": "libXft", + "epoch": 0, + "version": "2.3.3", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXft-2.3.3-2.fc31.aarch64.rpm", + "checksum": "sha256:4c55460197fe24d0a105e3071824a933069e0b655910fd7ee7335e2396de15dc", + "check_gpg": true + }, + { + "name": "libXi", + "epoch": 0, + "version": "1.7.10", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXi-1.7.10-2.fc31.aarch64.rpm", + "checksum": "sha256:2aafea82072ad28a8b662e32902f66b47166a00b5c9cf19b1dd589f39776560f", + "check_gpg": true + }, + { + "name": "libXinerama", + "epoch": 0, + "version": "1.1.4", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXinerama-1.1.4-4.fc31.aarch64.rpm", + "checksum": "sha256:9ac1ef0ef80d7ff65903120f8b2a5a2a5723dce7c9c131e17cea3572cb81d0f4", + "check_gpg": true + }, + { + "name": "libXrandr", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXrandr-1.5.2-2.fc31.aarch64.rpm", + "checksum": "sha256:0f661b922a9e9cbe82e948ec1d83c6fca6e61e08de50815a5b6c069a64f4e883", + "check_gpg": true + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXrender-0.9.10-10.fc31.aarch64.rpm", + "checksum": "sha256:ec48b0cd759656b4c5d8d13dcc81c6fa23914f8e214b4cda1ed08e1896177fe9", + "check_gpg": true + }, + { + "name": "libXtst", + "epoch": 0, + "version": "1.2.3", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXtst-1.2.3-10.fc31.aarch64.rpm", + "checksum": "sha256:03b9d49b78b7e758eecce6a25782767ec5dc921d28f053b17a651b1c8bb96d7b", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libacl-2.2.53-4.fc31.aarch64.rpm", + "checksum": "sha256:a96e76f00865249f70a3f2ef293946e9786150faa83e37185e61592290817cb4", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libarchive-3.4.0-1.fc31.aarch64.rpm", + "checksum": "sha256:2fc552b80866318c0ac934f5385fd2090743701639c318b75138ae985ff5606a", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libargon2-20171227-3.fc31.aarch64.rpm", + "checksum": "sha256:d877864e501fe38a1b0c7e11572e61c5d9eb9857436541f1c2d5ad2f8bd29b83", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libassuan-2.5.3-2.fc31.aarch64.rpm", + "checksum": "sha256:64b0063f6b3a42b712c0ee622328e36ddf94a15da547e3c8da3a4191e0941c92", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "7.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libattr-2.4.48-7.fc31.aarch64.rpm", + "checksum": "sha256:99a6e2861b7eb51684d1b83901a7e54caf649b711556a660d93bfef114eab72c", + "check_gpg": true + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "43.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libbasicobjects-0.1.1-43.fc31.aarch64.rpm", + "checksum": "sha256:608a967cbdbad6b7320060e986bf8f8e7f6b61bff5ae6571006397b46a60771c", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libblkid-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:5e2a37ee7e1147a446be67d63b1be55f2e82c0ae0a84dd1afc6a3fec64e62804", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcap-2.26-6.fc31.aarch64.rpm", + "checksum": "sha256:566a389a620f634ab341a9a39cffdb1c607b4682224cf3d5ac530b6c57c78d0f", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcap-ng-0.7.9-8.fc31.aarch64.rpm", + "checksum": "sha256:4e365f48d5c85b82f71e8d000d00cdf7ed3c23cd94c31fbf3543572413541c3d", + "check_gpg": true + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "43.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcollection-0.7.0-43.fc31.aarch64.rpm", + "checksum": "sha256:a61e3fed8d1c860bf09b5ec5586e30b88b1b1dea157cd371def9fcf72e313a3d", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcom_err-1.45.3-1.fc31.aarch64.rpm", + "checksum": "sha256:98d811216e2e0e4ad49925489824210fc3e9b57bb09eefcd4047886375d34f57", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcomps-0.1.11-3.fc31.aarch64.rpm", + "checksum": "sha256:a63ae4aa727a4b75b602a67f1e42946e39dc124e9f1aeb3e795af40ad4e15cbf", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcroco-0.6.13-2.fc31.aarch64.rpm", + "checksum": "sha256:8d17464a13f79b54c8dfe76d716a42d6c875bce408e29344c1ecf916957a649e", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcurl-7.66.0-1.fc31.aarch64.rpm", + "checksum": "sha256:898a918a7adfefc3ce13d10b30b2ec7ccada96155afa15ee3f4e589b3f1baa38", + "check_gpg": true + }, + { + "name": "libdatrie", + "epoch": 0, + "version": "0.2.9", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdatrie-0.2.9-10.fc31.aarch64.rpm", + "checksum": "sha256:04826477197ec239d756f81cb6d38fde2f65e71499a8dbaf0c666d93084f1ea3", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdb-5.3.28-38.fc31.aarch64.rpm", + "checksum": "sha256:1738cf24111bcd0bff08880c4d5efa624c09a2080c901f67ab032ed201a8751e", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdb-utils-5.3.28-38.fc31.aarch64.rpm", + "checksum": "sha256:5ef4f8487a78a43f7502c055ac77c047ce159da5641e5b61c2669395ae1efe62", + "check_gpg": true + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "43.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdhash-0.5.0-43.fc31.aarch64.rpm", + "checksum": "sha256:6f7bd7a58d5aed77bbab94aa38edcbc4cac924d72ab6c72ce718f24b6528e1a5", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdnf-0.35.3-6.fc31.aarch64.rpm", + "checksum": "sha256:6bc6909c53c0eb2bad7640b3fb79da5cacf5fd8951dee08347b8d18df1b004f8", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "28.20190324cvs.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.aarch64.rpm", + "checksum": "sha256:3976706367650c755852d995bbe8c4e6bbd13b6e8e0148b7beddb4aba3679d8a", + "check_gpg": true + }, + { + "name": "libepoxy", + "epoch": 0, + "version": "1.5.3", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libepoxy-1.5.3-4.fc31.aarch64.rpm", + "checksum": "sha256:5b75073853ff34026cf180d7466314783a7a81defaa43e6b7416a38d9f19230b", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "7.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libevent-2.1.8-7.fc31.aarch64.rpm", + "checksum": "sha256:2575f8d1fb953934730b9fe6803bf3de12669dcee78852057ea4e88f9d4d76a4", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libfdisk-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:e8a13bb46e5149142a1e0a359460c1c65b2cbcbff20f2d0c50f9adbad57538a1", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "23.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libffi-3.1-23.fc31.aarch64.rpm", + "checksum": "sha256:b9b609d17e9274c1551ac6ebab4b53f6e4a5ae9253db5465c65fdb8c919a09dd", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgcc-9.2.1-1.fc31.aarch64.rpm", + "checksum": "sha256:be8bf30729c71aabe30f2c4cf8e5c43ce3cdf892c218fadf53c0af29a76fd6b3", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgcrypt-1.8.5-1.fc31.aarch64.rpm", + "checksum": "sha256:d2f7d49bd565c2fec4ca945ae97ac3b8a607f114d3a7558b90b2caaa5871459b", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgomp-9.2.1-1.fc31.aarch64.rpm", + "checksum": "sha256:6b2e3b36c2a3e988f40548688b32ef3ce2e4c7906127215c82736189684a95a6", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgpg-error-1.36-2.fc31.aarch64.rpm", + "checksum": "sha256:0b2a6b7e3b62ff9c02ec3012f08fbf396a7990bf9599b49b75eecbee3b257f7f", + "check_gpg": true + }, + { + "name": "libgusb", + "epoch": 0, + "version": "0.3.0", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgusb-0.3.0-5.fc31.aarch64.rpm", + "checksum": "sha256:e1e5250ea932beac32caf373ae55b4655c50ae8a1bd9d42e3ceac590a13031ef", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libidn2-2.2.0-2.fc31.aarch64.rpm", + "checksum": "sha256:c6ffcbd829ea30ef40fa61095cef03f2b6eafa3228187a478d6d027911f12e2f", + "check_gpg": true + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "43.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libini_config-1.3.1-43.fc31.aarch64.rpm", + "checksum": "sha256:31dacda6745f326be70d854d50ae5d3cd0c9d4f19aeab6b4d09920e1436d8bdc", + "check_gpg": true + }, + { + "name": "libjpeg-turbo", + "epoch": 0, + "version": "2.0.2", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.aarch64.rpm", + "checksum": "sha256:618e9a7e3f1f8191beee70d3ad1c8754870887d251480e7e6dd1f3de2d8226d1", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libkcapi-1.1.5-1.fc31.aarch64.rpm", + "checksum": "sha256:3fb9cec5d598a549e97041993399d49c5943821b1f3441881cf15cb26f38e437", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libkcapi-hmaccalc-1.1.5-1.fc31.aarch64.rpm", + "checksum": "sha256:69f2c758068234b1abc39ffaf94c8825ae4baa9810cc54e5d49a5c891fa98435", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libksba-1.3.5-10.fc31.aarch64.rpm", + "checksum": "sha256:575640462a8c2d0687ea225cc7b6bbf7aa0814e311619ddf6cd16e1bc22f9513", + "check_gpg": true + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.0.7", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libldb-2.0.7-1.fc31.aarch64.rpm", + "checksum": "sha256:d2d3b613de0ecf3ae022e5d5d1576858c91b203af6a52a7a9aa36245f0cdbd05", + "check_gpg": true + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.2.0", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmaxminddb-1.2.0-8.fc31.aarch64.rpm", + "checksum": "sha256:3308454f1353d5aced0a9574bc969ae272923ef1faa425bd9080de6e56e1bcbb", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "9.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmetalink-0.1.3-9.fc31.aarch64.rpm", + "checksum": "sha256:d287bfdcebb9fbb31d5f58cc71311f48a85970d0fd92f5beb0193270c155faac", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmnl-1.0.4-10.fc31.aarch64.rpm", + "checksum": "sha256:ead6cd0d8e509f07e36456aff75eca8433821813d675382d28fe4e7dbecc48dc", + "check_gpg": true + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "20.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmodman-2.0.1-20.fc31.aarch64.rpm", + "checksum": "sha256:a5fa076ed2c83974cacf4ce386bfdc576ce532fba4f8645dda5c2b67efc5d501", + "check_gpg": true + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.15", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.aarch64.rpm", + "checksum": "sha256:e9c7f59547a9eec5304db7a312b435592f07f7aee4f3db617e5ddfac0f4d048c", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmount-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:429cf175b6c3b2bedcabf3391ad3166fe6e62259877f309e57500d2c7f1f1882", + "check_gpg": true + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libndp-1.7-4.fc31.aarch64.rpm", + "checksum": "sha256:311729a146f8833ff882370348d69313322dcf7586b68d5eed192eb633dcd58a", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnetfilter_conntrack-1.0.7-3.fc31.aarch64.rpm", + "checksum": "sha256:ddd9b320e97d333bb4b7ccbdf70e401693065177a7d9317c6d7d1b69318209f7", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "16.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnfnetlink-1.0.1-16.fc31.aarch64.rpm", + "checksum": "sha256:f2471f1b946309f419a2bf1b4b3ad473d53f7ac0ee15b9c2426eb2e6cb4e87c0", + "check_gpg": true + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.4.1", + "release": "1.rc1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnfsidmap-2.4.1-1.rc1.fc31.aarch64.rpm", + "checksum": "sha256:d1ce6a69f0c2d96a97a04036a5c59deda82b5e1b0843c114f0fb896279ec7bbc", + "check_gpg": true + }, + { + "name": "libnftnl", + "epoch": 0, + "version": "1.1.3", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnftnl-1.1.3-2.fc31.aarch64.rpm", + "checksum": "sha256:859b03ef657a7c682ff7f341145a7c2ba9025fd5430f36ecb020eeafc55bba2d", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.39.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnghttp2-1.39.2-1.fc31.aarch64.rpm", + "checksum": "sha256:56f3d59b74bf8ceafea695d10fb7ad4672ec93f824ef9b0508c7bcdedeffb101", + "check_gpg": true + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnl3-3.5.0-1.fc31.aarch64.rpm", + "checksum": "sha256:ee5ed9701778c4cb91af4c2e2ef996b9c178d32b652edf4506394cac72fefb96", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "5.20180605git4a062cf.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.aarch64.rpm", + "checksum": "sha256:8d21bbf2063bb50cf3d12281731fbd8b26dece5f154d7a50f0952695fea6751f", + "check_gpg": true + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "43.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpath_utils-0.2.1-43.fc31.aarch64.rpm", + "checksum": "sha256:f11d53128f33f9e73dc21c01159a283cc3fcd2e39f2712dbfa930018ae67fb69", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.0", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpcap-1.9.0-4.fc31.aarch64.rpm", + "checksum": "sha256:fb6b61cabfce21597c33c62743c13dd96bcea39aa806a144bc2b2665b48273a8", + "check_gpg": true + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpipeline-1.5.1-3.fc31.aarch64.rpm", + "checksum": "sha256:a40b4873535c2b0b826063e5248981d1ce0d04ef5ec6d9c21facc07ce2446b40", + "check_gpg": true + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.37", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpng-1.6.37-2.fc31.aarch64.rpm", + "checksum": "sha256:77ff28552aba96ce4b80d51a9c390ef4958afad18ede879bf31022f2509e2d90", + "check_gpg": true + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "14.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libproxy-0.4.15-14.fc31.aarch64.rpm", + "checksum": "sha256:c599ffa97fde329ff872bd6db99e8c218601df6549302f89ff747d34ca24042c", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpsl-0.21.0-2.fc31.aarch64.rpm", + "checksum": "sha256:816fe17af41a66dd718eb247273be824b75f53fb539455b58b892528ca12cde5", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpwquality-1.4.1-1.fc31.aarch64.rpm", + "checksum": "sha256:20cc74172d531506391309e8f82c6512404ada35f22c68fcd0b83a01dc6e0ca8", + "check_gpg": true + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "43.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libref_array-0.1.5-43.fc31.aarch64.rpm", + "checksum": "sha256:23e335d288f55da26dc77e0d1ceb7cbe4e3890b4e28ff4a2435fc4481a6e737f", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.10.5", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/librepo-1.10.5-1.fc31.aarch64.rpm", + "checksum": "sha256:4f37b1e322e3001b076e0128541cc82c180d7054b1c0b7200f46fda4d654cd71", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.10.1", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm", + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libseccomp-2.4.1-1.fc31.aarch64.rpm", + "checksum": "sha256:7623bcecb8340ed57e1aa2951b13a1c5b1dfefa80eb226f269294df29cb40c08", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.19.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsecret-0.19.1-1.fc31.aarch64.rpm", + "checksum": "sha256:d1520137d9cb96cd10a63893b45b4794b120502bdbab0862e001ac2486195aa6", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libselinux-2.9-5.fc31.aarch64.rpm", + "checksum": "sha256:0c49f27ae0aaf95fbdc52cfb9406c41eefff41b205f85fdc6ef6787ec3af5146", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libselinux-utils-2.9-5.fc31.aarch64.rpm", + "checksum": "sha256:e78343046ae389b1c11d36f8de0b8bfbb9ded7bdc39fb52b3f719a39047bf42a", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsemanage-2.9-3.fc31.aarch64.rpm", + "checksum": "sha256:36ce07aa1f90dfdf5ae9824acff24fc3aafe5633b07a022732ca06258e0255b6", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsepol-2.9-2.fc31.aarch64.rpm", + "checksum": "sha256:e1deab5e887a199233f9a439d2d20d864d434e9a4ac7fe460f230d368fb3779f", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsigsegv-2.11-8.fc31.aarch64.rpm", + "checksum": "sha256:11e8ee935d9c9d349f4c081d035fc4ee34539af23ef8122e6901b22cf97f346f", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsmartcols-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:768cc2c561bd6476df45fbd9280bbaeb87d2addcd0c51601d2226a590d7dc872", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.5", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsolv-0.7.5-3.fc31.aarch64.rpm", + "checksum": "sha256:82cc8c43bfe0e731ec78e31c8af6250ec1f13989978105a1b38d518470cf5bde", + "check_gpg": true + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.68.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsoup-2.68.2-1.fc31.aarch64.rpm", + "checksum": "sha256:c1590c5cdfc7aad868c75c54c11a2c7d692001f758ead33aa10f9838955148c4", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libss-1.45.3-1.fc31.aarch64.rpm", + "checksum": "sha256:c6de19d0d4b8f67957ca6122462090895034495852814f36396bc134905f5f5e", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libssh-0.9.0-6.fc31.aarch64.rpm", + "checksum": "sha256:51f15beba5e5bfc6ff646741b3fbaa3a484ebb40fd8c6c59b8f1f6346dd93e93", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm", + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_autofs-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:ce421671bfd14a427771eb3c78b060352a61cca889b1bf1b342c328dd521623d", + "check_gpg": true + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_certmap-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:02f7f1cdd5cbe11b16e093686db5c584a68db4e6b1015c4d36c0246a54f801bb", + "check_gpg": true + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_idmap-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:2b1052455234b751e869f22c496bb660dec53eafe198673bab25053e394e41cb", + "check_gpg": true + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_nss_idmap-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:f2d11878777b28a284e9a571a6a9cf893a97f0935291b10686eb93a2a3dfdfb8", + "check_gpg": true + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_sudo-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:99c0e924fa7eb70fc9301b692d4ba72ec480af840498b8251f68a419317bd108", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libstdc++-9.2.1-1.fc31.aarch64.rpm", + "checksum": "sha256:5a32c492b921e9287422006f255833605b328f3efd071609673be161bb4e7f04", + "check_gpg": true + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtalloc-2.3.0-1.fc31.aarch64.rpm", + "checksum": "sha256:48ee663f069c5019c842f316216ef3bf8dfcbbec479c98d1f2b24749c22e57f3", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.14", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtasn1-4.14-2.fc31.aarch64.rpm", + "checksum": "sha256:23e8c23c89737665a5288a3a171548e94898be9ed4a24c056d8bc851c6800090", + "check_gpg": true + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtdb-1.4.2-1.fc31.aarch64.rpm", + "checksum": "sha256:91d628d3e4a82976361ecb306d4f0049aa65c811fdd5051b3f8423b75e4a10e9", + "check_gpg": true + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtevent-0.10.1-1.fc31.aarch64.rpm", + "checksum": "sha256:f6d37f25fa7215b7ae185b12f687d60c4363cfb8e35d591595a9b0f379488fc6", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtextstyle-0.20.1-2.fc31.aarch64.rpm", + "checksum": "sha256:e4e6a5e014442aa8d7768555da9d44e6381569e0c44e61d2d2a06d6692748945", + "check_gpg": true + }, + { + "name": "libthai", + "epoch": 0, + "version": "0.1.28", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libthai-0.1.28-3.fc31.aarch64.rpm", + "checksum": "sha256:b04fecd603225051ca56c6674cb72f12f4de0cc1cbbfda0ab7d0af0e655b2c99", + "check_gpg": true + }, + { + "name": "libtiff", + "epoch": 0, + "version": "4.0.10", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtiff-4.0.10-6.fc31.aarch64.rpm", + "checksum": "sha256:57bd1ce5d776daca117795bc8e3852f1d29a6fc3fc1edd21729d161de2d7798d", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "2.rc3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.aarch64.rpm", + "checksum": "sha256:14a759b4daf287d66f5b803b0fbb52621f8429607be109e5d3c313a57cc276e2", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libunistring-0.9.10-6.fc31.aarch64.rpm", + "checksum": "sha256:2b24b5729cd74e3b1efe261bfd732fd1995b0e64d76587a3d90762d77cc58c77", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.22", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libusbx-1.0.22-4.fc31.aarch64.rpm", + "checksum": "sha256:c80fbc5228457b9b1978b098f47d2a66ca5636526965847078edb6f1c302e392", + "check_gpg": true + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "21.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libuser-0.62-21.fc31.aarch64.rpm", + "checksum": "sha256:4fe97b617adfa7c0f97ba5b2b6e1c0d2e2b15c54ba8db66fc389cacc0f1b2b60", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "17.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libutempter-1.1.6-17.fc31.aarch64.rpm", + "checksum": "sha256:ea68ed6fc06f142c95e907b619a9696146dff1bba308773df12e412d8277eec0", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libuuid-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:7027d2c6a004469720e3c64eb7fcb2ace1fffd61ec4380afbf875d59a3876f3a", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libverto-0.3.0-8.fc31.aarch64.rpm", + "checksum": "sha256:af589a85af85270c027bacb5ccaf88c93378d364a7c1436ee7bca1290cf762f7", + "check_gpg": true + }, + { + "name": "libwayland-client", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-client-1.17.0-2.fc31.aarch64.rpm", + "checksum": "sha256:1472adb267192ca8a323e544fd9749c4765334fc5779e8de4ee583eff77fc078", + "check_gpg": true + }, + { + "name": "libwayland-cursor", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.aarch64.rpm", + "checksum": "sha256:f34cde4c2bd6ab93a697d8c350e98f4d70f897f74fee35a06c25eb4b98f46c9a", + "check_gpg": true + }, + { + "name": "libwayland-egl", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.aarch64.rpm", + "checksum": "sha256:aa3658efc21bcc6d79344eeeaf20285407f6f3b90d905a66a37a8cfc835b2a61", + "check_gpg": true + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxcb-1.13.1-3.fc31.aarch64.rpm", + "checksum": "sha256:a2f6ae2742a2aac3f5bb5f1ad5cfa4d9b8fdf7cfd01033246027db7064abaa1f", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxcrypt-4.4.10-1.fc31.aarch64.rpm", + "checksum": "sha256:e35e30f6477652a93d3c02ec86faa233884aefb2ff9fcf4058909d9736fb2d15", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxcrypt-compat-4.4.10-1.fc31.aarch64.rpm", + "checksum": "sha256:57bb6739fb8635dfe5300d0e361b99caedce2fb7142db37394734e13d4fa48f8", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.8.4", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.aarch64.rpm", + "checksum": "sha256:57a9aff6b8d5ecdb66015e4dfcec0a171ae18751e1d5f9a339361cc45b9a8e2f", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.9", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxml2-2.9.9-3.fc31.aarch64.rpm", + "checksum": "sha256:7c66a9a33e131200e13a638613ec054a94be901399424df27a0b4f94532ee36d", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libyaml-0.2.2-2.fc31.aarch64.rpm", + "checksum": "sha256:80434d5f64abdd521330153fc0c983c5923a833ab59f57ec3bc3a8cf1d748c8c", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libzstd-1.4.2-1.fc31.aarch64.rpm", + "checksum": "sha256:a39fb89e06572d188309dc4daf1d23e21be190e59f9ef8ff3c3ccceaefe505da", + "check_gpg": true + }, + { + "name": "linux-atm-libs", + "epoch": 0, + "version": "2.5.1", + "release": "25.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/linux-atm-libs-2.5.1-25.fc31.aarch64.rpm", + "checksum": "sha256:253f9f540248a0bdd537ee8ea4f670752af74d85be98ea81593a30710e1e5808", + "check_gpg": true + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20190923", + "release": "102.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/linux-firmware-20190923-102.fc31.noarch.rpm", + "checksum": "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47", + "check_gpg": true + }, + { + "name": "linux-firmware-whence", + "epoch": 0, + "version": "20190923", + "release": "102.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/linux-firmware-whence-20190923-102.fc31.noarch.rpm", + "checksum": "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70", + "check_gpg": true + }, + { + "name": "lmdb-libs", + "epoch": 0, + "version": "0.9.23", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lmdb-libs-0.9.23-3.fc31.aarch64.rpm", + "checksum": "sha256:284d46ebd3d3fd4a915b624a75e9931c948807fcb13fed01681e623d0ba7b1ce", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lua-libs-5.3.5-6.fc31.aarch64.rpm", + "checksum": "sha256:a084b365795c7262fa09b2fc590dfbabbbf30cb9c1c7f9b5274eae4c5d761482", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lz4-libs-1.9.1-1.fc31.aarch64.rpm", + "checksum": "sha256:1c2edf26d16b55bac2824452c1c584ff52acf8477920f384f6019f647c241450", + "check_gpg": true + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.8.4", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/man-db-2.8.4-5.fc31.aarch64.rpm", + "checksum": "sha256:84fa6157b3e986b9ce67cc03bfed4e2b96fa7d075df70e038fbcd2b486737d35", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mkpasswd-5.5.2-1.fc31.aarch64.rpm", + "checksum": "sha256:f8e118c35bb5f8ae3dca517ef38c7a38bbdd491011af9e1c4c5c7523f13e6f9c", + "check_gpg": true + }, + { + "name": "mokutil", + "epoch": 1, + "version": "0.3.0", + "release": "11.fc30", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mokutil-0.3.0-11.fc30.aarch64.rpm", + "checksum": "sha256:332ef2695e27190536747f53bab03ba5df0ca903564f6071623d99fa524d6d2f", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mpfr-3.1.6-5.fc31.aarch64.rpm", + "checksum": "sha256:339895e6b901ff4c81966893ec7da9848da3acea26e5b202033bfb79dfcbb6cb", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-6.1-12.20190803.fc31.aarch64.rpm", + "checksum": "sha256:1d530a23a8ea2b831068593fe6aa7a32923c6276504def5a85ad065aaac9ac5f", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm", + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.aarch64.rpm", + "checksum": "sha256:264828f11342a94f056fb27a2e78fc5e14226230b3dbac8bdad6a4c8598fd24f", + "check_gpg": true + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.55.20160912git.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/net-tools-2.0-0.55.20160912git.fc31.aarch64.rpm", + "checksum": "sha256:504b334756e12eefb42d44e53da61fb4321b860e3b5f380b5c21c5c3784a8c75", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/nettle-3.5.1-3.fc31.aarch64.rpm", + "checksum": "sha256:9c8771c8c5eb38351dd30f994133bc9149ec93813d1a7c2cd2dd8f7dc7431d49", + "check_gpg": true + }, + { + "name": "nftables", + "epoch": 1, + "version": "0.9.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/nftables-0.9.1-3.fc31.aarch64.rpm", + "checksum": "sha256:a9f81157c1f977adf96403fe534e2fecc9f3a82a58c5b53fd58aad9954873790", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/npth-1.6-3.fc31.aarch64.rpm", + "checksum": "sha256:f1419585dbb27e3bf76aab5a5f8fb9580816a7a0e7fc93377b97646a0259a794", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openldap-2.4.47-3.fc31.aarch64.rpm", + "checksum": "sha256:d8d28daa56fa4894a767957aa9948cad6d274e2b70d8b10aa69d9356c8a22eff", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssh-8.0p1-8.fc31.1.aarch64.rpm", + "checksum": "sha256:424e1777ae71117d20055ffa5f0ed2ead59a8076528450cf7536e18c70624bd8", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.aarch64.rpm", + "checksum": "sha256:eb35167d6095465a58611b80853213af5838f271b75fa1a5e3c051a04a9078a7", + "check_gpg": true + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssh-server-8.0p1-8.fc31.1.aarch64.rpm", + "checksum": "sha256:0a80e2a0ede76c98337c220f01dfadacace037b48f09fe072c5d33f356e50b8e", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-1.1.1d-2.fc31.aarch64.rpm", + "checksum": "sha256:54c024db70df7966590050dfc5dcc1315174e10c3a57e118ea10178238d70889", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.aarch64.rpm", + "checksum": "sha256:a7f5877c9ebfb44347765c7deb266e53fdd62403ccc0a7ff17fdb101bc28caff", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.aarch64.rpm", + "checksum": "sha256:dc6b772101df9f3029c2cd80a10663663ad877e129c8d724902f5cc9f1785e60", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/os-prober-1.77-3.fc31.aarch64.rpm", + "checksum": "sha256:4d4853ac550a0cfc5b3bcbcb7f12c81461393a6aa0e96a23648985f8a7f2e8e2", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.aarch64.rpm", + "checksum": "sha256:6d4c3ae013d07e50d085b3419dfd41ac79ba11ada62d8c4570d21764ef6f11ec", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.aarch64.rpm", + "checksum": "sha256:bf92fc95c282da9c76018679d9180fb6c98aaf864f66bbef630941040579f92b", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "18.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pam-1.3.1-18.fc31.aarch64.rpm", + "checksum": "sha256:eb1992de281538771ba578a65eabe620dc35aef6c621d8c5351a2ba38ac440f4", + "check_gpg": true + }, + { + "name": "pango", + "epoch": 0, + "version": "1.44.6", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pango-1.44.6-1.fc31.aarch64.rpm", + "checksum": "sha256:5ba547e1c2c515b3ca091e04c0a6b15b297e25b567a6613a07bd2bee41f39684", + "check_gpg": true + }, + { + "name": "parted", + "epoch": 0, + "version": "3.2.153", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/parted-3.2.153-1.fc31.aarch64.rpm", + "checksum": "sha256:855131926b9a3764835de3e7171b9ce579847ce161f3ba8406a5b6fdfa781f55", + "check_gpg": true + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/passwd-0.80-6.fc31.aarch64.rpm", + "checksum": "sha256:07f4ccd9f3cb20ceb4483adb673adfef15394b246bd93a84f169eb07acb68d71", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.43", + "release": "2.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pcre-8.43-2.fc31.1.aarch64.rpm", + "checksum": "sha256:44a92faf198bf015f5e94cf42ae615215fe0a6c0697b1f6c32d205bd450e7ce4", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.33", + "release": "14.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pcre2-10.33-14.fc31.aarch64.rpm", + "checksum": "sha256:b0d153ea83902561a9e60c9c244a497c3b19a9c4e40cf9e8437d0221af0f2ca3", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pigz-2.4-5.fc31.aarch64.rpm", + "checksum": "sha256:0ae87f94df2e114f287d60e9041ac159349f51322e32eeefa19a96db0acb78e7", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pinentry-1.1.0-6.fc31.aarch64.rpm", + "checksum": "sha256:ee3977f4ee783225903f964c60932795d8c11307043e73527b394dec02487047", + "check_gpg": true + }, + { + "name": "pixman", + "epoch": 0, + "version": "0.38.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pixman-0.38.4-1.fc31.aarch64.rpm", + "checksum": "sha256:0b8baef3612880639ed59ae79475086aac8ce236fd35977e0d87305d0bb9a529", + "check_gpg": true + }, + { + "name": "plymouth", + "epoch": 0, + "version": "0.9.4", + "release": "10.20191001gita8aad27.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/plymouth-0.9.4-10.20191001gita8aad27.fc31.aarch64.rpm", + "checksum": "sha256:dc8a707761f45962518e251f87a5e1d83199fbd1fe1e249f89ed457528c1fba1", + "check_gpg": true + }, + { + "name": "plymouth-core-libs", + "epoch": 0, + "version": "0.9.4", + "release": "10.20191001gita8aad27.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/plymouth-core-libs-0.9.4-10.20191001gita8aad27.fc31.aarch64.rpm", + "checksum": "sha256:2efe5f560e0c56dec38c9456ae8482a5a9006833d257de4a2a6246d261f647e2", + "check_gpg": true + }, + { + "name": "plymouth-scripts", + "epoch": 0, + "version": "0.9.4", + "release": "10.20191001gita8aad27.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/plymouth-scripts-0.9.4-10.20191001gita8aad27.fc31.aarch64.rpm", + "checksum": "sha256:fabb9a86711308b3dbf146e8f155ab8e857172455e805aab912500bf157368ac", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/policycoreutils-2.9-5.fc31.aarch64.rpm", + "checksum": "sha256:974bdde5f821c071bcbe0de191677981685cb8290952be75a7ab15747988a99e", + "check_gpg": true + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.116", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/polkit-libs-0.116-4.fc31.aarch64.rpm", + "checksum": "sha256:cf480f0df368b3cc9f36e42d5d573afa93fcb3889614dee172c0ad367785f520", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "18.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/popt-1.16-18.fc31.aarch64.rpm", + "checksum": "sha256:d2be7b0f17350a8a0f301617cb1d7b024076bc16986abaab94453ec1cee1f1f2", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/procps-ng-3.3.15-6.fc31.aarch64.rpm", + "checksum": "sha256:9ff53c6f07da3adeaa20da76c1c78b886710b460db7a316415f8bc9182096fb0", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm", + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm", + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-3.7.4-5.fc31.aarch64.rpm", + "checksum": "sha256:84365601f93db7fda27e4d89826d4893830572e98df35275abdf15659cfe3fc5", + "check_gpg": true + }, + { + "name": "python3-asn1crypto", + "epoch": 0, + "version": "0.24.0", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-asn1crypto-0.24.0-7.fc31.noarch.rpm", + "checksum": "sha256:73a7249de97f0ad66bc1a867ac5b5d08b741ab152d4dd7ce45cc231d64126b58", + "check_gpg": true + }, + { + "name": "python3-attrs", + "epoch": 0, + "version": "19.1.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-attrs-19.1.0-2.fc31.noarch.rpm", + "checksum": "sha256:4cca3f986ddbd38cfbfb6d1c8d336a1aaed78f7da1f38356ce1e034ba35ec492", + "check_gpg": true + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-audit-3.0-0.12.20190507gitf58ec40.fc31.aarch64.rpm", + "checksum": "sha256:700acef9fc8051726700645696fd67b0fc3b7fec08290ef9c2964fe7a9d3e8cd", + "check_gpg": true + }, + { + "name": "python3-babel", + "epoch": 0, + "version": "2.7.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-babel-2.7.0-2.fc31.noarch.rpm", + "checksum": "sha256:e17ef6f7d4f1869ff5813d6f8f2983cd6f5cd23d4a666b7ae19154636e911644", + "check_gpg": true + }, + { + "name": "python3-cffi", + "epoch": 0, + "version": "1.12.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-cffi-1.12.3-1.fc31.aarch64.rpm", + "checksum": "sha256:f0b9a02ed639d2cff7a85262d440c65f2fa2ba318166b45d969a2802f102535b", + "check_gpg": true + }, + { + "name": "python3-chardet", + "epoch": 0, + "version": "3.0.4", + "release": "10.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-chardet-3.0.4-10.fc31.noarch.rpm", + "checksum": "sha256:ee6dbb4914a35ee8a816ecde34d29221e3f4622324f6287c328e8ac22ae572ad", + "check_gpg": true + }, + { + "name": "python3-configobj", + "epoch": 0, + "version": "5.0.6", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-configobj-5.0.6-16.fc31.noarch.rpm", + "checksum": "sha256:cdc526097cd2fecb75e44ad11a69b10eb7804f310298c064c3b931515d4f3d5c", + "check_gpg": true + }, + { + "name": "python3-cryptography", + "epoch": 0, + "version": "2.6.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-cryptography-2.6.1-2.fc31.aarch64.rpm", + "checksum": "sha256:d35fe17711337362bdf09540523bddbdc16406d0ff7650043a3cdd1cfc222ae8", + "check_gpg": true + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.8.0", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dateutil-2.8.0-3.fc31.noarch.rpm", + "checksum": "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653", + "check_gpg": true + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.8", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dbus-1.2.8-6.fc31.aarch64.rpm", + "checksum": "sha256:a314b2a8ed8a9e7e80aedfb1f76c75910d0da9549d072c424c2dddbe63a09874", + "check_gpg": true + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.4.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-decorator-4.4.0-2.fc31.noarch.rpm", + "checksum": "sha256:63ff108f557096a9724053c37e37d3c2af1a1ec0b33124480b3742ff3da46292", + "check_gpg": true + }, + { + "name": "python3-distro", + "epoch": 0, + "version": "1.4.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-distro-1.4.0-2.fc31.noarch.rpm", + "checksum": "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.9", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dnf-plugins-core-4.0.9-1.fc31.noarch.rpm", + "checksum": "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02", + "check_gpg": true + }, + { + "name": "python3-firewall", + "epoch": 0, + "version": "0.7.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-firewall-0.7.2-1.fc31.noarch.rpm", + "checksum": "sha256:a349c40034b5a181cab1bd409384ddb901c274e110b16721d434f5bf42e92c0f", + "check_gpg": true + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.34.0", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-gobject-base-3.34.0-3.fc31.aarch64.rpm", + "checksum": "sha256:c45162d6aeab69ce8f58353c88e7e068c59f36921989aa49ac23738f7c9cea82", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-gpg-1.13.1-3.fc31.aarch64.rpm", + "checksum": "sha256:d429648fe5b233a46fdbfc31a283ca4b6be5177ae84f3e7e63fec5f9bebd17d1", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.aarch64.rpm", + "checksum": "sha256:edee134762456246cd8de577597e350b60a04bc43ac4a47622b9a263ddd74cf2", + "check_gpg": true + }, + { + "name": "python3-idna", + "epoch": 0, + "version": "2.8", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-idna-2.8-2.fc31.noarch.rpm", + "checksum": "sha256:8221111dc9a9aa5c68805f153c3fbe5314c8a0f335af29685733b958253dd278", + "check_gpg": true + }, + { + "name": "python3-jinja2", + "epoch": 0, + "version": "2.10.1", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jinja2-2.10.1-2.fc31.noarch.rpm", + "checksum": "sha256:1135e96b6f9ed29e4ed4c0f060876891a244442a503f0b18ab238589da20d464", + "check_gpg": true + }, + { + "name": "python3-jsonpatch", + "epoch": 0, + "version": "1.21", + "release": "8.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jsonpatch-1.21-8.fc31.noarch.rpm", + "checksum": "sha256:e98119ac7a707287668e7a9a74ef2809ee5f555af04f52775367e428e08dbb33", + "check_gpg": true + }, + { + "name": "python3-jsonpointer", + "epoch": 0, + "version": "1.10", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jsonpointer-1.10-16.fc31.noarch.rpm", + "checksum": "sha256:2d9a2e736dd5231df3c5c748ce0ba5a75a409dacfe73f14676781f32d565a7df", + "check_gpg": true + }, + { + "name": "python3-jsonschema", + "epoch": 0, + "version": "3.0.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jsonschema-3.0.2-1.fc31.noarch.rpm", + "checksum": "sha256:047f9e29fcfa56be98ca3f42249f3ccb2a93df99f2438e3983e2064025f0d79d", + "check_gpg": true + }, + { + "name": "python3-jwt", + "epoch": 0, + "version": "1.7.1", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jwt-1.7.1-3.fc31.noarch.rpm", + "checksum": "sha256:143c50c0663f963c7689c1cec43b81cf1433d5d3b67eb8233ba06506c1b3e095", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.aarch64.rpm", + "checksum": "sha256:7a5aadb5da769b563cf1e548d8cabd26c00720a67df7e4a445a5a9ae5b0891b8", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.aarch64.rpm", + "checksum": "sha256:436c2f09d2de629da293ab82af47b7697f4a8c151127cbd993d0e8605a4f423c", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libs-3.7.4-5.fc31.aarch64.rpm", + "checksum": "sha256:fe6f4202a8e7e52add27c6d2e2af65884a974bcde4b5e89979badb782719ca1a", + "check_gpg": true + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libselinux-2.9-5.fc31.aarch64.rpm", + "checksum": "sha256:67bbf2a262929b1b4c2fb9532c471da5ab2c0f642b0df770cf947c0131a9e1ad", + "check_gpg": true + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libsemanage-2.9-3.fc31.aarch64.rpm", + "checksum": "sha256:32cc0c295cd013db597cd31868736be3708edb25ab1952fdd0ed879ec5e8d191", + "check_gpg": true + }, + { + "name": "python3-markupsafe", + "epoch": 0, + "version": "1.1.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-markupsafe-1.1.1-2.fc31.aarch64.rpm", + "checksum": "sha256:47383173cbb135c2590998a4e82c6f9d40a516450d2fbd1e169ace92337b7fd5", + "check_gpg": true + }, + { + "name": "python3-oauthlib", + "epoch": 0, + "version": "3.0.2", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-oauthlib-3.0.2-2.fc31.noarch.rpm", + "checksum": "sha256:f85469c0c19ce86e8fdd0dd5a3e6e5c9b78e3436ae9ce70ba86b2b4a3794f693", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "name": "python3-ply", + "epoch": 0, + "version": "3.11", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-ply-3.11-3.fc31.noarch.rpm", + "checksum": "sha256:1b65944efe48ba0cca34011891480a1db29a7e95dad058376bfca34d68fb0791", + "check_gpg": true + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-policycoreutils-2.9-5.fc31.noarch.rpm", + "checksum": "sha256:5a7e957102a23c9924398fe45f5cdec66edcd10adcad7130d6ebf02c2706ad49", + "check_gpg": true + }, + { + "name": "python3-prettytable", + "epoch": 0, + "version": "0.7.2", + "release": "18.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-prettytable-0.7.2-18.fc31.noarch.rpm", + "checksum": "sha256:682af90a049fa78429d5ebd194700609f762e59ceb6c4ca28b17e7f4fd1683aa", + "check_gpg": true + }, + { + "name": "python3-pycparser", + "epoch": 0, + "version": "2.14", + "release": "20.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pycparser-2.14-20.fc31.noarch.rpm", + "checksum": "sha256:6ed7f318c5e93b59254d7b7652131f33db713eeb61f52413f21e533069ed24bf", + "check_gpg": true + }, + { + "name": "python3-pyrsistent", + "epoch": 0, + "version": "0.15.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pyrsistent-0.15.4-1.fc31.aarch64.rpm", + "checksum": "sha256:32d56c08f75c7626f1a0efd7aa05ca2ea3649d55445b5ac42a2f7f10fad8b46b", + "check_gpg": true + }, + { + "name": "python3-pyserial", + "epoch": 0, + "version": "3.4", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pyserial-3.4-3.fc31.noarch.rpm", + "checksum": "sha256:32cc578c8da626a8c1a5316a59d482967a32547be6c077f73fb90e11fb0f1e6a", + "check_gpg": true + }, + { + "name": "python3-pysocks", + "epoch": 0, + "version": "1.7.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pysocks-1.7.0-2.fc31.noarch.rpm", + "checksum": "sha256:d54f02fc39b3e87253808f665918d26ffe901f1228e25121c908661b47ba266b", + "check_gpg": true + }, + { + "name": "python3-pytz", + "epoch": 0, + "version": "2019.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pytz-2019.2-1.fc31.noarch.rpm", + "checksum": "sha256:6c6f1152899318bdc0500cfb0b0cdbbc19ba0e017b5888ece1358250caa2629f", + "check_gpg": true + }, + { + "name": "python3-pyyaml", + "epoch": 0, + "version": "5.1.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pyyaml-5.1.2-1.fc31.aarch64.rpm", + "checksum": "sha256:f958a85509e118c832458a5f502e5d59695eb3df96ae0bd603203a82d188b2ae", + "check_gpg": true + }, + { + "name": "python3-requests", + "epoch": 0, + "version": "2.22.0", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-requests-2.22.0-3.fc31.noarch.rpm", + "checksum": "sha256:1e049e86c5dd5c4d6737d47dd194d553ffbd65c81a4077cf6e1029a0fde80fb5", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-rpm-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:513e24bc56f483b171664ea4dec51cc0cce1f9cc8f4939cde8a65ea976ed952d", + "check_gpg": true + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-setools-4.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:1f44142da3bf5e09b98488b40ed8a2d5dbd841c36bb4553749e6d65d7fe5c15c", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.12.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-six-1.12.0-2.fc31.noarch.rpm", + "checksum": "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142", + "check_gpg": true + }, + { + "name": "python3-slip", + "epoch": 0, + "version": "0.6.4", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-slip-0.6.4-16.fc31.noarch.rpm", + "checksum": "sha256:b1094a9a9725546315d6eac7f792d5875a5f0c950cd84e43fc2fbb3e639ee43e", + "check_gpg": true + }, + { + "name": "python3-slip-dbus", + "epoch": 0, + "version": "0.6.4", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-slip-dbus-0.6.4-16.fc31.noarch.rpm", + "checksum": "sha256:bd2e7c9e3df976723ade08f16667b31044b678e62ee29e024ad193af6d9a28e1", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-unbound-1.9.3-1.fc31.aarch64.rpm", + "checksum": "sha256:b6498a7a8056483e1d42362b1fb27bd6c54ed7cc7bd180cae20d64a13ae4c88c", + "check_gpg": true + }, + { + "name": "python3-urllib3", + "epoch": 0, + "version": "1.25.3", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-urllib3-1.25.3-4.fc31.noarch.rpm", + "checksum": "sha256:78b600621e00f4a0acc8f58de056ae9393ce4e1cded56837b4e557c1bc84b06b", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.aarch64.rpm", + "checksum": "sha256:5f2bdb8f9a18257ee80a243e1be96e3ef6fa660e37fdf7b4443d8e8f7abf86ef", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/readline-8.0-3.fc31.aarch64.rpm", + "checksum": "sha256:d02489175567be57a48a3edf5deb66d100e99df73a37b26062fea4d6af014cbc", + "check_gpg": true + }, + { + "name": "rest", + "epoch": 0, + "version": "0.8.1", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rest-0.8.1-6.fc31.aarch64.rpm", + "checksum": "sha256:8d00fa6cdfcc955dc4e14d0f8b6ba6217d2dd0334ea0e1aa44694c9e0ad0b06d", + "check_gpg": true + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rootfiles-8.1-25.fc31.noarch.rpm", + "checksum": "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:ae9a3e144f31b6172d266b984c8385fba94bdcf3002d3182a4118f8d29f5f718", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:c958419128c1330b50c741113394b147da1ccda055ab1ee19fabc199f68971ea", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-libs-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:7292bf1d13ef336ef411ef695f87c7c7ecd21a13e05c86cc475930ca61117503", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-plugin-selinux-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:6ce37675749741e4ea05e934aa5b7376d596cc117bd317199d0a15e2236aa058", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:d01f7e794c3dd3f38de1b69fd360db4b858826eba4e6fd4edc79c8a74774ab00", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:46acc45e148eea376c3aa8e83a4d3bf1cf66fa35ccc670f592017428ce75ca77", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sed-4.5-4.fc31.aarch64.rpm", + "checksum": "sha256:5d87d829a1d939c520b25f1c790cd1f3bd6c8b769f4f21303ec5e16a3b509445", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.4", + "release": "37.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/selinux-policy-3.14.4-37.fc31.noarch.rpm", + "checksum": "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.4", + "release": "37.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/selinux-policy-targeted-3.14.4-37.fc31.noarch.rpm", + "checksum": "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.3", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm", + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "16.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/shadow-utils-4.6-16.fc31.aarch64.rpm", + "checksum": "sha256:2ad8824aa48378aa741fbd863104d950ad4f669566af2d4f433be6d9afd8ead6", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.14", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/shared-mime-info-1.14-1.fc31.aarch64.rpm", + "checksum": "sha256:c05d42fba4fc1ebc2df9ee49f971c744937d8b307626c90b3cf79bf91619863a", + "check_gpg": true + }, + { + "name": "shim-aa64", + "epoch": 0, + "version": "15", + "release": "8", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/shim-aa64-15-8.aarch64.rpm", + "checksum": "sha256:ac7985d2591bc2bd1d90efdb68751a3d7435cf902b3895cb308e830ce48f1f44", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.29.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.aarch64.rpm", + "checksum": "sha256:81169dd168c02aed3b1e57e5af16ec3dbdfb74c15373ee40e9eec5aac60a3d25", + "check_gpg": true + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sssd-client-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:054f0851c8b42292ac5c24ea649764b022dacc6d40a00e333abacc67e2c2a215", + "check_gpg": true + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sssd-common-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:d9641a59b33831e32fa61f3479152d5eac33e0526b32e67ae33f1c1102c69d4b", + "check_gpg": true + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sssd-kcm-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:121e2a4e79f6dbf37af2182cb12ff28345db993a7f83de344f6f5fbcf5a705a5", + "check_gpg": true + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sssd-nfs-idmap-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:077e72f02d2eef2a2bfd8ab057527a02005806e731303fbff1e28f61716f2943", + "check_gpg": true + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.8.28", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sudo-1.8.28-1.fc31.aarch64.rpm", + "checksum": "sha256:cb478c89af0caac9a40c32a2b4a48242b16ff9e2e6daa375b2de88e396f524dd", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-243-4.gitef67743.fc31.aarch64.rpm", + "checksum": "sha256:af594688a568ec4db7dae9d60390dce1ab547527bbf2415752f211de3748b97f", + "check_gpg": true + }, + { + "name": "systemd-bootchart", + "epoch": 0, + "version": "233", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-bootchart-233-5.fc31.aarch64.rpm", + "checksum": "sha256:0ff534e46d982b5a213eb562e3cb30d1935a25a9f433d325457069eec9131217", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.aarch64.rpm", + "checksum": "sha256:7487afe052c79100e906a4d2cb2ee1043410ca10a8e60a65d95776f63a513595", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.aarch64.rpm", + "checksum": "sha256:e29356f3ea2554e8be23401a08a941f406d337cf6b38e7ee99926fb9b3f1f541", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm", + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-udev-243-4.gitef67743.fc31.aarch64.rpm", + "checksum": "sha256:a436dca481707ca10a0c5bb189d9a25ff76c4f66f1d32b0847dc6d13ba46c17a", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/trousers-0.3.13-13.fc31.aarch64.rpm", + "checksum": "sha256:7bd78cde4202401947dea928274579074bc78fdae096057e788c1b6a86a10ecc", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/trousers-lib-0.3.13-13.fc31.aarch64.rpm", + "checksum": "sha256:6728ee255cb8c80b85f6d610bfd795025939a77d2591ad61fe1c4f9d657c386e", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/tss2-1331-2.fc31.aarch64.rpm", + "checksum": "sha256:42945876fb8932bad3e50b50349af4bdabe713d7be1c8efc1b0f7b042e556aa5", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm", + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/u/unbound-libs-1.9.3-1.fc31.aarch64.rpm", + "checksum": "sha256:acd149c4bf17a15db75fca1f19e34784a9ed275e19c0721aa78f5eb94797a685", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/u/util-linux-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:07cd9ddc7f7a16dc9739647af90706cfbcf70b281f5474e622b0769e211e0dc8", + "check_gpg": true + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.1.2102", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/v/vim-minimal-8.1.2102-1.fc31.aarch64.rpm", + "checksum": "sha256:477474e74c5f30884f0a4571445ecf987b521f61139fc0ba7d516e075f47e7ce", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "15.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/w/which-2.21-15.fc31.aarch64.rpm", + "checksum": "sha256:06cf2f5439e0ce2c7fc655bdf4868d3c47a5fbe5b71e9dc305232a7732896e14", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm", + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.1.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xfsprogs-5.1.0-2.fc31.aarch64.rpm", + "checksum": "sha256:a4f7846fb262ad61885f64b8a354f9303fe5ce129378e4781eefa0bffdef828e", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.27", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm", + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xz-5.2.4-6.fc31.aarch64.rpm", + "checksum": "sha256:58a44f9472918a511d3eee0b3f08926dab2ebf4994584403bd196e6c92a06f5a", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xz-libs-5.2.4-6.fc31.aarch64.rpm", + "checksum": "sha256:9ed0b44834b6a637c70aa00ab243aecb534f9aea461e1388652ab039898239c8", + "check_gpg": true + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/y/yum-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.2", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.aarch64.rpm", + "checksum": "sha256:c1893a7c51ebb0371b87e2179d6e0e5d0fbb71acb4234cf4adc293af11c75578", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "19.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/z/zlib-1.2.11-19.fc31.aarch64.rpm", + "checksum": "sha256:f23f467c4099be4cb4dfdc1be13b7a7bb6e8c6da7c21182658a034827b64df39", + "check_gpg": true + } + ], + "checksums": { + "0": "sha256:706bc46aa3b2b716d9ff69963273d4462995f3632f71968812842ab79812a999" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac ro no_timer_check console=ttyS0,115200n8 console=tty1 biosdevname=0 net.ifnames=0 console=ttyS0,115200" + }, + "bootloader": "unknown", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "initrd": "/boot/initramfs-5.3.7-301.fc31.aarch64.img", + "linux": "/boot/vmlinuz-5.3.7-301.fc31.aarch64", + "options": "$kernelopts", + "title": "Fedora (5.3.7-301.fc31.aarch64) 31 (Thirty One)", + "version": "5.3.7-301.fc31.aarch64" + } + ], + "firewall-enabled": [ + "ssh", + "mdns", + "dhcpv6-client" + ], + "fstab": [ + [ + "UUID=46BB-8120", + "/boot/efi", + "vfat", + "umask=0077,shortname=winnt", + "0", + "2" + ], + [ + "UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "/", + "ext4", + "defaults", + "1", + "1" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:993:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:997:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "render:x:996:", + "root:x:0:", + "ssh_keys:x:998:", + "sshd:x:74:", + "sys:x:3:", + "systemd-coredump:x:995:", + "systemd-journal:x:190:", + "systemd-network:x:192:", + "systemd-resolve:x:193:", + "systemd-timesync:x:994:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:999:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "raw", + "os-release": { + "ANSI_COLOR": "0;34", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:fedoraproject:fedora:31", + "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f31/system-administrators-guide/", + "HOME_URL": "https://fedoraproject.org/", + "ID": "fedora", + "LOGO": "fedora-logo-icon", + "NAME": "Fedora", + "PLATFORM_ID": "platform:f31", + "PRETTY_NAME": "Fedora 31 (Thirty One)", + "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy", + "REDHAT_BUGZILLA_PRODUCT": "Fedora", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "31", + "REDHAT_SUPPORT_PRODUCT": "Fedora", + "REDHAT_SUPPORT_PRODUCT_VERSION": "31", + "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help", + "VERSION": "31 (Thirty One)", + "VERSION_CODENAME": "", + "VERSION_ID": "31" + }, + "packages": [ + "NetworkManager-1.20.4-1.fc31.aarch64", + "NetworkManager-libnm-1.20.4-1.fc31.aarch64", + "abattis-cantarell-fonts-0.111-3.fc31.noarch", + "acl-2.2.53-4.fc31.aarch64", + "adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch", + "adwaita-cursor-theme-3.34.0-1.fc31.noarch", + "adwaita-icon-theme-3.34.0-1.fc31.noarch", + "alternatives-1.11-5.fc31.aarch64", + "at-spi2-atk-2.34.1-1.fc31.aarch64", + "at-spi2-core-2.34.0-1.fc31.aarch64", + "atk-2.34.1-1.fc31.aarch64", + "audit-3.0-0.12.20190507gitf58ec40.fc31.aarch64", + "audit-libs-3.0-0.12.20190507gitf58ec40.fc31.aarch64", + "avahi-libs-0.7-20.fc31.aarch64", + "basesystem-11-8.fc31.noarch", + "bash-5.0.7-3.fc31.aarch64", + "brotli-1.0.7-6.fc31.aarch64", + "bzip2-libs-1.0.8-1.fc31.aarch64", + "c-ares-1.15.0-4.fc31.aarch64", + "ca-certificates-2019.2.32-3.fc31.noarch", + "cairo-1.16.0-6.fc31.aarch64", + "cairo-gobject-1.16.0-6.fc31.aarch64", + "checkpolicy-2.9-2.fc31.aarch64", + "chrony-3.5-4.fc31.aarch64", + "cloud-init-17.1-11.fc31.noarch", + "colord-libs-1.4.4-2.fc31.aarch64", + "coreutils-8.31-4.fc31.aarch64", + "coreutils-common-8.31-4.fc31.aarch64", + "cpio-2.12-12.fc31.aarch64", + "cracklib-2.9.6-21.fc31.aarch64", + "cracklib-dicts-2.9.6-21.fc31.aarch64", + "crypto-policies-20190816-4.gitbb9bf99.fc31.noarch", + "cryptsetup-libs-2.2.1-1.fc31.aarch64", + "cups-libs-2.2.12-2.fc31.aarch64", + "curl-7.66.0-1.fc31.aarch64", + "cyrus-sasl-lib-2.1.27-2.fc31.aarch64", + "dbus-1.12.16-3.fc31.aarch64", + "dbus-broker-21-6.fc31.aarch64", + "dbus-common-1.12.16-3.fc31.noarch", + "dbus-libs-1.12.16-3.fc31.aarch64", + "dbxtool-8-10.fc31.aarch64", + "dconf-0.34.0-1.fc31.aarch64", + "dejavu-fonts-common-2.37-2.fc31.noarch", + "dejavu-sans-fonts-2.37-2.fc31.noarch", + "deltarpm-3.6.2-2.fc31.aarch64", + "device-mapper-1.02.163-2.fc31.aarch64", + "device-mapper-libs-1.02.163-2.fc31.aarch64", + "dhcp-client-4.4.1-15.fc31.aarch64", + "dhcp-common-4.4.1-15.fc31.noarch", + "diffutils-3.7-3.fc31.aarch64", + "dnf-4.2.9-5.fc31.noarch", + "dnf-data-4.2.9-5.fc31.noarch", + "dnf-plugins-core-4.0.9-1.fc31.noarch", + "dracut-049-27.git20181204.fc31.1.aarch64", + "dracut-config-generic-049-27.git20181204.fc31.1.aarch64", + "e2fsprogs-1.45.3-1.fc31.aarch64", + "e2fsprogs-libs-1.45.3-1.fc31.aarch64", + "ebtables-legacy-2.0.10-37.fc31.aarch64", + "efi-filesystem-4-3.fc31.noarch", + "efibootmgr-16-6.fc31.aarch64", + "efivar-libs-37-1.fc30.aarch64", + "elfutils-default-yama-scope-0.177-1.fc31.noarch", + "elfutils-libelf-0.177-1.fc31.aarch64", + "elfutils-libs-0.177-1.fc31.aarch64", + "expat-2.2.8-1.fc31.aarch64", + "fedora-gpg-keys-31-1.noarch", + "fedora-release-31-1.noarch", + "fedora-release-common-31-1.noarch", + "fedora-repos-31-1.noarch", + "file-5.37-3.fc31.aarch64", + "file-libs-5.37-3.fc31.aarch64", + "filesystem-3.12-2.fc31.aarch64", + "findutils-4.6.0-24.fc31.aarch64", + "fipscheck-1.5.0-7.fc31.aarch64", + "fipscheck-lib-1.5.0-7.fc31.aarch64", + "firewalld-0.7.2-1.fc31.noarch", + "firewalld-filesystem-0.7.2-1.fc31.noarch", + "fontconfig-2.13.92-3.fc31.aarch64", + "fontpackages-filesystem-1.44-25.fc31.noarch", + "freetype-2.10.0-3.fc31.aarch64", + "fribidi-1.0.5-4.fc31.aarch64", + "fuse-libs-2.9.9-8.fc31.aarch64", + "gawk-5.0.1-5.fc31.aarch64", + "gcr-3.33.4-1.fc31.aarch64", + "gcr-base-3.33.4-1.fc31.aarch64", + "gdbm-libs-1.18.1-1.fc31.aarch64", + "gdk-pixbuf2-2.40.0-1.fc31.aarch64", + "gdk-pixbuf2-modules-2.40.0-1.fc31.aarch64", + "geolite2-city-20190806-1.fc31.noarch", + "geolite2-country-20190806-1.fc31.noarch", + "gettext-0.20.1-2.fc31.aarch64", + "gettext-libs-0.20.1-2.fc31.aarch64", + "glib-networking-2.62.1-1.fc31.aarch64", + "glib2-2.62.1-1.fc31.aarch64", + "glibc-2.30-5.fc31.aarch64", + "glibc-common-2.30-5.fc31.aarch64", + "glibc-langpack-en-2.30-5.fc31.aarch64", + "gmp-6.1.2-10.fc31.aarch64", + "gnome-keyring-3.34.0-1.fc31.aarch64", + "gnupg2-2.2.17-2.fc31.aarch64", + "gnupg2-smime-2.2.17-2.fc31.aarch64", + "gnutls-3.6.10-1.fc31.aarch64", + "gobject-introspection-1.62.0-1.fc31.aarch64", + "gpg-pubkey-3c3359c4-5c6ae44d", + "gpgme-1.13.1-3.fc31.aarch64", + "graphite2-1.3.13-1.fc31.aarch64", + "grep-3.3-3.fc31.aarch64", + "groff-base-1.22.3-20.fc31.aarch64", + "grub2-common-2.02-100.fc31.noarch", + "grub2-efi-aa64-2.02-100.fc31.aarch64", + "grub2-tools-2.02-100.fc31.aarch64", + "grub2-tools-extra-2.02-100.fc31.aarch64", + "grub2-tools-minimal-2.02-100.fc31.aarch64", + "gsettings-desktop-schemas-3.34.0-1.fc31.aarch64", + "gtk-update-icon-cache-3.24.12-3.fc31.aarch64", + "gtk3-3.24.12-3.fc31.aarch64", + "gzip-1.10-1.fc31.aarch64", + "harfbuzz-2.6.1-2.fc31.aarch64", + "hicolor-icon-theme-0.17-7.fc31.noarch", + "hostname-3.20-9.fc31.aarch64", + "ima-evm-utils-1.2.1-2.fc31.aarch64", + "initscripts-10.02-2.fc31.aarch64", + "ipcalc-0.2.5-3.fc31.aarch64", + "iproute-5.3.0-1.fc31.aarch64", + "iproute-tc-5.3.0-1.fc31.aarch64", + "ipset-7.3-1.fc31.aarch64", + "ipset-libs-7.3-1.fc31.aarch64", + "iptables-1.8.3-5.fc31.aarch64", + "iptables-libs-1.8.3-5.fc31.aarch64", + "iputils-20190515-3.fc31.aarch64", + "jansson-2.12-4.fc31.aarch64", + "jasper-libs-2.0.14-9.fc31.aarch64", + "jbigkit-libs-2.1-17.fc31.aarch64", + "json-c-0.13.1-6.fc31.aarch64", + "json-glib-1.4.4-3.fc31.aarch64", + "kbd-2.0.4-14.fc31.aarch64", + "kbd-legacy-2.0.4-14.fc31.noarch", + "kbd-misc-2.0.4-14.fc31.noarch", + "kernel-5.3.7-301.fc31.aarch64", + "kernel-core-5.3.7-301.fc31.aarch64", + "kernel-modules-5.3.7-301.fc31.aarch64", + "keyutils-libs-1.6-3.fc31.aarch64", + "kmod-26-4.fc31.aarch64", + "kmod-libs-26-4.fc31.aarch64", + "kpartx-0.8.0-3.fc31.aarch64", + "krb5-libs-1.17-45.fc31.aarch64", + "langpacks-core-en-2.0-7.fc31.noarch", + "langpacks-en-2.0-7.fc31.noarch", + "lcms2-2.9-6.fc31.aarch64", + "less-551-2.fc31.aarch64", + "libX11-1.6.8-3.fc31.aarch64", + "libX11-common-1.6.8-3.fc31.noarch", + "libXau-1.0.9-2.fc31.aarch64", + "libXcomposite-0.4.4-17.fc31.aarch64", + "libXcursor-1.1.15-6.fc31.aarch64", + "libXdamage-1.1.4-17.fc31.aarch64", + "libXext-1.3.4-2.fc31.aarch64", + "libXfixes-5.0.3-10.fc31.aarch64", + "libXft-2.3.3-2.fc31.aarch64", + "libXi-1.7.10-2.fc31.aarch64", + "libXinerama-1.1.4-4.fc31.aarch64", + "libXrandr-1.5.2-2.fc31.aarch64", + "libXrender-0.9.10-10.fc31.aarch64", + "libXtst-1.2.3-10.fc31.aarch64", + "libacl-2.2.53-4.fc31.aarch64", + "libarchive-3.4.0-1.fc31.aarch64", + "libargon2-20171227-3.fc31.aarch64", + "libassuan-2.5.3-2.fc31.aarch64", + "libattr-2.4.48-7.fc31.aarch64", + "libbasicobjects-0.1.1-43.fc31.aarch64", + "libblkid-2.34-3.fc31.aarch64", + "libcap-2.26-6.fc31.aarch64", + "libcap-ng-0.7.9-8.fc31.aarch64", + "libcollection-0.7.0-43.fc31.aarch64", + "libcom_err-1.45.3-1.fc31.aarch64", + "libcomps-0.1.11-3.fc31.aarch64", + "libcroco-0.6.13-2.fc31.aarch64", + "libcurl-7.66.0-1.fc31.aarch64", + "libdatrie-0.2.9-10.fc31.aarch64", + "libdb-5.3.28-38.fc31.aarch64", + "libdb-utils-5.3.28-38.fc31.aarch64", + "libdhash-0.5.0-43.fc31.aarch64", + "libdnf-0.35.3-6.fc31.aarch64", + "libedit-3.1-28.20190324cvs.fc31.aarch64", + "libepoxy-1.5.3-4.fc31.aarch64", + "libevent-2.1.8-7.fc31.aarch64", + "libfdisk-2.34-3.fc31.aarch64", + "libffi-3.1-23.fc31.aarch64", + "libgcc-9.2.1-1.fc31.aarch64", + "libgcrypt-1.8.5-1.fc31.aarch64", + "libgomp-9.2.1-1.fc31.aarch64", + "libgpg-error-1.36-2.fc31.aarch64", + "libgusb-0.3.0-5.fc31.aarch64", + "libidn2-2.2.0-2.fc31.aarch64", + "libini_config-1.3.1-43.fc31.aarch64", + "libjpeg-turbo-2.0.2-4.fc31.aarch64", + "libkcapi-1.1.5-1.fc31.aarch64", + "libkcapi-hmaccalc-1.1.5-1.fc31.aarch64", + "libksba-1.3.5-10.fc31.aarch64", + "libldb-2.0.7-1.fc31.aarch64", + "libmaxminddb-1.2.0-8.fc31.aarch64", + "libmetalink-0.1.3-9.fc31.aarch64", + "libmnl-1.0.4-10.fc31.aarch64", + "libmodman-2.0.1-20.fc31.aarch64", + "libmodulemd1-1.8.15-3.fc31.aarch64", + "libmount-2.34-3.fc31.aarch64", + "libndp-1.7-4.fc31.aarch64", + "libnetfilter_conntrack-1.0.7-3.fc31.aarch64", + "libnfnetlink-1.0.1-16.fc31.aarch64", + "libnfsidmap-2.4.1-1.rc1.fc31.aarch64", + "libnftnl-1.1.3-2.fc31.aarch64", + "libnghttp2-1.39.2-1.fc31.aarch64", + "libnl3-3.5.0-1.fc31.aarch64", + "libnsl2-1.2.0-5.20180605git4a062cf.fc31.aarch64", + "libpath_utils-0.2.1-43.fc31.aarch64", + "libpcap-1.9.0-4.fc31.aarch64", + "libpipeline-1.5.1-3.fc31.aarch64", + "libpng-1.6.37-2.fc31.aarch64", + "libproxy-0.4.15-14.fc31.aarch64", + "libpsl-0.21.0-2.fc31.aarch64", + "libpwquality-1.4.1-1.fc31.aarch64", + "libref_array-0.1.5-43.fc31.aarch64", + "librepo-1.10.5-1.fc31.aarch64", + "libreport-filesystem-2.10.1-2.fc31.noarch", + "libseccomp-2.4.1-1.fc31.aarch64", + "libsecret-0.19.1-1.fc31.aarch64", + "libselinux-2.9-5.fc31.aarch64", + "libselinux-utils-2.9-5.fc31.aarch64", + "libsemanage-2.9-3.fc31.aarch64", + "libsepol-2.9-2.fc31.aarch64", + "libsigsegv-2.11-8.fc31.aarch64", + "libsmartcols-2.34-3.fc31.aarch64", + "libsolv-0.7.5-3.fc31.aarch64", + "libsoup-2.68.2-1.fc31.aarch64", + "libss-1.45.3-1.fc31.aarch64", + "libssh-0.9.0-6.fc31.aarch64", + "libssh-config-0.9.0-6.fc31.noarch", + "libsss_autofs-2.2.2-1.fc31.aarch64", + "libsss_certmap-2.2.2-1.fc31.aarch64", + "libsss_idmap-2.2.2-1.fc31.aarch64", + "libsss_nss_idmap-2.2.2-1.fc31.aarch64", + "libsss_sudo-2.2.2-1.fc31.aarch64", + "libstdc++-9.2.1-1.fc31.aarch64", + "libtalloc-2.3.0-1.fc31.aarch64", + "libtasn1-4.14-2.fc31.aarch64", + "libtdb-1.4.2-1.fc31.aarch64", + "libtevent-0.10.1-1.fc31.aarch64", + "libtextstyle-0.20.1-2.fc31.aarch64", + "libthai-0.1.28-3.fc31.aarch64", + "libtiff-4.0.10-6.fc31.aarch64", + "libtirpc-1.1.4-2.rc3.fc31.aarch64", + "libunistring-0.9.10-6.fc31.aarch64", + "libusbx-1.0.22-4.fc31.aarch64", + "libuser-0.62-21.fc31.aarch64", + "libutempter-1.1.6-17.fc31.aarch64", + "libuuid-2.34-3.fc31.aarch64", + "libverto-0.3.0-8.fc31.aarch64", + "libwayland-client-1.17.0-2.fc31.aarch64", + "libwayland-cursor-1.17.0-2.fc31.aarch64", + "libwayland-egl-1.17.0-2.fc31.aarch64", + "libxcb-1.13.1-3.fc31.aarch64", + "libxcrypt-4.4.10-1.fc31.aarch64", + "libxcrypt-compat-4.4.10-1.fc31.aarch64", + "libxkbcommon-0.8.4-2.fc31.aarch64", + "libxml2-2.9.9-3.fc31.aarch64", + "libyaml-0.2.2-2.fc31.aarch64", + "libzstd-1.4.2-1.fc31.aarch64", + "linux-atm-libs-2.5.1-25.fc31.aarch64", + "linux-firmware-20190923-102.fc31.noarch", + "linux-firmware-whence-20190923-102.fc31.noarch", + "lmdb-libs-0.9.23-3.fc31.aarch64", + "lua-libs-5.3.5-6.fc31.aarch64", + "lz4-libs-1.9.1-1.fc31.aarch64", + "man-db-2.8.4-5.fc31.aarch64", + "mkpasswd-5.5.2-1.fc31.aarch64", + "mokutil-0.3.0-11.fc30.aarch64", + "mpfr-3.1.6-5.fc31.aarch64", + "ncurses-6.1-12.20190803.fc31.aarch64", + "ncurses-base-6.1-12.20190803.fc31.noarch", + "ncurses-libs-6.1-12.20190803.fc31.aarch64", + "net-tools-2.0-0.55.20160912git.fc31.aarch64", + "nettle-3.5.1-3.fc31.aarch64", + "nftables-0.9.1-3.fc31.aarch64", + "npth-1.6-3.fc31.aarch64", + "openldap-2.4.47-3.fc31.aarch64", + "openssh-8.0p1-8.fc31.1.aarch64", + "openssh-clients-8.0p1-8.fc31.1.aarch64", + "openssh-server-8.0p1-8.fc31.1.aarch64", + "openssl-1.1.1d-2.fc31.aarch64", + "openssl-libs-1.1.1d-2.fc31.aarch64", + "openssl-pkcs11-0.4.10-2.fc31.aarch64", + "os-prober-1.77-3.fc31.aarch64", + "p11-kit-0.23.16.1-2.fc31.aarch64", + "p11-kit-trust-0.23.16.1-2.fc31.aarch64", + "pam-1.3.1-18.fc31.aarch64", + "pango-1.44.6-1.fc31.aarch64", + "parted-3.2.153-1.fc31.aarch64", + "passwd-0.80-6.fc31.aarch64", + "pcre-8.43-2.fc31.1.aarch64", + "pcre2-10.33-14.fc31.aarch64", + "pigz-2.4-5.fc31.aarch64", + "pinentry-1.1.0-6.fc31.aarch64", + "pixman-0.38.4-1.fc31.aarch64", + "plymouth-0.9.4-10.20191001gita8aad27.fc31.aarch64", + "plymouth-core-libs-0.9.4-10.20191001gita8aad27.fc31.aarch64", + "plymouth-scripts-0.9.4-10.20191001gita8aad27.fc31.aarch64", + "policycoreutils-2.9-5.fc31.aarch64", + "polkit-libs-0.116-4.fc31.aarch64", + "popt-1.16-18.fc31.aarch64", + "procps-ng-3.3.15-6.fc31.aarch64", + "publicsuffix-list-dafsa-20190417-2.fc31.noarch", + "python-pip-wheel-19.1.1-4.fc31.noarch", + "python-setuptools-wheel-41.2.0-1.fc31.noarch", + "python-unversioned-command-3.7.4-5.fc31.noarch", + "python3-3.7.4-5.fc31.aarch64", + "python3-asn1crypto-0.24.0-7.fc31.noarch", + "python3-attrs-19.1.0-2.fc31.noarch", + "python3-audit-3.0-0.12.20190507gitf58ec40.fc31.aarch64", + "python3-babel-2.7.0-2.fc31.noarch", + "python3-cffi-1.12.3-1.fc31.aarch64", + "python3-chardet-3.0.4-10.fc31.noarch", + "python3-configobj-5.0.6-16.fc31.noarch", + "python3-cryptography-2.6.1-2.fc31.aarch64", + "python3-dateutil-2.8.0-3.fc31.noarch", + "python3-dbus-1.2.8-6.fc31.aarch64", + "python3-decorator-4.4.0-2.fc31.noarch", + "python3-distro-1.4.0-2.fc31.noarch", + "python3-dnf-4.2.9-5.fc31.noarch", + "python3-dnf-plugins-core-4.0.9-1.fc31.noarch", + "python3-firewall-0.7.2-1.fc31.noarch", + "python3-gobject-base-3.34.0-3.fc31.aarch64", + "python3-gpg-1.13.1-3.fc31.aarch64", + "python3-hawkey-0.35.3-6.fc31.aarch64", + "python3-idna-2.8-2.fc31.noarch", + "python3-jinja2-2.10.1-2.fc31.noarch", + "python3-jsonpatch-1.21-8.fc31.noarch", + "python3-jsonpointer-1.10-16.fc31.noarch", + "python3-jsonschema-3.0.2-1.fc31.noarch", + "python3-jwt-1.7.1-3.fc31.noarch", + "python3-libcomps-0.1.11-3.fc31.aarch64", + "python3-libdnf-0.35.3-6.fc31.aarch64", + "python3-libs-3.7.4-5.fc31.aarch64", + "python3-libselinux-2.9-5.fc31.aarch64", + "python3-libsemanage-2.9-3.fc31.aarch64", + "python3-markupsafe-1.1.1-2.fc31.aarch64", + "python3-oauthlib-3.0.2-2.fc31.noarch", + "python3-pip-19.1.1-4.fc31.noarch", + "python3-ply-3.11-3.fc31.noarch", + "python3-policycoreutils-2.9-5.fc31.noarch", + "python3-prettytable-0.7.2-18.fc31.noarch", + "python3-pycparser-2.14-20.fc31.noarch", + "python3-pyrsistent-0.15.4-1.fc31.aarch64", + "python3-pyserial-3.4-3.fc31.noarch", + "python3-pysocks-1.7.0-2.fc31.noarch", + "python3-pytz-2019.2-1.fc31.noarch", + "python3-pyyaml-5.1.2-1.fc31.aarch64", + "python3-requests-2.22.0-3.fc31.noarch", + "python3-rpm-4.15.0-6.fc31.aarch64", + "python3-setools-4.2.2-1.fc31.aarch64", + "python3-setuptools-41.2.0-1.fc31.noarch", + "python3-six-1.12.0-2.fc31.noarch", + "python3-slip-0.6.4-16.fc31.noarch", + "python3-slip-dbus-0.6.4-16.fc31.noarch", + "python3-unbound-1.9.3-1.fc31.aarch64", + "python3-urllib3-1.25.3-4.fc31.noarch", + "qrencode-libs-4.0.2-4.fc31.aarch64", + "readline-8.0-3.fc31.aarch64", + "rest-0.8.1-6.fc31.aarch64", + "rootfiles-8.1-25.fc31.noarch", + "rpm-4.15.0-6.fc31.aarch64", + "rpm-build-libs-4.15.0-6.fc31.aarch64", + "rpm-libs-4.15.0-6.fc31.aarch64", + "rpm-plugin-selinux-4.15.0-6.fc31.aarch64", + "rpm-plugin-systemd-inhibit-4.15.0-6.fc31.aarch64", + "rpm-sign-libs-4.15.0-6.fc31.aarch64", + "sed-4.5-4.fc31.aarch64", + "selinux-policy-3.14.4-37.fc31.noarch", + "selinux-policy-targeted-3.14.4-37.fc31.noarch", + "setup-2.13.3-2.fc31.noarch", + "shadow-utils-4.6-16.fc31.aarch64", + "shared-mime-info-1.14-1.fc31.aarch64", + "shim-aa64-15-8.aarch64", + "sqlite-libs-3.29.0-2.fc31.aarch64", + "sssd-client-2.2.2-1.fc31.aarch64", + "sssd-common-2.2.2-1.fc31.aarch64", + "sssd-kcm-2.2.2-1.fc31.aarch64", + "sssd-nfs-idmap-2.2.2-1.fc31.aarch64", + "sudo-1.8.28-1.fc31.aarch64", + "systemd-243-4.gitef67743.fc31.aarch64", + "systemd-bootchart-233-5.fc31.aarch64", + "systemd-libs-243-4.gitef67743.fc31.aarch64", + "systemd-pam-243-4.gitef67743.fc31.aarch64", + "systemd-rpm-macros-243-4.gitef67743.fc31.noarch", + "systemd-udev-243-4.gitef67743.fc31.aarch64", + "trousers-0.3.13-13.fc31.aarch64", + "trousers-lib-0.3.13-13.fc31.aarch64", + "tss2-1331-2.fc31.aarch64", + "tzdata-2019c-1.fc31.noarch", + "unbound-libs-1.9.3-1.fc31.aarch64", + "util-linux-2.34-3.fc31.aarch64", + "vim-minimal-8.1.2102-1.fc31.aarch64", + "which-2.21-15.fc31.aarch64", + "whois-nls-5.5.2-1.fc31.noarch", + "xfsprogs-5.1.0-2.fc31.aarch64", + "xkeyboard-config-2.27-2.fc31.noarch", + "xz-5.2.4-6.fc31.aarch64", + "xz-libs-5.2.4-6.fc31.aarch64", + "yum-4.2.9-5.fc31.noarch", + "zchunk-libs-1.1.2-3.fc31.aarch64", + "zlib-1.2.11-19.fc31.aarch64" + ], + "partition-table": "gpt", + "partition-table-id": "8DFDFF87-C96E-EA48-A3A6-9408F1F6B1EF", + "partitions": [ + { + "bootable": false, + "fstype": "vfat", + "label": "EFI\\ System", + "partuuid": "02C1E068-1D2F-4DA3-91FD-8DD76A955C9D", + "size": 498073600, + "start": 1048576, + "type": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B", + "uuid": "46BB-8120" + }, + { + "bootable": false, + "fstype": "ext4", + "label": null, + "partuuid": "8D760010-FAAE-46D1-9E5B-4A2EAC5030CD", + "size": 5942263296, + "start": 500170752, + "type": "0FC63DAF-8483-4772-8E79-3D69D8477DE4", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:996:993::/var/lib/chrony:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:998:995:systemd Core Dumper:/:/sbin/nologin", + "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "systemd-timesync:x:997:994:systemd Time Synchronization:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:999:999:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/boot/System.map-5.3.7-301.fc31.aarch64": ".M.......", + "/boot/efi/EFI": ".M.......", + "/boot/efi/EFI/fedora/grubaa64.efi": ".......T.", + "/boot/initramfs-5.3.7-301.fc31.aarch64.img": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/proc": ".M.......", + "/run/cryptsetup": ".M.......", + "/sys": ".M.......", + "/var/log/btmp": ".M.......", + "/var/log/journal": ".M....G..", + "/var/log/lastlog": ".M....G.." + }, + "missing": [] + }, + "services-disabled": [ + "arp-ethers.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "console-getty.service", + "debug-shell.service", + "exit.target", + "fstrim.timer", + "halt.target", + "kexec.target", + "loadmodules.service", + "nftables.service", + "nis-domainname.service", + "poweroff.target", + "proc-sys-fs-binfmt_misc.mount", + "rdisc.service", + "remote-cryptsetup.target", + "runlevel0.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-boot-check-no-failures.service", + "systemd-bootchart.service", + "systemd-network-generator.service", + "systemd-networkd-wait-online.service", + "systemd-networkd.service", + "systemd-networkd.socket", + "systemd-pstore.service", + "systemd-resolved.service", + "systemd-time-wait-sync.service", + "systemd-timesyncd.service", + "tcsd.service" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "cloud-init.service", + "ctrl-alt-del.target", + "dbus-broker.service", + "dbus-org.fedoraproject.FirewallD1.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dbus.service", + "dbus.socket", + "dbxtool.service", + "dnf-makecache.timer", + "firewalld.service", + "getty@.service", + "import-state.service", + "messagebus.service", + "reboot.target", + "remote-fs.target", + "runlevel6.target", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "unbound-anchor.timer" + ] + } +} \ No newline at end of file diff --git a/test/cases/fedora_31-aarch64-openstack-boot.json b/test/cases/fedora_31-aarch64-openstack-boot.json new file mode 100644 index 0000000..993eccd --- /dev/null +++ b/test/cases/fedora_31-aarch64-openstack-boot.json @@ -0,0 +1,11511 @@ +{ + "boot": { + "type": "qemu" + }, + "compose-request": { + "distro": "fedora-31", + "arch": "aarch64", + "image-type": "openstack", + "repositories": [ + { + "baseurl": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ], + "filename": "disk.qcow2", + "blueprint": { + "name": "openstack-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:0064998ad79a6250297b379852b5a06932d8e074270bea02d75888758755bd23": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.aarch64.rpm" + }, + "sha256:0064a42567b657d85831ec162a314cd00f7befe48ce634387463754677206c9c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gettext-0.20.1-2.fc31.aarch64.rpm" + }, + "sha256:00e59535d45094b7d47e25c93d21179f3138839968776107df99fa0678f1440f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-libelf-0.177-1.fc31.aarch64.rpm" + }, + "sha256:01ea4ecad746f1309b5c943f2b2709f7e5400d33e4d51c85401205ed18d61621": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libX11-1.6.8-3.fc31.aarch64.rpm" + }, + "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:02f7f1cdd5cbe11b16e093686db5c584a68db4e6b1015c4d36c0246a54f801bb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_certmap-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:03559557dbf64805e44d7e956f6b228c90831766fd1f485eecdfddf7a646a220": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kbd-2.0.4-14.fc31.aarch64.rpm" + }, + "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/linux-firmware-20190923-102.fc31.noarch.rpm" + }, + "sha256:03b9d49b78b7e758eecce6a25782767ec5dc921d28f053b17a651b1c8bb96d7b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXtst-1.2.3-10.fc31.aarch64.rpm" + }, + "sha256:0458f6a42cd644322b6eb24b01f0f75de47d5e10ae077797dfada1ce2a1f7fcd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dconf-0.34.0-1.fc31.aarch64.rpm" + }, + "sha256:047f9e29fcfa56be98ca3f42249f3ccb2a93df99f2438e3983e2064025f0d79d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jsonschema-3.0.2-1.fc31.noarch.rpm" + }, + "sha256:04826477197ec239d756f81cb6d38fde2f65e71499a8dbaf0c666d93084f1ea3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdatrie-0.2.9-10.fc31.aarch64.rpm" + }, + "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:054f0851c8b42292ac5c24ea649764b022dacc6d40a00e333abacc67e2c2a215": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sssd-client-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm" + }, + "sha256:06cf2f5439e0ce2c7fc655bdf4868d3c47a5fbe5b71e9dc305232a7732896e14": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/w/which-2.21-15.fc31.aarch64.rpm" + }, + "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-six-1.12.0-2.fc31.noarch.rpm" + }, + "sha256:077e72f02d2eef2a2bfd8ab057527a02005806e731303fbff1e28f61716f2943": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sssd-nfs-idmap-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:07cd9ddc7f7a16dc9739647af90706cfbcf70b281f5474e622b0769e211e0dc8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/u/util-linux-2.34-3.fc31.aarch64.rpm" + }, + "sha256:07f4ccd9f3cb20ceb4483adb673adfef15394b246bd93a84f169eb07acb68d71": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/passwd-0.80-6.fc31.aarch64.rpm" + }, + "sha256:089d4c5c48e89cd1444f283571fce20fbf5f1b20f3a5ff1ce74266bbc2cd0fec": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/checkpolicy-2.9-2.fc31.aarch64.rpm" + }, + "sha256:0a4100f50b31df500afc5d255dd87117553df7032447f3e226196fd64f9c3f47": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.aarch64.rpm" + }, + "sha256:0a80e2a0ede76c98337c220f01dfadacace037b48f09fe072c5d33f356e50b8e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssh-server-8.0p1-8.fc31.1.aarch64.rpm" + }, + "sha256:0ae87f94df2e114f287d60e9041ac159349f51322e32eeefa19a96db0acb78e7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pigz-2.4-5.fc31.aarch64.rpm" + }, + "sha256:0b109cfab724680af15e7be85cf9f4f4828cd8290f0aa8fcebcbb14cd176be94": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/initscripts-10.02-2.fc31.aarch64.rpm" + }, + "sha256:0b1ddcc8c3096814bc5027133fb077ef587b49a1a4e4d6426327c75cf2066b11": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/alternatives-1.11-5.fc31.aarch64.rpm" + }, + "sha256:0b2a6b7e3b62ff9c02ec3012f08fbf396a7990bf9599b49b75eecbee3b257f7f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgpg-error-1.36-2.fc31.aarch64.rpm" + }, + "sha256:0b8baef3612880639ed59ae79475086aac8ce236fd35977e0d87305d0bb9a529": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pixman-0.38.4-1.fc31.aarch64.rpm" + }, + "sha256:0c49f27ae0aaf95fbdc52cfb9406c41eefff41b205f85fdc6ef6787ec3af5146": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libselinux-2.9-5.fc31.aarch64.rpm" + }, + "sha256:0cb1a66cb3bb44797a8aeb47db85db1f6c0fcf4d4571d8a5f8981f83b51c08af": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/graphite2-1.3.13-1.fc31.aarch64.rpm" + }, + "sha256:0edff1a5f04f7f5d47537b4c049b95331f9ad33963c9c63ca4b13345a37296d4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fipscheck-1.5.0-7.fc31.aarch64.rpm" + }, + "sha256:0f3591f036f0be85a9d28e9099d43a8b2e5a500a9588825c1dd994d1a323ceba": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/coreutils-8.31-4.fc31.aarch64.rpm" + }, + "sha256:0f661b922a9e9cbe82e948ec1d83c6fca6e61e08de50815a5b6c069a64f4e883": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXrandr-1.5.2-2.fc31.aarch64.rpm" + }, + "sha256:0ff534e46d982b5a213eb562e3cb30d1935a25a9f433d325457069eec9131217": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-bootchart-233-5.fc31.aarch64.rpm" + }, + "sha256:1088699171a35873eb5a776f0212ceff2bc9d67e3f1d8f2e107bbf751c36ca90": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cracklib-2.9.6-21.fc31.aarch64.rpm" + }, + "sha256:10e99db3c367665147f8a09956719d9fda97af2bc3f6d16294dc01f7955e67ee": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdrm-2.4.99-2.fc31.aarch64.rpm" + }, + "sha256:1135e96b6f9ed29e4ed4c0f060876891a244442a503f0b18ab238589da20d464": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jinja2-2.10.1-2.fc31.noarch.rpm" + }, + "sha256:1138343dfb107de07f54d4723aee2686fdd1af3e4532d14bd399b9b6b7873040": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/jansson-2.12-4.fc31.aarch64.rpm" + }, + "sha256:11e8ee935d9c9d349f4c081d035fc4ee34539af23ef8122e6901b22cf97f346f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsigsegv-2.11-8.fc31.aarch64.rpm" + }, + "sha256:121e2a4e79f6dbf37af2182cb12ff28345db993a7f83de344f6f5fbcf5a705a5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sssd-kcm-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:12c732f4a960848bd4fbc8111c2c0cf584799b1fdf0eb89c2cdcb26da5bc03b8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnupg2-2.2.17-2.fc31.aarch64.rpm" + }, + "sha256:143c50c0663f963c7689c1cec43b81cf1433d5d3b67eb8233ba06506c1b3e095": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jwt-1.7.1-3.fc31.noarch.rpm" + }, + "sha256:1472adb267192ca8a323e544fd9749c4765334fc5779e8de4ee583eff77fc078": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-client-1.17.0-2.fc31.aarch64.rpm" + }, + "sha256:14a759b4daf287d66f5b803b0fbb52621f8429607be109e5d3c313a57cc276e2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.aarch64.rpm" + }, + "sha256:159972ccc01cd5840c2aad04818efc965b64c5120b1fcce92a47f45ab1abf4a5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXcomposite-0.4.4-17.fc31.aarch64.rpm" + }, + "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dnf-plugins-core-4.0.9-1.fc31.noarch.rpm" + }, + "sha256:1738cf24111bcd0bff08880c4d5efa624c09a2080c901f67ab032ed201a8751e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdb-5.3.28-38.fc31.aarch64.rpm" + }, + "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm" + }, + "sha256:181173a9353f593105978b8e4038b7bf53fd22c63f4514fd271a74d48f9c59f8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/bash-5.0.7-3.fc31.aarch64.rpm" + }, + "sha256:19217c1730a3f16e15eedd95e3f97471097a1bd066f7783fd273cfb392f4042e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-tools-2.02-100.fc31.aarch64.rpm" + }, + "sha256:1b65944efe48ba0cca34011891480a1db29a7e95dad058376bfca34d68fb0791": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-ply-3.11-3.fc31.noarch.rpm" + }, + "sha256:1b85657077726361a4b157a909796649fe93131fdc4aa67fd5329adc8d2fc833": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.aarch64.rpm" + }, + "sha256:1bdeed5fd5907e0cacd5706ebc93ade09462a0c71e2316d9841e33a896b99b87": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/c-ares-1.15.0-4.fc31.aarch64.rpm" + }, + "sha256:1c2edf26d16b55bac2824452c1c584ff52acf8477920f384f6019f647c241450": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lz4-libs-1.9.1-1.fc31.aarch64.rpm" + }, + "sha256:1d530a23a8ea2b831068593fe6aa7a32923c6276504def5a85ad065aaac9ac5f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-6.1-12.20190803.fc31.aarch64.rpm" + }, + "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kbd-misc-2.0.4-14.fc31.noarch.rpm" + }, + "sha256:1e049e86c5dd5c4d6737d47dd194d553ffbd65c81a4077cf6e1029a0fde80fb5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-requests-2.22.0-3.fc31.noarch.rpm" + }, + "sha256:1f44142da3bf5e09b98488b40ed8a2d5dbd841c36bb4553749e6d65d7fe5c15c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-setools-4.2.2-1.fc31.aarch64.rpm" + }, + "sha256:20cc74172d531506391309e8f82c6512404ada35f22c68fcd0b83a01dc6e0ca8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpwquality-1.4.1-1.fc31.aarch64.rpm" + }, + "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm" + }, + "sha256:21d9ceffd6fb52d235a95e4d7708d719eac758a9dfd80ba2d6119dfdc46c80ff": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/chrony-3.5-4.fc31.aarch64.rpm" + }, + "sha256:23908e2eae2ccfd2efb1d19cdf46e3dca4680ac2d562c1c96f7fb0d22859fc82": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.aarch64.rpm" + }, + "sha256:23e335d288f55da26dc77e0d1ceb7cbe4e3890b4e28ff4a2435fc4481a6e737f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libref_array-0.1.5-43.fc31.aarch64.rpm" + }, + "sha256:23e8c23c89737665a5288a3a171548e94898be9ed4a24c056d8bc851c6800090": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtasn1-4.14-2.fc31.aarch64.rpm" + }, + "sha256:253f9f540248a0bdd537ee8ea4f670752af74d85be98ea81593a30710e1e5808": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/linux-atm-libs-2.5.1-25.fc31.aarch64.rpm" + }, + "sha256:2575f8d1fb953934730b9fe6803bf3de12669dcee78852057ea4e88f9d4d76a4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libevent-2.1.8-7.fc31.aarch64.rpm" + }, + "sha256:264828f11342a94f056fb27a2e78fc5e14226230b3dbac8bdad6a4c8598fd24f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.aarch64.rpm" + }, + "sha256:26da63b51fc7b85d1a30098bfb9c2fa276b2d2129a28cee8cc80acd2eabe96e0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kernel-5.3.7-301.fc31.aarch64.rpm" + }, + "sha256:284d46ebd3d3fd4a915b624a75e9931c948807fcb13fed01681e623d0ba7b1ce": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lmdb-libs-0.9.23-3.fc31.aarch64.rpm" + }, + "sha256:28cdab6faa95e1d7d1c32d977627ef5a86b262e2b0e20e76ddd73f598ee126e4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-all-langpacks-2.30-5.fc31.aarch64.rpm" + }, + "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dejavu-sans-fonts-2.37-2.fc31.noarch.rpm" + }, + "sha256:2aafea82072ad28a8b662e32902f66b47166a00b5c9cf19b1dd589f39776560f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXi-1.7.10-2.fc31.aarch64.rpm" + }, + "sha256:2ad8824aa48378aa741fbd863104d950ad4f669566af2d4f433be6d9afd8ead6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/shadow-utils-4.6-16.fc31.aarch64.rpm" + }, + "sha256:2b1052455234b751e869f22c496bb660dec53eafe198673bab25053e394e41cb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_idmap-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:2b24b5729cd74e3b1efe261bfd732fd1995b0e64d76587a3d90762d77cc58c77": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libunistring-0.9.10-6.fc31.aarch64.rpm" + }, + "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm" + }, + "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm" + }, + "sha256:2d9a2e736dd5231df3c5c748ce0ba5a75a409dacfe73f14676781f32d565a7df": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jsonpointer-1.10-16.fc31.noarch.rpm" + }, + "sha256:2dd8505a96714cdb79829a1377e36a53e05cc9b65a7f35a258ca3e4aaa76c700": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.aarch64.rpm" + }, + "sha256:2efe5f560e0c56dec38c9456ae8482a5a9006833d257de4a2a6246d261f647e2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/plymouth-core-libs-0.9.4-10.20191001gita8aad27.fc31.aarch64.rpm" + }, + "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm" + }, + "sha256:2fc552b80866318c0ac934f5385fd2090743701639c318b75138ae985ff5606a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libarchive-3.4.0-1.fc31.aarch64.rpm" + }, + "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/langpacks-en-2.0-7.fc31.noarch.rpm" + }, + "sha256:30e07680d23bfb5d4b2727893337619c56f13b46daec2f13f8985f642bf84250": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.aarch64.rpm" + }, + "sha256:311729a146f8833ff882370348d69313322dcf7586b68d5eed192eb633dcd58a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libndp-1.7-4.fc31.aarch64.rpm" + }, + "sha256:31dacda6745f326be70d854d50ae5d3cd0c9d4f19aeab6b4d09920e1436d8bdc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libini_config-1.3.1-43.fc31.aarch64.rpm" + }, + "sha256:32cc0c295cd013db597cd31868736be3708edb25ab1952fdd0ed879ec5e8d191": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libsemanage-2.9-3.fc31.aarch64.rpm" + }, + "sha256:32cc578c8da626a8c1a5316a59d482967a32547be6c077f73fb90e11fb0f1e6a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pyserial-3.4-3.fc31.noarch.rpm" + }, + "sha256:32d56c08f75c7626f1a0efd7aa05ca2ea3649d55445b5ac42a2f7f10fad8b46b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pyrsistent-0.15.4-1.fc31.aarch64.rpm" + }, + "sha256:3308454f1353d5aced0a9574bc969ae272923ef1faa425bd9080de6e56e1bcbb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmaxminddb-1.2.0-8.fc31.aarch64.rpm" + }, + "sha256:332ef2695e27190536747f53bab03ba5df0ca903564f6071623d99fa524d6d2f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mokutil-0.3.0-11.fc30.aarch64.rpm" + }, + "sha256:339895e6b901ff4c81966893ec7da9848da3acea26e5b202033bfb79dfcbb6cb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mpfr-3.1.6-5.fc31.aarch64.rpm" + }, + "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dejavu-fonts-common-2.37-2.fc31.noarch.rpm" + }, + "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm" + }, + "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm" + }, + "sha256:36b65cdbda1742e6fdd823675051e975489324ee33e71ef44a74874561b1d561": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xen-libs-4.12.1-1.fc31.aarch64.rpm" + }, + "sha256:36ce07aa1f90dfdf5ae9824acff24fc3aafe5633b07a022732ca06258e0255b6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsemanage-2.9-3.fc31.aarch64.rpm" + }, + "sha256:38067c93bf61173a56d476e2e08d3011bd8d8b5d6a8705ede62b549042b3b7d2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xen-licenses-4.12.1-1.fc31.aarch64.rpm" + }, + "sha256:3975c15d461cebe50d1f179fb86d288c18f643c32f179bbab13425596ab64001": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/keyutils-libs-1.6-3.fc31.aarch64.rpm" + }, + "sha256:3976706367650c755852d995bbe8c4e6bbd13b6e8e0148b7beddb4aba3679d8a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.aarch64.rpm" + }, + "sha256:3a7d7619061a4adb275ef4b41d993375ad7863863741624186add801800e524f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-1.12.16-3.fc31.aarch64.rpm" + }, + "sha256:3ad68b7569e311a1ca7da4da7b42021a7acb001ab4b2cc6e63b3ba0f87cbd55c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/harfbuzz-2.6.1-2.fc31.aarch64.rpm" + }, + "sha256:3b16753c7590bc968a693e97ce9d318d58e1483fd2999a874becd95abc9d35ff": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gcr-3.33.4-1.fc31.aarch64.rpm" + }, + "sha256:3c19bfb6ec591109d959af7fd588ce02cdd4caf001136ed5839fcac9b11e98ad": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libfdt-1.5.1-1.fc31.aarch64.rpm" + }, + "sha256:3d5e22e2c2d20d409cc9a878a88dc088d6f02c81652eb0957f95d1abb185f7b7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kernel-modules-5.3.7-301.fc31.aarch64.rpm" + }, + "sha256:3e6b2cfce9c4a62f7cde13bb6ae135d5f6f0d6cb179ab3dbd61ba1533477f257": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/ipcalc-0.2.5-3.fc31.aarch64.rpm" + }, + "sha256:3fb9cec5d598a549e97041993399d49c5943821b1f3441881cf15cb26f38e437": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libkcapi-1.1.5-1.fc31.aarch64.rpm" + }, + "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-release-31-1.noarch.rpm" + }, + "sha256:415406e44a1d6bd226ad67c1b762c3d3ab2f834ed0f9e7059660a64d23d13b66": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/q/qemu-guest-agent-4.1.0-2.fc31.aarch64.rpm" + }, + "sha256:424e1777ae71117d20055ffa5f0ed2ead59a8076528450cf7536e18c70624bd8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssh-8.0p1-8.fc31.1.aarch64.rpm" + }, + "sha256:4290088d905017724f6c909cb1b3193055a6aff62cd20e39ea196694f90753c8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gpgme-1.13.1-3.fc31.aarch64.rpm" + }, + "sha256:42945876fb8932bad3e50b50349af4bdabe713d7be1c8efc1b0f7b042e556aa5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/tss2-1331-2.fc31.aarch64.rpm" + }, + "sha256:429cf175b6c3b2bedcabf3391ad3166fe6e62259877f309e57500d2c7f1f1882": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmount-2.34-3.fc31.aarch64.rpm" + }, + "sha256:42a4e01c47e28b71cafb658a5993b7f4b7692ac6b916878d580fecab7ae9d16c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.aarch64.rpm" + }, + "sha256:42ae595f75734daaed3430e1117d3cb05bd9a18108506bb9600125693d3d1688": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-langpack-en-2.30-5.fc31.aarch64.rpm" + }, + "sha256:436c2f09d2de629da293ab82af47b7697f4a8c151127cbd993d0e8605a4f423c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.aarch64.rpm" + }, + "sha256:44a92faf198bf015f5e94cf42ae615215fe0a6c0697b1f6c32d205bd450e7ce4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pcre-8.43-2.fc31.1.aarch64.rpm" + }, + "sha256:4549e51322d0b10016f1daa8dedc807fddf7d2d4e77719baa696de15b88821bb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/jbigkit-libs-2.1-17.fc31.aarch64.rpm" + }, + "sha256:46acc45e148eea376c3aa8e83a4d3bf1cf66fa35ccc670f592017428ce75ca77": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.aarch64.rpm" + }, + "sha256:46b0c36e90fd16371444eb5376fc01232b6e64073e42ed1f141344a9aadbe568": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXcursor-1.1.15-6.fc31.aarch64.rpm" + }, + "sha256:47383173cbb135c2590998a4e82c6f9d40a516450d2fbd1e169ace92337b7fd5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-markupsafe-1.1.1-2.fc31.aarch64.rpm" + }, + "sha256:477474e74c5f30884f0a4571445ecf987b521f61139fc0ba7d516e075f47e7ce": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/v/vim-minimal-8.1.2102-1.fc31.aarch64.rpm" + }, + "sha256:48ee663f069c5019c842f316216ef3bf8dfcbbec479c98d1f2b24749c22e57f3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtalloc-2.3.0-1.fc31.aarch64.rpm" + }, + "sha256:4ad98619490252f1bc7002ce9a4183876650c22a4722089ba4498fb925647601": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpciaccess-0.15-2.fc31.aarch64.rpm" + }, + "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm" + }, + "sha256:4bb03b2162523fa694e0e44f46b04263ff0f5dab22c3e93124ec9b5650af2002": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/deltarpm-3.6.2-2.fc31.aarch64.rpm" + }, + "sha256:4c55460197fe24d0a105e3071824a933069e0b655910fd7ee7335e2396de15dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXft-2.3.3-2.fc31.aarch64.rpm" + }, + "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm" + }, + "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm" + }, + "sha256:4cca3f986ddbd38cfbfb6d1c8d336a1aaed78f7da1f38356ce1e034ba35ec492": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-attrs-19.1.0-2.fc31.noarch.rpm" + }, + "sha256:4d4853ac550a0cfc5b3bcbcb7f12c81461393a6aa0e96a23648985f8a7f2e8e2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/os-prober-1.77-3.fc31.aarch64.rpm" + }, + "sha256:4de89d25d09c57b09a51ab93fdf84ade211e835c16d3ba6e4e261dcc0c4e50a1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gzip-1.10-1.fc31.aarch64.rpm" + }, + "sha256:4e365f48d5c85b82f71e8d000d00cdf7ed3c23cd94c31fbf3543572413541c3d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcap-ng-0.7.9-8.fc31.aarch64.rpm" + }, + "sha256:4f37b1e322e3001b076e0128541cc82c180d7054b1c0b7200f46fda4d654cd71": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/librepo-1.10.5-1.fc31.aarch64.rpm" + }, + "sha256:4fe97b617adfa7c0f97ba5b2b6e1c0d2e2b15c54ba8db66fc389cacc0f1b2b60": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libuser-0.62-21.fc31.aarch64.rpm" + }, + "sha256:500d0a1b49962ec79ca00224528d6e599d3845eb60b8b13a678d03edfaa755ec": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXfixes-5.0.3-10.fc31.aarch64.rpm" + }, + "sha256:504971d079493a49afb8fb7f067f5dfcc59f3e007afcc63734c15fe1066e4b4d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-broker-21-6.fc31.aarch64.rpm" + }, + "sha256:504b334756e12eefb42d44e53da61fb4321b860e3b5f380b5c21c5c3784a8c75": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/net-tools-2.0-0.55.20160912git.fc31.aarch64.rpm" + }, + "sha256:513e24bc56f483b171664ea4dec51cc0cce1f9cc8f4939cde8a65ea976ed952d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-rpm-4.15.0-6.fc31.aarch64.rpm" + }, + "sha256:51f15beba5e5bfc6ff646741b3fbaa3a484ebb40fd8c6c59b8f1f6346dd93e93": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libssh-0.9.0-6.fc31.aarch64.rpm" + }, + "sha256:54c024db70df7966590050dfc5dcc1315174e10c3a57e118ea10178238d70889": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-1.1.1d-2.fc31.aarch64.rpm" + }, + "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm" + }, + "sha256:563f82b7c56043ed5a5ff55dcc643bcc5ac2a1e9ae940481f1c21595a83ba60a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/efi-filesystem-4-3.fc31.noarch.rpm" + }, + "sha256:566a389a620f634ab341a9a39cffdb1c607b4682224cf3d5ac530b6c57c78d0f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcap-2.26-6.fc31.aarch64.rpm" + }, + "sha256:56f3d59b74bf8ceafea695d10fb7ad4672ec93f824ef9b0508c7bcdedeffb101": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnghttp2-1.39.2-1.fc31.aarch64.rpm" + }, + "sha256:5745966147d1651d663d9e7d37a740ebbb4daee49b5cb7a2e61375ea6b37404e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/expat-2.2.8-1.fc31.aarch64.rpm" + }, + "sha256:575640462a8c2d0687ea225cc7b6bbf7aa0814e311619ddf6cd16e1bc22f9513": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libksba-1.3.5-10.fc31.aarch64.rpm" + }, + "sha256:57a9aff6b8d5ecdb66015e4dfcec0a171ae18751e1d5f9a339361cc45b9a8e2f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.aarch64.rpm" + }, + "sha256:57bd1ce5d776daca117795bc8e3852f1d29a6fc3fc1edd21729d161de2d7798d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtiff-4.0.10-6.fc31.aarch64.rpm" + }, + "sha256:58a44f9472918a511d3eee0b3f08926dab2ebf4994584403bd196e6c92a06f5a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xz-5.2.4-6.fc31.aarch64.rpm" + }, + "sha256:58c8a3d4ac7c8c318b5596b192dbd0350a1122983b69bfc1cb5eb3ecec5b7cf6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXext-1.3.4-2.fc31.aarch64.rpm" + }, + "sha256:59f289c6f3b0180ae3eddaa974e2f972bf15c48135a2abed9eb2f72dfdae1be4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXau-1.0.9-2.fc31.aarch64.rpm" + }, + "sha256:5a32c492b921e9287422006f255833605b328f3efd071609673be161bb4e7f04": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libstdc++-9.2.1-1.fc31.aarch64.rpm" + }, + "sha256:5a7e957102a23c9924398fe45f5cdec66edcd10adcad7130d6ebf02c2706ad49": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-policycoreutils-2.9-5.fc31.noarch.rpm" + }, + "sha256:5b75073853ff34026cf180d7466314783a7a81defaa43e6b7416a38d9f19230b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libepoxy-1.5.3-4.fc31.aarch64.rpm" + }, + "sha256:5ba547e1c2c515b3ca091e04c0a6b15b297e25b567a6613a07bd2bee41f39684": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pango-1.44.6-1.fc31.aarch64.rpm" + }, + "sha256:5d87d829a1d939c520b25f1c790cd1f3bd6c8b769f4f21303ec5e16a3b509445": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sed-4.5-4.fc31.aarch64.rpm" + }, + "sha256:5e2a37ee7e1147a446be67d63b1be55f2e82c0ae0a84dd1afc6a3fec64e62804": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libblkid-2.34-3.fc31.aarch64.rpm" + }, + "sha256:5ef4f8487a78a43f7502c055ac77c047ce159da5641e5b61c2669395ae1efe62": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdb-utils-5.3.28-38.fc31.aarch64.rpm" + }, + "sha256:5f2bdb8f9a18257ee80a243e1be96e3ef6fa660e37fdf7b4443d8e8f7abf86ef": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.aarch64.rpm" + }, + "sha256:608a967cbdbad6b7320060e986bf8f8e7f6b61bff5ae6571006397b46a60771c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libbasicobjects-0.1.1-43.fc31.aarch64.rpm" + }, + "sha256:611b0995f8475747341db33373ec0178afcb724183aada71b5d3a2c437d19527": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dhcp-client-4.4.1-15.fc31.aarch64.rpm" + }, + "sha256:618e9a7e3f1f8191beee70d3ad1c8754870887d251480e7e6dd1f3de2d8226d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.aarch64.rpm" + }, + "sha256:63ff108f557096a9724053c37e37d3c2af1a1ec0b33124480b3742ff3da46292": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-decorator-4.4.0-2.fc31.noarch.rpm" + }, + "sha256:64206147fbbabe1e050f17442a2a3d1458b27beea0d8f3ff9e258a2842dd7a01": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/q/qemu-img-4.1.0-2.fc31.aarch64.rpm" + }, + "sha256:64b0063f6b3a42b712c0ee622328e36ddf94a15da547e3c8da3a4191e0941c92": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libassuan-2.5.3-2.fc31.aarch64.rpm" + }, + "sha256:6728ee255cb8c80b85f6d610bfd795025939a77d2591ad61fe1c4f9d657c386e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/trousers-lib-0.3.13-13.fc31.aarch64.rpm" + }, + "sha256:67bbf2a262929b1b4c2fb9532c471da5ab2c0f642b0df770cf947c0131a9e1ad": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libselinux-2.9-5.fc31.aarch64.rpm" + }, + "sha256:682af90a049fa78429d5ebd194700609f762e59ceb6c4ca28b17e7f4fd1683aa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-prettytable-0.7.2-18.fc31.noarch.rpm" + }, + "sha256:69f2c758068234b1abc39ffaf94c8825ae4baa9810cc54e5d49a5c891fa98435": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libkcapi-hmaccalc-1.1.5-1.fc31.aarch64.rpm" + }, + "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm" + }, + "sha256:6b11c1e14d4a02edf8beee776f9f896729bd0f28c66cb4c1d2bd021cdffc6aa0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gtk3-3.24.12-3.fc31.aarch64.rpm" + }, + "sha256:6b2e3b36c2a3e988f40548688b32ef3ce2e4c7906127215c82736189684a95a6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgomp-9.2.1-1.fc31.aarch64.rpm" + }, + "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm" + }, + "sha256:6bc6909c53c0eb2bad7640b3fb79da5cacf5fd8951dee08347b8d18df1b004f8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdnf-0.35.3-6.fc31.aarch64.rpm" + }, + "sha256:6c6f1152899318bdc0500cfb0b0cdbbc19ba0e017b5888ece1358250caa2629f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pytz-2019.2-1.fc31.noarch.rpm" + }, + "sha256:6ce37675749741e4ea05e934aa5b7376d596cc117bd317199d0a15e2236aa058": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-plugin-selinux-4.15.0-6.fc31.aarch64.rpm" + }, + "sha256:6d4c3ae013d07e50d085b3419dfd41ac79ba11ada62d8c4570d21764ef6f11ec": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.aarch64.rpm" + }, + "sha256:6e76674266f1e136186e3f005ddbf13791b1fea78cd30e8501f3dd1b209fa9f2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.aarch64.rpm" + }, + "sha256:6e78ce3d460b7e1377f487fed5563999fb44d310c441798a4d23d34960e23d45": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.aarch64.rpm" + }, + "sha256:6ed7f318c5e93b59254d7b7652131f33db713eeb61f52413f21e533069ed24bf": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pycparser-2.14-20.fc31.noarch.rpm" + }, + "sha256:6f7bd7a58d5aed77bbab94aa38edcbc4cac924d72ab6c72ce718f24b6528e1a5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdhash-0.5.0-43.fc31.aarch64.rpm" + }, + "sha256:700acef9fc8051726700645696fd67b0fc3b7fec08290ef9c2964fe7a9d3e8cd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-audit-3.0-0.12.20190507gitf58ec40.fc31.aarch64.rpm" + }, + "sha256:7027d2c6a004469720e3c64eb7fcb2ace1fffd61ec4380afbf875d59a3876f3a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libuuid-2.34-3.fc31.aarch64.rpm" + }, + "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm" + }, + "sha256:7102de1c840d5b915a40fde5c408f182d677ecdd5126dedf033ebb63b5419607": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grep-3.3-3.fc31.aarch64.rpm" + }, + "sha256:71ec6fd79756af905e474553f4ca7ae6985e32615df0ee2f2f487c8496e7160f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/avahi-libs-0.7-20.fc31.aarch64.rpm" + }, + "sha256:7292bf1d13ef336ef411ef695f87c7c7ecd21a13e05c86cc475930ca61117503": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-libs-4.15.0-6.fc31.aarch64.rpm" + }, + "sha256:72bc6a2b459ee27dcd7c213d3aab5a993fc90fcffba2ef02fab7ae3857d379f7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/freetype-2.10.0-3.fc31.aarch64.rpm" + }, + "sha256:73a7249de97f0ad66bc1a867ac5b5d08b741ab152d4dd7ce45cc231d64126b58": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-asn1crypto-0.24.0-7.fc31.noarch.rpm" + }, + "sha256:7487afe052c79100e906a4d2cb2ee1043410ca10a8e60a65d95776f63a513595": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.aarch64.rpm" + }, + "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dhcp-common-4.4.1-15.fc31.noarch.rpm" + }, + "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/y/yum-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:7623bcecb8340ed57e1aa2951b13a1c5b1dfefa80eb226f269294df29cb40c08": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libseccomp-2.4.1-1.fc31.aarch64.rpm" + }, + "sha256:7637132d543741e8c5b581523ca5db24adc6eb6d78530944881c360da694cf15": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-efi-aa64-2.02-100.fc31.aarch64.rpm" + }, + "sha256:763bbd8d0e3e80b56041273dd412f0c3708c90cd0affd929d474ae61f7c3798c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iptables-1.8.3-5.fc31.aarch64.rpm" + }, + "sha256:768cc2c561bd6476df45fbd9280bbaeb87d2addcd0c51601d2226a590d7dc872": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsmartcols-2.34-3.fc31.aarch64.rpm" + }, + "sha256:77ff28552aba96ce4b80d51a9c390ef4958afad18ede879bf31022f2509e2d90": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpng-1.6.37-2.fc31.aarch64.rpm" + }, + "sha256:78b600621e00f4a0acc8f58de056ae9393ce4e1cded56837b4e557c1bc84b06b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-urllib3-1.25.3-4.fc31.noarch.rpm" + }, + "sha256:798376bc628acd54407d945702dce73ab90633919f88fe9b7ecde3f38ebc2fe9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cpio-2.12-12.fc31.aarch64.rpm" + }, + "sha256:79db5a94baa6acad360b52fdf6d49cf91d7b6290e0d55f457b2820937d2739f4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/efivar-libs-37-1.fc30.aarch64.rpm" + }, + "sha256:7a5aadb5da769b563cf1e548d8cabd26c00720a67df7e4a445a5a9ae5b0891b8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.aarch64.rpm" + }, + "sha256:7ae36bfe222068561cf0259400b54e210ad628aaa66dd4b87e20a2291996c71d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dracut-049-27.git20181204.fc31.1.aarch64.rpm" + }, + "sha256:7b01a3bf09861003bd9524e9d460ed68b8d2de4233a09f7af731cb07f75ef913": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iputils-20190515-3.fc31.aarch64.rpm" + }, + "sha256:7bd78cde4202401947dea928274579074bc78fdae096057e788c1b6a86a10ecc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/trousers-0.3.13-13.fc31.aarch64.rpm" + }, + "sha256:7c66a9a33e131200e13a638613ec054a94be901399424df27a0b4f94532ee36d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxml2-2.9.9-3.fc31.aarch64.rpm" + }, + "sha256:7d0ec23fb8dab882db8b7ec9a9cbb2728d6df2af5c02ee06cc6fa357f210ff09": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/krb5-libs-1.17-45.fc31.aarch64.rpm" + }, + "sha256:7f23849dcd356019c4e83058e9e49d544300ad7b9a6f6a7528831e393ca1197c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fuse-libs-2.9.9-8.fc31.aarch64.rpm" + }, + "sha256:80434d5f64abdd521330153fc0c983c5923a833ab59f57ec3bc3a8cf1d748c8c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libyaml-0.2.2-2.fc31.aarch64.rpm" + }, + "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/langpacks-core-en-2.0-7.fc31.noarch.rpm" + }, + "sha256:81100039c817e2f3703fb365c63d6d891f3f977dd9e670c3c9b12662de3c255b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.aarch64.rpm" + }, + "sha256:81169dd168c02aed3b1e57e5af16ec3dbdfb74c15373ee40e9eec5aac60a3d25": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.aarch64.rpm" + }, + "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-common-2.02-100.fc31.noarch.rpm" + }, + "sha256:816fe17af41a66dd718eb247273be824b75f53fb539455b58b892528ca12cde5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpsl-0.21.0-2.fc31.aarch64.rpm" + }, + "sha256:81f5b3786ab1b634016c0c066379dda739386b4b1d639111b4575748e27caa56": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.aarch64.rpm" + }, + "sha256:8221111dc9a9aa5c68805f153c3fbe5314c8a0f335af29685733b958253dd278": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-idna-2.8-2.fc31.noarch.rpm" + }, + "sha256:82bc08ef5d8049d3d07a5eb00f61d3f94d7577ef814f6791352f75835bff477a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.aarch64.rpm" + }, + "sha256:82cc8c43bfe0e731ec78e31c8af6250ec1f13989978105a1b38d518470cf5bde": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsolv-0.7.5-3.fc31.aarch64.rpm" + }, + "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm" + }, + "sha256:84365601f93db7fda27e4d89826d4893830572e98df35275abdf15659cfe3fc5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-3.7.4-5.fc31.aarch64.rpm" + }, + "sha256:84fa6157b3e986b9ce67cc03bfed4e2b96fa7d075df70e038fbcd2b486737d35": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/man-db-2.8.4-5.fc31.aarch64.rpm" + }, + "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm" + }, + "sha256:855131926b9a3764835de3e7171b9ce579847ce161f3ba8406a5b6fdfa781f55": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/parted-3.2.153-1.fc31.aarch64.rpm" + }, + "sha256:859b03ef657a7c682ff7f341145a7c2ba9025fd5430f36ecb020eeafc55bba2d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnftnl-1.1.3-2.fc31.aarch64.rpm" + }, + "sha256:88831a57114969801a557d700451a70337f944b868a3d792d47e6e9e91961f3c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/audit-3.0-0.12.20190507gitf58ec40.fc31.aarch64.rpm" + }, + "sha256:8891f85ba3caf6de4b6b234c6aa7a98d347228937a378d04da7af56556799bd1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/ipset-7.3-1.fc31.aarch64.rpm" + }, + "sha256:898a918a7adfefc3ce13d10b30b2ec7ccada96155afa15ee3f4e589b3f1baa38": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcurl-7.66.0-1.fc31.aarch64.rpm" + }, + "sha256:89a35174435a790c0fbf3bc4306d51c867ecce66fb65bae0e7706a9f8f9a19b3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/groff-base-1.22.3-20.fc31.aarch64.rpm" + }, + "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:8c4b392a5e1ed79b7a5b302d8fb14d0470b3a6306a7b36aee275acf0daa61537": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fribidi-1.0.5-4.fc31.aarch64.rpm" + }, + "sha256:8d00fa6cdfcc955dc4e14d0f8b6ba6217d2dd0334ea0e1aa44694c9e0ad0b06d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rest-0.8.1-6.fc31.aarch64.rpm" + }, + "sha256:8d17464a13f79b54c8dfe76d716a42d6c875bce408e29344c1ecf916957a649e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcroco-0.6.13-2.fc31.aarch64.rpm" + }, + "sha256:8d21bbf2063bb50cf3d12281731fbd8b26dece5f154d7a50f0952695fea6751f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.aarch64.rpm" + }, + "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm" + }, + "sha256:8dbce1e34a19be338f49b792874abc861fd64acc5653f7f5cd523d5e5865897e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/brotli-1.0.7-6.fc31.aarch64.rpm" + }, + "sha256:8e10cf2b0645e342b001338a4463c5a02a8a302c25affba37da700a987e2c064": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnutls-3.6.10-1.fc31.aarch64.rpm" + }, + "sha256:8fd19268d460d7f49f3dd96644a2b8a3076a7a7ccbe3e35e27eeafc6ab8d9c95": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-libs-1.12.16-3.fc31.aarch64.rpm" + }, + "sha256:91d628d3e4a82976361ecb306d4f0049aa65c811fdd5051b3f8423b75e4a10e9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtdb-1.4.2-1.fc31.aarch64.rpm" + }, + "sha256:920d2d8df80fb92e358f4925bbd2891977c98e0b9d2f69b44f1e74bec26d6a1e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cups-libs-2.2.12-2.fc31.aarch64.rpm" + }, + "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/linux-firmware-whence-20190923-102.fc31.noarch.rpm" + }, + "sha256:9404d90bbb474b30b80c90719df01d784b925127e9710f12c44c72d14c2708fc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gcr-base-3.33.4-1.fc31.aarch64.rpm" + }, + "sha256:974bdde5f821c071bcbe0de191677981685cb8290952be75a7ab15747988a99e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/policycoreutils-2.9-5.fc31.aarch64.rpm" + }, + "sha256:98d811216e2e0e4ad49925489824210fc3e9b57bb09eefcd4047886375d34f57": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcom_err-1.45.3-1.fc31.aarch64.rpm" + }, + "sha256:995ee9636461072248d5c6792d3852fb1ab277a622b18eb7d3c231133446dd7d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.aarch64.rpm" + }, + "sha256:99a6e2861b7eb51684d1b83901a7e54caf649b711556a660d93bfef114eab72c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libattr-2.4.48-7.fc31.aarch64.rpm" + }, + "sha256:99c0e924fa7eb70fc9301b692d4ba72ec480af840498b8251f68a419317bd108": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_sudo-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:99e8930364200470ee5bd065dccb7c4c1caa4863c6f8975740643fe9d2485c18": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.aarch64.rpm" + }, + "sha256:9ac1ef0ef80d7ff65903120f8b2a5a2a5723dce7c9c131e17cea3572cb81d0f4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXinerama-1.1.4-4.fc31.aarch64.rpm" + }, + "sha256:9bf695c87aa5acc7695251a4c75c576375c45c5b043af00a7ddf503223030309": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kernel-core-5.3.7-301.fc31.aarch64.rpm" + }, + "sha256:9c039f6f6e5385344ea56a6490a472b0f475d8d7612b422191d2152b8e1fc55a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/curl-7.66.0-1.fc31.aarch64.rpm" + }, + "sha256:9c08d246ce73d8741777f290e7110ff9dae97a15e09f3469317ed7c8e9fb64ce": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/atk-2.34.1-1.fc31.aarch64.rpm" + }, + "sha256:9c8771c8c5eb38351dd30f994133bc9149ec93813d1a7c2cd2dd8f7dc7431d49": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/nettle-3.5.1-3.fc31.aarch64.rpm" + }, + "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-repos-31-1.noarch.rpm" + }, + "sha256:9cc3e6534ae34343e7e4d056d46b9551da7d0a82c7bad378c3626d4b70d1bf62": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cloud-init-17.1-11.fc31.noarch.rpm" + }, + "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dateutil-2.8.0-3.fc31.noarch.rpm" + }, + "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm" + }, + "sha256:9ed0b44834b6a637c70aa00ab243aecb534f9aea461e1388652ab039898239c8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xz-libs-5.2.4-6.fc31.aarch64.rpm" + }, + "sha256:9ff53c6f07da3adeaa20da76c1c78b886710b460db7a316415f8bc9182096fb0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/procps-ng-3.3.15-6.fc31.aarch64.rpm" + }, + "sha256:9ffb9a376d1df3d3d394ec2f8533f939547d8ccd634f1f77db52970630215d71": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cairo-1.16.0-6.fc31.aarch64.rpm" + }, + "sha256:a00e85fb7902d8869492e32816c7834830682745eeab1efba264bdd3185f479d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/diffutils-3.7-3.fc31.aarch64.rpm" + }, + "sha256:a084b365795c7262fa09b2fc590dfbabbbf30cb9c1c7f9b5274eae4c5d761482": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lua-libs-5.3.5-6.fc31.aarch64.rpm" + }, + "sha256:a108fbc1ba9886604483ec05ef2150c961adb0906db5f9ea46c239bfcdf06b55": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/filesystem-3.12-2.fc31.aarch64.rpm" + }, + "sha256:a2f6ae2742a2aac3f5bb5f1ad5cfa4d9b8fdf7cfd01033246027db7064abaa1f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxcb-1.13.1-3.fc31.aarch64.rpm" + }, + "sha256:a314b2a8ed8a9e7e80aedfb1f76c75910d0da9549d072c424c2dddbe63a09874": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dbus-1.2.8-6.fc31.aarch64.rpm" + }, + "sha256:a349c40034b5a181cab1bd409384ddb901c274e110b16721d434f5bf42e92c0f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-firewall-0.7.2-1.fc31.noarch.rpm" + }, + "sha256:a39fb89e06572d188309dc4daf1d23e21be190e59f9ef8ff3c3ccceaefe505da": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libzstd-1.4.2-1.fc31.aarch64.rpm" + }, + "sha256:a3be2e9e42d68f5e5e58f1dd86d5b6e4fc1ff91e98f44d26221d6bda38c9f372": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/hostname-3.20-9.fc31.aarch64.rpm" + }, + "sha256:a40b4873535c2b0b826063e5248981d1ce0d04ef5ec6d9c21facc07ce2446b40": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpipeline-1.5.1-3.fc31.aarch64.rpm" + }, + "sha256:a436dca481707ca10a0c5bb189d9a25ff76c4f66f1d32b0847dc6d13ba46c17a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-udev-243-4.gitef67743.fc31.aarch64.rpm" + }, + "sha256:a4f7846fb262ad61885f64b8a354f9303fe5ce129378e4781eefa0bffdef828e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xfsprogs-5.1.0-2.fc31.aarch64.rpm" + }, + "sha256:a516dfa62a327d440fe38b93af81dbecb112fe45fff0f227583c451631479122": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/acl-2.2.53-4.fc31.aarch64.rpm" + }, + "sha256:a5fa076ed2c83974cacf4ce386bfdc576ce532fba4f8645dda5c2b67efc5d501": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmodman-2.0.1-20.fc31.aarch64.rpm" + }, + "sha256:a61e3fed8d1c860bf09b5ec5586e30b88b1b1dea157cd371def9fcf72e313a3d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcollection-0.7.0-43.fc31.aarch64.rpm" + }, + "sha256:a63ae4aa727a4b75b602a67f1e42946e39dc124e9f1aeb3e795af40ad4e15cbf": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcomps-0.1.11-3.fc31.aarch64.rpm" + }, + "sha256:a6caaef9bed1bd17292e1fdde4efee9730f8cff5826a9cb6c952e6f3cd052243": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.aarch64.rpm" + }, + "sha256:a7f5877c9ebfb44347765c7deb266e53fdd62403ccc0a7ff17fdb101bc28caff": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.aarch64.rpm" + }, + "sha256:a96e76f00865249f70a3f2ef293946e9786150faa83e37185e61592290817cb4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libacl-2.2.53-4.fc31.aarch64.rpm" + }, + "sha256:a9f81157c1f977adf96403fe534e2fecc9f3a82a58c5b53fd58aad9954873790": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/nftables-0.9.1-3.fc31.aarch64.rpm" + }, + "sha256:aa3658efc21bcc6d79344eeeaf20285407f6f3b90d905a66a37a8cfc835b2a61": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.aarch64.rpm" + }, + "sha256:ab35a2d7f21aac1f33f9521607789e1c303fb63e4ea0681e9f724f86a1cc15c5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/firewalld-0.7.2-1.fc31.noarch.rpm" + }, + "sha256:abf022d05aa55e7aa8d0736b899d86613d30a7e1751b04666920f367d4311a1a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-2.30-5.fc31.aarch64.rpm" + }, + "sha256:ac3230db1dfd77c5a90b1eda2c002e75f6abe1aa2d4416aea12515c956211e4f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gobject-introspection-1.62.0-1.fc31.aarch64.rpm" + }, + "sha256:ac7985d2591bc2bd1d90efdb68751a3d7435cf902b3895cb308e830ce48f1f44": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/shim-aa64-15-8.aarch64.rpm" + }, + "sha256:acd149c4bf17a15db75fca1f19e34784a9ed275e19c0721aa78f5eb94797a685": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/u/unbound-libs-1.9.3-1.fc31.aarch64.rpm" + }, + "sha256:ae9a3e144f31b6172d266b984c8385fba94bdcf3002d3182a4118f8d29f5f718": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-4.15.0-6.fc31.aarch64.rpm" + }, + "sha256:aeac986c84b8038eccd191310bb09f3d396f7c05171ac0fb8691182918459c90": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/less-551-2.fc31.aarch64.rpm" + }, + "sha256:af00a0b026235e70f7cb7606166dfcaea0d227a3de70363ff67a644036ed8bfc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-tools-extra-2.02-100.fc31.aarch64.rpm" + }, + "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm" + }, + "sha256:af589a85af85270c027bacb5ccaf88c93378d364a7c1436ee7bca1290cf762f7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libverto-0.3.0-8.fc31.aarch64.rpm" + }, + "sha256:af594688a568ec4db7dae9d60390dce1ab547527bbf2415752f211de3748b97f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-243-4.gitef67743.fc31.aarch64.rpm" + }, + "sha256:b04fecd603225051ca56c6674cb72f12f4de0cc1cbbfda0ab7d0af0e655b2c99": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libthai-0.1.28-3.fc31.aarch64.rpm" + }, + "sha256:b0d153ea83902561a9e60c9c244a497c3b19a9c4e40cf9e8437d0221af0f2ca3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pcre2-10.33-14.fc31.aarch64.rpm" + }, + "sha256:b1094a9a9725546315d6eac7f792d5875a5f0c950cd84e43fc2fbb3e639ee43e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-slip-0.6.4-16.fc31.noarch.rpm" + }, + "sha256:b25f063f82484e4fa42d1ad31a2cf23e882a99dc1ccb191b24e14a6a789d87a0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.aarch64.rpm" + }, + "sha256:b37d963f89a7e0d466e1317da6cd2c20b3ce3ec9789e1027c16176734f88c4fc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/NetworkManager-1.20.4-1.fc31.aarch64.rpm" + }, + "sha256:b3d8740cee57c5025ef88e9d71df141a6600fdf26215969acae393a2b052892d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.aarch64.rpm" + }, + "sha256:b6498a7a8056483e1d42362b1fb27bd6c54ed7cc7bd180cae20d64a13ae4c88c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-unbound-1.9.3-1.fc31.aarch64.rpm" + }, + "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm" + }, + "sha256:b9ad5c82b3b83871269ee705ee12896efd1e3485b0d2005c9cff2a100100cd34": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gmp-6.1.2-10.fc31.aarch64.rpm" + }, + "sha256:b9b609d17e9274c1551ac6ebab4b53f6e4a5ae9253db5465c65fdb8c919a09dd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libffi-3.1-23.fc31.aarch64.rpm" + }, + "sha256:b9e9e16e7ccade332921b8d8e7b250a1c51e1d23405f2baa8a7c04f701af6e02": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/spice-vdagent-0.19.0-4.fc31.aarch64.rpm" + }, + "sha256:bb305f3ddc74c4c30ae838a2bbff3cd325eea8427622c7f82e4d06a564bace6f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/coreutils-common-8.31-4.fc31.aarch64.rpm" + }, + "sha256:bd2e7c9e3df976723ade08f16667b31044b678e62ee29e024ad193af6d9a28e1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-slip-dbus-0.6.4-16.fc31.noarch.rpm" + }, + "sha256:be8bf30729c71aabe30f2c4cf8e5c43ce3cdf892c218fadf53c0af29a76fd6b3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgcc-9.2.1-1.fc31.aarch64.rpm" + }, + "sha256:bf92fc95c282da9c76018679d9180fb6c98aaf864f66bbef630941040579f92b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.aarch64.rpm" + }, + "sha256:c0287bc7c1f54bcd19c43904f9a5c7c0cc4c82eae2c455071f6d7ea50714668f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbxtool-8-10.fc31.aarch64.rpm" + }, + "sha256:c05d42fba4fc1ebc2df9ee49f971c744937d8b307626c90b3cf79bf91619863a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/shared-mime-info-1.14-1.fc31.aarch64.rpm" + }, + "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-distro-1.4.0-2.fc31.noarch.rpm" + }, + "sha256:c1590c5cdfc7aad868c75c54c11a2c7d692001f758ead33aa10f9838955148c4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsoup-2.68.2-1.fc31.aarch64.rpm" + }, + "sha256:c1893a7c51ebb0371b87e2179d6e0e5d0fbb71acb4234cf4adc293af11c75578": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.aarch64.rpm" + }, + "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/selinux-policy-targeted-3.14.4-37.fc31.noarch.rpm" + }, + "sha256:c36dd24858c4e8d207eb0f87af16e4c599a16bb981416d47db467b70a841fe08": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dosfstools-4.1-9.fc31.aarch64.rpm" + }, + "sha256:c45162d6aeab69ce8f58353c88e7e068c59f36921989aa49ac23738f7c9cea82": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-gobject-base-3.34.0-3.fc31.aarch64.rpm" + }, + "sha256:c599ffa97fde329ff872bd6db99e8c218601df6549302f89ff747d34ca24042c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libproxy-0.4.15-14.fc31.aarch64.rpm" + }, + "sha256:c68bed5b576d7baa67a59c726d2340f7c0df7e9b93f90b3a22d3f62e9f99456a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kmod-libs-26-4.fc31.aarch64.rpm" + }, + "sha256:c6de19d0d4b8f67957ca6122462090895034495852814f36396bc134905f5f5e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libss-1.45.3-1.fc31.aarch64.rpm" + }, + "sha256:c6ffcbd829ea30ef40fa61095cef03f2b6eafa3228187a478d6d027911f12e2f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libidn2-2.2.0-2.fc31.aarch64.rpm" + }, + "sha256:c80fbc5228457b9b1978b098f47d2a66ca5636526965847078edb6f1c302e392": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libusbx-1.0.22-4.fc31.aarch64.rpm" + }, + "sha256:c84f89f65e2a691d7fcbc7021c3c5d796e0f39483e3fe95e83579c630575b78a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glib-networking-2.62.1-1.fc31.aarch64.rpm" + }, + "sha256:c8fc5b492af902894b927e79314b52bbdd8e45b2d2018abd8113d8e1807adeca": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gettext-libs-0.20.1-2.fc31.aarch64.rpm" + }, + "sha256:c935f74584d7289ca58d1b23cbdacd38450d351dbc3dcd0bc713723c4d50a545": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.aarch64.rpm" + }, + "sha256:c958419128c1330b50c741113394b147da1ccda055ab1ee19fabc199f68971ea": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.aarch64.rpm" + }, + "sha256:cb478c89af0caac9a40c32a2b4a48242b16ff9e2e6daa375b2de88e396f524dd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sudo-1.8.28-1.fc31.aarch64.rpm" + }, + "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm" + }, + "sha256:cdc526097cd2fecb75e44ad11a69b10eb7804f310298c064c3b931515d4f3d5c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-configobj-5.0.6-16.fc31.noarch.rpm" + }, + "sha256:cddb050897cd8666090b172711fb7947b3bf844f5a190f8c689fd79a222e1761": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lcms2-2.9-6.fc31.aarch64.rpm" + }, + "sha256:ce421671bfd14a427771eb3c78b060352a61cca889b1bf1b342c328dd521623d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_autofs-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:cf480f0df368b3cc9f36e42d5d573afa93fcb3889614dee172c0ad367785f520": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/polkit-libs-0.116-4.fc31.aarch64.rpm" + }, + "sha256:d01f7e794c3dd3f38de1b69fd360db4b858826eba4e6fd4edc79c8a74774ab00": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.aarch64.rpm" + }, + "sha256:d02489175567be57a48a3edf5deb66d100e99df73a37b26062fea4d6af014cbc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/readline-8.0-3.fc31.aarch64.rpm" + }, + "sha256:d1520137d9cb96cd10a63893b45b4794b120502bdbab0862e001ac2486195aa6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsecret-0.19.1-1.fc31.aarch64.rpm" + }, + "sha256:d1ce6a69f0c2d96a97a04036a5c59deda82b5e1b0843c114f0fb896279ec7bbc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnfsidmap-2.4.1-1.rc1.fc31.aarch64.rpm" + }, + "sha256:d22fbf5e32d176db1414b0854c78f0ea1b5f489a83490ee4e3f67bc5e98905af": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libaio-0.3.111-6.fc31.aarch64.rpm" + }, + "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/geolite2-city-20190806-1.fc31.noarch.rpm" + }, + "sha256:d287bfdcebb9fbb31d5f58cc71311f48a85970d0fd92f5beb0193270c155faac": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmetalink-0.1.3-9.fc31.aarch64.rpm" + }, + "sha256:d2be7b0f17350a8a0f301617cb1d7b024076bc16986abaab94453ec1cee1f1f2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/popt-1.16-18.fc31.aarch64.rpm" + }, + "sha256:d2d3b613de0ecf3ae022e5d5d1576858c91b203af6a52a7a9aa36245f0cdbd05": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libldb-2.0.7-1.fc31.aarch64.rpm" + }, + "sha256:d2f7d49bd565c2fec4ca945ae97ac3b8a607f114d3a7558b90b2caaa5871459b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgcrypt-1.8.5-1.fc31.aarch64.rpm" + }, + "sha256:d35fe17711337362bdf09540523bddbdc16406d0ff7650043a3cdd1cfc222ae8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-cryptography-2.6.1-2.fc31.aarch64.rpm" + }, + "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm" + }, + "sha256:d429648fe5b233a46fdbfc31a283ca4b6be5177ae84f3e7e63fec5f9bebd17d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-gpg-1.13.1-3.fc31.aarch64.rpm" + }, + "sha256:d45b8157ccb1d538f06120150470433ddaa714680e10ffe97bfc5853b5a0321e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/ebtables-legacy-2.0.10-37.fc31.aarch64.rpm" + }, + "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dnf-plugins-core-4.0.9-1.fc31.noarch.rpm" + }, + "sha256:d54f02fc39b3e87253808f665918d26ffe901f1228e25121c908661b47ba266b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pysocks-1.7.0-2.fc31.noarch.rpm" + }, + "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/selinux-policy-3.14.4-37.fc31.noarch.rpm" + }, + "sha256:d6b491f91a567b4245d07d28a0547cb1b8e97a1f814e3f7d76dd685bb6658b64": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iptables-libs-1.8.3-5.fc31.aarch64.rpm" + }, + "sha256:d877864e501fe38a1b0c7e11572e61c5d9eb9857436541f1c2d5ad2f8bd29b83": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libargon2-20171227-3.fc31.aarch64.rpm" + }, + "sha256:d8d28daa56fa4894a767957aa9948cad6d274e2b70d8b10aa69d9356c8a22eff": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openldap-2.4.47-3.fc31.aarch64.rpm" + }, + "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rootfiles-8.1-25.fc31.noarch.rpm" + }, + "sha256:d9641a59b33831e32fa61f3479152d5eac33e0526b32e67ae33f1c1102c69d4b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sssd-common-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:d96bdfbaba63ac6755a20d8a4d954bc5010695d671ba305a54362c1d3c69fc37": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/efibootmgr-16-6.fc31.aarch64.rpm" + }, + "sha256:dae094845eb669c1e4c6b9719a730ab71561c8bc8e870d30c9ac9f6437fd2d50": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/hwdata-0.328-1.fc31.noarch.rpm" + }, + "sha256:dc6b772101df9f3029c2cd80a10663663ad877e129c8d724902f5cc9f1785e60": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.aarch64.rpm" + }, + "sha256:dc8a707761f45962518e251f87a5e1d83199fbd1fe1e249f89ed457528c1fba1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/plymouth-0.9.4-10.20191001gita8aad27.fc31.aarch64.rpm" + }, + "sha256:dcc584a55c425c26a62fe579beead8488589c3892c34e8fab95c7fd7ec1cf6c6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/findutils-4.6.0-24.fc31.aarch64.rpm" + }, + "sha256:ddd0635b899826bed59036ba17f8112c35660b32f3d1639266f5e394166a9dbf": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-tools-minimal-2.02-100.fc31.aarch64.rpm" + }, + "sha256:ddd9b320e97d333bb4b7ccbdf70e401693065177a7d9317c6d7d1b69318209f7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnetfilter_conntrack-1.0.7-3.fc31.aarch64.rpm" + }, + "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm" + }, + "sha256:e0408a5020069e7a4585e3bb4d1bba1b8bf0afe481ff63b70e2221e9c5464cad": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kpartx-0.8.0-3.fc31.aarch64.rpm" + }, + "sha256:e0af6b40e51fe0b9f68367355219aa56717888d2a07c10a001cc8667de1a5a2f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/tar-1.32-2.fc31.aarch64.rpm" + }, + "sha256:e17ef6f7d4f1869ff5813d6f8f2983cd6f5cd23d4a666b7ae19154636e911644": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-babel-2.7.0-2.fc31.noarch.rpm" + }, + "sha256:e1deab5e887a199233f9a439d2d20d864d434e9a4ac7fe460f230d368fb3779f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsepol-2.9-2.fc31.aarch64.rpm" + }, + "sha256:e1e5250ea932beac32caf373ae55b4655c50ae8a1bd9d42e3ceac590a13031ef": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgusb-0.3.0-5.fc31.aarch64.rpm" + }, + "sha256:e29356f3ea2554e8be23401a08a941f406d337cf6b38e7ee99926fb9b3f1f541": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.aarch64.rpm" + }, + "sha256:e3046e1e508453e332277ab86ebf67df0106edca2c6e8e54ba2bffb76f9ed4d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-common-2.30-5.fc31.aarch64.rpm" + }, + "sha256:e30906c30d3dea50c62e74bc7aa870eb928af4c6fb474c894f55ef6ba41f5841": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fontconfig-2.13.92-3.fc31.aarch64.rpm" + }, + "sha256:e35e30f6477652a93d3c02ec86faa233884aefb2ff9fcf4058909d9736fb2d15": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxcrypt-4.4.10-1.fc31.aarch64.rpm" + }, + "sha256:e4e6a5e014442aa8d7768555da9d44e6381569e0c44e61d2d2a06d6692748945": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtextstyle-0.20.1-2.fc31.aarch64.rpm" + }, + "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-release-common-31-1.noarch.rpm" + }, + "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kbd-legacy-2.0.4-14.fc31.noarch.rpm" + }, + "sha256:e6a986f10b17ba67e86c417251d855e1eeac0ca1c85c2ee7ae3bfc7d6c966087": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gawk-5.0.1-5.fc31.aarch64.rpm" + }, + "sha256:e76b3b9d14a0016542f61d0ab2981fbf2d779e522d0c36d9095a1cffecbf9272": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/firewalld-filesystem-0.7.2-1.fc31.noarch.rpm" + }, + "sha256:e78343046ae389b1c11d36f8de0b8bfbb9ded7bdc39fb52b3f719a39047bf42a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libselinux-utils-2.9-5.fc31.aarch64.rpm" + }, + "sha256:e7e629e7e89f970660407fb22c8b706c4c9a65a5f43286ddeef1e165b446fcaa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/device-mapper-1.02.163-2.fc31.aarch64.rpm" + }, + "sha256:e88e27b7ac16c753e20f65cd13ed163019ac702c4195eb75d766acd44cb55263": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kmod-26-4.fc31.aarch64.rpm" + }, + "sha256:e8a13bb46e5149142a1e0a359460c1c65b2cbcbff20f2d0c50f9adbad57538a1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libfdisk-2.34-3.fc31.aarch64.rpm" + }, + "sha256:e98119ac7a707287668e7a9a74ef2809ee5f555af04f52775367e428e08dbb33": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jsonpatch-1.21-8.fc31.noarch.rpm" + }, + "sha256:e9c1fa22b0b6d6b7ac782ba60d4c6a2c747bd683f075720a4d82aec45adbd905": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iproute-5.3.0-1.fc31.aarch64.rpm" + }, + "sha256:e9c7f59547a9eec5304db7a312b435592f07f7aee4f3db617e5ddfac0f4d048c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.aarch64.rpm" + }, + "sha256:ea35fa3f5c16e074a59d66ff9037e48ca7c0126444e09daf640b7a37dacd76ad": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/jasper-libs-2.0.14-9.fc31.aarch64.rpm" + }, + "sha256:ea68ed6fc06f142c95e907b619a9696146dff1bba308773df12e412d8277eec0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libutempter-1.1.6-17.fc31.aarch64.rpm" + }, + "sha256:ead6cd0d8e509f07e36456aff75eca8433821813d675382d28fe4e7dbecc48dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmnl-1.0.4-10.fc31.aarch64.rpm" + }, + "sha256:eb1992de281538771ba578a65eabe620dc35aef6c621d8c5351a2ba38ac440f4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pam-1.3.1-18.fc31.aarch64.rpm" + }, + "sha256:eb35167d6095465a58611b80853213af5838f271b75fa1a5e3c051a04a9078a7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.aarch64.rpm" + }, + "sha256:ec305ea347ab987f5a00574bc3eaebaf2412483ed1b79615fdd86ca18ab146bc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.aarch64.rpm" + }, + "sha256:ec48b0cd759656b4c5d8d13dcc81c6fa23914f8e214b4cda1ed08e1896177fe9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXrender-0.9.10-10.fc31.aarch64.rpm" + }, + "sha256:edee134762456246cd8de577597e350b60a04bc43ac4a47622b9a263ddd74cf2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.aarch64.rpm" + }, + "sha256:ee2f71a3a318270e9cc55aa9dde8889f2e664fec681f9fd5719361f8e4a1afac": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iproute-tc-5.3.0-1.fc31.aarch64.rpm" + }, + "sha256:ee3977f4ee783225903f964c60932795d8c11307043e73527b394dec02487047": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pinentry-1.1.0-6.fc31.aarch64.rpm" + }, + "sha256:ee5ed9701778c4cb91af4c2e2ef996b9c178d32b652edf4506394cac72fefb96": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnl3-3.5.0-1.fc31.aarch64.rpm" + }, + "sha256:ee6dbb4914a35ee8a816ecde34d29221e3f4622324f6287c328e8ac22ae572ad": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-chardet-3.0.4-10.fc31.noarch.rpm" + }, + "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm" + }, + "sha256:f0b9a02ed639d2cff7a85262d440c65f2fa2ba318166b45d969a2802f102535b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-cffi-1.12.3-1.fc31.aarch64.rpm" + }, + "sha256:f11d53128f33f9e73dc21c01159a283cc3fcd2e39f2712dbfa930018ae67fb69": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpath_utils-0.2.1-43.fc31.aarch64.rpm" + }, + "sha256:f1419585dbb27e3bf76aab5a5f8fb9580816a7a0e7fc93377b97646a0259a794": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/npth-1.6-3.fc31.aarch64.rpm" + }, + "sha256:f195c83de6568cf550a3b2d70725697196c1a9269cddb9b825f5a887de9d6eed": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/NetworkManager-libnm-1.20.4-1.fc31.aarch64.rpm" + }, + "sha256:f23f467c4099be4cb4dfdc1be13b7a7bb6e8c6da7c21182658a034827b64df39": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/z/zlib-1.2.11-19.fc31.aarch64.rpm" + }, + "sha256:f2471f1b946309f419a2bf1b4b3ad473d53f7ac0ee15b9c2426eb2e6cb4e87c0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnfnetlink-1.0.1-16.fc31.aarch64.rpm" + }, + "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm" + }, + "sha256:f2cd84bfa2797552688025e7170d2b0775dfb32ebea95ed806765dee57b833eb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/y/yajl-2.1.0-13.fc31.aarch64.rpm" + }, + "sha256:f2d11878777b28a284e9a571a6a9cf893a97f0935291b10686eb93a2a3dfdfb8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_nss_idmap-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:f34cde4c2bd6ab93a697d8c350e98f4d70f897f74fee35a06c25eb4b98f46c9a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.aarch64.rpm" + }, + "sha256:f369cbc73e31dbae49565c6acfcc8ce4ea0158d1480121b5c6dcc1d224998a62": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/ipset-libs-7.3-1.fc31.aarch64.rpm" + }, + "sha256:f3d5fd211e3faf1b61be64fd3f1659dd640a873c66747a5cc341f888e4179dea": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glib2-2.62.1-1.fc31.aarch64.rpm" + }, + "sha256:f43fa8496a54ad89eef4f48c3813190b5509a21c873bc1d5fcd0dda80ae2b425": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/file-5.37-3.fc31.aarch64.rpm" + }, + "sha256:f63c88d8b294addf2791a5b291e3ab13750a24fe92fec65c96d365edad767f57": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/file-libs-5.37-3.fc31.aarch64.rpm" + }, + "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm" + }, + "sha256:f6d37f25fa7215b7ae185b12f687d60c4363cfb8e35d591595a9b0f379488fc6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtevent-0.10.1-1.fc31.aarch64.rpm" + }, + "sha256:f74b53f33812f65d12377946d363a773e48cf6bc6c4bb2acec5bb4a048861b88": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.aarch64.rpm" + }, + "sha256:f7954ba55d833c6341ec87b0cf57817084c705673b8b50aff3e3606fcbdcfbb5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXdamage-1.1.4-17.fc31.aarch64.rpm" + }, + "sha256:f85438d6cb268c431f3aed5c678f1632b56d57393a3eb52e31d75bc6462bc88d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dracut-config-generic-049-27.git20181204.fc31.1.aarch64.rpm" + }, + "sha256:f85469c0c19ce86e8fdd0dd5a3e6e5c9b78e3436ae9ce70ba86b2b4a3794f693": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-oauthlib-3.0.2-2.fc31.noarch.rpm" + }, + "sha256:f8e118c35bb5f8ae3dca517ef38c7a38bbdd491011af9e1c4c5c7523f13e6f9c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mkpasswd-5.5.2-1.fc31.aarch64.rpm" + }, + "sha256:f958a85509e118c832458a5f502e5d59695eb3df96ae0bd603203a82d188b2ae": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pyyaml-5.1.2-1.fc31.aarch64.rpm" + }, + "sha256:fabb9a86711308b3dbf146e8f155ab8e857172455e805aab912500bf157368ac": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/plymouth-scripts-0.9.4-10.20191001gita8aad27.fc31.aarch64.rpm" + }, + "sha256:fb2b070b96ed58a31da7889452ce3cdbfb60f6161a3e2f0ce2738b4d3facfd2d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/json-glib-1.4.4-3.fc31.aarch64.rpm" + }, + "sha256:fb6b61cabfce21597c33c62743c13dd96bcea39aa806a144bc2b2665b48273a8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpcap-1.9.0-4.fc31.aarch64.rpm" + }, + "sha256:fd9ac175e5af929bb942528904d6e6e48caed800e22a7a45825d535bdc1537ba": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/json-c-0.13.1-6.fc31.aarch64.rpm" + }, + "sha256:fe6afcdab2793cd75a838a758a282d4581f1272f3f32df6a58777c0721e54b2e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-libs-0.177-1.fc31.aarch64.rpm" + }, + "sha256:fe6f4202a8e7e52add27c6d2e2af65884a974bcde4b5e89979badb782719ca1a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libs-3.7.4-5.fc31.aarch64.rpm" + }, + "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/geolite2-country-20190806-1.fc31.noarch.rpm" + }, + "sha256:ffa75117ea710fef320f1ae878e8c81e7a056386dea78aa5787dc091c5a100a5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/colord-libs-1.4.4-2.fc31.aarch64.rpm" + }, + "sha256:ffdc5423e5f27eabdc75c59f050f75e43bc2aec4f189022f4195e2a3173adbc6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/alsa-lib-1.1.9-2.fc31.aarch64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "checksum": "sha256:a516dfa62a327d440fe38b93af81dbecb112fe45fff0f227583c451631479122", + "check_gpg": true + }, + { + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "checksum": "sha256:0b1ddcc8c3096814bc5027133fb077ef587b49a1a4e4d6426327c75cf2066b11", + "check_gpg": true + }, + { + "checksum": "sha256:a6caaef9bed1bd17292e1fdde4efee9730f8cff5826a9cb6c952e6f3cd052243", + "check_gpg": true + }, + { + "checksum": "sha256:42a4e01c47e28b71cafb658a5993b7f4b7692ac6b916878d580fecab7ae9d16c", + "check_gpg": true + }, + { + "checksum": "sha256:9c08d246ce73d8741777f290e7110ff9dae97a15e09f3469317ed7c8e9fb64ce", + "check_gpg": true + }, + { + "checksum": "sha256:b25f063f82484e4fa42d1ad31a2cf23e882a99dc1ccb191b24e14a6a789d87a0", + "check_gpg": true + }, + { + "checksum": "sha256:71ec6fd79756af905e474553f4ca7ae6985e32615df0ee2f2f487c8496e7160f", + "check_gpg": true + }, + { + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "checksum": "sha256:181173a9353f593105978b8e4038b7bf53fd22c63f4514fd271a74d48f9c59f8", + "check_gpg": true + }, + { + "checksum": "sha256:8dbce1e34a19be338f49b792874abc861fd64acc5653f7f5cd523d5e5865897e", + "check_gpg": true + }, + { + "checksum": "sha256:995ee9636461072248d5c6792d3852fb1ab277a622b18eb7d3c231133446dd7d", + "check_gpg": true + }, + { + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "checksum": "sha256:9ffb9a376d1df3d3d394ec2f8533f939547d8ccd634f1f77db52970630215d71", + "check_gpg": true + }, + { + "checksum": "sha256:23908e2eae2ccfd2efb1d19cdf46e3dca4680ac2d562c1c96f7fb0d22859fc82", + "check_gpg": true + }, + { + "checksum": "sha256:ffa75117ea710fef320f1ae878e8c81e7a056386dea78aa5787dc091c5a100a5", + "check_gpg": true + }, + { + "checksum": "sha256:0f3591f036f0be85a9d28e9099d43a8b2e5a500a9588825c1dd994d1a323ceba", + "check_gpg": true + }, + { + "checksum": "sha256:bb305f3ddc74c4c30ae838a2bbff3cd325eea8427622c7f82e4d06a564bace6f", + "check_gpg": true + }, + { + "checksum": "sha256:1088699171a35873eb5a776f0212ceff2bc9d67e3f1d8f2e107bbf751c36ca90", + "check_gpg": true + }, + { + "checksum": "sha256:99e8930364200470ee5bd065dccb7c4c1caa4863c6f8975740643fe9d2485c18", + "check_gpg": true + }, + { + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "checksum": "sha256:6e76674266f1e136186e3f005ddbf13791b1fea78cd30e8501f3dd1b209fa9f2", + "check_gpg": true + }, + { + "checksum": "sha256:920d2d8df80fb92e358f4925bbd2891977c98e0b9d2f69b44f1e74bec26d6a1e", + "check_gpg": true + }, + { + "checksum": "sha256:9c039f6f6e5385344ea56a6490a472b0f475d8d7612b422191d2152b8e1fc55a", + "check_gpg": true + }, + { + "checksum": "sha256:1b85657077726361a4b157a909796649fe93131fdc4aa67fd5329adc8d2fc833", + "check_gpg": true + }, + { + "checksum": "sha256:3a7d7619061a4adb275ef4b41d993375ad7863863741624186add801800e524f", + "check_gpg": true + }, + { + "checksum": "sha256:504971d079493a49afb8fb7f067f5dfcc59f3e007afcc63734c15fe1066e4b4d", + "check_gpg": true + }, + { + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "checksum": "sha256:8fd19268d460d7f49f3dd96644a2b8a3076a7a7ccbe3e35e27eeafc6ab8d9c95", + "check_gpg": true + }, + { + "checksum": "sha256:0458f6a42cd644322b6eb24b01f0f75de47d5e10ae077797dfada1ce2a1f7fcd", + "check_gpg": true + }, + { + "checksum": "sha256:4bb03b2162523fa694e0e44f46b04263ff0f5dab22c3e93124ec9b5650af2002", + "check_gpg": true + }, + { + "checksum": "sha256:e7e629e7e89f970660407fb22c8b706c4c9a65a5f43286ddeef1e165b446fcaa", + "check_gpg": true + }, + { + "checksum": "sha256:30e07680d23bfb5d4b2727893337619c56f13b46daec2f13f8985f642bf84250", + "check_gpg": true + }, + { + "checksum": "sha256:a00e85fb7902d8869492e32816c7834830682745eeab1efba264bdd3185f479d", + "check_gpg": true + }, + { + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "checksum": "sha256:c36dd24858c4e8d207eb0f87af16e4c599a16bb981416d47db467b70a841fe08", + "check_gpg": true + }, + { + "checksum": "sha256:ec305ea347ab987f5a00574bc3eaebaf2412483ed1b79615fdd86ca18ab146bc", + "check_gpg": true + }, + { + "checksum": "sha256:2dd8505a96714cdb79829a1377e36a53e05cc9b65a7f35a258ca3e4aaa76c700", + "check_gpg": true + }, + { + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "checksum": "sha256:00e59535d45094b7d47e25c93d21179f3138839968776107df99fa0678f1440f", + "check_gpg": true + }, + { + "checksum": "sha256:fe6afcdab2793cd75a838a758a282d4581f1272f3f32df6a58777c0721e54b2e", + "check_gpg": true + }, + { + "checksum": "sha256:5745966147d1651d663d9e7d37a740ebbb4daee49b5cb7a2e61375ea6b37404e", + "check_gpg": true + }, + { + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "checksum": "sha256:f63c88d8b294addf2791a5b291e3ab13750a24fe92fec65c96d365edad767f57", + "check_gpg": true + }, + { + "checksum": "sha256:a108fbc1ba9886604483ec05ef2150c961adb0906db5f9ea46c239bfcdf06b55", + "check_gpg": true + }, + { + "checksum": "sha256:0edff1a5f04f7f5d47537b4c049b95331f9ad33963c9c63ca4b13345a37296d4", + "check_gpg": true + }, + { + "checksum": "sha256:81100039c817e2f3703fb365c63d6d891f3f977dd9e670c3c9b12662de3c255b", + "check_gpg": true + }, + { + "checksum": "sha256:e30906c30d3dea50c62e74bc7aa870eb928af4c6fb474c894f55ef6ba41f5841", + "check_gpg": true + }, + { + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "checksum": "sha256:72bc6a2b459ee27dcd7c213d3aab5a993fc90fcffba2ef02fab7ae3857d379f7", + "check_gpg": true + }, + { + "checksum": "sha256:8c4b392a5e1ed79b7a5b302d8fb14d0470b3a6306a7b36aee275acf0daa61537", + "check_gpg": true + }, + { + "checksum": "sha256:7f23849dcd356019c4e83058e9e49d544300ad7b9a6f6a7528831e393ca1197c", + "check_gpg": true + }, + { + "checksum": "sha256:e6a986f10b17ba67e86c417251d855e1eeac0ca1c85c2ee7ae3bfc7d6c966087", + "check_gpg": true + }, + { + "checksum": "sha256:3b16753c7590bc968a693e97ce9d318d58e1483fd2999a874becd95abc9d35ff", + "check_gpg": true + }, + { + "checksum": "sha256:9404d90bbb474b30b80c90719df01d784b925127e9710f12c44c72d14c2708fc", + "check_gpg": true + }, + { + "checksum": "sha256:f74b53f33812f65d12377946d363a773e48cf6bc6c4bb2acec5bb4a048861b88", + "check_gpg": true + }, + { + "checksum": "sha256:6e78ce3d460b7e1377f487fed5563999fb44d310c441798a4d23d34960e23d45", + "check_gpg": true + }, + { + "checksum": "sha256:b3d8740cee57c5025ef88e9d71df141a6600fdf26215969acae393a2b052892d", + "check_gpg": true + }, + { + "checksum": "sha256:c84f89f65e2a691d7fcbc7021c3c5d796e0f39483e3fe95e83579c630575b78a", + "check_gpg": true + }, + { + "checksum": "sha256:f3d5fd211e3faf1b61be64fd3f1659dd640a873c66747a5cc341f888e4179dea", + "check_gpg": true + }, + { + "checksum": "sha256:abf022d05aa55e7aa8d0736b899d86613d30a7e1751b04666920f367d4311a1a", + "check_gpg": true + }, + { + "checksum": "sha256:28cdab6faa95e1d7d1c32d977627ef5a86b262e2b0e20e76ddd73f598ee126e4", + "check_gpg": true + }, + { + "checksum": "sha256:e3046e1e508453e332277ab86ebf67df0106edca2c6e8e54ba2bffb76f9ed4d7", + "check_gpg": true + }, + { + "checksum": "sha256:b9ad5c82b3b83871269ee705ee12896efd1e3485b0d2005c9cff2a100100cd34", + "check_gpg": true + }, + { + "checksum": "sha256:81f5b3786ab1b634016c0c066379dda739386b4b1d639111b4575748e27caa56", + "check_gpg": true + }, + { + "checksum": "sha256:12c732f4a960848bd4fbc8111c2c0cf584799b1fdf0eb89c2cdcb26da5bc03b8", + "check_gpg": true + }, + { + "checksum": "sha256:0a4100f50b31df500afc5d255dd87117553df7032447f3e226196fd64f9c3f47", + "check_gpg": true + }, + { + "checksum": "sha256:8e10cf2b0645e342b001338a4463c5a02a8a302c25affba37da700a987e2c064", + "check_gpg": true + }, + { + "checksum": "sha256:4290088d905017724f6c909cb1b3193055a6aff62cd20e39ea196694f90753c8", + "check_gpg": true + }, + { + "checksum": "sha256:0cb1a66cb3bb44797a8aeb47db85db1f6c0fcf4d4571d8a5f8981f83b51c08af", + "check_gpg": true + }, + { + "checksum": "sha256:7102de1c840d5b915a40fde5c408f182d677ecdd5126dedf033ebb63b5419607", + "check_gpg": true + }, + { + "checksum": "sha256:82bc08ef5d8049d3d07a5eb00f61d3f94d7577ef814f6791352f75835bff477a", + "check_gpg": true + }, + { + "checksum": "sha256:0064998ad79a6250297b379852b5a06932d8e074270bea02d75888758755bd23", + "check_gpg": true + }, + { + "checksum": "sha256:6b11c1e14d4a02edf8beee776f9f896729bd0f28c66cb4c1d2bd021cdffc6aa0", + "check_gpg": true + }, + { + "checksum": "sha256:4de89d25d09c57b09a51ab93fdf84ade211e835c16d3ba6e4e261dcc0c4e50a1", + "check_gpg": true + }, + { + "checksum": "sha256:3ad68b7569e311a1ca7da4da7b42021a7acb001ab4b2cc6e63b3ba0f87cbd55c", + "check_gpg": true + }, + { + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "checksum": "sha256:c935f74584d7289ca58d1b23cbdacd38450d351dbc3dcd0bc713723c4d50a545", + "check_gpg": true + }, + { + "checksum": "sha256:d6b491f91a567b4245d07d28a0547cb1b8e97a1f814e3f7d76dd685bb6658b64", + "check_gpg": true + }, + { + "checksum": "sha256:ea35fa3f5c16e074a59d66ff9037e48ca7c0126444e09daf640b7a37dacd76ad", + "check_gpg": true + }, + { + "checksum": "sha256:4549e51322d0b10016f1daa8dedc807fddf7d2d4e77719baa696de15b88821bb", + "check_gpg": true + }, + { + "checksum": "sha256:fd9ac175e5af929bb942528904d6e6e48caed800e22a7a45825d535bdc1537ba", + "check_gpg": true + }, + { + "checksum": "sha256:fb2b070b96ed58a31da7889452ce3cdbfb60f6161a3e2f0ce2738b4d3facfd2d", + "check_gpg": true + }, + { + "checksum": "sha256:3975c15d461cebe50d1f179fb86d288c18f643c32f179bbab13425596ab64001", + "check_gpg": true + }, + { + "checksum": "sha256:c68bed5b576d7baa67a59c726d2340f7c0df7e9b93f90b3a22d3f62e9f99456a", + "check_gpg": true + }, + { + "checksum": "sha256:7d0ec23fb8dab882db8b7ec9a9cbb2728d6df2af5c02ee06cc6fa357f210ff09", + "check_gpg": true + }, + { + "checksum": "sha256:cddb050897cd8666090b172711fb7947b3bf844f5a190f8c689fd79a222e1761", + "check_gpg": true + }, + { + "checksum": "sha256:01ea4ecad746f1309b5c943f2b2709f7e5400d33e4d51c85401205ed18d61621", + "check_gpg": true + }, + { + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "checksum": "sha256:59f289c6f3b0180ae3eddaa974e2f972bf15c48135a2abed9eb2f72dfdae1be4", + "check_gpg": true + }, + { + "checksum": "sha256:159972ccc01cd5840c2aad04818efc965b64c5120b1fcce92a47f45ab1abf4a5", + "check_gpg": true + }, + { + "checksum": "sha256:46b0c36e90fd16371444eb5376fc01232b6e64073e42ed1f141344a9aadbe568", + "check_gpg": true + }, + { + "checksum": "sha256:f7954ba55d833c6341ec87b0cf57817084c705673b8b50aff3e3606fcbdcfbb5", + "check_gpg": true + }, + { + "checksum": "sha256:58c8a3d4ac7c8c318b5596b192dbd0350a1122983b69bfc1cb5eb3ecec5b7cf6", + "check_gpg": true + }, + { + "checksum": "sha256:500d0a1b49962ec79ca00224528d6e599d3845eb60b8b13a678d03edfaa755ec", + "check_gpg": true + }, + { + "checksum": "sha256:4c55460197fe24d0a105e3071824a933069e0b655910fd7ee7335e2396de15dc", + "check_gpg": true + }, + { + "checksum": "sha256:2aafea82072ad28a8b662e32902f66b47166a00b5c9cf19b1dd589f39776560f", + "check_gpg": true + }, + { + "checksum": "sha256:9ac1ef0ef80d7ff65903120f8b2a5a2a5723dce7c9c131e17cea3572cb81d0f4", + "check_gpg": true + }, + { + "checksum": "sha256:0f661b922a9e9cbe82e948ec1d83c6fca6e61e08de50815a5b6c069a64f4e883", + "check_gpg": true + }, + { + "checksum": "sha256:ec48b0cd759656b4c5d8d13dcc81c6fa23914f8e214b4cda1ed08e1896177fe9", + "check_gpg": true + }, + { + "checksum": "sha256:03b9d49b78b7e758eecce6a25782767ec5dc921d28f053b17a651b1c8bb96d7b", + "check_gpg": true + }, + { + "checksum": "sha256:a96e76f00865249f70a3f2ef293946e9786150faa83e37185e61592290817cb4", + "check_gpg": true + }, + { + "checksum": "sha256:d22fbf5e32d176db1414b0854c78f0ea1b5f489a83490ee4e3f67bc5e98905af", + "check_gpg": true + }, + { + "checksum": "sha256:2fc552b80866318c0ac934f5385fd2090743701639c318b75138ae985ff5606a", + "check_gpg": true + }, + { + "checksum": "sha256:d877864e501fe38a1b0c7e11572e61c5d9eb9857436541f1c2d5ad2f8bd29b83", + "check_gpg": true + }, + { + "checksum": "sha256:64b0063f6b3a42b712c0ee622328e36ddf94a15da547e3c8da3a4191e0941c92", + "check_gpg": true + }, + { + "checksum": "sha256:99a6e2861b7eb51684d1b83901a7e54caf649b711556a660d93bfef114eab72c", + "check_gpg": true + }, + { + "checksum": "sha256:5e2a37ee7e1147a446be67d63b1be55f2e82c0ae0a84dd1afc6a3fec64e62804", + "check_gpg": true + }, + { + "checksum": "sha256:566a389a620f634ab341a9a39cffdb1c607b4682224cf3d5ac530b6c57c78d0f", + "check_gpg": true + }, + { + "checksum": "sha256:4e365f48d5c85b82f71e8d000d00cdf7ed3c23cd94c31fbf3543572413541c3d", + "check_gpg": true + }, + { + "checksum": "sha256:98d811216e2e0e4ad49925489824210fc3e9b57bb09eefcd4047886375d34f57", + "check_gpg": true + }, + { + "checksum": "sha256:a63ae4aa727a4b75b602a67f1e42946e39dc124e9f1aeb3e795af40ad4e15cbf", + "check_gpg": true + }, + { + "checksum": "sha256:898a918a7adfefc3ce13d10b30b2ec7ccada96155afa15ee3f4e589b3f1baa38", + "check_gpg": true + }, + { + "checksum": "sha256:04826477197ec239d756f81cb6d38fde2f65e71499a8dbaf0c666d93084f1ea3", + "check_gpg": true + }, + { + "checksum": "sha256:1738cf24111bcd0bff08880c4d5efa624c09a2080c901f67ab032ed201a8751e", + "check_gpg": true + }, + { + "checksum": "sha256:5ef4f8487a78a43f7502c055ac77c047ce159da5641e5b61c2669395ae1efe62", + "check_gpg": true + }, + { + "checksum": "sha256:6bc6909c53c0eb2bad7640b3fb79da5cacf5fd8951dee08347b8d18df1b004f8", + "check_gpg": true + }, + { + "checksum": "sha256:3976706367650c755852d995bbe8c4e6bbd13b6e8e0148b7beddb4aba3679d8a", + "check_gpg": true + }, + { + "checksum": "sha256:5b75073853ff34026cf180d7466314783a7a81defaa43e6b7416a38d9f19230b", + "check_gpg": true + }, + { + "checksum": "sha256:2575f8d1fb953934730b9fe6803bf3de12669dcee78852057ea4e88f9d4d76a4", + "check_gpg": true + }, + { + "checksum": "sha256:e8a13bb46e5149142a1e0a359460c1c65b2cbcbff20f2d0c50f9adbad57538a1", + "check_gpg": true + }, + { + "checksum": "sha256:b9b609d17e9274c1551ac6ebab4b53f6e4a5ae9253db5465c65fdb8c919a09dd", + "check_gpg": true + }, + { + "checksum": "sha256:be8bf30729c71aabe30f2c4cf8e5c43ce3cdf892c218fadf53c0af29a76fd6b3", + "check_gpg": true + }, + { + "checksum": "sha256:d2f7d49bd565c2fec4ca945ae97ac3b8a607f114d3a7558b90b2caaa5871459b", + "check_gpg": true + }, + { + "checksum": "sha256:6b2e3b36c2a3e988f40548688b32ef3ce2e4c7906127215c82736189684a95a6", + "check_gpg": true + }, + { + "checksum": "sha256:0b2a6b7e3b62ff9c02ec3012f08fbf396a7990bf9599b49b75eecbee3b257f7f", + "check_gpg": true + }, + { + "checksum": "sha256:e1e5250ea932beac32caf373ae55b4655c50ae8a1bd9d42e3ceac590a13031ef", + "check_gpg": true + }, + { + "checksum": "sha256:c6ffcbd829ea30ef40fa61095cef03f2b6eafa3228187a478d6d027911f12e2f", + "check_gpg": true + }, + { + "checksum": "sha256:618e9a7e3f1f8191beee70d3ad1c8754870887d251480e7e6dd1f3de2d8226d1", + "check_gpg": true + }, + { + "checksum": "sha256:575640462a8c2d0687ea225cc7b6bbf7aa0814e311619ddf6cd16e1bc22f9513", + "check_gpg": true + }, + { + "checksum": "sha256:d287bfdcebb9fbb31d5f58cc71311f48a85970d0fd92f5beb0193270c155faac", + "check_gpg": true + }, + { + "checksum": "sha256:a5fa076ed2c83974cacf4ce386bfdc576ce532fba4f8645dda5c2b67efc5d501", + "check_gpg": true + }, + { + "checksum": "sha256:e9c7f59547a9eec5304db7a312b435592f07f7aee4f3db617e5ddfac0f4d048c", + "check_gpg": true + }, + { + "checksum": "sha256:429cf175b6c3b2bedcabf3391ad3166fe6e62259877f309e57500d2c7f1f1882", + "check_gpg": true + }, + { + "checksum": "sha256:56f3d59b74bf8ceafea695d10fb7ad4672ec93f824ef9b0508c7bcdedeffb101", + "check_gpg": true + }, + { + "checksum": "sha256:8d21bbf2063bb50cf3d12281731fbd8b26dece5f154d7a50f0952695fea6751f", + "check_gpg": true + }, + { + "checksum": "sha256:fb6b61cabfce21597c33c62743c13dd96bcea39aa806a144bc2b2665b48273a8", + "check_gpg": true + }, + { + "checksum": "sha256:77ff28552aba96ce4b80d51a9c390ef4958afad18ede879bf31022f2509e2d90", + "check_gpg": true + }, + { + "checksum": "sha256:c599ffa97fde329ff872bd6db99e8c218601df6549302f89ff747d34ca24042c", + "check_gpg": true + }, + { + "checksum": "sha256:816fe17af41a66dd718eb247273be824b75f53fb539455b58b892528ca12cde5", + "check_gpg": true + }, + { + "checksum": "sha256:20cc74172d531506391309e8f82c6512404ada35f22c68fcd0b83a01dc6e0ca8", + "check_gpg": true + }, + { + "checksum": "sha256:4f37b1e322e3001b076e0128541cc82c180d7054b1c0b7200f46fda4d654cd71", + "check_gpg": true + }, + { + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "checksum": "sha256:7623bcecb8340ed57e1aa2951b13a1c5b1dfefa80eb226f269294df29cb40c08", + "check_gpg": true + }, + { + "checksum": "sha256:d1520137d9cb96cd10a63893b45b4794b120502bdbab0862e001ac2486195aa6", + "check_gpg": true + }, + { + "checksum": "sha256:0c49f27ae0aaf95fbdc52cfb9406c41eefff41b205f85fdc6ef6787ec3af5146", + "check_gpg": true + }, + { + "checksum": "sha256:e78343046ae389b1c11d36f8de0b8bfbb9ded7bdc39fb52b3f719a39047bf42a", + "check_gpg": true + }, + { + "checksum": "sha256:36ce07aa1f90dfdf5ae9824acff24fc3aafe5633b07a022732ca06258e0255b6", + "check_gpg": true + }, + { + "checksum": "sha256:e1deab5e887a199233f9a439d2d20d864d434e9a4ac7fe460f230d368fb3779f", + "check_gpg": true + }, + { + "checksum": "sha256:11e8ee935d9c9d349f4c081d035fc4ee34539af23ef8122e6901b22cf97f346f", + "check_gpg": true + }, + { + "checksum": "sha256:768cc2c561bd6476df45fbd9280bbaeb87d2addcd0c51601d2226a590d7dc872", + "check_gpg": true + }, + { + "checksum": "sha256:82cc8c43bfe0e731ec78e31c8af6250ec1f13989978105a1b38d518470cf5bde", + "check_gpg": true + }, + { + "checksum": "sha256:c1590c5cdfc7aad868c75c54c11a2c7d692001f758ead33aa10f9838955148c4", + "check_gpg": true + }, + { + "checksum": "sha256:c6de19d0d4b8f67957ca6122462090895034495852814f36396bc134905f5f5e", + "check_gpg": true + }, + { + "checksum": "sha256:51f15beba5e5bfc6ff646741b3fbaa3a484ebb40fd8c6c59b8f1f6346dd93e93", + "check_gpg": true + }, + { + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "checksum": "sha256:5a32c492b921e9287422006f255833605b328f3efd071609673be161bb4e7f04", + "check_gpg": true + }, + { + "checksum": "sha256:23e8c23c89737665a5288a3a171548e94898be9ed4a24c056d8bc851c6800090", + "check_gpg": true + }, + { + "checksum": "sha256:b04fecd603225051ca56c6674cb72f12f4de0cc1cbbfda0ab7d0af0e655b2c99", + "check_gpg": true + }, + { + "checksum": "sha256:57bd1ce5d776daca117795bc8e3852f1d29a6fc3fc1edd21729d161de2d7798d", + "check_gpg": true + }, + { + "checksum": "sha256:14a759b4daf287d66f5b803b0fbb52621f8429607be109e5d3c313a57cc276e2", + "check_gpg": true + }, + { + "checksum": "sha256:2b24b5729cd74e3b1efe261bfd732fd1995b0e64d76587a3d90762d77cc58c77", + "check_gpg": true + }, + { + "checksum": "sha256:c80fbc5228457b9b1978b098f47d2a66ca5636526965847078edb6f1c302e392", + "check_gpg": true + }, + { + "checksum": "sha256:ea68ed6fc06f142c95e907b619a9696146dff1bba308773df12e412d8277eec0", + "check_gpg": true + }, + { + "checksum": "sha256:7027d2c6a004469720e3c64eb7fcb2ace1fffd61ec4380afbf875d59a3876f3a", + "check_gpg": true + }, + { + "checksum": "sha256:af589a85af85270c027bacb5ccaf88c93378d364a7c1436ee7bca1290cf762f7", + "check_gpg": true + }, + { + "checksum": "sha256:1472adb267192ca8a323e544fd9749c4765334fc5779e8de4ee583eff77fc078", + "check_gpg": true + }, + { + "checksum": "sha256:f34cde4c2bd6ab93a697d8c350e98f4d70f897f74fee35a06c25eb4b98f46c9a", + "check_gpg": true + }, + { + "checksum": "sha256:aa3658efc21bcc6d79344eeeaf20285407f6f3b90d905a66a37a8cfc835b2a61", + "check_gpg": true + }, + { + "checksum": "sha256:a2f6ae2742a2aac3f5bb5f1ad5cfa4d9b8fdf7cfd01033246027db7064abaa1f", + "check_gpg": true + }, + { + "checksum": "sha256:e35e30f6477652a93d3c02ec86faa233884aefb2ff9fcf4058909d9736fb2d15", + "check_gpg": true + }, + { + "checksum": "sha256:57a9aff6b8d5ecdb66015e4dfcec0a171ae18751e1d5f9a339361cc45b9a8e2f", + "check_gpg": true + }, + { + "checksum": "sha256:7c66a9a33e131200e13a638613ec054a94be901399424df27a0b4f94532ee36d", + "check_gpg": true + }, + { + "checksum": "sha256:80434d5f64abdd521330153fc0c983c5923a833ab59f57ec3bc3a8cf1d748c8c", + "check_gpg": true + }, + { + "checksum": "sha256:a39fb89e06572d188309dc4daf1d23e21be190e59f9ef8ff3c3ccceaefe505da", + "check_gpg": true + }, + { + "checksum": "sha256:a084b365795c7262fa09b2fc590dfbabbbf30cb9c1c7f9b5274eae4c5d761482", + "check_gpg": true + }, + { + "checksum": "sha256:1c2edf26d16b55bac2824452c1c584ff52acf8477920f384f6019f647c241450", + "check_gpg": true + }, + { + "checksum": "sha256:f8e118c35bb5f8ae3dca517ef38c7a38bbdd491011af9e1c4c5c7523f13e6f9c", + "check_gpg": true + }, + { + "checksum": "sha256:339895e6b901ff4c81966893ec7da9848da3acea26e5b202033bfb79dfcbb6cb", + "check_gpg": true + }, + { + "checksum": "sha256:1d530a23a8ea2b831068593fe6aa7a32923c6276504def5a85ad065aaac9ac5f", + "check_gpg": true + }, + { + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "checksum": "sha256:264828f11342a94f056fb27a2e78fc5e14226230b3dbac8bdad6a4c8598fd24f", + "check_gpg": true + }, + { + "checksum": "sha256:9c8771c8c5eb38351dd30f994133bc9149ec93813d1a7c2cd2dd8f7dc7431d49", + "check_gpg": true + }, + { + "checksum": "sha256:f1419585dbb27e3bf76aab5a5f8fb9580816a7a0e7fc93377b97646a0259a794", + "check_gpg": true + }, + { + "checksum": "sha256:d8d28daa56fa4894a767957aa9948cad6d274e2b70d8b10aa69d9356c8a22eff", + "check_gpg": true + }, + { + "checksum": "sha256:424e1777ae71117d20055ffa5f0ed2ead59a8076528450cf7536e18c70624bd8", + "check_gpg": true + }, + { + "checksum": "sha256:eb35167d6095465a58611b80853213af5838f271b75fa1a5e3c051a04a9078a7", + "check_gpg": true + }, + { + "checksum": "sha256:54c024db70df7966590050dfc5dcc1315174e10c3a57e118ea10178238d70889", + "check_gpg": true + }, + { + "checksum": "sha256:a7f5877c9ebfb44347765c7deb266e53fdd62403ccc0a7ff17fdb101bc28caff", + "check_gpg": true + }, + { + "checksum": "sha256:dc6b772101df9f3029c2cd80a10663663ad877e129c8d724902f5cc9f1785e60", + "check_gpg": true + }, + { + "checksum": "sha256:6d4c3ae013d07e50d085b3419dfd41ac79ba11ada62d8c4570d21764ef6f11ec", + "check_gpg": true + }, + { + "checksum": "sha256:bf92fc95c282da9c76018679d9180fb6c98aaf864f66bbef630941040579f92b", + "check_gpg": true + }, + { + "checksum": "sha256:eb1992de281538771ba578a65eabe620dc35aef6c621d8c5351a2ba38ac440f4", + "check_gpg": true + }, + { + "checksum": "sha256:5ba547e1c2c515b3ca091e04c0a6b15b297e25b567a6613a07bd2bee41f39684", + "check_gpg": true + }, + { + "checksum": "sha256:44a92faf198bf015f5e94cf42ae615215fe0a6c0697b1f6c32d205bd450e7ce4", + "check_gpg": true + }, + { + "checksum": "sha256:b0d153ea83902561a9e60c9c244a497c3b19a9c4e40cf9e8437d0221af0f2ca3", + "check_gpg": true + }, + { + "checksum": "sha256:ee3977f4ee783225903f964c60932795d8c11307043e73527b394dec02487047", + "check_gpg": true + }, + { + "checksum": "sha256:0b8baef3612880639ed59ae79475086aac8ce236fd35977e0d87305d0bb9a529", + "check_gpg": true + }, + { + "checksum": "sha256:974bdde5f821c071bcbe0de191677981685cb8290952be75a7ab15747988a99e", + "check_gpg": true + }, + { + "checksum": "sha256:d2be7b0f17350a8a0f301617cb1d7b024076bc16986abaab94453ec1cee1f1f2", + "check_gpg": true + }, + { + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "checksum": "sha256:84365601f93db7fda27e4d89826d4893830572e98df35275abdf15659cfe3fc5", + "check_gpg": true + }, + { + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "checksum": "sha256:d429648fe5b233a46fdbfc31a283ca4b6be5177ae84f3e7e63fec5f9bebd17d1", + "check_gpg": true + }, + { + "checksum": "sha256:edee134762456246cd8de577597e350b60a04bc43ac4a47622b9a263ddd74cf2", + "check_gpg": true + }, + { + "checksum": "sha256:7a5aadb5da769b563cf1e548d8cabd26c00720a67df7e4a445a5a9ae5b0891b8", + "check_gpg": true + }, + { + "checksum": "sha256:436c2f09d2de629da293ab82af47b7697f4a8c151127cbd993d0e8605a4f423c", + "check_gpg": true + }, + { + "checksum": "sha256:fe6f4202a8e7e52add27c6d2e2af65884a974bcde4b5e89979badb782719ca1a", + "check_gpg": true + }, + { + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "checksum": "sha256:513e24bc56f483b171664ea4dec51cc0cce1f9cc8f4939cde8a65ea976ed952d", + "check_gpg": true + }, + { + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "checksum": "sha256:b6498a7a8056483e1d42362b1fb27bd6c54ed7cc7bd180cae20d64a13ae4c88c", + "check_gpg": true + }, + { + "checksum": "sha256:64206147fbbabe1e050f17442a2a3d1458b27beea0d8f3ff9e258a2842dd7a01", + "check_gpg": true + }, + { + "checksum": "sha256:5f2bdb8f9a18257ee80a243e1be96e3ef6fa660e37fdf7b4443d8e8f7abf86ef", + "check_gpg": true + }, + { + "checksum": "sha256:d02489175567be57a48a3edf5deb66d100e99df73a37b26062fea4d6af014cbc", + "check_gpg": true + }, + { + "checksum": "sha256:8d00fa6cdfcc955dc4e14d0f8b6ba6217d2dd0334ea0e1aa44694c9e0ad0b06d", + "check_gpg": true + }, + { + "checksum": "sha256:ae9a3e144f31b6172d266b984c8385fba94bdcf3002d3182a4118f8d29f5f718", + "check_gpg": true + }, + { + "checksum": "sha256:c958419128c1330b50c741113394b147da1ccda055ab1ee19fabc199f68971ea", + "check_gpg": true + }, + { + "checksum": "sha256:7292bf1d13ef336ef411ef695f87c7c7ecd21a13e05c86cc475930ca61117503", + "check_gpg": true + }, + { + "checksum": "sha256:d01f7e794c3dd3f38de1b69fd360db4b858826eba4e6fd4edc79c8a74774ab00", + "check_gpg": true + }, + { + "checksum": "sha256:46acc45e148eea376c3aa8e83a4d3bf1cf66fa35ccc670f592017428ce75ca77", + "check_gpg": true + }, + { + "checksum": "sha256:5d87d829a1d939c520b25f1c790cd1f3bd6c8b769f4f21303ec5e16a3b509445", + "check_gpg": true + }, + { + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "checksum": "sha256:2ad8824aa48378aa741fbd863104d950ad4f669566af2d4f433be6d9afd8ead6", + "check_gpg": true + }, + { + "checksum": "sha256:c05d42fba4fc1ebc2df9ee49f971c744937d8b307626c90b3cf79bf91619863a", + "check_gpg": true + }, + { + "checksum": "sha256:81169dd168c02aed3b1e57e5af16ec3dbdfb74c15373ee40e9eec5aac60a3d25", + "check_gpg": true + }, + { + "checksum": "sha256:af594688a568ec4db7dae9d60390dce1ab547527bbf2415752f211de3748b97f", + "check_gpg": true + }, + { + "checksum": "sha256:7487afe052c79100e906a4d2cb2ee1043410ca10a8e60a65d95776f63a513595", + "check_gpg": true + }, + { + "checksum": "sha256:e29356f3ea2554e8be23401a08a941f406d337cf6b38e7ee99926fb9b3f1f541", + "check_gpg": true + }, + { + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "checksum": "sha256:e0af6b40e51fe0b9f68367355219aa56717888d2a07c10a001cc8667de1a5a2f", + "check_gpg": true + }, + { + "checksum": "sha256:7bd78cde4202401947dea928274579074bc78fdae096057e788c1b6a86a10ecc", + "check_gpg": true + }, + { + "checksum": "sha256:6728ee255cb8c80b85f6d610bfd795025939a77d2591ad61fe1c4f9d657c386e", + "check_gpg": true + }, + { + "checksum": "sha256:42945876fb8932bad3e50b50349af4bdabe713d7be1c8efc1b0f7b042e556aa5", + "check_gpg": true + }, + { + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "checksum": "sha256:acd149c4bf17a15db75fca1f19e34784a9ed275e19c0721aa78f5eb94797a685", + "check_gpg": true + }, + { + "checksum": "sha256:07cd9ddc7f7a16dc9739647af90706cfbcf70b281f5474e622b0769e211e0dc8", + "check_gpg": true + }, + { + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "checksum": "sha256:58a44f9472918a511d3eee0b3f08926dab2ebf4994584403bd196e6c92a06f5a", + "check_gpg": true + }, + { + "checksum": "sha256:9ed0b44834b6a637c70aa00ab243aecb534f9aea461e1388652ab039898239c8", + "check_gpg": true + }, + { + "checksum": "sha256:c1893a7c51ebb0371b87e2179d6e0e5d0fbb71acb4234cf4adc293af11c75578", + "check_gpg": true + }, + { + "checksum": "sha256:f23f467c4099be4cb4dfdc1be13b7a7bb6e8c6da7c21182658a034827b64df39", + "check_gpg": true + } + ] + } + } + ] + }, + "runner": "org.osbuild.fedora31" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:b37d963f89a7e0d466e1317da6cd2c20b3ce3ec9789e1027c16176734f88c4fc", + "check_gpg": true + }, + { + "checksum": "sha256:f195c83de6568cf550a3b2d70725697196c1a9269cddb9b825f5a887de9d6eed", + "check_gpg": true + }, + { + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "checksum": "sha256:a516dfa62a327d440fe38b93af81dbecb112fe45fff0f227583c451631479122", + "check_gpg": true + }, + { + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "checksum": "sha256:ffdc5423e5f27eabdc75c59f050f75e43bc2aec4f189022f4195e2a3173adbc6", + "check_gpg": true + }, + { + "checksum": "sha256:0b1ddcc8c3096814bc5027133fb077ef587b49a1a4e4d6426327c75cf2066b11", + "check_gpg": true + }, + { + "checksum": "sha256:a6caaef9bed1bd17292e1fdde4efee9730f8cff5826a9cb6c952e6f3cd052243", + "check_gpg": true + }, + { + "checksum": "sha256:42a4e01c47e28b71cafb658a5993b7f4b7692ac6b916878d580fecab7ae9d16c", + "check_gpg": true + }, + { + "checksum": "sha256:9c08d246ce73d8741777f290e7110ff9dae97a15e09f3469317ed7c8e9fb64ce", + "check_gpg": true + }, + { + "checksum": "sha256:88831a57114969801a557d700451a70337f944b868a3d792d47e6e9e91961f3c", + "check_gpg": true + }, + { + "checksum": "sha256:b25f063f82484e4fa42d1ad31a2cf23e882a99dc1ccb191b24e14a6a789d87a0", + "check_gpg": true + }, + { + "checksum": "sha256:71ec6fd79756af905e474553f4ca7ae6985e32615df0ee2f2f487c8496e7160f", + "check_gpg": true + }, + { + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "checksum": "sha256:181173a9353f593105978b8e4038b7bf53fd22c63f4514fd271a74d48f9c59f8", + "check_gpg": true + }, + { + "checksum": "sha256:8dbce1e34a19be338f49b792874abc861fd64acc5653f7f5cd523d5e5865897e", + "check_gpg": true + }, + { + "checksum": "sha256:995ee9636461072248d5c6792d3852fb1ab277a622b18eb7d3c231133446dd7d", + "check_gpg": true + }, + { + "checksum": "sha256:1bdeed5fd5907e0cacd5706ebc93ade09462a0c71e2316d9841e33a896b99b87", + "check_gpg": true + }, + { + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "checksum": "sha256:9ffb9a376d1df3d3d394ec2f8533f939547d8ccd634f1f77db52970630215d71", + "check_gpg": true + }, + { + "checksum": "sha256:23908e2eae2ccfd2efb1d19cdf46e3dca4680ac2d562c1c96f7fb0d22859fc82", + "check_gpg": true + }, + { + "checksum": "sha256:089d4c5c48e89cd1444f283571fce20fbf5f1b20f3a5ff1ce74266bbc2cd0fec", + "check_gpg": true + }, + { + "checksum": "sha256:21d9ceffd6fb52d235a95e4d7708d719eac758a9dfd80ba2d6119dfdc46c80ff", + "check_gpg": true + }, + { + "checksum": "sha256:9cc3e6534ae34343e7e4d056d46b9551da7d0a82c7bad378c3626d4b70d1bf62", + "check_gpg": true + }, + { + "checksum": "sha256:ffa75117ea710fef320f1ae878e8c81e7a056386dea78aa5787dc091c5a100a5", + "check_gpg": true + }, + { + "checksum": "sha256:0f3591f036f0be85a9d28e9099d43a8b2e5a500a9588825c1dd994d1a323ceba", + "check_gpg": true + }, + { + "checksum": "sha256:bb305f3ddc74c4c30ae838a2bbff3cd325eea8427622c7f82e4d06a564bace6f", + "check_gpg": true + }, + { + "checksum": "sha256:798376bc628acd54407d945702dce73ab90633919f88fe9b7ecde3f38ebc2fe9", + "check_gpg": true + }, + { + "checksum": "sha256:1088699171a35873eb5a776f0212ceff2bc9d67e3f1d8f2e107bbf751c36ca90", + "check_gpg": true + }, + { + "checksum": "sha256:99e8930364200470ee5bd065dccb7c4c1caa4863c6f8975740643fe9d2485c18", + "check_gpg": true + }, + { + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "checksum": "sha256:6e76674266f1e136186e3f005ddbf13791b1fea78cd30e8501f3dd1b209fa9f2", + "check_gpg": true + }, + { + "checksum": "sha256:920d2d8df80fb92e358f4925bbd2891977c98e0b9d2f69b44f1e74bec26d6a1e", + "check_gpg": true + }, + { + "checksum": "sha256:9c039f6f6e5385344ea56a6490a472b0f475d8d7612b422191d2152b8e1fc55a", + "check_gpg": true + }, + { + "checksum": "sha256:1b85657077726361a4b157a909796649fe93131fdc4aa67fd5329adc8d2fc833", + "check_gpg": true + }, + { + "checksum": "sha256:3a7d7619061a4adb275ef4b41d993375ad7863863741624186add801800e524f", + "check_gpg": true + }, + { + "checksum": "sha256:504971d079493a49afb8fb7f067f5dfcc59f3e007afcc63734c15fe1066e4b4d", + "check_gpg": true + }, + { + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "checksum": "sha256:8fd19268d460d7f49f3dd96644a2b8a3076a7a7ccbe3e35e27eeafc6ab8d9c95", + "check_gpg": true + }, + { + "checksum": "sha256:c0287bc7c1f54bcd19c43904f9a5c7c0cc4c82eae2c455071f6d7ea50714668f", + "check_gpg": true + }, + { + "checksum": "sha256:0458f6a42cd644322b6eb24b01f0f75de47d5e10ae077797dfada1ce2a1f7fcd", + "check_gpg": true + }, + { + "checksum": "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc", + "check_gpg": true + }, + { + "checksum": "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a", + "check_gpg": true + }, + { + "checksum": "sha256:4bb03b2162523fa694e0e44f46b04263ff0f5dab22c3e93124ec9b5650af2002", + "check_gpg": true + }, + { + "checksum": "sha256:e7e629e7e89f970660407fb22c8b706c4c9a65a5f43286ddeef1e165b446fcaa", + "check_gpg": true + }, + { + "checksum": "sha256:30e07680d23bfb5d4b2727893337619c56f13b46daec2f13f8985f642bf84250", + "check_gpg": true + }, + { + "checksum": "sha256:611b0995f8475747341db33373ec0178afcb724183aada71b5d3a2c437d19527", + "check_gpg": true + }, + { + "checksum": "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d", + "check_gpg": true + }, + { + "checksum": "sha256:a00e85fb7902d8869492e32816c7834830682745eeab1efba264bdd3185f479d", + "check_gpg": true + }, + { + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "checksum": "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063", + "check_gpg": true + }, + { + "checksum": "sha256:7ae36bfe222068561cf0259400b54e210ad628aaa66dd4b87e20a2291996c71d", + "check_gpg": true + }, + { + "checksum": "sha256:f85438d6cb268c431f3aed5c678f1632b56d57393a3eb52e31d75bc6462bc88d", + "check_gpg": true + }, + { + "checksum": "sha256:ec305ea347ab987f5a00574bc3eaebaf2412483ed1b79615fdd86ca18ab146bc", + "check_gpg": true + }, + { + "checksum": "sha256:2dd8505a96714cdb79829a1377e36a53e05cc9b65a7f35a258ca3e4aaa76c700", + "check_gpg": true + }, + { + "checksum": "sha256:d45b8157ccb1d538f06120150470433ddaa714680e10ffe97bfc5853b5a0321e", + "check_gpg": true + }, + { + "checksum": "sha256:563f82b7c56043ed5a5ff55dcc643bcc5ac2a1e9ae940481f1c21595a83ba60a", + "check_gpg": true + }, + { + "checksum": "sha256:d96bdfbaba63ac6755a20d8a4d954bc5010695d671ba305a54362c1d3c69fc37", + "check_gpg": true + }, + { + "checksum": "sha256:79db5a94baa6acad360b52fdf6d49cf91d7b6290e0d55f457b2820937d2739f4", + "check_gpg": true + }, + { + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "checksum": "sha256:00e59535d45094b7d47e25c93d21179f3138839968776107df99fa0678f1440f", + "check_gpg": true + }, + { + "checksum": "sha256:fe6afcdab2793cd75a838a758a282d4581f1272f3f32df6a58777c0721e54b2e", + "check_gpg": true + }, + { + "checksum": "sha256:5745966147d1651d663d9e7d37a740ebbb4daee49b5cb7a2e61375ea6b37404e", + "check_gpg": true + }, + { + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "checksum": "sha256:f43fa8496a54ad89eef4f48c3813190b5509a21c873bc1d5fcd0dda80ae2b425", + "check_gpg": true + }, + { + "checksum": "sha256:f63c88d8b294addf2791a5b291e3ab13750a24fe92fec65c96d365edad767f57", + "check_gpg": true + }, + { + "checksum": "sha256:a108fbc1ba9886604483ec05ef2150c961adb0906db5f9ea46c239bfcdf06b55", + "check_gpg": true + }, + { + "checksum": "sha256:dcc584a55c425c26a62fe579beead8488589c3892c34e8fab95c7fd7ec1cf6c6", + "check_gpg": true + }, + { + "checksum": "sha256:0edff1a5f04f7f5d47537b4c049b95331f9ad33963c9c63ca4b13345a37296d4", + "check_gpg": true + }, + { + "checksum": "sha256:81100039c817e2f3703fb365c63d6d891f3f977dd9e670c3c9b12662de3c255b", + "check_gpg": true + }, + { + "checksum": "sha256:ab35a2d7f21aac1f33f9521607789e1c303fb63e4ea0681e9f724f86a1cc15c5", + "check_gpg": true + }, + { + "checksum": "sha256:e76b3b9d14a0016542f61d0ab2981fbf2d779e522d0c36d9095a1cffecbf9272", + "check_gpg": true + }, + { + "checksum": "sha256:e30906c30d3dea50c62e74bc7aa870eb928af4c6fb474c894f55ef6ba41f5841", + "check_gpg": true + }, + { + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "checksum": "sha256:72bc6a2b459ee27dcd7c213d3aab5a993fc90fcffba2ef02fab7ae3857d379f7", + "check_gpg": true + }, + { + "checksum": "sha256:8c4b392a5e1ed79b7a5b302d8fb14d0470b3a6306a7b36aee275acf0daa61537", + "check_gpg": true + }, + { + "checksum": "sha256:7f23849dcd356019c4e83058e9e49d544300ad7b9a6f6a7528831e393ca1197c", + "check_gpg": true + }, + { + "checksum": "sha256:e6a986f10b17ba67e86c417251d855e1eeac0ca1c85c2ee7ae3bfc7d6c966087", + "check_gpg": true + }, + { + "checksum": "sha256:3b16753c7590bc968a693e97ce9d318d58e1483fd2999a874becd95abc9d35ff", + "check_gpg": true + }, + { + "checksum": "sha256:9404d90bbb474b30b80c90719df01d784b925127e9710f12c44c72d14c2708fc", + "check_gpg": true + }, + { + "checksum": "sha256:f74b53f33812f65d12377946d363a773e48cf6bc6c4bb2acec5bb4a048861b88", + "check_gpg": true + }, + { + "checksum": "sha256:6e78ce3d460b7e1377f487fed5563999fb44d310c441798a4d23d34960e23d45", + "check_gpg": true + }, + { + "checksum": "sha256:b3d8740cee57c5025ef88e9d71df141a6600fdf26215969acae393a2b052892d", + "check_gpg": true + }, + { + "checksum": "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565", + "check_gpg": true + }, + { + "checksum": "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b", + "check_gpg": true + }, + { + "checksum": "sha256:0064a42567b657d85831ec162a314cd00f7befe48ce634387463754677206c9c", + "check_gpg": true + }, + { + "checksum": "sha256:c8fc5b492af902894b927e79314b52bbdd8e45b2d2018abd8113d8e1807adeca", + "check_gpg": true + }, + { + "checksum": "sha256:c84f89f65e2a691d7fcbc7021c3c5d796e0f39483e3fe95e83579c630575b78a", + "check_gpg": true + }, + { + "checksum": "sha256:f3d5fd211e3faf1b61be64fd3f1659dd640a873c66747a5cc341f888e4179dea", + "check_gpg": true + }, + { + "checksum": "sha256:abf022d05aa55e7aa8d0736b899d86613d30a7e1751b04666920f367d4311a1a", + "check_gpg": true + }, + { + "checksum": "sha256:e3046e1e508453e332277ab86ebf67df0106edca2c6e8e54ba2bffb76f9ed4d7", + "check_gpg": true + }, + { + "checksum": "sha256:42ae595f75734daaed3430e1117d3cb05bd9a18108506bb9600125693d3d1688", + "check_gpg": true + }, + { + "checksum": "sha256:b9ad5c82b3b83871269ee705ee12896efd1e3485b0d2005c9cff2a100100cd34", + "check_gpg": true + }, + { + "checksum": "sha256:81f5b3786ab1b634016c0c066379dda739386b4b1d639111b4575748e27caa56", + "check_gpg": true + }, + { + "checksum": "sha256:12c732f4a960848bd4fbc8111c2c0cf584799b1fdf0eb89c2cdcb26da5bc03b8", + "check_gpg": true + }, + { + "checksum": "sha256:0a4100f50b31df500afc5d255dd87117553df7032447f3e226196fd64f9c3f47", + "check_gpg": true + }, + { + "checksum": "sha256:8e10cf2b0645e342b001338a4463c5a02a8a302c25affba37da700a987e2c064", + "check_gpg": true + }, + { + "checksum": "sha256:ac3230db1dfd77c5a90b1eda2c002e75f6abe1aa2d4416aea12515c956211e4f", + "check_gpg": true + }, + { + "checksum": "sha256:4290088d905017724f6c909cb1b3193055a6aff62cd20e39ea196694f90753c8", + "check_gpg": true + }, + { + "checksum": "sha256:0cb1a66cb3bb44797a8aeb47db85db1f6c0fcf4d4571d8a5f8981f83b51c08af", + "check_gpg": true + }, + { + "checksum": "sha256:7102de1c840d5b915a40fde5c408f182d677ecdd5126dedf033ebb63b5419607", + "check_gpg": true + }, + { + "checksum": "sha256:89a35174435a790c0fbf3bc4306d51c867ecce66fb65bae0e7706a9f8f9a19b3", + "check_gpg": true + }, + { + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "checksum": "sha256:7637132d543741e8c5b581523ca5db24adc6eb6d78530944881c360da694cf15", + "check_gpg": true + }, + { + "checksum": "sha256:19217c1730a3f16e15eedd95e3f97471097a1bd066f7783fd273cfb392f4042e", + "check_gpg": true + }, + { + "checksum": "sha256:af00a0b026235e70f7cb7606166dfcaea0d227a3de70363ff67a644036ed8bfc", + "check_gpg": true + }, + { + "checksum": "sha256:ddd0635b899826bed59036ba17f8112c35660b32f3d1639266f5e394166a9dbf", + "check_gpg": true + }, + { + "checksum": "sha256:82bc08ef5d8049d3d07a5eb00f61d3f94d7577ef814f6791352f75835bff477a", + "check_gpg": true + }, + { + "checksum": "sha256:0064998ad79a6250297b379852b5a06932d8e074270bea02d75888758755bd23", + "check_gpg": true + }, + { + "checksum": "sha256:6b11c1e14d4a02edf8beee776f9f896729bd0f28c66cb4c1d2bd021cdffc6aa0", + "check_gpg": true + }, + { + "checksum": "sha256:4de89d25d09c57b09a51ab93fdf84ade211e835c16d3ba6e4e261dcc0c4e50a1", + "check_gpg": true + }, + { + "checksum": "sha256:3ad68b7569e311a1ca7da4da7b42021a7acb001ab4b2cc6e63b3ba0f87cbd55c", + "check_gpg": true + }, + { + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "checksum": "sha256:a3be2e9e42d68f5e5e58f1dd86d5b6e4fc1ff91e98f44d26221d6bda38c9f372", + "check_gpg": true + }, + { + "checksum": "sha256:dae094845eb669c1e4c6b9719a730ab71561c8bc8e870d30c9ac9f6437fd2d50", + "check_gpg": true + }, + { + "checksum": "sha256:c935f74584d7289ca58d1b23cbdacd38450d351dbc3dcd0bc713723c4d50a545", + "check_gpg": true + }, + { + "checksum": "sha256:0b109cfab724680af15e7be85cf9f4f4828cd8290f0aa8fcebcbb14cd176be94", + "check_gpg": true + }, + { + "checksum": "sha256:3e6b2cfce9c4a62f7cde13bb6ae135d5f6f0d6cb179ab3dbd61ba1533477f257", + "check_gpg": true + }, + { + "checksum": "sha256:e9c1fa22b0b6d6b7ac782ba60d4c6a2c747bd683f075720a4d82aec45adbd905", + "check_gpg": true + }, + { + "checksum": "sha256:ee2f71a3a318270e9cc55aa9dde8889f2e664fec681f9fd5719361f8e4a1afac", + "check_gpg": true + }, + { + "checksum": "sha256:8891f85ba3caf6de4b6b234c6aa7a98d347228937a378d04da7af56556799bd1", + "check_gpg": true + }, + { + "checksum": "sha256:f369cbc73e31dbae49565c6acfcc8ce4ea0158d1480121b5c6dcc1d224998a62", + "check_gpg": true + }, + { + "checksum": "sha256:763bbd8d0e3e80b56041273dd412f0c3708c90cd0affd929d474ae61f7c3798c", + "check_gpg": true + }, + { + "checksum": "sha256:d6b491f91a567b4245d07d28a0547cb1b8e97a1f814e3f7d76dd685bb6658b64", + "check_gpg": true + }, + { + "checksum": "sha256:7b01a3bf09861003bd9524e9d460ed68b8d2de4233a09f7af731cb07f75ef913", + "check_gpg": true + }, + { + "checksum": "sha256:1138343dfb107de07f54d4723aee2686fdd1af3e4532d14bd399b9b6b7873040", + "check_gpg": true + }, + { + "checksum": "sha256:ea35fa3f5c16e074a59d66ff9037e48ca7c0126444e09daf640b7a37dacd76ad", + "check_gpg": true + }, + { + "checksum": "sha256:4549e51322d0b10016f1daa8dedc807fddf7d2d4e77719baa696de15b88821bb", + "check_gpg": true + }, + { + "checksum": "sha256:fd9ac175e5af929bb942528904d6e6e48caed800e22a7a45825d535bdc1537ba", + "check_gpg": true + }, + { + "checksum": "sha256:fb2b070b96ed58a31da7889452ce3cdbfb60f6161a3e2f0ce2738b4d3facfd2d", + "check_gpg": true + }, + { + "checksum": "sha256:03559557dbf64805e44d7e956f6b228c90831766fd1f485eecdfddf7a646a220", + "check_gpg": true + }, + { + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "checksum": "sha256:26da63b51fc7b85d1a30098bfb9c2fa276b2d2129a28cee8cc80acd2eabe96e0", + "check_gpg": true + }, + { + "checksum": "sha256:9bf695c87aa5acc7695251a4c75c576375c45c5b043af00a7ddf503223030309", + "check_gpg": true + }, + { + "checksum": "sha256:3d5e22e2c2d20d409cc9a878a88dc088d6f02c81652eb0957f95d1abb185f7b7", + "check_gpg": true + }, + { + "checksum": "sha256:3975c15d461cebe50d1f179fb86d288c18f643c32f179bbab13425596ab64001", + "check_gpg": true + }, + { + "checksum": "sha256:e88e27b7ac16c753e20f65cd13ed163019ac702c4195eb75d766acd44cb55263", + "check_gpg": true + }, + { + "checksum": "sha256:c68bed5b576d7baa67a59c726d2340f7c0df7e9b93f90b3a22d3f62e9f99456a", + "check_gpg": true + }, + { + "checksum": "sha256:e0408a5020069e7a4585e3bb4d1bba1b8bf0afe481ff63b70e2221e9c5464cad", + "check_gpg": true + }, + { + "checksum": "sha256:7d0ec23fb8dab882db8b7ec9a9cbb2728d6df2af5c02ee06cc6fa357f210ff09", + "check_gpg": true + }, + { + "checksum": "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552", + "check_gpg": true + }, + { + "checksum": "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b", + "check_gpg": true + }, + { + "checksum": "sha256:cddb050897cd8666090b172711fb7947b3bf844f5a190f8c689fd79a222e1761", + "check_gpg": true + }, + { + "checksum": "sha256:aeac986c84b8038eccd191310bb09f3d396f7c05171ac0fb8691182918459c90", + "check_gpg": true + }, + { + "checksum": "sha256:01ea4ecad746f1309b5c943f2b2709f7e5400d33e4d51c85401205ed18d61621", + "check_gpg": true + }, + { + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "checksum": "sha256:59f289c6f3b0180ae3eddaa974e2f972bf15c48135a2abed9eb2f72dfdae1be4", + "check_gpg": true + }, + { + "checksum": "sha256:159972ccc01cd5840c2aad04818efc965b64c5120b1fcce92a47f45ab1abf4a5", + "check_gpg": true + }, + { + "checksum": "sha256:46b0c36e90fd16371444eb5376fc01232b6e64073e42ed1f141344a9aadbe568", + "check_gpg": true + }, + { + "checksum": "sha256:f7954ba55d833c6341ec87b0cf57817084c705673b8b50aff3e3606fcbdcfbb5", + "check_gpg": true + }, + { + "checksum": "sha256:58c8a3d4ac7c8c318b5596b192dbd0350a1122983b69bfc1cb5eb3ecec5b7cf6", + "check_gpg": true + }, + { + "checksum": "sha256:500d0a1b49962ec79ca00224528d6e599d3845eb60b8b13a678d03edfaa755ec", + "check_gpg": true + }, + { + "checksum": "sha256:4c55460197fe24d0a105e3071824a933069e0b655910fd7ee7335e2396de15dc", + "check_gpg": true + }, + { + "checksum": "sha256:2aafea82072ad28a8b662e32902f66b47166a00b5c9cf19b1dd589f39776560f", + "check_gpg": true + }, + { + "checksum": "sha256:9ac1ef0ef80d7ff65903120f8b2a5a2a5723dce7c9c131e17cea3572cb81d0f4", + "check_gpg": true + }, + { + "checksum": "sha256:0f661b922a9e9cbe82e948ec1d83c6fca6e61e08de50815a5b6c069a64f4e883", + "check_gpg": true + }, + { + "checksum": "sha256:ec48b0cd759656b4c5d8d13dcc81c6fa23914f8e214b4cda1ed08e1896177fe9", + "check_gpg": true + }, + { + "checksum": "sha256:03b9d49b78b7e758eecce6a25782767ec5dc921d28f053b17a651b1c8bb96d7b", + "check_gpg": true + }, + { + "checksum": "sha256:a96e76f00865249f70a3f2ef293946e9786150faa83e37185e61592290817cb4", + "check_gpg": true + }, + { + "checksum": "sha256:2fc552b80866318c0ac934f5385fd2090743701639c318b75138ae985ff5606a", + "check_gpg": true + }, + { + "checksum": "sha256:d877864e501fe38a1b0c7e11572e61c5d9eb9857436541f1c2d5ad2f8bd29b83", + "check_gpg": true + }, + { + "checksum": "sha256:64b0063f6b3a42b712c0ee622328e36ddf94a15da547e3c8da3a4191e0941c92", + "check_gpg": true + }, + { + "checksum": "sha256:99a6e2861b7eb51684d1b83901a7e54caf649b711556a660d93bfef114eab72c", + "check_gpg": true + }, + { + "checksum": "sha256:608a967cbdbad6b7320060e986bf8f8e7f6b61bff5ae6571006397b46a60771c", + "check_gpg": true + }, + { + "checksum": "sha256:5e2a37ee7e1147a446be67d63b1be55f2e82c0ae0a84dd1afc6a3fec64e62804", + "check_gpg": true + }, + { + "checksum": "sha256:566a389a620f634ab341a9a39cffdb1c607b4682224cf3d5ac530b6c57c78d0f", + "check_gpg": true + }, + { + "checksum": "sha256:4e365f48d5c85b82f71e8d000d00cdf7ed3c23cd94c31fbf3543572413541c3d", + "check_gpg": true + }, + { + "checksum": "sha256:a61e3fed8d1c860bf09b5ec5586e30b88b1b1dea157cd371def9fcf72e313a3d", + "check_gpg": true + }, + { + "checksum": "sha256:98d811216e2e0e4ad49925489824210fc3e9b57bb09eefcd4047886375d34f57", + "check_gpg": true + }, + { + "checksum": "sha256:a63ae4aa727a4b75b602a67f1e42946e39dc124e9f1aeb3e795af40ad4e15cbf", + "check_gpg": true + }, + { + "checksum": "sha256:8d17464a13f79b54c8dfe76d716a42d6c875bce408e29344c1ecf916957a649e", + "check_gpg": true + }, + { + "checksum": "sha256:898a918a7adfefc3ce13d10b30b2ec7ccada96155afa15ee3f4e589b3f1baa38", + "check_gpg": true + }, + { + "checksum": "sha256:04826477197ec239d756f81cb6d38fde2f65e71499a8dbaf0c666d93084f1ea3", + "check_gpg": true + }, + { + "checksum": "sha256:1738cf24111bcd0bff08880c4d5efa624c09a2080c901f67ab032ed201a8751e", + "check_gpg": true + }, + { + "checksum": "sha256:5ef4f8487a78a43f7502c055ac77c047ce159da5641e5b61c2669395ae1efe62", + "check_gpg": true + }, + { + "checksum": "sha256:6f7bd7a58d5aed77bbab94aa38edcbc4cac924d72ab6c72ce718f24b6528e1a5", + "check_gpg": true + }, + { + "checksum": "sha256:6bc6909c53c0eb2bad7640b3fb79da5cacf5fd8951dee08347b8d18df1b004f8", + "check_gpg": true + }, + { + "checksum": "sha256:10e99db3c367665147f8a09956719d9fda97af2bc3f6d16294dc01f7955e67ee", + "check_gpg": true + }, + { + "checksum": "sha256:3976706367650c755852d995bbe8c4e6bbd13b6e8e0148b7beddb4aba3679d8a", + "check_gpg": true + }, + { + "checksum": "sha256:5b75073853ff34026cf180d7466314783a7a81defaa43e6b7416a38d9f19230b", + "check_gpg": true + }, + { + "checksum": "sha256:2575f8d1fb953934730b9fe6803bf3de12669dcee78852057ea4e88f9d4d76a4", + "check_gpg": true + }, + { + "checksum": "sha256:e8a13bb46e5149142a1e0a359460c1c65b2cbcbff20f2d0c50f9adbad57538a1", + "check_gpg": true + }, + { + "checksum": "sha256:3c19bfb6ec591109d959af7fd588ce02cdd4caf001136ed5839fcac9b11e98ad", + "check_gpg": true + }, + { + "checksum": "sha256:b9b609d17e9274c1551ac6ebab4b53f6e4a5ae9253db5465c65fdb8c919a09dd", + "check_gpg": true + }, + { + "checksum": "sha256:be8bf30729c71aabe30f2c4cf8e5c43ce3cdf892c218fadf53c0af29a76fd6b3", + "check_gpg": true + }, + { + "checksum": "sha256:d2f7d49bd565c2fec4ca945ae97ac3b8a607f114d3a7558b90b2caaa5871459b", + "check_gpg": true + }, + { + "checksum": "sha256:6b2e3b36c2a3e988f40548688b32ef3ce2e4c7906127215c82736189684a95a6", + "check_gpg": true + }, + { + "checksum": "sha256:0b2a6b7e3b62ff9c02ec3012f08fbf396a7990bf9599b49b75eecbee3b257f7f", + "check_gpg": true + }, + { + "checksum": "sha256:e1e5250ea932beac32caf373ae55b4655c50ae8a1bd9d42e3ceac590a13031ef", + "check_gpg": true + }, + { + "checksum": "sha256:c6ffcbd829ea30ef40fa61095cef03f2b6eafa3228187a478d6d027911f12e2f", + "check_gpg": true + }, + { + "checksum": "sha256:31dacda6745f326be70d854d50ae5d3cd0c9d4f19aeab6b4d09920e1436d8bdc", + "check_gpg": true + }, + { + "checksum": "sha256:618e9a7e3f1f8191beee70d3ad1c8754870887d251480e7e6dd1f3de2d8226d1", + "check_gpg": true + }, + { + "checksum": "sha256:3fb9cec5d598a549e97041993399d49c5943821b1f3441881cf15cb26f38e437", + "check_gpg": true + }, + { + "checksum": "sha256:69f2c758068234b1abc39ffaf94c8825ae4baa9810cc54e5d49a5c891fa98435", + "check_gpg": true + }, + { + "checksum": "sha256:575640462a8c2d0687ea225cc7b6bbf7aa0814e311619ddf6cd16e1bc22f9513", + "check_gpg": true + }, + { + "checksum": "sha256:d2d3b613de0ecf3ae022e5d5d1576858c91b203af6a52a7a9aa36245f0cdbd05", + "check_gpg": true + }, + { + "checksum": "sha256:3308454f1353d5aced0a9574bc969ae272923ef1faa425bd9080de6e56e1bcbb", + "check_gpg": true + }, + { + "checksum": "sha256:d287bfdcebb9fbb31d5f58cc71311f48a85970d0fd92f5beb0193270c155faac", + "check_gpg": true + }, + { + "checksum": "sha256:ead6cd0d8e509f07e36456aff75eca8433821813d675382d28fe4e7dbecc48dc", + "check_gpg": true + }, + { + "checksum": "sha256:a5fa076ed2c83974cacf4ce386bfdc576ce532fba4f8645dda5c2b67efc5d501", + "check_gpg": true + }, + { + "checksum": "sha256:e9c7f59547a9eec5304db7a312b435592f07f7aee4f3db617e5ddfac0f4d048c", + "check_gpg": true + }, + { + "checksum": "sha256:429cf175b6c3b2bedcabf3391ad3166fe6e62259877f309e57500d2c7f1f1882", + "check_gpg": true + }, + { + "checksum": "sha256:311729a146f8833ff882370348d69313322dcf7586b68d5eed192eb633dcd58a", + "check_gpg": true + }, + { + "checksum": "sha256:ddd9b320e97d333bb4b7ccbdf70e401693065177a7d9317c6d7d1b69318209f7", + "check_gpg": true + }, + { + "checksum": "sha256:f2471f1b946309f419a2bf1b4b3ad473d53f7ac0ee15b9c2426eb2e6cb4e87c0", + "check_gpg": true + }, + { + "checksum": "sha256:d1ce6a69f0c2d96a97a04036a5c59deda82b5e1b0843c114f0fb896279ec7bbc", + "check_gpg": true + }, + { + "checksum": "sha256:859b03ef657a7c682ff7f341145a7c2ba9025fd5430f36ecb020eeafc55bba2d", + "check_gpg": true + }, + { + "checksum": "sha256:56f3d59b74bf8ceafea695d10fb7ad4672ec93f824ef9b0508c7bcdedeffb101", + "check_gpg": true + }, + { + "checksum": "sha256:ee5ed9701778c4cb91af4c2e2ef996b9c178d32b652edf4506394cac72fefb96", + "check_gpg": true + }, + { + "checksum": "sha256:8d21bbf2063bb50cf3d12281731fbd8b26dece5f154d7a50f0952695fea6751f", + "check_gpg": true + }, + { + "checksum": "sha256:f11d53128f33f9e73dc21c01159a283cc3fcd2e39f2712dbfa930018ae67fb69", + "check_gpg": true + }, + { + "checksum": "sha256:fb6b61cabfce21597c33c62743c13dd96bcea39aa806a144bc2b2665b48273a8", + "check_gpg": true + }, + { + "checksum": "sha256:4ad98619490252f1bc7002ce9a4183876650c22a4722089ba4498fb925647601", + "check_gpg": true + }, + { + "checksum": "sha256:a40b4873535c2b0b826063e5248981d1ce0d04ef5ec6d9c21facc07ce2446b40", + "check_gpg": true + }, + { + "checksum": "sha256:77ff28552aba96ce4b80d51a9c390ef4958afad18ede879bf31022f2509e2d90", + "check_gpg": true + }, + { + "checksum": "sha256:c599ffa97fde329ff872bd6db99e8c218601df6549302f89ff747d34ca24042c", + "check_gpg": true + }, + { + "checksum": "sha256:816fe17af41a66dd718eb247273be824b75f53fb539455b58b892528ca12cde5", + "check_gpg": true + }, + { + "checksum": "sha256:20cc74172d531506391309e8f82c6512404ada35f22c68fcd0b83a01dc6e0ca8", + "check_gpg": true + }, + { + "checksum": "sha256:23e335d288f55da26dc77e0d1ceb7cbe4e3890b4e28ff4a2435fc4481a6e737f", + "check_gpg": true + }, + { + "checksum": "sha256:4f37b1e322e3001b076e0128541cc82c180d7054b1c0b7200f46fda4d654cd71", + "check_gpg": true + }, + { + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "checksum": "sha256:7623bcecb8340ed57e1aa2951b13a1c5b1dfefa80eb226f269294df29cb40c08", + "check_gpg": true + }, + { + "checksum": "sha256:d1520137d9cb96cd10a63893b45b4794b120502bdbab0862e001ac2486195aa6", + "check_gpg": true + }, + { + "checksum": "sha256:0c49f27ae0aaf95fbdc52cfb9406c41eefff41b205f85fdc6ef6787ec3af5146", + "check_gpg": true + }, + { + "checksum": "sha256:e78343046ae389b1c11d36f8de0b8bfbb9ded7bdc39fb52b3f719a39047bf42a", + "check_gpg": true + }, + { + "checksum": "sha256:36ce07aa1f90dfdf5ae9824acff24fc3aafe5633b07a022732ca06258e0255b6", + "check_gpg": true + }, + { + "checksum": "sha256:e1deab5e887a199233f9a439d2d20d864d434e9a4ac7fe460f230d368fb3779f", + "check_gpg": true + }, + { + "checksum": "sha256:11e8ee935d9c9d349f4c081d035fc4ee34539af23ef8122e6901b22cf97f346f", + "check_gpg": true + }, + { + "checksum": "sha256:768cc2c561bd6476df45fbd9280bbaeb87d2addcd0c51601d2226a590d7dc872", + "check_gpg": true + }, + { + "checksum": "sha256:82cc8c43bfe0e731ec78e31c8af6250ec1f13989978105a1b38d518470cf5bde", + "check_gpg": true + }, + { + "checksum": "sha256:c1590c5cdfc7aad868c75c54c11a2c7d692001f758ead33aa10f9838955148c4", + "check_gpg": true + }, + { + "checksum": "sha256:c6de19d0d4b8f67957ca6122462090895034495852814f36396bc134905f5f5e", + "check_gpg": true + }, + { + "checksum": "sha256:51f15beba5e5bfc6ff646741b3fbaa3a484ebb40fd8c6c59b8f1f6346dd93e93", + "check_gpg": true + }, + { + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "checksum": "sha256:ce421671bfd14a427771eb3c78b060352a61cca889b1bf1b342c328dd521623d", + "check_gpg": true + }, + { + "checksum": "sha256:02f7f1cdd5cbe11b16e093686db5c584a68db4e6b1015c4d36c0246a54f801bb", + "check_gpg": true + }, + { + "checksum": "sha256:2b1052455234b751e869f22c496bb660dec53eafe198673bab25053e394e41cb", + "check_gpg": true + }, + { + "checksum": "sha256:f2d11878777b28a284e9a571a6a9cf893a97f0935291b10686eb93a2a3dfdfb8", + "check_gpg": true + }, + { + "checksum": "sha256:99c0e924fa7eb70fc9301b692d4ba72ec480af840498b8251f68a419317bd108", + "check_gpg": true + }, + { + "checksum": "sha256:5a32c492b921e9287422006f255833605b328f3efd071609673be161bb4e7f04", + "check_gpg": true + }, + { + "checksum": "sha256:48ee663f069c5019c842f316216ef3bf8dfcbbec479c98d1f2b24749c22e57f3", + "check_gpg": true + }, + { + "checksum": "sha256:23e8c23c89737665a5288a3a171548e94898be9ed4a24c056d8bc851c6800090", + "check_gpg": true + }, + { + "checksum": "sha256:91d628d3e4a82976361ecb306d4f0049aa65c811fdd5051b3f8423b75e4a10e9", + "check_gpg": true + }, + { + "checksum": "sha256:f6d37f25fa7215b7ae185b12f687d60c4363cfb8e35d591595a9b0f379488fc6", + "check_gpg": true + }, + { + "checksum": "sha256:e4e6a5e014442aa8d7768555da9d44e6381569e0c44e61d2d2a06d6692748945", + "check_gpg": true + }, + { + "checksum": "sha256:b04fecd603225051ca56c6674cb72f12f4de0cc1cbbfda0ab7d0af0e655b2c99", + "check_gpg": true + }, + { + "checksum": "sha256:57bd1ce5d776daca117795bc8e3852f1d29a6fc3fc1edd21729d161de2d7798d", + "check_gpg": true + }, + { + "checksum": "sha256:14a759b4daf287d66f5b803b0fbb52621f8429607be109e5d3c313a57cc276e2", + "check_gpg": true + }, + { + "checksum": "sha256:2b24b5729cd74e3b1efe261bfd732fd1995b0e64d76587a3d90762d77cc58c77", + "check_gpg": true + }, + { + "checksum": "sha256:c80fbc5228457b9b1978b098f47d2a66ca5636526965847078edb6f1c302e392", + "check_gpg": true + }, + { + "checksum": "sha256:4fe97b617adfa7c0f97ba5b2b6e1c0d2e2b15c54ba8db66fc389cacc0f1b2b60", + "check_gpg": true + }, + { + "checksum": "sha256:ea68ed6fc06f142c95e907b619a9696146dff1bba308773df12e412d8277eec0", + "check_gpg": true + }, + { + "checksum": "sha256:7027d2c6a004469720e3c64eb7fcb2ace1fffd61ec4380afbf875d59a3876f3a", + "check_gpg": true + }, + { + "checksum": "sha256:af589a85af85270c027bacb5ccaf88c93378d364a7c1436ee7bca1290cf762f7", + "check_gpg": true + }, + { + "checksum": "sha256:1472adb267192ca8a323e544fd9749c4765334fc5779e8de4ee583eff77fc078", + "check_gpg": true + }, + { + "checksum": "sha256:f34cde4c2bd6ab93a697d8c350e98f4d70f897f74fee35a06c25eb4b98f46c9a", + "check_gpg": true + }, + { + "checksum": "sha256:aa3658efc21bcc6d79344eeeaf20285407f6f3b90d905a66a37a8cfc835b2a61", + "check_gpg": true + }, + { + "checksum": "sha256:a2f6ae2742a2aac3f5bb5f1ad5cfa4d9b8fdf7cfd01033246027db7064abaa1f", + "check_gpg": true + }, + { + "checksum": "sha256:e35e30f6477652a93d3c02ec86faa233884aefb2ff9fcf4058909d9736fb2d15", + "check_gpg": true + }, + { + "checksum": "sha256:57a9aff6b8d5ecdb66015e4dfcec0a171ae18751e1d5f9a339361cc45b9a8e2f", + "check_gpg": true + }, + { + "checksum": "sha256:7c66a9a33e131200e13a638613ec054a94be901399424df27a0b4f94532ee36d", + "check_gpg": true + }, + { + "checksum": "sha256:80434d5f64abdd521330153fc0c983c5923a833ab59f57ec3bc3a8cf1d748c8c", + "check_gpg": true + }, + { + "checksum": "sha256:a39fb89e06572d188309dc4daf1d23e21be190e59f9ef8ff3c3ccceaefe505da", + "check_gpg": true + }, + { + "checksum": "sha256:253f9f540248a0bdd537ee8ea4f670752af74d85be98ea81593a30710e1e5808", + "check_gpg": true + }, + { + "checksum": "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47", + "check_gpg": true + }, + { + "checksum": "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70", + "check_gpg": true + }, + { + "checksum": "sha256:284d46ebd3d3fd4a915b624a75e9931c948807fcb13fed01681e623d0ba7b1ce", + "check_gpg": true + }, + { + "checksum": "sha256:a084b365795c7262fa09b2fc590dfbabbbf30cb9c1c7f9b5274eae4c5d761482", + "check_gpg": true + }, + { + "checksum": "sha256:1c2edf26d16b55bac2824452c1c584ff52acf8477920f384f6019f647c241450", + "check_gpg": true + }, + { + "checksum": "sha256:84fa6157b3e986b9ce67cc03bfed4e2b96fa7d075df70e038fbcd2b486737d35", + "check_gpg": true + }, + { + "checksum": "sha256:f8e118c35bb5f8ae3dca517ef38c7a38bbdd491011af9e1c4c5c7523f13e6f9c", + "check_gpg": true + }, + { + "checksum": "sha256:332ef2695e27190536747f53bab03ba5df0ca903564f6071623d99fa524d6d2f", + "check_gpg": true + }, + { + "checksum": "sha256:339895e6b901ff4c81966893ec7da9848da3acea26e5b202033bfb79dfcbb6cb", + "check_gpg": true + }, + { + "checksum": "sha256:1d530a23a8ea2b831068593fe6aa7a32923c6276504def5a85ad065aaac9ac5f", + "check_gpg": true + }, + { + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "checksum": "sha256:264828f11342a94f056fb27a2e78fc5e14226230b3dbac8bdad6a4c8598fd24f", + "check_gpg": true + }, + { + "checksum": "sha256:504b334756e12eefb42d44e53da61fb4321b860e3b5f380b5c21c5c3784a8c75", + "check_gpg": true + }, + { + "checksum": "sha256:9c8771c8c5eb38351dd30f994133bc9149ec93813d1a7c2cd2dd8f7dc7431d49", + "check_gpg": true + }, + { + "checksum": "sha256:a9f81157c1f977adf96403fe534e2fecc9f3a82a58c5b53fd58aad9954873790", + "check_gpg": true + }, + { + "checksum": "sha256:f1419585dbb27e3bf76aab5a5f8fb9580816a7a0e7fc93377b97646a0259a794", + "check_gpg": true + }, + { + "checksum": "sha256:d8d28daa56fa4894a767957aa9948cad6d274e2b70d8b10aa69d9356c8a22eff", + "check_gpg": true + }, + { + "checksum": "sha256:424e1777ae71117d20055ffa5f0ed2ead59a8076528450cf7536e18c70624bd8", + "check_gpg": true + }, + { + "checksum": "sha256:eb35167d6095465a58611b80853213af5838f271b75fa1a5e3c051a04a9078a7", + "check_gpg": true + }, + { + "checksum": "sha256:0a80e2a0ede76c98337c220f01dfadacace037b48f09fe072c5d33f356e50b8e", + "check_gpg": true + }, + { + "checksum": "sha256:54c024db70df7966590050dfc5dcc1315174e10c3a57e118ea10178238d70889", + "check_gpg": true + }, + { + "checksum": "sha256:a7f5877c9ebfb44347765c7deb266e53fdd62403ccc0a7ff17fdb101bc28caff", + "check_gpg": true + }, + { + "checksum": "sha256:dc6b772101df9f3029c2cd80a10663663ad877e129c8d724902f5cc9f1785e60", + "check_gpg": true + }, + { + "checksum": "sha256:4d4853ac550a0cfc5b3bcbcb7f12c81461393a6aa0e96a23648985f8a7f2e8e2", + "check_gpg": true + }, + { + "checksum": "sha256:6d4c3ae013d07e50d085b3419dfd41ac79ba11ada62d8c4570d21764ef6f11ec", + "check_gpg": true + }, + { + "checksum": "sha256:bf92fc95c282da9c76018679d9180fb6c98aaf864f66bbef630941040579f92b", + "check_gpg": true + }, + { + "checksum": "sha256:eb1992de281538771ba578a65eabe620dc35aef6c621d8c5351a2ba38ac440f4", + "check_gpg": true + }, + { + "checksum": "sha256:5ba547e1c2c515b3ca091e04c0a6b15b297e25b567a6613a07bd2bee41f39684", + "check_gpg": true + }, + { + "checksum": "sha256:855131926b9a3764835de3e7171b9ce579847ce161f3ba8406a5b6fdfa781f55", + "check_gpg": true + }, + { + "checksum": "sha256:07f4ccd9f3cb20ceb4483adb673adfef15394b246bd93a84f169eb07acb68d71", + "check_gpg": true + }, + { + "checksum": "sha256:44a92faf198bf015f5e94cf42ae615215fe0a6c0697b1f6c32d205bd450e7ce4", + "check_gpg": true + }, + { + "checksum": "sha256:b0d153ea83902561a9e60c9c244a497c3b19a9c4e40cf9e8437d0221af0f2ca3", + "check_gpg": true + }, + { + "checksum": "sha256:0ae87f94df2e114f287d60e9041ac159349f51322e32eeefa19a96db0acb78e7", + "check_gpg": true + }, + { + "checksum": "sha256:ee3977f4ee783225903f964c60932795d8c11307043e73527b394dec02487047", + "check_gpg": true + }, + { + "checksum": "sha256:0b8baef3612880639ed59ae79475086aac8ce236fd35977e0d87305d0bb9a529", + "check_gpg": true + }, + { + "checksum": "sha256:dc8a707761f45962518e251f87a5e1d83199fbd1fe1e249f89ed457528c1fba1", + "check_gpg": true + }, + { + "checksum": "sha256:2efe5f560e0c56dec38c9456ae8482a5a9006833d257de4a2a6246d261f647e2", + "check_gpg": true + }, + { + "checksum": "sha256:fabb9a86711308b3dbf146e8f155ab8e857172455e805aab912500bf157368ac", + "check_gpg": true + }, + { + "checksum": "sha256:974bdde5f821c071bcbe0de191677981685cb8290952be75a7ab15747988a99e", + "check_gpg": true + }, + { + "checksum": "sha256:cf480f0df368b3cc9f36e42d5d573afa93fcb3889614dee172c0ad367785f520", + "check_gpg": true + }, + { + "checksum": "sha256:d2be7b0f17350a8a0f301617cb1d7b024076bc16986abaab94453ec1cee1f1f2", + "check_gpg": true + }, + { + "checksum": "sha256:9ff53c6f07da3adeaa20da76c1c78b886710b460db7a316415f8bc9182096fb0", + "check_gpg": true + }, + { + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "checksum": "sha256:84365601f93db7fda27e4d89826d4893830572e98df35275abdf15659cfe3fc5", + "check_gpg": true + }, + { + "checksum": "sha256:73a7249de97f0ad66bc1a867ac5b5d08b741ab152d4dd7ce45cc231d64126b58", + "check_gpg": true + }, + { + "checksum": "sha256:4cca3f986ddbd38cfbfb6d1c8d336a1aaed78f7da1f38356ce1e034ba35ec492", + "check_gpg": true + }, + { + "checksum": "sha256:700acef9fc8051726700645696fd67b0fc3b7fec08290ef9c2964fe7a9d3e8cd", + "check_gpg": true + }, + { + "checksum": "sha256:e17ef6f7d4f1869ff5813d6f8f2983cd6f5cd23d4a666b7ae19154636e911644", + "check_gpg": true + }, + { + "checksum": "sha256:f0b9a02ed639d2cff7a85262d440c65f2fa2ba318166b45d969a2802f102535b", + "check_gpg": true + }, + { + "checksum": "sha256:ee6dbb4914a35ee8a816ecde34d29221e3f4622324f6287c328e8ac22ae572ad", + "check_gpg": true + }, + { + "checksum": "sha256:cdc526097cd2fecb75e44ad11a69b10eb7804f310298c064c3b931515d4f3d5c", + "check_gpg": true + }, + { + "checksum": "sha256:d35fe17711337362bdf09540523bddbdc16406d0ff7650043a3cdd1cfc222ae8", + "check_gpg": true + }, + { + "checksum": "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653", + "check_gpg": true + }, + { + "checksum": "sha256:a314b2a8ed8a9e7e80aedfb1f76c75910d0da9549d072c424c2dddbe63a09874", + "check_gpg": true + }, + { + "checksum": "sha256:63ff108f557096a9724053c37e37d3c2af1a1ec0b33124480b3742ff3da46292", + "check_gpg": true + }, + { + "checksum": "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f", + "check_gpg": true + }, + { + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "checksum": "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02", + "check_gpg": true + }, + { + "checksum": "sha256:a349c40034b5a181cab1bd409384ddb901c274e110b16721d434f5bf42e92c0f", + "check_gpg": true + }, + { + "checksum": "sha256:c45162d6aeab69ce8f58353c88e7e068c59f36921989aa49ac23738f7c9cea82", + "check_gpg": true + }, + { + "checksum": "sha256:d429648fe5b233a46fdbfc31a283ca4b6be5177ae84f3e7e63fec5f9bebd17d1", + "check_gpg": true + }, + { + "checksum": "sha256:edee134762456246cd8de577597e350b60a04bc43ac4a47622b9a263ddd74cf2", + "check_gpg": true + }, + { + "checksum": "sha256:8221111dc9a9aa5c68805f153c3fbe5314c8a0f335af29685733b958253dd278", + "check_gpg": true + }, + { + "checksum": "sha256:1135e96b6f9ed29e4ed4c0f060876891a244442a503f0b18ab238589da20d464", + "check_gpg": true + }, + { + "checksum": "sha256:e98119ac7a707287668e7a9a74ef2809ee5f555af04f52775367e428e08dbb33", + "check_gpg": true + }, + { + "checksum": "sha256:2d9a2e736dd5231df3c5c748ce0ba5a75a409dacfe73f14676781f32d565a7df", + "check_gpg": true + }, + { + "checksum": "sha256:047f9e29fcfa56be98ca3f42249f3ccb2a93df99f2438e3983e2064025f0d79d", + "check_gpg": true + }, + { + "checksum": "sha256:143c50c0663f963c7689c1cec43b81cf1433d5d3b67eb8233ba06506c1b3e095", + "check_gpg": true + }, + { + "checksum": "sha256:7a5aadb5da769b563cf1e548d8cabd26c00720a67df7e4a445a5a9ae5b0891b8", + "check_gpg": true + }, + { + "checksum": "sha256:436c2f09d2de629da293ab82af47b7697f4a8c151127cbd993d0e8605a4f423c", + "check_gpg": true + }, + { + "checksum": "sha256:fe6f4202a8e7e52add27c6d2e2af65884a974bcde4b5e89979badb782719ca1a", + "check_gpg": true + }, + { + "checksum": "sha256:67bbf2a262929b1b4c2fb9532c471da5ab2c0f642b0df770cf947c0131a9e1ad", + "check_gpg": true + }, + { + "checksum": "sha256:32cc0c295cd013db597cd31868736be3708edb25ab1952fdd0ed879ec5e8d191", + "check_gpg": true + }, + { + "checksum": "sha256:47383173cbb135c2590998a4e82c6f9d40a516450d2fbd1e169ace92337b7fd5", + "check_gpg": true + }, + { + "checksum": "sha256:f85469c0c19ce86e8fdd0dd5a3e6e5c9b78e3436ae9ce70ba86b2b4a3794f693", + "check_gpg": true + }, + { + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "checksum": "sha256:1b65944efe48ba0cca34011891480a1db29a7e95dad058376bfca34d68fb0791", + "check_gpg": true + }, + { + "checksum": "sha256:5a7e957102a23c9924398fe45f5cdec66edcd10adcad7130d6ebf02c2706ad49", + "check_gpg": true + }, + { + "checksum": "sha256:682af90a049fa78429d5ebd194700609f762e59ceb6c4ca28b17e7f4fd1683aa", + "check_gpg": true + }, + { + "checksum": "sha256:6ed7f318c5e93b59254d7b7652131f33db713eeb61f52413f21e533069ed24bf", + "check_gpg": true + }, + { + "checksum": "sha256:32d56c08f75c7626f1a0efd7aa05ca2ea3649d55445b5ac42a2f7f10fad8b46b", + "check_gpg": true + }, + { + "checksum": "sha256:32cc578c8da626a8c1a5316a59d482967a32547be6c077f73fb90e11fb0f1e6a", + "check_gpg": true + }, + { + "checksum": "sha256:d54f02fc39b3e87253808f665918d26ffe901f1228e25121c908661b47ba266b", + "check_gpg": true + }, + { + "checksum": "sha256:6c6f1152899318bdc0500cfb0b0cdbbc19ba0e017b5888ece1358250caa2629f", + "check_gpg": true + }, + { + "checksum": "sha256:f958a85509e118c832458a5f502e5d59695eb3df96ae0bd603203a82d188b2ae", + "check_gpg": true + }, + { + "checksum": "sha256:1e049e86c5dd5c4d6737d47dd194d553ffbd65c81a4077cf6e1029a0fde80fb5", + "check_gpg": true + }, + { + "checksum": "sha256:513e24bc56f483b171664ea4dec51cc0cce1f9cc8f4939cde8a65ea976ed952d", + "check_gpg": true + }, + { + "checksum": "sha256:1f44142da3bf5e09b98488b40ed8a2d5dbd841c36bb4553749e6d65d7fe5c15c", + "check_gpg": true + }, + { + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "checksum": "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142", + "check_gpg": true + }, + { + "checksum": "sha256:b1094a9a9725546315d6eac7f792d5875a5f0c950cd84e43fc2fbb3e639ee43e", + "check_gpg": true + }, + { + "checksum": "sha256:bd2e7c9e3df976723ade08f16667b31044b678e62ee29e024ad193af6d9a28e1", + "check_gpg": true + }, + { + "checksum": "sha256:b6498a7a8056483e1d42362b1fb27bd6c54ed7cc7bd180cae20d64a13ae4c88c", + "check_gpg": true + }, + { + "checksum": "sha256:78b600621e00f4a0acc8f58de056ae9393ce4e1cded56837b4e557c1bc84b06b", + "check_gpg": true + }, + { + "checksum": "sha256:415406e44a1d6bd226ad67c1b762c3d3ab2f834ed0f9e7059660a64d23d13b66", + "check_gpg": true + }, + { + "checksum": "sha256:5f2bdb8f9a18257ee80a243e1be96e3ef6fa660e37fdf7b4443d8e8f7abf86ef", + "check_gpg": true + }, + { + "checksum": "sha256:d02489175567be57a48a3edf5deb66d100e99df73a37b26062fea4d6af014cbc", + "check_gpg": true + }, + { + "checksum": "sha256:8d00fa6cdfcc955dc4e14d0f8b6ba6217d2dd0334ea0e1aa44694c9e0ad0b06d", + "check_gpg": true + }, + { + "checksum": "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663", + "check_gpg": true + }, + { + "checksum": "sha256:ae9a3e144f31b6172d266b984c8385fba94bdcf3002d3182a4118f8d29f5f718", + "check_gpg": true + }, + { + "checksum": "sha256:c958419128c1330b50c741113394b147da1ccda055ab1ee19fabc199f68971ea", + "check_gpg": true + }, + { + "checksum": "sha256:7292bf1d13ef336ef411ef695f87c7c7ecd21a13e05c86cc475930ca61117503", + "check_gpg": true + }, + { + "checksum": "sha256:6ce37675749741e4ea05e934aa5b7376d596cc117bd317199d0a15e2236aa058", + "check_gpg": true + }, + { + "checksum": "sha256:d01f7e794c3dd3f38de1b69fd360db4b858826eba4e6fd4edc79c8a74774ab00", + "check_gpg": true + }, + { + "checksum": "sha256:46acc45e148eea376c3aa8e83a4d3bf1cf66fa35ccc670f592017428ce75ca77", + "check_gpg": true + }, + { + "checksum": "sha256:5d87d829a1d939c520b25f1c790cd1f3bd6c8b769f4f21303ec5e16a3b509445", + "check_gpg": true + }, + { + "checksum": "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108", + "check_gpg": true + }, + { + "checksum": "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a", + "check_gpg": true + }, + { + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "checksum": "sha256:2ad8824aa48378aa741fbd863104d950ad4f669566af2d4f433be6d9afd8ead6", + "check_gpg": true + }, + { + "checksum": "sha256:c05d42fba4fc1ebc2df9ee49f971c744937d8b307626c90b3cf79bf91619863a", + "check_gpg": true + }, + { + "checksum": "sha256:ac7985d2591bc2bd1d90efdb68751a3d7435cf902b3895cb308e830ce48f1f44", + "check_gpg": true + }, + { + "checksum": "sha256:b9e9e16e7ccade332921b8d8e7b250a1c51e1d23405f2baa8a7c04f701af6e02", + "check_gpg": true + }, + { + "checksum": "sha256:81169dd168c02aed3b1e57e5af16ec3dbdfb74c15373ee40e9eec5aac60a3d25", + "check_gpg": true + }, + { + "checksum": "sha256:054f0851c8b42292ac5c24ea649764b022dacc6d40a00e333abacc67e2c2a215", + "check_gpg": true + }, + { + "checksum": "sha256:d9641a59b33831e32fa61f3479152d5eac33e0526b32e67ae33f1c1102c69d4b", + "check_gpg": true + }, + { + "checksum": "sha256:121e2a4e79f6dbf37af2182cb12ff28345db993a7f83de344f6f5fbcf5a705a5", + "check_gpg": true + }, + { + "checksum": "sha256:077e72f02d2eef2a2bfd8ab057527a02005806e731303fbff1e28f61716f2943", + "check_gpg": true + }, + { + "checksum": "sha256:cb478c89af0caac9a40c32a2b4a48242b16ff9e2e6daa375b2de88e396f524dd", + "check_gpg": true + }, + { + "checksum": "sha256:af594688a568ec4db7dae9d60390dce1ab547527bbf2415752f211de3748b97f", + "check_gpg": true + }, + { + "checksum": "sha256:0ff534e46d982b5a213eb562e3cb30d1935a25a9f433d325457069eec9131217", + "check_gpg": true + }, + { + "checksum": "sha256:7487afe052c79100e906a4d2cb2ee1043410ca10a8e60a65d95776f63a513595", + "check_gpg": true + }, + { + "checksum": "sha256:e29356f3ea2554e8be23401a08a941f406d337cf6b38e7ee99926fb9b3f1f541", + "check_gpg": true + }, + { + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "checksum": "sha256:a436dca481707ca10a0c5bb189d9a25ff76c4f66f1d32b0847dc6d13ba46c17a", + "check_gpg": true + }, + { + "checksum": "sha256:7bd78cde4202401947dea928274579074bc78fdae096057e788c1b6a86a10ecc", + "check_gpg": true + }, + { + "checksum": "sha256:6728ee255cb8c80b85f6d610bfd795025939a77d2591ad61fe1c4f9d657c386e", + "check_gpg": true + }, + { + "checksum": "sha256:42945876fb8932bad3e50b50349af4bdabe713d7be1c8efc1b0f7b042e556aa5", + "check_gpg": true + }, + { + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "checksum": "sha256:acd149c4bf17a15db75fca1f19e34784a9ed275e19c0721aa78f5eb94797a685", + "check_gpg": true + }, + { + "checksum": "sha256:07cd9ddc7f7a16dc9739647af90706cfbcf70b281f5474e622b0769e211e0dc8", + "check_gpg": true + }, + { + "checksum": "sha256:477474e74c5f30884f0a4571445ecf987b521f61139fc0ba7d516e075f47e7ce", + "check_gpg": true + }, + { + "checksum": "sha256:06cf2f5439e0ce2c7fc655bdf4868d3c47a5fbe5b71e9dc305232a7732896e14", + "check_gpg": true + }, + { + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "checksum": "sha256:36b65cdbda1742e6fdd823675051e975489324ee33e71ef44a74874561b1d561", + "check_gpg": true + }, + { + "checksum": "sha256:38067c93bf61173a56d476e2e08d3011bd8d8b5d6a8705ede62b549042b3b7d2", + "check_gpg": true + }, + { + "checksum": "sha256:a4f7846fb262ad61885f64b8a354f9303fe5ce129378e4781eefa0bffdef828e", + "check_gpg": true + }, + { + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "checksum": "sha256:58a44f9472918a511d3eee0b3f08926dab2ebf4994584403bd196e6c92a06f5a", + "check_gpg": true + }, + { + "checksum": "sha256:9ed0b44834b6a637c70aa00ab243aecb534f9aea461e1388652ab039898239c8", + "check_gpg": true + }, + { + "checksum": "sha256:f2cd84bfa2797552688025e7170d2b0775dfb32ebea95ed806765dee57b833eb", + "check_gpg": true + }, + { + "checksum": "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488", + "check_gpg": true + }, + { + "checksum": "sha256:c1893a7c51ebb0371b87e2179d6e0e5d0fbb71acb4234cf4adc293af11c75578", + "check_gpg": true + }, + { + "checksum": "sha256:f23f467c4099be4cb4dfdc1be13b7a7bb6e8c6da7c21182658a034827b64df39", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "redhat": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "vfs_type": "ext4", + "path": "/", + "options": "defaults", + "freq": 1, + "passno": 1 + }, + { + "uuid": "46BB-8120", + "vfs_type": "vfat", + "path": "/boot/efi", + "options": "umask=0077,shortname=winnt", + "passno": 2 + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "kernel_opts": "ro biosdevname=0 net.ifnames=0", + "uefi": { + "vendor": "fedora" + } + } + }, + { + "name": "org.osbuild.systemd", + "options": { + "enabled_services": [ + "cloud-init.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service" + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "qcow2", + "filename": "disk.qcow2", + "size": 2147483648, + "ptuuid": "8DFDFF87-C96E-EA48-A3A6-9408F1F6B1EF", + "pttype": "gpt", + "partitions": [ + { + "start": 2048, + "size": 972800, + "type": "c12a7328-f81f-11d2-ba4b-00a0c93ec93b", + "uuid": "02C1E068-1D2F-4DA3-91FD-8DD76A955C9D", + "filesystem": { + "type": "vfat", + "uuid": "46BB-8120", + "label": "EFI System Partition", + "mountpoint": "/boot/efi" + } + }, + { + "start": 976896, + "uuid": "8D760010-FAAE-46D1-9E5B-4A2EAC5030CD", + "filesystem": { + "type": "ext4", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.111", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm", + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/acl-2.2.53-4.fc31.aarch64.rpm", + "checksum": "sha256:a516dfa62a327d440fe38b93af81dbecb112fe45fff0f227583c451631479122", + "check_gpg": true + }, + { + "name": "adobe-source-code-pro-fonts", + "epoch": 0, + "version": "2.030.1.050", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm", + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "name": "adwaita-cursor-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "name": "adwaita-icon-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/alternatives-1.11-5.fc31.aarch64.rpm", + "checksum": "sha256:0b1ddcc8c3096814bc5027133fb077ef587b49a1a4e4d6426327c75cf2066b11", + "check_gpg": true + }, + { + "name": "at-spi2-atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.aarch64.rpm", + "checksum": "sha256:a6caaef9bed1bd17292e1fdde4efee9730f8cff5826a9cb6c952e6f3cd052243", + "check_gpg": true + }, + { + "name": "at-spi2-core", + "epoch": 0, + "version": "2.34.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.aarch64.rpm", + "checksum": "sha256:42a4e01c47e28b71cafb658a5993b7f4b7692ac6b916878d580fecab7ae9d16c", + "check_gpg": true + }, + { + "name": "atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/atk-2.34.1-1.fc31.aarch64.rpm", + "checksum": "sha256:9c08d246ce73d8741777f290e7110ff9dae97a15e09f3469317ed7c8e9fb64ce", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.aarch64.rpm", + "checksum": "sha256:b25f063f82484e4fa42d1ad31a2cf23e882a99dc1ccb191b24e14a6a789d87a0", + "check_gpg": true + }, + { + "name": "avahi-libs", + "epoch": 0, + "version": "0.7", + "release": "20.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/avahi-libs-0.7-20.fc31.aarch64.rpm", + "checksum": "sha256:71ec6fd79756af905e474553f4ca7ae6985e32615df0ee2f2f487c8496e7160f", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "8.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm", + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.7", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/bash-5.0.7-3.fc31.aarch64.rpm", + "checksum": "sha256:181173a9353f593105978b8e4038b7bf53fd22c63f4514fd271a74d48f9c59f8", + "check_gpg": true + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.7", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/brotli-1.0.7-6.fc31.aarch64.rpm", + "checksum": "sha256:8dbce1e34a19be338f49b792874abc861fd64acc5653f7f5cd523d5e5865897e", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.aarch64.rpm", + "checksum": "sha256:995ee9636461072248d5c6792d3852fb1ab277a622b18eb7d3c231133446dd7d", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm", + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "name": "cairo", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cairo-1.16.0-6.fc31.aarch64.rpm", + "checksum": "sha256:9ffb9a376d1df3d3d394ec2f8533f939547d8ccd634f1f77db52970630215d71", + "check_gpg": true + }, + { + "name": "cairo-gobject", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.aarch64.rpm", + "checksum": "sha256:23908e2eae2ccfd2efb1d19cdf46e3dca4680ac2d562c1c96f7fb0d22859fc82", + "check_gpg": true + }, + { + "name": "colord-libs", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/colord-libs-1.4.4-2.fc31.aarch64.rpm", + "checksum": "sha256:ffa75117ea710fef320f1ae878e8c81e7a056386dea78aa5787dc091c5a100a5", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/coreutils-8.31-4.fc31.aarch64.rpm", + "checksum": "sha256:0f3591f036f0be85a9d28e9099d43a8b2e5a500a9588825c1dd994d1a323ceba", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/coreutils-common-8.31-4.fc31.aarch64.rpm", + "checksum": "sha256:bb305f3ddc74c4c30ae838a2bbff3cd325eea8427622c7f82e4d06a564bace6f", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cracklib-2.9.6-21.fc31.aarch64.rpm", + "checksum": "sha256:1088699171a35873eb5a776f0212ceff2bc9d67e3f1d8f2e107bbf751c36ca90", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.aarch64.rpm", + "checksum": "sha256:99e8930364200470ee5bd065dccb7c4c1caa4863c6f8975740643fe9d2485c18", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20190816", + "release": "4.gitbb9bf99.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm", + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.2.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.aarch64.rpm", + "checksum": "sha256:6e76674266f1e136186e3f005ddbf13791b1fea78cd30e8501f3dd1b209fa9f2", + "check_gpg": true + }, + { + "name": "cups-libs", + "epoch": 1, + "version": "2.2.12", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cups-libs-2.2.12-2.fc31.aarch64.rpm", + "checksum": "sha256:920d2d8df80fb92e358f4925bbd2891977c98e0b9d2f69b44f1e74bec26d6a1e", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/curl-7.66.0-1.fc31.aarch64.rpm", + "checksum": "sha256:9c039f6f6e5385344ea56a6490a472b0f475d8d7612b422191d2152b8e1fc55a", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.aarch64.rpm", + "checksum": "sha256:1b85657077726361a4b157a909796649fe93131fdc4aa67fd5329adc8d2fc833", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-1.12.16-3.fc31.aarch64.rpm", + "checksum": "sha256:3a7d7619061a4adb275ef4b41d993375ad7863863741624186add801800e524f", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "21", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-broker-21-6.fc31.aarch64.rpm", + "checksum": "sha256:504971d079493a49afb8fb7f067f5dfcc59f3e007afcc63734c15fe1066e4b4d", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm", + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-libs-1.12.16-3.fc31.aarch64.rpm", + "checksum": "sha256:8fd19268d460d7f49f3dd96644a2b8a3076a7a7ccbe3e35e27eeafc6ab8d9c95", + "check_gpg": true + }, + { + "name": "dconf", + "epoch": 0, + "version": "0.34.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dconf-0.34.0-1.fc31.aarch64.rpm", + "checksum": "sha256:0458f6a42cd644322b6eb24b01f0f75de47d5e10ae077797dfada1ce2a1f7fcd", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/deltarpm-3.6.2-2.fc31.aarch64.rpm", + "checksum": "sha256:4bb03b2162523fa694e0e44f46b04263ff0f5dab22c3e93124ec9b5650af2002", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/device-mapper-1.02.163-2.fc31.aarch64.rpm", + "checksum": "sha256:e7e629e7e89f970660407fb22c8b706c4c9a65a5f43286ddeef1e165b446fcaa", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.aarch64.rpm", + "checksum": "sha256:30e07680d23bfb5d4b2727893337619c56f13b46daec2f13f8985f642bf84250", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/diffutils-3.7-3.fc31.aarch64.rpm", + "checksum": "sha256:a00e85fb7902d8869492e32816c7834830682745eeab1efba264bdd3185f479d", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "9.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dosfstools-4.1-9.fc31.aarch64.rpm", + "checksum": "sha256:c36dd24858c4e8d207eb0f87af16e4c599a16bb981416d47db467b70a841fe08", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.aarch64.rpm", + "checksum": "sha256:ec305ea347ab987f5a00574bc3eaebaf2412483ed1b79615fdd86ca18ab146bc", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.aarch64.rpm", + "checksum": "sha256:2dd8505a96714cdb79829a1377e36a53e05cc9b65a7f35a258ca3e4aaa76c700", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm", + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-libelf-0.177-1.fc31.aarch64.rpm", + "checksum": "sha256:00e59535d45094b7d47e25c93d21179f3138839968776107df99fa0678f1440f", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-libs-0.177-1.fc31.aarch64.rpm", + "checksum": "sha256:fe6afcdab2793cd75a838a758a282d4581f1272f3f32df6a58777c0721e54b2e", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/expat-2.2.8-1.fc31.aarch64.rpm", + "checksum": "sha256:5745966147d1651d663d9e7d37a740ebbb4daee49b5cb7a2e61375ea6b37404e", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm", + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-release-31-1.noarch.rpm", + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-release-common-31-1.noarch.rpm", + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-repos-31-1.noarch.rpm", + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/file-libs-5.37-3.fc31.aarch64.rpm", + "checksum": "sha256:f63c88d8b294addf2791a5b291e3ab13750a24fe92fec65c96d365edad767f57", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.12", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/filesystem-3.12-2.fc31.aarch64.rpm", + "checksum": "sha256:a108fbc1ba9886604483ec05ef2150c961adb0906db5f9ea46c239bfcdf06b55", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fipscheck-1.5.0-7.fc31.aarch64.rpm", + "checksum": "sha256:0edff1a5f04f7f5d47537b4c049b95331f9ad33963c9c63ca4b13345a37296d4", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.aarch64.rpm", + "checksum": "sha256:81100039c817e2f3703fb365c63d6d891f3f977dd9e670c3c9b12662de3c255b", + "check_gpg": true + }, + { + "name": "fontconfig", + "epoch": 0, + "version": "2.13.92", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fontconfig-2.13.92-3.fc31.aarch64.rpm", + "checksum": "sha256:e30906c30d3dea50c62e74bc7aa870eb928af4c6fb474c894f55ef6ba41f5841", + "check_gpg": true + }, + { + "name": "fontpackages-filesystem", + "epoch": 0, + "version": "1.44", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm", + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.10.0", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/freetype-2.10.0-3.fc31.aarch64.rpm", + "checksum": "sha256:72bc6a2b459ee27dcd7c213d3aab5a993fc90fcffba2ef02fab7ae3857d379f7", + "check_gpg": true + }, + { + "name": "fribidi", + "epoch": 0, + "version": "1.0.5", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fribidi-1.0.5-4.fc31.aarch64.rpm", + "checksum": "sha256:8c4b392a5e1ed79b7a5b302d8fb14d0470b3a6306a7b36aee275acf0daa61537", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fuse-libs-2.9.9-8.fc31.aarch64.rpm", + "checksum": "sha256:7f23849dcd356019c4e83058e9e49d544300ad7b9a6f6a7528831e393ca1197c", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gawk-5.0.1-5.fc31.aarch64.rpm", + "checksum": "sha256:e6a986f10b17ba67e86c417251d855e1eeac0ca1c85c2ee7ae3bfc7d6c966087", + "check_gpg": true + }, + { + "name": "gcr", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gcr-3.33.4-1.fc31.aarch64.rpm", + "checksum": "sha256:3b16753c7590bc968a693e97ce9d318d58e1483fd2999a874becd95abc9d35ff", + "check_gpg": true + }, + { + "name": "gcr-base", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gcr-base-3.33.4-1.fc31.aarch64.rpm", + "checksum": "sha256:9404d90bbb474b30b80c90719df01d784b925127e9710f12c44c72d14c2708fc", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.aarch64.rpm", + "checksum": "sha256:f74b53f33812f65d12377946d363a773e48cf6bc6c4bb2acec5bb4a048861b88", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.aarch64.rpm", + "checksum": "sha256:6e78ce3d460b7e1377f487fed5563999fb44d310c441798a4d23d34960e23d45", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2-modules", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.aarch64.rpm", + "checksum": "sha256:b3d8740cee57c5025ef88e9d71df141a6600fdf26215969acae393a2b052892d", + "check_gpg": true + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glib-networking-2.62.1-1.fc31.aarch64.rpm", + "checksum": "sha256:c84f89f65e2a691d7fcbc7021c3c5d796e0f39483e3fe95e83579c630575b78a", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glib2-2.62.1-1.fc31.aarch64.rpm", + "checksum": "sha256:f3d5fd211e3faf1b61be64fd3f1659dd640a873c66747a5cc341f888e4179dea", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-2.30-5.fc31.aarch64.rpm", + "checksum": "sha256:abf022d05aa55e7aa8d0736b899d86613d30a7e1751b04666920f367d4311a1a", + "check_gpg": true + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-all-langpacks-2.30-5.fc31.aarch64.rpm", + "checksum": "sha256:28cdab6faa95e1d7d1c32d977627ef5a86b262e2b0e20e76ddd73f598ee126e4", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-common-2.30-5.fc31.aarch64.rpm", + "checksum": "sha256:e3046e1e508453e332277ab86ebf67df0106edca2c6e8e54ba2bffb76f9ed4d7", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gmp-6.1.2-10.fc31.aarch64.rpm", + "checksum": "sha256:b9ad5c82b3b83871269ee705ee12896efd1e3485b0d2005c9cff2a100100cd34", + "check_gpg": true + }, + { + "name": "gnome-keyring", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.aarch64.rpm", + "checksum": "sha256:81f5b3786ab1b634016c0c066379dda739386b4b1d639111b4575748e27caa56", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnupg2-2.2.17-2.fc31.aarch64.rpm", + "checksum": "sha256:12c732f4a960848bd4fbc8111c2c0cf584799b1fdf0eb89c2cdcb26da5bc03b8", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.aarch64.rpm", + "checksum": "sha256:0a4100f50b31df500afc5d255dd87117553df7032447f3e226196fd64f9c3f47", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.10", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnutls-3.6.10-1.fc31.aarch64.rpm", + "checksum": "sha256:8e10cf2b0645e342b001338a4463c5a02a8a302c25affba37da700a987e2c064", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gpgme-1.13.1-3.fc31.aarch64.rpm", + "checksum": "sha256:4290088d905017724f6c909cb1b3193055a6aff62cd20e39ea196694f90753c8", + "check_gpg": true + }, + { + "name": "graphite2", + "epoch": 0, + "version": "1.3.13", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/graphite2-1.3.13-1.fc31.aarch64.rpm", + "checksum": "sha256:0cb1a66cb3bb44797a8aeb47db85db1f6c0fcf4d4571d8a5f8981f83b51c08af", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grep-3.3-3.fc31.aarch64.rpm", + "checksum": "sha256:7102de1c840d5b915a40fde5c408f182d677ecdd5126dedf033ebb63b5419607", + "check_gpg": true + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.aarch64.rpm", + "checksum": "sha256:82bc08ef5d8049d3d07a5eb00f61d3f94d7577ef814f6791352f75835bff477a", + "check_gpg": true + }, + { + "name": "gtk-update-icon-cache", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.aarch64.rpm", + "checksum": "sha256:0064998ad79a6250297b379852b5a06932d8e074270bea02d75888758755bd23", + "check_gpg": true + }, + { + "name": "gtk3", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gtk3-3.24.12-3.fc31.aarch64.rpm", + "checksum": "sha256:6b11c1e14d4a02edf8beee776f9f896729bd0f28c66cb4c1d2bd021cdffc6aa0", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gzip-1.10-1.fc31.aarch64.rpm", + "checksum": "sha256:4de89d25d09c57b09a51ab93fdf84ade211e835c16d3ba6e4e261dcc0c4e50a1", + "check_gpg": true + }, + { + "name": "harfbuzz", + "epoch": 0, + "version": "2.6.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/harfbuzz-2.6.1-2.fc31.aarch64.rpm", + "checksum": "sha256:3ad68b7569e311a1ca7da4da7b42021a7acb001ab4b2cc6e63b3ba0f87cbd55c", + "check_gpg": true + }, + { + "name": "hicolor-icon-theme", + "epoch": 0, + "version": "0.17", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm", + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.aarch64.rpm", + "checksum": "sha256:c935f74584d7289ca58d1b23cbdacd38450d351dbc3dcd0bc713723c4d50a545", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.3", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iptables-libs-1.8.3-5.fc31.aarch64.rpm", + "checksum": "sha256:d6b491f91a567b4245d07d28a0547cb1b8e97a1f814e3f7d76dd685bb6658b64", + "check_gpg": true + }, + { + "name": "jasper-libs", + "epoch": 0, + "version": "2.0.14", + "release": "9.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/jasper-libs-2.0.14-9.fc31.aarch64.rpm", + "checksum": "sha256:ea35fa3f5c16e074a59d66ff9037e48ca7c0126444e09daf640b7a37dacd76ad", + "check_gpg": true + }, + { + "name": "jbigkit-libs", + "epoch": 0, + "version": "2.1", + "release": "17.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/jbigkit-libs-2.1-17.fc31.aarch64.rpm", + "checksum": "sha256:4549e51322d0b10016f1daa8dedc807fddf7d2d4e77719baa696de15b88821bb", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/json-c-0.13.1-6.fc31.aarch64.rpm", + "checksum": "sha256:fd9ac175e5af929bb942528904d6e6e48caed800e22a7a45825d535bdc1537ba", + "check_gpg": true + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/json-glib-1.4.4-3.fc31.aarch64.rpm", + "checksum": "sha256:fb2b070b96ed58a31da7889452ce3cdbfb60f6161a3e2f0ce2738b4d3facfd2d", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/keyutils-libs-1.6-3.fc31.aarch64.rpm", + "checksum": "sha256:3975c15d461cebe50d1f179fb86d288c18f643c32f179bbab13425596ab64001", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kmod-libs-26-4.fc31.aarch64.rpm", + "checksum": "sha256:c68bed5b576d7baa67a59c726d2340f7c0df7e9b93f90b3a22d3f62e9f99456a", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.17", + "release": "45.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/krb5-libs-1.17-45.fc31.aarch64.rpm", + "checksum": "sha256:7d0ec23fb8dab882db8b7ec9a9cbb2728d6df2af5c02ee06cc6fa357f210ff09", + "check_gpg": true + }, + { + "name": "lcms2", + "epoch": 0, + "version": "2.9", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lcms2-2.9-6.fc31.aarch64.rpm", + "checksum": "sha256:cddb050897cd8666090b172711fb7947b3bf844f5a190f8c689fd79a222e1761", + "check_gpg": true + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libX11-1.6.8-3.fc31.aarch64.rpm", + "checksum": "sha256:01ea4ecad746f1309b5c943f2b2709f7e5400d33e4d51c85401205ed18d61621", + "check_gpg": true + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm", + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXau-1.0.9-2.fc31.aarch64.rpm", + "checksum": "sha256:59f289c6f3b0180ae3eddaa974e2f972bf15c48135a2abed9eb2f72dfdae1be4", + "check_gpg": true + }, + { + "name": "libXcomposite", + "epoch": 0, + "version": "0.4.4", + "release": "17.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXcomposite-0.4.4-17.fc31.aarch64.rpm", + "checksum": "sha256:159972ccc01cd5840c2aad04818efc965b64c5120b1fcce92a47f45ab1abf4a5", + "check_gpg": true + }, + { + "name": "libXcursor", + "epoch": 0, + "version": "1.1.15", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXcursor-1.1.15-6.fc31.aarch64.rpm", + "checksum": "sha256:46b0c36e90fd16371444eb5376fc01232b6e64073e42ed1f141344a9aadbe568", + "check_gpg": true + }, + { + "name": "libXdamage", + "epoch": 0, + "version": "1.1.4", + "release": "17.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXdamage-1.1.4-17.fc31.aarch64.rpm", + "checksum": "sha256:f7954ba55d833c6341ec87b0cf57817084c705673b8b50aff3e3606fcbdcfbb5", + "check_gpg": true + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXext-1.3.4-2.fc31.aarch64.rpm", + "checksum": "sha256:58c8a3d4ac7c8c318b5596b192dbd0350a1122983b69bfc1cb5eb3ecec5b7cf6", + "check_gpg": true + }, + { + "name": "libXfixes", + "epoch": 0, + "version": "5.0.3", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXfixes-5.0.3-10.fc31.aarch64.rpm", + "checksum": "sha256:500d0a1b49962ec79ca00224528d6e599d3845eb60b8b13a678d03edfaa755ec", + "check_gpg": true + }, + { + "name": "libXft", + "epoch": 0, + "version": "2.3.3", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXft-2.3.3-2.fc31.aarch64.rpm", + "checksum": "sha256:4c55460197fe24d0a105e3071824a933069e0b655910fd7ee7335e2396de15dc", + "check_gpg": true + }, + { + "name": "libXi", + "epoch": 0, + "version": "1.7.10", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXi-1.7.10-2.fc31.aarch64.rpm", + "checksum": "sha256:2aafea82072ad28a8b662e32902f66b47166a00b5c9cf19b1dd589f39776560f", + "check_gpg": true + }, + { + "name": "libXinerama", + "epoch": 0, + "version": "1.1.4", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXinerama-1.1.4-4.fc31.aarch64.rpm", + "checksum": "sha256:9ac1ef0ef80d7ff65903120f8b2a5a2a5723dce7c9c131e17cea3572cb81d0f4", + "check_gpg": true + }, + { + "name": "libXrandr", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXrandr-1.5.2-2.fc31.aarch64.rpm", + "checksum": "sha256:0f661b922a9e9cbe82e948ec1d83c6fca6e61e08de50815a5b6c069a64f4e883", + "check_gpg": true + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXrender-0.9.10-10.fc31.aarch64.rpm", + "checksum": "sha256:ec48b0cd759656b4c5d8d13dcc81c6fa23914f8e214b4cda1ed08e1896177fe9", + "check_gpg": true + }, + { + "name": "libXtst", + "epoch": 0, + "version": "1.2.3", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXtst-1.2.3-10.fc31.aarch64.rpm", + "checksum": "sha256:03b9d49b78b7e758eecce6a25782767ec5dc921d28f053b17a651b1c8bb96d7b", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libacl-2.2.53-4.fc31.aarch64.rpm", + "checksum": "sha256:a96e76f00865249f70a3f2ef293946e9786150faa83e37185e61592290817cb4", + "check_gpg": true + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.111", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libaio-0.3.111-6.fc31.aarch64.rpm", + "checksum": "sha256:d22fbf5e32d176db1414b0854c78f0ea1b5f489a83490ee4e3f67bc5e98905af", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libarchive-3.4.0-1.fc31.aarch64.rpm", + "checksum": "sha256:2fc552b80866318c0ac934f5385fd2090743701639c318b75138ae985ff5606a", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libargon2-20171227-3.fc31.aarch64.rpm", + "checksum": "sha256:d877864e501fe38a1b0c7e11572e61c5d9eb9857436541f1c2d5ad2f8bd29b83", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libassuan-2.5.3-2.fc31.aarch64.rpm", + "checksum": "sha256:64b0063f6b3a42b712c0ee622328e36ddf94a15da547e3c8da3a4191e0941c92", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "7.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libattr-2.4.48-7.fc31.aarch64.rpm", + "checksum": "sha256:99a6e2861b7eb51684d1b83901a7e54caf649b711556a660d93bfef114eab72c", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libblkid-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:5e2a37ee7e1147a446be67d63b1be55f2e82c0ae0a84dd1afc6a3fec64e62804", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcap-2.26-6.fc31.aarch64.rpm", + "checksum": "sha256:566a389a620f634ab341a9a39cffdb1c607b4682224cf3d5ac530b6c57c78d0f", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcap-ng-0.7.9-8.fc31.aarch64.rpm", + "checksum": "sha256:4e365f48d5c85b82f71e8d000d00cdf7ed3c23cd94c31fbf3543572413541c3d", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcom_err-1.45.3-1.fc31.aarch64.rpm", + "checksum": "sha256:98d811216e2e0e4ad49925489824210fc3e9b57bb09eefcd4047886375d34f57", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcomps-0.1.11-3.fc31.aarch64.rpm", + "checksum": "sha256:a63ae4aa727a4b75b602a67f1e42946e39dc124e9f1aeb3e795af40ad4e15cbf", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcurl-7.66.0-1.fc31.aarch64.rpm", + "checksum": "sha256:898a918a7adfefc3ce13d10b30b2ec7ccada96155afa15ee3f4e589b3f1baa38", + "check_gpg": true + }, + { + "name": "libdatrie", + "epoch": 0, + "version": "0.2.9", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdatrie-0.2.9-10.fc31.aarch64.rpm", + "checksum": "sha256:04826477197ec239d756f81cb6d38fde2f65e71499a8dbaf0c666d93084f1ea3", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdb-5.3.28-38.fc31.aarch64.rpm", + "checksum": "sha256:1738cf24111bcd0bff08880c4d5efa624c09a2080c901f67ab032ed201a8751e", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdb-utils-5.3.28-38.fc31.aarch64.rpm", + "checksum": "sha256:5ef4f8487a78a43f7502c055ac77c047ce159da5641e5b61c2669395ae1efe62", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdnf-0.35.3-6.fc31.aarch64.rpm", + "checksum": "sha256:6bc6909c53c0eb2bad7640b3fb79da5cacf5fd8951dee08347b8d18df1b004f8", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "28.20190324cvs.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.aarch64.rpm", + "checksum": "sha256:3976706367650c755852d995bbe8c4e6bbd13b6e8e0148b7beddb4aba3679d8a", + "check_gpg": true + }, + { + "name": "libepoxy", + "epoch": 0, + "version": "1.5.3", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libepoxy-1.5.3-4.fc31.aarch64.rpm", + "checksum": "sha256:5b75073853ff34026cf180d7466314783a7a81defaa43e6b7416a38d9f19230b", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "7.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libevent-2.1.8-7.fc31.aarch64.rpm", + "checksum": "sha256:2575f8d1fb953934730b9fe6803bf3de12669dcee78852057ea4e88f9d4d76a4", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libfdisk-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:e8a13bb46e5149142a1e0a359460c1c65b2cbcbff20f2d0c50f9adbad57538a1", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "23.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libffi-3.1-23.fc31.aarch64.rpm", + "checksum": "sha256:b9b609d17e9274c1551ac6ebab4b53f6e4a5ae9253db5465c65fdb8c919a09dd", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgcc-9.2.1-1.fc31.aarch64.rpm", + "checksum": "sha256:be8bf30729c71aabe30f2c4cf8e5c43ce3cdf892c218fadf53c0af29a76fd6b3", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgcrypt-1.8.5-1.fc31.aarch64.rpm", + "checksum": "sha256:d2f7d49bd565c2fec4ca945ae97ac3b8a607f114d3a7558b90b2caaa5871459b", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgomp-9.2.1-1.fc31.aarch64.rpm", + "checksum": "sha256:6b2e3b36c2a3e988f40548688b32ef3ce2e4c7906127215c82736189684a95a6", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgpg-error-1.36-2.fc31.aarch64.rpm", + "checksum": "sha256:0b2a6b7e3b62ff9c02ec3012f08fbf396a7990bf9599b49b75eecbee3b257f7f", + "check_gpg": true + }, + { + "name": "libgusb", + "epoch": 0, + "version": "0.3.0", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgusb-0.3.0-5.fc31.aarch64.rpm", + "checksum": "sha256:e1e5250ea932beac32caf373ae55b4655c50ae8a1bd9d42e3ceac590a13031ef", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libidn2-2.2.0-2.fc31.aarch64.rpm", + "checksum": "sha256:c6ffcbd829ea30ef40fa61095cef03f2b6eafa3228187a478d6d027911f12e2f", + "check_gpg": true + }, + { + "name": "libjpeg-turbo", + "epoch": 0, + "version": "2.0.2", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.aarch64.rpm", + "checksum": "sha256:618e9a7e3f1f8191beee70d3ad1c8754870887d251480e7e6dd1f3de2d8226d1", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libksba-1.3.5-10.fc31.aarch64.rpm", + "checksum": "sha256:575640462a8c2d0687ea225cc7b6bbf7aa0814e311619ddf6cd16e1bc22f9513", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "9.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmetalink-0.1.3-9.fc31.aarch64.rpm", + "checksum": "sha256:d287bfdcebb9fbb31d5f58cc71311f48a85970d0fd92f5beb0193270c155faac", + "check_gpg": true + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "20.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmodman-2.0.1-20.fc31.aarch64.rpm", + "checksum": "sha256:a5fa076ed2c83974cacf4ce386bfdc576ce532fba4f8645dda5c2b67efc5d501", + "check_gpg": true + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.15", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.aarch64.rpm", + "checksum": "sha256:e9c7f59547a9eec5304db7a312b435592f07f7aee4f3db617e5ddfac0f4d048c", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmount-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:429cf175b6c3b2bedcabf3391ad3166fe6e62259877f309e57500d2c7f1f1882", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.39.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnghttp2-1.39.2-1.fc31.aarch64.rpm", + "checksum": "sha256:56f3d59b74bf8ceafea695d10fb7ad4672ec93f824ef9b0508c7bcdedeffb101", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "5.20180605git4a062cf.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.aarch64.rpm", + "checksum": "sha256:8d21bbf2063bb50cf3d12281731fbd8b26dece5f154d7a50f0952695fea6751f", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.0", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpcap-1.9.0-4.fc31.aarch64.rpm", + "checksum": "sha256:fb6b61cabfce21597c33c62743c13dd96bcea39aa806a144bc2b2665b48273a8", + "check_gpg": true + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.37", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpng-1.6.37-2.fc31.aarch64.rpm", + "checksum": "sha256:77ff28552aba96ce4b80d51a9c390ef4958afad18ede879bf31022f2509e2d90", + "check_gpg": true + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "14.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libproxy-0.4.15-14.fc31.aarch64.rpm", + "checksum": "sha256:c599ffa97fde329ff872bd6db99e8c218601df6549302f89ff747d34ca24042c", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpsl-0.21.0-2.fc31.aarch64.rpm", + "checksum": "sha256:816fe17af41a66dd718eb247273be824b75f53fb539455b58b892528ca12cde5", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpwquality-1.4.1-1.fc31.aarch64.rpm", + "checksum": "sha256:20cc74172d531506391309e8f82c6512404ada35f22c68fcd0b83a01dc6e0ca8", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.10.5", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/librepo-1.10.5-1.fc31.aarch64.rpm", + "checksum": "sha256:4f37b1e322e3001b076e0128541cc82c180d7054b1c0b7200f46fda4d654cd71", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.10.1", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm", + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libseccomp-2.4.1-1.fc31.aarch64.rpm", + "checksum": "sha256:7623bcecb8340ed57e1aa2951b13a1c5b1dfefa80eb226f269294df29cb40c08", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.19.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsecret-0.19.1-1.fc31.aarch64.rpm", + "checksum": "sha256:d1520137d9cb96cd10a63893b45b4794b120502bdbab0862e001ac2486195aa6", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libselinux-2.9-5.fc31.aarch64.rpm", + "checksum": "sha256:0c49f27ae0aaf95fbdc52cfb9406c41eefff41b205f85fdc6ef6787ec3af5146", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libselinux-utils-2.9-5.fc31.aarch64.rpm", + "checksum": "sha256:e78343046ae389b1c11d36f8de0b8bfbb9ded7bdc39fb52b3f719a39047bf42a", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsemanage-2.9-3.fc31.aarch64.rpm", + "checksum": "sha256:36ce07aa1f90dfdf5ae9824acff24fc3aafe5633b07a022732ca06258e0255b6", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsepol-2.9-2.fc31.aarch64.rpm", + "checksum": "sha256:e1deab5e887a199233f9a439d2d20d864d434e9a4ac7fe460f230d368fb3779f", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsigsegv-2.11-8.fc31.aarch64.rpm", + "checksum": "sha256:11e8ee935d9c9d349f4c081d035fc4ee34539af23ef8122e6901b22cf97f346f", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsmartcols-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:768cc2c561bd6476df45fbd9280bbaeb87d2addcd0c51601d2226a590d7dc872", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.5", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsolv-0.7.5-3.fc31.aarch64.rpm", + "checksum": "sha256:82cc8c43bfe0e731ec78e31c8af6250ec1f13989978105a1b38d518470cf5bde", + "check_gpg": true + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.68.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsoup-2.68.2-1.fc31.aarch64.rpm", + "checksum": "sha256:c1590c5cdfc7aad868c75c54c11a2c7d692001f758ead33aa10f9838955148c4", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libss-1.45.3-1.fc31.aarch64.rpm", + "checksum": "sha256:c6de19d0d4b8f67957ca6122462090895034495852814f36396bc134905f5f5e", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libssh-0.9.0-6.fc31.aarch64.rpm", + "checksum": "sha256:51f15beba5e5bfc6ff646741b3fbaa3a484ebb40fd8c6c59b8f1f6346dd93e93", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm", + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libstdc++-9.2.1-1.fc31.aarch64.rpm", + "checksum": "sha256:5a32c492b921e9287422006f255833605b328f3efd071609673be161bb4e7f04", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.14", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtasn1-4.14-2.fc31.aarch64.rpm", + "checksum": "sha256:23e8c23c89737665a5288a3a171548e94898be9ed4a24c056d8bc851c6800090", + "check_gpg": true + }, + { + "name": "libthai", + "epoch": 0, + "version": "0.1.28", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libthai-0.1.28-3.fc31.aarch64.rpm", + "checksum": "sha256:b04fecd603225051ca56c6674cb72f12f4de0cc1cbbfda0ab7d0af0e655b2c99", + "check_gpg": true + }, + { + "name": "libtiff", + "epoch": 0, + "version": "4.0.10", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtiff-4.0.10-6.fc31.aarch64.rpm", + "checksum": "sha256:57bd1ce5d776daca117795bc8e3852f1d29a6fc3fc1edd21729d161de2d7798d", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "2.rc3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.aarch64.rpm", + "checksum": "sha256:14a759b4daf287d66f5b803b0fbb52621f8429607be109e5d3c313a57cc276e2", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libunistring-0.9.10-6.fc31.aarch64.rpm", + "checksum": "sha256:2b24b5729cd74e3b1efe261bfd732fd1995b0e64d76587a3d90762d77cc58c77", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.22", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libusbx-1.0.22-4.fc31.aarch64.rpm", + "checksum": "sha256:c80fbc5228457b9b1978b098f47d2a66ca5636526965847078edb6f1c302e392", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "17.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libutempter-1.1.6-17.fc31.aarch64.rpm", + "checksum": "sha256:ea68ed6fc06f142c95e907b619a9696146dff1bba308773df12e412d8277eec0", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libuuid-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:7027d2c6a004469720e3c64eb7fcb2ace1fffd61ec4380afbf875d59a3876f3a", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libverto-0.3.0-8.fc31.aarch64.rpm", + "checksum": "sha256:af589a85af85270c027bacb5ccaf88c93378d364a7c1436ee7bca1290cf762f7", + "check_gpg": true + }, + { + "name": "libwayland-client", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-client-1.17.0-2.fc31.aarch64.rpm", + "checksum": "sha256:1472adb267192ca8a323e544fd9749c4765334fc5779e8de4ee583eff77fc078", + "check_gpg": true + }, + { + "name": "libwayland-cursor", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.aarch64.rpm", + "checksum": "sha256:f34cde4c2bd6ab93a697d8c350e98f4d70f897f74fee35a06c25eb4b98f46c9a", + "check_gpg": true + }, + { + "name": "libwayland-egl", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.aarch64.rpm", + "checksum": "sha256:aa3658efc21bcc6d79344eeeaf20285407f6f3b90d905a66a37a8cfc835b2a61", + "check_gpg": true + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxcb-1.13.1-3.fc31.aarch64.rpm", + "checksum": "sha256:a2f6ae2742a2aac3f5bb5f1ad5cfa4d9b8fdf7cfd01033246027db7064abaa1f", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxcrypt-4.4.10-1.fc31.aarch64.rpm", + "checksum": "sha256:e35e30f6477652a93d3c02ec86faa233884aefb2ff9fcf4058909d9736fb2d15", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.8.4", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.aarch64.rpm", + "checksum": "sha256:57a9aff6b8d5ecdb66015e4dfcec0a171ae18751e1d5f9a339361cc45b9a8e2f", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.9", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxml2-2.9.9-3.fc31.aarch64.rpm", + "checksum": "sha256:7c66a9a33e131200e13a638613ec054a94be901399424df27a0b4f94532ee36d", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libyaml-0.2.2-2.fc31.aarch64.rpm", + "checksum": "sha256:80434d5f64abdd521330153fc0c983c5923a833ab59f57ec3bc3a8cf1d748c8c", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libzstd-1.4.2-1.fc31.aarch64.rpm", + "checksum": "sha256:a39fb89e06572d188309dc4daf1d23e21be190e59f9ef8ff3c3ccceaefe505da", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lua-libs-5.3.5-6.fc31.aarch64.rpm", + "checksum": "sha256:a084b365795c7262fa09b2fc590dfbabbbf30cb9c1c7f9b5274eae4c5d761482", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lz4-libs-1.9.1-1.fc31.aarch64.rpm", + "checksum": "sha256:1c2edf26d16b55bac2824452c1c584ff52acf8477920f384f6019f647c241450", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mkpasswd-5.5.2-1.fc31.aarch64.rpm", + "checksum": "sha256:f8e118c35bb5f8ae3dca517ef38c7a38bbdd491011af9e1c4c5c7523f13e6f9c", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mpfr-3.1.6-5.fc31.aarch64.rpm", + "checksum": "sha256:339895e6b901ff4c81966893ec7da9848da3acea26e5b202033bfb79dfcbb6cb", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-6.1-12.20190803.fc31.aarch64.rpm", + "checksum": "sha256:1d530a23a8ea2b831068593fe6aa7a32923c6276504def5a85ad065aaac9ac5f", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm", + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.aarch64.rpm", + "checksum": "sha256:264828f11342a94f056fb27a2e78fc5e14226230b3dbac8bdad6a4c8598fd24f", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/nettle-3.5.1-3.fc31.aarch64.rpm", + "checksum": "sha256:9c8771c8c5eb38351dd30f994133bc9149ec93813d1a7c2cd2dd8f7dc7431d49", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/npth-1.6-3.fc31.aarch64.rpm", + "checksum": "sha256:f1419585dbb27e3bf76aab5a5f8fb9580816a7a0e7fc93377b97646a0259a794", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openldap-2.4.47-3.fc31.aarch64.rpm", + "checksum": "sha256:d8d28daa56fa4894a767957aa9948cad6d274e2b70d8b10aa69d9356c8a22eff", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssh-8.0p1-8.fc31.1.aarch64.rpm", + "checksum": "sha256:424e1777ae71117d20055ffa5f0ed2ead59a8076528450cf7536e18c70624bd8", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.aarch64.rpm", + "checksum": "sha256:eb35167d6095465a58611b80853213af5838f271b75fa1a5e3c051a04a9078a7", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-1.1.1d-2.fc31.aarch64.rpm", + "checksum": "sha256:54c024db70df7966590050dfc5dcc1315174e10c3a57e118ea10178238d70889", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.aarch64.rpm", + "checksum": "sha256:a7f5877c9ebfb44347765c7deb266e53fdd62403ccc0a7ff17fdb101bc28caff", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.aarch64.rpm", + "checksum": "sha256:dc6b772101df9f3029c2cd80a10663663ad877e129c8d724902f5cc9f1785e60", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.aarch64.rpm", + "checksum": "sha256:6d4c3ae013d07e50d085b3419dfd41ac79ba11ada62d8c4570d21764ef6f11ec", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.aarch64.rpm", + "checksum": "sha256:bf92fc95c282da9c76018679d9180fb6c98aaf864f66bbef630941040579f92b", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "18.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pam-1.3.1-18.fc31.aarch64.rpm", + "checksum": "sha256:eb1992de281538771ba578a65eabe620dc35aef6c621d8c5351a2ba38ac440f4", + "check_gpg": true + }, + { + "name": "pango", + "epoch": 0, + "version": "1.44.6", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pango-1.44.6-1.fc31.aarch64.rpm", + "checksum": "sha256:5ba547e1c2c515b3ca091e04c0a6b15b297e25b567a6613a07bd2bee41f39684", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.43", + "release": "2.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pcre-8.43-2.fc31.1.aarch64.rpm", + "checksum": "sha256:44a92faf198bf015f5e94cf42ae615215fe0a6c0697b1f6c32d205bd450e7ce4", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.33", + "release": "14.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pcre2-10.33-14.fc31.aarch64.rpm", + "checksum": "sha256:b0d153ea83902561a9e60c9c244a497c3b19a9c4e40cf9e8437d0221af0f2ca3", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pinentry-1.1.0-6.fc31.aarch64.rpm", + "checksum": "sha256:ee3977f4ee783225903f964c60932795d8c11307043e73527b394dec02487047", + "check_gpg": true + }, + { + "name": "pixman", + "epoch": 0, + "version": "0.38.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pixman-0.38.4-1.fc31.aarch64.rpm", + "checksum": "sha256:0b8baef3612880639ed59ae79475086aac8ce236fd35977e0d87305d0bb9a529", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/policycoreutils-2.9-5.fc31.aarch64.rpm", + "checksum": "sha256:974bdde5f821c071bcbe0de191677981685cb8290952be75a7ab15747988a99e", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "18.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/popt-1.16-18.fc31.aarch64.rpm", + "checksum": "sha256:d2be7b0f17350a8a0f301617cb1d7b024076bc16986abaab94453ec1cee1f1f2", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm", + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm", + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-3.7.4-5.fc31.aarch64.rpm", + "checksum": "sha256:84365601f93db7fda27e4d89826d4893830572e98df35275abdf15659cfe3fc5", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-gpg-1.13.1-3.fc31.aarch64.rpm", + "checksum": "sha256:d429648fe5b233a46fdbfc31a283ca4b6be5177ae84f3e7e63fec5f9bebd17d1", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.aarch64.rpm", + "checksum": "sha256:edee134762456246cd8de577597e350b60a04bc43ac4a47622b9a263ddd74cf2", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.aarch64.rpm", + "checksum": "sha256:7a5aadb5da769b563cf1e548d8cabd26c00720a67df7e4a445a5a9ae5b0891b8", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.aarch64.rpm", + "checksum": "sha256:436c2f09d2de629da293ab82af47b7697f4a8c151127cbd993d0e8605a4f423c", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libs-3.7.4-5.fc31.aarch64.rpm", + "checksum": "sha256:fe6f4202a8e7e52add27c6d2e2af65884a974bcde4b5e89979badb782719ca1a", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-rpm-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:513e24bc56f483b171664ea4dec51cc0cce1f9cc8f4939cde8a65ea976ed952d", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-unbound-1.9.3-1.fc31.aarch64.rpm", + "checksum": "sha256:b6498a7a8056483e1d42362b1fb27bd6c54ed7cc7bd180cae20d64a13ae4c88c", + "check_gpg": true + }, + { + "name": "qemu-img", + "epoch": 2, + "version": "4.1.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/q/qemu-img-4.1.0-2.fc31.aarch64.rpm", + "checksum": "sha256:64206147fbbabe1e050f17442a2a3d1458b27beea0d8f3ff9e258a2842dd7a01", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.aarch64.rpm", + "checksum": "sha256:5f2bdb8f9a18257ee80a243e1be96e3ef6fa660e37fdf7b4443d8e8f7abf86ef", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/readline-8.0-3.fc31.aarch64.rpm", + "checksum": "sha256:d02489175567be57a48a3edf5deb66d100e99df73a37b26062fea4d6af014cbc", + "check_gpg": true + }, + { + "name": "rest", + "epoch": 0, + "version": "0.8.1", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rest-0.8.1-6.fc31.aarch64.rpm", + "checksum": "sha256:8d00fa6cdfcc955dc4e14d0f8b6ba6217d2dd0334ea0e1aa44694c9e0ad0b06d", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:ae9a3e144f31b6172d266b984c8385fba94bdcf3002d3182a4118f8d29f5f718", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:c958419128c1330b50c741113394b147da1ccda055ab1ee19fabc199f68971ea", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-libs-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:7292bf1d13ef336ef411ef695f87c7c7ecd21a13e05c86cc475930ca61117503", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:d01f7e794c3dd3f38de1b69fd360db4b858826eba4e6fd4edc79c8a74774ab00", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:46acc45e148eea376c3aa8e83a4d3bf1cf66fa35ccc670f592017428ce75ca77", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sed-4.5-4.fc31.aarch64.rpm", + "checksum": "sha256:5d87d829a1d939c520b25f1c790cd1f3bd6c8b769f4f21303ec5e16a3b509445", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.3", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm", + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "16.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/shadow-utils-4.6-16.fc31.aarch64.rpm", + "checksum": "sha256:2ad8824aa48378aa741fbd863104d950ad4f669566af2d4f433be6d9afd8ead6", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.14", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/shared-mime-info-1.14-1.fc31.aarch64.rpm", + "checksum": "sha256:c05d42fba4fc1ebc2df9ee49f971c744937d8b307626c90b3cf79bf91619863a", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.29.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.aarch64.rpm", + "checksum": "sha256:81169dd168c02aed3b1e57e5af16ec3dbdfb74c15373ee40e9eec5aac60a3d25", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-243-4.gitef67743.fc31.aarch64.rpm", + "checksum": "sha256:af594688a568ec4db7dae9d60390dce1ab547527bbf2415752f211de3748b97f", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.aarch64.rpm", + "checksum": "sha256:7487afe052c79100e906a4d2cb2ee1043410ca10a8e60a65d95776f63a513595", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.aarch64.rpm", + "checksum": "sha256:e29356f3ea2554e8be23401a08a941f406d337cf6b38e7ee99926fb9b3f1f541", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm", + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/tar-1.32-2.fc31.aarch64.rpm", + "checksum": "sha256:e0af6b40e51fe0b9f68367355219aa56717888d2a07c10a001cc8667de1a5a2f", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/trousers-0.3.13-13.fc31.aarch64.rpm", + "checksum": "sha256:7bd78cde4202401947dea928274579074bc78fdae096057e788c1b6a86a10ecc", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/trousers-lib-0.3.13-13.fc31.aarch64.rpm", + "checksum": "sha256:6728ee255cb8c80b85f6d610bfd795025939a77d2591ad61fe1c4f9d657c386e", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/tss2-1331-2.fc31.aarch64.rpm", + "checksum": "sha256:42945876fb8932bad3e50b50349af4bdabe713d7be1c8efc1b0f7b042e556aa5", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm", + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/u/unbound-libs-1.9.3-1.fc31.aarch64.rpm", + "checksum": "sha256:acd149c4bf17a15db75fca1f19e34784a9ed275e19c0721aa78f5eb94797a685", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/u/util-linux-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:07cd9ddc7f7a16dc9739647af90706cfbcf70b281f5474e622b0769e211e0dc8", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm", + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.27", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm", + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xz-5.2.4-6.fc31.aarch64.rpm", + "checksum": "sha256:58a44f9472918a511d3eee0b3f08926dab2ebf4994584403bd196e6c92a06f5a", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xz-libs-5.2.4-6.fc31.aarch64.rpm", + "checksum": "sha256:9ed0b44834b6a637c70aa00ab243aecb534f9aea461e1388652ab039898239c8", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.2", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.aarch64.rpm", + "checksum": "sha256:c1893a7c51ebb0371b87e2179d6e0e5d0fbb71acb4234cf4adc293af11c75578", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "19.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/z/zlib-1.2.11-19.fc31.aarch64.rpm", + "checksum": "sha256:f23f467c4099be4cb4dfdc1be13b7a7bb6e8c6da7c21182658a034827b64df39", + "check_gpg": true + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.20.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/NetworkManager-1.20.4-1.fc31.aarch64.rpm", + "checksum": "sha256:b37d963f89a7e0d466e1317da6cd2c20b3ce3ec9789e1027c16176734f88c4fc", + "check_gpg": true + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.20.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/NetworkManager-libnm-1.20.4-1.fc31.aarch64.rpm", + "checksum": "sha256:f195c83de6568cf550a3b2d70725697196c1a9269cddb9b825f5a887de9d6eed", + "check_gpg": true + }, + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.111", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm", + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/acl-2.2.53-4.fc31.aarch64.rpm", + "checksum": "sha256:a516dfa62a327d440fe38b93af81dbecb112fe45fff0f227583c451631479122", + "check_gpg": true + }, + { + "name": "adobe-source-code-pro-fonts", + "epoch": 0, + "version": "2.030.1.050", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm", + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "name": "adwaita-cursor-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "name": "adwaita-icon-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "name": "alsa-lib", + "epoch": 0, + "version": "1.1.9", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/alsa-lib-1.1.9-2.fc31.aarch64.rpm", + "checksum": "sha256:ffdc5423e5f27eabdc75c59f050f75e43bc2aec4f189022f4195e2a3173adbc6", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/alternatives-1.11-5.fc31.aarch64.rpm", + "checksum": "sha256:0b1ddcc8c3096814bc5027133fb077ef587b49a1a4e4d6426327c75cf2066b11", + "check_gpg": true + }, + { + "name": "at-spi2-atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.aarch64.rpm", + "checksum": "sha256:a6caaef9bed1bd17292e1fdde4efee9730f8cff5826a9cb6c952e6f3cd052243", + "check_gpg": true + }, + { + "name": "at-spi2-core", + "epoch": 0, + "version": "2.34.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.aarch64.rpm", + "checksum": "sha256:42a4e01c47e28b71cafb658a5993b7f4b7692ac6b916878d580fecab7ae9d16c", + "check_gpg": true + }, + { + "name": "atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/atk-2.34.1-1.fc31.aarch64.rpm", + "checksum": "sha256:9c08d246ce73d8741777f290e7110ff9dae97a15e09f3469317ed7c8e9fb64ce", + "check_gpg": true + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/audit-3.0-0.12.20190507gitf58ec40.fc31.aarch64.rpm", + "checksum": "sha256:88831a57114969801a557d700451a70337f944b868a3d792d47e6e9e91961f3c", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.aarch64.rpm", + "checksum": "sha256:b25f063f82484e4fa42d1ad31a2cf23e882a99dc1ccb191b24e14a6a789d87a0", + "check_gpg": true + }, + { + "name": "avahi-libs", + "epoch": 0, + "version": "0.7", + "release": "20.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/avahi-libs-0.7-20.fc31.aarch64.rpm", + "checksum": "sha256:71ec6fd79756af905e474553f4ca7ae6985e32615df0ee2f2f487c8496e7160f", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "8.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm", + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.7", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/bash-5.0.7-3.fc31.aarch64.rpm", + "checksum": "sha256:181173a9353f593105978b8e4038b7bf53fd22c63f4514fd271a74d48f9c59f8", + "check_gpg": true + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.7", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/brotli-1.0.7-6.fc31.aarch64.rpm", + "checksum": "sha256:8dbce1e34a19be338f49b792874abc861fd64acc5653f7f5cd523d5e5865897e", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.aarch64.rpm", + "checksum": "sha256:995ee9636461072248d5c6792d3852fb1ab277a622b18eb7d3c231133446dd7d", + "check_gpg": true + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.15.0", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/c-ares-1.15.0-4.fc31.aarch64.rpm", + "checksum": "sha256:1bdeed5fd5907e0cacd5706ebc93ade09462a0c71e2316d9841e33a896b99b87", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm", + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "name": "cairo", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cairo-1.16.0-6.fc31.aarch64.rpm", + "checksum": "sha256:9ffb9a376d1df3d3d394ec2f8533f939547d8ccd634f1f77db52970630215d71", + "check_gpg": true + }, + { + "name": "cairo-gobject", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.aarch64.rpm", + "checksum": "sha256:23908e2eae2ccfd2efb1d19cdf46e3dca4680ac2d562c1c96f7fb0d22859fc82", + "check_gpg": true + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "2.9", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/checkpolicy-2.9-2.fc31.aarch64.rpm", + "checksum": "sha256:089d4c5c48e89cd1444f283571fce20fbf5f1b20f3a5ff1ce74266bbc2cd0fec", + "check_gpg": true + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/chrony-3.5-4.fc31.aarch64.rpm", + "checksum": "sha256:21d9ceffd6fb52d235a95e4d7708d719eac758a9dfd80ba2d6119dfdc46c80ff", + "check_gpg": true + }, + { + "name": "cloud-init", + "epoch": 0, + "version": "17.1", + "release": "11.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cloud-init-17.1-11.fc31.noarch.rpm", + "checksum": "sha256:9cc3e6534ae34343e7e4d056d46b9551da7d0a82c7bad378c3626d4b70d1bf62", + "check_gpg": true + }, + { + "name": "colord-libs", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/colord-libs-1.4.4-2.fc31.aarch64.rpm", + "checksum": "sha256:ffa75117ea710fef320f1ae878e8c81e7a056386dea78aa5787dc091c5a100a5", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/coreutils-8.31-4.fc31.aarch64.rpm", + "checksum": "sha256:0f3591f036f0be85a9d28e9099d43a8b2e5a500a9588825c1dd994d1a323ceba", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/coreutils-common-8.31-4.fc31.aarch64.rpm", + "checksum": "sha256:bb305f3ddc74c4c30ae838a2bbff3cd325eea8427622c7f82e4d06a564bace6f", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "12.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cpio-2.12-12.fc31.aarch64.rpm", + "checksum": "sha256:798376bc628acd54407d945702dce73ab90633919f88fe9b7ecde3f38ebc2fe9", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cracklib-2.9.6-21.fc31.aarch64.rpm", + "checksum": "sha256:1088699171a35873eb5a776f0212ceff2bc9d67e3f1d8f2e107bbf751c36ca90", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.aarch64.rpm", + "checksum": "sha256:99e8930364200470ee5bd065dccb7c4c1caa4863c6f8975740643fe9d2485c18", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20190816", + "release": "4.gitbb9bf99.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm", + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.2.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.aarch64.rpm", + "checksum": "sha256:6e76674266f1e136186e3f005ddbf13791b1fea78cd30e8501f3dd1b209fa9f2", + "check_gpg": true + }, + { + "name": "cups-libs", + "epoch": 1, + "version": "2.2.12", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cups-libs-2.2.12-2.fc31.aarch64.rpm", + "checksum": "sha256:920d2d8df80fb92e358f4925bbd2891977c98e0b9d2f69b44f1e74bec26d6a1e", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/curl-7.66.0-1.fc31.aarch64.rpm", + "checksum": "sha256:9c039f6f6e5385344ea56a6490a472b0f475d8d7612b422191d2152b8e1fc55a", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.aarch64.rpm", + "checksum": "sha256:1b85657077726361a4b157a909796649fe93131fdc4aa67fd5329adc8d2fc833", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-1.12.16-3.fc31.aarch64.rpm", + "checksum": "sha256:3a7d7619061a4adb275ef4b41d993375ad7863863741624186add801800e524f", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "21", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-broker-21-6.fc31.aarch64.rpm", + "checksum": "sha256:504971d079493a49afb8fb7f067f5dfcc59f3e007afcc63734c15fe1066e4b4d", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm", + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-libs-1.12.16-3.fc31.aarch64.rpm", + "checksum": "sha256:8fd19268d460d7f49f3dd96644a2b8a3076a7a7ccbe3e35e27eeafc6ab8d9c95", + "check_gpg": true + }, + { + "name": "dbxtool", + "epoch": 0, + "version": "8", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbxtool-8-10.fc31.aarch64.rpm", + "checksum": "sha256:c0287bc7c1f54bcd19c43904f9a5c7c0cc4c82eae2c455071f6d7ea50714668f", + "check_gpg": true + }, + { + "name": "dconf", + "epoch": 0, + "version": "0.34.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dconf-0.34.0-1.fc31.aarch64.rpm", + "checksum": "sha256:0458f6a42cd644322b6eb24b01f0f75de47d5e10ae077797dfada1ce2a1f7fcd", + "check_gpg": true + }, + { + "name": "dejavu-fonts-common", + "epoch": 0, + "version": "2.37", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dejavu-fonts-common-2.37-2.fc31.noarch.rpm", + "checksum": "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc", + "check_gpg": true + }, + { + "name": "dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dejavu-sans-fonts-2.37-2.fc31.noarch.rpm", + "checksum": "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/deltarpm-3.6.2-2.fc31.aarch64.rpm", + "checksum": "sha256:4bb03b2162523fa694e0e44f46b04263ff0f5dab22c3e93124ec9b5650af2002", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/device-mapper-1.02.163-2.fc31.aarch64.rpm", + "checksum": "sha256:e7e629e7e89f970660407fb22c8b706c4c9a65a5f43286ddeef1e165b446fcaa", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.aarch64.rpm", + "checksum": "sha256:30e07680d23bfb5d4b2727893337619c56f13b46daec2f13f8985f642bf84250", + "check_gpg": true + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.4.1", + "release": "15.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dhcp-client-4.4.1-15.fc31.aarch64.rpm", + "checksum": "sha256:611b0995f8475747341db33373ec0178afcb724183aada71b5d3a2c437d19527", + "check_gpg": true + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.4.1", + "release": "15.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dhcp-common-4.4.1-15.fc31.noarch.rpm", + "checksum": "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/diffutils-3.7-3.fc31.aarch64.rpm", + "checksum": "sha256:a00e85fb7902d8869492e32816c7834830682745eeab1efba264bdd3185f479d", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.9", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dnf-plugins-core-4.0.9-1.fc31.noarch.rpm", + "checksum": "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "27.git20181204.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dracut-049-27.git20181204.fc31.1.aarch64.rpm", + "checksum": "sha256:7ae36bfe222068561cf0259400b54e210ad628aaa66dd4b87e20a2291996c71d", + "check_gpg": true + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "049", + "release": "27.git20181204.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dracut-config-generic-049-27.git20181204.fc31.1.aarch64.rpm", + "checksum": "sha256:f85438d6cb268c431f3aed5c678f1632b56d57393a3eb52e31d75bc6462bc88d", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.aarch64.rpm", + "checksum": "sha256:ec305ea347ab987f5a00574bc3eaebaf2412483ed1b79615fdd86ca18ab146bc", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.aarch64.rpm", + "checksum": "sha256:2dd8505a96714cdb79829a1377e36a53e05cc9b65a7f35a258ca3e4aaa76c700", + "check_gpg": true + }, + { + "name": "ebtables-legacy", + "epoch": 0, + "version": "2.0.10", + "release": "37.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/ebtables-legacy-2.0.10-37.fc31.aarch64.rpm", + "checksum": "sha256:d45b8157ccb1d538f06120150470433ddaa714680e10ffe97bfc5853b5a0321e", + "check_gpg": true + }, + { + "name": "efi-filesystem", + "epoch": 0, + "version": "4", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/efi-filesystem-4-3.fc31.noarch.rpm", + "checksum": "sha256:563f82b7c56043ed5a5ff55dcc643bcc5ac2a1e9ae940481f1c21595a83ba60a", + "check_gpg": true + }, + { + "name": "efibootmgr", + "epoch": 0, + "version": "16", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/efibootmgr-16-6.fc31.aarch64.rpm", + "checksum": "sha256:d96bdfbaba63ac6755a20d8a4d954bc5010695d671ba305a54362c1d3c69fc37", + "check_gpg": true + }, + { + "name": "efivar-libs", + "epoch": 0, + "version": "37", + "release": "1.fc30", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/efivar-libs-37-1.fc30.aarch64.rpm", + "checksum": "sha256:79db5a94baa6acad360b52fdf6d49cf91d7b6290e0d55f457b2820937d2739f4", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm", + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-libelf-0.177-1.fc31.aarch64.rpm", + "checksum": "sha256:00e59535d45094b7d47e25c93d21179f3138839968776107df99fa0678f1440f", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-libs-0.177-1.fc31.aarch64.rpm", + "checksum": "sha256:fe6afcdab2793cd75a838a758a282d4581f1272f3f32df6a58777c0721e54b2e", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/expat-2.2.8-1.fc31.aarch64.rpm", + "checksum": "sha256:5745966147d1651d663d9e7d37a740ebbb4daee49b5cb7a2e61375ea6b37404e", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm", + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-release-31-1.noarch.rpm", + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-release-common-31-1.noarch.rpm", + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-repos-31-1.noarch.rpm", + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/file-5.37-3.fc31.aarch64.rpm", + "checksum": "sha256:f43fa8496a54ad89eef4f48c3813190b5509a21c873bc1d5fcd0dda80ae2b425", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/file-libs-5.37-3.fc31.aarch64.rpm", + "checksum": "sha256:f63c88d8b294addf2791a5b291e3ab13750a24fe92fec65c96d365edad767f57", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.12", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/filesystem-3.12-2.fc31.aarch64.rpm", + "checksum": "sha256:a108fbc1ba9886604483ec05ef2150c961adb0906db5f9ea46c239bfcdf06b55", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "24.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/findutils-4.6.0-24.fc31.aarch64.rpm", + "checksum": "sha256:dcc584a55c425c26a62fe579beead8488589c3892c34e8fab95c7fd7ec1cf6c6", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fipscheck-1.5.0-7.fc31.aarch64.rpm", + "checksum": "sha256:0edff1a5f04f7f5d47537b4c049b95331f9ad33963c9c63ca4b13345a37296d4", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.aarch64.rpm", + "checksum": "sha256:81100039c817e2f3703fb365c63d6d891f3f977dd9e670c3c9b12662de3c255b", + "check_gpg": true + }, + { + "name": "firewalld", + "epoch": 0, + "version": "0.7.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/firewalld-0.7.2-1.fc31.noarch.rpm", + "checksum": "sha256:ab35a2d7f21aac1f33f9521607789e1c303fb63e4ea0681e9f724f86a1cc15c5", + "check_gpg": true + }, + { + "name": "firewalld-filesystem", + "epoch": 0, + "version": "0.7.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/firewalld-filesystem-0.7.2-1.fc31.noarch.rpm", + "checksum": "sha256:e76b3b9d14a0016542f61d0ab2981fbf2d779e522d0c36d9095a1cffecbf9272", + "check_gpg": true + }, + { + "name": "fontconfig", + "epoch": 0, + "version": "2.13.92", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fontconfig-2.13.92-3.fc31.aarch64.rpm", + "checksum": "sha256:e30906c30d3dea50c62e74bc7aa870eb928af4c6fb474c894f55ef6ba41f5841", + "check_gpg": true + }, + { + "name": "fontpackages-filesystem", + "epoch": 0, + "version": "1.44", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm", + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.10.0", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/freetype-2.10.0-3.fc31.aarch64.rpm", + "checksum": "sha256:72bc6a2b459ee27dcd7c213d3aab5a993fc90fcffba2ef02fab7ae3857d379f7", + "check_gpg": true + }, + { + "name": "fribidi", + "epoch": 0, + "version": "1.0.5", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fribidi-1.0.5-4.fc31.aarch64.rpm", + "checksum": "sha256:8c4b392a5e1ed79b7a5b302d8fb14d0470b3a6306a7b36aee275acf0daa61537", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fuse-libs-2.9.9-8.fc31.aarch64.rpm", + "checksum": "sha256:7f23849dcd356019c4e83058e9e49d544300ad7b9a6f6a7528831e393ca1197c", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gawk-5.0.1-5.fc31.aarch64.rpm", + "checksum": "sha256:e6a986f10b17ba67e86c417251d855e1eeac0ca1c85c2ee7ae3bfc7d6c966087", + "check_gpg": true + }, + { + "name": "gcr", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gcr-3.33.4-1.fc31.aarch64.rpm", + "checksum": "sha256:3b16753c7590bc968a693e97ce9d318d58e1483fd2999a874becd95abc9d35ff", + "check_gpg": true + }, + { + "name": "gcr-base", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gcr-base-3.33.4-1.fc31.aarch64.rpm", + "checksum": "sha256:9404d90bbb474b30b80c90719df01d784b925127e9710f12c44c72d14c2708fc", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.aarch64.rpm", + "checksum": "sha256:f74b53f33812f65d12377946d363a773e48cf6bc6c4bb2acec5bb4a048861b88", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.aarch64.rpm", + "checksum": "sha256:6e78ce3d460b7e1377f487fed5563999fb44d310c441798a4d23d34960e23d45", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2-modules", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.aarch64.rpm", + "checksum": "sha256:b3d8740cee57c5025ef88e9d71df141a6600fdf26215969acae393a2b052892d", + "check_gpg": true + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20190806", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/geolite2-city-20190806-1.fc31.noarch.rpm", + "checksum": "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565", + "check_gpg": true + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20190806", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/geolite2-country-20190806-1.fc31.noarch.rpm", + "checksum": "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gettext-0.20.1-2.fc31.aarch64.rpm", + "checksum": "sha256:0064a42567b657d85831ec162a314cd00f7befe48ce634387463754677206c9c", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gettext-libs-0.20.1-2.fc31.aarch64.rpm", + "checksum": "sha256:c8fc5b492af902894b927e79314b52bbdd8e45b2d2018abd8113d8e1807adeca", + "check_gpg": true + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glib-networking-2.62.1-1.fc31.aarch64.rpm", + "checksum": "sha256:c84f89f65e2a691d7fcbc7021c3c5d796e0f39483e3fe95e83579c630575b78a", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glib2-2.62.1-1.fc31.aarch64.rpm", + "checksum": "sha256:f3d5fd211e3faf1b61be64fd3f1659dd640a873c66747a5cc341f888e4179dea", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-2.30-5.fc31.aarch64.rpm", + "checksum": "sha256:abf022d05aa55e7aa8d0736b899d86613d30a7e1751b04666920f367d4311a1a", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-common-2.30-5.fc31.aarch64.rpm", + "checksum": "sha256:e3046e1e508453e332277ab86ebf67df0106edca2c6e8e54ba2bffb76f9ed4d7", + "check_gpg": true + }, + { + "name": "glibc-langpack-en", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-langpack-en-2.30-5.fc31.aarch64.rpm", + "checksum": "sha256:42ae595f75734daaed3430e1117d3cb05bd9a18108506bb9600125693d3d1688", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gmp-6.1.2-10.fc31.aarch64.rpm", + "checksum": "sha256:b9ad5c82b3b83871269ee705ee12896efd1e3485b0d2005c9cff2a100100cd34", + "check_gpg": true + }, + { + "name": "gnome-keyring", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.aarch64.rpm", + "checksum": "sha256:81f5b3786ab1b634016c0c066379dda739386b4b1d639111b4575748e27caa56", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnupg2-2.2.17-2.fc31.aarch64.rpm", + "checksum": "sha256:12c732f4a960848bd4fbc8111c2c0cf584799b1fdf0eb89c2cdcb26da5bc03b8", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.aarch64.rpm", + "checksum": "sha256:0a4100f50b31df500afc5d255dd87117553df7032447f3e226196fd64f9c3f47", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.10", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnutls-3.6.10-1.fc31.aarch64.rpm", + "checksum": "sha256:8e10cf2b0645e342b001338a4463c5a02a8a302c25affba37da700a987e2c064", + "check_gpg": true + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.62.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gobject-introspection-1.62.0-1.fc31.aarch64.rpm", + "checksum": "sha256:ac3230db1dfd77c5a90b1eda2c002e75f6abe1aa2d4416aea12515c956211e4f", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gpgme-1.13.1-3.fc31.aarch64.rpm", + "checksum": "sha256:4290088d905017724f6c909cb1b3193055a6aff62cd20e39ea196694f90753c8", + "check_gpg": true + }, + { + "name": "graphite2", + "epoch": 0, + "version": "1.3.13", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/graphite2-1.3.13-1.fc31.aarch64.rpm", + "checksum": "sha256:0cb1a66cb3bb44797a8aeb47db85db1f6c0fcf4d4571d8a5f8981f83b51c08af", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grep-3.3-3.fc31.aarch64.rpm", + "checksum": "sha256:7102de1c840d5b915a40fde5c408f182d677ecdd5126dedf033ebb63b5419607", + "check_gpg": true + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "20.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/groff-base-1.22.3-20.fc31.aarch64.rpm", + "checksum": "sha256:89a35174435a790c0fbf3bc4306d51c867ecce66fb65bae0e7706a9f8f9a19b3", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-common-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "name": "grub2-efi-aa64", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-efi-aa64-2.02-100.fc31.aarch64.rpm", + "checksum": "sha256:7637132d543741e8c5b581523ca5db24adc6eb6d78530944881c360da694cf15", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-tools-2.02-100.fc31.aarch64.rpm", + "checksum": "sha256:19217c1730a3f16e15eedd95e3f97471097a1bd066f7783fd273cfb392f4042e", + "check_gpg": true + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-tools-extra-2.02-100.fc31.aarch64.rpm", + "checksum": "sha256:af00a0b026235e70f7cb7606166dfcaea0d227a3de70363ff67a644036ed8bfc", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-tools-minimal-2.02-100.fc31.aarch64.rpm", + "checksum": "sha256:ddd0635b899826bed59036ba17f8112c35660b32f3d1639266f5e394166a9dbf", + "check_gpg": true + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.aarch64.rpm", + "checksum": "sha256:82bc08ef5d8049d3d07a5eb00f61d3f94d7577ef814f6791352f75835bff477a", + "check_gpg": true + }, + { + "name": "gtk-update-icon-cache", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.aarch64.rpm", + "checksum": "sha256:0064998ad79a6250297b379852b5a06932d8e074270bea02d75888758755bd23", + "check_gpg": true + }, + { + "name": "gtk3", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gtk3-3.24.12-3.fc31.aarch64.rpm", + "checksum": "sha256:6b11c1e14d4a02edf8beee776f9f896729bd0f28c66cb4c1d2bd021cdffc6aa0", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gzip-1.10-1.fc31.aarch64.rpm", + "checksum": "sha256:4de89d25d09c57b09a51ab93fdf84ade211e835c16d3ba6e4e261dcc0c4e50a1", + "check_gpg": true + }, + { + "name": "harfbuzz", + "epoch": 0, + "version": "2.6.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/harfbuzz-2.6.1-2.fc31.aarch64.rpm", + "checksum": "sha256:3ad68b7569e311a1ca7da4da7b42021a7acb001ab4b2cc6e63b3ba0f87cbd55c", + "check_gpg": true + }, + { + "name": "hicolor-icon-theme", + "epoch": 0, + "version": "0.17", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm", + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.20", + "release": "9.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/hostname-3.20-9.fc31.aarch64.rpm", + "checksum": "sha256:a3be2e9e42d68f5e5e58f1dd86d5b6e4fc1ff91e98f44d26221d6bda38c9f372", + "check_gpg": true + }, + { + "name": "hwdata", + "epoch": 0, + "version": "0.328", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/hwdata-0.328-1.fc31.noarch.rpm", + "checksum": "sha256:dae094845eb669c1e4c6b9719a730ab71561c8bc8e870d30c9ac9f6437fd2d50", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.aarch64.rpm", + "checksum": "sha256:c935f74584d7289ca58d1b23cbdacd38450d351dbc3dcd0bc713723c4d50a545", + "check_gpg": true + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.02", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/initscripts-10.02-2.fc31.aarch64.rpm", + "checksum": "sha256:0b109cfab724680af15e7be85cf9f4f4828cd8290f0aa8fcebcbb14cd176be94", + "check_gpg": true + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.2.5", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/ipcalc-0.2.5-3.fc31.aarch64.rpm", + "checksum": "sha256:3e6b2cfce9c4a62f7cde13bb6ae135d5f6f0d6cb179ab3dbd61ba1533477f257", + "check_gpg": true + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.3.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iproute-5.3.0-1.fc31.aarch64.rpm", + "checksum": "sha256:e9c1fa22b0b6d6b7ac782ba60d4c6a2c747bd683f075720a4d82aec45adbd905", + "check_gpg": true + }, + { + "name": "iproute-tc", + "epoch": 0, + "version": "5.3.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iproute-tc-5.3.0-1.fc31.aarch64.rpm", + "checksum": "sha256:ee2f71a3a318270e9cc55aa9dde8889f2e664fec681f9fd5719361f8e4a1afac", + "check_gpg": true + }, + { + "name": "ipset", + "epoch": 0, + "version": "7.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/ipset-7.3-1.fc31.aarch64.rpm", + "checksum": "sha256:8891f85ba3caf6de4b6b234c6aa7a98d347228937a378d04da7af56556799bd1", + "check_gpg": true + }, + { + "name": "ipset-libs", + "epoch": 0, + "version": "7.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/ipset-libs-7.3-1.fc31.aarch64.rpm", + "checksum": "sha256:f369cbc73e31dbae49565c6acfcc8ce4ea0158d1480121b5c6dcc1d224998a62", + "check_gpg": true + }, + { + "name": "iptables", + "epoch": 0, + "version": "1.8.3", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iptables-1.8.3-5.fc31.aarch64.rpm", + "checksum": "sha256:763bbd8d0e3e80b56041273dd412f0c3708c90cd0affd929d474ae61f7c3798c", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.3", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iptables-libs-1.8.3-5.fc31.aarch64.rpm", + "checksum": "sha256:d6b491f91a567b4245d07d28a0547cb1b8e97a1f814e3f7d76dd685bb6658b64", + "check_gpg": true + }, + { + "name": "iputils", + "epoch": 0, + "version": "20190515", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iputils-20190515-3.fc31.aarch64.rpm", + "checksum": "sha256:7b01a3bf09861003bd9524e9d460ed68b8d2de4233a09f7af731cb07f75ef913", + "check_gpg": true + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.12", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/jansson-2.12-4.fc31.aarch64.rpm", + "checksum": "sha256:1138343dfb107de07f54d4723aee2686fdd1af3e4532d14bd399b9b6b7873040", + "check_gpg": true + }, + { + "name": "jasper-libs", + "epoch": 0, + "version": "2.0.14", + "release": "9.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/jasper-libs-2.0.14-9.fc31.aarch64.rpm", + "checksum": "sha256:ea35fa3f5c16e074a59d66ff9037e48ca7c0126444e09daf640b7a37dacd76ad", + "check_gpg": true + }, + { + "name": "jbigkit-libs", + "epoch": 0, + "version": "2.1", + "release": "17.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/jbigkit-libs-2.1-17.fc31.aarch64.rpm", + "checksum": "sha256:4549e51322d0b10016f1daa8dedc807fddf7d2d4e77719baa696de15b88821bb", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/json-c-0.13.1-6.fc31.aarch64.rpm", + "checksum": "sha256:fd9ac175e5af929bb942528904d6e6e48caed800e22a7a45825d535bdc1537ba", + "check_gpg": true + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/json-glib-1.4.4-3.fc31.aarch64.rpm", + "checksum": "sha256:fb2b070b96ed58a31da7889452ce3cdbfb60f6161a3e2f0ce2738b4d3facfd2d", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kbd-2.0.4-14.fc31.aarch64.rpm", + "checksum": "sha256:03559557dbf64805e44d7e956f6b228c90831766fd1f485eecdfddf7a646a220", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kbd-legacy-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kbd-misc-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "name": "kernel", + "epoch": 0, + "version": "5.3.7", + "release": "301.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kernel-5.3.7-301.fc31.aarch64.rpm", + "checksum": "sha256:26da63b51fc7b85d1a30098bfb9c2fa276b2d2129a28cee8cc80acd2eabe96e0", + "check_gpg": true + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "5.3.7", + "release": "301.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kernel-core-5.3.7-301.fc31.aarch64.rpm", + "checksum": "sha256:9bf695c87aa5acc7695251a4c75c576375c45c5b043af00a7ddf503223030309", + "check_gpg": true + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "5.3.7", + "release": "301.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kernel-modules-5.3.7-301.fc31.aarch64.rpm", + "checksum": "sha256:3d5e22e2c2d20d409cc9a878a88dc088d6f02c81652eb0957f95d1abb185f7b7", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/keyutils-libs-1.6-3.fc31.aarch64.rpm", + "checksum": "sha256:3975c15d461cebe50d1f179fb86d288c18f643c32f179bbab13425596ab64001", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kmod-26-4.fc31.aarch64.rpm", + "checksum": "sha256:e88e27b7ac16c753e20f65cd13ed163019ac702c4195eb75d766acd44cb55263", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kmod-libs-26-4.fc31.aarch64.rpm", + "checksum": "sha256:c68bed5b576d7baa67a59c726d2340f7c0df7e9b93f90b3a22d3f62e9f99456a", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.0", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kpartx-0.8.0-3.fc31.aarch64.rpm", + "checksum": "sha256:e0408a5020069e7a4585e3bb4d1bba1b8bf0afe481ff63b70e2221e9c5464cad", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.17", + "release": "45.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/krb5-libs-1.17-45.fc31.aarch64.rpm", + "checksum": "sha256:7d0ec23fb8dab882db8b7ec9a9cbb2728d6df2af5c02ee06cc6fa357f210ff09", + "check_gpg": true + }, + { + "name": "langpacks-core-en", + "epoch": 0, + "version": "2.0", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/langpacks-core-en-2.0-7.fc31.noarch.rpm", + "checksum": "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552", + "check_gpg": true + }, + { + "name": "langpacks-en", + "epoch": 0, + "version": "2.0", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/langpacks-en-2.0-7.fc31.noarch.rpm", + "checksum": "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b", + "check_gpg": true + }, + { + "name": "lcms2", + "epoch": 0, + "version": "2.9", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lcms2-2.9-6.fc31.aarch64.rpm", + "checksum": "sha256:cddb050897cd8666090b172711fb7947b3bf844f5a190f8c689fd79a222e1761", + "check_gpg": true + }, + { + "name": "less", + "epoch": 0, + "version": "551", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/less-551-2.fc31.aarch64.rpm", + "checksum": "sha256:aeac986c84b8038eccd191310bb09f3d396f7c05171ac0fb8691182918459c90", + "check_gpg": true + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libX11-1.6.8-3.fc31.aarch64.rpm", + "checksum": "sha256:01ea4ecad746f1309b5c943f2b2709f7e5400d33e4d51c85401205ed18d61621", + "check_gpg": true + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm", + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXau-1.0.9-2.fc31.aarch64.rpm", + "checksum": "sha256:59f289c6f3b0180ae3eddaa974e2f972bf15c48135a2abed9eb2f72dfdae1be4", + "check_gpg": true + }, + { + "name": "libXcomposite", + "epoch": 0, + "version": "0.4.4", + "release": "17.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXcomposite-0.4.4-17.fc31.aarch64.rpm", + "checksum": "sha256:159972ccc01cd5840c2aad04818efc965b64c5120b1fcce92a47f45ab1abf4a5", + "check_gpg": true + }, + { + "name": "libXcursor", + "epoch": 0, + "version": "1.1.15", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXcursor-1.1.15-6.fc31.aarch64.rpm", + "checksum": "sha256:46b0c36e90fd16371444eb5376fc01232b6e64073e42ed1f141344a9aadbe568", + "check_gpg": true + }, + { + "name": "libXdamage", + "epoch": 0, + "version": "1.1.4", + "release": "17.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXdamage-1.1.4-17.fc31.aarch64.rpm", + "checksum": "sha256:f7954ba55d833c6341ec87b0cf57817084c705673b8b50aff3e3606fcbdcfbb5", + "check_gpg": true + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXext-1.3.4-2.fc31.aarch64.rpm", + "checksum": "sha256:58c8a3d4ac7c8c318b5596b192dbd0350a1122983b69bfc1cb5eb3ecec5b7cf6", + "check_gpg": true + }, + { + "name": "libXfixes", + "epoch": 0, + "version": "5.0.3", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXfixes-5.0.3-10.fc31.aarch64.rpm", + "checksum": "sha256:500d0a1b49962ec79ca00224528d6e599d3845eb60b8b13a678d03edfaa755ec", + "check_gpg": true + }, + { + "name": "libXft", + "epoch": 0, + "version": "2.3.3", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXft-2.3.3-2.fc31.aarch64.rpm", + "checksum": "sha256:4c55460197fe24d0a105e3071824a933069e0b655910fd7ee7335e2396de15dc", + "check_gpg": true + }, + { + "name": "libXi", + "epoch": 0, + "version": "1.7.10", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXi-1.7.10-2.fc31.aarch64.rpm", + "checksum": "sha256:2aafea82072ad28a8b662e32902f66b47166a00b5c9cf19b1dd589f39776560f", + "check_gpg": true + }, + { + "name": "libXinerama", + "epoch": 0, + "version": "1.1.4", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXinerama-1.1.4-4.fc31.aarch64.rpm", + "checksum": "sha256:9ac1ef0ef80d7ff65903120f8b2a5a2a5723dce7c9c131e17cea3572cb81d0f4", + "check_gpg": true + }, + { + "name": "libXrandr", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXrandr-1.5.2-2.fc31.aarch64.rpm", + "checksum": "sha256:0f661b922a9e9cbe82e948ec1d83c6fca6e61e08de50815a5b6c069a64f4e883", + "check_gpg": true + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXrender-0.9.10-10.fc31.aarch64.rpm", + "checksum": "sha256:ec48b0cd759656b4c5d8d13dcc81c6fa23914f8e214b4cda1ed08e1896177fe9", + "check_gpg": true + }, + { + "name": "libXtst", + "epoch": 0, + "version": "1.2.3", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXtst-1.2.3-10.fc31.aarch64.rpm", + "checksum": "sha256:03b9d49b78b7e758eecce6a25782767ec5dc921d28f053b17a651b1c8bb96d7b", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libacl-2.2.53-4.fc31.aarch64.rpm", + "checksum": "sha256:a96e76f00865249f70a3f2ef293946e9786150faa83e37185e61592290817cb4", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libarchive-3.4.0-1.fc31.aarch64.rpm", + "checksum": "sha256:2fc552b80866318c0ac934f5385fd2090743701639c318b75138ae985ff5606a", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libargon2-20171227-3.fc31.aarch64.rpm", + "checksum": "sha256:d877864e501fe38a1b0c7e11572e61c5d9eb9857436541f1c2d5ad2f8bd29b83", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libassuan-2.5.3-2.fc31.aarch64.rpm", + "checksum": "sha256:64b0063f6b3a42b712c0ee622328e36ddf94a15da547e3c8da3a4191e0941c92", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "7.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libattr-2.4.48-7.fc31.aarch64.rpm", + "checksum": "sha256:99a6e2861b7eb51684d1b83901a7e54caf649b711556a660d93bfef114eab72c", + "check_gpg": true + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "43.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libbasicobjects-0.1.1-43.fc31.aarch64.rpm", + "checksum": "sha256:608a967cbdbad6b7320060e986bf8f8e7f6b61bff5ae6571006397b46a60771c", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libblkid-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:5e2a37ee7e1147a446be67d63b1be55f2e82c0ae0a84dd1afc6a3fec64e62804", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcap-2.26-6.fc31.aarch64.rpm", + "checksum": "sha256:566a389a620f634ab341a9a39cffdb1c607b4682224cf3d5ac530b6c57c78d0f", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcap-ng-0.7.9-8.fc31.aarch64.rpm", + "checksum": "sha256:4e365f48d5c85b82f71e8d000d00cdf7ed3c23cd94c31fbf3543572413541c3d", + "check_gpg": true + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "43.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcollection-0.7.0-43.fc31.aarch64.rpm", + "checksum": "sha256:a61e3fed8d1c860bf09b5ec5586e30b88b1b1dea157cd371def9fcf72e313a3d", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcom_err-1.45.3-1.fc31.aarch64.rpm", + "checksum": "sha256:98d811216e2e0e4ad49925489824210fc3e9b57bb09eefcd4047886375d34f57", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcomps-0.1.11-3.fc31.aarch64.rpm", + "checksum": "sha256:a63ae4aa727a4b75b602a67f1e42946e39dc124e9f1aeb3e795af40ad4e15cbf", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcroco-0.6.13-2.fc31.aarch64.rpm", + "checksum": "sha256:8d17464a13f79b54c8dfe76d716a42d6c875bce408e29344c1ecf916957a649e", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcurl-7.66.0-1.fc31.aarch64.rpm", + "checksum": "sha256:898a918a7adfefc3ce13d10b30b2ec7ccada96155afa15ee3f4e589b3f1baa38", + "check_gpg": true + }, + { + "name": "libdatrie", + "epoch": 0, + "version": "0.2.9", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdatrie-0.2.9-10.fc31.aarch64.rpm", + "checksum": "sha256:04826477197ec239d756f81cb6d38fde2f65e71499a8dbaf0c666d93084f1ea3", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdb-5.3.28-38.fc31.aarch64.rpm", + "checksum": "sha256:1738cf24111bcd0bff08880c4d5efa624c09a2080c901f67ab032ed201a8751e", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdb-utils-5.3.28-38.fc31.aarch64.rpm", + "checksum": "sha256:5ef4f8487a78a43f7502c055ac77c047ce159da5641e5b61c2669395ae1efe62", + "check_gpg": true + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "43.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdhash-0.5.0-43.fc31.aarch64.rpm", + "checksum": "sha256:6f7bd7a58d5aed77bbab94aa38edcbc4cac924d72ab6c72ce718f24b6528e1a5", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdnf-0.35.3-6.fc31.aarch64.rpm", + "checksum": "sha256:6bc6909c53c0eb2bad7640b3fb79da5cacf5fd8951dee08347b8d18df1b004f8", + "check_gpg": true + }, + { + "name": "libdrm", + "epoch": 0, + "version": "2.4.99", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdrm-2.4.99-2.fc31.aarch64.rpm", + "checksum": "sha256:10e99db3c367665147f8a09956719d9fda97af2bc3f6d16294dc01f7955e67ee", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "28.20190324cvs.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.aarch64.rpm", + "checksum": "sha256:3976706367650c755852d995bbe8c4e6bbd13b6e8e0148b7beddb4aba3679d8a", + "check_gpg": true + }, + { + "name": "libepoxy", + "epoch": 0, + "version": "1.5.3", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libepoxy-1.5.3-4.fc31.aarch64.rpm", + "checksum": "sha256:5b75073853ff34026cf180d7466314783a7a81defaa43e6b7416a38d9f19230b", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "7.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libevent-2.1.8-7.fc31.aarch64.rpm", + "checksum": "sha256:2575f8d1fb953934730b9fe6803bf3de12669dcee78852057ea4e88f9d4d76a4", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libfdisk-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:e8a13bb46e5149142a1e0a359460c1c65b2cbcbff20f2d0c50f9adbad57538a1", + "check_gpg": true + }, + { + "name": "libfdt", + "epoch": 0, + "version": "1.5.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libfdt-1.5.1-1.fc31.aarch64.rpm", + "checksum": "sha256:3c19bfb6ec591109d959af7fd588ce02cdd4caf001136ed5839fcac9b11e98ad", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "23.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libffi-3.1-23.fc31.aarch64.rpm", + "checksum": "sha256:b9b609d17e9274c1551ac6ebab4b53f6e4a5ae9253db5465c65fdb8c919a09dd", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgcc-9.2.1-1.fc31.aarch64.rpm", + "checksum": "sha256:be8bf30729c71aabe30f2c4cf8e5c43ce3cdf892c218fadf53c0af29a76fd6b3", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgcrypt-1.8.5-1.fc31.aarch64.rpm", + "checksum": "sha256:d2f7d49bd565c2fec4ca945ae97ac3b8a607f114d3a7558b90b2caaa5871459b", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgomp-9.2.1-1.fc31.aarch64.rpm", + "checksum": "sha256:6b2e3b36c2a3e988f40548688b32ef3ce2e4c7906127215c82736189684a95a6", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgpg-error-1.36-2.fc31.aarch64.rpm", + "checksum": "sha256:0b2a6b7e3b62ff9c02ec3012f08fbf396a7990bf9599b49b75eecbee3b257f7f", + "check_gpg": true + }, + { + "name": "libgusb", + "epoch": 0, + "version": "0.3.0", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgusb-0.3.0-5.fc31.aarch64.rpm", + "checksum": "sha256:e1e5250ea932beac32caf373ae55b4655c50ae8a1bd9d42e3ceac590a13031ef", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libidn2-2.2.0-2.fc31.aarch64.rpm", + "checksum": "sha256:c6ffcbd829ea30ef40fa61095cef03f2b6eafa3228187a478d6d027911f12e2f", + "check_gpg": true + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "43.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libini_config-1.3.1-43.fc31.aarch64.rpm", + "checksum": "sha256:31dacda6745f326be70d854d50ae5d3cd0c9d4f19aeab6b4d09920e1436d8bdc", + "check_gpg": true + }, + { + "name": "libjpeg-turbo", + "epoch": 0, + "version": "2.0.2", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.aarch64.rpm", + "checksum": "sha256:618e9a7e3f1f8191beee70d3ad1c8754870887d251480e7e6dd1f3de2d8226d1", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libkcapi-1.1.5-1.fc31.aarch64.rpm", + "checksum": "sha256:3fb9cec5d598a549e97041993399d49c5943821b1f3441881cf15cb26f38e437", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libkcapi-hmaccalc-1.1.5-1.fc31.aarch64.rpm", + "checksum": "sha256:69f2c758068234b1abc39ffaf94c8825ae4baa9810cc54e5d49a5c891fa98435", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libksba-1.3.5-10.fc31.aarch64.rpm", + "checksum": "sha256:575640462a8c2d0687ea225cc7b6bbf7aa0814e311619ddf6cd16e1bc22f9513", + "check_gpg": true + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.0.7", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libldb-2.0.7-1.fc31.aarch64.rpm", + "checksum": "sha256:d2d3b613de0ecf3ae022e5d5d1576858c91b203af6a52a7a9aa36245f0cdbd05", + "check_gpg": true + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.2.0", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmaxminddb-1.2.0-8.fc31.aarch64.rpm", + "checksum": "sha256:3308454f1353d5aced0a9574bc969ae272923ef1faa425bd9080de6e56e1bcbb", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "9.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmetalink-0.1.3-9.fc31.aarch64.rpm", + "checksum": "sha256:d287bfdcebb9fbb31d5f58cc71311f48a85970d0fd92f5beb0193270c155faac", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmnl-1.0.4-10.fc31.aarch64.rpm", + "checksum": "sha256:ead6cd0d8e509f07e36456aff75eca8433821813d675382d28fe4e7dbecc48dc", + "check_gpg": true + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "20.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmodman-2.0.1-20.fc31.aarch64.rpm", + "checksum": "sha256:a5fa076ed2c83974cacf4ce386bfdc576ce532fba4f8645dda5c2b67efc5d501", + "check_gpg": true + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.15", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.aarch64.rpm", + "checksum": "sha256:e9c7f59547a9eec5304db7a312b435592f07f7aee4f3db617e5ddfac0f4d048c", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmount-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:429cf175b6c3b2bedcabf3391ad3166fe6e62259877f309e57500d2c7f1f1882", + "check_gpg": true + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libndp-1.7-4.fc31.aarch64.rpm", + "checksum": "sha256:311729a146f8833ff882370348d69313322dcf7586b68d5eed192eb633dcd58a", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnetfilter_conntrack-1.0.7-3.fc31.aarch64.rpm", + "checksum": "sha256:ddd9b320e97d333bb4b7ccbdf70e401693065177a7d9317c6d7d1b69318209f7", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "16.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnfnetlink-1.0.1-16.fc31.aarch64.rpm", + "checksum": "sha256:f2471f1b946309f419a2bf1b4b3ad473d53f7ac0ee15b9c2426eb2e6cb4e87c0", + "check_gpg": true + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.4.1", + "release": "1.rc1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnfsidmap-2.4.1-1.rc1.fc31.aarch64.rpm", + "checksum": "sha256:d1ce6a69f0c2d96a97a04036a5c59deda82b5e1b0843c114f0fb896279ec7bbc", + "check_gpg": true + }, + { + "name": "libnftnl", + "epoch": 0, + "version": "1.1.3", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnftnl-1.1.3-2.fc31.aarch64.rpm", + "checksum": "sha256:859b03ef657a7c682ff7f341145a7c2ba9025fd5430f36ecb020eeafc55bba2d", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.39.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnghttp2-1.39.2-1.fc31.aarch64.rpm", + "checksum": "sha256:56f3d59b74bf8ceafea695d10fb7ad4672ec93f824ef9b0508c7bcdedeffb101", + "check_gpg": true + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnl3-3.5.0-1.fc31.aarch64.rpm", + "checksum": "sha256:ee5ed9701778c4cb91af4c2e2ef996b9c178d32b652edf4506394cac72fefb96", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "5.20180605git4a062cf.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.aarch64.rpm", + "checksum": "sha256:8d21bbf2063bb50cf3d12281731fbd8b26dece5f154d7a50f0952695fea6751f", + "check_gpg": true + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "43.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpath_utils-0.2.1-43.fc31.aarch64.rpm", + "checksum": "sha256:f11d53128f33f9e73dc21c01159a283cc3fcd2e39f2712dbfa930018ae67fb69", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.0", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpcap-1.9.0-4.fc31.aarch64.rpm", + "checksum": "sha256:fb6b61cabfce21597c33c62743c13dd96bcea39aa806a144bc2b2665b48273a8", + "check_gpg": true + }, + { + "name": "libpciaccess", + "epoch": 0, + "version": "0.15", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpciaccess-0.15-2.fc31.aarch64.rpm", + "checksum": "sha256:4ad98619490252f1bc7002ce9a4183876650c22a4722089ba4498fb925647601", + "check_gpg": true + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpipeline-1.5.1-3.fc31.aarch64.rpm", + "checksum": "sha256:a40b4873535c2b0b826063e5248981d1ce0d04ef5ec6d9c21facc07ce2446b40", + "check_gpg": true + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.37", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpng-1.6.37-2.fc31.aarch64.rpm", + "checksum": "sha256:77ff28552aba96ce4b80d51a9c390ef4958afad18ede879bf31022f2509e2d90", + "check_gpg": true + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "14.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libproxy-0.4.15-14.fc31.aarch64.rpm", + "checksum": "sha256:c599ffa97fde329ff872bd6db99e8c218601df6549302f89ff747d34ca24042c", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpsl-0.21.0-2.fc31.aarch64.rpm", + "checksum": "sha256:816fe17af41a66dd718eb247273be824b75f53fb539455b58b892528ca12cde5", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpwquality-1.4.1-1.fc31.aarch64.rpm", + "checksum": "sha256:20cc74172d531506391309e8f82c6512404ada35f22c68fcd0b83a01dc6e0ca8", + "check_gpg": true + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "43.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libref_array-0.1.5-43.fc31.aarch64.rpm", + "checksum": "sha256:23e335d288f55da26dc77e0d1ceb7cbe4e3890b4e28ff4a2435fc4481a6e737f", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.10.5", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/librepo-1.10.5-1.fc31.aarch64.rpm", + "checksum": "sha256:4f37b1e322e3001b076e0128541cc82c180d7054b1c0b7200f46fda4d654cd71", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.10.1", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm", + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libseccomp-2.4.1-1.fc31.aarch64.rpm", + "checksum": "sha256:7623bcecb8340ed57e1aa2951b13a1c5b1dfefa80eb226f269294df29cb40c08", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.19.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsecret-0.19.1-1.fc31.aarch64.rpm", + "checksum": "sha256:d1520137d9cb96cd10a63893b45b4794b120502bdbab0862e001ac2486195aa6", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libselinux-2.9-5.fc31.aarch64.rpm", + "checksum": "sha256:0c49f27ae0aaf95fbdc52cfb9406c41eefff41b205f85fdc6ef6787ec3af5146", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libselinux-utils-2.9-5.fc31.aarch64.rpm", + "checksum": "sha256:e78343046ae389b1c11d36f8de0b8bfbb9ded7bdc39fb52b3f719a39047bf42a", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsemanage-2.9-3.fc31.aarch64.rpm", + "checksum": "sha256:36ce07aa1f90dfdf5ae9824acff24fc3aafe5633b07a022732ca06258e0255b6", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsepol-2.9-2.fc31.aarch64.rpm", + "checksum": "sha256:e1deab5e887a199233f9a439d2d20d864d434e9a4ac7fe460f230d368fb3779f", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsigsegv-2.11-8.fc31.aarch64.rpm", + "checksum": "sha256:11e8ee935d9c9d349f4c081d035fc4ee34539af23ef8122e6901b22cf97f346f", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsmartcols-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:768cc2c561bd6476df45fbd9280bbaeb87d2addcd0c51601d2226a590d7dc872", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.5", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsolv-0.7.5-3.fc31.aarch64.rpm", + "checksum": "sha256:82cc8c43bfe0e731ec78e31c8af6250ec1f13989978105a1b38d518470cf5bde", + "check_gpg": true + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.68.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsoup-2.68.2-1.fc31.aarch64.rpm", + "checksum": "sha256:c1590c5cdfc7aad868c75c54c11a2c7d692001f758ead33aa10f9838955148c4", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libss-1.45.3-1.fc31.aarch64.rpm", + "checksum": "sha256:c6de19d0d4b8f67957ca6122462090895034495852814f36396bc134905f5f5e", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libssh-0.9.0-6.fc31.aarch64.rpm", + "checksum": "sha256:51f15beba5e5bfc6ff646741b3fbaa3a484ebb40fd8c6c59b8f1f6346dd93e93", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm", + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_autofs-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:ce421671bfd14a427771eb3c78b060352a61cca889b1bf1b342c328dd521623d", + "check_gpg": true + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_certmap-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:02f7f1cdd5cbe11b16e093686db5c584a68db4e6b1015c4d36c0246a54f801bb", + "check_gpg": true + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_idmap-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:2b1052455234b751e869f22c496bb660dec53eafe198673bab25053e394e41cb", + "check_gpg": true + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_nss_idmap-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:f2d11878777b28a284e9a571a6a9cf893a97f0935291b10686eb93a2a3dfdfb8", + "check_gpg": true + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_sudo-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:99c0e924fa7eb70fc9301b692d4ba72ec480af840498b8251f68a419317bd108", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libstdc++-9.2.1-1.fc31.aarch64.rpm", + "checksum": "sha256:5a32c492b921e9287422006f255833605b328f3efd071609673be161bb4e7f04", + "check_gpg": true + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtalloc-2.3.0-1.fc31.aarch64.rpm", + "checksum": "sha256:48ee663f069c5019c842f316216ef3bf8dfcbbec479c98d1f2b24749c22e57f3", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.14", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtasn1-4.14-2.fc31.aarch64.rpm", + "checksum": "sha256:23e8c23c89737665a5288a3a171548e94898be9ed4a24c056d8bc851c6800090", + "check_gpg": true + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtdb-1.4.2-1.fc31.aarch64.rpm", + "checksum": "sha256:91d628d3e4a82976361ecb306d4f0049aa65c811fdd5051b3f8423b75e4a10e9", + "check_gpg": true + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtevent-0.10.1-1.fc31.aarch64.rpm", + "checksum": "sha256:f6d37f25fa7215b7ae185b12f687d60c4363cfb8e35d591595a9b0f379488fc6", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtextstyle-0.20.1-2.fc31.aarch64.rpm", + "checksum": "sha256:e4e6a5e014442aa8d7768555da9d44e6381569e0c44e61d2d2a06d6692748945", + "check_gpg": true + }, + { + "name": "libthai", + "epoch": 0, + "version": "0.1.28", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libthai-0.1.28-3.fc31.aarch64.rpm", + "checksum": "sha256:b04fecd603225051ca56c6674cb72f12f4de0cc1cbbfda0ab7d0af0e655b2c99", + "check_gpg": true + }, + { + "name": "libtiff", + "epoch": 0, + "version": "4.0.10", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtiff-4.0.10-6.fc31.aarch64.rpm", + "checksum": "sha256:57bd1ce5d776daca117795bc8e3852f1d29a6fc3fc1edd21729d161de2d7798d", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "2.rc3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.aarch64.rpm", + "checksum": "sha256:14a759b4daf287d66f5b803b0fbb52621f8429607be109e5d3c313a57cc276e2", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libunistring-0.9.10-6.fc31.aarch64.rpm", + "checksum": "sha256:2b24b5729cd74e3b1efe261bfd732fd1995b0e64d76587a3d90762d77cc58c77", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.22", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libusbx-1.0.22-4.fc31.aarch64.rpm", + "checksum": "sha256:c80fbc5228457b9b1978b098f47d2a66ca5636526965847078edb6f1c302e392", + "check_gpg": true + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "21.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libuser-0.62-21.fc31.aarch64.rpm", + "checksum": "sha256:4fe97b617adfa7c0f97ba5b2b6e1c0d2e2b15c54ba8db66fc389cacc0f1b2b60", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "17.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libutempter-1.1.6-17.fc31.aarch64.rpm", + "checksum": "sha256:ea68ed6fc06f142c95e907b619a9696146dff1bba308773df12e412d8277eec0", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libuuid-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:7027d2c6a004469720e3c64eb7fcb2ace1fffd61ec4380afbf875d59a3876f3a", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libverto-0.3.0-8.fc31.aarch64.rpm", + "checksum": "sha256:af589a85af85270c027bacb5ccaf88c93378d364a7c1436ee7bca1290cf762f7", + "check_gpg": true + }, + { + "name": "libwayland-client", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-client-1.17.0-2.fc31.aarch64.rpm", + "checksum": "sha256:1472adb267192ca8a323e544fd9749c4765334fc5779e8de4ee583eff77fc078", + "check_gpg": true + }, + { + "name": "libwayland-cursor", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.aarch64.rpm", + "checksum": "sha256:f34cde4c2bd6ab93a697d8c350e98f4d70f897f74fee35a06c25eb4b98f46c9a", + "check_gpg": true + }, + { + "name": "libwayland-egl", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.aarch64.rpm", + "checksum": "sha256:aa3658efc21bcc6d79344eeeaf20285407f6f3b90d905a66a37a8cfc835b2a61", + "check_gpg": true + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxcb-1.13.1-3.fc31.aarch64.rpm", + "checksum": "sha256:a2f6ae2742a2aac3f5bb5f1ad5cfa4d9b8fdf7cfd01033246027db7064abaa1f", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxcrypt-4.4.10-1.fc31.aarch64.rpm", + "checksum": "sha256:e35e30f6477652a93d3c02ec86faa233884aefb2ff9fcf4058909d9736fb2d15", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.8.4", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.aarch64.rpm", + "checksum": "sha256:57a9aff6b8d5ecdb66015e4dfcec0a171ae18751e1d5f9a339361cc45b9a8e2f", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.9", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxml2-2.9.9-3.fc31.aarch64.rpm", + "checksum": "sha256:7c66a9a33e131200e13a638613ec054a94be901399424df27a0b4f94532ee36d", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libyaml-0.2.2-2.fc31.aarch64.rpm", + "checksum": "sha256:80434d5f64abdd521330153fc0c983c5923a833ab59f57ec3bc3a8cf1d748c8c", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libzstd-1.4.2-1.fc31.aarch64.rpm", + "checksum": "sha256:a39fb89e06572d188309dc4daf1d23e21be190e59f9ef8ff3c3ccceaefe505da", + "check_gpg": true + }, + { + "name": "linux-atm-libs", + "epoch": 0, + "version": "2.5.1", + "release": "25.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/linux-atm-libs-2.5.1-25.fc31.aarch64.rpm", + "checksum": "sha256:253f9f540248a0bdd537ee8ea4f670752af74d85be98ea81593a30710e1e5808", + "check_gpg": true + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20190923", + "release": "102.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/linux-firmware-20190923-102.fc31.noarch.rpm", + "checksum": "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47", + "check_gpg": true + }, + { + "name": "linux-firmware-whence", + "epoch": 0, + "version": "20190923", + "release": "102.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/linux-firmware-whence-20190923-102.fc31.noarch.rpm", + "checksum": "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70", + "check_gpg": true + }, + { + "name": "lmdb-libs", + "epoch": 0, + "version": "0.9.23", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lmdb-libs-0.9.23-3.fc31.aarch64.rpm", + "checksum": "sha256:284d46ebd3d3fd4a915b624a75e9931c948807fcb13fed01681e623d0ba7b1ce", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lua-libs-5.3.5-6.fc31.aarch64.rpm", + "checksum": "sha256:a084b365795c7262fa09b2fc590dfbabbbf30cb9c1c7f9b5274eae4c5d761482", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lz4-libs-1.9.1-1.fc31.aarch64.rpm", + "checksum": "sha256:1c2edf26d16b55bac2824452c1c584ff52acf8477920f384f6019f647c241450", + "check_gpg": true + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.8.4", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/man-db-2.8.4-5.fc31.aarch64.rpm", + "checksum": "sha256:84fa6157b3e986b9ce67cc03bfed4e2b96fa7d075df70e038fbcd2b486737d35", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mkpasswd-5.5.2-1.fc31.aarch64.rpm", + "checksum": "sha256:f8e118c35bb5f8ae3dca517ef38c7a38bbdd491011af9e1c4c5c7523f13e6f9c", + "check_gpg": true + }, + { + "name": "mokutil", + "epoch": 1, + "version": "0.3.0", + "release": "11.fc30", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mokutil-0.3.0-11.fc30.aarch64.rpm", + "checksum": "sha256:332ef2695e27190536747f53bab03ba5df0ca903564f6071623d99fa524d6d2f", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mpfr-3.1.6-5.fc31.aarch64.rpm", + "checksum": "sha256:339895e6b901ff4c81966893ec7da9848da3acea26e5b202033bfb79dfcbb6cb", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-6.1-12.20190803.fc31.aarch64.rpm", + "checksum": "sha256:1d530a23a8ea2b831068593fe6aa7a32923c6276504def5a85ad065aaac9ac5f", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm", + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.aarch64.rpm", + "checksum": "sha256:264828f11342a94f056fb27a2e78fc5e14226230b3dbac8bdad6a4c8598fd24f", + "check_gpg": true + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.55.20160912git.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/net-tools-2.0-0.55.20160912git.fc31.aarch64.rpm", + "checksum": "sha256:504b334756e12eefb42d44e53da61fb4321b860e3b5f380b5c21c5c3784a8c75", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/nettle-3.5.1-3.fc31.aarch64.rpm", + "checksum": "sha256:9c8771c8c5eb38351dd30f994133bc9149ec93813d1a7c2cd2dd8f7dc7431d49", + "check_gpg": true + }, + { + "name": "nftables", + "epoch": 1, + "version": "0.9.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/nftables-0.9.1-3.fc31.aarch64.rpm", + "checksum": "sha256:a9f81157c1f977adf96403fe534e2fecc9f3a82a58c5b53fd58aad9954873790", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/npth-1.6-3.fc31.aarch64.rpm", + "checksum": "sha256:f1419585dbb27e3bf76aab5a5f8fb9580816a7a0e7fc93377b97646a0259a794", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openldap-2.4.47-3.fc31.aarch64.rpm", + "checksum": "sha256:d8d28daa56fa4894a767957aa9948cad6d274e2b70d8b10aa69d9356c8a22eff", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssh-8.0p1-8.fc31.1.aarch64.rpm", + "checksum": "sha256:424e1777ae71117d20055ffa5f0ed2ead59a8076528450cf7536e18c70624bd8", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.aarch64.rpm", + "checksum": "sha256:eb35167d6095465a58611b80853213af5838f271b75fa1a5e3c051a04a9078a7", + "check_gpg": true + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssh-server-8.0p1-8.fc31.1.aarch64.rpm", + "checksum": "sha256:0a80e2a0ede76c98337c220f01dfadacace037b48f09fe072c5d33f356e50b8e", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-1.1.1d-2.fc31.aarch64.rpm", + "checksum": "sha256:54c024db70df7966590050dfc5dcc1315174e10c3a57e118ea10178238d70889", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.aarch64.rpm", + "checksum": "sha256:a7f5877c9ebfb44347765c7deb266e53fdd62403ccc0a7ff17fdb101bc28caff", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.aarch64.rpm", + "checksum": "sha256:dc6b772101df9f3029c2cd80a10663663ad877e129c8d724902f5cc9f1785e60", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/os-prober-1.77-3.fc31.aarch64.rpm", + "checksum": "sha256:4d4853ac550a0cfc5b3bcbcb7f12c81461393a6aa0e96a23648985f8a7f2e8e2", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.aarch64.rpm", + "checksum": "sha256:6d4c3ae013d07e50d085b3419dfd41ac79ba11ada62d8c4570d21764ef6f11ec", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.aarch64.rpm", + "checksum": "sha256:bf92fc95c282da9c76018679d9180fb6c98aaf864f66bbef630941040579f92b", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "18.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pam-1.3.1-18.fc31.aarch64.rpm", + "checksum": "sha256:eb1992de281538771ba578a65eabe620dc35aef6c621d8c5351a2ba38ac440f4", + "check_gpg": true + }, + { + "name": "pango", + "epoch": 0, + "version": "1.44.6", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pango-1.44.6-1.fc31.aarch64.rpm", + "checksum": "sha256:5ba547e1c2c515b3ca091e04c0a6b15b297e25b567a6613a07bd2bee41f39684", + "check_gpg": true + }, + { + "name": "parted", + "epoch": 0, + "version": "3.2.153", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/parted-3.2.153-1.fc31.aarch64.rpm", + "checksum": "sha256:855131926b9a3764835de3e7171b9ce579847ce161f3ba8406a5b6fdfa781f55", + "check_gpg": true + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/passwd-0.80-6.fc31.aarch64.rpm", + "checksum": "sha256:07f4ccd9f3cb20ceb4483adb673adfef15394b246bd93a84f169eb07acb68d71", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.43", + "release": "2.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pcre-8.43-2.fc31.1.aarch64.rpm", + "checksum": "sha256:44a92faf198bf015f5e94cf42ae615215fe0a6c0697b1f6c32d205bd450e7ce4", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.33", + "release": "14.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pcre2-10.33-14.fc31.aarch64.rpm", + "checksum": "sha256:b0d153ea83902561a9e60c9c244a497c3b19a9c4e40cf9e8437d0221af0f2ca3", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pigz-2.4-5.fc31.aarch64.rpm", + "checksum": "sha256:0ae87f94df2e114f287d60e9041ac159349f51322e32eeefa19a96db0acb78e7", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pinentry-1.1.0-6.fc31.aarch64.rpm", + "checksum": "sha256:ee3977f4ee783225903f964c60932795d8c11307043e73527b394dec02487047", + "check_gpg": true + }, + { + "name": "pixman", + "epoch": 0, + "version": "0.38.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pixman-0.38.4-1.fc31.aarch64.rpm", + "checksum": "sha256:0b8baef3612880639ed59ae79475086aac8ce236fd35977e0d87305d0bb9a529", + "check_gpg": true + }, + { + "name": "plymouth", + "epoch": 0, + "version": "0.9.4", + "release": "10.20191001gita8aad27.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/plymouth-0.9.4-10.20191001gita8aad27.fc31.aarch64.rpm", + "checksum": "sha256:dc8a707761f45962518e251f87a5e1d83199fbd1fe1e249f89ed457528c1fba1", + "check_gpg": true + }, + { + "name": "plymouth-core-libs", + "epoch": 0, + "version": "0.9.4", + "release": "10.20191001gita8aad27.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/plymouth-core-libs-0.9.4-10.20191001gita8aad27.fc31.aarch64.rpm", + "checksum": "sha256:2efe5f560e0c56dec38c9456ae8482a5a9006833d257de4a2a6246d261f647e2", + "check_gpg": true + }, + { + "name": "plymouth-scripts", + "epoch": 0, + "version": "0.9.4", + "release": "10.20191001gita8aad27.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/plymouth-scripts-0.9.4-10.20191001gita8aad27.fc31.aarch64.rpm", + "checksum": "sha256:fabb9a86711308b3dbf146e8f155ab8e857172455e805aab912500bf157368ac", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/policycoreutils-2.9-5.fc31.aarch64.rpm", + "checksum": "sha256:974bdde5f821c071bcbe0de191677981685cb8290952be75a7ab15747988a99e", + "check_gpg": true + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.116", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/polkit-libs-0.116-4.fc31.aarch64.rpm", + "checksum": "sha256:cf480f0df368b3cc9f36e42d5d573afa93fcb3889614dee172c0ad367785f520", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "18.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/popt-1.16-18.fc31.aarch64.rpm", + "checksum": "sha256:d2be7b0f17350a8a0f301617cb1d7b024076bc16986abaab94453ec1cee1f1f2", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/procps-ng-3.3.15-6.fc31.aarch64.rpm", + "checksum": "sha256:9ff53c6f07da3adeaa20da76c1c78b886710b460db7a316415f8bc9182096fb0", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm", + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm", + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-3.7.4-5.fc31.aarch64.rpm", + "checksum": "sha256:84365601f93db7fda27e4d89826d4893830572e98df35275abdf15659cfe3fc5", + "check_gpg": true + }, + { + "name": "python3-asn1crypto", + "epoch": 0, + "version": "0.24.0", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-asn1crypto-0.24.0-7.fc31.noarch.rpm", + "checksum": "sha256:73a7249de97f0ad66bc1a867ac5b5d08b741ab152d4dd7ce45cc231d64126b58", + "check_gpg": true + }, + { + "name": "python3-attrs", + "epoch": 0, + "version": "19.1.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-attrs-19.1.0-2.fc31.noarch.rpm", + "checksum": "sha256:4cca3f986ddbd38cfbfb6d1c8d336a1aaed78f7da1f38356ce1e034ba35ec492", + "check_gpg": true + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-audit-3.0-0.12.20190507gitf58ec40.fc31.aarch64.rpm", + "checksum": "sha256:700acef9fc8051726700645696fd67b0fc3b7fec08290ef9c2964fe7a9d3e8cd", + "check_gpg": true + }, + { + "name": "python3-babel", + "epoch": 0, + "version": "2.7.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-babel-2.7.0-2.fc31.noarch.rpm", + "checksum": "sha256:e17ef6f7d4f1869ff5813d6f8f2983cd6f5cd23d4a666b7ae19154636e911644", + "check_gpg": true + }, + { + "name": "python3-cffi", + "epoch": 0, + "version": "1.12.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-cffi-1.12.3-1.fc31.aarch64.rpm", + "checksum": "sha256:f0b9a02ed639d2cff7a85262d440c65f2fa2ba318166b45d969a2802f102535b", + "check_gpg": true + }, + { + "name": "python3-chardet", + "epoch": 0, + "version": "3.0.4", + "release": "10.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-chardet-3.0.4-10.fc31.noarch.rpm", + "checksum": "sha256:ee6dbb4914a35ee8a816ecde34d29221e3f4622324f6287c328e8ac22ae572ad", + "check_gpg": true + }, + { + "name": "python3-configobj", + "epoch": 0, + "version": "5.0.6", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-configobj-5.0.6-16.fc31.noarch.rpm", + "checksum": "sha256:cdc526097cd2fecb75e44ad11a69b10eb7804f310298c064c3b931515d4f3d5c", + "check_gpg": true + }, + { + "name": "python3-cryptography", + "epoch": 0, + "version": "2.6.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-cryptography-2.6.1-2.fc31.aarch64.rpm", + "checksum": "sha256:d35fe17711337362bdf09540523bddbdc16406d0ff7650043a3cdd1cfc222ae8", + "check_gpg": true + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.8.0", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dateutil-2.8.0-3.fc31.noarch.rpm", + "checksum": "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653", + "check_gpg": true + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.8", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dbus-1.2.8-6.fc31.aarch64.rpm", + "checksum": "sha256:a314b2a8ed8a9e7e80aedfb1f76c75910d0da9549d072c424c2dddbe63a09874", + "check_gpg": true + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.4.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-decorator-4.4.0-2.fc31.noarch.rpm", + "checksum": "sha256:63ff108f557096a9724053c37e37d3c2af1a1ec0b33124480b3742ff3da46292", + "check_gpg": true + }, + { + "name": "python3-distro", + "epoch": 0, + "version": "1.4.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-distro-1.4.0-2.fc31.noarch.rpm", + "checksum": "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.9", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dnf-plugins-core-4.0.9-1.fc31.noarch.rpm", + "checksum": "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02", + "check_gpg": true + }, + { + "name": "python3-firewall", + "epoch": 0, + "version": "0.7.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-firewall-0.7.2-1.fc31.noarch.rpm", + "checksum": "sha256:a349c40034b5a181cab1bd409384ddb901c274e110b16721d434f5bf42e92c0f", + "check_gpg": true + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.34.0", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-gobject-base-3.34.0-3.fc31.aarch64.rpm", + "checksum": "sha256:c45162d6aeab69ce8f58353c88e7e068c59f36921989aa49ac23738f7c9cea82", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-gpg-1.13.1-3.fc31.aarch64.rpm", + "checksum": "sha256:d429648fe5b233a46fdbfc31a283ca4b6be5177ae84f3e7e63fec5f9bebd17d1", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.aarch64.rpm", + "checksum": "sha256:edee134762456246cd8de577597e350b60a04bc43ac4a47622b9a263ddd74cf2", + "check_gpg": true + }, + { + "name": "python3-idna", + "epoch": 0, + "version": "2.8", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-idna-2.8-2.fc31.noarch.rpm", + "checksum": "sha256:8221111dc9a9aa5c68805f153c3fbe5314c8a0f335af29685733b958253dd278", + "check_gpg": true + }, + { + "name": "python3-jinja2", + "epoch": 0, + "version": "2.10.1", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jinja2-2.10.1-2.fc31.noarch.rpm", + "checksum": "sha256:1135e96b6f9ed29e4ed4c0f060876891a244442a503f0b18ab238589da20d464", + "check_gpg": true + }, + { + "name": "python3-jsonpatch", + "epoch": 0, + "version": "1.21", + "release": "8.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jsonpatch-1.21-8.fc31.noarch.rpm", + "checksum": "sha256:e98119ac7a707287668e7a9a74ef2809ee5f555af04f52775367e428e08dbb33", + "check_gpg": true + }, + { + "name": "python3-jsonpointer", + "epoch": 0, + "version": "1.10", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jsonpointer-1.10-16.fc31.noarch.rpm", + "checksum": "sha256:2d9a2e736dd5231df3c5c748ce0ba5a75a409dacfe73f14676781f32d565a7df", + "check_gpg": true + }, + { + "name": "python3-jsonschema", + "epoch": 0, + "version": "3.0.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jsonschema-3.0.2-1.fc31.noarch.rpm", + "checksum": "sha256:047f9e29fcfa56be98ca3f42249f3ccb2a93df99f2438e3983e2064025f0d79d", + "check_gpg": true + }, + { + "name": "python3-jwt", + "epoch": 0, + "version": "1.7.1", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jwt-1.7.1-3.fc31.noarch.rpm", + "checksum": "sha256:143c50c0663f963c7689c1cec43b81cf1433d5d3b67eb8233ba06506c1b3e095", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.aarch64.rpm", + "checksum": "sha256:7a5aadb5da769b563cf1e548d8cabd26c00720a67df7e4a445a5a9ae5b0891b8", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.aarch64.rpm", + "checksum": "sha256:436c2f09d2de629da293ab82af47b7697f4a8c151127cbd993d0e8605a4f423c", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libs-3.7.4-5.fc31.aarch64.rpm", + "checksum": "sha256:fe6f4202a8e7e52add27c6d2e2af65884a974bcde4b5e89979badb782719ca1a", + "check_gpg": true + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libselinux-2.9-5.fc31.aarch64.rpm", + "checksum": "sha256:67bbf2a262929b1b4c2fb9532c471da5ab2c0f642b0df770cf947c0131a9e1ad", + "check_gpg": true + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libsemanage-2.9-3.fc31.aarch64.rpm", + "checksum": "sha256:32cc0c295cd013db597cd31868736be3708edb25ab1952fdd0ed879ec5e8d191", + "check_gpg": true + }, + { + "name": "python3-markupsafe", + "epoch": 0, + "version": "1.1.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-markupsafe-1.1.1-2.fc31.aarch64.rpm", + "checksum": "sha256:47383173cbb135c2590998a4e82c6f9d40a516450d2fbd1e169ace92337b7fd5", + "check_gpg": true + }, + { + "name": "python3-oauthlib", + "epoch": 0, + "version": "3.0.2", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-oauthlib-3.0.2-2.fc31.noarch.rpm", + "checksum": "sha256:f85469c0c19ce86e8fdd0dd5a3e6e5c9b78e3436ae9ce70ba86b2b4a3794f693", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "name": "python3-ply", + "epoch": 0, + "version": "3.11", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-ply-3.11-3.fc31.noarch.rpm", + "checksum": "sha256:1b65944efe48ba0cca34011891480a1db29a7e95dad058376bfca34d68fb0791", + "check_gpg": true + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-policycoreutils-2.9-5.fc31.noarch.rpm", + "checksum": "sha256:5a7e957102a23c9924398fe45f5cdec66edcd10adcad7130d6ebf02c2706ad49", + "check_gpg": true + }, + { + "name": "python3-prettytable", + "epoch": 0, + "version": "0.7.2", + "release": "18.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-prettytable-0.7.2-18.fc31.noarch.rpm", + "checksum": "sha256:682af90a049fa78429d5ebd194700609f762e59ceb6c4ca28b17e7f4fd1683aa", + "check_gpg": true + }, + { + "name": "python3-pycparser", + "epoch": 0, + "version": "2.14", + "release": "20.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pycparser-2.14-20.fc31.noarch.rpm", + "checksum": "sha256:6ed7f318c5e93b59254d7b7652131f33db713eeb61f52413f21e533069ed24bf", + "check_gpg": true + }, + { + "name": "python3-pyrsistent", + "epoch": 0, + "version": "0.15.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pyrsistent-0.15.4-1.fc31.aarch64.rpm", + "checksum": "sha256:32d56c08f75c7626f1a0efd7aa05ca2ea3649d55445b5ac42a2f7f10fad8b46b", + "check_gpg": true + }, + { + "name": "python3-pyserial", + "epoch": 0, + "version": "3.4", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pyserial-3.4-3.fc31.noarch.rpm", + "checksum": "sha256:32cc578c8da626a8c1a5316a59d482967a32547be6c077f73fb90e11fb0f1e6a", + "check_gpg": true + }, + { + "name": "python3-pysocks", + "epoch": 0, + "version": "1.7.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pysocks-1.7.0-2.fc31.noarch.rpm", + "checksum": "sha256:d54f02fc39b3e87253808f665918d26ffe901f1228e25121c908661b47ba266b", + "check_gpg": true + }, + { + "name": "python3-pytz", + "epoch": 0, + "version": "2019.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pytz-2019.2-1.fc31.noarch.rpm", + "checksum": "sha256:6c6f1152899318bdc0500cfb0b0cdbbc19ba0e017b5888ece1358250caa2629f", + "check_gpg": true + }, + { + "name": "python3-pyyaml", + "epoch": 0, + "version": "5.1.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pyyaml-5.1.2-1.fc31.aarch64.rpm", + "checksum": "sha256:f958a85509e118c832458a5f502e5d59695eb3df96ae0bd603203a82d188b2ae", + "check_gpg": true + }, + { + "name": "python3-requests", + "epoch": 0, + "version": "2.22.0", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-requests-2.22.0-3.fc31.noarch.rpm", + "checksum": "sha256:1e049e86c5dd5c4d6737d47dd194d553ffbd65c81a4077cf6e1029a0fde80fb5", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-rpm-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:513e24bc56f483b171664ea4dec51cc0cce1f9cc8f4939cde8a65ea976ed952d", + "check_gpg": true + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-setools-4.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:1f44142da3bf5e09b98488b40ed8a2d5dbd841c36bb4553749e6d65d7fe5c15c", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.12.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-six-1.12.0-2.fc31.noarch.rpm", + "checksum": "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142", + "check_gpg": true + }, + { + "name": "python3-slip", + "epoch": 0, + "version": "0.6.4", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-slip-0.6.4-16.fc31.noarch.rpm", + "checksum": "sha256:b1094a9a9725546315d6eac7f792d5875a5f0c950cd84e43fc2fbb3e639ee43e", + "check_gpg": true + }, + { + "name": "python3-slip-dbus", + "epoch": 0, + "version": "0.6.4", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-slip-dbus-0.6.4-16.fc31.noarch.rpm", + "checksum": "sha256:bd2e7c9e3df976723ade08f16667b31044b678e62ee29e024ad193af6d9a28e1", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-unbound-1.9.3-1.fc31.aarch64.rpm", + "checksum": "sha256:b6498a7a8056483e1d42362b1fb27bd6c54ed7cc7bd180cae20d64a13ae4c88c", + "check_gpg": true + }, + { + "name": "python3-urllib3", + "epoch": 0, + "version": "1.25.3", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-urllib3-1.25.3-4.fc31.noarch.rpm", + "checksum": "sha256:78b600621e00f4a0acc8f58de056ae9393ce4e1cded56837b4e557c1bc84b06b", + "check_gpg": true + }, + { + "name": "qemu-guest-agent", + "epoch": 2, + "version": "4.1.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/q/qemu-guest-agent-4.1.0-2.fc31.aarch64.rpm", + "checksum": "sha256:415406e44a1d6bd226ad67c1b762c3d3ab2f834ed0f9e7059660a64d23d13b66", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.aarch64.rpm", + "checksum": "sha256:5f2bdb8f9a18257ee80a243e1be96e3ef6fa660e37fdf7b4443d8e8f7abf86ef", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/readline-8.0-3.fc31.aarch64.rpm", + "checksum": "sha256:d02489175567be57a48a3edf5deb66d100e99df73a37b26062fea4d6af014cbc", + "check_gpg": true + }, + { + "name": "rest", + "epoch": 0, + "version": "0.8.1", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rest-0.8.1-6.fc31.aarch64.rpm", + "checksum": "sha256:8d00fa6cdfcc955dc4e14d0f8b6ba6217d2dd0334ea0e1aa44694c9e0ad0b06d", + "check_gpg": true + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rootfiles-8.1-25.fc31.noarch.rpm", + "checksum": "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:ae9a3e144f31b6172d266b984c8385fba94bdcf3002d3182a4118f8d29f5f718", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:c958419128c1330b50c741113394b147da1ccda055ab1ee19fabc199f68971ea", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-libs-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:7292bf1d13ef336ef411ef695f87c7c7ecd21a13e05c86cc475930ca61117503", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-plugin-selinux-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:6ce37675749741e4ea05e934aa5b7376d596cc117bd317199d0a15e2236aa058", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:d01f7e794c3dd3f38de1b69fd360db4b858826eba4e6fd4edc79c8a74774ab00", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:46acc45e148eea376c3aa8e83a4d3bf1cf66fa35ccc670f592017428ce75ca77", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sed-4.5-4.fc31.aarch64.rpm", + "checksum": "sha256:5d87d829a1d939c520b25f1c790cd1f3bd6c8b769f4f21303ec5e16a3b509445", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.4", + "release": "37.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/selinux-policy-3.14.4-37.fc31.noarch.rpm", + "checksum": "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.4", + "release": "37.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/selinux-policy-targeted-3.14.4-37.fc31.noarch.rpm", + "checksum": "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.3", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm", + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "16.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/shadow-utils-4.6-16.fc31.aarch64.rpm", + "checksum": "sha256:2ad8824aa48378aa741fbd863104d950ad4f669566af2d4f433be6d9afd8ead6", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.14", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/shared-mime-info-1.14-1.fc31.aarch64.rpm", + "checksum": "sha256:c05d42fba4fc1ebc2df9ee49f971c744937d8b307626c90b3cf79bf91619863a", + "check_gpg": true + }, + { + "name": "shim-aa64", + "epoch": 0, + "version": "15", + "release": "8", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/shim-aa64-15-8.aarch64.rpm", + "checksum": "sha256:ac7985d2591bc2bd1d90efdb68751a3d7435cf902b3895cb308e830ce48f1f44", + "check_gpg": true + }, + { + "name": "spice-vdagent", + "epoch": 0, + "version": "0.19.0", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/spice-vdagent-0.19.0-4.fc31.aarch64.rpm", + "checksum": "sha256:b9e9e16e7ccade332921b8d8e7b250a1c51e1d23405f2baa8a7c04f701af6e02", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.29.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.aarch64.rpm", + "checksum": "sha256:81169dd168c02aed3b1e57e5af16ec3dbdfb74c15373ee40e9eec5aac60a3d25", + "check_gpg": true + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sssd-client-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:054f0851c8b42292ac5c24ea649764b022dacc6d40a00e333abacc67e2c2a215", + "check_gpg": true + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sssd-common-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:d9641a59b33831e32fa61f3479152d5eac33e0526b32e67ae33f1c1102c69d4b", + "check_gpg": true + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sssd-kcm-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:121e2a4e79f6dbf37af2182cb12ff28345db993a7f83de344f6f5fbcf5a705a5", + "check_gpg": true + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sssd-nfs-idmap-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:077e72f02d2eef2a2bfd8ab057527a02005806e731303fbff1e28f61716f2943", + "check_gpg": true + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.8.28", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sudo-1.8.28-1.fc31.aarch64.rpm", + "checksum": "sha256:cb478c89af0caac9a40c32a2b4a48242b16ff9e2e6daa375b2de88e396f524dd", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-243-4.gitef67743.fc31.aarch64.rpm", + "checksum": "sha256:af594688a568ec4db7dae9d60390dce1ab547527bbf2415752f211de3748b97f", + "check_gpg": true + }, + { + "name": "systemd-bootchart", + "epoch": 0, + "version": "233", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-bootchart-233-5.fc31.aarch64.rpm", + "checksum": "sha256:0ff534e46d982b5a213eb562e3cb30d1935a25a9f433d325457069eec9131217", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.aarch64.rpm", + "checksum": "sha256:7487afe052c79100e906a4d2cb2ee1043410ca10a8e60a65d95776f63a513595", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.aarch64.rpm", + "checksum": "sha256:e29356f3ea2554e8be23401a08a941f406d337cf6b38e7ee99926fb9b3f1f541", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm", + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-udev-243-4.gitef67743.fc31.aarch64.rpm", + "checksum": "sha256:a436dca481707ca10a0c5bb189d9a25ff76c4f66f1d32b0847dc6d13ba46c17a", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/trousers-0.3.13-13.fc31.aarch64.rpm", + "checksum": "sha256:7bd78cde4202401947dea928274579074bc78fdae096057e788c1b6a86a10ecc", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/trousers-lib-0.3.13-13.fc31.aarch64.rpm", + "checksum": "sha256:6728ee255cb8c80b85f6d610bfd795025939a77d2591ad61fe1c4f9d657c386e", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/tss2-1331-2.fc31.aarch64.rpm", + "checksum": "sha256:42945876fb8932bad3e50b50349af4bdabe713d7be1c8efc1b0f7b042e556aa5", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm", + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/u/unbound-libs-1.9.3-1.fc31.aarch64.rpm", + "checksum": "sha256:acd149c4bf17a15db75fca1f19e34784a9ed275e19c0721aa78f5eb94797a685", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/u/util-linux-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:07cd9ddc7f7a16dc9739647af90706cfbcf70b281f5474e622b0769e211e0dc8", + "check_gpg": true + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.1.2102", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/v/vim-minimal-8.1.2102-1.fc31.aarch64.rpm", + "checksum": "sha256:477474e74c5f30884f0a4571445ecf987b521f61139fc0ba7d516e075f47e7ce", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "15.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/w/which-2.21-15.fc31.aarch64.rpm", + "checksum": "sha256:06cf2f5439e0ce2c7fc655bdf4868d3c47a5fbe5b71e9dc305232a7732896e14", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm", + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "name": "xen-libs", + "epoch": 0, + "version": "4.12.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xen-libs-4.12.1-1.fc31.aarch64.rpm", + "checksum": "sha256:36b65cdbda1742e6fdd823675051e975489324ee33e71ef44a74874561b1d561", + "check_gpg": true + }, + { + "name": "xen-licenses", + "epoch": 0, + "version": "4.12.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xen-licenses-4.12.1-1.fc31.aarch64.rpm", + "checksum": "sha256:38067c93bf61173a56d476e2e08d3011bd8d8b5d6a8705ede62b549042b3b7d2", + "check_gpg": true + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.1.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xfsprogs-5.1.0-2.fc31.aarch64.rpm", + "checksum": "sha256:a4f7846fb262ad61885f64b8a354f9303fe5ce129378e4781eefa0bffdef828e", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.27", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm", + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xz-5.2.4-6.fc31.aarch64.rpm", + "checksum": "sha256:58a44f9472918a511d3eee0b3f08926dab2ebf4994584403bd196e6c92a06f5a", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xz-libs-5.2.4-6.fc31.aarch64.rpm", + "checksum": "sha256:9ed0b44834b6a637c70aa00ab243aecb534f9aea461e1388652ab039898239c8", + "check_gpg": true + }, + { + "name": "yajl", + "epoch": 0, + "version": "2.1.0", + "release": "13.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/y/yajl-2.1.0-13.fc31.aarch64.rpm", + "checksum": "sha256:f2cd84bfa2797552688025e7170d2b0775dfb32ebea95ed806765dee57b833eb", + "check_gpg": true + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/y/yum-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.2", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.aarch64.rpm", + "checksum": "sha256:c1893a7c51ebb0371b87e2179d6e0e5d0fbb71acb4234cf4adc293af11c75578", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "19.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/z/zlib-1.2.11-19.fc31.aarch64.rpm", + "checksum": "sha256:f23f467c4099be4cb4dfdc1be13b7a7bb6e8c6da7c21182658a034827b64df39", + "check_gpg": true + } + ], + "checksums": { + "0": "sha256:706bc46aa3b2b716d9ff69963273d4462995f3632f71968812842ab79812a999" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac ro biosdevname=0 net.ifnames=0" + }, + "bootloader": "unknown", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "initrd": "/boot/initramfs-5.3.7-301.fc31.aarch64.img", + "linux": "/boot/vmlinuz-5.3.7-301.fc31.aarch64", + "options": "$kernelopts", + "title": "Fedora (5.3.7-301.fc31.aarch64) 31 (Thirty One)", + "version": "5.3.7-301.fc31.aarch64" + } + ], + "firewall-enabled": [ + "ssh", + "mdns", + "dhcpv6-client" + ], + "fstab": [ + [ + "UUID=46BB-8120", + "/boot/efi", + "vfat", + "umask=0077,shortname=winnt", + "0", + "2" + ], + [ + "UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "/", + "ext4", + "defaults", + "1", + "1" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:993:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:997:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "redhat:x:1000:", + "render:x:996:", + "root:x:0:", + "ssh_keys:x:998:", + "sshd:x:74:", + "sys:x:3:", + "systemd-coredump:x:995:", + "systemd-journal:x:190:", + "systemd-network:x:192:", + "systemd-resolve:x:193:", + "systemd-timesync:x:994:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:999:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "qcow2", + "os-release": { + "ANSI_COLOR": "0;34", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:fedoraproject:fedora:31", + "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f31/system-administrators-guide/", + "HOME_URL": "https://fedoraproject.org/", + "ID": "fedora", + "LOGO": "fedora-logo-icon", + "NAME": "Fedora", + "PLATFORM_ID": "platform:f31", + "PRETTY_NAME": "Fedora 31 (Thirty One)", + "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy", + "REDHAT_BUGZILLA_PRODUCT": "Fedora", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "31", + "REDHAT_SUPPORT_PRODUCT": "Fedora", + "REDHAT_SUPPORT_PRODUCT_VERSION": "31", + "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help", + "VERSION": "31 (Thirty One)", + "VERSION_CODENAME": "", + "VERSION_ID": "31" + }, + "packages": [ + "NetworkManager-1.20.4-1.fc31.aarch64", + "NetworkManager-libnm-1.20.4-1.fc31.aarch64", + "abattis-cantarell-fonts-0.111-3.fc31.noarch", + "acl-2.2.53-4.fc31.aarch64", + "adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch", + "adwaita-cursor-theme-3.34.0-1.fc31.noarch", + "adwaita-icon-theme-3.34.0-1.fc31.noarch", + "alsa-lib-1.1.9-2.fc31.aarch64", + "alternatives-1.11-5.fc31.aarch64", + "at-spi2-atk-2.34.1-1.fc31.aarch64", + "at-spi2-core-2.34.0-1.fc31.aarch64", + "atk-2.34.1-1.fc31.aarch64", + "audit-3.0-0.12.20190507gitf58ec40.fc31.aarch64", + "audit-libs-3.0-0.12.20190507gitf58ec40.fc31.aarch64", + "avahi-libs-0.7-20.fc31.aarch64", + "basesystem-11-8.fc31.noarch", + "bash-5.0.7-3.fc31.aarch64", + "brotli-1.0.7-6.fc31.aarch64", + "bzip2-libs-1.0.8-1.fc31.aarch64", + "c-ares-1.15.0-4.fc31.aarch64", + "ca-certificates-2019.2.32-3.fc31.noarch", + "cairo-1.16.0-6.fc31.aarch64", + "cairo-gobject-1.16.0-6.fc31.aarch64", + "checkpolicy-2.9-2.fc31.aarch64", + "chrony-3.5-4.fc31.aarch64", + "cloud-init-17.1-11.fc31.noarch", + "colord-libs-1.4.4-2.fc31.aarch64", + "coreutils-8.31-4.fc31.aarch64", + "coreutils-common-8.31-4.fc31.aarch64", + "cpio-2.12-12.fc31.aarch64", + "cracklib-2.9.6-21.fc31.aarch64", + "cracklib-dicts-2.9.6-21.fc31.aarch64", + "crypto-policies-20190816-4.gitbb9bf99.fc31.noarch", + "cryptsetup-libs-2.2.1-1.fc31.aarch64", + "cups-libs-2.2.12-2.fc31.aarch64", + "curl-7.66.0-1.fc31.aarch64", + "cyrus-sasl-lib-2.1.27-2.fc31.aarch64", + "dbus-1.12.16-3.fc31.aarch64", + "dbus-broker-21-6.fc31.aarch64", + "dbus-common-1.12.16-3.fc31.noarch", + "dbus-libs-1.12.16-3.fc31.aarch64", + "dbxtool-8-10.fc31.aarch64", + "dconf-0.34.0-1.fc31.aarch64", + "dejavu-fonts-common-2.37-2.fc31.noarch", + "dejavu-sans-fonts-2.37-2.fc31.noarch", + "deltarpm-3.6.2-2.fc31.aarch64", + "device-mapper-1.02.163-2.fc31.aarch64", + "device-mapper-libs-1.02.163-2.fc31.aarch64", + "dhcp-client-4.4.1-15.fc31.aarch64", + "dhcp-common-4.4.1-15.fc31.noarch", + "diffutils-3.7-3.fc31.aarch64", + "dnf-4.2.9-5.fc31.noarch", + "dnf-data-4.2.9-5.fc31.noarch", + "dnf-plugins-core-4.0.9-1.fc31.noarch", + "dracut-049-27.git20181204.fc31.1.aarch64", + "dracut-config-generic-049-27.git20181204.fc31.1.aarch64", + "e2fsprogs-1.45.3-1.fc31.aarch64", + "e2fsprogs-libs-1.45.3-1.fc31.aarch64", + "ebtables-legacy-2.0.10-37.fc31.aarch64", + "efi-filesystem-4-3.fc31.noarch", + "efibootmgr-16-6.fc31.aarch64", + "efivar-libs-37-1.fc30.aarch64", + "elfutils-default-yama-scope-0.177-1.fc31.noarch", + "elfutils-libelf-0.177-1.fc31.aarch64", + "elfutils-libs-0.177-1.fc31.aarch64", + "expat-2.2.8-1.fc31.aarch64", + "fedora-gpg-keys-31-1.noarch", + "fedora-release-31-1.noarch", + "fedora-release-common-31-1.noarch", + "fedora-repos-31-1.noarch", + "file-5.37-3.fc31.aarch64", + "file-libs-5.37-3.fc31.aarch64", + "filesystem-3.12-2.fc31.aarch64", + "findutils-4.6.0-24.fc31.aarch64", + "fipscheck-1.5.0-7.fc31.aarch64", + "fipscheck-lib-1.5.0-7.fc31.aarch64", + "firewalld-0.7.2-1.fc31.noarch", + "firewalld-filesystem-0.7.2-1.fc31.noarch", + "fontconfig-2.13.92-3.fc31.aarch64", + "fontpackages-filesystem-1.44-25.fc31.noarch", + "freetype-2.10.0-3.fc31.aarch64", + "fribidi-1.0.5-4.fc31.aarch64", + "fuse-libs-2.9.9-8.fc31.aarch64", + "gawk-5.0.1-5.fc31.aarch64", + "gcr-3.33.4-1.fc31.aarch64", + "gcr-base-3.33.4-1.fc31.aarch64", + "gdbm-libs-1.18.1-1.fc31.aarch64", + "gdk-pixbuf2-2.40.0-1.fc31.aarch64", + "gdk-pixbuf2-modules-2.40.0-1.fc31.aarch64", + "geolite2-city-20190806-1.fc31.noarch", + "geolite2-country-20190806-1.fc31.noarch", + "gettext-0.20.1-2.fc31.aarch64", + "gettext-libs-0.20.1-2.fc31.aarch64", + "glib-networking-2.62.1-1.fc31.aarch64", + "glib2-2.62.1-1.fc31.aarch64", + "glibc-2.30-5.fc31.aarch64", + "glibc-common-2.30-5.fc31.aarch64", + "glibc-langpack-en-2.30-5.fc31.aarch64", + "gmp-6.1.2-10.fc31.aarch64", + "gnome-keyring-3.34.0-1.fc31.aarch64", + "gnupg2-2.2.17-2.fc31.aarch64", + "gnupg2-smime-2.2.17-2.fc31.aarch64", + "gnutls-3.6.10-1.fc31.aarch64", + "gobject-introspection-1.62.0-1.fc31.aarch64", + "gpg-pubkey-3c3359c4-5c6ae44d", + "gpgme-1.13.1-3.fc31.aarch64", + "graphite2-1.3.13-1.fc31.aarch64", + "grep-3.3-3.fc31.aarch64", + "groff-base-1.22.3-20.fc31.aarch64", + "grub2-common-2.02-100.fc31.noarch", + "grub2-efi-aa64-2.02-100.fc31.aarch64", + "grub2-tools-2.02-100.fc31.aarch64", + "grub2-tools-extra-2.02-100.fc31.aarch64", + "grub2-tools-minimal-2.02-100.fc31.aarch64", + "gsettings-desktop-schemas-3.34.0-1.fc31.aarch64", + "gtk-update-icon-cache-3.24.12-3.fc31.aarch64", + "gtk3-3.24.12-3.fc31.aarch64", + "gzip-1.10-1.fc31.aarch64", + "harfbuzz-2.6.1-2.fc31.aarch64", + "hicolor-icon-theme-0.17-7.fc31.noarch", + "hostname-3.20-9.fc31.aarch64", + "hwdata-0.328-1.fc31.noarch", + "ima-evm-utils-1.2.1-2.fc31.aarch64", + "initscripts-10.02-2.fc31.aarch64", + "ipcalc-0.2.5-3.fc31.aarch64", + "iproute-5.3.0-1.fc31.aarch64", + "iproute-tc-5.3.0-1.fc31.aarch64", + "ipset-7.3-1.fc31.aarch64", + "ipset-libs-7.3-1.fc31.aarch64", + "iptables-1.8.3-5.fc31.aarch64", + "iptables-libs-1.8.3-5.fc31.aarch64", + "iputils-20190515-3.fc31.aarch64", + "jansson-2.12-4.fc31.aarch64", + "jasper-libs-2.0.14-9.fc31.aarch64", + "jbigkit-libs-2.1-17.fc31.aarch64", + "json-c-0.13.1-6.fc31.aarch64", + "json-glib-1.4.4-3.fc31.aarch64", + "kbd-2.0.4-14.fc31.aarch64", + "kbd-legacy-2.0.4-14.fc31.noarch", + "kbd-misc-2.0.4-14.fc31.noarch", + "kernel-5.3.7-301.fc31.aarch64", + "kernel-core-5.3.7-301.fc31.aarch64", + "kernel-modules-5.3.7-301.fc31.aarch64", + "keyutils-libs-1.6-3.fc31.aarch64", + "kmod-26-4.fc31.aarch64", + "kmod-libs-26-4.fc31.aarch64", + "kpartx-0.8.0-3.fc31.aarch64", + "krb5-libs-1.17-45.fc31.aarch64", + "langpacks-core-en-2.0-7.fc31.noarch", + "langpacks-en-2.0-7.fc31.noarch", + "lcms2-2.9-6.fc31.aarch64", + "less-551-2.fc31.aarch64", + "libX11-1.6.8-3.fc31.aarch64", + "libX11-common-1.6.8-3.fc31.noarch", + "libXau-1.0.9-2.fc31.aarch64", + "libXcomposite-0.4.4-17.fc31.aarch64", + "libXcursor-1.1.15-6.fc31.aarch64", + "libXdamage-1.1.4-17.fc31.aarch64", + "libXext-1.3.4-2.fc31.aarch64", + "libXfixes-5.0.3-10.fc31.aarch64", + "libXft-2.3.3-2.fc31.aarch64", + "libXi-1.7.10-2.fc31.aarch64", + "libXinerama-1.1.4-4.fc31.aarch64", + "libXrandr-1.5.2-2.fc31.aarch64", + "libXrender-0.9.10-10.fc31.aarch64", + "libXtst-1.2.3-10.fc31.aarch64", + "libacl-2.2.53-4.fc31.aarch64", + "libarchive-3.4.0-1.fc31.aarch64", + "libargon2-20171227-3.fc31.aarch64", + "libassuan-2.5.3-2.fc31.aarch64", + "libattr-2.4.48-7.fc31.aarch64", + "libbasicobjects-0.1.1-43.fc31.aarch64", + "libblkid-2.34-3.fc31.aarch64", + "libcap-2.26-6.fc31.aarch64", + "libcap-ng-0.7.9-8.fc31.aarch64", + "libcollection-0.7.0-43.fc31.aarch64", + "libcom_err-1.45.3-1.fc31.aarch64", + "libcomps-0.1.11-3.fc31.aarch64", + "libcroco-0.6.13-2.fc31.aarch64", + "libcurl-7.66.0-1.fc31.aarch64", + "libdatrie-0.2.9-10.fc31.aarch64", + "libdb-5.3.28-38.fc31.aarch64", + "libdb-utils-5.3.28-38.fc31.aarch64", + "libdhash-0.5.0-43.fc31.aarch64", + "libdnf-0.35.3-6.fc31.aarch64", + "libdrm-2.4.99-2.fc31.aarch64", + "libedit-3.1-28.20190324cvs.fc31.aarch64", + "libepoxy-1.5.3-4.fc31.aarch64", + "libevent-2.1.8-7.fc31.aarch64", + "libfdisk-2.34-3.fc31.aarch64", + "libfdt-1.5.1-1.fc31.aarch64", + "libffi-3.1-23.fc31.aarch64", + "libgcc-9.2.1-1.fc31.aarch64", + "libgcrypt-1.8.5-1.fc31.aarch64", + "libgomp-9.2.1-1.fc31.aarch64", + "libgpg-error-1.36-2.fc31.aarch64", + "libgusb-0.3.0-5.fc31.aarch64", + "libidn2-2.2.0-2.fc31.aarch64", + "libini_config-1.3.1-43.fc31.aarch64", + "libjpeg-turbo-2.0.2-4.fc31.aarch64", + "libkcapi-1.1.5-1.fc31.aarch64", + "libkcapi-hmaccalc-1.1.5-1.fc31.aarch64", + "libksba-1.3.5-10.fc31.aarch64", + "libldb-2.0.7-1.fc31.aarch64", + "libmaxminddb-1.2.0-8.fc31.aarch64", + "libmetalink-0.1.3-9.fc31.aarch64", + "libmnl-1.0.4-10.fc31.aarch64", + "libmodman-2.0.1-20.fc31.aarch64", + "libmodulemd1-1.8.15-3.fc31.aarch64", + "libmount-2.34-3.fc31.aarch64", + "libndp-1.7-4.fc31.aarch64", + "libnetfilter_conntrack-1.0.7-3.fc31.aarch64", + "libnfnetlink-1.0.1-16.fc31.aarch64", + "libnfsidmap-2.4.1-1.rc1.fc31.aarch64", + "libnftnl-1.1.3-2.fc31.aarch64", + "libnghttp2-1.39.2-1.fc31.aarch64", + "libnl3-3.5.0-1.fc31.aarch64", + "libnsl2-1.2.0-5.20180605git4a062cf.fc31.aarch64", + "libpath_utils-0.2.1-43.fc31.aarch64", + "libpcap-1.9.0-4.fc31.aarch64", + "libpciaccess-0.15-2.fc31.aarch64", + "libpipeline-1.5.1-3.fc31.aarch64", + "libpng-1.6.37-2.fc31.aarch64", + "libproxy-0.4.15-14.fc31.aarch64", + "libpsl-0.21.0-2.fc31.aarch64", + "libpwquality-1.4.1-1.fc31.aarch64", + "libref_array-0.1.5-43.fc31.aarch64", + "librepo-1.10.5-1.fc31.aarch64", + "libreport-filesystem-2.10.1-2.fc31.noarch", + "libseccomp-2.4.1-1.fc31.aarch64", + "libsecret-0.19.1-1.fc31.aarch64", + "libselinux-2.9-5.fc31.aarch64", + "libselinux-utils-2.9-5.fc31.aarch64", + "libsemanage-2.9-3.fc31.aarch64", + "libsepol-2.9-2.fc31.aarch64", + "libsigsegv-2.11-8.fc31.aarch64", + "libsmartcols-2.34-3.fc31.aarch64", + "libsolv-0.7.5-3.fc31.aarch64", + "libsoup-2.68.2-1.fc31.aarch64", + "libss-1.45.3-1.fc31.aarch64", + "libssh-0.9.0-6.fc31.aarch64", + "libssh-config-0.9.0-6.fc31.noarch", + "libsss_autofs-2.2.2-1.fc31.aarch64", + "libsss_certmap-2.2.2-1.fc31.aarch64", + "libsss_idmap-2.2.2-1.fc31.aarch64", + "libsss_nss_idmap-2.2.2-1.fc31.aarch64", + "libsss_sudo-2.2.2-1.fc31.aarch64", + "libstdc++-9.2.1-1.fc31.aarch64", + "libtalloc-2.3.0-1.fc31.aarch64", + "libtasn1-4.14-2.fc31.aarch64", + "libtdb-1.4.2-1.fc31.aarch64", + "libtevent-0.10.1-1.fc31.aarch64", + "libtextstyle-0.20.1-2.fc31.aarch64", + "libthai-0.1.28-3.fc31.aarch64", + "libtiff-4.0.10-6.fc31.aarch64", + "libtirpc-1.1.4-2.rc3.fc31.aarch64", + "libunistring-0.9.10-6.fc31.aarch64", + "libusbx-1.0.22-4.fc31.aarch64", + "libuser-0.62-21.fc31.aarch64", + "libutempter-1.1.6-17.fc31.aarch64", + "libuuid-2.34-3.fc31.aarch64", + "libverto-0.3.0-8.fc31.aarch64", + "libwayland-client-1.17.0-2.fc31.aarch64", + "libwayland-cursor-1.17.0-2.fc31.aarch64", + "libwayland-egl-1.17.0-2.fc31.aarch64", + "libxcb-1.13.1-3.fc31.aarch64", + "libxcrypt-4.4.10-1.fc31.aarch64", + "libxkbcommon-0.8.4-2.fc31.aarch64", + "libxml2-2.9.9-3.fc31.aarch64", + "libyaml-0.2.2-2.fc31.aarch64", + "libzstd-1.4.2-1.fc31.aarch64", + "linux-atm-libs-2.5.1-25.fc31.aarch64", + "linux-firmware-20190923-102.fc31.noarch", + "linux-firmware-whence-20190923-102.fc31.noarch", + "lmdb-libs-0.9.23-3.fc31.aarch64", + "lua-libs-5.3.5-6.fc31.aarch64", + "lz4-libs-1.9.1-1.fc31.aarch64", + "man-db-2.8.4-5.fc31.aarch64", + "mkpasswd-5.5.2-1.fc31.aarch64", + "mokutil-0.3.0-11.fc30.aarch64", + "mpfr-3.1.6-5.fc31.aarch64", + "ncurses-6.1-12.20190803.fc31.aarch64", + "ncurses-base-6.1-12.20190803.fc31.noarch", + "ncurses-libs-6.1-12.20190803.fc31.aarch64", + "net-tools-2.0-0.55.20160912git.fc31.aarch64", + "nettle-3.5.1-3.fc31.aarch64", + "nftables-0.9.1-3.fc31.aarch64", + "npth-1.6-3.fc31.aarch64", + "openldap-2.4.47-3.fc31.aarch64", + "openssh-8.0p1-8.fc31.1.aarch64", + "openssh-clients-8.0p1-8.fc31.1.aarch64", + "openssh-server-8.0p1-8.fc31.1.aarch64", + "openssl-1.1.1d-2.fc31.aarch64", + "openssl-libs-1.1.1d-2.fc31.aarch64", + "openssl-pkcs11-0.4.10-2.fc31.aarch64", + "os-prober-1.77-3.fc31.aarch64", + "p11-kit-0.23.16.1-2.fc31.aarch64", + "p11-kit-trust-0.23.16.1-2.fc31.aarch64", + "pam-1.3.1-18.fc31.aarch64", + "pango-1.44.6-1.fc31.aarch64", + "parted-3.2.153-1.fc31.aarch64", + "passwd-0.80-6.fc31.aarch64", + "pcre-8.43-2.fc31.1.aarch64", + "pcre2-10.33-14.fc31.aarch64", + "pigz-2.4-5.fc31.aarch64", + "pinentry-1.1.0-6.fc31.aarch64", + "pixman-0.38.4-1.fc31.aarch64", + "plymouth-0.9.4-10.20191001gita8aad27.fc31.aarch64", + "plymouth-core-libs-0.9.4-10.20191001gita8aad27.fc31.aarch64", + "plymouth-scripts-0.9.4-10.20191001gita8aad27.fc31.aarch64", + "policycoreutils-2.9-5.fc31.aarch64", + "polkit-libs-0.116-4.fc31.aarch64", + "popt-1.16-18.fc31.aarch64", + "procps-ng-3.3.15-6.fc31.aarch64", + "publicsuffix-list-dafsa-20190417-2.fc31.noarch", + "python-pip-wheel-19.1.1-4.fc31.noarch", + "python-setuptools-wheel-41.2.0-1.fc31.noarch", + "python-unversioned-command-3.7.4-5.fc31.noarch", + "python3-3.7.4-5.fc31.aarch64", + "python3-asn1crypto-0.24.0-7.fc31.noarch", + "python3-attrs-19.1.0-2.fc31.noarch", + "python3-audit-3.0-0.12.20190507gitf58ec40.fc31.aarch64", + "python3-babel-2.7.0-2.fc31.noarch", + "python3-cffi-1.12.3-1.fc31.aarch64", + "python3-chardet-3.0.4-10.fc31.noarch", + "python3-configobj-5.0.6-16.fc31.noarch", + "python3-cryptography-2.6.1-2.fc31.aarch64", + "python3-dateutil-2.8.0-3.fc31.noarch", + "python3-dbus-1.2.8-6.fc31.aarch64", + "python3-decorator-4.4.0-2.fc31.noarch", + "python3-distro-1.4.0-2.fc31.noarch", + "python3-dnf-4.2.9-5.fc31.noarch", + "python3-dnf-plugins-core-4.0.9-1.fc31.noarch", + "python3-firewall-0.7.2-1.fc31.noarch", + "python3-gobject-base-3.34.0-3.fc31.aarch64", + "python3-gpg-1.13.1-3.fc31.aarch64", + "python3-hawkey-0.35.3-6.fc31.aarch64", + "python3-idna-2.8-2.fc31.noarch", + "python3-jinja2-2.10.1-2.fc31.noarch", + "python3-jsonpatch-1.21-8.fc31.noarch", + "python3-jsonpointer-1.10-16.fc31.noarch", + "python3-jsonschema-3.0.2-1.fc31.noarch", + "python3-jwt-1.7.1-3.fc31.noarch", + "python3-libcomps-0.1.11-3.fc31.aarch64", + "python3-libdnf-0.35.3-6.fc31.aarch64", + "python3-libs-3.7.4-5.fc31.aarch64", + "python3-libselinux-2.9-5.fc31.aarch64", + "python3-libsemanage-2.9-3.fc31.aarch64", + "python3-markupsafe-1.1.1-2.fc31.aarch64", + "python3-oauthlib-3.0.2-2.fc31.noarch", + "python3-pip-19.1.1-4.fc31.noarch", + "python3-ply-3.11-3.fc31.noarch", + "python3-policycoreutils-2.9-5.fc31.noarch", + "python3-prettytable-0.7.2-18.fc31.noarch", + "python3-pycparser-2.14-20.fc31.noarch", + "python3-pyrsistent-0.15.4-1.fc31.aarch64", + "python3-pyserial-3.4-3.fc31.noarch", + "python3-pysocks-1.7.0-2.fc31.noarch", + "python3-pytz-2019.2-1.fc31.noarch", + "python3-pyyaml-5.1.2-1.fc31.aarch64", + "python3-requests-2.22.0-3.fc31.noarch", + "python3-rpm-4.15.0-6.fc31.aarch64", + "python3-setools-4.2.2-1.fc31.aarch64", + "python3-setuptools-41.2.0-1.fc31.noarch", + "python3-six-1.12.0-2.fc31.noarch", + "python3-slip-0.6.4-16.fc31.noarch", + "python3-slip-dbus-0.6.4-16.fc31.noarch", + "python3-unbound-1.9.3-1.fc31.aarch64", + "python3-urllib3-1.25.3-4.fc31.noarch", + "qemu-guest-agent-4.1.0-2.fc31.aarch64", + "qrencode-libs-4.0.2-4.fc31.aarch64", + "readline-8.0-3.fc31.aarch64", + "rest-0.8.1-6.fc31.aarch64", + "rootfiles-8.1-25.fc31.noarch", + "rpm-4.15.0-6.fc31.aarch64", + "rpm-build-libs-4.15.0-6.fc31.aarch64", + "rpm-libs-4.15.0-6.fc31.aarch64", + "rpm-plugin-selinux-4.15.0-6.fc31.aarch64", + "rpm-plugin-systemd-inhibit-4.15.0-6.fc31.aarch64", + "rpm-sign-libs-4.15.0-6.fc31.aarch64", + "sed-4.5-4.fc31.aarch64", + "selinux-policy-3.14.4-37.fc31.noarch", + "selinux-policy-targeted-3.14.4-37.fc31.noarch", + "setup-2.13.3-2.fc31.noarch", + "shadow-utils-4.6-16.fc31.aarch64", + "shared-mime-info-1.14-1.fc31.aarch64", + "shim-aa64-15-8.aarch64", + "spice-vdagent-0.19.0-4.fc31.aarch64", + "sqlite-libs-3.29.0-2.fc31.aarch64", + "sssd-client-2.2.2-1.fc31.aarch64", + "sssd-common-2.2.2-1.fc31.aarch64", + "sssd-kcm-2.2.2-1.fc31.aarch64", + "sssd-nfs-idmap-2.2.2-1.fc31.aarch64", + "sudo-1.8.28-1.fc31.aarch64", + "systemd-243-4.gitef67743.fc31.aarch64", + "systemd-bootchart-233-5.fc31.aarch64", + "systemd-libs-243-4.gitef67743.fc31.aarch64", + "systemd-pam-243-4.gitef67743.fc31.aarch64", + "systemd-rpm-macros-243-4.gitef67743.fc31.noarch", + "systemd-udev-243-4.gitef67743.fc31.aarch64", + "trousers-0.3.13-13.fc31.aarch64", + "trousers-lib-0.3.13-13.fc31.aarch64", + "tss2-1331-2.fc31.aarch64", + "tzdata-2019c-1.fc31.noarch", + "unbound-libs-1.9.3-1.fc31.aarch64", + "util-linux-2.34-3.fc31.aarch64", + "vim-minimal-8.1.2102-1.fc31.aarch64", + "which-2.21-15.fc31.aarch64", + "whois-nls-5.5.2-1.fc31.noarch", + "xen-libs-4.12.1-1.fc31.aarch64", + "xen-licenses-4.12.1-1.fc31.aarch64", + "xfsprogs-5.1.0-2.fc31.aarch64", + "xkeyboard-config-2.27-2.fc31.noarch", + "xz-5.2.4-6.fc31.aarch64", + "xz-libs-5.2.4-6.fc31.aarch64", + "yajl-2.1.0-13.fc31.aarch64", + "yum-4.2.9-5.fc31.noarch", + "zchunk-libs-1.1.2-3.fc31.aarch64", + "zlib-1.2.11-19.fc31.aarch64" + ], + "partition-table": "gpt", + "partition-table-id": "8DFDFF87-C96E-EA48-A3A6-9408F1F6B1EF", + "partitions": [ + { + "bootable": false, + "fstype": "vfat", + "label": "EFI\\ System", + "partuuid": "02C1E068-1D2F-4DA3-91FD-8DD76A955C9D", + "size": 498073600, + "start": 1048576, + "type": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B", + "uuid": "46BB-8120" + }, + { + "bootable": false, + "fstype": "ext4", + "label": null, + "partuuid": "8D760010-FAAE-46D1-9E5B-4A2EAC5030CD", + "size": 1647296000, + "start": 500170752, + "type": "0FC63DAF-8483-4772-8E79-3D69D8477DE4", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:996:993::/var/lib/chrony:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "redhat:x:1000:1000::/home/redhat:/bin/bash", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:998:995:systemd Core Dumper:/:/sbin/nologin", + "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "systemd-timesync:x:997:994:systemd Time Synchronization:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:999:999:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/boot/System.map-5.3.7-301.fc31.aarch64": ".M.......", + "/boot/efi/EFI": ".M.......", + "/boot/efi/EFI/fedora/grubaa64.efi": ".......T.", + "/boot/initramfs-5.3.7-301.fc31.aarch64.img": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/proc": ".M.......", + "/run/cryptsetup": ".M.......", + "/sys": ".M.......", + "/var/log/btmp": ".M.......", + "/var/log/journal": ".M....G..", + "/var/log/lastlog": ".M....G.." + }, + "missing": [] + }, + "services-disabled": [ + "arp-ethers.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "console-getty.service", + "debug-shell.service", + "exit.target", + "fstrim.timer", + "halt.target", + "kexec.target", + "loadmodules.service", + "nftables.service", + "nis-domainname.service", + "poweroff.target", + "proc-sys-fs-binfmt_misc.mount", + "rdisc.service", + "remote-cryptsetup.target", + "runlevel0.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-boot-check-no-failures.service", + "systemd-bootchart.service", + "systemd-network-generator.service", + "systemd-networkd-wait-online.service", + "systemd-networkd.service", + "systemd-networkd.socket", + "systemd-pstore.service", + "systemd-resolved.service", + "systemd-time-wait-sync.service", + "systemd-timesyncd.service", + "tcsd.service" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "cloud-init.service", + "ctrl-alt-del.target", + "dbus-broker.service", + "dbus-org.fedoraproject.FirewallD1.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dbus.service", + "dbus.socket", + "dbxtool.service", + "dnf-makecache.timer", + "firewalld.service", + "getty@.service", + "import-state.service", + "messagebus.service", + "qemu-guest-agent.service", + "reboot.target", + "remote-fs.target", + "runlevel6.target", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "unbound-anchor.timer" + ] + } +} \ No newline at end of file diff --git a/test/cases/fedora_31-aarch64-qcow2-boot.json b/test/cases/fedora_31-aarch64-qcow2-boot.json new file mode 100644 index 0000000..33ff308 --- /dev/null +++ b/test/cases/fedora_31-aarch64-qcow2-boot.json @@ -0,0 +1,11218 @@ +{ + "boot": { + "type": "qemu" + }, + "compose-request": { + "distro": "fedora-31", + "arch": "aarch64", + "image-type": "qcow2", + "repositories": [ + { + "baseurl": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ], + "filename": "disk.qcow2", + "blueprint": { + "name": "qcow2-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:0064998ad79a6250297b379852b5a06932d8e074270bea02d75888758755bd23": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.aarch64.rpm" + }, + "sha256:0064a42567b657d85831ec162a314cd00f7befe48ce634387463754677206c9c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gettext-0.20.1-2.fc31.aarch64.rpm" + }, + "sha256:00e59535d45094b7d47e25c93d21179f3138839968776107df99fa0678f1440f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-libelf-0.177-1.fc31.aarch64.rpm" + }, + "sha256:01ea4ecad746f1309b5c943f2b2709f7e5400d33e4d51c85401205ed18d61621": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libX11-1.6.8-3.fc31.aarch64.rpm" + }, + "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:02f7f1cdd5cbe11b16e093686db5c584a68db4e6b1015c4d36c0246a54f801bb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_certmap-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:03559557dbf64805e44d7e956f6b228c90831766fd1f485eecdfddf7a646a220": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kbd-2.0.4-14.fc31.aarch64.rpm" + }, + "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/linux-firmware-20190923-102.fc31.noarch.rpm" + }, + "sha256:03b9d49b78b7e758eecce6a25782767ec5dc921d28f053b17a651b1c8bb96d7b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXtst-1.2.3-10.fc31.aarch64.rpm" + }, + "sha256:0458f6a42cd644322b6eb24b01f0f75de47d5e10ae077797dfada1ce2a1f7fcd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dconf-0.34.0-1.fc31.aarch64.rpm" + }, + "sha256:047f9e29fcfa56be98ca3f42249f3ccb2a93df99f2438e3983e2064025f0d79d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jsonschema-3.0.2-1.fc31.noarch.rpm" + }, + "sha256:04826477197ec239d756f81cb6d38fde2f65e71499a8dbaf0c666d93084f1ea3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdatrie-0.2.9-10.fc31.aarch64.rpm" + }, + "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:05438efee748687851bce7c03d79ac8823e5142145b4dced03195b0a9a459aae": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rsync-3.1.3-9.fc31.aarch64.rpm" + }, + "sha256:054f0851c8b42292ac5c24ea649764b022dacc6d40a00e333abacc67e2c2a215": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sssd-client-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm" + }, + "sha256:06512e0f2546baf5c47a058d872fc62c39156bc86b5619eb841b435e2cc61e32": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-release-cloud-31-1.noarch.rpm" + }, + "sha256:06cf2f5439e0ce2c7fc655bdf4868d3c47a5fbe5b71e9dc305232a7732896e14": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/w/which-2.21-15.fc31.aarch64.rpm" + }, + "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-six-1.12.0-2.fc31.noarch.rpm" + }, + "sha256:077e72f02d2eef2a2bfd8ab057527a02005806e731303fbff1e28f61716f2943": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sssd-nfs-idmap-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:07cd9ddc7f7a16dc9739647af90706cfbcf70b281f5474e622b0769e211e0dc8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/u/util-linux-2.34-3.fc31.aarch64.rpm" + }, + "sha256:07f4ccd9f3cb20ceb4483adb673adfef15394b246bd93a84f169eb07acb68d71": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/passwd-0.80-6.fc31.aarch64.rpm" + }, + "sha256:089d4c5c48e89cd1444f283571fce20fbf5f1b20f3a5ff1ce74266bbc2cd0fec": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/checkpolicy-2.9-2.fc31.aarch64.rpm" + }, + "sha256:0a4100f50b31df500afc5d255dd87117553df7032447f3e226196fd64f9c3f47": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.aarch64.rpm" + }, + "sha256:0a80e2a0ede76c98337c220f01dfadacace037b48f09fe072c5d33f356e50b8e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssh-server-8.0p1-8.fc31.1.aarch64.rpm" + }, + "sha256:0ae87f94df2e114f287d60e9041ac159349f51322e32eeefa19a96db0acb78e7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pigz-2.4-5.fc31.aarch64.rpm" + }, + "sha256:0b109cfab724680af15e7be85cf9f4f4828cd8290f0aa8fcebcbb14cd176be94": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/initscripts-10.02-2.fc31.aarch64.rpm" + }, + "sha256:0b1ddcc8c3096814bc5027133fb077ef587b49a1a4e4d6426327c75cf2066b11": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/alternatives-1.11-5.fc31.aarch64.rpm" + }, + "sha256:0b2a6b7e3b62ff9c02ec3012f08fbf396a7990bf9599b49b75eecbee3b257f7f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgpg-error-1.36-2.fc31.aarch64.rpm" + }, + "sha256:0b8baef3612880639ed59ae79475086aac8ce236fd35977e0d87305d0bb9a529": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pixman-0.38.4-1.fc31.aarch64.rpm" + }, + "sha256:0c49f27ae0aaf95fbdc52cfb9406c41eefff41b205f85fdc6ef6787ec3af5146": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libselinux-2.9-5.fc31.aarch64.rpm" + }, + "sha256:0cb1a66cb3bb44797a8aeb47db85db1f6c0fcf4d4571d8a5f8981f83b51c08af": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/graphite2-1.3.13-1.fc31.aarch64.rpm" + }, + "sha256:0edff1a5f04f7f5d47537b4c049b95331f9ad33963c9c63ca4b13345a37296d4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fipscheck-1.5.0-7.fc31.aarch64.rpm" + }, + "sha256:0f3591f036f0be85a9d28e9099d43a8b2e5a500a9588825c1dd994d1a323ceba": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/coreutils-8.31-4.fc31.aarch64.rpm" + }, + "sha256:0f661b922a9e9cbe82e948ec1d83c6fca6e61e08de50815a5b6c069a64f4e883": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXrandr-1.5.2-2.fc31.aarch64.rpm" + }, + "sha256:0ff534e46d982b5a213eb562e3cb30d1935a25a9f433d325457069eec9131217": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-bootchart-233-5.fc31.aarch64.rpm" + }, + "sha256:101fa551ae1ae1885c1627fec47745eb0071ae675a762002e02c0563de89ecbd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cloud-utils-growpart-0.31-3.fc31.noarch.rpm" + }, + "sha256:1088699171a35873eb5a776f0212ceff2bc9d67e3f1d8f2e107bbf751c36ca90": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cracklib-2.9.6-21.fc31.aarch64.rpm" + }, + "sha256:1135e96b6f9ed29e4ed4c0f060876891a244442a503f0b18ab238589da20d464": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jinja2-2.10.1-2.fc31.noarch.rpm" + }, + "sha256:1138343dfb107de07f54d4723aee2686fdd1af3e4532d14bd399b9b6b7873040": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/jansson-2.12-4.fc31.aarch64.rpm" + }, + "sha256:11e8ee935d9c9d349f4c081d035fc4ee34539af23ef8122e6901b22cf97f346f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsigsegv-2.11-8.fc31.aarch64.rpm" + }, + "sha256:121e2a4e79f6dbf37af2182cb12ff28345db993a7f83de344f6f5fbcf5a705a5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sssd-kcm-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:12c732f4a960848bd4fbc8111c2c0cf584799b1fdf0eb89c2cdcb26da5bc03b8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnupg2-2.2.17-2.fc31.aarch64.rpm" + }, + "sha256:143c50c0663f963c7689c1cec43b81cf1433d5d3b67eb8233ba06506c1b3e095": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jwt-1.7.1-3.fc31.noarch.rpm" + }, + "sha256:1472adb267192ca8a323e544fd9749c4765334fc5779e8de4ee583eff77fc078": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-client-1.17.0-2.fc31.aarch64.rpm" + }, + "sha256:14a759b4daf287d66f5b803b0fbb52621f8429607be109e5d3c313a57cc276e2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.aarch64.rpm" + }, + "sha256:159972ccc01cd5840c2aad04818efc965b64c5120b1fcce92a47f45ab1abf4a5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXcomposite-0.4.4-17.fc31.aarch64.rpm" + }, + "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dnf-plugins-core-4.0.9-1.fc31.noarch.rpm" + }, + "sha256:1738cf24111bcd0bff08880c4d5efa624c09a2080c901f67ab032ed201a8751e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdb-5.3.28-38.fc31.aarch64.rpm" + }, + "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm" + }, + "sha256:181173a9353f593105978b8e4038b7bf53fd22c63f4514fd271a74d48f9c59f8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/bash-5.0.7-3.fc31.aarch64.rpm" + }, + "sha256:19217c1730a3f16e15eedd95e3f97471097a1bd066f7783fd273cfb392f4042e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-tools-2.02-100.fc31.aarch64.rpm" + }, + "sha256:19a9152e410c8fdd62220e79dcf4dc3d143ca04c75a09c332066ad8cc94b972e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-rsa-3.4.2-10.fc31.noarch.rpm" + }, + "sha256:1b65944efe48ba0cca34011891480a1db29a7e95dad058376bfca34d68fb0791": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-ply-3.11-3.fc31.noarch.rpm" + }, + "sha256:1b85657077726361a4b157a909796649fe93131fdc4aa67fd5329adc8d2fc833": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.aarch64.rpm" + }, + "sha256:1bdeed5fd5907e0cacd5706ebc93ade09462a0c71e2316d9841e33a896b99b87": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/c-ares-1.15.0-4.fc31.aarch64.rpm" + }, + "sha256:1c2edf26d16b55bac2824452c1c584ff52acf8477920f384f6019f647c241450": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lz4-libs-1.9.1-1.fc31.aarch64.rpm" + }, + "sha256:1d530a23a8ea2b831068593fe6aa7a32923c6276504def5a85ad065aaac9ac5f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-6.1-12.20190803.fc31.aarch64.rpm" + }, + "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kbd-misc-2.0.4-14.fc31.noarch.rpm" + }, + "sha256:1e049e86c5dd5c4d6737d47dd194d553ffbd65c81a4077cf6e1029a0fde80fb5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-requests-2.22.0-3.fc31.noarch.rpm" + }, + "sha256:1f44142da3bf5e09b98488b40ed8a2d5dbd841c36bb4553749e6d65d7fe5c15c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-setools-4.2.2-1.fc31.aarch64.rpm" + }, + "sha256:20cc74172d531506391309e8f82c6512404ada35f22c68fcd0b83a01dc6e0ca8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpwquality-1.4.1-1.fc31.aarch64.rpm" + }, + "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm" + }, + "sha256:21d9ceffd6fb52d235a95e4d7708d719eac758a9dfd80ba2d6119dfdc46c80ff": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/chrony-3.5-4.fc31.aarch64.rpm" + }, + "sha256:23908e2eae2ccfd2efb1d19cdf46e3dca4680ac2d562c1c96f7fb0d22859fc82": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.aarch64.rpm" + }, + "sha256:23e335d288f55da26dc77e0d1ceb7cbe4e3890b4e28ff4a2435fc4481a6e737f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libref_array-0.1.5-43.fc31.aarch64.rpm" + }, + "sha256:23e8c23c89737665a5288a3a171548e94898be9ed4a24c056d8bc851c6800090": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtasn1-4.14-2.fc31.aarch64.rpm" + }, + "sha256:253f9f540248a0bdd537ee8ea4f670752af74d85be98ea81593a30710e1e5808": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/linux-atm-libs-2.5.1-25.fc31.aarch64.rpm" + }, + "sha256:2575f8d1fb953934730b9fe6803bf3de12669dcee78852057ea4e88f9d4d76a4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libevent-2.1.8-7.fc31.aarch64.rpm" + }, + "sha256:264828f11342a94f056fb27a2e78fc5e14226230b3dbac8bdad6a4c8598fd24f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.aarch64.rpm" + }, + "sha256:284d46ebd3d3fd4a915b624a75e9931c948807fcb13fed01681e623d0ba7b1ce": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lmdb-libs-0.9.23-3.fc31.aarch64.rpm" + }, + "sha256:28cdab6faa95e1d7d1c32d977627ef5a86b262e2b0e20e76ddd73f598ee126e4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-all-langpacks-2.30-5.fc31.aarch64.rpm" + }, + "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dejavu-sans-fonts-2.37-2.fc31.noarch.rpm" + }, + "sha256:2aafea82072ad28a8b662e32902f66b47166a00b5c9cf19b1dd589f39776560f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXi-1.7.10-2.fc31.aarch64.rpm" + }, + "sha256:2ad8824aa48378aa741fbd863104d950ad4f669566af2d4f433be6d9afd8ead6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/shadow-utils-4.6-16.fc31.aarch64.rpm" + }, + "sha256:2b1052455234b751e869f22c496bb660dec53eafe198673bab25053e394e41cb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_idmap-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:2b24b5729cd74e3b1efe261bfd732fd1995b0e64d76587a3d90762d77cc58c77": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libunistring-0.9.10-6.fc31.aarch64.rpm" + }, + "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm" + }, + "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm" + }, + "sha256:2d9a2e736dd5231df3c5c748ce0ba5a75a409dacfe73f14676781f32d565a7df": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jsonpointer-1.10-16.fc31.noarch.rpm" + }, + "sha256:2dd8505a96714cdb79829a1377e36a53e05cc9b65a7f35a258ca3e4aaa76c700": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.aarch64.rpm" + }, + "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm" + }, + "sha256:2fc552b80866318c0ac934f5385fd2090743701639c318b75138ae985ff5606a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libarchive-3.4.0-1.fc31.aarch64.rpm" + }, + "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/langpacks-en-2.0-7.fc31.noarch.rpm" + }, + "sha256:30e07680d23bfb5d4b2727893337619c56f13b46daec2f13f8985f642bf84250": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.aarch64.rpm" + }, + "sha256:311729a146f8833ff882370348d69313322dcf7586b68d5eed192eb633dcd58a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libndp-1.7-4.fc31.aarch64.rpm" + }, + "sha256:31dacda6745f326be70d854d50ae5d3cd0c9d4f19aeab6b4d09920e1436d8bdc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libini_config-1.3.1-43.fc31.aarch64.rpm" + }, + "sha256:32cc0c295cd013db597cd31868736be3708edb25ab1952fdd0ed879ec5e8d191": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libsemanage-2.9-3.fc31.aarch64.rpm" + }, + "sha256:32cc578c8da626a8c1a5316a59d482967a32547be6c077f73fb90e11fb0f1e6a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pyserial-3.4-3.fc31.noarch.rpm" + }, + "sha256:32d56c08f75c7626f1a0efd7aa05ca2ea3649d55445b5ac42a2f7f10fad8b46b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pyrsistent-0.15.4-1.fc31.aarch64.rpm" + }, + "sha256:3308454f1353d5aced0a9574bc969ae272923ef1faa425bd9080de6e56e1bcbb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmaxminddb-1.2.0-8.fc31.aarch64.rpm" + }, + "sha256:332ef2695e27190536747f53bab03ba5df0ca903564f6071623d99fa524d6d2f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mokutil-0.3.0-11.fc30.aarch64.rpm" + }, + "sha256:339895e6b901ff4c81966893ec7da9848da3acea26e5b202033bfb79dfcbb6cb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mpfr-3.1.6-5.fc31.aarch64.rpm" + }, + "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dejavu-fonts-common-2.37-2.fc31.noarch.rpm" + }, + "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm" + }, + "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm" + }, + "sha256:36ce07aa1f90dfdf5ae9824acff24fc3aafe5633b07a022732ca06258e0255b6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsemanage-2.9-3.fc31.aarch64.rpm" + }, + "sha256:3975c15d461cebe50d1f179fb86d288c18f643c32f179bbab13425596ab64001": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/keyutils-libs-1.6-3.fc31.aarch64.rpm" + }, + "sha256:3976706367650c755852d995bbe8c4e6bbd13b6e8e0148b7beddb4aba3679d8a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.aarch64.rpm" + }, + "sha256:3a7d7619061a4adb275ef4b41d993375ad7863863741624186add801800e524f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-1.12.16-3.fc31.aarch64.rpm" + }, + "sha256:3ad68b7569e311a1ca7da4da7b42021a7acb001ab4b2cc6e63b3ba0f87cbd55c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/harfbuzz-2.6.1-2.fc31.aarch64.rpm" + }, + "sha256:3b16753c7590bc968a693e97ce9d318d58e1483fd2999a874becd95abc9d35ff": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gcr-3.33.4-1.fc31.aarch64.rpm" + }, + "sha256:3e6b2cfce9c4a62f7cde13bb6ae135d5f6f0d6cb179ab3dbd61ba1533477f257": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/ipcalc-0.2.5-3.fc31.aarch64.rpm" + }, + "sha256:3fb9cec5d598a549e97041993399d49c5943821b1f3441881cf15cb26f38e437": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libkcapi-1.1.5-1.fc31.aarch64.rpm" + }, + "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-release-31-1.noarch.rpm" + }, + "sha256:424e1777ae71117d20055ffa5f0ed2ead59a8076528450cf7536e18c70624bd8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssh-8.0p1-8.fc31.1.aarch64.rpm" + }, + "sha256:4290088d905017724f6c909cb1b3193055a6aff62cd20e39ea196694f90753c8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gpgme-1.13.1-3.fc31.aarch64.rpm" + }, + "sha256:42945876fb8932bad3e50b50349af4bdabe713d7be1c8efc1b0f7b042e556aa5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/tss2-1331-2.fc31.aarch64.rpm" + }, + "sha256:429cf175b6c3b2bedcabf3391ad3166fe6e62259877f309e57500d2c7f1f1882": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmount-2.34-3.fc31.aarch64.rpm" + }, + "sha256:42a4e01c47e28b71cafb658a5993b7f4b7692ac6b916878d580fecab7ae9d16c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.aarch64.rpm" + }, + "sha256:42ae595f75734daaed3430e1117d3cb05bd9a18108506bb9600125693d3d1688": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-langpack-en-2.30-5.fc31.aarch64.rpm" + }, + "sha256:436c2f09d2de629da293ab82af47b7697f4a8c151127cbd993d0e8605a4f423c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.aarch64.rpm" + }, + "sha256:44a92faf198bf015f5e94cf42ae615215fe0a6c0697b1f6c32d205bd450e7ce4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pcre-8.43-2.fc31.1.aarch64.rpm" + }, + "sha256:4549e51322d0b10016f1daa8dedc807fddf7d2d4e77719baa696de15b88821bb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/jbigkit-libs-2.1-17.fc31.aarch64.rpm" + }, + "sha256:456252f83ba91a1150f180a81998c3acdd71be57a324cf84d6d842a063c56a12": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/heat-cfntools-1.4.2-9.fc31.noarch.rpm" + }, + "sha256:46acc45e148eea376c3aa8e83a4d3bf1cf66fa35ccc670f592017428ce75ca77": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.aarch64.rpm" + }, + "sha256:46b0c36e90fd16371444eb5376fc01232b6e64073e42ed1f141344a9aadbe568": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXcursor-1.1.15-6.fc31.aarch64.rpm" + }, + "sha256:47383173cbb135c2590998a4e82c6f9d40a516450d2fbd1e169ace92337b7fd5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-markupsafe-1.1.1-2.fc31.aarch64.rpm" + }, + "sha256:477474e74c5f30884f0a4571445ecf987b521f61139fc0ba7d516e075f47e7ce": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/v/vim-minimal-8.1.2102-1.fc31.aarch64.rpm" + }, + "sha256:48ee663f069c5019c842f316216ef3bf8dfcbbec479c98d1f2b24749c22e57f3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtalloc-2.3.0-1.fc31.aarch64.rpm" + }, + "sha256:49941a1041cf1e9a9df33aec7f0007f40cb1c815b384270cef23ca80a0ceedb5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grubby-8.40-36.fc31.aarch64.rpm" + }, + "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm" + }, + "sha256:4bb03b2162523fa694e0e44f46b04263ff0f5dab22c3e93124ec9b5650af2002": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/deltarpm-3.6.2-2.fc31.aarch64.rpm" + }, + "sha256:4c55460197fe24d0a105e3071824a933069e0b655910fd7ee7335e2396de15dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXft-2.3.3-2.fc31.aarch64.rpm" + }, + "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm" + }, + "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm" + }, + "sha256:4cca3f986ddbd38cfbfb6d1c8d336a1aaed78f7da1f38356ce1e034ba35ec492": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-attrs-19.1.0-2.fc31.noarch.rpm" + }, + "sha256:4d4853ac550a0cfc5b3bcbcb7f12c81461393a6aa0e96a23648985f8a7f2e8e2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/os-prober-1.77-3.fc31.aarch64.rpm" + }, + "sha256:4de89d25d09c57b09a51ab93fdf84ade211e835c16d3ba6e4e261dcc0c4e50a1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gzip-1.10-1.fc31.aarch64.rpm" + }, + "sha256:4e365f48d5c85b82f71e8d000d00cdf7ed3c23cd94c31fbf3543572413541c3d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcap-ng-0.7.9-8.fc31.aarch64.rpm" + }, + "sha256:4f37b1e322e3001b076e0128541cc82c180d7054b1c0b7200f46fda4d654cd71": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/librepo-1.10.5-1.fc31.aarch64.rpm" + }, + "sha256:4fe97b617adfa7c0f97ba5b2b6e1c0d2e2b15c54ba8db66fc389cacc0f1b2b60": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libuser-0.62-21.fc31.aarch64.rpm" + }, + "sha256:500d0a1b49962ec79ca00224528d6e599d3845eb60b8b13a678d03edfaa755ec": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXfixes-5.0.3-10.fc31.aarch64.rpm" + }, + "sha256:504971d079493a49afb8fb7f067f5dfcc59f3e007afcc63734c15fe1066e4b4d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-broker-21-6.fc31.aarch64.rpm" + }, + "sha256:504b334756e12eefb42d44e53da61fb4321b860e3b5f380b5c21c5c3784a8c75": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/net-tools-2.0-0.55.20160912git.fc31.aarch64.rpm" + }, + "sha256:513e24bc56f483b171664ea4dec51cc0cce1f9cc8f4939cde8a65ea976ed952d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-rpm-4.15.0-6.fc31.aarch64.rpm" + }, + "sha256:51f15beba5e5bfc6ff646741b3fbaa3a484ebb40fd8c6c59b8f1f6346dd93e93": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libssh-0.9.0-6.fc31.aarch64.rpm" + }, + "sha256:54c024db70df7966590050dfc5dcc1315174e10c3a57e118ea10178238d70889": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-1.1.1d-2.fc31.aarch64.rpm" + }, + "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm" + }, + "sha256:563f82b7c56043ed5a5ff55dcc643bcc5ac2a1e9ae940481f1c21595a83ba60a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/efi-filesystem-4-3.fc31.noarch.rpm" + }, + "sha256:566a389a620f634ab341a9a39cffdb1c607b4682224cf3d5ac530b6c57c78d0f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcap-2.26-6.fc31.aarch64.rpm" + }, + "sha256:56f3d59b74bf8ceafea695d10fb7ad4672ec93f824ef9b0508c7bcdedeffb101": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnghttp2-1.39.2-1.fc31.aarch64.rpm" + }, + "sha256:5745966147d1651d663d9e7d37a740ebbb4daee49b5cb7a2e61375ea6b37404e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/expat-2.2.8-1.fc31.aarch64.rpm" + }, + "sha256:575640462a8c2d0687ea225cc7b6bbf7aa0814e311619ddf6cd16e1bc22f9513": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libksba-1.3.5-10.fc31.aarch64.rpm" + }, + "sha256:57a9aff6b8d5ecdb66015e4dfcec0a171ae18751e1d5f9a339361cc45b9a8e2f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.aarch64.rpm" + }, + "sha256:57bd1ce5d776daca117795bc8e3852f1d29a6fc3fc1edd21729d161de2d7798d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtiff-4.0.10-6.fc31.aarch64.rpm" + }, + "sha256:58a44f9472918a511d3eee0b3f08926dab2ebf4994584403bd196e6c92a06f5a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xz-5.2.4-6.fc31.aarch64.rpm" + }, + "sha256:58c8a3d4ac7c8c318b5596b192dbd0350a1122983b69bfc1cb5eb3ecec5b7cf6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXext-1.3.4-2.fc31.aarch64.rpm" + }, + "sha256:59f289c6f3b0180ae3eddaa974e2f972bf15c48135a2abed9eb2f72dfdae1be4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXau-1.0.9-2.fc31.aarch64.rpm" + }, + "sha256:5a32c492b921e9287422006f255833605b328f3efd071609673be161bb4e7f04": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libstdc++-9.2.1-1.fc31.aarch64.rpm" + }, + "sha256:5a7e957102a23c9924398fe45f5cdec66edcd10adcad7130d6ebf02c2706ad49": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-policycoreutils-2.9-5.fc31.noarch.rpm" + }, + "sha256:5b75073853ff34026cf180d7466314783a7a81defaa43e6b7416a38d9f19230b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libepoxy-1.5.3-4.fc31.aarch64.rpm" + }, + "sha256:5ba547e1c2c515b3ca091e04c0a6b15b297e25b567a6613a07bd2bee41f39684": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pango-1.44.6-1.fc31.aarch64.rpm" + }, + "sha256:5d87d829a1d939c520b25f1c790cd1f3bd6c8b769f4f21303ec5e16a3b509445": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sed-4.5-4.fc31.aarch64.rpm" + }, + "sha256:5e2a37ee7e1147a446be67d63b1be55f2e82c0ae0a84dd1afc6a3fec64e62804": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libblkid-2.34-3.fc31.aarch64.rpm" + }, + "sha256:5ef4f8487a78a43f7502c055ac77c047ce159da5641e5b61c2669395ae1efe62": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdb-utils-5.3.28-38.fc31.aarch64.rpm" + }, + "sha256:5f2bdb8f9a18257ee80a243e1be96e3ef6fa660e37fdf7b4443d8e8f7abf86ef": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.aarch64.rpm" + }, + "sha256:6075f3af3dc794c7c91fc4e46e8b286ff6094156516eca1caee5c3b299aea9bd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/polkit-pkla-compat-0.1-15.fc31.aarch64.rpm" + }, + "sha256:608a967cbdbad6b7320060e986bf8f8e7f6b61bff5ae6571006397b46a60771c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libbasicobjects-0.1.1-43.fc31.aarch64.rpm" + }, + "sha256:611b0995f8475747341db33373ec0178afcb724183aada71b5d3a2c437d19527": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dhcp-client-4.4.1-15.fc31.aarch64.rpm" + }, + "sha256:618e9a7e3f1f8191beee70d3ad1c8754870887d251480e7e6dd1f3de2d8226d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.aarch64.rpm" + }, + "sha256:64206147fbbabe1e050f17442a2a3d1458b27beea0d8f3ff9e258a2842dd7a01": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/q/qemu-img-4.1.0-2.fc31.aarch64.rpm" + }, + "sha256:64b0063f6b3a42b712c0ee622328e36ddf94a15da547e3c8da3a4191e0941c92": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libassuan-2.5.3-2.fc31.aarch64.rpm" + }, + "sha256:6728ee255cb8c80b85f6d610bfd795025939a77d2591ad61fe1c4f9d657c386e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/trousers-lib-0.3.13-13.fc31.aarch64.rpm" + }, + "sha256:67bbf2a262929b1b4c2fb9532c471da5ab2c0f642b0df770cf947c0131a9e1ad": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libselinux-2.9-5.fc31.aarch64.rpm" + }, + "sha256:682af90a049fa78429d5ebd194700609f762e59ceb6c4ca28b17e7f4fd1683aa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-prettytable-0.7.2-18.fc31.noarch.rpm" + }, + "sha256:69f2c758068234b1abc39ffaf94c8825ae4baa9810cc54e5d49a5c891fa98435": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libkcapi-hmaccalc-1.1.5-1.fc31.aarch64.rpm" + }, + "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm" + }, + "sha256:6b11c1e14d4a02edf8beee776f9f896729bd0f28c66cb4c1d2bd021cdffc6aa0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gtk3-3.24.12-3.fc31.aarch64.rpm" + }, + "sha256:6b2e3b36c2a3e988f40548688b32ef3ce2e4c7906127215c82736189684a95a6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgomp-9.2.1-1.fc31.aarch64.rpm" + }, + "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm" + }, + "sha256:6bc6909c53c0eb2bad7640b3fb79da5cacf5fd8951dee08347b8d18df1b004f8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdnf-0.35.3-6.fc31.aarch64.rpm" + }, + "sha256:6c6f1152899318bdc0500cfb0b0cdbbc19ba0e017b5888ece1358250caa2629f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pytz-2019.2-1.fc31.noarch.rpm" + }, + "sha256:6ce37675749741e4ea05e934aa5b7376d596cc117bd317199d0a15e2236aa058": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-plugin-selinux-4.15.0-6.fc31.aarch64.rpm" + }, + "sha256:6d4c3ae013d07e50d085b3419dfd41ac79ba11ada62d8c4570d21764ef6f11ec": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.aarch64.rpm" + }, + "sha256:6e76674266f1e136186e3f005ddbf13791b1fea78cd30e8501f3dd1b209fa9f2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.aarch64.rpm" + }, + "sha256:6e78ce3d460b7e1377f487fed5563999fb44d310c441798a4d23d34960e23d45": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.aarch64.rpm" + }, + "sha256:6ed7f318c5e93b59254d7b7652131f33db713eeb61f52413f21e533069ed24bf": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pycparser-2.14-20.fc31.noarch.rpm" + }, + "sha256:6f7bd7a58d5aed77bbab94aa38edcbc4cac924d72ab6c72ce718f24b6528e1a5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdhash-0.5.0-43.fc31.aarch64.rpm" + }, + "sha256:700acef9fc8051726700645696fd67b0fc3b7fec08290ef9c2964fe7a9d3e8cd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-audit-3.0-0.12.20190507gitf58ec40.fc31.aarch64.rpm" + }, + "sha256:7027d2c6a004469720e3c64eb7fcb2ace1fffd61ec4380afbf875d59a3876f3a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libuuid-2.34-3.fc31.aarch64.rpm" + }, + "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm" + }, + "sha256:7102de1c840d5b915a40fde5c408f182d677ecdd5126dedf033ebb63b5419607": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grep-3.3-3.fc31.aarch64.rpm" + }, + "sha256:71ec6fd79756af905e474553f4ca7ae6985e32615df0ee2f2f487c8496e7160f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/avahi-libs-0.7-20.fc31.aarch64.rpm" + }, + "sha256:7292bf1d13ef336ef411ef695f87c7c7ecd21a13e05c86cc475930ca61117503": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-libs-4.15.0-6.fc31.aarch64.rpm" + }, + "sha256:72bc6a2b459ee27dcd7c213d3aab5a993fc90fcffba2ef02fab7ae3857d379f7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/freetype-2.10.0-3.fc31.aarch64.rpm" + }, + "sha256:73a7249de97f0ad66bc1a867ac5b5d08b741ab152d4dd7ce45cc231d64126b58": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-asn1crypto-0.24.0-7.fc31.noarch.rpm" + }, + "sha256:7487afe052c79100e906a4d2cb2ee1043410ca10a8e60a65d95776f63a513595": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.aarch64.rpm" + }, + "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dhcp-common-4.4.1-15.fc31.noarch.rpm" + }, + "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/y/yum-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:7623bcecb8340ed57e1aa2951b13a1c5b1dfefa80eb226f269294df29cb40c08": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libseccomp-2.4.1-1.fc31.aarch64.rpm" + }, + "sha256:7637132d543741e8c5b581523ca5db24adc6eb6d78530944881c360da694cf15": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-efi-aa64-2.02-100.fc31.aarch64.rpm" + }, + "sha256:768cc2c561bd6476df45fbd9280bbaeb87d2addcd0c51601d2226a590d7dc872": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsmartcols-2.34-3.fc31.aarch64.rpm" + }, + "sha256:77ff28552aba96ce4b80d51a9c390ef4958afad18ede879bf31022f2509e2d90": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpng-1.6.37-2.fc31.aarch64.rpm" + }, + "sha256:78b600621e00f4a0acc8f58de056ae9393ce4e1cded56837b4e557c1bc84b06b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-urllib3-1.25.3-4.fc31.noarch.rpm" + }, + "sha256:798376bc628acd54407d945702dce73ab90633919f88fe9b7ecde3f38ebc2fe9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cpio-2.12-12.fc31.aarch64.rpm" + }, + "sha256:79db5a94baa6acad360b52fdf6d49cf91d7b6290e0d55f457b2820937d2739f4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/efivar-libs-37-1.fc30.aarch64.rpm" + }, + "sha256:7a5aadb5da769b563cf1e548d8cabd26c00720a67df7e4a445a5a9ae5b0891b8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.aarch64.rpm" + }, + "sha256:7a9bc8d2c0fa14162f9c8d48344b30f268ccc53c8d03cdf6cfe67468a090a37c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-psutil-5.6.3-2.fc31.aarch64.rpm" + }, + "sha256:7ae36bfe222068561cf0259400b54e210ad628aaa66dd4b87e20a2291996c71d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dracut-049-27.git20181204.fc31.1.aarch64.rpm" + }, + "sha256:7b01a3bf09861003bd9524e9d460ed68b8d2de4233a09f7af731cb07f75ef913": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iputils-20190515-3.fc31.aarch64.rpm" + }, + "sha256:7bd78cde4202401947dea928274579074bc78fdae096057e788c1b6a86a10ecc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/trousers-0.3.13-13.fc31.aarch64.rpm" + }, + "sha256:7c1e646c757c1937702c56d350dc5b63f0d4f6b4ea5b97a2e420e7f96c0965ed": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/git-core-2.23.0-1.fc31.aarch64.rpm" + }, + "sha256:7c66a9a33e131200e13a638613ec054a94be901399424df27a0b4f94532ee36d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxml2-2.9.9-3.fc31.aarch64.rpm" + }, + "sha256:7d0ec23fb8dab882db8b7ec9a9cbb2728d6df2af5c02ee06cc6fa357f210ff09": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/krb5-libs-1.17-45.fc31.aarch64.rpm" + }, + "sha256:7d8910cf1a1a7f7b98d2989458437feb6e56bd22dae71455233b7f22bd020812": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/bzip2-1.0.8-1.fc31.aarch64.rpm" + }, + "sha256:7f23849dcd356019c4e83058e9e49d544300ad7b9a6f6a7528831e393ca1197c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fuse-libs-2.9.9-8.fc31.aarch64.rpm" + }, + "sha256:80434d5f64abdd521330153fc0c983c5923a833ab59f57ec3bc3a8cf1d748c8c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libyaml-0.2.2-2.fc31.aarch64.rpm" + }, + "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/langpacks-core-en-2.0-7.fc31.noarch.rpm" + }, + "sha256:81100039c817e2f3703fb365c63d6d891f3f977dd9e670c3c9b12662de3c255b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.aarch64.rpm" + }, + "sha256:81169dd168c02aed3b1e57e5af16ec3dbdfb74c15373ee40e9eec5aac60a3d25": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.aarch64.rpm" + }, + "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-common-2.02-100.fc31.noarch.rpm" + }, + "sha256:816fe17af41a66dd718eb247273be824b75f53fb539455b58b892528ca12cde5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpsl-0.21.0-2.fc31.aarch64.rpm" + }, + "sha256:81f5b3786ab1b634016c0c066379dda739386b4b1d639111b4575748e27caa56": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.aarch64.rpm" + }, + "sha256:8221111dc9a9aa5c68805f153c3fbe5314c8a0f335af29685733b958253dd278": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-idna-2.8-2.fc31.noarch.rpm" + }, + "sha256:82bc08ef5d8049d3d07a5eb00f61d3f94d7577ef814f6791352f75835bff477a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.aarch64.rpm" + }, + "sha256:82cc8c43bfe0e731ec78e31c8af6250ec1f13989978105a1b38d518470cf5bde": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsolv-0.7.5-3.fc31.aarch64.rpm" + }, + "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm" + }, + "sha256:84365601f93db7fda27e4d89826d4893830572e98df35275abdf15659cfe3fc5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-3.7.4-5.fc31.aarch64.rpm" + }, + "sha256:84fa6157b3e986b9ce67cc03bfed4e2b96fa7d075df70e038fbcd2b486737d35": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/man-db-2.8.4-5.fc31.aarch64.rpm" + }, + "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm" + }, + "sha256:855131926b9a3764835de3e7171b9ce579847ce161f3ba8406a5b6fdfa781f55": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/parted-3.2.153-1.fc31.aarch64.rpm" + }, + "sha256:88831a57114969801a557d700451a70337f944b868a3d792d47e6e9e91961f3c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/audit-3.0-0.12.20190507gitf58ec40.fc31.aarch64.rpm" + }, + "sha256:898a918a7adfefc3ce13d10b30b2ec7ccada96155afa15ee3f4e589b3f1baa38": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcurl-7.66.0-1.fc31.aarch64.rpm" + }, + "sha256:89a35174435a790c0fbf3bc4306d51c867ecce66fb65bae0e7706a9f8f9a19b3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/groff-base-1.22.3-20.fc31.aarch64.rpm" + }, + "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:8c4b392a5e1ed79b7a5b302d8fb14d0470b3a6306a7b36aee275acf0daa61537": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fribidi-1.0.5-4.fc31.aarch64.rpm" + }, + "sha256:8d00fa6cdfcc955dc4e14d0f8b6ba6217d2dd0334ea0e1aa44694c9e0ad0b06d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rest-0.8.1-6.fc31.aarch64.rpm" + }, + "sha256:8d17464a13f79b54c8dfe76d716a42d6c875bce408e29344c1ecf916957a649e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcroco-0.6.13-2.fc31.aarch64.rpm" + }, + "sha256:8d21bbf2063bb50cf3d12281731fbd8b26dece5f154d7a50f0952695fea6751f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.aarch64.rpm" + }, + "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm" + }, + "sha256:8dbce1e34a19be338f49b792874abc861fd64acc5653f7f5cd523d5e5865897e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/brotli-1.0.7-6.fc31.aarch64.rpm" + }, + "sha256:8e10cf2b0645e342b001338a4463c5a02a8a302c25affba37da700a987e2c064": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnutls-3.6.10-1.fc31.aarch64.rpm" + }, + "sha256:8fd19268d460d7f49f3dd96644a2b8a3076a7a7ccbe3e35e27eeafc6ab8d9c95": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-libs-1.12.16-3.fc31.aarch64.rpm" + }, + "sha256:91d628d3e4a82976361ecb306d4f0049aa65c811fdd5051b3f8423b75e4a10e9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtdb-1.4.2-1.fc31.aarch64.rpm" + }, + "sha256:920d2d8df80fb92e358f4925bbd2891977c98e0b9d2f69b44f1e74bec26d6a1e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cups-libs-2.2.12-2.fc31.aarch64.rpm" + }, + "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/linux-firmware-whence-20190923-102.fc31.noarch.rpm" + }, + "sha256:9404d90bbb474b30b80c90719df01d784b925127e9710f12c44c72d14c2708fc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gcr-base-3.33.4-1.fc31.aarch64.rpm" + }, + "sha256:974bdde5f821c071bcbe0de191677981685cb8290952be75a7ab15747988a99e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/policycoreutils-2.9-5.fc31.aarch64.rpm" + }, + "sha256:98d811216e2e0e4ad49925489824210fc3e9b57bb09eefcd4047886375d34f57": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcom_err-1.45.3-1.fc31.aarch64.rpm" + }, + "sha256:995ee9636461072248d5c6792d3852fb1ab277a622b18eb7d3c231133446dd7d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.aarch64.rpm" + }, + "sha256:99a6e2861b7eb51684d1b83901a7e54caf649b711556a660d93bfef114eab72c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libattr-2.4.48-7.fc31.aarch64.rpm" + }, + "sha256:99c0e924fa7eb70fc9301b692d4ba72ec480af840498b8251f68a419317bd108": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_sudo-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:99e8930364200470ee5bd065dccb7c4c1caa4863c6f8975740643fe9d2485c18": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.aarch64.rpm" + }, + "sha256:9ac1ef0ef80d7ff65903120f8b2a5a2a5723dce7c9c131e17cea3572cb81d0f4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXinerama-1.1.4-4.fc31.aarch64.rpm" + }, + "sha256:9b49fdc41ba8f1284c63db29b8bda002a7256a54fdba14c9d3fccd852b8547b1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-boto-2.49.0-1.fc31.noarch.rpm" + }, + "sha256:9bf695c87aa5acc7695251a4c75c576375c45c5b043af00a7ddf503223030309": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kernel-core-5.3.7-301.fc31.aarch64.rpm" + }, + "sha256:9c039f6f6e5385344ea56a6490a472b0f475d8d7612b422191d2152b8e1fc55a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/curl-7.66.0-1.fc31.aarch64.rpm" + }, + "sha256:9c08d246ce73d8741777f290e7110ff9dae97a15e09f3469317ed7c8e9fb64ce": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/atk-2.34.1-1.fc31.aarch64.rpm" + }, + "sha256:9c8771c8c5eb38351dd30f994133bc9149ec93813d1a7c2cd2dd8f7dc7431d49": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/nettle-3.5.1-3.fc31.aarch64.rpm" + }, + "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-repos-31-1.noarch.rpm" + }, + "sha256:9cc3e6534ae34343e7e4d056d46b9551da7d0a82c7bad378c3626d4b70d1bf62": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cloud-init-17.1-11.fc31.noarch.rpm" + }, + "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dateutil-2.8.0-3.fc31.noarch.rpm" + }, + "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm" + }, + "sha256:9ed0b44834b6a637c70aa00ab243aecb534f9aea461e1388652ab039898239c8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xz-libs-5.2.4-6.fc31.aarch64.rpm" + }, + "sha256:9ff53c6f07da3adeaa20da76c1c78b886710b460db7a316415f8bc9182096fb0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/procps-ng-3.3.15-6.fc31.aarch64.rpm" + }, + "sha256:9ffb9a376d1df3d3d394ec2f8533f939547d8ccd634f1f77db52970630215d71": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cairo-1.16.0-6.fc31.aarch64.rpm" + }, + "sha256:a00e85fb7902d8869492e32816c7834830682745eeab1efba264bdd3185f479d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/diffutils-3.7-3.fc31.aarch64.rpm" + }, + "sha256:a084b365795c7262fa09b2fc590dfbabbbf30cb9c1c7f9b5274eae4c5d761482": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lua-libs-5.3.5-6.fc31.aarch64.rpm" + }, + "sha256:a108fbc1ba9886604483ec05ef2150c961adb0906db5f9ea46c239bfcdf06b55": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/filesystem-3.12-2.fc31.aarch64.rpm" + }, + "sha256:a2f6ae2742a2aac3f5bb5f1ad5cfa4d9b8fdf7cfd01033246027db7064abaa1f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxcb-1.13.1-3.fc31.aarch64.rpm" + }, + "sha256:a314b2a8ed8a9e7e80aedfb1f76c75910d0da9549d072c424c2dddbe63a09874": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dbus-1.2.8-6.fc31.aarch64.rpm" + }, + "sha256:a39fb89e06572d188309dc4daf1d23e21be190e59f9ef8ff3c3ccceaefe505da": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libzstd-1.4.2-1.fc31.aarch64.rpm" + }, + "sha256:a3be2e9e42d68f5e5e58f1dd86d5b6e4fc1ff91e98f44d26221d6bda38c9f372": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/hostname-3.20-9.fc31.aarch64.rpm" + }, + "sha256:a40b4873535c2b0b826063e5248981d1ce0d04ef5ec6d9c21facc07ce2446b40": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpipeline-1.5.1-3.fc31.aarch64.rpm" + }, + "sha256:a436dca481707ca10a0c5bb189d9a25ff76c4f66f1d32b0847dc6d13ba46c17a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-udev-243-4.gitef67743.fc31.aarch64.rpm" + }, + "sha256:a4f7846fb262ad61885f64b8a354f9303fe5ce129378e4781eefa0bffdef828e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xfsprogs-5.1.0-2.fc31.aarch64.rpm" + }, + "sha256:a516dfa62a327d440fe38b93af81dbecb112fe45fff0f227583c451631479122": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/acl-2.2.53-4.fc31.aarch64.rpm" + }, + "sha256:a5fa076ed2c83974cacf4ce386bfdc576ce532fba4f8645dda5c2b67efc5d501": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmodman-2.0.1-20.fc31.aarch64.rpm" + }, + "sha256:a61e3fed8d1c860bf09b5ec5586e30b88b1b1dea157cd371def9fcf72e313a3d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcollection-0.7.0-43.fc31.aarch64.rpm" + }, + "sha256:a63ae4aa727a4b75b602a67f1e42946e39dc124e9f1aeb3e795af40ad4e15cbf": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcomps-0.1.11-3.fc31.aarch64.rpm" + }, + "sha256:a6caaef9bed1bd17292e1fdde4efee9730f8cff5826a9cb6c952e6f3cd052243": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.aarch64.rpm" + }, + "sha256:a7f5877c9ebfb44347765c7deb266e53fdd62403ccc0a7ff17fdb101bc28caff": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.aarch64.rpm" + }, + "sha256:a96e76f00865249f70a3f2ef293946e9786150faa83e37185e61592290817cb4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libacl-2.2.53-4.fc31.aarch64.rpm" + }, + "sha256:aa3658efc21bcc6d79344eeeaf20285407f6f3b90d905a66a37a8cfc835b2a61": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.aarch64.rpm" + }, + "sha256:abf022d05aa55e7aa8d0736b899d86613d30a7e1751b04666920f367d4311a1a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-2.30-5.fc31.aarch64.rpm" + }, + "sha256:ac7985d2591bc2bd1d90efdb68751a3d7435cf902b3895cb308e830ce48f1f44": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/shim-aa64-15-8.aarch64.rpm" + }, + "sha256:acd149c4bf17a15db75fca1f19e34784a9ed275e19c0721aa78f5eb94797a685": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/u/unbound-libs-1.9.3-1.fc31.aarch64.rpm" + }, + "sha256:ae9a3e144f31b6172d266b984c8385fba94bdcf3002d3182a4118f8d29f5f718": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-4.15.0-6.fc31.aarch64.rpm" + }, + "sha256:aeac986c84b8038eccd191310bb09f3d396f7c05171ac0fb8691182918459c90": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/less-551-2.fc31.aarch64.rpm" + }, + "sha256:af00a0b026235e70f7cb7606166dfcaea0d227a3de70363ff67a644036ed8bfc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-tools-extra-2.02-100.fc31.aarch64.rpm" + }, + "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm" + }, + "sha256:af589a85af85270c027bacb5ccaf88c93378d364a7c1436ee7bca1290cf762f7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libverto-0.3.0-8.fc31.aarch64.rpm" + }, + "sha256:af594688a568ec4db7dae9d60390dce1ab547527bbf2415752f211de3748b97f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-243-4.gitef67743.fc31.aarch64.rpm" + }, + "sha256:b04fecd603225051ca56c6674cb72f12f4de0cc1cbbfda0ab7d0af0e655b2c99": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libthai-0.1.28-3.fc31.aarch64.rpm" + }, + "sha256:b0d153ea83902561a9e60c9c244a497c3b19a9c4e40cf9e8437d0221af0f2ca3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pcre2-10.33-14.fc31.aarch64.rpm" + }, + "sha256:b25f063f82484e4fa42d1ad31a2cf23e882a99dc1ccb191b24e14a6a789d87a0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.aarch64.rpm" + }, + "sha256:b37d963f89a7e0d466e1317da6cd2c20b3ce3ec9789e1027c16176734f88c4fc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/NetworkManager-1.20.4-1.fc31.aarch64.rpm" + }, + "sha256:b3d8740cee57c5025ef88e9d71df141a6600fdf26215969acae393a2b052892d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.aarch64.rpm" + }, + "sha256:b49419bed59686efde6fc04953c2ab64a46c2bae46227a872bb3a823538c636d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pyasn1-0.4.4-5.fc31.noarch.rpm" + }, + "sha256:b6498a7a8056483e1d42362b1fb27bd6c54ed7cc7bd180cae20d64a13ae4c88c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-unbound-1.9.3-1.fc31.aarch64.rpm" + }, + "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm" + }, + "sha256:b9ad5c82b3b83871269ee705ee12896efd1e3485b0d2005c9cff2a100100cd34": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gmp-6.1.2-10.fc31.aarch64.rpm" + }, + "sha256:b9b609d17e9274c1551ac6ebab4b53f6e4a5ae9253db5465c65fdb8c919a09dd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libffi-3.1-23.fc31.aarch64.rpm" + }, + "sha256:bb305f3ddc74c4c30ae838a2bbff3cd325eea8427622c7f82e4d06a564bace6f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/coreutils-common-8.31-4.fc31.aarch64.rpm" + }, + "sha256:be8bf30729c71aabe30f2c4cf8e5c43ce3cdf892c218fadf53c0af29a76fd6b3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgcc-9.2.1-1.fc31.aarch64.rpm" + }, + "sha256:bf92fc95c282da9c76018679d9180fb6c98aaf864f66bbef630941040579f92b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.aarch64.rpm" + }, + "sha256:c0287bc7c1f54bcd19c43904f9a5c7c0cc4c82eae2c455071f6d7ea50714668f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbxtool-8-10.fc31.aarch64.rpm" + }, + "sha256:c05d42fba4fc1ebc2df9ee49f971c744937d8b307626c90b3cf79bf91619863a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/shared-mime-info-1.14-1.fc31.aarch64.rpm" + }, + "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-distro-1.4.0-2.fc31.noarch.rpm" + }, + "sha256:c1590c5cdfc7aad868c75c54c11a2c7d692001f758ead33aa10f9838955148c4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsoup-2.68.2-1.fc31.aarch64.rpm" + }, + "sha256:c1893a7c51ebb0371b87e2179d6e0e5d0fbb71acb4234cf4adc293af11c75578": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.aarch64.rpm" + }, + "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/selinux-policy-targeted-3.14.4-37.fc31.noarch.rpm" + }, + "sha256:c36dd24858c4e8d207eb0f87af16e4c599a16bb981416d47db467b70a841fe08": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dosfstools-4.1-9.fc31.aarch64.rpm" + }, + "sha256:c599ffa97fde329ff872bd6db99e8c218601df6549302f89ff747d34ca24042c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libproxy-0.4.15-14.fc31.aarch64.rpm" + }, + "sha256:c68bed5b576d7baa67a59c726d2340f7c0df7e9b93f90b3a22d3f62e9f99456a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kmod-libs-26-4.fc31.aarch64.rpm" + }, + "sha256:c6de19d0d4b8f67957ca6122462090895034495852814f36396bc134905f5f5e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libss-1.45.3-1.fc31.aarch64.rpm" + }, + "sha256:c6ffcbd829ea30ef40fa61095cef03f2b6eafa3228187a478d6d027911f12e2f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libidn2-2.2.0-2.fc31.aarch64.rpm" + }, + "sha256:c80fbc5228457b9b1978b098f47d2a66ca5636526965847078edb6f1c302e392": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libusbx-1.0.22-4.fc31.aarch64.rpm" + }, + "sha256:c84f89f65e2a691d7fcbc7021c3c5d796e0f39483e3fe95e83579c630575b78a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glib-networking-2.62.1-1.fc31.aarch64.rpm" + }, + "sha256:c8fc5b492af902894b927e79314b52bbdd8e45b2d2018abd8113d8e1807adeca": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gettext-libs-0.20.1-2.fc31.aarch64.rpm" + }, + "sha256:c935f74584d7289ca58d1b23cbdacd38450d351dbc3dcd0bc713723c4d50a545": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.aarch64.rpm" + }, + "sha256:c958419128c1330b50c741113394b147da1ccda055ab1ee19fabc199f68971ea": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.aarch64.rpm" + }, + "sha256:caeade153eb315a95e8bcdd20ceda84ed6bf624809a30ad0886caf9cf90c6d40": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mozjs60-60.9.0-3.fc31.aarch64.rpm" + }, + "sha256:cb478c89af0caac9a40c32a2b4a48242b16ff9e2e6daa375b2de88e396f524dd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sudo-1.8.28-1.fc31.aarch64.rpm" + }, + "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm" + }, + "sha256:cdc526097cd2fecb75e44ad11a69b10eb7804f310298c064c3b931515d4f3d5c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-configobj-5.0.6-16.fc31.noarch.rpm" + }, + "sha256:cddb050897cd8666090b172711fb7947b3bf844f5a190f8c689fd79a222e1761": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lcms2-2.9-6.fc31.aarch64.rpm" + }, + "sha256:ce421671bfd14a427771eb3c78b060352a61cca889b1bf1b342c328dd521623d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_autofs-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:cf480f0df368b3cc9f36e42d5d573afa93fcb3889614dee172c0ad367785f520": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/polkit-libs-0.116-4.fc31.aarch64.rpm" + }, + "sha256:d01f7e794c3dd3f38de1b69fd360db4b858826eba4e6fd4edc79c8a74774ab00": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.aarch64.rpm" + }, + "sha256:d02489175567be57a48a3edf5deb66d100e99df73a37b26062fea4d6af014cbc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/readline-8.0-3.fc31.aarch64.rpm" + }, + "sha256:d1520137d9cb96cd10a63893b45b4794b120502bdbab0862e001ac2486195aa6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsecret-0.19.1-1.fc31.aarch64.rpm" + }, + "sha256:d1ce6a69f0c2d96a97a04036a5c59deda82b5e1b0843c114f0fb896279ec7bbc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnfsidmap-2.4.1-1.rc1.fc31.aarch64.rpm" + }, + "sha256:d22fbf5e32d176db1414b0854c78f0ea1b5f489a83490ee4e3f67bc5e98905af": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libaio-0.3.111-6.fc31.aarch64.rpm" + }, + "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/geolite2-city-20190806-1.fc31.noarch.rpm" + }, + "sha256:d287bfdcebb9fbb31d5f58cc71311f48a85970d0fd92f5beb0193270c155faac": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmetalink-0.1.3-9.fc31.aarch64.rpm" + }, + "sha256:d2be7b0f17350a8a0f301617cb1d7b024076bc16986abaab94453ec1cee1f1f2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/popt-1.16-18.fc31.aarch64.rpm" + }, + "sha256:d2d3b613de0ecf3ae022e5d5d1576858c91b203af6a52a7a9aa36245f0cdbd05": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libldb-2.0.7-1.fc31.aarch64.rpm" + }, + "sha256:d2f7d49bd565c2fec4ca945ae97ac3b8a607f114d3a7558b90b2caaa5871459b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgcrypt-1.8.5-1.fc31.aarch64.rpm" + }, + "sha256:d35fe17711337362bdf09540523bddbdc16406d0ff7650043a3cdd1cfc222ae8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-cryptography-2.6.1-2.fc31.aarch64.rpm" + }, + "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm" + }, + "sha256:d429648fe5b233a46fdbfc31a283ca4b6be5177ae84f3e7e63fec5f9bebd17d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-gpg-1.13.1-3.fc31.aarch64.rpm" + }, + "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dnf-plugins-core-4.0.9-1.fc31.noarch.rpm" + }, + "sha256:d54f02fc39b3e87253808f665918d26ffe901f1228e25121c908661b47ba266b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pysocks-1.7.0-2.fc31.noarch.rpm" + }, + "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/selinux-policy-3.14.4-37.fc31.noarch.rpm" + }, + "sha256:d6b491f91a567b4245d07d28a0547cb1b8e97a1f814e3f7d76dd685bb6658b64": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iptables-libs-1.8.3-5.fc31.aarch64.rpm" + }, + "sha256:d877864e501fe38a1b0c7e11572e61c5d9eb9857436541f1c2d5ad2f8bd29b83": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libargon2-20171227-3.fc31.aarch64.rpm" + }, + "sha256:d8d28daa56fa4894a767957aa9948cad6d274e2b70d8b10aa69d9356c8a22eff": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openldap-2.4.47-3.fc31.aarch64.rpm" + }, + "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rootfiles-8.1-25.fc31.noarch.rpm" + }, + "sha256:d90abd2b8eca279a2120bf7836503745d36432630258925292ee7dacfabe4c92": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pbr-5.1.2-4.fc31.noarch.rpm" + }, + "sha256:d9641a59b33831e32fa61f3479152d5eac33e0526b32e67ae33f1c1102c69d4b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sssd-common-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:d96bdfbaba63ac6755a20d8a4d954bc5010695d671ba305a54362c1d3c69fc37": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/efibootmgr-16-6.fc31.aarch64.rpm" + }, + "sha256:dc6b772101df9f3029c2cd80a10663663ad877e129c8d724902f5cc9f1785e60": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.aarch64.rpm" + }, + "sha256:dcc584a55c425c26a62fe579beead8488589c3892c34e8fab95c7fd7ec1cf6c6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/findutils-4.6.0-24.fc31.aarch64.rpm" + }, + "sha256:ddd0635b899826bed59036ba17f8112c35660b32f3d1639266f5e394166a9dbf": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-tools-minimal-2.02-100.fc31.aarch64.rpm" + }, + "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm" + }, + "sha256:e0408a5020069e7a4585e3bb4d1bba1b8bf0afe481ff63b70e2221e9c5464cad": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kpartx-0.8.0-3.fc31.aarch64.rpm" + }, + "sha256:e0af6b40e51fe0b9f68367355219aa56717888d2a07c10a001cc8667de1a5a2f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/tar-1.32-2.fc31.aarch64.rpm" + }, + "sha256:e17ef6f7d4f1869ff5813d6f8f2983cd6f5cd23d4a666b7ae19154636e911644": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-babel-2.7.0-2.fc31.noarch.rpm" + }, + "sha256:e1deab5e887a199233f9a439d2d20d864d434e9a4ac7fe460f230d368fb3779f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsepol-2.9-2.fc31.aarch64.rpm" + }, + "sha256:e1e5250ea932beac32caf373ae55b4655c50ae8a1bd9d42e3ceac590a13031ef": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgusb-0.3.0-5.fc31.aarch64.rpm" + }, + "sha256:e29356f3ea2554e8be23401a08a941f406d337cf6b38e7ee99926fb9b3f1f541": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.aarch64.rpm" + }, + "sha256:e3046e1e508453e332277ab86ebf67df0106edca2c6e8e54ba2bffb76f9ed4d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-common-2.30-5.fc31.aarch64.rpm" + }, + "sha256:e30906c30d3dea50c62e74bc7aa870eb928af4c6fb474c894f55ef6ba41f5841": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fontconfig-2.13.92-3.fc31.aarch64.rpm" + }, + "sha256:e35e30f6477652a93d3c02ec86faa233884aefb2ff9fcf4058909d9736fb2d15": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxcrypt-4.4.10-1.fc31.aarch64.rpm" + }, + "sha256:e4174ec224296d315b8a43af9d252180d87dd6b5512873649dca4822150b6628": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/polkit-0.116-4.fc31.aarch64.rpm" + }, + "sha256:e4e6a5e014442aa8d7768555da9d44e6381569e0c44e61d2d2a06d6692748945": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtextstyle-0.20.1-2.fc31.aarch64.rpm" + }, + "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-release-common-31-1.noarch.rpm" + }, + "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kbd-legacy-2.0.4-14.fc31.noarch.rpm" + }, + "sha256:e6a986f10b17ba67e86c417251d855e1eeac0ca1c85c2ee7ae3bfc7d6c966087": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gawk-5.0.1-5.fc31.aarch64.rpm" + }, + "sha256:e78343046ae389b1c11d36f8de0b8bfbb9ded7bdc39fb52b3f719a39047bf42a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libselinux-utils-2.9-5.fc31.aarch64.rpm" + }, + "sha256:e7e629e7e89f970660407fb22c8b706c4c9a65a5f43286ddeef1e165b446fcaa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/device-mapper-1.02.163-2.fc31.aarch64.rpm" + }, + "sha256:e88e27b7ac16c753e20f65cd13ed163019ac702c4195eb75d766acd44cb55263": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kmod-26-4.fc31.aarch64.rpm" + }, + "sha256:e8a13bb46e5149142a1e0a359460c1c65b2cbcbff20f2d0c50f9adbad57538a1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libfdisk-2.34-3.fc31.aarch64.rpm" + }, + "sha256:e98119ac7a707287668e7a9a74ef2809ee5f555af04f52775367e428e08dbb33": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jsonpatch-1.21-8.fc31.noarch.rpm" + }, + "sha256:e9c1fa22b0b6d6b7ac782ba60d4c6a2c747bd683f075720a4d82aec45adbd905": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iproute-5.3.0-1.fc31.aarch64.rpm" + }, + "sha256:e9c7f59547a9eec5304db7a312b435592f07f7aee4f3db617e5ddfac0f4d048c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.aarch64.rpm" + }, + "sha256:ea35fa3f5c16e074a59d66ff9037e48ca7c0126444e09daf640b7a37dacd76ad": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/jasper-libs-2.0.14-9.fc31.aarch64.rpm" + }, + "sha256:ea68ed6fc06f142c95e907b619a9696146dff1bba308773df12e412d8277eec0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libutempter-1.1.6-17.fc31.aarch64.rpm" + }, + "sha256:ead6cd0d8e509f07e36456aff75eca8433821813d675382d28fe4e7dbecc48dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmnl-1.0.4-10.fc31.aarch64.rpm" + }, + "sha256:eb1992de281538771ba578a65eabe620dc35aef6c621d8c5351a2ba38ac440f4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pam-1.3.1-18.fc31.aarch64.rpm" + }, + "sha256:eb35167d6095465a58611b80853213af5838f271b75fa1a5e3c051a04a9078a7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.aarch64.rpm" + }, + "sha256:ec305ea347ab987f5a00574bc3eaebaf2412483ed1b79615fdd86ca18ab146bc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.aarch64.rpm" + }, + "sha256:ec48b0cd759656b4c5d8d13dcc81c6fa23914f8e214b4cda1ed08e1896177fe9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXrender-0.9.10-10.fc31.aarch64.rpm" + }, + "sha256:edee134762456246cd8de577597e350b60a04bc43ac4a47622b9a263ddd74cf2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.aarch64.rpm" + }, + "sha256:ee2f71a3a318270e9cc55aa9dde8889f2e664fec681f9fd5719361f8e4a1afac": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iproute-tc-5.3.0-1.fc31.aarch64.rpm" + }, + "sha256:ee3977f4ee783225903f964c60932795d8c11307043e73527b394dec02487047": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pinentry-1.1.0-6.fc31.aarch64.rpm" + }, + "sha256:ee5ed9701778c4cb91af4c2e2ef996b9c178d32b652edf4506394cac72fefb96": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnl3-3.5.0-1.fc31.aarch64.rpm" + }, + "sha256:ee6dbb4914a35ee8a816ecde34d29221e3f4622324f6287c328e8ac22ae572ad": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-chardet-3.0.4-10.fc31.noarch.rpm" + }, + "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm" + }, + "sha256:f0b9a02ed639d2cff7a85262d440c65f2fa2ba318166b45d969a2802f102535b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-cffi-1.12.3-1.fc31.aarch64.rpm" + }, + "sha256:f11d53128f33f9e73dc21c01159a283cc3fcd2e39f2712dbfa930018ae67fb69": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpath_utils-0.2.1-43.fc31.aarch64.rpm" + }, + "sha256:f1419585dbb27e3bf76aab5a5f8fb9580816a7a0e7fc93377b97646a0259a794": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/npth-1.6-3.fc31.aarch64.rpm" + }, + "sha256:f195c83de6568cf550a3b2d70725697196c1a9269cddb9b825f5a887de9d6eed": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/NetworkManager-libnm-1.20.4-1.fc31.aarch64.rpm" + }, + "sha256:f23f467c4099be4cb4dfdc1be13b7a7bb6e8c6da7c21182658a034827b64df39": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/z/zlib-1.2.11-19.fc31.aarch64.rpm" + }, + "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm" + }, + "sha256:f2d11878777b28a284e9a571a6a9cf893a97f0935291b10686eb93a2a3dfdfb8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_nss_idmap-2.2.2-1.fc31.aarch64.rpm" + }, + "sha256:f34cde4c2bd6ab93a697d8c350e98f4d70f897f74fee35a06c25eb4b98f46c9a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.aarch64.rpm" + }, + "sha256:f3d5fd211e3faf1b61be64fd3f1659dd640a873c66747a5cc341f888e4179dea": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glib2-2.62.1-1.fc31.aarch64.rpm" + }, + "sha256:f43fa8496a54ad89eef4f48c3813190b5509a21c873bc1d5fcd0dda80ae2b425": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/file-5.37-3.fc31.aarch64.rpm" + }, + "sha256:f63c88d8b294addf2791a5b291e3ab13750a24fe92fec65c96d365edad767f57": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/file-libs-5.37-3.fc31.aarch64.rpm" + }, + "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm" + }, + "sha256:f6d37f25fa7215b7ae185b12f687d60c4363cfb8e35d591595a9b0f379488fc6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtevent-0.10.1-1.fc31.aarch64.rpm" + }, + "sha256:f74b53f33812f65d12377946d363a773e48cf6bc6c4bb2acec5bb4a048861b88": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.aarch64.rpm" + }, + "sha256:f7954ba55d833c6341ec87b0cf57817084c705673b8b50aff3e3606fcbdcfbb5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXdamage-1.1.4-17.fc31.aarch64.rpm" + }, + "sha256:f85438d6cb268c431f3aed5c678f1632b56d57393a3eb52e31d75bc6462bc88d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dracut-config-generic-049-27.git20181204.fc31.1.aarch64.rpm" + }, + "sha256:f85469c0c19ce86e8fdd0dd5a3e6e5c9b78e3436ae9ce70ba86b2b4a3794f693": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-oauthlib-3.0.2-2.fc31.noarch.rpm" + }, + "sha256:f8e118c35bb5f8ae3dca517ef38c7a38bbdd491011af9e1c4c5c7523f13e6f9c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mkpasswd-5.5.2-1.fc31.aarch64.rpm" + }, + "sha256:f958a85509e118c832458a5f502e5d59695eb3df96ae0bd603203a82d188b2ae": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pyyaml-5.1.2-1.fc31.aarch64.rpm" + }, + "sha256:fb2b070b96ed58a31da7889452ce3cdbfb60f6161a3e2f0ce2738b4d3facfd2d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/json-glib-1.4.4-3.fc31.aarch64.rpm" + }, + "sha256:fb6b61cabfce21597c33c62743c13dd96bcea39aa806a144bc2b2665b48273a8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpcap-1.9.0-4.fc31.aarch64.rpm" + }, + "sha256:fd9ac175e5af929bb942528904d6e6e48caed800e22a7a45825d535bdc1537ba": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/json-c-0.13.1-6.fc31.aarch64.rpm" + }, + "sha256:fe6afcdab2793cd75a838a758a282d4581f1272f3f32df6a58777c0721e54b2e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-libs-0.177-1.fc31.aarch64.rpm" + }, + "sha256:fe6f4202a8e7e52add27c6d2e2af65884a974bcde4b5e89979badb782719ca1a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libs-3.7.4-5.fc31.aarch64.rpm" + }, + "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/geolite2-country-20190806-1.fc31.noarch.rpm" + }, + "sha256:ffa75117ea710fef320f1ae878e8c81e7a056386dea78aa5787dc091c5a100a5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/colord-libs-1.4.4-2.fc31.aarch64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "checksum": "sha256:a516dfa62a327d440fe38b93af81dbecb112fe45fff0f227583c451631479122", + "check_gpg": true + }, + { + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "checksum": "sha256:0b1ddcc8c3096814bc5027133fb077ef587b49a1a4e4d6426327c75cf2066b11", + "check_gpg": true + }, + { + "checksum": "sha256:a6caaef9bed1bd17292e1fdde4efee9730f8cff5826a9cb6c952e6f3cd052243", + "check_gpg": true + }, + { + "checksum": "sha256:42a4e01c47e28b71cafb658a5993b7f4b7692ac6b916878d580fecab7ae9d16c", + "check_gpg": true + }, + { + "checksum": "sha256:9c08d246ce73d8741777f290e7110ff9dae97a15e09f3469317ed7c8e9fb64ce", + "check_gpg": true + }, + { + "checksum": "sha256:b25f063f82484e4fa42d1ad31a2cf23e882a99dc1ccb191b24e14a6a789d87a0", + "check_gpg": true + }, + { + "checksum": "sha256:71ec6fd79756af905e474553f4ca7ae6985e32615df0ee2f2f487c8496e7160f", + "check_gpg": true + }, + { + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "checksum": "sha256:181173a9353f593105978b8e4038b7bf53fd22c63f4514fd271a74d48f9c59f8", + "check_gpg": true + }, + { + "checksum": "sha256:8dbce1e34a19be338f49b792874abc861fd64acc5653f7f5cd523d5e5865897e", + "check_gpg": true + }, + { + "checksum": "sha256:995ee9636461072248d5c6792d3852fb1ab277a622b18eb7d3c231133446dd7d", + "check_gpg": true + }, + { + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "checksum": "sha256:9ffb9a376d1df3d3d394ec2f8533f939547d8ccd634f1f77db52970630215d71", + "check_gpg": true + }, + { + "checksum": "sha256:23908e2eae2ccfd2efb1d19cdf46e3dca4680ac2d562c1c96f7fb0d22859fc82", + "check_gpg": true + }, + { + "checksum": "sha256:ffa75117ea710fef320f1ae878e8c81e7a056386dea78aa5787dc091c5a100a5", + "check_gpg": true + }, + { + "checksum": "sha256:0f3591f036f0be85a9d28e9099d43a8b2e5a500a9588825c1dd994d1a323ceba", + "check_gpg": true + }, + { + "checksum": "sha256:bb305f3ddc74c4c30ae838a2bbff3cd325eea8427622c7f82e4d06a564bace6f", + "check_gpg": true + }, + { + "checksum": "sha256:1088699171a35873eb5a776f0212ceff2bc9d67e3f1d8f2e107bbf751c36ca90", + "check_gpg": true + }, + { + "checksum": "sha256:99e8930364200470ee5bd065dccb7c4c1caa4863c6f8975740643fe9d2485c18", + "check_gpg": true + }, + { + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "checksum": "sha256:6e76674266f1e136186e3f005ddbf13791b1fea78cd30e8501f3dd1b209fa9f2", + "check_gpg": true + }, + { + "checksum": "sha256:920d2d8df80fb92e358f4925bbd2891977c98e0b9d2f69b44f1e74bec26d6a1e", + "check_gpg": true + }, + { + "checksum": "sha256:9c039f6f6e5385344ea56a6490a472b0f475d8d7612b422191d2152b8e1fc55a", + "check_gpg": true + }, + { + "checksum": "sha256:1b85657077726361a4b157a909796649fe93131fdc4aa67fd5329adc8d2fc833", + "check_gpg": true + }, + { + "checksum": "sha256:3a7d7619061a4adb275ef4b41d993375ad7863863741624186add801800e524f", + "check_gpg": true + }, + { + "checksum": "sha256:504971d079493a49afb8fb7f067f5dfcc59f3e007afcc63734c15fe1066e4b4d", + "check_gpg": true + }, + { + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "checksum": "sha256:8fd19268d460d7f49f3dd96644a2b8a3076a7a7ccbe3e35e27eeafc6ab8d9c95", + "check_gpg": true + }, + { + "checksum": "sha256:0458f6a42cd644322b6eb24b01f0f75de47d5e10ae077797dfada1ce2a1f7fcd", + "check_gpg": true + }, + { + "checksum": "sha256:4bb03b2162523fa694e0e44f46b04263ff0f5dab22c3e93124ec9b5650af2002", + "check_gpg": true + }, + { + "checksum": "sha256:e7e629e7e89f970660407fb22c8b706c4c9a65a5f43286ddeef1e165b446fcaa", + "check_gpg": true + }, + { + "checksum": "sha256:30e07680d23bfb5d4b2727893337619c56f13b46daec2f13f8985f642bf84250", + "check_gpg": true + }, + { + "checksum": "sha256:a00e85fb7902d8869492e32816c7834830682745eeab1efba264bdd3185f479d", + "check_gpg": true + }, + { + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "checksum": "sha256:c36dd24858c4e8d207eb0f87af16e4c599a16bb981416d47db467b70a841fe08", + "check_gpg": true + }, + { + "checksum": "sha256:ec305ea347ab987f5a00574bc3eaebaf2412483ed1b79615fdd86ca18ab146bc", + "check_gpg": true + }, + { + "checksum": "sha256:2dd8505a96714cdb79829a1377e36a53e05cc9b65a7f35a258ca3e4aaa76c700", + "check_gpg": true + }, + { + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "checksum": "sha256:00e59535d45094b7d47e25c93d21179f3138839968776107df99fa0678f1440f", + "check_gpg": true + }, + { + "checksum": "sha256:fe6afcdab2793cd75a838a758a282d4581f1272f3f32df6a58777c0721e54b2e", + "check_gpg": true + }, + { + "checksum": "sha256:5745966147d1651d663d9e7d37a740ebbb4daee49b5cb7a2e61375ea6b37404e", + "check_gpg": true + }, + { + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "checksum": "sha256:f63c88d8b294addf2791a5b291e3ab13750a24fe92fec65c96d365edad767f57", + "check_gpg": true + }, + { + "checksum": "sha256:a108fbc1ba9886604483ec05ef2150c961adb0906db5f9ea46c239bfcdf06b55", + "check_gpg": true + }, + { + "checksum": "sha256:0edff1a5f04f7f5d47537b4c049b95331f9ad33963c9c63ca4b13345a37296d4", + "check_gpg": true + }, + { + "checksum": "sha256:81100039c817e2f3703fb365c63d6d891f3f977dd9e670c3c9b12662de3c255b", + "check_gpg": true + }, + { + "checksum": "sha256:e30906c30d3dea50c62e74bc7aa870eb928af4c6fb474c894f55ef6ba41f5841", + "check_gpg": true + }, + { + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "checksum": "sha256:72bc6a2b459ee27dcd7c213d3aab5a993fc90fcffba2ef02fab7ae3857d379f7", + "check_gpg": true + }, + { + "checksum": "sha256:8c4b392a5e1ed79b7a5b302d8fb14d0470b3a6306a7b36aee275acf0daa61537", + "check_gpg": true + }, + { + "checksum": "sha256:7f23849dcd356019c4e83058e9e49d544300ad7b9a6f6a7528831e393ca1197c", + "check_gpg": true + }, + { + "checksum": "sha256:e6a986f10b17ba67e86c417251d855e1eeac0ca1c85c2ee7ae3bfc7d6c966087", + "check_gpg": true + }, + { + "checksum": "sha256:3b16753c7590bc968a693e97ce9d318d58e1483fd2999a874becd95abc9d35ff", + "check_gpg": true + }, + { + "checksum": "sha256:9404d90bbb474b30b80c90719df01d784b925127e9710f12c44c72d14c2708fc", + "check_gpg": true + }, + { + "checksum": "sha256:f74b53f33812f65d12377946d363a773e48cf6bc6c4bb2acec5bb4a048861b88", + "check_gpg": true + }, + { + "checksum": "sha256:6e78ce3d460b7e1377f487fed5563999fb44d310c441798a4d23d34960e23d45", + "check_gpg": true + }, + { + "checksum": "sha256:b3d8740cee57c5025ef88e9d71df141a6600fdf26215969acae393a2b052892d", + "check_gpg": true + }, + { + "checksum": "sha256:c84f89f65e2a691d7fcbc7021c3c5d796e0f39483e3fe95e83579c630575b78a", + "check_gpg": true + }, + { + "checksum": "sha256:f3d5fd211e3faf1b61be64fd3f1659dd640a873c66747a5cc341f888e4179dea", + "check_gpg": true + }, + { + "checksum": "sha256:abf022d05aa55e7aa8d0736b899d86613d30a7e1751b04666920f367d4311a1a", + "check_gpg": true + }, + { + "checksum": "sha256:28cdab6faa95e1d7d1c32d977627ef5a86b262e2b0e20e76ddd73f598ee126e4", + "check_gpg": true + }, + { + "checksum": "sha256:e3046e1e508453e332277ab86ebf67df0106edca2c6e8e54ba2bffb76f9ed4d7", + "check_gpg": true + }, + { + "checksum": "sha256:b9ad5c82b3b83871269ee705ee12896efd1e3485b0d2005c9cff2a100100cd34", + "check_gpg": true + }, + { + "checksum": "sha256:81f5b3786ab1b634016c0c066379dda739386b4b1d639111b4575748e27caa56", + "check_gpg": true + }, + { + "checksum": "sha256:12c732f4a960848bd4fbc8111c2c0cf584799b1fdf0eb89c2cdcb26da5bc03b8", + "check_gpg": true + }, + { + "checksum": "sha256:0a4100f50b31df500afc5d255dd87117553df7032447f3e226196fd64f9c3f47", + "check_gpg": true + }, + { + "checksum": "sha256:8e10cf2b0645e342b001338a4463c5a02a8a302c25affba37da700a987e2c064", + "check_gpg": true + }, + { + "checksum": "sha256:4290088d905017724f6c909cb1b3193055a6aff62cd20e39ea196694f90753c8", + "check_gpg": true + }, + { + "checksum": "sha256:0cb1a66cb3bb44797a8aeb47db85db1f6c0fcf4d4571d8a5f8981f83b51c08af", + "check_gpg": true + }, + { + "checksum": "sha256:7102de1c840d5b915a40fde5c408f182d677ecdd5126dedf033ebb63b5419607", + "check_gpg": true + }, + { + "checksum": "sha256:82bc08ef5d8049d3d07a5eb00f61d3f94d7577ef814f6791352f75835bff477a", + "check_gpg": true + }, + { + "checksum": "sha256:0064998ad79a6250297b379852b5a06932d8e074270bea02d75888758755bd23", + "check_gpg": true + }, + { + "checksum": "sha256:6b11c1e14d4a02edf8beee776f9f896729bd0f28c66cb4c1d2bd021cdffc6aa0", + "check_gpg": true + }, + { + "checksum": "sha256:4de89d25d09c57b09a51ab93fdf84ade211e835c16d3ba6e4e261dcc0c4e50a1", + "check_gpg": true + }, + { + "checksum": "sha256:3ad68b7569e311a1ca7da4da7b42021a7acb001ab4b2cc6e63b3ba0f87cbd55c", + "check_gpg": true + }, + { + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "checksum": "sha256:c935f74584d7289ca58d1b23cbdacd38450d351dbc3dcd0bc713723c4d50a545", + "check_gpg": true + }, + { + "checksum": "sha256:d6b491f91a567b4245d07d28a0547cb1b8e97a1f814e3f7d76dd685bb6658b64", + "check_gpg": true + }, + { + "checksum": "sha256:ea35fa3f5c16e074a59d66ff9037e48ca7c0126444e09daf640b7a37dacd76ad", + "check_gpg": true + }, + { + "checksum": "sha256:4549e51322d0b10016f1daa8dedc807fddf7d2d4e77719baa696de15b88821bb", + "check_gpg": true + }, + { + "checksum": "sha256:fd9ac175e5af929bb942528904d6e6e48caed800e22a7a45825d535bdc1537ba", + "check_gpg": true + }, + { + "checksum": "sha256:fb2b070b96ed58a31da7889452ce3cdbfb60f6161a3e2f0ce2738b4d3facfd2d", + "check_gpg": true + }, + { + "checksum": "sha256:3975c15d461cebe50d1f179fb86d288c18f643c32f179bbab13425596ab64001", + "check_gpg": true + }, + { + "checksum": "sha256:c68bed5b576d7baa67a59c726d2340f7c0df7e9b93f90b3a22d3f62e9f99456a", + "check_gpg": true + }, + { + "checksum": "sha256:7d0ec23fb8dab882db8b7ec9a9cbb2728d6df2af5c02ee06cc6fa357f210ff09", + "check_gpg": true + }, + { + "checksum": "sha256:cddb050897cd8666090b172711fb7947b3bf844f5a190f8c689fd79a222e1761", + "check_gpg": true + }, + { + "checksum": "sha256:01ea4ecad746f1309b5c943f2b2709f7e5400d33e4d51c85401205ed18d61621", + "check_gpg": true + }, + { + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "checksum": "sha256:59f289c6f3b0180ae3eddaa974e2f972bf15c48135a2abed9eb2f72dfdae1be4", + "check_gpg": true + }, + { + "checksum": "sha256:159972ccc01cd5840c2aad04818efc965b64c5120b1fcce92a47f45ab1abf4a5", + "check_gpg": true + }, + { + "checksum": "sha256:46b0c36e90fd16371444eb5376fc01232b6e64073e42ed1f141344a9aadbe568", + "check_gpg": true + }, + { + "checksum": "sha256:f7954ba55d833c6341ec87b0cf57817084c705673b8b50aff3e3606fcbdcfbb5", + "check_gpg": true + }, + { + "checksum": "sha256:58c8a3d4ac7c8c318b5596b192dbd0350a1122983b69bfc1cb5eb3ecec5b7cf6", + "check_gpg": true + }, + { + "checksum": "sha256:500d0a1b49962ec79ca00224528d6e599d3845eb60b8b13a678d03edfaa755ec", + "check_gpg": true + }, + { + "checksum": "sha256:4c55460197fe24d0a105e3071824a933069e0b655910fd7ee7335e2396de15dc", + "check_gpg": true + }, + { + "checksum": "sha256:2aafea82072ad28a8b662e32902f66b47166a00b5c9cf19b1dd589f39776560f", + "check_gpg": true + }, + { + "checksum": "sha256:9ac1ef0ef80d7ff65903120f8b2a5a2a5723dce7c9c131e17cea3572cb81d0f4", + "check_gpg": true + }, + { + "checksum": "sha256:0f661b922a9e9cbe82e948ec1d83c6fca6e61e08de50815a5b6c069a64f4e883", + "check_gpg": true + }, + { + "checksum": "sha256:ec48b0cd759656b4c5d8d13dcc81c6fa23914f8e214b4cda1ed08e1896177fe9", + "check_gpg": true + }, + { + "checksum": "sha256:03b9d49b78b7e758eecce6a25782767ec5dc921d28f053b17a651b1c8bb96d7b", + "check_gpg": true + }, + { + "checksum": "sha256:a96e76f00865249f70a3f2ef293946e9786150faa83e37185e61592290817cb4", + "check_gpg": true + }, + { + "checksum": "sha256:d22fbf5e32d176db1414b0854c78f0ea1b5f489a83490ee4e3f67bc5e98905af", + "check_gpg": true + }, + { + "checksum": "sha256:2fc552b80866318c0ac934f5385fd2090743701639c318b75138ae985ff5606a", + "check_gpg": true + }, + { + "checksum": "sha256:d877864e501fe38a1b0c7e11572e61c5d9eb9857436541f1c2d5ad2f8bd29b83", + "check_gpg": true + }, + { + "checksum": "sha256:64b0063f6b3a42b712c0ee622328e36ddf94a15da547e3c8da3a4191e0941c92", + "check_gpg": true + }, + { + "checksum": "sha256:99a6e2861b7eb51684d1b83901a7e54caf649b711556a660d93bfef114eab72c", + "check_gpg": true + }, + { + "checksum": "sha256:5e2a37ee7e1147a446be67d63b1be55f2e82c0ae0a84dd1afc6a3fec64e62804", + "check_gpg": true + }, + { + "checksum": "sha256:566a389a620f634ab341a9a39cffdb1c607b4682224cf3d5ac530b6c57c78d0f", + "check_gpg": true + }, + { + "checksum": "sha256:4e365f48d5c85b82f71e8d000d00cdf7ed3c23cd94c31fbf3543572413541c3d", + "check_gpg": true + }, + { + "checksum": "sha256:98d811216e2e0e4ad49925489824210fc3e9b57bb09eefcd4047886375d34f57", + "check_gpg": true + }, + { + "checksum": "sha256:a63ae4aa727a4b75b602a67f1e42946e39dc124e9f1aeb3e795af40ad4e15cbf", + "check_gpg": true + }, + { + "checksum": "sha256:898a918a7adfefc3ce13d10b30b2ec7ccada96155afa15ee3f4e589b3f1baa38", + "check_gpg": true + }, + { + "checksum": "sha256:04826477197ec239d756f81cb6d38fde2f65e71499a8dbaf0c666d93084f1ea3", + "check_gpg": true + }, + { + "checksum": "sha256:1738cf24111bcd0bff08880c4d5efa624c09a2080c901f67ab032ed201a8751e", + "check_gpg": true + }, + { + "checksum": "sha256:5ef4f8487a78a43f7502c055ac77c047ce159da5641e5b61c2669395ae1efe62", + "check_gpg": true + }, + { + "checksum": "sha256:6bc6909c53c0eb2bad7640b3fb79da5cacf5fd8951dee08347b8d18df1b004f8", + "check_gpg": true + }, + { + "checksum": "sha256:3976706367650c755852d995bbe8c4e6bbd13b6e8e0148b7beddb4aba3679d8a", + "check_gpg": true + }, + { + "checksum": "sha256:5b75073853ff34026cf180d7466314783a7a81defaa43e6b7416a38d9f19230b", + "check_gpg": true + }, + { + "checksum": "sha256:2575f8d1fb953934730b9fe6803bf3de12669dcee78852057ea4e88f9d4d76a4", + "check_gpg": true + }, + { + "checksum": "sha256:e8a13bb46e5149142a1e0a359460c1c65b2cbcbff20f2d0c50f9adbad57538a1", + "check_gpg": true + }, + { + "checksum": "sha256:b9b609d17e9274c1551ac6ebab4b53f6e4a5ae9253db5465c65fdb8c919a09dd", + "check_gpg": true + }, + { + "checksum": "sha256:be8bf30729c71aabe30f2c4cf8e5c43ce3cdf892c218fadf53c0af29a76fd6b3", + "check_gpg": true + }, + { + "checksum": "sha256:d2f7d49bd565c2fec4ca945ae97ac3b8a607f114d3a7558b90b2caaa5871459b", + "check_gpg": true + }, + { + "checksum": "sha256:6b2e3b36c2a3e988f40548688b32ef3ce2e4c7906127215c82736189684a95a6", + "check_gpg": true + }, + { + "checksum": "sha256:0b2a6b7e3b62ff9c02ec3012f08fbf396a7990bf9599b49b75eecbee3b257f7f", + "check_gpg": true + }, + { + "checksum": "sha256:e1e5250ea932beac32caf373ae55b4655c50ae8a1bd9d42e3ceac590a13031ef", + "check_gpg": true + }, + { + "checksum": "sha256:c6ffcbd829ea30ef40fa61095cef03f2b6eafa3228187a478d6d027911f12e2f", + "check_gpg": true + }, + { + "checksum": "sha256:618e9a7e3f1f8191beee70d3ad1c8754870887d251480e7e6dd1f3de2d8226d1", + "check_gpg": true + }, + { + "checksum": "sha256:575640462a8c2d0687ea225cc7b6bbf7aa0814e311619ddf6cd16e1bc22f9513", + "check_gpg": true + }, + { + "checksum": "sha256:d287bfdcebb9fbb31d5f58cc71311f48a85970d0fd92f5beb0193270c155faac", + "check_gpg": true + }, + { + "checksum": "sha256:a5fa076ed2c83974cacf4ce386bfdc576ce532fba4f8645dda5c2b67efc5d501", + "check_gpg": true + }, + { + "checksum": "sha256:e9c7f59547a9eec5304db7a312b435592f07f7aee4f3db617e5ddfac0f4d048c", + "check_gpg": true + }, + { + "checksum": "sha256:429cf175b6c3b2bedcabf3391ad3166fe6e62259877f309e57500d2c7f1f1882", + "check_gpg": true + }, + { + "checksum": "sha256:56f3d59b74bf8ceafea695d10fb7ad4672ec93f824ef9b0508c7bcdedeffb101", + "check_gpg": true + }, + { + "checksum": "sha256:8d21bbf2063bb50cf3d12281731fbd8b26dece5f154d7a50f0952695fea6751f", + "check_gpg": true + }, + { + "checksum": "sha256:fb6b61cabfce21597c33c62743c13dd96bcea39aa806a144bc2b2665b48273a8", + "check_gpg": true + }, + { + "checksum": "sha256:77ff28552aba96ce4b80d51a9c390ef4958afad18ede879bf31022f2509e2d90", + "check_gpg": true + }, + { + "checksum": "sha256:c599ffa97fde329ff872bd6db99e8c218601df6549302f89ff747d34ca24042c", + "check_gpg": true + }, + { + "checksum": "sha256:816fe17af41a66dd718eb247273be824b75f53fb539455b58b892528ca12cde5", + "check_gpg": true + }, + { + "checksum": "sha256:20cc74172d531506391309e8f82c6512404ada35f22c68fcd0b83a01dc6e0ca8", + "check_gpg": true + }, + { + "checksum": "sha256:4f37b1e322e3001b076e0128541cc82c180d7054b1c0b7200f46fda4d654cd71", + "check_gpg": true + }, + { + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "checksum": "sha256:7623bcecb8340ed57e1aa2951b13a1c5b1dfefa80eb226f269294df29cb40c08", + "check_gpg": true + }, + { + "checksum": "sha256:d1520137d9cb96cd10a63893b45b4794b120502bdbab0862e001ac2486195aa6", + "check_gpg": true + }, + { + "checksum": "sha256:0c49f27ae0aaf95fbdc52cfb9406c41eefff41b205f85fdc6ef6787ec3af5146", + "check_gpg": true + }, + { + "checksum": "sha256:e78343046ae389b1c11d36f8de0b8bfbb9ded7bdc39fb52b3f719a39047bf42a", + "check_gpg": true + }, + { + "checksum": "sha256:36ce07aa1f90dfdf5ae9824acff24fc3aafe5633b07a022732ca06258e0255b6", + "check_gpg": true + }, + { + "checksum": "sha256:e1deab5e887a199233f9a439d2d20d864d434e9a4ac7fe460f230d368fb3779f", + "check_gpg": true + }, + { + "checksum": "sha256:11e8ee935d9c9d349f4c081d035fc4ee34539af23ef8122e6901b22cf97f346f", + "check_gpg": true + }, + { + "checksum": "sha256:768cc2c561bd6476df45fbd9280bbaeb87d2addcd0c51601d2226a590d7dc872", + "check_gpg": true + }, + { + "checksum": "sha256:82cc8c43bfe0e731ec78e31c8af6250ec1f13989978105a1b38d518470cf5bde", + "check_gpg": true + }, + { + "checksum": "sha256:c1590c5cdfc7aad868c75c54c11a2c7d692001f758ead33aa10f9838955148c4", + "check_gpg": true + }, + { + "checksum": "sha256:c6de19d0d4b8f67957ca6122462090895034495852814f36396bc134905f5f5e", + "check_gpg": true + }, + { + "checksum": "sha256:51f15beba5e5bfc6ff646741b3fbaa3a484ebb40fd8c6c59b8f1f6346dd93e93", + "check_gpg": true + }, + { + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "checksum": "sha256:5a32c492b921e9287422006f255833605b328f3efd071609673be161bb4e7f04", + "check_gpg": true + }, + { + "checksum": "sha256:23e8c23c89737665a5288a3a171548e94898be9ed4a24c056d8bc851c6800090", + "check_gpg": true + }, + { + "checksum": "sha256:b04fecd603225051ca56c6674cb72f12f4de0cc1cbbfda0ab7d0af0e655b2c99", + "check_gpg": true + }, + { + "checksum": "sha256:57bd1ce5d776daca117795bc8e3852f1d29a6fc3fc1edd21729d161de2d7798d", + "check_gpg": true + }, + { + "checksum": "sha256:14a759b4daf287d66f5b803b0fbb52621f8429607be109e5d3c313a57cc276e2", + "check_gpg": true + }, + { + "checksum": "sha256:2b24b5729cd74e3b1efe261bfd732fd1995b0e64d76587a3d90762d77cc58c77", + "check_gpg": true + }, + { + "checksum": "sha256:c80fbc5228457b9b1978b098f47d2a66ca5636526965847078edb6f1c302e392", + "check_gpg": true + }, + { + "checksum": "sha256:ea68ed6fc06f142c95e907b619a9696146dff1bba308773df12e412d8277eec0", + "check_gpg": true + }, + { + "checksum": "sha256:7027d2c6a004469720e3c64eb7fcb2ace1fffd61ec4380afbf875d59a3876f3a", + "check_gpg": true + }, + { + "checksum": "sha256:af589a85af85270c027bacb5ccaf88c93378d364a7c1436ee7bca1290cf762f7", + "check_gpg": true + }, + { + "checksum": "sha256:1472adb267192ca8a323e544fd9749c4765334fc5779e8de4ee583eff77fc078", + "check_gpg": true + }, + { + "checksum": "sha256:f34cde4c2bd6ab93a697d8c350e98f4d70f897f74fee35a06c25eb4b98f46c9a", + "check_gpg": true + }, + { + "checksum": "sha256:aa3658efc21bcc6d79344eeeaf20285407f6f3b90d905a66a37a8cfc835b2a61", + "check_gpg": true + }, + { + "checksum": "sha256:a2f6ae2742a2aac3f5bb5f1ad5cfa4d9b8fdf7cfd01033246027db7064abaa1f", + "check_gpg": true + }, + { + "checksum": "sha256:e35e30f6477652a93d3c02ec86faa233884aefb2ff9fcf4058909d9736fb2d15", + "check_gpg": true + }, + { + "checksum": "sha256:57a9aff6b8d5ecdb66015e4dfcec0a171ae18751e1d5f9a339361cc45b9a8e2f", + "check_gpg": true + }, + { + "checksum": "sha256:7c66a9a33e131200e13a638613ec054a94be901399424df27a0b4f94532ee36d", + "check_gpg": true + }, + { + "checksum": "sha256:80434d5f64abdd521330153fc0c983c5923a833ab59f57ec3bc3a8cf1d748c8c", + "check_gpg": true + }, + { + "checksum": "sha256:a39fb89e06572d188309dc4daf1d23e21be190e59f9ef8ff3c3ccceaefe505da", + "check_gpg": true + }, + { + "checksum": "sha256:a084b365795c7262fa09b2fc590dfbabbbf30cb9c1c7f9b5274eae4c5d761482", + "check_gpg": true + }, + { + "checksum": "sha256:1c2edf26d16b55bac2824452c1c584ff52acf8477920f384f6019f647c241450", + "check_gpg": true + }, + { + "checksum": "sha256:f8e118c35bb5f8ae3dca517ef38c7a38bbdd491011af9e1c4c5c7523f13e6f9c", + "check_gpg": true + }, + { + "checksum": "sha256:339895e6b901ff4c81966893ec7da9848da3acea26e5b202033bfb79dfcbb6cb", + "check_gpg": true + }, + { + "checksum": "sha256:1d530a23a8ea2b831068593fe6aa7a32923c6276504def5a85ad065aaac9ac5f", + "check_gpg": true + }, + { + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "checksum": "sha256:264828f11342a94f056fb27a2e78fc5e14226230b3dbac8bdad6a4c8598fd24f", + "check_gpg": true + }, + { + "checksum": "sha256:9c8771c8c5eb38351dd30f994133bc9149ec93813d1a7c2cd2dd8f7dc7431d49", + "check_gpg": true + }, + { + "checksum": "sha256:f1419585dbb27e3bf76aab5a5f8fb9580816a7a0e7fc93377b97646a0259a794", + "check_gpg": true + }, + { + "checksum": "sha256:d8d28daa56fa4894a767957aa9948cad6d274e2b70d8b10aa69d9356c8a22eff", + "check_gpg": true + }, + { + "checksum": "sha256:424e1777ae71117d20055ffa5f0ed2ead59a8076528450cf7536e18c70624bd8", + "check_gpg": true + }, + { + "checksum": "sha256:eb35167d6095465a58611b80853213af5838f271b75fa1a5e3c051a04a9078a7", + "check_gpg": true + }, + { + "checksum": "sha256:54c024db70df7966590050dfc5dcc1315174e10c3a57e118ea10178238d70889", + "check_gpg": true + }, + { + "checksum": "sha256:a7f5877c9ebfb44347765c7deb266e53fdd62403ccc0a7ff17fdb101bc28caff", + "check_gpg": true + }, + { + "checksum": "sha256:dc6b772101df9f3029c2cd80a10663663ad877e129c8d724902f5cc9f1785e60", + "check_gpg": true + }, + { + "checksum": "sha256:6d4c3ae013d07e50d085b3419dfd41ac79ba11ada62d8c4570d21764ef6f11ec", + "check_gpg": true + }, + { + "checksum": "sha256:bf92fc95c282da9c76018679d9180fb6c98aaf864f66bbef630941040579f92b", + "check_gpg": true + }, + { + "checksum": "sha256:eb1992de281538771ba578a65eabe620dc35aef6c621d8c5351a2ba38ac440f4", + "check_gpg": true + }, + { + "checksum": "sha256:5ba547e1c2c515b3ca091e04c0a6b15b297e25b567a6613a07bd2bee41f39684", + "check_gpg": true + }, + { + "checksum": "sha256:44a92faf198bf015f5e94cf42ae615215fe0a6c0697b1f6c32d205bd450e7ce4", + "check_gpg": true + }, + { + "checksum": "sha256:b0d153ea83902561a9e60c9c244a497c3b19a9c4e40cf9e8437d0221af0f2ca3", + "check_gpg": true + }, + { + "checksum": "sha256:ee3977f4ee783225903f964c60932795d8c11307043e73527b394dec02487047", + "check_gpg": true + }, + { + "checksum": "sha256:0b8baef3612880639ed59ae79475086aac8ce236fd35977e0d87305d0bb9a529", + "check_gpg": true + }, + { + "checksum": "sha256:974bdde5f821c071bcbe0de191677981685cb8290952be75a7ab15747988a99e", + "check_gpg": true + }, + { + "checksum": "sha256:d2be7b0f17350a8a0f301617cb1d7b024076bc16986abaab94453ec1cee1f1f2", + "check_gpg": true + }, + { + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "checksum": "sha256:84365601f93db7fda27e4d89826d4893830572e98df35275abdf15659cfe3fc5", + "check_gpg": true + }, + { + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "checksum": "sha256:d429648fe5b233a46fdbfc31a283ca4b6be5177ae84f3e7e63fec5f9bebd17d1", + "check_gpg": true + }, + { + "checksum": "sha256:edee134762456246cd8de577597e350b60a04bc43ac4a47622b9a263ddd74cf2", + "check_gpg": true + }, + { + "checksum": "sha256:7a5aadb5da769b563cf1e548d8cabd26c00720a67df7e4a445a5a9ae5b0891b8", + "check_gpg": true + }, + { + "checksum": "sha256:436c2f09d2de629da293ab82af47b7697f4a8c151127cbd993d0e8605a4f423c", + "check_gpg": true + }, + { + "checksum": "sha256:fe6f4202a8e7e52add27c6d2e2af65884a974bcde4b5e89979badb782719ca1a", + "check_gpg": true + }, + { + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "checksum": "sha256:513e24bc56f483b171664ea4dec51cc0cce1f9cc8f4939cde8a65ea976ed952d", + "check_gpg": true + }, + { + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "checksum": "sha256:b6498a7a8056483e1d42362b1fb27bd6c54ed7cc7bd180cae20d64a13ae4c88c", + "check_gpg": true + }, + { + "checksum": "sha256:64206147fbbabe1e050f17442a2a3d1458b27beea0d8f3ff9e258a2842dd7a01", + "check_gpg": true + }, + { + "checksum": "sha256:5f2bdb8f9a18257ee80a243e1be96e3ef6fa660e37fdf7b4443d8e8f7abf86ef", + "check_gpg": true + }, + { + "checksum": "sha256:d02489175567be57a48a3edf5deb66d100e99df73a37b26062fea4d6af014cbc", + "check_gpg": true + }, + { + "checksum": "sha256:8d00fa6cdfcc955dc4e14d0f8b6ba6217d2dd0334ea0e1aa44694c9e0ad0b06d", + "check_gpg": true + }, + { + "checksum": "sha256:ae9a3e144f31b6172d266b984c8385fba94bdcf3002d3182a4118f8d29f5f718", + "check_gpg": true + }, + { + "checksum": "sha256:c958419128c1330b50c741113394b147da1ccda055ab1ee19fabc199f68971ea", + "check_gpg": true + }, + { + "checksum": "sha256:7292bf1d13ef336ef411ef695f87c7c7ecd21a13e05c86cc475930ca61117503", + "check_gpg": true + }, + { + "checksum": "sha256:d01f7e794c3dd3f38de1b69fd360db4b858826eba4e6fd4edc79c8a74774ab00", + "check_gpg": true + }, + { + "checksum": "sha256:46acc45e148eea376c3aa8e83a4d3bf1cf66fa35ccc670f592017428ce75ca77", + "check_gpg": true + }, + { + "checksum": "sha256:5d87d829a1d939c520b25f1c790cd1f3bd6c8b769f4f21303ec5e16a3b509445", + "check_gpg": true + }, + { + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "checksum": "sha256:2ad8824aa48378aa741fbd863104d950ad4f669566af2d4f433be6d9afd8ead6", + "check_gpg": true + }, + { + "checksum": "sha256:c05d42fba4fc1ebc2df9ee49f971c744937d8b307626c90b3cf79bf91619863a", + "check_gpg": true + }, + { + "checksum": "sha256:81169dd168c02aed3b1e57e5af16ec3dbdfb74c15373ee40e9eec5aac60a3d25", + "check_gpg": true + }, + { + "checksum": "sha256:af594688a568ec4db7dae9d60390dce1ab547527bbf2415752f211de3748b97f", + "check_gpg": true + }, + { + "checksum": "sha256:7487afe052c79100e906a4d2cb2ee1043410ca10a8e60a65d95776f63a513595", + "check_gpg": true + }, + { + "checksum": "sha256:e29356f3ea2554e8be23401a08a941f406d337cf6b38e7ee99926fb9b3f1f541", + "check_gpg": true + }, + { + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "checksum": "sha256:e0af6b40e51fe0b9f68367355219aa56717888d2a07c10a001cc8667de1a5a2f", + "check_gpg": true + }, + { + "checksum": "sha256:7bd78cde4202401947dea928274579074bc78fdae096057e788c1b6a86a10ecc", + "check_gpg": true + }, + { + "checksum": "sha256:6728ee255cb8c80b85f6d610bfd795025939a77d2591ad61fe1c4f9d657c386e", + "check_gpg": true + }, + { + "checksum": "sha256:42945876fb8932bad3e50b50349af4bdabe713d7be1c8efc1b0f7b042e556aa5", + "check_gpg": true + }, + { + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "checksum": "sha256:acd149c4bf17a15db75fca1f19e34784a9ed275e19c0721aa78f5eb94797a685", + "check_gpg": true + }, + { + "checksum": "sha256:07cd9ddc7f7a16dc9739647af90706cfbcf70b281f5474e622b0769e211e0dc8", + "check_gpg": true + }, + { + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "checksum": "sha256:58a44f9472918a511d3eee0b3f08926dab2ebf4994584403bd196e6c92a06f5a", + "check_gpg": true + }, + { + "checksum": "sha256:9ed0b44834b6a637c70aa00ab243aecb534f9aea461e1388652ab039898239c8", + "check_gpg": true + }, + { + "checksum": "sha256:c1893a7c51ebb0371b87e2179d6e0e5d0fbb71acb4234cf4adc293af11c75578", + "check_gpg": true + }, + { + "checksum": "sha256:f23f467c4099be4cb4dfdc1be13b7a7bb6e8c6da7c21182658a034827b64df39", + "check_gpg": true + } + ] + } + } + ] + }, + "runner": "org.osbuild.fedora31" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:b37d963f89a7e0d466e1317da6cd2c20b3ce3ec9789e1027c16176734f88c4fc", + "check_gpg": true + }, + { + "checksum": "sha256:f195c83de6568cf550a3b2d70725697196c1a9269cddb9b825f5a887de9d6eed", + "check_gpg": true + }, + { + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "checksum": "sha256:a516dfa62a327d440fe38b93af81dbecb112fe45fff0f227583c451631479122", + "check_gpg": true + }, + { + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "checksum": "sha256:0b1ddcc8c3096814bc5027133fb077ef587b49a1a4e4d6426327c75cf2066b11", + "check_gpg": true + }, + { + "checksum": "sha256:a6caaef9bed1bd17292e1fdde4efee9730f8cff5826a9cb6c952e6f3cd052243", + "check_gpg": true + }, + { + "checksum": "sha256:42a4e01c47e28b71cafb658a5993b7f4b7692ac6b916878d580fecab7ae9d16c", + "check_gpg": true + }, + { + "checksum": "sha256:9c08d246ce73d8741777f290e7110ff9dae97a15e09f3469317ed7c8e9fb64ce", + "check_gpg": true + }, + { + "checksum": "sha256:88831a57114969801a557d700451a70337f944b868a3d792d47e6e9e91961f3c", + "check_gpg": true + }, + { + "checksum": "sha256:b25f063f82484e4fa42d1ad31a2cf23e882a99dc1ccb191b24e14a6a789d87a0", + "check_gpg": true + }, + { + "checksum": "sha256:71ec6fd79756af905e474553f4ca7ae6985e32615df0ee2f2f487c8496e7160f", + "check_gpg": true + }, + { + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "checksum": "sha256:181173a9353f593105978b8e4038b7bf53fd22c63f4514fd271a74d48f9c59f8", + "check_gpg": true + }, + { + "checksum": "sha256:8dbce1e34a19be338f49b792874abc861fd64acc5653f7f5cd523d5e5865897e", + "check_gpg": true + }, + { + "checksum": "sha256:7d8910cf1a1a7f7b98d2989458437feb6e56bd22dae71455233b7f22bd020812", + "check_gpg": true + }, + { + "checksum": "sha256:995ee9636461072248d5c6792d3852fb1ab277a622b18eb7d3c231133446dd7d", + "check_gpg": true + }, + { + "checksum": "sha256:1bdeed5fd5907e0cacd5706ebc93ade09462a0c71e2316d9841e33a896b99b87", + "check_gpg": true + }, + { + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "checksum": "sha256:9ffb9a376d1df3d3d394ec2f8533f939547d8ccd634f1f77db52970630215d71", + "check_gpg": true + }, + { + "checksum": "sha256:23908e2eae2ccfd2efb1d19cdf46e3dca4680ac2d562c1c96f7fb0d22859fc82", + "check_gpg": true + }, + { + "checksum": "sha256:089d4c5c48e89cd1444f283571fce20fbf5f1b20f3a5ff1ce74266bbc2cd0fec", + "check_gpg": true + }, + { + "checksum": "sha256:21d9ceffd6fb52d235a95e4d7708d719eac758a9dfd80ba2d6119dfdc46c80ff", + "check_gpg": true + }, + { + "checksum": "sha256:9cc3e6534ae34343e7e4d056d46b9551da7d0a82c7bad378c3626d4b70d1bf62", + "check_gpg": true + }, + { + "checksum": "sha256:101fa551ae1ae1885c1627fec47745eb0071ae675a762002e02c0563de89ecbd", + "check_gpg": true + }, + { + "checksum": "sha256:ffa75117ea710fef320f1ae878e8c81e7a056386dea78aa5787dc091c5a100a5", + "check_gpg": true + }, + { + "checksum": "sha256:0f3591f036f0be85a9d28e9099d43a8b2e5a500a9588825c1dd994d1a323ceba", + "check_gpg": true + }, + { + "checksum": "sha256:bb305f3ddc74c4c30ae838a2bbff3cd325eea8427622c7f82e4d06a564bace6f", + "check_gpg": true + }, + { + "checksum": "sha256:798376bc628acd54407d945702dce73ab90633919f88fe9b7ecde3f38ebc2fe9", + "check_gpg": true + }, + { + "checksum": "sha256:1088699171a35873eb5a776f0212ceff2bc9d67e3f1d8f2e107bbf751c36ca90", + "check_gpg": true + }, + { + "checksum": "sha256:99e8930364200470ee5bd065dccb7c4c1caa4863c6f8975740643fe9d2485c18", + "check_gpg": true + }, + { + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "checksum": "sha256:6e76674266f1e136186e3f005ddbf13791b1fea78cd30e8501f3dd1b209fa9f2", + "check_gpg": true + }, + { + "checksum": "sha256:920d2d8df80fb92e358f4925bbd2891977c98e0b9d2f69b44f1e74bec26d6a1e", + "check_gpg": true + }, + { + "checksum": "sha256:9c039f6f6e5385344ea56a6490a472b0f475d8d7612b422191d2152b8e1fc55a", + "check_gpg": true + }, + { + "checksum": "sha256:1b85657077726361a4b157a909796649fe93131fdc4aa67fd5329adc8d2fc833", + "check_gpg": true + }, + { + "checksum": "sha256:3a7d7619061a4adb275ef4b41d993375ad7863863741624186add801800e524f", + "check_gpg": true + }, + { + "checksum": "sha256:504971d079493a49afb8fb7f067f5dfcc59f3e007afcc63734c15fe1066e4b4d", + "check_gpg": true + }, + { + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "checksum": "sha256:8fd19268d460d7f49f3dd96644a2b8a3076a7a7ccbe3e35e27eeafc6ab8d9c95", + "check_gpg": true + }, + { + "checksum": "sha256:c0287bc7c1f54bcd19c43904f9a5c7c0cc4c82eae2c455071f6d7ea50714668f", + "check_gpg": true + }, + { + "checksum": "sha256:0458f6a42cd644322b6eb24b01f0f75de47d5e10ae077797dfada1ce2a1f7fcd", + "check_gpg": true + }, + { + "checksum": "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc", + "check_gpg": true + }, + { + "checksum": "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a", + "check_gpg": true + }, + { + "checksum": "sha256:4bb03b2162523fa694e0e44f46b04263ff0f5dab22c3e93124ec9b5650af2002", + "check_gpg": true + }, + { + "checksum": "sha256:e7e629e7e89f970660407fb22c8b706c4c9a65a5f43286ddeef1e165b446fcaa", + "check_gpg": true + }, + { + "checksum": "sha256:30e07680d23bfb5d4b2727893337619c56f13b46daec2f13f8985f642bf84250", + "check_gpg": true + }, + { + "checksum": "sha256:611b0995f8475747341db33373ec0178afcb724183aada71b5d3a2c437d19527", + "check_gpg": true + }, + { + "checksum": "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d", + "check_gpg": true + }, + { + "checksum": "sha256:a00e85fb7902d8869492e32816c7834830682745eeab1efba264bdd3185f479d", + "check_gpg": true + }, + { + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "checksum": "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063", + "check_gpg": true + }, + { + "checksum": "sha256:7ae36bfe222068561cf0259400b54e210ad628aaa66dd4b87e20a2291996c71d", + "check_gpg": true + }, + { + "checksum": "sha256:f85438d6cb268c431f3aed5c678f1632b56d57393a3eb52e31d75bc6462bc88d", + "check_gpg": true + }, + { + "checksum": "sha256:ec305ea347ab987f5a00574bc3eaebaf2412483ed1b79615fdd86ca18ab146bc", + "check_gpg": true + }, + { + "checksum": "sha256:2dd8505a96714cdb79829a1377e36a53e05cc9b65a7f35a258ca3e4aaa76c700", + "check_gpg": true + }, + { + "checksum": "sha256:563f82b7c56043ed5a5ff55dcc643bcc5ac2a1e9ae940481f1c21595a83ba60a", + "check_gpg": true + }, + { + "checksum": "sha256:d96bdfbaba63ac6755a20d8a4d954bc5010695d671ba305a54362c1d3c69fc37", + "check_gpg": true + }, + { + "checksum": "sha256:79db5a94baa6acad360b52fdf6d49cf91d7b6290e0d55f457b2820937d2739f4", + "check_gpg": true + }, + { + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "checksum": "sha256:00e59535d45094b7d47e25c93d21179f3138839968776107df99fa0678f1440f", + "check_gpg": true + }, + { + "checksum": "sha256:fe6afcdab2793cd75a838a758a282d4581f1272f3f32df6a58777c0721e54b2e", + "check_gpg": true + }, + { + "checksum": "sha256:5745966147d1651d663d9e7d37a740ebbb4daee49b5cb7a2e61375ea6b37404e", + "check_gpg": true + }, + { + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "checksum": "sha256:06512e0f2546baf5c47a058d872fc62c39156bc86b5619eb841b435e2cc61e32", + "check_gpg": true + }, + { + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "checksum": "sha256:f43fa8496a54ad89eef4f48c3813190b5509a21c873bc1d5fcd0dda80ae2b425", + "check_gpg": true + }, + { + "checksum": "sha256:f63c88d8b294addf2791a5b291e3ab13750a24fe92fec65c96d365edad767f57", + "check_gpg": true + }, + { + "checksum": "sha256:a108fbc1ba9886604483ec05ef2150c961adb0906db5f9ea46c239bfcdf06b55", + "check_gpg": true + }, + { + "checksum": "sha256:dcc584a55c425c26a62fe579beead8488589c3892c34e8fab95c7fd7ec1cf6c6", + "check_gpg": true + }, + { + "checksum": "sha256:0edff1a5f04f7f5d47537b4c049b95331f9ad33963c9c63ca4b13345a37296d4", + "check_gpg": true + }, + { + "checksum": "sha256:81100039c817e2f3703fb365c63d6d891f3f977dd9e670c3c9b12662de3c255b", + "check_gpg": true + }, + { + "checksum": "sha256:e30906c30d3dea50c62e74bc7aa870eb928af4c6fb474c894f55ef6ba41f5841", + "check_gpg": true + }, + { + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "checksum": "sha256:72bc6a2b459ee27dcd7c213d3aab5a993fc90fcffba2ef02fab7ae3857d379f7", + "check_gpg": true + }, + { + "checksum": "sha256:8c4b392a5e1ed79b7a5b302d8fb14d0470b3a6306a7b36aee275acf0daa61537", + "check_gpg": true + }, + { + "checksum": "sha256:7f23849dcd356019c4e83058e9e49d544300ad7b9a6f6a7528831e393ca1197c", + "check_gpg": true + }, + { + "checksum": "sha256:e6a986f10b17ba67e86c417251d855e1eeac0ca1c85c2ee7ae3bfc7d6c966087", + "check_gpg": true + }, + { + "checksum": "sha256:3b16753c7590bc968a693e97ce9d318d58e1483fd2999a874becd95abc9d35ff", + "check_gpg": true + }, + { + "checksum": "sha256:9404d90bbb474b30b80c90719df01d784b925127e9710f12c44c72d14c2708fc", + "check_gpg": true + }, + { + "checksum": "sha256:f74b53f33812f65d12377946d363a773e48cf6bc6c4bb2acec5bb4a048861b88", + "check_gpg": true + }, + { + "checksum": "sha256:6e78ce3d460b7e1377f487fed5563999fb44d310c441798a4d23d34960e23d45", + "check_gpg": true + }, + { + "checksum": "sha256:b3d8740cee57c5025ef88e9d71df141a6600fdf26215969acae393a2b052892d", + "check_gpg": true + }, + { + "checksum": "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565", + "check_gpg": true + }, + { + "checksum": "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b", + "check_gpg": true + }, + { + "checksum": "sha256:0064a42567b657d85831ec162a314cd00f7befe48ce634387463754677206c9c", + "check_gpg": true + }, + { + "checksum": "sha256:c8fc5b492af902894b927e79314b52bbdd8e45b2d2018abd8113d8e1807adeca", + "check_gpg": true + }, + { + "checksum": "sha256:7c1e646c757c1937702c56d350dc5b63f0d4f6b4ea5b97a2e420e7f96c0965ed", + "check_gpg": true + }, + { + "checksum": "sha256:c84f89f65e2a691d7fcbc7021c3c5d796e0f39483e3fe95e83579c630575b78a", + "check_gpg": true + }, + { + "checksum": "sha256:f3d5fd211e3faf1b61be64fd3f1659dd640a873c66747a5cc341f888e4179dea", + "check_gpg": true + }, + { + "checksum": "sha256:abf022d05aa55e7aa8d0736b899d86613d30a7e1751b04666920f367d4311a1a", + "check_gpg": true + }, + { + "checksum": "sha256:e3046e1e508453e332277ab86ebf67df0106edca2c6e8e54ba2bffb76f9ed4d7", + "check_gpg": true + }, + { + "checksum": "sha256:42ae595f75734daaed3430e1117d3cb05bd9a18108506bb9600125693d3d1688", + "check_gpg": true + }, + { + "checksum": "sha256:b9ad5c82b3b83871269ee705ee12896efd1e3485b0d2005c9cff2a100100cd34", + "check_gpg": true + }, + { + "checksum": "sha256:81f5b3786ab1b634016c0c066379dda739386b4b1d639111b4575748e27caa56", + "check_gpg": true + }, + { + "checksum": "sha256:12c732f4a960848bd4fbc8111c2c0cf584799b1fdf0eb89c2cdcb26da5bc03b8", + "check_gpg": true + }, + { + "checksum": "sha256:0a4100f50b31df500afc5d255dd87117553df7032447f3e226196fd64f9c3f47", + "check_gpg": true + }, + { + "checksum": "sha256:8e10cf2b0645e342b001338a4463c5a02a8a302c25affba37da700a987e2c064", + "check_gpg": true + }, + { + "checksum": "sha256:4290088d905017724f6c909cb1b3193055a6aff62cd20e39ea196694f90753c8", + "check_gpg": true + }, + { + "checksum": "sha256:0cb1a66cb3bb44797a8aeb47db85db1f6c0fcf4d4571d8a5f8981f83b51c08af", + "check_gpg": true + }, + { + "checksum": "sha256:7102de1c840d5b915a40fde5c408f182d677ecdd5126dedf033ebb63b5419607", + "check_gpg": true + }, + { + "checksum": "sha256:89a35174435a790c0fbf3bc4306d51c867ecce66fb65bae0e7706a9f8f9a19b3", + "check_gpg": true + }, + { + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "checksum": "sha256:7637132d543741e8c5b581523ca5db24adc6eb6d78530944881c360da694cf15", + "check_gpg": true + }, + { + "checksum": "sha256:19217c1730a3f16e15eedd95e3f97471097a1bd066f7783fd273cfb392f4042e", + "check_gpg": true + }, + { + "checksum": "sha256:af00a0b026235e70f7cb7606166dfcaea0d227a3de70363ff67a644036ed8bfc", + "check_gpg": true + }, + { + "checksum": "sha256:ddd0635b899826bed59036ba17f8112c35660b32f3d1639266f5e394166a9dbf", + "check_gpg": true + }, + { + "checksum": "sha256:49941a1041cf1e9a9df33aec7f0007f40cb1c815b384270cef23ca80a0ceedb5", + "check_gpg": true + }, + { + "checksum": "sha256:82bc08ef5d8049d3d07a5eb00f61d3f94d7577ef814f6791352f75835bff477a", + "check_gpg": true + }, + { + "checksum": "sha256:0064998ad79a6250297b379852b5a06932d8e074270bea02d75888758755bd23", + "check_gpg": true + }, + { + "checksum": "sha256:6b11c1e14d4a02edf8beee776f9f896729bd0f28c66cb4c1d2bd021cdffc6aa0", + "check_gpg": true + }, + { + "checksum": "sha256:4de89d25d09c57b09a51ab93fdf84ade211e835c16d3ba6e4e261dcc0c4e50a1", + "check_gpg": true + }, + { + "checksum": "sha256:3ad68b7569e311a1ca7da4da7b42021a7acb001ab4b2cc6e63b3ba0f87cbd55c", + "check_gpg": true + }, + { + "checksum": "sha256:456252f83ba91a1150f180a81998c3acdd71be57a324cf84d6d842a063c56a12", + "check_gpg": true + }, + { + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "checksum": "sha256:a3be2e9e42d68f5e5e58f1dd86d5b6e4fc1ff91e98f44d26221d6bda38c9f372", + "check_gpg": true + }, + { + "checksum": "sha256:c935f74584d7289ca58d1b23cbdacd38450d351dbc3dcd0bc713723c4d50a545", + "check_gpg": true + }, + { + "checksum": "sha256:0b109cfab724680af15e7be85cf9f4f4828cd8290f0aa8fcebcbb14cd176be94", + "check_gpg": true + }, + { + "checksum": "sha256:3e6b2cfce9c4a62f7cde13bb6ae135d5f6f0d6cb179ab3dbd61ba1533477f257", + "check_gpg": true + }, + { + "checksum": "sha256:e9c1fa22b0b6d6b7ac782ba60d4c6a2c747bd683f075720a4d82aec45adbd905", + "check_gpg": true + }, + { + "checksum": "sha256:ee2f71a3a318270e9cc55aa9dde8889f2e664fec681f9fd5719361f8e4a1afac", + "check_gpg": true + }, + { + "checksum": "sha256:d6b491f91a567b4245d07d28a0547cb1b8e97a1f814e3f7d76dd685bb6658b64", + "check_gpg": true + }, + { + "checksum": "sha256:7b01a3bf09861003bd9524e9d460ed68b8d2de4233a09f7af731cb07f75ef913", + "check_gpg": true + }, + { + "checksum": "sha256:1138343dfb107de07f54d4723aee2686fdd1af3e4532d14bd399b9b6b7873040", + "check_gpg": true + }, + { + "checksum": "sha256:ea35fa3f5c16e074a59d66ff9037e48ca7c0126444e09daf640b7a37dacd76ad", + "check_gpg": true + }, + { + "checksum": "sha256:4549e51322d0b10016f1daa8dedc807fddf7d2d4e77719baa696de15b88821bb", + "check_gpg": true + }, + { + "checksum": "sha256:fd9ac175e5af929bb942528904d6e6e48caed800e22a7a45825d535bdc1537ba", + "check_gpg": true + }, + { + "checksum": "sha256:fb2b070b96ed58a31da7889452ce3cdbfb60f6161a3e2f0ce2738b4d3facfd2d", + "check_gpg": true + }, + { + "checksum": "sha256:03559557dbf64805e44d7e956f6b228c90831766fd1f485eecdfddf7a646a220", + "check_gpg": true + }, + { + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "checksum": "sha256:9bf695c87aa5acc7695251a4c75c576375c45c5b043af00a7ddf503223030309", + "check_gpg": true + }, + { + "checksum": "sha256:3975c15d461cebe50d1f179fb86d288c18f643c32f179bbab13425596ab64001", + "check_gpg": true + }, + { + "checksum": "sha256:e88e27b7ac16c753e20f65cd13ed163019ac702c4195eb75d766acd44cb55263", + "check_gpg": true + }, + { + "checksum": "sha256:c68bed5b576d7baa67a59c726d2340f7c0df7e9b93f90b3a22d3f62e9f99456a", + "check_gpg": true + }, + { + "checksum": "sha256:e0408a5020069e7a4585e3bb4d1bba1b8bf0afe481ff63b70e2221e9c5464cad", + "check_gpg": true + }, + { + "checksum": "sha256:7d0ec23fb8dab882db8b7ec9a9cbb2728d6df2af5c02ee06cc6fa357f210ff09", + "check_gpg": true + }, + { + "checksum": "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552", + "check_gpg": true + }, + { + "checksum": "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b", + "check_gpg": true + }, + { + "checksum": "sha256:cddb050897cd8666090b172711fb7947b3bf844f5a190f8c689fd79a222e1761", + "check_gpg": true + }, + { + "checksum": "sha256:aeac986c84b8038eccd191310bb09f3d396f7c05171ac0fb8691182918459c90", + "check_gpg": true + }, + { + "checksum": "sha256:01ea4ecad746f1309b5c943f2b2709f7e5400d33e4d51c85401205ed18d61621", + "check_gpg": true + }, + { + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "checksum": "sha256:59f289c6f3b0180ae3eddaa974e2f972bf15c48135a2abed9eb2f72dfdae1be4", + "check_gpg": true + }, + { + "checksum": "sha256:159972ccc01cd5840c2aad04818efc965b64c5120b1fcce92a47f45ab1abf4a5", + "check_gpg": true + }, + { + "checksum": "sha256:46b0c36e90fd16371444eb5376fc01232b6e64073e42ed1f141344a9aadbe568", + "check_gpg": true + }, + { + "checksum": "sha256:f7954ba55d833c6341ec87b0cf57817084c705673b8b50aff3e3606fcbdcfbb5", + "check_gpg": true + }, + { + "checksum": "sha256:58c8a3d4ac7c8c318b5596b192dbd0350a1122983b69bfc1cb5eb3ecec5b7cf6", + "check_gpg": true + }, + { + "checksum": "sha256:500d0a1b49962ec79ca00224528d6e599d3845eb60b8b13a678d03edfaa755ec", + "check_gpg": true + }, + { + "checksum": "sha256:4c55460197fe24d0a105e3071824a933069e0b655910fd7ee7335e2396de15dc", + "check_gpg": true + }, + { + "checksum": "sha256:2aafea82072ad28a8b662e32902f66b47166a00b5c9cf19b1dd589f39776560f", + "check_gpg": true + }, + { + "checksum": "sha256:9ac1ef0ef80d7ff65903120f8b2a5a2a5723dce7c9c131e17cea3572cb81d0f4", + "check_gpg": true + }, + { + "checksum": "sha256:0f661b922a9e9cbe82e948ec1d83c6fca6e61e08de50815a5b6c069a64f4e883", + "check_gpg": true + }, + { + "checksum": "sha256:ec48b0cd759656b4c5d8d13dcc81c6fa23914f8e214b4cda1ed08e1896177fe9", + "check_gpg": true + }, + { + "checksum": "sha256:03b9d49b78b7e758eecce6a25782767ec5dc921d28f053b17a651b1c8bb96d7b", + "check_gpg": true + }, + { + "checksum": "sha256:a96e76f00865249f70a3f2ef293946e9786150faa83e37185e61592290817cb4", + "check_gpg": true + }, + { + "checksum": "sha256:2fc552b80866318c0ac934f5385fd2090743701639c318b75138ae985ff5606a", + "check_gpg": true + }, + { + "checksum": "sha256:d877864e501fe38a1b0c7e11572e61c5d9eb9857436541f1c2d5ad2f8bd29b83", + "check_gpg": true + }, + { + "checksum": "sha256:64b0063f6b3a42b712c0ee622328e36ddf94a15da547e3c8da3a4191e0941c92", + "check_gpg": true + }, + { + "checksum": "sha256:99a6e2861b7eb51684d1b83901a7e54caf649b711556a660d93bfef114eab72c", + "check_gpg": true + }, + { + "checksum": "sha256:608a967cbdbad6b7320060e986bf8f8e7f6b61bff5ae6571006397b46a60771c", + "check_gpg": true + }, + { + "checksum": "sha256:5e2a37ee7e1147a446be67d63b1be55f2e82c0ae0a84dd1afc6a3fec64e62804", + "check_gpg": true + }, + { + "checksum": "sha256:566a389a620f634ab341a9a39cffdb1c607b4682224cf3d5ac530b6c57c78d0f", + "check_gpg": true + }, + { + "checksum": "sha256:4e365f48d5c85b82f71e8d000d00cdf7ed3c23cd94c31fbf3543572413541c3d", + "check_gpg": true + }, + { + "checksum": "sha256:a61e3fed8d1c860bf09b5ec5586e30b88b1b1dea157cd371def9fcf72e313a3d", + "check_gpg": true + }, + { + "checksum": "sha256:98d811216e2e0e4ad49925489824210fc3e9b57bb09eefcd4047886375d34f57", + "check_gpg": true + }, + { + "checksum": "sha256:a63ae4aa727a4b75b602a67f1e42946e39dc124e9f1aeb3e795af40ad4e15cbf", + "check_gpg": true + }, + { + "checksum": "sha256:8d17464a13f79b54c8dfe76d716a42d6c875bce408e29344c1ecf916957a649e", + "check_gpg": true + }, + { + "checksum": "sha256:898a918a7adfefc3ce13d10b30b2ec7ccada96155afa15ee3f4e589b3f1baa38", + "check_gpg": true + }, + { + "checksum": "sha256:04826477197ec239d756f81cb6d38fde2f65e71499a8dbaf0c666d93084f1ea3", + "check_gpg": true + }, + { + "checksum": "sha256:1738cf24111bcd0bff08880c4d5efa624c09a2080c901f67ab032ed201a8751e", + "check_gpg": true + }, + { + "checksum": "sha256:5ef4f8487a78a43f7502c055ac77c047ce159da5641e5b61c2669395ae1efe62", + "check_gpg": true + }, + { + "checksum": "sha256:6f7bd7a58d5aed77bbab94aa38edcbc4cac924d72ab6c72ce718f24b6528e1a5", + "check_gpg": true + }, + { + "checksum": "sha256:6bc6909c53c0eb2bad7640b3fb79da5cacf5fd8951dee08347b8d18df1b004f8", + "check_gpg": true + }, + { + "checksum": "sha256:3976706367650c755852d995bbe8c4e6bbd13b6e8e0148b7beddb4aba3679d8a", + "check_gpg": true + }, + { + "checksum": "sha256:5b75073853ff34026cf180d7466314783a7a81defaa43e6b7416a38d9f19230b", + "check_gpg": true + }, + { + "checksum": "sha256:2575f8d1fb953934730b9fe6803bf3de12669dcee78852057ea4e88f9d4d76a4", + "check_gpg": true + }, + { + "checksum": "sha256:e8a13bb46e5149142a1e0a359460c1c65b2cbcbff20f2d0c50f9adbad57538a1", + "check_gpg": true + }, + { + "checksum": "sha256:b9b609d17e9274c1551ac6ebab4b53f6e4a5ae9253db5465c65fdb8c919a09dd", + "check_gpg": true + }, + { + "checksum": "sha256:be8bf30729c71aabe30f2c4cf8e5c43ce3cdf892c218fadf53c0af29a76fd6b3", + "check_gpg": true + }, + { + "checksum": "sha256:d2f7d49bd565c2fec4ca945ae97ac3b8a607f114d3a7558b90b2caaa5871459b", + "check_gpg": true + }, + { + "checksum": "sha256:6b2e3b36c2a3e988f40548688b32ef3ce2e4c7906127215c82736189684a95a6", + "check_gpg": true + }, + { + "checksum": "sha256:0b2a6b7e3b62ff9c02ec3012f08fbf396a7990bf9599b49b75eecbee3b257f7f", + "check_gpg": true + }, + { + "checksum": "sha256:e1e5250ea932beac32caf373ae55b4655c50ae8a1bd9d42e3ceac590a13031ef", + "check_gpg": true + }, + { + "checksum": "sha256:c6ffcbd829ea30ef40fa61095cef03f2b6eafa3228187a478d6d027911f12e2f", + "check_gpg": true + }, + { + "checksum": "sha256:31dacda6745f326be70d854d50ae5d3cd0c9d4f19aeab6b4d09920e1436d8bdc", + "check_gpg": true + }, + { + "checksum": "sha256:618e9a7e3f1f8191beee70d3ad1c8754870887d251480e7e6dd1f3de2d8226d1", + "check_gpg": true + }, + { + "checksum": "sha256:3fb9cec5d598a549e97041993399d49c5943821b1f3441881cf15cb26f38e437", + "check_gpg": true + }, + { + "checksum": "sha256:69f2c758068234b1abc39ffaf94c8825ae4baa9810cc54e5d49a5c891fa98435", + "check_gpg": true + }, + { + "checksum": "sha256:575640462a8c2d0687ea225cc7b6bbf7aa0814e311619ddf6cd16e1bc22f9513", + "check_gpg": true + }, + { + "checksum": "sha256:d2d3b613de0ecf3ae022e5d5d1576858c91b203af6a52a7a9aa36245f0cdbd05", + "check_gpg": true + }, + { + "checksum": "sha256:3308454f1353d5aced0a9574bc969ae272923ef1faa425bd9080de6e56e1bcbb", + "check_gpg": true + }, + { + "checksum": "sha256:d287bfdcebb9fbb31d5f58cc71311f48a85970d0fd92f5beb0193270c155faac", + "check_gpg": true + }, + { + "checksum": "sha256:ead6cd0d8e509f07e36456aff75eca8433821813d675382d28fe4e7dbecc48dc", + "check_gpg": true + }, + { + "checksum": "sha256:a5fa076ed2c83974cacf4ce386bfdc576ce532fba4f8645dda5c2b67efc5d501", + "check_gpg": true + }, + { + "checksum": "sha256:e9c7f59547a9eec5304db7a312b435592f07f7aee4f3db617e5ddfac0f4d048c", + "check_gpg": true + }, + { + "checksum": "sha256:429cf175b6c3b2bedcabf3391ad3166fe6e62259877f309e57500d2c7f1f1882", + "check_gpg": true + }, + { + "checksum": "sha256:311729a146f8833ff882370348d69313322dcf7586b68d5eed192eb633dcd58a", + "check_gpg": true + }, + { + "checksum": "sha256:d1ce6a69f0c2d96a97a04036a5c59deda82b5e1b0843c114f0fb896279ec7bbc", + "check_gpg": true + }, + { + "checksum": "sha256:56f3d59b74bf8ceafea695d10fb7ad4672ec93f824ef9b0508c7bcdedeffb101", + "check_gpg": true + }, + { + "checksum": "sha256:ee5ed9701778c4cb91af4c2e2ef996b9c178d32b652edf4506394cac72fefb96", + "check_gpg": true + }, + { + "checksum": "sha256:8d21bbf2063bb50cf3d12281731fbd8b26dece5f154d7a50f0952695fea6751f", + "check_gpg": true + }, + { + "checksum": "sha256:f11d53128f33f9e73dc21c01159a283cc3fcd2e39f2712dbfa930018ae67fb69", + "check_gpg": true + }, + { + "checksum": "sha256:fb6b61cabfce21597c33c62743c13dd96bcea39aa806a144bc2b2665b48273a8", + "check_gpg": true + }, + { + "checksum": "sha256:a40b4873535c2b0b826063e5248981d1ce0d04ef5ec6d9c21facc07ce2446b40", + "check_gpg": true + }, + { + "checksum": "sha256:77ff28552aba96ce4b80d51a9c390ef4958afad18ede879bf31022f2509e2d90", + "check_gpg": true + }, + { + "checksum": "sha256:c599ffa97fde329ff872bd6db99e8c218601df6549302f89ff747d34ca24042c", + "check_gpg": true + }, + { + "checksum": "sha256:816fe17af41a66dd718eb247273be824b75f53fb539455b58b892528ca12cde5", + "check_gpg": true + }, + { + "checksum": "sha256:20cc74172d531506391309e8f82c6512404ada35f22c68fcd0b83a01dc6e0ca8", + "check_gpg": true + }, + { + "checksum": "sha256:23e335d288f55da26dc77e0d1ceb7cbe4e3890b4e28ff4a2435fc4481a6e737f", + "check_gpg": true + }, + { + "checksum": "sha256:4f37b1e322e3001b076e0128541cc82c180d7054b1c0b7200f46fda4d654cd71", + "check_gpg": true + }, + { + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "checksum": "sha256:7623bcecb8340ed57e1aa2951b13a1c5b1dfefa80eb226f269294df29cb40c08", + "check_gpg": true + }, + { + "checksum": "sha256:d1520137d9cb96cd10a63893b45b4794b120502bdbab0862e001ac2486195aa6", + "check_gpg": true + }, + { + "checksum": "sha256:0c49f27ae0aaf95fbdc52cfb9406c41eefff41b205f85fdc6ef6787ec3af5146", + "check_gpg": true + }, + { + "checksum": "sha256:e78343046ae389b1c11d36f8de0b8bfbb9ded7bdc39fb52b3f719a39047bf42a", + "check_gpg": true + }, + { + "checksum": "sha256:36ce07aa1f90dfdf5ae9824acff24fc3aafe5633b07a022732ca06258e0255b6", + "check_gpg": true + }, + { + "checksum": "sha256:e1deab5e887a199233f9a439d2d20d864d434e9a4ac7fe460f230d368fb3779f", + "check_gpg": true + }, + { + "checksum": "sha256:11e8ee935d9c9d349f4c081d035fc4ee34539af23ef8122e6901b22cf97f346f", + "check_gpg": true + }, + { + "checksum": "sha256:768cc2c561bd6476df45fbd9280bbaeb87d2addcd0c51601d2226a590d7dc872", + "check_gpg": true + }, + { + "checksum": "sha256:82cc8c43bfe0e731ec78e31c8af6250ec1f13989978105a1b38d518470cf5bde", + "check_gpg": true + }, + { + "checksum": "sha256:c1590c5cdfc7aad868c75c54c11a2c7d692001f758ead33aa10f9838955148c4", + "check_gpg": true + }, + { + "checksum": "sha256:c6de19d0d4b8f67957ca6122462090895034495852814f36396bc134905f5f5e", + "check_gpg": true + }, + { + "checksum": "sha256:51f15beba5e5bfc6ff646741b3fbaa3a484ebb40fd8c6c59b8f1f6346dd93e93", + "check_gpg": true + }, + { + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "checksum": "sha256:ce421671bfd14a427771eb3c78b060352a61cca889b1bf1b342c328dd521623d", + "check_gpg": true + }, + { + "checksum": "sha256:02f7f1cdd5cbe11b16e093686db5c584a68db4e6b1015c4d36c0246a54f801bb", + "check_gpg": true + }, + { + "checksum": "sha256:2b1052455234b751e869f22c496bb660dec53eafe198673bab25053e394e41cb", + "check_gpg": true + }, + { + "checksum": "sha256:f2d11878777b28a284e9a571a6a9cf893a97f0935291b10686eb93a2a3dfdfb8", + "check_gpg": true + }, + { + "checksum": "sha256:99c0e924fa7eb70fc9301b692d4ba72ec480af840498b8251f68a419317bd108", + "check_gpg": true + }, + { + "checksum": "sha256:5a32c492b921e9287422006f255833605b328f3efd071609673be161bb4e7f04", + "check_gpg": true + }, + { + "checksum": "sha256:48ee663f069c5019c842f316216ef3bf8dfcbbec479c98d1f2b24749c22e57f3", + "check_gpg": true + }, + { + "checksum": "sha256:23e8c23c89737665a5288a3a171548e94898be9ed4a24c056d8bc851c6800090", + "check_gpg": true + }, + { + "checksum": "sha256:91d628d3e4a82976361ecb306d4f0049aa65c811fdd5051b3f8423b75e4a10e9", + "check_gpg": true + }, + { + "checksum": "sha256:f6d37f25fa7215b7ae185b12f687d60c4363cfb8e35d591595a9b0f379488fc6", + "check_gpg": true + }, + { + "checksum": "sha256:e4e6a5e014442aa8d7768555da9d44e6381569e0c44e61d2d2a06d6692748945", + "check_gpg": true + }, + { + "checksum": "sha256:b04fecd603225051ca56c6674cb72f12f4de0cc1cbbfda0ab7d0af0e655b2c99", + "check_gpg": true + }, + { + "checksum": "sha256:57bd1ce5d776daca117795bc8e3852f1d29a6fc3fc1edd21729d161de2d7798d", + "check_gpg": true + }, + { + "checksum": "sha256:14a759b4daf287d66f5b803b0fbb52621f8429607be109e5d3c313a57cc276e2", + "check_gpg": true + }, + { + "checksum": "sha256:2b24b5729cd74e3b1efe261bfd732fd1995b0e64d76587a3d90762d77cc58c77", + "check_gpg": true + }, + { + "checksum": "sha256:c80fbc5228457b9b1978b098f47d2a66ca5636526965847078edb6f1c302e392", + "check_gpg": true + }, + { + "checksum": "sha256:4fe97b617adfa7c0f97ba5b2b6e1c0d2e2b15c54ba8db66fc389cacc0f1b2b60", + "check_gpg": true + }, + { + "checksum": "sha256:ea68ed6fc06f142c95e907b619a9696146dff1bba308773df12e412d8277eec0", + "check_gpg": true + }, + { + "checksum": "sha256:7027d2c6a004469720e3c64eb7fcb2ace1fffd61ec4380afbf875d59a3876f3a", + "check_gpg": true + }, + { + "checksum": "sha256:af589a85af85270c027bacb5ccaf88c93378d364a7c1436ee7bca1290cf762f7", + "check_gpg": true + }, + { + "checksum": "sha256:1472adb267192ca8a323e544fd9749c4765334fc5779e8de4ee583eff77fc078", + "check_gpg": true + }, + { + "checksum": "sha256:f34cde4c2bd6ab93a697d8c350e98f4d70f897f74fee35a06c25eb4b98f46c9a", + "check_gpg": true + }, + { + "checksum": "sha256:aa3658efc21bcc6d79344eeeaf20285407f6f3b90d905a66a37a8cfc835b2a61", + "check_gpg": true + }, + { + "checksum": "sha256:a2f6ae2742a2aac3f5bb5f1ad5cfa4d9b8fdf7cfd01033246027db7064abaa1f", + "check_gpg": true + }, + { + "checksum": "sha256:e35e30f6477652a93d3c02ec86faa233884aefb2ff9fcf4058909d9736fb2d15", + "check_gpg": true + }, + { + "checksum": "sha256:57a9aff6b8d5ecdb66015e4dfcec0a171ae18751e1d5f9a339361cc45b9a8e2f", + "check_gpg": true + }, + { + "checksum": "sha256:7c66a9a33e131200e13a638613ec054a94be901399424df27a0b4f94532ee36d", + "check_gpg": true + }, + { + "checksum": "sha256:80434d5f64abdd521330153fc0c983c5923a833ab59f57ec3bc3a8cf1d748c8c", + "check_gpg": true + }, + { + "checksum": "sha256:a39fb89e06572d188309dc4daf1d23e21be190e59f9ef8ff3c3ccceaefe505da", + "check_gpg": true + }, + { + "checksum": "sha256:253f9f540248a0bdd537ee8ea4f670752af74d85be98ea81593a30710e1e5808", + "check_gpg": true + }, + { + "checksum": "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47", + "check_gpg": true + }, + { + "checksum": "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70", + "check_gpg": true + }, + { + "checksum": "sha256:284d46ebd3d3fd4a915b624a75e9931c948807fcb13fed01681e623d0ba7b1ce", + "check_gpg": true + }, + { + "checksum": "sha256:a084b365795c7262fa09b2fc590dfbabbbf30cb9c1c7f9b5274eae4c5d761482", + "check_gpg": true + }, + { + "checksum": "sha256:1c2edf26d16b55bac2824452c1c584ff52acf8477920f384f6019f647c241450", + "check_gpg": true + }, + { + "checksum": "sha256:84fa6157b3e986b9ce67cc03bfed4e2b96fa7d075df70e038fbcd2b486737d35", + "check_gpg": true + }, + { + "checksum": "sha256:f8e118c35bb5f8ae3dca517ef38c7a38bbdd491011af9e1c4c5c7523f13e6f9c", + "check_gpg": true + }, + { + "checksum": "sha256:332ef2695e27190536747f53bab03ba5df0ca903564f6071623d99fa524d6d2f", + "check_gpg": true + }, + { + "checksum": "sha256:caeade153eb315a95e8bcdd20ceda84ed6bf624809a30ad0886caf9cf90c6d40", + "check_gpg": true + }, + { + "checksum": "sha256:339895e6b901ff4c81966893ec7da9848da3acea26e5b202033bfb79dfcbb6cb", + "check_gpg": true + }, + { + "checksum": "sha256:1d530a23a8ea2b831068593fe6aa7a32923c6276504def5a85ad065aaac9ac5f", + "check_gpg": true + }, + { + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "checksum": "sha256:264828f11342a94f056fb27a2e78fc5e14226230b3dbac8bdad6a4c8598fd24f", + "check_gpg": true + }, + { + "checksum": "sha256:504b334756e12eefb42d44e53da61fb4321b860e3b5f380b5c21c5c3784a8c75", + "check_gpg": true + }, + { + "checksum": "sha256:9c8771c8c5eb38351dd30f994133bc9149ec93813d1a7c2cd2dd8f7dc7431d49", + "check_gpg": true + }, + { + "checksum": "sha256:f1419585dbb27e3bf76aab5a5f8fb9580816a7a0e7fc93377b97646a0259a794", + "check_gpg": true + }, + { + "checksum": "sha256:d8d28daa56fa4894a767957aa9948cad6d274e2b70d8b10aa69d9356c8a22eff", + "check_gpg": true + }, + { + "checksum": "sha256:424e1777ae71117d20055ffa5f0ed2ead59a8076528450cf7536e18c70624bd8", + "check_gpg": true + }, + { + "checksum": "sha256:eb35167d6095465a58611b80853213af5838f271b75fa1a5e3c051a04a9078a7", + "check_gpg": true + }, + { + "checksum": "sha256:0a80e2a0ede76c98337c220f01dfadacace037b48f09fe072c5d33f356e50b8e", + "check_gpg": true + }, + { + "checksum": "sha256:54c024db70df7966590050dfc5dcc1315174e10c3a57e118ea10178238d70889", + "check_gpg": true + }, + { + "checksum": "sha256:a7f5877c9ebfb44347765c7deb266e53fdd62403ccc0a7ff17fdb101bc28caff", + "check_gpg": true + }, + { + "checksum": "sha256:dc6b772101df9f3029c2cd80a10663663ad877e129c8d724902f5cc9f1785e60", + "check_gpg": true + }, + { + "checksum": "sha256:4d4853ac550a0cfc5b3bcbcb7f12c81461393a6aa0e96a23648985f8a7f2e8e2", + "check_gpg": true + }, + { + "checksum": "sha256:6d4c3ae013d07e50d085b3419dfd41ac79ba11ada62d8c4570d21764ef6f11ec", + "check_gpg": true + }, + { + "checksum": "sha256:bf92fc95c282da9c76018679d9180fb6c98aaf864f66bbef630941040579f92b", + "check_gpg": true + }, + { + "checksum": "sha256:eb1992de281538771ba578a65eabe620dc35aef6c621d8c5351a2ba38ac440f4", + "check_gpg": true + }, + { + "checksum": "sha256:5ba547e1c2c515b3ca091e04c0a6b15b297e25b567a6613a07bd2bee41f39684", + "check_gpg": true + }, + { + "checksum": "sha256:855131926b9a3764835de3e7171b9ce579847ce161f3ba8406a5b6fdfa781f55", + "check_gpg": true + }, + { + "checksum": "sha256:07f4ccd9f3cb20ceb4483adb673adfef15394b246bd93a84f169eb07acb68d71", + "check_gpg": true + }, + { + "checksum": "sha256:44a92faf198bf015f5e94cf42ae615215fe0a6c0697b1f6c32d205bd450e7ce4", + "check_gpg": true + }, + { + "checksum": "sha256:b0d153ea83902561a9e60c9c244a497c3b19a9c4e40cf9e8437d0221af0f2ca3", + "check_gpg": true + }, + { + "checksum": "sha256:0ae87f94df2e114f287d60e9041ac159349f51322e32eeefa19a96db0acb78e7", + "check_gpg": true + }, + { + "checksum": "sha256:ee3977f4ee783225903f964c60932795d8c11307043e73527b394dec02487047", + "check_gpg": true + }, + { + "checksum": "sha256:0b8baef3612880639ed59ae79475086aac8ce236fd35977e0d87305d0bb9a529", + "check_gpg": true + }, + { + "checksum": "sha256:974bdde5f821c071bcbe0de191677981685cb8290952be75a7ab15747988a99e", + "check_gpg": true + }, + { + "checksum": "sha256:e4174ec224296d315b8a43af9d252180d87dd6b5512873649dca4822150b6628", + "check_gpg": true + }, + { + "checksum": "sha256:cf480f0df368b3cc9f36e42d5d573afa93fcb3889614dee172c0ad367785f520", + "check_gpg": true + }, + { + "checksum": "sha256:6075f3af3dc794c7c91fc4e46e8b286ff6094156516eca1caee5c3b299aea9bd", + "check_gpg": true + }, + { + "checksum": "sha256:d2be7b0f17350a8a0f301617cb1d7b024076bc16986abaab94453ec1cee1f1f2", + "check_gpg": true + }, + { + "checksum": "sha256:9ff53c6f07da3adeaa20da76c1c78b886710b460db7a316415f8bc9182096fb0", + "check_gpg": true + }, + { + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "checksum": "sha256:84365601f93db7fda27e4d89826d4893830572e98df35275abdf15659cfe3fc5", + "check_gpg": true + }, + { + "checksum": "sha256:73a7249de97f0ad66bc1a867ac5b5d08b741ab152d4dd7ce45cc231d64126b58", + "check_gpg": true + }, + { + "checksum": "sha256:4cca3f986ddbd38cfbfb6d1c8d336a1aaed78f7da1f38356ce1e034ba35ec492", + "check_gpg": true + }, + { + "checksum": "sha256:700acef9fc8051726700645696fd67b0fc3b7fec08290ef9c2964fe7a9d3e8cd", + "check_gpg": true + }, + { + "checksum": "sha256:e17ef6f7d4f1869ff5813d6f8f2983cd6f5cd23d4a666b7ae19154636e911644", + "check_gpg": true + }, + { + "checksum": "sha256:9b49fdc41ba8f1284c63db29b8bda002a7256a54fdba14c9d3fccd852b8547b1", + "check_gpg": true + }, + { + "checksum": "sha256:f0b9a02ed639d2cff7a85262d440c65f2fa2ba318166b45d969a2802f102535b", + "check_gpg": true + }, + { + "checksum": "sha256:ee6dbb4914a35ee8a816ecde34d29221e3f4622324f6287c328e8ac22ae572ad", + "check_gpg": true + }, + { + "checksum": "sha256:cdc526097cd2fecb75e44ad11a69b10eb7804f310298c064c3b931515d4f3d5c", + "check_gpg": true + }, + { + "checksum": "sha256:d35fe17711337362bdf09540523bddbdc16406d0ff7650043a3cdd1cfc222ae8", + "check_gpg": true + }, + { + "checksum": "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653", + "check_gpg": true + }, + { + "checksum": "sha256:a314b2a8ed8a9e7e80aedfb1f76c75910d0da9549d072c424c2dddbe63a09874", + "check_gpg": true + }, + { + "checksum": "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f", + "check_gpg": true + }, + { + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "checksum": "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02", + "check_gpg": true + }, + { + "checksum": "sha256:d429648fe5b233a46fdbfc31a283ca4b6be5177ae84f3e7e63fec5f9bebd17d1", + "check_gpg": true + }, + { + "checksum": "sha256:edee134762456246cd8de577597e350b60a04bc43ac4a47622b9a263ddd74cf2", + "check_gpg": true + }, + { + "checksum": "sha256:8221111dc9a9aa5c68805f153c3fbe5314c8a0f335af29685733b958253dd278", + "check_gpg": true + }, + { + "checksum": "sha256:1135e96b6f9ed29e4ed4c0f060876891a244442a503f0b18ab238589da20d464", + "check_gpg": true + }, + { + "checksum": "sha256:e98119ac7a707287668e7a9a74ef2809ee5f555af04f52775367e428e08dbb33", + "check_gpg": true + }, + { + "checksum": "sha256:2d9a2e736dd5231df3c5c748ce0ba5a75a409dacfe73f14676781f32d565a7df", + "check_gpg": true + }, + { + "checksum": "sha256:047f9e29fcfa56be98ca3f42249f3ccb2a93df99f2438e3983e2064025f0d79d", + "check_gpg": true + }, + { + "checksum": "sha256:143c50c0663f963c7689c1cec43b81cf1433d5d3b67eb8233ba06506c1b3e095", + "check_gpg": true + }, + { + "checksum": "sha256:7a5aadb5da769b563cf1e548d8cabd26c00720a67df7e4a445a5a9ae5b0891b8", + "check_gpg": true + }, + { + "checksum": "sha256:436c2f09d2de629da293ab82af47b7697f4a8c151127cbd993d0e8605a4f423c", + "check_gpg": true + }, + { + "checksum": "sha256:fe6f4202a8e7e52add27c6d2e2af65884a974bcde4b5e89979badb782719ca1a", + "check_gpg": true + }, + { + "checksum": "sha256:67bbf2a262929b1b4c2fb9532c471da5ab2c0f642b0df770cf947c0131a9e1ad", + "check_gpg": true + }, + { + "checksum": "sha256:32cc0c295cd013db597cd31868736be3708edb25ab1952fdd0ed879ec5e8d191", + "check_gpg": true + }, + { + "checksum": "sha256:47383173cbb135c2590998a4e82c6f9d40a516450d2fbd1e169ace92337b7fd5", + "check_gpg": true + }, + { + "checksum": "sha256:f85469c0c19ce86e8fdd0dd5a3e6e5c9b78e3436ae9ce70ba86b2b4a3794f693", + "check_gpg": true + }, + { + "checksum": "sha256:d90abd2b8eca279a2120bf7836503745d36432630258925292ee7dacfabe4c92", + "check_gpg": true + }, + { + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "checksum": "sha256:1b65944efe48ba0cca34011891480a1db29a7e95dad058376bfca34d68fb0791", + "check_gpg": true + }, + { + "checksum": "sha256:5a7e957102a23c9924398fe45f5cdec66edcd10adcad7130d6ebf02c2706ad49", + "check_gpg": true + }, + { + "checksum": "sha256:682af90a049fa78429d5ebd194700609f762e59ceb6c4ca28b17e7f4fd1683aa", + "check_gpg": true + }, + { + "checksum": "sha256:7a9bc8d2c0fa14162f9c8d48344b30f268ccc53c8d03cdf6cfe67468a090a37c", + "check_gpg": true + }, + { + "checksum": "sha256:b49419bed59686efde6fc04953c2ab64a46c2bae46227a872bb3a823538c636d", + "check_gpg": true + }, + { + "checksum": "sha256:6ed7f318c5e93b59254d7b7652131f33db713eeb61f52413f21e533069ed24bf", + "check_gpg": true + }, + { + "checksum": "sha256:32d56c08f75c7626f1a0efd7aa05ca2ea3649d55445b5ac42a2f7f10fad8b46b", + "check_gpg": true + }, + { + "checksum": "sha256:32cc578c8da626a8c1a5316a59d482967a32547be6c077f73fb90e11fb0f1e6a", + "check_gpg": true + }, + { + "checksum": "sha256:d54f02fc39b3e87253808f665918d26ffe901f1228e25121c908661b47ba266b", + "check_gpg": true + }, + { + "checksum": "sha256:6c6f1152899318bdc0500cfb0b0cdbbc19ba0e017b5888ece1358250caa2629f", + "check_gpg": true + }, + { + "checksum": "sha256:f958a85509e118c832458a5f502e5d59695eb3df96ae0bd603203a82d188b2ae", + "check_gpg": true + }, + { + "checksum": "sha256:1e049e86c5dd5c4d6737d47dd194d553ffbd65c81a4077cf6e1029a0fde80fb5", + "check_gpg": true + }, + { + "checksum": "sha256:513e24bc56f483b171664ea4dec51cc0cce1f9cc8f4939cde8a65ea976ed952d", + "check_gpg": true + }, + { + "checksum": "sha256:19a9152e410c8fdd62220e79dcf4dc3d143ca04c75a09c332066ad8cc94b972e", + "check_gpg": true + }, + { + "checksum": "sha256:1f44142da3bf5e09b98488b40ed8a2d5dbd841c36bb4553749e6d65d7fe5c15c", + "check_gpg": true + }, + { + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "checksum": "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142", + "check_gpg": true + }, + { + "checksum": "sha256:b6498a7a8056483e1d42362b1fb27bd6c54ed7cc7bd180cae20d64a13ae4c88c", + "check_gpg": true + }, + { + "checksum": "sha256:78b600621e00f4a0acc8f58de056ae9393ce4e1cded56837b4e557c1bc84b06b", + "check_gpg": true + }, + { + "checksum": "sha256:5f2bdb8f9a18257ee80a243e1be96e3ef6fa660e37fdf7b4443d8e8f7abf86ef", + "check_gpg": true + }, + { + "checksum": "sha256:d02489175567be57a48a3edf5deb66d100e99df73a37b26062fea4d6af014cbc", + "check_gpg": true + }, + { + "checksum": "sha256:8d00fa6cdfcc955dc4e14d0f8b6ba6217d2dd0334ea0e1aa44694c9e0ad0b06d", + "check_gpg": true + }, + { + "checksum": "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663", + "check_gpg": true + }, + { + "checksum": "sha256:ae9a3e144f31b6172d266b984c8385fba94bdcf3002d3182a4118f8d29f5f718", + "check_gpg": true + }, + { + "checksum": "sha256:c958419128c1330b50c741113394b147da1ccda055ab1ee19fabc199f68971ea", + "check_gpg": true + }, + { + "checksum": "sha256:7292bf1d13ef336ef411ef695f87c7c7ecd21a13e05c86cc475930ca61117503", + "check_gpg": true + }, + { + "checksum": "sha256:6ce37675749741e4ea05e934aa5b7376d596cc117bd317199d0a15e2236aa058", + "check_gpg": true + }, + { + "checksum": "sha256:d01f7e794c3dd3f38de1b69fd360db4b858826eba4e6fd4edc79c8a74774ab00", + "check_gpg": true + }, + { + "checksum": "sha256:46acc45e148eea376c3aa8e83a4d3bf1cf66fa35ccc670f592017428ce75ca77", + "check_gpg": true + }, + { + "checksum": "sha256:05438efee748687851bce7c03d79ac8823e5142145b4dced03195b0a9a459aae", + "check_gpg": true + }, + { + "checksum": "sha256:5d87d829a1d939c520b25f1c790cd1f3bd6c8b769f4f21303ec5e16a3b509445", + "check_gpg": true + }, + { + "checksum": "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108", + "check_gpg": true + }, + { + "checksum": "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a", + "check_gpg": true + }, + { + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "checksum": "sha256:2ad8824aa48378aa741fbd863104d950ad4f669566af2d4f433be6d9afd8ead6", + "check_gpg": true + }, + { + "checksum": "sha256:c05d42fba4fc1ebc2df9ee49f971c744937d8b307626c90b3cf79bf91619863a", + "check_gpg": true + }, + { + "checksum": "sha256:ac7985d2591bc2bd1d90efdb68751a3d7435cf902b3895cb308e830ce48f1f44", + "check_gpg": true + }, + { + "checksum": "sha256:81169dd168c02aed3b1e57e5af16ec3dbdfb74c15373ee40e9eec5aac60a3d25", + "check_gpg": true + }, + { + "checksum": "sha256:054f0851c8b42292ac5c24ea649764b022dacc6d40a00e333abacc67e2c2a215", + "check_gpg": true + }, + { + "checksum": "sha256:d9641a59b33831e32fa61f3479152d5eac33e0526b32e67ae33f1c1102c69d4b", + "check_gpg": true + }, + { + "checksum": "sha256:121e2a4e79f6dbf37af2182cb12ff28345db993a7f83de344f6f5fbcf5a705a5", + "check_gpg": true + }, + { + "checksum": "sha256:077e72f02d2eef2a2bfd8ab057527a02005806e731303fbff1e28f61716f2943", + "check_gpg": true + }, + { + "checksum": "sha256:cb478c89af0caac9a40c32a2b4a48242b16ff9e2e6daa375b2de88e396f524dd", + "check_gpg": true + }, + { + "checksum": "sha256:af594688a568ec4db7dae9d60390dce1ab547527bbf2415752f211de3748b97f", + "check_gpg": true + }, + { + "checksum": "sha256:0ff534e46d982b5a213eb562e3cb30d1935a25a9f433d325457069eec9131217", + "check_gpg": true + }, + { + "checksum": "sha256:7487afe052c79100e906a4d2cb2ee1043410ca10a8e60a65d95776f63a513595", + "check_gpg": true + }, + { + "checksum": "sha256:e29356f3ea2554e8be23401a08a941f406d337cf6b38e7ee99926fb9b3f1f541", + "check_gpg": true + }, + { + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "checksum": "sha256:a436dca481707ca10a0c5bb189d9a25ff76c4f66f1d32b0847dc6d13ba46c17a", + "check_gpg": true + }, + { + "checksum": "sha256:e0af6b40e51fe0b9f68367355219aa56717888d2a07c10a001cc8667de1a5a2f", + "check_gpg": true + }, + { + "checksum": "sha256:7bd78cde4202401947dea928274579074bc78fdae096057e788c1b6a86a10ecc", + "check_gpg": true + }, + { + "checksum": "sha256:6728ee255cb8c80b85f6d610bfd795025939a77d2591ad61fe1c4f9d657c386e", + "check_gpg": true + }, + { + "checksum": "sha256:42945876fb8932bad3e50b50349af4bdabe713d7be1c8efc1b0f7b042e556aa5", + "check_gpg": true + }, + { + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "checksum": "sha256:acd149c4bf17a15db75fca1f19e34784a9ed275e19c0721aa78f5eb94797a685", + "check_gpg": true + }, + { + "checksum": "sha256:07cd9ddc7f7a16dc9739647af90706cfbcf70b281f5474e622b0769e211e0dc8", + "check_gpg": true + }, + { + "checksum": "sha256:477474e74c5f30884f0a4571445ecf987b521f61139fc0ba7d516e075f47e7ce", + "check_gpg": true + }, + { + "checksum": "sha256:06cf2f5439e0ce2c7fc655bdf4868d3c47a5fbe5b71e9dc305232a7732896e14", + "check_gpg": true + }, + { + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "checksum": "sha256:a4f7846fb262ad61885f64b8a354f9303fe5ce129378e4781eefa0bffdef828e", + "check_gpg": true + }, + { + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "checksum": "sha256:58a44f9472918a511d3eee0b3f08926dab2ebf4994584403bd196e6c92a06f5a", + "check_gpg": true + }, + { + "checksum": "sha256:9ed0b44834b6a637c70aa00ab243aecb534f9aea461e1388652ab039898239c8", + "check_gpg": true + }, + { + "checksum": "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488", + "check_gpg": true + }, + { + "checksum": "sha256:c1893a7c51ebb0371b87e2179d6e0e5d0fbb71acb4234cf4adc293af11c75578", + "check_gpg": true + }, + { + "checksum": "sha256:f23f467c4099be4cb4dfdc1be13b7a7bb6e8c6da7c21182658a034827b64df39", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "redhat": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "vfs_type": "ext4", + "path": "/", + "options": "defaults", + "freq": 1, + "passno": 1 + }, + { + "uuid": "46BB-8120", + "vfs_type": "vfat", + "path": "/boot/efi", + "options": "umask=0077,shortname=winnt", + "passno": 2 + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "kernel_opts": "ro biosdevname=0 net.ifnames=0", + "uefi": { + "vendor": "fedora" + } + } + }, + { + "name": "org.osbuild.systemd", + "options": { + "enabled_services": [ + "cloud-init.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service" + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "qcow2", + "filename": "disk.qcow2", + "size": 2147483648, + "ptuuid": "8DFDFF87-C96E-EA48-A3A6-9408F1F6B1EF", + "pttype": "gpt", + "partitions": [ + { + "start": 2048, + "size": 972800, + "type": "c12a7328-f81f-11d2-ba4b-00a0c93ec93b", + "uuid": "02C1E068-1D2F-4DA3-91FD-8DD76A955C9D", + "filesystem": { + "type": "vfat", + "uuid": "46BB-8120", + "label": "EFI System Partition", + "mountpoint": "/boot/efi" + } + }, + { + "start": 976896, + "uuid": "8D760010-FAAE-46D1-9E5B-4A2EAC5030CD", + "filesystem": { + "type": "ext4", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.111", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm", + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/acl-2.2.53-4.fc31.aarch64.rpm", + "checksum": "sha256:a516dfa62a327d440fe38b93af81dbecb112fe45fff0f227583c451631479122", + "check_gpg": true + }, + { + "name": "adobe-source-code-pro-fonts", + "epoch": 0, + "version": "2.030.1.050", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm", + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "name": "adwaita-cursor-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "name": "adwaita-icon-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/alternatives-1.11-5.fc31.aarch64.rpm", + "checksum": "sha256:0b1ddcc8c3096814bc5027133fb077ef587b49a1a4e4d6426327c75cf2066b11", + "check_gpg": true + }, + { + "name": "at-spi2-atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.aarch64.rpm", + "checksum": "sha256:a6caaef9bed1bd17292e1fdde4efee9730f8cff5826a9cb6c952e6f3cd052243", + "check_gpg": true + }, + { + "name": "at-spi2-core", + "epoch": 0, + "version": "2.34.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.aarch64.rpm", + "checksum": "sha256:42a4e01c47e28b71cafb658a5993b7f4b7692ac6b916878d580fecab7ae9d16c", + "check_gpg": true + }, + { + "name": "atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/atk-2.34.1-1.fc31.aarch64.rpm", + "checksum": "sha256:9c08d246ce73d8741777f290e7110ff9dae97a15e09f3469317ed7c8e9fb64ce", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.aarch64.rpm", + "checksum": "sha256:b25f063f82484e4fa42d1ad31a2cf23e882a99dc1ccb191b24e14a6a789d87a0", + "check_gpg": true + }, + { + "name": "avahi-libs", + "epoch": 0, + "version": "0.7", + "release": "20.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/avahi-libs-0.7-20.fc31.aarch64.rpm", + "checksum": "sha256:71ec6fd79756af905e474553f4ca7ae6985e32615df0ee2f2f487c8496e7160f", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "8.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm", + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.7", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/bash-5.0.7-3.fc31.aarch64.rpm", + "checksum": "sha256:181173a9353f593105978b8e4038b7bf53fd22c63f4514fd271a74d48f9c59f8", + "check_gpg": true + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.7", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/brotli-1.0.7-6.fc31.aarch64.rpm", + "checksum": "sha256:8dbce1e34a19be338f49b792874abc861fd64acc5653f7f5cd523d5e5865897e", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.aarch64.rpm", + "checksum": "sha256:995ee9636461072248d5c6792d3852fb1ab277a622b18eb7d3c231133446dd7d", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm", + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "name": "cairo", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cairo-1.16.0-6.fc31.aarch64.rpm", + "checksum": "sha256:9ffb9a376d1df3d3d394ec2f8533f939547d8ccd634f1f77db52970630215d71", + "check_gpg": true + }, + { + "name": "cairo-gobject", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.aarch64.rpm", + "checksum": "sha256:23908e2eae2ccfd2efb1d19cdf46e3dca4680ac2d562c1c96f7fb0d22859fc82", + "check_gpg": true + }, + { + "name": "colord-libs", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/colord-libs-1.4.4-2.fc31.aarch64.rpm", + "checksum": "sha256:ffa75117ea710fef320f1ae878e8c81e7a056386dea78aa5787dc091c5a100a5", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/coreutils-8.31-4.fc31.aarch64.rpm", + "checksum": "sha256:0f3591f036f0be85a9d28e9099d43a8b2e5a500a9588825c1dd994d1a323ceba", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/coreutils-common-8.31-4.fc31.aarch64.rpm", + "checksum": "sha256:bb305f3ddc74c4c30ae838a2bbff3cd325eea8427622c7f82e4d06a564bace6f", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cracklib-2.9.6-21.fc31.aarch64.rpm", + "checksum": "sha256:1088699171a35873eb5a776f0212ceff2bc9d67e3f1d8f2e107bbf751c36ca90", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.aarch64.rpm", + "checksum": "sha256:99e8930364200470ee5bd065dccb7c4c1caa4863c6f8975740643fe9d2485c18", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20190816", + "release": "4.gitbb9bf99.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm", + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.2.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.aarch64.rpm", + "checksum": "sha256:6e76674266f1e136186e3f005ddbf13791b1fea78cd30e8501f3dd1b209fa9f2", + "check_gpg": true + }, + { + "name": "cups-libs", + "epoch": 1, + "version": "2.2.12", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cups-libs-2.2.12-2.fc31.aarch64.rpm", + "checksum": "sha256:920d2d8df80fb92e358f4925bbd2891977c98e0b9d2f69b44f1e74bec26d6a1e", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/curl-7.66.0-1.fc31.aarch64.rpm", + "checksum": "sha256:9c039f6f6e5385344ea56a6490a472b0f475d8d7612b422191d2152b8e1fc55a", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.aarch64.rpm", + "checksum": "sha256:1b85657077726361a4b157a909796649fe93131fdc4aa67fd5329adc8d2fc833", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-1.12.16-3.fc31.aarch64.rpm", + "checksum": "sha256:3a7d7619061a4adb275ef4b41d993375ad7863863741624186add801800e524f", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "21", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-broker-21-6.fc31.aarch64.rpm", + "checksum": "sha256:504971d079493a49afb8fb7f067f5dfcc59f3e007afcc63734c15fe1066e4b4d", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm", + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-libs-1.12.16-3.fc31.aarch64.rpm", + "checksum": "sha256:8fd19268d460d7f49f3dd96644a2b8a3076a7a7ccbe3e35e27eeafc6ab8d9c95", + "check_gpg": true + }, + { + "name": "dconf", + "epoch": 0, + "version": "0.34.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dconf-0.34.0-1.fc31.aarch64.rpm", + "checksum": "sha256:0458f6a42cd644322b6eb24b01f0f75de47d5e10ae077797dfada1ce2a1f7fcd", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/deltarpm-3.6.2-2.fc31.aarch64.rpm", + "checksum": "sha256:4bb03b2162523fa694e0e44f46b04263ff0f5dab22c3e93124ec9b5650af2002", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/device-mapper-1.02.163-2.fc31.aarch64.rpm", + "checksum": "sha256:e7e629e7e89f970660407fb22c8b706c4c9a65a5f43286ddeef1e165b446fcaa", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.aarch64.rpm", + "checksum": "sha256:30e07680d23bfb5d4b2727893337619c56f13b46daec2f13f8985f642bf84250", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/diffutils-3.7-3.fc31.aarch64.rpm", + "checksum": "sha256:a00e85fb7902d8869492e32816c7834830682745eeab1efba264bdd3185f479d", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "9.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dosfstools-4.1-9.fc31.aarch64.rpm", + "checksum": "sha256:c36dd24858c4e8d207eb0f87af16e4c599a16bb981416d47db467b70a841fe08", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.aarch64.rpm", + "checksum": "sha256:ec305ea347ab987f5a00574bc3eaebaf2412483ed1b79615fdd86ca18ab146bc", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.aarch64.rpm", + "checksum": "sha256:2dd8505a96714cdb79829a1377e36a53e05cc9b65a7f35a258ca3e4aaa76c700", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm", + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-libelf-0.177-1.fc31.aarch64.rpm", + "checksum": "sha256:00e59535d45094b7d47e25c93d21179f3138839968776107df99fa0678f1440f", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-libs-0.177-1.fc31.aarch64.rpm", + "checksum": "sha256:fe6afcdab2793cd75a838a758a282d4581f1272f3f32df6a58777c0721e54b2e", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/expat-2.2.8-1.fc31.aarch64.rpm", + "checksum": "sha256:5745966147d1651d663d9e7d37a740ebbb4daee49b5cb7a2e61375ea6b37404e", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm", + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-release-31-1.noarch.rpm", + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-release-common-31-1.noarch.rpm", + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-repos-31-1.noarch.rpm", + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/file-libs-5.37-3.fc31.aarch64.rpm", + "checksum": "sha256:f63c88d8b294addf2791a5b291e3ab13750a24fe92fec65c96d365edad767f57", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.12", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/filesystem-3.12-2.fc31.aarch64.rpm", + "checksum": "sha256:a108fbc1ba9886604483ec05ef2150c961adb0906db5f9ea46c239bfcdf06b55", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fipscheck-1.5.0-7.fc31.aarch64.rpm", + "checksum": "sha256:0edff1a5f04f7f5d47537b4c049b95331f9ad33963c9c63ca4b13345a37296d4", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.aarch64.rpm", + "checksum": "sha256:81100039c817e2f3703fb365c63d6d891f3f977dd9e670c3c9b12662de3c255b", + "check_gpg": true + }, + { + "name": "fontconfig", + "epoch": 0, + "version": "2.13.92", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fontconfig-2.13.92-3.fc31.aarch64.rpm", + "checksum": "sha256:e30906c30d3dea50c62e74bc7aa870eb928af4c6fb474c894f55ef6ba41f5841", + "check_gpg": true + }, + { + "name": "fontpackages-filesystem", + "epoch": 0, + "version": "1.44", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm", + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.10.0", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/freetype-2.10.0-3.fc31.aarch64.rpm", + "checksum": "sha256:72bc6a2b459ee27dcd7c213d3aab5a993fc90fcffba2ef02fab7ae3857d379f7", + "check_gpg": true + }, + { + "name": "fribidi", + "epoch": 0, + "version": "1.0.5", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fribidi-1.0.5-4.fc31.aarch64.rpm", + "checksum": "sha256:8c4b392a5e1ed79b7a5b302d8fb14d0470b3a6306a7b36aee275acf0daa61537", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fuse-libs-2.9.9-8.fc31.aarch64.rpm", + "checksum": "sha256:7f23849dcd356019c4e83058e9e49d544300ad7b9a6f6a7528831e393ca1197c", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gawk-5.0.1-5.fc31.aarch64.rpm", + "checksum": "sha256:e6a986f10b17ba67e86c417251d855e1eeac0ca1c85c2ee7ae3bfc7d6c966087", + "check_gpg": true + }, + { + "name": "gcr", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gcr-3.33.4-1.fc31.aarch64.rpm", + "checksum": "sha256:3b16753c7590bc968a693e97ce9d318d58e1483fd2999a874becd95abc9d35ff", + "check_gpg": true + }, + { + "name": "gcr-base", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gcr-base-3.33.4-1.fc31.aarch64.rpm", + "checksum": "sha256:9404d90bbb474b30b80c90719df01d784b925127e9710f12c44c72d14c2708fc", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.aarch64.rpm", + "checksum": "sha256:f74b53f33812f65d12377946d363a773e48cf6bc6c4bb2acec5bb4a048861b88", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.aarch64.rpm", + "checksum": "sha256:6e78ce3d460b7e1377f487fed5563999fb44d310c441798a4d23d34960e23d45", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2-modules", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.aarch64.rpm", + "checksum": "sha256:b3d8740cee57c5025ef88e9d71df141a6600fdf26215969acae393a2b052892d", + "check_gpg": true + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glib-networking-2.62.1-1.fc31.aarch64.rpm", + "checksum": "sha256:c84f89f65e2a691d7fcbc7021c3c5d796e0f39483e3fe95e83579c630575b78a", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glib2-2.62.1-1.fc31.aarch64.rpm", + "checksum": "sha256:f3d5fd211e3faf1b61be64fd3f1659dd640a873c66747a5cc341f888e4179dea", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-2.30-5.fc31.aarch64.rpm", + "checksum": "sha256:abf022d05aa55e7aa8d0736b899d86613d30a7e1751b04666920f367d4311a1a", + "check_gpg": true + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-all-langpacks-2.30-5.fc31.aarch64.rpm", + "checksum": "sha256:28cdab6faa95e1d7d1c32d977627ef5a86b262e2b0e20e76ddd73f598ee126e4", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-common-2.30-5.fc31.aarch64.rpm", + "checksum": "sha256:e3046e1e508453e332277ab86ebf67df0106edca2c6e8e54ba2bffb76f9ed4d7", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gmp-6.1.2-10.fc31.aarch64.rpm", + "checksum": "sha256:b9ad5c82b3b83871269ee705ee12896efd1e3485b0d2005c9cff2a100100cd34", + "check_gpg": true + }, + { + "name": "gnome-keyring", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.aarch64.rpm", + "checksum": "sha256:81f5b3786ab1b634016c0c066379dda739386b4b1d639111b4575748e27caa56", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnupg2-2.2.17-2.fc31.aarch64.rpm", + "checksum": "sha256:12c732f4a960848bd4fbc8111c2c0cf584799b1fdf0eb89c2cdcb26da5bc03b8", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.aarch64.rpm", + "checksum": "sha256:0a4100f50b31df500afc5d255dd87117553df7032447f3e226196fd64f9c3f47", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.10", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnutls-3.6.10-1.fc31.aarch64.rpm", + "checksum": "sha256:8e10cf2b0645e342b001338a4463c5a02a8a302c25affba37da700a987e2c064", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gpgme-1.13.1-3.fc31.aarch64.rpm", + "checksum": "sha256:4290088d905017724f6c909cb1b3193055a6aff62cd20e39ea196694f90753c8", + "check_gpg": true + }, + { + "name": "graphite2", + "epoch": 0, + "version": "1.3.13", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/graphite2-1.3.13-1.fc31.aarch64.rpm", + "checksum": "sha256:0cb1a66cb3bb44797a8aeb47db85db1f6c0fcf4d4571d8a5f8981f83b51c08af", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grep-3.3-3.fc31.aarch64.rpm", + "checksum": "sha256:7102de1c840d5b915a40fde5c408f182d677ecdd5126dedf033ebb63b5419607", + "check_gpg": true + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.aarch64.rpm", + "checksum": "sha256:82bc08ef5d8049d3d07a5eb00f61d3f94d7577ef814f6791352f75835bff477a", + "check_gpg": true + }, + { + "name": "gtk-update-icon-cache", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.aarch64.rpm", + "checksum": "sha256:0064998ad79a6250297b379852b5a06932d8e074270bea02d75888758755bd23", + "check_gpg": true + }, + { + "name": "gtk3", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gtk3-3.24.12-3.fc31.aarch64.rpm", + "checksum": "sha256:6b11c1e14d4a02edf8beee776f9f896729bd0f28c66cb4c1d2bd021cdffc6aa0", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gzip-1.10-1.fc31.aarch64.rpm", + "checksum": "sha256:4de89d25d09c57b09a51ab93fdf84ade211e835c16d3ba6e4e261dcc0c4e50a1", + "check_gpg": true + }, + { + "name": "harfbuzz", + "epoch": 0, + "version": "2.6.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/harfbuzz-2.6.1-2.fc31.aarch64.rpm", + "checksum": "sha256:3ad68b7569e311a1ca7da4da7b42021a7acb001ab4b2cc6e63b3ba0f87cbd55c", + "check_gpg": true + }, + { + "name": "hicolor-icon-theme", + "epoch": 0, + "version": "0.17", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm", + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.aarch64.rpm", + "checksum": "sha256:c935f74584d7289ca58d1b23cbdacd38450d351dbc3dcd0bc713723c4d50a545", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.3", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iptables-libs-1.8.3-5.fc31.aarch64.rpm", + "checksum": "sha256:d6b491f91a567b4245d07d28a0547cb1b8e97a1f814e3f7d76dd685bb6658b64", + "check_gpg": true + }, + { + "name": "jasper-libs", + "epoch": 0, + "version": "2.0.14", + "release": "9.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/jasper-libs-2.0.14-9.fc31.aarch64.rpm", + "checksum": "sha256:ea35fa3f5c16e074a59d66ff9037e48ca7c0126444e09daf640b7a37dacd76ad", + "check_gpg": true + }, + { + "name": "jbigkit-libs", + "epoch": 0, + "version": "2.1", + "release": "17.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/jbigkit-libs-2.1-17.fc31.aarch64.rpm", + "checksum": "sha256:4549e51322d0b10016f1daa8dedc807fddf7d2d4e77719baa696de15b88821bb", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/json-c-0.13.1-6.fc31.aarch64.rpm", + "checksum": "sha256:fd9ac175e5af929bb942528904d6e6e48caed800e22a7a45825d535bdc1537ba", + "check_gpg": true + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/json-glib-1.4.4-3.fc31.aarch64.rpm", + "checksum": "sha256:fb2b070b96ed58a31da7889452ce3cdbfb60f6161a3e2f0ce2738b4d3facfd2d", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/keyutils-libs-1.6-3.fc31.aarch64.rpm", + "checksum": "sha256:3975c15d461cebe50d1f179fb86d288c18f643c32f179bbab13425596ab64001", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kmod-libs-26-4.fc31.aarch64.rpm", + "checksum": "sha256:c68bed5b576d7baa67a59c726d2340f7c0df7e9b93f90b3a22d3f62e9f99456a", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.17", + "release": "45.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/krb5-libs-1.17-45.fc31.aarch64.rpm", + "checksum": "sha256:7d0ec23fb8dab882db8b7ec9a9cbb2728d6df2af5c02ee06cc6fa357f210ff09", + "check_gpg": true + }, + { + "name": "lcms2", + "epoch": 0, + "version": "2.9", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lcms2-2.9-6.fc31.aarch64.rpm", + "checksum": "sha256:cddb050897cd8666090b172711fb7947b3bf844f5a190f8c689fd79a222e1761", + "check_gpg": true + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libX11-1.6.8-3.fc31.aarch64.rpm", + "checksum": "sha256:01ea4ecad746f1309b5c943f2b2709f7e5400d33e4d51c85401205ed18d61621", + "check_gpg": true + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm", + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXau-1.0.9-2.fc31.aarch64.rpm", + "checksum": "sha256:59f289c6f3b0180ae3eddaa974e2f972bf15c48135a2abed9eb2f72dfdae1be4", + "check_gpg": true + }, + { + "name": "libXcomposite", + "epoch": 0, + "version": "0.4.4", + "release": "17.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXcomposite-0.4.4-17.fc31.aarch64.rpm", + "checksum": "sha256:159972ccc01cd5840c2aad04818efc965b64c5120b1fcce92a47f45ab1abf4a5", + "check_gpg": true + }, + { + "name": "libXcursor", + "epoch": 0, + "version": "1.1.15", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXcursor-1.1.15-6.fc31.aarch64.rpm", + "checksum": "sha256:46b0c36e90fd16371444eb5376fc01232b6e64073e42ed1f141344a9aadbe568", + "check_gpg": true + }, + { + "name": "libXdamage", + "epoch": 0, + "version": "1.1.4", + "release": "17.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXdamage-1.1.4-17.fc31.aarch64.rpm", + "checksum": "sha256:f7954ba55d833c6341ec87b0cf57817084c705673b8b50aff3e3606fcbdcfbb5", + "check_gpg": true + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXext-1.3.4-2.fc31.aarch64.rpm", + "checksum": "sha256:58c8a3d4ac7c8c318b5596b192dbd0350a1122983b69bfc1cb5eb3ecec5b7cf6", + "check_gpg": true + }, + { + "name": "libXfixes", + "epoch": 0, + "version": "5.0.3", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXfixes-5.0.3-10.fc31.aarch64.rpm", + "checksum": "sha256:500d0a1b49962ec79ca00224528d6e599d3845eb60b8b13a678d03edfaa755ec", + "check_gpg": true + }, + { + "name": "libXft", + "epoch": 0, + "version": "2.3.3", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXft-2.3.3-2.fc31.aarch64.rpm", + "checksum": "sha256:4c55460197fe24d0a105e3071824a933069e0b655910fd7ee7335e2396de15dc", + "check_gpg": true + }, + { + "name": "libXi", + "epoch": 0, + "version": "1.7.10", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXi-1.7.10-2.fc31.aarch64.rpm", + "checksum": "sha256:2aafea82072ad28a8b662e32902f66b47166a00b5c9cf19b1dd589f39776560f", + "check_gpg": true + }, + { + "name": "libXinerama", + "epoch": 0, + "version": "1.1.4", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXinerama-1.1.4-4.fc31.aarch64.rpm", + "checksum": "sha256:9ac1ef0ef80d7ff65903120f8b2a5a2a5723dce7c9c131e17cea3572cb81d0f4", + "check_gpg": true + }, + { + "name": "libXrandr", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXrandr-1.5.2-2.fc31.aarch64.rpm", + "checksum": "sha256:0f661b922a9e9cbe82e948ec1d83c6fca6e61e08de50815a5b6c069a64f4e883", + "check_gpg": true + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXrender-0.9.10-10.fc31.aarch64.rpm", + "checksum": "sha256:ec48b0cd759656b4c5d8d13dcc81c6fa23914f8e214b4cda1ed08e1896177fe9", + "check_gpg": true + }, + { + "name": "libXtst", + "epoch": 0, + "version": "1.2.3", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXtst-1.2.3-10.fc31.aarch64.rpm", + "checksum": "sha256:03b9d49b78b7e758eecce6a25782767ec5dc921d28f053b17a651b1c8bb96d7b", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libacl-2.2.53-4.fc31.aarch64.rpm", + "checksum": "sha256:a96e76f00865249f70a3f2ef293946e9786150faa83e37185e61592290817cb4", + "check_gpg": true + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.111", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libaio-0.3.111-6.fc31.aarch64.rpm", + "checksum": "sha256:d22fbf5e32d176db1414b0854c78f0ea1b5f489a83490ee4e3f67bc5e98905af", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libarchive-3.4.0-1.fc31.aarch64.rpm", + "checksum": "sha256:2fc552b80866318c0ac934f5385fd2090743701639c318b75138ae985ff5606a", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libargon2-20171227-3.fc31.aarch64.rpm", + "checksum": "sha256:d877864e501fe38a1b0c7e11572e61c5d9eb9857436541f1c2d5ad2f8bd29b83", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libassuan-2.5.3-2.fc31.aarch64.rpm", + "checksum": "sha256:64b0063f6b3a42b712c0ee622328e36ddf94a15da547e3c8da3a4191e0941c92", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "7.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libattr-2.4.48-7.fc31.aarch64.rpm", + "checksum": "sha256:99a6e2861b7eb51684d1b83901a7e54caf649b711556a660d93bfef114eab72c", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libblkid-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:5e2a37ee7e1147a446be67d63b1be55f2e82c0ae0a84dd1afc6a3fec64e62804", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcap-2.26-6.fc31.aarch64.rpm", + "checksum": "sha256:566a389a620f634ab341a9a39cffdb1c607b4682224cf3d5ac530b6c57c78d0f", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcap-ng-0.7.9-8.fc31.aarch64.rpm", + "checksum": "sha256:4e365f48d5c85b82f71e8d000d00cdf7ed3c23cd94c31fbf3543572413541c3d", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcom_err-1.45.3-1.fc31.aarch64.rpm", + "checksum": "sha256:98d811216e2e0e4ad49925489824210fc3e9b57bb09eefcd4047886375d34f57", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcomps-0.1.11-3.fc31.aarch64.rpm", + "checksum": "sha256:a63ae4aa727a4b75b602a67f1e42946e39dc124e9f1aeb3e795af40ad4e15cbf", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcurl-7.66.0-1.fc31.aarch64.rpm", + "checksum": "sha256:898a918a7adfefc3ce13d10b30b2ec7ccada96155afa15ee3f4e589b3f1baa38", + "check_gpg": true + }, + { + "name": "libdatrie", + "epoch": 0, + "version": "0.2.9", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdatrie-0.2.9-10.fc31.aarch64.rpm", + "checksum": "sha256:04826477197ec239d756f81cb6d38fde2f65e71499a8dbaf0c666d93084f1ea3", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdb-5.3.28-38.fc31.aarch64.rpm", + "checksum": "sha256:1738cf24111bcd0bff08880c4d5efa624c09a2080c901f67ab032ed201a8751e", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdb-utils-5.3.28-38.fc31.aarch64.rpm", + "checksum": "sha256:5ef4f8487a78a43f7502c055ac77c047ce159da5641e5b61c2669395ae1efe62", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdnf-0.35.3-6.fc31.aarch64.rpm", + "checksum": "sha256:6bc6909c53c0eb2bad7640b3fb79da5cacf5fd8951dee08347b8d18df1b004f8", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "28.20190324cvs.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.aarch64.rpm", + "checksum": "sha256:3976706367650c755852d995bbe8c4e6bbd13b6e8e0148b7beddb4aba3679d8a", + "check_gpg": true + }, + { + "name": "libepoxy", + "epoch": 0, + "version": "1.5.3", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libepoxy-1.5.3-4.fc31.aarch64.rpm", + "checksum": "sha256:5b75073853ff34026cf180d7466314783a7a81defaa43e6b7416a38d9f19230b", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "7.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libevent-2.1.8-7.fc31.aarch64.rpm", + "checksum": "sha256:2575f8d1fb953934730b9fe6803bf3de12669dcee78852057ea4e88f9d4d76a4", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libfdisk-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:e8a13bb46e5149142a1e0a359460c1c65b2cbcbff20f2d0c50f9adbad57538a1", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "23.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libffi-3.1-23.fc31.aarch64.rpm", + "checksum": "sha256:b9b609d17e9274c1551ac6ebab4b53f6e4a5ae9253db5465c65fdb8c919a09dd", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgcc-9.2.1-1.fc31.aarch64.rpm", + "checksum": "sha256:be8bf30729c71aabe30f2c4cf8e5c43ce3cdf892c218fadf53c0af29a76fd6b3", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgcrypt-1.8.5-1.fc31.aarch64.rpm", + "checksum": "sha256:d2f7d49bd565c2fec4ca945ae97ac3b8a607f114d3a7558b90b2caaa5871459b", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgomp-9.2.1-1.fc31.aarch64.rpm", + "checksum": "sha256:6b2e3b36c2a3e988f40548688b32ef3ce2e4c7906127215c82736189684a95a6", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgpg-error-1.36-2.fc31.aarch64.rpm", + "checksum": "sha256:0b2a6b7e3b62ff9c02ec3012f08fbf396a7990bf9599b49b75eecbee3b257f7f", + "check_gpg": true + }, + { + "name": "libgusb", + "epoch": 0, + "version": "0.3.0", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgusb-0.3.0-5.fc31.aarch64.rpm", + "checksum": "sha256:e1e5250ea932beac32caf373ae55b4655c50ae8a1bd9d42e3ceac590a13031ef", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libidn2-2.2.0-2.fc31.aarch64.rpm", + "checksum": "sha256:c6ffcbd829ea30ef40fa61095cef03f2b6eafa3228187a478d6d027911f12e2f", + "check_gpg": true + }, + { + "name": "libjpeg-turbo", + "epoch": 0, + "version": "2.0.2", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.aarch64.rpm", + "checksum": "sha256:618e9a7e3f1f8191beee70d3ad1c8754870887d251480e7e6dd1f3de2d8226d1", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libksba-1.3.5-10.fc31.aarch64.rpm", + "checksum": "sha256:575640462a8c2d0687ea225cc7b6bbf7aa0814e311619ddf6cd16e1bc22f9513", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "9.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmetalink-0.1.3-9.fc31.aarch64.rpm", + "checksum": "sha256:d287bfdcebb9fbb31d5f58cc71311f48a85970d0fd92f5beb0193270c155faac", + "check_gpg": true + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "20.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmodman-2.0.1-20.fc31.aarch64.rpm", + "checksum": "sha256:a5fa076ed2c83974cacf4ce386bfdc576ce532fba4f8645dda5c2b67efc5d501", + "check_gpg": true + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.15", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.aarch64.rpm", + "checksum": "sha256:e9c7f59547a9eec5304db7a312b435592f07f7aee4f3db617e5ddfac0f4d048c", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmount-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:429cf175b6c3b2bedcabf3391ad3166fe6e62259877f309e57500d2c7f1f1882", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.39.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnghttp2-1.39.2-1.fc31.aarch64.rpm", + "checksum": "sha256:56f3d59b74bf8ceafea695d10fb7ad4672ec93f824ef9b0508c7bcdedeffb101", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "5.20180605git4a062cf.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.aarch64.rpm", + "checksum": "sha256:8d21bbf2063bb50cf3d12281731fbd8b26dece5f154d7a50f0952695fea6751f", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.0", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpcap-1.9.0-4.fc31.aarch64.rpm", + "checksum": "sha256:fb6b61cabfce21597c33c62743c13dd96bcea39aa806a144bc2b2665b48273a8", + "check_gpg": true + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.37", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpng-1.6.37-2.fc31.aarch64.rpm", + "checksum": "sha256:77ff28552aba96ce4b80d51a9c390ef4958afad18ede879bf31022f2509e2d90", + "check_gpg": true + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "14.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libproxy-0.4.15-14.fc31.aarch64.rpm", + "checksum": "sha256:c599ffa97fde329ff872bd6db99e8c218601df6549302f89ff747d34ca24042c", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpsl-0.21.0-2.fc31.aarch64.rpm", + "checksum": "sha256:816fe17af41a66dd718eb247273be824b75f53fb539455b58b892528ca12cde5", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpwquality-1.4.1-1.fc31.aarch64.rpm", + "checksum": "sha256:20cc74172d531506391309e8f82c6512404ada35f22c68fcd0b83a01dc6e0ca8", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.10.5", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/librepo-1.10.5-1.fc31.aarch64.rpm", + "checksum": "sha256:4f37b1e322e3001b076e0128541cc82c180d7054b1c0b7200f46fda4d654cd71", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.10.1", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm", + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libseccomp-2.4.1-1.fc31.aarch64.rpm", + "checksum": "sha256:7623bcecb8340ed57e1aa2951b13a1c5b1dfefa80eb226f269294df29cb40c08", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.19.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsecret-0.19.1-1.fc31.aarch64.rpm", + "checksum": "sha256:d1520137d9cb96cd10a63893b45b4794b120502bdbab0862e001ac2486195aa6", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libselinux-2.9-5.fc31.aarch64.rpm", + "checksum": "sha256:0c49f27ae0aaf95fbdc52cfb9406c41eefff41b205f85fdc6ef6787ec3af5146", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libselinux-utils-2.9-5.fc31.aarch64.rpm", + "checksum": "sha256:e78343046ae389b1c11d36f8de0b8bfbb9ded7bdc39fb52b3f719a39047bf42a", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsemanage-2.9-3.fc31.aarch64.rpm", + "checksum": "sha256:36ce07aa1f90dfdf5ae9824acff24fc3aafe5633b07a022732ca06258e0255b6", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsepol-2.9-2.fc31.aarch64.rpm", + "checksum": "sha256:e1deab5e887a199233f9a439d2d20d864d434e9a4ac7fe460f230d368fb3779f", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsigsegv-2.11-8.fc31.aarch64.rpm", + "checksum": "sha256:11e8ee935d9c9d349f4c081d035fc4ee34539af23ef8122e6901b22cf97f346f", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsmartcols-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:768cc2c561bd6476df45fbd9280bbaeb87d2addcd0c51601d2226a590d7dc872", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.5", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsolv-0.7.5-3.fc31.aarch64.rpm", + "checksum": "sha256:82cc8c43bfe0e731ec78e31c8af6250ec1f13989978105a1b38d518470cf5bde", + "check_gpg": true + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.68.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsoup-2.68.2-1.fc31.aarch64.rpm", + "checksum": "sha256:c1590c5cdfc7aad868c75c54c11a2c7d692001f758ead33aa10f9838955148c4", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libss-1.45.3-1.fc31.aarch64.rpm", + "checksum": "sha256:c6de19d0d4b8f67957ca6122462090895034495852814f36396bc134905f5f5e", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libssh-0.9.0-6.fc31.aarch64.rpm", + "checksum": "sha256:51f15beba5e5bfc6ff646741b3fbaa3a484ebb40fd8c6c59b8f1f6346dd93e93", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm", + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libstdc++-9.2.1-1.fc31.aarch64.rpm", + "checksum": "sha256:5a32c492b921e9287422006f255833605b328f3efd071609673be161bb4e7f04", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.14", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtasn1-4.14-2.fc31.aarch64.rpm", + "checksum": "sha256:23e8c23c89737665a5288a3a171548e94898be9ed4a24c056d8bc851c6800090", + "check_gpg": true + }, + { + "name": "libthai", + "epoch": 0, + "version": "0.1.28", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libthai-0.1.28-3.fc31.aarch64.rpm", + "checksum": "sha256:b04fecd603225051ca56c6674cb72f12f4de0cc1cbbfda0ab7d0af0e655b2c99", + "check_gpg": true + }, + { + "name": "libtiff", + "epoch": 0, + "version": "4.0.10", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtiff-4.0.10-6.fc31.aarch64.rpm", + "checksum": "sha256:57bd1ce5d776daca117795bc8e3852f1d29a6fc3fc1edd21729d161de2d7798d", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "2.rc3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.aarch64.rpm", + "checksum": "sha256:14a759b4daf287d66f5b803b0fbb52621f8429607be109e5d3c313a57cc276e2", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libunistring-0.9.10-6.fc31.aarch64.rpm", + "checksum": "sha256:2b24b5729cd74e3b1efe261bfd732fd1995b0e64d76587a3d90762d77cc58c77", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.22", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libusbx-1.0.22-4.fc31.aarch64.rpm", + "checksum": "sha256:c80fbc5228457b9b1978b098f47d2a66ca5636526965847078edb6f1c302e392", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "17.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libutempter-1.1.6-17.fc31.aarch64.rpm", + "checksum": "sha256:ea68ed6fc06f142c95e907b619a9696146dff1bba308773df12e412d8277eec0", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libuuid-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:7027d2c6a004469720e3c64eb7fcb2ace1fffd61ec4380afbf875d59a3876f3a", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libverto-0.3.0-8.fc31.aarch64.rpm", + "checksum": "sha256:af589a85af85270c027bacb5ccaf88c93378d364a7c1436ee7bca1290cf762f7", + "check_gpg": true + }, + { + "name": "libwayland-client", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-client-1.17.0-2.fc31.aarch64.rpm", + "checksum": "sha256:1472adb267192ca8a323e544fd9749c4765334fc5779e8de4ee583eff77fc078", + "check_gpg": true + }, + { + "name": "libwayland-cursor", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.aarch64.rpm", + "checksum": "sha256:f34cde4c2bd6ab93a697d8c350e98f4d70f897f74fee35a06c25eb4b98f46c9a", + "check_gpg": true + }, + { + "name": "libwayland-egl", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.aarch64.rpm", + "checksum": "sha256:aa3658efc21bcc6d79344eeeaf20285407f6f3b90d905a66a37a8cfc835b2a61", + "check_gpg": true + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxcb-1.13.1-3.fc31.aarch64.rpm", + "checksum": "sha256:a2f6ae2742a2aac3f5bb5f1ad5cfa4d9b8fdf7cfd01033246027db7064abaa1f", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxcrypt-4.4.10-1.fc31.aarch64.rpm", + "checksum": "sha256:e35e30f6477652a93d3c02ec86faa233884aefb2ff9fcf4058909d9736fb2d15", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.8.4", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.aarch64.rpm", + "checksum": "sha256:57a9aff6b8d5ecdb66015e4dfcec0a171ae18751e1d5f9a339361cc45b9a8e2f", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.9", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxml2-2.9.9-3.fc31.aarch64.rpm", + "checksum": "sha256:7c66a9a33e131200e13a638613ec054a94be901399424df27a0b4f94532ee36d", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libyaml-0.2.2-2.fc31.aarch64.rpm", + "checksum": "sha256:80434d5f64abdd521330153fc0c983c5923a833ab59f57ec3bc3a8cf1d748c8c", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libzstd-1.4.2-1.fc31.aarch64.rpm", + "checksum": "sha256:a39fb89e06572d188309dc4daf1d23e21be190e59f9ef8ff3c3ccceaefe505da", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lua-libs-5.3.5-6.fc31.aarch64.rpm", + "checksum": "sha256:a084b365795c7262fa09b2fc590dfbabbbf30cb9c1c7f9b5274eae4c5d761482", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lz4-libs-1.9.1-1.fc31.aarch64.rpm", + "checksum": "sha256:1c2edf26d16b55bac2824452c1c584ff52acf8477920f384f6019f647c241450", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mkpasswd-5.5.2-1.fc31.aarch64.rpm", + "checksum": "sha256:f8e118c35bb5f8ae3dca517ef38c7a38bbdd491011af9e1c4c5c7523f13e6f9c", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mpfr-3.1.6-5.fc31.aarch64.rpm", + "checksum": "sha256:339895e6b901ff4c81966893ec7da9848da3acea26e5b202033bfb79dfcbb6cb", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-6.1-12.20190803.fc31.aarch64.rpm", + "checksum": "sha256:1d530a23a8ea2b831068593fe6aa7a32923c6276504def5a85ad065aaac9ac5f", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm", + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.aarch64.rpm", + "checksum": "sha256:264828f11342a94f056fb27a2e78fc5e14226230b3dbac8bdad6a4c8598fd24f", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/nettle-3.5.1-3.fc31.aarch64.rpm", + "checksum": "sha256:9c8771c8c5eb38351dd30f994133bc9149ec93813d1a7c2cd2dd8f7dc7431d49", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/npth-1.6-3.fc31.aarch64.rpm", + "checksum": "sha256:f1419585dbb27e3bf76aab5a5f8fb9580816a7a0e7fc93377b97646a0259a794", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openldap-2.4.47-3.fc31.aarch64.rpm", + "checksum": "sha256:d8d28daa56fa4894a767957aa9948cad6d274e2b70d8b10aa69d9356c8a22eff", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssh-8.0p1-8.fc31.1.aarch64.rpm", + "checksum": "sha256:424e1777ae71117d20055ffa5f0ed2ead59a8076528450cf7536e18c70624bd8", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.aarch64.rpm", + "checksum": "sha256:eb35167d6095465a58611b80853213af5838f271b75fa1a5e3c051a04a9078a7", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-1.1.1d-2.fc31.aarch64.rpm", + "checksum": "sha256:54c024db70df7966590050dfc5dcc1315174e10c3a57e118ea10178238d70889", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.aarch64.rpm", + "checksum": "sha256:a7f5877c9ebfb44347765c7deb266e53fdd62403ccc0a7ff17fdb101bc28caff", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.aarch64.rpm", + "checksum": "sha256:dc6b772101df9f3029c2cd80a10663663ad877e129c8d724902f5cc9f1785e60", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.aarch64.rpm", + "checksum": "sha256:6d4c3ae013d07e50d085b3419dfd41ac79ba11ada62d8c4570d21764ef6f11ec", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.aarch64.rpm", + "checksum": "sha256:bf92fc95c282da9c76018679d9180fb6c98aaf864f66bbef630941040579f92b", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "18.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pam-1.3.1-18.fc31.aarch64.rpm", + "checksum": "sha256:eb1992de281538771ba578a65eabe620dc35aef6c621d8c5351a2ba38ac440f4", + "check_gpg": true + }, + { + "name": "pango", + "epoch": 0, + "version": "1.44.6", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pango-1.44.6-1.fc31.aarch64.rpm", + "checksum": "sha256:5ba547e1c2c515b3ca091e04c0a6b15b297e25b567a6613a07bd2bee41f39684", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.43", + "release": "2.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pcre-8.43-2.fc31.1.aarch64.rpm", + "checksum": "sha256:44a92faf198bf015f5e94cf42ae615215fe0a6c0697b1f6c32d205bd450e7ce4", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.33", + "release": "14.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pcre2-10.33-14.fc31.aarch64.rpm", + "checksum": "sha256:b0d153ea83902561a9e60c9c244a497c3b19a9c4e40cf9e8437d0221af0f2ca3", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pinentry-1.1.0-6.fc31.aarch64.rpm", + "checksum": "sha256:ee3977f4ee783225903f964c60932795d8c11307043e73527b394dec02487047", + "check_gpg": true + }, + { + "name": "pixman", + "epoch": 0, + "version": "0.38.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pixman-0.38.4-1.fc31.aarch64.rpm", + "checksum": "sha256:0b8baef3612880639ed59ae79475086aac8ce236fd35977e0d87305d0bb9a529", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/policycoreutils-2.9-5.fc31.aarch64.rpm", + "checksum": "sha256:974bdde5f821c071bcbe0de191677981685cb8290952be75a7ab15747988a99e", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "18.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/popt-1.16-18.fc31.aarch64.rpm", + "checksum": "sha256:d2be7b0f17350a8a0f301617cb1d7b024076bc16986abaab94453ec1cee1f1f2", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm", + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm", + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-3.7.4-5.fc31.aarch64.rpm", + "checksum": "sha256:84365601f93db7fda27e4d89826d4893830572e98df35275abdf15659cfe3fc5", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-gpg-1.13.1-3.fc31.aarch64.rpm", + "checksum": "sha256:d429648fe5b233a46fdbfc31a283ca4b6be5177ae84f3e7e63fec5f9bebd17d1", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.aarch64.rpm", + "checksum": "sha256:edee134762456246cd8de577597e350b60a04bc43ac4a47622b9a263ddd74cf2", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.aarch64.rpm", + "checksum": "sha256:7a5aadb5da769b563cf1e548d8cabd26c00720a67df7e4a445a5a9ae5b0891b8", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.aarch64.rpm", + "checksum": "sha256:436c2f09d2de629da293ab82af47b7697f4a8c151127cbd993d0e8605a4f423c", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libs-3.7.4-5.fc31.aarch64.rpm", + "checksum": "sha256:fe6f4202a8e7e52add27c6d2e2af65884a974bcde4b5e89979badb782719ca1a", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-rpm-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:513e24bc56f483b171664ea4dec51cc0cce1f9cc8f4939cde8a65ea976ed952d", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-unbound-1.9.3-1.fc31.aarch64.rpm", + "checksum": "sha256:b6498a7a8056483e1d42362b1fb27bd6c54ed7cc7bd180cae20d64a13ae4c88c", + "check_gpg": true + }, + { + "name": "qemu-img", + "epoch": 2, + "version": "4.1.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/q/qemu-img-4.1.0-2.fc31.aarch64.rpm", + "checksum": "sha256:64206147fbbabe1e050f17442a2a3d1458b27beea0d8f3ff9e258a2842dd7a01", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.aarch64.rpm", + "checksum": "sha256:5f2bdb8f9a18257ee80a243e1be96e3ef6fa660e37fdf7b4443d8e8f7abf86ef", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/readline-8.0-3.fc31.aarch64.rpm", + "checksum": "sha256:d02489175567be57a48a3edf5deb66d100e99df73a37b26062fea4d6af014cbc", + "check_gpg": true + }, + { + "name": "rest", + "epoch": 0, + "version": "0.8.1", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rest-0.8.1-6.fc31.aarch64.rpm", + "checksum": "sha256:8d00fa6cdfcc955dc4e14d0f8b6ba6217d2dd0334ea0e1aa44694c9e0ad0b06d", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:ae9a3e144f31b6172d266b984c8385fba94bdcf3002d3182a4118f8d29f5f718", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:c958419128c1330b50c741113394b147da1ccda055ab1ee19fabc199f68971ea", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-libs-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:7292bf1d13ef336ef411ef695f87c7c7ecd21a13e05c86cc475930ca61117503", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:d01f7e794c3dd3f38de1b69fd360db4b858826eba4e6fd4edc79c8a74774ab00", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:46acc45e148eea376c3aa8e83a4d3bf1cf66fa35ccc670f592017428ce75ca77", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sed-4.5-4.fc31.aarch64.rpm", + "checksum": "sha256:5d87d829a1d939c520b25f1c790cd1f3bd6c8b769f4f21303ec5e16a3b509445", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.3", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm", + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "16.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/shadow-utils-4.6-16.fc31.aarch64.rpm", + "checksum": "sha256:2ad8824aa48378aa741fbd863104d950ad4f669566af2d4f433be6d9afd8ead6", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.14", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/shared-mime-info-1.14-1.fc31.aarch64.rpm", + "checksum": "sha256:c05d42fba4fc1ebc2df9ee49f971c744937d8b307626c90b3cf79bf91619863a", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.29.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.aarch64.rpm", + "checksum": "sha256:81169dd168c02aed3b1e57e5af16ec3dbdfb74c15373ee40e9eec5aac60a3d25", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-243-4.gitef67743.fc31.aarch64.rpm", + "checksum": "sha256:af594688a568ec4db7dae9d60390dce1ab547527bbf2415752f211de3748b97f", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.aarch64.rpm", + "checksum": "sha256:7487afe052c79100e906a4d2cb2ee1043410ca10a8e60a65d95776f63a513595", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.aarch64.rpm", + "checksum": "sha256:e29356f3ea2554e8be23401a08a941f406d337cf6b38e7ee99926fb9b3f1f541", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm", + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/tar-1.32-2.fc31.aarch64.rpm", + "checksum": "sha256:e0af6b40e51fe0b9f68367355219aa56717888d2a07c10a001cc8667de1a5a2f", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/trousers-0.3.13-13.fc31.aarch64.rpm", + "checksum": "sha256:7bd78cde4202401947dea928274579074bc78fdae096057e788c1b6a86a10ecc", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/trousers-lib-0.3.13-13.fc31.aarch64.rpm", + "checksum": "sha256:6728ee255cb8c80b85f6d610bfd795025939a77d2591ad61fe1c4f9d657c386e", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/tss2-1331-2.fc31.aarch64.rpm", + "checksum": "sha256:42945876fb8932bad3e50b50349af4bdabe713d7be1c8efc1b0f7b042e556aa5", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm", + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/u/unbound-libs-1.9.3-1.fc31.aarch64.rpm", + "checksum": "sha256:acd149c4bf17a15db75fca1f19e34784a9ed275e19c0721aa78f5eb94797a685", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/u/util-linux-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:07cd9ddc7f7a16dc9739647af90706cfbcf70b281f5474e622b0769e211e0dc8", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm", + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.27", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm", + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xz-5.2.4-6.fc31.aarch64.rpm", + "checksum": "sha256:58a44f9472918a511d3eee0b3f08926dab2ebf4994584403bd196e6c92a06f5a", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xz-libs-5.2.4-6.fc31.aarch64.rpm", + "checksum": "sha256:9ed0b44834b6a637c70aa00ab243aecb534f9aea461e1388652ab039898239c8", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.2", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.aarch64.rpm", + "checksum": "sha256:c1893a7c51ebb0371b87e2179d6e0e5d0fbb71acb4234cf4adc293af11c75578", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "19.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/z/zlib-1.2.11-19.fc31.aarch64.rpm", + "checksum": "sha256:f23f467c4099be4cb4dfdc1be13b7a7bb6e8c6da7c21182658a034827b64df39", + "check_gpg": true + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.20.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/NetworkManager-1.20.4-1.fc31.aarch64.rpm", + "checksum": "sha256:b37d963f89a7e0d466e1317da6cd2c20b3ce3ec9789e1027c16176734f88c4fc", + "check_gpg": true + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.20.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/NetworkManager-libnm-1.20.4-1.fc31.aarch64.rpm", + "checksum": "sha256:f195c83de6568cf550a3b2d70725697196c1a9269cddb9b825f5a887de9d6eed", + "check_gpg": true + }, + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.111", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm", + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/acl-2.2.53-4.fc31.aarch64.rpm", + "checksum": "sha256:a516dfa62a327d440fe38b93af81dbecb112fe45fff0f227583c451631479122", + "check_gpg": true + }, + { + "name": "adobe-source-code-pro-fonts", + "epoch": 0, + "version": "2.030.1.050", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm", + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "name": "adwaita-cursor-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "name": "adwaita-icon-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/alternatives-1.11-5.fc31.aarch64.rpm", + "checksum": "sha256:0b1ddcc8c3096814bc5027133fb077ef587b49a1a4e4d6426327c75cf2066b11", + "check_gpg": true + }, + { + "name": "at-spi2-atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.aarch64.rpm", + "checksum": "sha256:a6caaef9bed1bd17292e1fdde4efee9730f8cff5826a9cb6c952e6f3cd052243", + "check_gpg": true + }, + { + "name": "at-spi2-core", + "epoch": 0, + "version": "2.34.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.aarch64.rpm", + "checksum": "sha256:42a4e01c47e28b71cafb658a5993b7f4b7692ac6b916878d580fecab7ae9d16c", + "check_gpg": true + }, + { + "name": "atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/atk-2.34.1-1.fc31.aarch64.rpm", + "checksum": "sha256:9c08d246ce73d8741777f290e7110ff9dae97a15e09f3469317ed7c8e9fb64ce", + "check_gpg": true + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/audit-3.0-0.12.20190507gitf58ec40.fc31.aarch64.rpm", + "checksum": "sha256:88831a57114969801a557d700451a70337f944b868a3d792d47e6e9e91961f3c", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.aarch64.rpm", + "checksum": "sha256:b25f063f82484e4fa42d1ad31a2cf23e882a99dc1ccb191b24e14a6a789d87a0", + "check_gpg": true + }, + { + "name": "avahi-libs", + "epoch": 0, + "version": "0.7", + "release": "20.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/a/avahi-libs-0.7-20.fc31.aarch64.rpm", + "checksum": "sha256:71ec6fd79756af905e474553f4ca7ae6985e32615df0ee2f2f487c8496e7160f", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "8.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm", + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.7", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/bash-5.0.7-3.fc31.aarch64.rpm", + "checksum": "sha256:181173a9353f593105978b8e4038b7bf53fd22c63f4514fd271a74d48f9c59f8", + "check_gpg": true + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.7", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/brotli-1.0.7-6.fc31.aarch64.rpm", + "checksum": "sha256:8dbce1e34a19be338f49b792874abc861fd64acc5653f7f5cd523d5e5865897e", + "check_gpg": true + }, + { + "name": "bzip2", + "epoch": 0, + "version": "1.0.8", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/bzip2-1.0.8-1.fc31.aarch64.rpm", + "checksum": "sha256:7d8910cf1a1a7f7b98d2989458437feb6e56bd22dae71455233b7f22bd020812", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.aarch64.rpm", + "checksum": "sha256:995ee9636461072248d5c6792d3852fb1ab277a622b18eb7d3c231133446dd7d", + "check_gpg": true + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.15.0", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/c-ares-1.15.0-4.fc31.aarch64.rpm", + "checksum": "sha256:1bdeed5fd5907e0cacd5706ebc93ade09462a0c71e2316d9841e33a896b99b87", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm", + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "name": "cairo", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cairo-1.16.0-6.fc31.aarch64.rpm", + "checksum": "sha256:9ffb9a376d1df3d3d394ec2f8533f939547d8ccd634f1f77db52970630215d71", + "check_gpg": true + }, + { + "name": "cairo-gobject", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.aarch64.rpm", + "checksum": "sha256:23908e2eae2ccfd2efb1d19cdf46e3dca4680ac2d562c1c96f7fb0d22859fc82", + "check_gpg": true + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "2.9", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/checkpolicy-2.9-2.fc31.aarch64.rpm", + "checksum": "sha256:089d4c5c48e89cd1444f283571fce20fbf5f1b20f3a5ff1ce74266bbc2cd0fec", + "check_gpg": true + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/chrony-3.5-4.fc31.aarch64.rpm", + "checksum": "sha256:21d9ceffd6fb52d235a95e4d7708d719eac758a9dfd80ba2d6119dfdc46c80ff", + "check_gpg": true + }, + { + "name": "cloud-init", + "epoch": 0, + "version": "17.1", + "release": "11.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cloud-init-17.1-11.fc31.noarch.rpm", + "checksum": "sha256:9cc3e6534ae34343e7e4d056d46b9551da7d0a82c7bad378c3626d4b70d1bf62", + "check_gpg": true + }, + { + "name": "cloud-utils-growpart", + "epoch": 0, + "version": "0.31", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cloud-utils-growpart-0.31-3.fc31.noarch.rpm", + "checksum": "sha256:101fa551ae1ae1885c1627fec47745eb0071ae675a762002e02c0563de89ecbd", + "check_gpg": true + }, + { + "name": "colord-libs", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/colord-libs-1.4.4-2.fc31.aarch64.rpm", + "checksum": "sha256:ffa75117ea710fef320f1ae878e8c81e7a056386dea78aa5787dc091c5a100a5", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/coreutils-8.31-4.fc31.aarch64.rpm", + "checksum": "sha256:0f3591f036f0be85a9d28e9099d43a8b2e5a500a9588825c1dd994d1a323ceba", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/coreutils-common-8.31-4.fc31.aarch64.rpm", + "checksum": "sha256:bb305f3ddc74c4c30ae838a2bbff3cd325eea8427622c7f82e4d06a564bace6f", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "12.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cpio-2.12-12.fc31.aarch64.rpm", + "checksum": "sha256:798376bc628acd54407d945702dce73ab90633919f88fe9b7ecde3f38ebc2fe9", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cracklib-2.9.6-21.fc31.aarch64.rpm", + "checksum": "sha256:1088699171a35873eb5a776f0212ceff2bc9d67e3f1d8f2e107bbf751c36ca90", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.aarch64.rpm", + "checksum": "sha256:99e8930364200470ee5bd065dccb7c4c1caa4863c6f8975740643fe9d2485c18", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20190816", + "release": "4.gitbb9bf99.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm", + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.2.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.aarch64.rpm", + "checksum": "sha256:6e76674266f1e136186e3f005ddbf13791b1fea78cd30e8501f3dd1b209fa9f2", + "check_gpg": true + }, + { + "name": "cups-libs", + "epoch": 1, + "version": "2.2.12", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cups-libs-2.2.12-2.fc31.aarch64.rpm", + "checksum": "sha256:920d2d8df80fb92e358f4925bbd2891977c98e0b9d2f69b44f1e74bec26d6a1e", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/curl-7.66.0-1.fc31.aarch64.rpm", + "checksum": "sha256:9c039f6f6e5385344ea56a6490a472b0f475d8d7612b422191d2152b8e1fc55a", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.aarch64.rpm", + "checksum": "sha256:1b85657077726361a4b157a909796649fe93131fdc4aa67fd5329adc8d2fc833", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-1.12.16-3.fc31.aarch64.rpm", + "checksum": "sha256:3a7d7619061a4adb275ef4b41d993375ad7863863741624186add801800e524f", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "21", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-broker-21-6.fc31.aarch64.rpm", + "checksum": "sha256:504971d079493a49afb8fb7f067f5dfcc59f3e007afcc63734c15fe1066e4b4d", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm", + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbus-libs-1.12.16-3.fc31.aarch64.rpm", + "checksum": "sha256:8fd19268d460d7f49f3dd96644a2b8a3076a7a7ccbe3e35e27eeafc6ab8d9c95", + "check_gpg": true + }, + { + "name": "dbxtool", + "epoch": 0, + "version": "8", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dbxtool-8-10.fc31.aarch64.rpm", + "checksum": "sha256:c0287bc7c1f54bcd19c43904f9a5c7c0cc4c82eae2c455071f6d7ea50714668f", + "check_gpg": true + }, + { + "name": "dconf", + "epoch": 0, + "version": "0.34.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dconf-0.34.0-1.fc31.aarch64.rpm", + "checksum": "sha256:0458f6a42cd644322b6eb24b01f0f75de47d5e10ae077797dfada1ce2a1f7fcd", + "check_gpg": true + }, + { + "name": "dejavu-fonts-common", + "epoch": 0, + "version": "2.37", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dejavu-fonts-common-2.37-2.fc31.noarch.rpm", + "checksum": "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc", + "check_gpg": true + }, + { + "name": "dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dejavu-sans-fonts-2.37-2.fc31.noarch.rpm", + "checksum": "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/deltarpm-3.6.2-2.fc31.aarch64.rpm", + "checksum": "sha256:4bb03b2162523fa694e0e44f46b04263ff0f5dab22c3e93124ec9b5650af2002", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/device-mapper-1.02.163-2.fc31.aarch64.rpm", + "checksum": "sha256:e7e629e7e89f970660407fb22c8b706c4c9a65a5f43286ddeef1e165b446fcaa", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.aarch64.rpm", + "checksum": "sha256:30e07680d23bfb5d4b2727893337619c56f13b46daec2f13f8985f642bf84250", + "check_gpg": true + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.4.1", + "release": "15.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dhcp-client-4.4.1-15.fc31.aarch64.rpm", + "checksum": "sha256:611b0995f8475747341db33373ec0178afcb724183aada71b5d3a2c437d19527", + "check_gpg": true + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.4.1", + "release": "15.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dhcp-common-4.4.1-15.fc31.noarch.rpm", + "checksum": "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/diffutils-3.7-3.fc31.aarch64.rpm", + "checksum": "sha256:a00e85fb7902d8869492e32816c7834830682745eeab1efba264bdd3185f479d", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.9", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dnf-plugins-core-4.0.9-1.fc31.noarch.rpm", + "checksum": "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "27.git20181204.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dracut-049-27.git20181204.fc31.1.aarch64.rpm", + "checksum": "sha256:7ae36bfe222068561cf0259400b54e210ad628aaa66dd4b87e20a2291996c71d", + "check_gpg": true + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "049", + "release": "27.git20181204.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/d/dracut-config-generic-049-27.git20181204.fc31.1.aarch64.rpm", + "checksum": "sha256:f85438d6cb268c431f3aed5c678f1632b56d57393a3eb52e31d75bc6462bc88d", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.aarch64.rpm", + "checksum": "sha256:ec305ea347ab987f5a00574bc3eaebaf2412483ed1b79615fdd86ca18ab146bc", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.aarch64.rpm", + "checksum": "sha256:2dd8505a96714cdb79829a1377e36a53e05cc9b65a7f35a258ca3e4aaa76c700", + "check_gpg": true + }, + { + "name": "efi-filesystem", + "epoch": 0, + "version": "4", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/efi-filesystem-4-3.fc31.noarch.rpm", + "checksum": "sha256:563f82b7c56043ed5a5ff55dcc643bcc5ac2a1e9ae940481f1c21595a83ba60a", + "check_gpg": true + }, + { + "name": "efibootmgr", + "epoch": 0, + "version": "16", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/efibootmgr-16-6.fc31.aarch64.rpm", + "checksum": "sha256:d96bdfbaba63ac6755a20d8a4d954bc5010695d671ba305a54362c1d3c69fc37", + "check_gpg": true + }, + { + "name": "efivar-libs", + "epoch": 0, + "version": "37", + "release": "1.fc30", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/efivar-libs-37-1.fc30.aarch64.rpm", + "checksum": "sha256:79db5a94baa6acad360b52fdf6d49cf91d7b6290e0d55f457b2820937d2739f4", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm", + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-libelf-0.177-1.fc31.aarch64.rpm", + "checksum": "sha256:00e59535d45094b7d47e25c93d21179f3138839968776107df99fa0678f1440f", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/elfutils-libs-0.177-1.fc31.aarch64.rpm", + "checksum": "sha256:fe6afcdab2793cd75a838a758a282d4581f1272f3f32df6a58777c0721e54b2e", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/e/expat-2.2.8-1.fc31.aarch64.rpm", + "checksum": "sha256:5745966147d1651d663d9e7d37a740ebbb4daee49b5cb7a2e61375ea6b37404e", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm", + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "name": "fedora-release-cloud", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-release-cloud-31-1.noarch.rpm", + "checksum": "sha256:06512e0f2546baf5c47a058d872fc62c39156bc86b5619eb841b435e2cc61e32", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-release-common-31-1.noarch.rpm", + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fedora-repos-31-1.noarch.rpm", + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/file-5.37-3.fc31.aarch64.rpm", + "checksum": "sha256:f43fa8496a54ad89eef4f48c3813190b5509a21c873bc1d5fcd0dda80ae2b425", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/file-libs-5.37-3.fc31.aarch64.rpm", + "checksum": "sha256:f63c88d8b294addf2791a5b291e3ab13750a24fe92fec65c96d365edad767f57", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.12", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/filesystem-3.12-2.fc31.aarch64.rpm", + "checksum": "sha256:a108fbc1ba9886604483ec05ef2150c961adb0906db5f9ea46c239bfcdf06b55", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "24.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/findutils-4.6.0-24.fc31.aarch64.rpm", + "checksum": "sha256:dcc584a55c425c26a62fe579beead8488589c3892c34e8fab95c7fd7ec1cf6c6", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fipscheck-1.5.0-7.fc31.aarch64.rpm", + "checksum": "sha256:0edff1a5f04f7f5d47537b4c049b95331f9ad33963c9c63ca4b13345a37296d4", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.aarch64.rpm", + "checksum": "sha256:81100039c817e2f3703fb365c63d6d891f3f977dd9e670c3c9b12662de3c255b", + "check_gpg": true + }, + { + "name": "fontconfig", + "epoch": 0, + "version": "2.13.92", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fontconfig-2.13.92-3.fc31.aarch64.rpm", + "checksum": "sha256:e30906c30d3dea50c62e74bc7aa870eb928af4c6fb474c894f55ef6ba41f5841", + "check_gpg": true + }, + { + "name": "fontpackages-filesystem", + "epoch": 0, + "version": "1.44", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm", + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.10.0", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/freetype-2.10.0-3.fc31.aarch64.rpm", + "checksum": "sha256:72bc6a2b459ee27dcd7c213d3aab5a993fc90fcffba2ef02fab7ae3857d379f7", + "check_gpg": true + }, + { + "name": "fribidi", + "epoch": 0, + "version": "1.0.5", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fribidi-1.0.5-4.fc31.aarch64.rpm", + "checksum": "sha256:8c4b392a5e1ed79b7a5b302d8fb14d0470b3a6306a7b36aee275acf0daa61537", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/f/fuse-libs-2.9.9-8.fc31.aarch64.rpm", + "checksum": "sha256:7f23849dcd356019c4e83058e9e49d544300ad7b9a6f6a7528831e393ca1197c", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gawk-5.0.1-5.fc31.aarch64.rpm", + "checksum": "sha256:e6a986f10b17ba67e86c417251d855e1eeac0ca1c85c2ee7ae3bfc7d6c966087", + "check_gpg": true + }, + { + "name": "gcr", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gcr-3.33.4-1.fc31.aarch64.rpm", + "checksum": "sha256:3b16753c7590bc968a693e97ce9d318d58e1483fd2999a874becd95abc9d35ff", + "check_gpg": true + }, + { + "name": "gcr-base", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gcr-base-3.33.4-1.fc31.aarch64.rpm", + "checksum": "sha256:9404d90bbb474b30b80c90719df01d784b925127e9710f12c44c72d14c2708fc", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.aarch64.rpm", + "checksum": "sha256:f74b53f33812f65d12377946d363a773e48cf6bc6c4bb2acec5bb4a048861b88", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.aarch64.rpm", + "checksum": "sha256:6e78ce3d460b7e1377f487fed5563999fb44d310c441798a4d23d34960e23d45", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2-modules", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.aarch64.rpm", + "checksum": "sha256:b3d8740cee57c5025ef88e9d71df141a6600fdf26215969acae393a2b052892d", + "check_gpg": true + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20190806", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/geolite2-city-20190806-1.fc31.noarch.rpm", + "checksum": "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565", + "check_gpg": true + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20190806", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/geolite2-country-20190806-1.fc31.noarch.rpm", + "checksum": "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gettext-0.20.1-2.fc31.aarch64.rpm", + "checksum": "sha256:0064a42567b657d85831ec162a314cd00f7befe48ce634387463754677206c9c", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gettext-libs-0.20.1-2.fc31.aarch64.rpm", + "checksum": "sha256:c8fc5b492af902894b927e79314b52bbdd8e45b2d2018abd8113d8e1807adeca", + "check_gpg": true + }, + { + "name": "git-core", + "epoch": 0, + "version": "2.23.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/git-core-2.23.0-1.fc31.aarch64.rpm", + "checksum": "sha256:7c1e646c757c1937702c56d350dc5b63f0d4f6b4ea5b97a2e420e7f96c0965ed", + "check_gpg": true + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glib-networking-2.62.1-1.fc31.aarch64.rpm", + "checksum": "sha256:c84f89f65e2a691d7fcbc7021c3c5d796e0f39483e3fe95e83579c630575b78a", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glib2-2.62.1-1.fc31.aarch64.rpm", + "checksum": "sha256:f3d5fd211e3faf1b61be64fd3f1659dd640a873c66747a5cc341f888e4179dea", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-2.30-5.fc31.aarch64.rpm", + "checksum": "sha256:abf022d05aa55e7aa8d0736b899d86613d30a7e1751b04666920f367d4311a1a", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-common-2.30-5.fc31.aarch64.rpm", + "checksum": "sha256:e3046e1e508453e332277ab86ebf67df0106edca2c6e8e54ba2bffb76f9ed4d7", + "check_gpg": true + }, + { + "name": "glibc-langpack-en", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/glibc-langpack-en-2.30-5.fc31.aarch64.rpm", + "checksum": "sha256:42ae595f75734daaed3430e1117d3cb05bd9a18108506bb9600125693d3d1688", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gmp-6.1.2-10.fc31.aarch64.rpm", + "checksum": "sha256:b9ad5c82b3b83871269ee705ee12896efd1e3485b0d2005c9cff2a100100cd34", + "check_gpg": true + }, + { + "name": "gnome-keyring", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.aarch64.rpm", + "checksum": "sha256:81f5b3786ab1b634016c0c066379dda739386b4b1d639111b4575748e27caa56", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnupg2-2.2.17-2.fc31.aarch64.rpm", + "checksum": "sha256:12c732f4a960848bd4fbc8111c2c0cf584799b1fdf0eb89c2cdcb26da5bc03b8", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.aarch64.rpm", + "checksum": "sha256:0a4100f50b31df500afc5d255dd87117553df7032447f3e226196fd64f9c3f47", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.10", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gnutls-3.6.10-1.fc31.aarch64.rpm", + "checksum": "sha256:8e10cf2b0645e342b001338a4463c5a02a8a302c25affba37da700a987e2c064", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gpgme-1.13.1-3.fc31.aarch64.rpm", + "checksum": "sha256:4290088d905017724f6c909cb1b3193055a6aff62cd20e39ea196694f90753c8", + "check_gpg": true + }, + { + "name": "graphite2", + "epoch": 0, + "version": "1.3.13", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/graphite2-1.3.13-1.fc31.aarch64.rpm", + "checksum": "sha256:0cb1a66cb3bb44797a8aeb47db85db1f6c0fcf4d4571d8a5f8981f83b51c08af", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grep-3.3-3.fc31.aarch64.rpm", + "checksum": "sha256:7102de1c840d5b915a40fde5c408f182d677ecdd5126dedf033ebb63b5419607", + "check_gpg": true + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "20.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/groff-base-1.22.3-20.fc31.aarch64.rpm", + "checksum": "sha256:89a35174435a790c0fbf3bc4306d51c867ecce66fb65bae0e7706a9f8f9a19b3", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-common-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "name": "grub2-efi-aa64", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-efi-aa64-2.02-100.fc31.aarch64.rpm", + "checksum": "sha256:7637132d543741e8c5b581523ca5db24adc6eb6d78530944881c360da694cf15", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-tools-2.02-100.fc31.aarch64.rpm", + "checksum": "sha256:19217c1730a3f16e15eedd95e3f97471097a1bd066f7783fd273cfb392f4042e", + "check_gpg": true + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-tools-extra-2.02-100.fc31.aarch64.rpm", + "checksum": "sha256:af00a0b026235e70f7cb7606166dfcaea0d227a3de70363ff67a644036ed8bfc", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grub2-tools-minimal-2.02-100.fc31.aarch64.rpm", + "checksum": "sha256:ddd0635b899826bed59036ba17f8112c35660b32f3d1639266f5e394166a9dbf", + "check_gpg": true + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "36.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/grubby-8.40-36.fc31.aarch64.rpm", + "checksum": "sha256:49941a1041cf1e9a9df33aec7f0007f40cb1c815b384270cef23ca80a0ceedb5", + "check_gpg": true + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.aarch64.rpm", + "checksum": "sha256:82bc08ef5d8049d3d07a5eb00f61d3f94d7577ef814f6791352f75835bff477a", + "check_gpg": true + }, + { + "name": "gtk-update-icon-cache", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.aarch64.rpm", + "checksum": "sha256:0064998ad79a6250297b379852b5a06932d8e074270bea02d75888758755bd23", + "check_gpg": true + }, + { + "name": "gtk3", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gtk3-3.24.12-3.fc31.aarch64.rpm", + "checksum": "sha256:6b11c1e14d4a02edf8beee776f9f896729bd0f28c66cb4c1d2bd021cdffc6aa0", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/g/gzip-1.10-1.fc31.aarch64.rpm", + "checksum": "sha256:4de89d25d09c57b09a51ab93fdf84ade211e835c16d3ba6e4e261dcc0c4e50a1", + "check_gpg": true + }, + { + "name": "harfbuzz", + "epoch": 0, + "version": "2.6.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/harfbuzz-2.6.1-2.fc31.aarch64.rpm", + "checksum": "sha256:3ad68b7569e311a1ca7da4da7b42021a7acb001ab4b2cc6e63b3ba0f87cbd55c", + "check_gpg": true + }, + { + "name": "heat-cfntools", + "epoch": 0, + "version": "1.4.2", + "release": "9.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/heat-cfntools-1.4.2-9.fc31.noarch.rpm", + "checksum": "sha256:456252f83ba91a1150f180a81998c3acdd71be57a324cf84d6d842a063c56a12", + "check_gpg": true + }, + { + "name": "hicolor-icon-theme", + "epoch": 0, + "version": "0.17", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm", + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.20", + "release": "9.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/h/hostname-3.20-9.fc31.aarch64.rpm", + "checksum": "sha256:a3be2e9e42d68f5e5e58f1dd86d5b6e4fc1ff91e98f44d26221d6bda38c9f372", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.aarch64.rpm", + "checksum": "sha256:c935f74584d7289ca58d1b23cbdacd38450d351dbc3dcd0bc713723c4d50a545", + "check_gpg": true + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.02", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/initscripts-10.02-2.fc31.aarch64.rpm", + "checksum": "sha256:0b109cfab724680af15e7be85cf9f4f4828cd8290f0aa8fcebcbb14cd176be94", + "check_gpg": true + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.2.5", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/ipcalc-0.2.5-3.fc31.aarch64.rpm", + "checksum": "sha256:3e6b2cfce9c4a62f7cde13bb6ae135d5f6f0d6cb179ab3dbd61ba1533477f257", + "check_gpg": true + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.3.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iproute-5.3.0-1.fc31.aarch64.rpm", + "checksum": "sha256:e9c1fa22b0b6d6b7ac782ba60d4c6a2c747bd683f075720a4d82aec45adbd905", + "check_gpg": true + }, + { + "name": "iproute-tc", + "epoch": 0, + "version": "5.3.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iproute-tc-5.3.0-1.fc31.aarch64.rpm", + "checksum": "sha256:ee2f71a3a318270e9cc55aa9dde8889f2e664fec681f9fd5719361f8e4a1afac", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.3", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iptables-libs-1.8.3-5.fc31.aarch64.rpm", + "checksum": "sha256:d6b491f91a567b4245d07d28a0547cb1b8e97a1f814e3f7d76dd685bb6658b64", + "check_gpg": true + }, + { + "name": "iputils", + "epoch": 0, + "version": "20190515", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/i/iputils-20190515-3.fc31.aarch64.rpm", + "checksum": "sha256:7b01a3bf09861003bd9524e9d460ed68b8d2de4233a09f7af731cb07f75ef913", + "check_gpg": true + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.12", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/jansson-2.12-4.fc31.aarch64.rpm", + "checksum": "sha256:1138343dfb107de07f54d4723aee2686fdd1af3e4532d14bd399b9b6b7873040", + "check_gpg": true + }, + { + "name": "jasper-libs", + "epoch": 0, + "version": "2.0.14", + "release": "9.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/jasper-libs-2.0.14-9.fc31.aarch64.rpm", + "checksum": "sha256:ea35fa3f5c16e074a59d66ff9037e48ca7c0126444e09daf640b7a37dacd76ad", + "check_gpg": true + }, + { + "name": "jbigkit-libs", + "epoch": 0, + "version": "2.1", + "release": "17.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/jbigkit-libs-2.1-17.fc31.aarch64.rpm", + "checksum": "sha256:4549e51322d0b10016f1daa8dedc807fddf7d2d4e77719baa696de15b88821bb", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/json-c-0.13.1-6.fc31.aarch64.rpm", + "checksum": "sha256:fd9ac175e5af929bb942528904d6e6e48caed800e22a7a45825d535bdc1537ba", + "check_gpg": true + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/j/json-glib-1.4.4-3.fc31.aarch64.rpm", + "checksum": "sha256:fb2b070b96ed58a31da7889452ce3cdbfb60f6161a3e2f0ce2738b4d3facfd2d", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kbd-2.0.4-14.fc31.aarch64.rpm", + "checksum": "sha256:03559557dbf64805e44d7e956f6b228c90831766fd1f485eecdfddf7a646a220", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kbd-legacy-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kbd-misc-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "5.3.7", + "release": "301.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kernel-core-5.3.7-301.fc31.aarch64.rpm", + "checksum": "sha256:9bf695c87aa5acc7695251a4c75c576375c45c5b043af00a7ddf503223030309", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/keyutils-libs-1.6-3.fc31.aarch64.rpm", + "checksum": "sha256:3975c15d461cebe50d1f179fb86d288c18f643c32f179bbab13425596ab64001", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kmod-26-4.fc31.aarch64.rpm", + "checksum": "sha256:e88e27b7ac16c753e20f65cd13ed163019ac702c4195eb75d766acd44cb55263", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kmod-libs-26-4.fc31.aarch64.rpm", + "checksum": "sha256:c68bed5b576d7baa67a59c726d2340f7c0df7e9b93f90b3a22d3f62e9f99456a", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.0", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/kpartx-0.8.0-3.fc31.aarch64.rpm", + "checksum": "sha256:e0408a5020069e7a4585e3bb4d1bba1b8bf0afe481ff63b70e2221e9c5464cad", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.17", + "release": "45.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/k/krb5-libs-1.17-45.fc31.aarch64.rpm", + "checksum": "sha256:7d0ec23fb8dab882db8b7ec9a9cbb2728d6df2af5c02ee06cc6fa357f210ff09", + "check_gpg": true + }, + { + "name": "langpacks-core-en", + "epoch": 0, + "version": "2.0", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/langpacks-core-en-2.0-7.fc31.noarch.rpm", + "checksum": "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552", + "check_gpg": true + }, + { + "name": "langpacks-en", + "epoch": 0, + "version": "2.0", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/langpacks-en-2.0-7.fc31.noarch.rpm", + "checksum": "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b", + "check_gpg": true + }, + { + "name": "lcms2", + "epoch": 0, + "version": "2.9", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lcms2-2.9-6.fc31.aarch64.rpm", + "checksum": "sha256:cddb050897cd8666090b172711fb7947b3bf844f5a190f8c689fd79a222e1761", + "check_gpg": true + }, + { + "name": "less", + "epoch": 0, + "version": "551", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/less-551-2.fc31.aarch64.rpm", + "checksum": "sha256:aeac986c84b8038eccd191310bb09f3d396f7c05171ac0fb8691182918459c90", + "check_gpg": true + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libX11-1.6.8-3.fc31.aarch64.rpm", + "checksum": "sha256:01ea4ecad746f1309b5c943f2b2709f7e5400d33e4d51c85401205ed18d61621", + "check_gpg": true + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm", + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXau-1.0.9-2.fc31.aarch64.rpm", + "checksum": "sha256:59f289c6f3b0180ae3eddaa974e2f972bf15c48135a2abed9eb2f72dfdae1be4", + "check_gpg": true + }, + { + "name": "libXcomposite", + "epoch": 0, + "version": "0.4.4", + "release": "17.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXcomposite-0.4.4-17.fc31.aarch64.rpm", + "checksum": "sha256:159972ccc01cd5840c2aad04818efc965b64c5120b1fcce92a47f45ab1abf4a5", + "check_gpg": true + }, + { + "name": "libXcursor", + "epoch": 0, + "version": "1.1.15", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXcursor-1.1.15-6.fc31.aarch64.rpm", + "checksum": "sha256:46b0c36e90fd16371444eb5376fc01232b6e64073e42ed1f141344a9aadbe568", + "check_gpg": true + }, + { + "name": "libXdamage", + "epoch": 0, + "version": "1.1.4", + "release": "17.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXdamage-1.1.4-17.fc31.aarch64.rpm", + "checksum": "sha256:f7954ba55d833c6341ec87b0cf57817084c705673b8b50aff3e3606fcbdcfbb5", + "check_gpg": true + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXext-1.3.4-2.fc31.aarch64.rpm", + "checksum": "sha256:58c8a3d4ac7c8c318b5596b192dbd0350a1122983b69bfc1cb5eb3ecec5b7cf6", + "check_gpg": true + }, + { + "name": "libXfixes", + "epoch": 0, + "version": "5.0.3", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXfixes-5.0.3-10.fc31.aarch64.rpm", + "checksum": "sha256:500d0a1b49962ec79ca00224528d6e599d3845eb60b8b13a678d03edfaa755ec", + "check_gpg": true + }, + { + "name": "libXft", + "epoch": 0, + "version": "2.3.3", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXft-2.3.3-2.fc31.aarch64.rpm", + "checksum": "sha256:4c55460197fe24d0a105e3071824a933069e0b655910fd7ee7335e2396de15dc", + "check_gpg": true + }, + { + "name": "libXi", + "epoch": 0, + "version": "1.7.10", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXi-1.7.10-2.fc31.aarch64.rpm", + "checksum": "sha256:2aafea82072ad28a8b662e32902f66b47166a00b5c9cf19b1dd589f39776560f", + "check_gpg": true + }, + { + "name": "libXinerama", + "epoch": 0, + "version": "1.1.4", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXinerama-1.1.4-4.fc31.aarch64.rpm", + "checksum": "sha256:9ac1ef0ef80d7ff65903120f8b2a5a2a5723dce7c9c131e17cea3572cb81d0f4", + "check_gpg": true + }, + { + "name": "libXrandr", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXrandr-1.5.2-2.fc31.aarch64.rpm", + "checksum": "sha256:0f661b922a9e9cbe82e948ec1d83c6fca6e61e08de50815a5b6c069a64f4e883", + "check_gpg": true + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXrender-0.9.10-10.fc31.aarch64.rpm", + "checksum": "sha256:ec48b0cd759656b4c5d8d13dcc81c6fa23914f8e214b4cda1ed08e1896177fe9", + "check_gpg": true + }, + { + "name": "libXtst", + "epoch": 0, + "version": "1.2.3", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libXtst-1.2.3-10.fc31.aarch64.rpm", + "checksum": "sha256:03b9d49b78b7e758eecce6a25782767ec5dc921d28f053b17a651b1c8bb96d7b", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libacl-2.2.53-4.fc31.aarch64.rpm", + "checksum": "sha256:a96e76f00865249f70a3f2ef293946e9786150faa83e37185e61592290817cb4", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libarchive-3.4.0-1.fc31.aarch64.rpm", + "checksum": "sha256:2fc552b80866318c0ac934f5385fd2090743701639c318b75138ae985ff5606a", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libargon2-20171227-3.fc31.aarch64.rpm", + "checksum": "sha256:d877864e501fe38a1b0c7e11572e61c5d9eb9857436541f1c2d5ad2f8bd29b83", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libassuan-2.5.3-2.fc31.aarch64.rpm", + "checksum": "sha256:64b0063f6b3a42b712c0ee622328e36ddf94a15da547e3c8da3a4191e0941c92", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "7.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libattr-2.4.48-7.fc31.aarch64.rpm", + "checksum": "sha256:99a6e2861b7eb51684d1b83901a7e54caf649b711556a660d93bfef114eab72c", + "check_gpg": true + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "43.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libbasicobjects-0.1.1-43.fc31.aarch64.rpm", + "checksum": "sha256:608a967cbdbad6b7320060e986bf8f8e7f6b61bff5ae6571006397b46a60771c", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libblkid-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:5e2a37ee7e1147a446be67d63b1be55f2e82c0ae0a84dd1afc6a3fec64e62804", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcap-2.26-6.fc31.aarch64.rpm", + "checksum": "sha256:566a389a620f634ab341a9a39cffdb1c607b4682224cf3d5ac530b6c57c78d0f", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcap-ng-0.7.9-8.fc31.aarch64.rpm", + "checksum": "sha256:4e365f48d5c85b82f71e8d000d00cdf7ed3c23cd94c31fbf3543572413541c3d", + "check_gpg": true + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "43.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcollection-0.7.0-43.fc31.aarch64.rpm", + "checksum": "sha256:a61e3fed8d1c860bf09b5ec5586e30b88b1b1dea157cd371def9fcf72e313a3d", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcom_err-1.45.3-1.fc31.aarch64.rpm", + "checksum": "sha256:98d811216e2e0e4ad49925489824210fc3e9b57bb09eefcd4047886375d34f57", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcomps-0.1.11-3.fc31.aarch64.rpm", + "checksum": "sha256:a63ae4aa727a4b75b602a67f1e42946e39dc124e9f1aeb3e795af40ad4e15cbf", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcroco-0.6.13-2.fc31.aarch64.rpm", + "checksum": "sha256:8d17464a13f79b54c8dfe76d716a42d6c875bce408e29344c1ecf916957a649e", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libcurl-7.66.0-1.fc31.aarch64.rpm", + "checksum": "sha256:898a918a7adfefc3ce13d10b30b2ec7ccada96155afa15ee3f4e589b3f1baa38", + "check_gpg": true + }, + { + "name": "libdatrie", + "epoch": 0, + "version": "0.2.9", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdatrie-0.2.9-10.fc31.aarch64.rpm", + "checksum": "sha256:04826477197ec239d756f81cb6d38fde2f65e71499a8dbaf0c666d93084f1ea3", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdb-5.3.28-38.fc31.aarch64.rpm", + "checksum": "sha256:1738cf24111bcd0bff08880c4d5efa624c09a2080c901f67ab032ed201a8751e", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdb-utils-5.3.28-38.fc31.aarch64.rpm", + "checksum": "sha256:5ef4f8487a78a43f7502c055ac77c047ce159da5641e5b61c2669395ae1efe62", + "check_gpg": true + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "43.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdhash-0.5.0-43.fc31.aarch64.rpm", + "checksum": "sha256:6f7bd7a58d5aed77bbab94aa38edcbc4cac924d72ab6c72ce718f24b6528e1a5", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libdnf-0.35.3-6.fc31.aarch64.rpm", + "checksum": "sha256:6bc6909c53c0eb2bad7640b3fb79da5cacf5fd8951dee08347b8d18df1b004f8", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "28.20190324cvs.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.aarch64.rpm", + "checksum": "sha256:3976706367650c755852d995bbe8c4e6bbd13b6e8e0148b7beddb4aba3679d8a", + "check_gpg": true + }, + { + "name": "libepoxy", + "epoch": 0, + "version": "1.5.3", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libepoxy-1.5.3-4.fc31.aarch64.rpm", + "checksum": "sha256:5b75073853ff34026cf180d7466314783a7a81defaa43e6b7416a38d9f19230b", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "7.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libevent-2.1.8-7.fc31.aarch64.rpm", + "checksum": "sha256:2575f8d1fb953934730b9fe6803bf3de12669dcee78852057ea4e88f9d4d76a4", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libfdisk-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:e8a13bb46e5149142a1e0a359460c1c65b2cbcbff20f2d0c50f9adbad57538a1", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "23.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libffi-3.1-23.fc31.aarch64.rpm", + "checksum": "sha256:b9b609d17e9274c1551ac6ebab4b53f6e4a5ae9253db5465c65fdb8c919a09dd", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgcc-9.2.1-1.fc31.aarch64.rpm", + "checksum": "sha256:be8bf30729c71aabe30f2c4cf8e5c43ce3cdf892c218fadf53c0af29a76fd6b3", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgcrypt-1.8.5-1.fc31.aarch64.rpm", + "checksum": "sha256:d2f7d49bd565c2fec4ca945ae97ac3b8a607f114d3a7558b90b2caaa5871459b", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgomp-9.2.1-1.fc31.aarch64.rpm", + "checksum": "sha256:6b2e3b36c2a3e988f40548688b32ef3ce2e4c7906127215c82736189684a95a6", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgpg-error-1.36-2.fc31.aarch64.rpm", + "checksum": "sha256:0b2a6b7e3b62ff9c02ec3012f08fbf396a7990bf9599b49b75eecbee3b257f7f", + "check_gpg": true + }, + { + "name": "libgusb", + "epoch": 0, + "version": "0.3.0", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libgusb-0.3.0-5.fc31.aarch64.rpm", + "checksum": "sha256:e1e5250ea932beac32caf373ae55b4655c50ae8a1bd9d42e3ceac590a13031ef", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libidn2-2.2.0-2.fc31.aarch64.rpm", + "checksum": "sha256:c6ffcbd829ea30ef40fa61095cef03f2b6eafa3228187a478d6d027911f12e2f", + "check_gpg": true + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "43.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libini_config-1.3.1-43.fc31.aarch64.rpm", + "checksum": "sha256:31dacda6745f326be70d854d50ae5d3cd0c9d4f19aeab6b4d09920e1436d8bdc", + "check_gpg": true + }, + { + "name": "libjpeg-turbo", + "epoch": 0, + "version": "2.0.2", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.aarch64.rpm", + "checksum": "sha256:618e9a7e3f1f8191beee70d3ad1c8754870887d251480e7e6dd1f3de2d8226d1", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libkcapi-1.1.5-1.fc31.aarch64.rpm", + "checksum": "sha256:3fb9cec5d598a549e97041993399d49c5943821b1f3441881cf15cb26f38e437", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libkcapi-hmaccalc-1.1.5-1.fc31.aarch64.rpm", + "checksum": "sha256:69f2c758068234b1abc39ffaf94c8825ae4baa9810cc54e5d49a5c891fa98435", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libksba-1.3.5-10.fc31.aarch64.rpm", + "checksum": "sha256:575640462a8c2d0687ea225cc7b6bbf7aa0814e311619ddf6cd16e1bc22f9513", + "check_gpg": true + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.0.7", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libldb-2.0.7-1.fc31.aarch64.rpm", + "checksum": "sha256:d2d3b613de0ecf3ae022e5d5d1576858c91b203af6a52a7a9aa36245f0cdbd05", + "check_gpg": true + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.2.0", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmaxminddb-1.2.0-8.fc31.aarch64.rpm", + "checksum": "sha256:3308454f1353d5aced0a9574bc969ae272923ef1faa425bd9080de6e56e1bcbb", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "9.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmetalink-0.1.3-9.fc31.aarch64.rpm", + "checksum": "sha256:d287bfdcebb9fbb31d5f58cc71311f48a85970d0fd92f5beb0193270c155faac", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "10.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmnl-1.0.4-10.fc31.aarch64.rpm", + "checksum": "sha256:ead6cd0d8e509f07e36456aff75eca8433821813d675382d28fe4e7dbecc48dc", + "check_gpg": true + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "20.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmodman-2.0.1-20.fc31.aarch64.rpm", + "checksum": "sha256:a5fa076ed2c83974cacf4ce386bfdc576ce532fba4f8645dda5c2b67efc5d501", + "check_gpg": true + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.15", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.aarch64.rpm", + "checksum": "sha256:e9c7f59547a9eec5304db7a312b435592f07f7aee4f3db617e5ddfac0f4d048c", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libmount-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:429cf175b6c3b2bedcabf3391ad3166fe6e62259877f309e57500d2c7f1f1882", + "check_gpg": true + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libndp-1.7-4.fc31.aarch64.rpm", + "checksum": "sha256:311729a146f8833ff882370348d69313322dcf7586b68d5eed192eb633dcd58a", + "check_gpg": true + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.4.1", + "release": "1.rc1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnfsidmap-2.4.1-1.rc1.fc31.aarch64.rpm", + "checksum": "sha256:d1ce6a69f0c2d96a97a04036a5c59deda82b5e1b0843c114f0fb896279ec7bbc", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.39.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnghttp2-1.39.2-1.fc31.aarch64.rpm", + "checksum": "sha256:56f3d59b74bf8ceafea695d10fb7ad4672ec93f824ef9b0508c7bcdedeffb101", + "check_gpg": true + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnl3-3.5.0-1.fc31.aarch64.rpm", + "checksum": "sha256:ee5ed9701778c4cb91af4c2e2ef996b9c178d32b652edf4506394cac72fefb96", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "5.20180605git4a062cf.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.aarch64.rpm", + "checksum": "sha256:8d21bbf2063bb50cf3d12281731fbd8b26dece5f154d7a50f0952695fea6751f", + "check_gpg": true + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "43.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpath_utils-0.2.1-43.fc31.aarch64.rpm", + "checksum": "sha256:f11d53128f33f9e73dc21c01159a283cc3fcd2e39f2712dbfa930018ae67fb69", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.0", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpcap-1.9.0-4.fc31.aarch64.rpm", + "checksum": "sha256:fb6b61cabfce21597c33c62743c13dd96bcea39aa806a144bc2b2665b48273a8", + "check_gpg": true + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpipeline-1.5.1-3.fc31.aarch64.rpm", + "checksum": "sha256:a40b4873535c2b0b826063e5248981d1ce0d04ef5ec6d9c21facc07ce2446b40", + "check_gpg": true + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.37", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpng-1.6.37-2.fc31.aarch64.rpm", + "checksum": "sha256:77ff28552aba96ce4b80d51a9c390ef4958afad18ede879bf31022f2509e2d90", + "check_gpg": true + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "14.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libproxy-0.4.15-14.fc31.aarch64.rpm", + "checksum": "sha256:c599ffa97fde329ff872bd6db99e8c218601df6549302f89ff747d34ca24042c", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpsl-0.21.0-2.fc31.aarch64.rpm", + "checksum": "sha256:816fe17af41a66dd718eb247273be824b75f53fb539455b58b892528ca12cde5", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libpwquality-1.4.1-1.fc31.aarch64.rpm", + "checksum": "sha256:20cc74172d531506391309e8f82c6512404ada35f22c68fcd0b83a01dc6e0ca8", + "check_gpg": true + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "43.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libref_array-0.1.5-43.fc31.aarch64.rpm", + "checksum": "sha256:23e335d288f55da26dc77e0d1ceb7cbe4e3890b4e28ff4a2435fc4481a6e737f", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.10.5", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/librepo-1.10.5-1.fc31.aarch64.rpm", + "checksum": "sha256:4f37b1e322e3001b076e0128541cc82c180d7054b1c0b7200f46fda4d654cd71", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.10.1", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm", + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libseccomp-2.4.1-1.fc31.aarch64.rpm", + "checksum": "sha256:7623bcecb8340ed57e1aa2951b13a1c5b1dfefa80eb226f269294df29cb40c08", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.19.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsecret-0.19.1-1.fc31.aarch64.rpm", + "checksum": "sha256:d1520137d9cb96cd10a63893b45b4794b120502bdbab0862e001ac2486195aa6", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libselinux-2.9-5.fc31.aarch64.rpm", + "checksum": "sha256:0c49f27ae0aaf95fbdc52cfb9406c41eefff41b205f85fdc6ef6787ec3af5146", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libselinux-utils-2.9-5.fc31.aarch64.rpm", + "checksum": "sha256:e78343046ae389b1c11d36f8de0b8bfbb9ded7bdc39fb52b3f719a39047bf42a", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsemanage-2.9-3.fc31.aarch64.rpm", + "checksum": "sha256:36ce07aa1f90dfdf5ae9824acff24fc3aafe5633b07a022732ca06258e0255b6", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsepol-2.9-2.fc31.aarch64.rpm", + "checksum": "sha256:e1deab5e887a199233f9a439d2d20d864d434e9a4ac7fe460f230d368fb3779f", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsigsegv-2.11-8.fc31.aarch64.rpm", + "checksum": "sha256:11e8ee935d9c9d349f4c081d035fc4ee34539af23ef8122e6901b22cf97f346f", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsmartcols-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:768cc2c561bd6476df45fbd9280bbaeb87d2addcd0c51601d2226a590d7dc872", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.5", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsolv-0.7.5-3.fc31.aarch64.rpm", + "checksum": "sha256:82cc8c43bfe0e731ec78e31c8af6250ec1f13989978105a1b38d518470cf5bde", + "check_gpg": true + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.68.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsoup-2.68.2-1.fc31.aarch64.rpm", + "checksum": "sha256:c1590c5cdfc7aad868c75c54c11a2c7d692001f758ead33aa10f9838955148c4", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libss-1.45.3-1.fc31.aarch64.rpm", + "checksum": "sha256:c6de19d0d4b8f67957ca6122462090895034495852814f36396bc134905f5f5e", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libssh-0.9.0-6.fc31.aarch64.rpm", + "checksum": "sha256:51f15beba5e5bfc6ff646741b3fbaa3a484ebb40fd8c6c59b8f1f6346dd93e93", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm", + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_autofs-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:ce421671bfd14a427771eb3c78b060352a61cca889b1bf1b342c328dd521623d", + "check_gpg": true + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_certmap-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:02f7f1cdd5cbe11b16e093686db5c584a68db4e6b1015c4d36c0246a54f801bb", + "check_gpg": true + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_idmap-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:2b1052455234b751e869f22c496bb660dec53eafe198673bab25053e394e41cb", + "check_gpg": true + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_nss_idmap-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:f2d11878777b28a284e9a571a6a9cf893a97f0935291b10686eb93a2a3dfdfb8", + "check_gpg": true + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libsss_sudo-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:99c0e924fa7eb70fc9301b692d4ba72ec480af840498b8251f68a419317bd108", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libstdc++-9.2.1-1.fc31.aarch64.rpm", + "checksum": "sha256:5a32c492b921e9287422006f255833605b328f3efd071609673be161bb4e7f04", + "check_gpg": true + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtalloc-2.3.0-1.fc31.aarch64.rpm", + "checksum": "sha256:48ee663f069c5019c842f316216ef3bf8dfcbbec479c98d1f2b24749c22e57f3", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.14", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtasn1-4.14-2.fc31.aarch64.rpm", + "checksum": "sha256:23e8c23c89737665a5288a3a171548e94898be9ed4a24c056d8bc851c6800090", + "check_gpg": true + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtdb-1.4.2-1.fc31.aarch64.rpm", + "checksum": "sha256:91d628d3e4a82976361ecb306d4f0049aa65c811fdd5051b3f8423b75e4a10e9", + "check_gpg": true + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtevent-0.10.1-1.fc31.aarch64.rpm", + "checksum": "sha256:f6d37f25fa7215b7ae185b12f687d60c4363cfb8e35d591595a9b0f379488fc6", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtextstyle-0.20.1-2.fc31.aarch64.rpm", + "checksum": "sha256:e4e6a5e014442aa8d7768555da9d44e6381569e0c44e61d2d2a06d6692748945", + "check_gpg": true + }, + { + "name": "libthai", + "epoch": 0, + "version": "0.1.28", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libthai-0.1.28-3.fc31.aarch64.rpm", + "checksum": "sha256:b04fecd603225051ca56c6674cb72f12f4de0cc1cbbfda0ab7d0af0e655b2c99", + "check_gpg": true + }, + { + "name": "libtiff", + "epoch": 0, + "version": "4.0.10", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtiff-4.0.10-6.fc31.aarch64.rpm", + "checksum": "sha256:57bd1ce5d776daca117795bc8e3852f1d29a6fc3fc1edd21729d161de2d7798d", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "2.rc3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.aarch64.rpm", + "checksum": "sha256:14a759b4daf287d66f5b803b0fbb52621f8429607be109e5d3c313a57cc276e2", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libunistring-0.9.10-6.fc31.aarch64.rpm", + "checksum": "sha256:2b24b5729cd74e3b1efe261bfd732fd1995b0e64d76587a3d90762d77cc58c77", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.22", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libusbx-1.0.22-4.fc31.aarch64.rpm", + "checksum": "sha256:c80fbc5228457b9b1978b098f47d2a66ca5636526965847078edb6f1c302e392", + "check_gpg": true + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "21.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libuser-0.62-21.fc31.aarch64.rpm", + "checksum": "sha256:4fe97b617adfa7c0f97ba5b2b6e1c0d2e2b15c54ba8db66fc389cacc0f1b2b60", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "17.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libutempter-1.1.6-17.fc31.aarch64.rpm", + "checksum": "sha256:ea68ed6fc06f142c95e907b619a9696146dff1bba308773df12e412d8277eec0", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libuuid-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:7027d2c6a004469720e3c64eb7fcb2ace1fffd61ec4380afbf875d59a3876f3a", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "8.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libverto-0.3.0-8.fc31.aarch64.rpm", + "checksum": "sha256:af589a85af85270c027bacb5ccaf88c93378d364a7c1436ee7bca1290cf762f7", + "check_gpg": true + }, + { + "name": "libwayland-client", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-client-1.17.0-2.fc31.aarch64.rpm", + "checksum": "sha256:1472adb267192ca8a323e544fd9749c4765334fc5779e8de4ee583eff77fc078", + "check_gpg": true + }, + { + "name": "libwayland-cursor", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.aarch64.rpm", + "checksum": "sha256:f34cde4c2bd6ab93a697d8c350e98f4d70f897f74fee35a06c25eb4b98f46c9a", + "check_gpg": true + }, + { + "name": "libwayland-egl", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.aarch64.rpm", + "checksum": "sha256:aa3658efc21bcc6d79344eeeaf20285407f6f3b90d905a66a37a8cfc835b2a61", + "check_gpg": true + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxcb-1.13.1-3.fc31.aarch64.rpm", + "checksum": "sha256:a2f6ae2742a2aac3f5bb5f1ad5cfa4d9b8fdf7cfd01033246027db7064abaa1f", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxcrypt-4.4.10-1.fc31.aarch64.rpm", + "checksum": "sha256:e35e30f6477652a93d3c02ec86faa233884aefb2ff9fcf4058909d9736fb2d15", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.8.4", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.aarch64.rpm", + "checksum": "sha256:57a9aff6b8d5ecdb66015e4dfcec0a171ae18751e1d5f9a339361cc45b9a8e2f", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.9", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libxml2-2.9.9-3.fc31.aarch64.rpm", + "checksum": "sha256:7c66a9a33e131200e13a638613ec054a94be901399424df27a0b4f94532ee36d", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libyaml-0.2.2-2.fc31.aarch64.rpm", + "checksum": "sha256:80434d5f64abdd521330153fc0c983c5923a833ab59f57ec3bc3a8cf1d748c8c", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/libzstd-1.4.2-1.fc31.aarch64.rpm", + "checksum": "sha256:a39fb89e06572d188309dc4daf1d23e21be190e59f9ef8ff3c3ccceaefe505da", + "check_gpg": true + }, + { + "name": "linux-atm-libs", + "epoch": 0, + "version": "2.5.1", + "release": "25.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/linux-atm-libs-2.5.1-25.fc31.aarch64.rpm", + "checksum": "sha256:253f9f540248a0bdd537ee8ea4f670752af74d85be98ea81593a30710e1e5808", + "check_gpg": true + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20190923", + "release": "102.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/linux-firmware-20190923-102.fc31.noarch.rpm", + "checksum": "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47", + "check_gpg": true + }, + { + "name": "linux-firmware-whence", + "epoch": 0, + "version": "20190923", + "release": "102.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/linux-firmware-whence-20190923-102.fc31.noarch.rpm", + "checksum": "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70", + "check_gpg": true + }, + { + "name": "lmdb-libs", + "epoch": 0, + "version": "0.9.23", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lmdb-libs-0.9.23-3.fc31.aarch64.rpm", + "checksum": "sha256:284d46ebd3d3fd4a915b624a75e9931c948807fcb13fed01681e623d0ba7b1ce", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lua-libs-5.3.5-6.fc31.aarch64.rpm", + "checksum": "sha256:a084b365795c7262fa09b2fc590dfbabbbf30cb9c1c7f9b5274eae4c5d761482", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/l/lz4-libs-1.9.1-1.fc31.aarch64.rpm", + "checksum": "sha256:1c2edf26d16b55bac2824452c1c584ff52acf8477920f384f6019f647c241450", + "check_gpg": true + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.8.4", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/man-db-2.8.4-5.fc31.aarch64.rpm", + "checksum": "sha256:84fa6157b3e986b9ce67cc03bfed4e2b96fa7d075df70e038fbcd2b486737d35", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mkpasswd-5.5.2-1.fc31.aarch64.rpm", + "checksum": "sha256:f8e118c35bb5f8ae3dca517ef38c7a38bbdd491011af9e1c4c5c7523f13e6f9c", + "check_gpg": true + }, + { + "name": "mokutil", + "epoch": 1, + "version": "0.3.0", + "release": "11.fc30", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mokutil-0.3.0-11.fc30.aarch64.rpm", + "checksum": "sha256:332ef2695e27190536747f53bab03ba5df0ca903564f6071623d99fa524d6d2f", + "check_gpg": true + }, + { + "name": "mozjs60", + "epoch": 0, + "version": "60.9.0", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mozjs60-60.9.0-3.fc31.aarch64.rpm", + "checksum": "sha256:caeade153eb315a95e8bcdd20ceda84ed6bf624809a30ad0886caf9cf90c6d40", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/m/mpfr-3.1.6-5.fc31.aarch64.rpm", + "checksum": "sha256:339895e6b901ff4c81966893ec7da9848da3acea26e5b202033bfb79dfcbb6cb", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-6.1-12.20190803.fc31.aarch64.rpm", + "checksum": "sha256:1d530a23a8ea2b831068593fe6aa7a32923c6276504def5a85ad065aaac9ac5f", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm", + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.aarch64.rpm", + "checksum": "sha256:264828f11342a94f056fb27a2e78fc5e14226230b3dbac8bdad6a4c8598fd24f", + "check_gpg": true + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.55.20160912git.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/net-tools-2.0-0.55.20160912git.fc31.aarch64.rpm", + "checksum": "sha256:504b334756e12eefb42d44e53da61fb4321b860e3b5f380b5c21c5c3784a8c75", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/nettle-3.5.1-3.fc31.aarch64.rpm", + "checksum": "sha256:9c8771c8c5eb38351dd30f994133bc9149ec93813d1a7c2cd2dd8f7dc7431d49", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/n/npth-1.6-3.fc31.aarch64.rpm", + "checksum": "sha256:f1419585dbb27e3bf76aab5a5f8fb9580816a7a0e7fc93377b97646a0259a794", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openldap-2.4.47-3.fc31.aarch64.rpm", + "checksum": "sha256:d8d28daa56fa4894a767957aa9948cad6d274e2b70d8b10aa69d9356c8a22eff", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssh-8.0p1-8.fc31.1.aarch64.rpm", + "checksum": "sha256:424e1777ae71117d20055ffa5f0ed2ead59a8076528450cf7536e18c70624bd8", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.aarch64.rpm", + "checksum": "sha256:eb35167d6095465a58611b80853213af5838f271b75fa1a5e3c051a04a9078a7", + "check_gpg": true + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssh-server-8.0p1-8.fc31.1.aarch64.rpm", + "checksum": "sha256:0a80e2a0ede76c98337c220f01dfadacace037b48f09fe072c5d33f356e50b8e", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-1.1.1d-2.fc31.aarch64.rpm", + "checksum": "sha256:54c024db70df7966590050dfc5dcc1315174e10c3a57e118ea10178238d70889", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.aarch64.rpm", + "checksum": "sha256:a7f5877c9ebfb44347765c7deb266e53fdd62403ccc0a7ff17fdb101bc28caff", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.aarch64.rpm", + "checksum": "sha256:dc6b772101df9f3029c2cd80a10663663ad877e129c8d724902f5cc9f1785e60", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/o/os-prober-1.77-3.fc31.aarch64.rpm", + "checksum": "sha256:4d4853ac550a0cfc5b3bcbcb7f12c81461393a6aa0e96a23648985f8a7f2e8e2", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.aarch64.rpm", + "checksum": "sha256:6d4c3ae013d07e50d085b3419dfd41ac79ba11ada62d8c4570d21764ef6f11ec", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.aarch64.rpm", + "checksum": "sha256:bf92fc95c282da9c76018679d9180fb6c98aaf864f66bbef630941040579f92b", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "18.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pam-1.3.1-18.fc31.aarch64.rpm", + "checksum": "sha256:eb1992de281538771ba578a65eabe620dc35aef6c621d8c5351a2ba38ac440f4", + "check_gpg": true + }, + { + "name": "pango", + "epoch": 0, + "version": "1.44.6", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pango-1.44.6-1.fc31.aarch64.rpm", + "checksum": "sha256:5ba547e1c2c515b3ca091e04c0a6b15b297e25b567a6613a07bd2bee41f39684", + "check_gpg": true + }, + { + "name": "parted", + "epoch": 0, + "version": "3.2.153", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/parted-3.2.153-1.fc31.aarch64.rpm", + "checksum": "sha256:855131926b9a3764835de3e7171b9ce579847ce161f3ba8406a5b6fdfa781f55", + "check_gpg": true + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/passwd-0.80-6.fc31.aarch64.rpm", + "checksum": "sha256:07f4ccd9f3cb20ceb4483adb673adfef15394b246bd93a84f169eb07acb68d71", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.43", + "release": "2.fc31.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pcre-8.43-2.fc31.1.aarch64.rpm", + "checksum": "sha256:44a92faf198bf015f5e94cf42ae615215fe0a6c0697b1f6c32d205bd450e7ce4", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.33", + "release": "14.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pcre2-10.33-14.fc31.aarch64.rpm", + "checksum": "sha256:b0d153ea83902561a9e60c9c244a497c3b19a9c4e40cf9e8437d0221af0f2ca3", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pigz-2.4-5.fc31.aarch64.rpm", + "checksum": "sha256:0ae87f94df2e114f287d60e9041ac159349f51322e32eeefa19a96db0acb78e7", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pinentry-1.1.0-6.fc31.aarch64.rpm", + "checksum": "sha256:ee3977f4ee783225903f964c60932795d8c11307043e73527b394dec02487047", + "check_gpg": true + }, + { + "name": "pixman", + "epoch": 0, + "version": "0.38.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/pixman-0.38.4-1.fc31.aarch64.rpm", + "checksum": "sha256:0b8baef3612880639ed59ae79475086aac8ce236fd35977e0d87305d0bb9a529", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/policycoreutils-2.9-5.fc31.aarch64.rpm", + "checksum": "sha256:974bdde5f821c071bcbe0de191677981685cb8290952be75a7ab15747988a99e", + "check_gpg": true + }, + { + "name": "polkit", + "epoch": 0, + "version": "0.116", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/polkit-0.116-4.fc31.aarch64.rpm", + "checksum": "sha256:e4174ec224296d315b8a43af9d252180d87dd6b5512873649dca4822150b6628", + "check_gpg": true + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.116", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/polkit-libs-0.116-4.fc31.aarch64.rpm", + "checksum": "sha256:cf480f0df368b3cc9f36e42d5d573afa93fcb3889614dee172c0ad367785f520", + "check_gpg": true + }, + { + "name": "polkit-pkla-compat", + "epoch": 0, + "version": "0.1", + "release": "15.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/polkit-pkla-compat-0.1-15.fc31.aarch64.rpm", + "checksum": "sha256:6075f3af3dc794c7c91fc4e46e8b286ff6094156516eca1caee5c3b299aea9bd", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "18.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/popt-1.16-18.fc31.aarch64.rpm", + "checksum": "sha256:d2be7b0f17350a8a0f301617cb1d7b024076bc16986abaab94453ec1cee1f1f2", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/procps-ng-3.3.15-6.fc31.aarch64.rpm", + "checksum": "sha256:9ff53c6f07da3adeaa20da76c1c78b886710b460db7a316415f8bc9182096fb0", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm", + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm", + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-3.7.4-5.fc31.aarch64.rpm", + "checksum": "sha256:84365601f93db7fda27e4d89826d4893830572e98df35275abdf15659cfe3fc5", + "check_gpg": true + }, + { + "name": "python3-asn1crypto", + "epoch": 0, + "version": "0.24.0", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-asn1crypto-0.24.0-7.fc31.noarch.rpm", + "checksum": "sha256:73a7249de97f0ad66bc1a867ac5b5d08b741ab152d4dd7ce45cc231d64126b58", + "check_gpg": true + }, + { + "name": "python3-attrs", + "epoch": 0, + "version": "19.1.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-attrs-19.1.0-2.fc31.noarch.rpm", + "checksum": "sha256:4cca3f986ddbd38cfbfb6d1c8d336a1aaed78f7da1f38356ce1e034ba35ec492", + "check_gpg": true + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-audit-3.0-0.12.20190507gitf58ec40.fc31.aarch64.rpm", + "checksum": "sha256:700acef9fc8051726700645696fd67b0fc3b7fec08290ef9c2964fe7a9d3e8cd", + "check_gpg": true + }, + { + "name": "python3-babel", + "epoch": 0, + "version": "2.7.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-babel-2.7.0-2.fc31.noarch.rpm", + "checksum": "sha256:e17ef6f7d4f1869ff5813d6f8f2983cd6f5cd23d4a666b7ae19154636e911644", + "check_gpg": true + }, + { + "name": "python3-boto", + "epoch": 0, + "version": "2.49.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-boto-2.49.0-1.fc31.noarch.rpm", + "checksum": "sha256:9b49fdc41ba8f1284c63db29b8bda002a7256a54fdba14c9d3fccd852b8547b1", + "check_gpg": true + }, + { + "name": "python3-cffi", + "epoch": 0, + "version": "1.12.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-cffi-1.12.3-1.fc31.aarch64.rpm", + "checksum": "sha256:f0b9a02ed639d2cff7a85262d440c65f2fa2ba318166b45d969a2802f102535b", + "check_gpg": true + }, + { + "name": "python3-chardet", + "epoch": 0, + "version": "3.0.4", + "release": "10.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-chardet-3.0.4-10.fc31.noarch.rpm", + "checksum": "sha256:ee6dbb4914a35ee8a816ecde34d29221e3f4622324f6287c328e8ac22ae572ad", + "check_gpg": true + }, + { + "name": "python3-configobj", + "epoch": 0, + "version": "5.0.6", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-configobj-5.0.6-16.fc31.noarch.rpm", + "checksum": "sha256:cdc526097cd2fecb75e44ad11a69b10eb7804f310298c064c3b931515d4f3d5c", + "check_gpg": true + }, + { + "name": "python3-cryptography", + "epoch": 0, + "version": "2.6.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-cryptography-2.6.1-2.fc31.aarch64.rpm", + "checksum": "sha256:d35fe17711337362bdf09540523bddbdc16406d0ff7650043a3cdd1cfc222ae8", + "check_gpg": true + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.8.0", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dateutil-2.8.0-3.fc31.noarch.rpm", + "checksum": "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653", + "check_gpg": true + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.8", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dbus-1.2.8-6.fc31.aarch64.rpm", + "checksum": "sha256:a314b2a8ed8a9e7e80aedfb1f76c75910d0da9549d072c424c2dddbe63a09874", + "check_gpg": true + }, + { + "name": "python3-distro", + "epoch": 0, + "version": "1.4.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-distro-1.4.0-2.fc31.noarch.rpm", + "checksum": "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.9", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-dnf-plugins-core-4.0.9-1.fc31.noarch.rpm", + "checksum": "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-gpg-1.13.1-3.fc31.aarch64.rpm", + "checksum": "sha256:d429648fe5b233a46fdbfc31a283ca4b6be5177ae84f3e7e63fec5f9bebd17d1", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.aarch64.rpm", + "checksum": "sha256:edee134762456246cd8de577597e350b60a04bc43ac4a47622b9a263ddd74cf2", + "check_gpg": true + }, + { + "name": "python3-idna", + "epoch": 0, + "version": "2.8", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-idna-2.8-2.fc31.noarch.rpm", + "checksum": "sha256:8221111dc9a9aa5c68805f153c3fbe5314c8a0f335af29685733b958253dd278", + "check_gpg": true + }, + { + "name": "python3-jinja2", + "epoch": 0, + "version": "2.10.1", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jinja2-2.10.1-2.fc31.noarch.rpm", + "checksum": "sha256:1135e96b6f9ed29e4ed4c0f060876891a244442a503f0b18ab238589da20d464", + "check_gpg": true + }, + { + "name": "python3-jsonpatch", + "epoch": 0, + "version": "1.21", + "release": "8.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jsonpatch-1.21-8.fc31.noarch.rpm", + "checksum": "sha256:e98119ac7a707287668e7a9a74ef2809ee5f555af04f52775367e428e08dbb33", + "check_gpg": true + }, + { + "name": "python3-jsonpointer", + "epoch": 0, + "version": "1.10", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jsonpointer-1.10-16.fc31.noarch.rpm", + "checksum": "sha256:2d9a2e736dd5231df3c5c748ce0ba5a75a409dacfe73f14676781f32d565a7df", + "check_gpg": true + }, + { + "name": "python3-jsonschema", + "epoch": 0, + "version": "3.0.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jsonschema-3.0.2-1.fc31.noarch.rpm", + "checksum": "sha256:047f9e29fcfa56be98ca3f42249f3ccb2a93df99f2438e3983e2064025f0d79d", + "check_gpg": true + }, + { + "name": "python3-jwt", + "epoch": 0, + "version": "1.7.1", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-jwt-1.7.1-3.fc31.noarch.rpm", + "checksum": "sha256:143c50c0663f963c7689c1cec43b81cf1433d5d3b67eb8233ba06506c1b3e095", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.aarch64.rpm", + "checksum": "sha256:7a5aadb5da769b563cf1e548d8cabd26c00720a67df7e4a445a5a9ae5b0891b8", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.aarch64.rpm", + "checksum": "sha256:436c2f09d2de629da293ab82af47b7697f4a8c151127cbd993d0e8605a4f423c", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libs-3.7.4-5.fc31.aarch64.rpm", + "checksum": "sha256:fe6f4202a8e7e52add27c6d2e2af65884a974bcde4b5e89979badb782719ca1a", + "check_gpg": true + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libselinux-2.9-5.fc31.aarch64.rpm", + "checksum": "sha256:67bbf2a262929b1b4c2fb9532c471da5ab2c0f642b0df770cf947c0131a9e1ad", + "check_gpg": true + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-libsemanage-2.9-3.fc31.aarch64.rpm", + "checksum": "sha256:32cc0c295cd013db597cd31868736be3708edb25ab1952fdd0ed879ec5e8d191", + "check_gpg": true + }, + { + "name": "python3-markupsafe", + "epoch": 0, + "version": "1.1.1", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-markupsafe-1.1.1-2.fc31.aarch64.rpm", + "checksum": "sha256:47383173cbb135c2590998a4e82c6f9d40a516450d2fbd1e169ace92337b7fd5", + "check_gpg": true + }, + { + "name": "python3-oauthlib", + "epoch": 0, + "version": "3.0.2", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-oauthlib-3.0.2-2.fc31.noarch.rpm", + "checksum": "sha256:f85469c0c19ce86e8fdd0dd5a3e6e5c9b78e3436ae9ce70ba86b2b4a3794f693", + "check_gpg": true + }, + { + "name": "python3-pbr", + "epoch": 0, + "version": "5.1.2", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pbr-5.1.2-4.fc31.noarch.rpm", + "checksum": "sha256:d90abd2b8eca279a2120bf7836503745d36432630258925292ee7dacfabe4c92", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "name": "python3-ply", + "epoch": 0, + "version": "3.11", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-ply-3.11-3.fc31.noarch.rpm", + "checksum": "sha256:1b65944efe48ba0cca34011891480a1db29a7e95dad058376bfca34d68fb0791", + "check_gpg": true + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-policycoreutils-2.9-5.fc31.noarch.rpm", + "checksum": "sha256:5a7e957102a23c9924398fe45f5cdec66edcd10adcad7130d6ebf02c2706ad49", + "check_gpg": true + }, + { + "name": "python3-prettytable", + "epoch": 0, + "version": "0.7.2", + "release": "18.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-prettytable-0.7.2-18.fc31.noarch.rpm", + "checksum": "sha256:682af90a049fa78429d5ebd194700609f762e59ceb6c4ca28b17e7f4fd1683aa", + "check_gpg": true + }, + { + "name": "python3-psutil", + "epoch": 0, + "version": "5.6.3", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-psutil-5.6.3-2.fc31.aarch64.rpm", + "checksum": "sha256:7a9bc8d2c0fa14162f9c8d48344b30f268ccc53c8d03cdf6cfe67468a090a37c", + "check_gpg": true + }, + { + "name": "python3-pyasn1", + "epoch": 0, + "version": "0.4.4", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pyasn1-0.4.4-5.fc31.noarch.rpm", + "checksum": "sha256:b49419bed59686efde6fc04953c2ab64a46c2bae46227a872bb3a823538c636d", + "check_gpg": true + }, + { + "name": "python3-pycparser", + "epoch": 0, + "version": "2.14", + "release": "20.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pycparser-2.14-20.fc31.noarch.rpm", + "checksum": "sha256:6ed7f318c5e93b59254d7b7652131f33db713eeb61f52413f21e533069ed24bf", + "check_gpg": true + }, + { + "name": "python3-pyrsistent", + "epoch": 0, + "version": "0.15.4", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pyrsistent-0.15.4-1.fc31.aarch64.rpm", + "checksum": "sha256:32d56c08f75c7626f1a0efd7aa05ca2ea3649d55445b5ac42a2f7f10fad8b46b", + "check_gpg": true + }, + { + "name": "python3-pyserial", + "epoch": 0, + "version": "3.4", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pyserial-3.4-3.fc31.noarch.rpm", + "checksum": "sha256:32cc578c8da626a8c1a5316a59d482967a32547be6c077f73fb90e11fb0f1e6a", + "check_gpg": true + }, + { + "name": "python3-pysocks", + "epoch": 0, + "version": "1.7.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pysocks-1.7.0-2.fc31.noarch.rpm", + "checksum": "sha256:d54f02fc39b3e87253808f665918d26ffe901f1228e25121c908661b47ba266b", + "check_gpg": true + }, + { + "name": "python3-pytz", + "epoch": 0, + "version": "2019.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pytz-2019.2-1.fc31.noarch.rpm", + "checksum": "sha256:6c6f1152899318bdc0500cfb0b0cdbbc19ba0e017b5888ece1358250caa2629f", + "check_gpg": true + }, + { + "name": "python3-pyyaml", + "epoch": 0, + "version": "5.1.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-pyyaml-5.1.2-1.fc31.aarch64.rpm", + "checksum": "sha256:f958a85509e118c832458a5f502e5d59695eb3df96ae0bd603203a82d188b2ae", + "check_gpg": true + }, + { + "name": "python3-requests", + "epoch": 0, + "version": "2.22.0", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-requests-2.22.0-3.fc31.noarch.rpm", + "checksum": "sha256:1e049e86c5dd5c4d6737d47dd194d553ffbd65c81a4077cf6e1029a0fde80fb5", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-rpm-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:513e24bc56f483b171664ea4dec51cc0cce1f9cc8f4939cde8a65ea976ed952d", + "check_gpg": true + }, + { + "name": "python3-rsa", + "epoch": 0, + "version": "3.4.2", + "release": "10.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-rsa-3.4.2-10.fc31.noarch.rpm", + "checksum": "sha256:19a9152e410c8fdd62220e79dcf4dc3d143ca04c75a09c332066ad8cc94b972e", + "check_gpg": true + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-setools-4.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:1f44142da3bf5e09b98488b40ed8a2d5dbd841c36bb4553749e6d65d7fe5c15c", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.12.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-six-1.12.0-2.fc31.noarch.rpm", + "checksum": "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-unbound-1.9.3-1.fc31.aarch64.rpm", + "checksum": "sha256:b6498a7a8056483e1d42362b1fb27bd6c54ed7cc7bd180cae20d64a13ae4c88c", + "check_gpg": true + }, + { + "name": "python3-urllib3", + "epoch": 0, + "version": "1.25.3", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/p/python3-urllib3-1.25.3-4.fc31.noarch.rpm", + "checksum": "sha256:78b600621e00f4a0acc8f58de056ae9393ce4e1cded56837b4e557c1bc84b06b", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.aarch64.rpm", + "checksum": "sha256:5f2bdb8f9a18257ee80a243e1be96e3ef6fa660e37fdf7b4443d8e8f7abf86ef", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/readline-8.0-3.fc31.aarch64.rpm", + "checksum": "sha256:d02489175567be57a48a3edf5deb66d100e99df73a37b26062fea4d6af014cbc", + "check_gpg": true + }, + { + "name": "rest", + "epoch": 0, + "version": "0.8.1", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rest-0.8.1-6.fc31.aarch64.rpm", + "checksum": "sha256:8d00fa6cdfcc955dc4e14d0f8b6ba6217d2dd0334ea0e1aa44694c9e0ad0b06d", + "check_gpg": true + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rootfiles-8.1-25.fc31.noarch.rpm", + "checksum": "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:ae9a3e144f31b6172d266b984c8385fba94bdcf3002d3182a4118f8d29f5f718", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:c958419128c1330b50c741113394b147da1ccda055ab1ee19fabc199f68971ea", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-libs-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:7292bf1d13ef336ef411ef695f87c7c7ecd21a13e05c86cc475930ca61117503", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-plugin-selinux-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:6ce37675749741e4ea05e934aa5b7376d596cc117bd317199d0a15e2236aa058", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:d01f7e794c3dd3f38de1b69fd360db4b858826eba4e6fd4edc79c8a74774ab00", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.aarch64.rpm", + "checksum": "sha256:46acc45e148eea376c3aa8e83a4d3bf1cf66fa35ccc670f592017428ce75ca77", + "check_gpg": true + }, + { + "name": "rsync", + "epoch": 0, + "version": "3.1.3", + "release": "9.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/r/rsync-3.1.3-9.fc31.aarch64.rpm", + "checksum": "sha256:05438efee748687851bce7c03d79ac8823e5142145b4dced03195b0a9a459aae", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "4.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sed-4.5-4.fc31.aarch64.rpm", + "checksum": "sha256:5d87d829a1d939c520b25f1c790cd1f3bd6c8b769f4f21303ec5e16a3b509445", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.4", + "release": "37.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/selinux-policy-3.14.4-37.fc31.noarch.rpm", + "checksum": "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.4", + "release": "37.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/selinux-policy-targeted-3.14.4-37.fc31.noarch.rpm", + "checksum": "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.3", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm", + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "16.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/shadow-utils-4.6-16.fc31.aarch64.rpm", + "checksum": "sha256:2ad8824aa48378aa741fbd863104d950ad4f669566af2d4f433be6d9afd8ead6", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.14", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/shared-mime-info-1.14-1.fc31.aarch64.rpm", + "checksum": "sha256:c05d42fba4fc1ebc2df9ee49f971c744937d8b307626c90b3cf79bf91619863a", + "check_gpg": true + }, + { + "name": "shim-aa64", + "epoch": 0, + "version": "15", + "release": "8", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/shim-aa64-15-8.aarch64.rpm", + "checksum": "sha256:ac7985d2591bc2bd1d90efdb68751a3d7435cf902b3895cb308e830ce48f1f44", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.29.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.aarch64.rpm", + "checksum": "sha256:81169dd168c02aed3b1e57e5af16ec3dbdfb74c15373ee40e9eec5aac60a3d25", + "check_gpg": true + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sssd-client-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:054f0851c8b42292ac5c24ea649764b022dacc6d40a00e333abacc67e2c2a215", + "check_gpg": true + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sssd-common-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:d9641a59b33831e32fa61f3479152d5eac33e0526b32e67ae33f1c1102c69d4b", + "check_gpg": true + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sssd-kcm-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:121e2a4e79f6dbf37af2182cb12ff28345db993a7f83de344f6f5fbcf5a705a5", + "check_gpg": true + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sssd-nfs-idmap-2.2.2-1.fc31.aarch64.rpm", + "checksum": "sha256:077e72f02d2eef2a2bfd8ab057527a02005806e731303fbff1e28f61716f2943", + "check_gpg": true + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.8.28", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/sudo-1.8.28-1.fc31.aarch64.rpm", + "checksum": "sha256:cb478c89af0caac9a40c32a2b4a48242b16ff9e2e6daa375b2de88e396f524dd", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-243-4.gitef67743.fc31.aarch64.rpm", + "checksum": "sha256:af594688a568ec4db7dae9d60390dce1ab547527bbf2415752f211de3748b97f", + "check_gpg": true + }, + { + "name": "systemd-bootchart", + "epoch": 0, + "version": "233", + "release": "5.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-bootchart-233-5.fc31.aarch64.rpm", + "checksum": "sha256:0ff534e46d982b5a213eb562e3cb30d1935a25a9f433d325457069eec9131217", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.aarch64.rpm", + "checksum": "sha256:7487afe052c79100e906a4d2cb2ee1043410ca10a8e60a65d95776f63a513595", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.aarch64.rpm", + "checksum": "sha256:e29356f3ea2554e8be23401a08a941f406d337cf6b38e7ee99926fb9b3f1f541", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm", + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/s/systemd-udev-243-4.gitef67743.fc31.aarch64.rpm", + "checksum": "sha256:a436dca481707ca10a0c5bb189d9a25ff76c4f66f1d32b0847dc6d13ba46c17a", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/tar-1.32-2.fc31.aarch64.rpm", + "checksum": "sha256:e0af6b40e51fe0b9f68367355219aa56717888d2a07c10a001cc8667de1a5a2f", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/trousers-0.3.13-13.fc31.aarch64.rpm", + "checksum": "sha256:7bd78cde4202401947dea928274579074bc78fdae096057e788c1b6a86a10ecc", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/trousers-lib-0.3.13-13.fc31.aarch64.rpm", + "checksum": "sha256:6728ee255cb8c80b85f6d610bfd795025939a77d2591ad61fe1c4f9d657c386e", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/tss2-1331-2.fc31.aarch64.rpm", + "checksum": "sha256:42945876fb8932bad3e50b50349af4bdabe713d7be1c8efc1b0f7b042e556aa5", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm", + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/u/unbound-libs-1.9.3-1.fc31.aarch64.rpm", + "checksum": "sha256:acd149c4bf17a15db75fca1f19e34784a9ed275e19c0721aa78f5eb94797a685", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/u/util-linux-2.34-3.fc31.aarch64.rpm", + "checksum": "sha256:07cd9ddc7f7a16dc9739647af90706cfbcf70b281f5474e622b0769e211e0dc8", + "check_gpg": true + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.1.2102", + "release": "1.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/v/vim-minimal-8.1.2102-1.fc31.aarch64.rpm", + "checksum": "sha256:477474e74c5f30884f0a4571445ecf987b521f61139fc0ba7d516e075f47e7ce", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "15.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/w/which-2.21-15.fc31.aarch64.rpm", + "checksum": "sha256:06cf2f5439e0ce2c7fc655bdf4868d3c47a5fbe5b71e9dc305232a7732896e14", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm", + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.1.0", + "release": "2.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xfsprogs-5.1.0-2.fc31.aarch64.rpm", + "checksum": "sha256:a4f7846fb262ad61885f64b8a354f9303fe5ce129378e4781eefa0bffdef828e", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.27", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm", + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xz-5.2.4-6.fc31.aarch64.rpm", + "checksum": "sha256:58a44f9472918a511d3eee0b3f08926dab2ebf4994584403bd196e6c92a06f5a", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/x/xz-libs-5.2.4-6.fc31.aarch64.rpm", + "checksum": "sha256:9ed0b44834b6a637c70aa00ab243aecb534f9aea461e1388652ab039898239c8", + "check_gpg": true + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/y/yum-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.2", + "release": "3.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.aarch64.rpm", + "checksum": "sha256:c1893a7c51ebb0371b87e2179d6e0e5d0fbb71acb4234cf4adc293af11c75578", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "19.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/Packages/z/zlib-1.2.11-19.fc31.aarch64.rpm", + "checksum": "sha256:f23f467c4099be4cb4dfdc1be13b7a7bb6e8c6da7c21182658a034827b64df39", + "check_gpg": true + } + ], + "checksums": { + "0": "sha256:706bc46aa3b2b716d9ff69963273d4462995f3632f71968812842ab79812a999" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac ro biosdevname=0 net.ifnames=0" + }, + "bootloader": "unknown", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "initrd": "/boot/initramfs-5.3.7-301.fc31.aarch64.img", + "linux": "/boot/vmlinuz-5.3.7-301.fc31.aarch64", + "options": "$kernelopts", + "title": "Fedora (5.3.7-301.fc31.aarch64) 31 (Thirty One)", + "version": "5.3.7-301.fc31.aarch64" + } + ], + "fstab": [ + [ + "UUID=46BB-8120", + "/boot/efi", + "vfat", + "umask=0077,shortname=winnt", + "0", + "2" + ], + [ + "UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "/", + "ext4", + "defaults", + "1", + "1" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:992:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:997:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "polkitd:x:994:", + "redhat:x:1000:", + "render:x:996:", + "root:x:0:", + "ssh_keys:x:998:", + "sshd:x:74:", + "sys:x:3:", + "systemd-coredump:x:995:", + "systemd-journal:x:190:", + "systemd-network:x:192:", + "systemd-resolve:x:193:", + "systemd-timesync:x:993:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:999:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "qcow2", + "os-release": { + "ANSI_COLOR": "0;34", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:fedoraproject:fedora:31", + "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f31/system-administrators-guide/", + "HOME_URL": "https://fedoraproject.org/", + "ID": "fedora", + "LOGO": "fedora-logo-icon", + "NAME": "Fedora", + "PLATFORM_ID": "platform:f31", + "PRETTY_NAME": "Fedora 31 (Cloud Edition)", + "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy", + "REDHAT_BUGZILLA_PRODUCT": "Fedora", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "31", + "REDHAT_SUPPORT_PRODUCT": "Fedora", + "REDHAT_SUPPORT_PRODUCT_VERSION": "31", + "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help", + "VARIANT": "Cloud Edition", + "VARIANT_ID": "cloud", + "VERSION": "31 (Cloud Edition)", + "VERSION_CODENAME": "", + "VERSION_ID": "31" + }, + "packages": [ + "NetworkManager-1.20.4-1.fc31.aarch64", + "NetworkManager-libnm-1.20.4-1.fc31.aarch64", + "abattis-cantarell-fonts-0.111-3.fc31.noarch", + "acl-2.2.53-4.fc31.aarch64", + "adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch", + "adwaita-cursor-theme-3.34.0-1.fc31.noarch", + "adwaita-icon-theme-3.34.0-1.fc31.noarch", + "alternatives-1.11-5.fc31.aarch64", + "at-spi2-atk-2.34.1-1.fc31.aarch64", + "at-spi2-core-2.34.0-1.fc31.aarch64", + "atk-2.34.1-1.fc31.aarch64", + "audit-3.0-0.12.20190507gitf58ec40.fc31.aarch64", + "audit-libs-3.0-0.12.20190507gitf58ec40.fc31.aarch64", + "avahi-libs-0.7-20.fc31.aarch64", + "basesystem-11-8.fc31.noarch", + "bash-5.0.7-3.fc31.aarch64", + "brotli-1.0.7-6.fc31.aarch64", + "bzip2-1.0.8-1.fc31.aarch64", + "bzip2-libs-1.0.8-1.fc31.aarch64", + "c-ares-1.15.0-4.fc31.aarch64", + "ca-certificates-2019.2.32-3.fc31.noarch", + "cairo-1.16.0-6.fc31.aarch64", + "cairo-gobject-1.16.0-6.fc31.aarch64", + "checkpolicy-2.9-2.fc31.aarch64", + "chrony-3.5-4.fc31.aarch64", + "cloud-init-17.1-11.fc31.noarch", + "cloud-utils-growpart-0.31-3.fc31.noarch", + "colord-libs-1.4.4-2.fc31.aarch64", + "coreutils-8.31-4.fc31.aarch64", + "coreutils-common-8.31-4.fc31.aarch64", + "cpio-2.12-12.fc31.aarch64", + "cracklib-2.9.6-21.fc31.aarch64", + "cracklib-dicts-2.9.6-21.fc31.aarch64", + "crypto-policies-20190816-4.gitbb9bf99.fc31.noarch", + "cryptsetup-libs-2.2.1-1.fc31.aarch64", + "cups-libs-2.2.12-2.fc31.aarch64", + "curl-7.66.0-1.fc31.aarch64", + "cyrus-sasl-lib-2.1.27-2.fc31.aarch64", + "dbus-1.12.16-3.fc31.aarch64", + "dbus-broker-21-6.fc31.aarch64", + "dbus-common-1.12.16-3.fc31.noarch", + "dbus-libs-1.12.16-3.fc31.aarch64", + "dbxtool-8-10.fc31.aarch64", + "dconf-0.34.0-1.fc31.aarch64", + "dejavu-fonts-common-2.37-2.fc31.noarch", + "dejavu-sans-fonts-2.37-2.fc31.noarch", + "deltarpm-3.6.2-2.fc31.aarch64", + "device-mapper-1.02.163-2.fc31.aarch64", + "device-mapper-libs-1.02.163-2.fc31.aarch64", + "dhcp-client-4.4.1-15.fc31.aarch64", + "dhcp-common-4.4.1-15.fc31.noarch", + "diffutils-3.7-3.fc31.aarch64", + "dnf-4.2.9-5.fc31.noarch", + "dnf-data-4.2.9-5.fc31.noarch", + "dnf-plugins-core-4.0.9-1.fc31.noarch", + "dracut-049-27.git20181204.fc31.1.aarch64", + "dracut-config-generic-049-27.git20181204.fc31.1.aarch64", + "e2fsprogs-1.45.3-1.fc31.aarch64", + "e2fsprogs-libs-1.45.3-1.fc31.aarch64", + "efi-filesystem-4-3.fc31.noarch", + "efibootmgr-16-6.fc31.aarch64", + "efivar-libs-37-1.fc30.aarch64", + "elfutils-default-yama-scope-0.177-1.fc31.noarch", + "elfutils-libelf-0.177-1.fc31.aarch64", + "elfutils-libs-0.177-1.fc31.aarch64", + "expat-2.2.8-1.fc31.aarch64", + "fedora-gpg-keys-31-1.noarch", + "fedora-release-cloud-31-1.noarch", + "fedora-release-common-31-1.noarch", + "fedora-repos-31-1.noarch", + "file-5.37-3.fc31.aarch64", + "file-libs-5.37-3.fc31.aarch64", + "filesystem-3.12-2.fc31.aarch64", + "findutils-4.6.0-24.fc31.aarch64", + "fipscheck-1.5.0-7.fc31.aarch64", + "fipscheck-lib-1.5.0-7.fc31.aarch64", + "fontconfig-2.13.92-3.fc31.aarch64", + "fontpackages-filesystem-1.44-25.fc31.noarch", + "freetype-2.10.0-3.fc31.aarch64", + "fribidi-1.0.5-4.fc31.aarch64", + "fuse-libs-2.9.9-8.fc31.aarch64", + "gawk-5.0.1-5.fc31.aarch64", + "gcr-3.33.4-1.fc31.aarch64", + "gcr-base-3.33.4-1.fc31.aarch64", + "gdbm-libs-1.18.1-1.fc31.aarch64", + "gdk-pixbuf2-2.40.0-1.fc31.aarch64", + "gdk-pixbuf2-modules-2.40.0-1.fc31.aarch64", + "geolite2-city-20190806-1.fc31.noarch", + "geolite2-country-20190806-1.fc31.noarch", + "gettext-0.20.1-2.fc31.aarch64", + "gettext-libs-0.20.1-2.fc31.aarch64", + "git-core-2.23.0-1.fc31.aarch64", + "glib-networking-2.62.1-1.fc31.aarch64", + "glib2-2.62.1-1.fc31.aarch64", + "glibc-2.30-5.fc31.aarch64", + "glibc-common-2.30-5.fc31.aarch64", + "glibc-langpack-en-2.30-5.fc31.aarch64", + "gmp-6.1.2-10.fc31.aarch64", + "gnome-keyring-3.34.0-1.fc31.aarch64", + "gnupg2-2.2.17-2.fc31.aarch64", + "gnupg2-smime-2.2.17-2.fc31.aarch64", + "gnutls-3.6.10-1.fc31.aarch64", + "gpg-pubkey-3c3359c4-5c6ae44d", + "gpgme-1.13.1-3.fc31.aarch64", + "graphite2-1.3.13-1.fc31.aarch64", + "grep-3.3-3.fc31.aarch64", + "groff-base-1.22.3-20.fc31.aarch64", + "grub2-common-2.02-100.fc31.noarch", + "grub2-efi-aa64-2.02-100.fc31.aarch64", + "grub2-tools-2.02-100.fc31.aarch64", + "grub2-tools-extra-2.02-100.fc31.aarch64", + "grub2-tools-minimal-2.02-100.fc31.aarch64", + "grubby-8.40-36.fc31.aarch64", + "gsettings-desktop-schemas-3.34.0-1.fc31.aarch64", + "gtk-update-icon-cache-3.24.12-3.fc31.aarch64", + "gtk3-3.24.12-3.fc31.aarch64", + "gzip-1.10-1.fc31.aarch64", + "harfbuzz-2.6.1-2.fc31.aarch64", + "heat-cfntools-1.4.2-9.fc31.noarch", + "hicolor-icon-theme-0.17-7.fc31.noarch", + "hostname-3.20-9.fc31.aarch64", + "ima-evm-utils-1.2.1-2.fc31.aarch64", + "initscripts-10.02-2.fc31.aarch64", + "ipcalc-0.2.5-3.fc31.aarch64", + "iproute-5.3.0-1.fc31.aarch64", + "iproute-tc-5.3.0-1.fc31.aarch64", + "iptables-libs-1.8.3-5.fc31.aarch64", + "iputils-20190515-3.fc31.aarch64", + "jansson-2.12-4.fc31.aarch64", + "jasper-libs-2.0.14-9.fc31.aarch64", + "jbigkit-libs-2.1-17.fc31.aarch64", + "json-c-0.13.1-6.fc31.aarch64", + "json-glib-1.4.4-3.fc31.aarch64", + "kbd-2.0.4-14.fc31.aarch64", + "kbd-legacy-2.0.4-14.fc31.noarch", + "kbd-misc-2.0.4-14.fc31.noarch", + "kernel-core-5.3.7-301.fc31.aarch64", + "keyutils-libs-1.6-3.fc31.aarch64", + "kmod-26-4.fc31.aarch64", + "kmod-libs-26-4.fc31.aarch64", + "kpartx-0.8.0-3.fc31.aarch64", + "krb5-libs-1.17-45.fc31.aarch64", + "langpacks-core-en-2.0-7.fc31.noarch", + "langpacks-en-2.0-7.fc31.noarch", + "lcms2-2.9-6.fc31.aarch64", + "less-551-2.fc31.aarch64", + "libX11-1.6.8-3.fc31.aarch64", + "libX11-common-1.6.8-3.fc31.noarch", + "libXau-1.0.9-2.fc31.aarch64", + "libXcomposite-0.4.4-17.fc31.aarch64", + "libXcursor-1.1.15-6.fc31.aarch64", + "libXdamage-1.1.4-17.fc31.aarch64", + "libXext-1.3.4-2.fc31.aarch64", + "libXfixes-5.0.3-10.fc31.aarch64", + "libXft-2.3.3-2.fc31.aarch64", + "libXi-1.7.10-2.fc31.aarch64", + "libXinerama-1.1.4-4.fc31.aarch64", + "libXrandr-1.5.2-2.fc31.aarch64", + "libXrender-0.9.10-10.fc31.aarch64", + "libXtst-1.2.3-10.fc31.aarch64", + "libacl-2.2.53-4.fc31.aarch64", + "libarchive-3.4.0-1.fc31.aarch64", + "libargon2-20171227-3.fc31.aarch64", + "libassuan-2.5.3-2.fc31.aarch64", + "libattr-2.4.48-7.fc31.aarch64", + "libbasicobjects-0.1.1-43.fc31.aarch64", + "libblkid-2.34-3.fc31.aarch64", + "libcap-2.26-6.fc31.aarch64", + "libcap-ng-0.7.9-8.fc31.aarch64", + "libcollection-0.7.0-43.fc31.aarch64", + "libcom_err-1.45.3-1.fc31.aarch64", + "libcomps-0.1.11-3.fc31.aarch64", + "libcroco-0.6.13-2.fc31.aarch64", + "libcurl-7.66.0-1.fc31.aarch64", + "libdatrie-0.2.9-10.fc31.aarch64", + "libdb-5.3.28-38.fc31.aarch64", + "libdb-utils-5.3.28-38.fc31.aarch64", + "libdhash-0.5.0-43.fc31.aarch64", + "libdnf-0.35.3-6.fc31.aarch64", + "libedit-3.1-28.20190324cvs.fc31.aarch64", + "libepoxy-1.5.3-4.fc31.aarch64", + "libevent-2.1.8-7.fc31.aarch64", + "libfdisk-2.34-3.fc31.aarch64", + "libffi-3.1-23.fc31.aarch64", + "libgcc-9.2.1-1.fc31.aarch64", + "libgcrypt-1.8.5-1.fc31.aarch64", + "libgomp-9.2.1-1.fc31.aarch64", + "libgpg-error-1.36-2.fc31.aarch64", + "libgusb-0.3.0-5.fc31.aarch64", + "libidn2-2.2.0-2.fc31.aarch64", + "libini_config-1.3.1-43.fc31.aarch64", + "libjpeg-turbo-2.0.2-4.fc31.aarch64", + "libkcapi-1.1.5-1.fc31.aarch64", + "libkcapi-hmaccalc-1.1.5-1.fc31.aarch64", + "libksba-1.3.5-10.fc31.aarch64", + "libldb-2.0.7-1.fc31.aarch64", + "libmaxminddb-1.2.0-8.fc31.aarch64", + "libmetalink-0.1.3-9.fc31.aarch64", + "libmnl-1.0.4-10.fc31.aarch64", + "libmodman-2.0.1-20.fc31.aarch64", + "libmodulemd1-1.8.15-3.fc31.aarch64", + "libmount-2.34-3.fc31.aarch64", + "libndp-1.7-4.fc31.aarch64", + "libnfsidmap-2.4.1-1.rc1.fc31.aarch64", + "libnghttp2-1.39.2-1.fc31.aarch64", + "libnl3-3.5.0-1.fc31.aarch64", + "libnsl2-1.2.0-5.20180605git4a062cf.fc31.aarch64", + "libpath_utils-0.2.1-43.fc31.aarch64", + "libpcap-1.9.0-4.fc31.aarch64", + "libpipeline-1.5.1-3.fc31.aarch64", + "libpng-1.6.37-2.fc31.aarch64", + "libproxy-0.4.15-14.fc31.aarch64", + "libpsl-0.21.0-2.fc31.aarch64", + "libpwquality-1.4.1-1.fc31.aarch64", + "libref_array-0.1.5-43.fc31.aarch64", + "librepo-1.10.5-1.fc31.aarch64", + "libreport-filesystem-2.10.1-2.fc31.noarch", + "libseccomp-2.4.1-1.fc31.aarch64", + "libsecret-0.19.1-1.fc31.aarch64", + "libselinux-2.9-5.fc31.aarch64", + "libselinux-utils-2.9-5.fc31.aarch64", + "libsemanage-2.9-3.fc31.aarch64", + "libsepol-2.9-2.fc31.aarch64", + "libsigsegv-2.11-8.fc31.aarch64", + "libsmartcols-2.34-3.fc31.aarch64", + "libsolv-0.7.5-3.fc31.aarch64", + "libsoup-2.68.2-1.fc31.aarch64", + "libss-1.45.3-1.fc31.aarch64", + "libssh-0.9.0-6.fc31.aarch64", + "libssh-config-0.9.0-6.fc31.noarch", + "libsss_autofs-2.2.2-1.fc31.aarch64", + "libsss_certmap-2.2.2-1.fc31.aarch64", + "libsss_idmap-2.2.2-1.fc31.aarch64", + "libsss_nss_idmap-2.2.2-1.fc31.aarch64", + "libsss_sudo-2.2.2-1.fc31.aarch64", + "libstdc++-9.2.1-1.fc31.aarch64", + "libtalloc-2.3.0-1.fc31.aarch64", + "libtasn1-4.14-2.fc31.aarch64", + "libtdb-1.4.2-1.fc31.aarch64", + "libtevent-0.10.1-1.fc31.aarch64", + "libtextstyle-0.20.1-2.fc31.aarch64", + "libthai-0.1.28-3.fc31.aarch64", + "libtiff-4.0.10-6.fc31.aarch64", + "libtirpc-1.1.4-2.rc3.fc31.aarch64", + "libunistring-0.9.10-6.fc31.aarch64", + "libusbx-1.0.22-4.fc31.aarch64", + "libuser-0.62-21.fc31.aarch64", + "libutempter-1.1.6-17.fc31.aarch64", + "libuuid-2.34-3.fc31.aarch64", + "libverto-0.3.0-8.fc31.aarch64", + "libwayland-client-1.17.0-2.fc31.aarch64", + "libwayland-cursor-1.17.0-2.fc31.aarch64", + "libwayland-egl-1.17.0-2.fc31.aarch64", + "libxcb-1.13.1-3.fc31.aarch64", + "libxcrypt-4.4.10-1.fc31.aarch64", + "libxkbcommon-0.8.4-2.fc31.aarch64", + "libxml2-2.9.9-3.fc31.aarch64", + "libyaml-0.2.2-2.fc31.aarch64", + "libzstd-1.4.2-1.fc31.aarch64", + "linux-atm-libs-2.5.1-25.fc31.aarch64", + "linux-firmware-20190923-102.fc31.noarch", + "linux-firmware-whence-20190923-102.fc31.noarch", + "lmdb-libs-0.9.23-3.fc31.aarch64", + "lua-libs-5.3.5-6.fc31.aarch64", + "lz4-libs-1.9.1-1.fc31.aarch64", + "man-db-2.8.4-5.fc31.aarch64", + "mkpasswd-5.5.2-1.fc31.aarch64", + "mokutil-0.3.0-11.fc30.aarch64", + "mozjs60-60.9.0-3.fc31.aarch64", + "mpfr-3.1.6-5.fc31.aarch64", + "ncurses-6.1-12.20190803.fc31.aarch64", + "ncurses-base-6.1-12.20190803.fc31.noarch", + "ncurses-libs-6.1-12.20190803.fc31.aarch64", + "net-tools-2.0-0.55.20160912git.fc31.aarch64", + "nettle-3.5.1-3.fc31.aarch64", + "npth-1.6-3.fc31.aarch64", + "openldap-2.4.47-3.fc31.aarch64", + "openssh-8.0p1-8.fc31.1.aarch64", + "openssh-clients-8.0p1-8.fc31.1.aarch64", + "openssh-server-8.0p1-8.fc31.1.aarch64", + "openssl-1.1.1d-2.fc31.aarch64", + "openssl-libs-1.1.1d-2.fc31.aarch64", + "openssl-pkcs11-0.4.10-2.fc31.aarch64", + "os-prober-1.77-3.fc31.aarch64", + "p11-kit-0.23.16.1-2.fc31.aarch64", + "p11-kit-trust-0.23.16.1-2.fc31.aarch64", + "pam-1.3.1-18.fc31.aarch64", + "pango-1.44.6-1.fc31.aarch64", + "parted-3.2.153-1.fc31.aarch64", + "passwd-0.80-6.fc31.aarch64", + "pcre-8.43-2.fc31.1.aarch64", + "pcre2-10.33-14.fc31.aarch64", + "pigz-2.4-5.fc31.aarch64", + "pinentry-1.1.0-6.fc31.aarch64", + "pixman-0.38.4-1.fc31.aarch64", + "policycoreutils-2.9-5.fc31.aarch64", + "polkit-0.116-4.fc31.aarch64", + "polkit-libs-0.116-4.fc31.aarch64", + "polkit-pkla-compat-0.1-15.fc31.aarch64", + "popt-1.16-18.fc31.aarch64", + "procps-ng-3.3.15-6.fc31.aarch64", + "publicsuffix-list-dafsa-20190417-2.fc31.noarch", + "python-pip-wheel-19.1.1-4.fc31.noarch", + "python-setuptools-wheel-41.2.0-1.fc31.noarch", + "python-unversioned-command-3.7.4-5.fc31.noarch", + "python3-3.7.4-5.fc31.aarch64", + "python3-asn1crypto-0.24.0-7.fc31.noarch", + "python3-attrs-19.1.0-2.fc31.noarch", + "python3-audit-3.0-0.12.20190507gitf58ec40.fc31.aarch64", + "python3-babel-2.7.0-2.fc31.noarch", + "python3-boto-2.49.0-1.fc31.noarch", + "python3-cffi-1.12.3-1.fc31.aarch64", + "python3-chardet-3.0.4-10.fc31.noarch", + "python3-configobj-5.0.6-16.fc31.noarch", + "python3-cryptography-2.6.1-2.fc31.aarch64", + "python3-dateutil-2.8.0-3.fc31.noarch", + "python3-dbus-1.2.8-6.fc31.aarch64", + "python3-distro-1.4.0-2.fc31.noarch", + "python3-dnf-4.2.9-5.fc31.noarch", + "python3-dnf-plugins-core-4.0.9-1.fc31.noarch", + "python3-gpg-1.13.1-3.fc31.aarch64", + "python3-hawkey-0.35.3-6.fc31.aarch64", + "python3-idna-2.8-2.fc31.noarch", + "python3-jinja2-2.10.1-2.fc31.noarch", + "python3-jsonpatch-1.21-8.fc31.noarch", + "python3-jsonpointer-1.10-16.fc31.noarch", + "python3-jsonschema-3.0.2-1.fc31.noarch", + "python3-jwt-1.7.1-3.fc31.noarch", + "python3-libcomps-0.1.11-3.fc31.aarch64", + "python3-libdnf-0.35.3-6.fc31.aarch64", + "python3-libs-3.7.4-5.fc31.aarch64", + "python3-libselinux-2.9-5.fc31.aarch64", + "python3-libsemanage-2.9-3.fc31.aarch64", + "python3-markupsafe-1.1.1-2.fc31.aarch64", + "python3-oauthlib-3.0.2-2.fc31.noarch", + "python3-pbr-5.1.2-4.fc31.noarch", + "python3-pip-19.1.1-4.fc31.noarch", + "python3-ply-3.11-3.fc31.noarch", + "python3-policycoreutils-2.9-5.fc31.noarch", + "python3-prettytable-0.7.2-18.fc31.noarch", + "python3-psutil-5.6.3-2.fc31.aarch64", + "python3-pyasn1-0.4.4-5.fc31.noarch", + "python3-pycparser-2.14-20.fc31.noarch", + "python3-pyrsistent-0.15.4-1.fc31.aarch64", + "python3-pyserial-3.4-3.fc31.noarch", + "python3-pysocks-1.7.0-2.fc31.noarch", + "python3-pytz-2019.2-1.fc31.noarch", + "python3-pyyaml-5.1.2-1.fc31.aarch64", + "python3-requests-2.22.0-3.fc31.noarch", + "python3-rpm-4.15.0-6.fc31.aarch64", + "python3-rsa-3.4.2-10.fc31.noarch", + "python3-setools-4.2.2-1.fc31.aarch64", + "python3-setuptools-41.2.0-1.fc31.noarch", + "python3-six-1.12.0-2.fc31.noarch", + "python3-unbound-1.9.3-1.fc31.aarch64", + "python3-urllib3-1.25.3-4.fc31.noarch", + "qrencode-libs-4.0.2-4.fc31.aarch64", + "readline-8.0-3.fc31.aarch64", + "rest-0.8.1-6.fc31.aarch64", + "rootfiles-8.1-25.fc31.noarch", + "rpm-4.15.0-6.fc31.aarch64", + "rpm-build-libs-4.15.0-6.fc31.aarch64", + "rpm-libs-4.15.0-6.fc31.aarch64", + "rpm-plugin-selinux-4.15.0-6.fc31.aarch64", + "rpm-plugin-systemd-inhibit-4.15.0-6.fc31.aarch64", + "rpm-sign-libs-4.15.0-6.fc31.aarch64", + "rsync-3.1.3-9.fc31.aarch64", + "sed-4.5-4.fc31.aarch64", + "selinux-policy-3.14.4-37.fc31.noarch", + "selinux-policy-targeted-3.14.4-37.fc31.noarch", + "setup-2.13.3-2.fc31.noarch", + "shadow-utils-4.6-16.fc31.aarch64", + "shared-mime-info-1.14-1.fc31.aarch64", + "shim-aa64-15-8.aarch64", + "sqlite-libs-3.29.0-2.fc31.aarch64", + "sssd-client-2.2.2-1.fc31.aarch64", + "sssd-common-2.2.2-1.fc31.aarch64", + "sssd-kcm-2.2.2-1.fc31.aarch64", + "sssd-nfs-idmap-2.2.2-1.fc31.aarch64", + "sudo-1.8.28-1.fc31.aarch64", + "systemd-243-4.gitef67743.fc31.aarch64", + "systemd-bootchart-233-5.fc31.aarch64", + "systemd-libs-243-4.gitef67743.fc31.aarch64", + "systemd-pam-243-4.gitef67743.fc31.aarch64", + "systemd-rpm-macros-243-4.gitef67743.fc31.noarch", + "systemd-udev-243-4.gitef67743.fc31.aarch64", + "tar-1.32-2.fc31.aarch64", + "trousers-0.3.13-13.fc31.aarch64", + "trousers-lib-0.3.13-13.fc31.aarch64", + "tss2-1331-2.fc31.aarch64", + "tzdata-2019c-1.fc31.noarch", + "unbound-libs-1.9.3-1.fc31.aarch64", + "util-linux-2.34-3.fc31.aarch64", + "vim-minimal-8.1.2102-1.fc31.aarch64", + "which-2.21-15.fc31.aarch64", + "whois-nls-5.5.2-1.fc31.noarch", + "xfsprogs-5.1.0-2.fc31.aarch64", + "xkeyboard-config-2.27-2.fc31.noarch", + "xz-5.2.4-6.fc31.aarch64", + "xz-libs-5.2.4-6.fc31.aarch64", + "yum-4.2.9-5.fc31.noarch", + "zchunk-libs-1.1.2-3.fc31.aarch64", + "zlib-1.2.11-19.fc31.aarch64" + ], + "partition-table": "gpt", + "partition-table-id": "8DFDFF87-C96E-EA48-A3A6-9408F1F6B1EF", + "partitions": [ + { + "bootable": false, + "fstype": "vfat", + "label": "EFI\\ System", + "partuuid": "02C1E068-1D2F-4DA3-91FD-8DD76A955C9D", + "size": 498073600, + "start": 1048576, + "type": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B", + "uuid": "46BB-8120" + }, + { + "bootable": false, + "fstype": "ext4", + "label": null, + "partuuid": "8D760010-FAAE-46D1-9E5B-4A2EAC5030CD", + "size": 1647296000, + "start": 500170752, + "type": "0FC63DAF-8483-4772-8E79-3D69D8477DE4", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:995:992::/var/lib/chrony:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "polkitd:x:997:994:User for polkitd:/:/sbin/nologin", + "redhat:x:1000:1000::/home/redhat:/bin/bash", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:998:995:systemd Core Dumper:/:/sbin/nologin", + "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "systemd-timesync:x:996:993:systemd Time Synchronization:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:999:999:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/boot/System.map-5.3.7-301.fc31.aarch64": ".M.......", + "/boot/efi/EFI": ".M.......", + "/boot/efi/EFI/fedora/grubaa64.efi": ".......T.", + "/boot/initramfs-5.3.7-301.fc31.aarch64.img": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/proc": ".M.......", + "/run/cryptsetup": ".M.......", + "/sys": ".M.......", + "/var/log/btmp": ".M.......", + "/var/log/journal": ".M....G..", + "/var/log/lastlog": ".M....G.." + }, + "missing": [] + }, + "services-disabled": [ + "arp-ethers.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "console-getty.service", + "debug-shell.service", + "exit.target", + "fstrim.timer", + "halt.target", + "kexec.target", + "loadmodules.service", + "nis-domainname.service", + "poweroff.target", + "proc-sys-fs-binfmt_misc.mount", + "rdisc.service", + "remote-cryptsetup.target", + "runlevel0.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-boot-check-no-failures.service", + "systemd-bootchart.service", + "systemd-network-generator.service", + "systemd-networkd-wait-online.service", + "systemd-networkd.service", + "systemd-networkd.socket", + "systemd-pstore.service", + "systemd-resolved.service", + "systemd-time-wait-sync.service", + "systemd-timesyncd.service", + "tcsd.service" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "cloud-init.service", + "ctrl-alt-del.target", + "dbus-broker.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dbus.service", + "dbus.socket", + "dbxtool.service", + "dnf-makecache.timer", + "getty@.service", + "import-state.service", + "messagebus.service", + "reboot.target", + "remote-fs.target", + "runlevel6.target", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "unbound-anchor.timer" + ] + } +} \ No newline at end of file diff --git a/test/cases/fedora_31-x86_64-ami-boot.json b/test/cases/fedora_31-x86_64-ami-boot.json new file mode 100644 index 0000000..2c71c37 --- /dev/null +++ b/test/cases/fedora_31-x86_64-ami-boot.json @@ -0,0 +1,11579 @@ +{ + "boot": { + "type": "aws" + }, + "compose-request": { + "distro": "fedora-31", + "arch": "x86_64", + "image-type": "ami", + "repositories": [ + { + "baseurl": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ], + "filename": "image.raw", + "blueprint": {} + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcurl-7.66.0-1.fc31.x86_64.rpm" + }, + "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre2-10.33-14.fc31.x86_64.rpm" + }, + "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdatrie-0.2.9-10.fc31.x86_64.rpm" + }, + "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-firmware-20190923-102.fc31.noarch.rpm" + }, + "sha256:047f9e29fcfa56be98ca3f42249f3ccb2a93df99f2438e3983e2064025f0d79d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jsonschema-3.0.2-1.fc31.noarch.rpm" + }, + "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm" + }, + "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-6.fc31.x86_64.rpm" + }, + "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-six-1.12.0-2.fc31.noarch.rpm" + }, + "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-2.fc31.x86_64.rpm" + }, + "sha256:07a3523159719382e2bb9b83961bfe00836cc97f75a9706d02ad73dddb161856": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/chrony-3.5-4.fc31.x86_64.rpm" + }, + "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontconfig-2.13.92-3.fc31.x86_64.rpm" + }, + "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bash-5.0.7-3.fc31.x86_64.rpm" + }, + "sha256:0b54f374bcbe094dbc0d52d9661fe99ebff384026ce0ea39f2d6069e27bf8bdc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdhash-0.5.0-43.fc31.x86_64.rpm" + }, + "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-1.16.0-6.fc31.x86_64.rpm" + }, + "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.x86_64.rpm" + }, + "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.x86_64.rpm" + }, + "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnghttp2-1.39.2-1.fc31.x86_64.rpm" + }, + "sha256:0f26eca4ac936554818769fe32aca5e878af2616e83f836ec463e59eb4f9f1f9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcollection-0.7.0-43.fc31.x86_64.rpm" + }, + "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.x86_64.rpm" + }, + "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.x86_64.rpm" + }, + "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-common-2.30-5.fc31.x86_64.rpm" + }, + "sha256:1135e96b6f9ed29e4ed4c0f060876891a244442a503f0b18ab238589da20d464": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jinja2-2.10.1-2.fc31.noarch.rpm" + }, + "sha256:118548479396b007a80bc98e8cef770ea242ef6b20cd2922d595acd4c100946d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/polkit-libs-0.116-4.fc31.x86_64.rpm" + }, + "sha256:143c50c0663f963c7689c1cec43b81cf1433d5d3b67eb8233ba06506c1b3e095": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jwt-1.7.1-3.fc31.noarch.rpm" + }, + "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/graphite2-1.3.13-1.fc31.x86_64.rpm" + }, + "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-plugins-core-4.0.9-1.fc31.noarch.rpm" + }, + "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm" + }, + "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsmartcols-2.34-3.fc31.x86_64.rpm" + }, + "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-6.1-12.20190803.fc31.x86_64.rpm" + }, + "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-extra-2.02-100.fc31.x86_64.rpm" + }, + "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsigsegv-2.11-8.fc31.x86_64.rpm" + }, + "sha256:1b65944efe48ba0cca34011891480a1db29a7e95dad058376bfca34d68fb0791": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-ply-3.11-3.fc31.noarch.rpm" + }, + "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-misc-2.0.4-14.fc31.noarch.rpm" + }, + "sha256:1e049e86c5dd5c4d6737d47dd194d553ffbd65c81a4077cf6e1029a0fde80fb5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-requests-2.22.0-3.fc31.noarch.rpm" + }, + "sha256:1e5f14d26556e380ed129289c1b98d46d951966e548613b9c2ee0d3616ac96d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-modules-5.3.7-301.fc31.x86_64.rpm" + }, + "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gzip-1.10-1.fc31.x86_64.rpm" + }, + "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/acl-2.2.53-4.fc31.x86_64.rpm" + }, + "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm" + }, + "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/librepo-1.10.5-1.fc31.x86_64.rpm" + }, + "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-rpm-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.x86_64.rpm" + }, + "sha256:21ccdbe703caa6a08056d2bc75c1e184f811472a6e320e5af64b8757fcd07166": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/groff-base-1.22.3-20.fc31.x86_64.rpm" + }, + "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libfdisk-2.34-3.fc31.x86_64.rpm" + }, + "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-1.fc31.x86_64.rpm" + }, + "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libutempter-1.1.6-17.fc31.x86_64.rpm" + }, + "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/readline-8.0-3.fc31.x86_64.rpm" + }, + "sha256:22db6d1e1f34a43c3d045b6750ff3a32184d47c2aedf3dabc93640057de1f4fa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/less-551-2.fc31.x86_64.rpm" + }, + "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.x86_64.rpm" + }, + "sha256:239a9576864532edd325e72b62a10ef147a2bcc0a925079b19fb9cb74bab0dd7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/c-ares-1.15.0-4.fc31.x86_64.rpm" + }, + "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-c-0.13.1-6.fc31.x86_64.rpm" + }, + "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-3.7.4-5.fc31.x86_64.rpm" + }, + "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXfixes-5.0.3-10.fc31.x86_64.rpm" + }, + "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-1.6.8-3.fc31.x86_64.rpm" + }, + "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-2.fc31.noarch.rpm" + }, + "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libstdc++-9.2.1-1.fc31.x86_64.rpm" + }, + "sha256:2af3bbdab1f387ae7af2534846e33ab6d2ca7777399c64191f95699d576cd4ba": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/initscripts-10.02-2.fc31.x86_64.rpm" + }, + "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.x86_64.rpm" + }, + "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgpg-error-1.36-2.fc31.x86_64.rpm" + }, + "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shadow-utils-4.6-16.fc31.x86_64.rpm" + }, + "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/brotli-1.0.7-6.fc31.x86_64.rpm" + }, + "sha256:2c5b5ce5f6e6d1d79f35eab253a12e19aeb863f4fe8ded94013f76a9834689fb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.20.4-1.fc31.x86_64.rpm" + }, + "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm" + }, + "sha256:2cd5a709ff2c286b73f850469b1ee6baf9077b90ce3bacb8ba712430c6632350": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnftnl-1.1.3-2.fc31.x86_64.rpm" + }, + "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.x86_64.rpm" + }, + "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm" + }, + "sha256:2d9a2e736dd5231df3c5c748ce0ba5a75a409dacfe73f14676781f32d565a7df": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jsonpointer-1.10-16.fc31.noarch.rpm" + }, + "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXext-1.3.4-2.fc31.x86_64.rpm" + }, + "sha256:2e588b5133dc8cb26ff0226f66eb1be440c6b784ec6fa67a5f0516d8ccaf46f5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-cryptography-2.6.1-2.fc31.x86_64.rpm" + }, + "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-libs-5.37-3.fc31.x86_64.rpm" + }, + "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsepol-2.9-2.fc31.x86_64.rpm" + }, + "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm" + }, + "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/langpacks-en-2.0-7.fc31.noarch.rpm" + }, + "sha256:307275b46896d56d23f5da5ab77a299941e77165ff44e846d6620eee1158131c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_certmap-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/avahi-libs-0.7-20.fc31.x86_64.rpm" + }, + "sha256:32cc578c8da626a8c1a5316a59d482967a32547be6c077f73fb90e11fb0f1e6a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyserial-3.4-3.fc31.noarch.rpm" + }, + "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsolv-0.7.5-3.fc31.x86_64.rpm" + }, + "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.x86_64.rpm" + }, + "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/harfbuzz-2.6.1-2.fc31.x86_64.rpm" + }, + "sha256:33334afdde6c813b18c18897dca19fab5a2ce090eba0b5ea0a38f43f1081c190": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dhcp-client-4.4.1-15.fc31.x86_64.rpm" + }, + "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib-networking-2.62.1-1.fc31.x86_64.rpm" + }, + "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-2.30-5.fc31.x86_64.rpm" + }, + "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libarchive-3.4.0-1.fc31.x86_64.rpm" + }, + "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXft-2.3.3-2.fc31.x86_64.rpm" + }, + "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-3.33.4-1.fc31.x86_64.rpm" + }, + "sha256:34a9986b8b61812ceaf32ce3b189bd0b2cb4adaaf47d76ec1f50ce07c45b5675": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-config-generic-049-27.git20181204.fc31.1.x86_64.rpm" + }, + "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dejavu-fonts-common-2.37-2.fc31.noarch.rpm" + }, + "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm" + }, + "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm" + }, + "sha256:35c348bcd91fa114ad459b888131e5e5509259cffce33f22c44f92e57e9e5919": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dbus-1.2.8-6.fc31.x86_64.rpm" + }, + "sha256:3629a3675c7dadd89f3b3d855e7c57d8f93d30d59fa00fdeabfc5e5e39ca4937": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/checkpolicy-2.9-2.fc31.x86_64.rpm" + }, + "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libs-3.7.4-5.fc31.x86_64.rpm" + }, + "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libargon2-20171227-3.fc31.x86_64.rpm" + }, + "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.x86_64.rpm" + }, + "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libevent-2.1.8-7.fc31.x86_64.rpm" + }, + "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-2.2.17-2.fc31.x86_64.rpm" + }, + "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-31-1.noarch.rpm" + }, + "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcc-9.2.1-1.fc31.x86_64.rpm" + }, + "sha256:422625da0fbb99cc4da8eebebff892c6e73a87c81a33190f7a17e344f6bb709e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_autofs-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rest-0.8.1-6.fc31.x86_64.rpm" + }, + "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grep-3.3-3.fc31.x86_64.rpm" + }, + "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nettle-3.5.1-3.fc31.x86_64.rpm" + }, + "sha256:430f2f71be063eb9d04fe38659f62e29f47c9c878f9985d0569cb49e9c89ebc0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmaxminddb-1.2.0-8.fc31.x86_64.rpm" + }, + "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.x86_64.rpm" + }, + "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.x86_64.rpm" + }, + "sha256:45bf4bef479712936db1d6859b043d13e6cad41c851b6e621fc315b39ecfa14b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libndp-1.7-4.fc31.x86_64.rpm" + }, + "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mkpasswd-5.5.2-1.fc31.x86_64.rpm" + }, + "sha256:469d12368377399b8eaa7ec8cf1b6378ab18476b4a2b61b79091510a8945c6aa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-43.fc31.x86_64.rpm" + }, + "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zlib-1.2.11-19.fc31.x86_64.rpm" + }, + "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm" + }, + "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXdamage-1.1.4-17.fc31.x86_64.rpm" + }, + "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtiff-4.0.10-6.fc31.x86_64.rpm" + }, + "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm" + }, + "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm" + }, + "sha256:4cca3f986ddbd38cfbfb6d1c8d336a1aaed78f7da1f38356ce1e034ba35ec492": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-attrs-19.1.0-2.fc31.noarch.rpm" + }, + "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtasn1-4.14-2.fc31.x86_64.rpm" + }, + "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.10-1.fc31.x86_64.rpm" + }, + "sha256:4f9bbd08f6019b3482342d616d6b04e6481924ea34fbfe8d30ef63402a92e9b1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-nfs-idmap-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-5.37-3.fc31.x86_64.rpm" + }, + "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm" + }, + "sha256:5593277fa685adba864393da8faf76950d6d8fb1483af036cdc08d8437c387bb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtevent-0.10.1-1.fc31.x86_64.rpm" + }, + "sha256:55c47c63deb00a9126c068299c01dfbdd39d58c6962138b862b92f5c7af8c898": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/parted-3.2.153-1.fc31.x86_64.rpm" + }, + "sha256:561014bd90810d512b4098c8e1d3ca05aa8c6a74bc258b3b7e3e2fd36a1ed157": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/plymouth-core-libs-0.9.4-10.20191001gita8aad27.fc31.x86_64.rpm" + }, + "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libss-1.45.3-1.fc31.x86_64.rpm" + }, + "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jbigkit-libs-2.1-17.fc31.x86_64.rpm" + }, + "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libthai-0.1.28-3.fc31.x86_64.rpm" + }, + "sha256:5a7e957102a23c9924398fe45f5cdec66edcd10adcad7130d6ebf02c2706ad49": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-policycoreutils-2.9-5.fc31.noarch.rpm" + }, + "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgomp-9.2.1-1.fc31.x86_64.rpm" + }, + "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-8.0p1-8.fc31.1.x86_64.rpm" + }, + "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/krb5-libs-1.17-45.fc31.x86_64.rpm" + }, + "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.02-100.fc31.x86_64.rpm" + }, + "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-udev-243-4.gitef67743.fc31.x86_64.rpm" + }, + "sha256:5d8d55e12443628c7a1915648845663e4aed1863805854de0adadd89772eda2a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-markupsafe-1.1.1-2.fc31.x86_64.rpm" + }, + "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-1.12.16-3.fc31.x86_64.rpm" + }, + "sha256:5e07e49fdacc1f52b583ee685d03bf5ce045e9d34a323bd26607148a3937a9ce": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/plymouth-0.9.4-10.20191001gita8aad27.fc31.x86_64.rpm" + }, + "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdnf-0.35.3-6.fc31.x86_64.rpm" + }, + "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libffi-3.1-23.fc31.x86_64.rpm" + }, + "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/os-prober-1.77-3.fc31.x86_64.rpm" + }, + "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-3.fc31.x86_64.rpm" + }, + "sha256:63ff108f557096a9724053c37e37d3c2af1a1ec0b33124480b3742ff3da46292": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-decorator-4.4.0-2.fc31.noarch.rpm" + }, + "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-2.fc31.x86_64.rpm" + }, + "sha256:669250ad47aad5939cf4d1b88036fd95a94845d8e0bbdb05e933f3d2fe262fea": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qemu-img-4.1.0-2.fc31.x86_64.rpm" + }, + "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsecret-0.19.1-1.fc31.x86_64.rpm" + }, + "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libusbx-1.0.22-4.fc31.x86_64.rpm" + }, + "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libunistring-0.9.10-6.fc31.x86_64.rpm" + }, + "sha256:6807ac3ae6b7c0ea3a085106cedb687f79edfda500feb747039dc112ed3c518f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gobject-base-3.34.0-3.fc31.x86_64.rpm" + }, + "sha256:682af90a049fa78429d5ebd194700609f762e59ceb6c4ca28b17e7f4fd1683aa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-prettytable-0.7.2-18.fc31.noarch.rpm" + }, + "sha256:687d00eb0b77446dbd78aaa0f4f99cc080c677930ad783120483614255264a3d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-client-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cpio-2.12-12.fc31.x86_64.rpm" + }, + "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpwquality-1.4.1-1.fc31.x86_64.rpm" + }, + "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm" + }, + "sha256:6b694ee239a2e3f38c401e975de392e3731ad8b18be5a3249ea02f19e87cb5cb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-common-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm" + }, + "sha256:6c1f9dc11de4d3af4d4c418b4556ee9659011d587e9da44bb039cb30ac326841": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.x86_64.rpm" + }, + "sha256:6c6f1152899318bdc0500cfb0b0cdbbc19ba0e017b5888ece1358250caa2629f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pytz-2019.2-1.fc31.noarch.rpm" + }, + "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmount-2.34-3.fc31.x86_64.rpm" + }, + "sha256:6d8cbba688cea65fa80983cd7f140633e94cd58daa819342d1ae571a4ff174c6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/NetworkManager-1.20.4-1.fc31.x86_64.rpm" + }, + "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.x86_64.rpm" + }, + "sha256:6ed7f318c5e93b59254d7b7652131f33db713eeb61f52413f21e533069ed24bf": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pycparser-2.14-20.fc31.noarch.rpm" + }, + "sha256:6f2dae9b49bed8e1036a21aadd92ea2eb371979f6714ec2bce5742de051eeb14": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.30-5.fc31.x86_64.rpm" + }, + "sha256:6f729da330aaaea336458a8b6f3f1d2cc761693ba20bdda57fb9c49fb6f2120d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-43.fc31.x86_64.rpm" + }, + "sha256:6f7fbd57db9334a3cc7983d2e920afe92abe3f7e168702612d70e9ff405d79e6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libini_config-1.3.1-43.fc31.x86_64.rpm" + }, + "sha256:704ebfc50ace9417ed28f4530d778359a4c2f95d524c2e99346472245e30b548": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sudo-1.8.28-1.fc31.x86_64.rpm" + }, + "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm" + }, + "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpsl-0.21.0-2.fc31.x86_64.rpm" + }, + "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.x86_64.rpm" + }, + "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-2.fc31.x86_64.rpm" + }, + "sha256:72b5df6982fecdbee30d40bbb6042c72ed0f31b787f289b4a27f0dffc6f609fe": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iputils-20190515-3.fc31.x86_64.rpm" + }, + "sha256:73a7249de97f0ad66bc1a867ac5b5d08b741ab152d4dd7ce45cc231d64126b58": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-asn1crypto-0.24.0-7.fc31.noarch.rpm" + }, + "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-3.fc31.x86_64.rpm" + }, + "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libblkid-2.34-3.fc31.x86_64.rpm" + }, + "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jasper-libs-2.0.14-9.fc31.x86_64.rpm" + }, + "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dhcp-common-4.4.1-15.fc31.noarch.rpm" + }, + "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/y/yum-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-2.26-6.fc31.x86_64.rpm" + }, + "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib2-2.62.1-1.fc31.x86_64.rpm" + }, + "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.x86_64.rpm" + }, + "sha256:764699ea124f85a7afcf65a2f138e3821770f8aa1ef134e1813e2b04477f0b74": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/man-db-2.8.4-5.fc31.x86_64.rpm" + }, + "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk3-3.24.12-3.fc31.x86_64.rpm" + }, + "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libidn2-2.2.0-2.fc31.x86_64.rpm" + }, + "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/policycoreutils-2.9-5.fc31.x86_64.rpm" + }, + "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm" + }, + "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libs-0.177-1.fc31.x86_64.rpm" + }, + "sha256:78b600621e00f4a0acc8f58de056ae9393ce4e1cded56837b4e557c1bc84b06b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-urllib3-1.25.3-4.fc31.noarch.rpm" + }, + "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXinerama-1.1.4-4.fc31.x86_64.rpm" + }, + "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/findutils-4.6.0-24.fc31.x86_64.rpm" + }, + "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libyaml-0.2.2-2.fc31.x86_64.rpm" + }, + "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/popt-1.16-18.fc31.x86_64.rpm" + }, + "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.x86_64.rpm" + }, + "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-libs-1.8.3-5.fc31.x86_64.rpm" + }, + "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kpartx-0.8.0-3.fc31.x86_64.rpm" + }, + "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-base-3.33.4-1.fc31.x86_64.rpm" + }, + "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-unbound-1.9.3-1.fc31.x86_64.rpm" + }, + "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgusb-0.3.0-5.fc31.x86_64.rpm" + }, + "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/alternatives-1.11-5.fc31.x86_64.rpm" + }, + "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shared-mime-info-1.14-1.fc31.x86_64.rpm" + }, + "sha256:7fc8df6b10728f46c3e752c35f6777f17025bef30f61c67f76de2538888a5546": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-cffi-1.12.3-1.fc31.x86_64.rpm" + }, + "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodman-2.0.1-20.fc31.x86_64.rpm" + }, + "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/langpacks-core-en-2.0-7.fc31.noarch.rpm" + }, + "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-common-2.02-100.fc31.noarch.rpm" + }, + "sha256:8221111dc9a9aa5c68805f153c3fbe5314c8a0f335af29685733b958253dd278": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-idna-2.8-2.fc31.noarch.rpm" + }, + "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-5.3.28-38.fc31.x86_64.rpm" + }, + "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gawk-5.0.1-5.fc31.x86_64.rpm" + }, + "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm" + }, + "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-libs-5.2.4-6.fc31.x86_64.rpm" + }, + "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm" + }, + "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-243-4.gitef67743.fc31.x86_64.rpm" + }, + "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cups-libs-2.2.12-2.fc31.x86_64.rpm" + }, + "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libproxy-0.4.15-14.fc31.x86_64.rpm" + }, + "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-8.fc31.x86_64.rpm" + }, + "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lcms2-2.9-6.fc31.x86_64.rpm" + }, + "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/unbound-libs-1.9.3-1.fc31.x86_64.rpm" + }, + "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.x86_64.rpm" + }, + "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcroco-0.6.13-2.fc31.x86_64.rpm" + }, + "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:8bd2655674b40e89f5f63af7f8ffafd0e9064a3378cdca050262a7272678e8e5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnl3-3.5.0-1.fc31.x86_64.rpm" + }, + "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre-8.43-2.fc31.1.x86_64.rpm" + }, + "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/colord-libs-1.4.4-2.fc31.x86_64.rpm" + }, + "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm" + }, + "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/atk-2.34.1-1.fc31.x86_64.rpm" + }, + "sha256:8e9a916cd4843e7d09e3d1b814dbb55bb3b45672b1058044cfeaf8e19ad27bd7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-1.8.3-5.fc31.x86_64.rpm" + }, + "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libattr-2.4.48-7.fc31.x86_64.rpm" + }, + "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnutls-3.6.10-1.fc31.x86_64.rpm" + }, + "sha256:8f7b737ccb294fd5ba1d19075ea2a50a54e0265d8efa28aae0ade59d3e3a63be": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libldb-2.0.7-1.fc31.x86_64.rpm" + }, + "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.x86_64.rpm" + }, + "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libacl-2.2.53-4.fc31.x86_64.rpm" + }, + "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pixman-0.38.4-1.fc31.x86_64.rpm" + }, + "sha256:9247561bad35a8a2f8269b2bbbd28d1bf5e6fcde1fe78e1fc3c0e712513e9703": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtalloc-2.3.0-1.fc31.x86_64.rpm" + }, + "sha256:93161df6d62fe654c7cdba9ae36343d2549b437b27eac816a80f8d7c32a47162": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-kcm-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-firmware-whence-20190923-102.fc31.noarch.rpm" + }, + "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.x86_64.rpm" + }, + "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pinentry-1.1.0-6.fc31.x86_64.rpm" + }, + "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXi-1.7.10-2.fc31.x86_64.rpm" + }, + "sha256:95b45de2c57f35df43bff0c2ebe32c64183968b3a41c5673cfeeff5ece506b94": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuser-0.62-21.fc31.x86_64.rpm" + }, + "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.x86_64.rpm" + }, + "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-utils-2.9-5.fc31.x86_64.rpm" + }, + "sha256:9975496f29601a1c2cdb89e63aac698fdd8283ba3a52a9d91ead9473a0e064c8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tar-1.32-2.fc31.x86_64.rpm" + }, + "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-1.fc31.x86_64.rpm" + }, + "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/curl-7.66.0-1.fc31.x86_64.rpm" + }, + "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-repos-31-1.noarch.rpm" + }, + "sha256:9cc3e6534ae34343e7e4d056d46b9551da7d0a82c7bad378c3626d4b70d1bf62": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cloud-init-17.1-11.fc31.noarch.rpm" + }, + "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-bootchart-233-5.fc31.x86_64.rpm" + }, + "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libverto-0.3.0-8.fc31.x86_64.rpm" + }, + "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-3.fc31.noarch.rpm" + }, + "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm" + }, + "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcomps-0.1.11-3.fc31.x86_64.rpm" + }, + "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-1.fc31.x86_64.rpm" + }, + "sha256:9fea00b14943cac0e3b11ff3a319765168cf78b3cc58fdee7d5fe48246a0aa4d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm" + }, + "sha256:a188b5c697b734d4ed7d8f954b6875b9d401dc2a3c10bfd20d03db131ca73ab5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hostname-3.20-9.fc31.x86_64.rpm" + }, + "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcomposite-0.4.4-17.fc31.x86_64.rpm" + }, + "sha256:a1bd1b5a2c47e57957a77d32f4fd705de1df30557837cfbc83b8f284e4ee0456": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-2.9.6-21.fc31.x86_64.rpm" + }, + "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gmp-6.1.2-10.fc31.x86_64.rpm" + }, + "sha256:a349c40034b5a181cab1bd409384ddb901c274e110b16721d434f5bf42e92c0f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-firewall-0.7.2-1.fc31.noarch.rpm" + }, + "sha256:a41579023e1db3dec06679ebc7788ece92686ea2a23c78dd749c98ddbc82d419": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.23-3.fc31.x86_64.rpm" + }, + "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.02-100.fc31.noarch.rpm" + }, + "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gpgme-1.13.1-3.fc31.x86_64.rpm" + }, + "sha256:a6bab7030d3296875cb0cad2c30fb18042dab8ae070c9c6f97457bb0a5cc6316": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyyaml-5.1.2-1.fc31.x86_64.rpm" + }, + "sha256:a7071aa0068c9dff913c5f0523be3ffdd7f67b8f13e1ee2aa16e486b01aecc1c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libsemanage-2.9-3.fc31.x86_64.rpm" + }, + "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-client-1.17.0-2.fc31.x86_64.rpm" + }, + "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pam-1.3.1-18.fc31.x86_64.rpm" + }, + "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-38.fc31.x86_64.rpm" + }, + "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-1.fc31.x86_64.rpm" + }, + "sha256:aacf84989a0fe55366f6d37ddd1753b8c06e5640e9334805bf468777824a3ac0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setools-4.2.2-1.fc31.x86_64.rpm" + }, + "sha256:ab35a2d7f21aac1f33f9521607789e1c303fb63e4ea0681e9f724f86a1cc15c5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/firewalld-0.7.2-1.fc31.noarch.rpm" + }, + "sha256:ab5ad6fc076fd82be6a2ca9d77998fc06c2c9e7296de960b7549239efb9f971d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gobject-introspection-1.62.0-1.fc31.x86_64.rpm" + }, + "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.x86_64.rpm" + }, + "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-libs-26-4.fc31.x86_64.rpm" + }, + "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.x86_64.rpm" + }, + "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libksba-1.3.5-10.fc31.x86_64.rpm" + }, + "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpcap-1.9.0-4.fc31.x86_64.rpm" + }, + "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm" + }, + "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tss2-1331-2.fc31.x86_64.rpm" + }, + "sha256:b1094a9a9725546315d6eac7f792d5875a5f0c950cd84e43fc2fbb3e639ee43e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-slip-0.6.4-16.fc31.noarch.rpm" + }, + "sha256:b110ee65fa2dee77585ec77cab592cba2434d579f8afbed4d2a908ad1addccfc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dosfstools-4.1-9.fc31.x86_64.rpm" + }, + "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libepoxy-1.5.3-4.fc31.x86_64.rpm" + }, + "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fribidi-1.0.5-4.fc31.x86_64.rpm" + }, + "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libseccomp-2.4.1-1.fc31.x86_64.rpm" + }, + "sha256:b3c4cfdf820225133f4e9e600de3300ef0c7bac34139433505dd4482da52be22": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xfsprogs-5.1.0-2.fc31.x86_64.rpm" + }, + "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuuid-2.34-3.fc31.x86_64.rpm" + }, + "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openldap-2.4.47-3.fc31.x86_64.rpm" + }, + "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.x86_64.rpm" + }, + "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-2.02-100.fc31.x86_64.rpm" + }, + "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-9.fc31.x86_64.rpm" + }, + "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-2.9-5.fc31.x86_64.rpm" + }, + "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.x86_64.rpm" + }, + "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm" + }, + "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.x86_64.rpm" + }, + "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcb-1.13.1-3.fc31.x86_64.rpm" + }, + "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libassuan-2.5.3-2.fc31.x86_64.rpm" + }, + "sha256:bd2e7c9e3df976723ade08f16667b31044b678e62ee29e024ad193af6d9a28e1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-slip-dbus-0.6.4-16.fc31.noarch.rpm" + }, + "sha256:bd72cac3d1ef93cff067070925e5f339c720bef82c5ade4477388636fef53b91": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/plymouth-scripts-0.9.4-10.20191001gita8aad27.fc31.x86_64.rpm" + }, + "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/npth-1.6-3.fc31.x86_64.rpm" + }, + "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-1.1.1d-2.fc31.x86_64.rpm" + }, + "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-2.fc31.noarch.rpm" + }, + "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-8.31-4.fc31.x86_64.rpm" + }, + "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrandr-1.5.2-2.fc31.x86_64.rpm" + }, + "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.4-37.fc31.noarch.rpm" + }, + "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.x86_64.rpm" + }, + "sha256:c3aa4d794cef51ba9fcbf3750baed55aabfa36062a48f61149ccf03364a0d256": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-server-8.0p1-8.fc31.1.x86_64.rpm" + }, + "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:c459092a47bd2f904d9fe830735b512ef97b52785ee12abb2ba5c52465560f18": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/passwd-0.80-6.fc31.x86_64.rpm" + }, + "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-5.2.4-6.fc31.x86_64.rpm" + }, + "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXtst-1.2.3-10.fc31.x86_64.rpm" + }, + "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.x86_64.rpm" + }, + "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.x86_64.rpm" + }, + "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.x86_64.rpm" + }, + "sha256:c8e0a36410ebbd9db0a10e1fbecbae8f6288b9be86752d2e91725d5dd98ec65d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipcalc-0.2.5-3.fc31.x86_64.rpm" + }, + "sha256:c976ce75eda3dbe734117f6f558eafb2061bbef66086a04cb907a7ddbaea8bc2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmnl-1.0.4-10.fc31.x86_64.rpm" + }, + "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-2.0.4-14.fc31.x86_64.rpm" + }, + "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libzstd-1.4.2-1.fc31.x86_64.rpm" + }, + "sha256:ca6a71888b8d147342012c64533f61a41b26c788bbcd2844a2164ee007fac981": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libselinux-2.9-5.fc31.x86_64.rpm" + }, + "sha256:cab1b0c3bdae2a07e15b90b414f50753c759e325b6f0cddfa27895748c77f082": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/ebtables-legacy-2.0.10-37.fc31.x86_64.rpm" + }, + "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-6.fc31.x86_64.rpm" + }, + "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm" + }, + "sha256:cc02df4125eaebf642edd9bf00031ec09871c285816c03112909ef1005410eaa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm" + }, + "sha256:cdc526097cd2fecb75e44ad11a69b10eb7804f310298c064c3b931515d4f3d5c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-configobj-5.0.6-16.fc31.noarch.rpm" + }, + "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/filesystem-3.12-2.fc31.x86_64.rpm" + }, + "sha256:cef060334e8c21b5d2e3a87bdd0ad5ac1be389d7794735506b9d3c65c2923cd3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iproute-5.3.0-1.fc31.x86_64.rpm" + }, + "sha256:cf6506ad88ecaab89efde02eee218365a36981114638c03989ba2768457ae335": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/net-tools-2.0-0.55.20160912git.fc31.x86_64.rpm" + }, + "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-3.fc31.x86_64.rpm" + }, + "sha256:cfeb5d0cb9c116e39292e3158c68ee62880cff4a5e3d098d20bf9567e5a576e1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpipeline-1.5.1-3.fc31.x86_64.rpm" + }, + "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxml2-2.9.9-3.fc31.x86_64.rpm" + }, + "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-0.20.1-2.fc31.x86_64.rpm" + }, + "sha256:d219a6c4a2410d6ef9bad2b337557779b969e278b657ffede83c021c20f665ca": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iproute-tc-5.3.0-1.fc31.x86_64.rpm" + }, + "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/geolite2-city-20190806-1.fc31.noarch.rpm" + }, + "sha256:d2c819a7e607a9e22f55047ed03d064e4b0f125ad4fb20532c543a6d8af8bfa5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/v/vim-minimal-8.1.2102-1.fc31.x86_64.rpm" + }, + "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm" + }, + "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-0.9.0-6.fc31.x86_64.rpm" + }, + "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.x86_64.rpm" + }, + "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/expat-2.2.8-1.fc31.x86_64.rpm" + }, + "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.x86_64.rpm" + }, + "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-plugins-core-4.0.9-1.fc31.noarch.rpm" + }, + "sha256:d54f02fc39b3e87253808f665918d26ffe901f1228e25121c908661b47ba266b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pysocks-1.7.0-2.fc31.noarch.rpm" + }, + "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pango-1.44.6-1.fc31.x86_64.rpm" + }, + "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libelf-0.177-1.fc31.x86_64.rpm" + }, + "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/selinux-policy-3.14.4-37.fc31.noarch.rpm" + }, + "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mpfr-3.1.6-5.fc31.x86_64.rpm" + }, + "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rootfiles-8.1-25.fc31.noarch.rpm" + }, + "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-1.02.163-2.fc31.x86_64.rpm" + }, + "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcursor-1.1.15-6.fc31.x86_64.rpm" + }, + "sha256:da923b379524f2d8d26905f26a9dc763cec36c40306c4c53db57100574ea89b8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libref_array-0.1.5-43.fc31.x86_64.rpm" + }, + "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.x86_64.rpm" + }, + "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.x86_64.rpm" + }, + "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpng-1.6.37-2.fc31.x86_64.rpm" + }, + "sha256:dc924dd33a9bd0b9483ebdbcf7caecbe1f48b8a135f1521291c8433fa76f4603": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jansson-2.12-4.fc31.x86_64.rpm" + }, + "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/diffutils-3.7-3.fc31.x86_64.rpm" + }, + "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.x86_64.rpm" + }, + "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sed-4.5-4.fc31.x86_64.rpm" + }, + "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm" + }, + "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-ng-0.7.9-8.fc31.x86_64.rpm" + }, + "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrender-0.9.10-10.fc31.x86_64.rpm" + }, + "sha256:e17ef6f7d4f1869ff5813d6f8f2983cd6f5cd23d4a666b7ae19154636e911644": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-babel-2.7.0-2.fc31.noarch.rpm" + }, + "sha256:e1bda9438577473413f3c7455ce84b6c8486adee3d4473fafcd28309ad8c2913": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-7.fc31.x86_64.rpm" + }, + "sha256:e405d2edc9b9fc2c13242f0225049b071aa4159d09d8e2d501e8c4fe88a9710b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-25.fc31.x86_64.rpm" + }, + "sha256:e4eb72f080bdb339a4748fa9a0749953628189da1c930294c68902bb8b9f8eeb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipset-7.3-1.fc31.x86_64.rpm" + }, + "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-common-31-1.noarch.rpm" + }, + "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-legacy-2.0.4-14.fc31.noarch.rpm" + }, + "sha256:e76b3b9d14a0016542f61d0ab2981fbf2d779e522d0c36d9095a1cffecbf9272": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/firewalld-filesystem-0.7.2-1.fc31.noarch.rpm" + }, + "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsoup-2.68.2-1.fc31.x86_64.rpm" + }, + "sha256:e91f7fcee1e3e72941c99eec3c3c3c9506cdaf83c01cf1eef257b91ccaff550c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-3.fc31.x86_64.rpm" + }, + "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/freetype-2.10.0-3.fc31.x86_64.rpm" + }, + "sha256:e98119ac7a707287668e7a9a74ef2809ee5f555af04f52775367e428e08dbb33": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jsonpatch-1.21-8.fc31.noarch.rpm" + }, + "sha256:e9fa9fba03403e709388390a91f4b253e57b8104035f05fabdf4d5c0dd173ce1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nftables-0.9.1-3.fc31.x86_64.rpm" + }, + "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-glib-1.4.4-3.fc31.x86_64.rpm" + }, + "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-4.4.10-1.fc31.x86_64.rpm" + }, + "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-broker-21-6.fc31.x86_64.rpm" + }, + "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-26-4.fc31.x86_64.rpm" + }, + "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/which-2.21-15.fc31.x86_64.rpm" + }, + "sha256:ee6596a5010c2b4a038861828ecca240aa03c592dacd83c3a70d44cb8ee50408": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libaio-0.3.111-6.fc31.x86_64.rpm" + }, + "sha256:ee6dbb4914a35ee8a816ecde34d29221e3f4622324f6287c328e8ac22ae572ad": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-chardet-3.0.4-10.fc31.noarch.rpm" + }, + "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-049-27.git20181204.fc31.1.x86_64.rpm" + }, + "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-libs-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.x86_64.rpm" + }, + "sha256:efece5a4b070f197a1db3f7e1d030878b1ccdff6a8a0d24c596ecfae374ef194": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipset-libs-7.3-1.fc31.x86_64.rpm" + }, + "sha256:f0509e333636e5c34726c8a2b8260bf88fe0a35b95cae6dda62191fee1be4c6a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-core-5.3.7-301.fc31.x86_64.rpm" + }, + "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm" + }, + "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcom_err-1.45.3-1.fc31.x86_64.rpm" + }, + "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-common-8.31-4.fc31.x86_64.rpm" + }, + "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm" + }, + "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pigz-2.4-5.fc31.x86_64.rpm" + }, + "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dconf-0.34.0-1.fc31.x86_64.rpm" + }, + "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/util-linux-2.34-3.fc31.x86_64.rpm" + }, + "sha256:f50957375c79be57f391625b97d6ea74505e05f2edc6b9bc6768d5e3ad6ef8f8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.x86_64.rpm" + }, + "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.x86_64.rpm" + }, + "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-2.02-100.fc31.x86_64.rpm" + }, + "sha256:f61555e6e74917be3f131bd5af9d9e30ed709111701e950b7ebd4392baf33f12": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnfsidmap-2.4.1-1.rc1.fc31.x86_64.rpm" + }, + "sha256:f67d5cc67029c6c38185f94b72aaa9034a49f5c4f166066c8268b41e1b18a202": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.30-5.fc31.x86_64.rpm" + }, + "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm" + }, + "sha256:f85469c0c19ce86e8fdd0dd5a3e6e5c9b78e3436ae9ce70ba86b2b4a3794f693": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-oauthlib-3.0.2-2.fc31.noarch.rpm" + }, + "sha256:f8d885f57b3c7b30b6f18f68fed7fd3f19300c22abc5d5ee5029998e96c6b115": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-16.fc31.x86_64.rpm" + }, + "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXau-1.0.9-2.fc31.x86_64.rpm" + }, + "sha256:fa979526906cc9182ebdb6e50c9d09deba8518f69750495fec4267a425c8f783": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyrsistent-0.15.4-1.fc31.x86_64.rpm" + }, + "sha256:fb2ff56d3a273eac8775bac03b12f1cf8affa0b92585912de0abf3bc1ccdfa44": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-5.3.7-301.fc31.x86_64.rpm" + }, + "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.x86_64.rpm" + }, + "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.x86_64.rpm" + }, + "sha256:fccade859cbb884fd61c07433e6c316f794885cbb2186debcff3f6894d16d52c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtdb-1.4.2-1.fc31.x86_64.rpm" + }, + "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsemanage-2.9-3.fc31.x86_64.rpm" + }, + "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/geolite2-country-20190806-1.fc31.noarch.rpm" + }, + "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.x86_64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "checksum": "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d", + "check_gpg": true + }, + { + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "checksum": "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081", + "check_gpg": true + }, + { + "checksum": "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355", + "check_gpg": true + }, + { + "checksum": "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1", + "check_gpg": true + }, + { + "checksum": "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5", + "check_gpg": true + }, + { + "checksum": "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09", + "check_gpg": true + }, + { + "checksum": "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02", + "check_gpg": true + }, + { + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "checksum": "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3", + "check_gpg": true + }, + { + "checksum": "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1", + "check_gpg": true + }, + { + "checksum": "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7", + "check_gpg": true + }, + { + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "checksum": "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a", + "check_gpg": true + }, + { + "checksum": "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3", + "check_gpg": true + }, + { + "checksum": "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736", + "check_gpg": true + }, + { + "checksum": "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc", + "check_gpg": true + }, + { + "checksum": "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc", + "check_gpg": true + }, + { + "checksum": "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38", + "check_gpg": true + }, + { + "checksum": "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4", + "check_gpg": true + }, + { + "checksum": "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c", + "check_gpg": true + }, + { + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "checksum": "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8", + "check_gpg": true + }, + { + "checksum": "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4", + "check_gpg": true + }, + { + "checksum": "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49", + "check_gpg": true + }, + { + "checksum": "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1", + "check_gpg": true + }, + { + "checksum": "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee", + "check_gpg": true + }, + { + "checksum": "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8", + "check_gpg": true + }, + { + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "checksum": "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71", + "check_gpg": true + }, + { + "checksum": "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27", + "check_gpg": true + }, + { + "checksum": "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7", + "check_gpg": true + }, + { + "checksum": "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f", + "check_gpg": true + }, + { + "checksum": "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732", + "check_gpg": true + }, + { + "checksum": "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7", + "check_gpg": true + }, + { + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "checksum": "sha256:b110ee65fa2dee77585ec77cab592cba2434d579f8afbed4d2a908ad1addccfc", + "check_gpg": true + }, + { + "checksum": "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159", + "check_gpg": true + }, + { + "checksum": "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7", + "check_gpg": true + }, + { + "checksum": "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89", + "check_gpg": true + }, + { + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "checksum": "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228", + "check_gpg": true + }, + { + "checksum": "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407", + "check_gpg": true + }, + { + "checksum": "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f", + "check_gpg": true + }, + { + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "checksum": "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c", + "check_gpg": true + }, + { + "checksum": "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c", + "check_gpg": true + }, + { + "checksum": "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff", + "check_gpg": true + }, + { + "checksum": "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067", + "check_gpg": true + }, + { + "checksum": "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a", + "check_gpg": true + }, + { + "checksum": "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2", + "check_gpg": true + }, + { + "checksum": "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54", + "check_gpg": true + }, + { + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "checksum": "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee", + "check_gpg": true + }, + { + "checksum": "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891", + "check_gpg": true + }, + { + "checksum": "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d", + "check_gpg": true + }, + { + "checksum": "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203", + "check_gpg": true + }, + { + "checksum": "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd", + "check_gpg": true + }, + { + "checksum": "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc", + "check_gpg": true + }, + { + "checksum": "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84", + "check_gpg": true + }, + { + "checksum": "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb", + "check_gpg": true + }, + { + "checksum": "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c", + "check_gpg": true + }, + { + "checksum": "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926", + "check_gpg": true + }, + { + "checksum": "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3", + "check_gpg": true + }, + { + "checksum": "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a", + "check_gpg": true + }, + { + "checksum": "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79", + "check_gpg": true + }, + { + "checksum": "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13", + "check_gpg": true + }, + { + "checksum": "sha256:f67d5cc67029c6c38185f94b72aaa9034a49f5c4f166066c8268b41e1b18a202", + "check_gpg": true + }, + { + "checksum": "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb", + "check_gpg": true + }, + { + "checksum": "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a", + "check_gpg": true + }, + { + "checksum": "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e", + "check_gpg": true + }, + { + "checksum": "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5", + "check_gpg": true + }, + { + "checksum": "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5", + "check_gpg": true + }, + { + "checksum": "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458", + "check_gpg": true + }, + { + "checksum": "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d", + "check_gpg": true + }, + { + "checksum": "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16", + "check_gpg": true + }, + { + "checksum": "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada", + "check_gpg": true + }, + { + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "checksum": "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc", + "check_gpg": true + }, + { + "checksum": "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1", + "check_gpg": true + }, + { + "checksum": "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8", + "check_gpg": true + }, + { + "checksum": "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214", + "check_gpg": true + }, + { + "checksum": "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031", + "check_gpg": true + }, + { + "checksum": "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8", + "check_gpg": true + }, + { + "checksum": "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d", + "check_gpg": true + }, + { + "checksum": "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150", + "check_gpg": true + }, + { + "checksum": "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01", + "check_gpg": true + }, + { + "checksum": "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994", + "check_gpg": true + }, + { + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "checksum": "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6", + "check_gpg": true + }, + { + "checksum": "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4", + "check_gpg": true + }, + { + "checksum": "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00", + "check_gpg": true + }, + { + "checksum": "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5", + "check_gpg": true + }, + { + "checksum": "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422", + "check_gpg": true + }, + { + "checksum": "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad", + "check_gpg": true + }, + { + "checksum": "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c", + "check_gpg": true + }, + { + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "checksum": "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1", + "check_gpg": true + }, + { + "checksum": "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b", + "check_gpg": true + }, + { + "checksum": "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1", + "check_gpg": true + }, + { + "checksum": "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00", + "check_gpg": true + }, + { + "checksum": "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466", + "check_gpg": true + }, + { + "checksum": "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b", + "check_gpg": true + }, + { + "checksum": "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679", + "check_gpg": true + }, + { + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "checksum": "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834", + "check_gpg": true + }, + { + "checksum": "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c", + "check_gpg": true + }, + { + "checksum": "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59", + "check_gpg": true + }, + { + "checksum": "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a", + "check_gpg": true + }, + { + "checksum": "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077", + "check_gpg": true + }, + { + "checksum": "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c", + "check_gpg": true + }, + { + "checksum": "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc", + "check_gpg": true + }, + { + "checksum": "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141", + "check_gpg": true + }, + { + "checksum": "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1", + "check_gpg": true + }, + { + "checksum": "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1", + "check_gpg": true + }, + { + "checksum": "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7", + "check_gpg": true + }, + { + "checksum": "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295", + "check_gpg": true + }, + { + "checksum": "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc", + "check_gpg": true + }, + { + "checksum": "sha256:ee6596a5010c2b4a038861828ecca240aa03c592dacd83c3a70d44cb8ee50408", + "check_gpg": true + }, + { + "checksum": "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18", + "check_gpg": true + }, + { + "checksum": "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de", + "check_gpg": true + }, + { + "checksum": "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8", + "check_gpg": true + }, + { + "checksum": "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be", + "check_gpg": true + }, + { + "checksum": "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2", + "check_gpg": true + }, + { + "checksum": "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090", + "check_gpg": true + }, + { + "checksum": "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d", + "check_gpg": true + }, + { + "checksum": "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c", + "check_gpg": true + }, + { + "checksum": "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7", + "check_gpg": true + }, + { + "checksum": "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382", + "check_gpg": true + }, + { + "checksum": "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241", + "check_gpg": true + }, + { + "checksum": "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167", + "check_gpg": true + }, + { + "checksum": "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc", + "check_gpg": true + }, + { + "checksum": "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627", + "check_gpg": true + }, + { + "checksum": "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874", + "check_gpg": true + }, + { + "checksum": "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801", + "check_gpg": true + }, + { + "checksum": "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31", + "check_gpg": true + }, + { + "checksum": "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7", + "check_gpg": true + }, + { + "checksum": "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba", + "check_gpg": true + }, + { + "checksum": "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0", + "check_gpg": true + }, + { + "checksum": "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1", + "check_gpg": true + }, + { + "checksum": "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f", + "check_gpg": true + }, + { + "checksum": "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c", + "check_gpg": true + }, + { + "checksum": "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd", + "check_gpg": true + }, + { + "checksum": "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab", + "check_gpg": true + }, + { + "checksum": "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc", + "check_gpg": true + }, + { + "checksum": "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345", + "check_gpg": true + }, + { + "checksum": "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde", + "check_gpg": true + }, + { + "checksum": "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37", + "check_gpg": true + }, + { + "checksum": "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f", + "check_gpg": true + }, + { + "checksum": "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43", + "check_gpg": true + }, + { + "checksum": "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664", + "check_gpg": true + }, + { + "checksum": "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57", + "check_gpg": true + }, + { + "checksum": "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d", + "check_gpg": true + }, + { + "checksum": "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf", + "check_gpg": true + }, + { + "checksum": "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a", + "check_gpg": true + }, + { + "checksum": "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc", + "check_gpg": true + }, + { + "checksum": "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf", + "check_gpg": true + }, + { + "checksum": "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc", + "check_gpg": true + }, + { + "checksum": "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730", + "check_gpg": true + }, + { + "checksum": "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0", + "check_gpg": true + }, + { + "checksum": "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3", + "check_gpg": true + }, + { + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "checksum": "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a", + "check_gpg": true + }, + { + "checksum": "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7", + "check_gpg": true + }, + { + "checksum": "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e", + "check_gpg": true + }, + { + "checksum": "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045", + "check_gpg": true + }, + { + "checksum": "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32", + "check_gpg": true + }, + { + "checksum": "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f", + "check_gpg": true + }, + { + "checksum": "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4", + "check_gpg": true + }, + { + "checksum": "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238", + "check_gpg": true + }, + { + "checksum": "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388", + "check_gpg": true + }, + { + "checksum": "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42", + "check_gpg": true + }, + { + "checksum": "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc", + "check_gpg": true + }, + { + "checksum": "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833", + "check_gpg": true + }, + { + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "checksum": "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f", + "check_gpg": true + }, + { + "checksum": "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb", + "check_gpg": true + }, + { + "checksum": "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c", + "check_gpg": true + }, + { + "checksum": "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500", + "check_gpg": true + }, + { + "checksum": "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71", + "check_gpg": true + }, + { + "checksum": "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7", + "check_gpg": true + }, + { + "checksum": "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42", + "check_gpg": true + }, + { + "checksum": "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8", + "check_gpg": true + }, + { + "checksum": "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5", + "check_gpg": true + }, + { + "checksum": "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af", + "check_gpg": true + }, + { + "checksum": "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348", + "check_gpg": true + }, + { + "checksum": "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff", + "check_gpg": true + }, + { + "checksum": "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce", + "check_gpg": true + }, + { + "checksum": "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9", + "check_gpg": true + }, + { + "checksum": "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5", + "check_gpg": true + }, + { + "checksum": "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c", + "check_gpg": true + }, + { + "checksum": "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca", + "check_gpg": true + }, + { + "checksum": "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da", + "check_gpg": true + }, + { + "checksum": "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6", + "check_gpg": true + }, + { + "checksum": "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34", + "check_gpg": true + }, + { + "checksum": "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c", + "check_gpg": true + }, + { + "checksum": "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a", + "check_gpg": true + }, + { + "checksum": "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39", + "check_gpg": true + }, + { + "checksum": "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83", + "check_gpg": true + }, + { + "checksum": "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2", + "check_gpg": true + }, + { + "checksum": "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519", + "check_gpg": true + }, + { + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "checksum": "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106", + "check_gpg": true + }, + { + "checksum": "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc", + "check_gpg": true + }, + { + "checksum": "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2", + "check_gpg": true + }, + { + "checksum": "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38", + "check_gpg": true + }, + { + "checksum": "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b", + "check_gpg": true + }, + { + "checksum": "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68", + "check_gpg": true + }, + { + "checksum": "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3", + "check_gpg": true + }, + { + "checksum": "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2", + "check_gpg": true + }, + { + "checksum": "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0", + "check_gpg": true + }, + { + "checksum": "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234", + "check_gpg": true + }, + { + "checksum": "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313", + "check_gpg": true + }, + { + "checksum": "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0", + "check_gpg": true + }, + { + "checksum": "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b", + "check_gpg": true + }, + { + "checksum": "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c", + "check_gpg": true + }, + { + "checksum": "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651", + "check_gpg": true + }, + { + "checksum": "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7", + "check_gpg": true + }, + { + "checksum": "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8", + "check_gpg": true + }, + { + "checksum": "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976", + "check_gpg": true + }, + { + "checksum": "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba", + "check_gpg": true + }, + { + "checksum": "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c", + "check_gpg": true + }, + { + "checksum": "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632", + "check_gpg": true + }, + { + "checksum": "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e", + "check_gpg": true + }, + { + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "checksum": "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9", + "check_gpg": true + }, + { + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "checksum": "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a", + "check_gpg": true + }, + { + "checksum": "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552", + "check_gpg": true + }, + { + "checksum": "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3", + "check_gpg": true + }, + { + "checksum": "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5", + "check_gpg": true + }, + { + "checksum": "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1", + "check_gpg": true + }, + { + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "checksum": "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444", + "check_gpg": true + }, + { + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "checksum": "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7", + "check_gpg": true + }, + { + "checksum": "sha256:669250ad47aad5939cf4d1b88036fd95a94845d8e0bbdb05e933f3d2fe262fea", + "check_gpg": true + }, + { + "checksum": "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d", + "check_gpg": true + }, + { + "checksum": "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc", + "check_gpg": true + }, + { + "checksum": "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e", + "check_gpg": true + }, + { + "checksum": "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2", + "check_gpg": true + }, + { + "checksum": "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac", + "check_gpg": true + }, + { + "checksum": "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03", + "check_gpg": true + }, + { + "checksum": "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576", + "check_gpg": true + }, + { + "checksum": "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb", + "check_gpg": true + }, + { + "checksum": "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165", + "check_gpg": true + }, + { + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "checksum": "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3", + "check_gpg": true + }, + { + "checksum": "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071", + "check_gpg": true + }, + { + "checksum": "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2", + "check_gpg": true + }, + { + "checksum": "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5", + "check_gpg": true + }, + { + "checksum": "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454", + "check_gpg": true + }, + { + "checksum": "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612", + "check_gpg": true + }, + { + "checksum": "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1", + "check_gpg": true + }, + { + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "checksum": "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c", + "check_gpg": true + }, + { + "checksum": "sha256:9975496f29601a1c2cdb89e63aac698fdd8283ba3a52a9d91ead9473a0e064c8", + "check_gpg": true + }, + { + "checksum": "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18", + "check_gpg": true + }, + { + "checksum": "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df", + "check_gpg": true + }, + { + "checksum": "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f", + "check_gpg": true + }, + { + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "checksum": "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7", + "check_gpg": true + }, + { + "checksum": "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f", + "check_gpg": true + }, + { + "checksum": "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa", + "check_gpg": true + }, + { + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "checksum": "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05", + "check_gpg": true + }, + { + "checksum": "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431", + "check_gpg": true + }, + { + "checksum": "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c", + "check_gpg": true + }, + { + "checksum": "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9", + "check_gpg": true + } + ] + } + } + ] + }, + "runner": "org.osbuild.fedora31" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:6d8cbba688cea65fa80983cd7f140633e94cd58daa819342d1ae571a4ff174c6", + "check_gpg": true + }, + { + "checksum": "sha256:2c5b5ce5f6e6d1d79f35eab253a12e19aeb863f4fe8ded94013f76a9834689fb", + "check_gpg": true + }, + { + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "checksum": "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d", + "check_gpg": true + }, + { + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "checksum": "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081", + "check_gpg": true + }, + { + "checksum": "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355", + "check_gpg": true + }, + { + "checksum": "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1", + "check_gpg": true + }, + { + "checksum": "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5", + "check_gpg": true + }, + { + "checksum": "sha256:cc02df4125eaebf642edd9bf00031ec09871c285816c03112909ef1005410eaa", + "check_gpg": true + }, + { + "checksum": "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09", + "check_gpg": true + }, + { + "checksum": "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02", + "check_gpg": true + }, + { + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "checksum": "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3", + "check_gpg": true + }, + { + "checksum": "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1", + "check_gpg": true + }, + { + "checksum": "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7", + "check_gpg": true + }, + { + "checksum": "sha256:239a9576864532edd325e72b62a10ef147a2bcc0a925079b19fb9cb74bab0dd7", + "check_gpg": true + }, + { + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "checksum": "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a", + "check_gpg": true + }, + { + "checksum": "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3", + "check_gpg": true + }, + { + "checksum": "sha256:3629a3675c7dadd89f3b3d855e7c57d8f93d30d59fa00fdeabfc5e5e39ca4937", + "check_gpg": true + }, + { + "checksum": "sha256:07a3523159719382e2bb9b83961bfe00836cc97f75a9706d02ad73dddb161856", + "check_gpg": true + }, + { + "checksum": "sha256:9cc3e6534ae34343e7e4d056d46b9551da7d0a82c7bad378c3626d4b70d1bf62", + "check_gpg": true + }, + { + "checksum": "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736", + "check_gpg": true + }, + { + "checksum": "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc", + "check_gpg": true + }, + { + "checksum": "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc", + "check_gpg": true + }, + { + "checksum": "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38", + "check_gpg": true + }, + { + "checksum": "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4", + "check_gpg": true + }, + { + "checksum": "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c", + "check_gpg": true + }, + { + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "checksum": "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8", + "check_gpg": true + }, + { + "checksum": "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4", + "check_gpg": true + }, + { + "checksum": "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49", + "check_gpg": true + }, + { + "checksum": "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1", + "check_gpg": true + }, + { + "checksum": "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee", + "check_gpg": true + }, + { + "checksum": "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8", + "check_gpg": true + }, + { + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "checksum": "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71", + "check_gpg": true + }, + { + "checksum": "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27", + "check_gpg": true + }, + { + "checksum": "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc", + "check_gpg": true + }, + { + "checksum": "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a", + "check_gpg": true + }, + { + "checksum": "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7", + "check_gpg": true + }, + { + "checksum": "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f", + "check_gpg": true + }, + { + "checksum": "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732", + "check_gpg": true + }, + { + "checksum": "sha256:33334afdde6c813b18c18897dca19fab5a2ce090eba0b5ea0a38f43f1081c190", + "check_gpg": true + }, + { + "checksum": "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d", + "check_gpg": true + }, + { + "checksum": "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7", + "check_gpg": true + }, + { + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "checksum": "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063", + "check_gpg": true + }, + { + "checksum": "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159", + "check_gpg": true + }, + { + "checksum": "sha256:34a9986b8b61812ceaf32ce3b189bd0b2cb4adaaf47d76ec1f50ce07c45b5675", + "check_gpg": true + }, + { + "checksum": "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7", + "check_gpg": true + }, + { + "checksum": "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89", + "check_gpg": true + }, + { + "checksum": "sha256:cab1b0c3bdae2a07e15b90b414f50753c759e325b6f0cddfa27895748c77f082", + "check_gpg": true + }, + { + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "checksum": "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228", + "check_gpg": true + }, + { + "checksum": "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407", + "check_gpg": true + }, + { + "checksum": "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f", + "check_gpg": true + }, + { + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "checksum": "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c", + "check_gpg": true + }, + { + "checksum": "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c", + "check_gpg": true + }, + { + "checksum": "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff", + "check_gpg": true + }, + { + "checksum": "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067", + "check_gpg": true + }, + { + "checksum": "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a", + "check_gpg": true + }, + { + "checksum": "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2", + "check_gpg": true + }, + { + "checksum": "sha256:ab35a2d7f21aac1f33f9521607789e1c303fb63e4ea0681e9f724f86a1cc15c5", + "check_gpg": true + }, + { + "checksum": "sha256:e76b3b9d14a0016542f61d0ab2981fbf2d779e522d0c36d9095a1cffecbf9272", + "check_gpg": true + }, + { + "checksum": "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54", + "check_gpg": true + }, + { + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "checksum": "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee", + "check_gpg": true + }, + { + "checksum": "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891", + "check_gpg": true + }, + { + "checksum": "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d", + "check_gpg": true + }, + { + "checksum": "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203", + "check_gpg": true + }, + { + "checksum": "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd", + "check_gpg": true + }, + { + "checksum": "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc", + "check_gpg": true + }, + { + "checksum": "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84", + "check_gpg": true + }, + { + "checksum": "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb", + "check_gpg": true + }, + { + "checksum": "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c", + "check_gpg": true + }, + { + "checksum": "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565", + "check_gpg": true + }, + { + "checksum": "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b", + "check_gpg": true + }, + { + "checksum": "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926", + "check_gpg": true + }, + { + "checksum": "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3", + "check_gpg": true + }, + { + "checksum": "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a", + "check_gpg": true + }, + { + "checksum": "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79", + "check_gpg": true + }, + { + "checksum": "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13", + "check_gpg": true + }, + { + "checksum": "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb", + "check_gpg": true + }, + { + "checksum": "sha256:6f2dae9b49bed8e1036a21aadd92ea2eb371979f6714ec2bce5742de051eeb14", + "check_gpg": true + }, + { + "checksum": "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a", + "check_gpg": true + }, + { + "checksum": "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e", + "check_gpg": true + }, + { + "checksum": "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5", + "check_gpg": true + }, + { + "checksum": "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5", + "check_gpg": true + }, + { + "checksum": "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458", + "check_gpg": true + }, + { + "checksum": "sha256:ab5ad6fc076fd82be6a2ca9d77998fc06c2c9e7296de960b7549239efb9f971d", + "check_gpg": true + }, + { + "checksum": "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d", + "check_gpg": true + }, + { + "checksum": "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16", + "check_gpg": true + }, + { + "checksum": "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada", + "check_gpg": true + }, + { + "checksum": "sha256:21ccdbe703caa6a08056d2bc75c1e184f811472a6e320e5af64b8757fcd07166", + "check_gpg": true + }, + { + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "checksum": "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc", + "check_gpg": true + }, + { + "checksum": "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1", + "check_gpg": true + }, + { + "checksum": "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8", + "check_gpg": true + }, + { + "checksum": "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214", + "check_gpg": true + }, + { + "checksum": "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031", + "check_gpg": true + }, + { + "checksum": "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8", + "check_gpg": true + }, + { + "checksum": "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d", + "check_gpg": true + }, + { + "checksum": "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150", + "check_gpg": true + }, + { + "checksum": "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01", + "check_gpg": true + }, + { + "checksum": "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994", + "check_gpg": true + }, + { + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "checksum": "sha256:a188b5c697b734d4ed7d8f954b6875b9d401dc2a3c10bfd20d03db131ca73ab5", + "check_gpg": true + }, + { + "checksum": "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6", + "check_gpg": true + }, + { + "checksum": "sha256:2af3bbdab1f387ae7af2534846e33ab6d2ca7777399c64191f95699d576cd4ba", + "check_gpg": true + }, + { + "checksum": "sha256:c8e0a36410ebbd9db0a10e1fbecbae8f6288b9be86752d2e91725d5dd98ec65d", + "check_gpg": true + }, + { + "checksum": "sha256:cef060334e8c21b5d2e3a87bdd0ad5ac1be389d7794735506b9d3c65c2923cd3", + "check_gpg": true + }, + { + "checksum": "sha256:d219a6c4a2410d6ef9bad2b337557779b969e278b657ffede83c021c20f665ca", + "check_gpg": true + }, + { + "checksum": "sha256:e4eb72f080bdb339a4748fa9a0749953628189da1c930294c68902bb8b9f8eeb", + "check_gpg": true + }, + { + "checksum": "sha256:efece5a4b070f197a1db3f7e1d030878b1ccdff6a8a0d24c596ecfae374ef194", + "check_gpg": true + }, + { + "checksum": "sha256:8e9a916cd4843e7d09e3d1b814dbb55bb3b45672b1058044cfeaf8e19ad27bd7", + "check_gpg": true + }, + { + "checksum": "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4", + "check_gpg": true + }, + { + "checksum": "sha256:72b5df6982fecdbee30d40bbb6042c72ed0f31b787f289b4a27f0dffc6f609fe", + "check_gpg": true + }, + { + "checksum": "sha256:dc924dd33a9bd0b9483ebdbcf7caecbe1f48b8a135f1521291c8433fa76f4603", + "check_gpg": true + }, + { + "checksum": "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00", + "check_gpg": true + }, + { + "checksum": "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5", + "check_gpg": true + }, + { + "checksum": "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422", + "check_gpg": true + }, + { + "checksum": "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad", + "check_gpg": true + }, + { + "checksum": "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c", + "check_gpg": true + }, + { + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "checksum": "sha256:fb2ff56d3a273eac8775bac03b12f1cf8affa0b92585912de0abf3bc1ccdfa44", + "check_gpg": true + }, + { + "checksum": "sha256:f0509e333636e5c34726c8a2b8260bf88fe0a35b95cae6dda62191fee1be4c6a", + "check_gpg": true + }, + { + "checksum": "sha256:1e5f14d26556e380ed129289c1b98d46d951966e548613b9c2ee0d3616ac96d1", + "check_gpg": true + }, + { + "checksum": "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1", + "check_gpg": true + }, + { + "checksum": "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b", + "check_gpg": true + }, + { + "checksum": "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1", + "check_gpg": true + }, + { + "checksum": "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00", + "check_gpg": true + }, + { + "checksum": "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466", + "check_gpg": true + }, + { + "checksum": "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552", + "check_gpg": true + }, + { + "checksum": "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b", + "check_gpg": true + }, + { + "checksum": "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b", + "check_gpg": true + }, + { + "checksum": "sha256:22db6d1e1f34a43c3d045b6750ff3a32184d47c2aedf3dabc93640057de1f4fa", + "check_gpg": true + }, + { + "checksum": "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679", + "check_gpg": true + }, + { + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "checksum": "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834", + "check_gpg": true + }, + { + "checksum": "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c", + "check_gpg": true + }, + { + "checksum": "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59", + "check_gpg": true + }, + { + "checksum": "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a", + "check_gpg": true + }, + { + "checksum": "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077", + "check_gpg": true + }, + { + "checksum": "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c", + "check_gpg": true + }, + { + "checksum": "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc", + "check_gpg": true + }, + { + "checksum": "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141", + "check_gpg": true + }, + { + "checksum": "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1", + "check_gpg": true + }, + { + "checksum": "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1", + "check_gpg": true + }, + { + "checksum": "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7", + "check_gpg": true + }, + { + "checksum": "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295", + "check_gpg": true + }, + { + "checksum": "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc", + "check_gpg": true + }, + { + "checksum": "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18", + "check_gpg": true + }, + { + "checksum": "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de", + "check_gpg": true + }, + { + "checksum": "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8", + "check_gpg": true + }, + { + "checksum": "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be", + "check_gpg": true + }, + { + "checksum": "sha256:469d12368377399b8eaa7ec8cf1b6378ab18476b4a2b61b79091510a8945c6aa", + "check_gpg": true + }, + { + "checksum": "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2", + "check_gpg": true + }, + { + "checksum": "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090", + "check_gpg": true + }, + { + "checksum": "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d", + "check_gpg": true + }, + { + "checksum": "sha256:0f26eca4ac936554818769fe32aca5e878af2616e83f836ec463e59eb4f9f1f9", + "check_gpg": true + }, + { + "checksum": "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c", + "check_gpg": true + }, + { + "checksum": "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7", + "check_gpg": true + }, + { + "checksum": "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382", + "check_gpg": true + }, + { + "checksum": "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241", + "check_gpg": true + }, + { + "checksum": "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167", + "check_gpg": true + }, + { + "checksum": "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc", + "check_gpg": true + }, + { + "checksum": "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627", + "check_gpg": true + }, + { + "checksum": "sha256:0b54f374bcbe094dbc0d52d9661fe99ebff384026ce0ea39f2d6069e27bf8bdc", + "check_gpg": true + }, + { + "checksum": "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874", + "check_gpg": true + }, + { + "checksum": "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801", + "check_gpg": true + }, + { + "checksum": "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31", + "check_gpg": true + }, + { + "checksum": "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7", + "check_gpg": true + }, + { + "checksum": "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba", + "check_gpg": true + }, + { + "checksum": "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0", + "check_gpg": true + }, + { + "checksum": "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1", + "check_gpg": true + }, + { + "checksum": "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f", + "check_gpg": true + }, + { + "checksum": "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c", + "check_gpg": true + }, + { + "checksum": "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd", + "check_gpg": true + }, + { + "checksum": "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab", + "check_gpg": true + }, + { + "checksum": "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc", + "check_gpg": true + }, + { + "checksum": "sha256:6f7fbd57db9334a3cc7983d2e920afe92abe3f7e168702612d70e9ff405d79e6", + "check_gpg": true + }, + { + "checksum": "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345", + "check_gpg": true + }, + { + "checksum": "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde", + "check_gpg": true + }, + { + "checksum": "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37", + "check_gpg": true + }, + { + "checksum": "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f", + "check_gpg": true + }, + { + "checksum": "sha256:8f7b737ccb294fd5ba1d19075ea2a50a54e0265d8efa28aae0ade59d3e3a63be", + "check_gpg": true + }, + { + "checksum": "sha256:430f2f71be063eb9d04fe38659f62e29f47c9c878f9985d0569cb49e9c89ebc0", + "check_gpg": true + }, + { + "checksum": "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43", + "check_gpg": true + }, + { + "checksum": "sha256:c976ce75eda3dbe734117f6f558eafb2061bbef66086a04cb907a7ddbaea8bc2", + "check_gpg": true + }, + { + "checksum": "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664", + "check_gpg": true + }, + { + "checksum": "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57", + "check_gpg": true + }, + { + "checksum": "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d", + "check_gpg": true + }, + { + "checksum": "sha256:45bf4bef479712936db1d6859b043d13e6cad41c851b6e621fc315b39ecfa14b", + "check_gpg": true + }, + { + "checksum": "sha256:e91f7fcee1e3e72941c99eec3c3c3c9506cdaf83c01cf1eef257b91ccaff550c", + "check_gpg": true + }, + { + "checksum": "sha256:f8d885f57b3c7b30b6f18f68fed7fd3f19300c22abc5d5ee5029998e96c6b115", + "check_gpg": true + }, + { + "checksum": "sha256:f61555e6e74917be3f131bd5af9d9e30ed709111701e950b7ebd4392baf33f12", + "check_gpg": true + }, + { + "checksum": "sha256:2cd5a709ff2c286b73f850469b1ee6baf9077b90ce3bacb8ba712430c6632350", + "check_gpg": true + }, + { + "checksum": "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf", + "check_gpg": true + }, + { + "checksum": "sha256:8bd2655674b40e89f5f63af7f8ffafd0e9064a3378cdca050262a7272678e8e5", + "check_gpg": true + }, + { + "checksum": "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a", + "check_gpg": true + }, + { + "checksum": "sha256:6f729da330aaaea336458a8b6f3f1d2cc761693ba20bdda57fb9c49fb6f2120d", + "check_gpg": true + }, + { + "checksum": "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc", + "check_gpg": true + }, + { + "checksum": "sha256:cfeb5d0cb9c116e39292e3158c68ee62880cff4a5e3d098d20bf9567e5a576e1", + "check_gpg": true + }, + { + "checksum": "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf", + "check_gpg": true + }, + { + "checksum": "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc", + "check_gpg": true + }, + { + "checksum": "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730", + "check_gpg": true + }, + { + "checksum": "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0", + "check_gpg": true + }, + { + "checksum": "sha256:da923b379524f2d8d26905f26a9dc763cec36c40306c4c53db57100574ea89b8", + "check_gpg": true + }, + { + "checksum": "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3", + "check_gpg": true + }, + { + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "checksum": "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a", + "check_gpg": true + }, + { + "checksum": "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7", + "check_gpg": true + }, + { + "checksum": "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e", + "check_gpg": true + }, + { + "checksum": "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045", + "check_gpg": true + }, + { + "checksum": "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32", + "check_gpg": true + }, + { + "checksum": "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f", + "check_gpg": true + }, + { + "checksum": "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4", + "check_gpg": true + }, + { + "checksum": "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238", + "check_gpg": true + }, + { + "checksum": "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388", + "check_gpg": true + }, + { + "checksum": "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42", + "check_gpg": true + }, + { + "checksum": "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc", + "check_gpg": true + }, + { + "checksum": "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833", + "check_gpg": true + }, + { + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "checksum": "sha256:422625da0fbb99cc4da8eebebff892c6e73a87c81a33190f7a17e344f6bb709e", + "check_gpg": true + }, + { + "checksum": "sha256:307275b46896d56d23f5da5ab77a299941e77165ff44e846d6620eee1158131c", + "check_gpg": true + }, + { + "checksum": "sha256:a1bd1b5a2c47e57957a77d32f4fd705de1df30557837cfbc83b8f284e4ee0456", + "check_gpg": true + }, + { + "checksum": "sha256:6c1f9dc11de4d3af4d4c418b4556ee9659011d587e9da44bb039cb30ac326841", + "check_gpg": true + }, + { + "checksum": "sha256:e1bda9438577473413f3c7455ce84b6c8486adee3d4473fafcd28309ad8c2913", + "check_gpg": true + }, + { + "checksum": "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f", + "check_gpg": true + }, + { + "checksum": "sha256:9247561bad35a8a2f8269b2bbbd28d1bf5e6fcde1fe78e1fc3c0e712513e9703", + "check_gpg": true + }, + { + "checksum": "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb", + "check_gpg": true + }, + { + "checksum": "sha256:fccade859cbb884fd61c07433e6c316f794885cbb2186debcff3f6894d16d52c", + "check_gpg": true + }, + { + "checksum": "sha256:5593277fa685adba864393da8faf76950d6d8fb1483af036cdc08d8437c387bb", + "check_gpg": true + }, + { + "checksum": "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c", + "check_gpg": true + }, + { + "checksum": "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500", + "check_gpg": true + }, + { + "checksum": "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71", + "check_gpg": true + }, + { + "checksum": "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7", + "check_gpg": true + }, + { + "checksum": "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42", + "check_gpg": true + }, + { + "checksum": "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8", + "check_gpg": true + }, + { + "checksum": "sha256:95b45de2c57f35df43bff0c2ebe32c64183968b3a41c5673cfeeff5ece506b94", + "check_gpg": true + }, + { + "checksum": "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5", + "check_gpg": true + }, + { + "checksum": "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af", + "check_gpg": true + }, + { + "checksum": "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348", + "check_gpg": true + }, + { + "checksum": "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff", + "check_gpg": true + }, + { + "checksum": "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce", + "check_gpg": true + }, + { + "checksum": "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9", + "check_gpg": true + }, + { + "checksum": "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5", + "check_gpg": true + }, + { + "checksum": "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c", + "check_gpg": true + }, + { + "checksum": "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca", + "check_gpg": true + }, + { + "checksum": "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da", + "check_gpg": true + }, + { + "checksum": "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6", + "check_gpg": true + }, + { + "checksum": "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34", + "check_gpg": true + }, + { + "checksum": "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c", + "check_gpg": true + }, + { + "checksum": "sha256:e405d2edc9b9fc2c13242f0225049b071aa4159d09d8e2d501e8c4fe88a9710b", + "check_gpg": true + }, + { + "checksum": "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47", + "check_gpg": true + }, + { + "checksum": "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70", + "check_gpg": true + }, + { + "checksum": "sha256:a41579023e1db3dec06679ebc7788ece92686ea2a23c78dd749c98ddbc82d419", + "check_gpg": true + }, + { + "checksum": "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a", + "check_gpg": true + }, + { + "checksum": "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39", + "check_gpg": true + }, + { + "checksum": "sha256:764699ea124f85a7afcf65a2f138e3821770f8aa1ef134e1813e2b04477f0b74", + "check_gpg": true + }, + { + "checksum": "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83", + "check_gpg": true + }, + { + "checksum": "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2", + "check_gpg": true + }, + { + "checksum": "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519", + "check_gpg": true + }, + { + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "checksum": "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106", + "check_gpg": true + }, + { + "checksum": "sha256:cf6506ad88ecaab89efde02eee218365a36981114638c03989ba2768457ae335", + "check_gpg": true + }, + { + "checksum": "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc", + "check_gpg": true + }, + { + "checksum": "sha256:e9fa9fba03403e709388390a91f4b253e57b8104035f05fabdf4d5c0dd173ce1", + "check_gpg": true + }, + { + "checksum": "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2", + "check_gpg": true + }, + { + "checksum": "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38", + "check_gpg": true + }, + { + "checksum": "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b", + "check_gpg": true + }, + { + "checksum": "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68", + "check_gpg": true + }, + { + "checksum": "sha256:c3aa4d794cef51ba9fcbf3750baed55aabfa36062a48f61149ccf03364a0d256", + "check_gpg": true + }, + { + "checksum": "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3", + "check_gpg": true + }, + { + "checksum": "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2", + "check_gpg": true + }, + { + "checksum": "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0", + "check_gpg": true + }, + { + "checksum": "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234", + "check_gpg": true + }, + { + "checksum": "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313", + "check_gpg": true + }, + { + "checksum": "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0", + "check_gpg": true + }, + { + "checksum": "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b", + "check_gpg": true + }, + { + "checksum": "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c", + "check_gpg": true + }, + { + "checksum": "sha256:55c47c63deb00a9126c068299c01dfbdd39d58c6962138b862b92f5c7af8c898", + "check_gpg": true + }, + { + "checksum": "sha256:c459092a47bd2f904d9fe830735b512ef97b52785ee12abb2ba5c52465560f18", + "check_gpg": true + }, + { + "checksum": "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651", + "check_gpg": true + }, + { + "checksum": "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7", + "check_gpg": true + }, + { + "checksum": "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8", + "check_gpg": true + }, + { + "checksum": "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976", + "check_gpg": true + }, + { + "checksum": "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba", + "check_gpg": true + }, + { + "checksum": "sha256:5e07e49fdacc1f52b583ee685d03bf5ce045e9d34a323bd26607148a3937a9ce", + "check_gpg": true + }, + { + "checksum": "sha256:561014bd90810d512b4098c8e1d3ca05aa8c6a74bc258b3b7e3e2fd36a1ed157", + "check_gpg": true + }, + { + "checksum": "sha256:bd72cac3d1ef93cff067070925e5f339c720bef82c5ade4477388636fef53b91", + "check_gpg": true + }, + { + "checksum": "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c", + "check_gpg": true + }, + { + "checksum": "sha256:118548479396b007a80bc98e8cef770ea242ef6b20cd2922d595acd4c100946d", + "check_gpg": true + }, + { + "checksum": "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632", + "check_gpg": true + }, + { + "checksum": "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e", + "check_gpg": true + }, + { + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "checksum": "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9", + "check_gpg": true + }, + { + "checksum": "sha256:73a7249de97f0ad66bc1a867ac5b5d08b741ab152d4dd7ce45cc231d64126b58", + "check_gpg": true + }, + { + "checksum": "sha256:4cca3f986ddbd38cfbfb6d1c8d336a1aaed78f7da1f38356ce1e034ba35ec492", + "check_gpg": true + }, + { + "checksum": "sha256:9fea00b14943cac0e3b11ff3a319765168cf78b3cc58fdee7d5fe48246a0aa4d", + "check_gpg": true + }, + { + "checksum": "sha256:e17ef6f7d4f1869ff5813d6f8f2983cd6f5cd23d4a666b7ae19154636e911644", + "check_gpg": true + }, + { + "checksum": "sha256:7fc8df6b10728f46c3e752c35f6777f17025bef30f61c67f76de2538888a5546", + "check_gpg": true + }, + { + "checksum": "sha256:ee6dbb4914a35ee8a816ecde34d29221e3f4622324f6287c328e8ac22ae572ad", + "check_gpg": true + }, + { + "checksum": "sha256:cdc526097cd2fecb75e44ad11a69b10eb7804f310298c064c3b931515d4f3d5c", + "check_gpg": true + }, + { + "checksum": "sha256:2e588b5133dc8cb26ff0226f66eb1be440c6b784ec6fa67a5f0516d8ccaf46f5", + "check_gpg": true + }, + { + "checksum": "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653", + "check_gpg": true + }, + { + "checksum": "sha256:35c348bcd91fa114ad459b888131e5e5509259cffce33f22c44f92e57e9e5919", + "check_gpg": true + }, + { + "checksum": "sha256:63ff108f557096a9724053c37e37d3c2af1a1ec0b33124480b3742ff3da46292", + "check_gpg": true + }, + { + "checksum": "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f", + "check_gpg": true + }, + { + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "checksum": "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02", + "check_gpg": true + }, + { + "checksum": "sha256:a349c40034b5a181cab1bd409384ddb901c274e110b16721d434f5bf42e92c0f", + "check_gpg": true + }, + { + "checksum": "sha256:6807ac3ae6b7c0ea3a085106cedb687f79edfda500feb747039dc112ed3c518f", + "check_gpg": true + }, + { + "checksum": "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a", + "check_gpg": true + }, + { + "checksum": "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552", + "check_gpg": true + }, + { + "checksum": "sha256:8221111dc9a9aa5c68805f153c3fbe5314c8a0f335af29685733b958253dd278", + "check_gpg": true + }, + { + "checksum": "sha256:1135e96b6f9ed29e4ed4c0f060876891a244442a503f0b18ab238589da20d464", + "check_gpg": true + }, + { + "checksum": "sha256:e98119ac7a707287668e7a9a74ef2809ee5f555af04f52775367e428e08dbb33", + "check_gpg": true + }, + { + "checksum": "sha256:2d9a2e736dd5231df3c5c748ce0ba5a75a409dacfe73f14676781f32d565a7df", + "check_gpg": true + }, + { + "checksum": "sha256:047f9e29fcfa56be98ca3f42249f3ccb2a93df99f2438e3983e2064025f0d79d", + "check_gpg": true + }, + { + "checksum": "sha256:143c50c0663f963c7689c1cec43b81cf1433d5d3b67eb8233ba06506c1b3e095", + "check_gpg": true + }, + { + "checksum": "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3", + "check_gpg": true + }, + { + "checksum": "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5", + "check_gpg": true + }, + { + "checksum": "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1", + "check_gpg": true + }, + { + "checksum": "sha256:ca6a71888b8d147342012c64533f61a41b26c788bbcd2844a2164ee007fac981", + "check_gpg": true + }, + { + "checksum": "sha256:a7071aa0068c9dff913c5f0523be3ffdd7f67b8f13e1ee2aa16e486b01aecc1c", + "check_gpg": true + }, + { + "checksum": "sha256:5d8d55e12443628c7a1915648845663e4aed1863805854de0adadd89772eda2a", + "check_gpg": true + }, + { + "checksum": "sha256:f85469c0c19ce86e8fdd0dd5a3e6e5c9b78e3436ae9ce70ba86b2b4a3794f693", + "check_gpg": true + }, + { + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "checksum": "sha256:1b65944efe48ba0cca34011891480a1db29a7e95dad058376bfca34d68fb0791", + "check_gpg": true + }, + { + "checksum": "sha256:5a7e957102a23c9924398fe45f5cdec66edcd10adcad7130d6ebf02c2706ad49", + "check_gpg": true + }, + { + "checksum": "sha256:682af90a049fa78429d5ebd194700609f762e59ceb6c4ca28b17e7f4fd1683aa", + "check_gpg": true + }, + { + "checksum": "sha256:6ed7f318c5e93b59254d7b7652131f33db713eeb61f52413f21e533069ed24bf", + "check_gpg": true + }, + { + "checksum": "sha256:fa979526906cc9182ebdb6e50c9d09deba8518f69750495fec4267a425c8f783", + "check_gpg": true + }, + { + "checksum": "sha256:32cc578c8da626a8c1a5316a59d482967a32547be6c077f73fb90e11fb0f1e6a", + "check_gpg": true + }, + { + "checksum": "sha256:d54f02fc39b3e87253808f665918d26ffe901f1228e25121c908661b47ba266b", + "check_gpg": true + }, + { + "checksum": "sha256:6c6f1152899318bdc0500cfb0b0cdbbc19ba0e017b5888ece1358250caa2629f", + "check_gpg": true + }, + { + "checksum": "sha256:a6bab7030d3296875cb0cad2c30fb18042dab8ae070c9c6f97457bb0a5cc6316", + "check_gpg": true + }, + { + "checksum": "sha256:1e049e86c5dd5c4d6737d47dd194d553ffbd65c81a4077cf6e1029a0fde80fb5", + "check_gpg": true + }, + { + "checksum": "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444", + "check_gpg": true + }, + { + "checksum": "sha256:aacf84989a0fe55366f6d37ddd1753b8c06e5640e9334805bf468777824a3ac0", + "check_gpg": true + }, + { + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "checksum": "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142", + "check_gpg": true + }, + { + "checksum": "sha256:b1094a9a9725546315d6eac7f792d5875a5f0c950cd84e43fc2fbb3e639ee43e", + "check_gpg": true + }, + { + "checksum": "sha256:bd2e7c9e3df976723ade08f16667b31044b678e62ee29e024ad193af6d9a28e1", + "check_gpg": true + }, + { + "checksum": "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7", + "check_gpg": true + }, + { + "checksum": "sha256:78b600621e00f4a0acc8f58de056ae9393ce4e1cded56837b4e557c1bc84b06b", + "check_gpg": true + }, + { + "checksum": "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d", + "check_gpg": true + }, + { + "checksum": "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc", + "check_gpg": true + }, + { + "checksum": "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e", + "check_gpg": true + }, + { + "checksum": "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663", + "check_gpg": true + }, + { + "checksum": "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2", + "check_gpg": true + }, + { + "checksum": "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac", + "check_gpg": true + }, + { + "checksum": "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03", + "check_gpg": true + }, + { + "checksum": "sha256:f50957375c79be57f391625b97d6ea74505e05f2edc6b9bc6768d5e3ad6ef8f8", + "check_gpg": true + }, + { + "checksum": "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576", + "check_gpg": true + }, + { + "checksum": "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb", + "check_gpg": true + }, + { + "checksum": "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165", + "check_gpg": true + }, + { + "checksum": "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108", + "check_gpg": true + }, + { + "checksum": "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a", + "check_gpg": true + }, + { + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "checksum": "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3", + "check_gpg": true + }, + { + "checksum": "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071", + "check_gpg": true + }, + { + "checksum": "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2", + "check_gpg": true + }, + { + "checksum": "sha256:687d00eb0b77446dbd78aaa0f4f99cc080c677930ad783120483614255264a3d", + "check_gpg": true + }, + { + "checksum": "sha256:6b694ee239a2e3f38c401e975de392e3731ad8b18be5a3249ea02f19e87cb5cb", + "check_gpg": true + }, + { + "checksum": "sha256:93161df6d62fe654c7cdba9ae36343d2549b437b27eac816a80f8d7c32a47162", + "check_gpg": true + }, + { + "checksum": "sha256:4f9bbd08f6019b3482342d616d6b04e6481924ea34fbfe8d30ef63402a92e9b1", + "check_gpg": true + }, + { + "checksum": "sha256:704ebfc50ace9417ed28f4530d778359a4c2f95d524c2e99346472245e30b548", + "check_gpg": true + }, + { + "checksum": "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5", + "check_gpg": true + }, + { + "checksum": "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454", + "check_gpg": true + }, + { + "checksum": "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612", + "check_gpg": true + }, + { + "checksum": "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1", + "check_gpg": true + }, + { + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "checksum": "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c", + "check_gpg": true + }, + { + "checksum": "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18", + "check_gpg": true + }, + { + "checksum": "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df", + "check_gpg": true + }, + { + "checksum": "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f", + "check_gpg": true + }, + { + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "checksum": "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7", + "check_gpg": true + }, + { + "checksum": "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f", + "check_gpg": true + }, + { + "checksum": "sha256:d2c819a7e607a9e22f55047ed03d064e4b0f125ad4fb20532c543a6d8af8bfa5", + "check_gpg": true + }, + { + "checksum": "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa", + "check_gpg": true + }, + { + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "checksum": "sha256:b3c4cfdf820225133f4e9e600de3300ef0c7bac34139433505dd4482da52be22", + "check_gpg": true + }, + { + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "checksum": "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05", + "check_gpg": true + }, + { + "checksum": "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431", + "check_gpg": true + }, + { + "checksum": "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488", + "check_gpg": true + }, + { + "checksum": "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c", + "check_gpg": true + }, + { + "checksum": "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "vfs_type": "ext4", + "path": "/", + "options": "defaults", + "freq": 1, + "passno": 1 + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "kernel_opts": "ro no_timer_check console=ttyS0,115200n8 console=tty1 biosdevname=0 net.ifnames=0 console=ttyS0,115200", + "legacy": "i386-pc" + } + }, + { + "name": "org.osbuild.systemd", + "options": { + "enabled_services": [ + "cloud-init.service" + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "raw", + "filename": "image.raw", + "size": 6442450944, + "ptuuid": "0x14fc63d2", + "pttype": "mbr", + "partitions": [ + { + "start": 2048, + "bootable": true, + "filesystem": { + "type": "ext4", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.111", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm", + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/acl-2.2.53-4.fc31.x86_64.rpm", + "checksum": "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d", + "check_gpg": true + }, + { + "name": "adobe-source-code-pro-fonts", + "epoch": 0, + "version": "2.030.1.050", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm", + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "name": "adwaita-cursor-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "name": "adwaita-icon-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/alternatives-1.11-5.fc31.x86_64.rpm", + "checksum": "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081", + "check_gpg": true + }, + { + "name": "at-spi2-atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.x86_64.rpm", + "checksum": "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355", + "check_gpg": true + }, + { + "name": "at-spi2-core", + "epoch": 0, + "version": "2.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1", + "check_gpg": true + }, + { + "name": "atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/atk-2.34.1-1.fc31.x86_64.rpm", + "checksum": "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm", + "checksum": "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09", + "check_gpg": true + }, + { + "name": "avahi-libs", + "epoch": 0, + "version": "0.7", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/avahi-libs-0.7-20.fc31.x86_64.rpm", + "checksum": "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "8.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm", + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bash-5.0.7-3.fc31.x86_64.rpm", + "checksum": "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3", + "check_gpg": true + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.7", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/brotli-1.0.7-6.fc31.x86_64.rpm", + "checksum": "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.x86_64.rpm", + "checksum": "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm", + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "name": "cairo", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-1.16.0-6.fc31.x86_64.rpm", + "checksum": "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a", + "check_gpg": true + }, + { + "name": "cairo-gobject", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.x86_64.rpm", + "checksum": "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3", + "check_gpg": true + }, + { + "name": "colord-libs", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/colord-libs-1.4.4-2.fc31.x86_64.rpm", + "checksum": "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-8.31-4.fc31.x86_64.rpm", + "checksum": "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-common-8.31-4.fc31.x86_64.rpm", + "checksum": "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "12.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cpio-2.12-12.fc31.x86_64.rpm", + "checksum": "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-2.9.6-21.fc31.x86_64.rpm", + "checksum": "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.x86_64.rpm", + "checksum": "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20190816", + "release": "4.gitbb9bf99.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm", + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8", + "check_gpg": true + }, + { + "name": "cups-libs", + "epoch": 1, + "version": "2.2.12", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cups-libs-2.2.12-2.fc31.x86_64.rpm", + "checksum": "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/curl-7.66.0-1.fc31.x86_64.rpm", + "checksum": "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.x86_64.rpm", + "checksum": "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-1.12.16-3.fc31.x86_64.rpm", + "checksum": "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "21", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-broker-21-6.fc31.x86_64.rpm", + "checksum": "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm", + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-3.fc31.x86_64.rpm", + "checksum": "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71", + "check_gpg": true + }, + { + "name": "dconf", + "epoch": 0, + "version": "0.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dconf-0.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-2.fc31.x86_64.rpm", + "checksum": "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-1.02.163-2.fc31.x86_64.rpm", + "checksum": "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.x86_64.rpm", + "checksum": "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/diffutils-3.7-3.fc31.x86_64.rpm", + "checksum": "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dosfstools-4.1-9.fc31.x86_64.rpm", + "checksum": "sha256:b110ee65fa2dee77585ec77cab592cba2434d579f8afbed4d2a908ad1addccfc", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "27.git20181204.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-049-27.git20181204.fc31.1.x86_64.rpm", + "checksum": "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm", + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libelf-0.177-1.fc31.x86_64.rpm", + "checksum": "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libs-0.177-1.fc31.x86_64.rpm", + "checksum": "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/expat-2.2.8-1.fc31.x86_64.rpm", + "checksum": "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm", + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-31-1.noarch.rpm", + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-common-31-1.noarch.rpm", + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-repos-31-1.noarch.rpm", + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-5.37-3.fc31.x86_64.rpm", + "checksum": "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-libs-5.37-3.fc31.x86_64.rpm", + "checksum": "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.12", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/filesystem-3.12-2.fc31.x86_64.rpm", + "checksum": "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "24.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/findutils-4.6.0-24.fc31.x86_64.rpm", + "checksum": "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-7.fc31.x86_64.rpm", + "checksum": "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.x86_64.rpm", + "checksum": "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2", + "check_gpg": true + }, + { + "name": "fontconfig", + "epoch": 0, + "version": "2.13.92", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontconfig-2.13.92-3.fc31.x86_64.rpm", + "checksum": "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54", + "check_gpg": true + }, + { + "name": "fontpackages-filesystem", + "epoch": 0, + "version": "1.44", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm", + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.10.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/freetype-2.10.0-3.fc31.x86_64.rpm", + "checksum": "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee", + "check_gpg": true + }, + { + "name": "fribidi", + "epoch": 0, + "version": "1.0.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fribidi-1.0.5-4.fc31.x86_64.rpm", + "checksum": "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-8.fc31.x86_64.rpm", + "checksum": "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gawk-5.0.1-5.fc31.x86_64.rpm", + "checksum": "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203", + "check_gpg": true + }, + { + "name": "gcr", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-3.33.4-1.fc31.x86_64.rpm", + "checksum": "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd", + "check_gpg": true + }, + { + "name": "gcr-base", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-base-3.33.4-1.fc31.x86_64.rpm", + "checksum": "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.x86_64.rpm", + "checksum": "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.x86_64.rpm", + "checksum": "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2-modules", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.x86_64.rpm", + "checksum": "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3", + "check_gpg": true + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib-networking-2.62.1-1.fc31.x86_64.rpm", + "checksum": "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib2-2.62.1-1.fc31.x86_64.rpm", + "checksum": "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13", + "check_gpg": true + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:f67d5cc67029c6c38185f94b72aaa9034a49f5c4f166066c8268b41e1b18a202", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-common-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gmp-6.1.2-10.fc31.x86_64.rpm", + "checksum": "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a", + "check_gpg": true + }, + { + "name": "gnome-keyring", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-2.2.17-2.fc31.x86_64.rpm", + "checksum": "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.x86_64.rpm", + "checksum": "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnutls-3.6.10-1.fc31.x86_64.rpm", + "checksum": "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gpgme-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d", + "check_gpg": true + }, + { + "name": "graphite2", + "epoch": 0, + "version": "1.3.13", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/graphite2-1.3.13-1.fc31.x86_64.rpm", + "checksum": "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grep-3.3-3.fc31.x86_64.rpm", + "checksum": "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-common-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8", + "check_gpg": true + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-extra-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031", + "check_gpg": true + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8", + "check_gpg": true + }, + { + "name": "gtk-update-icon-cache", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.x86_64.rpm", + "checksum": "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d", + "check_gpg": true + }, + { + "name": "gtk3", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk3-3.24.12-3.fc31.x86_64.rpm", + "checksum": "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gzip-1.10-1.fc31.x86_64.rpm", + "checksum": "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01", + "check_gpg": true + }, + { + "name": "harfbuzz", + "epoch": 0, + "version": "2.6.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/harfbuzz-2.6.1-2.fc31.x86_64.rpm", + "checksum": "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994", + "check_gpg": true + }, + { + "name": "hicolor-icon-theme", + "epoch": 0, + "version": "0.17", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm", + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.x86_64.rpm", + "checksum": "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.3", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-libs-1.8.3-5.fc31.x86_64.rpm", + "checksum": "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4", + "check_gpg": true + }, + { + "name": "jasper-libs", + "epoch": 0, + "version": "2.0.14", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jasper-libs-2.0.14-9.fc31.x86_64.rpm", + "checksum": "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00", + "check_gpg": true + }, + { + "name": "jbigkit-libs", + "epoch": 0, + "version": "2.1", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jbigkit-libs-2.1-17.fc31.x86_64.rpm", + "checksum": "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-c-0.13.1-6.fc31.x86_64.rpm", + "checksum": "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422", + "check_gpg": true + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-glib-1.4.4-3.fc31.x86_64.rpm", + "checksum": "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-2.0.4-14.fc31.x86_64.rpm", + "checksum": "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-legacy-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-misc-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-3.fc31.x86_64.rpm", + "checksum": "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-26-4.fc31.x86_64.rpm", + "checksum": "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-libs-26-4.fc31.x86_64.rpm", + "checksum": "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kpartx-0.8.0-3.fc31.x86_64.rpm", + "checksum": "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.17", + "release": "45.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/krb5-libs-1.17-45.fc31.x86_64.rpm", + "checksum": "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466", + "check_gpg": true + }, + { + "name": "lcms2", + "epoch": 0, + "version": "2.9", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lcms2-2.9-6.fc31.x86_64.rpm", + "checksum": "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b", + "check_gpg": true + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-1.6.8-3.fc31.x86_64.rpm", + "checksum": "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679", + "check_gpg": true + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm", + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXau-1.0.9-2.fc31.x86_64.rpm", + "checksum": "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834", + "check_gpg": true + }, + { + "name": "libXcomposite", + "epoch": 0, + "version": "0.4.4", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcomposite-0.4.4-17.fc31.x86_64.rpm", + "checksum": "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c", + "check_gpg": true + }, + { + "name": "libXcursor", + "epoch": 0, + "version": "1.1.15", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcursor-1.1.15-6.fc31.x86_64.rpm", + "checksum": "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59", + "check_gpg": true + }, + { + "name": "libXdamage", + "epoch": 0, + "version": "1.1.4", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXdamage-1.1.4-17.fc31.x86_64.rpm", + "checksum": "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a", + "check_gpg": true + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXext-1.3.4-2.fc31.x86_64.rpm", + "checksum": "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077", + "check_gpg": true + }, + { + "name": "libXfixes", + "epoch": 0, + "version": "5.0.3", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXfixes-5.0.3-10.fc31.x86_64.rpm", + "checksum": "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c", + "check_gpg": true + }, + { + "name": "libXft", + "epoch": 0, + "version": "2.3.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXft-2.3.3-2.fc31.x86_64.rpm", + "checksum": "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc", + "check_gpg": true + }, + { + "name": "libXi", + "epoch": 0, + "version": "1.7.10", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXi-1.7.10-2.fc31.x86_64.rpm", + "checksum": "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141", + "check_gpg": true + }, + { + "name": "libXinerama", + "epoch": 0, + "version": "1.1.4", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXinerama-1.1.4-4.fc31.x86_64.rpm", + "checksum": "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1", + "check_gpg": true + }, + { + "name": "libXrandr", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrandr-1.5.2-2.fc31.x86_64.rpm", + "checksum": "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1", + "check_gpg": true + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrender-0.9.10-10.fc31.x86_64.rpm", + "checksum": "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7", + "check_gpg": true + }, + { + "name": "libXtst", + "epoch": 0, + "version": "1.2.3", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXtst-1.2.3-10.fc31.x86_64.rpm", + "checksum": "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libacl-2.2.53-4.fc31.x86_64.rpm", + "checksum": "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc", + "check_gpg": true + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.111", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libaio-0.3.111-6.fc31.x86_64.rpm", + "checksum": "sha256:ee6596a5010c2b4a038861828ecca240aa03c592dacd83c3a70d44cb8ee50408", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libarchive-3.4.0-1.fc31.x86_64.rpm", + "checksum": "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libargon2-20171227-3.fc31.x86_64.rpm", + "checksum": "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libassuan-2.5.3-2.fc31.x86_64.rpm", + "checksum": "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libattr-2.4.48-7.fc31.x86_64.rpm", + "checksum": "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libblkid-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-2.26-6.fc31.x86_64.rpm", + "checksum": "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-ng-0.7.9-8.fc31.x86_64.rpm", + "checksum": "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcom_err-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcomps-0.1.11-3.fc31.x86_64.rpm", + "checksum": "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcroco-0.6.13-2.fc31.x86_64.rpm", + "checksum": "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcurl-7.66.0-1.fc31.x86_64.rpm", + "checksum": "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241", + "check_gpg": true + }, + { + "name": "libdatrie", + "epoch": 0, + "version": "0.2.9", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdatrie-0.2.9-10.fc31.x86_64.rpm", + "checksum": "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-5.3.28-38.fc31.x86_64.rpm", + "checksum": "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-38.fc31.x86_64.rpm", + "checksum": "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdnf-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "28.20190324cvs.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.x86_64.rpm", + "checksum": "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801", + "check_gpg": true + }, + { + "name": "libepoxy", + "epoch": 0, + "version": "1.5.3", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libepoxy-1.5.3-4.fc31.x86_64.rpm", + "checksum": "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libevent-2.1.8-7.fc31.x86_64.rpm", + "checksum": "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libfdisk-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "23.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libffi-3.1-23.fc31.x86_64.rpm", + "checksum": "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcc-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-1.fc31.x86_64.rpm", + "checksum": "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgomp-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgpg-error-1.36-2.fc31.x86_64.rpm", + "checksum": "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd", + "check_gpg": true + }, + { + "name": "libgusb", + "epoch": 0, + "version": "0.3.0", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgusb-0.3.0-5.fc31.x86_64.rpm", + "checksum": "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libidn2-2.2.0-2.fc31.x86_64.rpm", + "checksum": "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc", + "check_gpg": true + }, + { + "name": "libjpeg-turbo", + "epoch": 0, + "version": "2.0.2", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.x86_64.rpm", + "checksum": "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-1.fc31.x86_64.rpm", + "checksum": "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-1.fc31.x86_64.rpm", + "checksum": "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libksba-1.3.5-10.fc31.x86_64.rpm", + "checksum": "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-9.fc31.x86_64.rpm", + "checksum": "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43", + "check_gpg": true + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodman-2.0.1-20.fc31.x86_64.rpm", + "checksum": "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664", + "check_gpg": true + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.15", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.x86_64.rpm", + "checksum": "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmount-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.39.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnghttp2-1.39.2-1.fc31.x86_64.rpm", + "checksum": "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "5.20180605git4a062cf.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.x86_64.rpm", + "checksum": "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.0", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpcap-1.9.0-4.fc31.x86_64.rpm", + "checksum": "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc", + "check_gpg": true + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.37", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpng-1.6.37-2.fc31.x86_64.rpm", + "checksum": "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf", + "check_gpg": true + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libproxy-0.4.15-14.fc31.x86_64.rpm", + "checksum": "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpsl-0.21.0-2.fc31.x86_64.rpm", + "checksum": "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpwquality-1.4.1-1.fc31.x86_64.rpm", + "checksum": "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.10.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/librepo-1.10.5-1.fc31.x86_64.rpm", + "checksum": "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.10.1", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm", + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libseccomp-2.4.1-1.fc31.x86_64.rpm", + "checksum": "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.19.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsecret-0.19.1-1.fc31.x86_64.rpm", + "checksum": "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-utils-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsemanage-2.9-3.fc31.x86_64.rpm", + "checksum": "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsepol-2.9-2.fc31.x86_64.rpm", + "checksum": "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsigsegv-2.11-8.fc31.x86_64.rpm", + "checksum": "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsmartcols-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.5", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsolv-0.7.5-3.fc31.x86_64.rpm", + "checksum": "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388", + "check_gpg": true + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.68.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsoup-2.68.2-1.fc31.x86_64.rpm", + "checksum": "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libss-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-0.9.0-6.fc31.x86_64.rpm", + "checksum": "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm", + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libstdc++-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.14", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtasn1-4.14-2.fc31.x86_64.rpm", + "checksum": "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c", + "check_gpg": true + }, + { + "name": "libthai", + "epoch": 0, + "version": "0.1.28", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libthai-0.1.28-3.fc31.x86_64.rpm", + "checksum": "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500", + "check_gpg": true + }, + { + "name": "libtiff", + "epoch": 0, + "version": "4.0.10", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtiff-4.0.10-6.fc31.x86_64.rpm", + "checksum": "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "2.rc3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.x86_64.rpm", + "checksum": "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libunistring-0.9.10-6.fc31.x86_64.rpm", + "checksum": "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.22", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libusbx-1.0.22-4.fc31.x86_64.rpm", + "checksum": "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libutempter-1.1.6-17.fc31.x86_64.rpm", + "checksum": "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuuid-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libverto-0.3.0-8.fc31.x86_64.rpm", + "checksum": "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348", + "check_gpg": true + }, + { + "name": "libwayland-client", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-client-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff", + "check_gpg": true + }, + { + "name": "libwayland-cursor", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce", + "check_gpg": true + }, + { + "name": "libwayland-egl", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9", + "check_gpg": true + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcb-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-4.4.10-1.fc31.x86_64.rpm", + "checksum": "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.10-1.fc31.x86_64.rpm", + "checksum": "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.8.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.x86_64.rpm", + "checksum": "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxml2-2.9.9-3.fc31.x86_64.rpm", + "checksum": "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libyaml-0.2.2-2.fc31.x86_64.rpm", + "checksum": "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libzstd-1.4.2-1.fc31.x86_64.rpm", + "checksum": "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-6.fc31.x86_64.rpm", + "checksum": "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-1.fc31.x86_64.rpm", + "checksum": "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mkpasswd-5.5.2-1.fc31.x86_64.rpm", + "checksum": "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mpfr-3.1.6-5.fc31.x86_64.rpm", + "checksum": "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-6.1-12.20190803.fc31.x86_64.rpm", + "checksum": "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm", + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.x86_64.rpm", + "checksum": "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nettle-3.5.1-3.fc31.x86_64.rpm", + "checksum": "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/npth-1.6-3.fc31.x86_64.rpm", + "checksum": "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openldap-2.4.47-3.fc31.x86_64.rpm", + "checksum": "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-1.1.1d-2.fc31.x86_64.rpm", + "checksum": "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.x86_64.rpm", + "checksum": "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.x86_64.rpm", + "checksum": "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/os-prober-1.77-3.fc31.x86_64.rpm", + "checksum": "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.x86_64.rpm", + "checksum": "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.x86_64.rpm", + "checksum": "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "18.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pam-1.3.1-18.fc31.x86_64.rpm", + "checksum": "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b", + "check_gpg": true + }, + { + "name": "pango", + "epoch": 0, + "version": "1.44.6", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pango-1.44.6-1.fc31.x86_64.rpm", + "checksum": "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.43", + "release": "2.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre-8.43-2.fc31.1.x86_64.rpm", + "checksum": "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.33", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre2-10.33-14.fc31.x86_64.rpm", + "checksum": "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pigz-2.4-5.fc31.x86_64.rpm", + "checksum": "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pinentry-1.1.0-6.fc31.x86_64.rpm", + "checksum": "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976", + "check_gpg": true + }, + { + "name": "pixman", + "epoch": 0, + "version": "0.38.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pixman-0.38.4-1.fc31.x86_64.rpm", + "checksum": "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/policycoreutils-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "18.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/popt-1.16-18.fc31.x86_64.rpm", + "checksum": "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-6.fc31.x86_64.rpm", + "checksum": "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm", + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm", + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-3.7.4-5.fc31.x86_64.rpm", + "checksum": "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.x86_64.rpm", + "checksum": "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libs-3.7.4-5.fc31.x86_64.rpm", + "checksum": "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-rpm-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-unbound-1.9.3-1.fc31.x86_64.rpm", + "checksum": "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7", + "check_gpg": true + }, + { + "name": "qemu-img", + "epoch": 2, + "version": "4.1.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qemu-img-4.1.0-2.fc31.x86_64.rpm", + "checksum": "sha256:669250ad47aad5939cf4d1b88036fd95a94845d8e0bbdb05e933f3d2fe262fea", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.x86_64.rpm", + "checksum": "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/readline-8.0-3.fc31.x86_64.rpm", + "checksum": "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc", + "check_gpg": true + }, + { + "name": "rest", + "epoch": 0, + "version": "0.8.1", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rest-0.8.1-6.fc31.x86_64.rpm", + "checksum": "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sed-4.5-4.fc31.x86_64.rpm", + "checksum": "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.3", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm", + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "16.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shadow-utils-4.6-16.fc31.x86_64.rpm", + "checksum": "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.14", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shared-mime-info-1.14-1.fc31.x86_64.rpm", + "checksum": "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.29.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.x86_64.rpm", + "checksum": "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5", + "check_gpg": true + }, + { + "name": "systemd-bootchart", + "epoch": 0, + "version": "233", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-bootchart-233-5.fc31.x86_64.rpm", + "checksum": "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm", + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-udev-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tar-1.32-2.fc31.x86_64.rpm", + "checksum": "sha256:9975496f29601a1c2cdb89e63aac698fdd8283ba3a52a9d91ead9473a0e064c8", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tss2-1331-2.fc31.x86_64.rpm", + "checksum": "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm", + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/unbound-libs-1.9.3-1.fc31.x86_64.rpm", + "checksum": "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/util-linux-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "15.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/which-2.21-15.fc31.x86_64.rpm", + "checksum": "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm", + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.27", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm", + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-5.2.4-6.fc31.x86_64.rpm", + "checksum": "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-libs-5.2.4-6.fc31.x86_64.rpm", + "checksum": "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.2", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.x86_64.rpm", + "checksum": "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "19.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zlib-1.2.11-19.fc31.x86_64.rpm", + "checksum": "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9", + "check_gpg": true + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.20.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/NetworkManager-1.20.4-1.fc31.x86_64.rpm", + "checksum": "sha256:6d8cbba688cea65fa80983cd7f140633e94cd58daa819342d1ae571a4ff174c6", + "check_gpg": true + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.20.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.20.4-1.fc31.x86_64.rpm", + "checksum": "sha256:2c5b5ce5f6e6d1d79f35eab253a12e19aeb863f4fe8ded94013f76a9834689fb", + "check_gpg": true + }, + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.111", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm", + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/acl-2.2.53-4.fc31.x86_64.rpm", + "checksum": "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d", + "check_gpg": true + }, + { + "name": "adobe-source-code-pro-fonts", + "epoch": 0, + "version": "2.030.1.050", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm", + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "name": "adwaita-cursor-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "name": "adwaita-icon-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/alternatives-1.11-5.fc31.x86_64.rpm", + "checksum": "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081", + "check_gpg": true + }, + { + "name": "at-spi2-atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.x86_64.rpm", + "checksum": "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355", + "check_gpg": true + }, + { + "name": "at-spi2-core", + "epoch": 0, + "version": "2.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1", + "check_gpg": true + }, + { + "name": "atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/atk-2.34.1-1.fc31.x86_64.rpm", + "checksum": "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5", + "check_gpg": true + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm", + "checksum": "sha256:cc02df4125eaebf642edd9bf00031ec09871c285816c03112909ef1005410eaa", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm", + "checksum": "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09", + "check_gpg": true + }, + { + "name": "avahi-libs", + "epoch": 0, + "version": "0.7", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/avahi-libs-0.7-20.fc31.x86_64.rpm", + "checksum": "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "8.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm", + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bash-5.0.7-3.fc31.x86_64.rpm", + "checksum": "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3", + "check_gpg": true + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.7", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/brotli-1.0.7-6.fc31.x86_64.rpm", + "checksum": "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.x86_64.rpm", + "checksum": "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7", + "check_gpg": true + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.15.0", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/c-ares-1.15.0-4.fc31.x86_64.rpm", + "checksum": "sha256:239a9576864532edd325e72b62a10ef147a2bcc0a925079b19fb9cb74bab0dd7", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm", + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "name": "cairo", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-1.16.0-6.fc31.x86_64.rpm", + "checksum": "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a", + "check_gpg": true + }, + { + "name": "cairo-gobject", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.x86_64.rpm", + "checksum": "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3", + "check_gpg": true + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "2.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/checkpolicy-2.9-2.fc31.x86_64.rpm", + "checksum": "sha256:3629a3675c7dadd89f3b3d855e7c57d8f93d30d59fa00fdeabfc5e5e39ca4937", + "check_gpg": true + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/chrony-3.5-4.fc31.x86_64.rpm", + "checksum": "sha256:07a3523159719382e2bb9b83961bfe00836cc97f75a9706d02ad73dddb161856", + "check_gpg": true + }, + { + "name": "cloud-init", + "epoch": 0, + "version": "17.1", + "release": "11.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cloud-init-17.1-11.fc31.noarch.rpm", + "checksum": "sha256:9cc3e6534ae34343e7e4d056d46b9551da7d0a82c7bad378c3626d4b70d1bf62", + "check_gpg": true + }, + { + "name": "colord-libs", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/colord-libs-1.4.4-2.fc31.x86_64.rpm", + "checksum": "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-8.31-4.fc31.x86_64.rpm", + "checksum": "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-common-8.31-4.fc31.x86_64.rpm", + "checksum": "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "12.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cpio-2.12-12.fc31.x86_64.rpm", + "checksum": "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-2.9.6-21.fc31.x86_64.rpm", + "checksum": "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.x86_64.rpm", + "checksum": "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20190816", + "release": "4.gitbb9bf99.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm", + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8", + "check_gpg": true + }, + { + "name": "cups-libs", + "epoch": 1, + "version": "2.2.12", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cups-libs-2.2.12-2.fc31.x86_64.rpm", + "checksum": "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/curl-7.66.0-1.fc31.x86_64.rpm", + "checksum": "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.x86_64.rpm", + "checksum": "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-1.12.16-3.fc31.x86_64.rpm", + "checksum": "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "21", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-broker-21-6.fc31.x86_64.rpm", + "checksum": "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm", + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-3.fc31.x86_64.rpm", + "checksum": "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71", + "check_gpg": true + }, + { + "name": "dconf", + "epoch": 0, + "version": "0.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dconf-0.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27", + "check_gpg": true + }, + { + "name": "dejavu-fonts-common", + "epoch": 0, + "version": "2.37", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dejavu-fonts-common-2.37-2.fc31.noarch.rpm", + "checksum": "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc", + "check_gpg": true + }, + { + "name": "dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-2.fc31.noarch.rpm", + "checksum": "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-2.fc31.x86_64.rpm", + "checksum": "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-1.02.163-2.fc31.x86_64.rpm", + "checksum": "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.x86_64.rpm", + "checksum": "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732", + "check_gpg": true + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.4.1", + "release": "15.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dhcp-client-4.4.1-15.fc31.x86_64.rpm", + "checksum": "sha256:33334afdde6c813b18c18897dca19fab5a2ce090eba0b5ea0a38f43f1081c190", + "check_gpg": true + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.4.1", + "release": "15.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dhcp-common-4.4.1-15.fc31.noarch.rpm", + "checksum": "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/diffutils-3.7-3.fc31.x86_64.rpm", + "checksum": "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.9", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-plugins-core-4.0.9-1.fc31.noarch.rpm", + "checksum": "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "27.git20181204.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-049-27.git20181204.fc31.1.x86_64.rpm", + "checksum": "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159", + "check_gpg": true + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "049", + "release": "27.git20181204.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-config-generic-049-27.git20181204.fc31.1.x86_64.rpm", + "checksum": "sha256:34a9986b8b61812ceaf32ce3b189bd0b2cb4adaaf47d76ec1f50ce07c45b5675", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89", + "check_gpg": true + }, + { + "name": "ebtables-legacy", + "epoch": 0, + "version": "2.0.10", + "release": "37.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/ebtables-legacy-2.0.10-37.fc31.x86_64.rpm", + "checksum": "sha256:cab1b0c3bdae2a07e15b90b414f50753c759e325b6f0cddfa27895748c77f082", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm", + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libelf-0.177-1.fc31.x86_64.rpm", + "checksum": "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libs-0.177-1.fc31.x86_64.rpm", + "checksum": "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/expat-2.2.8-1.fc31.x86_64.rpm", + "checksum": "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm", + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-31-1.noarch.rpm", + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-common-31-1.noarch.rpm", + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-repos-31-1.noarch.rpm", + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-5.37-3.fc31.x86_64.rpm", + "checksum": "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-libs-5.37-3.fc31.x86_64.rpm", + "checksum": "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.12", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/filesystem-3.12-2.fc31.x86_64.rpm", + "checksum": "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "24.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/findutils-4.6.0-24.fc31.x86_64.rpm", + "checksum": "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-7.fc31.x86_64.rpm", + "checksum": "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.x86_64.rpm", + "checksum": "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2", + "check_gpg": true + }, + { + "name": "firewalld", + "epoch": 0, + "version": "0.7.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/firewalld-0.7.2-1.fc31.noarch.rpm", + "checksum": "sha256:ab35a2d7f21aac1f33f9521607789e1c303fb63e4ea0681e9f724f86a1cc15c5", + "check_gpg": true + }, + { + "name": "firewalld-filesystem", + "epoch": 0, + "version": "0.7.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/firewalld-filesystem-0.7.2-1.fc31.noarch.rpm", + "checksum": "sha256:e76b3b9d14a0016542f61d0ab2981fbf2d779e522d0c36d9095a1cffecbf9272", + "check_gpg": true + }, + { + "name": "fontconfig", + "epoch": 0, + "version": "2.13.92", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontconfig-2.13.92-3.fc31.x86_64.rpm", + "checksum": "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54", + "check_gpg": true + }, + { + "name": "fontpackages-filesystem", + "epoch": 0, + "version": "1.44", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm", + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.10.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/freetype-2.10.0-3.fc31.x86_64.rpm", + "checksum": "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee", + "check_gpg": true + }, + { + "name": "fribidi", + "epoch": 0, + "version": "1.0.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fribidi-1.0.5-4.fc31.x86_64.rpm", + "checksum": "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-8.fc31.x86_64.rpm", + "checksum": "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gawk-5.0.1-5.fc31.x86_64.rpm", + "checksum": "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203", + "check_gpg": true + }, + { + "name": "gcr", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-3.33.4-1.fc31.x86_64.rpm", + "checksum": "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd", + "check_gpg": true + }, + { + "name": "gcr-base", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-base-3.33.4-1.fc31.x86_64.rpm", + "checksum": "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.x86_64.rpm", + "checksum": "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.x86_64.rpm", + "checksum": "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2-modules", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.x86_64.rpm", + "checksum": "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c", + "check_gpg": true + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20190806", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/geolite2-city-20190806-1.fc31.noarch.rpm", + "checksum": "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565", + "check_gpg": true + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20190806", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/geolite2-country-20190806-1.fc31.noarch.rpm", + "checksum": "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3", + "check_gpg": true + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib-networking-2.62.1-1.fc31.x86_64.rpm", + "checksum": "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib2-2.62.1-1.fc31.x86_64.rpm", + "checksum": "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-common-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb", + "check_gpg": true + }, + { + "name": "glibc-langpack-en", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:6f2dae9b49bed8e1036a21aadd92ea2eb371979f6714ec2bce5742de051eeb14", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gmp-6.1.2-10.fc31.x86_64.rpm", + "checksum": "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a", + "check_gpg": true + }, + { + "name": "gnome-keyring", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-2.2.17-2.fc31.x86_64.rpm", + "checksum": "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.x86_64.rpm", + "checksum": "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnutls-3.6.10-1.fc31.x86_64.rpm", + "checksum": "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458", + "check_gpg": true + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.62.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gobject-introspection-1.62.0-1.fc31.x86_64.rpm", + "checksum": "sha256:ab5ad6fc076fd82be6a2ca9d77998fc06c2c9e7296de960b7549239efb9f971d", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gpgme-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d", + "check_gpg": true + }, + { + "name": "graphite2", + "epoch": 0, + "version": "1.3.13", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/graphite2-1.3.13-1.fc31.x86_64.rpm", + "checksum": "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grep-3.3-3.fc31.x86_64.rpm", + "checksum": "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada", + "check_gpg": true + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/groff-base-1.22.3-20.fc31.x86_64.rpm", + "checksum": "sha256:21ccdbe703caa6a08056d2bc75c1e184f811472a6e320e5af64b8757fcd07166", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-common-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8", + "check_gpg": true + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-extra-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031", + "check_gpg": true + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8", + "check_gpg": true + }, + { + "name": "gtk-update-icon-cache", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.x86_64.rpm", + "checksum": "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d", + "check_gpg": true + }, + { + "name": "gtk3", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk3-3.24.12-3.fc31.x86_64.rpm", + "checksum": "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gzip-1.10-1.fc31.x86_64.rpm", + "checksum": "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01", + "check_gpg": true + }, + { + "name": "harfbuzz", + "epoch": 0, + "version": "2.6.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/harfbuzz-2.6.1-2.fc31.x86_64.rpm", + "checksum": "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994", + "check_gpg": true + }, + { + "name": "hicolor-icon-theme", + "epoch": 0, + "version": "0.17", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm", + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.20", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hostname-3.20-9.fc31.x86_64.rpm", + "checksum": "sha256:a188b5c697b734d4ed7d8f954b6875b9d401dc2a3c10bfd20d03db131ca73ab5", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.x86_64.rpm", + "checksum": "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6", + "check_gpg": true + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.02", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/initscripts-10.02-2.fc31.x86_64.rpm", + "checksum": "sha256:2af3bbdab1f387ae7af2534846e33ab6d2ca7777399c64191f95699d576cd4ba", + "check_gpg": true + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.2.5", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipcalc-0.2.5-3.fc31.x86_64.rpm", + "checksum": "sha256:c8e0a36410ebbd9db0a10e1fbecbae8f6288b9be86752d2e91725d5dd98ec65d", + "check_gpg": true + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.3.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iproute-5.3.0-1.fc31.x86_64.rpm", + "checksum": "sha256:cef060334e8c21b5d2e3a87bdd0ad5ac1be389d7794735506b9d3c65c2923cd3", + "check_gpg": true + }, + { + "name": "iproute-tc", + "epoch": 0, + "version": "5.3.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iproute-tc-5.3.0-1.fc31.x86_64.rpm", + "checksum": "sha256:d219a6c4a2410d6ef9bad2b337557779b969e278b657ffede83c021c20f665ca", + "check_gpg": true + }, + { + "name": "ipset", + "epoch": 0, + "version": "7.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipset-7.3-1.fc31.x86_64.rpm", + "checksum": "sha256:e4eb72f080bdb339a4748fa9a0749953628189da1c930294c68902bb8b9f8eeb", + "check_gpg": true + }, + { + "name": "ipset-libs", + "epoch": 0, + "version": "7.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipset-libs-7.3-1.fc31.x86_64.rpm", + "checksum": "sha256:efece5a4b070f197a1db3f7e1d030878b1ccdff6a8a0d24c596ecfae374ef194", + "check_gpg": true + }, + { + "name": "iptables", + "epoch": 0, + "version": "1.8.3", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-1.8.3-5.fc31.x86_64.rpm", + "checksum": "sha256:8e9a916cd4843e7d09e3d1b814dbb55bb3b45672b1058044cfeaf8e19ad27bd7", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.3", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-libs-1.8.3-5.fc31.x86_64.rpm", + "checksum": "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4", + "check_gpg": true + }, + { + "name": "iputils", + "epoch": 0, + "version": "20190515", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iputils-20190515-3.fc31.x86_64.rpm", + "checksum": "sha256:72b5df6982fecdbee30d40bbb6042c72ed0f31b787f289b4a27f0dffc6f609fe", + "check_gpg": true + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.12", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jansson-2.12-4.fc31.x86_64.rpm", + "checksum": "sha256:dc924dd33a9bd0b9483ebdbcf7caecbe1f48b8a135f1521291c8433fa76f4603", + "check_gpg": true + }, + { + "name": "jasper-libs", + "epoch": 0, + "version": "2.0.14", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jasper-libs-2.0.14-9.fc31.x86_64.rpm", + "checksum": "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00", + "check_gpg": true + }, + { + "name": "jbigkit-libs", + "epoch": 0, + "version": "2.1", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jbigkit-libs-2.1-17.fc31.x86_64.rpm", + "checksum": "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-c-0.13.1-6.fc31.x86_64.rpm", + "checksum": "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422", + "check_gpg": true + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-glib-1.4.4-3.fc31.x86_64.rpm", + "checksum": "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-2.0.4-14.fc31.x86_64.rpm", + "checksum": "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-legacy-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-misc-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "name": "kernel", + "epoch": 0, + "version": "5.3.7", + "release": "301.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-5.3.7-301.fc31.x86_64.rpm", + "checksum": "sha256:fb2ff56d3a273eac8775bac03b12f1cf8affa0b92585912de0abf3bc1ccdfa44", + "check_gpg": true + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "5.3.7", + "release": "301.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-core-5.3.7-301.fc31.x86_64.rpm", + "checksum": "sha256:f0509e333636e5c34726c8a2b8260bf88fe0a35b95cae6dda62191fee1be4c6a", + "check_gpg": true + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "5.3.7", + "release": "301.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-modules-5.3.7-301.fc31.x86_64.rpm", + "checksum": "sha256:1e5f14d26556e380ed129289c1b98d46d951966e548613b9c2ee0d3616ac96d1", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-3.fc31.x86_64.rpm", + "checksum": "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-26-4.fc31.x86_64.rpm", + "checksum": "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-libs-26-4.fc31.x86_64.rpm", + "checksum": "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kpartx-0.8.0-3.fc31.x86_64.rpm", + "checksum": "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.17", + "release": "45.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/krb5-libs-1.17-45.fc31.x86_64.rpm", + "checksum": "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466", + "check_gpg": true + }, + { + "name": "langpacks-core-en", + "epoch": 0, + "version": "2.0", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/langpacks-core-en-2.0-7.fc31.noarch.rpm", + "checksum": "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552", + "check_gpg": true + }, + { + "name": "langpacks-en", + "epoch": 0, + "version": "2.0", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/langpacks-en-2.0-7.fc31.noarch.rpm", + "checksum": "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b", + "check_gpg": true + }, + { + "name": "lcms2", + "epoch": 0, + "version": "2.9", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lcms2-2.9-6.fc31.x86_64.rpm", + "checksum": "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b", + "check_gpg": true + }, + { + "name": "less", + "epoch": 0, + "version": "551", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/less-551-2.fc31.x86_64.rpm", + "checksum": "sha256:22db6d1e1f34a43c3d045b6750ff3a32184d47c2aedf3dabc93640057de1f4fa", + "check_gpg": true + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-1.6.8-3.fc31.x86_64.rpm", + "checksum": "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679", + "check_gpg": true + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm", + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXau-1.0.9-2.fc31.x86_64.rpm", + "checksum": "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834", + "check_gpg": true + }, + { + "name": "libXcomposite", + "epoch": 0, + "version": "0.4.4", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcomposite-0.4.4-17.fc31.x86_64.rpm", + "checksum": "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c", + "check_gpg": true + }, + { + "name": "libXcursor", + "epoch": 0, + "version": "1.1.15", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcursor-1.1.15-6.fc31.x86_64.rpm", + "checksum": "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59", + "check_gpg": true + }, + { + "name": "libXdamage", + "epoch": 0, + "version": "1.1.4", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXdamage-1.1.4-17.fc31.x86_64.rpm", + "checksum": "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a", + "check_gpg": true + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXext-1.3.4-2.fc31.x86_64.rpm", + "checksum": "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077", + "check_gpg": true + }, + { + "name": "libXfixes", + "epoch": 0, + "version": "5.0.3", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXfixes-5.0.3-10.fc31.x86_64.rpm", + "checksum": "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c", + "check_gpg": true + }, + { + "name": "libXft", + "epoch": 0, + "version": "2.3.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXft-2.3.3-2.fc31.x86_64.rpm", + "checksum": "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc", + "check_gpg": true + }, + { + "name": "libXi", + "epoch": 0, + "version": "1.7.10", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXi-1.7.10-2.fc31.x86_64.rpm", + "checksum": "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141", + "check_gpg": true + }, + { + "name": "libXinerama", + "epoch": 0, + "version": "1.1.4", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXinerama-1.1.4-4.fc31.x86_64.rpm", + "checksum": "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1", + "check_gpg": true + }, + { + "name": "libXrandr", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrandr-1.5.2-2.fc31.x86_64.rpm", + "checksum": "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1", + "check_gpg": true + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrender-0.9.10-10.fc31.x86_64.rpm", + "checksum": "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7", + "check_gpg": true + }, + { + "name": "libXtst", + "epoch": 0, + "version": "1.2.3", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXtst-1.2.3-10.fc31.x86_64.rpm", + "checksum": "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libacl-2.2.53-4.fc31.x86_64.rpm", + "checksum": "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libarchive-3.4.0-1.fc31.x86_64.rpm", + "checksum": "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libargon2-20171227-3.fc31.x86_64.rpm", + "checksum": "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libassuan-2.5.3-2.fc31.x86_64.rpm", + "checksum": "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libattr-2.4.48-7.fc31.x86_64.rpm", + "checksum": "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be", + "check_gpg": true + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-43.fc31.x86_64.rpm", + "checksum": "sha256:469d12368377399b8eaa7ec8cf1b6378ab18476b4a2b61b79091510a8945c6aa", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libblkid-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-2.26-6.fc31.x86_64.rpm", + "checksum": "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-ng-0.7.9-8.fc31.x86_64.rpm", + "checksum": "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d", + "check_gpg": true + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcollection-0.7.0-43.fc31.x86_64.rpm", + "checksum": "sha256:0f26eca4ac936554818769fe32aca5e878af2616e83f836ec463e59eb4f9f1f9", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcom_err-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcomps-0.1.11-3.fc31.x86_64.rpm", + "checksum": "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcroco-0.6.13-2.fc31.x86_64.rpm", + "checksum": "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcurl-7.66.0-1.fc31.x86_64.rpm", + "checksum": "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241", + "check_gpg": true + }, + { + "name": "libdatrie", + "epoch": 0, + "version": "0.2.9", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdatrie-0.2.9-10.fc31.x86_64.rpm", + "checksum": "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-5.3.28-38.fc31.x86_64.rpm", + "checksum": "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-38.fc31.x86_64.rpm", + "checksum": "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627", + "check_gpg": true + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdhash-0.5.0-43.fc31.x86_64.rpm", + "checksum": "sha256:0b54f374bcbe094dbc0d52d9661fe99ebff384026ce0ea39f2d6069e27bf8bdc", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdnf-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "28.20190324cvs.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.x86_64.rpm", + "checksum": "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801", + "check_gpg": true + }, + { + "name": "libepoxy", + "epoch": 0, + "version": "1.5.3", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libepoxy-1.5.3-4.fc31.x86_64.rpm", + "checksum": "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libevent-2.1.8-7.fc31.x86_64.rpm", + "checksum": "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libfdisk-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "23.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libffi-3.1-23.fc31.x86_64.rpm", + "checksum": "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcc-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-1.fc31.x86_64.rpm", + "checksum": "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgomp-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgpg-error-1.36-2.fc31.x86_64.rpm", + "checksum": "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd", + "check_gpg": true + }, + { + "name": "libgusb", + "epoch": 0, + "version": "0.3.0", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgusb-0.3.0-5.fc31.x86_64.rpm", + "checksum": "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libidn2-2.2.0-2.fc31.x86_64.rpm", + "checksum": "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc", + "check_gpg": true + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libini_config-1.3.1-43.fc31.x86_64.rpm", + "checksum": "sha256:6f7fbd57db9334a3cc7983d2e920afe92abe3f7e168702612d70e9ff405d79e6", + "check_gpg": true + }, + { + "name": "libjpeg-turbo", + "epoch": 0, + "version": "2.0.2", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.x86_64.rpm", + "checksum": "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-1.fc31.x86_64.rpm", + "checksum": "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-1.fc31.x86_64.rpm", + "checksum": "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libksba-1.3.5-10.fc31.x86_64.rpm", + "checksum": "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f", + "check_gpg": true + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.0.7", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libldb-2.0.7-1.fc31.x86_64.rpm", + "checksum": "sha256:8f7b737ccb294fd5ba1d19075ea2a50a54e0265d8efa28aae0ade59d3e3a63be", + "check_gpg": true + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.2.0", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmaxminddb-1.2.0-8.fc31.x86_64.rpm", + "checksum": "sha256:430f2f71be063eb9d04fe38659f62e29f47c9c878f9985d0569cb49e9c89ebc0", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-9.fc31.x86_64.rpm", + "checksum": "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmnl-1.0.4-10.fc31.x86_64.rpm", + "checksum": "sha256:c976ce75eda3dbe734117f6f558eafb2061bbef66086a04cb907a7ddbaea8bc2", + "check_gpg": true + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodman-2.0.1-20.fc31.x86_64.rpm", + "checksum": "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664", + "check_gpg": true + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.15", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.x86_64.rpm", + "checksum": "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmount-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d", + "check_gpg": true + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libndp-1.7-4.fc31.x86_64.rpm", + "checksum": "sha256:45bf4bef479712936db1d6859b043d13e6cad41c851b6e621fc315b39ecfa14b", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-3.fc31.x86_64.rpm", + "checksum": "sha256:e91f7fcee1e3e72941c99eec3c3c3c9506cdaf83c01cf1eef257b91ccaff550c", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "16.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-16.fc31.x86_64.rpm", + "checksum": "sha256:f8d885f57b3c7b30b6f18f68fed7fd3f19300c22abc5d5ee5029998e96c6b115", + "check_gpg": true + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.4.1", + "release": "1.rc1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnfsidmap-2.4.1-1.rc1.fc31.x86_64.rpm", + "checksum": "sha256:f61555e6e74917be3f131bd5af9d9e30ed709111701e950b7ebd4392baf33f12", + "check_gpg": true + }, + { + "name": "libnftnl", + "epoch": 0, + "version": "1.1.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnftnl-1.1.3-2.fc31.x86_64.rpm", + "checksum": "sha256:2cd5a709ff2c286b73f850469b1ee6baf9077b90ce3bacb8ba712430c6632350", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.39.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnghttp2-1.39.2-1.fc31.x86_64.rpm", + "checksum": "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf", + "check_gpg": true + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnl3-3.5.0-1.fc31.x86_64.rpm", + "checksum": "sha256:8bd2655674b40e89f5f63af7f8ffafd0e9064a3378cdca050262a7272678e8e5", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "5.20180605git4a062cf.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.x86_64.rpm", + "checksum": "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a", + "check_gpg": true + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-43.fc31.x86_64.rpm", + "checksum": "sha256:6f729da330aaaea336458a8b6f3f1d2cc761693ba20bdda57fb9c49fb6f2120d", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.0", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpcap-1.9.0-4.fc31.x86_64.rpm", + "checksum": "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc", + "check_gpg": true + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpipeline-1.5.1-3.fc31.x86_64.rpm", + "checksum": "sha256:cfeb5d0cb9c116e39292e3158c68ee62880cff4a5e3d098d20bf9567e5a576e1", + "check_gpg": true + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.37", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpng-1.6.37-2.fc31.x86_64.rpm", + "checksum": "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf", + "check_gpg": true + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libproxy-0.4.15-14.fc31.x86_64.rpm", + "checksum": "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpsl-0.21.0-2.fc31.x86_64.rpm", + "checksum": "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpwquality-1.4.1-1.fc31.x86_64.rpm", + "checksum": "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0", + "check_gpg": true + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libref_array-0.1.5-43.fc31.x86_64.rpm", + "checksum": "sha256:da923b379524f2d8d26905f26a9dc763cec36c40306c4c53db57100574ea89b8", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.10.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/librepo-1.10.5-1.fc31.x86_64.rpm", + "checksum": "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.10.1", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm", + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libseccomp-2.4.1-1.fc31.x86_64.rpm", + "checksum": "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.19.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsecret-0.19.1-1.fc31.x86_64.rpm", + "checksum": "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-utils-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsemanage-2.9-3.fc31.x86_64.rpm", + "checksum": "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsepol-2.9-2.fc31.x86_64.rpm", + "checksum": "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsigsegv-2.11-8.fc31.x86_64.rpm", + "checksum": "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsmartcols-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.5", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsolv-0.7.5-3.fc31.x86_64.rpm", + "checksum": "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388", + "check_gpg": true + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.68.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsoup-2.68.2-1.fc31.x86_64.rpm", + "checksum": "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libss-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-0.9.0-6.fc31.x86_64.rpm", + "checksum": "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm", + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_autofs-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:422625da0fbb99cc4da8eebebff892c6e73a87c81a33190f7a17e344f6bb709e", + "check_gpg": true + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_certmap-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:307275b46896d56d23f5da5ab77a299941e77165ff44e846d6620eee1158131c", + "check_gpg": true + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:a1bd1b5a2c47e57957a77d32f4fd705de1df30557837cfbc83b8f284e4ee0456", + "check_gpg": true + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:6c1f9dc11de4d3af4d4c418b4556ee9659011d587e9da44bb039cb30ac326841", + "check_gpg": true + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:e1bda9438577473413f3c7455ce84b6c8486adee3d4473fafcd28309ad8c2913", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libstdc++-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f", + "check_gpg": true + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtalloc-2.3.0-1.fc31.x86_64.rpm", + "checksum": "sha256:9247561bad35a8a2f8269b2bbbd28d1bf5e6fcde1fe78e1fc3c0e712513e9703", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.14", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtasn1-4.14-2.fc31.x86_64.rpm", + "checksum": "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb", + "check_gpg": true + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtdb-1.4.2-1.fc31.x86_64.rpm", + "checksum": "sha256:fccade859cbb884fd61c07433e6c316f794885cbb2186debcff3f6894d16d52c", + "check_gpg": true + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtevent-0.10.1-1.fc31.x86_64.rpm", + "checksum": "sha256:5593277fa685adba864393da8faf76950d6d8fb1483af036cdc08d8437c387bb", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c", + "check_gpg": true + }, + { + "name": "libthai", + "epoch": 0, + "version": "0.1.28", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libthai-0.1.28-3.fc31.x86_64.rpm", + "checksum": "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500", + "check_gpg": true + }, + { + "name": "libtiff", + "epoch": 0, + "version": "4.0.10", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtiff-4.0.10-6.fc31.x86_64.rpm", + "checksum": "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "2.rc3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.x86_64.rpm", + "checksum": "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libunistring-0.9.10-6.fc31.x86_64.rpm", + "checksum": "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.22", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libusbx-1.0.22-4.fc31.x86_64.rpm", + "checksum": "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8", + "check_gpg": true + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuser-0.62-21.fc31.x86_64.rpm", + "checksum": "sha256:95b45de2c57f35df43bff0c2ebe32c64183968b3a41c5673cfeeff5ece506b94", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libutempter-1.1.6-17.fc31.x86_64.rpm", + "checksum": "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuuid-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libverto-0.3.0-8.fc31.x86_64.rpm", + "checksum": "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348", + "check_gpg": true + }, + { + "name": "libwayland-client", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-client-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff", + "check_gpg": true + }, + { + "name": "libwayland-cursor", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce", + "check_gpg": true + }, + { + "name": "libwayland-egl", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9", + "check_gpg": true + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcb-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-4.4.10-1.fc31.x86_64.rpm", + "checksum": "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.10-1.fc31.x86_64.rpm", + "checksum": "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.8.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.x86_64.rpm", + "checksum": "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxml2-2.9.9-3.fc31.x86_64.rpm", + "checksum": "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libyaml-0.2.2-2.fc31.x86_64.rpm", + "checksum": "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libzstd-1.4.2-1.fc31.x86_64.rpm", + "checksum": "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c", + "check_gpg": true + }, + { + "name": "linux-atm-libs", + "epoch": 0, + "version": "2.5.1", + "release": "25.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-25.fc31.x86_64.rpm", + "checksum": "sha256:e405d2edc9b9fc2c13242f0225049b071aa4159d09d8e2d501e8c4fe88a9710b", + "check_gpg": true + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20190923", + "release": "102.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-firmware-20190923-102.fc31.noarch.rpm", + "checksum": "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47", + "check_gpg": true + }, + { + "name": "linux-firmware-whence", + "epoch": 0, + "version": "20190923", + "release": "102.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-firmware-whence-20190923-102.fc31.noarch.rpm", + "checksum": "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70", + "check_gpg": true + }, + { + "name": "lmdb-libs", + "epoch": 0, + "version": "0.9.23", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.23-3.fc31.x86_64.rpm", + "checksum": "sha256:a41579023e1db3dec06679ebc7788ece92686ea2a23c78dd749c98ddbc82d419", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-6.fc31.x86_64.rpm", + "checksum": "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-1.fc31.x86_64.rpm", + "checksum": "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39", + "check_gpg": true + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.8.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/man-db-2.8.4-5.fc31.x86_64.rpm", + "checksum": "sha256:764699ea124f85a7afcf65a2f138e3821770f8aa1ef134e1813e2b04477f0b74", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mkpasswd-5.5.2-1.fc31.x86_64.rpm", + "checksum": "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mpfr-3.1.6-5.fc31.x86_64.rpm", + "checksum": "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-6.1-12.20190803.fc31.x86_64.rpm", + "checksum": "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm", + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.x86_64.rpm", + "checksum": "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106", + "check_gpg": true + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.55.20160912git.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/net-tools-2.0-0.55.20160912git.fc31.x86_64.rpm", + "checksum": "sha256:cf6506ad88ecaab89efde02eee218365a36981114638c03989ba2768457ae335", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nettle-3.5.1-3.fc31.x86_64.rpm", + "checksum": "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc", + "check_gpg": true + }, + { + "name": "nftables", + "epoch": 1, + "version": "0.9.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nftables-0.9.1-3.fc31.x86_64.rpm", + "checksum": "sha256:e9fa9fba03403e709388390a91f4b253e57b8104035f05fabdf4d5c0dd173ce1", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/npth-1.6-3.fc31.x86_64.rpm", + "checksum": "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openldap-2.4.47-3.fc31.x86_64.rpm", + "checksum": "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68", + "check_gpg": true + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-server-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:c3aa4d794cef51ba9fcbf3750baed55aabfa36062a48f61149ccf03364a0d256", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-1.1.1d-2.fc31.x86_64.rpm", + "checksum": "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.x86_64.rpm", + "checksum": "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.x86_64.rpm", + "checksum": "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/os-prober-1.77-3.fc31.x86_64.rpm", + "checksum": "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.x86_64.rpm", + "checksum": "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.x86_64.rpm", + "checksum": "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "18.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pam-1.3.1-18.fc31.x86_64.rpm", + "checksum": "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b", + "check_gpg": true + }, + { + "name": "pango", + "epoch": 0, + "version": "1.44.6", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pango-1.44.6-1.fc31.x86_64.rpm", + "checksum": "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c", + "check_gpg": true + }, + { + "name": "parted", + "epoch": 0, + "version": "3.2.153", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/parted-3.2.153-1.fc31.x86_64.rpm", + "checksum": "sha256:55c47c63deb00a9126c068299c01dfbdd39d58c6962138b862b92f5c7af8c898", + "check_gpg": true + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/passwd-0.80-6.fc31.x86_64.rpm", + "checksum": "sha256:c459092a47bd2f904d9fe830735b512ef97b52785ee12abb2ba5c52465560f18", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.43", + "release": "2.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre-8.43-2.fc31.1.x86_64.rpm", + "checksum": "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.33", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre2-10.33-14.fc31.x86_64.rpm", + "checksum": "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pigz-2.4-5.fc31.x86_64.rpm", + "checksum": "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pinentry-1.1.0-6.fc31.x86_64.rpm", + "checksum": "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976", + "check_gpg": true + }, + { + "name": "pixman", + "epoch": 0, + "version": "0.38.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pixman-0.38.4-1.fc31.x86_64.rpm", + "checksum": "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba", + "check_gpg": true + }, + { + "name": "plymouth", + "epoch": 0, + "version": "0.9.4", + "release": "10.20191001gita8aad27.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/plymouth-0.9.4-10.20191001gita8aad27.fc31.x86_64.rpm", + "checksum": "sha256:5e07e49fdacc1f52b583ee685d03bf5ce045e9d34a323bd26607148a3937a9ce", + "check_gpg": true + }, + { + "name": "plymouth-core-libs", + "epoch": 0, + "version": "0.9.4", + "release": "10.20191001gita8aad27.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/plymouth-core-libs-0.9.4-10.20191001gita8aad27.fc31.x86_64.rpm", + "checksum": "sha256:561014bd90810d512b4098c8e1d3ca05aa8c6a74bc258b3b7e3e2fd36a1ed157", + "check_gpg": true + }, + { + "name": "plymouth-scripts", + "epoch": 0, + "version": "0.9.4", + "release": "10.20191001gita8aad27.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/plymouth-scripts-0.9.4-10.20191001gita8aad27.fc31.x86_64.rpm", + "checksum": "sha256:bd72cac3d1ef93cff067070925e5f339c720bef82c5ade4477388636fef53b91", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/policycoreutils-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c", + "check_gpg": true + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.116", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/polkit-libs-0.116-4.fc31.x86_64.rpm", + "checksum": "sha256:118548479396b007a80bc98e8cef770ea242ef6b20cd2922d595acd4c100946d", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "18.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/popt-1.16-18.fc31.x86_64.rpm", + "checksum": "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-6.fc31.x86_64.rpm", + "checksum": "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm", + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm", + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-3.7.4-5.fc31.x86_64.rpm", + "checksum": "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9", + "check_gpg": true + }, + { + "name": "python3-asn1crypto", + "epoch": 0, + "version": "0.24.0", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-asn1crypto-0.24.0-7.fc31.noarch.rpm", + "checksum": "sha256:73a7249de97f0ad66bc1a867ac5b5d08b741ab152d4dd7ce45cc231d64126b58", + "check_gpg": true + }, + { + "name": "python3-attrs", + "epoch": 0, + "version": "19.1.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-attrs-19.1.0-2.fc31.noarch.rpm", + "checksum": "sha256:4cca3f986ddbd38cfbfb6d1c8d336a1aaed78f7da1f38356ce1e034ba35ec492", + "check_gpg": true + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm", + "checksum": "sha256:9fea00b14943cac0e3b11ff3a319765168cf78b3cc58fdee7d5fe48246a0aa4d", + "check_gpg": true + }, + { + "name": "python3-babel", + "epoch": 0, + "version": "2.7.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-babel-2.7.0-2.fc31.noarch.rpm", + "checksum": "sha256:e17ef6f7d4f1869ff5813d6f8f2983cd6f5cd23d4a666b7ae19154636e911644", + "check_gpg": true + }, + { + "name": "python3-cffi", + "epoch": 0, + "version": "1.12.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-cffi-1.12.3-1.fc31.x86_64.rpm", + "checksum": "sha256:7fc8df6b10728f46c3e752c35f6777f17025bef30f61c67f76de2538888a5546", + "check_gpg": true + }, + { + "name": "python3-chardet", + "epoch": 0, + "version": "3.0.4", + "release": "10.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-chardet-3.0.4-10.fc31.noarch.rpm", + "checksum": "sha256:ee6dbb4914a35ee8a816ecde34d29221e3f4622324f6287c328e8ac22ae572ad", + "check_gpg": true + }, + { + "name": "python3-configobj", + "epoch": 0, + "version": "5.0.6", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-configobj-5.0.6-16.fc31.noarch.rpm", + "checksum": "sha256:cdc526097cd2fecb75e44ad11a69b10eb7804f310298c064c3b931515d4f3d5c", + "check_gpg": true + }, + { + "name": "python3-cryptography", + "epoch": 0, + "version": "2.6.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-cryptography-2.6.1-2.fc31.x86_64.rpm", + "checksum": "sha256:2e588b5133dc8cb26ff0226f66eb1be440c6b784ec6fa67a5f0516d8ccaf46f5", + "check_gpg": true + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.8.0", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-3.fc31.noarch.rpm", + "checksum": "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653", + "check_gpg": true + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.8", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dbus-1.2.8-6.fc31.x86_64.rpm", + "checksum": "sha256:35c348bcd91fa114ad459b888131e5e5509259cffce33f22c44f92e57e9e5919", + "check_gpg": true + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.4.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-decorator-4.4.0-2.fc31.noarch.rpm", + "checksum": "sha256:63ff108f557096a9724053c37e37d3c2af1a1ec0b33124480b3742ff3da46292", + "check_gpg": true + }, + { + "name": "python3-distro", + "epoch": 0, + "version": "1.4.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-2.fc31.noarch.rpm", + "checksum": "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.9", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-plugins-core-4.0.9-1.fc31.noarch.rpm", + "checksum": "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02", + "check_gpg": true + }, + { + "name": "python3-firewall", + "epoch": 0, + "version": "0.7.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-firewall-0.7.2-1.fc31.noarch.rpm", + "checksum": "sha256:a349c40034b5a181cab1bd409384ddb901c274e110b16721d434f5bf42e92c0f", + "check_gpg": true + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.34.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gobject-base-3.34.0-3.fc31.x86_64.rpm", + "checksum": "sha256:6807ac3ae6b7c0ea3a085106cedb687f79edfda500feb747039dc112ed3c518f", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552", + "check_gpg": true + }, + { + "name": "python3-idna", + "epoch": 0, + "version": "2.8", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-idna-2.8-2.fc31.noarch.rpm", + "checksum": "sha256:8221111dc9a9aa5c68805f153c3fbe5314c8a0f335af29685733b958253dd278", + "check_gpg": true + }, + { + "name": "python3-jinja2", + "epoch": 0, + "version": "2.10.1", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jinja2-2.10.1-2.fc31.noarch.rpm", + "checksum": "sha256:1135e96b6f9ed29e4ed4c0f060876891a244442a503f0b18ab238589da20d464", + "check_gpg": true + }, + { + "name": "python3-jsonpatch", + "epoch": 0, + "version": "1.21", + "release": "8.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jsonpatch-1.21-8.fc31.noarch.rpm", + "checksum": "sha256:e98119ac7a707287668e7a9a74ef2809ee5f555af04f52775367e428e08dbb33", + "check_gpg": true + }, + { + "name": "python3-jsonpointer", + "epoch": 0, + "version": "1.10", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jsonpointer-1.10-16.fc31.noarch.rpm", + "checksum": "sha256:2d9a2e736dd5231df3c5c748ce0ba5a75a409dacfe73f14676781f32d565a7df", + "check_gpg": true + }, + { + "name": "python3-jsonschema", + "epoch": 0, + "version": "3.0.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jsonschema-3.0.2-1.fc31.noarch.rpm", + "checksum": "sha256:047f9e29fcfa56be98ca3f42249f3ccb2a93df99f2438e3983e2064025f0d79d", + "check_gpg": true + }, + { + "name": "python3-jwt", + "epoch": 0, + "version": "1.7.1", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jwt-1.7.1-3.fc31.noarch.rpm", + "checksum": "sha256:143c50c0663f963c7689c1cec43b81cf1433d5d3b67eb8233ba06506c1b3e095", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.x86_64.rpm", + "checksum": "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libs-3.7.4-5.fc31.x86_64.rpm", + "checksum": "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1", + "check_gpg": true + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libselinux-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:ca6a71888b8d147342012c64533f61a41b26c788bbcd2844a2164ee007fac981", + "check_gpg": true + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libsemanage-2.9-3.fc31.x86_64.rpm", + "checksum": "sha256:a7071aa0068c9dff913c5f0523be3ffdd7f67b8f13e1ee2aa16e486b01aecc1c", + "check_gpg": true + }, + { + "name": "python3-markupsafe", + "epoch": 0, + "version": "1.1.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-markupsafe-1.1.1-2.fc31.x86_64.rpm", + "checksum": "sha256:5d8d55e12443628c7a1915648845663e4aed1863805854de0adadd89772eda2a", + "check_gpg": true + }, + { + "name": "python3-oauthlib", + "epoch": 0, + "version": "3.0.2", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-oauthlib-3.0.2-2.fc31.noarch.rpm", + "checksum": "sha256:f85469c0c19ce86e8fdd0dd5a3e6e5c9b78e3436ae9ce70ba86b2b4a3794f693", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "name": "python3-ply", + "epoch": 0, + "version": "3.11", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-ply-3.11-3.fc31.noarch.rpm", + "checksum": "sha256:1b65944efe48ba0cca34011891480a1db29a7e95dad058376bfca34d68fb0791", + "check_gpg": true + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-policycoreutils-2.9-5.fc31.noarch.rpm", + "checksum": "sha256:5a7e957102a23c9924398fe45f5cdec66edcd10adcad7130d6ebf02c2706ad49", + "check_gpg": true + }, + { + "name": "python3-prettytable", + "epoch": 0, + "version": "0.7.2", + "release": "18.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-prettytable-0.7.2-18.fc31.noarch.rpm", + "checksum": "sha256:682af90a049fa78429d5ebd194700609f762e59ceb6c4ca28b17e7f4fd1683aa", + "check_gpg": true + }, + { + "name": "python3-pycparser", + "epoch": 0, + "version": "2.14", + "release": "20.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pycparser-2.14-20.fc31.noarch.rpm", + "checksum": "sha256:6ed7f318c5e93b59254d7b7652131f33db713eeb61f52413f21e533069ed24bf", + "check_gpg": true + }, + { + "name": "python3-pyrsistent", + "epoch": 0, + "version": "0.15.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyrsistent-0.15.4-1.fc31.x86_64.rpm", + "checksum": "sha256:fa979526906cc9182ebdb6e50c9d09deba8518f69750495fec4267a425c8f783", + "check_gpg": true + }, + { + "name": "python3-pyserial", + "epoch": 0, + "version": "3.4", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyserial-3.4-3.fc31.noarch.rpm", + "checksum": "sha256:32cc578c8da626a8c1a5316a59d482967a32547be6c077f73fb90e11fb0f1e6a", + "check_gpg": true + }, + { + "name": "python3-pysocks", + "epoch": 0, + "version": "1.7.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pysocks-1.7.0-2.fc31.noarch.rpm", + "checksum": "sha256:d54f02fc39b3e87253808f665918d26ffe901f1228e25121c908661b47ba266b", + "check_gpg": true + }, + { + "name": "python3-pytz", + "epoch": 0, + "version": "2019.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pytz-2019.2-1.fc31.noarch.rpm", + "checksum": "sha256:6c6f1152899318bdc0500cfb0b0cdbbc19ba0e017b5888ece1358250caa2629f", + "check_gpg": true + }, + { + "name": "python3-pyyaml", + "epoch": 0, + "version": "5.1.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyyaml-5.1.2-1.fc31.x86_64.rpm", + "checksum": "sha256:a6bab7030d3296875cb0cad2c30fb18042dab8ae070c9c6f97457bb0a5cc6316", + "check_gpg": true + }, + { + "name": "python3-requests", + "epoch": 0, + "version": "2.22.0", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-requests-2.22.0-3.fc31.noarch.rpm", + "checksum": "sha256:1e049e86c5dd5c4d6737d47dd194d553ffbd65c81a4077cf6e1029a0fde80fb5", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-rpm-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444", + "check_gpg": true + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setools-4.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:aacf84989a0fe55366f6d37ddd1753b8c06e5640e9334805bf468777824a3ac0", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.12.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-six-1.12.0-2.fc31.noarch.rpm", + "checksum": "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142", + "check_gpg": true + }, + { + "name": "python3-slip", + "epoch": 0, + "version": "0.6.4", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-slip-0.6.4-16.fc31.noarch.rpm", + "checksum": "sha256:b1094a9a9725546315d6eac7f792d5875a5f0c950cd84e43fc2fbb3e639ee43e", + "check_gpg": true + }, + { + "name": "python3-slip-dbus", + "epoch": 0, + "version": "0.6.4", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-slip-dbus-0.6.4-16.fc31.noarch.rpm", + "checksum": "sha256:bd2e7c9e3df976723ade08f16667b31044b678e62ee29e024ad193af6d9a28e1", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-unbound-1.9.3-1.fc31.x86_64.rpm", + "checksum": "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7", + "check_gpg": true + }, + { + "name": "python3-urllib3", + "epoch": 0, + "version": "1.25.3", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-urllib3-1.25.3-4.fc31.noarch.rpm", + "checksum": "sha256:78b600621e00f4a0acc8f58de056ae9393ce4e1cded56837b4e557c1bc84b06b", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.x86_64.rpm", + "checksum": "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/readline-8.0-3.fc31.x86_64.rpm", + "checksum": "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc", + "check_gpg": true + }, + { + "name": "rest", + "epoch": 0, + "version": "0.8.1", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rest-0.8.1-6.fc31.x86_64.rpm", + "checksum": "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e", + "check_gpg": true + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rootfiles-8.1-25.fc31.noarch.rpm", + "checksum": "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:f50957375c79be57f391625b97d6ea74505e05f2edc6b9bc6768d5e3ad6ef8f8", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sed-4.5-4.fc31.x86_64.rpm", + "checksum": "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.4", + "release": "37.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/selinux-policy-3.14.4-37.fc31.noarch.rpm", + "checksum": "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.4", + "release": "37.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.4-37.fc31.noarch.rpm", + "checksum": "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.3", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm", + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "16.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shadow-utils-4.6-16.fc31.x86_64.rpm", + "checksum": "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.14", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shared-mime-info-1.14-1.fc31.x86_64.rpm", + "checksum": "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.29.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.x86_64.rpm", + "checksum": "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2", + "check_gpg": true + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-client-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:687d00eb0b77446dbd78aaa0f4f99cc080c677930ad783120483614255264a3d", + "check_gpg": true + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-common-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:6b694ee239a2e3f38c401e975de392e3731ad8b18be5a3249ea02f19e87cb5cb", + "check_gpg": true + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-kcm-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:93161df6d62fe654c7cdba9ae36343d2549b437b27eac816a80f8d7c32a47162", + "check_gpg": true + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-nfs-idmap-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:4f9bbd08f6019b3482342d616d6b04e6481924ea34fbfe8d30ef63402a92e9b1", + "check_gpg": true + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.8.28", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sudo-1.8.28-1.fc31.x86_64.rpm", + "checksum": "sha256:704ebfc50ace9417ed28f4530d778359a4c2f95d524c2e99346472245e30b548", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5", + "check_gpg": true + }, + { + "name": "systemd-bootchart", + "epoch": 0, + "version": "233", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-bootchart-233-5.fc31.x86_64.rpm", + "checksum": "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm", + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-udev-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tss2-1331-2.fc31.x86_64.rpm", + "checksum": "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm", + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/unbound-libs-1.9.3-1.fc31.x86_64.rpm", + "checksum": "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/util-linux-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f", + "check_gpg": true + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.1.2102", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/v/vim-minimal-8.1.2102-1.fc31.x86_64.rpm", + "checksum": "sha256:d2c819a7e607a9e22f55047ed03d064e4b0f125ad4fb20532c543a6d8af8bfa5", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "15.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/which-2.21-15.fc31.x86_64.rpm", + "checksum": "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm", + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.1.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xfsprogs-5.1.0-2.fc31.x86_64.rpm", + "checksum": "sha256:b3c4cfdf820225133f4e9e600de3300ef0c7bac34139433505dd4482da52be22", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.27", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm", + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-5.2.4-6.fc31.x86_64.rpm", + "checksum": "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-libs-5.2.4-6.fc31.x86_64.rpm", + "checksum": "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431", + "check_gpg": true + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/y/yum-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.2", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.x86_64.rpm", + "checksum": "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "19.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zlib-1.2.11-19.fc31.x86_64.rpm", + "checksum": "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9", + "check_gpg": true + } + ], + "checksums": { + "0": "sha256:e39c033883bf8520576de0b0875b5c8cfc40d04f1a0aaf01f1edf57267807580" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac ro no_timer_check console=ttyS0,115200n8 console=tty1 biosdevname=0 net.ifnames=0 console=ttyS0,115200" + }, + "bootloader": "grub", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "initrd": "/boot/initramfs-5.3.7-301.fc31.x86_64.img", + "linux": "/boot/vmlinuz-5.3.7-301.fc31.x86_64", + "options": "$kernelopts", + "title": "Fedora (5.3.7-301.fc31.x86_64) 31 (Thirty One)", + "version": "5.3.7-301.fc31.x86_64" + } + ], + "firewall-enabled": [ + "ssh", + "mdns", + "dhcpv6-client" + ], + "fstab": [ + [ + "UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "/", + "ext4", + "defaults", + "1", + "1" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:993:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:997:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "render:x:996:", + "root:x:0:", + "ssh_keys:x:998:", + "sshd:x:74:", + "sys:x:3:", + "systemd-coredump:x:995:", + "systemd-journal:x:190:", + "systemd-network:x:192:", + "systemd-resolve:x:193:", + "systemd-timesync:x:994:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:999:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "raw", + "os-release": { + "ANSI_COLOR": "0;34", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:fedoraproject:fedora:31", + "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f31/system-administrators-guide/", + "HOME_URL": "https://fedoraproject.org/", + "ID": "fedora", + "LOGO": "fedora-logo-icon", + "NAME": "Fedora", + "PLATFORM_ID": "platform:f31", + "PRETTY_NAME": "Fedora 31 (Thirty One)", + "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy", + "REDHAT_BUGZILLA_PRODUCT": "Fedora", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "31", + "REDHAT_SUPPORT_PRODUCT": "Fedora", + "REDHAT_SUPPORT_PRODUCT_VERSION": "31", + "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help", + "VERSION": "31 (Thirty One)", + "VERSION_CODENAME": "", + "VERSION_ID": "31" + }, + "packages": [ + "NetworkManager-1.20.4-1.fc31.x86_64", + "NetworkManager-libnm-1.20.4-1.fc31.x86_64", + "abattis-cantarell-fonts-0.111-3.fc31.noarch", + "acl-2.2.53-4.fc31.x86_64", + "adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch", + "adwaita-cursor-theme-3.34.0-1.fc31.noarch", + "adwaita-icon-theme-3.34.0-1.fc31.noarch", + "alternatives-1.11-5.fc31.x86_64", + "at-spi2-atk-2.34.1-1.fc31.x86_64", + "at-spi2-core-2.34.0-1.fc31.x86_64", + "atk-2.34.1-1.fc31.x86_64", + "audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64", + "audit-libs-3.0-0.12.20190507gitf58ec40.fc31.x86_64", + "avahi-libs-0.7-20.fc31.x86_64", + "basesystem-11-8.fc31.noarch", + "bash-5.0.7-3.fc31.x86_64", + "brotli-1.0.7-6.fc31.x86_64", + "bzip2-libs-1.0.8-1.fc31.x86_64", + "c-ares-1.15.0-4.fc31.x86_64", + "ca-certificates-2019.2.32-3.fc31.noarch", + "cairo-1.16.0-6.fc31.x86_64", + "cairo-gobject-1.16.0-6.fc31.x86_64", + "checkpolicy-2.9-2.fc31.x86_64", + "chrony-3.5-4.fc31.x86_64", + "cloud-init-17.1-11.fc31.noarch", + "colord-libs-1.4.4-2.fc31.x86_64", + "coreutils-8.31-4.fc31.x86_64", + "coreutils-common-8.31-4.fc31.x86_64", + "cpio-2.12-12.fc31.x86_64", + "cracklib-2.9.6-21.fc31.x86_64", + "cracklib-dicts-2.9.6-21.fc31.x86_64", + "crypto-policies-20190816-4.gitbb9bf99.fc31.noarch", + "cryptsetup-libs-2.2.1-1.fc31.x86_64", + "cups-libs-2.2.12-2.fc31.x86_64", + "curl-7.66.0-1.fc31.x86_64", + "cyrus-sasl-lib-2.1.27-2.fc31.x86_64", + "dbus-1.12.16-3.fc31.x86_64", + "dbus-broker-21-6.fc31.x86_64", + "dbus-common-1.12.16-3.fc31.noarch", + "dbus-libs-1.12.16-3.fc31.x86_64", + "dconf-0.34.0-1.fc31.x86_64", + "dejavu-fonts-common-2.37-2.fc31.noarch", + "dejavu-sans-fonts-2.37-2.fc31.noarch", + "deltarpm-3.6.2-2.fc31.x86_64", + "device-mapper-1.02.163-2.fc31.x86_64", + "device-mapper-libs-1.02.163-2.fc31.x86_64", + "dhcp-client-4.4.1-15.fc31.x86_64", + "dhcp-common-4.4.1-15.fc31.noarch", + "diffutils-3.7-3.fc31.x86_64", + "dnf-4.2.9-5.fc31.noarch", + "dnf-data-4.2.9-5.fc31.noarch", + "dnf-plugins-core-4.0.9-1.fc31.noarch", + "dracut-049-27.git20181204.fc31.1.x86_64", + "dracut-config-generic-049-27.git20181204.fc31.1.x86_64", + "e2fsprogs-1.45.3-1.fc31.x86_64", + "e2fsprogs-libs-1.45.3-1.fc31.x86_64", + "ebtables-legacy-2.0.10-37.fc31.x86_64", + "elfutils-default-yama-scope-0.177-1.fc31.noarch", + "elfutils-libelf-0.177-1.fc31.x86_64", + "elfutils-libs-0.177-1.fc31.x86_64", + "expat-2.2.8-1.fc31.x86_64", + "fedora-gpg-keys-31-1.noarch", + "fedora-release-31-1.noarch", + "fedora-release-common-31-1.noarch", + "fedora-repos-31-1.noarch", + "file-5.37-3.fc31.x86_64", + "file-libs-5.37-3.fc31.x86_64", + "filesystem-3.12-2.fc31.x86_64", + "findutils-4.6.0-24.fc31.x86_64", + "fipscheck-1.5.0-7.fc31.x86_64", + "fipscheck-lib-1.5.0-7.fc31.x86_64", + "firewalld-0.7.2-1.fc31.noarch", + "firewalld-filesystem-0.7.2-1.fc31.noarch", + "fontconfig-2.13.92-3.fc31.x86_64", + "fontpackages-filesystem-1.44-25.fc31.noarch", + "freetype-2.10.0-3.fc31.x86_64", + "fribidi-1.0.5-4.fc31.x86_64", + "fuse-libs-2.9.9-8.fc31.x86_64", + "gawk-5.0.1-5.fc31.x86_64", + "gcr-3.33.4-1.fc31.x86_64", + "gcr-base-3.33.4-1.fc31.x86_64", + "gdbm-libs-1.18.1-1.fc31.x86_64", + "gdk-pixbuf2-2.40.0-1.fc31.x86_64", + "gdk-pixbuf2-modules-2.40.0-1.fc31.x86_64", + "geolite2-city-20190806-1.fc31.noarch", + "geolite2-country-20190806-1.fc31.noarch", + "gettext-0.20.1-2.fc31.x86_64", + "gettext-libs-0.20.1-2.fc31.x86_64", + "glib-networking-2.62.1-1.fc31.x86_64", + "glib2-2.62.1-1.fc31.x86_64", + "glibc-2.30-5.fc31.x86_64", + "glibc-common-2.30-5.fc31.x86_64", + "glibc-langpack-en-2.30-5.fc31.x86_64", + "gmp-6.1.2-10.fc31.x86_64", + "gnome-keyring-3.34.0-1.fc31.x86_64", + "gnupg2-2.2.17-2.fc31.x86_64", + "gnupg2-smime-2.2.17-2.fc31.x86_64", + "gnutls-3.6.10-1.fc31.x86_64", + "gobject-introspection-1.62.0-1.fc31.x86_64", + "gpg-pubkey-3c3359c4-5c6ae44d", + "gpgme-1.13.1-3.fc31.x86_64", + "graphite2-1.3.13-1.fc31.x86_64", + "grep-3.3-3.fc31.x86_64", + "groff-base-1.22.3-20.fc31.x86_64", + "grub2-common-2.02-100.fc31.noarch", + "grub2-pc-2.02-100.fc31.x86_64", + "grub2-pc-modules-2.02-100.fc31.noarch", + "grub2-tools-2.02-100.fc31.x86_64", + "grub2-tools-extra-2.02-100.fc31.x86_64", + "grub2-tools-minimal-2.02-100.fc31.x86_64", + "gsettings-desktop-schemas-3.34.0-1.fc31.x86_64", + "gtk-update-icon-cache-3.24.12-3.fc31.x86_64", + "gtk3-3.24.12-3.fc31.x86_64", + "gzip-1.10-1.fc31.x86_64", + "harfbuzz-2.6.1-2.fc31.x86_64", + "hicolor-icon-theme-0.17-7.fc31.noarch", + "hostname-3.20-9.fc31.x86_64", + "ima-evm-utils-1.2.1-2.fc31.x86_64", + "initscripts-10.02-2.fc31.x86_64", + "ipcalc-0.2.5-3.fc31.x86_64", + "iproute-5.3.0-1.fc31.x86_64", + "iproute-tc-5.3.0-1.fc31.x86_64", + "ipset-7.3-1.fc31.x86_64", + "ipset-libs-7.3-1.fc31.x86_64", + "iptables-1.8.3-5.fc31.x86_64", + "iptables-libs-1.8.3-5.fc31.x86_64", + "iputils-20190515-3.fc31.x86_64", + "jansson-2.12-4.fc31.x86_64", + "jasper-libs-2.0.14-9.fc31.x86_64", + "jbigkit-libs-2.1-17.fc31.x86_64", + "json-c-0.13.1-6.fc31.x86_64", + "json-glib-1.4.4-3.fc31.x86_64", + "kbd-2.0.4-14.fc31.x86_64", + "kbd-legacy-2.0.4-14.fc31.noarch", + "kbd-misc-2.0.4-14.fc31.noarch", + "kernel-5.3.7-301.fc31.x86_64", + "kernel-core-5.3.7-301.fc31.x86_64", + "kernel-modules-5.3.7-301.fc31.x86_64", + "keyutils-libs-1.6-3.fc31.x86_64", + "kmod-26-4.fc31.x86_64", + "kmod-libs-26-4.fc31.x86_64", + "kpartx-0.8.0-3.fc31.x86_64", + "krb5-libs-1.17-45.fc31.x86_64", + "langpacks-core-en-2.0-7.fc31.noarch", + "langpacks-en-2.0-7.fc31.noarch", + "lcms2-2.9-6.fc31.x86_64", + "less-551-2.fc31.x86_64", + "libX11-1.6.8-3.fc31.x86_64", + "libX11-common-1.6.8-3.fc31.noarch", + "libXau-1.0.9-2.fc31.x86_64", + "libXcomposite-0.4.4-17.fc31.x86_64", + "libXcursor-1.1.15-6.fc31.x86_64", + "libXdamage-1.1.4-17.fc31.x86_64", + "libXext-1.3.4-2.fc31.x86_64", + "libXfixes-5.0.3-10.fc31.x86_64", + "libXft-2.3.3-2.fc31.x86_64", + "libXi-1.7.10-2.fc31.x86_64", + "libXinerama-1.1.4-4.fc31.x86_64", + "libXrandr-1.5.2-2.fc31.x86_64", + "libXrender-0.9.10-10.fc31.x86_64", + "libXtst-1.2.3-10.fc31.x86_64", + "libacl-2.2.53-4.fc31.x86_64", + "libarchive-3.4.0-1.fc31.x86_64", + "libargon2-20171227-3.fc31.x86_64", + "libassuan-2.5.3-2.fc31.x86_64", + "libattr-2.4.48-7.fc31.x86_64", + "libbasicobjects-0.1.1-43.fc31.x86_64", + "libblkid-2.34-3.fc31.x86_64", + "libcap-2.26-6.fc31.x86_64", + "libcap-ng-0.7.9-8.fc31.x86_64", + "libcollection-0.7.0-43.fc31.x86_64", + "libcom_err-1.45.3-1.fc31.x86_64", + "libcomps-0.1.11-3.fc31.x86_64", + "libcroco-0.6.13-2.fc31.x86_64", + "libcurl-7.66.0-1.fc31.x86_64", + "libdatrie-0.2.9-10.fc31.x86_64", + "libdb-5.3.28-38.fc31.x86_64", + "libdb-utils-5.3.28-38.fc31.x86_64", + "libdhash-0.5.0-43.fc31.x86_64", + "libdnf-0.35.3-6.fc31.x86_64", + "libedit-3.1-28.20190324cvs.fc31.x86_64", + "libepoxy-1.5.3-4.fc31.x86_64", + "libevent-2.1.8-7.fc31.x86_64", + "libfdisk-2.34-3.fc31.x86_64", + "libffi-3.1-23.fc31.x86_64", + "libgcc-9.2.1-1.fc31.x86_64", + "libgcrypt-1.8.5-1.fc31.x86_64", + "libgomp-9.2.1-1.fc31.x86_64", + "libgpg-error-1.36-2.fc31.x86_64", + "libgusb-0.3.0-5.fc31.x86_64", + "libidn2-2.2.0-2.fc31.x86_64", + "libini_config-1.3.1-43.fc31.x86_64", + "libjpeg-turbo-2.0.2-4.fc31.x86_64", + "libkcapi-1.1.5-1.fc31.x86_64", + "libkcapi-hmaccalc-1.1.5-1.fc31.x86_64", + "libksba-1.3.5-10.fc31.x86_64", + "libldb-2.0.7-1.fc31.x86_64", + "libmaxminddb-1.2.0-8.fc31.x86_64", + "libmetalink-0.1.3-9.fc31.x86_64", + "libmnl-1.0.4-10.fc31.x86_64", + "libmodman-2.0.1-20.fc31.x86_64", + "libmodulemd1-1.8.15-3.fc31.x86_64", + "libmount-2.34-3.fc31.x86_64", + "libndp-1.7-4.fc31.x86_64", + "libnetfilter_conntrack-1.0.7-3.fc31.x86_64", + "libnfnetlink-1.0.1-16.fc31.x86_64", + "libnfsidmap-2.4.1-1.rc1.fc31.x86_64", + "libnftnl-1.1.3-2.fc31.x86_64", + "libnghttp2-1.39.2-1.fc31.x86_64", + "libnl3-3.5.0-1.fc31.x86_64", + "libnsl2-1.2.0-5.20180605git4a062cf.fc31.x86_64", + "libpath_utils-0.2.1-43.fc31.x86_64", + "libpcap-1.9.0-4.fc31.x86_64", + "libpipeline-1.5.1-3.fc31.x86_64", + "libpng-1.6.37-2.fc31.x86_64", + "libproxy-0.4.15-14.fc31.x86_64", + "libpsl-0.21.0-2.fc31.x86_64", + "libpwquality-1.4.1-1.fc31.x86_64", + "libref_array-0.1.5-43.fc31.x86_64", + "librepo-1.10.5-1.fc31.x86_64", + "libreport-filesystem-2.10.1-2.fc31.noarch", + "libseccomp-2.4.1-1.fc31.x86_64", + "libsecret-0.19.1-1.fc31.x86_64", + "libselinux-2.9-5.fc31.x86_64", + "libselinux-utils-2.9-5.fc31.x86_64", + "libsemanage-2.9-3.fc31.x86_64", + "libsepol-2.9-2.fc31.x86_64", + "libsigsegv-2.11-8.fc31.x86_64", + "libsmartcols-2.34-3.fc31.x86_64", + "libsolv-0.7.5-3.fc31.x86_64", + "libsoup-2.68.2-1.fc31.x86_64", + "libss-1.45.3-1.fc31.x86_64", + "libssh-0.9.0-6.fc31.x86_64", + "libssh-config-0.9.0-6.fc31.noarch", + "libsss_autofs-2.2.2-1.fc31.x86_64", + "libsss_certmap-2.2.2-1.fc31.x86_64", + "libsss_idmap-2.2.2-1.fc31.x86_64", + "libsss_nss_idmap-2.2.2-1.fc31.x86_64", + "libsss_sudo-2.2.2-1.fc31.x86_64", + "libstdc++-9.2.1-1.fc31.x86_64", + "libtalloc-2.3.0-1.fc31.x86_64", + "libtasn1-4.14-2.fc31.x86_64", + "libtdb-1.4.2-1.fc31.x86_64", + "libtevent-0.10.1-1.fc31.x86_64", + "libtextstyle-0.20.1-2.fc31.x86_64", + "libthai-0.1.28-3.fc31.x86_64", + "libtiff-4.0.10-6.fc31.x86_64", + "libtirpc-1.1.4-2.rc3.fc31.x86_64", + "libunistring-0.9.10-6.fc31.x86_64", + "libusbx-1.0.22-4.fc31.x86_64", + "libuser-0.62-21.fc31.x86_64", + "libutempter-1.1.6-17.fc31.x86_64", + "libuuid-2.34-3.fc31.x86_64", + "libverto-0.3.0-8.fc31.x86_64", + "libwayland-client-1.17.0-2.fc31.x86_64", + "libwayland-cursor-1.17.0-2.fc31.x86_64", + "libwayland-egl-1.17.0-2.fc31.x86_64", + "libxcb-1.13.1-3.fc31.x86_64", + "libxcrypt-4.4.10-1.fc31.x86_64", + "libxcrypt-compat-4.4.10-1.fc31.x86_64", + "libxkbcommon-0.8.4-2.fc31.x86_64", + "libxml2-2.9.9-3.fc31.x86_64", + "libyaml-0.2.2-2.fc31.x86_64", + "libzstd-1.4.2-1.fc31.x86_64", + "linux-atm-libs-2.5.1-25.fc31.x86_64", + "linux-firmware-20190923-102.fc31.noarch", + "linux-firmware-whence-20190923-102.fc31.noarch", + "lmdb-libs-0.9.23-3.fc31.x86_64", + "lua-libs-5.3.5-6.fc31.x86_64", + "lz4-libs-1.9.1-1.fc31.x86_64", + "man-db-2.8.4-5.fc31.x86_64", + "mkpasswd-5.5.2-1.fc31.x86_64", + "mpfr-3.1.6-5.fc31.x86_64", + "ncurses-6.1-12.20190803.fc31.x86_64", + "ncurses-base-6.1-12.20190803.fc31.noarch", + "ncurses-libs-6.1-12.20190803.fc31.x86_64", + "net-tools-2.0-0.55.20160912git.fc31.x86_64", + "nettle-3.5.1-3.fc31.x86_64", + "nftables-0.9.1-3.fc31.x86_64", + "npth-1.6-3.fc31.x86_64", + "openldap-2.4.47-3.fc31.x86_64", + "openssh-8.0p1-8.fc31.1.x86_64", + "openssh-clients-8.0p1-8.fc31.1.x86_64", + "openssh-server-8.0p1-8.fc31.1.x86_64", + "openssl-1.1.1d-2.fc31.x86_64", + "openssl-libs-1.1.1d-2.fc31.x86_64", + "openssl-pkcs11-0.4.10-2.fc31.x86_64", + "os-prober-1.77-3.fc31.x86_64", + "p11-kit-0.23.16.1-2.fc31.x86_64", + "p11-kit-trust-0.23.16.1-2.fc31.x86_64", + "pam-1.3.1-18.fc31.x86_64", + "pango-1.44.6-1.fc31.x86_64", + "parted-3.2.153-1.fc31.x86_64", + "passwd-0.80-6.fc31.x86_64", + "pcre-8.43-2.fc31.1.x86_64", + "pcre2-10.33-14.fc31.x86_64", + "pigz-2.4-5.fc31.x86_64", + "pinentry-1.1.0-6.fc31.x86_64", + "pixman-0.38.4-1.fc31.x86_64", + "plymouth-0.9.4-10.20191001gita8aad27.fc31.x86_64", + "plymouth-core-libs-0.9.4-10.20191001gita8aad27.fc31.x86_64", + "plymouth-scripts-0.9.4-10.20191001gita8aad27.fc31.x86_64", + "policycoreutils-2.9-5.fc31.x86_64", + "polkit-libs-0.116-4.fc31.x86_64", + "popt-1.16-18.fc31.x86_64", + "procps-ng-3.3.15-6.fc31.x86_64", + "publicsuffix-list-dafsa-20190417-2.fc31.noarch", + "python-pip-wheel-19.1.1-4.fc31.noarch", + "python-setuptools-wheel-41.2.0-1.fc31.noarch", + "python-unversioned-command-3.7.4-5.fc31.noarch", + "python3-3.7.4-5.fc31.x86_64", + "python3-asn1crypto-0.24.0-7.fc31.noarch", + "python3-attrs-19.1.0-2.fc31.noarch", + "python3-audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64", + "python3-babel-2.7.0-2.fc31.noarch", + "python3-cffi-1.12.3-1.fc31.x86_64", + "python3-chardet-3.0.4-10.fc31.noarch", + "python3-configobj-5.0.6-16.fc31.noarch", + "python3-cryptography-2.6.1-2.fc31.x86_64", + "python3-dateutil-2.8.0-3.fc31.noarch", + "python3-dbus-1.2.8-6.fc31.x86_64", + "python3-decorator-4.4.0-2.fc31.noarch", + "python3-distro-1.4.0-2.fc31.noarch", + "python3-dnf-4.2.9-5.fc31.noarch", + "python3-dnf-plugins-core-4.0.9-1.fc31.noarch", + "python3-firewall-0.7.2-1.fc31.noarch", + "python3-gobject-base-3.34.0-3.fc31.x86_64", + "python3-gpg-1.13.1-3.fc31.x86_64", + "python3-hawkey-0.35.3-6.fc31.x86_64", + "python3-idna-2.8-2.fc31.noarch", + "python3-jinja2-2.10.1-2.fc31.noarch", + "python3-jsonpatch-1.21-8.fc31.noarch", + "python3-jsonpointer-1.10-16.fc31.noarch", + "python3-jsonschema-3.0.2-1.fc31.noarch", + "python3-jwt-1.7.1-3.fc31.noarch", + "python3-libcomps-0.1.11-3.fc31.x86_64", + "python3-libdnf-0.35.3-6.fc31.x86_64", + "python3-libs-3.7.4-5.fc31.x86_64", + "python3-libselinux-2.9-5.fc31.x86_64", + "python3-libsemanage-2.9-3.fc31.x86_64", + "python3-markupsafe-1.1.1-2.fc31.x86_64", + "python3-oauthlib-3.0.2-2.fc31.noarch", + "python3-pip-19.1.1-4.fc31.noarch", + "python3-ply-3.11-3.fc31.noarch", + "python3-policycoreutils-2.9-5.fc31.noarch", + "python3-prettytable-0.7.2-18.fc31.noarch", + "python3-pycparser-2.14-20.fc31.noarch", + "python3-pyrsistent-0.15.4-1.fc31.x86_64", + "python3-pyserial-3.4-3.fc31.noarch", + "python3-pysocks-1.7.0-2.fc31.noarch", + "python3-pytz-2019.2-1.fc31.noarch", + "python3-pyyaml-5.1.2-1.fc31.x86_64", + "python3-requests-2.22.0-3.fc31.noarch", + "python3-rpm-4.15.0-6.fc31.x86_64", + "python3-setools-4.2.2-1.fc31.x86_64", + "python3-setuptools-41.2.0-1.fc31.noarch", + "python3-six-1.12.0-2.fc31.noarch", + "python3-slip-0.6.4-16.fc31.noarch", + "python3-slip-dbus-0.6.4-16.fc31.noarch", + "python3-unbound-1.9.3-1.fc31.x86_64", + "python3-urllib3-1.25.3-4.fc31.noarch", + "qrencode-libs-4.0.2-4.fc31.x86_64", + "readline-8.0-3.fc31.x86_64", + "rest-0.8.1-6.fc31.x86_64", + "rootfiles-8.1-25.fc31.noarch", + "rpm-4.15.0-6.fc31.x86_64", + "rpm-build-libs-4.15.0-6.fc31.x86_64", + "rpm-libs-4.15.0-6.fc31.x86_64", + "rpm-plugin-selinux-4.15.0-6.fc31.x86_64", + "rpm-plugin-systemd-inhibit-4.15.0-6.fc31.x86_64", + "rpm-sign-libs-4.15.0-6.fc31.x86_64", + "sed-4.5-4.fc31.x86_64", + "selinux-policy-3.14.4-37.fc31.noarch", + "selinux-policy-targeted-3.14.4-37.fc31.noarch", + "setup-2.13.3-2.fc31.noarch", + "shadow-utils-4.6-16.fc31.x86_64", + "shared-mime-info-1.14-1.fc31.x86_64", + "sqlite-libs-3.29.0-2.fc31.x86_64", + "sssd-client-2.2.2-1.fc31.x86_64", + "sssd-common-2.2.2-1.fc31.x86_64", + "sssd-kcm-2.2.2-1.fc31.x86_64", + "sssd-nfs-idmap-2.2.2-1.fc31.x86_64", + "sudo-1.8.28-1.fc31.x86_64", + "systemd-243-4.gitef67743.fc31.x86_64", + "systemd-bootchart-233-5.fc31.x86_64", + "systemd-libs-243-4.gitef67743.fc31.x86_64", + "systemd-pam-243-4.gitef67743.fc31.x86_64", + "systemd-rpm-macros-243-4.gitef67743.fc31.noarch", + "systemd-udev-243-4.gitef67743.fc31.x86_64", + "trousers-0.3.13-13.fc31.x86_64", + "trousers-lib-0.3.13-13.fc31.x86_64", + "tss2-1331-2.fc31.x86_64", + "tzdata-2019c-1.fc31.noarch", + "unbound-libs-1.9.3-1.fc31.x86_64", + "util-linux-2.34-3.fc31.x86_64", + "vim-minimal-8.1.2102-1.fc31.x86_64", + "which-2.21-15.fc31.x86_64", + "whois-nls-5.5.2-1.fc31.noarch", + "xfsprogs-5.1.0-2.fc31.x86_64", + "xkeyboard-config-2.27-2.fc31.noarch", + "xz-5.2.4-6.fc31.x86_64", + "xz-libs-5.2.4-6.fc31.x86_64", + "yum-4.2.9-5.fc31.noarch", + "zchunk-libs-1.1.2-3.fc31.x86_64", + "zlib-1.2.11-19.fc31.x86_64" + ], + "partition-table": "dos", + "partition-table-id": "0x14fc63d2", + "partitions": [ + { + "bootable": true, + "fstype": "ext4", + "label": null, + "partuuid": "14fc63d2-01", + "size": 6441402368, + "start": 1048576, + "type": "83", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:996:993::/var/lib/chrony:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:998:995:systemd Core Dumper:/:/sbin/nologin", + "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "systemd-timesync:x:997:994:systemd Time Synchronization:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:999:999:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/boot/System.map-5.3.7-301.fc31.x86_64": ".M.......", + "/boot/initramfs-5.3.7-301.fc31.x86_64.img": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/proc": ".M.......", + "/run/cryptsetup": ".M.......", + "/sys": ".M.......", + "/var/log/btmp": ".M.......", + "/var/log/journal": ".M....G..", + "/var/log/lastlog": ".M....G.." + }, + "missing": [] + }, + "services-disabled": [ + "arp-ethers.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "console-getty.service", + "debug-shell.service", + "exit.target", + "fstrim.timer", + "halt.target", + "kexec.target", + "loadmodules.service", + "nftables.service", + "nis-domainname.service", + "poweroff.target", + "proc-sys-fs-binfmt_misc.mount", + "rdisc.service", + "remote-cryptsetup.target", + "runlevel0.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-boot-check-no-failures.service", + "systemd-bootchart.service", + "systemd-network-generator.service", + "systemd-networkd-wait-online.service", + "systemd-networkd.service", + "systemd-networkd.socket", + "systemd-pstore.service", + "systemd-resolved.service", + "systemd-time-wait-sync.service", + "systemd-timesyncd.service", + "tcsd.service" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "cloud-init.service", + "ctrl-alt-del.target", + "dbus-broker.service", + "dbus-org.fedoraproject.FirewallD1.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dbus.service", + "dbus.socket", + "dnf-makecache.timer", + "firewalld.service", + "getty@.service", + "import-state.service", + "messagebus.service", + "reboot.target", + "remote-fs.target", + "runlevel6.target", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "unbound-anchor.timer" + ] + } +} \ No newline at end of file diff --git a/test/cases/fedora_31-x86_64-openstack-boot.json b/test/cases/fedora_31-x86_64-openstack-boot.json new file mode 100644 index 0000000..e33ff4d --- /dev/null +++ b/test/cases/fedora_31-x86_64-openstack-boot.json @@ -0,0 +1,11771 @@ +{ + "boot": { + "type": "openstack" + }, + "compose-request": { + "distro": "fedora-31", + "arch": "x86_64", + "image-type": "openstack", + "repositories": [ + { + "baseurl": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ], + "filename": "disk.qcow2", + "blueprint": { + "name": "openstack-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcurl-7.66.0-1.fc31.x86_64.rpm" + }, + "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre2-10.33-14.fc31.x86_64.rpm" + }, + "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdatrie-0.2.9-10.fc31.x86_64.rpm" + }, + "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-firmware-20190923-102.fc31.noarch.rpm" + }, + "sha256:047f9e29fcfa56be98ca3f42249f3ccb2a93df99f2438e3983e2064025f0d79d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jsonschema-3.0.2-1.fc31.noarch.rpm" + }, + "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm" + }, + "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-6.fc31.x86_64.rpm" + }, + "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-six-1.12.0-2.fc31.noarch.rpm" + }, + "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-2.fc31.x86_64.rpm" + }, + "sha256:07a3523159719382e2bb9b83961bfe00836cc97f75a9706d02ad73dddb161856": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/chrony-3.5-4.fc31.x86_64.rpm" + }, + "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontconfig-2.13.92-3.fc31.x86_64.rpm" + }, + "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bash-5.0.7-3.fc31.x86_64.rpm" + }, + "sha256:0b54f374bcbe094dbc0d52d9661fe99ebff384026ce0ea39f2d6069e27bf8bdc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdhash-0.5.0-43.fc31.x86_64.rpm" + }, + "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-1.16.0-6.fc31.x86_64.rpm" + }, + "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.x86_64.rpm" + }, + "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.x86_64.rpm" + }, + "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnghttp2-1.39.2-1.fc31.x86_64.rpm" + }, + "sha256:0f26eca4ac936554818769fe32aca5e878af2616e83f836ec463e59eb4f9f1f9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcollection-0.7.0-43.fc31.x86_64.rpm" + }, + "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.x86_64.rpm" + }, + "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.x86_64.rpm" + }, + "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-common-2.30-5.fc31.x86_64.rpm" + }, + "sha256:1135e96b6f9ed29e4ed4c0f060876891a244442a503f0b18ab238589da20d464": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jinja2-2.10.1-2.fc31.noarch.rpm" + }, + "sha256:118548479396b007a80bc98e8cef770ea242ef6b20cd2922d595acd4c100946d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/polkit-libs-0.116-4.fc31.x86_64.rpm" + }, + "sha256:143c50c0663f963c7689c1cec43b81cf1433d5d3b67eb8233ba06506c1b3e095": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jwt-1.7.1-3.fc31.noarch.rpm" + }, + "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/graphite2-1.3.13-1.fc31.x86_64.rpm" + }, + "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-plugins-core-4.0.9-1.fc31.noarch.rpm" + }, + "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm" + }, + "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsmartcols-2.34-3.fc31.x86_64.rpm" + }, + "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-6.1-12.20190803.fc31.x86_64.rpm" + }, + "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-extra-2.02-100.fc31.x86_64.rpm" + }, + "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsigsegv-2.11-8.fc31.x86_64.rpm" + }, + "sha256:1b65944efe48ba0cca34011891480a1db29a7e95dad058376bfca34d68fb0791": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-ply-3.11-3.fc31.noarch.rpm" + }, + "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-misc-2.0.4-14.fc31.noarch.rpm" + }, + "sha256:1e049e86c5dd5c4d6737d47dd194d553ffbd65c81a4077cf6e1029a0fde80fb5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-requests-2.22.0-3.fc31.noarch.rpm" + }, + "sha256:1e5f14d26556e380ed129289c1b98d46d951966e548613b9c2ee0d3616ac96d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-modules-5.3.7-301.fc31.x86_64.rpm" + }, + "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gzip-1.10-1.fc31.x86_64.rpm" + }, + "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/acl-2.2.53-4.fc31.x86_64.rpm" + }, + "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm" + }, + "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/librepo-1.10.5-1.fc31.x86_64.rpm" + }, + "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-rpm-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.x86_64.rpm" + }, + "sha256:21ccdbe703caa6a08056d2bc75c1e184f811472a6e320e5af64b8757fcd07166": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/groff-base-1.22.3-20.fc31.x86_64.rpm" + }, + "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libfdisk-2.34-3.fc31.x86_64.rpm" + }, + "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-1.fc31.x86_64.rpm" + }, + "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libutempter-1.1.6-17.fc31.x86_64.rpm" + }, + "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/readline-8.0-3.fc31.x86_64.rpm" + }, + "sha256:22db6d1e1f34a43c3d045b6750ff3a32184d47c2aedf3dabc93640057de1f4fa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/less-551-2.fc31.x86_64.rpm" + }, + "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.x86_64.rpm" + }, + "sha256:239a9576864532edd325e72b62a10ef147a2bcc0a925079b19fb9cb74bab0dd7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/c-ares-1.15.0-4.fc31.x86_64.rpm" + }, + "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-c-0.13.1-6.fc31.x86_64.rpm" + }, + "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-3.7.4-5.fc31.x86_64.rpm" + }, + "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXfixes-5.0.3-10.fc31.x86_64.rpm" + }, + "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-1.6.8-3.fc31.x86_64.rpm" + }, + "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-2.fc31.noarch.rpm" + }, + "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libstdc++-9.2.1-1.fc31.x86_64.rpm" + }, + "sha256:2af3bbdab1f387ae7af2534846e33ab6d2ca7777399c64191f95699d576cd4ba": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/initscripts-10.02-2.fc31.x86_64.rpm" + }, + "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.x86_64.rpm" + }, + "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgpg-error-1.36-2.fc31.x86_64.rpm" + }, + "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shadow-utils-4.6-16.fc31.x86_64.rpm" + }, + "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/brotli-1.0.7-6.fc31.x86_64.rpm" + }, + "sha256:2c5b5ce5f6e6d1d79f35eab253a12e19aeb863f4fe8ded94013f76a9834689fb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.20.4-1.fc31.x86_64.rpm" + }, + "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm" + }, + "sha256:2cd5a709ff2c286b73f850469b1ee6baf9077b90ce3bacb8ba712430c6632350": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnftnl-1.1.3-2.fc31.x86_64.rpm" + }, + "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.x86_64.rpm" + }, + "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm" + }, + "sha256:2d9a2e736dd5231df3c5c748ce0ba5a75a409dacfe73f14676781f32d565a7df": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jsonpointer-1.10-16.fc31.noarch.rpm" + }, + "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXext-1.3.4-2.fc31.x86_64.rpm" + }, + "sha256:2e588b5133dc8cb26ff0226f66eb1be440c6b784ec6fa67a5f0516d8ccaf46f5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-cryptography-2.6.1-2.fc31.x86_64.rpm" + }, + "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-libs-5.37-3.fc31.x86_64.rpm" + }, + "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsepol-2.9-2.fc31.x86_64.rpm" + }, + "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm" + }, + "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/langpacks-en-2.0-7.fc31.noarch.rpm" + }, + "sha256:307275b46896d56d23f5da5ab77a299941e77165ff44e846d6620eee1158131c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_certmap-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/avahi-libs-0.7-20.fc31.x86_64.rpm" + }, + "sha256:32cc578c8da626a8c1a5316a59d482967a32547be6c077f73fb90e11fb0f1e6a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyserial-3.4-3.fc31.noarch.rpm" + }, + "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsolv-0.7.5-3.fc31.x86_64.rpm" + }, + "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.x86_64.rpm" + }, + "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/harfbuzz-2.6.1-2.fc31.x86_64.rpm" + }, + "sha256:33334afdde6c813b18c18897dca19fab5a2ce090eba0b5ea0a38f43f1081c190": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dhcp-client-4.4.1-15.fc31.x86_64.rpm" + }, + "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib-networking-2.62.1-1.fc31.x86_64.rpm" + }, + "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-2.30-5.fc31.x86_64.rpm" + }, + "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libarchive-3.4.0-1.fc31.x86_64.rpm" + }, + "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXft-2.3.3-2.fc31.x86_64.rpm" + }, + "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-3.33.4-1.fc31.x86_64.rpm" + }, + "sha256:34a9986b8b61812ceaf32ce3b189bd0b2cb4adaaf47d76ec1f50ce07c45b5675": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-config-generic-049-27.git20181204.fc31.1.x86_64.rpm" + }, + "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dejavu-fonts-common-2.37-2.fc31.noarch.rpm" + }, + "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm" + }, + "sha256:3597ed358e421f7dc161d2f263e7e36c61aa1b4c9e547ed94ab5db2bd35f42de": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/y/yajl-2.1.0-13.fc31.x86_64.rpm" + }, + "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm" + }, + "sha256:35c348bcd91fa114ad459b888131e5e5509259cffce33f22c44f92e57e9e5919": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dbus-1.2.8-6.fc31.x86_64.rpm" + }, + "sha256:3629a3675c7dadd89f3b3d855e7c57d8f93d30d59fa00fdeabfc5e5e39ca4937": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/checkpolicy-2.9-2.fc31.x86_64.rpm" + }, + "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libs-3.7.4-5.fc31.x86_64.rpm" + }, + "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libargon2-20171227-3.fc31.x86_64.rpm" + }, + "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.x86_64.rpm" + }, + "sha256:38b735944048f8f2d2fcea5f36292b7ef25c849636d6c16b7fc1e956285f9d92": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/spice-vdagent-0.19.0-4.fc31.x86_64.rpm" + }, + "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libevent-2.1.8-7.fc31.x86_64.rpm" + }, + "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-2.2.17-2.fc31.x86_64.rpm" + }, + "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-31-1.noarch.rpm" + }, + "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcc-9.2.1-1.fc31.x86_64.rpm" + }, + "sha256:41edf2ba208309eb1cde80d5d227c4fdf43906ef47ed76aa37a51c344dfed3ee": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qemu-guest-agent-4.1.0-2.fc31.x86_64.rpm" + }, + "sha256:422625da0fbb99cc4da8eebebff892c6e73a87c81a33190f7a17e344f6bb709e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_autofs-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rest-0.8.1-6.fc31.x86_64.rpm" + }, + "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grep-3.3-3.fc31.x86_64.rpm" + }, + "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nettle-3.5.1-3.fc31.x86_64.rpm" + }, + "sha256:430f2f71be063eb9d04fe38659f62e29f47c9c878f9985d0569cb49e9c89ebc0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmaxminddb-1.2.0-8.fc31.x86_64.rpm" + }, + "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.x86_64.rpm" + }, + "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.x86_64.rpm" + }, + "sha256:45bf4bef479712936db1d6859b043d13e6cad41c851b6e621fc315b39ecfa14b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libndp-1.7-4.fc31.x86_64.rpm" + }, + "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mkpasswd-5.5.2-1.fc31.x86_64.rpm" + }, + "sha256:469d12368377399b8eaa7ec8cf1b6378ab18476b4a2b61b79091510a8945c6aa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-43.fc31.x86_64.rpm" + }, + "sha256:485348573bd4666bedac7a15d4a0dd0cac241ac18f8f62871dae176b44a5114d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xen-licenses-4.12.1-1.fc31.x86_64.rpm" + }, + "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zlib-1.2.11-19.fc31.x86_64.rpm" + }, + "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm" + }, + "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXdamage-1.1.4-17.fc31.x86_64.rpm" + }, + "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtiff-4.0.10-6.fc31.x86_64.rpm" + }, + "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm" + }, + "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm" + }, + "sha256:4cca3f986ddbd38cfbfb6d1c8d336a1aaed78f7da1f38356ce1e034ba35ec492": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-attrs-19.1.0-2.fc31.noarch.rpm" + }, + "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtasn1-4.14-2.fc31.x86_64.rpm" + }, + "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.10-1.fc31.x86_64.rpm" + }, + "sha256:4f9bbd08f6019b3482342d616d6b04e6481924ea34fbfe8d30ef63402a92e9b1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-nfs-idmap-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-5.37-3.fc31.x86_64.rpm" + }, + "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm" + }, + "sha256:5593277fa685adba864393da8faf76950d6d8fb1483af036cdc08d8437c387bb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtevent-0.10.1-1.fc31.x86_64.rpm" + }, + "sha256:55c47c63deb00a9126c068299c01dfbdd39d58c6962138b862b92f5c7af8c898": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/parted-3.2.153-1.fc31.x86_64.rpm" + }, + "sha256:561014bd90810d512b4098c8e1d3ca05aa8c6a74bc258b3b7e3e2fd36a1ed157": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/plymouth-core-libs-0.9.4-10.20191001gita8aad27.fc31.x86_64.rpm" + }, + "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libss-1.45.3-1.fc31.x86_64.rpm" + }, + "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jbigkit-libs-2.1-17.fc31.x86_64.rpm" + }, + "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libthai-0.1.28-3.fc31.x86_64.rpm" + }, + "sha256:57d472b7ca59119fc581b50b2fe8a293f33bfe497ec65fe5e5dcedad8c1b7396": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xen-libs-4.12.1-1.fc31.x86_64.rpm" + }, + "sha256:5a7e957102a23c9924398fe45f5cdec66edcd10adcad7130d6ebf02c2706ad49": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-policycoreutils-2.9-5.fc31.noarch.rpm" + }, + "sha256:5bab4beb581893f90fbb7d46d47c74932cd788c1535f92ee98f81deac6d3658c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdrm-2.4.99-2.fc31.x86_64.rpm" + }, + "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgomp-9.2.1-1.fc31.x86_64.rpm" + }, + "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-8.0p1-8.fc31.1.x86_64.rpm" + }, + "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/krb5-libs-1.17-45.fc31.x86_64.rpm" + }, + "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.02-100.fc31.x86_64.rpm" + }, + "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-udev-243-4.gitef67743.fc31.x86_64.rpm" + }, + "sha256:5d8d55e12443628c7a1915648845663e4aed1863805854de0adadd89772eda2a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-markupsafe-1.1.1-2.fc31.x86_64.rpm" + }, + "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-1.12.16-3.fc31.x86_64.rpm" + }, + "sha256:5e07e49fdacc1f52b583ee685d03bf5ce045e9d34a323bd26607148a3937a9ce": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/plymouth-0.9.4-10.20191001gita8aad27.fc31.x86_64.rpm" + }, + "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdnf-0.35.3-6.fc31.x86_64.rpm" + }, + "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libffi-3.1-23.fc31.x86_64.rpm" + }, + "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/os-prober-1.77-3.fc31.x86_64.rpm" + }, + "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-3.fc31.x86_64.rpm" + }, + "sha256:63ff108f557096a9724053c37e37d3c2af1a1ec0b33124480b3742ff3da46292": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-decorator-4.4.0-2.fc31.noarch.rpm" + }, + "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-2.fc31.x86_64.rpm" + }, + "sha256:669250ad47aad5939cf4d1b88036fd95a94845d8e0bbdb05e933f3d2fe262fea": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qemu-img-4.1.0-2.fc31.x86_64.rpm" + }, + "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsecret-0.19.1-1.fc31.x86_64.rpm" + }, + "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libusbx-1.0.22-4.fc31.x86_64.rpm" + }, + "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libunistring-0.9.10-6.fc31.x86_64.rpm" + }, + "sha256:6807ac3ae6b7c0ea3a085106cedb687f79edfda500feb747039dc112ed3c518f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gobject-base-3.34.0-3.fc31.x86_64.rpm" + }, + "sha256:682af90a049fa78429d5ebd194700609f762e59ceb6c4ca28b17e7f4fd1683aa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-prettytable-0.7.2-18.fc31.noarch.rpm" + }, + "sha256:687d00eb0b77446dbd78aaa0f4f99cc080c677930ad783120483614255264a3d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-client-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cpio-2.12-12.fc31.x86_64.rpm" + }, + "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpwquality-1.4.1-1.fc31.x86_64.rpm" + }, + "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm" + }, + "sha256:6b694ee239a2e3f38c401e975de392e3731ad8b18be5a3249ea02f19e87cb5cb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-common-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm" + }, + "sha256:6c1f9dc11de4d3af4d4c418b4556ee9659011d587e9da44bb039cb30ac326841": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.x86_64.rpm" + }, + "sha256:6c6f1152899318bdc0500cfb0b0cdbbc19ba0e017b5888ece1358250caa2629f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pytz-2019.2-1.fc31.noarch.rpm" + }, + "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmount-2.34-3.fc31.x86_64.rpm" + }, + "sha256:6d8cbba688cea65fa80983cd7f140633e94cd58daa819342d1ae571a4ff174c6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/NetworkManager-1.20.4-1.fc31.x86_64.rpm" + }, + "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.x86_64.rpm" + }, + "sha256:6ed7f318c5e93b59254d7b7652131f33db713eeb61f52413f21e533069ed24bf": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pycparser-2.14-20.fc31.noarch.rpm" + }, + "sha256:6f2dae9b49bed8e1036a21aadd92ea2eb371979f6714ec2bce5742de051eeb14": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.30-5.fc31.x86_64.rpm" + }, + "sha256:6f729da330aaaea336458a8b6f3f1d2cc761693ba20bdda57fb9c49fb6f2120d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-43.fc31.x86_64.rpm" + }, + "sha256:6f7fbd57db9334a3cc7983d2e920afe92abe3f7e168702612d70e9ff405d79e6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libini_config-1.3.1-43.fc31.x86_64.rpm" + }, + "sha256:704ebfc50ace9417ed28f4530d778359a4c2f95d524c2e99346472245e30b548": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sudo-1.8.28-1.fc31.x86_64.rpm" + }, + "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm" + }, + "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpsl-0.21.0-2.fc31.x86_64.rpm" + }, + "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.x86_64.rpm" + }, + "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-2.fc31.x86_64.rpm" + }, + "sha256:72b5df6982fecdbee30d40bbb6042c72ed0f31b787f289b4a27f0dffc6f609fe": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iputils-20190515-3.fc31.x86_64.rpm" + }, + "sha256:73a7249de97f0ad66bc1a867ac5b5d08b741ab152d4dd7ce45cc231d64126b58": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-asn1crypto-0.24.0-7.fc31.noarch.rpm" + }, + "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-3.fc31.x86_64.rpm" + }, + "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libblkid-2.34-3.fc31.x86_64.rpm" + }, + "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jasper-libs-2.0.14-9.fc31.x86_64.rpm" + }, + "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dhcp-common-4.4.1-15.fc31.noarch.rpm" + }, + "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/y/yum-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-2.26-6.fc31.x86_64.rpm" + }, + "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib2-2.62.1-1.fc31.x86_64.rpm" + }, + "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.x86_64.rpm" + }, + "sha256:764699ea124f85a7afcf65a2f138e3821770f8aa1ef134e1813e2b04477f0b74": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/man-db-2.8.4-5.fc31.x86_64.rpm" + }, + "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk3-3.24.12-3.fc31.x86_64.rpm" + }, + "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libidn2-2.2.0-2.fc31.x86_64.rpm" + }, + "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/policycoreutils-2.9-5.fc31.x86_64.rpm" + }, + "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm" + }, + "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libs-0.177-1.fc31.x86_64.rpm" + }, + "sha256:78b600621e00f4a0acc8f58de056ae9393ce4e1cded56837b4e557c1bc84b06b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-urllib3-1.25.3-4.fc31.noarch.rpm" + }, + "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXinerama-1.1.4-4.fc31.x86_64.rpm" + }, + "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/findutils-4.6.0-24.fc31.x86_64.rpm" + }, + "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libyaml-0.2.2-2.fc31.x86_64.rpm" + }, + "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/popt-1.16-18.fc31.x86_64.rpm" + }, + "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.x86_64.rpm" + }, + "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-libs-1.8.3-5.fc31.x86_64.rpm" + }, + "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kpartx-0.8.0-3.fc31.x86_64.rpm" + }, + "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-base-3.33.4-1.fc31.x86_64.rpm" + }, + "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-unbound-1.9.3-1.fc31.x86_64.rpm" + }, + "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgusb-0.3.0-5.fc31.x86_64.rpm" + }, + "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/alternatives-1.11-5.fc31.x86_64.rpm" + }, + "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shared-mime-info-1.14-1.fc31.x86_64.rpm" + }, + "sha256:7fc8df6b10728f46c3e752c35f6777f17025bef30f61c67f76de2538888a5546": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-cffi-1.12.3-1.fc31.x86_64.rpm" + }, + "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodman-2.0.1-20.fc31.x86_64.rpm" + }, + "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/langpacks-core-en-2.0-7.fc31.noarch.rpm" + }, + "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-common-2.02-100.fc31.noarch.rpm" + }, + "sha256:8221111dc9a9aa5c68805f153c3fbe5314c8a0f335af29685733b958253dd278": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-idna-2.8-2.fc31.noarch.rpm" + }, + "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-5.3.28-38.fc31.x86_64.rpm" + }, + "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gawk-5.0.1-5.fc31.x86_64.rpm" + }, + "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm" + }, + "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-libs-5.2.4-6.fc31.x86_64.rpm" + }, + "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm" + }, + "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-243-4.gitef67743.fc31.x86_64.rpm" + }, + "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cups-libs-2.2.12-2.fc31.x86_64.rpm" + }, + "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libproxy-0.4.15-14.fc31.x86_64.rpm" + }, + "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-8.fc31.x86_64.rpm" + }, + "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lcms2-2.9-6.fc31.x86_64.rpm" + }, + "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/unbound-libs-1.9.3-1.fc31.x86_64.rpm" + }, + "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.x86_64.rpm" + }, + "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcroco-0.6.13-2.fc31.x86_64.rpm" + }, + "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:8bd2655674b40e89f5f63af7f8ffafd0e9064a3378cdca050262a7272678e8e5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnl3-3.5.0-1.fc31.x86_64.rpm" + }, + "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre-8.43-2.fc31.1.x86_64.rpm" + }, + "sha256:8c496ff256c18c8473f6d4ef87287828399f96ae19435e60c8179438aa0b59d0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpciaccess-0.15-2.fc31.x86_64.rpm" + }, + "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/colord-libs-1.4.4-2.fc31.x86_64.rpm" + }, + "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm" + }, + "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/atk-2.34.1-1.fc31.x86_64.rpm" + }, + "sha256:8e9a916cd4843e7d09e3d1b814dbb55bb3b45672b1058044cfeaf8e19ad27bd7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-1.8.3-5.fc31.x86_64.rpm" + }, + "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libattr-2.4.48-7.fc31.x86_64.rpm" + }, + "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnutls-3.6.10-1.fc31.x86_64.rpm" + }, + "sha256:8f7b737ccb294fd5ba1d19075ea2a50a54e0265d8efa28aae0ade59d3e3a63be": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libldb-2.0.7-1.fc31.x86_64.rpm" + }, + "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.x86_64.rpm" + }, + "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libacl-2.2.53-4.fc31.x86_64.rpm" + }, + "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pixman-0.38.4-1.fc31.x86_64.rpm" + }, + "sha256:9247561bad35a8a2f8269b2bbbd28d1bf5e6fcde1fe78e1fc3c0e712513e9703": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtalloc-2.3.0-1.fc31.x86_64.rpm" + }, + "sha256:93161df6d62fe654c7cdba9ae36343d2549b437b27eac816a80f8d7c32a47162": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-kcm-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-firmware-whence-20190923-102.fc31.noarch.rpm" + }, + "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.x86_64.rpm" + }, + "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pinentry-1.1.0-6.fc31.x86_64.rpm" + }, + "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXi-1.7.10-2.fc31.x86_64.rpm" + }, + "sha256:95b45de2c57f35df43bff0c2ebe32c64183968b3a41c5673cfeeff5ece506b94": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuser-0.62-21.fc31.x86_64.rpm" + }, + "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.x86_64.rpm" + }, + "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-utils-2.9-5.fc31.x86_64.rpm" + }, + "sha256:9975496f29601a1c2cdb89e63aac698fdd8283ba3a52a9d91ead9473a0e064c8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tar-1.32-2.fc31.x86_64.rpm" + }, + "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-1.fc31.x86_64.rpm" + }, + "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/curl-7.66.0-1.fc31.x86_64.rpm" + }, + "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-repos-31-1.noarch.rpm" + }, + "sha256:9cc3e6534ae34343e7e4d056d46b9551da7d0a82c7bad378c3626d4b70d1bf62": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cloud-init-17.1-11.fc31.noarch.rpm" + }, + "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-bootchart-233-5.fc31.x86_64.rpm" + }, + "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libverto-0.3.0-8.fc31.x86_64.rpm" + }, + "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-3.fc31.noarch.rpm" + }, + "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm" + }, + "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcomps-0.1.11-3.fc31.x86_64.rpm" + }, + "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-1.fc31.x86_64.rpm" + }, + "sha256:9fea00b14943cac0e3b11ff3a319765168cf78b3cc58fdee7d5fe48246a0aa4d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm" + }, + "sha256:a188b5c697b734d4ed7d8f954b6875b9d401dc2a3c10bfd20d03db131ca73ab5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hostname-3.20-9.fc31.x86_64.rpm" + }, + "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcomposite-0.4.4-17.fc31.x86_64.rpm" + }, + "sha256:a1bd1b5a2c47e57957a77d32f4fd705de1df30557837cfbc83b8f284e4ee0456": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-2.9.6-21.fc31.x86_64.rpm" + }, + "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gmp-6.1.2-10.fc31.x86_64.rpm" + }, + "sha256:a349c40034b5a181cab1bd409384ddb901c274e110b16721d434f5bf42e92c0f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-firewall-0.7.2-1.fc31.noarch.rpm" + }, + "sha256:a41579023e1db3dec06679ebc7788ece92686ea2a23c78dd749c98ddbc82d419": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.23-3.fc31.x86_64.rpm" + }, + "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.02-100.fc31.noarch.rpm" + }, + "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gpgme-1.13.1-3.fc31.x86_64.rpm" + }, + "sha256:a6bab7030d3296875cb0cad2c30fb18042dab8ae070c9c6f97457bb0a5cc6316": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyyaml-5.1.2-1.fc31.x86_64.rpm" + }, + "sha256:a7071aa0068c9dff913c5f0523be3ffdd7f67b8f13e1ee2aa16e486b01aecc1c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libsemanage-2.9-3.fc31.x86_64.rpm" + }, + "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-client-1.17.0-2.fc31.x86_64.rpm" + }, + "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pam-1.3.1-18.fc31.x86_64.rpm" + }, + "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-38.fc31.x86_64.rpm" + }, + "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-1.fc31.x86_64.rpm" + }, + "sha256:aacf84989a0fe55366f6d37ddd1753b8c06e5640e9334805bf468777824a3ac0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setools-4.2.2-1.fc31.x86_64.rpm" + }, + "sha256:ab35a2d7f21aac1f33f9521607789e1c303fb63e4ea0681e9f724f86a1cc15c5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/firewalld-0.7.2-1.fc31.noarch.rpm" + }, + "sha256:ab5ad6fc076fd82be6a2ca9d77998fc06c2c9e7296de960b7549239efb9f971d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gobject-introspection-1.62.0-1.fc31.x86_64.rpm" + }, + "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.x86_64.rpm" + }, + "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-libs-26-4.fc31.x86_64.rpm" + }, + "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.x86_64.rpm" + }, + "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libksba-1.3.5-10.fc31.x86_64.rpm" + }, + "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpcap-1.9.0-4.fc31.x86_64.rpm" + }, + "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm" + }, + "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tss2-1331-2.fc31.x86_64.rpm" + }, + "sha256:b1094a9a9725546315d6eac7f792d5875a5f0c950cd84e43fc2fbb3e639ee43e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-slip-0.6.4-16.fc31.noarch.rpm" + }, + "sha256:b110ee65fa2dee77585ec77cab592cba2434d579f8afbed4d2a908ad1addccfc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dosfstools-4.1-9.fc31.x86_64.rpm" + }, + "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libepoxy-1.5.3-4.fc31.x86_64.rpm" + }, + "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fribidi-1.0.5-4.fc31.x86_64.rpm" + }, + "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libseccomp-2.4.1-1.fc31.x86_64.rpm" + }, + "sha256:b3c4cfdf820225133f4e9e600de3300ef0c7bac34139433505dd4482da52be22": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xfsprogs-5.1.0-2.fc31.x86_64.rpm" + }, + "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuuid-2.34-3.fc31.x86_64.rpm" + }, + "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openldap-2.4.47-3.fc31.x86_64.rpm" + }, + "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.x86_64.rpm" + }, + "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-2.02-100.fc31.x86_64.rpm" + }, + "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-9.fc31.x86_64.rpm" + }, + "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-2.9-5.fc31.x86_64.rpm" + }, + "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.x86_64.rpm" + }, + "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm" + }, + "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.x86_64.rpm" + }, + "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcb-1.13.1-3.fc31.x86_64.rpm" + }, + "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libassuan-2.5.3-2.fc31.x86_64.rpm" + }, + "sha256:bd2e7c9e3df976723ade08f16667b31044b678e62ee29e024ad193af6d9a28e1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-slip-dbus-0.6.4-16.fc31.noarch.rpm" + }, + "sha256:bd72cac3d1ef93cff067070925e5f339c720bef82c5ade4477388636fef53b91": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/plymouth-scripts-0.9.4-10.20191001gita8aad27.fc31.x86_64.rpm" + }, + "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/npth-1.6-3.fc31.x86_64.rpm" + }, + "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-1.1.1d-2.fc31.x86_64.rpm" + }, + "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-2.fc31.noarch.rpm" + }, + "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-8.31-4.fc31.x86_64.rpm" + }, + "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrandr-1.5.2-2.fc31.x86_64.rpm" + }, + "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.4-37.fc31.noarch.rpm" + }, + "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.x86_64.rpm" + }, + "sha256:c3aa4d794cef51ba9fcbf3750baed55aabfa36062a48f61149ccf03364a0d256": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-server-8.0p1-8.fc31.1.x86_64.rpm" + }, + "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:c459092a47bd2f904d9fe830735b512ef97b52785ee12abb2ba5c52465560f18": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/passwd-0.80-6.fc31.x86_64.rpm" + }, + "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-5.2.4-6.fc31.x86_64.rpm" + }, + "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXtst-1.2.3-10.fc31.x86_64.rpm" + }, + "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.x86_64.rpm" + }, + "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.x86_64.rpm" + }, + "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.x86_64.rpm" + }, + "sha256:c8e0a36410ebbd9db0a10e1fbecbae8f6288b9be86752d2e91725d5dd98ec65d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipcalc-0.2.5-3.fc31.x86_64.rpm" + }, + "sha256:c976ce75eda3dbe734117f6f558eafb2061bbef66086a04cb907a7ddbaea8bc2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmnl-1.0.4-10.fc31.x86_64.rpm" + }, + "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-2.0.4-14.fc31.x86_64.rpm" + }, + "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libzstd-1.4.2-1.fc31.x86_64.rpm" + }, + "sha256:ca6a71888b8d147342012c64533f61a41b26c788bbcd2844a2164ee007fac981": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libselinux-2.9-5.fc31.x86_64.rpm" + }, + "sha256:cab1b0c3bdae2a07e15b90b414f50753c759e325b6f0cddfa27895748c77f082": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/ebtables-legacy-2.0.10-37.fc31.x86_64.rpm" + }, + "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-6.fc31.x86_64.rpm" + }, + "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm" + }, + "sha256:cc02df4125eaebf642edd9bf00031ec09871c285816c03112909ef1005410eaa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm" + }, + "sha256:cdc526097cd2fecb75e44ad11a69b10eb7804f310298c064c3b931515d4f3d5c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-configobj-5.0.6-16.fc31.noarch.rpm" + }, + "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/filesystem-3.12-2.fc31.x86_64.rpm" + }, + "sha256:cef060334e8c21b5d2e3a87bdd0ad5ac1be389d7794735506b9d3c65c2923cd3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iproute-5.3.0-1.fc31.x86_64.rpm" + }, + "sha256:cf6506ad88ecaab89efde02eee218365a36981114638c03989ba2768457ae335": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/net-tools-2.0-0.55.20160912git.fc31.x86_64.rpm" + }, + "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-3.fc31.x86_64.rpm" + }, + "sha256:cfeb5d0cb9c116e39292e3158c68ee62880cff4a5e3d098d20bf9567e5a576e1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpipeline-1.5.1-3.fc31.x86_64.rpm" + }, + "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxml2-2.9.9-3.fc31.x86_64.rpm" + }, + "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-0.20.1-2.fc31.x86_64.rpm" + }, + "sha256:d219a6c4a2410d6ef9bad2b337557779b969e278b657ffede83c021c20f665ca": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iproute-tc-5.3.0-1.fc31.x86_64.rpm" + }, + "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/geolite2-city-20190806-1.fc31.noarch.rpm" + }, + "sha256:d2c819a7e607a9e22f55047ed03d064e4b0f125ad4fb20532c543a6d8af8bfa5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/v/vim-minimal-8.1.2102-1.fc31.x86_64.rpm" + }, + "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm" + }, + "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-0.9.0-6.fc31.x86_64.rpm" + }, + "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.x86_64.rpm" + }, + "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/expat-2.2.8-1.fc31.x86_64.rpm" + }, + "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.x86_64.rpm" + }, + "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-plugins-core-4.0.9-1.fc31.noarch.rpm" + }, + "sha256:d54f02fc39b3e87253808f665918d26ffe901f1228e25121c908661b47ba266b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pysocks-1.7.0-2.fc31.noarch.rpm" + }, + "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pango-1.44.6-1.fc31.x86_64.rpm" + }, + "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libelf-0.177-1.fc31.x86_64.rpm" + }, + "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/selinux-policy-3.14.4-37.fc31.noarch.rpm" + }, + "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mpfr-3.1.6-5.fc31.x86_64.rpm" + }, + "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rootfiles-8.1-25.fc31.noarch.rpm" + }, + "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-1.02.163-2.fc31.x86_64.rpm" + }, + "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcursor-1.1.15-6.fc31.x86_64.rpm" + }, + "sha256:da923b379524f2d8d26905f26a9dc763cec36c40306c4c53db57100574ea89b8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libref_array-0.1.5-43.fc31.x86_64.rpm" + }, + "sha256:dae094845eb669c1e4c6b9719a730ab71561c8bc8e870d30c9ac9f6437fd2d50": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hwdata-0.328-1.fc31.noarch.rpm" + }, + "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.x86_64.rpm" + }, + "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.x86_64.rpm" + }, + "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpng-1.6.37-2.fc31.x86_64.rpm" + }, + "sha256:dc924dd33a9bd0b9483ebdbcf7caecbe1f48b8a135f1521291c8433fa76f4603": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jansson-2.12-4.fc31.x86_64.rpm" + }, + "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/diffutils-3.7-3.fc31.x86_64.rpm" + }, + "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.x86_64.rpm" + }, + "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sed-4.5-4.fc31.x86_64.rpm" + }, + "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm" + }, + "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-ng-0.7.9-8.fc31.x86_64.rpm" + }, + "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrender-0.9.10-10.fc31.x86_64.rpm" + }, + "sha256:e17ef6f7d4f1869ff5813d6f8f2983cd6f5cd23d4a666b7ae19154636e911644": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-babel-2.7.0-2.fc31.noarch.rpm" + }, + "sha256:e1bda9438577473413f3c7455ce84b6c8486adee3d4473fafcd28309ad8c2913": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-7.fc31.x86_64.rpm" + }, + "sha256:e405d2edc9b9fc2c13242f0225049b071aa4159d09d8e2d501e8c4fe88a9710b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-25.fc31.x86_64.rpm" + }, + "sha256:e4eb72f080bdb339a4748fa9a0749953628189da1c930294c68902bb8b9f8eeb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipset-7.3-1.fc31.x86_64.rpm" + }, + "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-common-31-1.noarch.rpm" + }, + "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-legacy-2.0.4-14.fc31.noarch.rpm" + }, + "sha256:e76b3b9d14a0016542f61d0ab2981fbf2d779e522d0c36d9095a1cffecbf9272": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/firewalld-filesystem-0.7.2-1.fc31.noarch.rpm" + }, + "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsoup-2.68.2-1.fc31.x86_64.rpm" + }, + "sha256:e91f7fcee1e3e72941c99eec3c3c3c9506cdaf83c01cf1eef257b91ccaff550c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-3.fc31.x86_64.rpm" + }, + "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/freetype-2.10.0-3.fc31.x86_64.rpm" + }, + "sha256:e98119ac7a707287668e7a9a74ef2809ee5f555af04f52775367e428e08dbb33": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jsonpatch-1.21-8.fc31.noarch.rpm" + }, + "sha256:e9fa9fba03403e709388390a91f4b253e57b8104035f05fabdf4d5c0dd173ce1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nftables-0.9.1-3.fc31.x86_64.rpm" + }, + "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-glib-1.4.4-3.fc31.x86_64.rpm" + }, + "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-4.4.10-1.fc31.x86_64.rpm" + }, + "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-broker-21-6.fc31.x86_64.rpm" + }, + "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-26-4.fc31.x86_64.rpm" + }, + "sha256:ec410ea4bb11c73e4fc66a32374adb598baf0b46b3732aee4e0f7256c7b028cd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/alsa-lib-1.1.9-2.fc31.x86_64.rpm" + }, + "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/which-2.21-15.fc31.x86_64.rpm" + }, + "sha256:ee6596a5010c2b4a038861828ecca240aa03c592dacd83c3a70d44cb8ee50408": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libaio-0.3.111-6.fc31.x86_64.rpm" + }, + "sha256:ee6dbb4914a35ee8a816ecde34d29221e3f4622324f6287c328e8ac22ae572ad": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-chardet-3.0.4-10.fc31.noarch.rpm" + }, + "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-049-27.git20181204.fc31.1.x86_64.rpm" + }, + "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-libs-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.x86_64.rpm" + }, + "sha256:efece5a4b070f197a1db3f7e1d030878b1ccdff6a8a0d24c596ecfae374ef194": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipset-libs-7.3-1.fc31.x86_64.rpm" + }, + "sha256:f0509e333636e5c34726c8a2b8260bf88fe0a35b95cae6dda62191fee1be4c6a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-core-5.3.7-301.fc31.x86_64.rpm" + }, + "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm" + }, + "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcom_err-1.45.3-1.fc31.x86_64.rpm" + }, + "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-common-8.31-4.fc31.x86_64.rpm" + }, + "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm" + }, + "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pigz-2.4-5.fc31.x86_64.rpm" + }, + "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dconf-0.34.0-1.fc31.x86_64.rpm" + }, + "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/util-linux-2.34-3.fc31.x86_64.rpm" + }, + "sha256:f50957375c79be57f391625b97d6ea74505e05f2edc6b9bc6768d5e3ad6ef8f8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.x86_64.rpm" + }, + "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.x86_64.rpm" + }, + "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-2.02-100.fc31.x86_64.rpm" + }, + "sha256:f61555e6e74917be3f131bd5af9d9e30ed709111701e950b7ebd4392baf33f12": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnfsidmap-2.4.1-1.rc1.fc31.x86_64.rpm" + }, + "sha256:f67d5cc67029c6c38185f94b72aaa9034a49f5c4f166066c8268b41e1b18a202": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.30-5.fc31.x86_64.rpm" + }, + "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm" + }, + "sha256:f85469c0c19ce86e8fdd0dd5a3e6e5c9b78e3436ae9ce70ba86b2b4a3794f693": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-oauthlib-3.0.2-2.fc31.noarch.rpm" + }, + "sha256:f8d885f57b3c7b30b6f18f68fed7fd3f19300c22abc5d5ee5029998e96c6b115": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-16.fc31.x86_64.rpm" + }, + "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXau-1.0.9-2.fc31.x86_64.rpm" + }, + "sha256:fa979526906cc9182ebdb6e50c9d09deba8518f69750495fec4267a425c8f783": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyrsistent-0.15.4-1.fc31.x86_64.rpm" + }, + "sha256:fb2ff56d3a273eac8775bac03b12f1cf8affa0b92585912de0abf3bc1ccdfa44": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-5.3.7-301.fc31.x86_64.rpm" + }, + "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.x86_64.rpm" + }, + "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.x86_64.rpm" + }, + "sha256:fccade859cbb884fd61c07433e6c316f794885cbb2186debcff3f6894d16d52c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtdb-1.4.2-1.fc31.x86_64.rpm" + }, + "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsemanage-2.9-3.fc31.x86_64.rpm" + }, + "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/geolite2-country-20190806-1.fc31.noarch.rpm" + }, + "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.x86_64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "checksum": "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d", + "check_gpg": true + }, + { + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "checksum": "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081", + "check_gpg": true + }, + { + "checksum": "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355", + "check_gpg": true + }, + { + "checksum": "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1", + "check_gpg": true + }, + { + "checksum": "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5", + "check_gpg": true + }, + { + "checksum": "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09", + "check_gpg": true + }, + { + "checksum": "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02", + "check_gpg": true + }, + { + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "checksum": "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3", + "check_gpg": true + }, + { + "checksum": "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1", + "check_gpg": true + }, + { + "checksum": "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7", + "check_gpg": true + }, + { + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "checksum": "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a", + "check_gpg": true + }, + { + "checksum": "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3", + "check_gpg": true + }, + { + "checksum": "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736", + "check_gpg": true + }, + { + "checksum": "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc", + "check_gpg": true + }, + { + "checksum": "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc", + "check_gpg": true + }, + { + "checksum": "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38", + "check_gpg": true + }, + { + "checksum": "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4", + "check_gpg": true + }, + { + "checksum": "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c", + "check_gpg": true + }, + { + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "checksum": "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8", + "check_gpg": true + }, + { + "checksum": "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4", + "check_gpg": true + }, + { + "checksum": "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49", + "check_gpg": true + }, + { + "checksum": "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1", + "check_gpg": true + }, + { + "checksum": "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee", + "check_gpg": true + }, + { + "checksum": "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8", + "check_gpg": true + }, + { + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "checksum": "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71", + "check_gpg": true + }, + { + "checksum": "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27", + "check_gpg": true + }, + { + "checksum": "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7", + "check_gpg": true + }, + { + "checksum": "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f", + "check_gpg": true + }, + { + "checksum": "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732", + "check_gpg": true + }, + { + "checksum": "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7", + "check_gpg": true + }, + { + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "checksum": "sha256:b110ee65fa2dee77585ec77cab592cba2434d579f8afbed4d2a908ad1addccfc", + "check_gpg": true + }, + { + "checksum": "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159", + "check_gpg": true + }, + { + "checksum": "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7", + "check_gpg": true + }, + { + "checksum": "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89", + "check_gpg": true + }, + { + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "checksum": "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228", + "check_gpg": true + }, + { + "checksum": "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407", + "check_gpg": true + }, + { + "checksum": "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f", + "check_gpg": true + }, + { + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "checksum": "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c", + "check_gpg": true + }, + { + "checksum": "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c", + "check_gpg": true + }, + { + "checksum": "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff", + "check_gpg": true + }, + { + "checksum": "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067", + "check_gpg": true + }, + { + "checksum": "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a", + "check_gpg": true + }, + { + "checksum": "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2", + "check_gpg": true + }, + { + "checksum": "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54", + "check_gpg": true + }, + { + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "checksum": "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee", + "check_gpg": true + }, + { + "checksum": "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891", + "check_gpg": true + }, + { + "checksum": "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d", + "check_gpg": true + }, + { + "checksum": "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203", + "check_gpg": true + }, + { + "checksum": "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd", + "check_gpg": true + }, + { + "checksum": "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc", + "check_gpg": true + }, + { + "checksum": "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84", + "check_gpg": true + }, + { + "checksum": "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb", + "check_gpg": true + }, + { + "checksum": "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c", + "check_gpg": true + }, + { + "checksum": "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926", + "check_gpg": true + }, + { + "checksum": "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3", + "check_gpg": true + }, + { + "checksum": "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a", + "check_gpg": true + }, + { + "checksum": "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79", + "check_gpg": true + }, + { + "checksum": "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13", + "check_gpg": true + }, + { + "checksum": "sha256:f67d5cc67029c6c38185f94b72aaa9034a49f5c4f166066c8268b41e1b18a202", + "check_gpg": true + }, + { + "checksum": "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb", + "check_gpg": true + }, + { + "checksum": "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a", + "check_gpg": true + }, + { + "checksum": "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e", + "check_gpg": true + }, + { + "checksum": "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5", + "check_gpg": true + }, + { + "checksum": "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5", + "check_gpg": true + }, + { + "checksum": "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458", + "check_gpg": true + }, + { + "checksum": "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d", + "check_gpg": true + }, + { + "checksum": "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16", + "check_gpg": true + }, + { + "checksum": "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada", + "check_gpg": true + }, + { + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "checksum": "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc", + "check_gpg": true + }, + { + "checksum": "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1", + "check_gpg": true + }, + { + "checksum": "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8", + "check_gpg": true + }, + { + "checksum": "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214", + "check_gpg": true + }, + { + "checksum": "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031", + "check_gpg": true + }, + { + "checksum": "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8", + "check_gpg": true + }, + { + "checksum": "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d", + "check_gpg": true + }, + { + "checksum": "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150", + "check_gpg": true + }, + { + "checksum": "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01", + "check_gpg": true + }, + { + "checksum": "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994", + "check_gpg": true + }, + { + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "checksum": "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6", + "check_gpg": true + }, + { + "checksum": "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4", + "check_gpg": true + }, + { + "checksum": "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00", + "check_gpg": true + }, + { + "checksum": "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5", + "check_gpg": true + }, + { + "checksum": "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422", + "check_gpg": true + }, + { + "checksum": "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad", + "check_gpg": true + }, + { + "checksum": "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c", + "check_gpg": true + }, + { + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "checksum": "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1", + "check_gpg": true + }, + { + "checksum": "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b", + "check_gpg": true + }, + { + "checksum": "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1", + "check_gpg": true + }, + { + "checksum": "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00", + "check_gpg": true + }, + { + "checksum": "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466", + "check_gpg": true + }, + { + "checksum": "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b", + "check_gpg": true + }, + { + "checksum": "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679", + "check_gpg": true + }, + { + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "checksum": "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834", + "check_gpg": true + }, + { + "checksum": "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c", + "check_gpg": true + }, + { + "checksum": "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59", + "check_gpg": true + }, + { + "checksum": "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a", + "check_gpg": true + }, + { + "checksum": "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077", + "check_gpg": true + }, + { + "checksum": "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c", + "check_gpg": true + }, + { + "checksum": "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc", + "check_gpg": true + }, + { + "checksum": "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141", + "check_gpg": true + }, + { + "checksum": "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1", + "check_gpg": true + }, + { + "checksum": "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1", + "check_gpg": true + }, + { + "checksum": "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7", + "check_gpg": true + }, + { + "checksum": "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295", + "check_gpg": true + }, + { + "checksum": "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc", + "check_gpg": true + }, + { + "checksum": "sha256:ee6596a5010c2b4a038861828ecca240aa03c592dacd83c3a70d44cb8ee50408", + "check_gpg": true + }, + { + "checksum": "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18", + "check_gpg": true + }, + { + "checksum": "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de", + "check_gpg": true + }, + { + "checksum": "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8", + "check_gpg": true + }, + { + "checksum": "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be", + "check_gpg": true + }, + { + "checksum": "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2", + "check_gpg": true + }, + { + "checksum": "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090", + "check_gpg": true + }, + { + "checksum": "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d", + "check_gpg": true + }, + { + "checksum": "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c", + "check_gpg": true + }, + { + "checksum": "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7", + "check_gpg": true + }, + { + "checksum": "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382", + "check_gpg": true + }, + { + "checksum": "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241", + "check_gpg": true + }, + { + "checksum": "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167", + "check_gpg": true + }, + { + "checksum": "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc", + "check_gpg": true + }, + { + "checksum": "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627", + "check_gpg": true + }, + { + "checksum": "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874", + "check_gpg": true + }, + { + "checksum": "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801", + "check_gpg": true + }, + { + "checksum": "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31", + "check_gpg": true + }, + { + "checksum": "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7", + "check_gpg": true + }, + { + "checksum": "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba", + "check_gpg": true + }, + { + "checksum": "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0", + "check_gpg": true + }, + { + "checksum": "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1", + "check_gpg": true + }, + { + "checksum": "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f", + "check_gpg": true + }, + { + "checksum": "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c", + "check_gpg": true + }, + { + "checksum": "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd", + "check_gpg": true + }, + { + "checksum": "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab", + "check_gpg": true + }, + { + "checksum": "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc", + "check_gpg": true + }, + { + "checksum": "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345", + "check_gpg": true + }, + { + "checksum": "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde", + "check_gpg": true + }, + { + "checksum": "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37", + "check_gpg": true + }, + { + "checksum": "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f", + "check_gpg": true + }, + { + "checksum": "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43", + "check_gpg": true + }, + { + "checksum": "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664", + "check_gpg": true + }, + { + "checksum": "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57", + "check_gpg": true + }, + { + "checksum": "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d", + "check_gpg": true + }, + { + "checksum": "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf", + "check_gpg": true + }, + { + "checksum": "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a", + "check_gpg": true + }, + { + "checksum": "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc", + "check_gpg": true + }, + { + "checksum": "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf", + "check_gpg": true + }, + { + "checksum": "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc", + "check_gpg": true + }, + { + "checksum": "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730", + "check_gpg": true + }, + { + "checksum": "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0", + "check_gpg": true + }, + { + "checksum": "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3", + "check_gpg": true + }, + { + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "checksum": "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a", + "check_gpg": true + }, + { + "checksum": "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7", + "check_gpg": true + }, + { + "checksum": "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e", + "check_gpg": true + }, + { + "checksum": "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045", + "check_gpg": true + }, + { + "checksum": "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32", + "check_gpg": true + }, + { + "checksum": "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f", + "check_gpg": true + }, + { + "checksum": "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4", + "check_gpg": true + }, + { + "checksum": "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238", + "check_gpg": true + }, + { + "checksum": "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388", + "check_gpg": true + }, + { + "checksum": "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42", + "check_gpg": true + }, + { + "checksum": "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc", + "check_gpg": true + }, + { + "checksum": "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833", + "check_gpg": true + }, + { + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "checksum": "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f", + "check_gpg": true + }, + { + "checksum": "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb", + "check_gpg": true + }, + { + "checksum": "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c", + "check_gpg": true + }, + { + "checksum": "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500", + "check_gpg": true + }, + { + "checksum": "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71", + "check_gpg": true + }, + { + "checksum": "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7", + "check_gpg": true + }, + { + "checksum": "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42", + "check_gpg": true + }, + { + "checksum": "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8", + "check_gpg": true + }, + { + "checksum": "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5", + "check_gpg": true + }, + { + "checksum": "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af", + "check_gpg": true + }, + { + "checksum": "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348", + "check_gpg": true + }, + { + "checksum": "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff", + "check_gpg": true + }, + { + "checksum": "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce", + "check_gpg": true + }, + { + "checksum": "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9", + "check_gpg": true + }, + { + "checksum": "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5", + "check_gpg": true + }, + { + "checksum": "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c", + "check_gpg": true + }, + { + "checksum": "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca", + "check_gpg": true + }, + { + "checksum": "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da", + "check_gpg": true + }, + { + "checksum": "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6", + "check_gpg": true + }, + { + "checksum": "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34", + "check_gpg": true + }, + { + "checksum": "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c", + "check_gpg": true + }, + { + "checksum": "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a", + "check_gpg": true + }, + { + "checksum": "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39", + "check_gpg": true + }, + { + "checksum": "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83", + "check_gpg": true + }, + { + "checksum": "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2", + "check_gpg": true + }, + { + "checksum": "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519", + "check_gpg": true + }, + { + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "checksum": "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106", + "check_gpg": true + }, + { + "checksum": "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc", + "check_gpg": true + }, + { + "checksum": "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2", + "check_gpg": true + }, + { + "checksum": "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38", + "check_gpg": true + }, + { + "checksum": "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b", + "check_gpg": true + }, + { + "checksum": "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68", + "check_gpg": true + }, + { + "checksum": "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3", + "check_gpg": true + }, + { + "checksum": "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2", + "check_gpg": true + }, + { + "checksum": "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0", + "check_gpg": true + }, + { + "checksum": "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234", + "check_gpg": true + }, + { + "checksum": "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313", + "check_gpg": true + }, + { + "checksum": "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0", + "check_gpg": true + }, + { + "checksum": "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b", + "check_gpg": true + }, + { + "checksum": "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c", + "check_gpg": true + }, + { + "checksum": "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651", + "check_gpg": true + }, + { + "checksum": "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7", + "check_gpg": true + }, + { + "checksum": "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8", + "check_gpg": true + }, + { + "checksum": "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976", + "check_gpg": true + }, + { + "checksum": "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba", + "check_gpg": true + }, + { + "checksum": "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c", + "check_gpg": true + }, + { + "checksum": "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632", + "check_gpg": true + }, + { + "checksum": "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e", + "check_gpg": true + }, + { + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "checksum": "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9", + "check_gpg": true + }, + { + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "checksum": "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a", + "check_gpg": true + }, + { + "checksum": "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552", + "check_gpg": true + }, + { + "checksum": "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3", + "check_gpg": true + }, + { + "checksum": "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5", + "check_gpg": true + }, + { + "checksum": "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1", + "check_gpg": true + }, + { + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "checksum": "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444", + "check_gpg": true + }, + { + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "checksum": "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7", + "check_gpg": true + }, + { + "checksum": "sha256:669250ad47aad5939cf4d1b88036fd95a94845d8e0bbdb05e933f3d2fe262fea", + "check_gpg": true + }, + { + "checksum": "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d", + "check_gpg": true + }, + { + "checksum": "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc", + "check_gpg": true + }, + { + "checksum": "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e", + "check_gpg": true + }, + { + "checksum": "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2", + "check_gpg": true + }, + { + "checksum": "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac", + "check_gpg": true + }, + { + "checksum": "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03", + "check_gpg": true + }, + { + "checksum": "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576", + "check_gpg": true + }, + { + "checksum": "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb", + "check_gpg": true + }, + { + "checksum": "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165", + "check_gpg": true + }, + { + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "checksum": "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3", + "check_gpg": true + }, + { + "checksum": "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071", + "check_gpg": true + }, + { + "checksum": "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2", + "check_gpg": true + }, + { + "checksum": "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5", + "check_gpg": true + }, + { + "checksum": "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454", + "check_gpg": true + }, + { + "checksum": "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612", + "check_gpg": true + }, + { + "checksum": "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1", + "check_gpg": true + }, + { + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "checksum": "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c", + "check_gpg": true + }, + { + "checksum": "sha256:9975496f29601a1c2cdb89e63aac698fdd8283ba3a52a9d91ead9473a0e064c8", + "check_gpg": true + }, + { + "checksum": "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18", + "check_gpg": true + }, + { + "checksum": "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df", + "check_gpg": true + }, + { + "checksum": "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f", + "check_gpg": true + }, + { + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "checksum": "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7", + "check_gpg": true + }, + { + "checksum": "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f", + "check_gpg": true + }, + { + "checksum": "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa", + "check_gpg": true + }, + { + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "checksum": "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05", + "check_gpg": true + }, + { + "checksum": "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431", + "check_gpg": true + }, + { + "checksum": "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c", + "check_gpg": true + }, + { + "checksum": "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9", + "check_gpg": true + } + ] + } + } + ] + }, + "runner": "org.osbuild.fedora31" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:6d8cbba688cea65fa80983cd7f140633e94cd58daa819342d1ae571a4ff174c6", + "check_gpg": true + }, + { + "checksum": "sha256:2c5b5ce5f6e6d1d79f35eab253a12e19aeb863f4fe8ded94013f76a9834689fb", + "check_gpg": true + }, + { + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "checksum": "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d", + "check_gpg": true + }, + { + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "checksum": "sha256:ec410ea4bb11c73e4fc66a32374adb598baf0b46b3732aee4e0f7256c7b028cd", + "check_gpg": true + }, + { + "checksum": "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081", + "check_gpg": true + }, + { + "checksum": "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355", + "check_gpg": true + }, + { + "checksum": "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1", + "check_gpg": true + }, + { + "checksum": "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5", + "check_gpg": true + }, + { + "checksum": "sha256:cc02df4125eaebf642edd9bf00031ec09871c285816c03112909ef1005410eaa", + "check_gpg": true + }, + { + "checksum": "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09", + "check_gpg": true + }, + { + "checksum": "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02", + "check_gpg": true + }, + { + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "checksum": "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3", + "check_gpg": true + }, + { + "checksum": "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1", + "check_gpg": true + }, + { + "checksum": "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7", + "check_gpg": true + }, + { + "checksum": "sha256:239a9576864532edd325e72b62a10ef147a2bcc0a925079b19fb9cb74bab0dd7", + "check_gpg": true + }, + { + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "checksum": "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a", + "check_gpg": true + }, + { + "checksum": "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3", + "check_gpg": true + }, + { + "checksum": "sha256:3629a3675c7dadd89f3b3d855e7c57d8f93d30d59fa00fdeabfc5e5e39ca4937", + "check_gpg": true + }, + { + "checksum": "sha256:07a3523159719382e2bb9b83961bfe00836cc97f75a9706d02ad73dddb161856", + "check_gpg": true + }, + { + "checksum": "sha256:9cc3e6534ae34343e7e4d056d46b9551da7d0a82c7bad378c3626d4b70d1bf62", + "check_gpg": true + }, + { + "checksum": "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736", + "check_gpg": true + }, + { + "checksum": "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc", + "check_gpg": true + }, + { + "checksum": "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc", + "check_gpg": true + }, + { + "checksum": "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38", + "check_gpg": true + }, + { + "checksum": "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4", + "check_gpg": true + }, + { + "checksum": "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c", + "check_gpg": true + }, + { + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "checksum": "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8", + "check_gpg": true + }, + { + "checksum": "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4", + "check_gpg": true + }, + { + "checksum": "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49", + "check_gpg": true + }, + { + "checksum": "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1", + "check_gpg": true + }, + { + "checksum": "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee", + "check_gpg": true + }, + { + "checksum": "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8", + "check_gpg": true + }, + { + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "checksum": "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71", + "check_gpg": true + }, + { + "checksum": "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27", + "check_gpg": true + }, + { + "checksum": "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc", + "check_gpg": true + }, + { + "checksum": "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a", + "check_gpg": true + }, + { + "checksum": "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7", + "check_gpg": true + }, + { + "checksum": "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f", + "check_gpg": true + }, + { + "checksum": "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732", + "check_gpg": true + }, + { + "checksum": "sha256:33334afdde6c813b18c18897dca19fab5a2ce090eba0b5ea0a38f43f1081c190", + "check_gpg": true + }, + { + "checksum": "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d", + "check_gpg": true + }, + { + "checksum": "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7", + "check_gpg": true + }, + { + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "checksum": "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063", + "check_gpg": true + }, + { + "checksum": "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159", + "check_gpg": true + }, + { + "checksum": "sha256:34a9986b8b61812ceaf32ce3b189bd0b2cb4adaaf47d76ec1f50ce07c45b5675", + "check_gpg": true + }, + { + "checksum": "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7", + "check_gpg": true + }, + { + "checksum": "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89", + "check_gpg": true + }, + { + "checksum": "sha256:cab1b0c3bdae2a07e15b90b414f50753c759e325b6f0cddfa27895748c77f082", + "check_gpg": true + }, + { + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "checksum": "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228", + "check_gpg": true + }, + { + "checksum": "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407", + "check_gpg": true + }, + { + "checksum": "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f", + "check_gpg": true + }, + { + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "checksum": "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c", + "check_gpg": true + }, + { + "checksum": "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c", + "check_gpg": true + }, + { + "checksum": "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff", + "check_gpg": true + }, + { + "checksum": "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067", + "check_gpg": true + }, + { + "checksum": "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a", + "check_gpg": true + }, + { + "checksum": "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2", + "check_gpg": true + }, + { + "checksum": "sha256:ab35a2d7f21aac1f33f9521607789e1c303fb63e4ea0681e9f724f86a1cc15c5", + "check_gpg": true + }, + { + "checksum": "sha256:e76b3b9d14a0016542f61d0ab2981fbf2d779e522d0c36d9095a1cffecbf9272", + "check_gpg": true + }, + { + "checksum": "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54", + "check_gpg": true + }, + { + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "checksum": "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee", + "check_gpg": true + }, + { + "checksum": "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891", + "check_gpg": true + }, + { + "checksum": "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d", + "check_gpg": true + }, + { + "checksum": "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203", + "check_gpg": true + }, + { + "checksum": "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd", + "check_gpg": true + }, + { + "checksum": "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc", + "check_gpg": true + }, + { + "checksum": "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84", + "check_gpg": true + }, + { + "checksum": "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb", + "check_gpg": true + }, + { + "checksum": "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c", + "check_gpg": true + }, + { + "checksum": "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565", + "check_gpg": true + }, + { + "checksum": "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b", + "check_gpg": true + }, + { + "checksum": "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926", + "check_gpg": true + }, + { + "checksum": "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3", + "check_gpg": true + }, + { + "checksum": "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a", + "check_gpg": true + }, + { + "checksum": "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79", + "check_gpg": true + }, + { + "checksum": "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13", + "check_gpg": true + }, + { + "checksum": "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb", + "check_gpg": true + }, + { + "checksum": "sha256:6f2dae9b49bed8e1036a21aadd92ea2eb371979f6714ec2bce5742de051eeb14", + "check_gpg": true + }, + { + "checksum": "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a", + "check_gpg": true + }, + { + "checksum": "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e", + "check_gpg": true + }, + { + "checksum": "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5", + "check_gpg": true + }, + { + "checksum": "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5", + "check_gpg": true + }, + { + "checksum": "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458", + "check_gpg": true + }, + { + "checksum": "sha256:ab5ad6fc076fd82be6a2ca9d77998fc06c2c9e7296de960b7549239efb9f971d", + "check_gpg": true + }, + { + "checksum": "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d", + "check_gpg": true + }, + { + "checksum": "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16", + "check_gpg": true + }, + { + "checksum": "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada", + "check_gpg": true + }, + { + "checksum": "sha256:21ccdbe703caa6a08056d2bc75c1e184f811472a6e320e5af64b8757fcd07166", + "check_gpg": true + }, + { + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "checksum": "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc", + "check_gpg": true + }, + { + "checksum": "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1", + "check_gpg": true + }, + { + "checksum": "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8", + "check_gpg": true + }, + { + "checksum": "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214", + "check_gpg": true + }, + { + "checksum": "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031", + "check_gpg": true + }, + { + "checksum": "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8", + "check_gpg": true + }, + { + "checksum": "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d", + "check_gpg": true + }, + { + "checksum": "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150", + "check_gpg": true + }, + { + "checksum": "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01", + "check_gpg": true + }, + { + "checksum": "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994", + "check_gpg": true + }, + { + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "checksum": "sha256:a188b5c697b734d4ed7d8f954b6875b9d401dc2a3c10bfd20d03db131ca73ab5", + "check_gpg": true + }, + { + "checksum": "sha256:dae094845eb669c1e4c6b9719a730ab71561c8bc8e870d30c9ac9f6437fd2d50", + "check_gpg": true + }, + { + "checksum": "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6", + "check_gpg": true + }, + { + "checksum": "sha256:2af3bbdab1f387ae7af2534846e33ab6d2ca7777399c64191f95699d576cd4ba", + "check_gpg": true + }, + { + "checksum": "sha256:c8e0a36410ebbd9db0a10e1fbecbae8f6288b9be86752d2e91725d5dd98ec65d", + "check_gpg": true + }, + { + "checksum": "sha256:cef060334e8c21b5d2e3a87bdd0ad5ac1be389d7794735506b9d3c65c2923cd3", + "check_gpg": true + }, + { + "checksum": "sha256:d219a6c4a2410d6ef9bad2b337557779b969e278b657ffede83c021c20f665ca", + "check_gpg": true + }, + { + "checksum": "sha256:e4eb72f080bdb339a4748fa9a0749953628189da1c930294c68902bb8b9f8eeb", + "check_gpg": true + }, + { + "checksum": "sha256:efece5a4b070f197a1db3f7e1d030878b1ccdff6a8a0d24c596ecfae374ef194", + "check_gpg": true + }, + { + "checksum": "sha256:8e9a916cd4843e7d09e3d1b814dbb55bb3b45672b1058044cfeaf8e19ad27bd7", + "check_gpg": true + }, + { + "checksum": "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4", + "check_gpg": true + }, + { + "checksum": "sha256:72b5df6982fecdbee30d40bbb6042c72ed0f31b787f289b4a27f0dffc6f609fe", + "check_gpg": true + }, + { + "checksum": "sha256:dc924dd33a9bd0b9483ebdbcf7caecbe1f48b8a135f1521291c8433fa76f4603", + "check_gpg": true + }, + { + "checksum": "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00", + "check_gpg": true + }, + { + "checksum": "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5", + "check_gpg": true + }, + { + "checksum": "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422", + "check_gpg": true + }, + { + "checksum": "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad", + "check_gpg": true + }, + { + "checksum": "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c", + "check_gpg": true + }, + { + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "checksum": "sha256:fb2ff56d3a273eac8775bac03b12f1cf8affa0b92585912de0abf3bc1ccdfa44", + "check_gpg": true + }, + { + "checksum": "sha256:f0509e333636e5c34726c8a2b8260bf88fe0a35b95cae6dda62191fee1be4c6a", + "check_gpg": true + }, + { + "checksum": "sha256:1e5f14d26556e380ed129289c1b98d46d951966e548613b9c2ee0d3616ac96d1", + "check_gpg": true + }, + { + "checksum": "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1", + "check_gpg": true + }, + { + "checksum": "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b", + "check_gpg": true + }, + { + "checksum": "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1", + "check_gpg": true + }, + { + "checksum": "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00", + "check_gpg": true + }, + { + "checksum": "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466", + "check_gpg": true + }, + { + "checksum": "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552", + "check_gpg": true + }, + { + "checksum": "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b", + "check_gpg": true + }, + { + "checksum": "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b", + "check_gpg": true + }, + { + "checksum": "sha256:22db6d1e1f34a43c3d045b6750ff3a32184d47c2aedf3dabc93640057de1f4fa", + "check_gpg": true + }, + { + "checksum": "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679", + "check_gpg": true + }, + { + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "checksum": "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834", + "check_gpg": true + }, + { + "checksum": "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c", + "check_gpg": true + }, + { + "checksum": "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59", + "check_gpg": true + }, + { + "checksum": "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a", + "check_gpg": true + }, + { + "checksum": "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077", + "check_gpg": true + }, + { + "checksum": "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c", + "check_gpg": true + }, + { + "checksum": "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc", + "check_gpg": true + }, + { + "checksum": "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141", + "check_gpg": true + }, + { + "checksum": "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1", + "check_gpg": true + }, + { + "checksum": "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1", + "check_gpg": true + }, + { + "checksum": "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7", + "check_gpg": true + }, + { + "checksum": "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295", + "check_gpg": true + }, + { + "checksum": "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc", + "check_gpg": true + }, + { + "checksum": "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18", + "check_gpg": true + }, + { + "checksum": "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de", + "check_gpg": true + }, + { + "checksum": "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8", + "check_gpg": true + }, + { + "checksum": "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be", + "check_gpg": true + }, + { + "checksum": "sha256:469d12368377399b8eaa7ec8cf1b6378ab18476b4a2b61b79091510a8945c6aa", + "check_gpg": true + }, + { + "checksum": "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2", + "check_gpg": true + }, + { + "checksum": "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090", + "check_gpg": true + }, + { + "checksum": "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d", + "check_gpg": true + }, + { + "checksum": "sha256:0f26eca4ac936554818769fe32aca5e878af2616e83f836ec463e59eb4f9f1f9", + "check_gpg": true + }, + { + "checksum": "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c", + "check_gpg": true + }, + { + "checksum": "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7", + "check_gpg": true + }, + { + "checksum": "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382", + "check_gpg": true + }, + { + "checksum": "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241", + "check_gpg": true + }, + { + "checksum": "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167", + "check_gpg": true + }, + { + "checksum": "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc", + "check_gpg": true + }, + { + "checksum": "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627", + "check_gpg": true + }, + { + "checksum": "sha256:0b54f374bcbe094dbc0d52d9661fe99ebff384026ce0ea39f2d6069e27bf8bdc", + "check_gpg": true + }, + { + "checksum": "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874", + "check_gpg": true + }, + { + "checksum": "sha256:5bab4beb581893f90fbb7d46d47c74932cd788c1535f92ee98f81deac6d3658c", + "check_gpg": true + }, + { + "checksum": "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801", + "check_gpg": true + }, + { + "checksum": "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31", + "check_gpg": true + }, + { + "checksum": "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7", + "check_gpg": true + }, + { + "checksum": "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba", + "check_gpg": true + }, + { + "checksum": "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0", + "check_gpg": true + }, + { + "checksum": "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1", + "check_gpg": true + }, + { + "checksum": "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f", + "check_gpg": true + }, + { + "checksum": "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c", + "check_gpg": true + }, + { + "checksum": "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd", + "check_gpg": true + }, + { + "checksum": "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab", + "check_gpg": true + }, + { + "checksum": "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc", + "check_gpg": true + }, + { + "checksum": "sha256:6f7fbd57db9334a3cc7983d2e920afe92abe3f7e168702612d70e9ff405d79e6", + "check_gpg": true + }, + { + "checksum": "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345", + "check_gpg": true + }, + { + "checksum": "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde", + "check_gpg": true + }, + { + "checksum": "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37", + "check_gpg": true + }, + { + "checksum": "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f", + "check_gpg": true + }, + { + "checksum": "sha256:8f7b737ccb294fd5ba1d19075ea2a50a54e0265d8efa28aae0ade59d3e3a63be", + "check_gpg": true + }, + { + "checksum": "sha256:430f2f71be063eb9d04fe38659f62e29f47c9c878f9985d0569cb49e9c89ebc0", + "check_gpg": true + }, + { + "checksum": "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43", + "check_gpg": true + }, + { + "checksum": "sha256:c976ce75eda3dbe734117f6f558eafb2061bbef66086a04cb907a7ddbaea8bc2", + "check_gpg": true + }, + { + "checksum": "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664", + "check_gpg": true + }, + { + "checksum": "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57", + "check_gpg": true + }, + { + "checksum": "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d", + "check_gpg": true + }, + { + "checksum": "sha256:45bf4bef479712936db1d6859b043d13e6cad41c851b6e621fc315b39ecfa14b", + "check_gpg": true + }, + { + "checksum": "sha256:e91f7fcee1e3e72941c99eec3c3c3c9506cdaf83c01cf1eef257b91ccaff550c", + "check_gpg": true + }, + { + "checksum": "sha256:f8d885f57b3c7b30b6f18f68fed7fd3f19300c22abc5d5ee5029998e96c6b115", + "check_gpg": true + }, + { + "checksum": "sha256:f61555e6e74917be3f131bd5af9d9e30ed709111701e950b7ebd4392baf33f12", + "check_gpg": true + }, + { + "checksum": "sha256:2cd5a709ff2c286b73f850469b1ee6baf9077b90ce3bacb8ba712430c6632350", + "check_gpg": true + }, + { + "checksum": "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf", + "check_gpg": true + }, + { + "checksum": "sha256:8bd2655674b40e89f5f63af7f8ffafd0e9064a3378cdca050262a7272678e8e5", + "check_gpg": true + }, + { + "checksum": "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a", + "check_gpg": true + }, + { + "checksum": "sha256:6f729da330aaaea336458a8b6f3f1d2cc761693ba20bdda57fb9c49fb6f2120d", + "check_gpg": true + }, + { + "checksum": "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc", + "check_gpg": true + }, + { + "checksum": "sha256:8c496ff256c18c8473f6d4ef87287828399f96ae19435e60c8179438aa0b59d0", + "check_gpg": true + }, + { + "checksum": "sha256:cfeb5d0cb9c116e39292e3158c68ee62880cff4a5e3d098d20bf9567e5a576e1", + "check_gpg": true + }, + { + "checksum": "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf", + "check_gpg": true + }, + { + "checksum": "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc", + "check_gpg": true + }, + { + "checksum": "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730", + "check_gpg": true + }, + { + "checksum": "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0", + "check_gpg": true + }, + { + "checksum": "sha256:da923b379524f2d8d26905f26a9dc763cec36c40306c4c53db57100574ea89b8", + "check_gpg": true + }, + { + "checksum": "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3", + "check_gpg": true + }, + { + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "checksum": "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a", + "check_gpg": true + }, + { + "checksum": "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7", + "check_gpg": true + }, + { + "checksum": "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e", + "check_gpg": true + }, + { + "checksum": "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045", + "check_gpg": true + }, + { + "checksum": "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32", + "check_gpg": true + }, + { + "checksum": "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f", + "check_gpg": true + }, + { + "checksum": "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4", + "check_gpg": true + }, + { + "checksum": "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238", + "check_gpg": true + }, + { + "checksum": "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388", + "check_gpg": true + }, + { + "checksum": "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42", + "check_gpg": true + }, + { + "checksum": "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc", + "check_gpg": true + }, + { + "checksum": "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833", + "check_gpg": true + }, + { + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "checksum": "sha256:422625da0fbb99cc4da8eebebff892c6e73a87c81a33190f7a17e344f6bb709e", + "check_gpg": true + }, + { + "checksum": "sha256:307275b46896d56d23f5da5ab77a299941e77165ff44e846d6620eee1158131c", + "check_gpg": true + }, + { + "checksum": "sha256:a1bd1b5a2c47e57957a77d32f4fd705de1df30557837cfbc83b8f284e4ee0456", + "check_gpg": true + }, + { + "checksum": "sha256:6c1f9dc11de4d3af4d4c418b4556ee9659011d587e9da44bb039cb30ac326841", + "check_gpg": true + }, + { + "checksum": "sha256:e1bda9438577473413f3c7455ce84b6c8486adee3d4473fafcd28309ad8c2913", + "check_gpg": true + }, + { + "checksum": "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f", + "check_gpg": true + }, + { + "checksum": "sha256:9247561bad35a8a2f8269b2bbbd28d1bf5e6fcde1fe78e1fc3c0e712513e9703", + "check_gpg": true + }, + { + "checksum": "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb", + "check_gpg": true + }, + { + "checksum": "sha256:fccade859cbb884fd61c07433e6c316f794885cbb2186debcff3f6894d16d52c", + "check_gpg": true + }, + { + "checksum": "sha256:5593277fa685adba864393da8faf76950d6d8fb1483af036cdc08d8437c387bb", + "check_gpg": true + }, + { + "checksum": "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c", + "check_gpg": true + }, + { + "checksum": "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500", + "check_gpg": true + }, + { + "checksum": "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71", + "check_gpg": true + }, + { + "checksum": "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7", + "check_gpg": true + }, + { + "checksum": "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42", + "check_gpg": true + }, + { + "checksum": "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8", + "check_gpg": true + }, + { + "checksum": "sha256:95b45de2c57f35df43bff0c2ebe32c64183968b3a41c5673cfeeff5ece506b94", + "check_gpg": true + }, + { + "checksum": "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5", + "check_gpg": true + }, + { + "checksum": "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af", + "check_gpg": true + }, + { + "checksum": "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348", + "check_gpg": true + }, + { + "checksum": "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff", + "check_gpg": true + }, + { + "checksum": "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce", + "check_gpg": true + }, + { + "checksum": "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9", + "check_gpg": true + }, + { + "checksum": "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5", + "check_gpg": true + }, + { + "checksum": "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c", + "check_gpg": true + }, + { + "checksum": "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca", + "check_gpg": true + }, + { + "checksum": "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da", + "check_gpg": true + }, + { + "checksum": "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6", + "check_gpg": true + }, + { + "checksum": "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34", + "check_gpg": true + }, + { + "checksum": "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c", + "check_gpg": true + }, + { + "checksum": "sha256:e405d2edc9b9fc2c13242f0225049b071aa4159d09d8e2d501e8c4fe88a9710b", + "check_gpg": true + }, + { + "checksum": "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47", + "check_gpg": true + }, + { + "checksum": "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70", + "check_gpg": true + }, + { + "checksum": "sha256:a41579023e1db3dec06679ebc7788ece92686ea2a23c78dd749c98ddbc82d419", + "check_gpg": true + }, + { + "checksum": "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a", + "check_gpg": true + }, + { + "checksum": "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39", + "check_gpg": true + }, + { + "checksum": "sha256:764699ea124f85a7afcf65a2f138e3821770f8aa1ef134e1813e2b04477f0b74", + "check_gpg": true + }, + { + "checksum": "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83", + "check_gpg": true + }, + { + "checksum": "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2", + "check_gpg": true + }, + { + "checksum": "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519", + "check_gpg": true + }, + { + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "checksum": "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106", + "check_gpg": true + }, + { + "checksum": "sha256:cf6506ad88ecaab89efde02eee218365a36981114638c03989ba2768457ae335", + "check_gpg": true + }, + { + "checksum": "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc", + "check_gpg": true + }, + { + "checksum": "sha256:e9fa9fba03403e709388390a91f4b253e57b8104035f05fabdf4d5c0dd173ce1", + "check_gpg": true + }, + { + "checksum": "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2", + "check_gpg": true + }, + { + "checksum": "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38", + "check_gpg": true + }, + { + "checksum": "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b", + "check_gpg": true + }, + { + "checksum": "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68", + "check_gpg": true + }, + { + "checksum": "sha256:c3aa4d794cef51ba9fcbf3750baed55aabfa36062a48f61149ccf03364a0d256", + "check_gpg": true + }, + { + "checksum": "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3", + "check_gpg": true + }, + { + "checksum": "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2", + "check_gpg": true + }, + { + "checksum": "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0", + "check_gpg": true + }, + { + "checksum": "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234", + "check_gpg": true + }, + { + "checksum": "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313", + "check_gpg": true + }, + { + "checksum": "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0", + "check_gpg": true + }, + { + "checksum": "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b", + "check_gpg": true + }, + { + "checksum": "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c", + "check_gpg": true + }, + { + "checksum": "sha256:55c47c63deb00a9126c068299c01dfbdd39d58c6962138b862b92f5c7af8c898", + "check_gpg": true + }, + { + "checksum": "sha256:c459092a47bd2f904d9fe830735b512ef97b52785ee12abb2ba5c52465560f18", + "check_gpg": true + }, + { + "checksum": "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651", + "check_gpg": true + }, + { + "checksum": "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7", + "check_gpg": true + }, + { + "checksum": "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8", + "check_gpg": true + }, + { + "checksum": "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976", + "check_gpg": true + }, + { + "checksum": "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba", + "check_gpg": true + }, + { + "checksum": "sha256:5e07e49fdacc1f52b583ee685d03bf5ce045e9d34a323bd26607148a3937a9ce", + "check_gpg": true + }, + { + "checksum": "sha256:561014bd90810d512b4098c8e1d3ca05aa8c6a74bc258b3b7e3e2fd36a1ed157", + "check_gpg": true + }, + { + "checksum": "sha256:bd72cac3d1ef93cff067070925e5f339c720bef82c5ade4477388636fef53b91", + "check_gpg": true + }, + { + "checksum": "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c", + "check_gpg": true + }, + { + "checksum": "sha256:118548479396b007a80bc98e8cef770ea242ef6b20cd2922d595acd4c100946d", + "check_gpg": true + }, + { + "checksum": "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632", + "check_gpg": true + }, + { + "checksum": "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e", + "check_gpg": true + }, + { + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "checksum": "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9", + "check_gpg": true + }, + { + "checksum": "sha256:73a7249de97f0ad66bc1a867ac5b5d08b741ab152d4dd7ce45cc231d64126b58", + "check_gpg": true + }, + { + "checksum": "sha256:4cca3f986ddbd38cfbfb6d1c8d336a1aaed78f7da1f38356ce1e034ba35ec492", + "check_gpg": true + }, + { + "checksum": "sha256:9fea00b14943cac0e3b11ff3a319765168cf78b3cc58fdee7d5fe48246a0aa4d", + "check_gpg": true + }, + { + "checksum": "sha256:e17ef6f7d4f1869ff5813d6f8f2983cd6f5cd23d4a666b7ae19154636e911644", + "check_gpg": true + }, + { + "checksum": "sha256:7fc8df6b10728f46c3e752c35f6777f17025bef30f61c67f76de2538888a5546", + "check_gpg": true + }, + { + "checksum": "sha256:ee6dbb4914a35ee8a816ecde34d29221e3f4622324f6287c328e8ac22ae572ad", + "check_gpg": true + }, + { + "checksum": "sha256:cdc526097cd2fecb75e44ad11a69b10eb7804f310298c064c3b931515d4f3d5c", + "check_gpg": true + }, + { + "checksum": "sha256:2e588b5133dc8cb26ff0226f66eb1be440c6b784ec6fa67a5f0516d8ccaf46f5", + "check_gpg": true + }, + { + "checksum": "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653", + "check_gpg": true + }, + { + "checksum": "sha256:35c348bcd91fa114ad459b888131e5e5509259cffce33f22c44f92e57e9e5919", + "check_gpg": true + }, + { + "checksum": "sha256:63ff108f557096a9724053c37e37d3c2af1a1ec0b33124480b3742ff3da46292", + "check_gpg": true + }, + { + "checksum": "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f", + "check_gpg": true + }, + { + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "checksum": "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02", + "check_gpg": true + }, + { + "checksum": "sha256:a349c40034b5a181cab1bd409384ddb901c274e110b16721d434f5bf42e92c0f", + "check_gpg": true + }, + { + "checksum": "sha256:6807ac3ae6b7c0ea3a085106cedb687f79edfda500feb747039dc112ed3c518f", + "check_gpg": true + }, + { + "checksum": "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a", + "check_gpg": true + }, + { + "checksum": "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552", + "check_gpg": true + }, + { + "checksum": "sha256:8221111dc9a9aa5c68805f153c3fbe5314c8a0f335af29685733b958253dd278", + "check_gpg": true + }, + { + "checksum": "sha256:1135e96b6f9ed29e4ed4c0f060876891a244442a503f0b18ab238589da20d464", + "check_gpg": true + }, + { + "checksum": "sha256:e98119ac7a707287668e7a9a74ef2809ee5f555af04f52775367e428e08dbb33", + "check_gpg": true + }, + { + "checksum": "sha256:2d9a2e736dd5231df3c5c748ce0ba5a75a409dacfe73f14676781f32d565a7df", + "check_gpg": true + }, + { + "checksum": "sha256:047f9e29fcfa56be98ca3f42249f3ccb2a93df99f2438e3983e2064025f0d79d", + "check_gpg": true + }, + { + "checksum": "sha256:143c50c0663f963c7689c1cec43b81cf1433d5d3b67eb8233ba06506c1b3e095", + "check_gpg": true + }, + { + "checksum": "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3", + "check_gpg": true + }, + { + "checksum": "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5", + "check_gpg": true + }, + { + "checksum": "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1", + "check_gpg": true + }, + { + "checksum": "sha256:ca6a71888b8d147342012c64533f61a41b26c788bbcd2844a2164ee007fac981", + "check_gpg": true + }, + { + "checksum": "sha256:a7071aa0068c9dff913c5f0523be3ffdd7f67b8f13e1ee2aa16e486b01aecc1c", + "check_gpg": true + }, + { + "checksum": "sha256:5d8d55e12443628c7a1915648845663e4aed1863805854de0adadd89772eda2a", + "check_gpg": true + }, + { + "checksum": "sha256:f85469c0c19ce86e8fdd0dd5a3e6e5c9b78e3436ae9ce70ba86b2b4a3794f693", + "check_gpg": true + }, + { + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "checksum": "sha256:1b65944efe48ba0cca34011891480a1db29a7e95dad058376bfca34d68fb0791", + "check_gpg": true + }, + { + "checksum": "sha256:5a7e957102a23c9924398fe45f5cdec66edcd10adcad7130d6ebf02c2706ad49", + "check_gpg": true + }, + { + "checksum": "sha256:682af90a049fa78429d5ebd194700609f762e59ceb6c4ca28b17e7f4fd1683aa", + "check_gpg": true + }, + { + "checksum": "sha256:6ed7f318c5e93b59254d7b7652131f33db713eeb61f52413f21e533069ed24bf", + "check_gpg": true + }, + { + "checksum": "sha256:fa979526906cc9182ebdb6e50c9d09deba8518f69750495fec4267a425c8f783", + "check_gpg": true + }, + { + "checksum": "sha256:32cc578c8da626a8c1a5316a59d482967a32547be6c077f73fb90e11fb0f1e6a", + "check_gpg": true + }, + { + "checksum": "sha256:d54f02fc39b3e87253808f665918d26ffe901f1228e25121c908661b47ba266b", + "check_gpg": true + }, + { + "checksum": "sha256:6c6f1152899318bdc0500cfb0b0cdbbc19ba0e017b5888ece1358250caa2629f", + "check_gpg": true + }, + { + "checksum": "sha256:a6bab7030d3296875cb0cad2c30fb18042dab8ae070c9c6f97457bb0a5cc6316", + "check_gpg": true + }, + { + "checksum": "sha256:1e049e86c5dd5c4d6737d47dd194d553ffbd65c81a4077cf6e1029a0fde80fb5", + "check_gpg": true + }, + { + "checksum": "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444", + "check_gpg": true + }, + { + "checksum": "sha256:aacf84989a0fe55366f6d37ddd1753b8c06e5640e9334805bf468777824a3ac0", + "check_gpg": true + }, + { + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "checksum": "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142", + "check_gpg": true + }, + { + "checksum": "sha256:b1094a9a9725546315d6eac7f792d5875a5f0c950cd84e43fc2fbb3e639ee43e", + "check_gpg": true + }, + { + "checksum": "sha256:bd2e7c9e3df976723ade08f16667b31044b678e62ee29e024ad193af6d9a28e1", + "check_gpg": true + }, + { + "checksum": "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7", + "check_gpg": true + }, + { + "checksum": "sha256:78b600621e00f4a0acc8f58de056ae9393ce4e1cded56837b4e557c1bc84b06b", + "check_gpg": true + }, + { + "checksum": "sha256:41edf2ba208309eb1cde80d5d227c4fdf43906ef47ed76aa37a51c344dfed3ee", + "check_gpg": true + }, + { + "checksum": "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d", + "check_gpg": true + }, + { + "checksum": "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc", + "check_gpg": true + }, + { + "checksum": "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e", + "check_gpg": true + }, + { + "checksum": "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663", + "check_gpg": true + }, + { + "checksum": "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2", + "check_gpg": true + }, + { + "checksum": "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac", + "check_gpg": true + }, + { + "checksum": "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03", + "check_gpg": true + }, + { + "checksum": "sha256:f50957375c79be57f391625b97d6ea74505e05f2edc6b9bc6768d5e3ad6ef8f8", + "check_gpg": true + }, + { + "checksum": "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576", + "check_gpg": true + }, + { + "checksum": "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb", + "check_gpg": true + }, + { + "checksum": "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165", + "check_gpg": true + }, + { + "checksum": "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108", + "check_gpg": true + }, + { + "checksum": "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a", + "check_gpg": true + }, + { + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "checksum": "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3", + "check_gpg": true + }, + { + "checksum": "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071", + "check_gpg": true + }, + { + "checksum": "sha256:38b735944048f8f2d2fcea5f36292b7ef25c849636d6c16b7fc1e956285f9d92", + "check_gpg": true + }, + { + "checksum": "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2", + "check_gpg": true + }, + { + "checksum": "sha256:687d00eb0b77446dbd78aaa0f4f99cc080c677930ad783120483614255264a3d", + "check_gpg": true + }, + { + "checksum": "sha256:6b694ee239a2e3f38c401e975de392e3731ad8b18be5a3249ea02f19e87cb5cb", + "check_gpg": true + }, + { + "checksum": "sha256:93161df6d62fe654c7cdba9ae36343d2549b437b27eac816a80f8d7c32a47162", + "check_gpg": true + }, + { + "checksum": "sha256:4f9bbd08f6019b3482342d616d6b04e6481924ea34fbfe8d30ef63402a92e9b1", + "check_gpg": true + }, + { + "checksum": "sha256:704ebfc50ace9417ed28f4530d778359a4c2f95d524c2e99346472245e30b548", + "check_gpg": true + }, + { + "checksum": "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5", + "check_gpg": true + }, + { + "checksum": "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454", + "check_gpg": true + }, + { + "checksum": "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612", + "check_gpg": true + }, + { + "checksum": "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1", + "check_gpg": true + }, + { + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "checksum": "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c", + "check_gpg": true + }, + { + "checksum": "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18", + "check_gpg": true + }, + { + "checksum": "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df", + "check_gpg": true + }, + { + "checksum": "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f", + "check_gpg": true + }, + { + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "checksum": "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7", + "check_gpg": true + }, + { + "checksum": "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f", + "check_gpg": true + }, + { + "checksum": "sha256:d2c819a7e607a9e22f55047ed03d064e4b0f125ad4fb20532c543a6d8af8bfa5", + "check_gpg": true + }, + { + "checksum": "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa", + "check_gpg": true + }, + { + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "checksum": "sha256:57d472b7ca59119fc581b50b2fe8a293f33bfe497ec65fe5e5dcedad8c1b7396", + "check_gpg": true + }, + { + "checksum": "sha256:485348573bd4666bedac7a15d4a0dd0cac241ac18f8f62871dae176b44a5114d", + "check_gpg": true + }, + { + "checksum": "sha256:b3c4cfdf820225133f4e9e600de3300ef0c7bac34139433505dd4482da52be22", + "check_gpg": true + }, + { + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "checksum": "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05", + "check_gpg": true + }, + { + "checksum": "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431", + "check_gpg": true + }, + { + "checksum": "sha256:3597ed358e421f7dc161d2f263e7e36c61aa1b4c9e547ed94ab5db2bd35f42de", + "check_gpg": true + }, + { + "checksum": "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488", + "check_gpg": true + }, + { + "checksum": "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c", + "check_gpg": true + }, + { + "checksum": "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "redhat": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "vfs_type": "ext4", + "path": "/", + "options": "defaults", + "freq": 1, + "passno": 1 + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "kernel_opts": "ro biosdevname=0 net.ifnames=0", + "legacy": "i386-pc" + } + }, + { + "name": "org.osbuild.systemd", + "options": { + "enabled_services": [ + "cloud-init.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service" + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "qcow2", + "filename": "disk.qcow2", + "size": 2147483648, + "ptuuid": "0x14fc63d2", + "pttype": "mbr", + "partitions": [ + { + "start": 2048, + "bootable": true, + "filesystem": { + "type": "ext4", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.111", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm", + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/acl-2.2.53-4.fc31.x86_64.rpm", + "checksum": "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d", + "check_gpg": true + }, + { + "name": "adobe-source-code-pro-fonts", + "epoch": 0, + "version": "2.030.1.050", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm", + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "name": "adwaita-cursor-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "name": "adwaita-icon-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/alternatives-1.11-5.fc31.x86_64.rpm", + "checksum": "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081", + "check_gpg": true + }, + { + "name": "at-spi2-atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.x86_64.rpm", + "checksum": "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355", + "check_gpg": true + }, + { + "name": "at-spi2-core", + "epoch": 0, + "version": "2.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1", + "check_gpg": true + }, + { + "name": "atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/atk-2.34.1-1.fc31.x86_64.rpm", + "checksum": "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm", + "checksum": "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09", + "check_gpg": true + }, + { + "name": "avahi-libs", + "epoch": 0, + "version": "0.7", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/avahi-libs-0.7-20.fc31.x86_64.rpm", + "checksum": "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "8.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm", + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bash-5.0.7-3.fc31.x86_64.rpm", + "checksum": "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3", + "check_gpg": true + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.7", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/brotli-1.0.7-6.fc31.x86_64.rpm", + "checksum": "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.x86_64.rpm", + "checksum": "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm", + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "name": "cairo", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-1.16.0-6.fc31.x86_64.rpm", + "checksum": "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a", + "check_gpg": true + }, + { + "name": "cairo-gobject", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.x86_64.rpm", + "checksum": "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3", + "check_gpg": true + }, + { + "name": "colord-libs", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/colord-libs-1.4.4-2.fc31.x86_64.rpm", + "checksum": "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-8.31-4.fc31.x86_64.rpm", + "checksum": "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-common-8.31-4.fc31.x86_64.rpm", + "checksum": "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "12.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cpio-2.12-12.fc31.x86_64.rpm", + "checksum": "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-2.9.6-21.fc31.x86_64.rpm", + "checksum": "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.x86_64.rpm", + "checksum": "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20190816", + "release": "4.gitbb9bf99.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm", + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8", + "check_gpg": true + }, + { + "name": "cups-libs", + "epoch": 1, + "version": "2.2.12", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cups-libs-2.2.12-2.fc31.x86_64.rpm", + "checksum": "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/curl-7.66.0-1.fc31.x86_64.rpm", + "checksum": "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.x86_64.rpm", + "checksum": "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-1.12.16-3.fc31.x86_64.rpm", + "checksum": "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "21", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-broker-21-6.fc31.x86_64.rpm", + "checksum": "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm", + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-3.fc31.x86_64.rpm", + "checksum": "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71", + "check_gpg": true + }, + { + "name": "dconf", + "epoch": 0, + "version": "0.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dconf-0.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-2.fc31.x86_64.rpm", + "checksum": "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-1.02.163-2.fc31.x86_64.rpm", + "checksum": "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.x86_64.rpm", + "checksum": "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/diffutils-3.7-3.fc31.x86_64.rpm", + "checksum": "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dosfstools-4.1-9.fc31.x86_64.rpm", + "checksum": "sha256:b110ee65fa2dee77585ec77cab592cba2434d579f8afbed4d2a908ad1addccfc", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "27.git20181204.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-049-27.git20181204.fc31.1.x86_64.rpm", + "checksum": "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm", + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libelf-0.177-1.fc31.x86_64.rpm", + "checksum": "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libs-0.177-1.fc31.x86_64.rpm", + "checksum": "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/expat-2.2.8-1.fc31.x86_64.rpm", + "checksum": "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm", + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-31-1.noarch.rpm", + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-common-31-1.noarch.rpm", + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-repos-31-1.noarch.rpm", + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-5.37-3.fc31.x86_64.rpm", + "checksum": "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-libs-5.37-3.fc31.x86_64.rpm", + "checksum": "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.12", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/filesystem-3.12-2.fc31.x86_64.rpm", + "checksum": "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "24.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/findutils-4.6.0-24.fc31.x86_64.rpm", + "checksum": "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-7.fc31.x86_64.rpm", + "checksum": "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.x86_64.rpm", + "checksum": "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2", + "check_gpg": true + }, + { + "name": "fontconfig", + "epoch": 0, + "version": "2.13.92", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontconfig-2.13.92-3.fc31.x86_64.rpm", + "checksum": "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54", + "check_gpg": true + }, + { + "name": "fontpackages-filesystem", + "epoch": 0, + "version": "1.44", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm", + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.10.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/freetype-2.10.0-3.fc31.x86_64.rpm", + "checksum": "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee", + "check_gpg": true + }, + { + "name": "fribidi", + "epoch": 0, + "version": "1.0.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fribidi-1.0.5-4.fc31.x86_64.rpm", + "checksum": "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-8.fc31.x86_64.rpm", + "checksum": "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gawk-5.0.1-5.fc31.x86_64.rpm", + "checksum": "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203", + "check_gpg": true + }, + { + "name": "gcr", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-3.33.4-1.fc31.x86_64.rpm", + "checksum": "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd", + "check_gpg": true + }, + { + "name": "gcr-base", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-base-3.33.4-1.fc31.x86_64.rpm", + "checksum": "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.x86_64.rpm", + "checksum": "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.x86_64.rpm", + "checksum": "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2-modules", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.x86_64.rpm", + "checksum": "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3", + "check_gpg": true + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib-networking-2.62.1-1.fc31.x86_64.rpm", + "checksum": "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib2-2.62.1-1.fc31.x86_64.rpm", + "checksum": "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13", + "check_gpg": true + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:f67d5cc67029c6c38185f94b72aaa9034a49f5c4f166066c8268b41e1b18a202", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-common-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gmp-6.1.2-10.fc31.x86_64.rpm", + "checksum": "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a", + "check_gpg": true + }, + { + "name": "gnome-keyring", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-2.2.17-2.fc31.x86_64.rpm", + "checksum": "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.x86_64.rpm", + "checksum": "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnutls-3.6.10-1.fc31.x86_64.rpm", + "checksum": "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gpgme-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d", + "check_gpg": true + }, + { + "name": "graphite2", + "epoch": 0, + "version": "1.3.13", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/graphite2-1.3.13-1.fc31.x86_64.rpm", + "checksum": "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grep-3.3-3.fc31.x86_64.rpm", + "checksum": "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-common-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8", + "check_gpg": true + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-extra-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031", + "check_gpg": true + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8", + "check_gpg": true + }, + { + "name": "gtk-update-icon-cache", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.x86_64.rpm", + "checksum": "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d", + "check_gpg": true + }, + { + "name": "gtk3", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk3-3.24.12-3.fc31.x86_64.rpm", + "checksum": "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gzip-1.10-1.fc31.x86_64.rpm", + "checksum": "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01", + "check_gpg": true + }, + { + "name": "harfbuzz", + "epoch": 0, + "version": "2.6.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/harfbuzz-2.6.1-2.fc31.x86_64.rpm", + "checksum": "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994", + "check_gpg": true + }, + { + "name": "hicolor-icon-theme", + "epoch": 0, + "version": "0.17", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm", + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.x86_64.rpm", + "checksum": "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.3", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-libs-1.8.3-5.fc31.x86_64.rpm", + "checksum": "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4", + "check_gpg": true + }, + { + "name": "jasper-libs", + "epoch": 0, + "version": "2.0.14", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jasper-libs-2.0.14-9.fc31.x86_64.rpm", + "checksum": "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00", + "check_gpg": true + }, + { + "name": "jbigkit-libs", + "epoch": 0, + "version": "2.1", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jbigkit-libs-2.1-17.fc31.x86_64.rpm", + "checksum": "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-c-0.13.1-6.fc31.x86_64.rpm", + "checksum": "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422", + "check_gpg": true + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-glib-1.4.4-3.fc31.x86_64.rpm", + "checksum": "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-2.0.4-14.fc31.x86_64.rpm", + "checksum": "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-legacy-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-misc-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-3.fc31.x86_64.rpm", + "checksum": "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-26-4.fc31.x86_64.rpm", + "checksum": "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-libs-26-4.fc31.x86_64.rpm", + "checksum": "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kpartx-0.8.0-3.fc31.x86_64.rpm", + "checksum": "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.17", + "release": "45.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/krb5-libs-1.17-45.fc31.x86_64.rpm", + "checksum": "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466", + "check_gpg": true + }, + { + "name": "lcms2", + "epoch": 0, + "version": "2.9", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lcms2-2.9-6.fc31.x86_64.rpm", + "checksum": "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b", + "check_gpg": true + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-1.6.8-3.fc31.x86_64.rpm", + "checksum": "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679", + "check_gpg": true + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm", + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXau-1.0.9-2.fc31.x86_64.rpm", + "checksum": "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834", + "check_gpg": true + }, + { + "name": "libXcomposite", + "epoch": 0, + "version": "0.4.4", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcomposite-0.4.4-17.fc31.x86_64.rpm", + "checksum": "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c", + "check_gpg": true + }, + { + "name": "libXcursor", + "epoch": 0, + "version": "1.1.15", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcursor-1.1.15-6.fc31.x86_64.rpm", + "checksum": "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59", + "check_gpg": true + }, + { + "name": "libXdamage", + "epoch": 0, + "version": "1.1.4", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXdamage-1.1.4-17.fc31.x86_64.rpm", + "checksum": "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a", + "check_gpg": true + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXext-1.3.4-2.fc31.x86_64.rpm", + "checksum": "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077", + "check_gpg": true + }, + { + "name": "libXfixes", + "epoch": 0, + "version": "5.0.3", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXfixes-5.0.3-10.fc31.x86_64.rpm", + "checksum": "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c", + "check_gpg": true + }, + { + "name": "libXft", + "epoch": 0, + "version": "2.3.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXft-2.3.3-2.fc31.x86_64.rpm", + "checksum": "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc", + "check_gpg": true + }, + { + "name": "libXi", + "epoch": 0, + "version": "1.7.10", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXi-1.7.10-2.fc31.x86_64.rpm", + "checksum": "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141", + "check_gpg": true + }, + { + "name": "libXinerama", + "epoch": 0, + "version": "1.1.4", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXinerama-1.1.4-4.fc31.x86_64.rpm", + "checksum": "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1", + "check_gpg": true + }, + { + "name": "libXrandr", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrandr-1.5.2-2.fc31.x86_64.rpm", + "checksum": "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1", + "check_gpg": true + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrender-0.9.10-10.fc31.x86_64.rpm", + "checksum": "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7", + "check_gpg": true + }, + { + "name": "libXtst", + "epoch": 0, + "version": "1.2.3", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXtst-1.2.3-10.fc31.x86_64.rpm", + "checksum": "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libacl-2.2.53-4.fc31.x86_64.rpm", + "checksum": "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc", + "check_gpg": true + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.111", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libaio-0.3.111-6.fc31.x86_64.rpm", + "checksum": "sha256:ee6596a5010c2b4a038861828ecca240aa03c592dacd83c3a70d44cb8ee50408", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libarchive-3.4.0-1.fc31.x86_64.rpm", + "checksum": "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libargon2-20171227-3.fc31.x86_64.rpm", + "checksum": "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libassuan-2.5.3-2.fc31.x86_64.rpm", + "checksum": "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libattr-2.4.48-7.fc31.x86_64.rpm", + "checksum": "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libblkid-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-2.26-6.fc31.x86_64.rpm", + "checksum": "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-ng-0.7.9-8.fc31.x86_64.rpm", + "checksum": "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcom_err-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcomps-0.1.11-3.fc31.x86_64.rpm", + "checksum": "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcroco-0.6.13-2.fc31.x86_64.rpm", + "checksum": "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcurl-7.66.0-1.fc31.x86_64.rpm", + "checksum": "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241", + "check_gpg": true + }, + { + "name": "libdatrie", + "epoch": 0, + "version": "0.2.9", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdatrie-0.2.9-10.fc31.x86_64.rpm", + "checksum": "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-5.3.28-38.fc31.x86_64.rpm", + "checksum": "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-38.fc31.x86_64.rpm", + "checksum": "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdnf-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "28.20190324cvs.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.x86_64.rpm", + "checksum": "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801", + "check_gpg": true + }, + { + "name": "libepoxy", + "epoch": 0, + "version": "1.5.3", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libepoxy-1.5.3-4.fc31.x86_64.rpm", + "checksum": "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libevent-2.1.8-7.fc31.x86_64.rpm", + "checksum": "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libfdisk-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "23.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libffi-3.1-23.fc31.x86_64.rpm", + "checksum": "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcc-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-1.fc31.x86_64.rpm", + "checksum": "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgomp-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgpg-error-1.36-2.fc31.x86_64.rpm", + "checksum": "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd", + "check_gpg": true + }, + { + "name": "libgusb", + "epoch": 0, + "version": "0.3.0", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgusb-0.3.0-5.fc31.x86_64.rpm", + "checksum": "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libidn2-2.2.0-2.fc31.x86_64.rpm", + "checksum": "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc", + "check_gpg": true + }, + { + "name": "libjpeg-turbo", + "epoch": 0, + "version": "2.0.2", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.x86_64.rpm", + "checksum": "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-1.fc31.x86_64.rpm", + "checksum": "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-1.fc31.x86_64.rpm", + "checksum": "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libksba-1.3.5-10.fc31.x86_64.rpm", + "checksum": "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-9.fc31.x86_64.rpm", + "checksum": "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43", + "check_gpg": true + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodman-2.0.1-20.fc31.x86_64.rpm", + "checksum": "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664", + "check_gpg": true + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.15", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.x86_64.rpm", + "checksum": "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmount-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.39.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnghttp2-1.39.2-1.fc31.x86_64.rpm", + "checksum": "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "5.20180605git4a062cf.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.x86_64.rpm", + "checksum": "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.0", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpcap-1.9.0-4.fc31.x86_64.rpm", + "checksum": "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc", + "check_gpg": true + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.37", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpng-1.6.37-2.fc31.x86_64.rpm", + "checksum": "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf", + "check_gpg": true + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libproxy-0.4.15-14.fc31.x86_64.rpm", + "checksum": "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpsl-0.21.0-2.fc31.x86_64.rpm", + "checksum": "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpwquality-1.4.1-1.fc31.x86_64.rpm", + "checksum": "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.10.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/librepo-1.10.5-1.fc31.x86_64.rpm", + "checksum": "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.10.1", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm", + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libseccomp-2.4.1-1.fc31.x86_64.rpm", + "checksum": "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.19.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsecret-0.19.1-1.fc31.x86_64.rpm", + "checksum": "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-utils-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsemanage-2.9-3.fc31.x86_64.rpm", + "checksum": "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsepol-2.9-2.fc31.x86_64.rpm", + "checksum": "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsigsegv-2.11-8.fc31.x86_64.rpm", + "checksum": "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsmartcols-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.5", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsolv-0.7.5-3.fc31.x86_64.rpm", + "checksum": "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388", + "check_gpg": true + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.68.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsoup-2.68.2-1.fc31.x86_64.rpm", + "checksum": "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libss-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-0.9.0-6.fc31.x86_64.rpm", + "checksum": "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm", + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libstdc++-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.14", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtasn1-4.14-2.fc31.x86_64.rpm", + "checksum": "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c", + "check_gpg": true + }, + { + "name": "libthai", + "epoch": 0, + "version": "0.1.28", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libthai-0.1.28-3.fc31.x86_64.rpm", + "checksum": "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500", + "check_gpg": true + }, + { + "name": "libtiff", + "epoch": 0, + "version": "4.0.10", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtiff-4.0.10-6.fc31.x86_64.rpm", + "checksum": "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "2.rc3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.x86_64.rpm", + "checksum": "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libunistring-0.9.10-6.fc31.x86_64.rpm", + "checksum": "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.22", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libusbx-1.0.22-4.fc31.x86_64.rpm", + "checksum": "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libutempter-1.1.6-17.fc31.x86_64.rpm", + "checksum": "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuuid-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libverto-0.3.0-8.fc31.x86_64.rpm", + "checksum": "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348", + "check_gpg": true + }, + { + "name": "libwayland-client", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-client-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff", + "check_gpg": true + }, + { + "name": "libwayland-cursor", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce", + "check_gpg": true + }, + { + "name": "libwayland-egl", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9", + "check_gpg": true + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcb-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-4.4.10-1.fc31.x86_64.rpm", + "checksum": "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.10-1.fc31.x86_64.rpm", + "checksum": "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.8.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.x86_64.rpm", + "checksum": "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxml2-2.9.9-3.fc31.x86_64.rpm", + "checksum": "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libyaml-0.2.2-2.fc31.x86_64.rpm", + "checksum": "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libzstd-1.4.2-1.fc31.x86_64.rpm", + "checksum": "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-6.fc31.x86_64.rpm", + "checksum": "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-1.fc31.x86_64.rpm", + "checksum": "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mkpasswd-5.5.2-1.fc31.x86_64.rpm", + "checksum": "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mpfr-3.1.6-5.fc31.x86_64.rpm", + "checksum": "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-6.1-12.20190803.fc31.x86_64.rpm", + "checksum": "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm", + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.x86_64.rpm", + "checksum": "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nettle-3.5.1-3.fc31.x86_64.rpm", + "checksum": "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/npth-1.6-3.fc31.x86_64.rpm", + "checksum": "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openldap-2.4.47-3.fc31.x86_64.rpm", + "checksum": "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-1.1.1d-2.fc31.x86_64.rpm", + "checksum": "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.x86_64.rpm", + "checksum": "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.x86_64.rpm", + "checksum": "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/os-prober-1.77-3.fc31.x86_64.rpm", + "checksum": "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.x86_64.rpm", + "checksum": "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.x86_64.rpm", + "checksum": "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "18.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pam-1.3.1-18.fc31.x86_64.rpm", + "checksum": "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b", + "check_gpg": true + }, + { + "name": "pango", + "epoch": 0, + "version": "1.44.6", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pango-1.44.6-1.fc31.x86_64.rpm", + "checksum": "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.43", + "release": "2.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre-8.43-2.fc31.1.x86_64.rpm", + "checksum": "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.33", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre2-10.33-14.fc31.x86_64.rpm", + "checksum": "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pigz-2.4-5.fc31.x86_64.rpm", + "checksum": "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pinentry-1.1.0-6.fc31.x86_64.rpm", + "checksum": "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976", + "check_gpg": true + }, + { + "name": "pixman", + "epoch": 0, + "version": "0.38.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pixman-0.38.4-1.fc31.x86_64.rpm", + "checksum": "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/policycoreutils-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "18.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/popt-1.16-18.fc31.x86_64.rpm", + "checksum": "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-6.fc31.x86_64.rpm", + "checksum": "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm", + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm", + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-3.7.4-5.fc31.x86_64.rpm", + "checksum": "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.x86_64.rpm", + "checksum": "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libs-3.7.4-5.fc31.x86_64.rpm", + "checksum": "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-rpm-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-unbound-1.9.3-1.fc31.x86_64.rpm", + "checksum": "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7", + "check_gpg": true + }, + { + "name": "qemu-img", + "epoch": 2, + "version": "4.1.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qemu-img-4.1.0-2.fc31.x86_64.rpm", + "checksum": "sha256:669250ad47aad5939cf4d1b88036fd95a94845d8e0bbdb05e933f3d2fe262fea", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.x86_64.rpm", + "checksum": "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/readline-8.0-3.fc31.x86_64.rpm", + "checksum": "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc", + "check_gpg": true + }, + { + "name": "rest", + "epoch": 0, + "version": "0.8.1", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rest-0.8.1-6.fc31.x86_64.rpm", + "checksum": "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sed-4.5-4.fc31.x86_64.rpm", + "checksum": "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.3", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm", + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "16.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shadow-utils-4.6-16.fc31.x86_64.rpm", + "checksum": "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.14", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shared-mime-info-1.14-1.fc31.x86_64.rpm", + "checksum": "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.29.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.x86_64.rpm", + "checksum": "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5", + "check_gpg": true + }, + { + "name": "systemd-bootchart", + "epoch": 0, + "version": "233", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-bootchart-233-5.fc31.x86_64.rpm", + "checksum": "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm", + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-udev-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tar-1.32-2.fc31.x86_64.rpm", + "checksum": "sha256:9975496f29601a1c2cdb89e63aac698fdd8283ba3a52a9d91ead9473a0e064c8", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tss2-1331-2.fc31.x86_64.rpm", + "checksum": "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm", + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/unbound-libs-1.9.3-1.fc31.x86_64.rpm", + "checksum": "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/util-linux-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "15.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/which-2.21-15.fc31.x86_64.rpm", + "checksum": "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm", + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.27", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm", + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-5.2.4-6.fc31.x86_64.rpm", + "checksum": "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-libs-5.2.4-6.fc31.x86_64.rpm", + "checksum": "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.2", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.x86_64.rpm", + "checksum": "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "19.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zlib-1.2.11-19.fc31.x86_64.rpm", + "checksum": "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9", + "check_gpg": true + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.20.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/NetworkManager-1.20.4-1.fc31.x86_64.rpm", + "checksum": "sha256:6d8cbba688cea65fa80983cd7f140633e94cd58daa819342d1ae571a4ff174c6", + "check_gpg": true + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.20.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.20.4-1.fc31.x86_64.rpm", + "checksum": "sha256:2c5b5ce5f6e6d1d79f35eab253a12e19aeb863f4fe8ded94013f76a9834689fb", + "check_gpg": true + }, + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.111", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm", + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/acl-2.2.53-4.fc31.x86_64.rpm", + "checksum": "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d", + "check_gpg": true + }, + { + "name": "adobe-source-code-pro-fonts", + "epoch": 0, + "version": "2.030.1.050", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm", + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "name": "adwaita-cursor-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "name": "adwaita-icon-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "name": "alsa-lib", + "epoch": 0, + "version": "1.1.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/alsa-lib-1.1.9-2.fc31.x86_64.rpm", + "checksum": "sha256:ec410ea4bb11c73e4fc66a32374adb598baf0b46b3732aee4e0f7256c7b028cd", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/alternatives-1.11-5.fc31.x86_64.rpm", + "checksum": "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081", + "check_gpg": true + }, + { + "name": "at-spi2-atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.x86_64.rpm", + "checksum": "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355", + "check_gpg": true + }, + { + "name": "at-spi2-core", + "epoch": 0, + "version": "2.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1", + "check_gpg": true + }, + { + "name": "atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/atk-2.34.1-1.fc31.x86_64.rpm", + "checksum": "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5", + "check_gpg": true + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm", + "checksum": "sha256:cc02df4125eaebf642edd9bf00031ec09871c285816c03112909ef1005410eaa", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm", + "checksum": "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09", + "check_gpg": true + }, + { + "name": "avahi-libs", + "epoch": 0, + "version": "0.7", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/avahi-libs-0.7-20.fc31.x86_64.rpm", + "checksum": "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "8.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm", + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bash-5.0.7-3.fc31.x86_64.rpm", + "checksum": "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3", + "check_gpg": true + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.7", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/brotli-1.0.7-6.fc31.x86_64.rpm", + "checksum": "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.x86_64.rpm", + "checksum": "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7", + "check_gpg": true + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.15.0", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/c-ares-1.15.0-4.fc31.x86_64.rpm", + "checksum": "sha256:239a9576864532edd325e72b62a10ef147a2bcc0a925079b19fb9cb74bab0dd7", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm", + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "name": "cairo", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-1.16.0-6.fc31.x86_64.rpm", + "checksum": "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a", + "check_gpg": true + }, + { + "name": "cairo-gobject", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.x86_64.rpm", + "checksum": "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3", + "check_gpg": true + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "2.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/checkpolicy-2.9-2.fc31.x86_64.rpm", + "checksum": "sha256:3629a3675c7dadd89f3b3d855e7c57d8f93d30d59fa00fdeabfc5e5e39ca4937", + "check_gpg": true + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/chrony-3.5-4.fc31.x86_64.rpm", + "checksum": "sha256:07a3523159719382e2bb9b83961bfe00836cc97f75a9706d02ad73dddb161856", + "check_gpg": true + }, + { + "name": "cloud-init", + "epoch": 0, + "version": "17.1", + "release": "11.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cloud-init-17.1-11.fc31.noarch.rpm", + "checksum": "sha256:9cc3e6534ae34343e7e4d056d46b9551da7d0a82c7bad378c3626d4b70d1bf62", + "check_gpg": true + }, + { + "name": "colord-libs", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/colord-libs-1.4.4-2.fc31.x86_64.rpm", + "checksum": "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-8.31-4.fc31.x86_64.rpm", + "checksum": "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-common-8.31-4.fc31.x86_64.rpm", + "checksum": "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "12.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cpio-2.12-12.fc31.x86_64.rpm", + "checksum": "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-2.9.6-21.fc31.x86_64.rpm", + "checksum": "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.x86_64.rpm", + "checksum": "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20190816", + "release": "4.gitbb9bf99.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm", + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8", + "check_gpg": true + }, + { + "name": "cups-libs", + "epoch": 1, + "version": "2.2.12", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cups-libs-2.2.12-2.fc31.x86_64.rpm", + "checksum": "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/curl-7.66.0-1.fc31.x86_64.rpm", + "checksum": "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.x86_64.rpm", + "checksum": "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-1.12.16-3.fc31.x86_64.rpm", + "checksum": "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "21", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-broker-21-6.fc31.x86_64.rpm", + "checksum": "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm", + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-3.fc31.x86_64.rpm", + "checksum": "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71", + "check_gpg": true + }, + { + "name": "dconf", + "epoch": 0, + "version": "0.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dconf-0.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27", + "check_gpg": true + }, + { + "name": "dejavu-fonts-common", + "epoch": 0, + "version": "2.37", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dejavu-fonts-common-2.37-2.fc31.noarch.rpm", + "checksum": "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc", + "check_gpg": true + }, + { + "name": "dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-2.fc31.noarch.rpm", + "checksum": "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-2.fc31.x86_64.rpm", + "checksum": "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-1.02.163-2.fc31.x86_64.rpm", + "checksum": "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.x86_64.rpm", + "checksum": "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732", + "check_gpg": true + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.4.1", + "release": "15.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dhcp-client-4.4.1-15.fc31.x86_64.rpm", + "checksum": "sha256:33334afdde6c813b18c18897dca19fab5a2ce090eba0b5ea0a38f43f1081c190", + "check_gpg": true + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.4.1", + "release": "15.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dhcp-common-4.4.1-15.fc31.noarch.rpm", + "checksum": "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/diffutils-3.7-3.fc31.x86_64.rpm", + "checksum": "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.9", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-plugins-core-4.0.9-1.fc31.noarch.rpm", + "checksum": "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "27.git20181204.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-049-27.git20181204.fc31.1.x86_64.rpm", + "checksum": "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159", + "check_gpg": true + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "049", + "release": "27.git20181204.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-config-generic-049-27.git20181204.fc31.1.x86_64.rpm", + "checksum": "sha256:34a9986b8b61812ceaf32ce3b189bd0b2cb4adaaf47d76ec1f50ce07c45b5675", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89", + "check_gpg": true + }, + { + "name": "ebtables-legacy", + "epoch": 0, + "version": "2.0.10", + "release": "37.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/ebtables-legacy-2.0.10-37.fc31.x86_64.rpm", + "checksum": "sha256:cab1b0c3bdae2a07e15b90b414f50753c759e325b6f0cddfa27895748c77f082", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm", + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libelf-0.177-1.fc31.x86_64.rpm", + "checksum": "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libs-0.177-1.fc31.x86_64.rpm", + "checksum": "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/expat-2.2.8-1.fc31.x86_64.rpm", + "checksum": "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm", + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-31-1.noarch.rpm", + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-common-31-1.noarch.rpm", + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-repos-31-1.noarch.rpm", + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-5.37-3.fc31.x86_64.rpm", + "checksum": "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-libs-5.37-3.fc31.x86_64.rpm", + "checksum": "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.12", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/filesystem-3.12-2.fc31.x86_64.rpm", + "checksum": "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "24.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/findutils-4.6.0-24.fc31.x86_64.rpm", + "checksum": "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-7.fc31.x86_64.rpm", + "checksum": "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.x86_64.rpm", + "checksum": "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2", + "check_gpg": true + }, + { + "name": "firewalld", + "epoch": 0, + "version": "0.7.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/firewalld-0.7.2-1.fc31.noarch.rpm", + "checksum": "sha256:ab35a2d7f21aac1f33f9521607789e1c303fb63e4ea0681e9f724f86a1cc15c5", + "check_gpg": true + }, + { + "name": "firewalld-filesystem", + "epoch": 0, + "version": "0.7.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/firewalld-filesystem-0.7.2-1.fc31.noarch.rpm", + "checksum": "sha256:e76b3b9d14a0016542f61d0ab2981fbf2d779e522d0c36d9095a1cffecbf9272", + "check_gpg": true + }, + { + "name": "fontconfig", + "epoch": 0, + "version": "2.13.92", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontconfig-2.13.92-3.fc31.x86_64.rpm", + "checksum": "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54", + "check_gpg": true + }, + { + "name": "fontpackages-filesystem", + "epoch": 0, + "version": "1.44", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm", + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.10.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/freetype-2.10.0-3.fc31.x86_64.rpm", + "checksum": "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee", + "check_gpg": true + }, + { + "name": "fribidi", + "epoch": 0, + "version": "1.0.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fribidi-1.0.5-4.fc31.x86_64.rpm", + "checksum": "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-8.fc31.x86_64.rpm", + "checksum": "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gawk-5.0.1-5.fc31.x86_64.rpm", + "checksum": "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203", + "check_gpg": true + }, + { + "name": "gcr", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-3.33.4-1.fc31.x86_64.rpm", + "checksum": "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd", + "check_gpg": true + }, + { + "name": "gcr-base", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-base-3.33.4-1.fc31.x86_64.rpm", + "checksum": "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.x86_64.rpm", + "checksum": "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.x86_64.rpm", + "checksum": "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2-modules", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.x86_64.rpm", + "checksum": "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c", + "check_gpg": true + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20190806", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/geolite2-city-20190806-1.fc31.noarch.rpm", + "checksum": "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565", + "check_gpg": true + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20190806", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/geolite2-country-20190806-1.fc31.noarch.rpm", + "checksum": "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3", + "check_gpg": true + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib-networking-2.62.1-1.fc31.x86_64.rpm", + "checksum": "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib2-2.62.1-1.fc31.x86_64.rpm", + "checksum": "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-common-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb", + "check_gpg": true + }, + { + "name": "glibc-langpack-en", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:6f2dae9b49bed8e1036a21aadd92ea2eb371979f6714ec2bce5742de051eeb14", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gmp-6.1.2-10.fc31.x86_64.rpm", + "checksum": "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a", + "check_gpg": true + }, + { + "name": "gnome-keyring", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-2.2.17-2.fc31.x86_64.rpm", + "checksum": "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.x86_64.rpm", + "checksum": "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnutls-3.6.10-1.fc31.x86_64.rpm", + "checksum": "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458", + "check_gpg": true + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.62.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gobject-introspection-1.62.0-1.fc31.x86_64.rpm", + "checksum": "sha256:ab5ad6fc076fd82be6a2ca9d77998fc06c2c9e7296de960b7549239efb9f971d", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gpgme-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d", + "check_gpg": true + }, + { + "name": "graphite2", + "epoch": 0, + "version": "1.3.13", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/graphite2-1.3.13-1.fc31.x86_64.rpm", + "checksum": "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grep-3.3-3.fc31.x86_64.rpm", + "checksum": "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada", + "check_gpg": true + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/groff-base-1.22.3-20.fc31.x86_64.rpm", + "checksum": "sha256:21ccdbe703caa6a08056d2bc75c1e184f811472a6e320e5af64b8757fcd07166", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-common-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8", + "check_gpg": true + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-extra-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031", + "check_gpg": true + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8", + "check_gpg": true + }, + { + "name": "gtk-update-icon-cache", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.x86_64.rpm", + "checksum": "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d", + "check_gpg": true + }, + { + "name": "gtk3", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk3-3.24.12-3.fc31.x86_64.rpm", + "checksum": "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gzip-1.10-1.fc31.x86_64.rpm", + "checksum": "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01", + "check_gpg": true + }, + { + "name": "harfbuzz", + "epoch": 0, + "version": "2.6.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/harfbuzz-2.6.1-2.fc31.x86_64.rpm", + "checksum": "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994", + "check_gpg": true + }, + { + "name": "hicolor-icon-theme", + "epoch": 0, + "version": "0.17", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm", + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.20", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hostname-3.20-9.fc31.x86_64.rpm", + "checksum": "sha256:a188b5c697b734d4ed7d8f954b6875b9d401dc2a3c10bfd20d03db131ca73ab5", + "check_gpg": true + }, + { + "name": "hwdata", + "epoch": 0, + "version": "0.328", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hwdata-0.328-1.fc31.noarch.rpm", + "checksum": "sha256:dae094845eb669c1e4c6b9719a730ab71561c8bc8e870d30c9ac9f6437fd2d50", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.x86_64.rpm", + "checksum": "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6", + "check_gpg": true + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.02", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/initscripts-10.02-2.fc31.x86_64.rpm", + "checksum": "sha256:2af3bbdab1f387ae7af2534846e33ab6d2ca7777399c64191f95699d576cd4ba", + "check_gpg": true + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.2.5", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipcalc-0.2.5-3.fc31.x86_64.rpm", + "checksum": "sha256:c8e0a36410ebbd9db0a10e1fbecbae8f6288b9be86752d2e91725d5dd98ec65d", + "check_gpg": true + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.3.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iproute-5.3.0-1.fc31.x86_64.rpm", + "checksum": "sha256:cef060334e8c21b5d2e3a87bdd0ad5ac1be389d7794735506b9d3c65c2923cd3", + "check_gpg": true + }, + { + "name": "iproute-tc", + "epoch": 0, + "version": "5.3.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iproute-tc-5.3.0-1.fc31.x86_64.rpm", + "checksum": "sha256:d219a6c4a2410d6ef9bad2b337557779b969e278b657ffede83c021c20f665ca", + "check_gpg": true + }, + { + "name": "ipset", + "epoch": 0, + "version": "7.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipset-7.3-1.fc31.x86_64.rpm", + "checksum": "sha256:e4eb72f080bdb339a4748fa9a0749953628189da1c930294c68902bb8b9f8eeb", + "check_gpg": true + }, + { + "name": "ipset-libs", + "epoch": 0, + "version": "7.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipset-libs-7.3-1.fc31.x86_64.rpm", + "checksum": "sha256:efece5a4b070f197a1db3f7e1d030878b1ccdff6a8a0d24c596ecfae374ef194", + "check_gpg": true + }, + { + "name": "iptables", + "epoch": 0, + "version": "1.8.3", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-1.8.3-5.fc31.x86_64.rpm", + "checksum": "sha256:8e9a916cd4843e7d09e3d1b814dbb55bb3b45672b1058044cfeaf8e19ad27bd7", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.3", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-libs-1.8.3-5.fc31.x86_64.rpm", + "checksum": "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4", + "check_gpg": true + }, + { + "name": "iputils", + "epoch": 0, + "version": "20190515", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iputils-20190515-3.fc31.x86_64.rpm", + "checksum": "sha256:72b5df6982fecdbee30d40bbb6042c72ed0f31b787f289b4a27f0dffc6f609fe", + "check_gpg": true + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.12", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jansson-2.12-4.fc31.x86_64.rpm", + "checksum": "sha256:dc924dd33a9bd0b9483ebdbcf7caecbe1f48b8a135f1521291c8433fa76f4603", + "check_gpg": true + }, + { + "name": "jasper-libs", + "epoch": 0, + "version": "2.0.14", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jasper-libs-2.0.14-9.fc31.x86_64.rpm", + "checksum": "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00", + "check_gpg": true + }, + { + "name": "jbigkit-libs", + "epoch": 0, + "version": "2.1", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jbigkit-libs-2.1-17.fc31.x86_64.rpm", + "checksum": "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-c-0.13.1-6.fc31.x86_64.rpm", + "checksum": "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422", + "check_gpg": true + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-glib-1.4.4-3.fc31.x86_64.rpm", + "checksum": "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-2.0.4-14.fc31.x86_64.rpm", + "checksum": "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-legacy-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-misc-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "name": "kernel", + "epoch": 0, + "version": "5.3.7", + "release": "301.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-5.3.7-301.fc31.x86_64.rpm", + "checksum": "sha256:fb2ff56d3a273eac8775bac03b12f1cf8affa0b92585912de0abf3bc1ccdfa44", + "check_gpg": true + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "5.3.7", + "release": "301.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-core-5.3.7-301.fc31.x86_64.rpm", + "checksum": "sha256:f0509e333636e5c34726c8a2b8260bf88fe0a35b95cae6dda62191fee1be4c6a", + "check_gpg": true + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "5.3.7", + "release": "301.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-modules-5.3.7-301.fc31.x86_64.rpm", + "checksum": "sha256:1e5f14d26556e380ed129289c1b98d46d951966e548613b9c2ee0d3616ac96d1", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-3.fc31.x86_64.rpm", + "checksum": "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-26-4.fc31.x86_64.rpm", + "checksum": "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-libs-26-4.fc31.x86_64.rpm", + "checksum": "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kpartx-0.8.0-3.fc31.x86_64.rpm", + "checksum": "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.17", + "release": "45.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/krb5-libs-1.17-45.fc31.x86_64.rpm", + "checksum": "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466", + "check_gpg": true + }, + { + "name": "langpacks-core-en", + "epoch": 0, + "version": "2.0", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/langpacks-core-en-2.0-7.fc31.noarch.rpm", + "checksum": "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552", + "check_gpg": true + }, + { + "name": "langpacks-en", + "epoch": 0, + "version": "2.0", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/langpacks-en-2.0-7.fc31.noarch.rpm", + "checksum": "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b", + "check_gpg": true + }, + { + "name": "lcms2", + "epoch": 0, + "version": "2.9", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lcms2-2.9-6.fc31.x86_64.rpm", + "checksum": "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b", + "check_gpg": true + }, + { + "name": "less", + "epoch": 0, + "version": "551", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/less-551-2.fc31.x86_64.rpm", + "checksum": "sha256:22db6d1e1f34a43c3d045b6750ff3a32184d47c2aedf3dabc93640057de1f4fa", + "check_gpg": true + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-1.6.8-3.fc31.x86_64.rpm", + "checksum": "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679", + "check_gpg": true + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm", + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXau-1.0.9-2.fc31.x86_64.rpm", + "checksum": "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834", + "check_gpg": true + }, + { + "name": "libXcomposite", + "epoch": 0, + "version": "0.4.4", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcomposite-0.4.4-17.fc31.x86_64.rpm", + "checksum": "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c", + "check_gpg": true + }, + { + "name": "libXcursor", + "epoch": 0, + "version": "1.1.15", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcursor-1.1.15-6.fc31.x86_64.rpm", + "checksum": "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59", + "check_gpg": true + }, + { + "name": "libXdamage", + "epoch": 0, + "version": "1.1.4", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXdamage-1.1.4-17.fc31.x86_64.rpm", + "checksum": "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a", + "check_gpg": true + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXext-1.3.4-2.fc31.x86_64.rpm", + "checksum": "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077", + "check_gpg": true + }, + { + "name": "libXfixes", + "epoch": 0, + "version": "5.0.3", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXfixes-5.0.3-10.fc31.x86_64.rpm", + "checksum": "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c", + "check_gpg": true + }, + { + "name": "libXft", + "epoch": 0, + "version": "2.3.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXft-2.3.3-2.fc31.x86_64.rpm", + "checksum": "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc", + "check_gpg": true + }, + { + "name": "libXi", + "epoch": 0, + "version": "1.7.10", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXi-1.7.10-2.fc31.x86_64.rpm", + "checksum": "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141", + "check_gpg": true + }, + { + "name": "libXinerama", + "epoch": 0, + "version": "1.1.4", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXinerama-1.1.4-4.fc31.x86_64.rpm", + "checksum": "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1", + "check_gpg": true + }, + { + "name": "libXrandr", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrandr-1.5.2-2.fc31.x86_64.rpm", + "checksum": "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1", + "check_gpg": true + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrender-0.9.10-10.fc31.x86_64.rpm", + "checksum": "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7", + "check_gpg": true + }, + { + "name": "libXtst", + "epoch": 0, + "version": "1.2.3", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXtst-1.2.3-10.fc31.x86_64.rpm", + "checksum": "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libacl-2.2.53-4.fc31.x86_64.rpm", + "checksum": "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libarchive-3.4.0-1.fc31.x86_64.rpm", + "checksum": "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libargon2-20171227-3.fc31.x86_64.rpm", + "checksum": "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libassuan-2.5.3-2.fc31.x86_64.rpm", + "checksum": "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libattr-2.4.48-7.fc31.x86_64.rpm", + "checksum": "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be", + "check_gpg": true + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-43.fc31.x86_64.rpm", + "checksum": "sha256:469d12368377399b8eaa7ec8cf1b6378ab18476b4a2b61b79091510a8945c6aa", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libblkid-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-2.26-6.fc31.x86_64.rpm", + "checksum": "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-ng-0.7.9-8.fc31.x86_64.rpm", + "checksum": "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d", + "check_gpg": true + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcollection-0.7.0-43.fc31.x86_64.rpm", + "checksum": "sha256:0f26eca4ac936554818769fe32aca5e878af2616e83f836ec463e59eb4f9f1f9", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcom_err-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcomps-0.1.11-3.fc31.x86_64.rpm", + "checksum": "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcroco-0.6.13-2.fc31.x86_64.rpm", + "checksum": "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcurl-7.66.0-1.fc31.x86_64.rpm", + "checksum": "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241", + "check_gpg": true + }, + { + "name": "libdatrie", + "epoch": 0, + "version": "0.2.9", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdatrie-0.2.9-10.fc31.x86_64.rpm", + "checksum": "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-5.3.28-38.fc31.x86_64.rpm", + "checksum": "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-38.fc31.x86_64.rpm", + "checksum": "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627", + "check_gpg": true + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdhash-0.5.0-43.fc31.x86_64.rpm", + "checksum": "sha256:0b54f374bcbe094dbc0d52d9661fe99ebff384026ce0ea39f2d6069e27bf8bdc", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdnf-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874", + "check_gpg": true + }, + { + "name": "libdrm", + "epoch": 0, + "version": "2.4.99", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdrm-2.4.99-2.fc31.x86_64.rpm", + "checksum": "sha256:5bab4beb581893f90fbb7d46d47c74932cd788c1535f92ee98f81deac6d3658c", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "28.20190324cvs.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.x86_64.rpm", + "checksum": "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801", + "check_gpg": true + }, + { + "name": "libepoxy", + "epoch": 0, + "version": "1.5.3", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libepoxy-1.5.3-4.fc31.x86_64.rpm", + "checksum": "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libevent-2.1.8-7.fc31.x86_64.rpm", + "checksum": "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libfdisk-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "23.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libffi-3.1-23.fc31.x86_64.rpm", + "checksum": "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcc-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-1.fc31.x86_64.rpm", + "checksum": "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgomp-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgpg-error-1.36-2.fc31.x86_64.rpm", + "checksum": "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd", + "check_gpg": true + }, + { + "name": "libgusb", + "epoch": 0, + "version": "0.3.0", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgusb-0.3.0-5.fc31.x86_64.rpm", + "checksum": "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libidn2-2.2.0-2.fc31.x86_64.rpm", + "checksum": "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc", + "check_gpg": true + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libini_config-1.3.1-43.fc31.x86_64.rpm", + "checksum": "sha256:6f7fbd57db9334a3cc7983d2e920afe92abe3f7e168702612d70e9ff405d79e6", + "check_gpg": true + }, + { + "name": "libjpeg-turbo", + "epoch": 0, + "version": "2.0.2", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.x86_64.rpm", + "checksum": "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-1.fc31.x86_64.rpm", + "checksum": "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-1.fc31.x86_64.rpm", + "checksum": "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libksba-1.3.5-10.fc31.x86_64.rpm", + "checksum": "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f", + "check_gpg": true + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.0.7", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libldb-2.0.7-1.fc31.x86_64.rpm", + "checksum": "sha256:8f7b737ccb294fd5ba1d19075ea2a50a54e0265d8efa28aae0ade59d3e3a63be", + "check_gpg": true + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.2.0", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmaxminddb-1.2.0-8.fc31.x86_64.rpm", + "checksum": "sha256:430f2f71be063eb9d04fe38659f62e29f47c9c878f9985d0569cb49e9c89ebc0", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-9.fc31.x86_64.rpm", + "checksum": "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmnl-1.0.4-10.fc31.x86_64.rpm", + "checksum": "sha256:c976ce75eda3dbe734117f6f558eafb2061bbef66086a04cb907a7ddbaea8bc2", + "check_gpg": true + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodman-2.0.1-20.fc31.x86_64.rpm", + "checksum": "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664", + "check_gpg": true + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.15", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.x86_64.rpm", + "checksum": "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmount-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d", + "check_gpg": true + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libndp-1.7-4.fc31.x86_64.rpm", + "checksum": "sha256:45bf4bef479712936db1d6859b043d13e6cad41c851b6e621fc315b39ecfa14b", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-3.fc31.x86_64.rpm", + "checksum": "sha256:e91f7fcee1e3e72941c99eec3c3c3c9506cdaf83c01cf1eef257b91ccaff550c", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "16.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-16.fc31.x86_64.rpm", + "checksum": "sha256:f8d885f57b3c7b30b6f18f68fed7fd3f19300c22abc5d5ee5029998e96c6b115", + "check_gpg": true + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.4.1", + "release": "1.rc1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnfsidmap-2.4.1-1.rc1.fc31.x86_64.rpm", + "checksum": "sha256:f61555e6e74917be3f131bd5af9d9e30ed709111701e950b7ebd4392baf33f12", + "check_gpg": true + }, + { + "name": "libnftnl", + "epoch": 0, + "version": "1.1.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnftnl-1.1.3-2.fc31.x86_64.rpm", + "checksum": "sha256:2cd5a709ff2c286b73f850469b1ee6baf9077b90ce3bacb8ba712430c6632350", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.39.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnghttp2-1.39.2-1.fc31.x86_64.rpm", + "checksum": "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf", + "check_gpg": true + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnl3-3.5.0-1.fc31.x86_64.rpm", + "checksum": "sha256:8bd2655674b40e89f5f63af7f8ffafd0e9064a3378cdca050262a7272678e8e5", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "5.20180605git4a062cf.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.x86_64.rpm", + "checksum": "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a", + "check_gpg": true + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-43.fc31.x86_64.rpm", + "checksum": "sha256:6f729da330aaaea336458a8b6f3f1d2cc761693ba20bdda57fb9c49fb6f2120d", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.0", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpcap-1.9.0-4.fc31.x86_64.rpm", + "checksum": "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc", + "check_gpg": true + }, + { + "name": "libpciaccess", + "epoch": 0, + "version": "0.15", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpciaccess-0.15-2.fc31.x86_64.rpm", + "checksum": "sha256:8c496ff256c18c8473f6d4ef87287828399f96ae19435e60c8179438aa0b59d0", + "check_gpg": true + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpipeline-1.5.1-3.fc31.x86_64.rpm", + "checksum": "sha256:cfeb5d0cb9c116e39292e3158c68ee62880cff4a5e3d098d20bf9567e5a576e1", + "check_gpg": true + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.37", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpng-1.6.37-2.fc31.x86_64.rpm", + "checksum": "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf", + "check_gpg": true + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libproxy-0.4.15-14.fc31.x86_64.rpm", + "checksum": "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpsl-0.21.0-2.fc31.x86_64.rpm", + "checksum": "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpwquality-1.4.1-1.fc31.x86_64.rpm", + "checksum": "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0", + "check_gpg": true + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libref_array-0.1.5-43.fc31.x86_64.rpm", + "checksum": "sha256:da923b379524f2d8d26905f26a9dc763cec36c40306c4c53db57100574ea89b8", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.10.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/librepo-1.10.5-1.fc31.x86_64.rpm", + "checksum": "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.10.1", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm", + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libseccomp-2.4.1-1.fc31.x86_64.rpm", + "checksum": "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.19.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsecret-0.19.1-1.fc31.x86_64.rpm", + "checksum": "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-utils-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsemanage-2.9-3.fc31.x86_64.rpm", + "checksum": "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsepol-2.9-2.fc31.x86_64.rpm", + "checksum": "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsigsegv-2.11-8.fc31.x86_64.rpm", + "checksum": "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsmartcols-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.5", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsolv-0.7.5-3.fc31.x86_64.rpm", + "checksum": "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388", + "check_gpg": true + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.68.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsoup-2.68.2-1.fc31.x86_64.rpm", + "checksum": "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libss-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-0.9.0-6.fc31.x86_64.rpm", + "checksum": "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm", + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_autofs-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:422625da0fbb99cc4da8eebebff892c6e73a87c81a33190f7a17e344f6bb709e", + "check_gpg": true + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_certmap-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:307275b46896d56d23f5da5ab77a299941e77165ff44e846d6620eee1158131c", + "check_gpg": true + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:a1bd1b5a2c47e57957a77d32f4fd705de1df30557837cfbc83b8f284e4ee0456", + "check_gpg": true + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:6c1f9dc11de4d3af4d4c418b4556ee9659011d587e9da44bb039cb30ac326841", + "check_gpg": true + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:e1bda9438577473413f3c7455ce84b6c8486adee3d4473fafcd28309ad8c2913", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libstdc++-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f", + "check_gpg": true + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtalloc-2.3.0-1.fc31.x86_64.rpm", + "checksum": "sha256:9247561bad35a8a2f8269b2bbbd28d1bf5e6fcde1fe78e1fc3c0e712513e9703", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.14", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtasn1-4.14-2.fc31.x86_64.rpm", + "checksum": "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb", + "check_gpg": true + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtdb-1.4.2-1.fc31.x86_64.rpm", + "checksum": "sha256:fccade859cbb884fd61c07433e6c316f794885cbb2186debcff3f6894d16d52c", + "check_gpg": true + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtevent-0.10.1-1.fc31.x86_64.rpm", + "checksum": "sha256:5593277fa685adba864393da8faf76950d6d8fb1483af036cdc08d8437c387bb", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c", + "check_gpg": true + }, + { + "name": "libthai", + "epoch": 0, + "version": "0.1.28", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libthai-0.1.28-3.fc31.x86_64.rpm", + "checksum": "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500", + "check_gpg": true + }, + { + "name": "libtiff", + "epoch": 0, + "version": "4.0.10", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtiff-4.0.10-6.fc31.x86_64.rpm", + "checksum": "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "2.rc3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.x86_64.rpm", + "checksum": "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libunistring-0.9.10-6.fc31.x86_64.rpm", + "checksum": "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.22", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libusbx-1.0.22-4.fc31.x86_64.rpm", + "checksum": "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8", + "check_gpg": true + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuser-0.62-21.fc31.x86_64.rpm", + "checksum": "sha256:95b45de2c57f35df43bff0c2ebe32c64183968b3a41c5673cfeeff5ece506b94", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libutempter-1.1.6-17.fc31.x86_64.rpm", + "checksum": "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuuid-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libverto-0.3.0-8.fc31.x86_64.rpm", + "checksum": "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348", + "check_gpg": true + }, + { + "name": "libwayland-client", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-client-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff", + "check_gpg": true + }, + { + "name": "libwayland-cursor", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce", + "check_gpg": true + }, + { + "name": "libwayland-egl", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9", + "check_gpg": true + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcb-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-4.4.10-1.fc31.x86_64.rpm", + "checksum": "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.10-1.fc31.x86_64.rpm", + "checksum": "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.8.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.x86_64.rpm", + "checksum": "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxml2-2.9.9-3.fc31.x86_64.rpm", + "checksum": "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libyaml-0.2.2-2.fc31.x86_64.rpm", + "checksum": "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libzstd-1.4.2-1.fc31.x86_64.rpm", + "checksum": "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c", + "check_gpg": true + }, + { + "name": "linux-atm-libs", + "epoch": 0, + "version": "2.5.1", + "release": "25.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-25.fc31.x86_64.rpm", + "checksum": "sha256:e405d2edc9b9fc2c13242f0225049b071aa4159d09d8e2d501e8c4fe88a9710b", + "check_gpg": true + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20190923", + "release": "102.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-firmware-20190923-102.fc31.noarch.rpm", + "checksum": "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47", + "check_gpg": true + }, + { + "name": "linux-firmware-whence", + "epoch": 0, + "version": "20190923", + "release": "102.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-firmware-whence-20190923-102.fc31.noarch.rpm", + "checksum": "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70", + "check_gpg": true + }, + { + "name": "lmdb-libs", + "epoch": 0, + "version": "0.9.23", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.23-3.fc31.x86_64.rpm", + "checksum": "sha256:a41579023e1db3dec06679ebc7788ece92686ea2a23c78dd749c98ddbc82d419", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-6.fc31.x86_64.rpm", + "checksum": "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-1.fc31.x86_64.rpm", + "checksum": "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39", + "check_gpg": true + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.8.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/man-db-2.8.4-5.fc31.x86_64.rpm", + "checksum": "sha256:764699ea124f85a7afcf65a2f138e3821770f8aa1ef134e1813e2b04477f0b74", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mkpasswd-5.5.2-1.fc31.x86_64.rpm", + "checksum": "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mpfr-3.1.6-5.fc31.x86_64.rpm", + "checksum": "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-6.1-12.20190803.fc31.x86_64.rpm", + "checksum": "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm", + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.x86_64.rpm", + "checksum": "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106", + "check_gpg": true + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.55.20160912git.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/net-tools-2.0-0.55.20160912git.fc31.x86_64.rpm", + "checksum": "sha256:cf6506ad88ecaab89efde02eee218365a36981114638c03989ba2768457ae335", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nettle-3.5.1-3.fc31.x86_64.rpm", + "checksum": "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc", + "check_gpg": true + }, + { + "name": "nftables", + "epoch": 1, + "version": "0.9.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nftables-0.9.1-3.fc31.x86_64.rpm", + "checksum": "sha256:e9fa9fba03403e709388390a91f4b253e57b8104035f05fabdf4d5c0dd173ce1", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/npth-1.6-3.fc31.x86_64.rpm", + "checksum": "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openldap-2.4.47-3.fc31.x86_64.rpm", + "checksum": "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68", + "check_gpg": true + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-server-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:c3aa4d794cef51ba9fcbf3750baed55aabfa36062a48f61149ccf03364a0d256", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-1.1.1d-2.fc31.x86_64.rpm", + "checksum": "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.x86_64.rpm", + "checksum": "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.x86_64.rpm", + "checksum": "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/os-prober-1.77-3.fc31.x86_64.rpm", + "checksum": "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.x86_64.rpm", + "checksum": "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.x86_64.rpm", + "checksum": "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "18.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pam-1.3.1-18.fc31.x86_64.rpm", + "checksum": "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b", + "check_gpg": true + }, + { + "name": "pango", + "epoch": 0, + "version": "1.44.6", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pango-1.44.6-1.fc31.x86_64.rpm", + "checksum": "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c", + "check_gpg": true + }, + { + "name": "parted", + "epoch": 0, + "version": "3.2.153", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/parted-3.2.153-1.fc31.x86_64.rpm", + "checksum": "sha256:55c47c63deb00a9126c068299c01dfbdd39d58c6962138b862b92f5c7af8c898", + "check_gpg": true + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/passwd-0.80-6.fc31.x86_64.rpm", + "checksum": "sha256:c459092a47bd2f904d9fe830735b512ef97b52785ee12abb2ba5c52465560f18", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.43", + "release": "2.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre-8.43-2.fc31.1.x86_64.rpm", + "checksum": "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.33", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre2-10.33-14.fc31.x86_64.rpm", + "checksum": "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pigz-2.4-5.fc31.x86_64.rpm", + "checksum": "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pinentry-1.1.0-6.fc31.x86_64.rpm", + "checksum": "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976", + "check_gpg": true + }, + { + "name": "pixman", + "epoch": 0, + "version": "0.38.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pixman-0.38.4-1.fc31.x86_64.rpm", + "checksum": "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba", + "check_gpg": true + }, + { + "name": "plymouth", + "epoch": 0, + "version": "0.9.4", + "release": "10.20191001gita8aad27.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/plymouth-0.9.4-10.20191001gita8aad27.fc31.x86_64.rpm", + "checksum": "sha256:5e07e49fdacc1f52b583ee685d03bf5ce045e9d34a323bd26607148a3937a9ce", + "check_gpg": true + }, + { + "name": "plymouth-core-libs", + "epoch": 0, + "version": "0.9.4", + "release": "10.20191001gita8aad27.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/plymouth-core-libs-0.9.4-10.20191001gita8aad27.fc31.x86_64.rpm", + "checksum": "sha256:561014bd90810d512b4098c8e1d3ca05aa8c6a74bc258b3b7e3e2fd36a1ed157", + "check_gpg": true + }, + { + "name": "plymouth-scripts", + "epoch": 0, + "version": "0.9.4", + "release": "10.20191001gita8aad27.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/plymouth-scripts-0.9.4-10.20191001gita8aad27.fc31.x86_64.rpm", + "checksum": "sha256:bd72cac3d1ef93cff067070925e5f339c720bef82c5ade4477388636fef53b91", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/policycoreutils-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c", + "check_gpg": true + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.116", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/polkit-libs-0.116-4.fc31.x86_64.rpm", + "checksum": "sha256:118548479396b007a80bc98e8cef770ea242ef6b20cd2922d595acd4c100946d", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "18.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/popt-1.16-18.fc31.x86_64.rpm", + "checksum": "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-6.fc31.x86_64.rpm", + "checksum": "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm", + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm", + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-3.7.4-5.fc31.x86_64.rpm", + "checksum": "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9", + "check_gpg": true + }, + { + "name": "python3-asn1crypto", + "epoch": 0, + "version": "0.24.0", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-asn1crypto-0.24.0-7.fc31.noarch.rpm", + "checksum": "sha256:73a7249de97f0ad66bc1a867ac5b5d08b741ab152d4dd7ce45cc231d64126b58", + "check_gpg": true + }, + { + "name": "python3-attrs", + "epoch": 0, + "version": "19.1.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-attrs-19.1.0-2.fc31.noarch.rpm", + "checksum": "sha256:4cca3f986ddbd38cfbfb6d1c8d336a1aaed78f7da1f38356ce1e034ba35ec492", + "check_gpg": true + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm", + "checksum": "sha256:9fea00b14943cac0e3b11ff3a319765168cf78b3cc58fdee7d5fe48246a0aa4d", + "check_gpg": true + }, + { + "name": "python3-babel", + "epoch": 0, + "version": "2.7.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-babel-2.7.0-2.fc31.noarch.rpm", + "checksum": "sha256:e17ef6f7d4f1869ff5813d6f8f2983cd6f5cd23d4a666b7ae19154636e911644", + "check_gpg": true + }, + { + "name": "python3-cffi", + "epoch": 0, + "version": "1.12.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-cffi-1.12.3-1.fc31.x86_64.rpm", + "checksum": "sha256:7fc8df6b10728f46c3e752c35f6777f17025bef30f61c67f76de2538888a5546", + "check_gpg": true + }, + { + "name": "python3-chardet", + "epoch": 0, + "version": "3.0.4", + "release": "10.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-chardet-3.0.4-10.fc31.noarch.rpm", + "checksum": "sha256:ee6dbb4914a35ee8a816ecde34d29221e3f4622324f6287c328e8ac22ae572ad", + "check_gpg": true + }, + { + "name": "python3-configobj", + "epoch": 0, + "version": "5.0.6", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-configobj-5.0.6-16.fc31.noarch.rpm", + "checksum": "sha256:cdc526097cd2fecb75e44ad11a69b10eb7804f310298c064c3b931515d4f3d5c", + "check_gpg": true + }, + { + "name": "python3-cryptography", + "epoch": 0, + "version": "2.6.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-cryptography-2.6.1-2.fc31.x86_64.rpm", + "checksum": "sha256:2e588b5133dc8cb26ff0226f66eb1be440c6b784ec6fa67a5f0516d8ccaf46f5", + "check_gpg": true + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.8.0", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-3.fc31.noarch.rpm", + "checksum": "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653", + "check_gpg": true + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.8", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dbus-1.2.8-6.fc31.x86_64.rpm", + "checksum": "sha256:35c348bcd91fa114ad459b888131e5e5509259cffce33f22c44f92e57e9e5919", + "check_gpg": true + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.4.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-decorator-4.4.0-2.fc31.noarch.rpm", + "checksum": "sha256:63ff108f557096a9724053c37e37d3c2af1a1ec0b33124480b3742ff3da46292", + "check_gpg": true + }, + { + "name": "python3-distro", + "epoch": 0, + "version": "1.4.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-2.fc31.noarch.rpm", + "checksum": "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.9", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-plugins-core-4.0.9-1.fc31.noarch.rpm", + "checksum": "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02", + "check_gpg": true + }, + { + "name": "python3-firewall", + "epoch": 0, + "version": "0.7.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-firewall-0.7.2-1.fc31.noarch.rpm", + "checksum": "sha256:a349c40034b5a181cab1bd409384ddb901c274e110b16721d434f5bf42e92c0f", + "check_gpg": true + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.34.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gobject-base-3.34.0-3.fc31.x86_64.rpm", + "checksum": "sha256:6807ac3ae6b7c0ea3a085106cedb687f79edfda500feb747039dc112ed3c518f", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552", + "check_gpg": true + }, + { + "name": "python3-idna", + "epoch": 0, + "version": "2.8", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-idna-2.8-2.fc31.noarch.rpm", + "checksum": "sha256:8221111dc9a9aa5c68805f153c3fbe5314c8a0f335af29685733b958253dd278", + "check_gpg": true + }, + { + "name": "python3-jinja2", + "epoch": 0, + "version": "2.10.1", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jinja2-2.10.1-2.fc31.noarch.rpm", + "checksum": "sha256:1135e96b6f9ed29e4ed4c0f060876891a244442a503f0b18ab238589da20d464", + "check_gpg": true + }, + { + "name": "python3-jsonpatch", + "epoch": 0, + "version": "1.21", + "release": "8.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jsonpatch-1.21-8.fc31.noarch.rpm", + "checksum": "sha256:e98119ac7a707287668e7a9a74ef2809ee5f555af04f52775367e428e08dbb33", + "check_gpg": true + }, + { + "name": "python3-jsonpointer", + "epoch": 0, + "version": "1.10", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jsonpointer-1.10-16.fc31.noarch.rpm", + "checksum": "sha256:2d9a2e736dd5231df3c5c748ce0ba5a75a409dacfe73f14676781f32d565a7df", + "check_gpg": true + }, + { + "name": "python3-jsonschema", + "epoch": 0, + "version": "3.0.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jsonschema-3.0.2-1.fc31.noarch.rpm", + "checksum": "sha256:047f9e29fcfa56be98ca3f42249f3ccb2a93df99f2438e3983e2064025f0d79d", + "check_gpg": true + }, + { + "name": "python3-jwt", + "epoch": 0, + "version": "1.7.1", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jwt-1.7.1-3.fc31.noarch.rpm", + "checksum": "sha256:143c50c0663f963c7689c1cec43b81cf1433d5d3b67eb8233ba06506c1b3e095", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.x86_64.rpm", + "checksum": "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libs-3.7.4-5.fc31.x86_64.rpm", + "checksum": "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1", + "check_gpg": true + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libselinux-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:ca6a71888b8d147342012c64533f61a41b26c788bbcd2844a2164ee007fac981", + "check_gpg": true + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libsemanage-2.9-3.fc31.x86_64.rpm", + "checksum": "sha256:a7071aa0068c9dff913c5f0523be3ffdd7f67b8f13e1ee2aa16e486b01aecc1c", + "check_gpg": true + }, + { + "name": "python3-markupsafe", + "epoch": 0, + "version": "1.1.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-markupsafe-1.1.1-2.fc31.x86_64.rpm", + "checksum": "sha256:5d8d55e12443628c7a1915648845663e4aed1863805854de0adadd89772eda2a", + "check_gpg": true + }, + { + "name": "python3-oauthlib", + "epoch": 0, + "version": "3.0.2", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-oauthlib-3.0.2-2.fc31.noarch.rpm", + "checksum": "sha256:f85469c0c19ce86e8fdd0dd5a3e6e5c9b78e3436ae9ce70ba86b2b4a3794f693", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "name": "python3-ply", + "epoch": 0, + "version": "3.11", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-ply-3.11-3.fc31.noarch.rpm", + "checksum": "sha256:1b65944efe48ba0cca34011891480a1db29a7e95dad058376bfca34d68fb0791", + "check_gpg": true + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-policycoreutils-2.9-5.fc31.noarch.rpm", + "checksum": "sha256:5a7e957102a23c9924398fe45f5cdec66edcd10adcad7130d6ebf02c2706ad49", + "check_gpg": true + }, + { + "name": "python3-prettytable", + "epoch": 0, + "version": "0.7.2", + "release": "18.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-prettytable-0.7.2-18.fc31.noarch.rpm", + "checksum": "sha256:682af90a049fa78429d5ebd194700609f762e59ceb6c4ca28b17e7f4fd1683aa", + "check_gpg": true + }, + { + "name": "python3-pycparser", + "epoch": 0, + "version": "2.14", + "release": "20.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pycparser-2.14-20.fc31.noarch.rpm", + "checksum": "sha256:6ed7f318c5e93b59254d7b7652131f33db713eeb61f52413f21e533069ed24bf", + "check_gpg": true + }, + { + "name": "python3-pyrsistent", + "epoch": 0, + "version": "0.15.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyrsistent-0.15.4-1.fc31.x86_64.rpm", + "checksum": "sha256:fa979526906cc9182ebdb6e50c9d09deba8518f69750495fec4267a425c8f783", + "check_gpg": true + }, + { + "name": "python3-pyserial", + "epoch": 0, + "version": "3.4", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyserial-3.4-3.fc31.noarch.rpm", + "checksum": "sha256:32cc578c8da626a8c1a5316a59d482967a32547be6c077f73fb90e11fb0f1e6a", + "check_gpg": true + }, + { + "name": "python3-pysocks", + "epoch": 0, + "version": "1.7.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pysocks-1.7.0-2.fc31.noarch.rpm", + "checksum": "sha256:d54f02fc39b3e87253808f665918d26ffe901f1228e25121c908661b47ba266b", + "check_gpg": true + }, + { + "name": "python3-pytz", + "epoch": 0, + "version": "2019.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pytz-2019.2-1.fc31.noarch.rpm", + "checksum": "sha256:6c6f1152899318bdc0500cfb0b0cdbbc19ba0e017b5888ece1358250caa2629f", + "check_gpg": true + }, + { + "name": "python3-pyyaml", + "epoch": 0, + "version": "5.1.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyyaml-5.1.2-1.fc31.x86_64.rpm", + "checksum": "sha256:a6bab7030d3296875cb0cad2c30fb18042dab8ae070c9c6f97457bb0a5cc6316", + "check_gpg": true + }, + { + "name": "python3-requests", + "epoch": 0, + "version": "2.22.0", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-requests-2.22.0-3.fc31.noarch.rpm", + "checksum": "sha256:1e049e86c5dd5c4d6737d47dd194d553ffbd65c81a4077cf6e1029a0fde80fb5", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-rpm-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444", + "check_gpg": true + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setools-4.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:aacf84989a0fe55366f6d37ddd1753b8c06e5640e9334805bf468777824a3ac0", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.12.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-six-1.12.0-2.fc31.noarch.rpm", + "checksum": "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142", + "check_gpg": true + }, + { + "name": "python3-slip", + "epoch": 0, + "version": "0.6.4", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-slip-0.6.4-16.fc31.noarch.rpm", + "checksum": "sha256:b1094a9a9725546315d6eac7f792d5875a5f0c950cd84e43fc2fbb3e639ee43e", + "check_gpg": true + }, + { + "name": "python3-slip-dbus", + "epoch": 0, + "version": "0.6.4", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-slip-dbus-0.6.4-16.fc31.noarch.rpm", + "checksum": "sha256:bd2e7c9e3df976723ade08f16667b31044b678e62ee29e024ad193af6d9a28e1", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-unbound-1.9.3-1.fc31.x86_64.rpm", + "checksum": "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7", + "check_gpg": true + }, + { + "name": "python3-urllib3", + "epoch": 0, + "version": "1.25.3", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-urllib3-1.25.3-4.fc31.noarch.rpm", + "checksum": "sha256:78b600621e00f4a0acc8f58de056ae9393ce4e1cded56837b4e557c1bc84b06b", + "check_gpg": true + }, + { + "name": "qemu-guest-agent", + "epoch": 2, + "version": "4.1.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qemu-guest-agent-4.1.0-2.fc31.x86_64.rpm", + "checksum": "sha256:41edf2ba208309eb1cde80d5d227c4fdf43906ef47ed76aa37a51c344dfed3ee", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.x86_64.rpm", + "checksum": "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/readline-8.0-3.fc31.x86_64.rpm", + "checksum": "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc", + "check_gpg": true + }, + { + "name": "rest", + "epoch": 0, + "version": "0.8.1", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rest-0.8.1-6.fc31.x86_64.rpm", + "checksum": "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e", + "check_gpg": true + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rootfiles-8.1-25.fc31.noarch.rpm", + "checksum": "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:f50957375c79be57f391625b97d6ea74505e05f2edc6b9bc6768d5e3ad6ef8f8", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sed-4.5-4.fc31.x86_64.rpm", + "checksum": "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.4", + "release": "37.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/selinux-policy-3.14.4-37.fc31.noarch.rpm", + "checksum": "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.4", + "release": "37.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.4-37.fc31.noarch.rpm", + "checksum": "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.3", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm", + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "16.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shadow-utils-4.6-16.fc31.x86_64.rpm", + "checksum": "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.14", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shared-mime-info-1.14-1.fc31.x86_64.rpm", + "checksum": "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071", + "check_gpg": true + }, + { + "name": "spice-vdagent", + "epoch": 0, + "version": "0.19.0", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/spice-vdagent-0.19.0-4.fc31.x86_64.rpm", + "checksum": "sha256:38b735944048f8f2d2fcea5f36292b7ef25c849636d6c16b7fc1e956285f9d92", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.29.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.x86_64.rpm", + "checksum": "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2", + "check_gpg": true + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-client-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:687d00eb0b77446dbd78aaa0f4f99cc080c677930ad783120483614255264a3d", + "check_gpg": true + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-common-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:6b694ee239a2e3f38c401e975de392e3731ad8b18be5a3249ea02f19e87cb5cb", + "check_gpg": true + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-kcm-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:93161df6d62fe654c7cdba9ae36343d2549b437b27eac816a80f8d7c32a47162", + "check_gpg": true + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-nfs-idmap-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:4f9bbd08f6019b3482342d616d6b04e6481924ea34fbfe8d30ef63402a92e9b1", + "check_gpg": true + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.8.28", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sudo-1.8.28-1.fc31.x86_64.rpm", + "checksum": "sha256:704ebfc50ace9417ed28f4530d778359a4c2f95d524c2e99346472245e30b548", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5", + "check_gpg": true + }, + { + "name": "systemd-bootchart", + "epoch": 0, + "version": "233", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-bootchart-233-5.fc31.x86_64.rpm", + "checksum": "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm", + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-udev-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tss2-1331-2.fc31.x86_64.rpm", + "checksum": "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm", + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/unbound-libs-1.9.3-1.fc31.x86_64.rpm", + "checksum": "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/util-linux-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f", + "check_gpg": true + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.1.2102", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/v/vim-minimal-8.1.2102-1.fc31.x86_64.rpm", + "checksum": "sha256:d2c819a7e607a9e22f55047ed03d064e4b0f125ad4fb20532c543a6d8af8bfa5", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "15.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/which-2.21-15.fc31.x86_64.rpm", + "checksum": "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm", + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "name": "xen-libs", + "epoch": 0, + "version": "4.12.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xen-libs-4.12.1-1.fc31.x86_64.rpm", + "checksum": "sha256:57d472b7ca59119fc581b50b2fe8a293f33bfe497ec65fe5e5dcedad8c1b7396", + "check_gpg": true + }, + { + "name": "xen-licenses", + "epoch": 0, + "version": "4.12.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xen-licenses-4.12.1-1.fc31.x86_64.rpm", + "checksum": "sha256:485348573bd4666bedac7a15d4a0dd0cac241ac18f8f62871dae176b44a5114d", + "check_gpg": true + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.1.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xfsprogs-5.1.0-2.fc31.x86_64.rpm", + "checksum": "sha256:b3c4cfdf820225133f4e9e600de3300ef0c7bac34139433505dd4482da52be22", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.27", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm", + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-5.2.4-6.fc31.x86_64.rpm", + "checksum": "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-libs-5.2.4-6.fc31.x86_64.rpm", + "checksum": "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431", + "check_gpg": true + }, + { + "name": "yajl", + "epoch": 0, + "version": "2.1.0", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/y/yajl-2.1.0-13.fc31.x86_64.rpm", + "checksum": "sha256:3597ed358e421f7dc161d2f263e7e36c61aa1b4c9e547ed94ab5db2bd35f42de", + "check_gpg": true + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/y/yum-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.2", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.x86_64.rpm", + "checksum": "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "19.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zlib-1.2.11-19.fc31.x86_64.rpm", + "checksum": "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9", + "check_gpg": true + } + ], + "checksums": { + "0": "sha256:e39c033883bf8520576de0b0875b5c8cfc40d04f1a0aaf01f1edf57267807580" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac ro biosdevname=0 net.ifnames=0" + }, + "bootloader": "grub", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "initrd": "/boot/initramfs-5.3.7-301.fc31.x86_64.img", + "linux": "/boot/vmlinuz-5.3.7-301.fc31.x86_64", + "options": "$kernelopts", + "title": "Fedora (5.3.7-301.fc31.x86_64) 31 (Thirty One)", + "version": "5.3.7-301.fc31.x86_64" + } + ], + "firewall-enabled": [ + "ssh", + "mdns", + "dhcpv6-client" + ], + "fstab": [ + [ + "UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "/", + "ext4", + "defaults", + "1", + "1" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:993:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:997:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "redhat:x:1000:", + "render:x:996:", + "root:x:0:", + "ssh_keys:x:998:", + "sshd:x:74:", + "sys:x:3:", + "systemd-coredump:x:995:", + "systemd-journal:x:190:", + "systemd-network:x:192:", + "systemd-resolve:x:193:", + "systemd-timesync:x:994:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:999:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "qcow2", + "os-release": { + "ANSI_COLOR": "0;34", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:fedoraproject:fedora:31", + "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f31/system-administrators-guide/", + "HOME_URL": "https://fedoraproject.org/", + "ID": "fedora", + "LOGO": "fedora-logo-icon", + "NAME": "Fedora", + "PLATFORM_ID": "platform:f31", + "PRETTY_NAME": "Fedora 31 (Thirty One)", + "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy", + "REDHAT_BUGZILLA_PRODUCT": "Fedora", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "31", + "REDHAT_SUPPORT_PRODUCT": "Fedora", + "REDHAT_SUPPORT_PRODUCT_VERSION": "31", + "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help", + "VERSION": "31 (Thirty One)", + "VERSION_CODENAME": "", + "VERSION_ID": "31" + }, + "packages": [ + "NetworkManager-1.20.4-1.fc31.x86_64", + "NetworkManager-libnm-1.20.4-1.fc31.x86_64", + "abattis-cantarell-fonts-0.111-3.fc31.noarch", + "acl-2.2.53-4.fc31.x86_64", + "adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch", + "adwaita-cursor-theme-3.34.0-1.fc31.noarch", + "adwaita-icon-theme-3.34.0-1.fc31.noarch", + "alsa-lib-1.1.9-2.fc31.x86_64", + "alternatives-1.11-5.fc31.x86_64", + "at-spi2-atk-2.34.1-1.fc31.x86_64", + "at-spi2-core-2.34.0-1.fc31.x86_64", + "atk-2.34.1-1.fc31.x86_64", + "audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64", + "audit-libs-3.0-0.12.20190507gitf58ec40.fc31.x86_64", + "avahi-libs-0.7-20.fc31.x86_64", + "basesystem-11-8.fc31.noarch", + "bash-5.0.7-3.fc31.x86_64", + "brotli-1.0.7-6.fc31.x86_64", + "bzip2-libs-1.0.8-1.fc31.x86_64", + "c-ares-1.15.0-4.fc31.x86_64", + "ca-certificates-2019.2.32-3.fc31.noarch", + "cairo-1.16.0-6.fc31.x86_64", + "cairo-gobject-1.16.0-6.fc31.x86_64", + "checkpolicy-2.9-2.fc31.x86_64", + "chrony-3.5-4.fc31.x86_64", + "cloud-init-17.1-11.fc31.noarch", + "colord-libs-1.4.4-2.fc31.x86_64", + "coreutils-8.31-4.fc31.x86_64", + "coreutils-common-8.31-4.fc31.x86_64", + "cpio-2.12-12.fc31.x86_64", + "cracklib-2.9.6-21.fc31.x86_64", + "cracklib-dicts-2.9.6-21.fc31.x86_64", + "crypto-policies-20190816-4.gitbb9bf99.fc31.noarch", + "cryptsetup-libs-2.2.1-1.fc31.x86_64", + "cups-libs-2.2.12-2.fc31.x86_64", + "curl-7.66.0-1.fc31.x86_64", + "cyrus-sasl-lib-2.1.27-2.fc31.x86_64", + "dbus-1.12.16-3.fc31.x86_64", + "dbus-broker-21-6.fc31.x86_64", + "dbus-common-1.12.16-3.fc31.noarch", + "dbus-libs-1.12.16-3.fc31.x86_64", + "dconf-0.34.0-1.fc31.x86_64", + "dejavu-fonts-common-2.37-2.fc31.noarch", + "dejavu-sans-fonts-2.37-2.fc31.noarch", + "deltarpm-3.6.2-2.fc31.x86_64", + "device-mapper-1.02.163-2.fc31.x86_64", + "device-mapper-libs-1.02.163-2.fc31.x86_64", + "dhcp-client-4.4.1-15.fc31.x86_64", + "dhcp-common-4.4.1-15.fc31.noarch", + "diffutils-3.7-3.fc31.x86_64", + "dnf-4.2.9-5.fc31.noarch", + "dnf-data-4.2.9-5.fc31.noarch", + "dnf-plugins-core-4.0.9-1.fc31.noarch", + "dracut-049-27.git20181204.fc31.1.x86_64", + "dracut-config-generic-049-27.git20181204.fc31.1.x86_64", + "e2fsprogs-1.45.3-1.fc31.x86_64", + "e2fsprogs-libs-1.45.3-1.fc31.x86_64", + "ebtables-legacy-2.0.10-37.fc31.x86_64", + "elfutils-default-yama-scope-0.177-1.fc31.noarch", + "elfutils-libelf-0.177-1.fc31.x86_64", + "elfutils-libs-0.177-1.fc31.x86_64", + "expat-2.2.8-1.fc31.x86_64", + "fedora-gpg-keys-31-1.noarch", + "fedora-release-31-1.noarch", + "fedora-release-common-31-1.noarch", + "fedora-repos-31-1.noarch", + "file-5.37-3.fc31.x86_64", + "file-libs-5.37-3.fc31.x86_64", + "filesystem-3.12-2.fc31.x86_64", + "findutils-4.6.0-24.fc31.x86_64", + "fipscheck-1.5.0-7.fc31.x86_64", + "fipscheck-lib-1.5.0-7.fc31.x86_64", + "firewalld-0.7.2-1.fc31.noarch", + "firewalld-filesystem-0.7.2-1.fc31.noarch", + "fontconfig-2.13.92-3.fc31.x86_64", + "fontpackages-filesystem-1.44-25.fc31.noarch", + "freetype-2.10.0-3.fc31.x86_64", + "fribidi-1.0.5-4.fc31.x86_64", + "fuse-libs-2.9.9-8.fc31.x86_64", + "gawk-5.0.1-5.fc31.x86_64", + "gcr-3.33.4-1.fc31.x86_64", + "gcr-base-3.33.4-1.fc31.x86_64", + "gdbm-libs-1.18.1-1.fc31.x86_64", + "gdk-pixbuf2-2.40.0-1.fc31.x86_64", + "gdk-pixbuf2-modules-2.40.0-1.fc31.x86_64", + "geolite2-city-20190806-1.fc31.noarch", + "geolite2-country-20190806-1.fc31.noarch", + "gettext-0.20.1-2.fc31.x86_64", + "gettext-libs-0.20.1-2.fc31.x86_64", + "glib-networking-2.62.1-1.fc31.x86_64", + "glib2-2.62.1-1.fc31.x86_64", + "glibc-2.30-5.fc31.x86_64", + "glibc-common-2.30-5.fc31.x86_64", + "glibc-langpack-en-2.30-5.fc31.x86_64", + "gmp-6.1.2-10.fc31.x86_64", + "gnome-keyring-3.34.0-1.fc31.x86_64", + "gnupg2-2.2.17-2.fc31.x86_64", + "gnupg2-smime-2.2.17-2.fc31.x86_64", + "gnutls-3.6.10-1.fc31.x86_64", + "gobject-introspection-1.62.0-1.fc31.x86_64", + "gpg-pubkey-3c3359c4-5c6ae44d", + "gpgme-1.13.1-3.fc31.x86_64", + "graphite2-1.3.13-1.fc31.x86_64", + "grep-3.3-3.fc31.x86_64", + "groff-base-1.22.3-20.fc31.x86_64", + "grub2-common-2.02-100.fc31.noarch", + "grub2-pc-2.02-100.fc31.x86_64", + "grub2-pc-modules-2.02-100.fc31.noarch", + "grub2-tools-2.02-100.fc31.x86_64", + "grub2-tools-extra-2.02-100.fc31.x86_64", + "grub2-tools-minimal-2.02-100.fc31.x86_64", + "gsettings-desktop-schemas-3.34.0-1.fc31.x86_64", + "gtk-update-icon-cache-3.24.12-3.fc31.x86_64", + "gtk3-3.24.12-3.fc31.x86_64", + "gzip-1.10-1.fc31.x86_64", + "harfbuzz-2.6.1-2.fc31.x86_64", + "hicolor-icon-theme-0.17-7.fc31.noarch", + "hostname-3.20-9.fc31.x86_64", + "hwdata-0.328-1.fc31.noarch", + "ima-evm-utils-1.2.1-2.fc31.x86_64", + "initscripts-10.02-2.fc31.x86_64", + "ipcalc-0.2.5-3.fc31.x86_64", + "iproute-5.3.0-1.fc31.x86_64", + "iproute-tc-5.3.0-1.fc31.x86_64", + "ipset-7.3-1.fc31.x86_64", + "ipset-libs-7.3-1.fc31.x86_64", + "iptables-1.8.3-5.fc31.x86_64", + "iptables-libs-1.8.3-5.fc31.x86_64", + "iputils-20190515-3.fc31.x86_64", + "jansson-2.12-4.fc31.x86_64", + "jasper-libs-2.0.14-9.fc31.x86_64", + "jbigkit-libs-2.1-17.fc31.x86_64", + "json-c-0.13.1-6.fc31.x86_64", + "json-glib-1.4.4-3.fc31.x86_64", + "kbd-2.0.4-14.fc31.x86_64", + "kbd-legacy-2.0.4-14.fc31.noarch", + "kbd-misc-2.0.4-14.fc31.noarch", + "kernel-5.3.7-301.fc31.x86_64", + "kernel-core-5.3.7-301.fc31.x86_64", + "kernel-modules-5.3.7-301.fc31.x86_64", + "keyutils-libs-1.6-3.fc31.x86_64", + "kmod-26-4.fc31.x86_64", + "kmod-libs-26-4.fc31.x86_64", + "kpartx-0.8.0-3.fc31.x86_64", + "krb5-libs-1.17-45.fc31.x86_64", + "langpacks-core-en-2.0-7.fc31.noarch", + "langpacks-en-2.0-7.fc31.noarch", + "lcms2-2.9-6.fc31.x86_64", + "less-551-2.fc31.x86_64", + "libX11-1.6.8-3.fc31.x86_64", + "libX11-common-1.6.8-3.fc31.noarch", + "libXau-1.0.9-2.fc31.x86_64", + "libXcomposite-0.4.4-17.fc31.x86_64", + "libXcursor-1.1.15-6.fc31.x86_64", + "libXdamage-1.1.4-17.fc31.x86_64", + "libXext-1.3.4-2.fc31.x86_64", + "libXfixes-5.0.3-10.fc31.x86_64", + "libXft-2.3.3-2.fc31.x86_64", + "libXi-1.7.10-2.fc31.x86_64", + "libXinerama-1.1.4-4.fc31.x86_64", + "libXrandr-1.5.2-2.fc31.x86_64", + "libXrender-0.9.10-10.fc31.x86_64", + "libXtst-1.2.3-10.fc31.x86_64", + "libacl-2.2.53-4.fc31.x86_64", + "libarchive-3.4.0-1.fc31.x86_64", + "libargon2-20171227-3.fc31.x86_64", + "libassuan-2.5.3-2.fc31.x86_64", + "libattr-2.4.48-7.fc31.x86_64", + "libbasicobjects-0.1.1-43.fc31.x86_64", + "libblkid-2.34-3.fc31.x86_64", + "libcap-2.26-6.fc31.x86_64", + "libcap-ng-0.7.9-8.fc31.x86_64", + "libcollection-0.7.0-43.fc31.x86_64", + "libcom_err-1.45.3-1.fc31.x86_64", + "libcomps-0.1.11-3.fc31.x86_64", + "libcroco-0.6.13-2.fc31.x86_64", + "libcurl-7.66.0-1.fc31.x86_64", + "libdatrie-0.2.9-10.fc31.x86_64", + "libdb-5.3.28-38.fc31.x86_64", + "libdb-utils-5.3.28-38.fc31.x86_64", + "libdhash-0.5.0-43.fc31.x86_64", + "libdnf-0.35.3-6.fc31.x86_64", + "libdrm-2.4.99-2.fc31.x86_64", + "libedit-3.1-28.20190324cvs.fc31.x86_64", + "libepoxy-1.5.3-4.fc31.x86_64", + "libevent-2.1.8-7.fc31.x86_64", + "libfdisk-2.34-3.fc31.x86_64", + "libffi-3.1-23.fc31.x86_64", + "libgcc-9.2.1-1.fc31.x86_64", + "libgcrypt-1.8.5-1.fc31.x86_64", + "libgomp-9.2.1-1.fc31.x86_64", + "libgpg-error-1.36-2.fc31.x86_64", + "libgusb-0.3.0-5.fc31.x86_64", + "libidn2-2.2.0-2.fc31.x86_64", + "libini_config-1.3.1-43.fc31.x86_64", + "libjpeg-turbo-2.0.2-4.fc31.x86_64", + "libkcapi-1.1.5-1.fc31.x86_64", + "libkcapi-hmaccalc-1.1.5-1.fc31.x86_64", + "libksba-1.3.5-10.fc31.x86_64", + "libldb-2.0.7-1.fc31.x86_64", + "libmaxminddb-1.2.0-8.fc31.x86_64", + "libmetalink-0.1.3-9.fc31.x86_64", + "libmnl-1.0.4-10.fc31.x86_64", + "libmodman-2.0.1-20.fc31.x86_64", + "libmodulemd1-1.8.15-3.fc31.x86_64", + "libmount-2.34-3.fc31.x86_64", + "libndp-1.7-4.fc31.x86_64", + "libnetfilter_conntrack-1.0.7-3.fc31.x86_64", + "libnfnetlink-1.0.1-16.fc31.x86_64", + "libnfsidmap-2.4.1-1.rc1.fc31.x86_64", + "libnftnl-1.1.3-2.fc31.x86_64", + "libnghttp2-1.39.2-1.fc31.x86_64", + "libnl3-3.5.0-1.fc31.x86_64", + "libnsl2-1.2.0-5.20180605git4a062cf.fc31.x86_64", + "libpath_utils-0.2.1-43.fc31.x86_64", + "libpcap-1.9.0-4.fc31.x86_64", + "libpciaccess-0.15-2.fc31.x86_64", + "libpipeline-1.5.1-3.fc31.x86_64", + "libpng-1.6.37-2.fc31.x86_64", + "libproxy-0.4.15-14.fc31.x86_64", + "libpsl-0.21.0-2.fc31.x86_64", + "libpwquality-1.4.1-1.fc31.x86_64", + "libref_array-0.1.5-43.fc31.x86_64", + "librepo-1.10.5-1.fc31.x86_64", + "libreport-filesystem-2.10.1-2.fc31.noarch", + "libseccomp-2.4.1-1.fc31.x86_64", + "libsecret-0.19.1-1.fc31.x86_64", + "libselinux-2.9-5.fc31.x86_64", + "libselinux-utils-2.9-5.fc31.x86_64", + "libsemanage-2.9-3.fc31.x86_64", + "libsepol-2.9-2.fc31.x86_64", + "libsigsegv-2.11-8.fc31.x86_64", + "libsmartcols-2.34-3.fc31.x86_64", + "libsolv-0.7.5-3.fc31.x86_64", + "libsoup-2.68.2-1.fc31.x86_64", + "libss-1.45.3-1.fc31.x86_64", + "libssh-0.9.0-6.fc31.x86_64", + "libssh-config-0.9.0-6.fc31.noarch", + "libsss_autofs-2.2.2-1.fc31.x86_64", + "libsss_certmap-2.2.2-1.fc31.x86_64", + "libsss_idmap-2.2.2-1.fc31.x86_64", + "libsss_nss_idmap-2.2.2-1.fc31.x86_64", + "libsss_sudo-2.2.2-1.fc31.x86_64", + "libstdc++-9.2.1-1.fc31.x86_64", + "libtalloc-2.3.0-1.fc31.x86_64", + "libtasn1-4.14-2.fc31.x86_64", + "libtdb-1.4.2-1.fc31.x86_64", + "libtevent-0.10.1-1.fc31.x86_64", + "libtextstyle-0.20.1-2.fc31.x86_64", + "libthai-0.1.28-3.fc31.x86_64", + "libtiff-4.0.10-6.fc31.x86_64", + "libtirpc-1.1.4-2.rc3.fc31.x86_64", + "libunistring-0.9.10-6.fc31.x86_64", + "libusbx-1.0.22-4.fc31.x86_64", + "libuser-0.62-21.fc31.x86_64", + "libutempter-1.1.6-17.fc31.x86_64", + "libuuid-2.34-3.fc31.x86_64", + "libverto-0.3.0-8.fc31.x86_64", + "libwayland-client-1.17.0-2.fc31.x86_64", + "libwayland-cursor-1.17.0-2.fc31.x86_64", + "libwayland-egl-1.17.0-2.fc31.x86_64", + "libxcb-1.13.1-3.fc31.x86_64", + "libxcrypt-4.4.10-1.fc31.x86_64", + "libxcrypt-compat-4.4.10-1.fc31.x86_64", + "libxkbcommon-0.8.4-2.fc31.x86_64", + "libxml2-2.9.9-3.fc31.x86_64", + "libyaml-0.2.2-2.fc31.x86_64", + "libzstd-1.4.2-1.fc31.x86_64", + "linux-atm-libs-2.5.1-25.fc31.x86_64", + "linux-firmware-20190923-102.fc31.noarch", + "linux-firmware-whence-20190923-102.fc31.noarch", + "lmdb-libs-0.9.23-3.fc31.x86_64", + "lua-libs-5.3.5-6.fc31.x86_64", + "lz4-libs-1.9.1-1.fc31.x86_64", + "man-db-2.8.4-5.fc31.x86_64", + "mkpasswd-5.5.2-1.fc31.x86_64", + "mpfr-3.1.6-5.fc31.x86_64", + "ncurses-6.1-12.20190803.fc31.x86_64", + "ncurses-base-6.1-12.20190803.fc31.noarch", + "ncurses-libs-6.1-12.20190803.fc31.x86_64", + "net-tools-2.0-0.55.20160912git.fc31.x86_64", + "nettle-3.5.1-3.fc31.x86_64", + "nftables-0.9.1-3.fc31.x86_64", + "npth-1.6-3.fc31.x86_64", + "openldap-2.4.47-3.fc31.x86_64", + "openssh-8.0p1-8.fc31.1.x86_64", + "openssh-clients-8.0p1-8.fc31.1.x86_64", + "openssh-server-8.0p1-8.fc31.1.x86_64", + "openssl-1.1.1d-2.fc31.x86_64", + "openssl-libs-1.1.1d-2.fc31.x86_64", + "openssl-pkcs11-0.4.10-2.fc31.x86_64", + "os-prober-1.77-3.fc31.x86_64", + "p11-kit-0.23.16.1-2.fc31.x86_64", + "p11-kit-trust-0.23.16.1-2.fc31.x86_64", + "pam-1.3.1-18.fc31.x86_64", + "pango-1.44.6-1.fc31.x86_64", + "parted-3.2.153-1.fc31.x86_64", + "passwd-0.80-6.fc31.x86_64", + "pcre-8.43-2.fc31.1.x86_64", + "pcre2-10.33-14.fc31.x86_64", + "pigz-2.4-5.fc31.x86_64", + "pinentry-1.1.0-6.fc31.x86_64", + "pixman-0.38.4-1.fc31.x86_64", + "plymouth-0.9.4-10.20191001gita8aad27.fc31.x86_64", + "plymouth-core-libs-0.9.4-10.20191001gita8aad27.fc31.x86_64", + "plymouth-scripts-0.9.4-10.20191001gita8aad27.fc31.x86_64", + "policycoreutils-2.9-5.fc31.x86_64", + "polkit-libs-0.116-4.fc31.x86_64", + "popt-1.16-18.fc31.x86_64", + "procps-ng-3.3.15-6.fc31.x86_64", + "publicsuffix-list-dafsa-20190417-2.fc31.noarch", + "python-pip-wheel-19.1.1-4.fc31.noarch", + "python-setuptools-wheel-41.2.0-1.fc31.noarch", + "python-unversioned-command-3.7.4-5.fc31.noarch", + "python3-3.7.4-5.fc31.x86_64", + "python3-asn1crypto-0.24.0-7.fc31.noarch", + "python3-attrs-19.1.0-2.fc31.noarch", + "python3-audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64", + "python3-babel-2.7.0-2.fc31.noarch", + "python3-cffi-1.12.3-1.fc31.x86_64", + "python3-chardet-3.0.4-10.fc31.noarch", + "python3-configobj-5.0.6-16.fc31.noarch", + "python3-cryptography-2.6.1-2.fc31.x86_64", + "python3-dateutil-2.8.0-3.fc31.noarch", + "python3-dbus-1.2.8-6.fc31.x86_64", + "python3-decorator-4.4.0-2.fc31.noarch", + "python3-distro-1.4.0-2.fc31.noarch", + "python3-dnf-4.2.9-5.fc31.noarch", + "python3-dnf-plugins-core-4.0.9-1.fc31.noarch", + "python3-firewall-0.7.2-1.fc31.noarch", + "python3-gobject-base-3.34.0-3.fc31.x86_64", + "python3-gpg-1.13.1-3.fc31.x86_64", + "python3-hawkey-0.35.3-6.fc31.x86_64", + "python3-idna-2.8-2.fc31.noarch", + "python3-jinja2-2.10.1-2.fc31.noarch", + "python3-jsonpatch-1.21-8.fc31.noarch", + "python3-jsonpointer-1.10-16.fc31.noarch", + "python3-jsonschema-3.0.2-1.fc31.noarch", + "python3-jwt-1.7.1-3.fc31.noarch", + "python3-libcomps-0.1.11-3.fc31.x86_64", + "python3-libdnf-0.35.3-6.fc31.x86_64", + "python3-libs-3.7.4-5.fc31.x86_64", + "python3-libselinux-2.9-5.fc31.x86_64", + "python3-libsemanage-2.9-3.fc31.x86_64", + "python3-markupsafe-1.1.1-2.fc31.x86_64", + "python3-oauthlib-3.0.2-2.fc31.noarch", + "python3-pip-19.1.1-4.fc31.noarch", + "python3-ply-3.11-3.fc31.noarch", + "python3-policycoreutils-2.9-5.fc31.noarch", + "python3-prettytable-0.7.2-18.fc31.noarch", + "python3-pycparser-2.14-20.fc31.noarch", + "python3-pyrsistent-0.15.4-1.fc31.x86_64", + "python3-pyserial-3.4-3.fc31.noarch", + "python3-pysocks-1.7.0-2.fc31.noarch", + "python3-pytz-2019.2-1.fc31.noarch", + "python3-pyyaml-5.1.2-1.fc31.x86_64", + "python3-requests-2.22.0-3.fc31.noarch", + "python3-rpm-4.15.0-6.fc31.x86_64", + "python3-setools-4.2.2-1.fc31.x86_64", + "python3-setuptools-41.2.0-1.fc31.noarch", + "python3-six-1.12.0-2.fc31.noarch", + "python3-slip-0.6.4-16.fc31.noarch", + "python3-slip-dbus-0.6.4-16.fc31.noarch", + "python3-unbound-1.9.3-1.fc31.x86_64", + "python3-urllib3-1.25.3-4.fc31.noarch", + "qemu-guest-agent-4.1.0-2.fc31.x86_64", + "qrencode-libs-4.0.2-4.fc31.x86_64", + "readline-8.0-3.fc31.x86_64", + "rest-0.8.1-6.fc31.x86_64", + "rootfiles-8.1-25.fc31.noarch", + "rpm-4.15.0-6.fc31.x86_64", + "rpm-build-libs-4.15.0-6.fc31.x86_64", + "rpm-libs-4.15.0-6.fc31.x86_64", + "rpm-plugin-selinux-4.15.0-6.fc31.x86_64", + "rpm-plugin-systemd-inhibit-4.15.0-6.fc31.x86_64", + "rpm-sign-libs-4.15.0-6.fc31.x86_64", + "sed-4.5-4.fc31.x86_64", + "selinux-policy-3.14.4-37.fc31.noarch", + "selinux-policy-targeted-3.14.4-37.fc31.noarch", + "setup-2.13.3-2.fc31.noarch", + "shadow-utils-4.6-16.fc31.x86_64", + "shared-mime-info-1.14-1.fc31.x86_64", + "spice-vdagent-0.19.0-4.fc31.x86_64", + "sqlite-libs-3.29.0-2.fc31.x86_64", + "sssd-client-2.2.2-1.fc31.x86_64", + "sssd-common-2.2.2-1.fc31.x86_64", + "sssd-kcm-2.2.2-1.fc31.x86_64", + "sssd-nfs-idmap-2.2.2-1.fc31.x86_64", + "sudo-1.8.28-1.fc31.x86_64", + "systemd-243-4.gitef67743.fc31.x86_64", + "systemd-bootchart-233-5.fc31.x86_64", + "systemd-libs-243-4.gitef67743.fc31.x86_64", + "systemd-pam-243-4.gitef67743.fc31.x86_64", + "systemd-rpm-macros-243-4.gitef67743.fc31.noarch", + "systemd-udev-243-4.gitef67743.fc31.x86_64", + "trousers-0.3.13-13.fc31.x86_64", + "trousers-lib-0.3.13-13.fc31.x86_64", + "tss2-1331-2.fc31.x86_64", + "tzdata-2019c-1.fc31.noarch", + "unbound-libs-1.9.3-1.fc31.x86_64", + "util-linux-2.34-3.fc31.x86_64", + "vim-minimal-8.1.2102-1.fc31.x86_64", + "which-2.21-15.fc31.x86_64", + "whois-nls-5.5.2-1.fc31.noarch", + "xen-libs-4.12.1-1.fc31.x86_64", + "xen-licenses-4.12.1-1.fc31.x86_64", + "xfsprogs-5.1.0-2.fc31.x86_64", + "xkeyboard-config-2.27-2.fc31.noarch", + "xz-5.2.4-6.fc31.x86_64", + "xz-libs-5.2.4-6.fc31.x86_64", + "yajl-2.1.0-13.fc31.x86_64", + "yum-4.2.9-5.fc31.noarch", + "zchunk-libs-1.1.2-3.fc31.x86_64", + "zlib-1.2.11-19.fc31.x86_64" + ], + "partition-table": "dos", + "partition-table-id": "0x14fc63d2", + "partitions": [ + { + "bootable": true, + "fstype": "ext4", + "label": null, + "partuuid": "14fc63d2-01", + "size": 2146435072, + "start": 1048576, + "type": "83", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:996:993::/var/lib/chrony:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "redhat:x:1000:1000::/home/redhat:/bin/bash", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:998:995:systemd Core Dumper:/:/sbin/nologin", + "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "systemd-timesync:x:997:994:systemd Time Synchronization:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:999:999:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/boot/System.map-5.3.7-301.fc31.x86_64": ".M.......", + "/boot/initramfs-5.3.7-301.fc31.x86_64.img": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/proc": ".M.......", + "/run/cryptsetup": ".M.......", + "/sys": ".M.......", + "/var/log/btmp": ".M.......", + "/var/log/journal": ".M....G..", + "/var/log/lastlog": ".M....G.." + }, + "missing": [] + }, + "services-disabled": [ + "arp-ethers.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "console-getty.service", + "debug-shell.service", + "exit.target", + "fstrim.timer", + "halt.target", + "kexec.target", + "loadmodules.service", + "nftables.service", + "nis-domainname.service", + "poweroff.target", + "proc-sys-fs-binfmt_misc.mount", + "rdisc.service", + "remote-cryptsetup.target", + "runlevel0.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-boot-check-no-failures.service", + "systemd-bootchart.service", + "systemd-network-generator.service", + "systemd-networkd-wait-online.service", + "systemd-networkd.service", + "systemd-networkd.socket", + "systemd-pstore.service", + "systemd-resolved.service", + "systemd-time-wait-sync.service", + "systemd-timesyncd.service", + "tcsd.service" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "cloud-init.service", + "ctrl-alt-del.target", + "dbus-broker.service", + "dbus-org.fedoraproject.FirewallD1.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dbus.service", + "dbus.socket", + "dnf-makecache.timer", + "firewalld.service", + "getty@.service", + "import-state.service", + "messagebus.service", + "qemu-guest-agent.service", + "reboot.target", + "remote-fs.target", + "runlevel6.target", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "unbound-anchor.timer" + ] + } +} \ No newline at end of file diff --git a/test/cases/fedora_31-x86_64-qcow2-boot.json b/test/cases/fedora_31-x86_64-qcow2-boot.json new file mode 100644 index 0000000..7a5a983 --- /dev/null +++ b/test/cases/fedora_31-x86_64-qcow2-boot.json @@ -0,0 +1,11586 @@ +{ + "boot": { + "type": "qemu" + }, + "compose-request": { + "distro": "fedora-31", + "arch": "x86_64", + "image-type": "qcow2", + "repositories": [ + { + "baseurl": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ], + "filename": "disk.qcow2", + "blueprint": { + "name": "qcow2-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcurl-7.66.0-1.fc31.x86_64.rpm" + }, + "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre2-10.33-14.fc31.x86_64.rpm" + }, + "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdatrie-0.2.9-10.fc31.x86_64.rpm" + }, + "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-firmware-20190923-102.fc31.noarch.rpm" + }, + "sha256:047f9e29fcfa56be98ca3f42249f3ccb2a93df99f2438e3983e2064025f0d79d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jsonschema-3.0.2-1.fc31.noarch.rpm" + }, + "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm" + }, + "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-6.fc31.x86_64.rpm" + }, + "sha256:06512e0f2546baf5c47a058d872fc62c39156bc86b5619eb841b435e2cc61e32": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-cloud-31-1.noarch.rpm" + }, + "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-six-1.12.0-2.fc31.noarch.rpm" + }, + "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-2.fc31.x86_64.rpm" + }, + "sha256:07a3523159719382e2bb9b83961bfe00836cc97f75a9706d02ad73dddb161856": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/chrony-3.5-4.fc31.x86_64.rpm" + }, + "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontconfig-2.13.92-3.fc31.x86_64.rpm" + }, + "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bash-5.0.7-3.fc31.x86_64.rpm" + }, + "sha256:0b54f374bcbe094dbc0d52d9661fe99ebff384026ce0ea39f2d6069e27bf8bdc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdhash-0.5.0-43.fc31.x86_64.rpm" + }, + "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-1.16.0-6.fc31.x86_64.rpm" + }, + "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.x86_64.rpm" + }, + "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.x86_64.rpm" + }, + "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnghttp2-1.39.2-1.fc31.x86_64.rpm" + }, + "sha256:0f26eca4ac936554818769fe32aca5e878af2616e83f836ec463e59eb4f9f1f9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcollection-0.7.0-43.fc31.x86_64.rpm" + }, + "sha256:101fa551ae1ae1885c1627fec47745eb0071ae675a762002e02c0563de89ecbd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cloud-utils-growpart-0.31-3.fc31.noarch.rpm" + }, + "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.x86_64.rpm" + }, + "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.x86_64.rpm" + }, + "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-common-2.30-5.fc31.x86_64.rpm" + }, + "sha256:1135e96b6f9ed29e4ed4c0f060876891a244442a503f0b18ab238589da20d464": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jinja2-2.10.1-2.fc31.noarch.rpm" + }, + "sha256:118548479396b007a80bc98e8cef770ea242ef6b20cd2922d595acd4c100946d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/polkit-libs-0.116-4.fc31.x86_64.rpm" + }, + "sha256:143c50c0663f963c7689c1cec43b81cf1433d5d3b67eb8233ba06506c1b3e095": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jwt-1.7.1-3.fc31.noarch.rpm" + }, + "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/graphite2-1.3.13-1.fc31.x86_64.rpm" + }, + "sha256:167eef09957e5abad6b99d22d9204021ae777b60320cd37d8f934cd9ac2da92a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rsync-3.1.3-9.fc31.x86_64.rpm" + }, + "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-plugins-core-4.0.9-1.fc31.noarch.rpm" + }, + "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm" + }, + "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsmartcols-2.34-3.fc31.x86_64.rpm" + }, + "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-6.1-12.20190803.fc31.x86_64.rpm" + }, + "sha256:19a9152e410c8fdd62220e79dcf4dc3d143ca04c75a09c332066ad8cc94b972e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-rsa-3.4.2-10.fc31.noarch.rpm" + }, + "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-extra-2.02-100.fc31.x86_64.rpm" + }, + "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsigsegv-2.11-8.fc31.x86_64.rpm" + }, + "sha256:1b65944efe48ba0cca34011891480a1db29a7e95dad058376bfca34d68fb0791": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-ply-3.11-3.fc31.noarch.rpm" + }, + "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-misc-2.0.4-14.fc31.noarch.rpm" + }, + "sha256:1e049e86c5dd5c4d6737d47dd194d553ffbd65c81a4077cf6e1029a0fde80fb5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-requests-2.22.0-3.fc31.noarch.rpm" + }, + "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gzip-1.10-1.fc31.x86_64.rpm" + }, + "sha256:1ffe518fc86251b33a58280984e9d06c025190a89a2d60c50d818eaea7bca583": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/syslinux-extlinux-nonlinux-6.04-0.12.fc31.noarch.rpm" + }, + "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/acl-2.2.53-4.fc31.x86_64.rpm" + }, + "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm" + }, + "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/librepo-1.10.5-1.fc31.x86_64.rpm" + }, + "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-rpm-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.x86_64.rpm" + }, + "sha256:21ccdbe703caa6a08056d2bc75c1e184f811472a6e320e5af64b8757fcd07166": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/groff-base-1.22.3-20.fc31.x86_64.rpm" + }, + "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libfdisk-2.34-3.fc31.x86_64.rpm" + }, + "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-1.fc31.x86_64.rpm" + }, + "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libutempter-1.1.6-17.fc31.x86_64.rpm" + }, + "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/readline-8.0-3.fc31.x86_64.rpm" + }, + "sha256:22db6d1e1f34a43c3d045b6750ff3a32184d47c2aedf3dabc93640057de1f4fa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/less-551-2.fc31.x86_64.rpm" + }, + "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.x86_64.rpm" + }, + "sha256:239a9576864532edd325e72b62a10ef147a2bcc0a925079b19fb9cb74bab0dd7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/c-ares-1.15.0-4.fc31.x86_64.rpm" + }, + "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-c-0.13.1-6.fc31.x86_64.rpm" + }, + "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-3.7.4-5.fc31.x86_64.rpm" + }, + "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXfixes-5.0.3-10.fc31.x86_64.rpm" + }, + "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-1.6.8-3.fc31.x86_64.rpm" + }, + "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-2.fc31.noarch.rpm" + }, + "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libstdc++-9.2.1-1.fc31.x86_64.rpm" + }, + "sha256:2af3bbdab1f387ae7af2534846e33ab6d2ca7777399c64191f95699d576cd4ba": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/initscripts-10.02-2.fc31.x86_64.rpm" + }, + "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.x86_64.rpm" + }, + "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgpg-error-1.36-2.fc31.x86_64.rpm" + }, + "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shadow-utils-4.6-16.fc31.x86_64.rpm" + }, + "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/brotli-1.0.7-6.fc31.x86_64.rpm" + }, + "sha256:2c5b5ce5f6e6d1d79f35eab253a12e19aeb863f4fe8ded94013f76a9834689fb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.20.4-1.fc31.x86_64.rpm" + }, + "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm" + }, + "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.x86_64.rpm" + }, + "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm" + }, + "sha256:2d9a2e736dd5231df3c5c748ce0ba5a75a409dacfe73f14676781f32d565a7df": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jsonpointer-1.10-16.fc31.noarch.rpm" + }, + "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXext-1.3.4-2.fc31.x86_64.rpm" + }, + "sha256:2e588b5133dc8cb26ff0226f66eb1be440c6b784ec6fa67a5f0516d8ccaf46f5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-cryptography-2.6.1-2.fc31.x86_64.rpm" + }, + "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-libs-5.37-3.fc31.x86_64.rpm" + }, + "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsepol-2.9-2.fc31.x86_64.rpm" + }, + "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm" + }, + "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/langpacks-en-2.0-7.fc31.noarch.rpm" + }, + "sha256:307275b46896d56d23f5da5ab77a299941e77165ff44e846d6620eee1158131c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_certmap-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/avahi-libs-0.7-20.fc31.x86_64.rpm" + }, + "sha256:32cc578c8da626a8c1a5316a59d482967a32547be6c077f73fb90e11fb0f1e6a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyserial-3.4-3.fc31.noarch.rpm" + }, + "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsolv-0.7.5-3.fc31.x86_64.rpm" + }, + "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.x86_64.rpm" + }, + "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/harfbuzz-2.6.1-2.fc31.x86_64.rpm" + }, + "sha256:33334afdde6c813b18c18897dca19fab5a2ce090eba0b5ea0a38f43f1081c190": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dhcp-client-4.4.1-15.fc31.x86_64.rpm" + }, + "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib-networking-2.62.1-1.fc31.x86_64.rpm" + }, + "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-2.30-5.fc31.x86_64.rpm" + }, + "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libarchive-3.4.0-1.fc31.x86_64.rpm" + }, + "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXft-2.3.3-2.fc31.x86_64.rpm" + }, + "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-3.33.4-1.fc31.x86_64.rpm" + }, + "sha256:34a9986b8b61812ceaf32ce3b189bd0b2cb4adaaf47d76ec1f50ce07c45b5675": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-config-generic-049-27.git20181204.fc31.1.x86_64.rpm" + }, + "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dejavu-fonts-common-2.37-2.fc31.noarch.rpm" + }, + "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm" + }, + "sha256:3553c0d8c0639d043a50ce16c3694e17d399e126b25106de0a75fc8dbc13b709": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/polkit-pkla-compat-0.1-15.fc31.x86_64.rpm" + }, + "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm" + }, + "sha256:35c348bcd91fa114ad459b888131e5e5509259cffce33f22c44f92e57e9e5919": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dbus-1.2.8-6.fc31.x86_64.rpm" + }, + "sha256:3629a3675c7dadd89f3b3d855e7c57d8f93d30d59fa00fdeabfc5e5e39ca4937": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/checkpolicy-2.9-2.fc31.x86_64.rpm" + }, + "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libs-3.7.4-5.fc31.x86_64.rpm" + }, + "sha256:36f24cbb8727406af1448c055971cca1956eaf0f1183320e1ed2df1c61c69451": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/git-core-2.23.0-1.fc31.x86_64.rpm" + }, + "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libargon2-20171227-3.fc31.x86_64.rpm" + }, + "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.x86_64.rpm" + }, + "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libevent-2.1.8-7.fc31.x86_64.rpm" + }, + "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-2.2.17-2.fc31.x86_64.rpm" + }, + "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-31-1.noarch.rpm" + }, + "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcc-9.2.1-1.fc31.x86_64.rpm" + }, + "sha256:422625da0fbb99cc4da8eebebff892c6e73a87c81a33190f7a17e344f6bb709e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_autofs-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rest-0.8.1-6.fc31.x86_64.rpm" + }, + "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grep-3.3-3.fc31.x86_64.rpm" + }, + "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nettle-3.5.1-3.fc31.x86_64.rpm" + }, + "sha256:430f2f71be063eb9d04fe38659f62e29f47c9c878f9985d0569cb49e9c89ebc0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmaxminddb-1.2.0-8.fc31.x86_64.rpm" + }, + "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.x86_64.rpm" + }, + "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.x86_64.rpm" + }, + "sha256:456252f83ba91a1150f180a81998c3acdd71be57a324cf84d6d842a063c56a12": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/heat-cfntools-1.4.2-9.fc31.noarch.rpm" + }, + "sha256:45bf4bef479712936db1d6859b043d13e6cad41c851b6e621fc315b39ecfa14b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libndp-1.7-4.fc31.x86_64.rpm" + }, + "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mkpasswd-5.5.2-1.fc31.x86_64.rpm" + }, + "sha256:469d12368377399b8eaa7ec8cf1b6378ab18476b4a2b61b79091510a8945c6aa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-43.fc31.x86_64.rpm" + }, + "sha256:486f2fb09621afabdebfd0cd897c9a77d93bb21ed41dc0a18b600d48654fed64": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/syslinux-extlinux-6.04-0.12.fc31.x86_64.rpm" + }, + "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zlib-1.2.11-19.fc31.x86_64.rpm" + }, + "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm" + }, + "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXdamage-1.1.4-17.fc31.x86_64.rpm" + }, + "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtiff-4.0.10-6.fc31.x86_64.rpm" + }, + "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm" + }, + "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm" + }, + "sha256:4cca3f986ddbd38cfbfb6d1c8d336a1aaed78f7da1f38356ce1e034ba35ec492": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-attrs-19.1.0-2.fc31.noarch.rpm" + }, + "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtasn1-4.14-2.fc31.x86_64.rpm" + }, + "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.10-1.fc31.x86_64.rpm" + }, + "sha256:4f9bbd08f6019b3482342d616d6b04e6481924ea34fbfe8d30ef63402a92e9b1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-nfs-idmap-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-5.37-3.fc31.x86_64.rpm" + }, + "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm" + }, + "sha256:5593277fa685adba864393da8faf76950d6d8fb1483af036cdc08d8437c387bb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtevent-0.10.1-1.fc31.x86_64.rpm" + }, + "sha256:55c47c63deb00a9126c068299c01dfbdd39d58c6962138b862b92f5c7af8c898": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/parted-3.2.153-1.fc31.x86_64.rpm" + }, + "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libss-1.45.3-1.fc31.x86_64.rpm" + }, + "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jbigkit-libs-2.1-17.fc31.x86_64.rpm" + }, + "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libthai-0.1.28-3.fc31.x86_64.rpm" + }, + "sha256:5a7e957102a23c9924398fe45f5cdec66edcd10adcad7130d6ebf02c2706ad49": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-policycoreutils-2.9-5.fc31.noarch.rpm" + }, + "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgomp-9.2.1-1.fc31.x86_64.rpm" + }, + "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-8.0p1-8.fc31.1.x86_64.rpm" + }, + "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/krb5-libs-1.17-45.fc31.x86_64.rpm" + }, + "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.02-100.fc31.x86_64.rpm" + }, + "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-udev-243-4.gitef67743.fc31.x86_64.rpm" + }, + "sha256:5d8d55e12443628c7a1915648845663e4aed1863805854de0adadd89772eda2a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-markupsafe-1.1.1-2.fc31.x86_64.rpm" + }, + "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-1.12.16-3.fc31.x86_64.rpm" + }, + "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdnf-0.35.3-6.fc31.x86_64.rpm" + }, + "sha256:6091b138c5dee897cb1c99b0d556f3e03ce6bb2c6ad3c10fed54136092a9d694": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mtools-4.0.23-1.fc31.x86_64.rpm" + }, + "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libffi-3.1-23.fc31.x86_64.rpm" + }, + "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/os-prober-1.77-3.fc31.x86_64.rpm" + }, + "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-3.fc31.x86_64.rpm" + }, + "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-2.fc31.x86_64.rpm" + }, + "sha256:669250ad47aad5939cf4d1b88036fd95a94845d8e0bbdb05e933f3d2fe262fea": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qemu-img-4.1.0-2.fc31.x86_64.rpm" + }, + "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsecret-0.19.1-1.fc31.x86_64.rpm" + }, + "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libusbx-1.0.22-4.fc31.x86_64.rpm" + }, + "sha256:6771e14a2ea70c74e800f6122df6c056a7e2c3c16d74b9b5f96ddfd482e38326": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/syslinux-6.04-0.12.fc31.x86_64.rpm" + }, + "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libunistring-0.9.10-6.fc31.x86_64.rpm" + }, + "sha256:682af90a049fa78429d5ebd194700609f762e59ceb6c4ca28b17e7f4fd1683aa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-prettytable-0.7.2-18.fc31.noarch.rpm" + }, + "sha256:687d00eb0b77446dbd78aaa0f4f99cc080c677930ad783120483614255264a3d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-client-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cpio-2.12-12.fc31.x86_64.rpm" + }, + "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpwquality-1.4.1-1.fc31.x86_64.rpm" + }, + "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm" + }, + "sha256:6b694ee239a2e3f38c401e975de392e3731ad8b18be5a3249ea02f19e87cb5cb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-common-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm" + }, + "sha256:6c1f9dc11de4d3af4d4c418b4556ee9659011d587e9da44bb039cb30ac326841": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.x86_64.rpm" + }, + "sha256:6c6f1152899318bdc0500cfb0b0cdbbc19ba0e017b5888ece1358250caa2629f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pytz-2019.2-1.fc31.noarch.rpm" + }, + "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmount-2.34-3.fc31.x86_64.rpm" + }, + "sha256:6d8cbba688cea65fa80983cd7f140633e94cd58daa819342d1ae571a4ff174c6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/NetworkManager-1.20.4-1.fc31.x86_64.rpm" + }, + "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.x86_64.rpm" + }, + "sha256:6ed7f318c5e93b59254d7b7652131f33db713eeb61f52413f21e533069ed24bf": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pycparser-2.14-20.fc31.noarch.rpm" + }, + "sha256:6f2dae9b49bed8e1036a21aadd92ea2eb371979f6714ec2bce5742de051eeb14": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.30-5.fc31.x86_64.rpm" + }, + "sha256:6f729da330aaaea336458a8b6f3f1d2cc761693ba20bdda57fb9c49fb6f2120d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-43.fc31.x86_64.rpm" + }, + "sha256:6f7fbd57db9334a3cc7983d2e920afe92abe3f7e168702612d70e9ff405d79e6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libini_config-1.3.1-43.fc31.x86_64.rpm" + }, + "sha256:704ebfc50ace9417ed28f4530d778359a4c2f95d524c2e99346472245e30b548": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sudo-1.8.28-1.fc31.x86_64.rpm" + }, + "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm" + }, + "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpsl-0.21.0-2.fc31.x86_64.rpm" + }, + "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.x86_64.rpm" + }, + "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-2.fc31.x86_64.rpm" + }, + "sha256:72b5df6982fecdbee30d40bbb6042c72ed0f31b787f289b4a27f0dffc6f609fe": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iputils-20190515-3.fc31.x86_64.rpm" + }, + "sha256:73a7249de97f0ad66bc1a867ac5b5d08b741ab152d4dd7ce45cc231d64126b58": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-asn1crypto-0.24.0-7.fc31.noarch.rpm" + }, + "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-3.fc31.x86_64.rpm" + }, + "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libblkid-2.34-3.fc31.x86_64.rpm" + }, + "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jasper-libs-2.0.14-9.fc31.x86_64.rpm" + }, + "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dhcp-common-4.4.1-15.fc31.noarch.rpm" + }, + "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/y/yum-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-2.26-6.fc31.x86_64.rpm" + }, + "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib2-2.62.1-1.fc31.x86_64.rpm" + }, + "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.x86_64.rpm" + }, + "sha256:764699ea124f85a7afcf65a2f138e3821770f8aa1ef134e1813e2b04477f0b74": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/man-db-2.8.4-5.fc31.x86_64.rpm" + }, + "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk3-3.24.12-3.fc31.x86_64.rpm" + }, + "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libidn2-2.2.0-2.fc31.x86_64.rpm" + }, + "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/policycoreutils-2.9-5.fc31.x86_64.rpm" + }, + "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm" + }, + "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libs-0.177-1.fc31.x86_64.rpm" + }, + "sha256:78b600621e00f4a0acc8f58de056ae9393ce4e1cded56837b4e557c1bc84b06b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-urllib3-1.25.3-4.fc31.noarch.rpm" + }, + "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXinerama-1.1.4-4.fc31.x86_64.rpm" + }, + "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/findutils-4.6.0-24.fc31.x86_64.rpm" + }, + "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libyaml-0.2.2-2.fc31.x86_64.rpm" + }, + "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/popt-1.16-18.fc31.x86_64.rpm" + }, + "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.x86_64.rpm" + }, + "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-libs-1.8.3-5.fc31.x86_64.rpm" + }, + "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kpartx-0.8.0-3.fc31.x86_64.rpm" + }, + "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-base-3.33.4-1.fc31.x86_64.rpm" + }, + "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-unbound-1.9.3-1.fc31.x86_64.rpm" + }, + "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgusb-0.3.0-5.fc31.x86_64.rpm" + }, + "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/alternatives-1.11-5.fc31.x86_64.rpm" + }, + "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shared-mime-info-1.14-1.fc31.x86_64.rpm" + }, + "sha256:7fc8df6b10728f46c3e752c35f6777f17025bef30f61c67f76de2538888a5546": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-cffi-1.12.3-1.fc31.x86_64.rpm" + }, + "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodman-2.0.1-20.fc31.x86_64.rpm" + }, + "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/langpacks-core-en-2.0-7.fc31.noarch.rpm" + }, + "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-common-2.02-100.fc31.noarch.rpm" + }, + "sha256:8221111dc9a9aa5c68805f153c3fbe5314c8a0f335af29685733b958253dd278": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-idna-2.8-2.fc31.noarch.rpm" + }, + "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-5.3.28-38.fc31.x86_64.rpm" + }, + "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gawk-5.0.1-5.fc31.x86_64.rpm" + }, + "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm" + }, + "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-libs-5.2.4-6.fc31.x86_64.rpm" + }, + "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm" + }, + "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-243-4.gitef67743.fc31.x86_64.rpm" + }, + "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cups-libs-2.2.12-2.fc31.x86_64.rpm" + }, + "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libproxy-0.4.15-14.fc31.x86_64.rpm" + }, + "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-8.fc31.x86_64.rpm" + }, + "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lcms2-2.9-6.fc31.x86_64.rpm" + }, + "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/unbound-libs-1.9.3-1.fc31.x86_64.rpm" + }, + "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.x86_64.rpm" + }, + "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcroco-0.6.13-2.fc31.x86_64.rpm" + }, + "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:8bd2655674b40e89f5f63af7f8ffafd0e9064a3378cdca050262a7272678e8e5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnl3-3.5.0-1.fc31.x86_64.rpm" + }, + "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre-8.43-2.fc31.1.x86_64.rpm" + }, + "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/colord-libs-1.4.4-2.fc31.x86_64.rpm" + }, + "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm" + }, + "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/atk-2.34.1-1.fc31.x86_64.rpm" + }, + "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libattr-2.4.48-7.fc31.x86_64.rpm" + }, + "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnutls-3.6.10-1.fc31.x86_64.rpm" + }, + "sha256:8f7b737ccb294fd5ba1d19075ea2a50a54e0265d8efa28aae0ade59d3e3a63be": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libldb-2.0.7-1.fc31.x86_64.rpm" + }, + "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.x86_64.rpm" + }, + "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libacl-2.2.53-4.fc31.x86_64.rpm" + }, + "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pixman-0.38.4-1.fc31.x86_64.rpm" + }, + "sha256:9247561bad35a8a2f8269b2bbbd28d1bf5e6fcde1fe78e1fc3c0e712513e9703": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtalloc-2.3.0-1.fc31.x86_64.rpm" + }, + "sha256:93161df6d62fe654c7cdba9ae36343d2549b437b27eac816a80f8d7c32a47162": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-kcm-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-firmware-whence-20190923-102.fc31.noarch.rpm" + }, + "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.x86_64.rpm" + }, + "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pinentry-1.1.0-6.fc31.x86_64.rpm" + }, + "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXi-1.7.10-2.fc31.x86_64.rpm" + }, + "sha256:95b45de2c57f35df43bff0c2ebe32c64183968b3a41c5673cfeeff5ece506b94": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuser-0.62-21.fc31.x86_64.rpm" + }, + "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.x86_64.rpm" + }, + "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-utils-2.9-5.fc31.x86_64.rpm" + }, + "sha256:9975496f29601a1c2cdb89e63aac698fdd8283ba3a52a9d91ead9473a0e064c8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tar-1.32-2.fc31.x86_64.rpm" + }, + "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-1.fc31.x86_64.rpm" + }, + "sha256:9b49fdc41ba8f1284c63db29b8bda002a7256a54fdba14c9d3fccd852b8547b1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-boto-2.49.0-1.fc31.noarch.rpm" + }, + "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/curl-7.66.0-1.fc31.x86_64.rpm" + }, + "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-repos-31-1.noarch.rpm" + }, + "sha256:9cc3e6534ae34343e7e4d056d46b9551da7d0a82c7bad378c3626d4b70d1bf62": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cloud-init-17.1-11.fc31.noarch.rpm" + }, + "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-bootchart-233-5.fc31.x86_64.rpm" + }, + "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libverto-0.3.0-8.fc31.x86_64.rpm" + }, + "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-3.fc31.noarch.rpm" + }, + "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm" + }, + "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcomps-0.1.11-3.fc31.x86_64.rpm" + }, + "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-1.fc31.x86_64.rpm" + }, + "sha256:9fea00b14943cac0e3b11ff3a319765168cf78b3cc58fdee7d5fe48246a0aa4d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm" + }, + "sha256:a188b5c697b734d4ed7d8f954b6875b9d401dc2a3c10bfd20d03db131ca73ab5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hostname-3.20-9.fc31.x86_64.rpm" + }, + "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcomposite-0.4.4-17.fc31.x86_64.rpm" + }, + "sha256:a1bd1b5a2c47e57957a77d32f4fd705de1df30557837cfbc83b8f284e4ee0456": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-2.9.6-21.fc31.x86_64.rpm" + }, + "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gmp-6.1.2-10.fc31.x86_64.rpm" + }, + "sha256:a41579023e1db3dec06679ebc7788ece92686ea2a23c78dd749c98ddbc82d419": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.23-3.fc31.x86_64.rpm" + }, + "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.02-100.fc31.noarch.rpm" + }, + "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gpgme-1.13.1-3.fc31.x86_64.rpm" + }, + "sha256:a6bab7030d3296875cb0cad2c30fb18042dab8ae070c9c6f97457bb0a5cc6316": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyyaml-5.1.2-1.fc31.x86_64.rpm" + }, + "sha256:a7071aa0068c9dff913c5f0523be3ffdd7f67b8f13e1ee2aa16e486b01aecc1c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libsemanage-2.9-3.fc31.x86_64.rpm" + }, + "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-client-1.17.0-2.fc31.x86_64.rpm" + }, + "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pam-1.3.1-18.fc31.x86_64.rpm" + }, + "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-38.fc31.x86_64.rpm" + }, + "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-1.fc31.x86_64.rpm" + }, + "sha256:aacf84989a0fe55366f6d37ddd1753b8c06e5640e9334805bf468777824a3ac0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setools-4.2.2-1.fc31.x86_64.rpm" + }, + "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.x86_64.rpm" + }, + "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-libs-26-4.fc31.x86_64.rpm" + }, + "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.x86_64.rpm" + }, + "sha256:adf011910ee572cb557b7340002aed9376004b786585e78e6546192a323c6d78": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/polkit-0.116-4.fc31.x86_64.rpm" + }, + "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libksba-1.3.5-10.fc31.x86_64.rpm" + }, + "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpcap-1.9.0-4.fc31.x86_64.rpm" + }, + "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm" + }, + "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tss2-1331-2.fc31.x86_64.rpm" + }, + "sha256:b110ee65fa2dee77585ec77cab592cba2434d579f8afbed4d2a908ad1addccfc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dosfstools-4.1-9.fc31.x86_64.rpm" + }, + "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libepoxy-1.5.3-4.fc31.x86_64.rpm" + }, + "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fribidi-1.0.5-4.fc31.x86_64.rpm" + }, + "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libseccomp-2.4.1-1.fc31.x86_64.rpm" + }, + "sha256:b3c4cfdf820225133f4e9e600de3300ef0c7bac34139433505dd4482da52be22": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xfsprogs-5.1.0-2.fc31.x86_64.rpm" + }, + "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuuid-2.34-3.fc31.x86_64.rpm" + }, + "sha256:b49419bed59686efde6fc04953c2ab64a46c2bae46227a872bb3a823538c636d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyasn1-0.4.4-5.fc31.noarch.rpm" + }, + "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openldap-2.4.47-3.fc31.x86_64.rpm" + }, + "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.x86_64.rpm" + }, + "sha256:b703a38c0dea8bcd2be7bfb83d0f71ee2ee15a140a25998d6837261331140919": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-psutil-5.6.3-2.fc31.x86_64.rpm" + }, + "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-2.02-100.fc31.x86_64.rpm" + }, + "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-9.fc31.x86_64.rpm" + }, + "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-2.9-5.fc31.x86_64.rpm" + }, + "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.x86_64.rpm" + }, + "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm" + }, + "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.x86_64.rpm" + }, + "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcb-1.13.1-3.fc31.x86_64.rpm" + }, + "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libassuan-2.5.3-2.fc31.x86_64.rpm" + }, + "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/npth-1.6-3.fc31.x86_64.rpm" + }, + "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-1.1.1d-2.fc31.x86_64.rpm" + }, + "sha256:bfe43a646ce98fc8cdcb52738f91e0ee5b8fd43760336d267bc20500aacd15bc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mozjs60-60.9.0-3.fc31.x86_64.rpm" + }, + "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-2.fc31.noarch.rpm" + }, + "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-8.31-4.fc31.x86_64.rpm" + }, + "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrandr-1.5.2-2.fc31.x86_64.rpm" + }, + "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.4-37.fc31.noarch.rpm" + }, + "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.x86_64.rpm" + }, + "sha256:c3aa4d794cef51ba9fcbf3750baed55aabfa36062a48f61149ccf03364a0d256": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-server-8.0p1-8.fc31.1.x86_64.rpm" + }, + "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:c459092a47bd2f904d9fe830735b512ef97b52785ee12abb2ba5c52465560f18": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/passwd-0.80-6.fc31.x86_64.rpm" + }, + "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-5.2.4-6.fc31.x86_64.rpm" + }, + "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXtst-1.2.3-10.fc31.x86_64.rpm" + }, + "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.x86_64.rpm" + }, + "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.x86_64.rpm" + }, + "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.x86_64.rpm" + }, + "sha256:c8e0a36410ebbd9db0a10e1fbecbae8f6288b9be86752d2e91725d5dd98ec65d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipcalc-0.2.5-3.fc31.x86_64.rpm" + }, + "sha256:c976ce75eda3dbe734117f6f558eafb2061bbef66086a04cb907a7ddbaea8bc2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmnl-1.0.4-10.fc31.x86_64.rpm" + }, + "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-2.0.4-14.fc31.x86_64.rpm" + }, + "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libzstd-1.4.2-1.fc31.x86_64.rpm" + }, + "sha256:ca6a71888b8d147342012c64533f61a41b26c788bbcd2844a2164ee007fac981": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libselinux-2.9-5.fc31.x86_64.rpm" + }, + "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-6.fc31.x86_64.rpm" + }, + "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm" + }, + "sha256:cc02df4125eaebf642edd9bf00031ec09871c285816c03112909ef1005410eaa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm" + }, + "sha256:cdc526097cd2fecb75e44ad11a69b10eb7804f310298c064c3b931515d4f3d5c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-configobj-5.0.6-16.fc31.noarch.rpm" + }, + "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/filesystem-3.12-2.fc31.x86_64.rpm" + }, + "sha256:cef060334e8c21b5d2e3a87bdd0ad5ac1be389d7794735506b9d3c65c2923cd3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iproute-5.3.0-1.fc31.x86_64.rpm" + }, + "sha256:cf6506ad88ecaab89efde02eee218365a36981114638c03989ba2768457ae335": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/net-tools-2.0-0.55.20160912git.fc31.x86_64.rpm" + }, + "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-3.fc31.x86_64.rpm" + }, + "sha256:cfeb5d0cb9c116e39292e3158c68ee62880cff4a5e3d098d20bf9567e5a576e1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpipeline-1.5.1-3.fc31.x86_64.rpm" + }, + "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxml2-2.9.9-3.fc31.x86_64.rpm" + }, + "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-0.20.1-2.fc31.x86_64.rpm" + }, + "sha256:d219a6c4a2410d6ef9bad2b337557779b969e278b657ffede83c021c20f665ca": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iproute-tc-5.3.0-1.fc31.x86_64.rpm" + }, + "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/geolite2-city-20190806-1.fc31.noarch.rpm" + }, + "sha256:d2c819a7e607a9e22f55047ed03d064e4b0f125ad4fb20532c543a6d8af8bfa5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/v/vim-minimal-8.1.2102-1.fc31.x86_64.rpm" + }, + "sha256:d334fe6e150349148b9cb77e32523029311ce8cb10d222d11c951b66637bbd3a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bzip2-1.0.8-1.fc31.x86_64.rpm" + }, + "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm" + }, + "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-0.9.0-6.fc31.x86_64.rpm" + }, + "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.x86_64.rpm" + }, + "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/expat-2.2.8-1.fc31.x86_64.rpm" + }, + "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.x86_64.rpm" + }, + "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-plugins-core-4.0.9-1.fc31.noarch.rpm" + }, + "sha256:d54f02fc39b3e87253808f665918d26ffe901f1228e25121c908661b47ba266b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pysocks-1.7.0-2.fc31.noarch.rpm" + }, + "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pango-1.44.6-1.fc31.x86_64.rpm" + }, + "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libelf-0.177-1.fc31.x86_64.rpm" + }, + "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/selinux-policy-3.14.4-37.fc31.noarch.rpm" + }, + "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mpfr-3.1.6-5.fc31.x86_64.rpm" + }, + "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rootfiles-8.1-25.fc31.noarch.rpm" + }, + "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-1.02.163-2.fc31.x86_64.rpm" + }, + "sha256:d90abd2b8eca279a2120bf7836503745d36432630258925292ee7dacfabe4c92": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pbr-5.1.2-4.fc31.noarch.rpm" + }, + "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcursor-1.1.15-6.fc31.x86_64.rpm" + }, + "sha256:da923b379524f2d8d26905f26a9dc763cec36c40306c4c53db57100574ea89b8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libref_array-0.1.5-43.fc31.x86_64.rpm" + }, + "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.x86_64.rpm" + }, + "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.x86_64.rpm" + }, + "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpng-1.6.37-2.fc31.x86_64.rpm" + }, + "sha256:dc924dd33a9bd0b9483ebdbcf7caecbe1f48b8a135f1521291c8433fa76f4603": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jansson-2.12-4.fc31.x86_64.rpm" + }, + "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/diffutils-3.7-3.fc31.x86_64.rpm" + }, + "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.x86_64.rpm" + }, + "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sed-4.5-4.fc31.x86_64.rpm" + }, + "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm" + }, + "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-ng-0.7.9-8.fc31.x86_64.rpm" + }, + "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrender-0.9.10-10.fc31.x86_64.rpm" + }, + "sha256:e17ef6f7d4f1869ff5813d6f8f2983cd6f5cd23d4a666b7ae19154636e911644": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-babel-2.7.0-2.fc31.noarch.rpm" + }, + "sha256:e1bda9438577473413f3c7455ce84b6c8486adee3d4473fafcd28309ad8c2913": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-7.fc31.x86_64.rpm" + }, + "sha256:e405d2edc9b9fc2c13242f0225049b071aa4159d09d8e2d501e8c4fe88a9710b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-25.fc31.x86_64.rpm" + }, + "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-common-31-1.noarch.rpm" + }, + "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-legacy-2.0.4-14.fc31.noarch.rpm" + }, + "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsoup-2.68.2-1.fc31.x86_64.rpm" + }, + "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/freetype-2.10.0-3.fc31.x86_64.rpm" + }, + "sha256:e98119ac7a707287668e7a9a74ef2809ee5f555af04f52775367e428e08dbb33": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jsonpatch-1.21-8.fc31.noarch.rpm" + }, + "sha256:eac54fb3ab5e4c457aa6522398560713ce91394662ca11b554684bda2e0ab2af": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grubby-8.40-36.fc31.x86_64.rpm" + }, + "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-glib-1.4.4-3.fc31.x86_64.rpm" + }, + "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-4.4.10-1.fc31.x86_64.rpm" + }, + "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-broker-21-6.fc31.x86_64.rpm" + }, + "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-26-4.fc31.x86_64.rpm" + }, + "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/which-2.21-15.fc31.x86_64.rpm" + }, + "sha256:ee6596a5010c2b4a038861828ecca240aa03c592dacd83c3a70d44cb8ee50408": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libaio-0.3.111-6.fc31.x86_64.rpm" + }, + "sha256:ee6dbb4914a35ee8a816ecde34d29221e3f4622324f6287c328e8ac22ae572ad": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-chardet-3.0.4-10.fc31.noarch.rpm" + }, + "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-049-27.git20181204.fc31.1.x86_64.rpm" + }, + "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-libs-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.x86_64.rpm" + }, + "sha256:f0509e333636e5c34726c8a2b8260bf88fe0a35b95cae6dda62191fee1be4c6a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-core-5.3.7-301.fc31.x86_64.rpm" + }, + "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm" + }, + "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcom_err-1.45.3-1.fc31.x86_64.rpm" + }, + "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-common-8.31-4.fc31.x86_64.rpm" + }, + "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm" + }, + "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pigz-2.4-5.fc31.x86_64.rpm" + }, + "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dconf-0.34.0-1.fc31.x86_64.rpm" + }, + "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/util-linux-2.34-3.fc31.x86_64.rpm" + }, + "sha256:f50957375c79be57f391625b97d6ea74505e05f2edc6b9bc6768d5e3ad6ef8f8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.x86_64.rpm" + }, + "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.x86_64.rpm" + }, + "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-2.02-100.fc31.x86_64.rpm" + }, + "sha256:f61555e6e74917be3f131bd5af9d9e30ed709111701e950b7ebd4392baf33f12": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnfsidmap-2.4.1-1.rc1.fc31.x86_64.rpm" + }, + "sha256:f67d5cc67029c6c38185f94b72aaa9034a49f5c4f166066c8268b41e1b18a202": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.30-5.fc31.x86_64.rpm" + }, + "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm" + }, + "sha256:f85469c0c19ce86e8fdd0dd5a3e6e5c9b78e3436ae9ce70ba86b2b4a3794f693": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-oauthlib-3.0.2-2.fc31.noarch.rpm" + }, + "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXau-1.0.9-2.fc31.x86_64.rpm" + }, + "sha256:fa979526906cc9182ebdb6e50c9d09deba8518f69750495fec4267a425c8f783": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyrsistent-0.15.4-1.fc31.x86_64.rpm" + }, + "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.x86_64.rpm" + }, + "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.x86_64.rpm" + }, + "sha256:fccade859cbb884fd61c07433e6c316f794885cbb2186debcff3f6894d16d52c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtdb-1.4.2-1.fc31.x86_64.rpm" + }, + "sha256:fced380b3f7270b186dd2b67aef7c9f5614617e71fcea61fd903864a20a4924e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/syslinux-nonlinux-6.04-0.12.fc31.noarch.rpm" + }, + "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsemanage-2.9-3.fc31.x86_64.rpm" + }, + "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/geolite2-country-20190806-1.fc31.noarch.rpm" + }, + "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.x86_64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "checksum": "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d", + "check_gpg": true + }, + { + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "checksum": "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081", + "check_gpg": true + }, + { + "checksum": "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355", + "check_gpg": true + }, + { + "checksum": "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1", + "check_gpg": true + }, + { + "checksum": "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5", + "check_gpg": true + }, + { + "checksum": "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09", + "check_gpg": true + }, + { + "checksum": "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02", + "check_gpg": true + }, + { + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "checksum": "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3", + "check_gpg": true + }, + { + "checksum": "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1", + "check_gpg": true + }, + { + "checksum": "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7", + "check_gpg": true + }, + { + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "checksum": "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a", + "check_gpg": true + }, + { + "checksum": "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3", + "check_gpg": true + }, + { + "checksum": "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736", + "check_gpg": true + }, + { + "checksum": "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc", + "check_gpg": true + }, + { + "checksum": "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc", + "check_gpg": true + }, + { + "checksum": "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38", + "check_gpg": true + }, + { + "checksum": "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4", + "check_gpg": true + }, + { + "checksum": "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c", + "check_gpg": true + }, + { + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "checksum": "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8", + "check_gpg": true + }, + { + "checksum": "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4", + "check_gpg": true + }, + { + "checksum": "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49", + "check_gpg": true + }, + { + "checksum": "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1", + "check_gpg": true + }, + { + "checksum": "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee", + "check_gpg": true + }, + { + "checksum": "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8", + "check_gpg": true + }, + { + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "checksum": "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71", + "check_gpg": true + }, + { + "checksum": "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27", + "check_gpg": true + }, + { + "checksum": "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7", + "check_gpg": true + }, + { + "checksum": "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f", + "check_gpg": true + }, + { + "checksum": "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732", + "check_gpg": true + }, + { + "checksum": "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7", + "check_gpg": true + }, + { + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "checksum": "sha256:b110ee65fa2dee77585ec77cab592cba2434d579f8afbed4d2a908ad1addccfc", + "check_gpg": true + }, + { + "checksum": "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159", + "check_gpg": true + }, + { + "checksum": "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7", + "check_gpg": true + }, + { + "checksum": "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89", + "check_gpg": true + }, + { + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "checksum": "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228", + "check_gpg": true + }, + { + "checksum": "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407", + "check_gpg": true + }, + { + "checksum": "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f", + "check_gpg": true + }, + { + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "checksum": "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c", + "check_gpg": true + }, + { + "checksum": "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c", + "check_gpg": true + }, + { + "checksum": "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff", + "check_gpg": true + }, + { + "checksum": "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067", + "check_gpg": true + }, + { + "checksum": "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a", + "check_gpg": true + }, + { + "checksum": "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2", + "check_gpg": true + }, + { + "checksum": "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54", + "check_gpg": true + }, + { + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "checksum": "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee", + "check_gpg": true + }, + { + "checksum": "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891", + "check_gpg": true + }, + { + "checksum": "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d", + "check_gpg": true + }, + { + "checksum": "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203", + "check_gpg": true + }, + { + "checksum": "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd", + "check_gpg": true + }, + { + "checksum": "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc", + "check_gpg": true + }, + { + "checksum": "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84", + "check_gpg": true + }, + { + "checksum": "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb", + "check_gpg": true + }, + { + "checksum": "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c", + "check_gpg": true + }, + { + "checksum": "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926", + "check_gpg": true + }, + { + "checksum": "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3", + "check_gpg": true + }, + { + "checksum": "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a", + "check_gpg": true + }, + { + "checksum": "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79", + "check_gpg": true + }, + { + "checksum": "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13", + "check_gpg": true + }, + { + "checksum": "sha256:f67d5cc67029c6c38185f94b72aaa9034a49f5c4f166066c8268b41e1b18a202", + "check_gpg": true + }, + { + "checksum": "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb", + "check_gpg": true + }, + { + "checksum": "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a", + "check_gpg": true + }, + { + "checksum": "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e", + "check_gpg": true + }, + { + "checksum": "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5", + "check_gpg": true + }, + { + "checksum": "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5", + "check_gpg": true + }, + { + "checksum": "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458", + "check_gpg": true + }, + { + "checksum": "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d", + "check_gpg": true + }, + { + "checksum": "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16", + "check_gpg": true + }, + { + "checksum": "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada", + "check_gpg": true + }, + { + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "checksum": "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc", + "check_gpg": true + }, + { + "checksum": "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1", + "check_gpg": true + }, + { + "checksum": "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8", + "check_gpg": true + }, + { + "checksum": "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214", + "check_gpg": true + }, + { + "checksum": "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031", + "check_gpg": true + }, + { + "checksum": "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8", + "check_gpg": true + }, + { + "checksum": "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d", + "check_gpg": true + }, + { + "checksum": "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150", + "check_gpg": true + }, + { + "checksum": "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01", + "check_gpg": true + }, + { + "checksum": "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994", + "check_gpg": true + }, + { + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "checksum": "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6", + "check_gpg": true + }, + { + "checksum": "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4", + "check_gpg": true + }, + { + "checksum": "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00", + "check_gpg": true + }, + { + "checksum": "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5", + "check_gpg": true + }, + { + "checksum": "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422", + "check_gpg": true + }, + { + "checksum": "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad", + "check_gpg": true + }, + { + "checksum": "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c", + "check_gpg": true + }, + { + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "checksum": "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1", + "check_gpg": true + }, + { + "checksum": "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b", + "check_gpg": true + }, + { + "checksum": "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1", + "check_gpg": true + }, + { + "checksum": "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00", + "check_gpg": true + }, + { + "checksum": "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466", + "check_gpg": true + }, + { + "checksum": "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b", + "check_gpg": true + }, + { + "checksum": "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679", + "check_gpg": true + }, + { + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "checksum": "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834", + "check_gpg": true + }, + { + "checksum": "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c", + "check_gpg": true + }, + { + "checksum": "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59", + "check_gpg": true + }, + { + "checksum": "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a", + "check_gpg": true + }, + { + "checksum": "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077", + "check_gpg": true + }, + { + "checksum": "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c", + "check_gpg": true + }, + { + "checksum": "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc", + "check_gpg": true + }, + { + "checksum": "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141", + "check_gpg": true + }, + { + "checksum": "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1", + "check_gpg": true + }, + { + "checksum": "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1", + "check_gpg": true + }, + { + "checksum": "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7", + "check_gpg": true + }, + { + "checksum": "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295", + "check_gpg": true + }, + { + "checksum": "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc", + "check_gpg": true + }, + { + "checksum": "sha256:ee6596a5010c2b4a038861828ecca240aa03c592dacd83c3a70d44cb8ee50408", + "check_gpg": true + }, + { + "checksum": "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18", + "check_gpg": true + }, + { + "checksum": "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de", + "check_gpg": true + }, + { + "checksum": "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8", + "check_gpg": true + }, + { + "checksum": "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be", + "check_gpg": true + }, + { + "checksum": "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2", + "check_gpg": true + }, + { + "checksum": "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090", + "check_gpg": true + }, + { + "checksum": "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d", + "check_gpg": true + }, + { + "checksum": "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c", + "check_gpg": true + }, + { + "checksum": "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7", + "check_gpg": true + }, + { + "checksum": "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382", + "check_gpg": true + }, + { + "checksum": "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241", + "check_gpg": true + }, + { + "checksum": "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167", + "check_gpg": true + }, + { + "checksum": "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc", + "check_gpg": true + }, + { + "checksum": "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627", + "check_gpg": true + }, + { + "checksum": "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874", + "check_gpg": true + }, + { + "checksum": "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801", + "check_gpg": true + }, + { + "checksum": "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31", + "check_gpg": true + }, + { + "checksum": "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7", + "check_gpg": true + }, + { + "checksum": "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba", + "check_gpg": true + }, + { + "checksum": "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0", + "check_gpg": true + }, + { + "checksum": "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1", + "check_gpg": true + }, + { + "checksum": "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f", + "check_gpg": true + }, + { + "checksum": "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c", + "check_gpg": true + }, + { + "checksum": "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd", + "check_gpg": true + }, + { + "checksum": "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab", + "check_gpg": true + }, + { + "checksum": "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc", + "check_gpg": true + }, + { + "checksum": "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345", + "check_gpg": true + }, + { + "checksum": "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde", + "check_gpg": true + }, + { + "checksum": "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37", + "check_gpg": true + }, + { + "checksum": "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f", + "check_gpg": true + }, + { + "checksum": "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43", + "check_gpg": true + }, + { + "checksum": "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664", + "check_gpg": true + }, + { + "checksum": "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57", + "check_gpg": true + }, + { + "checksum": "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d", + "check_gpg": true + }, + { + "checksum": "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf", + "check_gpg": true + }, + { + "checksum": "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a", + "check_gpg": true + }, + { + "checksum": "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc", + "check_gpg": true + }, + { + "checksum": "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf", + "check_gpg": true + }, + { + "checksum": "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc", + "check_gpg": true + }, + { + "checksum": "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730", + "check_gpg": true + }, + { + "checksum": "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0", + "check_gpg": true + }, + { + "checksum": "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3", + "check_gpg": true + }, + { + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "checksum": "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a", + "check_gpg": true + }, + { + "checksum": "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7", + "check_gpg": true + }, + { + "checksum": "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e", + "check_gpg": true + }, + { + "checksum": "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045", + "check_gpg": true + }, + { + "checksum": "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32", + "check_gpg": true + }, + { + "checksum": "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f", + "check_gpg": true + }, + { + "checksum": "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4", + "check_gpg": true + }, + { + "checksum": "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238", + "check_gpg": true + }, + { + "checksum": "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388", + "check_gpg": true + }, + { + "checksum": "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42", + "check_gpg": true + }, + { + "checksum": "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc", + "check_gpg": true + }, + { + "checksum": "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833", + "check_gpg": true + }, + { + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "checksum": "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f", + "check_gpg": true + }, + { + "checksum": "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb", + "check_gpg": true + }, + { + "checksum": "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c", + "check_gpg": true + }, + { + "checksum": "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500", + "check_gpg": true + }, + { + "checksum": "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71", + "check_gpg": true + }, + { + "checksum": "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7", + "check_gpg": true + }, + { + "checksum": "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42", + "check_gpg": true + }, + { + "checksum": "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8", + "check_gpg": true + }, + { + "checksum": "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5", + "check_gpg": true + }, + { + "checksum": "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af", + "check_gpg": true + }, + { + "checksum": "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348", + "check_gpg": true + }, + { + "checksum": "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff", + "check_gpg": true + }, + { + "checksum": "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce", + "check_gpg": true + }, + { + "checksum": "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9", + "check_gpg": true + }, + { + "checksum": "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5", + "check_gpg": true + }, + { + "checksum": "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c", + "check_gpg": true + }, + { + "checksum": "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca", + "check_gpg": true + }, + { + "checksum": "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da", + "check_gpg": true + }, + { + "checksum": "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6", + "check_gpg": true + }, + { + "checksum": "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34", + "check_gpg": true + }, + { + "checksum": "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c", + "check_gpg": true + }, + { + "checksum": "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a", + "check_gpg": true + }, + { + "checksum": "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39", + "check_gpg": true + }, + { + "checksum": "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83", + "check_gpg": true + }, + { + "checksum": "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2", + "check_gpg": true + }, + { + "checksum": "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519", + "check_gpg": true + }, + { + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "checksum": "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106", + "check_gpg": true + }, + { + "checksum": "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc", + "check_gpg": true + }, + { + "checksum": "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2", + "check_gpg": true + }, + { + "checksum": "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38", + "check_gpg": true + }, + { + "checksum": "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b", + "check_gpg": true + }, + { + "checksum": "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68", + "check_gpg": true + }, + { + "checksum": "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3", + "check_gpg": true + }, + { + "checksum": "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2", + "check_gpg": true + }, + { + "checksum": "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0", + "check_gpg": true + }, + { + "checksum": "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234", + "check_gpg": true + }, + { + "checksum": "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313", + "check_gpg": true + }, + { + "checksum": "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0", + "check_gpg": true + }, + { + "checksum": "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b", + "check_gpg": true + }, + { + "checksum": "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c", + "check_gpg": true + }, + { + "checksum": "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651", + "check_gpg": true + }, + { + "checksum": "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7", + "check_gpg": true + }, + { + "checksum": "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8", + "check_gpg": true + }, + { + "checksum": "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976", + "check_gpg": true + }, + { + "checksum": "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba", + "check_gpg": true + }, + { + "checksum": "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c", + "check_gpg": true + }, + { + "checksum": "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632", + "check_gpg": true + }, + { + "checksum": "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e", + "check_gpg": true + }, + { + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "checksum": "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9", + "check_gpg": true + }, + { + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "checksum": "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a", + "check_gpg": true + }, + { + "checksum": "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552", + "check_gpg": true + }, + { + "checksum": "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3", + "check_gpg": true + }, + { + "checksum": "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5", + "check_gpg": true + }, + { + "checksum": "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1", + "check_gpg": true + }, + { + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "checksum": "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444", + "check_gpg": true + }, + { + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "checksum": "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7", + "check_gpg": true + }, + { + "checksum": "sha256:669250ad47aad5939cf4d1b88036fd95a94845d8e0bbdb05e933f3d2fe262fea", + "check_gpg": true + }, + { + "checksum": "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d", + "check_gpg": true + }, + { + "checksum": "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc", + "check_gpg": true + }, + { + "checksum": "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e", + "check_gpg": true + }, + { + "checksum": "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2", + "check_gpg": true + }, + { + "checksum": "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac", + "check_gpg": true + }, + { + "checksum": "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03", + "check_gpg": true + }, + { + "checksum": "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576", + "check_gpg": true + }, + { + "checksum": "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb", + "check_gpg": true + }, + { + "checksum": "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165", + "check_gpg": true + }, + { + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "checksum": "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3", + "check_gpg": true + }, + { + "checksum": "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071", + "check_gpg": true + }, + { + "checksum": "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2", + "check_gpg": true + }, + { + "checksum": "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5", + "check_gpg": true + }, + { + "checksum": "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454", + "check_gpg": true + }, + { + "checksum": "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612", + "check_gpg": true + }, + { + "checksum": "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1", + "check_gpg": true + }, + { + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "checksum": "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c", + "check_gpg": true + }, + { + "checksum": "sha256:9975496f29601a1c2cdb89e63aac698fdd8283ba3a52a9d91ead9473a0e064c8", + "check_gpg": true + }, + { + "checksum": "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18", + "check_gpg": true + }, + { + "checksum": "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df", + "check_gpg": true + }, + { + "checksum": "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f", + "check_gpg": true + }, + { + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "checksum": "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7", + "check_gpg": true + }, + { + "checksum": "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f", + "check_gpg": true + }, + { + "checksum": "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa", + "check_gpg": true + }, + { + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "checksum": "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05", + "check_gpg": true + }, + { + "checksum": "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431", + "check_gpg": true + }, + { + "checksum": "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c", + "check_gpg": true + }, + { + "checksum": "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9", + "check_gpg": true + } + ] + } + } + ] + }, + "runner": "org.osbuild.fedora31" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:6d8cbba688cea65fa80983cd7f140633e94cd58daa819342d1ae571a4ff174c6", + "check_gpg": true + }, + { + "checksum": "sha256:2c5b5ce5f6e6d1d79f35eab253a12e19aeb863f4fe8ded94013f76a9834689fb", + "check_gpg": true + }, + { + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "checksum": "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d", + "check_gpg": true + }, + { + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "checksum": "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081", + "check_gpg": true + }, + { + "checksum": "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355", + "check_gpg": true + }, + { + "checksum": "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1", + "check_gpg": true + }, + { + "checksum": "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5", + "check_gpg": true + }, + { + "checksum": "sha256:cc02df4125eaebf642edd9bf00031ec09871c285816c03112909ef1005410eaa", + "check_gpg": true + }, + { + "checksum": "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09", + "check_gpg": true + }, + { + "checksum": "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02", + "check_gpg": true + }, + { + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "checksum": "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3", + "check_gpg": true + }, + { + "checksum": "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1", + "check_gpg": true + }, + { + "checksum": "sha256:d334fe6e150349148b9cb77e32523029311ce8cb10d222d11c951b66637bbd3a", + "check_gpg": true + }, + { + "checksum": "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7", + "check_gpg": true + }, + { + "checksum": "sha256:239a9576864532edd325e72b62a10ef147a2bcc0a925079b19fb9cb74bab0dd7", + "check_gpg": true + }, + { + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "checksum": "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a", + "check_gpg": true + }, + { + "checksum": "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3", + "check_gpg": true + }, + { + "checksum": "sha256:3629a3675c7dadd89f3b3d855e7c57d8f93d30d59fa00fdeabfc5e5e39ca4937", + "check_gpg": true + }, + { + "checksum": "sha256:07a3523159719382e2bb9b83961bfe00836cc97f75a9706d02ad73dddb161856", + "check_gpg": true + }, + { + "checksum": "sha256:9cc3e6534ae34343e7e4d056d46b9551da7d0a82c7bad378c3626d4b70d1bf62", + "check_gpg": true + }, + { + "checksum": "sha256:101fa551ae1ae1885c1627fec47745eb0071ae675a762002e02c0563de89ecbd", + "check_gpg": true + }, + { + "checksum": "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736", + "check_gpg": true + }, + { + "checksum": "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc", + "check_gpg": true + }, + { + "checksum": "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc", + "check_gpg": true + }, + { + "checksum": "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38", + "check_gpg": true + }, + { + "checksum": "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4", + "check_gpg": true + }, + { + "checksum": "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c", + "check_gpg": true + }, + { + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "checksum": "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8", + "check_gpg": true + }, + { + "checksum": "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4", + "check_gpg": true + }, + { + "checksum": "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49", + "check_gpg": true + }, + { + "checksum": "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1", + "check_gpg": true + }, + { + "checksum": "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee", + "check_gpg": true + }, + { + "checksum": "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8", + "check_gpg": true + }, + { + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "checksum": "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71", + "check_gpg": true + }, + { + "checksum": "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27", + "check_gpg": true + }, + { + "checksum": "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc", + "check_gpg": true + }, + { + "checksum": "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a", + "check_gpg": true + }, + { + "checksum": "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7", + "check_gpg": true + }, + { + "checksum": "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f", + "check_gpg": true + }, + { + "checksum": "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732", + "check_gpg": true + }, + { + "checksum": "sha256:33334afdde6c813b18c18897dca19fab5a2ce090eba0b5ea0a38f43f1081c190", + "check_gpg": true + }, + { + "checksum": "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d", + "check_gpg": true + }, + { + "checksum": "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7", + "check_gpg": true + }, + { + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "checksum": "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063", + "check_gpg": true + }, + { + "checksum": "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159", + "check_gpg": true + }, + { + "checksum": "sha256:34a9986b8b61812ceaf32ce3b189bd0b2cb4adaaf47d76ec1f50ce07c45b5675", + "check_gpg": true + }, + { + "checksum": "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7", + "check_gpg": true + }, + { + "checksum": "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89", + "check_gpg": true + }, + { + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "checksum": "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228", + "check_gpg": true + }, + { + "checksum": "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407", + "check_gpg": true + }, + { + "checksum": "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f", + "check_gpg": true + }, + { + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "checksum": "sha256:06512e0f2546baf5c47a058d872fc62c39156bc86b5619eb841b435e2cc61e32", + "check_gpg": true + }, + { + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "checksum": "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c", + "check_gpg": true + }, + { + "checksum": "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c", + "check_gpg": true + }, + { + "checksum": "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff", + "check_gpg": true + }, + { + "checksum": "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067", + "check_gpg": true + }, + { + "checksum": "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a", + "check_gpg": true + }, + { + "checksum": "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2", + "check_gpg": true + }, + { + "checksum": "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54", + "check_gpg": true + }, + { + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "checksum": "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee", + "check_gpg": true + }, + { + "checksum": "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891", + "check_gpg": true + }, + { + "checksum": "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d", + "check_gpg": true + }, + { + "checksum": "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203", + "check_gpg": true + }, + { + "checksum": "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd", + "check_gpg": true + }, + { + "checksum": "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc", + "check_gpg": true + }, + { + "checksum": "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84", + "check_gpg": true + }, + { + "checksum": "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb", + "check_gpg": true + }, + { + "checksum": "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c", + "check_gpg": true + }, + { + "checksum": "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565", + "check_gpg": true + }, + { + "checksum": "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b", + "check_gpg": true + }, + { + "checksum": "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926", + "check_gpg": true + }, + { + "checksum": "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3", + "check_gpg": true + }, + { + "checksum": "sha256:36f24cbb8727406af1448c055971cca1956eaf0f1183320e1ed2df1c61c69451", + "check_gpg": true + }, + { + "checksum": "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a", + "check_gpg": true + }, + { + "checksum": "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79", + "check_gpg": true + }, + { + "checksum": "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13", + "check_gpg": true + }, + { + "checksum": "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb", + "check_gpg": true + }, + { + "checksum": "sha256:6f2dae9b49bed8e1036a21aadd92ea2eb371979f6714ec2bce5742de051eeb14", + "check_gpg": true + }, + { + "checksum": "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a", + "check_gpg": true + }, + { + "checksum": "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e", + "check_gpg": true + }, + { + "checksum": "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5", + "check_gpg": true + }, + { + "checksum": "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5", + "check_gpg": true + }, + { + "checksum": "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458", + "check_gpg": true + }, + { + "checksum": "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d", + "check_gpg": true + }, + { + "checksum": "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16", + "check_gpg": true + }, + { + "checksum": "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada", + "check_gpg": true + }, + { + "checksum": "sha256:21ccdbe703caa6a08056d2bc75c1e184f811472a6e320e5af64b8757fcd07166", + "check_gpg": true + }, + { + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "checksum": "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc", + "check_gpg": true + }, + { + "checksum": "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1", + "check_gpg": true + }, + { + "checksum": "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8", + "check_gpg": true + }, + { + "checksum": "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214", + "check_gpg": true + }, + { + "checksum": "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031", + "check_gpg": true + }, + { + "checksum": "sha256:eac54fb3ab5e4c457aa6522398560713ce91394662ca11b554684bda2e0ab2af", + "check_gpg": true + }, + { + "checksum": "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8", + "check_gpg": true + }, + { + "checksum": "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d", + "check_gpg": true + }, + { + "checksum": "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150", + "check_gpg": true + }, + { + "checksum": "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01", + "check_gpg": true + }, + { + "checksum": "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994", + "check_gpg": true + }, + { + "checksum": "sha256:456252f83ba91a1150f180a81998c3acdd71be57a324cf84d6d842a063c56a12", + "check_gpg": true + }, + { + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "checksum": "sha256:a188b5c697b734d4ed7d8f954b6875b9d401dc2a3c10bfd20d03db131ca73ab5", + "check_gpg": true + }, + { + "checksum": "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6", + "check_gpg": true + }, + { + "checksum": "sha256:2af3bbdab1f387ae7af2534846e33ab6d2ca7777399c64191f95699d576cd4ba", + "check_gpg": true + }, + { + "checksum": "sha256:c8e0a36410ebbd9db0a10e1fbecbae8f6288b9be86752d2e91725d5dd98ec65d", + "check_gpg": true + }, + { + "checksum": "sha256:cef060334e8c21b5d2e3a87bdd0ad5ac1be389d7794735506b9d3c65c2923cd3", + "check_gpg": true + }, + { + "checksum": "sha256:d219a6c4a2410d6ef9bad2b337557779b969e278b657ffede83c021c20f665ca", + "check_gpg": true + }, + { + "checksum": "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4", + "check_gpg": true + }, + { + "checksum": "sha256:72b5df6982fecdbee30d40bbb6042c72ed0f31b787f289b4a27f0dffc6f609fe", + "check_gpg": true + }, + { + "checksum": "sha256:dc924dd33a9bd0b9483ebdbcf7caecbe1f48b8a135f1521291c8433fa76f4603", + "check_gpg": true + }, + { + "checksum": "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00", + "check_gpg": true + }, + { + "checksum": "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5", + "check_gpg": true + }, + { + "checksum": "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422", + "check_gpg": true + }, + { + "checksum": "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad", + "check_gpg": true + }, + { + "checksum": "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c", + "check_gpg": true + }, + { + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "checksum": "sha256:f0509e333636e5c34726c8a2b8260bf88fe0a35b95cae6dda62191fee1be4c6a", + "check_gpg": true + }, + { + "checksum": "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1", + "check_gpg": true + }, + { + "checksum": "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b", + "check_gpg": true + }, + { + "checksum": "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1", + "check_gpg": true + }, + { + "checksum": "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00", + "check_gpg": true + }, + { + "checksum": "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466", + "check_gpg": true + }, + { + "checksum": "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552", + "check_gpg": true + }, + { + "checksum": "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b", + "check_gpg": true + }, + { + "checksum": "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b", + "check_gpg": true + }, + { + "checksum": "sha256:22db6d1e1f34a43c3d045b6750ff3a32184d47c2aedf3dabc93640057de1f4fa", + "check_gpg": true + }, + { + "checksum": "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679", + "check_gpg": true + }, + { + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "checksum": "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834", + "check_gpg": true + }, + { + "checksum": "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c", + "check_gpg": true + }, + { + "checksum": "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59", + "check_gpg": true + }, + { + "checksum": "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a", + "check_gpg": true + }, + { + "checksum": "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077", + "check_gpg": true + }, + { + "checksum": "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c", + "check_gpg": true + }, + { + "checksum": "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc", + "check_gpg": true + }, + { + "checksum": "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141", + "check_gpg": true + }, + { + "checksum": "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1", + "check_gpg": true + }, + { + "checksum": "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1", + "check_gpg": true + }, + { + "checksum": "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7", + "check_gpg": true + }, + { + "checksum": "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295", + "check_gpg": true + }, + { + "checksum": "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc", + "check_gpg": true + }, + { + "checksum": "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18", + "check_gpg": true + }, + { + "checksum": "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de", + "check_gpg": true + }, + { + "checksum": "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8", + "check_gpg": true + }, + { + "checksum": "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be", + "check_gpg": true + }, + { + "checksum": "sha256:469d12368377399b8eaa7ec8cf1b6378ab18476b4a2b61b79091510a8945c6aa", + "check_gpg": true + }, + { + "checksum": "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2", + "check_gpg": true + }, + { + "checksum": "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090", + "check_gpg": true + }, + { + "checksum": "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d", + "check_gpg": true + }, + { + "checksum": "sha256:0f26eca4ac936554818769fe32aca5e878af2616e83f836ec463e59eb4f9f1f9", + "check_gpg": true + }, + { + "checksum": "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c", + "check_gpg": true + }, + { + "checksum": "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7", + "check_gpg": true + }, + { + "checksum": "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382", + "check_gpg": true + }, + { + "checksum": "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241", + "check_gpg": true + }, + { + "checksum": "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167", + "check_gpg": true + }, + { + "checksum": "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc", + "check_gpg": true + }, + { + "checksum": "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627", + "check_gpg": true + }, + { + "checksum": "sha256:0b54f374bcbe094dbc0d52d9661fe99ebff384026ce0ea39f2d6069e27bf8bdc", + "check_gpg": true + }, + { + "checksum": "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874", + "check_gpg": true + }, + { + "checksum": "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801", + "check_gpg": true + }, + { + "checksum": "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31", + "check_gpg": true + }, + { + "checksum": "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7", + "check_gpg": true + }, + { + "checksum": "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba", + "check_gpg": true + }, + { + "checksum": "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0", + "check_gpg": true + }, + { + "checksum": "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1", + "check_gpg": true + }, + { + "checksum": "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f", + "check_gpg": true + }, + { + "checksum": "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c", + "check_gpg": true + }, + { + "checksum": "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd", + "check_gpg": true + }, + { + "checksum": "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab", + "check_gpg": true + }, + { + "checksum": "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc", + "check_gpg": true + }, + { + "checksum": "sha256:6f7fbd57db9334a3cc7983d2e920afe92abe3f7e168702612d70e9ff405d79e6", + "check_gpg": true + }, + { + "checksum": "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345", + "check_gpg": true + }, + { + "checksum": "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde", + "check_gpg": true + }, + { + "checksum": "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37", + "check_gpg": true + }, + { + "checksum": "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f", + "check_gpg": true + }, + { + "checksum": "sha256:8f7b737ccb294fd5ba1d19075ea2a50a54e0265d8efa28aae0ade59d3e3a63be", + "check_gpg": true + }, + { + "checksum": "sha256:430f2f71be063eb9d04fe38659f62e29f47c9c878f9985d0569cb49e9c89ebc0", + "check_gpg": true + }, + { + "checksum": "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43", + "check_gpg": true + }, + { + "checksum": "sha256:c976ce75eda3dbe734117f6f558eafb2061bbef66086a04cb907a7ddbaea8bc2", + "check_gpg": true + }, + { + "checksum": "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664", + "check_gpg": true + }, + { + "checksum": "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57", + "check_gpg": true + }, + { + "checksum": "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d", + "check_gpg": true + }, + { + "checksum": "sha256:45bf4bef479712936db1d6859b043d13e6cad41c851b6e621fc315b39ecfa14b", + "check_gpg": true + }, + { + "checksum": "sha256:f61555e6e74917be3f131bd5af9d9e30ed709111701e950b7ebd4392baf33f12", + "check_gpg": true + }, + { + "checksum": "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf", + "check_gpg": true + }, + { + "checksum": "sha256:8bd2655674b40e89f5f63af7f8ffafd0e9064a3378cdca050262a7272678e8e5", + "check_gpg": true + }, + { + "checksum": "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a", + "check_gpg": true + }, + { + "checksum": "sha256:6f729da330aaaea336458a8b6f3f1d2cc761693ba20bdda57fb9c49fb6f2120d", + "check_gpg": true + }, + { + "checksum": "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc", + "check_gpg": true + }, + { + "checksum": "sha256:cfeb5d0cb9c116e39292e3158c68ee62880cff4a5e3d098d20bf9567e5a576e1", + "check_gpg": true + }, + { + "checksum": "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf", + "check_gpg": true + }, + { + "checksum": "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc", + "check_gpg": true + }, + { + "checksum": "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730", + "check_gpg": true + }, + { + "checksum": "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0", + "check_gpg": true + }, + { + "checksum": "sha256:da923b379524f2d8d26905f26a9dc763cec36c40306c4c53db57100574ea89b8", + "check_gpg": true + }, + { + "checksum": "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3", + "check_gpg": true + }, + { + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "checksum": "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a", + "check_gpg": true + }, + { + "checksum": "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7", + "check_gpg": true + }, + { + "checksum": "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e", + "check_gpg": true + }, + { + "checksum": "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045", + "check_gpg": true + }, + { + "checksum": "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32", + "check_gpg": true + }, + { + "checksum": "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f", + "check_gpg": true + }, + { + "checksum": "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4", + "check_gpg": true + }, + { + "checksum": "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238", + "check_gpg": true + }, + { + "checksum": "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388", + "check_gpg": true + }, + { + "checksum": "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42", + "check_gpg": true + }, + { + "checksum": "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc", + "check_gpg": true + }, + { + "checksum": "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833", + "check_gpg": true + }, + { + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "checksum": "sha256:422625da0fbb99cc4da8eebebff892c6e73a87c81a33190f7a17e344f6bb709e", + "check_gpg": true + }, + { + "checksum": "sha256:307275b46896d56d23f5da5ab77a299941e77165ff44e846d6620eee1158131c", + "check_gpg": true + }, + { + "checksum": "sha256:a1bd1b5a2c47e57957a77d32f4fd705de1df30557837cfbc83b8f284e4ee0456", + "check_gpg": true + }, + { + "checksum": "sha256:6c1f9dc11de4d3af4d4c418b4556ee9659011d587e9da44bb039cb30ac326841", + "check_gpg": true + }, + { + "checksum": "sha256:e1bda9438577473413f3c7455ce84b6c8486adee3d4473fafcd28309ad8c2913", + "check_gpg": true + }, + { + "checksum": "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f", + "check_gpg": true + }, + { + "checksum": "sha256:9247561bad35a8a2f8269b2bbbd28d1bf5e6fcde1fe78e1fc3c0e712513e9703", + "check_gpg": true + }, + { + "checksum": "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb", + "check_gpg": true + }, + { + "checksum": "sha256:fccade859cbb884fd61c07433e6c316f794885cbb2186debcff3f6894d16d52c", + "check_gpg": true + }, + { + "checksum": "sha256:5593277fa685adba864393da8faf76950d6d8fb1483af036cdc08d8437c387bb", + "check_gpg": true + }, + { + "checksum": "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c", + "check_gpg": true + }, + { + "checksum": "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500", + "check_gpg": true + }, + { + "checksum": "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71", + "check_gpg": true + }, + { + "checksum": "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7", + "check_gpg": true + }, + { + "checksum": "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42", + "check_gpg": true + }, + { + "checksum": "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8", + "check_gpg": true + }, + { + "checksum": "sha256:95b45de2c57f35df43bff0c2ebe32c64183968b3a41c5673cfeeff5ece506b94", + "check_gpg": true + }, + { + "checksum": "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5", + "check_gpg": true + }, + { + "checksum": "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af", + "check_gpg": true + }, + { + "checksum": "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348", + "check_gpg": true + }, + { + "checksum": "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff", + "check_gpg": true + }, + { + "checksum": "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce", + "check_gpg": true + }, + { + "checksum": "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9", + "check_gpg": true + }, + { + "checksum": "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5", + "check_gpg": true + }, + { + "checksum": "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c", + "check_gpg": true + }, + { + "checksum": "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca", + "check_gpg": true + }, + { + "checksum": "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da", + "check_gpg": true + }, + { + "checksum": "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6", + "check_gpg": true + }, + { + "checksum": "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34", + "check_gpg": true + }, + { + "checksum": "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c", + "check_gpg": true + }, + { + "checksum": "sha256:e405d2edc9b9fc2c13242f0225049b071aa4159d09d8e2d501e8c4fe88a9710b", + "check_gpg": true + }, + { + "checksum": "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47", + "check_gpg": true + }, + { + "checksum": "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70", + "check_gpg": true + }, + { + "checksum": "sha256:a41579023e1db3dec06679ebc7788ece92686ea2a23c78dd749c98ddbc82d419", + "check_gpg": true + }, + { + "checksum": "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a", + "check_gpg": true + }, + { + "checksum": "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39", + "check_gpg": true + }, + { + "checksum": "sha256:764699ea124f85a7afcf65a2f138e3821770f8aa1ef134e1813e2b04477f0b74", + "check_gpg": true + }, + { + "checksum": "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83", + "check_gpg": true + }, + { + "checksum": "sha256:bfe43a646ce98fc8cdcb52738f91e0ee5b8fd43760336d267bc20500aacd15bc", + "check_gpg": true + }, + { + "checksum": "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2", + "check_gpg": true + }, + { + "checksum": "sha256:6091b138c5dee897cb1c99b0d556f3e03ce6bb2c6ad3c10fed54136092a9d694", + "check_gpg": true + }, + { + "checksum": "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519", + "check_gpg": true + }, + { + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "checksum": "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106", + "check_gpg": true + }, + { + "checksum": "sha256:cf6506ad88ecaab89efde02eee218365a36981114638c03989ba2768457ae335", + "check_gpg": true + }, + { + "checksum": "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc", + "check_gpg": true + }, + { + "checksum": "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2", + "check_gpg": true + }, + { + "checksum": "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38", + "check_gpg": true + }, + { + "checksum": "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b", + "check_gpg": true + }, + { + "checksum": "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68", + "check_gpg": true + }, + { + "checksum": "sha256:c3aa4d794cef51ba9fcbf3750baed55aabfa36062a48f61149ccf03364a0d256", + "check_gpg": true + }, + { + "checksum": "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3", + "check_gpg": true + }, + { + "checksum": "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2", + "check_gpg": true + }, + { + "checksum": "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0", + "check_gpg": true + }, + { + "checksum": "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234", + "check_gpg": true + }, + { + "checksum": "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313", + "check_gpg": true + }, + { + "checksum": "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0", + "check_gpg": true + }, + { + "checksum": "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b", + "check_gpg": true + }, + { + "checksum": "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c", + "check_gpg": true + }, + { + "checksum": "sha256:55c47c63deb00a9126c068299c01dfbdd39d58c6962138b862b92f5c7af8c898", + "check_gpg": true + }, + { + "checksum": "sha256:c459092a47bd2f904d9fe830735b512ef97b52785ee12abb2ba5c52465560f18", + "check_gpg": true + }, + { + "checksum": "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651", + "check_gpg": true + }, + { + "checksum": "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7", + "check_gpg": true + }, + { + "checksum": "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8", + "check_gpg": true + }, + { + "checksum": "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976", + "check_gpg": true + }, + { + "checksum": "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba", + "check_gpg": true + }, + { + "checksum": "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c", + "check_gpg": true + }, + { + "checksum": "sha256:adf011910ee572cb557b7340002aed9376004b786585e78e6546192a323c6d78", + "check_gpg": true + }, + { + "checksum": "sha256:118548479396b007a80bc98e8cef770ea242ef6b20cd2922d595acd4c100946d", + "check_gpg": true + }, + { + "checksum": "sha256:3553c0d8c0639d043a50ce16c3694e17d399e126b25106de0a75fc8dbc13b709", + "check_gpg": true + }, + { + "checksum": "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632", + "check_gpg": true + }, + { + "checksum": "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e", + "check_gpg": true + }, + { + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "checksum": "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9", + "check_gpg": true + }, + { + "checksum": "sha256:73a7249de97f0ad66bc1a867ac5b5d08b741ab152d4dd7ce45cc231d64126b58", + "check_gpg": true + }, + { + "checksum": "sha256:4cca3f986ddbd38cfbfb6d1c8d336a1aaed78f7da1f38356ce1e034ba35ec492", + "check_gpg": true + }, + { + "checksum": "sha256:9fea00b14943cac0e3b11ff3a319765168cf78b3cc58fdee7d5fe48246a0aa4d", + "check_gpg": true + }, + { + "checksum": "sha256:e17ef6f7d4f1869ff5813d6f8f2983cd6f5cd23d4a666b7ae19154636e911644", + "check_gpg": true + }, + { + "checksum": "sha256:9b49fdc41ba8f1284c63db29b8bda002a7256a54fdba14c9d3fccd852b8547b1", + "check_gpg": true + }, + { + "checksum": "sha256:7fc8df6b10728f46c3e752c35f6777f17025bef30f61c67f76de2538888a5546", + "check_gpg": true + }, + { + "checksum": "sha256:ee6dbb4914a35ee8a816ecde34d29221e3f4622324f6287c328e8ac22ae572ad", + "check_gpg": true + }, + { + "checksum": "sha256:cdc526097cd2fecb75e44ad11a69b10eb7804f310298c064c3b931515d4f3d5c", + "check_gpg": true + }, + { + "checksum": "sha256:2e588b5133dc8cb26ff0226f66eb1be440c6b784ec6fa67a5f0516d8ccaf46f5", + "check_gpg": true + }, + { + "checksum": "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653", + "check_gpg": true + }, + { + "checksum": "sha256:35c348bcd91fa114ad459b888131e5e5509259cffce33f22c44f92e57e9e5919", + "check_gpg": true + }, + { + "checksum": "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f", + "check_gpg": true + }, + { + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "checksum": "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02", + "check_gpg": true + }, + { + "checksum": "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a", + "check_gpg": true + }, + { + "checksum": "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552", + "check_gpg": true + }, + { + "checksum": "sha256:8221111dc9a9aa5c68805f153c3fbe5314c8a0f335af29685733b958253dd278", + "check_gpg": true + }, + { + "checksum": "sha256:1135e96b6f9ed29e4ed4c0f060876891a244442a503f0b18ab238589da20d464", + "check_gpg": true + }, + { + "checksum": "sha256:e98119ac7a707287668e7a9a74ef2809ee5f555af04f52775367e428e08dbb33", + "check_gpg": true + }, + { + "checksum": "sha256:2d9a2e736dd5231df3c5c748ce0ba5a75a409dacfe73f14676781f32d565a7df", + "check_gpg": true + }, + { + "checksum": "sha256:047f9e29fcfa56be98ca3f42249f3ccb2a93df99f2438e3983e2064025f0d79d", + "check_gpg": true + }, + { + "checksum": "sha256:143c50c0663f963c7689c1cec43b81cf1433d5d3b67eb8233ba06506c1b3e095", + "check_gpg": true + }, + { + "checksum": "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3", + "check_gpg": true + }, + { + "checksum": "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5", + "check_gpg": true + }, + { + "checksum": "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1", + "check_gpg": true + }, + { + "checksum": "sha256:ca6a71888b8d147342012c64533f61a41b26c788bbcd2844a2164ee007fac981", + "check_gpg": true + }, + { + "checksum": "sha256:a7071aa0068c9dff913c5f0523be3ffdd7f67b8f13e1ee2aa16e486b01aecc1c", + "check_gpg": true + }, + { + "checksum": "sha256:5d8d55e12443628c7a1915648845663e4aed1863805854de0adadd89772eda2a", + "check_gpg": true + }, + { + "checksum": "sha256:f85469c0c19ce86e8fdd0dd5a3e6e5c9b78e3436ae9ce70ba86b2b4a3794f693", + "check_gpg": true + }, + { + "checksum": "sha256:d90abd2b8eca279a2120bf7836503745d36432630258925292ee7dacfabe4c92", + "check_gpg": true + }, + { + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "checksum": "sha256:1b65944efe48ba0cca34011891480a1db29a7e95dad058376bfca34d68fb0791", + "check_gpg": true + }, + { + "checksum": "sha256:5a7e957102a23c9924398fe45f5cdec66edcd10adcad7130d6ebf02c2706ad49", + "check_gpg": true + }, + { + "checksum": "sha256:682af90a049fa78429d5ebd194700609f762e59ceb6c4ca28b17e7f4fd1683aa", + "check_gpg": true + }, + { + "checksum": "sha256:b703a38c0dea8bcd2be7bfb83d0f71ee2ee15a140a25998d6837261331140919", + "check_gpg": true + }, + { + "checksum": "sha256:b49419bed59686efde6fc04953c2ab64a46c2bae46227a872bb3a823538c636d", + "check_gpg": true + }, + { + "checksum": "sha256:6ed7f318c5e93b59254d7b7652131f33db713eeb61f52413f21e533069ed24bf", + "check_gpg": true + }, + { + "checksum": "sha256:fa979526906cc9182ebdb6e50c9d09deba8518f69750495fec4267a425c8f783", + "check_gpg": true + }, + { + "checksum": "sha256:32cc578c8da626a8c1a5316a59d482967a32547be6c077f73fb90e11fb0f1e6a", + "check_gpg": true + }, + { + "checksum": "sha256:d54f02fc39b3e87253808f665918d26ffe901f1228e25121c908661b47ba266b", + "check_gpg": true + }, + { + "checksum": "sha256:6c6f1152899318bdc0500cfb0b0cdbbc19ba0e017b5888ece1358250caa2629f", + "check_gpg": true + }, + { + "checksum": "sha256:a6bab7030d3296875cb0cad2c30fb18042dab8ae070c9c6f97457bb0a5cc6316", + "check_gpg": true + }, + { + "checksum": "sha256:1e049e86c5dd5c4d6737d47dd194d553ffbd65c81a4077cf6e1029a0fde80fb5", + "check_gpg": true + }, + { + "checksum": "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444", + "check_gpg": true + }, + { + "checksum": "sha256:19a9152e410c8fdd62220e79dcf4dc3d143ca04c75a09c332066ad8cc94b972e", + "check_gpg": true + }, + { + "checksum": "sha256:aacf84989a0fe55366f6d37ddd1753b8c06e5640e9334805bf468777824a3ac0", + "check_gpg": true + }, + { + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "checksum": "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142", + "check_gpg": true + }, + { + "checksum": "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7", + "check_gpg": true + }, + { + "checksum": "sha256:78b600621e00f4a0acc8f58de056ae9393ce4e1cded56837b4e557c1bc84b06b", + "check_gpg": true + }, + { + "checksum": "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d", + "check_gpg": true + }, + { + "checksum": "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc", + "check_gpg": true + }, + { + "checksum": "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e", + "check_gpg": true + }, + { + "checksum": "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663", + "check_gpg": true + }, + { + "checksum": "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2", + "check_gpg": true + }, + { + "checksum": "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac", + "check_gpg": true + }, + { + "checksum": "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03", + "check_gpg": true + }, + { + "checksum": "sha256:f50957375c79be57f391625b97d6ea74505e05f2edc6b9bc6768d5e3ad6ef8f8", + "check_gpg": true + }, + { + "checksum": "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576", + "check_gpg": true + }, + { + "checksum": "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb", + "check_gpg": true + }, + { + "checksum": "sha256:167eef09957e5abad6b99d22d9204021ae777b60320cd37d8f934cd9ac2da92a", + "check_gpg": true + }, + { + "checksum": "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165", + "check_gpg": true + }, + { + "checksum": "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108", + "check_gpg": true + }, + { + "checksum": "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a", + "check_gpg": true + }, + { + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "checksum": "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3", + "check_gpg": true + }, + { + "checksum": "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071", + "check_gpg": true + }, + { + "checksum": "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2", + "check_gpg": true + }, + { + "checksum": "sha256:687d00eb0b77446dbd78aaa0f4f99cc080c677930ad783120483614255264a3d", + "check_gpg": true + }, + { + "checksum": "sha256:6b694ee239a2e3f38c401e975de392e3731ad8b18be5a3249ea02f19e87cb5cb", + "check_gpg": true + }, + { + "checksum": "sha256:93161df6d62fe654c7cdba9ae36343d2549b437b27eac816a80f8d7c32a47162", + "check_gpg": true + }, + { + "checksum": "sha256:4f9bbd08f6019b3482342d616d6b04e6481924ea34fbfe8d30ef63402a92e9b1", + "check_gpg": true + }, + { + "checksum": "sha256:704ebfc50ace9417ed28f4530d778359a4c2f95d524c2e99346472245e30b548", + "check_gpg": true + }, + { + "checksum": "sha256:6771e14a2ea70c74e800f6122df6c056a7e2c3c16d74b9b5f96ddfd482e38326", + "check_gpg": true + }, + { + "checksum": "sha256:486f2fb09621afabdebfd0cd897c9a77d93bb21ed41dc0a18b600d48654fed64", + "check_gpg": true + }, + { + "checksum": "sha256:1ffe518fc86251b33a58280984e9d06c025190a89a2d60c50d818eaea7bca583", + "check_gpg": true + }, + { + "checksum": "sha256:fced380b3f7270b186dd2b67aef7c9f5614617e71fcea61fd903864a20a4924e", + "check_gpg": true + }, + { + "checksum": "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5", + "check_gpg": true + }, + { + "checksum": "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454", + "check_gpg": true + }, + { + "checksum": "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612", + "check_gpg": true + }, + { + "checksum": "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1", + "check_gpg": true + }, + { + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "checksum": "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c", + "check_gpg": true + }, + { + "checksum": "sha256:9975496f29601a1c2cdb89e63aac698fdd8283ba3a52a9d91ead9473a0e064c8", + "check_gpg": true + }, + { + "checksum": "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18", + "check_gpg": true + }, + { + "checksum": "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df", + "check_gpg": true + }, + { + "checksum": "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f", + "check_gpg": true + }, + { + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "checksum": "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7", + "check_gpg": true + }, + { + "checksum": "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f", + "check_gpg": true + }, + { + "checksum": "sha256:d2c819a7e607a9e22f55047ed03d064e4b0f125ad4fb20532c543a6d8af8bfa5", + "check_gpg": true + }, + { + "checksum": "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa", + "check_gpg": true + }, + { + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "checksum": "sha256:b3c4cfdf820225133f4e9e600de3300ef0c7bac34139433505dd4482da52be22", + "check_gpg": true + }, + { + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "checksum": "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05", + "check_gpg": true + }, + { + "checksum": "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431", + "check_gpg": true + }, + { + "checksum": "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488", + "check_gpg": true + }, + { + "checksum": "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c", + "check_gpg": true + }, + { + "checksum": "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "redhat": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "vfs_type": "ext4", + "path": "/", + "options": "defaults", + "freq": 1, + "passno": 1 + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "kernel_opts": "ro biosdevname=0 net.ifnames=0", + "legacy": "i386-pc" + } + }, + { + "name": "org.osbuild.systemd", + "options": { + "enabled_services": [ + "cloud-init.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service" + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "qcow2", + "filename": "disk.qcow2", + "size": 2147483648, + "ptuuid": "0x14fc63d2", + "pttype": "mbr", + "partitions": [ + { + "start": 2048, + "bootable": true, + "filesystem": { + "type": "ext4", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.111", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm", + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/acl-2.2.53-4.fc31.x86_64.rpm", + "checksum": "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d", + "check_gpg": true + }, + { + "name": "adobe-source-code-pro-fonts", + "epoch": 0, + "version": "2.030.1.050", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm", + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "name": "adwaita-cursor-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "name": "adwaita-icon-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/alternatives-1.11-5.fc31.x86_64.rpm", + "checksum": "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081", + "check_gpg": true + }, + { + "name": "at-spi2-atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.x86_64.rpm", + "checksum": "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355", + "check_gpg": true + }, + { + "name": "at-spi2-core", + "epoch": 0, + "version": "2.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1", + "check_gpg": true + }, + { + "name": "atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/atk-2.34.1-1.fc31.x86_64.rpm", + "checksum": "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm", + "checksum": "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09", + "check_gpg": true + }, + { + "name": "avahi-libs", + "epoch": 0, + "version": "0.7", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/avahi-libs-0.7-20.fc31.x86_64.rpm", + "checksum": "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "8.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm", + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bash-5.0.7-3.fc31.x86_64.rpm", + "checksum": "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3", + "check_gpg": true + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.7", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/brotli-1.0.7-6.fc31.x86_64.rpm", + "checksum": "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.x86_64.rpm", + "checksum": "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm", + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "name": "cairo", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-1.16.0-6.fc31.x86_64.rpm", + "checksum": "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a", + "check_gpg": true + }, + { + "name": "cairo-gobject", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.x86_64.rpm", + "checksum": "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3", + "check_gpg": true + }, + { + "name": "colord-libs", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/colord-libs-1.4.4-2.fc31.x86_64.rpm", + "checksum": "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-8.31-4.fc31.x86_64.rpm", + "checksum": "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-common-8.31-4.fc31.x86_64.rpm", + "checksum": "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "12.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cpio-2.12-12.fc31.x86_64.rpm", + "checksum": "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-2.9.6-21.fc31.x86_64.rpm", + "checksum": "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.x86_64.rpm", + "checksum": "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20190816", + "release": "4.gitbb9bf99.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm", + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8", + "check_gpg": true + }, + { + "name": "cups-libs", + "epoch": 1, + "version": "2.2.12", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cups-libs-2.2.12-2.fc31.x86_64.rpm", + "checksum": "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/curl-7.66.0-1.fc31.x86_64.rpm", + "checksum": "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.x86_64.rpm", + "checksum": "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-1.12.16-3.fc31.x86_64.rpm", + "checksum": "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "21", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-broker-21-6.fc31.x86_64.rpm", + "checksum": "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm", + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-3.fc31.x86_64.rpm", + "checksum": "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71", + "check_gpg": true + }, + { + "name": "dconf", + "epoch": 0, + "version": "0.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dconf-0.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-2.fc31.x86_64.rpm", + "checksum": "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-1.02.163-2.fc31.x86_64.rpm", + "checksum": "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.x86_64.rpm", + "checksum": "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/diffutils-3.7-3.fc31.x86_64.rpm", + "checksum": "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dosfstools-4.1-9.fc31.x86_64.rpm", + "checksum": "sha256:b110ee65fa2dee77585ec77cab592cba2434d579f8afbed4d2a908ad1addccfc", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "27.git20181204.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-049-27.git20181204.fc31.1.x86_64.rpm", + "checksum": "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm", + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libelf-0.177-1.fc31.x86_64.rpm", + "checksum": "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libs-0.177-1.fc31.x86_64.rpm", + "checksum": "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/expat-2.2.8-1.fc31.x86_64.rpm", + "checksum": "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm", + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-31-1.noarch.rpm", + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-common-31-1.noarch.rpm", + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-repos-31-1.noarch.rpm", + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-5.37-3.fc31.x86_64.rpm", + "checksum": "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-libs-5.37-3.fc31.x86_64.rpm", + "checksum": "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.12", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/filesystem-3.12-2.fc31.x86_64.rpm", + "checksum": "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "24.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/findutils-4.6.0-24.fc31.x86_64.rpm", + "checksum": "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-7.fc31.x86_64.rpm", + "checksum": "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.x86_64.rpm", + "checksum": "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2", + "check_gpg": true + }, + { + "name": "fontconfig", + "epoch": 0, + "version": "2.13.92", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontconfig-2.13.92-3.fc31.x86_64.rpm", + "checksum": "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54", + "check_gpg": true + }, + { + "name": "fontpackages-filesystem", + "epoch": 0, + "version": "1.44", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm", + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.10.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/freetype-2.10.0-3.fc31.x86_64.rpm", + "checksum": "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee", + "check_gpg": true + }, + { + "name": "fribidi", + "epoch": 0, + "version": "1.0.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fribidi-1.0.5-4.fc31.x86_64.rpm", + "checksum": "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-8.fc31.x86_64.rpm", + "checksum": "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gawk-5.0.1-5.fc31.x86_64.rpm", + "checksum": "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203", + "check_gpg": true + }, + { + "name": "gcr", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-3.33.4-1.fc31.x86_64.rpm", + "checksum": "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd", + "check_gpg": true + }, + { + "name": "gcr-base", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-base-3.33.4-1.fc31.x86_64.rpm", + "checksum": "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.x86_64.rpm", + "checksum": "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.x86_64.rpm", + "checksum": "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2-modules", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.x86_64.rpm", + "checksum": "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3", + "check_gpg": true + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib-networking-2.62.1-1.fc31.x86_64.rpm", + "checksum": "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib2-2.62.1-1.fc31.x86_64.rpm", + "checksum": "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13", + "check_gpg": true + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:f67d5cc67029c6c38185f94b72aaa9034a49f5c4f166066c8268b41e1b18a202", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-common-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gmp-6.1.2-10.fc31.x86_64.rpm", + "checksum": "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a", + "check_gpg": true + }, + { + "name": "gnome-keyring", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-2.2.17-2.fc31.x86_64.rpm", + "checksum": "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.x86_64.rpm", + "checksum": "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnutls-3.6.10-1.fc31.x86_64.rpm", + "checksum": "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gpgme-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d", + "check_gpg": true + }, + { + "name": "graphite2", + "epoch": 0, + "version": "1.3.13", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/graphite2-1.3.13-1.fc31.x86_64.rpm", + "checksum": "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grep-3.3-3.fc31.x86_64.rpm", + "checksum": "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-common-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8", + "check_gpg": true + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-extra-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031", + "check_gpg": true + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8", + "check_gpg": true + }, + { + "name": "gtk-update-icon-cache", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.x86_64.rpm", + "checksum": "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d", + "check_gpg": true + }, + { + "name": "gtk3", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk3-3.24.12-3.fc31.x86_64.rpm", + "checksum": "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gzip-1.10-1.fc31.x86_64.rpm", + "checksum": "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01", + "check_gpg": true + }, + { + "name": "harfbuzz", + "epoch": 0, + "version": "2.6.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/harfbuzz-2.6.1-2.fc31.x86_64.rpm", + "checksum": "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994", + "check_gpg": true + }, + { + "name": "hicolor-icon-theme", + "epoch": 0, + "version": "0.17", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm", + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.x86_64.rpm", + "checksum": "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.3", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-libs-1.8.3-5.fc31.x86_64.rpm", + "checksum": "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4", + "check_gpg": true + }, + { + "name": "jasper-libs", + "epoch": 0, + "version": "2.0.14", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jasper-libs-2.0.14-9.fc31.x86_64.rpm", + "checksum": "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00", + "check_gpg": true + }, + { + "name": "jbigkit-libs", + "epoch": 0, + "version": "2.1", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jbigkit-libs-2.1-17.fc31.x86_64.rpm", + "checksum": "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-c-0.13.1-6.fc31.x86_64.rpm", + "checksum": "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422", + "check_gpg": true + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-glib-1.4.4-3.fc31.x86_64.rpm", + "checksum": "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-2.0.4-14.fc31.x86_64.rpm", + "checksum": "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-legacy-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-misc-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-3.fc31.x86_64.rpm", + "checksum": "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-26-4.fc31.x86_64.rpm", + "checksum": "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-libs-26-4.fc31.x86_64.rpm", + "checksum": "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kpartx-0.8.0-3.fc31.x86_64.rpm", + "checksum": "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.17", + "release": "45.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/krb5-libs-1.17-45.fc31.x86_64.rpm", + "checksum": "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466", + "check_gpg": true + }, + { + "name": "lcms2", + "epoch": 0, + "version": "2.9", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lcms2-2.9-6.fc31.x86_64.rpm", + "checksum": "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b", + "check_gpg": true + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-1.6.8-3.fc31.x86_64.rpm", + "checksum": "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679", + "check_gpg": true + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm", + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXau-1.0.9-2.fc31.x86_64.rpm", + "checksum": "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834", + "check_gpg": true + }, + { + "name": "libXcomposite", + "epoch": 0, + "version": "0.4.4", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcomposite-0.4.4-17.fc31.x86_64.rpm", + "checksum": "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c", + "check_gpg": true + }, + { + "name": "libXcursor", + "epoch": 0, + "version": "1.1.15", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcursor-1.1.15-6.fc31.x86_64.rpm", + "checksum": "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59", + "check_gpg": true + }, + { + "name": "libXdamage", + "epoch": 0, + "version": "1.1.4", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXdamage-1.1.4-17.fc31.x86_64.rpm", + "checksum": "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a", + "check_gpg": true + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXext-1.3.4-2.fc31.x86_64.rpm", + "checksum": "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077", + "check_gpg": true + }, + { + "name": "libXfixes", + "epoch": 0, + "version": "5.0.3", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXfixes-5.0.3-10.fc31.x86_64.rpm", + "checksum": "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c", + "check_gpg": true + }, + { + "name": "libXft", + "epoch": 0, + "version": "2.3.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXft-2.3.3-2.fc31.x86_64.rpm", + "checksum": "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc", + "check_gpg": true + }, + { + "name": "libXi", + "epoch": 0, + "version": "1.7.10", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXi-1.7.10-2.fc31.x86_64.rpm", + "checksum": "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141", + "check_gpg": true + }, + { + "name": "libXinerama", + "epoch": 0, + "version": "1.1.4", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXinerama-1.1.4-4.fc31.x86_64.rpm", + "checksum": "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1", + "check_gpg": true + }, + { + "name": "libXrandr", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrandr-1.5.2-2.fc31.x86_64.rpm", + "checksum": "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1", + "check_gpg": true + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrender-0.9.10-10.fc31.x86_64.rpm", + "checksum": "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7", + "check_gpg": true + }, + { + "name": "libXtst", + "epoch": 0, + "version": "1.2.3", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXtst-1.2.3-10.fc31.x86_64.rpm", + "checksum": "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libacl-2.2.53-4.fc31.x86_64.rpm", + "checksum": "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc", + "check_gpg": true + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.111", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libaio-0.3.111-6.fc31.x86_64.rpm", + "checksum": "sha256:ee6596a5010c2b4a038861828ecca240aa03c592dacd83c3a70d44cb8ee50408", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libarchive-3.4.0-1.fc31.x86_64.rpm", + "checksum": "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libargon2-20171227-3.fc31.x86_64.rpm", + "checksum": "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libassuan-2.5.3-2.fc31.x86_64.rpm", + "checksum": "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libattr-2.4.48-7.fc31.x86_64.rpm", + "checksum": "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libblkid-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-2.26-6.fc31.x86_64.rpm", + "checksum": "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-ng-0.7.9-8.fc31.x86_64.rpm", + "checksum": "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcom_err-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcomps-0.1.11-3.fc31.x86_64.rpm", + "checksum": "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcroco-0.6.13-2.fc31.x86_64.rpm", + "checksum": "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcurl-7.66.0-1.fc31.x86_64.rpm", + "checksum": "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241", + "check_gpg": true + }, + { + "name": "libdatrie", + "epoch": 0, + "version": "0.2.9", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdatrie-0.2.9-10.fc31.x86_64.rpm", + "checksum": "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-5.3.28-38.fc31.x86_64.rpm", + "checksum": "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-38.fc31.x86_64.rpm", + "checksum": "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdnf-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "28.20190324cvs.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.x86_64.rpm", + "checksum": "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801", + "check_gpg": true + }, + { + "name": "libepoxy", + "epoch": 0, + "version": "1.5.3", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libepoxy-1.5.3-4.fc31.x86_64.rpm", + "checksum": "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libevent-2.1.8-7.fc31.x86_64.rpm", + "checksum": "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libfdisk-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "23.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libffi-3.1-23.fc31.x86_64.rpm", + "checksum": "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcc-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-1.fc31.x86_64.rpm", + "checksum": "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgomp-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgpg-error-1.36-2.fc31.x86_64.rpm", + "checksum": "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd", + "check_gpg": true + }, + { + "name": "libgusb", + "epoch": 0, + "version": "0.3.0", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgusb-0.3.0-5.fc31.x86_64.rpm", + "checksum": "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libidn2-2.2.0-2.fc31.x86_64.rpm", + "checksum": "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc", + "check_gpg": true + }, + { + "name": "libjpeg-turbo", + "epoch": 0, + "version": "2.0.2", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.x86_64.rpm", + "checksum": "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-1.fc31.x86_64.rpm", + "checksum": "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-1.fc31.x86_64.rpm", + "checksum": "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libksba-1.3.5-10.fc31.x86_64.rpm", + "checksum": "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-9.fc31.x86_64.rpm", + "checksum": "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43", + "check_gpg": true + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodman-2.0.1-20.fc31.x86_64.rpm", + "checksum": "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664", + "check_gpg": true + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.15", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.x86_64.rpm", + "checksum": "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmount-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.39.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnghttp2-1.39.2-1.fc31.x86_64.rpm", + "checksum": "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "5.20180605git4a062cf.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.x86_64.rpm", + "checksum": "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.0", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpcap-1.9.0-4.fc31.x86_64.rpm", + "checksum": "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc", + "check_gpg": true + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.37", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpng-1.6.37-2.fc31.x86_64.rpm", + "checksum": "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf", + "check_gpg": true + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libproxy-0.4.15-14.fc31.x86_64.rpm", + "checksum": "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpsl-0.21.0-2.fc31.x86_64.rpm", + "checksum": "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpwquality-1.4.1-1.fc31.x86_64.rpm", + "checksum": "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.10.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/librepo-1.10.5-1.fc31.x86_64.rpm", + "checksum": "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.10.1", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm", + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libseccomp-2.4.1-1.fc31.x86_64.rpm", + "checksum": "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.19.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsecret-0.19.1-1.fc31.x86_64.rpm", + "checksum": "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-utils-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsemanage-2.9-3.fc31.x86_64.rpm", + "checksum": "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsepol-2.9-2.fc31.x86_64.rpm", + "checksum": "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsigsegv-2.11-8.fc31.x86_64.rpm", + "checksum": "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsmartcols-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.5", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsolv-0.7.5-3.fc31.x86_64.rpm", + "checksum": "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388", + "check_gpg": true + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.68.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsoup-2.68.2-1.fc31.x86_64.rpm", + "checksum": "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libss-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-0.9.0-6.fc31.x86_64.rpm", + "checksum": "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm", + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libstdc++-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.14", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtasn1-4.14-2.fc31.x86_64.rpm", + "checksum": "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c", + "check_gpg": true + }, + { + "name": "libthai", + "epoch": 0, + "version": "0.1.28", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libthai-0.1.28-3.fc31.x86_64.rpm", + "checksum": "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500", + "check_gpg": true + }, + { + "name": "libtiff", + "epoch": 0, + "version": "4.0.10", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtiff-4.0.10-6.fc31.x86_64.rpm", + "checksum": "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "2.rc3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.x86_64.rpm", + "checksum": "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libunistring-0.9.10-6.fc31.x86_64.rpm", + "checksum": "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.22", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libusbx-1.0.22-4.fc31.x86_64.rpm", + "checksum": "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libutempter-1.1.6-17.fc31.x86_64.rpm", + "checksum": "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuuid-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libverto-0.3.0-8.fc31.x86_64.rpm", + "checksum": "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348", + "check_gpg": true + }, + { + "name": "libwayland-client", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-client-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff", + "check_gpg": true + }, + { + "name": "libwayland-cursor", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce", + "check_gpg": true + }, + { + "name": "libwayland-egl", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9", + "check_gpg": true + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcb-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-4.4.10-1.fc31.x86_64.rpm", + "checksum": "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.10-1.fc31.x86_64.rpm", + "checksum": "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.8.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.x86_64.rpm", + "checksum": "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxml2-2.9.9-3.fc31.x86_64.rpm", + "checksum": "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libyaml-0.2.2-2.fc31.x86_64.rpm", + "checksum": "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libzstd-1.4.2-1.fc31.x86_64.rpm", + "checksum": "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-6.fc31.x86_64.rpm", + "checksum": "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-1.fc31.x86_64.rpm", + "checksum": "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mkpasswd-5.5.2-1.fc31.x86_64.rpm", + "checksum": "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mpfr-3.1.6-5.fc31.x86_64.rpm", + "checksum": "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-6.1-12.20190803.fc31.x86_64.rpm", + "checksum": "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm", + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.x86_64.rpm", + "checksum": "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nettle-3.5.1-3.fc31.x86_64.rpm", + "checksum": "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/npth-1.6-3.fc31.x86_64.rpm", + "checksum": "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openldap-2.4.47-3.fc31.x86_64.rpm", + "checksum": "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-1.1.1d-2.fc31.x86_64.rpm", + "checksum": "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.x86_64.rpm", + "checksum": "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.x86_64.rpm", + "checksum": "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/os-prober-1.77-3.fc31.x86_64.rpm", + "checksum": "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.x86_64.rpm", + "checksum": "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.x86_64.rpm", + "checksum": "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "18.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pam-1.3.1-18.fc31.x86_64.rpm", + "checksum": "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b", + "check_gpg": true + }, + { + "name": "pango", + "epoch": 0, + "version": "1.44.6", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pango-1.44.6-1.fc31.x86_64.rpm", + "checksum": "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.43", + "release": "2.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre-8.43-2.fc31.1.x86_64.rpm", + "checksum": "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.33", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre2-10.33-14.fc31.x86_64.rpm", + "checksum": "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pigz-2.4-5.fc31.x86_64.rpm", + "checksum": "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pinentry-1.1.0-6.fc31.x86_64.rpm", + "checksum": "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976", + "check_gpg": true + }, + { + "name": "pixman", + "epoch": 0, + "version": "0.38.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pixman-0.38.4-1.fc31.x86_64.rpm", + "checksum": "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/policycoreutils-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "18.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/popt-1.16-18.fc31.x86_64.rpm", + "checksum": "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-6.fc31.x86_64.rpm", + "checksum": "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm", + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm", + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-3.7.4-5.fc31.x86_64.rpm", + "checksum": "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.x86_64.rpm", + "checksum": "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libs-3.7.4-5.fc31.x86_64.rpm", + "checksum": "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-rpm-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-unbound-1.9.3-1.fc31.x86_64.rpm", + "checksum": "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7", + "check_gpg": true + }, + { + "name": "qemu-img", + "epoch": 2, + "version": "4.1.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qemu-img-4.1.0-2.fc31.x86_64.rpm", + "checksum": "sha256:669250ad47aad5939cf4d1b88036fd95a94845d8e0bbdb05e933f3d2fe262fea", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.x86_64.rpm", + "checksum": "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/readline-8.0-3.fc31.x86_64.rpm", + "checksum": "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc", + "check_gpg": true + }, + { + "name": "rest", + "epoch": 0, + "version": "0.8.1", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rest-0.8.1-6.fc31.x86_64.rpm", + "checksum": "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sed-4.5-4.fc31.x86_64.rpm", + "checksum": "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.3", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm", + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "16.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shadow-utils-4.6-16.fc31.x86_64.rpm", + "checksum": "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.14", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shared-mime-info-1.14-1.fc31.x86_64.rpm", + "checksum": "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.29.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.x86_64.rpm", + "checksum": "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5", + "check_gpg": true + }, + { + "name": "systemd-bootchart", + "epoch": 0, + "version": "233", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-bootchart-233-5.fc31.x86_64.rpm", + "checksum": "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm", + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-udev-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tar-1.32-2.fc31.x86_64.rpm", + "checksum": "sha256:9975496f29601a1c2cdb89e63aac698fdd8283ba3a52a9d91ead9473a0e064c8", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tss2-1331-2.fc31.x86_64.rpm", + "checksum": "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm", + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/unbound-libs-1.9.3-1.fc31.x86_64.rpm", + "checksum": "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/util-linux-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "15.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/which-2.21-15.fc31.x86_64.rpm", + "checksum": "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm", + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.27", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm", + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-5.2.4-6.fc31.x86_64.rpm", + "checksum": "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-libs-5.2.4-6.fc31.x86_64.rpm", + "checksum": "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.2", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.x86_64.rpm", + "checksum": "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "19.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zlib-1.2.11-19.fc31.x86_64.rpm", + "checksum": "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9", + "check_gpg": true + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.20.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/NetworkManager-1.20.4-1.fc31.x86_64.rpm", + "checksum": "sha256:6d8cbba688cea65fa80983cd7f140633e94cd58daa819342d1ae571a4ff174c6", + "check_gpg": true + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.20.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.20.4-1.fc31.x86_64.rpm", + "checksum": "sha256:2c5b5ce5f6e6d1d79f35eab253a12e19aeb863f4fe8ded94013f76a9834689fb", + "check_gpg": true + }, + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.111", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm", + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/acl-2.2.53-4.fc31.x86_64.rpm", + "checksum": "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d", + "check_gpg": true + }, + { + "name": "adobe-source-code-pro-fonts", + "epoch": 0, + "version": "2.030.1.050", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm", + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "name": "adwaita-cursor-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "name": "adwaita-icon-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/alternatives-1.11-5.fc31.x86_64.rpm", + "checksum": "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081", + "check_gpg": true + }, + { + "name": "at-spi2-atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.x86_64.rpm", + "checksum": "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355", + "check_gpg": true + }, + { + "name": "at-spi2-core", + "epoch": 0, + "version": "2.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1", + "check_gpg": true + }, + { + "name": "atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/atk-2.34.1-1.fc31.x86_64.rpm", + "checksum": "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5", + "check_gpg": true + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm", + "checksum": "sha256:cc02df4125eaebf642edd9bf00031ec09871c285816c03112909ef1005410eaa", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm", + "checksum": "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09", + "check_gpg": true + }, + { + "name": "avahi-libs", + "epoch": 0, + "version": "0.7", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/avahi-libs-0.7-20.fc31.x86_64.rpm", + "checksum": "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "8.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm", + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bash-5.0.7-3.fc31.x86_64.rpm", + "checksum": "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3", + "check_gpg": true + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.7", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/brotli-1.0.7-6.fc31.x86_64.rpm", + "checksum": "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1", + "check_gpg": true + }, + { + "name": "bzip2", + "epoch": 0, + "version": "1.0.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bzip2-1.0.8-1.fc31.x86_64.rpm", + "checksum": "sha256:d334fe6e150349148b9cb77e32523029311ce8cb10d222d11c951b66637bbd3a", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.x86_64.rpm", + "checksum": "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7", + "check_gpg": true + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.15.0", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/c-ares-1.15.0-4.fc31.x86_64.rpm", + "checksum": "sha256:239a9576864532edd325e72b62a10ef147a2bcc0a925079b19fb9cb74bab0dd7", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm", + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "name": "cairo", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-1.16.0-6.fc31.x86_64.rpm", + "checksum": "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a", + "check_gpg": true + }, + { + "name": "cairo-gobject", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.x86_64.rpm", + "checksum": "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3", + "check_gpg": true + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "2.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/checkpolicy-2.9-2.fc31.x86_64.rpm", + "checksum": "sha256:3629a3675c7dadd89f3b3d855e7c57d8f93d30d59fa00fdeabfc5e5e39ca4937", + "check_gpg": true + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/chrony-3.5-4.fc31.x86_64.rpm", + "checksum": "sha256:07a3523159719382e2bb9b83961bfe00836cc97f75a9706d02ad73dddb161856", + "check_gpg": true + }, + { + "name": "cloud-init", + "epoch": 0, + "version": "17.1", + "release": "11.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cloud-init-17.1-11.fc31.noarch.rpm", + "checksum": "sha256:9cc3e6534ae34343e7e4d056d46b9551da7d0a82c7bad378c3626d4b70d1bf62", + "check_gpg": true + }, + { + "name": "cloud-utils-growpart", + "epoch": 0, + "version": "0.31", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cloud-utils-growpart-0.31-3.fc31.noarch.rpm", + "checksum": "sha256:101fa551ae1ae1885c1627fec47745eb0071ae675a762002e02c0563de89ecbd", + "check_gpg": true + }, + { + "name": "colord-libs", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/colord-libs-1.4.4-2.fc31.x86_64.rpm", + "checksum": "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-8.31-4.fc31.x86_64.rpm", + "checksum": "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-common-8.31-4.fc31.x86_64.rpm", + "checksum": "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "12.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cpio-2.12-12.fc31.x86_64.rpm", + "checksum": "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-2.9.6-21.fc31.x86_64.rpm", + "checksum": "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.x86_64.rpm", + "checksum": "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20190816", + "release": "4.gitbb9bf99.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm", + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8", + "check_gpg": true + }, + { + "name": "cups-libs", + "epoch": 1, + "version": "2.2.12", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cups-libs-2.2.12-2.fc31.x86_64.rpm", + "checksum": "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/curl-7.66.0-1.fc31.x86_64.rpm", + "checksum": "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.x86_64.rpm", + "checksum": "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-1.12.16-3.fc31.x86_64.rpm", + "checksum": "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "21", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-broker-21-6.fc31.x86_64.rpm", + "checksum": "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm", + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-3.fc31.x86_64.rpm", + "checksum": "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71", + "check_gpg": true + }, + { + "name": "dconf", + "epoch": 0, + "version": "0.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dconf-0.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27", + "check_gpg": true + }, + { + "name": "dejavu-fonts-common", + "epoch": 0, + "version": "2.37", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dejavu-fonts-common-2.37-2.fc31.noarch.rpm", + "checksum": "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc", + "check_gpg": true + }, + { + "name": "dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-2.fc31.noarch.rpm", + "checksum": "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-2.fc31.x86_64.rpm", + "checksum": "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-1.02.163-2.fc31.x86_64.rpm", + "checksum": "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.x86_64.rpm", + "checksum": "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732", + "check_gpg": true + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.4.1", + "release": "15.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dhcp-client-4.4.1-15.fc31.x86_64.rpm", + "checksum": "sha256:33334afdde6c813b18c18897dca19fab5a2ce090eba0b5ea0a38f43f1081c190", + "check_gpg": true + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.4.1", + "release": "15.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dhcp-common-4.4.1-15.fc31.noarch.rpm", + "checksum": "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/diffutils-3.7-3.fc31.x86_64.rpm", + "checksum": "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.9", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-plugins-core-4.0.9-1.fc31.noarch.rpm", + "checksum": "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "27.git20181204.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-049-27.git20181204.fc31.1.x86_64.rpm", + "checksum": "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159", + "check_gpg": true + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "049", + "release": "27.git20181204.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-config-generic-049-27.git20181204.fc31.1.x86_64.rpm", + "checksum": "sha256:34a9986b8b61812ceaf32ce3b189bd0b2cb4adaaf47d76ec1f50ce07c45b5675", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm", + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libelf-0.177-1.fc31.x86_64.rpm", + "checksum": "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libs-0.177-1.fc31.x86_64.rpm", + "checksum": "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/expat-2.2.8-1.fc31.x86_64.rpm", + "checksum": "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm", + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "name": "fedora-release-cloud", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-cloud-31-1.noarch.rpm", + "checksum": "sha256:06512e0f2546baf5c47a058d872fc62c39156bc86b5619eb841b435e2cc61e32", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-common-31-1.noarch.rpm", + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-repos-31-1.noarch.rpm", + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-5.37-3.fc31.x86_64.rpm", + "checksum": "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-libs-5.37-3.fc31.x86_64.rpm", + "checksum": "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.12", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/filesystem-3.12-2.fc31.x86_64.rpm", + "checksum": "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "24.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/findutils-4.6.0-24.fc31.x86_64.rpm", + "checksum": "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-7.fc31.x86_64.rpm", + "checksum": "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.x86_64.rpm", + "checksum": "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2", + "check_gpg": true + }, + { + "name": "fontconfig", + "epoch": 0, + "version": "2.13.92", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontconfig-2.13.92-3.fc31.x86_64.rpm", + "checksum": "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54", + "check_gpg": true + }, + { + "name": "fontpackages-filesystem", + "epoch": 0, + "version": "1.44", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm", + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.10.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/freetype-2.10.0-3.fc31.x86_64.rpm", + "checksum": "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee", + "check_gpg": true + }, + { + "name": "fribidi", + "epoch": 0, + "version": "1.0.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fribidi-1.0.5-4.fc31.x86_64.rpm", + "checksum": "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-8.fc31.x86_64.rpm", + "checksum": "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gawk-5.0.1-5.fc31.x86_64.rpm", + "checksum": "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203", + "check_gpg": true + }, + { + "name": "gcr", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-3.33.4-1.fc31.x86_64.rpm", + "checksum": "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd", + "check_gpg": true + }, + { + "name": "gcr-base", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-base-3.33.4-1.fc31.x86_64.rpm", + "checksum": "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.x86_64.rpm", + "checksum": "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.x86_64.rpm", + "checksum": "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2-modules", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.x86_64.rpm", + "checksum": "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c", + "check_gpg": true + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20190806", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/geolite2-city-20190806-1.fc31.noarch.rpm", + "checksum": "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565", + "check_gpg": true + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20190806", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/geolite2-country-20190806-1.fc31.noarch.rpm", + "checksum": "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3", + "check_gpg": true + }, + { + "name": "git-core", + "epoch": 0, + "version": "2.23.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/git-core-2.23.0-1.fc31.x86_64.rpm", + "checksum": "sha256:36f24cbb8727406af1448c055971cca1956eaf0f1183320e1ed2df1c61c69451", + "check_gpg": true + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib-networking-2.62.1-1.fc31.x86_64.rpm", + "checksum": "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib2-2.62.1-1.fc31.x86_64.rpm", + "checksum": "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-common-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb", + "check_gpg": true + }, + { + "name": "glibc-langpack-en", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:6f2dae9b49bed8e1036a21aadd92ea2eb371979f6714ec2bce5742de051eeb14", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gmp-6.1.2-10.fc31.x86_64.rpm", + "checksum": "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a", + "check_gpg": true + }, + { + "name": "gnome-keyring", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-2.2.17-2.fc31.x86_64.rpm", + "checksum": "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.x86_64.rpm", + "checksum": "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnutls-3.6.10-1.fc31.x86_64.rpm", + "checksum": "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gpgme-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d", + "check_gpg": true + }, + { + "name": "graphite2", + "epoch": 0, + "version": "1.3.13", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/graphite2-1.3.13-1.fc31.x86_64.rpm", + "checksum": "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grep-3.3-3.fc31.x86_64.rpm", + "checksum": "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada", + "check_gpg": true + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/groff-base-1.22.3-20.fc31.x86_64.rpm", + "checksum": "sha256:21ccdbe703caa6a08056d2bc75c1e184f811472a6e320e5af64b8757fcd07166", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-common-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8", + "check_gpg": true + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-extra-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031", + "check_gpg": true + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "36.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grubby-8.40-36.fc31.x86_64.rpm", + "checksum": "sha256:eac54fb3ab5e4c457aa6522398560713ce91394662ca11b554684bda2e0ab2af", + "check_gpg": true + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8", + "check_gpg": true + }, + { + "name": "gtk-update-icon-cache", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.x86_64.rpm", + "checksum": "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d", + "check_gpg": true + }, + { + "name": "gtk3", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk3-3.24.12-3.fc31.x86_64.rpm", + "checksum": "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gzip-1.10-1.fc31.x86_64.rpm", + "checksum": "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01", + "check_gpg": true + }, + { + "name": "harfbuzz", + "epoch": 0, + "version": "2.6.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/harfbuzz-2.6.1-2.fc31.x86_64.rpm", + "checksum": "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994", + "check_gpg": true + }, + { + "name": "heat-cfntools", + "epoch": 0, + "version": "1.4.2", + "release": "9.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/heat-cfntools-1.4.2-9.fc31.noarch.rpm", + "checksum": "sha256:456252f83ba91a1150f180a81998c3acdd71be57a324cf84d6d842a063c56a12", + "check_gpg": true + }, + { + "name": "hicolor-icon-theme", + "epoch": 0, + "version": "0.17", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm", + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.20", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hostname-3.20-9.fc31.x86_64.rpm", + "checksum": "sha256:a188b5c697b734d4ed7d8f954b6875b9d401dc2a3c10bfd20d03db131ca73ab5", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.x86_64.rpm", + "checksum": "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6", + "check_gpg": true + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.02", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/initscripts-10.02-2.fc31.x86_64.rpm", + "checksum": "sha256:2af3bbdab1f387ae7af2534846e33ab6d2ca7777399c64191f95699d576cd4ba", + "check_gpg": true + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.2.5", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipcalc-0.2.5-3.fc31.x86_64.rpm", + "checksum": "sha256:c8e0a36410ebbd9db0a10e1fbecbae8f6288b9be86752d2e91725d5dd98ec65d", + "check_gpg": true + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.3.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iproute-5.3.0-1.fc31.x86_64.rpm", + "checksum": "sha256:cef060334e8c21b5d2e3a87bdd0ad5ac1be389d7794735506b9d3c65c2923cd3", + "check_gpg": true + }, + { + "name": "iproute-tc", + "epoch": 0, + "version": "5.3.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iproute-tc-5.3.0-1.fc31.x86_64.rpm", + "checksum": "sha256:d219a6c4a2410d6ef9bad2b337557779b969e278b657ffede83c021c20f665ca", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.3", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-libs-1.8.3-5.fc31.x86_64.rpm", + "checksum": "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4", + "check_gpg": true + }, + { + "name": "iputils", + "epoch": 0, + "version": "20190515", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iputils-20190515-3.fc31.x86_64.rpm", + "checksum": "sha256:72b5df6982fecdbee30d40bbb6042c72ed0f31b787f289b4a27f0dffc6f609fe", + "check_gpg": true + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.12", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jansson-2.12-4.fc31.x86_64.rpm", + "checksum": "sha256:dc924dd33a9bd0b9483ebdbcf7caecbe1f48b8a135f1521291c8433fa76f4603", + "check_gpg": true + }, + { + "name": "jasper-libs", + "epoch": 0, + "version": "2.0.14", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jasper-libs-2.0.14-9.fc31.x86_64.rpm", + "checksum": "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00", + "check_gpg": true + }, + { + "name": "jbigkit-libs", + "epoch": 0, + "version": "2.1", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jbigkit-libs-2.1-17.fc31.x86_64.rpm", + "checksum": "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-c-0.13.1-6.fc31.x86_64.rpm", + "checksum": "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422", + "check_gpg": true + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-glib-1.4.4-3.fc31.x86_64.rpm", + "checksum": "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-2.0.4-14.fc31.x86_64.rpm", + "checksum": "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-legacy-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-misc-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "5.3.7", + "release": "301.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-core-5.3.7-301.fc31.x86_64.rpm", + "checksum": "sha256:f0509e333636e5c34726c8a2b8260bf88fe0a35b95cae6dda62191fee1be4c6a", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-3.fc31.x86_64.rpm", + "checksum": "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-26-4.fc31.x86_64.rpm", + "checksum": "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-libs-26-4.fc31.x86_64.rpm", + "checksum": "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kpartx-0.8.0-3.fc31.x86_64.rpm", + "checksum": "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.17", + "release": "45.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/krb5-libs-1.17-45.fc31.x86_64.rpm", + "checksum": "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466", + "check_gpg": true + }, + { + "name": "langpacks-core-en", + "epoch": 0, + "version": "2.0", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/langpacks-core-en-2.0-7.fc31.noarch.rpm", + "checksum": "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552", + "check_gpg": true + }, + { + "name": "langpacks-en", + "epoch": 0, + "version": "2.0", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/langpacks-en-2.0-7.fc31.noarch.rpm", + "checksum": "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b", + "check_gpg": true + }, + { + "name": "lcms2", + "epoch": 0, + "version": "2.9", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lcms2-2.9-6.fc31.x86_64.rpm", + "checksum": "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b", + "check_gpg": true + }, + { + "name": "less", + "epoch": 0, + "version": "551", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/less-551-2.fc31.x86_64.rpm", + "checksum": "sha256:22db6d1e1f34a43c3d045b6750ff3a32184d47c2aedf3dabc93640057de1f4fa", + "check_gpg": true + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-1.6.8-3.fc31.x86_64.rpm", + "checksum": "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679", + "check_gpg": true + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm", + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXau-1.0.9-2.fc31.x86_64.rpm", + "checksum": "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834", + "check_gpg": true + }, + { + "name": "libXcomposite", + "epoch": 0, + "version": "0.4.4", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcomposite-0.4.4-17.fc31.x86_64.rpm", + "checksum": "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c", + "check_gpg": true + }, + { + "name": "libXcursor", + "epoch": 0, + "version": "1.1.15", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcursor-1.1.15-6.fc31.x86_64.rpm", + "checksum": "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59", + "check_gpg": true + }, + { + "name": "libXdamage", + "epoch": 0, + "version": "1.1.4", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXdamage-1.1.4-17.fc31.x86_64.rpm", + "checksum": "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a", + "check_gpg": true + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXext-1.3.4-2.fc31.x86_64.rpm", + "checksum": "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077", + "check_gpg": true + }, + { + "name": "libXfixes", + "epoch": 0, + "version": "5.0.3", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXfixes-5.0.3-10.fc31.x86_64.rpm", + "checksum": "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c", + "check_gpg": true + }, + { + "name": "libXft", + "epoch": 0, + "version": "2.3.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXft-2.3.3-2.fc31.x86_64.rpm", + "checksum": "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc", + "check_gpg": true + }, + { + "name": "libXi", + "epoch": 0, + "version": "1.7.10", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXi-1.7.10-2.fc31.x86_64.rpm", + "checksum": "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141", + "check_gpg": true + }, + { + "name": "libXinerama", + "epoch": 0, + "version": "1.1.4", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXinerama-1.1.4-4.fc31.x86_64.rpm", + "checksum": "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1", + "check_gpg": true + }, + { + "name": "libXrandr", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrandr-1.5.2-2.fc31.x86_64.rpm", + "checksum": "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1", + "check_gpg": true + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrender-0.9.10-10.fc31.x86_64.rpm", + "checksum": "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7", + "check_gpg": true + }, + { + "name": "libXtst", + "epoch": 0, + "version": "1.2.3", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXtst-1.2.3-10.fc31.x86_64.rpm", + "checksum": "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libacl-2.2.53-4.fc31.x86_64.rpm", + "checksum": "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libarchive-3.4.0-1.fc31.x86_64.rpm", + "checksum": "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libargon2-20171227-3.fc31.x86_64.rpm", + "checksum": "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libassuan-2.5.3-2.fc31.x86_64.rpm", + "checksum": "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libattr-2.4.48-7.fc31.x86_64.rpm", + "checksum": "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be", + "check_gpg": true + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-43.fc31.x86_64.rpm", + "checksum": "sha256:469d12368377399b8eaa7ec8cf1b6378ab18476b4a2b61b79091510a8945c6aa", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libblkid-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-2.26-6.fc31.x86_64.rpm", + "checksum": "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-ng-0.7.9-8.fc31.x86_64.rpm", + "checksum": "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d", + "check_gpg": true + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcollection-0.7.0-43.fc31.x86_64.rpm", + "checksum": "sha256:0f26eca4ac936554818769fe32aca5e878af2616e83f836ec463e59eb4f9f1f9", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcom_err-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcomps-0.1.11-3.fc31.x86_64.rpm", + "checksum": "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcroco-0.6.13-2.fc31.x86_64.rpm", + "checksum": "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcurl-7.66.0-1.fc31.x86_64.rpm", + "checksum": "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241", + "check_gpg": true + }, + { + "name": "libdatrie", + "epoch": 0, + "version": "0.2.9", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdatrie-0.2.9-10.fc31.x86_64.rpm", + "checksum": "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-5.3.28-38.fc31.x86_64.rpm", + "checksum": "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-38.fc31.x86_64.rpm", + "checksum": "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627", + "check_gpg": true + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdhash-0.5.0-43.fc31.x86_64.rpm", + "checksum": "sha256:0b54f374bcbe094dbc0d52d9661fe99ebff384026ce0ea39f2d6069e27bf8bdc", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdnf-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "28.20190324cvs.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.x86_64.rpm", + "checksum": "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801", + "check_gpg": true + }, + { + "name": "libepoxy", + "epoch": 0, + "version": "1.5.3", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libepoxy-1.5.3-4.fc31.x86_64.rpm", + "checksum": "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libevent-2.1.8-7.fc31.x86_64.rpm", + "checksum": "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libfdisk-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "23.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libffi-3.1-23.fc31.x86_64.rpm", + "checksum": "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcc-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-1.fc31.x86_64.rpm", + "checksum": "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgomp-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgpg-error-1.36-2.fc31.x86_64.rpm", + "checksum": "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd", + "check_gpg": true + }, + { + "name": "libgusb", + "epoch": 0, + "version": "0.3.0", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgusb-0.3.0-5.fc31.x86_64.rpm", + "checksum": "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libidn2-2.2.0-2.fc31.x86_64.rpm", + "checksum": "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc", + "check_gpg": true + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libini_config-1.3.1-43.fc31.x86_64.rpm", + "checksum": "sha256:6f7fbd57db9334a3cc7983d2e920afe92abe3f7e168702612d70e9ff405d79e6", + "check_gpg": true + }, + { + "name": "libjpeg-turbo", + "epoch": 0, + "version": "2.0.2", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.x86_64.rpm", + "checksum": "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-1.fc31.x86_64.rpm", + "checksum": "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-1.fc31.x86_64.rpm", + "checksum": "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libksba-1.3.5-10.fc31.x86_64.rpm", + "checksum": "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f", + "check_gpg": true + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.0.7", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libldb-2.0.7-1.fc31.x86_64.rpm", + "checksum": "sha256:8f7b737ccb294fd5ba1d19075ea2a50a54e0265d8efa28aae0ade59d3e3a63be", + "check_gpg": true + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.2.0", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmaxminddb-1.2.0-8.fc31.x86_64.rpm", + "checksum": "sha256:430f2f71be063eb9d04fe38659f62e29f47c9c878f9985d0569cb49e9c89ebc0", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-9.fc31.x86_64.rpm", + "checksum": "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmnl-1.0.4-10.fc31.x86_64.rpm", + "checksum": "sha256:c976ce75eda3dbe734117f6f558eafb2061bbef66086a04cb907a7ddbaea8bc2", + "check_gpg": true + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodman-2.0.1-20.fc31.x86_64.rpm", + "checksum": "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664", + "check_gpg": true + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.15", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.x86_64.rpm", + "checksum": "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmount-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d", + "check_gpg": true + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libndp-1.7-4.fc31.x86_64.rpm", + "checksum": "sha256:45bf4bef479712936db1d6859b043d13e6cad41c851b6e621fc315b39ecfa14b", + "check_gpg": true + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.4.1", + "release": "1.rc1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnfsidmap-2.4.1-1.rc1.fc31.x86_64.rpm", + "checksum": "sha256:f61555e6e74917be3f131bd5af9d9e30ed709111701e950b7ebd4392baf33f12", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.39.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnghttp2-1.39.2-1.fc31.x86_64.rpm", + "checksum": "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf", + "check_gpg": true + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnl3-3.5.0-1.fc31.x86_64.rpm", + "checksum": "sha256:8bd2655674b40e89f5f63af7f8ffafd0e9064a3378cdca050262a7272678e8e5", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "5.20180605git4a062cf.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.x86_64.rpm", + "checksum": "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a", + "check_gpg": true + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-43.fc31.x86_64.rpm", + "checksum": "sha256:6f729da330aaaea336458a8b6f3f1d2cc761693ba20bdda57fb9c49fb6f2120d", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.0", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpcap-1.9.0-4.fc31.x86_64.rpm", + "checksum": "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc", + "check_gpg": true + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpipeline-1.5.1-3.fc31.x86_64.rpm", + "checksum": "sha256:cfeb5d0cb9c116e39292e3158c68ee62880cff4a5e3d098d20bf9567e5a576e1", + "check_gpg": true + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.37", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpng-1.6.37-2.fc31.x86_64.rpm", + "checksum": "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf", + "check_gpg": true + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libproxy-0.4.15-14.fc31.x86_64.rpm", + "checksum": "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpsl-0.21.0-2.fc31.x86_64.rpm", + "checksum": "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpwquality-1.4.1-1.fc31.x86_64.rpm", + "checksum": "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0", + "check_gpg": true + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libref_array-0.1.5-43.fc31.x86_64.rpm", + "checksum": "sha256:da923b379524f2d8d26905f26a9dc763cec36c40306c4c53db57100574ea89b8", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.10.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/librepo-1.10.5-1.fc31.x86_64.rpm", + "checksum": "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.10.1", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm", + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libseccomp-2.4.1-1.fc31.x86_64.rpm", + "checksum": "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.19.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsecret-0.19.1-1.fc31.x86_64.rpm", + "checksum": "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-utils-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsemanage-2.9-3.fc31.x86_64.rpm", + "checksum": "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsepol-2.9-2.fc31.x86_64.rpm", + "checksum": "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsigsegv-2.11-8.fc31.x86_64.rpm", + "checksum": "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsmartcols-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.5", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsolv-0.7.5-3.fc31.x86_64.rpm", + "checksum": "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388", + "check_gpg": true + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.68.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsoup-2.68.2-1.fc31.x86_64.rpm", + "checksum": "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libss-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-0.9.0-6.fc31.x86_64.rpm", + "checksum": "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm", + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_autofs-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:422625da0fbb99cc4da8eebebff892c6e73a87c81a33190f7a17e344f6bb709e", + "check_gpg": true + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_certmap-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:307275b46896d56d23f5da5ab77a299941e77165ff44e846d6620eee1158131c", + "check_gpg": true + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:a1bd1b5a2c47e57957a77d32f4fd705de1df30557837cfbc83b8f284e4ee0456", + "check_gpg": true + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:6c1f9dc11de4d3af4d4c418b4556ee9659011d587e9da44bb039cb30ac326841", + "check_gpg": true + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:e1bda9438577473413f3c7455ce84b6c8486adee3d4473fafcd28309ad8c2913", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libstdc++-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f", + "check_gpg": true + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtalloc-2.3.0-1.fc31.x86_64.rpm", + "checksum": "sha256:9247561bad35a8a2f8269b2bbbd28d1bf5e6fcde1fe78e1fc3c0e712513e9703", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.14", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtasn1-4.14-2.fc31.x86_64.rpm", + "checksum": "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb", + "check_gpg": true + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtdb-1.4.2-1.fc31.x86_64.rpm", + "checksum": "sha256:fccade859cbb884fd61c07433e6c316f794885cbb2186debcff3f6894d16d52c", + "check_gpg": true + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtevent-0.10.1-1.fc31.x86_64.rpm", + "checksum": "sha256:5593277fa685adba864393da8faf76950d6d8fb1483af036cdc08d8437c387bb", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c", + "check_gpg": true + }, + { + "name": "libthai", + "epoch": 0, + "version": "0.1.28", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libthai-0.1.28-3.fc31.x86_64.rpm", + "checksum": "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500", + "check_gpg": true + }, + { + "name": "libtiff", + "epoch": 0, + "version": "4.0.10", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtiff-4.0.10-6.fc31.x86_64.rpm", + "checksum": "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "2.rc3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.x86_64.rpm", + "checksum": "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libunistring-0.9.10-6.fc31.x86_64.rpm", + "checksum": "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.22", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libusbx-1.0.22-4.fc31.x86_64.rpm", + "checksum": "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8", + "check_gpg": true + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuser-0.62-21.fc31.x86_64.rpm", + "checksum": "sha256:95b45de2c57f35df43bff0c2ebe32c64183968b3a41c5673cfeeff5ece506b94", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libutempter-1.1.6-17.fc31.x86_64.rpm", + "checksum": "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuuid-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libverto-0.3.0-8.fc31.x86_64.rpm", + "checksum": "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348", + "check_gpg": true + }, + { + "name": "libwayland-client", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-client-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff", + "check_gpg": true + }, + { + "name": "libwayland-cursor", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce", + "check_gpg": true + }, + { + "name": "libwayland-egl", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9", + "check_gpg": true + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcb-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-4.4.10-1.fc31.x86_64.rpm", + "checksum": "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.10-1.fc31.x86_64.rpm", + "checksum": "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.8.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.x86_64.rpm", + "checksum": "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxml2-2.9.9-3.fc31.x86_64.rpm", + "checksum": "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libyaml-0.2.2-2.fc31.x86_64.rpm", + "checksum": "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libzstd-1.4.2-1.fc31.x86_64.rpm", + "checksum": "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c", + "check_gpg": true + }, + { + "name": "linux-atm-libs", + "epoch": 0, + "version": "2.5.1", + "release": "25.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-25.fc31.x86_64.rpm", + "checksum": "sha256:e405d2edc9b9fc2c13242f0225049b071aa4159d09d8e2d501e8c4fe88a9710b", + "check_gpg": true + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20190923", + "release": "102.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-firmware-20190923-102.fc31.noarch.rpm", + "checksum": "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47", + "check_gpg": true + }, + { + "name": "linux-firmware-whence", + "epoch": 0, + "version": "20190923", + "release": "102.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-firmware-whence-20190923-102.fc31.noarch.rpm", + "checksum": "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70", + "check_gpg": true + }, + { + "name": "lmdb-libs", + "epoch": 0, + "version": "0.9.23", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.23-3.fc31.x86_64.rpm", + "checksum": "sha256:a41579023e1db3dec06679ebc7788ece92686ea2a23c78dd749c98ddbc82d419", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-6.fc31.x86_64.rpm", + "checksum": "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-1.fc31.x86_64.rpm", + "checksum": "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39", + "check_gpg": true + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.8.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/man-db-2.8.4-5.fc31.x86_64.rpm", + "checksum": "sha256:764699ea124f85a7afcf65a2f138e3821770f8aa1ef134e1813e2b04477f0b74", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mkpasswd-5.5.2-1.fc31.x86_64.rpm", + "checksum": "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83", + "check_gpg": true + }, + { + "name": "mozjs60", + "epoch": 0, + "version": "60.9.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mozjs60-60.9.0-3.fc31.x86_64.rpm", + "checksum": "sha256:bfe43a646ce98fc8cdcb52738f91e0ee5b8fd43760336d267bc20500aacd15bc", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mpfr-3.1.6-5.fc31.x86_64.rpm", + "checksum": "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2", + "check_gpg": true + }, + { + "name": "mtools", + "epoch": 0, + "version": "4.0.23", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mtools-4.0.23-1.fc31.x86_64.rpm", + "checksum": "sha256:6091b138c5dee897cb1c99b0d556f3e03ce6bb2c6ad3c10fed54136092a9d694", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-6.1-12.20190803.fc31.x86_64.rpm", + "checksum": "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm", + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.x86_64.rpm", + "checksum": "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106", + "check_gpg": true + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.55.20160912git.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/net-tools-2.0-0.55.20160912git.fc31.x86_64.rpm", + "checksum": "sha256:cf6506ad88ecaab89efde02eee218365a36981114638c03989ba2768457ae335", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nettle-3.5.1-3.fc31.x86_64.rpm", + "checksum": "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/npth-1.6-3.fc31.x86_64.rpm", + "checksum": "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openldap-2.4.47-3.fc31.x86_64.rpm", + "checksum": "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68", + "check_gpg": true + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-server-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:c3aa4d794cef51ba9fcbf3750baed55aabfa36062a48f61149ccf03364a0d256", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-1.1.1d-2.fc31.x86_64.rpm", + "checksum": "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.x86_64.rpm", + "checksum": "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.x86_64.rpm", + "checksum": "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/os-prober-1.77-3.fc31.x86_64.rpm", + "checksum": "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.x86_64.rpm", + "checksum": "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.x86_64.rpm", + "checksum": "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "18.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pam-1.3.1-18.fc31.x86_64.rpm", + "checksum": "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b", + "check_gpg": true + }, + { + "name": "pango", + "epoch": 0, + "version": "1.44.6", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pango-1.44.6-1.fc31.x86_64.rpm", + "checksum": "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c", + "check_gpg": true + }, + { + "name": "parted", + "epoch": 0, + "version": "3.2.153", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/parted-3.2.153-1.fc31.x86_64.rpm", + "checksum": "sha256:55c47c63deb00a9126c068299c01dfbdd39d58c6962138b862b92f5c7af8c898", + "check_gpg": true + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/passwd-0.80-6.fc31.x86_64.rpm", + "checksum": "sha256:c459092a47bd2f904d9fe830735b512ef97b52785ee12abb2ba5c52465560f18", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.43", + "release": "2.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre-8.43-2.fc31.1.x86_64.rpm", + "checksum": "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.33", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre2-10.33-14.fc31.x86_64.rpm", + "checksum": "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pigz-2.4-5.fc31.x86_64.rpm", + "checksum": "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pinentry-1.1.0-6.fc31.x86_64.rpm", + "checksum": "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976", + "check_gpg": true + }, + { + "name": "pixman", + "epoch": 0, + "version": "0.38.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pixman-0.38.4-1.fc31.x86_64.rpm", + "checksum": "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/policycoreutils-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c", + "check_gpg": true + }, + { + "name": "polkit", + "epoch": 0, + "version": "0.116", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/polkit-0.116-4.fc31.x86_64.rpm", + "checksum": "sha256:adf011910ee572cb557b7340002aed9376004b786585e78e6546192a323c6d78", + "check_gpg": true + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.116", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/polkit-libs-0.116-4.fc31.x86_64.rpm", + "checksum": "sha256:118548479396b007a80bc98e8cef770ea242ef6b20cd2922d595acd4c100946d", + "check_gpg": true + }, + { + "name": "polkit-pkla-compat", + "epoch": 0, + "version": "0.1", + "release": "15.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/polkit-pkla-compat-0.1-15.fc31.x86_64.rpm", + "checksum": "sha256:3553c0d8c0639d043a50ce16c3694e17d399e126b25106de0a75fc8dbc13b709", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "18.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/popt-1.16-18.fc31.x86_64.rpm", + "checksum": "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-6.fc31.x86_64.rpm", + "checksum": "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm", + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm", + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-3.7.4-5.fc31.x86_64.rpm", + "checksum": "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9", + "check_gpg": true + }, + { + "name": "python3-asn1crypto", + "epoch": 0, + "version": "0.24.0", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-asn1crypto-0.24.0-7.fc31.noarch.rpm", + "checksum": "sha256:73a7249de97f0ad66bc1a867ac5b5d08b741ab152d4dd7ce45cc231d64126b58", + "check_gpg": true + }, + { + "name": "python3-attrs", + "epoch": 0, + "version": "19.1.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-attrs-19.1.0-2.fc31.noarch.rpm", + "checksum": "sha256:4cca3f986ddbd38cfbfb6d1c8d336a1aaed78f7da1f38356ce1e034ba35ec492", + "check_gpg": true + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm", + "checksum": "sha256:9fea00b14943cac0e3b11ff3a319765168cf78b3cc58fdee7d5fe48246a0aa4d", + "check_gpg": true + }, + { + "name": "python3-babel", + "epoch": 0, + "version": "2.7.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-babel-2.7.0-2.fc31.noarch.rpm", + "checksum": "sha256:e17ef6f7d4f1869ff5813d6f8f2983cd6f5cd23d4a666b7ae19154636e911644", + "check_gpg": true + }, + { + "name": "python3-boto", + "epoch": 0, + "version": "2.49.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-boto-2.49.0-1.fc31.noarch.rpm", + "checksum": "sha256:9b49fdc41ba8f1284c63db29b8bda002a7256a54fdba14c9d3fccd852b8547b1", + "check_gpg": true + }, + { + "name": "python3-cffi", + "epoch": 0, + "version": "1.12.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-cffi-1.12.3-1.fc31.x86_64.rpm", + "checksum": "sha256:7fc8df6b10728f46c3e752c35f6777f17025bef30f61c67f76de2538888a5546", + "check_gpg": true + }, + { + "name": "python3-chardet", + "epoch": 0, + "version": "3.0.4", + "release": "10.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-chardet-3.0.4-10.fc31.noarch.rpm", + "checksum": "sha256:ee6dbb4914a35ee8a816ecde34d29221e3f4622324f6287c328e8ac22ae572ad", + "check_gpg": true + }, + { + "name": "python3-configobj", + "epoch": 0, + "version": "5.0.6", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-configobj-5.0.6-16.fc31.noarch.rpm", + "checksum": "sha256:cdc526097cd2fecb75e44ad11a69b10eb7804f310298c064c3b931515d4f3d5c", + "check_gpg": true + }, + { + "name": "python3-cryptography", + "epoch": 0, + "version": "2.6.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-cryptography-2.6.1-2.fc31.x86_64.rpm", + "checksum": "sha256:2e588b5133dc8cb26ff0226f66eb1be440c6b784ec6fa67a5f0516d8ccaf46f5", + "check_gpg": true + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.8.0", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-3.fc31.noarch.rpm", + "checksum": "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653", + "check_gpg": true + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.8", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dbus-1.2.8-6.fc31.x86_64.rpm", + "checksum": "sha256:35c348bcd91fa114ad459b888131e5e5509259cffce33f22c44f92e57e9e5919", + "check_gpg": true + }, + { + "name": "python3-distro", + "epoch": 0, + "version": "1.4.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-2.fc31.noarch.rpm", + "checksum": "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.9", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-plugins-core-4.0.9-1.fc31.noarch.rpm", + "checksum": "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552", + "check_gpg": true + }, + { + "name": "python3-idna", + "epoch": 0, + "version": "2.8", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-idna-2.8-2.fc31.noarch.rpm", + "checksum": "sha256:8221111dc9a9aa5c68805f153c3fbe5314c8a0f335af29685733b958253dd278", + "check_gpg": true + }, + { + "name": "python3-jinja2", + "epoch": 0, + "version": "2.10.1", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jinja2-2.10.1-2.fc31.noarch.rpm", + "checksum": "sha256:1135e96b6f9ed29e4ed4c0f060876891a244442a503f0b18ab238589da20d464", + "check_gpg": true + }, + { + "name": "python3-jsonpatch", + "epoch": 0, + "version": "1.21", + "release": "8.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jsonpatch-1.21-8.fc31.noarch.rpm", + "checksum": "sha256:e98119ac7a707287668e7a9a74ef2809ee5f555af04f52775367e428e08dbb33", + "check_gpg": true + }, + { + "name": "python3-jsonpointer", + "epoch": 0, + "version": "1.10", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jsonpointer-1.10-16.fc31.noarch.rpm", + "checksum": "sha256:2d9a2e736dd5231df3c5c748ce0ba5a75a409dacfe73f14676781f32d565a7df", + "check_gpg": true + }, + { + "name": "python3-jsonschema", + "epoch": 0, + "version": "3.0.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jsonschema-3.0.2-1.fc31.noarch.rpm", + "checksum": "sha256:047f9e29fcfa56be98ca3f42249f3ccb2a93df99f2438e3983e2064025f0d79d", + "check_gpg": true + }, + { + "name": "python3-jwt", + "epoch": 0, + "version": "1.7.1", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jwt-1.7.1-3.fc31.noarch.rpm", + "checksum": "sha256:143c50c0663f963c7689c1cec43b81cf1433d5d3b67eb8233ba06506c1b3e095", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.x86_64.rpm", + "checksum": "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libs-3.7.4-5.fc31.x86_64.rpm", + "checksum": "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1", + "check_gpg": true + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libselinux-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:ca6a71888b8d147342012c64533f61a41b26c788bbcd2844a2164ee007fac981", + "check_gpg": true + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libsemanage-2.9-3.fc31.x86_64.rpm", + "checksum": "sha256:a7071aa0068c9dff913c5f0523be3ffdd7f67b8f13e1ee2aa16e486b01aecc1c", + "check_gpg": true + }, + { + "name": "python3-markupsafe", + "epoch": 0, + "version": "1.1.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-markupsafe-1.1.1-2.fc31.x86_64.rpm", + "checksum": "sha256:5d8d55e12443628c7a1915648845663e4aed1863805854de0adadd89772eda2a", + "check_gpg": true + }, + { + "name": "python3-oauthlib", + "epoch": 0, + "version": "3.0.2", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-oauthlib-3.0.2-2.fc31.noarch.rpm", + "checksum": "sha256:f85469c0c19ce86e8fdd0dd5a3e6e5c9b78e3436ae9ce70ba86b2b4a3794f693", + "check_gpg": true + }, + { + "name": "python3-pbr", + "epoch": 0, + "version": "5.1.2", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pbr-5.1.2-4.fc31.noarch.rpm", + "checksum": "sha256:d90abd2b8eca279a2120bf7836503745d36432630258925292ee7dacfabe4c92", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "name": "python3-ply", + "epoch": 0, + "version": "3.11", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-ply-3.11-3.fc31.noarch.rpm", + "checksum": "sha256:1b65944efe48ba0cca34011891480a1db29a7e95dad058376bfca34d68fb0791", + "check_gpg": true + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-policycoreutils-2.9-5.fc31.noarch.rpm", + "checksum": "sha256:5a7e957102a23c9924398fe45f5cdec66edcd10adcad7130d6ebf02c2706ad49", + "check_gpg": true + }, + { + "name": "python3-prettytable", + "epoch": 0, + "version": "0.7.2", + "release": "18.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-prettytable-0.7.2-18.fc31.noarch.rpm", + "checksum": "sha256:682af90a049fa78429d5ebd194700609f762e59ceb6c4ca28b17e7f4fd1683aa", + "check_gpg": true + }, + { + "name": "python3-psutil", + "epoch": 0, + "version": "5.6.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-psutil-5.6.3-2.fc31.x86_64.rpm", + "checksum": "sha256:b703a38c0dea8bcd2be7bfb83d0f71ee2ee15a140a25998d6837261331140919", + "check_gpg": true + }, + { + "name": "python3-pyasn1", + "epoch": 0, + "version": "0.4.4", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyasn1-0.4.4-5.fc31.noarch.rpm", + "checksum": "sha256:b49419bed59686efde6fc04953c2ab64a46c2bae46227a872bb3a823538c636d", + "check_gpg": true + }, + { + "name": "python3-pycparser", + "epoch": 0, + "version": "2.14", + "release": "20.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pycparser-2.14-20.fc31.noarch.rpm", + "checksum": "sha256:6ed7f318c5e93b59254d7b7652131f33db713eeb61f52413f21e533069ed24bf", + "check_gpg": true + }, + { + "name": "python3-pyrsistent", + "epoch": 0, + "version": "0.15.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyrsistent-0.15.4-1.fc31.x86_64.rpm", + "checksum": "sha256:fa979526906cc9182ebdb6e50c9d09deba8518f69750495fec4267a425c8f783", + "check_gpg": true + }, + { + "name": "python3-pyserial", + "epoch": 0, + "version": "3.4", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyserial-3.4-3.fc31.noarch.rpm", + "checksum": "sha256:32cc578c8da626a8c1a5316a59d482967a32547be6c077f73fb90e11fb0f1e6a", + "check_gpg": true + }, + { + "name": "python3-pysocks", + "epoch": 0, + "version": "1.7.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pysocks-1.7.0-2.fc31.noarch.rpm", + "checksum": "sha256:d54f02fc39b3e87253808f665918d26ffe901f1228e25121c908661b47ba266b", + "check_gpg": true + }, + { + "name": "python3-pytz", + "epoch": 0, + "version": "2019.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pytz-2019.2-1.fc31.noarch.rpm", + "checksum": "sha256:6c6f1152899318bdc0500cfb0b0cdbbc19ba0e017b5888ece1358250caa2629f", + "check_gpg": true + }, + { + "name": "python3-pyyaml", + "epoch": 0, + "version": "5.1.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyyaml-5.1.2-1.fc31.x86_64.rpm", + "checksum": "sha256:a6bab7030d3296875cb0cad2c30fb18042dab8ae070c9c6f97457bb0a5cc6316", + "check_gpg": true + }, + { + "name": "python3-requests", + "epoch": 0, + "version": "2.22.0", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-requests-2.22.0-3.fc31.noarch.rpm", + "checksum": "sha256:1e049e86c5dd5c4d6737d47dd194d553ffbd65c81a4077cf6e1029a0fde80fb5", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-rpm-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444", + "check_gpg": true + }, + { + "name": "python3-rsa", + "epoch": 0, + "version": "3.4.2", + "release": "10.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-rsa-3.4.2-10.fc31.noarch.rpm", + "checksum": "sha256:19a9152e410c8fdd62220e79dcf4dc3d143ca04c75a09c332066ad8cc94b972e", + "check_gpg": true + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setools-4.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:aacf84989a0fe55366f6d37ddd1753b8c06e5640e9334805bf468777824a3ac0", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.12.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-six-1.12.0-2.fc31.noarch.rpm", + "checksum": "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-unbound-1.9.3-1.fc31.x86_64.rpm", + "checksum": "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7", + "check_gpg": true + }, + { + "name": "python3-urllib3", + "epoch": 0, + "version": "1.25.3", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-urllib3-1.25.3-4.fc31.noarch.rpm", + "checksum": "sha256:78b600621e00f4a0acc8f58de056ae9393ce4e1cded56837b4e557c1bc84b06b", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.x86_64.rpm", + "checksum": "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/readline-8.0-3.fc31.x86_64.rpm", + "checksum": "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc", + "check_gpg": true + }, + { + "name": "rest", + "epoch": 0, + "version": "0.8.1", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rest-0.8.1-6.fc31.x86_64.rpm", + "checksum": "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e", + "check_gpg": true + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rootfiles-8.1-25.fc31.noarch.rpm", + "checksum": "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:f50957375c79be57f391625b97d6ea74505e05f2edc6b9bc6768d5e3ad6ef8f8", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb", + "check_gpg": true + }, + { + "name": "rsync", + "epoch": 0, + "version": "3.1.3", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rsync-3.1.3-9.fc31.x86_64.rpm", + "checksum": "sha256:167eef09957e5abad6b99d22d9204021ae777b60320cd37d8f934cd9ac2da92a", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sed-4.5-4.fc31.x86_64.rpm", + "checksum": "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.4", + "release": "37.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/selinux-policy-3.14.4-37.fc31.noarch.rpm", + "checksum": "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.4", + "release": "37.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.4-37.fc31.noarch.rpm", + "checksum": "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.3", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm", + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "16.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shadow-utils-4.6-16.fc31.x86_64.rpm", + "checksum": "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.14", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shared-mime-info-1.14-1.fc31.x86_64.rpm", + "checksum": "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.29.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.x86_64.rpm", + "checksum": "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2", + "check_gpg": true + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-client-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:687d00eb0b77446dbd78aaa0f4f99cc080c677930ad783120483614255264a3d", + "check_gpg": true + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-common-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:6b694ee239a2e3f38c401e975de392e3731ad8b18be5a3249ea02f19e87cb5cb", + "check_gpg": true + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-kcm-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:93161df6d62fe654c7cdba9ae36343d2549b437b27eac816a80f8d7c32a47162", + "check_gpg": true + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-nfs-idmap-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:4f9bbd08f6019b3482342d616d6b04e6481924ea34fbfe8d30ef63402a92e9b1", + "check_gpg": true + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.8.28", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sudo-1.8.28-1.fc31.x86_64.rpm", + "checksum": "sha256:704ebfc50ace9417ed28f4530d778359a4c2f95d524c2e99346472245e30b548", + "check_gpg": true + }, + { + "name": "syslinux", + "epoch": 0, + "version": "6.04", + "release": "0.12.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/syslinux-6.04-0.12.fc31.x86_64.rpm", + "checksum": "sha256:6771e14a2ea70c74e800f6122df6c056a7e2c3c16d74b9b5f96ddfd482e38326", + "check_gpg": true + }, + { + "name": "syslinux-extlinux", + "epoch": 0, + "version": "6.04", + "release": "0.12.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/syslinux-extlinux-6.04-0.12.fc31.x86_64.rpm", + "checksum": "sha256:486f2fb09621afabdebfd0cd897c9a77d93bb21ed41dc0a18b600d48654fed64", + "check_gpg": true + }, + { + "name": "syslinux-extlinux-nonlinux", + "epoch": 0, + "version": "6.04", + "release": "0.12.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/syslinux-extlinux-nonlinux-6.04-0.12.fc31.noarch.rpm", + "checksum": "sha256:1ffe518fc86251b33a58280984e9d06c025190a89a2d60c50d818eaea7bca583", + "check_gpg": true + }, + { + "name": "syslinux-nonlinux", + "epoch": 0, + "version": "6.04", + "release": "0.12.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/syslinux-nonlinux-6.04-0.12.fc31.noarch.rpm", + "checksum": "sha256:fced380b3f7270b186dd2b67aef7c9f5614617e71fcea61fd903864a20a4924e", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5", + "check_gpg": true + }, + { + "name": "systemd-bootchart", + "epoch": 0, + "version": "233", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-bootchart-233-5.fc31.x86_64.rpm", + "checksum": "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm", + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-udev-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tar-1.32-2.fc31.x86_64.rpm", + "checksum": "sha256:9975496f29601a1c2cdb89e63aac698fdd8283ba3a52a9d91ead9473a0e064c8", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tss2-1331-2.fc31.x86_64.rpm", + "checksum": "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm", + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/unbound-libs-1.9.3-1.fc31.x86_64.rpm", + "checksum": "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/util-linux-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f", + "check_gpg": true + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.1.2102", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/v/vim-minimal-8.1.2102-1.fc31.x86_64.rpm", + "checksum": "sha256:d2c819a7e607a9e22f55047ed03d064e4b0f125ad4fb20532c543a6d8af8bfa5", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "15.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/which-2.21-15.fc31.x86_64.rpm", + "checksum": "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm", + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.1.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xfsprogs-5.1.0-2.fc31.x86_64.rpm", + "checksum": "sha256:b3c4cfdf820225133f4e9e600de3300ef0c7bac34139433505dd4482da52be22", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.27", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm", + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-5.2.4-6.fc31.x86_64.rpm", + "checksum": "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-libs-5.2.4-6.fc31.x86_64.rpm", + "checksum": "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431", + "check_gpg": true + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/y/yum-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.2", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.x86_64.rpm", + "checksum": "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "19.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zlib-1.2.11-19.fc31.x86_64.rpm", + "checksum": "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9", + "check_gpg": true + } + ], + "checksums": { + "0": "sha256:e39c033883bf8520576de0b0875b5c8cfc40d04f1a0aaf01f1edf57267807580" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac ro biosdevname=0 net.ifnames=0" + }, + "bootloader": "grub", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "initrd": "/boot/initramfs-5.3.7-301.fc31.x86_64.img", + "linux": "/boot/vmlinuz-5.3.7-301.fc31.x86_64", + "options": "$kernelopts", + "title": "Fedora (5.3.7-301.fc31.x86_64) 31 (Thirty One)", + "version": "5.3.7-301.fc31.x86_64" + } + ], + "fstab": [ + [ + "UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "/", + "ext4", + "defaults", + "1", + "1" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:992:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:997:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "polkitd:x:994:", + "redhat:x:1000:", + "render:x:996:", + "root:x:0:", + "ssh_keys:x:998:", + "sshd:x:74:", + "sys:x:3:", + "systemd-coredump:x:995:", + "systemd-journal:x:190:", + "systemd-network:x:192:", + "systemd-resolve:x:193:", + "systemd-timesync:x:993:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:999:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "qcow2", + "os-release": { + "ANSI_COLOR": "0;34", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:fedoraproject:fedora:31", + "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f31/system-administrators-guide/", + "HOME_URL": "https://fedoraproject.org/", + "ID": "fedora", + "LOGO": "fedora-logo-icon", + "NAME": "Fedora", + "PLATFORM_ID": "platform:f31", + "PRETTY_NAME": "Fedora 31 (Cloud Edition)", + "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy", + "REDHAT_BUGZILLA_PRODUCT": "Fedora", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "31", + "REDHAT_SUPPORT_PRODUCT": "Fedora", + "REDHAT_SUPPORT_PRODUCT_VERSION": "31", + "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help", + "VARIANT": "Cloud Edition", + "VARIANT_ID": "cloud", + "VERSION": "31 (Cloud Edition)", + "VERSION_CODENAME": "", + "VERSION_ID": "31" + }, + "packages": [ + "NetworkManager-1.20.4-1.fc31.x86_64", + "NetworkManager-libnm-1.20.4-1.fc31.x86_64", + "abattis-cantarell-fonts-0.111-3.fc31.noarch", + "acl-2.2.53-4.fc31.x86_64", + "adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch", + "adwaita-cursor-theme-3.34.0-1.fc31.noarch", + "adwaita-icon-theme-3.34.0-1.fc31.noarch", + "alternatives-1.11-5.fc31.x86_64", + "at-spi2-atk-2.34.1-1.fc31.x86_64", + "at-spi2-core-2.34.0-1.fc31.x86_64", + "atk-2.34.1-1.fc31.x86_64", + "audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64", + "audit-libs-3.0-0.12.20190507gitf58ec40.fc31.x86_64", + "avahi-libs-0.7-20.fc31.x86_64", + "basesystem-11-8.fc31.noarch", + "bash-5.0.7-3.fc31.x86_64", + "brotli-1.0.7-6.fc31.x86_64", + "bzip2-1.0.8-1.fc31.x86_64", + "bzip2-libs-1.0.8-1.fc31.x86_64", + "c-ares-1.15.0-4.fc31.x86_64", + "ca-certificates-2019.2.32-3.fc31.noarch", + "cairo-1.16.0-6.fc31.x86_64", + "cairo-gobject-1.16.0-6.fc31.x86_64", + "checkpolicy-2.9-2.fc31.x86_64", + "chrony-3.5-4.fc31.x86_64", + "cloud-init-17.1-11.fc31.noarch", + "cloud-utils-growpart-0.31-3.fc31.noarch", + "colord-libs-1.4.4-2.fc31.x86_64", + "coreutils-8.31-4.fc31.x86_64", + "coreutils-common-8.31-4.fc31.x86_64", + "cpio-2.12-12.fc31.x86_64", + "cracklib-2.9.6-21.fc31.x86_64", + "cracklib-dicts-2.9.6-21.fc31.x86_64", + "crypto-policies-20190816-4.gitbb9bf99.fc31.noarch", + "cryptsetup-libs-2.2.1-1.fc31.x86_64", + "cups-libs-2.2.12-2.fc31.x86_64", + "curl-7.66.0-1.fc31.x86_64", + "cyrus-sasl-lib-2.1.27-2.fc31.x86_64", + "dbus-1.12.16-3.fc31.x86_64", + "dbus-broker-21-6.fc31.x86_64", + "dbus-common-1.12.16-3.fc31.noarch", + "dbus-libs-1.12.16-3.fc31.x86_64", + "dconf-0.34.0-1.fc31.x86_64", + "dejavu-fonts-common-2.37-2.fc31.noarch", + "dejavu-sans-fonts-2.37-2.fc31.noarch", + "deltarpm-3.6.2-2.fc31.x86_64", + "device-mapper-1.02.163-2.fc31.x86_64", + "device-mapper-libs-1.02.163-2.fc31.x86_64", + "dhcp-client-4.4.1-15.fc31.x86_64", + "dhcp-common-4.4.1-15.fc31.noarch", + "diffutils-3.7-3.fc31.x86_64", + "dnf-4.2.9-5.fc31.noarch", + "dnf-data-4.2.9-5.fc31.noarch", + "dnf-plugins-core-4.0.9-1.fc31.noarch", + "dracut-049-27.git20181204.fc31.1.x86_64", + "dracut-config-generic-049-27.git20181204.fc31.1.x86_64", + "e2fsprogs-1.45.3-1.fc31.x86_64", + "e2fsprogs-libs-1.45.3-1.fc31.x86_64", + "elfutils-default-yama-scope-0.177-1.fc31.noarch", + "elfutils-libelf-0.177-1.fc31.x86_64", + "elfutils-libs-0.177-1.fc31.x86_64", + "expat-2.2.8-1.fc31.x86_64", + "fedora-gpg-keys-31-1.noarch", + "fedora-release-cloud-31-1.noarch", + "fedora-release-common-31-1.noarch", + "fedora-repos-31-1.noarch", + "file-5.37-3.fc31.x86_64", + "file-libs-5.37-3.fc31.x86_64", + "filesystem-3.12-2.fc31.x86_64", + "findutils-4.6.0-24.fc31.x86_64", + "fipscheck-1.5.0-7.fc31.x86_64", + "fipscheck-lib-1.5.0-7.fc31.x86_64", + "fontconfig-2.13.92-3.fc31.x86_64", + "fontpackages-filesystem-1.44-25.fc31.noarch", + "freetype-2.10.0-3.fc31.x86_64", + "fribidi-1.0.5-4.fc31.x86_64", + "fuse-libs-2.9.9-8.fc31.x86_64", + "gawk-5.0.1-5.fc31.x86_64", + "gcr-3.33.4-1.fc31.x86_64", + "gcr-base-3.33.4-1.fc31.x86_64", + "gdbm-libs-1.18.1-1.fc31.x86_64", + "gdk-pixbuf2-2.40.0-1.fc31.x86_64", + "gdk-pixbuf2-modules-2.40.0-1.fc31.x86_64", + "geolite2-city-20190806-1.fc31.noarch", + "geolite2-country-20190806-1.fc31.noarch", + "gettext-0.20.1-2.fc31.x86_64", + "gettext-libs-0.20.1-2.fc31.x86_64", + "git-core-2.23.0-1.fc31.x86_64", + "glib-networking-2.62.1-1.fc31.x86_64", + "glib2-2.62.1-1.fc31.x86_64", + "glibc-2.30-5.fc31.x86_64", + "glibc-common-2.30-5.fc31.x86_64", + "glibc-langpack-en-2.30-5.fc31.x86_64", + "gmp-6.1.2-10.fc31.x86_64", + "gnome-keyring-3.34.0-1.fc31.x86_64", + "gnupg2-2.2.17-2.fc31.x86_64", + "gnupg2-smime-2.2.17-2.fc31.x86_64", + "gnutls-3.6.10-1.fc31.x86_64", + "gpg-pubkey-3c3359c4-5c6ae44d", + "gpgme-1.13.1-3.fc31.x86_64", + "graphite2-1.3.13-1.fc31.x86_64", + "grep-3.3-3.fc31.x86_64", + "groff-base-1.22.3-20.fc31.x86_64", + "grub2-common-2.02-100.fc31.noarch", + "grub2-pc-2.02-100.fc31.x86_64", + "grub2-pc-modules-2.02-100.fc31.noarch", + "grub2-tools-2.02-100.fc31.x86_64", + "grub2-tools-extra-2.02-100.fc31.x86_64", + "grub2-tools-minimal-2.02-100.fc31.x86_64", + "grubby-8.40-36.fc31.x86_64", + "gsettings-desktop-schemas-3.34.0-1.fc31.x86_64", + "gtk-update-icon-cache-3.24.12-3.fc31.x86_64", + "gtk3-3.24.12-3.fc31.x86_64", + "gzip-1.10-1.fc31.x86_64", + "harfbuzz-2.6.1-2.fc31.x86_64", + "heat-cfntools-1.4.2-9.fc31.noarch", + "hicolor-icon-theme-0.17-7.fc31.noarch", + "hostname-3.20-9.fc31.x86_64", + "ima-evm-utils-1.2.1-2.fc31.x86_64", + "initscripts-10.02-2.fc31.x86_64", + "ipcalc-0.2.5-3.fc31.x86_64", + "iproute-5.3.0-1.fc31.x86_64", + "iproute-tc-5.3.0-1.fc31.x86_64", + "iptables-libs-1.8.3-5.fc31.x86_64", + "iputils-20190515-3.fc31.x86_64", + "jansson-2.12-4.fc31.x86_64", + "jasper-libs-2.0.14-9.fc31.x86_64", + "jbigkit-libs-2.1-17.fc31.x86_64", + "json-c-0.13.1-6.fc31.x86_64", + "json-glib-1.4.4-3.fc31.x86_64", + "kbd-2.0.4-14.fc31.x86_64", + "kbd-legacy-2.0.4-14.fc31.noarch", + "kbd-misc-2.0.4-14.fc31.noarch", + "kernel-core-5.3.7-301.fc31.x86_64", + "keyutils-libs-1.6-3.fc31.x86_64", + "kmod-26-4.fc31.x86_64", + "kmod-libs-26-4.fc31.x86_64", + "kpartx-0.8.0-3.fc31.x86_64", + "krb5-libs-1.17-45.fc31.x86_64", + "langpacks-core-en-2.0-7.fc31.noarch", + "langpacks-en-2.0-7.fc31.noarch", + "lcms2-2.9-6.fc31.x86_64", + "less-551-2.fc31.x86_64", + "libX11-1.6.8-3.fc31.x86_64", + "libX11-common-1.6.8-3.fc31.noarch", + "libXau-1.0.9-2.fc31.x86_64", + "libXcomposite-0.4.4-17.fc31.x86_64", + "libXcursor-1.1.15-6.fc31.x86_64", + "libXdamage-1.1.4-17.fc31.x86_64", + "libXext-1.3.4-2.fc31.x86_64", + "libXfixes-5.0.3-10.fc31.x86_64", + "libXft-2.3.3-2.fc31.x86_64", + "libXi-1.7.10-2.fc31.x86_64", + "libXinerama-1.1.4-4.fc31.x86_64", + "libXrandr-1.5.2-2.fc31.x86_64", + "libXrender-0.9.10-10.fc31.x86_64", + "libXtst-1.2.3-10.fc31.x86_64", + "libacl-2.2.53-4.fc31.x86_64", + "libarchive-3.4.0-1.fc31.x86_64", + "libargon2-20171227-3.fc31.x86_64", + "libassuan-2.5.3-2.fc31.x86_64", + "libattr-2.4.48-7.fc31.x86_64", + "libbasicobjects-0.1.1-43.fc31.x86_64", + "libblkid-2.34-3.fc31.x86_64", + "libcap-2.26-6.fc31.x86_64", + "libcap-ng-0.7.9-8.fc31.x86_64", + "libcollection-0.7.0-43.fc31.x86_64", + "libcom_err-1.45.3-1.fc31.x86_64", + "libcomps-0.1.11-3.fc31.x86_64", + "libcroco-0.6.13-2.fc31.x86_64", + "libcurl-7.66.0-1.fc31.x86_64", + "libdatrie-0.2.9-10.fc31.x86_64", + "libdb-5.3.28-38.fc31.x86_64", + "libdb-utils-5.3.28-38.fc31.x86_64", + "libdhash-0.5.0-43.fc31.x86_64", + "libdnf-0.35.3-6.fc31.x86_64", + "libedit-3.1-28.20190324cvs.fc31.x86_64", + "libepoxy-1.5.3-4.fc31.x86_64", + "libevent-2.1.8-7.fc31.x86_64", + "libfdisk-2.34-3.fc31.x86_64", + "libffi-3.1-23.fc31.x86_64", + "libgcc-9.2.1-1.fc31.x86_64", + "libgcrypt-1.8.5-1.fc31.x86_64", + "libgomp-9.2.1-1.fc31.x86_64", + "libgpg-error-1.36-2.fc31.x86_64", + "libgusb-0.3.0-5.fc31.x86_64", + "libidn2-2.2.0-2.fc31.x86_64", + "libini_config-1.3.1-43.fc31.x86_64", + "libjpeg-turbo-2.0.2-4.fc31.x86_64", + "libkcapi-1.1.5-1.fc31.x86_64", + "libkcapi-hmaccalc-1.1.5-1.fc31.x86_64", + "libksba-1.3.5-10.fc31.x86_64", + "libldb-2.0.7-1.fc31.x86_64", + "libmaxminddb-1.2.0-8.fc31.x86_64", + "libmetalink-0.1.3-9.fc31.x86_64", + "libmnl-1.0.4-10.fc31.x86_64", + "libmodman-2.0.1-20.fc31.x86_64", + "libmodulemd1-1.8.15-3.fc31.x86_64", + "libmount-2.34-3.fc31.x86_64", + "libndp-1.7-4.fc31.x86_64", + "libnfsidmap-2.4.1-1.rc1.fc31.x86_64", + "libnghttp2-1.39.2-1.fc31.x86_64", + "libnl3-3.5.0-1.fc31.x86_64", + "libnsl2-1.2.0-5.20180605git4a062cf.fc31.x86_64", + "libpath_utils-0.2.1-43.fc31.x86_64", + "libpcap-1.9.0-4.fc31.x86_64", + "libpipeline-1.5.1-3.fc31.x86_64", + "libpng-1.6.37-2.fc31.x86_64", + "libproxy-0.4.15-14.fc31.x86_64", + "libpsl-0.21.0-2.fc31.x86_64", + "libpwquality-1.4.1-1.fc31.x86_64", + "libref_array-0.1.5-43.fc31.x86_64", + "librepo-1.10.5-1.fc31.x86_64", + "libreport-filesystem-2.10.1-2.fc31.noarch", + "libseccomp-2.4.1-1.fc31.x86_64", + "libsecret-0.19.1-1.fc31.x86_64", + "libselinux-2.9-5.fc31.x86_64", + "libselinux-utils-2.9-5.fc31.x86_64", + "libsemanage-2.9-3.fc31.x86_64", + "libsepol-2.9-2.fc31.x86_64", + "libsigsegv-2.11-8.fc31.x86_64", + "libsmartcols-2.34-3.fc31.x86_64", + "libsolv-0.7.5-3.fc31.x86_64", + "libsoup-2.68.2-1.fc31.x86_64", + "libss-1.45.3-1.fc31.x86_64", + "libssh-0.9.0-6.fc31.x86_64", + "libssh-config-0.9.0-6.fc31.noarch", + "libsss_autofs-2.2.2-1.fc31.x86_64", + "libsss_certmap-2.2.2-1.fc31.x86_64", + "libsss_idmap-2.2.2-1.fc31.x86_64", + "libsss_nss_idmap-2.2.2-1.fc31.x86_64", + "libsss_sudo-2.2.2-1.fc31.x86_64", + "libstdc++-9.2.1-1.fc31.x86_64", + "libtalloc-2.3.0-1.fc31.x86_64", + "libtasn1-4.14-2.fc31.x86_64", + "libtdb-1.4.2-1.fc31.x86_64", + "libtevent-0.10.1-1.fc31.x86_64", + "libtextstyle-0.20.1-2.fc31.x86_64", + "libthai-0.1.28-3.fc31.x86_64", + "libtiff-4.0.10-6.fc31.x86_64", + "libtirpc-1.1.4-2.rc3.fc31.x86_64", + "libunistring-0.9.10-6.fc31.x86_64", + "libusbx-1.0.22-4.fc31.x86_64", + "libuser-0.62-21.fc31.x86_64", + "libutempter-1.1.6-17.fc31.x86_64", + "libuuid-2.34-3.fc31.x86_64", + "libverto-0.3.0-8.fc31.x86_64", + "libwayland-client-1.17.0-2.fc31.x86_64", + "libwayland-cursor-1.17.0-2.fc31.x86_64", + "libwayland-egl-1.17.0-2.fc31.x86_64", + "libxcb-1.13.1-3.fc31.x86_64", + "libxcrypt-4.4.10-1.fc31.x86_64", + "libxcrypt-compat-4.4.10-1.fc31.x86_64", + "libxkbcommon-0.8.4-2.fc31.x86_64", + "libxml2-2.9.9-3.fc31.x86_64", + "libyaml-0.2.2-2.fc31.x86_64", + "libzstd-1.4.2-1.fc31.x86_64", + "linux-atm-libs-2.5.1-25.fc31.x86_64", + "linux-firmware-20190923-102.fc31.noarch", + "linux-firmware-whence-20190923-102.fc31.noarch", + "lmdb-libs-0.9.23-3.fc31.x86_64", + "lua-libs-5.3.5-6.fc31.x86_64", + "lz4-libs-1.9.1-1.fc31.x86_64", + "man-db-2.8.4-5.fc31.x86_64", + "mkpasswd-5.5.2-1.fc31.x86_64", + "mozjs60-60.9.0-3.fc31.x86_64", + "mpfr-3.1.6-5.fc31.x86_64", + "mtools-4.0.23-1.fc31.x86_64", + "ncurses-6.1-12.20190803.fc31.x86_64", + "ncurses-base-6.1-12.20190803.fc31.noarch", + "ncurses-libs-6.1-12.20190803.fc31.x86_64", + "net-tools-2.0-0.55.20160912git.fc31.x86_64", + "nettle-3.5.1-3.fc31.x86_64", + "npth-1.6-3.fc31.x86_64", + "openldap-2.4.47-3.fc31.x86_64", + "openssh-8.0p1-8.fc31.1.x86_64", + "openssh-clients-8.0p1-8.fc31.1.x86_64", + "openssh-server-8.0p1-8.fc31.1.x86_64", + "openssl-1.1.1d-2.fc31.x86_64", + "openssl-libs-1.1.1d-2.fc31.x86_64", + "openssl-pkcs11-0.4.10-2.fc31.x86_64", + "os-prober-1.77-3.fc31.x86_64", + "p11-kit-0.23.16.1-2.fc31.x86_64", + "p11-kit-trust-0.23.16.1-2.fc31.x86_64", + "pam-1.3.1-18.fc31.x86_64", + "pango-1.44.6-1.fc31.x86_64", + "parted-3.2.153-1.fc31.x86_64", + "passwd-0.80-6.fc31.x86_64", + "pcre-8.43-2.fc31.1.x86_64", + "pcre2-10.33-14.fc31.x86_64", + "pigz-2.4-5.fc31.x86_64", + "pinentry-1.1.0-6.fc31.x86_64", + "pixman-0.38.4-1.fc31.x86_64", + "policycoreutils-2.9-5.fc31.x86_64", + "polkit-0.116-4.fc31.x86_64", + "polkit-libs-0.116-4.fc31.x86_64", + "polkit-pkla-compat-0.1-15.fc31.x86_64", + "popt-1.16-18.fc31.x86_64", + "procps-ng-3.3.15-6.fc31.x86_64", + "publicsuffix-list-dafsa-20190417-2.fc31.noarch", + "python-pip-wheel-19.1.1-4.fc31.noarch", + "python-setuptools-wheel-41.2.0-1.fc31.noarch", + "python-unversioned-command-3.7.4-5.fc31.noarch", + "python3-3.7.4-5.fc31.x86_64", + "python3-asn1crypto-0.24.0-7.fc31.noarch", + "python3-attrs-19.1.0-2.fc31.noarch", + "python3-audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64", + "python3-babel-2.7.0-2.fc31.noarch", + "python3-boto-2.49.0-1.fc31.noarch", + "python3-cffi-1.12.3-1.fc31.x86_64", + "python3-chardet-3.0.4-10.fc31.noarch", + "python3-configobj-5.0.6-16.fc31.noarch", + "python3-cryptography-2.6.1-2.fc31.x86_64", + "python3-dateutil-2.8.0-3.fc31.noarch", + "python3-dbus-1.2.8-6.fc31.x86_64", + "python3-distro-1.4.0-2.fc31.noarch", + "python3-dnf-4.2.9-5.fc31.noarch", + "python3-dnf-plugins-core-4.0.9-1.fc31.noarch", + "python3-gpg-1.13.1-3.fc31.x86_64", + "python3-hawkey-0.35.3-6.fc31.x86_64", + "python3-idna-2.8-2.fc31.noarch", + "python3-jinja2-2.10.1-2.fc31.noarch", + "python3-jsonpatch-1.21-8.fc31.noarch", + "python3-jsonpointer-1.10-16.fc31.noarch", + "python3-jsonschema-3.0.2-1.fc31.noarch", + "python3-jwt-1.7.1-3.fc31.noarch", + "python3-libcomps-0.1.11-3.fc31.x86_64", + "python3-libdnf-0.35.3-6.fc31.x86_64", + "python3-libs-3.7.4-5.fc31.x86_64", + "python3-libselinux-2.9-5.fc31.x86_64", + "python3-libsemanage-2.9-3.fc31.x86_64", + "python3-markupsafe-1.1.1-2.fc31.x86_64", + "python3-oauthlib-3.0.2-2.fc31.noarch", + "python3-pbr-5.1.2-4.fc31.noarch", + "python3-pip-19.1.1-4.fc31.noarch", + "python3-ply-3.11-3.fc31.noarch", + "python3-policycoreutils-2.9-5.fc31.noarch", + "python3-prettytable-0.7.2-18.fc31.noarch", + "python3-psutil-5.6.3-2.fc31.x86_64", + "python3-pyasn1-0.4.4-5.fc31.noarch", + "python3-pycparser-2.14-20.fc31.noarch", + "python3-pyrsistent-0.15.4-1.fc31.x86_64", + "python3-pyserial-3.4-3.fc31.noarch", + "python3-pysocks-1.7.0-2.fc31.noarch", + "python3-pytz-2019.2-1.fc31.noarch", + "python3-pyyaml-5.1.2-1.fc31.x86_64", + "python3-requests-2.22.0-3.fc31.noarch", + "python3-rpm-4.15.0-6.fc31.x86_64", + "python3-rsa-3.4.2-10.fc31.noarch", + "python3-setools-4.2.2-1.fc31.x86_64", + "python3-setuptools-41.2.0-1.fc31.noarch", + "python3-six-1.12.0-2.fc31.noarch", + "python3-unbound-1.9.3-1.fc31.x86_64", + "python3-urllib3-1.25.3-4.fc31.noarch", + "qrencode-libs-4.0.2-4.fc31.x86_64", + "readline-8.0-3.fc31.x86_64", + "rest-0.8.1-6.fc31.x86_64", + "rootfiles-8.1-25.fc31.noarch", + "rpm-4.15.0-6.fc31.x86_64", + "rpm-build-libs-4.15.0-6.fc31.x86_64", + "rpm-libs-4.15.0-6.fc31.x86_64", + "rpm-plugin-selinux-4.15.0-6.fc31.x86_64", + "rpm-plugin-systemd-inhibit-4.15.0-6.fc31.x86_64", + "rpm-sign-libs-4.15.0-6.fc31.x86_64", + "rsync-3.1.3-9.fc31.x86_64", + "sed-4.5-4.fc31.x86_64", + "selinux-policy-3.14.4-37.fc31.noarch", + "selinux-policy-targeted-3.14.4-37.fc31.noarch", + "setup-2.13.3-2.fc31.noarch", + "shadow-utils-4.6-16.fc31.x86_64", + "shared-mime-info-1.14-1.fc31.x86_64", + "sqlite-libs-3.29.0-2.fc31.x86_64", + "sssd-client-2.2.2-1.fc31.x86_64", + "sssd-common-2.2.2-1.fc31.x86_64", + "sssd-kcm-2.2.2-1.fc31.x86_64", + "sssd-nfs-idmap-2.2.2-1.fc31.x86_64", + "sudo-1.8.28-1.fc31.x86_64", + "syslinux-6.04-0.12.fc31.x86_64", + "syslinux-extlinux-6.04-0.12.fc31.x86_64", + "syslinux-extlinux-nonlinux-6.04-0.12.fc31.noarch", + "syslinux-nonlinux-6.04-0.12.fc31.noarch", + "systemd-243-4.gitef67743.fc31.x86_64", + "systemd-bootchart-233-5.fc31.x86_64", + "systemd-libs-243-4.gitef67743.fc31.x86_64", + "systemd-pam-243-4.gitef67743.fc31.x86_64", + "systemd-rpm-macros-243-4.gitef67743.fc31.noarch", + "systemd-udev-243-4.gitef67743.fc31.x86_64", + "tar-1.32-2.fc31.x86_64", + "trousers-0.3.13-13.fc31.x86_64", + "trousers-lib-0.3.13-13.fc31.x86_64", + "tss2-1331-2.fc31.x86_64", + "tzdata-2019c-1.fc31.noarch", + "unbound-libs-1.9.3-1.fc31.x86_64", + "util-linux-2.34-3.fc31.x86_64", + "vim-minimal-8.1.2102-1.fc31.x86_64", + "which-2.21-15.fc31.x86_64", + "whois-nls-5.5.2-1.fc31.noarch", + "xfsprogs-5.1.0-2.fc31.x86_64", + "xkeyboard-config-2.27-2.fc31.noarch", + "xz-5.2.4-6.fc31.x86_64", + "xz-libs-5.2.4-6.fc31.x86_64", + "yum-4.2.9-5.fc31.noarch", + "zchunk-libs-1.1.2-3.fc31.x86_64", + "zlib-1.2.11-19.fc31.x86_64" + ], + "partition-table": "dos", + "partition-table-id": "0x14fc63d2", + "partitions": [ + { + "bootable": true, + "fstype": "ext4", + "label": null, + "partuuid": "14fc63d2-01", + "size": 2146435072, + "start": 1048576, + "type": "83", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:995:992::/var/lib/chrony:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "polkitd:x:997:994:User for polkitd:/:/sbin/nologin", + "redhat:x:1000:1000::/home/redhat:/bin/bash", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:998:995:systemd Core Dumper:/:/sbin/nologin", + "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "systemd-timesync:x:996:993:systemd Time Synchronization:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:999:999:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/boot/System.map-5.3.7-301.fc31.x86_64": ".M.......", + "/boot/initramfs-5.3.7-301.fc31.x86_64.img": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/proc": ".M.......", + "/run/cryptsetup": ".M.......", + "/sys": ".M.......", + "/var/log/btmp": ".M.......", + "/var/log/journal": ".M....G..", + "/var/log/lastlog": ".M....G.." + }, + "missing": [] + }, + "services-disabled": [ + "arp-ethers.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "console-getty.service", + "debug-shell.service", + "exit.target", + "fstrim.timer", + "halt.target", + "kexec.target", + "loadmodules.service", + "nis-domainname.service", + "poweroff.target", + "proc-sys-fs-binfmt_misc.mount", + "rdisc.service", + "remote-cryptsetup.target", + "runlevel0.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-boot-check-no-failures.service", + "systemd-bootchart.service", + "systemd-network-generator.service", + "systemd-networkd-wait-online.service", + "systemd-networkd.service", + "systemd-networkd.socket", + "systemd-pstore.service", + "systemd-resolved.service", + "systemd-time-wait-sync.service", + "systemd-timesyncd.service", + "tcsd.service" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "cloud-init.service", + "ctrl-alt-del.target", + "dbus-broker.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dbus.service", + "dbus.socket", + "dnf-makecache.timer", + "getty@.service", + "import-state.service", + "messagebus.service", + "reboot.target", + "remote-fs.target", + "runlevel6.target", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "unbound-anchor.timer" + ] + } +} \ No newline at end of file diff --git a/test/cases/fedora_31-x86_64-qcow2-customize.json b/test/cases/fedora_31-x86_64-qcow2-customize.json new file mode 100644 index 0000000..c1e1403 --- /dev/null +++ b/test/cases/fedora_31-x86_64-qcow2-customize.json @@ -0,0 +1,11694 @@ +{ + "compose-request": { + "distro": "fedora-31", + "arch": "x86_64", + "repositories": [ + { + "baseurl": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ], + "image-type": "qcow2", + "filename": "disk.qcow2", + "blueprint": { + "packages": [ + { + "name": "bash", + "version": "*" + } + ], + "groups": [ + { + "name": "core" + } + ], + "customizations": { + "hosname": "my-host", + "kernel": { + "append": "debug" + }, + "sshkey": [ + { + "user": "user1", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ], + "user": [ + { + "name": "user2", + "description": "description 2", + "password": "$6$BhyxFBgrEFh0VrPJ$MllG8auiU26x2pmzL4.1maHzPHrA.4gTdCvlATFp8HJU9UPee4zCS9BVl2HOzKaUYD/zEm8r/OF05F2icWB0K/", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost", + "home": "/home/home2", + "shell": "/bin/sh", + "groups": [ + "group1" + ], + "uid": 1020, + "gid": 1050 + } + ], + "group": [ + { + "name": "group1", + "gid": 1030 + }, + { + "name": "group2", + "gid": 1050 + } + ], + "timezone": { + "timezone": "Europe/London", + "ntpservers": [ + "time.example.com" + ] + }, + "locale": { + "languages": [ + "en_US" + ], + "keyboard": "dvorak" + }, + "services": { + "enabled": [ + "sshd.socket" + ], + "disabled": [ + "bluetooth.service" + ] + } + } + } + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcurl-7.66.0-1.fc31.x86_64.rpm" + }, + "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre2-10.33-14.fc31.x86_64.rpm" + }, + "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdatrie-0.2.9-10.fc31.x86_64.rpm" + }, + "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-firmware-20190923-102.fc31.noarch.rpm" + }, + "sha256:047f9e29fcfa56be98ca3f42249f3ccb2a93df99f2438e3983e2064025f0d79d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jsonschema-3.0.2-1.fc31.noarch.rpm" + }, + "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm" + }, + "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-6.fc31.x86_64.rpm" + }, + "sha256:06512e0f2546baf5c47a058d872fc62c39156bc86b5619eb841b435e2cc61e32": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-cloud-31-1.noarch.rpm" + }, + "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-six-1.12.0-2.fc31.noarch.rpm" + }, + "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-2.fc31.x86_64.rpm" + }, + "sha256:07a3523159719382e2bb9b83961bfe00836cc97f75a9706d02ad73dddb161856": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/chrony-3.5-4.fc31.x86_64.rpm" + }, + "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontconfig-2.13.92-3.fc31.x86_64.rpm" + }, + "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bash-5.0.7-3.fc31.x86_64.rpm" + }, + "sha256:0b54f374bcbe094dbc0d52d9661fe99ebff384026ce0ea39f2d6069e27bf8bdc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdhash-0.5.0-43.fc31.x86_64.rpm" + }, + "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-1.16.0-6.fc31.x86_64.rpm" + }, + "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.x86_64.rpm" + }, + "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.x86_64.rpm" + }, + "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnghttp2-1.39.2-1.fc31.x86_64.rpm" + }, + "sha256:0f26eca4ac936554818769fe32aca5e878af2616e83f836ec463e59eb4f9f1f9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcollection-0.7.0-43.fc31.x86_64.rpm" + }, + "sha256:101fa551ae1ae1885c1627fec47745eb0071ae675a762002e02c0563de89ecbd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cloud-utils-growpart-0.31-3.fc31.noarch.rpm" + }, + "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.x86_64.rpm" + }, + "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.x86_64.rpm" + }, + "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-common-2.30-5.fc31.x86_64.rpm" + }, + "sha256:1135e96b6f9ed29e4ed4c0f060876891a244442a503f0b18ab238589da20d464": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jinja2-2.10.1-2.fc31.noarch.rpm" + }, + "sha256:118548479396b007a80bc98e8cef770ea242ef6b20cd2922d595acd4c100946d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/polkit-libs-0.116-4.fc31.x86_64.rpm" + }, + "sha256:143c50c0663f963c7689c1cec43b81cf1433d5d3b67eb8233ba06506c1b3e095": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jwt-1.7.1-3.fc31.noarch.rpm" + }, + "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/graphite2-1.3.13-1.fc31.x86_64.rpm" + }, + "sha256:167eef09957e5abad6b99d22d9204021ae777b60320cd37d8f934cd9ac2da92a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rsync-3.1.3-9.fc31.x86_64.rpm" + }, + "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-plugins-core-4.0.9-1.fc31.noarch.rpm" + }, + "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm" + }, + "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsmartcols-2.34-3.fc31.x86_64.rpm" + }, + "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-6.1-12.20190803.fc31.x86_64.rpm" + }, + "sha256:19a9152e410c8fdd62220e79dcf4dc3d143ca04c75a09c332066ad8cc94b972e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-rsa-3.4.2-10.fc31.noarch.rpm" + }, + "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-extra-2.02-100.fc31.x86_64.rpm" + }, + "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsigsegv-2.11-8.fc31.x86_64.rpm" + }, + "sha256:1b65944efe48ba0cca34011891480a1db29a7e95dad058376bfca34d68fb0791": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-ply-3.11-3.fc31.noarch.rpm" + }, + "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-misc-2.0.4-14.fc31.noarch.rpm" + }, + "sha256:1e049e86c5dd5c4d6737d47dd194d553ffbd65c81a4077cf6e1029a0fde80fb5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-requests-2.22.0-3.fc31.noarch.rpm" + }, + "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gzip-1.10-1.fc31.x86_64.rpm" + }, + "sha256:1ffe518fc86251b33a58280984e9d06c025190a89a2d60c50d818eaea7bca583": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/syslinux-extlinux-nonlinux-6.04-0.12.fc31.noarch.rpm" + }, + "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/acl-2.2.53-4.fc31.x86_64.rpm" + }, + "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm" + }, + "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/librepo-1.10.5-1.fc31.x86_64.rpm" + }, + "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-rpm-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.x86_64.rpm" + }, + "sha256:21ccdbe703caa6a08056d2bc75c1e184f811472a6e320e5af64b8757fcd07166": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/groff-base-1.22.3-20.fc31.x86_64.rpm" + }, + "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libfdisk-2.34-3.fc31.x86_64.rpm" + }, + "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-1.fc31.x86_64.rpm" + }, + "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libutempter-1.1.6-17.fc31.x86_64.rpm" + }, + "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/readline-8.0-3.fc31.x86_64.rpm" + }, + "sha256:22db6d1e1f34a43c3d045b6750ff3a32184d47c2aedf3dabc93640057de1f4fa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/less-551-2.fc31.x86_64.rpm" + }, + "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.x86_64.rpm" + }, + "sha256:239a9576864532edd325e72b62a10ef147a2bcc0a925079b19fb9cb74bab0dd7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/c-ares-1.15.0-4.fc31.x86_64.rpm" + }, + "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-c-0.13.1-6.fc31.x86_64.rpm" + }, + "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-3.7.4-5.fc31.x86_64.rpm" + }, + "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXfixes-5.0.3-10.fc31.x86_64.rpm" + }, + "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-1.6.8-3.fc31.x86_64.rpm" + }, + "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-2.fc31.noarch.rpm" + }, + "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libstdc++-9.2.1-1.fc31.x86_64.rpm" + }, + "sha256:2af3bbdab1f387ae7af2534846e33ab6d2ca7777399c64191f95699d576cd4ba": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/initscripts-10.02-2.fc31.x86_64.rpm" + }, + "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.x86_64.rpm" + }, + "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgpg-error-1.36-2.fc31.x86_64.rpm" + }, + "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shadow-utils-4.6-16.fc31.x86_64.rpm" + }, + "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/brotli-1.0.7-6.fc31.x86_64.rpm" + }, + "sha256:2c5b5ce5f6e6d1d79f35eab253a12e19aeb863f4fe8ded94013f76a9834689fb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.20.4-1.fc31.x86_64.rpm" + }, + "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm" + }, + "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.x86_64.rpm" + }, + "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm" + }, + "sha256:2d9a2e736dd5231df3c5c748ce0ba5a75a409dacfe73f14676781f32d565a7df": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jsonpointer-1.10-16.fc31.noarch.rpm" + }, + "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXext-1.3.4-2.fc31.x86_64.rpm" + }, + "sha256:2e588b5133dc8cb26ff0226f66eb1be440c6b784ec6fa67a5f0516d8ccaf46f5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-cryptography-2.6.1-2.fc31.x86_64.rpm" + }, + "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-libs-5.37-3.fc31.x86_64.rpm" + }, + "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsepol-2.9-2.fc31.x86_64.rpm" + }, + "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm" + }, + "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/langpacks-en-2.0-7.fc31.noarch.rpm" + }, + "sha256:307275b46896d56d23f5da5ab77a299941e77165ff44e846d6620eee1158131c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_certmap-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/avahi-libs-0.7-20.fc31.x86_64.rpm" + }, + "sha256:32cc578c8da626a8c1a5316a59d482967a32547be6c077f73fb90e11fb0f1e6a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyserial-3.4-3.fc31.noarch.rpm" + }, + "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsolv-0.7.5-3.fc31.x86_64.rpm" + }, + "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.x86_64.rpm" + }, + "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/harfbuzz-2.6.1-2.fc31.x86_64.rpm" + }, + "sha256:33334afdde6c813b18c18897dca19fab5a2ce090eba0b5ea0a38f43f1081c190": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dhcp-client-4.4.1-15.fc31.x86_64.rpm" + }, + "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib-networking-2.62.1-1.fc31.x86_64.rpm" + }, + "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-2.30-5.fc31.x86_64.rpm" + }, + "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libarchive-3.4.0-1.fc31.x86_64.rpm" + }, + "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXft-2.3.3-2.fc31.x86_64.rpm" + }, + "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-3.33.4-1.fc31.x86_64.rpm" + }, + "sha256:34a9986b8b61812ceaf32ce3b189bd0b2cb4adaaf47d76ec1f50ce07c45b5675": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-config-generic-049-27.git20181204.fc31.1.x86_64.rpm" + }, + "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dejavu-fonts-common-2.37-2.fc31.noarch.rpm" + }, + "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm" + }, + "sha256:3553c0d8c0639d043a50ce16c3694e17d399e126b25106de0a75fc8dbc13b709": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/polkit-pkla-compat-0.1-15.fc31.x86_64.rpm" + }, + "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm" + }, + "sha256:35c348bcd91fa114ad459b888131e5e5509259cffce33f22c44f92e57e9e5919": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dbus-1.2.8-6.fc31.x86_64.rpm" + }, + "sha256:3629a3675c7dadd89f3b3d855e7c57d8f93d30d59fa00fdeabfc5e5e39ca4937": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/checkpolicy-2.9-2.fc31.x86_64.rpm" + }, + "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libs-3.7.4-5.fc31.x86_64.rpm" + }, + "sha256:36f24cbb8727406af1448c055971cca1956eaf0f1183320e1ed2df1c61c69451": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/git-core-2.23.0-1.fc31.x86_64.rpm" + }, + "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libargon2-20171227-3.fc31.x86_64.rpm" + }, + "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.x86_64.rpm" + }, + "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libevent-2.1.8-7.fc31.x86_64.rpm" + }, + "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-2.2.17-2.fc31.x86_64.rpm" + }, + "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-31-1.noarch.rpm" + }, + "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcc-9.2.1-1.fc31.x86_64.rpm" + }, + "sha256:422625da0fbb99cc4da8eebebff892c6e73a87c81a33190f7a17e344f6bb709e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_autofs-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rest-0.8.1-6.fc31.x86_64.rpm" + }, + "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grep-3.3-3.fc31.x86_64.rpm" + }, + "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nettle-3.5.1-3.fc31.x86_64.rpm" + }, + "sha256:430f2f71be063eb9d04fe38659f62e29f47c9c878f9985d0569cb49e9c89ebc0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmaxminddb-1.2.0-8.fc31.x86_64.rpm" + }, + "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.x86_64.rpm" + }, + "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.x86_64.rpm" + }, + "sha256:456252f83ba91a1150f180a81998c3acdd71be57a324cf84d6d842a063c56a12": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/heat-cfntools-1.4.2-9.fc31.noarch.rpm" + }, + "sha256:45bf4bef479712936db1d6859b043d13e6cad41c851b6e621fc315b39ecfa14b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libndp-1.7-4.fc31.x86_64.rpm" + }, + "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mkpasswd-5.5.2-1.fc31.x86_64.rpm" + }, + "sha256:469d12368377399b8eaa7ec8cf1b6378ab18476b4a2b61b79091510a8945c6aa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-43.fc31.x86_64.rpm" + }, + "sha256:486f2fb09621afabdebfd0cd897c9a77d93bb21ed41dc0a18b600d48654fed64": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/syslinux-extlinux-6.04-0.12.fc31.x86_64.rpm" + }, + "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zlib-1.2.11-19.fc31.x86_64.rpm" + }, + "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm" + }, + "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXdamage-1.1.4-17.fc31.x86_64.rpm" + }, + "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtiff-4.0.10-6.fc31.x86_64.rpm" + }, + "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm" + }, + "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm" + }, + "sha256:4cca3f986ddbd38cfbfb6d1c8d336a1aaed78f7da1f38356ce1e034ba35ec492": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-attrs-19.1.0-2.fc31.noarch.rpm" + }, + "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtasn1-4.14-2.fc31.x86_64.rpm" + }, + "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.10-1.fc31.x86_64.rpm" + }, + "sha256:4f9bbd08f6019b3482342d616d6b04e6481924ea34fbfe8d30ef63402a92e9b1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-nfs-idmap-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-5.37-3.fc31.x86_64.rpm" + }, + "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm" + }, + "sha256:5593277fa685adba864393da8faf76950d6d8fb1483af036cdc08d8437c387bb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtevent-0.10.1-1.fc31.x86_64.rpm" + }, + "sha256:55c47c63deb00a9126c068299c01dfbdd39d58c6962138b862b92f5c7af8c898": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/parted-3.2.153-1.fc31.x86_64.rpm" + }, + "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libss-1.45.3-1.fc31.x86_64.rpm" + }, + "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jbigkit-libs-2.1-17.fc31.x86_64.rpm" + }, + "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libthai-0.1.28-3.fc31.x86_64.rpm" + }, + "sha256:5a7e957102a23c9924398fe45f5cdec66edcd10adcad7130d6ebf02c2706ad49": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-policycoreutils-2.9-5.fc31.noarch.rpm" + }, + "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgomp-9.2.1-1.fc31.x86_64.rpm" + }, + "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-8.0p1-8.fc31.1.x86_64.rpm" + }, + "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/krb5-libs-1.17-45.fc31.x86_64.rpm" + }, + "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.02-100.fc31.x86_64.rpm" + }, + "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-udev-243-4.gitef67743.fc31.x86_64.rpm" + }, + "sha256:5d8d55e12443628c7a1915648845663e4aed1863805854de0adadd89772eda2a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-markupsafe-1.1.1-2.fc31.x86_64.rpm" + }, + "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-1.12.16-3.fc31.x86_64.rpm" + }, + "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdnf-0.35.3-6.fc31.x86_64.rpm" + }, + "sha256:6091b138c5dee897cb1c99b0d556f3e03ce6bb2c6ad3c10fed54136092a9d694": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mtools-4.0.23-1.fc31.x86_64.rpm" + }, + "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libffi-3.1-23.fc31.x86_64.rpm" + }, + "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/os-prober-1.77-3.fc31.x86_64.rpm" + }, + "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-3.fc31.x86_64.rpm" + }, + "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-2.fc31.x86_64.rpm" + }, + "sha256:669250ad47aad5939cf4d1b88036fd95a94845d8e0bbdb05e933f3d2fe262fea": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qemu-img-4.1.0-2.fc31.x86_64.rpm" + }, + "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsecret-0.19.1-1.fc31.x86_64.rpm" + }, + "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libusbx-1.0.22-4.fc31.x86_64.rpm" + }, + "sha256:6771e14a2ea70c74e800f6122df6c056a7e2c3c16d74b9b5f96ddfd482e38326": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/syslinux-6.04-0.12.fc31.x86_64.rpm" + }, + "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libunistring-0.9.10-6.fc31.x86_64.rpm" + }, + "sha256:682af90a049fa78429d5ebd194700609f762e59ceb6c4ca28b17e7f4fd1683aa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-prettytable-0.7.2-18.fc31.noarch.rpm" + }, + "sha256:687d00eb0b77446dbd78aaa0f4f99cc080c677930ad783120483614255264a3d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-client-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cpio-2.12-12.fc31.x86_64.rpm" + }, + "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpwquality-1.4.1-1.fc31.x86_64.rpm" + }, + "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm" + }, + "sha256:6b694ee239a2e3f38c401e975de392e3731ad8b18be5a3249ea02f19e87cb5cb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-common-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm" + }, + "sha256:6c1f9dc11de4d3af4d4c418b4556ee9659011d587e9da44bb039cb30ac326841": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.x86_64.rpm" + }, + "sha256:6c6f1152899318bdc0500cfb0b0cdbbc19ba0e017b5888ece1358250caa2629f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pytz-2019.2-1.fc31.noarch.rpm" + }, + "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmount-2.34-3.fc31.x86_64.rpm" + }, + "sha256:6d8cbba688cea65fa80983cd7f140633e94cd58daa819342d1ae571a4ff174c6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/NetworkManager-1.20.4-1.fc31.x86_64.rpm" + }, + "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.x86_64.rpm" + }, + "sha256:6ed7f318c5e93b59254d7b7652131f33db713eeb61f52413f21e533069ed24bf": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pycparser-2.14-20.fc31.noarch.rpm" + }, + "sha256:6f2dae9b49bed8e1036a21aadd92ea2eb371979f6714ec2bce5742de051eeb14": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.30-5.fc31.x86_64.rpm" + }, + "sha256:6f729da330aaaea336458a8b6f3f1d2cc761693ba20bdda57fb9c49fb6f2120d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-43.fc31.x86_64.rpm" + }, + "sha256:6f7fbd57db9334a3cc7983d2e920afe92abe3f7e168702612d70e9ff405d79e6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libini_config-1.3.1-43.fc31.x86_64.rpm" + }, + "sha256:704ebfc50ace9417ed28f4530d778359a4c2f95d524c2e99346472245e30b548": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sudo-1.8.28-1.fc31.x86_64.rpm" + }, + "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm" + }, + "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpsl-0.21.0-2.fc31.x86_64.rpm" + }, + "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.x86_64.rpm" + }, + "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-2.fc31.x86_64.rpm" + }, + "sha256:72b5df6982fecdbee30d40bbb6042c72ed0f31b787f289b4a27f0dffc6f609fe": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iputils-20190515-3.fc31.x86_64.rpm" + }, + "sha256:73a7249de97f0ad66bc1a867ac5b5d08b741ab152d4dd7ce45cc231d64126b58": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-asn1crypto-0.24.0-7.fc31.noarch.rpm" + }, + "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-3.fc31.x86_64.rpm" + }, + "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libblkid-2.34-3.fc31.x86_64.rpm" + }, + "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jasper-libs-2.0.14-9.fc31.x86_64.rpm" + }, + "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dhcp-common-4.4.1-15.fc31.noarch.rpm" + }, + "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/y/yum-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-2.26-6.fc31.x86_64.rpm" + }, + "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib2-2.62.1-1.fc31.x86_64.rpm" + }, + "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.x86_64.rpm" + }, + "sha256:764699ea124f85a7afcf65a2f138e3821770f8aa1ef134e1813e2b04477f0b74": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/man-db-2.8.4-5.fc31.x86_64.rpm" + }, + "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk3-3.24.12-3.fc31.x86_64.rpm" + }, + "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libidn2-2.2.0-2.fc31.x86_64.rpm" + }, + "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/policycoreutils-2.9-5.fc31.x86_64.rpm" + }, + "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm" + }, + "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libs-0.177-1.fc31.x86_64.rpm" + }, + "sha256:78b600621e00f4a0acc8f58de056ae9393ce4e1cded56837b4e557c1bc84b06b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-urllib3-1.25.3-4.fc31.noarch.rpm" + }, + "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXinerama-1.1.4-4.fc31.x86_64.rpm" + }, + "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/findutils-4.6.0-24.fc31.x86_64.rpm" + }, + "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libyaml-0.2.2-2.fc31.x86_64.rpm" + }, + "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/popt-1.16-18.fc31.x86_64.rpm" + }, + "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.x86_64.rpm" + }, + "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-libs-1.8.3-5.fc31.x86_64.rpm" + }, + "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kpartx-0.8.0-3.fc31.x86_64.rpm" + }, + "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-base-3.33.4-1.fc31.x86_64.rpm" + }, + "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-unbound-1.9.3-1.fc31.x86_64.rpm" + }, + "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgusb-0.3.0-5.fc31.x86_64.rpm" + }, + "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/alternatives-1.11-5.fc31.x86_64.rpm" + }, + "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shared-mime-info-1.14-1.fc31.x86_64.rpm" + }, + "sha256:7fc8df6b10728f46c3e752c35f6777f17025bef30f61c67f76de2538888a5546": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-cffi-1.12.3-1.fc31.x86_64.rpm" + }, + "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodman-2.0.1-20.fc31.x86_64.rpm" + }, + "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/langpacks-core-en-2.0-7.fc31.noarch.rpm" + }, + "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-common-2.02-100.fc31.noarch.rpm" + }, + "sha256:8221111dc9a9aa5c68805f153c3fbe5314c8a0f335af29685733b958253dd278": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-idna-2.8-2.fc31.noarch.rpm" + }, + "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-5.3.28-38.fc31.x86_64.rpm" + }, + "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gawk-5.0.1-5.fc31.x86_64.rpm" + }, + "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm" + }, + "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-libs-5.2.4-6.fc31.x86_64.rpm" + }, + "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm" + }, + "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-243-4.gitef67743.fc31.x86_64.rpm" + }, + "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cups-libs-2.2.12-2.fc31.x86_64.rpm" + }, + "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libproxy-0.4.15-14.fc31.x86_64.rpm" + }, + "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-8.fc31.x86_64.rpm" + }, + "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lcms2-2.9-6.fc31.x86_64.rpm" + }, + "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/unbound-libs-1.9.3-1.fc31.x86_64.rpm" + }, + "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.x86_64.rpm" + }, + "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcroco-0.6.13-2.fc31.x86_64.rpm" + }, + "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:8bd2655674b40e89f5f63af7f8ffafd0e9064a3378cdca050262a7272678e8e5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnl3-3.5.0-1.fc31.x86_64.rpm" + }, + "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre-8.43-2.fc31.1.x86_64.rpm" + }, + "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/colord-libs-1.4.4-2.fc31.x86_64.rpm" + }, + "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm" + }, + "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/atk-2.34.1-1.fc31.x86_64.rpm" + }, + "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libattr-2.4.48-7.fc31.x86_64.rpm" + }, + "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnutls-3.6.10-1.fc31.x86_64.rpm" + }, + "sha256:8f7b737ccb294fd5ba1d19075ea2a50a54e0265d8efa28aae0ade59d3e3a63be": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libldb-2.0.7-1.fc31.x86_64.rpm" + }, + "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.x86_64.rpm" + }, + "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libacl-2.2.53-4.fc31.x86_64.rpm" + }, + "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pixman-0.38.4-1.fc31.x86_64.rpm" + }, + "sha256:9247561bad35a8a2f8269b2bbbd28d1bf5e6fcde1fe78e1fc3c0e712513e9703": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtalloc-2.3.0-1.fc31.x86_64.rpm" + }, + "sha256:93161df6d62fe654c7cdba9ae36343d2549b437b27eac816a80f8d7c32a47162": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-kcm-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-firmware-whence-20190923-102.fc31.noarch.rpm" + }, + "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.x86_64.rpm" + }, + "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pinentry-1.1.0-6.fc31.x86_64.rpm" + }, + "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXi-1.7.10-2.fc31.x86_64.rpm" + }, + "sha256:95b45de2c57f35df43bff0c2ebe32c64183968b3a41c5673cfeeff5ece506b94": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuser-0.62-21.fc31.x86_64.rpm" + }, + "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.x86_64.rpm" + }, + "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-utils-2.9-5.fc31.x86_64.rpm" + }, + "sha256:9975496f29601a1c2cdb89e63aac698fdd8283ba3a52a9d91ead9473a0e064c8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tar-1.32-2.fc31.x86_64.rpm" + }, + "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-1.fc31.x86_64.rpm" + }, + "sha256:9b49fdc41ba8f1284c63db29b8bda002a7256a54fdba14c9d3fccd852b8547b1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-boto-2.49.0-1.fc31.noarch.rpm" + }, + "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/curl-7.66.0-1.fc31.x86_64.rpm" + }, + "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-repos-31-1.noarch.rpm" + }, + "sha256:9cc3e6534ae34343e7e4d056d46b9551da7d0a82c7bad378c3626d4b70d1bf62": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cloud-init-17.1-11.fc31.noarch.rpm" + }, + "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-bootchart-233-5.fc31.x86_64.rpm" + }, + "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libverto-0.3.0-8.fc31.x86_64.rpm" + }, + "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-3.fc31.noarch.rpm" + }, + "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm" + }, + "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcomps-0.1.11-3.fc31.x86_64.rpm" + }, + "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-1.fc31.x86_64.rpm" + }, + "sha256:9fea00b14943cac0e3b11ff3a319765168cf78b3cc58fdee7d5fe48246a0aa4d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm" + }, + "sha256:a188b5c697b734d4ed7d8f954b6875b9d401dc2a3c10bfd20d03db131ca73ab5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hostname-3.20-9.fc31.x86_64.rpm" + }, + "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcomposite-0.4.4-17.fc31.x86_64.rpm" + }, + "sha256:a1bd1b5a2c47e57957a77d32f4fd705de1df30557837cfbc83b8f284e4ee0456": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-2.9.6-21.fc31.x86_64.rpm" + }, + "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gmp-6.1.2-10.fc31.x86_64.rpm" + }, + "sha256:a41579023e1db3dec06679ebc7788ece92686ea2a23c78dd749c98ddbc82d419": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.23-3.fc31.x86_64.rpm" + }, + "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.02-100.fc31.noarch.rpm" + }, + "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gpgme-1.13.1-3.fc31.x86_64.rpm" + }, + "sha256:a6bab7030d3296875cb0cad2c30fb18042dab8ae070c9c6f97457bb0a5cc6316": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyyaml-5.1.2-1.fc31.x86_64.rpm" + }, + "sha256:a7071aa0068c9dff913c5f0523be3ffdd7f67b8f13e1ee2aa16e486b01aecc1c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libsemanage-2.9-3.fc31.x86_64.rpm" + }, + "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-client-1.17.0-2.fc31.x86_64.rpm" + }, + "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pam-1.3.1-18.fc31.x86_64.rpm" + }, + "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-38.fc31.x86_64.rpm" + }, + "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-1.fc31.x86_64.rpm" + }, + "sha256:aacf84989a0fe55366f6d37ddd1753b8c06e5640e9334805bf468777824a3ac0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setools-4.2.2-1.fc31.x86_64.rpm" + }, + "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.x86_64.rpm" + }, + "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-libs-26-4.fc31.x86_64.rpm" + }, + "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.x86_64.rpm" + }, + "sha256:adf011910ee572cb557b7340002aed9376004b786585e78e6546192a323c6d78": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/polkit-0.116-4.fc31.x86_64.rpm" + }, + "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libksba-1.3.5-10.fc31.x86_64.rpm" + }, + "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpcap-1.9.0-4.fc31.x86_64.rpm" + }, + "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm" + }, + "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tss2-1331-2.fc31.x86_64.rpm" + }, + "sha256:b110ee65fa2dee77585ec77cab592cba2434d579f8afbed4d2a908ad1addccfc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dosfstools-4.1-9.fc31.x86_64.rpm" + }, + "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libepoxy-1.5.3-4.fc31.x86_64.rpm" + }, + "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fribidi-1.0.5-4.fc31.x86_64.rpm" + }, + "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libseccomp-2.4.1-1.fc31.x86_64.rpm" + }, + "sha256:b3c4cfdf820225133f4e9e600de3300ef0c7bac34139433505dd4482da52be22": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xfsprogs-5.1.0-2.fc31.x86_64.rpm" + }, + "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuuid-2.34-3.fc31.x86_64.rpm" + }, + "sha256:b49419bed59686efde6fc04953c2ab64a46c2bae46227a872bb3a823538c636d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyasn1-0.4.4-5.fc31.noarch.rpm" + }, + "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openldap-2.4.47-3.fc31.x86_64.rpm" + }, + "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.x86_64.rpm" + }, + "sha256:b703a38c0dea8bcd2be7bfb83d0f71ee2ee15a140a25998d6837261331140919": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-psutil-5.6.3-2.fc31.x86_64.rpm" + }, + "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-2.02-100.fc31.x86_64.rpm" + }, + "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-9.fc31.x86_64.rpm" + }, + "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-2.9-5.fc31.x86_64.rpm" + }, + "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.x86_64.rpm" + }, + "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm" + }, + "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.x86_64.rpm" + }, + "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcb-1.13.1-3.fc31.x86_64.rpm" + }, + "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libassuan-2.5.3-2.fc31.x86_64.rpm" + }, + "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/npth-1.6-3.fc31.x86_64.rpm" + }, + "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-1.1.1d-2.fc31.x86_64.rpm" + }, + "sha256:bfe43a646ce98fc8cdcb52738f91e0ee5b8fd43760336d267bc20500aacd15bc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mozjs60-60.9.0-3.fc31.x86_64.rpm" + }, + "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-2.fc31.noarch.rpm" + }, + "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-8.31-4.fc31.x86_64.rpm" + }, + "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrandr-1.5.2-2.fc31.x86_64.rpm" + }, + "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.4-37.fc31.noarch.rpm" + }, + "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.x86_64.rpm" + }, + "sha256:c3aa4d794cef51ba9fcbf3750baed55aabfa36062a48f61149ccf03364a0d256": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-server-8.0p1-8.fc31.1.x86_64.rpm" + }, + "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:c459092a47bd2f904d9fe830735b512ef97b52785ee12abb2ba5c52465560f18": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/passwd-0.80-6.fc31.x86_64.rpm" + }, + "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-5.2.4-6.fc31.x86_64.rpm" + }, + "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXtst-1.2.3-10.fc31.x86_64.rpm" + }, + "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.x86_64.rpm" + }, + "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.x86_64.rpm" + }, + "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.x86_64.rpm" + }, + "sha256:c8e0a36410ebbd9db0a10e1fbecbae8f6288b9be86752d2e91725d5dd98ec65d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipcalc-0.2.5-3.fc31.x86_64.rpm" + }, + "sha256:c976ce75eda3dbe734117f6f558eafb2061bbef66086a04cb907a7ddbaea8bc2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmnl-1.0.4-10.fc31.x86_64.rpm" + }, + "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-2.0.4-14.fc31.x86_64.rpm" + }, + "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libzstd-1.4.2-1.fc31.x86_64.rpm" + }, + "sha256:ca6a71888b8d147342012c64533f61a41b26c788bbcd2844a2164ee007fac981": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libselinux-2.9-5.fc31.x86_64.rpm" + }, + "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-6.fc31.x86_64.rpm" + }, + "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm" + }, + "sha256:cc02df4125eaebf642edd9bf00031ec09871c285816c03112909ef1005410eaa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm" + }, + "sha256:cdc526097cd2fecb75e44ad11a69b10eb7804f310298c064c3b931515d4f3d5c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-configobj-5.0.6-16.fc31.noarch.rpm" + }, + "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/filesystem-3.12-2.fc31.x86_64.rpm" + }, + "sha256:cef060334e8c21b5d2e3a87bdd0ad5ac1be389d7794735506b9d3c65c2923cd3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iproute-5.3.0-1.fc31.x86_64.rpm" + }, + "sha256:cf6506ad88ecaab89efde02eee218365a36981114638c03989ba2768457ae335": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/net-tools-2.0-0.55.20160912git.fc31.x86_64.rpm" + }, + "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-3.fc31.x86_64.rpm" + }, + "sha256:cfeb5d0cb9c116e39292e3158c68ee62880cff4a5e3d098d20bf9567e5a576e1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpipeline-1.5.1-3.fc31.x86_64.rpm" + }, + "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxml2-2.9.9-3.fc31.x86_64.rpm" + }, + "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-0.20.1-2.fc31.x86_64.rpm" + }, + "sha256:d219a6c4a2410d6ef9bad2b337557779b969e278b657ffede83c021c20f665ca": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iproute-tc-5.3.0-1.fc31.x86_64.rpm" + }, + "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/geolite2-city-20190806-1.fc31.noarch.rpm" + }, + "sha256:d2c819a7e607a9e22f55047ed03d064e4b0f125ad4fb20532c543a6d8af8bfa5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/v/vim-minimal-8.1.2102-1.fc31.x86_64.rpm" + }, + "sha256:d334fe6e150349148b9cb77e32523029311ce8cb10d222d11c951b66637bbd3a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bzip2-1.0.8-1.fc31.x86_64.rpm" + }, + "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm" + }, + "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-0.9.0-6.fc31.x86_64.rpm" + }, + "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.x86_64.rpm" + }, + "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/expat-2.2.8-1.fc31.x86_64.rpm" + }, + "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.x86_64.rpm" + }, + "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-plugins-core-4.0.9-1.fc31.noarch.rpm" + }, + "sha256:d54f02fc39b3e87253808f665918d26ffe901f1228e25121c908661b47ba266b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pysocks-1.7.0-2.fc31.noarch.rpm" + }, + "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pango-1.44.6-1.fc31.x86_64.rpm" + }, + "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libelf-0.177-1.fc31.x86_64.rpm" + }, + "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/selinux-policy-3.14.4-37.fc31.noarch.rpm" + }, + "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mpfr-3.1.6-5.fc31.x86_64.rpm" + }, + "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rootfiles-8.1-25.fc31.noarch.rpm" + }, + "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-1.02.163-2.fc31.x86_64.rpm" + }, + "sha256:d90abd2b8eca279a2120bf7836503745d36432630258925292ee7dacfabe4c92": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pbr-5.1.2-4.fc31.noarch.rpm" + }, + "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcursor-1.1.15-6.fc31.x86_64.rpm" + }, + "sha256:da923b379524f2d8d26905f26a9dc763cec36c40306c4c53db57100574ea89b8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libref_array-0.1.5-43.fc31.x86_64.rpm" + }, + "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.x86_64.rpm" + }, + "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.x86_64.rpm" + }, + "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpng-1.6.37-2.fc31.x86_64.rpm" + }, + "sha256:dc924dd33a9bd0b9483ebdbcf7caecbe1f48b8a135f1521291c8433fa76f4603": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jansson-2.12-4.fc31.x86_64.rpm" + }, + "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/diffutils-3.7-3.fc31.x86_64.rpm" + }, + "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.x86_64.rpm" + }, + "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sed-4.5-4.fc31.x86_64.rpm" + }, + "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm" + }, + "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-ng-0.7.9-8.fc31.x86_64.rpm" + }, + "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrender-0.9.10-10.fc31.x86_64.rpm" + }, + "sha256:e17ef6f7d4f1869ff5813d6f8f2983cd6f5cd23d4a666b7ae19154636e911644": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-babel-2.7.0-2.fc31.noarch.rpm" + }, + "sha256:e1bda9438577473413f3c7455ce84b6c8486adee3d4473fafcd28309ad8c2913": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-7.fc31.x86_64.rpm" + }, + "sha256:e405d2edc9b9fc2c13242f0225049b071aa4159d09d8e2d501e8c4fe88a9710b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-25.fc31.x86_64.rpm" + }, + "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-common-31-1.noarch.rpm" + }, + "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-legacy-2.0.4-14.fc31.noarch.rpm" + }, + "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsoup-2.68.2-1.fc31.x86_64.rpm" + }, + "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/freetype-2.10.0-3.fc31.x86_64.rpm" + }, + "sha256:e98119ac7a707287668e7a9a74ef2809ee5f555af04f52775367e428e08dbb33": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jsonpatch-1.21-8.fc31.noarch.rpm" + }, + "sha256:eac54fb3ab5e4c457aa6522398560713ce91394662ca11b554684bda2e0ab2af": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grubby-8.40-36.fc31.x86_64.rpm" + }, + "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-glib-1.4.4-3.fc31.x86_64.rpm" + }, + "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-4.4.10-1.fc31.x86_64.rpm" + }, + "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-broker-21-6.fc31.x86_64.rpm" + }, + "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-26-4.fc31.x86_64.rpm" + }, + "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/which-2.21-15.fc31.x86_64.rpm" + }, + "sha256:ee6596a5010c2b4a038861828ecca240aa03c592dacd83c3a70d44cb8ee50408": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libaio-0.3.111-6.fc31.x86_64.rpm" + }, + "sha256:ee6dbb4914a35ee8a816ecde34d29221e3f4622324f6287c328e8ac22ae572ad": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-chardet-3.0.4-10.fc31.noarch.rpm" + }, + "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-049-27.git20181204.fc31.1.x86_64.rpm" + }, + "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-libs-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.x86_64.rpm" + }, + "sha256:f0509e333636e5c34726c8a2b8260bf88fe0a35b95cae6dda62191fee1be4c6a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-core-5.3.7-301.fc31.x86_64.rpm" + }, + "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm" + }, + "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcom_err-1.45.3-1.fc31.x86_64.rpm" + }, + "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-common-8.31-4.fc31.x86_64.rpm" + }, + "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm" + }, + "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pigz-2.4-5.fc31.x86_64.rpm" + }, + "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dconf-0.34.0-1.fc31.x86_64.rpm" + }, + "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/util-linux-2.34-3.fc31.x86_64.rpm" + }, + "sha256:f50957375c79be57f391625b97d6ea74505e05f2edc6b9bc6768d5e3ad6ef8f8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.x86_64.rpm" + }, + "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.x86_64.rpm" + }, + "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-2.02-100.fc31.x86_64.rpm" + }, + "sha256:f61555e6e74917be3f131bd5af9d9e30ed709111701e950b7ebd4392baf33f12": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnfsidmap-2.4.1-1.rc1.fc31.x86_64.rpm" + }, + "sha256:f67d5cc67029c6c38185f94b72aaa9034a49f5c4f166066c8268b41e1b18a202": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.30-5.fc31.x86_64.rpm" + }, + "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm" + }, + "sha256:f85469c0c19ce86e8fdd0dd5a3e6e5c9b78e3436ae9ce70ba86b2b4a3794f693": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-oauthlib-3.0.2-2.fc31.noarch.rpm" + }, + "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXau-1.0.9-2.fc31.x86_64.rpm" + }, + "sha256:fa979526906cc9182ebdb6e50c9d09deba8518f69750495fec4267a425c8f783": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyrsistent-0.15.4-1.fc31.x86_64.rpm" + }, + "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.x86_64.rpm" + }, + "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.x86_64.rpm" + }, + "sha256:fccade859cbb884fd61c07433e6c316f794885cbb2186debcff3f6894d16d52c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtdb-1.4.2-1.fc31.x86_64.rpm" + }, + "sha256:fced380b3f7270b186dd2b67aef7c9f5614617e71fcea61fd903864a20a4924e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/syslinux-nonlinux-6.04-0.12.fc31.noarch.rpm" + }, + "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsemanage-2.9-3.fc31.x86_64.rpm" + }, + "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/geolite2-country-20190806-1.fc31.noarch.rpm" + }, + "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.x86_64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "checksum": "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d", + "check_gpg": true + }, + { + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "checksum": "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081", + "check_gpg": true + }, + { + "checksum": "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355", + "check_gpg": true + }, + { + "checksum": "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1", + "check_gpg": true + }, + { + "checksum": "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5", + "check_gpg": true + }, + { + "checksum": "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09", + "check_gpg": true + }, + { + "checksum": "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02", + "check_gpg": true + }, + { + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "checksum": "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3", + "check_gpg": true + }, + { + "checksum": "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1", + "check_gpg": true + }, + { + "checksum": "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7", + "check_gpg": true + }, + { + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "checksum": "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a", + "check_gpg": true + }, + { + "checksum": "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3", + "check_gpg": true + }, + { + "checksum": "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736", + "check_gpg": true + }, + { + "checksum": "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc", + "check_gpg": true + }, + { + "checksum": "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc", + "check_gpg": true + }, + { + "checksum": "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38", + "check_gpg": true + }, + { + "checksum": "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4", + "check_gpg": true + }, + { + "checksum": "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c", + "check_gpg": true + }, + { + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "checksum": "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8", + "check_gpg": true + }, + { + "checksum": "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4", + "check_gpg": true + }, + { + "checksum": "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49", + "check_gpg": true + }, + { + "checksum": "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1", + "check_gpg": true + }, + { + "checksum": "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee", + "check_gpg": true + }, + { + "checksum": "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8", + "check_gpg": true + }, + { + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "checksum": "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71", + "check_gpg": true + }, + { + "checksum": "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27", + "check_gpg": true + }, + { + "checksum": "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7", + "check_gpg": true + }, + { + "checksum": "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f", + "check_gpg": true + }, + { + "checksum": "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732", + "check_gpg": true + }, + { + "checksum": "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7", + "check_gpg": true + }, + { + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "checksum": "sha256:b110ee65fa2dee77585ec77cab592cba2434d579f8afbed4d2a908ad1addccfc", + "check_gpg": true + }, + { + "checksum": "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159", + "check_gpg": true + }, + { + "checksum": "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7", + "check_gpg": true + }, + { + "checksum": "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89", + "check_gpg": true + }, + { + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "checksum": "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228", + "check_gpg": true + }, + { + "checksum": "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407", + "check_gpg": true + }, + { + "checksum": "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f", + "check_gpg": true + }, + { + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "checksum": "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c", + "check_gpg": true + }, + { + "checksum": "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c", + "check_gpg": true + }, + { + "checksum": "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff", + "check_gpg": true + }, + { + "checksum": "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067", + "check_gpg": true + }, + { + "checksum": "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a", + "check_gpg": true + }, + { + "checksum": "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2", + "check_gpg": true + }, + { + "checksum": "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54", + "check_gpg": true + }, + { + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "checksum": "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee", + "check_gpg": true + }, + { + "checksum": "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891", + "check_gpg": true + }, + { + "checksum": "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d", + "check_gpg": true + }, + { + "checksum": "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203", + "check_gpg": true + }, + { + "checksum": "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd", + "check_gpg": true + }, + { + "checksum": "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc", + "check_gpg": true + }, + { + "checksum": "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84", + "check_gpg": true + }, + { + "checksum": "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb", + "check_gpg": true + }, + { + "checksum": "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c", + "check_gpg": true + }, + { + "checksum": "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926", + "check_gpg": true + }, + { + "checksum": "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3", + "check_gpg": true + }, + { + "checksum": "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a", + "check_gpg": true + }, + { + "checksum": "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79", + "check_gpg": true + }, + { + "checksum": "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13", + "check_gpg": true + }, + { + "checksum": "sha256:f67d5cc67029c6c38185f94b72aaa9034a49f5c4f166066c8268b41e1b18a202", + "check_gpg": true + }, + { + "checksum": "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb", + "check_gpg": true + }, + { + "checksum": "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a", + "check_gpg": true + }, + { + "checksum": "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e", + "check_gpg": true + }, + { + "checksum": "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5", + "check_gpg": true + }, + { + "checksum": "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5", + "check_gpg": true + }, + { + "checksum": "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458", + "check_gpg": true + }, + { + "checksum": "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d", + "check_gpg": true + }, + { + "checksum": "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16", + "check_gpg": true + }, + { + "checksum": "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada", + "check_gpg": true + }, + { + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "checksum": "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc", + "check_gpg": true + }, + { + "checksum": "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1", + "check_gpg": true + }, + { + "checksum": "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8", + "check_gpg": true + }, + { + "checksum": "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214", + "check_gpg": true + }, + { + "checksum": "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031", + "check_gpg": true + }, + { + "checksum": "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8", + "check_gpg": true + }, + { + "checksum": "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d", + "check_gpg": true + }, + { + "checksum": "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150", + "check_gpg": true + }, + { + "checksum": "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01", + "check_gpg": true + }, + { + "checksum": "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994", + "check_gpg": true + }, + { + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "checksum": "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6", + "check_gpg": true + }, + { + "checksum": "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4", + "check_gpg": true + }, + { + "checksum": "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00", + "check_gpg": true + }, + { + "checksum": "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5", + "check_gpg": true + }, + { + "checksum": "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422", + "check_gpg": true + }, + { + "checksum": "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad", + "check_gpg": true + }, + { + "checksum": "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c", + "check_gpg": true + }, + { + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "checksum": "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1", + "check_gpg": true + }, + { + "checksum": "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b", + "check_gpg": true + }, + { + "checksum": "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1", + "check_gpg": true + }, + { + "checksum": "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00", + "check_gpg": true + }, + { + "checksum": "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466", + "check_gpg": true + }, + { + "checksum": "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b", + "check_gpg": true + }, + { + "checksum": "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679", + "check_gpg": true + }, + { + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "checksum": "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834", + "check_gpg": true + }, + { + "checksum": "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c", + "check_gpg": true + }, + { + "checksum": "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59", + "check_gpg": true + }, + { + "checksum": "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a", + "check_gpg": true + }, + { + "checksum": "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077", + "check_gpg": true + }, + { + "checksum": "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c", + "check_gpg": true + }, + { + "checksum": "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc", + "check_gpg": true + }, + { + "checksum": "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141", + "check_gpg": true + }, + { + "checksum": "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1", + "check_gpg": true + }, + { + "checksum": "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1", + "check_gpg": true + }, + { + "checksum": "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7", + "check_gpg": true + }, + { + "checksum": "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295", + "check_gpg": true + }, + { + "checksum": "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc", + "check_gpg": true + }, + { + "checksum": "sha256:ee6596a5010c2b4a038861828ecca240aa03c592dacd83c3a70d44cb8ee50408", + "check_gpg": true + }, + { + "checksum": "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18", + "check_gpg": true + }, + { + "checksum": "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de", + "check_gpg": true + }, + { + "checksum": "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8", + "check_gpg": true + }, + { + "checksum": "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be", + "check_gpg": true + }, + { + "checksum": "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2", + "check_gpg": true + }, + { + "checksum": "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090", + "check_gpg": true + }, + { + "checksum": "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d", + "check_gpg": true + }, + { + "checksum": "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c", + "check_gpg": true + }, + { + "checksum": "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7", + "check_gpg": true + }, + { + "checksum": "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382", + "check_gpg": true + }, + { + "checksum": "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241", + "check_gpg": true + }, + { + "checksum": "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167", + "check_gpg": true + }, + { + "checksum": "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc", + "check_gpg": true + }, + { + "checksum": "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627", + "check_gpg": true + }, + { + "checksum": "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874", + "check_gpg": true + }, + { + "checksum": "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801", + "check_gpg": true + }, + { + "checksum": "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31", + "check_gpg": true + }, + { + "checksum": "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7", + "check_gpg": true + }, + { + "checksum": "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba", + "check_gpg": true + }, + { + "checksum": "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0", + "check_gpg": true + }, + { + "checksum": "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1", + "check_gpg": true + }, + { + "checksum": "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f", + "check_gpg": true + }, + { + "checksum": "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c", + "check_gpg": true + }, + { + "checksum": "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd", + "check_gpg": true + }, + { + "checksum": "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab", + "check_gpg": true + }, + { + "checksum": "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc", + "check_gpg": true + }, + { + "checksum": "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345", + "check_gpg": true + }, + { + "checksum": "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde", + "check_gpg": true + }, + { + "checksum": "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37", + "check_gpg": true + }, + { + "checksum": "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f", + "check_gpg": true + }, + { + "checksum": "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43", + "check_gpg": true + }, + { + "checksum": "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664", + "check_gpg": true + }, + { + "checksum": "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57", + "check_gpg": true + }, + { + "checksum": "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d", + "check_gpg": true + }, + { + "checksum": "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf", + "check_gpg": true + }, + { + "checksum": "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a", + "check_gpg": true + }, + { + "checksum": "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc", + "check_gpg": true + }, + { + "checksum": "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf", + "check_gpg": true + }, + { + "checksum": "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc", + "check_gpg": true + }, + { + "checksum": "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730", + "check_gpg": true + }, + { + "checksum": "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0", + "check_gpg": true + }, + { + "checksum": "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3", + "check_gpg": true + }, + { + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "checksum": "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a", + "check_gpg": true + }, + { + "checksum": "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7", + "check_gpg": true + }, + { + "checksum": "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e", + "check_gpg": true + }, + { + "checksum": "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045", + "check_gpg": true + }, + { + "checksum": "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32", + "check_gpg": true + }, + { + "checksum": "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f", + "check_gpg": true + }, + { + "checksum": "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4", + "check_gpg": true + }, + { + "checksum": "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238", + "check_gpg": true + }, + { + "checksum": "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388", + "check_gpg": true + }, + { + "checksum": "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42", + "check_gpg": true + }, + { + "checksum": "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc", + "check_gpg": true + }, + { + "checksum": "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833", + "check_gpg": true + }, + { + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "checksum": "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f", + "check_gpg": true + }, + { + "checksum": "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb", + "check_gpg": true + }, + { + "checksum": "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c", + "check_gpg": true + }, + { + "checksum": "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500", + "check_gpg": true + }, + { + "checksum": "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71", + "check_gpg": true + }, + { + "checksum": "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7", + "check_gpg": true + }, + { + "checksum": "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42", + "check_gpg": true + }, + { + "checksum": "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8", + "check_gpg": true + }, + { + "checksum": "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5", + "check_gpg": true + }, + { + "checksum": "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af", + "check_gpg": true + }, + { + "checksum": "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348", + "check_gpg": true + }, + { + "checksum": "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff", + "check_gpg": true + }, + { + "checksum": "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce", + "check_gpg": true + }, + { + "checksum": "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9", + "check_gpg": true + }, + { + "checksum": "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5", + "check_gpg": true + }, + { + "checksum": "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c", + "check_gpg": true + }, + { + "checksum": "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca", + "check_gpg": true + }, + { + "checksum": "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da", + "check_gpg": true + }, + { + "checksum": "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6", + "check_gpg": true + }, + { + "checksum": "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34", + "check_gpg": true + }, + { + "checksum": "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c", + "check_gpg": true + }, + { + "checksum": "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a", + "check_gpg": true + }, + { + "checksum": "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39", + "check_gpg": true + }, + { + "checksum": "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83", + "check_gpg": true + }, + { + "checksum": "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2", + "check_gpg": true + }, + { + "checksum": "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519", + "check_gpg": true + }, + { + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "checksum": "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106", + "check_gpg": true + }, + { + "checksum": "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc", + "check_gpg": true + }, + { + "checksum": "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2", + "check_gpg": true + }, + { + "checksum": "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38", + "check_gpg": true + }, + { + "checksum": "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b", + "check_gpg": true + }, + { + "checksum": "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68", + "check_gpg": true + }, + { + "checksum": "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3", + "check_gpg": true + }, + { + "checksum": "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2", + "check_gpg": true + }, + { + "checksum": "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0", + "check_gpg": true + }, + { + "checksum": "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234", + "check_gpg": true + }, + { + "checksum": "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313", + "check_gpg": true + }, + { + "checksum": "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0", + "check_gpg": true + }, + { + "checksum": "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b", + "check_gpg": true + }, + { + "checksum": "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c", + "check_gpg": true + }, + { + "checksum": "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651", + "check_gpg": true + }, + { + "checksum": "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7", + "check_gpg": true + }, + { + "checksum": "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8", + "check_gpg": true + }, + { + "checksum": "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976", + "check_gpg": true + }, + { + "checksum": "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba", + "check_gpg": true + }, + { + "checksum": "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c", + "check_gpg": true + }, + { + "checksum": "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632", + "check_gpg": true + }, + { + "checksum": "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e", + "check_gpg": true + }, + { + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "checksum": "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9", + "check_gpg": true + }, + { + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "checksum": "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a", + "check_gpg": true + }, + { + "checksum": "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552", + "check_gpg": true + }, + { + "checksum": "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3", + "check_gpg": true + }, + { + "checksum": "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5", + "check_gpg": true + }, + { + "checksum": "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1", + "check_gpg": true + }, + { + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "checksum": "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444", + "check_gpg": true + }, + { + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "checksum": "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7", + "check_gpg": true + }, + { + "checksum": "sha256:669250ad47aad5939cf4d1b88036fd95a94845d8e0bbdb05e933f3d2fe262fea", + "check_gpg": true + }, + { + "checksum": "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d", + "check_gpg": true + }, + { + "checksum": "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc", + "check_gpg": true + }, + { + "checksum": "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e", + "check_gpg": true + }, + { + "checksum": "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2", + "check_gpg": true + }, + { + "checksum": "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac", + "check_gpg": true + }, + { + "checksum": "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03", + "check_gpg": true + }, + { + "checksum": "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576", + "check_gpg": true + }, + { + "checksum": "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb", + "check_gpg": true + }, + { + "checksum": "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165", + "check_gpg": true + }, + { + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "checksum": "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3", + "check_gpg": true + }, + { + "checksum": "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071", + "check_gpg": true + }, + { + "checksum": "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2", + "check_gpg": true + }, + { + "checksum": "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5", + "check_gpg": true + }, + { + "checksum": "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454", + "check_gpg": true + }, + { + "checksum": "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612", + "check_gpg": true + }, + { + "checksum": "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1", + "check_gpg": true + }, + { + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "checksum": "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c", + "check_gpg": true + }, + { + "checksum": "sha256:9975496f29601a1c2cdb89e63aac698fdd8283ba3a52a9d91ead9473a0e064c8", + "check_gpg": true + }, + { + "checksum": "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18", + "check_gpg": true + }, + { + "checksum": "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df", + "check_gpg": true + }, + { + "checksum": "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f", + "check_gpg": true + }, + { + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "checksum": "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7", + "check_gpg": true + }, + { + "checksum": "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f", + "check_gpg": true + }, + { + "checksum": "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa", + "check_gpg": true + }, + { + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "checksum": "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05", + "check_gpg": true + }, + { + "checksum": "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431", + "check_gpg": true + }, + { + "checksum": "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c", + "check_gpg": true + }, + { + "checksum": "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9", + "check_gpg": true + } + ] + } + } + ] + }, + "runner": "org.osbuild.fedora31" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:6d8cbba688cea65fa80983cd7f140633e94cd58daa819342d1ae571a4ff174c6", + "check_gpg": true + }, + { + "checksum": "sha256:2c5b5ce5f6e6d1d79f35eab253a12e19aeb863f4fe8ded94013f76a9834689fb", + "check_gpg": true + }, + { + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "checksum": "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d", + "check_gpg": true + }, + { + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "checksum": "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081", + "check_gpg": true + }, + { + "checksum": "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355", + "check_gpg": true + }, + { + "checksum": "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1", + "check_gpg": true + }, + { + "checksum": "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5", + "check_gpg": true + }, + { + "checksum": "sha256:cc02df4125eaebf642edd9bf00031ec09871c285816c03112909ef1005410eaa", + "check_gpg": true + }, + { + "checksum": "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09", + "check_gpg": true + }, + { + "checksum": "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02", + "check_gpg": true + }, + { + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "checksum": "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3", + "check_gpg": true + }, + { + "checksum": "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1", + "check_gpg": true + }, + { + "checksum": "sha256:d334fe6e150349148b9cb77e32523029311ce8cb10d222d11c951b66637bbd3a", + "check_gpg": true + }, + { + "checksum": "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7", + "check_gpg": true + }, + { + "checksum": "sha256:239a9576864532edd325e72b62a10ef147a2bcc0a925079b19fb9cb74bab0dd7", + "check_gpg": true + }, + { + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "checksum": "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a", + "check_gpg": true + }, + { + "checksum": "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3", + "check_gpg": true + }, + { + "checksum": "sha256:3629a3675c7dadd89f3b3d855e7c57d8f93d30d59fa00fdeabfc5e5e39ca4937", + "check_gpg": true + }, + { + "checksum": "sha256:07a3523159719382e2bb9b83961bfe00836cc97f75a9706d02ad73dddb161856", + "check_gpg": true + }, + { + "checksum": "sha256:9cc3e6534ae34343e7e4d056d46b9551da7d0a82c7bad378c3626d4b70d1bf62", + "check_gpg": true + }, + { + "checksum": "sha256:101fa551ae1ae1885c1627fec47745eb0071ae675a762002e02c0563de89ecbd", + "check_gpg": true + }, + { + "checksum": "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736", + "check_gpg": true + }, + { + "checksum": "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc", + "check_gpg": true + }, + { + "checksum": "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc", + "check_gpg": true + }, + { + "checksum": "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38", + "check_gpg": true + }, + { + "checksum": "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4", + "check_gpg": true + }, + { + "checksum": "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c", + "check_gpg": true + }, + { + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "checksum": "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8", + "check_gpg": true + }, + { + "checksum": "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4", + "check_gpg": true + }, + { + "checksum": "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49", + "check_gpg": true + }, + { + "checksum": "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1", + "check_gpg": true + }, + { + "checksum": "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee", + "check_gpg": true + }, + { + "checksum": "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8", + "check_gpg": true + }, + { + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "checksum": "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71", + "check_gpg": true + }, + { + "checksum": "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27", + "check_gpg": true + }, + { + "checksum": "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc", + "check_gpg": true + }, + { + "checksum": "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a", + "check_gpg": true + }, + { + "checksum": "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7", + "check_gpg": true + }, + { + "checksum": "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f", + "check_gpg": true + }, + { + "checksum": "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732", + "check_gpg": true + }, + { + "checksum": "sha256:33334afdde6c813b18c18897dca19fab5a2ce090eba0b5ea0a38f43f1081c190", + "check_gpg": true + }, + { + "checksum": "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d", + "check_gpg": true + }, + { + "checksum": "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7", + "check_gpg": true + }, + { + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "checksum": "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063", + "check_gpg": true + }, + { + "checksum": "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159", + "check_gpg": true + }, + { + "checksum": "sha256:34a9986b8b61812ceaf32ce3b189bd0b2cb4adaaf47d76ec1f50ce07c45b5675", + "check_gpg": true + }, + { + "checksum": "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7", + "check_gpg": true + }, + { + "checksum": "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89", + "check_gpg": true + }, + { + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "checksum": "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228", + "check_gpg": true + }, + { + "checksum": "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407", + "check_gpg": true + }, + { + "checksum": "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f", + "check_gpg": true + }, + { + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "checksum": "sha256:06512e0f2546baf5c47a058d872fc62c39156bc86b5619eb841b435e2cc61e32", + "check_gpg": true + }, + { + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "checksum": "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c", + "check_gpg": true + }, + { + "checksum": "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c", + "check_gpg": true + }, + { + "checksum": "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff", + "check_gpg": true + }, + { + "checksum": "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067", + "check_gpg": true + }, + { + "checksum": "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a", + "check_gpg": true + }, + { + "checksum": "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2", + "check_gpg": true + }, + { + "checksum": "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54", + "check_gpg": true + }, + { + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "checksum": "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee", + "check_gpg": true + }, + { + "checksum": "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891", + "check_gpg": true + }, + { + "checksum": "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d", + "check_gpg": true + }, + { + "checksum": "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203", + "check_gpg": true + }, + { + "checksum": "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd", + "check_gpg": true + }, + { + "checksum": "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc", + "check_gpg": true + }, + { + "checksum": "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84", + "check_gpg": true + }, + { + "checksum": "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb", + "check_gpg": true + }, + { + "checksum": "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c", + "check_gpg": true + }, + { + "checksum": "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565", + "check_gpg": true + }, + { + "checksum": "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b", + "check_gpg": true + }, + { + "checksum": "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926", + "check_gpg": true + }, + { + "checksum": "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3", + "check_gpg": true + }, + { + "checksum": "sha256:36f24cbb8727406af1448c055971cca1956eaf0f1183320e1ed2df1c61c69451", + "check_gpg": true + }, + { + "checksum": "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a", + "check_gpg": true + }, + { + "checksum": "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79", + "check_gpg": true + }, + { + "checksum": "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13", + "check_gpg": true + }, + { + "checksum": "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb", + "check_gpg": true + }, + { + "checksum": "sha256:6f2dae9b49bed8e1036a21aadd92ea2eb371979f6714ec2bce5742de051eeb14", + "check_gpg": true + }, + { + "checksum": "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a", + "check_gpg": true + }, + { + "checksum": "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e", + "check_gpg": true + }, + { + "checksum": "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5", + "check_gpg": true + }, + { + "checksum": "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5", + "check_gpg": true + }, + { + "checksum": "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458", + "check_gpg": true + }, + { + "checksum": "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d", + "check_gpg": true + }, + { + "checksum": "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16", + "check_gpg": true + }, + { + "checksum": "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada", + "check_gpg": true + }, + { + "checksum": "sha256:21ccdbe703caa6a08056d2bc75c1e184f811472a6e320e5af64b8757fcd07166", + "check_gpg": true + }, + { + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "checksum": "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc", + "check_gpg": true + }, + { + "checksum": "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1", + "check_gpg": true + }, + { + "checksum": "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8", + "check_gpg": true + }, + { + "checksum": "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214", + "check_gpg": true + }, + { + "checksum": "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031", + "check_gpg": true + }, + { + "checksum": "sha256:eac54fb3ab5e4c457aa6522398560713ce91394662ca11b554684bda2e0ab2af", + "check_gpg": true + }, + { + "checksum": "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8", + "check_gpg": true + }, + { + "checksum": "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d", + "check_gpg": true + }, + { + "checksum": "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150", + "check_gpg": true + }, + { + "checksum": "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01", + "check_gpg": true + }, + { + "checksum": "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994", + "check_gpg": true + }, + { + "checksum": "sha256:456252f83ba91a1150f180a81998c3acdd71be57a324cf84d6d842a063c56a12", + "check_gpg": true + }, + { + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "checksum": "sha256:a188b5c697b734d4ed7d8f954b6875b9d401dc2a3c10bfd20d03db131ca73ab5", + "check_gpg": true + }, + { + "checksum": "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6", + "check_gpg": true + }, + { + "checksum": "sha256:2af3bbdab1f387ae7af2534846e33ab6d2ca7777399c64191f95699d576cd4ba", + "check_gpg": true + }, + { + "checksum": "sha256:c8e0a36410ebbd9db0a10e1fbecbae8f6288b9be86752d2e91725d5dd98ec65d", + "check_gpg": true + }, + { + "checksum": "sha256:cef060334e8c21b5d2e3a87bdd0ad5ac1be389d7794735506b9d3c65c2923cd3", + "check_gpg": true + }, + { + "checksum": "sha256:d219a6c4a2410d6ef9bad2b337557779b969e278b657ffede83c021c20f665ca", + "check_gpg": true + }, + { + "checksum": "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4", + "check_gpg": true + }, + { + "checksum": "sha256:72b5df6982fecdbee30d40bbb6042c72ed0f31b787f289b4a27f0dffc6f609fe", + "check_gpg": true + }, + { + "checksum": "sha256:dc924dd33a9bd0b9483ebdbcf7caecbe1f48b8a135f1521291c8433fa76f4603", + "check_gpg": true + }, + { + "checksum": "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00", + "check_gpg": true + }, + { + "checksum": "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5", + "check_gpg": true + }, + { + "checksum": "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422", + "check_gpg": true + }, + { + "checksum": "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad", + "check_gpg": true + }, + { + "checksum": "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c", + "check_gpg": true + }, + { + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "checksum": "sha256:f0509e333636e5c34726c8a2b8260bf88fe0a35b95cae6dda62191fee1be4c6a", + "check_gpg": true + }, + { + "checksum": "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1", + "check_gpg": true + }, + { + "checksum": "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b", + "check_gpg": true + }, + { + "checksum": "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1", + "check_gpg": true + }, + { + "checksum": "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00", + "check_gpg": true + }, + { + "checksum": "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466", + "check_gpg": true + }, + { + "checksum": "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552", + "check_gpg": true + }, + { + "checksum": "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b", + "check_gpg": true + }, + { + "checksum": "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b", + "check_gpg": true + }, + { + "checksum": "sha256:22db6d1e1f34a43c3d045b6750ff3a32184d47c2aedf3dabc93640057de1f4fa", + "check_gpg": true + }, + { + "checksum": "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679", + "check_gpg": true + }, + { + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "checksum": "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834", + "check_gpg": true + }, + { + "checksum": "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c", + "check_gpg": true + }, + { + "checksum": "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59", + "check_gpg": true + }, + { + "checksum": "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a", + "check_gpg": true + }, + { + "checksum": "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077", + "check_gpg": true + }, + { + "checksum": "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c", + "check_gpg": true + }, + { + "checksum": "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc", + "check_gpg": true + }, + { + "checksum": "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141", + "check_gpg": true + }, + { + "checksum": "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1", + "check_gpg": true + }, + { + "checksum": "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1", + "check_gpg": true + }, + { + "checksum": "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7", + "check_gpg": true + }, + { + "checksum": "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295", + "check_gpg": true + }, + { + "checksum": "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc", + "check_gpg": true + }, + { + "checksum": "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18", + "check_gpg": true + }, + { + "checksum": "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de", + "check_gpg": true + }, + { + "checksum": "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8", + "check_gpg": true + }, + { + "checksum": "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be", + "check_gpg": true + }, + { + "checksum": "sha256:469d12368377399b8eaa7ec8cf1b6378ab18476b4a2b61b79091510a8945c6aa", + "check_gpg": true + }, + { + "checksum": "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2", + "check_gpg": true + }, + { + "checksum": "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090", + "check_gpg": true + }, + { + "checksum": "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d", + "check_gpg": true + }, + { + "checksum": "sha256:0f26eca4ac936554818769fe32aca5e878af2616e83f836ec463e59eb4f9f1f9", + "check_gpg": true + }, + { + "checksum": "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c", + "check_gpg": true + }, + { + "checksum": "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7", + "check_gpg": true + }, + { + "checksum": "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382", + "check_gpg": true + }, + { + "checksum": "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241", + "check_gpg": true + }, + { + "checksum": "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167", + "check_gpg": true + }, + { + "checksum": "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc", + "check_gpg": true + }, + { + "checksum": "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627", + "check_gpg": true + }, + { + "checksum": "sha256:0b54f374bcbe094dbc0d52d9661fe99ebff384026ce0ea39f2d6069e27bf8bdc", + "check_gpg": true + }, + { + "checksum": "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874", + "check_gpg": true + }, + { + "checksum": "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801", + "check_gpg": true + }, + { + "checksum": "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31", + "check_gpg": true + }, + { + "checksum": "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7", + "check_gpg": true + }, + { + "checksum": "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba", + "check_gpg": true + }, + { + "checksum": "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0", + "check_gpg": true + }, + { + "checksum": "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1", + "check_gpg": true + }, + { + "checksum": "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f", + "check_gpg": true + }, + { + "checksum": "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c", + "check_gpg": true + }, + { + "checksum": "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd", + "check_gpg": true + }, + { + "checksum": "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab", + "check_gpg": true + }, + { + "checksum": "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc", + "check_gpg": true + }, + { + "checksum": "sha256:6f7fbd57db9334a3cc7983d2e920afe92abe3f7e168702612d70e9ff405d79e6", + "check_gpg": true + }, + { + "checksum": "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345", + "check_gpg": true + }, + { + "checksum": "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde", + "check_gpg": true + }, + { + "checksum": "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37", + "check_gpg": true + }, + { + "checksum": "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f", + "check_gpg": true + }, + { + "checksum": "sha256:8f7b737ccb294fd5ba1d19075ea2a50a54e0265d8efa28aae0ade59d3e3a63be", + "check_gpg": true + }, + { + "checksum": "sha256:430f2f71be063eb9d04fe38659f62e29f47c9c878f9985d0569cb49e9c89ebc0", + "check_gpg": true + }, + { + "checksum": "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43", + "check_gpg": true + }, + { + "checksum": "sha256:c976ce75eda3dbe734117f6f558eafb2061bbef66086a04cb907a7ddbaea8bc2", + "check_gpg": true + }, + { + "checksum": "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664", + "check_gpg": true + }, + { + "checksum": "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57", + "check_gpg": true + }, + { + "checksum": "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d", + "check_gpg": true + }, + { + "checksum": "sha256:45bf4bef479712936db1d6859b043d13e6cad41c851b6e621fc315b39ecfa14b", + "check_gpg": true + }, + { + "checksum": "sha256:f61555e6e74917be3f131bd5af9d9e30ed709111701e950b7ebd4392baf33f12", + "check_gpg": true + }, + { + "checksum": "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf", + "check_gpg": true + }, + { + "checksum": "sha256:8bd2655674b40e89f5f63af7f8ffafd0e9064a3378cdca050262a7272678e8e5", + "check_gpg": true + }, + { + "checksum": "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a", + "check_gpg": true + }, + { + "checksum": "sha256:6f729da330aaaea336458a8b6f3f1d2cc761693ba20bdda57fb9c49fb6f2120d", + "check_gpg": true + }, + { + "checksum": "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc", + "check_gpg": true + }, + { + "checksum": "sha256:cfeb5d0cb9c116e39292e3158c68ee62880cff4a5e3d098d20bf9567e5a576e1", + "check_gpg": true + }, + { + "checksum": "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf", + "check_gpg": true + }, + { + "checksum": "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc", + "check_gpg": true + }, + { + "checksum": "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730", + "check_gpg": true + }, + { + "checksum": "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0", + "check_gpg": true + }, + { + "checksum": "sha256:da923b379524f2d8d26905f26a9dc763cec36c40306c4c53db57100574ea89b8", + "check_gpg": true + }, + { + "checksum": "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3", + "check_gpg": true + }, + { + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "checksum": "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a", + "check_gpg": true + }, + { + "checksum": "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7", + "check_gpg": true + }, + { + "checksum": "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e", + "check_gpg": true + }, + { + "checksum": "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045", + "check_gpg": true + }, + { + "checksum": "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32", + "check_gpg": true + }, + { + "checksum": "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f", + "check_gpg": true + }, + { + "checksum": "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4", + "check_gpg": true + }, + { + "checksum": "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238", + "check_gpg": true + }, + { + "checksum": "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388", + "check_gpg": true + }, + { + "checksum": "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42", + "check_gpg": true + }, + { + "checksum": "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc", + "check_gpg": true + }, + { + "checksum": "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833", + "check_gpg": true + }, + { + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "checksum": "sha256:422625da0fbb99cc4da8eebebff892c6e73a87c81a33190f7a17e344f6bb709e", + "check_gpg": true + }, + { + "checksum": "sha256:307275b46896d56d23f5da5ab77a299941e77165ff44e846d6620eee1158131c", + "check_gpg": true + }, + { + "checksum": "sha256:a1bd1b5a2c47e57957a77d32f4fd705de1df30557837cfbc83b8f284e4ee0456", + "check_gpg": true + }, + { + "checksum": "sha256:6c1f9dc11de4d3af4d4c418b4556ee9659011d587e9da44bb039cb30ac326841", + "check_gpg": true + }, + { + "checksum": "sha256:e1bda9438577473413f3c7455ce84b6c8486adee3d4473fafcd28309ad8c2913", + "check_gpg": true + }, + { + "checksum": "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f", + "check_gpg": true + }, + { + "checksum": "sha256:9247561bad35a8a2f8269b2bbbd28d1bf5e6fcde1fe78e1fc3c0e712513e9703", + "check_gpg": true + }, + { + "checksum": "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb", + "check_gpg": true + }, + { + "checksum": "sha256:fccade859cbb884fd61c07433e6c316f794885cbb2186debcff3f6894d16d52c", + "check_gpg": true + }, + { + "checksum": "sha256:5593277fa685adba864393da8faf76950d6d8fb1483af036cdc08d8437c387bb", + "check_gpg": true + }, + { + "checksum": "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c", + "check_gpg": true + }, + { + "checksum": "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500", + "check_gpg": true + }, + { + "checksum": "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71", + "check_gpg": true + }, + { + "checksum": "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7", + "check_gpg": true + }, + { + "checksum": "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42", + "check_gpg": true + }, + { + "checksum": "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8", + "check_gpg": true + }, + { + "checksum": "sha256:95b45de2c57f35df43bff0c2ebe32c64183968b3a41c5673cfeeff5ece506b94", + "check_gpg": true + }, + { + "checksum": "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5", + "check_gpg": true + }, + { + "checksum": "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af", + "check_gpg": true + }, + { + "checksum": "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348", + "check_gpg": true + }, + { + "checksum": "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff", + "check_gpg": true + }, + { + "checksum": "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce", + "check_gpg": true + }, + { + "checksum": "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9", + "check_gpg": true + }, + { + "checksum": "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5", + "check_gpg": true + }, + { + "checksum": "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c", + "check_gpg": true + }, + { + "checksum": "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca", + "check_gpg": true + }, + { + "checksum": "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da", + "check_gpg": true + }, + { + "checksum": "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6", + "check_gpg": true + }, + { + "checksum": "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34", + "check_gpg": true + }, + { + "checksum": "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c", + "check_gpg": true + }, + { + "checksum": "sha256:e405d2edc9b9fc2c13242f0225049b071aa4159d09d8e2d501e8c4fe88a9710b", + "check_gpg": true + }, + { + "checksum": "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47", + "check_gpg": true + }, + { + "checksum": "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70", + "check_gpg": true + }, + { + "checksum": "sha256:a41579023e1db3dec06679ebc7788ece92686ea2a23c78dd749c98ddbc82d419", + "check_gpg": true + }, + { + "checksum": "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a", + "check_gpg": true + }, + { + "checksum": "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39", + "check_gpg": true + }, + { + "checksum": "sha256:764699ea124f85a7afcf65a2f138e3821770f8aa1ef134e1813e2b04477f0b74", + "check_gpg": true + }, + { + "checksum": "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83", + "check_gpg": true + }, + { + "checksum": "sha256:bfe43a646ce98fc8cdcb52738f91e0ee5b8fd43760336d267bc20500aacd15bc", + "check_gpg": true + }, + { + "checksum": "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2", + "check_gpg": true + }, + { + "checksum": "sha256:6091b138c5dee897cb1c99b0d556f3e03ce6bb2c6ad3c10fed54136092a9d694", + "check_gpg": true + }, + { + "checksum": "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519", + "check_gpg": true + }, + { + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "checksum": "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106", + "check_gpg": true + }, + { + "checksum": "sha256:cf6506ad88ecaab89efde02eee218365a36981114638c03989ba2768457ae335", + "check_gpg": true + }, + { + "checksum": "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc", + "check_gpg": true + }, + { + "checksum": "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2", + "check_gpg": true + }, + { + "checksum": "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38", + "check_gpg": true + }, + { + "checksum": "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b", + "check_gpg": true + }, + { + "checksum": "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68", + "check_gpg": true + }, + { + "checksum": "sha256:c3aa4d794cef51ba9fcbf3750baed55aabfa36062a48f61149ccf03364a0d256", + "check_gpg": true + }, + { + "checksum": "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3", + "check_gpg": true + }, + { + "checksum": "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2", + "check_gpg": true + }, + { + "checksum": "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0", + "check_gpg": true + }, + { + "checksum": "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234", + "check_gpg": true + }, + { + "checksum": "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313", + "check_gpg": true + }, + { + "checksum": "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0", + "check_gpg": true + }, + { + "checksum": "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b", + "check_gpg": true + }, + { + "checksum": "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c", + "check_gpg": true + }, + { + "checksum": "sha256:55c47c63deb00a9126c068299c01dfbdd39d58c6962138b862b92f5c7af8c898", + "check_gpg": true + }, + { + "checksum": "sha256:c459092a47bd2f904d9fe830735b512ef97b52785ee12abb2ba5c52465560f18", + "check_gpg": true + }, + { + "checksum": "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651", + "check_gpg": true + }, + { + "checksum": "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7", + "check_gpg": true + }, + { + "checksum": "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8", + "check_gpg": true + }, + { + "checksum": "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976", + "check_gpg": true + }, + { + "checksum": "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba", + "check_gpg": true + }, + { + "checksum": "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c", + "check_gpg": true + }, + { + "checksum": "sha256:adf011910ee572cb557b7340002aed9376004b786585e78e6546192a323c6d78", + "check_gpg": true + }, + { + "checksum": "sha256:118548479396b007a80bc98e8cef770ea242ef6b20cd2922d595acd4c100946d", + "check_gpg": true + }, + { + "checksum": "sha256:3553c0d8c0639d043a50ce16c3694e17d399e126b25106de0a75fc8dbc13b709", + "check_gpg": true + }, + { + "checksum": "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632", + "check_gpg": true + }, + { + "checksum": "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e", + "check_gpg": true + }, + { + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "checksum": "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9", + "check_gpg": true + }, + { + "checksum": "sha256:73a7249de97f0ad66bc1a867ac5b5d08b741ab152d4dd7ce45cc231d64126b58", + "check_gpg": true + }, + { + "checksum": "sha256:4cca3f986ddbd38cfbfb6d1c8d336a1aaed78f7da1f38356ce1e034ba35ec492", + "check_gpg": true + }, + { + "checksum": "sha256:9fea00b14943cac0e3b11ff3a319765168cf78b3cc58fdee7d5fe48246a0aa4d", + "check_gpg": true + }, + { + "checksum": "sha256:e17ef6f7d4f1869ff5813d6f8f2983cd6f5cd23d4a666b7ae19154636e911644", + "check_gpg": true + }, + { + "checksum": "sha256:9b49fdc41ba8f1284c63db29b8bda002a7256a54fdba14c9d3fccd852b8547b1", + "check_gpg": true + }, + { + "checksum": "sha256:7fc8df6b10728f46c3e752c35f6777f17025bef30f61c67f76de2538888a5546", + "check_gpg": true + }, + { + "checksum": "sha256:ee6dbb4914a35ee8a816ecde34d29221e3f4622324f6287c328e8ac22ae572ad", + "check_gpg": true + }, + { + "checksum": "sha256:cdc526097cd2fecb75e44ad11a69b10eb7804f310298c064c3b931515d4f3d5c", + "check_gpg": true + }, + { + "checksum": "sha256:2e588b5133dc8cb26ff0226f66eb1be440c6b784ec6fa67a5f0516d8ccaf46f5", + "check_gpg": true + }, + { + "checksum": "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653", + "check_gpg": true + }, + { + "checksum": "sha256:35c348bcd91fa114ad459b888131e5e5509259cffce33f22c44f92e57e9e5919", + "check_gpg": true + }, + { + "checksum": "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f", + "check_gpg": true + }, + { + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "checksum": "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02", + "check_gpg": true + }, + { + "checksum": "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a", + "check_gpg": true + }, + { + "checksum": "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552", + "check_gpg": true + }, + { + "checksum": "sha256:8221111dc9a9aa5c68805f153c3fbe5314c8a0f335af29685733b958253dd278", + "check_gpg": true + }, + { + "checksum": "sha256:1135e96b6f9ed29e4ed4c0f060876891a244442a503f0b18ab238589da20d464", + "check_gpg": true + }, + { + "checksum": "sha256:e98119ac7a707287668e7a9a74ef2809ee5f555af04f52775367e428e08dbb33", + "check_gpg": true + }, + { + "checksum": "sha256:2d9a2e736dd5231df3c5c748ce0ba5a75a409dacfe73f14676781f32d565a7df", + "check_gpg": true + }, + { + "checksum": "sha256:047f9e29fcfa56be98ca3f42249f3ccb2a93df99f2438e3983e2064025f0d79d", + "check_gpg": true + }, + { + "checksum": "sha256:143c50c0663f963c7689c1cec43b81cf1433d5d3b67eb8233ba06506c1b3e095", + "check_gpg": true + }, + { + "checksum": "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3", + "check_gpg": true + }, + { + "checksum": "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5", + "check_gpg": true + }, + { + "checksum": "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1", + "check_gpg": true + }, + { + "checksum": "sha256:ca6a71888b8d147342012c64533f61a41b26c788bbcd2844a2164ee007fac981", + "check_gpg": true + }, + { + "checksum": "sha256:a7071aa0068c9dff913c5f0523be3ffdd7f67b8f13e1ee2aa16e486b01aecc1c", + "check_gpg": true + }, + { + "checksum": "sha256:5d8d55e12443628c7a1915648845663e4aed1863805854de0adadd89772eda2a", + "check_gpg": true + }, + { + "checksum": "sha256:f85469c0c19ce86e8fdd0dd5a3e6e5c9b78e3436ae9ce70ba86b2b4a3794f693", + "check_gpg": true + }, + { + "checksum": "sha256:d90abd2b8eca279a2120bf7836503745d36432630258925292ee7dacfabe4c92", + "check_gpg": true + }, + { + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "checksum": "sha256:1b65944efe48ba0cca34011891480a1db29a7e95dad058376bfca34d68fb0791", + "check_gpg": true + }, + { + "checksum": "sha256:5a7e957102a23c9924398fe45f5cdec66edcd10adcad7130d6ebf02c2706ad49", + "check_gpg": true + }, + { + "checksum": "sha256:682af90a049fa78429d5ebd194700609f762e59ceb6c4ca28b17e7f4fd1683aa", + "check_gpg": true + }, + { + "checksum": "sha256:b703a38c0dea8bcd2be7bfb83d0f71ee2ee15a140a25998d6837261331140919", + "check_gpg": true + }, + { + "checksum": "sha256:b49419bed59686efde6fc04953c2ab64a46c2bae46227a872bb3a823538c636d", + "check_gpg": true + }, + { + "checksum": "sha256:6ed7f318c5e93b59254d7b7652131f33db713eeb61f52413f21e533069ed24bf", + "check_gpg": true + }, + { + "checksum": "sha256:fa979526906cc9182ebdb6e50c9d09deba8518f69750495fec4267a425c8f783", + "check_gpg": true + }, + { + "checksum": "sha256:32cc578c8da626a8c1a5316a59d482967a32547be6c077f73fb90e11fb0f1e6a", + "check_gpg": true + }, + { + "checksum": "sha256:d54f02fc39b3e87253808f665918d26ffe901f1228e25121c908661b47ba266b", + "check_gpg": true + }, + { + "checksum": "sha256:6c6f1152899318bdc0500cfb0b0cdbbc19ba0e017b5888ece1358250caa2629f", + "check_gpg": true + }, + { + "checksum": "sha256:a6bab7030d3296875cb0cad2c30fb18042dab8ae070c9c6f97457bb0a5cc6316", + "check_gpg": true + }, + { + "checksum": "sha256:1e049e86c5dd5c4d6737d47dd194d553ffbd65c81a4077cf6e1029a0fde80fb5", + "check_gpg": true + }, + { + "checksum": "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444", + "check_gpg": true + }, + { + "checksum": "sha256:19a9152e410c8fdd62220e79dcf4dc3d143ca04c75a09c332066ad8cc94b972e", + "check_gpg": true + }, + { + "checksum": "sha256:aacf84989a0fe55366f6d37ddd1753b8c06e5640e9334805bf468777824a3ac0", + "check_gpg": true + }, + { + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "checksum": "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142", + "check_gpg": true + }, + { + "checksum": "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7", + "check_gpg": true + }, + { + "checksum": "sha256:78b600621e00f4a0acc8f58de056ae9393ce4e1cded56837b4e557c1bc84b06b", + "check_gpg": true + }, + { + "checksum": "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d", + "check_gpg": true + }, + { + "checksum": "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc", + "check_gpg": true + }, + { + "checksum": "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e", + "check_gpg": true + }, + { + "checksum": "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663", + "check_gpg": true + }, + { + "checksum": "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2", + "check_gpg": true + }, + { + "checksum": "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac", + "check_gpg": true + }, + { + "checksum": "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03", + "check_gpg": true + }, + { + "checksum": "sha256:f50957375c79be57f391625b97d6ea74505e05f2edc6b9bc6768d5e3ad6ef8f8", + "check_gpg": true + }, + { + "checksum": "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576", + "check_gpg": true + }, + { + "checksum": "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb", + "check_gpg": true + }, + { + "checksum": "sha256:167eef09957e5abad6b99d22d9204021ae777b60320cd37d8f934cd9ac2da92a", + "check_gpg": true + }, + { + "checksum": "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165", + "check_gpg": true + }, + { + "checksum": "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108", + "check_gpg": true + }, + { + "checksum": "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a", + "check_gpg": true + }, + { + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "checksum": "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3", + "check_gpg": true + }, + { + "checksum": "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071", + "check_gpg": true + }, + { + "checksum": "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2", + "check_gpg": true + }, + { + "checksum": "sha256:687d00eb0b77446dbd78aaa0f4f99cc080c677930ad783120483614255264a3d", + "check_gpg": true + }, + { + "checksum": "sha256:6b694ee239a2e3f38c401e975de392e3731ad8b18be5a3249ea02f19e87cb5cb", + "check_gpg": true + }, + { + "checksum": "sha256:93161df6d62fe654c7cdba9ae36343d2549b437b27eac816a80f8d7c32a47162", + "check_gpg": true + }, + { + "checksum": "sha256:4f9bbd08f6019b3482342d616d6b04e6481924ea34fbfe8d30ef63402a92e9b1", + "check_gpg": true + }, + { + "checksum": "sha256:704ebfc50ace9417ed28f4530d778359a4c2f95d524c2e99346472245e30b548", + "check_gpg": true + }, + { + "checksum": "sha256:6771e14a2ea70c74e800f6122df6c056a7e2c3c16d74b9b5f96ddfd482e38326", + "check_gpg": true + }, + { + "checksum": "sha256:486f2fb09621afabdebfd0cd897c9a77d93bb21ed41dc0a18b600d48654fed64", + "check_gpg": true + }, + { + "checksum": "sha256:1ffe518fc86251b33a58280984e9d06c025190a89a2d60c50d818eaea7bca583", + "check_gpg": true + }, + { + "checksum": "sha256:fced380b3f7270b186dd2b67aef7c9f5614617e71fcea61fd903864a20a4924e", + "check_gpg": true + }, + { + "checksum": "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5", + "check_gpg": true + }, + { + "checksum": "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454", + "check_gpg": true + }, + { + "checksum": "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612", + "check_gpg": true + }, + { + "checksum": "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1", + "check_gpg": true + }, + { + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "checksum": "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c", + "check_gpg": true + }, + { + "checksum": "sha256:9975496f29601a1c2cdb89e63aac698fdd8283ba3a52a9d91ead9473a0e064c8", + "check_gpg": true + }, + { + "checksum": "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18", + "check_gpg": true + }, + { + "checksum": "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df", + "check_gpg": true + }, + { + "checksum": "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f", + "check_gpg": true + }, + { + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "checksum": "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7", + "check_gpg": true + }, + { + "checksum": "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f", + "check_gpg": true + }, + { + "checksum": "sha256:d2c819a7e607a9e22f55047ed03d064e4b0f125ad4fb20532c543a6d8af8bfa5", + "check_gpg": true + }, + { + "checksum": "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa", + "check_gpg": true + }, + { + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "checksum": "sha256:b3c4cfdf820225133f4e9e600de3300ef0c7bac34139433505dd4482da52be22", + "check_gpg": true + }, + { + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "checksum": "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05", + "check_gpg": true + }, + { + "checksum": "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431", + "check_gpg": true + }, + { + "checksum": "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488", + "check_gpg": true + }, + { + "checksum": "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c", + "check_gpg": true + }, + { + "checksum": "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.keymap", + "options": { + "keymap": "dvorak" + } + }, + { + "name": "org.osbuild.timezone", + "options": { + "zone": "Europe/London" + } + }, + { + "name": "org.osbuild.chrony", + "options": { + "timeservers": [ + "time.example.com" + ] + } + }, + { + "name": "org.osbuild.groups", + "options": { + "groups": { + "group1": { + "name": "group1", + "gid": 1030 + }, + "group2": { + "name": "group2", + "gid": 1050 + } + } + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "user1": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + }, + "user2": { + "uid": 1020, + "gid": 1050, + "groups": [ + "group1" + ], + "description": "description 2", + "home": "/home/home2", + "shell": "/bin/sh", + "password": "$6$BhyxFBgrEFh0VrPJ$MllG8auiU26x2pmzL4.1maHzPHrA.4gTdCvlATFp8HJU9UPee4zCS9BVl2HOzKaUYD/zEm8r/OF05F2icWB0K/", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "vfs_type": "ext4", + "path": "/", + "options": "defaults", + "freq": 1, + "passno": 1 + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "kernel_opts": "ro biosdevname=0 net.ifnames=0 debug", + "legacy": "i386-pc" + } + }, + { + "name": "org.osbuild.systemd", + "options": { + "enabled_services": [ + "cloud-init.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "sshd.socket" + ], + "disabled_services": [ + "bluetooth.service" + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "qcow2", + "filename": "disk.qcow2", + "size": 2147483648, + "ptuuid": "0x14fc63d2", + "pttype": "mbr", + "partitions": [ + { + "start": 2048, + "bootable": true, + "filesystem": { + "type": "ext4", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.111", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm", + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/acl-2.2.53-4.fc31.x86_64.rpm", + "checksum": "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d", + "check_gpg": true + }, + { + "name": "adobe-source-code-pro-fonts", + "epoch": 0, + "version": "2.030.1.050", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm", + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "name": "adwaita-cursor-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "name": "adwaita-icon-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/alternatives-1.11-5.fc31.x86_64.rpm", + "checksum": "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081", + "check_gpg": true + }, + { + "name": "at-spi2-atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.x86_64.rpm", + "checksum": "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355", + "check_gpg": true + }, + { + "name": "at-spi2-core", + "epoch": 0, + "version": "2.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1", + "check_gpg": true + }, + { + "name": "atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/atk-2.34.1-1.fc31.x86_64.rpm", + "checksum": "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm", + "checksum": "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09", + "check_gpg": true + }, + { + "name": "avahi-libs", + "epoch": 0, + "version": "0.7", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/avahi-libs-0.7-20.fc31.x86_64.rpm", + "checksum": "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "8.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm", + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bash-5.0.7-3.fc31.x86_64.rpm", + "checksum": "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3", + "check_gpg": true + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.7", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/brotli-1.0.7-6.fc31.x86_64.rpm", + "checksum": "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.x86_64.rpm", + "checksum": "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm", + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "name": "cairo", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-1.16.0-6.fc31.x86_64.rpm", + "checksum": "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a", + "check_gpg": true + }, + { + "name": "cairo-gobject", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.x86_64.rpm", + "checksum": "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3", + "check_gpg": true + }, + { + "name": "colord-libs", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/colord-libs-1.4.4-2.fc31.x86_64.rpm", + "checksum": "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-8.31-4.fc31.x86_64.rpm", + "checksum": "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-common-8.31-4.fc31.x86_64.rpm", + "checksum": "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "12.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cpio-2.12-12.fc31.x86_64.rpm", + "checksum": "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-2.9.6-21.fc31.x86_64.rpm", + "checksum": "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.x86_64.rpm", + "checksum": "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20190816", + "release": "4.gitbb9bf99.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm", + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8", + "check_gpg": true + }, + { + "name": "cups-libs", + "epoch": 1, + "version": "2.2.12", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cups-libs-2.2.12-2.fc31.x86_64.rpm", + "checksum": "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/curl-7.66.0-1.fc31.x86_64.rpm", + "checksum": "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.x86_64.rpm", + "checksum": "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-1.12.16-3.fc31.x86_64.rpm", + "checksum": "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "21", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-broker-21-6.fc31.x86_64.rpm", + "checksum": "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm", + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-3.fc31.x86_64.rpm", + "checksum": "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71", + "check_gpg": true + }, + { + "name": "dconf", + "epoch": 0, + "version": "0.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dconf-0.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-2.fc31.x86_64.rpm", + "checksum": "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-1.02.163-2.fc31.x86_64.rpm", + "checksum": "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.x86_64.rpm", + "checksum": "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/diffutils-3.7-3.fc31.x86_64.rpm", + "checksum": "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dosfstools-4.1-9.fc31.x86_64.rpm", + "checksum": "sha256:b110ee65fa2dee77585ec77cab592cba2434d579f8afbed4d2a908ad1addccfc", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "27.git20181204.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-049-27.git20181204.fc31.1.x86_64.rpm", + "checksum": "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm", + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libelf-0.177-1.fc31.x86_64.rpm", + "checksum": "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libs-0.177-1.fc31.x86_64.rpm", + "checksum": "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/expat-2.2.8-1.fc31.x86_64.rpm", + "checksum": "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm", + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-31-1.noarch.rpm", + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-common-31-1.noarch.rpm", + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-repos-31-1.noarch.rpm", + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-5.37-3.fc31.x86_64.rpm", + "checksum": "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-libs-5.37-3.fc31.x86_64.rpm", + "checksum": "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.12", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/filesystem-3.12-2.fc31.x86_64.rpm", + "checksum": "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "24.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/findutils-4.6.0-24.fc31.x86_64.rpm", + "checksum": "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-7.fc31.x86_64.rpm", + "checksum": "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.x86_64.rpm", + "checksum": "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2", + "check_gpg": true + }, + { + "name": "fontconfig", + "epoch": 0, + "version": "2.13.92", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontconfig-2.13.92-3.fc31.x86_64.rpm", + "checksum": "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54", + "check_gpg": true + }, + { + "name": "fontpackages-filesystem", + "epoch": 0, + "version": "1.44", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm", + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.10.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/freetype-2.10.0-3.fc31.x86_64.rpm", + "checksum": "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee", + "check_gpg": true + }, + { + "name": "fribidi", + "epoch": 0, + "version": "1.0.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fribidi-1.0.5-4.fc31.x86_64.rpm", + "checksum": "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-8.fc31.x86_64.rpm", + "checksum": "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gawk-5.0.1-5.fc31.x86_64.rpm", + "checksum": "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203", + "check_gpg": true + }, + { + "name": "gcr", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-3.33.4-1.fc31.x86_64.rpm", + "checksum": "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd", + "check_gpg": true + }, + { + "name": "gcr-base", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-base-3.33.4-1.fc31.x86_64.rpm", + "checksum": "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.x86_64.rpm", + "checksum": "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.x86_64.rpm", + "checksum": "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2-modules", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.x86_64.rpm", + "checksum": "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3", + "check_gpg": true + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib-networking-2.62.1-1.fc31.x86_64.rpm", + "checksum": "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib2-2.62.1-1.fc31.x86_64.rpm", + "checksum": "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13", + "check_gpg": true + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:f67d5cc67029c6c38185f94b72aaa9034a49f5c4f166066c8268b41e1b18a202", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-common-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gmp-6.1.2-10.fc31.x86_64.rpm", + "checksum": "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a", + "check_gpg": true + }, + { + "name": "gnome-keyring", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-2.2.17-2.fc31.x86_64.rpm", + "checksum": "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.x86_64.rpm", + "checksum": "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnutls-3.6.10-1.fc31.x86_64.rpm", + "checksum": "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gpgme-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d", + "check_gpg": true + }, + { + "name": "graphite2", + "epoch": 0, + "version": "1.3.13", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/graphite2-1.3.13-1.fc31.x86_64.rpm", + "checksum": "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grep-3.3-3.fc31.x86_64.rpm", + "checksum": "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-common-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8", + "check_gpg": true + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-extra-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031", + "check_gpg": true + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8", + "check_gpg": true + }, + { + "name": "gtk-update-icon-cache", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.x86_64.rpm", + "checksum": "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d", + "check_gpg": true + }, + { + "name": "gtk3", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk3-3.24.12-3.fc31.x86_64.rpm", + "checksum": "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gzip-1.10-1.fc31.x86_64.rpm", + "checksum": "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01", + "check_gpg": true + }, + { + "name": "harfbuzz", + "epoch": 0, + "version": "2.6.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/harfbuzz-2.6.1-2.fc31.x86_64.rpm", + "checksum": "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994", + "check_gpg": true + }, + { + "name": "hicolor-icon-theme", + "epoch": 0, + "version": "0.17", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm", + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.x86_64.rpm", + "checksum": "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.3", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-libs-1.8.3-5.fc31.x86_64.rpm", + "checksum": "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4", + "check_gpg": true + }, + { + "name": "jasper-libs", + "epoch": 0, + "version": "2.0.14", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jasper-libs-2.0.14-9.fc31.x86_64.rpm", + "checksum": "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00", + "check_gpg": true + }, + { + "name": "jbigkit-libs", + "epoch": 0, + "version": "2.1", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jbigkit-libs-2.1-17.fc31.x86_64.rpm", + "checksum": "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-c-0.13.1-6.fc31.x86_64.rpm", + "checksum": "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422", + "check_gpg": true + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-glib-1.4.4-3.fc31.x86_64.rpm", + "checksum": "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-2.0.4-14.fc31.x86_64.rpm", + "checksum": "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-legacy-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-misc-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-3.fc31.x86_64.rpm", + "checksum": "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-26-4.fc31.x86_64.rpm", + "checksum": "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-libs-26-4.fc31.x86_64.rpm", + "checksum": "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kpartx-0.8.0-3.fc31.x86_64.rpm", + "checksum": "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.17", + "release": "45.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/krb5-libs-1.17-45.fc31.x86_64.rpm", + "checksum": "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466", + "check_gpg": true + }, + { + "name": "lcms2", + "epoch": 0, + "version": "2.9", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lcms2-2.9-6.fc31.x86_64.rpm", + "checksum": "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b", + "check_gpg": true + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-1.6.8-3.fc31.x86_64.rpm", + "checksum": "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679", + "check_gpg": true + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm", + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXau-1.0.9-2.fc31.x86_64.rpm", + "checksum": "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834", + "check_gpg": true + }, + { + "name": "libXcomposite", + "epoch": 0, + "version": "0.4.4", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcomposite-0.4.4-17.fc31.x86_64.rpm", + "checksum": "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c", + "check_gpg": true + }, + { + "name": "libXcursor", + "epoch": 0, + "version": "1.1.15", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcursor-1.1.15-6.fc31.x86_64.rpm", + "checksum": "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59", + "check_gpg": true + }, + { + "name": "libXdamage", + "epoch": 0, + "version": "1.1.4", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXdamage-1.1.4-17.fc31.x86_64.rpm", + "checksum": "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a", + "check_gpg": true + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXext-1.3.4-2.fc31.x86_64.rpm", + "checksum": "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077", + "check_gpg": true + }, + { + "name": "libXfixes", + "epoch": 0, + "version": "5.0.3", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXfixes-5.0.3-10.fc31.x86_64.rpm", + "checksum": "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c", + "check_gpg": true + }, + { + "name": "libXft", + "epoch": 0, + "version": "2.3.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXft-2.3.3-2.fc31.x86_64.rpm", + "checksum": "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc", + "check_gpg": true + }, + { + "name": "libXi", + "epoch": 0, + "version": "1.7.10", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXi-1.7.10-2.fc31.x86_64.rpm", + "checksum": "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141", + "check_gpg": true + }, + { + "name": "libXinerama", + "epoch": 0, + "version": "1.1.4", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXinerama-1.1.4-4.fc31.x86_64.rpm", + "checksum": "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1", + "check_gpg": true + }, + { + "name": "libXrandr", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrandr-1.5.2-2.fc31.x86_64.rpm", + "checksum": "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1", + "check_gpg": true + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrender-0.9.10-10.fc31.x86_64.rpm", + "checksum": "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7", + "check_gpg": true + }, + { + "name": "libXtst", + "epoch": 0, + "version": "1.2.3", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXtst-1.2.3-10.fc31.x86_64.rpm", + "checksum": "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libacl-2.2.53-4.fc31.x86_64.rpm", + "checksum": "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc", + "check_gpg": true + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.111", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libaio-0.3.111-6.fc31.x86_64.rpm", + "checksum": "sha256:ee6596a5010c2b4a038861828ecca240aa03c592dacd83c3a70d44cb8ee50408", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libarchive-3.4.0-1.fc31.x86_64.rpm", + "checksum": "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libargon2-20171227-3.fc31.x86_64.rpm", + "checksum": "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libassuan-2.5.3-2.fc31.x86_64.rpm", + "checksum": "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libattr-2.4.48-7.fc31.x86_64.rpm", + "checksum": "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libblkid-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-2.26-6.fc31.x86_64.rpm", + "checksum": "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-ng-0.7.9-8.fc31.x86_64.rpm", + "checksum": "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcom_err-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcomps-0.1.11-3.fc31.x86_64.rpm", + "checksum": "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcroco-0.6.13-2.fc31.x86_64.rpm", + "checksum": "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcurl-7.66.0-1.fc31.x86_64.rpm", + "checksum": "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241", + "check_gpg": true + }, + { + "name": "libdatrie", + "epoch": 0, + "version": "0.2.9", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdatrie-0.2.9-10.fc31.x86_64.rpm", + "checksum": "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-5.3.28-38.fc31.x86_64.rpm", + "checksum": "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-38.fc31.x86_64.rpm", + "checksum": "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdnf-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "28.20190324cvs.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.x86_64.rpm", + "checksum": "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801", + "check_gpg": true + }, + { + "name": "libepoxy", + "epoch": 0, + "version": "1.5.3", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libepoxy-1.5.3-4.fc31.x86_64.rpm", + "checksum": "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libevent-2.1.8-7.fc31.x86_64.rpm", + "checksum": "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libfdisk-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "23.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libffi-3.1-23.fc31.x86_64.rpm", + "checksum": "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcc-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-1.fc31.x86_64.rpm", + "checksum": "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgomp-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgpg-error-1.36-2.fc31.x86_64.rpm", + "checksum": "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd", + "check_gpg": true + }, + { + "name": "libgusb", + "epoch": 0, + "version": "0.3.0", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgusb-0.3.0-5.fc31.x86_64.rpm", + "checksum": "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libidn2-2.2.0-2.fc31.x86_64.rpm", + "checksum": "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc", + "check_gpg": true + }, + { + "name": "libjpeg-turbo", + "epoch": 0, + "version": "2.0.2", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.x86_64.rpm", + "checksum": "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-1.fc31.x86_64.rpm", + "checksum": "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-1.fc31.x86_64.rpm", + "checksum": "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libksba-1.3.5-10.fc31.x86_64.rpm", + "checksum": "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-9.fc31.x86_64.rpm", + "checksum": "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43", + "check_gpg": true + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodman-2.0.1-20.fc31.x86_64.rpm", + "checksum": "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664", + "check_gpg": true + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.15", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.x86_64.rpm", + "checksum": "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmount-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.39.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnghttp2-1.39.2-1.fc31.x86_64.rpm", + "checksum": "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "5.20180605git4a062cf.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.x86_64.rpm", + "checksum": "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.0", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpcap-1.9.0-4.fc31.x86_64.rpm", + "checksum": "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc", + "check_gpg": true + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.37", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpng-1.6.37-2.fc31.x86_64.rpm", + "checksum": "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf", + "check_gpg": true + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libproxy-0.4.15-14.fc31.x86_64.rpm", + "checksum": "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpsl-0.21.0-2.fc31.x86_64.rpm", + "checksum": "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpwquality-1.4.1-1.fc31.x86_64.rpm", + "checksum": "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.10.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/librepo-1.10.5-1.fc31.x86_64.rpm", + "checksum": "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.10.1", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm", + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libseccomp-2.4.1-1.fc31.x86_64.rpm", + "checksum": "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.19.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsecret-0.19.1-1.fc31.x86_64.rpm", + "checksum": "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-utils-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsemanage-2.9-3.fc31.x86_64.rpm", + "checksum": "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsepol-2.9-2.fc31.x86_64.rpm", + "checksum": "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsigsegv-2.11-8.fc31.x86_64.rpm", + "checksum": "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsmartcols-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.5", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsolv-0.7.5-3.fc31.x86_64.rpm", + "checksum": "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388", + "check_gpg": true + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.68.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsoup-2.68.2-1.fc31.x86_64.rpm", + "checksum": "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libss-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-0.9.0-6.fc31.x86_64.rpm", + "checksum": "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm", + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libstdc++-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.14", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtasn1-4.14-2.fc31.x86_64.rpm", + "checksum": "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c", + "check_gpg": true + }, + { + "name": "libthai", + "epoch": 0, + "version": "0.1.28", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libthai-0.1.28-3.fc31.x86_64.rpm", + "checksum": "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500", + "check_gpg": true + }, + { + "name": "libtiff", + "epoch": 0, + "version": "4.0.10", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtiff-4.0.10-6.fc31.x86_64.rpm", + "checksum": "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "2.rc3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.x86_64.rpm", + "checksum": "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libunistring-0.9.10-6.fc31.x86_64.rpm", + "checksum": "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.22", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libusbx-1.0.22-4.fc31.x86_64.rpm", + "checksum": "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libutempter-1.1.6-17.fc31.x86_64.rpm", + "checksum": "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuuid-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libverto-0.3.0-8.fc31.x86_64.rpm", + "checksum": "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348", + "check_gpg": true + }, + { + "name": "libwayland-client", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-client-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff", + "check_gpg": true + }, + { + "name": "libwayland-cursor", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce", + "check_gpg": true + }, + { + "name": "libwayland-egl", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9", + "check_gpg": true + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcb-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-4.4.10-1.fc31.x86_64.rpm", + "checksum": "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.10-1.fc31.x86_64.rpm", + "checksum": "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.8.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.x86_64.rpm", + "checksum": "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxml2-2.9.9-3.fc31.x86_64.rpm", + "checksum": "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libyaml-0.2.2-2.fc31.x86_64.rpm", + "checksum": "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libzstd-1.4.2-1.fc31.x86_64.rpm", + "checksum": "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-6.fc31.x86_64.rpm", + "checksum": "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-1.fc31.x86_64.rpm", + "checksum": "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mkpasswd-5.5.2-1.fc31.x86_64.rpm", + "checksum": "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mpfr-3.1.6-5.fc31.x86_64.rpm", + "checksum": "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-6.1-12.20190803.fc31.x86_64.rpm", + "checksum": "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm", + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.x86_64.rpm", + "checksum": "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nettle-3.5.1-3.fc31.x86_64.rpm", + "checksum": "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/npth-1.6-3.fc31.x86_64.rpm", + "checksum": "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openldap-2.4.47-3.fc31.x86_64.rpm", + "checksum": "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-1.1.1d-2.fc31.x86_64.rpm", + "checksum": "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.x86_64.rpm", + "checksum": "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.x86_64.rpm", + "checksum": "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/os-prober-1.77-3.fc31.x86_64.rpm", + "checksum": "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.x86_64.rpm", + "checksum": "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.x86_64.rpm", + "checksum": "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "18.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pam-1.3.1-18.fc31.x86_64.rpm", + "checksum": "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b", + "check_gpg": true + }, + { + "name": "pango", + "epoch": 0, + "version": "1.44.6", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pango-1.44.6-1.fc31.x86_64.rpm", + "checksum": "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.43", + "release": "2.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre-8.43-2.fc31.1.x86_64.rpm", + "checksum": "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.33", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre2-10.33-14.fc31.x86_64.rpm", + "checksum": "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pigz-2.4-5.fc31.x86_64.rpm", + "checksum": "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pinentry-1.1.0-6.fc31.x86_64.rpm", + "checksum": "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976", + "check_gpg": true + }, + { + "name": "pixman", + "epoch": 0, + "version": "0.38.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pixman-0.38.4-1.fc31.x86_64.rpm", + "checksum": "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/policycoreutils-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "18.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/popt-1.16-18.fc31.x86_64.rpm", + "checksum": "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-6.fc31.x86_64.rpm", + "checksum": "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm", + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm", + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-3.7.4-5.fc31.x86_64.rpm", + "checksum": "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.x86_64.rpm", + "checksum": "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libs-3.7.4-5.fc31.x86_64.rpm", + "checksum": "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-rpm-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-unbound-1.9.3-1.fc31.x86_64.rpm", + "checksum": "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7", + "check_gpg": true + }, + { + "name": "qemu-img", + "epoch": 2, + "version": "4.1.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qemu-img-4.1.0-2.fc31.x86_64.rpm", + "checksum": "sha256:669250ad47aad5939cf4d1b88036fd95a94845d8e0bbdb05e933f3d2fe262fea", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.x86_64.rpm", + "checksum": "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/readline-8.0-3.fc31.x86_64.rpm", + "checksum": "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc", + "check_gpg": true + }, + { + "name": "rest", + "epoch": 0, + "version": "0.8.1", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rest-0.8.1-6.fc31.x86_64.rpm", + "checksum": "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sed-4.5-4.fc31.x86_64.rpm", + "checksum": "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.3", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm", + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "16.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shadow-utils-4.6-16.fc31.x86_64.rpm", + "checksum": "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.14", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shared-mime-info-1.14-1.fc31.x86_64.rpm", + "checksum": "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.29.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.x86_64.rpm", + "checksum": "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5", + "check_gpg": true + }, + { + "name": "systemd-bootchart", + "epoch": 0, + "version": "233", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-bootchart-233-5.fc31.x86_64.rpm", + "checksum": "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm", + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-udev-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tar-1.32-2.fc31.x86_64.rpm", + "checksum": "sha256:9975496f29601a1c2cdb89e63aac698fdd8283ba3a52a9d91ead9473a0e064c8", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tss2-1331-2.fc31.x86_64.rpm", + "checksum": "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm", + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/unbound-libs-1.9.3-1.fc31.x86_64.rpm", + "checksum": "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/util-linux-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "15.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/which-2.21-15.fc31.x86_64.rpm", + "checksum": "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm", + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.27", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm", + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-5.2.4-6.fc31.x86_64.rpm", + "checksum": "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-libs-5.2.4-6.fc31.x86_64.rpm", + "checksum": "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.2", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.x86_64.rpm", + "checksum": "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "19.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zlib-1.2.11-19.fc31.x86_64.rpm", + "checksum": "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9", + "check_gpg": true + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.20.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/NetworkManager-1.20.4-1.fc31.x86_64.rpm", + "checksum": "sha256:6d8cbba688cea65fa80983cd7f140633e94cd58daa819342d1ae571a4ff174c6", + "check_gpg": true + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.20.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.20.4-1.fc31.x86_64.rpm", + "checksum": "sha256:2c5b5ce5f6e6d1d79f35eab253a12e19aeb863f4fe8ded94013f76a9834689fb", + "check_gpg": true + }, + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.111", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm", + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/acl-2.2.53-4.fc31.x86_64.rpm", + "checksum": "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d", + "check_gpg": true + }, + { + "name": "adobe-source-code-pro-fonts", + "epoch": 0, + "version": "2.030.1.050", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm", + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "name": "adwaita-cursor-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "name": "adwaita-icon-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/alternatives-1.11-5.fc31.x86_64.rpm", + "checksum": "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081", + "check_gpg": true + }, + { + "name": "at-spi2-atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.x86_64.rpm", + "checksum": "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355", + "check_gpg": true + }, + { + "name": "at-spi2-core", + "epoch": 0, + "version": "2.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1", + "check_gpg": true + }, + { + "name": "atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/atk-2.34.1-1.fc31.x86_64.rpm", + "checksum": "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5", + "check_gpg": true + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm", + "checksum": "sha256:cc02df4125eaebf642edd9bf00031ec09871c285816c03112909ef1005410eaa", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm", + "checksum": "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09", + "check_gpg": true + }, + { + "name": "avahi-libs", + "epoch": 0, + "version": "0.7", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/avahi-libs-0.7-20.fc31.x86_64.rpm", + "checksum": "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "8.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm", + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bash-5.0.7-3.fc31.x86_64.rpm", + "checksum": "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3", + "check_gpg": true + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.7", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/brotli-1.0.7-6.fc31.x86_64.rpm", + "checksum": "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1", + "check_gpg": true + }, + { + "name": "bzip2", + "epoch": 0, + "version": "1.0.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bzip2-1.0.8-1.fc31.x86_64.rpm", + "checksum": "sha256:d334fe6e150349148b9cb77e32523029311ce8cb10d222d11c951b66637bbd3a", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.x86_64.rpm", + "checksum": "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7", + "check_gpg": true + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.15.0", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/c-ares-1.15.0-4.fc31.x86_64.rpm", + "checksum": "sha256:239a9576864532edd325e72b62a10ef147a2bcc0a925079b19fb9cb74bab0dd7", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm", + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "name": "cairo", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-1.16.0-6.fc31.x86_64.rpm", + "checksum": "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a", + "check_gpg": true + }, + { + "name": "cairo-gobject", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.x86_64.rpm", + "checksum": "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3", + "check_gpg": true + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "2.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/checkpolicy-2.9-2.fc31.x86_64.rpm", + "checksum": "sha256:3629a3675c7dadd89f3b3d855e7c57d8f93d30d59fa00fdeabfc5e5e39ca4937", + "check_gpg": true + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/chrony-3.5-4.fc31.x86_64.rpm", + "checksum": "sha256:07a3523159719382e2bb9b83961bfe00836cc97f75a9706d02ad73dddb161856", + "check_gpg": true + }, + { + "name": "cloud-init", + "epoch": 0, + "version": "17.1", + "release": "11.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cloud-init-17.1-11.fc31.noarch.rpm", + "checksum": "sha256:9cc3e6534ae34343e7e4d056d46b9551da7d0a82c7bad378c3626d4b70d1bf62", + "check_gpg": true + }, + { + "name": "cloud-utils-growpart", + "epoch": 0, + "version": "0.31", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cloud-utils-growpart-0.31-3.fc31.noarch.rpm", + "checksum": "sha256:101fa551ae1ae1885c1627fec47745eb0071ae675a762002e02c0563de89ecbd", + "check_gpg": true + }, + { + "name": "colord-libs", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/colord-libs-1.4.4-2.fc31.x86_64.rpm", + "checksum": "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-8.31-4.fc31.x86_64.rpm", + "checksum": "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-common-8.31-4.fc31.x86_64.rpm", + "checksum": "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "12.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cpio-2.12-12.fc31.x86_64.rpm", + "checksum": "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-2.9.6-21.fc31.x86_64.rpm", + "checksum": "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.x86_64.rpm", + "checksum": "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20190816", + "release": "4.gitbb9bf99.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm", + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8", + "check_gpg": true + }, + { + "name": "cups-libs", + "epoch": 1, + "version": "2.2.12", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cups-libs-2.2.12-2.fc31.x86_64.rpm", + "checksum": "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/curl-7.66.0-1.fc31.x86_64.rpm", + "checksum": "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.x86_64.rpm", + "checksum": "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-1.12.16-3.fc31.x86_64.rpm", + "checksum": "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "21", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-broker-21-6.fc31.x86_64.rpm", + "checksum": "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm", + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-3.fc31.x86_64.rpm", + "checksum": "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71", + "check_gpg": true + }, + { + "name": "dconf", + "epoch": 0, + "version": "0.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dconf-0.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27", + "check_gpg": true + }, + { + "name": "dejavu-fonts-common", + "epoch": 0, + "version": "2.37", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dejavu-fonts-common-2.37-2.fc31.noarch.rpm", + "checksum": "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc", + "check_gpg": true + }, + { + "name": "dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-2.fc31.noarch.rpm", + "checksum": "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-2.fc31.x86_64.rpm", + "checksum": "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-1.02.163-2.fc31.x86_64.rpm", + "checksum": "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.x86_64.rpm", + "checksum": "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732", + "check_gpg": true + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.4.1", + "release": "15.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dhcp-client-4.4.1-15.fc31.x86_64.rpm", + "checksum": "sha256:33334afdde6c813b18c18897dca19fab5a2ce090eba0b5ea0a38f43f1081c190", + "check_gpg": true + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.4.1", + "release": "15.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dhcp-common-4.4.1-15.fc31.noarch.rpm", + "checksum": "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/diffutils-3.7-3.fc31.x86_64.rpm", + "checksum": "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.9", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-plugins-core-4.0.9-1.fc31.noarch.rpm", + "checksum": "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "27.git20181204.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-049-27.git20181204.fc31.1.x86_64.rpm", + "checksum": "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159", + "check_gpg": true + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "049", + "release": "27.git20181204.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-config-generic-049-27.git20181204.fc31.1.x86_64.rpm", + "checksum": "sha256:34a9986b8b61812ceaf32ce3b189bd0b2cb4adaaf47d76ec1f50ce07c45b5675", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm", + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libelf-0.177-1.fc31.x86_64.rpm", + "checksum": "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libs-0.177-1.fc31.x86_64.rpm", + "checksum": "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/expat-2.2.8-1.fc31.x86_64.rpm", + "checksum": "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm", + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "name": "fedora-release-cloud", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-cloud-31-1.noarch.rpm", + "checksum": "sha256:06512e0f2546baf5c47a058d872fc62c39156bc86b5619eb841b435e2cc61e32", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-common-31-1.noarch.rpm", + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-repos-31-1.noarch.rpm", + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-5.37-3.fc31.x86_64.rpm", + "checksum": "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-libs-5.37-3.fc31.x86_64.rpm", + "checksum": "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.12", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/filesystem-3.12-2.fc31.x86_64.rpm", + "checksum": "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "24.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/findutils-4.6.0-24.fc31.x86_64.rpm", + "checksum": "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-7.fc31.x86_64.rpm", + "checksum": "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.x86_64.rpm", + "checksum": "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2", + "check_gpg": true + }, + { + "name": "fontconfig", + "epoch": 0, + "version": "2.13.92", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontconfig-2.13.92-3.fc31.x86_64.rpm", + "checksum": "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54", + "check_gpg": true + }, + { + "name": "fontpackages-filesystem", + "epoch": 0, + "version": "1.44", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm", + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.10.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/freetype-2.10.0-3.fc31.x86_64.rpm", + "checksum": "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee", + "check_gpg": true + }, + { + "name": "fribidi", + "epoch": 0, + "version": "1.0.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fribidi-1.0.5-4.fc31.x86_64.rpm", + "checksum": "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-8.fc31.x86_64.rpm", + "checksum": "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gawk-5.0.1-5.fc31.x86_64.rpm", + "checksum": "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203", + "check_gpg": true + }, + { + "name": "gcr", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-3.33.4-1.fc31.x86_64.rpm", + "checksum": "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd", + "check_gpg": true + }, + { + "name": "gcr-base", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-base-3.33.4-1.fc31.x86_64.rpm", + "checksum": "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.x86_64.rpm", + "checksum": "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.x86_64.rpm", + "checksum": "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2-modules", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.x86_64.rpm", + "checksum": "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c", + "check_gpg": true + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20190806", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/geolite2-city-20190806-1.fc31.noarch.rpm", + "checksum": "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565", + "check_gpg": true + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20190806", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/geolite2-country-20190806-1.fc31.noarch.rpm", + "checksum": "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3", + "check_gpg": true + }, + { + "name": "git-core", + "epoch": 0, + "version": "2.23.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/git-core-2.23.0-1.fc31.x86_64.rpm", + "checksum": "sha256:36f24cbb8727406af1448c055971cca1956eaf0f1183320e1ed2df1c61c69451", + "check_gpg": true + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib-networking-2.62.1-1.fc31.x86_64.rpm", + "checksum": "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib2-2.62.1-1.fc31.x86_64.rpm", + "checksum": "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-common-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb", + "check_gpg": true + }, + { + "name": "glibc-langpack-en", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:6f2dae9b49bed8e1036a21aadd92ea2eb371979f6714ec2bce5742de051eeb14", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gmp-6.1.2-10.fc31.x86_64.rpm", + "checksum": "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a", + "check_gpg": true + }, + { + "name": "gnome-keyring", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-2.2.17-2.fc31.x86_64.rpm", + "checksum": "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.x86_64.rpm", + "checksum": "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnutls-3.6.10-1.fc31.x86_64.rpm", + "checksum": "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gpgme-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d", + "check_gpg": true + }, + { + "name": "graphite2", + "epoch": 0, + "version": "1.3.13", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/graphite2-1.3.13-1.fc31.x86_64.rpm", + "checksum": "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grep-3.3-3.fc31.x86_64.rpm", + "checksum": "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada", + "check_gpg": true + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/groff-base-1.22.3-20.fc31.x86_64.rpm", + "checksum": "sha256:21ccdbe703caa6a08056d2bc75c1e184f811472a6e320e5af64b8757fcd07166", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-common-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8", + "check_gpg": true + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-extra-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031", + "check_gpg": true + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "36.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grubby-8.40-36.fc31.x86_64.rpm", + "checksum": "sha256:eac54fb3ab5e4c457aa6522398560713ce91394662ca11b554684bda2e0ab2af", + "check_gpg": true + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8", + "check_gpg": true + }, + { + "name": "gtk-update-icon-cache", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.x86_64.rpm", + "checksum": "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d", + "check_gpg": true + }, + { + "name": "gtk3", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk3-3.24.12-3.fc31.x86_64.rpm", + "checksum": "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gzip-1.10-1.fc31.x86_64.rpm", + "checksum": "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01", + "check_gpg": true + }, + { + "name": "harfbuzz", + "epoch": 0, + "version": "2.6.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/harfbuzz-2.6.1-2.fc31.x86_64.rpm", + "checksum": "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994", + "check_gpg": true + }, + { + "name": "heat-cfntools", + "epoch": 0, + "version": "1.4.2", + "release": "9.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/heat-cfntools-1.4.2-9.fc31.noarch.rpm", + "checksum": "sha256:456252f83ba91a1150f180a81998c3acdd71be57a324cf84d6d842a063c56a12", + "check_gpg": true + }, + { + "name": "hicolor-icon-theme", + "epoch": 0, + "version": "0.17", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm", + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.20", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hostname-3.20-9.fc31.x86_64.rpm", + "checksum": "sha256:a188b5c697b734d4ed7d8f954b6875b9d401dc2a3c10bfd20d03db131ca73ab5", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.x86_64.rpm", + "checksum": "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6", + "check_gpg": true + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.02", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/initscripts-10.02-2.fc31.x86_64.rpm", + "checksum": "sha256:2af3bbdab1f387ae7af2534846e33ab6d2ca7777399c64191f95699d576cd4ba", + "check_gpg": true + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.2.5", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipcalc-0.2.5-3.fc31.x86_64.rpm", + "checksum": "sha256:c8e0a36410ebbd9db0a10e1fbecbae8f6288b9be86752d2e91725d5dd98ec65d", + "check_gpg": true + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.3.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iproute-5.3.0-1.fc31.x86_64.rpm", + "checksum": "sha256:cef060334e8c21b5d2e3a87bdd0ad5ac1be389d7794735506b9d3c65c2923cd3", + "check_gpg": true + }, + { + "name": "iproute-tc", + "epoch": 0, + "version": "5.3.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iproute-tc-5.3.0-1.fc31.x86_64.rpm", + "checksum": "sha256:d219a6c4a2410d6ef9bad2b337557779b969e278b657ffede83c021c20f665ca", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.3", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-libs-1.8.3-5.fc31.x86_64.rpm", + "checksum": "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4", + "check_gpg": true + }, + { + "name": "iputils", + "epoch": 0, + "version": "20190515", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iputils-20190515-3.fc31.x86_64.rpm", + "checksum": "sha256:72b5df6982fecdbee30d40bbb6042c72ed0f31b787f289b4a27f0dffc6f609fe", + "check_gpg": true + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.12", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jansson-2.12-4.fc31.x86_64.rpm", + "checksum": "sha256:dc924dd33a9bd0b9483ebdbcf7caecbe1f48b8a135f1521291c8433fa76f4603", + "check_gpg": true + }, + { + "name": "jasper-libs", + "epoch": 0, + "version": "2.0.14", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jasper-libs-2.0.14-9.fc31.x86_64.rpm", + "checksum": "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00", + "check_gpg": true + }, + { + "name": "jbigkit-libs", + "epoch": 0, + "version": "2.1", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jbigkit-libs-2.1-17.fc31.x86_64.rpm", + "checksum": "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-c-0.13.1-6.fc31.x86_64.rpm", + "checksum": "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422", + "check_gpg": true + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-glib-1.4.4-3.fc31.x86_64.rpm", + "checksum": "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-2.0.4-14.fc31.x86_64.rpm", + "checksum": "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-legacy-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-misc-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "5.3.7", + "release": "301.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-core-5.3.7-301.fc31.x86_64.rpm", + "checksum": "sha256:f0509e333636e5c34726c8a2b8260bf88fe0a35b95cae6dda62191fee1be4c6a", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-3.fc31.x86_64.rpm", + "checksum": "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-26-4.fc31.x86_64.rpm", + "checksum": "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-libs-26-4.fc31.x86_64.rpm", + "checksum": "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kpartx-0.8.0-3.fc31.x86_64.rpm", + "checksum": "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.17", + "release": "45.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/krb5-libs-1.17-45.fc31.x86_64.rpm", + "checksum": "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466", + "check_gpg": true + }, + { + "name": "langpacks-core-en", + "epoch": 0, + "version": "2.0", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/langpacks-core-en-2.0-7.fc31.noarch.rpm", + "checksum": "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552", + "check_gpg": true + }, + { + "name": "langpacks-en", + "epoch": 0, + "version": "2.0", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/langpacks-en-2.0-7.fc31.noarch.rpm", + "checksum": "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b", + "check_gpg": true + }, + { + "name": "lcms2", + "epoch": 0, + "version": "2.9", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lcms2-2.9-6.fc31.x86_64.rpm", + "checksum": "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b", + "check_gpg": true + }, + { + "name": "less", + "epoch": 0, + "version": "551", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/less-551-2.fc31.x86_64.rpm", + "checksum": "sha256:22db6d1e1f34a43c3d045b6750ff3a32184d47c2aedf3dabc93640057de1f4fa", + "check_gpg": true + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-1.6.8-3.fc31.x86_64.rpm", + "checksum": "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679", + "check_gpg": true + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm", + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXau-1.0.9-2.fc31.x86_64.rpm", + "checksum": "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834", + "check_gpg": true + }, + { + "name": "libXcomposite", + "epoch": 0, + "version": "0.4.4", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcomposite-0.4.4-17.fc31.x86_64.rpm", + "checksum": "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c", + "check_gpg": true + }, + { + "name": "libXcursor", + "epoch": 0, + "version": "1.1.15", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcursor-1.1.15-6.fc31.x86_64.rpm", + "checksum": "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59", + "check_gpg": true + }, + { + "name": "libXdamage", + "epoch": 0, + "version": "1.1.4", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXdamage-1.1.4-17.fc31.x86_64.rpm", + "checksum": "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a", + "check_gpg": true + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXext-1.3.4-2.fc31.x86_64.rpm", + "checksum": "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077", + "check_gpg": true + }, + { + "name": "libXfixes", + "epoch": 0, + "version": "5.0.3", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXfixes-5.0.3-10.fc31.x86_64.rpm", + "checksum": "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c", + "check_gpg": true + }, + { + "name": "libXft", + "epoch": 0, + "version": "2.3.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXft-2.3.3-2.fc31.x86_64.rpm", + "checksum": "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc", + "check_gpg": true + }, + { + "name": "libXi", + "epoch": 0, + "version": "1.7.10", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXi-1.7.10-2.fc31.x86_64.rpm", + "checksum": "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141", + "check_gpg": true + }, + { + "name": "libXinerama", + "epoch": 0, + "version": "1.1.4", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXinerama-1.1.4-4.fc31.x86_64.rpm", + "checksum": "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1", + "check_gpg": true + }, + { + "name": "libXrandr", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrandr-1.5.2-2.fc31.x86_64.rpm", + "checksum": "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1", + "check_gpg": true + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrender-0.9.10-10.fc31.x86_64.rpm", + "checksum": "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7", + "check_gpg": true + }, + { + "name": "libXtst", + "epoch": 0, + "version": "1.2.3", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXtst-1.2.3-10.fc31.x86_64.rpm", + "checksum": "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libacl-2.2.53-4.fc31.x86_64.rpm", + "checksum": "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libarchive-3.4.0-1.fc31.x86_64.rpm", + "checksum": "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libargon2-20171227-3.fc31.x86_64.rpm", + "checksum": "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libassuan-2.5.3-2.fc31.x86_64.rpm", + "checksum": "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libattr-2.4.48-7.fc31.x86_64.rpm", + "checksum": "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be", + "check_gpg": true + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-43.fc31.x86_64.rpm", + "checksum": "sha256:469d12368377399b8eaa7ec8cf1b6378ab18476b4a2b61b79091510a8945c6aa", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libblkid-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-2.26-6.fc31.x86_64.rpm", + "checksum": "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-ng-0.7.9-8.fc31.x86_64.rpm", + "checksum": "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d", + "check_gpg": true + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcollection-0.7.0-43.fc31.x86_64.rpm", + "checksum": "sha256:0f26eca4ac936554818769fe32aca5e878af2616e83f836ec463e59eb4f9f1f9", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcom_err-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcomps-0.1.11-3.fc31.x86_64.rpm", + "checksum": "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcroco-0.6.13-2.fc31.x86_64.rpm", + "checksum": "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcurl-7.66.0-1.fc31.x86_64.rpm", + "checksum": "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241", + "check_gpg": true + }, + { + "name": "libdatrie", + "epoch": 0, + "version": "0.2.9", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdatrie-0.2.9-10.fc31.x86_64.rpm", + "checksum": "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-5.3.28-38.fc31.x86_64.rpm", + "checksum": "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-38.fc31.x86_64.rpm", + "checksum": "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627", + "check_gpg": true + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdhash-0.5.0-43.fc31.x86_64.rpm", + "checksum": "sha256:0b54f374bcbe094dbc0d52d9661fe99ebff384026ce0ea39f2d6069e27bf8bdc", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdnf-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "28.20190324cvs.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.x86_64.rpm", + "checksum": "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801", + "check_gpg": true + }, + { + "name": "libepoxy", + "epoch": 0, + "version": "1.5.3", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libepoxy-1.5.3-4.fc31.x86_64.rpm", + "checksum": "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libevent-2.1.8-7.fc31.x86_64.rpm", + "checksum": "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libfdisk-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "23.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libffi-3.1-23.fc31.x86_64.rpm", + "checksum": "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcc-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-1.fc31.x86_64.rpm", + "checksum": "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgomp-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgpg-error-1.36-2.fc31.x86_64.rpm", + "checksum": "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd", + "check_gpg": true + }, + { + "name": "libgusb", + "epoch": 0, + "version": "0.3.0", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgusb-0.3.0-5.fc31.x86_64.rpm", + "checksum": "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libidn2-2.2.0-2.fc31.x86_64.rpm", + "checksum": "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc", + "check_gpg": true + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libini_config-1.3.1-43.fc31.x86_64.rpm", + "checksum": "sha256:6f7fbd57db9334a3cc7983d2e920afe92abe3f7e168702612d70e9ff405d79e6", + "check_gpg": true + }, + { + "name": "libjpeg-turbo", + "epoch": 0, + "version": "2.0.2", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.x86_64.rpm", + "checksum": "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-1.fc31.x86_64.rpm", + "checksum": "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-1.fc31.x86_64.rpm", + "checksum": "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libksba-1.3.5-10.fc31.x86_64.rpm", + "checksum": "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f", + "check_gpg": true + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.0.7", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libldb-2.0.7-1.fc31.x86_64.rpm", + "checksum": "sha256:8f7b737ccb294fd5ba1d19075ea2a50a54e0265d8efa28aae0ade59d3e3a63be", + "check_gpg": true + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.2.0", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmaxminddb-1.2.0-8.fc31.x86_64.rpm", + "checksum": "sha256:430f2f71be063eb9d04fe38659f62e29f47c9c878f9985d0569cb49e9c89ebc0", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-9.fc31.x86_64.rpm", + "checksum": "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmnl-1.0.4-10.fc31.x86_64.rpm", + "checksum": "sha256:c976ce75eda3dbe734117f6f558eafb2061bbef66086a04cb907a7ddbaea8bc2", + "check_gpg": true + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodman-2.0.1-20.fc31.x86_64.rpm", + "checksum": "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664", + "check_gpg": true + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.15", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.x86_64.rpm", + "checksum": "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmount-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d", + "check_gpg": true + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libndp-1.7-4.fc31.x86_64.rpm", + "checksum": "sha256:45bf4bef479712936db1d6859b043d13e6cad41c851b6e621fc315b39ecfa14b", + "check_gpg": true + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.4.1", + "release": "1.rc1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnfsidmap-2.4.1-1.rc1.fc31.x86_64.rpm", + "checksum": "sha256:f61555e6e74917be3f131bd5af9d9e30ed709111701e950b7ebd4392baf33f12", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.39.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnghttp2-1.39.2-1.fc31.x86_64.rpm", + "checksum": "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf", + "check_gpg": true + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnl3-3.5.0-1.fc31.x86_64.rpm", + "checksum": "sha256:8bd2655674b40e89f5f63af7f8ffafd0e9064a3378cdca050262a7272678e8e5", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "5.20180605git4a062cf.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.x86_64.rpm", + "checksum": "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a", + "check_gpg": true + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-43.fc31.x86_64.rpm", + "checksum": "sha256:6f729da330aaaea336458a8b6f3f1d2cc761693ba20bdda57fb9c49fb6f2120d", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.0", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpcap-1.9.0-4.fc31.x86_64.rpm", + "checksum": "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc", + "check_gpg": true + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpipeline-1.5.1-3.fc31.x86_64.rpm", + "checksum": "sha256:cfeb5d0cb9c116e39292e3158c68ee62880cff4a5e3d098d20bf9567e5a576e1", + "check_gpg": true + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.37", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpng-1.6.37-2.fc31.x86_64.rpm", + "checksum": "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf", + "check_gpg": true + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libproxy-0.4.15-14.fc31.x86_64.rpm", + "checksum": "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpsl-0.21.0-2.fc31.x86_64.rpm", + "checksum": "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpwquality-1.4.1-1.fc31.x86_64.rpm", + "checksum": "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0", + "check_gpg": true + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libref_array-0.1.5-43.fc31.x86_64.rpm", + "checksum": "sha256:da923b379524f2d8d26905f26a9dc763cec36c40306c4c53db57100574ea89b8", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.10.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/librepo-1.10.5-1.fc31.x86_64.rpm", + "checksum": "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.10.1", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm", + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libseccomp-2.4.1-1.fc31.x86_64.rpm", + "checksum": "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.19.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsecret-0.19.1-1.fc31.x86_64.rpm", + "checksum": "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-utils-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsemanage-2.9-3.fc31.x86_64.rpm", + "checksum": "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsepol-2.9-2.fc31.x86_64.rpm", + "checksum": "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsigsegv-2.11-8.fc31.x86_64.rpm", + "checksum": "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsmartcols-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.5", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsolv-0.7.5-3.fc31.x86_64.rpm", + "checksum": "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388", + "check_gpg": true + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.68.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsoup-2.68.2-1.fc31.x86_64.rpm", + "checksum": "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libss-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-0.9.0-6.fc31.x86_64.rpm", + "checksum": "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm", + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_autofs-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:422625da0fbb99cc4da8eebebff892c6e73a87c81a33190f7a17e344f6bb709e", + "check_gpg": true + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_certmap-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:307275b46896d56d23f5da5ab77a299941e77165ff44e846d6620eee1158131c", + "check_gpg": true + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:a1bd1b5a2c47e57957a77d32f4fd705de1df30557837cfbc83b8f284e4ee0456", + "check_gpg": true + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:6c1f9dc11de4d3af4d4c418b4556ee9659011d587e9da44bb039cb30ac326841", + "check_gpg": true + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:e1bda9438577473413f3c7455ce84b6c8486adee3d4473fafcd28309ad8c2913", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libstdc++-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f", + "check_gpg": true + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtalloc-2.3.0-1.fc31.x86_64.rpm", + "checksum": "sha256:9247561bad35a8a2f8269b2bbbd28d1bf5e6fcde1fe78e1fc3c0e712513e9703", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.14", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtasn1-4.14-2.fc31.x86_64.rpm", + "checksum": "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb", + "check_gpg": true + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtdb-1.4.2-1.fc31.x86_64.rpm", + "checksum": "sha256:fccade859cbb884fd61c07433e6c316f794885cbb2186debcff3f6894d16d52c", + "check_gpg": true + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtevent-0.10.1-1.fc31.x86_64.rpm", + "checksum": "sha256:5593277fa685adba864393da8faf76950d6d8fb1483af036cdc08d8437c387bb", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c", + "check_gpg": true + }, + { + "name": "libthai", + "epoch": 0, + "version": "0.1.28", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libthai-0.1.28-3.fc31.x86_64.rpm", + "checksum": "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500", + "check_gpg": true + }, + { + "name": "libtiff", + "epoch": 0, + "version": "4.0.10", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtiff-4.0.10-6.fc31.x86_64.rpm", + "checksum": "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "2.rc3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.x86_64.rpm", + "checksum": "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libunistring-0.9.10-6.fc31.x86_64.rpm", + "checksum": "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.22", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libusbx-1.0.22-4.fc31.x86_64.rpm", + "checksum": "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8", + "check_gpg": true + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuser-0.62-21.fc31.x86_64.rpm", + "checksum": "sha256:95b45de2c57f35df43bff0c2ebe32c64183968b3a41c5673cfeeff5ece506b94", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libutempter-1.1.6-17.fc31.x86_64.rpm", + "checksum": "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuuid-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libverto-0.3.0-8.fc31.x86_64.rpm", + "checksum": "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348", + "check_gpg": true + }, + { + "name": "libwayland-client", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-client-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff", + "check_gpg": true + }, + { + "name": "libwayland-cursor", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce", + "check_gpg": true + }, + { + "name": "libwayland-egl", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9", + "check_gpg": true + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcb-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-4.4.10-1.fc31.x86_64.rpm", + "checksum": "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.10-1.fc31.x86_64.rpm", + "checksum": "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.8.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.x86_64.rpm", + "checksum": "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxml2-2.9.9-3.fc31.x86_64.rpm", + "checksum": "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libyaml-0.2.2-2.fc31.x86_64.rpm", + "checksum": "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libzstd-1.4.2-1.fc31.x86_64.rpm", + "checksum": "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c", + "check_gpg": true + }, + { + "name": "linux-atm-libs", + "epoch": 0, + "version": "2.5.1", + "release": "25.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-25.fc31.x86_64.rpm", + "checksum": "sha256:e405d2edc9b9fc2c13242f0225049b071aa4159d09d8e2d501e8c4fe88a9710b", + "check_gpg": true + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20190923", + "release": "102.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-firmware-20190923-102.fc31.noarch.rpm", + "checksum": "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47", + "check_gpg": true + }, + { + "name": "linux-firmware-whence", + "epoch": 0, + "version": "20190923", + "release": "102.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-firmware-whence-20190923-102.fc31.noarch.rpm", + "checksum": "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70", + "check_gpg": true + }, + { + "name": "lmdb-libs", + "epoch": 0, + "version": "0.9.23", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.23-3.fc31.x86_64.rpm", + "checksum": "sha256:a41579023e1db3dec06679ebc7788ece92686ea2a23c78dd749c98ddbc82d419", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-6.fc31.x86_64.rpm", + "checksum": "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-1.fc31.x86_64.rpm", + "checksum": "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39", + "check_gpg": true + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.8.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/man-db-2.8.4-5.fc31.x86_64.rpm", + "checksum": "sha256:764699ea124f85a7afcf65a2f138e3821770f8aa1ef134e1813e2b04477f0b74", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mkpasswd-5.5.2-1.fc31.x86_64.rpm", + "checksum": "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83", + "check_gpg": true + }, + { + "name": "mozjs60", + "epoch": 0, + "version": "60.9.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mozjs60-60.9.0-3.fc31.x86_64.rpm", + "checksum": "sha256:bfe43a646ce98fc8cdcb52738f91e0ee5b8fd43760336d267bc20500aacd15bc", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mpfr-3.1.6-5.fc31.x86_64.rpm", + "checksum": "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2", + "check_gpg": true + }, + { + "name": "mtools", + "epoch": 0, + "version": "4.0.23", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mtools-4.0.23-1.fc31.x86_64.rpm", + "checksum": "sha256:6091b138c5dee897cb1c99b0d556f3e03ce6bb2c6ad3c10fed54136092a9d694", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-6.1-12.20190803.fc31.x86_64.rpm", + "checksum": "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm", + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.x86_64.rpm", + "checksum": "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106", + "check_gpg": true + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.55.20160912git.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/net-tools-2.0-0.55.20160912git.fc31.x86_64.rpm", + "checksum": "sha256:cf6506ad88ecaab89efde02eee218365a36981114638c03989ba2768457ae335", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nettle-3.5.1-3.fc31.x86_64.rpm", + "checksum": "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/npth-1.6-3.fc31.x86_64.rpm", + "checksum": "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openldap-2.4.47-3.fc31.x86_64.rpm", + "checksum": "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68", + "check_gpg": true + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-server-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:c3aa4d794cef51ba9fcbf3750baed55aabfa36062a48f61149ccf03364a0d256", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-1.1.1d-2.fc31.x86_64.rpm", + "checksum": "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.x86_64.rpm", + "checksum": "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.x86_64.rpm", + "checksum": "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/os-prober-1.77-3.fc31.x86_64.rpm", + "checksum": "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.x86_64.rpm", + "checksum": "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.x86_64.rpm", + "checksum": "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "18.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pam-1.3.1-18.fc31.x86_64.rpm", + "checksum": "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b", + "check_gpg": true + }, + { + "name": "pango", + "epoch": 0, + "version": "1.44.6", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pango-1.44.6-1.fc31.x86_64.rpm", + "checksum": "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c", + "check_gpg": true + }, + { + "name": "parted", + "epoch": 0, + "version": "3.2.153", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/parted-3.2.153-1.fc31.x86_64.rpm", + "checksum": "sha256:55c47c63deb00a9126c068299c01dfbdd39d58c6962138b862b92f5c7af8c898", + "check_gpg": true + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/passwd-0.80-6.fc31.x86_64.rpm", + "checksum": "sha256:c459092a47bd2f904d9fe830735b512ef97b52785ee12abb2ba5c52465560f18", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.43", + "release": "2.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre-8.43-2.fc31.1.x86_64.rpm", + "checksum": "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.33", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre2-10.33-14.fc31.x86_64.rpm", + "checksum": "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pigz-2.4-5.fc31.x86_64.rpm", + "checksum": "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pinentry-1.1.0-6.fc31.x86_64.rpm", + "checksum": "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976", + "check_gpg": true + }, + { + "name": "pixman", + "epoch": 0, + "version": "0.38.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pixman-0.38.4-1.fc31.x86_64.rpm", + "checksum": "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/policycoreutils-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c", + "check_gpg": true + }, + { + "name": "polkit", + "epoch": 0, + "version": "0.116", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/polkit-0.116-4.fc31.x86_64.rpm", + "checksum": "sha256:adf011910ee572cb557b7340002aed9376004b786585e78e6546192a323c6d78", + "check_gpg": true + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.116", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/polkit-libs-0.116-4.fc31.x86_64.rpm", + "checksum": "sha256:118548479396b007a80bc98e8cef770ea242ef6b20cd2922d595acd4c100946d", + "check_gpg": true + }, + { + "name": "polkit-pkla-compat", + "epoch": 0, + "version": "0.1", + "release": "15.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/polkit-pkla-compat-0.1-15.fc31.x86_64.rpm", + "checksum": "sha256:3553c0d8c0639d043a50ce16c3694e17d399e126b25106de0a75fc8dbc13b709", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "18.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/popt-1.16-18.fc31.x86_64.rpm", + "checksum": "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-6.fc31.x86_64.rpm", + "checksum": "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm", + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm", + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-3.7.4-5.fc31.x86_64.rpm", + "checksum": "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9", + "check_gpg": true + }, + { + "name": "python3-asn1crypto", + "epoch": 0, + "version": "0.24.0", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-asn1crypto-0.24.0-7.fc31.noarch.rpm", + "checksum": "sha256:73a7249de97f0ad66bc1a867ac5b5d08b741ab152d4dd7ce45cc231d64126b58", + "check_gpg": true + }, + { + "name": "python3-attrs", + "epoch": 0, + "version": "19.1.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-attrs-19.1.0-2.fc31.noarch.rpm", + "checksum": "sha256:4cca3f986ddbd38cfbfb6d1c8d336a1aaed78f7da1f38356ce1e034ba35ec492", + "check_gpg": true + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm", + "checksum": "sha256:9fea00b14943cac0e3b11ff3a319765168cf78b3cc58fdee7d5fe48246a0aa4d", + "check_gpg": true + }, + { + "name": "python3-babel", + "epoch": 0, + "version": "2.7.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-babel-2.7.0-2.fc31.noarch.rpm", + "checksum": "sha256:e17ef6f7d4f1869ff5813d6f8f2983cd6f5cd23d4a666b7ae19154636e911644", + "check_gpg": true + }, + { + "name": "python3-boto", + "epoch": 0, + "version": "2.49.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-boto-2.49.0-1.fc31.noarch.rpm", + "checksum": "sha256:9b49fdc41ba8f1284c63db29b8bda002a7256a54fdba14c9d3fccd852b8547b1", + "check_gpg": true + }, + { + "name": "python3-cffi", + "epoch": 0, + "version": "1.12.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-cffi-1.12.3-1.fc31.x86_64.rpm", + "checksum": "sha256:7fc8df6b10728f46c3e752c35f6777f17025bef30f61c67f76de2538888a5546", + "check_gpg": true + }, + { + "name": "python3-chardet", + "epoch": 0, + "version": "3.0.4", + "release": "10.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-chardet-3.0.4-10.fc31.noarch.rpm", + "checksum": "sha256:ee6dbb4914a35ee8a816ecde34d29221e3f4622324f6287c328e8ac22ae572ad", + "check_gpg": true + }, + { + "name": "python3-configobj", + "epoch": 0, + "version": "5.0.6", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-configobj-5.0.6-16.fc31.noarch.rpm", + "checksum": "sha256:cdc526097cd2fecb75e44ad11a69b10eb7804f310298c064c3b931515d4f3d5c", + "check_gpg": true + }, + { + "name": "python3-cryptography", + "epoch": 0, + "version": "2.6.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-cryptography-2.6.1-2.fc31.x86_64.rpm", + "checksum": "sha256:2e588b5133dc8cb26ff0226f66eb1be440c6b784ec6fa67a5f0516d8ccaf46f5", + "check_gpg": true + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.8.0", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-3.fc31.noarch.rpm", + "checksum": "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653", + "check_gpg": true + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.8", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dbus-1.2.8-6.fc31.x86_64.rpm", + "checksum": "sha256:35c348bcd91fa114ad459b888131e5e5509259cffce33f22c44f92e57e9e5919", + "check_gpg": true + }, + { + "name": "python3-distro", + "epoch": 0, + "version": "1.4.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-2.fc31.noarch.rpm", + "checksum": "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.9", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-plugins-core-4.0.9-1.fc31.noarch.rpm", + "checksum": "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552", + "check_gpg": true + }, + { + "name": "python3-idna", + "epoch": 0, + "version": "2.8", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-idna-2.8-2.fc31.noarch.rpm", + "checksum": "sha256:8221111dc9a9aa5c68805f153c3fbe5314c8a0f335af29685733b958253dd278", + "check_gpg": true + }, + { + "name": "python3-jinja2", + "epoch": 0, + "version": "2.10.1", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jinja2-2.10.1-2.fc31.noarch.rpm", + "checksum": "sha256:1135e96b6f9ed29e4ed4c0f060876891a244442a503f0b18ab238589da20d464", + "check_gpg": true + }, + { + "name": "python3-jsonpatch", + "epoch": 0, + "version": "1.21", + "release": "8.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jsonpatch-1.21-8.fc31.noarch.rpm", + "checksum": "sha256:e98119ac7a707287668e7a9a74ef2809ee5f555af04f52775367e428e08dbb33", + "check_gpg": true + }, + { + "name": "python3-jsonpointer", + "epoch": 0, + "version": "1.10", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jsonpointer-1.10-16.fc31.noarch.rpm", + "checksum": "sha256:2d9a2e736dd5231df3c5c748ce0ba5a75a409dacfe73f14676781f32d565a7df", + "check_gpg": true + }, + { + "name": "python3-jsonschema", + "epoch": 0, + "version": "3.0.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jsonschema-3.0.2-1.fc31.noarch.rpm", + "checksum": "sha256:047f9e29fcfa56be98ca3f42249f3ccb2a93df99f2438e3983e2064025f0d79d", + "check_gpg": true + }, + { + "name": "python3-jwt", + "epoch": 0, + "version": "1.7.1", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-jwt-1.7.1-3.fc31.noarch.rpm", + "checksum": "sha256:143c50c0663f963c7689c1cec43b81cf1433d5d3b67eb8233ba06506c1b3e095", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.x86_64.rpm", + "checksum": "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libs-3.7.4-5.fc31.x86_64.rpm", + "checksum": "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1", + "check_gpg": true + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libselinux-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:ca6a71888b8d147342012c64533f61a41b26c788bbcd2844a2164ee007fac981", + "check_gpg": true + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libsemanage-2.9-3.fc31.x86_64.rpm", + "checksum": "sha256:a7071aa0068c9dff913c5f0523be3ffdd7f67b8f13e1ee2aa16e486b01aecc1c", + "check_gpg": true + }, + { + "name": "python3-markupsafe", + "epoch": 0, + "version": "1.1.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-markupsafe-1.1.1-2.fc31.x86_64.rpm", + "checksum": "sha256:5d8d55e12443628c7a1915648845663e4aed1863805854de0adadd89772eda2a", + "check_gpg": true + }, + { + "name": "python3-oauthlib", + "epoch": 0, + "version": "3.0.2", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-oauthlib-3.0.2-2.fc31.noarch.rpm", + "checksum": "sha256:f85469c0c19ce86e8fdd0dd5a3e6e5c9b78e3436ae9ce70ba86b2b4a3794f693", + "check_gpg": true + }, + { + "name": "python3-pbr", + "epoch": 0, + "version": "5.1.2", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pbr-5.1.2-4.fc31.noarch.rpm", + "checksum": "sha256:d90abd2b8eca279a2120bf7836503745d36432630258925292ee7dacfabe4c92", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "name": "python3-ply", + "epoch": 0, + "version": "3.11", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-ply-3.11-3.fc31.noarch.rpm", + "checksum": "sha256:1b65944efe48ba0cca34011891480a1db29a7e95dad058376bfca34d68fb0791", + "check_gpg": true + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-policycoreutils-2.9-5.fc31.noarch.rpm", + "checksum": "sha256:5a7e957102a23c9924398fe45f5cdec66edcd10adcad7130d6ebf02c2706ad49", + "check_gpg": true + }, + { + "name": "python3-prettytable", + "epoch": 0, + "version": "0.7.2", + "release": "18.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-prettytable-0.7.2-18.fc31.noarch.rpm", + "checksum": "sha256:682af90a049fa78429d5ebd194700609f762e59ceb6c4ca28b17e7f4fd1683aa", + "check_gpg": true + }, + { + "name": "python3-psutil", + "epoch": 0, + "version": "5.6.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-psutil-5.6.3-2.fc31.x86_64.rpm", + "checksum": "sha256:b703a38c0dea8bcd2be7bfb83d0f71ee2ee15a140a25998d6837261331140919", + "check_gpg": true + }, + { + "name": "python3-pyasn1", + "epoch": 0, + "version": "0.4.4", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyasn1-0.4.4-5.fc31.noarch.rpm", + "checksum": "sha256:b49419bed59686efde6fc04953c2ab64a46c2bae46227a872bb3a823538c636d", + "check_gpg": true + }, + { + "name": "python3-pycparser", + "epoch": 0, + "version": "2.14", + "release": "20.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pycparser-2.14-20.fc31.noarch.rpm", + "checksum": "sha256:6ed7f318c5e93b59254d7b7652131f33db713eeb61f52413f21e533069ed24bf", + "check_gpg": true + }, + { + "name": "python3-pyrsistent", + "epoch": 0, + "version": "0.15.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyrsistent-0.15.4-1.fc31.x86_64.rpm", + "checksum": "sha256:fa979526906cc9182ebdb6e50c9d09deba8518f69750495fec4267a425c8f783", + "check_gpg": true + }, + { + "name": "python3-pyserial", + "epoch": 0, + "version": "3.4", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyserial-3.4-3.fc31.noarch.rpm", + "checksum": "sha256:32cc578c8da626a8c1a5316a59d482967a32547be6c077f73fb90e11fb0f1e6a", + "check_gpg": true + }, + { + "name": "python3-pysocks", + "epoch": 0, + "version": "1.7.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pysocks-1.7.0-2.fc31.noarch.rpm", + "checksum": "sha256:d54f02fc39b3e87253808f665918d26ffe901f1228e25121c908661b47ba266b", + "check_gpg": true + }, + { + "name": "python3-pytz", + "epoch": 0, + "version": "2019.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pytz-2019.2-1.fc31.noarch.rpm", + "checksum": "sha256:6c6f1152899318bdc0500cfb0b0cdbbc19ba0e017b5888ece1358250caa2629f", + "check_gpg": true + }, + { + "name": "python3-pyyaml", + "epoch": 0, + "version": "5.1.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyyaml-5.1.2-1.fc31.x86_64.rpm", + "checksum": "sha256:a6bab7030d3296875cb0cad2c30fb18042dab8ae070c9c6f97457bb0a5cc6316", + "check_gpg": true + }, + { + "name": "python3-requests", + "epoch": 0, + "version": "2.22.0", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-requests-2.22.0-3.fc31.noarch.rpm", + "checksum": "sha256:1e049e86c5dd5c4d6737d47dd194d553ffbd65c81a4077cf6e1029a0fde80fb5", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-rpm-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444", + "check_gpg": true + }, + { + "name": "python3-rsa", + "epoch": 0, + "version": "3.4.2", + "release": "10.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-rsa-3.4.2-10.fc31.noarch.rpm", + "checksum": "sha256:19a9152e410c8fdd62220e79dcf4dc3d143ca04c75a09c332066ad8cc94b972e", + "check_gpg": true + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setools-4.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:aacf84989a0fe55366f6d37ddd1753b8c06e5640e9334805bf468777824a3ac0", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.12.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-six-1.12.0-2.fc31.noarch.rpm", + "checksum": "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-unbound-1.9.3-1.fc31.x86_64.rpm", + "checksum": "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7", + "check_gpg": true + }, + { + "name": "python3-urllib3", + "epoch": 0, + "version": "1.25.3", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-urllib3-1.25.3-4.fc31.noarch.rpm", + "checksum": "sha256:78b600621e00f4a0acc8f58de056ae9393ce4e1cded56837b4e557c1bc84b06b", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.x86_64.rpm", + "checksum": "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/readline-8.0-3.fc31.x86_64.rpm", + "checksum": "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc", + "check_gpg": true + }, + { + "name": "rest", + "epoch": 0, + "version": "0.8.1", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rest-0.8.1-6.fc31.x86_64.rpm", + "checksum": "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e", + "check_gpg": true + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rootfiles-8.1-25.fc31.noarch.rpm", + "checksum": "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:f50957375c79be57f391625b97d6ea74505e05f2edc6b9bc6768d5e3ad6ef8f8", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb", + "check_gpg": true + }, + { + "name": "rsync", + "epoch": 0, + "version": "3.1.3", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rsync-3.1.3-9.fc31.x86_64.rpm", + "checksum": "sha256:167eef09957e5abad6b99d22d9204021ae777b60320cd37d8f934cd9ac2da92a", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sed-4.5-4.fc31.x86_64.rpm", + "checksum": "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.4", + "release": "37.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/selinux-policy-3.14.4-37.fc31.noarch.rpm", + "checksum": "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.4", + "release": "37.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.4-37.fc31.noarch.rpm", + "checksum": "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.3", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm", + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "16.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shadow-utils-4.6-16.fc31.x86_64.rpm", + "checksum": "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.14", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shared-mime-info-1.14-1.fc31.x86_64.rpm", + "checksum": "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.29.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.x86_64.rpm", + "checksum": "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2", + "check_gpg": true + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-client-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:687d00eb0b77446dbd78aaa0f4f99cc080c677930ad783120483614255264a3d", + "check_gpg": true + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-common-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:6b694ee239a2e3f38c401e975de392e3731ad8b18be5a3249ea02f19e87cb5cb", + "check_gpg": true + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-kcm-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:93161df6d62fe654c7cdba9ae36343d2549b437b27eac816a80f8d7c32a47162", + "check_gpg": true + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-nfs-idmap-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:4f9bbd08f6019b3482342d616d6b04e6481924ea34fbfe8d30ef63402a92e9b1", + "check_gpg": true + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.8.28", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sudo-1.8.28-1.fc31.x86_64.rpm", + "checksum": "sha256:704ebfc50ace9417ed28f4530d778359a4c2f95d524c2e99346472245e30b548", + "check_gpg": true + }, + { + "name": "syslinux", + "epoch": 0, + "version": "6.04", + "release": "0.12.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/syslinux-6.04-0.12.fc31.x86_64.rpm", + "checksum": "sha256:6771e14a2ea70c74e800f6122df6c056a7e2c3c16d74b9b5f96ddfd482e38326", + "check_gpg": true + }, + { + "name": "syslinux-extlinux", + "epoch": 0, + "version": "6.04", + "release": "0.12.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/syslinux-extlinux-6.04-0.12.fc31.x86_64.rpm", + "checksum": "sha256:486f2fb09621afabdebfd0cd897c9a77d93bb21ed41dc0a18b600d48654fed64", + "check_gpg": true + }, + { + "name": "syslinux-extlinux-nonlinux", + "epoch": 0, + "version": "6.04", + "release": "0.12.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/syslinux-extlinux-nonlinux-6.04-0.12.fc31.noarch.rpm", + "checksum": "sha256:1ffe518fc86251b33a58280984e9d06c025190a89a2d60c50d818eaea7bca583", + "check_gpg": true + }, + { + "name": "syslinux-nonlinux", + "epoch": 0, + "version": "6.04", + "release": "0.12.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/syslinux-nonlinux-6.04-0.12.fc31.noarch.rpm", + "checksum": "sha256:fced380b3f7270b186dd2b67aef7c9f5614617e71fcea61fd903864a20a4924e", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5", + "check_gpg": true + }, + { + "name": "systemd-bootchart", + "epoch": 0, + "version": "233", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-bootchart-233-5.fc31.x86_64.rpm", + "checksum": "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm", + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-udev-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tar-1.32-2.fc31.x86_64.rpm", + "checksum": "sha256:9975496f29601a1c2cdb89e63aac698fdd8283ba3a52a9d91ead9473a0e064c8", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tss2-1331-2.fc31.x86_64.rpm", + "checksum": "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm", + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/unbound-libs-1.9.3-1.fc31.x86_64.rpm", + "checksum": "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/util-linux-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f", + "check_gpg": true + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.1.2102", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/v/vim-minimal-8.1.2102-1.fc31.x86_64.rpm", + "checksum": "sha256:d2c819a7e607a9e22f55047ed03d064e4b0f125ad4fb20532c543a6d8af8bfa5", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "15.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/which-2.21-15.fc31.x86_64.rpm", + "checksum": "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm", + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.1.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xfsprogs-5.1.0-2.fc31.x86_64.rpm", + "checksum": "sha256:b3c4cfdf820225133f4e9e600de3300ef0c7bac34139433505dd4482da52be22", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.27", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm", + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-5.2.4-6.fc31.x86_64.rpm", + "checksum": "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-libs-5.2.4-6.fc31.x86_64.rpm", + "checksum": "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431", + "check_gpg": true + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/y/yum-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.2", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.x86_64.rpm", + "checksum": "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "19.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zlib-1.2.11-19.fc31.x86_64.rpm", + "checksum": "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9", + "check_gpg": true + } + ], + "checksums": { + "0": "sha256:e39c033883bf8520576de0b0875b5c8cfc40d04f1a0aaf01f1edf57267807580" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac ro biosdevname=0 net.ifnames=0 debug" + }, + "bootloader": "grub", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "initrd": "/boot/initramfs-5.3.7-301.fc31.x86_64.img", + "linux": "/boot/vmlinuz-5.3.7-301.fc31.x86_64", + "options": "$kernelopts", + "title": "Fedora (5.3.7-301.fc31.x86_64) 31 (Thirty One)", + "version": "5.3.7-301.fc31.x86_64" + } + ], + "fstab": [ + [ + "UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "/", + "ext4", + "defaults", + "1", + "1" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:992:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "group1:x:1030:user2", + "group2:x:1050:", + "input:x:997:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "polkitd:x:994:", + "render:x:996:", + "root:x:0:", + "ssh_keys:x:998:", + "sshd:x:74:", + "sys:x:3:", + "systemd-coredump:x:995:", + "systemd-journal:x:190:", + "systemd-network:x:192:", + "systemd-resolve:x:193:", + "systemd-timesync:x:993:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:999:", + "user1:x:1000:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "qcow2", + "os-release": { + "ANSI_COLOR": "0;34", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:fedoraproject:fedora:31", + "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f31/system-administrators-guide/", + "HOME_URL": "https://fedoraproject.org/", + "ID": "fedora", + "LOGO": "fedora-logo-icon", + "NAME": "Fedora", + "PLATFORM_ID": "platform:f31", + "PRETTY_NAME": "Fedora 31 (Cloud Edition)", + "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy", + "REDHAT_BUGZILLA_PRODUCT": "Fedora", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "31", + "REDHAT_SUPPORT_PRODUCT": "Fedora", + "REDHAT_SUPPORT_PRODUCT_VERSION": "31", + "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help", + "VARIANT": "Cloud Edition", + "VARIANT_ID": "cloud", + "VERSION": "31 (Cloud Edition)", + "VERSION_CODENAME": "", + "VERSION_ID": "31" + }, + "packages": [ + "NetworkManager-1.20.4-1.fc31.x86_64", + "NetworkManager-libnm-1.20.4-1.fc31.x86_64", + "abattis-cantarell-fonts-0.111-3.fc31.noarch", + "acl-2.2.53-4.fc31.x86_64", + "adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch", + "adwaita-cursor-theme-3.34.0-1.fc31.noarch", + "adwaita-icon-theme-3.34.0-1.fc31.noarch", + "alternatives-1.11-5.fc31.x86_64", + "at-spi2-atk-2.34.1-1.fc31.x86_64", + "at-spi2-core-2.34.0-1.fc31.x86_64", + "atk-2.34.1-1.fc31.x86_64", + "audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64", + "audit-libs-3.0-0.12.20190507gitf58ec40.fc31.x86_64", + "avahi-libs-0.7-20.fc31.x86_64", + "basesystem-11-8.fc31.noarch", + "bash-5.0.7-3.fc31.x86_64", + "brotli-1.0.7-6.fc31.x86_64", + "bzip2-1.0.8-1.fc31.x86_64", + "bzip2-libs-1.0.8-1.fc31.x86_64", + "c-ares-1.15.0-4.fc31.x86_64", + "ca-certificates-2019.2.32-3.fc31.noarch", + "cairo-1.16.0-6.fc31.x86_64", + "cairo-gobject-1.16.0-6.fc31.x86_64", + "checkpolicy-2.9-2.fc31.x86_64", + "chrony-3.5-4.fc31.x86_64", + "cloud-init-17.1-11.fc31.noarch", + "cloud-utils-growpart-0.31-3.fc31.noarch", + "colord-libs-1.4.4-2.fc31.x86_64", + "coreutils-8.31-4.fc31.x86_64", + "coreutils-common-8.31-4.fc31.x86_64", + "cpio-2.12-12.fc31.x86_64", + "cracklib-2.9.6-21.fc31.x86_64", + "cracklib-dicts-2.9.6-21.fc31.x86_64", + "crypto-policies-20190816-4.gitbb9bf99.fc31.noarch", + "cryptsetup-libs-2.2.1-1.fc31.x86_64", + "cups-libs-2.2.12-2.fc31.x86_64", + "curl-7.66.0-1.fc31.x86_64", + "cyrus-sasl-lib-2.1.27-2.fc31.x86_64", + "dbus-1.12.16-3.fc31.x86_64", + "dbus-broker-21-6.fc31.x86_64", + "dbus-common-1.12.16-3.fc31.noarch", + "dbus-libs-1.12.16-3.fc31.x86_64", + "dconf-0.34.0-1.fc31.x86_64", + "dejavu-fonts-common-2.37-2.fc31.noarch", + "dejavu-sans-fonts-2.37-2.fc31.noarch", + "deltarpm-3.6.2-2.fc31.x86_64", + "device-mapper-1.02.163-2.fc31.x86_64", + "device-mapper-libs-1.02.163-2.fc31.x86_64", + "dhcp-client-4.4.1-15.fc31.x86_64", + "dhcp-common-4.4.1-15.fc31.noarch", + "diffutils-3.7-3.fc31.x86_64", + "dnf-4.2.9-5.fc31.noarch", + "dnf-data-4.2.9-5.fc31.noarch", + "dnf-plugins-core-4.0.9-1.fc31.noarch", + "dracut-049-27.git20181204.fc31.1.x86_64", + "dracut-config-generic-049-27.git20181204.fc31.1.x86_64", + "e2fsprogs-1.45.3-1.fc31.x86_64", + "e2fsprogs-libs-1.45.3-1.fc31.x86_64", + "elfutils-default-yama-scope-0.177-1.fc31.noarch", + "elfutils-libelf-0.177-1.fc31.x86_64", + "elfutils-libs-0.177-1.fc31.x86_64", + "expat-2.2.8-1.fc31.x86_64", + "fedora-gpg-keys-31-1.noarch", + "fedora-release-cloud-31-1.noarch", + "fedora-release-common-31-1.noarch", + "fedora-repos-31-1.noarch", + "file-5.37-3.fc31.x86_64", + "file-libs-5.37-3.fc31.x86_64", + "filesystem-3.12-2.fc31.x86_64", + "findutils-4.6.0-24.fc31.x86_64", + "fipscheck-1.5.0-7.fc31.x86_64", + "fipscheck-lib-1.5.0-7.fc31.x86_64", + "fontconfig-2.13.92-3.fc31.x86_64", + "fontpackages-filesystem-1.44-25.fc31.noarch", + "freetype-2.10.0-3.fc31.x86_64", + "fribidi-1.0.5-4.fc31.x86_64", + "fuse-libs-2.9.9-8.fc31.x86_64", + "gawk-5.0.1-5.fc31.x86_64", + "gcr-3.33.4-1.fc31.x86_64", + "gcr-base-3.33.4-1.fc31.x86_64", + "gdbm-libs-1.18.1-1.fc31.x86_64", + "gdk-pixbuf2-2.40.0-1.fc31.x86_64", + "gdk-pixbuf2-modules-2.40.0-1.fc31.x86_64", + "geolite2-city-20190806-1.fc31.noarch", + "geolite2-country-20190806-1.fc31.noarch", + "gettext-0.20.1-2.fc31.x86_64", + "gettext-libs-0.20.1-2.fc31.x86_64", + "git-core-2.23.0-1.fc31.x86_64", + "glib-networking-2.62.1-1.fc31.x86_64", + "glib2-2.62.1-1.fc31.x86_64", + "glibc-2.30-5.fc31.x86_64", + "glibc-common-2.30-5.fc31.x86_64", + "glibc-langpack-en-2.30-5.fc31.x86_64", + "gmp-6.1.2-10.fc31.x86_64", + "gnome-keyring-3.34.0-1.fc31.x86_64", + "gnupg2-2.2.17-2.fc31.x86_64", + "gnupg2-smime-2.2.17-2.fc31.x86_64", + "gnutls-3.6.10-1.fc31.x86_64", + "gpg-pubkey-3c3359c4-5c6ae44d", + "gpgme-1.13.1-3.fc31.x86_64", + "graphite2-1.3.13-1.fc31.x86_64", + "grep-3.3-3.fc31.x86_64", + "groff-base-1.22.3-20.fc31.x86_64", + "grub2-common-2.02-100.fc31.noarch", + "grub2-pc-2.02-100.fc31.x86_64", + "grub2-pc-modules-2.02-100.fc31.noarch", + "grub2-tools-2.02-100.fc31.x86_64", + "grub2-tools-extra-2.02-100.fc31.x86_64", + "grub2-tools-minimal-2.02-100.fc31.x86_64", + "grubby-8.40-36.fc31.x86_64", + "gsettings-desktop-schemas-3.34.0-1.fc31.x86_64", + "gtk-update-icon-cache-3.24.12-3.fc31.x86_64", + "gtk3-3.24.12-3.fc31.x86_64", + "gzip-1.10-1.fc31.x86_64", + "harfbuzz-2.6.1-2.fc31.x86_64", + "heat-cfntools-1.4.2-9.fc31.noarch", + "hicolor-icon-theme-0.17-7.fc31.noarch", + "hostname-3.20-9.fc31.x86_64", + "ima-evm-utils-1.2.1-2.fc31.x86_64", + "initscripts-10.02-2.fc31.x86_64", + "ipcalc-0.2.5-3.fc31.x86_64", + "iproute-5.3.0-1.fc31.x86_64", + "iproute-tc-5.3.0-1.fc31.x86_64", + "iptables-libs-1.8.3-5.fc31.x86_64", + "iputils-20190515-3.fc31.x86_64", + "jansson-2.12-4.fc31.x86_64", + "jasper-libs-2.0.14-9.fc31.x86_64", + "jbigkit-libs-2.1-17.fc31.x86_64", + "json-c-0.13.1-6.fc31.x86_64", + "json-glib-1.4.4-3.fc31.x86_64", + "kbd-2.0.4-14.fc31.x86_64", + "kbd-legacy-2.0.4-14.fc31.noarch", + "kbd-misc-2.0.4-14.fc31.noarch", + "kernel-core-5.3.7-301.fc31.x86_64", + "keyutils-libs-1.6-3.fc31.x86_64", + "kmod-26-4.fc31.x86_64", + "kmod-libs-26-4.fc31.x86_64", + "kpartx-0.8.0-3.fc31.x86_64", + "krb5-libs-1.17-45.fc31.x86_64", + "langpacks-core-en-2.0-7.fc31.noarch", + "langpacks-en-2.0-7.fc31.noarch", + "lcms2-2.9-6.fc31.x86_64", + "less-551-2.fc31.x86_64", + "libX11-1.6.8-3.fc31.x86_64", + "libX11-common-1.6.8-3.fc31.noarch", + "libXau-1.0.9-2.fc31.x86_64", + "libXcomposite-0.4.4-17.fc31.x86_64", + "libXcursor-1.1.15-6.fc31.x86_64", + "libXdamage-1.1.4-17.fc31.x86_64", + "libXext-1.3.4-2.fc31.x86_64", + "libXfixes-5.0.3-10.fc31.x86_64", + "libXft-2.3.3-2.fc31.x86_64", + "libXi-1.7.10-2.fc31.x86_64", + "libXinerama-1.1.4-4.fc31.x86_64", + "libXrandr-1.5.2-2.fc31.x86_64", + "libXrender-0.9.10-10.fc31.x86_64", + "libXtst-1.2.3-10.fc31.x86_64", + "libacl-2.2.53-4.fc31.x86_64", + "libarchive-3.4.0-1.fc31.x86_64", + "libargon2-20171227-3.fc31.x86_64", + "libassuan-2.5.3-2.fc31.x86_64", + "libattr-2.4.48-7.fc31.x86_64", + "libbasicobjects-0.1.1-43.fc31.x86_64", + "libblkid-2.34-3.fc31.x86_64", + "libcap-2.26-6.fc31.x86_64", + "libcap-ng-0.7.9-8.fc31.x86_64", + "libcollection-0.7.0-43.fc31.x86_64", + "libcom_err-1.45.3-1.fc31.x86_64", + "libcomps-0.1.11-3.fc31.x86_64", + "libcroco-0.6.13-2.fc31.x86_64", + "libcurl-7.66.0-1.fc31.x86_64", + "libdatrie-0.2.9-10.fc31.x86_64", + "libdb-5.3.28-38.fc31.x86_64", + "libdb-utils-5.3.28-38.fc31.x86_64", + "libdhash-0.5.0-43.fc31.x86_64", + "libdnf-0.35.3-6.fc31.x86_64", + "libedit-3.1-28.20190324cvs.fc31.x86_64", + "libepoxy-1.5.3-4.fc31.x86_64", + "libevent-2.1.8-7.fc31.x86_64", + "libfdisk-2.34-3.fc31.x86_64", + "libffi-3.1-23.fc31.x86_64", + "libgcc-9.2.1-1.fc31.x86_64", + "libgcrypt-1.8.5-1.fc31.x86_64", + "libgomp-9.2.1-1.fc31.x86_64", + "libgpg-error-1.36-2.fc31.x86_64", + "libgusb-0.3.0-5.fc31.x86_64", + "libidn2-2.2.0-2.fc31.x86_64", + "libini_config-1.3.1-43.fc31.x86_64", + "libjpeg-turbo-2.0.2-4.fc31.x86_64", + "libkcapi-1.1.5-1.fc31.x86_64", + "libkcapi-hmaccalc-1.1.5-1.fc31.x86_64", + "libksba-1.3.5-10.fc31.x86_64", + "libldb-2.0.7-1.fc31.x86_64", + "libmaxminddb-1.2.0-8.fc31.x86_64", + "libmetalink-0.1.3-9.fc31.x86_64", + "libmnl-1.0.4-10.fc31.x86_64", + "libmodman-2.0.1-20.fc31.x86_64", + "libmodulemd1-1.8.15-3.fc31.x86_64", + "libmount-2.34-3.fc31.x86_64", + "libndp-1.7-4.fc31.x86_64", + "libnfsidmap-2.4.1-1.rc1.fc31.x86_64", + "libnghttp2-1.39.2-1.fc31.x86_64", + "libnl3-3.5.0-1.fc31.x86_64", + "libnsl2-1.2.0-5.20180605git4a062cf.fc31.x86_64", + "libpath_utils-0.2.1-43.fc31.x86_64", + "libpcap-1.9.0-4.fc31.x86_64", + "libpipeline-1.5.1-3.fc31.x86_64", + "libpng-1.6.37-2.fc31.x86_64", + "libproxy-0.4.15-14.fc31.x86_64", + "libpsl-0.21.0-2.fc31.x86_64", + "libpwquality-1.4.1-1.fc31.x86_64", + "libref_array-0.1.5-43.fc31.x86_64", + "librepo-1.10.5-1.fc31.x86_64", + "libreport-filesystem-2.10.1-2.fc31.noarch", + "libseccomp-2.4.1-1.fc31.x86_64", + "libsecret-0.19.1-1.fc31.x86_64", + "libselinux-2.9-5.fc31.x86_64", + "libselinux-utils-2.9-5.fc31.x86_64", + "libsemanage-2.9-3.fc31.x86_64", + "libsepol-2.9-2.fc31.x86_64", + "libsigsegv-2.11-8.fc31.x86_64", + "libsmartcols-2.34-3.fc31.x86_64", + "libsolv-0.7.5-3.fc31.x86_64", + "libsoup-2.68.2-1.fc31.x86_64", + "libss-1.45.3-1.fc31.x86_64", + "libssh-0.9.0-6.fc31.x86_64", + "libssh-config-0.9.0-6.fc31.noarch", + "libsss_autofs-2.2.2-1.fc31.x86_64", + "libsss_certmap-2.2.2-1.fc31.x86_64", + "libsss_idmap-2.2.2-1.fc31.x86_64", + "libsss_nss_idmap-2.2.2-1.fc31.x86_64", + "libsss_sudo-2.2.2-1.fc31.x86_64", + "libstdc++-9.2.1-1.fc31.x86_64", + "libtalloc-2.3.0-1.fc31.x86_64", + "libtasn1-4.14-2.fc31.x86_64", + "libtdb-1.4.2-1.fc31.x86_64", + "libtevent-0.10.1-1.fc31.x86_64", + "libtextstyle-0.20.1-2.fc31.x86_64", + "libthai-0.1.28-3.fc31.x86_64", + "libtiff-4.0.10-6.fc31.x86_64", + "libtirpc-1.1.4-2.rc3.fc31.x86_64", + "libunistring-0.9.10-6.fc31.x86_64", + "libusbx-1.0.22-4.fc31.x86_64", + "libuser-0.62-21.fc31.x86_64", + "libutempter-1.1.6-17.fc31.x86_64", + "libuuid-2.34-3.fc31.x86_64", + "libverto-0.3.0-8.fc31.x86_64", + "libwayland-client-1.17.0-2.fc31.x86_64", + "libwayland-cursor-1.17.0-2.fc31.x86_64", + "libwayland-egl-1.17.0-2.fc31.x86_64", + "libxcb-1.13.1-3.fc31.x86_64", + "libxcrypt-4.4.10-1.fc31.x86_64", + "libxcrypt-compat-4.4.10-1.fc31.x86_64", + "libxkbcommon-0.8.4-2.fc31.x86_64", + "libxml2-2.9.9-3.fc31.x86_64", + "libyaml-0.2.2-2.fc31.x86_64", + "libzstd-1.4.2-1.fc31.x86_64", + "linux-atm-libs-2.5.1-25.fc31.x86_64", + "linux-firmware-20190923-102.fc31.noarch", + "linux-firmware-whence-20190923-102.fc31.noarch", + "lmdb-libs-0.9.23-3.fc31.x86_64", + "lua-libs-5.3.5-6.fc31.x86_64", + "lz4-libs-1.9.1-1.fc31.x86_64", + "man-db-2.8.4-5.fc31.x86_64", + "mkpasswd-5.5.2-1.fc31.x86_64", + "mozjs60-60.9.0-3.fc31.x86_64", + "mpfr-3.1.6-5.fc31.x86_64", + "mtools-4.0.23-1.fc31.x86_64", + "ncurses-6.1-12.20190803.fc31.x86_64", + "ncurses-base-6.1-12.20190803.fc31.noarch", + "ncurses-libs-6.1-12.20190803.fc31.x86_64", + "net-tools-2.0-0.55.20160912git.fc31.x86_64", + "nettle-3.5.1-3.fc31.x86_64", + "npth-1.6-3.fc31.x86_64", + "openldap-2.4.47-3.fc31.x86_64", + "openssh-8.0p1-8.fc31.1.x86_64", + "openssh-clients-8.0p1-8.fc31.1.x86_64", + "openssh-server-8.0p1-8.fc31.1.x86_64", + "openssl-1.1.1d-2.fc31.x86_64", + "openssl-libs-1.1.1d-2.fc31.x86_64", + "openssl-pkcs11-0.4.10-2.fc31.x86_64", + "os-prober-1.77-3.fc31.x86_64", + "p11-kit-0.23.16.1-2.fc31.x86_64", + "p11-kit-trust-0.23.16.1-2.fc31.x86_64", + "pam-1.3.1-18.fc31.x86_64", + "pango-1.44.6-1.fc31.x86_64", + "parted-3.2.153-1.fc31.x86_64", + "passwd-0.80-6.fc31.x86_64", + "pcre-8.43-2.fc31.1.x86_64", + "pcre2-10.33-14.fc31.x86_64", + "pigz-2.4-5.fc31.x86_64", + "pinentry-1.1.0-6.fc31.x86_64", + "pixman-0.38.4-1.fc31.x86_64", + "policycoreutils-2.9-5.fc31.x86_64", + "polkit-0.116-4.fc31.x86_64", + "polkit-libs-0.116-4.fc31.x86_64", + "polkit-pkla-compat-0.1-15.fc31.x86_64", + "popt-1.16-18.fc31.x86_64", + "procps-ng-3.3.15-6.fc31.x86_64", + "publicsuffix-list-dafsa-20190417-2.fc31.noarch", + "python-pip-wheel-19.1.1-4.fc31.noarch", + "python-setuptools-wheel-41.2.0-1.fc31.noarch", + "python-unversioned-command-3.7.4-5.fc31.noarch", + "python3-3.7.4-5.fc31.x86_64", + "python3-asn1crypto-0.24.0-7.fc31.noarch", + "python3-attrs-19.1.0-2.fc31.noarch", + "python3-audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64", + "python3-babel-2.7.0-2.fc31.noarch", + "python3-boto-2.49.0-1.fc31.noarch", + "python3-cffi-1.12.3-1.fc31.x86_64", + "python3-chardet-3.0.4-10.fc31.noarch", + "python3-configobj-5.0.6-16.fc31.noarch", + "python3-cryptography-2.6.1-2.fc31.x86_64", + "python3-dateutil-2.8.0-3.fc31.noarch", + "python3-dbus-1.2.8-6.fc31.x86_64", + "python3-distro-1.4.0-2.fc31.noarch", + "python3-dnf-4.2.9-5.fc31.noarch", + "python3-dnf-plugins-core-4.0.9-1.fc31.noarch", + "python3-gpg-1.13.1-3.fc31.x86_64", + "python3-hawkey-0.35.3-6.fc31.x86_64", + "python3-idna-2.8-2.fc31.noarch", + "python3-jinja2-2.10.1-2.fc31.noarch", + "python3-jsonpatch-1.21-8.fc31.noarch", + "python3-jsonpointer-1.10-16.fc31.noarch", + "python3-jsonschema-3.0.2-1.fc31.noarch", + "python3-jwt-1.7.1-3.fc31.noarch", + "python3-libcomps-0.1.11-3.fc31.x86_64", + "python3-libdnf-0.35.3-6.fc31.x86_64", + "python3-libs-3.7.4-5.fc31.x86_64", + "python3-libselinux-2.9-5.fc31.x86_64", + "python3-libsemanage-2.9-3.fc31.x86_64", + "python3-markupsafe-1.1.1-2.fc31.x86_64", + "python3-oauthlib-3.0.2-2.fc31.noarch", + "python3-pbr-5.1.2-4.fc31.noarch", + "python3-pip-19.1.1-4.fc31.noarch", + "python3-ply-3.11-3.fc31.noarch", + "python3-policycoreutils-2.9-5.fc31.noarch", + "python3-prettytable-0.7.2-18.fc31.noarch", + "python3-psutil-5.6.3-2.fc31.x86_64", + "python3-pyasn1-0.4.4-5.fc31.noarch", + "python3-pycparser-2.14-20.fc31.noarch", + "python3-pyrsistent-0.15.4-1.fc31.x86_64", + "python3-pyserial-3.4-3.fc31.noarch", + "python3-pysocks-1.7.0-2.fc31.noarch", + "python3-pytz-2019.2-1.fc31.noarch", + "python3-pyyaml-5.1.2-1.fc31.x86_64", + "python3-requests-2.22.0-3.fc31.noarch", + "python3-rpm-4.15.0-6.fc31.x86_64", + "python3-rsa-3.4.2-10.fc31.noarch", + "python3-setools-4.2.2-1.fc31.x86_64", + "python3-setuptools-41.2.0-1.fc31.noarch", + "python3-six-1.12.0-2.fc31.noarch", + "python3-unbound-1.9.3-1.fc31.x86_64", + "python3-urllib3-1.25.3-4.fc31.noarch", + "qrencode-libs-4.0.2-4.fc31.x86_64", + "readline-8.0-3.fc31.x86_64", + "rest-0.8.1-6.fc31.x86_64", + "rootfiles-8.1-25.fc31.noarch", + "rpm-4.15.0-6.fc31.x86_64", + "rpm-build-libs-4.15.0-6.fc31.x86_64", + "rpm-libs-4.15.0-6.fc31.x86_64", + "rpm-plugin-selinux-4.15.0-6.fc31.x86_64", + "rpm-plugin-systemd-inhibit-4.15.0-6.fc31.x86_64", + "rpm-sign-libs-4.15.0-6.fc31.x86_64", + "rsync-3.1.3-9.fc31.x86_64", + "sed-4.5-4.fc31.x86_64", + "selinux-policy-3.14.4-37.fc31.noarch", + "selinux-policy-targeted-3.14.4-37.fc31.noarch", + "setup-2.13.3-2.fc31.noarch", + "shadow-utils-4.6-16.fc31.x86_64", + "shared-mime-info-1.14-1.fc31.x86_64", + "sqlite-libs-3.29.0-2.fc31.x86_64", + "sssd-client-2.2.2-1.fc31.x86_64", + "sssd-common-2.2.2-1.fc31.x86_64", + "sssd-kcm-2.2.2-1.fc31.x86_64", + "sssd-nfs-idmap-2.2.2-1.fc31.x86_64", + "sudo-1.8.28-1.fc31.x86_64", + "syslinux-6.04-0.12.fc31.x86_64", + "syslinux-extlinux-6.04-0.12.fc31.x86_64", + "syslinux-extlinux-nonlinux-6.04-0.12.fc31.noarch", + "syslinux-nonlinux-6.04-0.12.fc31.noarch", + "systemd-243-4.gitef67743.fc31.x86_64", + "systemd-bootchart-233-5.fc31.x86_64", + "systemd-libs-243-4.gitef67743.fc31.x86_64", + "systemd-pam-243-4.gitef67743.fc31.x86_64", + "systemd-rpm-macros-243-4.gitef67743.fc31.noarch", + "systemd-udev-243-4.gitef67743.fc31.x86_64", + "tar-1.32-2.fc31.x86_64", + "trousers-0.3.13-13.fc31.x86_64", + "trousers-lib-0.3.13-13.fc31.x86_64", + "tss2-1331-2.fc31.x86_64", + "tzdata-2019c-1.fc31.noarch", + "unbound-libs-1.9.3-1.fc31.x86_64", + "util-linux-2.34-3.fc31.x86_64", + "vim-minimal-8.1.2102-1.fc31.x86_64", + "which-2.21-15.fc31.x86_64", + "whois-nls-5.5.2-1.fc31.noarch", + "xfsprogs-5.1.0-2.fc31.x86_64", + "xkeyboard-config-2.27-2.fc31.noarch", + "xz-5.2.4-6.fc31.x86_64", + "xz-libs-5.2.4-6.fc31.x86_64", + "yum-4.2.9-5.fc31.noarch", + "zchunk-libs-1.1.2-3.fc31.x86_64", + "zlib-1.2.11-19.fc31.x86_64" + ], + "partition-table": "dos", + "partition-table-id": "0x14fc63d2", + "partitions": [ + { + "bootable": true, + "fstype": "ext4", + "label": null, + "partuuid": "14fc63d2-01", + "size": 2146435072, + "start": 1048576, + "type": "83", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:995:992::/var/lib/chrony:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "polkitd:x:997:994:User for polkitd:/:/sbin/nologin", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:998:995:systemd Core Dumper:/:/sbin/nologin", + "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "systemd-timesync:x:996:993:systemd Time Synchronization:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:999:999:Unbound DNS resolver:/etc/unbound:/sbin/nologin", + "user1:x:1000:1000::/home/user1:/bin/bash", + "user2:x:1020:1050:description 2:/home/home2:/bin/sh" + ], + "rpm-verify": { + "changed": { + "/boot/System.map-5.3.7-301.fc31.x86_64": ".M.......", + "/boot/initramfs-5.3.7-301.fc31.x86_64.img": ".M.......", + "/etc/chrony.conf": "S.5....T.", + "/etc/udev/hwdb.bin": ".M.......", + "/proc": ".M.......", + "/run/cryptsetup": ".M.......", + "/sys": ".M.......", + "/var/log/btmp": ".M.......", + "/var/log/journal": ".M....G..", + "/var/log/lastlog": ".M....G.." + }, + "missing": [] + }, + "services-disabled": [ + "arp-ethers.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "console-getty.service", + "debug-shell.service", + "exit.target", + "fstrim.timer", + "halt.target", + "kexec.target", + "loadmodules.service", + "nis-domainname.service", + "poweroff.target", + "proc-sys-fs-binfmt_misc.mount", + "rdisc.service", + "remote-cryptsetup.target", + "runlevel0.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-boot-check-no-failures.service", + "systemd-bootchart.service", + "systemd-network-generator.service", + "systemd-networkd-wait-online.service", + "systemd-networkd.service", + "systemd-networkd.socket", + "systemd-pstore.service", + "systemd-resolved.service", + "systemd-time-wait-sync.service", + "systemd-timesyncd.service", + "tcsd.service" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "cloud-init.service", + "ctrl-alt-del.target", + "dbus-broker.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dbus.service", + "dbus.socket", + "dnf-makecache.timer", + "getty@.service", + "import-state.service", + "messagebus.service", + "reboot.target", + "remote-fs.target", + "runlevel6.target", + "selinux-autorelabel-mark.service", + "sshd.service", + "sshd.socket", + "sssd-kcm.socket", + "sssd.service", + "unbound-anchor.timer" + ], + "timezone": "London" + } +} \ No newline at end of file diff --git a/test/cases/fedora_31-x86_64-vhd-boot.json b/test/cases/fedora_31-x86_64-vhd-boot.json new file mode 100644 index 0000000..ce7c10f --- /dev/null +++ b/test/cases/fedora_31-x86_64-vhd-boot.json @@ -0,0 +1,11136 @@ +{ + "boot": { + "type": "azure" + }, + "compose-request": { + "distro": "fedora-31", + "arch": "x86_64", + "image-type": "vhd", + "repositories": [ + { + "baseurl": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ], + "filename": "disk.vhd", + "blueprint": { + "name": "vhd-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcurl-7.66.0-1.fc31.x86_64.rpm" + }, + "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre2-10.33-14.fc31.x86_64.rpm" + }, + "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdatrie-0.2.9-10.fc31.x86_64.rpm" + }, + "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-firmware-20190923-102.fc31.noarch.rpm" + }, + "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm" + }, + "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-6.fc31.x86_64.rpm" + }, + "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-six-1.12.0-2.fc31.noarch.rpm" + }, + "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-2.fc31.x86_64.rpm" + }, + "sha256:07a3523159719382e2bb9b83961bfe00836cc97f75a9706d02ad73dddb161856": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/chrony-3.5-4.fc31.x86_64.rpm" + }, + "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontconfig-2.13.92-3.fc31.x86_64.rpm" + }, + "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bash-5.0.7-3.fc31.x86_64.rpm" + }, + "sha256:0b54f374bcbe094dbc0d52d9661fe99ebff384026ce0ea39f2d6069e27bf8bdc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdhash-0.5.0-43.fc31.x86_64.rpm" + }, + "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-1.16.0-6.fc31.x86_64.rpm" + }, + "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.x86_64.rpm" + }, + "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.x86_64.rpm" + }, + "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnghttp2-1.39.2-1.fc31.x86_64.rpm" + }, + "sha256:0f26eca4ac936554818769fe32aca5e878af2616e83f836ec463e59eb4f9f1f9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcollection-0.7.0-43.fc31.x86_64.rpm" + }, + "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.x86_64.rpm" + }, + "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.x86_64.rpm" + }, + "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-common-2.30-5.fc31.x86_64.rpm" + }, + "sha256:118548479396b007a80bc98e8cef770ea242ef6b20cd2922d595acd4c100946d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/polkit-libs-0.116-4.fc31.x86_64.rpm" + }, + "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/graphite2-1.3.13-1.fc31.x86_64.rpm" + }, + "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-plugins-core-4.0.9-1.fc31.noarch.rpm" + }, + "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm" + }, + "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsmartcols-2.34-3.fc31.x86_64.rpm" + }, + "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-6.1-12.20190803.fc31.x86_64.rpm" + }, + "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-extra-2.02-100.fc31.x86_64.rpm" + }, + "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsigsegv-2.11-8.fc31.x86_64.rpm" + }, + "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-misc-2.0.4-14.fc31.noarch.rpm" + }, + "sha256:1e5f14d26556e380ed129289c1b98d46d951966e548613b9c2ee0d3616ac96d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-modules-5.3.7-301.fc31.x86_64.rpm" + }, + "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gzip-1.10-1.fc31.x86_64.rpm" + }, + "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/acl-2.2.53-4.fc31.x86_64.rpm" + }, + "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm" + }, + "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/librepo-1.10.5-1.fc31.x86_64.rpm" + }, + "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-rpm-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.x86_64.rpm" + }, + "sha256:21ccdbe703caa6a08056d2bc75c1e184f811472a6e320e5af64b8757fcd07166": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/groff-base-1.22.3-20.fc31.x86_64.rpm" + }, + "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libfdisk-2.34-3.fc31.x86_64.rpm" + }, + "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-1.fc31.x86_64.rpm" + }, + "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libutempter-1.1.6-17.fc31.x86_64.rpm" + }, + "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/readline-8.0-3.fc31.x86_64.rpm" + }, + "sha256:22db6d1e1f34a43c3d045b6750ff3a32184d47c2aedf3dabc93640057de1f4fa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/less-551-2.fc31.x86_64.rpm" + }, + "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.x86_64.rpm" + }, + "sha256:239a9576864532edd325e72b62a10ef147a2bcc0a925079b19fb9cb74bab0dd7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/c-ares-1.15.0-4.fc31.x86_64.rpm" + }, + "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-c-0.13.1-6.fc31.x86_64.rpm" + }, + "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-3.7.4-5.fc31.x86_64.rpm" + }, + "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXfixes-5.0.3-10.fc31.x86_64.rpm" + }, + "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-1.6.8-3.fc31.x86_64.rpm" + }, + "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-2.fc31.noarch.rpm" + }, + "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libstdc++-9.2.1-1.fc31.x86_64.rpm" + }, + "sha256:2af3bbdab1f387ae7af2534846e33ab6d2ca7777399c64191f95699d576cd4ba": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/initscripts-10.02-2.fc31.x86_64.rpm" + }, + "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.x86_64.rpm" + }, + "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgpg-error-1.36-2.fc31.x86_64.rpm" + }, + "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shadow-utils-4.6-16.fc31.x86_64.rpm" + }, + "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/brotli-1.0.7-6.fc31.x86_64.rpm" + }, + "sha256:2c5b5ce5f6e6d1d79f35eab253a12e19aeb863f4fe8ded94013f76a9834689fb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.20.4-1.fc31.x86_64.rpm" + }, + "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm" + }, + "sha256:2cd5a709ff2c286b73f850469b1ee6baf9077b90ce3bacb8ba712430c6632350": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnftnl-1.1.3-2.fc31.x86_64.rpm" + }, + "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.x86_64.rpm" + }, + "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm" + }, + "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXext-1.3.4-2.fc31.x86_64.rpm" + }, + "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-libs-5.37-3.fc31.x86_64.rpm" + }, + "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsepol-2.9-2.fc31.x86_64.rpm" + }, + "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm" + }, + "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/langpacks-en-2.0-7.fc31.noarch.rpm" + }, + "sha256:307275b46896d56d23f5da5ab77a299941e77165ff44e846d6620eee1158131c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_certmap-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/avahi-libs-0.7-20.fc31.x86_64.rpm" + }, + "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsolv-0.7.5-3.fc31.x86_64.rpm" + }, + "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.x86_64.rpm" + }, + "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/harfbuzz-2.6.1-2.fc31.x86_64.rpm" + }, + "sha256:33334afdde6c813b18c18897dca19fab5a2ce090eba0b5ea0a38f43f1081c190": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dhcp-client-4.4.1-15.fc31.x86_64.rpm" + }, + "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib-networking-2.62.1-1.fc31.x86_64.rpm" + }, + "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-2.30-5.fc31.x86_64.rpm" + }, + "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libarchive-3.4.0-1.fc31.x86_64.rpm" + }, + "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXft-2.3.3-2.fc31.x86_64.rpm" + }, + "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-3.33.4-1.fc31.x86_64.rpm" + }, + "sha256:34a9986b8b61812ceaf32ce3b189bd0b2cb4adaaf47d76ec1f50ce07c45b5675": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-config-generic-049-27.git20181204.fc31.1.x86_64.rpm" + }, + "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dejavu-fonts-common-2.37-2.fc31.noarch.rpm" + }, + "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm" + }, + "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm" + }, + "sha256:35c348bcd91fa114ad459b888131e5e5509259cffce33f22c44f92e57e9e5919": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dbus-1.2.8-6.fc31.x86_64.rpm" + }, + "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libs-3.7.4-5.fc31.x86_64.rpm" + }, + "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libargon2-20171227-3.fc31.x86_64.rpm" + }, + "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.x86_64.rpm" + }, + "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libevent-2.1.8-7.fc31.x86_64.rpm" + }, + "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-2.2.17-2.fc31.x86_64.rpm" + }, + "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-31-1.noarch.rpm" + }, + "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcc-9.2.1-1.fc31.x86_64.rpm" + }, + "sha256:422625da0fbb99cc4da8eebebff892c6e73a87c81a33190f7a17e344f6bb709e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_autofs-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rest-0.8.1-6.fc31.x86_64.rpm" + }, + "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grep-3.3-3.fc31.x86_64.rpm" + }, + "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nettle-3.5.1-3.fc31.x86_64.rpm" + }, + "sha256:430f2f71be063eb9d04fe38659f62e29f47c9c878f9985d0569cb49e9c89ebc0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmaxminddb-1.2.0-8.fc31.x86_64.rpm" + }, + "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.x86_64.rpm" + }, + "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.x86_64.rpm" + }, + "sha256:45bf4bef479712936db1d6859b043d13e6cad41c851b6e621fc315b39ecfa14b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libndp-1.7-4.fc31.x86_64.rpm" + }, + "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mkpasswd-5.5.2-1.fc31.x86_64.rpm" + }, + "sha256:469d12368377399b8eaa7ec8cf1b6378ab18476b4a2b61b79091510a8945c6aa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-43.fc31.x86_64.rpm" + }, + "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zlib-1.2.11-19.fc31.x86_64.rpm" + }, + "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm" + }, + "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXdamage-1.1.4-17.fc31.x86_64.rpm" + }, + "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtiff-4.0.10-6.fc31.x86_64.rpm" + }, + "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm" + }, + "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm" + }, + "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtasn1-4.14-2.fc31.x86_64.rpm" + }, + "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.10-1.fc31.x86_64.rpm" + }, + "sha256:4f1cc98d7df9b059091bd6ced4910ac976043ef294b81099f3a26355e8964b15": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ntfs-3g-2017.3.23-12.fc31.x86_64.rpm" + }, + "sha256:4f9bbd08f6019b3482342d616d6b04e6481924ea34fbfe8d30ef63402a92e9b1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-nfs-idmap-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-5.37-3.fc31.x86_64.rpm" + }, + "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm" + }, + "sha256:5593277fa685adba864393da8faf76950d6d8fb1483af036cdc08d8437c387bb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtevent-0.10.1-1.fc31.x86_64.rpm" + }, + "sha256:55c47c63deb00a9126c068299c01dfbdd39d58c6962138b862b92f5c7af8c898": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/parted-3.2.153-1.fc31.x86_64.rpm" + }, + "sha256:561014bd90810d512b4098c8e1d3ca05aa8c6a74bc258b3b7e3e2fd36a1ed157": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/plymouth-core-libs-0.9.4-10.20191001gita8aad27.fc31.x86_64.rpm" + }, + "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libss-1.45.3-1.fc31.x86_64.rpm" + }, + "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jbigkit-libs-2.1-17.fc31.x86_64.rpm" + }, + "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libthai-0.1.28-3.fc31.x86_64.rpm" + }, + "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgomp-9.2.1-1.fc31.x86_64.rpm" + }, + "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-8.0p1-8.fc31.1.x86_64.rpm" + }, + "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/krb5-libs-1.17-45.fc31.x86_64.rpm" + }, + "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.02-100.fc31.x86_64.rpm" + }, + "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-udev-243-4.gitef67743.fc31.x86_64.rpm" + }, + "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-1.12.16-3.fc31.x86_64.rpm" + }, + "sha256:5e07e49fdacc1f52b583ee685d03bf5ce045e9d34a323bd26607148a3937a9ce": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/plymouth-0.9.4-10.20191001gita8aad27.fc31.x86_64.rpm" + }, + "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdnf-0.35.3-6.fc31.x86_64.rpm" + }, + "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libffi-3.1-23.fc31.x86_64.rpm" + }, + "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/os-prober-1.77-3.fc31.x86_64.rpm" + }, + "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-3.fc31.x86_64.rpm" + }, + "sha256:63ff108f557096a9724053c37e37d3c2af1a1ec0b33124480b3742ff3da46292": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-decorator-4.4.0-2.fc31.noarch.rpm" + }, + "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-2.fc31.x86_64.rpm" + }, + "sha256:669250ad47aad5939cf4d1b88036fd95a94845d8e0bbdb05e933f3d2fe262fea": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qemu-img-4.1.0-2.fc31.x86_64.rpm" + }, + "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsecret-0.19.1-1.fc31.x86_64.rpm" + }, + "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libusbx-1.0.22-4.fc31.x86_64.rpm" + }, + "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libunistring-0.9.10-6.fc31.x86_64.rpm" + }, + "sha256:6807ac3ae6b7c0ea3a085106cedb687f79edfda500feb747039dc112ed3c518f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gobject-base-3.34.0-3.fc31.x86_64.rpm" + }, + "sha256:687d00eb0b77446dbd78aaa0f4f99cc080c677930ad783120483614255264a3d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-client-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cpio-2.12-12.fc31.x86_64.rpm" + }, + "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpwquality-1.4.1-1.fc31.x86_64.rpm" + }, + "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm" + }, + "sha256:6b694ee239a2e3f38c401e975de392e3731ad8b18be5a3249ea02f19e87cb5cb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-common-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm" + }, + "sha256:6c1f9dc11de4d3af4d4c418b4556ee9659011d587e9da44bb039cb30ac326841": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.x86_64.rpm" + }, + "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmount-2.34-3.fc31.x86_64.rpm" + }, + "sha256:6d8cbba688cea65fa80983cd7f140633e94cd58daa819342d1ae571a4ff174c6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/NetworkManager-1.20.4-1.fc31.x86_64.rpm" + }, + "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.x86_64.rpm" + }, + "sha256:6f2dae9b49bed8e1036a21aadd92ea2eb371979f6714ec2bce5742de051eeb14": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.30-5.fc31.x86_64.rpm" + }, + "sha256:6f729da330aaaea336458a8b6f3f1d2cc761693ba20bdda57fb9c49fb6f2120d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-43.fc31.x86_64.rpm" + }, + "sha256:6f7fbd57db9334a3cc7983d2e920afe92abe3f7e168702612d70e9ff405d79e6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libini_config-1.3.1-43.fc31.x86_64.rpm" + }, + "sha256:704ebfc50ace9417ed28f4530d778359a4c2f95d524c2e99346472245e30b548": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sudo-1.8.28-1.fc31.x86_64.rpm" + }, + "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm" + }, + "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpsl-0.21.0-2.fc31.x86_64.rpm" + }, + "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.x86_64.rpm" + }, + "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-2.fc31.x86_64.rpm" + }, + "sha256:72b5df6982fecdbee30d40bbb6042c72ed0f31b787f289b4a27f0dffc6f609fe": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iputils-20190515-3.fc31.x86_64.rpm" + }, + "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-3.fc31.x86_64.rpm" + }, + "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libblkid-2.34-3.fc31.x86_64.rpm" + }, + "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jasper-libs-2.0.14-9.fc31.x86_64.rpm" + }, + "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dhcp-common-4.4.1-15.fc31.noarch.rpm" + }, + "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/y/yum-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-2.26-6.fc31.x86_64.rpm" + }, + "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib2-2.62.1-1.fc31.x86_64.rpm" + }, + "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.x86_64.rpm" + }, + "sha256:764699ea124f85a7afcf65a2f138e3821770f8aa1ef134e1813e2b04477f0b74": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/man-db-2.8.4-5.fc31.x86_64.rpm" + }, + "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk3-3.24.12-3.fc31.x86_64.rpm" + }, + "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libidn2-2.2.0-2.fc31.x86_64.rpm" + }, + "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/policycoreutils-2.9-5.fc31.x86_64.rpm" + }, + "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm" + }, + "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libs-0.177-1.fc31.x86_64.rpm" + }, + "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXinerama-1.1.4-4.fc31.x86_64.rpm" + }, + "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/findutils-4.6.0-24.fc31.x86_64.rpm" + }, + "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libyaml-0.2.2-2.fc31.x86_64.rpm" + }, + "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/popt-1.16-18.fc31.x86_64.rpm" + }, + "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.x86_64.rpm" + }, + "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-libs-1.8.3-5.fc31.x86_64.rpm" + }, + "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kpartx-0.8.0-3.fc31.x86_64.rpm" + }, + "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-base-3.33.4-1.fc31.x86_64.rpm" + }, + "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-unbound-1.9.3-1.fc31.x86_64.rpm" + }, + "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgusb-0.3.0-5.fc31.x86_64.rpm" + }, + "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/alternatives-1.11-5.fc31.x86_64.rpm" + }, + "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shared-mime-info-1.14-1.fc31.x86_64.rpm" + }, + "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodman-2.0.1-20.fc31.x86_64.rpm" + }, + "sha256:80236171f32821454b938e0e929a5ae4033146014cf6defe14a888055824f465": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ntfsprogs-2017.3.23-12.fc31.x86_64.rpm" + }, + "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/langpacks-core-en-2.0-7.fc31.noarch.rpm" + }, + "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-common-2.02-100.fc31.noarch.rpm" + }, + "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-5.3.28-38.fc31.x86_64.rpm" + }, + "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gawk-5.0.1-5.fc31.x86_64.rpm" + }, + "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm" + }, + "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-libs-5.2.4-6.fc31.x86_64.rpm" + }, + "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm" + }, + "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-243-4.gitef67743.fc31.x86_64.rpm" + }, + "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cups-libs-2.2.12-2.fc31.x86_64.rpm" + }, + "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libproxy-0.4.15-14.fc31.x86_64.rpm" + }, + "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-8.fc31.x86_64.rpm" + }, + "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lcms2-2.9-6.fc31.x86_64.rpm" + }, + "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/unbound-libs-1.9.3-1.fc31.x86_64.rpm" + }, + "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.x86_64.rpm" + }, + "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcroco-0.6.13-2.fc31.x86_64.rpm" + }, + "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:8bd2655674b40e89f5f63af7f8ffafd0e9064a3378cdca050262a7272678e8e5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnl3-3.5.0-1.fc31.x86_64.rpm" + }, + "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre-8.43-2.fc31.1.x86_64.rpm" + }, + "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/colord-libs-1.4.4-2.fc31.x86_64.rpm" + }, + "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm" + }, + "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/atk-2.34.1-1.fc31.x86_64.rpm" + }, + "sha256:8e9a916cd4843e7d09e3d1b814dbb55bb3b45672b1058044cfeaf8e19ad27bd7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-1.8.3-5.fc31.x86_64.rpm" + }, + "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libattr-2.4.48-7.fc31.x86_64.rpm" + }, + "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnutls-3.6.10-1.fc31.x86_64.rpm" + }, + "sha256:8f7b737ccb294fd5ba1d19075ea2a50a54e0265d8efa28aae0ade59d3e3a63be": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libldb-2.0.7-1.fc31.x86_64.rpm" + }, + "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.x86_64.rpm" + }, + "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libacl-2.2.53-4.fc31.x86_64.rpm" + }, + "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pixman-0.38.4-1.fc31.x86_64.rpm" + }, + "sha256:9247561bad35a8a2f8269b2bbbd28d1bf5e6fcde1fe78e1fc3c0e712513e9703": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtalloc-2.3.0-1.fc31.x86_64.rpm" + }, + "sha256:93161df6d62fe654c7cdba9ae36343d2549b437b27eac816a80f8d7c32a47162": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-kcm-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-firmware-whence-20190923-102.fc31.noarch.rpm" + }, + "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.x86_64.rpm" + }, + "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pinentry-1.1.0-6.fc31.x86_64.rpm" + }, + "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXi-1.7.10-2.fc31.x86_64.rpm" + }, + "sha256:95b45de2c57f35df43bff0c2ebe32c64183968b3a41c5673cfeeff5ece506b94": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuser-0.62-21.fc31.x86_64.rpm" + }, + "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.x86_64.rpm" + }, + "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-utils-2.9-5.fc31.x86_64.rpm" + }, + "sha256:9975496f29601a1c2cdb89e63aac698fdd8283ba3a52a9d91ead9473a0e064c8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tar-1.32-2.fc31.x86_64.rpm" + }, + "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-1.fc31.x86_64.rpm" + }, + "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/curl-7.66.0-1.fc31.x86_64.rpm" + }, + "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-repos-31-1.noarch.rpm" + }, + "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-bootchart-233-5.fc31.x86_64.rpm" + }, + "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libverto-0.3.0-8.fc31.x86_64.rpm" + }, + "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-3.fc31.noarch.rpm" + }, + "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm" + }, + "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcomps-0.1.11-3.fc31.x86_64.rpm" + }, + "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-1.fc31.x86_64.rpm" + }, + "sha256:a188b5c697b734d4ed7d8f954b6875b9d401dc2a3c10bfd20d03db131ca73ab5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hostname-3.20-9.fc31.x86_64.rpm" + }, + "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcomposite-0.4.4-17.fc31.x86_64.rpm" + }, + "sha256:a1bd1b5a2c47e57957a77d32f4fd705de1df30557837cfbc83b8f284e4ee0456": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-2.9.6-21.fc31.x86_64.rpm" + }, + "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gmp-6.1.2-10.fc31.x86_64.rpm" + }, + "sha256:a349c40034b5a181cab1bd409384ddb901c274e110b16721d434f5bf42e92c0f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-firewall-0.7.2-1.fc31.noarch.rpm" + }, + "sha256:a41579023e1db3dec06679ebc7788ece92686ea2a23c78dd749c98ddbc82d419": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.23-3.fc31.x86_64.rpm" + }, + "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.02-100.fc31.noarch.rpm" + }, + "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gpgme-1.13.1-3.fc31.x86_64.rpm" + }, + "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-client-1.17.0-2.fc31.x86_64.rpm" + }, + "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pam-1.3.1-18.fc31.x86_64.rpm" + }, + "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-38.fc31.x86_64.rpm" + }, + "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-1.fc31.x86_64.rpm" + }, + "sha256:ab35a2d7f21aac1f33f9521607789e1c303fb63e4ea0681e9f724f86a1cc15c5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/firewalld-0.7.2-1.fc31.noarch.rpm" + }, + "sha256:ab5ad6fc076fd82be6a2ca9d77998fc06c2c9e7296de960b7549239efb9f971d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gobject-introspection-1.62.0-1.fc31.x86_64.rpm" + }, + "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.x86_64.rpm" + }, + "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-libs-26-4.fc31.x86_64.rpm" + }, + "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.x86_64.rpm" + }, + "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libksba-1.3.5-10.fc31.x86_64.rpm" + }, + "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpcap-1.9.0-4.fc31.x86_64.rpm" + }, + "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm" + }, + "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tss2-1331-2.fc31.x86_64.rpm" + }, + "sha256:b1094a9a9725546315d6eac7f792d5875a5f0c950cd84e43fc2fbb3e639ee43e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-slip-0.6.4-16.fc31.noarch.rpm" + }, + "sha256:b110ee65fa2dee77585ec77cab592cba2434d579f8afbed4d2a908ad1addccfc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dosfstools-4.1-9.fc31.x86_64.rpm" + }, + "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libepoxy-1.5.3-4.fc31.x86_64.rpm" + }, + "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fribidi-1.0.5-4.fc31.x86_64.rpm" + }, + "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libseccomp-2.4.1-1.fc31.x86_64.rpm" + }, + "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuuid-2.34-3.fc31.x86_64.rpm" + }, + "sha256:b49419bed59686efde6fc04953c2ab64a46c2bae46227a872bb3a823538c636d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyasn1-0.4.4-5.fc31.noarch.rpm" + }, + "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openldap-2.4.47-3.fc31.x86_64.rpm" + }, + "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.x86_64.rpm" + }, + "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-2.02-100.fc31.x86_64.rpm" + }, + "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-9.fc31.x86_64.rpm" + }, + "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-2.9-5.fc31.x86_64.rpm" + }, + "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.x86_64.rpm" + }, + "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm" + }, + "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.x86_64.rpm" + }, + "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcb-1.13.1-3.fc31.x86_64.rpm" + }, + "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libassuan-2.5.3-2.fc31.x86_64.rpm" + }, + "sha256:bd2e7c9e3df976723ade08f16667b31044b678e62ee29e024ad193af6d9a28e1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-slip-dbus-0.6.4-16.fc31.noarch.rpm" + }, + "sha256:bd72cac3d1ef93cff067070925e5f339c720bef82c5ade4477388636fef53b91": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/plymouth-scripts-0.9.4-10.20191001gita8aad27.fc31.x86_64.rpm" + }, + "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/npth-1.6-3.fc31.x86_64.rpm" + }, + "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-1.1.1d-2.fc31.x86_64.rpm" + }, + "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-2.fc31.noarch.rpm" + }, + "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-8.31-4.fc31.x86_64.rpm" + }, + "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrandr-1.5.2-2.fc31.x86_64.rpm" + }, + "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.4-37.fc31.noarch.rpm" + }, + "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.x86_64.rpm" + }, + "sha256:c3aa4d794cef51ba9fcbf3750baed55aabfa36062a48f61149ccf03364a0d256": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-server-8.0p1-8.fc31.1.x86_64.rpm" + }, + "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:c459092a47bd2f904d9fe830735b512ef97b52785ee12abb2ba5c52465560f18": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/passwd-0.80-6.fc31.x86_64.rpm" + }, + "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-5.2.4-6.fc31.x86_64.rpm" + }, + "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXtst-1.2.3-10.fc31.x86_64.rpm" + }, + "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.x86_64.rpm" + }, + "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.x86_64.rpm" + }, + "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.x86_64.rpm" + }, + "sha256:c8e0a36410ebbd9db0a10e1fbecbae8f6288b9be86752d2e91725d5dd98ec65d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipcalc-0.2.5-3.fc31.x86_64.rpm" + }, + "sha256:c976ce75eda3dbe734117f6f558eafb2061bbef66086a04cb907a7ddbaea8bc2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmnl-1.0.4-10.fc31.x86_64.rpm" + }, + "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-2.0.4-14.fc31.x86_64.rpm" + }, + "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libzstd-1.4.2-1.fc31.x86_64.rpm" + }, + "sha256:ca6a71888b8d147342012c64533f61a41b26c788bbcd2844a2164ee007fac981": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libselinux-2.9-5.fc31.x86_64.rpm" + }, + "sha256:cab1b0c3bdae2a07e15b90b414f50753c759e325b6f0cddfa27895748c77f082": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/ebtables-legacy-2.0.10-37.fc31.x86_64.rpm" + }, + "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-6.fc31.x86_64.rpm" + }, + "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm" + }, + "sha256:cc02df4125eaebf642edd9bf00031ec09871c285816c03112909ef1005410eaa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm" + }, + "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/filesystem-3.12-2.fc31.x86_64.rpm" + }, + "sha256:cef060334e8c21b5d2e3a87bdd0ad5ac1be389d7794735506b9d3c65c2923cd3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iproute-5.3.0-1.fc31.x86_64.rpm" + }, + "sha256:cf6506ad88ecaab89efde02eee218365a36981114638c03989ba2768457ae335": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/net-tools-2.0-0.55.20160912git.fc31.x86_64.rpm" + }, + "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-3.fc31.x86_64.rpm" + }, + "sha256:cfeb5d0cb9c116e39292e3158c68ee62880cff4a5e3d098d20bf9567e5a576e1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpipeline-1.5.1-3.fc31.x86_64.rpm" + }, + "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxml2-2.9.9-3.fc31.x86_64.rpm" + }, + "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-0.20.1-2.fc31.x86_64.rpm" + }, + "sha256:d219a6c4a2410d6ef9bad2b337557779b969e278b657ffede83c021c20f665ca": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iproute-tc-5.3.0-1.fc31.x86_64.rpm" + }, + "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/geolite2-city-20190806-1.fc31.noarch.rpm" + }, + "sha256:d2c819a7e607a9e22f55047ed03d064e4b0f125ad4fb20532c543a6d8af8bfa5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/v/vim-minimal-8.1.2102-1.fc31.x86_64.rpm" + }, + "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm" + }, + "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-0.9.0-6.fc31.x86_64.rpm" + }, + "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.x86_64.rpm" + }, + "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/expat-2.2.8-1.fc31.x86_64.rpm" + }, + "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.x86_64.rpm" + }, + "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-plugins-core-4.0.9-1.fc31.noarch.rpm" + }, + "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pango-1.44.6-1.fc31.x86_64.rpm" + }, + "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libelf-0.177-1.fc31.x86_64.rpm" + }, + "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/selinux-policy-3.14.4-37.fc31.noarch.rpm" + }, + "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mpfr-3.1.6-5.fc31.x86_64.rpm" + }, + "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rootfiles-8.1-25.fc31.noarch.rpm" + }, + "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-1.02.163-2.fc31.x86_64.rpm" + }, + "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcursor-1.1.15-6.fc31.x86_64.rpm" + }, + "sha256:da923b379524f2d8d26905f26a9dc763cec36c40306c4c53db57100574ea89b8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libref_array-0.1.5-43.fc31.x86_64.rpm" + }, + "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.x86_64.rpm" + }, + "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.x86_64.rpm" + }, + "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpng-1.6.37-2.fc31.x86_64.rpm" + }, + "sha256:dc924dd33a9bd0b9483ebdbcf7caecbe1f48b8a135f1521291c8433fa76f4603": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jansson-2.12-4.fc31.x86_64.rpm" + }, + "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/diffutils-3.7-3.fc31.x86_64.rpm" + }, + "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.x86_64.rpm" + }, + "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sed-4.5-4.fc31.x86_64.rpm" + }, + "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm" + }, + "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-ng-0.7.9-8.fc31.x86_64.rpm" + }, + "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrender-0.9.10-10.fc31.x86_64.rpm" + }, + "sha256:e1bda9438577473413f3c7455ce84b6c8486adee3d4473fafcd28309ad8c2913": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-7.fc31.x86_64.rpm" + }, + "sha256:e405d2edc9b9fc2c13242f0225049b071aa4159d09d8e2d501e8c4fe88a9710b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-25.fc31.x86_64.rpm" + }, + "sha256:e4eb72f080bdb339a4748fa9a0749953628189da1c930294c68902bb8b9f8eeb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipset-7.3-1.fc31.x86_64.rpm" + }, + "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-common-31-1.noarch.rpm" + }, + "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-legacy-2.0.4-14.fc31.noarch.rpm" + }, + "sha256:e76b3b9d14a0016542f61d0ab2981fbf2d779e522d0c36d9095a1cffecbf9272": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/firewalld-filesystem-0.7.2-1.fc31.noarch.rpm" + }, + "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsoup-2.68.2-1.fc31.x86_64.rpm" + }, + "sha256:e91f7fcee1e3e72941c99eec3c3c3c9506cdaf83c01cf1eef257b91ccaff550c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-3.fc31.x86_64.rpm" + }, + "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/freetype-2.10.0-3.fc31.x86_64.rpm" + }, + "sha256:e9fa9fba03403e709388390a91f4b253e57b8104035f05fabdf4d5c0dd173ce1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nftables-0.9.1-3.fc31.x86_64.rpm" + }, + "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-glib-1.4.4-3.fc31.x86_64.rpm" + }, + "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-4.4.10-1.fc31.x86_64.rpm" + }, + "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-broker-21-6.fc31.x86_64.rpm" + }, + "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-26-4.fc31.x86_64.rpm" + }, + "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/which-2.21-15.fc31.x86_64.rpm" + }, + "sha256:ee6596a5010c2b4a038861828ecca240aa03c592dacd83c3a70d44cb8ee50408": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libaio-0.3.111-6.fc31.x86_64.rpm" + }, + "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-049-27.git20181204.fc31.1.x86_64.rpm" + }, + "sha256:ef8a092b0af0d5a796dd461e7d72d56dbba51a3739195a8e5a40689f1cd2a0d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/WALinuxAgent-2.2.40-2.fc31.noarch.rpm" + }, + "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-libs-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.x86_64.rpm" + }, + "sha256:efece5a4b070f197a1db3f7e1d030878b1ccdff6a8a0d24c596ecfae374ef194": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipset-libs-7.3-1.fc31.x86_64.rpm" + }, + "sha256:f0509e333636e5c34726c8a2b8260bf88fe0a35b95cae6dda62191fee1be4c6a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-core-5.3.7-301.fc31.x86_64.rpm" + }, + "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm" + }, + "sha256:f0e87be0a26eaf271ebd84a6b71876216eb5a1d710f4e93473d6e0a53925926d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ntfs-3g-system-compression-1.0-2.fc31.x86_64.rpm" + }, + "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcom_err-1.45.3-1.fc31.x86_64.rpm" + }, + "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-common-8.31-4.fc31.x86_64.rpm" + }, + "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm" + }, + "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pigz-2.4-5.fc31.x86_64.rpm" + }, + "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dconf-0.34.0-1.fc31.x86_64.rpm" + }, + "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/util-linux-2.34-3.fc31.x86_64.rpm" + }, + "sha256:f50957375c79be57f391625b97d6ea74505e05f2edc6b9bc6768d5e3ad6ef8f8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.x86_64.rpm" + }, + "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.x86_64.rpm" + }, + "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-2.02-100.fc31.x86_64.rpm" + }, + "sha256:f61555e6e74917be3f131bd5af9d9e30ed709111701e950b7ebd4392baf33f12": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnfsidmap-2.4.1-1.rc1.fc31.x86_64.rpm" + }, + "sha256:f67d5cc67029c6c38185f94b72aaa9034a49f5c4f166066c8268b41e1b18a202": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.30-5.fc31.x86_64.rpm" + }, + "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm" + }, + "sha256:f8d885f57b3c7b30b6f18f68fed7fd3f19300c22abc5d5ee5029998e96c6b115": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-16.fc31.x86_64.rpm" + }, + "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXau-1.0.9-2.fc31.x86_64.rpm" + }, + "sha256:fb2ff56d3a273eac8775bac03b12f1cf8affa0b92585912de0abf3bc1ccdfa44": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-5.3.7-301.fc31.x86_64.rpm" + }, + "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.x86_64.rpm" + }, + "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.x86_64.rpm" + }, + "sha256:fccade859cbb884fd61c07433e6c316f794885cbb2186debcff3f6894d16d52c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtdb-1.4.2-1.fc31.x86_64.rpm" + }, + "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsemanage-2.9-3.fc31.x86_64.rpm" + }, + "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/geolite2-country-20190806-1.fc31.noarch.rpm" + }, + "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.x86_64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "checksum": "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d", + "check_gpg": true + }, + { + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "checksum": "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081", + "check_gpg": true + }, + { + "checksum": "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355", + "check_gpg": true + }, + { + "checksum": "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1", + "check_gpg": true + }, + { + "checksum": "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5", + "check_gpg": true + }, + { + "checksum": "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09", + "check_gpg": true + }, + { + "checksum": "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02", + "check_gpg": true + }, + { + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "checksum": "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3", + "check_gpg": true + }, + { + "checksum": "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1", + "check_gpg": true + }, + { + "checksum": "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7", + "check_gpg": true + }, + { + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "checksum": "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a", + "check_gpg": true + }, + { + "checksum": "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3", + "check_gpg": true + }, + { + "checksum": "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736", + "check_gpg": true + }, + { + "checksum": "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc", + "check_gpg": true + }, + { + "checksum": "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc", + "check_gpg": true + }, + { + "checksum": "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38", + "check_gpg": true + }, + { + "checksum": "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4", + "check_gpg": true + }, + { + "checksum": "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c", + "check_gpg": true + }, + { + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "checksum": "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8", + "check_gpg": true + }, + { + "checksum": "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4", + "check_gpg": true + }, + { + "checksum": "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49", + "check_gpg": true + }, + { + "checksum": "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1", + "check_gpg": true + }, + { + "checksum": "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee", + "check_gpg": true + }, + { + "checksum": "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8", + "check_gpg": true + }, + { + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "checksum": "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71", + "check_gpg": true + }, + { + "checksum": "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27", + "check_gpg": true + }, + { + "checksum": "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7", + "check_gpg": true + }, + { + "checksum": "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f", + "check_gpg": true + }, + { + "checksum": "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732", + "check_gpg": true + }, + { + "checksum": "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7", + "check_gpg": true + }, + { + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "checksum": "sha256:b110ee65fa2dee77585ec77cab592cba2434d579f8afbed4d2a908ad1addccfc", + "check_gpg": true + }, + { + "checksum": "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159", + "check_gpg": true + }, + { + "checksum": "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7", + "check_gpg": true + }, + { + "checksum": "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89", + "check_gpg": true + }, + { + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "checksum": "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228", + "check_gpg": true + }, + { + "checksum": "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407", + "check_gpg": true + }, + { + "checksum": "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f", + "check_gpg": true + }, + { + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "checksum": "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c", + "check_gpg": true + }, + { + "checksum": "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c", + "check_gpg": true + }, + { + "checksum": "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff", + "check_gpg": true + }, + { + "checksum": "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067", + "check_gpg": true + }, + { + "checksum": "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a", + "check_gpg": true + }, + { + "checksum": "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2", + "check_gpg": true + }, + { + "checksum": "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54", + "check_gpg": true + }, + { + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "checksum": "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee", + "check_gpg": true + }, + { + "checksum": "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891", + "check_gpg": true + }, + { + "checksum": "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d", + "check_gpg": true + }, + { + "checksum": "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203", + "check_gpg": true + }, + { + "checksum": "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd", + "check_gpg": true + }, + { + "checksum": "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc", + "check_gpg": true + }, + { + "checksum": "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84", + "check_gpg": true + }, + { + "checksum": "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb", + "check_gpg": true + }, + { + "checksum": "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c", + "check_gpg": true + }, + { + "checksum": "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926", + "check_gpg": true + }, + { + "checksum": "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3", + "check_gpg": true + }, + { + "checksum": "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a", + "check_gpg": true + }, + { + "checksum": "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79", + "check_gpg": true + }, + { + "checksum": "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13", + "check_gpg": true + }, + { + "checksum": "sha256:f67d5cc67029c6c38185f94b72aaa9034a49f5c4f166066c8268b41e1b18a202", + "check_gpg": true + }, + { + "checksum": "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb", + "check_gpg": true + }, + { + "checksum": "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a", + "check_gpg": true + }, + { + "checksum": "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e", + "check_gpg": true + }, + { + "checksum": "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5", + "check_gpg": true + }, + { + "checksum": "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5", + "check_gpg": true + }, + { + "checksum": "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458", + "check_gpg": true + }, + { + "checksum": "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d", + "check_gpg": true + }, + { + "checksum": "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16", + "check_gpg": true + }, + { + "checksum": "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada", + "check_gpg": true + }, + { + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "checksum": "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc", + "check_gpg": true + }, + { + "checksum": "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1", + "check_gpg": true + }, + { + "checksum": "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8", + "check_gpg": true + }, + { + "checksum": "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214", + "check_gpg": true + }, + { + "checksum": "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031", + "check_gpg": true + }, + { + "checksum": "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8", + "check_gpg": true + }, + { + "checksum": "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d", + "check_gpg": true + }, + { + "checksum": "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150", + "check_gpg": true + }, + { + "checksum": "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01", + "check_gpg": true + }, + { + "checksum": "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994", + "check_gpg": true + }, + { + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "checksum": "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6", + "check_gpg": true + }, + { + "checksum": "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4", + "check_gpg": true + }, + { + "checksum": "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00", + "check_gpg": true + }, + { + "checksum": "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5", + "check_gpg": true + }, + { + "checksum": "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422", + "check_gpg": true + }, + { + "checksum": "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad", + "check_gpg": true + }, + { + "checksum": "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c", + "check_gpg": true + }, + { + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "checksum": "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1", + "check_gpg": true + }, + { + "checksum": "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b", + "check_gpg": true + }, + { + "checksum": "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1", + "check_gpg": true + }, + { + "checksum": "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00", + "check_gpg": true + }, + { + "checksum": "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466", + "check_gpg": true + }, + { + "checksum": "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b", + "check_gpg": true + }, + { + "checksum": "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679", + "check_gpg": true + }, + { + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "checksum": "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834", + "check_gpg": true + }, + { + "checksum": "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c", + "check_gpg": true + }, + { + "checksum": "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59", + "check_gpg": true + }, + { + "checksum": "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a", + "check_gpg": true + }, + { + "checksum": "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077", + "check_gpg": true + }, + { + "checksum": "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c", + "check_gpg": true + }, + { + "checksum": "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc", + "check_gpg": true + }, + { + "checksum": "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141", + "check_gpg": true + }, + { + "checksum": "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1", + "check_gpg": true + }, + { + "checksum": "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1", + "check_gpg": true + }, + { + "checksum": "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7", + "check_gpg": true + }, + { + "checksum": "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295", + "check_gpg": true + }, + { + "checksum": "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc", + "check_gpg": true + }, + { + "checksum": "sha256:ee6596a5010c2b4a038861828ecca240aa03c592dacd83c3a70d44cb8ee50408", + "check_gpg": true + }, + { + "checksum": "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18", + "check_gpg": true + }, + { + "checksum": "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de", + "check_gpg": true + }, + { + "checksum": "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8", + "check_gpg": true + }, + { + "checksum": "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be", + "check_gpg": true + }, + { + "checksum": "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2", + "check_gpg": true + }, + { + "checksum": "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090", + "check_gpg": true + }, + { + "checksum": "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d", + "check_gpg": true + }, + { + "checksum": "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c", + "check_gpg": true + }, + { + "checksum": "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7", + "check_gpg": true + }, + { + "checksum": "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382", + "check_gpg": true + }, + { + "checksum": "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241", + "check_gpg": true + }, + { + "checksum": "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167", + "check_gpg": true + }, + { + "checksum": "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc", + "check_gpg": true + }, + { + "checksum": "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627", + "check_gpg": true + }, + { + "checksum": "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874", + "check_gpg": true + }, + { + "checksum": "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801", + "check_gpg": true + }, + { + "checksum": "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31", + "check_gpg": true + }, + { + "checksum": "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7", + "check_gpg": true + }, + { + "checksum": "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba", + "check_gpg": true + }, + { + "checksum": "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0", + "check_gpg": true + }, + { + "checksum": "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1", + "check_gpg": true + }, + { + "checksum": "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f", + "check_gpg": true + }, + { + "checksum": "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c", + "check_gpg": true + }, + { + "checksum": "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd", + "check_gpg": true + }, + { + "checksum": "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab", + "check_gpg": true + }, + { + "checksum": "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc", + "check_gpg": true + }, + { + "checksum": "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345", + "check_gpg": true + }, + { + "checksum": "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde", + "check_gpg": true + }, + { + "checksum": "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37", + "check_gpg": true + }, + { + "checksum": "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f", + "check_gpg": true + }, + { + "checksum": "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43", + "check_gpg": true + }, + { + "checksum": "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664", + "check_gpg": true + }, + { + "checksum": "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57", + "check_gpg": true + }, + { + "checksum": "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d", + "check_gpg": true + }, + { + "checksum": "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf", + "check_gpg": true + }, + { + "checksum": "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a", + "check_gpg": true + }, + { + "checksum": "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc", + "check_gpg": true + }, + { + "checksum": "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf", + "check_gpg": true + }, + { + "checksum": "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc", + "check_gpg": true + }, + { + "checksum": "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730", + "check_gpg": true + }, + { + "checksum": "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0", + "check_gpg": true + }, + { + "checksum": "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3", + "check_gpg": true + }, + { + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "checksum": "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a", + "check_gpg": true + }, + { + "checksum": "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7", + "check_gpg": true + }, + { + "checksum": "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e", + "check_gpg": true + }, + { + "checksum": "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045", + "check_gpg": true + }, + { + "checksum": "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32", + "check_gpg": true + }, + { + "checksum": "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f", + "check_gpg": true + }, + { + "checksum": "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4", + "check_gpg": true + }, + { + "checksum": "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238", + "check_gpg": true + }, + { + "checksum": "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388", + "check_gpg": true + }, + { + "checksum": "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42", + "check_gpg": true + }, + { + "checksum": "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc", + "check_gpg": true + }, + { + "checksum": "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833", + "check_gpg": true + }, + { + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "checksum": "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f", + "check_gpg": true + }, + { + "checksum": "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb", + "check_gpg": true + }, + { + "checksum": "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c", + "check_gpg": true + }, + { + "checksum": "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500", + "check_gpg": true + }, + { + "checksum": "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71", + "check_gpg": true + }, + { + "checksum": "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7", + "check_gpg": true + }, + { + "checksum": "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42", + "check_gpg": true + }, + { + "checksum": "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8", + "check_gpg": true + }, + { + "checksum": "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5", + "check_gpg": true + }, + { + "checksum": "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af", + "check_gpg": true + }, + { + "checksum": "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348", + "check_gpg": true + }, + { + "checksum": "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff", + "check_gpg": true + }, + { + "checksum": "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce", + "check_gpg": true + }, + { + "checksum": "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9", + "check_gpg": true + }, + { + "checksum": "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5", + "check_gpg": true + }, + { + "checksum": "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c", + "check_gpg": true + }, + { + "checksum": "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca", + "check_gpg": true + }, + { + "checksum": "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da", + "check_gpg": true + }, + { + "checksum": "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6", + "check_gpg": true + }, + { + "checksum": "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34", + "check_gpg": true + }, + { + "checksum": "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c", + "check_gpg": true + }, + { + "checksum": "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a", + "check_gpg": true + }, + { + "checksum": "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39", + "check_gpg": true + }, + { + "checksum": "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83", + "check_gpg": true + }, + { + "checksum": "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2", + "check_gpg": true + }, + { + "checksum": "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519", + "check_gpg": true + }, + { + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "checksum": "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106", + "check_gpg": true + }, + { + "checksum": "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc", + "check_gpg": true + }, + { + "checksum": "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2", + "check_gpg": true + }, + { + "checksum": "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38", + "check_gpg": true + }, + { + "checksum": "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b", + "check_gpg": true + }, + { + "checksum": "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68", + "check_gpg": true + }, + { + "checksum": "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3", + "check_gpg": true + }, + { + "checksum": "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2", + "check_gpg": true + }, + { + "checksum": "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0", + "check_gpg": true + }, + { + "checksum": "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234", + "check_gpg": true + }, + { + "checksum": "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313", + "check_gpg": true + }, + { + "checksum": "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0", + "check_gpg": true + }, + { + "checksum": "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b", + "check_gpg": true + }, + { + "checksum": "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c", + "check_gpg": true + }, + { + "checksum": "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651", + "check_gpg": true + }, + { + "checksum": "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7", + "check_gpg": true + }, + { + "checksum": "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8", + "check_gpg": true + }, + { + "checksum": "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976", + "check_gpg": true + }, + { + "checksum": "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba", + "check_gpg": true + }, + { + "checksum": "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c", + "check_gpg": true + }, + { + "checksum": "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632", + "check_gpg": true + }, + { + "checksum": "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e", + "check_gpg": true + }, + { + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "checksum": "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9", + "check_gpg": true + }, + { + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "checksum": "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a", + "check_gpg": true + }, + { + "checksum": "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552", + "check_gpg": true + }, + { + "checksum": "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3", + "check_gpg": true + }, + { + "checksum": "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5", + "check_gpg": true + }, + { + "checksum": "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1", + "check_gpg": true + }, + { + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "checksum": "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444", + "check_gpg": true + }, + { + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "checksum": "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7", + "check_gpg": true + }, + { + "checksum": "sha256:669250ad47aad5939cf4d1b88036fd95a94845d8e0bbdb05e933f3d2fe262fea", + "check_gpg": true + }, + { + "checksum": "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d", + "check_gpg": true + }, + { + "checksum": "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc", + "check_gpg": true + }, + { + "checksum": "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e", + "check_gpg": true + }, + { + "checksum": "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2", + "check_gpg": true + }, + { + "checksum": "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac", + "check_gpg": true + }, + { + "checksum": "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03", + "check_gpg": true + }, + { + "checksum": "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576", + "check_gpg": true + }, + { + "checksum": "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb", + "check_gpg": true + }, + { + "checksum": "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165", + "check_gpg": true + }, + { + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "checksum": "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3", + "check_gpg": true + }, + { + "checksum": "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071", + "check_gpg": true + }, + { + "checksum": "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2", + "check_gpg": true + }, + { + "checksum": "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5", + "check_gpg": true + }, + { + "checksum": "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454", + "check_gpg": true + }, + { + "checksum": "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612", + "check_gpg": true + }, + { + "checksum": "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1", + "check_gpg": true + }, + { + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "checksum": "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c", + "check_gpg": true + }, + { + "checksum": "sha256:9975496f29601a1c2cdb89e63aac698fdd8283ba3a52a9d91ead9473a0e064c8", + "check_gpg": true + }, + { + "checksum": "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18", + "check_gpg": true + }, + { + "checksum": "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df", + "check_gpg": true + }, + { + "checksum": "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f", + "check_gpg": true + }, + { + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "checksum": "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7", + "check_gpg": true + }, + { + "checksum": "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f", + "check_gpg": true + }, + { + "checksum": "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa", + "check_gpg": true + }, + { + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "checksum": "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05", + "check_gpg": true + }, + { + "checksum": "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431", + "check_gpg": true + }, + { + "checksum": "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c", + "check_gpg": true + }, + { + "checksum": "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9", + "check_gpg": true + } + ] + } + } + ] + }, + "runner": "org.osbuild.fedora31" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:6d8cbba688cea65fa80983cd7f140633e94cd58daa819342d1ae571a4ff174c6", + "check_gpg": true + }, + { + "checksum": "sha256:2c5b5ce5f6e6d1d79f35eab253a12e19aeb863f4fe8ded94013f76a9834689fb", + "check_gpg": true + }, + { + "checksum": "sha256:ef8a092b0af0d5a796dd461e7d72d56dbba51a3739195a8e5a40689f1cd2a0d7", + "check_gpg": true + }, + { + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "checksum": "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d", + "check_gpg": true + }, + { + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "checksum": "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081", + "check_gpg": true + }, + { + "checksum": "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355", + "check_gpg": true + }, + { + "checksum": "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1", + "check_gpg": true + }, + { + "checksum": "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5", + "check_gpg": true + }, + { + "checksum": "sha256:cc02df4125eaebf642edd9bf00031ec09871c285816c03112909ef1005410eaa", + "check_gpg": true + }, + { + "checksum": "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09", + "check_gpg": true + }, + { + "checksum": "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02", + "check_gpg": true + }, + { + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "checksum": "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3", + "check_gpg": true + }, + { + "checksum": "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1", + "check_gpg": true + }, + { + "checksum": "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7", + "check_gpg": true + }, + { + "checksum": "sha256:239a9576864532edd325e72b62a10ef147a2bcc0a925079b19fb9cb74bab0dd7", + "check_gpg": true + }, + { + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "checksum": "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a", + "check_gpg": true + }, + { + "checksum": "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3", + "check_gpg": true + }, + { + "checksum": "sha256:07a3523159719382e2bb9b83961bfe00836cc97f75a9706d02ad73dddb161856", + "check_gpg": true + }, + { + "checksum": "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736", + "check_gpg": true + }, + { + "checksum": "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc", + "check_gpg": true + }, + { + "checksum": "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc", + "check_gpg": true + }, + { + "checksum": "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38", + "check_gpg": true + }, + { + "checksum": "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4", + "check_gpg": true + }, + { + "checksum": "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c", + "check_gpg": true + }, + { + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "checksum": "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8", + "check_gpg": true + }, + { + "checksum": "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4", + "check_gpg": true + }, + { + "checksum": "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49", + "check_gpg": true + }, + { + "checksum": "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1", + "check_gpg": true + }, + { + "checksum": "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee", + "check_gpg": true + }, + { + "checksum": "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8", + "check_gpg": true + }, + { + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "checksum": "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71", + "check_gpg": true + }, + { + "checksum": "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27", + "check_gpg": true + }, + { + "checksum": "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc", + "check_gpg": true + }, + { + "checksum": "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a", + "check_gpg": true + }, + { + "checksum": "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7", + "check_gpg": true + }, + { + "checksum": "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f", + "check_gpg": true + }, + { + "checksum": "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732", + "check_gpg": true + }, + { + "checksum": "sha256:33334afdde6c813b18c18897dca19fab5a2ce090eba0b5ea0a38f43f1081c190", + "check_gpg": true + }, + { + "checksum": "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d", + "check_gpg": true + }, + { + "checksum": "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7", + "check_gpg": true + }, + { + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "checksum": "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063", + "check_gpg": true + }, + { + "checksum": "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159", + "check_gpg": true + }, + { + "checksum": "sha256:34a9986b8b61812ceaf32ce3b189bd0b2cb4adaaf47d76ec1f50ce07c45b5675", + "check_gpg": true + }, + { + "checksum": "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7", + "check_gpg": true + }, + { + "checksum": "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89", + "check_gpg": true + }, + { + "checksum": "sha256:cab1b0c3bdae2a07e15b90b414f50753c759e325b6f0cddfa27895748c77f082", + "check_gpg": true + }, + { + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "checksum": "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228", + "check_gpg": true + }, + { + "checksum": "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407", + "check_gpg": true + }, + { + "checksum": "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f", + "check_gpg": true + }, + { + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "checksum": "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c", + "check_gpg": true + }, + { + "checksum": "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c", + "check_gpg": true + }, + { + "checksum": "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff", + "check_gpg": true + }, + { + "checksum": "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067", + "check_gpg": true + }, + { + "checksum": "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a", + "check_gpg": true + }, + { + "checksum": "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2", + "check_gpg": true + }, + { + "checksum": "sha256:ab35a2d7f21aac1f33f9521607789e1c303fb63e4ea0681e9f724f86a1cc15c5", + "check_gpg": true + }, + { + "checksum": "sha256:e76b3b9d14a0016542f61d0ab2981fbf2d779e522d0c36d9095a1cffecbf9272", + "check_gpg": true + }, + { + "checksum": "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54", + "check_gpg": true + }, + { + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "checksum": "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee", + "check_gpg": true + }, + { + "checksum": "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891", + "check_gpg": true + }, + { + "checksum": "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d", + "check_gpg": true + }, + { + "checksum": "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203", + "check_gpg": true + }, + { + "checksum": "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd", + "check_gpg": true + }, + { + "checksum": "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc", + "check_gpg": true + }, + { + "checksum": "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84", + "check_gpg": true + }, + { + "checksum": "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb", + "check_gpg": true + }, + { + "checksum": "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c", + "check_gpg": true + }, + { + "checksum": "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565", + "check_gpg": true + }, + { + "checksum": "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b", + "check_gpg": true + }, + { + "checksum": "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926", + "check_gpg": true + }, + { + "checksum": "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3", + "check_gpg": true + }, + { + "checksum": "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a", + "check_gpg": true + }, + { + "checksum": "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79", + "check_gpg": true + }, + { + "checksum": "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13", + "check_gpg": true + }, + { + "checksum": "sha256:f67d5cc67029c6c38185f94b72aaa9034a49f5c4f166066c8268b41e1b18a202", + "check_gpg": true + }, + { + "checksum": "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb", + "check_gpg": true + }, + { + "checksum": "sha256:6f2dae9b49bed8e1036a21aadd92ea2eb371979f6714ec2bce5742de051eeb14", + "check_gpg": true + }, + { + "checksum": "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a", + "check_gpg": true + }, + { + "checksum": "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e", + "check_gpg": true + }, + { + "checksum": "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5", + "check_gpg": true + }, + { + "checksum": "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5", + "check_gpg": true + }, + { + "checksum": "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458", + "check_gpg": true + }, + { + "checksum": "sha256:ab5ad6fc076fd82be6a2ca9d77998fc06c2c9e7296de960b7549239efb9f971d", + "check_gpg": true + }, + { + "checksum": "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d", + "check_gpg": true + }, + { + "checksum": "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16", + "check_gpg": true + }, + { + "checksum": "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada", + "check_gpg": true + }, + { + "checksum": "sha256:21ccdbe703caa6a08056d2bc75c1e184f811472a6e320e5af64b8757fcd07166", + "check_gpg": true + }, + { + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "checksum": "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc", + "check_gpg": true + }, + { + "checksum": "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1", + "check_gpg": true + }, + { + "checksum": "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8", + "check_gpg": true + }, + { + "checksum": "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214", + "check_gpg": true + }, + { + "checksum": "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031", + "check_gpg": true + }, + { + "checksum": "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8", + "check_gpg": true + }, + { + "checksum": "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d", + "check_gpg": true + }, + { + "checksum": "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150", + "check_gpg": true + }, + { + "checksum": "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01", + "check_gpg": true + }, + { + "checksum": "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994", + "check_gpg": true + }, + { + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "checksum": "sha256:a188b5c697b734d4ed7d8f954b6875b9d401dc2a3c10bfd20d03db131ca73ab5", + "check_gpg": true + }, + { + "checksum": "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6", + "check_gpg": true + }, + { + "checksum": "sha256:2af3bbdab1f387ae7af2534846e33ab6d2ca7777399c64191f95699d576cd4ba", + "check_gpg": true + }, + { + "checksum": "sha256:c8e0a36410ebbd9db0a10e1fbecbae8f6288b9be86752d2e91725d5dd98ec65d", + "check_gpg": true + }, + { + "checksum": "sha256:cef060334e8c21b5d2e3a87bdd0ad5ac1be389d7794735506b9d3c65c2923cd3", + "check_gpg": true + }, + { + "checksum": "sha256:d219a6c4a2410d6ef9bad2b337557779b969e278b657ffede83c021c20f665ca", + "check_gpg": true + }, + { + "checksum": "sha256:e4eb72f080bdb339a4748fa9a0749953628189da1c930294c68902bb8b9f8eeb", + "check_gpg": true + }, + { + "checksum": "sha256:efece5a4b070f197a1db3f7e1d030878b1ccdff6a8a0d24c596ecfae374ef194", + "check_gpg": true + }, + { + "checksum": "sha256:8e9a916cd4843e7d09e3d1b814dbb55bb3b45672b1058044cfeaf8e19ad27bd7", + "check_gpg": true + }, + { + "checksum": "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4", + "check_gpg": true + }, + { + "checksum": "sha256:72b5df6982fecdbee30d40bbb6042c72ed0f31b787f289b4a27f0dffc6f609fe", + "check_gpg": true + }, + { + "checksum": "sha256:dc924dd33a9bd0b9483ebdbcf7caecbe1f48b8a135f1521291c8433fa76f4603", + "check_gpg": true + }, + { + "checksum": "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00", + "check_gpg": true + }, + { + "checksum": "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5", + "check_gpg": true + }, + { + "checksum": "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422", + "check_gpg": true + }, + { + "checksum": "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad", + "check_gpg": true + }, + { + "checksum": "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c", + "check_gpg": true + }, + { + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "checksum": "sha256:fb2ff56d3a273eac8775bac03b12f1cf8affa0b92585912de0abf3bc1ccdfa44", + "check_gpg": true + }, + { + "checksum": "sha256:f0509e333636e5c34726c8a2b8260bf88fe0a35b95cae6dda62191fee1be4c6a", + "check_gpg": true + }, + { + "checksum": "sha256:1e5f14d26556e380ed129289c1b98d46d951966e548613b9c2ee0d3616ac96d1", + "check_gpg": true + }, + { + "checksum": "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1", + "check_gpg": true + }, + { + "checksum": "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b", + "check_gpg": true + }, + { + "checksum": "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1", + "check_gpg": true + }, + { + "checksum": "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00", + "check_gpg": true + }, + { + "checksum": "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466", + "check_gpg": true + }, + { + "checksum": "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552", + "check_gpg": true + }, + { + "checksum": "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b", + "check_gpg": true + }, + { + "checksum": "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b", + "check_gpg": true + }, + { + "checksum": "sha256:22db6d1e1f34a43c3d045b6750ff3a32184d47c2aedf3dabc93640057de1f4fa", + "check_gpg": true + }, + { + "checksum": "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679", + "check_gpg": true + }, + { + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "checksum": "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834", + "check_gpg": true + }, + { + "checksum": "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c", + "check_gpg": true + }, + { + "checksum": "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59", + "check_gpg": true + }, + { + "checksum": "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a", + "check_gpg": true + }, + { + "checksum": "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077", + "check_gpg": true + }, + { + "checksum": "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c", + "check_gpg": true + }, + { + "checksum": "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc", + "check_gpg": true + }, + { + "checksum": "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141", + "check_gpg": true + }, + { + "checksum": "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1", + "check_gpg": true + }, + { + "checksum": "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1", + "check_gpg": true + }, + { + "checksum": "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7", + "check_gpg": true + }, + { + "checksum": "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295", + "check_gpg": true + }, + { + "checksum": "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc", + "check_gpg": true + }, + { + "checksum": "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18", + "check_gpg": true + }, + { + "checksum": "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de", + "check_gpg": true + }, + { + "checksum": "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8", + "check_gpg": true + }, + { + "checksum": "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be", + "check_gpg": true + }, + { + "checksum": "sha256:469d12368377399b8eaa7ec8cf1b6378ab18476b4a2b61b79091510a8945c6aa", + "check_gpg": true + }, + { + "checksum": "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2", + "check_gpg": true + }, + { + "checksum": "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090", + "check_gpg": true + }, + { + "checksum": "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d", + "check_gpg": true + }, + { + "checksum": "sha256:0f26eca4ac936554818769fe32aca5e878af2616e83f836ec463e59eb4f9f1f9", + "check_gpg": true + }, + { + "checksum": "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c", + "check_gpg": true + }, + { + "checksum": "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7", + "check_gpg": true + }, + { + "checksum": "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382", + "check_gpg": true + }, + { + "checksum": "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241", + "check_gpg": true + }, + { + "checksum": "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167", + "check_gpg": true + }, + { + "checksum": "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc", + "check_gpg": true + }, + { + "checksum": "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627", + "check_gpg": true + }, + { + "checksum": "sha256:0b54f374bcbe094dbc0d52d9661fe99ebff384026ce0ea39f2d6069e27bf8bdc", + "check_gpg": true + }, + { + "checksum": "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874", + "check_gpg": true + }, + { + "checksum": "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801", + "check_gpg": true + }, + { + "checksum": "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31", + "check_gpg": true + }, + { + "checksum": "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7", + "check_gpg": true + }, + { + "checksum": "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba", + "check_gpg": true + }, + { + "checksum": "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0", + "check_gpg": true + }, + { + "checksum": "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1", + "check_gpg": true + }, + { + "checksum": "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f", + "check_gpg": true + }, + { + "checksum": "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c", + "check_gpg": true + }, + { + "checksum": "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd", + "check_gpg": true + }, + { + "checksum": "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab", + "check_gpg": true + }, + { + "checksum": "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc", + "check_gpg": true + }, + { + "checksum": "sha256:6f7fbd57db9334a3cc7983d2e920afe92abe3f7e168702612d70e9ff405d79e6", + "check_gpg": true + }, + { + "checksum": "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345", + "check_gpg": true + }, + { + "checksum": "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde", + "check_gpg": true + }, + { + "checksum": "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37", + "check_gpg": true + }, + { + "checksum": "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f", + "check_gpg": true + }, + { + "checksum": "sha256:8f7b737ccb294fd5ba1d19075ea2a50a54e0265d8efa28aae0ade59d3e3a63be", + "check_gpg": true + }, + { + "checksum": "sha256:430f2f71be063eb9d04fe38659f62e29f47c9c878f9985d0569cb49e9c89ebc0", + "check_gpg": true + }, + { + "checksum": "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43", + "check_gpg": true + }, + { + "checksum": "sha256:c976ce75eda3dbe734117f6f558eafb2061bbef66086a04cb907a7ddbaea8bc2", + "check_gpg": true + }, + { + "checksum": "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664", + "check_gpg": true + }, + { + "checksum": "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57", + "check_gpg": true + }, + { + "checksum": "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d", + "check_gpg": true + }, + { + "checksum": "sha256:45bf4bef479712936db1d6859b043d13e6cad41c851b6e621fc315b39ecfa14b", + "check_gpg": true + }, + { + "checksum": "sha256:e91f7fcee1e3e72941c99eec3c3c3c9506cdaf83c01cf1eef257b91ccaff550c", + "check_gpg": true + }, + { + "checksum": "sha256:f8d885f57b3c7b30b6f18f68fed7fd3f19300c22abc5d5ee5029998e96c6b115", + "check_gpg": true + }, + { + "checksum": "sha256:f61555e6e74917be3f131bd5af9d9e30ed709111701e950b7ebd4392baf33f12", + "check_gpg": true + }, + { + "checksum": "sha256:2cd5a709ff2c286b73f850469b1ee6baf9077b90ce3bacb8ba712430c6632350", + "check_gpg": true + }, + { + "checksum": "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf", + "check_gpg": true + }, + { + "checksum": "sha256:8bd2655674b40e89f5f63af7f8ffafd0e9064a3378cdca050262a7272678e8e5", + "check_gpg": true + }, + { + "checksum": "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a", + "check_gpg": true + }, + { + "checksum": "sha256:6f729da330aaaea336458a8b6f3f1d2cc761693ba20bdda57fb9c49fb6f2120d", + "check_gpg": true + }, + { + "checksum": "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc", + "check_gpg": true + }, + { + "checksum": "sha256:cfeb5d0cb9c116e39292e3158c68ee62880cff4a5e3d098d20bf9567e5a576e1", + "check_gpg": true + }, + { + "checksum": "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf", + "check_gpg": true + }, + { + "checksum": "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc", + "check_gpg": true + }, + { + "checksum": "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730", + "check_gpg": true + }, + { + "checksum": "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0", + "check_gpg": true + }, + { + "checksum": "sha256:da923b379524f2d8d26905f26a9dc763cec36c40306c4c53db57100574ea89b8", + "check_gpg": true + }, + { + "checksum": "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3", + "check_gpg": true + }, + { + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "checksum": "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a", + "check_gpg": true + }, + { + "checksum": "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7", + "check_gpg": true + }, + { + "checksum": "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e", + "check_gpg": true + }, + { + "checksum": "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045", + "check_gpg": true + }, + { + "checksum": "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32", + "check_gpg": true + }, + { + "checksum": "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f", + "check_gpg": true + }, + { + "checksum": "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4", + "check_gpg": true + }, + { + "checksum": "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238", + "check_gpg": true + }, + { + "checksum": "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388", + "check_gpg": true + }, + { + "checksum": "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42", + "check_gpg": true + }, + { + "checksum": "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc", + "check_gpg": true + }, + { + "checksum": "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833", + "check_gpg": true + }, + { + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "checksum": "sha256:422625da0fbb99cc4da8eebebff892c6e73a87c81a33190f7a17e344f6bb709e", + "check_gpg": true + }, + { + "checksum": "sha256:307275b46896d56d23f5da5ab77a299941e77165ff44e846d6620eee1158131c", + "check_gpg": true + }, + { + "checksum": "sha256:a1bd1b5a2c47e57957a77d32f4fd705de1df30557837cfbc83b8f284e4ee0456", + "check_gpg": true + }, + { + "checksum": "sha256:6c1f9dc11de4d3af4d4c418b4556ee9659011d587e9da44bb039cb30ac326841", + "check_gpg": true + }, + { + "checksum": "sha256:e1bda9438577473413f3c7455ce84b6c8486adee3d4473fafcd28309ad8c2913", + "check_gpg": true + }, + { + "checksum": "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f", + "check_gpg": true + }, + { + "checksum": "sha256:9247561bad35a8a2f8269b2bbbd28d1bf5e6fcde1fe78e1fc3c0e712513e9703", + "check_gpg": true + }, + { + "checksum": "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb", + "check_gpg": true + }, + { + "checksum": "sha256:fccade859cbb884fd61c07433e6c316f794885cbb2186debcff3f6894d16d52c", + "check_gpg": true + }, + { + "checksum": "sha256:5593277fa685adba864393da8faf76950d6d8fb1483af036cdc08d8437c387bb", + "check_gpg": true + }, + { + "checksum": "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c", + "check_gpg": true + }, + { + "checksum": "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500", + "check_gpg": true + }, + { + "checksum": "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71", + "check_gpg": true + }, + { + "checksum": "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7", + "check_gpg": true + }, + { + "checksum": "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42", + "check_gpg": true + }, + { + "checksum": "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8", + "check_gpg": true + }, + { + "checksum": "sha256:95b45de2c57f35df43bff0c2ebe32c64183968b3a41c5673cfeeff5ece506b94", + "check_gpg": true + }, + { + "checksum": "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5", + "check_gpg": true + }, + { + "checksum": "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af", + "check_gpg": true + }, + { + "checksum": "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348", + "check_gpg": true + }, + { + "checksum": "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff", + "check_gpg": true + }, + { + "checksum": "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce", + "check_gpg": true + }, + { + "checksum": "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9", + "check_gpg": true + }, + { + "checksum": "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5", + "check_gpg": true + }, + { + "checksum": "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c", + "check_gpg": true + }, + { + "checksum": "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca", + "check_gpg": true + }, + { + "checksum": "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da", + "check_gpg": true + }, + { + "checksum": "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6", + "check_gpg": true + }, + { + "checksum": "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34", + "check_gpg": true + }, + { + "checksum": "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c", + "check_gpg": true + }, + { + "checksum": "sha256:e405d2edc9b9fc2c13242f0225049b071aa4159d09d8e2d501e8c4fe88a9710b", + "check_gpg": true + }, + { + "checksum": "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47", + "check_gpg": true + }, + { + "checksum": "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70", + "check_gpg": true + }, + { + "checksum": "sha256:a41579023e1db3dec06679ebc7788ece92686ea2a23c78dd749c98ddbc82d419", + "check_gpg": true + }, + { + "checksum": "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a", + "check_gpg": true + }, + { + "checksum": "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39", + "check_gpg": true + }, + { + "checksum": "sha256:764699ea124f85a7afcf65a2f138e3821770f8aa1ef134e1813e2b04477f0b74", + "check_gpg": true + }, + { + "checksum": "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83", + "check_gpg": true + }, + { + "checksum": "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2", + "check_gpg": true + }, + { + "checksum": "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519", + "check_gpg": true + }, + { + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "checksum": "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106", + "check_gpg": true + }, + { + "checksum": "sha256:cf6506ad88ecaab89efde02eee218365a36981114638c03989ba2768457ae335", + "check_gpg": true + }, + { + "checksum": "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc", + "check_gpg": true + }, + { + "checksum": "sha256:e9fa9fba03403e709388390a91f4b253e57b8104035f05fabdf4d5c0dd173ce1", + "check_gpg": true + }, + { + "checksum": "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2", + "check_gpg": true + }, + { + "checksum": "sha256:4f1cc98d7df9b059091bd6ced4910ac976043ef294b81099f3a26355e8964b15", + "check_gpg": true + }, + { + "checksum": "sha256:f0e87be0a26eaf271ebd84a6b71876216eb5a1d710f4e93473d6e0a53925926d", + "check_gpg": true + }, + { + "checksum": "sha256:80236171f32821454b938e0e929a5ae4033146014cf6defe14a888055824f465", + "check_gpg": true + }, + { + "checksum": "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38", + "check_gpg": true + }, + { + "checksum": "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b", + "check_gpg": true + }, + { + "checksum": "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68", + "check_gpg": true + }, + { + "checksum": "sha256:c3aa4d794cef51ba9fcbf3750baed55aabfa36062a48f61149ccf03364a0d256", + "check_gpg": true + }, + { + "checksum": "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3", + "check_gpg": true + }, + { + "checksum": "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2", + "check_gpg": true + }, + { + "checksum": "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0", + "check_gpg": true + }, + { + "checksum": "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234", + "check_gpg": true + }, + { + "checksum": "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313", + "check_gpg": true + }, + { + "checksum": "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0", + "check_gpg": true + }, + { + "checksum": "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b", + "check_gpg": true + }, + { + "checksum": "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c", + "check_gpg": true + }, + { + "checksum": "sha256:55c47c63deb00a9126c068299c01dfbdd39d58c6962138b862b92f5c7af8c898", + "check_gpg": true + }, + { + "checksum": "sha256:c459092a47bd2f904d9fe830735b512ef97b52785ee12abb2ba5c52465560f18", + "check_gpg": true + }, + { + "checksum": "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651", + "check_gpg": true + }, + { + "checksum": "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7", + "check_gpg": true + }, + { + "checksum": "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8", + "check_gpg": true + }, + { + "checksum": "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976", + "check_gpg": true + }, + { + "checksum": "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba", + "check_gpg": true + }, + { + "checksum": "sha256:5e07e49fdacc1f52b583ee685d03bf5ce045e9d34a323bd26607148a3937a9ce", + "check_gpg": true + }, + { + "checksum": "sha256:561014bd90810d512b4098c8e1d3ca05aa8c6a74bc258b3b7e3e2fd36a1ed157", + "check_gpg": true + }, + { + "checksum": "sha256:bd72cac3d1ef93cff067070925e5f339c720bef82c5ade4477388636fef53b91", + "check_gpg": true + }, + { + "checksum": "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c", + "check_gpg": true + }, + { + "checksum": "sha256:118548479396b007a80bc98e8cef770ea242ef6b20cd2922d595acd4c100946d", + "check_gpg": true + }, + { + "checksum": "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632", + "check_gpg": true + }, + { + "checksum": "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e", + "check_gpg": true + }, + { + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "checksum": "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9", + "check_gpg": true + }, + { + "checksum": "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653", + "check_gpg": true + }, + { + "checksum": "sha256:35c348bcd91fa114ad459b888131e5e5509259cffce33f22c44f92e57e9e5919", + "check_gpg": true + }, + { + "checksum": "sha256:63ff108f557096a9724053c37e37d3c2af1a1ec0b33124480b3742ff3da46292", + "check_gpg": true + }, + { + "checksum": "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f", + "check_gpg": true + }, + { + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "checksum": "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02", + "check_gpg": true + }, + { + "checksum": "sha256:a349c40034b5a181cab1bd409384ddb901c274e110b16721d434f5bf42e92c0f", + "check_gpg": true + }, + { + "checksum": "sha256:6807ac3ae6b7c0ea3a085106cedb687f79edfda500feb747039dc112ed3c518f", + "check_gpg": true + }, + { + "checksum": "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a", + "check_gpg": true + }, + { + "checksum": "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552", + "check_gpg": true + }, + { + "checksum": "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3", + "check_gpg": true + }, + { + "checksum": "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5", + "check_gpg": true + }, + { + "checksum": "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1", + "check_gpg": true + }, + { + "checksum": "sha256:ca6a71888b8d147342012c64533f61a41b26c788bbcd2844a2164ee007fac981", + "check_gpg": true + }, + { + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "checksum": "sha256:b49419bed59686efde6fc04953c2ab64a46c2bae46227a872bb3a823538c636d", + "check_gpg": true + }, + { + "checksum": "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444", + "check_gpg": true + }, + { + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "checksum": "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142", + "check_gpg": true + }, + { + "checksum": "sha256:b1094a9a9725546315d6eac7f792d5875a5f0c950cd84e43fc2fbb3e639ee43e", + "check_gpg": true + }, + { + "checksum": "sha256:bd2e7c9e3df976723ade08f16667b31044b678e62ee29e024ad193af6d9a28e1", + "check_gpg": true + }, + { + "checksum": "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7", + "check_gpg": true + }, + { + "checksum": "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d", + "check_gpg": true + }, + { + "checksum": "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc", + "check_gpg": true + }, + { + "checksum": "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e", + "check_gpg": true + }, + { + "checksum": "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663", + "check_gpg": true + }, + { + "checksum": "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2", + "check_gpg": true + }, + { + "checksum": "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac", + "check_gpg": true + }, + { + "checksum": "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03", + "check_gpg": true + }, + { + "checksum": "sha256:f50957375c79be57f391625b97d6ea74505e05f2edc6b9bc6768d5e3ad6ef8f8", + "check_gpg": true + }, + { + "checksum": "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576", + "check_gpg": true + }, + { + "checksum": "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb", + "check_gpg": true + }, + { + "checksum": "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165", + "check_gpg": true + }, + { + "checksum": "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108", + "check_gpg": true + }, + { + "checksum": "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a", + "check_gpg": true + }, + { + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "checksum": "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3", + "check_gpg": true + }, + { + "checksum": "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071", + "check_gpg": true + }, + { + "checksum": "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2", + "check_gpg": true + }, + { + "checksum": "sha256:687d00eb0b77446dbd78aaa0f4f99cc080c677930ad783120483614255264a3d", + "check_gpg": true + }, + { + "checksum": "sha256:6b694ee239a2e3f38c401e975de392e3731ad8b18be5a3249ea02f19e87cb5cb", + "check_gpg": true + }, + { + "checksum": "sha256:93161df6d62fe654c7cdba9ae36343d2549b437b27eac816a80f8d7c32a47162", + "check_gpg": true + }, + { + "checksum": "sha256:4f9bbd08f6019b3482342d616d6b04e6481924ea34fbfe8d30ef63402a92e9b1", + "check_gpg": true + }, + { + "checksum": "sha256:704ebfc50ace9417ed28f4530d778359a4c2f95d524c2e99346472245e30b548", + "check_gpg": true + }, + { + "checksum": "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5", + "check_gpg": true + }, + { + "checksum": "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454", + "check_gpg": true + }, + { + "checksum": "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612", + "check_gpg": true + }, + { + "checksum": "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1", + "check_gpg": true + }, + { + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "checksum": "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c", + "check_gpg": true + }, + { + "checksum": "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18", + "check_gpg": true + }, + { + "checksum": "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df", + "check_gpg": true + }, + { + "checksum": "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f", + "check_gpg": true + }, + { + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "checksum": "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7", + "check_gpg": true + }, + { + "checksum": "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f", + "check_gpg": true + }, + { + "checksum": "sha256:d2c819a7e607a9e22f55047ed03d064e4b0f125ad4fb20532c543a6d8af8bfa5", + "check_gpg": true + }, + { + "checksum": "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa", + "check_gpg": true + }, + { + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "checksum": "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05", + "check_gpg": true + }, + { + "checksum": "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431", + "check_gpg": true + }, + { + "checksum": "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488", + "check_gpg": true + }, + { + "checksum": "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c", + "check_gpg": true + }, + { + "checksum": "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "redhat": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "vfs_type": "ext4", + "path": "/", + "options": "defaults", + "freq": 1, + "passno": 1 + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "kernel_opts": "ro biosdevname=0 rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0", + "legacy": "i386-pc" + } + }, + { + "name": "org.osbuild.systemd", + "options": { + "enabled_services": [ + "sshd", + "waagent" + ], + "disabled_services": [ + "proc-sys-fs-binfmt_misc.mount", + "loadmodules.service" + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "vpc", + "filename": "disk.vhd", + "size": 2147483648, + "ptuuid": "0x14fc63d2", + "pttype": "mbr", + "partitions": [ + { + "start": 2048, + "bootable": true, + "filesystem": { + "type": "ext4", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.111", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm", + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/acl-2.2.53-4.fc31.x86_64.rpm", + "checksum": "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d", + "check_gpg": true + }, + { + "name": "adobe-source-code-pro-fonts", + "epoch": 0, + "version": "2.030.1.050", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm", + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "name": "adwaita-cursor-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "name": "adwaita-icon-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/alternatives-1.11-5.fc31.x86_64.rpm", + "checksum": "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081", + "check_gpg": true + }, + { + "name": "at-spi2-atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.x86_64.rpm", + "checksum": "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355", + "check_gpg": true + }, + { + "name": "at-spi2-core", + "epoch": 0, + "version": "2.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1", + "check_gpg": true + }, + { + "name": "atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/atk-2.34.1-1.fc31.x86_64.rpm", + "checksum": "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm", + "checksum": "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09", + "check_gpg": true + }, + { + "name": "avahi-libs", + "epoch": 0, + "version": "0.7", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/avahi-libs-0.7-20.fc31.x86_64.rpm", + "checksum": "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "8.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm", + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bash-5.0.7-3.fc31.x86_64.rpm", + "checksum": "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3", + "check_gpg": true + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.7", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/brotli-1.0.7-6.fc31.x86_64.rpm", + "checksum": "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.x86_64.rpm", + "checksum": "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm", + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "name": "cairo", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-1.16.0-6.fc31.x86_64.rpm", + "checksum": "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a", + "check_gpg": true + }, + { + "name": "cairo-gobject", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.x86_64.rpm", + "checksum": "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3", + "check_gpg": true + }, + { + "name": "colord-libs", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/colord-libs-1.4.4-2.fc31.x86_64.rpm", + "checksum": "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-8.31-4.fc31.x86_64.rpm", + "checksum": "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-common-8.31-4.fc31.x86_64.rpm", + "checksum": "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "12.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cpio-2.12-12.fc31.x86_64.rpm", + "checksum": "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-2.9.6-21.fc31.x86_64.rpm", + "checksum": "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.x86_64.rpm", + "checksum": "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20190816", + "release": "4.gitbb9bf99.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm", + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8", + "check_gpg": true + }, + { + "name": "cups-libs", + "epoch": 1, + "version": "2.2.12", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cups-libs-2.2.12-2.fc31.x86_64.rpm", + "checksum": "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/curl-7.66.0-1.fc31.x86_64.rpm", + "checksum": "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.x86_64.rpm", + "checksum": "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-1.12.16-3.fc31.x86_64.rpm", + "checksum": "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "21", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-broker-21-6.fc31.x86_64.rpm", + "checksum": "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm", + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-3.fc31.x86_64.rpm", + "checksum": "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71", + "check_gpg": true + }, + { + "name": "dconf", + "epoch": 0, + "version": "0.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dconf-0.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-2.fc31.x86_64.rpm", + "checksum": "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-1.02.163-2.fc31.x86_64.rpm", + "checksum": "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.x86_64.rpm", + "checksum": "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/diffutils-3.7-3.fc31.x86_64.rpm", + "checksum": "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dosfstools-4.1-9.fc31.x86_64.rpm", + "checksum": "sha256:b110ee65fa2dee77585ec77cab592cba2434d579f8afbed4d2a908ad1addccfc", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "27.git20181204.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-049-27.git20181204.fc31.1.x86_64.rpm", + "checksum": "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm", + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libelf-0.177-1.fc31.x86_64.rpm", + "checksum": "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libs-0.177-1.fc31.x86_64.rpm", + "checksum": "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/expat-2.2.8-1.fc31.x86_64.rpm", + "checksum": "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm", + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-31-1.noarch.rpm", + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-common-31-1.noarch.rpm", + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-repos-31-1.noarch.rpm", + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-5.37-3.fc31.x86_64.rpm", + "checksum": "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-libs-5.37-3.fc31.x86_64.rpm", + "checksum": "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.12", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/filesystem-3.12-2.fc31.x86_64.rpm", + "checksum": "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "24.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/findutils-4.6.0-24.fc31.x86_64.rpm", + "checksum": "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-7.fc31.x86_64.rpm", + "checksum": "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.x86_64.rpm", + "checksum": "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2", + "check_gpg": true + }, + { + "name": "fontconfig", + "epoch": 0, + "version": "2.13.92", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontconfig-2.13.92-3.fc31.x86_64.rpm", + "checksum": "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54", + "check_gpg": true + }, + { + "name": "fontpackages-filesystem", + "epoch": 0, + "version": "1.44", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm", + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.10.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/freetype-2.10.0-3.fc31.x86_64.rpm", + "checksum": "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee", + "check_gpg": true + }, + { + "name": "fribidi", + "epoch": 0, + "version": "1.0.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fribidi-1.0.5-4.fc31.x86_64.rpm", + "checksum": "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-8.fc31.x86_64.rpm", + "checksum": "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gawk-5.0.1-5.fc31.x86_64.rpm", + "checksum": "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203", + "check_gpg": true + }, + { + "name": "gcr", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-3.33.4-1.fc31.x86_64.rpm", + "checksum": "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd", + "check_gpg": true + }, + { + "name": "gcr-base", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-base-3.33.4-1.fc31.x86_64.rpm", + "checksum": "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.x86_64.rpm", + "checksum": "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.x86_64.rpm", + "checksum": "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2-modules", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.x86_64.rpm", + "checksum": "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3", + "check_gpg": true + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib-networking-2.62.1-1.fc31.x86_64.rpm", + "checksum": "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib2-2.62.1-1.fc31.x86_64.rpm", + "checksum": "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13", + "check_gpg": true + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:f67d5cc67029c6c38185f94b72aaa9034a49f5c4f166066c8268b41e1b18a202", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-common-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gmp-6.1.2-10.fc31.x86_64.rpm", + "checksum": "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a", + "check_gpg": true + }, + { + "name": "gnome-keyring", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-2.2.17-2.fc31.x86_64.rpm", + "checksum": "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.x86_64.rpm", + "checksum": "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnutls-3.6.10-1.fc31.x86_64.rpm", + "checksum": "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gpgme-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d", + "check_gpg": true + }, + { + "name": "graphite2", + "epoch": 0, + "version": "1.3.13", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/graphite2-1.3.13-1.fc31.x86_64.rpm", + "checksum": "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grep-3.3-3.fc31.x86_64.rpm", + "checksum": "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-common-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8", + "check_gpg": true + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-extra-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031", + "check_gpg": true + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8", + "check_gpg": true + }, + { + "name": "gtk-update-icon-cache", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.x86_64.rpm", + "checksum": "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d", + "check_gpg": true + }, + { + "name": "gtk3", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk3-3.24.12-3.fc31.x86_64.rpm", + "checksum": "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gzip-1.10-1.fc31.x86_64.rpm", + "checksum": "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01", + "check_gpg": true + }, + { + "name": "harfbuzz", + "epoch": 0, + "version": "2.6.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/harfbuzz-2.6.1-2.fc31.x86_64.rpm", + "checksum": "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994", + "check_gpg": true + }, + { + "name": "hicolor-icon-theme", + "epoch": 0, + "version": "0.17", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm", + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.x86_64.rpm", + "checksum": "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.3", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-libs-1.8.3-5.fc31.x86_64.rpm", + "checksum": "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4", + "check_gpg": true + }, + { + "name": "jasper-libs", + "epoch": 0, + "version": "2.0.14", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jasper-libs-2.0.14-9.fc31.x86_64.rpm", + "checksum": "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00", + "check_gpg": true + }, + { + "name": "jbigkit-libs", + "epoch": 0, + "version": "2.1", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jbigkit-libs-2.1-17.fc31.x86_64.rpm", + "checksum": "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-c-0.13.1-6.fc31.x86_64.rpm", + "checksum": "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422", + "check_gpg": true + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-glib-1.4.4-3.fc31.x86_64.rpm", + "checksum": "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-2.0.4-14.fc31.x86_64.rpm", + "checksum": "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-legacy-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-misc-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-3.fc31.x86_64.rpm", + "checksum": "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-26-4.fc31.x86_64.rpm", + "checksum": "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-libs-26-4.fc31.x86_64.rpm", + "checksum": "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kpartx-0.8.0-3.fc31.x86_64.rpm", + "checksum": "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.17", + "release": "45.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/krb5-libs-1.17-45.fc31.x86_64.rpm", + "checksum": "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466", + "check_gpg": true + }, + { + "name": "lcms2", + "epoch": 0, + "version": "2.9", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lcms2-2.9-6.fc31.x86_64.rpm", + "checksum": "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b", + "check_gpg": true + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-1.6.8-3.fc31.x86_64.rpm", + "checksum": "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679", + "check_gpg": true + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm", + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXau-1.0.9-2.fc31.x86_64.rpm", + "checksum": "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834", + "check_gpg": true + }, + { + "name": "libXcomposite", + "epoch": 0, + "version": "0.4.4", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcomposite-0.4.4-17.fc31.x86_64.rpm", + "checksum": "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c", + "check_gpg": true + }, + { + "name": "libXcursor", + "epoch": 0, + "version": "1.1.15", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcursor-1.1.15-6.fc31.x86_64.rpm", + "checksum": "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59", + "check_gpg": true + }, + { + "name": "libXdamage", + "epoch": 0, + "version": "1.1.4", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXdamage-1.1.4-17.fc31.x86_64.rpm", + "checksum": "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a", + "check_gpg": true + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXext-1.3.4-2.fc31.x86_64.rpm", + "checksum": "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077", + "check_gpg": true + }, + { + "name": "libXfixes", + "epoch": 0, + "version": "5.0.3", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXfixes-5.0.3-10.fc31.x86_64.rpm", + "checksum": "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c", + "check_gpg": true + }, + { + "name": "libXft", + "epoch": 0, + "version": "2.3.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXft-2.3.3-2.fc31.x86_64.rpm", + "checksum": "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc", + "check_gpg": true + }, + { + "name": "libXi", + "epoch": 0, + "version": "1.7.10", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXi-1.7.10-2.fc31.x86_64.rpm", + "checksum": "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141", + "check_gpg": true + }, + { + "name": "libXinerama", + "epoch": 0, + "version": "1.1.4", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXinerama-1.1.4-4.fc31.x86_64.rpm", + "checksum": "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1", + "check_gpg": true + }, + { + "name": "libXrandr", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrandr-1.5.2-2.fc31.x86_64.rpm", + "checksum": "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1", + "check_gpg": true + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrender-0.9.10-10.fc31.x86_64.rpm", + "checksum": "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7", + "check_gpg": true + }, + { + "name": "libXtst", + "epoch": 0, + "version": "1.2.3", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXtst-1.2.3-10.fc31.x86_64.rpm", + "checksum": "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libacl-2.2.53-4.fc31.x86_64.rpm", + "checksum": "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc", + "check_gpg": true + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.111", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libaio-0.3.111-6.fc31.x86_64.rpm", + "checksum": "sha256:ee6596a5010c2b4a038861828ecca240aa03c592dacd83c3a70d44cb8ee50408", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libarchive-3.4.0-1.fc31.x86_64.rpm", + "checksum": "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libargon2-20171227-3.fc31.x86_64.rpm", + "checksum": "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libassuan-2.5.3-2.fc31.x86_64.rpm", + "checksum": "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libattr-2.4.48-7.fc31.x86_64.rpm", + "checksum": "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libblkid-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-2.26-6.fc31.x86_64.rpm", + "checksum": "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-ng-0.7.9-8.fc31.x86_64.rpm", + "checksum": "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcom_err-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcomps-0.1.11-3.fc31.x86_64.rpm", + "checksum": "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcroco-0.6.13-2.fc31.x86_64.rpm", + "checksum": "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcurl-7.66.0-1.fc31.x86_64.rpm", + "checksum": "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241", + "check_gpg": true + }, + { + "name": "libdatrie", + "epoch": 0, + "version": "0.2.9", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdatrie-0.2.9-10.fc31.x86_64.rpm", + "checksum": "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-5.3.28-38.fc31.x86_64.rpm", + "checksum": "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-38.fc31.x86_64.rpm", + "checksum": "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdnf-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "28.20190324cvs.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.x86_64.rpm", + "checksum": "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801", + "check_gpg": true + }, + { + "name": "libepoxy", + "epoch": 0, + "version": "1.5.3", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libepoxy-1.5.3-4.fc31.x86_64.rpm", + "checksum": "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libevent-2.1.8-7.fc31.x86_64.rpm", + "checksum": "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libfdisk-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "23.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libffi-3.1-23.fc31.x86_64.rpm", + "checksum": "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcc-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-1.fc31.x86_64.rpm", + "checksum": "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgomp-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgpg-error-1.36-2.fc31.x86_64.rpm", + "checksum": "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd", + "check_gpg": true + }, + { + "name": "libgusb", + "epoch": 0, + "version": "0.3.0", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgusb-0.3.0-5.fc31.x86_64.rpm", + "checksum": "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libidn2-2.2.0-2.fc31.x86_64.rpm", + "checksum": "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc", + "check_gpg": true + }, + { + "name": "libjpeg-turbo", + "epoch": 0, + "version": "2.0.2", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.x86_64.rpm", + "checksum": "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-1.fc31.x86_64.rpm", + "checksum": "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-1.fc31.x86_64.rpm", + "checksum": "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libksba-1.3.5-10.fc31.x86_64.rpm", + "checksum": "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-9.fc31.x86_64.rpm", + "checksum": "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43", + "check_gpg": true + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodman-2.0.1-20.fc31.x86_64.rpm", + "checksum": "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664", + "check_gpg": true + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.15", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.x86_64.rpm", + "checksum": "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmount-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.39.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnghttp2-1.39.2-1.fc31.x86_64.rpm", + "checksum": "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "5.20180605git4a062cf.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.x86_64.rpm", + "checksum": "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.0", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpcap-1.9.0-4.fc31.x86_64.rpm", + "checksum": "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc", + "check_gpg": true + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.37", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpng-1.6.37-2.fc31.x86_64.rpm", + "checksum": "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf", + "check_gpg": true + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libproxy-0.4.15-14.fc31.x86_64.rpm", + "checksum": "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpsl-0.21.0-2.fc31.x86_64.rpm", + "checksum": "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpwquality-1.4.1-1.fc31.x86_64.rpm", + "checksum": "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.10.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/librepo-1.10.5-1.fc31.x86_64.rpm", + "checksum": "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.10.1", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm", + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libseccomp-2.4.1-1.fc31.x86_64.rpm", + "checksum": "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.19.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsecret-0.19.1-1.fc31.x86_64.rpm", + "checksum": "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-utils-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsemanage-2.9-3.fc31.x86_64.rpm", + "checksum": "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsepol-2.9-2.fc31.x86_64.rpm", + "checksum": "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsigsegv-2.11-8.fc31.x86_64.rpm", + "checksum": "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsmartcols-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.5", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsolv-0.7.5-3.fc31.x86_64.rpm", + "checksum": "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388", + "check_gpg": true + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.68.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsoup-2.68.2-1.fc31.x86_64.rpm", + "checksum": "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libss-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-0.9.0-6.fc31.x86_64.rpm", + "checksum": "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm", + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libstdc++-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.14", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtasn1-4.14-2.fc31.x86_64.rpm", + "checksum": "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c", + "check_gpg": true + }, + { + "name": "libthai", + "epoch": 0, + "version": "0.1.28", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libthai-0.1.28-3.fc31.x86_64.rpm", + "checksum": "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500", + "check_gpg": true + }, + { + "name": "libtiff", + "epoch": 0, + "version": "4.0.10", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtiff-4.0.10-6.fc31.x86_64.rpm", + "checksum": "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "2.rc3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.x86_64.rpm", + "checksum": "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libunistring-0.9.10-6.fc31.x86_64.rpm", + "checksum": "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.22", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libusbx-1.0.22-4.fc31.x86_64.rpm", + "checksum": "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libutempter-1.1.6-17.fc31.x86_64.rpm", + "checksum": "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuuid-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libverto-0.3.0-8.fc31.x86_64.rpm", + "checksum": "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348", + "check_gpg": true + }, + { + "name": "libwayland-client", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-client-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff", + "check_gpg": true + }, + { + "name": "libwayland-cursor", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce", + "check_gpg": true + }, + { + "name": "libwayland-egl", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9", + "check_gpg": true + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcb-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-4.4.10-1.fc31.x86_64.rpm", + "checksum": "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.10-1.fc31.x86_64.rpm", + "checksum": "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.8.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.x86_64.rpm", + "checksum": "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxml2-2.9.9-3.fc31.x86_64.rpm", + "checksum": "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libyaml-0.2.2-2.fc31.x86_64.rpm", + "checksum": "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libzstd-1.4.2-1.fc31.x86_64.rpm", + "checksum": "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-6.fc31.x86_64.rpm", + "checksum": "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-1.fc31.x86_64.rpm", + "checksum": "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mkpasswd-5.5.2-1.fc31.x86_64.rpm", + "checksum": "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mpfr-3.1.6-5.fc31.x86_64.rpm", + "checksum": "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-6.1-12.20190803.fc31.x86_64.rpm", + "checksum": "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm", + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.x86_64.rpm", + "checksum": "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nettle-3.5.1-3.fc31.x86_64.rpm", + "checksum": "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/npth-1.6-3.fc31.x86_64.rpm", + "checksum": "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openldap-2.4.47-3.fc31.x86_64.rpm", + "checksum": "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-1.1.1d-2.fc31.x86_64.rpm", + "checksum": "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.x86_64.rpm", + "checksum": "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.x86_64.rpm", + "checksum": "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/os-prober-1.77-3.fc31.x86_64.rpm", + "checksum": "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.x86_64.rpm", + "checksum": "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.x86_64.rpm", + "checksum": "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "18.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pam-1.3.1-18.fc31.x86_64.rpm", + "checksum": "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b", + "check_gpg": true + }, + { + "name": "pango", + "epoch": 0, + "version": "1.44.6", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pango-1.44.6-1.fc31.x86_64.rpm", + "checksum": "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.43", + "release": "2.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre-8.43-2.fc31.1.x86_64.rpm", + "checksum": "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.33", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre2-10.33-14.fc31.x86_64.rpm", + "checksum": "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pigz-2.4-5.fc31.x86_64.rpm", + "checksum": "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pinentry-1.1.0-6.fc31.x86_64.rpm", + "checksum": "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976", + "check_gpg": true + }, + { + "name": "pixman", + "epoch": 0, + "version": "0.38.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pixman-0.38.4-1.fc31.x86_64.rpm", + "checksum": "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/policycoreutils-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "18.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/popt-1.16-18.fc31.x86_64.rpm", + "checksum": "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-6.fc31.x86_64.rpm", + "checksum": "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm", + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm", + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-3.7.4-5.fc31.x86_64.rpm", + "checksum": "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.x86_64.rpm", + "checksum": "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libs-3.7.4-5.fc31.x86_64.rpm", + "checksum": "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-rpm-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-unbound-1.9.3-1.fc31.x86_64.rpm", + "checksum": "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7", + "check_gpg": true + }, + { + "name": "qemu-img", + "epoch": 2, + "version": "4.1.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qemu-img-4.1.0-2.fc31.x86_64.rpm", + "checksum": "sha256:669250ad47aad5939cf4d1b88036fd95a94845d8e0bbdb05e933f3d2fe262fea", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.x86_64.rpm", + "checksum": "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/readline-8.0-3.fc31.x86_64.rpm", + "checksum": "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc", + "check_gpg": true + }, + { + "name": "rest", + "epoch": 0, + "version": "0.8.1", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rest-0.8.1-6.fc31.x86_64.rpm", + "checksum": "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sed-4.5-4.fc31.x86_64.rpm", + "checksum": "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.3", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm", + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "16.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shadow-utils-4.6-16.fc31.x86_64.rpm", + "checksum": "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.14", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shared-mime-info-1.14-1.fc31.x86_64.rpm", + "checksum": "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.29.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.x86_64.rpm", + "checksum": "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5", + "check_gpg": true + }, + { + "name": "systemd-bootchart", + "epoch": 0, + "version": "233", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-bootchart-233-5.fc31.x86_64.rpm", + "checksum": "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm", + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-udev-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tar-1.32-2.fc31.x86_64.rpm", + "checksum": "sha256:9975496f29601a1c2cdb89e63aac698fdd8283ba3a52a9d91ead9473a0e064c8", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tss2-1331-2.fc31.x86_64.rpm", + "checksum": "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm", + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/unbound-libs-1.9.3-1.fc31.x86_64.rpm", + "checksum": "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/util-linux-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "15.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/which-2.21-15.fc31.x86_64.rpm", + "checksum": "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm", + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.27", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm", + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-5.2.4-6.fc31.x86_64.rpm", + "checksum": "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-libs-5.2.4-6.fc31.x86_64.rpm", + "checksum": "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.2", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.x86_64.rpm", + "checksum": "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "19.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zlib-1.2.11-19.fc31.x86_64.rpm", + "checksum": "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9", + "check_gpg": true + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.20.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/NetworkManager-1.20.4-1.fc31.x86_64.rpm", + "checksum": "sha256:6d8cbba688cea65fa80983cd7f140633e94cd58daa819342d1ae571a4ff174c6", + "check_gpg": true + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.20.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.20.4-1.fc31.x86_64.rpm", + "checksum": "sha256:2c5b5ce5f6e6d1d79f35eab253a12e19aeb863f4fe8ded94013f76a9834689fb", + "check_gpg": true + }, + { + "name": "WALinuxAgent", + "epoch": 0, + "version": "2.2.40", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/WALinuxAgent-2.2.40-2.fc31.noarch.rpm", + "checksum": "sha256:ef8a092b0af0d5a796dd461e7d72d56dbba51a3739195a8e5a40689f1cd2a0d7", + "check_gpg": true + }, + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.111", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm", + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/acl-2.2.53-4.fc31.x86_64.rpm", + "checksum": "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d", + "check_gpg": true + }, + { + "name": "adobe-source-code-pro-fonts", + "epoch": 0, + "version": "2.030.1.050", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm", + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "name": "adwaita-cursor-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "name": "adwaita-icon-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/alternatives-1.11-5.fc31.x86_64.rpm", + "checksum": "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081", + "check_gpg": true + }, + { + "name": "at-spi2-atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.x86_64.rpm", + "checksum": "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355", + "check_gpg": true + }, + { + "name": "at-spi2-core", + "epoch": 0, + "version": "2.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1", + "check_gpg": true + }, + { + "name": "atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/atk-2.34.1-1.fc31.x86_64.rpm", + "checksum": "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5", + "check_gpg": true + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm", + "checksum": "sha256:cc02df4125eaebf642edd9bf00031ec09871c285816c03112909ef1005410eaa", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm", + "checksum": "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09", + "check_gpg": true + }, + { + "name": "avahi-libs", + "epoch": 0, + "version": "0.7", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/avahi-libs-0.7-20.fc31.x86_64.rpm", + "checksum": "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "8.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm", + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bash-5.0.7-3.fc31.x86_64.rpm", + "checksum": "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3", + "check_gpg": true + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.7", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/brotli-1.0.7-6.fc31.x86_64.rpm", + "checksum": "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.x86_64.rpm", + "checksum": "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7", + "check_gpg": true + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.15.0", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/c-ares-1.15.0-4.fc31.x86_64.rpm", + "checksum": "sha256:239a9576864532edd325e72b62a10ef147a2bcc0a925079b19fb9cb74bab0dd7", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm", + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "name": "cairo", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-1.16.0-6.fc31.x86_64.rpm", + "checksum": "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a", + "check_gpg": true + }, + { + "name": "cairo-gobject", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.x86_64.rpm", + "checksum": "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3", + "check_gpg": true + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/chrony-3.5-4.fc31.x86_64.rpm", + "checksum": "sha256:07a3523159719382e2bb9b83961bfe00836cc97f75a9706d02ad73dddb161856", + "check_gpg": true + }, + { + "name": "colord-libs", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/colord-libs-1.4.4-2.fc31.x86_64.rpm", + "checksum": "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-8.31-4.fc31.x86_64.rpm", + "checksum": "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-common-8.31-4.fc31.x86_64.rpm", + "checksum": "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "12.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cpio-2.12-12.fc31.x86_64.rpm", + "checksum": "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-2.9.6-21.fc31.x86_64.rpm", + "checksum": "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.x86_64.rpm", + "checksum": "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20190816", + "release": "4.gitbb9bf99.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm", + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8", + "check_gpg": true + }, + { + "name": "cups-libs", + "epoch": 1, + "version": "2.2.12", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cups-libs-2.2.12-2.fc31.x86_64.rpm", + "checksum": "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/curl-7.66.0-1.fc31.x86_64.rpm", + "checksum": "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.x86_64.rpm", + "checksum": "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-1.12.16-3.fc31.x86_64.rpm", + "checksum": "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "21", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-broker-21-6.fc31.x86_64.rpm", + "checksum": "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm", + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-3.fc31.x86_64.rpm", + "checksum": "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71", + "check_gpg": true + }, + { + "name": "dconf", + "epoch": 0, + "version": "0.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dconf-0.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27", + "check_gpg": true + }, + { + "name": "dejavu-fonts-common", + "epoch": 0, + "version": "2.37", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dejavu-fonts-common-2.37-2.fc31.noarch.rpm", + "checksum": "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc", + "check_gpg": true + }, + { + "name": "dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-2.fc31.noarch.rpm", + "checksum": "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-2.fc31.x86_64.rpm", + "checksum": "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-1.02.163-2.fc31.x86_64.rpm", + "checksum": "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.x86_64.rpm", + "checksum": "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732", + "check_gpg": true + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.4.1", + "release": "15.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dhcp-client-4.4.1-15.fc31.x86_64.rpm", + "checksum": "sha256:33334afdde6c813b18c18897dca19fab5a2ce090eba0b5ea0a38f43f1081c190", + "check_gpg": true + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.4.1", + "release": "15.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dhcp-common-4.4.1-15.fc31.noarch.rpm", + "checksum": "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/diffutils-3.7-3.fc31.x86_64.rpm", + "checksum": "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.9", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-plugins-core-4.0.9-1.fc31.noarch.rpm", + "checksum": "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "27.git20181204.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-049-27.git20181204.fc31.1.x86_64.rpm", + "checksum": "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159", + "check_gpg": true + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "049", + "release": "27.git20181204.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-config-generic-049-27.git20181204.fc31.1.x86_64.rpm", + "checksum": "sha256:34a9986b8b61812ceaf32ce3b189bd0b2cb4adaaf47d76ec1f50ce07c45b5675", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89", + "check_gpg": true + }, + { + "name": "ebtables-legacy", + "epoch": 0, + "version": "2.0.10", + "release": "37.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/ebtables-legacy-2.0.10-37.fc31.x86_64.rpm", + "checksum": "sha256:cab1b0c3bdae2a07e15b90b414f50753c759e325b6f0cddfa27895748c77f082", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm", + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libelf-0.177-1.fc31.x86_64.rpm", + "checksum": "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libs-0.177-1.fc31.x86_64.rpm", + "checksum": "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/expat-2.2.8-1.fc31.x86_64.rpm", + "checksum": "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm", + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-31-1.noarch.rpm", + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-common-31-1.noarch.rpm", + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-repos-31-1.noarch.rpm", + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-5.37-3.fc31.x86_64.rpm", + "checksum": "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-libs-5.37-3.fc31.x86_64.rpm", + "checksum": "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.12", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/filesystem-3.12-2.fc31.x86_64.rpm", + "checksum": "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "24.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/findutils-4.6.0-24.fc31.x86_64.rpm", + "checksum": "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-7.fc31.x86_64.rpm", + "checksum": "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.x86_64.rpm", + "checksum": "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2", + "check_gpg": true + }, + { + "name": "firewalld", + "epoch": 0, + "version": "0.7.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/firewalld-0.7.2-1.fc31.noarch.rpm", + "checksum": "sha256:ab35a2d7f21aac1f33f9521607789e1c303fb63e4ea0681e9f724f86a1cc15c5", + "check_gpg": true + }, + { + "name": "firewalld-filesystem", + "epoch": 0, + "version": "0.7.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/firewalld-filesystem-0.7.2-1.fc31.noarch.rpm", + "checksum": "sha256:e76b3b9d14a0016542f61d0ab2981fbf2d779e522d0c36d9095a1cffecbf9272", + "check_gpg": true + }, + { + "name": "fontconfig", + "epoch": 0, + "version": "2.13.92", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontconfig-2.13.92-3.fc31.x86_64.rpm", + "checksum": "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54", + "check_gpg": true + }, + { + "name": "fontpackages-filesystem", + "epoch": 0, + "version": "1.44", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm", + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.10.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/freetype-2.10.0-3.fc31.x86_64.rpm", + "checksum": "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee", + "check_gpg": true + }, + { + "name": "fribidi", + "epoch": 0, + "version": "1.0.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fribidi-1.0.5-4.fc31.x86_64.rpm", + "checksum": "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-8.fc31.x86_64.rpm", + "checksum": "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gawk-5.0.1-5.fc31.x86_64.rpm", + "checksum": "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203", + "check_gpg": true + }, + { + "name": "gcr", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-3.33.4-1.fc31.x86_64.rpm", + "checksum": "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd", + "check_gpg": true + }, + { + "name": "gcr-base", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-base-3.33.4-1.fc31.x86_64.rpm", + "checksum": "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.x86_64.rpm", + "checksum": "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.x86_64.rpm", + "checksum": "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2-modules", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.x86_64.rpm", + "checksum": "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c", + "check_gpg": true + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20190806", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/geolite2-city-20190806-1.fc31.noarch.rpm", + "checksum": "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565", + "check_gpg": true + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20190806", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/geolite2-country-20190806-1.fc31.noarch.rpm", + "checksum": "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3", + "check_gpg": true + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib-networking-2.62.1-1.fc31.x86_64.rpm", + "checksum": "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib2-2.62.1-1.fc31.x86_64.rpm", + "checksum": "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13", + "check_gpg": true + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:f67d5cc67029c6c38185f94b72aaa9034a49f5c4f166066c8268b41e1b18a202", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-common-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb", + "check_gpg": true + }, + { + "name": "glibc-langpack-en", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:6f2dae9b49bed8e1036a21aadd92ea2eb371979f6714ec2bce5742de051eeb14", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gmp-6.1.2-10.fc31.x86_64.rpm", + "checksum": "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a", + "check_gpg": true + }, + { + "name": "gnome-keyring", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-2.2.17-2.fc31.x86_64.rpm", + "checksum": "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.x86_64.rpm", + "checksum": "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnutls-3.6.10-1.fc31.x86_64.rpm", + "checksum": "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458", + "check_gpg": true + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.62.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gobject-introspection-1.62.0-1.fc31.x86_64.rpm", + "checksum": "sha256:ab5ad6fc076fd82be6a2ca9d77998fc06c2c9e7296de960b7549239efb9f971d", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gpgme-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d", + "check_gpg": true + }, + { + "name": "graphite2", + "epoch": 0, + "version": "1.3.13", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/graphite2-1.3.13-1.fc31.x86_64.rpm", + "checksum": "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grep-3.3-3.fc31.x86_64.rpm", + "checksum": "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada", + "check_gpg": true + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/groff-base-1.22.3-20.fc31.x86_64.rpm", + "checksum": "sha256:21ccdbe703caa6a08056d2bc75c1e184f811472a6e320e5af64b8757fcd07166", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-common-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8", + "check_gpg": true + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-extra-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031", + "check_gpg": true + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8", + "check_gpg": true + }, + { + "name": "gtk-update-icon-cache", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.x86_64.rpm", + "checksum": "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d", + "check_gpg": true + }, + { + "name": "gtk3", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk3-3.24.12-3.fc31.x86_64.rpm", + "checksum": "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gzip-1.10-1.fc31.x86_64.rpm", + "checksum": "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01", + "check_gpg": true + }, + { + "name": "harfbuzz", + "epoch": 0, + "version": "2.6.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/harfbuzz-2.6.1-2.fc31.x86_64.rpm", + "checksum": "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994", + "check_gpg": true + }, + { + "name": "hicolor-icon-theme", + "epoch": 0, + "version": "0.17", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm", + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.20", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hostname-3.20-9.fc31.x86_64.rpm", + "checksum": "sha256:a188b5c697b734d4ed7d8f954b6875b9d401dc2a3c10bfd20d03db131ca73ab5", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.x86_64.rpm", + "checksum": "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6", + "check_gpg": true + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.02", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/initscripts-10.02-2.fc31.x86_64.rpm", + "checksum": "sha256:2af3bbdab1f387ae7af2534846e33ab6d2ca7777399c64191f95699d576cd4ba", + "check_gpg": true + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.2.5", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipcalc-0.2.5-3.fc31.x86_64.rpm", + "checksum": "sha256:c8e0a36410ebbd9db0a10e1fbecbae8f6288b9be86752d2e91725d5dd98ec65d", + "check_gpg": true + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.3.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iproute-5.3.0-1.fc31.x86_64.rpm", + "checksum": "sha256:cef060334e8c21b5d2e3a87bdd0ad5ac1be389d7794735506b9d3c65c2923cd3", + "check_gpg": true + }, + { + "name": "iproute-tc", + "epoch": 0, + "version": "5.3.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iproute-tc-5.3.0-1.fc31.x86_64.rpm", + "checksum": "sha256:d219a6c4a2410d6ef9bad2b337557779b969e278b657ffede83c021c20f665ca", + "check_gpg": true + }, + { + "name": "ipset", + "epoch": 0, + "version": "7.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipset-7.3-1.fc31.x86_64.rpm", + "checksum": "sha256:e4eb72f080bdb339a4748fa9a0749953628189da1c930294c68902bb8b9f8eeb", + "check_gpg": true + }, + { + "name": "ipset-libs", + "epoch": 0, + "version": "7.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipset-libs-7.3-1.fc31.x86_64.rpm", + "checksum": "sha256:efece5a4b070f197a1db3f7e1d030878b1ccdff6a8a0d24c596ecfae374ef194", + "check_gpg": true + }, + { + "name": "iptables", + "epoch": 0, + "version": "1.8.3", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-1.8.3-5.fc31.x86_64.rpm", + "checksum": "sha256:8e9a916cd4843e7d09e3d1b814dbb55bb3b45672b1058044cfeaf8e19ad27bd7", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.3", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-libs-1.8.3-5.fc31.x86_64.rpm", + "checksum": "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4", + "check_gpg": true + }, + { + "name": "iputils", + "epoch": 0, + "version": "20190515", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iputils-20190515-3.fc31.x86_64.rpm", + "checksum": "sha256:72b5df6982fecdbee30d40bbb6042c72ed0f31b787f289b4a27f0dffc6f609fe", + "check_gpg": true + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.12", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jansson-2.12-4.fc31.x86_64.rpm", + "checksum": "sha256:dc924dd33a9bd0b9483ebdbcf7caecbe1f48b8a135f1521291c8433fa76f4603", + "check_gpg": true + }, + { + "name": "jasper-libs", + "epoch": 0, + "version": "2.0.14", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jasper-libs-2.0.14-9.fc31.x86_64.rpm", + "checksum": "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00", + "check_gpg": true + }, + { + "name": "jbigkit-libs", + "epoch": 0, + "version": "2.1", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jbigkit-libs-2.1-17.fc31.x86_64.rpm", + "checksum": "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-c-0.13.1-6.fc31.x86_64.rpm", + "checksum": "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422", + "check_gpg": true + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-glib-1.4.4-3.fc31.x86_64.rpm", + "checksum": "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-2.0.4-14.fc31.x86_64.rpm", + "checksum": "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-legacy-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-misc-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "name": "kernel", + "epoch": 0, + "version": "5.3.7", + "release": "301.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-5.3.7-301.fc31.x86_64.rpm", + "checksum": "sha256:fb2ff56d3a273eac8775bac03b12f1cf8affa0b92585912de0abf3bc1ccdfa44", + "check_gpg": true + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "5.3.7", + "release": "301.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-core-5.3.7-301.fc31.x86_64.rpm", + "checksum": "sha256:f0509e333636e5c34726c8a2b8260bf88fe0a35b95cae6dda62191fee1be4c6a", + "check_gpg": true + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "5.3.7", + "release": "301.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-modules-5.3.7-301.fc31.x86_64.rpm", + "checksum": "sha256:1e5f14d26556e380ed129289c1b98d46d951966e548613b9c2ee0d3616ac96d1", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-3.fc31.x86_64.rpm", + "checksum": "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-26-4.fc31.x86_64.rpm", + "checksum": "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-libs-26-4.fc31.x86_64.rpm", + "checksum": "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kpartx-0.8.0-3.fc31.x86_64.rpm", + "checksum": "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.17", + "release": "45.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/krb5-libs-1.17-45.fc31.x86_64.rpm", + "checksum": "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466", + "check_gpg": true + }, + { + "name": "langpacks-core-en", + "epoch": 0, + "version": "2.0", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/langpacks-core-en-2.0-7.fc31.noarch.rpm", + "checksum": "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552", + "check_gpg": true + }, + { + "name": "langpacks-en", + "epoch": 0, + "version": "2.0", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/langpacks-en-2.0-7.fc31.noarch.rpm", + "checksum": "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b", + "check_gpg": true + }, + { + "name": "lcms2", + "epoch": 0, + "version": "2.9", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lcms2-2.9-6.fc31.x86_64.rpm", + "checksum": "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b", + "check_gpg": true + }, + { + "name": "less", + "epoch": 0, + "version": "551", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/less-551-2.fc31.x86_64.rpm", + "checksum": "sha256:22db6d1e1f34a43c3d045b6750ff3a32184d47c2aedf3dabc93640057de1f4fa", + "check_gpg": true + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-1.6.8-3.fc31.x86_64.rpm", + "checksum": "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679", + "check_gpg": true + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm", + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXau-1.0.9-2.fc31.x86_64.rpm", + "checksum": "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834", + "check_gpg": true + }, + { + "name": "libXcomposite", + "epoch": 0, + "version": "0.4.4", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcomposite-0.4.4-17.fc31.x86_64.rpm", + "checksum": "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c", + "check_gpg": true + }, + { + "name": "libXcursor", + "epoch": 0, + "version": "1.1.15", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcursor-1.1.15-6.fc31.x86_64.rpm", + "checksum": "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59", + "check_gpg": true + }, + { + "name": "libXdamage", + "epoch": 0, + "version": "1.1.4", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXdamage-1.1.4-17.fc31.x86_64.rpm", + "checksum": "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a", + "check_gpg": true + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXext-1.3.4-2.fc31.x86_64.rpm", + "checksum": "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077", + "check_gpg": true + }, + { + "name": "libXfixes", + "epoch": 0, + "version": "5.0.3", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXfixes-5.0.3-10.fc31.x86_64.rpm", + "checksum": "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c", + "check_gpg": true + }, + { + "name": "libXft", + "epoch": 0, + "version": "2.3.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXft-2.3.3-2.fc31.x86_64.rpm", + "checksum": "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc", + "check_gpg": true + }, + { + "name": "libXi", + "epoch": 0, + "version": "1.7.10", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXi-1.7.10-2.fc31.x86_64.rpm", + "checksum": "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141", + "check_gpg": true + }, + { + "name": "libXinerama", + "epoch": 0, + "version": "1.1.4", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXinerama-1.1.4-4.fc31.x86_64.rpm", + "checksum": "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1", + "check_gpg": true + }, + { + "name": "libXrandr", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrandr-1.5.2-2.fc31.x86_64.rpm", + "checksum": "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1", + "check_gpg": true + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrender-0.9.10-10.fc31.x86_64.rpm", + "checksum": "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7", + "check_gpg": true + }, + { + "name": "libXtst", + "epoch": 0, + "version": "1.2.3", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXtst-1.2.3-10.fc31.x86_64.rpm", + "checksum": "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libacl-2.2.53-4.fc31.x86_64.rpm", + "checksum": "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libarchive-3.4.0-1.fc31.x86_64.rpm", + "checksum": "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libargon2-20171227-3.fc31.x86_64.rpm", + "checksum": "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libassuan-2.5.3-2.fc31.x86_64.rpm", + "checksum": "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libattr-2.4.48-7.fc31.x86_64.rpm", + "checksum": "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be", + "check_gpg": true + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-43.fc31.x86_64.rpm", + "checksum": "sha256:469d12368377399b8eaa7ec8cf1b6378ab18476b4a2b61b79091510a8945c6aa", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libblkid-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-2.26-6.fc31.x86_64.rpm", + "checksum": "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-ng-0.7.9-8.fc31.x86_64.rpm", + "checksum": "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d", + "check_gpg": true + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcollection-0.7.0-43.fc31.x86_64.rpm", + "checksum": "sha256:0f26eca4ac936554818769fe32aca5e878af2616e83f836ec463e59eb4f9f1f9", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcom_err-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcomps-0.1.11-3.fc31.x86_64.rpm", + "checksum": "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcroco-0.6.13-2.fc31.x86_64.rpm", + "checksum": "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcurl-7.66.0-1.fc31.x86_64.rpm", + "checksum": "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241", + "check_gpg": true + }, + { + "name": "libdatrie", + "epoch": 0, + "version": "0.2.9", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdatrie-0.2.9-10.fc31.x86_64.rpm", + "checksum": "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-5.3.28-38.fc31.x86_64.rpm", + "checksum": "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-38.fc31.x86_64.rpm", + "checksum": "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627", + "check_gpg": true + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdhash-0.5.0-43.fc31.x86_64.rpm", + "checksum": "sha256:0b54f374bcbe094dbc0d52d9661fe99ebff384026ce0ea39f2d6069e27bf8bdc", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdnf-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "28.20190324cvs.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.x86_64.rpm", + "checksum": "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801", + "check_gpg": true + }, + { + "name": "libepoxy", + "epoch": 0, + "version": "1.5.3", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libepoxy-1.5.3-4.fc31.x86_64.rpm", + "checksum": "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libevent-2.1.8-7.fc31.x86_64.rpm", + "checksum": "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libfdisk-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "23.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libffi-3.1-23.fc31.x86_64.rpm", + "checksum": "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcc-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-1.fc31.x86_64.rpm", + "checksum": "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgomp-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgpg-error-1.36-2.fc31.x86_64.rpm", + "checksum": "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd", + "check_gpg": true + }, + { + "name": "libgusb", + "epoch": 0, + "version": "0.3.0", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgusb-0.3.0-5.fc31.x86_64.rpm", + "checksum": "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libidn2-2.2.0-2.fc31.x86_64.rpm", + "checksum": "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc", + "check_gpg": true + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libini_config-1.3.1-43.fc31.x86_64.rpm", + "checksum": "sha256:6f7fbd57db9334a3cc7983d2e920afe92abe3f7e168702612d70e9ff405d79e6", + "check_gpg": true + }, + { + "name": "libjpeg-turbo", + "epoch": 0, + "version": "2.0.2", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.x86_64.rpm", + "checksum": "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-1.fc31.x86_64.rpm", + "checksum": "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-1.fc31.x86_64.rpm", + "checksum": "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libksba-1.3.5-10.fc31.x86_64.rpm", + "checksum": "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f", + "check_gpg": true + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.0.7", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libldb-2.0.7-1.fc31.x86_64.rpm", + "checksum": "sha256:8f7b737ccb294fd5ba1d19075ea2a50a54e0265d8efa28aae0ade59d3e3a63be", + "check_gpg": true + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.2.0", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmaxminddb-1.2.0-8.fc31.x86_64.rpm", + "checksum": "sha256:430f2f71be063eb9d04fe38659f62e29f47c9c878f9985d0569cb49e9c89ebc0", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-9.fc31.x86_64.rpm", + "checksum": "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmnl-1.0.4-10.fc31.x86_64.rpm", + "checksum": "sha256:c976ce75eda3dbe734117f6f558eafb2061bbef66086a04cb907a7ddbaea8bc2", + "check_gpg": true + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodman-2.0.1-20.fc31.x86_64.rpm", + "checksum": "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664", + "check_gpg": true + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.15", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.x86_64.rpm", + "checksum": "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmount-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d", + "check_gpg": true + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libndp-1.7-4.fc31.x86_64.rpm", + "checksum": "sha256:45bf4bef479712936db1d6859b043d13e6cad41c851b6e621fc315b39ecfa14b", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-3.fc31.x86_64.rpm", + "checksum": "sha256:e91f7fcee1e3e72941c99eec3c3c3c9506cdaf83c01cf1eef257b91ccaff550c", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "16.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-16.fc31.x86_64.rpm", + "checksum": "sha256:f8d885f57b3c7b30b6f18f68fed7fd3f19300c22abc5d5ee5029998e96c6b115", + "check_gpg": true + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.4.1", + "release": "1.rc1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnfsidmap-2.4.1-1.rc1.fc31.x86_64.rpm", + "checksum": "sha256:f61555e6e74917be3f131bd5af9d9e30ed709111701e950b7ebd4392baf33f12", + "check_gpg": true + }, + { + "name": "libnftnl", + "epoch": 0, + "version": "1.1.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnftnl-1.1.3-2.fc31.x86_64.rpm", + "checksum": "sha256:2cd5a709ff2c286b73f850469b1ee6baf9077b90ce3bacb8ba712430c6632350", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.39.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnghttp2-1.39.2-1.fc31.x86_64.rpm", + "checksum": "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf", + "check_gpg": true + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnl3-3.5.0-1.fc31.x86_64.rpm", + "checksum": "sha256:8bd2655674b40e89f5f63af7f8ffafd0e9064a3378cdca050262a7272678e8e5", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "5.20180605git4a062cf.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.x86_64.rpm", + "checksum": "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a", + "check_gpg": true + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-43.fc31.x86_64.rpm", + "checksum": "sha256:6f729da330aaaea336458a8b6f3f1d2cc761693ba20bdda57fb9c49fb6f2120d", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.0", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpcap-1.9.0-4.fc31.x86_64.rpm", + "checksum": "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc", + "check_gpg": true + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpipeline-1.5.1-3.fc31.x86_64.rpm", + "checksum": "sha256:cfeb5d0cb9c116e39292e3158c68ee62880cff4a5e3d098d20bf9567e5a576e1", + "check_gpg": true + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.37", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpng-1.6.37-2.fc31.x86_64.rpm", + "checksum": "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf", + "check_gpg": true + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libproxy-0.4.15-14.fc31.x86_64.rpm", + "checksum": "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpsl-0.21.0-2.fc31.x86_64.rpm", + "checksum": "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpwquality-1.4.1-1.fc31.x86_64.rpm", + "checksum": "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0", + "check_gpg": true + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libref_array-0.1.5-43.fc31.x86_64.rpm", + "checksum": "sha256:da923b379524f2d8d26905f26a9dc763cec36c40306c4c53db57100574ea89b8", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.10.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/librepo-1.10.5-1.fc31.x86_64.rpm", + "checksum": "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.10.1", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm", + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libseccomp-2.4.1-1.fc31.x86_64.rpm", + "checksum": "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.19.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsecret-0.19.1-1.fc31.x86_64.rpm", + "checksum": "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-utils-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsemanage-2.9-3.fc31.x86_64.rpm", + "checksum": "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsepol-2.9-2.fc31.x86_64.rpm", + "checksum": "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsigsegv-2.11-8.fc31.x86_64.rpm", + "checksum": "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsmartcols-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.5", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsolv-0.7.5-3.fc31.x86_64.rpm", + "checksum": "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388", + "check_gpg": true + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.68.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsoup-2.68.2-1.fc31.x86_64.rpm", + "checksum": "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libss-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-0.9.0-6.fc31.x86_64.rpm", + "checksum": "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm", + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_autofs-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:422625da0fbb99cc4da8eebebff892c6e73a87c81a33190f7a17e344f6bb709e", + "check_gpg": true + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_certmap-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:307275b46896d56d23f5da5ab77a299941e77165ff44e846d6620eee1158131c", + "check_gpg": true + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:a1bd1b5a2c47e57957a77d32f4fd705de1df30557837cfbc83b8f284e4ee0456", + "check_gpg": true + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:6c1f9dc11de4d3af4d4c418b4556ee9659011d587e9da44bb039cb30ac326841", + "check_gpg": true + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:e1bda9438577473413f3c7455ce84b6c8486adee3d4473fafcd28309ad8c2913", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libstdc++-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f", + "check_gpg": true + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtalloc-2.3.0-1.fc31.x86_64.rpm", + "checksum": "sha256:9247561bad35a8a2f8269b2bbbd28d1bf5e6fcde1fe78e1fc3c0e712513e9703", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.14", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtasn1-4.14-2.fc31.x86_64.rpm", + "checksum": "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb", + "check_gpg": true + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtdb-1.4.2-1.fc31.x86_64.rpm", + "checksum": "sha256:fccade859cbb884fd61c07433e6c316f794885cbb2186debcff3f6894d16d52c", + "check_gpg": true + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtevent-0.10.1-1.fc31.x86_64.rpm", + "checksum": "sha256:5593277fa685adba864393da8faf76950d6d8fb1483af036cdc08d8437c387bb", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c", + "check_gpg": true + }, + { + "name": "libthai", + "epoch": 0, + "version": "0.1.28", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libthai-0.1.28-3.fc31.x86_64.rpm", + "checksum": "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500", + "check_gpg": true + }, + { + "name": "libtiff", + "epoch": 0, + "version": "4.0.10", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtiff-4.0.10-6.fc31.x86_64.rpm", + "checksum": "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "2.rc3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.x86_64.rpm", + "checksum": "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libunistring-0.9.10-6.fc31.x86_64.rpm", + "checksum": "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.22", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libusbx-1.0.22-4.fc31.x86_64.rpm", + "checksum": "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8", + "check_gpg": true + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuser-0.62-21.fc31.x86_64.rpm", + "checksum": "sha256:95b45de2c57f35df43bff0c2ebe32c64183968b3a41c5673cfeeff5ece506b94", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libutempter-1.1.6-17.fc31.x86_64.rpm", + "checksum": "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuuid-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libverto-0.3.0-8.fc31.x86_64.rpm", + "checksum": "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348", + "check_gpg": true + }, + { + "name": "libwayland-client", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-client-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff", + "check_gpg": true + }, + { + "name": "libwayland-cursor", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce", + "check_gpg": true + }, + { + "name": "libwayland-egl", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9", + "check_gpg": true + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcb-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-4.4.10-1.fc31.x86_64.rpm", + "checksum": "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.10-1.fc31.x86_64.rpm", + "checksum": "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.8.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.x86_64.rpm", + "checksum": "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxml2-2.9.9-3.fc31.x86_64.rpm", + "checksum": "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libyaml-0.2.2-2.fc31.x86_64.rpm", + "checksum": "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libzstd-1.4.2-1.fc31.x86_64.rpm", + "checksum": "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c", + "check_gpg": true + }, + { + "name": "linux-atm-libs", + "epoch": 0, + "version": "2.5.1", + "release": "25.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-25.fc31.x86_64.rpm", + "checksum": "sha256:e405d2edc9b9fc2c13242f0225049b071aa4159d09d8e2d501e8c4fe88a9710b", + "check_gpg": true + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20190923", + "release": "102.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-firmware-20190923-102.fc31.noarch.rpm", + "checksum": "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47", + "check_gpg": true + }, + { + "name": "linux-firmware-whence", + "epoch": 0, + "version": "20190923", + "release": "102.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-firmware-whence-20190923-102.fc31.noarch.rpm", + "checksum": "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70", + "check_gpg": true + }, + { + "name": "lmdb-libs", + "epoch": 0, + "version": "0.9.23", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.23-3.fc31.x86_64.rpm", + "checksum": "sha256:a41579023e1db3dec06679ebc7788ece92686ea2a23c78dd749c98ddbc82d419", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-6.fc31.x86_64.rpm", + "checksum": "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-1.fc31.x86_64.rpm", + "checksum": "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39", + "check_gpg": true + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.8.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/man-db-2.8.4-5.fc31.x86_64.rpm", + "checksum": "sha256:764699ea124f85a7afcf65a2f138e3821770f8aa1ef134e1813e2b04477f0b74", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mkpasswd-5.5.2-1.fc31.x86_64.rpm", + "checksum": "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mpfr-3.1.6-5.fc31.x86_64.rpm", + "checksum": "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-6.1-12.20190803.fc31.x86_64.rpm", + "checksum": "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm", + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.x86_64.rpm", + "checksum": "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106", + "check_gpg": true + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.55.20160912git.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/net-tools-2.0-0.55.20160912git.fc31.x86_64.rpm", + "checksum": "sha256:cf6506ad88ecaab89efde02eee218365a36981114638c03989ba2768457ae335", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nettle-3.5.1-3.fc31.x86_64.rpm", + "checksum": "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc", + "check_gpg": true + }, + { + "name": "nftables", + "epoch": 1, + "version": "0.9.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nftables-0.9.1-3.fc31.x86_64.rpm", + "checksum": "sha256:e9fa9fba03403e709388390a91f4b253e57b8104035f05fabdf4d5c0dd173ce1", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/npth-1.6-3.fc31.x86_64.rpm", + "checksum": "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2", + "check_gpg": true + }, + { + "name": "ntfs-3g", + "epoch": 2, + "version": "2017.3.23", + "release": "12.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ntfs-3g-2017.3.23-12.fc31.x86_64.rpm", + "checksum": "sha256:4f1cc98d7df9b059091bd6ced4910ac976043ef294b81099f3a26355e8964b15", + "check_gpg": true + }, + { + "name": "ntfs-3g-system-compression", + "epoch": 0, + "version": "1.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ntfs-3g-system-compression-1.0-2.fc31.x86_64.rpm", + "checksum": "sha256:f0e87be0a26eaf271ebd84a6b71876216eb5a1d710f4e93473d6e0a53925926d", + "check_gpg": true + }, + { + "name": "ntfsprogs", + "epoch": 2, + "version": "2017.3.23", + "release": "12.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ntfsprogs-2017.3.23-12.fc31.x86_64.rpm", + "checksum": "sha256:80236171f32821454b938e0e929a5ae4033146014cf6defe14a888055824f465", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openldap-2.4.47-3.fc31.x86_64.rpm", + "checksum": "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68", + "check_gpg": true + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-server-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:c3aa4d794cef51ba9fcbf3750baed55aabfa36062a48f61149ccf03364a0d256", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-1.1.1d-2.fc31.x86_64.rpm", + "checksum": "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.x86_64.rpm", + "checksum": "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.x86_64.rpm", + "checksum": "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/os-prober-1.77-3.fc31.x86_64.rpm", + "checksum": "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.x86_64.rpm", + "checksum": "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.x86_64.rpm", + "checksum": "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "18.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pam-1.3.1-18.fc31.x86_64.rpm", + "checksum": "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b", + "check_gpg": true + }, + { + "name": "pango", + "epoch": 0, + "version": "1.44.6", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pango-1.44.6-1.fc31.x86_64.rpm", + "checksum": "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c", + "check_gpg": true + }, + { + "name": "parted", + "epoch": 0, + "version": "3.2.153", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/parted-3.2.153-1.fc31.x86_64.rpm", + "checksum": "sha256:55c47c63deb00a9126c068299c01dfbdd39d58c6962138b862b92f5c7af8c898", + "check_gpg": true + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/passwd-0.80-6.fc31.x86_64.rpm", + "checksum": "sha256:c459092a47bd2f904d9fe830735b512ef97b52785ee12abb2ba5c52465560f18", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.43", + "release": "2.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre-8.43-2.fc31.1.x86_64.rpm", + "checksum": "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.33", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre2-10.33-14.fc31.x86_64.rpm", + "checksum": "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pigz-2.4-5.fc31.x86_64.rpm", + "checksum": "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pinentry-1.1.0-6.fc31.x86_64.rpm", + "checksum": "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976", + "check_gpg": true + }, + { + "name": "pixman", + "epoch": 0, + "version": "0.38.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pixman-0.38.4-1.fc31.x86_64.rpm", + "checksum": "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba", + "check_gpg": true + }, + { + "name": "plymouth", + "epoch": 0, + "version": "0.9.4", + "release": "10.20191001gita8aad27.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/plymouth-0.9.4-10.20191001gita8aad27.fc31.x86_64.rpm", + "checksum": "sha256:5e07e49fdacc1f52b583ee685d03bf5ce045e9d34a323bd26607148a3937a9ce", + "check_gpg": true + }, + { + "name": "plymouth-core-libs", + "epoch": 0, + "version": "0.9.4", + "release": "10.20191001gita8aad27.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/plymouth-core-libs-0.9.4-10.20191001gita8aad27.fc31.x86_64.rpm", + "checksum": "sha256:561014bd90810d512b4098c8e1d3ca05aa8c6a74bc258b3b7e3e2fd36a1ed157", + "check_gpg": true + }, + { + "name": "plymouth-scripts", + "epoch": 0, + "version": "0.9.4", + "release": "10.20191001gita8aad27.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/plymouth-scripts-0.9.4-10.20191001gita8aad27.fc31.x86_64.rpm", + "checksum": "sha256:bd72cac3d1ef93cff067070925e5f339c720bef82c5ade4477388636fef53b91", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/policycoreutils-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c", + "check_gpg": true + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.116", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/polkit-libs-0.116-4.fc31.x86_64.rpm", + "checksum": "sha256:118548479396b007a80bc98e8cef770ea242ef6b20cd2922d595acd4c100946d", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "18.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/popt-1.16-18.fc31.x86_64.rpm", + "checksum": "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-6.fc31.x86_64.rpm", + "checksum": "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm", + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm", + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-3.7.4-5.fc31.x86_64.rpm", + "checksum": "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9", + "check_gpg": true + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.8.0", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-3.fc31.noarch.rpm", + "checksum": "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653", + "check_gpg": true + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.8", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dbus-1.2.8-6.fc31.x86_64.rpm", + "checksum": "sha256:35c348bcd91fa114ad459b888131e5e5509259cffce33f22c44f92e57e9e5919", + "check_gpg": true + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.4.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-decorator-4.4.0-2.fc31.noarch.rpm", + "checksum": "sha256:63ff108f557096a9724053c37e37d3c2af1a1ec0b33124480b3742ff3da46292", + "check_gpg": true + }, + { + "name": "python3-distro", + "epoch": 0, + "version": "1.4.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-2.fc31.noarch.rpm", + "checksum": "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.9", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-plugins-core-4.0.9-1.fc31.noarch.rpm", + "checksum": "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02", + "check_gpg": true + }, + { + "name": "python3-firewall", + "epoch": 0, + "version": "0.7.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-firewall-0.7.2-1.fc31.noarch.rpm", + "checksum": "sha256:a349c40034b5a181cab1bd409384ddb901c274e110b16721d434f5bf42e92c0f", + "check_gpg": true + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.34.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gobject-base-3.34.0-3.fc31.x86_64.rpm", + "checksum": "sha256:6807ac3ae6b7c0ea3a085106cedb687f79edfda500feb747039dc112ed3c518f", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.x86_64.rpm", + "checksum": "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libs-3.7.4-5.fc31.x86_64.rpm", + "checksum": "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1", + "check_gpg": true + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libselinux-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:ca6a71888b8d147342012c64533f61a41b26c788bbcd2844a2164ee007fac981", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "name": "python3-pyasn1", + "epoch": 0, + "version": "0.4.4", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pyasn1-0.4.4-5.fc31.noarch.rpm", + "checksum": "sha256:b49419bed59686efde6fc04953c2ab64a46c2bae46227a872bb3a823538c636d", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-rpm-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.12.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-six-1.12.0-2.fc31.noarch.rpm", + "checksum": "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142", + "check_gpg": true + }, + { + "name": "python3-slip", + "epoch": 0, + "version": "0.6.4", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-slip-0.6.4-16.fc31.noarch.rpm", + "checksum": "sha256:b1094a9a9725546315d6eac7f792d5875a5f0c950cd84e43fc2fbb3e639ee43e", + "check_gpg": true + }, + { + "name": "python3-slip-dbus", + "epoch": 0, + "version": "0.6.4", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-slip-dbus-0.6.4-16.fc31.noarch.rpm", + "checksum": "sha256:bd2e7c9e3df976723ade08f16667b31044b678e62ee29e024ad193af6d9a28e1", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-unbound-1.9.3-1.fc31.x86_64.rpm", + "checksum": "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.x86_64.rpm", + "checksum": "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/readline-8.0-3.fc31.x86_64.rpm", + "checksum": "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc", + "check_gpg": true + }, + { + "name": "rest", + "epoch": 0, + "version": "0.8.1", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rest-0.8.1-6.fc31.x86_64.rpm", + "checksum": "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e", + "check_gpg": true + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rootfiles-8.1-25.fc31.noarch.rpm", + "checksum": "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:f50957375c79be57f391625b97d6ea74505e05f2edc6b9bc6768d5e3ad6ef8f8", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sed-4.5-4.fc31.x86_64.rpm", + "checksum": "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.4", + "release": "37.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/selinux-policy-3.14.4-37.fc31.noarch.rpm", + "checksum": "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.4", + "release": "37.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.4-37.fc31.noarch.rpm", + "checksum": "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.3", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm", + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "16.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shadow-utils-4.6-16.fc31.x86_64.rpm", + "checksum": "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.14", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shared-mime-info-1.14-1.fc31.x86_64.rpm", + "checksum": "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.29.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.x86_64.rpm", + "checksum": "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2", + "check_gpg": true + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-client-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:687d00eb0b77446dbd78aaa0f4f99cc080c677930ad783120483614255264a3d", + "check_gpg": true + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-common-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:6b694ee239a2e3f38c401e975de392e3731ad8b18be5a3249ea02f19e87cb5cb", + "check_gpg": true + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-kcm-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:93161df6d62fe654c7cdba9ae36343d2549b437b27eac816a80f8d7c32a47162", + "check_gpg": true + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-nfs-idmap-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:4f9bbd08f6019b3482342d616d6b04e6481924ea34fbfe8d30ef63402a92e9b1", + "check_gpg": true + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.8.28", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sudo-1.8.28-1.fc31.x86_64.rpm", + "checksum": "sha256:704ebfc50ace9417ed28f4530d778359a4c2f95d524c2e99346472245e30b548", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5", + "check_gpg": true + }, + { + "name": "systemd-bootchart", + "epoch": 0, + "version": "233", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-bootchart-233-5.fc31.x86_64.rpm", + "checksum": "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm", + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-udev-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tss2-1331-2.fc31.x86_64.rpm", + "checksum": "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm", + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/unbound-libs-1.9.3-1.fc31.x86_64.rpm", + "checksum": "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/util-linux-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f", + "check_gpg": true + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.1.2102", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/v/vim-minimal-8.1.2102-1.fc31.x86_64.rpm", + "checksum": "sha256:d2c819a7e607a9e22f55047ed03d064e4b0f125ad4fb20532c543a6d8af8bfa5", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "15.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/which-2.21-15.fc31.x86_64.rpm", + "checksum": "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm", + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.27", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm", + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-5.2.4-6.fc31.x86_64.rpm", + "checksum": "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-libs-5.2.4-6.fc31.x86_64.rpm", + "checksum": "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431", + "check_gpg": true + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/y/yum-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.2", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.x86_64.rpm", + "checksum": "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "19.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zlib-1.2.11-19.fc31.x86_64.rpm", + "checksum": "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9", + "check_gpg": true + } + ], + "checksums": { + "0": "sha256:e39c033883bf8520576de0b0875b5c8cfc40d04f1a0aaf01f1edf57267807580" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac ro biosdevname=0 rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0" + }, + "bootloader": "grub", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "initrd": "/boot/initramfs-5.3.7-301.fc31.x86_64.img", + "linux": "/boot/vmlinuz-5.3.7-301.fc31.x86_64", + "options": "$kernelopts", + "title": "Fedora (5.3.7-301.fc31.x86_64) 31 (Thirty One)", + "version": "5.3.7-301.fc31.x86_64" + } + ], + "firewall-enabled": [ + "ssh", + "mdns", + "dhcpv6-client" + ], + "fstab": [ + [ + "UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "/", + "ext4", + "defaults", + "1", + "1" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:993:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:997:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "redhat:x:1000:", + "render:x:996:", + "root:x:0:", + "ssh_keys:x:998:", + "sshd:x:74:", + "sys:x:3:", + "systemd-coredump:x:995:", + "systemd-journal:x:190:", + "systemd-network:x:192:", + "systemd-resolve:x:193:", + "systemd-timesync:x:994:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:999:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "raw", + "os-release": { + "ANSI_COLOR": "0;34", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:fedoraproject:fedora:31", + "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f31/system-administrators-guide/", + "HOME_URL": "https://fedoraproject.org/", + "ID": "fedora", + "LOGO": "fedora-logo-icon", + "NAME": "Fedora", + "PLATFORM_ID": "platform:f31", + "PRETTY_NAME": "Fedora 31 (Thirty One)", + "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy", + "REDHAT_BUGZILLA_PRODUCT": "Fedora", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "31", + "REDHAT_SUPPORT_PRODUCT": "Fedora", + "REDHAT_SUPPORT_PRODUCT_VERSION": "31", + "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help", + "VERSION": "31 (Thirty One)", + "VERSION_CODENAME": "", + "VERSION_ID": "31" + }, + "packages": [ + "NetworkManager-1.20.4-1.fc31.x86_64", + "NetworkManager-libnm-1.20.4-1.fc31.x86_64", + "WALinuxAgent-2.2.40-2.fc31.noarch", + "abattis-cantarell-fonts-0.111-3.fc31.noarch", + "acl-2.2.53-4.fc31.x86_64", + "adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch", + "adwaita-cursor-theme-3.34.0-1.fc31.noarch", + "adwaita-icon-theme-3.34.0-1.fc31.noarch", + "alternatives-1.11-5.fc31.x86_64", + "at-spi2-atk-2.34.1-1.fc31.x86_64", + "at-spi2-core-2.34.0-1.fc31.x86_64", + "atk-2.34.1-1.fc31.x86_64", + "audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64", + "audit-libs-3.0-0.12.20190507gitf58ec40.fc31.x86_64", + "avahi-libs-0.7-20.fc31.x86_64", + "basesystem-11-8.fc31.noarch", + "bash-5.0.7-3.fc31.x86_64", + "brotli-1.0.7-6.fc31.x86_64", + "bzip2-libs-1.0.8-1.fc31.x86_64", + "c-ares-1.15.0-4.fc31.x86_64", + "ca-certificates-2019.2.32-3.fc31.noarch", + "cairo-1.16.0-6.fc31.x86_64", + "cairo-gobject-1.16.0-6.fc31.x86_64", + "chrony-3.5-4.fc31.x86_64", + "colord-libs-1.4.4-2.fc31.x86_64", + "coreutils-8.31-4.fc31.x86_64", + "coreutils-common-8.31-4.fc31.x86_64", + "cpio-2.12-12.fc31.x86_64", + "cracklib-2.9.6-21.fc31.x86_64", + "cracklib-dicts-2.9.6-21.fc31.x86_64", + "crypto-policies-20190816-4.gitbb9bf99.fc31.noarch", + "cryptsetup-libs-2.2.1-1.fc31.x86_64", + "cups-libs-2.2.12-2.fc31.x86_64", + "curl-7.66.0-1.fc31.x86_64", + "cyrus-sasl-lib-2.1.27-2.fc31.x86_64", + "dbus-1.12.16-3.fc31.x86_64", + "dbus-broker-21-6.fc31.x86_64", + "dbus-common-1.12.16-3.fc31.noarch", + "dbus-libs-1.12.16-3.fc31.x86_64", + "dconf-0.34.0-1.fc31.x86_64", + "dejavu-fonts-common-2.37-2.fc31.noarch", + "dejavu-sans-fonts-2.37-2.fc31.noarch", + "deltarpm-3.6.2-2.fc31.x86_64", + "device-mapper-1.02.163-2.fc31.x86_64", + "device-mapper-libs-1.02.163-2.fc31.x86_64", + "dhcp-client-4.4.1-15.fc31.x86_64", + "dhcp-common-4.4.1-15.fc31.noarch", + "diffutils-3.7-3.fc31.x86_64", + "dnf-4.2.9-5.fc31.noarch", + "dnf-data-4.2.9-5.fc31.noarch", + "dnf-plugins-core-4.0.9-1.fc31.noarch", + "dracut-049-27.git20181204.fc31.1.x86_64", + "dracut-config-generic-049-27.git20181204.fc31.1.x86_64", + "e2fsprogs-1.45.3-1.fc31.x86_64", + "e2fsprogs-libs-1.45.3-1.fc31.x86_64", + "ebtables-legacy-2.0.10-37.fc31.x86_64", + "elfutils-default-yama-scope-0.177-1.fc31.noarch", + "elfutils-libelf-0.177-1.fc31.x86_64", + "elfutils-libs-0.177-1.fc31.x86_64", + "expat-2.2.8-1.fc31.x86_64", + "fedora-gpg-keys-31-1.noarch", + "fedora-release-31-1.noarch", + "fedora-release-common-31-1.noarch", + "fedora-repos-31-1.noarch", + "file-5.37-3.fc31.x86_64", + "file-libs-5.37-3.fc31.x86_64", + "filesystem-3.12-2.fc31.x86_64", + "findutils-4.6.0-24.fc31.x86_64", + "fipscheck-1.5.0-7.fc31.x86_64", + "fipscheck-lib-1.5.0-7.fc31.x86_64", + "firewalld-0.7.2-1.fc31.noarch", + "firewalld-filesystem-0.7.2-1.fc31.noarch", + "fontconfig-2.13.92-3.fc31.x86_64", + "fontpackages-filesystem-1.44-25.fc31.noarch", + "freetype-2.10.0-3.fc31.x86_64", + "fribidi-1.0.5-4.fc31.x86_64", + "fuse-libs-2.9.9-8.fc31.x86_64", + "gawk-5.0.1-5.fc31.x86_64", + "gcr-3.33.4-1.fc31.x86_64", + "gcr-base-3.33.4-1.fc31.x86_64", + "gdbm-libs-1.18.1-1.fc31.x86_64", + "gdk-pixbuf2-2.40.0-1.fc31.x86_64", + "gdk-pixbuf2-modules-2.40.0-1.fc31.x86_64", + "geolite2-city-20190806-1.fc31.noarch", + "geolite2-country-20190806-1.fc31.noarch", + "gettext-0.20.1-2.fc31.x86_64", + "gettext-libs-0.20.1-2.fc31.x86_64", + "glib-networking-2.62.1-1.fc31.x86_64", + "glib2-2.62.1-1.fc31.x86_64", + "glibc-2.30-5.fc31.x86_64", + "glibc-all-langpacks-2.30-5.fc31.x86_64", + "glibc-common-2.30-5.fc31.x86_64", + "glibc-langpack-en-2.30-5.fc31.x86_64", + "gmp-6.1.2-10.fc31.x86_64", + "gnome-keyring-3.34.0-1.fc31.x86_64", + "gnupg2-2.2.17-2.fc31.x86_64", + "gnupg2-smime-2.2.17-2.fc31.x86_64", + "gnutls-3.6.10-1.fc31.x86_64", + "gobject-introspection-1.62.0-1.fc31.x86_64", + "gpg-pubkey-3c3359c4-5c6ae44d", + "gpgme-1.13.1-3.fc31.x86_64", + "graphite2-1.3.13-1.fc31.x86_64", + "grep-3.3-3.fc31.x86_64", + "groff-base-1.22.3-20.fc31.x86_64", + "grub2-common-2.02-100.fc31.noarch", + "grub2-pc-2.02-100.fc31.x86_64", + "grub2-pc-modules-2.02-100.fc31.noarch", + "grub2-tools-2.02-100.fc31.x86_64", + "grub2-tools-extra-2.02-100.fc31.x86_64", + "grub2-tools-minimal-2.02-100.fc31.x86_64", + "gsettings-desktop-schemas-3.34.0-1.fc31.x86_64", + "gtk-update-icon-cache-3.24.12-3.fc31.x86_64", + "gtk3-3.24.12-3.fc31.x86_64", + "gzip-1.10-1.fc31.x86_64", + "harfbuzz-2.6.1-2.fc31.x86_64", + "hicolor-icon-theme-0.17-7.fc31.noarch", + "hostname-3.20-9.fc31.x86_64", + "ima-evm-utils-1.2.1-2.fc31.x86_64", + "initscripts-10.02-2.fc31.x86_64", + "ipcalc-0.2.5-3.fc31.x86_64", + "iproute-5.3.0-1.fc31.x86_64", + "iproute-tc-5.3.0-1.fc31.x86_64", + "ipset-7.3-1.fc31.x86_64", + "ipset-libs-7.3-1.fc31.x86_64", + "iptables-1.8.3-5.fc31.x86_64", + "iptables-libs-1.8.3-5.fc31.x86_64", + "iputils-20190515-3.fc31.x86_64", + "jansson-2.12-4.fc31.x86_64", + "jasper-libs-2.0.14-9.fc31.x86_64", + "jbigkit-libs-2.1-17.fc31.x86_64", + "json-c-0.13.1-6.fc31.x86_64", + "json-glib-1.4.4-3.fc31.x86_64", + "kbd-2.0.4-14.fc31.x86_64", + "kbd-legacy-2.0.4-14.fc31.noarch", + "kbd-misc-2.0.4-14.fc31.noarch", + "kernel-5.3.7-301.fc31.x86_64", + "kernel-core-5.3.7-301.fc31.x86_64", + "kernel-modules-5.3.7-301.fc31.x86_64", + "keyutils-libs-1.6-3.fc31.x86_64", + "kmod-26-4.fc31.x86_64", + "kmod-libs-26-4.fc31.x86_64", + "kpartx-0.8.0-3.fc31.x86_64", + "krb5-libs-1.17-45.fc31.x86_64", + "langpacks-core-en-2.0-7.fc31.noarch", + "langpacks-en-2.0-7.fc31.noarch", + "lcms2-2.9-6.fc31.x86_64", + "less-551-2.fc31.x86_64", + "libX11-1.6.8-3.fc31.x86_64", + "libX11-common-1.6.8-3.fc31.noarch", + "libXau-1.0.9-2.fc31.x86_64", + "libXcomposite-0.4.4-17.fc31.x86_64", + "libXcursor-1.1.15-6.fc31.x86_64", + "libXdamage-1.1.4-17.fc31.x86_64", + "libXext-1.3.4-2.fc31.x86_64", + "libXfixes-5.0.3-10.fc31.x86_64", + "libXft-2.3.3-2.fc31.x86_64", + "libXi-1.7.10-2.fc31.x86_64", + "libXinerama-1.1.4-4.fc31.x86_64", + "libXrandr-1.5.2-2.fc31.x86_64", + "libXrender-0.9.10-10.fc31.x86_64", + "libXtst-1.2.3-10.fc31.x86_64", + "libacl-2.2.53-4.fc31.x86_64", + "libarchive-3.4.0-1.fc31.x86_64", + "libargon2-20171227-3.fc31.x86_64", + "libassuan-2.5.3-2.fc31.x86_64", + "libattr-2.4.48-7.fc31.x86_64", + "libbasicobjects-0.1.1-43.fc31.x86_64", + "libblkid-2.34-3.fc31.x86_64", + "libcap-2.26-6.fc31.x86_64", + "libcap-ng-0.7.9-8.fc31.x86_64", + "libcollection-0.7.0-43.fc31.x86_64", + "libcom_err-1.45.3-1.fc31.x86_64", + "libcomps-0.1.11-3.fc31.x86_64", + "libcroco-0.6.13-2.fc31.x86_64", + "libcurl-7.66.0-1.fc31.x86_64", + "libdatrie-0.2.9-10.fc31.x86_64", + "libdb-5.3.28-38.fc31.x86_64", + "libdb-utils-5.3.28-38.fc31.x86_64", + "libdhash-0.5.0-43.fc31.x86_64", + "libdnf-0.35.3-6.fc31.x86_64", + "libedit-3.1-28.20190324cvs.fc31.x86_64", + "libepoxy-1.5.3-4.fc31.x86_64", + "libevent-2.1.8-7.fc31.x86_64", + "libfdisk-2.34-3.fc31.x86_64", + "libffi-3.1-23.fc31.x86_64", + "libgcc-9.2.1-1.fc31.x86_64", + "libgcrypt-1.8.5-1.fc31.x86_64", + "libgomp-9.2.1-1.fc31.x86_64", + "libgpg-error-1.36-2.fc31.x86_64", + "libgusb-0.3.0-5.fc31.x86_64", + "libidn2-2.2.0-2.fc31.x86_64", + "libini_config-1.3.1-43.fc31.x86_64", + "libjpeg-turbo-2.0.2-4.fc31.x86_64", + "libkcapi-1.1.5-1.fc31.x86_64", + "libkcapi-hmaccalc-1.1.5-1.fc31.x86_64", + "libksba-1.3.5-10.fc31.x86_64", + "libldb-2.0.7-1.fc31.x86_64", + "libmaxminddb-1.2.0-8.fc31.x86_64", + "libmetalink-0.1.3-9.fc31.x86_64", + "libmnl-1.0.4-10.fc31.x86_64", + "libmodman-2.0.1-20.fc31.x86_64", + "libmodulemd1-1.8.15-3.fc31.x86_64", + "libmount-2.34-3.fc31.x86_64", + "libndp-1.7-4.fc31.x86_64", + "libnetfilter_conntrack-1.0.7-3.fc31.x86_64", + "libnfnetlink-1.0.1-16.fc31.x86_64", + "libnfsidmap-2.4.1-1.rc1.fc31.x86_64", + "libnftnl-1.1.3-2.fc31.x86_64", + "libnghttp2-1.39.2-1.fc31.x86_64", + "libnl3-3.5.0-1.fc31.x86_64", + "libnsl2-1.2.0-5.20180605git4a062cf.fc31.x86_64", + "libpath_utils-0.2.1-43.fc31.x86_64", + "libpcap-1.9.0-4.fc31.x86_64", + "libpipeline-1.5.1-3.fc31.x86_64", + "libpng-1.6.37-2.fc31.x86_64", + "libproxy-0.4.15-14.fc31.x86_64", + "libpsl-0.21.0-2.fc31.x86_64", + "libpwquality-1.4.1-1.fc31.x86_64", + "libref_array-0.1.5-43.fc31.x86_64", + "librepo-1.10.5-1.fc31.x86_64", + "libreport-filesystem-2.10.1-2.fc31.noarch", + "libseccomp-2.4.1-1.fc31.x86_64", + "libsecret-0.19.1-1.fc31.x86_64", + "libselinux-2.9-5.fc31.x86_64", + "libselinux-utils-2.9-5.fc31.x86_64", + "libsemanage-2.9-3.fc31.x86_64", + "libsepol-2.9-2.fc31.x86_64", + "libsigsegv-2.11-8.fc31.x86_64", + "libsmartcols-2.34-3.fc31.x86_64", + "libsolv-0.7.5-3.fc31.x86_64", + "libsoup-2.68.2-1.fc31.x86_64", + "libss-1.45.3-1.fc31.x86_64", + "libssh-0.9.0-6.fc31.x86_64", + "libssh-config-0.9.0-6.fc31.noarch", + "libsss_autofs-2.2.2-1.fc31.x86_64", + "libsss_certmap-2.2.2-1.fc31.x86_64", + "libsss_idmap-2.2.2-1.fc31.x86_64", + "libsss_nss_idmap-2.2.2-1.fc31.x86_64", + "libsss_sudo-2.2.2-1.fc31.x86_64", + "libstdc++-9.2.1-1.fc31.x86_64", + "libtalloc-2.3.0-1.fc31.x86_64", + "libtasn1-4.14-2.fc31.x86_64", + "libtdb-1.4.2-1.fc31.x86_64", + "libtevent-0.10.1-1.fc31.x86_64", + "libtextstyle-0.20.1-2.fc31.x86_64", + "libthai-0.1.28-3.fc31.x86_64", + "libtiff-4.0.10-6.fc31.x86_64", + "libtirpc-1.1.4-2.rc3.fc31.x86_64", + "libunistring-0.9.10-6.fc31.x86_64", + "libusbx-1.0.22-4.fc31.x86_64", + "libuser-0.62-21.fc31.x86_64", + "libutempter-1.1.6-17.fc31.x86_64", + "libuuid-2.34-3.fc31.x86_64", + "libverto-0.3.0-8.fc31.x86_64", + "libwayland-client-1.17.0-2.fc31.x86_64", + "libwayland-cursor-1.17.0-2.fc31.x86_64", + "libwayland-egl-1.17.0-2.fc31.x86_64", + "libxcb-1.13.1-3.fc31.x86_64", + "libxcrypt-4.4.10-1.fc31.x86_64", + "libxcrypt-compat-4.4.10-1.fc31.x86_64", + "libxkbcommon-0.8.4-2.fc31.x86_64", + "libxml2-2.9.9-3.fc31.x86_64", + "libyaml-0.2.2-2.fc31.x86_64", + "libzstd-1.4.2-1.fc31.x86_64", + "linux-atm-libs-2.5.1-25.fc31.x86_64", + "linux-firmware-20190923-102.fc31.noarch", + "linux-firmware-whence-20190923-102.fc31.noarch", + "lmdb-libs-0.9.23-3.fc31.x86_64", + "lua-libs-5.3.5-6.fc31.x86_64", + "lz4-libs-1.9.1-1.fc31.x86_64", + "man-db-2.8.4-5.fc31.x86_64", + "mkpasswd-5.5.2-1.fc31.x86_64", + "mpfr-3.1.6-5.fc31.x86_64", + "ncurses-6.1-12.20190803.fc31.x86_64", + "ncurses-base-6.1-12.20190803.fc31.noarch", + "ncurses-libs-6.1-12.20190803.fc31.x86_64", + "net-tools-2.0-0.55.20160912git.fc31.x86_64", + "nettle-3.5.1-3.fc31.x86_64", + "nftables-0.9.1-3.fc31.x86_64", + "npth-1.6-3.fc31.x86_64", + "ntfs-3g-2017.3.23-12.fc31.x86_64", + "ntfs-3g-system-compression-1.0-2.fc31.x86_64", + "ntfsprogs-2017.3.23-12.fc31.x86_64", + "openldap-2.4.47-3.fc31.x86_64", + "openssh-8.0p1-8.fc31.1.x86_64", + "openssh-clients-8.0p1-8.fc31.1.x86_64", + "openssh-server-8.0p1-8.fc31.1.x86_64", + "openssl-1.1.1d-2.fc31.x86_64", + "openssl-libs-1.1.1d-2.fc31.x86_64", + "openssl-pkcs11-0.4.10-2.fc31.x86_64", + "os-prober-1.77-3.fc31.x86_64", + "p11-kit-0.23.16.1-2.fc31.x86_64", + "p11-kit-trust-0.23.16.1-2.fc31.x86_64", + "pam-1.3.1-18.fc31.x86_64", + "pango-1.44.6-1.fc31.x86_64", + "parted-3.2.153-1.fc31.x86_64", + "passwd-0.80-6.fc31.x86_64", + "pcre-8.43-2.fc31.1.x86_64", + "pcre2-10.33-14.fc31.x86_64", + "pigz-2.4-5.fc31.x86_64", + "pinentry-1.1.0-6.fc31.x86_64", + "pixman-0.38.4-1.fc31.x86_64", + "plymouth-0.9.4-10.20191001gita8aad27.fc31.x86_64", + "plymouth-core-libs-0.9.4-10.20191001gita8aad27.fc31.x86_64", + "plymouth-scripts-0.9.4-10.20191001gita8aad27.fc31.x86_64", + "policycoreutils-2.9-5.fc31.x86_64", + "polkit-libs-0.116-4.fc31.x86_64", + "popt-1.16-18.fc31.x86_64", + "procps-ng-3.3.15-6.fc31.x86_64", + "publicsuffix-list-dafsa-20190417-2.fc31.noarch", + "python-pip-wheel-19.1.1-4.fc31.noarch", + "python-setuptools-wheel-41.2.0-1.fc31.noarch", + "python-unversioned-command-3.7.4-5.fc31.noarch", + "python3-3.7.4-5.fc31.x86_64", + "python3-dateutil-2.8.0-3.fc31.noarch", + "python3-dbus-1.2.8-6.fc31.x86_64", + "python3-decorator-4.4.0-2.fc31.noarch", + "python3-distro-1.4.0-2.fc31.noarch", + "python3-dnf-4.2.9-5.fc31.noarch", + "python3-dnf-plugins-core-4.0.9-1.fc31.noarch", + "python3-firewall-0.7.2-1.fc31.noarch", + "python3-gobject-base-3.34.0-3.fc31.x86_64", + "python3-gpg-1.13.1-3.fc31.x86_64", + "python3-hawkey-0.35.3-6.fc31.x86_64", + "python3-libcomps-0.1.11-3.fc31.x86_64", + "python3-libdnf-0.35.3-6.fc31.x86_64", + "python3-libs-3.7.4-5.fc31.x86_64", + "python3-libselinux-2.9-5.fc31.x86_64", + "python3-pip-19.1.1-4.fc31.noarch", + "python3-pyasn1-0.4.4-5.fc31.noarch", + "python3-rpm-4.15.0-6.fc31.x86_64", + "python3-setuptools-41.2.0-1.fc31.noarch", + "python3-six-1.12.0-2.fc31.noarch", + "python3-slip-0.6.4-16.fc31.noarch", + "python3-slip-dbus-0.6.4-16.fc31.noarch", + "python3-unbound-1.9.3-1.fc31.x86_64", + "qrencode-libs-4.0.2-4.fc31.x86_64", + "readline-8.0-3.fc31.x86_64", + "rest-0.8.1-6.fc31.x86_64", + "rootfiles-8.1-25.fc31.noarch", + "rpm-4.15.0-6.fc31.x86_64", + "rpm-build-libs-4.15.0-6.fc31.x86_64", + "rpm-libs-4.15.0-6.fc31.x86_64", + "rpm-plugin-selinux-4.15.0-6.fc31.x86_64", + "rpm-plugin-systemd-inhibit-4.15.0-6.fc31.x86_64", + "rpm-sign-libs-4.15.0-6.fc31.x86_64", + "sed-4.5-4.fc31.x86_64", + "selinux-policy-3.14.4-37.fc31.noarch", + "selinux-policy-targeted-3.14.4-37.fc31.noarch", + "setup-2.13.3-2.fc31.noarch", + "shadow-utils-4.6-16.fc31.x86_64", + "shared-mime-info-1.14-1.fc31.x86_64", + "sqlite-libs-3.29.0-2.fc31.x86_64", + "sssd-client-2.2.2-1.fc31.x86_64", + "sssd-common-2.2.2-1.fc31.x86_64", + "sssd-kcm-2.2.2-1.fc31.x86_64", + "sssd-nfs-idmap-2.2.2-1.fc31.x86_64", + "sudo-1.8.28-1.fc31.x86_64", + "systemd-243-4.gitef67743.fc31.x86_64", + "systemd-bootchart-233-5.fc31.x86_64", + "systemd-libs-243-4.gitef67743.fc31.x86_64", + "systemd-pam-243-4.gitef67743.fc31.x86_64", + "systemd-rpm-macros-243-4.gitef67743.fc31.noarch", + "systemd-udev-243-4.gitef67743.fc31.x86_64", + "trousers-0.3.13-13.fc31.x86_64", + "trousers-lib-0.3.13-13.fc31.x86_64", + "tss2-1331-2.fc31.x86_64", + "tzdata-2019c-1.fc31.noarch", + "unbound-libs-1.9.3-1.fc31.x86_64", + "util-linux-2.34-3.fc31.x86_64", + "vim-minimal-8.1.2102-1.fc31.x86_64", + "which-2.21-15.fc31.x86_64", + "whois-nls-5.5.2-1.fc31.noarch", + "xkeyboard-config-2.27-2.fc31.noarch", + "xz-5.2.4-6.fc31.x86_64", + "xz-libs-5.2.4-6.fc31.x86_64", + "yum-4.2.9-5.fc31.noarch", + "zchunk-libs-1.1.2-3.fc31.x86_64", + "zlib-1.2.11-19.fc31.x86_64" + ], + "partition-table": "dos", + "partition-table-id": "0x14fc63d2", + "partitions": [ + { + "bootable": true, + "fstype": "ext4", + "label": null, + "partuuid": "14fc63d2-01", + "size": 2146435072, + "start": 1048576, + "type": "83", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:996:993::/var/lib/chrony:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "redhat:x:1000:1000::/home/redhat:/bin/bash", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:998:995:systemd Core Dumper:/:/sbin/nologin", + "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "systemd-timesync:x:997:994:systemd Time Synchronization:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:999:999:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/boot/System.map-5.3.7-301.fc31.x86_64": ".M.......", + "/boot/initramfs-5.3.7-301.fc31.x86_64.img": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/proc": ".M.......", + "/run/cryptsetup": ".M.......", + "/sys": ".M.......", + "/var/log/btmp": ".M.......", + "/var/log/journal": ".M....G..", + "/var/log/lastlog": ".M....G.." + }, + "missing": [] + }, + "services-disabled": [ + "arp-ethers.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "console-getty.service", + "debug-shell.service", + "exit.target", + "fstrim.timer", + "halt.target", + "kexec.target", + "loadmodules.service", + "nftables.service", + "nis-domainname.service", + "poweroff.target", + "proc-sys-fs-binfmt_misc.mount", + "rdisc.service", + "remote-cryptsetup.target", + "runlevel0.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-boot-check-no-failures.service", + "systemd-bootchart.service", + "systemd-network-generator.service", + "systemd-networkd-wait-online.service", + "systemd-networkd.service", + "systemd-networkd.socket", + "systemd-pstore.service", + "systemd-resolved.service", + "systemd-time-wait-sync.service", + "systemd-timesyncd.service", + "tcsd.service" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "ctrl-alt-del.target", + "dbus-broker.service", + "dbus-org.fedoraproject.FirewallD1.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dbus.service", + "dbus.socket", + "dnf-makecache.timer", + "firewalld.service", + "getty@.service", + "import-state.service", + "messagebus.service", + "reboot.target", + "remote-fs.target", + "runlevel6.target", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "unbound-anchor.timer", + "waagent.service" + ] + } +} \ No newline at end of file diff --git a/test/cases/fedora_31-x86_64-vmdk-boot.json b/test/cases/fedora_31-x86_64-vmdk-boot.json new file mode 100644 index 0000000..b976ac7 --- /dev/null +++ b/test/cases/fedora_31-x86_64-vmdk-boot.json @@ -0,0 +1,11286 @@ +{ + "boot": { + "type": "vmware" + }, + "compose-request": { + "distro": "fedora-31", + "arch": "x86_64", + "image-type": "vmdk", + "filename": "disk.vmdk", + "blueprint": { + "name": "vmdk-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + }, + "repositories": [ + { + "baseurl": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ] + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcurl-7.66.0-1.fc31.x86_64.rpm" + }, + "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre2-10.33-14.fc31.x86_64.rpm" + }, + "sha256:01fa263228ae6524474bf4d622e24510634609cd5f4976affd370388d5bcfc4a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/open-vm-tools-10.3.10-2.fc31.x86_64.rpm" + }, + "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdatrie-0.2.9-10.fc31.x86_64.rpm" + }, + "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-firmware-20190923-102.fc31.noarch.rpm" + }, + "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm" + }, + "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-6.fc31.x86_64.rpm" + }, + "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-six-1.12.0-2.fc31.noarch.rpm" + }, + "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-2.fc31.x86_64.rpm" + }, + "sha256:07a3523159719382e2bb9b83961bfe00836cc97f75a9706d02ad73dddb161856": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/chrony-3.5-4.fc31.x86_64.rpm" + }, + "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontconfig-2.13.92-3.fc31.x86_64.rpm" + }, + "sha256:09e96f7cdde5f9fc211bcb951171f1139de93e11172681330417be968f3ef462": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pciutils-3.6.2-3.fc31.x86_64.rpm" + }, + "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bash-5.0.7-3.fc31.x86_64.rpm" + }, + "sha256:0b54f374bcbe094dbc0d52d9661fe99ebff384026ce0ea39f2d6069e27bf8bdc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdhash-0.5.0-43.fc31.x86_64.rpm" + }, + "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-1.16.0-6.fc31.x86_64.rpm" + }, + "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.x86_64.rpm" + }, + "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.x86_64.rpm" + }, + "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnghttp2-1.39.2-1.fc31.x86_64.rpm" + }, + "sha256:0f26eca4ac936554818769fe32aca5e878af2616e83f836ec463e59eb4f9f1f9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcollection-0.7.0-43.fc31.x86_64.rpm" + }, + "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.x86_64.rpm" + }, + "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.x86_64.rpm" + }, + "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-common-2.30-5.fc31.x86_64.rpm" + }, + "sha256:118548479396b007a80bc98e8cef770ea242ef6b20cd2922d595acd4c100946d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/polkit-libs-0.116-4.fc31.x86_64.rpm" + }, + "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/graphite2-1.3.13-1.fc31.x86_64.rpm" + }, + "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-plugins-core-4.0.9-1.fc31.noarch.rpm" + }, + "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm" + }, + "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsmartcols-2.34-3.fc31.x86_64.rpm" + }, + "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-6.1-12.20190803.fc31.x86_64.rpm" + }, + "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-extra-2.02-100.fc31.x86_64.rpm" + }, + "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsigsegv-2.11-8.fc31.x86_64.rpm" + }, + "sha256:1cd8443585c3146e1af8c611488f9bb80b5ae40485dc2378ac0c9520fd89af44": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdnet-1.12-31.fc31.x86_64.rpm" + }, + "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-misc-2.0.4-14.fc31.noarch.rpm" + }, + "sha256:1e5f14d26556e380ed129289c1b98d46d951966e548613b9c2ee0d3616ac96d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-modules-5.3.7-301.fc31.x86_64.rpm" + }, + "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gzip-1.10-1.fc31.x86_64.rpm" + }, + "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/acl-2.2.53-4.fc31.x86_64.rpm" + }, + "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm" + }, + "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/librepo-1.10.5-1.fc31.x86_64.rpm" + }, + "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-rpm-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.x86_64.rpm" + }, + "sha256:21ccdbe703caa6a08056d2bc75c1e184f811472a6e320e5af64b8757fcd07166": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/groff-base-1.22.3-20.fc31.x86_64.rpm" + }, + "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libfdisk-2.34-3.fc31.x86_64.rpm" + }, + "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-1.fc31.x86_64.rpm" + }, + "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libutempter-1.1.6-17.fc31.x86_64.rpm" + }, + "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/readline-8.0-3.fc31.x86_64.rpm" + }, + "sha256:22db6d1e1f34a43c3d045b6750ff3a32184d47c2aedf3dabc93640057de1f4fa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/less-551-2.fc31.x86_64.rpm" + }, + "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.x86_64.rpm" + }, + "sha256:239a9576864532edd325e72b62a10ef147a2bcc0a925079b19fb9cb74bab0dd7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/c-ares-1.15.0-4.fc31.x86_64.rpm" + }, + "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-c-0.13.1-6.fc31.x86_64.rpm" + }, + "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-3.7.4-5.fc31.x86_64.rpm" + }, + "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXfixes-5.0.3-10.fc31.x86_64.rpm" + }, + "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-1.6.8-3.fc31.x86_64.rpm" + }, + "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-2.fc31.noarch.rpm" + }, + "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libstdc++-9.2.1-1.fc31.x86_64.rpm" + }, + "sha256:2af3bbdab1f387ae7af2534846e33ab6d2ca7777399c64191f95699d576cd4ba": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/initscripts-10.02-2.fc31.x86_64.rpm" + }, + "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.x86_64.rpm" + }, + "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgpg-error-1.36-2.fc31.x86_64.rpm" + }, + "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shadow-utils-4.6-16.fc31.x86_64.rpm" + }, + "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/brotli-1.0.7-6.fc31.x86_64.rpm" + }, + "sha256:2c5b5ce5f6e6d1d79f35eab253a12e19aeb863f4fe8ded94013f76a9834689fb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.20.4-1.fc31.x86_64.rpm" + }, + "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm" + }, + "sha256:2cd5a709ff2c286b73f850469b1ee6baf9077b90ce3bacb8ba712430c6632350": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnftnl-1.1.3-2.fc31.x86_64.rpm" + }, + "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.x86_64.rpm" + }, + "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm" + }, + "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXext-1.3.4-2.fc31.x86_64.rpm" + }, + "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-libs-5.37-3.fc31.x86_64.rpm" + }, + "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsepol-2.9-2.fc31.x86_64.rpm" + }, + "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm" + }, + "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/langpacks-en-2.0-7.fc31.noarch.rpm" + }, + "sha256:307275b46896d56d23f5da5ab77a299941e77165ff44e846d6620eee1158131c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_certmap-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:312d4df1d775d511ca8279da21403a9274fdd3943617f29e882ddaa981157c78": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtool-ltdl-2.4.6-31.fc31.x86_64.rpm" + }, + "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/avahi-libs-0.7-20.fc31.x86_64.rpm" + }, + "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsolv-0.7.5-3.fc31.x86_64.rpm" + }, + "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.x86_64.rpm" + }, + "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/harfbuzz-2.6.1-2.fc31.x86_64.rpm" + }, + "sha256:33334afdde6c813b18c18897dca19fab5a2ce090eba0b5ea0a38f43f1081c190": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dhcp-client-4.4.1-15.fc31.x86_64.rpm" + }, + "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib-networking-2.62.1-1.fc31.x86_64.rpm" + }, + "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-2.30-5.fc31.x86_64.rpm" + }, + "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libarchive-3.4.0-1.fc31.x86_64.rpm" + }, + "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXft-2.3.3-2.fc31.x86_64.rpm" + }, + "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-3.33.4-1.fc31.x86_64.rpm" + }, + "sha256:34a9986b8b61812ceaf32ce3b189bd0b2cb4adaaf47d76ec1f50ce07c45b5675": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-config-generic-049-27.git20181204.fc31.1.x86_64.rpm" + }, + "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dejavu-fonts-common-2.37-2.fc31.noarch.rpm" + }, + "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm" + }, + "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm" + }, + "sha256:35c348bcd91fa114ad459b888131e5e5509259cffce33f22c44f92e57e9e5919": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dbus-1.2.8-6.fc31.x86_64.rpm" + }, + "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libs-3.7.4-5.fc31.x86_64.rpm" + }, + "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libargon2-20171227-3.fc31.x86_64.rpm" + }, + "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.x86_64.rpm" + }, + "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libevent-2.1.8-7.fc31.x86_64.rpm" + }, + "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-2.2.17-2.fc31.x86_64.rpm" + }, + "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-31-1.noarch.rpm" + }, + "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcc-9.2.1-1.fc31.x86_64.rpm" + }, + "sha256:422625da0fbb99cc4da8eebebff892c6e73a87c81a33190f7a17e344f6bb709e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_autofs-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rest-0.8.1-6.fc31.x86_64.rpm" + }, + "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grep-3.3-3.fc31.x86_64.rpm" + }, + "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nettle-3.5.1-3.fc31.x86_64.rpm" + }, + "sha256:430f2f71be063eb9d04fe38659f62e29f47c9c878f9985d0569cb49e9c89ebc0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmaxminddb-1.2.0-8.fc31.x86_64.rpm" + }, + "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.x86_64.rpm" + }, + "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.x86_64.rpm" + }, + "sha256:45bf4bef479712936db1d6859b043d13e6cad41c851b6e621fc315b39ecfa14b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libndp-1.7-4.fc31.x86_64.rpm" + }, + "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mkpasswd-5.5.2-1.fc31.x86_64.rpm" + }, + "sha256:469d12368377399b8eaa7ec8cf1b6378ab18476b4a2b61b79091510a8945c6aa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-43.fc31.x86_64.rpm" + }, + "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zlib-1.2.11-19.fc31.x86_64.rpm" + }, + "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm" + }, + "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXdamage-1.1.4-17.fc31.x86_64.rpm" + }, + "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtiff-4.0.10-6.fc31.x86_64.rpm" + }, + "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm" + }, + "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm" + }, + "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtasn1-4.14-2.fc31.x86_64.rpm" + }, + "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.10-1.fc31.x86_64.rpm" + }, + "sha256:4f9bbd08f6019b3482342d616d6b04e6481924ea34fbfe8d30ef63402a92e9b1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-nfs-idmap-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-5.37-3.fc31.x86_64.rpm" + }, + "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm" + }, + "sha256:5593277fa685adba864393da8faf76950d6d8fb1483af036cdc08d8437c387bb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtevent-0.10.1-1.fc31.x86_64.rpm" + }, + "sha256:55c47c63deb00a9126c068299c01dfbdd39d58c6962138b862b92f5c7af8c898": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/parted-3.2.153-1.fc31.x86_64.rpm" + }, + "sha256:561014bd90810d512b4098c8e1d3ca05aa8c6a74bc258b3b7e3e2fd36a1ed157": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/plymouth-core-libs-0.9.4-10.20191001gita8aad27.fc31.x86_64.rpm" + }, + "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libss-1.45.3-1.fc31.x86_64.rpm" + }, + "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jbigkit-libs-2.1-17.fc31.x86_64.rpm" + }, + "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libthai-0.1.28-3.fc31.x86_64.rpm" + }, + "sha256:5bab4beb581893f90fbb7d46d47c74932cd788c1535f92ee98f81deac6d3658c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdrm-2.4.99-2.fc31.x86_64.rpm" + }, + "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgomp-9.2.1-1.fc31.x86_64.rpm" + }, + "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-8.0p1-8.fc31.1.x86_64.rpm" + }, + "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/krb5-libs-1.17-45.fc31.x86_64.rpm" + }, + "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.02-100.fc31.x86_64.rpm" + }, + "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-udev-243-4.gitef67743.fc31.x86_64.rpm" + }, + "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-1.12.16-3.fc31.x86_64.rpm" + }, + "sha256:5e07e49fdacc1f52b583ee685d03bf5ce045e9d34a323bd26607148a3937a9ce": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/plymouth-0.9.4-10.20191001gita8aad27.fc31.x86_64.rpm" + }, + "sha256:5fe6cf04a4b46d825cc63f7f14cc971a13d1abdc023dbd83012fa8f8234157b5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pciutils-libs-3.6.2-3.fc31.x86_64.rpm" + }, + "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdnf-0.35.3-6.fc31.x86_64.rpm" + }, + "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libffi-3.1-23.fc31.x86_64.rpm" + }, + "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/os-prober-1.77-3.fc31.x86_64.rpm" + }, + "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-3.fc31.x86_64.rpm" + }, + "sha256:63ff108f557096a9724053c37e37d3c2af1a1ec0b33124480b3742ff3da46292": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-decorator-4.4.0-2.fc31.noarch.rpm" + }, + "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-2.fc31.x86_64.rpm" + }, + "sha256:669250ad47aad5939cf4d1b88036fd95a94845d8e0bbdb05e933f3d2fe262fea": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qemu-img-4.1.0-2.fc31.x86_64.rpm" + }, + "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsecret-0.19.1-1.fc31.x86_64.rpm" + }, + "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libusbx-1.0.22-4.fc31.x86_64.rpm" + }, + "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libunistring-0.9.10-6.fc31.x86_64.rpm" + }, + "sha256:6807ac3ae6b7c0ea3a085106cedb687f79edfda500feb747039dc112ed3c518f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gobject-base-3.34.0-3.fc31.x86_64.rpm" + }, + "sha256:687d00eb0b77446dbd78aaa0f4f99cc080c677930ad783120483614255264a3d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-client-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cpio-2.12-12.fc31.x86_64.rpm" + }, + "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpwquality-1.4.1-1.fc31.x86_64.rpm" + }, + "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm" + }, + "sha256:6b694ee239a2e3f38c401e975de392e3731ad8b18be5a3249ea02f19e87cb5cb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-common-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm" + }, + "sha256:6c1f9dc11de4d3af4d4c418b4556ee9659011d587e9da44bb039cb30ac326841": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.x86_64.rpm" + }, + "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmount-2.34-3.fc31.x86_64.rpm" + }, + "sha256:6d8cbba688cea65fa80983cd7f140633e94cd58daa819342d1ae571a4ff174c6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/NetworkManager-1.20.4-1.fc31.x86_64.rpm" + }, + "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.x86_64.rpm" + }, + "sha256:6f2dae9b49bed8e1036a21aadd92ea2eb371979f6714ec2bce5742de051eeb14": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.30-5.fc31.x86_64.rpm" + }, + "sha256:6f729da330aaaea336458a8b6f3f1d2cc761693ba20bdda57fb9c49fb6f2120d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-43.fc31.x86_64.rpm" + }, + "sha256:6f7fbd57db9334a3cc7983d2e920afe92abe3f7e168702612d70e9ff405d79e6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libini_config-1.3.1-43.fc31.x86_64.rpm" + }, + "sha256:6f937306f1af370450c3a127c55d45982715aa3df7175443fbd020922d5176b6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmspack-0.10.1-0.2.alpha.fc31.x86_64.rpm" + }, + "sha256:704ebfc50ace9417ed28f4530d778359a4c2f95d524c2e99346472245e30b548": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sudo-1.8.28-1.fc31.x86_64.rpm" + }, + "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm" + }, + "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpsl-0.21.0-2.fc31.x86_64.rpm" + }, + "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.x86_64.rpm" + }, + "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-2.fc31.x86_64.rpm" + }, + "sha256:72b5df6982fecdbee30d40bbb6042c72ed0f31b787f289b4a27f0dffc6f609fe": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iputils-20190515-3.fc31.x86_64.rpm" + }, + "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-3.fc31.x86_64.rpm" + }, + "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libblkid-2.34-3.fc31.x86_64.rpm" + }, + "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jasper-libs-2.0.14-9.fc31.x86_64.rpm" + }, + "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dhcp-common-4.4.1-15.fc31.noarch.rpm" + }, + "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/y/yum-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-2.26-6.fc31.x86_64.rpm" + }, + "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib2-2.62.1-1.fc31.x86_64.rpm" + }, + "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.x86_64.rpm" + }, + "sha256:764699ea124f85a7afcf65a2f138e3821770f8aa1ef134e1813e2b04477f0b74": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/man-db-2.8.4-5.fc31.x86_64.rpm" + }, + "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk3-3.24.12-3.fc31.x86_64.rpm" + }, + "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libidn2-2.2.0-2.fc31.x86_64.rpm" + }, + "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/policycoreutils-2.9-5.fc31.x86_64.rpm" + }, + "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm" + }, + "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libs-0.177-1.fc31.x86_64.rpm" + }, + "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXinerama-1.1.4-4.fc31.x86_64.rpm" + }, + "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/findutils-4.6.0-24.fc31.x86_64.rpm" + }, + "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libyaml-0.2.2-2.fc31.x86_64.rpm" + }, + "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/popt-1.16-18.fc31.x86_64.rpm" + }, + "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.x86_64.rpm" + }, + "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-libs-1.8.3-5.fc31.x86_64.rpm" + }, + "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kpartx-0.8.0-3.fc31.x86_64.rpm" + }, + "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-base-3.33.4-1.fc31.x86_64.rpm" + }, + "sha256:7c0a8499dbc96adcbf8fda7616b593e11521699c16dcd560eca12e11e9a39a78": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libicu-63.2-3.fc31.x86_64.rpm" + }, + "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-unbound-1.9.3-1.fc31.x86_64.rpm" + }, + "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgusb-0.3.0-5.fc31.x86_64.rpm" + }, + "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/alternatives-1.11-5.fc31.x86_64.rpm" + }, + "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shared-mime-info-1.14-1.fc31.x86_64.rpm" + }, + "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodman-2.0.1-20.fc31.x86_64.rpm" + }, + "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/langpacks-core-en-2.0-7.fc31.noarch.rpm" + }, + "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-common-2.02-100.fc31.noarch.rpm" + }, + "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-5.3.28-38.fc31.x86_64.rpm" + }, + "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gawk-5.0.1-5.fc31.x86_64.rpm" + }, + "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm" + }, + "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-libs-5.2.4-6.fc31.x86_64.rpm" + }, + "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm" + }, + "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-243-4.gitef67743.fc31.x86_64.rpm" + }, + "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cups-libs-2.2.12-2.fc31.x86_64.rpm" + }, + "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libproxy-0.4.15-14.fc31.x86_64.rpm" + }, + "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-8.fc31.x86_64.rpm" + }, + "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lcms2-2.9-6.fc31.x86_64.rpm" + }, + "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/unbound-libs-1.9.3-1.fc31.x86_64.rpm" + }, + "sha256:89d9fe993068e433dd650f60acfe16886d975215afbd77a3510f011aee719a1e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fuse-common-3.6.2-1.fc31.x86_64.rpm" + }, + "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.x86_64.rpm" + }, + "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcroco-0.6.13-2.fc31.x86_64.rpm" + }, + "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm" + }, + "sha256:8bd2655674b40e89f5f63af7f8ffafd0e9064a3378cdca050262a7272678e8e5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnl3-3.5.0-1.fc31.x86_64.rpm" + }, + "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre-8.43-2.fc31.1.x86_64.rpm" + }, + "sha256:8c496ff256c18c8473f6d4ef87287828399f96ae19435e60c8179438aa0b59d0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpciaccess-0.15-2.fc31.x86_64.rpm" + }, + "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/colord-libs-1.4.4-2.fc31.x86_64.rpm" + }, + "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm" + }, + "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/atk-2.34.1-1.fc31.x86_64.rpm" + }, + "sha256:8e9a916cd4843e7d09e3d1b814dbb55bb3b45672b1058044cfeaf8e19ad27bd7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-1.8.3-5.fc31.x86_64.rpm" + }, + "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libattr-2.4.48-7.fc31.x86_64.rpm" + }, + "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnutls-3.6.10-1.fc31.x86_64.rpm" + }, + "sha256:8f7b737ccb294fd5ba1d19075ea2a50a54e0265d8efa28aae0ade59d3e3a63be": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libldb-2.0.7-1.fc31.x86_64.rpm" + }, + "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.x86_64.rpm" + }, + "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libacl-2.2.53-4.fc31.x86_64.rpm" + }, + "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pixman-0.38.4-1.fc31.x86_64.rpm" + }, + "sha256:9247561bad35a8a2f8269b2bbbd28d1bf5e6fcde1fe78e1fc3c0e712513e9703": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtalloc-2.3.0-1.fc31.x86_64.rpm" + }, + "sha256:93161df6d62fe654c7cdba9ae36343d2549b437b27eac816a80f8d7c32a47162": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-kcm-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-firmware-whence-20190923-102.fc31.noarch.rpm" + }, + "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.x86_64.rpm" + }, + "sha256:949ab50877fa46fc9573284f661812173fa9faa21d1877d0c7df4203a3ccc7f0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xmlsec1-openssl-1.2.27-3.fc31.x86_64.rpm" + }, + "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pinentry-1.1.0-6.fc31.x86_64.rpm" + }, + "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXi-1.7.10-2.fc31.x86_64.rpm" + }, + "sha256:95b45de2c57f35df43bff0c2ebe32c64183968b3a41c5673cfeeff5ece506b94": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuser-0.62-21.fc31.x86_64.rpm" + }, + "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.x86_64.rpm" + }, + "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-utils-2.9-5.fc31.x86_64.rpm" + }, + "sha256:9975496f29601a1c2cdb89e63aac698fdd8283ba3a52a9d91ead9473a0e064c8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tar-1.32-2.fc31.x86_64.rpm" + }, + "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-1.fc31.x86_64.rpm" + }, + "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/curl-7.66.0-1.fc31.x86_64.rpm" + }, + "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-repos-31-1.noarch.rpm" + }, + "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-bootchart-233-5.fc31.x86_64.rpm" + }, + "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libverto-0.3.0-8.fc31.x86_64.rpm" + }, + "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-3.fc31.noarch.rpm" + }, + "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm" + }, + "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcomps-0.1.11-3.fc31.x86_64.rpm" + }, + "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-1.fc31.x86_64.rpm" + }, + "sha256:a188b5c697b734d4ed7d8f954b6875b9d401dc2a3c10bfd20d03db131ca73ab5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hostname-3.20-9.fc31.x86_64.rpm" + }, + "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcomposite-0.4.4-17.fc31.x86_64.rpm" + }, + "sha256:a1bd1b5a2c47e57957a77d32f4fd705de1df30557837cfbc83b8f284e4ee0456": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-2.9.6-21.fc31.x86_64.rpm" + }, + "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gmp-6.1.2-10.fc31.x86_64.rpm" + }, + "sha256:a349c40034b5a181cab1bd409384ddb901c274e110b16721d434f5bf42e92c0f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-firewall-0.7.2-1.fc31.noarch.rpm" + }, + "sha256:a41579023e1db3dec06679ebc7788ece92686ea2a23c78dd749c98ddbc82d419": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.23-3.fc31.x86_64.rpm" + }, + "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.02-100.fc31.noarch.rpm" + }, + "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gpgme-1.13.1-3.fc31.x86_64.rpm" + }, + "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-client-1.17.0-2.fc31.x86_64.rpm" + }, + "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pam-1.3.1-18.fc31.x86_64.rpm" + }, + "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-38.fc31.x86_64.rpm" + }, + "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-1.fc31.x86_64.rpm" + }, + "sha256:ab35a2d7f21aac1f33f9521607789e1c303fb63e4ea0681e9f724f86a1cc15c5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/firewalld-0.7.2-1.fc31.noarch.rpm" + }, + "sha256:ab5ad6fc076fd82be6a2ca9d77998fc06c2c9e7296de960b7549239efb9f971d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gobject-introspection-1.62.0-1.fc31.x86_64.rpm" + }, + "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.x86_64.rpm" + }, + "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-libs-26-4.fc31.x86_64.rpm" + }, + "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.x86_64.rpm" + }, + "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libksba-1.3.5-10.fc31.x86_64.rpm" + }, + "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpcap-1.9.0-4.fc31.x86_64.rpm" + }, + "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm" + }, + "sha256:af9e09c03e45e67e102f248651f45b7f5e523d5758e71ab01f488d1f0e4b4875": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xmlsec1-1.2.27-3.fc31.x86_64.rpm" + }, + "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tss2-1331-2.fc31.x86_64.rpm" + }, + "sha256:b1094a9a9725546315d6eac7f792d5875a5f0c950cd84e43fc2fbb3e639ee43e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-slip-0.6.4-16.fc31.noarch.rpm" + }, + "sha256:b110ee65fa2dee77585ec77cab592cba2434d579f8afbed4d2a908ad1addccfc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dosfstools-4.1-9.fc31.x86_64.rpm" + }, + "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libepoxy-1.5.3-4.fc31.x86_64.rpm" + }, + "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fribidi-1.0.5-4.fc31.x86_64.rpm" + }, + "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libseccomp-2.4.1-1.fc31.x86_64.rpm" + }, + "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuuid-2.34-3.fc31.x86_64.rpm" + }, + "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openldap-2.4.47-3.fc31.x86_64.rpm" + }, + "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.x86_64.rpm" + }, + "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-2.02-100.fc31.x86_64.rpm" + }, + "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-9.fc31.x86_64.rpm" + }, + "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-2.9-5.fc31.x86_64.rpm" + }, + "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.x86_64.rpm" + }, + "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm" + }, + "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.x86_64.rpm" + }, + "sha256:bc0fe4ecad352d23075ed619b60ce0c4e79fa8034d2139fed46b88ca5b3d738e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fuse-2.9.9-8.fc31.x86_64.rpm" + }, + "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcb-1.13.1-3.fc31.x86_64.rpm" + }, + "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libassuan-2.5.3-2.fc31.x86_64.rpm" + }, + "sha256:bd2e7c9e3df976723ade08f16667b31044b678e62ee29e024ad193af6d9a28e1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-slip-dbus-0.6.4-16.fc31.noarch.rpm" + }, + "sha256:bd72cac3d1ef93cff067070925e5f339c720bef82c5ade4477388636fef53b91": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/plymouth-scripts-0.9.4-10.20191001gita8aad27.fc31.x86_64.rpm" + }, + "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/npth-1.6-3.fc31.x86_64.rpm" + }, + "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-1.1.1d-2.fc31.x86_64.rpm" + }, + "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-2.fc31.noarch.rpm" + }, + "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-8.31-4.fc31.x86_64.rpm" + }, + "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrandr-1.5.2-2.fc31.x86_64.rpm" + }, + "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.4-37.fc31.noarch.rpm" + }, + "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.x86_64.rpm" + }, + "sha256:c3aa4d794cef51ba9fcbf3750baed55aabfa36062a48f61149ccf03364a0d256": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-server-8.0p1-8.fc31.1.x86_64.rpm" + }, + "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:c459092a47bd2f904d9fe830735b512ef97b52785ee12abb2ba5c52465560f18": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/passwd-0.80-6.fc31.x86_64.rpm" + }, + "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-5.2.4-6.fc31.x86_64.rpm" + }, + "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXtst-1.2.3-10.fc31.x86_64.rpm" + }, + "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.x86_64.rpm" + }, + "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.x86_64.rpm" + }, + "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.x86_64.rpm" + }, + "sha256:c8e0a36410ebbd9db0a10e1fbecbae8f6288b9be86752d2e91725d5dd98ec65d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipcalc-0.2.5-3.fc31.x86_64.rpm" + }, + "sha256:c976ce75eda3dbe734117f6f558eafb2061bbef66086a04cb907a7ddbaea8bc2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmnl-1.0.4-10.fc31.x86_64.rpm" + }, + "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-2.0.4-14.fc31.x86_64.rpm" + }, + "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libzstd-1.4.2-1.fc31.x86_64.rpm" + }, + "sha256:ca6a71888b8d147342012c64533f61a41b26c788bbcd2844a2164ee007fac981": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libselinux-2.9-5.fc31.x86_64.rpm" + }, + "sha256:cab1b0c3bdae2a07e15b90b414f50753c759e325b6f0cddfa27895748c77f082": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/ebtables-legacy-2.0.10-37.fc31.x86_64.rpm" + }, + "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-6.fc31.x86_64.rpm" + }, + "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm" + }, + "sha256:cc02df4125eaebf642edd9bf00031ec09871c285816c03112909ef1005410eaa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm" + }, + "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/filesystem-3.12-2.fc31.x86_64.rpm" + }, + "sha256:cef060334e8c21b5d2e3a87bdd0ad5ac1be389d7794735506b9d3c65c2923cd3": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iproute-5.3.0-1.fc31.x86_64.rpm" + }, + "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-3.fc31.x86_64.rpm" + }, + "sha256:cfeb5d0cb9c116e39292e3158c68ee62880cff4a5e3d098d20bf9567e5a576e1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpipeline-1.5.1-3.fc31.x86_64.rpm" + }, + "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxml2-2.9.9-3.fc31.x86_64.rpm" + }, + "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-0.20.1-2.fc31.x86_64.rpm" + }, + "sha256:d219a6c4a2410d6ef9bad2b337557779b969e278b657ffede83c021c20f665ca": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iproute-tc-5.3.0-1.fc31.x86_64.rpm" + }, + "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/geolite2-city-20190806-1.fc31.noarch.rpm" + }, + "sha256:d2c819a7e607a9e22f55047ed03d064e4b0f125ad4fb20532c543a6d8af8bfa5": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/v/vim-minimal-8.1.2102-1.fc31.x86_64.rpm" + }, + "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm" + }, + "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-0.9.0-6.fc31.x86_64.rpm" + }, + "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.x86_64.rpm" + }, + "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/expat-2.2.8-1.fc31.x86_64.rpm" + }, + "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.x86_64.rpm" + }, + "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-plugins-core-4.0.9-1.fc31.noarch.rpm" + }, + "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pango-1.44.6-1.fc31.x86_64.rpm" + }, + "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libelf-0.177-1.fc31.x86_64.rpm" + }, + "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/selinux-policy-3.14.4-37.fc31.noarch.rpm" + }, + "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mpfr-3.1.6-5.fc31.x86_64.rpm" + }, + "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rootfiles-8.1-25.fc31.noarch.rpm" + }, + "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-1.02.163-2.fc31.x86_64.rpm" + }, + "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcursor-1.1.15-6.fc31.x86_64.rpm" + }, + "sha256:da923b379524f2d8d26905f26a9dc763cec36c40306c4c53db57100574ea89b8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libref_array-0.1.5-43.fc31.x86_64.rpm" + }, + "sha256:dae094845eb669c1e4c6b9719a730ab71561c8bc8e870d30c9ac9f6437fd2d50": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hwdata-0.328-1.fc31.noarch.rpm" + }, + "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.x86_64.rpm" + }, + "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.x86_64.rpm" + }, + "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpng-1.6.37-2.fc31.x86_64.rpm" + }, + "sha256:dc924dd33a9bd0b9483ebdbcf7caecbe1f48b8a135f1521291c8433fa76f4603": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jansson-2.12-4.fc31.x86_64.rpm" + }, + "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/diffutils-3.7-3.fc31.x86_64.rpm" + }, + "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.x86_64.rpm" + }, + "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sed-4.5-4.fc31.x86_64.rpm" + }, + "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm" + }, + "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-ng-0.7.9-8.fc31.x86_64.rpm" + }, + "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrender-0.9.10-10.fc31.x86_64.rpm" + }, + "sha256:e1bda9438577473413f3c7455ce84b6c8486adee3d4473fafcd28309ad8c2913": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.2-1.fc31.x86_64.rpm" + }, + "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-7.fc31.x86_64.rpm" + }, + "sha256:e405d2edc9b9fc2c13242f0225049b071aa4159d09d8e2d501e8c4fe88a9710b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-25.fc31.x86_64.rpm" + }, + "sha256:e42730d2d1a955c7e3e16303d5333ba88ee1f77e8a88cc09409feb210cc7fcfc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxslt-1.1.33-2.fc31.x86_64.rpm" + }, + "sha256:e4eb72f080bdb339a4748fa9a0749953628189da1c930294c68902bb8b9f8eeb": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipset-7.3-1.fc31.x86_64.rpm" + }, + "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-common-31-1.noarch.rpm" + }, + "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-legacy-2.0.4-14.fc31.noarch.rpm" + }, + "sha256:e76b3b9d14a0016542f61d0ab2981fbf2d779e522d0c36d9095a1cffecbf9272": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/firewalld-filesystem-0.7.2-1.fc31.noarch.rpm" + }, + "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsoup-2.68.2-1.fc31.x86_64.rpm" + }, + "sha256:e91f7fcee1e3e72941c99eec3c3c3c9506cdaf83c01cf1eef257b91ccaff550c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-3.fc31.x86_64.rpm" + }, + "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/freetype-2.10.0-3.fc31.x86_64.rpm" + }, + "sha256:e9fa9fba03403e709388390a91f4b253e57b8104035f05fabdf4d5c0dd173ce1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nftables-0.9.1-3.fc31.x86_64.rpm" + }, + "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-glib-1.4.4-3.fc31.x86_64.rpm" + }, + "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-4.4.10-1.fc31.x86_64.rpm" + }, + "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-broker-21-6.fc31.x86_64.rpm" + }, + "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-26-4.fc31.x86_64.rpm" + }, + "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/which-2.21-15.fc31.x86_64.rpm" + }, + "sha256:ee6596a5010c2b4a038861828ecca240aa03c592dacd83c3a70d44cb8ee50408": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libaio-0.3.111-6.fc31.x86_64.rpm" + }, + "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-049-27.git20181204.fc31.1.x86_64.rpm" + }, + "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-libs-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.x86_64.rpm" + }, + "sha256:efece5a4b070f197a1db3f7e1d030878b1ccdff6a8a0d24c596ecfae374ef194": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipset-libs-7.3-1.fc31.x86_64.rpm" + }, + "sha256:f0509e333636e5c34726c8a2b8260bf88fe0a35b95cae6dda62191fee1be4c6a": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-core-5.3.7-301.fc31.x86_64.rpm" + }, + "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm" + }, + "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcom_err-1.45.3-1.fc31.x86_64.rpm" + }, + "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-common-8.31-4.fc31.x86_64.rpm" + }, + "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm" + }, + "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pigz-2.4-5.fc31.x86_64.rpm" + }, + "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dconf-0.34.0-1.fc31.x86_64.rpm" + }, + "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/util-linux-2.34-3.fc31.x86_64.rpm" + }, + "sha256:f50957375c79be57f391625b97d6ea74505e05f2edc6b9bc6768d5e3ad6ef8f8": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.0-6.fc31.x86_64.rpm" + }, + "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.x86_64.rpm" + }, + "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.x86_64.rpm" + }, + "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-2.02-100.fc31.x86_64.rpm" + }, + "sha256:f61555e6e74917be3f131bd5af9d9e30ed709111701e950b7ebd4392baf33f12": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnfsidmap-2.4.1-1.rc1.fc31.x86_64.rpm" + }, + "sha256:f67d5cc67029c6c38185f94b72aaa9034a49f5c4f166066c8268b41e1b18a202": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.30-5.fc31.x86_64.rpm" + }, + "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm" + }, + "sha256:f8d885f57b3c7b30b6f18f68fed7fd3f19300c22abc5d5ee5029998e96c6b115": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-16.fc31.x86_64.rpm" + }, + "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXau-1.0.9-2.fc31.x86_64.rpm" + }, + "sha256:fb2ff56d3a273eac8775bac03b12f1cf8affa0b92585912de0abf3bc1ccdfa44": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-5.3.7-301.fc31.x86_64.rpm" + }, + "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.x86_64.rpm" + }, + "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.x86_64.rpm" + }, + "sha256:fccade859cbb884fd61c07433e6c316f794885cbb2186debcff3f6894d16d52c": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtdb-1.4.2-1.fc31.x86_64.rpm" + }, + "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsemanage-2.9-3.fc31.x86_64.rpm" + }, + "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/geolite2-country-20190806-1.fc31.noarch.rpm" + }, + "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d": { + "url": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.x86_64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "checksum": "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d", + "check_gpg": true + }, + { + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "checksum": "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081", + "check_gpg": true + }, + { + "checksum": "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355", + "check_gpg": true + }, + { + "checksum": "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1", + "check_gpg": true + }, + { + "checksum": "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5", + "check_gpg": true + }, + { + "checksum": "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09", + "check_gpg": true + }, + { + "checksum": "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02", + "check_gpg": true + }, + { + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "checksum": "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3", + "check_gpg": true + }, + { + "checksum": "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1", + "check_gpg": true + }, + { + "checksum": "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7", + "check_gpg": true + }, + { + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "checksum": "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a", + "check_gpg": true + }, + { + "checksum": "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3", + "check_gpg": true + }, + { + "checksum": "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736", + "check_gpg": true + }, + { + "checksum": "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc", + "check_gpg": true + }, + { + "checksum": "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc", + "check_gpg": true + }, + { + "checksum": "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38", + "check_gpg": true + }, + { + "checksum": "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4", + "check_gpg": true + }, + { + "checksum": "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c", + "check_gpg": true + }, + { + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "checksum": "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8", + "check_gpg": true + }, + { + "checksum": "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4", + "check_gpg": true + }, + { + "checksum": "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49", + "check_gpg": true + }, + { + "checksum": "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1", + "check_gpg": true + }, + { + "checksum": "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee", + "check_gpg": true + }, + { + "checksum": "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8", + "check_gpg": true + }, + { + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "checksum": "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71", + "check_gpg": true + }, + { + "checksum": "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27", + "check_gpg": true + }, + { + "checksum": "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7", + "check_gpg": true + }, + { + "checksum": "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f", + "check_gpg": true + }, + { + "checksum": "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732", + "check_gpg": true + }, + { + "checksum": "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7", + "check_gpg": true + }, + { + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "checksum": "sha256:b110ee65fa2dee77585ec77cab592cba2434d579f8afbed4d2a908ad1addccfc", + "check_gpg": true + }, + { + "checksum": "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159", + "check_gpg": true + }, + { + "checksum": "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7", + "check_gpg": true + }, + { + "checksum": "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89", + "check_gpg": true + }, + { + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "checksum": "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228", + "check_gpg": true + }, + { + "checksum": "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407", + "check_gpg": true + }, + { + "checksum": "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f", + "check_gpg": true + }, + { + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "checksum": "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c", + "check_gpg": true + }, + { + "checksum": "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c", + "check_gpg": true + }, + { + "checksum": "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff", + "check_gpg": true + }, + { + "checksum": "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067", + "check_gpg": true + }, + { + "checksum": "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a", + "check_gpg": true + }, + { + "checksum": "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2", + "check_gpg": true + }, + { + "checksum": "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54", + "check_gpg": true + }, + { + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "checksum": "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee", + "check_gpg": true + }, + { + "checksum": "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891", + "check_gpg": true + }, + { + "checksum": "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d", + "check_gpg": true + }, + { + "checksum": "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203", + "check_gpg": true + }, + { + "checksum": "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd", + "check_gpg": true + }, + { + "checksum": "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc", + "check_gpg": true + }, + { + "checksum": "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84", + "check_gpg": true + }, + { + "checksum": "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb", + "check_gpg": true + }, + { + "checksum": "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c", + "check_gpg": true + }, + { + "checksum": "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926", + "check_gpg": true + }, + { + "checksum": "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3", + "check_gpg": true + }, + { + "checksum": "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a", + "check_gpg": true + }, + { + "checksum": "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79", + "check_gpg": true + }, + { + "checksum": "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13", + "check_gpg": true + }, + { + "checksum": "sha256:f67d5cc67029c6c38185f94b72aaa9034a49f5c4f166066c8268b41e1b18a202", + "check_gpg": true + }, + { + "checksum": "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb", + "check_gpg": true + }, + { + "checksum": "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a", + "check_gpg": true + }, + { + "checksum": "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e", + "check_gpg": true + }, + { + "checksum": "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5", + "check_gpg": true + }, + { + "checksum": "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5", + "check_gpg": true + }, + { + "checksum": "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458", + "check_gpg": true + }, + { + "checksum": "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d", + "check_gpg": true + }, + { + "checksum": "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16", + "check_gpg": true + }, + { + "checksum": "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada", + "check_gpg": true + }, + { + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "checksum": "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc", + "check_gpg": true + }, + { + "checksum": "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1", + "check_gpg": true + }, + { + "checksum": "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8", + "check_gpg": true + }, + { + "checksum": "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214", + "check_gpg": true + }, + { + "checksum": "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031", + "check_gpg": true + }, + { + "checksum": "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8", + "check_gpg": true + }, + { + "checksum": "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d", + "check_gpg": true + }, + { + "checksum": "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150", + "check_gpg": true + }, + { + "checksum": "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01", + "check_gpg": true + }, + { + "checksum": "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994", + "check_gpg": true + }, + { + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "checksum": "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6", + "check_gpg": true + }, + { + "checksum": "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4", + "check_gpg": true + }, + { + "checksum": "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00", + "check_gpg": true + }, + { + "checksum": "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5", + "check_gpg": true + }, + { + "checksum": "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422", + "check_gpg": true + }, + { + "checksum": "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad", + "check_gpg": true + }, + { + "checksum": "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c", + "check_gpg": true + }, + { + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "checksum": "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1", + "check_gpg": true + }, + { + "checksum": "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b", + "check_gpg": true + }, + { + "checksum": "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1", + "check_gpg": true + }, + { + "checksum": "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00", + "check_gpg": true + }, + { + "checksum": "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466", + "check_gpg": true + }, + { + "checksum": "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b", + "check_gpg": true + }, + { + "checksum": "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679", + "check_gpg": true + }, + { + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "checksum": "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834", + "check_gpg": true + }, + { + "checksum": "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c", + "check_gpg": true + }, + { + "checksum": "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59", + "check_gpg": true + }, + { + "checksum": "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a", + "check_gpg": true + }, + { + "checksum": "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077", + "check_gpg": true + }, + { + "checksum": "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c", + "check_gpg": true + }, + { + "checksum": "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc", + "check_gpg": true + }, + { + "checksum": "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141", + "check_gpg": true + }, + { + "checksum": "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1", + "check_gpg": true + }, + { + "checksum": "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1", + "check_gpg": true + }, + { + "checksum": "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7", + "check_gpg": true + }, + { + "checksum": "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295", + "check_gpg": true + }, + { + "checksum": "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc", + "check_gpg": true + }, + { + "checksum": "sha256:ee6596a5010c2b4a038861828ecca240aa03c592dacd83c3a70d44cb8ee50408", + "check_gpg": true + }, + { + "checksum": "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18", + "check_gpg": true + }, + { + "checksum": "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de", + "check_gpg": true + }, + { + "checksum": "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8", + "check_gpg": true + }, + { + "checksum": "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be", + "check_gpg": true + }, + { + "checksum": "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2", + "check_gpg": true + }, + { + "checksum": "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090", + "check_gpg": true + }, + { + "checksum": "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d", + "check_gpg": true + }, + { + "checksum": "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c", + "check_gpg": true + }, + { + "checksum": "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7", + "check_gpg": true + }, + { + "checksum": "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382", + "check_gpg": true + }, + { + "checksum": "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241", + "check_gpg": true + }, + { + "checksum": "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167", + "check_gpg": true + }, + { + "checksum": "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc", + "check_gpg": true + }, + { + "checksum": "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627", + "check_gpg": true + }, + { + "checksum": "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874", + "check_gpg": true + }, + { + "checksum": "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801", + "check_gpg": true + }, + { + "checksum": "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31", + "check_gpg": true + }, + { + "checksum": "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7", + "check_gpg": true + }, + { + "checksum": "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba", + "check_gpg": true + }, + { + "checksum": "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0", + "check_gpg": true + }, + { + "checksum": "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1", + "check_gpg": true + }, + { + "checksum": "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f", + "check_gpg": true + }, + { + "checksum": "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c", + "check_gpg": true + }, + { + "checksum": "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd", + "check_gpg": true + }, + { + "checksum": "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab", + "check_gpg": true + }, + { + "checksum": "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc", + "check_gpg": true + }, + { + "checksum": "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345", + "check_gpg": true + }, + { + "checksum": "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde", + "check_gpg": true + }, + { + "checksum": "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37", + "check_gpg": true + }, + { + "checksum": "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f", + "check_gpg": true + }, + { + "checksum": "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43", + "check_gpg": true + }, + { + "checksum": "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664", + "check_gpg": true + }, + { + "checksum": "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57", + "check_gpg": true + }, + { + "checksum": "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d", + "check_gpg": true + }, + { + "checksum": "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf", + "check_gpg": true + }, + { + "checksum": "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a", + "check_gpg": true + }, + { + "checksum": "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc", + "check_gpg": true + }, + { + "checksum": "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf", + "check_gpg": true + }, + { + "checksum": "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc", + "check_gpg": true + }, + { + "checksum": "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730", + "check_gpg": true + }, + { + "checksum": "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0", + "check_gpg": true + }, + { + "checksum": "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3", + "check_gpg": true + }, + { + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "checksum": "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a", + "check_gpg": true + }, + { + "checksum": "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7", + "check_gpg": true + }, + { + "checksum": "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e", + "check_gpg": true + }, + { + "checksum": "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045", + "check_gpg": true + }, + { + "checksum": "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32", + "check_gpg": true + }, + { + "checksum": "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f", + "check_gpg": true + }, + { + "checksum": "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4", + "check_gpg": true + }, + { + "checksum": "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238", + "check_gpg": true + }, + { + "checksum": "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388", + "check_gpg": true + }, + { + "checksum": "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42", + "check_gpg": true + }, + { + "checksum": "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc", + "check_gpg": true + }, + { + "checksum": "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833", + "check_gpg": true + }, + { + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "checksum": "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f", + "check_gpg": true + }, + { + "checksum": "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb", + "check_gpg": true + }, + { + "checksum": "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c", + "check_gpg": true + }, + { + "checksum": "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500", + "check_gpg": true + }, + { + "checksum": "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71", + "check_gpg": true + }, + { + "checksum": "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7", + "check_gpg": true + }, + { + "checksum": "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42", + "check_gpg": true + }, + { + "checksum": "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8", + "check_gpg": true + }, + { + "checksum": "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5", + "check_gpg": true + }, + { + "checksum": "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af", + "check_gpg": true + }, + { + "checksum": "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348", + "check_gpg": true + }, + { + "checksum": "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff", + "check_gpg": true + }, + { + "checksum": "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce", + "check_gpg": true + }, + { + "checksum": "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9", + "check_gpg": true + }, + { + "checksum": "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5", + "check_gpg": true + }, + { + "checksum": "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c", + "check_gpg": true + }, + { + "checksum": "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca", + "check_gpg": true + }, + { + "checksum": "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da", + "check_gpg": true + }, + { + "checksum": "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6", + "check_gpg": true + }, + { + "checksum": "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34", + "check_gpg": true + }, + { + "checksum": "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c", + "check_gpg": true + }, + { + "checksum": "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a", + "check_gpg": true + }, + { + "checksum": "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39", + "check_gpg": true + }, + { + "checksum": "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83", + "check_gpg": true + }, + { + "checksum": "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2", + "check_gpg": true + }, + { + "checksum": "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519", + "check_gpg": true + }, + { + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "checksum": "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106", + "check_gpg": true + }, + { + "checksum": "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc", + "check_gpg": true + }, + { + "checksum": "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2", + "check_gpg": true + }, + { + "checksum": "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38", + "check_gpg": true + }, + { + "checksum": "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b", + "check_gpg": true + }, + { + "checksum": "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68", + "check_gpg": true + }, + { + "checksum": "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3", + "check_gpg": true + }, + { + "checksum": "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2", + "check_gpg": true + }, + { + "checksum": "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0", + "check_gpg": true + }, + { + "checksum": "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234", + "check_gpg": true + }, + { + "checksum": "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313", + "check_gpg": true + }, + { + "checksum": "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0", + "check_gpg": true + }, + { + "checksum": "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b", + "check_gpg": true + }, + { + "checksum": "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c", + "check_gpg": true + }, + { + "checksum": "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651", + "check_gpg": true + }, + { + "checksum": "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7", + "check_gpg": true + }, + { + "checksum": "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8", + "check_gpg": true + }, + { + "checksum": "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976", + "check_gpg": true + }, + { + "checksum": "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba", + "check_gpg": true + }, + { + "checksum": "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c", + "check_gpg": true + }, + { + "checksum": "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632", + "check_gpg": true + }, + { + "checksum": "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e", + "check_gpg": true + }, + { + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "checksum": "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9", + "check_gpg": true + }, + { + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "checksum": "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a", + "check_gpg": true + }, + { + "checksum": "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552", + "check_gpg": true + }, + { + "checksum": "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3", + "check_gpg": true + }, + { + "checksum": "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5", + "check_gpg": true + }, + { + "checksum": "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1", + "check_gpg": true + }, + { + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "checksum": "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444", + "check_gpg": true + }, + { + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "checksum": "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7", + "check_gpg": true + }, + { + "checksum": "sha256:669250ad47aad5939cf4d1b88036fd95a94845d8e0bbdb05e933f3d2fe262fea", + "check_gpg": true + }, + { + "checksum": "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d", + "check_gpg": true + }, + { + "checksum": "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc", + "check_gpg": true + }, + { + "checksum": "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e", + "check_gpg": true + }, + { + "checksum": "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2", + "check_gpg": true + }, + { + "checksum": "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac", + "check_gpg": true + }, + { + "checksum": "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03", + "check_gpg": true + }, + { + "checksum": "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576", + "check_gpg": true + }, + { + "checksum": "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb", + "check_gpg": true + }, + { + "checksum": "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165", + "check_gpg": true + }, + { + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "checksum": "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3", + "check_gpg": true + }, + { + "checksum": "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071", + "check_gpg": true + }, + { + "checksum": "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2", + "check_gpg": true + }, + { + "checksum": "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5", + "check_gpg": true + }, + { + "checksum": "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454", + "check_gpg": true + }, + { + "checksum": "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612", + "check_gpg": true + }, + { + "checksum": "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1", + "check_gpg": true + }, + { + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "checksum": "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c", + "check_gpg": true + }, + { + "checksum": "sha256:9975496f29601a1c2cdb89e63aac698fdd8283ba3a52a9d91ead9473a0e064c8", + "check_gpg": true + }, + { + "checksum": "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18", + "check_gpg": true + }, + { + "checksum": "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df", + "check_gpg": true + }, + { + "checksum": "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f", + "check_gpg": true + }, + { + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "checksum": "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7", + "check_gpg": true + }, + { + "checksum": "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f", + "check_gpg": true + }, + { + "checksum": "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa", + "check_gpg": true + }, + { + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "checksum": "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05", + "check_gpg": true + }, + { + "checksum": "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431", + "check_gpg": true + }, + { + "checksum": "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c", + "check_gpg": true + }, + { + "checksum": "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9", + "check_gpg": true + } + ] + } + } + ] + }, + "runner": "org.osbuild.fedora31" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:6d8cbba688cea65fa80983cd7f140633e94cd58daa819342d1ae571a4ff174c6", + "check_gpg": true + }, + { + "checksum": "sha256:2c5b5ce5f6e6d1d79f35eab253a12e19aeb863f4fe8ded94013f76a9834689fb", + "check_gpg": true + }, + { + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "checksum": "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d", + "check_gpg": true + }, + { + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "checksum": "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081", + "check_gpg": true + }, + { + "checksum": "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355", + "check_gpg": true + }, + { + "checksum": "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1", + "check_gpg": true + }, + { + "checksum": "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5", + "check_gpg": true + }, + { + "checksum": "sha256:cc02df4125eaebf642edd9bf00031ec09871c285816c03112909ef1005410eaa", + "check_gpg": true + }, + { + "checksum": "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09", + "check_gpg": true + }, + { + "checksum": "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02", + "check_gpg": true + }, + { + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "checksum": "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3", + "check_gpg": true + }, + { + "checksum": "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1", + "check_gpg": true + }, + { + "checksum": "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7", + "check_gpg": true + }, + { + "checksum": "sha256:239a9576864532edd325e72b62a10ef147a2bcc0a925079b19fb9cb74bab0dd7", + "check_gpg": true + }, + { + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "checksum": "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a", + "check_gpg": true + }, + { + "checksum": "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3", + "check_gpg": true + }, + { + "checksum": "sha256:07a3523159719382e2bb9b83961bfe00836cc97f75a9706d02ad73dddb161856", + "check_gpg": true + }, + { + "checksum": "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736", + "check_gpg": true + }, + { + "checksum": "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc", + "check_gpg": true + }, + { + "checksum": "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc", + "check_gpg": true + }, + { + "checksum": "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38", + "check_gpg": true + }, + { + "checksum": "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4", + "check_gpg": true + }, + { + "checksum": "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c", + "check_gpg": true + }, + { + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "checksum": "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8", + "check_gpg": true + }, + { + "checksum": "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4", + "check_gpg": true + }, + { + "checksum": "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49", + "check_gpg": true + }, + { + "checksum": "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1", + "check_gpg": true + }, + { + "checksum": "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee", + "check_gpg": true + }, + { + "checksum": "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8", + "check_gpg": true + }, + { + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "checksum": "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71", + "check_gpg": true + }, + { + "checksum": "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27", + "check_gpg": true + }, + { + "checksum": "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc", + "check_gpg": true + }, + { + "checksum": "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a", + "check_gpg": true + }, + { + "checksum": "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7", + "check_gpg": true + }, + { + "checksum": "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f", + "check_gpg": true + }, + { + "checksum": "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732", + "check_gpg": true + }, + { + "checksum": "sha256:33334afdde6c813b18c18897dca19fab5a2ce090eba0b5ea0a38f43f1081c190", + "check_gpg": true + }, + { + "checksum": "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d", + "check_gpg": true + }, + { + "checksum": "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7", + "check_gpg": true + }, + { + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "checksum": "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063", + "check_gpg": true + }, + { + "checksum": "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159", + "check_gpg": true + }, + { + "checksum": "sha256:34a9986b8b61812ceaf32ce3b189bd0b2cb4adaaf47d76ec1f50ce07c45b5675", + "check_gpg": true + }, + { + "checksum": "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7", + "check_gpg": true + }, + { + "checksum": "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89", + "check_gpg": true + }, + { + "checksum": "sha256:cab1b0c3bdae2a07e15b90b414f50753c759e325b6f0cddfa27895748c77f082", + "check_gpg": true + }, + { + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "checksum": "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228", + "check_gpg": true + }, + { + "checksum": "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407", + "check_gpg": true + }, + { + "checksum": "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f", + "check_gpg": true + }, + { + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "checksum": "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c", + "check_gpg": true + }, + { + "checksum": "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c", + "check_gpg": true + }, + { + "checksum": "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff", + "check_gpg": true + }, + { + "checksum": "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067", + "check_gpg": true + }, + { + "checksum": "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a", + "check_gpg": true + }, + { + "checksum": "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2", + "check_gpg": true + }, + { + "checksum": "sha256:ab35a2d7f21aac1f33f9521607789e1c303fb63e4ea0681e9f724f86a1cc15c5", + "check_gpg": true + }, + { + "checksum": "sha256:e76b3b9d14a0016542f61d0ab2981fbf2d779e522d0c36d9095a1cffecbf9272", + "check_gpg": true + }, + { + "checksum": "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54", + "check_gpg": true + }, + { + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "checksum": "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee", + "check_gpg": true + }, + { + "checksum": "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891", + "check_gpg": true + }, + { + "checksum": "sha256:bc0fe4ecad352d23075ed619b60ce0c4e79fa8034d2139fed46b88ca5b3d738e", + "check_gpg": true + }, + { + "checksum": "sha256:89d9fe993068e433dd650f60acfe16886d975215afbd77a3510f011aee719a1e", + "check_gpg": true + }, + { + "checksum": "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d", + "check_gpg": true + }, + { + "checksum": "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203", + "check_gpg": true + }, + { + "checksum": "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd", + "check_gpg": true + }, + { + "checksum": "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc", + "check_gpg": true + }, + { + "checksum": "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84", + "check_gpg": true + }, + { + "checksum": "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb", + "check_gpg": true + }, + { + "checksum": "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c", + "check_gpg": true + }, + { + "checksum": "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565", + "check_gpg": true + }, + { + "checksum": "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b", + "check_gpg": true + }, + { + "checksum": "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926", + "check_gpg": true + }, + { + "checksum": "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3", + "check_gpg": true + }, + { + "checksum": "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a", + "check_gpg": true + }, + { + "checksum": "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79", + "check_gpg": true + }, + { + "checksum": "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13", + "check_gpg": true + }, + { + "checksum": "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb", + "check_gpg": true + }, + { + "checksum": "sha256:6f2dae9b49bed8e1036a21aadd92ea2eb371979f6714ec2bce5742de051eeb14", + "check_gpg": true + }, + { + "checksum": "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a", + "check_gpg": true + }, + { + "checksum": "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e", + "check_gpg": true + }, + { + "checksum": "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5", + "check_gpg": true + }, + { + "checksum": "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5", + "check_gpg": true + }, + { + "checksum": "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458", + "check_gpg": true + }, + { + "checksum": "sha256:ab5ad6fc076fd82be6a2ca9d77998fc06c2c9e7296de960b7549239efb9f971d", + "check_gpg": true + }, + { + "checksum": "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d", + "check_gpg": true + }, + { + "checksum": "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16", + "check_gpg": true + }, + { + "checksum": "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada", + "check_gpg": true + }, + { + "checksum": "sha256:21ccdbe703caa6a08056d2bc75c1e184f811472a6e320e5af64b8757fcd07166", + "check_gpg": true + }, + { + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "checksum": "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc", + "check_gpg": true + }, + { + "checksum": "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1", + "check_gpg": true + }, + { + "checksum": "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8", + "check_gpg": true + }, + { + "checksum": "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214", + "check_gpg": true + }, + { + "checksum": "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031", + "check_gpg": true + }, + { + "checksum": "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8", + "check_gpg": true + }, + { + "checksum": "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d", + "check_gpg": true + }, + { + "checksum": "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150", + "check_gpg": true + }, + { + "checksum": "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01", + "check_gpg": true + }, + { + "checksum": "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994", + "check_gpg": true + }, + { + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "checksum": "sha256:a188b5c697b734d4ed7d8f954b6875b9d401dc2a3c10bfd20d03db131ca73ab5", + "check_gpg": true + }, + { + "checksum": "sha256:dae094845eb669c1e4c6b9719a730ab71561c8bc8e870d30c9ac9f6437fd2d50", + "check_gpg": true + }, + { + "checksum": "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6", + "check_gpg": true + }, + { + "checksum": "sha256:2af3bbdab1f387ae7af2534846e33ab6d2ca7777399c64191f95699d576cd4ba", + "check_gpg": true + }, + { + "checksum": "sha256:c8e0a36410ebbd9db0a10e1fbecbae8f6288b9be86752d2e91725d5dd98ec65d", + "check_gpg": true + }, + { + "checksum": "sha256:cef060334e8c21b5d2e3a87bdd0ad5ac1be389d7794735506b9d3c65c2923cd3", + "check_gpg": true + }, + { + "checksum": "sha256:d219a6c4a2410d6ef9bad2b337557779b969e278b657ffede83c021c20f665ca", + "check_gpg": true + }, + { + "checksum": "sha256:e4eb72f080bdb339a4748fa9a0749953628189da1c930294c68902bb8b9f8eeb", + "check_gpg": true + }, + { + "checksum": "sha256:efece5a4b070f197a1db3f7e1d030878b1ccdff6a8a0d24c596ecfae374ef194", + "check_gpg": true + }, + { + "checksum": "sha256:8e9a916cd4843e7d09e3d1b814dbb55bb3b45672b1058044cfeaf8e19ad27bd7", + "check_gpg": true + }, + { + "checksum": "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4", + "check_gpg": true + }, + { + "checksum": "sha256:72b5df6982fecdbee30d40bbb6042c72ed0f31b787f289b4a27f0dffc6f609fe", + "check_gpg": true + }, + { + "checksum": "sha256:dc924dd33a9bd0b9483ebdbcf7caecbe1f48b8a135f1521291c8433fa76f4603", + "check_gpg": true + }, + { + "checksum": "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00", + "check_gpg": true + }, + { + "checksum": "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5", + "check_gpg": true + }, + { + "checksum": "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422", + "check_gpg": true + }, + { + "checksum": "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad", + "check_gpg": true + }, + { + "checksum": "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c", + "check_gpg": true + }, + { + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "checksum": "sha256:fb2ff56d3a273eac8775bac03b12f1cf8affa0b92585912de0abf3bc1ccdfa44", + "check_gpg": true + }, + { + "checksum": "sha256:f0509e333636e5c34726c8a2b8260bf88fe0a35b95cae6dda62191fee1be4c6a", + "check_gpg": true + }, + { + "checksum": "sha256:1e5f14d26556e380ed129289c1b98d46d951966e548613b9c2ee0d3616ac96d1", + "check_gpg": true + }, + { + "checksum": "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1", + "check_gpg": true + }, + { + "checksum": "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b", + "check_gpg": true + }, + { + "checksum": "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1", + "check_gpg": true + }, + { + "checksum": "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00", + "check_gpg": true + }, + { + "checksum": "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466", + "check_gpg": true + }, + { + "checksum": "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552", + "check_gpg": true + }, + { + "checksum": "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b", + "check_gpg": true + }, + { + "checksum": "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b", + "check_gpg": true + }, + { + "checksum": "sha256:22db6d1e1f34a43c3d045b6750ff3a32184d47c2aedf3dabc93640057de1f4fa", + "check_gpg": true + }, + { + "checksum": "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679", + "check_gpg": true + }, + { + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "checksum": "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834", + "check_gpg": true + }, + { + "checksum": "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c", + "check_gpg": true + }, + { + "checksum": "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59", + "check_gpg": true + }, + { + "checksum": "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a", + "check_gpg": true + }, + { + "checksum": "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077", + "check_gpg": true + }, + { + "checksum": "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c", + "check_gpg": true + }, + { + "checksum": "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc", + "check_gpg": true + }, + { + "checksum": "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141", + "check_gpg": true + }, + { + "checksum": "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1", + "check_gpg": true + }, + { + "checksum": "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1", + "check_gpg": true + }, + { + "checksum": "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7", + "check_gpg": true + }, + { + "checksum": "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295", + "check_gpg": true + }, + { + "checksum": "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc", + "check_gpg": true + }, + { + "checksum": "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18", + "check_gpg": true + }, + { + "checksum": "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de", + "check_gpg": true + }, + { + "checksum": "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8", + "check_gpg": true + }, + { + "checksum": "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be", + "check_gpg": true + }, + { + "checksum": "sha256:469d12368377399b8eaa7ec8cf1b6378ab18476b4a2b61b79091510a8945c6aa", + "check_gpg": true + }, + { + "checksum": "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2", + "check_gpg": true + }, + { + "checksum": "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090", + "check_gpg": true + }, + { + "checksum": "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d", + "check_gpg": true + }, + { + "checksum": "sha256:0f26eca4ac936554818769fe32aca5e878af2616e83f836ec463e59eb4f9f1f9", + "check_gpg": true + }, + { + "checksum": "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c", + "check_gpg": true + }, + { + "checksum": "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7", + "check_gpg": true + }, + { + "checksum": "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382", + "check_gpg": true + }, + { + "checksum": "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241", + "check_gpg": true + }, + { + "checksum": "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167", + "check_gpg": true + }, + { + "checksum": "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc", + "check_gpg": true + }, + { + "checksum": "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627", + "check_gpg": true + }, + { + "checksum": "sha256:0b54f374bcbe094dbc0d52d9661fe99ebff384026ce0ea39f2d6069e27bf8bdc", + "check_gpg": true + }, + { + "checksum": "sha256:1cd8443585c3146e1af8c611488f9bb80b5ae40485dc2378ac0c9520fd89af44", + "check_gpg": true + }, + { + "checksum": "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874", + "check_gpg": true + }, + { + "checksum": "sha256:5bab4beb581893f90fbb7d46d47c74932cd788c1535f92ee98f81deac6d3658c", + "check_gpg": true + }, + { + "checksum": "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801", + "check_gpg": true + }, + { + "checksum": "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31", + "check_gpg": true + }, + { + "checksum": "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7", + "check_gpg": true + }, + { + "checksum": "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba", + "check_gpg": true + }, + { + "checksum": "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0", + "check_gpg": true + }, + { + "checksum": "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1", + "check_gpg": true + }, + { + "checksum": "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f", + "check_gpg": true + }, + { + "checksum": "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c", + "check_gpg": true + }, + { + "checksum": "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd", + "check_gpg": true + }, + { + "checksum": "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab", + "check_gpg": true + }, + { + "checksum": "sha256:7c0a8499dbc96adcbf8fda7616b593e11521699c16dcd560eca12e11e9a39a78", + "check_gpg": true + }, + { + "checksum": "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc", + "check_gpg": true + }, + { + "checksum": "sha256:6f7fbd57db9334a3cc7983d2e920afe92abe3f7e168702612d70e9ff405d79e6", + "check_gpg": true + }, + { + "checksum": "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345", + "check_gpg": true + }, + { + "checksum": "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde", + "check_gpg": true + }, + { + "checksum": "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37", + "check_gpg": true + }, + { + "checksum": "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f", + "check_gpg": true + }, + { + "checksum": "sha256:8f7b737ccb294fd5ba1d19075ea2a50a54e0265d8efa28aae0ade59d3e3a63be", + "check_gpg": true + }, + { + "checksum": "sha256:430f2f71be063eb9d04fe38659f62e29f47c9c878f9985d0569cb49e9c89ebc0", + "check_gpg": true + }, + { + "checksum": "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43", + "check_gpg": true + }, + { + "checksum": "sha256:c976ce75eda3dbe734117f6f558eafb2061bbef66086a04cb907a7ddbaea8bc2", + "check_gpg": true + }, + { + "checksum": "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664", + "check_gpg": true + }, + { + "checksum": "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57", + "check_gpg": true + }, + { + "checksum": "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d", + "check_gpg": true + }, + { + "checksum": "sha256:6f937306f1af370450c3a127c55d45982715aa3df7175443fbd020922d5176b6", + "check_gpg": true + }, + { + "checksum": "sha256:45bf4bef479712936db1d6859b043d13e6cad41c851b6e621fc315b39ecfa14b", + "check_gpg": true + }, + { + "checksum": "sha256:e91f7fcee1e3e72941c99eec3c3c3c9506cdaf83c01cf1eef257b91ccaff550c", + "check_gpg": true + }, + { + "checksum": "sha256:f8d885f57b3c7b30b6f18f68fed7fd3f19300c22abc5d5ee5029998e96c6b115", + "check_gpg": true + }, + { + "checksum": "sha256:f61555e6e74917be3f131bd5af9d9e30ed709111701e950b7ebd4392baf33f12", + "check_gpg": true + }, + { + "checksum": "sha256:2cd5a709ff2c286b73f850469b1ee6baf9077b90ce3bacb8ba712430c6632350", + "check_gpg": true + }, + { + "checksum": "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf", + "check_gpg": true + }, + { + "checksum": "sha256:8bd2655674b40e89f5f63af7f8ffafd0e9064a3378cdca050262a7272678e8e5", + "check_gpg": true + }, + { + "checksum": "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a", + "check_gpg": true + }, + { + "checksum": "sha256:6f729da330aaaea336458a8b6f3f1d2cc761693ba20bdda57fb9c49fb6f2120d", + "check_gpg": true + }, + { + "checksum": "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc", + "check_gpg": true + }, + { + "checksum": "sha256:8c496ff256c18c8473f6d4ef87287828399f96ae19435e60c8179438aa0b59d0", + "check_gpg": true + }, + { + "checksum": "sha256:cfeb5d0cb9c116e39292e3158c68ee62880cff4a5e3d098d20bf9567e5a576e1", + "check_gpg": true + }, + { + "checksum": "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf", + "check_gpg": true + }, + { + "checksum": "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc", + "check_gpg": true + }, + { + "checksum": "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730", + "check_gpg": true + }, + { + "checksum": "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0", + "check_gpg": true + }, + { + "checksum": "sha256:da923b379524f2d8d26905f26a9dc763cec36c40306c4c53db57100574ea89b8", + "check_gpg": true + }, + { + "checksum": "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3", + "check_gpg": true + }, + { + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "checksum": "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a", + "check_gpg": true + }, + { + "checksum": "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7", + "check_gpg": true + }, + { + "checksum": "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e", + "check_gpg": true + }, + { + "checksum": "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045", + "check_gpg": true + }, + { + "checksum": "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32", + "check_gpg": true + }, + { + "checksum": "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f", + "check_gpg": true + }, + { + "checksum": "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4", + "check_gpg": true + }, + { + "checksum": "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238", + "check_gpg": true + }, + { + "checksum": "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388", + "check_gpg": true + }, + { + "checksum": "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42", + "check_gpg": true + }, + { + "checksum": "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc", + "check_gpg": true + }, + { + "checksum": "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833", + "check_gpg": true + }, + { + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "checksum": "sha256:422625da0fbb99cc4da8eebebff892c6e73a87c81a33190f7a17e344f6bb709e", + "check_gpg": true + }, + { + "checksum": "sha256:307275b46896d56d23f5da5ab77a299941e77165ff44e846d6620eee1158131c", + "check_gpg": true + }, + { + "checksum": "sha256:a1bd1b5a2c47e57957a77d32f4fd705de1df30557837cfbc83b8f284e4ee0456", + "check_gpg": true + }, + { + "checksum": "sha256:6c1f9dc11de4d3af4d4c418b4556ee9659011d587e9da44bb039cb30ac326841", + "check_gpg": true + }, + { + "checksum": "sha256:e1bda9438577473413f3c7455ce84b6c8486adee3d4473fafcd28309ad8c2913", + "check_gpg": true + }, + { + "checksum": "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f", + "check_gpg": true + }, + { + "checksum": "sha256:9247561bad35a8a2f8269b2bbbd28d1bf5e6fcde1fe78e1fc3c0e712513e9703", + "check_gpg": true + }, + { + "checksum": "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb", + "check_gpg": true + }, + { + "checksum": "sha256:fccade859cbb884fd61c07433e6c316f794885cbb2186debcff3f6894d16d52c", + "check_gpg": true + }, + { + "checksum": "sha256:5593277fa685adba864393da8faf76950d6d8fb1483af036cdc08d8437c387bb", + "check_gpg": true + }, + { + "checksum": "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c", + "check_gpg": true + }, + { + "checksum": "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500", + "check_gpg": true + }, + { + "checksum": "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71", + "check_gpg": true + }, + { + "checksum": "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7", + "check_gpg": true + }, + { + "checksum": "sha256:312d4df1d775d511ca8279da21403a9274fdd3943617f29e882ddaa981157c78", + "check_gpg": true + }, + { + "checksum": "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42", + "check_gpg": true + }, + { + "checksum": "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8", + "check_gpg": true + }, + { + "checksum": "sha256:95b45de2c57f35df43bff0c2ebe32c64183968b3a41c5673cfeeff5ece506b94", + "check_gpg": true + }, + { + "checksum": "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5", + "check_gpg": true + }, + { + "checksum": "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af", + "check_gpg": true + }, + { + "checksum": "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348", + "check_gpg": true + }, + { + "checksum": "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff", + "check_gpg": true + }, + { + "checksum": "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce", + "check_gpg": true + }, + { + "checksum": "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9", + "check_gpg": true + }, + { + "checksum": "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5", + "check_gpg": true + }, + { + "checksum": "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c", + "check_gpg": true + }, + { + "checksum": "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca", + "check_gpg": true + }, + { + "checksum": "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da", + "check_gpg": true + }, + { + "checksum": "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6", + "check_gpg": true + }, + { + "checksum": "sha256:e42730d2d1a955c7e3e16303d5333ba88ee1f77e8a88cc09409feb210cc7fcfc", + "check_gpg": true + }, + { + "checksum": "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34", + "check_gpg": true + }, + { + "checksum": "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c", + "check_gpg": true + }, + { + "checksum": "sha256:e405d2edc9b9fc2c13242f0225049b071aa4159d09d8e2d501e8c4fe88a9710b", + "check_gpg": true + }, + { + "checksum": "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47", + "check_gpg": true + }, + { + "checksum": "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70", + "check_gpg": true + }, + { + "checksum": "sha256:a41579023e1db3dec06679ebc7788ece92686ea2a23c78dd749c98ddbc82d419", + "check_gpg": true + }, + { + "checksum": "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a", + "check_gpg": true + }, + { + "checksum": "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39", + "check_gpg": true + }, + { + "checksum": "sha256:764699ea124f85a7afcf65a2f138e3821770f8aa1ef134e1813e2b04477f0b74", + "check_gpg": true + }, + { + "checksum": "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83", + "check_gpg": true + }, + { + "checksum": "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2", + "check_gpg": true + }, + { + "checksum": "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519", + "check_gpg": true + }, + { + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "checksum": "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106", + "check_gpg": true + }, + { + "checksum": "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc", + "check_gpg": true + }, + { + "checksum": "sha256:e9fa9fba03403e709388390a91f4b253e57b8104035f05fabdf4d5c0dd173ce1", + "check_gpg": true + }, + { + "checksum": "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2", + "check_gpg": true + }, + { + "checksum": "sha256:01fa263228ae6524474bf4d622e24510634609cd5f4976affd370388d5bcfc4a", + "check_gpg": true + }, + { + "checksum": "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38", + "check_gpg": true + }, + { + "checksum": "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b", + "check_gpg": true + }, + { + "checksum": "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68", + "check_gpg": true + }, + { + "checksum": "sha256:c3aa4d794cef51ba9fcbf3750baed55aabfa36062a48f61149ccf03364a0d256", + "check_gpg": true + }, + { + "checksum": "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3", + "check_gpg": true + }, + { + "checksum": "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2", + "check_gpg": true + }, + { + "checksum": "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0", + "check_gpg": true + }, + { + "checksum": "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234", + "check_gpg": true + }, + { + "checksum": "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313", + "check_gpg": true + }, + { + "checksum": "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0", + "check_gpg": true + }, + { + "checksum": "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b", + "check_gpg": true + }, + { + "checksum": "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c", + "check_gpg": true + }, + { + "checksum": "sha256:55c47c63deb00a9126c068299c01dfbdd39d58c6962138b862b92f5c7af8c898", + "check_gpg": true + }, + { + "checksum": "sha256:c459092a47bd2f904d9fe830735b512ef97b52785ee12abb2ba5c52465560f18", + "check_gpg": true + }, + { + "checksum": "sha256:09e96f7cdde5f9fc211bcb951171f1139de93e11172681330417be968f3ef462", + "check_gpg": true + }, + { + "checksum": "sha256:5fe6cf04a4b46d825cc63f7f14cc971a13d1abdc023dbd83012fa8f8234157b5", + "check_gpg": true + }, + { + "checksum": "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651", + "check_gpg": true + }, + { + "checksum": "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7", + "check_gpg": true + }, + { + "checksum": "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8", + "check_gpg": true + }, + { + "checksum": "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976", + "check_gpg": true + }, + { + "checksum": "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba", + "check_gpg": true + }, + { + "checksum": "sha256:5e07e49fdacc1f52b583ee685d03bf5ce045e9d34a323bd26607148a3937a9ce", + "check_gpg": true + }, + { + "checksum": "sha256:561014bd90810d512b4098c8e1d3ca05aa8c6a74bc258b3b7e3e2fd36a1ed157", + "check_gpg": true + }, + { + "checksum": "sha256:bd72cac3d1ef93cff067070925e5f339c720bef82c5ade4477388636fef53b91", + "check_gpg": true + }, + { + "checksum": "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c", + "check_gpg": true + }, + { + "checksum": "sha256:118548479396b007a80bc98e8cef770ea242ef6b20cd2922d595acd4c100946d", + "check_gpg": true + }, + { + "checksum": "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632", + "check_gpg": true + }, + { + "checksum": "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e", + "check_gpg": true + }, + { + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "checksum": "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9", + "check_gpg": true + }, + { + "checksum": "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653", + "check_gpg": true + }, + { + "checksum": "sha256:35c348bcd91fa114ad459b888131e5e5509259cffce33f22c44f92e57e9e5919", + "check_gpg": true + }, + { + "checksum": "sha256:63ff108f557096a9724053c37e37d3c2af1a1ec0b33124480b3742ff3da46292", + "check_gpg": true + }, + { + "checksum": "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f", + "check_gpg": true + }, + { + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "checksum": "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02", + "check_gpg": true + }, + { + "checksum": "sha256:a349c40034b5a181cab1bd409384ddb901c274e110b16721d434f5bf42e92c0f", + "check_gpg": true + }, + { + "checksum": "sha256:6807ac3ae6b7c0ea3a085106cedb687f79edfda500feb747039dc112ed3c518f", + "check_gpg": true + }, + { + "checksum": "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a", + "check_gpg": true + }, + { + "checksum": "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552", + "check_gpg": true + }, + { + "checksum": "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3", + "check_gpg": true + }, + { + "checksum": "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5", + "check_gpg": true + }, + { + "checksum": "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1", + "check_gpg": true + }, + { + "checksum": "sha256:ca6a71888b8d147342012c64533f61a41b26c788bbcd2844a2164ee007fac981", + "check_gpg": true + }, + { + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "checksum": "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444", + "check_gpg": true + }, + { + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "checksum": "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142", + "check_gpg": true + }, + { + "checksum": "sha256:b1094a9a9725546315d6eac7f792d5875a5f0c950cd84e43fc2fbb3e639ee43e", + "check_gpg": true + }, + { + "checksum": "sha256:bd2e7c9e3df976723ade08f16667b31044b678e62ee29e024ad193af6d9a28e1", + "check_gpg": true + }, + { + "checksum": "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7", + "check_gpg": true + }, + { + "checksum": "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d", + "check_gpg": true + }, + { + "checksum": "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc", + "check_gpg": true + }, + { + "checksum": "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e", + "check_gpg": true + }, + { + "checksum": "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663", + "check_gpg": true + }, + { + "checksum": "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2", + "check_gpg": true + }, + { + "checksum": "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac", + "check_gpg": true + }, + { + "checksum": "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03", + "check_gpg": true + }, + { + "checksum": "sha256:f50957375c79be57f391625b97d6ea74505e05f2edc6b9bc6768d5e3ad6ef8f8", + "check_gpg": true + }, + { + "checksum": "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576", + "check_gpg": true + }, + { + "checksum": "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb", + "check_gpg": true + }, + { + "checksum": "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165", + "check_gpg": true + }, + { + "checksum": "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108", + "check_gpg": true + }, + { + "checksum": "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a", + "check_gpg": true + }, + { + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "checksum": "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3", + "check_gpg": true + }, + { + "checksum": "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071", + "check_gpg": true + }, + { + "checksum": "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2", + "check_gpg": true + }, + { + "checksum": "sha256:687d00eb0b77446dbd78aaa0f4f99cc080c677930ad783120483614255264a3d", + "check_gpg": true + }, + { + "checksum": "sha256:6b694ee239a2e3f38c401e975de392e3731ad8b18be5a3249ea02f19e87cb5cb", + "check_gpg": true + }, + { + "checksum": "sha256:93161df6d62fe654c7cdba9ae36343d2549b437b27eac816a80f8d7c32a47162", + "check_gpg": true + }, + { + "checksum": "sha256:4f9bbd08f6019b3482342d616d6b04e6481924ea34fbfe8d30ef63402a92e9b1", + "check_gpg": true + }, + { + "checksum": "sha256:704ebfc50ace9417ed28f4530d778359a4c2f95d524c2e99346472245e30b548", + "check_gpg": true + }, + { + "checksum": "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5", + "check_gpg": true + }, + { + "checksum": "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454", + "check_gpg": true + }, + { + "checksum": "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612", + "check_gpg": true + }, + { + "checksum": "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1", + "check_gpg": true + }, + { + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "checksum": "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c", + "check_gpg": true + }, + { + "checksum": "sha256:9975496f29601a1c2cdb89e63aac698fdd8283ba3a52a9d91ead9473a0e064c8", + "check_gpg": true + }, + { + "checksum": "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18", + "check_gpg": true + }, + { + "checksum": "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df", + "check_gpg": true + }, + { + "checksum": "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f", + "check_gpg": true + }, + { + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "checksum": "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7", + "check_gpg": true + }, + { + "checksum": "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f", + "check_gpg": true + }, + { + "checksum": "sha256:d2c819a7e607a9e22f55047ed03d064e4b0f125ad4fb20532c543a6d8af8bfa5", + "check_gpg": true + }, + { + "checksum": "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa", + "check_gpg": true + }, + { + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "checksum": "sha256:af9e09c03e45e67e102f248651f45b7f5e523d5758e71ab01f488d1f0e4b4875", + "check_gpg": true + }, + { + "checksum": "sha256:949ab50877fa46fc9573284f661812173fa9faa21d1877d0c7df4203a3ccc7f0", + "check_gpg": true + }, + { + "checksum": "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05", + "check_gpg": true + }, + { + "checksum": "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431", + "check_gpg": true + }, + { + "checksum": "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488", + "check_gpg": true + }, + { + "checksum": "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c", + "check_gpg": true + }, + { + "checksum": "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "redhat": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "vfs_type": "ext4", + "path": "/", + "options": "defaults", + "freq": 1, + "passno": 1 + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "kernel_opts": "ro biosdevname=0 net.ifnames=0", + "legacy": "i386-pc" + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "vmdk", + "filename": "disk.vmdk", + "size": 2147483648, + "ptuuid": "0x14fc63d2", + "pttype": "mbr", + "partitions": [ + { + "start": 2048, + "bootable": true, + "filesystem": { + "type": "ext4", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.111", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm", + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/acl-2.2.53-4.fc31.x86_64.rpm", + "checksum": "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d", + "check_gpg": true + }, + { + "name": "adobe-source-code-pro-fonts", + "epoch": 0, + "version": "2.030.1.050", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm", + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "name": "adwaita-cursor-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "name": "adwaita-icon-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/alternatives-1.11-5.fc31.x86_64.rpm", + "checksum": "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081", + "check_gpg": true + }, + { + "name": "at-spi2-atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.x86_64.rpm", + "checksum": "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355", + "check_gpg": true + }, + { + "name": "at-spi2-core", + "epoch": 0, + "version": "2.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1", + "check_gpg": true + }, + { + "name": "atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/atk-2.34.1-1.fc31.x86_64.rpm", + "checksum": "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm", + "checksum": "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09", + "check_gpg": true + }, + { + "name": "avahi-libs", + "epoch": 0, + "version": "0.7", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/avahi-libs-0.7-20.fc31.x86_64.rpm", + "checksum": "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "8.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm", + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bash-5.0.7-3.fc31.x86_64.rpm", + "checksum": "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3", + "check_gpg": true + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.7", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/brotli-1.0.7-6.fc31.x86_64.rpm", + "checksum": "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.x86_64.rpm", + "checksum": "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm", + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "name": "cairo", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-1.16.0-6.fc31.x86_64.rpm", + "checksum": "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a", + "check_gpg": true + }, + { + "name": "cairo-gobject", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.x86_64.rpm", + "checksum": "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3", + "check_gpg": true + }, + { + "name": "colord-libs", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/colord-libs-1.4.4-2.fc31.x86_64.rpm", + "checksum": "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-8.31-4.fc31.x86_64.rpm", + "checksum": "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-common-8.31-4.fc31.x86_64.rpm", + "checksum": "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "12.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cpio-2.12-12.fc31.x86_64.rpm", + "checksum": "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-2.9.6-21.fc31.x86_64.rpm", + "checksum": "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.x86_64.rpm", + "checksum": "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20190816", + "release": "4.gitbb9bf99.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm", + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8", + "check_gpg": true + }, + { + "name": "cups-libs", + "epoch": 1, + "version": "2.2.12", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cups-libs-2.2.12-2.fc31.x86_64.rpm", + "checksum": "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/curl-7.66.0-1.fc31.x86_64.rpm", + "checksum": "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.x86_64.rpm", + "checksum": "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-1.12.16-3.fc31.x86_64.rpm", + "checksum": "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "21", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-broker-21-6.fc31.x86_64.rpm", + "checksum": "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm", + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-3.fc31.x86_64.rpm", + "checksum": "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71", + "check_gpg": true + }, + { + "name": "dconf", + "epoch": 0, + "version": "0.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dconf-0.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-2.fc31.x86_64.rpm", + "checksum": "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-1.02.163-2.fc31.x86_64.rpm", + "checksum": "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.x86_64.rpm", + "checksum": "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/diffutils-3.7-3.fc31.x86_64.rpm", + "checksum": "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dosfstools-4.1-9.fc31.x86_64.rpm", + "checksum": "sha256:b110ee65fa2dee77585ec77cab592cba2434d579f8afbed4d2a908ad1addccfc", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "27.git20181204.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-049-27.git20181204.fc31.1.x86_64.rpm", + "checksum": "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm", + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libelf-0.177-1.fc31.x86_64.rpm", + "checksum": "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libs-0.177-1.fc31.x86_64.rpm", + "checksum": "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/expat-2.2.8-1.fc31.x86_64.rpm", + "checksum": "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm", + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-31-1.noarch.rpm", + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-common-31-1.noarch.rpm", + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-repos-31-1.noarch.rpm", + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-5.37-3.fc31.x86_64.rpm", + "checksum": "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-libs-5.37-3.fc31.x86_64.rpm", + "checksum": "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.12", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/filesystem-3.12-2.fc31.x86_64.rpm", + "checksum": "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "24.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/findutils-4.6.0-24.fc31.x86_64.rpm", + "checksum": "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-7.fc31.x86_64.rpm", + "checksum": "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.x86_64.rpm", + "checksum": "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2", + "check_gpg": true + }, + { + "name": "fontconfig", + "epoch": 0, + "version": "2.13.92", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontconfig-2.13.92-3.fc31.x86_64.rpm", + "checksum": "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54", + "check_gpg": true + }, + { + "name": "fontpackages-filesystem", + "epoch": 0, + "version": "1.44", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm", + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.10.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/freetype-2.10.0-3.fc31.x86_64.rpm", + "checksum": "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee", + "check_gpg": true + }, + { + "name": "fribidi", + "epoch": 0, + "version": "1.0.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fribidi-1.0.5-4.fc31.x86_64.rpm", + "checksum": "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-8.fc31.x86_64.rpm", + "checksum": "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gawk-5.0.1-5.fc31.x86_64.rpm", + "checksum": "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203", + "check_gpg": true + }, + { + "name": "gcr", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-3.33.4-1.fc31.x86_64.rpm", + "checksum": "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd", + "check_gpg": true + }, + { + "name": "gcr-base", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-base-3.33.4-1.fc31.x86_64.rpm", + "checksum": "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.x86_64.rpm", + "checksum": "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.x86_64.rpm", + "checksum": "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2-modules", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.x86_64.rpm", + "checksum": "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3", + "check_gpg": true + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib-networking-2.62.1-1.fc31.x86_64.rpm", + "checksum": "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib2-2.62.1-1.fc31.x86_64.rpm", + "checksum": "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13", + "check_gpg": true + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:f67d5cc67029c6c38185f94b72aaa9034a49f5c4f166066c8268b41e1b18a202", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-common-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gmp-6.1.2-10.fc31.x86_64.rpm", + "checksum": "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a", + "check_gpg": true + }, + { + "name": "gnome-keyring", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-2.2.17-2.fc31.x86_64.rpm", + "checksum": "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.x86_64.rpm", + "checksum": "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnutls-3.6.10-1.fc31.x86_64.rpm", + "checksum": "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gpgme-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d", + "check_gpg": true + }, + { + "name": "graphite2", + "epoch": 0, + "version": "1.3.13", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/graphite2-1.3.13-1.fc31.x86_64.rpm", + "checksum": "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grep-3.3-3.fc31.x86_64.rpm", + "checksum": "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-common-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8", + "check_gpg": true + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-extra-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031", + "check_gpg": true + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8", + "check_gpg": true + }, + { + "name": "gtk-update-icon-cache", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.x86_64.rpm", + "checksum": "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d", + "check_gpg": true + }, + { + "name": "gtk3", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk3-3.24.12-3.fc31.x86_64.rpm", + "checksum": "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gzip-1.10-1.fc31.x86_64.rpm", + "checksum": "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01", + "check_gpg": true + }, + { + "name": "harfbuzz", + "epoch": 0, + "version": "2.6.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/harfbuzz-2.6.1-2.fc31.x86_64.rpm", + "checksum": "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994", + "check_gpg": true + }, + { + "name": "hicolor-icon-theme", + "epoch": 0, + "version": "0.17", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm", + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.x86_64.rpm", + "checksum": "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.3", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-libs-1.8.3-5.fc31.x86_64.rpm", + "checksum": "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4", + "check_gpg": true + }, + { + "name": "jasper-libs", + "epoch": 0, + "version": "2.0.14", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jasper-libs-2.0.14-9.fc31.x86_64.rpm", + "checksum": "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00", + "check_gpg": true + }, + { + "name": "jbigkit-libs", + "epoch": 0, + "version": "2.1", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jbigkit-libs-2.1-17.fc31.x86_64.rpm", + "checksum": "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-c-0.13.1-6.fc31.x86_64.rpm", + "checksum": "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422", + "check_gpg": true + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-glib-1.4.4-3.fc31.x86_64.rpm", + "checksum": "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-2.0.4-14.fc31.x86_64.rpm", + "checksum": "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-legacy-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-misc-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-3.fc31.x86_64.rpm", + "checksum": "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-26-4.fc31.x86_64.rpm", + "checksum": "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-libs-26-4.fc31.x86_64.rpm", + "checksum": "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kpartx-0.8.0-3.fc31.x86_64.rpm", + "checksum": "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.17", + "release": "45.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/krb5-libs-1.17-45.fc31.x86_64.rpm", + "checksum": "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466", + "check_gpg": true + }, + { + "name": "lcms2", + "epoch": 0, + "version": "2.9", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lcms2-2.9-6.fc31.x86_64.rpm", + "checksum": "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b", + "check_gpg": true + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-1.6.8-3.fc31.x86_64.rpm", + "checksum": "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679", + "check_gpg": true + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm", + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXau-1.0.9-2.fc31.x86_64.rpm", + "checksum": "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834", + "check_gpg": true + }, + { + "name": "libXcomposite", + "epoch": 0, + "version": "0.4.4", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcomposite-0.4.4-17.fc31.x86_64.rpm", + "checksum": "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c", + "check_gpg": true + }, + { + "name": "libXcursor", + "epoch": 0, + "version": "1.1.15", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcursor-1.1.15-6.fc31.x86_64.rpm", + "checksum": "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59", + "check_gpg": true + }, + { + "name": "libXdamage", + "epoch": 0, + "version": "1.1.4", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXdamage-1.1.4-17.fc31.x86_64.rpm", + "checksum": "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a", + "check_gpg": true + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXext-1.3.4-2.fc31.x86_64.rpm", + "checksum": "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077", + "check_gpg": true + }, + { + "name": "libXfixes", + "epoch": 0, + "version": "5.0.3", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXfixes-5.0.3-10.fc31.x86_64.rpm", + "checksum": "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c", + "check_gpg": true + }, + { + "name": "libXft", + "epoch": 0, + "version": "2.3.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXft-2.3.3-2.fc31.x86_64.rpm", + "checksum": "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc", + "check_gpg": true + }, + { + "name": "libXi", + "epoch": 0, + "version": "1.7.10", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXi-1.7.10-2.fc31.x86_64.rpm", + "checksum": "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141", + "check_gpg": true + }, + { + "name": "libXinerama", + "epoch": 0, + "version": "1.1.4", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXinerama-1.1.4-4.fc31.x86_64.rpm", + "checksum": "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1", + "check_gpg": true + }, + { + "name": "libXrandr", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrandr-1.5.2-2.fc31.x86_64.rpm", + "checksum": "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1", + "check_gpg": true + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrender-0.9.10-10.fc31.x86_64.rpm", + "checksum": "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7", + "check_gpg": true + }, + { + "name": "libXtst", + "epoch": 0, + "version": "1.2.3", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXtst-1.2.3-10.fc31.x86_64.rpm", + "checksum": "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libacl-2.2.53-4.fc31.x86_64.rpm", + "checksum": "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc", + "check_gpg": true + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.111", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libaio-0.3.111-6.fc31.x86_64.rpm", + "checksum": "sha256:ee6596a5010c2b4a038861828ecca240aa03c592dacd83c3a70d44cb8ee50408", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libarchive-3.4.0-1.fc31.x86_64.rpm", + "checksum": "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libargon2-20171227-3.fc31.x86_64.rpm", + "checksum": "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libassuan-2.5.3-2.fc31.x86_64.rpm", + "checksum": "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libattr-2.4.48-7.fc31.x86_64.rpm", + "checksum": "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libblkid-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-2.26-6.fc31.x86_64.rpm", + "checksum": "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-ng-0.7.9-8.fc31.x86_64.rpm", + "checksum": "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcom_err-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcomps-0.1.11-3.fc31.x86_64.rpm", + "checksum": "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcroco-0.6.13-2.fc31.x86_64.rpm", + "checksum": "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcurl-7.66.0-1.fc31.x86_64.rpm", + "checksum": "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241", + "check_gpg": true + }, + { + "name": "libdatrie", + "epoch": 0, + "version": "0.2.9", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdatrie-0.2.9-10.fc31.x86_64.rpm", + "checksum": "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-5.3.28-38.fc31.x86_64.rpm", + "checksum": "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-38.fc31.x86_64.rpm", + "checksum": "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdnf-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "28.20190324cvs.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.x86_64.rpm", + "checksum": "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801", + "check_gpg": true + }, + { + "name": "libepoxy", + "epoch": 0, + "version": "1.5.3", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libepoxy-1.5.3-4.fc31.x86_64.rpm", + "checksum": "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libevent-2.1.8-7.fc31.x86_64.rpm", + "checksum": "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libfdisk-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "23.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libffi-3.1-23.fc31.x86_64.rpm", + "checksum": "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcc-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-1.fc31.x86_64.rpm", + "checksum": "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgomp-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgpg-error-1.36-2.fc31.x86_64.rpm", + "checksum": "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd", + "check_gpg": true + }, + { + "name": "libgusb", + "epoch": 0, + "version": "0.3.0", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgusb-0.3.0-5.fc31.x86_64.rpm", + "checksum": "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libidn2-2.2.0-2.fc31.x86_64.rpm", + "checksum": "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc", + "check_gpg": true + }, + { + "name": "libjpeg-turbo", + "epoch": 0, + "version": "2.0.2", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.x86_64.rpm", + "checksum": "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-1.fc31.x86_64.rpm", + "checksum": "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-1.fc31.x86_64.rpm", + "checksum": "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libksba-1.3.5-10.fc31.x86_64.rpm", + "checksum": "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-9.fc31.x86_64.rpm", + "checksum": "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43", + "check_gpg": true + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodman-2.0.1-20.fc31.x86_64.rpm", + "checksum": "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664", + "check_gpg": true + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.15", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.x86_64.rpm", + "checksum": "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmount-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.39.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnghttp2-1.39.2-1.fc31.x86_64.rpm", + "checksum": "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "5.20180605git4a062cf.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.x86_64.rpm", + "checksum": "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.0", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpcap-1.9.0-4.fc31.x86_64.rpm", + "checksum": "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc", + "check_gpg": true + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.37", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpng-1.6.37-2.fc31.x86_64.rpm", + "checksum": "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf", + "check_gpg": true + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libproxy-0.4.15-14.fc31.x86_64.rpm", + "checksum": "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpsl-0.21.0-2.fc31.x86_64.rpm", + "checksum": "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpwquality-1.4.1-1.fc31.x86_64.rpm", + "checksum": "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.10.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/librepo-1.10.5-1.fc31.x86_64.rpm", + "checksum": "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.10.1", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm", + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libseccomp-2.4.1-1.fc31.x86_64.rpm", + "checksum": "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.19.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsecret-0.19.1-1.fc31.x86_64.rpm", + "checksum": "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-utils-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsemanage-2.9-3.fc31.x86_64.rpm", + "checksum": "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsepol-2.9-2.fc31.x86_64.rpm", + "checksum": "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsigsegv-2.11-8.fc31.x86_64.rpm", + "checksum": "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsmartcols-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.5", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsolv-0.7.5-3.fc31.x86_64.rpm", + "checksum": "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388", + "check_gpg": true + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.68.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsoup-2.68.2-1.fc31.x86_64.rpm", + "checksum": "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libss-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-0.9.0-6.fc31.x86_64.rpm", + "checksum": "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm", + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libstdc++-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.14", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtasn1-4.14-2.fc31.x86_64.rpm", + "checksum": "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c", + "check_gpg": true + }, + { + "name": "libthai", + "epoch": 0, + "version": "0.1.28", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libthai-0.1.28-3.fc31.x86_64.rpm", + "checksum": "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500", + "check_gpg": true + }, + { + "name": "libtiff", + "epoch": 0, + "version": "4.0.10", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtiff-4.0.10-6.fc31.x86_64.rpm", + "checksum": "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "2.rc3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.x86_64.rpm", + "checksum": "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libunistring-0.9.10-6.fc31.x86_64.rpm", + "checksum": "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.22", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libusbx-1.0.22-4.fc31.x86_64.rpm", + "checksum": "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libutempter-1.1.6-17.fc31.x86_64.rpm", + "checksum": "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuuid-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libverto-0.3.0-8.fc31.x86_64.rpm", + "checksum": "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348", + "check_gpg": true + }, + { + "name": "libwayland-client", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-client-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff", + "check_gpg": true + }, + { + "name": "libwayland-cursor", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce", + "check_gpg": true + }, + { + "name": "libwayland-egl", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9", + "check_gpg": true + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcb-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-4.4.10-1.fc31.x86_64.rpm", + "checksum": "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.10-1.fc31.x86_64.rpm", + "checksum": "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.8.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.x86_64.rpm", + "checksum": "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxml2-2.9.9-3.fc31.x86_64.rpm", + "checksum": "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libyaml-0.2.2-2.fc31.x86_64.rpm", + "checksum": "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libzstd-1.4.2-1.fc31.x86_64.rpm", + "checksum": "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-6.fc31.x86_64.rpm", + "checksum": "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-1.fc31.x86_64.rpm", + "checksum": "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mkpasswd-5.5.2-1.fc31.x86_64.rpm", + "checksum": "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mpfr-3.1.6-5.fc31.x86_64.rpm", + "checksum": "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-6.1-12.20190803.fc31.x86_64.rpm", + "checksum": "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm", + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.x86_64.rpm", + "checksum": "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nettle-3.5.1-3.fc31.x86_64.rpm", + "checksum": "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/npth-1.6-3.fc31.x86_64.rpm", + "checksum": "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openldap-2.4.47-3.fc31.x86_64.rpm", + "checksum": "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-1.1.1d-2.fc31.x86_64.rpm", + "checksum": "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.x86_64.rpm", + "checksum": "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.x86_64.rpm", + "checksum": "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/os-prober-1.77-3.fc31.x86_64.rpm", + "checksum": "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.x86_64.rpm", + "checksum": "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.x86_64.rpm", + "checksum": "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "18.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pam-1.3.1-18.fc31.x86_64.rpm", + "checksum": "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b", + "check_gpg": true + }, + { + "name": "pango", + "epoch": 0, + "version": "1.44.6", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pango-1.44.6-1.fc31.x86_64.rpm", + "checksum": "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.43", + "release": "2.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre-8.43-2.fc31.1.x86_64.rpm", + "checksum": "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.33", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre2-10.33-14.fc31.x86_64.rpm", + "checksum": "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pigz-2.4-5.fc31.x86_64.rpm", + "checksum": "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pinentry-1.1.0-6.fc31.x86_64.rpm", + "checksum": "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976", + "check_gpg": true + }, + { + "name": "pixman", + "epoch": 0, + "version": "0.38.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pixman-0.38.4-1.fc31.x86_64.rpm", + "checksum": "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/policycoreutils-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "18.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/popt-1.16-18.fc31.x86_64.rpm", + "checksum": "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-6.fc31.x86_64.rpm", + "checksum": "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm", + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm", + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-3.7.4-5.fc31.x86_64.rpm", + "checksum": "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.x86_64.rpm", + "checksum": "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libs-3.7.4-5.fc31.x86_64.rpm", + "checksum": "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-rpm-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-unbound-1.9.3-1.fc31.x86_64.rpm", + "checksum": "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7", + "check_gpg": true + }, + { + "name": "qemu-img", + "epoch": 2, + "version": "4.1.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qemu-img-4.1.0-2.fc31.x86_64.rpm", + "checksum": "sha256:669250ad47aad5939cf4d1b88036fd95a94845d8e0bbdb05e933f3d2fe262fea", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.x86_64.rpm", + "checksum": "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/readline-8.0-3.fc31.x86_64.rpm", + "checksum": "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc", + "check_gpg": true + }, + { + "name": "rest", + "epoch": 0, + "version": "0.8.1", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rest-0.8.1-6.fc31.x86_64.rpm", + "checksum": "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sed-4.5-4.fc31.x86_64.rpm", + "checksum": "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.3", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm", + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "16.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shadow-utils-4.6-16.fc31.x86_64.rpm", + "checksum": "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.14", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shared-mime-info-1.14-1.fc31.x86_64.rpm", + "checksum": "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.29.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.x86_64.rpm", + "checksum": "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5", + "check_gpg": true + }, + { + "name": "systemd-bootchart", + "epoch": 0, + "version": "233", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-bootchart-233-5.fc31.x86_64.rpm", + "checksum": "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm", + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-udev-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tar-1.32-2.fc31.x86_64.rpm", + "checksum": "sha256:9975496f29601a1c2cdb89e63aac698fdd8283ba3a52a9d91ead9473a0e064c8", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tss2-1331-2.fc31.x86_64.rpm", + "checksum": "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm", + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/unbound-libs-1.9.3-1.fc31.x86_64.rpm", + "checksum": "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/util-linux-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "15.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/which-2.21-15.fc31.x86_64.rpm", + "checksum": "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm", + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.27", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm", + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-5.2.4-6.fc31.x86_64.rpm", + "checksum": "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-libs-5.2.4-6.fc31.x86_64.rpm", + "checksum": "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.2", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.x86_64.rpm", + "checksum": "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "19.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zlib-1.2.11-19.fc31.x86_64.rpm", + "checksum": "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9", + "check_gpg": true + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.20.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/NetworkManager-1.20.4-1.fc31.x86_64.rpm", + "checksum": "sha256:6d8cbba688cea65fa80983cd7f140633e94cd58daa819342d1ae571a4ff174c6", + "check_gpg": true + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.20.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.20.4-1.fc31.x86_64.rpm", + "checksum": "sha256:2c5b5ce5f6e6d1d79f35eab253a12e19aeb863f4fe8ded94013f76a9834689fb", + "check_gpg": true + }, + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.111", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/abattis-cantarell-fonts-0.111-3.fc31.noarch.rpm", + "checksum": "sha256:70ea69b3f7c94f069b3ab4d7cb9ed7d3592d5e5487edc5cd6d5fb96049df6524", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/acl-2.2.53-4.fc31.x86_64.rpm", + "checksum": "sha256:2015152c175a78e6da877565d946fe88f0a913052e580e599480884a9d7eb27d", + "check_gpg": true + }, + { + "name": "adobe-source-code-pro-fonts", + "epoch": 0, + "version": "2.030.1.050", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch.rpm", + "checksum": "sha256:d3da31400c3b9277ec828ceea8a56e2dcfd0ebca0541c3ac8426a082bc17e647", + "check_gpg": true + }, + { + "name": "adwaita-cursor-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-cursor-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:9ec2a643accfd8843a0ce2dd96ba349bfa474daea14099810a95ae65d929f2b5", + "check_gpg": true + }, + { + "name": "adwaita-icon-theme", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/adwaita-icon-theme-3.34.0-1.fc31.noarch.rpm", + "checksum": "sha256:f6b2aa7fe304420261fe558377d1c498654dd0caaf964406cd9a462fee450b26", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/alternatives-1.11-5.fc31.x86_64.rpm", + "checksum": "sha256:7e818c6d664ab888801f5ef1a7d6e5921fee8e1202be6d5d5279869101782081", + "check_gpg": true + }, + { + "name": "at-spi2-atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-atk-2.34.1-1.fc31.x86_64.rpm", + "checksum": "sha256:8ac6d8893d1d3b02de7d7536dc5f5cdef9accfb1dfc2cdcfd5ba5c42a96ca355", + "check_gpg": true + }, + { + "name": "at-spi2-core", + "epoch": 0, + "version": "2.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/at-spi2-core-2.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:0d92313a03dda1ef33d57fc19f244d8cbf2ef874971d1607cc8ca81107a2b0b1", + "check_gpg": true + }, + { + "name": "atk", + "epoch": 0, + "version": "2.34.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/atk-2.34.1-1.fc31.x86_64.rpm", + "checksum": "sha256:8e66d3e96bdc2b62925bb18de871fecf38af0a7bc7c5ccd6f66955e2cd5eedb5", + "check_gpg": true + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm", + "checksum": "sha256:cc02df4125eaebf642edd9bf00031ec09871c285816c03112909ef1005410eaa", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.12.20190507gitf58ec40.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.12.20190507gitf58ec40.fc31.x86_64.rpm", + "checksum": "sha256:786ef932e766e09fa23e9e17f0cd20091f8cd5ca91017715d0cdcb3c1ccbdf09", + "check_gpg": true + }, + { + "name": "avahi-libs", + "epoch": 0, + "version": "0.7", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/a/avahi-libs-0.7-20.fc31.x86_64.rpm", + "checksum": "sha256:316eb653de837e1518e8c50a9a1670a6f286a66d29378d84a318bc6889998c02", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "8.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/basesystem-11-8.fc31.noarch.rpm", + "checksum": "sha256:20ef955e5f735233a425725b9af41d960b5602dfb0ae812ae720e37c9bf8a292", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bash-5.0.7-3.fc31.x86_64.rpm", + "checksum": "sha256:09f5522e833a03fd66e7ea9368331b7f316f494db26decda59cbacb6ea4185b3", + "check_gpg": true + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.7", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/brotli-1.0.7-6.fc31.x86_64.rpm", + "checksum": "sha256:2c58791f5b7f7c3489f28a20d1a34849aeadbeed68e306e349350b5c455779b1", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-1.fc31.x86_64.rpm", + "checksum": "sha256:ac05bd748e0fa500220f46ed02c4a4a2117dfa88dec83ffca86af21546eb32d7", + "check_gpg": true + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.15.0", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/c-ares-1.15.0-4.fc31.x86_64.rpm", + "checksum": "sha256:239a9576864532edd325e72b62a10ef147a2bcc0a925079b19fb9cb74bab0dd7", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/ca-certificates-2019.2.32-3.fc31.noarch.rpm", + "checksum": "sha256:17858593b13d7f42c4fa57b1f5954619c8a98762f5486c038ea8344300aeab65", + "check_gpg": true + }, + { + "name": "cairo", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-1.16.0-6.fc31.x86_64.rpm", + "checksum": "sha256:0bfe4f53be3237581114dbb553b054cfef037cd2d6da8aeb753ffae82cf20e2a", + "check_gpg": true + }, + { + "name": "cairo-gobject", + "epoch": 0, + "version": "1.16.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cairo-gobject-1.16.0-6.fc31.x86_64.rpm", + "checksum": "sha256:21b69be5a5cdd883eac38b6520a6779a89bd054adbc8e92ad19135da39bc5cc3", + "check_gpg": true + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/chrony-3.5-4.fc31.x86_64.rpm", + "checksum": "sha256:07a3523159719382e2bb9b83961bfe00836cc97f75a9706d02ad73dddb161856", + "check_gpg": true + }, + { + "name": "colord-libs", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/colord-libs-1.4.4-2.fc31.x86_64.rpm", + "checksum": "sha256:8d56c5ad7384d257f8606d0e900a81a9862a61e6db128f79e7c11fdcc54cd736", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-8.31-4.fc31.x86_64.rpm", + "checksum": "sha256:c2504cb12996b680d8b48a0c9e7f0f7e1764c2f1d474fbbafcae7e2c37ba4ebc", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.31", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/coreutils-common-8.31-4.fc31.x86_64.rpm", + "checksum": "sha256:f1aa7fbc599aa180109c6b2a38a9f17c156a4fdc3b8e08bae7c3cfb18e0c66cc", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "12.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cpio-2.12-12.fc31.x86_64.rpm", + "checksum": "sha256:68d204fa04cb7229fe3bc36e81f0c7a4b36a562de1f1e05ddb6387e174ab8a38", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-2.9.6-21.fc31.x86_64.rpm", + "checksum": "sha256:a2709e60bc43f50f75cda7e3b4b6910c2a04754127ef0851343a1c792b44d8a4", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-21.fc31.x86_64.rpm", + "checksum": "sha256:38267ab511726b8a58a79501af1f55cb8b691b077e22ba357ba03bf1d48d3c7c", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20190816", + "release": "4.gitbb9bf99.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/crypto-policies-20190816-4.gitbb9bf99.fc31.noarch.rpm", + "checksum": "sha256:af2501d5d8d857f43d0c08658ce3d49ab787e9f61773883256fb933dc271cdd6", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:c82dcc10fb8288e15e1c30c3be3d4bf602c3c3b24a1083d539399aba6ccaa7b8", + "check_gpg": true + }, + { + "name": "cups-libs", + "epoch": 1, + "version": "2.2.12", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cups-libs-2.2.12-2.fc31.x86_64.rpm", + "checksum": "sha256:878adb82cdf1eaf0f87c914b7ef957db3331326a8cb8b17e0bbaeb113cb58fb4", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/curl-7.66.0-1.fc31.x86_64.rpm", + "checksum": "sha256:9c682a651918df4fb389acb9a561be6fdf8f78d42b013891329083ff800b1d49", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-2.fc31.x86_64.rpm", + "checksum": "sha256:f5bd70c60b67c83316203dadf0d32c099b717ab025ff2fbf1ee7b2413e403ea1", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-1.12.16-3.fc31.x86_64.rpm", + "checksum": "sha256:5db4afe4279135df6a2274ac4ed15e58af5d7135d6a9b0c0207411b098f037ee", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "21", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-broker-21-6.fc31.x86_64.rpm", + "checksum": "sha256:ec0eb93eef4645c726c4e867a9fdc8bba8fde484f292d0a034b803fe39ac73d8", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-3.fc31.noarch.rpm", + "checksum": "sha256:2f167a2ae4a8c29b627918c1b0f89e0b38418c394a2e373f314dbf25449a167c", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-3.fc31.x86_64.rpm", + "checksum": "sha256:73ac2ea8d2c95b8103a5d96c63a76b61e1f10bf7f27fa868e6bfe040875cdb71", + "check_gpg": true + }, + { + "name": "dconf", + "epoch": 0, + "version": "0.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dconf-0.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:f2fcc322b352d3100f5ddce1231651705bd4b9fb9da61a2fa4eab696aba47e27", + "check_gpg": true + }, + { + "name": "dejavu-fonts-common", + "epoch": 0, + "version": "2.37", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dejavu-fonts-common-2.37-2.fc31.noarch.rpm", + "checksum": "sha256:34f7954cf6c6ceb4385fdcc587dced94405913ddfe5e3213fcbd72562f286fbc", + "check_gpg": true + }, + { + "name": "dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-2.fc31.noarch.rpm", + "checksum": "sha256:2a4edc7c8f839d7714134cb5ebbcfd33656e7e699eef57fd7f6658b02003dc7a", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-2.fc31.x86_64.rpm", + "checksum": "sha256:646e4e89c4161fda700ef03352fd93f5d0b785a4e34361600fe5e8e6ae4e2ee7", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-1.02.163-2.fc31.x86_64.rpm", + "checksum": "sha256:d8fa0b0947084bce50438b7eaf5a5085abd35e36c69cfb13d5f58e98a258e36f", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.163", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.163-2.fc31.x86_64.rpm", + "checksum": "sha256:0ebd37bcd6d2beb5692b7c7e3d94b90a26d45b059696d954b502d85d738b7732", + "check_gpg": true + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.4.1", + "release": "15.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dhcp-client-4.4.1-15.fc31.x86_64.rpm", + "checksum": "sha256:33334afdde6c813b18c18897dca19fab5a2ce090eba0b5ea0a38f43f1081c190", + "check_gpg": true + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.4.1", + "release": "15.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dhcp-common-4.4.1-15.fc31.noarch.rpm", + "checksum": "sha256:750b46d07f3395ea86a89bcf0cae02adc64f5b995800ea6c8eab58be4e9d6e8d", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/diffutils-3.7-3.fc31.x86_64.rpm", + "checksum": "sha256:de6463679bcc8c817a27448c21fee5069b6423b240fe778f928351103dbde2b7", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:048e8325a759219a66788676c167a784534c8b1f81b1ae13f8617f7b7c5b79cd", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-data-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:02301d2744b96674019251b6c8d2199790960e4cc79d90fbdb946a298fc2c4ea", + "check_gpg": true + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.9", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dnf-plugins-core-4.0.9-1.fc31.noarch.rpm", + "checksum": "sha256:16ea1e6ba5bbf16cb6a052b2326d25b9980971fd72c46e7d701e09f267d33063", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "27.git20181204.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-049-27.git20181204.fc31.1.x86_64.rpm", + "checksum": "sha256:ef55145ef56d4d63c0085d04e856943d5c61c11ba10c70a383d8f67b74818159", + "check_gpg": true + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "049", + "release": "27.git20181204.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/d/dracut-config-generic-049-27.git20181204.fc31.1.x86_64.rpm", + "checksum": "sha256:34a9986b8b61812ceaf32ce3b189bd0b2cb4adaaf47d76ec1f50ce07c45b5675", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:71c02de0e50e07999d0f4f40bce06ca4904e0ab786220bd7ffebc4a60a4d3cd7", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:de678f5a55f5ff690f3587adcbc7a1b7d477fefe85ffd5d91fc1447ddba63c89", + "check_gpg": true + }, + { + "name": "ebtables-legacy", + "epoch": 0, + "version": "2.0.10", + "release": "37.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/ebtables-legacy-2.0.10-37.fc31.x86_64.rpm", + "checksum": "sha256:cab1b0c3bdae2a07e15b90b414f50753c759e325b6f0cddfa27895748c77f082", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.177-1.fc31.noarch.rpm", + "checksum": "sha256:8323e1b19cb904a26b3e394e2aee81d5a73dbe136e317e1ea490bceef250c427", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libelf-0.177-1.fc31.x86_64.rpm", + "checksum": "sha256:d5a2a0d33d0d2c058baff22f30b967e29488fb7c057c4fe408bc97622a387228", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.177", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/elfutils-libs-0.177-1.fc31.x86_64.rpm", + "checksum": "sha256:78a05c1e13157052498713660836de4ebeb751307b72bc4fb93639e68c2a4407", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/e/expat-2.2.8-1.fc31.x86_64.rpm", + "checksum": "sha256:d53b4a19789e80f5af881a9cde899b2f3c95d05b6ef20d6bf88272313720286f", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-gpg-keys-31-1.noarch.rpm", + "checksum": "sha256:f2ae011207332ac90d0cf50b1f0b9eb0ce8be1d4d4c7186463dff38a90af0f3d", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-31-1.noarch.rpm", + "checksum": "sha256:40eee4e4234c781277a202aa0e834c2be8afc28a3e4012b07d6c24058b0f4add", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-release-common-31-1.noarch.rpm", + "checksum": "sha256:e566c03caeeaa58db28c0b257f5d36ea92adfe2a18884208f03611c35397a6a1", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "31", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fedora-repos-31-1.noarch.rpm", + "checksum": "sha256:9c9250ccd816e5d8c2bfdee14d16e9e71d2038707009e36e7642c136d7c62e4c", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-5.37-3.fc31.x86_64.rpm", + "checksum": "sha256:541284cf25ca710f2497930f9f9487a5ddbb685948590c124aa62ebd5948a69c", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.37", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/file-libs-5.37-3.fc31.x86_64.rpm", + "checksum": "sha256:2e7d25d8f36811f1c02d8533b35b93f40032e9a5e603564d8098a13dc1f2068c", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.12", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/filesystem-3.12-2.fc31.x86_64.rpm", + "checksum": "sha256:ce05d442cca1de33cb9b4dfb72b94d8b97a072e2add394e075131d395ef463ff", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "24.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/findutils-4.6.0-24.fc31.x86_64.rpm", + "checksum": "sha256:7a0436142eb4f8fdf821883dd3ce26e6abcf398b77bcb2653349d19d2fc97067", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-7.fc31.x86_64.rpm", + "checksum": "sha256:e1fade407177440ee7d0996c5658b4c7d1d9acf1d3e07e93e19b3a2f33bc655a", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-7.fc31.x86_64.rpm", + "checksum": "sha256:f5cf761f647c75a90fa796b4eb6b1059b357554ea70fdc1c425afc5aeea2c6d2", + "check_gpg": true + }, + { + "name": "firewalld", + "epoch": 0, + "version": "0.7.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/firewalld-0.7.2-1.fc31.noarch.rpm", + "checksum": "sha256:ab35a2d7f21aac1f33f9521607789e1c303fb63e4ea0681e9f724f86a1cc15c5", + "check_gpg": true + }, + { + "name": "firewalld-filesystem", + "epoch": 0, + "version": "0.7.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/firewalld-filesystem-0.7.2-1.fc31.noarch.rpm", + "checksum": "sha256:e76b3b9d14a0016542f61d0ab2981fbf2d779e522d0c36d9095a1cffecbf9272", + "check_gpg": true + }, + { + "name": "fontconfig", + "epoch": 0, + "version": "2.13.92", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontconfig-2.13.92-3.fc31.x86_64.rpm", + "checksum": "sha256:0941afcd4d666d1435f8d2a1a1b752631b281a001232e12afe0fd085bfb65c54", + "check_gpg": true + }, + { + "name": "fontpackages-filesystem", + "epoch": 0, + "version": "1.44", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fontpackages-filesystem-1.44-25.fc31.noarch.rpm", + "checksum": "sha256:8dbcbe9e8936e6e7cace19b20beade285862e1c65851dc67f2af440ce0c2d3fc", + "check_gpg": true + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.10.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/freetype-2.10.0-3.fc31.x86_64.rpm", + "checksum": "sha256:e93267cad4c9085fe6b18cfc82ec20472f87b6532c45c69c7c0a3037764225ee", + "check_gpg": true + }, + { + "name": "fribidi", + "epoch": 0, + "version": "1.0.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fribidi-1.0.5-4.fc31.x86_64.rpm", + "checksum": "sha256:b33e17fd420feedcf4f569444de92ea99efdfbaf62c113e02c09a9e2812ef891", + "check_gpg": true + }, + { + "name": "fuse", + "epoch": 0, + "version": "2.9.9", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fuse-2.9.9-8.fc31.x86_64.rpm", + "checksum": "sha256:bc0fe4ecad352d23075ed619b60ce0c4e79fa8034d2139fed46b88ca5b3d738e", + "check_gpg": true + }, + { + "name": "fuse-common", + "epoch": 0, + "version": "3.6.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fuse-common-3.6.2-1.fc31.x86_64.rpm", + "checksum": "sha256:89d9fe993068e433dd650f60acfe16886d975215afbd77a3510f011aee719a1e", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-8.fc31.x86_64.rpm", + "checksum": "sha256:885da4b5a7bc1a6aee2e823d89cf518d2632b5454467560d6e2a84b2552aab0d", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gawk-5.0.1-5.fc31.x86_64.rpm", + "checksum": "sha256:826ab0318f77a2dfcda2a9240560b6f9bd943e63371324a96b07674e7d8e5203", + "check_gpg": true + }, + { + "name": "gcr", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-3.33.4-1.fc31.x86_64.rpm", + "checksum": "sha256:34a182fca42c4cac66aa6186603509b90659076d62147ac735def1adb72883dd", + "check_gpg": true + }, + { + "name": "gcr-base", + "epoch": 0, + "version": "3.33.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gcr-base-3.33.4-1.fc31.x86_64.rpm", + "checksum": "sha256:7c03db291cdd867b7ec47843c3ec490e65eb20ee4e808c8a17be324a1b48c1bc", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-1.fc31.x86_64.rpm", + "checksum": "sha256:fba574e749c579b5430887d37f513f1eb622a4ed66aec7e103230f1b5296ca84", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-2.40.0-1.fc31.x86_64.rpm", + "checksum": "sha256:bb9333c64743a0511ba64d903e1926a73899e03d8cf4f07b2dbfdfa2880c38eb", + "check_gpg": true + }, + { + "name": "gdk-pixbuf2-modules", + "epoch": 0, + "version": "2.40.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gdk-pixbuf2-modules-2.40.0-1.fc31.x86_64.rpm", + "checksum": "sha256:d549f399d31a17e8d00107f479a6465373badb1e83c12dffb4c0d957f489447c", + "check_gpg": true + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20190806", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/geolite2-city-20190806-1.fc31.noarch.rpm", + "checksum": "sha256:d25bc4ae557b402ec151cbf70cb8f63e985c456ed7f0347505cf6cf171d15565", + "check_gpg": true + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20190806", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/geolite2-country-20190806-1.fc31.noarch.rpm", + "checksum": "sha256:fe7b068f7f0840245e41844bcb98a2e438b33fd91d19bbf88bcbcd608109360b", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:d15a64e0b9f48e32938080427c2523570f9b0a2b315a030968236c1563f46926", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:72a4172f6cc83a448f78628ada26598f8df6cb0f73d0413263dec8f4258405d3", + "check_gpg": true + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib-networking-2.62.1-1.fc31.x86_64.rpm", + "checksum": "sha256:334acbe8e1e38b1af7d0bc9bf08b47afbd4efff197443307978bc568d984dd9a", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.62.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glib2-2.62.1-1.fc31.x86_64.rpm", + "checksum": "sha256:75e1eee594eb4c58e5ba43f949d521dbf8e30792cc05afb65b6bc47f57fa4e79", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:33e0ad9b92d40c4e09d6407df1c8549b3d4d3d64fdd482439e66d12af6004f13", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-common-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:1098c7738ca3b78a999074fbb93a268acac499ee8994c29757b1b858f59381bb", + "check_gpg": true + }, + { + "name": "glibc-langpack-en", + "epoch": 0, + "version": "2.30", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.30-5.fc31.x86_64.rpm", + "checksum": "sha256:6f2dae9b49bed8e1036a21aadd92ea2eb371979f6714ec2bce5742de051eeb14", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gmp-6.1.2-10.fc31.x86_64.rpm", + "checksum": "sha256:a2cc503ec5b820eebe5ea01d741dd8bbae9e8482248d76fc3dd09359482c3b5a", + "check_gpg": true + }, + { + "name": "gnome-keyring", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnome-keyring-3.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:fbdb24dee2d905b9731d9a76a0d40349f48db9dea77969e6647005b10331d94e", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-2.2.17-2.fc31.x86_64.rpm", + "checksum": "sha256:3fb79b4c008a36de1afc85e6f404456cf3be21dc63af94252699b6224cc2d0e5", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.17", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.17-2.fc31.x86_64.rpm", + "checksum": "sha256:43fec8e5aac577b9443651df960859d60b01f059368e4893d959e7ae521a53f5", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gnutls-3.6.10-1.fc31.x86_64.rpm", + "checksum": "sha256:8efcfb0b364048f2e19c36ee0c76121f2a3cbe8e31b3d0616fc3a209aebd0458", + "check_gpg": true + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.62.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gobject-introspection-1.62.0-1.fc31.x86_64.rpm", + "checksum": "sha256:ab5ad6fc076fd82be6a2ca9d77998fc06c2c9e7296de960b7549239efb9f971d", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gpgme-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:a598834d29d6669e782084b166c09d442ee30c09a41ab0120319f738cb31a86d", + "check_gpg": true + }, + { + "name": "graphite2", + "epoch": 0, + "version": "1.3.13", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/graphite2-1.3.13-1.fc31.x86_64.rpm", + "checksum": "sha256:1539aaea631452cf45818e6c833dd7dd67861a94f8e1369f11ca2adbabc04f16", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grep-3.3-3.fc31.x86_64.rpm", + "checksum": "sha256:429d0c6cc38e9e3646ede67aa9d160f265a8f9cbe669e8eefd360a8316054ada", + "check_gpg": true + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/groff-base-1.22.3-20.fc31.x86_64.rpm", + "checksum": "sha256:21ccdbe703caa6a08056d2bc75c1e184f811472a6e320e5af64b8757fcd07166", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-common-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:811b8cf02991087a50664df5606348f2c4d48a534b0436caeedb3afbcc1882e0", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:f60ad958572d322fc2270e519e67bcd7f27afd09fee86392cab1355b7ab3f1bc", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.02-100.fc31.noarch.rpm", + "checksum": "sha256:a41b445e863f0d8b55bb8c5c3741ea812d01acac57edcbe4402225b4da4032d1", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:b71d3b31f845eb3f3e5c02c1f3dbb50cbafbfd60cb33a241167c6a254e11aad8", + "check_gpg": true + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-extra-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:1a9ea1d9f16732fb1959a737bdf86f239e51df56370501b52662f5e27e8e2214", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "100.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.02-100.fc31.x86_64.rpm", + "checksum": "sha256:5d32c68717b5d27c9abd2b78b33d2869680854c7cbf76515d869693a58732031", + "check_gpg": true + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.34.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gsettings-desktop-schemas-3.34.0-1.fc31.x86_64.rpm", + "checksum": "sha256:23033db493b636b1cb523d5994f88fda12676367cebcb31b5aef994472977df8", + "check_gpg": true + }, + { + "name": "gtk-update-icon-cache", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk-update-icon-cache-3.24.12-3.fc31.x86_64.rpm", + "checksum": "sha256:c2fa570dc5db86e4275b1f5865f6059faaffcadc5b3e05c2aff8b8cd2a858c5d", + "check_gpg": true + }, + { + "name": "gtk3", + "epoch": 0, + "version": "3.24.12", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gtk3-3.24.12-3.fc31.x86_64.rpm", + "checksum": "sha256:76d0092972cea4d6118e95bad0cc8dc576b224df5b7f33e1e94802d8bc601150", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/g/gzip-1.10-1.fc31.x86_64.rpm", + "checksum": "sha256:1f1ed6ed142b94b6ad53d11a1402417bc696a7a2c8cacaf25d12b7ba6db16f01", + "check_gpg": true + }, + { + "name": "harfbuzz", + "epoch": 0, + "version": "2.6.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/harfbuzz-2.6.1-2.fc31.x86_64.rpm", + "checksum": "sha256:332d62f7711ca2e3d59c5c09b821e13c0b00ba497c2b35c8809e1e0534d63994", + "check_gpg": true + }, + { + "name": "hicolor-icon-theme", + "epoch": 0, + "version": "0.17", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hicolor-icon-theme-0.17-7.fc31.noarch.rpm", + "checksum": "sha256:2d37070a684785bc9dc72ff008ede02166816609242dbf98f96c80514d9c0850", + "check_gpg": true + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.20", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hostname-3.20-9.fc31.x86_64.rpm", + "checksum": "sha256:a188b5c697b734d4ed7d8f954b6875b9d401dc2a3c10bfd20d03db131ca73ab5", + "check_gpg": true + }, + { + "name": "hwdata", + "epoch": 0, + "version": "0.328", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/h/hwdata-0.328-1.fc31.noarch.rpm", + "checksum": "sha256:dae094845eb669c1e4c6b9719a730ab71561c8bc8e870d30c9ac9f6437fd2d50", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-2.fc31.x86_64.rpm", + "checksum": "sha256:efcf9db40d3554c93cd0ec593717f68f2bfeb68c2b102cb9a4650933d6783ac6", + "check_gpg": true + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.02", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/initscripts-10.02-2.fc31.x86_64.rpm", + "checksum": "sha256:2af3bbdab1f387ae7af2534846e33ab6d2ca7777399c64191f95699d576cd4ba", + "check_gpg": true + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.2.5", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipcalc-0.2.5-3.fc31.x86_64.rpm", + "checksum": "sha256:c8e0a36410ebbd9db0a10e1fbecbae8f6288b9be86752d2e91725d5dd98ec65d", + "check_gpg": true + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.3.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iproute-5.3.0-1.fc31.x86_64.rpm", + "checksum": "sha256:cef060334e8c21b5d2e3a87bdd0ad5ac1be389d7794735506b9d3c65c2923cd3", + "check_gpg": true + }, + { + "name": "iproute-tc", + "epoch": 0, + "version": "5.3.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iproute-tc-5.3.0-1.fc31.x86_64.rpm", + "checksum": "sha256:d219a6c4a2410d6ef9bad2b337557779b969e278b657ffede83c021c20f665ca", + "check_gpg": true + }, + { + "name": "ipset", + "epoch": 0, + "version": "7.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipset-7.3-1.fc31.x86_64.rpm", + "checksum": "sha256:e4eb72f080bdb339a4748fa9a0749953628189da1c930294c68902bb8b9f8eeb", + "check_gpg": true + }, + { + "name": "ipset-libs", + "epoch": 0, + "version": "7.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/ipset-libs-7.3-1.fc31.x86_64.rpm", + "checksum": "sha256:efece5a4b070f197a1db3f7e1d030878b1ccdff6a8a0d24c596ecfae374ef194", + "check_gpg": true + }, + { + "name": "iptables", + "epoch": 0, + "version": "1.8.3", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-1.8.3-5.fc31.x86_64.rpm", + "checksum": "sha256:8e9a916cd4843e7d09e3d1b814dbb55bb3b45672b1058044cfeaf8e19ad27bd7", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.3", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iptables-libs-1.8.3-5.fc31.x86_64.rpm", + "checksum": "sha256:7bb5a754279f22f7ad88d1794b59140b298f238ec8880cbbc541af31f554f5d4", + "check_gpg": true + }, + { + "name": "iputils", + "epoch": 0, + "version": "20190515", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/i/iputils-20190515-3.fc31.x86_64.rpm", + "checksum": "sha256:72b5df6982fecdbee30d40bbb6042c72ed0f31b787f289b4a27f0dffc6f609fe", + "check_gpg": true + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.12", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jansson-2.12-4.fc31.x86_64.rpm", + "checksum": "sha256:dc924dd33a9bd0b9483ebdbcf7caecbe1f48b8a135f1521291c8433fa76f4603", + "check_gpg": true + }, + { + "name": "jasper-libs", + "epoch": 0, + "version": "2.0.14", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jasper-libs-2.0.14-9.fc31.x86_64.rpm", + "checksum": "sha256:7481f1dc2c2164271d5d0cdb72252c6a4fd0538409fc046b7974bf44912ece00", + "check_gpg": true + }, + { + "name": "jbigkit-libs", + "epoch": 0, + "version": "2.1", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/jbigkit-libs-2.1-17.fc31.x86_64.rpm", + "checksum": "sha256:5716ed06fb5fadba88b94a40e4f1cec731ef91d0e1ca03e5de71cab3d786f1e5", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-c-0.13.1-6.fc31.x86_64.rpm", + "checksum": "sha256:25a49339149412ef95e1170a06f50f3b41860f1125fb24517ac7ee321e1ec422", + "check_gpg": true + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/j/json-glib-1.4.4-3.fc31.x86_64.rpm", + "checksum": "sha256:eb3ba99d5f1f87c9fbc3f020d7bab3fa2a16e0eb8da4e6decc97daaf54a61aad", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-2.0.4-14.fc31.x86_64.rpm", + "checksum": "sha256:ca40387a8df2dce01b2766971c4dc676920a816ac6455fb5ab1ae6a28966825c", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-legacy-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:e63f82e1a97f9b3ff079f2329ddc22e4b37c892972ead5807c242fca61ac6076", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "14.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kbd-misc-2.0.4-14.fc31.noarch.rpm", + "checksum": "sha256:1dac3ea14f3a0b4e023e1d11e4a7102437009dda5b4d41a8b33775ccbd4aa560", + "check_gpg": true + }, + { + "name": "kernel", + "epoch": 0, + "version": "5.3.7", + "release": "301.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-5.3.7-301.fc31.x86_64.rpm", + "checksum": "sha256:fb2ff56d3a273eac8775bac03b12f1cf8affa0b92585912de0abf3bc1ccdfa44", + "check_gpg": true + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "5.3.7", + "release": "301.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-core-5.3.7-301.fc31.x86_64.rpm", + "checksum": "sha256:f0509e333636e5c34726c8a2b8260bf88fe0a35b95cae6dda62191fee1be4c6a", + "check_gpg": true + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "5.3.7", + "release": "301.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kernel-modules-5.3.7-301.fc31.x86_64.rpm", + "checksum": "sha256:1e5f14d26556e380ed129289c1b98d46d951966e548613b9c2ee0d3616ac96d1", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-3.fc31.x86_64.rpm", + "checksum": "sha256:cfdf9310e54bc09babd3b37ae0d4941a50bf460964e1e299d1000c50d93d01d1", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-26-4.fc31.x86_64.rpm", + "checksum": "sha256:ec22cf64138373b6f28dab0b824fbf9cdec8060bf7b8ce8216a361ab70f0849b", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "26", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kmod-libs-26-4.fc31.x86_64.rpm", + "checksum": "sha256:ac074fa439e3b877d37e03c74f5b34f4d28f2f18d8ee23d62bf1987fbc39cca1", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/kpartx-0.8.0-3.fc31.x86_64.rpm", + "checksum": "sha256:7bfe0dcb089cd76b67c99ac1165fa4878f0f53143f4f9e44252a11b83e2f1a00", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.17", + "release": "45.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/k/krb5-libs-1.17-45.fc31.x86_64.rpm", + "checksum": "sha256:5c9ea3bf394ef9a29e1e6cbdee698fc5431214681dcd581d00a579bf4d2a4466", + "check_gpg": true + }, + { + "name": "langpacks-core-en", + "epoch": 0, + "version": "2.0", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/langpacks-core-en-2.0-7.fc31.noarch.rpm", + "checksum": "sha256:80cca68bc5a904fbb0123a57d22938cb42d33bf94cf7daf404b5033752081552", + "check_gpg": true + }, + { + "name": "langpacks-en", + "epoch": 0, + "version": "2.0", + "release": "7.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/langpacks-en-2.0-7.fc31.noarch.rpm", + "checksum": "sha256:30672b7650d66796acd7b68434755a29d38427aa4702e87d05e2a63e93ad250b", + "check_gpg": true + }, + { + "name": "lcms2", + "epoch": 0, + "version": "2.9", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lcms2-2.9-6.fc31.x86_64.rpm", + "checksum": "sha256:88f7e40abc8cdda97eba125ac736ffbfb223c5f788452eb9274017746e664f7b", + "check_gpg": true + }, + { + "name": "less", + "epoch": 0, + "version": "551", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/less-551-2.fc31.x86_64.rpm", + "checksum": "sha256:22db6d1e1f34a43c3d045b6750ff3a32184d47c2aedf3dabc93640057de1f4fa", + "check_gpg": true + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-1.6.8-3.fc31.x86_64.rpm", + "checksum": "sha256:2965daa0e2508714954b7a5582761bc3ba4a0a3f66f5d336b57edb56c802a679", + "check_gpg": true + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.8", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libX11-common-1.6.8-3.fc31.noarch.rpm", + "checksum": "sha256:6b983575f1280a583f8b6f3bd61958b177b12bdc3dd76efba72e530f4fc14e89", + "check_gpg": true + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXau-1.0.9-2.fc31.x86_64.rpm", + "checksum": "sha256:f9be669af4200b3376b85a14faef4eee8c892eed82b188b3a6e8e4501ecd6834", + "check_gpg": true + }, + { + "name": "libXcomposite", + "epoch": 0, + "version": "0.4.4", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcomposite-0.4.4-17.fc31.x86_64.rpm", + "checksum": "sha256:a18c3ec9929cc832979cedb4386eccfc07af51ff599e02d3acae1fc25a6aa43c", + "check_gpg": true + }, + { + "name": "libXcursor", + "epoch": 0, + "version": "1.1.15", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXcursor-1.1.15-6.fc31.x86_64.rpm", + "checksum": "sha256:d9d375917e2e112001689ba41c1ab25e4eb6fc9f2a0fe9c637c14d9e9a204d59", + "check_gpg": true + }, + { + "name": "libXdamage", + "epoch": 0, + "version": "1.1.4", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXdamage-1.1.4-17.fc31.x86_64.rpm", + "checksum": "sha256:4c36862b5d4aaa77f4a04221f5826dd96a200107f3c26cba4c1fdeb323bb761a", + "check_gpg": true + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXext-1.3.4-2.fc31.x86_64.rpm", + "checksum": "sha256:2de277557a972f000ebfacb7452a0a8758ee8feb99e73923f2a3107abe579077", + "check_gpg": true + }, + { + "name": "libXfixes", + "epoch": 0, + "version": "5.0.3", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXfixes-5.0.3-10.fc31.x86_64.rpm", + "checksum": "sha256:28a7d8f299a8793f9c54e008ffba1f2941e028121cb62b10916a2dc82d3a0d9c", + "check_gpg": true + }, + { + "name": "libXft", + "epoch": 0, + "version": "2.3.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXft-2.3.3-2.fc31.x86_64.rpm", + "checksum": "sha256:3434fe7dfffa29d996d94d2664dd2597ce446abf6b0d75920cc691540e139fcc", + "check_gpg": true + }, + { + "name": "libXi", + "epoch": 0, + "version": "1.7.10", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXi-1.7.10-2.fc31.x86_64.rpm", + "checksum": "sha256:954210a80d6c343a538b4db1fcc212c41c4a05576962e5b52ac1dd10d6194141", + "check_gpg": true + }, + { + "name": "libXinerama", + "epoch": 0, + "version": "1.1.4", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXinerama-1.1.4-4.fc31.x86_64.rpm", + "checksum": "sha256:78c76972fbc454dc36dcf86a7910015181b82353c53aae93374191df71d8c2e1", + "check_gpg": true + }, + { + "name": "libXrandr", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrandr-1.5.2-2.fc31.x86_64.rpm", + "checksum": "sha256:c282dc7b97dd5205f20dc7fff526c8bd7ea958f2bed82e9d6d56c611e0f8c8d1", + "check_gpg": true + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXrender-0.9.10-10.fc31.x86_64.rpm", + "checksum": "sha256:e09eab5507fdad1d4262300135526b1970eeb0c7fbcbb2b4de35e13e4758baf7", + "check_gpg": true + }, + { + "name": "libXtst", + "epoch": 0, + "version": "1.2.3", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libXtst-1.2.3-10.fc31.x86_64.rpm", + "checksum": "sha256:c54fce67cb14a807fc78caef03cd777306b7dc0c6df03a5c64b07a7b20f01295", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libacl-2.2.53-4.fc31.x86_64.rpm", + "checksum": "sha256:910c6772942fa77b9aa855718dd077a14f130402e409c003474d7e53b45738bc", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libarchive-3.4.0-1.fc31.x86_64.rpm", + "checksum": "sha256:33f37ee132feff578bdf50f89f6f6a18c3c7fcc699b5ea7922317087fd210c18", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libargon2-20171227-3.fc31.x86_64.rpm", + "checksum": "sha256:380c550646d851548504adb7b42ed67fd51b8624b59525c11b85dad44d46d0de", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libassuan-2.5.3-2.fc31.x86_64.rpm", + "checksum": "sha256:bce6ac5968f13cce82decd26a934b9182e1fd8725d06c3597ae1e84bb62877f8", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libattr-2.4.48-7.fc31.x86_64.rpm", + "checksum": "sha256:8ebb46ef920e5d9171424dd153e856744333f0b13480f12123e14c0adbd372be", + "check_gpg": true + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-43.fc31.x86_64.rpm", + "checksum": "sha256:469d12368377399b8eaa7ec8cf1b6378ab18476b4a2b61b79091510a8945c6aa", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libblkid-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:744916120dc4d1a6c619eb9179ba21a2d094d400249b82c90d290eeb289b3da2", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-2.26-6.fc31.x86_64.rpm", + "checksum": "sha256:752afa1afcc629d0de6850b51943acd93d37ee8802b85faede3082ea5b332090", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcap-ng-0.7.9-8.fc31.x86_64.rpm", + "checksum": "sha256:e06296d17ac6392bdcc24692c42173df3de50d5025a568fa60f57c24095b276d", + "check_gpg": true + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcollection-0.7.0-43.fc31.x86_64.rpm", + "checksum": "sha256:0f26eca4ac936554818769fe32aca5e878af2616e83f836ec463e59eb4f9f1f9", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcom_err-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:f1044304c1606cd4e83c72b8418b99c393c20e51903f05e104dd18c8266c607c", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcomps-0.1.11-3.fc31.x86_64.rpm", + "checksum": "sha256:9f27b31259f644ff789ce51bdd3bddeb900fc085f4efc66e5cf01044bac8e4d7", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcroco-0.6.13-2.fc31.x86_64.rpm", + "checksum": "sha256:8b018800fcc3b0e0325e70b13b8576dd0175d324bfe8cadf96d36dae3c10f382", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.66.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libcurl-7.66.0-1.fc31.x86_64.rpm", + "checksum": "sha256:00fd71d1f1db947f65d49f0da03fa4cd22b84da73c31a564afc5203a6d437241", + "check_gpg": true + }, + { + "name": "libdatrie", + "epoch": 0, + "version": "0.2.9", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdatrie-0.2.9-10.fc31.x86_64.rpm", + "checksum": "sha256:0295047022d7d4ad6176581430d7179a0a3aab93f02a5711d9810796f786a167", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-5.3.28-38.fc31.x86_64.rpm", + "checksum": "sha256:825f2b7c1cbd6bf5724dac4fe015d0bca0be1982150e9d4f40a9bd3ed6a5d8cc", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "38.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-38.fc31.x86_64.rpm", + "checksum": "sha256:a9a2dd2fae52473c35c6677d4ac467bf81be20256916bf4e65379a0e97642627", + "check_gpg": true + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdhash-0.5.0-43.fc31.x86_64.rpm", + "checksum": "sha256:0b54f374bcbe094dbc0d52d9661fe99ebff384026ce0ea39f2d6069e27bf8bdc", + "check_gpg": true + }, + { + "name": "libdnet", + "epoch": 0, + "version": "1.12", + "release": "31.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdnet-1.12-31.fc31.x86_64.rpm", + "checksum": "sha256:1cd8443585c3146e1af8c611488f9bb80b5ae40485dc2378ac0c9520fd89af44", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdnf-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:60588f6f70a9fb3dd91335eb9ea457f7e391f801f39f14631bacda722bcf9874", + "check_gpg": true + }, + { + "name": "libdrm", + "epoch": 0, + "version": "2.4.99", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libdrm-2.4.99-2.fc31.x86_64.rpm", + "checksum": "sha256:5bab4beb581893f90fbb7d46d47c74932cd788c1535f92ee98f81deac6d3658c", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "28.20190324cvs.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libedit-3.1-28.20190324cvs.fc31.x86_64.rpm", + "checksum": "sha256:b4bcff28b0ca93ed5f5a1b3536e4f8fc03b986b8bb2f80a3736d9ed5bda13801", + "check_gpg": true + }, + { + "name": "libepoxy", + "epoch": 0, + "version": "1.5.3", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libepoxy-1.5.3-4.fc31.x86_64.rpm", + "checksum": "sha256:b213e542b7bd85b292205a4529d705002b5a84dc90e1b7be1f1fbad715a2bb31", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "7.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libevent-2.1.8-7.fc31.x86_64.rpm", + "checksum": "sha256:3af1b67f48d26f3da253952ae4b7a10a186c3df7b552c5ff2f603c66f6c8cab7", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libfdisk-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:22134389a270ed41fbbc6d023ec9df641c191f33c91450d1670a85a274ed0dba", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "23.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libffi-3.1-23.fc31.x86_64.rpm", + "checksum": "sha256:60c2bf4d0b3bd8184e509a2dc91ff673b89c011dcdf69084d298f2c23ef0b3f0", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcc-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:4106397648e9ef9ed7de9527f0da24c7e5698baa5bc1961b44707b55730ad5e1", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-1.fc31.x86_64.rpm", + "checksum": "sha256:2235a7ff5351a81a38e613feda0abee3a4cbc06512451d21ef029f4af9a9f30f", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgomp-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:5bcc15454512ae4851b17adf833e1360820b40e0b093d93af8a7a762e25ed22c", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgpg-error-1.36-2.fc31.x86_64.rpm", + "checksum": "sha256:2bda0490bdec6e85dab028721927971966caaca2b604785ca4b1ec686a245fbd", + "check_gpg": true + }, + { + "name": "libgusb", + "epoch": 0, + "version": "0.3.0", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libgusb-0.3.0-5.fc31.x86_64.rpm", + "checksum": "sha256:7cfeee5b0527e051b77af261a7cfbab74fe8d63707374c733d180c38aca5b3ab", + "check_gpg": true + }, + { + "name": "libicu", + "epoch": 0, + "version": "63.2", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libicu-63.2-3.fc31.x86_64.rpm", + "checksum": "sha256:7c0a8499dbc96adcbf8fda7616b593e11521699c16dcd560eca12e11e9a39a78", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libidn2-2.2.0-2.fc31.x86_64.rpm", + "checksum": "sha256:76ed3c7fe9f0baa492a81f0ed900f77da88770c37d146c95aea5e032111a04dc", + "check_gpg": true + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libini_config-1.3.1-43.fc31.x86_64.rpm", + "checksum": "sha256:6f7fbd57db9334a3cc7983d2e920afe92abe3f7e168702612d70e9ff405d79e6", + "check_gpg": true + }, + { + "name": "libjpeg-turbo", + "epoch": 0, + "version": "2.0.2", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libjpeg-turbo-2.0.2-4.fc31.x86_64.rpm", + "checksum": "sha256:c8d6feccbeac2f1c75361f92d5f57a6abaeb3ab7730a49e3ed2a26d456a49345", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-1.fc31.x86_64.rpm", + "checksum": "sha256:9aa73c1f6d9f16bee5cdc1222f2244d056022141a9b48b97df7901b40f07acde", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-1.fc31.x86_64.rpm", + "checksum": "sha256:a9c41ace892fbac24cee25fdb15a02dee10a378e71c369d9f0810f49a2efac37", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libksba-1.3.5-10.fc31.x86_64.rpm", + "checksum": "sha256:ae113203e1116f53037511d3e02e5ef8dba57e3b53829629e8c54b00c740452f", + "check_gpg": true + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.0.7", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libldb-2.0.7-1.fc31.x86_64.rpm", + "checksum": "sha256:8f7b737ccb294fd5ba1d19075ea2a50a54e0265d8efa28aae0ade59d3e3a63be", + "check_gpg": true + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.2.0", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmaxminddb-1.2.0-8.fc31.x86_64.rpm", + "checksum": "sha256:430f2f71be063eb9d04fe38659f62e29f47c9c878f9985d0569cb49e9c89ebc0", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "9.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-9.fc31.x86_64.rpm", + "checksum": "sha256:b743e78e345c1199d47d6d3710a4cdf93ff1ac542ae188035b4a858bc0791a43", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "10.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmnl-1.0.4-10.fc31.x86_64.rpm", + "checksum": "sha256:c976ce75eda3dbe734117f6f558eafb2061bbef66086a04cb907a7ddbaea8bc2", + "check_gpg": true + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "20.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodman-2.0.1-20.fc31.x86_64.rpm", + "checksum": "sha256:7fdca875479b890a4ffbafc6b797377eebd1713c97d77a59690071b01b46f664", + "check_gpg": true + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.15", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmodulemd1-1.8.15-3.fc31.x86_64.rpm", + "checksum": "sha256:95f8d1d51687c8fd57ae4db805f21509a11735c69a6c25ee6a2d720506ab3a57", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmount-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:6d2bdb998033e4c224ed986cc35f85375babb6d49e4e5b872bd61997c0a4da4d", + "check_gpg": true + }, + { + "name": "libmspack", + "epoch": 0, + "version": "0.10.1", + "release": "0.2.alpha.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libmspack-0.10.1-0.2.alpha.fc31.x86_64.rpm", + "checksum": "sha256:6f937306f1af370450c3a127c55d45982715aa3df7175443fbd020922d5176b6", + "check_gpg": true + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libndp-1.7-4.fc31.x86_64.rpm", + "checksum": "sha256:45bf4bef479712936db1d6859b043d13e6cad41c851b6e621fc315b39ecfa14b", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-3.fc31.x86_64.rpm", + "checksum": "sha256:e91f7fcee1e3e72941c99eec3c3c3c9506cdaf83c01cf1eef257b91ccaff550c", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "16.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-16.fc31.x86_64.rpm", + "checksum": "sha256:f8d885f57b3c7b30b6f18f68fed7fd3f19300c22abc5d5ee5029998e96c6b115", + "check_gpg": true + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.4.1", + "release": "1.rc1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnfsidmap-2.4.1-1.rc1.fc31.x86_64.rpm", + "checksum": "sha256:f61555e6e74917be3f131bd5af9d9e30ed709111701e950b7ebd4392baf33f12", + "check_gpg": true + }, + { + "name": "libnftnl", + "epoch": 0, + "version": "1.1.3", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnftnl-1.1.3-2.fc31.x86_64.rpm", + "checksum": "sha256:2cd5a709ff2c286b73f850469b1ee6baf9077b90ce3bacb8ba712430c6632350", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.39.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnghttp2-1.39.2-1.fc31.x86_64.rpm", + "checksum": "sha256:0ed005a8acf19c4e3af7d4b8ead55ffa31baf270a292f6a7e41dc8a852b63fbf", + "check_gpg": true + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnl3-3.5.0-1.fc31.x86_64.rpm", + "checksum": "sha256:8bd2655674b40e89f5f63af7f8ffafd0e9064a3378cdca050262a7272678e8e5", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "5.20180605git4a062cf.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-5.20180605git4a062cf.fc31.x86_64.rpm", + "checksum": "sha256:d50d6b0120430cf78af612aad9b7fd94c3693dffadebc9103a661cc24ae51b6a", + "check_gpg": true + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-43.fc31.x86_64.rpm", + "checksum": "sha256:6f729da330aaaea336458a8b6f3f1d2cc761693ba20bdda57fb9c49fb6f2120d", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.0", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpcap-1.9.0-4.fc31.x86_64.rpm", + "checksum": "sha256:af022ae77d1f611c0531ab8a2675fdacbf370f0634da86fc3c76d5a78845aacc", + "check_gpg": true + }, + { + "name": "libpciaccess", + "epoch": 0, + "version": "0.15", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpciaccess-0.15-2.fc31.x86_64.rpm", + "checksum": "sha256:8c496ff256c18c8473f6d4ef87287828399f96ae19435e60c8179438aa0b59d0", + "check_gpg": true + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpipeline-1.5.1-3.fc31.x86_64.rpm", + "checksum": "sha256:cfeb5d0cb9c116e39292e3158c68ee62880cff4a5e3d098d20bf9567e5a576e1", + "check_gpg": true + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.37", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpng-1.6.37-2.fc31.x86_64.rpm", + "checksum": "sha256:dbdcb81a7a33a6bd365adac19246134fbe7db6ffc1b623d25d59588246401eaf", + "check_gpg": true + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libproxy-0.4.15-14.fc31.x86_64.rpm", + "checksum": "sha256:883475877b69716de7e260ddb7ca174f6964fa370adecb3691a3fe007eb1b0dc", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpsl-0.21.0-2.fc31.x86_64.rpm", + "checksum": "sha256:71b445c5ef5ff7dbc24383fe81154b1b4db522cd92442c6b2a162e9c989ab730", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libpwquality-1.4.1-1.fc31.x86_64.rpm", + "checksum": "sha256:69771c1afd955d267ff5b97bd9b3b60988c2a3a45e7ed71e2e5ecf8ec0197cd0", + "check_gpg": true + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "43.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libref_array-0.1.5-43.fc31.x86_64.rpm", + "checksum": "sha256:da923b379524f2d8d26905f26a9dc763cec36c40306c4c53db57100574ea89b8", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.10.5", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/librepo-1.10.5-1.fc31.x86_64.rpm", + "checksum": "sha256:210427ee1efca7a86fe478935800eec1e472e7287a57e5e4e7bd99e557bc32d3", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.10.1", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libreport-filesystem-2.10.1-2.fc31.noarch.rpm", + "checksum": "sha256:05539ce4b011cc2113fa9e99636f71b7855f979d78eedd597fd0be86dd540711", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libseccomp-2.4.1-1.fc31.x86_64.rpm", + "checksum": "sha256:b376d4c81380327fe262e008a867009d09fce0dfbe113ecc9db5c767d3f2186a", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.19.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsecret-0.19.1-1.fc31.x86_64.rpm", + "checksum": "sha256:66d530d80e5eded233137c851d98443b3cfe26e2e9dc0989d2e646fcba6824e7", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:b75fe6088e737720ea81a9377655874e6ac6919600a5652576f9ebb0d9232e5e", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libselinux-utils-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:9707a65045a4ceb5d932dbf3a6a3cfaa1ec293bb1884ef94796d7a2ffb0e3045", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsemanage-2.9-3.fc31.x86_64.rpm", + "checksum": "sha256:fd2f883d0bda59af039ac2176d3fb7b58d0bf173f5ad03128c2f18196886eb32", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsepol-2.9-2.fc31.x86_64.rpm", + "checksum": "sha256:2ebd4efba62115da56ed54b7f0a5c2817f9acd29242a0334f62e8c645b81534f", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsigsegv-2.11-8.fc31.x86_64.rpm", + "checksum": "sha256:1b14f1e30220d6ae5c9916595f989eba6a26338d34a9c851fed9ef603e17c2c4", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsmartcols-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:183a1537c43a13c159153b4283320029736c22d88558478a0d5da4b1203e1238", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.5", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsolv-0.7.5-3.fc31.x86_64.rpm", + "checksum": "sha256:32e8c62cea1e5e1d31b4bb04c80ffe00dcb07a510eb007e063fcb1bc40589388", + "check_gpg": true + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.68.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsoup-2.68.2-1.fc31.x86_64.rpm", + "checksum": "sha256:e7d44f25149c943f8f83fe475dada92f235555d05687bbdf72d3da0019c29b42", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libss-1.45.3-1.fc31.x86_64.rpm", + "checksum": "sha256:562fc845d0539c4c6f446852405ae1546a277b3eef805f0f16771b68108a80dc", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-0.9.0-6.fc31.x86_64.rpm", + "checksum": "sha256:d4d0d982f94d307d92bb1b206fd62ad91a4d69545f653481c8ca56621b452833", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.0", + "release": "6.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libssh-config-0.9.0-6.fc31.noarch.rpm", + "checksum": "sha256:4b4febd60db5cab8951bd33bafb2242fe2be067bee174d0307bd9f161b835070", + "check_gpg": true + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_autofs-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:422625da0fbb99cc4da8eebebff892c6e73a87c81a33190f7a17e344f6bb709e", + "check_gpg": true + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_certmap-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:307275b46896d56d23f5da5ab77a299941e77165ff44e846d6620eee1158131c", + "check_gpg": true + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:a1bd1b5a2c47e57957a77d32f4fd705de1df30557837cfbc83b8f284e4ee0456", + "check_gpg": true + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:6c1f9dc11de4d3af4d4c418b4556ee9659011d587e9da44bb039cb30ac326841", + "check_gpg": true + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:e1bda9438577473413f3c7455ce84b6c8486adee3d4473fafcd28309ad8c2913", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "9.2.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libstdc++-9.2.1-1.fc31.x86_64.rpm", + "checksum": "sha256:2a89e768507364310d03fe54362b30fb90c6bb7d1b558ab52f74a596548c234f", + "check_gpg": true + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtalloc-2.3.0-1.fc31.x86_64.rpm", + "checksum": "sha256:9247561bad35a8a2f8269b2bbbd28d1bf5e6fcde1fe78e1fc3c0e712513e9703", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.14", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtasn1-4.14-2.fc31.x86_64.rpm", + "checksum": "sha256:4d2b475e56aba896dbf12616e57c5e6c2651a864d4d9376d08ed77c9e2dd5fbb", + "check_gpg": true + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtdb-1.4.2-1.fc31.x86_64.rpm", + "checksum": "sha256:fccade859cbb884fd61c07433e6c316f794885cbb2186debcff3f6894d16d52c", + "check_gpg": true + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtevent-0.10.1-1.fc31.x86_64.rpm", + "checksum": "sha256:5593277fa685adba864393da8faf76950d6d8fb1483af036cdc08d8437c387bb", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-2.fc31.x86_64.rpm", + "checksum": "sha256:07027ca2e4b5d95c12d6506e8a0de089aec114d87d1f4ced741c9ad368a1e94c", + "check_gpg": true + }, + { + "name": "libthai", + "epoch": 0, + "version": "0.1.28", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libthai-0.1.28-3.fc31.x86_64.rpm", + "checksum": "sha256:5773eb83310929cf87067551fd371ac00e345ebc75f381bff28ef1e3d3b09500", + "check_gpg": true + }, + { + "name": "libtiff", + "epoch": 0, + "version": "4.0.10", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtiff-4.0.10-6.fc31.x86_64.rpm", + "checksum": "sha256:4c4cb82a089088906df76d1f32024f7690412590eb52fa35149a7e590e1e0a71", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "2.rc3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtirpc-1.1.4-2.rc3.fc31.x86_64.rpm", + "checksum": "sha256:b7718aed58923846c57f4d3223033974d45170110b1abbef82c106fc551132f7", + "check_gpg": true + }, + { + "name": "libtool-ltdl", + "epoch": 0, + "version": "2.4.6", + "release": "31.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libtool-ltdl-2.4.6-31.fc31.x86_64.rpm", + "checksum": "sha256:312d4df1d775d511ca8279da21403a9274fdd3943617f29e882ddaa981157c78", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libunistring-0.9.10-6.fc31.x86_64.rpm", + "checksum": "sha256:67f494374ee07d581d587388ab95b7625005338f5af87a257bdbb1e26a3b6a42", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.22", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libusbx-1.0.22-4.fc31.x86_64.rpm", + "checksum": "sha256:66fce2375c456c539e23ed29eb3b62a08a51c90cde0364112e8eb06e344ad4e8", + "check_gpg": true + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "21.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuser-0.62-21.fc31.x86_64.rpm", + "checksum": "sha256:95b45de2c57f35df43bff0c2ebe32c64183968b3a41c5673cfeeff5ece506b94", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "17.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libutempter-1.1.6-17.fc31.x86_64.rpm", + "checksum": "sha256:226888f99cd9c731e97b92b8832c14a9a5842f37f37f6b10707cbaadbff20cf5", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libuuid-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:b407447d5f16ea9ae3ac531c1e6a85ab9e8ecc5c1ce444b66bd9baef096c99af", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "8.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libverto-0.3.0-8.fc31.x86_64.rpm", + "checksum": "sha256:9e462579825ae480e28c42b135742278e38777eb49d4e967b90051b2a4269348", + "check_gpg": true + }, + { + "name": "libwayland-client", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-client-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:a7e1acc10a6c39f529471a8c33c55fadc74465a7e4d11377437053d90ac5cbff", + "check_gpg": true + }, + { + "name": "libwayland-cursor", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-cursor-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:2ce8f525017bcac11eb113dd4c55bec47e95852423f0dc4dee065b4dc74407ce", + "check_gpg": true + }, + { + "name": "libwayland-egl", + "epoch": 0, + "version": "1.17.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libwayland-egl-1.17.0-2.fc31.x86_64.rpm", + "checksum": "sha256:c6e1bc1fb2c2b7a8f02be49e065ec7e8ba2ca52d98b65503626a20e54eab7eb9", + "check_gpg": true + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcb-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:bcc3c9b2d5ae5dc73a2d3e18e89b3259f76124ce232fe861656ecdeea8cc68a5", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-4.4.10-1.fc31.x86_64.rpm", + "checksum": "sha256:ebf67bffbbac1929fe0691824391289924e14b1e597c4c2b7f61a4d37176001c", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.10", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.10-1.fc31.x86_64.rpm", + "checksum": "sha256:4e5a7185ddd6ac52f454b650f42073cae28f9e4bdfe9a42cad1f2f67b8cc60ca", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.8.4", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxkbcommon-0.8.4-2.fc31.x86_64.rpm", + "checksum": "sha256:2b735d361706200eb91adc6a2313212f7676bfc8ea0e7c7248677f3d00ab26da", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.9", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxml2-2.9.9-3.fc31.x86_64.rpm", + "checksum": "sha256:cff67de8f872ce826c17f5e687b3d58b2c516b8a9cf9d7ebb52f6dce810320a6", + "check_gpg": true + }, + { + "name": "libxslt", + "epoch": 0, + "version": "1.1.33", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libxslt-1.1.33-2.fc31.x86_64.rpm", + "checksum": "sha256:e42730d2d1a955c7e3e16303d5333ba88ee1f77e8a88cc09409feb210cc7fcfc", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libyaml-0.2.2-2.fc31.x86_64.rpm", + "checksum": "sha256:7a98f9fce4b9a981957cb81ce60b2a4847d2dd3a3b15889f8388a66de0b15e34", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/libzstd-1.4.2-1.fc31.x86_64.rpm", + "checksum": "sha256:ca61a4ba323c955407a2139d94cbbc9f2e893defc50d94553ddade8ab2fae37c", + "check_gpg": true + }, + { + "name": "linux-atm-libs", + "epoch": 0, + "version": "2.5.1", + "release": "25.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-25.fc31.x86_64.rpm", + "checksum": "sha256:e405d2edc9b9fc2c13242f0225049b071aa4159d09d8e2d501e8c4fe88a9710b", + "check_gpg": true + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20190923", + "release": "102.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-firmware-20190923-102.fc31.noarch.rpm", + "checksum": "sha256:037522f3495c556e09cb7d72d3c8c7ae1e1d037f7084020b2b875cfd43649e47", + "check_gpg": true + }, + { + "name": "linux-firmware-whence", + "epoch": 0, + "version": "20190923", + "release": "102.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/linux-firmware-whence-20190923-102.fc31.noarch.rpm", + "checksum": "sha256:93733a7e6e3ad601ef5bbd54efda1e8d73e98c0de64b8bb747875911782f5c70", + "check_gpg": true + }, + { + "name": "lmdb-libs", + "epoch": 0, + "version": "0.9.23", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.23-3.fc31.x86_64.rpm", + "checksum": "sha256:a41579023e1db3dec06679ebc7788ece92686ea2a23c78dd749c98ddbc82d419", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-6.fc31.x86_64.rpm", + "checksum": "sha256:cba15cfd9912ae8afce2f4a0b22036f68c6c313147106a42ebb79b6f9d1b3e1a", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-1.fc31.x86_64.rpm", + "checksum": "sha256:9f3414d124857fd37b22714d2ffadaa35a00a7126e5d0d6e25bbe089afc87b39", + "check_gpg": true + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.8.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/man-db-2.8.4-5.fc31.x86_64.rpm", + "checksum": "sha256:764699ea124f85a7afcf65a2f138e3821770f8aa1ef134e1813e2b04477f0b74", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mkpasswd-5.5.2-1.fc31.x86_64.rpm", + "checksum": "sha256:45c75e4ad6f3925044737c6f602a9deaf3b9ea9a5be6386ba4ba225e58634b83", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/m/mpfr-3.1.6-5.fc31.x86_64.rpm", + "checksum": "sha256:d6d33ad8240f6e73518056f0fe1197cb8da8dc2eae5c0348fde6252768926bd2", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-6.1-12.20190803.fc31.x86_64.rpm", + "checksum": "sha256:19315dc93ffb895caa890949f368aede374497019088872238841361fa06f519", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-base-6.1-12.20190803.fc31.noarch.rpm", + "checksum": "sha256:cbd9d78da00aea6c1e98398fe883d5566971b3bc6764a07c5e945cd317013686", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "12.20190803.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-12.20190803.fc31.x86_64.rpm", + "checksum": "sha256:7b3ba4cdf8c0f1c4c807435d7b7a4a93ecb02737a95d064f3f20299e5bb3a106", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nettle-3.5.1-3.fc31.x86_64.rpm", + "checksum": "sha256:429d5b9a845285710b7baad1cdc96be74addbf878011642cfc7c14b5636e9bcc", + "check_gpg": true + }, + { + "name": "nftables", + "epoch": 1, + "version": "0.9.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/nftables-0.9.1-3.fc31.x86_64.rpm", + "checksum": "sha256:e9fa9fba03403e709388390a91f4b253e57b8104035f05fabdf4d5c0dd173ce1", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/n/npth-1.6-3.fc31.x86_64.rpm", + "checksum": "sha256:be1666f539d60e783cdcb7be2bc28bf427a873a88a79e3fd1ea4efd7f470bfd2", + "check_gpg": true + }, + { + "name": "open-vm-tools", + "epoch": 0, + "version": "10.3.10", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/open-vm-tools-10.3.10-2.fc31.x86_64.rpm", + "checksum": "sha256:01fa263228ae6524474bf4d622e24510634609cd5f4976affd370388d5bcfc4a", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openldap-2.4.47-3.fc31.x86_64.rpm", + "checksum": "sha256:b4989c0bc1b0da45440f2eaf1f37f151b8022c8509700a3d5273e4054b545c38", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:5c1f8871ab63688892fc035827d8ab6f688f22209337932580229e2f84d57e4b", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-clients-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:93b56cd07fd90c17afc99f345ff01e928a58273c2bfd796dda0389412d0e8c68", + "check_gpg": true + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "8.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssh-server-8.0p1-8.fc31.1.x86_64.rpm", + "checksum": "sha256:c3aa4d794cef51ba9fcbf3750baed55aabfa36062a48f61149ccf03364a0d256", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-1.1.1d-2.fc31.x86_64.rpm", + "checksum": "sha256:bf00c4f2b0c9d249bdcb2e1a121e25862981737713b295869d429b0831c8e9c3", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-2.fc31.x86_64.rpm", + "checksum": "sha256:10770c0fe89a82ec3bab750b35969f69699d21fd9fe1e92532c267566d5b61c2", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-2.fc31.x86_64.rpm", + "checksum": "sha256:76132344619828c41445461c353f93d663826f91c9098befb69d5008148e51d0", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/o/os-prober-1.77-3.fc31.x86_64.rpm", + "checksum": "sha256:61ddc70d1f38bf8c7315b38c741cb594e120b5a5699fe920d417157f22e9f234", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-0.23.16.1-2.fc31.x86_64.rpm", + "checksum": "sha256:332698171e0e1a5940686d0ea9e15cc9ea47f0e656a373db1561a9203c753313", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.16.1", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.16.1-2.fc31.x86_64.rpm", + "checksum": "sha256:ad30657a0d1aafc7ce249845bba322fd02e9d95f84c8eeaa34b4f2d179de84b0", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "18.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pam-1.3.1-18.fc31.x86_64.rpm", + "checksum": "sha256:a8747181f8cd5ed5d48732f359d480d0c5c1af49fc9d6f83332479edffdd3f2b", + "check_gpg": true + }, + { + "name": "pango", + "epoch": 0, + "version": "1.44.6", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pango-1.44.6-1.fc31.x86_64.rpm", + "checksum": "sha256:d59034ba8df07e091502d51fef8bb2dbc8d424b52f58a5ace242664ca777098c", + "check_gpg": true + }, + { + "name": "parted", + "epoch": 0, + "version": "3.2.153", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/parted-3.2.153-1.fc31.x86_64.rpm", + "checksum": "sha256:55c47c63deb00a9126c068299c01dfbdd39d58c6962138b862b92f5c7af8c898", + "check_gpg": true + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/passwd-0.80-6.fc31.x86_64.rpm", + "checksum": "sha256:c459092a47bd2f904d9fe830735b512ef97b52785ee12abb2ba5c52465560f18", + "check_gpg": true + }, + { + "name": "pciutils", + "epoch": 0, + "version": "3.6.2", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pciutils-3.6.2-3.fc31.x86_64.rpm", + "checksum": "sha256:09e96f7cdde5f9fc211bcb951171f1139de93e11172681330417be968f3ef462", + "check_gpg": true + }, + { + "name": "pciutils-libs", + "epoch": 0, + "version": "3.6.2", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pciutils-libs-3.6.2-3.fc31.x86_64.rpm", + "checksum": "sha256:5fe6cf04a4b46d825cc63f7f14cc971a13d1abdc023dbd83012fa8f8234157b5", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.43", + "release": "2.fc31.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre-8.43-2.fc31.1.x86_64.rpm", + "checksum": "sha256:8c1a172be42942c877f4e37cf643ab8c798db8303361a7e1e07231cbe6435651", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.33", + "release": "14.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pcre2-10.33-14.fc31.x86_64.rpm", + "checksum": "sha256:017d8f5d4abb5f925c1b6d46467020c4fd5e8a8dcb4cc6650cab5627269e99d7", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pigz-2.4-5.fc31.x86_64.rpm", + "checksum": "sha256:f2f8bda87ca84aa1e18d7b55308f3424da4134e67308ba33c5ae29629c6277e8", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pinentry-1.1.0-6.fc31.x86_64.rpm", + "checksum": "sha256:94ce6d479f4575d3db90dfa02466513a54be1519e1166b598a07d553fb7af976", + "check_gpg": true + }, + { + "name": "pixman", + "epoch": 0, + "version": "0.38.4", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/pixman-0.38.4-1.fc31.x86_64.rpm", + "checksum": "sha256:913aa9517093ce768a0fab78c9ef4012efdf8364af52e8c8b27cd043517616ba", + "check_gpg": true + }, + { + "name": "plymouth", + "epoch": 0, + "version": "0.9.4", + "release": "10.20191001gita8aad27.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/plymouth-0.9.4-10.20191001gita8aad27.fc31.x86_64.rpm", + "checksum": "sha256:5e07e49fdacc1f52b583ee685d03bf5ce045e9d34a323bd26607148a3937a9ce", + "check_gpg": true + }, + { + "name": "plymouth-core-libs", + "epoch": 0, + "version": "0.9.4", + "release": "10.20191001gita8aad27.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/plymouth-core-libs-0.9.4-10.20191001gita8aad27.fc31.x86_64.rpm", + "checksum": "sha256:561014bd90810d512b4098c8e1d3ca05aa8c6a74bc258b3b7e3e2fd36a1ed157", + "check_gpg": true + }, + { + "name": "plymouth-scripts", + "epoch": 0, + "version": "0.9.4", + "release": "10.20191001gita8aad27.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/plymouth-scripts-0.9.4-10.20191001gita8aad27.fc31.x86_64.rpm", + "checksum": "sha256:bd72cac3d1ef93cff067070925e5f339c720bef82c5ade4477388636fef53b91", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/policycoreutils-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:77c631801b26b16ae56d8a0dd9945337aeb2ca70def94fd94360446eb62a691c", + "check_gpg": true + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.116", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/polkit-libs-0.116-4.fc31.x86_64.rpm", + "checksum": "sha256:118548479396b007a80bc98e8cef770ea242ef6b20cd2922d595acd4c100946d", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "18.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/popt-1.16-18.fc31.x86_64.rpm", + "checksum": "sha256:7ad348ab75f7c537ab1afad01e643653a30357cdd6e24faf006afd48447de632", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-6.fc31.x86_64.rpm", + "checksum": "sha256:059f82a9b5c91e8586b95244cbae90667cdfa7e05786b029053bf8d71be01a9e", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-2.fc31.noarch.rpm", + "checksum": "sha256:359d74d5f3988e1c2c5327f9d4ea59d0c49a2383541928084ef00383d70b6d55", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-pip-wheel-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:6ad56e7cd4cd7d7face0f8287784bf64ce77a8ec378af218b11c0ccf1669eea1", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:df3b6938e2fc743284b4aeeefb2533a91acff7e4b70962fb8b0fc9c792116db9", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python-unversioned-command-3.7.4-5.fc31.noarch.rpm", + "checksum": "sha256:35413dd963ebd9e61467067c18a53c7027dcd95ebcae5a5ffaf4727507e37c8c", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-3.7.4-5.fc31.x86_64.rpm", + "checksum": "sha256:2753b9cc9abe1838cf561514a296234a10a6adabd1ea241094deb72ae71e0ea9", + "check_gpg": true + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.8.0", + "release": "3.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-3.fc31.noarch.rpm", + "checksum": "sha256:9e55df3ed10b427229a2927af635910933a7a39ae3354143ac2f474d855d4653", + "check_gpg": true + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.8", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dbus-1.2.8-6.fc31.x86_64.rpm", + "checksum": "sha256:35c348bcd91fa114ad459b888131e5e5509259cffce33f22c44f92e57e9e5919", + "check_gpg": true + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.4.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-decorator-4.4.0-2.fc31.noarch.rpm", + "checksum": "sha256:63ff108f557096a9724053c37e37d3c2af1a1ec0b33124480b3742ff3da46292", + "check_gpg": true + }, + { + "name": "python3-distro", + "epoch": 0, + "version": "1.4.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-2.fc31.noarch.rpm", + "checksum": "sha256:c0bd22ca961643f57356d5a50c8bed6d70b0dd6e2e30af5f70c03ebd8cde2e4f", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:8bce4002b36540d966f0f8b95ab41486901ddd23a067729591de801b1689956c", + "check_gpg": true + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.9", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-dnf-plugins-core-4.0.9-1.fc31.noarch.rpm", + "checksum": "sha256:d54d16ad9e5b80cdf93f09d67c52ff64bd7f7c5e8aece4257ad2615f807fae02", + "check_gpg": true + }, + { + "name": "python3-firewall", + "epoch": 0, + "version": "0.7.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-firewall-0.7.2-1.fc31.noarch.rpm", + "checksum": "sha256:a349c40034b5a181cab1bd409384ddb901c274e110b16721d434f5bf42e92c0f", + "check_gpg": true + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.34.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gobject-base-3.34.0-3.fc31.x86_64.rpm", + "checksum": "sha256:6807ac3ae6b7c0ea3a085106cedb687f79edfda500feb747039dc112ed3c518f", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-3.fc31.x86_64.rpm", + "checksum": "sha256:6372f7a295f1a0860c1540a63d0b25b4741f3c427d5221dc99e03e711415645a", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-hawkey-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:db910261142ed1c787e03817e31e2146583639d9755b71bda6d0879462ac6552", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.11-3.fc31.x86_64.rpm", + "checksum": "sha256:448ffa4a1f485f3fd4370b895522d418c5fec542667f2d1967ed9ccbd51f21d3", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.35.3", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libdnf-0.35.3-6.fc31.x86_64.rpm", + "checksum": "sha256:103825842222a97ea5cd9ba4ec962df7db84e44b3587abcca301b923d2a14ae5", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.7.4", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libs-3.7.4-5.fc31.x86_64.rpm", + "checksum": "sha256:36bf5ab5bff046be8d23a2cf02b98f2ff8245b79047f9befbe9b5c37e1dd3fc1", + "check_gpg": true + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "2.9", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-libselinux-2.9-5.fc31.x86_64.rpm", + "checksum": "sha256:ca6a71888b8d147342012c64533f61a41b26c788bbcd2844a2164ee007fac981", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.1.1", + "release": "4.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-pip-19.1.1-4.fc31.noarch.rpm", + "checksum": "sha256:4c9d72211343338b208c7d99c96ec07996478b38c5340bddbe77e5bdcf8cd814", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-rpm-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:21b1eed1c0cae544c36fc8ebc3342fc45a9e93d2e988dddc2dc237d2858a1444", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.2.0", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-setuptools-41.2.0-1.fc31.noarch.rpm", + "checksum": "sha256:b8a0701a9acc6618cb04454787f032be5033cf0bcfa960ac0d785753e43a8d6d", + "check_gpg": true + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.12.0", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-six-1.12.0-2.fc31.noarch.rpm", + "checksum": "sha256:06e204f4b8ee2287a7ee2ae20fb8796e6866ba5d4733aa66d361e1ba8d138142", + "check_gpg": true + }, + { + "name": "python3-slip", + "epoch": 0, + "version": "0.6.4", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-slip-0.6.4-16.fc31.noarch.rpm", + "checksum": "sha256:b1094a9a9725546315d6eac7f792d5875a5f0c950cd84e43fc2fbb3e639ee43e", + "check_gpg": true + }, + { + "name": "python3-slip-dbus", + "epoch": 0, + "version": "0.6.4", + "release": "16.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-slip-dbus-0.6.4-16.fc31.noarch.rpm", + "checksum": "sha256:bd2e7c9e3df976723ade08f16667b31044b678e62ee29e024ad193af6d9a28e1", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/p/python3-unbound-1.9.3-1.fc31.x86_64.rpm", + "checksum": "sha256:7c7649bfb1d6766cfbe37ef5cb024239c0a126b17df966b4890de17e0f9c34d7", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-4.fc31.x86_64.rpm", + "checksum": "sha256:ff88817ffbbc5dc2f19e5b64dc2947f95477563bf22a97b90895d1a75539028d", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/readline-8.0-3.fc31.x86_64.rpm", + "checksum": "sha256:228280fc7891c414da49b657768e98dcda96462e10a9998edb89f8910cd5f7dc", + "check_gpg": true + }, + { + "name": "rest", + "epoch": 0, + "version": "0.8.1", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rest-0.8.1-6.fc31.x86_64.rpm", + "checksum": "sha256:42489e447789ef42d9a0b5643092a65555ae6a6486b912ceaebb1ddc048d496e", + "check_gpg": true + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "25.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rootfiles-8.1-25.fc31.noarch.rpm", + "checksum": "sha256:d8e448aea6836b8a577ac6d342b52e20f9c52f51a28042fc78a7f30224f7b663", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:ae1f27e843ebd3f9af641907f6f567d05c0bfac3cd1043d470ac7f445f451df2", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:502dcc18de7d228764d2e23b1d7d3bd4908768d45efd32aa48b6455f5c72d0ac", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:efaffc9dcfd4c3b2e0755b13121107c967b0f62294a28014efff536eea063a03", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:f50957375c79be57f391625b97d6ea74505e05f2edc6b9bc6768d5e3ad6ef8f8", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:c1a56451656546c9b696ad19db01c907cf30d62452ab9a34e4b5a518149cf576", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.0", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.0-6.fc31.x86_64.rpm", + "checksum": "sha256:c3ac5b3a54604e3001fe81a0a6b8967ffaf23bb3fb2bcb3d6045ddeb59e1e0eb", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "4.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sed-4.5-4.fc31.x86_64.rpm", + "checksum": "sha256:deb934183f8554669821baf08d13a85b729a037fb6e4b60ad3894c996063a165", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.4", + "release": "37.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/selinux-policy-3.14.4-37.fc31.noarch.rpm", + "checksum": "sha256:d5fbbd9fed99da8f9c8ca5d4a735f91bcf8d464ee2f82c82ff34e18480a02108", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.4", + "release": "37.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.4-37.fc31.noarch.rpm", + "checksum": "sha256:c2e96724fe6aa2ca5b87451583c55a6174598e31bedd00a0efe44df35097a41a", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.3", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/setup-2.13.3-2.fc31.noarch.rpm", + "checksum": "sha256:4c859170bc4705a8ff4592f7376918fd2a97435c13cde79f24475c0a0866251d", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "16.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shadow-utils-4.6-16.fc31.x86_64.rpm", + "checksum": "sha256:2c22da397e0dd4b77a352b8890c062d0df00688062ab2de601d833f9b55ac5b3", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.14", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/shared-mime-info-1.14-1.fc31.x86_64.rpm", + "checksum": "sha256:7ea689d094636fa9e0f18e6ac971bdf7aa1f5a379e00993e90de7b06c62a1071", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.29.0", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sqlite-libs-3.29.0-2.fc31.x86_64.rpm", + "checksum": "sha256:90de42728e6dc5e843223e7d9101adc55c5d876d0cdabea812c5c6ef3e27c3d2", + "check_gpg": true + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-client-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:687d00eb0b77446dbd78aaa0f4f99cc080c677930ad783120483614255264a3d", + "check_gpg": true + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-common-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:6b694ee239a2e3f38c401e975de392e3731ad8b18be5a3249ea02f19e87cb5cb", + "check_gpg": true + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-kcm-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:93161df6d62fe654c7cdba9ae36343d2549b437b27eac816a80f8d7c32a47162", + "check_gpg": true + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.2.2", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sssd-nfs-idmap-2.2.2-1.fc31.x86_64.rpm", + "checksum": "sha256:4f9bbd08f6019b3482342d616d6b04e6481924ea34fbfe8d30ef63402a92e9b1", + "check_gpg": true + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.8.28", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/sudo-1.8.28-1.fc31.x86_64.rpm", + "checksum": "sha256:704ebfc50ace9417ed28f4530d778359a4c2f95d524c2e99346472245e30b548", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:867aae78931b5f0bd7bdc092dcb4b0ea58c7d0177c82f3eecb8f60d72998edd5", + "check_gpg": true + }, + { + "name": "systemd-bootchart", + "epoch": 0, + "version": "233", + "release": "5.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-bootchart-233-5.fc31.x86_64.rpm", + "checksum": "sha256:9d1743b1dc6ece703c609243df3a80e4aac04884f1b0461737e6a451e6428454", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-libs-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:6c63d937800ea90e637aeb3b24d2f779eff83d2c9982bd9a77ef8bb34930e612", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-pam-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:6dc68869e3f76b3893e67334e44e2df076c6a695c34801bda17ee74bdbcd56c1", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-rpm-macros-243-4.gitef67743.fc31.noarch.rpm", + "checksum": "sha256:2cb4bf18b759143cf2aeb6041e8b2edcaa1444d5f1eff8a6681ba8ca9da2a91c", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "243", + "release": "4.gitef67743.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/s/systemd-udev-243-4.gitef67743.fc31.x86_64.rpm", + "checksum": "sha256:5d83d0aa80fb9a9ad9cb3f4f34878a8934e25530989c21e377c61107dd22475c", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tar-1.32-2.fc31.x86_64.rpm", + "checksum": "sha256:9975496f29601a1c2cdb89e63aac698fdd8283ba3a52a9d91ead9473a0e064c8", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:b737fde58005843aa4b0fd0ae0da7c7da7d8d7733c161db717ee684ddacffd18", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:a81b0e79a6ec19343c97c50f02abda957288adadf1f59b09104126dc8e9246df", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "2.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tss2-1331-2.fc31.x86_64.rpm", + "checksum": "sha256:afb7f560c368bfc13c4f0885638b47ae5c3352ac726625f56a9ce6f492bc798f", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/t/tzdata-2019c-1.fc31.noarch.rpm", + "checksum": "sha256:f0847b05feed5f47260e38b9ea40935644c061ccde2b82da5c68874190d59034", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.3", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/unbound-libs-1.9.3-1.fc31.x86_64.rpm", + "checksum": "sha256:897f3e7764b9af24db9526d0369ec4e41cedd4b17879210929d8a1a10f5e92f7", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.34", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/u/util-linux-2.34-3.fc31.x86_64.rpm", + "checksum": "sha256:f3dc8c449970fc663183d7e7a560b347fc33623842441bb92915fbbdfe6c068f", + "check_gpg": true + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.1.2102", + "release": "1.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/v/vim-minimal-8.1.2102-1.fc31.x86_64.rpm", + "checksum": "sha256:d2c819a7e607a9e22f55047ed03d064e4b0f125ad4fb20532c543a6d8af8bfa5", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "15.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/which-2.21-15.fc31.x86_64.rpm", + "checksum": "sha256:ed94cc657a0cca686fcea9274f24053e13dc17f770e269cab0b151f18212ddaa", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.2", + "release": "1.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/w/whois-nls-5.5.2-1.fc31.noarch.rpm", + "checksum": "sha256:854568bdd1df94ca174ab21d724831230f5c57efa52f11e00124c07bc44eba78", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.27", + "release": "2.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xkeyboard-config-2.27-2.fc31.noarch.rpm", + "checksum": "sha256:54e3cbeb4ee379f886dfa4f64faf791001a901148f9490c76e2afcde11de07e9", + "check_gpg": true + }, + { + "name": "xmlsec1", + "epoch": 0, + "version": "1.2.27", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xmlsec1-1.2.27-3.fc31.x86_64.rpm", + "checksum": "sha256:af9e09c03e45e67e102f248651f45b7f5e523d5758e71ab01f488d1f0e4b4875", + "check_gpg": true + }, + { + "name": "xmlsec1-openssl", + "epoch": 0, + "version": "1.2.27", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xmlsec1-openssl-1.2.27-3.fc31.x86_64.rpm", + "checksum": "sha256:949ab50877fa46fc9573284f661812173fa9faa21d1877d0c7df4203a3ccc7f0", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-5.2.4-6.fc31.x86_64.rpm", + "checksum": "sha256:c52895f051cc970de5ddfa57a621910598fac29269259d305bb498d606c8ba05", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "6.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/x/xz-libs-5.2.4-6.fc31.x86_64.rpm", + "checksum": "sha256:841b13203994dc0184da601d51712a9d83aa239ae9b3eaef5e7e372d3063a431", + "check_gpg": true + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.9", + "release": "5.fc31", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/y/yum-4.2.9-5.fc31.noarch.rpm", + "checksum": "sha256:752016cb8a601956579cf9b22e4c1d6cdc225307f925f1def3c0cd550452a488", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.2", + "release": "3.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.2-3.fc31.x86_64.rpm", + "checksum": "sha256:db11cec438594c2f52b19028dd9ee4fe4013fe4af583b8202c08c3d072e8021c", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "19.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/Packages/z/zlib-1.2.11-19.fc31.x86_64.rpm", + "checksum": "sha256:491c387e645800cf771c0581f9a4dd11722ae54a5e119b451b0c1ea3afd317d9", + "check_gpg": true + } + ], + "checksums": { + "0": "sha256:e39c033883bf8520576de0b0875b5c8cfc40d04f1a0aaf01f1edf57267807580" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac ro biosdevname=0 net.ifnames=0" + }, + "bootloader": "grub", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "initrd": "/boot/initramfs-5.3.7-301.fc31.x86_64.img", + "linux": "/boot/vmlinuz-5.3.7-301.fc31.x86_64", + "options": "$kernelopts", + "title": "Fedora (5.3.7-301.fc31.x86_64) 31 (Thirty One)", + "version": "5.3.7-301.fc31.x86_64" + } + ], + "firewall-enabled": [ + "ssh", + "mdns", + "dhcpv6-client" + ], + "fstab": [ + [ + "UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "/", + "ext4", + "defaults", + "1", + "1" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:993:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:997:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "redhat:x:1000:", + "render:x:996:", + "root:x:0:", + "ssh_keys:x:998:", + "sshd:x:74:", + "sys:x:3:", + "systemd-coredump:x:995:", + "systemd-journal:x:190:", + "systemd-network:x:192:", + "systemd-resolve:x:193:", + "systemd-timesync:x:994:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:999:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "vmdk", + "os-release": { + "ANSI_COLOR": "0;34", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:fedoraproject:fedora:31", + "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f31/system-administrators-guide/", + "HOME_URL": "https://fedoraproject.org/", + "ID": "fedora", + "LOGO": "fedora-logo-icon", + "NAME": "Fedora", + "PLATFORM_ID": "platform:f31", + "PRETTY_NAME": "Fedora 31 (Thirty One)", + "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy", + "REDHAT_BUGZILLA_PRODUCT": "Fedora", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "31", + "REDHAT_SUPPORT_PRODUCT": "Fedora", + "REDHAT_SUPPORT_PRODUCT_VERSION": "31", + "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help", + "VERSION": "31 (Thirty One)", + "VERSION_CODENAME": "", + "VERSION_ID": "31" + }, + "packages": [ + "NetworkManager-1.20.4-1.fc31.x86_64", + "NetworkManager-libnm-1.20.4-1.fc31.x86_64", + "abattis-cantarell-fonts-0.111-3.fc31.noarch", + "acl-2.2.53-4.fc31.x86_64", + "adobe-source-code-pro-fonts-2.030.1.050-7.fc31.noarch", + "adwaita-cursor-theme-3.34.0-1.fc31.noarch", + "adwaita-icon-theme-3.34.0-1.fc31.noarch", + "alternatives-1.11-5.fc31.x86_64", + "at-spi2-atk-2.34.1-1.fc31.x86_64", + "at-spi2-core-2.34.0-1.fc31.x86_64", + "atk-2.34.1-1.fc31.x86_64", + "audit-3.0-0.12.20190507gitf58ec40.fc31.x86_64", + "audit-libs-3.0-0.12.20190507gitf58ec40.fc31.x86_64", + "avahi-libs-0.7-20.fc31.x86_64", + "basesystem-11-8.fc31.noarch", + "bash-5.0.7-3.fc31.x86_64", + "brotli-1.0.7-6.fc31.x86_64", + "bzip2-libs-1.0.8-1.fc31.x86_64", + "c-ares-1.15.0-4.fc31.x86_64", + "ca-certificates-2019.2.32-3.fc31.noarch", + "cairo-1.16.0-6.fc31.x86_64", + "cairo-gobject-1.16.0-6.fc31.x86_64", + "chrony-3.5-4.fc31.x86_64", + "colord-libs-1.4.4-2.fc31.x86_64", + "coreutils-8.31-4.fc31.x86_64", + "coreutils-common-8.31-4.fc31.x86_64", + "cpio-2.12-12.fc31.x86_64", + "cracklib-2.9.6-21.fc31.x86_64", + "cracklib-dicts-2.9.6-21.fc31.x86_64", + "crypto-policies-20190816-4.gitbb9bf99.fc31.noarch", + "cryptsetup-libs-2.2.1-1.fc31.x86_64", + "cups-libs-2.2.12-2.fc31.x86_64", + "curl-7.66.0-1.fc31.x86_64", + "cyrus-sasl-lib-2.1.27-2.fc31.x86_64", + "dbus-1.12.16-3.fc31.x86_64", + "dbus-broker-21-6.fc31.x86_64", + "dbus-common-1.12.16-3.fc31.noarch", + "dbus-libs-1.12.16-3.fc31.x86_64", + "dconf-0.34.0-1.fc31.x86_64", + "dejavu-fonts-common-2.37-2.fc31.noarch", + "dejavu-sans-fonts-2.37-2.fc31.noarch", + "deltarpm-3.6.2-2.fc31.x86_64", + "device-mapper-1.02.163-2.fc31.x86_64", + "device-mapper-libs-1.02.163-2.fc31.x86_64", + "dhcp-client-4.4.1-15.fc31.x86_64", + "dhcp-common-4.4.1-15.fc31.noarch", + "diffutils-3.7-3.fc31.x86_64", + "dnf-4.2.9-5.fc31.noarch", + "dnf-data-4.2.9-5.fc31.noarch", + "dnf-plugins-core-4.0.9-1.fc31.noarch", + "dracut-049-27.git20181204.fc31.1.x86_64", + "dracut-config-generic-049-27.git20181204.fc31.1.x86_64", + "e2fsprogs-1.45.3-1.fc31.x86_64", + "e2fsprogs-libs-1.45.3-1.fc31.x86_64", + "ebtables-legacy-2.0.10-37.fc31.x86_64", + "elfutils-default-yama-scope-0.177-1.fc31.noarch", + "elfutils-libelf-0.177-1.fc31.x86_64", + "elfutils-libs-0.177-1.fc31.x86_64", + "expat-2.2.8-1.fc31.x86_64", + "fedora-gpg-keys-31-1.noarch", + "fedora-release-31-1.noarch", + "fedora-release-common-31-1.noarch", + "fedora-repos-31-1.noarch", + "file-5.37-3.fc31.x86_64", + "file-libs-5.37-3.fc31.x86_64", + "filesystem-3.12-2.fc31.x86_64", + "findutils-4.6.0-24.fc31.x86_64", + "fipscheck-1.5.0-7.fc31.x86_64", + "fipscheck-lib-1.5.0-7.fc31.x86_64", + "firewalld-0.7.2-1.fc31.noarch", + "firewalld-filesystem-0.7.2-1.fc31.noarch", + "fontconfig-2.13.92-3.fc31.x86_64", + "fontpackages-filesystem-1.44-25.fc31.noarch", + "freetype-2.10.0-3.fc31.x86_64", + "fribidi-1.0.5-4.fc31.x86_64", + "fuse-2.9.9-8.fc31.x86_64", + "fuse-common-3.6.2-1.fc31.x86_64", + "fuse-libs-2.9.9-8.fc31.x86_64", + "gawk-5.0.1-5.fc31.x86_64", + "gcr-3.33.4-1.fc31.x86_64", + "gcr-base-3.33.4-1.fc31.x86_64", + "gdbm-libs-1.18.1-1.fc31.x86_64", + "gdk-pixbuf2-2.40.0-1.fc31.x86_64", + "gdk-pixbuf2-modules-2.40.0-1.fc31.x86_64", + "geolite2-city-20190806-1.fc31.noarch", + "geolite2-country-20190806-1.fc31.noarch", + "gettext-0.20.1-2.fc31.x86_64", + "gettext-libs-0.20.1-2.fc31.x86_64", + "glib-networking-2.62.1-1.fc31.x86_64", + "glib2-2.62.1-1.fc31.x86_64", + "glibc-2.30-5.fc31.x86_64", + "glibc-common-2.30-5.fc31.x86_64", + "glibc-langpack-en-2.30-5.fc31.x86_64", + "gmp-6.1.2-10.fc31.x86_64", + "gnome-keyring-3.34.0-1.fc31.x86_64", + "gnupg2-2.2.17-2.fc31.x86_64", + "gnupg2-smime-2.2.17-2.fc31.x86_64", + "gnutls-3.6.10-1.fc31.x86_64", + "gobject-introspection-1.62.0-1.fc31.x86_64", + "gpg-pubkey-3c3359c4-5c6ae44d", + "gpgme-1.13.1-3.fc31.x86_64", + "graphite2-1.3.13-1.fc31.x86_64", + "grep-3.3-3.fc31.x86_64", + "groff-base-1.22.3-20.fc31.x86_64", + "grub2-common-2.02-100.fc31.noarch", + "grub2-pc-2.02-100.fc31.x86_64", + "grub2-pc-modules-2.02-100.fc31.noarch", + "grub2-tools-2.02-100.fc31.x86_64", + "grub2-tools-extra-2.02-100.fc31.x86_64", + "grub2-tools-minimal-2.02-100.fc31.x86_64", + "gsettings-desktop-schemas-3.34.0-1.fc31.x86_64", + "gtk-update-icon-cache-3.24.12-3.fc31.x86_64", + "gtk3-3.24.12-3.fc31.x86_64", + "gzip-1.10-1.fc31.x86_64", + "harfbuzz-2.6.1-2.fc31.x86_64", + "hicolor-icon-theme-0.17-7.fc31.noarch", + "hostname-3.20-9.fc31.x86_64", + "hwdata-0.328-1.fc31.noarch", + "ima-evm-utils-1.2.1-2.fc31.x86_64", + "initscripts-10.02-2.fc31.x86_64", + "ipcalc-0.2.5-3.fc31.x86_64", + "iproute-5.3.0-1.fc31.x86_64", + "iproute-tc-5.3.0-1.fc31.x86_64", + "ipset-7.3-1.fc31.x86_64", + "ipset-libs-7.3-1.fc31.x86_64", + "iptables-1.8.3-5.fc31.x86_64", + "iptables-libs-1.8.3-5.fc31.x86_64", + "iputils-20190515-3.fc31.x86_64", + "jansson-2.12-4.fc31.x86_64", + "jasper-libs-2.0.14-9.fc31.x86_64", + "jbigkit-libs-2.1-17.fc31.x86_64", + "json-c-0.13.1-6.fc31.x86_64", + "json-glib-1.4.4-3.fc31.x86_64", + "kbd-2.0.4-14.fc31.x86_64", + "kbd-legacy-2.0.4-14.fc31.noarch", + "kbd-misc-2.0.4-14.fc31.noarch", + "kernel-5.3.7-301.fc31.x86_64", + "kernel-core-5.3.7-301.fc31.x86_64", + "kernel-modules-5.3.7-301.fc31.x86_64", + "keyutils-libs-1.6-3.fc31.x86_64", + "kmod-26-4.fc31.x86_64", + "kmod-libs-26-4.fc31.x86_64", + "kpartx-0.8.0-3.fc31.x86_64", + "krb5-libs-1.17-45.fc31.x86_64", + "langpacks-core-en-2.0-7.fc31.noarch", + "langpacks-en-2.0-7.fc31.noarch", + "lcms2-2.9-6.fc31.x86_64", + "less-551-2.fc31.x86_64", + "libX11-1.6.8-3.fc31.x86_64", + "libX11-common-1.6.8-3.fc31.noarch", + "libXau-1.0.9-2.fc31.x86_64", + "libXcomposite-0.4.4-17.fc31.x86_64", + "libXcursor-1.1.15-6.fc31.x86_64", + "libXdamage-1.1.4-17.fc31.x86_64", + "libXext-1.3.4-2.fc31.x86_64", + "libXfixes-5.0.3-10.fc31.x86_64", + "libXft-2.3.3-2.fc31.x86_64", + "libXi-1.7.10-2.fc31.x86_64", + "libXinerama-1.1.4-4.fc31.x86_64", + "libXrandr-1.5.2-2.fc31.x86_64", + "libXrender-0.9.10-10.fc31.x86_64", + "libXtst-1.2.3-10.fc31.x86_64", + "libacl-2.2.53-4.fc31.x86_64", + "libarchive-3.4.0-1.fc31.x86_64", + "libargon2-20171227-3.fc31.x86_64", + "libassuan-2.5.3-2.fc31.x86_64", + "libattr-2.4.48-7.fc31.x86_64", + "libbasicobjects-0.1.1-43.fc31.x86_64", + "libblkid-2.34-3.fc31.x86_64", + "libcap-2.26-6.fc31.x86_64", + "libcap-ng-0.7.9-8.fc31.x86_64", + "libcollection-0.7.0-43.fc31.x86_64", + "libcom_err-1.45.3-1.fc31.x86_64", + "libcomps-0.1.11-3.fc31.x86_64", + "libcroco-0.6.13-2.fc31.x86_64", + "libcurl-7.66.0-1.fc31.x86_64", + "libdatrie-0.2.9-10.fc31.x86_64", + "libdb-5.3.28-38.fc31.x86_64", + "libdb-utils-5.3.28-38.fc31.x86_64", + "libdhash-0.5.0-43.fc31.x86_64", + "libdnet-1.12-31.fc31.x86_64", + "libdnf-0.35.3-6.fc31.x86_64", + "libdrm-2.4.99-2.fc31.x86_64", + "libedit-3.1-28.20190324cvs.fc31.x86_64", + "libepoxy-1.5.3-4.fc31.x86_64", + "libevent-2.1.8-7.fc31.x86_64", + "libfdisk-2.34-3.fc31.x86_64", + "libffi-3.1-23.fc31.x86_64", + "libgcc-9.2.1-1.fc31.x86_64", + "libgcrypt-1.8.5-1.fc31.x86_64", + "libgomp-9.2.1-1.fc31.x86_64", + "libgpg-error-1.36-2.fc31.x86_64", + "libgusb-0.3.0-5.fc31.x86_64", + "libicu-63.2-3.fc31.x86_64", + "libidn2-2.2.0-2.fc31.x86_64", + "libini_config-1.3.1-43.fc31.x86_64", + "libjpeg-turbo-2.0.2-4.fc31.x86_64", + "libkcapi-1.1.5-1.fc31.x86_64", + "libkcapi-hmaccalc-1.1.5-1.fc31.x86_64", + "libksba-1.3.5-10.fc31.x86_64", + "libldb-2.0.7-1.fc31.x86_64", + "libmaxminddb-1.2.0-8.fc31.x86_64", + "libmetalink-0.1.3-9.fc31.x86_64", + "libmnl-1.0.4-10.fc31.x86_64", + "libmodman-2.0.1-20.fc31.x86_64", + "libmodulemd1-1.8.15-3.fc31.x86_64", + "libmount-2.34-3.fc31.x86_64", + "libmspack-0.10.1-0.2.alpha.fc31.x86_64", + "libndp-1.7-4.fc31.x86_64", + "libnetfilter_conntrack-1.0.7-3.fc31.x86_64", + "libnfnetlink-1.0.1-16.fc31.x86_64", + "libnfsidmap-2.4.1-1.rc1.fc31.x86_64", + "libnftnl-1.1.3-2.fc31.x86_64", + "libnghttp2-1.39.2-1.fc31.x86_64", + "libnl3-3.5.0-1.fc31.x86_64", + "libnsl2-1.2.0-5.20180605git4a062cf.fc31.x86_64", + "libpath_utils-0.2.1-43.fc31.x86_64", + "libpcap-1.9.0-4.fc31.x86_64", + "libpciaccess-0.15-2.fc31.x86_64", + "libpipeline-1.5.1-3.fc31.x86_64", + "libpng-1.6.37-2.fc31.x86_64", + "libproxy-0.4.15-14.fc31.x86_64", + "libpsl-0.21.0-2.fc31.x86_64", + "libpwquality-1.4.1-1.fc31.x86_64", + "libref_array-0.1.5-43.fc31.x86_64", + "librepo-1.10.5-1.fc31.x86_64", + "libreport-filesystem-2.10.1-2.fc31.noarch", + "libseccomp-2.4.1-1.fc31.x86_64", + "libsecret-0.19.1-1.fc31.x86_64", + "libselinux-2.9-5.fc31.x86_64", + "libselinux-utils-2.9-5.fc31.x86_64", + "libsemanage-2.9-3.fc31.x86_64", + "libsepol-2.9-2.fc31.x86_64", + "libsigsegv-2.11-8.fc31.x86_64", + "libsmartcols-2.34-3.fc31.x86_64", + "libsolv-0.7.5-3.fc31.x86_64", + "libsoup-2.68.2-1.fc31.x86_64", + "libss-1.45.3-1.fc31.x86_64", + "libssh-0.9.0-6.fc31.x86_64", + "libssh-config-0.9.0-6.fc31.noarch", + "libsss_autofs-2.2.2-1.fc31.x86_64", + "libsss_certmap-2.2.2-1.fc31.x86_64", + "libsss_idmap-2.2.2-1.fc31.x86_64", + "libsss_nss_idmap-2.2.2-1.fc31.x86_64", + "libsss_sudo-2.2.2-1.fc31.x86_64", + "libstdc++-9.2.1-1.fc31.x86_64", + "libtalloc-2.3.0-1.fc31.x86_64", + "libtasn1-4.14-2.fc31.x86_64", + "libtdb-1.4.2-1.fc31.x86_64", + "libtevent-0.10.1-1.fc31.x86_64", + "libtextstyle-0.20.1-2.fc31.x86_64", + "libthai-0.1.28-3.fc31.x86_64", + "libtiff-4.0.10-6.fc31.x86_64", + "libtirpc-1.1.4-2.rc3.fc31.x86_64", + "libtool-ltdl-2.4.6-31.fc31.x86_64", + "libunistring-0.9.10-6.fc31.x86_64", + "libusbx-1.0.22-4.fc31.x86_64", + "libuser-0.62-21.fc31.x86_64", + "libutempter-1.1.6-17.fc31.x86_64", + "libuuid-2.34-3.fc31.x86_64", + "libverto-0.3.0-8.fc31.x86_64", + "libwayland-client-1.17.0-2.fc31.x86_64", + "libwayland-cursor-1.17.0-2.fc31.x86_64", + "libwayland-egl-1.17.0-2.fc31.x86_64", + "libxcb-1.13.1-3.fc31.x86_64", + "libxcrypt-4.4.10-1.fc31.x86_64", + "libxcrypt-compat-4.4.10-1.fc31.x86_64", + "libxkbcommon-0.8.4-2.fc31.x86_64", + "libxml2-2.9.9-3.fc31.x86_64", + "libxslt-1.1.33-2.fc31.x86_64", + "libyaml-0.2.2-2.fc31.x86_64", + "libzstd-1.4.2-1.fc31.x86_64", + "linux-atm-libs-2.5.1-25.fc31.x86_64", + "linux-firmware-20190923-102.fc31.noarch", + "linux-firmware-whence-20190923-102.fc31.noarch", + "lmdb-libs-0.9.23-3.fc31.x86_64", + "lua-libs-5.3.5-6.fc31.x86_64", + "lz4-libs-1.9.1-1.fc31.x86_64", + "man-db-2.8.4-5.fc31.x86_64", + "mkpasswd-5.5.2-1.fc31.x86_64", + "mpfr-3.1.6-5.fc31.x86_64", + "ncurses-6.1-12.20190803.fc31.x86_64", + "ncurses-base-6.1-12.20190803.fc31.noarch", + "ncurses-libs-6.1-12.20190803.fc31.x86_64", + "nettle-3.5.1-3.fc31.x86_64", + "nftables-0.9.1-3.fc31.x86_64", + "npth-1.6-3.fc31.x86_64", + "open-vm-tools-10.3.10-2.fc31.x86_64", + "openldap-2.4.47-3.fc31.x86_64", + "openssh-8.0p1-8.fc31.1.x86_64", + "openssh-clients-8.0p1-8.fc31.1.x86_64", + "openssh-server-8.0p1-8.fc31.1.x86_64", + "openssl-1.1.1d-2.fc31.x86_64", + "openssl-libs-1.1.1d-2.fc31.x86_64", + "openssl-pkcs11-0.4.10-2.fc31.x86_64", + "os-prober-1.77-3.fc31.x86_64", + "p11-kit-0.23.16.1-2.fc31.x86_64", + "p11-kit-trust-0.23.16.1-2.fc31.x86_64", + "pam-1.3.1-18.fc31.x86_64", + "pango-1.44.6-1.fc31.x86_64", + "parted-3.2.153-1.fc31.x86_64", + "passwd-0.80-6.fc31.x86_64", + "pciutils-3.6.2-3.fc31.x86_64", + "pciutils-libs-3.6.2-3.fc31.x86_64", + "pcre-8.43-2.fc31.1.x86_64", + "pcre2-10.33-14.fc31.x86_64", + "pigz-2.4-5.fc31.x86_64", + "pinentry-1.1.0-6.fc31.x86_64", + "pixman-0.38.4-1.fc31.x86_64", + "plymouth-0.9.4-10.20191001gita8aad27.fc31.x86_64", + "plymouth-core-libs-0.9.4-10.20191001gita8aad27.fc31.x86_64", + "plymouth-scripts-0.9.4-10.20191001gita8aad27.fc31.x86_64", + "policycoreutils-2.9-5.fc31.x86_64", + "polkit-libs-0.116-4.fc31.x86_64", + "popt-1.16-18.fc31.x86_64", + "procps-ng-3.3.15-6.fc31.x86_64", + "publicsuffix-list-dafsa-20190417-2.fc31.noarch", + "python-pip-wheel-19.1.1-4.fc31.noarch", + "python-setuptools-wheel-41.2.0-1.fc31.noarch", + "python-unversioned-command-3.7.4-5.fc31.noarch", + "python3-3.7.4-5.fc31.x86_64", + "python3-dateutil-2.8.0-3.fc31.noarch", + "python3-dbus-1.2.8-6.fc31.x86_64", + "python3-decorator-4.4.0-2.fc31.noarch", + "python3-distro-1.4.0-2.fc31.noarch", + "python3-dnf-4.2.9-5.fc31.noarch", + "python3-dnf-plugins-core-4.0.9-1.fc31.noarch", + "python3-firewall-0.7.2-1.fc31.noarch", + "python3-gobject-base-3.34.0-3.fc31.x86_64", + "python3-gpg-1.13.1-3.fc31.x86_64", + "python3-hawkey-0.35.3-6.fc31.x86_64", + "python3-libcomps-0.1.11-3.fc31.x86_64", + "python3-libdnf-0.35.3-6.fc31.x86_64", + "python3-libs-3.7.4-5.fc31.x86_64", + "python3-libselinux-2.9-5.fc31.x86_64", + "python3-pip-19.1.1-4.fc31.noarch", + "python3-rpm-4.15.0-6.fc31.x86_64", + "python3-setuptools-41.2.0-1.fc31.noarch", + "python3-six-1.12.0-2.fc31.noarch", + "python3-slip-0.6.4-16.fc31.noarch", + "python3-slip-dbus-0.6.4-16.fc31.noarch", + "python3-unbound-1.9.3-1.fc31.x86_64", + "qrencode-libs-4.0.2-4.fc31.x86_64", + "readline-8.0-3.fc31.x86_64", + "rest-0.8.1-6.fc31.x86_64", + "rootfiles-8.1-25.fc31.noarch", + "rpm-4.15.0-6.fc31.x86_64", + "rpm-build-libs-4.15.0-6.fc31.x86_64", + "rpm-libs-4.15.0-6.fc31.x86_64", + "rpm-plugin-selinux-4.15.0-6.fc31.x86_64", + "rpm-plugin-systemd-inhibit-4.15.0-6.fc31.x86_64", + "rpm-sign-libs-4.15.0-6.fc31.x86_64", + "sed-4.5-4.fc31.x86_64", + "selinux-policy-3.14.4-37.fc31.noarch", + "selinux-policy-targeted-3.14.4-37.fc31.noarch", + "setup-2.13.3-2.fc31.noarch", + "shadow-utils-4.6-16.fc31.x86_64", + "shared-mime-info-1.14-1.fc31.x86_64", + "sqlite-libs-3.29.0-2.fc31.x86_64", + "sssd-client-2.2.2-1.fc31.x86_64", + "sssd-common-2.2.2-1.fc31.x86_64", + "sssd-kcm-2.2.2-1.fc31.x86_64", + "sssd-nfs-idmap-2.2.2-1.fc31.x86_64", + "sudo-1.8.28-1.fc31.x86_64", + "systemd-243-4.gitef67743.fc31.x86_64", + "systemd-bootchart-233-5.fc31.x86_64", + "systemd-libs-243-4.gitef67743.fc31.x86_64", + "systemd-pam-243-4.gitef67743.fc31.x86_64", + "systemd-rpm-macros-243-4.gitef67743.fc31.noarch", + "systemd-udev-243-4.gitef67743.fc31.x86_64", + "tar-1.32-2.fc31.x86_64", + "trousers-0.3.13-13.fc31.x86_64", + "trousers-lib-0.3.13-13.fc31.x86_64", + "tss2-1331-2.fc31.x86_64", + "tzdata-2019c-1.fc31.noarch", + "unbound-libs-1.9.3-1.fc31.x86_64", + "util-linux-2.34-3.fc31.x86_64", + "vim-minimal-8.1.2102-1.fc31.x86_64", + "which-2.21-15.fc31.x86_64", + "whois-nls-5.5.2-1.fc31.noarch", + "xkeyboard-config-2.27-2.fc31.noarch", + "xmlsec1-1.2.27-3.fc31.x86_64", + "xmlsec1-openssl-1.2.27-3.fc31.x86_64", + "xz-5.2.4-6.fc31.x86_64", + "xz-libs-5.2.4-6.fc31.x86_64", + "yum-4.2.9-5.fc31.noarch", + "zchunk-libs-1.1.2-3.fc31.x86_64", + "zlib-1.2.11-19.fc31.x86_64" + ], + "partition-table": "dos", + "partition-table-id": "0x14fc63d2", + "partitions": [ + { + "bootable": true, + "fstype": "ext4", + "label": null, + "partuuid": "14fc63d2-01", + "size": 2146435072, + "start": 1048576, + "type": "83", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:996:993::/var/lib/chrony:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "redhat:x:1000:1000::/home/redhat:/bin/bash", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:998:995:systemd Core Dumper:/:/sbin/nologin", + "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "systemd-timesync:x:997:994:systemd Time Synchronization:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:999:999:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/boot/System.map-5.3.7-301.fc31.x86_64": ".M.......", + "/boot/initramfs-5.3.7-301.fc31.x86_64.img": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/proc": ".M.......", + "/run/cryptsetup": ".M.......", + "/sys": ".M.......", + "/var/log/btmp": ".M.......", + "/var/log/journal": ".M....G..", + "/var/log/lastlog": ".M....G.." + }, + "missing": [] + }, + "services-disabled": [ + "chrony-dnssrv@.timer", + "chrony-wait.service", + "console-getty.service", + "debug-shell.service", + "exit.target", + "fstrim.timer", + "halt.target", + "kexec.target", + "loadmodules.service", + "nftables.service", + "nis-domainname.service", + "poweroff.target", + "proc-sys-fs-binfmt_misc.mount", + "rdisc.service", + "remote-cryptsetup.target", + "runlevel0.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-boot-check-no-failures.service", + "systemd-bootchart.service", + "systemd-network-generator.service", + "systemd-networkd-wait-online.service", + "systemd-networkd.service", + "systemd-networkd.socket", + "systemd-pstore.service", + "systemd-resolved.service", + "systemd-time-wait-sync.service", + "systemd-timesyncd.service", + "tcsd.service" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "ctrl-alt-del.target", + "dbus-broker.service", + "dbus-org.fedoraproject.FirewallD1.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dbus.service", + "dbus.socket", + "dnf-makecache.timer", + "firewalld.service", + "getty@.service", + "import-state.service", + "messagebus.service", + "reboot.target", + "remote-fs.target", + "runlevel6.target", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "unbound-anchor.timer", + "vgauthd.service", + "vmtoolsd-init.service", + "vmtoolsd.service" + ] + } +} \ No newline at end of file diff --git a/test/cases/fedora_32-aarch64-ami-boot.json b/test/cases/fedora_32-aarch64-ami-boot.json new file mode 100644 index 0000000..78650e0 --- /dev/null +++ b/test/cases/fedora_32-aarch64-ami-boot.json @@ -0,0 +1,9479 @@ +{ + "boot": { + "type": "aws" + }, + "compose-request": { + "distro": "fedora-32", + "arch": "aarch64", + "image-type": "ami", + "repositories": [ + { + "baseurl": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ], + "filename": "image.raw", + "blueprint": {} + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:0042a3d3b19152d0a16ee321cbe99208a2f4ebd009515c1f6f962a1d5f9cde26": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsmartcols-2.35.1-7.fc32.aarch64.rpm" + }, + "sha256:0055cc4eccd54df5b64c194618a26e894a0d61781c8d1f1f48687bfd296b15e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pyyaml-5.3.1-1.fc32.aarch64.rpm" + }, + "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm" + }, + "sha256:0175f5d1834c1cb4a1f44c9ae20960fa674f26add0b88f903407abf2f3d22f82": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_certmap-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:0178be1e5d6da8053061d29013d8fda8445d37eac908afbf4a2ca92faf950f2c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.aarch64.rpm" + }, + "sha256:023d3d7be30607410a2357b50b8ef3f94a07baf2842bfba0421f803600ec605f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.aarch64.rpm" + }, + "sha256:026212c277c72facfd48901978afded50fc4050aedaa06a24e5e57875ce48c32": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/parted-3.3-3.fc32.aarch64.rpm" + }, + "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-six-1.14.0-2.fc32.noarch.rpm" + }, + "sha256:03c7e6ea76b2aa8e7f8c8c8039412f618790ea39aeb3c1ffab205ba6b3bee54d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/ipset-libs-7.6-1.fc32.aarch64.rpm" + }, + "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/langpacks-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/geolite2-country-20191217-2.fc32.noarch.rpm" + }, + "sha256:04bc54c723bfa9e1b6bb6567e9d8cd3e1ed389fc2be97259b971a8cbfe5f95e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/efibootmgr-16-7.fc32.aarch64.rpm" + }, + "sha256:05121688770a80889f1e1d0594a5b14d6ac30cc6fe4d431e3aa829f2290ea973": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_idmap-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:067d98bda561e94f9f0bba60f691dc8ba4610434603f26cf6f4fa22677da8465": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-1.12.16-4.fc32.aarch64.rpm" + }, + "sha256:06d6f5d9909beb1cc6731dc6d5d86b9e7885285848bad8ef16079ad3e8824e0b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/j/json-c-0.13.1-9.fc32.aarch64.rpm" + }, + "sha256:07b37612b8e0f09885ad653f3dbd2ff95a65bfd8b21c69d1cc20a4f3dbc0ef32": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtalloc-2.3.1-2.fc32.aarch64.rpm" + }, + "sha256:07cf4ae85cb34a38b22eff66e1fd996b32a5beda0c60644b06ecdff33c224ce9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnftnl-1.1.5-2.fc32.aarch64.rpm" + }, + "sha256:081d831528796c3e5c47b89c363a0f530bf77e3e2e0098cd586d814bea9a12f0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cracklib-2.9.6-22.fc32.aarch64.rpm" + }, + "sha256:086552102da5fd978a4722ddd21381d432abb9f886cd97761d2efbff2c588791": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/man-db-2.9.0-2.fc32.aarch64.rpm" + }, + "sha256:092370d1e62096782f329944df0e7e01cc49bbc0fa4071d63f352cf45e89e5bc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dbus-1.2.16-1.fc32.aarch64.rpm" + }, + "sha256:09a9dd8c3ae4fe9a9817c71c4b2af35f2d7e1dbf2c9f4659028ce69a5d2f2d02": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgomp-10.0.1-0.11.fc32.aarch64.rpm" + }, + "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm" + }, + "sha256:0a2eadd29cc53df942d3f0acc016b281efa4347fc2e9de1d7b8b61d9c5f0d894": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcap-2.26-7.fc32.aarch64.rpm" + }, + "sha256:0a31a882e4ac33233b36e2c61cc09125a936f54877137d5bb2ddc1ca8a5f9a12": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.aarch64.rpm" + }, + "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm" + }, + "sha256:0c30a7fd9f69ad808183afa0814e363689ff63e7a82856a790e5fa111c031b96": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.aarch64.rpm" + }, + "sha256:0dcc4568055843acf5571553731d57a0d042b6602e6932bc4fe88718597c2fbe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/file-5.38-2.fc32.aarch64.rpm" + }, + "sha256:10d828cc7803aca9b59e3bb9b52e0af45a2828250f1eab7f0fc08cdb981f191d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/alternatives-1.11-6.fc32.aarch64.rpm" + }, + "sha256:11004aa2821bdebfca77ab93e7ed405e0e93eb685850f5fb57b01762692ce155": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.aarch64.rpm" + }, + "sha256:11204917b909836508acff0df2499301d3b2f8f0a1c0e341de904ac9fb4bbedf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gpgme-1.13.1-6.fc32.aarch64.rpm" + }, + "sha256:129adf9147d5d120546ca8e0fb5f165761106d386d366fe82591e372754d0b4a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-decorator-4.4.0-6.fc32.noarch.rpm" + }, + "sha256:13290758e03b977aed5e23b7ba9a01157b6802fd78baf75bc1fc184864e9e31e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/diffutils-3.7-4.fc32.aarch64.rpm" + }, + "sha256:14005ca38ce35a0c2e9d24b37991059d213f9b3277895eaa2a5b45e242cf8dc8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kernel-5.6.6-300.fc32.aarch64.rpm" + }, + "sha256:15a8a718cb6f629474fec7756b4701430e14ff94aad6cf6fe20f3eb7174a7783": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsolv-0.7.11-2.fc32.aarch64.rpm" + }, + "sha256:15b2402e11402a6cb494bf7ea31ebf10bf1adb0759aab417e63d05916e56aa45": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/nettle-3.5.1-5.fc32.aarch64.rpm" + }, + "sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-policycoreutils-3.0-2.fc32.noarch.rpm" + }, + "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/linux-firmware-whence-20200316-106.fc32.noarch.rpm" + }, + "sha256:16902074f43963a360df42fec639f8b30ad29ee0d8a9799ac26ff0ba5c60e4cd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-audit-3.0-0.19.20191104git1c2f876.fc32.aarch64.rpm" + }, + "sha256:174a7c064ba48fdfc61ee5a091ec474dfbdb32a1a602cbe0776937c39e222663": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/groff-base-1.22.3-21.fc32.aarch64.rpm" + }, + "sha256:17f5c9a25bf0f952f6defa6a857e938bfc1f72c69217f666a537bf8f1daff5f8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnghttp2-1.40.0-2.fc32.aarch64.rpm" + }, + "sha256:18c188f63504b8cf3bc88d95de458a1eb216bca268378a6839618ef7468dc635": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/device-mapper-1.02.171-1.fc32.aarch64.rpm" + }, + "sha256:1a096ed78df5a9339c4b3c15372275a884a1124b048ffcfbdb768db881e47ab2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpwquality-1.4.2-2.fc32.aarch64.rpm" + }, + "sha256:1befc4be3c3c72b3210e54f96f4334f268eaecdd3b77af7cadea0ef31f0e2ca9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/lua-libs-5.3.5-7.fc32.aarch64.rpm" + }, + "sha256:1c982f31133def3baea707e0d1f0fe4a014d2c8c5f20ac8d69362cff4f26d5e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libassuan-2.5.3-3.fc32.aarch64.rpm" + }, + "sha256:1ddaeb7c602005e75c0ea2603a533d692a94915a297b71e68a8e27327456c3d0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcbor-0.5.0-7.fc32.aarch64.rpm" + }, + "sha256:1e1e9900e9d3a2b8eb6684060672526948df2cb9f751e7d72cb4fa5bffe71747": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cloud-init-19.4-2.fc32.noarch.rpm" + }, + "sha256:1e533f7f64169288e90b3851e509cf1aedf4da0fe986288da53516b2b77ac77d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmount-2.35.1-7.fc32.aarch64.rpm" + }, + "sha256:1eb386a258cebf600319b1f18344b047c9182485936d96da9c2b1067ac1c1bba": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/psmisc-23.3-3.fc32.aarch64.rpm" + }, + "sha256:1ee4f732b1b4b237d7301219fc5c52b63c9ab9e77db746612852fef5610f69b7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libksba-1.3.5-11.fc32.aarch64.rpm" + }, + "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-release-32-1.noarch.rpm" + }, + "sha256:1fab76e36bbad6727634f2a8ce6e722c0e6ca814969948ffd6ce7250bc75e7f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_sudo-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:202d761caf4c9d4937c04388a7180d6687a79e8141136be0f7ecc3a54bf80594": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xz-5.2.5-1.fc32.aarch64.rpm" + }, + "sha256:20307d5a1d3fccfe8f64c8ea074c6a751dc36849c7495592989677fd01da9147": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbxtool-8-11.fc32.aarch64.rpm" + }, + "sha256:20f32df3b4961ef659a4822686978e0501fc5262e942046b53b24ed11e77476b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/v/vim-minimal-8.2.525-1.fc32.aarch64.rpm" + }, + "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-repos-32-1.noarch.rpm" + }, + "sha256:22954219a63638d7418204d818c01a0e3c914e2b2eb970f2e4638dcf5a7a5634": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libutempter-1.1.6-18.fc32.aarch64.rpm" + }, + "sha256:231cefc11eb5a9ac8f23bbd294cef0bf3a690040df3048e063f8a269f2db75f8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnl3-3.5.0-2.fc32.aarch64.rpm" + }, + "sha256:2356581880df7b8275896b18de24e432a362ee159fc3127f92476ffe8d0432fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmnl-1.0.4-11.fc32.aarch64.rpm" + }, + "sha256:2590d214d4986fa95653e7f83e67a81dbf822b621994a9ab867e7c377bc479c2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-common-2.31-2.fc32.aarch64.rpm" + }, + "sha256:25e6968493572c680d6f8cad03e591f6e1e0e6ce0d1fbe3648d4b64ba529491d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/u/util-linux-2.35.1-7.fc32.aarch64.rpm" + }, + "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm" + }, + "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dnf-plugins-core-4.0.14-1.fc32.noarch.rpm" + }, + "sha256:27a0d9447ef63c95a3182b32606e6de1bd17f2cfc7910a456fa43996db67833f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dhcp-client-4.4.2-5.b1.fc32.aarch64.rpm" + }, + "sha256:28892ae62cd1b4dadded523be8cb5f9e0fddeaa864919ee4b0dfad3bba8fd06f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgcc-10.0.1-0.11.fc32.aarch64.rpm" + }, + "sha256:291df16c0ae66fa5685cd033c84ae92765be4f4e17ce4936e47dc602ac6ff93e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libffi-3.1-24.fc32.aarch64.rpm" + }, + "sha256:29bcc2f3f85ca7bdc22178af3e16743f55353bd9f25fb4c748d8c9f7117fe56f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/policycoreutils-3.0-2.fc32.aarch64.rpm" + }, + "sha256:2bc82e132696d9daa4eef545ff3352d6eb588b9a1b9584e515d15a7c3d6471df": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libuuid-2.35.1-7.fc32.aarch64.rpm" + }, + "sha256:2c4d03577e8661920a7b64fcc68735b795288744f1b188512a96960143030474": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libzstd-1.4.4-2.fc32.aarch64.rpm" + }, + "sha256:2c6ddfd3a551252013f647539df30097febcc4e0cd7c6eb2d1690e9f5aff66d6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/plymouth-scripts-0.9.4-14.20200325gite31c81f.fc32.aarch64.rpm" + }, + "sha256:2c9bf996e1550ed5ad42398187ee14d65315d13ec5c9e2eab32b8fed0743b1fc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtevent-0.10.2-2.fc32.aarch64.rpm" + }, + "sha256:2d7ad38e86f5109c732a32bf9bea612c4c674aba6ad4cca2d211d826edc7fd6f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libunistring-0.9.10-7.fc32.aarch64.rpm" + }, + "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm" + }, + "sha256:2dcee99ce05f5844438f827cf0cd1578f7863efb31c204bbc441cd2265ad9a7d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpath_utils-0.2.1-44.fc32.aarch64.rpm" + }, + "sha256:2f117f22ec79fed75752c69b7e1c70582bad93b55fb4a5b0dc2bca978bafce85": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.aarch64.rpm" + }, + "sha256:2f849fdf4588b1b4e86a008b6a82f30ff2ec1db1ae2bd21e067c6f910e4cb237": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/tar-1.32-4.fc32.aarch64.rpm" + }, + "sha256:30bf2e7deddad50a3054827c98e97adfd3ae1d24ae248980649db289198135a8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/passwd-0.80-8.fc32.aarch64.rpm" + }, + "sha256:3242e0ce48f95d7a271125cf1222b5af09e20fe85194623d95336e1c678bdee8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/trousers-0.3.13-13.fc31.aarch64.rpm" + }, + "sha256:32a00991ec85f0bf2a336e00033a0e70b0da963eb42d81bbad18a7a11f41d4eb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libs-3.8.2-2.fc32.aarch64.rpm" + }, + "sha256:3377ae652fbbd22f2c61815bfd1bb58185b5f57c194d9b0cce3056ab11522779": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/initscripts-10.02-3.fc32.aarch64.rpm" + }, + "sha256:33788835331bed7f75e5cd2126d8d75511211175c9ac6d93824baec1a546a28d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxml2-2.9.10-3.fc32.aarch64.rpm" + }, + "sha256:33ca43cf0714aef344a70be4cfa42322694cc975a2eeee0bf31325dbca7f2842": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.aarch64.rpm" + }, + "sha256:340a82cfe6a9d18933b99a4e001d7e54f7ab225fe5e7fb1a7f51cb1c675c7050": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libarchive-3.4.2-1.fc32.aarch64.rpm" + }, + "sha256:34efde201252afe93ec3af61af30c6d32cfbe5ecbdcecaf4667666f12482757d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.aarch64.rpm" + }, + "sha256:36a3ae11acb7916e932ff704a4527b126bb39f9e849072b16242719c8de11119": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-2.31-2.fc32.aarch64.rpm" + }, + "sha256:3882823d0eb18e0e8146584f4a32a4801961f6fdc09075607746317eba3265be": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-urllib3-1.25.7-3.fc32.noarch.rpm" + }, + "sha256:391faab010ca30610a14e0b3d54fbc0331be39bc831086fb877f8021fe4b171f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-oauthlib-3.0.2-5.fc32.noarch.rpm" + }, + "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm" + }, + "sha256:3c29cc12a25791c83c040def2df8f107b161ecc0cbf3965cad82f38a451c7963": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libldb-2.1.1-1.fc32.aarch64.rpm" + }, + "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm" + }, + "sha256:3d6ec574fe2c612bcc45395f7ee87c68f45016f005c6d7aeee6b37897f41b8d2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.aarch64.rpm" + }, + "sha256:3e25d33bea0d8de847f817b428fe92a6b02376634c7a6f0672bc668fa769869d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libedit-3.1-32.20191231cvs.fc32.aarch64.rpm" + }, + "sha256:3ea53f635b4f559b2bdb0e58d54dbfddc126b18abe23b46b94aecbf7c0d5132c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.aarch64.rpm" + }, + "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm" + }, + "sha256:400c91d4d6d1125ec891c16ea72aa4123fc4c96e02f8668a8ae6dbc27113d408": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.aarch64.rpm" + }, + "sha256:4139803076f102e2224b81b4f1da3f6d066b89e272201d2720557763f9acfcd5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.aarch64.rpm" + }, + "sha256:41c6a8ea4240f2fa6cea0333cc6d5f59731ac843398eb457c182e90af367783c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-245.4-1.fc32.aarch64.rpm" + }, + "sha256:435530a0b9a086018694034ce48e9589348fc66389d884977b400f2f74814ac8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdb-utils-5.3.28-40.fc32.aarch64.rpm" + }, + "sha256:45e2c1c76a0a0b6e1164c457307250a54a7de5905992b4351a84183c2e9f2633": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mkpasswd-5.5.6-1.fc32.aarch64.rpm" + }, + "sha256:4674c9871d3a70a005fc880d6ce1c0e56418192085dae8b5eb861003ef9a2c1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iproute-tc-5.5.0-1.fc32.aarch64.rpm" + }, + "sha256:46aa2a21a000eb70097a86788d853602f7db1238156f2364a802f0b37f0dc4e6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sssd-nfs-idmap-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:47538b1db9720be4699329a8da32d873187d0c6c22f45252614ac5b8a8312482": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/firewalld-filesystem-0.8.2-2.fc32.noarch.rpm" + }, + "sha256:48381163a3f2c524697efc07538f040fde0b69d4e0fdcbe3bcfbc9924dd7d5dd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xz-libs-5.2.5-1.fc32.aarch64.rpm" + }, + "sha256:4860a733ca3f22089c6c283cbdcf53123a702d60b5bffdd4fe9d76826f91139a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-prettytable-0.7.2-22.fc32.noarch.rpm" + }, + "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dhcp-common-4.4.2-5.b1.fc32.noarch.rpm" + }, + "sha256:4940f6e26a93fe638667adb6e12969fe915b3a7b0cfeb58877dd6d7bccf46c1a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/expat-2.2.8-2.fc32.aarch64.rpm" + }, + "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm" + }, + "sha256:4c9d77d63ddc7dda0e018fc1c97d46025794e336e58d838a631fcc130dfa3b9b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jsonpatch-1.21-11.fc32.noarch.rpm" + }, + "sha256:500c4abc34ff58e6f06c7194034b2d68b618c5e6afa89b551ab74ef226e1880a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libidn2-2.3.0-2.fc32.aarch64.rpm" + }, + "sha256:50b7b06e94253cb4eacc1bfb68f8343b73cbd6dae427f8ad81367f7b8ebf58a8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gzip-1.10-2.fc32.aarch64.rpm" + }, + "sha256:50d91ca18b6cdc9395424b852d2828d1b75e2af318932a2442376d2a10819f6a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libusbx-1.0.23-1.fc32.aarch64.rpm" + }, + "sha256:52aa6e698e60cd360d5b9473fd1ebcc7e238e2125449bfdcc41b3e0fe13ae645": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-libs-245.4-1.fc32.aarch64.rpm" + }, + "sha256:532a58ae361b9c0bc147037fb96f338684b949bd4071b19bac322b8967c32a01": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnutls-3.6.13-1.fc32.aarch64.rpm" + }, + "sha256:54613bd9e0524bb992bd7779c80a24b12df744085031cb8f3defb5fae55ca0f5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/polkit-libs-0.116-7.fc32.aarch64.rpm" + }, + "sha256:55a343c96ac98c2bdf7bffdf5edc73f87b482a26b4a1a5e95670343dcec88fb8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/chrony-3.5-8.fc32.aarch64.rpm" + }, + "sha256:56b5cea4fa7f4d74d4d15aae43ab4827387dead4659bd2bede66c38057cd19e7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sudo-1.9.0-0.1.b4.fc32.aarch64.rpm" + }, + "sha256:56bc7a11331fe199a45bc23f348deff8cd5e1ee02c617b6ed429d61ba537fc8b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/librepo-1.11.1-4.fc32.aarch64.rpm" + }, + "sha256:5719dd2fb399cadec08b4ac41c794239d2a2de2f012faeb970ab90a07bba0084": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-babel-2.8.0-2.fc32.noarch.rpm" + }, + "sha256:57e1695da46f19db4a851304d57e7ce2409c287a88e9b52af0b76ed2252a4f98": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gettext-libs-0.20.1-4.fc32.aarch64.rpm" + }, + "sha256:57ee793c1f8dc1c9b58953b03d7041501eea326cefc4dda6de640761c60e31f8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssh-8.2p1-2.fc32.aarch64.rpm" + }, + "sha256:5875ba2d9b9ced8b2d2faa880b5f1811a89e17defe946ccf99b201790a0d2520": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcap-ng-0.7.10-2.fc32.aarch64.rpm" + }, + "sha256:58988a2b7213098503b56d5388eba1bf2a01b9ff027961acb1e9f55c47d237ad": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libfdisk-2.35.1-7.fc32.aarch64.rpm" + }, + "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dnf-plugins-core-4.0.14-1.fc32.noarch.rpm" + }, + "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:5adad0edfcf9c4415734d11a35a5c14cbf53eb32827572dd6af670fadcad7f78": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libkcapi-1.1.5-2.fc32.aarch64.rpm" + }, + "sha256:5b1cb1251cf7f65c50d9e3fcc11901fef5132dc177cce68a50918da481bb7629": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/npth-1.6-4.fc32.aarch64.rpm" + }, + "sha256:5b304375adf911d056b36dc35f22af027d9283efbaebcb8231f052aef3982f05": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/bash-5.0.11-2.fc32.aarch64.rpm" + }, + "sha256:5b7a135c35562e64344cc9f1ca37a5239649152cc055e14e7bf9bf84843eccab": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gmp-6.1.2-13.fc32.aarch64.rpm" + }, + "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/linux-firmware-20200316-106.fc32.noarch.rpm" + }, + "sha256:5cc385c1ca3df73a1dd7865159628a6b0ce186f8679c6bc95dda0b4791e4a9fc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fuse-libs-2.9.9-9.fc32.aarch64.rpm" + }, + "sha256:5ce4acbf25abd83a562f20e9a8a73b8860a766fb543d69ed9db6eb57fd75fc70": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sssd-kcm-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:5d52cffee2d5360db8cf7e6ed4b19a68de4a0ae55f42ed279d4fdb3a70bb72f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.aarch64.rpm" + }, + "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm" + }, + "sha256:5fa81b28d5100f987cd8d9317ccf200ec5b94d11ed3c8e2e90137b8981e71c61": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssh-clients-8.2p1-2.fc32.aarch64.rpm" + }, + "sha256:6007c88c459315a5e2ce354086bd0372a56e15cdd0dc14e6e889ab859f8d8365": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/readline-8.0-4.fc32.aarch64.rpm" + }, + "sha256:6028f86f132faee662e97075270f68e8125fd339c8689a2b661facd25c3b829b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libselinux-3.0-3.fc32.aarch64.rpm" + }, + "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm" + }, + "sha256:60c3cbbe546fb12db4c7164a51613ea9ae20f7199537cdf5145e828c78544493": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gettext-0.20.1-4.fc32.aarch64.rpm" + }, + "sha256:60c9a00d8c528ad5806a5fec20ed3ffb8ad195e9eb9bf5294893e8425be1fa9f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-broker-22-1.fc32.aarch64.rpm" + }, + "sha256:61c51596cc97f35177efe8dc5e2ca52d8fd528570f33c184497f419259b73c90": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-idna-2.8-6.fc32.noarch.rpm" + }, + "sha256:61e37e1df1e427525e6dd873d04fe2afc5e6825f2788a33b941e532e5a27ed7e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/NetworkManager-1.22.10-1.fc32.aarch64.rpm" + }, + "sha256:6221b210a7778432738994829f6c7e9f047940e53ee42a0e6458b91095b82756": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grub2-efi-aa64-2.04-12.fc32.aarch64.rpm" + }, + "sha256:62afc19040e8fbf7ac7946f02d67cdd19086658c3d8713a6c120482fd769537e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdnf-0.45.0-3.fc32.aarch64.rpm" + }, + "sha256:62bafab5a0f37fdec29ce38bc1d635e0a81ab165061faaf5d83f5246ca4e2db0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gawk-5.0.1-7.fc32.aarch64.rpm" + }, + "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:63cef561bcaadd5b9a1bf93b968f284ca76c3ad2b90b5c439b62456c0517164f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.aarch64.rpm" + }, + "sha256:645f82cf62da25742cab5e8ffd1f764301b84ab19710d9f3fb3aff1cb57ffdc6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jinja2-2.11.1-1.fc32.noarch.rpm" + }, + "sha256:64b64bab720df9dd7fd37ebf80a07795a95ac11e640eda3209b6517dcd7133e5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxcrypt-4.4.16-1.fc32.aarch64.rpm" + }, + "sha256:654a9a9997c975998e1cb5d9250cd34b9d9d4d69f43c9282e67ad4d38fa2bcdf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/u/unbound-libs-1.9.6-2.fc32.aarch64.rpm" + }, + "sha256:6615aae3def0c49910e43e2d69f7ae8852694953dceb4b6235b5cf4099296d70": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jsonpointer-1.10-19.fc32.noarch.rpm" + }, + "sha256:6837a13f3c643b5da33bd694efc4e95f54b5cc5e15de61884644378367d55804": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glib2-2.64.1-1.fc32.aarch64.rpm" + }, + "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm" + }, + "sha256:6890a9545194ad6cf1b0c58e5273132171a9ced9cb665a1442aa62b6b6d3d2ea": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jsonschema-3.2.0-2.fc32.noarch.rpm" + }, + "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/langpacks-core-font-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:6bc574a7f67dc28909f84c05bfc3dfeeac04c088f809032d75313aac022f6064": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libndp-1.7-5.fc32.aarch64.rpm" + }, + "sha256:6ef55c2aa000adea432676010756cf69e8851587ad17277b21bde362e369bf3e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libargon2-20171227-4.fc32.aarch64.rpm" + }, + "sha256:6f7b4c0efee821ea122401d350274334c6ef2d62dcacbe40942a00b162b6025b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libuser-0.62-24.fc32.aarch64.rpm" + }, + "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm" + }, + "sha256:6fcaddc0fde4e23d6650cd46b3763903c7b693afa69aad52fdf87a8563aa5f84": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssh-server-8.2p1-2.fc32.aarch64.rpm" + }, + "sha256:7149be5bd74792181003b872a9bc636157f4b795b12374c0857fb7271f2567ac": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libseccomp-2.4.2-3.fc32.aarch64.rpm" + }, + "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm" + }, + "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm" + }, + "sha256:7417889b8455ba87230fd5a987fe160d86de8250b87d7ae9bbcba90c32053172": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre2-10.34-9.fc32.aarch64.rpm" + }, + "sha256:7684be07a8e054660705f8d6b1522d9a829be6614293096dc7b871682e445709": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kmod-libs-27-1.fc32.aarch64.rpm" + }, + "sha256:77297d07807ddcb85bad6fd788c6f1692af47d00ad27305f3e2217e34e81f538": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pigz-2.4-6.fc32.aarch64.rpm" + }, + "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:78fb24703a4bafd4eb4ae0e065abf9111a127774ac74b1dc3a25d385c0dae1a0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/NetworkManager-libnm-1.22.10-1.fc32.aarch64.rpm" + }, + "sha256:79410f2d954c0a380a0b67bc965982ac1645c0365060cf8ba106db74b0b339f4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kbd-2.2.0-1.fc32.aarch64.rpm" + }, + "sha256:7967ddee97af6d0f83cfd3226f8e187edac2823ec1e4cef53b54415d759bffa9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/plymouth-0.9.4-14.20200325gite31c81f.fc32.aarch64.rpm" + }, + "sha256:79defc84763baec2190da8941221abfa002d6f6c9e8c3486e2c492389fca2a57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.aarch64.rpm" + }, + "sha256:7bd78f630f6ed96cd08942330f4dad8bfb8d2d7961262ee942411e501a1aefdd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cpio-2.13-4.fc32.aarch64.rpm" + }, + "sha256:7bd98aa2d554f06ab525320ebf628a6e002011462e71a47337676a2c99de5aec": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libssh-0.9.3-2.fc32.aarch64.rpm" + }, + "sha256:7bfb33bfa3c3a952c54cb61b7f7c7047c1fd91e8e334f53f54faea6f34e6c0bb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdb-5.3.28-40.fc32.aarch64.rpm" + }, + "sha256:7c38b938c3d35cfee1ad11d5d09c3c6a4f208b065a25b2a3556006f04f2608b9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iproute-5.5.0-1.fc32.aarch64.rpm" + }, + "sha256:7cac868a4b1ac9c380192a31a45a314613af3f958aaf2b778642667dc73bc182": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsecret-0.20.2-2.fc32.aarch64.rpm" + }, + "sha256:7d5d62696fc69bb890912be71c05e92496129f198838cb56d349a8fc700a85a6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.aarch64.rpm" + }, + "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm" + }, + "sha256:7f667fb609062e966720bf1bb1fa97a91ca245925c68e36d2770caba57aa4db2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.aarch64.rpm" + }, + "sha256:7fe5838c895cd1158a6ae2afb3794e79e393d6701330e1109592e6b45f4bd876": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.aarch64.rpm" + }, + "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:81b6181b947d50e0a1ea681298417e552421d6714900d07a34dc25899e5c9f60": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-configobj-5.0.6-20.fc32.noarch.rpm" + }, + "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/geolite2-city-20191217-2.fc32.noarch.rpm" + }, + "sha256:82bd171ac3f9a08c44e8144297a4dd9cd2567a916065a57eb656330e2b4e007f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdhash-0.5.0-44.fc32.aarch64.rpm" + }, + "sha256:82d2eaad75cf45da9773298344dcbbaebb4da5b67526a6c43bc67d3f84d98616": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-setools-4.3.0-1.fc32.aarch64.rpm" + }, + "sha256:831fcc64c103f60608b08f4f47c2b7b5b43571cef7576b9e549e6ae001434da5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtextstyle-0.20.1-4.fc32.aarch64.rpm" + }, + "sha256:836a45edfd4e2cda0b6bac254b2e6225aad36f9bae0f96f2fe7da42896db0dae": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsigsegv-2.11-10.fc32.aarch64.rpm" + }, + "sha256:84313c8f10f91d10e4f734c3a605b0a771d2faa72bf43deeed60a4cf3606a0da": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libselinux-3.0-3.fc32.aarch64.rpm" + }, + "sha256:844ee747d24d934104398be60747b407d19c8106ead11b06fe92fcc62bd765fc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-cffi-1.14.0-1.fc32.aarch64.rpm" + }, + "sha256:857330a729697c1b6e8d86550391f1abf4db87d5ffeffeb5f00065fa8be85cbd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-3.8.2-2.fc32.aarch64.rpm" + }, + "sha256:85dc7962af97e86a655b8ec5d5276e511f50b1d4abe624f4d8cb0d784007e342": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.aarch64.rpm" + }, + "sha256:86959d2fd51c4d52fa5fcdf91c226ffdece5960299c15f29adc2a5c0bf05397b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-libs-1.12.16-4.fc32.aarch64.rpm" + }, + "sha256:876c2450443ab68948b045721202ca193077876b67c2e85f9dd427452ef0c4d5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/findutils-4.7.0-3.fc32.aarch64.rpm" + }, + "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fonts-filesystem-2.0.3-1.fc32.noarch.rpm" + }, + "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/langpacks-core-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:8961e2f35093845b7498c03f1a9776f7c49f7d9d057f56b0774f470b8e8179ff": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/coreutils-8.32-3.fc32.1.aarch64.rpm" + }, + "sha256:8b20ec83c7ff085d0f27c7af0a87dc49bacdf65d52b61119819ea14862eff91c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iputils-20190515-5.fc32.aarch64.rpm" + }, + "sha256:8b30ff554cd68040f0a4a0759c502e1c1fccad2df64d2ee61145ae0f7bd668ad": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/nftables-0.9.3-2.fc32.aarch64.rpm" + }, + "sha256:8c545e3282deed08d36bb138f1ba15d02dfd1066f46f45582e24b6dc5b07cb6b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-libelf-0.179-1.fc32.aarch64.rpm" + }, + "sha256:8d08e12adb541773aa8073a1aa6b02fbbd8539fe3597a60ac934732930cd5981": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/coreutils-common-8.32-3.fc32.1.aarch64.rpm" + }, + "sha256:8db16495c82aeba17b61896e6414f2ce212088370e88cf73b8999bf2317c015c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/net-tools-2.0-0.56.20160912git.fc32.aarch64.rpm" + }, + "sha256:8e768615a238b08e3fd0857f53e7acf5c5c4e3736dc03824179429a4d848de61": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kpartx-0.8.2-3.fc32.aarch64.rpm" + }, + "sha256:8ee8c4bbf024b998ffb77a6b4194a2306ac21c5a6fcf70c8c81a0fbf38f7c7fc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-firewall-0.8.2-2.fc32.noarch.rpm" + }, + "sha256:8f4be33cb040f081bb1f863b92e94ac7838af743cb5a0ce9d8c8ec9a611f71a6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/popt-1.16-19.fc32.aarch64.rpm" + }, + "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dejavu-sans-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:91ab783e9eb00d5baba65989c86c3d742033bd2306ff7adb0b78185f28d2ca86": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.aarch64.rpm" + }, + "sha256:91cd21ca1f5b881a78e9c0a6dd3cdad7401f7216a1ab3acbe9337d8e3e054a5e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libselinux-utils-3.0-3.fc32.aarch64.rpm" + }, + "sha256:91e35b3750f5029be019542a4143cf00de68559b9ab6ae6df2c8f7ea6e60acd9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/tss2-1331-4.fc32.aarch64.rpm" + }, + "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm" + }, + "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-distro-1.4.0-5.fc32.noarch.rpm" + }, + "sha256:93c5fe6589243bff8f4d6934d82616a4cce0f30d071c513cc56f8e53bfc19d17": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcom_err-1.45.5-3.fc32.aarch64.rpm" + }, + "sha256:94d02790ff430efebbfc12ca2c2029c66e1691b70baf7cf45159fb8464d38e56": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mpfr-4.0.2-3.fc32.aarch64.rpm" + }, + "sha256:95581bd0421b0fddf94b046e0bf8f13d3ce3d797acd5292d87127ed9e9505d80": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libbrotli-1.0.7-10.fc32.aarch64.rpm" + }, + "sha256:961983f7fa13bb9818d1f4b54809f6b92a5998e5a8200306084d0922546c556a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxcrypt-compat-4.4.16-1.fc32.aarch64.rpm" + }, + "sha256:96f3fbcfb91ae41de7e514fe0b619aab870ea4d5f53544c0fd215284cb0b68e2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.aarch64.rpm" + }, + "sha256:96ff29e784025e76bfde72abc89ccb520cb75087f8c44cd747d5d3ebc1df78db": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grubby-8.40-40.fc32.aarch64.rpm" + }, + "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm" + }, + "sha256:9738af51bf206850f6611306bed20542ed32a1701188611caab0b6896e4ffb37": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pam-1.3.1-24.fc32.aarch64.rpm" + }, + "sha256:98d58695f22a613ff6ffcb2b738b4127be7b72e5d56f7d0dbd3c999f189ba323": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libacl-2.2.53-5.fc32.aarch64.rpm" + }, + "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm" + }, + "sha256:9baa05a69943b0c6274403276f45817ab56193de62b5b64205b4fd35951e0895": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-pam-245.4-1.fc32.aarch64.rpm" + }, + "sha256:9c8ec2364045411b95cfb3995d2189f0082832af7bf7280ec1cdf7bfee1afe05": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/deltarpm-3.6.2-5.fc32.aarch64.rpm" + }, + "sha256:9d1baa8d8cdd02711e1724b08de678f2bda92807a6ae0e9d1b6c2443e2810ffd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpipeline-1.5.2-2.fc32.aarch64.rpm" + }, + "sha256:9db3ade981c564c361eed9068cd35acac93c1b1db54b6fb2a74070ce68141cff": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.aarch64.rpm" + }, + "sha256:a01d61d802834e2e6789548f707877827fb394c90097705af9c391e6bfcd6c24": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/krb5-libs-1.18-1.fc32.aarch64.rpm" + }, + "sha256:a0260a37707734c6f97885687a6ad5967c23cb0c693668bf1402e6ee5d4abe1e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.aarch64.rpm" + }, + "sha256:a05c8fb554ed38050b59d10f587ac70cf341c1f38b02ffe8a8433f7fc16efd68": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/keyutils-libs-1.6-4.fc32.aarch64.rpm" + }, + "sha256:a0b87b2dc3c5f536e94d6a4f3563a621dfbc067a62c3d1fe69bdb70c3cecec57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pycparser-2.19-2.fc32.noarch.rpm" + }, + "sha256:a0ec936c91f5f69951d08a6cdf03406ee7365bc3417d3426bb6b4db855c45dda": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.aarch64.rpm" + }, + "sha256:a107b3d3790a5bcfdc28f6f4718969039b103a681a2647f3cbcb82cf92e97acb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pyserial-3.4-7.fc32.noarch.rpm" + }, + "sha256:a12bd9183ce051f7c483506540f7682206a9cbd27b34cb7734be6583bc5d11db": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dosfstools-4.1-10.fc32.aarch64.rpm" + }, + "sha256:a16c32dda1845c89cb7822ab839e5f48b222b3c168f82455f7f54a1a7863ffea": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dracut-050-26.git20200316.fc32.aarch64.rpm" + }, + "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-release-common-32-1.noarch.rpm" + }, + "sha256:a2fcc535573ade5656cdb6968eb13dd68380540b5f25a0eca3947676dc5f11d6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-markupsafe-1.1.1-5.fc32.aarch64.rpm" + }, + "sha256:a30386b14f04905c1e78944f9b36d81ac83b7de1301c353d7e90b33f4a8c5e93": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/efivar-libs-37-7.fc32.aarch64.rpm" + }, + "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm" + }, + "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm" + }, + "sha256:a3775cb3bc81bb5444e26695a62b1bd2eb48a91d7bc3a361d763c185cb817de1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre-8.44-1.fc32.aarch64.rpm" + }, + "sha256:a47d4bfb9dd589c97bb530afb3988cbfaf7336a89207e4b74fd9ab596812c97f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grub2-tools-2.04-12.fc32.aarch64.rpm" + }, + "sha256:a499f61c75ef2179b2da62647b64b716fec1af2f15653876a27e57c284921baf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.aarch64.rpm" + }, + "sha256:a580e36566f6ffceef809e49fc4c7f9b1418a16123d4d49079c8423b6a337e67": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pinentry-1.1.0-7.fc32.aarch64.rpm" + }, + "sha256:a5c841dda3df90e810cfd87c42211a26dc0745f9bae341b6bfc6b08114e48ed5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libbasicobjects-0.1.1-44.fc32.aarch64.rpm" + }, + "sha256:a6c26dd0ba8fc6a15e845f72f90e89b62f7344d7793896e707e610286b5e4541": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/trousers-lib-0.3.13-13.fc31.aarch64.rpm" + }, + "sha256:a718bc2a857bde398de2375efae50dac568217f547b272d7cbe0a1655ec0d961": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/os-prober-1.77-4.fc32.aarch64.rpm" + }, + "sha256:a7394cd1b11a1b25efaab43a30b1d9687683884babc162f43e29fdee4f00bda8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/lz4-libs-1.9.1-2.fc32.aarch64.rpm" + }, + "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm" + }, + "sha256:a830bb13938bedaf5cc91b13ab78e2cf9172b06727b7e9e1bec2cddce8dd9e2d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libss-1.45.5-3.fc32.aarch64.rpm" + }, + "sha256:a92c4a583aacd37beb069c996307bd782f809c78fd1fb802de25a53efbaff8f8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/shared-mime-info-1.15-3.fc32.aarch64.rpm" + }, + "sha256:a973f92acb0afe61087a69d13a532c18a39dd60b3ba4826b38350f2c6b27e417": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.aarch64.rpm" + }, + "sha256:a9e2dcc8d57bff7ec3424eb79de77ebe91a956dd39faa691b2ab4babd1683233": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libfido2-1.3.1-1.fc32.aarch64.rpm" + }, + "sha256:aa667df83abb5a675444e898fb7554527b2967f3bdc793e6b4b56d794f74b9ef": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.aarch64.rpm" + }, + "sha256:aa7fd8a1313c0e384353da5e054dad62205b4f0e112a4a45eb414eb357513e04": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/file-libs-5.38-2.fc32.aarch64.rpm" + }, + "sha256:ab86efda86a5d4cb8b1fa979bcc37aeb5601616d48a4a9d34b4f4ceb4e553747": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnfsidmap-2.4.3-0.fc32.aarch64.rpm" + }, + "sha256:acafdf6b20fea5974da004b77eced20b00c59a908edcef9c4c4e60815fdbf8f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-unbound-1.9.6-2.fc32.aarch64.rpm" + }, + "sha256:aced65470e04746b0db1d414ef8fc5e84f8f7cc9becfd187a92d130f21c854c4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-gobject-base-3.36.0-2.fc32.aarch64.rpm" + }, + "sha256:ad6f711174c59ffb9116d792068cc8fd0585b46eb5d9bf18a3c9937727b9a379": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/checkpolicy-3.0-3.fc32.aarch64.rpm" + }, + "sha256:ad874e09de00dbdb887eb6a94351869950ead7f6409dfa191d1443d3bb9dd255": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libevent-2.1.8-8.fc32.aarch64.rpm" + }, + "sha256:ae08e152061808ccc334cc611d8ea4d18c05daa6b68731e255a533d0572594ae": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/linux-atm-libs-2.5.1-26.fc32.aarch64.rpm" + }, + "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm" + }, + "sha256:af826bfb93a53a0bbb0209f721fc7d15c0b5200c3f81c93ef9620cc640e90b77": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtdb-1.4.3-2.fc32.aarch64.rpm" + }, + "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm" + }, + "sha256:afba861f69234f4cb4040085a4868c7424666a4356d0e2002e16b0afb75ec0d2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/p11-kit-0.23.20-1.fc32.aarch64.rpm" + }, + "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/y/yum-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:b1fc5d1d8d62d0f883ff483b818e7759f9afd4a1fa15421af56e1a615535fe63": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/ipcalc-0.4.0-2.fc32.aarch64.rpm" + }, + "sha256:b3657ad1419ab11e07608c7bc4da75a91162b2398d66febfc061795bc1587036": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sssd-common-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:b743aafa82f3326f8f2e6d5464ae7fa57fabab3ad791099eaf2d151b43208b42": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/efi-filesystem-4-4.fc32.noarch.rpm" + }, + "sha256:b78889f3a2ac801456c643fd5603017383221aa33eac381e4f74b9a13fbf3830": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsemanage-3.0-3.fc32.aarch64.rpm" + }, + "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm" + }, + "sha256:b867eeba06e6fc9084c227d8b3ea54f1815cb1833a29babf114fa1167aa17f2d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.aarch64.rpm" + }, + "sha256:b8ecd7fa0e7e072828e374dfb0d61bb8eecca7c190f3661050cee5e3fc8854b4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/firewalld-0.8.2-2.fc32.noarch.rpm" + }, + "sha256:b9904d16c86c28074bfdba38a3a740b61ad5de50a9945d550021027130fcfd41": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.aarch64.rpm" + }, + "sha256:ba170325441d8341085944301c006bd4b82b4813d0aedf3a9990fbe0500deba8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/q/qemu-img-4.2.0-7.fc32.aarch64.rpm" + }, + "sha256:bbf9571bf10df55a90e73b372da33b6ac54fad5778cea58064b7b57dcbb17180": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-cryptography-2.8-3.fc32.aarch64.rpm" + }, + "sha256:bc2c4637779e037072ebbd00215afbb33ce05706c7851cfde4cc0637c63f75f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/shim-aa64-15-8.aarch64.rpm" + }, + "sha256:bcb07748c8688c788ec69c3a33c0abd1bb3a496b9aa09b5729265670bc7ba0eb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-attrs-19.3.0-2.fc32.noarch.rpm" + }, + "sha256:bcb0cd53344744f9c8d11041eb76fc5b304f78c791846521bbe105e78f2bd0f8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/procps-ng-3.3.15-7.fc32.aarch64.rpm" + }, + "sha256:c030084d188fc99359cc088bd77d2ee6578e717f1cf2d067b8967c6cbe863c6e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openldap-2.4.47-4.fc32.aarch64.rpm" + }, + "sha256:c0ad832521885f97d08c043350b72f4fade0bbe995f81da8a18370a932bf5aee": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmodulemd-2.9.1-1.fc32.aarch64.rpm" + }, + "sha256:c25bb676affa185a2c4671859484bd24f62d2ec9c4d67584590bb14dd0396775": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.aarch64.rpm" + }, + "sha256:c47b5f407d000d200f595e7f5026e72cae8b43416c17e5bb943551a9ddc5422e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-libs-0.179-1.fc32.aarch64.rpm" + }, + "sha256:c494a613443f49b6cca4845f9c3410a1267f609c503a81a9a26a272443708fee": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libverto-0.3.0-9.fc32.aarch64.rpm" + }, + "sha256:c4cc17e543253b9b37fa982f49ae1c5f411ff563120e5c4225556a7584994a37": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fipscheck-lib-1.5.0-8.fc32.aarch64.rpm" + }, + "sha256:c748420c4d7407a95f840416a80c468d8304e529f93b40a45081a49fd7a29232": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmetalink-0.1.3-10.fc32.aarch64.rpm" + }, + "sha256:c75bf533b09243daeca728129a6fe10fca47d0c150fd43b5dab7b4993584536f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.aarch64.rpm" + }, + "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:c8516d06666d3f0728c9cbfc1b7f0a88f8884e5cd7bd3bad6721c7c9000f1f8f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/less-551-3.fc32.aarch64.rpm" + }, + "sha256:c93df175a0a4989aaaeb170406d8ff13a2cd93a5fc52ad33468245fea2044a86": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pytz-2019.3-2.fc32.noarch.rpm" + }, + "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rootfiles-8.1-27.fc32.noarch.rpm" + }, + "sha256:ca85fd192aa25f8fc630c28c8858cf3065a2b32f3ba3a373ffd3ea49b0f0813c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.aarch64.rpm" + }, + "sha256:caa6fe00c6e322e961c4b7a02ba4a10cc939b84121e09d07d331adcdc2ae1af2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libattr-2.4.48-8.fc32.aarch64.rpm" + }, + "sha256:caf76966e150fbe796865d2d18479b080657cb0bada9283048a4586cf034d4e6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.aarch64.rpm" + }, + "sha256:cb0c64cc81e0b384bbc9d27ffcb2a655b13c91a799aad8972264aed1767926a3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-slip-dbus-0.6.4-19.fc32.noarch.rpm" + }, + "sha256:cb8b8225bc9f2a16377a41977de4e6f6d651cbe738035b93234d65e8dd80fa0f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kernel-modules-5.6.6-300.fc32.aarch64.rpm" + }, + "sha256:cc2019e304ecdfa3a245de005342c8d617d1da0d834e510849764fb38b929655": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mokutil-0.3.0-15.fc32.aarch64.rpm" + }, + "sha256:cc30c04cfc6be2239727608174e90ac766cb7c77cdd1b70c4be619cb2df42a52": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcurl-7.69.1-1.fc32.aarch64.rpm" + }, + "sha256:cc531264ae00fbc4e465b6b47c8f3772edee80346b92cee1fae88d8cdb9dcdcf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sssd-client-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:ccf07a3682a1038a6224b3da69e20f201584ed1c879539cedb57e184aa14429a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sed-4.5-5.fc32.aarch64.rpm" + }, + "sha256:ce2085aef5dd78dd1fcf025f9cc65cfb4e796448a1d233408205c1ada466865f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gobject-introspection-1.64.1-1.fc32.aarch64.rpm" + }, + "sha256:cebb9ee0271c7199cb057c9a722b17c6fe59a0b0ec7f438ef6e0c35d4b5f330e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnupg2-2.2.19-1.fc32.aarch64.rpm" + }, + "sha256:cfc944e77ac28ff62a93736d901a5a312fec5efd17f5e7800deafb4b801ae00d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/plymouth-core-libs-0.9.4-14.20200325gite31c81f.fc32.aarch64.rpm" + }, + "sha256:cffbab9f6052ee2c7b8bcc369a411e319174de094fb94eaf71555ce485049a74": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgpg-error-1.36-3.fc32.aarch64.rpm" + }, + "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm" + }, + "sha256:d0bc781a80be1d1fe204ec6b26255240261d55f6e24a28343572f2221a00533e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jwt-1.7.1-7.fc32.noarch.rpm" + }, + "sha256:d1b286af57220764054969fc63065ead51d9bb969d320ada6a72c3b24c9e0ca3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fipscheck-1.5.0-8.fc32.aarch64.rpm" + }, + "sha256:d1d1b3fafa2ea83870641411a9ae955be74887689516ae3cc54ada0a38b06873": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-nftables-0.9.3-2.fc32.aarch64.rpm" + }, + "sha256:d2abba1a0523bd9df5073900593ab13ec2ed2e391440be4d883314fa154370f8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-slip-0.6.4-19.fc32.noarch.rpm" + }, + "sha256:d2bd77606d1c91208be05edce6ea04c24fa2efc880569eecb958afde1a7fb17e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-4.15.1-2.fc32.1.aarch64.rpm" + }, + "sha256:d3281a3ef4de5e13ef1a76effd68169c0965467039059141609a078520f3db04": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.aarch64.rpm" + }, + "sha256:d4fd722ee0ff5da4114b91964e430e4e45c1a428739f1e5be5db7854e5c85f11": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libyaml-0.2.2-3.fc32.aarch64.rpm" + }, + "sha256:d552c735d48fa647509605f524863eab28b69b9fc8d7c62a67479c3af0878024": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/w/which-2.21-19.fc32.aarch64.rpm" + }, + "sha256:d611f0c4252c4c4b893850807748e62cf4d17d72d544ef2744091df3206d8178": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-requests-2.22.0-8.fc32.noarch.rpm" + }, + "sha256:d6ad55479187ecd7368002e67e83d44d24995fd1a1b6790c1c6c9fb1fd5e52a6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcollection-0.7.0-44.fc32.aarch64.rpm" + }, + "sha256:d891183e3f802f3e2b6ca77f1ea528d2aec52be8ef38ae2cb93c11f82ecff321": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libini_config-1.3.1-44.fc32.aarch64.rpm" + }, + "sha256:d91a87c9d6dd3924d2fe7992f88f2542cce3451b7ff2576eb4d65d9ca1a7620f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/curl-7.69.1-1.fc32.aarch64.rpm" + }, + "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dateutil-2.8.0-8.fc32.noarch.rpm" + }, + "sha256:d96c93f959443e974001c4b423f3da556187e5b3fedf1232951f480c67cb4568": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dracut-config-generic-050-26.git20200316.fc32.aarch64.rpm" + }, + "sha256:da4e2994692c9ed4d0760528139f6437bcb0d54862fac1a4afa55e329393d254": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/j/jansson-2.12-5.fc32.aarch64.rpm" + }, + "sha256:db514e9d99e58e08e698083e1ca969f9fc98ae27ee9b63aa8d2133bd95a7002e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/lmdb-libs-0.9.24-1.fc32.aarch64.rpm" + }, + "sha256:dbc1d91408e0e115e1c084f4c28d2d15f07cfc8b6c6d766192b65a28407422e7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpcap-1.9.1-3.fc32.aarch64.rpm" + }, + "sha256:debd948a7e454f07dd7ab8ed79984158b98ce333d77be948e4393bb87c518ab8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/shadow-utils-4.8.1-2.fc32.aarch64.rpm" + }, + "sha256:ded5407f20b7a1de7b8aee85786d8b70eec61d0385e95e90d95849612ef13dea": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/h/hostname-3.23-2.fc32.aarch64.rpm" + }, + "sha256:df7184fef93e9f8f535d78349605595a812511db5e6dee26cbee15569a055422": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/z/zlib-1.2.11-21.fc32.aarch64.rpm" + }, + "sha256:e2eecb13c57728ce4c8e04ad8747ca51fe086a58bd55c0d3d29cf9683d0d09ad": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcomps-0.1.14-4.fc32.aarch64.rpm" + }, + "sha256:e30482032783ab59417bfaf8394be42d2e2e779a580979bd87f15bd0880df858": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-1.1.1d-7.fc32.aarch64.rpm" + }, + "sha256:e38207cecd64ed0fe5002828ff0aa05dbbb1f5418350babd4c1cfa3d1e3261fe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kernel-core-5.6.6-300.fc32.aarch64.rpm" + }, + "sha256:e4056437576c76b1b4fe8d8b98cce6f006194d74cbc0a30058cf29aab6b9307f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmaxminddb-1.3.2-2.fc32.aarch64.rpm" + }, + "sha256:e76aea00d64d100bafcea1672ce65f8bfd47bdf7e0dc7bf859fc0c6ec29d5823": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.aarch64.rpm" + }, + "sha256:e7b49bf8e3183d7604c7f7f51dfbc1e03bc599ddd7eac459a86f4ffdc8432533": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libaio-0.3.111-7.fc32.aarch64.rpm" + }, + "sha256:e7b9fd73c260cd22d3a36823530d4f623ea0e16844b900a5677c769afa76341c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-chardet-3.0.4-15.fc32.noarch.rpm" + }, + "sha256:e883b70720adcf3c09b13d1ff2d3425be2d0a296be18cabf25dd5f9ce79cf8d3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iptables-nft-1.8.4-7.fc32.aarch64.rpm" + }, + "sha256:e8941c0abaa3ce527b14bc19013088149be9c5aacceb788718293cdef9132d18": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/acl-2.2.53-5.fc32.aarch64.rpm" + }, + "sha256:e96e4caf6c98faa5fb61bd3b13ee7afa0d7510d3176fe3d3cbf485847ce985fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgcrypt-1.8.5-3.fc32.aarch64.rpm" + }, + "sha256:ea25c1482716623eabc1b151d318bc1499e2448480f46e6113e1e4667150393c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/ipset-7.6-1.fc32.aarch64.rpm" + }, + "sha256:ea44ae1c951d3d4b30ff2a2d898c041ce9072acc94d6ea1e0e305c45e802019f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtasn1-4.16.0-1.fc32.aarch64.rpm" + }, + "sha256:ea775b1806d30c2d076f685977c0efbe57ff2afcf10a3c8f8f1a250ecb9ef5b6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libref_array-0.1.5-44.fc32.aarch64.rpm" + }, + "sha256:eb98f6ee22b110395790e83648339d36f74068883d3d6a7a8a3ecb9cbf55bc60": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_nss_idmap-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm" + }, + "sha256:ed19ff9b81a5a72262a95b8ff52c867efc43aa50d28171328afd4791ee3daef8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_autofs-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:eded265cff5d22b89a955570eba030643d6730dd5987c2efed3110ef74cd0254": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libsemanage-3.0-3.fc32.aarch64.rpm" + }, + "sha256:ef9bff2d88851209d35f9824e02fc431fba5e5347752ea1c197a57c0c45ad401": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.aarch64.rpm" + }, + "sha256:f0143760628def255de0b7e1aba6f7880705329703f7357425868483ba8f43e7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pyrsistent-0.15.7-2.fc32.aarch64.rpm" + }, + "sha256:f148b87e6bf64242dad504997f730c11706e5c0da52b036b8faebb5807d252d9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grep-3.3-4.fc32.aarch64.rpm" + }, + "sha256:f26fae2e85396d00d7935b21154ba7a0fa591495c59973abd59455e181bf84d1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iptables-libs-1.8.4-7.fc32.aarch64.rpm" + }, + "sha256:f50ad72a9259205b2381b94fa674f53860e63c9e3cd1fb013653dab2bc7203a6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-langpack-en-2.31-2.fc32.aarch64.rpm" + }, + "sha256:f6203a41ed91197bb770a38a101d977f0f56de86ccc5a71cee9c0e198f26bcbc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-ply-3.11-7.fc32.noarch.rpm" + }, + "sha256:f71860520fb965ae5a41a43a68903aac712bea01ceac568774ac9ce6006d1f31": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/audit-3.0-0.19.20191104git1c2f876.fc32.aarch64.rpm" + }, + "sha256:f8f3ec395d7d96c45cbd370f2376fe6266397ce091ab8fdaf884256ae8ae159f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/filesystem-3.14-2.fc32.aarch64.rpm" + }, + "sha256:fa791a4328b4c41b7190d862de921605f266a64abee03b2ea2e8d2b644be307f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pysocks-1.7.1-4.fc32.noarch.rpm" + }, + "sha256:faca2dc4a45d1bd365d9364ea59f361854f3379ef6f13e9fa0a85368a0621f45": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpsl-0.21.0-4.fc32.aarch64.rpm" + }, + "sha256:fc6b083682762fb891b50ed6e9f684ac54a2a05a78e24078ff66d4636ae89588": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xfsprogs-5.4.0-3.fc32.aarch64.rpm" + }, + "sha256:fdb1ed306445c6a37fb7182def5983a66501c5eb8be5f1b08c38db5f3613561f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-all-langpacks-2.31-2.fc32.aarch64.rpm" + }, + "sha256:fdef1b445deff2b85a564372284dc8f49cf8376ee60cd26938484e8312dab650": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/c-ares-1.15.0-5.fc32.aarch64.rpm" + }, + "sha256:fe06eff5ac0e3e538775aad2cb0f801af491476e9cb508caa9107f4a5f913e52": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsepol-3.0-3.fc32.aarch64.rpm" + }, + "sha256:fe512ddf337568ca1e4d1c0cce66dda461ca570587c7beb1e1be3960540e394f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kmod-27-1.fc32.aarch64.rpm" + }, + "sha256:fe7ee39b0779c467c5d8a20daff4911e1967523e6fc748179e77584168e18bde": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-6.1-15.20191109.fc32.aarch64.rpm" + }, + "sha256:fe8b11652adfe4c64d96b442d5b31da207dfdf4a551c491c0934498537c8dfc5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libblkid-2.35.1-7.fc32.aarch64.rpm" + }, + "sha256:fe96e7fe3da0db38b8b8850c9dedd50c1358309fee24c774bc64ddee62bb11be": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-gpg-1.13.1-6.fc32.aarch64.rpm" + }, + "sha256:ff135143da781c30919f03000c4409cc09d38cd65cd7b01f3c540617ce0f69db": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcroco-0.6.13-3.fc32.aarch64.rpm" + }, + "sha256:ff6540076bd7247ca2c1c8beb8979adb5eaf27877125c7f5cc187dc10913048f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-udev-245.4-1.fc32.aarch64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:e8941c0abaa3ce527b14bc19013088149be9c5aacceb788718293cdef9132d18", + "check_gpg": true + }, + { + "checksum": "sha256:10d828cc7803aca9b59e3bb9b52e0af45a2828250f1eab7f0fc08cdb981f191d", + "check_gpg": true + }, + { + "checksum": "sha256:63cef561bcaadd5b9a1bf93b968f284ca76c3ad2b90b5c439b62456c0517164f", + "check_gpg": true + }, + { + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "checksum": "sha256:5b304375adf911d056b36dc35f22af027d9283efbaebcb8231f052aef3982f05", + "check_gpg": true + }, + { + "checksum": "sha256:caf76966e150fbe796865d2d18479b080657cb0bada9283048a4586cf034d4e6", + "check_gpg": true + }, + { + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "checksum": "sha256:8961e2f35093845b7498c03f1a9776f7c49f7d9d057f56b0774f470b8e8179ff", + "check_gpg": true + }, + { + "checksum": "sha256:8d08e12adb541773aa8073a1aa6b02fbbd8539fe3597a60ac934732930cd5981", + "check_gpg": true + }, + { + "checksum": "sha256:081d831528796c3e5c47b89c363a0f530bf77e3e2e0098cd586d814bea9a12f0", + "check_gpg": true + }, + { + "checksum": "sha256:ca85fd192aa25f8fc630c28c8858cf3065a2b32f3ba3a373ffd3ea49b0f0813c", + "check_gpg": true + }, + { + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "checksum": "sha256:96f3fbcfb91ae41de7e514fe0b619aab870ea4d5f53544c0fd215284cb0b68e2", + "check_gpg": true + }, + { + "checksum": "sha256:d91a87c9d6dd3924d2fe7992f88f2542cce3451b7ff2576eb4d65d9ca1a7620f", + "check_gpg": true + }, + { + "checksum": "sha256:b9904d16c86c28074bfdba38a3a740b61ad5de50a9945d550021027130fcfd41", + "check_gpg": true + }, + { + "checksum": "sha256:067d98bda561e94f9f0bba60f691dc8ba4610434603f26cf6f4fa22677da8465", + "check_gpg": true + }, + { + "checksum": "sha256:60c9a00d8c528ad5806a5fec20ed3ffb8ad195e9eb9bf5294893e8425be1fa9f", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "checksum": "sha256:86959d2fd51c4d52fa5fcdf91c226ffdece5960299c15f29adc2a5c0bf05397b", + "check_gpg": true + }, + { + "checksum": "sha256:9c8ec2364045411b95cfb3995d2189f0082832af7bf7280ec1cdf7bfee1afe05", + "check_gpg": true + }, + { + "checksum": "sha256:18c188f63504b8cf3bc88d95de458a1eb216bca268378a6839618ef7468dc635", + "check_gpg": true + }, + { + "checksum": "sha256:5d52cffee2d5360db8cf7e6ed4b19a68de4a0ae55f42ed279d4fdb3a70bb72f3", + "check_gpg": true + }, + { + "checksum": "sha256:13290758e03b977aed5e23b7ba9a01157b6802fd78baf75bc1fc184864e9e31e", + "check_gpg": true + }, + { + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "checksum": "sha256:a12bd9183ce051f7c483506540f7682206a9cbd27b34cb7734be6583bc5d11db", + "check_gpg": true + }, + { + "checksum": "sha256:d3281a3ef4de5e13ef1a76effd68169c0965467039059141609a078520f3db04", + "check_gpg": true + }, + { + "checksum": "sha256:7f667fb609062e966720bf1bb1fa97a91ca245925c68e36d2770caba57aa4db2", + "check_gpg": true + }, + { + "checksum": "sha256:a499f61c75ef2179b2da62647b64b716fec1af2f15653876a27e57c284921baf", + "check_gpg": true + }, + { + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "checksum": "sha256:8c545e3282deed08d36bb138f1ba15d02dfd1066f46f45582e24b6dc5b07cb6b", + "check_gpg": true + }, + { + "checksum": "sha256:c47b5f407d000d200f595e7f5026e72cae8b43416c17e5bb943551a9ddc5422e", + "check_gpg": true + }, + { + "checksum": "sha256:4940f6e26a93fe638667adb6e12969fe915b3a7b0cfeb58877dd6d7bccf46c1a", + "check_gpg": true + }, + { + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "checksum": "sha256:aa7fd8a1313c0e384353da5e054dad62205b4f0e112a4a45eb414eb357513e04", + "check_gpg": true + }, + { + "checksum": "sha256:f8f3ec395d7d96c45cbd370f2376fe6266397ce091ab8fdaf884256ae8ae159f", + "check_gpg": true + }, + { + "checksum": "sha256:5cc385c1ca3df73a1dd7865159628a6b0ce186f8679c6bc95dda0b4791e4a9fc", + "check_gpg": true + }, + { + "checksum": "sha256:62bafab5a0f37fdec29ce38bc1d635e0a81ab165061faaf5d83f5246ca4e2db0", + "check_gpg": true + }, + { + "checksum": "sha256:aa667df83abb5a675444e898fb7554527b2967f3bdc793e6b4b56d794f74b9ef", + "check_gpg": true + }, + { + "checksum": "sha256:6837a13f3c643b5da33bd694efc4e95f54b5cc5e15de61884644378367d55804", + "check_gpg": true + }, + { + "checksum": "sha256:36a3ae11acb7916e932ff704a4527b126bb39f9e849072b16242719c8de11119", + "check_gpg": true + }, + { + "checksum": "sha256:fdb1ed306445c6a37fb7182def5983a66501c5eb8be5f1b08c38db5f3613561f", + "check_gpg": true + }, + { + "checksum": "sha256:2590d214d4986fa95653e7f83e67a81dbf822b621994a9ab867e7c377bc479c2", + "check_gpg": true + }, + { + "checksum": "sha256:5b7a135c35562e64344cc9f1ca37a5239649152cc055e14e7bf9bf84843eccab", + "check_gpg": true + }, + { + "checksum": "sha256:cebb9ee0271c7199cb057c9a722b17c6fe59a0b0ec7f438ef6e0c35d4b5f330e", + "check_gpg": true + }, + { + "checksum": "sha256:11004aa2821bdebfca77ab93e7ed405e0e93eb685850f5fb57b01762692ce155", + "check_gpg": true + }, + { + "checksum": "sha256:532a58ae361b9c0bc147037fb96f338684b949bd4071b19bac322b8967c32a01", + "check_gpg": true + }, + { + "checksum": "sha256:11204917b909836508acff0df2499301d3b2f8f0a1c0e341de904ac9fb4bbedf", + "check_gpg": true + }, + { + "checksum": "sha256:f148b87e6bf64242dad504997f730c11706e5c0da52b036b8faebb5807d252d9", + "check_gpg": true + }, + { + "checksum": "sha256:50b7b06e94253cb4eacc1bfb68f8343b73cbd6dae427f8ad81367f7b8ebf58a8", + "check_gpg": true + }, + { + "checksum": "sha256:c25bb676affa185a2c4671859484bd24f62d2ec9c4d67584590bb14dd0396775", + "check_gpg": true + }, + { + "checksum": "sha256:f26fae2e85396d00d7935b21154ba7a0fa591495c59973abd59455e181bf84d1", + "check_gpg": true + }, + { + "checksum": "sha256:06d6f5d9909beb1cc6731dc6d5d86b9e7885285848bad8ef16079ad3e8824e0b", + "check_gpg": true + }, + { + "checksum": "sha256:a05c8fb554ed38050b59d10f587ac70cf341c1f38b02ffe8a8433f7fc16efd68", + "check_gpg": true + }, + { + "checksum": "sha256:7684be07a8e054660705f8d6b1522d9a829be6614293096dc7b871682e445709", + "check_gpg": true + }, + { + "checksum": "sha256:a01d61d802834e2e6789548f707877827fb394c90097705af9c391e6bfcd6c24", + "check_gpg": true + }, + { + "checksum": "sha256:98d58695f22a613ff6ffcb2b738b4127be7b72e5d56f7d0dbd3c999f189ba323", + "check_gpg": true + }, + { + "checksum": "sha256:e7b49bf8e3183d7604c7f7f51dfbc1e03bc599ddd7eac459a86f4ffdc8432533", + "check_gpg": true + }, + { + "checksum": "sha256:340a82cfe6a9d18933b99a4e001d7e54f7ab225fe5e7fb1a7f51cb1c675c7050", + "check_gpg": true + }, + { + "checksum": "sha256:6ef55c2aa000adea432676010756cf69e8851587ad17277b21bde362e369bf3e", + "check_gpg": true + }, + { + "checksum": "sha256:1c982f31133def3baea707e0d1f0fe4a014d2c8c5f20ac8d69362cff4f26d5e9", + "check_gpg": true + }, + { + "checksum": "sha256:caa6fe00c6e322e961c4b7a02ba4a10cc939b84121e09d07d331adcdc2ae1af2", + "check_gpg": true + }, + { + "checksum": "sha256:fe8b11652adfe4c64d96b442d5b31da207dfdf4a551c491c0934498537c8dfc5", + "check_gpg": true + }, + { + "checksum": "sha256:95581bd0421b0fddf94b046e0bf8f13d3ce3d797acd5292d87127ed9e9505d80", + "check_gpg": true + }, + { + "checksum": "sha256:0a2eadd29cc53df942d3f0acc016b281efa4347fc2e9de1d7b8b61d9c5f0d894", + "check_gpg": true + }, + { + "checksum": "sha256:5875ba2d9b9ced8b2d2faa880b5f1811a89e17defe946ccf99b201790a0d2520", + "check_gpg": true + }, + { + "checksum": "sha256:93c5fe6589243bff8f4d6934d82616a4cce0f30d071c513cc56f8e53bfc19d17", + "check_gpg": true + }, + { + "checksum": "sha256:e2eecb13c57728ce4c8e04ad8747ca51fe086a58bd55c0d3d29cf9683d0d09ad", + "check_gpg": true + }, + { + "checksum": "sha256:cc30c04cfc6be2239727608174e90ac766cb7c77cdd1b70c4be619cb2df42a52", + "check_gpg": true + }, + { + "checksum": "sha256:7bfb33bfa3c3a952c54cb61b7f7c7047c1fd91e8e334f53f54faea6f34e6c0bb", + "check_gpg": true + }, + { + "checksum": "sha256:435530a0b9a086018694034ce48e9589348fc66389d884977b400f2f74814ac8", + "check_gpg": true + }, + { + "checksum": "sha256:62afc19040e8fbf7ac7946f02d67cdd19086658c3d8713a6c120482fd769537e", + "check_gpg": true + }, + { + "checksum": "sha256:ad874e09de00dbdb887eb6a94351869950ead7f6409dfa191d1443d3bb9dd255", + "check_gpg": true + }, + { + "checksum": "sha256:58988a2b7213098503b56d5388eba1bf2a01b9ff027961acb1e9f55c47d237ad", + "check_gpg": true + }, + { + "checksum": "sha256:291df16c0ae66fa5685cd033c84ae92765be4f4e17ce4936e47dc602ac6ff93e", + "check_gpg": true + }, + { + "checksum": "sha256:28892ae62cd1b4dadded523be8cb5f9e0fddeaa864919ee4b0dfad3bba8fd06f", + "check_gpg": true + }, + { + "checksum": "sha256:e96e4caf6c98faa5fb61bd3b13ee7afa0d7510d3176fe3d3cbf485847ce985fd", + "check_gpg": true + }, + { + "checksum": "sha256:09a9dd8c3ae4fe9a9817c71c4b2af35f2d7e1dbf2c9f4659028ce69a5d2f2d02", + "check_gpg": true + }, + { + "checksum": "sha256:cffbab9f6052ee2c7b8bcc369a411e319174de094fb94eaf71555ce485049a74", + "check_gpg": true + }, + { + "checksum": "sha256:500c4abc34ff58e6f06c7194034b2d68b618c5e6afa89b551ab74ef226e1880a", + "check_gpg": true + }, + { + "checksum": "sha256:1ee4f732b1b4b237d7301219fc5c52b63c9ab9e77db746612852fef5610f69b7", + "check_gpg": true + }, + { + "checksum": "sha256:c748420c4d7407a95f840416a80c468d8304e529f93b40a45081a49fd7a29232", + "check_gpg": true + }, + { + "checksum": "sha256:2356581880df7b8275896b18de24e432a362ee159fc3127f92476ffe8d0432fd", + "check_gpg": true + }, + { + "checksum": "sha256:c0ad832521885f97d08c043350b72f4fade0bbe995f81da8a18370a932bf5aee", + "check_gpg": true + }, + { + "checksum": "sha256:1e533f7f64169288e90b3851e509cf1aedf4da0fe986288da53516b2b77ac77d", + "check_gpg": true + }, + { + "checksum": "sha256:400c91d4d6d1125ec891c16ea72aa4123fc4c96e02f8668a8ae6dbc27113d408", + "check_gpg": true + }, + { + "checksum": "sha256:a0260a37707734c6f97885687a6ad5967c23cb0c693668bf1402e6ee5d4abe1e", + "check_gpg": true + }, + { + "checksum": "sha256:17f5c9a25bf0f952f6defa6a857e938bfc1f72c69217f666a537bf8f1daff5f8", + "check_gpg": true + }, + { + "checksum": "sha256:4139803076f102e2224b81b4f1da3f6d066b89e272201d2720557763f9acfcd5", + "check_gpg": true + }, + { + "checksum": "sha256:dbc1d91408e0e115e1c084f4c28d2d15f07cfc8b6c6d766192b65a28407422e7", + "check_gpg": true + }, + { + "checksum": "sha256:faca2dc4a45d1bd365d9364ea59f361854f3379ef6f13e9fa0a85368a0621f45", + "check_gpg": true + }, + { + "checksum": "sha256:1a096ed78df5a9339c4b3c15372275a884a1124b048ffcfbdb768db881e47ab2", + "check_gpg": true + }, + { + "checksum": "sha256:56bc7a11331fe199a45bc23f348deff8cd5e1ee02c617b6ed429d61ba537fc8b", + "check_gpg": true + }, + { + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "checksum": "sha256:7149be5bd74792181003b872a9bc636157f4b795b12374c0857fb7271f2567ac", + "check_gpg": true + }, + { + "checksum": "sha256:7cac868a4b1ac9c380192a31a45a314613af3f958aaf2b778642667dc73bc182", + "check_gpg": true + }, + { + "checksum": "sha256:6028f86f132faee662e97075270f68e8125fd339c8689a2b661facd25c3b829b", + "check_gpg": true + }, + { + "checksum": "sha256:91cd21ca1f5b881a78e9c0a6dd3cdad7401f7216a1ab3acbe9337d8e3e054a5e", + "check_gpg": true + }, + { + "checksum": "sha256:b78889f3a2ac801456c643fd5603017383221aa33eac381e4f74b9a13fbf3830", + "check_gpg": true + }, + { + "checksum": "sha256:fe06eff5ac0e3e538775aad2cb0f801af491476e9cb508caa9107f4a5f913e52", + "check_gpg": true + }, + { + "checksum": "sha256:836a45edfd4e2cda0b6bac254b2e6225aad36f9bae0f96f2fe7da42896db0dae", + "check_gpg": true + }, + { + "checksum": "sha256:0042a3d3b19152d0a16ee321cbe99208a2f4ebd009515c1f6f962a1d5f9cde26", + "check_gpg": true + }, + { + "checksum": "sha256:15a8a718cb6f629474fec7756b4701430e14ff94aad6cf6fe20f3eb7174a7783", + "check_gpg": true + }, + { + "checksum": "sha256:a830bb13938bedaf5cc91b13ab78e2cf9172b06727b7e9e1bec2cddce8dd9e2d", + "check_gpg": true + }, + { + "checksum": "sha256:7bd98aa2d554f06ab525320ebf628a6e002011462e71a47337676a2c99de5aec", + "check_gpg": true + }, + { + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "checksum": "sha256:3ea53f635b4f559b2bdb0e58d54dbfddc126b18abe23b46b94aecbf7c0d5132c", + "check_gpg": true + }, + { + "checksum": "sha256:ea44ae1c951d3d4b30ff2a2d898c041ce9072acc94d6ea1e0e305c45e802019f", + "check_gpg": true + }, + { + "checksum": "sha256:ef9bff2d88851209d35f9824e02fc431fba5e5347752ea1c197a57c0c45ad401", + "check_gpg": true + }, + { + "checksum": "sha256:2d7ad38e86f5109c732a32bf9bea612c4c674aba6ad4cca2d211d826edc7fd6f", + "check_gpg": true + }, + { + "checksum": "sha256:50d91ca18b6cdc9395424b852d2828d1b75e2af318932a2442376d2a10819f6a", + "check_gpg": true + }, + { + "checksum": "sha256:22954219a63638d7418204d818c01a0e3c914e2b2eb970f2e4638dcf5a7a5634", + "check_gpg": true + }, + { + "checksum": "sha256:2bc82e132696d9daa4eef545ff3352d6eb588b9a1b9584e515d15a7c3d6471df", + "check_gpg": true + }, + { + "checksum": "sha256:c494a613443f49b6cca4845f9c3410a1267f609c503a81a9a26a272443708fee", + "check_gpg": true + }, + { + "checksum": "sha256:64b64bab720df9dd7fd37ebf80a07795a95ac11e640eda3209b6517dcd7133e5", + "check_gpg": true + }, + { + "checksum": "sha256:9db3ade981c564c361eed9068cd35acac93c1b1db54b6fb2a74070ce68141cff", + "check_gpg": true + }, + { + "checksum": "sha256:33788835331bed7f75e5cd2126d8d75511211175c9ac6d93824baec1a546a28d", + "check_gpg": true + }, + { + "checksum": "sha256:d4fd722ee0ff5da4114b91964e430e4e45c1a428739f1e5be5db7854e5c85f11", + "check_gpg": true + }, + { + "checksum": "sha256:2c4d03577e8661920a7b64fcc68735b795288744f1b188512a96960143030474", + "check_gpg": true + }, + { + "checksum": "sha256:1befc4be3c3c72b3210e54f96f4334f268eaecdd3b77af7cadea0ef31f0e2ca9", + "check_gpg": true + }, + { + "checksum": "sha256:a7394cd1b11a1b25efaab43a30b1d9687683884babc162f43e29fdee4f00bda8", + "check_gpg": true + }, + { + "checksum": "sha256:45e2c1c76a0a0b6e1164c457307250a54a7de5905992b4351a84183c2e9f2633", + "check_gpg": true + }, + { + "checksum": "sha256:94d02790ff430efebbfc12ca2c2029c66e1691b70baf7cf45159fb8464d38e56", + "check_gpg": true + }, + { + "checksum": "sha256:fe7ee39b0779c467c5d8a20daff4911e1967523e6fc748179e77584168e18bde", + "check_gpg": true + }, + { + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "checksum": "sha256:a973f92acb0afe61087a69d13a532c18a39dd60b3ba4826b38350f2c6b27e417", + "check_gpg": true + }, + { + "checksum": "sha256:15b2402e11402a6cb494bf7ea31ebf10bf1adb0759aab417e63d05916e56aa45", + "check_gpg": true + }, + { + "checksum": "sha256:5b1cb1251cf7f65c50d9e3fcc11901fef5132dc177cce68a50918da481bb7629", + "check_gpg": true + }, + { + "checksum": "sha256:c030084d188fc99359cc088bd77d2ee6578e717f1cf2d067b8967c6cbe863c6e", + "check_gpg": true + }, + { + "checksum": "sha256:e30482032783ab59417bfaf8394be42d2e2e779a580979bd87f15bd0880df858", + "check_gpg": true + }, + { + "checksum": "sha256:0178be1e5d6da8053061d29013d8fda8445d37eac908afbf4a2ca92faf950f2c", + "check_gpg": true + }, + { + "checksum": "sha256:85dc7962af97e86a655b8ec5d5276e511f50b1d4abe624f4d8cb0d784007e342", + "check_gpg": true + }, + { + "checksum": "sha256:afba861f69234f4cb4040085a4868c7424666a4356d0e2002e16b0afb75ec0d2", + "check_gpg": true + }, + { + "checksum": "sha256:b867eeba06e6fc9084c227d8b3ea54f1815cb1833a29babf114fa1167aa17f2d", + "check_gpg": true + }, + { + "checksum": "sha256:9738af51bf206850f6611306bed20542ed32a1701188611caab0b6896e4ffb37", + "check_gpg": true + }, + { + "checksum": "sha256:a3775cb3bc81bb5444e26695a62b1bd2eb48a91d7bc3a361d763c185cb817de1", + "check_gpg": true + }, + { + "checksum": "sha256:7417889b8455ba87230fd5a987fe160d86de8250b87d7ae9bbcba90c32053172", + "check_gpg": true + }, + { + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "checksum": "sha256:a580e36566f6ffceef809e49fc4c7f9b1418a16123d4d49079c8423b6a337e67", + "check_gpg": true + }, + { + "checksum": "sha256:29bcc2f3f85ca7bdc22178af3e16743f55353bd9f25fb4c748d8c9f7117fe56f", + "check_gpg": true + }, + { + "checksum": "sha256:8f4be33cb040f081bb1f863b92e94ac7838af743cb5a0ce9d8c8ec9a611f71a6", + "check_gpg": true + }, + { + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "checksum": "sha256:857330a729697c1b6e8d86550391f1abf4db87d5ffeffeb5f00065fa8be85cbd", + "check_gpg": true + }, + { + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "checksum": "sha256:fe96e7fe3da0db38b8b8850c9dedd50c1358309fee24c774bc64ddee62bb11be", + "check_gpg": true + }, + { + "checksum": "sha256:79defc84763baec2190da8941221abfa002d6f6c9e8c3486e2c492389fca2a57", + "check_gpg": true + }, + { + "checksum": "sha256:e76aea00d64d100bafcea1672ce65f8bfd47bdf7e0dc7bf859fc0c6ec29d5823", + "check_gpg": true + }, + { + "checksum": "sha256:023d3d7be30607410a2357b50b8ef3f94a07baf2842bfba0421f803600ec605f", + "check_gpg": true + }, + { + "checksum": "sha256:32a00991ec85f0bf2a336e00033a0e70b0da963eb42d81bbad18a7a11f41d4eb", + "check_gpg": true + }, + { + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "checksum": "sha256:34efde201252afe93ec3af61af30c6d32cfbe5ecbdcecaf4667666f12482757d", + "check_gpg": true + }, + { + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "checksum": "sha256:acafdf6b20fea5974da004b77eced20b00c59a908edcef9c4c4e60815fdbf8f3", + "check_gpg": true + }, + { + "checksum": "sha256:ba170325441d8341085944301c006bd4b82b4813d0aedf3a9990fbe0500deba8", + "check_gpg": true + }, + { + "checksum": "sha256:3d6ec574fe2c612bcc45395f7ee87c68f45016f005c6d7aeee6b37897f41b8d2", + "check_gpg": true + }, + { + "checksum": "sha256:6007c88c459315a5e2ce354086bd0372a56e15cdd0dc14e6e889ab859f8d8365", + "check_gpg": true + }, + { + "checksum": "sha256:d2bd77606d1c91208be05edce6ea04c24fa2efc880569eecb958afde1a7fb17e", + "check_gpg": true + }, + { + "checksum": "sha256:0c30a7fd9f69ad808183afa0814e363689ff63e7a82856a790e5fa111c031b96", + "check_gpg": true + }, + { + "checksum": "sha256:7fe5838c895cd1158a6ae2afb3794e79e393d6701330e1109592e6b45f4bd876", + "check_gpg": true + }, + { + "checksum": "sha256:91ab783e9eb00d5baba65989c86c3d742033bd2306ff7adb0b78185f28d2ca86", + "check_gpg": true + }, + { + "checksum": "sha256:7d5d62696fc69bb890912be71c05e92496129f198838cb56d349a8fc700a85a6", + "check_gpg": true + }, + { + "checksum": "sha256:33ca43cf0714aef344a70be4cfa42322694cc975a2eeee0bf31325dbca7f2842", + "check_gpg": true + }, + { + "checksum": "sha256:ccf07a3682a1038a6224b3da69e20f201584ed1c879539cedb57e184aa14429a", + "check_gpg": true + }, + { + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "checksum": "sha256:debd948a7e454f07dd7ab8ed79984158b98ce333d77be948e4393bb87c518ab8", + "check_gpg": true + }, + { + "checksum": "sha256:a92c4a583aacd37beb069c996307bd782f809c78fd1fb802de25a53efbaff8f8", + "check_gpg": true + }, + { + "checksum": "sha256:c75bf533b09243daeca728129a6fe10fca47d0c150fd43b5dab7b4993584536f", + "check_gpg": true + }, + { + "checksum": "sha256:41c6a8ea4240f2fa6cea0333cc6d5f59731ac843398eb457c182e90af367783c", + "check_gpg": true + }, + { + "checksum": "sha256:52aa6e698e60cd360d5b9473fd1ebcc7e238e2125449bfdcc41b3e0fe13ae645", + "check_gpg": true + }, + { + "checksum": "sha256:9baa05a69943b0c6274403276f45817ab56193de62b5b64205b4fd35951e0895", + "check_gpg": true + }, + { + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "checksum": "sha256:2f849fdf4588b1b4e86a008b6a82f30ff2ec1db1ae2bd21e067c6f910e4cb237", + "check_gpg": true + }, + { + "checksum": "sha256:3242e0ce48f95d7a271125cf1222b5af09e20fe85194623d95336e1c678bdee8", + "check_gpg": true + }, + { + "checksum": "sha256:a6c26dd0ba8fc6a15e845f72f90e89b62f7344d7793896e707e610286b5e4541", + "check_gpg": true + }, + { + "checksum": "sha256:91e35b3750f5029be019542a4143cf00de68559b9ab6ae6df2c8f7ea6e60acd9", + "check_gpg": true + }, + { + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "checksum": "sha256:654a9a9997c975998e1cb5d9250cd34b9d9d4d69f43c9282e67ad4d38fa2bcdf", + "check_gpg": true + }, + { + "checksum": "sha256:25e6968493572c680d6f8cad03e591f6e1e0e6ce0d1fbe3648d4b64ba529491d", + "check_gpg": true + }, + { + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "checksum": "sha256:202d761caf4c9d4937c04388a7180d6687a79e8141136be0f7ecc3a54bf80594", + "check_gpg": true + }, + { + "checksum": "sha256:48381163a3f2c524697efc07538f040fde0b69d4e0fdcbe3bcfbc9924dd7d5dd", + "check_gpg": true + }, + { + "checksum": "sha256:0a31a882e4ac33233b36e2c61cc09125a936f54877137d5bb2ddc1ca8a5f9a12", + "check_gpg": true + }, + { + "checksum": "sha256:df7184fef93e9f8f535d78349605595a812511db5e6dee26cbee15569a055422", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts", + "labels": { + "/usr/bin/cp": "system_u:object_r:install_exec_t:s0" + } + } + } + ] + }, + "runner": "org.osbuild.fedora32" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:61e37e1df1e427525e6dd873d04fe2afc5e6825f2788a33b941e532e5a27ed7e", + "check_gpg": true + }, + { + "checksum": "sha256:78fb24703a4bafd4eb4ae0e065abf9111a127774ac74b1dc3a25d385c0dae1a0", + "check_gpg": true + }, + { + "checksum": "sha256:e8941c0abaa3ce527b14bc19013088149be9c5aacceb788718293cdef9132d18", + "check_gpg": true + }, + { + "checksum": "sha256:10d828cc7803aca9b59e3bb9b52e0af45a2828250f1eab7f0fc08cdb981f191d", + "check_gpg": true + }, + { + "checksum": "sha256:f71860520fb965ae5a41a43a68903aac712bea01ceac568774ac9ce6006d1f31", + "check_gpg": true + }, + { + "checksum": "sha256:63cef561bcaadd5b9a1bf93b968f284ca76c3ad2b90b5c439b62456c0517164f", + "check_gpg": true + }, + { + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "checksum": "sha256:5b304375adf911d056b36dc35f22af027d9283efbaebcb8231f052aef3982f05", + "check_gpg": true + }, + { + "checksum": "sha256:caf76966e150fbe796865d2d18479b080657cb0bada9283048a4586cf034d4e6", + "check_gpg": true + }, + { + "checksum": "sha256:fdef1b445deff2b85a564372284dc8f49cf8376ee60cd26938484e8312dab650", + "check_gpg": true + }, + { + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "checksum": "sha256:ad6f711174c59ffb9116d792068cc8fd0585b46eb5d9bf18a3c9937727b9a379", + "check_gpg": true + }, + { + "checksum": "sha256:55a343c96ac98c2bdf7bffdf5edc73f87b482a26b4a1a5e95670343dcec88fb8", + "check_gpg": true + }, + { + "checksum": "sha256:1e1e9900e9d3a2b8eb6684060672526948df2cb9f751e7d72cb4fa5bffe71747", + "check_gpg": true + }, + { + "checksum": "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309", + "check_gpg": true + }, + { + "checksum": "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56", + "check_gpg": true + }, + { + "checksum": "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280", + "check_gpg": true + }, + { + "checksum": "sha256:8961e2f35093845b7498c03f1a9776f7c49f7d9d057f56b0774f470b8e8179ff", + "check_gpg": true + }, + { + "checksum": "sha256:8d08e12adb541773aa8073a1aa6b02fbbd8539fe3597a60ac934732930cd5981", + "check_gpg": true + }, + { + "checksum": "sha256:7bd78f630f6ed96cd08942330f4dad8bfb8d2d7961262ee942411e501a1aefdd", + "check_gpg": true + }, + { + "checksum": "sha256:081d831528796c3e5c47b89c363a0f530bf77e3e2e0098cd586d814bea9a12f0", + "check_gpg": true + }, + { + "checksum": "sha256:ca85fd192aa25f8fc630c28c8858cf3065a2b32f3ba3a373ffd3ea49b0f0813c", + "check_gpg": true + }, + { + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "checksum": "sha256:96f3fbcfb91ae41de7e514fe0b619aab870ea4d5f53544c0fd215284cb0b68e2", + "check_gpg": true + }, + { + "checksum": "sha256:d91a87c9d6dd3924d2fe7992f88f2542cce3451b7ff2576eb4d65d9ca1a7620f", + "check_gpg": true + }, + { + "checksum": "sha256:b9904d16c86c28074bfdba38a3a740b61ad5de50a9945d550021027130fcfd41", + "check_gpg": true + }, + { + "checksum": "sha256:067d98bda561e94f9f0bba60f691dc8ba4610434603f26cf6f4fa22677da8465", + "check_gpg": true + }, + { + "checksum": "sha256:60c9a00d8c528ad5806a5fec20ed3ffb8ad195e9eb9bf5294893e8425be1fa9f", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "checksum": "sha256:86959d2fd51c4d52fa5fcdf91c226ffdece5960299c15f29adc2a5c0bf05397b", + "check_gpg": true + }, + { + "checksum": "sha256:20307d5a1d3fccfe8f64c8ea074c6a751dc36849c7495592989677fd01da9147", + "check_gpg": true + }, + { + "checksum": "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315", + "check_gpg": true + }, + { + "checksum": "sha256:9c8ec2364045411b95cfb3995d2189f0082832af7bf7280ec1cdf7bfee1afe05", + "check_gpg": true + }, + { + "checksum": "sha256:18c188f63504b8cf3bc88d95de458a1eb216bca268378a6839618ef7468dc635", + "check_gpg": true + }, + { + "checksum": "sha256:5d52cffee2d5360db8cf7e6ed4b19a68de4a0ae55f42ed279d4fdb3a70bb72f3", + "check_gpg": true + }, + { + "checksum": "sha256:27a0d9447ef63c95a3182b32606e6de1bd17f2cfc7910a456fa43996db67833f", + "check_gpg": true + }, + { + "checksum": "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013", + "check_gpg": true + }, + { + "checksum": "sha256:13290758e03b977aed5e23b7ba9a01157b6802fd78baf75bc1fc184864e9e31e", + "check_gpg": true + }, + { + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "checksum": "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d", + "check_gpg": true + }, + { + "checksum": "sha256:a16c32dda1845c89cb7822ab839e5f48b222b3c168f82455f7f54a1a7863ffea", + "check_gpg": true + }, + { + "checksum": "sha256:d96c93f959443e974001c4b423f3da556187e5b3fedf1232951f480c67cb4568", + "check_gpg": true + }, + { + "checksum": "sha256:d3281a3ef4de5e13ef1a76effd68169c0965467039059141609a078520f3db04", + "check_gpg": true + }, + { + "checksum": "sha256:7f667fb609062e966720bf1bb1fa97a91ca245925c68e36d2770caba57aa4db2", + "check_gpg": true + }, + { + "checksum": "sha256:b743aafa82f3326f8f2e6d5464ae7fa57fabab3ad791099eaf2d151b43208b42", + "check_gpg": true + }, + { + "checksum": "sha256:04bc54c723bfa9e1b6bb6567e9d8cd3e1ed389fc2be97259b971a8cbfe5f95e4", + "check_gpg": true + }, + { + "checksum": "sha256:a30386b14f04905c1e78944f9b36d81ac83b7de1301c353d7e90b33f4a8c5e93", + "check_gpg": true + }, + { + "checksum": "sha256:a499f61c75ef2179b2da62647b64b716fec1af2f15653876a27e57c284921baf", + "check_gpg": true + }, + { + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "checksum": "sha256:8c545e3282deed08d36bb138f1ba15d02dfd1066f46f45582e24b6dc5b07cb6b", + "check_gpg": true + }, + { + "checksum": "sha256:c47b5f407d000d200f595e7f5026e72cae8b43416c17e5bb943551a9ddc5422e", + "check_gpg": true + }, + { + "checksum": "sha256:4940f6e26a93fe638667adb6e12969fe915b3a7b0cfeb58877dd6d7bccf46c1a", + "check_gpg": true + }, + { + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "checksum": "sha256:0dcc4568055843acf5571553731d57a0d042b6602e6932bc4fe88718597c2fbe", + "check_gpg": true + }, + { + "checksum": "sha256:aa7fd8a1313c0e384353da5e054dad62205b4f0e112a4a45eb414eb357513e04", + "check_gpg": true + }, + { + "checksum": "sha256:f8f3ec395d7d96c45cbd370f2376fe6266397ce091ab8fdaf884256ae8ae159f", + "check_gpg": true + }, + { + "checksum": "sha256:876c2450443ab68948b045721202ca193077876b67c2e85f9dd427452ef0c4d5", + "check_gpg": true + }, + { + "checksum": "sha256:d1b286af57220764054969fc63065ead51d9bb969d320ada6a72c3b24c9e0ca3", + "check_gpg": true + }, + { + "checksum": "sha256:c4cc17e543253b9b37fa982f49ae1c5f411ff563120e5c4225556a7584994a37", + "check_gpg": true + }, + { + "checksum": "sha256:b8ecd7fa0e7e072828e374dfb0d61bb8eecca7c190f3661050cee5e3fc8854b4", + "check_gpg": true + }, + { + "checksum": "sha256:47538b1db9720be4699329a8da32d873187d0c6c22f45252614ac5b8a8312482", + "check_gpg": true + }, + { + "checksum": "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012", + "check_gpg": true + }, + { + "checksum": "sha256:5cc385c1ca3df73a1dd7865159628a6b0ce186f8679c6bc95dda0b4791e4a9fc", + "check_gpg": true + }, + { + "checksum": "sha256:62bafab5a0f37fdec29ce38bc1d635e0a81ab165061faaf5d83f5246ca4e2db0", + "check_gpg": true + }, + { + "checksum": "sha256:aa667df83abb5a675444e898fb7554527b2967f3bdc793e6b4b56d794f74b9ef", + "check_gpg": true + }, + { + "checksum": "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3", + "check_gpg": true + }, + { + "checksum": "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f", + "check_gpg": true + }, + { + "checksum": "sha256:60c3cbbe546fb12db4c7164a51613ea9ae20f7199537cdf5145e828c78544493", + "check_gpg": true + }, + { + "checksum": "sha256:57e1695da46f19db4a851304d57e7ce2409c287a88e9b52af0b76ed2252a4f98", + "check_gpg": true + }, + { + "checksum": "sha256:6837a13f3c643b5da33bd694efc4e95f54b5cc5e15de61884644378367d55804", + "check_gpg": true + }, + { + "checksum": "sha256:36a3ae11acb7916e932ff704a4527b126bb39f9e849072b16242719c8de11119", + "check_gpg": true + }, + { + "checksum": "sha256:2590d214d4986fa95653e7f83e67a81dbf822b621994a9ab867e7c377bc479c2", + "check_gpg": true + }, + { + "checksum": "sha256:f50ad72a9259205b2381b94fa674f53860e63c9e3cd1fb013653dab2bc7203a6", + "check_gpg": true + }, + { + "checksum": "sha256:5b7a135c35562e64344cc9f1ca37a5239649152cc055e14e7bf9bf84843eccab", + "check_gpg": true + }, + { + "checksum": "sha256:cebb9ee0271c7199cb057c9a722b17c6fe59a0b0ec7f438ef6e0c35d4b5f330e", + "check_gpg": true + }, + { + "checksum": "sha256:11004aa2821bdebfca77ab93e7ed405e0e93eb685850f5fb57b01762692ce155", + "check_gpg": true + }, + { + "checksum": "sha256:532a58ae361b9c0bc147037fb96f338684b949bd4071b19bac322b8967c32a01", + "check_gpg": true + }, + { + "checksum": "sha256:ce2085aef5dd78dd1fcf025f9cc65cfb4e796448a1d233408205c1ada466865f", + "check_gpg": true + }, + { + "checksum": "sha256:11204917b909836508acff0df2499301d3b2f8f0a1c0e341de904ac9fb4bbedf", + "check_gpg": true + }, + { + "checksum": "sha256:f148b87e6bf64242dad504997f730c11706e5c0da52b036b8faebb5807d252d9", + "check_gpg": true + }, + { + "checksum": "sha256:174a7c064ba48fdfc61ee5a091ec474dfbdb32a1a602cbe0776937c39e222663", + "check_gpg": true + }, + { + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "checksum": "sha256:6221b210a7778432738994829f6c7e9f047940e53ee42a0e6458b91095b82756", + "check_gpg": true + }, + { + "checksum": "sha256:a47d4bfb9dd589c97bb530afb3988cbfaf7336a89207e4b74fd9ab596812c97f", + "check_gpg": true + }, + { + "checksum": "sha256:a0ec936c91f5f69951d08a6cdf03406ee7365bc3417d3426bb6b4db855c45dda", + "check_gpg": true + }, + { + "checksum": "sha256:96ff29e784025e76bfde72abc89ccb520cb75087f8c44cd747d5d3ebc1df78db", + "check_gpg": true + }, + { + "checksum": "sha256:50b7b06e94253cb4eacc1bfb68f8343b73cbd6dae427f8ad81367f7b8ebf58a8", + "check_gpg": true + }, + { + "checksum": "sha256:ded5407f20b7a1de7b8aee85786d8b70eec61d0385e95e90d95849612ef13dea", + "check_gpg": true + }, + { + "checksum": "sha256:c25bb676affa185a2c4671859484bd24f62d2ec9c4d67584590bb14dd0396775", + "check_gpg": true + }, + { + "checksum": "sha256:3377ae652fbbd22f2c61815bfd1bb58185b5f57c194d9b0cce3056ab11522779", + "check_gpg": true + }, + { + "checksum": "sha256:b1fc5d1d8d62d0f883ff483b818e7759f9afd4a1fa15421af56e1a615535fe63", + "check_gpg": true + }, + { + "checksum": "sha256:7c38b938c3d35cfee1ad11d5d09c3c6a4f208b065a25b2a3556006f04f2608b9", + "check_gpg": true + }, + { + "checksum": "sha256:4674c9871d3a70a005fc880d6ce1c0e56418192085dae8b5eb861003ef9a2c1b", + "check_gpg": true + }, + { + "checksum": "sha256:ea25c1482716623eabc1b151d318bc1499e2448480f46e6113e1e4667150393c", + "check_gpg": true + }, + { + "checksum": "sha256:03c7e6ea76b2aa8e7f8c8c8039412f618790ea39aeb3c1ffab205ba6b3bee54d", + "check_gpg": true + }, + { + "checksum": "sha256:f26fae2e85396d00d7935b21154ba7a0fa591495c59973abd59455e181bf84d1", + "check_gpg": true + }, + { + "checksum": "sha256:e883b70720adcf3c09b13d1ff2d3425be2d0a296be18cabf25dd5f9ce79cf8d3", + "check_gpg": true + }, + { + "checksum": "sha256:8b20ec83c7ff085d0f27c7af0a87dc49bacdf65d52b61119819ea14862eff91c", + "check_gpg": true + }, + { + "checksum": "sha256:da4e2994692c9ed4d0760528139f6437bcb0d54862fac1a4afa55e329393d254", + "check_gpg": true + }, + { + "checksum": "sha256:06d6f5d9909beb1cc6731dc6d5d86b9e7885285848bad8ef16079ad3e8824e0b", + "check_gpg": true + }, + { + "checksum": "sha256:79410f2d954c0a380a0b67bc965982ac1645c0365060cf8ba106db74b0b339f4", + "check_gpg": true + }, + { + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "checksum": "sha256:14005ca38ce35a0c2e9d24b37991059d213f9b3277895eaa2a5b45e242cf8dc8", + "check_gpg": true + }, + { + "checksum": "sha256:e38207cecd64ed0fe5002828ff0aa05dbbb1f5418350babd4c1cfa3d1e3261fe", + "check_gpg": true + }, + { + "checksum": "sha256:cb8b8225bc9f2a16377a41977de4e6f6d651cbe738035b93234d65e8dd80fa0f", + "check_gpg": true + }, + { + "checksum": "sha256:a05c8fb554ed38050b59d10f587ac70cf341c1f38b02ffe8a8433f7fc16efd68", + "check_gpg": true + }, + { + "checksum": "sha256:fe512ddf337568ca1e4d1c0cce66dda461ca570587c7beb1e1be3960540e394f", + "check_gpg": true + }, + { + "checksum": "sha256:7684be07a8e054660705f8d6b1522d9a829be6614293096dc7b871682e445709", + "check_gpg": true + }, + { + "checksum": "sha256:8e768615a238b08e3fd0857f53e7acf5c5c4e3736dc03824179429a4d848de61", + "check_gpg": true + }, + { + "checksum": "sha256:a01d61d802834e2e6789548f707877827fb394c90097705af9c391e6bfcd6c24", + "check_gpg": true + }, + { + "checksum": "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0", + "check_gpg": true + }, + { + "checksum": "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389", + "check_gpg": true + }, + { + "checksum": "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca", + "check_gpg": true + }, + { + "checksum": "sha256:c8516d06666d3f0728c9cbfc1b7f0a88f8884e5cd7bd3bad6721c7c9000f1f8f", + "check_gpg": true + }, + { + "checksum": "sha256:98d58695f22a613ff6ffcb2b738b4127be7b72e5d56f7d0dbd3c999f189ba323", + "check_gpg": true + }, + { + "checksum": "sha256:340a82cfe6a9d18933b99a4e001d7e54f7ab225fe5e7fb1a7f51cb1c675c7050", + "check_gpg": true + }, + { + "checksum": "sha256:6ef55c2aa000adea432676010756cf69e8851587ad17277b21bde362e369bf3e", + "check_gpg": true + }, + { + "checksum": "sha256:1c982f31133def3baea707e0d1f0fe4a014d2c8c5f20ac8d69362cff4f26d5e9", + "check_gpg": true + }, + { + "checksum": "sha256:caa6fe00c6e322e961c4b7a02ba4a10cc939b84121e09d07d331adcdc2ae1af2", + "check_gpg": true + }, + { + "checksum": "sha256:a5c841dda3df90e810cfd87c42211a26dc0745f9bae341b6bfc6b08114e48ed5", + "check_gpg": true + }, + { + "checksum": "sha256:fe8b11652adfe4c64d96b442d5b31da207dfdf4a551c491c0934498537c8dfc5", + "check_gpg": true + }, + { + "checksum": "sha256:95581bd0421b0fddf94b046e0bf8f13d3ce3d797acd5292d87127ed9e9505d80", + "check_gpg": true + }, + { + "checksum": "sha256:0a2eadd29cc53df942d3f0acc016b281efa4347fc2e9de1d7b8b61d9c5f0d894", + "check_gpg": true + }, + { + "checksum": "sha256:5875ba2d9b9ced8b2d2faa880b5f1811a89e17defe946ccf99b201790a0d2520", + "check_gpg": true + }, + { + "checksum": "sha256:1ddaeb7c602005e75c0ea2603a533d692a94915a297b71e68a8e27327456c3d0", + "check_gpg": true + }, + { + "checksum": "sha256:d6ad55479187ecd7368002e67e83d44d24995fd1a1b6790c1c6c9fb1fd5e52a6", + "check_gpg": true + }, + { + "checksum": "sha256:93c5fe6589243bff8f4d6934d82616a4cce0f30d071c513cc56f8e53bfc19d17", + "check_gpg": true + }, + { + "checksum": "sha256:e2eecb13c57728ce4c8e04ad8747ca51fe086a58bd55c0d3d29cf9683d0d09ad", + "check_gpg": true + }, + { + "checksum": "sha256:ff135143da781c30919f03000c4409cc09d38cd65cd7b01f3c540617ce0f69db", + "check_gpg": true + }, + { + "checksum": "sha256:cc30c04cfc6be2239727608174e90ac766cb7c77cdd1b70c4be619cb2df42a52", + "check_gpg": true + }, + { + "checksum": "sha256:7bfb33bfa3c3a952c54cb61b7f7c7047c1fd91e8e334f53f54faea6f34e6c0bb", + "check_gpg": true + }, + { + "checksum": "sha256:435530a0b9a086018694034ce48e9589348fc66389d884977b400f2f74814ac8", + "check_gpg": true + }, + { + "checksum": "sha256:82bd171ac3f9a08c44e8144297a4dd9cd2567a916065a57eb656330e2b4e007f", + "check_gpg": true + }, + { + "checksum": "sha256:62afc19040e8fbf7ac7946f02d67cdd19086658c3d8713a6c120482fd769537e", + "check_gpg": true + }, + { + "checksum": "sha256:3e25d33bea0d8de847f817b428fe92a6b02376634c7a6f0672bc668fa769869d", + "check_gpg": true + }, + { + "checksum": "sha256:ad874e09de00dbdb887eb6a94351869950ead7f6409dfa191d1443d3bb9dd255", + "check_gpg": true + }, + { + "checksum": "sha256:58988a2b7213098503b56d5388eba1bf2a01b9ff027961acb1e9f55c47d237ad", + "check_gpg": true + }, + { + "checksum": "sha256:291df16c0ae66fa5685cd033c84ae92765be4f4e17ce4936e47dc602ac6ff93e", + "check_gpg": true + }, + { + "checksum": "sha256:a9e2dcc8d57bff7ec3424eb79de77ebe91a956dd39faa691b2ab4babd1683233", + "check_gpg": true + }, + { + "checksum": "sha256:28892ae62cd1b4dadded523be8cb5f9e0fddeaa864919ee4b0dfad3bba8fd06f", + "check_gpg": true + }, + { + "checksum": "sha256:e96e4caf6c98faa5fb61bd3b13ee7afa0d7510d3176fe3d3cbf485847ce985fd", + "check_gpg": true + }, + { + "checksum": "sha256:09a9dd8c3ae4fe9a9817c71c4b2af35f2d7e1dbf2c9f4659028ce69a5d2f2d02", + "check_gpg": true + }, + { + "checksum": "sha256:cffbab9f6052ee2c7b8bcc369a411e319174de094fb94eaf71555ce485049a74", + "check_gpg": true + }, + { + "checksum": "sha256:500c4abc34ff58e6f06c7194034b2d68b618c5e6afa89b551ab74ef226e1880a", + "check_gpg": true + }, + { + "checksum": "sha256:d891183e3f802f3e2b6ca77f1ea528d2aec52be8ef38ae2cb93c11f82ecff321", + "check_gpg": true + }, + { + "checksum": "sha256:5adad0edfcf9c4415734d11a35a5c14cbf53eb32827572dd6af670fadcad7f78", + "check_gpg": true + }, + { + "checksum": "sha256:2f117f22ec79fed75752c69b7e1c70582bad93b55fb4a5b0dc2bca978bafce85", + "check_gpg": true + }, + { + "checksum": "sha256:1ee4f732b1b4b237d7301219fc5c52b63c9ab9e77db746612852fef5610f69b7", + "check_gpg": true + }, + { + "checksum": "sha256:3c29cc12a25791c83c040def2df8f107b161ecc0cbf3965cad82f38a451c7963", + "check_gpg": true + }, + { + "checksum": "sha256:e4056437576c76b1b4fe8d8b98cce6f006194d74cbc0a30058cf29aab6b9307f", + "check_gpg": true + }, + { + "checksum": "sha256:c748420c4d7407a95f840416a80c468d8304e529f93b40a45081a49fd7a29232", + "check_gpg": true + }, + { + "checksum": "sha256:2356581880df7b8275896b18de24e432a362ee159fc3127f92476ffe8d0432fd", + "check_gpg": true + }, + { + "checksum": "sha256:c0ad832521885f97d08c043350b72f4fade0bbe995f81da8a18370a932bf5aee", + "check_gpg": true + }, + { + "checksum": "sha256:1e533f7f64169288e90b3851e509cf1aedf4da0fe986288da53516b2b77ac77d", + "check_gpg": true + }, + { + "checksum": "sha256:6bc574a7f67dc28909f84c05bfc3dfeeac04c088f809032d75313aac022f6064", + "check_gpg": true + }, + { + "checksum": "sha256:400c91d4d6d1125ec891c16ea72aa4123fc4c96e02f8668a8ae6dbc27113d408", + "check_gpg": true + }, + { + "checksum": "sha256:a0260a37707734c6f97885687a6ad5967c23cb0c693668bf1402e6ee5d4abe1e", + "check_gpg": true + }, + { + "checksum": "sha256:ab86efda86a5d4cb8b1fa979bcc37aeb5601616d48a4a9d34b4f4ceb4e553747", + "check_gpg": true + }, + { + "checksum": "sha256:07cf4ae85cb34a38b22eff66e1fd996b32a5beda0c60644b06ecdff33c224ce9", + "check_gpg": true + }, + { + "checksum": "sha256:17f5c9a25bf0f952f6defa6a857e938bfc1f72c69217f666a537bf8f1daff5f8", + "check_gpg": true + }, + { + "checksum": "sha256:231cefc11eb5a9ac8f23bbd294cef0bf3a690040df3048e063f8a269f2db75f8", + "check_gpg": true + }, + { + "checksum": "sha256:4139803076f102e2224b81b4f1da3f6d066b89e272201d2720557763f9acfcd5", + "check_gpg": true + }, + { + "checksum": "sha256:2dcee99ce05f5844438f827cf0cd1578f7863efb31c204bbc441cd2265ad9a7d", + "check_gpg": true + }, + { + "checksum": "sha256:dbc1d91408e0e115e1c084f4c28d2d15f07cfc8b6c6d766192b65a28407422e7", + "check_gpg": true + }, + { + "checksum": "sha256:9d1baa8d8cdd02711e1724b08de678f2bda92807a6ae0e9d1b6c2443e2810ffd", + "check_gpg": true + }, + { + "checksum": "sha256:faca2dc4a45d1bd365d9364ea59f361854f3379ef6f13e9fa0a85368a0621f45", + "check_gpg": true + }, + { + "checksum": "sha256:1a096ed78df5a9339c4b3c15372275a884a1124b048ffcfbdb768db881e47ab2", + "check_gpg": true + }, + { + "checksum": "sha256:ea775b1806d30c2d076f685977c0efbe57ff2afcf10a3c8f8f1a250ecb9ef5b6", + "check_gpg": true + }, + { + "checksum": "sha256:56bc7a11331fe199a45bc23f348deff8cd5e1ee02c617b6ed429d61ba537fc8b", + "check_gpg": true + }, + { + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "checksum": "sha256:7149be5bd74792181003b872a9bc636157f4b795b12374c0857fb7271f2567ac", + "check_gpg": true + }, + { + "checksum": "sha256:7cac868a4b1ac9c380192a31a45a314613af3f958aaf2b778642667dc73bc182", + "check_gpg": true + }, + { + "checksum": "sha256:6028f86f132faee662e97075270f68e8125fd339c8689a2b661facd25c3b829b", + "check_gpg": true + }, + { + "checksum": "sha256:91cd21ca1f5b881a78e9c0a6dd3cdad7401f7216a1ab3acbe9337d8e3e054a5e", + "check_gpg": true + }, + { + "checksum": "sha256:b78889f3a2ac801456c643fd5603017383221aa33eac381e4f74b9a13fbf3830", + "check_gpg": true + }, + { + "checksum": "sha256:fe06eff5ac0e3e538775aad2cb0f801af491476e9cb508caa9107f4a5f913e52", + "check_gpg": true + }, + { + "checksum": "sha256:836a45edfd4e2cda0b6bac254b2e6225aad36f9bae0f96f2fe7da42896db0dae", + "check_gpg": true + }, + { + "checksum": "sha256:0042a3d3b19152d0a16ee321cbe99208a2f4ebd009515c1f6f962a1d5f9cde26", + "check_gpg": true + }, + { + "checksum": "sha256:15a8a718cb6f629474fec7756b4701430e14ff94aad6cf6fe20f3eb7174a7783", + "check_gpg": true + }, + { + "checksum": "sha256:a830bb13938bedaf5cc91b13ab78e2cf9172b06727b7e9e1bec2cddce8dd9e2d", + "check_gpg": true + }, + { + "checksum": "sha256:7bd98aa2d554f06ab525320ebf628a6e002011462e71a47337676a2c99de5aec", + "check_gpg": true + }, + { + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "checksum": "sha256:ed19ff9b81a5a72262a95b8ff52c867efc43aa50d28171328afd4791ee3daef8", + "check_gpg": true + }, + { + "checksum": "sha256:0175f5d1834c1cb4a1f44c9ae20960fa674f26add0b88f903407abf2f3d22f82", + "check_gpg": true + }, + { + "checksum": "sha256:05121688770a80889f1e1d0594a5b14d6ac30cc6fe4d431e3aa829f2290ea973", + "check_gpg": true + }, + { + "checksum": "sha256:eb98f6ee22b110395790e83648339d36f74068883d3d6a7a8a3ecb9cbf55bc60", + "check_gpg": true + }, + { + "checksum": "sha256:1fab76e36bbad6727634f2a8ce6e722c0e6ca814969948ffd6ce7250bc75e7f3", + "check_gpg": true + }, + { + "checksum": "sha256:3ea53f635b4f559b2bdb0e58d54dbfddc126b18abe23b46b94aecbf7c0d5132c", + "check_gpg": true + }, + { + "checksum": "sha256:07b37612b8e0f09885ad653f3dbd2ff95a65bfd8b21c69d1cc20a4f3dbc0ef32", + "check_gpg": true + }, + { + "checksum": "sha256:ea44ae1c951d3d4b30ff2a2d898c041ce9072acc94d6ea1e0e305c45e802019f", + "check_gpg": true + }, + { + "checksum": "sha256:af826bfb93a53a0bbb0209f721fc7d15c0b5200c3f81c93ef9620cc640e90b77", + "check_gpg": true + }, + { + "checksum": "sha256:2c9bf996e1550ed5ad42398187ee14d65315d13ec5c9e2eab32b8fed0743b1fc", + "check_gpg": true + }, + { + "checksum": "sha256:831fcc64c103f60608b08f4f47c2b7b5b43571cef7576b9e549e6ae001434da5", + "check_gpg": true + }, + { + "checksum": "sha256:ef9bff2d88851209d35f9824e02fc431fba5e5347752ea1c197a57c0c45ad401", + "check_gpg": true + }, + { + "checksum": "sha256:2d7ad38e86f5109c732a32bf9bea612c4c674aba6ad4cca2d211d826edc7fd6f", + "check_gpg": true + }, + { + "checksum": "sha256:50d91ca18b6cdc9395424b852d2828d1b75e2af318932a2442376d2a10819f6a", + "check_gpg": true + }, + { + "checksum": "sha256:6f7b4c0efee821ea122401d350274334c6ef2d62dcacbe40942a00b162b6025b", + "check_gpg": true + }, + { + "checksum": "sha256:22954219a63638d7418204d818c01a0e3c914e2b2eb970f2e4638dcf5a7a5634", + "check_gpg": true + }, + { + "checksum": "sha256:2bc82e132696d9daa4eef545ff3352d6eb588b9a1b9584e515d15a7c3d6471df", + "check_gpg": true + }, + { + "checksum": "sha256:c494a613443f49b6cca4845f9c3410a1267f609c503a81a9a26a272443708fee", + "check_gpg": true + }, + { + "checksum": "sha256:64b64bab720df9dd7fd37ebf80a07795a95ac11e640eda3209b6517dcd7133e5", + "check_gpg": true + }, + { + "checksum": "sha256:961983f7fa13bb9818d1f4b54809f6b92a5998e5a8200306084d0922546c556a", + "check_gpg": true + }, + { + "checksum": "sha256:9db3ade981c564c361eed9068cd35acac93c1b1db54b6fb2a74070ce68141cff", + "check_gpg": true + }, + { + "checksum": "sha256:33788835331bed7f75e5cd2126d8d75511211175c9ac6d93824baec1a546a28d", + "check_gpg": true + }, + { + "checksum": "sha256:d4fd722ee0ff5da4114b91964e430e4e45c1a428739f1e5be5db7854e5c85f11", + "check_gpg": true + }, + { + "checksum": "sha256:2c4d03577e8661920a7b64fcc68735b795288744f1b188512a96960143030474", + "check_gpg": true + }, + { + "checksum": "sha256:ae08e152061808ccc334cc611d8ea4d18c05daa6b68731e255a533d0572594ae", + "check_gpg": true + }, + { + "checksum": "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4", + "check_gpg": true + }, + { + "checksum": "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9", + "check_gpg": true + }, + { + "checksum": "sha256:db514e9d99e58e08e698083e1ca969f9fc98ae27ee9b63aa8d2133bd95a7002e", + "check_gpg": true + }, + { + "checksum": "sha256:1befc4be3c3c72b3210e54f96f4334f268eaecdd3b77af7cadea0ef31f0e2ca9", + "check_gpg": true + }, + { + "checksum": "sha256:a7394cd1b11a1b25efaab43a30b1d9687683884babc162f43e29fdee4f00bda8", + "check_gpg": true + }, + { + "checksum": "sha256:086552102da5fd978a4722ddd21381d432abb9f886cd97761d2efbff2c588791", + "check_gpg": true + }, + { + "checksum": "sha256:45e2c1c76a0a0b6e1164c457307250a54a7de5905992b4351a84183c2e9f2633", + "check_gpg": true + }, + { + "checksum": "sha256:cc2019e304ecdfa3a245de005342c8d617d1da0d834e510849764fb38b929655", + "check_gpg": true + }, + { + "checksum": "sha256:94d02790ff430efebbfc12ca2c2029c66e1691b70baf7cf45159fb8464d38e56", + "check_gpg": true + }, + { + "checksum": "sha256:fe7ee39b0779c467c5d8a20daff4911e1967523e6fc748179e77584168e18bde", + "check_gpg": true + }, + { + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "checksum": "sha256:a973f92acb0afe61087a69d13a532c18a39dd60b3ba4826b38350f2c6b27e417", + "check_gpg": true + }, + { + "checksum": "sha256:8db16495c82aeba17b61896e6414f2ce212088370e88cf73b8999bf2317c015c", + "check_gpg": true + }, + { + "checksum": "sha256:15b2402e11402a6cb494bf7ea31ebf10bf1adb0759aab417e63d05916e56aa45", + "check_gpg": true + }, + { + "checksum": "sha256:8b30ff554cd68040f0a4a0759c502e1c1fccad2df64d2ee61145ae0f7bd668ad", + "check_gpg": true + }, + { + "checksum": "sha256:5b1cb1251cf7f65c50d9e3fcc11901fef5132dc177cce68a50918da481bb7629", + "check_gpg": true + }, + { + "checksum": "sha256:c030084d188fc99359cc088bd77d2ee6578e717f1cf2d067b8967c6cbe863c6e", + "check_gpg": true + }, + { + "checksum": "sha256:57ee793c1f8dc1c9b58953b03d7041501eea326cefc4dda6de640761c60e31f8", + "check_gpg": true + }, + { + "checksum": "sha256:5fa81b28d5100f987cd8d9317ccf200ec5b94d11ed3c8e2e90137b8981e71c61", + "check_gpg": true + }, + { + "checksum": "sha256:6fcaddc0fde4e23d6650cd46b3763903c7b693afa69aad52fdf87a8563aa5f84", + "check_gpg": true + }, + { + "checksum": "sha256:e30482032783ab59417bfaf8394be42d2e2e779a580979bd87f15bd0880df858", + "check_gpg": true + }, + { + "checksum": "sha256:0178be1e5d6da8053061d29013d8fda8445d37eac908afbf4a2ca92faf950f2c", + "check_gpg": true + }, + { + "checksum": "sha256:85dc7962af97e86a655b8ec5d5276e511f50b1d4abe624f4d8cb0d784007e342", + "check_gpg": true + }, + { + "checksum": "sha256:a718bc2a857bde398de2375efae50dac568217f547b272d7cbe0a1655ec0d961", + "check_gpg": true + }, + { + "checksum": "sha256:afba861f69234f4cb4040085a4868c7424666a4356d0e2002e16b0afb75ec0d2", + "check_gpg": true + }, + { + "checksum": "sha256:b867eeba06e6fc9084c227d8b3ea54f1815cb1833a29babf114fa1167aa17f2d", + "check_gpg": true + }, + { + "checksum": "sha256:9738af51bf206850f6611306bed20542ed32a1701188611caab0b6896e4ffb37", + "check_gpg": true + }, + { + "checksum": "sha256:026212c277c72facfd48901978afded50fc4050aedaa06a24e5e57875ce48c32", + "check_gpg": true + }, + { + "checksum": "sha256:30bf2e7deddad50a3054827c98e97adfd3ae1d24ae248980649db289198135a8", + "check_gpg": true + }, + { + "checksum": "sha256:a3775cb3bc81bb5444e26695a62b1bd2eb48a91d7bc3a361d763c185cb817de1", + "check_gpg": true + }, + { + "checksum": "sha256:7417889b8455ba87230fd5a987fe160d86de8250b87d7ae9bbcba90c32053172", + "check_gpg": true + }, + { + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "checksum": "sha256:77297d07807ddcb85bad6fd788c6f1692af47d00ad27305f3e2217e34e81f538", + "check_gpg": true + }, + { + "checksum": "sha256:a580e36566f6ffceef809e49fc4c7f9b1418a16123d4d49079c8423b6a337e67", + "check_gpg": true + }, + { + "checksum": "sha256:7967ddee97af6d0f83cfd3226f8e187edac2823ec1e4cef53b54415d759bffa9", + "check_gpg": true + }, + { + "checksum": "sha256:cfc944e77ac28ff62a93736d901a5a312fec5efd17f5e7800deafb4b801ae00d", + "check_gpg": true + }, + { + "checksum": "sha256:2c6ddfd3a551252013f647539df30097febcc4e0cd7c6eb2d1690e9f5aff66d6", + "check_gpg": true + }, + { + "checksum": "sha256:29bcc2f3f85ca7bdc22178af3e16743f55353bd9f25fb4c748d8c9f7117fe56f", + "check_gpg": true + }, + { + "checksum": "sha256:54613bd9e0524bb992bd7779c80a24b12df744085031cb8f3defb5fae55ca0f5", + "check_gpg": true + }, + { + "checksum": "sha256:8f4be33cb040f081bb1f863b92e94ac7838af743cb5a0ce9d8c8ec9a611f71a6", + "check_gpg": true + }, + { + "checksum": "sha256:bcb0cd53344744f9c8d11041eb76fc5b304f78c791846521bbe105e78f2bd0f8", + "check_gpg": true + }, + { + "checksum": "sha256:1eb386a258cebf600319b1f18344b047c9182485936d96da9c2b1067ac1c1bba", + "check_gpg": true + }, + { + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "checksum": "sha256:857330a729697c1b6e8d86550391f1abf4db87d5ffeffeb5f00065fa8be85cbd", + "check_gpg": true + }, + { + "checksum": "sha256:bcb07748c8688c788ec69c3a33c0abd1bb3a496b9aa09b5729265670bc7ba0eb", + "check_gpg": true + }, + { + "checksum": "sha256:16902074f43963a360df42fec639f8b30ad29ee0d8a9799ac26ff0ba5c60e4cd", + "check_gpg": true + }, + { + "checksum": "sha256:5719dd2fb399cadec08b4ac41c794239d2a2de2f012faeb970ab90a07bba0084", + "check_gpg": true + }, + { + "checksum": "sha256:844ee747d24d934104398be60747b407d19c8106ead11b06fe92fcc62bd765fc", + "check_gpg": true + }, + { + "checksum": "sha256:e7b9fd73c260cd22d3a36823530d4f623ea0e16844b900a5677c769afa76341c", + "check_gpg": true + }, + { + "checksum": "sha256:81b6181b947d50e0a1ea681298417e552421d6714900d07a34dc25899e5c9f60", + "check_gpg": true + }, + { + "checksum": "sha256:bbf9571bf10df55a90e73b372da33b6ac54fad5778cea58064b7b57dcbb17180", + "check_gpg": true + }, + { + "checksum": "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862", + "check_gpg": true + }, + { + "checksum": "sha256:092370d1e62096782f329944df0e7e01cc49bbc0fa4071d63f352cf45e89e5bc", + "check_gpg": true + }, + { + "checksum": "sha256:129adf9147d5d120546ca8e0fb5f165761106d386d366fe82591e372754d0b4a", + "check_gpg": true + }, + { + "checksum": "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4", + "check_gpg": true + }, + { + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "checksum": "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576", + "check_gpg": true + }, + { + "checksum": "sha256:8ee8c4bbf024b998ffb77a6b4194a2306ac21c5a6fcf70c8c81a0fbf38f7c7fc", + "check_gpg": true + }, + { + "checksum": "sha256:aced65470e04746b0db1d414ef8fc5e84f8f7cc9becfd187a92d130f21c854c4", + "check_gpg": true + }, + { + "checksum": "sha256:fe96e7fe3da0db38b8b8850c9dedd50c1358309fee24c774bc64ddee62bb11be", + "check_gpg": true + }, + { + "checksum": "sha256:79defc84763baec2190da8941221abfa002d6f6c9e8c3486e2c492389fca2a57", + "check_gpg": true + }, + { + "checksum": "sha256:61c51596cc97f35177efe8dc5e2ca52d8fd528570f33c184497f419259b73c90", + "check_gpg": true + }, + { + "checksum": "sha256:645f82cf62da25742cab5e8ffd1f764301b84ab19710d9f3fb3aff1cb57ffdc6", + "check_gpg": true + }, + { + "checksum": "sha256:4c9d77d63ddc7dda0e018fc1c97d46025794e336e58d838a631fcc130dfa3b9b", + "check_gpg": true + }, + { + "checksum": "sha256:6615aae3def0c49910e43e2d69f7ae8852694953dceb4b6235b5cf4099296d70", + "check_gpg": true + }, + { + "checksum": "sha256:6890a9545194ad6cf1b0c58e5273132171a9ced9cb665a1442aa62b6b6d3d2ea", + "check_gpg": true + }, + { + "checksum": "sha256:d0bc781a80be1d1fe204ec6b26255240261d55f6e24a28343572f2221a00533e", + "check_gpg": true + }, + { + "checksum": "sha256:e76aea00d64d100bafcea1672ce65f8bfd47bdf7e0dc7bf859fc0c6ec29d5823", + "check_gpg": true + }, + { + "checksum": "sha256:023d3d7be30607410a2357b50b8ef3f94a07baf2842bfba0421f803600ec605f", + "check_gpg": true + }, + { + "checksum": "sha256:32a00991ec85f0bf2a336e00033a0e70b0da963eb42d81bbad18a7a11f41d4eb", + "check_gpg": true + }, + { + "checksum": "sha256:84313c8f10f91d10e4f734c3a605b0a771d2faa72bf43deeed60a4cf3606a0da", + "check_gpg": true + }, + { + "checksum": "sha256:eded265cff5d22b89a955570eba030643d6730dd5987c2efed3110ef74cd0254", + "check_gpg": true + }, + { + "checksum": "sha256:a2fcc535573ade5656cdb6968eb13dd68380540b5f25a0eca3947676dc5f11d6", + "check_gpg": true + }, + { + "checksum": "sha256:d1d1b3fafa2ea83870641411a9ae955be74887689516ae3cc54ada0a38b06873", + "check_gpg": true + }, + { + "checksum": "sha256:391faab010ca30610a14e0b3d54fbc0331be39bc831086fb877f8021fe4b171f", + "check_gpg": true + }, + { + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "checksum": "sha256:f6203a41ed91197bb770a38a101d977f0f56de86ccc5a71cee9c0e198f26bcbc", + "check_gpg": true + }, + { + "checksum": "sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2", + "check_gpg": true + }, + { + "checksum": "sha256:4860a733ca3f22089c6c283cbdcf53123a702d60b5bffdd4fe9d76826f91139a", + "check_gpg": true + }, + { + "checksum": "sha256:a0b87b2dc3c5f536e94d6a4f3563a621dfbc067a62c3d1fe69bdb70c3cecec57", + "check_gpg": true + }, + { + "checksum": "sha256:f0143760628def255de0b7e1aba6f7880705329703f7357425868483ba8f43e7", + "check_gpg": true + }, + { + "checksum": "sha256:a107b3d3790a5bcfdc28f6f4718969039b103a681a2647f3cbcb82cf92e97acb", + "check_gpg": true + }, + { + "checksum": "sha256:fa791a4328b4c41b7190d862de921605f266a64abee03b2ea2e8d2b644be307f", + "check_gpg": true + }, + { + "checksum": "sha256:c93df175a0a4989aaaeb170406d8ff13a2cd93a5fc52ad33468245fea2044a86", + "check_gpg": true + }, + { + "checksum": "sha256:0055cc4eccd54df5b64c194618a26e894a0d61781c8d1f1f48687bfd296b15e4", + "check_gpg": true + }, + { + "checksum": "sha256:d611f0c4252c4c4b893850807748e62cf4d17d72d544ef2744091df3206d8178", + "check_gpg": true + }, + { + "checksum": "sha256:34efde201252afe93ec3af61af30c6d32cfbe5ecbdcecaf4667666f12482757d", + "check_gpg": true + }, + { + "checksum": "sha256:82d2eaad75cf45da9773298344dcbbaebb4da5b67526a6c43bc67d3f84d98616", + "check_gpg": true + }, + { + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "checksum": "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f", + "check_gpg": true + }, + { + "checksum": "sha256:d2abba1a0523bd9df5073900593ab13ec2ed2e391440be4d883314fa154370f8", + "check_gpg": true + }, + { + "checksum": "sha256:cb0c64cc81e0b384bbc9d27ffcb2a655b13c91a799aad8972264aed1767926a3", + "check_gpg": true + }, + { + "checksum": "sha256:acafdf6b20fea5974da004b77eced20b00c59a908edcef9c4c4e60815fdbf8f3", + "check_gpg": true + }, + { + "checksum": "sha256:3882823d0eb18e0e8146584f4a32a4801961f6fdc09075607746317eba3265be", + "check_gpg": true + }, + { + "checksum": "sha256:3d6ec574fe2c612bcc45395f7ee87c68f45016f005c6d7aeee6b37897f41b8d2", + "check_gpg": true + }, + { + "checksum": "sha256:6007c88c459315a5e2ce354086bd0372a56e15cdd0dc14e6e889ab859f8d8365", + "check_gpg": true + }, + { + "checksum": "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58", + "check_gpg": true + }, + { + "checksum": "sha256:d2bd77606d1c91208be05edce6ea04c24fa2efc880569eecb958afde1a7fb17e", + "check_gpg": true + }, + { + "checksum": "sha256:0c30a7fd9f69ad808183afa0814e363689ff63e7a82856a790e5fa111c031b96", + "check_gpg": true + }, + { + "checksum": "sha256:7fe5838c895cd1158a6ae2afb3794e79e393d6701330e1109592e6b45f4bd876", + "check_gpg": true + }, + { + "checksum": "sha256:91ab783e9eb00d5baba65989c86c3d742033bd2306ff7adb0b78185f28d2ca86", + "check_gpg": true + }, + { + "checksum": "sha256:7d5d62696fc69bb890912be71c05e92496129f198838cb56d349a8fc700a85a6", + "check_gpg": true + }, + { + "checksum": "sha256:33ca43cf0714aef344a70be4cfa42322694cc975a2eeee0bf31325dbca7f2842", + "check_gpg": true + }, + { + "checksum": "sha256:ccf07a3682a1038a6224b3da69e20f201584ed1c879539cedb57e184aa14429a", + "check_gpg": true + }, + { + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "checksum": "sha256:debd948a7e454f07dd7ab8ed79984158b98ce333d77be948e4393bb87c518ab8", + "check_gpg": true + }, + { + "checksum": "sha256:a92c4a583aacd37beb069c996307bd782f809c78fd1fb802de25a53efbaff8f8", + "check_gpg": true + }, + { + "checksum": "sha256:bc2c4637779e037072ebbd00215afbb33ce05706c7851cfde4cc0637c63f75f3", + "check_gpg": true + }, + { + "checksum": "sha256:c75bf533b09243daeca728129a6fe10fca47d0c150fd43b5dab7b4993584536f", + "check_gpg": true + }, + { + "checksum": "sha256:cc531264ae00fbc4e465b6b47c8f3772edee80346b92cee1fae88d8cdb9dcdcf", + "check_gpg": true + }, + { + "checksum": "sha256:b3657ad1419ab11e07608c7bc4da75a91162b2398d66febfc061795bc1587036", + "check_gpg": true + }, + { + "checksum": "sha256:5ce4acbf25abd83a562f20e9a8a73b8860a766fb543d69ed9db6eb57fd75fc70", + "check_gpg": true + }, + { + "checksum": "sha256:46aa2a21a000eb70097a86788d853602f7db1238156f2364a802f0b37f0dc4e6", + "check_gpg": true + }, + { + "checksum": "sha256:56b5cea4fa7f4d74d4d15aae43ab4827387dead4659bd2bede66c38057cd19e7", + "check_gpg": true + }, + { + "checksum": "sha256:41c6a8ea4240f2fa6cea0333cc6d5f59731ac843398eb457c182e90af367783c", + "check_gpg": true + }, + { + "checksum": "sha256:52aa6e698e60cd360d5b9473fd1ebcc7e238e2125449bfdcc41b3e0fe13ae645", + "check_gpg": true + }, + { + "checksum": "sha256:9baa05a69943b0c6274403276f45817ab56193de62b5b64205b4fd35951e0895", + "check_gpg": true + }, + { + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "checksum": "sha256:ff6540076bd7247ca2c1c8beb8979adb5eaf27877125c7f5cc187dc10913048f", + "check_gpg": true + }, + { + "checksum": "sha256:3242e0ce48f95d7a271125cf1222b5af09e20fe85194623d95336e1c678bdee8", + "check_gpg": true + }, + { + "checksum": "sha256:a6c26dd0ba8fc6a15e845f72f90e89b62f7344d7793896e707e610286b5e4541", + "check_gpg": true + }, + { + "checksum": "sha256:91e35b3750f5029be019542a4143cf00de68559b9ab6ae6df2c8f7ea6e60acd9", + "check_gpg": true + }, + { + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "checksum": "sha256:654a9a9997c975998e1cb5d9250cd34b9d9d4d69f43c9282e67ad4d38fa2bcdf", + "check_gpg": true + }, + { + "checksum": "sha256:25e6968493572c680d6f8cad03e591f6e1e0e6ce0d1fbe3648d4b64ba529491d", + "check_gpg": true + }, + { + "checksum": "sha256:20f32df3b4961ef659a4822686978e0501fc5262e942046b53b24ed11e77476b", + "check_gpg": true + }, + { + "checksum": "sha256:d552c735d48fa647509605f524863eab28b69b9fc8d7c62a67479c3af0878024", + "check_gpg": true + }, + { + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "checksum": "sha256:fc6b083682762fb891b50ed6e9f684ac54a2a05a78e24078ff66d4636ae89588", + "check_gpg": true + }, + { + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "checksum": "sha256:202d761caf4c9d4937c04388a7180d6687a79e8141136be0f7ecc3a54bf80594", + "check_gpg": true + }, + { + "checksum": "sha256:48381163a3f2c524697efc07538f040fde0b69d4e0fdcbe3bcfbc9924dd7d5dd", + "check_gpg": true + }, + { + "checksum": "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf", + "check_gpg": true + }, + { + "checksum": "sha256:0a31a882e4ac33233b36e2c61cc09125a936f54877137d5bb2ddc1ca8a5f9a12", + "check_gpg": true + }, + { + "checksum": "sha256:df7184fef93e9f8f535d78349605595a812511db5e6dee26cbee15569a055422", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "vfs_type": "ext4", + "path": "/", + "options": "defaults", + "freq": 1, + "passno": 1 + }, + { + "uuid": "46BB-8120", + "vfs_type": "vfat", + "path": "/boot/efi", + "options": "umask=0077,shortname=winnt", + "passno": 2 + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "kernel_opts": "ro no_timer_check console=ttyS0,115200n8 console=tty1 biosdevname=0 net.ifnames=0 console=ttyS0,115200", + "uefi": { + "vendor": "fedora" + } + } + }, + { + "name": "org.osbuild.systemd", + "options": { + "enabled_services": [ + "cloud-init.service" + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "raw", + "filename": "image.raw", + "size": 6442450944, + "ptuuid": "8DFDFF87-C96E-EA48-A3A6-9408F1F6B1EF", + "pttype": "gpt", + "partitions": [ + { + "start": 2048, + "size": 972800, + "type": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B", + "uuid": "02C1E068-1D2F-4DA3-91FD-8DD76A955C9D", + "filesystem": { + "type": "vfat", + "uuid": "46BB-8120", + "label": "EFI System Partition", + "mountpoint": "/boot/efi" + } + }, + { + "start": 976896, + "uuid": "8D760010-FAAE-46D1-9E5B-4A2EAC5030CD", + "filesystem": { + "type": "ext4", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/acl-2.2.53-5.fc32.aarch64.rpm", + "checksum": "sha256:e8941c0abaa3ce527b14bc19013088149be9c5aacceb788718293cdef9132d18", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "6.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/alternatives-1.11-6.fc32.aarch64.rpm", + "checksum": "sha256:10d828cc7803aca9b59e3bb9b52e0af45a2828250f1eab7f0fc08cdb981f191d", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.aarch64.rpm", + "checksum": "sha256:63cef561bcaadd5b9a1bf93b968f284ca76c3ad2b90b5c439b62456c0517164f", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm", + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.11", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/bash-5.0.11-2.fc32.aarch64.rpm", + "checksum": "sha256:5b304375adf911d056b36dc35f22af027d9283efbaebcb8231f052aef3982f05", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.aarch64.rpm", + "checksum": "sha256:caf76966e150fbe796865d2d18479b080657cb0bada9283048a4586cf034d4e6", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2020.2.40", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm", + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/coreutils-8.32-3.fc32.1.aarch64.rpm", + "checksum": "sha256:8961e2f35093845b7498c03f1a9776f7c49f7d9d057f56b0774f470b8e8179ff", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/coreutils-common-8.32-3.fc32.1.aarch64.rpm", + "checksum": "sha256:8d08e12adb541773aa8073a1aa6b02fbbd8539fe3597a60ac934732930cd5981", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cracklib-2.9.6-22.fc32.aarch64.rpm", + "checksum": "sha256:081d831528796c3e5c47b89c363a0f530bf77e3e2e0098cd586d814bea9a12f0", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.aarch64.rpm", + "checksum": "sha256:ca85fd192aa25f8fc630c28c8858cf3065a2b32f3ba3a373ffd3ea49b0f0813c", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.aarch64.rpm", + "checksum": "sha256:96f3fbcfb91ae41de7e514fe0b619aab870ea4d5f53544c0fd215284cb0b68e2", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/curl-7.69.1-1.fc32.aarch64.rpm", + "checksum": "sha256:d91a87c9d6dd3924d2fe7992f88f2542cce3451b7ff2576eb4d65d9ca1a7620f", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.aarch64.rpm", + "checksum": "sha256:b9904d16c86c28074bfdba38a3a740b61ad5de50a9945d550021027130fcfd41", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-1.12.16-4.fc32.aarch64.rpm", + "checksum": "sha256:067d98bda561e94f9f0bba60f691dc8ba4610434603f26cf6f4fa22677da8465", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "22", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-broker-22-1.fc32.aarch64.rpm", + "checksum": "sha256:60c9a00d8c528ad5806a5fec20ed3ffb8ad195e9eb9bf5294893e8425be1fa9f", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm", + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-libs-1.12.16-4.fc32.aarch64.rpm", + "checksum": "sha256:86959d2fd51c4d52fa5fcdf91c226ffdece5960299c15f29adc2a5c0bf05397b", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/deltarpm-3.6.2-5.fc32.aarch64.rpm", + "checksum": "sha256:9c8ec2364045411b95cfb3995d2189f0082832af7bf7280ec1cdf7bfee1afe05", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/device-mapper-1.02.171-1.fc32.aarch64.rpm", + "checksum": "sha256:18c188f63504b8cf3bc88d95de458a1eb216bca268378a6839618ef7468dc635", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.aarch64.rpm", + "checksum": "sha256:5d52cffee2d5360db8cf7e6ed4b19a68de4a0ae55f42ed279d4fdb3a70bb72f3", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/diffutils-3.7-4.fc32.aarch64.rpm", + "checksum": "sha256:13290758e03b977aed5e23b7ba9a01157b6802fd78baf75bc1fc184864e9e31e", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "10.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dosfstools-4.1-10.fc32.aarch64.rpm", + "checksum": "sha256:a12bd9183ce051f7c483506540f7682206a9cbd27b34cb7734be6583bc5d11db", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.aarch64.rpm", + "checksum": "sha256:d3281a3ef4de5e13ef1a76effd68169c0965467039059141609a078520f3db04", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.aarch64.rpm", + "checksum": "sha256:7f667fb609062e966720bf1bb1fa97a91ca245925c68e36d2770caba57aa4db2", + "check_gpg": true + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.aarch64.rpm", + "checksum": "sha256:a499f61c75ef2179b2da62647b64b716fec1af2f15653876a27e57c284921baf", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm", + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-libelf-0.179-1.fc32.aarch64.rpm", + "checksum": "sha256:8c545e3282deed08d36bb138f1ba15d02dfd1066f46f45582e24b6dc5b07cb6b", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-libs-0.179-1.fc32.aarch64.rpm", + "checksum": "sha256:c47b5f407d000d200f595e7f5026e72cae8b43416c17e5bb943551a9ddc5422e", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/expat-2.2.8-2.fc32.aarch64.rpm", + "checksum": "sha256:4940f6e26a93fe638667adb6e12969fe915b3a7b0cfeb58877dd6d7bccf46c1a", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm", + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-release-32-1.noarch.rpm", + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-release-common-32-1.noarch.rpm", + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-repos-32-1.noarch.rpm", + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/file-libs-5.38-2.fc32.aarch64.rpm", + "checksum": "sha256:aa7fd8a1313c0e384353da5e054dad62205b4f0e112a4a45eb414eb357513e04", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.14", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/filesystem-3.14-2.fc32.aarch64.rpm", + "checksum": "sha256:f8f3ec395d7d96c45cbd370f2376fe6266397ce091ab8fdaf884256ae8ae159f", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "9.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fuse-libs-2.9.9-9.fc32.aarch64.rpm", + "checksum": "sha256:5cc385c1ca3df73a1dd7865159628a6b0ce186f8679c6bc95dda0b4791e4a9fc", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gawk-5.0.1-7.fc32.aarch64.rpm", + "checksum": "sha256:62bafab5a0f37fdec29ce38bc1d635e0a81ab165061faaf5d83f5246ca4e2db0", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.aarch64.rpm", + "checksum": "sha256:aa667df83abb5a675444e898fb7554527b2967f3bdc793e6b4b56d794f74b9ef", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.64.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glib2-2.64.1-1.fc32.aarch64.rpm", + "checksum": "sha256:6837a13f3c643b5da33bd694efc4e95f54b5cc5e15de61884644378367d55804", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-2.31-2.fc32.aarch64.rpm", + "checksum": "sha256:36a3ae11acb7916e932ff704a4527b126bb39f9e849072b16242719c8de11119", + "check_gpg": true + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-all-langpacks-2.31-2.fc32.aarch64.rpm", + "checksum": "sha256:fdb1ed306445c6a37fb7182def5983a66501c5eb8be5f1b08c38db5f3613561f", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-common-2.31-2.fc32.aarch64.rpm", + "checksum": "sha256:2590d214d4986fa95653e7f83e67a81dbf822b621994a9ab867e7c377bc479c2", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gmp-6.1.2-13.fc32.aarch64.rpm", + "checksum": "sha256:5b7a135c35562e64344cc9f1ca37a5239649152cc055e14e7bf9bf84843eccab", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnupg2-2.2.19-1.fc32.aarch64.rpm", + "checksum": "sha256:cebb9ee0271c7199cb057c9a722b17c6fe59a0b0ec7f438ef6e0c35d4b5f330e", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.aarch64.rpm", + "checksum": "sha256:11004aa2821bdebfca77ab93e7ed405e0e93eb685850f5fb57b01762692ce155", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.13", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnutls-3.6.13-1.fc32.aarch64.rpm", + "checksum": "sha256:532a58ae361b9c0bc147037fb96f338684b949bd4071b19bac322b8967c32a01", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gpgme-1.13.1-6.fc32.aarch64.rpm", + "checksum": "sha256:11204917b909836508acff0df2499301d3b2f8f0a1c0e341de904ac9fb4bbedf", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grep-3.3-4.fc32.aarch64.rpm", + "checksum": "sha256:f148b87e6bf64242dad504997f730c11706e5c0da52b036b8faebb5807d252d9", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gzip-1.10-2.fc32.aarch64.rpm", + "checksum": "sha256:50b7b06e94253cb4eacc1bfb68f8343b73cbd6dae427f8ad81367f7b8ebf58a8", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.aarch64.rpm", + "checksum": "sha256:c25bb676affa185a2c4671859484bd24f62d2ec9c4d67584590bb14dd0396775", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iptables-libs-1.8.4-7.fc32.aarch64.rpm", + "checksum": "sha256:f26fae2e85396d00d7935b21154ba7a0fa591495c59973abd59455e181bf84d1", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "9.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/j/json-c-0.13.1-9.fc32.aarch64.rpm", + "checksum": "sha256:06d6f5d9909beb1cc6731dc6d5d86b9e7885285848bad8ef16079ad3e8824e0b", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/keyutils-libs-1.6-4.fc32.aarch64.rpm", + "checksum": "sha256:a05c8fb554ed38050b59d10f587ac70cf341c1f38b02ffe8a8433f7fc16efd68", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kmod-libs-27-1.fc32.aarch64.rpm", + "checksum": "sha256:7684be07a8e054660705f8d6b1522d9a829be6614293096dc7b871682e445709", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/krb5-libs-1.18-1.fc32.aarch64.rpm", + "checksum": "sha256:a01d61d802834e2e6789548f707877827fb394c90097705af9c391e6bfcd6c24", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libacl-2.2.53-5.fc32.aarch64.rpm", + "checksum": "sha256:98d58695f22a613ff6ffcb2b738b4127be7b72e5d56f7d0dbd3c999f189ba323", + "check_gpg": true + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.111", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libaio-0.3.111-7.fc32.aarch64.rpm", + "checksum": "sha256:e7b49bf8e3183d7604c7f7f51dfbc1e03bc599ddd7eac459a86f4ffdc8432533", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.2", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libarchive-3.4.2-1.fc32.aarch64.rpm", + "checksum": "sha256:340a82cfe6a9d18933b99a4e001d7e54f7ab225fe5e7fb1a7f51cb1c675c7050", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libargon2-20171227-4.fc32.aarch64.rpm", + "checksum": "sha256:6ef55c2aa000adea432676010756cf69e8851587ad17277b21bde362e369bf3e", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libassuan-2.5.3-3.fc32.aarch64.rpm", + "checksum": "sha256:1c982f31133def3baea707e0d1f0fe4a014d2c8c5f20ac8d69362cff4f26d5e9", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "8.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libattr-2.4.48-8.fc32.aarch64.rpm", + "checksum": "sha256:caa6fe00c6e322e961c4b7a02ba4a10cc939b84121e09d07d331adcdc2ae1af2", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libblkid-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:fe8b11652adfe4c64d96b442d5b31da207dfdf4a551c491c0934498537c8dfc5", + "check_gpg": true + }, + { + "name": "libbrotli", + "epoch": 0, + "version": "1.0.7", + "release": "10.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libbrotli-1.0.7-10.fc32.aarch64.rpm", + "checksum": "sha256:95581bd0421b0fddf94b046e0bf8f13d3ce3d797acd5292d87127ed9e9505d80", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcap-2.26-7.fc32.aarch64.rpm", + "checksum": "sha256:0a2eadd29cc53df942d3f0acc016b281efa4347fc2e9de1d7b8b61d9c5f0d894", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.10", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcap-ng-0.7.10-2.fc32.aarch64.rpm", + "checksum": "sha256:5875ba2d9b9ced8b2d2faa880b5f1811a89e17defe946ccf99b201790a0d2520", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcom_err-1.45.5-3.fc32.aarch64.rpm", + "checksum": "sha256:93c5fe6589243bff8f4d6934d82616a4cce0f30d071c513cc56f8e53bfc19d17", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcomps-0.1.14-4.fc32.aarch64.rpm", + "checksum": "sha256:e2eecb13c57728ce4c8e04ad8747ca51fe086a58bd55c0d3d29cf9683d0d09ad", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcurl-7.69.1-1.fc32.aarch64.rpm", + "checksum": "sha256:cc30c04cfc6be2239727608174e90ac766cb7c77cdd1b70c4be619cb2df42a52", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdb-5.3.28-40.fc32.aarch64.rpm", + "checksum": "sha256:7bfb33bfa3c3a952c54cb61b7f7c7047c1fd91e8e334f53f54faea6f34e6c0bb", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdb-utils-5.3.28-40.fc32.aarch64.rpm", + "checksum": "sha256:435530a0b9a086018694034ce48e9589348fc66389d884977b400f2f74814ac8", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdnf-0.45.0-3.fc32.aarch64.rpm", + "checksum": "sha256:62afc19040e8fbf7ac7946f02d67cdd19086658c3d8713a6c120482fd769537e", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "8.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libevent-2.1.8-8.fc32.aarch64.rpm", + "checksum": "sha256:ad874e09de00dbdb887eb6a94351869950ead7f6409dfa191d1443d3bb9dd255", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libfdisk-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:58988a2b7213098503b56d5388eba1bf2a01b9ff027961acb1e9f55c47d237ad", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "24.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libffi-3.1-24.fc32.aarch64.rpm", + "checksum": "sha256:291df16c0ae66fa5685cd033c84ae92765be4f4e17ce4936e47dc602ac6ff93e", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgcc-10.0.1-0.11.fc32.aarch64.rpm", + "checksum": "sha256:28892ae62cd1b4dadded523be8cb5f9e0fddeaa864919ee4b0dfad3bba8fd06f", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgcrypt-1.8.5-3.fc32.aarch64.rpm", + "checksum": "sha256:e96e4caf6c98faa5fb61bd3b13ee7afa0d7510d3176fe3d3cbf485847ce985fd", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgomp-10.0.1-0.11.fc32.aarch64.rpm", + "checksum": "sha256:09a9dd8c3ae4fe9a9817c71c4b2af35f2d7e1dbf2c9f4659028ce69a5d2f2d02", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgpg-error-1.36-3.fc32.aarch64.rpm", + "checksum": "sha256:cffbab9f6052ee2c7b8bcc369a411e319174de094fb94eaf71555ce485049a74", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.3.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libidn2-2.3.0-2.fc32.aarch64.rpm", + "checksum": "sha256:500c4abc34ff58e6f06c7194034b2d68b618c5e6afa89b551ab74ef226e1880a", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libksba-1.3.5-11.fc32.aarch64.rpm", + "checksum": "sha256:1ee4f732b1b4b237d7301219fc5c52b63c9ab9e77db746612852fef5610f69b7", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "10.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmetalink-0.1.3-10.fc32.aarch64.rpm", + "checksum": "sha256:c748420c4d7407a95f840416a80c468d8304e529f93b40a45081a49fd7a29232", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmnl-1.0.4-11.fc32.aarch64.rpm", + "checksum": "sha256:2356581880df7b8275896b18de24e432a362ee159fc3127f92476ffe8d0432fd", + "check_gpg": true + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmodulemd-2.9.1-1.fc32.aarch64.rpm", + "checksum": "sha256:c0ad832521885f97d08c043350b72f4fade0bbe995f81da8a18370a932bf5aee", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmount-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:1e533f7f64169288e90b3851e509cf1aedf4da0fe986288da53516b2b77ac77d", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.aarch64.rpm", + "checksum": "sha256:400c91d4d6d1125ec891c16ea72aa4123fc4c96e02f8668a8ae6dbc27113d408", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "17.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.aarch64.rpm", + "checksum": "sha256:a0260a37707734c6f97885687a6ad5967c23cb0c693668bf1402e6ee5d4abe1e", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.40.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnghttp2-1.40.0-2.fc32.aarch64.rpm", + "checksum": "sha256:17f5c9a25bf0f952f6defa6a857e938bfc1f72c69217f666a537bf8f1daff5f8", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "6.20180605git4a062cf.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.aarch64.rpm", + "checksum": "sha256:4139803076f102e2224b81b4f1da3f6d066b89e272201d2720557763f9acfcd5", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpcap-1.9.1-3.fc32.aarch64.rpm", + "checksum": "sha256:dbc1d91408e0e115e1c084f4c28d2d15f07cfc8b6c6d766192b65a28407422e7", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpsl-0.21.0-4.fc32.aarch64.rpm", + "checksum": "sha256:faca2dc4a45d1bd365d9364ea59f361854f3379ef6f13e9fa0a85368a0621f45", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpwquality-1.4.2-2.fc32.aarch64.rpm", + "checksum": "sha256:1a096ed78df5a9339c4b3c15372275a884a1124b048ffcfbdb768db881e47ab2", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.11.1", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/librepo-1.11.1-4.fc32.aarch64.rpm", + "checksum": "sha256:56bc7a11331fe199a45bc23f348deff8cd5e1ee02c617b6ed429d61ba537fc8b", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.12.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm", + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.2", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libseccomp-2.4.2-3.fc32.aarch64.rpm", + "checksum": "sha256:7149be5bd74792181003b872a9bc636157f4b795b12374c0857fb7271f2567ac", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.20.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsecret-0.20.2-2.fc32.aarch64.rpm", + "checksum": "sha256:7cac868a4b1ac9c380192a31a45a314613af3f958aaf2b778642667dc73bc182", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libselinux-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:6028f86f132faee662e97075270f68e8125fd339c8689a2b661facd25c3b829b", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libselinux-utils-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:91cd21ca1f5b881a78e9c0a6dd3cdad7401f7216a1ab3acbe9337d8e3e054a5e", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsemanage-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:b78889f3a2ac801456c643fd5603017383221aa33eac381e4f74b9a13fbf3830", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsepol-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:fe06eff5ac0e3e538775aad2cb0f801af491476e9cb508caa9107f4a5f913e52", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "10.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsigsegv-2.11-10.fc32.aarch64.rpm", + "checksum": "sha256:836a45edfd4e2cda0b6bac254b2e6225aad36f9bae0f96f2fe7da42896db0dae", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsmartcols-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:0042a3d3b19152d0a16ee321cbe99208a2f4ebd009515c1f6f962a1d5f9cde26", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsolv-0.7.11-2.fc32.aarch64.rpm", + "checksum": "sha256:15a8a718cb6f629474fec7756b4701430e14ff94aad6cf6fe20f3eb7174a7783", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libss-1.45.5-3.fc32.aarch64.rpm", + "checksum": "sha256:a830bb13938bedaf5cc91b13ab78e2cf9172b06727b7e9e1bec2cddce8dd9e2d", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libssh-0.9.3-2.fc32.aarch64.rpm", + "checksum": "sha256:7bd98aa2d554f06ab525320ebf628a6e002011462e71a47337676a2c99de5aec", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm", + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.aarch64.rpm", + "checksum": "sha256:3ea53f635b4f559b2bdb0e58d54dbfddc126b18abe23b46b94aecbf7c0d5132c", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.16.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtasn1-4.16.0-1.fc32.aarch64.rpm", + "checksum": "sha256:ea44ae1c951d3d4b30ff2a2d898c041ce9072acc94d6ea1e0e305c45e802019f", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.2.5", + "release": "1.rc2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.aarch64.rpm", + "checksum": "sha256:ef9bff2d88851209d35f9824e02fc431fba5e5347752ea1c197a57c0c45ad401", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libunistring-0.9.10-7.fc32.aarch64.rpm", + "checksum": "sha256:2d7ad38e86f5109c732a32bf9bea612c4c674aba6ad4cca2d211d826edc7fd6f", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libusbx-1.0.23-1.fc32.aarch64.rpm", + "checksum": "sha256:50d91ca18b6cdc9395424b852d2828d1b75e2af318932a2442376d2a10819f6a", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "18.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libutempter-1.1.6-18.fc32.aarch64.rpm", + "checksum": "sha256:22954219a63638d7418204d818c01a0e3c914e2b2eb970f2e4638dcf5a7a5634", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libuuid-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:2bc82e132696d9daa4eef545ff3352d6eb588b9a1b9584e515d15a7c3d6471df", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "9.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libverto-0.3.0-9.fc32.aarch64.rpm", + "checksum": "sha256:c494a613443f49b6cca4845f9c3410a1267f609c503a81a9a26a272443708fee", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxcrypt-4.4.16-1.fc32.aarch64.rpm", + "checksum": "sha256:64b64bab720df9dd7fd37ebf80a07795a95ac11e640eda3209b6517dcd7133e5", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.10.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.aarch64.rpm", + "checksum": "sha256:9db3ade981c564c361eed9068cd35acac93c1b1db54b6fb2a74070ce68141cff", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.10", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxml2-2.9.10-3.fc32.aarch64.rpm", + "checksum": "sha256:33788835331bed7f75e5cd2126d8d75511211175c9ac6d93824baec1a546a28d", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libyaml-0.2.2-3.fc32.aarch64.rpm", + "checksum": "sha256:d4fd722ee0ff5da4114b91964e430e4e45c1a428739f1e5be5db7854e5c85f11", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libzstd-1.4.4-2.fc32.aarch64.rpm", + "checksum": "sha256:2c4d03577e8661920a7b64fcc68735b795288744f1b188512a96960143030474", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/lua-libs-5.3.5-7.fc32.aarch64.rpm", + "checksum": "sha256:1befc4be3c3c72b3210e54f96f4334f268eaecdd3b77af7cadea0ef31f0e2ca9", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/lz4-libs-1.9.1-2.fc32.aarch64.rpm", + "checksum": "sha256:a7394cd1b11a1b25efaab43a30b1d9687683884babc162f43e29fdee4f00bda8", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mkpasswd-5.5.6-1.fc32.aarch64.rpm", + "checksum": "sha256:45e2c1c76a0a0b6e1164c457307250a54a7de5905992b4351a84183c2e9f2633", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "4.0.2", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mpfr-4.0.2-3.fc32.aarch64.rpm", + "checksum": "sha256:94d02790ff430efebbfc12ca2c2029c66e1691b70baf7cf45159fb8464d38e56", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-6.1-15.20191109.fc32.aarch64.rpm", + "checksum": "sha256:fe7ee39b0779c467c5d8a20daff4911e1967523e6fc748179e77584168e18bde", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm", + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.aarch64.rpm", + "checksum": "sha256:a973f92acb0afe61087a69d13a532c18a39dd60b3ba4826b38350f2c6b27e417", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/nettle-3.5.1-5.fc32.aarch64.rpm", + "checksum": "sha256:15b2402e11402a6cb494bf7ea31ebf10bf1adb0759aab417e63d05916e56aa45", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/npth-1.6-4.fc32.aarch64.rpm", + "checksum": "sha256:5b1cb1251cf7f65c50d9e3fcc11901fef5132dc177cce68a50918da481bb7629", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openldap-2.4.47-4.fc32.aarch64.rpm", + "checksum": "sha256:c030084d188fc99359cc088bd77d2ee6578e717f1cf2d067b8967c6cbe863c6e", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-1.1.1d-7.fc32.aarch64.rpm", + "checksum": "sha256:e30482032783ab59417bfaf8394be42d2e2e779a580979bd87f15bd0880df858", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.aarch64.rpm", + "checksum": "sha256:0178be1e5d6da8053061d29013d8fda8445d37eac908afbf4a2ca92faf950f2c", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.aarch64.rpm", + "checksum": "sha256:85dc7962af97e86a655b8ec5d5276e511f50b1d4abe624f4d8cb0d784007e342", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/p11-kit-0.23.20-1.fc32.aarch64.rpm", + "checksum": "sha256:afba861f69234f4cb4040085a4868c7424666a4356d0e2002e16b0afb75ec0d2", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.aarch64.rpm", + "checksum": "sha256:b867eeba06e6fc9084c227d8b3ea54f1815cb1833a29babf114fa1167aa17f2d", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "24.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pam-1.3.1-24.fc32.aarch64.rpm", + "checksum": "sha256:9738af51bf206850f6611306bed20542ed32a1701188611caab0b6896e4ffb37", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.44", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre-8.44-1.fc32.aarch64.rpm", + "checksum": "sha256:a3775cb3bc81bb5444e26695a62b1bd2eb48a91d7bc3a361d763c185cb817de1", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre2-10.34-9.fc32.aarch64.rpm", + "checksum": "sha256:7417889b8455ba87230fd5a987fe160d86de8250b87d7ae9bbcba90c32053172", + "check_gpg": true + }, + { + "name": "pcre2-syntax", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm", + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pinentry-1.1.0-7.fc32.aarch64.rpm", + "checksum": "sha256:a580e36566f6ffceef809e49fc4c7f9b1418a16123d4d49079c8423b6a337e67", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/policycoreutils-3.0-2.fc32.aarch64.rpm", + "checksum": "sha256:29bcc2f3f85ca7bdc22178af3e16743f55353bd9f25fb4c748d8c9f7117fe56f", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "19.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/popt-1.16-19.fc32.aarch64.rpm", + "checksum": "sha256:8f4be33cb040f081bb1f863b92e94ac7838af743cb5a0ce9d8c8ec9a611f71a6", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm", + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-3.8.2-2.fc32.aarch64.rpm", + "checksum": "sha256:857330a729697c1b6e8d86550391f1abf4db87d5ffeffeb5f00065fa8be85cbd", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-gpg-1.13.1-6.fc32.aarch64.rpm", + "checksum": "sha256:fe96e7fe3da0db38b8b8850c9dedd50c1358309fee24c774bc64ddee62bb11be", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.aarch64.rpm", + "checksum": "sha256:79defc84763baec2190da8941221abfa002d6f6c9e8c3486e2c492389fca2a57", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.aarch64.rpm", + "checksum": "sha256:e76aea00d64d100bafcea1672ce65f8bfd47bdf7e0dc7bf859fc0c6ec29d5823", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.aarch64.rpm", + "checksum": "sha256:023d3d7be30607410a2357b50b8ef3f94a07baf2842bfba0421f803600ec605f", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libs-3.8.2-2.fc32.aarch64.rpm", + "checksum": "sha256:32a00991ec85f0bf2a336e00033a0e70b0da963eb42d81bbad18a7a11f41d4eb", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:34efde201252afe93ec3af61af30c6d32cfbe5ecbdcecaf4667666f12482757d", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-unbound-1.9.6-2.fc32.aarch64.rpm", + "checksum": "sha256:acafdf6b20fea5974da004b77eced20b00c59a908edcef9c4c4e60815fdbf8f3", + "check_gpg": true + }, + { + "name": "qemu-img", + "epoch": 2, + "version": "4.2.0", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/q/qemu-img-4.2.0-7.fc32.aarch64.rpm", + "checksum": "sha256:ba170325441d8341085944301c006bd4b82b4813d0aedf3a9990fbe0500deba8", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.aarch64.rpm", + "checksum": "sha256:3d6ec574fe2c612bcc45395f7ee87c68f45016f005c6d7aeee6b37897f41b8d2", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/readline-8.0-4.fc32.aarch64.rpm", + "checksum": "sha256:6007c88c459315a5e2ce354086bd0372a56e15cdd0dc14e6e889ab859f8d8365", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:d2bd77606d1c91208be05edce6ea04c24fa2efc880569eecb958afde1a7fb17e", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:0c30a7fd9f69ad808183afa0814e363689ff63e7a82856a790e5fa111c031b96", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:7fe5838c895cd1158a6ae2afb3794e79e393d6701330e1109592e6b45f4bd876", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:91ab783e9eb00d5baba65989c86c3d742033bd2306ff7adb0b78185f28d2ca86", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:7d5d62696fc69bb890912be71c05e92496129f198838cb56d349a8fc700a85a6", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:33ca43cf0714aef344a70be4cfa42322694cc975a2eeee0bf31325dbca7f2842", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sed-4.5-5.fc32.aarch64.rpm", + "checksum": "sha256:ccf07a3682a1038a6224b3da69e20f201584ed1c879539cedb57e184aa14429a", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.6", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm", + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.8.1", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/shadow-utils-4.8.1-2.fc32.aarch64.rpm", + "checksum": "sha256:debd948a7e454f07dd7ab8ed79984158b98ce333d77be948e4393bb87c518ab8", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.15", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/shared-mime-info-1.15-3.fc32.aarch64.rpm", + "checksum": "sha256:a92c4a583aacd37beb069c996307bd782f809c78fd1fb802de25a53efbaff8f8", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.31.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.aarch64.rpm", + "checksum": "sha256:c75bf533b09243daeca728129a6fe10fca47d0c150fd43b5dab7b4993584536f", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-245.4-1.fc32.aarch64.rpm", + "checksum": "sha256:41c6a8ea4240f2fa6cea0333cc6d5f59731ac843398eb457c182e90af367783c", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-libs-245.4-1.fc32.aarch64.rpm", + "checksum": "sha256:52aa6e698e60cd360d5b9473fd1ebcc7e238e2125449bfdcc41b3e0fe13ae645", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-pam-245.4-1.fc32.aarch64.rpm", + "checksum": "sha256:9baa05a69943b0c6274403276f45817ab56193de62b5b64205b4fd35951e0895", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm", + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/tar-1.32-4.fc32.aarch64.rpm", + "checksum": "sha256:2f849fdf4588b1b4e86a008b6a82f30ff2ec1db1ae2bd21e067c6f910e4cb237", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/trousers-0.3.13-13.fc31.aarch64.rpm", + "checksum": "sha256:3242e0ce48f95d7a271125cf1222b5af09e20fe85194623d95336e1c678bdee8", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/trousers-lib-0.3.13-13.fc31.aarch64.rpm", + "checksum": "sha256:a6c26dd0ba8fc6a15e845f72f90e89b62f7344d7793896e707e610286b5e4541", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/tss2-1331-4.fc32.aarch64.rpm", + "checksum": "sha256:91e35b3750f5029be019542a4143cf00de68559b9ab6ae6df2c8f7ea6e60acd9", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm", + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/u/unbound-libs-1.9.6-2.fc32.aarch64.rpm", + "checksum": "sha256:654a9a9997c975998e1cb5d9250cd34b9d9d4d69f43c9282e67ad4d38fa2bcdf", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/u/util-linux-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:25e6968493572c680d6f8cad03e591f6e1e0e6ce0d1fbe3648d4b64ba529491d", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm", + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.29", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm", + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xz-5.2.5-1.fc32.aarch64.rpm", + "checksum": "sha256:202d761caf4c9d4937c04388a7180d6687a79e8141136be0f7ecc3a54bf80594", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xz-libs-5.2.5-1.fc32.aarch64.rpm", + "checksum": "sha256:48381163a3f2c524697efc07538f040fde0b69d4e0fdcbe3bcfbc9924dd7d5dd", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.aarch64.rpm", + "checksum": "sha256:0a31a882e4ac33233b36e2c61cc09125a936f54877137d5bb2ddc1ca8a5f9a12", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "21.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/z/zlib-1.2.11-21.fc32.aarch64.rpm", + "checksum": "sha256:df7184fef93e9f8f535d78349605595a812511db5e6dee26cbee15569a055422", + "check_gpg": true + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.22.10", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/NetworkManager-1.22.10-1.fc32.aarch64.rpm", + "checksum": "sha256:61e37e1df1e427525e6dd873d04fe2afc5e6825f2788a33b941e532e5a27ed7e", + "check_gpg": true + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.22.10", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/NetworkManager-libnm-1.22.10-1.fc32.aarch64.rpm", + "checksum": "sha256:78fb24703a4bafd4eb4ae0e065abf9111a127774ac74b1dc3a25d385c0dae1a0", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/acl-2.2.53-5.fc32.aarch64.rpm", + "checksum": "sha256:e8941c0abaa3ce527b14bc19013088149be9c5aacceb788718293cdef9132d18", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "6.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/alternatives-1.11-6.fc32.aarch64.rpm", + "checksum": "sha256:10d828cc7803aca9b59e3bb9b52e0af45a2828250f1eab7f0fc08cdb981f191d", + "check_gpg": true + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/audit-3.0-0.19.20191104git1c2f876.fc32.aarch64.rpm", + "checksum": "sha256:f71860520fb965ae5a41a43a68903aac712bea01ceac568774ac9ce6006d1f31", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.aarch64.rpm", + "checksum": "sha256:63cef561bcaadd5b9a1bf93b968f284ca76c3ad2b90b5c439b62456c0517164f", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm", + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.11", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/bash-5.0.11-2.fc32.aarch64.rpm", + "checksum": "sha256:5b304375adf911d056b36dc35f22af027d9283efbaebcb8231f052aef3982f05", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.aarch64.rpm", + "checksum": "sha256:caf76966e150fbe796865d2d18479b080657cb0bada9283048a4586cf034d4e6", + "check_gpg": true + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.15.0", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/c-ares-1.15.0-5.fc32.aarch64.rpm", + "checksum": "sha256:fdef1b445deff2b85a564372284dc8f49cf8376ee60cd26938484e8312dab650", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2020.2.40", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm", + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/checkpolicy-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:ad6f711174c59ffb9116d792068cc8fd0585b46eb5d9bf18a3c9937727b9a379", + "check_gpg": true + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "8.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/chrony-3.5-8.fc32.aarch64.rpm", + "checksum": "sha256:55a343c96ac98c2bdf7bffdf5edc73f87b482a26b4a1a5e95670343dcec88fb8", + "check_gpg": true + }, + { + "name": "cloud-init", + "epoch": 0, + "version": "19.4", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cloud-init-19.4-2.fc32.noarch.rpm", + "checksum": "sha256:1e1e9900e9d3a2b8eb6684060672526948df2cb9f751e7d72cb4fa5bffe71747", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-sans-mono-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-serif-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/coreutils-8.32-3.fc32.1.aarch64.rpm", + "checksum": "sha256:8961e2f35093845b7498c03f1a9776f7c49f7d9d057f56b0774f470b8e8179ff", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/coreutils-common-8.32-3.fc32.1.aarch64.rpm", + "checksum": "sha256:8d08e12adb541773aa8073a1aa6b02fbbd8539fe3597a60ac934732930cd5981", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.13", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cpio-2.13-4.fc32.aarch64.rpm", + "checksum": "sha256:7bd78f630f6ed96cd08942330f4dad8bfb8d2d7961262ee942411e501a1aefdd", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cracklib-2.9.6-22.fc32.aarch64.rpm", + "checksum": "sha256:081d831528796c3e5c47b89c363a0f530bf77e3e2e0098cd586d814bea9a12f0", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.aarch64.rpm", + "checksum": "sha256:ca85fd192aa25f8fc630c28c8858cf3065a2b32f3ba3a373ffd3ea49b0f0813c", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.aarch64.rpm", + "checksum": "sha256:96f3fbcfb91ae41de7e514fe0b619aab870ea4d5f53544c0fd215284cb0b68e2", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/curl-7.69.1-1.fc32.aarch64.rpm", + "checksum": "sha256:d91a87c9d6dd3924d2fe7992f88f2542cce3451b7ff2576eb4d65d9ca1a7620f", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.aarch64.rpm", + "checksum": "sha256:b9904d16c86c28074bfdba38a3a740b61ad5de50a9945d550021027130fcfd41", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-1.12.16-4.fc32.aarch64.rpm", + "checksum": "sha256:067d98bda561e94f9f0bba60f691dc8ba4610434603f26cf6f4fa22677da8465", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "22", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-broker-22-1.fc32.aarch64.rpm", + "checksum": "sha256:60c9a00d8c528ad5806a5fec20ed3ffb8ad195e9eb9bf5294893e8425be1fa9f", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm", + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-libs-1.12.16-4.fc32.aarch64.rpm", + "checksum": "sha256:86959d2fd51c4d52fa5fcdf91c226ffdece5960299c15f29adc2a5c0bf05397b", + "check_gpg": true + }, + { + "name": "dbxtool", + "epoch": 0, + "version": "8", + "release": "11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbxtool-8-11.fc32.aarch64.rpm", + "checksum": "sha256:20307d5a1d3fccfe8f64c8ea074c6a751dc36849c7495592989677fd01da9147", + "check_gpg": true + }, + { + "name": "dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dejavu-sans-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/deltarpm-3.6.2-5.fc32.aarch64.rpm", + "checksum": "sha256:9c8ec2364045411b95cfb3995d2189f0082832af7bf7280ec1cdf7bfee1afe05", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/device-mapper-1.02.171-1.fc32.aarch64.rpm", + "checksum": "sha256:18c188f63504b8cf3bc88d95de458a1eb216bca268378a6839618ef7468dc635", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.aarch64.rpm", + "checksum": "sha256:5d52cffee2d5360db8cf7e6ed4b19a68de4a0ae55f42ed279d4fdb3a70bb72f3", + "check_gpg": true + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.4.2", + "release": "5.b1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dhcp-client-4.4.2-5.b1.fc32.aarch64.rpm", + "checksum": "sha256:27a0d9447ef63c95a3182b32606e6de1bd17f2cfc7910a456fa43996db67833f", + "check_gpg": true + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.4.2", + "release": "5.b1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dhcp-common-4.4.2-5.b1.fc32.noarch.rpm", + "checksum": "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/diffutils-3.7-4.fc32.aarch64.rpm", + "checksum": "sha256:13290758e03b977aed5e23b7ba9a01157b6802fd78baf75bc1fc184864e9e31e", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.14", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dnf-plugins-core-4.0.14-1.fc32.noarch.rpm", + "checksum": "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dracut-050-26.git20200316.fc32.aarch64.rpm", + "checksum": "sha256:a16c32dda1845c89cb7822ab839e5f48b222b3c168f82455f7f54a1a7863ffea", + "check_gpg": true + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dracut-config-generic-050-26.git20200316.fc32.aarch64.rpm", + "checksum": "sha256:d96c93f959443e974001c4b423f3da556187e5b3fedf1232951f480c67cb4568", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.aarch64.rpm", + "checksum": "sha256:d3281a3ef4de5e13ef1a76effd68169c0965467039059141609a078520f3db04", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.aarch64.rpm", + "checksum": "sha256:7f667fb609062e966720bf1bb1fa97a91ca245925c68e36d2770caba57aa4db2", + "check_gpg": true + }, + { + "name": "efi-filesystem", + "epoch": 0, + "version": "4", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/efi-filesystem-4-4.fc32.noarch.rpm", + "checksum": "sha256:b743aafa82f3326f8f2e6d5464ae7fa57fabab3ad791099eaf2d151b43208b42", + "check_gpg": true + }, + { + "name": "efibootmgr", + "epoch": 0, + "version": "16", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/efibootmgr-16-7.fc32.aarch64.rpm", + "checksum": "sha256:04bc54c723bfa9e1b6bb6567e9d8cd3e1ed389fc2be97259b971a8cbfe5f95e4", + "check_gpg": true + }, + { + "name": "efivar-libs", + "epoch": 0, + "version": "37", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/efivar-libs-37-7.fc32.aarch64.rpm", + "checksum": "sha256:a30386b14f04905c1e78944f9b36d81ac83b7de1301c353d7e90b33f4a8c5e93", + "check_gpg": true + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.aarch64.rpm", + "checksum": "sha256:a499f61c75ef2179b2da62647b64b716fec1af2f15653876a27e57c284921baf", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm", + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-libelf-0.179-1.fc32.aarch64.rpm", + "checksum": "sha256:8c545e3282deed08d36bb138f1ba15d02dfd1066f46f45582e24b6dc5b07cb6b", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-libs-0.179-1.fc32.aarch64.rpm", + "checksum": "sha256:c47b5f407d000d200f595e7f5026e72cae8b43416c17e5bb943551a9ddc5422e", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/expat-2.2.8-2.fc32.aarch64.rpm", + "checksum": "sha256:4940f6e26a93fe638667adb6e12969fe915b3a7b0cfeb58877dd6d7bccf46c1a", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm", + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-release-32-1.noarch.rpm", + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-release-common-32-1.noarch.rpm", + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-repos-32-1.noarch.rpm", + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/file-5.38-2.fc32.aarch64.rpm", + "checksum": "sha256:0dcc4568055843acf5571553731d57a0d042b6602e6932bc4fe88718597c2fbe", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/file-libs-5.38-2.fc32.aarch64.rpm", + "checksum": "sha256:aa7fd8a1313c0e384353da5e054dad62205b4f0e112a4a45eb414eb357513e04", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.14", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/filesystem-3.14-2.fc32.aarch64.rpm", + "checksum": "sha256:f8f3ec395d7d96c45cbd370f2376fe6266397ce091ab8fdaf884256ae8ae159f", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.7.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/findutils-4.7.0-3.fc32.aarch64.rpm", + "checksum": "sha256:876c2450443ab68948b045721202ca193077876b67c2e85f9dd427452ef0c4d5", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "8.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fipscheck-1.5.0-8.fc32.aarch64.rpm", + "checksum": "sha256:d1b286af57220764054969fc63065ead51d9bb969d320ada6a72c3b24c9e0ca3", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "8.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fipscheck-lib-1.5.0-8.fc32.aarch64.rpm", + "checksum": "sha256:c4cc17e543253b9b37fa982f49ae1c5f411ff563120e5c4225556a7584994a37", + "check_gpg": true + }, + { + "name": "firewalld", + "epoch": 0, + "version": "0.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/firewalld-0.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:b8ecd7fa0e7e072828e374dfb0d61bb8eecca7c190f3661050cee5e3fc8854b4", + "check_gpg": true + }, + { + "name": "firewalld-filesystem", + "epoch": 0, + "version": "0.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/firewalld-filesystem-0.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:47538b1db9720be4699329a8da32d873187d0c6c22f45252614ac5b8a8312482", + "check_gpg": true + }, + { + "name": "fonts-filesystem", + "epoch": 0, + "version": "2.0.3", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fonts-filesystem-2.0.3-1.fc32.noarch.rpm", + "checksum": "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "9.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fuse-libs-2.9.9-9.fc32.aarch64.rpm", + "checksum": "sha256:5cc385c1ca3df73a1dd7865159628a6b0ce186f8679c6bc95dda0b4791e4a9fc", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gawk-5.0.1-7.fc32.aarch64.rpm", + "checksum": "sha256:62bafab5a0f37fdec29ce38bc1d635e0a81ab165061faaf5d83f5246ca4e2db0", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.aarch64.rpm", + "checksum": "sha256:aa667df83abb5a675444e898fb7554527b2967f3bdc793e6b4b56d794f74b9ef", + "check_gpg": true + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20191217", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/geolite2-city-20191217-2.fc32.noarch.rpm", + "checksum": "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3", + "check_gpg": true + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20191217", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/geolite2-country-20191217-2.fc32.noarch.rpm", + "checksum": "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gettext-0.20.1-4.fc32.aarch64.rpm", + "checksum": "sha256:60c3cbbe546fb12db4c7164a51613ea9ae20f7199537cdf5145e828c78544493", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gettext-libs-0.20.1-4.fc32.aarch64.rpm", + "checksum": "sha256:57e1695da46f19db4a851304d57e7ce2409c287a88e9b52af0b76ed2252a4f98", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.64.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glib2-2.64.1-1.fc32.aarch64.rpm", + "checksum": "sha256:6837a13f3c643b5da33bd694efc4e95f54b5cc5e15de61884644378367d55804", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-2.31-2.fc32.aarch64.rpm", + "checksum": "sha256:36a3ae11acb7916e932ff704a4527b126bb39f9e849072b16242719c8de11119", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-common-2.31-2.fc32.aarch64.rpm", + "checksum": "sha256:2590d214d4986fa95653e7f83e67a81dbf822b621994a9ab867e7c377bc479c2", + "check_gpg": true + }, + { + "name": "glibc-langpack-en", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-langpack-en-2.31-2.fc32.aarch64.rpm", + "checksum": "sha256:f50ad72a9259205b2381b94fa674f53860e63c9e3cd1fb013653dab2bc7203a6", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gmp-6.1.2-13.fc32.aarch64.rpm", + "checksum": "sha256:5b7a135c35562e64344cc9f1ca37a5239649152cc055e14e7bf9bf84843eccab", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnupg2-2.2.19-1.fc32.aarch64.rpm", + "checksum": "sha256:cebb9ee0271c7199cb057c9a722b17c6fe59a0b0ec7f438ef6e0c35d4b5f330e", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.aarch64.rpm", + "checksum": "sha256:11004aa2821bdebfca77ab93e7ed405e0e93eb685850f5fb57b01762692ce155", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.13", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnutls-3.6.13-1.fc32.aarch64.rpm", + "checksum": "sha256:532a58ae361b9c0bc147037fb96f338684b949bd4071b19bac322b8967c32a01", + "check_gpg": true + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.64.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gobject-introspection-1.64.1-1.fc32.aarch64.rpm", + "checksum": "sha256:ce2085aef5dd78dd1fcf025f9cc65cfb4e796448a1d233408205c1ada466865f", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gpgme-1.13.1-6.fc32.aarch64.rpm", + "checksum": "sha256:11204917b909836508acff0df2499301d3b2f8f0a1c0e341de904ac9fb4bbedf", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grep-3.3-4.fc32.aarch64.rpm", + "checksum": "sha256:f148b87e6bf64242dad504997f730c11706e5c0da52b036b8faebb5807d252d9", + "check_gpg": true + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "21.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/groff-base-1.22.3-21.fc32.aarch64.rpm", + "checksum": "sha256:174a7c064ba48fdfc61ee5a091ec474dfbdb32a1a602cbe0776937c39e222663", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "name": "grub2-efi-aa64", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grub2-efi-aa64-2.04-12.fc32.aarch64.rpm", + "checksum": "sha256:6221b210a7778432738994829f6c7e9f047940e53ee42a0e6458b91095b82756", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grub2-tools-2.04-12.fc32.aarch64.rpm", + "checksum": "sha256:a47d4bfb9dd589c97bb530afb3988cbfaf7336a89207e4b74fd9ab596812c97f", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.aarch64.rpm", + "checksum": "sha256:a0ec936c91f5f69951d08a6cdf03406ee7365bc3417d3426bb6b4db855c45dda", + "check_gpg": true + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "40.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grubby-8.40-40.fc32.aarch64.rpm", + "checksum": "sha256:96ff29e784025e76bfde72abc89ccb520cb75087f8c44cd747d5d3ebc1df78db", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gzip-1.10-2.fc32.aarch64.rpm", + "checksum": "sha256:50b7b06e94253cb4eacc1bfb68f8343b73cbd6dae427f8ad81367f7b8ebf58a8", + "check_gpg": true + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.23", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/h/hostname-3.23-2.fc32.aarch64.rpm", + "checksum": "sha256:ded5407f20b7a1de7b8aee85786d8b70eec61d0385e95e90d95849612ef13dea", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.aarch64.rpm", + "checksum": "sha256:c25bb676affa185a2c4671859484bd24f62d2ec9c4d67584590bb14dd0396775", + "check_gpg": true + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.02", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/initscripts-10.02-3.fc32.aarch64.rpm", + "checksum": "sha256:3377ae652fbbd22f2c61815bfd1bb58185b5f57c194d9b0cce3056ab11522779", + "check_gpg": true + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.4.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/ipcalc-0.4.0-2.fc32.aarch64.rpm", + "checksum": "sha256:b1fc5d1d8d62d0f883ff483b818e7759f9afd4a1fa15421af56e1a615535fe63", + "check_gpg": true + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.5.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iproute-5.5.0-1.fc32.aarch64.rpm", + "checksum": "sha256:7c38b938c3d35cfee1ad11d5d09c3c6a4f208b065a25b2a3556006f04f2608b9", + "check_gpg": true + }, + { + "name": "iproute-tc", + "epoch": 0, + "version": "5.5.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iproute-tc-5.5.0-1.fc32.aarch64.rpm", + "checksum": "sha256:4674c9871d3a70a005fc880d6ce1c0e56418192085dae8b5eb861003ef9a2c1b", + "check_gpg": true + }, + { + "name": "ipset", + "epoch": 0, + "version": "7.6", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/ipset-7.6-1.fc32.aarch64.rpm", + "checksum": "sha256:ea25c1482716623eabc1b151d318bc1499e2448480f46e6113e1e4667150393c", + "check_gpg": true + }, + { + "name": "ipset-libs", + "epoch": 0, + "version": "7.6", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/ipset-libs-7.6-1.fc32.aarch64.rpm", + "checksum": "sha256:03c7e6ea76b2aa8e7f8c8c8039412f618790ea39aeb3c1ffab205ba6b3bee54d", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iptables-libs-1.8.4-7.fc32.aarch64.rpm", + "checksum": "sha256:f26fae2e85396d00d7935b21154ba7a0fa591495c59973abd59455e181bf84d1", + "check_gpg": true + }, + { + "name": "iptables-nft", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iptables-nft-1.8.4-7.fc32.aarch64.rpm", + "checksum": "sha256:e883b70720adcf3c09b13d1ff2d3425be2d0a296be18cabf25dd5f9ce79cf8d3", + "check_gpg": true + }, + { + "name": "iputils", + "epoch": 0, + "version": "20190515", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iputils-20190515-5.fc32.aarch64.rpm", + "checksum": "sha256:8b20ec83c7ff085d0f27c7af0a87dc49bacdf65d52b61119819ea14862eff91c", + "check_gpg": true + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.12", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/j/jansson-2.12-5.fc32.aarch64.rpm", + "checksum": "sha256:da4e2994692c9ed4d0760528139f6437bcb0d54862fac1a4afa55e329393d254", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "9.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/j/json-c-0.13.1-9.fc32.aarch64.rpm", + "checksum": "sha256:06d6f5d9909beb1cc6731dc6d5d86b9e7885285848bad8ef16079ad3e8824e0b", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kbd-2.2.0-1.fc32.aarch64.rpm", + "checksum": "sha256:79410f2d954c0a380a0b67bc965982ac1645c0365060cf8ba106db74b0b339f4", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "name": "kernel", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kernel-5.6.6-300.fc32.aarch64.rpm", + "checksum": "sha256:14005ca38ce35a0c2e9d24b37991059d213f9b3277895eaa2a5b45e242cf8dc8", + "check_gpg": true + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kernel-core-5.6.6-300.fc32.aarch64.rpm", + "checksum": "sha256:e38207cecd64ed0fe5002828ff0aa05dbbb1f5418350babd4c1cfa3d1e3261fe", + "check_gpg": true + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kernel-modules-5.6.6-300.fc32.aarch64.rpm", + "checksum": "sha256:cb8b8225bc9f2a16377a41977de4e6f6d651cbe738035b93234d65e8dd80fa0f", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/keyutils-libs-1.6-4.fc32.aarch64.rpm", + "checksum": "sha256:a05c8fb554ed38050b59d10f587ac70cf341c1f38b02ffe8a8433f7fc16efd68", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kmod-27-1.fc32.aarch64.rpm", + "checksum": "sha256:fe512ddf337568ca1e4d1c0cce66dda461ca570587c7beb1e1be3960540e394f", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kmod-libs-27-1.fc32.aarch64.rpm", + "checksum": "sha256:7684be07a8e054660705f8d6b1522d9a829be6614293096dc7b871682e445709", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.2", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kpartx-0.8.2-3.fc32.aarch64.rpm", + "checksum": "sha256:8e768615a238b08e3fd0857f53e7acf5c5c4e3736dc03824179429a4d848de61", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/krb5-libs-1.18-1.fc32.aarch64.rpm", + "checksum": "sha256:a01d61d802834e2e6789548f707877827fb394c90097705af9c391e6bfcd6c24", + "check_gpg": true + }, + { + "name": "langpacks-core-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/langpacks-core-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0", + "check_gpg": true + }, + { + "name": "langpacks-core-font-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/langpacks-core-font-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389", + "check_gpg": true + }, + { + "name": "langpacks-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/langpacks-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca", + "check_gpg": true + }, + { + "name": "less", + "epoch": 0, + "version": "551", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/less-551-3.fc32.aarch64.rpm", + "checksum": "sha256:c8516d06666d3f0728c9cbfc1b7f0a88f8884e5cd7bd3bad6721c7c9000f1f8f", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libacl-2.2.53-5.fc32.aarch64.rpm", + "checksum": "sha256:98d58695f22a613ff6ffcb2b738b4127be7b72e5d56f7d0dbd3c999f189ba323", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.2", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libarchive-3.4.2-1.fc32.aarch64.rpm", + "checksum": "sha256:340a82cfe6a9d18933b99a4e001d7e54f7ab225fe5e7fb1a7f51cb1c675c7050", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libargon2-20171227-4.fc32.aarch64.rpm", + "checksum": "sha256:6ef55c2aa000adea432676010756cf69e8851587ad17277b21bde362e369bf3e", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libassuan-2.5.3-3.fc32.aarch64.rpm", + "checksum": "sha256:1c982f31133def3baea707e0d1f0fe4a014d2c8c5f20ac8d69362cff4f26d5e9", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "8.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libattr-2.4.48-8.fc32.aarch64.rpm", + "checksum": "sha256:caa6fe00c6e322e961c4b7a02ba4a10cc939b84121e09d07d331adcdc2ae1af2", + "check_gpg": true + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "44.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libbasicobjects-0.1.1-44.fc32.aarch64.rpm", + "checksum": "sha256:a5c841dda3df90e810cfd87c42211a26dc0745f9bae341b6bfc6b08114e48ed5", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libblkid-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:fe8b11652adfe4c64d96b442d5b31da207dfdf4a551c491c0934498537c8dfc5", + "check_gpg": true + }, + { + "name": "libbrotli", + "epoch": 0, + "version": "1.0.7", + "release": "10.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libbrotli-1.0.7-10.fc32.aarch64.rpm", + "checksum": "sha256:95581bd0421b0fddf94b046e0bf8f13d3ce3d797acd5292d87127ed9e9505d80", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcap-2.26-7.fc32.aarch64.rpm", + "checksum": "sha256:0a2eadd29cc53df942d3f0acc016b281efa4347fc2e9de1d7b8b61d9c5f0d894", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.10", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcap-ng-0.7.10-2.fc32.aarch64.rpm", + "checksum": "sha256:5875ba2d9b9ced8b2d2faa880b5f1811a89e17defe946ccf99b201790a0d2520", + "check_gpg": true + }, + { + "name": "libcbor", + "epoch": 0, + "version": "0.5.0", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcbor-0.5.0-7.fc32.aarch64.rpm", + "checksum": "sha256:1ddaeb7c602005e75c0ea2603a533d692a94915a297b71e68a8e27327456c3d0", + "check_gpg": true + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "44.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcollection-0.7.0-44.fc32.aarch64.rpm", + "checksum": "sha256:d6ad55479187ecd7368002e67e83d44d24995fd1a1b6790c1c6c9fb1fd5e52a6", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcom_err-1.45.5-3.fc32.aarch64.rpm", + "checksum": "sha256:93c5fe6589243bff8f4d6934d82616a4cce0f30d071c513cc56f8e53bfc19d17", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcomps-0.1.14-4.fc32.aarch64.rpm", + "checksum": "sha256:e2eecb13c57728ce4c8e04ad8747ca51fe086a58bd55c0d3d29cf9683d0d09ad", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcroco-0.6.13-3.fc32.aarch64.rpm", + "checksum": "sha256:ff135143da781c30919f03000c4409cc09d38cd65cd7b01f3c540617ce0f69db", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcurl-7.69.1-1.fc32.aarch64.rpm", + "checksum": "sha256:cc30c04cfc6be2239727608174e90ac766cb7c77cdd1b70c4be619cb2df42a52", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdb-5.3.28-40.fc32.aarch64.rpm", + "checksum": "sha256:7bfb33bfa3c3a952c54cb61b7f7c7047c1fd91e8e334f53f54faea6f34e6c0bb", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdb-utils-5.3.28-40.fc32.aarch64.rpm", + "checksum": "sha256:435530a0b9a086018694034ce48e9589348fc66389d884977b400f2f74814ac8", + "check_gpg": true + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "44.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdhash-0.5.0-44.fc32.aarch64.rpm", + "checksum": "sha256:82bd171ac3f9a08c44e8144297a4dd9cd2567a916065a57eb656330e2b4e007f", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdnf-0.45.0-3.fc32.aarch64.rpm", + "checksum": "sha256:62afc19040e8fbf7ac7946f02d67cdd19086658c3d8713a6c120482fd769537e", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "32.20191231cvs.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libedit-3.1-32.20191231cvs.fc32.aarch64.rpm", + "checksum": "sha256:3e25d33bea0d8de847f817b428fe92a6b02376634c7a6f0672bc668fa769869d", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "8.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libevent-2.1.8-8.fc32.aarch64.rpm", + "checksum": "sha256:ad874e09de00dbdb887eb6a94351869950ead7f6409dfa191d1443d3bb9dd255", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libfdisk-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:58988a2b7213098503b56d5388eba1bf2a01b9ff027961acb1e9f55c47d237ad", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "24.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libffi-3.1-24.fc32.aarch64.rpm", + "checksum": "sha256:291df16c0ae66fa5685cd033c84ae92765be4f4e17ce4936e47dc602ac6ff93e", + "check_gpg": true + }, + { + "name": "libfido2", + "epoch": 0, + "version": "1.3.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libfido2-1.3.1-1.fc32.aarch64.rpm", + "checksum": "sha256:a9e2dcc8d57bff7ec3424eb79de77ebe91a956dd39faa691b2ab4babd1683233", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgcc-10.0.1-0.11.fc32.aarch64.rpm", + "checksum": "sha256:28892ae62cd1b4dadded523be8cb5f9e0fddeaa864919ee4b0dfad3bba8fd06f", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgcrypt-1.8.5-3.fc32.aarch64.rpm", + "checksum": "sha256:e96e4caf6c98faa5fb61bd3b13ee7afa0d7510d3176fe3d3cbf485847ce985fd", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgomp-10.0.1-0.11.fc32.aarch64.rpm", + "checksum": "sha256:09a9dd8c3ae4fe9a9817c71c4b2af35f2d7e1dbf2c9f4659028ce69a5d2f2d02", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgpg-error-1.36-3.fc32.aarch64.rpm", + "checksum": "sha256:cffbab9f6052ee2c7b8bcc369a411e319174de094fb94eaf71555ce485049a74", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.3.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libidn2-2.3.0-2.fc32.aarch64.rpm", + "checksum": "sha256:500c4abc34ff58e6f06c7194034b2d68b618c5e6afa89b551ab74ef226e1880a", + "check_gpg": true + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "44.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libini_config-1.3.1-44.fc32.aarch64.rpm", + "checksum": "sha256:d891183e3f802f3e2b6ca77f1ea528d2aec52be8ef38ae2cb93c11f82ecff321", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libkcapi-1.1.5-2.fc32.aarch64.rpm", + "checksum": "sha256:5adad0edfcf9c4415734d11a35a5c14cbf53eb32827572dd6af670fadcad7f78", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.aarch64.rpm", + "checksum": "sha256:2f117f22ec79fed75752c69b7e1c70582bad93b55fb4a5b0dc2bca978bafce85", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libksba-1.3.5-11.fc32.aarch64.rpm", + "checksum": "sha256:1ee4f732b1b4b237d7301219fc5c52b63c9ab9e77db746612852fef5610f69b7", + "check_gpg": true + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.1.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libldb-2.1.1-1.fc32.aarch64.rpm", + "checksum": "sha256:3c29cc12a25791c83c040def2df8f107b161ecc0cbf3965cad82f38a451c7963", + "check_gpg": true + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.3.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmaxminddb-1.3.2-2.fc32.aarch64.rpm", + "checksum": "sha256:e4056437576c76b1b4fe8d8b98cce6f006194d74cbc0a30058cf29aab6b9307f", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "10.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmetalink-0.1.3-10.fc32.aarch64.rpm", + "checksum": "sha256:c748420c4d7407a95f840416a80c468d8304e529f93b40a45081a49fd7a29232", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmnl-1.0.4-11.fc32.aarch64.rpm", + "checksum": "sha256:2356581880df7b8275896b18de24e432a362ee159fc3127f92476ffe8d0432fd", + "check_gpg": true + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmodulemd-2.9.1-1.fc32.aarch64.rpm", + "checksum": "sha256:c0ad832521885f97d08c043350b72f4fade0bbe995f81da8a18370a932bf5aee", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmount-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:1e533f7f64169288e90b3851e509cf1aedf4da0fe986288da53516b2b77ac77d", + "check_gpg": true + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libndp-1.7-5.fc32.aarch64.rpm", + "checksum": "sha256:6bc574a7f67dc28909f84c05bfc3dfeeac04c088f809032d75313aac022f6064", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.aarch64.rpm", + "checksum": "sha256:400c91d4d6d1125ec891c16ea72aa4123fc4c96e02f8668a8ae6dbc27113d408", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "17.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.aarch64.rpm", + "checksum": "sha256:a0260a37707734c6f97885687a6ad5967c23cb0c693668bf1402e6ee5d4abe1e", + "check_gpg": true + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.4.3", + "release": "0.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnfsidmap-2.4.3-0.fc32.aarch64.rpm", + "checksum": "sha256:ab86efda86a5d4cb8b1fa979bcc37aeb5601616d48a4a9d34b4f4ceb4e553747", + "check_gpg": true + }, + { + "name": "libnftnl", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnftnl-1.1.5-2.fc32.aarch64.rpm", + "checksum": "sha256:07cf4ae85cb34a38b22eff66e1fd996b32a5beda0c60644b06ecdff33c224ce9", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.40.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnghttp2-1.40.0-2.fc32.aarch64.rpm", + "checksum": "sha256:17f5c9a25bf0f952f6defa6a857e938bfc1f72c69217f666a537bf8f1daff5f8", + "check_gpg": true + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnl3-3.5.0-2.fc32.aarch64.rpm", + "checksum": "sha256:231cefc11eb5a9ac8f23bbd294cef0bf3a690040df3048e063f8a269f2db75f8", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "6.20180605git4a062cf.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.aarch64.rpm", + "checksum": "sha256:4139803076f102e2224b81b4f1da3f6d066b89e272201d2720557763f9acfcd5", + "check_gpg": true + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "44.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpath_utils-0.2.1-44.fc32.aarch64.rpm", + "checksum": "sha256:2dcee99ce05f5844438f827cf0cd1578f7863efb31c204bbc441cd2265ad9a7d", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpcap-1.9.1-3.fc32.aarch64.rpm", + "checksum": "sha256:dbc1d91408e0e115e1c084f4c28d2d15f07cfc8b6c6d766192b65a28407422e7", + "check_gpg": true + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpipeline-1.5.2-2.fc32.aarch64.rpm", + "checksum": "sha256:9d1baa8d8cdd02711e1724b08de678f2bda92807a6ae0e9d1b6c2443e2810ffd", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpsl-0.21.0-4.fc32.aarch64.rpm", + "checksum": "sha256:faca2dc4a45d1bd365d9364ea59f361854f3379ef6f13e9fa0a85368a0621f45", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpwquality-1.4.2-2.fc32.aarch64.rpm", + "checksum": "sha256:1a096ed78df5a9339c4b3c15372275a884a1124b048ffcfbdb768db881e47ab2", + "check_gpg": true + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "44.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libref_array-0.1.5-44.fc32.aarch64.rpm", + "checksum": "sha256:ea775b1806d30c2d076f685977c0efbe57ff2afcf10a3c8f8f1a250ecb9ef5b6", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.11.1", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/librepo-1.11.1-4.fc32.aarch64.rpm", + "checksum": "sha256:56bc7a11331fe199a45bc23f348deff8cd5e1ee02c617b6ed429d61ba537fc8b", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.12.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm", + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.2", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libseccomp-2.4.2-3.fc32.aarch64.rpm", + "checksum": "sha256:7149be5bd74792181003b872a9bc636157f4b795b12374c0857fb7271f2567ac", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.20.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsecret-0.20.2-2.fc32.aarch64.rpm", + "checksum": "sha256:7cac868a4b1ac9c380192a31a45a314613af3f958aaf2b778642667dc73bc182", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libselinux-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:6028f86f132faee662e97075270f68e8125fd339c8689a2b661facd25c3b829b", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libselinux-utils-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:91cd21ca1f5b881a78e9c0a6dd3cdad7401f7216a1ab3acbe9337d8e3e054a5e", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsemanage-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:b78889f3a2ac801456c643fd5603017383221aa33eac381e4f74b9a13fbf3830", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsepol-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:fe06eff5ac0e3e538775aad2cb0f801af491476e9cb508caa9107f4a5f913e52", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "10.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsigsegv-2.11-10.fc32.aarch64.rpm", + "checksum": "sha256:836a45edfd4e2cda0b6bac254b2e6225aad36f9bae0f96f2fe7da42896db0dae", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsmartcols-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:0042a3d3b19152d0a16ee321cbe99208a2f4ebd009515c1f6f962a1d5f9cde26", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsolv-0.7.11-2.fc32.aarch64.rpm", + "checksum": "sha256:15a8a718cb6f629474fec7756b4701430e14ff94aad6cf6fe20f3eb7174a7783", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libss-1.45.5-3.fc32.aarch64.rpm", + "checksum": "sha256:a830bb13938bedaf5cc91b13ab78e2cf9172b06727b7e9e1bec2cddce8dd9e2d", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libssh-0.9.3-2.fc32.aarch64.rpm", + "checksum": "sha256:7bd98aa2d554f06ab525320ebf628a6e002011462e71a47337676a2c99de5aec", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm", + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_autofs-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:ed19ff9b81a5a72262a95b8ff52c867efc43aa50d28171328afd4791ee3daef8", + "check_gpg": true + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_certmap-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:0175f5d1834c1cb4a1f44c9ae20960fa674f26add0b88f903407abf2f3d22f82", + "check_gpg": true + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_idmap-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:05121688770a80889f1e1d0594a5b14d6ac30cc6fe4d431e3aa829f2290ea973", + "check_gpg": true + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_nss_idmap-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:eb98f6ee22b110395790e83648339d36f74068883d3d6a7a8a3ecb9cbf55bc60", + "check_gpg": true + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_sudo-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:1fab76e36bbad6727634f2a8ce6e722c0e6ca814969948ffd6ce7250bc75e7f3", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.aarch64.rpm", + "checksum": "sha256:3ea53f635b4f559b2bdb0e58d54dbfddc126b18abe23b46b94aecbf7c0d5132c", + "check_gpg": true + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.1", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtalloc-2.3.1-2.fc32.aarch64.rpm", + "checksum": "sha256:07b37612b8e0f09885ad653f3dbd2ff95a65bfd8b21c69d1cc20a4f3dbc0ef32", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.16.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtasn1-4.16.0-1.fc32.aarch64.rpm", + "checksum": "sha256:ea44ae1c951d3d4b30ff2a2d898c041ce9072acc94d6ea1e0e305c45e802019f", + "check_gpg": true + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.3", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtdb-1.4.3-2.fc32.aarch64.rpm", + "checksum": "sha256:af826bfb93a53a0bbb0209f721fc7d15c0b5200c3f81c93ef9620cc640e90b77", + "check_gpg": true + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtevent-0.10.2-2.fc32.aarch64.rpm", + "checksum": "sha256:2c9bf996e1550ed5ad42398187ee14d65315d13ec5c9e2eab32b8fed0743b1fc", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtextstyle-0.20.1-4.fc32.aarch64.rpm", + "checksum": "sha256:831fcc64c103f60608b08f4f47c2b7b5b43571cef7576b9e549e6ae001434da5", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.2.5", + "release": "1.rc2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.aarch64.rpm", + "checksum": "sha256:ef9bff2d88851209d35f9824e02fc431fba5e5347752ea1c197a57c0c45ad401", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libunistring-0.9.10-7.fc32.aarch64.rpm", + "checksum": "sha256:2d7ad38e86f5109c732a32bf9bea612c4c674aba6ad4cca2d211d826edc7fd6f", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libusbx-1.0.23-1.fc32.aarch64.rpm", + "checksum": "sha256:50d91ca18b6cdc9395424b852d2828d1b75e2af318932a2442376d2a10819f6a", + "check_gpg": true + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "24.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libuser-0.62-24.fc32.aarch64.rpm", + "checksum": "sha256:6f7b4c0efee821ea122401d350274334c6ef2d62dcacbe40942a00b162b6025b", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "18.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libutempter-1.1.6-18.fc32.aarch64.rpm", + "checksum": "sha256:22954219a63638d7418204d818c01a0e3c914e2b2eb970f2e4638dcf5a7a5634", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libuuid-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:2bc82e132696d9daa4eef545ff3352d6eb588b9a1b9584e515d15a7c3d6471df", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "9.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libverto-0.3.0-9.fc32.aarch64.rpm", + "checksum": "sha256:c494a613443f49b6cca4845f9c3410a1267f609c503a81a9a26a272443708fee", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxcrypt-4.4.16-1.fc32.aarch64.rpm", + "checksum": "sha256:64b64bab720df9dd7fd37ebf80a07795a95ac11e640eda3209b6517dcd7133e5", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxcrypt-compat-4.4.16-1.fc32.aarch64.rpm", + "checksum": "sha256:961983f7fa13bb9818d1f4b54809f6b92a5998e5a8200306084d0922546c556a", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.10.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.aarch64.rpm", + "checksum": "sha256:9db3ade981c564c361eed9068cd35acac93c1b1db54b6fb2a74070ce68141cff", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.10", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxml2-2.9.10-3.fc32.aarch64.rpm", + "checksum": "sha256:33788835331bed7f75e5cd2126d8d75511211175c9ac6d93824baec1a546a28d", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libyaml-0.2.2-3.fc32.aarch64.rpm", + "checksum": "sha256:d4fd722ee0ff5da4114b91964e430e4e45c1a428739f1e5be5db7854e5c85f11", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libzstd-1.4.4-2.fc32.aarch64.rpm", + "checksum": "sha256:2c4d03577e8661920a7b64fcc68735b795288744f1b188512a96960143030474", + "check_gpg": true + }, + { + "name": "linux-atm-libs", + "epoch": 0, + "version": "2.5.1", + "release": "26.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/linux-atm-libs-2.5.1-26.fc32.aarch64.rpm", + "checksum": "sha256:ae08e152061808ccc334cc611d8ea4d18c05daa6b68731e255a533d0572594ae", + "check_gpg": true + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20200316", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/linux-firmware-20200316-106.fc32.noarch.rpm", + "checksum": "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4", + "check_gpg": true + }, + { + "name": "linux-firmware-whence", + "epoch": 0, + "version": "20200316", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/linux-firmware-whence-20200316-106.fc32.noarch.rpm", + "checksum": "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9", + "check_gpg": true + }, + { + "name": "lmdb-libs", + "epoch": 0, + "version": "0.9.24", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/lmdb-libs-0.9.24-1.fc32.aarch64.rpm", + "checksum": "sha256:db514e9d99e58e08e698083e1ca969f9fc98ae27ee9b63aa8d2133bd95a7002e", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/lua-libs-5.3.5-7.fc32.aarch64.rpm", + "checksum": "sha256:1befc4be3c3c72b3210e54f96f4334f268eaecdd3b77af7cadea0ef31f0e2ca9", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/lz4-libs-1.9.1-2.fc32.aarch64.rpm", + "checksum": "sha256:a7394cd1b11a1b25efaab43a30b1d9687683884babc162f43e29fdee4f00bda8", + "check_gpg": true + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.9.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/man-db-2.9.0-2.fc32.aarch64.rpm", + "checksum": "sha256:086552102da5fd978a4722ddd21381d432abb9f886cd97761d2efbff2c588791", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mkpasswd-5.5.6-1.fc32.aarch64.rpm", + "checksum": "sha256:45e2c1c76a0a0b6e1164c457307250a54a7de5905992b4351a84183c2e9f2633", + "check_gpg": true + }, + { + "name": "mokutil", + "epoch": 2, + "version": "0.3.0", + "release": "15.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mokutil-0.3.0-15.fc32.aarch64.rpm", + "checksum": "sha256:cc2019e304ecdfa3a245de005342c8d617d1da0d834e510849764fb38b929655", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "4.0.2", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mpfr-4.0.2-3.fc32.aarch64.rpm", + "checksum": "sha256:94d02790ff430efebbfc12ca2c2029c66e1691b70baf7cf45159fb8464d38e56", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-6.1-15.20191109.fc32.aarch64.rpm", + "checksum": "sha256:fe7ee39b0779c467c5d8a20daff4911e1967523e6fc748179e77584168e18bde", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm", + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.aarch64.rpm", + "checksum": "sha256:a973f92acb0afe61087a69d13a532c18a39dd60b3ba4826b38350f2c6b27e417", + "check_gpg": true + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.56.20160912git.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/net-tools-2.0-0.56.20160912git.fc32.aarch64.rpm", + "checksum": "sha256:8db16495c82aeba17b61896e6414f2ce212088370e88cf73b8999bf2317c015c", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/nettle-3.5.1-5.fc32.aarch64.rpm", + "checksum": "sha256:15b2402e11402a6cb494bf7ea31ebf10bf1adb0759aab417e63d05916e56aa45", + "check_gpg": true + }, + { + "name": "nftables", + "epoch": 1, + "version": "0.9.3", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/nftables-0.9.3-2.fc32.aarch64.rpm", + "checksum": "sha256:8b30ff554cd68040f0a4a0759c502e1c1fccad2df64d2ee61145ae0f7bd668ad", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/npth-1.6-4.fc32.aarch64.rpm", + "checksum": "sha256:5b1cb1251cf7f65c50d9e3fcc11901fef5132dc177cce68a50918da481bb7629", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openldap-2.4.47-4.fc32.aarch64.rpm", + "checksum": "sha256:c030084d188fc99359cc088bd77d2ee6578e717f1cf2d067b8967c6cbe863c6e", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssh-8.2p1-2.fc32.aarch64.rpm", + "checksum": "sha256:57ee793c1f8dc1c9b58953b03d7041501eea326cefc4dda6de640761c60e31f8", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssh-clients-8.2p1-2.fc32.aarch64.rpm", + "checksum": "sha256:5fa81b28d5100f987cd8d9317ccf200ec5b94d11ed3c8e2e90137b8981e71c61", + "check_gpg": true + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssh-server-8.2p1-2.fc32.aarch64.rpm", + "checksum": "sha256:6fcaddc0fde4e23d6650cd46b3763903c7b693afa69aad52fdf87a8563aa5f84", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-1.1.1d-7.fc32.aarch64.rpm", + "checksum": "sha256:e30482032783ab59417bfaf8394be42d2e2e779a580979bd87f15bd0880df858", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.aarch64.rpm", + "checksum": "sha256:0178be1e5d6da8053061d29013d8fda8445d37eac908afbf4a2ca92faf950f2c", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.aarch64.rpm", + "checksum": "sha256:85dc7962af97e86a655b8ec5d5276e511f50b1d4abe624f4d8cb0d784007e342", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/os-prober-1.77-4.fc32.aarch64.rpm", + "checksum": "sha256:a718bc2a857bde398de2375efae50dac568217f547b272d7cbe0a1655ec0d961", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/p11-kit-0.23.20-1.fc32.aarch64.rpm", + "checksum": "sha256:afba861f69234f4cb4040085a4868c7424666a4356d0e2002e16b0afb75ec0d2", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.aarch64.rpm", + "checksum": "sha256:b867eeba06e6fc9084c227d8b3ea54f1815cb1833a29babf114fa1167aa17f2d", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "24.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pam-1.3.1-24.fc32.aarch64.rpm", + "checksum": "sha256:9738af51bf206850f6611306bed20542ed32a1701188611caab0b6896e4ffb37", + "check_gpg": true + }, + { + "name": "parted", + "epoch": 0, + "version": "3.3", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/parted-3.3-3.fc32.aarch64.rpm", + "checksum": "sha256:026212c277c72facfd48901978afded50fc4050aedaa06a24e5e57875ce48c32", + "check_gpg": true + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "8.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/passwd-0.80-8.fc32.aarch64.rpm", + "checksum": "sha256:30bf2e7deddad50a3054827c98e97adfd3ae1d24ae248980649db289198135a8", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.44", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre-8.44-1.fc32.aarch64.rpm", + "checksum": "sha256:a3775cb3bc81bb5444e26695a62b1bd2eb48a91d7bc3a361d763c185cb817de1", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre2-10.34-9.fc32.aarch64.rpm", + "checksum": "sha256:7417889b8455ba87230fd5a987fe160d86de8250b87d7ae9bbcba90c32053172", + "check_gpg": true + }, + { + "name": "pcre2-syntax", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm", + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "6.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pigz-2.4-6.fc32.aarch64.rpm", + "checksum": "sha256:77297d07807ddcb85bad6fd788c6f1692af47d00ad27305f3e2217e34e81f538", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pinentry-1.1.0-7.fc32.aarch64.rpm", + "checksum": "sha256:a580e36566f6ffceef809e49fc4c7f9b1418a16123d4d49079c8423b6a337e67", + "check_gpg": true + }, + { + "name": "plymouth", + "epoch": 0, + "version": "0.9.4", + "release": "14.20200325gite31c81f.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/plymouth-0.9.4-14.20200325gite31c81f.fc32.aarch64.rpm", + "checksum": "sha256:7967ddee97af6d0f83cfd3226f8e187edac2823ec1e4cef53b54415d759bffa9", + "check_gpg": true + }, + { + "name": "plymouth-core-libs", + "epoch": 0, + "version": "0.9.4", + "release": "14.20200325gite31c81f.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/plymouth-core-libs-0.9.4-14.20200325gite31c81f.fc32.aarch64.rpm", + "checksum": "sha256:cfc944e77ac28ff62a93736d901a5a312fec5efd17f5e7800deafb4b801ae00d", + "check_gpg": true + }, + { + "name": "plymouth-scripts", + "epoch": 0, + "version": "0.9.4", + "release": "14.20200325gite31c81f.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/plymouth-scripts-0.9.4-14.20200325gite31c81f.fc32.aarch64.rpm", + "checksum": "sha256:2c6ddfd3a551252013f647539df30097febcc4e0cd7c6eb2d1690e9f5aff66d6", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/policycoreutils-3.0-2.fc32.aarch64.rpm", + "checksum": "sha256:29bcc2f3f85ca7bdc22178af3e16743f55353bd9f25fb4c748d8c9f7117fe56f", + "check_gpg": true + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.116", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/polkit-libs-0.116-7.fc32.aarch64.rpm", + "checksum": "sha256:54613bd9e0524bb992bd7779c80a24b12df744085031cb8f3defb5fae55ca0f5", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "19.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/popt-1.16-19.fc32.aarch64.rpm", + "checksum": "sha256:8f4be33cb040f081bb1f863b92e94ac7838af743cb5a0ce9d8c8ec9a611f71a6", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/procps-ng-3.3.15-7.fc32.aarch64.rpm", + "checksum": "sha256:bcb0cd53344744f9c8d11041eb76fc5b304f78c791846521bbe105e78f2bd0f8", + "check_gpg": true + }, + { + "name": "psmisc", + "epoch": 0, + "version": "23.3", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/psmisc-23.3-3.fc32.aarch64.rpm", + "checksum": "sha256:1eb386a258cebf600319b1f18344b047c9182485936d96da9c2b1067ac1c1bba", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm", + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-3.8.2-2.fc32.aarch64.rpm", + "checksum": "sha256:857330a729697c1b6e8d86550391f1abf4db87d5ffeffeb5f00065fa8be85cbd", + "check_gpg": true + }, + { + "name": "python3-attrs", + "epoch": 0, + "version": "19.3.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-attrs-19.3.0-2.fc32.noarch.rpm", + "checksum": "sha256:bcb07748c8688c788ec69c3a33c0abd1bb3a496b9aa09b5729265670bc7ba0eb", + "check_gpg": true + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-audit-3.0-0.19.20191104git1c2f876.fc32.aarch64.rpm", + "checksum": "sha256:16902074f43963a360df42fec639f8b30ad29ee0d8a9799ac26ff0ba5c60e4cd", + "check_gpg": true + }, + { + "name": "python3-babel", + "epoch": 0, + "version": "2.8.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-babel-2.8.0-2.fc32.noarch.rpm", + "checksum": "sha256:5719dd2fb399cadec08b4ac41c794239d2a2de2f012faeb970ab90a07bba0084", + "check_gpg": true + }, + { + "name": "python3-cffi", + "epoch": 0, + "version": "1.14.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-cffi-1.14.0-1.fc32.aarch64.rpm", + "checksum": "sha256:844ee747d24d934104398be60747b407d19c8106ead11b06fe92fcc62bd765fc", + "check_gpg": true + }, + { + "name": "python3-chardet", + "epoch": 0, + "version": "3.0.4", + "release": "15.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-chardet-3.0.4-15.fc32.noarch.rpm", + "checksum": "sha256:e7b9fd73c260cd22d3a36823530d4f623ea0e16844b900a5677c769afa76341c", + "check_gpg": true + }, + { + "name": "python3-configobj", + "epoch": 0, + "version": "5.0.6", + "release": "20.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-configobj-5.0.6-20.fc32.noarch.rpm", + "checksum": "sha256:81b6181b947d50e0a1ea681298417e552421d6714900d07a34dc25899e5c9f60", + "check_gpg": true + }, + { + "name": "python3-cryptography", + "epoch": 0, + "version": "2.8", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-cryptography-2.8-3.fc32.aarch64.rpm", + "checksum": "sha256:bbf9571bf10df55a90e73b372da33b6ac54fad5778cea58064b7b57dcbb17180", + "check_gpg": true + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.8.0", + "release": "8.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dateutil-2.8.0-8.fc32.noarch.rpm", + "checksum": "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862", + "check_gpg": true + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.16", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dbus-1.2.16-1.fc32.aarch64.rpm", + "checksum": "sha256:092370d1e62096782f329944df0e7e01cc49bbc0fa4071d63f352cf45e89e5bc", + "check_gpg": true + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.4.0", + "release": "6.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-decorator-4.4.0-6.fc32.noarch.rpm", + "checksum": "sha256:129adf9147d5d120546ca8e0fb5f165761106d386d366fe82591e372754d0b4a", + "check_gpg": true + }, + { + "name": "python3-distro", + "epoch": 0, + "version": "1.4.0", + "release": "5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-distro-1.4.0-5.fc32.noarch.rpm", + "checksum": "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.14", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dnf-plugins-core-4.0.14-1.fc32.noarch.rpm", + "checksum": "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576", + "check_gpg": true + }, + { + "name": "python3-firewall", + "epoch": 0, + "version": "0.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-firewall-0.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:8ee8c4bbf024b998ffb77a6b4194a2306ac21c5a6fcf70c8c81a0fbf38f7c7fc", + "check_gpg": true + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.36.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-gobject-base-3.36.0-2.fc32.aarch64.rpm", + "checksum": "sha256:aced65470e04746b0db1d414ef8fc5e84f8f7cc9becfd187a92d130f21c854c4", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-gpg-1.13.1-6.fc32.aarch64.rpm", + "checksum": "sha256:fe96e7fe3da0db38b8b8850c9dedd50c1358309fee24c774bc64ddee62bb11be", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.aarch64.rpm", + "checksum": "sha256:79defc84763baec2190da8941221abfa002d6f6c9e8c3486e2c492389fca2a57", + "check_gpg": true + }, + { + "name": "python3-idna", + "epoch": 0, + "version": "2.8", + "release": "6.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-idna-2.8-6.fc32.noarch.rpm", + "checksum": "sha256:61c51596cc97f35177efe8dc5e2ca52d8fd528570f33c184497f419259b73c90", + "check_gpg": true + }, + { + "name": "python3-jinja2", + "epoch": 0, + "version": "2.11.1", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jinja2-2.11.1-1.fc32.noarch.rpm", + "checksum": "sha256:645f82cf62da25742cab5e8ffd1f764301b84ab19710d9f3fb3aff1cb57ffdc6", + "check_gpg": true + }, + { + "name": "python3-jsonpatch", + "epoch": 0, + "version": "1.21", + "release": "11.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jsonpatch-1.21-11.fc32.noarch.rpm", + "checksum": "sha256:4c9d77d63ddc7dda0e018fc1c97d46025794e336e58d838a631fcc130dfa3b9b", + "check_gpg": true + }, + { + "name": "python3-jsonpointer", + "epoch": 0, + "version": "1.10", + "release": "19.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jsonpointer-1.10-19.fc32.noarch.rpm", + "checksum": "sha256:6615aae3def0c49910e43e2d69f7ae8852694953dceb4b6235b5cf4099296d70", + "check_gpg": true + }, + { + "name": "python3-jsonschema", + "epoch": 0, + "version": "3.2.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jsonschema-3.2.0-2.fc32.noarch.rpm", + "checksum": "sha256:6890a9545194ad6cf1b0c58e5273132171a9ced9cb665a1442aa62b6b6d3d2ea", + "check_gpg": true + }, + { + "name": "python3-jwt", + "epoch": 0, + "version": "1.7.1", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jwt-1.7.1-7.fc32.noarch.rpm", + "checksum": "sha256:d0bc781a80be1d1fe204ec6b26255240261d55f6e24a28343572f2221a00533e", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.aarch64.rpm", + "checksum": "sha256:e76aea00d64d100bafcea1672ce65f8bfd47bdf7e0dc7bf859fc0c6ec29d5823", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.aarch64.rpm", + "checksum": "sha256:023d3d7be30607410a2357b50b8ef3f94a07baf2842bfba0421f803600ec605f", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libs-3.8.2-2.fc32.aarch64.rpm", + "checksum": "sha256:32a00991ec85f0bf2a336e00033a0e70b0da963eb42d81bbad18a7a11f41d4eb", + "check_gpg": true + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libselinux-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:84313c8f10f91d10e4f734c3a605b0a771d2faa72bf43deeed60a4cf3606a0da", + "check_gpg": true + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libsemanage-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:eded265cff5d22b89a955570eba030643d6730dd5987c2efed3110ef74cd0254", + "check_gpg": true + }, + { + "name": "python3-markupsafe", + "epoch": 0, + "version": "1.1.1", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-markupsafe-1.1.1-5.fc32.aarch64.rpm", + "checksum": "sha256:a2fcc535573ade5656cdb6968eb13dd68380540b5f25a0eca3947676dc5f11d6", + "check_gpg": true + }, + { + "name": "python3-nftables", + "epoch": 1, + "version": "0.9.3", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-nftables-0.9.3-2.fc32.aarch64.rpm", + "checksum": "sha256:d1d1b3fafa2ea83870641411a9ae955be74887689516ae3cc54ada0a38b06873", + "check_gpg": true + }, + { + "name": "python3-oauthlib", + "epoch": 0, + "version": "3.0.2", + "release": "5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-oauthlib-3.0.2-5.fc32.noarch.rpm", + "checksum": "sha256:391faab010ca30610a14e0b3d54fbc0331be39bc831086fb877f8021fe4b171f", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "name": "python3-ply", + "epoch": 0, + "version": "3.11", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-ply-3.11-7.fc32.noarch.rpm", + "checksum": "sha256:f6203a41ed91197bb770a38a101d977f0f56de86ccc5a71cee9c0e198f26bcbc", + "check_gpg": true + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-policycoreutils-3.0-2.fc32.noarch.rpm", + "checksum": "sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2", + "check_gpg": true + }, + { + "name": "python3-prettytable", + "epoch": 0, + "version": "0.7.2", + "release": "22.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-prettytable-0.7.2-22.fc32.noarch.rpm", + "checksum": "sha256:4860a733ca3f22089c6c283cbdcf53123a702d60b5bffdd4fe9d76826f91139a", + "check_gpg": true + }, + { + "name": "python3-pycparser", + "epoch": 0, + "version": "2.19", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pycparser-2.19-2.fc32.noarch.rpm", + "checksum": "sha256:a0b87b2dc3c5f536e94d6a4f3563a621dfbc067a62c3d1fe69bdb70c3cecec57", + "check_gpg": true + }, + { + "name": "python3-pyrsistent", + "epoch": 0, + "version": "0.15.7", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pyrsistent-0.15.7-2.fc32.aarch64.rpm", + "checksum": "sha256:f0143760628def255de0b7e1aba6f7880705329703f7357425868483ba8f43e7", + "check_gpg": true + }, + { + "name": "python3-pyserial", + "epoch": 0, + "version": "3.4", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pyserial-3.4-7.fc32.noarch.rpm", + "checksum": "sha256:a107b3d3790a5bcfdc28f6f4718969039b103a681a2647f3cbcb82cf92e97acb", + "check_gpg": true + }, + { + "name": "python3-pysocks", + "epoch": 0, + "version": "1.7.1", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pysocks-1.7.1-4.fc32.noarch.rpm", + "checksum": "sha256:fa791a4328b4c41b7190d862de921605f266a64abee03b2ea2e8d2b644be307f", + "check_gpg": true + }, + { + "name": "python3-pytz", + "epoch": 0, + "version": "2019.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pytz-2019.3-2.fc32.noarch.rpm", + "checksum": "sha256:c93df175a0a4989aaaeb170406d8ff13a2cd93a5fc52ad33468245fea2044a86", + "check_gpg": true + }, + { + "name": "python3-pyyaml", + "epoch": 0, + "version": "5.3.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pyyaml-5.3.1-1.fc32.aarch64.rpm", + "checksum": "sha256:0055cc4eccd54df5b64c194618a26e894a0d61781c8d1f1f48687bfd296b15e4", + "check_gpg": true + }, + { + "name": "python3-requests", + "epoch": 0, + "version": "2.22.0", + "release": "8.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-requests-2.22.0-8.fc32.noarch.rpm", + "checksum": "sha256:d611f0c4252c4c4b893850807748e62cf4d17d72d544ef2744091df3206d8178", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:34efde201252afe93ec3af61af30c6d32cfbe5ecbdcecaf4667666f12482757d", + "check_gpg": true + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.3.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-setools-4.3.0-1.fc32.aarch64.rpm", + "checksum": "sha256:82d2eaad75cf45da9773298344dcbbaebb4da5b67526a6c43bc67d3f84d98616", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.14.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-six-1.14.0-2.fc32.noarch.rpm", + "checksum": "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f", + "check_gpg": true + }, + { + "name": "python3-slip", + "epoch": 0, + "version": "0.6.4", + "release": "19.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-slip-0.6.4-19.fc32.noarch.rpm", + "checksum": "sha256:d2abba1a0523bd9df5073900593ab13ec2ed2e391440be4d883314fa154370f8", + "check_gpg": true + }, + { + "name": "python3-slip-dbus", + "epoch": 0, + "version": "0.6.4", + "release": "19.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-slip-dbus-0.6.4-19.fc32.noarch.rpm", + "checksum": "sha256:cb0c64cc81e0b384bbc9d27ffcb2a655b13c91a799aad8972264aed1767926a3", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-unbound-1.9.6-2.fc32.aarch64.rpm", + "checksum": "sha256:acafdf6b20fea5974da004b77eced20b00c59a908edcef9c4c4e60815fdbf8f3", + "check_gpg": true + }, + { + "name": "python3-urllib3", + "epoch": 0, + "version": "1.25.7", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-urllib3-1.25.7-3.fc32.noarch.rpm", + "checksum": "sha256:3882823d0eb18e0e8146584f4a32a4801961f6fdc09075607746317eba3265be", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.aarch64.rpm", + "checksum": "sha256:3d6ec574fe2c612bcc45395f7ee87c68f45016f005c6d7aeee6b37897f41b8d2", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/readline-8.0-4.fc32.aarch64.rpm", + "checksum": "sha256:6007c88c459315a5e2ce354086bd0372a56e15cdd0dc14e6e889ab859f8d8365", + "check_gpg": true + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "27.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rootfiles-8.1-27.fc32.noarch.rpm", + "checksum": "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:d2bd77606d1c91208be05edce6ea04c24fa2efc880569eecb958afde1a7fb17e", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:0c30a7fd9f69ad808183afa0814e363689ff63e7a82856a790e5fa111c031b96", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:7fe5838c895cd1158a6ae2afb3794e79e393d6701330e1109592e6b45f4bd876", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:91ab783e9eb00d5baba65989c86c3d742033bd2306ff7adb0b78185f28d2ca86", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:7d5d62696fc69bb890912be71c05e92496129f198838cb56d349a8fc700a85a6", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:33ca43cf0714aef344a70be4cfa42322694cc975a2eeee0bf31325dbca7f2842", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sed-4.5-5.fc32.aarch64.rpm", + "checksum": "sha256:ccf07a3682a1038a6224b3da69e20f201584ed1c879539cedb57e184aa14429a", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.6", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm", + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.8.1", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/shadow-utils-4.8.1-2.fc32.aarch64.rpm", + "checksum": "sha256:debd948a7e454f07dd7ab8ed79984158b98ce333d77be948e4393bb87c518ab8", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.15", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/shared-mime-info-1.15-3.fc32.aarch64.rpm", + "checksum": "sha256:a92c4a583aacd37beb069c996307bd782f809c78fd1fb802de25a53efbaff8f8", + "check_gpg": true + }, + { + "name": "shim-aa64", + "epoch": 0, + "version": "15", + "release": "8", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/shim-aa64-15-8.aarch64.rpm", + "checksum": "sha256:bc2c4637779e037072ebbd00215afbb33ce05706c7851cfde4cc0637c63f75f3", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.31.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.aarch64.rpm", + "checksum": "sha256:c75bf533b09243daeca728129a6fe10fca47d0c150fd43b5dab7b4993584536f", + "check_gpg": true + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sssd-client-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:cc531264ae00fbc4e465b6b47c8f3772edee80346b92cee1fae88d8cdb9dcdcf", + "check_gpg": true + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sssd-common-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:b3657ad1419ab11e07608c7bc4da75a91162b2398d66febfc061795bc1587036", + "check_gpg": true + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sssd-kcm-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:5ce4acbf25abd83a562f20e9a8a73b8860a766fb543d69ed9db6eb57fd75fc70", + "check_gpg": true + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sssd-nfs-idmap-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:46aa2a21a000eb70097a86788d853602f7db1238156f2364a802f0b37f0dc4e6", + "check_gpg": true + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.9.0", + "release": "0.1.b4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sudo-1.9.0-0.1.b4.fc32.aarch64.rpm", + "checksum": "sha256:56b5cea4fa7f4d74d4d15aae43ab4827387dead4659bd2bede66c38057cd19e7", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-245.4-1.fc32.aarch64.rpm", + "checksum": "sha256:41c6a8ea4240f2fa6cea0333cc6d5f59731ac843398eb457c182e90af367783c", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-libs-245.4-1.fc32.aarch64.rpm", + "checksum": "sha256:52aa6e698e60cd360d5b9473fd1ebcc7e238e2125449bfdcc41b3e0fe13ae645", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-pam-245.4-1.fc32.aarch64.rpm", + "checksum": "sha256:9baa05a69943b0c6274403276f45817ab56193de62b5b64205b4fd35951e0895", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm", + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-udev-245.4-1.fc32.aarch64.rpm", + "checksum": "sha256:ff6540076bd7247ca2c1c8beb8979adb5eaf27877125c7f5cc187dc10913048f", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/trousers-0.3.13-13.fc31.aarch64.rpm", + "checksum": "sha256:3242e0ce48f95d7a271125cf1222b5af09e20fe85194623d95336e1c678bdee8", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/trousers-lib-0.3.13-13.fc31.aarch64.rpm", + "checksum": "sha256:a6c26dd0ba8fc6a15e845f72f90e89b62f7344d7793896e707e610286b5e4541", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/tss2-1331-4.fc32.aarch64.rpm", + "checksum": "sha256:91e35b3750f5029be019542a4143cf00de68559b9ab6ae6df2c8f7ea6e60acd9", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm", + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/u/unbound-libs-1.9.6-2.fc32.aarch64.rpm", + "checksum": "sha256:654a9a9997c975998e1cb5d9250cd34b9d9d4d69f43c9282e67ad4d38fa2bcdf", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/u/util-linux-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:25e6968493572c680d6f8cad03e591f6e1e0e6ce0d1fbe3648d4b64ba529491d", + "check_gpg": true + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.2.525", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/v/vim-minimal-8.2.525-1.fc32.aarch64.rpm", + "checksum": "sha256:20f32df3b4961ef659a4822686978e0501fc5262e942046b53b24ed11e77476b", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "19.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/w/which-2.21-19.fc32.aarch64.rpm", + "checksum": "sha256:d552c735d48fa647509605f524863eab28b69b9fc8d7c62a67479c3af0878024", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm", + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.4.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xfsprogs-5.4.0-3.fc32.aarch64.rpm", + "checksum": "sha256:fc6b083682762fb891b50ed6e9f684ac54a2a05a78e24078ff66d4636ae89588", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.29", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm", + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xz-5.2.5-1.fc32.aarch64.rpm", + "checksum": "sha256:202d761caf4c9d4937c04388a7180d6687a79e8141136be0f7ecc3a54bf80594", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xz-libs-5.2.5-1.fc32.aarch64.rpm", + "checksum": "sha256:48381163a3f2c524697efc07538f040fde0b69d4e0fdcbe3bcfbc9924dd7d5dd", + "check_gpg": true + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/y/yum-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.aarch64.rpm", + "checksum": "sha256:0a31a882e4ac33233b36e2c61cc09125a936f54877137d5bb2ddc1ca8a5f9a12", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "21.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/z/zlib-1.2.11-21.fc32.aarch64.rpm", + "checksum": "sha256:df7184fef93e9f8f535d78349605595a812511db5e6dee26cbee15569a055422", + "check_gpg": true + } + ], + "checksums": { + "0": "sha256:f56d50d2c120f5fe150f53a3f72d2b8df93d0c4c51e9ae866dfa08f1d5517fb1" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac ro no_timer_check console=ttyS0,115200n8 console=tty1 biosdevname=0 net.ifnames=0 console=ttyS0,115200" + }, + "bootloader": "unknown", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "initrd": "/boot/initramfs-5.6.6-300.fc32.aarch64.img", + "linux": "/boot/vmlinuz-5.6.6-300.fc32.aarch64", + "options": "$kernelopts", + "title": "Fedora (5.6.6-300.fc32.aarch64) 32 (Thirty Two)", + "version": "5.6.6-300.fc32.aarch64" + } + ], + "firewall-enabled": [ + "ssh", + "mdns", + "dhcpv6-client" + ], + "fstab": [ + [ + "UUID=46BB-8120", + "/boot/efi", + "vfat", + "umask=0077,shortname=winnt", + "0", + "2" + ], + [ + "UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "/", + "ext4", + "defaults", + "1", + "1" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:993:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:997:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "render:x:996:", + "root:x:0:", + "ssh_keys:x:998:", + "sshd:x:74:", + "sys:x:3:", + "systemd-coredump:x:995:", + "systemd-journal:x:190:", + "systemd-network:x:192:", + "systemd-resolve:x:193:", + "systemd-timesync:x:994:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:999:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "raw", + "os-release": { + "ANSI_COLOR": "0;34", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:fedoraproject:fedora:32", + "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f32/system-administrators-guide/", + "HOME_URL": "https://fedoraproject.org/", + "ID": "fedora", + "LOGO": "fedora-logo-icon", + "NAME": "Fedora", + "PLATFORM_ID": "platform:f32", + "PRETTY_NAME": "Fedora 32 (Thirty Two)", + "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy", + "REDHAT_BUGZILLA_PRODUCT": "Fedora", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "32", + "REDHAT_SUPPORT_PRODUCT": "Fedora", + "REDHAT_SUPPORT_PRODUCT_VERSION": "32", + "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help", + "VERSION": "32 (Thirty Two)", + "VERSION_CODENAME": "", + "VERSION_ID": "32" + }, + "packages": [ + "NetworkManager-1.22.10-1.fc32.aarch64", + "NetworkManager-libnm-1.22.10-1.fc32.aarch64", + "acl-2.2.53-5.fc32.aarch64", + "alternatives-1.11-6.fc32.aarch64", + "audit-3.0-0.19.20191104git1c2f876.fc32.aarch64", + "audit-libs-3.0-0.19.20191104git1c2f876.fc32.aarch64", + "basesystem-11-9.fc32.noarch", + "bash-5.0.11-2.fc32.aarch64", + "bzip2-libs-1.0.8-2.fc32.aarch64", + "c-ares-1.15.0-5.fc32.aarch64", + "ca-certificates-2020.2.40-3.fc32.noarch", + "checkpolicy-3.0-3.fc32.aarch64", + "chrony-3.5-8.fc32.aarch64", + "cloud-init-19.4-2.fc32.noarch", + "compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch", + "compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch", + "compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch", + "coreutils-8.32-3.fc32.1.aarch64", + "coreutils-common-8.32-3.fc32.1.aarch64", + "cpio-2.13-4.fc32.aarch64", + "cracklib-2.9.6-22.fc32.aarch64", + "cracklib-dicts-2.9.6-22.fc32.aarch64", + "crypto-policies-20191128-5.gitcd267a5.fc32.noarch", + "crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch", + "cryptsetup-libs-2.3.0-1.fc32.aarch64", + "curl-7.69.1-1.fc32.aarch64", + "cyrus-sasl-lib-2.1.27-4.fc32.aarch64", + "dbus-1.12.16-4.fc32.aarch64", + "dbus-broker-22-1.fc32.aarch64", + "dbus-common-1.12.16-4.fc32.noarch", + "dbus-libs-1.12.16-4.fc32.aarch64", + "dbxtool-8-11.fc32.aarch64", + "dejavu-sans-fonts-2.37-7.fc32.noarch", + "deltarpm-3.6.2-5.fc32.aarch64", + "device-mapper-1.02.171-1.fc32.aarch64", + "device-mapper-libs-1.02.171-1.fc32.aarch64", + "dhcp-client-4.4.2-5.b1.fc32.aarch64", + "dhcp-common-4.4.2-5.b1.fc32.noarch", + "diffutils-3.7-4.fc32.aarch64", + "dnf-4.2.19-1.fc32.noarch", + "dnf-data-4.2.19-1.fc32.noarch", + "dnf-plugins-core-4.0.14-1.fc32.noarch", + "dracut-050-26.git20200316.fc32.aarch64", + "dracut-config-generic-050-26.git20200316.fc32.aarch64", + "e2fsprogs-1.45.5-3.fc32.aarch64", + "e2fsprogs-libs-1.45.5-3.fc32.aarch64", + "efi-filesystem-4-4.fc32.noarch", + "efibootmgr-16-7.fc32.aarch64", + "efivar-libs-37-7.fc32.aarch64", + "elfutils-debuginfod-client-0.179-1.fc32.aarch64", + "elfutils-default-yama-scope-0.179-1.fc32.noarch", + "elfutils-libelf-0.179-1.fc32.aarch64", + "elfutils-libs-0.179-1.fc32.aarch64", + "expat-2.2.8-2.fc32.aarch64", + "fedora-gpg-keys-32-1.noarch", + "fedora-release-32-1.noarch", + "fedora-release-common-32-1.noarch", + "fedora-repos-32-1.noarch", + "file-5.38-2.fc32.aarch64", + "file-libs-5.38-2.fc32.aarch64", + "filesystem-3.14-2.fc32.aarch64", + "findutils-4.7.0-3.fc32.aarch64", + "fipscheck-1.5.0-8.fc32.aarch64", + "fipscheck-lib-1.5.0-8.fc32.aarch64", + "firewalld-0.8.2-2.fc32.noarch", + "firewalld-filesystem-0.8.2-2.fc32.noarch", + "fonts-filesystem-2.0.3-1.fc32.noarch", + "fuse-libs-2.9.9-9.fc32.aarch64", + "gawk-5.0.1-7.fc32.aarch64", + "gdbm-libs-1.18.1-3.fc32.aarch64", + "geolite2-city-20191217-2.fc32.noarch", + "geolite2-country-20191217-2.fc32.noarch", + "gettext-0.20.1-4.fc32.aarch64", + "gettext-libs-0.20.1-4.fc32.aarch64", + "glib2-2.64.1-1.fc32.aarch64", + "glibc-2.31-2.fc32.aarch64", + "glibc-common-2.31-2.fc32.aarch64", + "glibc-langpack-en-2.31-2.fc32.aarch64", + "gmp-6.1.2-13.fc32.aarch64", + "gnupg2-2.2.19-1.fc32.aarch64", + "gnupg2-smime-2.2.19-1.fc32.aarch64", + "gnutls-3.6.13-1.fc32.aarch64", + "gobject-introspection-1.64.1-1.fc32.aarch64", + "gpg-pubkey-12c944d0-5d5156ab", + "gpgme-1.13.1-6.fc32.aarch64", + "grep-3.3-4.fc32.aarch64", + "groff-base-1.22.3-21.fc32.aarch64", + "grub2-common-2.04-12.fc32.noarch", + "grub2-efi-aa64-2.04-12.fc32.aarch64", + "grub2-tools-2.04-12.fc32.aarch64", + "grub2-tools-minimal-2.04-12.fc32.aarch64", + "grubby-8.40-40.fc32.aarch64", + "gzip-1.10-2.fc32.aarch64", + "hostname-3.23-2.fc32.aarch64", + "ima-evm-utils-1.2.1-3.fc32.aarch64", + "initscripts-10.02-3.fc32.aarch64", + "ipcalc-0.4.0-2.fc32.aarch64", + "iproute-5.5.0-1.fc32.aarch64", + "iproute-tc-5.5.0-1.fc32.aarch64", + "ipset-7.6-1.fc32.aarch64", + "ipset-libs-7.6-1.fc32.aarch64", + "iptables-libs-1.8.4-7.fc32.aarch64", + "iptables-nft-1.8.4-7.fc32.aarch64", + "iputils-20190515-5.fc32.aarch64", + "jansson-2.12-5.fc32.aarch64", + "json-c-0.13.1-9.fc32.aarch64", + "kbd-2.2.0-1.fc32.aarch64", + "kbd-legacy-2.2.0-1.fc32.noarch", + "kbd-misc-2.2.0-1.fc32.noarch", + "kernel-5.6.6-300.fc32.aarch64", + "kernel-core-5.6.6-300.fc32.aarch64", + "kernel-modules-5.6.6-300.fc32.aarch64", + "keyutils-libs-1.6-4.fc32.aarch64", + "kmod-27-1.fc32.aarch64", + "kmod-libs-27-1.fc32.aarch64", + "kpartx-0.8.2-3.fc32.aarch64", + "krb5-libs-1.18-1.fc32.aarch64", + "langpacks-core-en-3.0-3.fc32.noarch", + "langpacks-core-font-en-3.0-3.fc32.noarch", + "langpacks-en-3.0-3.fc32.noarch", + "less-551-3.fc32.aarch64", + "libacl-2.2.53-5.fc32.aarch64", + "libarchive-3.4.2-1.fc32.aarch64", + "libargon2-20171227-4.fc32.aarch64", + "libassuan-2.5.3-3.fc32.aarch64", + "libattr-2.4.48-8.fc32.aarch64", + "libbasicobjects-0.1.1-44.fc32.aarch64", + "libblkid-2.35.1-7.fc32.aarch64", + "libbrotli-1.0.7-10.fc32.aarch64", + "libcap-2.26-7.fc32.aarch64", + "libcap-ng-0.7.10-2.fc32.aarch64", + "libcbor-0.5.0-7.fc32.aarch64", + "libcollection-0.7.0-44.fc32.aarch64", + "libcom_err-1.45.5-3.fc32.aarch64", + "libcomps-0.1.14-4.fc32.aarch64", + "libcroco-0.6.13-3.fc32.aarch64", + "libcurl-7.69.1-1.fc32.aarch64", + "libdb-5.3.28-40.fc32.aarch64", + "libdb-utils-5.3.28-40.fc32.aarch64", + "libdhash-0.5.0-44.fc32.aarch64", + "libdnf-0.45.0-3.fc32.aarch64", + "libedit-3.1-32.20191231cvs.fc32.aarch64", + "libevent-2.1.8-8.fc32.aarch64", + "libfdisk-2.35.1-7.fc32.aarch64", + "libffi-3.1-24.fc32.aarch64", + "libfido2-1.3.1-1.fc32.aarch64", + "libgcc-10.0.1-0.11.fc32.aarch64", + "libgcrypt-1.8.5-3.fc32.aarch64", + "libgomp-10.0.1-0.11.fc32.aarch64", + "libgpg-error-1.36-3.fc32.aarch64", + "libidn2-2.3.0-2.fc32.aarch64", + "libini_config-1.3.1-44.fc32.aarch64", + "libkcapi-1.1.5-2.fc32.aarch64", + "libkcapi-hmaccalc-1.1.5-2.fc32.aarch64", + "libksba-1.3.5-11.fc32.aarch64", + "libldb-2.1.1-1.fc32.aarch64", + "libmaxminddb-1.3.2-2.fc32.aarch64", + "libmetalink-0.1.3-10.fc32.aarch64", + "libmnl-1.0.4-11.fc32.aarch64", + "libmodulemd-2.9.1-1.fc32.aarch64", + "libmount-2.35.1-7.fc32.aarch64", + "libndp-1.7-5.fc32.aarch64", + "libnetfilter_conntrack-1.0.7-4.fc32.aarch64", + "libnfnetlink-1.0.1-17.fc32.aarch64", + "libnfsidmap-2.4.3-0.fc32.aarch64", + "libnftnl-1.1.5-2.fc32.aarch64", + "libnghttp2-1.40.0-2.fc32.aarch64", + "libnl3-3.5.0-2.fc32.aarch64", + "libnsl2-1.2.0-6.20180605git4a062cf.fc32.aarch64", + "libpath_utils-0.2.1-44.fc32.aarch64", + "libpcap-1.9.1-3.fc32.aarch64", + "libpipeline-1.5.2-2.fc32.aarch64", + "libpsl-0.21.0-4.fc32.aarch64", + "libpwquality-1.4.2-2.fc32.aarch64", + "libref_array-0.1.5-44.fc32.aarch64", + "librepo-1.11.1-4.fc32.aarch64", + "libreport-filesystem-2.12.0-3.fc32.noarch", + "libseccomp-2.4.2-3.fc32.aarch64", + "libsecret-0.20.2-2.fc32.aarch64", + "libselinux-3.0-3.fc32.aarch64", + "libselinux-utils-3.0-3.fc32.aarch64", + "libsemanage-3.0-3.fc32.aarch64", + "libsepol-3.0-3.fc32.aarch64", + "libsigsegv-2.11-10.fc32.aarch64", + "libsmartcols-2.35.1-7.fc32.aarch64", + "libsolv-0.7.11-2.fc32.aarch64", + "libss-1.45.5-3.fc32.aarch64", + "libssh-0.9.3-2.fc32.aarch64", + "libssh-config-0.9.3-2.fc32.noarch", + "libsss_autofs-2.2.3-13.fc32.aarch64", + "libsss_certmap-2.2.3-13.fc32.aarch64", + "libsss_idmap-2.2.3-13.fc32.aarch64", + "libsss_nss_idmap-2.2.3-13.fc32.aarch64", + "libsss_sudo-2.2.3-13.fc32.aarch64", + "libstdc++-10.0.1-0.11.fc32.aarch64", + "libtalloc-2.3.1-2.fc32.aarch64", + "libtasn1-4.16.0-1.fc32.aarch64", + "libtdb-1.4.3-2.fc32.aarch64", + "libtevent-0.10.2-2.fc32.aarch64", + "libtextstyle-0.20.1-4.fc32.aarch64", + "libtirpc-1.2.5-1.rc2.fc32.aarch64", + "libunistring-0.9.10-7.fc32.aarch64", + "libusbx-1.0.23-1.fc32.aarch64", + "libuser-0.62-24.fc32.aarch64", + "libutempter-1.1.6-18.fc32.aarch64", + "libuuid-2.35.1-7.fc32.aarch64", + "libverto-0.3.0-9.fc32.aarch64", + "libxcrypt-4.4.16-1.fc32.aarch64", + "libxcrypt-compat-4.4.16-1.fc32.aarch64", + "libxkbcommon-0.10.0-2.fc32.aarch64", + "libxml2-2.9.10-3.fc32.aarch64", + "libyaml-0.2.2-3.fc32.aarch64", + "libzstd-1.4.4-2.fc32.aarch64", + "linux-atm-libs-2.5.1-26.fc32.aarch64", + "linux-firmware-20200316-106.fc32.noarch", + "linux-firmware-whence-20200316-106.fc32.noarch", + "lmdb-libs-0.9.24-1.fc32.aarch64", + "lua-libs-5.3.5-7.fc32.aarch64", + "lz4-libs-1.9.1-2.fc32.aarch64", + "man-db-2.9.0-2.fc32.aarch64", + "mkpasswd-5.5.6-1.fc32.aarch64", + "mokutil-0.3.0-15.fc32.aarch64", + "mpfr-4.0.2-3.fc32.aarch64", + "ncurses-6.1-15.20191109.fc32.aarch64", + "ncurses-base-6.1-15.20191109.fc32.noarch", + "ncurses-libs-6.1-15.20191109.fc32.aarch64", + "net-tools-2.0-0.56.20160912git.fc32.aarch64", + "nettle-3.5.1-5.fc32.aarch64", + "nftables-0.9.3-2.fc32.aarch64", + "npth-1.6-4.fc32.aarch64", + "openldap-2.4.47-4.fc32.aarch64", + "openssh-8.2p1-2.fc32.aarch64", + "openssh-clients-8.2p1-2.fc32.aarch64", + "openssh-server-8.2p1-2.fc32.aarch64", + "openssl-1.1.1d-7.fc32.aarch64", + "openssl-libs-1.1.1d-7.fc32.aarch64", + "openssl-pkcs11-0.4.10-5.fc32.aarch64", + "os-prober-1.77-4.fc32.aarch64", + "p11-kit-0.23.20-1.fc32.aarch64", + "p11-kit-trust-0.23.20-1.fc32.aarch64", + "pam-1.3.1-24.fc32.aarch64", + "parted-3.3-3.fc32.aarch64", + "passwd-0.80-8.fc32.aarch64", + "pcre-8.44-1.fc32.aarch64", + "pcre2-10.34-9.fc32.aarch64", + "pcre2-syntax-10.34-9.fc32.noarch", + "pigz-2.4-6.fc32.aarch64", + "pinentry-1.1.0-7.fc32.aarch64", + "plymouth-0.9.4-14.20200325gite31c81f.fc32.aarch64", + "plymouth-core-libs-0.9.4-14.20200325gite31c81f.fc32.aarch64", + "plymouth-scripts-0.9.4-14.20200325gite31c81f.fc32.aarch64", + "policycoreutils-3.0-2.fc32.aarch64", + "polkit-libs-0.116-7.fc32.aarch64", + "popt-1.16-19.fc32.aarch64", + "procps-ng-3.3.15-7.fc32.aarch64", + "psmisc-23.3-3.fc32.aarch64", + "publicsuffix-list-dafsa-20190417-3.fc32.noarch", + "python-pip-wheel-19.3.1-2.fc32.noarch", + "python-setuptools-wheel-41.6.0-2.fc32.noarch", + "python-unversioned-command-3.8.2-2.fc32.noarch", + "python3-3.8.2-2.fc32.aarch64", + "python3-attrs-19.3.0-2.fc32.noarch", + "python3-audit-3.0-0.19.20191104git1c2f876.fc32.aarch64", + "python3-babel-2.8.0-2.fc32.noarch", + "python3-cffi-1.14.0-1.fc32.aarch64", + "python3-chardet-3.0.4-15.fc32.noarch", + "python3-configobj-5.0.6-20.fc32.noarch", + "python3-cryptography-2.8-3.fc32.aarch64", + "python3-dateutil-2.8.0-8.fc32.noarch", + "python3-dbus-1.2.16-1.fc32.aarch64", + "python3-decorator-4.4.0-6.fc32.noarch", + "python3-distro-1.4.0-5.fc32.noarch", + "python3-dnf-4.2.19-1.fc32.noarch", + "python3-dnf-plugins-core-4.0.14-1.fc32.noarch", + "python3-firewall-0.8.2-2.fc32.noarch", + "python3-gobject-base-3.36.0-2.fc32.aarch64", + "python3-gpg-1.13.1-6.fc32.aarch64", + "python3-hawkey-0.45.0-3.fc32.aarch64", + "python3-idna-2.8-6.fc32.noarch", + "python3-jinja2-2.11.1-1.fc32.noarch", + "python3-jsonpatch-1.21-11.fc32.noarch", + "python3-jsonpointer-1.10-19.fc32.noarch", + "python3-jsonschema-3.2.0-2.fc32.noarch", + "python3-jwt-1.7.1-7.fc32.noarch", + "python3-libcomps-0.1.14-4.fc32.aarch64", + "python3-libdnf-0.45.0-3.fc32.aarch64", + "python3-libs-3.8.2-2.fc32.aarch64", + "python3-libselinux-3.0-3.fc32.aarch64", + "python3-libsemanage-3.0-3.fc32.aarch64", + "python3-markupsafe-1.1.1-5.fc32.aarch64", + "python3-nftables-0.9.3-2.fc32.aarch64", + "python3-oauthlib-3.0.2-5.fc32.noarch", + "python3-pip-19.3.1-2.fc32.noarch", + "python3-ply-3.11-7.fc32.noarch", + "python3-policycoreutils-3.0-2.fc32.noarch", + "python3-prettytable-0.7.2-22.fc32.noarch", + "python3-pycparser-2.19-2.fc32.noarch", + "python3-pyrsistent-0.15.7-2.fc32.aarch64", + "python3-pyserial-3.4-7.fc32.noarch", + "python3-pysocks-1.7.1-4.fc32.noarch", + "python3-pytz-2019.3-2.fc32.noarch", + "python3-pyyaml-5.3.1-1.fc32.aarch64", + "python3-requests-2.22.0-8.fc32.noarch", + "python3-rpm-4.15.1-2.fc32.1.aarch64", + "python3-setools-4.3.0-1.fc32.aarch64", + "python3-setuptools-41.6.0-2.fc32.noarch", + "python3-six-1.14.0-2.fc32.noarch", + "python3-slip-0.6.4-19.fc32.noarch", + "python3-slip-dbus-0.6.4-19.fc32.noarch", + "python3-unbound-1.9.6-2.fc32.aarch64", + "python3-urllib3-1.25.7-3.fc32.noarch", + "qrencode-libs-4.0.2-5.fc32.aarch64", + "readline-8.0-4.fc32.aarch64", + "rootfiles-8.1-27.fc32.noarch", + "rpm-4.15.1-2.fc32.1.aarch64", + "rpm-build-libs-4.15.1-2.fc32.1.aarch64", + "rpm-libs-4.15.1-2.fc32.1.aarch64", + "rpm-plugin-selinux-4.15.1-2.fc32.1.aarch64", + "rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.aarch64", + "rpm-sign-libs-4.15.1-2.fc32.1.aarch64", + "sed-4.5-5.fc32.aarch64", + "selinux-policy-3.14.5-32.fc32.noarch", + "selinux-policy-targeted-3.14.5-32.fc32.noarch", + "setup-2.13.6-2.fc32.noarch", + "shadow-utils-4.8.1-2.fc32.aarch64", + "shared-mime-info-1.15-3.fc32.aarch64", + "shim-aa64-15-8.aarch64", + "sqlite-libs-3.31.1-1.fc32.aarch64", + "sssd-client-2.2.3-13.fc32.aarch64", + "sssd-common-2.2.3-13.fc32.aarch64", + "sssd-kcm-2.2.3-13.fc32.aarch64", + "sssd-nfs-idmap-2.2.3-13.fc32.aarch64", + "sudo-1.9.0-0.1.b4.fc32.aarch64", + "systemd-245.4-1.fc32.aarch64", + "systemd-libs-245.4-1.fc32.aarch64", + "systemd-pam-245.4-1.fc32.aarch64", + "systemd-rpm-macros-245.4-1.fc32.noarch", + "systemd-udev-245.4-1.fc32.aarch64", + "trousers-0.3.13-13.fc31.aarch64", + "trousers-lib-0.3.13-13.fc31.aarch64", + "tss2-1331-4.fc32.aarch64", + "tzdata-2019c-3.fc32.noarch", + "unbound-libs-1.9.6-2.fc32.aarch64", + "util-linux-2.35.1-7.fc32.aarch64", + "vim-minimal-8.2.525-1.fc32.aarch64", + "which-2.21-19.fc32.aarch64", + "whois-nls-5.5.6-1.fc32.noarch", + "xfsprogs-5.4.0-3.fc32.aarch64", + "xkeyboard-config-2.29-1.fc32.noarch", + "xz-5.2.5-1.fc32.aarch64", + "xz-libs-5.2.5-1.fc32.aarch64", + "yum-4.2.19-1.fc32.noarch", + "zchunk-libs-1.1.5-2.fc32.aarch64", + "zlib-1.2.11-21.fc32.aarch64" + ], + "partition-table": "gpt", + "partition-table-id": "8DFDFF87-C96E-EA48-A3A6-9408F1F6B1EF", + "partitions": [ + { + "bootable": false, + "fstype": "vfat", + "label": "EFI\\ System", + "partuuid": "02C1E068-1D2F-4DA3-91FD-8DD76A955C9D", + "size": 498073600, + "start": 1048576, + "type": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B", + "uuid": "46BB-8120" + }, + { + "bootable": false, + "fstype": "ext4", + "label": null, + "partuuid": "8D760010-FAAE-46D1-9E5B-4A2EAC5030CD", + "size": 5942263296, + "start": 500170752, + "type": "0FC63DAF-8483-4772-8E79-3D69D8477DE4", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:996:993::/var/lib/chrony:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:998:995:systemd Core Dumper:/:/sbin/nologin", + "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "systemd-timesync:x:997:994:systemd Time Synchronization:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:999:999:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/boot/System.map-5.6.6-300.fc32.aarch64": ".M.......", + "/boot/efi/EFI": ".M.......", + "/boot/efi/EFI/fedora/grubaa64.efi": ".......T.", + "/boot/initramfs-5.6.6-300.fc32.aarch64.img": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/lib/modules/5.6.6-300.fc32.aarch64/modules.builtin.alias.bin": ".......T.", + "/proc": ".M.......", + "/sys": ".M.......", + "/var/log/btmp": ".M.......", + "/var/log/journal": ".M....G..", + "/var/log/lastlog": ".M....G.." + }, + "missing": [] + }, + "services-disabled": [ + "arp-ethers.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "console-getty.service", + "debug-shell.service", + "exit.target", + "halt.target", + "kexec.target", + "loadmodules.service", + "man-db-restart-cache-update.service", + "nftables.service", + "nis-domainname.service", + "poweroff.target", + "proc-sys-fs-binfmt_misc.mount", + "rdisc.service", + "remote-cryptsetup.target", + "runlevel0.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-boot-check-no-failures.service", + "systemd-network-generator.service", + "systemd-networkd-wait-online.service", + "systemd-networkd.service", + "systemd-networkd.socket", + "systemd-pstore.service", + "systemd-resolved.service", + "systemd-time-wait-sync.service", + "systemd-timesyncd.service", + "tcsd.service" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "cloud-init.service", + "ctrl-alt-del.target", + "dbus-broker.service", + "dbus-org.fedoraproject.FirewallD1.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dbus.service", + "dbus.socket", + "dbxtool.service", + "dnf-makecache.timer", + "firewalld.service", + "fstrim.timer", + "getty@.service", + "import-state.service", + "reboot.target", + "remote-fs.target", + "runlevel6.target", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "unbound-anchor.timer" + ] + } +} \ No newline at end of file diff --git a/test/cases/fedora_32-aarch64-openstack-boot.json b/test/cases/fedora_32-aarch64-openstack-boot.json new file mode 100644 index 0000000..aa60582 --- /dev/null +++ b/test/cases/fedora_32-aarch64-openstack-boot.json @@ -0,0 +1,9851 @@ +{ + "boot": { + "type": "qemu" + }, + "compose-request": { + "distro": "fedora-32", + "arch": "aarch64", + "image-type": "openstack", + "repositories": [ + { + "baseurl": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ], + "filename": "disk.qcow2", + "blueprint": { + "name": "openstack-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:0042a3d3b19152d0a16ee321cbe99208a2f4ebd009515c1f6f962a1d5f9cde26": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsmartcols-2.35.1-7.fc32.aarch64.rpm" + }, + "sha256:0055cc4eccd54df5b64c194618a26e894a0d61781c8d1f1f48687bfd296b15e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pyyaml-5.3.1-1.fc32.aarch64.rpm" + }, + "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm" + }, + "sha256:0175f5d1834c1cb4a1f44c9ae20960fa674f26add0b88f903407abf2f3d22f82": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_certmap-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:0178be1e5d6da8053061d29013d8fda8445d37eac908afbf4a2ca92faf950f2c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.aarch64.rpm" + }, + "sha256:023d3d7be30607410a2357b50b8ef3f94a07baf2842bfba0421f803600ec605f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.aarch64.rpm" + }, + "sha256:026212c277c72facfd48901978afded50fc4050aedaa06a24e5e57875ce48c32": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/parted-3.3-3.fc32.aarch64.rpm" + }, + "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-six-1.14.0-2.fc32.noarch.rpm" + }, + "sha256:03c7e6ea76b2aa8e7f8c8c8039412f618790ea39aeb3c1ffab205ba6b3bee54d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/ipset-libs-7.6-1.fc32.aarch64.rpm" + }, + "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/langpacks-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/geolite2-country-20191217-2.fc32.noarch.rpm" + }, + "sha256:04bc54c723bfa9e1b6bb6567e9d8cd3e1ed389fc2be97259b971a8cbfe5f95e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/efibootmgr-16-7.fc32.aarch64.rpm" + }, + "sha256:05121688770a80889f1e1d0594a5b14d6ac30cc6fe4d431e3aa829f2290ea973": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_idmap-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:067d98bda561e94f9f0bba60f691dc8ba4610434603f26cf6f4fa22677da8465": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-1.12.16-4.fc32.aarch64.rpm" + }, + "sha256:06d6f5d9909beb1cc6731dc6d5d86b9e7885285848bad8ef16079ad3e8824e0b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/j/json-c-0.13.1-9.fc32.aarch64.rpm" + }, + "sha256:07b37612b8e0f09885ad653f3dbd2ff95a65bfd8b21c69d1cc20a4f3dbc0ef32": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtalloc-2.3.1-2.fc32.aarch64.rpm" + }, + "sha256:07cbd2ccb6fcb0007cd5cd12e2c0fbfbf0c4dbdfb15ff9e0f7b5db70b2cb083d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libXfixes-5.0.3-11.fc32.aarch64.rpm" + }, + "sha256:07cf4ae85cb34a38b22eff66e1fd996b32a5beda0c60644b06ecdff33c224ce9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnftnl-1.1.5-2.fc32.aarch64.rpm" + }, + "sha256:081d831528796c3e5c47b89c363a0f530bf77e3e2e0098cd586d814bea9a12f0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cracklib-2.9.6-22.fc32.aarch64.rpm" + }, + "sha256:086552102da5fd978a4722ddd21381d432abb9f886cd97761d2efbff2c588791": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/man-db-2.9.0-2.fc32.aarch64.rpm" + }, + "sha256:092370d1e62096782f329944df0e7e01cc49bbc0fa4071d63f352cf45e89e5bc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dbus-1.2.16-1.fc32.aarch64.rpm" + }, + "sha256:09a9dd8c3ae4fe9a9817c71c4b2af35f2d7e1dbf2c9f4659028ce69a5d2f2d02": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgomp-10.0.1-0.11.fc32.aarch64.rpm" + }, + "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm" + }, + "sha256:0a2eadd29cc53df942d3f0acc016b281efa4347fc2e9de1d7b8b61d9c5f0d894": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcap-2.26-7.fc32.aarch64.rpm" + }, + "sha256:0a31a882e4ac33233b36e2c61cc09125a936f54877137d5bb2ddc1ca8a5f9a12": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.aarch64.rpm" + }, + "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm" + }, + "sha256:0c30a7fd9f69ad808183afa0814e363689ff63e7a82856a790e5fa111c031b96": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.aarch64.rpm" + }, + "sha256:0dcc4568055843acf5571553731d57a0d042b6602e6932bc4fe88718597c2fbe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/file-5.38-2.fc32.aarch64.rpm" + }, + "sha256:10d828cc7803aca9b59e3bb9b52e0af45a2828250f1eab7f0fc08cdb981f191d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/alternatives-1.11-6.fc32.aarch64.rpm" + }, + "sha256:11004aa2821bdebfca77ab93e7ed405e0e93eb685850f5fb57b01762692ce155": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.aarch64.rpm" + }, + "sha256:11204917b909836508acff0df2499301d3b2f8f0a1c0e341de904ac9fb4bbedf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gpgme-1.13.1-6.fc32.aarch64.rpm" + }, + "sha256:129adf9147d5d120546ca8e0fb5f165761106d386d366fe82591e372754d0b4a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-decorator-4.4.0-6.fc32.noarch.rpm" + }, + "sha256:13290758e03b977aed5e23b7ba9a01157b6802fd78baf75bc1fc184864e9e31e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/diffutils-3.7-4.fc32.aarch64.rpm" + }, + "sha256:14005ca38ce35a0c2e9d24b37991059d213f9b3277895eaa2a5b45e242cf8dc8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kernel-5.6.6-300.fc32.aarch64.rpm" + }, + "sha256:15a8a718cb6f629474fec7756b4701430e14ff94aad6cf6fe20f3eb7174a7783": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsolv-0.7.11-2.fc32.aarch64.rpm" + }, + "sha256:15b2402e11402a6cb494bf7ea31ebf10bf1adb0759aab417e63d05916e56aa45": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/nettle-3.5.1-5.fc32.aarch64.rpm" + }, + "sha256:15dc3c9658d1ef11be8dfd13cee70e2f62e58e928a96e031a53562e38ede1c7c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/q/qemu-guest-agent-4.2.0-7.fc32.aarch64.rpm" + }, + "sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-policycoreutils-3.0-2.fc32.noarch.rpm" + }, + "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/linux-firmware-whence-20200316-106.fc32.noarch.rpm" + }, + "sha256:16902074f43963a360df42fec639f8b30ad29ee0d8a9799ac26ff0ba5c60e4cd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-audit-3.0-0.19.20191104git1c2f876.fc32.aarch64.rpm" + }, + "sha256:174a7c064ba48fdfc61ee5a091ec474dfbdb32a1a602cbe0776937c39e222663": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/groff-base-1.22.3-21.fc32.aarch64.rpm" + }, + "sha256:17f5c9a25bf0f952f6defa6a857e938bfc1f72c69217f666a537bf8f1daff5f8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnghttp2-1.40.0-2.fc32.aarch64.rpm" + }, + "sha256:18b34a587bc48280c94b7ea3a8d8c40bce4e97cb36153031ddf27671bcaddb43": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libXrender-0.9.10-11.fc32.aarch64.rpm" + }, + "sha256:18c188f63504b8cf3bc88d95de458a1eb216bca268378a6839618ef7468dc635": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/device-mapper-1.02.171-1.fc32.aarch64.rpm" + }, + "sha256:1a096ed78df5a9339c4b3c15372275a884a1124b048ffcfbdb768db881e47ab2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpwquality-1.4.2-2.fc32.aarch64.rpm" + }, + "sha256:1befc4be3c3c72b3210e54f96f4334f268eaecdd3b77af7cadea0ef31f0e2ca9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/lua-libs-5.3.5-7.fc32.aarch64.rpm" + }, + "sha256:1c982f31133def3baea707e0d1f0fe4a014d2c8c5f20ac8d69362cff4f26d5e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libassuan-2.5.3-3.fc32.aarch64.rpm" + }, + "sha256:1ddaeb7c602005e75c0ea2603a533d692a94915a297b71e68a8e27327456c3d0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcbor-0.5.0-7.fc32.aarch64.rpm" + }, + "sha256:1e1e9900e9d3a2b8eb6684060672526948df2cb9f751e7d72cb4fa5bffe71747": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cloud-init-19.4-2.fc32.noarch.rpm" + }, + "sha256:1e533f7f64169288e90b3851e509cf1aedf4da0fe986288da53516b2b77ac77d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmount-2.35.1-7.fc32.aarch64.rpm" + }, + "sha256:1eb386a258cebf600319b1f18344b047c9182485936d96da9c2b1067ac1c1bba": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/psmisc-23.3-3.fc32.aarch64.rpm" + }, + "sha256:1ee4f732b1b4b237d7301219fc5c52b63c9ab9e77db746612852fef5610f69b7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libksba-1.3.5-11.fc32.aarch64.rpm" + }, + "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-release-32-1.noarch.rpm" + }, + "sha256:1fab76e36bbad6727634f2a8ce6e722c0e6ca814969948ffd6ce7250bc75e7f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_sudo-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:202d761caf4c9d4937c04388a7180d6687a79e8141136be0f7ecc3a54bf80594": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xz-5.2.5-1.fc32.aarch64.rpm" + }, + "sha256:20307d5a1d3fccfe8f64c8ea074c6a751dc36849c7495592989677fd01da9147": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbxtool-8-11.fc32.aarch64.rpm" + }, + "sha256:20f32df3b4961ef659a4822686978e0501fc5262e942046b53b24ed11e77476b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/v/vim-minimal-8.2.525-1.fc32.aarch64.rpm" + }, + "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-repos-32-1.noarch.rpm" + }, + "sha256:22954219a63638d7418204d818c01a0e3c914e2b2eb970f2e4638dcf5a7a5634": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libutempter-1.1.6-18.fc32.aarch64.rpm" + }, + "sha256:231cefc11eb5a9ac8f23bbd294cef0bf3a690040df3048e063f8a269f2db75f8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnl3-3.5.0-2.fc32.aarch64.rpm" + }, + "sha256:2356581880df7b8275896b18de24e432a362ee159fc3127f92476ffe8d0432fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmnl-1.0.4-11.fc32.aarch64.rpm" + }, + "sha256:24df91ba73dffecb16916cf95dce726a5ce7de95197beb3ab147dd7890f2d2b0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pixman-0.38.4-2.fc32.aarch64.rpm" + }, + "sha256:2590d214d4986fa95653e7f83e67a81dbf822b621994a9ab867e7c377bc479c2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-common-2.31-2.fc32.aarch64.rpm" + }, + "sha256:25e6968493572c680d6f8cad03e591f6e1e0e6ce0d1fbe3648d4b64ba529491d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/u/util-linux-2.35.1-7.fc32.aarch64.rpm" + }, + "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm" + }, + "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dnf-plugins-core-4.0.14-1.fc32.noarch.rpm" + }, + "sha256:27a0d9447ef63c95a3182b32606e6de1bd17f2cfc7910a456fa43996db67833f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dhcp-client-4.4.2-5.b1.fc32.aarch64.rpm" + }, + "sha256:28892ae62cd1b4dadded523be8cb5f9e0fddeaa864919ee4b0dfad3bba8fd06f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgcc-10.0.1-0.11.fc32.aarch64.rpm" + }, + "sha256:291df16c0ae66fa5685cd033c84ae92765be4f4e17ce4936e47dc602ac6ff93e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libffi-3.1-24.fc32.aarch64.rpm" + }, + "sha256:29bcc2f3f85ca7bdc22178af3e16743f55353bd9f25fb4c748d8c9f7117fe56f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/policycoreutils-3.0-2.fc32.aarch64.rpm" + }, + "sha256:2bc82e132696d9daa4eef545ff3352d6eb588b9a1b9584e515d15a7c3d6471df": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libuuid-2.35.1-7.fc32.aarch64.rpm" + }, + "sha256:2c4d03577e8661920a7b64fcc68735b795288744f1b188512a96960143030474": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libzstd-1.4.4-2.fc32.aarch64.rpm" + }, + "sha256:2c6ddfd3a551252013f647539df30097febcc4e0cd7c6eb2d1690e9f5aff66d6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/plymouth-scripts-0.9.4-14.20200325gite31c81f.fc32.aarch64.rpm" + }, + "sha256:2c9bf996e1550ed5ad42398187ee14d65315d13ec5c9e2eab32b8fed0743b1fc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtevent-0.10.2-2.fc32.aarch64.rpm" + }, + "sha256:2d7ad38e86f5109c732a32bf9bea612c4c674aba6ad4cca2d211d826edc7fd6f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libunistring-0.9.10-7.fc32.aarch64.rpm" + }, + "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm" + }, + "sha256:2dcee99ce05f5844438f827cf0cd1578f7863efb31c204bbc441cd2265ad9a7d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpath_utils-0.2.1-44.fc32.aarch64.rpm" + }, + "sha256:2f117f22ec79fed75752c69b7e1c70582bad93b55fb4a5b0dc2bca978bafce85": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.aarch64.rpm" + }, + "sha256:2f849fdf4588b1b4e86a008b6a82f30ff2ec1db1ae2bd21e067c6f910e4cb237": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/tar-1.32-4.fc32.aarch64.rpm" + }, + "sha256:30bf2e7deddad50a3054827c98e97adfd3ae1d24ae248980649db289198135a8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/passwd-0.80-8.fc32.aarch64.rpm" + }, + "sha256:3242e0ce48f95d7a271125cf1222b5af09e20fe85194623d95336e1c678bdee8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/trousers-0.3.13-13.fc31.aarch64.rpm" + }, + "sha256:32a00991ec85f0bf2a336e00033a0e70b0da963eb42d81bbad18a7a11f41d4eb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libs-3.8.2-2.fc32.aarch64.rpm" + }, + "sha256:3377ae652fbbd22f2c61815bfd1bb58185b5f57c194d9b0cce3056ab11522779": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/initscripts-10.02-3.fc32.aarch64.rpm" + }, + "sha256:33788835331bed7f75e5cd2126d8d75511211175c9ac6d93824baec1a546a28d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxml2-2.9.10-3.fc32.aarch64.rpm" + }, + "sha256:33ca43cf0714aef344a70be4cfa42322694cc975a2eeee0bf31325dbca7f2842": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.aarch64.rpm" + }, + "sha256:340a82cfe6a9d18933b99a4e001d7e54f7ab225fe5e7fb1a7f51cb1c675c7050": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libarchive-3.4.2-1.fc32.aarch64.rpm" + }, + "sha256:34efde201252afe93ec3af61af30c6d32cfbe5ecbdcecaf4667666f12482757d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.aarch64.rpm" + }, + "sha256:36a3ae11acb7916e932ff704a4527b126bb39f9e849072b16242719c8de11119": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-2.31-2.fc32.aarch64.rpm" + }, + "sha256:3882823d0eb18e0e8146584f4a32a4801961f6fdc09075607746317eba3265be": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-urllib3-1.25.7-3.fc32.noarch.rpm" + }, + "sha256:391faab010ca30610a14e0b3d54fbc0331be39bc831086fb877f8021fe4b171f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-oauthlib-3.0.2-5.fc32.noarch.rpm" + }, + "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm" + }, + "sha256:3c29cc12a25791c83c040def2df8f107b161ecc0cbf3965cad82f38a451c7963": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libldb-2.1.1-1.fc32.aarch64.rpm" + }, + "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm" + }, + "sha256:3d6ec574fe2c612bcc45395f7ee87c68f45016f005c6d7aeee6b37897f41b8d2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.aarch64.rpm" + }, + "sha256:3e25d33bea0d8de847f817b428fe92a6b02376634c7a6f0672bc668fa769869d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libedit-3.1-32.20191231cvs.fc32.aarch64.rpm" + }, + "sha256:3ea53f635b4f559b2bdb0e58d54dbfddc126b18abe23b46b94aecbf7c0d5132c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.aarch64.rpm" + }, + "sha256:3f5ca8c083b25935f7bd846c66b6ed65f297807ba25a8b62d4dac9389f87f9f1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxcb-1.13.1-4.fc32.aarch64.rpm" + }, + "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm" + }, + "sha256:400c91d4d6d1125ec891c16ea72aa4123fc4c96e02f8668a8ae6dbc27113d408": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.aarch64.rpm" + }, + "sha256:4139803076f102e2224b81b4f1da3f6d066b89e272201d2720557763f9acfcd5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.aarch64.rpm" + }, + "sha256:41c6a8ea4240f2fa6cea0333cc6d5f59731ac843398eb457c182e90af367783c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-245.4-1.fc32.aarch64.rpm" + }, + "sha256:435530a0b9a086018694034ce48e9589348fc66389d884977b400f2f74814ac8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdb-utils-5.3.28-40.fc32.aarch64.rpm" + }, + "sha256:45e2c1c76a0a0b6e1164c457307250a54a7de5905992b4351a84183c2e9f2633": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mkpasswd-5.5.6-1.fc32.aarch64.rpm" + }, + "sha256:4674c9871d3a70a005fc880d6ce1c0e56418192085dae8b5eb861003ef9a2c1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iproute-tc-5.5.0-1.fc32.aarch64.rpm" + }, + "sha256:46aa2a21a000eb70097a86788d853602f7db1238156f2364a802f0b37f0dc4e6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sssd-nfs-idmap-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:47538b1db9720be4699329a8da32d873187d0c6c22f45252614ac5b8a8312482": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/firewalld-filesystem-0.8.2-2.fc32.noarch.rpm" + }, + "sha256:48381163a3f2c524697efc07538f040fde0b69d4e0fdcbe3bcfbc9924dd7d5dd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xz-libs-5.2.5-1.fc32.aarch64.rpm" + }, + "sha256:4860a733ca3f22089c6c283cbdcf53123a702d60b5bffdd4fe9d76826f91139a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-prettytable-0.7.2-22.fc32.noarch.rpm" + }, + "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dhcp-common-4.4.2-5.b1.fc32.noarch.rpm" + }, + "sha256:4940f6e26a93fe638667adb6e12969fe915b3a7b0cfeb58877dd6d7bccf46c1a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/expat-2.2.8-2.fc32.aarch64.rpm" + }, + "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm" + }, + "sha256:4c9d77d63ddc7dda0e018fc1c97d46025794e336e58d838a631fcc130dfa3b9b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jsonpatch-1.21-11.fc32.noarch.rpm" + }, + "sha256:500c4abc34ff58e6f06c7194034b2d68b618c5e6afa89b551ab74ef226e1880a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libidn2-2.3.0-2.fc32.aarch64.rpm" + }, + "sha256:50b7b06e94253cb4eacc1bfb68f8343b73cbd6dae427f8ad81367f7b8ebf58a8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gzip-1.10-2.fc32.aarch64.rpm" + }, + "sha256:50d91ca18b6cdc9395424b852d2828d1b75e2af318932a2442376d2a10819f6a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libusbx-1.0.23-1.fc32.aarch64.rpm" + }, + "sha256:52aa6e698e60cd360d5b9473fd1ebcc7e238e2125449bfdcc41b3e0fe13ae645": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-libs-245.4-1.fc32.aarch64.rpm" + }, + "sha256:532a58ae361b9c0bc147037fb96f338684b949bd4071b19bac322b8967c32a01": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnutls-3.6.13-1.fc32.aarch64.rpm" + }, + "sha256:54613bd9e0524bb992bd7779c80a24b12df744085031cb8f3defb5fae55ca0f5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/polkit-libs-0.116-7.fc32.aarch64.rpm" + }, + "sha256:55a343c96ac98c2bdf7bffdf5edc73f87b482a26b4a1a5e95670343dcec88fb8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/chrony-3.5-8.fc32.aarch64.rpm" + }, + "sha256:56b5cea4fa7f4d74d4d15aae43ab4827387dead4659bd2bede66c38057cd19e7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sudo-1.9.0-0.1.b4.fc32.aarch64.rpm" + }, + "sha256:56bc7a11331fe199a45bc23f348deff8cd5e1ee02c617b6ed429d61ba537fc8b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/librepo-1.11.1-4.fc32.aarch64.rpm" + }, + "sha256:56bfd0b6087ca9d995981a10452330be702fb0e215f77cec656cfdd24acaf738": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdrm-2.4.100-2.fc32.aarch64.rpm" + }, + "sha256:5719dd2fb399cadec08b4ac41c794239d2a2de2f012faeb970ab90a07bba0084": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-babel-2.8.0-2.fc32.noarch.rpm" + }, + "sha256:57e1695da46f19db4a851304d57e7ce2409c287a88e9b52af0b76ed2252a4f98": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gettext-libs-0.20.1-4.fc32.aarch64.rpm" + }, + "sha256:57ee793c1f8dc1c9b58953b03d7041501eea326cefc4dda6de640761c60e31f8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssh-8.2p1-2.fc32.aarch64.rpm" + }, + "sha256:5875ba2d9b9ced8b2d2faa880b5f1811a89e17defe946ccf99b201790a0d2520": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcap-ng-0.7.10-2.fc32.aarch64.rpm" + }, + "sha256:58988a2b7213098503b56d5388eba1bf2a01b9ff027961acb1e9f55c47d237ad": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libfdisk-2.35.1-7.fc32.aarch64.rpm" + }, + "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dnf-plugins-core-4.0.14-1.fc32.noarch.rpm" + }, + "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:5adad0edfcf9c4415734d11a35a5c14cbf53eb32827572dd6af670fadcad7f78": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libkcapi-1.1.5-2.fc32.aarch64.rpm" + }, + "sha256:5b1cb1251cf7f65c50d9e3fcc11901fef5132dc177cce68a50918da481bb7629": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/npth-1.6-4.fc32.aarch64.rpm" + }, + "sha256:5b304375adf911d056b36dc35f22af027d9283efbaebcb8231f052aef3982f05": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/bash-5.0.11-2.fc32.aarch64.rpm" + }, + "sha256:5b7a135c35562e64344cc9f1ca37a5239649152cc055e14e7bf9bf84843eccab": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gmp-6.1.2-13.fc32.aarch64.rpm" + }, + "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/linux-firmware-20200316-106.fc32.noarch.rpm" + }, + "sha256:5cc385c1ca3df73a1dd7865159628a6b0ce186f8679c6bc95dda0b4791e4a9fc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fuse-libs-2.9.9-9.fc32.aarch64.rpm" + }, + "sha256:5ce4acbf25abd83a562f20e9a8a73b8860a766fb543d69ed9db6eb57fd75fc70": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sssd-kcm-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:5d52cffee2d5360db8cf7e6ed4b19a68de4a0ae55f42ed279d4fdb3a70bb72f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.aarch64.rpm" + }, + "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm" + }, + "sha256:5eed798a806e26720df47f1c95600ae67cc1275c381f33c8260b32b23d81a978": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/h/hwdata-0.334-1.fc32.noarch.rpm" + }, + "sha256:5fa81b28d5100f987cd8d9317ccf200ec5b94d11ed3c8e2e90137b8981e71c61": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssh-clients-8.2p1-2.fc32.aarch64.rpm" + }, + "sha256:6007c88c459315a5e2ce354086bd0372a56e15cdd0dc14e6e889ab859f8d8365": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/readline-8.0-4.fc32.aarch64.rpm" + }, + "sha256:6028f86f132faee662e97075270f68e8125fd339c8689a2b661facd25c3b829b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libselinux-3.0-3.fc32.aarch64.rpm" + }, + "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm" + }, + "sha256:60c3cbbe546fb12db4c7164a51613ea9ae20f7199537cdf5145e828c78544493": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gettext-0.20.1-4.fc32.aarch64.rpm" + }, + "sha256:60c9a00d8c528ad5806a5fec20ed3ffb8ad195e9eb9bf5294893e8425be1fa9f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-broker-22-1.fc32.aarch64.rpm" + }, + "sha256:61c51596cc97f35177efe8dc5e2ca52d8fd528570f33c184497f419259b73c90": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-idna-2.8-6.fc32.noarch.rpm" + }, + "sha256:61e37e1df1e427525e6dd873d04fe2afc5e6825f2788a33b941e532e5a27ed7e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/NetworkManager-1.22.10-1.fc32.aarch64.rpm" + }, + "sha256:6221b210a7778432738994829f6c7e9f047940e53ee42a0e6458b91095b82756": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grub2-efi-aa64-2.04-12.fc32.aarch64.rpm" + }, + "sha256:62afc19040e8fbf7ac7946f02d67cdd19086658c3d8713a6c120482fd769537e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdnf-0.45.0-3.fc32.aarch64.rpm" + }, + "sha256:62bafab5a0f37fdec29ce38bc1d635e0a81ab165061faaf5d83f5246ca4e2db0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gawk-5.0.1-7.fc32.aarch64.rpm" + }, + "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:63cef561bcaadd5b9a1bf93b968f284ca76c3ad2b90b5c439b62456c0517164f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.aarch64.rpm" + }, + "sha256:645f82cf62da25742cab5e8ffd1f764301b84ab19710d9f3fb3aff1cb57ffdc6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jinja2-2.11.1-1.fc32.noarch.rpm" + }, + "sha256:64b64bab720df9dd7fd37ebf80a07795a95ac11e640eda3209b6517dcd7133e5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxcrypt-4.4.16-1.fc32.aarch64.rpm" + }, + "sha256:654a9a9997c975998e1cb5d9250cd34b9d9d4d69f43c9282e67ad4d38fa2bcdf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/u/unbound-libs-1.9.6-2.fc32.aarch64.rpm" + }, + "sha256:6615aae3def0c49910e43e2d69f7ae8852694953dceb4b6235b5cf4099296d70": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jsonpointer-1.10-19.fc32.noarch.rpm" + }, + "sha256:6837a13f3c643b5da33bd694efc4e95f54b5cc5e15de61884644378367d55804": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glib2-2.64.1-1.fc32.aarch64.rpm" + }, + "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm" + }, + "sha256:6890a9545194ad6cf1b0c58e5273132171a9ced9cb665a1442aa62b6b6d3d2ea": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jsonschema-3.2.0-2.fc32.noarch.rpm" + }, + "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/langpacks-core-font-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:6b0c1295d6fb58926ccc9351b53cffc16df1ccd07736091394a42baec02c3333": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libXau-1.0.9-3.fc32.aarch64.rpm" + }, + "sha256:6bc574a7f67dc28909f84c05bfc3dfeeac04c088f809032d75313aac022f6064": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libndp-1.7-5.fc32.aarch64.rpm" + }, + "sha256:6e14c7f44b0f17ebcc3922027c944b6e47202ac9495fd85cc31ad7bc31719a64": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/alsa-lib-1.2.2-2.fc32.aarch64.rpm" + }, + "sha256:6e645fa926b4d2c3e2cff3516572c0855b072175dc0ff514463a9b6ab9c16684": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libXrandr-1.5.2-3.fc32.aarch64.rpm" + }, + "sha256:6ef55c2aa000adea432676010756cf69e8851587ad17277b21bde362e369bf3e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libargon2-20171227-4.fc32.aarch64.rpm" + }, + "sha256:6f7b4c0efee821ea122401d350274334c6ef2d62dcacbe40942a00b162b6025b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libuser-0.62-24.fc32.aarch64.rpm" + }, + "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm" + }, + "sha256:6fcaddc0fde4e23d6650cd46b3763903c7b693afa69aad52fdf87a8563aa5f84": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssh-server-8.2p1-2.fc32.aarch64.rpm" + }, + "sha256:7149be5bd74792181003b872a9bc636157f4b795b12374c0857fb7271f2567ac": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libseccomp-2.4.2-3.fc32.aarch64.rpm" + }, + "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm" + }, + "sha256:73e9cf715ccf15c1e26fbcd40ec29788fb7250958bc923e56b4826a8d6fb6920": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libX11-common-1.6.9-3.fc32.noarch.rpm" + }, + "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm" + }, + "sha256:7417889b8455ba87230fd5a987fe160d86de8250b87d7ae9bbcba90c32053172": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre2-10.34-9.fc32.aarch64.rpm" + }, + "sha256:7684be07a8e054660705f8d6b1522d9a829be6614293096dc7b871682e445709": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kmod-libs-27-1.fc32.aarch64.rpm" + }, + "sha256:77297d07807ddcb85bad6fd788c6f1692af47d00ad27305f3e2217e34e81f538": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pigz-2.4-6.fc32.aarch64.rpm" + }, + "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:78fb24703a4bafd4eb4ae0e065abf9111a127774ac74b1dc3a25d385c0dae1a0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/NetworkManager-libnm-1.22.10-1.fc32.aarch64.rpm" + }, + "sha256:79410f2d954c0a380a0b67bc965982ac1645c0365060cf8ba106db74b0b339f4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kbd-2.2.0-1.fc32.aarch64.rpm" + }, + "sha256:7967ddee97af6d0f83cfd3226f8e187edac2823ec1e4cef53b54415d759bffa9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/plymouth-0.9.4-14.20200325gite31c81f.fc32.aarch64.rpm" + }, + "sha256:79defc84763baec2190da8941221abfa002d6f6c9e8c3486e2c492389fca2a57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.aarch64.rpm" + }, + "sha256:7aaa5d87151e4568e9acbd23d1c94373c977cdd46c69c79035735d6f381dd38c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xen-licenses-4.13.0-6.fc32.aarch64.rpm" + }, + "sha256:7bd78f630f6ed96cd08942330f4dad8bfb8d2d7961262ee942411e501a1aefdd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cpio-2.13-4.fc32.aarch64.rpm" + }, + "sha256:7bd98aa2d554f06ab525320ebf628a6e002011462e71a47337676a2c99de5aec": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libssh-0.9.3-2.fc32.aarch64.rpm" + }, + "sha256:7bfb33bfa3c3a952c54cb61b7f7c7047c1fd91e8e334f53f54faea6f34e6c0bb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdb-5.3.28-40.fc32.aarch64.rpm" + }, + "sha256:7c38b938c3d35cfee1ad11d5d09c3c6a4f208b065a25b2a3556006f04f2608b9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iproute-5.5.0-1.fc32.aarch64.rpm" + }, + "sha256:7cac868a4b1ac9c380192a31a45a314613af3f958aaf2b778642667dc73bc182": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsecret-0.20.2-2.fc32.aarch64.rpm" + }, + "sha256:7d5d62696fc69bb890912be71c05e92496129f198838cb56d349a8fc700a85a6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.aarch64.rpm" + }, + "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm" + }, + "sha256:7f667fb609062e966720bf1bb1fa97a91ca245925c68e36d2770caba57aa4db2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.aarch64.rpm" + }, + "sha256:7fe5838c895cd1158a6ae2afb3794e79e393d6701330e1109592e6b45f4bd876": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.aarch64.rpm" + }, + "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:81b6181b947d50e0a1ea681298417e552421d6714900d07a34dc25899e5c9f60": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-configobj-5.0.6-20.fc32.noarch.rpm" + }, + "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/geolite2-city-20191217-2.fc32.noarch.rpm" + }, + "sha256:82bd171ac3f9a08c44e8144297a4dd9cd2567a916065a57eb656330e2b4e007f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdhash-0.5.0-44.fc32.aarch64.rpm" + }, + "sha256:82d2eaad75cf45da9773298344dcbbaebb4da5b67526a6c43bc67d3f84d98616": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-setools-4.3.0-1.fc32.aarch64.rpm" + }, + "sha256:831fcc64c103f60608b08f4f47c2b7b5b43571cef7576b9e549e6ae001434da5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtextstyle-0.20.1-4.fc32.aarch64.rpm" + }, + "sha256:836a45edfd4e2cda0b6bac254b2e6225aad36f9bae0f96f2fe7da42896db0dae": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsigsegv-2.11-10.fc32.aarch64.rpm" + }, + "sha256:84313c8f10f91d10e4f734c3a605b0a771d2faa72bf43deeed60a4cf3606a0da": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libselinux-3.0-3.fc32.aarch64.rpm" + }, + "sha256:844ee747d24d934104398be60747b407d19c8106ead11b06fe92fcc62bd765fc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-cffi-1.14.0-1.fc32.aarch64.rpm" + }, + "sha256:857330a729697c1b6e8d86550391f1abf4db87d5ffeffeb5f00065fa8be85cbd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-3.8.2-2.fc32.aarch64.rpm" + }, + "sha256:85dc7962af97e86a655b8ec5d5276e511f50b1d4abe624f4d8cb0d784007e342": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.aarch64.rpm" + }, + "sha256:86959d2fd51c4d52fa5fcdf91c226ffdece5960299c15f29adc2a5c0bf05397b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-libs-1.12.16-4.fc32.aarch64.rpm" + }, + "sha256:876c2450443ab68948b045721202ca193077876b67c2e85f9dd427452ef0c4d5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/findutils-4.7.0-3.fc32.aarch64.rpm" + }, + "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fonts-filesystem-2.0.3-1.fc32.noarch.rpm" + }, + "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/langpacks-core-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:8961e2f35093845b7498c03f1a9776f7c49f7d9d057f56b0774f470b8e8179ff": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/coreutils-8.32-3.fc32.1.aarch64.rpm" + }, + "sha256:8b20ec83c7ff085d0f27c7af0a87dc49bacdf65d52b61119819ea14862eff91c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iputils-20190515-5.fc32.aarch64.rpm" + }, + "sha256:8b30ff554cd68040f0a4a0759c502e1c1fccad2df64d2ee61145ae0f7bd668ad": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/nftables-0.9.3-2.fc32.aarch64.rpm" + }, + "sha256:8c545e3282deed08d36bb138f1ba15d02dfd1066f46f45582e24b6dc5b07cb6b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-libelf-0.179-1.fc32.aarch64.rpm" + }, + "sha256:8d08e12adb541773aa8073a1aa6b02fbbd8539fe3597a60ac934732930cd5981": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/coreutils-common-8.32-3.fc32.1.aarch64.rpm" + }, + "sha256:8d34b5a58672b245adeecfad6bdd4efb01ea496b048f96680e885b33c881db5d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpciaccess-0.16-2.fc32.aarch64.rpm" + }, + "sha256:8db16495c82aeba17b61896e6414f2ce212088370e88cf73b8999bf2317c015c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/net-tools-2.0-0.56.20160912git.fc32.aarch64.rpm" + }, + "sha256:8e768615a238b08e3fd0857f53e7acf5c5c4e3736dc03824179429a4d848de61": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kpartx-0.8.2-3.fc32.aarch64.rpm" + }, + "sha256:8ee8c4bbf024b998ffb77a6b4194a2306ac21c5a6fcf70c8c81a0fbf38f7c7fc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-firewall-0.8.2-2.fc32.noarch.rpm" + }, + "sha256:8f4be33cb040f081bb1f863b92e94ac7838af743cb5a0ce9d8c8ec9a611f71a6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/popt-1.16-19.fc32.aarch64.rpm" + }, + "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dejavu-sans-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:91ab783e9eb00d5baba65989c86c3d742033bd2306ff7adb0b78185f28d2ca86": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.aarch64.rpm" + }, + "sha256:91cd21ca1f5b881a78e9c0a6dd3cdad7401f7216a1ab3acbe9337d8e3e054a5e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libselinux-utils-3.0-3.fc32.aarch64.rpm" + }, + "sha256:91e35b3750f5029be019542a4143cf00de68559b9ab6ae6df2c8f7ea6e60acd9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/tss2-1331-4.fc32.aarch64.rpm" + }, + "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm" + }, + "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-distro-1.4.0-5.fc32.noarch.rpm" + }, + "sha256:93c5fe6589243bff8f4d6934d82616a4cce0f30d071c513cc56f8e53bfc19d17": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcom_err-1.45.5-3.fc32.aarch64.rpm" + }, + "sha256:94d02790ff430efebbfc12ca2c2029c66e1691b70baf7cf45159fb8464d38e56": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mpfr-4.0.2-3.fc32.aarch64.rpm" + }, + "sha256:95581bd0421b0fddf94b046e0bf8f13d3ce3d797acd5292d87127ed9e9505d80": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libbrotli-1.0.7-10.fc32.aarch64.rpm" + }, + "sha256:96f3fbcfb91ae41de7e514fe0b619aab870ea4d5f53544c0fd215284cb0b68e2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.aarch64.rpm" + }, + "sha256:96ff29e784025e76bfde72abc89ccb520cb75087f8c44cd747d5d3ebc1df78db": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grubby-8.40-40.fc32.aarch64.rpm" + }, + "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm" + }, + "sha256:9738af51bf206850f6611306bed20542ed32a1701188611caab0b6896e4ffb37": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pam-1.3.1-24.fc32.aarch64.rpm" + }, + "sha256:98d58695f22a613ff6ffcb2b738b4127be7b72e5d56f7d0dbd3c999f189ba323": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libacl-2.2.53-5.fc32.aarch64.rpm" + }, + "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm" + }, + "sha256:9baa05a69943b0c6274403276f45817ab56193de62b5b64205b4fd35951e0895": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-pam-245.4-1.fc32.aarch64.rpm" + }, + "sha256:9c8ec2364045411b95cfb3995d2189f0082832af7bf7280ec1cdf7bfee1afe05": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/deltarpm-3.6.2-5.fc32.aarch64.rpm" + }, + "sha256:9caea0e8a3f554e49c9f8d4b0196b9224958de9947aacf1031f0ff1ee209d522": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libX11-1.6.9-3.fc32.aarch64.rpm" + }, + "sha256:9d1baa8d8cdd02711e1724b08de678f2bda92807a6ae0e9d1b6c2443e2810ffd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpipeline-1.5.2-2.fc32.aarch64.rpm" + }, + "sha256:9db3ade981c564c361eed9068cd35acac93c1b1db54b6fb2a74070ce68141cff": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.aarch64.rpm" + }, + "sha256:a01d61d802834e2e6789548f707877827fb394c90097705af9c391e6bfcd6c24": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/krb5-libs-1.18-1.fc32.aarch64.rpm" + }, + "sha256:a0260a37707734c6f97885687a6ad5967c23cb0c693668bf1402e6ee5d4abe1e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.aarch64.rpm" + }, + "sha256:a05c8fb554ed38050b59d10f587ac70cf341c1f38b02ffe8a8433f7fc16efd68": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/keyutils-libs-1.6-4.fc32.aarch64.rpm" + }, + "sha256:a0b87b2dc3c5f536e94d6a4f3563a621dfbc067a62c3d1fe69bdb70c3cecec57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pycparser-2.19-2.fc32.noarch.rpm" + }, + "sha256:a0ec936c91f5f69951d08a6cdf03406ee7365bc3417d3426bb6b4db855c45dda": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.aarch64.rpm" + }, + "sha256:a107b3d3790a5bcfdc28f6f4718969039b103a681a2647f3cbcb82cf92e97acb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pyserial-3.4-7.fc32.noarch.rpm" + }, + "sha256:a12bd9183ce051f7c483506540f7682206a9cbd27b34cb7734be6583bc5d11db": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dosfstools-4.1-10.fc32.aarch64.rpm" + }, + "sha256:a1395539f86c44227dc1dd97dbca51a19f012bc05c4bd796e56bac17d8b054ec": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libXinerama-1.1.4-5.fc32.aarch64.rpm" + }, + "sha256:a16c32dda1845c89cb7822ab839e5f48b222b3c168f82455f7f54a1a7863ffea": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dracut-050-26.git20200316.fc32.aarch64.rpm" + }, + "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-release-common-32-1.noarch.rpm" + }, + "sha256:a2fcc535573ade5656cdb6968eb13dd68380540b5f25a0eca3947676dc5f11d6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-markupsafe-1.1.1-5.fc32.aarch64.rpm" + }, + "sha256:a30386b14f04905c1e78944f9b36d81ac83b7de1301c353d7e90b33f4a8c5e93": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/efivar-libs-37-7.fc32.aarch64.rpm" + }, + "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm" + }, + "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm" + }, + "sha256:a3775cb3bc81bb5444e26695a62b1bd2eb48a91d7bc3a361d763c185cb817de1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre-8.44-1.fc32.aarch64.rpm" + }, + "sha256:a47d4bfb9dd589c97bb530afb3988cbfaf7336a89207e4b74fd9ab596812c97f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grub2-tools-2.04-12.fc32.aarch64.rpm" + }, + "sha256:a499f61c75ef2179b2da62647b64b716fec1af2f15653876a27e57c284921baf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.aarch64.rpm" + }, + "sha256:a580e36566f6ffceef809e49fc4c7f9b1418a16123d4d49079c8423b6a337e67": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pinentry-1.1.0-7.fc32.aarch64.rpm" + }, + "sha256:a5c841dda3df90e810cfd87c42211a26dc0745f9bae341b6bfc6b08114e48ed5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libbasicobjects-0.1.1-44.fc32.aarch64.rpm" + }, + "sha256:a6c26dd0ba8fc6a15e845f72f90e89b62f7344d7793896e707e610286b5e4541": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/trousers-lib-0.3.13-13.fc31.aarch64.rpm" + }, + "sha256:a718bc2a857bde398de2375efae50dac568217f547b272d7cbe0a1655ec0d961": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/os-prober-1.77-4.fc32.aarch64.rpm" + }, + "sha256:a7394cd1b11a1b25efaab43a30b1d9687683884babc162f43e29fdee4f00bda8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/lz4-libs-1.9.1-2.fc32.aarch64.rpm" + }, + "sha256:a78e345faac8293fa2c05560869eb610ce53b5c851db932fd8915128b27d0c1e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libfdt-1.6.0-1.fc32.aarch64.rpm" + }, + "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm" + }, + "sha256:a830bb13938bedaf5cc91b13ab78e2cf9172b06727b7e9e1bec2cddce8dd9e2d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libss-1.45.5-3.fc32.aarch64.rpm" + }, + "sha256:a92c4a583aacd37beb069c996307bd782f809c78fd1fb802de25a53efbaff8f8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/shared-mime-info-1.15-3.fc32.aarch64.rpm" + }, + "sha256:a973f92acb0afe61087a69d13a532c18a39dd60b3ba4826b38350f2c6b27e417": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.aarch64.rpm" + }, + "sha256:a9e2dcc8d57bff7ec3424eb79de77ebe91a956dd39faa691b2ab4babd1683233": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libfido2-1.3.1-1.fc32.aarch64.rpm" + }, + "sha256:aa667df83abb5a675444e898fb7554527b2967f3bdc793e6b4b56d794f74b9ef": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.aarch64.rpm" + }, + "sha256:aa7fd8a1313c0e384353da5e054dad62205b4f0e112a4a45eb414eb357513e04": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/file-libs-5.38-2.fc32.aarch64.rpm" + }, + "sha256:ab86efda86a5d4cb8b1fa979bcc37aeb5601616d48a4a9d34b4f4ceb4e553747": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnfsidmap-2.4.3-0.fc32.aarch64.rpm" + }, + "sha256:acafdf6b20fea5974da004b77eced20b00c59a908edcef9c4c4e60815fdbf8f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-unbound-1.9.6-2.fc32.aarch64.rpm" + }, + "sha256:aced65470e04746b0db1d414ef8fc5e84f8f7cc9becfd187a92d130f21c854c4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-gobject-base-3.36.0-2.fc32.aarch64.rpm" + }, + "sha256:ad6f711174c59ffb9116d792068cc8fd0585b46eb5d9bf18a3c9937727b9a379": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/checkpolicy-3.0-3.fc32.aarch64.rpm" + }, + "sha256:ad874e09de00dbdb887eb6a94351869950ead7f6409dfa191d1443d3bb9dd255": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libevent-2.1.8-8.fc32.aarch64.rpm" + }, + "sha256:ae08e152061808ccc334cc611d8ea4d18c05daa6b68731e255a533d0572594ae": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/linux-atm-libs-2.5.1-26.fc32.aarch64.rpm" + }, + "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm" + }, + "sha256:af826bfb93a53a0bbb0209f721fc7d15c0b5200c3f81c93ef9620cc640e90b77": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtdb-1.4.3-2.fc32.aarch64.rpm" + }, + "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm" + }, + "sha256:afba861f69234f4cb4040085a4868c7424666a4356d0e2002e16b0afb75ec0d2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/p11-kit-0.23.20-1.fc32.aarch64.rpm" + }, + "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/y/yum-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:b1fc5d1d8d62d0f883ff483b818e7759f9afd4a1fa15421af56e1a615535fe63": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/ipcalc-0.4.0-2.fc32.aarch64.rpm" + }, + "sha256:b3657ad1419ab11e07608c7bc4da75a91162b2398d66febfc061795bc1587036": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sssd-common-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:b743aafa82f3326f8f2e6d5464ae7fa57fabab3ad791099eaf2d151b43208b42": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/efi-filesystem-4-4.fc32.noarch.rpm" + }, + "sha256:b78889f3a2ac801456c643fd5603017383221aa33eac381e4f74b9a13fbf3830": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsemanage-3.0-3.fc32.aarch64.rpm" + }, + "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm" + }, + "sha256:b867eeba06e6fc9084c227d8b3ea54f1815cb1833a29babf114fa1167aa17f2d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.aarch64.rpm" + }, + "sha256:b8ecd7fa0e7e072828e374dfb0d61bb8eecca7c190f3661050cee5e3fc8854b4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/firewalld-0.8.2-2.fc32.noarch.rpm" + }, + "sha256:b9904d16c86c28074bfdba38a3a740b61ad5de50a9945d550021027130fcfd41": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.aarch64.rpm" + }, + "sha256:ba170325441d8341085944301c006bd4b82b4813d0aedf3a9990fbe0500deba8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/q/qemu-img-4.2.0-7.fc32.aarch64.rpm" + }, + "sha256:bbf9571bf10df55a90e73b372da33b6ac54fad5778cea58064b7b57dcbb17180": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-cryptography-2.8-3.fc32.aarch64.rpm" + }, + "sha256:bc2c4637779e037072ebbd00215afbb33ce05706c7851cfde4cc0637c63f75f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/shim-aa64-15-8.aarch64.rpm" + }, + "sha256:bcb07748c8688c788ec69c3a33c0abd1bb3a496b9aa09b5729265670bc7ba0eb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-attrs-19.3.0-2.fc32.noarch.rpm" + }, + "sha256:bcb0cd53344744f9c8d11041eb76fc5b304f78c791846521bbe105e78f2bd0f8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/procps-ng-3.3.15-7.fc32.aarch64.rpm" + }, + "sha256:c030084d188fc99359cc088bd77d2ee6578e717f1cf2d067b8967c6cbe863c6e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openldap-2.4.47-4.fc32.aarch64.rpm" + }, + "sha256:c0ad832521885f97d08c043350b72f4fade0bbe995f81da8a18370a932bf5aee": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmodulemd-2.9.1-1.fc32.aarch64.rpm" + }, + "sha256:c25bb676affa185a2c4671859484bd24f62d2ec9c4d67584590bb14dd0396775": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.aarch64.rpm" + }, + "sha256:c47b5f407d000d200f595e7f5026e72cae8b43416c17e5bb943551a9ddc5422e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-libs-0.179-1.fc32.aarch64.rpm" + }, + "sha256:c494a613443f49b6cca4845f9c3410a1267f609c503a81a9a26a272443708fee": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libverto-0.3.0-9.fc32.aarch64.rpm" + }, + "sha256:c4cc17e543253b9b37fa982f49ae1c5f411ff563120e5c4225556a7584994a37": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fipscheck-lib-1.5.0-8.fc32.aarch64.rpm" + }, + "sha256:c599bda69d6f4265be06e7206bfbf4a6a3c77b61bb960ddce807f5499736be4c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/y/yajl-2.1.0-14.fc32.aarch64.rpm" + }, + "sha256:c748420c4d7407a95f840416a80c468d8304e529f93b40a45081a49fd7a29232": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmetalink-0.1.3-10.fc32.aarch64.rpm" + }, + "sha256:c75bf533b09243daeca728129a6fe10fca47d0c150fd43b5dab7b4993584536f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.aarch64.rpm" + }, + "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:c8516d06666d3f0728c9cbfc1b7f0a88f8884e5cd7bd3bad6721c7c9000f1f8f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/less-551-3.fc32.aarch64.rpm" + }, + "sha256:c93df175a0a4989aaaeb170406d8ff13a2cd93a5fc52ad33468245fea2044a86": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pytz-2019.3-2.fc32.noarch.rpm" + }, + "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rootfiles-8.1-27.fc32.noarch.rpm" + }, + "sha256:ca85fd192aa25f8fc630c28c8858cf3065a2b32f3ba3a373ffd3ea49b0f0813c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.aarch64.rpm" + }, + "sha256:caa6fe00c6e322e961c4b7a02ba4a10cc939b84121e09d07d331adcdc2ae1af2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libattr-2.4.48-8.fc32.aarch64.rpm" + }, + "sha256:caf76966e150fbe796865d2d18479b080657cb0bada9283048a4586cf034d4e6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.aarch64.rpm" + }, + "sha256:cb0c64cc81e0b384bbc9d27ffcb2a655b13c91a799aad8972264aed1767926a3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-slip-dbus-0.6.4-19.fc32.noarch.rpm" + }, + "sha256:cb8b8225bc9f2a16377a41977de4e6f6d651cbe738035b93234d65e8dd80fa0f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kernel-modules-5.6.6-300.fc32.aarch64.rpm" + }, + "sha256:cc2019e304ecdfa3a245de005342c8d617d1da0d834e510849764fb38b929655": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mokutil-0.3.0-15.fc32.aarch64.rpm" + }, + "sha256:cc30c04cfc6be2239727608174e90ac766cb7c77cdd1b70c4be619cb2df42a52": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcurl-7.69.1-1.fc32.aarch64.rpm" + }, + "sha256:cc531264ae00fbc4e465b6b47c8f3772edee80346b92cee1fae88d8cdb9dcdcf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sssd-client-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:ccf07a3682a1038a6224b3da69e20f201584ed1c879539cedb57e184aa14429a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sed-4.5-5.fc32.aarch64.rpm" + }, + "sha256:ce2085aef5dd78dd1fcf025f9cc65cfb4e796448a1d233408205c1ada466865f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gobject-introspection-1.64.1-1.fc32.aarch64.rpm" + }, + "sha256:cebb9ee0271c7199cb057c9a722b17c6fe59a0b0ec7f438ef6e0c35d4b5f330e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnupg2-2.2.19-1.fc32.aarch64.rpm" + }, + "sha256:cfc944e77ac28ff62a93736d901a5a312fec5efd17f5e7800deafb4b801ae00d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/plymouth-core-libs-0.9.4-14.20200325gite31c81f.fc32.aarch64.rpm" + }, + "sha256:cffbab9f6052ee2c7b8bcc369a411e319174de094fb94eaf71555ce485049a74": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgpg-error-1.36-3.fc32.aarch64.rpm" + }, + "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm" + }, + "sha256:d0bc781a80be1d1fe204ec6b26255240261d55f6e24a28343572f2221a00533e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jwt-1.7.1-7.fc32.noarch.rpm" + }, + "sha256:d1b286af57220764054969fc63065ead51d9bb969d320ada6a72c3b24c9e0ca3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fipscheck-1.5.0-8.fc32.aarch64.rpm" + }, + "sha256:d1d1b3fafa2ea83870641411a9ae955be74887689516ae3cc54ada0a38b06873": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-nftables-0.9.3-2.fc32.aarch64.rpm" + }, + "sha256:d2abba1a0523bd9df5073900593ab13ec2ed2e391440be4d883314fa154370f8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-slip-0.6.4-19.fc32.noarch.rpm" + }, + "sha256:d2bd77606d1c91208be05edce6ea04c24fa2efc880569eecb958afde1a7fb17e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-4.15.1-2.fc32.1.aarch64.rpm" + }, + "sha256:d3281a3ef4de5e13ef1a76effd68169c0965467039059141609a078520f3db04": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.aarch64.rpm" + }, + "sha256:d4fd722ee0ff5da4114b91964e430e4e45c1a428739f1e5be5db7854e5c85f11": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libyaml-0.2.2-3.fc32.aarch64.rpm" + }, + "sha256:d552c735d48fa647509605f524863eab28b69b9fc8d7c62a67479c3af0878024": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/w/which-2.21-19.fc32.aarch64.rpm" + }, + "sha256:d611f0c4252c4c4b893850807748e62cf4d17d72d544ef2744091df3206d8178": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-requests-2.22.0-8.fc32.noarch.rpm" + }, + "sha256:d6ad55479187ecd7368002e67e83d44d24995fd1a1b6790c1c6c9fb1fd5e52a6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcollection-0.7.0-44.fc32.aarch64.rpm" + }, + "sha256:d891183e3f802f3e2b6ca77f1ea528d2aec52be8ef38ae2cb93c11f82ecff321": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libini_config-1.3.1-44.fc32.aarch64.rpm" + }, + "sha256:d91a87c9d6dd3924d2fe7992f88f2542cce3451b7ff2576eb4d65d9ca1a7620f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/curl-7.69.1-1.fc32.aarch64.rpm" + }, + "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dateutil-2.8.0-8.fc32.noarch.rpm" + }, + "sha256:d96c93f959443e974001c4b423f3da556187e5b3fedf1232951f480c67cb4568": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dracut-config-generic-050-26.git20200316.fc32.aarch64.rpm" + }, + "sha256:d9827569f071bfd26862b67a24640e37944fbd7198c30503006f0ac9e1e2521e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xen-libs-4.13.0-6.fc32.aarch64.rpm" + }, + "sha256:da4e2994692c9ed4d0760528139f6437bcb0d54862fac1a4afa55e329393d254": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/j/jansson-2.12-5.fc32.aarch64.rpm" + }, + "sha256:db514e9d99e58e08e698083e1ca969f9fc98ae27ee9b63aa8d2133bd95a7002e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/lmdb-libs-0.9.24-1.fc32.aarch64.rpm" + }, + "sha256:dbc1d91408e0e115e1c084f4c28d2d15f07cfc8b6c6d766192b65a28407422e7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpcap-1.9.1-3.fc32.aarch64.rpm" + }, + "sha256:debd948a7e454f07dd7ab8ed79984158b98ce333d77be948e4393bb87c518ab8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/shadow-utils-4.8.1-2.fc32.aarch64.rpm" + }, + "sha256:ded5407f20b7a1de7b8aee85786d8b70eec61d0385e95e90d95849612ef13dea": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/h/hostname-3.23-2.fc32.aarch64.rpm" + }, + "sha256:df7184fef93e9f8f535d78349605595a812511db5e6dee26cbee15569a055422": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/z/zlib-1.2.11-21.fc32.aarch64.rpm" + }, + "sha256:e2eecb13c57728ce4c8e04ad8747ca51fe086a58bd55c0d3d29cf9683d0d09ad": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcomps-0.1.14-4.fc32.aarch64.rpm" + }, + "sha256:e30482032783ab59417bfaf8394be42d2e2e779a580979bd87f15bd0880df858": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-1.1.1d-7.fc32.aarch64.rpm" + }, + "sha256:e38207cecd64ed0fe5002828ff0aa05dbbb1f5418350babd4c1cfa3d1e3261fe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kernel-core-5.6.6-300.fc32.aarch64.rpm" + }, + "sha256:e4056437576c76b1b4fe8d8b98cce6f006194d74cbc0a30058cf29aab6b9307f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmaxminddb-1.3.2-2.fc32.aarch64.rpm" + }, + "sha256:e76aea00d64d100bafcea1672ce65f8bfd47bdf7e0dc7bf859fc0c6ec29d5823": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.aarch64.rpm" + }, + "sha256:e7b49bf8e3183d7604c7f7f51dfbc1e03bc599ddd7eac459a86f4ffdc8432533": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libaio-0.3.111-7.fc32.aarch64.rpm" + }, + "sha256:e7b9fd73c260cd22d3a36823530d4f623ea0e16844b900a5677c769afa76341c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-chardet-3.0.4-15.fc32.noarch.rpm" + }, + "sha256:e883b70720adcf3c09b13d1ff2d3425be2d0a296be18cabf25dd5f9ce79cf8d3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iptables-nft-1.8.4-7.fc32.aarch64.rpm" + }, + "sha256:e8941c0abaa3ce527b14bc19013088149be9c5aacceb788718293cdef9132d18": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/acl-2.2.53-5.fc32.aarch64.rpm" + }, + "sha256:e96e4caf6c98faa5fb61bd3b13ee7afa0d7510d3176fe3d3cbf485847ce985fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgcrypt-1.8.5-3.fc32.aarch64.rpm" + }, + "sha256:ea25c1482716623eabc1b151d318bc1499e2448480f46e6113e1e4667150393c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/ipset-7.6-1.fc32.aarch64.rpm" + }, + "sha256:ea44ae1c951d3d4b30ff2a2d898c041ce9072acc94d6ea1e0e305c45e802019f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtasn1-4.16.0-1.fc32.aarch64.rpm" + }, + "sha256:ea775b1806d30c2d076f685977c0efbe57ff2afcf10a3c8f8f1a250ecb9ef5b6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libref_array-0.1.5-44.fc32.aarch64.rpm" + }, + "sha256:eb98f6ee22b110395790e83648339d36f74068883d3d6a7a8a3ecb9cbf55bc60": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_nss_idmap-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm" + }, + "sha256:ed19ff9b81a5a72262a95b8ff52c867efc43aa50d28171328afd4791ee3daef8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_autofs-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:eded265cff5d22b89a955570eba030643d6730dd5987c2efed3110ef74cd0254": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libsemanage-3.0-3.fc32.aarch64.rpm" + }, + "sha256:ef9bff2d88851209d35f9824e02fc431fba5e5347752ea1c197a57c0c45ad401": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.aarch64.rpm" + }, + "sha256:f0143760628def255de0b7e1aba6f7880705329703f7357425868483ba8f43e7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pyrsistent-0.15.7-2.fc32.aarch64.rpm" + }, + "sha256:f148b87e6bf64242dad504997f730c11706e5c0da52b036b8faebb5807d252d9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grep-3.3-4.fc32.aarch64.rpm" + }, + "sha256:f26fae2e85396d00d7935b21154ba7a0fa591495c59973abd59455e181bf84d1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iptables-libs-1.8.4-7.fc32.aarch64.rpm" + }, + "sha256:f50ad72a9259205b2381b94fa674f53860e63c9e3cd1fb013653dab2bc7203a6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-langpack-en-2.31-2.fc32.aarch64.rpm" + }, + "sha256:f6203a41ed91197bb770a38a101d977f0f56de86ccc5a71cee9c0e198f26bcbc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-ply-3.11-7.fc32.noarch.rpm" + }, + "sha256:f71860520fb965ae5a41a43a68903aac712bea01ceac568774ac9ce6006d1f31": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/audit-3.0-0.19.20191104git1c2f876.fc32.aarch64.rpm" + }, + "sha256:f8f3ec395d7d96c45cbd370f2376fe6266397ce091ab8fdaf884256ae8ae159f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/filesystem-3.14-2.fc32.aarch64.rpm" + }, + "sha256:fa791a4328b4c41b7190d862de921605f266a64abee03b2ea2e8d2b644be307f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pysocks-1.7.1-4.fc32.noarch.rpm" + }, + "sha256:faca2dc4a45d1bd365d9364ea59f361854f3379ef6f13e9fa0a85368a0621f45": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpsl-0.21.0-4.fc32.aarch64.rpm" + }, + "sha256:fc6b083682762fb891b50ed6e9f684ac54a2a05a78e24078ff66d4636ae89588": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xfsprogs-5.4.0-3.fc32.aarch64.rpm" + }, + "sha256:fd22de4195e6d8e792e4eb6dd0181246d9aaefb04acbc8a9d7d5609d1012bed6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libXext-1.3.4-3.fc32.aarch64.rpm" + }, + "sha256:fd4a80fe7847a6a2ec1bd83672841b5369729168ac52928f60f3cf4a53f8ed6b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/spice-vdagent-0.20.0-2.fc32.aarch64.rpm" + }, + "sha256:fdb1ed306445c6a37fb7182def5983a66501c5eb8be5f1b08c38db5f3613561f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-all-langpacks-2.31-2.fc32.aarch64.rpm" + }, + "sha256:fdef1b445deff2b85a564372284dc8f49cf8376ee60cd26938484e8312dab650": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/c-ares-1.15.0-5.fc32.aarch64.rpm" + }, + "sha256:fe06eff5ac0e3e538775aad2cb0f801af491476e9cb508caa9107f4a5f913e52": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsepol-3.0-3.fc32.aarch64.rpm" + }, + "sha256:fe512ddf337568ca1e4d1c0cce66dda461ca570587c7beb1e1be3960540e394f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kmod-27-1.fc32.aarch64.rpm" + }, + "sha256:fe7ee39b0779c467c5d8a20daff4911e1967523e6fc748179e77584168e18bde": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-6.1-15.20191109.fc32.aarch64.rpm" + }, + "sha256:fe8b11652adfe4c64d96b442d5b31da207dfdf4a551c491c0934498537c8dfc5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libblkid-2.35.1-7.fc32.aarch64.rpm" + }, + "sha256:fe96e7fe3da0db38b8b8850c9dedd50c1358309fee24c774bc64ddee62bb11be": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-gpg-1.13.1-6.fc32.aarch64.rpm" + }, + "sha256:ff135143da781c30919f03000c4409cc09d38cd65cd7b01f3c540617ce0f69db": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcroco-0.6.13-3.fc32.aarch64.rpm" + }, + "sha256:ff6540076bd7247ca2c1c8beb8979adb5eaf27877125c7f5cc187dc10913048f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-udev-245.4-1.fc32.aarch64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:e8941c0abaa3ce527b14bc19013088149be9c5aacceb788718293cdef9132d18", + "check_gpg": true + }, + { + "checksum": "sha256:10d828cc7803aca9b59e3bb9b52e0af45a2828250f1eab7f0fc08cdb981f191d", + "check_gpg": true + }, + { + "checksum": "sha256:63cef561bcaadd5b9a1bf93b968f284ca76c3ad2b90b5c439b62456c0517164f", + "check_gpg": true + }, + { + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "checksum": "sha256:5b304375adf911d056b36dc35f22af027d9283efbaebcb8231f052aef3982f05", + "check_gpg": true + }, + { + "checksum": "sha256:caf76966e150fbe796865d2d18479b080657cb0bada9283048a4586cf034d4e6", + "check_gpg": true + }, + { + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "checksum": "sha256:8961e2f35093845b7498c03f1a9776f7c49f7d9d057f56b0774f470b8e8179ff", + "check_gpg": true + }, + { + "checksum": "sha256:8d08e12adb541773aa8073a1aa6b02fbbd8539fe3597a60ac934732930cd5981", + "check_gpg": true + }, + { + "checksum": "sha256:081d831528796c3e5c47b89c363a0f530bf77e3e2e0098cd586d814bea9a12f0", + "check_gpg": true + }, + { + "checksum": "sha256:ca85fd192aa25f8fc630c28c8858cf3065a2b32f3ba3a373ffd3ea49b0f0813c", + "check_gpg": true + }, + { + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "checksum": "sha256:96f3fbcfb91ae41de7e514fe0b619aab870ea4d5f53544c0fd215284cb0b68e2", + "check_gpg": true + }, + { + "checksum": "sha256:d91a87c9d6dd3924d2fe7992f88f2542cce3451b7ff2576eb4d65d9ca1a7620f", + "check_gpg": true + }, + { + "checksum": "sha256:b9904d16c86c28074bfdba38a3a740b61ad5de50a9945d550021027130fcfd41", + "check_gpg": true + }, + { + "checksum": "sha256:067d98bda561e94f9f0bba60f691dc8ba4610434603f26cf6f4fa22677da8465", + "check_gpg": true + }, + { + "checksum": "sha256:60c9a00d8c528ad5806a5fec20ed3ffb8ad195e9eb9bf5294893e8425be1fa9f", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "checksum": "sha256:86959d2fd51c4d52fa5fcdf91c226ffdece5960299c15f29adc2a5c0bf05397b", + "check_gpg": true + }, + { + "checksum": "sha256:9c8ec2364045411b95cfb3995d2189f0082832af7bf7280ec1cdf7bfee1afe05", + "check_gpg": true + }, + { + "checksum": "sha256:18c188f63504b8cf3bc88d95de458a1eb216bca268378a6839618ef7468dc635", + "check_gpg": true + }, + { + "checksum": "sha256:5d52cffee2d5360db8cf7e6ed4b19a68de4a0ae55f42ed279d4fdb3a70bb72f3", + "check_gpg": true + }, + { + "checksum": "sha256:13290758e03b977aed5e23b7ba9a01157b6802fd78baf75bc1fc184864e9e31e", + "check_gpg": true + }, + { + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "checksum": "sha256:a12bd9183ce051f7c483506540f7682206a9cbd27b34cb7734be6583bc5d11db", + "check_gpg": true + }, + { + "checksum": "sha256:d3281a3ef4de5e13ef1a76effd68169c0965467039059141609a078520f3db04", + "check_gpg": true + }, + { + "checksum": "sha256:7f667fb609062e966720bf1bb1fa97a91ca245925c68e36d2770caba57aa4db2", + "check_gpg": true + }, + { + "checksum": "sha256:a499f61c75ef2179b2da62647b64b716fec1af2f15653876a27e57c284921baf", + "check_gpg": true + }, + { + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "checksum": "sha256:8c545e3282deed08d36bb138f1ba15d02dfd1066f46f45582e24b6dc5b07cb6b", + "check_gpg": true + }, + { + "checksum": "sha256:c47b5f407d000d200f595e7f5026e72cae8b43416c17e5bb943551a9ddc5422e", + "check_gpg": true + }, + { + "checksum": "sha256:4940f6e26a93fe638667adb6e12969fe915b3a7b0cfeb58877dd6d7bccf46c1a", + "check_gpg": true + }, + { + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "checksum": "sha256:aa7fd8a1313c0e384353da5e054dad62205b4f0e112a4a45eb414eb357513e04", + "check_gpg": true + }, + { + "checksum": "sha256:f8f3ec395d7d96c45cbd370f2376fe6266397ce091ab8fdaf884256ae8ae159f", + "check_gpg": true + }, + { + "checksum": "sha256:5cc385c1ca3df73a1dd7865159628a6b0ce186f8679c6bc95dda0b4791e4a9fc", + "check_gpg": true + }, + { + "checksum": "sha256:62bafab5a0f37fdec29ce38bc1d635e0a81ab165061faaf5d83f5246ca4e2db0", + "check_gpg": true + }, + { + "checksum": "sha256:aa667df83abb5a675444e898fb7554527b2967f3bdc793e6b4b56d794f74b9ef", + "check_gpg": true + }, + { + "checksum": "sha256:6837a13f3c643b5da33bd694efc4e95f54b5cc5e15de61884644378367d55804", + "check_gpg": true + }, + { + "checksum": "sha256:36a3ae11acb7916e932ff704a4527b126bb39f9e849072b16242719c8de11119", + "check_gpg": true + }, + { + "checksum": "sha256:fdb1ed306445c6a37fb7182def5983a66501c5eb8be5f1b08c38db5f3613561f", + "check_gpg": true + }, + { + "checksum": "sha256:2590d214d4986fa95653e7f83e67a81dbf822b621994a9ab867e7c377bc479c2", + "check_gpg": true + }, + { + "checksum": "sha256:5b7a135c35562e64344cc9f1ca37a5239649152cc055e14e7bf9bf84843eccab", + "check_gpg": true + }, + { + "checksum": "sha256:cebb9ee0271c7199cb057c9a722b17c6fe59a0b0ec7f438ef6e0c35d4b5f330e", + "check_gpg": true + }, + { + "checksum": "sha256:11004aa2821bdebfca77ab93e7ed405e0e93eb685850f5fb57b01762692ce155", + "check_gpg": true + }, + { + "checksum": "sha256:532a58ae361b9c0bc147037fb96f338684b949bd4071b19bac322b8967c32a01", + "check_gpg": true + }, + { + "checksum": "sha256:11204917b909836508acff0df2499301d3b2f8f0a1c0e341de904ac9fb4bbedf", + "check_gpg": true + }, + { + "checksum": "sha256:f148b87e6bf64242dad504997f730c11706e5c0da52b036b8faebb5807d252d9", + "check_gpg": true + }, + { + "checksum": "sha256:50b7b06e94253cb4eacc1bfb68f8343b73cbd6dae427f8ad81367f7b8ebf58a8", + "check_gpg": true + }, + { + "checksum": "sha256:c25bb676affa185a2c4671859484bd24f62d2ec9c4d67584590bb14dd0396775", + "check_gpg": true + }, + { + "checksum": "sha256:f26fae2e85396d00d7935b21154ba7a0fa591495c59973abd59455e181bf84d1", + "check_gpg": true + }, + { + "checksum": "sha256:06d6f5d9909beb1cc6731dc6d5d86b9e7885285848bad8ef16079ad3e8824e0b", + "check_gpg": true + }, + { + "checksum": "sha256:a05c8fb554ed38050b59d10f587ac70cf341c1f38b02ffe8a8433f7fc16efd68", + "check_gpg": true + }, + { + "checksum": "sha256:7684be07a8e054660705f8d6b1522d9a829be6614293096dc7b871682e445709", + "check_gpg": true + }, + { + "checksum": "sha256:a01d61d802834e2e6789548f707877827fb394c90097705af9c391e6bfcd6c24", + "check_gpg": true + }, + { + "checksum": "sha256:98d58695f22a613ff6ffcb2b738b4127be7b72e5d56f7d0dbd3c999f189ba323", + "check_gpg": true + }, + { + "checksum": "sha256:e7b49bf8e3183d7604c7f7f51dfbc1e03bc599ddd7eac459a86f4ffdc8432533", + "check_gpg": true + }, + { + "checksum": "sha256:340a82cfe6a9d18933b99a4e001d7e54f7ab225fe5e7fb1a7f51cb1c675c7050", + "check_gpg": true + }, + { + "checksum": "sha256:6ef55c2aa000adea432676010756cf69e8851587ad17277b21bde362e369bf3e", + "check_gpg": true + }, + { + "checksum": "sha256:1c982f31133def3baea707e0d1f0fe4a014d2c8c5f20ac8d69362cff4f26d5e9", + "check_gpg": true + }, + { + "checksum": "sha256:caa6fe00c6e322e961c4b7a02ba4a10cc939b84121e09d07d331adcdc2ae1af2", + "check_gpg": true + }, + { + "checksum": "sha256:fe8b11652adfe4c64d96b442d5b31da207dfdf4a551c491c0934498537c8dfc5", + "check_gpg": true + }, + { + "checksum": "sha256:95581bd0421b0fddf94b046e0bf8f13d3ce3d797acd5292d87127ed9e9505d80", + "check_gpg": true + }, + { + "checksum": "sha256:0a2eadd29cc53df942d3f0acc016b281efa4347fc2e9de1d7b8b61d9c5f0d894", + "check_gpg": true + }, + { + "checksum": "sha256:5875ba2d9b9ced8b2d2faa880b5f1811a89e17defe946ccf99b201790a0d2520", + "check_gpg": true + }, + { + "checksum": "sha256:93c5fe6589243bff8f4d6934d82616a4cce0f30d071c513cc56f8e53bfc19d17", + "check_gpg": true + }, + { + "checksum": "sha256:e2eecb13c57728ce4c8e04ad8747ca51fe086a58bd55c0d3d29cf9683d0d09ad", + "check_gpg": true + }, + { + "checksum": "sha256:cc30c04cfc6be2239727608174e90ac766cb7c77cdd1b70c4be619cb2df42a52", + "check_gpg": true + }, + { + "checksum": "sha256:7bfb33bfa3c3a952c54cb61b7f7c7047c1fd91e8e334f53f54faea6f34e6c0bb", + "check_gpg": true + }, + { + "checksum": "sha256:435530a0b9a086018694034ce48e9589348fc66389d884977b400f2f74814ac8", + "check_gpg": true + }, + { + "checksum": "sha256:62afc19040e8fbf7ac7946f02d67cdd19086658c3d8713a6c120482fd769537e", + "check_gpg": true + }, + { + "checksum": "sha256:ad874e09de00dbdb887eb6a94351869950ead7f6409dfa191d1443d3bb9dd255", + "check_gpg": true + }, + { + "checksum": "sha256:58988a2b7213098503b56d5388eba1bf2a01b9ff027961acb1e9f55c47d237ad", + "check_gpg": true + }, + { + "checksum": "sha256:291df16c0ae66fa5685cd033c84ae92765be4f4e17ce4936e47dc602ac6ff93e", + "check_gpg": true + }, + { + "checksum": "sha256:28892ae62cd1b4dadded523be8cb5f9e0fddeaa864919ee4b0dfad3bba8fd06f", + "check_gpg": true + }, + { + "checksum": "sha256:e96e4caf6c98faa5fb61bd3b13ee7afa0d7510d3176fe3d3cbf485847ce985fd", + "check_gpg": true + }, + { + "checksum": "sha256:09a9dd8c3ae4fe9a9817c71c4b2af35f2d7e1dbf2c9f4659028ce69a5d2f2d02", + "check_gpg": true + }, + { + "checksum": "sha256:cffbab9f6052ee2c7b8bcc369a411e319174de094fb94eaf71555ce485049a74", + "check_gpg": true + }, + { + "checksum": "sha256:500c4abc34ff58e6f06c7194034b2d68b618c5e6afa89b551ab74ef226e1880a", + "check_gpg": true + }, + { + "checksum": "sha256:1ee4f732b1b4b237d7301219fc5c52b63c9ab9e77db746612852fef5610f69b7", + "check_gpg": true + }, + { + "checksum": "sha256:c748420c4d7407a95f840416a80c468d8304e529f93b40a45081a49fd7a29232", + "check_gpg": true + }, + { + "checksum": "sha256:2356581880df7b8275896b18de24e432a362ee159fc3127f92476ffe8d0432fd", + "check_gpg": true + }, + { + "checksum": "sha256:c0ad832521885f97d08c043350b72f4fade0bbe995f81da8a18370a932bf5aee", + "check_gpg": true + }, + { + "checksum": "sha256:1e533f7f64169288e90b3851e509cf1aedf4da0fe986288da53516b2b77ac77d", + "check_gpg": true + }, + { + "checksum": "sha256:400c91d4d6d1125ec891c16ea72aa4123fc4c96e02f8668a8ae6dbc27113d408", + "check_gpg": true + }, + { + "checksum": "sha256:a0260a37707734c6f97885687a6ad5967c23cb0c693668bf1402e6ee5d4abe1e", + "check_gpg": true + }, + { + "checksum": "sha256:17f5c9a25bf0f952f6defa6a857e938bfc1f72c69217f666a537bf8f1daff5f8", + "check_gpg": true + }, + { + "checksum": "sha256:4139803076f102e2224b81b4f1da3f6d066b89e272201d2720557763f9acfcd5", + "check_gpg": true + }, + { + "checksum": "sha256:dbc1d91408e0e115e1c084f4c28d2d15f07cfc8b6c6d766192b65a28407422e7", + "check_gpg": true + }, + { + "checksum": "sha256:faca2dc4a45d1bd365d9364ea59f361854f3379ef6f13e9fa0a85368a0621f45", + "check_gpg": true + }, + { + "checksum": "sha256:1a096ed78df5a9339c4b3c15372275a884a1124b048ffcfbdb768db881e47ab2", + "check_gpg": true + }, + { + "checksum": "sha256:56bc7a11331fe199a45bc23f348deff8cd5e1ee02c617b6ed429d61ba537fc8b", + "check_gpg": true + }, + { + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "checksum": "sha256:7149be5bd74792181003b872a9bc636157f4b795b12374c0857fb7271f2567ac", + "check_gpg": true + }, + { + "checksum": "sha256:7cac868a4b1ac9c380192a31a45a314613af3f958aaf2b778642667dc73bc182", + "check_gpg": true + }, + { + "checksum": "sha256:6028f86f132faee662e97075270f68e8125fd339c8689a2b661facd25c3b829b", + "check_gpg": true + }, + { + "checksum": "sha256:91cd21ca1f5b881a78e9c0a6dd3cdad7401f7216a1ab3acbe9337d8e3e054a5e", + "check_gpg": true + }, + { + "checksum": "sha256:b78889f3a2ac801456c643fd5603017383221aa33eac381e4f74b9a13fbf3830", + "check_gpg": true + }, + { + "checksum": "sha256:fe06eff5ac0e3e538775aad2cb0f801af491476e9cb508caa9107f4a5f913e52", + "check_gpg": true + }, + { + "checksum": "sha256:836a45edfd4e2cda0b6bac254b2e6225aad36f9bae0f96f2fe7da42896db0dae", + "check_gpg": true + }, + { + "checksum": "sha256:0042a3d3b19152d0a16ee321cbe99208a2f4ebd009515c1f6f962a1d5f9cde26", + "check_gpg": true + }, + { + "checksum": "sha256:15a8a718cb6f629474fec7756b4701430e14ff94aad6cf6fe20f3eb7174a7783", + "check_gpg": true + }, + { + "checksum": "sha256:a830bb13938bedaf5cc91b13ab78e2cf9172b06727b7e9e1bec2cddce8dd9e2d", + "check_gpg": true + }, + { + "checksum": "sha256:7bd98aa2d554f06ab525320ebf628a6e002011462e71a47337676a2c99de5aec", + "check_gpg": true + }, + { + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "checksum": "sha256:3ea53f635b4f559b2bdb0e58d54dbfddc126b18abe23b46b94aecbf7c0d5132c", + "check_gpg": true + }, + { + "checksum": "sha256:ea44ae1c951d3d4b30ff2a2d898c041ce9072acc94d6ea1e0e305c45e802019f", + "check_gpg": true + }, + { + "checksum": "sha256:ef9bff2d88851209d35f9824e02fc431fba5e5347752ea1c197a57c0c45ad401", + "check_gpg": true + }, + { + "checksum": "sha256:2d7ad38e86f5109c732a32bf9bea612c4c674aba6ad4cca2d211d826edc7fd6f", + "check_gpg": true + }, + { + "checksum": "sha256:50d91ca18b6cdc9395424b852d2828d1b75e2af318932a2442376d2a10819f6a", + "check_gpg": true + }, + { + "checksum": "sha256:22954219a63638d7418204d818c01a0e3c914e2b2eb970f2e4638dcf5a7a5634", + "check_gpg": true + }, + { + "checksum": "sha256:2bc82e132696d9daa4eef545ff3352d6eb588b9a1b9584e515d15a7c3d6471df", + "check_gpg": true + }, + { + "checksum": "sha256:c494a613443f49b6cca4845f9c3410a1267f609c503a81a9a26a272443708fee", + "check_gpg": true + }, + { + "checksum": "sha256:64b64bab720df9dd7fd37ebf80a07795a95ac11e640eda3209b6517dcd7133e5", + "check_gpg": true + }, + { + "checksum": "sha256:9db3ade981c564c361eed9068cd35acac93c1b1db54b6fb2a74070ce68141cff", + "check_gpg": true + }, + { + "checksum": "sha256:33788835331bed7f75e5cd2126d8d75511211175c9ac6d93824baec1a546a28d", + "check_gpg": true + }, + { + "checksum": "sha256:d4fd722ee0ff5da4114b91964e430e4e45c1a428739f1e5be5db7854e5c85f11", + "check_gpg": true + }, + { + "checksum": "sha256:2c4d03577e8661920a7b64fcc68735b795288744f1b188512a96960143030474", + "check_gpg": true + }, + { + "checksum": "sha256:1befc4be3c3c72b3210e54f96f4334f268eaecdd3b77af7cadea0ef31f0e2ca9", + "check_gpg": true + }, + { + "checksum": "sha256:a7394cd1b11a1b25efaab43a30b1d9687683884babc162f43e29fdee4f00bda8", + "check_gpg": true + }, + { + "checksum": "sha256:45e2c1c76a0a0b6e1164c457307250a54a7de5905992b4351a84183c2e9f2633", + "check_gpg": true + }, + { + "checksum": "sha256:94d02790ff430efebbfc12ca2c2029c66e1691b70baf7cf45159fb8464d38e56", + "check_gpg": true + }, + { + "checksum": "sha256:fe7ee39b0779c467c5d8a20daff4911e1967523e6fc748179e77584168e18bde", + "check_gpg": true + }, + { + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "checksum": "sha256:a973f92acb0afe61087a69d13a532c18a39dd60b3ba4826b38350f2c6b27e417", + "check_gpg": true + }, + { + "checksum": "sha256:15b2402e11402a6cb494bf7ea31ebf10bf1adb0759aab417e63d05916e56aa45", + "check_gpg": true + }, + { + "checksum": "sha256:5b1cb1251cf7f65c50d9e3fcc11901fef5132dc177cce68a50918da481bb7629", + "check_gpg": true + }, + { + "checksum": "sha256:c030084d188fc99359cc088bd77d2ee6578e717f1cf2d067b8967c6cbe863c6e", + "check_gpg": true + }, + { + "checksum": "sha256:e30482032783ab59417bfaf8394be42d2e2e779a580979bd87f15bd0880df858", + "check_gpg": true + }, + { + "checksum": "sha256:0178be1e5d6da8053061d29013d8fda8445d37eac908afbf4a2ca92faf950f2c", + "check_gpg": true + }, + { + "checksum": "sha256:85dc7962af97e86a655b8ec5d5276e511f50b1d4abe624f4d8cb0d784007e342", + "check_gpg": true + }, + { + "checksum": "sha256:afba861f69234f4cb4040085a4868c7424666a4356d0e2002e16b0afb75ec0d2", + "check_gpg": true + }, + { + "checksum": "sha256:b867eeba06e6fc9084c227d8b3ea54f1815cb1833a29babf114fa1167aa17f2d", + "check_gpg": true + }, + { + "checksum": "sha256:9738af51bf206850f6611306bed20542ed32a1701188611caab0b6896e4ffb37", + "check_gpg": true + }, + { + "checksum": "sha256:a3775cb3bc81bb5444e26695a62b1bd2eb48a91d7bc3a361d763c185cb817de1", + "check_gpg": true + }, + { + "checksum": "sha256:7417889b8455ba87230fd5a987fe160d86de8250b87d7ae9bbcba90c32053172", + "check_gpg": true + }, + { + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "checksum": "sha256:a580e36566f6ffceef809e49fc4c7f9b1418a16123d4d49079c8423b6a337e67", + "check_gpg": true + }, + { + "checksum": "sha256:29bcc2f3f85ca7bdc22178af3e16743f55353bd9f25fb4c748d8c9f7117fe56f", + "check_gpg": true + }, + { + "checksum": "sha256:8f4be33cb040f081bb1f863b92e94ac7838af743cb5a0ce9d8c8ec9a611f71a6", + "check_gpg": true + }, + { + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "checksum": "sha256:857330a729697c1b6e8d86550391f1abf4db87d5ffeffeb5f00065fa8be85cbd", + "check_gpg": true + }, + { + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "checksum": "sha256:fe96e7fe3da0db38b8b8850c9dedd50c1358309fee24c774bc64ddee62bb11be", + "check_gpg": true + }, + { + "checksum": "sha256:79defc84763baec2190da8941221abfa002d6f6c9e8c3486e2c492389fca2a57", + "check_gpg": true + }, + { + "checksum": "sha256:e76aea00d64d100bafcea1672ce65f8bfd47bdf7e0dc7bf859fc0c6ec29d5823", + "check_gpg": true + }, + { + "checksum": "sha256:023d3d7be30607410a2357b50b8ef3f94a07baf2842bfba0421f803600ec605f", + "check_gpg": true + }, + { + "checksum": "sha256:32a00991ec85f0bf2a336e00033a0e70b0da963eb42d81bbad18a7a11f41d4eb", + "check_gpg": true + }, + { + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "checksum": "sha256:34efde201252afe93ec3af61af30c6d32cfbe5ecbdcecaf4667666f12482757d", + "check_gpg": true + }, + { + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "checksum": "sha256:acafdf6b20fea5974da004b77eced20b00c59a908edcef9c4c4e60815fdbf8f3", + "check_gpg": true + }, + { + "checksum": "sha256:ba170325441d8341085944301c006bd4b82b4813d0aedf3a9990fbe0500deba8", + "check_gpg": true + }, + { + "checksum": "sha256:3d6ec574fe2c612bcc45395f7ee87c68f45016f005c6d7aeee6b37897f41b8d2", + "check_gpg": true + }, + { + "checksum": "sha256:6007c88c459315a5e2ce354086bd0372a56e15cdd0dc14e6e889ab859f8d8365", + "check_gpg": true + }, + { + "checksum": "sha256:d2bd77606d1c91208be05edce6ea04c24fa2efc880569eecb958afde1a7fb17e", + "check_gpg": true + }, + { + "checksum": "sha256:0c30a7fd9f69ad808183afa0814e363689ff63e7a82856a790e5fa111c031b96", + "check_gpg": true + }, + { + "checksum": "sha256:7fe5838c895cd1158a6ae2afb3794e79e393d6701330e1109592e6b45f4bd876", + "check_gpg": true + }, + { + "checksum": "sha256:91ab783e9eb00d5baba65989c86c3d742033bd2306ff7adb0b78185f28d2ca86", + "check_gpg": true + }, + { + "checksum": "sha256:7d5d62696fc69bb890912be71c05e92496129f198838cb56d349a8fc700a85a6", + "check_gpg": true + }, + { + "checksum": "sha256:33ca43cf0714aef344a70be4cfa42322694cc975a2eeee0bf31325dbca7f2842", + "check_gpg": true + }, + { + "checksum": "sha256:ccf07a3682a1038a6224b3da69e20f201584ed1c879539cedb57e184aa14429a", + "check_gpg": true + }, + { + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "checksum": "sha256:debd948a7e454f07dd7ab8ed79984158b98ce333d77be948e4393bb87c518ab8", + "check_gpg": true + }, + { + "checksum": "sha256:a92c4a583aacd37beb069c996307bd782f809c78fd1fb802de25a53efbaff8f8", + "check_gpg": true + }, + { + "checksum": "sha256:c75bf533b09243daeca728129a6fe10fca47d0c150fd43b5dab7b4993584536f", + "check_gpg": true + }, + { + "checksum": "sha256:41c6a8ea4240f2fa6cea0333cc6d5f59731ac843398eb457c182e90af367783c", + "check_gpg": true + }, + { + "checksum": "sha256:52aa6e698e60cd360d5b9473fd1ebcc7e238e2125449bfdcc41b3e0fe13ae645", + "check_gpg": true + }, + { + "checksum": "sha256:9baa05a69943b0c6274403276f45817ab56193de62b5b64205b4fd35951e0895", + "check_gpg": true + }, + { + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "checksum": "sha256:2f849fdf4588b1b4e86a008b6a82f30ff2ec1db1ae2bd21e067c6f910e4cb237", + "check_gpg": true + }, + { + "checksum": "sha256:3242e0ce48f95d7a271125cf1222b5af09e20fe85194623d95336e1c678bdee8", + "check_gpg": true + }, + { + "checksum": "sha256:a6c26dd0ba8fc6a15e845f72f90e89b62f7344d7793896e707e610286b5e4541", + "check_gpg": true + }, + { + "checksum": "sha256:91e35b3750f5029be019542a4143cf00de68559b9ab6ae6df2c8f7ea6e60acd9", + "check_gpg": true + }, + { + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "checksum": "sha256:654a9a9997c975998e1cb5d9250cd34b9d9d4d69f43c9282e67ad4d38fa2bcdf", + "check_gpg": true + }, + { + "checksum": "sha256:25e6968493572c680d6f8cad03e591f6e1e0e6ce0d1fbe3648d4b64ba529491d", + "check_gpg": true + }, + { + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "checksum": "sha256:202d761caf4c9d4937c04388a7180d6687a79e8141136be0f7ecc3a54bf80594", + "check_gpg": true + }, + { + "checksum": "sha256:48381163a3f2c524697efc07538f040fde0b69d4e0fdcbe3bcfbc9924dd7d5dd", + "check_gpg": true + }, + { + "checksum": "sha256:0a31a882e4ac33233b36e2c61cc09125a936f54877137d5bb2ddc1ca8a5f9a12", + "check_gpg": true + }, + { + "checksum": "sha256:df7184fef93e9f8f535d78349605595a812511db5e6dee26cbee15569a055422", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts", + "labels": { + "/usr/bin/cp": "system_u:object_r:install_exec_t:s0" + } + } + } + ] + }, + "runner": "org.osbuild.fedora32" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:61e37e1df1e427525e6dd873d04fe2afc5e6825f2788a33b941e532e5a27ed7e", + "check_gpg": true + }, + { + "checksum": "sha256:78fb24703a4bafd4eb4ae0e065abf9111a127774ac74b1dc3a25d385c0dae1a0", + "check_gpg": true + }, + { + "checksum": "sha256:e8941c0abaa3ce527b14bc19013088149be9c5aacceb788718293cdef9132d18", + "check_gpg": true + }, + { + "checksum": "sha256:6e14c7f44b0f17ebcc3922027c944b6e47202ac9495fd85cc31ad7bc31719a64", + "check_gpg": true + }, + { + "checksum": "sha256:10d828cc7803aca9b59e3bb9b52e0af45a2828250f1eab7f0fc08cdb981f191d", + "check_gpg": true + }, + { + "checksum": "sha256:f71860520fb965ae5a41a43a68903aac712bea01ceac568774ac9ce6006d1f31", + "check_gpg": true + }, + { + "checksum": "sha256:63cef561bcaadd5b9a1bf93b968f284ca76c3ad2b90b5c439b62456c0517164f", + "check_gpg": true + }, + { + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "checksum": "sha256:5b304375adf911d056b36dc35f22af027d9283efbaebcb8231f052aef3982f05", + "check_gpg": true + }, + { + "checksum": "sha256:caf76966e150fbe796865d2d18479b080657cb0bada9283048a4586cf034d4e6", + "check_gpg": true + }, + { + "checksum": "sha256:fdef1b445deff2b85a564372284dc8f49cf8376ee60cd26938484e8312dab650", + "check_gpg": true + }, + { + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "checksum": "sha256:ad6f711174c59ffb9116d792068cc8fd0585b46eb5d9bf18a3c9937727b9a379", + "check_gpg": true + }, + { + "checksum": "sha256:55a343c96ac98c2bdf7bffdf5edc73f87b482a26b4a1a5e95670343dcec88fb8", + "check_gpg": true + }, + { + "checksum": "sha256:1e1e9900e9d3a2b8eb6684060672526948df2cb9f751e7d72cb4fa5bffe71747", + "check_gpg": true + }, + { + "checksum": "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309", + "check_gpg": true + }, + { + "checksum": "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56", + "check_gpg": true + }, + { + "checksum": "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280", + "check_gpg": true + }, + { + "checksum": "sha256:8961e2f35093845b7498c03f1a9776f7c49f7d9d057f56b0774f470b8e8179ff", + "check_gpg": true + }, + { + "checksum": "sha256:8d08e12adb541773aa8073a1aa6b02fbbd8539fe3597a60ac934732930cd5981", + "check_gpg": true + }, + { + "checksum": "sha256:7bd78f630f6ed96cd08942330f4dad8bfb8d2d7961262ee942411e501a1aefdd", + "check_gpg": true + }, + { + "checksum": "sha256:081d831528796c3e5c47b89c363a0f530bf77e3e2e0098cd586d814bea9a12f0", + "check_gpg": true + }, + { + "checksum": "sha256:ca85fd192aa25f8fc630c28c8858cf3065a2b32f3ba3a373ffd3ea49b0f0813c", + "check_gpg": true + }, + { + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "checksum": "sha256:96f3fbcfb91ae41de7e514fe0b619aab870ea4d5f53544c0fd215284cb0b68e2", + "check_gpg": true + }, + { + "checksum": "sha256:d91a87c9d6dd3924d2fe7992f88f2542cce3451b7ff2576eb4d65d9ca1a7620f", + "check_gpg": true + }, + { + "checksum": "sha256:b9904d16c86c28074bfdba38a3a740b61ad5de50a9945d550021027130fcfd41", + "check_gpg": true + }, + { + "checksum": "sha256:067d98bda561e94f9f0bba60f691dc8ba4610434603f26cf6f4fa22677da8465", + "check_gpg": true + }, + { + "checksum": "sha256:60c9a00d8c528ad5806a5fec20ed3ffb8ad195e9eb9bf5294893e8425be1fa9f", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "checksum": "sha256:86959d2fd51c4d52fa5fcdf91c226ffdece5960299c15f29adc2a5c0bf05397b", + "check_gpg": true + }, + { + "checksum": "sha256:20307d5a1d3fccfe8f64c8ea074c6a751dc36849c7495592989677fd01da9147", + "check_gpg": true + }, + { + "checksum": "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315", + "check_gpg": true + }, + { + "checksum": "sha256:9c8ec2364045411b95cfb3995d2189f0082832af7bf7280ec1cdf7bfee1afe05", + "check_gpg": true + }, + { + "checksum": "sha256:18c188f63504b8cf3bc88d95de458a1eb216bca268378a6839618ef7468dc635", + "check_gpg": true + }, + { + "checksum": "sha256:5d52cffee2d5360db8cf7e6ed4b19a68de4a0ae55f42ed279d4fdb3a70bb72f3", + "check_gpg": true + }, + { + "checksum": "sha256:27a0d9447ef63c95a3182b32606e6de1bd17f2cfc7910a456fa43996db67833f", + "check_gpg": true + }, + { + "checksum": "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013", + "check_gpg": true + }, + { + "checksum": "sha256:13290758e03b977aed5e23b7ba9a01157b6802fd78baf75bc1fc184864e9e31e", + "check_gpg": true + }, + { + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "checksum": "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d", + "check_gpg": true + }, + { + "checksum": "sha256:a16c32dda1845c89cb7822ab839e5f48b222b3c168f82455f7f54a1a7863ffea", + "check_gpg": true + }, + { + "checksum": "sha256:d96c93f959443e974001c4b423f3da556187e5b3fedf1232951f480c67cb4568", + "check_gpg": true + }, + { + "checksum": "sha256:d3281a3ef4de5e13ef1a76effd68169c0965467039059141609a078520f3db04", + "check_gpg": true + }, + { + "checksum": "sha256:7f667fb609062e966720bf1bb1fa97a91ca245925c68e36d2770caba57aa4db2", + "check_gpg": true + }, + { + "checksum": "sha256:b743aafa82f3326f8f2e6d5464ae7fa57fabab3ad791099eaf2d151b43208b42", + "check_gpg": true + }, + { + "checksum": "sha256:04bc54c723bfa9e1b6bb6567e9d8cd3e1ed389fc2be97259b971a8cbfe5f95e4", + "check_gpg": true + }, + { + "checksum": "sha256:a30386b14f04905c1e78944f9b36d81ac83b7de1301c353d7e90b33f4a8c5e93", + "check_gpg": true + }, + { + "checksum": "sha256:a499f61c75ef2179b2da62647b64b716fec1af2f15653876a27e57c284921baf", + "check_gpg": true + }, + { + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "checksum": "sha256:8c545e3282deed08d36bb138f1ba15d02dfd1066f46f45582e24b6dc5b07cb6b", + "check_gpg": true + }, + { + "checksum": "sha256:c47b5f407d000d200f595e7f5026e72cae8b43416c17e5bb943551a9ddc5422e", + "check_gpg": true + }, + { + "checksum": "sha256:4940f6e26a93fe638667adb6e12969fe915b3a7b0cfeb58877dd6d7bccf46c1a", + "check_gpg": true + }, + { + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "checksum": "sha256:0dcc4568055843acf5571553731d57a0d042b6602e6932bc4fe88718597c2fbe", + "check_gpg": true + }, + { + "checksum": "sha256:aa7fd8a1313c0e384353da5e054dad62205b4f0e112a4a45eb414eb357513e04", + "check_gpg": true + }, + { + "checksum": "sha256:f8f3ec395d7d96c45cbd370f2376fe6266397ce091ab8fdaf884256ae8ae159f", + "check_gpg": true + }, + { + "checksum": "sha256:876c2450443ab68948b045721202ca193077876b67c2e85f9dd427452ef0c4d5", + "check_gpg": true + }, + { + "checksum": "sha256:d1b286af57220764054969fc63065ead51d9bb969d320ada6a72c3b24c9e0ca3", + "check_gpg": true + }, + { + "checksum": "sha256:c4cc17e543253b9b37fa982f49ae1c5f411ff563120e5c4225556a7584994a37", + "check_gpg": true + }, + { + "checksum": "sha256:b8ecd7fa0e7e072828e374dfb0d61bb8eecca7c190f3661050cee5e3fc8854b4", + "check_gpg": true + }, + { + "checksum": "sha256:47538b1db9720be4699329a8da32d873187d0c6c22f45252614ac5b8a8312482", + "check_gpg": true + }, + { + "checksum": "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012", + "check_gpg": true + }, + { + "checksum": "sha256:5cc385c1ca3df73a1dd7865159628a6b0ce186f8679c6bc95dda0b4791e4a9fc", + "check_gpg": true + }, + { + "checksum": "sha256:62bafab5a0f37fdec29ce38bc1d635e0a81ab165061faaf5d83f5246ca4e2db0", + "check_gpg": true + }, + { + "checksum": "sha256:aa667df83abb5a675444e898fb7554527b2967f3bdc793e6b4b56d794f74b9ef", + "check_gpg": true + }, + { + "checksum": "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3", + "check_gpg": true + }, + { + "checksum": "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f", + "check_gpg": true + }, + { + "checksum": "sha256:60c3cbbe546fb12db4c7164a51613ea9ae20f7199537cdf5145e828c78544493", + "check_gpg": true + }, + { + "checksum": "sha256:57e1695da46f19db4a851304d57e7ce2409c287a88e9b52af0b76ed2252a4f98", + "check_gpg": true + }, + { + "checksum": "sha256:6837a13f3c643b5da33bd694efc4e95f54b5cc5e15de61884644378367d55804", + "check_gpg": true + }, + { + "checksum": "sha256:36a3ae11acb7916e932ff704a4527b126bb39f9e849072b16242719c8de11119", + "check_gpg": true + }, + { + "checksum": "sha256:2590d214d4986fa95653e7f83e67a81dbf822b621994a9ab867e7c377bc479c2", + "check_gpg": true + }, + { + "checksum": "sha256:f50ad72a9259205b2381b94fa674f53860e63c9e3cd1fb013653dab2bc7203a6", + "check_gpg": true + }, + { + "checksum": "sha256:5b7a135c35562e64344cc9f1ca37a5239649152cc055e14e7bf9bf84843eccab", + "check_gpg": true + }, + { + "checksum": "sha256:cebb9ee0271c7199cb057c9a722b17c6fe59a0b0ec7f438ef6e0c35d4b5f330e", + "check_gpg": true + }, + { + "checksum": "sha256:11004aa2821bdebfca77ab93e7ed405e0e93eb685850f5fb57b01762692ce155", + "check_gpg": true + }, + { + "checksum": "sha256:532a58ae361b9c0bc147037fb96f338684b949bd4071b19bac322b8967c32a01", + "check_gpg": true + }, + { + "checksum": "sha256:ce2085aef5dd78dd1fcf025f9cc65cfb4e796448a1d233408205c1ada466865f", + "check_gpg": true + }, + { + "checksum": "sha256:11204917b909836508acff0df2499301d3b2f8f0a1c0e341de904ac9fb4bbedf", + "check_gpg": true + }, + { + "checksum": "sha256:f148b87e6bf64242dad504997f730c11706e5c0da52b036b8faebb5807d252d9", + "check_gpg": true + }, + { + "checksum": "sha256:174a7c064ba48fdfc61ee5a091ec474dfbdb32a1a602cbe0776937c39e222663", + "check_gpg": true + }, + { + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "checksum": "sha256:6221b210a7778432738994829f6c7e9f047940e53ee42a0e6458b91095b82756", + "check_gpg": true + }, + { + "checksum": "sha256:a47d4bfb9dd589c97bb530afb3988cbfaf7336a89207e4b74fd9ab596812c97f", + "check_gpg": true + }, + { + "checksum": "sha256:a0ec936c91f5f69951d08a6cdf03406ee7365bc3417d3426bb6b4db855c45dda", + "check_gpg": true + }, + { + "checksum": "sha256:96ff29e784025e76bfde72abc89ccb520cb75087f8c44cd747d5d3ebc1df78db", + "check_gpg": true + }, + { + "checksum": "sha256:50b7b06e94253cb4eacc1bfb68f8343b73cbd6dae427f8ad81367f7b8ebf58a8", + "check_gpg": true + }, + { + "checksum": "sha256:ded5407f20b7a1de7b8aee85786d8b70eec61d0385e95e90d95849612ef13dea", + "check_gpg": true + }, + { + "checksum": "sha256:5eed798a806e26720df47f1c95600ae67cc1275c381f33c8260b32b23d81a978", + "check_gpg": true + }, + { + "checksum": "sha256:c25bb676affa185a2c4671859484bd24f62d2ec9c4d67584590bb14dd0396775", + "check_gpg": true + }, + { + "checksum": "sha256:3377ae652fbbd22f2c61815bfd1bb58185b5f57c194d9b0cce3056ab11522779", + "check_gpg": true + }, + { + "checksum": "sha256:b1fc5d1d8d62d0f883ff483b818e7759f9afd4a1fa15421af56e1a615535fe63", + "check_gpg": true + }, + { + "checksum": "sha256:7c38b938c3d35cfee1ad11d5d09c3c6a4f208b065a25b2a3556006f04f2608b9", + "check_gpg": true + }, + { + "checksum": "sha256:4674c9871d3a70a005fc880d6ce1c0e56418192085dae8b5eb861003ef9a2c1b", + "check_gpg": true + }, + { + "checksum": "sha256:ea25c1482716623eabc1b151d318bc1499e2448480f46e6113e1e4667150393c", + "check_gpg": true + }, + { + "checksum": "sha256:03c7e6ea76b2aa8e7f8c8c8039412f618790ea39aeb3c1ffab205ba6b3bee54d", + "check_gpg": true + }, + { + "checksum": "sha256:f26fae2e85396d00d7935b21154ba7a0fa591495c59973abd59455e181bf84d1", + "check_gpg": true + }, + { + "checksum": "sha256:e883b70720adcf3c09b13d1ff2d3425be2d0a296be18cabf25dd5f9ce79cf8d3", + "check_gpg": true + }, + { + "checksum": "sha256:8b20ec83c7ff085d0f27c7af0a87dc49bacdf65d52b61119819ea14862eff91c", + "check_gpg": true + }, + { + "checksum": "sha256:da4e2994692c9ed4d0760528139f6437bcb0d54862fac1a4afa55e329393d254", + "check_gpg": true + }, + { + "checksum": "sha256:06d6f5d9909beb1cc6731dc6d5d86b9e7885285848bad8ef16079ad3e8824e0b", + "check_gpg": true + }, + { + "checksum": "sha256:79410f2d954c0a380a0b67bc965982ac1645c0365060cf8ba106db74b0b339f4", + "check_gpg": true + }, + { + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "checksum": "sha256:14005ca38ce35a0c2e9d24b37991059d213f9b3277895eaa2a5b45e242cf8dc8", + "check_gpg": true + }, + { + "checksum": "sha256:e38207cecd64ed0fe5002828ff0aa05dbbb1f5418350babd4c1cfa3d1e3261fe", + "check_gpg": true + }, + { + "checksum": "sha256:cb8b8225bc9f2a16377a41977de4e6f6d651cbe738035b93234d65e8dd80fa0f", + "check_gpg": true + }, + { + "checksum": "sha256:a05c8fb554ed38050b59d10f587ac70cf341c1f38b02ffe8a8433f7fc16efd68", + "check_gpg": true + }, + { + "checksum": "sha256:fe512ddf337568ca1e4d1c0cce66dda461ca570587c7beb1e1be3960540e394f", + "check_gpg": true + }, + { + "checksum": "sha256:7684be07a8e054660705f8d6b1522d9a829be6614293096dc7b871682e445709", + "check_gpg": true + }, + { + "checksum": "sha256:8e768615a238b08e3fd0857f53e7acf5c5c4e3736dc03824179429a4d848de61", + "check_gpg": true + }, + { + "checksum": "sha256:a01d61d802834e2e6789548f707877827fb394c90097705af9c391e6bfcd6c24", + "check_gpg": true + }, + { + "checksum": "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0", + "check_gpg": true + }, + { + "checksum": "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389", + "check_gpg": true + }, + { + "checksum": "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca", + "check_gpg": true + }, + { + "checksum": "sha256:c8516d06666d3f0728c9cbfc1b7f0a88f8884e5cd7bd3bad6721c7c9000f1f8f", + "check_gpg": true + }, + { + "checksum": "sha256:9caea0e8a3f554e49c9f8d4b0196b9224958de9947aacf1031f0ff1ee209d522", + "check_gpg": true + }, + { + "checksum": "sha256:73e9cf715ccf15c1e26fbcd40ec29788fb7250958bc923e56b4826a8d6fb6920", + "check_gpg": true + }, + { + "checksum": "sha256:6b0c1295d6fb58926ccc9351b53cffc16df1ccd07736091394a42baec02c3333", + "check_gpg": true + }, + { + "checksum": "sha256:fd22de4195e6d8e792e4eb6dd0181246d9aaefb04acbc8a9d7d5609d1012bed6", + "check_gpg": true + }, + { + "checksum": "sha256:07cbd2ccb6fcb0007cd5cd12e2c0fbfbf0c4dbdfb15ff9e0f7b5db70b2cb083d", + "check_gpg": true + }, + { + "checksum": "sha256:a1395539f86c44227dc1dd97dbca51a19f012bc05c4bd796e56bac17d8b054ec", + "check_gpg": true + }, + { + "checksum": "sha256:6e645fa926b4d2c3e2cff3516572c0855b072175dc0ff514463a9b6ab9c16684", + "check_gpg": true + }, + { + "checksum": "sha256:18b34a587bc48280c94b7ea3a8d8c40bce4e97cb36153031ddf27671bcaddb43", + "check_gpg": true + }, + { + "checksum": "sha256:98d58695f22a613ff6ffcb2b738b4127be7b72e5d56f7d0dbd3c999f189ba323", + "check_gpg": true + }, + { + "checksum": "sha256:340a82cfe6a9d18933b99a4e001d7e54f7ab225fe5e7fb1a7f51cb1c675c7050", + "check_gpg": true + }, + { + "checksum": "sha256:6ef55c2aa000adea432676010756cf69e8851587ad17277b21bde362e369bf3e", + "check_gpg": true + }, + { + "checksum": "sha256:1c982f31133def3baea707e0d1f0fe4a014d2c8c5f20ac8d69362cff4f26d5e9", + "check_gpg": true + }, + { + "checksum": "sha256:caa6fe00c6e322e961c4b7a02ba4a10cc939b84121e09d07d331adcdc2ae1af2", + "check_gpg": true + }, + { + "checksum": "sha256:a5c841dda3df90e810cfd87c42211a26dc0745f9bae341b6bfc6b08114e48ed5", + "check_gpg": true + }, + { + "checksum": "sha256:fe8b11652adfe4c64d96b442d5b31da207dfdf4a551c491c0934498537c8dfc5", + "check_gpg": true + }, + { + "checksum": "sha256:95581bd0421b0fddf94b046e0bf8f13d3ce3d797acd5292d87127ed9e9505d80", + "check_gpg": true + }, + { + "checksum": "sha256:0a2eadd29cc53df942d3f0acc016b281efa4347fc2e9de1d7b8b61d9c5f0d894", + "check_gpg": true + }, + { + "checksum": "sha256:5875ba2d9b9ced8b2d2faa880b5f1811a89e17defe946ccf99b201790a0d2520", + "check_gpg": true + }, + { + "checksum": "sha256:1ddaeb7c602005e75c0ea2603a533d692a94915a297b71e68a8e27327456c3d0", + "check_gpg": true + }, + { + "checksum": "sha256:d6ad55479187ecd7368002e67e83d44d24995fd1a1b6790c1c6c9fb1fd5e52a6", + "check_gpg": true + }, + { + "checksum": "sha256:93c5fe6589243bff8f4d6934d82616a4cce0f30d071c513cc56f8e53bfc19d17", + "check_gpg": true + }, + { + "checksum": "sha256:e2eecb13c57728ce4c8e04ad8747ca51fe086a58bd55c0d3d29cf9683d0d09ad", + "check_gpg": true + }, + { + "checksum": "sha256:ff135143da781c30919f03000c4409cc09d38cd65cd7b01f3c540617ce0f69db", + "check_gpg": true + }, + { + "checksum": "sha256:cc30c04cfc6be2239727608174e90ac766cb7c77cdd1b70c4be619cb2df42a52", + "check_gpg": true + }, + { + "checksum": "sha256:7bfb33bfa3c3a952c54cb61b7f7c7047c1fd91e8e334f53f54faea6f34e6c0bb", + "check_gpg": true + }, + { + "checksum": "sha256:435530a0b9a086018694034ce48e9589348fc66389d884977b400f2f74814ac8", + "check_gpg": true + }, + { + "checksum": "sha256:82bd171ac3f9a08c44e8144297a4dd9cd2567a916065a57eb656330e2b4e007f", + "check_gpg": true + }, + { + "checksum": "sha256:62afc19040e8fbf7ac7946f02d67cdd19086658c3d8713a6c120482fd769537e", + "check_gpg": true + }, + { + "checksum": "sha256:56bfd0b6087ca9d995981a10452330be702fb0e215f77cec656cfdd24acaf738", + "check_gpg": true + }, + { + "checksum": "sha256:3e25d33bea0d8de847f817b428fe92a6b02376634c7a6f0672bc668fa769869d", + "check_gpg": true + }, + { + "checksum": "sha256:ad874e09de00dbdb887eb6a94351869950ead7f6409dfa191d1443d3bb9dd255", + "check_gpg": true + }, + { + "checksum": "sha256:58988a2b7213098503b56d5388eba1bf2a01b9ff027961acb1e9f55c47d237ad", + "check_gpg": true + }, + { + "checksum": "sha256:a78e345faac8293fa2c05560869eb610ce53b5c851db932fd8915128b27d0c1e", + "check_gpg": true + }, + { + "checksum": "sha256:291df16c0ae66fa5685cd033c84ae92765be4f4e17ce4936e47dc602ac6ff93e", + "check_gpg": true + }, + { + "checksum": "sha256:a9e2dcc8d57bff7ec3424eb79de77ebe91a956dd39faa691b2ab4babd1683233", + "check_gpg": true + }, + { + "checksum": "sha256:28892ae62cd1b4dadded523be8cb5f9e0fddeaa864919ee4b0dfad3bba8fd06f", + "check_gpg": true + }, + { + "checksum": "sha256:e96e4caf6c98faa5fb61bd3b13ee7afa0d7510d3176fe3d3cbf485847ce985fd", + "check_gpg": true + }, + { + "checksum": "sha256:09a9dd8c3ae4fe9a9817c71c4b2af35f2d7e1dbf2c9f4659028ce69a5d2f2d02", + "check_gpg": true + }, + { + "checksum": "sha256:cffbab9f6052ee2c7b8bcc369a411e319174de094fb94eaf71555ce485049a74", + "check_gpg": true + }, + { + "checksum": "sha256:500c4abc34ff58e6f06c7194034b2d68b618c5e6afa89b551ab74ef226e1880a", + "check_gpg": true + }, + { + "checksum": "sha256:d891183e3f802f3e2b6ca77f1ea528d2aec52be8ef38ae2cb93c11f82ecff321", + "check_gpg": true + }, + { + "checksum": "sha256:5adad0edfcf9c4415734d11a35a5c14cbf53eb32827572dd6af670fadcad7f78", + "check_gpg": true + }, + { + "checksum": "sha256:2f117f22ec79fed75752c69b7e1c70582bad93b55fb4a5b0dc2bca978bafce85", + "check_gpg": true + }, + { + "checksum": "sha256:1ee4f732b1b4b237d7301219fc5c52b63c9ab9e77db746612852fef5610f69b7", + "check_gpg": true + }, + { + "checksum": "sha256:3c29cc12a25791c83c040def2df8f107b161ecc0cbf3965cad82f38a451c7963", + "check_gpg": true + }, + { + "checksum": "sha256:e4056437576c76b1b4fe8d8b98cce6f006194d74cbc0a30058cf29aab6b9307f", + "check_gpg": true + }, + { + "checksum": "sha256:c748420c4d7407a95f840416a80c468d8304e529f93b40a45081a49fd7a29232", + "check_gpg": true + }, + { + "checksum": "sha256:2356581880df7b8275896b18de24e432a362ee159fc3127f92476ffe8d0432fd", + "check_gpg": true + }, + { + "checksum": "sha256:c0ad832521885f97d08c043350b72f4fade0bbe995f81da8a18370a932bf5aee", + "check_gpg": true + }, + { + "checksum": "sha256:1e533f7f64169288e90b3851e509cf1aedf4da0fe986288da53516b2b77ac77d", + "check_gpg": true + }, + { + "checksum": "sha256:6bc574a7f67dc28909f84c05bfc3dfeeac04c088f809032d75313aac022f6064", + "check_gpg": true + }, + { + "checksum": "sha256:400c91d4d6d1125ec891c16ea72aa4123fc4c96e02f8668a8ae6dbc27113d408", + "check_gpg": true + }, + { + "checksum": "sha256:a0260a37707734c6f97885687a6ad5967c23cb0c693668bf1402e6ee5d4abe1e", + "check_gpg": true + }, + { + "checksum": "sha256:ab86efda86a5d4cb8b1fa979bcc37aeb5601616d48a4a9d34b4f4ceb4e553747", + "check_gpg": true + }, + { + "checksum": "sha256:07cf4ae85cb34a38b22eff66e1fd996b32a5beda0c60644b06ecdff33c224ce9", + "check_gpg": true + }, + { + "checksum": "sha256:17f5c9a25bf0f952f6defa6a857e938bfc1f72c69217f666a537bf8f1daff5f8", + "check_gpg": true + }, + { + "checksum": "sha256:231cefc11eb5a9ac8f23bbd294cef0bf3a690040df3048e063f8a269f2db75f8", + "check_gpg": true + }, + { + "checksum": "sha256:4139803076f102e2224b81b4f1da3f6d066b89e272201d2720557763f9acfcd5", + "check_gpg": true + }, + { + "checksum": "sha256:2dcee99ce05f5844438f827cf0cd1578f7863efb31c204bbc441cd2265ad9a7d", + "check_gpg": true + }, + { + "checksum": "sha256:dbc1d91408e0e115e1c084f4c28d2d15f07cfc8b6c6d766192b65a28407422e7", + "check_gpg": true + }, + { + "checksum": "sha256:8d34b5a58672b245adeecfad6bdd4efb01ea496b048f96680e885b33c881db5d", + "check_gpg": true + }, + { + "checksum": "sha256:9d1baa8d8cdd02711e1724b08de678f2bda92807a6ae0e9d1b6c2443e2810ffd", + "check_gpg": true + }, + { + "checksum": "sha256:faca2dc4a45d1bd365d9364ea59f361854f3379ef6f13e9fa0a85368a0621f45", + "check_gpg": true + }, + { + "checksum": "sha256:1a096ed78df5a9339c4b3c15372275a884a1124b048ffcfbdb768db881e47ab2", + "check_gpg": true + }, + { + "checksum": "sha256:ea775b1806d30c2d076f685977c0efbe57ff2afcf10a3c8f8f1a250ecb9ef5b6", + "check_gpg": true + }, + { + "checksum": "sha256:56bc7a11331fe199a45bc23f348deff8cd5e1ee02c617b6ed429d61ba537fc8b", + "check_gpg": true + }, + { + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "checksum": "sha256:7149be5bd74792181003b872a9bc636157f4b795b12374c0857fb7271f2567ac", + "check_gpg": true + }, + { + "checksum": "sha256:7cac868a4b1ac9c380192a31a45a314613af3f958aaf2b778642667dc73bc182", + "check_gpg": true + }, + { + "checksum": "sha256:6028f86f132faee662e97075270f68e8125fd339c8689a2b661facd25c3b829b", + "check_gpg": true + }, + { + "checksum": "sha256:91cd21ca1f5b881a78e9c0a6dd3cdad7401f7216a1ab3acbe9337d8e3e054a5e", + "check_gpg": true + }, + { + "checksum": "sha256:b78889f3a2ac801456c643fd5603017383221aa33eac381e4f74b9a13fbf3830", + "check_gpg": true + }, + { + "checksum": "sha256:fe06eff5ac0e3e538775aad2cb0f801af491476e9cb508caa9107f4a5f913e52", + "check_gpg": true + }, + { + "checksum": "sha256:836a45edfd4e2cda0b6bac254b2e6225aad36f9bae0f96f2fe7da42896db0dae", + "check_gpg": true + }, + { + "checksum": "sha256:0042a3d3b19152d0a16ee321cbe99208a2f4ebd009515c1f6f962a1d5f9cde26", + "check_gpg": true + }, + { + "checksum": "sha256:15a8a718cb6f629474fec7756b4701430e14ff94aad6cf6fe20f3eb7174a7783", + "check_gpg": true + }, + { + "checksum": "sha256:a830bb13938bedaf5cc91b13ab78e2cf9172b06727b7e9e1bec2cddce8dd9e2d", + "check_gpg": true + }, + { + "checksum": "sha256:7bd98aa2d554f06ab525320ebf628a6e002011462e71a47337676a2c99de5aec", + "check_gpg": true + }, + { + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "checksum": "sha256:ed19ff9b81a5a72262a95b8ff52c867efc43aa50d28171328afd4791ee3daef8", + "check_gpg": true + }, + { + "checksum": "sha256:0175f5d1834c1cb4a1f44c9ae20960fa674f26add0b88f903407abf2f3d22f82", + "check_gpg": true + }, + { + "checksum": "sha256:05121688770a80889f1e1d0594a5b14d6ac30cc6fe4d431e3aa829f2290ea973", + "check_gpg": true + }, + { + "checksum": "sha256:eb98f6ee22b110395790e83648339d36f74068883d3d6a7a8a3ecb9cbf55bc60", + "check_gpg": true + }, + { + "checksum": "sha256:1fab76e36bbad6727634f2a8ce6e722c0e6ca814969948ffd6ce7250bc75e7f3", + "check_gpg": true + }, + { + "checksum": "sha256:3ea53f635b4f559b2bdb0e58d54dbfddc126b18abe23b46b94aecbf7c0d5132c", + "check_gpg": true + }, + { + "checksum": "sha256:07b37612b8e0f09885ad653f3dbd2ff95a65bfd8b21c69d1cc20a4f3dbc0ef32", + "check_gpg": true + }, + { + "checksum": "sha256:ea44ae1c951d3d4b30ff2a2d898c041ce9072acc94d6ea1e0e305c45e802019f", + "check_gpg": true + }, + { + "checksum": "sha256:af826bfb93a53a0bbb0209f721fc7d15c0b5200c3f81c93ef9620cc640e90b77", + "check_gpg": true + }, + { + "checksum": "sha256:2c9bf996e1550ed5ad42398187ee14d65315d13ec5c9e2eab32b8fed0743b1fc", + "check_gpg": true + }, + { + "checksum": "sha256:831fcc64c103f60608b08f4f47c2b7b5b43571cef7576b9e549e6ae001434da5", + "check_gpg": true + }, + { + "checksum": "sha256:ef9bff2d88851209d35f9824e02fc431fba5e5347752ea1c197a57c0c45ad401", + "check_gpg": true + }, + { + "checksum": "sha256:2d7ad38e86f5109c732a32bf9bea612c4c674aba6ad4cca2d211d826edc7fd6f", + "check_gpg": true + }, + { + "checksum": "sha256:50d91ca18b6cdc9395424b852d2828d1b75e2af318932a2442376d2a10819f6a", + "check_gpg": true + }, + { + "checksum": "sha256:6f7b4c0efee821ea122401d350274334c6ef2d62dcacbe40942a00b162b6025b", + "check_gpg": true + }, + { + "checksum": "sha256:22954219a63638d7418204d818c01a0e3c914e2b2eb970f2e4638dcf5a7a5634", + "check_gpg": true + }, + { + "checksum": "sha256:2bc82e132696d9daa4eef545ff3352d6eb588b9a1b9584e515d15a7c3d6471df", + "check_gpg": true + }, + { + "checksum": "sha256:c494a613443f49b6cca4845f9c3410a1267f609c503a81a9a26a272443708fee", + "check_gpg": true + }, + { + "checksum": "sha256:3f5ca8c083b25935f7bd846c66b6ed65f297807ba25a8b62d4dac9389f87f9f1", + "check_gpg": true + }, + { + "checksum": "sha256:64b64bab720df9dd7fd37ebf80a07795a95ac11e640eda3209b6517dcd7133e5", + "check_gpg": true + }, + { + "checksum": "sha256:9db3ade981c564c361eed9068cd35acac93c1b1db54b6fb2a74070ce68141cff", + "check_gpg": true + }, + { + "checksum": "sha256:33788835331bed7f75e5cd2126d8d75511211175c9ac6d93824baec1a546a28d", + "check_gpg": true + }, + { + "checksum": "sha256:d4fd722ee0ff5da4114b91964e430e4e45c1a428739f1e5be5db7854e5c85f11", + "check_gpg": true + }, + { + "checksum": "sha256:2c4d03577e8661920a7b64fcc68735b795288744f1b188512a96960143030474", + "check_gpg": true + }, + { + "checksum": "sha256:ae08e152061808ccc334cc611d8ea4d18c05daa6b68731e255a533d0572594ae", + "check_gpg": true + }, + { + "checksum": "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4", + "check_gpg": true + }, + { + "checksum": "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9", + "check_gpg": true + }, + { + "checksum": "sha256:db514e9d99e58e08e698083e1ca969f9fc98ae27ee9b63aa8d2133bd95a7002e", + "check_gpg": true + }, + { + "checksum": "sha256:1befc4be3c3c72b3210e54f96f4334f268eaecdd3b77af7cadea0ef31f0e2ca9", + "check_gpg": true + }, + { + "checksum": "sha256:a7394cd1b11a1b25efaab43a30b1d9687683884babc162f43e29fdee4f00bda8", + "check_gpg": true + }, + { + "checksum": "sha256:086552102da5fd978a4722ddd21381d432abb9f886cd97761d2efbff2c588791", + "check_gpg": true + }, + { + "checksum": "sha256:45e2c1c76a0a0b6e1164c457307250a54a7de5905992b4351a84183c2e9f2633", + "check_gpg": true + }, + { + "checksum": "sha256:cc2019e304ecdfa3a245de005342c8d617d1da0d834e510849764fb38b929655", + "check_gpg": true + }, + { + "checksum": "sha256:94d02790ff430efebbfc12ca2c2029c66e1691b70baf7cf45159fb8464d38e56", + "check_gpg": true + }, + { + "checksum": "sha256:fe7ee39b0779c467c5d8a20daff4911e1967523e6fc748179e77584168e18bde", + "check_gpg": true + }, + { + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "checksum": "sha256:a973f92acb0afe61087a69d13a532c18a39dd60b3ba4826b38350f2c6b27e417", + "check_gpg": true + }, + { + "checksum": "sha256:8db16495c82aeba17b61896e6414f2ce212088370e88cf73b8999bf2317c015c", + "check_gpg": true + }, + { + "checksum": "sha256:15b2402e11402a6cb494bf7ea31ebf10bf1adb0759aab417e63d05916e56aa45", + "check_gpg": true + }, + { + "checksum": "sha256:8b30ff554cd68040f0a4a0759c502e1c1fccad2df64d2ee61145ae0f7bd668ad", + "check_gpg": true + }, + { + "checksum": "sha256:5b1cb1251cf7f65c50d9e3fcc11901fef5132dc177cce68a50918da481bb7629", + "check_gpg": true + }, + { + "checksum": "sha256:c030084d188fc99359cc088bd77d2ee6578e717f1cf2d067b8967c6cbe863c6e", + "check_gpg": true + }, + { + "checksum": "sha256:57ee793c1f8dc1c9b58953b03d7041501eea326cefc4dda6de640761c60e31f8", + "check_gpg": true + }, + { + "checksum": "sha256:5fa81b28d5100f987cd8d9317ccf200ec5b94d11ed3c8e2e90137b8981e71c61", + "check_gpg": true + }, + { + "checksum": "sha256:6fcaddc0fde4e23d6650cd46b3763903c7b693afa69aad52fdf87a8563aa5f84", + "check_gpg": true + }, + { + "checksum": "sha256:e30482032783ab59417bfaf8394be42d2e2e779a580979bd87f15bd0880df858", + "check_gpg": true + }, + { + "checksum": "sha256:0178be1e5d6da8053061d29013d8fda8445d37eac908afbf4a2ca92faf950f2c", + "check_gpg": true + }, + { + "checksum": "sha256:85dc7962af97e86a655b8ec5d5276e511f50b1d4abe624f4d8cb0d784007e342", + "check_gpg": true + }, + { + "checksum": "sha256:a718bc2a857bde398de2375efae50dac568217f547b272d7cbe0a1655ec0d961", + "check_gpg": true + }, + { + "checksum": "sha256:afba861f69234f4cb4040085a4868c7424666a4356d0e2002e16b0afb75ec0d2", + "check_gpg": true + }, + { + "checksum": "sha256:b867eeba06e6fc9084c227d8b3ea54f1815cb1833a29babf114fa1167aa17f2d", + "check_gpg": true + }, + { + "checksum": "sha256:9738af51bf206850f6611306bed20542ed32a1701188611caab0b6896e4ffb37", + "check_gpg": true + }, + { + "checksum": "sha256:026212c277c72facfd48901978afded50fc4050aedaa06a24e5e57875ce48c32", + "check_gpg": true + }, + { + "checksum": "sha256:30bf2e7deddad50a3054827c98e97adfd3ae1d24ae248980649db289198135a8", + "check_gpg": true + }, + { + "checksum": "sha256:a3775cb3bc81bb5444e26695a62b1bd2eb48a91d7bc3a361d763c185cb817de1", + "check_gpg": true + }, + { + "checksum": "sha256:7417889b8455ba87230fd5a987fe160d86de8250b87d7ae9bbcba90c32053172", + "check_gpg": true + }, + { + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "checksum": "sha256:77297d07807ddcb85bad6fd788c6f1692af47d00ad27305f3e2217e34e81f538", + "check_gpg": true + }, + { + "checksum": "sha256:a580e36566f6ffceef809e49fc4c7f9b1418a16123d4d49079c8423b6a337e67", + "check_gpg": true + }, + { + "checksum": "sha256:24df91ba73dffecb16916cf95dce726a5ce7de95197beb3ab147dd7890f2d2b0", + "check_gpg": true + }, + { + "checksum": "sha256:7967ddee97af6d0f83cfd3226f8e187edac2823ec1e4cef53b54415d759bffa9", + "check_gpg": true + }, + { + "checksum": "sha256:cfc944e77ac28ff62a93736d901a5a312fec5efd17f5e7800deafb4b801ae00d", + "check_gpg": true + }, + { + "checksum": "sha256:2c6ddfd3a551252013f647539df30097febcc4e0cd7c6eb2d1690e9f5aff66d6", + "check_gpg": true + }, + { + "checksum": "sha256:29bcc2f3f85ca7bdc22178af3e16743f55353bd9f25fb4c748d8c9f7117fe56f", + "check_gpg": true + }, + { + "checksum": "sha256:54613bd9e0524bb992bd7779c80a24b12df744085031cb8f3defb5fae55ca0f5", + "check_gpg": true + }, + { + "checksum": "sha256:8f4be33cb040f081bb1f863b92e94ac7838af743cb5a0ce9d8c8ec9a611f71a6", + "check_gpg": true + }, + { + "checksum": "sha256:bcb0cd53344744f9c8d11041eb76fc5b304f78c791846521bbe105e78f2bd0f8", + "check_gpg": true + }, + { + "checksum": "sha256:1eb386a258cebf600319b1f18344b047c9182485936d96da9c2b1067ac1c1bba", + "check_gpg": true + }, + { + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "checksum": "sha256:857330a729697c1b6e8d86550391f1abf4db87d5ffeffeb5f00065fa8be85cbd", + "check_gpg": true + }, + { + "checksum": "sha256:bcb07748c8688c788ec69c3a33c0abd1bb3a496b9aa09b5729265670bc7ba0eb", + "check_gpg": true + }, + { + "checksum": "sha256:16902074f43963a360df42fec639f8b30ad29ee0d8a9799ac26ff0ba5c60e4cd", + "check_gpg": true + }, + { + "checksum": "sha256:5719dd2fb399cadec08b4ac41c794239d2a2de2f012faeb970ab90a07bba0084", + "check_gpg": true + }, + { + "checksum": "sha256:844ee747d24d934104398be60747b407d19c8106ead11b06fe92fcc62bd765fc", + "check_gpg": true + }, + { + "checksum": "sha256:e7b9fd73c260cd22d3a36823530d4f623ea0e16844b900a5677c769afa76341c", + "check_gpg": true + }, + { + "checksum": "sha256:81b6181b947d50e0a1ea681298417e552421d6714900d07a34dc25899e5c9f60", + "check_gpg": true + }, + { + "checksum": "sha256:bbf9571bf10df55a90e73b372da33b6ac54fad5778cea58064b7b57dcbb17180", + "check_gpg": true + }, + { + "checksum": "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862", + "check_gpg": true + }, + { + "checksum": "sha256:092370d1e62096782f329944df0e7e01cc49bbc0fa4071d63f352cf45e89e5bc", + "check_gpg": true + }, + { + "checksum": "sha256:129adf9147d5d120546ca8e0fb5f165761106d386d366fe82591e372754d0b4a", + "check_gpg": true + }, + { + "checksum": "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4", + "check_gpg": true + }, + { + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "checksum": "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576", + "check_gpg": true + }, + { + "checksum": "sha256:8ee8c4bbf024b998ffb77a6b4194a2306ac21c5a6fcf70c8c81a0fbf38f7c7fc", + "check_gpg": true + }, + { + "checksum": "sha256:aced65470e04746b0db1d414ef8fc5e84f8f7cc9becfd187a92d130f21c854c4", + "check_gpg": true + }, + { + "checksum": "sha256:fe96e7fe3da0db38b8b8850c9dedd50c1358309fee24c774bc64ddee62bb11be", + "check_gpg": true + }, + { + "checksum": "sha256:79defc84763baec2190da8941221abfa002d6f6c9e8c3486e2c492389fca2a57", + "check_gpg": true + }, + { + "checksum": "sha256:61c51596cc97f35177efe8dc5e2ca52d8fd528570f33c184497f419259b73c90", + "check_gpg": true + }, + { + "checksum": "sha256:645f82cf62da25742cab5e8ffd1f764301b84ab19710d9f3fb3aff1cb57ffdc6", + "check_gpg": true + }, + { + "checksum": "sha256:4c9d77d63ddc7dda0e018fc1c97d46025794e336e58d838a631fcc130dfa3b9b", + "check_gpg": true + }, + { + "checksum": "sha256:6615aae3def0c49910e43e2d69f7ae8852694953dceb4b6235b5cf4099296d70", + "check_gpg": true + }, + { + "checksum": "sha256:6890a9545194ad6cf1b0c58e5273132171a9ced9cb665a1442aa62b6b6d3d2ea", + "check_gpg": true + }, + { + "checksum": "sha256:d0bc781a80be1d1fe204ec6b26255240261d55f6e24a28343572f2221a00533e", + "check_gpg": true + }, + { + "checksum": "sha256:e76aea00d64d100bafcea1672ce65f8bfd47bdf7e0dc7bf859fc0c6ec29d5823", + "check_gpg": true + }, + { + "checksum": "sha256:023d3d7be30607410a2357b50b8ef3f94a07baf2842bfba0421f803600ec605f", + "check_gpg": true + }, + { + "checksum": "sha256:32a00991ec85f0bf2a336e00033a0e70b0da963eb42d81bbad18a7a11f41d4eb", + "check_gpg": true + }, + { + "checksum": "sha256:84313c8f10f91d10e4f734c3a605b0a771d2faa72bf43deeed60a4cf3606a0da", + "check_gpg": true + }, + { + "checksum": "sha256:eded265cff5d22b89a955570eba030643d6730dd5987c2efed3110ef74cd0254", + "check_gpg": true + }, + { + "checksum": "sha256:a2fcc535573ade5656cdb6968eb13dd68380540b5f25a0eca3947676dc5f11d6", + "check_gpg": true + }, + { + "checksum": "sha256:d1d1b3fafa2ea83870641411a9ae955be74887689516ae3cc54ada0a38b06873", + "check_gpg": true + }, + { + "checksum": "sha256:391faab010ca30610a14e0b3d54fbc0331be39bc831086fb877f8021fe4b171f", + "check_gpg": true + }, + { + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "checksum": "sha256:f6203a41ed91197bb770a38a101d977f0f56de86ccc5a71cee9c0e198f26bcbc", + "check_gpg": true + }, + { + "checksum": "sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2", + "check_gpg": true + }, + { + "checksum": "sha256:4860a733ca3f22089c6c283cbdcf53123a702d60b5bffdd4fe9d76826f91139a", + "check_gpg": true + }, + { + "checksum": "sha256:a0b87b2dc3c5f536e94d6a4f3563a621dfbc067a62c3d1fe69bdb70c3cecec57", + "check_gpg": true + }, + { + "checksum": "sha256:f0143760628def255de0b7e1aba6f7880705329703f7357425868483ba8f43e7", + "check_gpg": true + }, + { + "checksum": "sha256:a107b3d3790a5bcfdc28f6f4718969039b103a681a2647f3cbcb82cf92e97acb", + "check_gpg": true + }, + { + "checksum": "sha256:fa791a4328b4c41b7190d862de921605f266a64abee03b2ea2e8d2b644be307f", + "check_gpg": true + }, + { + "checksum": "sha256:c93df175a0a4989aaaeb170406d8ff13a2cd93a5fc52ad33468245fea2044a86", + "check_gpg": true + }, + { + "checksum": "sha256:0055cc4eccd54df5b64c194618a26e894a0d61781c8d1f1f48687bfd296b15e4", + "check_gpg": true + }, + { + "checksum": "sha256:d611f0c4252c4c4b893850807748e62cf4d17d72d544ef2744091df3206d8178", + "check_gpg": true + }, + { + "checksum": "sha256:34efde201252afe93ec3af61af30c6d32cfbe5ecbdcecaf4667666f12482757d", + "check_gpg": true + }, + { + "checksum": "sha256:82d2eaad75cf45da9773298344dcbbaebb4da5b67526a6c43bc67d3f84d98616", + "check_gpg": true + }, + { + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "checksum": "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f", + "check_gpg": true + }, + { + "checksum": "sha256:d2abba1a0523bd9df5073900593ab13ec2ed2e391440be4d883314fa154370f8", + "check_gpg": true + }, + { + "checksum": "sha256:cb0c64cc81e0b384bbc9d27ffcb2a655b13c91a799aad8972264aed1767926a3", + "check_gpg": true + }, + { + "checksum": "sha256:acafdf6b20fea5974da004b77eced20b00c59a908edcef9c4c4e60815fdbf8f3", + "check_gpg": true + }, + { + "checksum": "sha256:3882823d0eb18e0e8146584f4a32a4801961f6fdc09075607746317eba3265be", + "check_gpg": true + }, + { + "checksum": "sha256:15dc3c9658d1ef11be8dfd13cee70e2f62e58e928a96e031a53562e38ede1c7c", + "check_gpg": true + }, + { + "checksum": "sha256:3d6ec574fe2c612bcc45395f7ee87c68f45016f005c6d7aeee6b37897f41b8d2", + "check_gpg": true + }, + { + "checksum": "sha256:6007c88c459315a5e2ce354086bd0372a56e15cdd0dc14e6e889ab859f8d8365", + "check_gpg": true + }, + { + "checksum": "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58", + "check_gpg": true + }, + { + "checksum": "sha256:d2bd77606d1c91208be05edce6ea04c24fa2efc880569eecb958afde1a7fb17e", + "check_gpg": true + }, + { + "checksum": "sha256:0c30a7fd9f69ad808183afa0814e363689ff63e7a82856a790e5fa111c031b96", + "check_gpg": true + }, + { + "checksum": "sha256:7fe5838c895cd1158a6ae2afb3794e79e393d6701330e1109592e6b45f4bd876", + "check_gpg": true + }, + { + "checksum": "sha256:91ab783e9eb00d5baba65989c86c3d742033bd2306ff7adb0b78185f28d2ca86", + "check_gpg": true + }, + { + "checksum": "sha256:7d5d62696fc69bb890912be71c05e92496129f198838cb56d349a8fc700a85a6", + "check_gpg": true + }, + { + "checksum": "sha256:33ca43cf0714aef344a70be4cfa42322694cc975a2eeee0bf31325dbca7f2842", + "check_gpg": true + }, + { + "checksum": "sha256:ccf07a3682a1038a6224b3da69e20f201584ed1c879539cedb57e184aa14429a", + "check_gpg": true + }, + { + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "checksum": "sha256:debd948a7e454f07dd7ab8ed79984158b98ce333d77be948e4393bb87c518ab8", + "check_gpg": true + }, + { + "checksum": "sha256:a92c4a583aacd37beb069c996307bd782f809c78fd1fb802de25a53efbaff8f8", + "check_gpg": true + }, + { + "checksum": "sha256:bc2c4637779e037072ebbd00215afbb33ce05706c7851cfde4cc0637c63f75f3", + "check_gpg": true + }, + { + "checksum": "sha256:fd4a80fe7847a6a2ec1bd83672841b5369729168ac52928f60f3cf4a53f8ed6b", + "check_gpg": true + }, + { + "checksum": "sha256:c75bf533b09243daeca728129a6fe10fca47d0c150fd43b5dab7b4993584536f", + "check_gpg": true + }, + { + "checksum": "sha256:cc531264ae00fbc4e465b6b47c8f3772edee80346b92cee1fae88d8cdb9dcdcf", + "check_gpg": true + }, + { + "checksum": "sha256:b3657ad1419ab11e07608c7bc4da75a91162b2398d66febfc061795bc1587036", + "check_gpg": true + }, + { + "checksum": "sha256:5ce4acbf25abd83a562f20e9a8a73b8860a766fb543d69ed9db6eb57fd75fc70", + "check_gpg": true + }, + { + "checksum": "sha256:46aa2a21a000eb70097a86788d853602f7db1238156f2364a802f0b37f0dc4e6", + "check_gpg": true + }, + { + "checksum": "sha256:56b5cea4fa7f4d74d4d15aae43ab4827387dead4659bd2bede66c38057cd19e7", + "check_gpg": true + }, + { + "checksum": "sha256:41c6a8ea4240f2fa6cea0333cc6d5f59731ac843398eb457c182e90af367783c", + "check_gpg": true + }, + { + "checksum": "sha256:52aa6e698e60cd360d5b9473fd1ebcc7e238e2125449bfdcc41b3e0fe13ae645", + "check_gpg": true + }, + { + "checksum": "sha256:9baa05a69943b0c6274403276f45817ab56193de62b5b64205b4fd35951e0895", + "check_gpg": true + }, + { + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "checksum": "sha256:ff6540076bd7247ca2c1c8beb8979adb5eaf27877125c7f5cc187dc10913048f", + "check_gpg": true + }, + { + "checksum": "sha256:3242e0ce48f95d7a271125cf1222b5af09e20fe85194623d95336e1c678bdee8", + "check_gpg": true + }, + { + "checksum": "sha256:a6c26dd0ba8fc6a15e845f72f90e89b62f7344d7793896e707e610286b5e4541", + "check_gpg": true + }, + { + "checksum": "sha256:91e35b3750f5029be019542a4143cf00de68559b9ab6ae6df2c8f7ea6e60acd9", + "check_gpg": true + }, + { + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "checksum": "sha256:654a9a9997c975998e1cb5d9250cd34b9d9d4d69f43c9282e67ad4d38fa2bcdf", + "check_gpg": true + }, + { + "checksum": "sha256:25e6968493572c680d6f8cad03e591f6e1e0e6ce0d1fbe3648d4b64ba529491d", + "check_gpg": true + }, + { + "checksum": "sha256:20f32df3b4961ef659a4822686978e0501fc5262e942046b53b24ed11e77476b", + "check_gpg": true + }, + { + "checksum": "sha256:d552c735d48fa647509605f524863eab28b69b9fc8d7c62a67479c3af0878024", + "check_gpg": true + }, + { + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "checksum": "sha256:d9827569f071bfd26862b67a24640e37944fbd7198c30503006f0ac9e1e2521e", + "check_gpg": true + }, + { + "checksum": "sha256:7aaa5d87151e4568e9acbd23d1c94373c977cdd46c69c79035735d6f381dd38c", + "check_gpg": true + }, + { + "checksum": "sha256:fc6b083682762fb891b50ed6e9f684ac54a2a05a78e24078ff66d4636ae89588", + "check_gpg": true + }, + { + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "checksum": "sha256:202d761caf4c9d4937c04388a7180d6687a79e8141136be0f7ecc3a54bf80594", + "check_gpg": true + }, + { + "checksum": "sha256:48381163a3f2c524697efc07538f040fde0b69d4e0fdcbe3bcfbc9924dd7d5dd", + "check_gpg": true + }, + { + "checksum": "sha256:c599bda69d6f4265be06e7206bfbf4a6a3c77b61bb960ddce807f5499736be4c", + "check_gpg": true + }, + { + "checksum": "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf", + "check_gpg": true + }, + { + "checksum": "sha256:0a31a882e4ac33233b36e2c61cc09125a936f54877137d5bb2ddc1ca8a5f9a12", + "check_gpg": true + }, + { + "checksum": "sha256:df7184fef93e9f8f535d78349605595a812511db5e6dee26cbee15569a055422", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "redhat": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "vfs_type": "ext4", + "path": "/", + "options": "defaults", + "freq": 1, + "passno": 1 + }, + { + "uuid": "46BB-8120", + "vfs_type": "vfat", + "path": "/boot/efi", + "options": "umask=0077,shortname=winnt", + "passno": 2 + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "kernel_opts": "ro biosdevname=0 net.ifnames=0", + "uefi": { + "vendor": "fedora" + } + } + }, + { + "name": "org.osbuild.systemd", + "options": { + "enabled_services": [ + "cloud-init.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service" + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "qcow2", + "filename": "disk.qcow2", + "size": 2147483648, + "ptuuid": "8DFDFF87-C96E-EA48-A3A6-9408F1F6B1EF", + "pttype": "gpt", + "partitions": [ + { + "start": 2048, + "size": 972800, + "type": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B", + "uuid": "02C1E068-1D2F-4DA3-91FD-8DD76A955C9D", + "filesystem": { + "type": "vfat", + "uuid": "46BB-8120", + "label": "EFI System Partition", + "mountpoint": "/boot/efi" + } + }, + { + "start": 976896, + "uuid": "8D760010-FAAE-46D1-9E5B-4A2EAC5030CD", + "filesystem": { + "type": "ext4", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/acl-2.2.53-5.fc32.aarch64.rpm", + "checksum": "sha256:e8941c0abaa3ce527b14bc19013088149be9c5aacceb788718293cdef9132d18", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "6.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/alternatives-1.11-6.fc32.aarch64.rpm", + "checksum": "sha256:10d828cc7803aca9b59e3bb9b52e0af45a2828250f1eab7f0fc08cdb981f191d", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.aarch64.rpm", + "checksum": "sha256:63cef561bcaadd5b9a1bf93b968f284ca76c3ad2b90b5c439b62456c0517164f", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm", + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.11", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/bash-5.0.11-2.fc32.aarch64.rpm", + "checksum": "sha256:5b304375adf911d056b36dc35f22af027d9283efbaebcb8231f052aef3982f05", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.aarch64.rpm", + "checksum": "sha256:caf76966e150fbe796865d2d18479b080657cb0bada9283048a4586cf034d4e6", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2020.2.40", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm", + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/coreutils-8.32-3.fc32.1.aarch64.rpm", + "checksum": "sha256:8961e2f35093845b7498c03f1a9776f7c49f7d9d057f56b0774f470b8e8179ff", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/coreutils-common-8.32-3.fc32.1.aarch64.rpm", + "checksum": "sha256:8d08e12adb541773aa8073a1aa6b02fbbd8539fe3597a60ac934732930cd5981", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cracklib-2.9.6-22.fc32.aarch64.rpm", + "checksum": "sha256:081d831528796c3e5c47b89c363a0f530bf77e3e2e0098cd586d814bea9a12f0", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.aarch64.rpm", + "checksum": "sha256:ca85fd192aa25f8fc630c28c8858cf3065a2b32f3ba3a373ffd3ea49b0f0813c", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.aarch64.rpm", + "checksum": "sha256:96f3fbcfb91ae41de7e514fe0b619aab870ea4d5f53544c0fd215284cb0b68e2", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/curl-7.69.1-1.fc32.aarch64.rpm", + "checksum": "sha256:d91a87c9d6dd3924d2fe7992f88f2542cce3451b7ff2576eb4d65d9ca1a7620f", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.aarch64.rpm", + "checksum": "sha256:b9904d16c86c28074bfdba38a3a740b61ad5de50a9945d550021027130fcfd41", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-1.12.16-4.fc32.aarch64.rpm", + "checksum": "sha256:067d98bda561e94f9f0bba60f691dc8ba4610434603f26cf6f4fa22677da8465", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "22", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-broker-22-1.fc32.aarch64.rpm", + "checksum": "sha256:60c9a00d8c528ad5806a5fec20ed3ffb8ad195e9eb9bf5294893e8425be1fa9f", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm", + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-libs-1.12.16-4.fc32.aarch64.rpm", + "checksum": "sha256:86959d2fd51c4d52fa5fcdf91c226ffdece5960299c15f29adc2a5c0bf05397b", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/deltarpm-3.6.2-5.fc32.aarch64.rpm", + "checksum": "sha256:9c8ec2364045411b95cfb3995d2189f0082832af7bf7280ec1cdf7bfee1afe05", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/device-mapper-1.02.171-1.fc32.aarch64.rpm", + "checksum": "sha256:18c188f63504b8cf3bc88d95de458a1eb216bca268378a6839618ef7468dc635", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.aarch64.rpm", + "checksum": "sha256:5d52cffee2d5360db8cf7e6ed4b19a68de4a0ae55f42ed279d4fdb3a70bb72f3", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/diffutils-3.7-4.fc32.aarch64.rpm", + "checksum": "sha256:13290758e03b977aed5e23b7ba9a01157b6802fd78baf75bc1fc184864e9e31e", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "10.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dosfstools-4.1-10.fc32.aarch64.rpm", + "checksum": "sha256:a12bd9183ce051f7c483506540f7682206a9cbd27b34cb7734be6583bc5d11db", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.aarch64.rpm", + "checksum": "sha256:d3281a3ef4de5e13ef1a76effd68169c0965467039059141609a078520f3db04", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.aarch64.rpm", + "checksum": "sha256:7f667fb609062e966720bf1bb1fa97a91ca245925c68e36d2770caba57aa4db2", + "check_gpg": true + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.aarch64.rpm", + "checksum": "sha256:a499f61c75ef2179b2da62647b64b716fec1af2f15653876a27e57c284921baf", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm", + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-libelf-0.179-1.fc32.aarch64.rpm", + "checksum": "sha256:8c545e3282deed08d36bb138f1ba15d02dfd1066f46f45582e24b6dc5b07cb6b", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-libs-0.179-1.fc32.aarch64.rpm", + "checksum": "sha256:c47b5f407d000d200f595e7f5026e72cae8b43416c17e5bb943551a9ddc5422e", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/expat-2.2.8-2.fc32.aarch64.rpm", + "checksum": "sha256:4940f6e26a93fe638667adb6e12969fe915b3a7b0cfeb58877dd6d7bccf46c1a", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm", + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-release-32-1.noarch.rpm", + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-release-common-32-1.noarch.rpm", + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-repos-32-1.noarch.rpm", + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/file-libs-5.38-2.fc32.aarch64.rpm", + "checksum": "sha256:aa7fd8a1313c0e384353da5e054dad62205b4f0e112a4a45eb414eb357513e04", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.14", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/filesystem-3.14-2.fc32.aarch64.rpm", + "checksum": "sha256:f8f3ec395d7d96c45cbd370f2376fe6266397ce091ab8fdaf884256ae8ae159f", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "9.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fuse-libs-2.9.9-9.fc32.aarch64.rpm", + "checksum": "sha256:5cc385c1ca3df73a1dd7865159628a6b0ce186f8679c6bc95dda0b4791e4a9fc", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gawk-5.0.1-7.fc32.aarch64.rpm", + "checksum": "sha256:62bafab5a0f37fdec29ce38bc1d635e0a81ab165061faaf5d83f5246ca4e2db0", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.aarch64.rpm", + "checksum": "sha256:aa667df83abb5a675444e898fb7554527b2967f3bdc793e6b4b56d794f74b9ef", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.64.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glib2-2.64.1-1.fc32.aarch64.rpm", + "checksum": "sha256:6837a13f3c643b5da33bd694efc4e95f54b5cc5e15de61884644378367d55804", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-2.31-2.fc32.aarch64.rpm", + "checksum": "sha256:36a3ae11acb7916e932ff704a4527b126bb39f9e849072b16242719c8de11119", + "check_gpg": true + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-all-langpacks-2.31-2.fc32.aarch64.rpm", + "checksum": "sha256:fdb1ed306445c6a37fb7182def5983a66501c5eb8be5f1b08c38db5f3613561f", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-common-2.31-2.fc32.aarch64.rpm", + "checksum": "sha256:2590d214d4986fa95653e7f83e67a81dbf822b621994a9ab867e7c377bc479c2", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gmp-6.1.2-13.fc32.aarch64.rpm", + "checksum": "sha256:5b7a135c35562e64344cc9f1ca37a5239649152cc055e14e7bf9bf84843eccab", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnupg2-2.2.19-1.fc32.aarch64.rpm", + "checksum": "sha256:cebb9ee0271c7199cb057c9a722b17c6fe59a0b0ec7f438ef6e0c35d4b5f330e", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.aarch64.rpm", + "checksum": "sha256:11004aa2821bdebfca77ab93e7ed405e0e93eb685850f5fb57b01762692ce155", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.13", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnutls-3.6.13-1.fc32.aarch64.rpm", + "checksum": "sha256:532a58ae361b9c0bc147037fb96f338684b949bd4071b19bac322b8967c32a01", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gpgme-1.13.1-6.fc32.aarch64.rpm", + "checksum": "sha256:11204917b909836508acff0df2499301d3b2f8f0a1c0e341de904ac9fb4bbedf", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grep-3.3-4.fc32.aarch64.rpm", + "checksum": "sha256:f148b87e6bf64242dad504997f730c11706e5c0da52b036b8faebb5807d252d9", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gzip-1.10-2.fc32.aarch64.rpm", + "checksum": "sha256:50b7b06e94253cb4eacc1bfb68f8343b73cbd6dae427f8ad81367f7b8ebf58a8", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.aarch64.rpm", + "checksum": "sha256:c25bb676affa185a2c4671859484bd24f62d2ec9c4d67584590bb14dd0396775", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iptables-libs-1.8.4-7.fc32.aarch64.rpm", + "checksum": "sha256:f26fae2e85396d00d7935b21154ba7a0fa591495c59973abd59455e181bf84d1", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "9.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/j/json-c-0.13.1-9.fc32.aarch64.rpm", + "checksum": "sha256:06d6f5d9909beb1cc6731dc6d5d86b9e7885285848bad8ef16079ad3e8824e0b", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/keyutils-libs-1.6-4.fc32.aarch64.rpm", + "checksum": "sha256:a05c8fb554ed38050b59d10f587ac70cf341c1f38b02ffe8a8433f7fc16efd68", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kmod-libs-27-1.fc32.aarch64.rpm", + "checksum": "sha256:7684be07a8e054660705f8d6b1522d9a829be6614293096dc7b871682e445709", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/krb5-libs-1.18-1.fc32.aarch64.rpm", + "checksum": "sha256:a01d61d802834e2e6789548f707877827fb394c90097705af9c391e6bfcd6c24", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libacl-2.2.53-5.fc32.aarch64.rpm", + "checksum": "sha256:98d58695f22a613ff6ffcb2b738b4127be7b72e5d56f7d0dbd3c999f189ba323", + "check_gpg": true + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.111", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libaio-0.3.111-7.fc32.aarch64.rpm", + "checksum": "sha256:e7b49bf8e3183d7604c7f7f51dfbc1e03bc599ddd7eac459a86f4ffdc8432533", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.2", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libarchive-3.4.2-1.fc32.aarch64.rpm", + "checksum": "sha256:340a82cfe6a9d18933b99a4e001d7e54f7ab225fe5e7fb1a7f51cb1c675c7050", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libargon2-20171227-4.fc32.aarch64.rpm", + "checksum": "sha256:6ef55c2aa000adea432676010756cf69e8851587ad17277b21bde362e369bf3e", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libassuan-2.5.3-3.fc32.aarch64.rpm", + "checksum": "sha256:1c982f31133def3baea707e0d1f0fe4a014d2c8c5f20ac8d69362cff4f26d5e9", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "8.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libattr-2.4.48-8.fc32.aarch64.rpm", + "checksum": "sha256:caa6fe00c6e322e961c4b7a02ba4a10cc939b84121e09d07d331adcdc2ae1af2", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libblkid-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:fe8b11652adfe4c64d96b442d5b31da207dfdf4a551c491c0934498537c8dfc5", + "check_gpg": true + }, + { + "name": "libbrotli", + "epoch": 0, + "version": "1.0.7", + "release": "10.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libbrotli-1.0.7-10.fc32.aarch64.rpm", + "checksum": "sha256:95581bd0421b0fddf94b046e0bf8f13d3ce3d797acd5292d87127ed9e9505d80", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcap-2.26-7.fc32.aarch64.rpm", + "checksum": "sha256:0a2eadd29cc53df942d3f0acc016b281efa4347fc2e9de1d7b8b61d9c5f0d894", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.10", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcap-ng-0.7.10-2.fc32.aarch64.rpm", + "checksum": "sha256:5875ba2d9b9ced8b2d2faa880b5f1811a89e17defe946ccf99b201790a0d2520", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcom_err-1.45.5-3.fc32.aarch64.rpm", + "checksum": "sha256:93c5fe6589243bff8f4d6934d82616a4cce0f30d071c513cc56f8e53bfc19d17", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcomps-0.1.14-4.fc32.aarch64.rpm", + "checksum": "sha256:e2eecb13c57728ce4c8e04ad8747ca51fe086a58bd55c0d3d29cf9683d0d09ad", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcurl-7.69.1-1.fc32.aarch64.rpm", + "checksum": "sha256:cc30c04cfc6be2239727608174e90ac766cb7c77cdd1b70c4be619cb2df42a52", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdb-5.3.28-40.fc32.aarch64.rpm", + "checksum": "sha256:7bfb33bfa3c3a952c54cb61b7f7c7047c1fd91e8e334f53f54faea6f34e6c0bb", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdb-utils-5.3.28-40.fc32.aarch64.rpm", + "checksum": "sha256:435530a0b9a086018694034ce48e9589348fc66389d884977b400f2f74814ac8", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdnf-0.45.0-3.fc32.aarch64.rpm", + "checksum": "sha256:62afc19040e8fbf7ac7946f02d67cdd19086658c3d8713a6c120482fd769537e", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "8.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libevent-2.1.8-8.fc32.aarch64.rpm", + "checksum": "sha256:ad874e09de00dbdb887eb6a94351869950ead7f6409dfa191d1443d3bb9dd255", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libfdisk-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:58988a2b7213098503b56d5388eba1bf2a01b9ff027961acb1e9f55c47d237ad", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "24.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libffi-3.1-24.fc32.aarch64.rpm", + "checksum": "sha256:291df16c0ae66fa5685cd033c84ae92765be4f4e17ce4936e47dc602ac6ff93e", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgcc-10.0.1-0.11.fc32.aarch64.rpm", + "checksum": "sha256:28892ae62cd1b4dadded523be8cb5f9e0fddeaa864919ee4b0dfad3bba8fd06f", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgcrypt-1.8.5-3.fc32.aarch64.rpm", + "checksum": "sha256:e96e4caf6c98faa5fb61bd3b13ee7afa0d7510d3176fe3d3cbf485847ce985fd", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgomp-10.0.1-0.11.fc32.aarch64.rpm", + "checksum": "sha256:09a9dd8c3ae4fe9a9817c71c4b2af35f2d7e1dbf2c9f4659028ce69a5d2f2d02", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgpg-error-1.36-3.fc32.aarch64.rpm", + "checksum": "sha256:cffbab9f6052ee2c7b8bcc369a411e319174de094fb94eaf71555ce485049a74", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.3.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libidn2-2.3.0-2.fc32.aarch64.rpm", + "checksum": "sha256:500c4abc34ff58e6f06c7194034b2d68b618c5e6afa89b551ab74ef226e1880a", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libksba-1.3.5-11.fc32.aarch64.rpm", + "checksum": "sha256:1ee4f732b1b4b237d7301219fc5c52b63c9ab9e77db746612852fef5610f69b7", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "10.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmetalink-0.1.3-10.fc32.aarch64.rpm", + "checksum": "sha256:c748420c4d7407a95f840416a80c468d8304e529f93b40a45081a49fd7a29232", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmnl-1.0.4-11.fc32.aarch64.rpm", + "checksum": "sha256:2356581880df7b8275896b18de24e432a362ee159fc3127f92476ffe8d0432fd", + "check_gpg": true + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmodulemd-2.9.1-1.fc32.aarch64.rpm", + "checksum": "sha256:c0ad832521885f97d08c043350b72f4fade0bbe995f81da8a18370a932bf5aee", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmount-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:1e533f7f64169288e90b3851e509cf1aedf4da0fe986288da53516b2b77ac77d", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.aarch64.rpm", + "checksum": "sha256:400c91d4d6d1125ec891c16ea72aa4123fc4c96e02f8668a8ae6dbc27113d408", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "17.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.aarch64.rpm", + "checksum": "sha256:a0260a37707734c6f97885687a6ad5967c23cb0c693668bf1402e6ee5d4abe1e", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.40.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnghttp2-1.40.0-2.fc32.aarch64.rpm", + "checksum": "sha256:17f5c9a25bf0f952f6defa6a857e938bfc1f72c69217f666a537bf8f1daff5f8", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "6.20180605git4a062cf.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.aarch64.rpm", + "checksum": "sha256:4139803076f102e2224b81b4f1da3f6d066b89e272201d2720557763f9acfcd5", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpcap-1.9.1-3.fc32.aarch64.rpm", + "checksum": "sha256:dbc1d91408e0e115e1c084f4c28d2d15f07cfc8b6c6d766192b65a28407422e7", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpsl-0.21.0-4.fc32.aarch64.rpm", + "checksum": "sha256:faca2dc4a45d1bd365d9364ea59f361854f3379ef6f13e9fa0a85368a0621f45", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpwquality-1.4.2-2.fc32.aarch64.rpm", + "checksum": "sha256:1a096ed78df5a9339c4b3c15372275a884a1124b048ffcfbdb768db881e47ab2", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.11.1", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/librepo-1.11.1-4.fc32.aarch64.rpm", + "checksum": "sha256:56bc7a11331fe199a45bc23f348deff8cd5e1ee02c617b6ed429d61ba537fc8b", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.12.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm", + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.2", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libseccomp-2.4.2-3.fc32.aarch64.rpm", + "checksum": "sha256:7149be5bd74792181003b872a9bc636157f4b795b12374c0857fb7271f2567ac", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.20.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsecret-0.20.2-2.fc32.aarch64.rpm", + "checksum": "sha256:7cac868a4b1ac9c380192a31a45a314613af3f958aaf2b778642667dc73bc182", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libselinux-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:6028f86f132faee662e97075270f68e8125fd339c8689a2b661facd25c3b829b", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libselinux-utils-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:91cd21ca1f5b881a78e9c0a6dd3cdad7401f7216a1ab3acbe9337d8e3e054a5e", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsemanage-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:b78889f3a2ac801456c643fd5603017383221aa33eac381e4f74b9a13fbf3830", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsepol-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:fe06eff5ac0e3e538775aad2cb0f801af491476e9cb508caa9107f4a5f913e52", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "10.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsigsegv-2.11-10.fc32.aarch64.rpm", + "checksum": "sha256:836a45edfd4e2cda0b6bac254b2e6225aad36f9bae0f96f2fe7da42896db0dae", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsmartcols-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:0042a3d3b19152d0a16ee321cbe99208a2f4ebd009515c1f6f962a1d5f9cde26", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsolv-0.7.11-2.fc32.aarch64.rpm", + "checksum": "sha256:15a8a718cb6f629474fec7756b4701430e14ff94aad6cf6fe20f3eb7174a7783", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libss-1.45.5-3.fc32.aarch64.rpm", + "checksum": "sha256:a830bb13938bedaf5cc91b13ab78e2cf9172b06727b7e9e1bec2cddce8dd9e2d", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libssh-0.9.3-2.fc32.aarch64.rpm", + "checksum": "sha256:7bd98aa2d554f06ab525320ebf628a6e002011462e71a47337676a2c99de5aec", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm", + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.aarch64.rpm", + "checksum": "sha256:3ea53f635b4f559b2bdb0e58d54dbfddc126b18abe23b46b94aecbf7c0d5132c", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.16.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtasn1-4.16.0-1.fc32.aarch64.rpm", + "checksum": "sha256:ea44ae1c951d3d4b30ff2a2d898c041ce9072acc94d6ea1e0e305c45e802019f", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.2.5", + "release": "1.rc2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.aarch64.rpm", + "checksum": "sha256:ef9bff2d88851209d35f9824e02fc431fba5e5347752ea1c197a57c0c45ad401", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libunistring-0.9.10-7.fc32.aarch64.rpm", + "checksum": "sha256:2d7ad38e86f5109c732a32bf9bea612c4c674aba6ad4cca2d211d826edc7fd6f", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libusbx-1.0.23-1.fc32.aarch64.rpm", + "checksum": "sha256:50d91ca18b6cdc9395424b852d2828d1b75e2af318932a2442376d2a10819f6a", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "18.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libutempter-1.1.6-18.fc32.aarch64.rpm", + "checksum": "sha256:22954219a63638d7418204d818c01a0e3c914e2b2eb970f2e4638dcf5a7a5634", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libuuid-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:2bc82e132696d9daa4eef545ff3352d6eb588b9a1b9584e515d15a7c3d6471df", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "9.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libverto-0.3.0-9.fc32.aarch64.rpm", + "checksum": "sha256:c494a613443f49b6cca4845f9c3410a1267f609c503a81a9a26a272443708fee", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxcrypt-4.4.16-1.fc32.aarch64.rpm", + "checksum": "sha256:64b64bab720df9dd7fd37ebf80a07795a95ac11e640eda3209b6517dcd7133e5", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.10.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.aarch64.rpm", + "checksum": "sha256:9db3ade981c564c361eed9068cd35acac93c1b1db54b6fb2a74070ce68141cff", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.10", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxml2-2.9.10-3.fc32.aarch64.rpm", + "checksum": "sha256:33788835331bed7f75e5cd2126d8d75511211175c9ac6d93824baec1a546a28d", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libyaml-0.2.2-3.fc32.aarch64.rpm", + "checksum": "sha256:d4fd722ee0ff5da4114b91964e430e4e45c1a428739f1e5be5db7854e5c85f11", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libzstd-1.4.4-2.fc32.aarch64.rpm", + "checksum": "sha256:2c4d03577e8661920a7b64fcc68735b795288744f1b188512a96960143030474", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/lua-libs-5.3.5-7.fc32.aarch64.rpm", + "checksum": "sha256:1befc4be3c3c72b3210e54f96f4334f268eaecdd3b77af7cadea0ef31f0e2ca9", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/lz4-libs-1.9.1-2.fc32.aarch64.rpm", + "checksum": "sha256:a7394cd1b11a1b25efaab43a30b1d9687683884babc162f43e29fdee4f00bda8", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mkpasswd-5.5.6-1.fc32.aarch64.rpm", + "checksum": "sha256:45e2c1c76a0a0b6e1164c457307250a54a7de5905992b4351a84183c2e9f2633", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "4.0.2", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mpfr-4.0.2-3.fc32.aarch64.rpm", + "checksum": "sha256:94d02790ff430efebbfc12ca2c2029c66e1691b70baf7cf45159fb8464d38e56", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-6.1-15.20191109.fc32.aarch64.rpm", + "checksum": "sha256:fe7ee39b0779c467c5d8a20daff4911e1967523e6fc748179e77584168e18bde", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm", + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.aarch64.rpm", + "checksum": "sha256:a973f92acb0afe61087a69d13a532c18a39dd60b3ba4826b38350f2c6b27e417", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/nettle-3.5.1-5.fc32.aarch64.rpm", + "checksum": "sha256:15b2402e11402a6cb494bf7ea31ebf10bf1adb0759aab417e63d05916e56aa45", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/npth-1.6-4.fc32.aarch64.rpm", + "checksum": "sha256:5b1cb1251cf7f65c50d9e3fcc11901fef5132dc177cce68a50918da481bb7629", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openldap-2.4.47-4.fc32.aarch64.rpm", + "checksum": "sha256:c030084d188fc99359cc088bd77d2ee6578e717f1cf2d067b8967c6cbe863c6e", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-1.1.1d-7.fc32.aarch64.rpm", + "checksum": "sha256:e30482032783ab59417bfaf8394be42d2e2e779a580979bd87f15bd0880df858", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.aarch64.rpm", + "checksum": "sha256:0178be1e5d6da8053061d29013d8fda8445d37eac908afbf4a2ca92faf950f2c", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.aarch64.rpm", + "checksum": "sha256:85dc7962af97e86a655b8ec5d5276e511f50b1d4abe624f4d8cb0d784007e342", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/p11-kit-0.23.20-1.fc32.aarch64.rpm", + "checksum": "sha256:afba861f69234f4cb4040085a4868c7424666a4356d0e2002e16b0afb75ec0d2", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.aarch64.rpm", + "checksum": "sha256:b867eeba06e6fc9084c227d8b3ea54f1815cb1833a29babf114fa1167aa17f2d", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "24.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pam-1.3.1-24.fc32.aarch64.rpm", + "checksum": "sha256:9738af51bf206850f6611306bed20542ed32a1701188611caab0b6896e4ffb37", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.44", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre-8.44-1.fc32.aarch64.rpm", + "checksum": "sha256:a3775cb3bc81bb5444e26695a62b1bd2eb48a91d7bc3a361d763c185cb817de1", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre2-10.34-9.fc32.aarch64.rpm", + "checksum": "sha256:7417889b8455ba87230fd5a987fe160d86de8250b87d7ae9bbcba90c32053172", + "check_gpg": true + }, + { + "name": "pcre2-syntax", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm", + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pinentry-1.1.0-7.fc32.aarch64.rpm", + "checksum": "sha256:a580e36566f6ffceef809e49fc4c7f9b1418a16123d4d49079c8423b6a337e67", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/policycoreutils-3.0-2.fc32.aarch64.rpm", + "checksum": "sha256:29bcc2f3f85ca7bdc22178af3e16743f55353bd9f25fb4c748d8c9f7117fe56f", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "19.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/popt-1.16-19.fc32.aarch64.rpm", + "checksum": "sha256:8f4be33cb040f081bb1f863b92e94ac7838af743cb5a0ce9d8c8ec9a611f71a6", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm", + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-3.8.2-2.fc32.aarch64.rpm", + "checksum": "sha256:857330a729697c1b6e8d86550391f1abf4db87d5ffeffeb5f00065fa8be85cbd", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-gpg-1.13.1-6.fc32.aarch64.rpm", + "checksum": "sha256:fe96e7fe3da0db38b8b8850c9dedd50c1358309fee24c774bc64ddee62bb11be", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.aarch64.rpm", + "checksum": "sha256:79defc84763baec2190da8941221abfa002d6f6c9e8c3486e2c492389fca2a57", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.aarch64.rpm", + "checksum": "sha256:e76aea00d64d100bafcea1672ce65f8bfd47bdf7e0dc7bf859fc0c6ec29d5823", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.aarch64.rpm", + "checksum": "sha256:023d3d7be30607410a2357b50b8ef3f94a07baf2842bfba0421f803600ec605f", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libs-3.8.2-2.fc32.aarch64.rpm", + "checksum": "sha256:32a00991ec85f0bf2a336e00033a0e70b0da963eb42d81bbad18a7a11f41d4eb", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:34efde201252afe93ec3af61af30c6d32cfbe5ecbdcecaf4667666f12482757d", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-unbound-1.9.6-2.fc32.aarch64.rpm", + "checksum": "sha256:acafdf6b20fea5974da004b77eced20b00c59a908edcef9c4c4e60815fdbf8f3", + "check_gpg": true + }, + { + "name": "qemu-img", + "epoch": 2, + "version": "4.2.0", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/q/qemu-img-4.2.0-7.fc32.aarch64.rpm", + "checksum": "sha256:ba170325441d8341085944301c006bd4b82b4813d0aedf3a9990fbe0500deba8", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.aarch64.rpm", + "checksum": "sha256:3d6ec574fe2c612bcc45395f7ee87c68f45016f005c6d7aeee6b37897f41b8d2", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/readline-8.0-4.fc32.aarch64.rpm", + "checksum": "sha256:6007c88c459315a5e2ce354086bd0372a56e15cdd0dc14e6e889ab859f8d8365", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:d2bd77606d1c91208be05edce6ea04c24fa2efc880569eecb958afde1a7fb17e", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:0c30a7fd9f69ad808183afa0814e363689ff63e7a82856a790e5fa111c031b96", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:7fe5838c895cd1158a6ae2afb3794e79e393d6701330e1109592e6b45f4bd876", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:91ab783e9eb00d5baba65989c86c3d742033bd2306ff7adb0b78185f28d2ca86", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:7d5d62696fc69bb890912be71c05e92496129f198838cb56d349a8fc700a85a6", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:33ca43cf0714aef344a70be4cfa42322694cc975a2eeee0bf31325dbca7f2842", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sed-4.5-5.fc32.aarch64.rpm", + "checksum": "sha256:ccf07a3682a1038a6224b3da69e20f201584ed1c879539cedb57e184aa14429a", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.6", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm", + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.8.1", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/shadow-utils-4.8.1-2.fc32.aarch64.rpm", + "checksum": "sha256:debd948a7e454f07dd7ab8ed79984158b98ce333d77be948e4393bb87c518ab8", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.15", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/shared-mime-info-1.15-3.fc32.aarch64.rpm", + "checksum": "sha256:a92c4a583aacd37beb069c996307bd782f809c78fd1fb802de25a53efbaff8f8", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.31.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.aarch64.rpm", + "checksum": "sha256:c75bf533b09243daeca728129a6fe10fca47d0c150fd43b5dab7b4993584536f", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-245.4-1.fc32.aarch64.rpm", + "checksum": "sha256:41c6a8ea4240f2fa6cea0333cc6d5f59731ac843398eb457c182e90af367783c", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-libs-245.4-1.fc32.aarch64.rpm", + "checksum": "sha256:52aa6e698e60cd360d5b9473fd1ebcc7e238e2125449bfdcc41b3e0fe13ae645", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-pam-245.4-1.fc32.aarch64.rpm", + "checksum": "sha256:9baa05a69943b0c6274403276f45817ab56193de62b5b64205b4fd35951e0895", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm", + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/tar-1.32-4.fc32.aarch64.rpm", + "checksum": "sha256:2f849fdf4588b1b4e86a008b6a82f30ff2ec1db1ae2bd21e067c6f910e4cb237", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/trousers-0.3.13-13.fc31.aarch64.rpm", + "checksum": "sha256:3242e0ce48f95d7a271125cf1222b5af09e20fe85194623d95336e1c678bdee8", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/trousers-lib-0.3.13-13.fc31.aarch64.rpm", + "checksum": "sha256:a6c26dd0ba8fc6a15e845f72f90e89b62f7344d7793896e707e610286b5e4541", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/tss2-1331-4.fc32.aarch64.rpm", + "checksum": "sha256:91e35b3750f5029be019542a4143cf00de68559b9ab6ae6df2c8f7ea6e60acd9", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm", + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/u/unbound-libs-1.9.6-2.fc32.aarch64.rpm", + "checksum": "sha256:654a9a9997c975998e1cb5d9250cd34b9d9d4d69f43c9282e67ad4d38fa2bcdf", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/u/util-linux-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:25e6968493572c680d6f8cad03e591f6e1e0e6ce0d1fbe3648d4b64ba529491d", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm", + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.29", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm", + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xz-5.2.5-1.fc32.aarch64.rpm", + "checksum": "sha256:202d761caf4c9d4937c04388a7180d6687a79e8141136be0f7ecc3a54bf80594", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xz-libs-5.2.5-1.fc32.aarch64.rpm", + "checksum": "sha256:48381163a3f2c524697efc07538f040fde0b69d4e0fdcbe3bcfbc9924dd7d5dd", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.aarch64.rpm", + "checksum": "sha256:0a31a882e4ac33233b36e2c61cc09125a936f54877137d5bb2ddc1ca8a5f9a12", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "21.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/z/zlib-1.2.11-21.fc32.aarch64.rpm", + "checksum": "sha256:df7184fef93e9f8f535d78349605595a812511db5e6dee26cbee15569a055422", + "check_gpg": true + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.22.10", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/NetworkManager-1.22.10-1.fc32.aarch64.rpm", + "checksum": "sha256:61e37e1df1e427525e6dd873d04fe2afc5e6825f2788a33b941e532e5a27ed7e", + "check_gpg": true + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.22.10", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/NetworkManager-libnm-1.22.10-1.fc32.aarch64.rpm", + "checksum": "sha256:78fb24703a4bafd4eb4ae0e065abf9111a127774ac74b1dc3a25d385c0dae1a0", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/acl-2.2.53-5.fc32.aarch64.rpm", + "checksum": "sha256:e8941c0abaa3ce527b14bc19013088149be9c5aacceb788718293cdef9132d18", + "check_gpg": true + }, + { + "name": "alsa-lib", + "epoch": 0, + "version": "1.2.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/alsa-lib-1.2.2-2.fc32.aarch64.rpm", + "checksum": "sha256:6e14c7f44b0f17ebcc3922027c944b6e47202ac9495fd85cc31ad7bc31719a64", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "6.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/alternatives-1.11-6.fc32.aarch64.rpm", + "checksum": "sha256:10d828cc7803aca9b59e3bb9b52e0af45a2828250f1eab7f0fc08cdb981f191d", + "check_gpg": true + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/audit-3.0-0.19.20191104git1c2f876.fc32.aarch64.rpm", + "checksum": "sha256:f71860520fb965ae5a41a43a68903aac712bea01ceac568774ac9ce6006d1f31", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.aarch64.rpm", + "checksum": "sha256:63cef561bcaadd5b9a1bf93b968f284ca76c3ad2b90b5c439b62456c0517164f", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm", + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.11", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/bash-5.0.11-2.fc32.aarch64.rpm", + "checksum": "sha256:5b304375adf911d056b36dc35f22af027d9283efbaebcb8231f052aef3982f05", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.aarch64.rpm", + "checksum": "sha256:caf76966e150fbe796865d2d18479b080657cb0bada9283048a4586cf034d4e6", + "check_gpg": true + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.15.0", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/c-ares-1.15.0-5.fc32.aarch64.rpm", + "checksum": "sha256:fdef1b445deff2b85a564372284dc8f49cf8376ee60cd26938484e8312dab650", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2020.2.40", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm", + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/checkpolicy-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:ad6f711174c59ffb9116d792068cc8fd0585b46eb5d9bf18a3c9937727b9a379", + "check_gpg": true + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "8.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/chrony-3.5-8.fc32.aarch64.rpm", + "checksum": "sha256:55a343c96ac98c2bdf7bffdf5edc73f87b482a26b4a1a5e95670343dcec88fb8", + "check_gpg": true + }, + { + "name": "cloud-init", + "epoch": 0, + "version": "19.4", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cloud-init-19.4-2.fc32.noarch.rpm", + "checksum": "sha256:1e1e9900e9d3a2b8eb6684060672526948df2cb9f751e7d72cb4fa5bffe71747", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-sans-mono-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-serif-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/coreutils-8.32-3.fc32.1.aarch64.rpm", + "checksum": "sha256:8961e2f35093845b7498c03f1a9776f7c49f7d9d057f56b0774f470b8e8179ff", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/coreutils-common-8.32-3.fc32.1.aarch64.rpm", + "checksum": "sha256:8d08e12adb541773aa8073a1aa6b02fbbd8539fe3597a60ac934732930cd5981", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.13", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cpio-2.13-4.fc32.aarch64.rpm", + "checksum": "sha256:7bd78f630f6ed96cd08942330f4dad8bfb8d2d7961262ee942411e501a1aefdd", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cracklib-2.9.6-22.fc32.aarch64.rpm", + "checksum": "sha256:081d831528796c3e5c47b89c363a0f530bf77e3e2e0098cd586d814bea9a12f0", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.aarch64.rpm", + "checksum": "sha256:ca85fd192aa25f8fc630c28c8858cf3065a2b32f3ba3a373ffd3ea49b0f0813c", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.aarch64.rpm", + "checksum": "sha256:96f3fbcfb91ae41de7e514fe0b619aab870ea4d5f53544c0fd215284cb0b68e2", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/curl-7.69.1-1.fc32.aarch64.rpm", + "checksum": "sha256:d91a87c9d6dd3924d2fe7992f88f2542cce3451b7ff2576eb4d65d9ca1a7620f", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.aarch64.rpm", + "checksum": "sha256:b9904d16c86c28074bfdba38a3a740b61ad5de50a9945d550021027130fcfd41", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-1.12.16-4.fc32.aarch64.rpm", + "checksum": "sha256:067d98bda561e94f9f0bba60f691dc8ba4610434603f26cf6f4fa22677da8465", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "22", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-broker-22-1.fc32.aarch64.rpm", + "checksum": "sha256:60c9a00d8c528ad5806a5fec20ed3ffb8ad195e9eb9bf5294893e8425be1fa9f", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm", + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-libs-1.12.16-4.fc32.aarch64.rpm", + "checksum": "sha256:86959d2fd51c4d52fa5fcdf91c226ffdece5960299c15f29adc2a5c0bf05397b", + "check_gpg": true + }, + { + "name": "dbxtool", + "epoch": 0, + "version": "8", + "release": "11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbxtool-8-11.fc32.aarch64.rpm", + "checksum": "sha256:20307d5a1d3fccfe8f64c8ea074c6a751dc36849c7495592989677fd01da9147", + "check_gpg": true + }, + { + "name": "dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dejavu-sans-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/deltarpm-3.6.2-5.fc32.aarch64.rpm", + "checksum": "sha256:9c8ec2364045411b95cfb3995d2189f0082832af7bf7280ec1cdf7bfee1afe05", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/device-mapper-1.02.171-1.fc32.aarch64.rpm", + "checksum": "sha256:18c188f63504b8cf3bc88d95de458a1eb216bca268378a6839618ef7468dc635", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.aarch64.rpm", + "checksum": "sha256:5d52cffee2d5360db8cf7e6ed4b19a68de4a0ae55f42ed279d4fdb3a70bb72f3", + "check_gpg": true + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.4.2", + "release": "5.b1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dhcp-client-4.4.2-5.b1.fc32.aarch64.rpm", + "checksum": "sha256:27a0d9447ef63c95a3182b32606e6de1bd17f2cfc7910a456fa43996db67833f", + "check_gpg": true + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.4.2", + "release": "5.b1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dhcp-common-4.4.2-5.b1.fc32.noarch.rpm", + "checksum": "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/diffutils-3.7-4.fc32.aarch64.rpm", + "checksum": "sha256:13290758e03b977aed5e23b7ba9a01157b6802fd78baf75bc1fc184864e9e31e", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.14", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dnf-plugins-core-4.0.14-1.fc32.noarch.rpm", + "checksum": "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dracut-050-26.git20200316.fc32.aarch64.rpm", + "checksum": "sha256:a16c32dda1845c89cb7822ab839e5f48b222b3c168f82455f7f54a1a7863ffea", + "check_gpg": true + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dracut-config-generic-050-26.git20200316.fc32.aarch64.rpm", + "checksum": "sha256:d96c93f959443e974001c4b423f3da556187e5b3fedf1232951f480c67cb4568", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.aarch64.rpm", + "checksum": "sha256:d3281a3ef4de5e13ef1a76effd68169c0965467039059141609a078520f3db04", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.aarch64.rpm", + "checksum": "sha256:7f667fb609062e966720bf1bb1fa97a91ca245925c68e36d2770caba57aa4db2", + "check_gpg": true + }, + { + "name": "efi-filesystem", + "epoch": 0, + "version": "4", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/efi-filesystem-4-4.fc32.noarch.rpm", + "checksum": "sha256:b743aafa82f3326f8f2e6d5464ae7fa57fabab3ad791099eaf2d151b43208b42", + "check_gpg": true + }, + { + "name": "efibootmgr", + "epoch": 0, + "version": "16", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/efibootmgr-16-7.fc32.aarch64.rpm", + "checksum": "sha256:04bc54c723bfa9e1b6bb6567e9d8cd3e1ed389fc2be97259b971a8cbfe5f95e4", + "check_gpg": true + }, + { + "name": "efivar-libs", + "epoch": 0, + "version": "37", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/efivar-libs-37-7.fc32.aarch64.rpm", + "checksum": "sha256:a30386b14f04905c1e78944f9b36d81ac83b7de1301c353d7e90b33f4a8c5e93", + "check_gpg": true + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.aarch64.rpm", + "checksum": "sha256:a499f61c75ef2179b2da62647b64b716fec1af2f15653876a27e57c284921baf", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm", + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-libelf-0.179-1.fc32.aarch64.rpm", + "checksum": "sha256:8c545e3282deed08d36bb138f1ba15d02dfd1066f46f45582e24b6dc5b07cb6b", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-libs-0.179-1.fc32.aarch64.rpm", + "checksum": "sha256:c47b5f407d000d200f595e7f5026e72cae8b43416c17e5bb943551a9ddc5422e", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/expat-2.2.8-2.fc32.aarch64.rpm", + "checksum": "sha256:4940f6e26a93fe638667adb6e12969fe915b3a7b0cfeb58877dd6d7bccf46c1a", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm", + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-release-32-1.noarch.rpm", + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-release-common-32-1.noarch.rpm", + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-repos-32-1.noarch.rpm", + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/file-5.38-2.fc32.aarch64.rpm", + "checksum": "sha256:0dcc4568055843acf5571553731d57a0d042b6602e6932bc4fe88718597c2fbe", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/file-libs-5.38-2.fc32.aarch64.rpm", + "checksum": "sha256:aa7fd8a1313c0e384353da5e054dad62205b4f0e112a4a45eb414eb357513e04", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.14", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/filesystem-3.14-2.fc32.aarch64.rpm", + "checksum": "sha256:f8f3ec395d7d96c45cbd370f2376fe6266397ce091ab8fdaf884256ae8ae159f", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.7.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/findutils-4.7.0-3.fc32.aarch64.rpm", + "checksum": "sha256:876c2450443ab68948b045721202ca193077876b67c2e85f9dd427452ef0c4d5", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "8.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fipscheck-1.5.0-8.fc32.aarch64.rpm", + "checksum": "sha256:d1b286af57220764054969fc63065ead51d9bb969d320ada6a72c3b24c9e0ca3", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "8.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fipscheck-lib-1.5.0-8.fc32.aarch64.rpm", + "checksum": "sha256:c4cc17e543253b9b37fa982f49ae1c5f411ff563120e5c4225556a7584994a37", + "check_gpg": true + }, + { + "name": "firewalld", + "epoch": 0, + "version": "0.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/firewalld-0.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:b8ecd7fa0e7e072828e374dfb0d61bb8eecca7c190f3661050cee5e3fc8854b4", + "check_gpg": true + }, + { + "name": "firewalld-filesystem", + "epoch": 0, + "version": "0.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/firewalld-filesystem-0.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:47538b1db9720be4699329a8da32d873187d0c6c22f45252614ac5b8a8312482", + "check_gpg": true + }, + { + "name": "fonts-filesystem", + "epoch": 0, + "version": "2.0.3", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fonts-filesystem-2.0.3-1.fc32.noarch.rpm", + "checksum": "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "9.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fuse-libs-2.9.9-9.fc32.aarch64.rpm", + "checksum": "sha256:5cc385c1ca3df73a1dd7865159628a6b0ce186f8679c6bc95dda0b4791e4a9fc", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gawk-5.0.1-7.fc32.aarch64.rpm", + "checksum": "sha256:62bafab5a0f37fdec29ce38bc1d635e0a81ab165061faaf5d83f5246ca4e2db0", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.aarch64.rpm", + "checksum": "sha256:aa667df83abb5a675444e898fb7554527b2967f3bdc793e6b4b56d794f74b9ef", + "check_gpg": true + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20191217", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/geolite2-city-20191217-2.fc32.noarch.rpm", + "checksum": "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3", + "check_gpg": true + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20191217", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/geolite2-country-20191217-2.fc32.noarch.rpm", + "checksum": "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gettext-0.20.1-4.fc32.aarch64.rpm", + "checksum": "sha256:60c3cbbe546fb12db4c7164a51613ea9ae20f7199537cdf5145e828c78544493", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gettext-libs-0.20.1-4.fc32.aarch64.rpm", + "checksum": "sha256:57e1695da46f19db4a851304d57e7ce2409c287a88e9b52af0b76ed2252a4f98", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.64.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glib2-2.64.1-1.fc32.aarch64.rpm", + "checksum": "sha256:6837a13f3c643b5da33bd694efc4e95f54b5cc5e15de61884644378367d55804", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-2.31-2.fc32.aarch64.rpm", + "checksum": "sha256:36a3ae11acb7916e932ff704a4527b126bb39f9e849072b16242719c8de11119", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-common-2.31-2.fc32.aarch64.rpm", + "checksum": "sha256:2590d214d4986fa95653e7f83e67a81dbf822b621994a9ab867e7c377bc479c2", + "check_gpg": true + }, + { + "name": "glibc-langpack-en", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-langpack-en-2.31-2.fc32.aarch64.rpm", + "checksum": "sha256:f50ad72a9259205b2381b94fa674f53860e63c9e3cd1fb013653dab2bc7203a6", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gmp-6.1.2-13.fc32.aarch64.rpm", + "checksum": "sha256:5b7a135c35562e64344cc9f1ca37a5239649152cc055e14e7bf9bf84843eccab", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnupg2-2.2.19-1.fc32.aarch64.rpm", + "checksum": "sha256:cebb9ee0271c7199cb057c9a722b17c6fe59a0b0ec7f438ef6e0c35d4b5f330e", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.aarch64.rpm", + "checksum": "sha256:11004aa2821bdebfca77ab93e7ed405e0e93eb685850f5fb57b01762692ce155", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.13", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnutls-3.6.13-1.fc32.aarch64.rpm", + "checksum": "sha256:532a58ae361b9c0bc147037fb96f338684b949bd4071b19bac322b8967c32a01", + "check_gpg": true + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.64.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gobject-introspection-1.64.1-1.fc32.aarch64.rpm", + "checksum": "sha256:ce2085aef5dd78dd1fcf025f9cc65cfb4e796448a1d233408205c1ada466865f", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gpgme-1.13.1-6.fc32.aarch64.rpm", + "checksum": "sha256:11204917b909836508acff0df2499301d3b2f8f0a1c0e341de904ac9fb4bbedf", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grep-3.3-4.fc32.aarch64.rpm", + "checksum": "sha256:f148b87e6bf64242dad504997f730c11706e5c0da52b036b8faebb5807d252d9", + "check_gpg": true + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "21.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/groff-base-1.22.3-21.fc32.aarch64.rpm", + "checksum": "sha256:174a7c064ba48fdfc61ee5a091ec474dfbdb32a1a602cbe0776937c39e222663", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "name": "grub2-efi-aa64", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grub2-efi-aa64-2.04-12.fc32.aarch64.rpm", + "checksum": "sha256:6221b210a7778432738994829f6c7e9f047940e53ee42a0e6458b91095b82756", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grub2-tools-2.04-12.fc32.aarch64.rpm", + "checksum": "sha256:a47d4bfb9dd589c97bb530afb3988cbfaf7336a89207e4b74fd9ab596812c97f", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.aarch64.rpm", + "checksum": "sha256:a0ec936c91f5f69951d08a6cdf03406ee7365bc3417d3426bb6b4db855c45dda", + "check_gpg": true + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "40.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grubby-8.40-40.fc32.aarch64.rpm", + "checksum": "sha256:96ff29e784025e76bfde72abc89ccb520cb75087f8c44cd747d5d3ebc1df78db", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gzip-1.10-2.fc32.aarch64.rpm", + "checksum": "sha256:50b7b06e94253cb4eacc1bfb68f8343b73cbd6dae427f8ad81367f7b8ebf58a8", + "check_gpg": true + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.23", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/h/hostname-3.23-2.fc32.aarch64.rpm", + "checksum": "sha256:ded5407f20b7a1de7b8aee85786d8b70eec61d0385e95e90d95849612ef13dea", + "check_gpg": true + }, + { + "name": "hwdata", + "epoch": 0, + "version": "0.334", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/h/hwdata-0.334-1.fc32.noarch.rpm", + "checksum": "sha256:5eed798a806e26720df47f1c95600ae67cc1275c381f33c8260b32b23d81a978", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.aarch64.rpm", + "checksum": "sha256:c25bb676affa185a2c4671859484bd24f62d2ec9c4d67584590bb14dd0396775", + "check_gpg": true + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.02", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/initscripts-10.02-3.fc32.aarch64.rpm", + "checksum": "sha256:3377ae652fbbd22f2c61815bfd1bb58185b5f57c194d9b0cce3056ab11522779", + "check_gpg": true + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.4.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/ipcalc-0.4.0-2.fc32.aarch64.rpm", + "checksum": "sha256:b1fc5d1d8d62d0f883ff483b818e7759f9afd4a1fa15421af56e1a615535fe63", + "check_gpg": true + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.5.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iproute-5.5.0-1.fc32.aarch64.rpm", + "checksum": "sha256:7c38b938c3d35cfee1ad11d5d09c3c6a4f208b065a25b2a3556006f04f2608b9", + "check_gpg": true + }, + { + "name": "iproute-tc", + "epoch": 0, + "version": "5.5.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iproute-tc-5.5.0-1.fc32.aarch64.rpm", + "checksum": "sha256:4674c9871d3a70a005fc880d6ce1c0e56418192085dae8b5eb861003ef9a2c1b", + "check_gpg": true + }, + { + "name": "ipset", + "epoch": 0, + "version": "7.6", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/ipset-7.6-1.fc32.aarch64.rpm", + "checksum": "sha256:ea25c1482716623eabc1b151d318bc1499e2448480f46e6113e1e4667150393c", + "check_gpg": true + }, + { + "name": "ipset-libs", + "epoch": 0, + "version": "7.6", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/ipset-libs-7.6-1.fc32.aarch64.rpm", + "checksum": "sha256:03c7e6ea76b2aa8e7f8c8c8039412f618790ea39aeb3c1ffab205ba6b3bee54d", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iptables-libs-1.8.4-7.fc32.aarch64.rpm", + "checksum": "sha256:f26fae2e85396d00d7935b21154ba7a0fa591495c59973abd59455e181bf84d1", + "check_gpg": true + }, + { + "name": "iptables-nft", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iptables-nft-1.8.4-7.fc32.aarch64.rpm", + "checksum": "sha256:e883b70720adcf3c09b13d1ff2d3425be2d0a296be18cabf25dd5f9ce79cf8d3", + "check_gpg": true + }, + { + "name": "iputils", + "epoch": 0, + "version": "20190515", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iputils-20190515-5.fc32.aarch64.rpm", + "checksum": "sha256:8b20ec83c7ff085d0f27c7af0a87dc49bacdf65d52b61119819ea14862eff91c", + "check_gpg": true + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.12", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/j/jansson-2.12-5.fc32.aarch64.rpm", + "checksum": "sha256:da4e2994692c9ed4d0760528139f6437bcb0d54862fac1a4afa55e329393d254", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "9.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/j/json-c-0.13.1-9.fc32.aarch64.rpm", + "checksum": "sha256:06d6f5d9909beb1cc6731dc6d5d86b9e7885285848bad8ef16079ad3e8824e0b", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kbd-2.2.0-1.fc32.aarch64.rpm", + "checksum": "sha256:79410f2d954c0a380a0b67bc965982ac1645c0365060cf8ba106db74b0b339f4", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "name": "kernel", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kernel-5.6.6-300.fc32.aarch64.rpm", + "checksum": "sha256:14005ca38ce35a0c2e9d24b37991059d213f9b3277895eaa2a5b45e242cf8dc8", + "check_gpg": true + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kernel-core-5.6.6-300.fc32.aarch64.rpm", + "checksum": "sha256:e38207cecd64ed0fe5002828ff0aa05dbbb1f5418350babd4c1cfa3d1e3261fe", + "check_gpg": true + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kernel-modules-5.6.6-300.fc32.aarch64.rpm", + "checksum": "sha256:cb8b8225bc9f2a16377a41977de4e6f6d651cbe738035b93234d65e8dd80fa0f", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/keyutils-libs-1.6-4.fc32.aarch64.rpm", + "checksum": "sha256:a05c8fb554ed38050b59d10f587ac70cf341c1f38b02ffe8a8433f7fc16efd68", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kmod-27-1.fc32.aarch64.rpm", + "checksum": "sha256:fe512ddf337568ca1e4d1c0cce66dda461ca570587c7beb1e1be3960540e394f", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kmod-libs-27-1.fc32.aarch64.rpm", + "checksum": "sha256:7684be07a8e054660705f8d6b1522d9a829be6614293096dc7b871682e445709", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.2", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kpartx-0.8.2-3.fc32.aarch64.rpm", + "checksum": "sha256:8e768615a238b08e3fd0857f53e7acf5c5c4e3736dc03824179429a4d848de61", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/krb5-libs-1.18-1.fc32.aarch64.rpm", + "checksum": "sha256:a01d61d802834e2e6789548f707877827fb394c90097705af9c391e6bfcd6c24", + "check_gpg": true + }, + { + "name": "langpacks-core-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/langpacks-core-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0", + "check_gpg": true + }, + { + "name": "langpacks-core-font-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/langpacks-core-font-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389", + "check_gpg": true + }, + { + "name": "langpacks-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/langpacks-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca", + "check_gpg": true + }, + { + "name": "less", + "epoch": 0, + "version": "551", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/less-551-3.fc32.aarch64.rpm", + "checksum": "sha256:c8516d06666d3f0728c9cbfc1b7f0a88f8884e5cd7bd3bad6721c7c9000f1f8f", + "check_gpg": true + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.9", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libX11-1.6.9-3.fc32.aarch64.rpm", + "checksum": "sha256:9caea0e8a3f554e49c9f8d4b0196b9224958de9947aacf1031f0ff1ee209d522", + "check_gpg": true + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.9", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libX11-common-1.6.9-3.fc32.noarch.rpm", + "checksum": "sha256:73e9cf715ccf15c1e26fbcd40ec29788fb7250958bc923e56b4826a8d6fb6920", + "check_gpg": true + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libXau-1.0.9-3.fc32.aarch64.rpm", + "checksum": "sha256:6b0c1295d6fb58926ccc9351b53cffc16df1ccd07736091394a42baec02c3333", + "check_gpg": true + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libXext-1.3.4-3.fc32.aarch64.rpm", + "checksum": "sha256:fd22de4195e6d8e792e4eb6dd0181246d9aaefb04acbc8a9d7d5609d1012bed6", + "check_gpg": true + }, + { + "name": "libXfixes", + "epoch": 0, + "version": "5.0.3", + "release": "11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libXfixes-5.0.3-11.fc32.aarch64.rpm", + "checksum": "sha256:07cbd2ccb6fcb0007cd5cd12e2c0fbfbf0c4dbdfb15ff9e0f7b5db70b2cb083d", + "check_gpg": true + }, + { + "name": "libXinerama", + "epoch": 0, + "version": "1.1.4", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libXinerama-1.1.4-5.fc32.aarch64.rpm", + "checksum": "sha256:a1395539f86c44227dc1dd97dbca51a19f012bc05c4bd796e56bac17d8b054ec", + "check_gpg": true + }, + { + "name": "libXrandr", + "epoch": 0, + "version": "1.5.2", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libXrandr-1.5.2-3.fc32.aarch64.rpm", + "checksum": "sha256:6e645fa926b4d2c3e2cff3516572c0855b072175dc0ff514463a9b6ab9c16684", + "check_gpg": true + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libXrender-0.9.10-11.fc32.aarch64.rpm", + "checksum": "sha256:18b34a587bc48280c94b7ea3a8d8c40bce4e97cb36153031ddf27671bcaddb43", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libacl-2.2.53-5.fc32.aarch64.rpm", + "checksum": "sha256:98d58695f22a613ff6ffcb2b738b4127be7b72e5d56f7d0dbd3c999f189ba323", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.2", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libarchive-3.4.2-1.fc32.aarch64.rpm", + "checksum": "sha256:340a82cfe6a9d18933b99a4e001d7e54f7ab225fe5e7fb1a7f51cb1c675c7050", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libargon2-20171227-4.fc32.aarch64.rpm", + "checksum": "sha256:6ef55c2aa000adea432676010756cf69e8851587ad17277b21bde362e369bf3e", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libassuan-2.5.3-3.fc32.aarch64.rpm", + "checksum": "sha256:1c982f31133def3baea707e0d1f0fe4a014d2c8c5f20ac8d69362cff4f26d5e9", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "8.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libattr-2.4.48-8.fc32.aarch64.rpm", + "checksum": "sha256:caa6fe00c6e322e961c4b7a02ba4a10cc939b84121e09d07d331adcdc2ae1af2", + "check_gpg": true + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "44.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libbasicobjects-0.1.1-44.fc32.aarch64.rpm", + "checksum": "sha256:a5c841dda3df90e810cfd87c42211a26dc0745f9bae341b6bfc6b08114e48ed5", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libblkid-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:fe8b11652adfe4c64d96b442d5b31da207dfdf4a551c491c0934498537c8dfc5", + "check_gpg": true + }, + { + "name": "libbrotli", + "epoch": 0, + "version": "1.0.7", + "release": "10.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libbrotli-1.0.7-10.fc32.aarch64.rpm", + "checksum": "sha256:95581bd0421b0fddf94b046e0bf8f13d3ce3d797acd5292d87127ed9e9505d80", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcap-2.26-7.fc32.aarch64.rpm", + "checksum": "sha256:0a2eadd29cc53df942d3f0acc016b281efa4347fc2e9de1d7b8b61d9c5f0d894", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.10", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcap-ng-0.7.10-2.fc32.aarch64.rpm", + "checksum": "sha256:5875ba2d9b9ced8b2d2faa880b5f1811a89e17defe946ccf99b201790a0d2520", + "check_gpg": true + }, + { + "name": "libcbor", + "epoch": 0, + "version": "0.5.0", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcbor-0.5.0-7.fc32.aarch64.rpm", + "checksum": "sha256:1ddaeb7c602005e75c0ea2603a533d692a94915a297b71e68a8e27327456c3d0", + "check_gpg": true + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "44.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcollection-0.7.0-44.fc32.aarch64.rpm", + "checksum": "sha256:d6ad55479187ecd7368002e67e83d44d24995fd1a1b6790c1c6c9fb1fd5e52a6", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcom_err-1.45.5-3.fc32.aarch64.rpm", + "checksum": "sha256:93c5fe6589243bff8f4d6934d82616a4cce0f30d071c513cc56f8e53bfc19d17", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcomps-0.1.14-4.fc32.aarch64.rpm", + "checksum": "sha256:e2eecb13c57728ce4c8e04ad8747ca51fe086a58bd55c0d3d29cf9683d0d09ad", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcroco-0.6.13-3.fc32.aarch64.rpm", + "checksum": "sha256:ff135143da781c30919f03000c4409cc09d38cd65cd7b01f3c540617ce0f69db", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcurl-7.69.1-1.fc32.aarch64.rpm", + "checksum": "sha256:cc30c04cfc6be2239727608174e90ac766cb7c77cdd1b70c4be619cb2df42a52", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdb-5.3.28-40.fc32.aarch64.rpm", + "checksum": "sha256:7bfb33bfa3c3a952c54cb61b7f7c7047c1fd91e8e334f53f54faea6f34e6c0bb", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdb-utils-5.3.28-40.fc32.aarch64.rpm", + "checksum": "sha256:435530a0b9a086018694034ce48e9589348fc66389d884977b400f2f74814ac8", + "check_gpg": true + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "44.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdhash-0.5.0-44.fc32.aarch64.rpm", + "checksum": "sha256:82bd171ac3f9a08c44e8144297a4dd9cd2567a916065a57eb656330e2b4e007f", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdnf-0.45.0-3.fc32.aarch64.rpm", + "checksum": "sha256:62afc19040e8fbf7ac7946f02d67cdd19086658c3d8713a6c120482fd769537e", + "check_gpg": true + }, + { + "name": "libdrm", + "epoch": 0, + "version": "2.4.100", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdrm-2.4.100-2.fc32.aarch64.rpm", + "checksum": "sha256:56bfd0b6087ca9d995981a10452330be702fb0e215f77cec656cfdd24acaf738", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "32.20191231cvs.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libedit-3.1-32.20191231cvs.fc32.aarch64.rpm", + "checksum": "sha256:3e25d33bea0d8de847f817b428fe92a6b02376634c7a6f0672bc668fa769869d", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "8.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libevent-2.1.8-8.fc32.aarch64.rpm", + "checksum": "sha256:ad874e09de00dbdb887eb6a94351869950ead7f6409dfa191d1443d3bb9dd255", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libfdisk-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:58988a2b7213098503b56d5388eba1bf2a01b9ff027961acb1e9f55c47d237ad", + "check_gpg": true + }, + { + "name": "libfdt", + "epoch": 0, + "version": "1.6.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libfdt-1.6.0-1.fc32.aarch64.rpm", + "checksum": "sha256:a78e345faac8293fa2c05560869eb610ce53b5c851db932fd8915128b27d0c1e", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "24.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libffi-3.1-24.fc32.aarch64.rpm", + "checksum": "sha256:291df16c0ae66fa5685cd033c84ae92765be4f4e17ce4936e47dc602ac6ff93e", + "check_gpg": true + }, + { + "name": "libfido2", + "epoch": 0, + "version": "1.3.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libfido2-1.3.1-1.fc32.aarch64.rpm", + "checksum": "sha256:a9e2dcc8d57bff7ec3424eb79de77ebe91a956dd39faa691b2ab4babd1683233", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgcc-10.0.1-0.11.fc32.aarch64.rpm", + "checksum": "sha256:28892ae62cd1b4dadded523be8cb5f9e0fddeaa864919ee4b0dfad3bba8fd06f", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgcrypt-1.8.5-3.fc32.aarch64.rpm", + "checksum": "sha256:e96e4caf6c98faa5fb61bd3b13ee7afa0d7510d3176fe3d3cbf485847ce985fd", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgomp-10.0.1-0.11.fc32.aarch64.rpm", + "checksum": "sha256:09a9dd8c3ae4fe9a9817c71c4b2af35f2d7e1dbf2c9f4659028ce69a5d2f2d02", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgpg-error-1.36-3.fc32.aarch64.rpm", + "checksum": "sha256:cffbab9f6052ee2c7b8bcc369a411e319174de094fb94eaf71555ce485049a74", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.3.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libidn2-2.3.0-2.fc32.aarch64.rpm", + "checksum": "sha256:500c4abc34ff58e6f06c7194034b2d68b618c5e6afa89b551ab74ef226e1880a", + "check_gpg": true + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "44.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libini_config-1.3.1-44.fc32.aarch64.rpm", + "checksum": "sha256:d891183e3f802f3e2b6ca77f1ea528d2aec52be8ef38ae2cb93c11f82ecff321", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libkcapi-1.1.5-2.fc32.aarch64.rpm", + "checksum": "sha256:5adad0edfcf9c4415734d11a35a5c14cbf53eb32827572dd6af670fadcad7f78", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.aarch64.rpm", + "checksum": "sha256:2f117f22ec79fed75752c69b7e1c70582bad93b55fb4a5b0dc2bca978bafce85", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libksba-1.3.5-11.fc32.aarch64.rpm", + "checksum": "sha256:1ee4f732b1b4b237d7301219fc5c52b63c9ab9e77db746612852fef5610f69b7", + "check_gpg": true + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.1.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libldb-2.1.1-1.fc32.aarch64.rpm", + "checksum": "sha256:3c29cc12a25791c83c040def2df8f107b161ecc0cbf3965cad82f38a451c7963", + "check_gpg": true + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.3.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmaxminddb-1.3.2-2.fc32.aarch64.rpm", + "checksum": "sha256:e4056437576c76b1b4fe8d8b98cce6f006194d74cbc0a30058cf29aab6b9307f", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "10.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmetalink-0.1.3-10.fc32.aarch64.rpm", + "checksum": "sha256:c748420c4d7407a95f840416a80c468d8304e529f93b40a45081a49fd7a29232", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmnl-1.0.4-11.fc32.aarch64.rpm", + "checksum": "sha256:2356581880df7b8275896b18de24e432a362ee159fc3127f92476ffe8d0432fd", + "check_gpg": true + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmodulemd-2.9.1-1.fc32.aarch64.rpm", + "checksum": "sha256:c0ad832521885f97d08c043350b72f4fade0bbe995f81da8a18370a932bf5aee", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmount-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:1e533f7f64169288e90b3851e509cf1aedf4da0fe986288da53516b2b77ac77d", + "check_gpg": true + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libndp-1.7-5.fc32.aarch64.rpm", + "checksum": "sha256:6bc574a7f67dc28909f84c05bfc3dfeeac04c088f809032d75313aac022f6064", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.aarch64.rpm", + "checksum": "sha256:400c91d4d6d1125ec891c16ea72aa4123fc4c96e02f8668a8ae6dbc27113d408", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "17.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.aarch64.rpm", + "checksum": "sha256:a0260a37707734c6f97885687a6ad5967c23cb0c693668bf1402e6ee5d4abe1e", + "check_gpg": true + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.4.3", + "release": "0.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnfsidmap-2.4.3-0.fc32.aarch64.rpm", + "checksum": "sha256:ab86efda86a5d4cb8b1fa979bcc37aeb5601616d48a4a9d34b4f4ceb4e553747", + "check_gpg": true + }, + { + "name": "libnftnl", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnftnl-1.1.5-2.fc32.aarch64.rpm", + "checksum": "sha256:07cf4ae85cb34a38b22eff66e1fd996b32a5beda0c60644b06ecdff33c224ce9", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.40.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnghttp2-1.40.0-2.fc32.aarch64.rpm", + "checksum": "sha256:17f5c9a25bf0f952f6defa6a857e938bfc1f72c69217f666a537bf8f1daff5f8", + "check_gpg": true + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnl3-3.5.0-2.fc32.aarch64.rpm", + "checksum": "sha256:231cefc11eb5a9ac8f23bbd294cef0bf3a690040df3048e063f8a269f2db75f8", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "6.20180605git4a062cf.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.aarch64.rpm", + "checksum": "sha256:4139803076f102e2224b81b4f1da3f6d066b89e272201d2720557763f9acfcd5", + "check_gpg": true + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "44.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpath_utils-0.2.1-44.fc32.aarch64.rpm", + "checksum": "sha256:2dcee99ce05f5844438f827cf0cd1578f7863efb31c204bbc441cd2265ad9a7d", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpcap-1.9.1-3.fc32.aarch64.rpm", + "checksum": "sha256:dbc1d91408e0e115e1c084f4c28d2d15f07cfc8b6c6d766192b65a28407422e7", + "check_gpg": true + }, + { + "name": "libpciaccess", + "epoch": 0, + "version": "0.16", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpciaccess-0.16-2.fc32.aarch64.rpm", + "checksum": "sha256:8d34b5a58672b245adeecfad6bdd4efb01ea496b048f96680e885b33c881db5d", + "check_gpg": true + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpipeline-1.5.2-2.fc32.aarch64.rpm", + "checksum": "sha256:9d1baa8d8cdd02711e1724b08de678f2bda92807a6ae0e9d1b6c2443e2810ffd", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpsl-0.21.0-4.fc32.aarch64.rpm", + "checksum": "sha256:faca2dc4a45d1bd365d9364ea59f361854f3379ef6f13e9fa0a85368a0621f45", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpwquality-1.4.2-2.fc32.aarch64.rpm", + "checksum": "sha256:1a096ed78df5a9339c4b3c15372275a884a1124b048ffcfbdb768db881e47ab2", + "check_gpg": true + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "44.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libref_array-0.1.5-44.fc32.aarch64.rpm", + "checksum": "sha256:ea775b1806d30c2d076f685977c0efbe57ff2afcf10a3c8f8f1a250ecb9ef5b6", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.11.1", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/librepo-1.11.1-4.fc32.aarch64.rpm", + "checksum": "sha256:56bc7a11331fe199a45bc23f348deff8cd5e1ee02c617b6ed429d61ba537fc8b", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.12.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm", + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.2", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libseccomp-2.4.2-3.fc32.aarch64.rpm", + "checksum": "sha256:7149be5bd74792181003b872a9bc636157f4b795b12374c0857fb7271f2567ac", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.20.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsecret-0.20.2-2.fc32.aarch64.rpm", + "checksum": "sha256:7cac868a4b1ac9c380192a31a45a314613af3f958aaf2b778642667dc73bc182", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libselinux-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:6028f86f132faee662e97075270f68e8125fd339c8689a2b661facd25c3b829b", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libselinux-utils-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:91cd21ca1f5b881a78e9c0a6dd3cdad7401f7216a1ab3acbe9337d8e3e054a5e", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsemanage-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:b78889f3a2ac801456c643fd5603017383221aa33eac381e4f74b9a13fbf3830", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsepol-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:fe06eff5ac0e3e538775aad2cb0f801af491476e9cb508caa9107f4a5f913e52", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "10.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsigsegv-2.11-10.fc32.aarch64.rpm", + "checksum": "sha256:836a45edfd4e2cda0b6bac254b2e6225aad36f9bae0f96f2fe7da42896db0dae", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsmartcols-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:0042a3d3b19152d0a16ee321cbe99208a2f4ebd009515c1f6f962a1d5f9cde26", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsolv-0.7.11-2.fc32.aarch64.rpm", + "checksum": "sha256:15a8a718cb6f629474fec7756b4701430e14ff94aad6cf6fe20f3eb7174a7783", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libss-1.45.5-3.fc32.aarch64.rpm", + "checksum": "sha256:a830bb13938bedaf5cc91b13ab78e2cf9172b06727b7e9e1bec2cddce8dd9e2d", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libssh-0.9.3-2.fc32.aarch64.rpm", + "checksum": "sha256:7bd98aa2d554f06ab525320ebf628a6e002011462e71a47337676a2c99de5aec", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm", + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_autofs-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:ed19ff9b81a5a72262a95b8ff52c867efc43aa50d28171328afd4791ee3daef8", + "check_gpg": true + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_certmap-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:0175f5d1834c1cb4a1f44c9ae20960fa674f26add0b88f903407abf2f3d22f82", + "check_gpg": true + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_idmap-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:05121688770a80889f1e1d0594a5b14d6ac30cc6fe4d431e3aa829f2290ea973", + "check_gpg": true + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_nss_idmap-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:eb98f6ee22b110395790e83648339d36f74068883d3d6a7a8a3ecb9cbf55bc60", + "check_gpg": true + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_sudo-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:1fab76e36bbad6727634f2a8ce6e722c0e6ca814969948ffd6ce7250bc75e7f3", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.aarch64.rpm", + "checksum": "sha256:3ea53f635b4f559b2bdb0e58d54dbfddc126b18abe23b46b94aecbf7c0d5132c", + "check_gpg": true + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.1", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtalloc-2.3.1-2.fc32.aarch64.rpm", + "checksum": "sha256:07b37612b8e0f09885ad653f3dbd2ff95a65bfd8b21c69d1cc20a4f3dbc0ef32", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.16.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtasn1-4.16.0-1.fc32.aarch64.rpm", + "checksum": "sha256:ea44ae1c951d3d4b30ff2a2d898c041ce9072acc94d6ea1e0e305c45e802019f", + "check_gpg": true + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.3", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtdb-1.4.3-2.fc32.aarch64.rpm", + "checksum": "sha256:af826bfb93a53a0bbb0209f721fc7d15c0b5200c3f81c93ef9620cc640e90b77", + "check_gpg": true + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtevent-0.10.2-2.fc32.aarch64.rpm", + "checksum": "sha256:2c9bf996e1550ed5ad42398187ee14d65315d13ec5c9e2eab32b8fed0743b1fc", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtextstyle-0.20.1-4.fc32.aarch64.rpm", + "checksum": "sha256:831fcc64c103f60608b08f4f47c2b7b5b43571cef7576b9e549e6ae001434da5", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.2.5", + "release": "1.rc2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.aarch64.rpm", + "checksum": "sha256:ef9bff2d88851209d35f9824e02fc431fba5e5347752ea1c197a57c0c45ad401", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libunistring-0.9.10-7.fc32.aarch64.rpm", + "checksum": "sha256:2d7ad38e86f5109c732a32bf9bea612c4c674aba6ad4cca2d211d826edc7fd6f", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libusbx-1.0.23-1.fc32.aarch64.rpm", + "checksum": "sha256:50d91ca18b6cdc9395424b852d2828d1b75e2af318932a2442376d2a10819f6a", + "check_gpg": true + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "24.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libuser-0.62-24.fc32.aarch64.rpm", + "checksum": "sha256:6f7b4c0efee821ea122401d350274334c6ef2d62dcacbe40942a00b162b6025b", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "18.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libutempter-1.1.6-18.fc32.aarch64.rpm", + "checksum": "sha256:22954219a63638d7418204d818c01a0e3c914e2b2eb970f2e4638dcf5a7a5634", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libuuid-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:2bc82e132696d9daa4eef545ff3352d6eb588b9a1b9584e515d15a7c3d6471df", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "9.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libverto-0.3.0-9.fc32.aarch64.rpm", + "checksum": "sha256:c494a613443f49b6cca4845f9c3410a1267f609c503a81a9a26a272443708fee", + "check_gpg": true + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxcb-1.13.1-4.fc32.aarch64.rpm", + "checksum": "sha256:3f5ca8c083b25935f7bd846c66b6ed65f297807ba25a8b62d4dac9389f87f9f1", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxcrypt-4.4.16-1.fc32.aarch64.rpm", + "checksum": "sha256:64b64bab720df9dd7fd37ebf80a07795a95ac11e640eda3209b6517dcd7133e5", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.10.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.aarch64.rpm", + "checksum": "sha256:9db3ade981c564c361eed9068cd35acac93c1b1db54b6fb2a74070ce68141cff", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.10", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxml2-2.9.10-3.fc32.aarch64.rpm", + "checksum": "sha256:33788835331bed7f75e5cd2126d8d75511211175c9ac6d93824baec1a546a28d", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libyaml-0.2.2-3.fc32.aarch64.rpm", + "checksum": "sha256:d4fd722ee0ff5da4114b91964e430e4e45c1a428739f1e5be5db7854e5c85f11", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libzstd-1.4.4-2.fc32.aarch64.rpm", + "checksum": "sha256:2c4d03577e8661920a7b64fcc68735b795288744f1b188512a96960143030474", + "check_gpg": true + }, + { + "name": "linux-atm-libs", + "epoch": 0, + "version": "2.5.1", + "release": "26.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/linux-atm-libs-2.5.1-26.fc32.aarch64.rpm", + "checksum": "sha256:ae08e152061808ccc334cc611d8ea4d18c05daa6b68731e255a533d0572594ae", + "check_gpg": true + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20200316", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/linux-firmware-20200316-106.fc32.noarch.rpm", + "checksum": "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4", + "check_gpg": true + }, + { + "name": "linux-firmware-whence", + "epoch": 0, + "version": "20200316", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/linux-firmware-whence-20200316-106.fc32.noarch.rpm", + "checksum": "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9", + "check_gpg": true + }, + { + "name": "lmdb-libs", + "epoch": 0, + "version": "0.9.24", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/lmdb-libs-0.9.24-1.fc32.aarch64.rpm", + "checksum": "sha256:db514e9d99e58e08e698083e1ca969f9fc98ae27ee9b63aa8d2133bd95a7002e", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/lua-libs-5.3.5-7.fc32.aarch64.rpm", + "checksum": "sha256:1befc4be3c3c72b3210e54f96f4334f268eaecdd3b77af7cadea0ef31f0e2ca9", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/lz4-libs-1.9.1-2.fc32.aarch64.rpm", + "checksum": "sha256:a7394cd1b11a1b25efaab43a30b1d9687683884babc162f43e29fdee4f00bda8", + "check_gpg": true + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.9.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/man-db-2.9.0-2.fc32.aarch64.rpm", + "checksum": "sha256:086552102da5fd978a4722ddd21381d432abb9f886cd97761d2efbff2c588791", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mkpasswd-5.5.6-1.fc32.aarch64.rpm", + "checksum": "sha256:45e2c1c76a0a0b6e1164c457307250a54a7de5905992b4351a84183c2e9f2633", + "check_gpg": true + }, + { + "name": "mokutil", + "epoch": 2, + "version": "0.3.0", + "release": "15.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mokutil-0.3.0-15.fc32.aarch64.rpm", + "checksum": "sha256:cc2019e304ecdfa3a245de005342c8d617d1da0d834e510849764fb38b929655", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "4.0.2", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mpfr-4.0.2-3.fc32.aarch64.rpm", + "checksum": "sha256:94d02790ff430efebbfc12ca2c2029c66e1691b70baf7cf45159fb8464d38e56", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-6.1-15.20191109.fc32.aarch64.rpm", + "checksum": "sha256:fe7ee39b0779c467c5d8a20daff4911e1967523e6fc748179e77584168e18bde", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm", + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.aarch64.rpm", + "checksum": "sha256:a973f92acb0afe61087a69d13a532c18a39dd60b3ba4826b38350f2c6b27e417", + "check_gpg": true + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.56.20160912git.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/net-tools-2.0-0.56.20160912git.fc32.aarch64.rpm", + "checksum": "sha256:8db16495c82aeba17b61896e6414f2ce212088370e88cf73b8999bf2317c015c", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/nettle-3.5.1-5.fc32.aarch64.rpm", + "checksum": "sha256:15b2402e11402a6cb494bf7ea31ebf10bf1adb0759aab417e63d05916e56aa45", + "check_gpg": true + }, + { + "name": "nftables", + "epoch": 1, + "version": "0.9.3", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/nftables-0.9.3-2.fc32.aarch64.rpm", + "checksum": "sha256:8b30ff554cd68040f0a4a0759c502e1c1fccad2df64d2ee61145ae0f7bd668ad", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/npth-1.6-4.fc32.aarch64.rpm", + "checksum": "sha256:5b1cb1251cf7f65c50d9e3fcc11901fef5132dc177cce68a50918da481bb7629", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openldap-2.4.47-4.fc32.aarch64.rpm", + "checksum": "sha256:c030084d188fc99359cc088bd77d2ee6578e717f1cf2d067b8967c6cbe863c6e", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssh-8.2p1-2.fc32.aarch64.rpm", + "checksum": "sha256:57ee793c1f8dc1c9b58953b03d7041501eea326cefc4dda6de640761c60e31f8", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssh-clients-8.2p1-2.fc32.aarch64.rpm", + "checksum": "sha256:5fa81b28d5100f987cd8d9317ccf200ec5b94d11ed3c8e2e90137b8981e71c61", + "check_gpg": true + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssh-server-8.2p1-2.fc32.aarch64.rpm", + "checksum": "sha256:6fcaddc0fde4e23d6650cd46b3763903c7b693afa69aad52fdf87a8563aa5f84", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-1.1.1d-7.fc32.aarch64.rpm", + "checksum": "sha256:e30482032783ab59417bfaf8394be42d2e2e779a580979bd87f15bd0880df858", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.aarch64.rpm", + "checksum": "sha256:0178be1e5d6da8053061d29013d8fda8445d37eac908afbf4a2ca92faf950f2c", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.aarch64.rpm", + "checksum": "sha256:85dc7962af97e86a655b8ec5d5276e511f50b1d4abe624f4d8cb0d784007e342", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/os-prober-1.77-4.fc32.aarch64.rpm", + "checksum": "sha256:a718bc2a857bde398de2375efae50dac568217f547b272d7cbe0a1655ec0d961", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/p11-kit-0.23.20-1.fc32.aarch64.rpm", + "checksum": "sha256:afba861f69234f4cb4040085a4868c7424666a4356d0e2002e16b0afb75ec0d2", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.aarch64.rpm", + "checksum": "sha256:b867eeba06e6fc9084c227d8b3ea54f1815cb1833a29babf114fa1167aa17f2d", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "24.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pam-1.3.1-24.fc32.aarch64.rpm", + "checksum": "sha256:9738af51bf206850f6611306bed20542ed32a1701188611caab0b6896e4ffb37", + "check_gpg": true + }, + { + "name": "parted", + "epoch": 0, + "version": "3.3", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/parted-3.3-3.fc32.aarch64.rpm", + "checksum": "sha256:026212c277c72facfd48901978afded50fc4050aedaa06a24e5e57875ce48c32", + "check_gpg": true + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "8.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/passwd-0.80-8.fc32.aarch64.rpm", + "checksum": "sha256:30bf2e7deddad50a3054827c98e97adfd3ae1d24ae248980649db289198135a8", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.44", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre-8.44-1.fc32.aarch64.rpm", + "checksum": "sha256:a3775cb3bc81bb5444e26695a62b1bd2eb48a91d7bc3a361d763c185cb817de1", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre2-10.34-9.fc32.aarch64.rpm", + "checksum": "sha256:7417889b8455ba87230fd5a987fe160d86de8250b87d7ae9bbcba90c32053172", + "check_gpg": true + }, + { + "name": "pcre2-syntax", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm", + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "6.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pigz-2.4-6.fc32.aarch64.rpm", + "checksum": "sha256:77297d07807ddcb85bad6fd788c6f1692af47d00ad27305f3e2217e34e81f538", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pinentry-1.1.0-7.fc32.aarch64.rpm", + "checksum": "sha256:a580e36566f6ffceef809e49fc4c7f9b1418a16123d4d49079c8423b6a337e67", + "check_gpg": true + }, + { + "name": "pixman", + "epoch": 0, + "version": "0.38.4", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pixman-0.38.4-2.fc32.aarch64.rpm", + "checksum": "sha256:24df91ba73dffecb16916cf95dce726a5ce7de95197beb3ab147dd7890f2d2b0", + "check_gpg": true + }, + { + "name": "plymouth", + "epoch": 0, + "version": "0.9.4", + "release": "14.20200325gite31c81f.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/plymouth-0.9.4-14.20200325gite31c81f.fc32.aarch64.rpm", + "checksum": "sha256:7967ddee97af6d0f83cfd3226f8e187edac2823ec1e4cef53b54415d759bffa9", + "check_gpg": true + }, + { + "name": "plymouth-core-libs", + "epoch": 0, + "version": "0.9.4", + "release": "14.20200325gite31c81f.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/plymouth-core-libs-0.9.4-14.20200325gite31c81f.fc32.aarch64.rpm", + "checksum": "sha256:cfc944e77ac28ff62a93736d901a5a312fec5efd17f5e7800deafb4b801ae00d", + "check_gpg": true + }, + { + "name": "plymouth-scripts", + "epoch": 0, + "version": "0.9.4", + "release": "14.20200325gite31c81f.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/plymouth-scripts-0.9.4-14.20200325gite31c81f.fc32.aarch64.rpm", + "checksum": "sha256:2c6ddfd3a551252013f647539df30097febcc4e0cd7c6eb2d1690e9f5aff66d6", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/policycoreutils-3.0-2.fc32.aarch64.rpm", + "checksum": "sha256:29bcc2f3f85ca7bdc22178af3e16743f55353bd9f25fb4c748d8c9f7117fe56f", + "check_gpg": true + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.116", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/polkit-libs-0.116-7.fc32.aarch64.rpm", + "checksum": "sha256:54613bd9e0524bb992bd7779c80a24b12df744085031cb8f3defb5fae55ca0f5", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "19.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/popt-1.16-19.fc32.aarch64.rpm", + "checksum": "sha256:8f4be33cb040f081bb1f863b92e94ac7838af743cb5a0ce9d8c8ec9a611f71a6", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/procps-ng-3.3.15-7.fc32.aarch64.rpm", + "checksum": "sha256:bcb0cd53344744f9c8d11041eb76fc5b304f78c791846521bbe105e78f2bd0f8", + "check_gpg": true + }, + { + "name": "psmisc", + "epoch": 0, + "version": "23.3", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/psmisc-23.3-3.fc32.aarch64.rpm", + "checksum": "sha256:1eb386a258cebf600319b1f18344b047c9182485936d96da9c2b1067ac1c1bba", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm", + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-3.8.2-2.fc32.aarch64.rpm", + "checksum": "sha256:857330a729697c1b6e8d86550391f1abf4db87d5ffeffeb5f00065fa8be85cbd", + "check_gpg": true + }, + { + "name": "python3-attrs", + "epoch": 0, + "version": "19.3.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-attrs-19.3.0-2.fc32.noarch.rpm", + "checksum": "sha256:bcb07748c8688c788ec69c3a33c0abd1bb3a496b9aa09b5729265670bc7ba0eb", + "check_gpg": true + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-audit-3.0-0.19.20191104git1c2f876.fc32.aarch64.rpm", + "checksum": "sha256:16902074f43963a360df42fec639f8b30ad29ee0d8a9799ac26ff0ba5c60e4cd", + "check_gpg": true + }, + { + "name": "python3-babel", + "epoch": 0, + "version": "2.8.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-babel-2.8.0-2.fc32.noarch.rpm", + "checksum": "sha256:5719dd2fb399cadec08b4ac41c794239d2a2de2f012faeb970ab90a07bba0084", + "check_gpg": true + }, + { + "name": "python3-cffi", + "epoch": 0, + "version": "1.14.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-cffi-1.14.0-1.fc32.aarch64.rpm", + "checksum": "sha256:844ee747d24d934104398be60747b407d19c8106ead11b06fe92fcc62bd765fc", + "check_gpg": true + }, + { + "name": "python3-chardet", + "epoch": 0, + "version": "3.0.4", + "release": "15.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-chardet-3.0.4-15.fc32.noarch.rpm", + "checksum": "sha256:e7b9fd73c260cd22d3a36823530d4f623ea0e16844b900a5677c769afa76341c", + "check_gpg": true + }, + { + "name": "python3-configobj", + "epoch": 0, + "version": "5.0.6", + "release": "20.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-configobj-5.0.6-20.fc32.noarch.rpm", + "checksum": "sha256:81b6181b947d50e0a1ea681298417e552421d6714900d07a34dc25899e5c9f60", + "check_gpg": true + }, + { + "name": "python3-cryptography", + "epoch": 0, + "version": "2.8", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-cryptography-2.8-3.fc32.aarch64.rpm", + "checksum": "sha256:bbf9571bf10df55a90e73b372da33b6ac54fad5778cea58064b7b57dcbb17180", + "check_gpg": true + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.8.0", + "release": "8.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dateutil-2.8.0-8.fc32.noarch.rpm", + "checksum": "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862", + "check_gpg": true + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.16", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dbus-1.2.16-1.fc32.aarch64.rpm", + "checksum": "sha256:092370d1e62096782f329944df0e7e01cc49bbc0fa4071d63f352cf45e89e5bc", + "check_gpg": true + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.4.0", + "release": "6.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-decorator-4.4.0-6.fc32.noarch.rpm", + "checksum": "sha256:129adf9147d5d120546ca8e0fb5f165761106d386d366fe82591e372754d0b4a", + "check_gpg": true + }, + { + "name": "python3-distro", + "epoch": 0, + "version": "1.4.0", + "release": "5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-distro-1.4.0-5.fc32.noarch.rpm", + "checksum": "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.14", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dnf-plugins-core-4.0.14-1.fc32.noarch.rpm", + "checksum": "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576", + "check_gpg": true + }, + { + "name": "python3-firewall", + "epoch": 0, + "version": "0.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-firewall-0.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:8ee8c4bbf024b998ffb77a6b4194a2306ac21c5a6fcf70c8c81a0fbf38f7c7fc", + "check_gpg": true + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.36.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-gobject-base-3.36.0-2.fc32.aarch64.rpm", + "checksum": "sha256:aced65470e04746b0db1d414ef8fc5e84f8f7cc9becfd187a92d130f21c854c4", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-gpg-1.13.1-6.fc32.aarch64.rpm", + "checksum": "sha256:fe96e7fe3da0db38b8b8850c9dedd50c1358309fee24c774bc64ddee62bb11be", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.aarch64.rpm", + "checksum": "sha256:79defc84763baec2190da8941221abfa002d6f6c9e8c3486e2c492389fca2a57", + "check_gpg": true + }, + { + "name": "python3-idna", + "epoch": 0, + "version": "2.8", + "release": "6.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-idna-2.8-6.fc32.noarch.rpm", + "checksum": "sha256:61c51596cc97f35177efe8dc5e2ca52d8fd528570f33c184497f419259b73c90", + "check_gpg": true + }, + { + "name": "python3-jinja2", + "epoch": 0, + "version": "2.11.1", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jinja2-2.11.1-1.fc32.noarch.rpm", + "checksum": "sha256:645f82cf62da25742cab5e8ffd1f764301b84ab19710d9f3fb3aff1cb57ffdc6", + "check_gpg": true + }, + { + "name": "python3-jsonpatch", + "epoch": 0, + "version": "1.21", + "release": "11.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jsonpatch-1.21-11.fc32.noarch.rpm", + "checksum": "sha256:4c9d77d63ddc7dda0e018fc1c97d46025794e336e58d838a631fcc130dfa3b9b", + "check_gpg": true + }, + { + "name": "python3-jsonpointer", + "epoch": 0, + "version": "1.10", + "release": "19.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jsonpointer-1.10-19.fc32.noarch.rpm", + "checksum": "sha256:6615aae3def0c49910e43e2d69f7ae8852694953dceb4b6235b5cf4099296d70", + "check_gpg": true + }, + { + "name": "python3-jsonschema", + "epoch": 0, + "version": "3.2.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jsonschema-3.2.0-2.fc32.noarch.rpm", + "checksum": "sha256:6890a9545194ad6cf1b0c58e5273132171a9ced9cb665a1442aa62b6b6d3d2ea", + "check_gpg": true + }, + { + "name": "python3-jwt", + "epoch": 0, + "version": "1.7.1", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jwt-1.7.1-7.fc32.noarch.rpm", + "checksum": "sha256:d0bc781a80be1d1fe204ec6b26255240261d55f6e24a28343572f2221a00533e", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.aarch64.rpm", + "checksum": "sha256:e76aea00d64d100bafcea1672ce65f8bfd47bdf7e0dc7bf859fc0c6ec29d5823", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.aarch64.rpm", + "checksum": "sha256:023d3d7be30607410a2357b50b8ef3f94a07baf2842bfba0421f803600ec605f", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libs-3.8.2-2.fc32.aarch64.rpm", + "checksum": "sha256:32a00991ec85f0bf2a336e00033a0e70b0da963eb42d81bbad18a7a11f41d4eb", + "check_gpg": true + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libselinux-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:84313c8f10f91d10e4f734c3a605b0a771d2faa72bf43deeed60a4cf3606a0da", + "check_gpg": true + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libsemanage-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:eded265cff5d22b89a955570eba030643d6730dd5987c2efed3110ef74cd0254", + "check_gpg": true + }, + { + "name": "python3-markupsafe", + "epoch": 0, + "version": "1.1.1", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-markupsafe-1.1.1-5.fc32.aarch64.rpm", + "checksum": "sha256:a2fcc535573ade5656cdb6968eb13dd68380540b5f25a0eca3947676dc5f11d6", + "check_gpg": true + }, + { + "name": "python3-nftables", + "epoch": 1, + "version": "0.9.3", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-nftables-0.9.3-2.fc32.aarch64.rpm", + "checksum": "sha256:d1d1b3fafa2ea83870641411a9ae955be74887689516ae3cc54ada0a38b06873", + "check_gpg": true + }, + { + "name": "python3-oauthlib", + "epoch": 0, + "version": "3.0.2", + "release": "5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-oauthlib-3.0.2-5.fc32.noarch.rpm", + "checksum": "sha256:391faab010ca30610a14e0b3d54fbc0331be39bc831086fb877f8021fe4b171f", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "name": "python3-ply", + "epoch": 0, + "version": "3.11", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-ply-3.11-7.fc32.noarch.rpm", + "checksum": "sha256:f6203a41ed91197bb770a38a101d977f0f56de86ccc5a71cee9c0e198f26bcbc", + "check_gpg": true + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-policycoreutils-3.0-2.fc32.noarch.rpm", + "checksum": "sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2", + "check_gpg": true + }, + { + "name": "python3-prettytable", + "epoch": 0, + "version": "0.7.2", + "release": "22.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-prettytable-0.7.2-22.fc32.noarch.rpm", + "checksum": "sha256:4860a733ca3f22089c6c283cbdcf53123a702d60b5bffdd4fe9d76826f91139a", + "check_gpg": true + }, + { + "name": "python3-pycparser", + "epoch": 0, + "version": "2.19", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pycparser-2.19-2.fc32.noarch.rpm", + "checksum": "sha256:a0b87b2dc3c5f536e94d6a4f3563a621dfbc067a62c3d1fe69bdb70c3cecec57", + "check_gpg": true + }, + { + "name": "python3-pyrsistent", + "epoch": 0, + "version": "0.15.7", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pyrsistent-0.15.7-2.fc32.aarch64.rpm", + "checksum": "sha256:f0143760628def255de0b7e1aba6f7880705329703f7357425868483ba8f43e7", + "check_gpg": true + }, + { + "name": "python3-pyserial", + "epoch": 0, + "version": "3.4", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pyserial-3.4-7.fc32.noarch.rpm", + "checksum": "sha256:a107b3d3790a5bcfdc28f6f4718969039b103a681a2647f3cbcb82cf92e97acb", + "check_gpg": true + }, + { + "name": "python3-pysocks", + "epoch": 0, + "version": "1.7.1", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pysocks-1.7.1-4.fc32.noarch.rpm", + "checksum": "sha256:fa791a4328b4c41b7190d862de921605f266a64abee03b2ea2e8d2b644be307f", + "check_gpg": true + }, + { + "name": "python3-pytz", + "epoch": 0, + "version": "2019.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pytz-2019.3-2.fc32.noarch.rpm", + "checksum": "sha256:c93df175a0a4989aaaeb170406d8ff13a2cd93a5fc52ad33468245fea2044a86", + "check_gpg": true + }, + { + "name": "python3-pyyaml", + "epoch": 0, + "version": "5.3.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pyyaml-5.3.1-1.fc32.aarch64.rpm", + "checksum": "sha256:0055cc4eccd54df5b64c194618a26e894a0d61781c8d1f1f48687bfd296b15e4", + "check_gpg": true + }, + { + "name": "python3-requests", + "epoch": 0, + "version": "2.22.0", + "release": "8.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-requests-2.22.0-8.fc32.noarch.rpm", + "checksum": "sha256:d611f0c4252c4c4b893850807748e62cf4d17d72d544ef2744091df3206d8178", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:34efde201252afe93ec3af61af30c6d32cfbe5ecbdcecaf4667666f12482757d", + "check_gpg": true + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.3.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-setools-4.3.0-1.fc32.aarch64.rpm", + "checksum": "sha256:82d2eaad75cf45da9773298344dcbbaebb4da5b67526a6c43bc67d3f84d98616", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.14.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-six-1.14.0-2.fc32.noarch.rpm", + "checksum": "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f", + "check_gpg": true + }, + { + "name": "python3-slip", + "epoch": 0, + "version": "0.6.4", + "release": "19.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-slip-0.6.4-19.fc32.noarch.rpm", + "checksum": "sha256:d2abba1a0523bd9df5073900593ab13ec2ed2e391440be4d883314fa154370f8", + "check_gpg": true + }, + { + "name": "python3-slip-dbus", + "epoch": 0, + "version": "0.6.4", + "release": "19.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-slip-dbus-0.6.4-19.fc32.noarch.rpm", + "checksum": "sha256:cb0c64cc81e0b384bbc9d27ffcb2a655b13c91a799aad8972264aed1767926a3", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-unbound-1.9.6-2.fc32.aarch64.rpm", + "checksum": "sha256:acafdf6b20fea5974da004b77eced20b00c59a908edcef9c4c4e60815fdbf8f3", + "check_gpg": true + }, + { + "name": "python3-urllib3", + "epoch": 0, + "version": "1.25.7", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-urllib3-1.25.7-3.fc32.noarch.rpm", + "checksum": "sha256:3882823d0eb18e0e8146584f4a32a4801961f6fdc09075607746317eba3265be", + "check_gpg": true + }, + { + "name": "qemu-guest-agent", + "epoch": 2, + "version": "4.2.0", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/q/qemu-guest-agent-4.2.0-7.fc32.aarch64.rpm", + "checksum": "sha256:15dc3c9658d1ef11be8dfd13cee70e2f62e58e928a96e031a53562e38ede1c7c", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.aarch64.rpm", + "checksum": "sha256:3d6ec574fe2c612bcc45395f7ee87c68f45016f005c6d7aeee6b37897f41b8d2", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/readline-8.0-4.fc32.aarch64.rpm", + "checksum": "sha256:6007c88c459315a5e2ce354086bd0372a56e15cdd0dc14e6e889ab859f8d8365", + "check_gpg": true + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "27.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rootfiles-8.1-27.fc32.noarch.rpm", + "checksum": "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:d2bd77606d1c91208be05edce6ea04c24fa2efc880569eecb958afde1a7fb17e", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:0c30a7fd9f69ad808183afa0814e363689ff63e7a82856a790e5fa111c031b96", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:7fe5838c895cd1158a6ae2afb3794e79e393d6701330e1109592e6b45f4bd876", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:91ab783e9eb00d5baba65989c86c3d742033bd2306ff7adb0b78185f28d2ca86", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:7d5d62696fc69bb890912be71c05e92496129f198838cb56d349a8fc700a85a6", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:33ca43cf0714aef344a70be4cfa42322694cc975a2eeee0bf31325dbca7f2842", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sed-4.5-5.fc32.aarch64.rpm", + "checksum": "sha256:ccf07a3682a1038a6224b3da69e20f201584ed1c879539cedb57e184aa14429a", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.6", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm", + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.8.1", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/shadow-utils-4.8.1-2.fc32.aarch64.rpm", + "checksum": "sha256:debd948a7e454f07dd7ab8ed79984158b98ce333d77be948e4393bb87c518ab8", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.15", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/shared-mime-info-1.15-3.fc32.aarch64.rpm", + "checksum": "sha256:a92c4a583aacd37beb069c996307bd782f809c78fd1fb802de25a53efbaff8f8", + "check_gpg": true + }, + { + "name": "shim-aa64", + "epoch": 0, + "version": "15", + "release": "8", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/shim-aa64-15-8.aarch64.rpm", + "checksum": "sha256:bc2c4637779e037072ebbd00215afbb33ce05706c7851cfde4cc0637c63f75f3", + "check_gpg": true + }, + { + "name": "spice-vdagent", + "epoch": 0, + "version": "0.20.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/spice-vdagent-0.20.0-2.fc32.aarch64.rpm", + "checksum": "sha256:fd4a80fe7847a6a2ec1bd83672841b5369729168ac52928f60f3cf4a53f8ed6b", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.31.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.aarch64.rpm", + "checksum": "sha256:c75bf533b09243daeca728129a6fe10fca47d0c150fd43b5dab7b4993584536f", + "check_gpg": true + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sssd-client-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:cc531264ae00fbc4e465b6b47c8f3772edee80346b92cee1fae88d8cdb9dcdcf", + "check_gpg": true + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sssd-common-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:b3657ad1419ab11e07608c7bc4da75a91162b2398d66febfc061795bc1587036", + "check_gpg": true + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sssd-kcm-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:5ce4acbf25abd83a562f20e9a8a73b8860a766fb543d69ed9db6eb57fd75fc70", + "check_gpg": true + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sssd-nfs-idmap-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:46aa2a21a000eb70097a86788d853602f7db1238156f2364a802f0b37f0dc4e6", + "check_gpg": true + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.9.0", + "release": "0.1.b4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sudo-1.9.0-0.1.b4.fc32.aarch64.rpm", + "checksum": "sha256:56b5cea4fa7f4d74d4d15aae43ab4827387dead4659bd2bede66c38057cd19e7", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-245.4-1.fc32.aarch64.rpm", + "checksum": "sha256:41c6a8ea4240f2fa6cea0333cc6d5f59731ac843398eb457c182e90af367783c", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-libs-245.4-1.fc32.aarch64.rpm", + "checksum": "sha256:52aa6e698e60cd360d5b9473fd1ebcc7e238e2125449bfdcc41b3e0fe13ae645", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-pam-245.4-1.fc32.aarch64.rpm", + "checksum": "sha256:9baa05a69943b0c6274403276f45817ab56193de62b5b64205b4fd35951e0895", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm", + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-udev-245.4-1.fc32.aarch64.rpm", + "checksum": "sha256:ff6540076bd7247ca2c1c8beb8979adb5eaf27877125c7f5cc187dc10913048f", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/trousers-0.3.13-13.fc31.aarch64.rpm", + "checksum": "sha256:3242e0ce48f95d7a271125cf1222b5af09e20fe85194623d95336e1c678bdee8", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/trousers-lib-0.3.13-13.fc31.aarch64.rpm", + "checksum": "sha256:a6c26dd0ba8fc6a15e845f72f90e89b62f7344d7793896e707e610286b5e4541", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/tss2-1331-4.fc32.aarch64.rpm", + "checksum": "sha256:91e35b3750f5029be019542a4143cf00de68559b9ab6ae6df2c8f7ea6e60acd9", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm", + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/u/unbound-libs-1.9.6-2.fc32.aarch64.rpm", + "checksum": "sha256:654a9a9997c975998e1cb5d9250cd34b9d9d4d69f43c9282e67ad4d38fa2bcdf", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/u/util-linux-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:25e6968493572c680d6f8cad03e591f6e1e0e6ce0d1fbe3648d4b64ba529491d", + "check_gpg": true + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.2.525", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/v/vim-minimal-8.2.525-1.fc32.aarch64.rpm", + "checksum": "sha256:20f32df3b4961ef659a4822686978e0501fc5262e942046b53b24ed11e77476b", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "19.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/w/which-2.21-19.fc32.aarch64.rpm", + "checksum": "sha256:d552c735d48fa647509605f524863eab28b69b9fc8d7c62a67479c3af0878024", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm", + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "name": "xen-libs", + "epoch": 0, + "version": "4.13.0", + "release": "6.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xen-libs-4.13.0-6.fc32.aarch64.rpm", + "checksum": "sha256:d9827569f071bfd26862b67a24640e37944fbd7198c30503006f0ac9e1e2521e", + "check_gpg": true + }, + { + "name": "xen-licenses", + "epoch": 0, + "version": "4.13.0", + "release": "6.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xen-licenses-4.13.0-6.fc32.aarch64.rpm", + "checksum": "sha256:7aaa5d87151e4568e9acbd23d1c94373c977cdd46c69c79035735d6f381dd38c", + "check_gpg": true + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.4.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xfsprogs-5.4.0-3.fc32.aarch64.rpm", + "checksum": "sha256:fc6b083682762fb891b50ed6e9f684ac54a2a05a78e24078ff66d4636ae89588", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.29", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm", + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xz-5.2.5-1.fc32.aarch64.rpm", + "checksum": "sha256:202d761caf4c9d4937c04388a7180d6687a79e8141136be0f7ecc3a54bf80594", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xz-libs-5.2.5-1.fc32.aarch64.rpm", + "checksum": "sha256:48381163a3f2c524697efc07538f040fde0b69d4e0fdcbe3bcfbc9924dd7d5dd", + "check_gpg": true + }, + { + "name": "yajl", + "epoch": 0, + "version": "2.1.0", + "release": "14.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/y/yajl-2.1.0-14.fc32.aarch64.rpm", + "checksum": "sha256:c599bda69d6f4265be06e7206bfbf4a6a3c77b61bb960ddce807f5499736be4c", + "check_gpg": true + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/y/yum-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.aarch64.rpm", + "checksum": "sha256:0a31a882e4ac33233b36e2c61cc09125a936f54877137d5bb2ddc1ca8a5f9a12", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "21.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/z/zlib-1.2.11-21.fc32.aarch64.rpm", + "checksum": "sha256:df7184fef93e9f8f535d78349605595a812511db5e6dee26cbee15569a055422", + "check_gpg": true + } + ], + "checksums": { + "0": "sha256:f56d50d2c120f5fe150f53a3f72d2b8df93d0c4c51e9ae866dfa08f1d5517fb1" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac ro biosdevname=0 net.ifnames=0" + }, + "bootloader": "unknown", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "initrd": "/boot/initramfs-5.6.6-300.fc32.aarch64.img", + "linux": "/boot/vmlinuz-5.6.6-300.fc32.aarch64", + "options": "$kernelopts", + "title": "Fedora (5.6.6-300.fc32.aarch64) 32 (Thirty Two)", + "version": "5.6.6-300.fc32.aarch64" + } + ], + "firewall-enabled": [ + "ssh", + "mdns", + "dhcpv6-client" + ], + "fstab": [ + [ + "UUID=46BB-8120", + "/boot/efi", + "vfat", + "umask=0077,shortname=winnt", + "0", + "2" + ], + [ + "UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "/", + "ext4", + "defaults", + "1", + "1" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:993:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:997:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "redhat:x:1000:", + "render:x:996:", + "root:x:0:", + "ssh_keys:x:998:", + "sshd:x:74:", + "sys:x:3:", + "systemd-coredump:x:995:", + "systemd-journal:x:190:", + "systemd-network:x:192:", + "systemd-resolve:x:193:", + "systemd-timesync:x:994:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:999:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "qcow2", + "os-release": { + "ANSI_COLOR": "0;34", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:fedoraproject:fedora:32", + "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f32/system-administrators-guide/", + "HOME_URL": "https://fedoraproject.org/", + "ID": "fedora", + "LOGO": "fedora-logo-icon", + "NAME": "Fedora", + "PLATFORM_ID": "platform:f32", + "PRETTY_NAME": "Fedora 32 (Thirty Two)", + "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy", + "REDHAT_BUGZILLA_PRODUCT": "Fedora", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "32", + "REDHAT_SUPPORT_PRODUCT": "Fedora", + "REDHAT_SUPPORT_PRODUCT_VERSION": "32", + "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help", + "VERSION": "32 (Thirty Two)", + "VERSION_CODENAME": "", + "VERSION_ID": "32" + }, + "packages": [ + "NetworkManager-1.22.10-1.fc32.aarch64", + "NetworkManager-libnm-1.22.10-1.fc32.aarch64", + "acl-2.2.53-5.fc32.aarch64", + "alsa-lib-1.2.2-2.fc32.aarch64", + "alternatives-1.11-6.fc32.aarch64", + "audit-3.0-0.19.20191104git1c2f876.fc32.aarch64", + "audit-libs-3.0-0.19.20191104git1c2f876.fc32.aarch64", + "basesystem-11-9.fc32.noarch", + "bash-5.0.11-2.fc32.aarch64", + "bzip2-libs-1.0.8-2.fc32.aarch64", + "c-ares-1.15.0-5.fc32.aarch64", + "ca-certificates-2020.2.40-3.fc32.noarch", + "checkpolicy-3.0-3.fc32.aarch64", + "chrony-3.5-8.fc32.aarch64", + "cloud-init-19.4-2.fc32.noarch", + "compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch", + "compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch", + "compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch", + "coreutils-8.32-3.fc32.1.aarch64", + "coreutils-common-8.32-3.fc32.1.aarch64", + "cpio-2.13-4.fc32.aarch64", + "cracklib-2.9.6-22.fc32.aarch64", + "cracklib-dicts-2.9.6-22.fc32.aarch64", + "crypto-policies-20191128-5.gitcd267a5.fc32.noarch", + "crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch", + "cryptsetup-libs-2.3.0-1.fc32.aarch64", + "curl-7.69.1-1.fc32.aarch64", + "cyrus-sasl-lib-2.1.27-4.fc32.aarch64", + "dbus-1.12.16-4.fc32.aarch64", + "dbus-broker-22-1.fc32.aarch64", + "dbus-common-1.12.16-4.fc32.noarch", + "dbus-libs-1.12.16-4.fc32.aarch64", + "dbxtool-8-11.fc32.aarch64", + "dejavu-sans-fonts-2.37-7.fc32.noarch", + "deltarpm-3.6.2-5.fc32.aarch64", + "device-mapper-1.02.171-1.fc32.aarch64", + "device-mapper-libs-1.02.171-1.fc32.aarch64", + "dhcp-client-4.4.2-5.b1.fc32.aarch64", + "dhcp-common-4.4.2-5.b1.fc32.noarch", + "diffutils-3.7-4.fc32.aarch64", + "dnf-4.2.19-1.fc32.noarch", + "dnf-data-4.2.19-1.fc32.noarch", + "dnf-plugins-core-4.0.14-1.fc32.noarch", + "dracut-050-26.git20200316.fc32.aarch64", + "dracut-config-generic-050-26.git20200316.fc32.aarch64", + "e2fsprogs-1.45.5-3.fc32.aarch64", + "e2fsprogs-libs-1.45.5-3.fc32.aarch64", + "efi-filesystem-4-4.fc32.noarch", + "efibootmgr-16-7.fc32.aarch64", + "efivar-libs-37-7.fc32.aarch64", + "elfutils-debuginfod-client-0.179-1.fc32.aarch64", + "elfutils-default-yama-scope-0.179-1.fc32.noarch", + "elfutils-libelf-0.179-1.fc32.aarch64", + "elfutils-libs-0.179-1.fc32.aarch64", + "expat-2.2.8-2.fc32.aarch64", + "fedora-gpg-keys-32-1.noarch", + "fedora-release-32-1.noarch", + "fedora-release-common-32-1.noarch", + "fedora-repos-32-1.noarch", + "file-5.38-2.fc32.aarch64", + "file-libs-5.38-2.fc32.aarch64", + "filesystem-3.14-2.fc32.aarch64", + "findutils-4.7.0-3.fc32.aarch64", + "fipscheck-1.5.0-8.fc32.aarch64", + "fipscheck-lib-1.5.0-8.fc32.aarch64", + "firewalld-0.8.2-2.fc32.noarch", + "firewalld-filesystem-0.8.2-2.fc32.noarch", + "fonts-filesystem-2.0.3-1.fc32.noarch", + "fuse-libs-2.9.9-9.fc32.aarch64", + "gawk-5.0.1-7.fc32.aarch64", + "gdbm-libs-1.18.1-3.fc32.aarch64", + "geolite2-city-20191217-2.fc32.noarch", + "geolite2-country-20191217-2.fc32.noarch", + "gettext-0.20.1-4.fc32.aarch64", + "gettext-libs-0.20.1-4.fc32.aarch64", + "glib2-2.64.1-1.fc32.aarch64", + "glibc-2.31-2.fc32.aarch64", + "glibc-common-2.31-2.fc32.aarch64", + "glibc-langpack-en-2.31-2.fc32.aarch64", + "gmp-6.1.2-13.fc32.aarch64", + "gnupg2-2.2.19-1.fc32.aarch64", + "gnupg2-smime-2.2.19-1.fc32.aarch64", + "gnutls-3.6.13-1.fc32.aarch64", + "gobject-introspection-1.64.1-1.fc32.aarch64", + "gpg-pubkey-12c944d0-5d5156ab", + "gpgme-1.13.1-6.fc32.aarch64", + "grep-3.3-4.fc32.aarch64", + "groff-base-1.22.3-21.fc32.aarch64", + "grub2-common-2.04-12.fc32.noarch", + "grub2-efi-aa64-2.04-12.fc32.aarch64", + "grub2-tools-2.04-12.fc32.aarch64", + "grub2-tools-minimal-2.04-12.fc32.aarch64", + "grubby-8.40-40.fc32.aarch64", + "gzip-1.10-2.fc32.aarch64", + "hostname-3.23-2.fc32.aarch64", + "hwdata-0.334-1.fc32.noarch", + "ima-evm-utils-1.2.1-3.fc32.aarch64", + "initscripts-10.02-3.fc32.aarch64", + "ipcalc-0.4.0-2.fc32.aarch64", + "iproute-5.5.0-1.fc32.aarch64", + "iproute-tc-5.5.0-1.fc32.aarch64", + "ipset-7.6-1.fc32.aarch64", + "ipset-libs-7.6-1.fc32.aarch64", + "iptables-libs-1.8.4-7.fc32.aarch64", + "iptables-nft-1.8.4-7.fc32.aarch64", + "iputils-20190515-5.fc32.aarch64", + "jansson-2.12-5.fc32.aarch64", + "json-c-0.13.1-9.fc32.aarch64", + "kbd-2.2.0-1.fc32.aarch64", + "kbd-legacy-2.2.0-1.fc32.noarch", + "kbd-misc-2.2.0-1.fc32.noarch", + "kernel-5.6.6-300.fc32.aarch64", + "kernel-core-5.6.6-300.fc32.aarch64", + "kernel-modules-5.6.6-300.fc32.aarch64", + "keyutils-libs-1.6-4.fc32.aarch64", + "kmod-27-1.fc32.aarch64", + "kmod-libs-27-1.fc32.aarch64", + "kpartx-0.8.2-3.fc32.aarch64", + "krb5-libs-1.18-1.fc32.aarch64", + "langpacks-core-en-3.0-3.fc32.noarch", + "langpacks-core-font-en-3.0-3.fc32.noarch", + "langpacks-en-3.0-3.fc32.noarch", + "less-551-3.fc32.aarch64", + "libX11-1.6.9-3.fc32.aarch64", + "libX11-common-1.6.9-3.fc32.noarch", + "libXau-1.0.9-3.fc32.aarch64", + "libXext-1.3.4-3.fc32.aarch64", + "libXfixes-5.0.3-11.fc32.aarch64", + "libXinerama-1.1.4-5.fc32.aarch64", + "libXrandr-1.5.2-3.fc32.aarch64", + "libXrender-0.9.10-11.fc32.aarch64", + "libacl-2.2.53-5.fc32.aarch64", + "libarchive-3.4.2-1.fc32.aarch64", + "libargon2-20171227-4.fc32.aarch64", + "libassuan-2.5.3-3.fc32.aarch64", + "libattr-2.4.48-8.fc32.aarch64", + "libbasicobjects-0.1.1-44.fc32.aarch64", + "libblkid-2.35.1-7.fc32.aarch64", + "libbrotli-1.0.7-10.fc32.aarch64", + "libcap-2.26-7.fc32.aarch64", + "libcap-ng-0.7.10-2.fc32.aarch64", + "libcbor-0.5.0-7.fc32.aarch64", + "libcollection-0.7.0-44.fc32.aarch64", + "libcom_err-1.45.5-3.fc32.aarch64", + "libcomps-0.1.14-4.fc32.aarch64", + "libcroco-0.6.13-3.fc32.aarch64", + "libcurl-7.69.1-1.fc32.aarch64", + "libdb-5.3.28-40.fc32.aarch64", + "libdb-utils-5.3.28-40.fc32.aarch64", + "libdhash-0.5.0-44.fc32.aarch64", + "libdnf-0.45.0-3.fc32.aarch64", + "libdrm-2.4.100-2.fc32.aarch64", + "libedit-3.1-32.20191231cvs.fc32.aarch64", + "libevent-2.1.8-8.fc32.aarch64", + "libfdisk-2.35.1-7.fc32.aarch64", + "libfdt-1.6.0-1.fc32.aarch64", + "libffi-3.1-24.fc32.aarch64", + "libfido2-1.3.1-1.fc32.aarch64", + "libgcc-10.0.1-0.11.fc32.aarch64", + "libgcrypt-1.8.5-3.fc32.aarch64", + "libgomp-10.0.1-0.11.fc32.aarch64", + "libgpg-error-1.36-3.fc32.aarch64", + "libidn2-2.3.0-2.fc32.aarch64", + "libini_config-1.3.1-44.fc32.aarch64", + "libkcapi-1.1.5-2.fc32.aarch64", + "libkcapi-hmaccalc-1.1.5-2.fc32.aarch64", + "libksba-1.3.5-11.fc32.aarch64", + "libldb-2.1.1-1.fc32.aarch64", + "libmaxminddb-1.3.2-2.fc32.aarch64", + "libmetalink-0.1.3-10.fc32.aarch64", + "libmnl-1.0.4-11.fc32.aarch64", + "libmodulemd-2.9.1-1.fc32.aarch64", + "libmount-2.35.1-7.fc32.aarch64", + "libndp-1.7-5.fc32.aarch64", + "libnetfilter_conntrack-1.0.7-4.fc32.aarch64", + "libnfnetlink-1.0.1-17.fc32.aarch64", + "libnfsidmap-2.4.3-0.fc32.aarch64", + "libnftnl-1.1.5-2.fc32.aarch64", + "libnghttp2-1.40.0-2.fc32.aarch64", + "libnl3-3.5.0-2.fc32.aarch64", + "libnsl2-1.2.0-6.20180605git4a062cf.fc32.aarch64", + "libpath_utils-0.2.1-44.fc32.aarch64", + "libpcap-1.9.1-3.fc32.aarch64", + "libpciaccess-0.16-2.fc32.aarch64", + "libpipeline-1.5.2-2.fc32.aarch64", + "libpsl-0.21.0-4.fc32.aarch64", + "libpwquality-1.4.2-2.fc32.aarch64", + "libref_array-0.1.5-44.fc32.aarch64", + "librepo-1.11.1-4.fc32.aarch64", + "libreport-filesystem-2.12.0-3.fc32.noarch", + "libseccomp-2.4.2-3.fc32.aarch64", + "libsecret-0.20.2-2.fc32.aarch64", + "libselinux-3.0-3.fc32.aarch64", + "libselinux-utils-3.0-3.fc32.aarch64", + "libsemanage-3.0-3.fc32.aarch64", + "libsepol-3.0-3.fc32.aarch64", + "libsigsegv-2.11-10.fc32.aarch64", + "libsmartcols-2.35.1-7.fc32.aarch64", + "libsolv-0.7.11-2.fc32.aarch64", + "libss-1.45.5-3.fc32.aarch64", + "libssh-0.9.3-2.fc32.aarch64", + "libssh-config-0.9.3-2.fc32.noarch", + "libsss_autofs-2.2.3-13.fc32.aarch64", + "libsss_certmap-2.2.3-13.fc32.aarch64", + "libsss_idmap-2.2.3-13.fc32.aarch64", + "libsss_nss_idmap-2.2.3-13.fc32.aarch64", + "libsss_sudo-2.2.3-13.fc32.aarch64", + "libstdc++-10.0.1-0.11.fc32.aarch64", + "libtalloc-2.3.1-2.fc32.aarch64", + "libtasn1-4.16.0-1.fc32.aarch64", + "libtdb-1.4.3-2.fc32.aarch64", + "libtevent-0.10.2-2.fc32.aarch64", + "libtextstyle-0.20.1-4.fc32.aarch64", + "libtirpc-1.2.5-1.rc2.fc32.aarch64", + "libunistring-0.9.10-7.fc32.aarch64", + "libusbx-1.0.23-1.fc32.aarch64", + "libuser-0.62-24.fc32.aarch64", + "libutempter-1.1.6-18.fc32.aarch64", + "libuuid-2.35.1-7.fc32.aarch64", + "libverto-0.3.0-9.fc32.aarch64", + "libxcb-1.13.1-4.fc32.aarch64", + "libxcrypt-4.4.16-1.fc32.aarch64", + "libxkbcommon-0.10.0-2.fc32.aarch64", + "libxml2-2.9.10-3.fc32.aarch64", + "libyaml-0.2.2-3.fc32.aarch64", + "libzstd-1.4.4-2.fc32.aarch64", + "linux-atm-libs-2.5.1-26.fc32.aarch64", + "linux-firmware-20200316-106.fc32.noarch", + "linux-firmware-whence-20200316-106.fc32.noarch", + "lmdb-libs-0.9.24-1.fc32.aarch64", + "lua-libs-5.3.5-7.fc32.aarch64", + "lz4-libs-1.9.1-2.fc32.aarch64", + "man-db-2.9.0-2.fc32.aarch64", + "mkpasswd-5.5.6-1.fc32.aarch64", + "mokutil-0.3.0-15.fc32.aarch64", + "mpfr-4.0.2-3.fc32.aarch64", + "ncurses-6.1-15.20191109.fc32.aarch64", + "ncurses-base-6.1-15.20191109.fc32.noarch", + "ncurses-libs-6.1-15.20191109.fc32.aarch64", + "net-tools-2.0-0.56.20160912git.fc32.aarch64", + "nettle-3.5.1-5.fc32.aarch64", + "nftables-0.9.3-2.fc32.aarch64", + "npth-1.6-4.fc32.aarch64", + "openldap-2.4.47-4.fc32.aarch64", + "openssh-8.2p1-2.fc32.aarch64", + "openssh-clients-8.2p1-2.fc32.aarch64", + "openssh-server-8.2p1-2.fc32.aarch64", + "openssl-1.1.1d-7.fc32.aarch64", + "openssl-libs-1.1.1d-7.fc32.aarch64", + "openssl-pkcs11-0.4.10-5.fc32.aarch64", + "os-prober-1.77-4.fc32.aarch64", + "p11-kit-0.23.20-1.fc32.aarch64", + "p11-kit-trust-0.23.20-1.fc32.aarch64", + "pam-1.3.1-24.fc32.aarch64", + "parted-3.3-3.fc32.aarch64", + "passwd-0.80-8.fc32.aarch64", + "pcre-8.44-1.fc32.aarch64", + "pcre2-10.34-9.fc32.aarch64", + "pcre2-syntax-10.34-9.fc32.noarch", + "pigz-2.4-6.fc32.aarch64", + "pinentry-1.1.0-7.fc32.aarch64", + "pixman-0.38.4-2.fc32.aarch64", + "plymouth-0.9.4-14.20200325gite31c81f.fc32.aarch64", + "plymouth-core-libs-0.9.4-14.20200325gite31c81f.fc32.aarch64", + "plymouth-scripts-0.9.4-14.20200325gite31c81f.fc32.aarch64", + "policycoreutils-3.0-2.fc32.aarch64", + "polkit-libs-0.116-7.fc32.aarch64", + "popt-1.16-19.fc32.aarch64", + "procps-ng-3.3.15-7.fc32.aarch64", + "psmisc-23.3-3.fc32.aarch64", + "publicsuffix-list-dafsa-20190417-3.fc32.noarch", + "python-pip-wheel-19.3.1-2.fc32.noarch", + "python-setuptools-wheel-41.6.0-2.fc32.noarch", + "python-unversioned-command-3.8.2-2.fc32.noarch", + "python3-3.8.2-2.fc32.aarch64", + "python3-attrs-19.3.0-2.fc32.noarch", + "python3-audit-3.0-0.19.20191104git1c2f876.fc32.aarch64", + "python3-babel-2.8.0-2.fc32.noarch", + "python3-cffi-1.14.0-1.fc32.aarch64", + "python3-chardet-3.0.4-15.fc32.noarch", + "python3-configobj-5.0.6-20.fc32.noarch", + "python3-cryptography-2.8-3.fc32.aarch64", + "python3-dateutil-2.8.0-8.fc32.noarch", + "python3-dbus-1.2.16-1.fc32.aarch64", + "python3-decorator-4.4.0-6.fc32.noarch", + "python3-distro-1.4.0-5.fc32.noarch", + "python3-dnf-4.2.19-1.fc32.noarch", + "python3-dnf-plugins-core-4.0.14-1.fc32.noarch", + "python3-firewall-0.8.2-2.fc32.noarch", + "python3-gobject-base-3.36.0-2.fc32.aarch64", + "python3-gpg-1.13.1-6.fc32.aarch64", + "python3-hawkey-0.45.0-3.fc32.aarch64", + "python3-idna-2.8-6.fc32.noarch", + "python3-jinja2-2.11.1-1.fc32.noarch", + "python3-jsonpatch-1.21-11.fc32.noarch", + "python3-jsonpointer-1.10-19.fc32.noarch", + "python3-jsonschema-3.2.0-2.fc32.noarch", + "python3-jwt-1.7.1-7.fc32.noarch", + "python3-libcomps-0.1.14-4.fc32.aarch64", + "python3-libdnf-0.45.0-3.fc32.aarch64", + "python3-libs-3.8.2-2.fc32.aarch64", + "python3-libselinux-3.0-3.fc32.aarch64", + "python3-libsemanage-3.0-3.fc32.aarch64", + "python3-markupsafe-1.1.1-5.fc32.aarch64", + "python3-nftables-0.9.3-2.fc32.aarch64", + "python3-oauthlib-3.0.2-5.fc32.noarch", + "python3-pip-19.3.1-2.fc32.noarch", + "python3-ply-3.11-7.fc32.noarch", + "python3-policycoreutils-3.0-2.fc32.noarch", + "python3-prettytable-0.7.2-22.fc32.noarch", + "python3-pycparser-2.19-2.fc32.noarch", + "python3-pyrsistent-0.15.7-2.fc32.aarch64", + "python3-pyserial-3.4-7.fc32.noarch", + "python3-pysocks-1.7.1-4.fc32.noarch", + "python3-pytz-2019.3-2.fc32.noarch", + "python3-pyyaml-5.3.1-1.fc32.aarch64", + "python3-requests-2.22.0-8.fc32.noarch", + "python3-rpm-4.15.1-2.fc32.1.aarch64", + "python3-setools-4.3.0-1.fc32.aarch64", + "python3-setuptools-41.6.0-2.fc32.noarch", + "python3-six-1.14.0-2.fc32.noarch", + "python3-slip-0.6.4-19.fc32.noarch", + "python3-slip-dbus-0.6.4-19.fc32.noarch", + "python3-unbound-1.9.6-2.fc32.aarch64", + "python3-urllib3-1.25.7-3.fc32.noarch", + "qemu-guest-agent-4.2.0-7.fc32.aarch64", + "qrencode-libs-4.0.2-5.fc32.aarch64", + "readline-8.0-4.fc32.aarch64", + "rootfiles-8.1-27.fc32.noarch", + "rpm-4.15.1-2.fc32.1.aarch64", + "rpm-build-libs-4.15.1-2.fc32.1.aarch64", + "rpm-libs-4.15.1-2.fc32.1.aarch64", + "rpm-plugin-selinux-4.15.1-2.fc32.1.aarch64", + "rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.aarch64", + "rpm-sign-libs-4.15.1-2.fc32.1.aarch64", + "sed-4.5-5.fc32.aarch64", + "selinux-policy-3.14.5-32.fc32.noarch", + "selinux-policy-targeted-3.14.5-32.fc32.noarch", + "setup-2.13.6-2.fc32.noarch", + "shadow-utils-4.8.1-2.fc32.aarch64", + "shared-mime-info-1.15-3.fc32.aarch64", + "shim-aa64-15-8.aarch64", + "spice-vdagent-0.20.0-2.fc32.aarch64", + "sqlite-libs-3.31.1-1.fc32.aarch64", + "sssd-client-2.2.3-13.fc32.aarch64", + "sssd-common-2.2.3-13.fc32.aarch64", + "sssd-kcm-2.2.3-13.fc32.aarch64", + "sssd-nfs-idmap-2.2.3-13.fc32.aarch64", + "sudo-1.9.0-0.1.b4.fc32.aarch64", + "systemd-245.4-1.fc32.aarch64", + "systemd-libs-245.4-1.fc32.aarch64", + "systemd-pam-245.4-1.fc32.aarch64", + "systemd-rpm-macros-245.4-1.fc32.noarch", + "systemd-udev-245.4-1.fc32.aarch64", + "trousers-0.3.13-13.fc31.aarch64", + "trousers-lib-0.3.13-13.fc31.aarch64", + "tss2-1331-4.fc32.aarch64", + "tzdata-2019c-3.fc32.noarch", + "unbound-libs-1.9.6-2.fc32.aarch64", + "util-linux-2.35.1-7.fc32.aarch64", + "vim-minimal-8.2.525-1.fc32.aarch64", + "which-2.21-19.fc32.aarch64", + "whois-nls-5.5.6-1.fc32.noarch", + "xen-libs-4.13.0-6.fc32.aarch64", + "xen-licenses-4.13.0-6.fc32.aarch64", + "xfsprogs-5.4.0-3.fc32.aarch64", + "xkeyboard-config-2.29-1.fc32.noarch", + "xz-5.2.5-1.fc32.aarch64", + "xz-libs-5.2.5-1.fc32.aarch64", + "yajl-2.1.0-14.fc32.aarch64", + "yum-4.2.19-1.fc32.noarch", + "zchunk-libs-1.1.5-2.fc32.aarch64", + "zlib-1.2.11-21.fc32.aarch64" + ], + "partition-table": "gpt", + "partition-table-id": "8DFDFF87-C96E-EA48-A3A6-9408F1F6B1EF", + "partitions": [ + { + "bootable": false, + "fstype": "vfat", + "label": "EFI\\ System", + "partuuid": "02C1E068-1D2F-4DA3-91FD-8DD76A955C9D", + "size": 498073600, + "start": 1048576, + "type": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B", + "uuid": "46BB-8120" + }, + { + "bootable": false, + "fstype": "ext4", + "label": null, + "partuuid": "8D760010-FAAE-46D1-9E5B-4A2EAC5030CD", + "size": 1647296000, + "start": 500170752, + "type": "0FC63DAF-8483-4772-8E79-3D69D8477DE4", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:996:993::/var/lib/chrony:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "redhat:x:1000:1000::/home/redhat:/bin/bash", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:998:995:systemd Core Dumper:/:/sbin/nologin", + "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "systemd-timesync:x:997:994:systemd Time Synchronization:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:999:999:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/boot/System.map-5.6.6-300.fc32.aarch64": ".M.......", + "/boot/efi/EFI": ".M.......", + "/boot/efi/EFI/fedora/grubaa64.efi": ".......T.", + "/boot/initramfs-5.6.6-300.fc32.aarch64.img": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/lib/modules/5.6.6-300.fc32.aarch64/modules.builtin.alias.bin": ".......T.", + "/proc": ".M.......", + "/sys": ".M.......", + "/var/log/btmp": ".M.......", + "/var/log/journal": ".M....G..", + "/var/log/lastlog": ".M....G.." + }, + "missing": [] + }, + "services-disabled": [ + "arp-ethers.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "console-getty.service", + "debug-shell.service", + "exit.target", + "halt.target", + "kexec.target", + "loadmodules.service", + "man-db-restart-cache-update.service", + "nftables.service", + "nis-domainname.service", + "poweroff.target", + "proc-sys-fs-binfmt_misc.mount", + "rdisc.service", + "remote-cryptsetup.target", + "runlevel0.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-boot-check-no-failures.service", + "systemd-network-generator.service", + "systemd-networkd-wait-online.service", + "systemd-networkd.service", + "systemd-networkd.socket", + "systemd-pstore.service", + "systemd-resolved.service", + "systemd-time-wait-sync.service", + "systemd-timesyncd.service", + "tcsd.service" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "cloud-init.service", + "ctrl-alt-del.target", + "dbus-broker.service", + "dbus-org.fedoraproject.FirewallD1.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dbus.service", + "dbus.socket", + "dbxtool.service", + "dnf-makecache.timer", + "firewalld.service", + "fstrim.timer", + "getty@.service", + "import-state.service", + "qemu-guest-agent.service", + "reboot.target", + "remote-fs.target", + "runlevel6.target", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "unbound-anchor.timer" + ] + } +} \ No newline at end of file diff --git a/test/cases/fedora_32-aarch64-qcow2-boot.json b/test/cases/fedora_32-aarch64-qcow2-boot.json new file mode 100644 index 0000000..4c10782 --- /dev/null +++ b/test/cases/fedora_32-aarch64-qcow2-boot.json @@ -0,0 +1,9326 @@ +{ + "boot": { + "type": "qemu" + }, + "compose-request": { + "distro": "fedora-32", + "arch": "aarch64", + "image-type": "qcow2", + "repositories": [ + { + "baseurl": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ], + "filename": "disk.qcow2", + "blueprint": { + "name": "qcow2-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:0042a3d3b19152d0a16ee321cbe99208a2f4ebd009515c1f6f962a1d5f9cde26": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsmartcols-2.35.1-7.fc32.aarch64.rpm" + }, + "sha256:0055cc4eccd54df5b64c194618a26e894a0d61781c8d1f1f48687bfd296b15e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pyyaml-5.3.1-1.fc32.aarch64.rpm" + }, + "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm" + }, + "sha256:0175f5d1834c1cb4a1f44c9ae20960fa674f26add0b88f903407abf2f3d22f82": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_certmap-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:0178be1e5d6da8053061d29013d8fda8445d37eac908afbf4a2ca92faf950f2c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.aarch64.rpm" + }, + "sha256:023d3d7be30607410a2357b50b8ef3f94a07baf2842bfba0421f803600ec605f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.aarch64.rpm" + }, + "sha256:026212c277c72facfd48901978afded50fc4050aedaa06a24e5e57875ce48c32": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/parted-3.3-3.fc32.aarch64.rpm" + }, + "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-six-1.14.0-2.fc32.noarch.rpm" + }, + "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/langpacks-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/geolite2-country-20191217-2.fc32.noarch.rpm" + }, + "sha256:04bc54c723bfa9e1b6bb6567e9d8cd3e1ed389fc2be97259b971a8cbfe5f95e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/efibootmgr-16-7.fc32.aarch64.rpm" + }, + "sha256:05121688770a80889f1e1d0594a5b14d6ac30cc6fe4d431e3aa829f2290ea973": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_idmap-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:056227b8324dbabe392ac9b3e8a28ae7fa1b630f5d06cc156e687b988a49c6bd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/polkit-0.116-7.fc32.aarch64.rpm" + }, + "sha256:067d98bda561e94f9f0bba60f691dc8ba4610434603f26cf6f4fa22677da8465": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-1.12.16-4.fc32.aarch64.rpm" + }, + "sha256:06d6f5d9909beb1cc6731dc6d5d86b9e7885285848bad8ef16079ad3e8824e0b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/j/json-c-0.13.1-9.fc32.aarch64.rpm" + }, + "sha256:07b37612b8e0f09885ad653f3dbd2ff95a65bfd8b21c69d1cc20a4f3dbc0ef32": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtalloc-2.3.1-2.fc32.aarch64.rpm" + }, + "sha256:081d831528796c3e5c47b89c363a0f530bf77e3e2e0098cd586d814bea9a12f0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cracklib-2.9.6-22.fc32.aarch64.rpm" + }, + "sha256:086552102da5fd978a4722ddd21381d432abb9f886cd97761d2efbff2c588791": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/man-db-2.9.0-2.fc32.aarch64.rpm" + }, + "sha256:092370d1e62096782f329944df0e7e01cc49bbc0fa4071d63f352cf45e89e5bc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dbus-1.2.16-1.fc32.aarch64.rpm" + }, + "sha256:09a9dd8c3ae4fe9a9817c71c4b2af35f2d7e1dbf2c9f4659028ce69a5d2f2d02": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgomp-10.0.1-0.11.fc32.aarch64.rpm" + }, + "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm" + }, + "sha256:0a2eadd29cc53df942d3f0acc016b281efa4347fc2e9de1d7b8b61d9c5f0d894": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcap-2.26-7.fc32.aarch64.rpm" + }, + "sha256:0a31a882e4ac33233b36e2c61cc09125a936f54877137d5bb2ddc1ca8a5f9a12": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.aarch64.rpm" + }, + "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm" + }, + "sha256:0c30a7fd9f69ad808183afa0814e363689ff63e7a82856a790e5fa111c031b96": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.aarch64.rpm" + }, + "sha256:0c8f8925dacc9a0e57b4446d5f67d9041bfc0a939191a7606ba93b74512a97d1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-release-cloud-32-1.noarch.rpm" + }, + "sha256:0dcc4568055843acf5571553731d57a0d042b6602e6932bc4fe88718597c2fbe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/file-5.38-2.fc32.aarch64.rpm" + }, + "sha256:10d828cc7803aca9b59e3bb9b52e0af45a2828250f1eab7f0fc08cdb981f191d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/alternatives-1.11-6.fc32.aarch64.rpm" + }, + "sha256:11004aa2821bdebfca77ab93e7ed405e0e93eb685850f5fb57b01762692ce155": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.aarch64.rpm" + }, + "sha256:11204917b909836508acff0df2499301d3b2f8f0a1c0e341de904ac9fb4bbedf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gpgme-1.13.1-6.fc32.aarch64.rpm" + }, + "sha256:13290758e03b977aed5e23b7ba9a01157b6802fd78baf75bc1fc184864e9e31e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/diffutils-3.7-4.fc32.aarch64.rpm" + }, + "sha256:15a8a718cb6f629474fec7756b4701430e14ff94aad6cf6fe20f3eb7174a7783": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsolv-0.7.11-2.fc32.aarch64.rpm" + }, + "sha256:15b2402e11402a6cb494bf7ea31ebf10bf1adb0759aab417e63d05916e56aa45": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/nettle-3.5.1-5.fc32.aarch64.rpm" + }, + "sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-policycoreutils-3.0-2.fc32.noarch.rpm" + }, + "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/linux-firmware-whence-20200316-106.fc32.noarch.rpm" + }, + "sha256:16902074f43963a360df42fec639f8b30ad29ee0d8a9799ac26ff0ba5c60e4cd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-audit-3.0-0.19.20191104git1c2f876.fc32.aarch64.rpm" + }, + "sha256:174a7c064ba48fdfc61ee5a091ec474dfbdb32a1a602cbe0776937c39e222663": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/groff-base-1.22.3-21.fc32.aarch64.rpm" + }, + "sha256:17f5c9a25bf0f952f6defa6a857e938bfc1f72c69217f666a537bf8f1daff5f8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnghttp2-1.40.0-2.fc32.aarch64.rpm" + }, + "sha256:18c188f63504b8cf3bc88d95de458a1eb216bca268378a6839618ef7468dc635": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/device-mapper-1.02.171-1.fc32.aarch64.rpm" + }, + "sha256:1a096ed78df5a9339c4b3c15372275a884a1124b048ffcfbdb768db881e47ab2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpwquality-1.4.2-2.fc32.aarch64.rpm" + }, + "sha256:1bc0bced158db1fdd71c8c9211a6fae4e351720b8156d98059f62a945f97cf72": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/polkit-pkla-compat-0.1-16.fc32.aarch64.rpm" + }, + "sha256:1befc4be3c3c72b3210e54f96f4334f268eaecdd3b77af7cadea0ef31f0e2ca9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/lua-libs-5.3.5-7.fc32.aarch64.rpm" + }, + "sha256:1c982f31133def3baea707e0d1f0fe4a014d2c8c5f20ac8d69362cff4f26d5e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libassuan-2.5.3-3.fc32.aarch64.rpm" + }, + "sha256:1ddaeb7c602005e75c0ea2603a533d692a94915a297b71e68a8e27327456c3d0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcbor-0.5.0-7.fc32.aarch64.rpm" + }, + "sha256:1e1e9900e9d3a2b8eb6684060672526948df2cb9f751e7d72cb4fa5bffe71747": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cloud-init-19.4-2.fc32.noarch.rpm" + }, + "sha256:1e533f7f64169288e90b3851e509cf1aedf4da0fe986288da53516b2b77ac77d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmount-2.35.1-7.fc32.aarch64.rpm" + }, + "sha256:1eb386a258cebf600319b1f18344b047c9182485936d96da9c2b1067ac1c1bba": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/psmisc-23.3-3.fc32.aarch64.rpm" + }, + "sha256:1ee4f732b1b4b237d7301219fc5c52b63c9ab9e77db746612852fef5610f69b7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libksba-1.3.5-11.fc32.aarch64.rpm" + }, + "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-release-32-1.noarch.rpm" + }, + "sha256:1fab76e36bbad6727634f2a8ce6e722c0e6ca814969948ffd6ce7250bc75e7f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_sudo-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:202d761caf4c9d4937c04388a7180d6687a79e8141136be0f7ecc3a54bf80594": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xz-5.2.5-1.fc32.aarch64.rpm" + }, + "sha256:20307d5a1d3fccfe8f64c8ea074c6a751dc36849c7495592989677fd01da9147": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbxtool-8-11.fc32.aarch64.rpm" + }, + "sha256:20f32df3b4961ef659a4822686978e0501fc5262e942046b53b24ed11e77476b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/v/vim-minimal-8.2.525-1.fc32.aarch64.rpm" + }, + "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-repos-32-1.noarch.rpm" + }, + "sha256:22954219a63638d7418204d818c01a0e3c914e2b2eb970f2e4638dcf5a7a5634": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libutempter-1.1.6-18.fc32.aarch64.rpm" + }, + "sha256:231cefc11eb5a9ac8f23bbd294cef0bf3a690040df3048e063f8a269f2db75f8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnl3-3.5.0-2.fc32.aarch64.rpm" + }, + "sha256:2356581880df7b8275896b18de24e432a362ee159fc3127f92476ffe8d0432fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmnl-1.0.4-11.fc32.aarch64.rpm" + }, + "sha256:2590d214d4986fa95653e7f83e67a81dbf822b621994a9ab867e7c377bc479c2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-common-2.31-2.fc32.aarch64.rpm" + }, + "sha256:25e6968493572c680d6f8cad03e591f6e1e0e6ce0d1fbe3648d4b64ba529491d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/u/util-linux-2.35.1-7.fc32.aarch64.rpm" + }, + "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm" + }, + "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dnf-plugins-core-4.0.14-1.fc32.noarch.rpm" + }, + "sha256:27a0d9447ef63c95a3182b32606e6de1bd17f2cfc7910a456fa43996db67833f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dhcp-client-4.4.2-5.b1.fc32.aarch64.rpm" + }, + "sha256:28892ae62cd1b4dadded523be8cb5f9e0fddeaa864919ee4b0dfad3bba8fd06f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgcc-10.0.1-0.11.fc32.aarch64.rpm" + }, + "sha256:291df16c0ae66fa5685cd033c84ae92765be4f4e17ce4936e47dc602ac6ff93e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libffi-3.1-24.fc32.aarch64.rpm" + }, + "sha256:29bcc2f3f85ca7bdc22178af3e16743f55353bd9f25fb4c748d8c9f7117fe56f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/policycoreutils-3.0-2.fc32.aarch64.rpm" + }, + "sha256:2bc82e132696d9daa4eef545ff3352d6eb588b9a1b9584e515d15a7c3d6471df": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libuuid-2.35.1-7.fc32.aarch64.rpm" + }, + "sha256:2bcf87d3ecdecab92bc2aacf2f1ec50aced0ed2958001cd8b297c80612edeb60": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/console-login-helper-messages-issuegen-0.17-2.fc32.noarch.rpm" + }, + "sha256:2c4d03577e8661920a7b64fcc68735b795288744f1b188512a96960143030474": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libzstd-1.4.4-2.fc32.aarch64.rpm" + }, + "sha256:2c9bf996e1550ed5ad42398187ee14d65315d13ec5c9e2eab32b8fed0743b1fc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtevent-0.10.2-2.fc32.aarch64.rpm" + }, + "sha256:2d7ad38e86f5109c732a32bf9bea612c4c674aba6ad4cca2d211d826edc7fd6f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libunistring-0.9.10-7.fc32.aarch64.rpm" + }, + "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm" + }, + "sha256:2dcee99ce05f5844438f827cf0cd1578f7863efb31c204bbc441cd2265ad9a7d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpath_utils-0.2.1-44.fc32.aarch64.rpm" + }, + "sha256:2f117f22ec79fed75752c69b7e1c70582bad93b55fb4a5b0dc2bca978bafce85": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.aarch64.rpm" + }, + "sha256:2f849fdf4588b1b4e86a008b6a82f30ff2ec1db1ae2bd21e067c6f910e4cb237": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/tar-1.32-4.fc32.aarch64.rpm" + }, + "sha256:30bf2e7deddad50a3054827c98e97adfd3ae1d24ae248980649db289198135a8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/passwd-0.80-8.fc32.aarch64.rpm" + }, + "sha256:3242e0ce48f95d7a271125cf1222b5af09e20fe85194623d95336e1c678bdee8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/trousers-0.3.13-13.fc31.aarch64.rpm" + }, + "sha256:32a00991ec85f0bf2a336e00033a0e70b0da963eb42d81bbad18a7a11f41d4eb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libs-3.8.2-2.fc32.aarch64.rpm" + }, + "sha256:3377ae652fbbd22f2c61815bfd1bb58185b5f57c194d9b0cce3056ab11522779": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/initscripts-10.02-3.fc32.aarch64.rpm" + }, + "sha256:33788835331bed7f75e5cd2126d8d75511211175c9ac6d93824baec1a546a28d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxml2-2.9.10-3.fc32.aarch64.rpm" + }, + "sha256:33ca43cf0714aef344a70be4cfa42322694cc975a2eeee0bf31325dbca7f2842": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.aarch64.rpm" + }, + "sha256:340a82cfe6a9d18933b99a4e001d7e54f7ab225fe5e7fb1a7f51cb1c675c7050": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libarchive-3.4.2-1.fc32.aarch64.rpm" + }, + "sha256:34efde201252afe93ec3af61af30c6d32cfbe5ecbdcecaf4667666f12482757d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.aarch64.rpm" + }, + "sha256:36a3ae11acb7916e932ff704a4527b126bb39f9e849072b16242719c8de11119": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-2.31-2.fc32.aarch64.rpm" + }, + "sha256:378b476e531108bc1944e1c27fa7e269bb10dfc84f5e0a7c2c1cb17d2f7f4280": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rsync-3.1.3-11.fc32.aarch64.rpm" + }, + "sha256:3882823d0eb18e0e8146584f4a32a4801961f6fdc09075607746317eba3265be": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-urllib3-1.25.7-3.fc32.noarch.rpm" + }, + "sha256:391faab010ca30610a14e0b3d54fbc0331be39bc831086fb877f8021fe4b171f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-oauthlib-3.0.2-5.fc32.noarch.rpm" + }, + "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm" + }, + "sha256:3c29cc12a25791c83c040def2df8f107b161ecc0cbf3965cad82f38a451c7963": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libldb-2.1.1-1.fc32.aarch64.rpm" + }, + "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm" + }, + "sha256:3d6ec574fe2c612bcc45395f7ee87c68f45016f005c6d7aeee6b37897f41b8d2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.aarch64.rpm" + }, + "sha256:3e25d33bea0d8de847f817b428fe92a6b02376634c7a6f0672bc668fa769869d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libedit-3.1-32.20191231cvs.fc32.aarch64.rpm" + }, + "sha256:3ea53f635b4f559b2bdb0e58d54dbfddc126b18abe23b46b94aecbf7c0d5132c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.aarch64.rpm" + }, + "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm" + }, + "sha256:400c91d4d6d1125ec891c16ea72aa4123fc4c96e02f8668a8ae6dbc27113d408": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.aarch64.rpm" + }, + "sha256:4139803076f102e2224b81b4f1da3f6d066b89e272201d2720557763f9acfcd5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.aarch64.rpm" + }, + "sha256:41c6a8ea4240f2fa6cea0333cc6d5f59731ac843398eb457c182e90af367783c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-245.4-1.fc32.aarch64.rpm" + }, + "sha256:435530a0b9a086018694034ce48e9589348fc66389d884977b400f2f74814ac8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdb-utils-5.3.28-40.fc32.aarch64.rpm" + }, + "sha256:45e2c1c76a0a0b6e1164c457307250a54a7de5905992b4351a84183c2e9f2633": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mkpasswd-5.5.6-1.fc32.aarch64.rpm" + }, + "sha256:4674c9871d3a70a005fc880d6ce1c0e56418192085dae8b5eb861003ef9a2c1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iproute-tc-5.5.0-1.fc32.aarch64.rpm" + }, + "sha256:46aa2a21a000eb70097a86788d853602f7db1238156f2364a802f0b37f0dc4e6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sssd-nfs-idmap-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:48381163a3f2c524697efc07538f040fde0b69d4e0fdcbe3bcfbc9924dd7d5dd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xz-libs-5.2.5-1.fc32.aarch64.rpm" + }, + "sha256:4860a733ca3f22089c6c283cbdcf53123a702d60b5bffdd4fe9d76826f91139a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-prettytable-0.7.2-22.fc32.noarch.rpm" + }, + "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dhcp-common-4.4.2-5.b1.fc32.noarch.rpm" + }, + "sha256:4940f6e26a93fe638667adb6e12969fe915b3a7b0cfeb58877dd6d7bccf46c1a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/expat-2.2.8-2.fc32.aarch64.rpm" + }, + "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm" + }, + "sha256:4c9d77d63ddc7dda0e018fc1c97d46025794e336e58d838a631fcc130dfa3b9b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jsonpatch-1.21-11.fc32.noarch.rpm" + }, + "sha256:500c4abc34ff58e6f06c7194034b2d68b618c5e6afa89b551ab74ef226e1880a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libidn2-2.3.0-2.fc32.aarch64.rpm" + }, + "sha256:50b7b06e94253cb4eacc1bfb68f8343b73cbd6dae427f8ad81367f7b8ebf58a8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gzip-1.10-2.fc32.aarch64.rpm" + }, + "sha256:50d91ca18b6cdc9395424b852d2828d1b75e2af318932a2442376d2a10819f6a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libusbx-1.0.23-1.fc32.aarch64.rpm" + }, + "sha256:52aa6e698e60cd360d5b9473fd1ebcc7e238e2125449bfdcc41b3e0fe13ae645": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-libs-245.4-1.fc32.aarch64.rpm" + }, + "sha256:532a58ae361b9c0bc147037fb96f338684b949bd4071b19bac322b8967c32a01": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnutls-3.6.13-1.fc32.aarch64.rpm" + }, + "sha256:54613bd9e0524bb992bd7779c80a24b12df744085031cb8f3defb5fae55ca0f5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/polkit-libs-0.116-7.fc32.aarch64.rpm" + }, + "sha256:55a343c96ac98c2bdf7bffdf5edc73f87b482a26b4a1a5e95670343dcec88fb8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/chrony-3.5-8.fc32.aarch64.rpm" + }, + "sha256:56b5cea4fa7f4d74d4d15aae43ab4827387dead4659bd2bede66c38057cd19e7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sudo-1.9.0-0.1.b4.fc32.aarch64.rpm" + }, + "sha256:56bc7a11331fe199a45bc23f348deff8cd5e1ee02c617b6ed429d61ba537fc8b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/librepo-1.11.1-4.fc32.aarch64.rpm" + }, + "sha256:5719dd2fb399cadec08b4ac41c794239d2a2de2f012faeb970ab90a07bba0084": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-babel-2.8.0-2.fc32.noarch.rpm" + }, + "sha256:57e1695da46f19db4a851304d57e7ce2409c287a88e9b52af0b76ed2252a4f98": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gettext-libs-0.20.1-4.fc32.aarch64.rpm" + }, + "sha256:57ee793c1f8dc1c9b58953b03d7041501eea326cefc4dda6de640761c60e31f8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssh-8.2p1-2.fc32.aarch64.rpm" + }, + "sha256:5875ba2d9b9ced8b2d2faa880b5f1811a89e17defe946ccf99b201790a0d2520": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcap-ng-0.7.10-2.fc32.aarch64.rpm" + }, + "sha256:58988a2b7213098503b56d5388eba1bf2a01b9ff027961acb1e9f55c47d237ad": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libfdisk-2.35.1-7.fc32.aarch64.rpm" + }, + "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dnf-plugins-core-4.0.14-1.fc32.noarch.rpm" + }, + "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:5adad0edfcf9c4415734d11a35a5c14cbf53eb32827572dd6af670fadcad7f78": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libkcapi-1.1.5-2.fc32.aarch64.rpm" + }, + "sha256:5b1cb1251cf7f65c50d9e3fcc11901fef5132dc177cce68a50918da481bb7629": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/npth-1.6-4.fc32.aarch64.rpm" + }, + "sha256:5b304375adf911d056b36dc35f22af027d9283efbaebcb8231f052aef3982f05": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/bash-5.0.11-2.fc32.aarch64.rpm" + }, + "sha256:5b7a135c35562e64344cc9f1ca37a5239649152cc055e14e7bf9bf84843eccab": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gmp-6.1.2-13.fc32.aarch64.rpm" + }, + "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/linux-firmware-20200316-106.fc32.noarch.rpm" + }, + "sha256:5cc385c1ca3df73a1dd7865159628a6b0ce186f8679c6bc95dda0b4791e4a9fc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fuse-libs-2.9.9-9.fc32.aarch64.rpm" + }, + "sha256:5ce4acbf25abd83a562f20e9a8a73b8860a766fb543d69ed9db6eb57fd75fc70": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sssd-kcm-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:5d52cffee2d5360db8cf7e6ed4b19a68de4a0ae55f42ed279d4fdb3a70bb72f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.aarch64.rpm" + }, + "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm" + }, + "sha256:5fa81b28d5100f987cd8d9317ccf200ec5b94d11ed3c8e2e90137b8981e71c61": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssh-clients-8.2p1-2.fc32.aarch64.rpm" + }, + "sha256:6007c88c459315a5e2ce354086bd0372a56e15cdd0dc14e6e889ab859f8d8365": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/readline-8.0-4.fc32.aarch64.rpm" + }, + "sha256:6028f86f132faee662e97075270f68e8125fd339c8689a2b661facd25c3b829b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libselinux-3.0-3.fc32.aarch64.rpm" + }, + "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm" + }, + "sha256:60c3cbbe546fb12db4c7164a51613ea9ae20f7199537cdf5145e828c78544493": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gettext-0.20.1-4.fc32.aarch64.rpm" + }, + "sha256:60c9a00d8c528ad5806a5fec20ed3ffb8ad195e9eb9bf5294893e8425be1fa9f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-broker-22-1.fc32.aarch64.rpm" + }, + "sha256:61c51596cc97f35177efe8dc5e2ca52d8fd528570f33c184497f419259b73c90": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-idna-2.8-6.fc32.noarch.rpm" + }, + "sha256:61e37e1df1e427525e6dd873d04fe2afc5e6825f2788a33b941e532e5a27ed7e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/NetworkManager-1.22.10-1.fc32.aarch64.rpm" + }, + "sha256:6221b210a7778432738994829f6c7e9f047940e53ee42a0e6458b91095b82756": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grub2-efi-aa64-2.04-12.fc32.aarch64.rpm" + }, + "sha256:62afc19040e8fbf7ac7946f02d67cdd19086658c3d8713a6c120482fd769537e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdnf-0.45.0-3.fc32.aarch64.rpm" + }, + "sha256:62bafab5a0f37fdec29ce38bc1d635e0a81ab165061faaf5d83f5246ca4e2db0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gawk-5.0.1-7.fc32.aarch64.rpm" + }, + "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:63cef561bcaadd5b9a1bf93b968f284ca76c3ad2b90b5c439b62456c0517164f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.aarch64.rpm" + }, + "sha256:645f82cf62da25742cab5e8ffd1f764301b84ab19710d9f3fb3aff1cb57ffdc6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jinja2-2.11.1-1.fc32.noarch.rpm" + }, + "sha256:64b64bab720df9dd7fd37ebf80a07795a95ac11e640eda3209b6517dcd7133e5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxcrypt-4.4.16-1.fc32.aarch64.rpm" + }, + "sha256:654a9a9997c975998e1cb5d9250cd34b9d9d4d69f43c9282e67ad4d38fa2bcdf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/u/unbound-libs-1.9.6-2.fc32.aarch64.rpm" + }, + "sha256:6615aae3def0c49910e43e2d69f7ae8852694953dceb4b6235b5cf4099296d70": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jsonpointer-1.10-19.fc32.noarch.rpm" + }, + "sha256:6837a13f3c643b5da33bd694efc4e95f54b5cc5e15de61884644378367d55804": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glib2-2.64.1-1.fc32.aarch64.rpm" + }, + "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm" + }, + "sha256:6890a9545194ad6cf1b0c58e5273132171a9ced9cb665a1442aa62b6b6d3d2ea": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jsonschema-3.2.0-2.fc32.noarch.rpm" + }, + "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/langpacks-core-font-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:6bc574a7f67dc28909f84c05bfc3dfeeac04c088f809032d75313aac022f6064": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libndp-1.7-5.fc32.aarch64.rpm" + }, + "sha256:6ef55c2aa000adea432676010756cf69e8851587ad17277b21bde362e369bf3e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libargon2-20171227-4.fc32.aarch64.rpm" + }, + "sha256:6f7b4c0efee821ea122401d350274334c6ef2d62dcacbe40942a00b162b6025b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libuser-0.62-24.fc32.aarch64.rpm" + }, + "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm" + }, + "sha256:6fcaddc0fde4e23d6650cd46b3763903c7b693afa69aad52fdf87a8563aa5f84": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssh-server-8.2p1-2.fc32.aarch64.rpm" + }, + "sha256:7149be5bd74792181003b872a9bc636157f4b795b12374c0857fb7271f2567ac": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libseccomp-2.4.2-3.fc32.aarch64.rpm" + }, + "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm" + }, + "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm" + }, + "sha256:7417889b8455ba87230fd5a987fe160d86de8250b87d7ae9bbcba90c32053172": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre2-10.34-9.fc32.aarch64.rpm" + }, + "sha256:7684be07a8e054660705f8d6b1522d9a829be6614293096dc7b871682e445709": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kmod-libs-27-1.fc32.aarch64.rpm" + }, + "sha256:77297d07807ddcb85bad6fd788c6f1692af47d00ad27305f3e2217e34e81f538": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pigz-2.4-6.fc32.aarch64.rpm" + }, + "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:78fb24703a4bafd4eb4ae0e065abf9111a127774ac74b1dc3a25d385c0dae1a0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/NetworkManager-libnm-1.22.10-1.fc32.aarch64.rpm" + }, + "sha256:79410f2d954c0a380a0b67bc965982ac1645c0365060cf8ba106db74b0b339f4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kbd-2.2.0-1.fc32.aarch64.rpm" + }, + "sha256:79defc84763baec2190da8941221abfa002d6f6c9e8c3486e2c492389fca2a57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.aarch64.rpm" + }, + "sha256:7bd78f630f6ed96cd08942330f4dad8bfb8d2d7961262ee942411e501a1aefdd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cpio-2.13-4.fc32.aarch64.rpm" + }, + "sha256:7bd98aa2d554f06ab525320ebf628a6e002011462e71a47337676a2c99de5aec": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libssh-0.9.3-2.fc32.aarch64.rpm" + }, + "sha256:7bfb33bfa3c3a952c54cb61b7f7c7047c1fd91e8e334f53f54faea6f34e6c0bb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdb-5.3.28-40.fc32.aarch64.rpm" + }, + "sha256:7c38b938c3d35cfee1ad11d5d09c3c6a4f208b065a25b2a3556006f04f2608b9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iproute-5.5.0-1.fc32.aarch64.rpm" + }, + "sha256:7cac868a4b1ac9c380192a31a45a314613af3f958aaf2b778642667dc73bc182": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsecret-0.20.2-2.fc32.aarch64.rpm" + }, + "sha256:7d5d62696fc69bb890912be71c05e92496129f198838cb56d349a8fc700a85a6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.aarch64.rpm" + }, + "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm" + }, + "sha256:7f667fb609062e966720bf1bb1fa97a91ca245925c68e36d2770caba57aa4db2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.aarch64.rpm" + }, + "sha256:7fe5838c895cd1158a6ae2afb3794e79e393d6701330e1109592e6b45f4bd876": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.aarch64.rpm" + }, + "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:81b6181b947d50e0a1ea681298417e552421d6714900d07a34dc25899e5c9f60": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-configobj-5.0.6-20.fc32.noarch.rpm" + }, + "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/geolite2-city-20191217-2.fc32.noarch.rpm" + }, + "sha256:82bd171ac3f9a08c44e8144297a4dd9cd2567a916065a57eb656330e2b4e007f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdhash-0.5.0-44.fc32.aarch64.rpm" + }, + "sha256:82d2eaad75cf45da9773298344dcbbaebb4da5b67526a6c43bc67d3f84d98616": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-setools-4.3.0-1.fc32.aarch64.rpm" + }, + "sha256:831fcc64c103f60608b08f4f47c2b7b5b43571cef7576b9e549e6ae001434da5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtextstyle-0.20.1-4.fc32.aarch64.rpm" + }, + "sha256:836a45edfd4e2cda0b6bac254b2e6225aad36f9bae0f96f2fe7da42896db0dae": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsigsegv-2.11-10.fc32.aarch64.rpm" + }, + "sha256:84313c8f10f91d10e4f734c3a605b0a771d2faa72bf43deeed60a4cf3606a0da": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libselinux-3.0-3.fc32.aarch64.rpm" + }, + "sha256:844ee747d24d934104398be60747b407d19c8106ead11b06fe92fcc62bd765fc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-cffi-1.14.0-1.fc32.aarch64.rpm" + }, + "sha256:857330a729697c1b6e8d86550391f1abf4db87d5ffeffeb5f00065fa8be85cbd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-3.8.2-2.fc32.aarch64.rpm" + }, + "sha256:85be4f8732fed73e473ea61635b582ecd0e46709a7c2c3c1a8f25d0709041780": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/console-login-helper-messages-motdgen-0.17-2.fc32.noarch.rpm" + }, + "sha256:85dc7962af97e86a655b8ec5d5276e511f50b1d4abe624f4d8cb0d784007e342": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.aarch64.rpm" + }, + "sha256:86959d2fd51c4d52fa5fcdf91c226ffdece5960299c15f29adc2a5c0bf05397b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-libs-1.12.16-4.fc32.aarch64.rpm" + }, + "sha256:876c2450443ab68948b045721202ca193077876b67c2e85f9dd427452ef0c4d5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/findutils-4.7.0-3.fc32.aarch64.rpm" + }, + "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fonts-filesystem-2.0.3-1.fc32.noarch.rpm" + }, + "sha256:87f6173e57d5d24c601047f747dfcf90dedc1d05250bfc6f06567d8ca35f895b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/console-login-helper-messages-profile-0.17-2.fc32.noarch.rpm" + }, + "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/langpacks-core-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:8961e2f35093845b7498c03f1a9776f7c49f7d9d057f56b0774f470b8e8179ff": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/coreutils-8.32-3.fc32.1.aarch64.rpm" + }, + "sha256:8b20ec83c7ff085d0f27c7af0a87dc49bacdf65d52b61119819ea14862eff91c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iputils-20190515-5.fc32.aarch64.rpm" + }, + "sha256:8c545e3282deed08d36bb138f1ba15d02dfd1066f46f45582e24b6dc5b07cb6b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-libelf-0.179-1.fc32.aarch64.rpm" + }, + "sha256:8d08e12adb541773aa8073a1aa6b02fbbd8539fe3597a60ac934732930cd5981": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/coreutils-common-8.32-3.fc32.1.aarch64.rpm" + }, + "sha256:8db16495c82aeba17b61896e6414f2ce212088370e88cf73b8999bf2317c015c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/net-tools-2.0-0.56.20160912git.fc32.aarch64.rpm" + }, + "sha256:8e768615a238b08e3fd0857f53e7acf5c5c4e3736dc03824179429a4d848de61": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kpartx-0.8.2-3.fc32.aarch64.rpm" + }, + "sha256:8f4be33cb040f081bb1f863b92e94ac7838af743cb5a0ce9d8c8ec9a611f71a6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/popt-1.16-19.fc32.aarch64.rpm" + }, + "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dejavu-sans-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:91ab783e9eb00d5baba65989c86c3d742033bd2306ff7adb0b78185f28d2ca86": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.aarch64.rpm" + }, + "sha256:91cd21ca1f5b881a78e9c0a6dd3cdad7401f7216a1ab3acbe9337d8e3e054a5e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libselinux-utils-3.0-3.fc32.aarch64.rpm" + }, + "sha256:91e35b3750f5029be019542a4143cf00de68559b9ab6ae6df2c8f7ea6e60acd9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/tss2-1331-4.fc32.aarch64.rpm" + }, + "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm" + }, + "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-distro-1.4.0-5.fc32.noarch.rpm" + }, + "sha256:93c5fe6589243bff8f4d6934d82616a4cce0f30d071c513cc56f8e53bfc19d17": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcom_err-1.45.5-3.fc32.aarch64.rpm" + }, + "sha256:94d02790ff430efebbfc12ca2c2029c66e1691b70baf7cf45159fb8464d38e56": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mpfr-4.0.2-3.fc32.aarch64.rpm" + }, + "sha256:95581bd0421b0fddf94b046e0bf8f13d3ce3d797acd5292d87127ed9e9505d80": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libbrotli-1.0.7-10.fc32.aarch64.rpm" + }, + "sha256:96f3fbcfb91ae41de7e514fe0b619aab870ea4d5f53544c0fd215284cb0b68e2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.aarch64.rpm" + }, + "sha256:96ff29e784025e76bfde72abc89ccb520cb75087f8c44cd747d5d3ebc1df78db": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grubby-8.40-40.fc32.aarch64.rpm" + }, + "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm" + }, + "sha256:9738af51bf206850f6611306bed20542ed32a1701188611caab0b6896e4ffb37": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pam-1.3.1-24.fc32.aarch64.rpm" + }, + "sha256:98d58695f22a613ff6ffcb2b738b4127be7b72e5d56f7d0dbd3c999f189ba323": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libacl-2.2.53-5.fc32.aarch64.rpm" + }, + "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm" + }, + "sha256:9baa05a69943b0c6274403276f45817ab56193de62b5b64205b4fd35951e0895": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-pam-245.4-1.fc32.aarch64.rpm" + }, + "sha256:9c8ec2364045411b95cfb3995d2189f0082832af7bf7280ec1cdf7bfee1afe05": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/deltarpm-3.6.2-5.fc32.aarch64.rpm" + }, + "sha256:9d1baa8d8cdd02711e1724b08de678f2bda92807a6ae0e9d1b6c2443e2810ffd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpipeline-1.5.2-2.fc32.aarch64.rpm" + }, + "sha256:9db3ade981c564c361eed9068cd35acac93c1b1db54b6fb2a74070ce68141cff": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.aarch64.rpm" + }, + "sha256:a01d61d802834e2e6789548f707877827fb394c90097705af9c391e6bfcd6c24": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/krb5-libs-1.18-1.fc32.aarch64.rpm" + }, + "sha256:a0260a37707734c6f97885687a6ad5967c23cb0c693668bf1402e6ee5d4abe1e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.aarch64.rpm" + }, + "sha256:a05c8fb554ed38050b59d10f587ac70cf341c1f38b02ffe8a8433f7fc16efd68": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/keyutils-libs-1.6-4.fc32.aarch64.rpm" + }, + "sha256:a0b87b2dc3c5f536e94d6a4f3563a621dfbc067a62c3d1fe69bdb70c3cecec57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pycparser-2.19-2.fc32.noarch.rpm" + }, + "sha256:a0ec936c91f5f69951d08a6cdf03406ee7365bc3417d3426bb6b4db855c45dda": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.aarch64.rpm" + }, + "sha256:a107b3d3790a5bcfdc28f6f4718969039b103a681a2647f3cbcb82cf92e97acb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pyserial-3.4-7.fc32.noarch.rpm" + }, + "sha256:a12bd9183ce051f7c483506540f7682206a9cbd27b34cb7734be6583bc5d11db": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dosfstools-4.1-10.fc32.aarch64.rpm" + }, + "sha256:a16c32dda1845c89cb7822ab839e5f48b222b3c168f82455f7f54a1a7863ffea": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dracut-050-26.git20200316.fc32.aarch64.rpm" + }, + "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-release-common-32-1.noarch.rpm" + }, + "sha256:a2fcc535573ade5656cdb6968eb13dd68380540b5f25a0eca3947676dc5f11d6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-markupsafe-1.1.1-5.fc32.aarch64.rpm" + }, + "sha256:a30386b14f04905c1e78944f9b36d81ac83b7de1301c353d7e90b33f4a8c5e93": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/efivar-libs-37-7.fc32.aarch64.rpm" + }, + "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm" + }, + "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm" + }, + "sha256:a3775cb3bc81bb5444e26695a62b1bd2eb48a91d7bc3a361d763c185cb817de1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre-8.44-1.fc32.aarch64.rpm" + }, + "sha256:a47d4bfb9dd589c97bb530afb3988cbfaf7336a89207e4b74fd9ab596812c97f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grub2-tools-2.04-12.fc32.aarch64.rpm" + }, + "sha256:a499f61c75ef2179b2da62647b64b716fec1af2f15653876a27e57c284921baf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.aarch64.rpm" + }, + "sha256:a580e36566f6ffceef809e49fc4c7f9b1418a16123d4d49079c8423b6a337e67": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pinentry-1.1.0-7.fc32.aarch64.rpm" + }, + "sha256:a5c841dda3df90e810cfd87c42211a26dc0745f9bae341b6bfc6b08114e48ed5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libbasicobjects-0.1.1-44.fc32.aarch64.rpm" + }, + "sha256:a6c26dd0ba8fc6a15e845f72f90e89b62f7344d7793896e707e610286b5e4541": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/trousers-lib-0.3.13-13.fc31.aarch64.rpm" + }, + "sha256:a718bc2a857bde398de2375efae50dac568217f547b272d7cbe0a1655ec0d961": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/os-prober-1.77-4.fc32.aarch64.rpm" + }, + "sha256:a7394cd1b11a1b25efaab43a30b1d9687683884babc162f43e29fdee4f00bda8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/lz4-libs-1.9.1-2.fc32.aarch64.rpm" + }, + "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm" + }, + "sha256:a830bb13938bedaf5cc91b13ab78e2cf9172b06727b7e9e1bec2cddce8dd9e2d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libss-1.45.5-3.fc32.aarch64.rpm" + }, + "sha256:a92c4a583aacd37beb069c996307bd782f809c78fd1fb802de25a53efbaff8f8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/shared-mime-info-1.15-3.fc32.aarch64.rpm" + }, + "sha256:a9420698e38d93b375f3f97ef5b196f61d006862f80642d69cc3c3fd694589fc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/console-login-helper-messages-0.17-2.fc32.noarch.rpm" + }, + "sha256:a973f92acb0afe61087a69d13a532c18a39dd60b3ba4826b38350f2c6b27e417": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.aarch64.rpm" + }, + "sha256:a9e2dcc8d57bff7ec3424eb79de77ebe91a956dd39faa691b2ab4babd1683233": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libfido2-1.3.1-1.fc32.aarch64.rpm" + }, + "sha256:aa667df83abb5a675444e898fb7554527b2967f3bdc793e6b4b56d794f74b9ef": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.aarch64.rpm" + }, + "sha256:aa7fd8a1313c0e384353da5e054dad62205b4f0e112a4a45eb414eb357513e04": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/file-libs-5.38-2.fc32.aarch64.rpm" + }, + "sha256:ab86efda86a5d4cb8b1fa979bcc37aeb5601616d48a4a9d34b4f4ceb4e553747": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnfsidmap-2.4.3-0.fc32.aarch64.rpm" + }, + "sha256:acafdf6b20fea5974da004b77eced20b00c59a908edcef9c4c4e60815fdbf8f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-unbound-1.9.6-2.fc32.aarch64.rpm" + }, + "sha256:ad6f711174c59ffb9116d792068cc8fd0585b46eb5d9bf18a3c9937727b9a379": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/checkpolicy-3.0-3.fc32.aarch64.rpm" + }, + "sha256:ad874e09de00dbdb887eb6a94351869950ead7f6409dfa191d1443d3bb9dd255": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libevent-2.1.8-8.fc32.aarch64.rpm" + }, + "sha256:ae08e152061808ccc334cc611d8ea4d18c05daa6b68731e255a533d0572594ae": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/linux-atm-libs-2.5.1-26.fc32.aarch64.rpm" + }, + "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm" + }, + "sha256:af826bfb93a53a0bbb0209f721fc7d15c0b5200c3f81c93ef9620cc640e90b77": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtdb-1.4.3-2.fc32.aarch64.rpm" + }, + "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm" + }, + "sha256:afba861f69234f4cb4040085a4868c7424666a4356d0e2002e16b0afb75ec0d2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/p11-kit-0.23.20-1.fc32.aarch64.rpm" + }, + "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/y/yum-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:b1fc5d1d8d62d0f883ff483b818e7759f9afd4a1fa15421af56e1a615535fe63": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/ipcalc-0.4.0-2.fc32.aarch64.rpm" + }, + "sha256:b3657ad1419ab11e07608c7bc4da75a91162b2398d66febfc061795bc1587036": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sssd-common-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:b532ac1225423bbce715f47ae83c1b9b70ac1e7818760a498c83aab0ae374c99": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mozjs60-60.9.0-5.fc32.aarch64.rpm" + }, + "sha256:b743aafa82f3326f8f2e6d5464ae7fa57fabab3ad791099eaf2d151b43208b42": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/efi-filesystem-4-4.fc32.noarch.rpm" + }, + "sha256:b78889f3a2ac801456c643fd5603017383221aa33eac381e4f74b9a13fbf3830": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsemanage-3.0-3.fc32.aarch64.rpm" + }, + "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm" + }, + "sha256:b867eeba06e6fc9084c227d8b3ea54f1815cb1833a29babf114fa1167aa17f2d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.aarch64.rpm" + }, + "sha256:b9904d16c86c28074bfdba38a3a740b61ad5de50a9945d550021027130fcfd41": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.aarch64.rpm" + }, + "sha256:ba170325441d8341085944301c006bd4b82b4813d0aedf3a9990fbe0500deba8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/q/qemu-img-4.2.0-7.fc32.aarch64.rpm" + }, + "sha256:bbf9571bf10df55a90e73b372da33b6ac54fad5778cea58064b7b57dcbb17180": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-cryptography-2.8-3.fc32.aarch64.rpm" + }, + "sha256:bc2c4637779e037072ebbd00215afbb33ce05706c7851cfde4cc0637c63f75f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/shim-aa64-15-8.aarch64.rpm" + }, + "sha256:bcb07748c8688c788ec69c3a33c0abd1bb3a496b9aa09b5729265670bc7ba0eb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-attrs-19.3.0-2.fc32.noarch.rpm" + }, + "sha256:bcb0cd53344744f9c8d11041eb76fc5b304f78c791846521bbe105e78f2bd0f8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/procps-ng-3.3.15-7.fc32.aarch64.rpm" + }, + "sha256:c030084d188fc99359cc088bd77d2ee6578e717f1cf2d067b8967c6cbe863c6e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openldap-2.4.47-4.fc32.aarch64.rpm" + }, + "sha256:c0ad832521885f97d08c043350b72f4fade0bbe995f81da8a18370a932bf5aee": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmodulemd-2.9.1-1.fc32.aarch64.rpm" + }, + "sha256:c25bb676affa185a2c4671859484bd24f62d2ec9c4d67584590bb14dd0396775": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.aarch64.rpm" + }, + "sha256:c47b5f407d000d200f595e7f5026e72cae8b43416c17e5bb943551a9ddc5422e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-libs-0.179-1.fc32.aarch64.rpm" + }, + "sha256:c494a613443f49b6cca4845f9c3410a1267f609c503a81a9a26a272443708fee": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libverto-0.3.0-9.fc32.aarch64.rpm" + }, + "sha256:c4cc17e543253b9b37fa982f49ae1c5f411ff563120e5c4225556a7584994a37": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fipscheck-lib-1.5.0-8.fc32.aarch64.rpm" + }, + "sha256:c748420c4d7407a95f840416a80c468d8304e529f93b40a45081a49fd7a29232": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmetalink-0.1.3-10.fc32.aarch64.rpm" + }, + "sha256:c75bf533b09243daeca728129a6fe10fca47d0c150fd43b5dab7b4993584536f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.aarch64.rpm" + }, + "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:c8516d06666d3f0728c9cbfc1b7f0a88f8884e5cd7bd3bad6721c7c9000f1f8f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/less-551-3.fc32.aarch64.rpm" + }, + "sha256:c93df175a0a4989aaaeb170406d8ff13a2cd93a5fc52ad33468245fea2044a86": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pytz-2019.3-2.fc32.noarch.rpm" + }, + "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rootfiles-8.1-27.fc32.noarch.rpm" + }, + "sha256:ca85fd192aa25f8fc630c28c8858cf3065a2b32f3ba3a373ffd3ea49b0f0813c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.aarch64.rpm" + }, + "sha256:caa6fe00c6e322e961c4b7a02ba4a10cc939b84121e09d07d331adcdc2ae1af2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libattr-2.4.48-8.fc32.aarch64.rpm" + }, + "sha256:caf76966e150fbe796865d2d18479b080657cb0bada9283048a4586cf034d4e6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.aarch64.rpm" + }, + "sha256:cc2019e304ecdfa3a245de005342c8d617d1da0d834e510849764fb38b929655": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mokutil-0.3.0-15.fc32.aarch64.rpm" + }, + "sha256:cc30c04cfc6be2239727608174e90ac766cb7c77cdd1b70c4be619cb2df42a52": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcurl-7.69.1-1.fc32.aarch64.rpm" + }, + "sha256:cc531264ae00fbc4e465b6b47c8f3772edee80346b92cee1fae88d8cdb9dcdcf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sssd-client-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:ccf07a3682a1038a6224b3da69e20f201584ed1c879539cedb57e184aa14429a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sed-4.5-5.fc32.aarch64.rpm" + }, + "sha256:cebb9ee0271c7199cb057c9a722b17c6fe59a0b0ec7f438ef6e0c35d4b5f330e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnupg2-2.2.19-1.fc32.aarch64.rpm" + }, + "sha256:cffbab9f6052ee2c7b8bcc369a411e319174de094fb94eaf71555ce485049a74": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgpg-error-1.36-3.fc32.aarch64.rpm" + }, + "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm" + }, + "sha256:d0bc781a80be1d1fe204ec6b26255240261d55f6e24a28343572f2221a00533e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jwt-1.7.1-7.fc32.noarch.rpm" + }, + "sha256:d1b286af57220764054969fc63065ead51d9bb969d320ada6a72c3b24c9e0ca3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fipscheck-1.5.0-8.fc32.aarch64.rpm" + }, + "sha256:d2bd77606d1c91208be05edce6ea04c24fa2efc880569eecb958afde1a7fb17e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-4.15.1-2.fc32.1.aarch64.rpm" + }, + "sha256:d3281a3ef4de5e13ef1a76effd68169c0965467039059141609a078520f3db04": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.aarch64.rpm" + }, + "sha256:d4fd722ee0ff5da4114b91964e430e4e45c1a428739f1e5be5db7854e5c85f11": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libyaml-0.2.2-3.fc32.aarch64.rpm" + }, + "sha256:d552c735d48fa647509605f524863eab28b69b9fc8d7c62a67479c3af0878024": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/w/which-2.21-19.fc32.aarch64.rpm" + }, + "sha256:d611f0c4252c4c4b893850807748e62cf4d17d72d544ef2744091df3206d8178": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-requests-2.22.0-8.fc32.noarch.rpm" + }, + "sha256:d6ad55479187ecd7368002e67e83d44d24995fd1a1b6790c1c6c9fb1fd5e52a6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcollection-0.7.0-44.fc32.aarch64.rpm" + }, + "sha256:d891183e3f802f3e2b6ca77f1ea528d2aec52be8ef38ae2cb93c11f82ecff321": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libini_config-1.3.1-44.fc32.aarch64.rpm" + }, + "sha256:d91a87c9d6dd3924d2fe7992f88f2542cce3451b7ff2576eb4d65d9ca1a7620f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/curl-7.69.1-1.fc32.aarch64.rpm" + }, + "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dateutil-2.8.0-8.fc32.noarch.rpm" + }, + "sha256:d96c93f959443e974001c4b423f3da556187e5b3fedf1232951f480c67cb4568": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dracut-config-generic-050-26.git20200316.fc32.aarch64.rpm" + }, + "sha256:da4e2994692c9ed4d0760528139f6437bcb0d54862fac1a4afa55e329393d254": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/j/jansson-2.12-5.fc32.aarch64.rpm" + }, + "sha256:db514e9d99e58e08e698083e1ca969f9fc98ae27ee9b63aa8d2133bd95a7002e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/lmdb-libs-0.9.24-1.fc32.aarch64.rpm" + }, + "sha256:dbc1d91408e0e115e1c084f4c28d2d15f07cfc8b6c6d766192b65a28407422e7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpcap-1.9.1-3.fc32.aarch64.rpm" + }, + "sha256:debd948a7e454f07dd7ab8ed79984158b98ce333d77be948e4393bb87c518ab8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/shadow-utils-4.8.1-2.fc32.aarch64.rpm" + }, + "sha256:ded5407f20b7a1de7b8aee85786d8b70eec61d0385e95e90d95849612ef13dea": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/h/hostname-3.23-2.fc32.aarch64.rpm" + }, + "sha256:df7184fef93e9f8f535d78349605595a812511db5e6dee26cbee15569a055422": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/z/zlib-1.2.11-21.fc32.aarch64.rpm" + }, + "sha256:e2eecb13c57728ce4c8e04ad8747ca51fe086a58bd55c0d3d29cf9683d0d09ad": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcomps-0.1.14-4.fc32.aarch64.rpm" + }, + "sha256:e30482032783ab59417bfaf8394be42d2e2e779a580979bd87f15bd0880df858": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-1.1.1d-7.fc32.aarch64.rpm" + }, + "sha256:e38207cecd64ed0fe5002828ff0aa05dbbb1f5418350babd4c1cfa3d1e3261fe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kernel-core-5.6.6-300.fc32.aarch64.rpm" + }, + "sha256:e4056437576c76b1b4fe8d8b98cce6f006194d74cbc0a30058cf29aab6b9307f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmaxminddb-1.3.2-2.fc32.aarch64.rpm" + }, + "sha256:e76aea00d64d100bafcea1672ce65f8bfd47bdf7e0dc7bf859fc0c6ec29d5823": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.aarch64.rpm" + }, + "sha256:e7b49bf8e3183d7604c7f7f51dfbc1e03bc599ddd7eac459a86f4ffdc8432533": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libaio-0.3.111-7.fc32.aarch64.rpm" + }, + "sha256:e7b9fd73c260cd22d3a36823530d4f623ea0e16844b900a5677c769afa76341c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-chardet-3.0.4-15.fc32.noarch.rpm" + }, + "sha256:e8941c0abaa3ce527b14bc19013088149be9c5aacceb788718293cdef9132d18": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/acl-2.2.53-5.fc32.aarch64.rpm" + }, + "sha256:e96e4caf6c98faa5fb61bd3b13ee7afa0d7510d3176fe3d3cbf485847ce985fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgcrypt-1.8.5-3.fc32.aarch64.rpm" + }, + "sha256:ea44ae1c951d3d4b30ff2a2d898c041ce9072acc94d6ea1e0e305c45e802019f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtasn1-4.16.0-1.fc32.aarch64.rpm" + }, + "sha256:ea775b1806d30c2d076f685977c0efbe57ff2afcf10a3c8f8f1a250ecb9ef5b6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libref_array-0.1.5-44.fc32.aarch64.rpm" + }, + "sha256:eb98f6ee22b110395790e83648339d36f74068883d3d6a7a8a3ecb9cbf55bc60": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_nss_idmap-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm" + }, + "sha256:ed19ff9b81a5a72262a95b8ff52c867efc43aa50d28171328afd4791ee3daef8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_autofs-2.2.3-13.fc32.aarch64.rpm" + }, + "sha256:eded265cff5d22b89a955570eba030643d6730dd5987c2efed3110ef74cd0254": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libsemanage-3.0-3.fc32.aarch64.rpm" + }, + "sha256:ef9bff2d88851209d35f9824e02fc431fba5e5347752ea1c197a57c0c45ad401": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.aarch64.rpm" + }, + "sha256:f0143760628def255de0b7e1aba6f7880705329703f7357425868483ba8f43e7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pyrsistent-0.15.7-2.fc32.aarch64.rpm" + }, + "sha256:f148b87e6bf64242dad504997f730c11706e5c0da52b036b8faebb5807d252d9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grep-3.3-4.fc32.aarch64.rpm" + }, + "sha256:f26fae2e85396d00d7935b21154ba7a0fa591495c59973abd59455e181bf84d1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iptables-libs-1.8.4-7.fc32.aarch64.rpm" + }, + "sha256:f50ad72a9259205b2381b94fa674f53860e63c9e3cd1fb013653dab2bc7203a6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-langpack-en-2.31-2.fc32.aarch64.rpm" + }, + "sha256:f6203a41ed91197bb770a38a101d977f0f56de86ccc5a71cee9c0e198f26bcbc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-ply-3.11-7.fc32.noarch.rpm" + }, + "sha256:f71860520fb965ae5a41a43a68903aac712bea01ceac568774ac9ce6006d1f31": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/audit-3.0-0.19.20191104git1c2f876.fc32.aarch64.rpm" + }, + "sha256:f8f3ec395d7d96c45cbd370f2376fe6266397ce091ab8fdaf884256ae8ae159f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/filesystem-3.14-2.fc32.aarch64.rpm" + }, + "sha256:fa791a4328b4c41b7190d862de921605f266a64abee03b2ea2e8d2b644be307f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pysocks-1.7.1-4.fc32.noarch.rpm" + }, + "sha256:faca2dc4a45d1bd365d9364ea59f361854f3379ef6f13e9fa0a85368a0621f45": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpsl-0.21.0-4.fc32.aarch64.rpm" + }, + "sha256:fc6b083682762fb891b50ed6e9f684ac54a2a05a78e24078ff66d4636ae89588": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xfsprogs-5.4.0-3.fc32.aarch64.rpm" + }, + "sha256:fdb1ed306445c6a37fb7182def5983a66501c5eb8be5f1b08c38db5f3613561f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-all-langpacks-2.31-2.fc32.aarch64.rpm" + }, + "sha256:fdef1b445deff2b85a564372284dc8f49cf8376ee60cd26938484e8312dab650": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/c-ares-1.15.0-5.fc32.aarch64.rpm" + }, + "sha256:fdf652eae6502ff726fc3b532348ebe59dccb16e0629331371ff83e309b259af": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cloud-utils-growpart-0.31-6.fc32.noarch.rpm" + }, + "sha256:fe06eff5ac0e3e538775aad2cb0f801af491476e9cb508caa9107f4a5f913e52": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsepol-3.0-3.fc32.aarch64.rpm" + }, + "sha256:fe512ddf337568ca1e4d1c0cce66dda461ca570587c7beb1e1be3960540e394f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kmod-27-1.fc32.aarch64.rpm" + }, + "sha256:fe7ee39b0779c467c5d8a20daff4911e1967523e6fc748179e77584168e18bde": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-6.1-15.20191109.fc32.aarch64.rpm" + }, + "sha256:fe8b11652adfe4c64d96b442d5b31da207dfdf4a551c491c0934498537c8dfc5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libblkid-2.35.1-7.fc32.aarch64.rpm" + }, + "sha256:fe96e7fe3da0db38b8b8850c9dedd50c1358309fee24c774bc64ddee62bb11be": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-gpg-1.13.1-6.fc32.aarch64.rpm" + }, + "sha256:ff135143da781c30919f03000c4409cc09d38cd65cd7b01f3c540617ce0f69db": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcroco-0.6.13-3.fc32.aarch64.rpm" + }, + "sha256:ff6540076bd7247ca2c1c8beb8979adb5eaf27877125c7f5cc187dc10913048f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-udev-245.4-1.fc32.aarch64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:e8941c0abaa3ce527b14bc19013088149be9c5aacceb788718293cdef9132d18", + "check_gpg": true + }, + { + "checksum": "sha256:10d828cc7803aca9b59e3bb9b52e0af45a2828250f1eab7f0fc08cdb981f191d", + "check_gpg": true + }, + { + "checksum": "sha256:63cef561bcaadd5b9a1bf93b968f284ca76c3ad2b90b5c439b62456c0517164f", + "check_gpg": true + }, + { + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "checksum": "sha256:5b304375adf911d056b36dc35f22af027d9283efbaebcb8231f052aef3982f05", + "check_gpg": true + }, + { + "checksum": "sha256:caf76966e150fbe796865d2d18479b080657cb0bada9283048a4586cf034d4e6", + "check_gpg": true + }, + { + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "checksum": "sha256:8961e2f35093845b7498c03f1a9776f7c49f7d9d057f56b0774f470b8e8179ff", + "check_gpg": true + }, + { + "checksum": "sha256:8d08e12adb541773aa8073a1aa6b02fbbd8539fe3597a60ac934732930cd5981", + "check_gpg": true + }, + { + "checksum": "sha256:081d831528796c3e5c47b89c363a0f530bf77e3e2e0098cd586d814bea9a12f0", + "check_gpg": true + }, + { + "checksum": "sha256:ca85fd192aa25f8fc630c28c8858cf3065a2b32f3ba3a373ffd3ea49b0f0813c", + "check_gpg": true + }, + { + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "checksum": "sha256:96f3fbcfb91ae41de7e514fe0b619aab870ea4d5f53544c0fd215284cb0b68e2", + "check_gpg": true + }, + { + "checksum": "sha256:d91a87c9d6dd3924d2fe7992f88f2542cce3451b7ff2576eb4d65d9ca1a7620f", + "check_gpg": true + }, + { + "checksum": "sha256:b9904d16c86c28074bfdba38a3a740b61ad5de50a9945d550021027130fcfd41", + "check_gpg": true + }, + { + "checksum": "sha256:067d98bda561e94f9f0bba60f691dc8ba4610434603f26cf6f4fa22677da8465", + "check_gpg": true + }, + { + "checksum": "sha256:60c9a00d8c528ad5806a5fec20ed3ffb8ad195e9eb9bf5294893e8425be1fa9f", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "checksum": "sha256:86959d2fd51c4d52fa5fcdf91c226ffdece5960299c15f29adc2a5c0bf05397b", + "check_gpg": true + }, + { + "checksum": "sha256:9c8ec2364045411b95cfb3995d2189f0082832af7bf7280ec1cdf7bfee1afe05", + "check_gpg": true + }, + { + "checksum": "sha256:18c188f63504b8cf3bc88d95de458a1eb216bca268378a6839618ef7468dc635", + "check_gpg": true + }, + { + "checksum": "sha256:5d52cffee2d5360db8cf7e6ed4b19a68de4a0ae55f42ed279d4fdb3a70bb72f3", + "check_gpg": true + }, + { + "checksum": "sha256:13290758e03b977aed5e23b7ba9a01157b6802fd78baf75bc1fc184864e9e31e", + "check_gpg": true + }, + { + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "checksum": "sha256:a12bd9183ce051f7c483506540f7682206a9cbd27b34cb7734be6583bc5d11db", + "check_gpg": true + }, + { + "checksum": "sha256:d3281a3ef4de5e13ef1a76effd68169c0965467039059141609a078520f3db04", + "check_gpg": true + }, + { + "checksum": "sha256:7f667fb609062e966720bf1bb1fa97a91ca245925c68e36d2770caba57aa4db2", + "check_gpg": true + }, + { + "checksum": "sha256:a499f61c75ef2179b2da62647b64b716fec1af2f15653876a27e57c284921baf", + "check_gpg": true + }, + { + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "checksum": "sha256:8c545e3282deed08d36bb138f1ba15d02dfd1066f46f45582e24b6dc5b07cb6b", + "check_gpg": true + }, + { + "checksum": "sha256:c47b5f407d000d200f595e7f5026e72cae8b43416c17e5bb943551a9ddc5422e", + "check_gpg": true + }, + { + "checksum": "sha256:4940f6e26a93fe638667adb6e12969fe915b3a7b0cfeb58877dd6d7bccf46c1a", + "check_gpg": true + }, + { + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "checksum": "sha256:aa7fd8a1313c0e384353da5e054dad62205b4f0e112a4a45eb414eb357513e04", + "check_gpg": true + }, + { + "checksum": "sha256:f8f3ec395d7d96c45cbd370f2376fe6266397ce091ab8fdaf884256ae8ae159f", + "check_gpg": true + }, + { + "checksum": "sha256:5cc385c1ca3df73a1dd7865159628a6b0ce186f8679c6bc95dda0b4791e4a9fc", + "check_gpg": true + }, + { + "checksum": "sha256:62bafab5a0f37fdec29ce38bc1d635e0a81ab165061faaf5d83f5246ca4e2db0", + "check_gpg": true + }, + { + "checksum": "sha256:aa667df83abb5a675444e898fb7554527b2967f3bdc793e6b4b56d794f74b9ef", + "check_gpg": true + }, + { + "checksum": "sha256:6837a13f3c643b5da33bd694efc4e95f54b5cc5e15de61884644378367d55804", + "check_gpg": true + }, + { + "checksum": "sha256:36a3ae11acb7916e932ff704a4527b126bb39f9e849072b16242719c8de11119", + "check_gpg": true + }, + { + "checksum": "sha256:fdb1ed306445c6a37fb7182def5983a66501c5eb8be5f1b08c38db5f3613561f", + "check_gpg": true + }, + { + "checksum": "sha256:2590d214d4986fa95653e7f83e67a81dbf822b621994a9ab867e7c377bc479c2", + "check_gpg": true + }, + { + "checksum": "sha256:5b7a135c35562e64344cc9f1ca37a5239649152cc055e14e7bf9bf84843eccab", + "check_gpg": true + }, + { + "checksum": "sha256:cebb9ee0271c7199cb057c9a722b17c6fe59a0b0ec7f438ef6e0c35d4b5f330e", + "check_gpg": true + }, + { + "checksum": "sha256:11004aa2821bdebfca77ab93e7ed405e0e93eb685850f5fb57b01762692ce155", + "check_gpg": true + }, + { + "checksum": "sha256:532a58ae361b9c0bc147037fb96f338684b949bd4071b19bac322b8967c32a01", + "check_gpg": true + }, + { + "checksum": "sha256:11204917b909836508acff0df2499301d3b2f8f0a1c0e341de904ac9fb4bbedf", + "check_gpg": true + }, + { + "checksum": "sha256:f148b87e6bf64242dad504997f730c11706e5c0da52b036b8faebb5807d252d9", + "check_gpg": true + }, + { + "checksum": "sha256:50b7b06e94253cb4eacc1bfb68f8343b73cbd6dae427f8ad81367f7b8ebf58a8", + "check_gpg": true + }, + { + "checksum": "sha256:c25bb676affa185a2c4671859484bd24f62d2ec9c4d67584590bb14dd0396775", + "check_gpg": true + }, + { + "checksum": "sha256:f26fae2e85396d00d7935b21154ba7a0fa591495c59973abd59455e181bf84d1", + "check_gpg": true + }, + { + "checksum": "sha256:06d6f5d9909beb1cc6731dc6d5d86b9e7885285848bad8ef16079ad3e8824e0b", + "check_gpg": true + }, + { + "checksum": "sha256:a05c8fb554ed38050b59d10f587ac70cf341c1f38b02ffe8a8433f7fc16efd68", + "check_gpg": true + }, + { + "checksum": "sha256:7684be07a8e054660705f8d6b1522d9a829be6614293096dc7b871682e445709", + "check_gpg": true + }, + { + "checksum": "sha256:a01d61d802834e2e6789548f707877827fb394c90097705af9c391e6bfcd6c24", + "check_gpg": true + }, + { + "checksum": "sha256:98d58695f22a613ff6ffcb2b738b4127be7b72e5d56f7d0dbd3c999f189ba323", + "check_gpg": true + }, + { + "checksum": "sha256:e7b49bf8e3183d7604c7f7f51dfbc1e03bc599ddd7eac459a86f4ffdc8432533", + "check_gpg": true + }, + { + "checksum": "sha256:340a82cfe6a9d18933b99a4e001d7e54f7ab225fe5e7fb1a7f51cb1c675c7050", + "check_gpg": true + }, + { + "checksum": "sha256:6ef55c2aa000adea432676010756cf69e8851587ad17277b21bde362e369bf3e", + "check_gpg": true + }, + { + "checksum": "sha256:1c982f31133def3baea707e0d1f0fe4a014d2c8c5f20ac8d69362cff4f26d5e9", + "check_gpg": true + }, + { + "checksum": "sha256:caa6fe00c6e322e961c4b7a02ba4a10cc939b84121e09d07d331adcdc2ae1af2", + "check_gpg": true + }, + { + "checksum": "sha256:fe8b11652adfe4c64d96b442d5b31da207dfdf4a551c491c0934498537c8dfc5", + "check_gpg": true + }, + { + "checksum": "sha256:95581bd0421b0fddf94b046e0bf8f13d3ce3d797acd5292d87127ed9e9505d80", + "check_gpg": true + }, + { + "checksum": "sha256:0a2eadd29cc53df942d3f0acc016b281efa4347fc2e9de1d7b8b61d9c5f0d894", + "check_gpg": true + }, + { + "checksum": "sha256:5875ba2d9b9ced8b2d2faa880b5f1811a89e17defe946ccf99b201790a0d2520", + "check_gpg": true + }, + { + "checksum": "sha256:93c5fe6589243bff8f4d6934d82616a4cce0f30d071c513cc56f8e53bfc19d17", + "check_gpg": true + }, + { + "checksum": "sha256:e2eecb13c57728ce4c8e04ad8747ca51fe086a58bd55c0d3d29cf9683d0d09ad", + "check_gpg": true + }, + { + "checksum": "sha256:cc30c04cfc6be2239727608174e90ac766cb7c77cdd1b70c4be619cb2df42a52", + "check_gpg": true + }, + { + "checksum": "sha256:7bfb33bfa3c3a952c54cb61b7f7c7047c1fd91e8e334f53f54faea6f34e6c0bb", + "check_gpg": true + }, + { + "checksum": "sha256:435530a0b9a086018694034ce48e9589348fc66389d884977b400f2f74814ac8", + "check_gpg": true + }, + { + "checksum": "sha256:62afc19040e8fbf7ac7946f02d67cdd19086658c3d8713a6c120482fd769537e", + "check_gpg": true + }, + { + "checksum": "sha256:ad874e09de00dbdb887eb6a94351869950ead7f6409dfa191d1443d3bb9dd255", + "check_gpg": true + }, + { + "checksum": "sha256:58988a2b7213098503b56d5388eba1bf2a01b9ff027961acb1e9f55c47d237ad", + "check_gpg": true + }, + { + "checksum": "sha256:291df16c0ae66fa5685cd033c84ae92765be4f4e17ce4936e47dc602ac6ff93e", + "check_gpg": true + }, + { + "checksum": "sha256:28892ae62cd1b4dadded523be8cb5f9e0fddeaa864919ee4b0dfad3bba8fd06f", + "check_gpg": true + }, + { + "checksum": "sha256:e96e4caf6c98faa5fb61bd3b13ee7afa0d7510d3176fe3d3cbf485847ce985fd", + "check_gpg": true + }, + { + "checksum": "sha256:09a9dd8c3ae4fe9a9817c71c4b2af35f2d7e1dbf2c9f4659028ce69a5d2f2d02", + "check_gpg": true + }, + { + "checksum": "sha256:cffbab9f6052ee2c7b8bcc369a411e319174de094fb94eaf71555ce485049a74", + "check_gpg": true + }, + { + "checksum": "sha256:500c4abc34ff58e6f06c7194034b2d68b618c5e6afa89b551ab74ef226e1880a", + "check_gpg": true + }, + { + "checksum": "sha256:1ee4f732b1b4b237d7301219fc5c52b63c9ab9e77db746612852fef5610f69b7", + "check_gpg": true + }, + { + "checksum": "sha256:c748420c4d7407a95f840416a80c468d8304e529f93b40a45081a49fd7a29232", + "check_gpg": true + }, + { + "checksum": "sha256:2356581880df7b8275896b18de24e432a362ee159fc3127f92476ffe8d0432fd", + "check_gpg": true + }, + { + "checksum": "sha256:c0ad832521885f97d08c043350b72f4fade0bbe995f81da8a18370a932bf5aee", + "check_gpg": true + }, + { + "checksum": "sha256:1e533f7f64169288e90b3851e509cf1aedf4da0fe986288da53516b2b77ac77d", + "check_gpg": true + }, + { + "checksum": "sha256:400c91d4d6d1125ec891c16ea72aa4123fc4c96e02f8668a8ae6dbc27113d408", + "check_gpg": true + }, + { + "checksum": "sha256:a0260a37707734c6f97885687a6ad5967c23cb0c693668bf1402e6ee5d4abe1e", + "check_gpg": true + }, + { + "checksum": "sha256:17f5c9a25bf0f952f6defa6a857e938bfc1f72c69217f666a537bf8f1daff5f8", + "check_gpg": true + }, + { + "checksum": "sha256:4139803076f102e2224b81b4f1da3f6d066b89e272201d2720557763f9acfcd5", + "check_gpg": true + }, + { + "checksum": "sha256:dbc1d91408e0e115e1c084f4c28d2d15f07cfc8b6c6d766192b65a28407422e7", + "check_gpg": true + }, + { + "checksum": "sha256:faca2dc4a45d1bd365d9364ea59f361854f3379ef6f13e9fa0a85368a0621f45", + "check_gpg": true + }, + { + "checksum": "sha256:1a096ed78df5a9339c4b3c15372275a884a1124b048ffcfbdb768db881e47ab2", + "check_gpg": true + }, + { + "checksum": "sha256:56bc7a11331fe199a45bc23f348deff8cd5e1ee02c617b6ed429d61ba537fc8b", + "check_gpg": true + }, + { + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "checksum": "sha256:7149be5bd74792181003b872a9bc636157f4b795b12374c0857fb7271f2567ac", + "check_gpg": true + }, + { + "checksum": "sha256:7cac868a4b1ac9c380192a31a45a314613af3f958aaf2b778642667dc73bc182", + "check_gpg": true + }, + { + "checksum": "sha256:6028f86f132faee662e97075270f68e8125fd339c8689a2b661facd25c3b829b", + "check_gpg": true + }, + { + "checksum": "sha256:91cd21ca1f5b881a78e9c0a6dd3cdad7401f7216a1ab3acbe9337d8e3e054a5e", + "check_gpg": true + }, + { + "checksum": "sha256:b78889f3a2ac801456c643fd5603017383221aa33eac381e4f74b9a13fbf3830", + "check_gpg": true + }, + { + "checksum": "sha256:fe06eff5ac0e3e538775aad2cb0f801af491476e9cb508caa9107f4a5f913e52", + "check_gpg": true + }, + { + "checksum": "sha256:836a45edfd4e2cda0b6bac254b2e6225aad36f9bae0f96f2fe7da42896db0dae", + "check_gpg": true + }, + { + "checksum": "sha256:0042a3d3b19152d0a16ee321cbe99208a2f4ebd009515c1f6f962a1d5f9cde26", + "check_gpg": true + }, + { + "checksum": "sha256:15a8a718cb6f629474fec7756b4701430e14ff94aad6cf6fe20f3eb7174a7783", + "check_gpg": true + }, + { + "checksum": "sha256:a830bb13938bedaf5cc91b13ab78e2cf9172b06727b7e9e1bec2cddce8dd9e2d", + "check_gpg": true + }, + { + "checksum": "sha256:7bd98aa2d554f06ab525320ebf628a6e002011462e71a47337676a2c99de5aec", + "check_gpg": true + }, + { + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "checksum": "sha256:3ea53f635b4f559b2bdb0e58d54dbfddc126b18abe23b46b94aecbf7c0d5132c", + "check_gpg": true + }, + { + "checksum": "sha256:ea44ae1c951d3d4b30ff2a2d898c041ce9072acc94d6ea1e0e305c45e802019f", + "check_gpg": true + }, + { + "checksum": "sha256:ef9bff2d88851209d35f9824e02fc431fba5e5347752ea1c197a57c0c45ad401", + "check_gpg": true + }, + { + "checksum": "sha256:2d7ad38e86f5109c732a32bf9bea612c4c674aba6ad4cca2d211d826edc7fd6f", + "check_gpg": true + }, + { + "checksum": "sha256:50d91ca18b6cdc9395424b852d2828d1b75e2af318932a2442376d2a10819f6a", + "check_gpg": true + }, + { + "checksum": "sha256:22954219a63638d7418204d818c01a0e3c914e2b2eb970f2e4638dcf5a7a5634", + "check_gpg": true + }, + { + "checksum": "sha256:2bc82e132696d9daa4eef545ff3352d6eb588b9a1b9584e515d15a7c3d6471df", + "check_gpg": true + }, + { + "checksum": "sha256:c494a613443f49b6cca4845f9c3410a1267f609c503a81a9a26a272443708fee", + "check_gpg": true + }, + { + "checksum": "sha256:64b64bab720df9dd7fd37ebf80a07795a95ac11e640eda3209b6517dcd7133e5", + "check_gpg": true + }, + { + "checksum": "sha256:9db3ade981c564c361eed9068cd35acac93c1b1db54b6fb2a74070ce68141cff", + "check_gpg": true + }, + { + "checksum": "sha256:33788835331bed7f75e5cd2126d8d75511211175c9ac6d93824baec1a546a28d", + "check_gpg": true + }, + { + "checksum": "sha256:d4fd722ee0ff5da4114b91964e430e4e45c1a428739f1e5be5db7854e5c85f11", + "check_gpg": true + }, + { + "checksum": "sha256:2c4d03577e8661920a7b64fcc68735b795288744f1b188512a96960143030474", + "check_gpg": true + }, + { + "checksum": "sha256:1befc4be3c3c72b3210e54f96f4334f268eaecdd3b77af7cadea0ef31f0e2ca9", + "check_gpg": true + }, + { + "checksum": "sha256:a7394cd1b11a1b25efaab43a30b1d9687683884babc162f43e29fdee4f00bda8", + "check_gpg": true + }, + { + "checksum": "sha256:45e2c1c76a0a0b6e1164c457307250a54a7de5905992b4351a84183c2e9f2633", + "check_gpg": true + }, + { + "checksum": "sha256:94d02790ff430efebbfc12ca2c2029c66e1691b70baf7cf45159fb8464d38e56", + "check_gpg": true + }, + { + "checksum": "sha256:fe7ee39b0779c467c5d8a20daff4911e1967523e6fc748179e77584168e18bde", + "check_gpg": true + }, + { + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "checksum": "sha256:a973f92acb0afe61087a69d13a532c18a39dd60b3ba4826b38350f2c6b27e417", + "check_gpg": true + }, + { + "checksum": "sha256:15b2402e11402a6cb494bf7ea31ebf10bf1adb0759aab417e63d05916e56aa45", + "check_gpg": true + }, + { + "checksum": "sha256:5b1cb1251cf7f65c50d9e3fcc11901fef5132dc177cce68a50918da481bb7629", + "check_gpg": true + }, + { + "checksum": "sha256:c030084d188fc99359cc088bd77d2ee6578e717f1cf2d067b8967c6cbe863c6e", + "check_gpg": true + }, + { + "checksum": "sha256:e30482032783ab59417bfaf8394be42d2e2e779a580979bd87f15bd0880df858", + "check_gpg": true + }, + { + "checksum": "sha256:0178be1e5d6da8053061d29013d8fda8445d37eac908afbf4a2ca92faf950f2c", + "check_gpg": true + }, + { + "checksum": "sha256:85dc7962af97e86a655b8ec5d5276e511f50b1d4abe624f4d8cb0d784007e342", + "check_gpg": true + }, + { + "checksum": "sha256:afba861f69234f4cb4040085a4868c7424666a4356d0e2002e16b0afb75ec0d2", + "check_gpg": true + }, + { + "checksum": "sha256:b867eeba06e6fc9084c227d8b3ea54f1815cb1833a29babf114fa1167aa17f2d", + "check_gpg": true + }, + { + "checksum": "sha256:9738af51bf206850f6611306bed20542ed32a1701188611caab0b6896e4ffb37", + "check_gpg": true + }, + { + "checksum": "sha256:a3775cb3bc81bb5444e26695a62b1bd2eb48a91d7bc3a361d763c185cb817de1", + "check_gpg": true + }, + { + "checksum": "sha256:7417889b8455ba87230fd5a987fe160d86de8250b87d7ae9bbcba90c32053172", + "check_gpg": true + }, + { + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "checksum": "sha256:a580e36566f6ffceef809e49fc4c7f9b1418a16123d4d49079c8423b6a337e67", + "check_gpg": true + }, + { + "checksum": "sha256:29bcc2f3f85ca7bdc22178af3e16743f55353bd9f25fb4c748d8c9f7117fe56f", + "check_gpg": true + }, + { + "checksum": "sha256:8f4be33cb040f081bb1f863b92e94ac7838af743cb5a0ce9d8c8ec9a611f71a6", + "check_gpg": true + }, + { + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "checksum": "sha256:857330a729697c1b6e8d86550391f1abf4db87d5ffeffeb5f00065fa8be85cbd", + "check_gpg": true + }, + { + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "checksum": "sha256:fe96e7fe3da0db38b8b8850c9dedd50c1358309fee24c774bc64ddee62bb11be", + "check_gpg": true + }, + { + "checksum": "sha256:79defc84763baec2190da8941221abfa002d6f6c9e8c3486e2c492389fca2a57", + "check_gpg": true + }, + { + "checksum": "sha256:e76aea00d64d100bafcea1672ce65f8bfd47bdf7e0dc7bf859fc0c6ec29d5823", + "check_gpg": true + }, + { + "checksum": "sha256:023d3d7be30607410a2357b50b8ef3f94a07baf2842bfba0421f803600ec605f", + "check_gpg": true + }, + { + "checksum": "sha256:32a00991ec85f0bf2a336e00033a0e70b0da963eb42d81bbad18a7a11f41d4eb", + "check_gpg": true + }, + { + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "checksum": "sha256:34efde201252afe93ec3af61af30c6d32cfbe5ecbdcecaf4667666f12482757d", + "check_gpg": true + }, + { + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "checksum": "sha256:acafdf6b20fea5974da004b77eced20b00c59a908edcef9c4c4e60815fdbf8f3", + "check_gpg": true + }, + { + "checksum": "sha256:ba170325441d8341085944301c006bd4b82b4813d0aedf3a9990fbe0500deba8", + "check_gpg": true + }, + { + "checksum": "sha256:3d6ec574fe2c612bcc45395f7ee87c68f45016f005c6d7aeee6b37897f41b8d2", + "check_gpg": true + }, + { + "checksum": "sha256:6007c88c459315a5e2ce354086bd0372a56e15cdd0dc14e6e889ab859f8d8365", + "check_gpg": true + }, + { + "checksum": "sha256:d2bd77606d1c91208be05edce6ea04c24fa2efc880569eecb958afde1a7fb17e", + "check_gpg": true + }, + { + "checksum": "sha256:0c30a7fd9f69ad808183afa0814e363689ff63e7a82856a790e5fa111c031b96", + "check_gpg": true + }, + { + "checksum": "sha256:7fe5838c895cd1158a6ae2afb3794e79e393d6701330e1109592e6b45f4bd876", + "check_gpg": true + }, + { + "checksum": "sha256:91ab783e9eb00d5baba65989c86c3d742033bd2306ff7adb0b78185f28d2ca86", + "check_gpg": true + }, + { + "checksum": "sha256:7d5d62696fc69bb890912be71c05e92496129f198838cb56d349a8fc700a85a6", + "check_gpg": true + }, + { + "checksum": "sha256:33ca43cf0714aef344a70be4cfa42322694cc975a2eeee0bf31325dbca7f2842", + "check_gpg": true + }, + { + "checksum": "sha256:ccf07a3682a1038a6224b3da69e20f201584ed1c879539cedb57e184aa14429a", + "check_gpg": true + }, + { + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "checksum": "sha256:debd948a7e454f07dd7ab8ed79984158b98ce333d77be948e4393bb87c518ab8", + "check_gpg": true + }, + { + "checksum": "sha256:a92c4a583aacd37beb069c996307bd782f809c78fd1fb802de25a53efbaff8f8", + "check_gpg": true + }, + { + "checksum": "sha256:c75bf533b09243daeca728129a6fe10fca47d0c150fd43b5dab7b4993584536f", + "check_gpg": true + }, + { + "checksum": "sha256:41c6a8ea4240f2fa6cea0333cc6d5f59731ac843398eb457c182e90af367783c", + "check_gpg": true + }, + { + "checksum": "sha256:52aa6e698e60cd360d5b9473fd1ebcc7e238e2125449bfdcc41b3e0fe13ae645", + "check_gpg": true + }, + { + "checksum": "sha256:9baa05a69943b0c6274403276f45817ab56193de62b5b64205b4fd35951e0895", + "check_gpg": true + }, + { + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "checksum": "sha256:2f849fdf4588b1b4e86a008b6a82f30ff2ec1db1ae2bd21e067c6f910e4cb237", + "check_gpg": true + }, + { + "checksum": "sha256:3242e0ce48f95d7a271125cf1222b5af09e20fe85194623d95336e1c678bdee8", + "check_gpg": true + }, + { + "checksum": "sha256:a6c26dd0ba8fc6a15e845f72f90e89b62f7344d7793896e707e610286b5e4541", + "check_gpg": true + }, + { + "checksum": "sha256:91e35b3750f5029be019542a4143cf00de68559b9ab6ae6df2c8f7ea6e60acd9", + "check_gpg": true + }, + { + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "checksum": "sha256:654a9a9997c975998e1cb5d9250cd34b9d9d4d69f43c9282e67ad4d38fa2bcdf", + "check_gpg": true + }, + { + "checksum": "sha256:25e6968493572c680d6f8cad03e591f6e1e0e6ce0d1fbe3648d4b64ba529491d", + "check_gpg": true + }, + { + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "checksum": "sha256:202d761caf4c9d4937c04388a7180d6687a79e8141136be0f7ecc3a54bf80594", + "check_gpg": true + }, + { + "checksum": "sha256:48381163a3f2c524697efc07538f040fde0b69d4e0fdcbe3bcfbc9924dd7d5dd", + "check_gpg": true + }, + { + "checksum": "sha256:0a31a882e4ac33233b36e2c61cc09125a936f54877137d5bb2ddc1ca8a5f9a12", + "check_gpg": true + }, + { + "checksum": "sha256:df7184fef93e9f8f535d78349605595a812511db5e6dee26cbee15569a055422", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts", + "labels": { + "/usr/bin/cp": "system_u:object_r:install_exec_t:s0" + } + } + } + ] + }, + "runner": "org.osbuild.fedora32" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:61e37e1df1e427525e6dd873d04fe2afc5e6825f2788a33b941e532e5a27ed7e", + "check_gpg": true + }, + { + "checksum": "sha256:78fb24703a4bafd4eb4ae0e065abf9111a127774ac74b1dc3a25d385c0dae1a0", + "check_gpg": true + }, + { + "checksum": "sha256:e8941c0abaa3ce527b14bc19013088149be9c5aacceb788718293cdef9132d18", + "check_gpg": true + }, + { + "checksum": "sha256:10d828cc7803aca9b59e3bb9b52e0af45a2828250f1eab7f0fc08cdb981f191d", + "check_gpg": true + }, + { + "checksum": "sha256:f71860520fb965ae5a41a43a68903aac712bea01ceac568774ac9ce6006d1f31", + "check_gpg": true + }, + { + "checksum": "sha256:63cef561bcaadd5b9a1bf93b968f284ca76c3ad2b90b5c439b62456c0517164f", + "check_gpg": true + }, + { + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "checksum": "sha256:5b304375adf911d056b36dc35f22af027d9283efbaebcb8231f052aef3982f05", + "check_gpg": true + }, + { + "checksum": "sha256:caf76966e150fbe796865d2d18479b080657cb0bada9283048a4586cf034d4e6", + "check_gpg": true + }, + { + "checksum": "sha256:fdef1b445deff2b85a564372284dc8f49cf8376ee60cd26938484e8312dab650", + "check_gpg": true + }, + { + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "checksum": "sha256:ad6f711174c59ffb9116d792068cc8fd0585b46eb5d9bf18a3c9937727b9a379", + "check_gpg": true + }, + { + "checksum": "sha256:55a343c96ac98c2bdf7bffdf5edc73f87b482a26b4a1a5e95670343dcec88fb8", + "check_gpg": true + }, + { + "checksum": "sha256:1e1e9900e9d3a2b8eb6684060672526948df2cb9f751e7d72cb4fa5bffe71747", + "check_gpg": true + }, + { + "checksum": "sha256:fdf652eae6502ff726fc3b532348ebe59dccb16e0629331371ff83e309b259af", + "check_gpg": true + }, + { + "checksum": "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309", + "check_gpg": true + }, + { + "checksum": "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56", + "check_gpg": true + }, + { + "checksum": "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280", + "check_gpg": true + }, + { + "checksum": "sha256:a9420698e38d93b375f3f97ef5b196f61d006862f80642d69cc3c3fd694589fc", + "check_gpg": true + }, + { + "checksum": "sha256:2bcf87d3ecdecab92bc2aacf2f1ec50aced0ed2958001cd8b297c80612edeb60", + "check_gpg": true + }, + { + "checksum": "sha256:85be4f8732fed73e473ea61635b582ecd0e46709a7c2c3c1a8f25d0709041780", + "check_gpg": true + }, + { + "checksum": "sha256:87f6173e57d5d24c601047f747dfcf90dedc1d05250bfc6f06567d8ca35f895b", + "check_gpg": true + }, + { + "checksum": "sha256:8961e2f35093845b7498c03f1a9776f7c49f7d9d057f56b0774f470b8e8179ff", + "check_gpg": true + }, + { + "checksum": "sha256:8d08e12adb541773aa8073a1aa6b02fbbd8539fe3597a60ac934732930cd5981", + "check_gpg": true + }, + { + "checksum": "sha256:7bd78f630f6ed96cd08942330f4dad8bfb8d2d7961262ee942411e501a1aefdd", + "check_gpg": true + }, + { + "checksum": "sha256:081d831528796c3e5c47b89c363a0f530bf77e3e2e0098cd586d814bea9a12f0", + "check_gpg": true + }, + { + "checksum": "sha256:ca85fd192aa25f8fc630c28c8858cf3065a2b32f3ba3a373ffd3ea49b0f0813c", + "check_gpg": true + }, + { + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "checksum": "sha256:96f3fbcfb91ae41de7e514fe0b619aab870ea4d5f53544c0fd215284cb0b68e2", + "check_gpg": true + }, + { + "checksum": "sha256:d91a87c9d6dd3924d2fe7992f88f2542cce3451b7ff2576eb4d65d9ca1a7620f", + "check_gpg": true + }, + { + "checksum": "sha256:b9904d16c86c28074bfdba38a3a740b61ad5de50a9945d550021027130fcfd41", + "check_gpg": true + }, + { + "checksum": "sha256:067d98bda561e94f9f0bba60f691dc8ba4610434603f26cf6f4fa22677da8465", + "check_gpg": true + }, + { + "checksum": "sha256:60c9a00d8c528ad5806a5fec20ed3ffb8ad195e9eb9bf5294893e8425be1fa9f", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "checksum": "sha256:86959d2fd51c4d52fa5fcdf91c226ffdece5960299c15f29adc2a5c0bf05397b", + "check_gpg": true + }, + { + "checksum": "sha256:20307d5a1d3fccfe8f64c8ea074c6a751dc36849c7495592989677fd01da9147", + "check_gpg": true + }, + { + "checksum": "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315", + "check_gpg": true + }, + { + "checksum": "sha256:9c8ec2364045411b95cfb3995d2189f0082832af7bf7280ec1cdf7bfee1afe05", + "check_gpg": true + }, + { + "checksum": "sha256:18c188f63504b8cf3bc88d95de458a1eb216bca268378a6839618ef7468dc635", + "check_gpg": true + }, + { + "checksum": "sha256:5d52cffee2d5360db8cf7e6ed4b19a68de4a0ae55f42ed279d4fdb3a70bb72f3", + "check_gpg": true + }, + { + "checksum": "sha256:27a0d9447ef63c95a3182b32606e6de1bd17f2cfc7910a456fa43996db67833f", + "check_gpg": true + }, + { + "checksum": "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013", + "check_gpg": true + }, + { + "checksum": "sha256:13290758e03b977aed5e23b7ba9a01157b6802fd78baf75bc1fc184864e9e31e", + "check_gpg": true + }, + { + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "checksum": "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d", + "check_gpg": true + }, + { + "checksum": "sha256:a16c32dda1845c89cb7822ab839e5f48b222b3c168f82455f7f54a1a7863ffea", + "check_gpg": true + }, + { + "checksum": "sha256:d96c93f959443e974001c4b423f3da556187e5b3fedf1232951f480c67cb4568", + "check_gpg": true + }, + { + "checksum": "sha256:d3281a3ef4de5e13ef1a76effd68169c0965467039059141609a078520f3db04", + "check_gpg": true + }, + { + "checksum": "sha256:7f667fb609062e966720bf1bb1fa97a91ca245925c68e36d2770caba57aa4db2", + "check_gpg": true + }, + { + "checksum": "sha256:b743aafa82f3326f8f2e6d5464ae7fa57fabab3ad791099eaf2d151b43208b42", + "check_gpg": true + }, + { + "checksum": "sha256:04bc54c723bfa9e1b6bb6567e9d8cd3e1ed389fc2be97259b971a8cbfe5f95e4", + "check_gpg": true + }, + { + "checksum": "sha256:a30386b14f04905c1e78944f9b36d81ac83b7de1301c353d7e90b33f4a8c5e93", + "check_gpg": true + }, + { + "checksum": "sha256:a499f61c75ef2179b2da62647b64b716fec1af2f15653876a27e57c284921baf", + "check_gpg": true + }, + { + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "checksum": "sha256:8c545e3282deed08d36bb138f1ba15d02dfd1066f46f45582e24b6dc5b07cb6b", + "check_gpg": true + }, + { + "checksum": "sha256:c47b5f407d000d200f595e7f5026e72cae8b43416c17e5bb943551a9ddc5422e", + "check_gpg": true + }, + { + "checksum": "sha256:4940f6e26a93fe638667adb6e12969fe915b3a7b0cfeb58877dd6d7bccf46c1a", + "check_gpg": true + }, + { + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "checksum": "sha256:0c8f8925dacc9a0e57b4446d5f67d9041bfc0a939191a7606ba93b74512a97d1", + "check_gpg": true + }, + { + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "checksum": "sha256:0dcc4568055843acf5571553731d57a0d042b6602e6932bc4fe88718597c2fbe", + "check_gpg": true + }, + { + "checksum": "sha256:aa7fd8a1313c0e384353da5e054dad62205b4f0e112a4a45eb414eb357513e04", + "check_gpg": true + }, + { + "checksum": "sha256:f8f3ec395d7d96c45cbd370f2376fe6266397ce091ab8fdaf884256ae8ae159f", + "check_gpg": true + }, + { + "checksum": "sha256:876c2450443ab68948b045721202ca193077876b67c2e85f9dd427452ef0c4d5", + "check_gpg": true + }, + { + "checksum": "sha256:d1b286af57220764054969fc63065ead51d9bb969d320ada6a72c3b24c9e0ca3", + "check_gpg": true + }, + { + "checksum": "sha256:c4cc17e543253b9b37fa982f49ae1c5f411ff563120e5c4225556a7584994a37", + "check_gpg": true + }, + { + "checksum": "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012", + "check_gpg": true + }, + { + "checksum": "sha256:5cc385c1ca3df73a1dd7865159628a6b0ce186f8679c6bc95dda0b4791e4a9fc", + "check_gpg": true + }, + { + "checksum": "sha256:62bafab5a0f37fdec29ce38bc1d635e0a81ab165061faaf5d83f5246ca4e2db0", + "check_gpg": true + }, + { + "checksum": "sha256:aa667df83abb5a675444e898fb7554527b2967f3bdc793e6b4b56d794f74b9ef", + "check_gpg": true + }, + { + "checksum": "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3", + "check_gpg": true + }, + { + "checksum": "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f", + "check_gpg": true + }, + { + "checksum": "sha256:60c3cbbe546fb12db4c7164a51613ea9ae20f7199537cdf5145e828c78544493", + "check_gpg": true + }, + { + "checksum": "sha256:57e1695da46f19db4a851304d57e7ce2409c287a88e9b52af0b76ed2252a4f98", + "check_gpg": true + }, + { + "checksum": "sha256:6837a13f3c643b5da33bd694efc4e95f54b5cc5e15de61884644378367d55804", + "check_gpg": true + }, + { + "checksum": "sha256:36a3ae11acb7916e932ff704a4527b126bb39f9e849072b16242719c8de11119", + "check_gpg": true + }, + { + "checksum": "sha256:2590d214d4986fa95653e7f83e67a81dbf822b621994a9ab867e7c377bc479c2", + "check_gpg": true + }, + { + "checksum": "sha256:f50ad72a9259205b2381b94fa674f53860e63c9e3cd1fb013653dab2bc7203a6", + "check_gpg": true + }, + { + "checksum": "sha256:5b7a135c35562e64344cc9f1ca37a5239649152cc055e14e7bf9bf84843eccab", + "check_gpg": true + }, + { + "checksum": "sha256:cebb9ee0271c7199cb057c9a722b17c6fe59a0b0ec7f438ef6e0c35d4b5f330e", + "check_gpg": true + }, + { + "checksum": "sha256:11004aa2821bdebfca77ab93e7ed405e0e93eb685850f5fb57b01762692ce155", + "check_gpg": true + }, + { + "checksum": "sha256:532a58ae361b9c0bc147037fb96f338684b949bd4071b19bac322b8967c32a01", + "check_gpg": true + }, + { + "checksum": "sha256:11204917b909836508acff0df2499301d3b2f8f0a1c0e341de904ac9fb4bbedf", + "check_gpg": true + }, + { + "checksum": "sha256:f148b87e6bf64242dad504997f730c11706e5c0da52b036b8faebb5807d252d9", + "check_gpg": true + }, + { + "checksum": "sha256:174a7c064ba48fdfc61ee5a091ec474dfbdb32a1a602cbe0776937c39e222663", + "check_gpg": true + }, + { + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "checksum": "sha256:6221b210a7778432738994829f6c7e9f047940e53ee42a0e6458b91095b82756", + "check_gpg": true + }, + { + "checksum": "sha256:a47d4bfb9dd589c97bb530afb3988cbfaf7336a89207e4b74fd9ab596812c97f", + "check_gpg": true + }, + { + "checksum": "sha256:a0ec936c91f5f69951d08a6cdf03406ee7365bc3417d3426bb6b4db855c45dda", + "check_gpg": true + }, + { + "checksum": "sha256:96ff29e784025e76bfde72abc89ccb520cb75087f8c44cd747d5d3ebc1df78db", + "check_gpg": true + }, + { + "checksum": "sha256:50b7b06e94253cb4eacc1bfb68f8343b73cbd6dae427f8ad81367f7b8ebf58a8", + "check_gpg": true + }, + { + "checksum": "sha256:ded5407f20b7a1de7b8aee85786d8b70eec61d0385e95e90d95849612ef13dea", + "check_gpg": true + }, + { + "checksum": "sha256:c25bb676affa185a2c4671859484bd24f62d2ec9c4d67584590bb14dd0396775", + "check_gpg": true + }, + { + "checksum": "sha256:3377ae652fbbd22f2c61815bfd1bb58185b5f57c194d9b0cce3056ab11522779", + "check_gpg": true + }, + { + "checksum": "sha256:b1fc5d1d8d62d0f883ff483b818e7759f9afd4a1fa15421af56e1a615535fe63", + "check_gpg": true + }, + { + "checksum": "sha256:7c38b938c3d35cfee1ad11d5d09c3c6a4f208b065a25b2a3556006f04f2608b9", + "check_gpg": true + }, + { + "checksum": "sha256:4674c9871d3a70a005fc880d6ce1c0e56418192085dae8b5eb861003ef9a2c1b", + "check_gpg": true + }, + { + "checksum": "sha256:f26fae2e85396d00d7935b21154ba7a0fa591495c59973abd59455e181bf84d1", + "check_gpg": true + }, + { + "checksum": "sha256:8b20ec83c7ff085d0f27c7af0a87dc49bacdf65d52b61119819ea14862eff91c", + "check_gpg": true + }, + { + "checksum": "sha256:da4e2994692c9ed4d0760528139f6437bcb0d54862fac1a4afa55e329393d254", + "check_gpg": true + }, + { + "checksum": "sha256:06d6f5d9909beb1cc6731dc6d5d86b9e7885285848bad8ef16079ad3e8824e0b", + "check_gpg": true + }, + { + "checksum": "sha256:79410f2d954c0a380a0b67bc965982ac1645c0365060cf8ba106db74b0b339f4", + "check_gpg": true + }, + { + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "checksum": "sha256:e38207cecd64ed0fe5002828ff0aa05dbbb1f5418350babd4c1cfa3d1e3261fe", + "check_gpg": true + }, + { + "checksum": "sha256:a05c8fb554ed38050b59d10f587ac70cf341c1f38b02ffe8a8433f7fc16efd68", + "check_gpg": true + }, + { + "checksum": "sha256:fe512ddf337568ca1e4d1c0cce66dda461ca570587c7beb1e1be3960540e394f", + "check_gpg": true + }, + { + "checksum": "sha256:7684be07a8e054660705f8d6b1522d9a829be6614293096dc7b871682e445709", + "check_gpg": true + }, + { + "checksum": "sha256:8e768615a238b08e3fd0857f53e7acf5c5c4e3736dc03824179429a4d848de61", + "check_gpg": true + }, + { + "checksum": "sha256:a01d61d802834e2e6789548f707877827fb394c90097705af9c391e6bfcd6c24", + "check_gpg": true + }, + { + "checksum": "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0", + "check_gpg": true + }, + { + "checksum": "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389", + "check_gpg": true + }, + { + "checksum": "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca", + "check_gpg": true + }, + { + "checksum": "sha256:c8516d06666d3f0728c9cbfc1b7f0a88f8884e5cd7bd3bad6721c7c9000f1f8f", + "check_gpg": true + }, + { + "checksum": "sha256:98d58695f22a613ff6ffcb2b738b4127be7b72e5d56f7d0dbd3c999f189ba323", + "check_gpg": true + }, + { + "checksum": "sha256:340a82cfe6a9d18933b99a4e001d7e54f7ab225fe5e7fb1a7f51cb1c675c7050", + "check_gpg": true + }, + { + "checksum": "sha256:6ef55c2aa000adea432676010756cf69e8851587ad17277b21bde362e369bf3e", + "check_gpg": true + }, + { + "checksum": "sha256:1c982f31133def3baea707e0d1f0fe4a014d2c8c5f20ac8d69362cff4f26d5e9", + "check_gpg": true + }, + { + "checksum": "sha256:caa6fe00c6e322e961c4b7a02ba4a10cc939b84121e09d07d331adcdc2ae1af2", + "check_gpg": true + }, + { + "checksum": "sha256:a5c841dda3df90e810cfd87c42211a26dc0745f9bae341b6bfc6b08114e48ed5", + "check_gpg": true + }, + { + "checksum": "sha256:fe8b11652adfe4c64d96b442d5b31da207dfdf4a551c491c0934498537c8dfc5", + "check_gpg": true + }, + { + "checksum": "sha256:95581bd0421b0fddf94b046e0bf8f13d3ce3d797acd5292d87127ed9e9505d80", + "check_gpg": true + }, + { + "checksum": "sha256:0a2eadd29cc53df942d3f0acc016b281efa4347fc2e9de1d7b8b61d9c5f0d894", + "check_gpg": true + }, + { + "checksum": "sha256:5875ba2d9b9ced8b2d2faa880b5f1811a89e17defe946ccf99b201790a0d2520", + "check_gpg": true + }, + { + "checksum": "sha256:1ddaeb7c602005e75c0ea2603a533d692a94915a297b71e68a8e27327456c3d0", + "check_gpg": true + }, + { + "checksum": "sha256:d6ad55479187ecd7368002e67e83d44d24995fd1a1b6790c1c6c9fb1fd5e52a6", + "check_gpg": true + }, + { + "checksum": "sha256:93c5fe6589243bff8f4d6934d82616a4cce0f30d071c513cc56f8e53bfc19d17", + "check_gpg": true + }, + { + "checksum": "sha256:e2eecb13c57728ce4c8e04ad8747ca51fe086a58bd55c0d3d29cf9683d0d09ad", + "check_gpg": true + }, + { + "checksum": "sha256:ff135143da781c30919f03000c4409cc09d38cd65cd7b01f3c540617ce0f69db", + "check_gpg": true + }, + { + "checksum": "sha256:cc30c04cfc6be2239727608174e90ac766cb7c77cdd1b70c4be619cb2df42a52", + "check_gpg": true + }, + { + "checksum": "sha256:7bfb33bfa3c3a952c54cb61b7f7c7047c1fd91e8e334f53f54faea6f34e6c0bb", + "check_gpg": true + }, + { + "checksum": "sha256:435530a0b9a086018694034ce48e9589348fc66389d884977b400f2f74814ac8", + "check_gpg": true + }, + { + "checksum": "sha256:82bd171ac3f9a08c44e8144297a4dd9cd2567a916065a57eb656330e2b4e007f", + "check_gpg": true + }, + { + "checksum": "sha256:62afc19040e8fbf7ac7946f02d67cdd19086658c3d8713a6c120482fd769537e", + "check_gpg": true + }, + { + "checksum": "sha256:3e25d33bea0d8de847f817b428fe92a6b02376634c7a6f0672bc668fa769869d", + "check_gpg": true + }, + { + "checksum": "sha256:ad874e09de00dbdb887eb6a94351869950ead7f6409dfa191d1443d3bb9dd255", + "check_gpg": true + }, + { + "checksum": "sha256:58988a2b7213098503b56d5388eba1bf2a01b9ff027961acb1e9f55c47d237ad", + "check_gpg": true + }, + { + "checksum": "sha256:291df16c0ae66fa5685cd033c84ae92765be4f4e17ce4936e47dc602ac6ff93e", + "check_gpg": true + }, + { + "checksum": "sha256:a9e2dcc8d57bff7ec3424eb79de77ebe91a956dd39faa691b2ab4babd1683233", + "check_gpg": true + }, + { + "checksum": "sha256:28892ae62cd1b4dadded523be8cb5f9e0fddeaa864919ee4b0dfad3bba8fd06f", + "check_gpg": true + }, + { + "checksum": "sha256:e96e4caf6c98faa5fb61bd3b13ee7afa0d7510d3176fe3d3cbf485847ce985fd", + "check_gpg": true + }, + { + "checksum": "sha256:09a9dd8c3ae4fe9a9817c71c4b2af35f2d7e1dbf2c9f4659028ce69a5d2f2d02", + "check_gpg": true + }, + { + "checksum": "sha256:cffbab9f6052ee2c7b8bcc369a411e319174de094fb94eaf71555ce485049a74", + "check_gpg": true + }, + { + "checksum": "sha256:500c4abc34ff58e6f06c7194034b2d68b618c5e6afa89b551ab74ef226e1880a", + "check_gpg": true + }, + { + "checksum": "sha256:d891183e3f802f3e2b6ca77f1ea528d2aec52be8ef38ae2cb93c11f82ecff321", + "check_gpg": true + }, + { + "checksum": "sha256:5adad0edfcf9c4415734d11a35a5c14cbf53eb32827572dd6af670fadcad7f78", + "check_gpg": true + }, + { + "checksum": "sha256:2f117f22ec79fed75752c69b7e1c70582bad93b55fb4a5b0dc2bca978bafce85", + "check_gpg": true + }, + { + "checksum": "sha256:1ee4f732b1b4b237d7301219fc5c52b63c9ab9e77db746612852fef5610f69b7", + "check_gpg": true + }, + { + "checksum": "sha256:3c29cc12a25791c83c040def2df8f107b161ecc0cbf3965cad82f38a451c7963", + "check_gpg": true + }, + { + "checksum": "sha256:e4056437576c76b1b4fe8d8b98cce6f006194d74cbc0a30058cf29aab6b9307f", + "check_gpg": true + }, + { + "checksum": "sha256:c748420c4d7407a95f840416a80c468d8304e529f93b40a45081a49fd7a29232", + "check_gpg": true + }, + { + "checksum": "sha256:2356581880df7b8275896b18de24e432a362ee159fc3127f92476ffe8d0432fd", + "check_gpg": true + }, + { + "checksum": "sha256:c0ad832521885f97d08c043350b72f4fade0bbe995f81da8a18370a932bf5aee", + "check_gpg": true + }, + { + "checksum": "sha256:1e533f7f64169288e90b3851e509cf1aedf4da0fe986288da53516b2b77ac77d", + "check_gpg": true + }, + { + "checksum": "sha256:6bc574a7f67dc28909f84c05bfc3dfeeac04c088f809032d75313aac022f6064", + "check_gpg": true + }, + { + "checksum": "sha256:400c91d4d6d1125ec891c16ea72aa4123fc4c96e02f8668a8ae6dbc27113d408", + "check_gpg": true + }, + { + "checksum": "sha256:a0260a37707734c6f97885687a6ad5967c23cb0c693668bf1402e6ee5d4abe1e", + "check_gpg": true + }, + { + "checksum": "sha256:ab86efda86a5d4cb8b1fa979bcc37aeb5601616d48a4a9d34b4f4ceb4e553747", + "check_gpg": true + }, + { + "checksum": "sha256:17f5c9a25bf0f952f6defa6a857e938bfc1f72c69217f666a537bf8f1daff5f8", + "check_gpg": true + }, + { + "checksum": "sha256:231cefc11eb5a9ac8f23bbd294cef0bf3a690040df3048e063f8a269f2db75f8", + "check_gpg": true + }, + { + "checksum": "sha256:4139803076f102e2224b81b4f1da3f6d066b89e272201d2720557763f9acfcd5", + "check_gpg": true + }, + { + "checksum": "sha256:2dcee99ce05f5844438f827cf0cd1578f7863efb31c204bbc441cd2265ad9a7d", + "check_gpg": true + }, + { + "checksum": "sha256:dbc1d91408e0e115e1c084f4c28d2d15f07cfc8b6c6d766192b65a28407422e7", + "check_gpg": true + }, + { + "checksum": "sha256:9d1baa8d8cdd02711e1724b08de678f2bda92807a6ae0e9d1b6c2443e2810ffd", + "check_gpg": true + }, + { + "checksum": "sha256:faca2dc4a45d1bd365d9364ea59f361854f3379ef6f13e9fa0a85368a0621f45", + "check_gpg": true + }, + { + "checksum": "sha256:1a096ed78df5a9339c4b3c15372275a884a1124b048ffcfbdb768db881e47ab2", + "check_gpg": true + }, + { + "checksum": "sha256:ea775b1806d30c2d076f685977c0efbe57ff2afcf10a3c8f8f1a250ecb9ef5b6", + "check_gpg": true + }, + { + "checksum": "sha256:56bc7a11331fe199a45bc23f348deff8cd5e1ee02c617b6ed429d61ba537fc8b", + "check_gpg": true + }, + { + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "checksum": "sha256:7149be5bd74792181003b872a9bc636157f4b795b12374c0857fb7271f2567ac", + "check_gpg": true + }, + { + "checksum": "sha256:7cac868a4b1ac9c380192a31a45a314613af3f958aaf2b778642667dc73bc182", + "check_gpg": true + }, + { + "checksum": "sha256:6028f86f132faee662e97075270f68e8125fd339c8689a2b661facd25c3b829b", + "check_gpg": true + }, + { + "checksum": "sha256:91cd21ca1f5b881a78e9c0a6dd3cdad7401f7216a1ab3acbe9337d8e3e054a5e", + "check_gpg": true + }, + { + "checksum": "sha256:b78889f3a2ac801456c643fd5603017383221aa33eac381e4f74b9a13fbf3830", + "check_gpg": true + }, + { + "checksum": "sha256:fe06eff5ac0e3e538775aad2cb0f801af491476e9cb508caa9107f4a5f913e52", + "check_gpg": true + }, + { + "checksum": "sha256:836a45edfd4e2cda0b6bac254b2e6225aad36f9bae0f96f2fe7da42896db0dae", + "check_gpg": true + }, + { + "checksum": "sha256:0042a3d3b19152d0a16ee321cbe99208a2f4ebd009515c1f6f962a1d5f9cde26", + "check_gpg": true + }, + { + "checksum": "sha256:15a8a718cb6f629474fec7756b4701430e14ff94aad6cf6fe20f3eb7174a7783", + "check_gpg": true + }, + { + "checksum": "sha256:a830bb13938bedaf5cc91b13ab78e2cf9172b06727b7e9e1bec2cddce8dd9e2d", + "check_gpg": true + }, + { + "checksum": "sha256:7bd98aa2d554f06ab525320ebf628a6e002011462e71a47337676a2c99de5aec", + "check_gpg": true + }, + { + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "checksum": "sha256:ed19ff9b81a5a72262a95b8ff52c867efc43aa50d28171328afd4791ee3daef8", + "check_gpg": true + }, + { + "checksum": "sha256:0175f5d1834c1cb4a1f44c9ae20960fa674f26add0b88f903407abf2f3d22f82", + "check_gpg": true + }, + { + "checksum": "sha256:05121688770a80889f1e1d0594a5b14d6ac30cc6fe4d431e3aa829f2290ea973", + "check_gpg": true + }, + { + "checksum": "sha256:eb98f6ee22b110395790e83648339d36f74068883d3d6a7a8a3ecb9cbf55bc60", + "check_gpg": true + }, + { + "checksum": "sha256:1fab76e36bbad6727634f2a8ce6e722c0e6ca814969948ffd6ce7250bc75e7f3", + "check_gpg": true + }, + { + "checksum": "sha256:3ea53f635b4f559b2bdb0e58d54dbfddc126b18abe23b46b94aecbf7c0d5132c", + "check_gpg": true + }, + { + "checksum": "sha256:07b37612b8e0f09885ad653f3dbd2ff95a65bfd8b21c69d1cc20a4f3dbc0ef32", + "check_gpg": true + }, + { + "checksum": "sha256:ea44ae1c951d3d4b30ff2a2d898c041ce9072acc94d6ea1e0e305c45e802019f", + "check_gpg": true + }, + { + "checksum": "sha256:af826bfb93a53a0bbb0209f721fc7d15c0b5200c3f81c93ef9620cc640e90b77", + "check_gpg": true + }, + { + "checksum": "sha256:2c9bf996e1550ed5ad42398187ee14d65315d13ec5c9e2eab32b8fed0743b1fc", + "check_gpg": true + }, + { + "checksum": "sha256:831fcc64c103f60608b08f4f47c2b7b5b43571cef7576b9e549e6ae001434da5", + "check_gpg": true + }, + { + "checksum": "sha256:ef9bff2d88851209d35f9824e02fc431fba5e5347752ea1c197a57c0c45ad401", + "check_gpg": true + }, + { + "checksum": "sha256:2d7ad38e86f5109c732a32bf9bea612c4c674aba6ad4cca2d211d826edc7fd6f", + "check_gpg": true + }, + { + "checksum": "sha256:50d91ca18b6cdc9395424b852d2828d1b75e2af318932a2442376d2a10819f6a", + "check_gpg": true + }, + { + "checksum": "sha256:6f7b4c0efee821ea122401d350274334c6ef2d62dcacbe40942a00b162b6025b", + "check_gpg": true + }, + { + "checksum": "sha256:22954219a63638d7418204d818c01a0e3c914e2b2eb970f2e4638dcf5a7a5634", + "check_gpg": true + }, + { + "checksum": "sha256:2bc82e132696d9daa4eef545ff3352d6eb588b9a1b9584e515d15a7c3d6471df", + "check_gpg": true + }, + { + "checksum": "sha256:c494a613443f49b6cca4845f9c3410a1267f609c503a81a9a26a272443708fee", + "check_gpg": true + }, + { + "checksum": "sha256:64b64bab720df9dd7fd37ebf80a07795a95ac11e640eda3209b6517dcd7133e5", + "check_gpg": true + }, + { + "checksum": "sha256:9db3ade981c564c361eed9068cd35acac93c1b1db54b6fb2a74070ce68141cff", + "check_gpg": true + }, + { + "checksum": "sha256:33788835331bed7f75e5cd2126d8d75511211175c9ac6d93824baec1a546a28d", + "check_gpg": true + }, + { + "checksum": "sha256:d4fd722ee0ff5da4114b91964e430e4e45c1a428739f1e5be5db7854e5c85f11", + "check_gpg": true + }, + { + "checksum": "sha256:2c4d03577e8661920a7b64fcc68735b795288744f1b188512a96960143030474", + "check_gpg": true + }, + { + "checksum": "sha256:ae08e152061808ccc334cc611d8ea4d18c05daa6b68731e255a533d0572594ae", + "check_gpg": true + }, + { + "checksum": "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4", + "check_gpg": true + }, + { + "checksum": "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9", + "check_gpg": true + }, + { + "checksum": "sha256:db514e9d99e58e08e698083e1ca969f9fc98ae27ee9b63aa8d2133bd95a7002e", + "check_gpg": true + }, + { + "checksum": "sha256:1befc4be3c3c72b3210e54f96f4334f268eaecdd3b77af7cadea0ef31f0e2ca9", + "check_gpg": true + }, + { + "checksum": "sha256:a7394cd1b11a1b25efaab43a30b1d9687683884babc162f43e29fdee4f00bda8", + "check_gpg": true + }, + { + "checksum": "sha256:086552102da5fd978a4722ddd21381d432abb9f886cd97761d2efbff2c588791", + "check_gpg": true + }, + { + "checksum": "sha256:45e2c1c76a0a0b6e1164c457307250a54a7de5905992b4351a84183c2e9f2633", + "check_gpg": true + }, + { + "checksum": "sha256:cc2019e304ecdfa3a245de005342c8d617d1da0d834e510849764fb38b929655", + "check_gpg": true + }, + { + "checksum": "sha256:b532ac1225423bbce715f47ae83c1b9b70ac1e7818760a498c83aab0ae374c99", + "check_gpg": true + }, + { + "checksum": "sha256:94d02790ff430efebbfc12ca2c2029c66e1691b70baf7cf45159fb8464d38e56", + "check_gpg": true + }, + { + "checksum": "sha256:fe7ee39b0779c467c5d8a20daff4911e1967523e6fc748179e77584168e18bde", + "check_gpg": true + }, + { + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "checksum": "sha256:a973f92acb0afe61087a69d13a532c18a39dd60b3ba4826b38350f2c6b27e417", + "check_gpg": true + }, + { + "checksum": "sha256:8db16495c82aeba17b61896e6414f2ce212088370e88cf73b8999bf2317c015c", + "check_gpg": true + }, + { + "checksum": "sha256:15b2402e11402a6cb494bf7ea31ebf10bf1adb0759aab417e63d05916e56aa45", + "check_gpg": true + }, + { + "checksum": "sha256:5b1cb1251cf7f65c50d9e3fcc11901fef5132dc177cce68a50918da481bb7629", + "check_gpg": true + }, + { + "checksum": "sha256:c030084d188fc99359cc088bd77d2ee6578e717f1cf2d067b8967c6cbe863c6e", + "check_gpg": true + }, + { + "checksum": "sha256:57ee793c1f8dc1c9b58953b03d7041501eea326cefc4dda6de640761c60e31f8", + "check_gpg": true + }, + { + "checksum": "sha256:5fa81b28d5100f987cd8d9317ccf200ec5b94d11ed3c8e2e90137b8981e71c61", + "check_gpg": true + }, + { + "checksum": "sha256:6fcaddc0fde4e23d6650cd46b3763903c7b693afa69aad52fdf87a8563aa5f84", + "check_gpg": true + }, + { + "checksum": "sha256:e30482032783ab59417bfaf8394be42d2e2e779a580979bd87f15bd0880df858", + "check_gpg": true + }, + { + "checksum": "sha256:0178be1e5d6da8053061d29013d8fda8445d37eac908afbf4a2ca92faf950f2c", + "check_gpg": true + }, + { + "checksum": "sha256:85dc7962af97e86a655b8ec5d5276e511f50b1d4abe624f4d8cb0d784007e342", + "check_gpg": true + }, + { + "checksum": "sha256:a718bc2a857bde398de2375efae50dac568217f547b272d7cbe0a1655ec0d961", + "check_gpg": true + }, + { + "checksum": "sha256:afba861f69234f4cb4040085a4868c7424666a4356d0e2002e16b0afb75ec0d2", + "check_gpg": true + }, + { + "checksum": "sha256:b867eeba06e6fc9084c227d8b3ea54f1815cb1833a29babf114fa1167aa17f2d", + "check_gpg": true + }, + { + "checksum": "sha256:9738af51bf206850f6611306bed20542ed32a1701188611caab0b6896e4ffb37", + "check_gpg": true + }, + { + "checksum": "sha256:026212c277c72facfd48901978afded50fc4050aedaa06a24e5e57875ce48c32", + "check_gpg": true + }, + { + "checksum": "sha256:30bf2e7deddad50a3054827c98e97adfd3ae1d24ae248980649db289198135a8", + "check_gpg": true + }, + { + "checksum": "sha256:a3775cb3bc81bb5444e26695a62b1bd2eb48a91d7bc3a361d763c185cb817de1", + "check_gpg": true + }, + { + "checksum": "sha256:7417889b8455ba87230fd5a987fe160d86de8250b87d7ae9bbcba90c32053172", + "check_gpg": true + }, + { + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "checksum": "sha256:77297d07807ddcb85bad6fd788c6f1692af47d00ad27305f3e2217e34e81f538", + "check_gpg": true + }, + { + "checksum": "sha256:a580e36566f6ffceef809e49fc4c7f9b1418a16123d4d49079c8423b6a337e67", + "check_gpg": true + }, + { + "checksum": "sha256:29bcc2f3f85ca7bdc22178af3e16743f55353bd9f25fb4c748d8c9f7117fe56f", + "check_gpg": true + }, + { + "checksum": "sha256:056227b8324dbabe392ac9b3e8a28ae7fa1b630f5d06cc156e687b988a49c6bd", + "check_gpg": true + }, + { + "checksum": "sha256:54613bd9e0524bb992bd7779c80a24b12df744085031cb8f3defb5fae55ca0f5", + "check_gpg": true + }, + { + "checksum": "sha256:1bc0bced158db1fdd71c8c9211a6fae4e351720b8156d98059f62a945f97cf72", + "check_gpg": true + }, + { + "checksum": "sha256:8f4be33cb040f081bb1f863b92e94ac7838af743cb5a0ce9d8c8ec9a611f71a6", + "check_gpg": true + }, + { + "checksum": "sha256:bcb0cd53344744f9c8d11041eb76fc5b304f78c791846521bbe105e78f2bd0f8", + "check_gpg": true + }, + { + "checksum": "sha256:1eb386a258cebf600319b1f18344b047c9182485936d96da9c2b1067ac1c1bba", + "check_gpg": true + }, + { + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "checksum": "sha256:857330a729697c1b6e8d86550391f1abf4db87d5ffeffeb5f00065fa8be85cbd", + "check_gpg": true + }, + { + "checksum": "sha256:bcb07748c8688c788ec69c3a33c0abd1bb3a496b9aa09b5729265670bc7ba0eb", + "check_gpg": true + }, + { + "checksum": "sha256:16902074f43963a360df42fec639f8b30ad29ee0d8a9799ac26ff0ba5c60e4cd", + "check_gpg": true + }, + { + "checksum": "sha256:5719dd2fb399cadec08b4ac41c794239d2a2de2f012faeb970ab90a07bba0084", + "check_gpg": true + }, + { + "checksum": "sha256:844ee747d24d934104398be60747b407d19c8106ead11b06fe92fcc62bd765fc", + "check_gpg": true + }, + { + "checksum": "sha256:e7b9fd73c260cd22d3a36823530d4f623ea0e16844b900a5677c769afa76341c", + "check_gpg": true + }, + { + "checksum": "sha256:81b6181b947d50e0a1ea681298417e552421d6714900d07a34dc25899e5c9f60", + "check_gpg": true + }, + { + "checksum": "sha256:bbf9571bf10df55a90e73b372da33b6ac54fad5778cea58064b7b57dcbb17180", + "check_gpg": true + }, + { + "checksum": "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862", + "check_gpg": true + }, + { + "checksum": "sha256:092370d1e62096782f329944df0e7e01cc49bbc0fa4071d63f352cf45e89e5bc", + "check_gpg": true + }, + { + "checksum": "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4", + "check_gpg": true + }, + { + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "checksum": "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576", + "check_gpg": true + }, + { + "checksum": "sha256:fe96e7fe3da0db38b8b8850c9dedd50c1358309fee24c774bc64ddee62bb11be", + "check_gpg": true + }, + { + "checksum": "sha256:79defc84763baec2190da8941221abfa002d6f6c9e8c3486e2c492389fca2a57", + "check_gpg": true + }, + { + "checksum": "sha256:61c51596cc97f35177efe8dc5e2ca52d8fd528570f33c184497f419259b73c90", + "check_gpg": true + }, + { + "checksum": "sha256:645f82cf62da25742cab5e8ffd1f764301b84ab19710d9f3fb3aff1cb57ffdc6", + "check_gpg": true + }, + { + "checksum": "sha256:4c9d77d63ddc7dda0e018fc1c97d46025794e336e58d838a631fcc130dfa3b9b", + "check_gpg": true + }, + { + "checksum": "sha256:6615aae3def0c49910e43e2d69f7ae8852694953dceb4b6235b5cf4099296d70", + "check_gpg": true + }, + { + "checksum": "sha256:6890a9545194ad6cf1b0c58e5273132171a9ced9cb665a1442aa62b6b6d3d2ea", + "check_gpg": true + }, + { + "checksum": "sha256:d0bc781a80be1d1fe204ec6b26255240261d55f6e24a28343572f2221a00533e", + "check_gpg": true + }, + { + "checksum": "sha256:e76aea00d64d100bafcea1672ce65f8bfd47bdf7e0dc7bf859fc0c6ec29d5823", + "check_gpg": true + }, + { + "checksum": "sha256:023d3d7be30607410a2357b50b8ef3f94a07baf2842bfba0421f803600ec605f", + "check_gpg": true + }, + { + "checksum": "sha256:32a00991ec85f0bf2a336e00033a0e70b0da963eb42d81bbad18a7a11f41d4eb", + "check_gpg": true + }, + { + "checksum": "sha256:84313c8f10f91d10e4f734c3a605b0a771d2faa72bf43deeed60a4cf3606a0da", + "check_gpg": true + }, + { + "checksum": "sha256:eded265cff5d22b89a955570eba030643d6730dd5987c2efed3110ef74cd0254", + "check_gpg": true + }, + { + "checksum": "sha256:a2fcc535573ade5656cdb6968eb13dd68380540b5f25a0eca3947676dc5f11d6", + "check_gpg": true + }, + { + "checksum": "sha256:391faab010ca30610a14e0b3d54fbc0331be39bc831086fb877f8021fe4b171f", + "check_gpg": true + }, + { + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "checksum": "sha256:f6203a41ed91197bb770a38a101d977f0f56de86ccc5a71cee9c0e198f26bcbc", + "check_gpg": true + }, + { + "checksum": "sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2", + "check_gpg": true + }, + { + "checksum": "sha256:4860a733ca3f22089c6c283cbdcf53123a702d60b5bffdd4fe9d76826f91139a", + "check_gpg": true + }, + { + "checksum": "sha256:a0b87b2dc3c5f536e94d6a4f3563a621dfbc067a62c3d1fe69bdb70c3cecec57", + "check_gpg": true + }, + { + "checksum": "sha256:f0143760628def255de0b7e1aba6f7880705329703f7357425868483ba8f43e7", + "check_gpg": true + }, + { + "checksum": "sha256:a107b3d3790a5bcfdc28f6f4718969039b103a681a2647f3cbcb82cf92e97acb", + "check_gpg": true + }, + { + "checksum": "sha256:fa791a4328b4c41b7190d862de921605f266a64abee03b2ea2e8d2b644be307f", + "check_gpg": true + }, + { + "checksum": "sha256:c93df175a0a4989aaaeb170406d8ff13a2cd93a5fc52ad33468245fea2044a86", + "check_gpg": true + }, + { + "checksum": "sha256:0055cc4eccd54df5b64c194618a26e894a0d61781c8d1f1f48687bfd296b15e4", + "check_gpg": true + }, + { + "checksum": "sha256:d611f0c4252c4c4b893850807748e62cf4d17d72d544ef2744091df3206d8178", + "check_gpg": true + }, + { + "checksum": "sha256:34efde201252afe93ec3af61af30c6d32cfbe5ecbdcecaf4667666f12482757d", + "check_gpg": true + }, + { + "checksum": "sha256:82d2eaad75cf45da9773298344dcbbaebb4da5b67526a6c43bc67d3f84d98616", + "check_gpg": true + }, + { + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "checksum": "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f", + "check_gpg": true + }, + { + "checksum": "sha256:acafdf6b20fea5974da004b77eced20b00c59a908edcef9c4c4e60815fdbf8f3", + "check_gpg": true + }, + { + "checksum": "sha256:3882823d0eb18e0e8146584f4a32a4801961f6fdc09075607746317eba3265be", + "check_gpg": true + }, + { + "checksum": "sha256:3d6ec574fe2c612bcc45395f7ee87c68f45016f005c6d7aeee6b37897f41b8d2", + "check_gpg": true + }, + { + "checksum": "sha256:6007c88c459315a5e2ce354086bd0372a56e15cdd0dc14e6e889ab859f8d8365", + "check_gpg": true + }, + { + "checksum": "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58", + "check_gpg": true + }, + { + "checksum": "sha256:d2bd77606d1c91208be05edce6ea04c24fa2efc880569eecb958afde1a7fb17e", + "check_gpg": true + }, + { + "checksum": "sha256:0c30a7fd9f69ad808183afa0814e363689ff63e7a82856a790e5fa111c031b96", + "check_gpg": true + }, + { + "checksum": "sha256:7fe5838c895cd1158a6ae2afb3794e79e393d6701330e1109592e6b45f4bd876", + "check_gpg": true + }, + { + "checksum": "sha256:91ab783e9eb00d5baba65989c86c3d742033bd2306ff7adb0b78185f28d2ca86", + "check_gpg": true + }, + { + "checksum": "sha256:7d5d62696fc69bb890912be71c05e92496129f198838cb56d349a8fc700a85a6", + "check_gpg": true + }, + { + "checksum": "sha256:33ca43cf0714aef344a70be4cfa42322694cc975a2eeee0bf31325dbca7f2842", + "check_gpg": true + }, + { + "checksum": "sha256:378b476e531108bc1944e1c27fa7e269bb10dfc84f5e0a7c2c1cb17d2f7f4280", + "check_gpg": true + }, + { + "checksum": "sha256:ccf07a3682a1038a6224b3da69e20f201584ed1c879539cedb57e184aa14429a", + "check_gpg": true + }, + { + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "checksum": "sha256:debd948a7e454f07dd7ab8ed79984158b98ce333d77be948e4393bb87c518ab8", + "check_gpg": true + }, + { + "checksum": "sha256:a92c4a583aacd37beb069c996307bd782f809c78fd1fb802de25a53efbaff8f8", + "check_gpg": true + }, + { + "checksum": "sha256:bc2c4637779e037072ebbd00215afbb33ce05706c7851cfde4cc0637c63f75f3", + "check_gpg": true + }, + { + "checksum": "sha256:c75bf533b09243daeca728129a6fe10fca47d0c150fd43b5dab7b4993584536f", + "check_gpg": true + }, + { + "checksum": "sha256:cc531264ae00fbc4e465b6b47c8f3772edee80346b92cee1fae88d8cdb9dcdcf", + "check_gpg": true + }, + { + "checksum": "sha256:b3657ad1419ab11e07608c7bc4da75a91162b2398d66febfc061795bc1587036", + "check_gpg": true + }, + { + "checksum": "sha256:5ce4acbf25abd83a562f20e9a8a73b8860a766fb543d69ed9db6eb57fd75fc70", + "check_gpg": true + }, + { + "checksum": "sha256:46aa2a21a000eb70097a86788d853602f7db1238156f2364a802f0b37f0dc4e6", + "check_gpg": true + }, + { + "checksum": "sha256:56b5cea4fa7f4d74d4d15aae43ab4827387dead4659bd2bede66c38057cd19e7", + "check_gpg": true + }, + { + "checksum": "sha256:41c6a8ea4240f2fa6cea0333cc6d5f59731ac843398eb457c182e90af367783c", + "check_gpg": true + }, + { + "checksum": "sha256:52aa6e698e60cd360d5b9473fd1ebcc7e238e2125449bfdcc41b3e0fe13ae645", + "check_gpg": true + }, + { + "checksum": "sha256:9baa05a69943b0c6274403276f45817ab56193de62b5b64205b4fd35951e0895", + "check_gpg": true + }, + { + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "checksum": "sha256:ff6540076bd7247ca2c1c8beb8979adb5eaf27877125c7f5cc187dc10913048f", + "check_gpg": true + }, + { + "checksum": "sha256:2f849fdf4588b1b4e86a008b6a82f30ff2ec1db1ae2bd21e067c6f910e4cb237", + "check_gpg": true + }, + { + "checksum": "sha256:3242e0ce48f95d7a271125cf1222b5af09e20fe85194623d95336e1c678bdee8", + "check_gpg": true + }, + { + "checksum": "sha256:a6c26dd0ba8fc6a15e845f72f90e89b62f7344d7793896e707e610286b5e4541", + "check_gpg": true + }, + { + "checksum": "sha256:91e35b3750f5029be019542a4143cf00de68559b9ab6ae6df2c8f7ea6e60acd9", + "check_gpg": true + }, + { + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "checksum": "sha256:654a9a9997c975998e1cb5d9250cd34b9d9d4d69f43c9282e67ad4d38fa2bcdf", + "check_gpg": true + }, + { + "checksum": "sha256:25e6968493572c680d6f8cad03e591f6e1e0e6ce0d1fbe3648d4b64ba529491d", + "check_gpg": true + }, + { + "checksum": "sha256:20f32df3b4961ef659a4822686978e0501fc5262e942046b53b24ed11e77476b", + "check_gpg": true + }, + { + "checksum": "sha256:d552c735d48fa647509605f524863eab28b69b9fc8d7c62a67479c3af0878024", + "check_gpg": true + }, + { + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "checksum": "sha256:fc6b083682762fb891b50ed6e9f684ac54a2a05a78e24078ff66d4636ae89588", + "check_gpg": true + }, + { + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "checksum": "sha256:202d761caf4c9d4937c04388a7180d6687a79e8141136be0f7ecc3a54bf80594", + "check_gpg": true + }, + { + "checksum": "sha256:48381163a3f2c524697efc07538f040fde0b69d4e0fdcbe3bcfbc9924dd7d5dd", + "check_gpg": true + }, + { + "checksum": "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf", + "check_gpg": true + }, + { + "checksum": "sha256:0a31a882e4ac33233b36e2c61cc09125a936f54877137d5bb2ddc1ca8a5f9a12", + "check_gpg": true + }, + { + "checksum": "sha256:df7184fef93e9f8f535d78349605595a812511db5e6dee26cbee15569a055422", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "redhat": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "vfs_type": "ext4", + "path": "/", + "options": "defaults", + "freq": 1, + "passno": 1 + }, + { + "uuid": "46BB-8120", + "vfs_type": "vfat", + "path": "/boot/efi", + "options": "umask=0077,shortname=winnt", + "passno": 2 + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "kernel_opts": "ro biosdevname=0 net.ifnames=0", + "uefi": { + "vendor": "fedora" + } + } + }, + { + "name": "org.osbuild.systemd", + "options": { + "enabled_services": [ + "cloud-init.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service" + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "qcow2", + "filename": "disk.qcow2", + "size": 2147483648, + "ptuuid": "8DFDFF87-C96E-EA48-A3A6-9408F1F6B1EF", + "pttype": "gpt", + "partitions": [ + { + "start": 2048, + "size": 972800, + "type": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B", + "uuid": "02C1E068-1D2F-4DA3-91FD-8DD76A955C9D", + "filesystem": { + "type": "vfat", + "uuid": "46BB-8120", + "label": "EFI System Partition", + "mountpoint": "/boot/efi" + } + }, + { + "start": 976896, + "uuid": "8D760010-FAAE-46D1-9E5B-4A2EAC5030CD", + "filesystem": { + "type": "ext4", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/acl-2.2.53-5.fc32.aarch64.rpm", + "checksum": "sha256:e8941c0abaa3ce527b14bc19013088149be9c5aacceb788718293cdef9132d18", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "6.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/alternatives-1.11-6.fc32.aarch64.rpm", + "checksum": "sha256:10d828cc7803aca9b59e3bb9b52e0af45a2828250f1eab7f0fc08cdb981f191d", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.aarch64.rpm", + "checksum": "sha256:63cef561bcaadd5b9a1bf93b968f284ca76c3ad2b90b5c439b62456c0517164f", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm", + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.11", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/bash-5.0.11-2.fc32.aarch64.rpm", + "checksum": "sha256:5b304375adf911d056b36dc35f22af027d9283efbaebcb8231f052aef3982f05", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.aarch64.rpm", + "checksum": "sha256:caf76966e150fbe796865d2d18479b080657cb0bada9283048a4586cf034d4e6", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2020.2.40", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm", + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/coreutils-8.32-3.fc32.1.aarch64.rpm", + "checksum": "sha256:8961e2f35093845b7498c03f1a9776f7c49f7d9d057f56b0774f470b8e8179ff", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/coreutils-common-8.32-3.fc32.1.aarch64.rpm", + "checksum": "sha256:8d08e12adb541773aa8073a1aa6b02fbbd8539fe3597a60ac934732930cd5981", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cracklib-2.9.6-22.fc32.aarch64.rpm", + "checksum": "sha256:081d831528796c3e5c47b89c363a0f530bf77e3e2e0098cd586d814bea9a12f0", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.aarch64.rpm", + "checksum": "sha256:ca85fd192aa25f8fc630c28c8858cf3065a2b32f3ba3a373ffd3ea49b0f0813c", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.aarch64.rpm", + "checksum": "sha256:96f3fbcfb91ae41de7e514fe0b619aab870ea4d5f53544c0fd215284cb0b68e2", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/curl-7.69.1-1.fc32.aarch64.rpm", + "checksum": "sha256:d91a87c9d6dd3924d2fe7992f88f2542cce3451b7ff2576eb4d65d9ca1a7620f", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.aarch64.rpm", + "checksum": "sha256:b9904d16c86c28074bfdba38a3a740b61ad5de50a9945d550021027130fcfd41", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-1.12.16-4.fc32.aarch64.rpm", + "checksum": "sha256:067d98bda561e94f9f0bba60f691dc8ba4610434603f26cf6f4fa22677da8465", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "22", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-broker-22-1.fc32.aarch64.rpm", + "checksum": "sha256:60c9a00d8c528ad5806a5fec20ed3ffb8ad195e9eb9bf5294893e8425be1fa9f", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm", + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-libs-1.12.16-4.fc32.aarch64.rpm", + "checksum": "sha256:86959d2fd51c4d52fa5fcdf91c226ffdece5960299c15f29adc2a5c0bf05397b", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/deltarpm-3.6.2-5.fc32.aarch64.rpm", + "checksum": "sha256:9c8ec2364045411b95cfb3995d2189f0082832af7bf7280ec1cdf7bfee1afe05", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/device-mapper-1.02.171-1.fc32.aarch64.rpm", + "checksum": "sha256:18c188f63504b8cf3bc88d95de458a1eb216bca268378a6839618ef7468dc635", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.aarch64.rpm", + "checksum": "sha256:5d52cffee2d5360db8cf7e6ed4b19a68de4a0ae55f42ed279d4fdb3a70bb72f3", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/diffutils-3.7-4.fc32.aarch64.rpm", + "checksum": "sha256:13290758e03b977aed5e23b7ba9a01157b6802fd78baf75bc1fc184864e9e31e", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "10.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dosfstools-4.1-10.fc32.aarch64.rpm", + "checksum": "sha256:a12bd9183ce051f7c483506540f7682206a9cbd27b34cb7734be6583bc5d11db", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.aarch64.rpm", + "checksum": "sha256:d3281a3ef4de5e13ef1a76effd68169c0965467039059141609a078520f3db04", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.aarch64.rpm", + "checksum": "sha256:7f667fb609062e966720bf1bb1fa97a91ca245925c68e36d2770caba57aa4db2", + "check_gpg": true + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.aarch64.rpm", + "checksum": "sha256:a499f61c75ef2179b2da62647b64b716fec1af2f15653876a27e57c284921baf", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm", + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-libelf-0.179-1.fc32.aarch64.rpm", + "checksum": "sha256:8c545e3282deed08d36bb138f1ba15d02dfd1066f46f45582e24b6dc5b07cb6b", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-libs-0.179-1.fc32.aarch64.rpm", + "checksum": "sha256:c47b5f407d000d200f595e7f5026e72cae8b43416c17e5bb943551a9ddc5422e", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/expat-2.2.8-2.fc32.aarch64.rpm", + "checksum": "sha256:4940f6e26a93fe638667adb6e12969fe915b3a7b0cfeb58877dd6d7bccf46c1a", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm", + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-release-32-1.noarch.rpm", + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-release-common-32-1.noarch.rpm", + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-repos-32-1.noarch.rpm", + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/file-libs-5.38-2.fc32.aarch64.rpm", + "checksum": "sha256:aa7fd8a1313c0e384353da5e054dad62205b4f0e112a4a45eb414eb357513e04", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.14", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/filesystem-3.14-2.fc32.aarch64.rpm", + "checksum": "sha256:f8f3ec395d7d96c45cbd370f2376fe6266397ce091ab8fdaf884256ae8ae159f", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "9.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fuse-libs-2.9.9-9.fc32.aarch64.rpm", + "checksum": "sha256:5cc385c1ca3df73a1dd7865159628a6b0ce186f8679c6bc95dda0b4791e4a9fc", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gawk-5.0.1-7.fc32.aarch64.rpm", + "checksum": "sha256:62bafab5a0f37fdec29ce38bc1d635e0a81ab165061faaf5d83f5246ca4e2db0", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.aarch64.rpm", + "checksum": "sha256:aa667df83abb5a675444e898fb7554527b2967f3bdc793e6b4b56d794f74b9ef", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.64.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glib2-2.64.1-1.fc32.aarch64.rpm", + "checksum": "sha256:6837a13f3c643b5da33bd694efc4e95f54b5cc5e15de61884644378367d55804", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-2.31-2.fc32.aarch64.rpm", + "checksum": "sha256:36a3ae11acb7916e932ff704a4527b126bb39f9e849072b16242719c8de11119", + "check_gpg": true + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-all-langpacks-2.31-2.fc32.aarch64.rpm", + "checksum": "sha256:fdb1ed306445c6a37fb7182def5983a66501c5eb8be5f1b08c38db5f3613561f", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-common-2.31-2.fc32.aarch64.rpm", + "checksum": "sha256:2590d214d4986fa95653e7f83e67a81dbf822b621994a9ab867e7c377bc479c2", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gmp-6.1.2-13.fc32.aarch64.rpm", + "checksum": "sha256:5b7a135c35562e64344cc9f1ca37a5239649152cc055e14e7bf9bf84843eccab", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnupg2-2.2.19-1.fc32.aarch64.rpm", + "checksum": "sha256:cebb9ee0271c7199cb057c9a722b17c6fe59a0b0ec7f438ef6e0c35d4b5f330e", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.aarch64.rpm", + "checksum": "sha256:11004aa2821bdebfca77ab93e7ed405e0e93eb685850f5fb57b01762692ce155", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.13", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnutls-3.6.13-1.fc32.aarch64.rpm", + "checksum": "sha256:532a58ae361b9c0bc147037fb96f338684b949bd4071b19bac322b8967c32a01", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gpgme-1.13.1-6.fc32.aarch64.rpm", + "checksum": "sha256:11204917b909836508acff0df2499301d3b2f8f0a1c0e341de904ac9fb4bbedf", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grep-3.3-4.fc32.aarch64.rpm", + "checksum": "sha256:f148b87e6bf64242dad504997f730c11706e5c0da52b036b8faebb5807d252d9", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gzip-1.10-2.fc32.aarch64.rpm", + "checksum": "sha256:50b7b06e94253cb4eacc1bfb68f8343b73cbd6dae427f8ad81367f7b8ebf58a8", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.aarch64.rpm", + "checksum": "sha256:c25bb676affa185a2c4671859484bd24f62d2ec9c4d67584590bb14dd0396775", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iptables-libs-1.8.4-7.fc32.aarch64.rpm", + "checksum": "sha256:f26fae2e85396d00d7935b21154ba7a0fa591495c59973abd59455e181bf84d1", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "9.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/j/json-c-0.13.1-9.fc32.aarch64.rpm", + "checksum": "sha256:06d6f5d9909beb1cc6731dc6d5d86b9e7885285848bad8ef16079ad3e8824e0b", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/keyutils-libs-1.6-4.fc32.aarch64.rpm", + "checksum": "sha256:a05c8fb554ed38050b59d10f587ac70cf341c1f38b02ffe8a8433f7fc16efd68", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kmod-libs-27-1.fc32.aarch64.rpm", + "checksum": "sha256:7684be07a8e054660705f8d6b1522d9a829be6614293096dc7b871682e445709", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/krb5-libs-1.18-1.fc32.aarch64.rpm", + "checksum": "sha256:a01d61d802834e2e6789548f707877827fb394c90097705af9c391e6bfcd6c24", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libacl-2.2.53-5.fc32.aarch64.rpm", + "checksum": "sha256:98d58695f22a613ff6ffcb2b738b4127be7b72e5d56f7d0dbd3c999f189ba323", + "check_gpg": true + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.111", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libaio-0.3.111-7.fc32.aarch64.rpm", + "checksum": "sha256:e7b49bf8e3183d7604c7f7f51dfbc1e03bc599ddd7eac459a86f4ffdc8432533", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.2", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libarchive-3.4.2-1.fc32.aarch64.rpm", + "checksum": "sha256:340a82cfe6a9d18933b99a4e001d7e54f7ab225fe5e7fb1a7f51cb1c675c7050", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libargon2-20171227-4.fc32.aarch64.rpm", + "checksum": "sha256:6ef55c2aa000adea432676010756cf69e8851587ad17277b21bde362e369bf3e", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libassuan-2.5.3-3.fc32.aarch64.rpm", + "checksum": "sha256:1c982f31133def3baea707e0d1f0fe4a014d2c8c5f20ac8d69362cff4f26d5e9", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "8.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libattr-2.4.48-8.fc32.aarch64.rpm", + "checksum": "sha256:caa6fe00c6e322e961c4b7a02ba4a10cc939b84121e09d07d331adcdc2ae1af2", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libblkid-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:fe8b11652adfe4c64d96b442d5b31da207dfdf4a551c491c0934498537c8dfc5", + "check_gpg": true + }, + { + "name": "libbrotli", + "epoch": 0, + "version": "1.0.7", + "release": "10.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libbrotli-1.0.7-10.fc32.aarch64.rpm", + "checksum": "sha256:95581bd0421b0fddf94b046e0bf8f13d3ce3d797acd5292d87127ed9e9505d80", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcap-2.26-7.fc32.aarch64.rpm", + "checksum": "sha256:0a2eadd29cc53df942d3f0acc016b281efa4347fc2e9de1d7b8b61d9c5f0d894", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.10", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcap-ng-0.7.10-2.fc32.aarch64.rpm", + "checksum": "sha256:5875ba2d9b9ced8b2d2faa880b5f1811a89e17defe946ccf99b201790a0d2520", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcom_err-1.45.5-3.fc32.aarch64.rpm", + "checksum": "sha256:93c5fe6589243bff8f4d6934d82616a4cce0f30d071c513cc56f8e53bfc19d17", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcomps-0.1.14-4.fc32.aarch64.rpm", + "checksum": "sha256:e2eecb13c57728ce4c8e04ad8747ca51fe086a58bd55c0d3d29cf9683d0d09ad", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcurl-7.69.1-1.fc32.aarch64.rpm", + "checksum": "sha256:cc30c04cfc6be2239727608174e90ac766cb7c77cdd1b70c4be619cb2df42a52", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdb-5.3.28-40.fc32.aarch64.rpm", + "checksum": "sha256:7bfb33bfa3c3a952c54cb61b7f7c7047c1fd91e8e334f53f54faea6f34e6c0bb", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdb-utils-5.3.28-40.fc32.aarch64.rpm", + "checksum": "sha256:435530a0b9a086018694034ce48e9589348fc66389d884977b400f2f74814ac8", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdnf-0.45.0-3.fc32.aarch64.rpm", + "checksum": "sha256:62afc19040e8fbf7ac7946f02d67cdd19086658c3d8713a6c120482fd769537e", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "8.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libevent-2.1.8-8.fc32.aarch64.rpm", + "checksum": "sha256:ad874e09de00dbdb887eb6a94351869950ead7f6409dfa191d1443d3bb9dd255", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libfdisk-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:58988a2b7213098503b56d5388eba1bf2a01b9ff027961acb1e9f55c47d237ad", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "24.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libffi-3.1-24.fc32.aarch64.rpm", + "checksum": "sha256:291df16c0ae66fa5685cd033c84ae92765be4f4e17ce4936e47dc602ac6ff93e", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgcc-10.0.1-0.11.fc32.aarch64.rpm", + "checksum": "sha256:28892ae62cd1b4dadded523be8cb5f9e0fddeaa864919ee4b0dfad3bba8fd06f", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgcrypt-1.8.5-3.fc32.aarch64.rpm", + "checksum": "sha256:e96e4caf6c98faa5fb61bd3b13ee7afa0d7510d3176fe3d3cbf485847ce985fd", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgomp-10.0.1-0.11.fc32.aarch64.rpm", + "checksum": "sha256:09a9dd8c3ae4fe9a9817c71c4b2af35f2d7e1dbf2c9f4659028ce69a5d2f2d02", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgpg-error-1.36-3.fc32.aarch64.rpm", + "checksum": "sha256:cffbab9f6052ee2c7b8bcc369a411e319174de094fb94eaf71555ce485049a74", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.3.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libidn2-2.3.0-2.fc32.aarch64.rpm", + "checksum": "sha256:500c4abc34ff58e6f06c7194034b2d68b618c5e6afa89b551ab74ef226e1880a", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libksba-1.3.5-11.fc32.aarch64.rpm", + "checksum": "sha256:1ee4f732b1b4b237d7301219fc5c52b63c9ab9e77db746612852fef5610f69b7", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "10.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmetalink-0.1.3-10.fc32.aarch64.rpm", + "checksum": "sha256:c748420c4d7407a95f840416a80c468d8304e529f93b40a45081a49fd7a29232", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmnl-1.0.4-11.fc32.aarch64.rpm", + "checksum": "sha256:2356581880df7b8275896b18de24e432a362ee159fc3127f92476ffe8d0432fd", + "check_gpg": true + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmodulemd-2.9.1-1.fc32.aarch64.rpm", + "checksum": "sha256:c0ad832521885f97d08c043350b72f4fade0bbe995f81da8a18370a932bf5aee", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmount-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:1e533f7f64169288e90b3851e509cf1aedf4da0fe986288da53516b2b77ac77d", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.aarch64.rpm", + "checksum": "sha256:400c91d4d6d1125ec891c16ea72aa4123fc4c96e02f8668a8ae6dbc27113d408", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "17.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.aarch64.rpm", + "checksum": "sha256:a0260a37707734c6f97885687a6ad5967c23cb0c693668bf1402e6ee5d4abe1e", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.40.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnghttp2-1.40.0-2.fc32.aarch64.rpm", + "checksum": "sha256:17f5c9a25bf0f952f6defa6a857e938bfc1f72c69217f666a537bf8f1daff5f8", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "6.20180605git4a062cf.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.aarch64.rpm", + "checksum": "sha256:4139803076f102e2224b81b4f1da3f6d066b89e272201d2720557763f9acfcd5", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpcap-1.9.1-3.fc32.aarch64.rpm", + "checksum": "sha256:dbc1d91408e0e115e1c084f4c28d2d15f07cfc8b6c6d766192b65a28407422e7", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpsl-0.21.0-4.fc32.aarch64.rpm", + "checksum": "sha256:faca2dc4a45d1bd365d9364ea59f361854f3379ef6f13e9fa0a85368a0621f45", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpwquality-1.4.2-2.fc32.aarch64.rpm", + "checksum": "sha256:1a096ed78df5a9339c4b3c15372275a884a1124b048ffcfbdb768db881e47ab2", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.11.1", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/librepo-1.11.1-4.fc32.aarch64.rpm", + "checksum": "sha256:56bc7a11331fe199a45bc23f348deff8cd5e1ee02c617b6ed429d61ba537fc8b", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.12.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm", + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.2", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libseccomp-2.4.2-3.fc32.aarch64.rpm", + "checksum": "sha256:7149be5bd74792181003b872a9bc636157f4b795b12374c0857fb7271f2567ac", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.20.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsecret-0.20.2-2.fc32.aarch64.rpm", + "checksum": "sha256:7cac868a4b1ac9c380192a31a45a314613af3f958aaf2b778642667dc73bc182", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libselinux-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:6028f86f132faee662e97075270f68e8125fd339c8689a2b661facd25c3b829b", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libselinux-utils-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:91cd21ca1f5b881a78e9c0a6dd3cdad7401f7216a1ab3acbe9337d8e3e054a5e", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsemanage-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:b78889f3a2ac801456c643fd5603017383221aa33eac381e4f74b9a13fbf3830", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsepol-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:fe06eff5ac0e3e538775aad2cb0f801af491476e9cb508caa9107f4a5f913e52", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "10.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsigsegv-2.11-10.fc32.aarch64.rpm", + "checksum": "sha256:836a45edfd4e2cda0b6bac254b2e6225aad36f9bae0f96f2fe7da42896db0dae", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsmartcols-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:0042a3d3b19152d0a16ee321cbe99208a2f4ebd009515c1f6f962a1d5f9cde26", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsolv-0.7.11-2.fc32.aarch64.rpm", + "checksum": "sha256:15a8a718cb6f629474fec7756b4701430e14ff94aad6cf6fe20f3eb7174a7783", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libss-1.45.5-3.fc32.aarch64.rpm", + "checksum": "sha256:a830bb13938bedaf5cc91b13ab78e2cf9172b06727b7e9e1bec2cddce8dd9e2d", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libssh-0.9.3-2.fc32.aarch64.rpm", + "checksum": "sha256:7bd98aa2d554f06ab525320ebf628a6e002011462e71a47337676a2c99de5aec", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm", + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.aarch64.rpm", + "checksum": "sha256:3ea53f635b4f559b2bdb0e58d54dbfddc126b18abe23b46b94aecbf7c0d5132c", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.16.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtasn1-4.16.0-1.fc32.aarch64.rpm", + "checksum": "sha256:ea44ae1c951d3d4b30ff2a2d898c041ce9072acc94d6ea1e0e305c45e802019f", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.2.5", + "release": "1.rc2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.aarch64.rpm", + "checksum": "sha256:ef9bff2d88851209d35f9824e02fc431fba5e5347752ea1c197a57c0c45ad401", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libunistring-0.9.10-7.fc32.aarch64.rpm", + "checksum": "sha256:2d7ad38e86f5109c732a32bf9bea612c4c674aba6ad4cca2d211d826edc7fd6f", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libusbx-1.0.23-1.fc32.aarch64.rpm", + "checksum": "sha256:50d91ca18b6cdc9395424b852d2828d1b75e2af318932a2442376d2a10819f6a", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "18.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libutempter-1.1.6-18.fc32.aarch64.rpm", + "checksum": "sha256:22954219a63638d7418204d818c01a0e3c914e2b2eb970f2e4638dcf5a7a5634", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libuuid-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:2bc82e132696d9daa4eef545ff3352d6eb588b9a1b9584e515d15a7c3d6471df", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "9.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libverto-0.3.0-9.fc32.aarch64.rpm", + "checksum": "sha256:c494a613443f49b6cca4845f9c3410a1267f609c503a81a9a26a272443708fee", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxcrypt-4.4.16-1.fc32.aarch64.rpm", + "checksum": "sha256:64b64bab720df9dd7fd37ebf80a07795a95ac11e640eda3209b6517dcd7133e5", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.10.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.aarch64.rpm", + "checksum": "sha256:9db3ade981c564c361eed9068cd35acac93c1b1db54b6fb2a74070ce68141cff", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.10", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxml2-2.9.10-3.fc32.aarch64.rpm", + "checksum": "sha256:33788835331bed7f75e5cd2126d8d75511211175c9ac6d93824baec1a546a28d", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libyaml-0.2.2-3.fc32.aarch64.rpm", + "checksum": "sha256:d4fd722ee0ff5da4114b91964e430e4e45c1a428739f1e5be5db7854e5c85f11", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libzstd-1.4.4-2.fc32.aarch64.rpm", + "checksum": "sha256:2c4d03577e8661920a7b64fcc68735b795288744f1b188512a96960143030474", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/lua-libs-5.3.5-7.fc32.aarch64.rpm", + "checksum": "sha256:1befc4be3c3c72b3210e54f96f4334f268eaecdd3b77af7cadea0ef31f0e2ca9", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/lz4-libs-1.9.1-2.fc32.aarch64.rpm", + "checksum": "sha256:a7394cd1b11a1b25efaab43a30b1d9687683884babc162f43e29fdee4f00bda8", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mkpasswd-5.5.6-1.fc32.aarch64.rpm", + "checksum": "sha256:45e2c1c76a0a0b6e1164c457307250a54a7de5905992b4351a84183c2e9f2633", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "4.0.2", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mpfr-4.0.2-3.fc32.aarch64.rpm", + "checksum": "sha256:94d02790ff430efebbfc12ca2c2029c66e1691b70baf7cf45159fb8464d38e56", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-6.1-15.20191109.fc32.aarch64.rpm", + "checksum": "sha256:fe7ee39b0779c467c5d8a20daff4911e1967523e6fc748179e77584168e18bde", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm", + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.aarch64.rpm", + "checksum": "sha256:a973f92acb0afe61087a69d13a532c18a39dd60b3ba4826b38350f2c6b27e417", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/nettle-3.5.1-5.fc32.aarch64.rpm", + "checksum": "sha256:15b2402e11402a6cb494bf7ea31ebf10bf1adb0759aab417e63d05916e56aa45", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/npth-1.6-4.fc32.aarch64.rpm", + "checksum": "sha256:5b1cb1251cf7f65c50d9e3fcc11901fef5132dc177cce68a50918da481bb7629", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openldap-2.4.47-4.fc32.aarch64.rpm", + "checksum": "sha256:c030084d188fc99359cc088bd77d2ee6578e717f1cf2d067b8967c6cbe863c6e", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-1.1.1d-7.fc32.aarch64.rpm", + "checksum": "sha256:e30482032783ab59417bfaf8394be42d2e2e779a580979bd87f15bd0880df858", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.aarch64.rpm", + "checksum": "sha256:0178be1e5d6da8053061d29013d8fda8445d37eac908afbf4a2ca92faf950f2c", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.aarch64.rpm", + "checksum": "sha256:85dc7962af97e86a655b8ec5d5276e511f50b1d4abe624f4d8cb0d784007e342", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/p11-kit-0.23.20-1.fc32.aarch64.rpm", + "checksum": "sha256:afba861f69234f4cb4040085a4868c7424666a4356d0e2002e16b0afb75ec0d2", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.aarch64.rpm", + "checksum": "sha256:b867eeba06e6fc9084c227d8b3ea54f1815cb1833a29babf114fa1167aa17f2d", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "24.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pam-1.3.1-24.fc32.aarch64.rpm", + "checksum": "sha256:9738af51bf206850f6611306bed20542ed32a1701188611caab0b6896e4ffb37", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.44", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre-8.44-1.fc32.aarch64.rpm", + "checksum": "sha256:a3775cb3bc81bb5444e26695a62b1bd2eb48a91d7bc3a361d763c185cb817de1", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre2-10.34-9.fc32.aarch64.rpm", + "checksum": "sha256:7417889b8455ba87230fd5a987fe160d86de8250b87d7ae9bbcba90c32053172", + "check_gpg": true + }, + { + "name": "pcre2-syntax", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm", + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pinentry-1.1.0-7.fc32.aarch64.rpm", + "checksum": "sha256:a580e36566f6ffceef809e49fc4c7f9b1418a16123d4d49079c8423b6a337e67", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/policycoreutils-3.0-2.fc32.aarch64.rpm", + "checksum": "sha256:29bcc2f3f85ca7bdc22178af3e16743f55353bd9f25fb4c748d8c9f7117fe56f", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "19.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/popt-1.16-19.fc32.aarch64.rpm", + "checksum": "sha256:8f4be33cb040f081bb1f863b92e94ac7838af743cb5a0ce9d8c8ec9a611f71a6", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm", + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-3.8.2-2.fc32.aarch64.rpm", + "checksum": "sha256:857330a729697c1b6e8d86550391f1abf4db87d5ffeffeb5f00065fa8be85cbd", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-gpg-1.13.1-6.fc32.aarch64.rpm", + "checksum": "sha256:fe96e7fe3da0db38b8b8850c9dedd50c1358309fee24c774bc64ddee62bb11be", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.aarch64.rpm", + "checksum": "sha256:79defc84763baec2190da8941221abfa002d6f6c9e8c3486e2c492389fca2a57", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.aarch64.rpm", + "checksum": "sha256:e76aea00d64d100bafcea1672ce65f8bfd47bdf7e0dc7bf859fc0c6ec29d5823", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.aarch64.rpm", + "checksum": "sha256:023d3d7be30607410a2357b50b8ef3f94a07baf2842bfba0421f803600ec605f", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libs-3.8.2-2.fc32.aarch64.rpm", + "checksum": "sha256:32a00991ec85f0bf2a336e00033a0e70b0da963eb42d81bbad18a7a11f41d4eb", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:34efde201252afe93ec3af61af30c6d32cfbe5ecbdcecaf4667666f12482757d", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-unbound-1.9.6-2.fc32.aarch64.rpm", + "checksum": "sha256:acafdf6b20fea5974da004b77eced20b00c59a908edcef9c4c4e60815fdbf8f3", + "check_gpg": true + }, + { + "name": "qemu-img", + "epoch": 2, + "version": "4.2.0", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/q/qemu-img-4.2.0-7.fc32.aarch64.rpm", + "checksum": "sha256:ba170325441d8341085944301c006bd4b82b4813d0aedf3a9990fbe0500deba8", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.aarch64.rpm", + "checksum": "sha256:3d6ec574fe2c612bcc45395f7ee87c68f45016f005c6d7aeee6b37897f41b8d2", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/readline-8.0-4.fc32.aarch64.rpm", + "checksum": "sha256:6007c88c459315a5e2ce354086bd0372a56e15cdd0dc14e6e889ab859f8d8365", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:d2bd77606d1c91208be05edce6ea04c24fa2efc880569eecb958afde1a7fb17e", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:0c30a7fd9f69ad808183afa0814e363689ff63e7a82856a790e5fa111c031b96", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:7fe5838c895cd1158a6ae2afb3794e79e393d6701330e1109592e6b45f4bd876", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:91ab783e9eb00d5baba65989c86c3d742033bd2306ff7adb0b78185f28d2ca86", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:7d5d62696fc69bb890912be71c05e92496129f198838cb56d349a8fc700a85a6", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:33ca43cf0714aef344a70be4cfa42322694cc975a2eeee0bf31325dbca7f2842", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sed-4.5-5.fc32.aarch64.rpm", + "checksum": "sha256:ccf07a3682a1038a6224b3da69e20f201584ed1c879539cedb57e184aa14429a", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.6", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm", + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.8.1", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/shadow-utils-4.8.1-2.fc32.aarch64.rpm", + "checksum": "sha256:debd948a7e454f07dd7ab8ed79984158b98ce333d77be948e4393bb87c518ab8", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.15", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/shared-mime-info-1.15-3.fc32.aarch64.rpm", + "checksum": "sha256:a92c4a583aacd37beb069c996307bd782f809c78fd1fb802de25a53efbaff8f8", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.31.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.aarch64.rpm", + "checksum": "sha256:c75bf533b09243daeca728129a6fe10fca47d0c150fd43b5dab7b4993584536f", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-245.4-1.fc32.aarch64.rpm", + "checksum": "sha256:41c6a8ea4240f2fa6cea0333cc6d5f59731ac843398eb457c182e90af367783c", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-libs-245.4-1.fc32.aarch64.rpm", + "checksum": "sha256:52aa6e698e60cd360d5b9473fd1ebcc7e238e2125449bfdcc41b3e0fe13ae645", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-pam-245.4-1.fc32.aarch64.rpm", + "checksum": "sha256:9baa05a69943b0c6274403276f45817ab56193de62b5b64205b4fd35951e0895", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm", + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/tar-1.32-4.fc32.aarch64.rpm", + "checksum": "sha256:2f849fdf4588b1b4e86a008b6a82f30ff2ec1db1ae2bd21e067c6f910e4cb237", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/trousers-0.3.13-13.fc31.aarch64.rpm", + "checksum": "sha256:3242e0ce48f95d7a271125cf1222b5af09e20fe85194623d95336e1c678bdee8", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/trousers-lib-0.3.13-13.fc31.aarch64.rpm", + "checksum": "sha256:a6c26dd0ba8fc6a15e845f72f90e89b62f7344d7793896e707e610286b5e4541", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/tss2-1331-4.fc32.aarch64.rpm", + "checksum": "sha256:91e35b3750f5029be019542a4143cf00de68559b9ab6ae6df2c8f7ea6e60acd9", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm", + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/u/unbound-libs-1.9.6-2.fc32.aarch64.rpm", + "checksum": "sha256:654a9a9997c975998e1cb5d9250cd34b9d9d4d69f43c9282e67ad4d38fa2bcdf", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/u/util-linux-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:25e6968493572c680d6f8cad03e591f6e1e0e6ce0d1fbe3648d4b64ba529491d", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm", + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.29", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm", + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xz-5.2.5-1.fc32.aarch64.rpm", + "checksum": "sha256:202d761caf4c9d4937c04388a7180d6687a79e8141136be0f7ecc3a54bf80594", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xz-libs-5.2.5-1.fc32.aarch64.rpm", + "checksum": "sha256:48381163a3f2c524697efc07538f040fde0b69d4e0fdcbe3bcfbc9924dd7d5dd", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.aarch64.rpm", + "checksum": "sha256:0a31a882e4ac33233b36e2c61cc09125a936f54877137d5bb2ddc1ca8a5f9a12", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "21.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/z/zlib-1.2.11-21.fc32.aarch64.rpm", + "checksum": "sha256:df7184fef93e9f8f535d78349605595a812511db5e6dee26cbee15569a055422", + "check_gpg": true + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.22.10", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/NetworkManager-1.22.10-1.fc32.aarch64.rpm", + "checksum": "sha256:61e37e1df1e427525e6dd873d04fe2afc5e6825f2788a33b941e532e5a27ed7e", + "check_gpg": true + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.22.10", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/NetworkManager-libnm-1.22.10-1.fc32.aarch64.rpm", + "checksum": "sha256:78fb24703a4bafd4eb4ae0e065abf9111a127774ac74b1dc3a25d385c0dae1a0", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/acl-2.2.53-5.fc32.aarch64.rpm", + "checksum": "sha256:e8941c0abaa3ce527b14bc19013088149be9c5aacceb788718293cdef9132d18", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "6.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/alternatives-1.11-6.fc32.aarch64.rpm", + "checksum": "sha256:10d828cc7803aca9b59e3bb9b52e0af45a2828250f1eab7f0fc08cdb981f191d", + "check_gpg": true + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/audit-3.0-0.19.20191104git1c2f876.fc32.aarch64.rpm", + "checksum": "sha256:f71860520fb965ae5a41a43a68903aac712bea01ceac568774ac9ce6006d1f31", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.aarch64.rpm", + "checksum": "sha256:63cef561bcaadd5b9a1bf93b968f284ca76c3ad2b90b5c439b62456c0517164f", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm", + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.11", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/bash-5.0.11-2.fc32.aarch64.rpm", + "checksum": "sha256:5b304375adf911d056b36dc35f22af027d9283efbaebcb8231f052aef3982f05", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.aarch64.rpm", + "checksum": "sha256:caf76966e150fbe796865d2d18479b080657cb0bada9283048a4586cf034d4e6", + "check_gpg": true + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.15.0", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/c-ares-1.15.0-5.fc32.aarch64.rpm", + "checksum": "sha256:fdef1b445deff2b85a564372284dc8f49cf8376ee60cd26938484e8312dab650", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2020.2.40", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm", + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/checkpolicy-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:ad6f711174c59ffb9116d792068cc8fd0585b46eb5d9bf18a3c9937727b9a379", + "check_gpg": true + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "8.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/chrony-3.5-8.fc32.aarch64.rpm", + "checksum": "sha256:55a343c96ac98c2bdf7bffdf5edc73f87b482a26b4a1a5e95670343dcec88fb8", + "check_gpg": true + }, + { + "name": "cloud-init", + "epoch": 0, + "version": "19.4", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cloud-init-19.4-2.fc32.noarch.rpm", + "checksum": "sha256:1e1e9900e9d3a2b8eb6684060672526948df2cb9f751e7d72cb4fa5bffe71747", + "check_gpg": true + }, + { + "name": "cloud-utils-growpart", + "epoch": 0, + "version": "0.31", + "release": "6.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cloud-utils-growpart-0.31-6.fc32.noarch.rpm", + "checksum": "sha256:fdf652eae6502ff726fc3b532348ebe59dccb16e0629331371ff83e309b259af", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-sans-mono-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-serif-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280", + "check_gpg": true + }, + { + "name": "console-login-helper-messages", + "epoch": 0, + "version": "0.17", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/console-login-helper-messages-0.17-2.fc32.noarch.rpm", + "checksum": "sha256:a9420698e38d93b375f3f97ef5b196f61d006862f80642d69cc3c3fd694589fc", + "check_gpg": true + }, + { + "name": "console-login-helper-messages-issuegen", + "epoch": 0, + "version": "0.17", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/console-login-helper-messages-issuegen-0.17-2.fc32.noarch.rpm", + "checksum": "sha256:2bcf87d3ecdecab92bc2aacf2f1ec50aced0ed2958001cd8b297c80612edeb60", + "check_gpg": true + }, + { + "name": "console-login-helper-messages-motdgen", + "epoch": 0, + "version": "0.17", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/console-login-helper-messages-motdgen-0.17-2.fc32.noarch.rpm", + "checksum": "sha256:85be4f8732fed73e473ea61635b582ecd0e46709a7c2c3c1a8f25d0709041780", + "check_gpg": true + }, + { + "name": "console-login-helper-messages-profile", + "epoch": 0, + "version": "0.17", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/console-login-helper-messages-profile-0.17-2.fc32.noarch.rpm", + "checksum": "sha256:87f6173e57d5d24c601047f747dfcf90dedc1d05250bfc6f06567d8ca35f895b", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/coreutils-8.32-3.fc32.1.aarch64.rpm", + "checksum": "sha256:8961e2f35093845b7498c03f1a9776f7c49f7d9d057f56b0774f470b8e8179ff", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/coreutils-common-8.32-3.fc32.1.aarch64.rpm", + "checksum": "sha256:8d08e12adb541773aa8073a1aa6b02fbbd8539fe3597a60ac934732930cd5981", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.13", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cpio-2.13-4.fc32.aarch64.rpm", + "checksum": "sha256:7bd78f630f6ed96cd08942330f4dad8bfb8d2d7961262ee942411e501a1aefdd", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cracklib-2.9.6-22.fc32.aarch64.rpm", + "checksum": "sha256:081d831528796c3e5c47b89c363a0f530bf77e3e2e0098cd586d814bea9a12f0", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.aarch64.rpm", + "checksum": "sha256:ca85fd192aa25f8fc630c28c8858cf3065a2b32f3ba3a373ffd3ea49b0f0813c", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.aarch64.rpm", + "checksum": "sha256:96f3fbcfb91ae41de7e514fe0b619aab870ea4d5f53544c0fd215284cb0b68e2", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/curl-7.69.1-1.fc32.aarch64.rpm", + "checksum": "sha256:d91a87c9d6dd3924d2fe7992f88f2542cce3451b7ff2576eb4d65d9ca1a7620f", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.aarch64.rpm", + "checksum": "sha256:b9904d16c86c28074bfdba38a3a740b61ad5de50a9945d550021027130fcfd41", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-1.12.16-4.fc32.aarch64.rpm", + "checksum": "sha256:067d98bda561e94f9f0bba60f691dc8ba4610434603f26cf6f4fa22677da8465", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "22", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-broker-22-1.fc32.aarch64.rpm", + "checksum": "sha256:60c9a00d8c528ad5806a5fec20ed3ffb8ad195e9eb9bf5294893e8425be1fa9f", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm", + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbus-libs-1.12.16-4.fc32.aarch64.rpm", + "checksum": "sha256:86959d2fd51c4d52fa5fcdf91c226ffdece5960299c15f29adc2a5c0bf05397b", + "check_gpg": true + }, + { + "name": "dbxtool", + "epoch": 0, + "version": "8", + "release": "11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dbxtool-8-11.fc32.aarch64.rpm", + "checksum": "sha256:20307d5a1d3fccfe8f64c8ea074c6a751dc36849c7495592989677fd01da9147", + "check_gpg": true + }, + { + "name": "dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dejavu-sans-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/deltarpm-3.6.2-5.fc32.aarch64.rpm", + "checksum": "sha256:9c8ec2364045411b95cfb3995d2189f0082832af7bf7280ec1cdf7bfee1afe05", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/device-mapper-1.02.171-1.fc32.aarch64.rpm", + "checksum": "sha256:18c188f63504b8cf3bc88d95de458a1eb216bca268378a6839618ef7468dc635", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.aarch64.rpm", + "checksum": "sha256:5d52cffee2d5360db8cf7e6ed4b19a68de4a0ae55f42ed279d4fdb3a70bb72f3", + "check_gpg": true + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.4.2", + "release": "5.b1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dhcp-client-4.4.2-5.b1.fc32.aarch64.rpm", + "checksum": "sha256:27a0d9447ef63c95a3182b32606e6de1bd17f2cfc7910a456fa43996db67833f", + "check_gpg": true + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.4.2", + "release": "5.b1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dhcp-common-4.4.2-5.b1.fc32.noarch.rpm", + "checksum": "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/diffutils-3.7-4.fc32.aarch64.rpm", + "checksum": "sha256:13290758e03b977aed5e23b7ba9a01157b6802fd78baf75bc1fc184864e9e31e", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.14", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dnf-plugins-core-4.0.14-1.fc32.noarch.rpm", + "checksum": "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dracut-050-26.git20200316.fc32.aarch64.rpm", + "checksum": "sha256:a16c32dda1845c89cb7822ab839e5f48b222b3c168f82455f7f54a1a7863ffea", + "check_gpg": true + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/d/dracut-config-generic-050-26.git20200316.fc32.aarch64.rpm", + "checksum": "sha256:d96c93f959443e974001c4b423f3da556187e5b3fedf1232951f480c67cb4568", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.aarch64.rpm", + "checksum": "sha256:d3281a3ef4de5e13ef1a76effd68169c0965467039059141609a078520f3db04", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.aarch64.rpm", + "checksum": "sha256:7f667fb609062e966720bf1bb1fa97a91ca245925c68e36d2770caba57aa4db2", + "check_gpg": true + }, + { + "name": "efi-filesystem", + "epoch": 0, + "version": "4", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/efi-filesystem-4-4.fc32.noarch.rpm", + "checksum": "sha256:b743aafa82f3326f8f2e6d5464ae7fa57fabab3ad791099eaf2d151b43208b42", + "check_gpg": true + }, + { + "name": "efibootmgr", + "epoch": 0, + "version": "16", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/efibootmgr-16-7.fc32.aarch64.rpm", + "checksum": "sha256:04bc54c723bfa9e1b6bb6567e9d8cd3e1ed389fc2be97259b971a8cbfe5f95e4", + "check_gpg": true + }, + { + "name": "efivar-libs", + "epoch": 0, + "version": "37", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/efivar-libs-37-7.fc32.aarch64.rpm", + "checksum": "sha256:a30386b14f04905c1e78944f9b36d81ac83b7de1301c353d7e90b33f4a8c5e93", + "check_gpg": true + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.aarch64.rpm", + "checksum": "sha256:a499f61c75ef2179b2da62647b64b716fec1af2f15653876a27e57c284921baf", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm", + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-libelf-0.179-1.fc32.aarch64.rpm", + "checksum": "sha256:8c545e3282deed08d36bb138f1ba15d02dfd1066f46f45582e24b6dc5b07cb6b", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/elfutils-libs-0.179-1.fc32.aarch64.rpm", + "checksum": "sha256:c47b5f407d000d200f595e7f5026e72cae8b43416c17e5bb943551a9ddc5422e", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/e/expat-2.2.8-2.fc32.aarch64.rpm", + "checksum": "sha256:4940f6e26a93fe638667adb6e12969fe915b3a7b0cfeb58877dd6d7bccf46c1a", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm", + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "name": "fedora-release-cloud", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-release-cloud-32-1.noarch.rpm", + "checksum": "sha256:0c8f8925dacc9a0e57b4446d5f67d9041bfc0a939191a7606ba93b74512a97d1", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-release-common-32-1.noarch.rpm", + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fedora-repos-32-1.noarch.rpm", + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/file-5.38-2.fc32.aarch64.rpm", + "checksum": "sha256:0dcc4568055843acf5571553731d57a0d042b6602e6932bc4fe88718597c2fbe", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/file-libs-5.38-2.fc32.aarch64.rpm", + "checksum": "sha256:aa7fd8a1313c0e384353da5e054dad62205b4f0e112a4a45eb414eb357513e04", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.14", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/filesystem-3.14-2.fc32.aarch64.rpm", + "checksum": "sha256:f8f3ec395d7d96c45cbd370f2376fe6266397ce091ab8fdaf884256ae8ae159f", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.7.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/findutils-4.7.0-3.fc32.aarch64.rpm", + "checksum": "sha256:876c2450443ab68948b045721202ca193077876b67c2e85f9dd427452ef0c4d5", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "8.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fipscheck-1.5.0-8.fc32.aarch64.rpm", + "checksum": "sha256:d1b286af57220764054969fc63065ead51d9bb969d320ada6a72c3b24c9e0ca3", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "8.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fipscheck-lib-1.5.0-8.fc32.aarch64.rpm", + "checksum": "sha256:c4cc17e543253b9b37fa982f49ae1c5f411ff563120e5c4225556a7584994a37", + "check_gpg": true + }, + { + "name": "fonts-filesystem", + "epoch": 0, + "version": "2.0.3", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fonts-filesystem-2.0.3-1.fc32.noarch.rpm", + "checksum": "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "9.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/f/fuse-libs-2.9.9-9.fc32.aarch64.rpm", + "checksum": "sha256:5cc385c1ca3df73a1dd7865159628a6b0ce186f8679c6bc95dda0b4791e4a9fc", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gawk-5.0.1-7.fc32.aarch64.rpm", + "checksum": "sha256:62bafab5a0f37fdec29ce38bc1d635e0a81ab165061faaf5d83f5246ca4e2db0", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.aarch64.rpm", + "checksum": "sha256:aa667df83abb5a675444e898fb7554527b2967f3bdc793e6b4b56d794f74b9ef", + "check_gpg": true + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20191217", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/geolite2-city-20191217-2.fc32.noarch.rpm", + "checksum": "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3", + "check_gpg": true + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20191217", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/geolite2-country-20191217-2.fc32.noarch.rpm", + "checksum": "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gettext-0.20.1-4.fc32.aarch64.rpm", + "checksum": "sha256:60c3cbbe546fb12db4c7164a51613ea9ae20f7199537cdf5145e828c78544493", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gettext-libs-0.20.1-4.fc32.aarch64.rpm", + "checksum": "sha256:57e1695da46f19db4a851304d57e7ce2409c287a88e9b52af0b76ed2252a4f98", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.64.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glib2-2.64.1-1.fc32.aarch64.rpm", + "checksum": "sha256:6837a13f3c643b5da33bd694efc4e95f54b5cc5e15de61884644378367d55804", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-2.31-2.fc32.aarch64.rpm", + "checksum": "sha256:36a3ae11acb7916e932ff704a4527b126bb39f9e849072b16242719c8de11119", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-common-2.31-2.fc32.aarch64.rpm", + "checksum": "sha256:2590d214d4986fa95653e7f83e67a81dbf822b621994a9ab867e7c377bc479c2", + "check_gpg": true + }, + { + "name": "glibc-langpack-en", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/glibc-langpack-en-2.31-2.fc32.aarch64.rpm", + "checksum": "sha256:f50ad72a9259205b2381b94fa674f53860e63c9e3cd1fb013653dab2bc7203a6", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gmp-6.1.2-13.fc32.aarch64.rpm", + "checksum": "sha256:5b7a135c35562e64344cc9f1ca37a5239649152cc055e14e7bf9bf84843eccab", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnupg2-2.2.19-1.fc32.aarch64.rpm", + "checksum": "sha256:cebb9ee0271c7199cb057c9a722b17c6fe59a0b0ec7f438ef6e0c35d4b5f330e", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.aarch64.rpm", + "checksum": "sha256:11004aa2821bdebfca77ab93e7ed405e0e93eb685850f5fb57b01762692ce155", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.13", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gnutls-3.6.13-1.fc32.aarch64.rpm", + "checksum": "sha256:532a58ae361b9c0bc147037fb96f338684b949bd4071b19bac322b8967c32a01", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gpgme-1.13.1-6.fc32.aarch64.rpm", + "checksum": "sha256:11204917b909836508acff0df2499301d3b2f8f0a1c0e341de904ac9fb4bbedf", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grep-3.3-4.fc32.aarch64.rpm", + "checksum": "sha256:f148b87e6bf64242dad504997f730c11706e5c0da52b036b8faebb5807d252d9", + "check_gpg": true + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "21.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/groff-base-1.22.3-21.fc32.aarch64.rpm", + "checksum": "sha256:174a7c064ba48fdfc61ee5a091ec474dfbdb32a1a602cbe0776937c39e222663", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "name": "grub2-efi-aa64", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grub2-efi-aa64-2.04-12.fc32.aarch64.rpm", + "checksum": "sha256:6221b210a7778432738994829f6c7e9f047940e53ee42a0e6458b91095b82756", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grub2-tools-2.04-12.fc32.aarch64.rpm", + "checksum": "sha256:a47d4bfb9dd589c97bb530afb3988cbfaf7336a89207e4b74fd9ab596812c97f", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.aarch64.rpm", + "checksum": "sha256:a0ec936c91f5f69951d08a6cdf03406ee7365bc3417d3426bb6b4db855c45dda", + "check_gpg": true + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "40.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/grubby-8.40-40.fc32.aarch64.rpm", + "checksum": "sha256:96ff29e784025e76bfde72abc89ccb520cb75087f8c44cd747d5d3ebc1df78db", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/g/gzip-1.10-2.fc32.aarch64.rpm", + "checksum": "sha256:50b7b06e94253cb4eacc1bfb68f8343b73cbd6dae427f8ad81367f7b8ebf58a8", + "check_gpg": true + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.23", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/h/hostname-3.23-2.fc32.aarch64.rpm", + "checksum": "sha256:ded5407f20b7a1de7b8aee85786d8b70eec61d0385e95e90d95849612ef13dea", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.aarch64.rpm", + "checksum": "sha256:c25bb676affa185a2c4671859484bd24f62d2ec9c4d67584590bb14dd0396775", + "check_gpg": true + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.02", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/initscripts-10.02-3.fc32.aarch64.rpm", + "checksum": "sha256:3377ae652fbbd22f2c61815bfd1bb58185b5f57c194d9b0cce3056ab11522779", + "check_gpg": true + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.4.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/ipcalc-0.4.0-2.fc32.aarch64.rpm", + "checksum": "sha256:b1fc5d1d8d62d0f883ff483b818e7759f9afd4a1fa15421af56e1a615535fe63", + "check_gpg": true + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.5.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iproute-5.5.0-1.fc32.aarch64.rpm", + "checksum": "sha256:7c38b938c3d35cfee1ad11d5d09c3c6a4f208b065a25b2a3556006f04f2608b9", + "check_gpg": true + }, + { + "name": "iproute-tc", + "epoch": 0, + "version": "5.5.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iproute-tc-5.5.0-1.fc32.aarch64.rpm", + "checksum": "sha256:4674c9871d3a70a005fc880d6ce1c0e56418192085dae8b5eb861003ef9a2c1b", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iptables-libs-1.8.4-7.fc32.aarch64.rpm", + "checksum": "sha256:f26fae2e85396d00d7935b21154ba7a0fa591495c59973abd59455e181bf84d1", + "check_gpg": true + }, + { + "name": "iputils", + "epoch": 0, + "version": "20190515", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/i/iputils-20190515-5.fc32.aarch64.rpm", + "checksum": "sha256:8b20ec83c7ff085d0f27c7af0a87dc49bacdf65d52b61119819ea14862eff91c", + "check_gpg": true + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.12", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/j/jansson-2.12-5.fc32.aarch64.rpm", + "checksum": "sha256:da4e2994692c9ed4d0760528139f6437bcb0d54862fac1a4afa55e329393d254", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "9.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/j/json-c-0.13.1-9.fc32.aarch64.rpm", + "checksum": "sha256:06d6f5d9909beb1cc6731dc6d5d86b9e7885285848bad8ef16079ad3e8824e0b", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kbd-2.2.0-1.fc32.aarch64.rpm", + "checksum": "sha256:79410f2d954c0a380a0b67bc965982ac1645c0365060cf8ba106db74b0b339f4", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kernel-core-5.6.6-300.fc32.aarch64.rpm", + "checksum": "sha256:e38207cecd64ed0fe5002828ff0aa05dbbb1f5418350babd4c1cfa3d1e3261fe", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/keyutils-libs-1.6-4.fc32.aarch64.rpm", + "checksum": "sha256:a05c8fb554ed38050b59d10f587ac70cf341c1f38b02ffe8a8433f7fc16efd68", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kmod-27-1.fc32.aarch64.rpm", + "checksum": "sha256:fe512ddf337568ca1e4d1c0cce66dda461ca570587c7beb1e1be3960540e394f", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kmod-libs-27-1.fc32.aarch64.rpm", + "checksum": "sha256:7684be07a8e054660705f8d6b1522d9a829be6614293096dc7b871682e445709", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.2", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/kpartx-0.8.2-3.fc32.aarch64.rpm", + "checksum": "sha256:8e768615a238b08e3fd0857f53e7acf5c5c4e3736dc03824179429a4d848de61", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/k/krb5-libs-1.18-1.fc32.aarch64.rpm", + "checksum": "sha256:a01d61d802834e2e6789548f707877827fb394c90097705af9c391e6bfcd6c24", + "check_gpg": true + }, + { + "name": "langpacks-core-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/langpacks-core-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0", + "check_gpg": true + }, + { + "name": "langpacks-core-font-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/langpacks-core-font-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389", + "check_gpg": true + }, + { + "name": "langpacks-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/langpacks-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca", + "check_gpg": true + }, + { + "name": "less", + "epoch": 0, + "version": "551", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/less-551-3.fc32.aarch64.rpm", + "checksum": "sha256:c8516d06666d3f0728c9cbfc1b7f0a88f8884e5cd7bd3bad6721c7c9000f1f8f", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libacl-2.2.53-5.fc32.aarch64.rpm", + "checksum": "sha256:98d58695f22a613ff6ffcb2b738b4127be7b72e5d56f7d0dbd3c999f189ba323", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.2", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libarchive-3.4.2-1.fc32.aarch64.rpm", + "checksum": "sha256:340a82cfe6a9d18933b99a4e001d7e54f7ab225fe5e7fb1a7f51cb1c675c7050", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libargon2-20171227-4.fc32.aarch64.rpm", + "checksum": "sha256:6ef55c2aa000adea432676010756cf69e8851587ad17277b21bde362e369bf3e", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libassuan-2.5.3-3.fc32.aarch64.rpm", + "checksum": "sha256:1c982f31133def3baea707e0d1f0fe4a014d2c8c5f20ac8d69362cff4f26d5e9", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "8.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libattr-2.4.48-8.fc32.aarch64.rpm", + "checksum": "sha256:caa6fe00c6e322e961c4b7a02ba4a10cc939b84121e09d07d331adcdc2ae1af2", + "check_gpg": true + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "44.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libbasicobjects-0.1.1-44.fc32.aarch64.rpm", + "checksum": "sha256:a5c841dda3df90e810cfd87c42211a26dc0745f9bae341b6bfc6b08114e48ed5", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libblkid-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:fe8b11652adfe4c64d96b442d5b31da207dfdf4a551c491c0934498537c8dfc5", + "check_gpg": true + }, + { + "name": "libbrotli", + "epoch": 0, + "version": "1.0.7", + "release": "10.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libbrotli-1.0.7-10.fc32.aarch64.rpm", + "checksum": "sha256:95581bd0421b0fddf94b046e0bf8f13d3ce3d797acd5292d87127ed9e9505d80", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcap-2.26-7.fc32.aarch64.rpm", + "checksum": "sha256:0a2eadd29cc53df942d3f0acc016b281efa4347fc2e9de1d7b8b61d9c5f0d894", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.10", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcap-ng-0.7.10-2.fc32.aarch64.rpm", + "checksum": "sha256:5875ba2d9b9ced8b2d2faa880b5f1811a89e17defe946ccf99b201790a0d2520", + "check_gpg": true + }, + { + "name": "libcbor", + "epoch": 0, + "version": "0.5.0", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcbor-0.5.0-7.fc32.aarch64.rpm", + "checksum": "sha256:1ddaeb7c602005e75c0ea2603a533d692a94915a297b71e68a8e27327456c3d0", + "check_gpg": true + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "44.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcollection-0.7.0-44.fc32.aarch64.rpm", + "checksum": "sha256:d6ad55479187ecd7368002e67e83d44d24995fd1a1b6790c1c6c9fb1fd5e52a6", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcom_err-1.45.5-3.fc32.aarch64.rpm", + "checksum": "sha256:93c5fe6589243bff8f4d6934d82616a4cce0f30d071c513cc56f8e53bfc19d17", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcomps-0.1.14-4.fc32.aarch64.rpm", + "checksum": "sha256:e2eecb13c57728ce4c8e04ad8747ca51fe086a58bd55c0d3d29cf9683d0d09ad", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcroco-0.6.13-3.fc32.aarch64.rpm", + "checksum": "sha256:ff135143da781c30919f03000c4409cc09d38cd65cd7b01f3c540617ce0f69db", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libcurl-7.69.1-1.fc32.aarch64.rpm", + "checksum": "sha256:cc30c04cfc6be2239727608174e90ac766cb7c77cdd1b70c4be619cb2df42a52", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdb-5.3.28-40.fc32.aarch64.rpm", + "checksum": "sha256:7bfb33bfa3c3a952c54cb61b7f7c7047c1fd91e8e334f53f54faea6f34e6c0bb", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdb-utils-5.3.28-40.fc32.aarch64.rpm", + "checksum": "sha256:435530a0b9a086018694034ce48e9589348fc66389d884977b400f2f74814ac8", + "check_gpg": true + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "44.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdhash-0.5.0-44.fc32.aarch64.rpm", + "checksum": "sha256:82bd171ac3f9a08c44e8144297a4dd9cd2567a916065a57eb656330e2b4e007f", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libdnf-0.45.0-3.fc32.aarch64.rpm", + "checksum": "sha256:62afc19040e8fbf7ac7946f02d67cdd19086658c3d8713a6c120482fd769537e", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "32.20191231cvs.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libedit-3.1-32.20191231cvs.fc32.aarch64.rpm", + "checksum": "sha256:3e25d33bea0d8de847f817b428fe92a6b02376634c7a6f0672bc668fa769869d", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "8.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libevent-2.1.8-8.fc32.aarch64.rpm", + "checksum": "sha256:ad874e09de00dbdb887eb6a94351869950ead7f6409dfa191d1443d3bb9dd255", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libfdisk-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:58988a2b7213098503b56d5388eba1bf2a01b9ff027961acb1e9f55c47d237ad", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "24.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libffi-3.1-24.fc32.aarch64.rpm", + "checksum": "sha256:291df16c0ae66fa5685cd033c84ae92765be4f4e17ce4936e47dc602ac6ff93e", + "check_gpg": true + }, + { + "name": "libfido2", + "epoch": 0, + "version": "1.3.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libfido2-1.3.1-1.fc32.aarch64.rpm", + "checksum": "sha256:a9e2dcc8d57bff7ec3424eb79de77ebe91a956dd39faa691b2ab4babd1683233", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgcc-10.0.1-0.11.fc32.aarch64.rpm", + "checksum": "sha256:28892ae62cd1b4dadded523be8cb5f9e0fddeaa864919ee4b0dfad3bba8fd06f", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgcrypt-1.8.5-3.fc32.aarch64.rpm", + "checksum": "sha256:e96e4caf6c98faa5fb61bd3b13ee7afa0d7510d3176fe3d3cbf485847ce985fd", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgomp-10.0.1-0.11.fc32.aarch64.rpm", + "checksum": "sha256:09a9dd8c3ae4fe9a9817c71c4b2af35f2d7e1dbf2c9f4659028ce69a5d2f2d02", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libgpg-error-1.36-3.fc32.aarch64.rpm", + "checksum": "sha256:cffbab9f6052ee2c7b8bcc369a411e319174de094fb94eaf71555ce485049a74", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.3.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libidn2-2.3.0-2.fc32.aarch64.rpm", + "checksum": "sha256:500c4abc34ff58e6f06c7194034b2d68b618c5e6afa89b551ab74ef226e1880a", + "check_gpg": true + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "44.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libini_config-1.3.1-44.fc32.aarch64.rpm", + "checksum": "sha256:d891183e3f802f3e2b6ca77f1ea528d2aec52be8ef38ae2cb93c11f82ecff321", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libkcapi-1.1.5-2.fc32.aarch64.rpm", + "checksum": "sha256:5adad0edfcf9c4415734d11a35a5c14cbf53eb32827572dd6af670fadcad7f78", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.aarch64.rpm", + "checksum": "sha256:2f117f22ec79fed75752c69b7e1c70582bad93b55fb4a5b0dc2bca978bafce85", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libksba-1.3.5-11.fc32.aarch64.rpm", + "checksum": "sha256:1ee4f732b1b4b237d7301219fc5c52b63c9ab9e77db746612852fef5610f69b7", + "check_gpg": true + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.1.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libldb-2.1.1-1.fc32.aarch64.rpm", + "checksum": "sha256:3c29cc12a25791c83c040def2df8f107b161ecc0cbf3965cad82f38a451c7963", + "check_gpg": true + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.3.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmaxminddb-1.3.2-2.fc32.aarch64.rpm", + "checksum": "sha256:e4056437576c76b1b4fe8d8b98cce6f006194d74cbc0a30058cf29aab6b9307f", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "10.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmetalink-0.1.3-10.fc32.aarch64.rpm", + "checksum": "sha256:c748420c4d7407a95f840416a80c468d8304e529f93b40a45081a49fd7a29232", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmnl-1.0.4-11.fc32.aarch64.rpm", + "checksum": "sha256:2356581880df7b8275896b18de24e432a362ee159fc3127f92476ffe8d0432fd", + "check_gpg": true + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmodulemd-2.9.1-1.fc32.aarch64.rpm", + "checksum": "sha256:c0ad832521885f97d08c043350b72f4fade0bbe995f81da8a18370a932bf5aee", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libmount-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:1e533f7f64169288e90b3851e509cf1aedf4da0fe986288da53516b2b77ac77d", + "check_gpg": true + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libndp-1.7-5.fc32.aarch64.rpm", + "checksum": "sha256:6bc574a7f67dc28909f84c05bfc3dfeeac04c088f809032d75313aac022f6064", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.aarch64.rpm", + "checksum": "sha256:400c91d4d6d1125ec891c16ea72aa4123fc4c96e02f8668a8ae6dbc27113d408", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "17.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.aarch64.rpm", + "checksum": "sha256:a0260a37707734c6f97885687a6ad5967c23cb0c693668bf1402e6ee5d4abe1e", + "check_gpg": true + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.4.3", + "release": "0.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnfsidmap-2.4.3-0.fc32.aarch64.rpm", + "checksum": "sha256:ab86efda86a5d4cb8b1fa979bcc37aeb5601616d48a4a9d34b4f4ceb4e553747", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.40.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnghttp2-1.40.0-2.fc32.aarch64.rpm", + "checksum": "sha256:17f5c9a25bf0f952f6defa6a857e938bfc1f72c69217f666a537bf8f1daff5f8", + "check_gpg": true + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnl3-3.5.0-2.fc32.aarch64.rpm", + "checksum": "sha256:231cefc11eb5a9ac8f23bbd294cef0bf3a690040df3048e063f8a269f2db75f8", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "6.20180605git4a062cf.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.aarch64.rpm", + "checksum": "sha256:4139803076f102e2224b81b4f1da3f6d066b89e272201d2720557763f9acfcd5", + "check_gpg": true + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "44.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpath_utils-0.2.1-44.fc32.aarch64.rpm", + "checksum": "sha256:2dcee99ce05f5844438f827cf0cd1578f7863efb31c204bbc441cd2265ad9a7d", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpcap-1.9.1-3.fc32.aarch64.rpm", + "checksum": "sha256:dbc1d91408e0e115e1c084f4c28d2d15f07cfc8b6c6d766192b65a28407422e7", + "check_gpg": true + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpipeline-1.5.2-2.fc32.aarch64.rpm", + "checksum": "sha256:9d1baa8d8cdd02711e1724b08de678f2bda92807a6ae0e9d1b6c2443e2810ffd", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpsl-0.21.0-4.fc32.aarch64.rpm", + "checksum": "sha256:faca2dc4a45d1bd365d9364ea59f361854f3379ef6f13e9fa0a85368a0621f45", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libpwquality-1.4.2-2.fc32.aarch64.rpm", + "checksum": "sha256:1a096ed78df5a9339c4b3c15372275a884a1124b048ffcfbdb768db881e47ab2", + "check_gpg": true + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "44.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libref_array-0.1.5-44.fc32.aarch64.rpm", + "checksum": "sha256:ea775b1806d30c2d076f685977c0efbe57ff2afcf10a3c8f8f1a250ecb9ef5b6", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.11.1", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/librepo-1.11.1-4.fc32.aarch64.rpm", + "checksum": "sha256:56bc7a11331fe199a45bc23f348deff8cd5e1ee02c617b6ed429d61ba537fc8b", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.12.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm", + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.2", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libseccomp-2.4.2-3.fc32.aarch64.rpm", + "checksum": "sha256:7149be5bd74792181003b872a9bc636157f4b795b12374c0857fb7271f2567ac", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.20.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsecret-0.20.2-2.fc32.aarch64.rpm", + "checksum": "sha256:7cac868a4b1ac9c380192a31a45a314613af3f958aaf2b778642667dc73bc182", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libselinux-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:6028f86f132faee662e97075270f68e8125fd339c8689a2b661facd25c3b829b", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libselinux-utils-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:91cd21ca1f5b881a78e9c0a6dd3cdad7401f7216a1ab3acbe9337d8e3e054a5e", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsemanage-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:b78889f3a2ac801456c643fd5603017383221aa33eac381e4f74b9a13fbf3830", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsepol-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:fe06eff5ac0e3e538775aad2cb0f801af491476e9cb508caa9107f4a5f913e52", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "10.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsigsegv-2.11-10.fc32.aarch64.rpm", + "checksum": "sha256:836a45edfd4e2cda0b6bac254b2e6225aad36f9bae0f96f2fe7da42896db0dae", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsmartcols-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:0042a3d3b19152d0a16ee321cbe99208a2f4ebd009515c1f6f962a1d5f9cde26", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsolv-0.7.11-2.fc32.aarch64.rpm", + "checksum": "sha256:15a8a718cb6f629474fec7756b4701430e14ff94aad6cf6fe20f3eb7174a7783", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libss-1.45.5-3.fc32.aarch64.rpm", + "checksum": "sha256:a830bb13938bedaf5cc91b13ab78e2cf9172b06727b7e9e1bec2cddce8dd9e2d", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libssh-0.9.3-2.fc32.aarch64.rpm", + "checksum": "sha256:7bd98aa2d554f06ab525320ebf628a6e002011462e71a47337676a2c99de5aec", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm", + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_autofs-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:ed19ff9b81a5a72262a95b8ff52c867efc43aa50d28171328afd4791ee3daef8", + "check_gpg": true + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_certmap-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:0175f5d1834c1cb4a1f44c9ae20960fa674f26add0b88f903407abf2f3d22f82", + "check_gpg": true + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_idmap-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:05121688770a80889f1e1d0594a5b14d6ac30cc6fe4d431e3aa829f2290ea973", + "check_gpg": true + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_nss_idmap-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:eb98f6ee22b110395790e83648339d36f74068883d3d6a7a8a3ecb9cbf55bc60", + "check_gpg": true + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libsss_sudo-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:1fab76e36bbad6727634f2a8ce6e722c0e6ca814969948ffd6ce7250bc75e7f3", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.aarch64.rpm", + "checksum": "sha256:3ea53f635b4f559b2bdb0e58d54dbfddc126b18abe23b46b94aecbf7c0d5132c", + "check_gpg": true + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.1", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtalloc-2.3.1-2.fc32.aarch64.rpm", + "checksum": "sha256:07b37612b8e0f09885ad653f3dbd2ff95a65bfd8b21c69d1cc20a4f3dbc0ef32", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.16.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtasn1-4.16.0-1.fc32.aarch64.rpm", + "checksum": "sha256:ea44ae1c951d3d4b30ff2a2d898c041ce9072acc94d6ea1e0e305c45e802019f", + "check_gpg": true + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.3", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtdb-1.4.3-2.fc32.aarch64.rpm", + "checksum": "sha256:af826bfb93a53a0bbb0209f721fc7d15c0b5200c3f81c93ef9620cc640e90b77", + "check_gpg": true + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtevent-0.10.2-2.fc32.aarch64.rpm", + "checksum": "sha256:2c9bf996e1550ed5ad42398187ee14d65315d13ec5c9e2eab32b8fed0743b1fc", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtextstyle-0.20.1-4.fc32.aarch64.rpm", + "checksum": "sha256:831fcc64c103f60608b08f4f47c2b7b5b43571cef7576b9e549e6ae001434da5", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.2.5", + "release": "1.rc2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.aarch64.rpm", + "checksum": "sha256:ef9bff2d88851209d35f9824e02fc431fba5e5347752ea1c197a57c0c45ad401", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libunistring-0.9.10-7.fc32.aarch64.rpm", + "checksum": "sha256:2d7ad38e86f5109c732a32bf9bea612c4c674aba6ad4cca2d211d826edc7fd6f", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libusbx-1.0.23-1.fc32.aarch64.rpm", + "checksum": "sha256:50d91ca18b6cdc9395424b852d2828d1b75e2af318932a2442376d2a10819f6a", + "check_gpg": true + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "24.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libuser-0.62-24.fc32.aarch64.rpm", + "checksum": "sha256:6f7b4c0efee821ea122401d350274334c6ef2d62dcacbe40942a00b162b6025b", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "18.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libutempter-1.1.6-18.fc32.aarch64.rpm", + "checksum": "sha256:22954219a63638d7418204d818c01a0e3c914e2b2eb970f2e4638dcf5a7a5634", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libuuid-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:2bc82e132696d9daa4eef545ff3352d6eb588b9a1b9584e515d15a7c3d6471df", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "9.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libverto-0.3.0-9.fc32.aarch64.rpm", + "checksum": "sha256:c494a613443f49b6cca4845f9c3410a1267f609c503a81a9a26a272443708fee", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxcrypt-4.4.16-1.fc32.aarch64.rpm", + "checksum": "sha256:64b64bab720df9dd7fd37ebf80a07795a95ac11e640eda3209b6517dcd7133e5", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.10.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.aarch64.rpm", + "checksum": "sha256:9db3ade981c564c361eed9068cd35acac93c1b1db54b6fb2a74070ce68141cff", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.10", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libxml2-2.9.10-3.fc32.aarch64.rpm", + "checksum": "sha256:33788835331bed7f75e5cd2126d8d75511211175c9ac6d93824baec1a546a28d", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libyaml-0.2.2-3.fc32.aarch64.rpm", + "checksum": "sha256:d4fd722ee0ff5da4114b91964e430e4e45c1a428739f1e5be5db7854e5c85f11", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/libzstd-1.4.4-2.fc32.aarch64.rpm", + "checksum": "sha256:2c4d03577e8661920a7b64fcc68735b795288744f1b188512a96960143030474", + "check_gpg": true + }, + { + "name": "linux-atm-libs", + "epoch": 0, + "version": "2.5.1", + "release": "26.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/linux-atm-libs-2.5.1-26.fc32.aarch64.rpm", + "checksum": "sha256:ae08e152061808ccc334cc611d8ea4d18c05daa6b68731e255a533d0572594ae", + "check_gpg": true + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20200316", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/linux-firmware-20200316-106.fc32.noarch.rpm", + "checksum": "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4", + "check_gpg": true + }, + { + "name": "linux-firmware-whence", + "epoch": 0, + "version": "20200316", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/linux-firmware-whence-20200316-106.fc32.noarch.rpm", + "checksum": "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9", + "check_gpg": true + }, + { + "name": "lmdb-libs", + "epoch": 0, + "version": "0.9.24", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/lmdb-libs-0.9.24-1.fc32.aarch64.rpm", + "checksum": "sha256:db514e9d99e58e08e698083e1ca969f9fc98ae27ee9b63aa8d2133bd95a7002e", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/lua-libs-5.3.5-7.fc32.aarch64.rpm", + "checksum": "sha256:1befc4be3c3c72b3210e54f96f4334f268eaecdd3b77af7cadea0ef31f0e2ca9", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/l/lz4-libs-1.9.1-2.fc32.aarch64.rpm", + "checksum": "sha256:a7394cd1b11a1b25efaab43a30b1d9687683884babc162f43e29fdee4f00bda8", + "check_gpg": true + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.9.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/man-db-2.9.0-2.fc32.aarch64.rpm", + "checksum": "sha256:086552102da5fd978a4722ddd21381d432abb9f886cd97761d2efbff2c588791", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mkpasswd-5.5.6-1.fc32.aarch64.rpm", + "checksum": "sha256:45e2c1c76a0a0b6e1164c457307250a54a7de5905992b4351a84183c2e9f2633", + "check_gpg": true + }, + { + "name": "mokutil", + "epoch": 2, + "version": "0.3.0", + "release": "15.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mokutil-0.3.0-15.fc32.aarch64.rpm", + "checksum": "sha256:cc2019e304ecdfa3a245de005342c8d617d1da0d834e510849764fb38b929655", + "check_gpg": true + }, + { + "name": "mozjs60", + "epoch": 0, + "version": "60.9.0", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mozjs60-60.9.0-5.fc32.aarch64.rpm", + "checksum": "sha256:b532ac1225423bbce715f47ae83c1b9b70ac1e7818760a498c83aab0ae374c99", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "4.0.2", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/m/mpfr-4.0.2-3.fc32.aarch64.rpm", + "checksum": "sha256:94d02790ff430efebbfc12ca2c2029c66e1691b70baf7cf45159fb8464d38e56", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-6.1-15.20191109.fc32.aarch64.rpm", + "checksum": "sha256:fe7ee39b0779c467c5d8a20daff4911e1967523e6fc748179e77584168e18bde", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm", + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.aarch64.rpm", + "checksum": "sha256:a973f92acb0afe61087a69d13a532c18a39dd60b3ba4826b38350f2c6b27e417", + "check_gpg": true + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.56.20160912git.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/net-tools-2.0-0.56.20160912git.fc32.aarch64.rpm", + "checksum": "sha256:8db16495c82aeba17b61896e6414f2ce212088370e88cf73b8999bf2317c015c", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/nettle-3.5.1-5.fc32.aarch64.rpm", + "checksum": "sha256:15b2402e11402a6cb494bf7ea31ebf10bf1adb0759aab417e63d05916e56aa45", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/n/npth-1.6-4.fc32.aarch64.rpm", + "checksum": "sha256:5b1cb1251cf7f65c50d9e3fcc11901fef5132dc177cce68a50918da481bb7629", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openldap-2.4.47-4.fc32.aarch64.rpm", + "checksum": "sha256:c030084d188fc99359cc088bd77d2ee6578e717f1cf2d067b8967c6cbe863c6e", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssh-8.2p1-2.fc32.aarch64.rpm", + "checksum": "sha256:57ee793c1f8dc1c9b58953b03d7041501eea326cefc4dda6de640761c60e31f8", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssh-clients-8.2p1-2.fc32.aarch64.rpm", + "checksum": "sha256:5fa81b28d5100f987cd8d9317ccf200ec5b94d11ed3c8e2e90137b8981e71c61", + "check_gpg": true + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssh-server-8.2p1-2.fc32.aarch64.rpm", + "checksum": "sha256:6fcaddc0fde4e23d6650cd46b3763903c7b693afa69aad52fdf87a8563aa5f84", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-1.1.1d-7.fc32.aarch64.rpm", + "checksum": "sha256:e30482032783ab59417bfaf8394be42d2e2e779a580979bd87f15bd0880df858", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.aarch64.rpm", + "checksum": "sha256:0178be1e5d6da8053061d29013d8fda8445d37eac908afbf4a2ca92faf950f2c", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.aarch64.rpm", + "checksum": "sha256:85dc7962af97e86a655b8ec5d5276e511f50b1d4abe624f4d8cb0d784007e342", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/o/os-prober-1.77-4.fc32.aarch64.rpm", + "checksum": "sha256:a718bc2a857bde398de2375efae50dac568217f547b272d7cbe0a1655ec0d961", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/p11-kit-0.23.20-1.fc32.aarch64.rpm", + "checksum": "sha256:afba861f69234f4cb4040085a4868c7424666a4356d0e2002e16b0afb75ec0d2", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.aarch64.rpm", + "checksum": "sha256:b867eeba06e6fc9084c227d8b3ea54f1815cb1833a29babf114fa1167aa17f2d", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "24.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pam-1.3.1-24.fc32.aarch64.rpm", + "checksum": "sha256:9738af51bf206850f6611306bed20542ed32a1701188611caab0b6896e4ffb37", + "check_gpg": true + }, + { + "name": "parted", + "epoch": 0, + "version": "3.3", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/parted-3.3-3.fc32.aarch64.rpm", + "checksum": "sha256:026212c277c72facfd48901978afded50fc4050aedaa06a24e5e57875ce48c32", + "check_gpg": true + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "8.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/passwd-0.80-8.fc32.aarch64.rpm", + "checksum": "sha256:30bf2e7deddad50a3054827c98e97adfd3ae1d24ae248980649db289198135a8", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.44", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre-8.44-1.fc32.aarch64.rpm", + "checksum": "sha256:a3775cb3bc81bb5444e26695a62b1bd2eb48a91d7bc3a361d763c185cb817de1", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre2-10.34-9.fc32.aarch64.rpm", + "checksum": "sha256:7417889b8455ba87230fd5a987fe160d86de8250b87d7ae9bbcba90c32053172", + "check_gpg": true + }, + { + "name": "pcre2-syntax", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm", + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "6.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pigz-2.4-6.fc32.aarch64.rpm", + "checksum": "sha256:77297d07807ddcb85bad6fd788c6f1692af47d00ad27305f3e2217e34e81f538", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/pinentry-1.1.0-7.fc32.aarch64.rpm", + "checksum": "sha256:a580e36566f6ffceef809e49fc4c7f9b1418a16123d4d49079c8423b6a337e67", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/policycoreutils-3.0-2.fc32.aarch64.rpm", + "checksum": "sha256:29bcc2f3f85ca7bdc22178af3e16743f55353bd9f25fb4c748d8c9f7117fe56f", + "check_gpg": true + }, + { + "name": "polkit", + "epoch": 0, + "version": "0.116", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/polkit-0.116-7.fc32.aarch64.rpm", + "checksum": "sha256:056227b8324dbabe392ac9b3e8a28ae7fa1b630f5d06cc156e687b988a49c6bd", + "check_gpg": true + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.116", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/polkit-libs-0.116-7.fc32.aarch64.rpm", + "checksum": "sha256:54613bd9e0524bb992bd7779c80a24b12df744085031cb8f3defb5fae55ca0f5", + "check_gpg": true + }, + { + "name": "polkit-pkla-compat", + "epoch": 0, + "version": "0.1", + "release": "16.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/polkit-pkla-compat-0.1-16.fc32.aarch64.rpm", + "checksum": "sha256:1bc0bced158db1fdd71c8c9211a6fae4e351720b8156d98059f62a945f97cf72", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "19.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/popt-1.16-19.fc32.aarch64.rpm", + "checksum": "sha256:8f4be33cb040f081bb1f863b92e94ac7838af743cb5a0ce9d8c8ec9a611f71a6", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/procps-ng-3.3.15-7.fc32.aarch64.rpm", + "checksum": "sha256:bcb0cd53344744f9c8d11041eb76fc5b304f78c791846521bbe105e78f2bd0f8", + "check_gpg": true + }, + { + "name": "psmisc", + "epoch": 0, + "version": "23.3", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/psmisc-23.3-3.fc32.aarch64.rpm", + "checksum": "sha256:1eb386a258cebf600319b1f18344b047c9182485936d96da9c2b1067ac1c1bba", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm", + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-3.8.2-2.fc32.aarch64.rpm", + "checksum": "sha256:857330a729697c1b6e8d86550391f1abf4db87d5ffeffeb5f00065fa8be85cbd", + "check_gpg": true + }, + { + "name": "python3-attrs", + "epoch": 0, + "version": "19.3.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-attrs-19.3.0-2.fc32.noarch.rpm", + "checksum": "sha256:bcb07748c8688c788ec69c3a33c0abd1bb3a496b9aa09b5729265670bc7ba0eb", + "check_gpg": true + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-audit-3.0-0.19.20191104git1c2f876.fc32.aarch64.rpm", + "checksum": "sha256:16902074f43963a360df42fec639f8b30ad29ee0d8a9799ac26ff0ba5c60e4cd", + "check_gpg": true + }, + { + "name": "python3-babel", + "epoch": 0, + "version": "2.8.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-babel-2.8.0-2.fc32.noarch.rpm", + "checksum": "sha256:5719dd2fb399cadec08b4ac41c794239d2a2de2f012faeb970ab90a07bba0084", + "check_gpg": true + }, + { + "name": "python3-cffi", + "epoch": 0, + "version": "1.14.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-cffi-1.14.0-1.fc32.aarch64.rpm", + "checksum": "sha256:844ee747d24d934104398be60747b407d19c8106ead11b06fe92fcc62bd765fc", + "check_gpg": true + }, + { + "name": "python3-chardet", + "epoch": 0, + "version": "3.0.4", + "release": "15.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-chardet-3.0.4-15.fc32.noarch.rpm", + "checksum": "sha256:e7b9fd73c260cd22d3a36823530d4f623ea0e16844b900a5677c769afa76341c", + "check_gpg": true + }, + { + "name": "python3-configobj", + "epoch": 0, + "version": "5.0.6", + "release": "20.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-configobj-5.0.6-20.fc32.noarch.rpm", + "checksum": "sha256:81b6181b947d50e0a1ea681298417e552421d6714900d07a34dc25899e5c9f60", + "check_gpg": true + }, + { + "name": "python3-cryptography", + "epoch": 0, + "version": "2.8", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-cryptography-2.8-3.fc32.aarch64.rpm", + "checksum": "sha256:bbf9571bf10df55a90e73b372da33b6ac54fad5778cea58064b7b57dcbb17180", + "check_gpg": true + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.8.0", + "release": "8.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dateutil-2.8.0-8.fc32.noarch.rpm", + "checksum": "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862", + "check_gpg": true + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.16", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dbus-1.2.16-1.fc32.aarch64.rpm", + "checksum": "sha256:092370d1e62096782f329944df0e7e01cc49bbc0fa4071d63f352cf45e89e5bc", + "check_gpg": true + }, + { + "name": "python3-distro", + "epoch": 0, + "version": "1.4.0", + "release": "5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-distro-1.4.0-5.fc32.noarch.rpm", + "checksum": "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.14", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-dnf-plugins-core-4.0.14-1.fc32.noarch.rpm", + "checksum": "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-gpg-1.13.1-6.fc32.aarch64.rpm", + "checksum": "sha256:fe96e7fe3da0db38b8b8850c9dedd50c1358309fee24c774bc64ddee62bb11be", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.aarch64.rpm", + "checksum": "sha256:79defc84763baec2190da8941221abfa002d6f6c9e8c3486e2c492389fca2a57", + "check_gpg": true + }, + { + "name": "python3-idna", + "epoch": 0, + "version": "2.8", + "release": "6.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-idna-2.8-6.fc32.noarch.rpm", + "checksum": "sha256:61c51596cc97f35177efe8dc5e2ca52d8fd528570f33c184497f419259b73c90", + "check_gpg": true + }, + { + "name": "python3-jinja2", + "epoch": 0, + "version": "2.11.1", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jinja2-2.11.1-1.fc32.noarch.rpm", + "checksum": "sha256:645f82cf62da25742cab5e8ffd1f764301b84ab19710d9f3fb3aff1cb57ffdc6", + "check_gpg": true + }, + { + "name": "python3-jsonpatch", + "epoch": 0, + "version": "1.21", + "release": "11.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jsonpatch-1.21-11.fc32.noarch.rpm", + "checksum": "sha256:4c9d77d63ddc7dda0e018fc1c97d46025794e336e58d838a631fcc130dfa3b9b", + "check_gpg": true + }, + { + "name": "python3-jsonpointer", + "epoch": 0, + "version": "1.10", + "release": "19.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jsonpointer-1.10-19.fc32.noarch.rpm", + "checksum": "sha256:6615aae3def0c49910e43e2d69f7ae8852694953dceb4b6235b5cf4099296d70", + "check_gpg": true + }, + { + "name": "python3-jsonschema", + "epoch": 0, + "version": "3.2.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jsonschema-3.2.0-2.fc32.noarch.rpm", + "checksum": "sha256:6890a9545194ad6cf1b0c58e5273132171a9ced9cb665a1442aa62b6b6d3d2ea", + "check_gpg": true + }, + { + "name": "python3-jwt", + "epoch": 0, + "version": "1.7.1", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-jwt-1.7.1-7.fc32.noarch.rpm", + "checksum": "sha256:d0bc781a80be1d1fe204ec6b26255240261d55f6e24a28343572f2221a00533e", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.aarch64.rpm", + "checksum": "sha256:e76aea00d64d100bafcea1672ce65f8bfd47bdf7e0dc7bf859fc0c6ec29d5823", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.aarch64.rpm", + "checksum": "sha256:023d3d7be30607410a2357b50b8ef3f94a07baf2842bfba0421f803600ec605f", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libs-3.8.2-2.fc32.aarch64.rpm", + "checksum": "sha256:32a00991ec85f0bf2a336e00033a0e70b0da963eb42d81bbad18a7a11f41d4eb", + "check_gpg": true + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libselinux-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:84313c8f10f91d10e4f734c3a605b0a771d2faa72bf43deeed60a4cf3606a0da", + "check_gpg": true + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-libsemanage-3.0-3.fc32.aarch64.rpm", + "checksum": "sha256:eded265cff5d22b89a955570eba030643d6730dd5987c2efed3110ef74cd0254", + "check_gpg": true + }, + { + "name": "python3-markupsafe", + "epoch": 0, + "version": "1.1.1", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-markupsafe-1.1.1-5.fc32.aarch64.rpm", + "checksum": "sha256:a2fcc535573ade5656cdb6968eb13dd68380540b5f25a0eca3947676dc5f11d6", + "check_gpg": true + }, + { + "name": "python3-oauthlib", + "epoch": 0, + "version": "3.0.2", + "release": "5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-oauthlib-3.0.2-5.fc32.noarch.rpm", + "checksum": "sha256:391faab010ca30610a14e0b3d54fbc0331be39bc831086fb877f8021fe4b171f", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "name": "python3-ply", + "epoch": 0, + "version": "3.11", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-ply-3.11-7.fc32.noarch.rpm", + "checksum": "sha256:f6203a41ed91197bb770a38a101d977f0f56de86ccc5a71cee9c0e198f26bcbc", + "check_gpg": true + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-policycoreutils-3.0-2.fc32.noarch.rpm", + "checksum": "sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2", + "check_gpg": true + }, + { + "name": "python3-prettytable", + "epoch": 0, + "version": "0.7.2", + "release": "22.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-prettytable-0.7.2-22.fc32.noarch.rpm", + "checksum": "sha256:4860a733ca3f22089c6c283cbdcf53123a702d60b5bffdd4fe9d76826f91139a", + "check_gpg": true + }, + { + "name": "python3-pycparser", + "epoch": 0, + "version": "2.19", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pycparser-2.19-2.fc32.noarch.rpm", + "checksum": "sha256:a0b87b2dc3c5f536e94d6a4f3563a621dfbc067a62c3d1fe69bdb70c3cecec57", + "check_gpg": true + }, + { + "name": "python3-pyrsistent", + "epoch": 0, + "version": "0.15.7", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pyrsistent-0.15.7-2.fc32.aarch64.rpm", + "checksum": "sha256:f0143760628def255de0b7e1aba6f7880705329703f7357425868483ba8f43e7", + "check_gpg": true + }, + { + "name": "python3-pyserial", + "epoch": 0, + "version": "3.4", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pyserial-3.4-7.fc32.noarch.rpm", + "checksum": "sha256:a107b3d3790a5bcfdc28f6f4718969039b103a681a2647f3cbcb82cf92e97acb", + "check_gpg": true + }, + { + "name": "python3-pysocks", + "epoch": 0, + "version": "1.7.1", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pysocks-1.7.1-4.fc32.noarch.rpm", + "checksum": "sha256:fa791a4328b4c41b7190d862de921605f266a64abee03b2ea2e8d2b644be307f", + "check_gpg": true + }, + { + "name": "python3-pytz", + "epoch": 0, + "version": "2019.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pytz-2019.3-2.fc32.noarch.rpm", + "checksum": "sha256:c93df175a0a4989aaaeb170406d8ff13a2cd93a5fc52ad33468245fea2044a86", + "check_gpg": true + }, + { + "name": "python3-pyyaml", + "epoch": 0, + "version": "5.3.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-pyyaml-5.3.1-1.fc32.aarch64.rpm", + "checksum": "sha256:0055cc4eccd54df5b64c194618a26e894a0d61781c8d1f1f48687bfd296b15e4", + "check_gpg": true + }, + { + "name": "python3-requests", + "epoch": 0, + "version": "2.22.0", + "release": "8.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-requests-2.22.0-8.fc32.noarch.rpm", + "checksum": "sha256:d611f0c4252c4c4b893850807748e62cf4d17d72d544ef2744091df3206d8178", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:34efde201252afe93ec3af61af30c6d32cfbe5ecbdcecaf4667666f12482757d", + "check_gpg": true + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.3.0", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-setools-4.3.0-1.fc32.aarch64.rpm", + "checksum": "sha256:82d2eaad75cf45da9773298344dcbbaebb4da5b67526a6c43bc67d3f84d98616", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.14.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-six-1.14.0-2.fc32.noarch.rpm", + "checksum": "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-unbound-1.9.6-2.fc32.aarch64.rpm", + "checksum": "sha256:acafdf6b20fea5974da004b77eced20b00c59a908edcef9c4c4e60815fdbf8f3", + "check_gpg": true + }, + { + "name": "python3-urllib3", + "epoch": 0, + "version": "1.25.7", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/p/python3-urllib3-1.25.7-3.fc32.noarch.rpm", + "checksum": "sha256:3882823d0eb18e0e8146584f4a32a4801961f6fdc09075607746317eba3265be", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.aarch64.rpm", + "checksum": "sha256:3d6ec574fe2c612bcc45395f7ee87c68f45016f005c6d7aeee6b37897f41b8d2", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/readline-8.0-4.fc32.aarch64.rpm", + "checksum": "sha256:6007c88c459315a5e2ce354086bd0372a56e15cdd0dc14e6e889ab859f8d8365", + "check_gpg": true + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "27.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rootfiles-8.1-27.fc32.noarch.rpm", + "checksum": "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:d2bd77606d1c91208be05edce6ea04c24fa2efc880569eecb958afde1a7fb17e", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:0c30a7fd9f69ad808183afa0814e363689ff63e7a82856a790e5fa111c031b96", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:7fe5838c895cd1158a6ae2afb3794e79e393d6701330e1109592e6b45f4bd876", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:91ab783e9eb00d5baba65989c86c3d742033bd2306ff7adb0b78185f28d2ca86", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:7d5d62696fc69bb890912be71c05e92496129f198838cb56d349a8fc700a85a6", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.aarch64.rpm", + "checksum": "sha256:33ca43cf0714aef344a70be4cfa42322694cc975a2eeee0bf31325dbca7f2842", + "check_gpg": true + }, + { + "name": "rsync", + "epoch": 0, + "version": "3.1.3", + "release": "11.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/r/rsync-3.1.3-11.fc32.aarch64.rpm", + "checksum": "sha256:378b476e531108bc1944e1c27fa7e269bb10dfc84f5e0a7c2c1cb17d2f7f4280", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "5.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sed-4.5-5.fc32.aarch64.rpm", + "checksum": "sha256:ccf07a3682a1038a6224b3da69e20f201584ed1c879539cedb57e184aa14429a", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.6", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm", + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.8.1", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/shadow-utils-4.8.1-2.fc32.aarch64.rpm", + "checksum": "sha256:debd948a7e454f07dd7ab8ed79984158b98ce333d77be948e4393bb87c518ab8", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.15", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/shared-mime-info-1.15-3.fc32.aarch64.rpm", + "checksum": "sha256:a92c4a583aacd37beb069c996307bd782f809c78fd1fb802de25a53efbaff8f8", + "check_gpg": true + }, + { + "name": "shim-aa64", + "epoch": 0, + "version": "15", + "release": "8", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/shim-aa64-15-8.aarch64.rpm", + "checksum": "sha256:bc2c4637779e037072ebbd00215afbb33ce05706c7851cfde4cc0637c63f75f3", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.31.1", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.aarch64.rpm", + "checksum": "sha256:c75bf533b09243daeca728129a6fe10fca47d0c150fd43b5dab7b4993584536f", + "check_gpg": true + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sssd-client-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:cc531264ae00fbc4e465b6b47c8f3772edee80346b92cee1fae88d8cdb9dcdcf", + "check_gpg": true + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sssd-common-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:b3657ad1419ab11e07608c7bc4da75a91162b2398d66febfc061795bc1587036", + "check_gpg": true + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sssd-kcm-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:5ce4acbf25abd83a562f20e9a8a73b8860a766fb543d69ed9db6eb57fd75fc70", + "check_gpg": true + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sssd-nfs-idmap-2.2.3-13.fc32.aarch64.rpm", + "checksum": "sha256:46aa2a21a000eb70097a86788d853602f7db1238156f2364a802f0b37f0dc4e6", + "check_gpg": true + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.9.0", + "release": "0.1.b4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/sudo-1.9.0-0.1.b4.fc32.aarch64.rpm", + "checksum": "sha256:56b5cea4fa7f4d74d4d15aae43ab4827387dead4659bd2bede66c38057cd19e7", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-245.4-1.fc32.aarch64.rpm", + "checksum": "sha256:41c6a8ea4240f2fa6cea0333cc6d5f59731ac843398eb457c182e90af367783c", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-libs-245.4-1.fc32.aarch64.rpm", + "checksum": "sha256:52aa6e698e60cd360d5b9473fd1ebcc7e238e2125449bfdcc41b3e0fe13ae645", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-pam-245.4-1.fc32.aarch64.rpm", + "checksum": "sha256:9baa05a69943b0c6274403276f45817ab56193de62b5b64205b4fd35951e0895", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm", + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/s/systemd-udev-245.4-1.fc32.aarch64.rpm", + "checksum": "sha256:ff6540076bd7247ca2c1c8beb8979adb5eaf27877125c7f5cc187dc10913048f", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/tar-1.32-4.fc32.aarch64.rpm", + "checksum": "sha256:2f849fdf4588b1b4e86a008b6a82f30ff2ec1db1ae2bd21e067c6f910e4cb237", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/trousers-0.3.13-13.fc31.aarch64.rpm", + "checksum": "sha256:3242e0ce48f95d7a271125cf1222b5af09e20fe85194623d95336e1c678bdee8", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/trousers-lib-0.3.13-13.fc31.aarch64.rpm", + "checksum": "sha256:a6c26dd0ba8fc6a15e845f72f90e89b62f7344d7793896e707e610286b5e4541", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "4.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/tss2-1331-4.fc32.aarch64.rpm", + "checksum": "sha256:91e35b3750f5029be019542a4143cf00de68559b9ab6ae6df2c8f7ea6e60acd9", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm", + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/u/unbound-libs-1.9.6-2.fc32.aarch64.rpm", + "checksum": "sha256:654a9a9997c975998e1cb5d9250cd34b9d9d4d69f43c9282e67ad4d38fa2bcdf", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/u/util-linux-2.35.1-7.fc32.aarch64.rpm", + "checksum": "sha256:25e6968493572c680d6f8cad03e591f6e1e0e6ce0d1fbe3648d4b64ba529491d", + "check_gpg": true + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.2.525", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/v/vim-minimal-8.2.525-1.fc32.aarch64.rpm", + "checksum": "sha256:20f32df3b4961ef659a4822686978e0501fc5262e942046b53b24ed11e77476b", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "19.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/w/which-2.21-19.fc32.aarch64.rpm", + "checksum": "sha256:d552c735d48fa647509605f524863eab28b69b9fc8d7c62a67479c3af0878024", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm", + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.4.0", + "release": "3.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xfsprogs-5.4.0-3.fc32.aarch64.rpm", + "checksum": "sha256:fc6b083682762fb891b50ed6e9f684ac54a2a05a78e24078ff66d4636ae89588", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.29", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm", + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xz-5.2.5-1.fc32.aarch64.rpm", + "checksum": "sha256:202d761caf4c9d4937c04388a7180d6687a79e8141136be0f7ecc3a54bf80594", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/x/xz-libs-5.2.5-1.fc32.aarch64.rpm", + "checksum": "sha256:48381163a3f2c524697efc07538f040fde0b69d4e0fdcbe3bcfbc9924dd7d5dd", + "check_gpg": true + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/y/yum-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.aarch64.rpm", + "checksum": "sha256:0a31a882e4ac33233b36e2c61cc09125a936f54877137d5bb2ddc1ca8a5f9a12", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "21.fc32", + "arch": "aarch64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/Packages/z/zlib-1.2.11-21.fc32.aarch64.rpm", + "checksum": "sha256:df7184fef93e9f8f535d78349605595a812511db5e6dee26cbee15569a055422", + "check_gpg": true + } + ], + "checksums": { + "0": "sha256:f56d50d2c120f5fe150f53a3f72d2b8df93d0c4c51e9ae866dfa08f1d5517fb1" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac ro biosdevname=0 net.ifnames=0" + }, + "bootloader": "unknown", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "initrd": "/boot/initramfs-5.6.6-300.fc32.aarch64.img", + "linux": "/boot/vmlinuz-5.6.6-300.fc32.aarch64", + "options": "$kernelopts", + "title": "Fedora (5.6.6-300.fc32.aarch64) 32 (Thirty Two)", + "version": "5.6.6-300.fc32.aarch64" + } + ], + "fstab": [ + [ + "UUID=46BB-8120", + "/boot/efi", + "vfat", + "umask=0077,shortname=winnt", + "0", + "2" + ], + [ + "UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "/", + "ext4", + "defaults", + "1", + "1" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:992:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:997:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "polkitd:x:993:", + "redhat:x:1000:", + "render:x:996:", + "root:x:0:", + "ssh_keys:x:998:", + "sshd:x:74:", + "sys:x:3:", + "systemd-coredump:x:995:", + "systemd-journal:x:190:", + "systemd-network:x:192:", + "systemd-resolve:x:193:", + "systemd-timesync:x:994:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:999:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "qcow2", + "os-release": { + "ANSI_COLOR": "0;34", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:fedoraproject:fedora:32", + "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f32/system-administrators-guide/", + "HOME_URL": "https://fedoraproject.org/", + "ID": "fedora", + "LOGO": "fedora-logo-icon", + "NAME": "Fedora", + "PLATFORM_ID": "platform:f32", + "PRETTY_NAME": "Fedora 32 (Cloud Edition)", + "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy", + "REDHAT_BUGZILLA_PRODUCT": "Fedora", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "32", + "REDHAT_SUPPORT_PRODUCT": "Fedora", + "REDHAT_SUPPORT_PRODUCT_VERSION": "32", + "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help", + "VARIANT": "Cloud Edition", + "VARIANT_ID": "cloud", + "VERSION": "32 (Cloud Edition)", + "VERSION_CODENAME": "", + "VERSION_ID": "32" + }, + "packages": [ + "NetworkManager-1.22.10-1.fc32.aarch64", + "NetworkManager-libnm-1.22.10-1.fc32.aarch64", + "acl-2.2.53-5.fc32.aarch64", + "alternatives-1.11-6.fc32.aarch64", + "audit-3.0-0.19.20191104git1c2f876.fc32.aarch64", + "audit-libs-3.0-0.19.20191104git1c2f876.fc32.aarch64", + "basesystem-11-9.fc32.noarch", + "bash-5.0.11-2.fc32.aarch64", + "bzip2-libs-1.0.8-2.fc32.aarch64", + "c-ares-1.15.0-5.fc32.aarch64", + "ca-certificates-2020.2.40-3.fc32.noarch", + "checkpolicy-3.0-3.fc32.aarch64", + "chrony-3.5-8.fc32.aarch64", + "cloud-init-19.4-2.fc32.noarch", + "cloud-utils-growpart-0.31-6.fc32.noarch", + "compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch", + "compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch", + "compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch", + "console-login-helper-messages-0.17-2.fc32.noarch", + "console-login-helper-messages-issuegen-0.17-2.fc32.noarch", + "console-login-helper-messages-motdgen-0.17-2.fc32.noarch", + "console-login-helper-messages-profile-0.17-2.fc32.noarch", + "coreutils-8.32-3.fc32.1.aarch64", + "coreutils-common-8.32-3.fc32.1.aarch64", + "cpio-2.13-4.fc32.aarch64", + "cracklib-2.9.6-22.fc32.aarch64", + "cracklib-dicts-2.9.6-22.fc32.aarch64", + "crypto-policies-20191128-5.gitcd267a5.fc32.noarch", + "crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch", + "cryptsetup-libs-2.3.0-1.fc32.aarch64", + "curl-7.69.1-1.fc32.aarch64", + "cyrus-sasl-lib-2.1.27-4.fc32.aarch64", + "dbus-1.12.16-4.fc32.aarch64", + "dbus-broker-22-1.fc32.aarch64", + "dbus-common-1.12.16-4.fc32.noarch", + "dbus-libs-1.12.16-4.fc32.aarch64", + "dbxtool-8-11.fc32.aarch64", + "dejavu-sans-fonts-2.37-7.fc32.noarch", + "deltarpm-3.6.2-5.fc32.aarch64", + "device-mapper-1.02.171-1.fc32.aarch64", + "device-mapper-libs-1.02.171-1.fc32.aarch64", + "dhcp-client-4.4.2-5.b1.fc32.aarch64", + "dhcp-common-4.4.2-5.b1.fc32.noarch", + "diffutils-3.7-4.fc32.aarch64", + "dnf-4.2.19-1.fc32.noarch", + "dnf-data-4.2.19-1.fc32.noarch", + "dnf-plugins-core-4.0.14-1.fc32.noarch", + "dracut-050-26.git20200316.fc32.aarch64", + "dracut-config-generic-050-26.git20200316.fc32.aarch64", + "e2fsprogs-1.45.5-3.fc32.aarch64", + "e2fsprogs-libs-1.45.5-3.fc32.aarch64", + "efi-filesystem-4-4.fc32.noarch", + "efibootmgr-16-7.fc32.aarch64", + "efivar-libs-37-7.fc32.aarch64", + "elfutils-debuginfod-client-0.179-1.fc32.aarch64", + "elfutils-default-yama-scope-0.179-1.fc32.noarch", + "elfutils-libelf-0.179-1.fc32.aarch64", + "elfutils-libs-0.179-1.fc32.aarch64", + "expat-2.2.8-2.fc32.aarch64", + "fedora-gpg-keys-32-1.noarch", + "fedora-release-cloud-32-1.noarch", + "fedora-release-common-32-1.noarch", + "fedora-repos-32-1.noarch", + "file-5.38-2.fc32.aarch64", + "file-libs-5.38-2.fc32.aarch64", + "filesystem-3.14-2.fc32.aarch64", + "findutils-4.7.0-3.fc32.aarch64", + "fipscheck-1.5.0-8.fc32.aarch64", + "fipscheck-lib-1.5.0-8.fc32.aarch64", + "fonts-filesystem-2.0.3-1.fc32.noarch", + "fuse-libs-2.9.9-9.fc32.aarch64", + "gawk-5.0.1-7.fc32.aarch64", + "gdbm-libs-1.18.1-3.fc32.aarch64", + "geolite2-city-20191217-2.fc32.noarch", + "geolite2-country-20191217-2.fc32.noarch", + "gettext-0.20.1-4.fc32.aarch64", + "gettext-libs-0.20.1-4.fc32.aarch64", + "glib2-2.64.1-1.fc32.aarch64", + "glibc-2.31-2.fc32.aarch64", + "glibc-common-2.31-2.fc32.aarch64", + "glibc-langpack-en-2.31-2.fc32.aarch64", + "gmp-6.1.2-13.fc32.aarch64", + "gnupg2-2.2.19-1.fc32.aarch64", + "gnupg2-smime-2.2.19-1.fc32.aarch64", + "gnutls-3.6.13-1.fc32.aarch64", + "gpg-pubkey-12c944d0-5d5156ab", + "gpgme-1.13.1-6.fc32.aarch64", + "grep-3.3-4.fc32.aarch64", + "groff-base-1.22.3-21.fc32.aarch64", + "grub2-common-2.04-12.fc32.noarch", + "grub2-efi-aa64-2.04-12.fc32.aarch64", + "grub2-tools-2.04-12.fc32.aarch64", + "grub2-tools-minimal-2.04-12.fc32.aarch64", + "grubby-8.40-40.fc32.aarch64", + "gzip-1.10-2.fc32.aarch64", + "hostname-3.23-2.fc32.aarch64", + "ima-evm-utils-1.2.1-3.fc32.aarch64", + "initscripts-10.02-3.fc32.aarch64", + "ipcalc-0.4.0-2.fc32.aarch64", + "iproute-5.5.0-1.fc32.aarch64", + "iproute-tc-5.5.0-1.fc32.aarch64", + "iptables-libs-1.8.4-7.fc32.aarch64", + "iputils-20190515-5.fc32.aarch64", + "jansson-2.12-5.fc32.aarch64", + "json-c-0.13.1-9.fc32.aarch64", + "kbd-2.2.0-1.fc32.aarch64", + "kbd-legacy-2.2.0-1.fc32.noarch", + "kbd-misc-2.2.0-1.fc32.noarch", + "kernel-core-5.6.6-300.fc32.aarch64", + "keyutils-libs-1.6-4.fc32.aarch64", + "kmod-27-1.fc32.aarch64", + "kmod-libs-27-1.fc32.aarch64", + "kpartx-0.8.2-3.fc32.aarch64", + "krb5-libs-1.18-1.fc32.aarch64", + "langpacks-core-en-3.0-3.fc32.noarch", + "langpacks-core-font-en-3.0-3.fc32.noarch", + "langpacks-en-3.0-3.fc32.noarch", + "less-551-3.fc32.aarch64", + "libacl-2.2.53-5.fc32.aarch64", + "libarchive-3.4.2-1.fc32.aarch64", + "libargon2-20171227-4.fc32.aarch64", + "libassuan-2.5.3-3.fc32.aarch64", + "libattr-2.4.48-8.fc32.aarch64", + "libbasicobjects-0.1.1-44.fc32.aarch64", + "libblkid-2.35.1-7.fc32.aarch64", + "libbrotli-1.0.7-10.fc32.aarch64", + "libcap-2.26-7.fc32.aarch64", + "libcap-ng-0.7.10-2.fc32.aarch64", + "libcbor-0.5.0-7.fc32.aarch64", + "libcollection-0.7.0-44.fc32.aarch64", + "libcom_err-1.45.5-3.fc32.aarch64", + "libcomps-0.1.14-4.fc32.aarch64", + "libcroco-0.6.13-3.fc32.aarch64", + "libcurl-7.69.1-1.fc32.aarch64", + "libdb-5.3.28-40.fc32.aarch64", + "libdb-utils-5.3.28-40.fc32.aarch64", + "libdhash-0.5.0-44.fc32.aarch64", + "libdnf-0.45.0-3.fc32.aarch64", + "libedit-3.1-32.20191231cvs.fc32.aarch64", + "libevent-2.1.8-8.fc32.aarch64", + "libfdisk-2.35.1-7.fc32.aarch64", + "libffi-3.1-24.fc32.aarch64", + "libfido2-1.3.1-1.fc32.aarch64", + "libgcc-10.0.1-0.11.fc32.aarch64", + "libgcrypt-1.8.5-3.fc32.aarch64", + "libgomp-10.0.1-0.11.fc32.aarch64", + "libgpg-error-1.36-3.fc32.aarch64", + "libidn2-2.3.0-2.fc32.aarch64", + "libini_config-1.3.1-44.fc32.aarch64", + "libkcapi-1.1.5-2.fc32.aarch64", + "libkcapi-hmaccalc-1.1.5-2.fc32.aarch64", + "libksba-1.3.5-11.fc32.aarch64", + "libldb-2.1.1-1.fc32.aarch64", + "libmaxminddb-1.3.2-2.fc32.aarch64", + "libmetalink-0.1.3-10.fc32.aarch64", + "libmnl-1.0.4-11.fc32.aarch64", + "libmodulemd-2.9.1-1.fc32.aarch64", + "libmount-2.35.1-7.fc32.aarch64", + "libndp-1.7-5.fc32.aarch64", + "libnetfilter_conntrack-1.0.7-4.fc32.aarch64", + "libnfnetlink-1.0.1-17.fc32.aarch64", + "libnfsidmap-2.4.3-0.fc32.aarch64", + "libnghttp2-1.40.0-2.fc32.aarch64", + "libnl3-3.5.0-2.fc32.aarch64", + "libnsl2-1.2.0-6.20180605git4a062cf.fc32.aarch64", + "libpath_utils-0.2.1-44.fc32.aarch64", + "libpcap-1.9.1-3.fc32.aarch64", + "libpipeline-1.5.2-2.fc32.aarch64", + "libpsl-0.21.0-4.fc32.aarch64", + "libpwquality-1.4.2-2.fc32.aarch64", + "libref_array-0.1.5-44.fc32.aarch64", + "librepo-1.11.1-4.fc32.aarch64", + "libreport-filesystem-2.12.0-3.fc32.noarch", + "libseccomp-2.4.2-3.fc32.aarch64", + "libsecret-0.20.2-2.fc32.aarch64", + "libselinux-3.0-3.fc32.aarch64", + "libselinux-utils-3.0-3.fc32.aarch64", + "libsemanage-3.0-3.fc32.aarch64", + "libsepol-3.0-3.fc32.aarch64", + "libsigsegv-2.11-10.fc32.aarch64", + "libsmartcols-2.35.1-7.fc32.aarch64", + "libsolv-0.7.11-2.fc32.aarch64", + "libss-1.45.5-3.fc32.aarch64", + "libssh-0.9.3-2.fc32.aarch64", + "libssh-config-0.9.3-2.fc32.noarch", + "libsss_autofs-2.2.3-13.fc32.aarch64", + "libsss_certmap-2.2.3-13.fc32.aarch64", + "libsss_idmap-2.2.3-13.fc32.aarch64", + "libsss_nss_idmap-2.2.3-13.fc32.aarch64", + "libsss_sudo-2.2.3-13.fc32.aarch64", + "libstdc++-10.0.1-0.11.fc32.aarch64", + "libtalloc-2.3.1-2.fc32.aarch64", + "libtasn1-4.16.0-1.fc32.aarch64", + "libtdb-1.4.3-2.fc32.aarch64", + "libtevent-0.10.2-2.fc32.aarch64", + "libtextstyle-0.20.1-4.fc32.aarch64", + "libtirpc-1.2.5-1.rc2.fc32.aarch64", + "libunistring-0.9.10-7.fc32.aarch64", + "libusbx-1.0.23-1.fc32.aarch64", + "libuser-0.62-24.fc32.aarch64", + "libutempter-1.1.6-18.fc32.aarch64", + "libuuid-2.35.1-7.fc32.aarch64", + "libverto-0.3.0-9.fc32.aarch64", + "libxcrypt-4.4.16-1.fc32.aarch64", + "libxkbcommon-0.10.0-2.fc32.aarch64", + "libxml2-2.9.10-3.fc32.aarch64", + "libyaml-0.2.2-3.fc32.aarch64", + "libzstd-1.4.4-2.fc32.aarch64", + "linux-atm-libs-2.5.1-26.fc32.aarch64", + "linux-firmware-20200316-106.fc32.noarch", + "linux-firmware-whence-20200316-106.fc32.noarch", + "lmdb-libs-0.9.24-1.fc32.aarch64", + "lua-libs-5.3.5-7.fc32.aarch64", + "lz4-libs-1.9.1-2.fc32.aarch64", + "man-db-2.9.0-2.fc32.aarch64", + "mkpasswd-5.5.6-1.fc32.aarch64", + "mokutil-0.3.0-15.fc32.aarch64", + "mozjs60-60.9.0-5.fc32.aarch64", + "mpfr-4.0.2-3.fc32.aarch64", + "ncurses-6.1-15.20191109.fc32.aarch64", + "ncurses-base-6.1-15.20191109.fc32.noarch", + "ncurses-libs-6.1-15.20191109.fc32.aarch64", + "net-tools-2.0-0.56.20160912git.fc32.aarch64", + "nettle-3.5.1-5.fc32.aarch64", + "npth-1.6-4.fc32.aarch64", + "openldap-2.4.47-4.fc32.aarch64", + "openssh-8.2p1-2.fc32.aarch64", + "openssh-clients-8.2p1-2.fc32.aarch64", + "openssh-server-8.2p1-2.fc32.aarch64", + "openssl-1.1.1d-7.fc32.aarch64", + "openssl-libs-1.1.1d-7.fc32.aarch64", + "openssl-pkcs11-0.4.10-5.fc32.aarch64", + "os-prober-1.77-4.fc32.aarch64", + "p11-kit-0.23.20-1.fc32.aarch64", + "p11-kit-trust-0.23.20-1.fc32.aarch64", + "pam-1.3.1-24.fc32.aarch64", + "parted-3.3-3.fc32.aarch64", + "passwd-0.80-8.fc32.aarch64", + "pcre-8.44-1.fc32.aarch64", + "pcre2-10.34-9.fc32.aarch64", + "pcre2-syntax-10.34-9.fc32.noarch", + "pigz-2.4-6.fc32.aarch64", + "pinentry-1.1.0-7.fc32.aarch64", + "policycoreutils-3.0-2.fc32.aarch64", + "polkit-0.116-7.fc32.aarch64", + "polkit-libs-0.116-7.fc32.aarch64", + "polkit-pkla-compat-0.1-16.fc32.aarch64", + "popt-1.16-19.fc32.aarch64", + "procps-ng-3.3.15-7.fc32.aarch64", + "psmisc-23.3-3.fc32.aarch64", + "publicsuffix-list-dafsa-20190417-3.fc32.noarch", + "python-pip-wheel-19.3.1-2.fc32.noarch", + "python-setuptools-wheel-41.6.0-2.fc32.noarch", + "python-unversioned-command-3.8.2-2.fc32.noarch", + "python3-3.8.2-2.fc32.aarch64", + "python3-attrs-19.3.0-2.fc32.noarch", + "python3-audit-3.0-0.19.20191104git1c2f876.fc32.aarch64", + "python3-babel-2.8.0-2.fc32.noarch", + "python3-cffi-1.14.0-1.fc32.aarch64", + "python3-chardet-3.0.4-15.fc32.noarch", + "python3-configobj-5.0.6-20.fc32.noarch", + "python3-cryptography-2.8-3.fc32.aarch64", + "python3-dateutil-2.8.0-8.fc32.noarch", + "python3-dbus-1.2.16-1.fc32.aarch64", + "python3-distro-1.4.0-5.fc32.noarch", + "python3-dnf-4.2.19-1.fc32.noarch", + "python3-dnf-plugins-core-4.0.14-1.fc32.noarch", + "python3-gpg-1.13.1-6.fc32.aarch64", + "python3-hawkey-0.45.0-3.fc32.aarch64", + "python3-idna-2.8-6.fc32.noarch", + "python3-jinja2-2.11.1-1.fc32.noarch", + "python3-jsonpatch-1.21-11.fc32.noarch", + "python3-jsonpointer-1.10-19.fc32.noarch", + "python3-jsonschema-3.2.0-2.fc32.noarch", + "python3-jwt-1.7.1-7.fc32.noarch", + "python3-libcomps-0.1.14-4.fc32.aarch64", + "python3-libdnf-0.45.0-3.fc32.aarch64", + "python3-libs-3.8.2-2.fc32.aarch64", + "python3-libselinux-3.0-3.fc32.aarch64", + "python3-libsemanage-3.0-3.fc32.aarch64", + "python3-markupsafe-1.1.1-5.fc32.aarch64", + "python3-oauthlib-3.0.2-5.fc32.noarch", + "python3-pip-19.3.1-2.fc32.noarch", + "python3-ply-3.11-7.fc32.noarch", + "python3-policycoreutils-3.0-2.fc32.noarch", + "python3-prettytable-0.7.2-22.fc32.noarch", + "python3-pycparser-2.19-2.fc32.noarch", + "python3-pyrsistent-0.15.7-2.fc32.aarch64", + "python3-pyserial-3.4-7.fc32.noarch", + "python3-pysocks-1.7.1-4.fc32.noarch", + "python3-pytz-2019.3-2.fc32.noarch", + "python3-pyyaml-5.3.1-1.fc32.aarch64", + "python3-requests-2.22.0-8.fc32.noarch", + "python3-rpm-4.15.1-2.fc32.1.aarch64", + "python3-setools-4.3.0-1.fc32.aarch64", + "python3-setuptools-41.6.0-2.fc32.noarch", + "python3-six-1.14.0-2.fc32.noarch", + "python3-unbound-1.9.6-2.fc32.aarch64", + "python3-urllib3-1.25.7-3.fc32.noarch", + "qrencode-libs-4.0.2-5.fc32.aarch64", + "readline-8.0-4.fc32.aarch64", + "rootfiles-8.1-27.fc32.noarch", + "rpm-4.15.1-2.fc32.1.aarch64", + "rpm-build-libs-4.15.1-2.fc32.1.aarch64", + "rpm-libs-4.15.1-2.fc32.1.aarch64", + "rpm-plugin-selinux-4.15.1-2.fc32.1.aarch64", + "rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.aarch64", + "rpm-sign-libs-4.15.1-2.fc32.1.aarch64", + "rsync-3.1.3-11.fc32.aarch64", + "sed-4.5-5.fc32.aarch64", + "selinux-policy-3.14.5-32.fc32.noarch", + "selinux-policy-targeted-3.14.5-32.fc32.noarch", + "setup-2.13.6-2.fc32.noarch", + "shadow-utils-4.8.1-2.fc32.aarch64", + "shared-mime-info-1.15-3.fc32.aarch64", + "shim-aa64-15-8.aarch64", + "sqlite-libs-3.31.1-1.fc32.aarch64", + "sssd-client-2.2.3-13.fc32.aarch64", + "sssd-common-2.2.3-13.fc32.aarch64", + "sssd-kcm-2.2.3-13.fc32.aarch64", + "sssd-nfs-idmap-2.2.3-13.fc32.aarch64", + "sudo-1.9.0-0.1.b4.fc32.aarch64", + "systemd-245.4-1.fc32.aarch64", + "systemd-libs-245.4-1.fc32.aarch64", + "systemd-pam-245.4-1.fc32.aarch64", + "systemd-rpm-macros-245.4-1.fc32.noarch", + "systemd-udev-245.4-1.fc32.aarch64", + "tar-1.32-4.fc32.aarch64", + "trousers-0.3.13-13.fc31.aarch64", + "trousers-lib-0.3.13-13.fc31.aarch64", + "tss2-1331-4.fc32.aarch64", + "tzdata-2019c-3.fc32.noarch", + "unbound-libs-1.9.6-2.fc32.aarch64", + "util-linux-2.35.1-7.fc32.aarch64", + "vim-minimal-8.2.525-1.fc32.aarch64", + "which-2.21-19.fc32.aarch64", + "whois-nls-5.5.6-1.fc32.noarch", + "xfsprogs-5.4.0-3.fc32.aarch64", + "xkeyboard-config-2.29-1.fc32.noarch", + "xz-5.2.5-1.fc32.aarch64", + "xz-libs-5.2.5-1.fc32.aarch64", + "yum-4.2.19-1.fc32.noarch", + "zchunk-libs-1.1.5-2.fc32.aarch64", + "zlib-1.2.11-21.fc32.aarch64" + ], + "partition-table": "gpt", + "partition-table-id": "8DFDFF87-C96E-EA48-A3A6-9408F1F6B1EF", + "partitions": [ + { + "bootable": false, + "fstype": "vfat", + "label": "EFI\\ System", + "partuuid": "02C1E068-1D2F-4DA3-91FD-8DD76A955C9D", + "size": 498073600, + "start": 1048576, + "type": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B", + "uuid": "46BB-8120" + }, + { + "bootable": false, + "fstype": "ext4", + "label": null, + "partuuid": "8D760010-FAAE-46D1-9E5B-4A2EAC5030CD", + "size": 1647296000, + "start": 500170752, + "type": "0FC63DAF-8483-4772-8E79-3D69D8477DE4", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:995:992::/var/lib/chrony:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "polkitd:x:996:993:User for polkitd:/:/sbin/nologin", + "redhat:x:1000:1000::/home/redhat:/bin/bash", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:998:995:systemd Core Dumper:/:/sbin/nologin", + "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "systemd-timesync:x:997:994:systemd Time Synchronization:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:999:999:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/boot/System.map-5.6.6-300.fc32.aarch64": ".M.......", + "/boot/efi/EFI": ".M.......", + "/boot/efi/EFI/fedora/grubaa64.efi": ".......T.", + "/boot/initramfs-5.6.6-300.fc32.aarch64.img": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/lib/modules/5.6.6-300.fc32.aarch64/modules.builtin.alias.bin": ".......T.", + "/proc": ".M.......", + "/sys": ".M.......", + "/var/log/btmp": ".M.......", + "/var/log/journal": ".M....G..", + "/var/log/lastlog": ".M....G.." + }, + "missing": [] + }, + "services-disabled": [ + "arp-ethers.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "console-getty.service", + "console-login-helper-messages-issuegen.service", + "console-login-helper-messages-motdgen.service", + "debug-shell.service", + "exit.target", + "halt.target", + "kexec.target", + "loadmodules.service", + "man-db-restart-cache-update.service", + "nis-domainname.service", + "poweroff.target", + "proc-sys-fs-binfmt_misc.mount", + "rdisc.service", + "remote-cryptsetup.target", + "runlevel0.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-boot-check-no-failures.service", + "systemd-network-generator.service", + "systemd-networkd-wait-online.service", + "systemd-networkd.service", + "systemd-networkd.socket", + "systemd-pstore.service", + "systemd-resolved.service", + "systemd-time-wait-sync.service", + "systemd-timesyncd.service", + "tcsd.service" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "cloud-init.service", + "ctrl-alt-del.target", + "dbus-broker.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dbus.service", + "dbus.socket", + "dbxtool.service", + "dnf-makecache.timer", + "fstrim.timer", + "getty@.service", + "import-state.service", + "reboot.target", + "remote-fs.target", + "runlevel6.target", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "unbound-anchor.timer" + ] + } +} \ No newline at end of file diff --git a/test/cases/fedora_32-x86_64-ami-boot.json b/test/cases/fedora_32-x86_64-ami-boot.json new file mode 100644 index 0000000..8032a7a --- /dev/null +++ b/test/cases/fedora_32-x86_64-ami-boot.json @@ -0,0 +1,9711 @@ +{ + "boot": { + "type": "aws" + }, + "compose-request": { + "distro": "fedora-32", + "arch": "x86_64", + "image-type": "ami", + "repositories": [ + { + "baseurl": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ], + "filename": "image.raw", + "blueprint": {} + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm" + }, + "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-six-1.14.0-2.fc32.noarch.rpm" + }, + "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.x86_64.rpm" + }, + "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/geolite2-country-20191217-2.fc32.noarch.rpm" + }, + "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtasn1-4.16.0-1.fc32.x86_64.rpm" + }, + "sha256:052ddc487a29acce1b5d44532f79f8ab594d0ac6565504071f4c7706d97fc552": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gobject-introspection-1.64.1-1.fc32.x86_64.rpm" + }, + "sha256:08c41c10745c172c34880e384cf5cff014a9627f4895e59fa482948b27e2ce9e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-nft-1.8.4-7.fc32.x86_64.rpm" + }, + "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm" + }, + "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm" + }, + "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/findutils-4.7.0-3.fc32.x86_64.rpm" + }, + "sha256:0b7d24759aac33303ff4b101c111dea03ff2529efc95661140e22f629cc1ab7a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nftables-0.9.3-2.fc32.x86_64.rpm" + }, + "sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-tc-5.5.0-1.fc32.x86_64.rpm" + }, + "sha256:0d51c1319ee78978e6ea5a49b815c2078b4ffd4d575e98c70e54ca01c3390eb8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-8.2p1-2.fc32.x86_64.rpm" + }, + "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.x86_64.rpm" + }, + "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-3.0-3.fc32.x86_64.rpm" + }, + "sha256:0fc0193d95d69c780b6feb1cb74759ca2d4804701b3de936dac8429cfbe0f2e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-nftables-0.9.3-2.fc32.x86_64.rpm" + }, + "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-7.fc32.x86_64.rpm" + }, + "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-2.04-12.fc32.x86_64.rpm" + }, + "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/filesystem-3.14-2.fc32.x86_64.rpm" + }, + "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cpio-2.13-4.fc32.x86_64.rpm" + }, + "sha256:129adf9147d5d120546ca8e0fb5f165761106d386d366fe82591e372754d0b4a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-decorator-4.4.0-6.fc32.noarch.rpm" + }, + "sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.31-2.fc32.x86_64.rpm" + }, + "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gpgme-1.13.1-6.fc32.x86_64.rpm" + }, + "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-utils-3.0-3.fc32.x86_64.rpm" + }, + "sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/passwd-0.80-8.fc32.x86_64.rpm" + }, + "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pigz-2.4-6.fc32.x86_64.rpm" + }, + "sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-policycoreutils-3.0-2.fc32.noarch.rpm" + }, + "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-whence-20200316-106.fc32.noarch.rpm" + }, + "sha256:16702883a79532a400d7304146cdb47b0599983b9fb48ab918ef9fa1ce0be394": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtalloc-2.3.1-2.fc32.x86_64.rpm" + }, + "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gmp-6.1.2-13.fc32.x86_64.rpm" + }, + "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libblkid-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/diffutils-3.7-4.fc32.x86_64.rpm" + }, + "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.x86_64.rpm" + }, + "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libksba-1.3.5-11.fc32.x86_64.rpm" + }, + "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-2.26-7.fc32.x86_64.rpm" + }, + "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-5.2.5-1.fc32.x86_64.rpm" + }, + "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmnl-1.0.4-11.fc32.x86_64.rpm" + }, + "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-245.4-1.fc32.x86_64.rpm" + }, + "sha256:1e1e9900e9d3a2b8eb6684060672526948df2cb9f751e7d72cb4fa5bffe71747": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cloud-init-19.4-2.fc32.noarch.rpm" + }, + "sha256:1e655f02895f6a87f9be5793065570b57e623cbf15516094df62e1f5626d4158": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyrsistent-0.15.7-2.fc32.x86_64.rpm" + }, + "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-32-1.noarch.rpm" + }, + "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libidn2-2.3.0-2.fc32.x86_64.rpm" + }, + "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-broker-22-1.fc32.x86_64.rpm" + }, + "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-repos-32-1.noarch.rpm" + }, + "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm" + }, + "sha256:24520e03276e0d850169efc9d83b12a9a01eee5d7202dadca12d2e0a8b7352ba": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.31-2.fc32.x86_64.rpm" + }, + "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsecret-0.20.2-2.fc32.x86_64.rpm" + }, + "sha256:25ae9056f75df4efff0d17d916e7c3889c421368613acec7f1c4119bd17eac13": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.24-1.fc32.x86_64.rpm" + }, + "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm" + }, + "sha256:265dee550073120d51e4c94d3d039e5efdee73a0ae1b1faf2b92de0dad1f58fa": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-common-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-plugins-core-4.0.14-1.fc32.noarch.rpm" + }, + "sha256:26cca773f1f258105f0f825a8e0faebcaa183655b5d91cd972afbe791b586478": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-44.fc32.x86_64.rpm" + }, + "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libss-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-5.38-2.fc32.x86_64.rpm" + }, + "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/unbound-libs-1.9.6-2.fc32.x86_64.rpm" + }, + "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsepol-3.0-3.fc32.x86_64.rpm" + }, + "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mpfr-4.0.2-3.fc32.x86_64.rpm" + }, + "sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/less-551-3.fc32.x86_64.rpm" + }, + "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tar-1.32-4.fc32.x86_64.rpm" + }, + "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm" + }, + "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-0.9.3-2.fc32.x86_64.rpm" + }, + "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-udev-245.4-1.fc32.x86_64.rpm" + }, + "sha256:342bdf0143d9145f8846e1b5c3401685e0d1274b66df39ac8cbfb78013313861": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-1.22.10-1.fc32.x86_64.rpm" + }, + "sha256:34411604a91c301dc8489285065c68f3a2f50910717097fedcaade6481c7469e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gobject-base-3.36.0-2.fc32.x86_64.rpm" + }, + "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-0.20.1-4.fc32.x86_64.rpm" + }, + "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.x86_64.rpm" + }, + "sha256:36778f8a4fa111c4f796bbea8fd52f7b9708de8f4351070faa30bc985db59885": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtdb-1.4.3-2.fc32.x86_64.rpm" + }, + "sha256:3882823d0eb18e0e8146584f4a32a4801961f6fdc09075607746317eba3265be": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-urllib3-1.25.7-3.fc32.noarch.rpm" + }, + "sha256:391faab010ca30610a14e0b3d54fbc0331be39bc831086fb877f8021fe4b171f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-oauthlib-3.0.2-5.fc32.noarch.rpm" + }, + "sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/chrony-3.5-8.fc32.x86_64.rpm" + }, + "sha256:3afab9512fd4d56a13c95b530c805ac8b2bc872572ec5bb435eccdd59fbbc8b6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnftnl-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64.rpm" + }, + "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm" + }, + "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/npth-1.6-4.fc32.x86_64.rpm" + }, + "sha256:3c3fb1ca768ecd6ae7905a09cd85b9f67e9f08c46d18779520fb4b29476865c7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-nfs-idmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm" + }, + "sha256:3ee53d0dba5bbfd3bbb2ae4b54e3ebdfa122e1cf120e17ff9c4c35674269e5ad": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-kcm-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.x86_64.rpm" + }, + "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm" + }, + "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-27-1.fc32.x86_64.rpm" + }, + "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-40.fc32.x86_64.rpm" + }, + "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcom_err-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-2.fc32.x86_64.rpm" + }, + "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.x86_64.rpm" + }, + "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/os-prober-1.77-4.fc32.x86_64.rpm" + }, + "sha256:46407b730b272223b8b64d12df0725af571b4a5c5ab89b9f41e12a49e07c6e6b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/c-ares-1.15.0-5.fc32.x86_64.rpm" + }, + "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-4.fc32.x86_64.rpm" + }, + "sha256:47538b1db9720be4699329a8da32d873187d0c6c22f45252614ac5b8a8312482": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/firewalld-filesystem-0.8.2-2.fc32.noarch.rpm" + }, + "sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qemu-img-4.2.0-7.fc32.x86_64.rpm" + }, + "sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-config-generic-050-26.git20200316.fc32.x86_64.rpm" + }, + "sha256:4860a733ca3f22089c6c283cbdcf53123a702d60b5bffdd4fe9d76826f91139a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-prettytable-0.7.2-22.fc32.noarch.rpm" + }, + "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dhcp-common-4.4.2-5.b1.fc32.noarch.rpm" + }, + "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcc-10.0.1-0.11.fc32.x86_64.rpm" + }, + "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm" + }, + "sha256:4b9da0cedada16eb80a2d66b86aa62c9b026501e13a3e947a5a03a06f41d9dbb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/parted-3.3-3.fc32.x86_64.rpm" + }, + "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pam-1.3.1-24.fc32.x86_64.rpm" + }, + "sha256:4c9d77d63ddc7dda0e018fc1c97d46025794e336e58d838a631fcc130dfa3b9b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jsonpatch-1.21-11.fc32.noarch.rpm" + }, + "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shadow-utils-4.8.1-2.fc32.x86_64.rpm" + }, + "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.x86_64.rpm" + }, + "sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libndp-1.7-5.fc32.x86_64.rpm" + }, + "sha256:4fca21cfdcbed052e3e9e1eff74c22fb8ffb1fbbeb63e87e2aa540e43a8c0d09": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/v/vim-minimal-8.2.525-1.fc32.x86_64.rpm" + }, + "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-unbound-1.9.6-2.fc32.x86_64.rpm" + }, + "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-common-8.32-3.fc32.1.x86_64.rpm" + }, + "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-9.fc32.x86_64.rpm" + }, + "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gzip-1.10-2.fc32.x86_64.rpm" + }, + "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsemanage-3.0-3.fc32.x86_64.rpm" + }, + "sha256:55bafcdf9c31b1456af3bf584bfe7ac745a03f4decd17197ea97b498d68b3b82": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libsemanage-3.0-3.fc32.x86_64.rpm" + }, + "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-libs-27-1.fc32.x86_64.rpm" + }, + "sha256:5719dd2fb399cadec08b4ac41c794239d2a2de2f012faeb970ab90a07bba0084": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-babel-2.8.0-2.fc32.noarch.rpm" + }, + "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-plugins-core-4.0.14-1.fc32.noarch.rpm" + }, + "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libassuan-2.5.3-3.fc32.x86_64.rpm" + }, + "sha256:599549d72d26b48c45156585a5698898c853e56469142e202d3749b781428465": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-20200316-106.fc32.noarch.rpm" + }, + "sha256:5cd4b781742b64dfff3cb3840ed5bb76f6946fb63f4ab742a51c3505747271a1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/plymouth-0.9.4-14.20200325gite31c81f.fc32.x86_64.rpm" + }, + "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm" + }, + "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-3.fc32.x86_64.rpm" + }, + "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:60589342d58922ba061ac8df7d753a7e7e75162c97ab086739e9d33fbf289091": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmaxminddb-1.3.2-2.fc32.x86_64.rpm" + }, + "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm" + }, + "sha256:61c51596cc97f35177efe8dc5e2ca52d8fd528570f33c184497f419259b73c90": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-idna-2.8-6.fc32.noarch.rpm" + }, + "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.x86_64.rpm" + }, + "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcroco-0.6.13-3.fc32.x86_64.rpm" + }, + "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mkpasswd-5.5.6-1.fc32.x86_64.rpm" + }, + "sha256:645f82cf62da25742cab5e8ffd1f764301b84ab19710d9f3fb3aff1cb57ffdc6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jinja2-2.11.1-1.fc32.noarch.rpm" + }, + "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libattr-2.4.48-8.fc32.x86_64.rpm" + }, + "sha256:6615aae3def0c49910e43e2d69f7ae8852694953dceb4b6235b5cf4099296d70": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jsonpointer-1.10-19.fc32.noarch.rpm" + }, + "sha256:66bb5b2e99d2c74b82943fe61fe9b9a3674350b0242f69a6854ec9718dcf5e07": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-10.34-9.fc32.x86_64.rpm" + }, + "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm" + }, + "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-5.3.28-40.fc32.x86_64.rpm" + }, + "sha256:6890a9545194ad6cf1b0c58e5273132171a9ced9cb665a1442aa62b6b6d3d2ea": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jsonschema-3.2.0-2.fc32.noarch.rpm" + }, + "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-font-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:695ef8ae55ed6a165a3633b3c0d75b320879246386e6df4539be9286f5176cc5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_autofs-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:699c1a3ff311bbaa2380c085fb4f516aa08be474bed02bcd1569d0bbf5b22d07": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-client-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.x86_64.rpm" + }, + "sha256:6a3282927f525629bc0aaf4090e108d33b0709d3d5b35bc442000c2837e7b9b4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iputils-20190515-5.fc32.x86_64.rpm" + }, + "sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dbus-1.2.16-1.fc32.x86_64.rpm" + }, + "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-10.fc32.x86_64.rpm" + }, + "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/curl-7.69.1-1.fc32.x86_64.rpm" + }, + "sha256:6f5f53b66f7c3bf6958f6f163788583265ff0360188620c3b0f7ddedeac3d1f4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setools-4.3.0-1.fc32.x86_64.rpm" + }, + "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tss2-1331-4.fc32.x86_64.rpm" + }, + "sha256:6fc1181ed798617668f195579acfcf8fb212513a776f376eecfb3d086c66b2d9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libref_array-0.1.5-44.fc32.x86_64.rpm" + }, + "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm" + }, + "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glib2-2.64.1-1.fc32.x86_64.rpm" + }, + "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-8.32-3.fc32.1.x86_64.rpm" + }, + "sha256:703fb5ca1651bb72d8ab58576ce3d78c9479cbb2e78ff8666ae3a3d1cd9bb0da": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/checkpolicy-3.0-3.fc32.x86_64.rpm" + }, + "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/acl-2.2.53-5.fc32.x86_64.rpm" + }, + "sha256:7124f9fedc862e3bab80f05b804b6c9580603ce3155727e888646d4d4f5ddc50": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-cffi-1.14.0-1.fc32.x86_64.rpm" + }, + "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm" + }, + "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libusbx-1.0.23-1.fc32.x86_64.rpm" + }, + "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm" + }, + "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-pam-245.4-1.fc32.x86_64.rpm" + }, + "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grep-3.3-4.fc32.x86_64.rpm" + }, + "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-libs-245.4-1.fc32.x86_64.rpm" + }, + "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bash-5.0.11-2.fc32.x86_64.rpm" + }, + "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libevent-2.1.8-8.fc32.x86_64.rpm" + }, + "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-4.4.16-1.fc32.x86_64.rpm" + }, + "sha256:7c21c21c3e3dbace06bee03fe4835ae6cb1e3ef86750ba2853f39d40dead2309": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipset-7.6-1.fc32.x86_64.rpm" + }, + "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libargon2-20171227-4.fc32.x86_64.rpm" + }, + "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm" + }, + "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pinentry-1.1.0-7.fc32.x86_64.rpm" + }, + "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcurl-7.69.1-1.fc32.x86_64.rpm" + }, + "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.x86_64.rpm" + }, + "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-2.04-12.fc32.x86_64.rpm" + }, + "sha256:808e7209893298d11ac27f148c1b3d1a2b28e303e7930b43659a08dc0f660ac4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/groff-base-1.22.3-21.fc32.x86_64.rpm" + }, + "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:81b6181b947d50e0a1ea681298417e552421d6714900d07a34dc25899e5c9f60": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-configobj-5.0.6-20.fc32.noarch.rpm" + }, + "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/geolite2-city-20191217-2.fc32.noarch.rpm" + }, + "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/which-2.21-19.fc32.x86_64.rpm" + }, + "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuuid-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.x86_64.rpm" + }, + "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-libs-5.2.5-1.fc32.x86_64.rpm" + }, + "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-2.9.6-22.fc32.x86_64.rpm" + }, + "sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-5.5.0-1.fc32.x86_64.rpm" + }, + "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libffi-3.1-24.fc32.x86_64.rpm" + }, + "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fonts-filesystem-2.0.3-1.fc32.noarch.rpm" + }, + "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.x86_64.rpm" + }, + "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libarchive-3.4.2-1.fc32.x86_64.rpm" + }, + "sha256:89c972ec7d2ab305c91c23bc248562c76f0ae645a9ed9f94d312e2f57c4d38fe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-5.6.6-300.fc32.x86_64.rpm" + }, + "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/popt-1.16-19.fc32.x86_64.rpm" + }, + "sha256:8b148415fb6a583ef131d0ddff44f3209c30d0299fde7b20cd3ea385590927c1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-clients-8.2p1-2.fc32.x86_64.rpm" + }, + "sha256:8c047278ce11e7ba7169a9c9537c3c6544f52c7eee8754179acd839ed59c028f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dhcp-client-4.4.2-5.b1.fc32.x86_64.rpm" + }, + "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-3.0-2.fc32.x86_64.rpm" + }, + "sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnl3-3.5.0-2.fc32.x86_64.rpm" + }, + "sha256:8ee8c4bbf024b998ffb77a6b4194a2306ac21c5a6fcf70c8c81a0fbf38f7c7fc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-firewall-0.8.2-2.fc32.noarch.rpm" + }, + "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/expat-2.2.8-2.fc32.x86_64.rpm" + }, + "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:907393755387a351806ec2afff376e7491f177116caadd12f07d0fcbed796750": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-8.fc32.x86_64.rpm" + }, + "sha256:924367aa63693da4660dcb806fbf52b3bcb7c4d12b40c4b4ba6329079936d073": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/net-tools-2.0-0.56.20160912git.fc32.x86_64.rpm" + }, + "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm" + }, + "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre-8.44-1.fc32.x86_64.rpm" + }, + "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-5.fc32.noarch.rpm" + }, + "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsigsegv-2.11-10.fc32.x86_64.rpm" + }, + "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfdisk-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libzstd-1.4.4-2.fc32.x86_64.rpm" + }, + "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.x86_64.rpm" + }, + "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm" + }, + "sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/jansson-2.12-5.fc32.x86_64.rpm" + }, + "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.x86_64.rpm" + }, + "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-050-26.git20200316.fc32.x86_64.rpm" + }, + "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/util-linux-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libs-0.179-1.fc32.x86_64.rpm" + }, + "sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libedit-3.1-32.20191231cvs.fc32.x86_64.rpm" + }, + "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm" + }, + "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgpg-error-1.36-3.fc32.x86_64.rpm" + }, + "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libyaml-0.2.2-3.fc32.x86_64.rpm" + }, + "sha256:9d4691918d7add910e8c03d61cccda0316b62d77b30ac2e502cf2e55289d1823": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcollection-0.7.0-44.fc32.x86_64.rpm" + }, + "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnutls-3.6.13-1.fc32.x86_64.rpm" + }, + "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-6.fc32.x86_64.rpm" + }, + "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpwquality-1.4.2-2.fc32.x86_64.rpm" + }, + "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-2.2.0-1.fc32.x86_64.rpm" + }, + "sha256:a0b87b2dc3c5f536e94d6a4f3563a621dfbc067a62c3d1fe69bdb70c3cecec57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pycparser-2.19-2.fc32.noarch.rpm" + }, + "sha256:a107b3d3790a5bcfdc28f6f4718969039b103a681a2647f3cbcb82cf92e97acb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyserial-3.4-7.fc32.noarch.rpm" + }, + "sha256:a1613e90865db93fb578b8ee1a4ee40bd396c6c9f2fb2a14757acacecb9f23e8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-core-5.6.6-300.fc32.x86_64.rpm" + }, + "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-common-32-1.noarch.rpm" + }, + "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shared-mime-info-1.15-3.fc32.x86_64.rpm" + }, + "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm" + }, + "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm" + }, + "sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libaio-0.3.111-7.fc32.x86_64.rpm" + }, + "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm" + }, + "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxml2-2.9.10-3.fc32.x86_64.rpm" + }, + "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnghttp2-1.40.0-2.fc32.x86_64.rpm" + }, + "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/librepo-1.11.1-4.fc32.x86_64.rpm" + }, + "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbrotli-1.0.7-10.fc32.x86_64.rpm" + }, + "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.x86_64.rpm" + }, + "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openldap-2.4.47-4.fc32.x86_64.rpm" + }, + "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.x86_64.rpm" + }, + "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm" + }, + "sha256:af66820023c984d8b981ecac715d0c2daec1f89dcb69bed76ddf58b0ee80c1b1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm" + }, + "sha256:b1111e77a5fdbacaa04acc90d3844706158bc5892173862928705620b8910adb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm" + }, + "sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcbor-0.5.0-7.fc32.x86_64.rpm" + }, + "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/y/yum-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-6.1-15.20191109.fc32.x86_64.rpm" + }, + "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpcap-1.9.1-3.fc32.x86_64.rpm" + }, + "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-4.fc32.x86_64.rpm" + }, + "sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuser-0.62-24.fc32.x86_64.rpm" + }, + "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-ng-0.7.10-2.fc32.x86_64.rpm" + }, + "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-5.fc32.x86_64.rpm" + }, + "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-3.8.2-2.fc32.x86_64.rpm" + }, + "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm" + }, + "sha256:b8ecd7fa0e7e072828e374dfb0d61bb8eecca7c190f3661050cee5e3fc8854b4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/firewalld-0.8.2-2.fc32.noarch.rpm" + }, + "sha256:b98687828b1d222ea73ebb8457450913dac58dd0be2e430a93bb7e98ba816505": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-modules-5.6.6-300.fc32.x86_64.rpm" + }, + "sha256:bb154a90c968150172036d86f0c9fc2a24b5799718bc4d835cb10d0758890c67": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfsidmap-2.4.3-0.fc32.x86_64.rpm" + }, + "sha256:bb8942d19e594c0f4ca181bd58796bd5d3cb681c3f17cd2ec2654c3afe28e39a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-cryptography-2.8-3.fc32.x86_64.rpm" + }, + "sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/initscripts-10.02-3.fc32.x86_64.rpm" + }, + "sha256:bcb07748c8688c788ec69c3a33c0abd1bb3a496b9aa09b5729265670bc7ba0eb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-attrs-19.3.0-2.fc32.noarch.rpm" + }, + "sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/psmisc-23.3-3.fc32.x86_64.rpm" + }, + "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsolv-0.7.11-2.fc32.x86_64.rpm" + }, + "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.x86_64.rpm" + }, + "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nettle-3.5.1-5.fc32.x86_64.rpm" + }, + "sha256:c05d01195aa4ca0f4a471574cc7ece8a0f4daf437935d845cd0745e2512cb9c9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-markupsafe-1.1.1-5.fc32.x86_64.rpm" + }, + "sha256:c0a0c6f3e30c20815496be8de00f9596737e2693feb85f7484f200ffa9174530": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpipeline-1.5.2-2.fc32.x86_64.rpm" + }, + "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zlib-1.2.11-21.fc32.x86_64.rpm" + }, + "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-1.02.171-1.fc32.x86_64.rpm" + }, + "sha256:c13c7da4b097499576861cb12fdd02e520af69b5f23d615b3968c54f40f8fd47": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyyaml-5.3.1-1.fc32.x86_64.rpm" + }, + "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.x86_64.rpm" + }, + "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.x86_64.rpm" + }, + "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.04-12.fc32.noarch.rpm" + }, + "sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dosfstools-4.1-10.fc32.x86_64.rpm" + }, + "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/alternatives-1.11-6.fc32.x86_64.rpm" + }, + "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:c93df175a0a4989aaaeb170406d8ff13a2cd93a5fc52ad33468245fea2044a86": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pytz-2019.3-2.fc32.noarch.rpm" + }, + "sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-26.fc32.x86_64.rpm" + }, + "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rootfiles-8.1-27.fc32.noarch.rpm" + }, + "sha256:ca540fb7088948fdfe6e6b52a5e2b6a74d2d17136857da9f3f4a1ee29c8eb74b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdhash-0.5.0-44.fc32.x86_64.rpm" + }, + "sha256:ca80c458fab5bdde0276702f06217d1219085428560af6039aa1c5cf1e58ff3b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/man-db-2.9.0-2.fc32.x86_64.rpm" + }, + "sha256:cb0c64cc81e0b384bbc9d27ffcb2a655b13c91a799aad8972264aed1767926a3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-slip-dbus-0.6.4-19.fc32.noarch.rpm" + }, + "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.16-1.fc32.x86_64.rpm" + }, + "sha256:cbdc61d713e4cbe52b2bece117912da0f1e3782cb3b33caa068e96c854c990be": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grubby-8.40-40.fc32.x86_64.rpm" + }, + "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-2.2.19-1.fc32.x86_64.rpm" + }, + "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-4.fc32.x86_64.rpm" + }, + "sha256:cd16f6ef433d7dc6860b19f3d77b666a03d35361aba78ee09d772575c2f69cc0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libldb-2.1.1-1.fc32.x86_64.rpm" + }, + "sha256:ce1a80b0ba6f09a7e5a188436088dd31d10c5f7b43dbe9c1788f705127c8e6b2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-44.fc32.x86_64.rpm" + }, + "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpsl-0.21.0-4.fc32.x86_64.rpm" + }, + "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm" + }, + "sha256:d0bc781a80be1d1fe204ec6b26255240261d55f6e24a28343572f2221a00533e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jwt-1.7.1-7.fc32.noarch.rpm" + }, + "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gawk-5.0.1-7.fc32.x86_64.rpm" + }, + "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.x86_64.rpm" + }, + "sha256:d1e244b8b5ce7404846e97d96c762c8c18ff6447301f6fc63f50e615029aa7cd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-server-8.2p1-2.fc32.x86_64.rpm" + }, + "sha256:d2abba1a0523bd9df5073900593ab13ec2ed2e391440be4d883314fa154370f8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-slip-0.6.4-19.fc32.noarch.rpm" + }, + "sha256:d36f08a44d6a3bc95f995c858ecb5e0d7fb22a8236008267024dd6a0ff66cc85": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/plymouth-scripts-0.9.4-14.20200325gite31c81f.fc32.x86_64.rpm" + }, + "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/json-c-0.13.1-9.fc32.x86_64.rpm" + }, + "sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-libs-0.116-7.fc32.x86_64.rpm" + }, + "sha256:d611f0c4252c4c4b893850807748e62cf4d17d72d544ef2744091df3206d8178": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-requests-2.22.0-8.fc32.noarch.rpm" + }, + "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgomp-10.0.1-0.11.fc32.x86_64.rpm" + }, + "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-1.1.1d-7.fc32.x86_64.rpm" + }, + "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-8.fc32.noarch.rpm" + }, + "sha256:dab54013f8316b766c40c71f9c0c2124c1f0c219b417d588b5ba1dccf7d63fd7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtevent-0.10.2-2.fc32.x86_64.rpm" + }, + "sha256:dc5a84049a6fc1f7c2a709ab3c2fa53de65e864f26085f5ca69864f5c2f6955d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/plymouth-core-libs-0.9.4-14.20200325gite31c81f.fc32.x86_64.rpm" + }, + "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-2.31-2.fc32.x86_64.rpm" + }, + "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsmartcols-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-0.23.20-1.fc32.x86_64.rpm" + }, + "sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/h/hostname-3.23-2.fc32.x86_64.rpm" + }, + "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libseccomp-2.4.2-3.fc32.x86_64.rpm" + }, + "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-libs-5.38-2.fc32.x86_64.rpm" + }, + "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/krb5-libs-1.18-1.fc32.x86_64.rpm" + }, + "sha256:e3175d0dba977f1cff702498ea68cc13134a0f525a869025e2ee3ede987d7867": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xfsprogs-5.4.0-3.fc32.x86_64.rpm" + }, + "sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sudo-1.9.0-0.1.b4.fc32.x86_64.rpm" + }, + "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmount-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:e7b9fd73c260cd22d3a36823530d4f623ea0e16844b900a5677c769afa76341c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-chardet-3.0.4-15.fc32.noarch.rpm" + }, + "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-common-2.31-2.fc32.x86_64.rpm" + }, + "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcomps-0.1.14-4.fc32.x86_64.rpm" + }, + "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.x86_64.rpm" + }, + "sha256:ebbace15f986288bba7681f44a111b14bcc7cae00b7a1faadaa838bd51897357": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfido2-1.3.1-1.fc32.x86_64.rpm" + }, + "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm" + }, + "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libs-3.8.2-2.fc32.x86_64.rpm" + }, + "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.x86_64.rpm" + }, + "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-1.12.16-4.fc32.x86_64.rpm" + }, + "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libverto-0.3.0-9.fc32.x86_64.rpm" + }, + "sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm" + }, + "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.x86_64.rpm" + }, + "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/readline-8.0-4.fc32.x86_64.rpm" + }, + "sha256:f2715fc8a04d33716f40f5b34466e082140df7ff3b7b972c29655d4dfc6e3a72": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-8.fc32.x86_64.rpm" + }, + "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-7.fc32.x86_64.rpm" + }, + "sha256:f391fe0e21e51e7c864f8bce1b5825419f4096023b5b90b3976bbd69d6a4d720": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_certmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libelf-0.179-1.fc32.x86_64.rpm" + }, + "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-libs-1.8.4-7.fc32.x86_64.rpm" + }, + "sha256:f60fc561675e41ffa2c48b229960291e2438441d5ed758c1f28cb06b5d4e4ea9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipset-libs-7.6-1.fc32.x86_64.rpm" + }, + "sha256:f6203a41ed91197bb770a38a101d977f0f56de86ccc5a71cee9c0e198f26bcbc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-ply-3.11-7.fc32.noarch.rpm" + }, + "sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libselinux-3.0-3.fc32.x86_64.rpm" + }, + "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libacl-2.2.53-5.fc32.x86_64.rpm" + }, + "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmodulemd-2.9.1-1.fc32.x86_64.rpm" + }, + "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libutempter-1.1.6-18.fc32.x86_64.rpm" + }, + "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdnf-0.45.0-3.fc32.x86_64.rpm" + }, + "sha256:fa791a4328b4c41b7190d862de921605f266a64abee03b2ea2e8d2b644be307f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pysocks-1.7.1-4.fc32.noarch.rpm" + }, + "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libunistring-0.9.10-7.fc32.x86_64.rpm" + }, + "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kpartx-0.8.2-3.fc32.x86_64.rpm" + }, + "sha256:fd2a2dd726d855f877296227fb351883d647df28b1b0085f525d87df622d49e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.22.10-1.fc32.x86_64.rpm" + }, + "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-4.fc32.x86_64.rpm" + }, + "sha256:fe70d5a1c818367be3a5a7e60cbb379f020f97f63ba3c13ed09740f45a43154a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipcalc-0.4.0-2.fc32.x86_64.rpm" + }, + "sha256:fed6244fce0c0b48933d622dfbb00cf73931b2f746b27675a025a33b591d9820": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libini_config-1.3.1-44.fc32.x86_64.rpm" + }, + "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.x86_64.rpm" + }, + "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sed-4.5-5.fc32.x86_64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "checksum": "sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec", + "check_gpg": true + }, + { + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "checksum": "sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe", + "check_gpg": true + }, + { + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "checksum": "sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4", + "check_gpg": true + }, + { + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "checksum": "sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9", + "check_gpg": true + }, + { + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "checksum": "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b", + "check_gpg": true + }, + { + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts", + "labels": { + "/usr/bin/cp": "system_u:object_r:install_exec_t:s0" + } + } + } + ] + }, + "runner": "org.osbuild.fedora32" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:342bdf0143d9145f8846e1b5c3401685e0d1274b66df39ac8cbfb78013313861", + "check_gpg": true + }, + { + "checksum": "sha256:fd2a2dd726d855f877296227fb351883d647df28b1b0085f525d87df622d49e4", + "check_gpg": true + }, + { + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "checksum": "sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d", + "check_gpg": true + }, + { + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "checksum": "sha256:46407b730b272223b8b64d12df0725af571b4a5c5ab89b9f41e12a49e07c6e6b", + "check_gpg": true + }, + { + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "checksum": "sha256:703fb5ca1651bb72d8ab58576ce3d78c9479cbb2e78ff8666ae3a3d1cd9bb0da", + "check_gpg": true + }, + { + "checksum": "sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57", + "check_gpg": true + }, + { + "checksum": "sha256:1e1e9900e9d3a2b8eb6684060672526948df2cb9f751e7d72cb4fa5bffe71747", + "check_gpg": true + }, + { + "checksum": "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309", + "check_gpg": true + }, + { + "checksum": "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56", + "check_gpg": true + }, + { + "checksum": "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280", + "check_gpg": true + }, + { + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "checksum": "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315", + "check_gpg": true + }, + { + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "checksum": "sha256:8c047278ce11e7ba7169a9c9537c3c6544f52c7eee8754179acd839ed59c028f", + "check_gpg": true + }, + { + "checksum": "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013", + "check_gpg": true + }, + { + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "checksum": "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d", + "check_gpg": true + }, + { + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "checksum": "sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73", + "check_gpg": true + }, + { + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "checksum": "sha256:907393755387a351806ec2afff376e7491f177116caadd12f07d0fcbed796750", + "check_gpg": true + }, + { + "checksum": "sha256:f2715fc8a04d33716f40f5b34466e082140df7ff3b7b972c29655d4dfc6e3a72", + "check_gpg": true + }, + { + "checksum": "sha256:b8ecd7fa0e7e072828e374dfb0d61bb8eecca7c190f3661050cee5e3fc8854b4", + "check_gpg": true + }, + { + "checksum": "sha256:47538b1db9720be4699329a8da32d873187d0c6c22f45252614ac5b8a8312482", + "check_gpg": true + }, + { + "checksum": "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012", + "check_gpg": true + }, + { + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "checksum": "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3", + "check_gpg": true + }, + { + "checksum": "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f", + "check_gpg": true + }, + { + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "checksum": "sha256:24520e03276e0d850169efc9d83b12a9a01eee5d7202dadca12d2e0a8b7352ba", + "check_gpg": true + }, + { + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "checksum": "sha256:052ddc487a29acce1b5d44532f79f8ab594d0ac6565504071f4c7706d97fc552", + "check_gpg": true + }, + { + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "checksum": "sha256:808e7209893298d11ac27f148c1b3d1a2b28e303e7930b43659a08dc0f660ac4", + "check_gpg": true + }, + { + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "checksum": "sha256:cbdc61d713e4cbe52b2bece117912da0f1e3782cb3b33caa068e96c854c990be", + "check_gpg": true + }, + { + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "checksum": "sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823", + "check_gpg": true + }, + { + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "checksum": "sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339", + "check_gpg": true + }, + { + "checksum": "sha256:fe70d5a1c818367be3a5a7e60cbb379f020f97f63ba3c13ed09740f45a43154a", + "check_gpg": true + }, + { + "checksum": "sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684", + "check_gpg": true + }, + { + "checksum": "sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae", + "check_gpg": true + }, + { + "checksum": "sha256:7c21c21c3e3dbace06bee03fe4835ae6cb1e3ef86750ba2853f39d40dead2309", + "check_gpg": true + }, + { + "checksum": "sha256:f60fc561675e41ffa2c48b229960291e2438441d5ed758c1f28cb06b5d4e4ea9", + "check_gpg": true + }, + { + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "checksum": "sha256:08c41c10745c172c34880e384cf5cff014a9627f4895e59fa482948b27e2ce9e", + "check_gpg": true + }, + { + "checksum": "sha256:6a3282927f525629bc0aaf4090e108d33b0709d3d5b35bc442000c2837e7b9b4", + "check_gpg": true + }, + { + "checksum": "sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8", + "check_gpg": true + }, + { + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "checksum": "sha256:89c972ec7d2ab305c91c23bc248562c76f0ae645a9ed9f94d312e2f57c4d38fe", + "check_gpg": true + }, + { + "checksum": "sha256:a1613e90865db93fb578b8ee1a4ee40bd396c6c9f2fb2a14757acacecb9f23e8", + "check_gpg": true + }, + { + "checksum": "sha256:b98687828b1d222ea73ebb8457450913dac58dd0be2e430a93bb7e98ba816505", + "check_gpg": true + }, + { + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "checksum": "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0", + "check_gpg": true + }, + { + "checksum": "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389", + "check_gpg": true + }, + { + "checksum": "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca", + "check_gpg": true + }, + { + "checksum": "sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884", + "check_gpg": true + }, + { + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "checksum": "sha256:26cca773f1f258105f0f825a8e0faebcaa183655b5d91cd972afbe791b586478", + "check_gpg": true + }, + { + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "checksum": "sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5", + "check_gpg": true + }, + { + "checksum": "sha256:9d4691918d7add910e8c03d61cccda0316b62d77b30ac2e502cf2e55289d1823", + "check_gpg": true + }, + { + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "checksum": "sha256:ca540fb7088948fdfe6e6b52a5e2b6a74d2d17136857da9f3f4a1ee29c8eb74b", + "check_gpg": true + }, + { + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "checksum": "sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09", + "check_gpg": true + }, + { + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "checksum": "sha256:ebbace15f986288bba7681f44a111b14bcc7cae00b7a1faadaa838bd51897357", + "check_gpg": true + }, + { + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "checksum": "sha256:fed6244fce0c0b48933d622dfbb00cf73931b2f746b27675a025a33b591d9820", + "check_gpg": true + }, + { + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "checksum": "sha256:cd16f6ef433d7dc6860b19f3d77b666a03d35361aba78ee09d772575c2f69cc0", + "check_gpg": true + }, + { + "checksum": "sha256:60589342d58922ba061ac8df7d753a7e7e75162c97ab086739e9d33fbf289091", + "check_gpg": true + }, + { + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "checksum": "sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f", + "check_gpg": true + }, + { + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "checksum": "sha256:bb154a90c968150172036d86f0c9fc2a24b5799718bc4d835cb10d0758890c67", + "check_gpg": true + }, + { + "checksum": "sha256:3afab9512fd4d56a13c95b530c805ac8b2bc872572ec5bb435eccdd59fbbc8b6", + "check_gpg": true + }, + { + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "checksum": "sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1", + "check_gpg": true + }, + { + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "checksum": "sha256:ce1a80b0ba6f09a7e5a188436088dd31d10c5f7b43dbe9c1788f705127c8e6b2", + "check_gpg": true + }, + { + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "checksum": "sha256:c0a0c6f3e30c20815496be8de00f9596737e2693feb85f7484f200ffa9174530", + "check_gpg": true + }, + { + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1181ed798617668f195579acfcf8fb212513a776f376eecfb3d086c66b2d9", + "check_gpg": true + }, + { + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "checksum": "sha256:695ef8ae55ed6a165a3633b3c0d75b320879246386e6df4539be9286f5176cc5", + "check_gpg": true + }, + { + "checksum": "sha256:f391fe0e21e51e7c864f8bce1b5825419f4096023b5b90b3976bbd69d6a4d720", + "check_gpg": true + }, + { + "checksum": "sha256:599549d72d26b48c45156585a5698898c853e56469142e202d3749b781428465", + "check_gpg": true + }, + { + "checksum": "sha256:66bb5b2e99d2c74b82943fe61fe9b9a3674350b0242f69a6854ec9718dcf5e07", + "check_gpg": true + }, + { + "checksum": "sha256:af66820023c984d8b981ecac715d0c2daec1f89dcb69bed76ddf58b0ee80c1b1", + "check_gpg": true + }, + { + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "checksum": "sha256:16702883a79532a400d7304146cdb47b0599983b9fb48ab918ef9fa1ce0be394", + "check_gpg": true + }, + { + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "checksum": "sha256:36778f8a4fa111c4f796bbea8fd52f7b9708de8f4351070faa30bc985db59885", + "check_gpg": true + }, + { + "checksum": "sha256:dab54013f8316b766c40c71f9c0c2124c1f0c219b417d588b5ba1dccf7d63fd7", + "check_gpg": true + }, + { + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "checksum": "sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975", + "check_gpg": true + }, + { + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "checksum": "sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467", + "check_gpg": true + }, + { + "checksum": "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4", + "check_gpg": true + }, + { + "checksum": "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9", + "check_gpg": true + }, + { + "checksum": "sha256:25ae9056f75df4efff0d17d916e7c3889c421368613acec7f1c4119bd17eac13", + "check_gpg": true + }, + { + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "checksum": "sha256:ca80c458fab5bdde0276702f06217d1219085428560af6039aa1c5cf1e58ff3b", + "check_gpg": true + }, + { + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "checksum": "sha256:924367aa63693da4660dcb806fbf52b3bcb7c4d12b40c4b4ba6329079936d073", + "check_gpg": true + }, + { + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "checksum": "sha256:0b7d24759aac33303ff4b101c111dea03ff2529efc95661140e22f629cc1ab7a", + "check_gpg": true + }, + { + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "checksum": "sha256:0d51c1319ee78978e6ea5a49b815c2078b4ffd4d575e98c70e54ca01c3390eb8", + "check_gpg": true + }, + { + "checksum": "sha256:8b148415fb6a583ef131d0ddff44f3209c30d0299fde7b20cd3ea385590927c1", + "check_gpg": true + }, + { + "checksum": "sha256:d1e244b8b5ce7404846e97d96c762c8c18ff6447301f6fc63f50e615029aa7cd", + "check_gpg": true + }, + { + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "checksum": "sha256:4b9da0cedada16eb80a2d66b86aa62c9b026501e13a3e947a5a03a06f41d9dbb", + "check_gpg": true + }, + { + "checksum": "sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719", + "check_gpg": true + }, + { + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "checksum": "sha256:5cd4b781742b64dfff3cb3840ed5bb76f6946fb63f4ab742a51c3505747271a1", + "check_gpg": true + }, + { + "checksum": "sha256:dc5a84049a6fc1f7c2a709ab3c2fa53de65e864f26085f5ca69864f5c2f6955d", + "check_gpg": true + }, + { + "checksum": "sha256:d36f08a44d6a3bc95f995c858ecb5e0d7fb22a8236008267024dd6a0ff66cc85", + "check_gpg": true + }, + { + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "checksum": "sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386", + "check_gpg": true + }, + { + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "checksum": "sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444", + "check_gpg": true + }, + { + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "checksum": "sha256:bcb07748c8688c788ec69c3a33c0abd1bb3a496b9aa09b5729265670bc7ba0eb", + "check_gpg": true + }, + { + "checksum": "sha256:b1111e77a5fdbacaa04acc90d3844706158bc5892173862928705620b8910adb", + "check_gpg": true + }, + { + "checksum": "sha256:5719dd2fb399cadec08b4ac41c794239d2a2de2f012faeb970ab90a07bba0084", + "check_gpg": true + }, + { + "checksum": "sha256:7124f9fedc862e3bab80f05b804b6c9580603ce3155727e888646d4d4f5ddc50", + "check_gpg": true + }, + { + "checksum": "sha256:e7b9fd73c260cd22d3a36823530d4f623ea0e16844b900a5677c769afa76341c", + "check_gpg": true + }, + { + "checksum": "sha256:81b6181b947d50e0a1ea681298417e552421d6714900d07a34dc25899e5c9f60", + "check_gpg": true + }, + { + "checksum": "sha256:bb8942d19e594c0f4ca181bd58796bd5d3cb681c3f17cd2ec2654c3afe28e39a", + "check_gpg": true + }, + { + "checksum": "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862", + "check_gpg": true + }, + { + "checksum": "sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070", + "check_gpg": true + }, + { + "checksum": "sha256:129adf9147d5d120546ca8e0fb5f165761106d386d366fe82591e372754d0b4a", + "check_gpg": true + }, + { + "checksum": "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4", + "check_gpg": true + }, + { + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "checksum": "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576", + "check_gpg": true + }, + { + "checksum": "sha256:8ee8c4bbf024b998ffb77a6b4194a2306ac21c5a6fcf70c8c81a0fbf38f7c7fc", + "check_gpg": true + }, + { + "checksum": "sha256:34411604a91c301dc8489285065c68f3a2f50910717097fedcaade6481c7469e", + "check_gpg": true + }, + { + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "checksum": "sha256:61c51596cc97f35177efe8dc5e2ca52d8fd528570f33c184497f419259b73c90", + "check_gpg": true + }, + { + "checksum": "sha256:645f82cf62da25742cab5e8ffd1f764301b84ab19710d9f3fb3aff1cb57ffdc6", + "check_gpg": true + }, + { + "checksum": "sha256:4c9d77d63ddc7dda0e018fc1c97d46025794e336e58d838a631fcc130dfa3b9b", + "check_gpg": true + }, + { + "checksum": "sha256:6615aae3def0c49910e43e2d69f7ae8852694953dceb4b6235b5cf4099296d70", + "check_gpg": true + }, + { + "checksum": "sha256:6890a9545194ad6cf1b0c58e5273132171a9ced9cb665a1442aa62b6b6d3d2ea", + "check_gpg": true + }, + { + "checksum": "sha256:d0bc781a80be1d1fe204ec6b26255240261d55f6e24a28343572f2221a00533e", + "check_gpg": true + }, + { + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "checksum": "sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124", + "check_gpg": true + }, + { + "checksum": "sha256:55bafcdf9c31b1456af3bf584bfe7ac745a03f4decd17197ea97b498d68b3b82", + "check_gpg": true + }, + { + "checksum": "sha256:c05d01195aa4ca0f4a471574cc7ece8a0f4daf437935d845cd0745e2512cb9c9", + "check_gpg": true + }, + { + "checksum": "sha256:0fc0193d95d69c780b6feb1cb74759ca2d4804701b3de936dac8429cfbe0f2e9", + "check_gpg": true + }, + { + "checksum": "sha256:391faab010ca30610a14e0b3d54fbc0331be39bc831086fb877f8021fe4b171f", + "check_gpg": true + }, + { + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "checksum": "sha256:f6203a41ed91197bb770a38a101d977f0f56de86ccc5a71cee9c0e198f26bcbc", + "check_gpg": true + }, + { + "checksum": "sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2", + "check_gpg": true + }, + { + "checksum": "sha256:4860a733ca3f22089c6c283cbdcf53123a702d60b5bffdd4fe9d76826f91139a", + "check_gpg": true + }, + { + "checksum": "sha256:a0b87b2dc3c5f536e94d6a4f3563a621dfbc067a62c3d1fe69bdb70c3cecec57", + "check_gpg": true + }, + { + "checksum": "sha256:1e655f02895f6a87f9be5793065570b57e623cbf15516094df62e1f5626d4158", + "check_gpg": true + }, + { + "checksum": "sha256:a107b3d3790a5bcfdc28f6f4718969039b103a681a2647f3cbcb82cf92e97acb", + "check_gpg": true + }, + { + "checksum": "sha256:fa791a4328b4c41b7190d862de921605f266a64abee03b2ea2e8d2b644be307f", + "check_gpg": true + }, + { + "checksum": "sha256:c93df175a0a4989aaaeb170406d8ff13a2cd93a5fc52ad33468245fea2044a86", + "check_gpg": true + }, + { + "checksum": "sha256:c13c7da4b097499576861cb12fdd02e520af69b5f23d615b3968c54f40f8fd47", + "check_gpg": true + }, + { + "checksum": "sha256:d611f0c4252c4c4b893850807748e62cf4d17d72d544ef2744091df3206d8178", + "check_gpg": true + }, + { + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "checksum": "sha256:6f5f53b66f7c3bf6958f6f163788583265ff0360188620c3b0f7ddedeac3d1f4", + "check_gpg": true + }, + { + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "checksum": "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f", + "check_gpg": true + }, + { + "checksum": "sha256:d2abba1a0523bd9df5073900593ab13ec2ed2e391440be4d883314fa154370f8", + "check_gpg": true + }, + { + "checksum": "sha256:cb0c64cc81e0b384bbc9d27ffcb2a655b13c91a799aad8972264aed1767926a3", + "check_gpg": true + }, + { + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "checksum": "sha256:3882823d0eb18e0e8146584f4a32a4801961f6fdc09075607746317eba3265be", + "check_gpg": true + }, + { + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "checksum": "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58", + "check_gpg": true + }, + { + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "checksum": "sha256:699c1a3ff311bbaa2380c085fb4f516aa08be474bed02bcd1569d0bbf5b22d07", + "check_gpg": true + }, + { + "checksum": "sha256:265dee550073120d51e4c94d3d039e5efdee73a0ae1b1faf2b92de0dad1f58fa", + "check_gpg": true + }, + { + "checksum": "sha256:3ee53d0dba5bbfd3bbb2ae4b54e3ebdfa122e1cf120e17ff9c4c35674269e5ad", + "check_gpg": true + }, + { + "checksum": "sha256:3c3fb1ca768ecd6ae7905a09cd85b9f67e9f08c46d18779520fb4b29476865c7", + "check_gpg": true + }, + { + "checksum": "sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b", + "check_gpg": true + }, + { + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "checksum": "sha256:4fca21cfdcbed052e3e9e1eff74c22fb8ffb1fbbeb63e87e2aa540e43a8c0d09", + "check_gpg": true + }, + { + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "checksum": "sha256:e3175d0dba977f1cff702498ea68cc13134a0f525a869025e2ee3ede987d7867", + "check_gpg": true + }, + { + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "checksum": "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf", + "check_gpg": true + }, + { + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "vfs_type": "ext4", + "path": "/", + "options": "defaults", + "freq": 1, + "passno": 1 + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "kernel_opts": "ro no_timer_check console=ttyS0,115200n8 console=tty1 biosdevname=0 net.ifnames=0 console=ttyS0,115200", + "legacy": "i386-pc" + } + }, + { + "name": "org.osbuild.systemd", + "options": { + "enabled_services": [ + "cloud-init.service" + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "raw", + "filename": "image.raw", + "size": 6442450944, + "ptuuid": "0x14fc63d2", + "pttype": "mbr", + "partitions": [ + { + "start": 2048, + "bootable": true, + "filesystem": { + "type": "ext4", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/acl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/alternatives-1.11-6.fc32.x86_64.rpm", + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm", + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bash-5.0.11-2.fc32.x86_64.rpm", + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.x86_64.rpm", + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2020.2.40", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm", + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-common-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.13", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cpio-2.13-4.fc32.x86_64.rpm", + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.x86_64.rpm", + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/curl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.x86_64.rpm", + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "22", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-broker-22-1.fc32.x86_64.rpm", + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm", + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-5.fc32.x86_64.rpm", + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/diffutils-3.7-4.fc32.x86_64.rpm", + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dosfstools-4.1-10.fc32.x86_64.rpm", + "checksum": "sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-050-26.git20200316.fc32.x86_64.rpm", + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm", + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libelf-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libs-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/expat-2.2.8-2.fc32.x86_64.rpm", + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm", + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-32-1.noarch.rpm", + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-common-32-1.noarch.rpm", + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-repos-32-1.noarch.rpm", + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-libs-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.14", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/filesystem-3.14-2.fc32.x86_64.rpm", + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.7.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/findutils-4.7.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-9.fc32.x86_64.rpm", + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gawk-5.0.1-7.fc32.x86_64.rpm", + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.x86_64.rpm", + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.64.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glib2-2.64.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-common-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gmp-6.1.2-13.fc32.x86_64.rpm", + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.13", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnutls-3.6.13-1.fc32.x86_64.rpm", + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gpgme-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grep-3.3-4.fc32.x86_64.rpm", + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gzip-1.10-2.fc32.x86_64.rpm", + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.x86_64.rpm", + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-libs-1.8.4-7.fc32.x86_64.rpm", + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/json-c-0.13.1-9.fc32.x86_64.rpm", + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-2.2.0-1.fc32.x86_64.rpm", + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-27-1.fc32.x86_64.rpm", + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-libs-27-1.fc32.x86_64.rpm", + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kpartx-0.8.2-3.fc32.x86_64.rpm", + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/krb5-libs-1.18-1.fc32.x86_64.rpm", + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libacl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.111", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libaio-0.3.111-7.fc32.x86_64.rpm", + "checksum": "sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.2", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libarchive-3.4.2-1.fc32.x86_64.rpm", + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libargon2-20171227-4.fc32.x86_64.rpm", + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libassuan-2.5.3-3.fc32.x86_64.rpm", + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libattr-2.4.48-8.fc32.x86_64.rpm", + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libblkid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "name": "libbrotli", + "epoch": 0, + "version": "1.0.7", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbrotli-1.0.7-10.fc32.x86_64.rpm", + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-2.26-7.fc32.x86_64.rpm", + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-ng-0.7.10-2.fc32.x86_64.rpm", + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcom_err-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcroco-0.6.13-3.fc32.x86_64.rpm", + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcurl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libevent-2.1.8-8.fc32.x86_64.rpm", + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfdisk-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libffi-3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcc-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-3.fc32.x86_64.rpm", + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgomp-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgpg-error-1.36-3.fc32.x86_64.rpm", + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libidn2-2.3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libksba-1.3.5-11.fc32.x86_64.rpm", + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-10.fc32.x86_64.rpm", + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmnl-1.0.4-11.fc32.x86_64.rpm", + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmodulemd-2.9.1-1.fc32.x86_64.rpm", + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmount-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.x86_64.rpm", + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "17.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.x86_64.rpm", + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.40.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnghttp2-1.40.0-2.fc32.x86_64.rpm", + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "6.20180605git4a062cf.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64.rpm", + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpcap-1.9.1-3.fc32.x86_64.rpm", + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpsl-0.21.0-4.fc32.x86_64.rpm", + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpwquality-1.4.2-2.fc32.x86_64.rpm", + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.11.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/librepo-1.11.1-4.fc32.x86_64.rpm", + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.12.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm", + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libseccomp-2.4.2-3.fc32.x86_64.rpm", + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.20.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsecret-0.20.2-2.fc32.x86_64.rpm", + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-utils-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsemanage-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsepol-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsigsegv-2.11-10.fc32.x86_64.rpm", + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsmartcols-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsolv-0.7.11-2.fc32.x86_64.rpm", + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libss-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-0.9.3-2.fc32.x86_64.rpm", + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm", + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.16.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtasn1-4.16.0-1.fc32.x86_64.rpm", + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.2.5", + "release": "1.rc2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.x86_64.rpm", + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libunistring-0.9.10-7.fc32.x86_64.rpm", + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libusbx-1.0.23-1.fc32.x86_64.rpm", + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "18.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libutempter-1.1.6-18.fc32.x86_64.rpm", + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuuid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libverto-0.3.0-9.fc32.x86_64.rpm", + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.10.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.x86_64.rpm", + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.10", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxml2-2.9.10-3.fc32.x86_64.rpm", + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libyaml-0.2.2-3.fc32.x86_64.rpm", + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libzstd-1.4.4-2.fc32.x86_64.rpm", + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-7.fc32.x86_64.rpm", + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-2.fc32.x86_64.rpm", + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mkpasswd-5.5.6-1.fc32.x86_64.rpm", + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "4.0.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mpfr-4.0.2-3.fc32.x86_64.rpm", + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm", + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nettle-3.5.1-5.fc32.x86_64.rpm", + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/npth-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openldap-2.4.47-4.fc32.x86_64.rpm", + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.x86_64.rpm", + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/os-prober-1.77-4.fc32.x86_64.rpm", + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pam-1.3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.44", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre-8.44-1.fc32.x86_64.rpm", + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-10.34-9.fc32.x86_64.rpm", + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "name": "pcre2-syntax", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm", + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pigz-2.4-6.fc32.x86_64.rpm", + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pinentry-1.1.0-7.fc32.x86_64.rpm", + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/popt-1.16-19.fc32.x86_64.rpm", + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-7.fc32.x86_64.rpm", + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm", + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libs-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-unbound-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "name": "qemu-img", + "epoch": 2, + "version": "4.2.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qemu-img-4.2.0-7.fc32.x86_64.rpm", + "checksum": "sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.x86_64.rpm", + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/readline-8.0-4.fc32.x86_64.rpm", + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sed-4.5-5.fc32.x86_64.rpm", + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.6", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm", + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.8.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shadow-utils-4.8.1-2.fc32.x86_64.rpm", + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.15", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shared-mime-info-1.15-3.fc32.x86_64.rpm", + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.31.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-libs-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-pam-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm", + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-udev-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tar-1.32-4.fc32.x86_64.rpm", + "checksum": "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tss2-1331-4.fc32.x86_64.rpm", + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm", + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/unbound-libs-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/util-linux-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/which-2.21-19.fc32.x86_64.rpm", + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm", + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.29", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm", + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-libs-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "21.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zlib-1.2.11-21.fc32.x86_64.rpm", + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.22.10", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-1.22.10-1.fc32.x86_64.rpm", + "checksum": "sha256:342bdf0143d9145f8846e1b5c3401685e0d1274b66df39ac8cbfb78013313861", + "check_gpg": true + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.22.10", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.22.10-1.fc32.x86_64.rpm", + "checksum": "sha256:fd2a2dd726d855f877296227fb351883d647df28b1b0085f525d87df622d49e4", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/acl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/alternatives-1.11-6.fc32.x86_64.rpm", + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm", + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bash-5.0.11-2.fc32.x86_64.rpm", + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.x86_64.rpm", + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.15.0", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/c-ares-1.15.0-5.fc32.x86_64.rpm", + "checksum": "sha256:46407b730b272223b8b64d12df0725af571b4a5c5ab89b9f41e12a49e07c6e6b", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2020.2.40", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm", + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/checkpolicy-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:703fb5ca1651bb72d8ab58576ce3d78c9479cbb2e78ff8666ae3a3d1cd9bb0da", + "check_gpg": true + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/chrony-3.5-8.fc32.x86_64.rpm", + "checksum": "sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57", + "check_gpg": true + }, + { + "name": "cloud-init", + "epoch": 0, + "version": "19.4", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cloud-init-19.4-2.fc32.noarch.rpm", + "checksum": "sha256:1e1e9900e9d3a2b8eb6684060672526948df2cb9f751e7d72cb4fa5bffe71747", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-sans-mono-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-serif-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-common-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.13", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cpio-2.13-4.fc32.x86_64.rpm", + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.x86_64.rpm", + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/curl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.x86_64.rpm", + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "22", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-broker-22-1.fc32.x86_64.rpm", + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm", + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "name": "dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-5.fc32.x86_64.rpm", + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.4.2", + "release": "5.b1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dhcp-client-4.4.2-5.b1.fc32.x86_64.rpm", + "checksum": "sha256:8c047278ce11e7ba7169a9c9537c3c6544f52c7eee8754179acd839ed59c028f", + "check_gpg": true + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.4.2", + "release": "5.b1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dhcp-common-4.4.2-5.b1.fc32.noarch.rpm", + "checksum": "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/diffutils-3.7-4.fc32.x86_64.rpm", + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.14", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-plugins-core-4.0.14-1.fc32.noarch.rpm", + "checksum": "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-050-26.git20200316.fc32.x86_64.rpm", + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-config-generic-050-26.git20200316.fc32.x86_64.rpm", + "checksum": "sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm", + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libelf-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libs-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/expat-2.2.8-2.fc32.x86_64.rpm", + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm", + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-32-1.noarch.rpm", + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-common-32-1.noarch.rpm", + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-repos-32-1.noarch.rpm", + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-libs-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.14", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/filesystem-3.14-2.fc32.x86_64.rpm", + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.7.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/findutils-4.7.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-8.fc32.x86_64.rpm", + "checksum": "sha256:907393755387a351806ec2afff376e7491f177116caadd12f07d0fcbed796750", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-8.fc32.x86_64.rpm", + "checksum": "sha256:f2715fc8a04d33716f40f5b34466e082140df7ff3b7b972c29655d4dfc6e3a72", + "check_gpg": true + }, + { + "name": "firewalld", + "epoch": 0, + "version": "0.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/firewalld-0.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:b8ecd7fa0e7e072828e374dfb0d61bb8eecca7c190f3661050cee5e3fc8854b4", + "check_gpg": true + }, + { + "name": "firewalld-filesystem", + "epoch": 0, + "version": "0.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/firewalld-filesystem-0.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:47538b1db9720be4699329a8da32d873187d0c6c22f45252614ac5b8a8312482", + "check_gpg": true + }, + { + "name": "fonts-filesystem", + "epoch": 0, + "version": "2.0.3", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fonts-filesystem-2.0.3-1.fc32.noarch.rpm", + "checksum": "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-9.fc32.x86_64.rpm", + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gawk-5.0.1-7.fc32.x86_64.rpm", + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.x86_64.rpm", + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20191217", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/geolite2-city-20191217-2.fc32.noarch.rpm", + "checksum": "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3", + "check_gpg": true + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20191217", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/geolite2-country-20191217-2.fc32.noarch.rpm", + "checksum": "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.64.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glib2-2.64.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-common-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "name": "glibc-langpack-en", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:24520e03276e0d850169efc9d83b12a9a01eee5d7202dadca12d2e0a8b7352ba", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gmp-6.1.2-13.fc32.x86_64.rpm", + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.13", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnutls-3.6.13-1.fc32.x86_64.rpm", + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.64.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gobject-introspection-1.64.1-1.fc32.x86_64.rpm", + "checksum": "sha256:052ddc487a29acce1b5d44532f79f8ab594d0ac6565504071f4c7706d97fc552", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gpgme-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grep-3.3-4.fc32.x86_64.rpm", + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "21.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/groff-base-1.22.3-21.fc32.x86_64.rpm", + "checksum": "sha256:808e7209893298d11ac27f148c1b3d1a2b28e303e7930b43659a08dc0f660ac4", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grubby-8.40-40.fc32.x86_64.rpm", + "checksum": "sha256:cbdc61d713e4cbe52b2bece117912da0f1e3782cb3b33caa068e96c854c990be", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gzip-1.10-2.fc32.x86_64.rpm", + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.23", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/h/hostname-3.23-2.fc32.x86_64.rpm", + "checksum": "sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.x86_64.rpm", + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.02", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/initscripts-10.02-3.fc32.x86_64.rpm", + "checksum": "sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339", + "check_gpg": true + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.4.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipcalc-0.4.0-2.fc32.x86_64.rpm", + "checksum": "sha256:fe70d5a1c818367be3a5a7e60cbb379f020f97f63ba3c13ed09740f45a43154a", + "check_gpg": true + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.5.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-5.5.0-1.fc32.x86_64.rpm", + "checksum": "sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684", + "check_gpg": true + }, + { + "name": "iproute-tc", + "epoch": 0, + "version": "5.5.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-tc-5.5.0-1.fc32.x86_64.rpm", + "checksum": "sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae", + "check_gpg": true + }, + { + "name": "ipset", + "epoch": 0, + "version": "7.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipset-7.6-1.fc32.x86_64.rpm", + "checksum": "sha256:7c21c21c3e3dbace06bee03fe4835ae6cb1e3ef86750ba2853f39d40dead2309", + "check_gpg": true + }, + { + "name": "ipset-libs", + "epoch": 0, + "version": "7.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipset-libs-7.6-1.fc32.x86_64.rpm", + "checksum": "sha256:f60fc561675e41ffa2c48b229960291e2438441d5ed758c1f28cb06b5d4e4ea9", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-libs-1.8.4-7.fc32.x86_64.rpm", + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "name": "iptables-nft", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-nft-1.8.4-7.fc32.x86_64.rpm", + "checksum": "sha256:08c41c10745c172c34880e384cf5cff014a9627f4895e59fa482948b27e2ce9e", + "check_gpg": true + }, + { + "name": "iputils", + "epoch": 0, + "version": "20190515", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iputils-20190515-5.fc32.x86_64.rpm", + "checksum": "sha256:6a3282927f525629bc0aaf4090e108d33b0709d3d5b35bc442000c2837e7b9b4", + "check_gpg": true + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.12", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/jansson-2.12-5.fc32.x86_64.rpm", + "checksum": "sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/json-c-0.13.1-9.fc32.x86_64.rpm", + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-2.2.0-1.fc32.x86_64.rpm", + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "name": "kernel", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-5.6.6-300.fc32.x86_64.rpm", + "checksum": "sha256:89c972ec7d2ab305c91c23bc248562c76f0ae645a9ed9f94d312e2f57c4d38fe", + "check_gpg": true + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-core-5.6.6-300.fc32.x86_64.rpm", + "checksum": "sha256:a1613e90865db93fb578b8ee1a4ee40bd396c6c9f2fb2a14757acacecb9f23e8", + "check_gpg": true + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-modules-5.6.6-300.fc32.x86_64.rpm", + "checksum": "sha256:b98687828b1d222ea73ebb8457450913dac58dd0be2e430a93bb7e98ba816505", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-27-1.fc32.x86_64.rpm", + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-libs-27-1.fc32.x86_64.rpm", + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kpartx-0.8.2-3.fc32.x86_64.rpm", + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/krb5-libs-1.18-1.fc32.x86_64.rpm", + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "name": "langpacks-core-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0", + "check_gpg": true + }, + { + "name": "langpacks-core-font-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-font-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389", + "check_gpg": true + }, + { + "name": "langpacks-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca", + "check_gpg": true + }, + { + "name": "less", + "epoch": 0, + "version": "551", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/less-551-3.fc32.x86_64.rpm", + "checksum": "sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libacl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.2", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libarchive-3.4.2-1.fc32.x86_64.rpm", + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libargon2-20171227-4.fc32.x86_64.rpm", + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libassuan-2.5.3-3.fc32.x86_64.rpm", + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libattr-2.4.48-8.fc32.x86_64.rpm", + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-44.fc32.x86_64.rpm", + "checksum": "sha256:26cca773f1f258105f0f825a8e0faebcaa183655b5d91cd972afbe791b586478", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libblkid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "name": "libbrotli", + "epoch": 0, + "version": "1.0.7", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbrotli-1.0.7-10.fc32.x86_64.rpm", + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-2.26-7.fc32.x86_64.rpm", + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-ng-0.7.10-2.fc32.x86_64.rpm", + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "name": "libcbor", + "epoch": 0, + "version": "0.5.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcbor-0.5.0-7.fc32.x86_64.rpm", + "checksum": "sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5", + "check_gpg": true + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcollection-0.7.0-44.fc32.x86_64.rpm", + "checksum": "sha256:9d4691918d7add910e8c03d61cccda0316b62d77b30ac2e502cf2e55289d1823", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcom_err-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcroco-0.6.13-3.fc32.x86_64.rpm", + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcurl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdhash-0.5.0-44.fc32.x86_64.rpm", + "checksum": "sha256:ca540fb7088948fdfe6e6b52a5e2b6a74d2d17136857da9f3f4a1ee29c8eb74b", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "32.20191231cvs.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libedit-3.1-32.20191231cvs.fc32.x86_64.rpm", + "checksum": "sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libevent-2.1.8-8.fc32.x86_64.rpm", + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfdisk-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libffi-3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "name": "libfido2", + "epoch": 0, + "version": "1.3.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfido2-1.3.1-1.fc32.x86_64.rpm", + "checksum": "sha256:ebbace15f986288bba7681f44a111b14bcc7cae00b7a1faadaa838bd51897357", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcc-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-3.fc32.x86_64.rpm", + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgomp-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgpg-error-1.36-3.fc32.x86_64.rpm", + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libidn2-2.3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libini_config-1.3.1-44.fc32.x86_64.rpm", + "checksum": "sha256:fed6244fce0c0b48933d622dfbb00cf73931b2f746b27675a025a33b591d9820", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libksba-1.3.5-11.fc32.x86_64.rpm", + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.1.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libldb-2.1.1-1.fc32.x86_64.rpm", + "checksum": "sha256:cd16f6ef433d7dc6860b19f3d77b666a03d35361aba78ee09d772575c2f69cc0", + "check_gpg": true + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.3.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmaxminddb-1.3.2-2.fc32.x86_64.rpm", + "checksum": "sha256:60589342d58922ba061ac8df7d753a7e7e75162c97ab086739e9d33fbf289091", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-10.fc32.x86_64.rpm", + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmnl-1.0.4-11.fc32.x86_64.rpm", + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmodulemd-2.9.1-1.fc32.x86_64.rpm", + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmount-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libndp-1.7-5.fc32.x86_64.rpm", + "checksum": "sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.x86_64.rpm", + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "17.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.x86_64.rpm", + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.4.3", + "release": "0.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfsidmap-2.4.3-0.fc32.x86_64.rpm", + "checksum": "sha256:bb154a90c968150172036d86f0c9fc2a24b5799718bc4d835cb10d0758890c67", + "check_gpg": true + }, + { + "name": "libnftnl", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnftnl-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:3afab9512fd4d56a13c95b530c805ac8b2bc872572ec5bb435eccdd59fbbc8b6", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.40.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnghttp2-1.40.0-2.fc32.x86_64.rpm", + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnl3-3.5.0-2.fc32.x86_64.rpm", + "checksum": "sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "6.20180605git4a062cf.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64.rpm", + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-44.fc32.x86_64.rpm", + "checksum": "sha256:ce1a80b0ba6f09a7e5a188436088dd31d10c5f7b43dbe9c1788f705127c8e6b2", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpcap-1.9.1-3.fc32.x86_64.rpm", + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpipeline-1.5.2-2.fc32.x86_64.rpm", + "checksum": "sha256:c0a0c6f3e30c20815496be8de00f9596737e2693feb85f7484f200ffa9174530", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpsl-0.21.0-4.fc32.x86_64.rpm", + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpwquality-1.4.2-2.fc32.x86_64.rpm", + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libref_array-0.1.5-44.fc32.x86_64.rpm", + "checksum": "sha256:6fc1181ed798617668f195579acfcf8fb212513a776f376eecfb3d086c66b2d9", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.11.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/librepo-1.11.1-4.fc32.x86_64.rpm", + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.12.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm", + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libseccomp-2.4.2-3.fc32.x86_64.rpm", + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.20.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsecret-0.20.2-2.fc32.x86_64.rpm", + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-utils-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsemanage-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsepol-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsigsegv-2.11-10.fc32.x86_64.rpm", + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsmartcols-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsolv-0.7.11-2.fc32.x86_64.rpm", + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libss-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-0.9.3-2.fc32.x86_64.rpm", + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm", + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_autofs-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:695ef8ae55ed6a165a3633b3c0d75b320879246386e6df4539be9286f5176cc5", + "check_gpg": true + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_certmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:f391fe0e21e51e7c864f8bce1b5825419f4096023b5b90b3976bbd69d6a4d720", + "check_gpg": true + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:599549d72d26b48c45156585a5698898c853e56469142e202d3749b781428465", + "check_gpg": true + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:66bb5b2e99d2c74b82943fe61fe9b9a3674350b0242f69a6854ec9718dcf5e07", + "check_gpg": true + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:af66820023c984d8b981ecac715d0c2daec1f89dcb69bed76ddf58b0ee80c1b1", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtalloc-2.3.1-2.fc32.x86_64.rpm", + "checksum": "sha256:16702883a79532a400d7304146cdb47b0599983b9fb48ab918ef9fa1ce0be394", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.16.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtasn1-4.16.0-1.fc32.x86_64.rpm", + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtdb-1.4.3-2.fc32.x86_64.rpm", + "checksum": "sha256:36778f8a4fa111c4f796bbea8fd52f7b9708de8f4351070faa30bc985db59885", + "check_gpg": true + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtevent-0.10.2-2.fc32.x86_64.rpm", + "checksum": "sha256:dab54013f8316b766c40c71f9c0c2124c1f0c219b417d588b5ba1dccf7d63fd7", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.2.5", + "release": "1.rc2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.x86_64.rpm", + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libunistring-0.9.10-7.fc32.x86_64.rpm", + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libusbx-1.0.23-1.fc32.x86_64.rpm", + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuser-0.62-24.fc32.x86_64.rpm", + "checksum": "sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "18.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libutempter-1.1.6-18.fc32.x86_64.rpm", + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuuid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libverto-0.3.0-9.fc32.x86_64.rpm", + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.10.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.x86_64.rpm", + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.10", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxml2-2.9.10-3.fc32.x86_64.rpm", + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libyaml-0.2.2-3.fc32.x86_64.rpm", + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libzstd-1.4.4-2.fc32.x86_64.rpm", + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "name": "linux-atm-libs", + "epoch": 0, + "version": "2.5.1", + "release": "26.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-26.fc32.x86_64.rpm", + "checksum": "sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467", + "check_gpg": true + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20200316", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-20200316-106.fc32.noarch.rpm", + "checksum": "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4", + "check_gpg": true + }, + { + "name": "linux-firmware-whence", + "epoch": 0, + "version": "20200316", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-whence-20200316-106.fc32.noarch.rpm", + "checksum": "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9", + "check_gpg": true + }, + { + "name": "lmdb-libs", + "epoch": 0, + "version": "0.9.24", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.24-1.fc32.x86_64.rpm", + "checksum": "sha256:25ae9056f75df4efff0d17d916e7c3889c421368613acec7f1c4119bd17eac13", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-7.fc32.x86_64.rpm", + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-2.fc32.x86_64.rpm", + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.9.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/man-db-2.9.0-2.fc32.x86_64.rpm", + "checksum": "sha256:ca80c458fab5bdde0276702f06217d1219085428560af6039aa1c5cf1e58ff3b", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mkpasswd-5.5.6-1.fc32.x86_64.rpm", + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "4.0.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mpfr-4.0.2-3.fc32.x86_64.rpm", + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm", + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.56.20160912git.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/net-tools-2.0-0.56.20160912git.fc32.x86_64.rpm", + "checksum": "sha256:924367aa63693da4660dcb806fbf52b3bcb7c4d12b40c4b4ba6329079936d073", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nettle-3.5.1-5.fc32.x86_64.rpm", + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "name": "nftables", + "epoch": 1, + "version": "0.9.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nftables-0.9.3-2.fc32.x86_64.rpm", + "checksum": "sha256:0b7d24759aac33303ff4b101c111dea03ff2529efc95661140e22f629cc1ab7a", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/npth-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openldap-2.4.47-4.fc32.x86_64.rpm", + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-8.2p1-2.fc32.x86_64.rpm", + "checksum": "sha256:0d51c1319ee78978e6ea5a49b815c2078b4ffd4d575e98c70e54ca01c3390eb8", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-clients-8.2p1-2.fc32.x86_64.rpm", + "checksum": "sha256:8b148415fb6a583ef131d0ddff44f3209c30d0299fde7b20cd3ea385590927c1", + "check_gpg": true + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-server-8.2p1-2.fc32.x86_64.rpm", + "checksum": "sha256:d1e244b8b5ce7404846e97d96c762c8c18ff6447301f6fc63f50e615029aa7cd", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.x86_64.rpm", + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/os-prober-1.77-4.fc32.x86_64.rpm", + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pam-1.3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "name": "parted", + "epoch": 0, + "version": "3.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/parted-3.3-3.fc32.x86_64.rpm", + "checksum": "sha256:4b9da0cedada16eb80a2d66b86aa62c9b026501e13a3e947a5a03a06f41d9dbb", + "check_gpg": true + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/passwd-0.80-8.fc32.x86_64.rpm", + "checksum": "sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.44", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre-8.44-1.fc32.x86_64.rpm", + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-10.34-9.fc32.x86_64.rpm", + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "name": "pcre2-syntax", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm", + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pigz-2.4-6.fc32.x86_64.rpm", + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pinentry-1.1.0-7.fc32.x86_64.rpm", + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "name": "plymouth", + "epoch": 0, + "version": "0.9.4", + "release": "14.20200325gite31c81f.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/plymouth-0.9.4-14.20200325gite31c81f.fc32.x86_64.rpm", + "checksum": "sha256:5cd4b781742b64dfff3cb3840ed5bb76f6946fb63f4ab742a51c3505747271a1", + "check_gpg": true + }, + { + "name": "plymouth-core-libs", + "epoch": 0, + "version": "0.9.4", + "release": "14.20200325gite31c81f.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/plymouth-core-libs-0.9.4-14.20200325gite31c81f.fc32.x86_64.rpm", + "checksum": "sha256:dc5a84049a6fc1f7c2a709ab3c2fa53de65e864f26085f5ca69864f5c2f6955d", + "check_gpg": true + }, + { + "name": "plymouth-scripts", + "epoch": 0, + "version": "0.9.4", + "release": "14.20200325gite31c81f.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/plymouth-scripts-0.9.4-14.20200325gite31c81f.fc32.x86_64.rpm", + "checksum": "sha256:d36f08a44d6a3bc95f995c858ecb5e0d7fb22a8236008267024dd6a0ff66cc85", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.116", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-libs-0.116-7.fc32.x86_64.rpm", + "checksum": "sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/popt-1.16-19.fc32.x86_64.rpm", + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-7.fc32.x86_64.rpm", + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "name": "psmisc", + "epoch": 0, + "version": "23.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/psmisc-23.3-3.fc32.x86_64.rpm", + "checksum": "sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm", + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "name": "python3-attrs", + "epoch": 0, + "version": "19.3.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-attrs-19.3.0-2.fc32.noarch.rpm", + "checksum": "sha256:bcb07748c8688c788ec69c3a33c0abd1bb3a496b9aa09b5729265670bc7ba0eb", + "check_gpg": true + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:b1111e77a5fdbacaa04acc90d3844706158bc5892173862928705620b8910adb", + "check_gpg": true + }, + { + "name": "python3-babel", + "epoch": 0, + "version": "2.8.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-babel-2.8.0-2.fc32.noarch.rpm", + "checksum": "sha256:5719dd2fb399cadec08b4ac41c794239d2a2de2f012faeb970ab90a07bba0084", + "check_gpg": true + }, + { + "name": "python3-cffi", + "epoch": 0, + "version": "1.14.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-cffi-1.14.0-1.fc32.x86_64.rpm", + "checksum": "sha256:7124f9fedc862e3bab80f05b804b6c9580603ce3155727e888646d4d4f5ddc50", + "check_gpg": true + }, + { + "name": "python3-chardet", + "epoch": 0, + "version": "3.0.4", + "release": "15.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-chardet-3.0.4-15.fc32.noarch.rpm", + "checksum": "sha256:e7b9fd73c260cd22d3a36823530d4f623ea0e16844b900a5677c769afa76341c", + "check_gpg": true + }, + { + "name": "python3-configobj", + "epoch": 0, + "version": "5.0.6", + "release": "20.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-configobj-5.0.6-20.fc32.noarch.rpm", + "checksum": "sha256:81b6181b947d50e0a1ea681298417e552421d6714900d07a34dc25899e5c9f60", + "check_gpg": true + }, + { + "name": "python3-cryptography", + "epoch": 0, + "version": "2.8", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-cryptography-2.8-3.fc32.x86_64.rpm", + "checksum": "sha256:bb8942d19e594c0f4ca181bd58796bd5d3cb681c3f17cd2ec2654c3afe28e39a", + "check_gpg": true + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.8.0", + "release": "8.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-8.fc32.noarch.rpm", + "checksum": "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862", + "check_gpg": true + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dbus-1.2.16-1.fc32.x86_64.rpm", + "checksum": "sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070", + "check_gpg": true + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.4.0", + "release": "6.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-decorator-4.4.0-6.fc32.noarch.rpm", + "checksum": "sha256:129adf9147d5d120546ca8e0fb5f165761106d386d366fe82591e372754d0b4a", + "check_gpg": true + }, + { + "name": "python3-distro", + "epoch": 0, + "version": "1.4.0", + "release": "5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-5.fc32.noarch.rpm", + "checksum": "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.14", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-plugins-core-4.0.14-1.fc32.noarch.rpm", + "checksum": "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576", + "check_gpg": true + }, + { + "name": "python3-firewall", + "epoch": 0, + "version": "0.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-firewall-0.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:8ee8c4bbf024b998ffb77a6b4194a2306ac21c5a6fcf70c8c81a0fbf38f7c7fc", + "check_gpg": true + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.36.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gobject-base-3.36.0-2.fc32.x86_64.rpm", + "checksum": "sha256:34411604a91c301dc8489285065c68f3a2f50910717097fedcaade6481c7469e", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "name": "python3-idna", + "epoch": 0, + "version": "2.8", + "release": "6.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-idna-2.8-6.fc32.noarch.rpm", + "checksum": "sha256:61c51596cc97f35177efe8dc5e2ca52d8fd528570f33c184497f419259b73c90", + "check_gpg": true + }, + { + "name": "python3-jinja2", + "epoch": 0, + "version": "2.11.1", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jinja2-2.11.1-1.fc32.noarch.rpm", + "checksum": "sha256:645f82cf62da25742cab5e8ffd1f764301b84ab19710d9f3fb3aff1cb57ffdc6", + "check_gpg": true + }, + { + "name": "python3-jsonpatch", + "epoch": 0, + "version": "1.21", + "release": "11.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jsonpatch-1.21-11.fc32.noarch.rpm", + "checksum": "sha256:4c9d77d63ddc7dda0e018fc1c97d46025794e336e58d838a631fcc130dfa3b9b", + "check_gpg": true + }, + { + "name": "python3-jsonpointer", + "epoch": 0, + "version": "1.10", + "release": "19.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jsonpointer-1.10-19.fc32.noarch.rpm", + "checksum": "sha256:6615aae3def0c49910e43e2d69f7ae8852694953dceb4b6235b5cf4099296d70", + "check_gpg": true + }, + { + "name": "python3-jsonschema", + "epoch": 0, + "version": "3.2.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jsonschema-3.2.0-2.fc32.noarch.rpm", + "checksum": "sha256:6890a9545194ad6cf1b0c58e5273132171a9ced9cb665a1442aa62b6b6d3d2ea", + "check_gpg": true + }, + { + "name": "python3-jwt", + "epoch": 0, + "version": "1.7.1", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jwt-1.7.1-7.fc32.noarch.rpm", + "checksum": "sha256:d0bc781a80be1d1fe204ec6b26255240261d55f6e24a28343572f2221a00533e", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libs-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libselinux-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124", + "check_gpg": true + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libsemanage-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:55bafcdf9c31b1456af3bf584bfe7ac745a03f4decd17197ea97b498d68b3b82", + "check_gpg": true + }, + { + "name": "python3-markupsafe", + "epoch": 0, + "version": "1.1.1", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-markupsafe-1.1.1-5.fc32.x86_64.rpm", + "checksum": "sha256:c05d01195aa4ca0f4a471574cc7ece8a0f4daf437935d845cd0745e2512cb9c9", + "check_gpg": true + }, + { + "name": "python3-nftables", + "epoch": 1, + "version": "0.9.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-nftables-0.9.3-2.fc32.x86_64.rpm", + "checksum": "sha256:0fc0193d95d69c780b6feb1cb74759ca2d4804701b3de936dac8429cfbe0f2e9", + "check_gpg": true + }, + { + "name": "python3-oauthlib", + "epoch": 0, + "version": "3.0.2", + "release": "5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-oauthlib-3.0.2-5.fc32.noarch.rpm", + "checksum": "sha256:391faab010ca30610a14e0b3d54fbc0331be39bc831086fb877f8021fe4b171f", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "name": "python3-ply", + "epoch": 0, + "version": "3.11", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-ply-3.11-7.fc32.noarch.rpm", + "checksum": "sha256:f6203a41ed91197bb770a38a101d977f0f56de86ccc5a71cee9c0e198f26bcbc", + "check_gpg": true + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-policycoreutils-3.0-2.fc32.noarch.rpm", + "checksum": "sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2", + "check_gpg": true + }, + { + "name": "python3-prettytable", + "epoch": 0, + "version": "0.7.2", + "release": "22.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-prettytable-0.7.2-22.fc32.noarch.rpm", + "checksum": "sha256:4860a733ca3f22089c6c283cbdcf53123a702d60b5bffdd4fe9d76826f91139a", + "check_gpg": true + }, + { + "name": "python3-pycparser", + "epoch": 0, + "version": "2.19", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pycparser-2.19-2.fc32.noarch.rpm", + "checksum": "sha256:a0b87b2dc3c5f536e94d6a4f3563a621dfbc067a62c3d1fe69bdb70c3cecec57", + "check_gpg": true + }, + { + "name": "python3-pyrsistent", + "epoch": 0, + "version": "0.15.7", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyrsistent-0.15.7-2.fc32.x86_64.rpm", + "checksum": "sha256:1e655f02895f6a87f9be5793065570b57e623cbf15516094df62e1f5626d4158", + "check_gpg": true + }, + { + "name": "python3-pyserial", + "epoch": 0, + "version": "3.4", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyserial-3.4-7.fc32.noarch.rpm", + "checksum": "sha256:a107b3d3790a5bcfdc28f6f4718969039b103a681a2647f3cbcb82cf92e97acb", + "check_gpg": true + }, + { + "name": "python3-pysocks", + "epoch": 0, + "version": "1.7.1", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pysocks-1.7.1-4.fc32.noarch.rpm", + "checksum": "sha256:fa791a4328b4c41b7190d862de921605f266a64abee03b2ea2e8d2b644be307f", + "check_gpg": true + }, + { + "name": "python3-pytz", + "epoch": 0, + "version": "2019.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pytz-2019.3-2.fc32.noarch.rpm", + "checksum": "sha256:c93df175a0a4989aaaeb170406d8ff13a2cd93a5fc52ad33468245fea2044a86", + "check_gpg": true + }, + { + "name": "python3-pyyaml", + "epoch": 0, + "version": "5.3.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyyaml-5.3.1-1.fc32.x86_64.rpm", + "checksum": "sha256:c13c7da4b097499576861cb12fdd02e520af69b5f23d615b3968c54f40f8fd47", + "check_gpg": true + }, + { + "name": "python3-requests", + "epoch": 0, + "version": "2.22.0", + "release": "8.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-requests-2.22.0-8.fc32.noarch.rpm", + "checksum": "sha256:d611f0c4252c4c4b893850807748e62cf4d17d72d544ef2744091df3206d8178", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.3.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setools-4.3.0-1.fc32.x86_64.rpm", + "checksum": "sha256:6f5f53b66f7c3bf6958f6f163788583265ff0360188620c3b0f7ddedeac3d1f4", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.14.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-six-1.14.0-2.fc32.noarch.rpm", + "checksum": "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f", + "check_gpg": true + }, + { + "name": "python3-slip", + "epoch": 0, + "version": "0.6.4", + "release": "19.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-slip-0.6.4-19.fc32.noarch.rpm", + "checksum": "sha256:d2abba1a0523bd9df5073900593ab13ec2ed2e391440be4d883314fa154370f8", + "check_gpg": true + }, + { + "name": "python3-slip-dbus", + "epoch": 0, + "version": "0.6.4", + "release": "19.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-slip-dbus-0.6.4-19.fc32.noarch.rpm", + "checksum": "sha256:cb0c64cc81e0b384bbc9d27ffcb2a655b13c91a799aad8972264aed1767926a3", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-unbound-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "name": "python3-urllib3", + "epoch": 0, + "version": "1.25.7", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-urllib3-1.25.7-3.fc32.noarch.rpm", + "checksum": "sha256:3882823d0eb18e0e8146584f4a32a4801961f6fdc09075607746317eba3265be", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.x86_64.rpm", + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/readline-8.0-4.fc32.x86_64.rpm", + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "27.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rootfiles-8.1-27.fc32.noarch.rpm", + "checksum": "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sed-4.5-5.fc32.x86_64.rpm", + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.6", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm", + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.8.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shadow-utils-4.8.1-2.fc32.x86_64.rpm", + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.15", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shared-mime-info-1.15-3.fc32.x86_64.rpm", + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.31.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-client-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:699c1a3ff311bbaa2380c085fb4f516aa08be474bed02bcd1569d0bbf5b22d07", + "check_gpg": true + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-common-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:265dee550073120d51e4c94d3d039e5efdee73a0ae1b1faf2b92de0dad1f58fa", + "check_gpg": true + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-kcm-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:3ee53d0dba5bbfd3bbb2ae4b54e3ebdfa122e1cf120e17ff9c4c35674269e5ad", + "check_gpg": true + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-nfs-idmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:3c3fb1ca768ecd6ae7905a09cd85b9f67e9f08c46d18779520fb4b29476865c7", + "check_gpg": true + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.9.0", + "release": "0.1.b4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sudo-1.9.0-0.1.b4.fc32.x86_64.rpm", + "checksum": "sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-libs-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-pam-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm", + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-udev-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tss2-1331-4.fc32.x86_64.rpm", + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm", + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/unbound-libs-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/util-linux-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.2.525", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/v/vim-minimal-8.2.525-1.fc32.x86_64.rpm", + "checksum": "sha256:4fca21cfdcbed052e3e9e1eff74c22fb8ffb1fbbeb63e87e2aa540e43a8c0d09", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/which-2.21-19.fc32.x86_64.rpm", + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm", + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.4.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xfsprogs-5.4.0-3.fc32.x86_64.rpm", + "checksum": "sha256:e3175d0dba977f1cff702498ea68cc13134a0f525a869025e2ee3ede987d7867", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.29", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm", + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-libs-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/y/yum-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "21.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zlib-1.2.11-21.fc32.x86_64.rpm", + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ], + "checksums": { + "0": "sha256:c7f7c29a8ca90e226d2efee6d5856f2dea1d64ea758dfd114d75b4b20b56de1c" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac ro no_timer_check console=ttyS0,115200n8 console=tty1 biosdevname=0 net.ifnames=0 console=ttyS0,115200" + }, + "bootloader": "grub", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "initrd": "/boot/initramfs-5.6.6-300.fc32.x86_64.img", + "linux": "/boot/vmlinuz-5.6.6-300.fc32.x86_64", + "options": "$kernelopts", + "title": "Fedora (5.6.6-300.fc32.x86_64) 32 (Thirty Two)", + "version": "5.6.6-300.fc32.x86_64" + } + ], + "firewall-enabled": [ + "ssh", + "mdns", + "dhcpv6-client" + ], + "fstab": [ + [ + "UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "/", + "ext4", + "defaults", + "1", + "1" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:993:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:997:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "render:x:996:", + "root:x:0:", + "ssh_keys:x:998:", + "sshd:x:74:", + "sys:x:3:", + "systemd-coredump:x:995:", + "systemd-journal:x:190:", + "systemd-network:x:192:", + "systemd-resolve:x:193:", + "systemd-timesync:x:994:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:999:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "raw", + "os-release": { + "ANSI_COLOR": "0;34", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:fedoraproject:fedora:32", + "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f32/system-administrators-guide/", + "HOME_URL": "https://fedoraproject.org/", + "ID": "fedora", + "LOGO": "fedora-logo-icon", + "NAME": "Fedora", + "PLATFORM_ID": "platform:f32", + "PRETTY_NAME": "Fedora 32 (Thirty Two)", + "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy", + "REDHAT_BUGZILLA_PRODUCT": "Fedora", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "32", + "REDHAT_SUPPORT_PRODUCT": "Fedora", + "REDHAT_SUPPORT_PRODUCT_VERSION": "32", + "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help", + "VERSION": "32 (Thirty Two)", + "VERSION_CODENAME": "", + "VERSION_ID": "32" + }, + "packages": [ + "NetworkManager-1.22.10-1.fc32.x86_64", + "NetworkManager-libnm-1.22.10-1.fc32.x86_64", + "acl-2.2.53-5.fc32.x86_64", + "alternatives-1.11-6.fc32.x86_64", + "audit-3.0-0.19.20191104git1c2f876.fc32.x86_64", + "audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64", + "basesystem-11-9.fc32.noarch", + "bash-5.0.11-2.fc32.x86_64", + "bzip2-libs-1.0.8-2.fc32.x86_64", + "c-ares-1.15.0-5.fc32.x86_64", + "ca-certificates-2020.2.40-3.fc32.noarch", + "checkpolicy-3.0-3.fc32.x86_64", + "chrony-3.5-8.fc32.x86_64", + "cloud-init-19.4-2.fc32.noarch", + "compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch", + "compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch", + "compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch", + "coreutils-8.32-3.fc32.1.x86_64", + "coreutils-common-8.32-3.fc32.1.x86_64", + "cpio-2.13-4.fc32.x86_64", + "cracklib-2.9.6-22.fc32.x86_64", + "cracklib-dicts-2.9.6-22.fc32.x86_64", + "crypto-policies-20191128-5.gitcd267a5.fc32.noarch", + "crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch", + "cryptsetup-libs-2.3.0-1.fc32.x86_64", + "curl-7.69.1-1.fc32.x86_64", + "cyrus-sasl-lib-2.1.27-4.fc32.x86_64", + "dbus-1.12.16-4.fc32.x86_64", + "dbus-broker-22-1.fc32.x86_64", + "dbus-common-1.12.16-4.fc32.noarch", + "dbus-libs-1.12.16-4.fc32.x86_64", + "dejavu-sans-fonts-2.37-7.fc32.noarch", + "deltarpm-3.6.2-5.fc32.x86_64", + "device-mapper-1.02.171-1.fc32.x86_64", + "device-mapper-libs-1.02.171-1.fc32.x86_64", + "dhcp-client-4.4.2-5.b1.fc32.x86_64", + "dhcp-common-4.4.2-5.b1.fc32.noarch", + "diffutils-3.7-4.fc32.x86_64", + "dnf-4.2.19-1.fc32.noarch", + "dnf-data-4.2.19-1.fc32.noarch", + "dnf-plugins-core-4.0.14-1.fc32.noarch", + "dracut-050-26.git20200316.fc32.x86_64", + "dracut-config-generic-050-26.git20200316.fc32.x86_64", + "e2fsprogs-1.45.5-3.fc32.x86_64", + "e2fsprogs-libs-1.45.5-3.fc32.x86_64", + "elfutils-debuginfod-client-0.179-1.fc32.x86_64", + "elfutils-default-yama-scope-0.179-1.fc32.noarch", + "elfutils-libelf-0.179-1.fc32.x86_64", + "elfutils-libs-0.179-1.fc32.x86_64", + "expat-2.2.8-2.fc32.x86_64", + "fedora-gpg-keys-32-1.noarch", + "fedora-release-32-1.noarch", + "fedora-release-common-32-1.noarch", + "fedora-repos-32-1.noarch", + "file-5.38-2.fc32.x86_64", + "file-libs-5.38-2.fc32.x86_64", + "filesystem-3.14-2.fc32.x86_64", + "findutils-4.7.0-3.fc32.x86_64", + "fipscheck-1.5.0-8.fc32.x86_64", + "fipscheck-lib-1.5.0-8.fc32.x86_64", + "firewalld-0.8.2-2.fc32.noarch", + "firewalld-filesystem-0.8.2-2.fc32.noarch", + "fonts-filesystem-2.0.3-1.fc32.noarch", + "fuse-libs-2.9.9-9.fc32.x86_64", + "gawk-5.0.1-7.fc32.x86_64", + "gdbm-libs-1.18.1-3.fc32.x86_64", + "geolite2-city-20191217-2.fc32.noarch", + "geolite2-country-20191217-2.fc32.noarch", + "gettext-0.20.1-4.fc32.x86_64", + "gettext-libs-0.20.1-4.fc32.x86_64", + "glib2-2.64.1-1.fc32.x86_64", + "glibc-2.31-2.fc32.x86_64", + "glibc-common-2.31-2.fc32.x86_64", + "glibc-langpack-en-2.31-2.fc32.x86_64", + "gmp-6.1.2-13.fc32.x86_64", + "gnupg2-2.2.19-1.fc32.x86_64", + "gnupg2-smime-2.2.19-1.fc32.x86_64", + "gnutls-3.6.13-1.fc32.x86_64", + "gobject-introspection-1.64.1-1.fc32.x86_64", + "gpg-pubkey-12c944d0-5d5156ab", + "gpgme-1.13.1-6.fc32.x86_64", + "grep-3.3-4.fc32.x86_64", + "groff-base-1.22.3-21.fc32.x86_64", + "grub2-common-2.04-12.fc32.noarch", + "grub2-pc-2.04-12.fc32.x86_64", + "grub2-pc-modules-2.04-12.fc32.noarch", + "grub2-tools-2.04-12.fc32.x86_64", + "grub2-tools-minimal-2.04-12.fc32.x86_64", + "grubby-8.40-40.fc32.x86_64", + "gzip-1.10-2.fc32.x86_64", + "hostname-3.23-2.fc32.x86_64", + "ima-evm-utils-1.2.1-3.fc32.x86_64", + "initscripts-10.02-3.fc32.x86_64", + "ipcalc-0.4.0-2.fc32.x86_64", + "iproute-5.5.0-1.fc32.x86_64", + "iproute-tc-5.5.0-1.fc32.x86_64", + "ipset-7.6-1.fc32.x86_64", + "ipset-libs-7.6-1.fc32.x86_64", + "iptables-libs-1.8.4-7.fc32.x86_64", + "iptables-nft-1.8.4-7.fc32.x86_64", + "iputils-20190515-5.fc32.x86_64", + "jansson-2.12-5.fc32.x86_64", + "json-c-0.13.1-9.fc32.x86_64", + "kbd-2.2.0-1.fc32.x86_64", + "kbd-legacy-2.2.0-1.fc32.noarch", + "kbd-misc-2.2.0-1.fc32.noarch", + "kernel-5.6.6-300.fc32.x86_64", + "kernel-core-5.6.6-300.fc32.x86_64", + "kernel-modules-5.6.6-300.fc32.x86_64", + "keyutils-libs-1.6-4.fc32.x86_64", + "kmod-27-1.fc32.x86_64", + "kmod-libs-27-1.fc32.x86_64", + "kpartx-0.8.2-3.fc32.x86_64", + "krb5-libs-1.18-1.fc32.x86_64", + "langpacks-core-en-3.0-3.fc32.noarch", + "langpacks-core-font-en-3.0-3.fc32.noarch", + "langpacks-en-3.0-3.fc32.noarch", + "less-551-3.fc32.x86_64", + "libacl-2.2.53-5.fc32.x86_64", + "libarchive-3.4.2-1.fc32.x86_64", + "libargon2-20171227-4.fc32.x86_64", + "libassuan-2.5.3-3.fc32.x86_64", + "libattr-2.4.48-8.fc32.x86_64", + "libbasicobjects-0.1.1-44.fc32.x86_64", + "libblkid-2.35.1-7.fc32.x86_64", + "libbrotli-1.0.7-10.fc32.x86_64", + "libcap-2.26-7.fc32.x86_64", + "libcap-ng-0.7.10-2.fc32.x86_64", + "libcbor-0.5.0-7.fc32.x86_64", + "libcollection-0.7.0-44.fc32.x86_64", + "libcom_err-1.45.5-3.fc32.x86_64", + "libcomps-0.1.14-4.fc32.x86_64", + "libcroco-0.6.13-3.fc32.x86_64", + "libcurl-7.69.1-1.fc32.x86_64", + "libdb-5.3.28-40.fc32.x86_64", + "libdb-utils-5.3.28-40.fc32.x86_64", + "libdhash-0.5.0-44.fc32.x86_64", + "libdnf-0.45.0-3.fc32.x86_64", + "libedit-3.1-32.20191231cvs.fc32.x86_64", + "libevent-2.1.8-8.fc32.x86_64", + "libfdisk-2.35.1-7.fc32.x86_64", + "libffi-3.1-24.fc32.x86_64", + "libfido2-1.3.1-1.fc32.x86_64", + "libgcc-10.0.1-0.11.fc32.x86_64", + "libgcrypt-1.8.5-3.fc32.x86_64", + "libgomp-10.0.1-0.11.fc32.x86_64", + "libgpg-error-1.36-3.fc32.x86_64", + "libidn2-2.3.0-2.fc32.x86_64", + "libini_config-1.3.1-44.fc32.x86_64", + "libkcapi-1.1.5-2.fc32.x86_64", + "libkcapi-hmaccalc-1.1.5-2.fc32.x86_64", + "libksba-1.3.5-11.fc32.x86_64", + "libldb-2.1.1-1.fc32.x86_64", + "libmaxminddb-1.3.2-2.fc32.x86_64", + "libmetalink-0.1.3-10.fc32.x86_64", + "libmnl-1.0.4-11.fc32.x86_64", + "libmodulemd-2.9.1-1.fc32.x86_64", + "libmount-2.35.1-7.fc32.x86_64", + "libndp-1.7-5.fc32.x86_64", + "libnetfilter_conntrack-1.0.7-4.fc32.x86_64", + "libnfnetlink-1.0.1-17.fc32.x86_64", + "libnfsidmap-2.4.3-0.fc32.x86_64", + "libnftnl-1.1.5-2.fc32.x86_64", + "libnghttp2-1.40.0-2.fc32.x86_64", + "libnl3-3.5.0-2.fc32.x86_64", + "libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64", + "libpath_utils-0.2.1-44.fc32.x86_64", + "libpcap-1.9.1-3.fc32.x86_64", + "libpipeline-1.5.2-2.fc32.x86_64", + "libpsl-0.21.0-4.fc32.x86_64", + "libpwquality-1.4.2-2.fc32.x86_64", + "libref_array-0.1.5-44.fc32.x86_64", + "librepo-1.11.1-4.fc32.x86_64", + "libreport-filesystem-2.12.0-3.fc32.noarch", + "libseccomp-2.4.2-3.fc32.x86_64", + "libsecret-0.20.2-2.fc32.x86_64", + "libselinux-3.0-3.fc32.x86_64", + "libselinux-utils-3.0-3.fc32.x86_64", + "libsemanage-3.0-3.fc32.x86_64", + "libsepol-3.0-3.fc32.x86_64", + "libsigsegv-2.11-10.fc32.x86_64", + "libsmartcols-2.35.1-7.fc32.x86_64", + "libsolv-0.7.11-2.fc32.x86_64", + "libss-1.45.5-3.fc32.x86_64", + "libssh-0.9.3-2.fc32.x86_64", + "libssh-config-0.9.3-2.fc32.noarch", + "libsss_autofs-2.2.3-13.fc32.x86_64", + "libsss_certmap-2.2.3-13.fc32.x86_64", + "libsss_idmap-2.2.3-13.fc32.x86_64", + "libsss_nss_idmap-2.2.3-13.fc32.x86_64", + "libsss_sudo-2.2.3-13.fc32.x86_64", + "libstdc++-10.0.1-0.11.fc32.x86_64", + "libtalloc-2.3.1-2.fc32.x86_64", + "libtasn1-4.16.0-1.fc32.x86_64", + "libtdb-1.4.3-2.fc32.x86_64", + "libtevent-0.10.2-2.fc32.x86_64", + "libtextstyle-0.20.1-4.fc32.x86_64", + "libtirpc-1.2.5-1.rc2.fc32.x86_64", + "libunistring-0.9.10-7.fc32.x86_64", + "libusbx-1.0.23-1.fc32.x86_64", + "libuser-0.62-24.fc32.x86_64", + "libutempter-1.1.6-18.fc32.x86_64", + "libuuid-2.35.1-7.fc32.x86_64", + "libverto-0.3.0-9.fc32.x86_64", + "libxcrypt-4.4.16-1.fc32.x86_64", + "libxcrypt-compat-4.4.16-1.fc32.x86_64", + "libxkbcommon-0.10.0-2.fc32.x86_64", + "libxml2-2.9.10-3.fc32.x86_64", + "libyaml-0.2.2-3.fc32.x86_64", + "libzstd-1.4.4-2.fc32.x86_64", + "linux-atm-libs-2.5.1-26.fc32.x86_64", + "linux-firmware-20200316-106.fc32.noarch", + "linux-firmware-whence-20200316-106.fc32.noarch", + "lmdb-libs-0.9.24-1.fc32.x86_64", + "lua-libs-5.3.5-7.fc32.x86_64", + "lz4-libs-1.9.1-2.fc32.x86_64", + "man-db-2.9.0-2.fc32.x86_64", + "mkpasswd-5.5.6-1.fc32.x86_64", + "mpfr-4.0.2-3.fc32.x86_64", + "ncurses-6.1-15.20191109.fc32.x86_64", + "ncurses-base-6.1-15.20191109.fc32.noarch", + "ncurses-libs-6.1-15.20191109.fc32.x86_64", + "net-tools-2.0-0.56.20160912git.fc32.x86_64", + "nettle-3.5.1-5.fc32.x86_64", + "nftables-0.9.3-2.fc32.x86_64", + "npth-1.6-4.fc32.x86_64", + "openldap-2.4.47-4.fc32.x86_64", + "openssh-8.2p1-2.fc32.x86_64", + "openssh-clients-8.2p1-2.fc32.x86_64", + "openssh-server-8.2p1-2.fc32.x86_64", + "openssl-1.1.1d-7.fc32.x86_64", + "openssl-libs-1.1.1d-7.fc32.x86_64", + "openssl-pkcs11-0.4.10-5.fc32.x86_64", + "os-prober-1.77-4.fc32.x86_64", + "p11-kit-0.23.20-1.fc32.x86_64", + "p11-kit-trust-0.23.20-1.fc32.x86_64", + "pam-1.3.1-24.fc32.x86_64", + "parted-3.3-3.fc32.x86_64", + "passwd-0.80-8.fc32.x86_64", + "pcre-8.44-1.fc32.x86_64", + "pcre2-10.34-9.fc32.x86_64", + "pcre2-syntax-10.34-9.fc32.noarch", + "pigz-2.4-6.fc32.x86_64", + "pinentry-1.1.0-7.fc32.x86_64", + "plymouth-0.9.4-14.20200325gite31c81f.fc32.x86_64", + "plymouth-core-libs-0.9.4-14.20200325gite31c81f.fc32.x86_64", + "plymouth-scripts-0.9.4-14.20200325gite31c81f.fc32.x86_64", + "policycoreutils-3.0-2.fc32.x86_64", + "polkit-libs-0.116-7.fc32.x86_64", + "popt-1.16-19.fc32.x86_64", + "procps-ng-3.3.15-7.fc32.x86_64", + "psmisc-23.3-3.fc32.x86_64", + "publicsuffix-list-dafsa-20190417-3.fc32.noarch", + "python-pip-wheel-19.3.1-2.fc32.noarch", + "python-setuptools-wheel-41.6.0-2.fc32.noarch", + "python-unversioned-command-3.8.2-2.fc32.noarch", + "python3-3.8.2-2.fc32.x86_64", + "python3-attrs-19.3.0-2.fc32.noarch", + "python3-audit-3.0-0.19.20191104git1c2f876.fc32.x86_64", + "python3-babel-2.8.0-2.fc32.noarch", + "python3-cffi-1.14.0-1.fc32.x86_64", + "python3-chardet-3.0.4-15.fc32.noarch", + "python3-configobj-5.0.6-20.fc32.noarch", + "python3-cryptography-2.8-3.fc32.x86_64", + "python3-dateutil-2.8.0-8.fc32.noarch", + "python3-dbus-1.2.16-1.fc32.x86_64", + "python3-decorator-4.4.0-6.fc32.noarch", + "python3-distro-1.4.0-5.fc32.noarch", + "python3-dnf-4.2.19-1.fc32.noarch", + "python3-dnf-plugins-core-4.0.14-1.fc32.noarch", + "python3-firewall-0.8.2-2.fc32.noarch", + "python3-gobject-base-3.36.0-2.fc32.x86_64", + "python3-gpg-1.13.1-6.fc32.x86_64", + "python3-hawkey-0.45.0-3.fc32.x86_64", + "python3-idna-2.8-6.fc32.noarch", + "python3-jinja2-2.11.1-1.fc32.noarch", + "python3-jsonpatch-1.21-11.fc32.noarch", + "python3-jsonpointer-1.10-19.fc32.noarch", + "python3-jsonschema-3.2.0-2.fc32.noarch", + "python3-jwt-1.7.1-7.fc32.noarch", + "python3-libcomps-0.1.14-4.fc32.x86_64", + "python3-libdnf-0.45.0-3.fc32.x86_64", + "python3-libs-3.8.2-2.fc32.x86_64", + "python3-libselinux-3.0-3.fc32.x86_64", + "python3-libsemanage-3.0-3.fc32.x86_64", + "python3-markupsafe-1.1.1-5.fc32.x86_64", + "python3-nftables-0.9.3-2.fc32.x86_64", + "python3-oauthlib-3.0.2-5.fc32.noarch", + "python3-pip-19.3.1-2.fc32.noarch", + "python3-ply-3.11-7.fc32.noarch", + "python3-policycoreutils-3.0-2.fc32.noarch", + "python3-prettytable-0.7.2-22.fc32.noarch", + "python3-pycparser-2.19-2.fc32.noarch", + "python3-pyrsistent-0.15.7-2.fc32.x86_64", + "python3-pyserial-3.4-7.fc32.noarch", + "python3-pysocks-1.7.1-4.fc32.noarch", + "python3-pytz-2019.3-2.fc32.noarch", + "python3-pyyaml-5.3.1-1.fc32.x86_64", + "python3-requests-2.22.0-8.fc32.noarch", + "python3-rpm-4.15.1-2.fc32.1.x86_64", + "python3-setools-4.3.0-1.fc32.x86_64", + "python3-setuptools-41.6.0-2.fc32.noarch", + "python3-six-1.14.0-2.fc32.noarch", + "python3-slip-0.6.4-19.fc32.noarch", + "python3-slip-dbus-0.6.4-19.fc32.noarch", + "python3-unbound-1.9.6-2.fc32.x86_64", + "python3-urllib3-1.25.7-3.fc32.noarch", + "qrencode-libs-4.0.2-5.fc32.x86_64", + "readline-8.0-4.fc32.x86_64", + "rootfiles-8.1-27.fc32.noarch", + "rpm-4.15.1-2.fc32.1.x86_64", + "rpm-build-libs-4.15.1-2.fc32.1.x86_64", + "rpm-libs-4.15.1-2.fc32.1.x86_64", + "rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64", + "rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64", + "rpm-sign-libs-4.15.1-2.fc32.1.x86_64", + "sed-4.5-5.fc32.x86_64", + "selinux-policy-3.14.5-32.fc32.noarch", + "selinux-policy-targeted-3.14.5-32.fc32.noarch", + "setup-2.13.6-2.fc32.noarch", + "shadow-utils-4.8.1-2.fc32.x86_64", + "shared-mime-info-1.15-3.fc32.x86_64", + "sqlite-libs-3.31.1-1.fc32.x86_64", + "sssd-client-2.2.3-13.fc32.x86_64", + "sssd-common-2.2.3-13.fc32.x86_64", + "sssd-kcm-2.2.3-13.fc32.x86_64", + "sssd-nfs-idmap-2.2.3-13.fc32.x86_64", + "sudo-1.9.0-0.1.b4.fc32.x86_64", + "systemd-245.4-1.fc32.x86_64", + "systemd-libs-245.4-1.fc32.x86_64", + "systemd-pam-245.4-1.fc32.x86_64", + "systemd-rpm-macros-245.4-1.fc32.noarch", + "systemd-udev-245.4-1.fc32.x86_64", + "trousers-0.3.13-13.fc31.x86_64", + "trousers-lib-0.3.13-13.fc31.x86_64", + "tss2-1331-4.fc32.x86_64", + "tzdata-2019c-3.fc32.noarch", + "unbound-libs-1.9.6-2.fc32.x86_64", + "util-linux-2.35.1-7.fc32.x86_64", + "vim-minimal-8.2.525-1.fc32.x86_64", + "which-2.21-19.fc32.x86_64", + "whois-nls-5.5.6-1.fc32.noarch", + "xfsprogs-5.4.0-3.fc32.x86_64", + "xkeyboard-config-2.29-1.fc32.noarch", + "xz-5.2.5-1.fc32.x86_64", + "xz-libs-5.2.5-1.fc32.x86_64", + "yum-4.2.19-1.fc32.noarch", + "zchunk-libs-1.1.5-2.fc32.x86_64", + "zlib-1.2.11-21.fc32.x86_64" + ], + "partition-table": "dos", + "partition-table-id": "0x14fc63d2", + "partitions": [ + { + "bootable": true, + "fstype": "ext4", + "label": null, + "partuuid": "14fc63d2-01", + "size": 6441402368, + "start": 1048576, + "type": "83", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:996:993::/var/lib/chrony:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:998:995:systemd Core Dumper:/:/sbin/nologin", + "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "systemd-timesync:x:997:994:systemd Time Synchronization:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:999:999:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/boot/System.map-5.6.6-300.fc32.x86_64": ".M.......", + "/boot/initramfs-5.6.6-300.fc32.x86_64.img": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/lib/modules/5.6.6-300.fc32.x86_64/modules.builtin.alias.bin": ".......T.", + "/proc": ".M.......", + "/sys": ".M.......", + "/var/log/btmp": ".M.......", + "/var/log/journal": ".M....G..", + "/var/log/lastlog": ".M....G.." + }, + "missing": [] + }, + "services-disabled": [ + "arp-ethers.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "console-getty.service", + "debug-shell.service", + "exit.target", + "halt.target", + "kexec.target", + "loadmodules.service", + "man-db-restart-cache-update.service", + "nftables.service", + "nis-domainname.service", + "poweroff.target", + "proc-sys-fs-binfmt_misc.mount", + "rdisc.service", + "remote-cryptsetup.target", + "runlevel0.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-boot-check-no-failures.service", + "systemd-network-generator.service", + "systemd-networkd-wait-online.service", + "systemd-networkd.service", + "systemd-networkd.socket", + "systemd-pstore.service", + "systemd-resolved.service", + "systemd-time-wait-sync.service", + "systemd-timesyncd.service", + "tcsd.service" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "cloud-init.service", + "ctrl-alt-del.target", + "dbus-broker.service", + "dbus-org.fedoraproject.FirewallD1.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dbus.service", + "dbus.socket", + "dnf-makecache.timer", + "firewalld.service", + "fstrim.timer", + "getty@.service", + "import-state.service", + "reboot.target", + "remote-fs.target", + "runlevel6.target", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "unbound-anchor.timer" + ] + } +} \ No newline at end of file diff --git a/test/cases/fedora_32-x86_64-fedora_iot_commit-boot.json b/test/cases/fedora_32-x86_64-fedora_iot_commit-boot.json new file mode 100644 index 0000000..95c57ba --- /dev/null +++ b/test/cases/fedora_32-x86_64-fedora_iot_commit-boot.json @@ -0,0 +1,10744 @@ +{ + "compose-request": { + "distro": "fedora-32", + "arch": "x86_64", + "image-type": "fedora-iot-commit", + "repositories": [ + { + "baseurl": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ], + "filename": "commit.tar", + "blueprint": {} + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:0065bc128a5c8b08b57f92651bfa62895221a9f001f1169447a56a8a6671bbae": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/clevis-systemd-12-2.fc32.x86_64.rpm" + }, + "sha256:00d0bb6a08f20bea2b6bd0d2c4de99b51c770b2dab266d1d3da85891efeded01": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/attr-2.4.48-8.fc32.x86_64.rpm" + }, + "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm" + }, + "sha256:024dd8a75eb5472692d0291292d25939b97a0295e5ab0958dcd22600d392eaae": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rsync-3.1.3-11.fc32.x86_64.rpm" + }, + "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-six-1.14.0-2.fc32.noarch.rpm" + }, + "sha256:032e4944fe53dc7a11ae62d746579177a5c52b00a4ad5540da8221aa287fdf18": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwl1000-firmware-39.31.5.1-106.fc32.noarch.rpm" + }, + "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.x86_64.rpm" + }, + "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtasn1-4.16.0-1.fc32.x86_64.rpm" + }, + "sha256:052ddc487a29acce1b5d44532f79f8ab594d0ac6565504071f4c7706d97fc552": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gobject-introspection-1.64.1-1.fc32.x86_64.rpm" + }, + "sha256:05efccb06aa336d2547eb8fd5b7e0935c883f89084688f32ce0b09954149b796": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/efivar-libs-37-7.fc32.x86_64.rpm" + }, + "sha256:0608e0a9922e6748b39bd1719e2dabd6fe283b22cf590f1a3350327ae6c13561": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/containernetworking-plugins-0.8.5-1.1.gitf5c3d1b.fc32.x86_64.rpm" + }, + "sha256:08c41c10745c172c34880e384cf5cff014a9627f4895e59fa482948b27e2ce9e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-nft-1.8.4-7.fc32.x86_64.rpm" + }, + "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm" + }, + "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm" + }, + "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/findutils-4.7.0-3.fc32.x86_64.rpm" + }, + "sha256:0b7d24759aac33303ff4b101c111dea03ff2529efc95661140e22f629cc1ab7a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nftables-0.9.3-2.fc32.x86_64.rpm" + }, + "sha256:0bace0cf41921db39247c99bfccb228818b83b68c7b8be7c8c4a92ea298a9a29": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pkgconf-m4-1.6.3-3.fc32.noarch.rpm" + }, + "sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-tc-5.5.0-1.fc32.x86_64.rpm" + }, + "sha256:0d51c1319ee78978e6ea5a49b815c2078b4ffd4d575e98c70e54ca01c3390eb8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-8.2p1-2.fc32.x86_64.rpm" + }, + "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.x86_64.rpm" + }, + "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-3.0-3.fc32.x86_64.rpm" + }, + "sha256:0fc0193d95d69c780b6feb1cb74759ca2d4804701b3de936dac8429cfbe0f2e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-nftables-0.9.3-2.fc32.x86_64.rpm" + }, + "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-7.fc32.x86_64.rpm" + }, + "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-2.04-12.fc32.x86_64.rpm" + }, + "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/filesystem-3.14-2.fc32.x86_64.rpm" + }, + "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cpio-2.13-4.fc32.x86_64.rpm" + }, + "sha256:11d6aa88c7e5bbaad38353bbb557ad8370452cd258f2a0d16bfd490116138d67": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-network-050-26.git20200316.fc32.x86_64.rpm" + }, + "sha256:129adf9147d5d120546ca8e0fb5f165761106d386d366fe82591e372754d0b4a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-decorator-4.4.0-6.fc32.noarch.rpm" + }, + "sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.31-2.fc32.x86_64.rpm" + }, + "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gpgme-1.13.1-6.fc32.x86_64.rpm" + }, + "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-utils-3.0-3.fc32.x86_64.rpm" + }, + "sha256:14bd7e305e13795e0d37c613dfa3ead3a3219d28c32b27ad6527d3592361923d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libftdi-1.4-2.fc32.x86_64.rpm" + }, + "sha256:14cf772225c04c005add71372fce866e90f7144c27bbb8e846ce7887e0d286e0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/slirp4netns-0.4.3-6.0.dev.gita8414d1.fc32.x86_64.rpm" + }, + "sha256:150815dd62da40fee60ad5ceb988938c3be01e03aa54a025772b33a7a2c11311": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-tools-libs-5.6.6-300.fc32.x86_64.rpm" + }, + "sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/passwd-0.80-8.fc32.x86_64.rpm" + }, + "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pigz-2.4-6.fc32.x86_64.rpm" + }, + "sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-policycoreutils-3.0-2.fc32.noarch.rpm" + }, + "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-whence-20200316-106.fc32.noarch.rpm" + }, + "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gmp-6.1.2-13.fc32.x86_64.rpm" + }, + "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libblkid-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/diffutils-3.7-4.fc32.x86_64.rpm" + }, + "sha256:1a2f22eed83ef568021c464cce841ef98725b614093f2c518307e85d5b6e759b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwd-1.6-1.fc32.x86_64.rpm" + }, + "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.x86_64.rpm" + }, + "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libksba-1.3.5-11.fc32.x86_64.rpm" + }, + "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-2.26-7.fc32.x86_64.rpm" + }, + "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-5.2.5-1.fc32.x86_64.rpm" + }, + "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmnl-1.0.4-11.fc32.x86_64.rpm" + }, + "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-245.4-1.fc32.x86_64.rpm" + }, + "sha256:1ec84749250a0095d645f11fa0dcdf8c4500e0bbc303af696762a12616375757": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/greenboot-reboot-0.9-1.fc32.noarch.rpm" + }, + "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-32-1.noarch.rpm" + }, + "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libidn2-2.3.0-2.fc32.x86_64.rpm" + }, + "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-broker-22-1.fc32.x86_64.rpm" + }, + "sha256:2141f1dec8fe7a442c061f603bf4ee6203e10a290990789af0f4ef9db5523679": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bluez-mesh-5.54-1.fc32.x86_64.rpm" + }, + "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-repos-32-1.noarch.rpm" + }, + "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm" + }, + "sha256:2434cd04a437c06f59d67ee2580443c0ba676c39440cd0f74cca768ec57577f9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libluksmeta-9-7.fc32.x86_64.rpm" + }, + "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsecret-0.20.2-2.fc32.x86_64.rpm" + }, + "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm" + }, + "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libss-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-5.38-2.fc32.x86_64.rpm" + }, + "sha256:28d1118b3debda3daee76fc89f250576627a28b3ec39069256ddc212d993ddbc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/container-selinux-2.130.0-1.fc32.noarch.rpm" + }, + "sha256:28f4bcbf53258114ebbf0a167351d67e204ff6f717b49b3893c2372845e6bd0a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-1.8.4-7.fc32.x86_64.rpm" + }, + "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/unbound-libs-1.9.6-2.fc32.x86_64.rpm" + }, + "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsepol-3.0-3.fc32.x86_64.rpm" + }, + "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mpfr-4.0.2-3.fc32.x86_64.rpm" + }, + "sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/less-551-3.fc32.x86_64.rpm" + }, + "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tar-1.32-4.fc32.x86_64.rpm" + }, + "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm" + }, + "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:30c5f02ed28d59a4d72e020097602091bb8e34d65a6f3be69f4b1dd63a46f892": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/containers-common-0.1.41-1.fc32.x86_64.rpm" + }, + "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:317654c97a9dc11fe498b61d4189ff31cd1277250993d826e9bc5815d0485f29": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/flashrom-1.2-2.fc32.x86_64.rpm" + }, + "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-0.9.3-2.fc32.x86_64.rpm" + }, + "sha256:3343d9e7c90bd58e1e44ee07e7c59bb570ffc74da50f0607c5f5681a00b70e76": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/ostree-libs-2020.3-2.fc32.x86_64.rpm" + }, + "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-udev-245.4-1.fc32.x86_64.rpm" + }, + "sha256:342bdf0143d9145f8846e1b5c3401685e0d1274b66df39ac8cbfb78013313861": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-1.22.10-1.fc32.x86_64.rpm" + }, + "sha256:34411604a91c301dc8489285065c68f3a2f50910717097fedcaade6481c7469e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gobject-base-3.36.0-2.fc32.x86_64.rpm" + }, + "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-0.20.1-4.fc32.x86_64.rpm" + }, + "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.x86_64.rpm" + }, + "sha256:397f0b024d3c58ca6e174c6de5abcb19304d7c58903199e1e6fe02e84d5bcb3a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gdisk-1.0.5-1.fc32.x86_64.rpm" + }, + "sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/chrony-3.5-8.fc32.x86_64.rpm" + }, + "sha256:39961756e07f6f49ddf2ff277dc04a63fa4d5b4fb035480945bd2f665ba1dd4d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libell-0.30-1.fc32.x86_64.rpm" + }, + "sha256:3ab2173d9d4016febcdaf283408f9939d0a7b2fdba3e46a2d45fbef88a1463a0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/greenboot-status-0.9-1.fc32.noarch.rpm" + }, + "sha256:3afab9512fd4d56a13c95b530c805ac8b2bc872572ec5bb435eccdd59fbbc8b6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnftnl-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64.rpm" + }, + "sha256:3b76bc46dd279404408d34946cfdb0c3899359a1c6b48e614e63d1259a94262a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lvm2-2.03.09-1.fc32.x86_64.rpm" + }, + "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm" + }, + "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/npth-1.6-4.fc32.x86_64.rpm" + }, + "sha256:3cd56dea57c00e2c4a9d5aac69a1e843ebef581ba76dde9d9878082fa1215485": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-python-utils-3.0-2.fc32.noarch.rpm" + }, + "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm" + }, + "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.x86_64.rpm" + }, + "sha256:3f7861ea2d8b4380b567f629a86fa31951a55f46f6eee017cb84ed87baf2c19e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zram-0.4-1.fc32.noarch.rpm" + }, + "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm" + }, + "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-27-1.fc32.x86_64.rpm" + }, + "sha256:42fcfac5037eab4099648e0f0ed3eb2aec6eb6a23a9e3808f9b69619ea7c44e3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nss-altfiles-2.18.1-16.fc32.x86_64.rpm" + }, + "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-40.fc32.x86_64.rpm" + }, + "sha256:4375c398dff722a29bd1700bc8dc8b528345412d1e17d8d9d1176d9774962957": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lzo-2.10-2.fc32.x86_64.rpm" + }, + "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcom_err-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:449d2888d6b835d207a55a2d9b4478eff1b926581fcead6260b6508e4db1b782": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-readline5-5.2-36.fc32.x86_64.rpm" + }, + "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-2.fc32.x86_64.rpm" + }, + "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.x86_64.rpm" + }, + "sha256:45132e53c649def28d63c199d8c3a3b9fd16fa8bca7426ad4e9c202e52a233b4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-common-3.9.1-1.fc32.x86_64.rpm" + }, + "sha256:4546444c0647efaa8fa8bf604ace7f7dbd152e74761b8d7a11fa185bc72bece8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/greenboot-rpm-ostree-grub2-0.9-1.fc32.noarch.rpm" + }, + "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/os-prober-1.77-4.fc32.x86_64.rpm" + }, + "sha256:4659e7b76850ce5dedbe80fb0a64947e83f15f907b35c5819d91be6ed0523653": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwl3160-firmware-25.30.13.0-106.fc32.noarch.rpm" + }, + "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-4.fc32.x86_64.rpm" + }, + "sha256:47538b1db9720be4699329a8da32d873187d0c6c22f45252614ac5b8a8312482": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/firewalld-filesystem-0.8.2-2.fc32.noarch.rpm" + }, + "sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qemu-img-4.2.0-7.fc32.x86_64.rpm" + }, + "sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-config-generic-050-26.git20200316.fc32.x86_64.rpm" + }, + "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcc-10.0.1-0.11.fc32.x86_64.rpm" + }, + "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm" + }, + "sha256:4a7b63b32f176b8861f6ac7363bc8010caea0c323eaa83167227118f05603022": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pkgconf-pkg-config-1.6.3-3.fc32.x86_64.rpm" + }, + "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pam-1.3.1-24.fc32.x86_64.rpm" + }, + "sha256:4cd01a3135b9e72906eaf4552e29929334dcccee2ed092a38bf60698522ecd5f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rng-tools-6.9-3.fc32.x86_64.rpm" + }, + "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shadow-utils-4.8.1-2.fc32.x86_64.rpm" + }, + "sha256:4eb6a2e34173a2b6ca7db031cecce56c0bed711691abf1c8d6bfe6cb7ca45dc0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmbim-utils-1.22.0-1.fc32.x86_64.rpm" + }, + "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.x86_64.rpm" + }, + "sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libndp-1.7-5.fc32.x86_64.rpm" + }, + "sha256:4fca21cfdcbed052e3e9e1eff74c22fb8ffb1fbbeb63e87e2aa540e43a8c0d09": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/v/vim-minimal-8.2.525-1.fc32.x86_64.rpm" + }, + "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-unbound-1.9.6-2.fc32.x86_64.rpm" + }, + "sha256:52fe378ffab317ec4d26ae5fc0389dec874002a8d70a9413cefb68c7b16b0612": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/protobuf-c-1.3.2-2.fc32.x86_64.rpm" + }, + "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-common-8.32-3.fc32.1.x86_64.rpm" + }, + "sha256:536a157da5332c0bdacb3e5891e3012b79b18fcdedb63b393110d6eb8b04e428": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/podman-plugins-1.8.2-2.fc32.x86_64.rpm" + }, + "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-9.fc32.x86_64.rpm" + }, + "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gzip-1.10-2.fc32.x86_64.rpm" + }, + "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsemanage-3.0-3.fc32.x86_64.rpm" + }, + "sha256:55bafcdf9c31b1456af3bf584bfe7ac745a03f4decd17197ea97b498d68b3b82": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libsemanage-3.0-3.fc32.x86_64.rpm" + }, + "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-libs-27-1.fc32.x86_64.rpm" + }, + "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libassuan-2.5.3-3.fc32.x86_64.rpm" + }, + "sha256:599549d72d26b48c45156585a5698898c853e56469142e202d3749b781428465": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:59be778afcf464d79f7dc440d6b49de8a9527fd73e7b514573d389bf8a51b246": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/criu-3.13-5.fc32.x86_64.rpm" + }, + "sha256:5a4c0187b96690e0088057f7656c67d399fad44b28b86644e3434c581377c229": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libproxy-0.4.15-17.fc32.x86_64.rpm" + }, + "sha256:5ad0d1b4e641e5d2fe7f6385ace0f827a431c5a52c6dc3516d85e655caca880f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libqmi-1.24.8-1.fc32.x86_64.rpm" + }, + "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-20200316-106.fc32.noarch.rpm" + }, + "sha256:5c91890bf33527b9fb422cbed17600e761750a4e596fad3f0d0fa419070e82b0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pkgconf-1.6.3-3.fc32.x86_64.rpm" + }, + "sha256:5d520576b7ac63cb029c4b0b86398e2b71589df3bafa618018b3729d81036203": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/clevis-dracut-12-2.fc32.x86_64.rpm" + }, + "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:5d933f9bf444d4c8732caa65e9227b27127c625840859a0453a32a5719916f48": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwl2030-firmware-18.168.6.1-106.fc32.noarch.rpm" + }, + "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm" + }, + "sha256:5e7a16df5bdfab2acfd8ac061827ace0642f2e5521689d6b9f0812f2a6ece231": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-iot-32-1.noarch.rpm" + }, + "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-3.fc32.x86_64.rpm" + }, + "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:5fc2fd0cb5b6fdce1203e43d6f2df6a3098ec9522b04815d896ecedbb1489063": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glib-networking-2.64.1-1.fc32.x86_64.rpm" + }, + "sha256:605c3cf38451c6b93f331b605ab03ca611e37aa11d14a4019de61278add04f74": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/ModemManager-glib-1.12.8-1.fc32.x86_64.rpm" + }, + "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm" + }, + "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.x86_64.rpm" + }, + "sha256:624b9079b4a571218adced203e19bdaca1d2cf57891f9653f409dd1db92fbf86": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/clevis-12-2.fc32.x86_64.rpm" + }, + "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcroco-0.6.13-3.fc32.x86_64.rpm" + }, + "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mkpasswd-5.5.6-1.fc32.x86_64.rpm" + }, + "sha256:64567be564634937bd918d33a3f04017808d29269a5b0891a0f4d4aecad6161b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsysfs-2.1.0-28.fc32.x86_64.rpm" + }, + "sha256:64922311f45700f2f4f98d78efbdfa240987a6a2b1396ffe694d30e2b5f34ac3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libqmi-utils-1.24.8-1.fc32.x86_64.rpm" + }, + "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libattr-2.4.48-8.fc32.x86_64.rpm" + }, + "sha256:65e5209398c6b2c196cb42f3bc3f82e00af1026f623026857a9b330ec92d0330": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwl100-firmware-39.31.5.1-106.fc32.noarch.rpm" + }, + "sha256:66bb5b2e99d2c74b82943fe61fe9b9a3674350b0242f69a6854ec9718dcf5e07": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:6749bd0b96339c32b57635b69b474583b50c94e4bbaa3eb8753fa604b9d1c521": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ignition-2.2.1-3.git2d3ff58.fc32.x86_64.rpm" + }, + "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-10.34-9.fc32.x86_64.rpm" + }, + "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm" + }, + "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-5.3.28-40.fc32.x86_64.rpm" + }, + "sha256:6952dfc6a8f583c9aeafb16d5d34208d7e39fd7ec8628c5aa8ccde039acbe548": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpkgconf-1.6.3-3.fc32.x86_64.rpm" + }, + "sha256:699c1a3ff311bbaa2380c085fb4f516aa08be474bed02bcd1569d0bbf5b22d07": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-client-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.x86_64.rpm" + }, + "sha256:6a3282927f525629bc0aaf4090e108d33b0709d3d5b35bc442000c2837e7b9b4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iputils-20190515-5.fc32.x86_64.rpm" + }, + "sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dbus-1.2.16-1.fc32.x86_64.rpm" + }, + "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-10.fc32.x86_64.rpm" + }, + "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/curl-7.69.1-1.fc32.x86_64.rpm" + }, + "sha256:6f5f53b66f7c3bf6958f6f163788583265ff0360188620c3b0f7ddedeac3d1f4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setools-4.3.0-1.fc32.x86_64.rpm" + }, + "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tss2-1331-4.fc32.x86_64.rpm" + }, + "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm" + }, + "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glib2-2.64.1-1.fc32.x86_64.rpm" + }, + "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-8.32-3.fc32.1.x86_64.rpm" + }, + "sha256:703fb5ca1651bb72d8ab58576ce3d78c9479cbb2e78ff8666ae3a3d1cd9bb0da": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/checkpolicy-3.0-3.fc32.x86_64.rpm" + }, + "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/acl-2.2.53-5.fc32.x86_64.rpm" + }, + "sha256:70794c8537fb3cf197f051cfce3b23956d587062daf114f8480770754804f339": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/greenboot-0.9-1.fc32.noarch.rpm" + }, + "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm" + }, + "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libusbx-1.0.23-1.fc32.x86_64.rpm" + }, + "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm" + }, + "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-pam-245.4-1.fc32.x86_64.rpm" + }, + "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grep-3.3-4.fc32.x86_64.rpm" + }, + "sha256:769e34caae25f05786ae53e535c6e3c64f5c548f06c422325d68598b7abb99b7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/conmon-2.0.14-1.fc32.x86_64.rpm" + }, + "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-libs-245.4-1.fc32.x86_64.rpm" + }, + "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:79e22d23ba0a156b3d74ec4b0da8fd71bc632386366ade2c48006ba82074055d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwl105-firmware-18.168.6.1-106.fc32.noarch.rpm" + }, + "sha256:7a525abda7230bfbc87763dfe58bf7684e385b3c78ca242a1685a589300909e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-persistent-data-0.8.5-3.fc32.x86_64.rpm" + }, + "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bash-5.0.11-2.fc32.x86_64.rpm" + }, + "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libevent-2.1.8-8.fc32.x86_64.rpm" + }, + "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-4.4.16-1.fc32.x86_64.rpm" + }, + "sha256:7c21c21c3e3dbace06bee03fe4835ae6cb1e3ef86750ba2853f39d40dead2309": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipset-7.6-1.fc32.x86_64.rpm" + }, + "sha256:7c7eff31251dedcc3285a8b08c1b18f7fd9ee2e07dff86ad090f45a81e19e85e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-pkla-compat-0.1-16.fc32.x86_64.rpm" + }, + "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libargon2-20171227-4.fc32.x86_64.rpm" + }, + "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm" + }, + "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pinentry-1.1.0-7.fc32.x86_64.rpm" + }, + "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcurl-7.69.1-1.fc32.x86_64.rpm" + }, + "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.x86_64.rpm" + }, + "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-2.04-12.fc32.x86_64.rpm" + }, + "sha256:80cf220a3314f965c088e03d2b750426767db0b36b6b7c5e8059b9217ff4de6d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mozjs60-60.9.0-5.fc32.x86_64.rpm" + }, + "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:824fe37d58cadac2f23678c9eb95c29b4acb1852df97cf799e77aa7e8034b54e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgudev-232-7.fc32.x86_64.rpm" + }, + "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/which-2.21-19.fc32.x86_64.rpm" + }, + "sha256:83a08b7066000ebbdf8a6c5706485a19b5dfe2d492b1faaac1922e8f0c42cd0c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwl6050-firmware-41.28.5.1-106.fc32.noarch.rpm" + }, + "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuuid-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.x86_64.rpm" + }, + "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-libs-5.2.5-1.fc32.x86_64.rpm" + }, + "sha256:84c338b327a3fb2f6edb79caa2242804fff8c83ffa3db0d9227f55eef4107b2a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/setools-console-4.3.0-1.fc32.x86_64.rpm" + }, + "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-2.9.6-22.fc32.x86_64.rpm" + }, + "sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-5.5.0-1.fc32.x86_64.rpm" + }, + "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:86acbe8d77b05c1fe9bb0168443a579b1d4538f9733813db4e72e4a4a2be29e3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgusb-0.3.4-1.fc32.x86_64.rpm" + }, + "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libffi-3.1-24.fc32.x86_64.rpm" + }, + "sha256:872639e4ccb4f1c5de66d5eaa85ca673141b10e3d614b33c84ff887c228d465d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/jitterentropy-2.2.0-2.fc32.x86_64.rpm" + }, + "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fonts-filesystem-2.0.3-1.fc32.noarch.rpm" + }, + "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.x86_64.rpm" + }, + "sha256:88d283c2d5aa96c2b0899f6bd6c0409a5d5c6fda2958e8eae19eb49c3ede58d6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwl5150-firmware-8.24.2.2-106.fc32.noarch.rpm" + }, + "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libarchive-3.4.2-1.fc32.x86_64.rpm" + }, + "sha256:89c972ec7d2ab305c91c23bc248562c76f0ae645a9ed9f94d312e2f57c4d38fe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-5.6.6-300.fc32.x86_64.rpm" + }, + "sha256:89f85f749bfee7d083c84845e908a3471297a3d8a75f7397903d15eb7f403297": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwl6000-firmware-9.221.4.1-106.fc32.noarch.rpm" + }, + "sha256:8a03d482b5294f7452b2f9ce31ebb6aea9eefac002281c1b9152fbb1a0341987": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/json-glib-1.4.4-4.fc32.x86_64.rpm" + }, + "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/popt-1.16-19.fc32.x86_64.rpm" + }, + "sha256:8aa8258a1a13c1120d6c28321f618385111cb9363dae09eea2e4af481053e28b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-event-libs-1.02.171-1.fc32.x86_64.rpm" + }, + "sha256:8b148415fb6a583ef131d0ddff44f3209c30d0299fde7b20cd3ea385590927c1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-clients-8.2p1-2.fc32.x86_64.rpm" + }, + "sha256:8c560f3927e36e41657067e4bdc741fd8f3b55b497f0fc3c2331fb361ba8de8b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tpm2-tools-4.1-2.fc32.x86_64.rpm" + }, + "sha256:8df8541abd806578e43fe28a7ea2c41efbbb813866bed35fabe779274790a538": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse3-3.9.1-1.fc32.x86_64.rpm" + }, + "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-3.0-2.fc32.x86_64.rpm" + }, + "sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnl3-3.5.0-2.fc32.x86_64.rpm" + }, + "sha256:8ee8c4bbf024b998ffb77a6b4194a2306ac21c5a6fcf70c8c81a0fbf38f7c7fc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-firewall-0.8.2-2.fc32.noarch.rpm" + }, + "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/expat-2.2.8-2.fc32.x86_64.rpm" + }, + "sha256:907393755387a351806ec2afff376e7491f177116caadd12f07d0fcbed796750": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-8.fc32.x86_64.rpm" + }, + "sha256:90bc2171f438ffa7488a9c69cd86bb1de175807be468f285c8ca16cf8dd4a83c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tpm2-tss-2.4.0-1.fc32.x86_64.rpm" + }, + "sha256:9194788f87e4a1aa8835f1305d290cc2cd67cee6a5b1ab82643d3a068c0145b6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/y/yajl-2.1.0-14.fc32.x86_64.rpm" + }, + "sha256:929f1c5ce4775b28439a1b5726e98c38204930d5880dc6096fc56e8d3eab275f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-overlayfs-0.7.8-1.fc32.x86_64.rpm" + }, + "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm" + }, + "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre-8.44-1.fc32.x86_64.rpm" + }, + "sha256:9369d4fed30402f45705b7a5cb51b6eeefb1dabbe0942c84514c6fdf1edac5e0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-2.9.9-9.fc32.x86_64.rpm" + }, + "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsigsegv-2.11-10.fc32.x86_64.rpm" + }, + "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfdisk-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libzstd-1.4.4-2.fc32.x86_64.rpm" + }, + "sha256:95a89032291b05a0e483f336ea29897d951e8845b0f347a4117de90ef3ef3467": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/microcode_ctl-2.1-35.fc32.x86_64.rpm" + }, + "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.x86_64.rpm" + }, + "sha256:96e0c019cb91d8deefb7664cfe417807d23562d2a1bfd2cbfd1051e243136b57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/screen-4.8.0-2.fc32.x86_64.rpm" + }, + "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm" + }, + "sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/jansson-2.12-5.fc32.x86_64.rpm" + }, + "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.x86_64.rpm" + }, + "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-050-26.git20200316.fc32.x86_64.rpm" + }, + "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/util-linux-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libs-0.179-1.fc32.x86_64.rpm" + }, + "sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libedit-3.1-32.20191231cvs.fc32.x86_64.rpm" + }, + "sha256:9a2beeeede69d8910115608c2d98efa6a8dba73ab2df246df5b0f10e2fa37f54": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-event-1.02.171-1.fc32.x86_64.rpm" + }, + "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm" + }, + "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgpg-error-1.36-3.fc32.x86_64.rpm" + }, + "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libyaml-0.2.2-3.fc32.x86_64.rpm" + }, + "sha256:9cf9b01f2c727e3576a8aa71fd7fe1bf4ec9ed1c9f50b756657cf9aeae18418f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mokutil-0.3.0-15.fc32.x86_64.rpm" + }, + "sha256:9d220d8ee28cd0adf28e8fef547af92c3ec66e238747165939cf8e1a413ddf83": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-ostree-libs-2020.1-1.fc32.x86_64.rpm" + }, + "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnutls-3.6.13-1.fc32.x86_64.rpm" + }, + "sha256:9dcc75ac945924ce496c9280e7ac31b88886d94a6494d0710725a81dd9d42c9a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/wpa_supplicant-2.9-3.fc32.x86_64.rpm" + }, + "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-6.fc32.x86_64.rpm" + }, + "sha256:9ebc5843faeb852bbbe3d53f03182197f6595a928ffa3f5d7a530749ee1e4ec8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmodman-2.0.1-21.fc32.x86_64.rpm" + }, + "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpwquality-1.4.2-2.fc32.x86_64.rpm" + }, + "sha256:9ee276ed9d036a4483bb8d1bd6f6d697b161a04276c6ce5f1d3f40d48e04bccb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/keyutils-1.6-4.fc32.x86_64.rpm" + }, + "sha256:9fa1959637c902dfeb19a0f16c7f42f7da4aab293f7c025c66d39debad6dbc34": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/luksmeta-9-7.fc32.x86_64.rpm" + }, + "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-2.2.0-1.fc32.x86_64.rpm" + }, + "sha256:a1613e90865db93fb578b8ee1a4ee40bd396c6c9f2fb2a14757acacecb9f23e8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-core-5.6.6-300.fc32.x86_64.rpm" + }, + "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-common-32-1.noarch.rpm" + }, + "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shared-mime-info-1.15-3.fc32.x86_64.rpm" + }, + "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm" + }, + "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm" + }, + "sha256:a3f80bb7068618dff795b3e0a3d32fa3c640e492c8f175b16bb3c7ff64a88a8e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwl7260-firmware-25.30.13.0-106.fc32.noarch.rpm" + }, + "sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libaio-0.3.111-7.fc32.x86_64.rpm" + }, + "sha256:a4706de7a0d59f2b1e9e73f48c4279429676410c77fb93f82abf1b7b34330f82": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-8.fc32.noarch.rpm" + }, + "sha256:a7452c18c2cffc266ec36c54105b884c4d63181f20cebd705e33730534cb9093": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libvarlink-util-18-3.fc32.x86_64.rpm" + }, + "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm" + }, + "sha256:a7deef0a324ccb272a25f5eb6b30c72d0a842bf2c602c31fe3b60f984b2e50af": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/efibootmgr-16-7.fc32.x86_64.rpm" + }, + "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxml2-2.9.10-3.fc32.x86_64.rpm" + }, + "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnghttp2-1.40.0-2.fc32.x86_64.rpm" + }, + "sha256:a9d5719cf5d4fdc4ae28099d623a751b0470264e7d2280be2669a066348b4ce1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/abattis-cantarell-fonts-0.201-2.fc32.noarch.rpm" + }, + "sha256:aa353206ef29b7d908554ccb7cd6f4c01a1f6c3c1c6358abb7452f4a745939d0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-efi-x64-2.04-12.fc32.x86_64.rpm" + }, + "sha256:aa5b658fd4a95c724b61eddadecdbcbc1b2a813ae681318ab092a2ed03954825": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmodulemd1-1.8.16-2.fc32.x86_64.rpm" + }, + "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/librepo-1.11.1-4.fc32.x86_64.rpm" + }, + "sha256:aac9be36fc9c345245b4a0db66bfb9ff8df25e36ae0c1ae89eca9bcf88e052e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcab1-1.4-2.fc32.x86_64.rpm" + }, + "sha256:ab4c27523d6b5a0df75febac43cafa2dd9897dc3c1bb2f0d6990ca603b6168fe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse3-libs-3.9.1-1.fc32.x86_64.rpm" + }, + "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbrotli-1.0.7-10.fc32.x86_64.rpm" + }, + "sha256:ad50ed0c4f4c956e3b59ac9fc7bf5fba22068a661ea75a46eb81bc2209af4cc5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxmlb-0.1.14-2.fc32.x86_64.rpm" + }, + "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.x86_64.rpm" + }, + "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openldap-2.4.47-4.fc32.x86_64.rpm" + }, + "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.x86_64.rpm" + }, + "sha256:af18c71bca1121ac3cdeace9f7249079ee0568fcbb15ca7e46131fa9b9b521f8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bluez-libs-5.54-1.fc32.x86_64.rpm" + }, + "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm" + }, + "sha256:af66820023c984d8b981ecac715d0c2daec1f89dcb69bed76ddf58b0ee80c1b1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm" + }, + "sha256:b09015ae5fb5772b73bc7932991aaf6e1f6d509432af605a565ef53d2d50606a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsoup-2.70.0-1.fc32.x86_64.rpm" + }, + "sha256:b1111e77a5fdbacaa04acc90d3844706158bc5892173862928705620b8910adb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm" + }, + "sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcbor-0.5.0-7.fc32.x86_64.rpm" + }, + "sha256:b286141f38cd88b8c632515677423f49c81365f2ae99c5a7906205f35a273fb2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwl135-firmware-18.168.6.1-106.fc32.noarch.rpm" + }, + "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-6.1-15.20191109.fc32.x86_64.rpm" + }, + "sha256:b3201777d78ee13ee45ddbd982af5999ce058907b5dc552669644931b79c5f51": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgpiod-utils-1.5.1-1.fc32.x86_64.rpm" + }, + "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpcap-1.9.1-3.fc32.x86_64.rpm" + }, + "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-4.fc32.x86_64.rpm" + }, + "sha256:b359ca3cdc68b6e5031f65975df38a8b96c19ddc4c367e1e3463fc8484a0b3b7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnet-1.1.6-19.fc32.x86_64.rpm" + }, + "sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuser-0.62-24.fc32.x86_64.rpm" + }, + "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-ng-0.7.10-2.fc32.x86_64.rpm" + }, + "sha256:b67f1634acc7b84b284bda8afeef546aed4a3388dc7df67417001704aa444af1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/btrfs-progs-5.6-1.fc32.x86_64.rpm" + }, + "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-5.fc32.x86_64.rpm" + }, + "sha256:b743aafa82f3326f8f2e6d5464ae7fa57fabab3ad791099eaf2d151b43208b42": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/efi-filesystem-4-4.fc32.noarch.rpm" + }, + "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-3.8.2-2.fc32.x86_64.rpm" + }, + "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm" + }, + "sha256:b8ecd7fa0e7e072828e374dfb0d61bb8eecca7c190f3661050cee5e3fc8854b4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/firewalld-0.8.2-2.fc32.noarch.rpm" + }, + "sha256:b98687828b1d222ea73ebb8457450913dac58dd0be2e430a93bb7e98ba816505": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-modules-5.6.6-300.fc32.x86_64.rpm" + }, + "sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/initscripts-10.02-3.fc32.x86_64.rpm" + }, + "sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/psmisc-23.3-3.fc32.x86_64.rpm" + }, + "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsolv-0.7.11-2.fc32.x86_64.rpm" + }, + "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.x86_64.rpm" + }, + "sha256:bfeba60bfb137f270e3b28db96ecfe8b226ea05e1761f6cb5ccc64c48c73c748": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bluez-5.54-1.fc32.x86_64.rpm" + }, + "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nettle-3.5.1-5.fc32.x86_64.rpm" + }, + "sha256:c07fd5357963f99610bc676b25f1dfcbf1bae0b63538b5e1cd82ce42b79fd819": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bash-completion-2.8-8.fc32.noarch.rpm" + }, + "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zlib-1.2.11-21.fc32.x86_64.rpm" + }, + "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-1.02.171-1.fc32.x86_64.rpm" + }, + "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.x86_64.rpm" + }, + "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.x86_64.rpm" + }, + "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.04-12.fc32.noarch.rpm" + }, + "sha256:c3e2a3c23288899456fb996f3074c10637bcd4886bc446698cb1efa2734c1e4d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/traceroute-2.1.0-10.fc32.x86_64.rpm" + }, + "sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dosfstools-4.1-10.fc32.x86_64.rpm" + }, + "sha256:c50ff544430830086ce484b20a2b6eaa934c82b6277a6f4fb02fc8cbc9e25db7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/runc-1.0.0-144.dev.gite6555cc.fc32.x86_64.rpm" + }, + "sha256:c55b30a3a8c0d36a219953e20960185263ae63dada0f050446066be1e873ce08": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/clevis-luks-12-2.fc32.x86_64.rpm" + }, + "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/alternatives-1.11-6.fc32.x86_64.rpm" + }, + "sha256:c8daa43a4504f9a4b6c106baf8a56aa0d256fc3c71bd417ea75b9c7fd830a9b7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgpiod-1.5.1-1.fc32.x86_64.rpm" + }, + "sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-26.fc32.x86_64.rpm" + }, + "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rootfiles-8.1-27.fc32.noarch.rpm" + }, + "sha256:caa3625b22908cf4f91faf2c281b0e7ab7d981c35ed1d761deb53b7b78d13cf8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwl2000-firmware-18.168.6.1-106.fc32.noarch.rpm" + }, + "sha256:cb0c64cc81e0b384bbc9d27ffcb2a655b13c91a799aad8972264aed1767926a3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-slip-dbus-0.6.4-19.fc32.noarch.rpm" + }, + "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.16-1.fc32.x86_64.rpm" + }, + "sha256:cbfc109588fa0e34bdc408dbb37dadf7873fb5788dd3fd8cd04c17c75f26e6db": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsmbios-2.4.2-7.fc32.x86_64.rpm" + }, + "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-2.2.19-1.fc32.x86_64.rpm" + }, + "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-4.fc32.x86_64.rpm" + }, + "sha256:ccdfb24da56aa394a64cf2f0c6ac6d15d0ebd6054686bd2ab27641a5502329be": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/podman-1.8.2-2.fc32.x86_64.rpm" + }, + "sha256:cd01ae91895e60f189106a159bb551f906a8b663110f421ad6ee83c9e008851e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bubblewrap-0.4.1-1.fc32.x86_64.rpm" + }, + "sha256:cd5d539fd0c469f2ebae012a9a8f2ed280363c355f205edc8fc735678ac0adb8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-wwan-1.22.10-1.fc32.x86_64.rpm" + }, + "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpsl-0.21.0-4.fc32.x86_64.rpm" + }, + "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm" + }, + "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gawk-5.0.1-7.fc32.x86_64.rpm" + }, + "sha256:d1a369d501e3ce1c17d06418c9cd57c4ada551ecc3b45a581e162215e8bd77f5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gsettings-desktop-schemas-3.36.0-1.fc32.x86_64.rpm" + }, + "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.x86_64.rpm" + }, + "sha256:d1e244b8b5ce7404846e97d96c762c8c18ff6447301f6fc63f50e615029aa7cd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-server-8.2p1-2.fc32.x86_64.rpm" + }, + "sha256:d2abba1a0523bd9df5073900593ab13ec2ed2e391440be4d883314fa154370f8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-slip-0.6.4-19.fc32.noarch.rpm" + }, + "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/json-c-0.13.1-9.fc32.x86_64.rpm" + }, + "sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-libs-0.116-7.fc32.x86_64.rpm" + }, + "sha256:d49f0b1c8ecf9bc808ae93e9298a40fbcc124fe67c3bbdd37705b6b5d8cfdd87": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-0.116-7.fc32.x86_64.rpm" + }, + "sha256:d5acde111b4cafc918decc8b9c530c9a7dfd6cc77b75538d33b32478219ae5da": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crun-0.13-1.fc32.x86_64.rpm" + }, + "sha256:d61ea8b6299f00397f740b73de146ef4daa6d6bb5863d525459765fa0f23a991": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/wpan-tools-0.9-4.fc32.x86_64.rpm" + }, + "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgomp-10.0.1-0.11.fc32.x86_64.rpm" + }, + "sha256:d74b76ce8c2c7306cc3f012d1ec56b1d5c67788748f56ecd505f257d342f97ee": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbsd-0.10.0-2.fc32.x86_64.rpm" + }, + "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-1.1.1d-7.fc32.x86_64.rpm" + }, + "sha256:d7f57b9190c9cf05c36fe9fb3229330cdb9f0a1af1214a47b0a38dcc8ce929ee": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwl5000-firmware-8.83.5.1_1-106.fc32.noarch.rpm" + }, + "sha256:d7fec1fb54953f1901cc505c225af94cb61f2206d0503be12313169a4b915e18": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/jose-10-6.fc32.x86_64.rpm" + }, + "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-2.31-2.fc32.x86_64.rpm" + }, + "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsmartcols-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:de74076fc5073ad07ffa78fed6e7cd8f10133d99c1c73149b4ac74428699a6d1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmbim-1.22.0-1.fc32.x86_64.rpm" + }, + "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-0.23.20-1.fc32.x86_64.rpm" + }, + "sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/h/hostname-3.23-2.fc32.x86_64.rpm" + }, + "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libseccomp-2.4.2-3.fc32.x86_64.rpm" + }, + "sha256:df174a90fd6bd3f9fae3b75433ae7f1869ff2db7102667fb243c8aede5b858d3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-wifi-1.22.10-1.fc32.x86_64.rpm" + }, + "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-libs-5.38-2.fc32.x86_64.rpm" + }, + "sha256:e0f9c4327d62e35ee2a066c95dfa37f86021b405515d0f902b72a7437b7b98e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-2.3.0-1.fc32.x86_64.rpm" + }, + "sha256:e2566356943c1c7485d206b858dd6ae3be37c28bfec2a43f869193f3b5b9cd23": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nmap-ncat-7.80-3.fc32.x86_64.rpm" + }, + "sha256:e291d6c021eaa01cc3c446b76c94aafde444936b8ba3f08a7fe7cbe66a23366b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-tools-5.6.6-300.fc32.x86_64.rpm" + }, + "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/krb5-libs-1.18-1.fc32.x86_64.rpm" + }, + "sha256:e40be03bd5808e640bb5fb18196499680a7b7b1d3fce47617f987baee849c0e5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dmidecode-3.2-5.fc32.x86_64.rpm" + }, + "sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sudo-1.9.0-0.1.b4.fc32.x86_64.rpm" + }, + "sha256:e5efc87172d7081559137feaa221047385a5e248ffafd9794c2bfc73b61f8f37": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pciutils-libs-3.6.4-1.fc32.x86_64.rpm" + }, + "sha256:e712179ba8b9b6e93d14c902a6d6a390ba142153384dab9291c808a447b7ed0c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnsmasq-2.80-14.fc32.x86_64.rpm" + }, + "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmount-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-common-2.31-2.fc32.x86_64.rpm" + }, + "sha256:e851ba0019baa83e1bebbe92e1a1cf629694ccf3b42c5ff84e0ed7bea74931d3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lvm2-libs-2.03.09-1.fc32.x86_64.rpm" + }, + "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcomps-0.1.14-4.fc32.x86_64.rpm" + }, + "sha256:ea5f929563fb9ca0cf08da250c62c93d4755f4a41c1aca23eeeaf3e58e90d766": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tmux-3.0a-2.fc32.x86_64.rpm" + }, + "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.x86_64.rpm" + }, + "sha256:ebbace15f986288bba7681f44a111b14bcc7cae00b7a1faadaa838bd51897357": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfido2-1.3.1-1.fc32.x86_64.rpm" + }, + "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm" + }, + "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libs-3.8.2-2.fc32.x86_64.rpm" + }, + "sha256:ec64add7d60a70fbaf14a083929f22bd2637c33d20d2a30b7e842caa6040f817": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/ostree-2020.3-2.fc32.x86_64.rpm" + }, + "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.x86_64.rpm" + }, + "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-1.12.16-4.fc32.x86_64.rpm" + }, + "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libverto-0.3.0-9.fc32.x86_64.rpm" + }, + "sha256:ee1681ee1ae6a3f86a876562939fbfe415ba78b0a803059e1b6d6cd63b0fa1a3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shim-x64-15-8.x86_64.rpm" + }, + "sha256:ee664c392a97cdd272f57980c6856b2c57567005fa0ad9cb16c388b645d014f1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-ostree-2020.1-1.fc32.x86_64.rpm" + }, + "sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm" + }, + "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.x86_64.rpm" + }, + "sha256:f14d3b113e2c3ba3f8ab7a8146439924f38487c20dd533062616f17f500ff46b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/skopeo-0.1.41-1.fc32.x86_64.rpm" + }, + "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/readline-8.0-4.fc32.x86_64.rpm" + }, + "sha256:f2715fc8a04d33716f40f5b34466e082140df7ff3b7b972c29655d4dfc6e3a72": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-8.fc32.x86_64.rpm" + }, + "sha256:f36550dfc144e4608da672616fa44b2f2341f99bb38972e66e4a8fef4b59172c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-minimal-langpack-2.31-2.fc32.x86_64.rpm" + }, + "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-7.fc32.x86_64.rpm" + }, + "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libelf-0.179-1.fc32.x86_64.rpm" + }, + "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-libs-1.8.4-7.fc32.x86_64.rpm" + }, + "sha256:f60fc561675e41ffa2c48b229960291e2438441d5ed758c1f28cb06b5d4e4ea9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipset-libs-7.6-1.fc32.x86_64.rpm" + }, + "sha256:f729c554ed4ac6335a548380a6f6335a332a3a2aca5321a322415a208701607d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbxtool-8-11.fc32.x86_64.rpm" + }, + "sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libselinux-3.0-3.fc32.x86_64.rpm" + }, + "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libacl-2.2.53-5.fc32.x86_64.rpm" + }, + "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmodulemd-2.9.1-1.fc32.x86_64.rpm" + }, + "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libutempter-1.1.6-18.fc32.x86_64.rpm" + }, + "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdnf-0.45.0-3.fc32.x86_64.rpm" + }, + "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libunistring-0.9.10-7.fc32.x86_64.rpm" + }, + "sha256:fbaf44214a3e93d4bdccb1519768849db5ea204c886df851b49f107e0c443e4a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/greenboot-grub2-0.9-1.fc32.noarch.rpm" + }, + "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kpartx-0.8.2-3.fc32.x86_64.rpm" + }, + "sha256:fc8a8027325828861bae0c41d2582d61f8cb4b9ed42a50e49c57939eabcad1b7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/ModemManager-1.12.8-1.fc32.x86_64.rpm" + }, + "sha256:fd2a2dd726d855f877296227fb351883d647df28b1b0085f525d87df622d49e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.22.10-1.fc32.x86_64.rpm" + }, + "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-4.fc32.x86_64.rpm" + }, + "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.x86_64.rpm" + }, + "sha256:ff44071d53a2ed543c2ddad99cca8fc25493cbefc5d7ad869f9b6dbda340a465": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libjose-10-6.fc32.x86_64.rpm" + }, + "sha256:ff5dd4d0c157cf1be9c8dbddce06640c67b2d02ae5a48d6b108bd70fc5c96211": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fwupd-1.3.9-2.fc32.x86_64.rpm" + }, + "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sed-4.5-5.fc32.x86_64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "checksum": "sha256:cd01ae91895e60f189106a159bb551f906a8b663110f421ad6ee83c9e008851e", + "check_gpg": true + }, + { + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "checksum": "sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec", + "check_gpg": true + }, + { + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "checksum": "sha256:9369d4fed30402f45705b7a5cb51b6eeefb1dabbe0942c84514c6fdf1edac5e0", + "check_gpg": true + }, + { + "checksum": "sha256:45132e53c649def28d63c199d8c3a3b9fd16fa8bca7426ad4e9c202e52a233b4", + "check_gpg": true + }, + { + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "checksum": "sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe", + "check_gpg": true + }, + { + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "checksum": "sha256:8a03d482b5294f7452b2f9ce31ebb6aea9eefac002281c1b9152fbb1a0341987", + "check_gpg": true + }, + { + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "checksum": "sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4", + "check_gpg": true + }, + { + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "checksum": "sha256:aa5b658fd4a95c724b61eddadecdbcbc1b2a813ae681318ab092a2ed03954825", + "check_gpg": true + }, + { + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "checksum": "sha256:ec64add7d60a70fbaf14a083929f22bd2637c33d20d2a30b7e842caa6040f817", + "check_gpg": true + }, + { + "checksum": "sha256:3343d9e7c90bd58e1e44ee07e7c59bb570ffc74da50f0607c5f5681a00b70e76", + "check_gpg": true + }, + { + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "checksum": "sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386", + "check_gpg": true + }, + { + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "checksum": "sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9", + "check_gpg": true + }, + { + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "checksum": "sha256:ee664c392a97cdd272f57980c6856b2c57567005fa0ad9cb16c388b645d014f1", + "check_gpg": true + }, + { + "checksum": "sha256:9d220d8ee28cd0adf28e8fef547af92c3ec66e238747165939cf8e1a413ddf83", + "check_gpg": true + }, + { + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "checksum": "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b", + "check_gpg": true + }, + { + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts", + "labels": { + "/usr/bin/cp": "system_u:object_r:install_exec_t:s0" + } + } + } + ] + }, + "runner": "org.osbuild.fedora32" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:fc8a8027325828861bae0c41d2582d61f8cb4b9ed42a50e49c57939eabcad1b7", + "check_gpg": true + }, + { + "checksum": "sha256:605c3cf38451c6b93f331b605ab03ca611e37aa11d14a4019de61278add04f74", + "check_gpg": true + }, + { + "checksum": "sha256:342bdf0143d9145f8846e1b5c3401685e0d1274b66df39ac8cbfb78013313861", + "check_gpg": true + }, + { + "checksum": "sha256:fd2a2dd726d855f877296227fb351883d647df28b1b0085f525d87df622d49e4", + "check_gpg": true + }, + { + "checksum": "sha256:df174a90fd6bd3f9fae3b75433ae7f1869ff2db7102667fb243c8aede5b858d3", + "check_gpg": true + }, + { + "checksum": "sha256:cd5d539fd0c469f2ebae012a9a8f2ed280363c355f205edc8fc735678ac0adb8", + "check_gpg": true + }, + { + "checksum": "sha256:a9d5719cf5d4fdc4ae28099d623a751b0470264e7d2280be2669a066348b4ce1", + "check_gpg": true + }, + { + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "checksum": "sha256:a4706de7a0d59f2b1e9e73f48c4279429676410c77fb93f82abf1b7b34330f82", + "check_gpg": true + }, + { + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "checksum": "sha256:00d0bb6a08f20bea2b6bd0d2c4de99b51c770b2dab266d1d3da85891efeded01", + "check_gpg": true + }, + { + "checksum": "sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d", + "check_gpg": true + }, + { + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "checksum": "sha256:c07fd5357963f99610bc676b25f1dfcbf1bae0b63538b5e1cd82ce42b79fd819", + "check_gpg": true + }, + { + "checksum": "sha256:bfeba60bfb137f270e3b28db96ecfe8b226ea05e1761f6cb5ccc64c48c73c748", + "check_gpg": true + }, + { + "checksum": "sha256:af18c71bca1121ac3cdeace9f7249079ee0568fcbb15ca7e46131fa9b9b521f8", + "check_gpg": true + }, + { + "checksum": "sha256:2141f1dec8fe7a442c061f603bf4ee6203e10a290990789af0f4ef9db5523679", + "check_gpg": true + }, + { + "checksum": "sha256:b67f1634acc7b84b284bda8afeef546aed4a3388dc7df67417001704aa444af1", + "check_gpg": true + }, + { + "checksum": "sha256:cd01ae91895e60f189106a159bb551f906a8b663110f421ad6ee83c9e008851e", + "check_gpg": true + }, + { + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "checksum": "sha256:703fb5ca1651bb72d8ab58576ce3d78c9479cbb2e78ff8666ae3a3d1cd9bb0da", + "check_gpg": true + }, + { + "checksum": "sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57", + "check_gpg": true + }, + { + "checksum": "sha256:624b9079b4a571218adced203e19bdaca1d2cf57891f9653f409dd1db92fbf86", + "check_gpg": true + }, + { + "checksum": "sha256:5d520576b7ac63cb029c4b0b86398e2b71589df3bafa618018b3729d81036203", + "check_gpg": true + }, + { + "checksum": "sha256:c55b30a3a8c0d36a219953e20960185263ae63dada0f050446066be1e873ce08", + "check_gpg": true + }, + { + "checksum": "sha256:0065bc128a5c8b08b57f92651bfa62895221a9f001f1169447a56a8a6671bbae", + "check_gpg": true + }, + { + "checksum": "sha256:449d2888d6b835d207a55a2d9b4478eff1b926581fcead6260b6508e4db1b782", + "check_gpg": true + }, + { + "checksum": "sha256:769e34caae25f05786ae53e535c6e3c64f5c548f06c422325d68598b7abb99b7", + "check_gpg": true + }, + { + "checksum": "sha256:28d1118b3debda3daee76fc89f250576627a28b3ec39069256ddc212d993ddbc", + "check_gpg": true + }, + { + "checksum": "sha256:0608e0a9922e6748b39bd1719e2dabd6fe283b22cf590f1a3350327ae6c13561", + "check_gpg": true + }, + { + "checksum": "sha256:30c5f02ed28d59a4d72e020097602091bb8e34d65a6f3be69f4b1dd63a46f892", + "check_gpg": true + }, + { + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "checksum": "sha256:59be778afcf464d79f7dc440d6b49de8a9527fd73e7b514573d389bf8a51b246", + "check_gpg": true + }, + { + "checksum": "sha256:d5acde111b4cafc918decc8b9c530c9a7dfd6cc77b75538d33b32478219ae5da", + "check_gpg": true + }, + { + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "checksum": "sha256:e0f9c4327d62e35ee2a066c95dfa37f86021b405515d0f902b72a7437b7b98e9", + "check_gpg": true + }, + { + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "checksum": "sha256:f729c554ed4ac6335a548380a6f6335a332a3a2aca5321a322415a208701607d", + "check_gpg": true + }, + { + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "checksum": "sha256:9a2beeeede69d8910115608c2d98efa6a8dba73ab2df246df5b0f10e2fa37f54", + "check_gpg": true + }, + { + "checksum": "sha256:8aa8258a1a13c1120d6c28321f618385111cb9363dae09eea2e4af481053e28b", + "check_gpg": true + }, + { + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "checksum": "sha256:7a525abda7230bfbc87763dfe58bf7684e385b3c78ca242a1685a589300909e9", + "check_gpg": true + }, + { + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "checksum": "sha256:e40be03bd5808e640bb5fb18196499680a7b7b1d3fce47617f987baee849c0e5", + "check_gpg": true + }, + { + "checksum": "sha256:e712179ba8b9b6e93d14c902a6d6a390ba142153384dab9291c808a447b7ed0c", + "check_gpg": true + }, + { + "checksum": "sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec", + "check_gpg": true + }, + { + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "checksum": "sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73", + "check_gpg": true + }, + { + "checksum": "sha256:11d6aa88c7e5bbaad38353bbb557ad8370452cd258f2a0d16bfd490116138d67", + "check_gpg": true + }, + { + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "checksum": "sha256:b743aafa82f3326f8f2e6d5464ae7fa57fabab3ad791099eaf2d151b43208b42", + "check_gpg": true + }, + { + "checksum": "sha256:a7deef0a324ccb272a25f5eb6b30c72d0a842bf2c602c31fe3b60f984b2e50af", + "check_gpg": true + }, + { + "checksum": "sha256:05efccb06aa336d2547eb8fd5b7e0935c883f89084688f32ce0b09954149b796", + "check_gpg": true + }, + { + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "checksum": "sha256:5e7a16df5bdfab2acfd8ac061827ace0642f2e5521689d6b9f0812f2a6ece231", + "check_gpg": true + }, + { + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "checksum": "sha256:907393755387a351806ec2afff376e7491f177116caadd12f07d0fcbed796750", + "check_gpg": true + }, + { + "checksum": "sha256:f2715fc8a04d33716f40f5b34466e082140df7ff3b7b972c29655d4dfc6e3a72", + "check_gpg": true + }, + { + "checksum": "sha256:b8ecd7fa0e7e072828e374dfb0d61bb8eecca7c190f3661050cee5e3fc8854b4", + "check_gpg": true + }, + { + "checksum": "sha256:47538b1db9720be4699329a8da32d873187d0c6c22f45252614ac5b8a8312482", + "check_gpg": true + }, + { + "checksum": "sha256:317654c97a9dc11fe498b61d4189ff31cd1277250993d826e9bc5815d0485f29", + "check_gpg": true + }, + { + "checksum": "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012", + "check_gpg": true + }, + { + "checksum": "sha256:9369d4fed30402f45705b7a5cb51b6eeefb1dabbe0942c84514c6fdf1edac5e0", + "check_gpg": true + }, + { + "checksum": "sha256:45132e53c649def28d63c199d8c3a3b9fd16fa8bca7426ad4e9c202e52a233b4", + "check_gpg": true + }, + { + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "checksum": "sha256:929f1c5ce4775b28439a1b5726e98c38204930d5880dc6096fc56e8d3eab275f", + "check_gpg": true + }, + { + "checksum": "sha256:8df8541abd806578e43fe28a7ea2c41efbbb813866bed35fabe779274790a538", + "check_gpg": true + }, + { + "checksum": "sha256:ab4c27523d6b5a0df75febac43cafa2dd9897dc3c1bb2f0d6990ca603b6168fe", + "check_gpg": true + }, + { + "checksum": "sha256:ff5dd4d0c157cf1be9c8dbddce06640c67b2d02ae5a48d6b108bd70fc5c96211", + "check_gpg": true + }, + { + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "checksum": "sha256:397f0b024d3c58ca6e174c6de5abcb19304d7c58903199e1e6fe02e84d5bcb3a", + "check_gpg": true + }, + { + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "checksum": "sha256:5fc2fd0cb5b6fdce1203e43d6f2df6a3098ec9522b04815d896ecedbb1489063", + "check_gpg": true + }, + { + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "checksum": "sha256:f36550dfc144e4608da672616fa44b2f2341f99bb38972e66e4a8fef4b59172c", + "check_gpg": true + }, + { + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "checksum": "sha256:052ddc487a29acce1b5d44532f79f8ab594d0ac6565504071f4c7706d97fc552", + "check_gpg": true + }, + { + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "checksum": "sha256:70794c8537fb3cf197f051cfce3b23956d587062daf114f8480770754804f339", + "check_gpg": true + }, + { + "checksum": "sha256:fbaf44214a3e93d4bdccb1519768849db5ea204c886df851b49f107e0c443e4a", + "check_gpg": true + }, + { + "checksum": "sha256:1ec84749250a0095d645f11fa0dcdf8c4500e0bbc303af696762a12616375757", + "check_gpg": true + }, + { + "checksum": "sha256:4546444c0647efaa8fa8bf604ace7f7dbd152e74761b8d7a11fa185bc72bece8", + "check_gpg": true + }, + { + "checksum": "sha256:3ab2173d9d4016febcdaf283408f9939d0a7b2fdba3e46a2d45fbef88a1463a0", + "check_gpg": true + }, + { + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "checksum": "sha256:aa353206ef29b7d908554ccb7cd6f4c01a1f6c3c1c6358abb7452f4a745939d0", + "check_gpg": true + }, + { + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "checksum": "sha256:d1a369d501e3ce1c17d06418c9cd57c4ada551ecc3b45a581e162215e8bd77f5", + "check_gpg": true + }, + { + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "checksum": "sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823", + "check_gpg": true + }, + { + "checksum": "sha256:6749bd0b96339c32b57635b69b474583b50c94e4bbaa3eb8753fa604b9d1c521", + "check_gpg": true + }, + { + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "checksum": "sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339", + "check_gpg": true + }, + { + "checksum": "sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684", + "check_gpg": true + }, + { + "checksum": "sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae", + "check_gpg": true + }, + { + "checksum": "sha256:7c21c21c3e3dbace06bee03fe4835ae6cb1e3ef86750ba2853f39d40dead2309", + "check_gpg": true + }, + { + "checksum": "sha256:f60fc561675e41ffa2c48b229960291e2438441d5ed758c1f28cb06b5d4e4ea9", + "check_gpg": true + }, + { + "checksum": "sha256:28f4bcbf53258114ebbf0a167351d67e204ff6f717b49b3893c2372845e6bd0a", + "check_gpg": true + }, + { + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "checksum": "sha256:08c41c10745c172c34880e384cf5cff014a9627f4895e59fa482948b27e2ce9e", + "check_gpg": true + }, + { + "checksum": "sha256:6a3282927f525629bc0aaf4090e108d33b0709d3d5b35bc442000c2837e7b9b4", + "check_gpg": true + }, + { + "checksum": "sha256:1a2f22eed83ef568021c464cce841ef98725b614093f2c518307e85d5b6e759b", + "check_gpg": true + }, + { + "checksum": "sha256:65e5209398c6b2c196cb42f3bc3f82e00af1026f623026857a9b330ec92d0330", + "check_gpg": true + }, + { + "checksum": "sha256:032e4944fe53dc7a11ae62d746579177a5c52b00a4ad5540da8221aa287fdf18", + "check_gpg": true + }, + { + "checksum": "sha256:79e22d23ba0a156b3d74ec4b0da8fd71bc632386366ade2c48006ba82074055d", + "check_gpg": true + }, + { + "checksum": "sha256:b286141f38cd88b8c632515677423f49c81365f2ae99c5a7906205f35a273fb2", + "check_gpg": true + }, + { + "checksum": "sha256:caa3625b22908cf4f91faf2c281b0e7ab7d981c35ed1d761deb53b7b78d13cf8", + "check_gpg": true + }, + { + "checksum": "sha256:5d933f9bf444d4c8732caa65e9227b27127c625840859a0453a32a5719916f48", + "check_gpg": true + }, + { + "checksum": "sha256:4659e7b76850ce5dedbe80fb0a64947e83f15f907b35c5819d91be6ed0523653", + "check_gpg": true + }, + { + "checksum": "sha256:d7f57b9190c9cf05c36fe9fb3229330cdb9f0a1af1214a47b0a38dcc8ce929ee", + "check_gpg": true + }, + { + "checksum": "sha256:88d283c2d5aa96c2b0899f6bd6c0409a5d5c6fda2958e8eae19eb49c3ede58d6", + "check_gpg": true + }, + { + "checksum": "sha256:89f85f749bfee7d083c84845e908a3471297a3d8a75f7397903d15eb7f403297", + "check_gpg": true + }, + { + "checksum": "sha256:83a08b7066000ebbdf8a6c5706485a19b5dfe2d492b1faaac1922e8f0c42cd0c", + "check_gpg": true + }, + { + "checksum": "sha256:a3f80bb7068618dff795b3e0a3d32fa3c640e492c8f175b16bb3c7ff64a88a8e", + "check_gpg": true + }, + { + "checksum": "sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8", + "check_gpg": true + }, + { + "checksum": "sha256:872639e4ccb4f1c5de66d5eaa85ca673141b10e3d614b33c84ff887c228d465d", + "check_gpg": true + }, + { + "checksum": "sha256:d7fec1fb54953f1901cc505c225af94cb61f2206d0503be12313169a4b915e18", + "check_gpg": true + }, + { + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "checksum": "sha256:8a03d482b5294f7452b2f9ce31ebb6aea9eefac002281c1b9152fbb1a0341987", + "check_gpg": true + }, + { + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "checksum": "sha256:89c972ec7d2ab305c91c23bc248562c76f0ae645a9ed9f94d312e2f57c4d38fe", + "check_gpg": true + }, + { + "checksum": "sha256:a1613e90865db93fb578b8ee1a4ee40bd396c6c9f2fb2a14757acacecb9f23e8", + "check_gpg": true + }, + { + "checksum": "sha256:b98687828b1d222ea73ebb8457450913dac58dd0be2e430a93bb7e98ba816505", + "check_gpg": true + }, + { + "checksum": "sha256:e291d6c021eaa01cc3c446b76c94aafde444936b8ba3f08a7fe7cbe66a23366b", + "check_gpg": true + }, + { + "checksum": "sha256:150815dd62da40fee60ad5ceb988938c3be01e03aa54a025772b33a7a2c11311", + "check_gpg": true + }, + { + "checksum": "sha256:9ee276ed9d036a4483bb8d1bd6f6d697b161a04276c6ce5f1d3f40d48e04bccb", + "check_gpg": true + }, + { + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "checksum": "sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884", + "check_gpg": true + }, + { + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "checksum": "sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4", + "check_gpg": true + }, + { + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "checksum": "sha256:d74b76ce8c2c7306cc3f012d1ec56b1d5c67788748f56ecd505f257d342f97ee", + "check_gpg": true + }, + { + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "checksum": "sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5", + "check_gpg": true + }, + { + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "checksum": "sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09", + "check_gpg": true + }, + { + "checksum": "sha256:39961756e07f6f49ddf2ff277dc04a63fa4d5b4fb035480945bd2f665ba1dd4d", + "check_gpg": true + }, + { + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "checksum": "sha256:ebbace15f986288bba7681f44a111b14bcc7cae00b7a1faadaa838bd51897357", + "check_gpg": true + }, + { + "checksum": "sha256:14bd7e305e13795e0d37c613dfa3ead3a3219d28c32b27ad6527d3592361923d", + "check_gpg": true + }, + { + "checksum": "sha256:aac9be36fc9c345245b4a0db66bfb9ff8df25e36ae0c1ae89eca9bcf88e052e4", + "check_gpg": true + }, + { + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "checksum": "sha256:c8daa43a4504f9a4b6c106baf8a56aa0d256fc3c71bd417ea75b9c7fd830a9b7", + "check_gpg": true + }, + { + "checksum": "sha256:b3201777d78ee13ee45ddbd982af5999ce058907b5dc552669644931b79c5f51", + "check_gpg": true + }, + { + "checksum": "sha256:824fe37d58cadac2f23678c9eb95c29b4acb1852df97cf799e77aa7e8034b54e", + "check_gpg": true + }, + { + "checksum": "sha256:86acbe8d77b05c1fe9bb0168443a579b1d4538f9733813db4e72e4a4a2be29e3", + "check_gpg": true + }, + { + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "checksum": "sha256:ff44071d53a2ed543c2ddad99cca8fc25493cbefc5d7ad869f9b6dbda340a465", + "check_gpg": true + }, + { + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "checksum": "sha256:2434cd04a437c06f59d67ee2580443c0ba676c39440cd0f74cca768ec57577f9", + "check_gpg": true + }, + { + "checksum": "sha256:de74076fc5073ad07ffa78fed6e7cd8f10133d99c1c73149b4ac74428699a6d1", + "check_gpg": true + }, + { + "checksum": "sha256:4eb6a2e34173a2b6ca7db031cecce56c0bed711691abf1c8d6bfe6cb7ca45dc0", + "check_gpg": true + }, + { + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "checksum": "sha256:9ebc5843faeb852bbbe3d53f03182197f6595a928ffa3f5d7a530749ee1e4ec8", + "check_gpg": true + }, + { + "checksum": "sha256:aa5b658fd4a95c724b61eddadecdbcbc1b2a813ae681318ab092a2ed03954825", + "check_gpg": true + }, + { + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "checksum": "sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f", + "check_gpg": true + }, + { + "checksum": "sha256:b359ca3cdc68b6e5031f65975df38a8b96c19ddc4c367e1e3463fc8484a0b3b7", + "check_gpg": true + }, + { + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "checksum": "sha256:3afab9512fd4d56a13c95b530c805ac8b2bc872572ec5bb435eccdd59fbbc8b6", + "check_gpg": true + }, + { + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "checksum": "sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1", + "check_gpg": true + }, + { + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "checksum": "sha256:6952dfc6a8f583c9aeafb16d5d34208d7e39fd7ec8628c5aa8ccde039acbe548", + "check_gpg": true + }, + { + "checksum": "sha256:5a4c0187b96690e0088057f7656c67d399fad44b28b86644e3434c581377c229", + "check_gpg": true + }, + { + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "checksum": "sha256:5ad0d1b4e641e5d2fe7f6385ace0f827a431c5a52c6dc3516d85e655caca880f", + "check_gpg": true + }, + { + "checksum": "sha256:64922311f45700f2f4f98d78efbdfa240987a6a2b1396ffe694d30e2b5f34ac3", + "check_gpg": true + }, + { + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "checksum": "sha256:cbfc109588fa0e34bdc408dbb37dadf7873fb5788dd3fd8cd04c17c75f26e6db", + "check_gpg": true + }, + { + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "checksum": "sha256:b09015ae5fb5772b73bc7932991aaf6e1f6d509432af605a565ef53d2d50606a", + "check_gpg": true + }, + { + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "checksum": "sha256:599549d72d26b48c45156585a5698898c853e56469142e202d3749b781428465", + "check_gpg": true + }, + { + "checksum": "sha256:66bb5b2e99d2c74b82943fe61fe9b9a3674350b0242f69a6854ec9718dcf5e07", + "check_gpg": true + }, + { + "checksum": "sha256:af66820023c984d8b981ecac715d0c2daec1f89dcb69bed76ddf58b0ee80c1b1", + "check_gpg": true + }, + { + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "checksum": "sha256:64567be564634937bd918d33a3f04017808d29269a5b0891a0f4d4aecad6161b", + "check_gpg": true + }, + { + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "checksum": "sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975", + "check_gpg": true + }, + { + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "checksum": "sha256:a7452c18c2cffc266ec36c54105b884c4d63181f20cebd705e33730534cb9093", + "check_gpg": true + }, + { + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "checksum": "sha256:ad50ed0c4f4c956e3b59ac9fc7bf5fba22068a661ea75a46eb81bc2209af4cc5", + "check_gpg": true + }, + { + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "checksum": "sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467", + "check_gpg": true + }, + { + "checksum": "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4", + "check_gpg": true + }, + { + "checksum": "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9", + "check_gpg": true + }, + { + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "checksum": "sha256:9fa1959637c902dfeb19a0f16c7f42f7da4aab293f7c025c66d39debad6dbc34", + "check_gpg": true + }, + { + "checksum": "sha256:3b76bc46dd279404408d34946cfdb0c3899359a1c6b48e614e63d1259a94262a", + "check_gpg": true + }, + { + "checksum": "sha256:e851ba0019baa83e1bebbe92e1a1cf629694ccf3b42c5ff84e0ed7bea74931d3", + "check_gpg": true + }, + { + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "checksum": "sha256:4375c398dff722a29bd1700bc8dc8b528345412d1e17d8d9d1176d9774962957", + "check_gpg": true + }, + { + "checksum": "sha256:95a89032291b05a0e483f336ea29897d951e8845b0f347a4117de90ef3ef3467", + "check_gpg": true + }, + { + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "checksum": "sha256:9cf9b01f2c727e3576a8aa71fd7fe1bf4ec9ed1c9f50b756657cf9aeae18418f", + "check_gpg": true + }, + { + "checksum": "sha256:80cf220a3314f965c088e03d2b750426767db0b36b6b7c5e8059b9217ff4de6d", + "check_gpg": true + }, + { + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "checksum": "sha256:0b7d24759aac33303ff4b101c111dea03ff2529efc95661140e22f629cc1ab7a", + "check_gpg": true + }, + { + "checksum": "sha256:e2566356943c1c7485d206b858dd6ae3be37c28bfec2a43f869193f3b5b9cd23", + "check_gpg": true + }, + { + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "checksum": "sha256:42fcfac5037eab4099648e0f0ed3eb2aec6eb6a23a9e3808f9b69619ea7c44e3", + "check_gpg": true + }, + { + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "checksum": "sha256:0d51c1319ee78978e6ea5a49b815c2078b4ffd4d575e98c70e54ca01c3390eb8", + "check_gpg": true + }, + { + "checksum": "sha256:8b148415fb6a583ef131d0ddff44f3209c30d0299fde7b20cd3ea385590927c1", + "check_gpg": true + }, + { + "checksum": "sha256:d1e244b8b5ce7404846e97d96c762c8c18ff6447301f6fc63f50e615029aa7cd", + "check_gpg": true + }, + { + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "checksum": "sha256:ec64add7d60a70fbaf14a083929f22bd2637c33d20d2a30b7e842caa6040f817", + "check_gpg": true + }, + { + "checksum": "sha256:3343d9e7c90bd58e1e44ee07e7c59bb570ffc74da50f0607c5f5681a00b70e76", + "check_gpg": true + }, + { + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "checksum": "sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719", + "check_gpg": true + }, + { + "checksum": "sha256:e5efc87172d7081559137feaa221047385a5e248ffafd9794c2bfc73b61f8f37", + "check_gpg": true + }, + { + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "checksum": "sha256:5c91890bf33527b9fb422cbed17600e761750a4e596fad3f0d0fa419070e82b0", + "check_gpg": true + }, + { + "checksum": "sha256:0bace0cf41921db39247c99bfccb228818b83b68c7b8be7c8c4a92ea298a9a29", + "check_gpg": true + }, + { + "checksum": "sha256:4a7b63b32f176b8861f6ac7363bc8010caea0c323eaa83167227118f05603022", + "check_gpg": true + }, + { + "checksum": "sha256:ccdfb24da56aa394a64cf2f0c6ac6d15d0ebd6054686bd2ab27641a5502329be", + "check_gpg": true + }, + { + "checksum": "sha256:536a157da5332c0bdacb3e5891e3012b79b18fcdedb63b393110d6eb8b04e428", + "check_gpg": true + }, + { + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "checksum": "sha256:3cd56dea57c00e2c4a9d5aac69a1e843ebef581ba76dde9d9878082fa1215485", + "check_gpg": true + }, + { + "checksum": "sha256:d49f0b1c8ecf9bc808ae93e9298a40fbcc124fe67c3bbdd37705b6b5d8cfdd87", + "check_gpg": true + }, + { + "checksum": "sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386", + "check_gpg": true + }, + { + "checksum": "sha256:7c7eff31251dedcc3285a8b08c1b18f7fd9ee2e07dff86ad090f45a81e19e85e", + "check_gpg": true + }, + { + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "checksum": "sha256:52fe378ffab317ec4d26ae5fc0389dec874002a8d70a9413cefb68c7b16b0612", + "check_gpg": true + }, + { + "checksum": "sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444", + "check_gpg": true + }, + { + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "checksum": "sha256:b1111e77a5fdbacaa04acc90d3844706158bc5892173862928705620b8910adb", + "check_gpg": true + }, + { + "checksum": "sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070", + "check_gpg": true + }, + { + "checksum": "sha256:129adf9147d5d120546ca8e0fb5f165761106d386d366fe82591e372754d0b4a", + "check_gpg": true + }, + { + "checksum": "sha256:8ee8c4bbf024b998ffb77a6b4194a2306ac21c5a6fcf70c8c81a0fbf38f7c7fc", + "check_gpg": true + }, + { + "checksum": "sha256:34411604a91c301dc8489285065c68f3a2f50910717097fedcaade6481c7469e", + "check_gpg": true + }, + { + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "checksum": "sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124", + "check_gpg": true + }, + { + "checksum": "sha256:55bafcdf9c31b1456af3bf584bfe7ac745a03f4decd17197ea97b498d68b3b82", + "check_gpg": true + }, + { + "checksum": "sha256:0fc0193d95d69c780b6feb1cb74759ca2d4804701b3de936dac8429cfbe0f2e9", + "check_gpg": true + }, + { + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "checksum": "sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2", + "check_gpg": true + }, + { + "checksum": "sha256:6f5f53b66f7c3bf6958f6f163788583265ff0360188620c3b0f7ddedeac3d1f4", + "check_gpg": true + }, + { + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "checksum": "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f", + "check_gpg": true + }, + { + "checksum": "sha256:d2abba1a0523bd9df5073900593ab13ec2ed2e391440be4d883314fa154370f8", + "check_gpg": true + }, + { + "checksum": "sha256:cb0c64cc81e0b384bbc9d27ffcb2a655b13c91a799aad8972264aed1767926a3", + "check_gpg": true + }, + { + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "checksum": "sha256:4cd01a3135b9e72906eaf4552e29929334dcccee2ed092a38bf60698522ecd5f", + "check_gpg": true + }, + { + "checksum": "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58", + "check_gpg": true + }, + { + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "checksum": "sha256:ee664c392a97cdd272f57980c6856b2c57567005fa0ad9cb16c388b645d014f1", + "check_gpg": true + }, + { + "checksum": "sha256:9d220d8ee28cd0adf28e8fef547af92c3ec66e238747165939cf8e1a413ddf83", + "check_gpg": true + }, + { + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "checksum": "sha256:024dd8a75eb5472692d0291292d25939b97a0295e5ab0958dcd22600d392eaae", + "check_gpg": true + }, + { + "checksum": "sha256:c50ff544430830086ce484b20a2b6eaa934c82b6277a6f4fb02fc8cbc9e25db7", + "check_gpg": true + }, + { + "checksum": "sha256:96e0c019cb91d8deefb7664cfe417807d23562d2a1bfd2cbfd1051e243136b57", + "check_gpg": true + }, + { + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "checksum": "sha256:84c338b327a3fb2f6edb79caa2242804fff8c83ffa3db0d9227f55eef4107b2a", + "check_gpg": true + }, + { + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "checksum": "sha256:ee1681ee1ae6a3f86a876562939fbfe415ba78b0a803059e1b6d6cd63b0fa1a3", + "check_gpg": true + }, + { + "checksum": "sha256:f14d3b113e2c3ba3f8ab7a8146439924f38487c20dd533062616f17f500ff46b", + "check_gpg": true + }, + { + "checksum": "sha256:14cf772225c04c005add71372fce866e90f7144c27bbb8e846ce7887e0d286e0", + "check_gpg": true + }, + { + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "checksum": "sha256:699c1a3ff311bbaa2380c085fb4f516aa08be474bed02bcd1569d0bbf5b22d07", + "check_gpg": true + }, + { + "checksum": "sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b", + "check_gpg": true + }, + { + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "checksum": "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b", + "check_gpg": true + }, + { + "checksum": "sha256:ea5f929563fb9ca0cf08da250c62c93d4755f4a41c1aca23eeeaf3e58e90d766", + "check_gpg": true + }, + { + "checksum": "sha256:8c560f3927e36e41657067e4bdc741fd8f3b55b497f0fc3c2331fb361ba8de8b", + "check_gpg": true + }, + { + "checksum": "sha256:90bc2171f438ffa7488a9c69cd86bb1de175807be468f285c8ca16cf8dd4a83c", + "check_gpg": true + }, + { + "checksum": "sha256:c3e2a3c23288899456fb996f3074c10637bcd4886bc446698cb1efa2734c1e4d", + "check_gpg": true + }, + { + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "checksum": "sha256:4fca21cfdcbed052e3e9e1eff74c22fb8ffb1fbbeb63e87e2aa540e43a8c0d09", + "check_gpg": true + }, + { + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "checksum": "sha256:9dcc75ac945924ce496c9280e7ac31b88886d94a6494d0710725a81dd9d42c9a", + "check_gpg": true + }, + { + "checksum": "sha256:d61ea8b6299f00397f740b73de146ef4daa6d6bb5863d525459765fa0f23a991", + "check_gpg": true + }, + { + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "checksum": "sha256:9194788f87e4a1aa8835f1305d290cc2cd67cee6a5b1ab82643d3a068c0145b6", + "check_gpg": true + }, + { + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + }, + { + "checksum": "sha256:3f7861ea2d8b4380b567f629a86fa31951a55f46f6eee017cb84ed87baf2c19e", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.systemd", + "options": { + "enabled_services": [ + "NetworkManager.service", + "firewalld.service", + "rngd.service", + "sshd.service", + "zram-swap.service" + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + }, + { + "name": "org.osbuild.rpm-ostree", + "options": { + "etc_group_members": [ + "wheel", + "docker" + ] + } + } + ], + "assembler": { + "name": "org.osbuild.ostree.commit", + "options": { + "ref": "fedora/32/x86_64/iot", + "tar": { + "filename": "commit.tar" + } + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/acl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/alternatives-1.11-6.fc32.x86_64.rpm", + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm", + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bash-5.0.11-2.fc32.x86_64.rpm", + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "name": "bubblewrap", + "epoch": 0, + "version": "0.4.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bubblewrap-0.4.1-1.fc32.x86_64.rpm", + "checksum": "sha256:cd01ae91895e60f189106a159bb551f906a8b663110f421ad6ee83c9e008851e", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.x86_64.rpm", + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2020.2.40", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm", + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-common-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.13", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cpio-2.13-4.fc32.x86_64.rpm", + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.x86_64.rpm", + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/curl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.x86_64.rpm", + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "22", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-broker-22-1.fc32.x86_64.rpm", + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm", + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-5.fc32.x86_64.rpm", + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/diffutils-3.7-4.fc32.x86_64.rpm", + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dosfstools-4.1-10.fc32.x86_64.rpm", + "checksum": "sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-050-26.git20200316.fc32.x86_64.rpm", + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm", + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libelf-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libs-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/expat-2.2.8-2.fc32.x86_64.rpm", + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm", + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-32-1.noarch.rpm", + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-common-32-1.noarch.rpm", + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-repos-32-1.noarch.rpm", + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-libs-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.14", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/filesystem-3.14-2.fc32.x86_64.rpm", + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.7.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/findutils-4.7.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "name": "fuse", + "epoch": 0, + "version": "2.9.9", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-2.9.9-9.fc32.x86_64.rpm", + "checksum": "sha256:9369d4fed30402f45705b7a5cb51b6eeefb1dabbe0942c84514c6fdf1edac5e0", + "check_gpg": true + }, + { + "name": "fuse-common", + "epoch": 0, + "version": "3.9.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-common-3.9.1-1.fc32.x86_64.rpm", + "checksum": "sha256:45132e53c649def28d63c199d8c3a3b9fd16fa8bca7426ad4e9c202e52a233b4", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-9.fc32.x86_64.rpm", + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gawk-5.0.1-7.fc32.x86_64.rpm", + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.x86_64.rpm", + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.64.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glib2-2.64.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-common-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gmp-6.1.2-13.fc32.x86_64.rpm", + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.13", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnutls-3.6.13-1.fc32.x86_64.rpm", + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gpgme-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grep-3.3-4.fc32.x86_64.rpm", + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gzip-1.10-2.fc32.x86_64.rpm", + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.x86_64.rpm", + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-libs-1.8.4-7.fc32.x86_64.rpm", + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/json-c-0.13.1-9.fc32.x86_64.rpm", + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/json-glib-1.4.4-4.fc32.x86_64.rpm", + "checksum": "sha256:8a03d482b5294f7452b2f9ce31ebb6aea9eefac002281c1b9152fbb1a0341987", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-2.2.0-1.fc32.x86_64.rpm", + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-27-1.fc32.x86_64.rpm", + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-libs-27-1.fc32.x86_64.rpm", + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kpartx-0.8.2-3.fc32.x86_64.rpm", + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/krb5-libs-1.18-1.fc32.x86_64.rpm", + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libacl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.111", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libaio-0.3.111-7.fc32.x86_64.rpm", + "checksum": "sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.2", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libarchive-3.4.2-1.fc32.x86_64.rpm", + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libargon2-20171227-4.fc32.x86_64.rpm", + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libassuan-2.5.3-3.fc32.x86_64.rpm", + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libattr-2.4.48-8.fc32.x86_64.rpm", + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libblkid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "name": "libbrotli", + "epoch": 0, + "version": "1.0.7", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbrotli-1.0.7-10.fc32.x86_64.rpm", + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-2.26-7.fc32.x86_64.rpm", + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-ng-0.7.10-2.fc32.x86_64.rpm", + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcom_err-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcroco-0.6.13-3.fc32.x86_64.rpm", + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcurl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libevent-2.1.8-8.fc32.x86_64.rpm", + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfdisk-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libffi-3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcc-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-3.fc32.x86_64.rpm", + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgomp-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgpg-error-1.36-3.fc32.x86_64.rpm", + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libidn2-2.3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libksba-1.3.5-11.fc32.x86_64.rpm", + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-10.fc32.x86_64.rpm", + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmnl-1.0.4-11.fc32.x86_64.rpm", + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmodulemd-2.9.1-1.fc32.x86_64.rpm", + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.16", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmodulemd1-1.8.16-2.fc32.x86_64.rpm", + "checksum": "sha256:aa5b658fd4a95c724b61eddadecdbcbc1b2a813ae681318ab092a2ed03954825", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmount-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.x86_64.rpm", + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "17.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.x86_64.rpm", + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.40.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnghttp2-1.40.0-2.fc32.x86_64.rpm", + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "6.20180605git4a062cf.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64.rpm", + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpcap-1.9.1-3.fc32.x86_64.rpm", + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpsl-0.21.0-4.fc32.x86_64.rpm", + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpwquality-1.4.2-2.fc32.x86_64.rpm", + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.11.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/librepo-1.11.1-4.fc32.x86_64.rpm", + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.12.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm", + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libseccomp-2.4.2-3.fc32.x86_64.rpm", + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.20.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsecret-0.20.2-2.fc32.x86_64.rpm", + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-utils-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsemanage-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsepol-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsigsegv-2.11-10.fc32.x86_64.rpm", + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsmartcols-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsolv-0.7.11-2.fc32.x86_64.rpm", + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libss-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-0.9.3-2.fc32.x86_64.rpm", + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm", + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.16.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtasn1-4.16.0-1.fc32.x86_64.rpm", + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.2.5", + "release": "1.rc2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.x86_64.rpm", + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libunistring-0.9.10-7.fc32.x86_64.rpm", + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libusbx-1.0.23-1.fc32.x86_64.rpm", + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "18.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libutempter-1.1.6-18.fc32.x86_64.rpm", + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuuid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libverto-0.3.0-9.fc32.x86_64.rpm", + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.10.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.x86_64.rpm", + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.10", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxml2-2.9.10-3.fc32.x86_64.rpm", + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libyaml-0.2.2-3.fc32.x86_64.rpm", + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libzstd-1.4.4-2.fc32.x86_64.rpm", + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-7.fc32.x86_64.rpm", + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-2.fc32.x86_64.rpm", + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mkpasswd-5.5.6-1.fc32.x86_64.rpm", + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "4.0.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mpfr-4.0.2-3.fc32.x86_64.rpm", + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm", + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nettle-3.5.1-5.fc32.x86_64.rpm", + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/npth-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openldap-2.4.47-4.fc32.x86_64.rpm", + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.x86_64.rpm", + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/os-prober-1.77-4.fc32.x86_64.rpm", + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "name": "ostree", + "epoch": 0, + "version": "2020.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/ostree-2020.3-2.fc32.x86_64.rpm", + "checksum": "sha256:ec64add7d60a70fbaf14a083929f22bd2637c33d20d2a30b7e842caa6040f817", + "check_gpg": true + }, + { + "name": "ostree-libs", + "epoch": 0, + "version": "2020.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/ostree-libs-2020.3-2.fc32.x86_64.rpm", + "checksum": "sha256:3343d9e7c90bd58e1e44ee07e7c59bb570ffc74da50f0607c5f5681a00b70e76", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pam-1.3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.44", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre-8.44-1.fc32.x86_64.rpm", + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-10.34-9.fc32.x86_64.rpm", + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "name": "pcre2-syntax", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm", + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pigz-2.4-6.fc32.x86_64.rpm", + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pinentry-1.1.0-7.fc32.x86_64.rpm", + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.116", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-libs-0.116-7.fc32.x86_64.rpm", + "checksum": "sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/popt-1.16-19.fc32.x86_64.rpm", + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-7.fc32.x86_64.rpm", + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm", + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libs-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-unbound-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "name": "qemu-img", + "epoch": 2, + "version": "4.2.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qemu-img-4.2.0-7.fc32.x86_64.rpm", + "checksum": "sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.x86_64.rpm", + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/readline-8.0-4.fc32.x86_64.rpm", + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "name": "rpm-ostree", + "epoch": 0, + "version": "2020.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-ostree-2020.1-1.fc32.x86_64.rpm", + "checksum": "sha256:ee664c392a97cdd272f57980c6856b2c57567005fa0ad9cb16c388b645d014f1", + "check_gpg": true + }, + { + "name": "rpm-ostree-libs", + "epoch": 0, + "version": "2020.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-ostree-libs-2020.1-1.fc32.x86_64.rpm", + "checksum": "sha256:9d220d8ee28cd0adf28e8fef547af92c3ec66e238747165939cf8e1a413ddf83", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sed-4.5-5.fc32.x86_64.rpm", + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.6", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm", + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.8.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shadow-utils-4.8.1-2.fc32.x86_64.rpm", + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.15", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shared-mime-info-1.15-3.fc32.x86_64.rpm", + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.31.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-libs-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-pam-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm", + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-udev-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tar-1.32-4.fc32.x86_64.rpm", + "checksum": "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tss2-1331-4.fc32.x86_64.rpm", + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm", + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/unbound-libs-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/util-linux-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/which-2.21-19.fc32.x86_64.rpm", + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm", + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.29", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm", + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-libs-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "21.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zlib-1.2.11-21.fc32.x86_64.rpm", + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ], + "packages": [ + { + "name": "ModemManager", + "epoch": 0, + "version": "1.12.8", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/ModemManager-1.12.8-1.fc32.x86_64.rpm", + "checksum": "sha256:fc8a8027325828861bae0c41d2582d61f8cb4b9ed42a50e49c57939eabcad1b7", + "check_gpg": true + }, + { + "name": "ModemManager-glib", + "epoch": 0, + "version": "1.12.8", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/ModemManager-glib-1.12.8-1.fc32.x86_64.rpm", + "checksum": "sha256:605c3cf38451c6b93f331b605ab03ca611e37aa11d14a4019de61278add04f74", + "check_gpg": true + }, + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.22.10", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-1.22.10-1.fc32.x86_64.rpm", + "checksum": "sha256:342bdf0143d9145f8846e1b5c3401685e0d1274b66df39ac8cbfb78013313861", + "check_gpg": true + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.22.10", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.22.10-1.fc32.x86_64.rpm", + "checksum": "sha256:fd2a2dd726d855f877296227fb351883d647df28b1b0085f525d87df622d49e4", + "check_gpg": true + }, + { + "name": "NetworkManager-wifi", + "epoch": 1, + "version": "1.22.10", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-wifi-1.22.10-1.fc32.x86_64.rpm", + "checksum": "sha256:df174a90fd6bd3f9fae3b75433ae7f1869ff2db7102667fb243c8aede5b858d3", + "check_gpg": true + }, + { + "name": "NetworkManager-wwan", + "epoch": 1, + "version": "1.22.10", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-wwan-1.22.10-1.fc32.x86_64.rpm", + "checksum": "sha256:cd5d539fd0c469f2ebae012a9a8f2ed280363c355f205edc8fc735678ac0adb8", + "check_gpg": true + }, + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.201", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/abattis-cantarell-fonts-0.201-2.fc32.noarch.rpm", + "checksum": "sha256:a9d5719cf5d4fdc4ae28099d623a751b0470264e7d2280be2669a066348b4ce1", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/acl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "name": "adobe-source-code-pro-fonts", + "epoch": 0, + "version": "2.030.1.050", + "release": "8.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/adobe-source-code-pro-fonts-2.030.1.050-8.fc32.noarch.rpm", + "checksum": "sha256:a4706de7a0d59f2b1e9e73f48c4279429676410c77fb93f82abf1b7b34330f82", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/alternatives-1.11-6.fc32.x86_64.rpm", + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "name": "attr", + "epoch": 0, + "version": "2.4.48", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/attr-2.4.48-8.fc32.x86_64.rpm", + "checksum": "sha256:00d0bb6a08f20bea2b6bd0d2c4de99b51c770b2dab266d1d3da85891efeded01", + "check_gpg": true + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm", + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bash-5.0.11-2.fc32.x86_64.rpm", + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "name": "bash-completion", + "epoch": 1, + "version": "2.8", + "release": "8.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bash-completion-2.8-8.fc32.noarch.rpm", + "checksum": "sha256:c07fd5357963f99610bc676b25f1dfcbf1bae0b63538b5e1cd82ce42b79fd819", + "check_gpg": true + }, + { + "name": "bluez", + "epoch": 0, + "version": "5.54", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bluez-5.54-1.fc32.x86_64.rpm", + "checksum": "sha256:bfeba60bfb137f270e3b28db96ecfe8b226ea05e1761f6cb5ccc64c48c73c748", + "check_gpg": true + }, + { + "name": "bluez-libs", + "epoch": 0, + "version": "5.54", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bluez-libs-5.54-1.fc32.x86_64.rpm", + "checksum": "sha256:af18c71bca1121ac3cdeace9f7249079ee0568fcbb15ca7e46131fa9b9b521f8", + "check_gpg": true + }, + { + "name": "bluez-mesh", + "epoch": 0, + "version": "5.54", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bluez-mesh-5.54-1.fc32.x86_64.rpm", + "checksum": "sha256:2141f1dec8fe7a442c061f603bf4ee6203e10a290990789af0f4ef9db5523679", + "check_gpg": true + }, + { + "name": "btrfs-progs", + "epoch": 0, + "version": "5.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/btrfs-progs-5.6-1.fc32.x86_64.rpm", + "checksum": "sha256:b67f1634acc7b84b284bda8afeef546aed4a3388dc7df67417001704aa444af1", + "check_gpg": true + }, + { + "name": "bubblewrap", + "epoch": 0, + "version": "0.4.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bubblewrap-0.4.1-1.fc32.x86_64.rpm", + "checksum": "sha256:cd01ae91895e60f189106a159bb551f906a8b663110f421ad6ee83c9e008851e", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.x86_64.rpm", + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2020.2.40", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm", + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/checkpolicy-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:703fb5ca1651bb72d8ab58576ce3d78c9479cbb2e78ff8666ae3a3d1cd9bb0da", + "check_gpg": true + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/chrony-3.5-8.fc32.x86_64.rpm", + "checksum": "sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57", + "check_gpg": true + }, + { + "name": "clevis", + "epoch": 0, + "version": "12", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/clevis-12-2.fc32.x86_64.rpm", + "checksum": "sha256:624b9079b4a571218adced203e19bdaca1d2cf57891f9653f409dd1db92fbf86", + "check_gpg": true + }, + { + "name": "clevis-dracut", + "epoch": 0, + "version": "12", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/clevis-dracut-12-2.fc32.x86_64.rpm", + "checksum": "sha256:5d520576b7ac63cb029c4b0b86398e2b71589df3bafa618018b3729d81036203", + "check_gpg": true + }, + { + "name": "clevis-luks", + "epoch": 0, + "version": "12", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/clevis-luks-12-2.fc32.x86_64.rpm", + "checksum": "sha256:c55b30a3a8c0d36a219953e20960185263ae63dada0f050446066be1e873ce08", + "check_gpg": true + }, + { + "name": "clevis-systemd", + "epoch": 0, + "version": "12", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/clevis-systemd-12-2.fc32.x86_64.rpm", + "checksum": "sha256:0065bc128a5c8b08b57f92651bfa62895221a9f001f1169447a56a8a6671bbae", + "check_gpg": true + }, + { + "name": "compat-readline5", + "epoch": 0, + "version": "5.2", + "release": "36.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-readline5-5.2-36.fc32.x86_64.rpm", + "checksum": "sha256:449d2888d6b835d207a55a2d9b4478eff1b926581fcead6260b6508e4db1b782", + "check_gpg": true + }, + { + "name": "conmon", + "epoch": 2, + "version": "2.0.14", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/conmon-2.0.14-1.fc32.x86_64.rpm", + "checksum": "sha256:769e34caae25f05786ae53e535c6e3c64f5c548f06c422325d68598b7abb99b7", + "check_gpg": true + }, + { + "name": "container-selinux", + "epoch": 2, + "version": "2.130.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/container-selinux-2.130.0-1.fc32.noarch.rpm", + "checksum": "sha256:28d1118b3debda3daee76fc89f250576627a28b3ec39069256ddc212d993ddbc", + "check_gpg": true + }, + { + "name": "containernetworking-plugins", + "epoch": 0, + "version": "0.8.5", + "release": "1.1.gitf5c3d1b.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/containernetworking-plugins-0.8.5-1.1.gitf5c3d1b.fc32.x86_64.rpm", + "checksum": "sha256:0608e0a9922e6748b39bd1719e2dabd6fe283b22cf590f1a3350327ae6c13561", + "check_gpg": true + }, + { + "name": "containers-common", + "epoch": 1, + "version": "0.1.41", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/containers-common-0.1.41-1.fc32.x86_64.rpm", + "checksum": "sha256:30c5f02ed28d59a4d72e020097602091bb8e34d65a6f3be69f4b1dd63a46f892", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-common-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.13", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cpio-2.13-4.fc32.x86_64.rpm", + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "name": "criu", + "epoch": 0, + "version": "3.13", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/criu-3.13-5.fc32.x86_64.rpm", + "checksum": "sha256:59be778afcf464d79f7dc440d6b49de8a9527fd73e7b514573d389bf8a51b246", + "check_gpg": true + }, + { + "name": "crun", + "epoch": 0, + "version": "0.13", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crun-0.13-1.fc32.x86_64.rpm", + "checksum": "sha256:d5acde111b4cafc918decc8b9c530c9a7dfd6cc77b75538d33b32478219ae5da", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "name": "cryptsetup", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-2.3.0-1.fc32.x86_64.rpm", + "checksum": "sha256:e0f9c4327d62e35ee2a066c95dfa37f86021b405515d0f902b72a7437b7b98e9", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.x86_64.rpm", + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/curl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.x86_64.rpm", + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "22", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-broker-22-1.fc32.x86_64.rpm", + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm", + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "name": "dbxtool", + "epoch": 0, + "version": "8", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbxtool-8-11.fc32.x86_64.rpm", + "checksum": "sha256:f729c554ed4ac6335a548380a6f6335a332a3a2aca5321a322415a208701607d", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "name": "device-mapper-event", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-event-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:9a2beeeede69d8910115608c2d98efa6a8dba73ab2df246df5b0f10e2fa37f54", + "check_gpg": true + }, + { + "name": "device-mapper-event-libs", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-event-libs-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:8aa8258a1a13c1120d6c28321f618385111cb9363dae09eea2e4af481053e28b", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "name": "device-mapper-persistent-data", + "epoch": 0, + "version": "0.8.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-persistent-data-0.8.5-3.fc32.x86_64.rpm", + "checksum": "sha256:7a525abda7230bfbc87763dfe58bf7684e385b3c78ca242a1685a589300909e9", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/diffutils-3.7-4.fc32.x86_64.rpm", + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "name": "dmidecode", + "epoch": 1, + "version": "3.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dmidecode-3.2-5.fc32.x86_64.rpm", + "checksum": "sha256:e40be03bd5808e640bb5fb18196499680a7b7b1d3fce47617f987baee849c0e5", + "check_gpg": true + }, + { + "name": "dnsmasq", + "epoch": 0, + "version": "2.80", + "release": "14.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnsmasq-2.80-14.fc32.x86_64.rpm", + "checksum": "sha256:e712179ba8b9b6e93d14c902a6d6a390ba142153384dab9291c808a447b7ed0c", + "check_gpg": true + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dosfstools-4.1-10.fc32.x86_64.rpm", + "checksum": "sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-050-26.git20200316.fc32.x86_64.rpm", + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-config-generic-050-26.git20200316.fc32.x86_64.rpm", + "checksum": "sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73", + "check_gpg": true + }, + { + "name": "dracut-network", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-network-050-26.git20200316.fc32.x86_64.rpm", + "checksum": "sha256:11d6aa88c7e5bbaad38353bbb557ad8370452cd258f2a0d16bfd490116138d67", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "name": "efi-filesystem", + "epoch": 0, + "version": "4", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/efi-filesystem-4-4.fc32.noarch.rpm", + "checksum": "sha256:b743aafa82f3326f8f2e6d5464ae7fa57fabab3ad791099eaf2d151b43208b42", + "check_gpg": true + }, + { + "name": "efibootmgr", + "epoch": 0, + "version": "16", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/efibootmgr-16-7.fc32.x86_64.rpm", + "checksum": "sha256:a7deef0a324ccb272a25f5eb6b30c72d0a842bf2c602c31fe3b60f984b2e50af", + "check_gpg": true + }, + { + "name": "efivar-libs", + "epoch": 0, + "version": "37", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/efivar-libs-37-7.fc32.x86_64.rpm", + "checksum": "sha256:05efccb06aa336d2547eb8fd5b7e0935c883f89084688f32ce0b09954149b796", + "check_gpg": true + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm", + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libelf-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libs-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/expat-2.2.8-2.fc32.x86_64.rpm", + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm", + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-common-32-1.noarch.rpm", + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "name": "fedora-release-iot", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-iot-32-1.noarch.rpm", + "checksum": "sha256:5e7a16df5bdfab2acfd8ac061827ace0642f2e5521689d6b9f0812f2a6ece231", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-repos-32-1.noarch.rpm", + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-libs-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.14", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/filesystem-3.14-2.fc32.x86_64.rpm", + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.7.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/findutils-4.7.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-8.fc32.x86_64.rpm", + "checksum": "sha256:907393755387a351806ec2afff376e7491f177116caadd12f07d0fcbed796750", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-8.fc32.x86_64.rpm", + "checksum": "sha256:f2715fc8a04d33716f40f5b34466e082140df7ff3b7b972c29655d4dfc6e3a72", + "check_gpg": true + }, + { + "name": "firewalld", + "epoch": 0, + "version": "0.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/firewalld-0.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:b8ecd7fa0e7e072828e374dfb0d61bb8eecca7c190f3661050cee5e3fc8854b4", + "check_gpg": true + }, + { + "name": "firewalld-filesystem", + "epoch": 0, + "version": "0.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/firewalld-filesystem-0.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:47538b1db9720be4699329a8da32d873187d0c6c22f45252614ac5b8a8312482", + "check_gpg": true + }, + { + "name": "flashrom", + "epoch": 0, + "version": "1.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/flashrom-1.2-2.fc32.x86_64.rpm", + "checksum": "sha256:317654c97a9dc11fe498b61d4189ff31cd1277250993d826e9bc5815d0485f29", + "check_gpg": true + }, + { + "name": "fonts-filesystem", + "epoch": 0, + "version": "2.0.3", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fonts-filesystem-2.0.3-1.fc32.noarch.rpm", + "checksum": "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012", + "check_gpg": true + }, + { + "name": "fuse", + "epoch": 0, + "version": "2.9.9", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-2.9.9-9.fc32.x86_64.rpm", + "checksum": "sha256:9369d4fed30402f45705b7a5cb51b6eeefb1dabbe0942c84514c6fdf1edac5e0", + "check_gpg": true + }, + { + "name": "fuse-common", + "epoch": 0, + "version": "3.9.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-common-3.9.1-1.fc32.x86_64.rpm", + "checksum": "sha256:45132e53c649def28d63c199d8c3a3b9fd16fa8bca7426ad4e9c202e52a233b4", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-9.fc32.x86_64.rpm", + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "name": "fuse-overlayfs", + "epoch": 0, + "version": "0.7.8", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-overlayfs-0.7.8-1.fc32.x86_64.rpm", + "checksum": "sha256:929f1c5ce4775b28439a1b5726e98c38204930d5880dc6096fc56e8d3eab275f", + "check_gpg": true + }, + { + "name": "fuse3", + "epoch": 0, + "version": "3.9.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse3-3.9.1-1.fc32.x86_64.rpm", + "checksum": "sha256:8df8541abd806578e43fe28a7ea2c41efbbb813866bed35fabe779274790a538", + "check_gpg": true + }, + { + "name": "fuse3-libs", + "epoch": 0, + "version": "3.9.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse3-libs-3.9.1-1.fc32.x86_64.rpm", + "checksum": "sha256:ab4c27523d6b5a0df75febac43cafa2dd9897dc3c1bb2f0d6990ca603b6168fe", + "check_gpg": true + }, + { + "name": "fwupd", + "epoch": 0, + "version": "1.3.9", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fwupd-1.3.9-2.fc32.x86_64.rpm", + "checksum": "sha256:ff5dd4d0c157cf1be9c8dbddce06640c67b2d02ae5a48d6b108bd70fc5c96211", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gawk-5.0.1-7.fc32.x86_64.rpm", + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.x86_64.rpm", + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "name": "gdisk", + "epoch": 0, + "version": "1.0.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gdisk-1.0.5-1.fc32.x86_64.rpm", + "checksum": "sha256:397f0b024d3c58ca6e174c6de5abcb19304d7c58903199e1e6fe02e84d5bcb3a", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.64.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glib-networking-2.64.1-1.fc32.x86_64.rpm", + "checksum": "sha256:5fc2fd0cb5b6fdce1203e43d6f2df6a3098ec9522b04815d896ecedbb1489063", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.64.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glib2-2.64.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-common-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "name": "glibc-minimal-langpack", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-minimal-langpack-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:f36550dfc144e4608da672616fa44b2f2341f99bb38972e66e4a8fef4b59172c", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gmp-6.1.2-13.fc32.x86_64.rpm", + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.13", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnutls-3.6.13-1.fc32.x86_64.rpm", + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.64.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gobject-introspection-1.64.1-1.fc32.x86_64.rpm", + "checksum": "sha256:052ddc487a29acce1b5d44532f79f8ab594d0ac6565504071f4c7706d97fc552", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gpgme-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "name": "greenboot", + "epoch": 0, + "version": "0.9", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/greenboot-0.9-1.fc32.noarch.rpm", + "checksum": "sha256:70794c8537fb3cf197f051cfce3b23956d587062daf114f8480770754804f339", + "check_gpg": true + }, + { + "name": "greenboot-grub2", + "epoch": 0, + "version": "0.9", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/greenboot-grub2-0.9-1.fc32.noarch.rpm", + "checksum": "sha256:fbaf44214a3e93d4bdccb1519768849db5ea204c886df851b49f107e0c443e4a", + "check_gpg": true + }, + { + "name": "greenboot-reboot", + "epoch": 0, + "version": "0.9", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/greenboot-reboot-0.9-1.fc32.noarch.rpm", + "checksum": "sha256:1ec84749250a0095d645f11fa0dcdf8c4500e0bbc303af696762a12616375757", + "check_gpg": true + }, + { + "name": "greenboot-rpm-ostree-grub2", + "epoch": 0, + "version": "0.9", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/greenboot-rpm-ostree-grub2-0.9-1.fc32.noarch.rpm", + "checksum": "sha256:4546444c0647efaa8fa8bf604ace7f7dbd152e74761b8d7a11fa185bc72bece8", + "check_gpg": true + }, + { + "name": "greenboot-status", + "epoch": 0, + "version": "0.9", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/greenboot-status-0.9-1.fc32.noarch.rpm", + "checksum": "sha256:3ab2173d9d4016febcdaf283408f9939d0a7b2fdba3e46a2d45fbef88a1463a0", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grep-3.3-4.fc32.x86_64.rpm", + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "name": "grub2-efi-x64", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-efi-x64-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:aa353206ef29b7d908554ccb7cd6f4c01a1f6c3c1c6358abb7452f4a745939d0", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.36.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gsettings-desktop-schemas-3.36.0-1.fc32.x86_64.rpm", + "checksum": "sha256:d1a369d501e3ce1c17d06418c9cd57c4ada551ecc3b45a581e162215e8bd77f5", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gzip-1.10-2.fc32.x86_64.rpm", + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.23", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/h/hostname-3.23-2.fc32.x86_64.rpm", + "checksum": "sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823", + "check_gpg": true + }, + { + "name": "ignition", + "epoch": 0, + "version": "2.2.1", + "release": "3.git2d3ff58.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ignition-2.2.1-3.git2d3ff58.fc32.x86_64.rpm", + "checksum": "sha256:6749bd0b96339c32b57635b69b474583b50c94e4bbaa3eb8753fa604b9d1c521", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.x86_64.rpm", + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.02", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/initscripts-10.02-3.fc32.x86_64.rpm", + "checksum": "sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339", + "check_gpg": true + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.5.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-5.5.0-1.fc32.x86_64.rpm", + "checksum": "sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684", + "check_gpg": true + }, + { + "name": "iproute-tc", + "epoch": 0, + "version": "5.5.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-tc-5.5.0-1.fc32.x86_64.rpm", + "checksum": "sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae", + "check_gpg": true + }, + { + "name": "ipset", + "epoch": 0, + "version": "7.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipset-7.6-1.fc32.x86_64.rpm", + "checksum": "sha256:7c21c21c3e3dbace06bee03fe4835ae6cb1e3ef86750ba2853f39d40dead2309", + "check_gpg": true + }, + { + "name": "ipset-libs", + "epoch": 0, + "version": "7.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipset-libs-7.6-1.fc32.x86_64.rpm", + "checksum": "sha256:f60fc561675e41ffa2c48b229960291e2438441d5ed758c1f28cb06b5d4e4ea9", + "check_gpg": true + }, + { + "name": "iptables", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-1.8.4-7.fc32.x86_64.rpm", + "checksum": "sha256:28f4bcbf53258114ebbf0a167351d67e204ff6f717b49b3893c2372845e6bd0a", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-libs-1.8.4-7.fc32.x86_64.rpm", + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "name": "iptables-nft", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-nft-1.8.4-7.fc32.x86_64.rpm", + "checksum": "sha256:08c41c10745c172c34880e384cf5cff014a9627f4895e59fa482948b27e2ce9e", + "check_gpg": true + }, + { + "name": "iputils", + "epoch": 0, + "version": "20190515", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iputils-20190515-5.fc32.x86_64.rpm", + "checksum": "sha256:6a3282927f525629bc0aaf4090e108d33b0709d3d5b35bc442000c2837e7b9b4", + "check_gpg": true + }, + { + "name": "iwd", + "epoch": 0, + "version": "1.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwd-1.6-1.fc32.x86_64.rpm", + "checksum": "sha256:1a2f22eed83ef568021c464cce841ef98725b614093f2c518307e85d5b6e759b", + "check_gpg": true + }, + { + "name": "iwl100-firmware", + "epoch": 0, + "version": "39.31.5.1", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwl100-firmware-39.31.5.1-106.fc32.noarch.rpm", + "checksum": "sha256:65e5209398c6b2c196cb42f3bc3f82e00af1026f623026857a9b330ec92d0330", + "check_gpg": true + }, + { + "name": "iwl1000-firmware", + "epoch": 1, + "version": "39.31.5.1", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwl1000-firmware-39.31.5.1-106.fc32.noarch.rpm", + "checksum": "sha256:032e4944fe53dc7a11ae62d746579177a5c52b00a4ad5540da8221aa287fdf18", + "check_gpg": true + }, + { + "name": "iwl105-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwl105-firmware-18.168.6.1-106.fc32.noarch.rpm", + "checksum": "sha256:79e22d23ba0a156b3d74ec4b0da8fd71bc632386366ade2c48006ba82074055d", + "check_gpg": true + }, + { + "name": "iwl135-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwl135-firmware-18.168.6.1-106.fc32.noarch.rpm", + "checksum": "sha256:b286141f38cd88b8c632515677423f49c81365f2ae99c5a7906205f35a273fb2", + "check_gpg": true + }, + { + "name": "iwl2000-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwl2000-firmware-18.168.6.1-106.fc32.noarch.rpm", + "checksum": "sha256:caa3625b22908cf4f91faf2c281b0e7ab7d981c35ed1d761deb53b7b78d13cf8", + "check_gpg": true + }, + { + "name": "iwl2030-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwl2030-firmware-18.168.6.1-106.fc32.noarch.rpm", + "checksum": "sha256:5d933f9bf444d4c8732caa65e9227b27127c625840859a0453a32a5719916f48", + "check_gpg": true + }, + { + "name": "iwl3160-firmware", + "epoch": 1, + "version": "25.30.13.0", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwl3160-firmware-25.30.13.0-106.fc32.noarch.rpm", + "checksum": "sha256:4659e7b76850ce5dedbe80fb0a64947e83f15f907b35c5819d91be6ed0523653", + "check_gpg": true + }, + { + "name": "iwl5000-firmware", + "epoch": 0, + "version": "8.83.5.1_1", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwl5000-firmware-8.83.5.1_1-106.fc32.noarch.rpm", + "checksum": "sha256:d7f57b9190c9cf05c36fe9fb3229330cdb9f0a1af1214a47b0a38dcc8ce929ee", + "check_gpg": true + }, + { + "name": "iwl5150-firmware", + "epoch": 0, + "version": "8.24.2.2", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwl5150-firmware-8.24.2.2-106.fc32.noarch.rpm", + "checksum": "sha256:88d283c2d5aa96c2b0899f6bd6c0409a5d5c6fda2958e8eae19eb49c3ede58d6", + "check_gpg": true + }, + { + "name": "iwl6000-firmware", + "epoch": 0, + "version": "9.221.4.1", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwl6000-firmware-9.221.4.1-106.fc32.noarch.rpm", + "checksum": "sha256:89f85f749bfee7d083c84845e908a3471297a3d8a75f7397903d15eb7f403297", + "check_gpg": true + }, + { + "name": "iwl6050-firmware", + "epoch": 0, + "version": "41.28.5.1", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwl6050-firmware-41.28.5.1-106.fc32.noarch.rpm", + "checksum": "sha256:83a08b7066000ebbdf8a6c5706485a19b5dfe2d492b1faaac1922e8f0c42cd0c", + "check_gpg": true + }, + { + "name": "iwl7260-firmware", + "epoch": 1, + "version": "25.30.13.0", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iwl7260-firmware-25.30.13.0-106.fc32.noarch.rpm", + "checksum": "sha256:a3f80bb7068618dff795b3e0a3d32fa3c640e492c8f175b16bb3c7ff64a88a8e", + "check_gpg": true + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.12", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/jansson-2.12-5.fc32.x86_64.rpm", + "checksum": "sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8", + "check_gpg": true + }, + { + "name": "jitterentropy", + "epoch": 0, + "version": "2.2.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/jitterentropy-2.2.0-2.fc32.x86_64.rpm", + "checksum": "sha256:872639e4ccb4f1c5de66d5eaa85ca673141b10e3d614b33c84ff887c228d465d", + "check_gpg": true + }, + { + "name": "jose", + "epoch": 0, + "version": "10", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/jose-10-6.fc32.x86_64.rpm", + "checksum": "sha256:d7fec1fb54953f1901cc505c225af94cb61f2206d0503be12313169a4b915e18", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/json-c-0.13.1-9.fc32.x86_64.rpm", + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/json-glib-1.4.4-4.fc32.x86_64.rpm", + "checksum": "sha256:8a03d482b5294f7452b2f9ce31ebb6aea9eefac002281c1b9152fbb1a0341987", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-2.2.0-1.fc32.x86_64.rpm", + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "name": "kernel", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-5.6.6-300.fc32.x86_64.rpm", + "checksum": "sha256:89c972ec7d2ab305c91c23bc248562c76f0ae645a9ed9f94d312e2f57c4d38fe", + "check_gpg": true + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-core-5.6.6-300.fc32.x86_64.rpm", + "checksum": "sha256:a1613e90865db93fb578b8ee1a4ee40bd396c6c9f2fb2a14757acacecb9f23e8", + "check_gpg": true + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-modules-5.6.6-300.fc32.x86_64.rpm", + "checksum": "sha256:b98687828b1d222ea73ebb8457450913dac58dd0be2e430a93bb7e98ba816505", + "check_gpg": true + }, + { + "name": "kernel-tools", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-tools-5.6.6-300.fc32.x86_64.rpm", + "checksum": "sha256:e291d6c021eaa01cc3c446b76c94aafde444936b8ba3f08a7fe7cbe66a23366b", + "check_gpg": true + }, + { + "name": "kernel-tools-libs", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-tools-libs-5.6.6-300.fc32.x86_64.rpm", + "checksum": "sha256:150815dd62da40fee60ad5ceb988938c3be01e03aa54a025772b33a7a2c11311", + "check_gpg": true + }, + { + "name": "keyutils", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/keyutils-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:9ee276ed9d036a4483bb8d1bd6f6d697b161a04276c6ce5f1d3f40d48e04bccb", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-27-1.fc32.x86_64.rpm", + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-libs-27-1.fc32.x86_64.rpm", + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kpartx-0.8.2-3.fc32.x86_64.rpm", + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/krb5-libs-1.18-1.fc32.x86_64.rpm", + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "name": "less", + "epoch": 0, + "version": "551", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/less-551-3.fc32.x86_64.rpm", + "checksum": "sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libacl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.111", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libaio-0.3.111-7.fc32.x86_64.rpm", + "checksum": "sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.2", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libarchive-3.4.2-1.fc32.x86_64.rpm", + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libargon2-20171227-4.fc32.x86_64.rpm", + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libassuan-2.5.3-3.fc32.x86_64.rpm", + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libattr-2.4.48-8.fc32.x86_64.rpm", + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libblkid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "name": "libbrotli", + "epoch": 0, + "version": "1.0.7", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbrotli-1.0.7-10.fc32.x86_64.rpm", + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "name": "libbsd", + "epoch": 0, + "version": "0.10.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbsd-0.10.0-2.fc32.x86_64.rpm", + "checksum": "sha256:d74b76ce8c2c7306cc3f012d1ec56b1d5c67788748f56ecd505f257d342f97ee", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-2.26-7.fc32.x86_64.rpm", + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-ng-0.7.10-2.fc32.x86_64.rpm", + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "name": "libcbor", + "epoch": 0, + "version": "0.5.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcbor-0.5.0-7.fc32.x86_64.rpm", + "checksum": "sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcom_err-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcroco-0.6.13-3.fc32.x86_64.rpm", + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcurl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "32.20191231cvs.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libedit-3.1-32.20191231cvs.fc32.x86_64.rpm", + "checksum": "sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09", + "check_gpg": true + }, + { + "name": "libell", + "epoch": 0, + "version": "0.30", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libell-0.30-1.fc32.x86_64.rpm", + "checksum": "sha256:39961756e07f6f49ddf2ff277dc04a63fa4d5b4fb035480945bd2f665ba1dd4d", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libevent-2.1.8-8.fc32.x86_64.rpm", + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfdisk-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libffi-3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "name": "libfido2", + "epoch": 0, + "version": "1.3.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfido2-1.3.1-1.fc32.x86_64.rpm", + "checksum": "sha256:ebbace15f986288bba7681f44a111b14bcc7cae00b7a1faadaa838bd51897357", + "check_gpg": true + }, + { + "name": "libftdi", + "epoch": 0, + "version": "1.4", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libftdi-1.4-2.fc32.x86_64.rpm", + "checksum": "sha256:14bd7e305e13795e0d37c613dfa3ead3a3219d28c32b27ad6527d3592361923d", + "check_gpg": true + }, + { + "name": "libgcab1", + "epoch": 0, + "version": "1.4", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcab1-1.4-2.fc32.x86_64.rpm", + "checksum": "sha256:aac9be36fc9c345245b4a0db66bfb9ff8df25e36ae0c1ae89eca9bcf88e052e4", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcc-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-3.fc32.x86_64.rpm", + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgomp-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgpg-error-1.36-3.fc32.x86_64.rpm", + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "name": "libgpiod", + "epoch": 0, + "version": "1.5.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgpiod-1.5.1-1.fc32.x86_64.rpm", + "checksum": "sha256:c8daa43a4504f9a4b6c106baf8a56aa0d256fc3c71bd417ea75b9c7fd830a9b7", + "check_gpg": true + }, + { + "name": "libgpiod-utils", + "epoch": 0, + "version": "1.5.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgpiod-utils-1.5.1-1.fc32.x86_64.rpm", + "checksum": "sha256:b3201777d78ee13ee45ddbd982af5999ce058907b5dc552669644931b79c5f51", + "check_gpg": true + }, + { + "name": "libgudev", + "epoch": 0, + "version": "232", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgudev-232-7.fc32.x86_64.rpm", + "checksum": "sha256:824fe37d58cadac2f23678c9eb95c29b4acb1852df97cf799e77aa7e8034b54e", + "check_gpg": true + }, + { + "name": "libgusb", + "epoch": 0, + "version": "0.3.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgusb-0.3.4-1.fc32.x86_64.rpm", + "checksum": "sha256:86acbe8d77b05c1fe9bb0168443a579b1d4538f9733813db4e72e4a4a2be29e3", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libidn2-2.3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "name": "libjose", + "epoch": 0, + "version": "10", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libjose-10-6.fc32.x86_64.rpm", + "checksum": "sha256:ff44071d53a2ed543c2ddad99cca8fc25493cbefc5d7ad869f9b6dbda340a465", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libksba-1.3.5-11.fc32.x86_64.rpm", + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "name": "libluksmeta", + "epoch": 0, + "version": "9", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libluksmeta-9-7.fc32.x86_64.rpm", + "checksum": "sha256:2434cd04a437c06f59d67ee2580443c0ba676c39440cd0f74cca768ec57577f9", + "check_gpg": true + }, + { + "name": "libmbim", + "epoch": 0, + "version": "1.22.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmbim-1.22.0-1.fc32.x86_64.rpm", + "checksum": "sha256:de74076fc5073ad07ffa78fed6e7cd8f10133d99c1c73149b4ac74428699a6d1", + "check_gpg": true + }, + { + "name": "libmbim-utils", + "epoch": 0, + "version": "1.22.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmbim-utils-1.22.0-1.fc32.x86_64.rpm", + "checksum": "sha256:4eb6a2e34173a2b6ca7db031cecce56c0bed711691abf1c8d6bfe6cb7ca45dc0", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-10.fc32.x86_64.rpm", + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmnl-1.0.4-11.fc32.x86_64.rpm", + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "21.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmodman-2.0.1-21.fc32.x86_64.rpm", + "checksum": "sha256:9ebc5843faeb852bbbe3d53f03182197f6595a928ffa3f5d7a530749ee1e4ec8", + "check_gpg": true + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.16", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmodulemd1-1.8.16-2.fc32.x86_64.rpm", + "checksum": "sha256:aa5b658fd4a95c724b61eddadecdbcbc1b2a813ae681318ab092a2ed03954825", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmount-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libndp-1.7-5.fc32.x86_64.rpm", + "checksum": "sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f", + "check_gpg": true + }, + { + "name": "libnet", + "epoch": 0, + "version": "1.1.6", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnet-1.1.6-19.fc32.x86_64.rpm", + "checksum": "sha256:b359ca3cdc68b6e5031f65975df38a8b96c19ddc4c367e1e3463fc8484a0b3b7", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.x86_64.rpm", + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "17.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.x86_64.rpm", + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "name": "libnftnl", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnftnl-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:3afab9512fd4d56a13c95b530c805ac8b2bc872572ec5bb435eccdd59fbbc8b6", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.40.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnghttp2-1.40.0-2.fc32.x86_64.rpm", + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnl3-3.5.0-2.fc32.x86_64.rpm", + "checksum": "sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "6.20180605git4a062cf.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64.rpm", + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpcap-1.9.1-3.fc32.x86_64.rpm", + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "name": "libpkgconf", + "epoch": 0, + "version": "1.6.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpkgconf-1.6.3-3.fc32.x86_64.rpm", + "checksum": "sha256:6952dfc6a8f583c9aeafb16d5d34208d7e39fd7ec8628c5aa8ccde039acbe548", + "check_gpg": true + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "17.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libproxy-0.4.15-17.fc32.x86_64.rpm", + "checksum": "sha256:5a4c0187b96690e0088057f7656c67d399fad44b28b86644e3434c581377c229", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpsl-0.21.0-4.fc32.x86_64.rpm", + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpwquality-1.4.2-2.fc32.x86_64.rpm", + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "name": "libqmi", + "epoch": 0, + "version": "1.24.8", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libqmi-1.24.8-1.fc32.x86_64.rpm", + "checksum": "sha256:5ad0d1b4e641e5d2fe7f6385ace0f827a431c5a52c6dc3516d85e655caca880f", + "check_gpg": true + }, + { + "name": "libqmi-utils", + "epoch": 0, + "version": "1.24.8", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libqmi-utils-1.24.8-1.fc32.x86_64.rpm", + "checksum": "sha256:64922311f45700f2f4f98d78efbdfa240987a6a2b1396ffe694d30e2b5f34ac3", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.11.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/librepo-1.11.1-4.fc32.x86_64.rpm", + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libseccomp-2.4.2-3.fc32.x86_64.rpm", + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.20.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsecret-0.20.2-2.fc32.x86_64.rpm", + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-utils-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsemanage-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsepol-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsigsegv-2.11-10.fc32.x86_64.rpm", + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsmartcols-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "name": "libsmbios", + "epoch": 0, + "version": "2.4.2", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsmbios-2.4.2-7.fc32.x86_64.rpm", + "checksum": "sha256:cbfc109588fa0e34bdc408dbb37dadf7873fb5788dd3fd8cd04c17c75f26e6db", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsolv-0.7.11-2.fc32.x86_64.rpm", + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.70.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsoup-2.70.0-1.fc32.x86_64.rpm", + "checksum": "sha256:b09015ae5fb5772b73bc7932991aaf6e1f6d509432af605a565ef53d2d50606a", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libss-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-0.9.3-2.fc32.x86_64.rpm", + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm", + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:599549d72d26b48c45156585a5698898c853e56469142e202d3749b781428465", + "check_gpg": true + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:66bb5b2e99d2c74b82943fe61fe9b9a3674350b0242f69a6854ec9718dcf5e07", + "check_gpg": true + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:af66820023c984d8b981ecac715d0c2daec1f89dcb69bed76ddf58b0ee80c1b1", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "name": "libsysfs", + "epoch": 0, + "version": "2.1.0", + "release": "28.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsysfs-2.1.0-28.fc32.x86_64.rpm", + "checksum": "sha256:64567be564634937bd918d33a3f04017808d29269a5b0891a0f4d4aecad6161b", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.16.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtasn1-4.16.0-1.fc32.x86_64.rpm", + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.2.5", + "release": "1.rc2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.x86_64.rpm", + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libunistring-0.9.10-7.fc32.x86_64.rpm", + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libusbx-1.0.23-1.fc32.x86_64.rpm", + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuser-0.62-24.fc32.x86_64.rpm", + "checksum": "sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "18.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libutempter-1.1.6-18.fc32.x86_64.rpm", + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuuid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "name": "libvarlink-util", + "epoch": 0, + "version": "18", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libvarlink-util-18-3.fc32.x86_64.rpm", + "checksum": "sha256:a7452c18c2cffc266ec36c54105b884c4d63181f20cebd705e33730534cb9093", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libverto-0.3.0-9.fc32.x86_64.rpm", + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.10.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.x86_64.rpm", + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.10", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxml2-2.9.10-3.fc32.x86_64.rpm", + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "name": "libxmlb", + "epoch": 0, + "version": "0.1.14", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxmlb-0.1.14-2.fc32.x86_64.rpm", + "checksum": "sha256:ad50ed0c4f4c956e3b59ac9fc7bf5fba22068a661ea75a46eb81bc2209af4cc5", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libyaml-0.2.2-3.fc32.x86_64.rpm", + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libzstd-1.4.4-2.fc32.x86_64.rpm", + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "name": "linux-atm-libs", + "epoch": 0, + "version": "2.5.1", + "release": "26.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-26.fc32.x86_64.rpm", + "checksum": "sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467", + "check_gpg": true + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20200316", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-20200316-106.fc32.noarch.rpm", + "checksum": "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4", + "check_gpg": true + }, + { + "name": "linux-firmware-whence", + "epoch": 0, + "version": "20200316", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-whence-20200316-106.fc32.noarch.rpm", + "checksum": "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-7.fc32.x86_64.rpm", + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "name": "luksmeta", + "epoch": 0, + "version": "9", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/luksmeta-9-7.fc32.x86_64.rpm", + "checksum": "sha256:9fa1959637c902dfeb19a0f16c7f42f7da4aab293f7c025c66d39debad6dbc34", + "check_gpg": true + }, + { + "name": "lvm2", + "epoch": 0, + "version": "2.03.09", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lvm2-2.03.09-1.fc32.x86_64.rpm", + "checksum": "sha256:3b76bc46dd279404408d34946cfdb0c3899359a1c6b48e614e63d1259a94262a", + "check_gpg": true + }, + { + "name": "lvm2-libs", + "epoch": 0, + "version": "2.03.09", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lvm2-libs-2.03.09-1.fc32.x86_64.rpm", + "checksum": "sha256:e851ba0019baa83e1bebbe92e1a1cf629694ccf3b42c5ff84e0ed7bea74931d3", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-2.fc32.x86_64.rpm", + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "name": "lzo", + "epoch": 0, + "version": "2.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lzo-2.10-2.fc32.x86_64.rpm", + "checksum": "sha256:4375c398dff722a29bd1700bc8dc8b528345412d1e17d8d9d1176d9774962957", + "check_gpg": true + }, + { + "name": "microcode_ctl", + "epoch": 2, + "version": "2.1", + "release": "35.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/microcode_ctl-2.1-35.fc32.x86_64.rpm", + "checksum": "sha256:95a89032291b05a0e483f336ea29897d951e8845b0f347a4117de90ef3ef3467", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mkpasswd-5.5.6-1.fc32.x86_64.rpm", + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "name": "mokutil", + "epoch": 2, + "version": "0.3.0", + "release": "15.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mokutil-0.3.0-15.fc32.x86_64.rpm", + "checksum": "sha256:9cf9b01f2c727e3576a8aa71fd7fe1bf4ec9ed1c9f50b756657cf9aeae18418f", + "check_gpg": true + }, + { + "name": "mozjs60", + "epoch": 0, + "version": "60.9.0", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mozjs60-60.9.0-5.fc32.x86_64.rpm", + "checksum": "sha256:80cf220a3314f965c088e03d2b750426767db0b36b6b7c5e8059b9217ff4de6d", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "4.0.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mpfr-4.0.2-3.fc32.x86_64.rpm", + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm", + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nettle-3.5.1-5.fc32.x86_64.rpm", + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "name": "nftables", + "epoch": 1, + "version": "0.9.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nftables-0.9.3-2.fc32.x86_64.rpm", + "checksum": "sha256:0b7d24759aac33303ff4b101c111dea03ff2529efc95661140e22f629cc1ab7a", + "check_gpg": true + }, + { + "name": "nmap-ncat", + "epoch": 2, + "version": "7.80", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nmap-ncat-7.80-3.fc32.x86_64.rpm", + "checksum": "sha256:e2566356943c1c7485d206b858dd6ae3be37c28bfec2a43f869193f3b5b9cd23", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/npth-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "name": "nss-altfiles", + "epoch": 0, + "version": "2.18.1", + "release": "16.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nss-altfiles-2.18.1-16.fc32.x86_64.rpm", + "checksum": "sha256:42fcfac5037eab4099648e0f0ed3eb2aec6eb6a23a9e3808f9b69619ea7c44e3", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openldap-2.4.47-4.fc32.x86_64.rpm", + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-8.2p1-2.fc32.x86_64.rpm", + "checksum": "sha256:0d51c1319ee78978e6ea5a49b815c2078b4ffd4d575e98c70e54ca01c3390eb8", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-clients-8.2p1-2.fc32.x86_64.rpm", + "checksum": "sha256:8b148415fb6a583ef131d0ddff44f3209c30d0299fde7b20cd3ea385590927c1", + "check_gpg": true + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-server-8.2p1-2.fc32.x86_64.rpm", + "checksum": "sha256:d1e244b8b5ce7404846e97d96c762c8c18ff6447301f6fc63f50e615029aa7cd", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.x86_64.rpm", + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/os-prober-1.77-4.fc32.x86_64.rpm", + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "name": "ostree", + "epoch": 0, + "version": "2020.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/ostree-2020.3-2.fc32.x86_64.rpm", + "checksum": "sha256:ec64add7d60a70fbaf14a083929f22bd2637c33d20d2a30b7e842caa6040f817", + "check_gpg": true + }, + { + "name": "ostree-libs", + "epoch": 0, + "version": "2020.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/ostree-libs-2020.3-2.fc32.x86_64.rpm", + "checksum": "sha256:3343d9e7c90bd58e1e44ee07e7c59bb570ffc74da50f0607c5f5681a00b70e76", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pam-1.3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/passwd-0.80-8.fc32.x86_64.rpm", + "checksum": "sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719", + "check_gpg": true + }, + { + "name": "pciutils-libs", + "epoch": 0, + "version": "3.6.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pciutils-libs-3.6.4-1.fc32.x86_64.rpm", + "checksum": "sha256:e5efc87172d7081559137feaa221047385a5e248ffafd9794c2bfc73b61f8f37", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.44", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre-8.44-1.fc32.x86_64.rpm", + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-10.34-9.fc32.x86_64.rpm", + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "name": "pcre2-syntax", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm", + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pigz-2.4-6.fc32.x86_64.rpm", + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pinentry-1.1.0-7.fc32.x86_64.rpm", + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "name": "pkgconf", + "epoch": 0, + "version": "1.6.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pkgconf-1.6.3-3.fc32.x86_64.rpm", + "checksum": "sha256:5c91890bf33527b9fb422cbed17600e761750a4e596fad3f0d0fa419070e82b0", + "check_gpg": true + }, + { + "name": "pkgconf-m4", + "epoch": 0, + "version": "1.6.3", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pkgconf-m4-1.6.3-3.fc32.noarch.rpm", + "checksum": "sha256:0bace0cf41921db39247c99bfccb228818b83b68c7b8be7c8c4a92ea298a9a29", + "check_gpg": true + }, + { + "name": "pkgconf-pkg-config", + "epoch": 0, + "version": "1.6.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pkgconf-pkg-config-1.6.3-3.fc32.x86_64.rpm", + "checksum": "sha256:4a7b63b32f176b8861f6ac7363bc8010caea0c323eaa83167227118f05603022", + "check_gpg": true + }, + { + "name": "podman", + "epoch": 2, + "version": "1.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/podman-1.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:ccdfb24da56aa394a64cf2f0c6ac6d15d0ebd6054686bd2ab27641a5502329be", + "check_gpg": true + }, + { + "name": "podman-plugins", + "epoch": 2, + "version": "1.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/podman-plugins-1.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:536a157da5332c0bdacb3e5891e3012b79b18fcdedb63b393110d6eb8b04e428", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "name": "policycoreutils-python-utils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-python-utils-3.0-2.fc32.noarch.rpm", + "checksum": "sha256:3cd56dea57c00e2c4a9d5aac69a1e843ebef581ba76dde9d9878082fa1215485", + "check_gpg": true + }, + { + "name": "polkit", + "epoch": 0, + "version": "0.116", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-0.116-7.fc32.x86_64.rpm", + "checksum": "sha256:d49f0b1c8ecf9bc808ae93e9298a40fbcc124fe67c3bbdd37705b6b5d8cfdd87", + "check_gpg": true + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.116", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-libs-0.116-7.fc32.x86_64.rpm", + "checksum": "sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386", + "check_gpg": true + }, + { + "name": "polkit-pkla-compat", + "epoch": 0, + "version": "0.1", + "release": "16.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-pkla-compat-0.1-16.fc32.x86_64.rpm", + "checksum": "sha256:7c7eff31251dedcc3285a8b08c1b18f7fd9ee2e07dff86ad090f45a81e19e85e", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/popt-1.16-19.fc32.x86_64.rpm", + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-7.fc32.x86_64.rpm", + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "name": "protobuf-c", + "epoch": 0, + "version": "1.3.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/protobuf-c-1.3.2-2.fc32.x86_64.rpm", + "checksum": "sha256:52fe378ffab317ec4d26ae5fc0389dec874002a8d70a9413cefb68c7b16b0612", + "check_gpg": true + }, + { + "name": "psmisc", + "epoch": 0, + "version": "23.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/psmisc-23.3-3.fc32.x86_64.rpm", + "checksum": "sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm", + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:b1111e77a5fdbacaa04acc90d3844706158bc5892173862928705620b8910adb", + "check_gpg": true + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dbus-1.2.16-1.fc32.x86_64.rpm", + "checksum": "sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070", + "check_gpg": true + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.4.0", + "release": "6.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-decorator-4.4.0-6.fc32.noarch.rpm", + "checksum": "sha256:129adf9147d5d120546ca8e0fb5f165761106d386d366fe82591e372754d0b4a", + "check_gpg": true + }, + { + "name": "python3-firewall", + "epoch": 0, + "version": "0.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-firewall-0.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:8ee8c4bbf024b998ffb77a6b4194a2306ac21c5a6fcf70c8c81a0fbf38f7c7fc", + "check_gpg": true + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.36.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gobject-base-3.36.0-2.fc32.x86_64.rpm", + "checksum": "sha256:34411604a91c301dc8489285065c68f3a2f50910717097fedcaade6481c7469e", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libs-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libselinux-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124", + "check_gpg": true + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libsemanage-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:55bafcdf9c31b1456af3bf584bfe7ac745a03f4decd17197ea97b498d68b3b82", + "check_gpg": true + }, + { + "name": "python3-nftables", + "epoch": 1, + "version": "0.9.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-nftables-0.9.3-2.fc32.x86_64.rpm", + "checksum": "sha256:0fc0193d95d69c780b6feb1cb74759ca2d4804701b3de936dac8429cfbe0f2e9", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-policycoreutils-3.0-2.fc32.noarch.rpm", + "checksum": "sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2", + "check_gpg": true + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.3.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setools-4.3.0-1.fc32.x86_64.rpm", + "checksum": "sha256:6f5f53b66f7c3bf6958f6f163788583265ff0360188620c3b0f7ddedeac3d1f4", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.14.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-six-1.14.0-2.fc32.noarch.rpm", + "checksum": "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f", + "check_gpg": true + }, + { + "name": "python3-slip", + "epoch": 0, + "version": "0.6.4", + "release": "19.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-slip-0.6.4-19.fc32.noarch.rpm", + "checksum": "sha256:d2abba1a0523bd9df5073900593ab13ec2ed2e391440be4d883314fa154370f8", + "check_gpg": true + }, + { + "name": "python3-slip-dbus", + "epoch": 0, + "version": "0.6.4", + "release": "19.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-slip-dbus-0.6.4-19.fc32.noarch.rpm", + "checksum": "sha256:cb0c64cc81e0b384bbc9d27ffcb2a655b13c91a799aad8972264aed1767926a3", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.x86_64.rpm", + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/readline-8.0-4.fc32.x86_64.rpm", + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "name": "rng-tools", + "epoch": 0, + "version": "6.9", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rng-tools-6.9-3.fc32.x86_64.rpm", + "checksum": "sha256:4cd01a3135b9e72906eaf4552e29929334dcccee2ed092a38bf60698522ecd5f", + "check_gpg": true + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "27.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rootfiles-8.1-27.fc32.noarch.rpm", + "checksum": "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "name": "rpm-ostree", + "epoch": 0, + "version": "2020.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-ostree-2020.1-1.fc32.x86_64.rpm", + "checksum": "sha256:ee664c392a97cdd272f57980c6856b2c57567005fa0ad9cb16c388b645d014f1", + "check_gpg": true + }, + { + "name": "rpm-ostree-libs", + "epoch": 0, + "version": "2020.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-ostree-libs-2020.1-1.fc32.x86_64.rpm", + "checksum": "sha256:9d220d8ee28cd0adf28e8fef547af92c3ec66e238747165939cf8e1a413ddf83", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "name": "rsync", + "epoch": 0, + "version": "3.1.3", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rsync-3.1.3-11.fc32.x86_64.rpm", + "checksum": "sha256:024dd8a75eb5472692d0291292d25939b97a0295e5ab0958dcd22600d392eaae", + "check_gpg": true + }, + { + "name": "runc", + "epoch": 2, + "version": "1.0.0", + "release": "144.dev.gite6555cc.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/runc-1.0.0-144.dev.gite6555cc.fc32.x86_64.rpm", + "checksum": "sha256:c50ff544430830086ce484b20a2b6eaa934c82b6277a6f4fb02fc8cbc9e25db7", + "check_gpg": true + }, + { + "name": "screen", + "epoch": 0, + "version": "4.8.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/screen-4.8.0-2.fc32.x86_64.rpm", + "checksum": "sha256:96e0c019cb91d8deefb7664cfe417807d23562d2a1bfd2cbfd1051e243136b57", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sed-4.5-5.fc32.x86_64.rpm", + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "name": "setools-console", + "epoch": 0, + "version": "4.3.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/setools-console-4.3.0-1.fc32.x86_64.rpm", + "checksum": "sha256:84c338b327a3fb2f6edb79caa2242804fff8c83ffa3db0d9227f55eef4107b2a", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.6", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm", + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.8.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shadow-utils-4.8.1-2.fc32.x86_64.rpm", + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.15", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shared-mime-info-1.15-3.fc32.x86_64.rpm", + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "name": "shim-x64", + "epoch": 0, + "version": "15", + "release": "8", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shim-x64-15-8.x86_64.rpm", + "checksum": "sha256:ee1681ee1ae6a3f86a876562939fbfe415ba78b0a803059e1b6d6cd63b0fa1a3", + "check_gpg": true + }, + { + "name": "skopeo", + "epoch": 1, + "version": "0.1.41", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/skopeo-0.1.41-1.fc32.x86_64.rpm", + "checksum": "sha256:f14d3b113e2c3ba3f8ab7a8146439924f38487c20dd533062616f17f500ff46b", + "check_gpg": true + }, + { + "name": "slirp4netns", + "epoch": 0, + "version": "0.4.3", + "release": "6.0.dev.gita8414d1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/slirp4netns-0.4.3-6.0.dev.gita8414d1.fc32.x86_64.rpm", + "checksum": "sha256:14cf772225c04c005add71372fce866e90f7144c27bbb8e846ce7887e0d286e0", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.31.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-client-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:699c1a3ff311bbaa2380c085fb4f516aa08be474bed02bcd1569d0bbf5b22d07", + "check_gpg": true + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.9.0", + "release": "0.1.b4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sudo-1.9.0-0.1.b4.fc32.x86_64.rpm", + "checksum": "sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-libs-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-pam-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm", + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-udev-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tar-1.32-4.fc32.x86_64.rpm", + "checksum": "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b", + "check_gpg": true + }, + { + "name": "tmux", + "epoch": 0, + "version": "3.0a", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tmux-3.0a-2.fc32.x86_64.rpm", + "checksum": "sha256:ea5f929563fb9ca0cf08da250c62c93d4755f4a41c1aca23eeeaf3e58e90d766", + "check_gpg": true + }, + { + "name": "tpm2-tools", + "epoch": 0, + "version": "4.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tpm2-tools-4.1-2.fc32.x86_64.rpm", + "checksum": "sha256:8c560f3927e36e41657067e4bdc741fd8f3b55b497f0fc3c2331fb361ba8de8b", + "check_gpg": true + }, + { + "name": "tpm2-tss", + "epoch": 0, + "version": "2.4.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tpm2-tss-2.4.0-1.fc32.x86_64.rpm", + "checksum": "sha256:90bc2171f438ffa7488a9c69cd86bb1de175807be468f285c8ca16cf8dd4a83c", + "check_gpg": true + }, + { + "name": "traceroute", + "epoch": 3, + "version": "2.1.0", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/traceroute-2.1.0-10.fc32.x86_64.rpm", + "checksum": "sha256:c3e2a3c23288899456fb996f3074c10637bcd4886bc446698cb1efa2734c1e4d", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tss2-1331-4.fc32.x86_64.rpm", + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm", + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/util-linux-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.2.525", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/v/vim-minimal-8.2.525-1.fc32.x86_64.rpm", + "checksum": "sha256:4fca21cfdcbed052e3e9e1eff74c22fb8ffb1fbbeb63e87e2aa540e43a8c0d09", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/which-2.21-19.fc32.x86_64.rpm", + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm", + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "name": "wpa_supplicant", + "epoch": 1, + "version": "2.9", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/wpa_supplicant-2.9-3.fc32.x86_64.rpm", + "checksum": "sha256:9dcc75ac945924ce496c9280e7ac31b88886d94a6494d0710725a81dd9d42c9a", + "check_gpg": true + }, + { + "name": "wpan-tools", + "epoch": 0, + "version": "0.9", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/wpan-tools-0.9-4.fc32.x86_64.rpm", + "checksum": "sha256:d61ea8b6299f00397f740b73de146ef4daa6d6bb5863d525459765fa0f23a991", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.29", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm", + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-libs-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "name": "yajl", + "epoch": 0, + "version": "2.1.0", + "release": "14.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/y/yajl-2.1.0-14.fc32.x86_64.rpm", + "checksum": "sha256:9194788f87e4a1aa8835f1305d290cc2cd67cee6a5b1ab82643d3a068c0145b6", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "21.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zlib-1.2.11-21.fc32.x86_64.rpm", + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + }, + { + "name": "zram", + "epoch": 0, + "version": "0.4", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zram-0.4-1.fc32.noarch.rpm", + "checksum": "sha256:3f7861ea2d8b4380b567f629a86fa31951a55f46f6eee017cb84ed87baf2c19e", + "check_gpg": true + } + ], + "checksums": { + "0": "sha256:c7f7c29a8ca90e226d2efee6d5856f2dea1d64ea758dfd114d75b4b20b56de1c" + } + }, + "image-info": { + "firewall-enabled": [ + "ssh", + "mdns", + "dhcpv6-client" + ], + "groups": [ + "root:x:0:", + "wheel:x:10:" + ], + "groups-system": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:992:", + "clevis:x:998:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "dnsmasq:x:991:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:997:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "polkitd:x:993:", + "render:x:996:", + "screen:x:84:", + "ssh_keys:x:999:", + "sshd:x:74:", + "sys:x:3:", + "systemd-coredump:x:995:", + "systemd-journal:x:190:", + "systemd-network:x:192:", + "systemd-resolve:x:193:", + "systemd-timesync:x:994:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "os-release": { + "ANSI_COLOR": "0;34", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:fedoraproject:fedora:32", + "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f32/system-administrators-guide/", + "HOME_URL": "https://fedoraproject.org/", + "ID": "fedora", + "LOGO": "fedora-logo-icon", + "NAME": "Fedora", + "PLATFORM_ID": "platform:f32", + "PRETTY_NAME": "Fedora 32 (IoT Edition)", + "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy", + "REDHAT_BUGZILLA_PRODUCT": "Fedora", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "32", + "REDHAT_SUPPORT_PRODUCT": "Fedora", + "REDHAT_SUPPORT_PRODUCT_VERSION": "32", + "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help", + "VARIANT": "IoT Edition", + "VARIANT_ID": "iot", + "VERSION": "32 (IoT Edition)", + "VERSION_CODENAME": "", + "VERSION_ID": "32" + }, + "ostree": { + "refs": { + "fedora/32/x86_64/iot": { + "inputhash": "e7a265e665ce2765c90c1a51ba187202e8b77b4e0aadddfc545189171cb9c31f" + } + }, + "repo": { + "core.mode": "archive-z2" + } + }, + "packages": [ + "ModemManager-1.12.8-1.fc32.x86_64", + "ModemManager-glib-1.12.8-1.fc32.x86_64", + "NetworkManager-1.22.10-1.fc32.x86_64", + "NetworkManager-libnm-1.22.10-1.fc32.x86_64", + "NetworkManager-wifi-1.22.10-1.fc32.x86_64", + "NetworkManager-wwan-1.22.10-1.fc32.x86_64", + "abattis-cantarell-fonts-0.201-2.fc32.noarch", + "acl-2.2.53-5.fc32.x86_64", + "adobe-source-code-pro-fonts-2.030.1.050-8.fc32.noarch", + "alternatives-1.11-6.fc32.x86_64", + "attr-2.4.48-8.fc32.x86_64", + "audit-3.0-0.19.20191104git1c2f876.fc32.x86_64", + "audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64", + "basesystem-11-9.fc32.noarch", + "bash-5.0.11-2.fc32.x86_64", + "bash-completion-2.8-8.fc32.noarch", + "bluez-5.54-1.fc32.x86_64", + "bluez-libs-5.54-1.fc32.x86_64", + "bluez-mesh-5.54-1.fc32.x86_64", + "btrfs-progs-5.6-1.fc32.x86_64", + "bubblewrap-0.4.1-1.fc32.x86_64", + "bzip2-libs-1.0.8-2.fc32.x86_64", + "ca-certificates-2020.2.40-3.fc32.noarch", + "checkpolicy-3.0-3.fc32.x86_64", + "chrony-3.5-8.fc32.x86_64", + "clevis-12-2.fc32.x86_64", + "clevis-dracut-12-2.fc32.x86_64", + "clevis-luks-12-2.fc32.x86_64", + "clevis-systemd-12-2.fc32.x86_64", + "compat-readline5-5.2-36.fc32.x86_64", + "conmon-2.0.14-1.fc32.x86_64", + "container-selinux-2.130.0-1.fc32.noarch", + "containernetworking-plugins-0.8.5-1.1.gitf5c3d1b.fc32.x86_64", + "containers-common-0.1.41-1.fc32.x86_64", + "coreutils-8.32-3.fc32.1.x86_64", + "coreutils-common-8.32-3.fc32.1.x86_64", + "cpio-2.13-4.fc32.x86_64", + "cracklib-2.9.6-22.fc32.x86_64", + "cracklib-dicts-2.9.6-22.fc32.x86_64", + "criu-3.13-5.fc32.x86_64", + "crun-0.13-1.fc32.x86_64", + "crypto-policies-20191128-5.gitcd267a5.fc32.noarch", + "crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch", + "cryptsetup-2.3.0-1.fc32.x86_64", + "cryptsetup-libs-2.3.0-1.fc32.x86_64", + "curl-7.69.1-1.fc32.x86_64", + "cyrus-sasl-lib-2.1.27-4.fc32.x86_64", + "dbus-1.12.16-4.fc32.x86_64", + "dbus-broker-22-1.fc32.x86_64", + "dbus-common-1.12.16-4.fc32.noarch", + "dbus-libs-1.12.16-4.fc32.x86_64", + "dbxtool-8-11.fc32.x86_64", + "device-mapper-1.02.171-1.fc32.x86_64", + "device-mapper-event-1.02.171-1.fc32.x86_64", + "device-mapper-event-libs-1.02.171-1.fc32.x86_64", + "device-mapper-libs-1.02.171-1.fc32.x86_64", + "device-mapper-persistent-data-0.8.5-3.fc32.x86_64", + "diffutils-3.7-4.fc32.x86_64", + "dmidecode-3.2-5.fc32.x86_64", + "dnsmasq-2.80-14.fc32.x86_64", + "dosfstools-4.1-10.fc32.x86_64", + "dracut-050-26.git20200316.fc32.x86_64", + "dracut-config-generic-050-26.git20200316.fc32.x86_64", + "dracut-network-050-26.git20200316.fc32.x86_64", + "e2fsprogs-1.45.5-3.fc32.x86_64", + "e2fsprogs-libs-1.45.5-3.fc32.x86_64", + "efi-filesystem-4-4.fc32.noarch", + "efibootmgr-16-7.fc32.x86_64", + "efivar-libs-37-7.fc32.x86_64", + "elfutils-debuginfod-client-0.179-1.fc32.x86_64", + "elfutils-default-yama-scope-0.179-1.fc32.noarch", + "elfutils-libelf-0.179-1.fc32.x86_64", + "elfutils-libs-0.179-1.fc32.x86_64", + "expat-2.2.8-2.fc32.x86_64", + "fedora-gpg-keys-32-1.noarch", + "fedora-release-common-32-1.noarch", + "fedora-release-iot-32-1.noarch", + "fedora-repos-32-1.noarch", + "file-5.38-2.fc32.x86_64", + "file-libs-5.38-2.fc32.x86_64", + "filesystem-3.14-2.fc32.x86_64", + "findutils-4.7.0-3.fc32.x86_64", + "fipscheck-1.5.0-8.fc32.x86_64", + "fipscheck-lib-1.5.0-8.fc32.x86_64", + "firewalld-0.8.2-2.fc32.noarch", + "firewalld-filesystem-0.8.2-2.fc32.noarch", + "flashrom-1.2-2.fc32.x86_64", + "fonts-filesystem-2.0.3-1.fc32.noarch", + "fuse-2.9.9-9.fc32.x86_64", + "fuse-common-3.9.1-1.fc32.x86_64", + "fuse-libs-2.9.9-9.fc32.x86_64", + "fuse-overlayfs-0.7.8-1.fc32.x86_64", + "fuse3-3.9.1-1.fc32.x86_64", + "fuse3-libs-3.9.1-1.fc32.x86_64", + "fwupd-1.3.9-2.fc32.x86_64", + "gawk-5.0.1-7.fc32.x86_64", + "gdbm-libs-1.18.1-3.fc32.x86_64", + "gdisk-1.0.5-1.fc32.x86_64", + "gettext-0.20.1-4.fc32.x86_64", + "gettext-libs-0.20.1-4.fc32.x86_64", + "glib-networking-2.64.1-1.fc32.x86_64", + "glib2-2.64.1-1.fc32.x86_64", + "glibc-2.31-2.fc32.x86_64", + "glibc-common-2.31-2.fc32.x86_64", + "glibc-minimal-langpack-2.31-2.fc32.x86_64", + "gmp-6.1.2-13.fc32.x86_64", + "gnupg2-2.2.19-1.fc32.x86_64", + "gnupg2-smime-2.2.19-1.fc32.x86_64", + "gnutls-3.6.13-1.fc32.x86_64", + "gobject-introspection-1.64.1-1.fc32.x86_64", + "gpg-pubkey-12c944d0-5d5156ab", + "gpgme-1.13.1-6.fc32.x86_64", + "greenboot-0.9-1.fc32.noarch", + "greenboot-grub2-0.9-1.fc32.noarch", + "greenboot-reboot-0.9-1.fc32.noarch", + "greenboot-rpm-ostree-grub2-0.9-1.fc32.noarch", + "greenboot-status-0.9-1.fc32.noarch", + "grep-3.3-4.fc32.x86_64", + "grub2-common-2.04-12.fc32.noarch", + "grub2-efi-x64-2.04-12.fc32.x86_64", + "grub2-pc-2.04-12.fc32.x86_64", + "grub2-pc-modules-2.04-12.fc32.noarch", + "grub2-tools-2.04-12.fc32.x86_64", + "grub2-tools-minimal-2.04-12.fc32.x86_64", + "gsettings-desktop-schemas-3.36.0-1.fc32.x86_64", + "gzip-1.10-2.fc32.x86_64", + "hostname-3.23-2.fc32.x86_64", + "ignition-2.2.1-3.git2d3ff58.fc32.x86_64", + "ima-evm-utils-1.2.1-3.fc32.x86_64", + "initscripts-10.02-3.fc32.x86_64", + "iproute-5.5.0-1.fc32.x86_64", + "iproute-tc-5.5.0-1.fc32.x86_64", + "ipset-7.6-1.fc32.x86_64", + "ipset-libs-7.6-1.fc32.x86_64", + "iptables-1.8.4-7.fc32.x86_64", + "iptables-libs-1.8.4-7.fc32.x86_64", + "iptables-nft-1.8.4-7.fc32.x86_64", + "iputils-20190515-5.fc32.x86_64", + "iwd-1.6-1.fc32.x86_64", + "iwl100-firmware-39.31.5.1-106.fc32.noarch", + "iwl1000-firmware-39.31.5.1-106.fc32.noarch", + "iwl105-firmware-18.168.6.1-106.fc32.noarch", + "iwl135-firmware-18.168.6.1-106.fc32.noarch", + "iwl2000-firmware-18.168.6.1-106.fc32.noarch", + "iwl2030-firmware-18.168.6.1-106.fc32.noarch", + "iwl3160-firmware-25.30.13.0-106.fc32.noarch", + "iwl5000-firmware-8.83.5.1_1-106.fc32.noarch", + "iwl5150-firmware-8.24.2.2-106.fc32.noarch", + "iwl6000-firmware-9.221.4.1-106.fc32.noarch", + "iwl6050-firmware-41.28.5.1-106.fc32.noarch", + "iwl7260-firmware-25.30.13.0-106.fc32.noarch", + "jansson-2.12-5.fc32.x86_64", + "jitterentropy-2.2.0-2.fc32.x86_64", + "jose-10-6.fc32.x86_64", + "json-c-0.13.1-9.fc32.x86_64", + "json-glib-1.4.4-4.fc32.x86_64", + "kbd-2.2.0-1.fc32.x86_64", + "kbd-legacy-2.2.0-1.fc32.noarch", + "kbd-misc-2.2.0-1.fc32.noarch", + "kernel-5.6.6-300.fc32.x86_64", + "kernel-core-5.6.6-300.fc32.x86_64", + "kernel-modules-5.6.6-300.fc32.x86_64", + "kernel-tools-5.6.6-300.fc32.x86_64", + "kernel-tools-libs-5.6.6-300.fc32.x86_64", + "keyutils-1.6-4.fc32.x86_64", + "keyutils-libs-1.6-4.fc32.x86_64", + "kmod-27-1.fc32.x86_64", + "kmod-libs-27-1.fc32.x86_64", + "kpartx-0.8.2-3.fc32.x86_64", + "krb5-libs-1.18-1.fc32.x86_64", + "less-551-3.fc32.x86_64", + "libacl-2.2.53-5.fc32.x86_64", + "libaio-0.3.111-7.fc32.x86_64", + "libarchive-3.4.2-1.fc32.x86_64", + "libargon2-20171227-4.fc32.x86_64", + "libassuan-2.5.3-3.fc32.x86_64", + "libattr-2.4.48-8.fc32.x86_64", + "libblkid-2.35.1-7.fc32.x86_64", + "libbrotli-1.0.7-10.fc32.x86_64", + "libbsd-0.10.0-2.fc32.x86_64", + "libcap-2.26-7.fc32.x86_64", + "libcap-ng-0.7.10-2.fc32.x86_64", + "libcbor-0.5.0-7.fc32.x86_64", + "libcom_err-1.45.5-3.fc32.x86_64", + "libcroco-0.6.13-3.fc32.x86_64", + "libcurl-7.69.1-1.fc32.x86_64", + "libdb-5.3.28-40.fc32.x86_64", + "libdb-utils-5.3.28-40.fc32.x86_64", + "libedit-3.1-32.20191231cvs.fc32.x86_64", + "libell-0.30-1.fc32.x86_64", + "libevent-2.1.8-8.fc32.x86_64", + "libfdisk-2.35.1-7.fc32.x86_64", + "libffi-3.1-24.fc32.x86_64", + "libfido2-1.3.1-1.fc32.x86_64", + "libftdi-1.4-2.fc32.x86_64", + "libgcab1-1.4-2.fc32.x86_64", + "libgcc-10.0.1-0.11.fc32.x86_64", + "libgcrypt-1.8.5-3.fc32.x86_64", + "libgomp-10.0.1-0.11.fc32.x86_64", + "libgpg-error-1.36-3.fc32.x86_64", + "libgpiod-1.5.1-1.fc32.x86_64", + "libgpiod-utils-1.5.1-1.fc32.x86_64", + "libgudev-232-7.fc32.x86_64", + "libgusb-0.3.4-1.fc32.x86_64", + "libidn2-2.3.0-2.fc32.x86_64", + "libjose-10-6.fc32.x86_64", + "libkcapi-1.1.5-2.fc32.x86_64", + "libkcapi-hmaccalc-1.1.5-2.fc32.x86_64", + "libksba-1.3.5-11.fc32.x86_64", + "libluksmeta-9-7.fc32.x86_64", + "libmbim-1.22.0-1.fc32.x86_64", + "libmbim-utils-1.22.0-1.fc32.x86_64", + "libmetalink-0.1.3-10.fc32.x86_64", + "libmnl-1.0.4-11.fc32.x86_64", + "libmodman-2.0.1-21.fc32.x86_64", + "libmodulemd1-1.8.16-2.fc32.x86_64", + "libmount-2.35.1-7.fc32.x86_64", + "libndp-1.7-5.fc32.x86_64", + "libnet-1.1.6-19.fc32.x86_64", + "libnetfilter_conntrack-1.0.7-4.fc32.x86_64", + "libnfnetlink-1.0.1-17.fc32.x86_64", + "libnftnl-1.1.5-2.fc32.x86_64", + "libnghttp2-1.40.0-2.fc32.x86_64", + "libnl3-3.5.0-2.fc32.x86_64", + "libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64", + "libpcap-1.9.1-3.fc32.x86_64", + "libpkgconf-1.6.3-3.fc32.x86_64", + "libproxy-0.4.15-17.fc32.x86_64", + "libpsl-0.21.0-4.fc32.x86_64", + "libpwquality-1.4.2-2.fc32.x86_64", + "libqmi-1.24.8-1.fc32.x86_64", + "libqmi-utils-1.24.8-1.fc32.x86_64", + "librepo-1.11.1-4.fc32.x86_64", + "libseccomp-2.4.2-3.fc32.x86_64", + "libsecret-0.20.2-2.fc32.x86_64", + "libselinux-3.0-3.fc32.x86_64", + "libselinux-utils-3.0-3.fc32.x86_64", + "libsemanage-3.0-3.fc32.x86_64", + "libsepol-3.0-3.fc32.x86_64", + "libsigsegv-2.11-10.fc32.x86_64", + "libsmartcols-2.35.1-7.fc32.x86_64", + "libsmbios-2.4.2-7.fc32.x86_64", + "libsolv-0.7.11-2.fc32.x86_64", + "libsoup-2.70.0-1.fc32.x86_64", + "libss-1.45.5-3.fc32.x86_64", + "libssh-0.9.3-2.fc32.x86_64", + "libssh-config-0.9.3-2.fc32.noarch", + "libsss_idmap-2.2.3-13.fc32.x86_64", + "libsss_nss_idmap-2.2.3-13.fc32.x86_64", + "libsss_sudo-2.2.3-13.fc32.x86_64", + "libstdc++-10.0.1-0.11.fc32.x86_64", + "libsysfs-2.1.0-28.fc32.x86_64", + "libtasn1-4.16.0-1.fc32.x86_64", + "libtextstyle-0.20.1-4.fc32.x86_64", + "libtirpc-1.2.5-1.rc2.fc32.x86_64", + "libunistring-0.9.10-7.fc32.x86_64", + "libusbx-1.0.23-1.fc32.x86_64", + "libuser-0.62-24.fc32.x86_64", + "libutempter-1.1.6-18.fc32.x86_64", + "libuuid-2.35.1-7.fc32.x86_64", + "libvarlink-util-18-3.fc32.x86_64", + "libverto-0.3.0-9.fc32.x86_64", + "libxcrypt-4.4.16-1.fc32.x86_64", + "libxcrypt-compat-4.4.16-1.fc32.x86_64", + "libxkbcommon-0.10.0-2.fc32.x86_64", + "libxml2-2.9.10-3.fc32.x86_64", + "libxmlb-0.1.14-2.fc32.x86_64", + "libyaml-0.2.2-3.fc32.x86_64", + "libzstd-1.4.4-2.fc32.x86_64", + "linux-atm-libs-2.5.1-26.fc32.x86_64", + "linux-firmware-20200316-106.fc32.noarch", + "linux-firmware-whence-20200316-106.fc32.noarch", + "lua-libs-5.3.5-7.fc32.x86_64", + "luksmeta-9-7.fc32.x86_64", + "lvm2-2.03.09-1.fc32.x86_64", + "lvm2-libs-2.03.09-1.fc32.x86_64", + "lz4-libs-1.9.1-2.fc32.x86_64", + "lzo-2.10-2.fc32.x86_64", + "microcode_ctl-2.1-35.fc32.x86_64", + "mkpasswd-5.5.6-1.fc32.x86_64", + "mokutil-0.3.0-15.fc32.x86_64", + "mozjs60-60.9.0-5.fc32.x86_64", + "mpfr-4.0.2-3.fc32.x86_64", + "ncurses-6.1-15.20191109.fc32.x86_64", + "ncurses-base-6.1-15.20191109.fc32.noarch", + "ncurses-libs-6.1-15.20191109.fc32.x86_64", + "nettle-3.5.1-5.fc32.x86_64", + "nftables-0.9.3-2.fc32.x86_64", + "nmap-ncat-7.80-3.fc32.x86_64", + "npth-1.6-4.fc32.x86_64", + "nss-altfiles-2.18.1-16.fc32.x86_64", + "openldap-2.4.47-4.fc32.x86_64", + "openssh-8.2p1-2.fc32.x86_64", + "openssh-clients-8.2p1-2.fc32.x86_64", + "openssh-server-8.2p1-2.fc32.x86_64", + "openssl-1.1.1d-7.fc32.x86_64", + "openssl-libs-1.1.1d-7.fc32.x86_64", + "openssl-pkcs11-0.4.10-5.fc32.x86_64", + "os-prober-1.77-4.fc32.x86_64", + "ostree-2020.3-2.fc32.x86_64", + "ostree-libs-2020.3-2.fc32.x86_64", + "p11-kit-0.23.20-1.fc32.x86_64", + "p11-kit-trust-0.23.20-1.fc32.x86_64", + "pam-1.3.1-24.fc32.x86_64", + "passwd-0.80-8.fc32.x86_64", + "pciutils-libs-3.6.4-1.fc32.x86_64", + "pcre-8.44-1.fc32.x86_64", + "pcre2-10.34-9.fc32.x86_64", + "pcre2-syntax-10.34-9.fc32.noarch", + "pigz-2.4-6.fc32.x86_64", + "pinentry-1.1.0-7.fc32.x86_64", + "pkgconf-1.6.3-3.fc32.x86_64", + "pkgconf-m4-1.6.3-3.fc32.noarch", + "pkgconf-pkg-config-1.6.3-3.fc32.x86_64", + "podman-1.8.2-2.fc32.x86_64", + "podman-plugins-1.8.2-2.fc32.x86_64", + "policycoreutils-3.0-2.fc32.x86_64", + "policycoreutils-python-utils-3.0-2.fc32.noarch", + "polkit-0.116-7.fc32.x86_64", + "polkit-libs-0.116-7.fc32.x86_64", + "polkit-pkla-compat-0.1-16.fc32.x86_64", + "popt-1.16-19.fc32.x86_64", + "procps-ng-3.3.15-7.fc32.x86_64", + "protobuf-c-1.3.2-2.fc32.x86_64", + "psmisc-23.3-3.fc32.x86_64", + "publicsuffix-list-dafsa-20190417-3.fc32.noarch", + "python-pip-wheel-19.3.1-2.fc32.noarch", + "python-setuptools-wheel-41.6.0-2.fc32.noarch", + "python-unversioned-command-3.8.2-2.fc32.noarch", + "python3-3.8.2-2.fc32.x86_64", + "python3-audit-3.0-0.19.20191104git1c2f876.fc32.x86_64", + "python3-dbus-1.2.16-1.fc32.x86_64", + "python3-decorator-4.4.0-6.fc32.noarch", + "python3-firewall-0.8.2-2.fc32.noarch", + "python3-gobject-base-3.36.0-2.fc32.x86_64", + "python3-libs-3.8.2-2.fc32.x86_64", + "python3-libselinux-3.0-3.fc32.x86_64", + "python3-libsemanage-3.0-3.fc32.x86_64", + "python3-nftables-0.9.3-2.fc32.x86_64", + "python3-pip-19.3.1-2.fc32.noarch", + "python3-policycoreutils-3.0-2.fc32.noarch", + "python3-setools-4.3.0-1.fc32.x86_64", + "python3-setuptools-41.6.0-2.fc32.noarch", + "python3-six-1.14.0-2.fc32.noarch", + "python3-slip-0.6.4-19.fc32.noarch", + "python3-slip-dbus-0.6.4-19.fc32.noarch", + "qrencode-libs-4.0.2-5.fc32.x86_64", + "readline-8.0-4.fc32.x86_64", + "rng-tools-6.9-3.fc32.x86_64", + "rootfiles-8.1-27.fc32.noarch", + "rpm-4.15.1-2.fc32.1.x86_64", + "rpm-libs-4.15.1-2.fc32.1.x86_64", + "rpm-ostree-2020.1-1.fc32.x86_64", + "rpm-ostree-libs-2020.1-1.fc32.x86_64", + "rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64", + "rsync-3.1.3-11.fc32.x86_64", + "runc-1.0.0-144.dev.gite6555cc.fc32.x86_64", + "screen-4.8.0-2.fc32.x86_64", + "sed-4.5-5.fc32.x86_64", + "selinux-policy-3.14.5-32.fc32.noarch", + "selinux-policy-targeted-3.14.5-32.fc32.noarch", + "setools-console-4.3.0-1.fc32.x86_64", + "setup-2.13.6-2.fc32.noarch", + "shadow-utils-4.8.1-2.fc32.x86_64", + "shared-mime-info-1.15-3.fc32.x86_64", + "shim-x64-15-8.x86_64", + "skopeo-0.1.41-1.fc32.x86_64", + "slirp4netns-0.4.3-6.0.dev.gita8414d1.fc32.x86_64", + "sqlite-libs-3.31.1-1.fc32.x86_64", + "sssd-client-2.2.3-13.fc32.x86_64", + "sudo-1.9.0-0.1.b4.fc32.x86_64", + "systemd-245.4-1.fc32.x86_64", + "systemd-libs-245.4-1.fc32.x86_64", + "systemd-pam-245.4-1.fc32.x86_64", + "systemd-rpm-macros-245.4-1.fc32.noarch", + "systemd-udev-245.4-1.fc32.x86_64", + "tar-1.32-4.fc32.x86_64", + "tmux-3.0a-2.fc32.x86_64", + "tpm2-tools-4.1-2.fc32.x86_64", + "tpm2-tss-2.4.0-1.fc32.x86_64", + "traceroute-2.1.0-10.fc32.x86_64", + "trousers-0.3.13-13.fc31.x86_64", + "trousers-lib-0.3.13-13.fc31.x86_64", + "tss2-1331-4.fc32.x86_64", + "tzdata-2019c-3.fc32.noarch", + "util-linux-2.35.1-7.fc32.x86_64", + "vim-minimal-8.2.525-1.fc32.x86_64", + "which-2.21-19.fc32.x86_64", + "whois-nls-5.5.6-1.fc32.noarch", + "wpa_supplicant-2.9-3.fc32.x86_64", + "wpan-tools-0.9-4.fc32.x86_64", + "xkeyboard-config-2.29-1.fc32.noarch", + "xz-5.2.5-1.fc32.x86_64", + "xz-libs-5.2.5-1.fc32.x86_64", + "yajl-2.1.0-14.fc32.x86_64", + "zchunk-libs-1.1.5-2.fc32.x86_64", + "zlib-1.2.11-21.fc32.x86_64", + "zram-0.4-1.fc32.noarch" + ], + "passwd": [ + "root:x:0:0:root:/root:/bin/bash" + ], + "passwd-system": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:995:992::/var/lib/chrony:/sbin/nologin", + "clevis:x:999:998:Clevis Decryption Framework unprivileged user:/var/cache/clevis:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "dnsmasq:x:991:991:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/usr/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "polkitd:x:996:993:User for polkitd:/:/sbin/nologin", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:998:995:systemd Core Dumper:/:/sbin/nologin", + "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "systemd-timesync:x:997:994:systemd Time Synchronization:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin" + ], + "services-disabled": [ + "blk-availability.service", + "bluetooth-mesh.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "clevis-luks-askpass.path", + "console-getty.service", + "cpupower.service", + "debug-shell.service", + "dnsmasq.service", + "ead.service", + "exit.target", + "fwupd-refresh.timer", + "greenboot.target", + "halt.target", + "ignition-firstboot-complete.service", + "io.podman.service", + "io.podman.socket", + "iwd.service", + "kexec.target", + "loadmodules.service", + "nftables.service", + "nis-domainname.service", + "ostree-finalize-staged.path", + "podman.service", + "podman.socket", + "poweroff.target", + "proc-sys-fs-binfmt_misc.mount", + "rdisc.service", + "remote-cryptsetup.target", + "rpm-ostree-bootstatus.service", + "rpm-ostreed-automatic.timer", + "runlevel0.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "systemd-boot-check-no-failures.service", + "systemd-network-generator.service", + "systemd-networkd-wait-online.service", + "systemd-networkd.service", + "systemd-networkd.socket", + "systemd-pstore.service", + "systemd-resolved.service", + "systemd-time-wait-sync.service", + "systemd-timesyncd.service", + "tcsd.service", + "wpa_supplicant.service" + ], + "services-enabled": [ + "ModemManager.service", + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "bluetooth.service", + "chronyd.service", + "ctrl-alt-del.target", + "dbus-broker.service", + "dbus-org.bluez.service", + "dbus-org.fedoraproject.FirewallD1.service", + "dbus-org.freedesktop.ModemManager1.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dbus.service", + "dbus.socket", + "dbxtool.service", + "dm-event.socket", + "firewalld.service", + "fstrim.timer", + "getty@.service", + "greenboot-grub2-set-counter.service", + "greenboot-grub2-set-success.service", + "greenboot-healthcheck.service", + "greenboot-rpm-ostree-grub2-check-fallback.service", + "greenboot-status.service", + "greenboot.service", + "import-state.service", + "lvm2-lvmpolld.socket", + "lvm2-monitor.service", + "ostree-remount.service", + "reboot.target", + "redboot-auto-reboot.service", + "redboot.service", + "remote-fs.target", + "rngd.service", + "runlevel6.target", + "selinux-autorelabel-mark.service", + "sshd.service", + "zram-swap.service" + ], + "type": "ostree/commit" + } +} \ No newline at end of file diff --git a/test/cases/fedora_32-x86_64-openstack-boot.json b/test/cases/fedora_32-x86_64-openstack-boot.json new file mode 100644 index 0000000..9d40eab --- /dev/null +++ b/test/cases/fedora_32-x86_64-openstack-boot.json @@ -0,0 +1,10083 @@ +{ + "boot": { + "type": "openstack" + }, + "compose-request": { + "distro": "fedora-32", + "arch": "x86_64", + "image-type": "openstack", + "repositories": [ + { + "baseurl": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ], + "filename": "disk.qcow2", + "blueprint": { + "name": "openstack-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm" + }, + "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-six-1.14.0-2.fc32.noarch.rpm" + }, + "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.x86_64.rpm" + }, + "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/geolite2-country-20191217-2.fc32.noarch.rpm" + }, + "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtasn1-4.16.0-1.fc32.x86_64.rpm" + }, + "sha256:052ddc487a29acce1b5d44532f79f8ab594d0ac6565504071f4c7706d97fc552": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gobject-introspection-1.64.1-1.fc32.x86_64.rpm" + }, + "sha256:08c41c10745c172c34880e384cf5cff014a9627f4895e59fa482948b27e2ce9e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-nft-1.8.4-7.fc32.x86_64.rpm" + }, + "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm" + }, + "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm" + }, + "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/findutils-4.7.0-3.fc32.x86_64.rpm" + }, + "sha256:0b7d24759aac33303ff4b101c111dea03ff2529efc95661140e22f629cc1ab7a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nftables-0.9.3-2.fc32.x86_64.rpm" + }, + "sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-tc-5.5.0-1.fc32.x86_64.rpm" + }, + "sha256:0d51c1319ee78978e6ea5a49b815c2078b4ffd4d575e98c70e54ca01c3390eb8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-8.2p1-2.fc32.x86_64.rpm" + }, + "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.x86_64.rpm" + }, + "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-3.0-3.fc32.x86_64.rpm" + }, + "sha256:0f002cc5ef09532fb9ef309c6e24ab064cb1babda1514a1258e214fe9fe60ab1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libXau-1.0.9-3.fc32.x86_64.rpm" + }, + "sha256:0fc0193d95d69c780b6feb1cb74759ca2d4804701b3de936dac8429cfbe0f2e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-nftables-0.9.3-2.fc32.x86_64.rpm" + }, + "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-7.fc32.x86_64.rpm" + }, + "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-2.04-12.fc32.x86_64.rpm" + }, + "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/filesystem-3.14-2.fc32.x86_64.rpm" + }, + "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cpio-2.13-4.fc32.x86_64.rpm" + }, + "sha256:129adf9147d5d120546ca8e0fb5f165761106d386d366fe82591e372754d0b4a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-decorator-4.4.0-6.fc32.noarch.rpm" + }, + "sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.31-2.fc32.x86_64.rpm" + }, + "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gpgme-1.13.1-6.fc32.x86_64.rpm" + }, + "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-utils-3.0-3.fc32.x86_64.rpm" + }, + "sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/passwd-0.80-8.fc32.x86_64.rpm" + }, + "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pigz-2.4-6.fc32.x86_64.rpm" + }, + "sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-policycoreutils-3.0-2.fc32.noarch.rpm" + }, + "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-whence-20200316-106.fc32.noarch.rpm" + }, + "sha256:16702883a79532a400d7304146cdb47b0599983b9fb48ab918ef9fa1ce0be394": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtalloc-2.3.1-2.fc32.x86_64.rpm" + }, + "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gmp-6.1.2-13.fc32.x86_64.rpm" + }, + "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libblkid-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/diffutils-3.7-4.fc32.x86_64.rpm" + }, + "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.x86_64.rpm" + }, + "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libksba-1.3.5-11.fc32.x86_64.rpm" + }, + "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-2.26-7.fc32.x86_64.rpm" + }, + "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-5.2.5-1.fc32.x86_64.rpm" + }, + "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmnl-1.0.4-11.fc32.x86_64.rpm" + }, + "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-245.4-1.fc32.x86_64.rpm" + }, + "sha256:1e1e9900e9d3a2b8eb6684060672526948df2cb9f751e7d72cb4fa5bffe71747": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cloud-init-19.4-2.fc32.noarch.rpm" + }, + "sha256:1e655f02895f6a87f9be5793065570b57e623cbf15516094df62e1f5626d4158": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyrsistent-0.15.7-2.fc32.x86_64.rpm" + }, + "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-32-1.noarch.rpm" + }, + "sha256:20595861a9079a16f904a491b325347513ef9bc3587a0b9d1f4fc42d6fd2b526": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libX11-1.6.9-3.fc32.x86_64.rpm" + }, + "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libidn2-2.3.0-2.fc32.x86_64.rpm" + }, + "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-broker-22-1.fc32.x86_64.rpm" + }, + "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-repos-32-1.noarch.rpm" + }, + "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm" + }, + "sha256:24520e03276e0d850169efc9d83b12a9a01eee5d7202dadca12d2e0a8b7352ba": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.31-2.fc32.x86_64.rpm" + }, + "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsecret-0.20.2-2.fc32.x86_64.rpm" + }, + "sha256:25ae9056f75df4efff0d17d916e7c3889c421368613acec7f1c4119bd17eac13": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.24-1.fc32.x86_64.rpm" + }, + "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm" + }, + "sha256:265dee550073120d51e4c94d3d039e5efdee73a0ae1b1faf2b92de0dad1f58fa": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-common-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-plugins-core-4.0.14-1.fc32.noarch.rpm" + }, + "sha256:26cca773f1f258105f0f825a8e0faebcaa183655b5d91cd972afbe791b586478": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-44.fc32.x86_64.rpm" + }, + "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libss-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-5.38-2.fc32.x86_64.rpm" + }, + "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/unbound-libs-1.9.6-2.fc32.x86_64.rpm" + }, + "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsepol-3.0-3.fc32.x86_64.rpm" + }, + "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mpfr-4.0.2-3.fc32.x86_64.rpm" + }, + "sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/less-551-3.fc32.x86_64.rpm" + }, + "sha256:2ba020fbb3c5aa9079b6e49903e1525ddd0722135a5fc7ce92e7dea2140102da": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libXext-1.3.4-3.fc32.x86_64.rpm" + }, + "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tar-1.32-4.fc32.x86_64.rpm" + }, + "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm" + }, + "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:2ff43874437eef6ea52557525c1e7bf1c9c0e7e041bda00bb85ff67d86d8d5ca": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libXinerama-1.1.4-5.fc32.x86_64.rpm" + }, + "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-0.9.3-2.fc32.x86_64.rpm" + }, + "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-udev-245.4-1.fc32.x86_64.rpm" + }, + "sha256:342bdf0143d9145f8846e1b5c3401685e0d1274b66df39ac8cbfb78013313861": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-1.22.10-1.fc32.x86_64.rpm" + }, + "sha256:34411604a91c301dc8489285065c68f3a2f50910717097fedcaade6481c7469e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gobject-base-3.36.0-2.fc32.x86_64.rpm" + }, + "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-0.20.1-4.fc32.x86_64.rpm" + }, + "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.x86_64.rpm" + }, + "sha256:36778f8a4fa111c4f796bbea8fd52f7b9708de8f4351070faa30bc985db59885": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtdb-1.4.3-2.fc32.x86_64.rpm" + }, + "sha256:3882823d0eb18e0e8146584f4a32a4801961f6fdc09075607746317eba3265be": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-urllib3-1.25.7-3.fc32.noarch.rpm" + }, + "sha256:391faab010ca30610a14e0b3d54fbc0331be39bc831086fb877f8021fe4b171f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-oauthlib-3.0.2-5.fc32.noarch.rpm" + }, + "sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/chrony-3.5-8.fc32.x86_64.rpm" + }, + "sha256:3afab9512fd4d56a13c95b530c805ac8b2bc872572ec5bb435eccdd59fbbc8b6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnftnl-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64.rpm" + }, + "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm" + }, + "sha256:3bf7a70c94c538912ae92866c6bae4666f2bcf76bfe828ad24490a6a9bd3aad3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/alsa-lib-1.2.2-2.fc32.x86_64.rpm" + }, + "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/npth-1.6-4.fc32.x86_64.rpm" + }, + "sha256:3c3fb1ca768ecd6ae7905a09cd85b9f67e9f08c46d18779520fb4b29476865c7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-nfs-idmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm" + }, + "sha256:3ee53d0dba5bbfd3bbb2ae4b54e3ebdfa122e1cf120e17ff9c4c35674269e5ad": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-kcm-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.x86_64.rpm" + }, + "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm" + }, + "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-27-1.fc32.x86_64.rpm" + }, + "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-40.fc32.x86_64.rpm" + }, + "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcom_err-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-2.fc32.x86_64.rpm" + }, + "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.x86_64.rpm" + }, + "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/os-prober-1.77-4.fc32.x86_64.rpm" + }, + "sha256:4630ea4b3e4c439f2d3bc4cf33e71388e65cd5394338c86fa1074c6f7fa0d801": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpciaccess-0.16-2.fc32.x86_64.rpm" + }, + "sha256:46407b730b272223b8b64d12df0725af571b4a5c5ab89b9f41e12a49e07c6e6b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/c-ares-1.15.0-5.fc32.x86_64.rpm" + }, + "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-4.fc32.x86_64.rpm" + }, + "sha256:47538b1db9720be4699329a8da32d873187d0c6c22f45252614ac5b8a8312482": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/firewalld-filesystem-0.8.2-2.fc32.noarch.rpm" + }, + "sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qemu-img-4.2.0-7.fc32.x86_64.rpm" + }, + "sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-config-generic-050-26.git20200316.fc32.x86_64.rpm" + }, + "sha256:4860a733ca3f22089c6c283cbdcf53123a702d60b5bffdd4fe9d76826f91139a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-prettytable-0.7.2-22.fc32.noarch.rpm" + }, + "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dhcp-common-4.4.2-5.b1.fc32.noarch.rpm" + }, + "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcc-10.0.1-0.11.fc32.x86_64.rpm" + }, + "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm" + }, + "sha256:4b9da0cedada16eb80a2d66b86aa62c9b026501e13a3e947a5a03a06f41d9dbb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/parted-3.3-3.fc32.x86_64.rpm" + }, + "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pam-1.3.1-24.fc32.x86_64.rpm" + }, + "sha256:4c9d77d63ddc7dda0e018fc1c97d46025794e336e58d838a631fcc130dfa3b9b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jsonpatch-1.21-11.fc32.noarch.rpm" + }, + "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shadow-utils-4.8.1-2.fc32.x86_64.rpm" + }, + "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.x86_64.rpm" + }, + "sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libndp-1.7-5.fc32.x86_64.rpm" + }, + "sha256:4fca21cfdcbed052e3e9e1eff74c22fb8ffb1fbbeb63e87e2aa540e43a8c0d09": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/v/vim-minimal-8.2.525-1.fc32.x86_64.rpm" + }, + "sha256:50ee0171a6f55c7e436c6444edb7b801b58de3c9f3f890b3d66d8a74a249c651": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pixman-0.38.4-2.fc32.x86_64.rpm" + }, + "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-unbound-1.9.6-2.fc32.x86_64.rpm" + }, + "sha256:51b9b8d1cc4b0d7fb1fb93a653a4fb963a87598dc234c83d0821a365e0b134a4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xen-libs-4.13.0-6.fc32.x86_64.rpm" + }, + "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-common-8.32-3.fc32.1.x86_64.rpm" + }, + "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-9.fc32.x86_64.rpm" + }, + "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gzip-1.10-2.fc32.x86_64.rpm" + }, + "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsemanage-3.0-3.fc32.x86_64.rpm" + }, + "sha256:55bafcdf9c31b1456af3bf584bfe7ac745a03f4decd17197ea97b498d68b3b82": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libsemanage-3.0-3.fc32.x86_64.rpm" + }, + "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-libs-27-1.fc32.x86_64.rpm" + }, + "sha256:5719dd2fb399cadec08b4ac41c794239d2a2de2f012faeb970ab90a07bba0084": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-babel-2.8.0-2.fc32.noarch.rpm" + }, + "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-plugins-core-4.0.14-1.fc32.noarch.rpm" + }, + "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libassuan-2.5.3-3.fc32.x86_64.rpm" + }, + "sha256:599549d72d26b48c45156585a5698898c853e56469142e202d3749b781428465": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-20200316-106.fc32.noarch.rpm" + }, + "sha256:5cd4b781742b64dfff3cb3840ed5bb76f6946fb63f4ab742a51c3505747271a1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/plymouth-0.9.4-14.20200325gite31c81f.fc32.x86_64.rpm" + }, + "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm" + }, + "sha256:5eed798a806e26720df47f1c95600ae67cc1275c381f33c8260b32b23d81a978": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/h/hwdata-0.334-1.fc32.noarch.rpm" + }, + "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-3.fc32.x86_64.rpm" + }, + "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:60589342d58922ba061ac8df7d753a7e7e75162c97ab086739e9d33fbf289091": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmaxminddb-1.3.2-2.fc32.x86_64.rpm" + }, + "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm" + }, + "sha256:61c51596cc97f35177efe8dc5e2ca52d8fd528570f33c184497f419259b73c90": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-idna-2.8-6.fc32.noarch.rpm" + }, + "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.x86_64.rpm" + }, + "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcroco-0.6.13-3.fc32.x86_64.rpm" + }, + "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mkpasswd-5.5.6-1.fc32.x86_64.rpm" + }, + "sha256:645f82cf62da25742cab5e8ffd1f764301b84ab19710d9f3fb3aff1cb57ffdc6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jinja2-2.11.1-1.fc32.noarch.rpm" + }, + "sha256:656bbeddecee15f2b638da3c5cdfbcf0ec7bff14ea1eb8179b30b6b389ffa4db": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libXrender-0.9.10-11.fc32.x86_64.rpm" + }, + "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libattr-2.4.48-8.fc32.x86_64.rpm" + }, + "sha256:6615aae3def0c49910e43e2d69f7ae8852694953dceb4b6235b5cf4099296d70": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jsonpointer-1.10-19.fc32.noarch.rpm" + }, + "sha256:66bb5b2e99d2c74b82943fe61fe9b9a3674350b0242f69a6854ec9718dcf5e07": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-10.34-9.fc32.x86_64.rpm" + }, + "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm" + }, + "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-5.3.28-40.fc32.x86_64.rpm" + }, + "sha256:6890a9545194ad6cf1b0c58e5273132171a9ced9cb665a1442aa62b6b6d3d2ea": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jsonschema-3.2.0-2.fc32.noarch.rpm" + }, + "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-font-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:695ef8ae55ed6a165a3633b3c0d75b320879246386e6df4539be9286f5176cc5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_autofs-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:699c1a3ff311bbaa2380c085fb4f516aa08be474bed02bcd1569d0bbf5b22d07": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-client-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.x86_64.rpm" + }, + "sha256:6a3282927f525629bc0aaf4090e108d33b0709d3d5b35bc442000c2837e7b9b4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iputils-20190515-5.fc32.x86_64.rpm" + }, + "sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dbus-1.2.16-1.fc32.x86_64.rpm" + }, + "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-10.fc32.x86_64.rpm" + }, + "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/curl-7.69.1-1.fc32.x86_64.rpm" + }, + "sha256:6f5f53b66f7c3bf6958f6f163788583265ff0360188620c3b0f7ddedeac3d1f4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setools-4.3.0-1.fc32.x86_64.rpm" + }, + "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tss2-1331-4.fc32.x86_64.rpm" + }, + "sha256:6fc1181ed798617668f195579acfcf8fb212513a776f376eecfb3d086c66b2d9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libref_array-0.1.5-44.fc32.x86_64.rpm" + }, + "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm" + }, + "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glib2-2.64.1-1.fc32.x86_64.rpm" + }, + "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-8.32-3.fc32.1.x86_64.rpm" + }, + "sha256:703fb5ca1651bb72d8ab58576ce3d78c9479cbb2e78ff8666ae3a3d1cd9bb0da": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/checkpolicy-3.0-3.fc32.x86_64.rpm" + }, + "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/acl-2.2.53-5.fc32.x86_64.rpm" + }, + "sha256:7124f9fedc862e3bab80f05b804b6c9580603ce3155727e888646d4d4f5ddc50": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-cffi-1.14.0-1.fc32.x86_64.rpm" + }, + "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm" + }, + "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libusbx-1.0.23-1.fc32.x86_64.rpm" + }, + "sha256:73e9cf715ccf15c1e26fbcd40ec29788fb7250958bc923e56b4826a8d6fb6920": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libX11-common-1.6.9-3.fc32.noarch.rpm" + }, + "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm" + }, + "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-pam-245.4-1.fc32.x86_64.rpm" + }, + "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grep-3.3-4.fc32.x86_64.rpm" + }, + "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-libs-245.4-1.fc32.x86_64.rpm" + }, + "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bash-5.0.11-2.fc32.x86_64.rpm" + }, + "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libevent-2.1.8-8.fc32.x86_64.rpm" + }, + "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-4.4.16-1.fc32.x86_64.rpm" + }, + "sha256:7c21c21c3e3dbace06bee03fe4835ae6cb1e3ef86750ba2853f39d40dead2309": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipset-7.6-1.fc32.x86_64.rpm" + }, + "sha256:7c9e29d36ce974b96974b93a393af20499bc0bc977753cd13190065e88d3dd00": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/spice-vdagent-0.20.0-2.fc32.x86_64.rpm" + }, + "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libargon2-20171227-4.fc32.x86_64.rpm" + }, + "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm" + }, + "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pinentry-1.1.0-7.fc32.x86_64.rpm" + }, + "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcurl-7.69.1-1.fc32.x86_64.rpm" + }, + "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.x86_64.rpm" + }, + "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-2.04-12.fc32.x86_64.rpm" + }, + "sha256:808e7209893298d11ac27f148c1b3d1a2b28e303e7930b43659a08dc0f660ac4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/groff-base-1.22.3-21.fc32.x86_64.rpm" + }, + "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:81b6181b947d50e0a1ea681298417e552421d6714900d07a34dc25899e5c9f60": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-configobj-5.0.6-20.fc32.noarch.rpm" + }, + "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/geolite2-city-20191217-2.fc32.noarch.rpm" + }, + "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/which-2.21-19.fc32.x86_64.rpm" + }, + "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuuid-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.x86_64.rpm" + }, + "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-libs-5.2.5-1.fc32.x86_64.rpm" + }, + "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-2.9.6-22.fc32.x86_64.rpm" + }, + "sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-5.5.0-1.fc32.x86_64.rpm" + }, + "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libffi-3.1-24.fc32.x86_64.rpm" + }, + "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fonts-filesystem-2.0.3-1.fc32.noarch.rpm" + }, + "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.x86_64.rpm" + }, + "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libarchive-3.4.2-1.fc32.x86_64.rpm" + }, + "sha256:89c972ec7d2ab305c91c23bc248562c76f0ae645a9ed9f94d312e2f57c4d38fe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-5.6.6-300.fc32.x86_64.rpm" + }, + "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/popt-1.16-19.fc32.x86_64.rpm" + }, + "sha256:8b148415fb6a583ef131d0ddff44f3209c30d0299fde7b20cd3ea385590927c1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-clients-8.2p1-2.fc32.x86_64.rpm" + }, + "sha256:8c047278ce11e7ba7169a9c9537c3c6544f52c7eee8754179acd839ed59c028f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dhcp-client-4.4.2-5.b1.fc32.x86_64.rpm" + }, + "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-3.0-2.fc32.x86_64.rpm" + }, + "sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnl3-3.5.0-2.fc32.x86_64.rpm" + }, + "sha256:8ee8c4bbf024b998ffb77a6b4194a2306ac21c5a6fcf70c8c81a0fbf38f7c7fc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-firewall-0.8.2-2.fc32.noarch.rpm" + }, + "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/expat-2.2.8-2.fc32.x86_64.rpm" + }, + "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:907393755387a351806ec2afff376e7491f177116caadd12f07d0fcbed796750": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-8.fc32.x86_64.rpm" + }, + "sha256:9194788f87e4a1aa8835f1305d290cc2cd67cee6a5b1ab82643d3a068c0145b6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/y/yajl-2.1.0-14.fc32.x86_64.rpm" + }, + "sha256:924367aa63693da4660dcb806fbf52b3bcb7c4d12b40c4b4ba6329079936d073": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/net-tools-2.0-0.56.20160912git.fc32.x86_64.rpm" + }, + "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm" + }, + "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre-8.44-1.fc32.x86_64.rpm" + }, + "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-5.fc32.noarch.rpm" + }, + "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsigsegv-2.11-10.fc32.x86_64.rpm" + }, + "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfdisk-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libzstd-1.4.4-2.fc32.x86_64.rpm" + }, + "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.x86_64.rpm" + }, + "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm" + }, + "sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/jansson-2.12-5.fc32.x86_64.rpm" + }, + "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.x86_64.rpm" + }, + "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-050-26.git20200316.fc32.x86_64.rpm" + }, + "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/util-linux-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libs-0.179-1.fc32.x86_64.rpm" + }, + "sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libedit-3.1-32.20191231cvs.fc32.x86_64.rpm" + }, + "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm" + }, + "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgpg-error-1.36-3.fc32.x86_64.rpm" + }, + "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libyaml-0.2.2-3.fc32.x86_64.rpm" + }, + "sha256:9d4691918d7add910e8c03d61cccda0316b62d77b30ac2e502cf2e55289d1823": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcollection-0.7.0-44.fc32.x86_64.rpm" + }, + "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnutls-3.6.13-1.fc32.x86_64.rpm" + }, + "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-6.fc32.x86_64.rpm" + }, + "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpwquality-1.4.2-2.fc32.x86_64.rpm" + }, + "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-2.2.0-1.fc32.x86_64.rpm" + }, + "sha256:a067d65415265d19aa2d0adcbd9234029eda8245a8c58262b3ced83edc6ddf38": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcb-1.13.1-4.fc32.x86_64.rpm" + }, + "sha256:a0b87b2dc3c5f536e94d6a4f3563a621dfbc067a62c3d1fe69bdb70c3cecec57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pycparser-2.19-2.fc32.noarch.rpm" + }, + "sha256:a107b3d3790a5bcfdc28f6f4718969039b103a681a2647f3cbcb82cf92e97acb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyserial-3.4-7.fc32.noarch.rpm" + }, + "sha256:a1613e90865db93fb578b8ee1a4ee40bd396c6c9f2fb2a14757acacecb9f23e8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-core-5.6.6-300.fc32.x86_64.rpm" + }, + "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-common-32-1.noarch.rpm" + }, + "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shared-mime-info-1.15-3.fc32.x86_64.rpm" + }, + "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm" + }, + "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm" + }, + "sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libaio-0.3.111-7.fc32.x86_64.rpm" + }, + "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm" + }, + "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxml2-2.9.10-3.fc32.x86_64.rpm" + }, + "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnghttp2-1.40.0-2.fc32.x86_64.rpm" + }, + "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/librepo-1.11.1-4.fc32.x86_64.rpm" + }, + "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbrotli-1.0.7-10.fc32.x86_64.rpm" + }, + "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.x86_64.rpm" + }, + "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openldap-2.4.47-4.fc32.x86_64.rpm" + }, + "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.x86_64.rpm" + }, + "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm" + }, + "sha256:af66820023c984d8b981ecac715d0c2daec1f89dcb69bed76ddf58b0ee80c1b1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm" + }, + "sha256:b1111e77a5fdbacaa04acc90d3844706158bc5892173862928705620b8910adb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm" + }, + "sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcbor-0.5.0-7.fc32.x86_64.rpm" + }, + "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/y/yum-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-6.1-15.20191109.fc32.x86_64.rpm" + }, + "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpcap-1.9.1-3.fc32.x86_64.rpm" + }, + "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-4.fc32.x86_64.rpm" + }, + "sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuser-0.62-24.fc32.x86_64.rpm" + }, + "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-ng-0.7.10-2.fc32.x86_64.rpm" + }, + "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-5.fc32.x86_64.rpm" + }, + "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-3.8.2-2.fc32.x86_64.rpm" + }, + "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm" + }, + "sha256:b8ecd7fa0e7e072828e374dfb0d61bb8eecca7c190f3661050cee5e3fc8854b4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/firewalld-0.8.2-2.fc32.noarch.rpm" + }, + "sha256:b98687828b1d222ea73ebb8457450913dac58dd0be2e430a93bb7e98ba816505": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-modules-5.6.6-300.fc32.x86_64.rpm" + }, + "sha256:bb154a90c968150172036d86f0c9fc2a24b5799718bc4d835cb10d0758890c67": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfsidmap-2.4.3-0.fc32.x86_64.rpm" + }, + "sha256:bb8942d19e594c0f4ca181bd58796bd5d3cb681c3f17cd2ec2654c3afe28e39a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-cryptography-2.8-3.fc32.x86_64.rpm" + }, + "sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/initscripts-10.02-3.fc32.x86_64.rpm" + }, + "sha256:bcb07748c8688c788ec69c3a33c0abd1bb3a496b9aa09b5729265670bc7ba0eb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-attrs-19.3.0-2.fc32.noarch.rpm" + }, + "sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/psmisc-23.3-3.fc32.x86_64.rpm" + }, + "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsolv-0.7.11-2.fc32.x86_64.rpm" + }, + "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.x86_64.rpm" + }, + "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nettle-3.5.1-5.fc32.x86_64.rpm" + }, + "sha256:c05d01195aa4ca0f4a471574cc7ece8a0f4daf437935d845cd0745e2512cb9c9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-markupsafe-1.1.1-5.fc32.x86_64.rpm" + }, + "sha256:c0a0c6f3e30c20815496be8de00f9596737e2693feb85f7484f200ffa9174530": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpipeline-1.5.2-2.fc32.x86_64.rpm" + }, + "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zlib-1.2.11-21.fc32.x86_64.rpm" + }, + "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-1.02.171-1.fc32.x86_64.rpm" + }, + "sha256:c13c7da4b097499576861cb12fdd02e520af69b5f23d615b3968c54f40f8fd47": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyyaml-5.3.1-1.fc32.x86_64.rpm" + }, + "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.x86_64.rpm" + }, + "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.x86_64.rpm" + }, + "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.04-12.fc32.noarch.rpm" + }, + "sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dosfstools-4.1-10.fc32.x86_64.rpm" + }, + "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/alternatives-1.11-6.fc32.x86_64.rpm" + }, + "sha256:c64bf28e6017f1c5e8559d2e9c2d78bb5d577bd0b0b05617ce42c7d2e0b0dbc9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libXrandr-1.5.2-3.fc32.x86_64.rpm" + }, + "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:c93df175a0a4989aaaeb170406d8ff13a2cd93a5fc52ad33468245fea2044a86": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pytz-2019.3-2.fc32.noarch.rpm" + }, + "sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-26.fc32.x86_64.rpm" + }, + "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rootfiles-8.1-27.fc32.noarch.rpm" + }, + "sha256:ca540fb7088948fdfe6e6b52a5e2b6a74d2d17136857da9f3f4a1ee29c8eb74b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdhash-0.5.0-44.fc32.x86_64.rpm" + }, + "sha256:ca80c458fab5bdde0276702f06217d1219085428560af6039aa1c5cf1e58ff3b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/man-db-2.9.0-2.fc32.x86_64.rpm" + }, + "sha256:cb0c64cc81e0b384bbc9d27ffcb2a655b13c91a799aad8972264aed1767926a3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-slip-dbus-0.6.4-19.fc32.noarch.rpm" + }, + "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.16-1.fc32.x86_64.rpm" + }, + "sha256:cbdc61d713e4cbe52b2bece117912da0f1e3782cb3b33caa068e96c854c990be": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grubby-8.40-40.fc32.x86_64.rpm" + }, + "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-2.2.19-1.fc32.x86_64.rpm" + }, + "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-4.fc32.x86_64.rpm" + }, + "sha256:cd16f6ef433d7dc6860b19f3d77b666a03d35361aba78ee09d772575c2f69cc0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libldb-2.1.1-1.fc32.x86_64.rpm" + }, + "sha256:ce1a80b0ba6f09a7e5a188436088dd31d10c5f7b43dbe9c1788f705127c8e6b2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-44.fc32.x86_64.rpm" + }, + "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpsl-0.21.0-4.fc32.x86_64.rpm" + }, + "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm" + }, + "sha256:d0bc781a80be1d1fe204ec6b26255240261d55f6e24a28343572f2221a00533e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jwt-1.7.1-7.fc32.noarch.rpm" + }, + "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gawk-5.0.1-7.fc32.x86_64.rpm" + }, + "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.x86_64.rpm" + }, + "sha256:d1e244b8b5ce7404846e97d96c762c8c18ff6447301f6fc63f50e615029aa7cd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-server-8.2p1-2.fc32.x86_64.rpm" + }, + "sha256:d2abba1a0523bd9df5073900593ab13ec2ed2e391440be4d883314fa154370f8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-slip-0.6.4-19.fc32.noarch.rpm" + }, + "sha256:d36f08a44d6a3bc95f995c858ecb5e0d7fb22a8236008267024dd6a0ff66cc85": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/plymouth-scripts-0.9.4-14.20200325gite31c81f.fc32.x86_64.rpm" + }, + "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/json-c-0.13.1-9.fc32.x86_64.rpm" + }, + "sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-libs-0.116-7.fc32.x86_64.rpm" + }, + "sha256:d611f0c4252c4c4b893850807748e62cf4d17d72d544ef2744091df3206d8178": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-requests-2.22.0-8.fc32.noarch.rpm" + }, + "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgomp-10.0.1-0.11.fc32.x86_64.rpm" + }, + "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-1.1.1d-7.fc32.x86_64.rpm" + }, + "sha256:d811958654f2a691781a872fb6aecc1fc50611b47217176c7742a4311ee364ba": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xen-licenses-4.13.0-6.fc32.x86_64.rpm" + }, + "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-8.fc32.noarch.rpm" + }, + "sha256:dab54013f8316b766c40c71f9c0c2124c1f0c219b417d588b5ba1dccf7d63fd7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtevent-0.10.2-2.fc32.x86_64.rpm" + }, + "sha256:dc5a84049a6fc1f7c2a709ab3c2fa53de65e864f26085f5ca69864f5c2f6955d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/plymouth-core-libs-0.9.4-14.20200325gite31c81f.fc32.x86_64.rpm" + }, + "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-2.31-2.fc32.x86_64.rpm" + }, + "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsmartcols-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-0.23.20-1.fc32.x86_64.rpm" + }, + "sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/h/hostname-3.23-2.fc32.x86_64.rpm" + }, + "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libseccomp-2.4.2-3.fc32.x86_64.rpm" + }, + "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-libs-5.38-2.fc32.x86_64.rpm" + }, + "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/krb5-libs-1.18-1.fc32.x86_64.rpm" + }, + "sha256:e3175d0dba977f1cff702498ea68cc13134a0f525a869025e2ee3ede987d7867": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xfsprogs-5.4.0-3.fc32.x86_64.rpm" + }, + "sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sudo-1.9.0-0.1.b4.fc32.x86_64.rpm" + }, + "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmount-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:e7b9fd73c260cd22d3a36823530d4f623ea0e16844b900a5677c769afa76341c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-chardet-3.0.4-15.fc32.noarch.rpm" + }, + "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-common-2.31-2.fc32.x86_64.rpm" + }, + "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcomps-0.1.14-4.fc32.x86_64.rpm" + }, + "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.x86_64.rpm" + }, + "sha256:ebbace15f986288bba7681f44a111b14bcc7cae00b7a1faadaa838bd51897357": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfido2-1.3.1-1.fc32.x86_64.rpm" + }, + "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm" + }, + "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libs-3.8.2-2.fc32.x86_64.rpm" + }, + "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.x86_64.rpm" + }, + "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-1.12.16-4.fc32.x86_64.rpm" + }, + "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libverto-0.3.0-9.fc32.x86_64.rpm" + }, + "sha256:ee57347efdda4eaffdcfca30cb04d3089ab36d270a570ae8132dacdce766f2c4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libXfixes-5.0.3-11.fc32.x86_64.rpm" + }, + "sha256:ee6ca269e8acf09214f2a1b1bf55b72d8177fdcfb4a70ef49a01fa0c2d998b11": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qemu-guest-agent-4.2.0-7.fc32.x86_64.rpm" + }, + "sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm" + }, + "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.x86_64.rpm" + }, + "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/readline-8.0-4.fc32.x86_64.rpm" + }, + "sha256:f2715fc8a04d33716f40f5b34466e082140df7ff3b7b972c29655d4dfc6e3a72": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-8.fc32.x86_64.rpm" + }, + "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-7.fc32.x86_64.rpm" + }, + "sha256:f391fe0e21e51e7c864f8bce1b5825419f4096023b5b90b3976bbd69d6a4d720": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_certmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libelf-0.179-1.fc32.x86_64.rpm" + }, + "sha256:f49739e27706d71a5dc75a5bfdf6c31fc67f6cb0cc1f38afe4eafb6e6ae1e4e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdrm-2.4.100-2.fc32.x86_64.rpm" + }, + "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-libs-1.8.4-7.fc32.x86_64.rpm" + }, + "sha256:f60fc561675e41ffa2c48b229960291e2438441d5ed758c1f28cb06b5d4e4ea9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipset-libs-7.6-1.fc32.x86_64.rpm" + }, + "sha256:f6203a41ed91197bb770a38a101d977f0f56de86ccc5a71cee9c0e198f26bcbc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-ply-3.11-7.fc32.noarch.rpm" + }, + "sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libselinux-3.0-3.fc32.x86_64.rpm" + }, + "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libacl-2.2.53-5.fc32.x86_64.rpm" + }, + "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmodulemd-2.9.1-1.fc32.x86_64.rpm" + }, + "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libutempter-1.1.6-18.fc32.x86_64.rpm" + }, + "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdnf-0.45.0-3.fc32.x86_64.rpm" + }, + "sha256:fa791a4328b4c41b7190d862de921605f266a64abee03b2ea2e8d2b644be307f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pysocks-1.7.1-4.fc32.noarch.rpm" + }, + "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libunistring-0.9.10-7.fc32.x86_64.rpm" + }, + "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kpartx-0.8.2-3.fc32.x86_64.rpm" + }, + "sha256:fd2a2dd726d855f877296227fb351883d647df28b1b0085f525d87df622d49e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.22.10-1.fc32.x86_64.rpm" + }, + "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-4.fc32.x86_64.rpm" + }, + "sha256:fe70d5a1c818367be3a5a7e60cbb379f020f97f63ba3c13ed09740f45a43154a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipcalc-0.4.0-2.fc32.x86_64.rpm" + }, + "sha256:fed6244fce0c0b48933d622dfbb00cf73931b2f746b27675a025a33b591d9820": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libini_config-1.3.1-44.fc32.x86_64.rpm" + }, + "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.x86_64.rpm" + }, + "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sed-4.5-5.fc32.x86_64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "checksum": "sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec", + "check_gpg": true + }, + { + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "checksum": "sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe", + "check_gpg": true + }, + { + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "checksum": "sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4", + "check_gpg": true + }, + { + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "checksum": "sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9", + "check_gpg": true + }, + { + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "checksum": "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b", + "check_gpg": true + }, + { + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts", + "labels": { + "/usr/bin/cp": "system_u:object_r:install_exec_t:s0" + } + } + } + ] + }, + "runner": "org.osbuild.fedora32" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:342bdf0143d9145f8846e1b5c3401685e0d1274b66df39ac8cbfb78013313861", + "check_gpg": true + }, + { + "checksum": "sha256:fd2a2dd726d855f877296227fb351883d647df28b1b0085f525d87df622d49e4", + "check_gpg": true + }, + { + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "checksum": "sha256:3bf7a70c94c538912ae92866c6bae4666f2bcf76bfe828ad24490a6a9bd3aad3", + "check_gpg": true + }, + { + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "checksum": "sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d", + "check_gpg": true + }, + { + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "checksum": "sha256:46407b730b272223b8b64d12df0725af571b4a5c5ab89b9f41e12a49e07c6e6b", + "check_gpg": true + }, + { + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "checksum": "sha256:703fb5ca1651bb72d8ab58576ce3d78c9479cbb2e78ff8666ae3a3d1cd9bb0da", + "check_gpg": true + }, + { + "checksum": "sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57", + "check_gpg": true + }, + { + "checksum": "sha256:1e1e9900e9d3a2b8eb6684060672526948df2cb9f751e7d72cb4fa5bffe71747", + "check_gpg": true + }, + { + "checksum": "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309", + "check_gpg": true + }, + { + "checksum": "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56", + "check_gpg": true + }, + { + "checksum": "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280", + "check_gpg": true + }, + { + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "checksum": "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315", + "check_gpg": true + }, + { + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "checksum": "sha256:8c047278ce11e7ba7169a9c9537c3c6544f52c7eee8754179acd839ed59c028f", + "check_gpg": true + }, + { + "checksum": "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013", + "check_gpg": true + }, + { + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "checksum": "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d", + "check_gpg": true + }, + { + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "checksum": "sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73", + "check_gpg": true + }, + { + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "checksum": "sha256:907393755387a351806ec2afff376e7491f177116caadd12f07d0fcbed796750", + "check_gpg": true + }, + { + "checksum": "sha256:f2715fc8a04d33716f40f5b34466e082140df7ff3b7b972c29655d4dfc6e3a72", + "check_gpg": true + }, + { + "checksum": "sha256:b8ecd7fa0e7e072828e374dfb0d61bb8eecca7c190f3661050cee5e3fc8854b4", + "check_gpg": true + }, + { + "checksum": "sha256:47538b1db9720be4699329a8da32d873187d0c6c22f45252614ac5b8a8312482", + "check_gpg": true + }, + { + "checksum": "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012", + "check_gpg": true + }, + { + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "checksum": "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3", + "check_gpg": true + }, + { + "checksum": "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f", + "check_gpg": true + }, + { + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "checksum": "sha256:24520e03276e0d850169efc9d83b12a9a01eee5d7202dadca12d2e0a8b7352ba", + "check_gpg": true + }, + { + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "checksum": "sha256:052ddc487a29acce1b5d44532f79f8ab594d0ac6565504071f4c7706d97fc552", + "check_gpg": true + }, + { + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "checksum": "sha256:808e7209893298d11ac27f148c1b3d1a2b28e303e7930b43659a08dc0f660ac4", + "check_gpg": true + }, + { + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "checksum": "sha256:cbdc61d713e4cbe52b2bece117912da0f1e3782cb3b33caa068e96c854c990be", + "check_gpg": true + }, + { + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "checksum": "sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823", + "check_gpg": true + }, + { + "checksum": "sha256:5eed798a806e26720df47f1c95600ae67cc1275c381f33c8260b32b23d81a978", + "check_gpg": true + }, + { + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "checksum": "sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339", + "check_gpg": true + }, + { + "checksum": "sha256:fe70d5a1c818367be3a5a7e60cbb379f020f97f63ba3c13ed09740f45a43154a", + "check_gpg": true + }, + { + "checksum": "sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684", + "check_gpg": true + }, + { + "checksum": "sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae", + "check_gpg": true + }, + { + "checksum": "sha256:7c21c21c3e3dbace06bee03fe4835ae6cb1e3ef86750ba2853f39d40dead2309", + "check_gpg": true + }, + { + "checksum": "sha256:f60fc561675e41ffa2c48b229960291e2438441d5ed758c1f28cb06b5d4e4ea9", + "check_gpg": true + }, + { + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "checksum": "sha256:08c41c10745c172c34880e384cf5cff014a9627f4895e59fa482948b27e2ce9e", + "check_gpg": true + }, + { + "checksum": "sha256:6a3282927f525629bc0aaf4090e108d33b0709d3d5b35bc442000c2837e7b9b4", + "check_gpg": true + }, + { + "checksum": "sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8", + "check_gpg": true + }, + { + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "checksum": "sha256:89c972ec7d2ab305c91c23bc248562c76f0ae645a9ed9f94d312e2f57c4d38fe", + "check_gpg": true + }, + { + "checksum": "sha256:a1613e90865db93fb578b8ee1a4ee40bd396c6c9f2fb2a14757acacecb9f23e8", + "check_gpg": true + }, + { + "checksum": "sha256:b98687828b1d222ea73ebb8457450913dac58dd0be2e430a93bb7e98ba816505", + "check_gpg": true + }, + { + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "checksum": "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0", + "check_gpg": true + }, + { + "checksum": "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389", + "check_gpg": true + }, + { + "checksum": "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca", + "check_gpg": true + }, + { + "checksum": "sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884", + "check_gpg": true + }, + { + "checksum": "sha256:20595861a9079a16f904a491b325347513ef9bc3587a0b9d1f4fc42d6fd2b526", + "check_gpg": true + }, + { + "checksum": "sha256:73e9cf715ccf15c1e26fbcd40ec29788fb7250958bc923e56b4826a8d6fb6920", + "check_gpg": true + }, + { + "checksum": "sha256:0f002cc5ef09532fb9ef309c6e24ab064cb1babda1514a1258e214fe9fe60ab1", + "check_gpg": true + }, + { + "checksum": "sha256:2ba020fbb3c5aa9079b6e49903e1525ddd0722135a5fc7ce92e7dea2140102da", + "check_gpg": true + }, + { + "checksum": "sha256:ee57347efdda4eaffdcfca30cb04d3089ab36d270a570ae8132dacdce766f2c4", + "check_gpg": true + }, + { + "checksum": "sha256:2ff43874437eef6ea52557525c1e7bf1c9c0e7e041bda00bb85ff67d86d8d5ca", + "check_gpg": true + }, + { + "checksum": "sha256:c64bf28e6017f1c5e8559d2e9c2d78bb5d577bd0b0b05617ce42c7d2e0b0dbc9", + "check_gpg": true + }, + { + "checksum": "sha256:656bbeddecee15f2b638da3c5cdfbcf0ec7bff14ea1eb8179b30b6b389ffa4db", + "check_gpg": true + }, + { + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "checksum": "sha256:26cca773f1f258105f0f825a8e0faebcaa183655b5d91cd972afbe791b586478", + "check_gpg": true + }, + { + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "checksum": "sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5", + "check_gpg": true + }, + { + "checksum": "sha256:9d4691918d7add910e8c03d61cccda0316b62d77b30ac2e502cf2e55289d1823", + "check_gpg": true + }, + { + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "checksum": "sha256:ca540fb7088948fdfe6e6b52a5e2b6a74d2d17136857da9f3f4a1ee29c8eb74b", + "check_gpg": true + }, + { + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "checksum": "sha256:f49739e27706d71a5dc75a5bfdf6c31fc67f6cb0cc1f38afe4eafb6e6ae1e4e9", + "check_gpg": true + }, + { + "checksum": "sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09", + "check_gpg": true + }, + { + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "checksum": "sha256:ebbace15f986288bba7681f44a111b14bcc7cae00b7a1faadaa838bd51897357", + "check_gpg": true + }, + { + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "checksum": "sha256:fed6244fce0c0b48933d622dfbb00cf73931b2f746b27675a025a33b591d9820", + "check_gpg": true + }, + { + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "checksum": "sha256:cd16f6ef433d7dc6860b19f3d77b666a03d35361aba78ee09d772575c2f69cc0", + "check_gpg": true + }, + { + "checksum": "sha256:60589342d58922ba061ac8df7d753a7e7e75162c97ab086739e9d33fbf289091", + "check_gpg": true + }, + { + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "checksum": "sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f", + "check_gpg": true + }, + { + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "checksum": "sha256:bb154a90c968150172036d86f0c9fc2a24b5799718bc4d835cb10d0758890c67", + "check_gpg": true + }, + { + "checksum": "sha256:3afab9512fd4d56a13c95b530c805ac8b2bc872572ec5bb435eccdd59fbbc8b6", + "check_gpg": true + }, + { + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "checksum": "sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1", + "check_gpg": true + }, + { + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "checksum": "sha256:ce1a80b0ba6f09a7e5a188436088dd31d10c5f7b43dbe9c1788f705127c8e6b2", + "check_gpg": true + }, + { + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "checksum": "sha256:4630ea4b3e4c439f2d3bc4cf33e71388e65cd5394338c86fa1074c6f7fa0d801", + "check_gpg": true + }, + { + "checksum": "sha256:c0a0c6f3e30c20815496be8de00f9596737e2693feb85f7484f200ffa9174530", + "check_gpg": true + }, + { + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1181ed798617668f195579acfcf8fb212513a776f376eecfb3d086c66b2d9", + "check_gpg": true + }, + { + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "checksum": "sha256:695ef8ae55ed6a165a3633b3c0d75b320879246386e6df4539be9286f5176cc5", + "check_gpg": true + }, + { + "checksum": "sha256:f391fe0e21e51e7c864f8bce1b5825419f4096023b5b90b3976bbd69d6a4d720", + "check_gpg": true + }, + { + "checksum": "sha256:599549d72d26b48c45156585a5698898c853e56469142e202d3749b781428465", + "check_gpg": true + }, + { + "checksum": "sha256:66bb5b2e99d2c74b82943fe61fe9b9a3674350b0242f69a6854ec9718dcf5e07", + "check_gpg": true + }, + { + "checksum": "sha256:af66820023c984d8b981ecac715d0c2daec1f89dcb69bed76ddf58b0ee80c1b1", + "check_gpg": true + }, + { + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "checksum": "sha256:16702883a79532a400d7304146cdb47b0599983b9fb48ab918ef9fa1ce0be394", + "check_gpg": true + }, + { + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "checksum": "sha256:36778f8a4fa111c4f796bbea8fd52f7b9708de8f4351070faa30bc985db59885", + "check_gpg": true + }, + { + "checksum": "sha256:dab54013f8316b766c40c71f9c0c2124c1f0c219b417d588b5ba1dccf7d63fd7", + "check_gpg": true + }, + { + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "checksum": "sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975", + "check_gpg": true + }, + { + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "checksum": "sha256:a067d65415265d19aa2d0adcbd9234029eda8245a8c58262b3ced83edc6ddf38", + "check_gpg": true + }, + { + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "checksum": "sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467", + "check_gpg": true + }, + { + "checksum": "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4", + "check_gpg": true + }, + { + "checksum": "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9", + "check_gpg": true + }, + { + "checksum": "sha256:25ae9056f75df4efff0d17d916e7c3889c421368613acec7f1c4119bd17eac13", + "check_gpg": true + }, + { + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "checksum": "sha256:ca80c458fab5bdde0276702f06217d1219085428560af6039aa1c5cf1e58ff3b", + "check_gpg": true + }, + { + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "checksum": "sha256:924367aa63693da4660dcb806fbf52b3bcb7c4d12b40c4b4ba6329079936d073", + "check_gpg": true + }, + { + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "checksum": "sha256:0b7d24759aac33303ff4b101c111dea03ff2529efc95661140e22f629cc1ab7a", + "check_gpg": true + }, + { + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "checksum": "sha256:0d51c1319ee78978e6ea5a49b815c2078b4ffd4d575e98c70e54ca01c3390eb8", + "check_gpg": true + }, + { + "checksum": "sha256:8b148415fb6a583ef131d0ddff44f3209c30d0299fde7b20cd3ea385590927c1", + "check_gpg": true + }, + { + "checksum": "sha256:d1e244b8b5ce7404846e97d96c762c8c18ff6447301f6fc63f50e615029aa7cd", + "check_gpg": true + }, + { + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "checksum": "sha256:4b9da0cedada16eb80a2d66b86aa62c9b026501e13a3e947a5a03a06f41d9dbb", + "check_gpg": true + }, + { + "checksum": "sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719", + "check_gpg": true + }, + { + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "checksum": "sha256:50ee0171a6f55c7e436c6444edb7b801b58de3c9f3f890b3d66d8a74a249c651", + "check_gpg": true + }, + { + "checksum": "sha256:5cd4b781742b64dfff3cb3840ed5bb76f6946fb63f4ab742a51c3505747271a1", + "check_gpg": true + }, + { + "checksum": "sha256:dc5a84049a6fc1f7c2a709ab3c2fa53de65e864f26085f5ca69864f5c2f6955d", + "check_gpg": true + }, + { + "checksum": "sha256:d36f08a44d6a3bc95f995c858ecb5e0d7fb22a8236008267024dd6a0ff66cc85", + "check_gpg": true + }, + { + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "checksum": "sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386", + "check_gpg": true + }, + { + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "checksum": "sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444", + "check_gpg": true + }, + { + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "checksum": "sha256:bcb07748c8688c788ec69c3a33c0abd1bb3a496b9aa09b5729265670bc7ba0eb", + "check_gpg": true + }, + { + "checksum": "sha256:b1111e77a5fdbacaa04acc90d3844706158bc5892173862928705620b8910adb", + "check_gpg": true + }, + { + "checksum": "sha256:5719dd2fb399cadec08b4ac41c794239d2a2de2f012faeb970ab90a07bba0084", + "check_gpg": true + }, + { + "checksum": "sha256:7124f9fedc862e3bab80f05b804b6c9580603ce3155727e888646d4d4f5ddc50", + "check_gpg": true + }, + { + "checksum": "sha256:e7b9fd73c260cd22d3a36823530d4f623ea0e16844b900a5677c769afa76341c", + "check_gpg": true + }, + { + "checksum": "sha256:81b6181b947d50e0a1ea681298417e552421d6714900d07a34dc25899e5c9f60", + "check_gpg": true + }, + { + "checksum": "sha256:bb8942d19e594c0f4ca181bd58796bd5d3cb681c3f17cd2ec2654c3afe28e39a", + "check_gpg": true + }, + { + "checksum": "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862", + "check_gpg": true + }, + { + "checksum": "sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070", + "check_gpg": true + }, + { + "checksum": "sha256:129adf9147d5d120546ca8e0fb5f165761106d386d366fe82591e372754d0b4a", + "check_gpg": true + }, + { + "checksum": "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4", + "check_gpg": true + }, + { + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "checksum": "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576", + "check_gpg": true + }, + { + "checksum": "sha256:8ee8c4bbf024b998ffb77a6b4194a2306ac21c5a6fcf70c8c81a0fbf38f7c7fc", + "check_gpg": true + }, + { + "checksum": "sha256:34411604a91c301dc8489285065c68f3a2f50910717097fedcaade6481c7469e", + "check_gpg": true + }, + { + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "checksum": "sha256:61c51596cc97f35177efe8dc5e2ca52d8fd528570f33c184497f419259b73c90", + "check_gpg": true + }, + { + "checksum": "sha256:645f82cf62da25742cab5e8ffd1f764301b84ab19710d9f3fb3aff1cb57ffdc6", + "check_gpg": true + }, + { + "checksum": "sha256:4c9d77d63ddc7dda0e018fc1c97d46025794e336e58d838a631fcc130dfa3b9b", + "check_gpg": true + }, + { + "checksum": "sha256:6615aae3def0c49910e43e2d69f7ae8852694953dceb4b6235b5cf4099296d70", + "check_gpg": true + }, + { + "checksum": "sha256:6890a9545194ad6cf1b0c58e5273132171a9ced9cb665a1442aa62b6b6d3d2ea", + "check_gpg": true + }, + { + "checksum": "sha256:d0bc781a80be1d1fe204ec6b26255240261d55f6e24a28343572f2221a00533e", + "check_gpg": true + }, + { + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "checksum": "sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124", + "check_gpg": true + }, + { + "checksum": "sha256:55bafcdf9c31b1456af3bf584bfe7ac745a03f4decd17197ea97b498d68b3b82", + "check_gpg": true + }, + { + "checksum": "sha256:c05d01195aa4ca0f4a471574cc7ece8a0f4daf437935d845cd0745e2512cb9c9", + "check_gpg": true + }, + { + "checksum": "sha256:0fc0193d95d69c780b6feb1cb74759ca2d4804701b3de936dac8429cfbe0f2e9", + "check_gpg": true + }, + { + "checksum": "sha256:391faab010ca30610a14e0b3d54fbc0331be39bc831086fb877f8021fe4b171f", + "check_gpg": true + }, + { + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "checksum": "sha256:f6203a41ed91197bb770a38a101d977f0f56de86ccc5a71cee9c0e198f26bcbc", + "check_gpg": true + }, + { + "checksum": "sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2", + "check_gpg": true + }, + { + "checksum": "sha256:4860a733ca3f22089c6c283cbdcf53123a702d60b5bffdd4fe9d76826f91139a", + "check_gpg": true + }, + { + "checksum": "sha256:a0b87b2dc3c5f536e94d6a4f3563a621dfbc067a62c3d1fe69bdb70c3cecec57", + "check_gpg": true + }, + { + "checksum": "sha256:1e655f02895f6a87f9be5793065570b57e623cbf15516094df62e1f5626d4158", + "check_gpg": true + }, + { + "checksum": "sha256:a107b3d3790a5bcfdc28f6f4718969039b103a681a2647f3cbcb82cf92e97acb", + "check_gpg": true + }, + { + "checksum": "sha256:fa791a4328b4c41b7190d862de921605f266a64abee03b2ea2e8d2b644be307f", + "check_gpg": true + }, + { + "checksum": "sha256:c93df175a0a4989aaaeb170406d8ff13a2cd93a5fc52ad33468245fea2044a86", + "check_gpg": true + }, + { + "checksum": "sha256:c13c7da4b097499576861cb12fdd02e520af69b5f23d615b3968c54f40f8fd47", + "check_gpg": true + }, + { + "checksum": "sha256:d611f0c4252c4c4b893850807748e62cf4d17d72d544ef2744091df3206d8178", + "check_gpg": true + }, + { + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "checksum": "sha256:6f5f53b66f7c3bf6958f6f163788583265ff0360188620c3b0f7ddedeac3d1f4", + "check_gpg": true + }, + { + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "checksum": "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f", + "check_gpg": true + }, + { + "checksum": "sha256:d2abba1a0523bd9df5073900593ab13ec2ed2e391440be4d883314fa154370f8", + "check_gpg": true + }, + { + "checksum": "sha256:cb0c64cc81e0b384bbc9d27ffcb2a655b13c91a799aad8972264aed1767926a3", + "check_gpg": true + }, + { + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "checksum": "sha256:3882823d0eb18e0e8146584f4a32a4801961f6fdc09075607746317eba3265be", + "check_gpg": true + }, + { + "checksum": "sha256:ee6ca269e8acf09214f2a1b1bf55b72d8177fdcfb4a70ef49a01fa0c2d998b11", + "check_gpg": true + }, + { + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "checksum": "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58", + "check_gpg": true + }, + { + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "checksum": "sha256:7c9e29d36ce974b96974b93a393af20499bc0bc977753cd13190065e88d3dd00", + "check_gpg": true + }, + { + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "checksum": "sha256:699c1a3ff311bbaa2380c085fb4f516aa08be474bed02bcd1569d0bbf5b22d07", + "check_gpg": true + }, + { + "checksum": "sha256:265dee550073120d51e4c94d3d039e5efdee73a0ae1b1faf2b92de0dad1f58fa", + "check_gpg": true + }, + { + "checksum": "sha256:3ee53d0dba5bbfd3bbb2ae4b54e3ebdfa122e1cf120e17ff9c4c35674269e5ad", + "check_gpg": true + }, + { + "checksum": "sha256:3c3fb1ca768ecd6ae7905a09cd85b9f67e9f08c46d18779520fb4b29476865c7", + "check_gpg": true + }, + { + "checksum": "sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b", + "check_gpg": true + }, + { + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "checksum": "sha256:4fca21cfdcbed052e3e9e1eff74c22fb8ffb1fbbeb63e87e2aa540e43a8c0d09", + "check_gpg": true + }, + { + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "checksum": "sha256:51b9b8d1cc4b0d7fb1fb93a653a4fb963a87598dc234c83d0821a365e0b134a4", + "check_gpg": true + }, + { + "checksum": "sha256:d811958654f2a691781a872fb6aecc1fc50611b47217176c7742a4311ee364ba", + "check_gpg": true + }, + { + "checksum": "sha256:e3175d0dba977f1cff702498ea68cc13134a0f525a869025e2ee3ede987d7867", + "check_gpg": true + }, + { + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "checksum": "sha256:9194788f87e4a1aa8835f1305d290cc2cd67cee6a5b1ab82643d3a068c0145b6", + "check_gpg": true + }, + { + "checksum": "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf", + "check_gpg": true + }, + { + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "redhat": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "vfs_type": "ext4", + "path": "/", + "options": "defaults", + "freq": 1, + "passno": 1 + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "kernel_opts": "ro biosdevname=0 net.ifnames=0", + "legacy": "i386-pc" + } + }, + { + "name": "org.osbuild.systemd", + "options": { + "enabled_services": [ + "cloud-init.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service" + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "qcow2", + "filename": "disk.qcow2", + "size": 2147483648, + "ptuuid": "0x14fc63d2", + "pttype": "mbr", + "partitions": [ + { + "start": 2048, + "bootable": true, + "filesystem": { + "type": "ext4", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/acl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/alternatives-1.11-6.fc32.x86_64.rpm", + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm", + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bash-5.0.11-2.fc32.x86_64.rpm", + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.x86_64.rpm", + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2020.2.40", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm", + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-common-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.13", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cpio-2.13-4.fc32.x86_64.rpm", + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.x86_64.rpm", + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/curl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.x86_64.rpm", + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "22", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-broker-22-1.fc32.x86_64.rpm", + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm", + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-5.fc32.x86_64.rpm", + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/diffutils-3.7-4.fc32.x86_64.rpm", + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dosfstools-4.1-10.fc32.x86_64.rpm", + "checksum": "sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-050-26.git20200316.fc32.x86_64.rpm", + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm", + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libelf-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libs-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/expat-2.2.8-2.fc32.x86_64.rpm", + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm", + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-32-1.noarch.rpm", + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-common-32-1.noarch.rpm", + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-repos-32-1.noarch.rpm", + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-libs-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.14", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/filesystem-3.14-2.fc32.x86_64.rpm", + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.7.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/findutils-4.7.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-9.fc32.x86_64.rpm", + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gawk-5.0.1-7.fc32.x86_64.rpm", + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.x86_64.rpm", + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.64.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glib2-2.64.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-common-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gmp-6.1.2-13.fc32.x86_64.rpm", + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.13", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnutls-3.6.13-1.fc32.x86_64.rpm", + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gpgme-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grep-3.3-4.fc32.x86_64.rpm", + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gzip-1.10-2.fc32.x86_64.rpm", + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.x86_64.rpm", + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-libs-1.8.4-7.fc32.x86_64.rpm", + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/json-c-0.13.1-9.fc32.x86_64.rpm", + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-2.2.0-1.fc32.x86_64.rpm", + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-27-1.fc32.x86_64.rpm", + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-libs-27-1.fc32.x86_64.rpm", + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kpartx-0.8.2-3.fc32.x86_64.rpm", + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/krb5-libs-1.18-1.fc32.x86_64.rpm", + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libacl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.111", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libaio-0.3.111-7.fc32.x86_64.rpm", + "checksum": "sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.2", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libarchive-3.4.2-1.fc32.x86_64.rpm", + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libargon2-20171227-4.fc32.x86_64.rpm", + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libassuan-2.5.3-3.fc32.x86_64.rpm", + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libattr-2.4.48-8.fc32.x86_64.rpm", + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libblkid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "name": "libbrotli", + "epoch": 0, + "version": "1.0.7", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbrotli-1.0.7-10.fc32.x86_64.rpm", + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-2.26-7.fc32.x86_64.rpm", + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-ng-0.7.10-2.fc32.x86_64.rpm", + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcom_err-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcroco-0.6.13-3.fc32.x86_64.rpm", + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcurl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libevent-2.1.8-8.fc32.x86_64.rpm", + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfdisk-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libffi-3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcc-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-3.fc32.x86_64.rpm", + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgomp-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgpg-error-1.36-3.fc32.x86_64.rpm", + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libidn2-2.3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libksba-1.3.5-11.fc32.x86_64.rpm", + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-10.fc32.x86_64.rpm", + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmnl-1.0.4-11.fc32.x86_64.rpm", + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmodulemd-2.9.1-1.fc32.x86_64.rpm", + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmount-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.x86_64.rpm", + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "17.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.x86_64.rpm", + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.40.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnghttp2-1.40.0-2.fc32.x86_64.rpm", + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "6.20180605git4a062cf.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64.rpm", + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpcap-1.9.1-3.fc32.x86_64.rpm", + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpsl-0.21.0-4.fc32.x86_64.rpm", + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpwquality-1.4.2-2.fc32.x86_64.rpm", + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.11.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/librepo-1.11.1-4.fc32.x86_64.rpm", + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.12.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm", + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libseccomp-2.4.2-3.fc32.x86_64.rpm", + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.20.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsecret-0.20.2-2.fc32.x86_64.rpm", + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-utils-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsemanage-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsepol-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsigsegv-2.11-10.fc32.x86_64.rpm", + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsmartcols-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsolv-0.7.11-2.fc32.x86_64.rpm", + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libss-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-0.9.3-2.fc32.x86_64.rpm", + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm", + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.16.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtasn1-4.16.0-1.fc32.x86_64.rpm", + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.2.5", + "release": "1.rc2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.x86_64.rpm", + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libunistring-0.9.10-7.fc32.x86_64.rpm", + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libusbx-1.0.23-1.fc32.x86_64.rpm", + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "18.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libutempter-1.1.6-18.fc32.x86_64.rpm", + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuuid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libverto-0.3.0-9.fc32.x86_64.rpm", + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.10.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.x86_64.rpm", + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.10", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxml2-2.9.10-3.fc32.x86_64.rpm", + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libyaml-0.2.2-3.fc32.x86_64.rpm", + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libzstd-1.4.4-2.fc32.x86_64.rpm", + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-7.fc32.x86_64.rpm", + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-2.fc32.x86_64.rpm", + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mkpasswd-5.5.6-1.fc32.x86_64.rpm", + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "4.0.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mpfr-4.0.2-3.fc32.x86_64.rpm", + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm", + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nettle-3.5.1-5.fc32.x86_64.rpm", + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/npth-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openldap-2.4.47-4.fc32.x86_64.rpm", + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.x86_64.rpm", + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/os-prober-1.77-4.fc32.x86_64.rpm", + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pam-1.3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.44", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre-8.44-1.fc32.x86_64.rpm", + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-10.34-9.fc32.x86_64.rpm", + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "name": "pcre2-syntax", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm", + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pigz-2.4-6.fc32.x86_64.rpm", + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pinentry-1.1.0-7.fc32.x86_64.rpm", + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/popt-1.16-19.fc32.x86_64.rpm", + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-7.fc32.x86_64.rpm", + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm", + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libs-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-unbound-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "name": "qemu-img", + "epoch": 2, + "version": "4.2.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qemu-img-4.2.0-7.fc32.x86_64.rpm", + "checksum": "sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.x86_64.rpm", + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/readline-8.0-4.fc32.x86_64.rpm", + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sed-4.5-5.fc32.x86_64.rpm", + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.6", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm", + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.8.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shadow-utils-4.8.1-2.fc32.x86_64.rpm", + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.15", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shared-mime-info-1.15-3.fc32.x86_64.rpm", + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.31.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-libs-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-pam-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm", + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-udev-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tar-1.32-4.fc32.x86_64.rpm", + "checksum": "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tss2-1331-4.fc32.x86_64.rpm", + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm", + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/unbound-libs-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/util-linux-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/which-2.21-19.fc32.x86_64.rpm", + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm", + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.29", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm", + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-libs-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "21.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zlib-1.2.11-21.fc32.x86_64.rpm", + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.22.10", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-1.22.10-1.fc32.x86_64.rpm", + "checksum": "sha256:342bdf0143d9145f8846e1b5c3401685e0d1274b66df39ac8cbfb78013313861", + "check_gpg": true + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.22.10", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.22.10-1.fc32.x86_64.rpm", + "checksum": "sha256:fd2a2dd726d855f877296227fb351883d647df28b1b0085f525d87df622d49e4", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/acl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "name": "alsa-lib", + "epoch": 0, + "version": "1.2.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/alsa-lib-1.2.2-2.fc32.x86_64.rpm", + "checksum": "sha256:3bf7a70c94c538912ae92866c6bae4666f2bcf76bfe828ad24490a6a9bd3aad3", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/alternatives-1.11-6.fc32.x86_64.rpm", + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm", + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bash-5.0.11-2.fc32.x86_64.rpm", + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.x86_64.rpm", + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.15.0", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/c-ares-1.15.0-5.fc32.x86_64.rpm", + "checksum": "sha256:46407b730b272223b8b64d12df0725af571b4a5c5ab89b9f41e12a49e07c6e6b", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2020.2.40", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm", + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/checkpolicy-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:703fb5ca1651bb72d8ab58576ce3d78c9479cbb2e78ff8666ae3a3d1cd9bb0da", + "check_gpg": true + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/chrony-3.5-8.fc32.x86_64.rpm", + "checksum": "sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57", + "check_gpg": true + }, + { + "name": "cloud-init", + "epoch": 0, + "version": "19.4", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cloud-init-19.4-2.fc32.noarch.rpm", + "checksum": "sha256:1e1e9900e9d3a2b8eb6684060672526948df2cb9f751e7d72cb4fa5bffe71747", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-sans-mono-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-serif-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-common-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.13", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cpio-2.13-4.fc32.x86_64.rpm", + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.x86_64.rpm", + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/curl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.x86_64.rpm", + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "22", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-broker-22-1.fc32.x86_64.rpm", + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm", + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "name": "dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-5.fc32.x86_64.rpm", + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.4.2", + "release": "5.b1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dhcp-client-4.4.2-5.b1.fc32.x86_64.rpm", + "checksum": "sha256:8c047278ce11e7ba7169a9c9537c3c6544f52c7eee8754179acd839ed59c028f", + "check_gpg": true + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.4.2", + "release": "5.b1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dhcp-common-4.4.2-5.b1.fc32.noarch.rpm", + "checksum": "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/diffutils-3.7-4.fc32.x86_64.rpm", + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.14", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-plugins-core-4.0.14-1.fc32.noarch.rpm", + "checksum": "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-050-26.git20200316.fc32.x86_64.rpm", + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-config-generic-050-26.git20200316.fc32.x86_64.rpm", + "checksum": "sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm", + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libelf-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libs-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/expat-2.2.8-2.fc32.x86_64.rpm", + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm", + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-32-1.noarch.rpm", + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-common-32-1.noarch.rpm", + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-repos-32-1.noarch.rpm", + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-libs-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.14", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/filesystem-3.14-2.fc32.x86_64.rpm", + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.7.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/findutils-4.7.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-8.fc32.x86_64.rpm", + "checksum": "sha256:907393755387a351806ec2afff376e7491f177116caadd12f07d0fcbed796750", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-8.fc32.x86_64.rpm", + "checksum": "sha256:f2715fc8a04d33716f40f5b34466e082140df7ff3b7b972c29655d4dfc6e3a72", + "check_gpg": true + }, + { + "name": "firewalld", + "epoch": 0, + "version": "0.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/firewalld-0.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:b8ecd7fa0e7e072828e374dfb0d61bb8eecca7c190f3661050cee5e3fc8854b4", + "check_gpg": true + }, + { + "name": "firewalld-filesystem", + "epoch": 0, + "version": "0.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/firewalld-filesystem-0.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:47538b1db9720be4699329a8da32d873187d0c6c22f45252614ac5b8a8312482", + "check_gpg": true + }, + { + "name": "fonts-filesystem", + "epoch": 0, + "version": "2.0.3", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fonts-filesystem-2.0.3-1.fc32.noarch.rpm", + "checksum": "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-9.fc32.x86_64.rpm", + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gawk-5.0.1-7.fc32.x86_64.rpm", + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.x86_64.rpm", + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20191217", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/geolite2-city-20191217-2.fc32.noarch.rpm", + "checksum": "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3", + "check_gpg": true + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20191217", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/geolite2-country-20191217-2.fc32.noarch.rpm", + "checksum": "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.64.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glib2-2.64.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-common-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "name": "glibc-langpack-en", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:24520e03276e0d850169efc9d83b12a9a01eee5d7202dadca12d2e0a8b7352ba", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gmp-6.1.2-13.fc32.x86_64.rpm", + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.13", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnutls-3.6.13-1.fc32.x86_64.rpm", + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.64.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gobject-introspection-1.64.1-1.fc32.x86_64.rpm", + "checksum": "sha256:052ddc487a29acce1b5d44532f79f8ab594d0ac6565504071f4c7706d97fc552", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gpgme-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grep-3.3-4.fc32.x86_64.rpm", + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "21.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/groff-base-1.22.3-21.fc32.x86_64.rpm", + "checksum": "sha256:808e7209893298d11ac27f148c1b3d1a2b28e303e7930b43659a08dc0f660ac4", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grubby-8.40-40.fc32.x86_64.rpm", + "checksum": "sha256:cbdc61d713e4cbe52b2bece117912da0f1e3782cb3b33caa068e96c854c990be", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gzip-1.10-2.fc32.x86_64.rpm", + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.23", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/h/hostname-3.23-2.fc32.x86_64.rpm", + "checksum": "sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823", + "check_gpg": true + }, + { + "name": "hwdata", + "epoch": 0, + "version": "0.334", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/h/hwdata-0.334-1.fc32.noarch.rpm", + "checksum": "sha256:5eed798a806e26720df47f1c95600ae67cc1275c381f33c8260b32b23d81a978", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.x86_64.rpm", + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.02", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/initscripts-10.02-3.fc32.x86_64.rpm", + "checksum": "sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339", + "check_gpg": true + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.4.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipcalc-0.4.0-2.fc32.x86_64.rpm", + "checksum": "sha256:fe70d5a1c818367be3a5a7e60cbb379f020f97f63ba3c13ed09740f45a43154a", + "check_gpg": true + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.5.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-5.5.0-1.fc32.x86_64.rpm", + "checksum": "sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684", + "check_gpg": true + }, + { + "name": "iproute-tc", + "epoch": 0, + "version": "5.5.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-tc-5.5.0-1.fc32.x86_64.rpm", + "checksum": "sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae", + "check_gpg": true + }, + { + "name": "ipset", + "epoch": 0, + "version": "7.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipset-7.6-1.fc32.x86_64.rpm", + "checksum": "sha256:7c21c21c3e3dbace06bee03fe4835ae6cb1e3ef86750ba2853f39d40dead2309", + "check_gpg": true + }, + { + "name": "ipset-libs", + "epoch": 0, + "version": "7.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipset-libs-7.6-1.fc32.x86_64.rpm", + "checksum": "sha256:f60fc561675e41ffa2c48b229960291e2438441d5ed758c1f28cb06b5d4e4ea9", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-libs-1.8.4-7.fc32.x86_64.rpm", + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "name": "iptables-nft", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-nft-1.8.4-7.fc32.x86_64.rpm", + "checksum": "sha256:08c41c10745c172c34880e384cf5cff014a9627f4895e59fa482948b27e2ce9e", + "check_gpg": true + }, + { + "name": "iputils", + "epoch": 0, + "version": "20190515", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iputils-20190515-5.fc32.x86_64.rpm", + "checksum": "sha256:6a3282927f525629bc0aaf4090e108d33b0709d3d5b35bc442000c2837e7b9b4", + "check_gpg": true + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.12", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/jansson-2.12-5.fc32.x86_64.rpm", + "checksum": "sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/json-c-0.13.1-9.fc32.x86_64.rpm", + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-2.2.0-1.fc32.x86_64.rpm", + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "name": "kernel", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-5.6.6-300.fc32.x86_64.rpm", + "checksum": "sha256:89c972ec7d2ab305c91c23bc248562c76f0ae645a9ed9f94d312e2f57c4d38fe", + "check_gpg": true + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-core-5.6.6-300.fc32.x86_64.rpm", + "checksum": "sha256:a1613e90865db93fb578b8ee1a4ee40bd396c6c9f2fb2a14757acacecb9f23e8", + "check_gpg": true + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-modules-5.6.6-300.fc32.x86_64.rpm", + "checksum": "sha256:b98687828b1d222ea73ebb8457450913dac58dd0be2e430a93bb7e98ba816505", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-27-1.fc32.x86_64.rpm", + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-libs-27-1.fc32.x86_64.rpm", + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kpartx-0.8.2-3.fc32.x86_64.rpm", + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/krb5-libs-1.18-1.fc32.x86_64.rpm", + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "name": "langpacks-core-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0", + "check_gpg": true + }, + { + "name": "langpacks-core-font-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-font-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389", + "check_gpg": true + }, + { + "name": "langpacks-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca", + "check_gpg": true + }, + { + "name": "less", + "epoch": 0, + "version": "551", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/less-551-3.fc32.x86_64.rpm", + "checksum": "sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884", + "check_gpg": true + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.9", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libX11-1.6.9-3.fc32.x86_64.rpm", + "checksum": "sha256:20595861a9079a16f904a491b325347513ef9bc3587a0b9d1f4fc42d6fd2b526", + "check_gpg": true + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.9", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libX11-common-1.6.9-3.fc32.noarch.rpm", + "checksum": "sha256:73e9cf715ccf15c1e26fbcd40ec29788fb7250958bc923e56b4826a8d6fb6920", + "check_gpg": true + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libXau-1.0.9-3.fc32.x86_64.rpm", + "checksum": "sha256:0f002cc5ef09532fb9ef309c6e24ab064cb1babda1514a1258e214fe9fe60ab1", + "check_gpg": true + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libXext-1.3.4-3.fc32.x86_64.rpm", + "checksum": "sha256:2ba020fbb3c5aa9079b6e49903e1525ddd0722135a5fc7ce92e7dea2140102da", + "check_gpg": true + }, + { + "name": "libXfixes", + "epoch": 0, + "version": "5.0.3", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libXfixes-5.0.3-11.fc32.x86_64.rpm", + "checksum": "sha256:ee57347efdda4eaffdcfca30cb04d3089ab36d270a570ae8132dacdce766f2c4", + "check_gpg": true + }, + { + "name": "libXinerama", + "epoch": 0, + "version": "1.1.4", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libXinerama-1.1.4-5.fc32.x86_64.rpm", + "checksum": "sha256:2ff43874437eef6ea52557525c1e7bf1c9c0e7e041bda00bb85ff67d86d8d5ca", + "check_gpg": true + }, + { + "name": "libXrandr", + "epoch": 0, + "version": "1.5.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libXrandr-1.5.2-3.fc32.x86_64.rpm", + "checksum": "sha256:c64bf28e6017f1c5e8559d2e9c2d78bb5d577bd0b0b05617ce42c7d2e0b0dbc9", + "check_gpg": true + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libXrender-0.9.10-11.fc32.x86_64.rpm", + "checksum": "sha256:656bbeddecee15f2b638da3c5cdfbcf0ec7bff14ea1eb8179b30b6b389ffa4db", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libacl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.2", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libarchive-3.4.2-1.fc32.x86_64.rpm", + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libargon2-20171227-4.fc32.x86_64.rpm", + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libassuan-2.5.3-3.fc32.x86_64.rpm", + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libattr-2.4.48-8.fc32.x86_64.rpm", + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-44.fc32.x86_64.rpm", + "checksum": "sha256:26cca773f1f258105f0f825a8e0faebcaa183655b5d91cd972afbe791b586478", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libblkid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "name": "libbrotli", + "epoch": 0, + "version": "1.0.7", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbrotli-1.0.7-10.fc32.x86_64.rpm", + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-2.26-7.fc32.x86_64.rpm", + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-ng-0.7.10-2.fc32.x86_64.rpm", + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "name": "libcbor", + "epoch": 0, + "version": "0.5.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcbor-0.5.0-7.fc32.x86_64.rpm", + "checksum": "sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5", + "check_gpg": true + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcollection-0.7.0-44.fc32.x86_64.rpm", + "checksum": "sha256:9d4691918d7add910e8c03d61cccda0316b62d77b30ac2e502cf2e55289d1823", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcom_err-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcroco-0.6.13-3.fc32.x86_64.rpm", + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcurl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdhash-0.5.0-44.fc32.x86_64.rpm", + "checksum": "sha256:ca540fb7088948fdfe6e6b52a5e2b6a74d2d17136857da9f3f4a1ee29c8eb74b", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "name": "libdrm", + "epoch": 0, + "version": "2.4.100", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdrm-2.4.100-2.fc32.x86_64.rpm", + "checksum": "sha256:f49739e27706d71a5dc75a5bfdf6c31fc67f6cb0cc1f38afe4eafb6e6ae1e4e9", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "32.20191231cvs.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libedit-3.1-32.20191231cvs.fc32.x86_64.rpm", + "checksum": "sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libevent-2.1.8-8.fc32.x86_64.rpm", + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfdisk-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libffi-3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "name": "libfido2", + "epoch": 0, + "version": "1.3.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfido2-1.3.1-1.fc32.x86_64.rpm", + "checksum": "sha256:ebbace15f986288bba7681f44a111b14bcc7cae00b7a1faadaa838bd51897357", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcc-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-3.fc32.x86_64.rpm", + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgomp-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgpg-error-1.36-3.fc32.x86_64.rpm", + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libidn2-2.3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libini_config-1.3.1-44.fc32.x86_64.rpm", + "checksum": "sha256:fed6244fce0c0b48933d622dfbb00cf73931b2f746b27675a025a33b591d9820", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libksba-1.3.5-11.fc32.x86_64.rpm", + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.1.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libldb-2.1.1-1.fc32.x86_64.rpm", + "checksum": "sha256:cd16f6ef433d7dc6860b19f3d77b666a03d35361aba78ee09d772575c2f69cc0", + "check_gpg": true + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.3.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmaxminddb-1.3.2-2.fc32.x86_64.rpm", + "checksum": "sha256:60589342d58922ba061ac8df7d753a7e7e75162c97ab086739e9d33fbf289091", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-10.fc32.x86_64.rpm", + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmnl-1.0.4-11.fc32.x86_64.rpm", + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmodulemd-2.9.1-1.fc32.x86_64.rpm", + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmount-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libndp-1.7-5.fc32.x86_64.rpm", + "checksum": "sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.x86_64.rpm", + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "17.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.x86_64.rpm", + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.4.3", + "release": "0.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfsidmap-2.4.3-0.fc32.x86_64.rpm", + "checksum": "sha256:bb154a90c968150172036d86f0c9fc2a24b5799718bc4d835cb10d0758890c67", + "check_gpg": true + }, + { + "name": "libnftnl", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnftnl-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:3afab9512fd4d56a13c95b530c805ac8b2bc872572ec5bb435eccdd59fbbc8b6", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.40.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnghttp2-1.40.0-2.fc32.x86_64.rpm", + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnl3-3.5.0-2.fc32.x86_64.rpm", + "checksum": "sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "6.20180605git4a062cf.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64.rpm", + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-44.fc32.x86_64.rpm", + "checksum": "sha256:ce1a80b0ba6f09a7e5a188436088dd31d10c5f7b43dbe9c1788f705127c8e6b2", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpcap-1.9.1-3.fc32.x86_64.rpm", + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "name": "libpciaccess", + "epoch": 0, + "version": "0.16", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpciaccess-0.16-2.fc32.x86_64.rpm", + "checksum": "sha256:4630ea4b3e4c439f2d3bc4cf33e71388e65cd5394338c86fa1074c6f7fa0d801", + "check_gpg": true + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpipeline-1.5.2-2.fc32.x86_64.rpm", + "checksum": "sha256:c0a0c6f3e30c20815496be8de00f9596737e2693feb85f7484f200ffa9174530", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpsl-0.21.0-4.fc32.x86_64.rpm", + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpwquality-1.4.2-2.fc32.x86_64.rpm", + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libref_array-0.1.5-44.fc32.x86_64.rpm", + "checksum": "sha256:6fc1181ed798617668f195579acfcf8fb212513a776f376eecfb3d086c66b2d9", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.11.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/librepo-1.11.1-4.fc32.x86_64.rpm", + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.12.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm", + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libseccomp-2.4.2-3.fc32.x86_64.rpm", + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.20.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsecret-0.20.2-2.fc32.x86_64.rpm", + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-utils-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsemanage-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsepol-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsigsegv-2.11-10.fc32.x86_64.rpm", + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsmartcols-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsolv-0.7.11-2.fc32.x86_64.rpm", + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libss-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-0.9.3-2.fc32.x86_64.rpm", + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm", + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_autofs-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:695ef8ae55ed6a165a3633b3c0d75b320879246386e6df4539be9286f5176cc5", + "check_gpg": true + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_certmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:f391fe0e21e51e7c864f8bce1b5825419f4096023b5b90b3976bbd69d6a4d720", + "check_gpg": true + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:599549d72d26b48c45156585a5698898c853e56469142e202d3749b781428465", + "check_gpg": true + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:66bb5b2e99d2c74b82943fe61fe9b9a3674350b0242f69a6854ec9718dcf5e07", + "check_gpg": true + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:af66820023c984d8b981ecac715d0c2daec1f89dcb69bed76ddf58b0ee80c1b1", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtalloc-2.3.1-2.fc32.x86_64.rpm", + "checksum": "sha256:16702883a79532a400d7304146cdb47b0599983b9fb48ab918ef9fa1ce0be394", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.16.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtasn1-4.16.0-1.fc32.x86_64.rpm", + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtdb-1.4.3-2.fc32.x86_64.rpm", + "checksum": "sha256:36778f8a4fa111c4f796bbea8fd52f7b9708de8f4351070faa30bc985db59885", + "check_gpg": true + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtevent-0.10.2-2.fc32.x86_64.rpm", + "checksum": "sha256:dab54013f8316b766c40c71f9c0c2124c1f0c219b417d588b5ba1dccf7d63fd7", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.2.5", + "release": "1.rc2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.x86_64.rpm", + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libunistring-0.9.10-7.fc32.x86_64.rpm", + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libusbx-1.0.23-1.fc32.x86_64.rpm", + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuser-0.62-24.fc32.x86_64.rpm", + "checksum": "sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "18.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libutempter-1.1.6-18.fc32.x86_64.rpm", + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuuid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libverto-0.3.0-9.fc32.x86_64.rpm", + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcb-1.13.1-4.fc32.x86_64.rpm", + "checksum": "sha256:a067d65415265d19aa2d0adcbd9234029eda8245a8c58262b3ced83edc6ddf38", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.10.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.x86_64.rpm", + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.10", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxml2-2.9.10-3.fc32.x86_64.rpm", + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libyaml-0.2.2-3.fc32.x86_64.rpm", + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libzstd-1.4.4-2.fc32.x86_64.rpm", + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "name": "linux-atm-libs", + "epoch": 0, + "version": "2.5.1", + "release": "26.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-26.fc32.x86_64.rpm", + "checksum": "sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467", + "check_gpg": true + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20200316", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-20200316-106.fc32.noarch.rpm", + "checksum": "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4", + "check_gpg": true + }, + { + "name": "linux-firmware-whence", + "epoch": 0, + "version": "20200316", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-whence-20200316-106.fc32.noarch.rpm", + "checksum": "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9", + "check_gpg": true + }, + { + "name": "lmdb-libs", + "epoch": 0, + "version": "0.9.24", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.24-1.fc32.x86_64.rpm", + "checksum": "sha256:25ae9056f75df4efff0d17d916e7c3889c421368613acec7f1c4119bd17eac13", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-7.fc32.x86_64.rpm", + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-2.fc32.x86_64.rpm", + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.9.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/man-db-2.9.0-2.fc32.x86_64.rpm", + "checksum": "sha256:ca80c458fab5bdde0276702f06217d1219085428560af6039aa1c5cf1e58ff3b", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mkpasswd-5.5.6-1.fc32.x86_64.rpm", + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "4.0.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mpfr-4.0.2-3.fc32.x86_64.rpm", + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm", + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.56.20160912git.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/net-tools-2.0-0.56.20160912git.fc32.x86_64.rpm", + "checksum": "sha256:924367aa63693da4660dcb806fbf52b3bcb7c4d12b40c4b4ba6329079936d073", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nettle-3.5.1-5.fc32.x86_64.rpm", + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "name": "nftables", + "epoch": 1, + "version": "0.9.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nftables-0.9.3-2.fc32.x86_64.rpm", + "checksum": "sha256:0b7d24759aac33303ff4b101c111dea03ff2529efc95661140e22f629cc1ab7a", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/npth-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openldap-2.4.47-4.fc32.x86_64.rpm", + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-8.2p1-2.fc32.x86_64.rpm", + "checksum": "sha256:0d51c1319ee78978e6ea5a49b815c2078b4ffd4d575e98c70e54ca01c3390eb8", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-clients-8.2p1-2.fc32.x86_64.rpm", + "checksum": "sha256:8b148415fb6a583ef131d0ddff44f3209c30d0299fde7b20cd3ea385590927c1", + "check_gpg": true + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-server-8.2p1-2.fc32.x86_64.rpm", + "checksum": "sha256:d1e244b8b5ce7404846e97d96c762c8c18ff6447301f6fc63f50e615029aa7cd", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.x86_64.rpm", + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/os-prober-1.77-4.fc32.x86_64.rpm", + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pam-1.3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "name": "parted", + "epoch": 0, + "version": "3.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/parted-3.3-3.fc32.x86_64.rpm", + "checksum": "sha256:4b9da0cedada16eb80a2d66b86aa62c9b026501e13a3e947a5a03a06f41d9dbb", + "check_gpg": true + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/passwd-0.80-8.fc32.x86_64.rpm", + "checksum": "sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.44", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre-8.44-1.fc32.x86_64.rpm", + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-10.34-9.fc32.x86_64.rpm", + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "name": "pcre2-syntax", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm", + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pigz-2.4-6.fc32.x86_64.rpm", + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pinentry-1.1.0-7.fc32.x86_64.rpm", + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "name": "pixman", + "epoch": 0, + "version": "0.38.4", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pixman-0.38.4-2.fc32.x86_64.rpm", + "checksum": "sha256:50ee0171a6f55c7e436c6444edb7b801b58de3c9f3f890b3d66d8a74a249c651", + "check_gpg": true + }, + { + "name": "plymouth", + "epoch": 0, + "version": "0.9.4", + "release": "14.20200325gite31c81f.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/plymouth-0.9.4-14.20200325gite31c81f.fc32.x86_64.rpm", + "checksum": "sha256:5cd4b781742b64dfff3cb3840ed5bb76f6946fb63f4ab742a51c3505747271a1", + "check_gpg": true + }, + { + "name": "plymouth-core-libs", + "epoch": 0, + "version": "0.9.4", + "release": "14.20200325gite31c81f.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/plymouth-core-libs-0.9.4-14.20200325gite31c81f.fc32.x86_64.rpm", + "checksum": "sha256:dc5a84049a6fc1f7c2a709ab3c2fa53de65e864f26085f5ca69864f5c2f6955d", + "check_gpg": true + }, + { + "name": "plymouth-scripts", + "epoch": 0, + "version": "0.9.4", + "release": "14.20200325gite31c81f.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/plymouth-scripts-0.9.4-14.20200325gite31c81f.fc32.x86_64.rpm", + "checksum": "sha256:d36f08a44d6a3bc95f995c858ecb5e0d7fb22a8236008267024dd6a0ff66cc85", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.116", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-libs-0.116-7.fc32.x86_64.rpm", + "checksum": "sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/popt-1.16-19.fc32.x86_64.rpm", + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-7.fc32.x86_64.rpm", + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "name": "psmisc", + "epoch": 0, + "version": "23.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/psmisc-23.3-3.fc32.x86_64.rpm", + "checksum": "sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm", + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "name": "python3-attrs", + "epoch": 0, + "version": "19.3.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-attrs-19.3.0-2.fc32.noarch.rpm", + "checksum": "sha256:bcb07748c8688c788ec69c3a33c0abd1bb3a496b9aa09b5729265670bc7ba0eb", + "check_gpg": true + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:b1111e77a5fdbacaa04acc90d3844706158bc5892173862928705620b8910adb", + "check_gpg": true + }, + { + "name": "python3-babel", + "epoch": 0, + "version": "2.8.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-babel-2.8.0-2.fc32.noarch.rpm", + "checksum": "sha256:5719dd2fb399cadec08b4ac41c794239d2a2de2f012faeb970ab90a07bba0084", + "check_gpg": true + }, + { + "name": "python3-cffi", + "epoch": 0, + "version": "1.14.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-cffi-1.14.0-1.fc32.x86_64.rpm", + "checksum": "sha256:7124f9fedc862e3bab80f05b804b6c9580603ce3155727e888646d4d4f5ddc50", + "check_gpg": true + }, + { + "name": "python3-chardet", + "epoch": 0, + "version": "3.0.4", + "release": "15.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-chardet-3.0.4-15.fc32.noarch.rpm", + "checksum": "sha256:e7b9fd73c260cd22d3a36823530d4f623ea0e16844b900a5677c769afa76341c", + "check_gpg": true + }, + { + "name": "python3-configobj", + "epoch": 0, + "version": "5.0.6", + "release": "20.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-configobj-5.0.6-20.fc32.noarch.rpm", + "checksum": "sha256:81b6181b947d50e0a1ea681298417e552421d6714900d07a34dc25899e5c9f60", + "check_gpg": true + }, + { + "name": "python3-cryptography", + "epoch": 0, + "version": "2.8", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-cryptography-2.8-3.fc32.x86_64.rpm", + "checksum": "sha256:bb8942d19e594c0f4ca181bd58796bd5d3cb681c3f17cd2ec2654c3afe28e39a", + "check_gpg": true + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.8.0", + "release": "8.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-8.fc32.noarch.rpm", + "checksum": "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862", + "check_gpg": true + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dbus-1.2.16-1.fc32.x86_64.rpm", + "checksum": "sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070", + "check_gpg": true + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.4.0", + "release": "6.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-decorator-4.4.0-6.fc32.noarch.rpm", + "checksum": "sha256:129adf9147d5d120546ca8e0fb5f165761106d386d366fe82591e372754d0b4a", + "check_gpg": true + }, + { + "name": "python3-distro", + "epoch": 0, + "version": "1.4.0", + "release": "5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-5.fc32.noarch.rpm", + "checksum": "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.14", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-plugins-core-4.0.14-1.fc32.noarch.rpm", + "checksum": "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576", + "check_gpg": true + }, + { + "name": "python3-firewall", + "epoch": 0, + "version": "0.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-firewall-0.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:8ee8c4bbf024b998ffb77a6b4194a2306ac21c5a6fcf70c8c81a0fbf38f7c7fc", + "check_gpg": true + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.36.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gobject-base-3.36.0-2.fc32.x86_64.rpm", + "checksum": "sha256:34411604a91c301dc8489285065c68f3a2f50910717097fedcaade6481c7469e", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "name": "python3-idna", + "epoch": 0, + "version": "2.8", + "release": "6.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-idna-2.8-6.fc32.noarch.rpm", + "checksum": "sha256:61c51596cc97f35177efe8dc5e2ca52d8fd528570f33c184497f419259b73c90", + "check_gpg": true + }, + { + "name": "python3-jinja2", + "epoch": 0, + "version": "2.11.1", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jinja2-2.11.1-1.fc32.noarch.rpm", + "checksum": "sha256:645f82cf62da25742cab5e8ffd1f764301b84ab19710d9f3fb3aff1cb57ffdc6", + "check_gpg": true + }, + { + "name": "python3-jsonpatch", + "epoch": 0, + "version": "1.21", + "release": "11.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jsonpatch-1.21-11.fc32.noarch.rpm", + "checksum": "sha256:4c9d77d63ddc7dda0e018fc1c97d46025794e336e58d838a631fcc130dfa3b9b", + "check_gpg": true + }, + { + "name": "python3-jsonpointer", + "epoch": 0, + "version": "1.10", + "release": "19.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jsonpointer-1.10-19.fc32.noarch.rpm", + "checksum": "sha256:6615aae3def0c49910e43e2d69f7ae8852694953dceb4b6235b5cf4099296d70", + "check_gpg": true + }, + { + "name": "python3-jsonschema", + "epoch": 0, + "version": "3.2.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jsonschema-3.2.0-2.fc32.noarch.rpm", + "checksum": "sha256:6890a9545194ad6cf1b0c58e5273132171a9ced9cb665a1442aa62b6b6d3d2ea", + "check_gpg": true + }, + { + "name": "python3-jwt", + "epoch": 0, + "version": "1.7.1", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jwt-1.7.1-7.fc32.noarch.rpm", + "checksum": "sha256:d0bc781a80be1d1fe204ec6b26255240261d55f6e24a28343572f2221a00533e", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libs-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libselinux-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124", + "check_gpg": true + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libsemanage-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:55bafcdf9c31b1456af3bf584bfe7ac745a03f4decd17197ea97b498d68b3b82", + "check_gpg": true + }, + { + "name": "python3-markupsafe", + "epoch": 0, + "version": "1.1.1", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-markupsafe-1.1.1-5.fc32.x86_64.rpm", + "checksum": "sha256:c05d01195aa4ca0f4a471574cc7ece8a0f4daf437935d845cd0745e2512cb9c9", + "check_gpg": true + }, + { + "name": "python3-nftables", + "epoch": 1, + "version": "0.9.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-nftables-0.9.3-2.fc32.x86_64.rpm", + "checksum": "sha256:0fc0193d95d69c780b6feb1cb74759ca2d4804701b3de936dac8429cfbe0f2e9", + "check_gpg": true + }, + { + "name": "python3-oauthlib", + "epoch": 0, + "version": "3.0.2", + "release": "5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-oauthlib-3.0.2-5.fc32.noarch.rpm", + "checksum": "sha256:391faab010ca30610a14e0b3d54fbc0331be39bc831086fb877f8021fe4b171f", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "name": "python3-ply", + "epoch": 0, + "version": "3.11", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-ply-3.11-7.fc32.noarch.rpm", + "checksum": "sha256:f6203a41ed91197bb770a38a101d977f0f56de86ccc5a71cee9c0e198f26bcbc", + "check_gpg": true + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-policycoreutils-3.0-2.fc32.noarch.rpm", + "checksum": "sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2", + "check_gpg": true + }, + { + "name": "python3-prettytable", + "epoch": 0, + "version": "0.7.2", + "release": "22.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-prettytable-0.7.2-22.fc32.noarch.rpm", + "checksum": "sha256:4860a733ca3f22089c6c283cbdcf53123a702d60b5bffdd4fe9d76826f91139a", + "check_gpg": true + }, + { + "name": "python3-pycparser", + "epoch": 0, + "version": "2.19", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pycparser-2.19-2.fc32.noarch.rpm", + "checksum": "sha256:a0b87b2dc3c5f536e94d6a4f3563a621dfbc067a62c3d1fe69bdb70c3cecec57", + "check_gpg": true + }, + { + "name": "python3-pyrsistent", + "epoch": 0, + "version": "0.15.7", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyrsistent-0.15.7-2.fc32.x86_64.rpm", + "checksum": "sha256:1e655f02895f6a87f9be5793065570b57e623cbf15516094df62e1f5626d4158", + "check_gpg": true + }, + { + "name": "python3-pyserial", + "epoch": 0, + "version": "3.4", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyserial-3.4-7.fc32.noarch.rpm", + "checksum": "sha256:a107b3d3790a5bcfdc28f6f4718969039b103a681a2647f3cbcb82cf92e97acb", + "check_gpg": true + }, + { + "name": "python3-pysocks", + "epoch": 0, + "version": "1.7.1", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pysocks-1.7.1-4.fc32.noarch.rpm", + "checksum": "sha256:fa791a4328b4c41b7190d862de921605f266a64abee03b2ea2e8d2b644be307f", + "check_gpg": true + }, + { + "name": "python3-pytz", + "epoch": 0, + "version": "2019.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pytz-2019.3-2.fc32.noarch.rpm", + "checksum": "sha256:c93df175a0a4989aaaeb170406d8ff13a2cd93a5fc52ad33468245fea2044a86", + "check_gpg": true + }, + { + "name": "python3-pyyaml", + "epoch": 0, + "version": "5.3.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyyaml-5.3.1-1.fc32.x86_64.rpm", + "checksum": "sha256:c13c7da4b097499576861cb12fdd02e520af69b5f23d615b3968c54f40f8fd47", + "check_gpg": true + }, + { + "name": "python3-requests", + "epoch": 0, + "version": "2.22.0", + "release": "8.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-requests-2.22.0-8.fc32.noarch.rpm", + "checksum": "sha256:d611f0c4252c4c4b893850807748e62cf4d17d72d544ef2744091df3206d8178", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.3.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setools-4.3.0-1.fc32.x86_64.rpm", + "checksum": "sha256:6f5f53b66f7c3bf6958f6f163788583265ff0360188620c3b0f7ddedeac3d1f4", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.14.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-six-1.14.0-2.fc32.noarch.rpm", + "checksum": "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f", + "check_gpg": true + }, + { + "name": "python3-slip", + "epoch": 0, + "version": "0.6.4", + "release": "19.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-slip-0.6.4-19.fc32.noarch.rpm", + "checksum": "sha256:d2abba1a0523bd9df5073900593ab13ec2ed2e391440be4d883314fa154370f8", + "check_gpg": true + }, + { + "name": "python3-slip-dbus", + "epoch": 0, + "version": "0.6.4", + "release": "19.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-slip-dbus-0.6.4-19.fc32.noarch.rpm", + "checksum": "sha256:cb0c64cc81e0b384bbc9d27ffcb2a655b13c91a799aad8972264aed1767926a3", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-unbound-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "name": "python3-urllib3", + "epoch": 0, + "version": "1.25.7", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-urllib3-1.25.7-3.fc32.noarch.rpm", + "checksum": "sha256:3882823d0eb18e0e8146584f4a32a4801961f6fdc09075607746317eba3265be", + "check_gpg": true + }, + { + "name": "qemu-guest-agent", + "epoch": 2, + "version": "4.2.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qemu-guest-agent-4.2.0-7.fc32.x86_64.rpm", + "checksum": "sha256:ee6ca269e8acf09214f2a1b1bf55b72d8177fdcfb4a70ef49a01fa0c2d998b11", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.x86_64.rpm", + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/readline-8.0-4.fc32.x86_64.rpm", + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "27.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rootfiles-8.1-27.fc32.noarch.rpm", + "checksum": "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sed-4.5-5.fc32.x86_64.rpm", + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.6", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm", + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.8.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shadow-utils-4.8.1-2.fc32.x86_64.rpm", + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.15", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shared-mime-info-1.15-3.fc32.x86_64.rpm", + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "name": "spice-vdagent", + "epoch": 0, + "version": "0.20.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/spice-vdagent-0.20.0-2.fc32.x86_64.rpm", + "checksum": "sha256:7c9e29d36ce974b96974b93a393af20499bc0bc977753cd13190065e88d3dd00", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.31.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-client-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:699c1a3ff311bbaa2380c085fb4f516aa08be474bed02bcd1569d0bbf5b22d07", + "check_gpg": true + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-common-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:265dee550073120d51e4c94d3d039e5efdee73a0ae1b1faf2b92de0dad1f58fa", + "check_gpg": true + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-kcm-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:3ee53d0dba5bbfd3bbb2ae4b54e3ebdfa122e1cf120e17ff9c4c35674269e5ad", + "check_gpg": true + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-nfs-idmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:3c3fb1ca768ecd6ae7905a09cd85b9f67e9f08c46d18779520fb4b29476865c7", + "check_gpg": true + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.9.0", + "release": "0.1.b4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sudo-1.9.0-0.1.b4.fc32.x86_64.rpm", + "checksum": "sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-libs-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-pam-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm", + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-udev-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tss2-1331-4.fc32.x86_64.rpm", + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm", + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/unbound-libs-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/util-linux-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.2.525", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/v/vim-minimal-8.2.525-1.fc32.x86_64.rpm", + "checksum": "sha256:4fca21cfdcbed052e3e9e1eff74c22fb8ffb1fbbeb63e87e2aa540e43a8c0d09", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/which-2.21-19.fc32.x86_64.rpm", + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm", + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "name": "xen-libs", + "epoch": 0, + "version": "4.13.0", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xen-libs-4.13.0-6.fc32.x86_64.rpm", + "checksum": "sha256:51b9b8d1cc4b0d7fb1fb93a653a4fb963a87598dc234c83d0821a365e0b134a4", + "check_gpg": true + }, + { + "name": "xen-licenses", + "epoch": 0, + "version": "4.13.0", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xen-licenses-4.13.0-6.fc32.x86_64.rpm", + "checksum": "sha256:d811958654f2a691781a872fb6aecc1fc50611b47217176c7742a4311ee364ba", + "check_gpg": true + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.4.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xfsprogs-5.4.0-3.fc32.x86_64.rpm", + "checksum": "sha256:e3175d0dba977f1cff702498ea68cc13134a0f525a869025e2ee3ede987d7867", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.29", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm", + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-libs-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "name": "yajl", + "epoch": 0, + "version": "2.1.0", + "release": "14.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/y/yajl-2.1.0-14.fc32.x86_64.rpm", + "checksum": "sha256:9194788f87e4a1aa8835f1305d290cc2cd67cee6a5b1ab82643d3a068c0145b6", + "check_gpg": true + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/y/yum-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "21.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zlib-1.2.11-21.fc32.x86_64.rpm", + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ], + "checksums": { + "0": "sha256:c7f7c29a8ca90e226d2efee6d5856f2dea1d64ea758dfd114d75b4b20b56de1c" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac ro biosdevname=0 net.ifnames=0" + }, + "bootloader": "grub", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "initrd": "/boot/initramfs-5.6.6-300.fc32.x86_64.img", + "linux": "/boot/vmlinuz-5.6.6-300.fc32.x86_64", + "options": "$kernelopts", + "title": "Fedora (5.6.6-300.fc32.x86_64) 32 (Thirty Two)", + "version": "5.6.6-300.fc32.x86_64" + } + ], + "firewall-enabled": [ + "ssh", + "mdns", + "dhcpv6-client" + ], + "fstab": [ + [ + "UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "/", + "ext4", + "defaults", + "1", + "1" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:993:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:997:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "redhat:x:1000:", + "render:x:996:", + "root:x:0:", + "ssh_keys:x:998:", + "sshd:x:74:", + "sys:x:3:", + "systemd-coredump:x:995:", + "systemd-journal:x:190:", + "systemd-network:x:192:", + "systemd-resolve:x:193:", + "systemd-timesync:x:994:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:999:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "qcow2", + "os-release": { + "ANSI_COLOR": "0;34", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:fedoraproject:fedora:32", + "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f32/system-administrators-guide/", + "HOME_URL": "https://fedoraproject.org/", + "ID": "fedora", + "LOGO": "fedora-logo-icon", + "NAME": "Fedora", + "PLATFORM_ID": "platform:f32", + "PRETTY_NAME": "Fedora 32 (Thirty Two)", + "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy", + "REDHAT_BUGZILLA_PRODUCT": "Fedora", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "32", + "REDHAT_SUPPORT_PRODUCT": "Fedora", + "REDHAT_SUPPORT_PRODUCT_VERSION": "32", + "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help", + "VERSION": "32 (Thirty Two)", + "VERSION_CODENAME": "", + "VERSION_ID": "32" + }, + "packages": [ + "NetworkManager-1.22.10-1.fc32.x86_64", + "NetworkManager-libnm-1.22.10-1.fc32.x86_64", + "acl-2.2.53-5.fc32.x86_64", + "alsa-lib-1.2.2-2.fc32.x86_64", + "alternatives-1.11-6.fc32.x86_64", + "audit-3.0-0.19.20191104git1c2f876.fc32.x86_64", + "audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64", + "basesystem-11-9.fc32.noarch", + "bash-5.0.11-2.fc32.x86_64", + "bzip2-libs-1.0.8-2.fc32.x86_64", + "c-ares-1.15.0-5.fc32.x86_64", + "ca-certificates-2020.2.40-3.fc32.noarch", + "checkpolicy-3.0-3.fc32.x86_64", + "chrony-3.5-8.fc32.x86_64", + "cloud-init-19.4-2.fc32.noarch", + "compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch", + "compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch", + "compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch", + "coreutils-8.32-3.fc32.1.x86_64", + "coreutils-common-8.32-3.fc32.1.x86_64", + "cpio-2.13-4.fc32.x86_64", + "cracklib-2.9.6-22.fc32.x86_64", + "cracklib-dicts-2.9.6-22.fc32.x86_64", + "crypto-policies-20191128-5.gitcd267a5.fc32.noarch", + "crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch", + "cryptsetup-libs-2.3.0-1.fc32.x86_64", + "curl-7.69.1-1.fc32.x86_64", + "cyrus-sasl-lib-2.1.27-4.fc32.x86_64", + "dbus-1.12.16-4.fc32.x86_64", + "dbus-broker-22-1.fc32.x86_64", + "dbus-common-1.12.16-4.fc32.noarch", + "dbus-libs-1.12.16-4.fc32.x86_64", + "dejavu-sans-fonts-2.37-7.fc32.noarch", + "deltarpm-3.6.2-5.fc32.x86_64", + "device-mapper-1.02.171-1.fc32.x86_64", + "device-mapper-libs-1.02.171-1.fc32.x86_64", + "dhcp-client-4.4.2-5.b1.fc32.x86_64", + "dhcp-common-4.4.2-5.b1.fc32.noarch", + "diffutils-3.7-4.fc32.x86_64", + "dnf-4.2.19-1.fc32.noarch", + "dnf-data-4.2.19-1.fc32.noarch", + "dnf-plugins-core-4.0.14-1.fc32.noarch", + "dracut-050-26.git20200316.fc32.x86_64", + "dracut-config-generic-050-26.git20200316.fc32.x86_64", + "e2fsprogs-1.45.5-3.fc32.x86_64", + "e2fsprogs-libs-1.45.5-3.fc32.x86_64", + "elfutils-debuginfod-client-0.179-1.fc32.x86_64", + "elfutils-default-yama-scope-0.179-1.fc32.noarch", + "elfutils-libelf-0.179-1.fc32.x86_64", + "elfutils-libs-0.179-1.fc32.x86_64", + "expat-2.2.8-2.fc32.x86_64", + "fedora-gpg-keys-32-1.noarch", + "fedora-release-32-1.noarch", + "fedora-release-common-32-1.noarch", + "fedora-repos-32-1.noarch", + "file-5.38-2.fc32.x86_64", + "file-libs-5.38-2.fc32.x86_64", + "filesystem-3.14-2.fc32.x86_64", + "findutils-4.7.0-3.fc32.x86_64", + "fipscheck-1.5.0-8.fc32.x86_64", + "fipscheck-lib-1.5.0-8.fc32.x86_64", + "firewalld-0.8.2-2.fc32.noarch", + "firewalld-filesystem-0.8.2-2.fc32.noarch", + "fonts-filesystem-2.0.3-1.fc32.noarch", + "fuse-libs-2.9.9-9.fc32.x86_64", + "gawk-5.0.1-7.fc32.x86_64", + "gdbm-libs-1.18.1-3.fc32.x86_64", + "geolite2-city-20191217-2.fc32.noarch", + "geolite2-country-20191217-2.fc32.noarch", + "gettext-0.20.1-4.fc32.x86_64", + "gettext-libs-0.20.1-4.fc32.x86_64", + "glib2-2.64.1-1.fc32.x86_64", + "glibc-2.31-2.fc32.x86_64", + "glibc-common-2.31-2.fc32.x86_64", + "glibc-langpack-en-2.31-2.fc32.x86_64", + "gmp-6.1.2-13.fc32.x86_64", + "gnupg2-2.2.19-1.fc32.x86_64", + "gnupg2-smime-2.2.19-1.fc32.x86_64", + "gnutls-3.6.13-1.fc32.x86_64", + "gobject-introspection-1.64.1-1.fc32.x86_64", + "gpg-pubkey-12c944d0-5d5156ab", + "gpgme-1.13.1-6.fc32.x86_64", + "grep-3.3-4.fc32.x86_64", + "groff-base-1.22.3-21.fc32.x86_64", + "grub2-common-2.04-12.fc32.noarch", + "grub2-pc-2.04-12.fc32.x86_64", + "grub2-pc-modules-2.04-12.fc32.noarch", + "grub2-tools-2.04-12.fc32.x86_64", + "grub2-tools-minimal-2.04-12.fc32.x86_64", + "grubby-8.40-40.fc32.x86_64", + "gzip-1.10-2.fc32.x86_64", + "hostname-3.23-2.fc32.x86_64", + "hwdata-0.334-1.fc32.noarch", + "ima-evm-utils-1.2.1-3.fc32.x86_64", + "initscripts-10.02-3.fc32.x86_64", + "ipcalc-0.4.0-2.fc32.x86_64", + "iproute-5.5.0-1.fc32.x86_64", + "iproute-tc-5.5.0-1.fc32.x86_64", + "ipset-7.6-1.fc32.x86_64", + "ipset-libs-7.6-1.fc32.x86_64", + "iptables-libs-1.8.4-7.fc32.x86_64", + "iptables-nft-1.8.4-7.fc32.x86_64", + "iputils-20190515-5.fc32.x86_64", + "jansson-2.12-5.fc32.x86_64", + "json-c-0.13.1-9.fc32.x86_64", + "kbd-2.2.0-1.fc32.x86_64", + "kbd-legacy-2.2.0-1.fc32.noarch", + "kbd-misc-2.2.0-1.fc32.noarch", + "kernel-5.6.6-300.fc32.x86_64", + "kernel-core-5.6.6-300.fc32.x86_64", + "kernel-modules-5.6.6-300.fc32.x86_64", + "keyutils-libs-1.6-4.fc32.x86_64", + "kmod-27-1.fc32.x86_64", + "kmod-libs-27-1.fc32.x86_64", + "kpartx-0.8.2-3.fc32.x86_64", + "krb5-libs-1.18-1.fc32.x86_64", + "langpacks-core-en-3.0-3.fc32.noarch", + "langpacks-core-font-en-3.0-3.fc32.noarch", + "langpacks-en-3.0-3.fc32.noarch", + "less-551-3.fc32.x86_64", + "libX11-1.6.9-3.fc32.x86_64", + "libX11-common-1.6.9-3.fc32.noarch", + "libXau-1.0.9-3.fc32.x86_64", + "libXext-1.3.4-3.fc32.x86_64", + "libXfixes-5.0.3-11.fc32.x86_64", + "libXinerama-1.1.4-5.fc32.x86_64", + "libXrandr-1.5.2-3.fc32.x86_64", + "libXrender-0.9.10-11.fc32.x86_64", + "libacl-2.2.53-5.fc32.x86_64", + "libarchive-3.4.2-1.fc32.x86_64", + "libargon2-20171227-4.fc32.x86_64", + "libassuan-2.5.3-3.fc32.x86_64", + "libattr-2.4.48-8.fc32.x86_64", + "libbasicobjects-0.1.1-44.fc32.x86_64", + "libblkid-2.35.1-7.fc32.x86_64", + "libbrotli-1.0.7-10.fc32.x86_64", + "libcap-2.26-7.fc32.x86_64", + "libcap-ng-0.7.10-2.fc32.x86_64", + "libcbor-0.5.0-7.fc32.x86_64", + "libcollection-0.7.0-44.fc32.x86_64", + "libcom_err-1.45.5-3.fc32.x86_64", + "libcomps-0.1.14-4.fc32.x86_64", + "libcroco-0.6.13-3.fc32.x86_64", + "libcurl-7.69.1-1.fc32.x86_64", + "libdb-5.3.28-40.fc32.x86_64", + "libdb-utils-5.3.28-40.fc32.x86_64", + "libdhash-0.5.0-44.fc32.x86_64", + "libdnf-0.45.0-3.fc32.x86_64", + "libdrm-2.4.100-2.fc32.x86_64", + "libedit-3.1-32.20191231cvs.fc32.x86_64", + "libevent-2.1.8-8.fc32.x86_64", + "libfdisk-2.35.1-7.fc32.x86_64", + "libffi-3.1-24.fc32.x86_64", + "libfido2-1.3.1-1.fc32.x86_64", + "libgcc-10.0.1-0.11.fc32.x86_64", + "libgcrypt-1.8.5-3.fc32.x86_64", + "libgomp-10.0.1-0.11.fc32.x86_64", + "libgpg-error-1.36-3.fc32.x86_64", + "libidn2-2.3.0-2.fc32.x86_64", + "libini_config-1.3.1-44.fc32.x86_64", + "libkcapi-1.1.5-2.fc32.x86_64", + "libkcapi-hmaccalc-1.1.5-2.fc32.x86_64", + "libksba-1.3.5-11.fc32.x86_64", + "libldb-2.1.1-1.fc32.x86_64", + "libmaxminddb-1.3.2-2.fc32.x86_64", + "libmetalink-0.1.3-10.fc32.x86_64", + "libmnl-1.0.4-11.fc32.x86_64", + "libmodulemd-2.9.1-1.fc32.x86_64", + "libmount-2.35.1-7.fc32.x86_64", + "libndp-1.7-5.fc32.x86_64", + "libnetfilter_conntrack-1.0.7-4.fc32.x86_64", + "libnfnetlink-1.0.1-17.fc32.x86_64", + "libnfsidmap-2.4.3-0.fc32.x86_64", + "libnftnl-1.1.5-2.fc32.x86_64", + "libnghttp2-1.40.0-2.fc32.x86_64", + "libnl3-3.5.0-2.fc32.x86_64", + "libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64", + "libpath_utils-0.2.1-44.fc32.x86_64", + "libpcap-1.9.1-3.fc32.x86_64", + "libpciaccess-0.16-2.fc32.x86_64", + "libpipeline-1.5.2-2.fc32.x86_64", + "libpsl-0.21.0-4.fc32.x86_64", + "libpwquality-1.4.2-2.fc32.x86_64", + "libref_array-0.1.5-44.fc32.x86_64", + "librepo-1.11.1-4.fc32.x86_64", + "libreport-filesystem-2.12.0-3.fc32.noarch", + "libseccomp-2.4.2-3.fc32.x86_64", + "libsecret-0.20.2-2.fc32.x86_64", + "libselinux-3.0-3.fc32.x86_64", + "libselinux-utils-3.0-3.fc32.x86_64", + "libsemanage-3.0-3.fc32.x86_64", + "libsepol-3.0-3.fc32.x86_64", + "libsigsegv-2.11-10.fc32.x86_64", + "libsmartcols-2.35.1-7.fc32.x86_64", + "libsolv-0.7.11-2.fc32.x86_64", + "libss-1.45.5-3.fc32.x86_64", + "libssh-0.9.3-2.fc32.x86_64", + "libssh-config-0.9.3-2.fc32.noarch", + "libsss_autofs-2.2.3-13.fc32.x86_64", + "libsss_certmap-2.2.3-13.fc32.x86_64", + "libsss_idmap-2.2.3-13.fc32.x86_64", + "libsss_nss_idmap-2.2.3-13.fc32.x86_64", + "libsss_sudo-2.2.3-13.fc32.x86_64", + "libstdc++-10.0.1-0.11.fc32.x86_64", + "libtalloc-2.3.1-2.fc32.x86_64", + "libtasn1-4.16.0-1.fc32.x86_64", + "libtdb-1.4.3-2.fc32.x86_64", + "libtevent-0.10.2-2.fc32.x86_64", + "libtextstyle-0.20.1-4.fc32.x86_64", + "libtirpc-1.2.5-1.rc2.fc32.x86_64", + "libunistring-0.9.10-7.fc32.x86_64", + "libusbx-1.0.23-1.fc32.x86_64", + "libuser-0.62-24.fc32.x86_64", + "libutempter-1.1.6-18.fc32.x86_64", + "libuuid-2.35.1-7.fc32.x86_64", + "libverto-0.3.0-9.fc32.x86_64", + "libxcb-1.13.1-4.fc32.x86_64", + "libxcrypt-4.4.16-1.fc32.x86_64", + "libxcrypt-compat-4.4.16-1.fc32.x86_64", + "libxkbcommon-0.10.0-2.fc32.x86_64", + "libxml2-2.9.10-3.fc32.x86_64", + "libyaml-0.2.2-3.fc32.x86_64", + "libzstd-1.4.4-2.fc32.x86_64", + "linux-atm-libs-2.5.1-26.fc32.x86_64", + "linux-firmware-20200316-106.fc32.noarch", + "linux-firmware-whence-20200316-106.fc32.noarch", + "lmdb-libs-0.9.24-1.fc32.x86_64", + "lua-libs-5.3.5-7.fc32.x86_64", + "lz4-libs-1.9.1-2.fc32.x86_64", + "man-db-2.9.0-2.fc32.x86_64", + "mkpasswd-5.5.6-1.fc32.x86_64", + "mpfr-4.0.2-3.fc32.x86_64", + "ncurses-6.1-15.20191109.fc32.x86_64", + "ncurses-base-6.1-15.20191109.fc32.noarch", + "ncurses-libs-6.1-15.20191109.fc32.x86_64", + "net-tools-2.0-0.56.20160912git.fc32.x86_64", + "nettle-3.5.1-5.fc32.x86_64", + "nftables-0.9.3-2.fc32.x86_64", + "npth-1.6-4.fc32.x86_64", + "openldap-2.4.47-4.fc32.x86_64", + "openssh-8.2p1-2.fc32.x86_64", + "openssh-clients-8.2p1-2.fc32.x86_64", + "openssh-server-8.2p1-2.fc32.x86_64", + "openssl-1.1.1d-7.fc32.x86_64", + "openssl-libs-1.1.1d-7.fc32.x86_64", + "openssl-pkcs11-0.4.10-5.fc32.x86_64", + "os-prober-1.77-4.fc32.x86_64", + "p11-kit-0.23.20-1.fc32.x86_64", + "p11-kit-trust-0.23.20-1.fc32.x86_64", + "pam-1.3.1-24.fc32.x86_64", + "parted-3.3-3.fc32.x86_64", + "passwd-0.80-8.fc32.x86_64", + "pcre-8.44-1.fc32.x86_64", + "pcre2-10.34-9.fc32.x86_64", + "pcre2-syntax-10.34-9.fc32.noarch", + "pigz-2.4-6.fc32.x86_64", + "pinentry-1.1.0-7.fc32.x86_64", + "pixman-0.38.4-2.fc32.x86_64", + "plymouth-0.9.4-14.20200325gite31c81f.fc32.x86_64", + "plymouth-core-libs-0.9.4-14.20200325gite31c81f.fc32.x86_64", + "plymouth-scripts-0.9.4-14.20200325gite31c81f.fc32.x86_64", + "policycoreutils-3.0-2.fc32.x86_64", + "polkit-libs-0.116-7.fc32.x86_64", + "popt-1.16-19.fc32.x86_64", + "procps-ng-3.3.15-7.fc32.x86_64", + "psmisc-23.3-3.fc32.x86_64", + "publicsuffix-list-dafsa-20190417-3.fc32.noarch", + "python-pip-wheel-19.3.1-2.fc32.noarch", + "python-setuptools-wheel-41.6.0-2.fc32.noarch", + "python-unversioned-command-3.8.2-2.fc32.noarch", + "python3-3.8.2-2.fc32.x86_64", + "python3-attrs-19.3.0-2.fc32.noarch", + "python3-audit-3.0-0.19.20191104git1c2f876.fc32.x86_64", + "python3-babel-2.8.0-2.fc32.noarch", + "python3-cffi-1.14.0-1.fc32.x86_64", + "python3-chardet-3.0.4-15.fc32.noarch", + "python3-configobj-5.0.6-20.fc32.noarch", + "python3-cryptography-2.8-3.fc32.x86_64", + "python3-dateutil-2.8.0-8.fc32.noarch", + "python3-dbus-1.2.16-1.fc32.x86_64", + "python3-decorator-4.4.0-6.fc32.noarch", + "python3-distro-1.4.0-5.fc32.noarch", + "python3-dnf-4.2.19-1.fc32.noarch", + "python3-dnf-plugins-core-4.0.14-1.fc32.noarch", + "python3-firewall-0.8.2-2.fc32.noarch", + "python3-gobject-base-3.36.0-2.fc32.x86_64", + "python3-gpg-1.13.1-6.fc32.x86_64", + "python3-hawkey-0.45.0-3.fc32.x86_64", + "python3-idna-2.8-6.fc32.noarch", + "python3-jinja2-2.11.1-1.fc32.noarch", + "python3-jsonpatch-1.21-11.fc32.noarch", + "python3-jsonpointer-1.10-19.fc32.noarch", + "python3-jsonschema-3.2.0-2.fc32.noarch", + "python3-jwt-1.7.1-7.fc32.noarch", + "python3-libcomps-0.1.14-4.fc32.x86_64", + "python3-libdnf-0.45.0-3.fc32.x86_64", + "python3-libs-3.8.2-2.fc32.x86_64", + "python3-libselinux-3.0-3.fc32.x86_64", + "python3-libsemanage-3.0-3.fc32.x86_64", + "python3-markupsafe-1.1.1-5.fc32.x86_64", + "python3-nftables-0.9.3-2.fc32.x86_64", + "python3-oauthlib-3.0.2-5.fc32.noarch", + "python3-pip-19.3.1-2.fc32.noarch", + "python3-ply-3.11-7.fc32.noarch", + "python3-policycoreutils-3.0-2.fc32.noarch", + "python3-prettytable-0.7.2-22.fc32.noarch", + "python3-pycparser-2.19-2.fc32.noarch", + "python3-pyrsistent-0.15.7-2.fc32.x86_64", + "python3-pyserial-3.4-7.fc32.noarch", + "python3-pysocks-1.7.1-4.fc32.noarch", + "python3-pytz-2019.3-2.fc32.noarch", + "python3-pyyaml-5.3.1-1.fc32.x86_64", + "python3-requests-2.22.0-8.fc32.noarch", + "python3-rpm-4.15.1-2.fc32.1.x86_64", + "python3-setools-4.3.0-1.fc32.x86_64", + "python3-setuptools-41.6.0-2.fc32.noarch", + "python3-six-1.14.0-2.fc32.noarch", + "python3-slip-0.6.4-19.fc32.noarch", + "python3-slip-dbus-0.6.4-19.fc32.noarch", + "python3-unbound-1.9.6-2.fc32.x86_64", + "python3-urllib3-1.25.7-3.fc32.noarch", + "qemu-guest-agent-4.2.0-7.fc32.x86_64", + "qrencode-libs-4.0.2-5.fc32.x86_64", + "readline-8.0-4.fc32.x86_64", + "rootfiles-8.1-27.fc32.noarch", + "rpm-4.15.1-2.fc32.1.x86_64", + "rpm-build-libs-4.15.1-2.fc32.1.x86_64", + "rpm-libs-4.15.1-2.fc32.1.x86_64", + "rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64", + "rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64", + "rpm-sign-libs-4.15.1-2.fc32.1.x86_64", + "sed-4.5-5.fc32.x86_64", + "selinux-policy-3.14.5-32.fc32.noarch", + "selinux-policy-targeted-3.14.5-32.fc32.noarch", + "setup-2.13.6-2.fc32.noarch", + "shadow-utils-4.8.1-2.fc32.x86_64", + "shared-mime-info-1.15-3.fc32.x86_64", + "spice-vdagent-0.20.0-2.fc32.x86_64", + "sqlite-libs-3.31.1-1.fc32.x86_64", + "sssd-client-2.2.3-13.fc32.x86_64", + "sssd-common-2.2.3-13.fc32.x86_64", + "sssd-kcm-2.2.3-13.fc32.x86_64", + "sssd-nfs-idmap-2.2.3-13.fc32.x86_64", + "sudo-1.9.0-0.1.b4.fc32.x86_64", + "systemd-245.4-1.fc32.x86_64", + "systemd-libs-245.4-1.fc32.x86_64", + "systemd-pam-245.4-1.fc32.x86_64", + "systemd-rpm-macros-245.4-1.fc32.noarch", + "systemd-udev-245.4-1.fc32.x86_64", + "trousers-0.3.13-13.fc31.x86_64", + "trousers-lib-0.3.13-13.fc31.x86_64", + "tss2-1331-4.fc32.x86_64", + "tzdata-2019c-3.fc32.noarch", + "unbound-libs-1.9.6-2.fc32.x86_64", + "util-linux-2.35.1-7.fc32.x86_64", + "vim-minimal-8.2.525-1.fc32.x86_64", + "which-2.21-19.fc32.x86_64", + "whois-nls-5.5.6-1.fc32.noarch", + "xen-libs-4.13.0-6.fc32.x86_64", + "xen-licenses-4.13.0-6.fc32.x86_64", + "xfsprogs-5.4.0-3.fc32.x86_64", + "xkeyboard-config-2.29-1.fc32.noarch", + "xz-5.2.5-1.fc32.x86_64", + "xz-libs-5.2.5-1.fc32.x86_64", + "yajl-2.1.0-14.fc32.x86_64", + "yum-4.2.19-1.fc32.noarch", + "zchunk-libs-1.1.5-2.fc32.x86_64", + "zlib-1.2.11-21.fc32.x86_64" + ], + "partition-table": "dos", + "partition-table-id": "0x14fc63d2", + "partitions": [ + { + "bootable": true, + "fstype": "ext4", + "label": null, + "partuuid": "14fc63d2-01", + "size": 2146435072, + "start": 1048576, + "type": "83", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:996:993::/var/lib/chrony:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "redhat:x:1000:1000::/home/redhat:/bin/bash", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:998:995:systemd Core Dumper:/:/sbin/nologin", + "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "systemd-timesync:x:997:994:systemd Time Synchronization:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:999:999:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/boot/System.map-5.6.6-300.fc32.x86_64": ".M.......", + "/boot/initramfs-5.6.6-300.fc32.x86_64.img": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/lib/modules/5.6.6-300.fc32.x86_64/modules.builtin.alias.bin": ".......T.", + "/proc": ".M.......", + "/sys": ".M.......", + "/var/log/btmp": ".M.......", + "/var/log/journal": ".M....G..", + "/var/log/lastlog": ".M....G.." + }, + "missing": [] + }, + "services-disabled": [ + "arp-ethers.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "console-getty.service", + "debug-shell.service", + "exit.target", + "halt.target", + "kexec.target", + "loadmodules.service", + "man-db-restart-cache-update.service", + "nftables.service", + "nis-domainname.service", + "poweroff.target", + "proc-sys-fs-binfmt_misc.mount", + "rdisc.service", + "remote-cryptsetup.target", + "runlevel0.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-boot-check-no-failures.service", + "systemd-network-generator.service", + "systemd-networkd-wait-online.service", + "systemd-networkd.service", + "systemd-networkd.socket", + "systemd-pstore.service", + "systemd-resolved.service", + "systemd-time-wait-sync.service", + "systemd-timesyncd.service", + "tcsd.service" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "cloud-init.service", + "ctrl-alt-del.target", + "dbus-broker.service", + "dbus-org.fedoraproject.FirewallD1.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dbus.service", + "dbus.socket", + "dnf-makecache.timer", + "firewalld.service", + "fstrim.timer", + "getty@.service", + "import-state.service", + "qemu-guest-agent.service", + "reboot.target", + "remote-fs.target", + "runlevel6.target", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "unbound-anchor.timer" + ] + } +} \ No newline at end of file diff --git a/test/cases/fedora_32-x86_64-qcow2-boot.json b/test/cases/fedora_32-x86_64-qcow2-boot.json new file mode 100644 index 0000000..97d3da4 --- /dev/null +++ b/test/cases/fedora_32-x86_64-qcow2-boot.json @@ -0,0 +1,9666 @@ +{ + "boot": { + "type": "qemu" + }, + "compose-request": { + "distro": "fedora-32", + "arch": "x86_64", + "image-type": "qcow2", + "repositories": [ + { + "baseurl": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ], + "filename": "disk.qcow2", + "blueprint": { + "name": "qcow2-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm" + }, + "sha256:024dd8a75eb5472692d0291292d25939b97a0295e5ab0958dcd22600d392eaae": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rsync-3.1.3-11.fc32.x86_64.rpm" + }, + "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-six-1.14.0-2.fc32.noarch.rpm" + }, + "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.x86_64.rpm" + }, + "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/geolite2-country-20191217-2.fc32.noarch.rpm" + }, + "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtasn1-4.16.0-1.fc32.x86_64.rpm" + }, + "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm" + }, + "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm" + }, + "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/findutils-4.7.0-3.fc32.x86_64.rpm" + }, + "sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-tc-5.5.0-1.fc32.x86_64.rpm" + }, + "sha256:0c8f8925dacc9a0e57b4446d5f67d9041bfc0a939191a7606ba93b74512a97d1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-cloud-32-1.noarch.rpm" + }, + "sha256:0d51c1319ee78978e6ea5a49b815c2078b4ffd4d575e98c70e54ca01c3390eb8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-8.2p1-2.fc32.x86_64.rpm" + }, + "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.x86_64.rpm" + }, + "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-3.0-3.fc32.x86_64.rpm" + }, + "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-7.fc32.x86_64.rpm" + }, + "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-2.04-12.fc32.x86_64.rpm" + }, + "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/filesystem-3.14-2.fc32.x86_64.rpm" + }, + "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cpio-2.13-4.fc32.x86_64.rpm" + }, + "sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.31-2.fc32.x86_64.rpm" + }, + "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gpgme-1.13.1-6.fc32.x86_64.rpm" + }, + "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-utils-3.0-3.fc32.x86_64.rpm" + }, + "sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/passwd-0.80-8.fc32.x86_64.rpm" + }, + "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pigz-2.4-6.fc32.x86_64.rpm" + }, + "sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-policycoreutils-3.0-2.fc32.noarch.rpm" + }, + "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-whence-20200316-106.fc32.noarch.rpm" + }, + "sha256:16702883a79532a400d7304146cdb47b0599983b9fb48ab918ef9fa1ce0be394": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtalloc-2.3.1-2.fc32.x86_64.rpm" + }, + "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gmp-6.1.2-13.fc32.x86_64.rpm" + }, + "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libblkid-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/diffutils-3.7-4.fc32.x86_64.rpm" + }, + "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.x86_64.rpm" + }, + "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libksba-1.3.5-11.fc32.x86_64.rpm" + }, + "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-2.26-7.fc32.x86_64.rpm" + }, + "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-5.2.5-1.fc32.x86_64.rpm" + }, + "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmnl-1.0.4-11.fc32.x86_64.rpm" + }, + "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-245.4-1.fc32.x86_64.rpm" + }, + "sha256:1e1e9900e9d3a2b8eb6684060672526948df2cb9f751e7d72cb4fa5bffe71747": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cloud-init-19.4-2.fc32.noarch.rpm" + }, + "sha256:1e655f02895f6a87f9be5793065570b57e623cbf15516094df62e1f5626d4158": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyrsistent-0.15.7-2.fc32.x86_64.rpm" + }, + "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-32-1.noarch.rpm" + }, + "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libidn2-2.3.0-2.fc32.x86_64.rpm" + }, + "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-broker-22-1.fc32.x86_64.rpm" + }, + "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-repos-32-1.noarch.rpm" + }, + "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm" + }, + "sha256:24520e03276e0d850169efc9d83b12a9a01eee5d7202dadca12d2e0a8b7352ba": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.31-2.fc32.x86_64.rpm" + }, + "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsecret-0.20.2-2.fc32.x86_64.rpm" + }, + "sha256:25ae9056f75df4efff0d17d916e7c3889c421368613acec7f1c4119bd17eac13": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.24-1.fc32.x86_64.rpm" + }, + "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm" + }, + "sha256:265dee550073120d51e4c94d3d039e5efdee73a0ae1b1faf2b92de0dad1f58fa": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-common-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-plugins-core-4.0.14-1.fc32.noarch.rpm" + }, + "sha256:26cca773f1f258105f0f825a8e0faebcaa183655b5d91cd972afbe791b586478": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-44.fc32.x86_64.rpm" + }, + "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libss-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:280b880de2f5c6bbd8e000c63dff495533925893ef02cc599222cdb3c7586a22": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mtools-4.0.24-1.fc32.x86_64.rpm" + }, + "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-5.38-2.fc32.x86_64.rpm" + }, + "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/unbound-libs-1.9.6-2.fc32.x86_64.rpm" + }, + "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsepol-3.0-3.fc32.x86_64.rpm" + }, + "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mpfr-4.0.2-3.fc32.x86_64.rpm" + }, + "sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/less-551-3.fc32.x86_64.rpm" + }, + "sha256:2bcf87d3ecdecab92bc2aacf2f1ec50aced0ed2958001cd8b297c80612edeb60": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/console-login-helper-messages-issuegen-0.17-2.fc32.noarch.rpm" + }, + "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tar-1.32-4.fc32.x86_64.rpm" + }, + "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm" + }, + "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-0.9.3-2.fc32.x86_64.rpm" + }, + "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-udev-245.4-1.fc32.x86_64.rpm" + }, + "sha256:342bdf0143d9145f8846e1b5c3401685e0d1274b66df39ac8cbfb78013313861": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-1.22.10-1.fc32.x86_64.rpm" + }, + "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-0.20.1-4.fc32.x86_64.rpm" + }, + "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.x86_64.rpm" + }, + "sha256:36778f8a4fa111c4f796bbea8fd52f7b9708de8f4351070faa30bc985db59885": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtdb-1.4.3-2.fc32.x86_64.rpm" + }, + "sha256:3882823d0eb18e0e8146584f4a32a4801961f6fdc09075607746317eba3265be": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-urllib3-1.25.7-3.fc32.noarch.rpm" + }, + "sha256:391faab010ca30610a14e0b3d54fbc0331be39bc831086fb877f8021fe4b171f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-oauthlib-3.0.2-5.fc32.noarch.rpm" + }, + "sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/chrony-3.5-8.fc32.x86_64.rpm" + }, + "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64.rpm" + }, + "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm" + }, + "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/npth-1.6-4.fc32.x86_64.rpm" + }, + "sha256:3c3fb1ca768ecd6ae7905a09cd85b9f67e9f08c46d18779520fb4b29476865c7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-nfs-idmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm" + }, + "sha256:3ee53d0dba5bbfd3bbb2ae4b54e3ebdfa122e1cf120e17ff9c4c35674269e5ad": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-kcm-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.x86_64.rpm" + }, + "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm" + }, + "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-27-1.fc32.x86_64.rpm" + }, + "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-40.fc32.x86_64.rpm" + }, + "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcom_err-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-2.fc32.x86_64.rpm" + }, + "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.x86_64.rpm" + }, + "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/os-prober-1.77-4.fc32.x86_64.rpm" + }, + "sha256:46407b730b272223b8b64d12df0725af571b4a5c5ab89b9f41e12a49e07c6e6b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/c-ares-1.15.0-5.fc32.x86_64.rpm" + }, + "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-4.fc32.x86_64.rpm" + }, + "sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qemu-img-4.2.0-7.fc32.x86_64.rpm" + }, + "sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-config-generic-050-26.git20200316.fc32.x86_64.rpm" + }, + "sha256:4860a733ca3f22089c6c283cbdcf53123a702d60b5bffdd4fe9d76826f91139a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-prettytable-0.7.2-22.fc32.noarch.rpm" + }, + "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dhcp-common-4.4.2-5.b1.fc32.noarch.rpm" + }, + "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcc-10.0.1-0.11.fc32.x86_64.rpm" + }, + "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm" + }, + "sha256:4b9da0cedada16eb80a2d66b86aa62c9b026501e13a3e947a5a03a06f41d9dbb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/parted-3.3-3.fc32.x86_64.rpm" + }, + "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pam-1.3.1-24.fc32.x86_64.rpm" + }, + "sha256:4c9d77d63ddc7dda0e018fc1c97d46025794e336e58d838a631fcc130dfa3b9b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jsonpatch-1.21-11.fc32.noarch.rpm" + }, + "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shadow-utils-4.8.1-2.fc32.x86_64.rpm" + }, + "sha256:4e066ace8364aba9311fa74f4a87c21f98091bc1af5a6a4daa06441469234041": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/syslinux-extlinux-nonlinux-6.04-0.13.fc32.noarch.rpm" + }, + "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.x86_64.rpm" + }, + "sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libndp-1.7-5.fc32.x86_64.rpm" + }, + "sha256:4fca21cfdcbed052e3e9e1eff74c22fb8ffb1fbbeb63e87e2aa540e43a8c0d09": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/v/vim-minimal-8.2.525-1.fc32.x86_64.rpm" + }, + "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-unbound-1.9.6-2.fc32.x86_64.rpm" + }, + "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-common-8.32-3.fc32.1.x86_64.rpm" + }, + "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-9.fc32.x86_64.rpm" + }, + "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gzip-1.10-2.fc32.x86_64.rpm" + }, + "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsemanage-3.0-3.fc32.x86_64.rpm" + }, + "sha256:55bafcdf9c31b1456af3bf584bfe7ac745a03f4decd17197ea97b498d68b3b82": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libsemanage-3.0-3.fc32.x86_64.rpm" + }, + "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-libs-27-1.fc32.x86_64.rpm" + }, + "sha256:5719dd2fb399cadec08b4ac41c794239d2a2de2f012faeb970ab90a07bba0084": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-babel-2.8.0-2.fc32.noarch.rpm" + }, + "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-plugins-core-4.0.14-1.fc32.noarch.rpm" + }, + "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libassuan-2.5.3-3.fc32.x86_64.rpm" + }, + "sha256:599549d72d26b48c45156585a5698898c853e56469142e202d3749b781428465": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-20200316-106.fc32.noarch.rpm" + }, + "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm" + }, + "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-3.fc32.x86_64.rpm" + }, + "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:60589342d58922ba061ac8df7d753a7e7e75162c97ab086739e9d33fbf289091": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmaxminddb-1.3.2-2.fc32.x86_64.rpm" + }, + "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm" + }, + "sha256:61c51596cc97f35177efe8dc5e2ca52d8fd528570f33c184497f419259b73c90": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-idna-2.8-6.fc32.noarch.rpm" + }, + "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.x86_64.rpm" + }, + "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcroco-0.6.13-3.fc32.x86_64.rpm" + }, + "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mkpasswd-5.5.6-1.fc32.x86_64.rpm" + }, + "sha256:645f82cf62da25742cab5e8ffd1f764301b84ab19710d9f3fb3aff1cb57ffdc6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jinja2-2.11.1-1.fc32.noarch.rpm" + }, + "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libattr-2.4.48-8.fc32.x86_64.rpm" + }, + "sha256:6615aae3def0c49910e43e2d69f7ae8852694953dceb4b6235b5cf4099296d70": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jsonpointer-1.10-19.fc32.noarch.rpm" + }, + "sha256:66bb5b2e99d2c74b82943fe61fe9b9a3674350b0242f69a6854ec9718dcf5e07": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-10.34-9.fc32.x86_64.rpm" + }, + "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm" + }, + "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-5.3.28-40.fc32.x86_64.rpm" + }, + "sha256:6890a9545194ad6cf1b0c58e5273132171a9ced9cb665a1442aa62b6b6d3d2ea": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jsonschema-3.2.0-2.fc32.noarch.rpm" + }, + "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-font-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:695ef8ae55ed6a165a3633b3c0d75b320879246386e6df4539be9286f5176cc5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_autofs-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:699c1a3ff311bbaa2380c085fb4f516aa08be474bed02bcd1569d0bbf5b22d07": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-client-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.x86_64.rpm" + }, + "sha256:6a3282927f525629bc0aaf4090e108d33b0709d3d5b35bc442000c2837e7b9b4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iputils-20190515-5.fc32.x86_64.rpm" + }, + "sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dbus-1.2.16-1.fc32.x86_64.rpm" + }, + "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-10.fc32.x86_64.rpm" + }, + "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/curl-7.69.1-1.fc32.x86_64.rpm" + }, + "sha256:6f5f53b66f7c3bf6958f6f163788583265ff0360188620c3b0f7ddedeac3d1f4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setools-4.3.0-1.fc32.x86_64.rpm" + }, + "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tss2-1331-4.fc32.x86_64.rpm" + }, + "sha256:6fc1181ed798617668f195579acfcf8fb212513a776f376eecfb3d086c66b2d9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libref_array-0.1.5-44.fc32.x86_64.rpm" + }, + "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm" + }, + "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glib2-2.64.1-1.fc32.x86_64.rpm" + }, + "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-8.32-3.fc32.1.x86_64.rpm" + }, + "sha256:703fb5ca1651bb72d8ab58576ce3d78c9479cbb2e78ff8666ae3a3d1cd9bb0da": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/checkpolicy-3.0-3.fc32.x86_64.rpm" + }, + "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/acl-2.2.53-5.fc32.x86_64.rpm" + }, + "sha256:7124f9fedc862e3bab80f05b804b6c9580603ce3155727e888646d4d4f5ddc50": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-cffi-1.14.0-1.fc32.x86_64.rpm" + }, + "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm" + }, + "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libusbx-1.0.23-1.fc32.x86_64.rpm" + }, + "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm" + }, + "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-pam-245.4-1.fc32.x86_64.rpm" + }, + "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grep-3.3-4.fc32.x86_64.rpm" + }, + "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-libs-245.4-1.fc32.x86_64.rpm" + }, + "sha256:78de81d45789ae9bccf6dd82f2b2835ac868f1a584e05d0e9f89f40bb4a202c7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/syslinux-extlinux-6.04-0.13.fc32.x86_64.rpm" + }, + "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bash-5.0.11-2.fc32.x86_64.rpm" + }, + "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libevent-2.1.8-8.fc32.x86_64.rpm" + }, + "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-4.4.16-1.fc32.x86_64.rpm" + }, + "sha256:7c7eff31251dedcc3285a8b08c1b18f7fd9ee2e07dff86ad090f45a81e19e85e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-pkla-compat-0.1-16.fc32.x86_64.rpm" + }, + "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libargon2-20171227-4.fc32.x86_64.rpm" + }, + "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm" + }, + "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pinentry-1.1.0-7.fc32.x86_64.rpm" + }, + "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcurl-7.69.1-1.fc32.x86_64.rpm" + }, + "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.x86_64.rpm" + }, + "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-2.04-12.fc32.x86_64.rpm" + }, + "sha256:808e7209893298d11ac27f148c1b3d1a2b28e303e7930b43659a08dc0f660ac4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/groff-base-1.22.3-21.fc32.x86_64.rpm" + }, + "sha256:80cf220a3314f965c088e03d2b750426767db0b36b6b7c5e8059b9217ff4de6d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mozjs60-60.9.0-5.fc32.x86_64.rpm" + }, + "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:81b6181b947d50e0a1ea681298417e552421d6714900d07a34dc25899e5c9f60": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-configobj-5.0.6-20.fc32.noarch.rpm" + }, + "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/geolite2-city-20191217-2.fc32.noarch.rpm" + }, + "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/which-2.21-19.fc32.x86_64.rpm" + }, + "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuuid-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.x86_64.rpm" + }, + "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-libs-5.2.5-1.fc32.x86_64.rpm" + }, + "sha256:85be4f8732fed73e473ea61635b582ecd0e46709a7c2c3c1a8f25d0709041780": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/console-login-helper-messages-motdgen-0.17-2.fc32.noarch.rpm" + }, + "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-2.9.6-22.fc32.x86_64.rpm" + }, + "sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-5.5.0-1.fc32.x86_64.rpm" + }, + "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libffi-3.1-24.fc32.x86_64.rpm" + }, + "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fonts-filesystem-2.0.3-1.fc32.noarch.rpm" + }, + "sha256:87f6173e57d5d24c601047f747dfcf90dedc1d05250bfc6f06567d8ca35f895b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/console-login-helper-messages-profile-0.17-2.fc32.noarch.rpm" + }, + "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.x86_64.rpm" + }, + "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libarchive-3.4.2-1.fc32.x86_64.rpm" + }, + "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/popt-1.16-19.fc32.x86_64.rpm" + }, + "sha256:8b148415fb6a583ef131d0ddff44f3209c30d0299fde7b20cd3ea385590927c1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-clients-8.2p1-2.fc32.x86_64.rpm" + }, + "sha256:8c047278ce11e7ba7169a9c9537c3c6544f52c7eee8754179acd839ed59c028f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dhcp-client-4.4.2-5.b1.fc32.x86_64.rpm" + }, + "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-3.0-2.fc32.x86_64.rpm" + }, + "sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnl3-3.5.0-2.fc32.x86_64.rpm" + }, + "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/expat-2.2.8-2.fc32.x86_64.rpm" + }, + "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:907393755387a351806ec2afff376e7491f177116caadd12f07d0fcbed796750": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-8.fc32.x86_64.rpm" + }, + "sha256:924367aa63693da4660dcb806fbf52b3bcb7c4d12b40c4b4ba6329079936d073": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/net-tools-2.0-0.56.20160912git.fc32.x86_64.rpm" + }, + "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm" + }, + "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre-8.44-1.fc32.x86_64.rpm" + }, + "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-5.fc32.noarch.rpm" + }, + "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsigsegv-2.11-10.fc32.x86_64.rpm" + }, + "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfdisk-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libzstd-1.4.4-2.fc32.x86_64.rpm" + }, + "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.x86_64.rpm" + }, + "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm" + }, + "sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/jansson-2.12-5.fc32.x86_64.rpm" + }, + "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.x86_64.rpm" + }, + "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-050-26.git20200316.fc32.x86_64.rpm" + }, + "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/util-linux-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libs-0.179-1.fc32.x86_64.rpm" + }, + "sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libedit-3.1-32.20191231cvs.fc32.x86_64.rpm" + }, + "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm" + }, + "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgpg-error-1.36-3.fc32.x86_64.rpm" + }, + "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libyaml-0.2.2-3.fc32.x86_64.rpm" + }, + "sha256:9d4691918d7add910e8c03d61cccda0316b62d77b30ac2e502cf2e55289d1823": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcollection-0.7.0-44.fc32.x86_64.rpm" + }, + "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnutls-3.6.13-1.fc32.x86_64.rpm" + }, + "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-6.fc32.x86_64.rpm" + }, + "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpwquality-1.4.2-2.fc32.x86_64.rpm" + }, + "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-2.2.0-1.fc32.x86_64.rpm" + }, + "sha256:a0b87b2dc3c5f536e94d6a4f3563a621dfbc067a62c3d1fe69bdb70c3cecec57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pycparser-2.19-2.fc32.noarch.rpm" + }, + "sha256:a107b3d3790a5bcfdc28f6f4718969039b103a681a2647f3cbcb82cf92e97acb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyserial-3.4-7.fc32.noarch.rpm" + }, + "sha256:a1613e90865db93fb578b8ee1a4ee40bd396c6c9f2fb2a14757acacecb9f23e8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-core-5.6.6-300.fc32.x86_64.rpm" + }, + "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-common-32-1.noarch.rpm" + }, + "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shared-mime-info-1.15-3.fc32.x86_64.rpm" + }, + "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm" + }, + "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm" + }, + "sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libaio-0.3.111-7.fc32.x86_64.rpm" + }, + "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm" + }, + "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxml2-2.9.10-3.fc32.x86_64.rpm" + }, + "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnghttp2-1.40.0-2.fc32.x86_64.rpm" + }, + "sha256:a9420698e38d93b375f3f97ef5b196f61d006862f80642d69cc3c3fd694589fc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/console-login-helper-messages-0.17-2.fc32.noarch.rpm" + }, + "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/librepo-1.11.1-4.fc32.x86_64.rpm" + }, + "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbrotli-1.0.7-10.fc32.x86_64.rpm" + }, + "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.x86_64.rpm" + }, + "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openldap-2.4.47-4.fc32.x86_64.rpm" + }, + "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.x86_64.rpm" + }, + "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm" + }, + "sha256:af66820023c984d8b981ecac715d0c2daec1f89dcb69bed76ddf58b0ee80c1b1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm" + }, + "sha256:b1111e77a5fdbacaa04acc90d3844706158bc5892173862928705620b8910adb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm" + }, + "sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcbor-0.5.0-7.fc32.x86_64.rpm" + }, + "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/y/yum-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-6.1-15.20191109.fc32.x86_64.rpm" + }, + "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpcap-1.9.1-3.fc32.x86_64.rpm" + }, + "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-4.fc32.x86_64.rpm" + }, + "sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuser-0.62-24.fc32.x86_64.rpm" + }, + "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-ng-0.7.10-2.fc32.x86_64.rpm" + }, + "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-5.fc32.x86_64.rpm" + }, + "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-3.8.2-2.fc32.x86_64.rpm" + }, + "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm" + }, + "sha256:bb154a90c968150172036d86f0c9fc2a24b5799718bc4d835cb10d0758890c67": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfsidmap-2.4.3-0.fc32.x86_64.rpm" + }, + "sha256:bb8942d19e594c0f4ca181bd58796bd5d3cb681c3f17cd2ec2654c3afe28e39a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-cryptography-2.8-3.fc32.x86_64.rpm" + }, + "sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/initscripts-10.02-3.fc32.x86_64.rpm" + }, + "sha256:bcb07748c8688c788ec69c3a33c0abd1bb3a496b9aa09b5729265670bc7ba0eb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-attrs-19.3.0-2.fc32.noarch.rpm" + }, + "sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/psmisc-23.3-3.fc32.x86_64.rpm" + }, + "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsolv-0.7.11-2.fc32.x86_64.rpm" + }, + "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.x86_64.rpm" + }, + "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nettle-3.5.1-5.fc32.x86_64.rpm" + }, + "sha256:c05d01195aa4ca0f4a471574cc7ece8a0f4daf437935d845cd0745e2512cb9c9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-markupsafe-1.1.1-5.fc32.x86_64.rpm" + }, + "sha256:c0a0c6f3e30c20815496be8de00f9596737e2693feb85f7484f200ffa9174530": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpipeline-1.5.2-2.fc32.x86_64.rpm" + }, + "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zlib-1.2.11-21.fc32.x86_64.rpm" + }, + "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-1.02.171-1.fc32.x86_64.rpm" + }, + "sha256:c13c7da4b097499576861cb12fdd02e520af69b5f23d615b3968c54f40f8fd47": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyyaml-5.3.1-1.fc32.x86_64.rpm" + }, + "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.x86_64.rpm" + }, + "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.x86_64.rpm" + }, + "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.04-12.fc32.noarch.rpm" + }, + "sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dosfstools-4.1-10.fc32.x86_64.rpm" + }, + "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/alternatives-1.11-6.fc32.x86_64.rpm" + }, + "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:c93df175a0a4989aaaeb170406d8ff13a2cd93a5fc52ad33468245fea2044a86": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pytz-2019.3-2.fc32.noarch.rpm" + }, + "sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-26.fc32.x86_64.rpm" + }, + "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rootfiles-8.1-27.fc32.noarch.rpm" + }, + "sha256:ca540fb7088948fdfe6e6b52a5e2b6a74d2d17136857da9f3f4a1ee29c8eb74b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdhash-0.5.0-44.fc32.x86_64.rpm" + }, + "sha256:ca80c458fab5bdde0276702f06217d1219085428560af6039aa1c5cf1e58ff3b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/man-db-2.9.0-2.fc32.x86_64.rpm" + }, + "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.16-1.fc32.x86_64.rpm" + }, + "sha256:cbdc61d713e4cbe52b2bece117912da0f1e3782cb3b33caa068e96c854c990be": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grubby-8.40-40.fc32.x86_64.rpm" + }, + "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-2.2.19-1.fc32.x86_64.rpm" + }, + "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-4.fc32.x86_64.rpm" + }, + "sha256:cd16f6ef433d7dc6860b19f3d77b666a03d35361aba78ee09d772575c2f69cc0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libldb-2.1.1-1.fc32.x86_64.rpm" + }, + "sha256:ce1a80b0ba6f09a7e5a188436088dd31d10c5f7b43dbe9c1788f705127c8e6b2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-44.fc32.x86_64.rpm" + }, + "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpsl-0.21.0-4.fc32.x86_64.rpm" + }, + "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm" + }, + "sha256:d0bc781a80be1d1fe204ec6b26255240261d55f6e24a28343572f2221a00533e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jwt-1.7.1-7.fc32.noarch.rpm" + }, + "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gawk-5.0.1-7.fc32.x86_64.rpm" + }, + "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.x86_64.rpm" + }, + "sha256:d1e244b8b5ce7404846e97d96c762c8c18ff6447301f6fc63f50e615029aa7cd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-server-8.2p1-2.fc32.x86_64.rpm" + }, + "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/json-c-0.13.1-9.fc32.x86_64.rpm" + }, + "sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-libs-0.116-7.fc32.x86_64.rpm" + }, + "sha256:d49f0b1c8ecf9bc808ae93e9298a40fbcc124fe67c3bbdd37705b6b5d8cfdd87": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-0.116-7.fc32.x86_64.rpm" + }, + "sha256:d611f0c4252c4c4b893850807748e62cf4d17d72d544ef2744091df3206d8178": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-requests-2.22.0-8.fc32.noarch.rpm" + }, + "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgomp-10.0.1-0.11.fc32.x86_64.rpm" + }, + "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-1.1.1d-7.fc32.x86_64.rpm" + }, + "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-8.fc32.noarch.rpm" + }, + "sha256:dab54013f8316b766c40c71f9c0c2124c1f0c219b417d588b5ba1dccf7d63fd7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtevent-0.10.2-2.fc32.x86_64.rpm" + }, + "sha256:dbcf6ba5f6ab0cdc884572f07427114b8492d453420a80ffd521578a752b8064": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/syslinux-6.04-0.13.fc32.x86_64.rpm" + }, + "sha256:dc2558fdefc439075ebdf57bd9f2f691d6a6f278879713f2e093398dcb62c25a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/syslinux-nonlinux-6.04-0.13.fc32.noarch.rpm" + }, + "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-2.31-2.fc32.x86_64.rpm" + }, + "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsmartcols-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-0.23.20-1.fc32.x86_64.rpm" + }, + "sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/h/hostname-3.23-2.fc32.x86_64.rpm" + }, + "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libseccomp-2.4.2-3.fc32.x86_64.rpm" + }, + "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-libs-5.38-2.fc32.x86_64.rpm" + }, + "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/krb5-libs-1.18-1.fc32.x86_64.rpm" + }, + "sha256:e3175d0dba977f1cff702498ea68cc13134a0f525a869025e2ee3ede987d7867": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xfsprogs-5.4.0-3.fc32.x86_64.rpm" + }, + "sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sudo-1.9.0-0.1.b4.fc32.x86_64.rpm" + }, + "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmount-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:e7b9fd73c260cd22d3a36823530d4f623ea0e16844b900a5677c769afa76341c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-chardet-3.0.4-15.fc32.noarch.rpm" + }, + "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-common-2.31-2.fc32.x86_64.rpm" + }, + "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcomps-0.1.14-4.fc32.x86_64.rpm" + }, + "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.x86_64.rpm" + }, + "sha256:ebbace15f986288bba7681f44a111b14bcc7cae00b7a1faadaa838bd51897357": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfido2-1.3.1-1.fc32.x86_64.rpm" + }, + "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm" + }, + "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libs-3.8.2-2.fc32.x86_64.rpm" + }, + "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.x86_64.rpm" + }, + "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-1.12.16-4.fc32.x86_64.rpm" + }, + "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libverto-0.3.0-9.fc32.x86_64.rpm" + }, + "sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm" + }, + "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.x86_64.rpm" + }, + "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/readline-8.0-4.fc32.x86_64.rpm" + }, + "sha256:f2715fc8a04d33716f40f5b34466e082140df7ff3b7b972c29655d4dfc6e3a72": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-8.fc32.x86_64.rpm" + }, + "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-7.fc32.x86_64.rpm" + }, + "sha256:f391fe0e21e51e7c864f8bce1b5825419f4096023b5b90b3976bbd69d6a4d720": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_certmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libelf-0.179-1.fc32.x86_64.rpm" + }, + "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-libs-1.8.4-7.fc32.x86_64.rpm" + }, + "sha256:f6203a41ed91197bb770a38a101d977f0f56de86ccc5a71cee9c0e198f26bcbc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-ply-3.11-7.fc32.noarch.rpm" + }, + "sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libselinux-3.0-3.fc32.x86_64.rpm" + }, + "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libacl-2.2.53-5.fc32.x86_64.rpm" + }, + "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmodulemd-2.9.1-1.fc32.x86_64.rpm" + }, + "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libutempter-1.1.6-18.fc32.x86_64.rpm" + }, + "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdnf-0.45.0-3.fc32.x86_64.rpm" + }, + "sha256:fa791a4328b4c41b7190d862de921605f266a64abee03b2ea2e8d2b644be307f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pysocks-1.7.1-4.fc32.noarch.rpm" + }, + "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libunistring-0.9.10-7.fc32.x86_64.rpm" + }, + "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kpartx-0.8.2-3.fc32.x86_64.rpm" + }, + "sha256:fd2a2dd726d855f877296227fb351883d647df28b1b0085f525d87df622d49e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.22.10-1.fc32.x86_64.rpm" + }, + "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-4.fc32.x86_64.rpm" + }, + "sha256:fdf652eae6502ff726fc3b532348ebe59dccb16e0629331371ff83e309b259af": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cloud-utils-growpart-0.31-6.fc32.noarch.rpm" + }, + "sha256:fe70d5a1c818367be3a5a7e60cbb379f020f97f63ba3c13ed09740f45a43154a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipcalc-0.4.0-2.fc32.x86_64.rpm" + }, + "sha256:fed6244fce0c0b48933d622dfbb00cf73931b2f746b27675a025a33b591d9820": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libini_config-1.3.1-44.fc32.x86_64.rpm" + }, + "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.x86_64.rpm" + }, + "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sed-4.5-5.fc32.x86_64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "checksum": "sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec", + "check_gpg": true + }, + { + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "checksum": "sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe", + "check_gpg": true + }, + { + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "checksum": "sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4", + "check_gpg": true + }, + { + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "checksum": "sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9", + "check_gpg": true + }, + { + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "checksum": "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b", + "check_gpg": true + }, + { + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts", + "labels": { + "/usr/bin/cp": "system_u:object_r:install_exec_t:s0" + } + } + } + ] + }, + "runner": "org.osbuild.fedora32" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:342bdf0143d9145f8846e1b5c3401685e0d1274b66df39ac8cbfb78013313861", + "check_gpg": true + }, + { + "checksum": "sha256:fd2a2dd726d855f877296227fb351883d647df28b1b0085f525d87df622d49e4", + "check_gpg": true + }, + { + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "checksum": "sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d", + "check_gpg": true + }, + { + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "checksum": "sha256:46407b730b272223b8b64d12df0725af571b4a5c5ab89b9f41e12a49e07c6e6b", + "check_gpg": true + }, + { + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "checksum": "sha256:703fb5ca1651bb72d8ab58576ce3d78c9479cbb2e78ff8666ae3a3d1cd9bb0da", + "check_gpg": true + }, + { + "checksum": "sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57", + "check_gpg": true + }, + { + "checksum": "sha256:1e1e9900e9d3a2b8eb6684060672526948df2cb9f751e7d72cb4fa5bffe71747", + "check_gpg": true + }, + { + "checksum": "sha256:fdf652eae6502ff726fc3b532348ebe59dccb16e0629331371ff83e309b259af", + "check_gpg": true + }, + { + "checksum": "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309", + "check_gpg": true + }, + { + "checksum": "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56", + "check_gpg": true + }, + { + "checksum": "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280", + "check_gpg": true + }, + { + "checksum": "sha256:a9420698e38d93b375f3f97ef5b196f61d006862f80642d69cc3c3fd694589fc", + "check_gpg": true + }, + { + "checksum": "sha256:2bcf87d3ecdecab92bc2aacf2f1ec50aced0ed2958001cd8b297c80612edeb60", + "check_gpg": true + }, + { + "checksum": "sha256:85be4f8732fed73e473ea61635b582ecd0e46709a7c2c3c1a8f25d0709041780", + "check_gpg": true + }, + { + "checksum": "sha256:87f6173e57d5d24c601047f747dfcf90dedc1d05250bfc6f06567d8ca35f895b", + "check_gpg": true + }, + { + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "checksum": "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315", + "check_gpg": true + }, + { + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "checksum": "sha256:8c047278ce11e7ba7169a9c9537c3c6544f52c7eee8754179acd839ed59c028f", + "check_gpg": true + }, + { + "checksum": "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013", + "check_gpg": true + }, + { + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "checksum": "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d", + "check_gpg": true + }, + { + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "checksum": "sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73", + "check_gpg": true + }, + { + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "checksum": "sha256:0c8f8925dacc9a0e57b4446d5f67d9041bfc0a939191a7606ba93b74512a97d1", + "check_gpg": true + }, + { + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "checksum": "sha256:907393755387a351806ec2afff376e7491f177116caadd12f07d0fcbed796750", + "check_gpg": true + }, + { + "checksum": "sha256:f2715fc8a04d33716f40f5b34466e082140df7ff3b7b972c29655d4dfc6e3a72", + "check_gpg": true + }, + { + "checksum": "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012", + "check_gpg": true + }, + { + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "checksum": "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3", + "check_gpg": true + }, + { + "checksum": "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f", + "check_gpg": true + }, + { + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "checksum": "sha256:24520e03276e0d850169efc9d83b12a9a01eee5d7202dadca12d2e0a8b7352ba", + "check_gpg": true + }, + { + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "checksum": "sha256:808e7209893298d11ac27f148c1b3d1a2b28e303e7930b43659a08dc0f660ac4", + "check_gpg": true + }, + { + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "checksum": "sha256:cbdc61d713e4cbe52b2bece117912da0f1e3782cb3b33caa068e96c854c990be", + "check_gpg": true + }, + { + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "checksum": "sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823", + "check_gpg": true + }, + { + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "checksum": "sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339", + "check_gpg": true + }, + { + "checksum": "sha256:fe70d5a1c818367be3a5a7e60cbb379f020f97f63ba3c13ed09740f45a43154a", + "check_gpg": true + }, + { + "checksum": "sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684", + "check_gpg": true + }, + { + "checksum": "sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae", + "check_gpg": true + }, + { + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "checksum": "sha256:6a3282927f525629bc0aaf4090e108d33b0709d3d5b35bc442000c2837e7b9b4", + "check_gpg": true + }, + { + "checksum": "sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8", + "check_gpg": true + }, + { + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "checksum": "sha256:a1613e90865db93fb578b8ee1a4ee40bd396c6c9f2fb2a14757acacecb9f23e8", + "check_gpg": true + }, + { + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "checksum": "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0", + "check_gpg": true + }, + { + "checksum": "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389", + "check_gpg": true + }, + { + "checksum": "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca", + "check_gpg": true + }, + { + "checksum": "sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884", + "check_gpg": true + }, + { + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "checksum": "sha256:26cca773f1f258105f0f825a8e0faebcaa183655b5d91cd972afbe791b586478", + "check_gpg": true + }, + { + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "checksum": "sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5", + "check_gpg": true + }, + { + "checksum": "sha256:9d4691918d7add910e8c03d61cccda0316b62d77b30ac2e502cf2e55289d1823", + "check_gpg": true + }, + { + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "checksum": "sha256:ca540fb7088948fdfe6e6b52a5e2b6a74d2d17136857da9f3f4a1ee29c8eb74b", + "check_gpg": true + }, + { + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "checksum": "sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09", + "check_gpg": true + }, + { + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "checksum": "sha256:ebbace15f986288bba7681f44a111b14bcc7cae00b7a1faadaa838bd51897357", + "check_gpg": true + }, + { + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "checksum": "sha256:fed6244fce0c0b48933d622dfbb00cf73931b2f746b27675a025a33b591d9820", + "check_gpg": true + }, + { + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "checksum": "sha256:cd16f6ef433d7dc6860b19f3d77b666a03d35361aba78ee09d772575c2f69cc0", + "check_gpg": true + }, + { + "checksum": "sha256:60589342d58922ba061ac8df7d753a7e7e75162c97ab086739e9d33fbf289091", + "check_gpg": true + }, + { + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "checksum": "sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f", + "check_gpg": true + }, + { + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "checksum": "sha256:bb154a90c968150172036d86f0c9fc2a24b5799718bc4d835cb10d0758890c67", + "check_gpg": true + }, + { + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "checksum": "sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1", + "check_gpg": true + }, + { + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "checksum": "sha256:ce1a80b0ba6f09a7e5a188436088dd31d10c5f7b43dbe9c1788f705127c8e6b2", + "check_gpg": true + }, + { + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "checksum": "sha256:c0a0c6f3e30c20815496be8de00f9596737e2693feb85f7484f200ffa9174530", + "check_gpg": true + }, + { + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1181ed798617668f195579acfcf8fb212513a776f376eecfb3d086c66b2d9", + "check_gpg": true + }, + { + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "checksum": "sha256:695ef8ae55ed6a165a3633b3c0d75b320879246386e6df4539be9286f5176cc5", + "check_gpg": true + }, + { + "checksum": "sha256:f391fe0e21e51e7c864f8bce1b5825419f4096023b5b90b3976bbd69d6a4d720", + "check_gpg": true + }, + { + "checksum": "sha256:599549d72d26b48c45156585a5698898c853e56469142e202d3749b781428465", + "check_gpg": true + }, + { + "checksum": "sha256:66bb5b2e99d2c74b82943fe61fe9b9a3674350b0242f69a6854ec9718dcf5e07", + "check_gpg": true + }, + { + "checksum": "sha256:af66820023c984d8b981ecac715d0c2daec1f89dcb69bed76ddf58b0ee80c1b1", + "check_gpg": true + }, + { + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "checksum": "sha256:16702883a79532a400d7304146cdb47b0599983b9fb48ab918ef9fa1ce0be394", + "check_gpg": true + }, + { + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "checksum": "sha256:36778f8a4fa111c4f796bbea8fd52f7b9708de8f4351070faa30bc985db59885", + "check_gpg": true + }, + { + "checksum": "sha256:dab54013f8316b766c40c71f9c0c2124c1f0c219b417d588b5ba1dccf7d63fd7", + "check_gpg": true + }, + { + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "checksum": "sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975", + "check_gpg": true + }, + { + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "checksum": "sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467", + "check_gpg": true + }, + { + "checksum": "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4", + "check_gpg": true + }, + { + "checksum": "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9", + "check_gpg": true + }, + { + "checksum": "sha256:25ae9056f75df4efff0d17d916e7c3889c421368613acec7f1c4119bd17eac13", + "check_gpg": true + }, + { + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "checksum": "sha256:ca80c458fab5bdde0276702f06217d1219085428560af6039aa1c5cf1e58ff3b", + "check_gpg": true + }, + { + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "checksum": "sha256:80cf220a3314f965c088e03d2b750426767db0b36b6b7c5e8059b9217ff4de6d", + "check_gpg": true + }, + { + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "checksum": "sha256:280b880de2f5c6bbd8e000c63dff495533925893ef02cc599222cdb3c7586a22", + "check_gpg": true + }, + { + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "checksum": "sha256:924367aa63693da4660dcb806fbf52b3bcb7c4d12b40c4b4ba6329079936d073", + "check_gpg": true + }, + { + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "checksum": "sha256:0d51c1319ee78978e6ea5a49b815c2078b4ffd4d575e98c70e54ca01c3390eb8", + "check_gpg": true + }, + { + "checksum": "sha256:8b148415fb6a583ef131d0ddff44f3209c30d0299fde7b20cd3ea385590927c1", + "check_gpg": true + }, + { + "checksum": "sha256:d1e244b8b5ce7404846e97d96c762c8c18ff6447301f6fc63f50e615029aa7cd", + "check_gpg": true + }, + { + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "checksum": "sha256:4b9da0cedada16eb80a2d66b86aa62c9b026501e13a3e947a5a03a06f41d9dbb", + "check_gpg": true + }, + { + "checksum": "sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719", + "check_gpg": true + }, + { + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "checksum": "sha256:d49f0b1c8ecf9bc808ae93e9298a40fbcc124fe67c3bbdd37705b6b5d8cfdd87", + "check_gpg": true + }, + { + "checksum": "sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386", + "check_gpg": true + }, + { + "checksum": "sha256:7c7eff31251dedcc3285a8b08c1b18f7fd9ee2e07dff86ad090f45a81e19e85e", + "check_gpg": true + }, + { + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "checksum": "sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444", + "check_gpg": true + }, + { + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "checksum": "sha256:bcb07748c8688c788ec69c3a33c0abd1bb3a496b9aa09b5729265670bc7ba0eb", + "check_gpg": true + }, + { + "checksum": "sha256:b1111e77a5fdbacaa04acc90d3844706158bc5892173862928705620b8910adb", + "check_gpg": true + }, + { + "checksum": "sha256:5719dd2fb399cadec08b4ac41c794239d2a2de2f012faeb970ab90a07bba0084", + "check_gpg": true + }, + { + "checksum": "sha256:7124f9fedc862e3bab80f05b804b6c9580603ce3155727e888646d4d4f5ddc50", + "check_gpg": true + }, + { + "checksum": "sha256:e7b9fd73c260cd22d3a36823530d4f623ea0e16844b900a5677c769afa76341c", + "check_gpg": true + }, + { + "checksum": "sha256:81b6181b947d50e0a1ea681298417e552421d6714900d07a34dc25899e5c9f60", + "check_gpg": true + }, + { + "checksum": "sha256:bb8942d19e594c0f4ca181bd58796bd5d3cb681c3f17cd2ec2654c3afe28e39a", + "check_gpg": true + }, + { + "checksum": "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862", + "check_gpg": true + }, + { + "checksum": "sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070", + "check_gpg": true + }, + { + "checksum": "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4", + "check_gpg": true + }, + { + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "checksum": "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576", + "check_gpg": true + }, + { + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "checksum": "sha256:61c51596cc97f35177efe8dc5e2ca52d8fd528570f33c184497f419259b73c90", + "check_gpg": true + }, + { + "checksum": "sha256:645f82cf62da25742cab5e8ffd1f764301b84ab19710d9f3fb3aff1cb57ffdc6", + "check_gpg": true + }, + { + "checksum": "sha256:4c9d77d63ddc7dda0e018fc1c97d46025794e336e58d838a631fcc130dfa3b9b", + "check_gpg": true + }, + { + "checksum": "sha256:6615aae3def0c49910e43e2d69f7ae8852694953dceb4b6235b5cf4099296d70", + "check_gpg": true + }, + { + "checksum": "sha256:6890a9545194ad6cf1b0c58e5273132171a9ced9cb665a1442aa62b6b6d3d2ea", + "check_gpg": true + }, + { + "checksum": "sha256:d0bc781a80be1d1fe204ec6b26255240261d55f6e24a28343572f2221a00533e", + "check_gpg": true + }, + { + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "checksum": "sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124", + "check_gpg": true + }, + { + "checksum": "sha256:55bafcdf9c31b1456af3bf584bfe7ac745a03f4decd17197ea97b498d68b3b82", + "check_gpg": true + }, + { + "checksum": "sha256:c05d01195aa4ca0f4a471574cc7ece8a0f4daf437935d845cd0745e2512cb9c9", + "check_gpg": true + }, + { + "checksum": "sha256:391faab010ca30610a14e0b3d54fbc0331be39bc831086fb877f8021fe4b171f", + "check_gpg": true + }, + { + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "checksum": "sha256:f6203a41ed91197bb770a38a101d977f0f56de86ccc5a71cee9c0e198f26bcbc", + "check_gpg": true + }, + { + "checksum": "sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2", + "check_gpg": true + }, + { + "checksum": "sha256:4860a733ca3f22089c6c283cbdcf53123a702d60b5bffdd4fe9d76826f91139a", + "check_gpg": true + }, + { + "checksum": "sha256:a0b87b2dc3c5f536e94d6a4f3563a621dfbc067a62c3d1fe69bdb70c3cecec57", + "check_gpg": true + }, + { + "checksum": "sha256:1e655f02895f6a87f9be5793065570b57e623cbf15516094df62e1f5626d4158", + "check_gpg": true + }, + { + "checksum": "sha256:a107b3d3790a5bcfdc28f6f4718969039b103a681a2647f3cbcb82cf92e97acb", + "check_gpg": true + }, + { + "checksum": "sha256:fa791a4328b4c41b7190d862de921605f266a64abee03b2ea2e8d2b644be307f", + "check_gpg": true + }, + { + "checksum": "sha256:c93df175a0a4989aaaeb170406d8ff13a2cd93a5fc52ad33468245fea2044a86", + "check_gpg": true + }, + { + "checksum": "sha256:c13c7da4b097499576861cb12fdd02e520af69b5f23d615b3968c54f40f8fd47", + "check_gpg": true + }, + { + "checksum": "sha256:d611f0c4252c4c4b893850807748e62cf4d17d72d544ef2744091df3206d8178", + "check_gpg": true + }, + { + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "checksum": "sha256:6f5f53b66f7c3bf6958f6f163788583265ff0360188620c3b0f7ddedeac3d1f4", + "check_gpg": true + }, + { + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "checksum": "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f", + "check_gpg": true + }, + { + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "checksum": "sha256:3882823d0eb18e0e8146584f4a32a4801961f6fdc09075607746317eba3265be", + "check_gpg": true + }, + { + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "checksum": "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58", + "check_gpg": true + }, + { + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "checksum": "sha256:024dd8a75eb5472692d0291292d25939b97a0295e5ab0958dcd22600d392eaae", + "check_gpg": true + }, + { + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "checksum": "sha256:699c1a3ff311bbaa2380c085fb4f516aa08be474bed02bcd1569d0bbf5b22d07", + "check_gpg": true + }, + { + "checksum": "sha256:265dee550073120d51e4c94d3d039e5efdee73a0ae1b1faf2b92de0dad1f58fa", + "check_gpg": true + }, + { + "checksum": "sha256:3ee53d0dba5bbfd3bbb2ae4b54e3ebdfa122e1cf120e17ff9c4c35674269e5ad", + "check_gpg": true + }, + { + "checksum": "sha256:3c3fb1ca768ecd6ae7905a09cd85b9f67e9f08c46d18779520fb4b29476865c7", + "check_gpg": true + }, + { + "checksum": "sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b", + "check_gpg": true + }, + { + "checksum": "sha256:dbcf6ba5f6ab0cdc884572f07427114b8492d453420a80ffd521578a752b8064", + "check_gpg": true + }, + { + "checksum": "sha256:78de81d45789ae9bccf6dd82f2b2835ac868f1a584e05d0e9f89f40bb4a202c7", + "check_gpg": true + }, + { + "checksum": "sha256:4e066ace8364aba9311fa74f4a87c21f98091bc1af5a6a4daa06441469234041", + "check_gpg": true + }, + { + "checksum": "sha256:dc2558fdefc439075ebdf57bd9f2f691d6a6f278879713f2e093398dcb62c25a", + "check_gpg": true + }, + { + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "checksum": "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b", + "check_gpg": true + }, + { + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "checksum": "sha256:4fca21cfdcbed052e3e9e1eff74c22fb8ffb1fbbeb63e87e2aa540e43a8c0d09", + "check_gpg": true + }, + { + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "checksum": "sha256:e3175d0dba977f1cff702498ea68cc13134a0f525a869025e2ee3ede987d7867", + "check_gpg": true + }, + { + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "checksum": "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf", + "check_gpg": true + }, + { + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "redhat": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "vfs_type": "ext4", + "path": "/", + "options": "defaults", + "freq": 1, + "passno": 1 + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "kernel_opts": "ro biosdevname=0 net.ifnames=0", + "legacy": "i386-pc" + } + }, + { + "name": "org.osbuild.systemd", + "options": { + "enabled_services": [ + "cloud-init.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service" + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "qcow2", + "filename": "disk.qcow2", + "size": 2147483648, + "ptuuid": "0x14fc63d2", + "pttype": "mbr", + "partitions": [ + { + "start": 2048, + "bootable": true, + "filesystem": { + "type": "ext4", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/acl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/alternatives-1.11-6.fc32.x86_64.rpm", + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm", + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bash-5.0.11-2.fc32.x86_64.rpm", + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.x86_64.rpm", + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2020.2.40", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm", + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-common-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.13", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cpio-2.13-4.fc32.x86_64.rpm", + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.x86_64.rpm", + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/curl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.x86_64.rpm", + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "22", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-broker-22-1.fc32.x86_64.rpm", + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm", + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-5.fc32.x86_64.rpm", + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/diffutils-3.7-4.fc32.x86_64.rpm", + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dosfstools-4.1-10.fc32.x86_64.rpm", + "checksum": "sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-050-26.git20200316.fc32.x86_64.rpm", + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm", + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libelf-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libs-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/expat-2.2.8-2.fc32.x86_64.rpm", + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm", + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-32-1.noarch.rpm", + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-common-32-1.noarch.rpm", + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-repos-32-1.noarch.rpm", + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-libs-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.14", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/filesystem-3.14-2.fc32.x86_64.rpm", + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.7.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/findutils-4.7.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-9.fc32.x86_64.rpm", + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gawk-5.0.1-7.fc32.x86_64.rpm", + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.x86_64.rpm", + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.64.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glib2-2.64.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-common-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gmp-6.1.2-13.fc32.x86_64.rpm", + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.13", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnutls-3.6.13-1.fc32.x86_64.rpm", + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gpgme-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grep-3.3-4.fc32.x86_64.rpm", + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gzip-1.10-2.fc32.x86_64.rpm", + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.x86_64.rpm", + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-libs-1.8.4-7.fc32.x86_64.rpm", + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/json-c-0.13.1-9.fc32.x86_64.rpm", + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-2.2.0-1.fc32.x86_64.rpm", + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-27-1.fc32.x86_64.rpm", + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-libs-27-1.fc32.x86_64.rpm", + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kpartx-0.8.2-3.fc32.x86_64.rpm", + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/krb5-libs-1.18-1.fc32.x86_64.rpm", + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libacl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.111", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libaio-0.3.111-7.fc32.x86_64.rpm", + "checksum": "sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.2", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libarchive-3.4.2-1.fc32.x86_64.rpm", + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libargon2-20171227-4.fc32.x86_64.rpm", + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libassuan-2.5.3-3.fc32.x86_64.rpm", + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libattr-2.4.48-8.fc32.x86_64.rpm", + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libblkid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "name": "libbrotli", + "epoch": 0, + "version": "1.0.7", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbrotli-1.0.7-10.fc32.x86_64.rpm", + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-2.26-7.fc32.x86_64.rpm", + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-ng-0.7.10-2.fc32.x86_64.rpm", + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcom_err-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcroco-0.6.13-3.fc32.x86_64.rpm", + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcurl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libevent-2.1.8-8.fc32.x86_64.rpm", + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfdisk-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libffi-3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcc-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-3.fc32.x86_64.rpm", + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgomp-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgpg-error-1.36-3.fc32.x86_64.rpm", + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libidn2-2.3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libksba-1.3.5-11.fc32.x86_64.rpm", + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-10.fc32.x86_64.rpm", + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmnl-1.0.4-11.fc32.x86_64.rpm", + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmodulemd-2.9.1-1.fc32.x86_64.rpm", + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmount-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.x86_64.rpm", + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "17.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.x86_64.rpm", + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.40.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnghttp2-1.40.0-2.fc32.x86_64.rpm", + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "6.20180605git4a062cf.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64.rpm", + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpcap-1.9.1-3.fc32.x86_64.rpm", + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpsl-0.21.0-4.fc32.x86_64.rpm", + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpwquality-1.4.2-2.fc32.x86_64.rpm", + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.11.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/librepo-1.11.1-4.fc32.x86_64.rpm", + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.12.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm", + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libseccomp-2.4.2-3.fc32.x86_64.rpm", + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.20.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsecret-0.20.2-2.fc32.x86_64.rpm", + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-utils-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsemanage-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsepol-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsigsegv-2.11-10.fc32.x86_64.rpm", + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsmartcols-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsolv-0.7.11-2.fc32.x86_64.rpm", + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libss-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-0.9.3-2.fc32.x86_64.rpm", + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm", + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.16.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtasn1-4.16.0-1.fc32.x86_64.rpm", + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.2.5", + "release": "1.rc2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.x86_64.rpm", + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libunistring-0.9.10-7.fc32.x86_64.rpm", + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libusbx-1.0.23-1.fc32.x86_64.rpm", + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "18.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libutempter-1.1.6-18.fc32.x86_64.rpm", + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuuid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libverto-0.3.0-9.fc32.x86_64.rpm", + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.10.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.x86_64.rpm", + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.10", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxml2-2.9.10-3.fc32.x86_64.rpm", + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libyaml-0.2.2-3.fc32.x86_64.rpm", + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libzstd-1.4.4-2.fc32.x86_64.rpm", + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-7.fc32.x86_64.rpm", + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-2.fc32.x86_64.rpm", + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mkpasswd-5.5.6-1.fc32.x86_64.rpm", + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "4.0.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mpfr-4.0.2-3.fc32.x86_64.rpm", + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm", + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nettle-3.5.1-5.fc32.x86_64.rpm", + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/npth-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openldap-2.4.47-4.fc32.x86_64.rpm", + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.x86_64.rpm", + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/os-prober-1.77-4.fc32.x86_64.rpm", + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pam-1.3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.44", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre-8.44-1.fc32.x86_64.rpm", + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-10.34-9.fc32.x86_64.rpm", + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "name": "pcre2-syntax", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm", + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pigz-2.4-6.fc32.x86_64.rpm", + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pinentry-1.1.0-7.fc32.x86_64.rpm", + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/popt-1.16-19.fc32.x86_64.rpm", + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-7.fc32.x86_64.rpm", + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm", + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libs-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-unbound-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "name": "qemu-img", + "epoch": 2, + "version": "4.2.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qemu-img-4.2.0-7.fc32.x86_64.rpm", + "checksum": "sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.x86_64.rpm", + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/readline-8.0-4.fc32.x86_64.rpm", + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sed-4.5-5.fc32.x86_64.rpm", + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.6", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm", + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.8.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shadow-utils-4.8.1-2.fc32.x86_64.rpm", + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.15", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shared-mime-info-1.15-3.fc32.x86_64.rpm", + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.31.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-libs-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-pam-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm", + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-udev-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tar-1.32-4.fc32.x86_64.rpm", + "checksum": "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tss2-1331-4.fc32.x86_64.rpm", + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm", + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/unbound-libs-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/util-linux-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/which-2.21-19.fc32.x86_64.rpm", + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm", + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.29", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm", + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-libs-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "21.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zlib-1.2.11-21.fc32.x86_64.rpm", + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.22.10", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-1.22.10-1.fc32.x86_64.rpm", + "checksum": "sha256:342bdf0143d9145f8846e1b5c3401685e0d1274b66df39ac8cbfb78013313861", + "check_gpg": true + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.22.10", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.22.10-1.fc32.x86_64.rpm", + "checksum": "sha256:fd2a2dd726d855f877296227fb351883d647df28b1b0085f525d87df622d49e4", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/acl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/alternatives-1.11-6.fc32.x86_64.rpm", + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm", + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bash-5.0.11-2.fc32.x86_64.rpm", + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.x86_64.rpm", + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.15.0", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/c-ares-1.15.0-5.fc32.x86_64.rpm", + "checksum": "sha256:46407b730b272223b8b64d12df0725af571b4a5c5ab89b9f41e12a49e07c6e6b", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2020.2.40", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm", + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/checkpolicy-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:703fb5ca1651bb72d8ab58576ce3d78c9479cbb2e78ff8666ae3a3d1cd9bb0da", + "check_gpg": true + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/chrony-3.5-8.fc32.x86_64.rpm", + "checksum": "sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57", + "check_gpg": true + }, + { + "name": "cloud-init", + "epoch": 0, + "version": "19.4", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cloud-init-19.4-2.fc32.noarch.rpm", + "checksum": "sha256:1e1e9900e9d3a2b8eb6684060672526948df2cb9f751e7d72cb4fa5bffe71747", + "check_gpg": true + }, + { + "name": "cloud-utils-growpart", + "epoch": 0, + "version": "0.31", + "release": "6.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cloud-utils-growpart-0.31-6.fc32.noarch.rpm", + "checksum": "sha256:fdf652eae6502ff726fc3b532348ebe59dccb16e0629331371ff83e309b259af", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-sans-mono-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-serif-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280", + "check_gpg": true + }, + { + "name": "console-login-helper-messages", + "epoch": 0, + "version": "0.17", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/console-login-helper-messages-0.17-2.fc32.noarch.rpm", + "checksum": "sha256:a9420698e38d93b375f3f97ef5b196f61d006862f80642d69cc3c3fd694589fc", + "check_gpg": true + }, + { + "name": "console-login-helper-messages-issuegen", + "epoch": 0, + "version": "0.17", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/console-login-helper-messages-issuegen-0.17-2.fc32.noarch.rpm", + "checksum": "sha256:2bcf87d3ecdecab92bc2aacf2f1ec50aced0ed2958001cd8b297c80612edeb60", + "check_gpg": true + }, + { + "name": "console-login-helper-messages-motdgen", + "epoch": 0, + "version": "0.17", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/console-login-helper-messages-motdgen-0.17-2.fc32.noarch.rpm", + "checksum": "sha256:85be4f8732fed73e473ea61635b582ecd0e46709a7c2c3c1a8f25d0709041780", + "check_gpg": true + }, + { + "name": "console-login-helper-messages-profile", + "epoch": 0, + "version": "0.17", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/console-login-helper-messages-profile-0.17-2.fc32.noarch.rpm", + "checksum": "sha256:87f6173e57d5d24c601047f747dfcf90dedc1d05250bfc6f06567d8ca35f895b", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-common-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.13", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cpio-2.13-4.fc32.x86_64.rpm", + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.x86_64.rpm", + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/curl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.x86_64.rpm", + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "22", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-broker-22-1.fc32.x86_64.rpm", + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm", + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "name": "dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-5.fc32.x86_64.rpm", + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.4.2", + "release": "5.b1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dhcp-client-4.4.2-5.b1.fc32.x86_64.rpm", + "checksum": "sha256:8c047278ce11e7ba7169a9c9537c3c6544f52c7eee8754179acd839ed59c028f", + "check_gpg": true + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.4.2", + "release": "5.b1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dhcp-common-4.4.2-5.b1.fc32.noarch.rpm", + "checksum": "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/diffutils-3.7-4.fc32.x86_64.rpm", + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.14", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-plugins-core-4.0.14-1.fc32.noarch.rpm", + "checksum": "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-050-26.git20200316.fc32.x86_64.rpm", + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-config-generic-050-26.git20200316.fc32.x86_64.rpm", + "checksum": "sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm", + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libelf-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libs-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/expat-2.2.8-2.fc32.x86_64.rpm", + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm", + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "name": "fedora-release-cloud", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-cloud-32-1.noarch.rpm", + "checksum": "sha256:0c8f8925dacc9a0e57b4446d5f67d9041bfc0a939191a7606ba93b74512a97d1", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-common-32-1.noarch.rpm", + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-repos-32-1.noarch.rpm", + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-libs-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.14", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/filesystem-3.14-2.fc32.x86_64.rpm", + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.7.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/findutils-4.7.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-8.fc32.x86_64.rpm", + "checksum": "sha256:907393755387a351806ec2afff376e7491f177116caadd12f07d0fcbed796750", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-8.fc32.x86_64.rpm", + "checksum": "sha256:f2715fc8a04d33716f40f5b34466e082140df7ff3b7b972c29655d4dfc6e3a72", + "check_gpg": true + }, + { + "name": "fonts-filesystem", + "epoch": 0, + "version": "2.0.3", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fonts-filesystem-2.0.3-1.fc32.noarch.rpm", + "checksum": "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-9.fc32.x86_64.rpm", + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gawk-5.0.1-7.fc32.x86_64.rpm", + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.x86_64.rpm", + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20191217", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/geolite2-city-20191217-2.fc32.noarch.rpm", + "checksum": "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3", + "check_gpg": true + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20191217", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/geolite2-country-20191217-2.fc32.noarch.rpm", + "checksum": "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.64.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glib2-2.64.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-common-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "name": "glibc-langpack-en", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:24520e03276e0d850169efc9d83b12a9a01eee5d7202dadca12d2e0a8b7352ba", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gmp-6.1.2-13.fc32.x86_64.rpm", + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.13", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnutls-3.6.13-1.fc32.x86_64.rpm", + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gpgme-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grep-3.3-4.fc32.x86_64.rpm", + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "21.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/groff-base-1.22.3-21.fc32.x86_64.rpm", + "checksum": "sha256:808e7209893298d11ac27f148c1b3d1a2b28e303e7930b43659a08dc0f660ac4", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grubby-8.40-40.fc32.x86_64.rpm", + "checksum": "sha256:cbdc61d713e4cbe52b2bece117912da0f1e3782cb3b33caa068e96c854c990be", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gzip-1.10-2.fc32.x86_64.rpm", + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.23", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/h/hostname-3.23-2.fc32.x86_64.rpm", + "checksum": "sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.x86_64.rpm", + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.02", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/initscripts-10.02-3.fc32.x86_64.rpm", + "checksum": "sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339", + "check_gpg": true + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.4.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipcalc-0.4.0-2.fc32.x86_64.rpm", + "checksum": "sha256:fe70d5a1c818367be3a5a7e60cbb379f020f97f63ba3c13ed09740f45a43154a", + "check_gpg": true + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.5.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-5.5.0-1.fc32.x86_64.rpm", + "checksum": "sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684", + "check_gpg": true + }, + { + "name": "iproute-tc", + "epoch": 0, + "version": "5.5.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-tc-5.5.0-1.fc32.x86_64.rpm", + "checksum": "sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-libs-1.8.4-7.fc32.x86_64.rpm", + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "name": "iputils", + "epoch": 0, + "version": "20190515", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iputils-20190515-5.fc32.x86_64.rpm", + "checksum": "sha256:6a3282927f525629bc0aaf4090e108d33b0709d3d5b35bc442000c2837e7b9b4", + "check_gpg": true + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.12", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/jansson-2.12-5.fc32.x86_64.rpm", + "checksum": "sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/json-c-0.13.1-9.fc32.x86_64.rpm", + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-2.2.0-1.fc32.x86_64.rpm", + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-core-5.6.6-300.fc32.x86_64.rpm", + "checksum": "sha256:a1613e90865db93fb578b8ee1a4ee40bd396c6c9f2fb2a14757acacecb9f23e8", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-27-1.fc32.x86_64.rpm", + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-libs-27-1.fc32.x86_64.rpm", + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kpartx-0.8.2-3.fc32.x86_64.rpm", + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/krb5-libs-1.18-1.fc32.x86_64.rpm", + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "name": "langpacks-core-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0", + "check_gpg": true + }, + { + "name": "langpacks-core-font-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-font-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389", + "check_gpg": true + }, + { + "name": "langpacks-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca", + "check_gpg": true + }, + { + "name": "less", + "epoch": 0, + "version": "551", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/less-551-3.fc32.x86_64.rpm", + "checksum": "sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libacl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.2", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libarchive-3.4.2-1.fc32.x86_64.rpm", + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libargon2-20171227-4.fc32.x86_64.rpm", + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libassuan-2.5.3-3.fc32.x86_64.rpm", + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libattr-2.4.48-8.fc32.x86_64.rpm", + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-44.fc32.x86_64.rpm", + "checksum": "sha256:26cca773f1f258105f0f825a8e0faebcaa183655b5d91cd972afbe791b586478", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libblkid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "name": "libbrotli", + "epoch": 0, + "version": "1.0.7", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbrotli-1.0.7-10.fc32.x86_64.rpm", + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-2.26-7.fc32.x86_64.rpm", + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-ng-0.7.10-2.fc32.x86_64.rpm", + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "name": "libcbor", + "epoch": 0, + "version": "0.5.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcbor-0.5.0-7.fc32.x86_64.rpm", + "checksum": "sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5", + "check_gpg": true + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcollection-0.7.0-44.fc32.x86_64.rpm", + "checksum": "sha256:9d4691918d7add910e8c03d61cccda0316b62d77b30ac2e502cf2e55289d1823", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcom_err-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcroco-0.6.13-3.fc32.x86_64.rpm", + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcurl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdhash-0.5.0-44.fc32.x86_64.rpm", + "checksum": "sha256:ca540fb7088948fdfe6e6b52a5e2b6a74d2d17136857da9f3f4a1ee29c8eb74b", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "32.20191231cvs.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libedit-3.1-32.20191231cvs.fc32.x86_64.rpm", + "checksum": "sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libevent-2.1.8-8.fc32.x86_64.rpm", + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfdisk-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libffi-3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "name": "libfido2", + "epoch": 0, + "version": "1.3.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfido2-1.3.1-1.fc32.x86_64.rpm", + "checksum": "sha256:ebbace15f986288bba7681f44a111b14bcc7cae00b7a1faadaa838bd51897357", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcc-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-3.fc32.x86_64.rpm", + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgomp-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgpg-error-1.36-3.fc32.x86_64.rpm", + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libidn2-2.3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libini_config-1.3.1-44.fc32.x86_64.rpm", + "checksum": "sha256:fed6244fce0c0b48933d622dfbb00cf73931b2f746b27675a025a33b591d9820", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libksba-1.3.5-11.fc32.x86_64.rpm", + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.1.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libldb-2.1.1-1.fc32.x86_64.rpm", + "checksum": "sha256:cd16f6ef433d7dc6860b19f3d77b666a03d35361aba78ee09d772575c2f69cc0", + "check_gpg": true + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.3.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmaxminddb-1.3.2-2.fc32.x86_64.rpm", + "checksum": "sha256:60589342d58922ba061ac8df7d753a7e7e75162c97ab086739e9d33fbf289091", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-10.fc32.x86_64.rpm", + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmnl-1.0.4-11.fc32.x86_64.rpm", + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmodulemd-2.9.1-1.fc32.x86_64.rpm", + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmount-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libndp-1.7-5.fc32.x86_64.rpm", + "checksum": "sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.x86_64.rpm", + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "17.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.x86_64.rpm", + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.4.3", + "release": "0.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfsidmap-2.4.3-0.fc32.x86_64.rpm", + "checksum": "sha256:bb154a90c968150172036d86f0c9fc2a24b5799718bc4d835cb10d0758890c67", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.40.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnghttp2-1.40.0-2.fc32.x86_64.rpm", + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnl3-3.5.0-2.fc32.x86_64.rpm", + "checksum": "sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "6.20180605git4a062cf.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64.rpm", + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-44.fc32.x86_64.rpm", + "checksum": "sha256:ce1a80b0ba6f09a7e5a188436088dd31d10c5f7b43dbe9c1788f705127c8e6b2", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpcap-1.9.1-3.fc32.x86_64.rpm", + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpipeline-1.5.2-2.fc32.x86_64.rpm", + "checksum": "sha256:c0a0c6f3e30c20815496be8de00f9596737e2693feb85f7484f200ffa9174530", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpsl-0.21.0-4.fc32.x86_64.rpm", + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpwquality-1.4.2-2.fc32.x86_64.rpm", + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libref_array-0.1.5-44.fc32.x86_64.rpm", + "checksum": "sha256:6fc1181ed798617668f195579acfcf8fb212513a776f376eecfb3d086c66b2d9", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.11.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/librepo-1.11.1-4.fc32.x86_64.rpm", + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.12.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm", + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libseccomp-2.4.2-3.fc32.x86_64.rpm", + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.20.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsecret-0.20.2-2.fc32.x86_64.rpm", + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-utils-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsemanage-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsepol-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsigsegv-2.11-10.fc32.x86_64.rpm", + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsmartcols-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsolv-0.7.11-2.fc32.x86_64.rpm", + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libss-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-0.9.3-2.fc32.x86_64.rpm", + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm", + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_autofs-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:695ef8ae55ed6a165a3633b3c0d75b320879246386e6df4539be9286f5176cc5", + "check_gpg": true + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_certmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:f391fe0e21e51e7c864f8bce1b5825419f4096023b5b90b3976bbd69d6a4d720", + "check_gpg": true + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:599549d72d26b48c45156585a5698898c853e56469142e202d3749b781428465", + "check_gpg": true + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:66bb5b2e99d2c74b82943fe61fe9b9a3674350b0242f69a6854ec9718dcf5e07", + "check_gpg": true + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:af66820023c984d8b981ecac715d0c2daec1f89dcb69bed76ddf58b0ee80c1b1", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtalloc-2.3.1-2.fc32.x86_64.rpm", + "checksum": "sha256:16702883a79532a400d7304146cdb47b0599983b9fb48ab918ef9fa1ce0be394", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.16.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtasn1-4.16.0-1.fc32.x86_64.rpm", + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtdb-1.4.3-2.fc32.x86_64.rpm", + "checksum": "sha256:36778f8a4fa111c4f796bbea8fd52f7b9708de8f4351070faa30bc985db59885", + "check_gpg": true + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtevent-0.10.2-2.fc32.x86_64.rpm", + "checksum": "sha256:dab54013f8316b766c40c71f9c0c2124c1f0c219b417d588b5ba1dccf7d63fd7", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.2.5", + "release": "1.rc2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.x86_64.rpm", + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libunistring-0.9.10-7.fc32.x86_64.rpm", + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libusbx-1.0.23-1.fc32.x86_64.rpm", + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuser-0.62-24.fc32.x86_64.rpm", + "checksum": "sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "18.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libutempter-1.1.6-18.fc32.x86_64.rpm", + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuuid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libverto-0.3.0-9.fc32.x86_64.rpm", + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.10.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.x86_64.rpm", + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.10", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxml2-2.9.10-3.fc32.x86_64.rpm", + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libyaml-0.2.2-3.fc32.x86_64.rpm", + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libzstd-1.4.4-2.fc32.x86_64.rpm", + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "name": "linux-atm-libs", + "epoch": 0, + "version": "2.5.1", + "release": "26.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-26.fc32.x86_64.rpm", + "checksum": "sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467", + "check_gpg": true + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20200316", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-20200316-106.fc32.noarch.rpm", + "checksum": "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4", + "check_gpg": true + }, + { + "name": "linux-firmware-whence", + "epoch": 0, + "version": "20200316", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-whence-20200316-106.fc32.noarch.rpm", + "checksum": "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9", + "check_gpg": true + }, + { + "name": "lmdb-libs", + "epoch": 0, + "version": "0.9.24", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.24-1.fc32.x86_64.rpm", + "checksum": "sha256:25ae9056f75df4efff0d17d916e7c3889c421368613acec7f1c4119bd17eac13", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-7.fc32.x86_64.rpm", + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-2.fc32.x86_64.rpm", + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.9.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/man-db-2.9.0-2.fc32.x86_64.rpm", + "checksum": "sha256:ca80c458fab5bdde0276702f06217d1219085428560af6039aa1c5cf1e58ff3b", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mkpasswd-5.5.6-1.fc32.x86_64.rpm", + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "name": "mozjs60", + "epoch": 0, + "version": "60.9.0", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mozjs60-60.9.0-5.fc32.x86_64.rpm", + "checksum": "sha256:80cf220a3314f965c088e03d2b750426767db0b36b6b7c5e8059b9217ff4de6d", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "4.0.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mpfr-4.0.2-3.fc32.x86_64.rpm", + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "name": "mtools", + "epoch": 0, + "version": "4.0.24", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mtools-4.0.24-1.fc32.x86_64.rpm", + "checksum": "sha256:280b880de2f5c6bbd8e000c63dff495533925893ef02cc599222cdb3c7586a22", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm", + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.56.20160912git.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/net-tools-2.0-0.56.20160912git.fc32.x86_64.rpm", + "checksum": "sha256:924367aa63693da4660dcb806fbf52b3bcb7c4d12b40c4b4ba6329079936d073", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nettle-3.5.1-5.fc32.x86_64.rpm", + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/npth-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openldap-2.4.47-4.fc32.x86_64.rpm", + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-8.2p1-2.fc32.x86_64.rpm", + "checksum": "sha256:0d51c1319ee78978e6ea5a49b815c2078b4ffd4d575e98c70e54ca01c3390eb8", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-clients-8.2p1-2.fc32.x86_64.rpm", + "checksum": "sha256:8b148415fb6a583ef131d0ddff44f3209c30d0299fde7b20cd3ea385590927c1", + "check_gpg": true + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-server-8.2p1-2.fc32.x86_64.rpm", + "checksum": "sha256:d1e244b8b5ce7404846e97d96c762c8c18ff6447301f6fc63f50e615029aa7cd", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.x86_64.rpm", + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/os-prober-1.77-4.fc32.x86_64.rpm", + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pam-1.3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "name": "parted", + "epoch": 0, + "version": "3.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/parted-3.3-3.fc32.x86_64.rpm", + "checksum": "sha256:4b9da0cedada16eb80a2d66b86aa62c9b026501e13a3e947a5a03a06f41d9dbb", + "check_gpg": true + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/passwd-0.80-8.fc32.x86_64.rpm", + "checksum": "sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.44", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre-8.44-1.fc32.x86_64.rpm", + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-10.34-9.fc32.x86_64.rpm", + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "name": "pcre2-syntax", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm", + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pigz-2.4-6.fc32.x86_64.rpm", + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pinentry-1.1.0-7.fc32.x86_64.rpm", + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "name": "polkit", + "epoch": 0, + "version": "0.116", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-0.116-7.fc32.x86_64.rpm", + "checksum": "sha256:d49f0b1c8ecf9bc808ae93e9298a40fbcc124fe67c3bbdd37705b6b5d8cfdd87", + "check_gpg": true + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.116", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-libs-0.116-7.fc32.x86_64.rpm", + "checksum": "sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386", + "check_gpg": true + }, + { + "name": "polkit-pkla-compat", + "epoch": 0, + "version": "0.1", + "release": "16.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-pkla-compat-0.1-16.fc32.x86_64.rpm", + "checksum": "sha256:7c7eff31251dedcc3285a8b08c1b18f7fd9ee2e07dff86ad090f45a81e19e85e", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/popt-1.16-19.fc32.x86_64.rpm", + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-7.fc32.x86_64.rpm", + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "name": "psmisc", + "epoch": 0, + "version": "23.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/psmisc-23.3-3.fc32.x86_64.rpm", + "checksum": "sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm", + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "name": "python3-attrs", + "epoch": 0, + "version": "19.3.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-attrs-19.3.0-2.fc32.noarch.rpm", + "checksum": "sha256:bcb07748c8688c788ec69c3a33c0abd1bb3a496b9aa09b5729265670bc7ba0eb", + "check_gpg": true + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:b1111e77a5fdbacaa04acc90d3844706158bc5892173862928705620b8910adb", + "check_gpg": true + }, + { + "name": "python3-babel", + "epoch": 0, + "version": "2.8.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-babel-2.8.0-2.fc32.noarch.rpm", + "checksum": "sha256:5719dd2fb399cadec08b4ac41c794239d2a2de2f012faeb970ab90a07bba0084", + "check_gpg": true + }, + { + "name": "python3-cffi", + "epoch": 0, + "version": "1.14.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-cffi-1.14.0-1.fc32.x86_64.rpm", + "checksum": "sha256:7124f9fedc862e3bab80f05b804b6c9580603ce3155727e888646d4d4f5ddc50", + "check_gpg": true + }, + { + "name": "python3-chardet", + "epoch": 0, + "version": "3.0.4", + "release": "15.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-chardet-3.0.4-15.fc32.noarch.rpm", + "checksum": "sha256:e7b9fd73c260cd22d3a36823530d4f623ea0e16844b900a5677c769afa76341c", + "check_gpg": true + }, + { + "name": "python3-configobj", + "epoch": 0, + "version": "5.0.6", + "release": "20.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-configobj-5.0.6-20.fc32.noarch.rpm", + "checksum": "sha256:81b6181b947d50e0a1ea681298417e552421d6714900d07a34dc25899e5c9f60", + "check_gpg": true + }, + { + "name": "python3-cryptography", + "epoch": 0, + "version": "2.8", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-cryptography-2.8-3.fc32.x86_64.rpm", + "checksum": "sha256:bb8942d19e594c0f4ca181bd58796bd5d3cb681c3f17cd2ec2654c3afe28e39a", + "check_gpg": true + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.8.0", + "release": "8.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-8.fc32.noarch.rpm", + "checksum": "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862", + "check_gpg": true + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dbus-1.2.16-1.fc32.x86_64.rpm", + "checksum": "sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070", + "check_gpg": true + }, + { + "name": "python3-distro", + "epoch": 0, + "version": "1.4.0", + "release": "5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-5.fc32.noarch.rpm", + "checksum": "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.14", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-plugins-core-4.0.14-1.fc32.noarch.rpm", + "checksum": "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "name": "python3-idna", + "epoch": 0, + "version": "2.8", + "release": "6.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-idna-2.8-6.fc32.noarch.rpm", + "checksum": "sha256:61c51596cc97f35177efe8dc5e2ca52d8fd528570f33c184497f419259b73c90", + "check_gpg": true + }, + { + "name": "python3-jinja2", + "epoch": 0, + "version": "2.11.1", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jinja2-2.11.1-1.fc32.noarch.rpm", + "checksum": "sha256:645f82cf62da25742cab5e8ffd1f764301b84ab19710d9f3fb3aff1cb57ffdc6", + "check_gpg": true + }, + { + "name": "python3-jsonpatch", + "epoch": 0, + "version": "1.21", + "release": "11.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jsonpatch-1.21-11.fc32.noarch.rpm", + "checksum": "sha256:4c9d77d63ddc7dda0e018fc1c97d46025794e336e58d838a631fcc130dfa3b9b", + "check_gpg": true + }, + { + "name": "python3-jsonpointer", + "epoch": 0, + "version": "1.10", + "release": "19.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jsonpointer-1.10-19.fc32.noarch.rpm", + "checksum": "sha256:6615aae3def0c49910e43e2d69f7ae8852694953dceb4b6235b5cf4099296d70", + "check_gpg": true + }, + { + "name": "python3-jsonschema", + "epoch": 0, + "version": "3.2.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jsonschema-3.2.0-2.fc32.noarch.rpm", + "checksum": "sha256:6890a9545194ad6cf1b0c58e5273132171a9ced9cb665a1442aa62b6b6d3d2ea", + "check_gpg": true + }, + { + "name": "python3-jwt", + "epoch": 0, + "version": "1.7.1", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jwt-1.7.1-7.fc32.noarch.rpm", + "checksum": "sha256:d0bc781a80be1d1fe204ec6b26255240261d55f6e24a28343572f2221a00533e", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libs-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libselinux-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124", + "check_gpg": true + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libsemanage-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:55bafcdf9c31b1456af3bf584bfe7ac745a03f4decd17197ea97b498d68b3b82", + "check_gpg": true + }, + { + "name": "python3-markupsafe", + "epoch": 0, + "version": "1.1.1", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-markupsafe-1.1.1-5.fc32.x86_64.rpm", + "checksum": "sha256:c05d01195aa4ca0f4a471574cc7ece8a0f4daf437935d845cd0745e2512cb9c9", + "check_gpg": true + }, + { + "name": "python3-oauthlib", + "epoch": 0, + "version": "3.0.2", + "release": "5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-oauthlib-3.0.2-5.fc32.noarch.rpm", + "checksum": "sha256:391faab010ca30610a14e0b3d54fbc0331be39bc831086fb877f8021fe4b171f", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "name": "python3-ply", + "epoch": 0, + "version": "3.11", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-ply-3.11-7.fc32.noarch.rpm", + "checksum": "sha256:f6203a41ed91197bb770a38a101d977f0f56de86ccc5a71cee9c0e198f26bcbc", + "check_gpg": true + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-policycoreutils-3.0-2.fc32.noarch.rpm", + "checksum": "sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2", + "check_gpg": true + }, + { + "name": "python3-prettytable", + "epoch": 0, + "version": "0.7.2", + "release": "22.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-prettytable-0.7.2-22.fc32.noarch.rpm", + "checksum": "sha256:4860a733ca3f22089c6c283cbdcf53123a702d60b5bffdd4fe9d76826f91139a", + "check_gpg": true + }, + { + "name": "python3-pycparser", + "epoch": 0, + "version": "2.19", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pycparser-2.19-2.fc32.noarch.rpm", + "checksum": "sha256:a0b87b2dc3c5f536e94d6a4f3563a621dfbc067a62c3d1fe69bdb70c3cecec57", + "check_gpg": true + }, + { + "name": "python3-pyrsistent", + "epoch": 0, + "version": "0.15.7", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyrsistent-0.15.7-2.fc32.x86_64.rpm", + "checksum": "sha256:1e655f02895f6a87f9be5793065570b57e623cbf15516094df62e1f5626d4158", + "check_gpg": true + }, + { + "name": "python3-pyserial", + "epoch": 0, + "version": "3.4", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyserial-3.4-7.fc32.noarch.rpm", + "checksum": "sha256:a107b3d3790a5bcfdc28f6f4718969039b103a681a2647f3cbcb82cf92e97acb", + "check_gpg": true + }, + { + "name": "python3-pysocks", + "epoch": 0, + "version": "1.7.1", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pysocks-1.7.1-4.fc32.noarch.rpm", + "checksum": "sha256:fa791a4328b4c41b7190d862de921605f266a64abee03b2ea2e8d2b644be307f", + "check_gpg": true + }, + { + "name": "python3-pytz", + "epoch": 0, + "version": "2019.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pytz-2019.3-2.fc32.noarch.rpm", + "checksum": "sha256:c93df175a0a4989aaaeb170406d8ff13a2cd93a5fc52ad33468245fea2044a86", + "check_gpg": true + }, + { + "name": "python3-pyyaml", + "epoch": 0, + "version": "5.3.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyyaml-5.3.1-1.fc32.x86_64.rpm", + "checksum": "sha256:c13c7da4b097499576861cb12fdd02e520af69b5f23d615b3968c54f40f8fd47", + "check_gpg": true + }, + { + "name": "python3-requests", + "epoch": 0, + "version": "2.22.0", + "release": "8.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-requests-2.22.0-8.fc32.noarch.rpm", + "checksum": "sha256:d611f0c4252c4c4b893850807748e62cf4d17d72d544ef2744091df3206d8178", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.3.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setools-4.3.0-1.fc32.x86_64.rpm", + "checksum": "sha256:6f5f53b66f7c3bf6958f6f163788583265ff0360188620c3b0f7ddedeac3d1f4", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.14.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-six-1.14.0-2.fc32.noarch.rpm", + "checksum": "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-unbound-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "name": "python3-urllib3", + "epoch": 0, + "version": "1.25.7", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-urllib3-1.25.7-3.fc32.noarch.rpm", + "checksum": "sha256:3882823d0eb18e0e8146584f4a32a4801961f6fdc09075607746317eba3265be", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.x86_64.rpm", + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/readline-8.0-4.fc32.x86_64.rpm", + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "27.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rootfiles-8.1-27.fc32.noarch.rpm", + "checksum": "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "name": "rsync", + "epoch": 0, + "version": "3.1.3", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rsync-3.1.3-11.fc32.x86_64.rpm", + "checksum": "sha256:024dd8a75eb5472692d0291292d25939b97a0295e5ab0958dcd22600d392eaae", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sed-4.5-5.fc32.x86_64.rpm", + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.6", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm", + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.8.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shadow-utils-4.8.1-2.fc32.x86_64.rpm", + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.15", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shared-mime-info-1.15-3.fc32.x86_64.rpm", + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.31.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-client-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:699c1a3ff311bbaa2380c085fb4f516aa08be474bed02bcd1569d0bbf5b22d07", + "check_gpg": true + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-common-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:265dee550073120d51e4c94d3d039e5efdee73a0ae1b1faf2b92de0dad1f58fa", + "check_gpg": true + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-kcm-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:3ee53d0dba5bbfd3bbb2ae4b54e3ebdfa122e1cf120e17ff9c4c35674269e5ad", + "check_gpg": true + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-nfs-idmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:3c3fb1ca768ecd6ae7905a09cd85b9f67e9f08c46d18779520fb4b29476865c7", + "check_gpg": true + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.9.0", + "release": "0.1.b4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sudo-1.9.0-0.1.b4.fc32.x86_64.rpm", + "checksum": "sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b", + "check_gpg": true + }, + { + "name": "syslinux", + "epoch": 0, + "version": "6.04", + "release": "0.13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/syslinux-6.04-0.13.fc32.x86_64.rpm", + "checksum": "sha256:dbcf6ba5f6ab0cdc884572f07427114b8492d453420a80ffd521578a752b8064", + "check_gpg": true + }, + { + "name": "syslinux-extlinux", + "epoch": 0, + "version": "6.04", + "release": "0.13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/syslinux-extlinux-6.04-0.13.fc32.x86_64.rpm", + "checksum": "sha256:78de81d45789ae9bccf6dd82f2b2835ac868f1a584e05d0e9f89f40bb4a202c7", + "check_gpg": true + }, + { + "name": "syslinux-extlinux-nonlinux", + "epoch": 0, + "version": "6.04", + "release": "0.13.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/syslinux-extlinux-nonlinux-6.04-0.13.fc32.noarch.rpm", + "checksum": "sha256:4e066ace8364aba9311fa74f4a87c21f98091bc1af5a6a4daa06441469234041", + "check_gpg": true + }, + { + "name": "syslinux-nonlinux", + "epoch": 0, + "version": "6.04", + "release": "0.13.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/syslinux-nonlinux-6.04-0.13.fc32.noarch.rpm", + "checksum": "sha256:dc2558fdefc439075ebdf57bd9f2f691d6a6f278879713f2e093398dcb62c25a", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-libs-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-pam-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm", + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-udev-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tar-1.32-4.fc32.x86_64.rpm", + "checksum": "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tss2-1331-4.fc32.x86_64.rpm", + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm", + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/unbound-libs-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/util-linux-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.2.525", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/v/vim-minimal-8.2.525-1.fc32.x86_64.rpm", + "checksum": "sha256:4fca21cfdcbed052e3e9e1eff74c22fb8ffb1fbbeb63e87e2aa540e43a8c0d09", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/which-2.21-19.fc32.x86_64.rpm", + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm", + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.4.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xfsprogs-5.4.0-3.fc32.x86_64.rpm", + "checksum": "sha256:e3175d0dba977f1cff702498ea68cc13134a0f525a869025e2ee3ede987d7867", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.29", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm", + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-libs-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/y/yum-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "21.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zlib-1.2.11-21.fc32.x86_64.rpm", + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ], + "checksums": { + "0": "sha256:c7f7c29a8ca90e226d2efee6d5856f2dea1d64ea758dfd114d75b4b20b56de1c" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac ro biosdevname=0 net.ifnames=0" + }, + "bootloader": "grub", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "initrd": "/boot/initramfs-5.6.6-300.fc32.x86_64.img", + "linux": "/boot/vmlinuz-5.6.6-300.fc32.x86_64", + "options": "$kernelopts", + "title": "Fedora (5.6.6-300.fc32.x86_64) 32 (Thirty Two)", + "version": "5.6.6-300.fc32.x86_64" + } + ], + "fstab": [ + [ + "UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "/", + "ext4", + "defaults", + "1", + "1" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:992:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:997:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "polkitd:x:993:", + "redhat:x:1000:", + "render:x:996:", + "root:x:0:", + "ssh_keys:x:998:", + "sshd:x:74:", + "sys:x:3:", + "systemd-coredump:x:995:", + "systemd-journal:x:190:", + "systemd-network:x:192:", + "systemd-resolve:x:193:", + "systemd-timesync:x:994:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:999:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "qcow2", + "os-release": { + "ANSI_COLOR": "0;34", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:fedoraproject:fedora:32", + "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f32/system-administrators-guide/", + "HOME_URL": "https://fedoraproject.org/", + "ID": "fedora", + "LOGO": "fedora-logo-icon", + "NAME": "Fedora", + "PLATFORM_ID": "platform:f32", + "PRETTY_NAME": "Fedora 32 (Cloud Edition)", + "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy", + "REDHAT_BUGZILLA_PRODUCT": "Fedora", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "32", + "REDHAT_SUPPORT_PRODUCT": "Fedora", + "REDHAT_SUPPORT_PRODUCT_VERSION": "32", + "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help", + "VARIANT": "Cloud Edition", + "VARIANT_ID": "cloud", + "VERSION": "32 (Cloud Edition)", + "VERSION_CODENAME": "", + "VERSION_ID": "32" + }, + "packages": [ + "NetworkManager-1.22.10-1.fc32.x86_64", + "NetworkManager-libnm-1.22.10-1.fc32.x86_64", + "acl-2.2.53-5.fc32.x86_64", + "alternatives-1.11-6.fc32.x86_64", + "audit-3.0-0.19.20191104git1c2f876.fc32.x86_64", + "audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64", + "basesystem-11-9.fc32.noarch", + "bash-5.0.11-2.fc32.x86_64", + "bzip2-libs-1.0.8-2.fc32.x86_64", + "c-ares-1.15.0-5.fc32.x86_64", + "ca-certificates-2020.2.40-3.fc32.noarch", + "checkpolicy-3.0-3.fc32.x86_64", + "chrony-3.5-8.fc32.x86_64", + "cloud-init-19.4-2.fc32.noarch", + "cloud-utils-growpart-0.31-6.fc32.noarch", + "compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch", + "compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch", + "compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch", + "console-login-helper-messages-0.17-2.fc32.noarch", + "console-login-helper-messages-issuegen-0.17-2.fc32.noarch", + "console-login-helper-messages-motdgen-0.17-2.fc32.noarch", + "console-login-helper-messages-profile-0.17-2.fc32.noarch", + "coreutils-8.32-3.fc32.1.x86_64", + "coreutils-common-8.32-3.fc32.1.x86_64", + "cpio-2.13-4.fc32.x86_64", + "cracklib-2.9.6-22.fc32.x86_64", + "cracklib-dicts-2.9.6-22.fc32.x86_64", + "crypto-policies-20191128-5.gitcd267a5.fc32.noarch", + "crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch", + "cryptsetup-libs-2.3.0-1.fc32.x86_64", + "curl-7.69.1-1.fc32.x86_64", + "cyrus-sasl-lib-2.1.27-4.fc32.x86_64", + "dbus-1.12.16-4.fc32.x86_64", + "dbus-broker-22-1.fc32.x86_64", + "dbus-common-1.12.16-4.fc32.noarch", + "dbus-libs-1.12.16-4.fc32.x86_64", + "dejavu-sans-fonts-2.37-7.fc32.noarch", + "deltarpm-3.6.2-5.fc32.x86_64", + "device-mapper-1.02.171-1.fc32.x86_64", + "device-mapper-libs-1.02.171-1.fc32.x86_64", + "dhcp-client-4.4.2-5.b1.fc32.x86_64", + "dhcp-common-4.4.2-5.b1.fc32.noarch", + "diffutils-3.7-4.fc32.x86_64", + "dnf-4.2.19-1.fc32.noarch", + "dnf-data-4.2.19-1.fc32.noarch", + "dnf-plugins-core-4.0.14-1.fc32.noarch", + "dracut-050-26.git20200316.fc32.x86_64", + "dracut-config-generic-050-26.git20200316.fc32.x86_64", + "e2fsprogs-1.45.5-3.fc32.x86_64", + "e2fsprogs-libs-1.45.5-3.fc32.x86_64", + "elfutils-debuginfod-client-0.179-1.fc32.x86_64", + "elfutils-default-yama-scope-0.179-1.fc32.noarch", + "elfutils-libelf-0.179-1.fc32.x86_64", + "elfutils-libs-0.179-1.fc32.x86_64", + "expat-2.2.8-2.fc32.x86_64", + "fedora-gpg-keys-32-1.noarch", + "fedora-release-cloud-32-1.noarch", + "fedora-release-common-32-1.noarch", + "fedora-repos-32-1.noarch", + "file-5.38-2.fc32.x86_64", + "file-libs-5.38-2.fc32.x86_64", + "filesystem-3.14-2.fc32.x86_64", + "findutils-4.7.0-3.fc32.x86_64", + "fipscheck-1.5.0-8.fc32.x86_64", + "fipscheck-lib-1.5.0-8.fc32.x86_64", + "fonts-filesystem-2.0.3-1.fc32.noarch", + "fuse-libs-2.9.9-9.fc32.x86_64", + "gawk-5.0.1-7.fc32.x86_64", + "gdbm-libs-1.18.1-3.fc32.x86_64", + "geolite2-city-20191217-2.fc32.noarch", + "geolite2-country-20191217-2.fc32.noarch", + "gettext-0.20.1-4.fc32.x86_64", + "gettext-libs-0.20.1-4.fc32.x86_64", + "glib2-2.64.1-1.fc32.x86_64", + "glibc-2.31-2.fc32.x86_64", + "glibc-common-2.31-2.fc32.x86_64", + "glibc-langpack-en-2.31-2.fc32.x86_64", + "gmp-6.1.2-13.fc32.x86_64", + "gnupg2-2.2.19-1.fc32.x86_64", + "gnupg2-smime-2.2.19-1.fc32.x86_64", + "gnutls-3.6.13-1.fc32.x86_64", + "gpg-pubkey-12c944d0-5d5156ab", + "gpgme-1.13.1-6.fc32.x86_64", + "grep-3.3-4.fc32.x86_64", + "groff-base-1.22.3-21.fc32.x86_64", + "grub2-common-2.04-12.fc32.noarch", + "grub2-pc-2.04-12.fc32.x86_64", + "grub2-pc-modules-2.04-12.fc32.noarch", + "grub2-tools-2.04-12.fc32.x86_64", + "grub2-tools-minimal-2.04-12.fc32.x86_64", + "grubby-8.40-40.fc32.x86_64", + "gzip-1.10-2.fc32.x86_64", + "hostname-3.23-2.fc32.x86_64", + "ima-evm-utils-1.2.1-3.fc32.x86_64", + "initscripts-10.02-3.fc32.x86_64", + "ipcalc-0.4.0-2.fc32.x86_64", + "iproute-5.5.0-1.fc32.x86_64", + "iproute-tc-5.5.0-1.fc32.x86_64", + "iptables-libs-1.8.4-7.fc32.x86_64", + "iputils-20190515-5.fc32.x86_64", + "jansson-2.12-5.fc32.x86_64", + "json-c-0.13.1-9.fc32.x86_64", + "kbd-2.2.0-1.fc32.x86_64", + "kbd-legacy-2.2.0-1.fc32.noarch", + "kbd-misc-2.2.0-1.fc32.noarch", + "kernel-core-5.6.6-300.fc32.x86_64", + "keyutils-libs-1.6-4.fc32.x86_64", + "kmod-27-1.fc32.x86_64", + "kmod-libs-27-1.fc32.x86_64", + "kpartx-0.8.2-3.fc32.x86_64", + "krb5-libs-1.18-1.fc32.x86_64", + "langpacks-core-en-3.0-3.fc32.noarch", + "langpacks-core-font-en-3.0-3.fc32.noarch", + "langpacks-en-3.0-3.fc32.noarch", + "less-551-3.fc32.x86_64", + "libacl-2.2.53-5.fc32.x86_64", + "libarchive-3.4.2-1.fc32.x86_64", + "libargon2-20171227-4.fc32.x86_64", + "libassuan-2.5.3-3.fc32.x86_64", + "libattr-2.4.48-8.fc32.x86_64", + "libbasicobjects-0.1.1-44.fc32.x86_64", + "libblkid-2.35.1-7.fc32.x86_64", + "libbrotli-1.0.7-10.fc32.x86_64", + "libcap-2.26-7.fc32.x86_64", + "libcap-ng-0.7.10-2.fc32.x86_64", + "libcbor-0.5.0-7.fc32.x86_64", + "libcollection-0.7.0-44.fc32.x86_64", + "libcom_err-1.45.5-3.fc32.x86_64", + "libcomps-0.1.14-4.fc32.x86_64", + "libcroco-0.6.13-3.fc32.x86_64", + "libcurl-7.69.1-1.fc32.x86_64", + "libdb-5.3.28-40.fc32.x86_64", + "libdb-utils-5.3.28-40.fc32.x86_64", + "libdhash-0.5.0-44.fc32.x86_64", + "libdnf-0.45.0-3.fc32.x86_64", + "libedit-3.1-32.20191231cvs.fc32.x86_64", + "libevent-2.1.8-8.fc32.x86_64", + "libfdisk-2.35.1-7.fc32.x86_64", + "libffi-3.1-24.fc32.x86_64", + "libfido2-1.3.1-1.fc32.x86_64", + "libgcc-10.0.1-0.11.fc32.x86_64", + "libgcrypt-1.8.5-3.fc32.x86_64", + "libgomp-10.0.1-0.11.fc32.x86_64", + "libgpg-error-1.36-3.fc32.x86_64", + "libidn2-2.3.0-2.fc32.x86_64", + "libini_config-1.3.1-44.fc32.x86_64", + "libkcapi-1.1.5-2.fc32.x86_64", + "libkcapi-hmaccalc-1.1.5-2.fc32.x86_64", + "libksba-1.3.5-11.fc32.x86_64", + "libldb-2.1.1-1.fc32.x86_64", + "libmaxminddb-1.3.2-2.fc32.x86_64", + "libmetalink-0.1.3-10.fc32.x86_64", + "libmnl-1.0.4-11.fc32.x86_64", + "libmodulemd-2.9.1-1.fc32.x86_64", + "libmount-2.35.1-7.fc32.x86_64", + "libndp-1.7-5.fc32.x86_64", + "libnetfilter_conntrack-1.0.7-4.fc32.x86_64", + "libnfnetlink-1.0.1-17.fc32.x86_64", + "libnfsidmap-2.4.3-0.fc32.x86_64", + "libnghttp2-1.40.0-2.fc32.x86_64", + "libnl3-3.5.0-2.fc32.x86_64", + "libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64", + "libpath_utils-0.2.1-44.fc32.x86_64", + "libpcap-1.9.1-3.fc32.x86_64", + "libpipeline-1.5.2-2.fc32.x86_64", + "libpsl-0.21.0-4.fc32.x86_64", + "libpwquality-1.4.2-2.fc32.x86_64", + "libref_array-0.1.5-44.fc32.x86_64", + "librepo-1.11.1-4.fc32.x86_64", + "libreport-filesystem-2.12.0-3.fc32.noarch", + "libseccomp-2.4.2-3.fc32.x86_64", + "libsecret-0.20.2-2.fc32.x86_64", + "libselinux-3.0-3.fc32.x86_64", + "libselinux-utils-3.0-3.fc32.x86_64", + "libsemanage-3.0-3.fc32.x86_64", + "libsepol-3.0-3.fc32.x86_64", + "libsigsegv-2.11-10.fc32.x86_64", + "libsmartcols-2.35.1-7.fc32.x86_64", + "libsolv-0.7.11-2.fc32.x86_64", + "libss-1.45.5-3.fc32.x86_64", + "libssh-0.9.3-2.fc32.x86_64", + "libssh-config-0.9.3-2.fc32.noarch", + "libsss_autofs-2.2.3-13.fc32.x86_64", + "libsss_certmap-2.2.3-13.fc32.x86_64", + "libsss_idmap-2.2.3-13.fc32.x86_64", + "libsss_nss_idmap-2.2.3-13.fc32.x86_64", + "libsss_sudo-2.2.3-13.fc32.x86_64", + "libstdc++-10.0.1-0.11.fc32.x86_64", + "libtalloc-2.3.1-2.fc32.x86_64", + "libtasn1-4.16.0-1.fc32.x86_64", + "libtdb-1.4.3-2.fc32.x86_64", + "libtevent-0.10.2-2.fc32.x86_64", + "libtextstyle-0.20.1-4.fc32.x86_64", + "libtirpc-1.2.5-1.rc2.fc32.x86_64", + "libunistring-0.9.10-7.fc32.x86_64", + "libusbx-1.0.23-1.fc32.x86_64", + "libuser-0.62-24.fc32.x86_64", + "libutempter-1.1.6-18.fc32.x86_64", + "libuuid-2.35.1-7.fc32.x86_64", + "libverto-0.3.0-9.fc32.x86_64", + "libxcrypt-4.4.16-1.fc32.x86_64", + "libxcrypt-compat-4.4.16-1.fc32.x86_64", + "libxkbcommon-0.10.0-2.fc32.x86_64", + "libxml2-2.9.10-3.fc32.x86_64", + "libyaml-0.2.2-3.fc32.x86_64", + "libzstd-1.4.4-2.fc32.x86_64", + "linux-atm-libs-2.5.1-26.fc32.x86_64", + "linux-firmware-20200316-106.fc32.noarch", + "linux-firmware-whence-20200316-106.fc32.noarch", + "lmdb-libs-0.9.24-1.fc32.x86_64", + "lua-libs-5.3.5-7.fc32.x86_64", + "lz4-libs-1.9.1-2.fc32.x86_64", + "man-db-2.9.0-2.fc32.x86_64", + "mkpasswd-5.5.6-1.fc32.x86_64", + "mozjs60-60.9.0-5.fc32.x86_64", + "mpfr-4.0.2-3.fc32.x86_64", + "mtools-4.0.24-1.fc32.x86_64", + "ncurses-6.1-15.20191109.fc32.x86_64", + "ncurses-base-6.1-15.20191109.fc32.noarch", + "ncurses-libs-6.1-15.20191109.fc32.x86_64", + "net-tools-2.0-0.56.20160912git.fc32.x86_64", + "nettle-3.5.1-5.fc32.x86_64", + "npth-1.6-4.fc32.x86_64", + "openldap-2.4.47-4.fc32.x86_64", + "openssh-8.2p1-2.fc32.x86_64", + "openssh-clients-8.2p1-2.fc32.x86_64", + "openssh-server-8.2p1-2.fc32.x86_64", + "openssl-1.1.1d-7.fc32.x86_64", + "openssl-libs-1.1.1d-7.fc32.x86_64", + "openssl-pkcs11-0.4.10-5.fc32.x86_64", + "os-prober-1.77-4.fc32.x86_64", + "p11-kit-0.23.20-1.fc32.x86_64", + "p11-kit-trust-0.23.20-1.fc32.x86_64", + "pam-1.3.1-24.fc32.x86_64", + "parted-3.3-3.fc32.x86_64", + "passwd-0.80-8.fc32.x86_64", + "pcre-8.44-1.fc32.x86_64", + "pcre2-10.34-9.fc32.x86_64", + "pcre2-syntax-10.34-9.fc32.noarch", + "pigz-2.4-6.fc32.x86_64", + "pinentry-1.1.0-7.fc32.x86_64", + "policycoreutils-3.0-2.fc32.x86_64", + "polkit-0.116-7.fc32.x86_64", + "polkit-libs-0.116-7.fc32.x86_64", + "polkit-pkla-compat-0.1-16.fc32.x86_64", + "popt-1.16-19.fc32.x86_64", + "procps-ng-3.3.15-7.fc32.x86_64", + "psmisc-23.3-3.fc32.x86_64", + "publicsuffix-list-dafsa-20190417-3.fc32.noarch", + "python-pip-wheel-19.3.1-2.fc32.noarch", + "python-setuptools-wheel-41.6.0-2.fc32.noarch", + "python-unversioned-command-3.8.2-2.fc32.noarch", + "python3-3.8.2-2.fc32.x86_64", + "python3-attrs-19.3.0-2.fc32.noarch", + "python3-audit-3.0-0.19.20191104git1c2f876.fc32.x86_64", + "python3-babel-2.8.0-2.fc32.noarch", + "python3-cffi-1.14.0-1.fc32.x86_64", + "python3-chardet-3.0.4-15.fc32.noarch", + "python3-configobj-5.0.6-20.fc32.noarch", + "python3-cryptography-2.8-3.fc32.x86_64", + "python3-dateutil-2.8.0-8.fc32.noarch", + "python3-dbus-1.2.16-1.fc32.x86_64", + "python3-distro-1.4.0-5.fc32.noarch", + "python3-dnf-4.2.19-1.fc32.noarch", + "python3-dnf-plugins-core-4.0.14-1.fc32.noarch", + "python3-gpg-1.13.1-6.fc32.x86_64", + "python3-hawkey-0.45.0-3.fc32.x86_64", + "python3-idna-2.8-6.fc32.noarch", + "python3-jinja2-2.11.1-1.fc32.noarch", + "python3-jsonpatch-1.21-11.fc32.noarch", + "python3-jsonpointer-1.10-19.fc32.noarch", + "python3-jsonschema-3.2.0-2.fc32.noarch", + "python3-jwt-1.7.1-7.fc32.noarch", + "python3-libcomps-0.1.14-4.fc32.x86_64", + "python3-libdnf-0.45.0-3.fc32.x86_64", + "python3-libs-3.8.2-2.fc32.x86_64", + "python3-libselinux-3.0-3.fc32.x86_64", + "python3-libsemanage-3.0-3.fc32.x86_64", + "python3-markupsafe-1.1.1-5.fc32.x86_64", + "python3-oauthlib-3.0.2-5.fc32.noarch", + "python3-pip-19.3.1-2.fc32.noarch", + "python3-ply-3.11-7.fc32.noarch", + "python3-policycoreutils-3.0-2.fc32.noarch", + "python3-prettytable-0.7.2-22.fc32.noarch", + "python3-pycparser-2.19-2.fc32.noarch", + "python3-pyrsistent-0.15.7-2.fc32.x86_64", + "python3-pyserial-3.4-7.fc32.noarch", + "python3-pysocks-1.7.1-4.fc32.noarch", + "python3-pytz-2019.3-2.fc32.noarch", + "python3-pyyaml-5.3.1-1.fc32.x86_64", + "python3-requests-2.22.0-8.fc32.noarch", + "python3-rpm-4.15.1-2.fc32.1.x86_64", + "python3-setools-4.3.0-1.fc32.x86_64", + "python3-setuptools-41.6.0-2.fc32.noarch", + "python3-six-1.14.0-2.fc32.noarch", + "python3-unbound-1.9.6-2.fc32.x86_64", + "python3-urllib3-1.25.7-3.fc32.noarch", + "qrencode-libs-4.0.2-5.fc32.x86_64", + "readline-8.0-4.fc32.x86_64", + "rootfiles-8.1-27.fc32.noarch", + "rpm-4.15.1-2.fc32.1.x86_64", + "rpm-build-libs-4.15.1-2.fc32.1.x86_64", + "rpm-libs-4.15.1-2.fc32.1.x86_64", + "rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64", + "rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64", + "rpm-sign-libs-4.15.1-2.fc32.1.x86_64", + "rsync-3.1.3-11.fc32.x86_64", + "sed-4.5-5.fc32.x86_64", + "selinux-policy-3.14.5-32.fc32.noarch", + "selinux-policy-targeted-3.14.5-32.fc32.noarch", + "setup-2.13.6-2.fc32.noarch", + "shadow-utils-4.8.1-2.fc32.x86_64", + "shared-mime-info-1.15-3.fc32.x86_64", + "sqlite-libs-3.31.1-1.fc32.x86_64", + "sssd-client-2.2.3-13.fc32.x86_64", + "sssd-common-2.2.3-13.fc32.x86_64", + "sssd-kcm-2.2.3-13.fc32.x86_64", + "sssd-nfs-idmap-2.2.3-13.fc32.x86_64", + "sudo-1.9.0-0.1.b4.fc32.x86_64", + "syslinux-6.04-0.13.fc32.x86_64", + "syslinux-extlinux-6.04-0.13.fc32.x86_64", + "syslinux-extlinux-nonlinux-6.04-0.13.fc32.noarch", + "syslinux-nonlinux-6.04-0.13.fc32.noarch", + "systemd-245.4-1.fc32.x86_64", + "systemd-libs-245.4-1.fc32.x86_64", + "systemd-pam-245.4-1.fc32.x86_64", + "systemd-rpm-macros-245.4-1.fc32.noarch", + "systemd-udev-245.4-1.fc32.x86_64", + "tar-1.32-4.fc32.x86_64", + "trousers-0.3.13-13.fc31.x86_64", + "trousers-lib-0.3.13-13.fc31.x86_64", + "tss2-1331-4.fc32.x86_64", + "tzdata-2019c-3.fc32.noarch", + "unbound-libs-1.9.6-2.fc32.x86_64", + "util-linux-2.35.1-7.fc32.x86_64", + "vim-minimal-8.2.525-1.fc32.x86_64", + "which-2.21-19.fc32.x86_64", + "whois-nls-5.5.6-1.fc32.noarch", + "xfsprogs-5.4.0-3.fc32.x86_64", + "xkeyboard-config-2.29-1.fc32.noarch", + "xz-5.2.5-1.fc32.x86_64", + "xz-libs-5.2.5-1.fc32.x86_64", + "yum-4.2.19-1.fc32.noarch", + "zchunk-libs-1.1.5-2.fc32.x86_64", + "zlib-1.2.11-21.fc32.x86_64" + ], + "partition-table": "dos", + "partition-table-id": "0x14fc63d2", + "partitions": [ + { + "bootable": true, + "fstype": "ext4", + "label": null, + "partuuid": "14fc63d2-01", + "size": 2146435072, + "start": 1048576, + "type": "83", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:995:992::/var/lib/chrony:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "polkitd:x:996:993:User for polkitd:/:/sbin/nologin", + "redhat:x:1000:1000::/home/redhat:/bin/bash", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:998:995:systemd Core Dumper:/:/sbin/nologin", + "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "systemd-timesync:x:997:994:systemd Time Synchronization:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:999:999:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/boot/System.map-5.6.6-300.fc32.x86_64": ".M.......", + "/boot/initramfs-5.6.6-300.fc32.x86_64.img": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/lib/modules/5.6.6-300.fc32.x86_64/modules.builtin.alias.bin": ".......T.", + "/proc": ".M.......", + "/sys": ".M.......", + "/var/log/btmp": ".M.......", + "/var/log/journal": ".M....G..", + "/var/log/lastlog": ".M....G.." + }, + "missing": [] + }, + "services-disabled": [ + "arp-ethers.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "console-getty.service", + "console-login-helper-messages-issuegen.service", + "console-login-helper-messages-motdgen.service", + "debug-shell.service", + "exit.target", + "halt.target", + "kexec.target", + "loadmodules.service", + "man-db-restart-cache-update.service", + "nis-domainname.service", + "poweroff.target", + "proc-sys-fs-binfmt_misc.mount", + "rdisc.service", + "remote-cryptsetup.target", + "runlevel0.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-boot-check-no-failures.service", + "systemd-network-generator.service", + "systemd-networkd-wait-online.service", + "systemd-networkd.service", + "systemd-networkd.socket", + "systemd-pstore.service", + "systemd-resolved.service", + "systemd-time-wait-sync.service", + "systemd-timesyncd.service", + "tcsd.service" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "cloud-init.service", + "ctrl-alt-del.target", + "dbus-broker.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dbus.service", + "dbus.socket", + "dnf-makecache.timer", + "fstrim.timer", + "getty@.service", + "import-state.service", + "reboot.target", + "remote-fs.target", + "runlevel6.target", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "unbound-anchor.timer" + ] + } +} \ No newline at end of file diff --git a/test/cases/fedora_32-x86_64-qcow2-customize.json b/test/cases/fedora_32-x86_64-qcow2-customize.json new file mode 100644 index 0000000..dcf47b9 --- /dev/null +++ b/test/cases/fedora_32-x86_64-qcow2-customize.json @@ -0,0 +1,9774 @@ +{ + "compose-request": { + "distro": "fedora-32", + "arch": "x86_64", + "repositories": [ + { + "baseurl": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ], + "image-type": "qcow2", + "filename": "disk.qcow2", + "blueprint": { + "packages": [ + { + "name": "bash", + "version": "*" + } + ], + "groups": [ + { + "name": "core" + } + ], + "customizations": { + "hosname": "my-host", + "kernel": { + "append": "debug" + }, + "sshkey": [ + { + "user": "user1", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ], + "user": [ + { + "name": "user2", + "description": "description 2", + "password": "$6$BhyxFBgrEFh0VrPJ$MllG8auiU26x2pmzL4.1maHzPHrA.4gTdCvlATFp8HJU9UPee4zCS9BVl2HOzKaUYD/zEm8r/OF05F2icWB0K/", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost", + "home": "/home/home2", + "shell": "/bin/sh", + "groups": [ + "group1" + ], + "uid": 1020, + "gid": 1050 + } + ], + "group": [ + { + "name": "group1", + "gid": 1030 + }, + { + "name": "group2", + "gid": 1050 + } + ], + "timezone": { + "timezone": "Europe/London", + "ntpservers": [ + "time.example.com" + ] + }, + "locale": { + "languages": [ + "en_US" + ], + "keyboard": "dvorak" + }, + "services": { + "enabled": [ + "sshd.socket" + ], + "disabled": [ + "bluetooth.service" + ] + } + } + } + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm" + }, + "sha256:024dd8a75eb5472692d0291292d25939b97a0295e5ab0958dcd22600d392eaae": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rsync-3.1.3-11.fc32.x86_64.rpm" + }, + "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-six-1.14.0-2.fc32.noarch.rpm" + }, + "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.x86_64.rpm" + }, + "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/geolite2-country-20191217-2.fc32.noarch.rpm" + }, + "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtasn1-4.16.0-1.fc32.x86_64.rpm" + }, + "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm" + }, + "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm" + }, + "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/findutils-4.7.0-3.fc32.x86_64.rpm" + }, + "sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-tc-5.5.0-1.fc32.x86_64.rpm" + }, + "sha256:0c8f8925dacc9a0e57b4446d5f67d9041bfc0a939191a7606ba93b74512a97d1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-cloud-32-1.noarch.rpm" + }, + "sha256:0d51c1319ee78978e6ea5a49b815c2078b4ffd4d575e98c70e54ca01c3390eb8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-8.2p1-2.fc32.x86_64.rpm" + }, + "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.x86_64.rpm" + }, + "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-3.0-3.fc32.x86_64.rpm" + }, + "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-7.fc32.x86_64.rpm" + }, + "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-2.04-12.fc32.x86_64.rpm" + }, + "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/filesystem-3.14-2.fc32.x86_64.rpm" + }, + "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cpio-2.13-4.fc32.x86_64.rpm" + }, + "sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.31-2.fc32.x86_64.rpm" + }, + "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gpgme-1.13.1-6.fc32.x86_64.rpm" + }, + "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-utils-3.0-3.fc32.x86_64.rpm" + }, + "sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/passwd-0.80-8.fc32.x86_64.rpm" + }, + "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pigz-2.4-6.fc32.x86_64.rpm" + }, + "sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-policycoreutils-3.0-2.fc32.noarch.rpm" + }, + "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-whence-20200316-106.fc32.noarch.rpm" + }, + "sha256:16702883a79532a400d7304146cdb47b0599983b9fb48ab918ef9fa1ce0be394": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtalloc-2.3.1-2.fc32.x86_64.rpm" + }, + "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gmp-6.1.2-13.fc32.x86_64.rpm" + }, + "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libblkid-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/diffutils-3.7-4.fc32.x86_64.rpm" + }, + "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.x86_64.rpm" + }, + "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libksba-1.3.5-11.fc32.x86_64.rpm" + }, + "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-2.26-7.fc32.x86_64.rpm" + }, + "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-5.2.5-1.fc32.x86_64.rpm" + }, + "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmnl-1.0.4-11.fc32.x86_64.rpm" + }, + "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-245.4-1.fc32.x86_64.rpm" + }, + "sha256:1e1e9900e9d3a2b8eb6684060672526948df2cb9f751e7d72cb4fa5bffe71747": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cloud-init-19.4-2.fc32.noarch.rpm" + }, + "sha256:1e655f02895f6a87f9be5793065570b57e623cbf15516094df62e1f5626d4158": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyrsistent-0.15.7-2.fc32.x86_64.rpm" + }, + "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-32-1.noarch.rpm" + }, + "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libidn2-2.3.0-2.fc32.x86_64.rpm" + }, + "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-broker-22-1.fc32.x86_64.rpm" + }, + "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-repos-32-1.noarch.rpm" + }, + "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm" + }, + "sha256:24520e03276e0d850169efc9d83b12a9a01eee5d7202dadca12d2e0a8b7352ba": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.31-2.fc32.x86_64.rpm" + }, + "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsecret-0.20.2-2.fc32.x86_64.rpm" + }, + "sha256:25ae9056f75df4efff0d17d916e7c3889c421368613acec7f1c4119bd17eac13": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.24-1.fc32.x86_64.rpm" + }, + "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm" + }, + "sha256:265dee550073120d51e4c94d3d039e5efdee73a0ae1b1faf2b92de0dad1f58fa": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-common-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-plugins-core-4.0.14-1.fc32.noarch.rpm" + }, + "sha256:26cca773f1f258105f0f825a8e0faebcaa183655b5d91cd972afbe791b586478": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-44.fc32.x86_64.rpm" + }, + "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libss-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:280b880de2f5c6bbd8e000c63dff495533925893ef02cc599222cdb3c7586a22": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mtools-4.0.24-1.fc32.x86_64.rpm" + }, + "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-5.38-2.fc32.x86_64.rpm" + }, + "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/unbound-libs-1.9.6-2.fc32.x86_64.rpm" + }, + "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsepol-3.0-3.fc32.x86_64.rpm" + }, + "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mpfr-4.0.2-3.fc32.x86_64.rpm" + }, + "sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/less-551-3.fc32.x86_64.rpm" + }, + "sha256:2bcf87d3ecdecab92bc2aacf2f1ec50aced0ed2958001cd8b297c80612edeb60": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/console-login-helper-messages-issuegen-0.17-2.fc32.noarch.rpm" + }, + "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tar-1.32-4.fc32.x86_64.rpm" + }, + "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm" + }, + "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-0.9.3-2.fc32.x86_64.rpm" + }, + "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-udev-245.4-1.fc32.x86_64.rpm" + }, + "sha256:342bdf0143d9145f8846e1b5c3401685e0d1274b66df39ac8cbfb78013313861": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-1.22.10-1.fc32.x86_64.rpm" + }, + "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-0.20.1-4.fc32.x86_64.rpm" + }, + "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.x86_64.rpm" + }, + "sha256:36778f8a4fa111c4f796bbea8fd52f7b9708de8f4351070faa30bc985db59885": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtdb-1.4.3-2.fc32.x86_64.rpm" + }, + "sha256:3882823d0eb18e0e8146584f4a32a4801961f6fdc09075607746317eba3265be": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-urllib3-1.25.7-3.fc32.noarch.rpm" + }, + "sha256:391faab010ca30610a14e0b3d54fbc0331be39bc831086fb877f8021fe4b171f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-oauthlib-3.0.2-5.fc32.noarch.rpm" + }, + "sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/chrony-3.5-8.fc32.x86_64.rpm" + }, + "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64.rpm" + }, + "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm" + }, + "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/npth-1.6-4.fc32.x86_64.rpm" + }, + "sha256:3c3fb1ca768ecd6ae7905a09cd85b9f67e9f08c46d18779520fb4b29476865c7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-nfs-idmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm" + }, + "sha256:3ee53d0dba5bbfd3bbb2ae4b54e3ebdfa122e1cf120e17ff9c4c35674269e5ad": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-kcm-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.x86_64.rpm" + }, + "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm" + }, + "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-27-1.fc32.x86_64.rpm" + }, + "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-40.fc32.x86_64.rpm" + }, + "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcom_err-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-2.fc32.x86_64.rpm" + }, + "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.x86_64.rpm" + }, + "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/os-prober-1.77-4.fc32.x86_64.rpm" + }, + "sha256:46407b730b272223b8b64d12df0725af571b4a5c5ab89b9f41e12a49e07c6e6b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/c-ares-1.15.0-5.fc32.x86_64.rpm" + }, + "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-4.fc32.x86_64.rpm" + }, + "sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qemu-img-4.2.0-7.fc32.x86_64.rpm" + }, + "sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-config-generic-050-26.git20200316.fc32.x86_64.rpm" + }, + "sha256:4860a733ca3f22089c6c283cbdcf53123a702d60b5bffdd4fe9d76826f91139a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-prettytable-0.7.2-22.fc32.noarch.rpm" + }, + "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dhcp-common-4.4.2-5.b1.fc32.noarch.rpm" + }, + "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcc-10.0.1-0.11.fc32.x86_64.rpm" + }, + "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm" + }, + "sha256:4b9da0cedada16eb80a2d66b86aa62c9b026501e13a3e947a5a03a06f41d9dbb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/parted-3.3-3.fc32.x86_64.rpm" + }, + "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pam-1.3.1-24.fc32.x86_64.rpm" + }, + "sha256:4c9d77d63ddc7dda0e018fc1c97d46025794e336e58d838a631fcc130dfa3b9b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jsonpatch-1.21-11.fc32.noarch.rpm" + }, + "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shadow-utils-4.8.1-2.fc32.x86_64.rpm" + }, + "sha256:4e066ace8364aba9311fa74f4a87c21f98091bc1af5a6a4daa06441469234041": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/syslinux-extlinux-nonlinux-6.04-0.13.fc32.noarch.rpm" + }, + "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.x86_64.rpm" + }, + "sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libndp-1.7-5.fc32.x86_64.rpm" + }, + "sha256:4fca21cfdcbed052e3e9e1eff74c22fb8ffb1fbbeb63e87e2aa540e43a8c0d09": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/v/vim-minimal-8.2.525-1.fc32.x86_64.rpm" + }, + "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-unbound-1.9.6-2.fc32.x86_64.rpm" + }, + "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-common-8.32-3.fc32.1.x86_64.rpm" + }, + "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-9.fc32.x86_64.rpm" + }, + "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gzip-1.10-2.fc32.x86_64.rpm" + }, + "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsemanage-3.0-3.fc32.x86_64.rpm" + }, + "sha256:55bafcdf9c31b1456af3bf584bfe7ac745a03f4decd17197ea97b498d68b3b82": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libsemanage-3.0-3.fc32.x86_64.rpm" + }, + "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-libs-27-1.fc32.x86_64.rpm" + }, + "sha256:5719dd2fb399cadec08b4ac41c794239d2a2de2f012faeb970ab90a07bba0084": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-babel-2.8.0-2.fc32.noarch.rpm" + }, + "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-plugins-core-4.0.14-1.fc32.noarch.rpm" + }, + "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libassuan-2.5.3-3.fc32.x86_64.rpm" + }, + "sha256:599549d72d26b48c45156585a5698898c853e56469142e202d3749b781428465": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-20200316-106.fc32.noarch.rpm" + }, + "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm" + }, + "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-3.fc32.x86_64.rpm" + }, + "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:60589342d58922ba061ac8df7d753a7e7e75162c97ab086739e9d33fbf289091": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmaxminddb-1.3.2-2.fc32.x86_64.rpm" + }, + "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm" + }, + "sha256:61c51596cc97f35177efe8dc5e2ca52d8fd528570f33c184497f419259b73c90": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-idna-2.8-6.fc32.noarch.rpm" + }, + "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.x86_64.rpm" + }, + "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcroco-0.6.13-3.fc32.x86_64.rpm" + }, + "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mkpasswd-5.5.6-1.fc32.x86_64.rpm" + }, + "sha256:645f82cf62da25742cab5e8ffd1f764301b84ab19710d9f3fb3aff1cb57ffdc6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jinja2-2.11.1-1.fc32.noarch.rpm" + }, + "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libattr-2.4.48-8.fc32.x86_64.rpm" + }, + "sha256:6615aae3def0c49910e43e2d69f7ae8852694953dceb4b6235b5cf4099296d70": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jsonpointer-1.10-19.fc32.noarch.rpm" + }, + "sha256:66bb5b2e99d2c74b82943fe61fe9b9a3674350b0242f69a6854ec9718dcf5e07": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-10.34-9.fc32.x86_64.rpm" + }, + "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm" + }, + "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-5.3.28-40.fc32.x86_64.rpm" + }, + "sha256:6890a9545194ad6cf1b0c58e5273132171a9ced9cb665a1442aa62b6b6d3d2ea": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jsonschema-3.2.0-2.fc32.noarch.rpm" + }, + "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-font-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:695ef8ae55ed6a165a3633b3c0d75b320879246386e6df4539be9286f5176cc5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_autofs-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:699c1a3ff311bbaa2380c085fb4f516aa08be474bed02bcd1569d0bbf5b22d07": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-client-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.x86_64.rpm" + }, + "sha256:6a3282927f525629bc0aaf4090e108d33b0709d3d5b35bc442000c2837e7b9b4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iputils-20190515-5.fc32.x86_64.rpm" + }, + "sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dbus-1.2.16-1.fc32.x86_64.rpm" + }, + "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-10.fc32.x86_64.rpm" + }, + "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/curl-7.69.1-1.fc32.x86_64.rpm" + }, + "sha256:6f5f53b66f7c3bf6958f6f163788583265ff0360188620c3b0f7ddedeac3d1f4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setools-4.3.0-1.fc32.x86_64.rpm" + }, + "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tss2-1331-4.fc32.x86_64.rpm" + }, + "sha256:6fc1181ed798617668f195579acfcf8fb212513a776f376eecfb3d086c66b2d9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libref_array-0.1.5-44.fc32.x86_64.rpm" + }, + "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm" + }, + "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glib2-2.64.1-1.fc32.x86_64.rpm" + }, + "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-8.32-3.fc32.1.x86_64.rpm" + }, + "sha256:703fb5ca1651bb72d8ab58576ce3d78c9479cbb2e78ff8666ae3a3d1cd9bb0da": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/checkpolicy-3.0-3.fc32.x86_64.rpm" + }, + "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/acl-2.2.53-5.fc32.x86_64.rpm" + }, + "sha256:7124f9fedc862e3bab80f05b804b6c9580603ce3155727e888646d4d4f5ddc50": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-cffi-1.14.0-1.fc32.x86_64.rpm" + }, + "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm" + }, + "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libusbx-1.0.23-1.fc32.x86_64.rpm" + }, + "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm" + }, + "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-pam-245.4-1.fc32.x86_64.rpm" + }, + "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grep-3.3-4.fc32.x86_64.rpm" + }, + "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-libs-245.4-1.fc32.x86_64.rpm" + }, + "sha256:78de81d45789ae9bccf6dd82f2b2835ac868f1a584e05d0e9f89f40bb4a202c7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/syslinux-extlinux-6.04-0.13.fc32.x86_64.rpm" + }, + "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bash-5.0.11-2.fc32.x86_64.rpm" + }, + "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libevent-2.1.8-8.fc32.x86_64.rpm" + }, + "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-4.4.16-1.fc32.x86_64.rpm" + }, + "sha256:7c7eff31251dedcc3285a8b08c1b18f7fd9ee2e07dff86ad090f45a81e19e85e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-pkla-compat-0.1-16.fc32.x86_64.rpm" + }, + "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libargon2-20171227-4.fc32.x86_64.rpm" + }, + "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm" + }, + "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pinentry-1.1.0-7.fc32.x86_64.rpm" + }, + "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcurl-7.69.1-1.fc32.x86_64.rpm" + }, + "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.x86_64.rpm" + }, + "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-2.04-12.fc32.x86_64.rpm" + }, + "sha256:808e7209893298d11ac27f148c1b3d1a2b28e303e7930b43659a08dc0f660ac4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/groff-base-1.22.3-21.fc32.x86_64.rpm" + }, + "sha256:80cf220a3314f965c088e03d2b750426767db0b36b6b7c5e8059b9217ff4de6d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mozjs60-60.9.0-5.fc32.x86_64.rpm" + }, + "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:81b6181b947d50e0a1ea681298417e552421d6714900d07a34dc25899e5c9f60": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-configobj-5.0.6-20.fc32.noarch.rpm" + }, + "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/geolite2-city-20191217-2.fc32.noarch.rpm" + }, + "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/which-2.21-19.fc32.x86_64.rpm" + }, + "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuuid-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.x86_64.rpm" + }, + "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-libs-5.2.5-1.fc32.x86_64.rpm" + }, + "sha256:85be4f8732fed73e473ea61635b582ecd0e46709a7c2c3c1a8f25d0709041780": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/console-login-helper-messages-motdgen-0.17-2.fc32.noarch.rpm" + }, + "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-2.9.6-22.fc32.x86_64.rpm" + }, + "sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-5.5.0-1.fc32.x86_64.rpm" + }, + "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libffi-3.1-24.fc32.x86_64.rpm" + }, + "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fonts-filesystem-2.0.3-1.fc32.noarch.rpm" + }, + "sha256:87f6173e57d5d24c601047f747dfcf90dedc1d05250bfc6f06567d8ca35f895b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/console-login-helper-messages-profile-0.17-2.fc32.noarch.rpm" + }, + "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.x86_64.rpm" + }, + "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libarchive-3.4.2-1.fc32.x86_64.rpm" + }, + "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/popt-1.16-19.fc32.x86_64.rpm" + }, + "sha256:8b148415fb6a583ef131d0ddff44f3209c30d0299fde7b20cd3ea385590927c1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-clients-8.2p1-2.fc32.x86_64.rpm" + }, + "sha256:8c047278ce11e7ba7169a9c9537c3c6544f52c7eee8754179acd839ed59c028f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dhcp-client-4.4.2-5.b1.fc32.x86_64.rpm" + }, + "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-3.0-2.fc32.x86_64.rpm" + }, + "sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnl3-3.5.0-2.fc32.x86_64.rpm" + }, + "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/expat-2.2.8-2.fc32.x86_64.rpm" + }, + "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:907393755387a351806ec2afff376e7491f177116caadd12f07d0fcbed796750": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-8.fc32.x86_64.rpm" + }, + "sha256:924367aa63693da4660dcb806fbf52b3bcb7c4d12b40c4b4ba6329079936d073": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/net-tools-2.0-0.56.20160912git.fc32.x86_64.rpm" + }, + "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm" + }, + "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre-8.44-1.fc32.x86_64.rpm" + }, + "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-5.fc32.noarch.rpm" + }, + "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsigsegv-2.11-10.fc32.x86_64.rpm" + }, + "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfdisk-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libzstd-1.4.4-2.fc32.x86_64.rpm" + }, + "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.x86_64.rpm" + }, + "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm" + }, + "sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/jansson-2.12-5.fc32.x86_64.rpm" + }, + "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.x86_64.rpm" + }, + "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-050-26.git20200316.fc32.x86_64.rpm" + }, + "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/util-linux-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libs-0.179-1.fc32.x86_64.rpm" + }, + "sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libedit-3.1-32.20191231cvs.fc32.x86_64.rpm" + }, + "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm" + }, + "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgpg-error-1.36-3.fc32.x86_64.rpm" + }, + "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libyaml-0.2.2-3.fc32.x86_64.rpm" + }, + "sha256:9d4691918d7add910e8c03d61cccda0316b62d77b30ac2e502cf2e55289d1823": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcollection-0.7.0-44.fc32.x86_64.rpm" + }, + "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnutls-3.6.13-1.fc32.x86_64.rpm" + }, + "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-6.fc32.x86_64.rpm" + }, + "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpwquality-1.4.2-2.fc32.x86_64.rpm" + }, + "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-2.2.0-1.fc32.x86_64.rpm" + }, + "sha256:a0b87b2dc3c5f536e94d6a4f3563a621dfbc067a62c3d1fe69bdb70c3cecec57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pycparser-2.19-2.fc32.noarch.rpm" + }, + "sha256:a107b3d3790a5bcfdc28f6f4718969039b103a681a2647f3cbcb82cf92e97acb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyserial-3.4-7.fc32.noarch.rpm" + }, + "sha256:a1613e90865db93fb578b8ee1a4ee40bd396c6c9f2fb2a14757acacecb9f23e8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-core-5.6.6-300.fc32.x86_64.rpm" + }, + "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-common-32-1.noarch.rpm" + }, + "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shared-mime-info-1.15-3.fc32.x86_64.rpm" + }, + "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm" + }, + "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm" + }, + "sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libaio-0.3.111-7.fc32.x86_64.rpm" + }, + "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm" + }, + "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxml2-2.9.10-3.fc32.x86_64.rpm" + }, + "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnghttp2-1.40.0-2.fc32.x86_64.rpm" + }, + "sha256:a9420698e38d93b375f3f97ef5b196f61d006862f80642d69cc3c3fd694589fc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/console-login-helper-messages-0.17-2.fc32.noarch.rpm" + }, + "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/librepo-1.11.1-4.fc32.x86_64.rpm" + }, + "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbrotli-1.0.7-10.fc32.x86_64.rpm" + }, + "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.x86_64.rpm" + }, + "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openldap-2.4.47-4.fc32.x86_64.rpm" + }, + "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.x86_64.rpm" + }, + "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm" + }, + "sha256:af66820023c984d8b981ecac715d0c2daec1f89dcb69bed76ddf58b0ee80c1b1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm" + }, + "sha256:b1111e77a5fdbacaa04acc90d3844706158bc5892173862928705620b8910adb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm" + }, + "sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcbor-0.5.0-7.fc32.x86_64.rpm" + }, + "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/y/yum-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-6.1-15.20191109.fc32.x86_64.rpm" + }, + "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpcap-1.9.1-3.fc32.x86_64.rpm" + }, + "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-4.fc32.x86_64.rpm" + }, + "sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuser-0.62-24.fc32.x86_64.rpm" + }, + "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-ng-0.7.10-2.fc32.x86_64.rpm" + }, + "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-5.fc32.x86_64.rpm" + }, + "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-3.8.2-2.fc32.x86_64.rpm" + }, + "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm" + }, + "sha256:bb154a90c968150172036d86f0c9fc2a24b5799718bc4d835cb10d0758890c67": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfsidmap-2.4.3-0.fc32.x86_64.rpm" + }, + "sha256:bb8942d19e594c0f4ca181bd58796bd5d3cb681c3f17cd2ec2654c3afe28e39a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-cryptography-2.8-3.fc32.x86_64.rpm" + }, + "sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/initscripts-10.02-3.fc32.x86_64.rpm" + }, + "sha256:bcb07748c8688c788ec69c3a33c0abd1bb3a496b9aa09b5729265670bc7ba0eb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-attrs-19.3.0-2.fc32.noarch.rpm" + }, + "sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/psmisc-23.3-3.fc32.x86_64.rpm" + }, + "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsolv-0.7.11-2.fc32.x86_64.rpm" + }, + "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.x86_64.rpm" + }, + "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nettle-3.5.1-5.fc32.x86_64.rpm" + }, + "sha256:c05d01195aa4ca0f4a471574cc7ece8a0f4daf437935d845cd0745e2512cb9c9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-markupsafe-1.1.1-5.fc32.x86_64.rpm" + }, + "sha256:c0a0c6f3e30c20815496be8de00f9596737e2693feb85f7484f200ffa9174530": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpipeline-1.5.2-2.fc32.x86_64.rpm" + }, + "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zlib-1.2.11-21.fc32.x86_64.rpm" + }, + "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-1.02.171-1.fc32.x86_64.rpm" + }, + "sha256:c13c7da4b097499576861cb12fdd02e520af69b5f23d615b3968c54f40f8fd47": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyyaml-5.3.1-1.fc32.x86_64.rpm" + }, + "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.x86_64.rpm" + }, + "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.x86_64.rpm" + }, + "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.04-12.fc32.noarch.rpm" + }, + "sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dosfstools-4.1-10.fc32.x86_64.rpm" + }, + "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/alternatives-1.11-6.fc32.x86_64.rpm" + }, + "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:c93df175a0a4989aaaeb170406d8ff13a2cd93a5fc52ad33468245fea2044a86": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pytz-2019.3-2.fc32.noarch.rpm" + }, + "sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-26.fc32.x86_64.rpm" + }, + "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rootfiles-8.1-27.fc32.noarch.rpm" + }, + "sha256:ca540fb7088948fdfe6e6b52a5e2b6a74d2d17136857da9f3f4a1ee29c8eb74b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdhash-0.5.0-44.fc32.x86_64.rpm" + }, + "sha256:ca80c458fab5bdde0276702f06217d1219085428560af6039aa1c5cf1e58ff3b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/man-db-2.9.0-2.fc32.x86_64.rpm" + }, + "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.16-1.fc32.x86_64.rpm" + }, + "sha256:cbdc61d713e4cbe52b2bece117912da0f1e3782cb3b33caa068e96c854c990be": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grubby-8.40-40.fc32.x86_64.rpm" + }, + "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-2.2.19-1.fc32.x86_64.rpm" + }, + "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-4.fc32.x86_64.rpm" + }, + "sha256:cd16f6ef433d7dc6860b19f3d77b666a03d35361aba78ee09d772575c2f69cc0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libldb-2.1.1-1.fc32.x86_64.rpm" + }, + "sha256:ce1a80b0ba6f09a7e5a188436088dd31d10c5f7b43dbe9c1788f705127c8e6b2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-44.fc32.x86_64.rpm" + }, + "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpsl-0.21.0-4.fc32.x86_64.rpm" + }, + "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm" + }, + "sha256:d0bc781a80be1d1fe204ec6b26255240261d55f6e24a28343572f2221a00533e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jwt-1.7.1-7.fc32.noarch.rpm" + }, + "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gawk-5.0.1-7.fc32.x86_64.rpm" + }, + "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.x86_64.rpm" + }, + "sha256:d1e244b8b5ce7404846e97d96c762c8c18ff6447301f6fc63f50e615029aa7cd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-server-8.2p1-2.fc32.x86_64.rpm" + }, + "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/json-c-0.13.1-9.fc32.x86_64.rpm" + }, + "sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-libs-0.116-7.fc32.x86_64.rpm" + }, + "sha256:d49f0b1c8ecf9bc808ae93e9298a40fbcc124fe67c3bbdd37705b6b5d8cfdd87": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-0.116-7.fc32.x86_64.rpm" + }, + "sha256:d611f0c4252c4c4b893850807748e62cf4d17d72d544ef2744091df3206d8178": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-requests-2.22.0-8.fc32.noarch.rpm" + }, + "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgomp-10.0.1-0.11.fc32.x86_64.rpm" + }, + "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-1.1.1d-7.fc32.x86_64.rpm" + }, + "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-8.fc32.noarch.rpm" + }, + "sha256:dab54013f8316b766c40c71f9c0c2124c1f0c219b417d588b5ba1dccf7d63fd7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtevent-0.10.2-2.fc32.x86_64.rpm" + }, + "sha256:dbcf6ba5f6ab0cdc884572f07427114b8492d453420a80ffd521578a752b8064": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/syslinux-6.04-0.13.fc32.x86_64.rpm" + }, + "sha256:dc2558fdefc439075ebdf57bd9f2f691d6a6f278879713f2e093398dcb62c25a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/syslinux-nonlinux-6.04-0.13.fc32.noarch.rpm" + }, + "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-2.31-2.fc32.x86_64.rpm" + }, + "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsmartcols-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-0.23.20-1.fc32.x86_64.rpm" + }, + "sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/h/hostname-3.23-2.fc32.x86_64.rpm" + }, + "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libseccomp-2.4.2-3.fc32.x86_64.rpm" + }, + "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-libs-5.38-2.fc32.x86_64.rpm" + }, + "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/krb5-libs-1.18-1.fc32.x86_64.rpm" + }, + "sha256:e3175d0dba977f1cff702498ea68cc13134a0f525a869025e2ee3ede987d7867": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xfsprogs-5.4.0-3.fc32.x86_64.rpm" + }, + "sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sudo-1.9.0-0.1.b4.fc32.x86_64.rpm" + }, + "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmount-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:e7b9fd73c260cd22d3a36823530d4f623ea0e16844b900a5677c769afa76341c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-chardet-3.0.4-15.fc32.noarch.rpm" + }, + "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-common-2.31-2.fc32.x86_64.rpm" + }, + "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcomps-0.1.14-4.fc32.x86_64.rpm" + }, + "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.x86_64.rpm" + }, + "sha256:ebbace15f986288bba7681f44a111b14bcc7cae00b7a1faadaa838bd51897357": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfido2-1.3.1-1.fc32.x86_64.rpm" + }, + "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm" + }, + "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libs-3.8.2-2.fc32.x86_64.rpm" + }, + "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.x86_64.rpm" + }, + "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-1.12.16-4.fc32.x86_64.rpm" + }, + "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libverto-0.3.0-9.fc32.x86_64.rpm" + }, + "sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm" + }, + "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.x86_64.rpm" + }, + "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/readline-8.0-4.fc32.x86_64.rpm" + }, + "sha256:f2715fc8a04d33716f40f5b34466e082140df7ff3b7b972c29655d4dfc6e3a72": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-8.fc32.x86_64.rpm" + }, + "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-7.fc32.x86_64.rpm" + }, + "sha256:f391fe0e21e51e7c864f8bce1b5825419f4096023b5b90b3976bbd69d6a4d720": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_certmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libelf-0.179-1.fc32.x86_64.rpm" + }, + "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-libs-1.8.4-7.fc32.x86_64.rpm" + }, + "sha256:f6203a41ed91197bb770a38a101d977f0f56de86ccc5a71cee9c0e198f26bcbc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-ply-3.11-7.fc32.noarch.rpm" + }, + "sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libselinux-3.0-3.fc32.x86_64.rpm" + }, + "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libacl-2.2.53-5.fc32.x86_64.rpm" + }, + "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmodulemd-2.9.1-1.fc32.x86_64.rpm" + }, + "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libutempter-1.1.6-18.fc32.x86_64.rpm" + }, + "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdnf-0.45.0-3.fc32.x86_64.rpm" + }, + "sha256:fa791a4328b4c41b7190d862de921605f266a64abee03b2ea2e8d2b644be307f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pysocks-1.7.1-4.fc32.noarch.rpm" + }, + "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libunistring-0.9.10-7.fc32.x86_64.rpm" + }, + "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kpartx-0.8.2-3.fc32.x86_64.rpm" + }, + "sha256:fd2a2dd726d855f877296227fb351883d647df28b1b0085f525d87df622d49e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.22.10-1.fc32.x86_64.rpm" + }, + "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-4.fc32.x86_64.rpm" + }, + "sha256:fdf652eae6502ff726fc3b532348ebe59dccb16e0629331371ff83e309b259af": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cloud-utils-growpart-0.31-6.fc32.noarch.rpm" + }, + "sha256:fe70d5a1c818367be3a5a7e60cbb379f020f97f63ba3c13ed09740f45a43154a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipcalc-0.4.0-2.fc32.x86_64.rpm" + }, + "sha256:fed6244fce0c0b48933d622dfbb00cf73931b2f746b27675a025a33b591d9820": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libini_config-1.3.1-44.fc32.x86_64.rpm" + }, + "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.x86_64.rpm" + }, + "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sed-4.5-5.fc32.x86_64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "checksum": "sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec", + "check_gpg": true + }, + { + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "checksum": "sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe", + "check_gpg": true + }, + { + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "checksum": "sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4", + "check_gpg": true + }, + { + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "checksum": "sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9", + "check_gpg": true + }, + { + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "checksum": "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b", + "check_gpg": true + }, + { + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts", + "labels": { + "/usr/bin/cp": "system_u:object_r:install_exec_t:s0" + } + } + } + ] + }, + "runner": "org.osbuild.fedora32" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:342bdf0143d9145f8846e1b5c3401685e0d1274b66df39ac8cbfb78013313861", + "check_gpg": true + }, + { + "checksum": "sha256:fd2a2dd726d855f877296227fb351883d647df28b1b0085f525d87df622d49e4", + "check_gpg": true + }, + { + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "checksum": "sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d", + "check_gpg": true + }, + { + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "checksum": "sha256:46407b730b272223b8b64d12df0725af571b4a5c5ab89b9f41e12a49e07c6e6b", + "check_gpg": true + }, + { + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "checksum": "sha256:703fb5ca1651bb72d8ab58576ce3d78c9479cbb2e78ff8666ae3a3d1cd9bb0da", + "check_gpg": true + }, + { + "checksum": "sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57", + "check_gpg": true + }, + { + "checksum": "sha256:1e1e9900e9d3a2b8eb6684060672526948df2cb9f751e7d72cb4fa5bffe71747", + "check_gpg": true + }, + { + "checksum": "sha256:fdf652eae6502ff726fc3b532348ebe59dccb16e0629331371ff83e309b259af", + "check_gpg": true + }, + { + "checksum": "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309", + "check_gpg": true + }, + { + "checksum": "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56", + "check_gpg": true + }, + { + "checksum": "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280", + "check_gpg": true + }, + { + "checksum": "sha256:a9420698e38d93b375f3f97ef5b196f61d006862f80642d69cc3c3fd694589fc", + "check_gpg": true + }, + { + "checksum": "sha256:2bcf87d3ecdecab92bc2aacf2f1ec50aced0ed2958001cd8b297c80612edeb60", + "check_gpg": true + }, + { + "checksum": "sha256:85be4f8732fed73e473ea61635b582ecd0e46709a7c2c3c1a8f25d0709041780", + "check_gpg": true + }, + { + "checksum": "sha256:87f6173e57d5d24c601047f747dfcf90dedc1d05250bfc6f06567d8ca35f895b", + "check_gpg": true + }, + { + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "checksum": "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315", + "check_gpg": true + }, + { + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "checksum": "sha256:8c047278ce11e7ba7169a9c9537c3c6544f52c7eee8754179acd839ed59c028f", + "check_gpg": true + }, + { + "checksum": "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013", + "check_gpg": true + }, + { + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "checksum": "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d", + "check_gpg": true + }, + { + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "checksum": "sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73", + "check_gpg": true + }, + { + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "checksum": "sha256:0c8f8925dacc9a0e57b4446d5f67d9041bfc0a939191a7606ba93b74512a97d1", + "check_gpg": true + }, + { + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "checksum": "sha256:907393755387a351806ec2afff376e7491f177116caadd12f07d0fcbed796750", + "check_gpg": true + }, + { + "checksum": "sha256:f2715fc8a04d33716f40f5b34466e082140df7ff3b7b972c29655d4dfc6e3a72", + "check_gpg": true + }, + { + "checksum": "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012", + "check_gpg": true + }, + { + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "checksum": "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3", + "check_gpg": true + }, + { + "checksum": "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f", + "check_gpg": true + }, + { + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "checksum": "sha256:24520e03276e0d850169efc9d83b12a9a01eee5d7202dadca12d2e0a8b7352ba", + "check_gpg": true + }, + { + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "checksum": "sha256:808e7209893298d11ac27f148c1b3d1a2b28e303e7930b43659a08dc0f660ac4", + "check_gpg": true + }, + { + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "checksum": "sha256:cbdc61d713e4cbe52b2bece117912da0f1e3782cb3b33caa068e96c854c990be", + "check_gpg": true + }, + { + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "checksum": "sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823", + "check_gpg": true + }, + { + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "checksum": "sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339", + "check_gpg": true + }, + { + "checksum": "sha256:fe70d5a1c818367be3a5a7e60cbb379f020f97f63ba3c13ed09740f45a43154a", + "check_gpg": true + }, + { + "checksum": "sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684", + "check_gpg": true + }, + { + "checksum": "sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae", + "check_gpg": true + }, + { + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "checksum": "sha256:6a3282927f525629bc0aaf4090e108d33b0709d3d5b35bc442000c2837e7b9b4", + "check_gpg": true + }, + { + "checksum": "sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8", + "check_gpg": true + }, + { + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "checksum": "sha256:a1613e90865db93fb578b8ee1a4ee40bd396c6c9f2fb2a14757acacecb9f23e8", + "check_gpg": true + }, + { + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "checksum": "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0", + "check_gpg": true + }, + { + "checksum": "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389", + "check_gpg": true + }, + { + "checksum": "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca", + "check_gpg": true + }, + { + "checksum": "sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884", + "check_gpg": true + }, + { + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "checksum": "sha256:26cca773f1f258105f0f825a8e0faebcaa183655b5d91cd972afbe791b586478", + "check_gpg": true + }, + { + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "checksum": "sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5", + "check_gpg": true + }, + { + "checksum": "sha256:9d4691918d7add910e8c03d61cccda0316b62d77b30ac2e502cf2e55289d1823", + "check_gpg": true + }, + { + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "checksum": "sha256:ca540fb7088948fdfe6e6b52a5e2b6a74d2d17136857da9f3f4a1ee29c8eb74b", + "check_gpg": true + }, + { + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "checksum": "sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09", + "check_gpg": true + }, + { + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "checksum": "sha256:ebbace15f986288bba7681f44a111b14bcc7cae00b7a1faadaa838bd51897357", + "check_gpg": true + }, + { + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "checksum": "sha256:fed6244fce0c0b48933d622dfbb00cf73931b2f746b27675a025a33b591d9820", + "check_gpg": true + }, + { + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "checksum": "sha256:cd16f6ef433d7dc6860b19f3d77b666a03d35361aba78ee09d772575c2f69cc0", + "check_gpg": true + }, + { + "checksum": "sha256:60589342d58922ba061ac8df7d753a7e7e75162c97ab086739e9d33fbf289091", + "check_gpg": true + }, + { + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "checksum": "sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f", + "check_gpg": true + }, + { + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "checksum": "sha256:bb154a90c968150172036d86f0c9fc2a24b5799718bc4d835cb10d0758890c67", + "check_gpg": true + }, + { + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "checksum": "sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1", + "check_gpg": true + }, + { + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "checksum": "sha256:ce1a80b0ba6f09a7e5a188436088dd31d10c5f7b43dbe9c1788f705127c8e6b2", + "check_gpg": true + }, + { + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "checksum": "sha256:c0a0c6f3e30c20815496be8de00f9596737e2693feb85f7484f200ffa9174530", + "check_gpg": true + }, + { + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1181ed798617668f195579acfcf8fb212513a776f376eecfb3d086c66b2d9", + "check_gpg": true + }, + { + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "checksum": "sha256:695ef8ae55ed6a165a3633b3c0d75b320879246386e6df4539be9286f5176cc5", + "check_gpg": true + }, + { + "checksum": "sha256:f391fe0e21e51e7c864f8bce1b5825419f4096023b5b90b3976bbd69d6a4d720", + "check_gpg": true + }, + { + "checksum": "sha256:599549d72d26b48c45156585a5698898c853e56469142e202d3749b781428465", + "check_gpg": true + }, + { + "checksum": "sha256:66bb5b2e99d2c74b82943fe61fe9b9a3674350b0242f69a6854ec9718dcf5e07", + "check_gpg": true + }, + { + "checksum": "sha256:af66820023c984d8b981ecac715d0c2daec1f89dcb69bed76ddf58b0ee80c1b1", + "check_gpg": true + }, + { + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "checksum": "sha256:16702883a79532a400d7304146cdb47b0599983b9fb48ab918ef9fa1ce0be394", + "check_gpg": true + }, + { + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "checksum": "sha256:36778f8a4fa111c4f796bbea8fd52f7b9708de8f4351070faa30bc985db59885", + "check_gpg": true + }, + { + "checksum": "sha256:dab54013f8316b766c40c71f9c0c2124c1f0c219b417d588b5ba1dccf7d63fd7", + "check_gpg": true + }, + { + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "checksum": "sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975", + "check_gpg": true + }, + { + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "checksum": "sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467", + "check_gpg": true + }, + { + "checksum": "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4", + "check_gpg": true + }, + { + "checksum": "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9", + "check_gpg": true + }, + { + "checksum": "sha256:25ae9056f75df4efff0d17d916e7c3889c421368613acec7f1c4119bd17eac13", + "check_gpg": true + }, + { + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "checksum": "sha256:ca80c458fab5bdde0276702f06217d1219085428560af6039aa1c5cf1e58ff3b", + "check_gpg": true + }, + { + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "checksum": "sha256:80cf220a3314f965c088e03d2b750426767db0b36b6b7c5e8059b9217ff4de6d", + "check_gpg": true + }, + { + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "checksum": "sha256:280b880de2f5c6bbd8e000c63dff495533925893ef02cc599222cdb3c7586a22", + "check_gpg": true + }, + { + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "checksum": "sha256:924367aa63693da4660dcb806fbf52b3bcb7c4d12b40c4b4ba6329079936d073", + "check_gpg": true + }, + { + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "checksum": "sha256:0d51c1319ee78978e6ea5a49b815c2078b4ffd4d575e98c70e54ca01c3390eb8", + "check_gpg": true + }, + { + "checksum": "sha256:8b148415fb6a583ef131d0ddff44f3209c30d0299fde7b20cd3ea385590927c1", + "check_gpg": true + }, + { + "checksum": "sha256:d1e244b8b5ce7404846e97d96c762c8c18ff6447301f6fc63f50e615029aa7cd", + "check_gpg": true + }, + { + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "checksum": "sha256:4b9da0cedada16eb80a2d66b86aa62c9b026501e13a3e947a5a03a06f41d9dbb", + "check_gpg": true + }, + { + "checksum": "sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719", + "check_gpg": true + }, + { + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "checksum": "sha256:d49f0b1c8ecf9bc808ae93e9298a40fbcc124fe67c3bbdd37705b6b5d8cfdd87", + "check_gpg": true + }, + { + "checksum": "sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386", + "check_gpg": true + }, + { + "checksum": "sha256:7c7eff31251dedcc3285a8b08c1b18f7fd9ee2e07dff86ad090f45a81e19e85e", + "check_gpg": true + }, + { + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "checksum": "sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444", + "check_gpg": true + }, + { + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "checksum": "sha256:bcb07748c8688c788ec69c3a33c0abd1bb3a496b9aa09b5729265670bc7ba0eb", + "check_gpg": true + }, + { + "checksum": "sha256:b1111e77a5fdbacaa04acc90d3844706158bc5892173862928705620b8910adb", + "check_gpg": true + }, + { + "checksum": "sha256:5719dd2fb399cadec08b4ac41c794239d2a2de2f012faeb970ab90a07bba0084", + "check_gpg": true + }, + { + "checksum": "sha256:7124f9fedc862e3bab80f05b804b6c9580603ce3155727e888646d4d4f5ddc50", + "check_gpg": true + }, + { + "checksum": "sha256:e7b9fd73c260cd22d3a36823530d4f623ea0e16844b900a5677c769afa76341c", + "check_gpg": true + }, + { + "checksum": "sha256:81b6181b947d50e0a1ea681298417e552421d6714900d07a34dc25899e5c9f60", + "check_gpg": true + }, + { + "checksum": "sha256:bb8942d19e594c0f4ca181bd58796bd5d3cb681c3f17cd2ec2654c3afe28e39a", + "check_gpg": true + }, + { + "checksum": "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862", + "check_gpg": true + }, + { + "checksum": "sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070", + "check_gpg": true + }, + { + "checksum": "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4", + "check_gpg": true + }, + { + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "checksum": "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576", + "check_gpg": true + }, + { + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "checksum": "sha256:61c51596cc97f35177efe8dc5e2ca52d8fd528570f33c184497f419259b73c90", + "check_gpg": true + }, + { + "checksum": "sha256:645f82cf62da25742cab5e8ffd1f764301b84ab19710d9f3fb3aff1cb57ffdc6", + "check_gpg": true + }, + { + "checksum": "sha256:4c9d77d63ddc7dda0e018fc1c97d46025794e336e58d838a631fcc130dfa3b9b", + "check_gpg": true + }, + { + "checksum": "sha256:6615aae3def0c49910e43e2d69f7ae8852694953dceb4b6235b5cf4099296d70", + "check_gpg": true + }, + { + "checksum": "sha256:6890a9545194ad6cf1b0c58e5273132171a9ced9cb665a1442aa62b6b6d3d2ea", + "check_gpg": true + }, + { + "checksum": "sha256:d0bc781a80be1d1fe204ec6b26255240261d55f6e24a28343572f2221a00533e", + "check_gpg": true + }, + { + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "checksum": "sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124", + "check_gpg": true + }, + { + "checksum": "sha256:55bafcdf9c31b1456af3bf584bfe7ac745a03f4decd17197ea97b498d68b3b82", + "check_gpg": true + }, + { + "checksum": "sha256:c05d01195aa4ca0f4a471574cc7ece8a0f4daf437935d845cd0745e2512cb9c9", + "check_gpg": true + }, + { + "checksum": "sha256:391faab010ca30610a14e0b3d54fbc0331be39bc831086fb877f8021fe4b171f", + "check_gpg": true + }, + { + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "checksum": "sha256:f6203a41ed91197bb770a38a101d977f0f56de86ccc5a71cee9c0e198f26bcbc", + "check_gpg": true + }, + { + "checksum": "sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2", + "check_gpg": true + }, + { + "checksum": "sha256:4860a733ca3f22089c6c283cbdcf53123a702d60b5bffdd4fe9d76826f91139a", + "check_gpg": true + }, + { + "checksum": "sha256:a0b87b2dc3c5f536e94d6a4f3563a621dfbc067a62c3d1fe69bdb70c3cecec57", + "check_gpg": true + }, + { + "checksum": "sha256:1e655f02895f6a87f9be5793065570b57e623cbf15516094df62e1f5626d4158", + "check_gpg": true + }, + { + "checksum": "sha256:a107b3d3790a5bcfdc28f6f4718969039b103a681a2647f3cbcb82cf92e97acb", + "check_gpg": true + }, + { + "checksum": "sha256:fa791a4328b4c41b7190d862de921605f266a64abee03b2ea2e8d2b644be307f", + "check_gpg": true + }, + { + "checksum": "sha256:c93df175a0a4989aaaeb170406d8ff13a2cd93a5fc52ad33468245fea2044a86", + "check_gpg": true + }, + { + "checksum": "sha256:c13c7da4b097499576861cb12fdd02e520af69b5f23d615b3968c54f40f8fd47", + "check_gpg": true + }, + { + "checksum": "sha256:d611f0c4252c4c4b893850807748e62cf4d17d72d544ef2744091df3206d8178", + "check_gpg": true + }, + { + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "checksum": "sha256:6f5f53b66f7c3bf6958f6f163788583265ff0360188620c3b0f7ddedeac3d1f4", + "check_gpg": true + }, + { + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "checksum": "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f", + "check_gpg": true + }, + { + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "checksum": "sha256:3882823d0eb18e0e8146584f4a32a4801961f6fdc09075607746317eba3265be", + "check_gpg": true + }, + { + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "checksum": "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58", + "check_gpg": true + }, + { + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "checksum": "sha256:024dd8a75eb5472692d0291292d25939b97a0295e5ab0958dcd22600d392eaae", + "check_gpg": true + }, + { + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "checksum": "sha256:699c1a3ff311bbaa2380c085fb4f516aa08be474bed02bcd1569d0bbf5b22d07", + "check_gpg": true + }, + { + "checksum": "sha256:265dee550073120d51e4c94d3d039e5efdee73a0ae1b1faf2b92de0dad1f58fa", + "check_gpg": true + }, + { + "checksum": "sha256:3ee53d0dba5bbfd3bbb2ae4b54e3ebdfa122e1cf120e17ff9c4c35674269e5ad", + "check_gpg": true + }, + { + "checksum": "sha256:3c3fb1ca768ecd6ae7905a09cd85b9f67e9f08c46d18779520fb4b29476865c7", + "check_gpg": true + }, + { + "checksum": "sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b", + "check_gpg": true + }, + { + "checksum": "sha256:dbcf6ba5f6ab0cdc884572f07427114b8492d453420a80ffd521578a752b8064", + "check_gpg": true + }, + { + "checksum": "sha256:78de81d45789ae9bccf6dd82f2b2835ac868f1a584e05d0e9f89f40bb4a202c7", + "check_gpg": true + }, + { + "checksum": "sha256:4e066ace8364aba9311fa74f4a87c21f98091bc1af5a6a4daa06441469234041", + "check_gpg": true + }, + { + "checksum": "sha256:dc2558fdefc439075ebdf57bd9f2f691d6a6f278879713f2e093398dcb62c25a", + "check_gpg": true + }, + { + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "checksum": "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b", + "check_gpg": true + }, + { + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "checksum": "sha256:4fca21cfdcbed052e3e9e1eff74c22fb8ffb1fbbeb63e87e2aa540e43a8c0d09", + "check_gpg": true + }, + { + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "checksum": "sha256:e3175d0dba977f1cff702498ea68cc13134a0f525a869025e2ee3ede987d7867", + "check_gpg": true + }, + { + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "checksum": "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf", + "check_gpg": true + }, + { + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.keymap", + "options": { + "keymap": "dvorak" + } + }, + { + "name": "org.osbuild.timezone", + "options": { + "zone": "Europe/London" + } + }, + { + "name": "org.osbuild.chrony", + "options": { + "timeservers": [ + "time.example.com" + ] + } + }, + { + "name": "org.osbuild.groups", + "options": { + "groups": { + "group1": { + "name": "group1", + "gid": 1030 + }, + "group2": { + "name": "group2", + "gid": 1050 + } + } + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "user1": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + }, + "user2": { + "uid": 1020, + "gid": 1050, + "groups": [ + "group1" + ], + "description": "description 2", + "home": "/home/home2", + "shell": "/bin/sh", + "password": "$6$BhyxFBgrEFh0VrPJ$MllG8auiU26x2pmzL4.1maHzPHrA.4gTdCvlATFp8HJU9UPee4zCS9BVl2HOzKaUYD/zEm8r/OF05F2icWB0K/", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "vfs_type": "ext4", + "path": "/", + "options": "defaults", + "freq": 1, + "passno": 1 + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "kernel_opts": "ro biosdevname=0 net.ifnames=0 debug", + "legacy": "i386-pc" + } + }, + { + "name": "org.osbuild.systemd", + "options": { + "enabled_services": [ + "cloud-init.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "sshd.socket" + ], + "disabled_services": [ + "bluetooth.service" + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "qcow2", + "filename": "disk.qcow2", + "size": 2147483648, + "ptuuid": "0x14fc63d2", + "pttype": "mbr", + "partitions": [ + { + "start": 2048, + "bootable": true, + "filesystem": { + "type": "ext4", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/acl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/alternatives-1.11-6.fc32.x86_64.rpm", + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm", + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bash-5.0.11-2.fc32.x86_64.rpm", + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.x86_64.rpm", + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2020.2.40", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm", + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-common-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.13", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cpio-2.13-4.fc32.x86_64.rpm", + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.x86_64.rpm", + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/curl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.x86_64.rpm", + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "22", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-broker-22-1.fc32.x86_64.rpm", + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm", + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-5.fc32.x86_64.rpm", + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/diffutils-3.7-4.fc32.x86_64.rpm", + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dosfstools-4.1-10.fc32.x86_64.rpm", + "checksum": "sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-050-26.git20200316.fc32.x86_64.rpm", + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm", + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libelf-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libs-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/expat-2.2.8-2.fc32.x86_64.rpm", + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm", + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-32-1.noarch.rpm", + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-common-32-1.noarch.rpm", + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-repos-32-1.noarch.rpm", + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-libs-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.14", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/filesystem-3.14-2.fc32.x86_64.rpm", + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.7.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/findutils-4.7.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-9.fc32.x86_64.rpm", + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gawk-5.0.1-7.fc32.x86_64.rpm", + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.x86_64.rpm", + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.64.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glib2-2.64.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-common-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gmp-6.1.2-13.fc32.x86_64.rpm", + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.13", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnutls-3.6.13-1.fc32.x86_64.rpm", + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gpgme-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grep-3.3-4.fc32.x86_64.rpm", + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gzip-1.10-2.fc32.x86_64.rpm", + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.x86_64.rpm", + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-libs-1.8.4-7.fc32.x86_64.rpm", + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/json-c-0.13.1-9.fc32.x86_64.rpm", + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-2.2.0-1.fc32.x86_64.rpm", + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-27-1.fc32.x86_64.rpm", + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-libs-27-1.fc32.x86_64.rpm", + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kpartx-0.8.2-3.fc32.x86_64.rpm", + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/krb5-libs-1.18-1.fc32.x86_64.rpm", + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libacl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.111", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libaio-0.3.111-7.fc32.x86_64.rpm", + "checksum": "sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.2", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libarchive-3.4.2-1.fc32.x86_64.rpm", + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libargon2-20171227-4.fc32.x86_64.rpm", + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libassuan-2.5.3-3.fc32.x86_64.rpm", + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libattr-2.4.48-8.fc32.x86_64.rpm", + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libblkid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "name": "libbrotli", + "epoch": 0, + "version": "1.0.7", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbrotli-1.0.7-10.fc32.x86_64.rpm", + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-2.26-7.fc32.x86_64.rpm", + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-ng-0.7.10-2.fc32.x86_64.rpm", + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcom_err-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcroco-0.6.13-3.fc32.x86_64.rpm", + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcurl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libevent-2.1.8-8.fc32.x86_64.rpm", + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfdisk-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libffi-3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcc-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-3.fc32.x86_64.rpm", + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgomp-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgpg-error-1.36-3.fc32.x86_64.rpm", + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libidn2-2.3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libksba-1.3.5-11.fc32.x86_64.rpm", + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-10.fc32.x86_64.rpm", + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmnl-1.0.4-11.fc32.x86_64.rpm", + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmodulemd-2.9.1-1.fc32.x86_64.rpm", + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmount-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.x86_64.rpm", + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "17.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.x86_64.rpm", + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.40.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnghttp2-1.40.0-2.fc32.x86_64.rpm", + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "6.20180605git4a062cf.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64.rpm", + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpcap-1.9.1-3.fc32.x86_64.rpm", + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpsl-0.21.0-4.fc32.x86_64.rpm", + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpwquality-1.4.2-2.fc32.x86_64.rpm", + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.11.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/librepo-1.11.1-4.fc32.x86_64.rpm", + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.12.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm", + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libseccomp-2.4.2-3.fc32.x86_64.rpm", + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.20.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsecret-0.20.2-2.fc32.x86_64.rpm", + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-utils-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsemanage-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsepol-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsigsegv-2.11-10.fc32.x86_64.rpm", + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsmartcols-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsolv-0.7.11-2.fc32.x86_64.rpm", + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libss-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-0.9.3-2.fc32.x86_64.rpm", + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm", + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.16.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtasn1-4.16.0-1.fc32.x86_64.rpm", + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.2.5", + "release": "1.rc2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.x86_64.rpm", + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libunistring-0.9.10-7.fc32.x86_64.rpm", + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libusbx-1.0.23-1.fc32.x86_64.rpm", + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "18.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libutempter-1.1.6-18.fc32.x86_64.rpm", + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuuid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libverto-0.3.0-9.fc32.x86_64.rpm", + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.10.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.x86_64.rpm", + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.10", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxml2-2.9.10-3.fc32.x86_64.rpm", + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libyaml-0.2.2-3.fc32.x86_64.rpm", + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libzstd-1.4.4-2.fc32.x86_64.rpm", + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-7.fc32.x86_64.rpm", + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-2.fc32.x86_64.rpm", + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mkpasswd-5.5.6-1.fc32.x86_64.rpm", + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "4.0.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mpfr-4.0.2-3.fc32.x86_64.rpm", + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm", + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nettle-3.5.1-5.fc32.x86_64.rpm", + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/npth-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openldap-2.4.47-4.fc32.x86_64.rpm", + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.x86_64.rpm", + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/os-prober-1.77-4.fc32.x86_64.rpm", + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pam-1.3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.44", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre-8.44-1.fc32.x86_64.rpm", + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-10.34-9.fc32.x86_64.rpm", + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "name": "pcre2-syntax", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm", + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pigz-2.4-6.fc32.x86_64.rpm", + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pinentry-1.1.0-7.fc32.x86_64.rpm", + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/popt-1.16-19.fc32.x86_64.rpm", + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-7.fc32.x86_64.rpm", + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm", + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libs-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-unbound-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "name": "qemu-img", + "epoch": 2, + "version": "4.2.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qemu-img-4.2.0-7.fc32.x86_64.rpm", + "checksum": "sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.x86_64.rpm", + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/readline-8.0-4.fc32.x86_64.rpm", + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sed-4.5-5.fc32.x86_64.rpm", + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.6", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm", + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.8.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shadow-utils-4.8.1-2.fc32.x86_64.rpm", + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.15", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shared-mime-info-1.15-3.fc32.x86_64.rpm", + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.31.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-libs-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-pam-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm", + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-udev-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tar-1.32-4.fc32.x86_64.rpm", + "checksum": "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tss2-1331-4.fc32.x86_64.rpm", + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm", + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/unbound-libs-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/util-linux-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/which-2.21-19.fc32.x86_64.rpm", + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm", + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.29", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm", + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-libs-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "21.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zlib-1.2.11-21.fc32.x86_64.rpm", + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.22.10", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-1.22.10-1.fc32.x86_64.rpm", + "checksum": "sha256:342bdf0143d9145f8846e1b5c3401685e0d1274b66df39ac8cbfb78013313861", + "check_gpg": true + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.22.10", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.22.10-1.fc32.x86_64.rpm", + "checksum": "sha256:fd2a2dd726d855f877296227fb351883d647df28b1b0085f525d87df622d49e4", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/acl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/alternatives-1.11-6.fc32.x86_64.rpm", + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm", + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bash-5.0.11-2.fc32.x86_64.rpm", + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.x86_64.rpm", + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.15.0", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/c-ares-1.15.0-5.fc32.x86_64.rpm", + "checksum": "sha256:46407b730b272223b8b64d12df0725af571b4a5c5ab89b9f41e12a49e07c6e6b", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2020.2.40", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm", + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/checkpolicy-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:703fb5ca1651bb72d8ab58576ce3d78c9479cbb2e78ff8666ae3a3d1cd9bb0da", + "check_gpg": true + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/chrony-3.5-8.fc32.x86_64.rpm", + "checksum": "sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57", + "check_gpg": true + }, + { + "name": "cloud-init", + "epoch": 0, + "version": "19.4", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cloud-init-19.4-2.fc32.noarch.rpm", + "checksum": "sha256:1e1e9900e9d3a2b8eb6684060672526948df2cb9f751e7d72cb4fa5bffe71747", + "check_gpg": true + }, + { + "name": "cloud-utils-growpart", + "epoch": 0, + "version": "0.31", + "release": "6.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cloud-utils-growpart-0.31-6.fc32.noarch.rpm", + "checksum": "sha256:fdf652eae6502ff726fc3b532348ebe59dccb16e0629331371ff83e309b259af", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-sans-mono-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-serif-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280", + "check_gpg": true + }, + { + "name": "console-login-helper-messages", + "epoch": 0, + "version": "0.17", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/console-login-helper-messages-0.17-2.fc32.noarch.rpm", + "checksum": "sha256:a9420698e38d93b375f3f97ef5b196f61d006862f80642d69cc3c3fd694589fc", + "check_gpg": true + }, + { + "name": "console-login-helper-messages-issuegen", + "epoch": 0, + "version": "0.17", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/console-login-helper-messages-issuegen-0.17-2.fc32.noarch.rpm", + "checksum": "sha256:2bcf87d3ecdecab92bc2aacf2f1ec50aced0ed2958001cd8b297c80612edeb60", + "check_gpg": true + }, + { + "name": "console-login-helper-messages-motdgen", + "epoch": 0, + "version": "0.17", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/console-login-helper-messages-motdgen-0.17-2.fc32.noarch.rpm", + "checksum": "sha256:85be4f8732fed73e473ea61635b582ecd0e46709a7c2c3c1a8f25d0709041780", + "check_gpg": true + }, + { + "name": "console-login-helper-messages-profile", + "epoch": 0, + "version": "0.17", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/console-login-helper-messages-profile-0.17-2.fc32.noarch.rpm", + "checksum": "sha256:87f6173e57d5d24c601047f747dfcf90dedc1d05250bfc6f06567d8ca35f895b", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-common-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.13", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cpio-2.13-4.fc32.x86_64.rpm", + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.x86_64.rpm", + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/curl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.x86_64.rpm", + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "22", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-broker-22-1.fc32.x86_64.rpm", + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm", + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "name": "dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-5.fc32.x86_64.rpm", + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.4.2", + "release": "5.b1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dhcp-client-4.4.2-5.b1.fc32.x86_64.rpm", + "checksum": "sha256:8c047278ce11e7ba7169a9c9537c3c6544f52c7eee8754179acd839ed59c028f", + "check_gpg": true + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.4.2", + "release": "5.b1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dhcp-common-4.4.2-5.b1.fc32.noarch.rpm", + "checksum": "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/diffutils-3.7-4.fc32.x86_64.rpm", + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.14", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-plugins-core-4.0.14-1.fc32.noarch.rpm", + "checksum": "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-050-26.git20200316.fc32.x86_64.rpm", + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-config-generic-050-26.git20200316.fc32.x86_64.rpm", + "checksum": "sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm", + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libelf-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libs-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/expat-2.2.8-2.fc32.x86_64.rpm", + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm", + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "name": "fedora-release-cloud", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-cloud-32-1.noarch.rpm", + "checksum": "sha256:0c8f8925dacc9a0e57b4446d5f67d9041bfc0a939191a7606ba93b74512a97d1", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-common-32-1.noarch.rpm", + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-repos-32-1.noarch.rpm", + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-libs-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.14", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/filesystem-3.14-2.fc32.x86_64.rpm", + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.7.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/findutils-4.7.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-8.fc32.x86_64.rpm", + "checksum": "sha256:907393755387a351806ec2afff376e7491f177116caadd12f07d0fcbed796750", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-8.fc32.x86_64.rpm", + "checksum": "sha256:f2715fc8a04d33716f40f5b34466e082140df7ff3b7b972c29655d4dfc6e3a72", + "check_gpg": true + }, + { + "name": "fonts-filesystem", + "epoch": 0, + "version": "2.0.3", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fonts-filesystem-2.0.3-1.fc32.noarch.rpm", + "checksum": "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-9.fc32.x86_64.rpm", + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gawk-5.0.1-7.fc32.x86_64.rpm", + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.x86_64.rpm", + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20191217", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/geolite2-city-20191217-2.fc32.noarch.rpm", + "checksum": "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3", + "check_gpg": true + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20191217", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/geolite2-country-20191217-2.fc32.noarch.rpm", + "checksum": "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.64.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glib2-2.64.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-common-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "name": "glibc-langpack-en", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:24520e03276e0d850169efc9d83b12a9a01eee5d7202dadca12d2e0a8b7352ba", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gmp-6.1.2-13.fc32.x86_64.rpm", + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.13", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnutls-3.6.13-1.fc32.x86_64.rpm", + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gpgme-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grep-3.3-4.fc32.x86_64.rpm", + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "21.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/groff-base-1.22.3-21.fc32.x86_64.rpm", + "checksum": "sha256:808e7209893298d11ac27f148c1b3d1a2b28e303e7930b43659a08dc0f660ac4", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grubby-8.40-40.fc32.x86_64.rpm", + "checksum": "sha256:cbdc61d713e4cbe52b2bece117912da0f1e3782cb3b33caa068e96c854c990be", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gzip-1.10-2.fc32.x86_64.rpm", + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.23", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/h/hostname-3.23-2.fc32.x86_64.rpm", + "checksum": "sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.x86_64.rpm", + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.02", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/initscripts-10.02-3.fc32.x86_64.rpm", + "checksum": "sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339", + "check_gpg": true + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.4.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipcalc-0.4.0-2.fc32.x86_64.rpm", + "checksum": "sha256:fe70d5a1c818367be3a5a7e60cbb379f020f97f63ba3c13ed09740f45a43154a", + "check_gpg": true + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.5.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-5.5.0-1.fc32.x86_64.rpm", + "checksum": "sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684", + "check_gpg": true + }, + { + "name": "iproute-tc", + "epoch": 0, + "version": "5.5.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-tc-5.5.0-1.fc32.x86_64.rpm", + "checksum": "sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-libs-1.8.4-7.fc32.x86_64.rpm", + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "name": "iputils", + "epoch": 0, + "version": "20190515", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iputils-20190515-5.fc32.x86_64.rpm", + "checksum": "sha256:6a3282927f525629bc0aaf4090e108d33b0709d3d5b35bc442000c2837e7b9b4", + "check_gpg": true + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.12", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/jansson-2.12-5.fc32.x86_64.rpm", + "checksum": "sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/json-c-0.13.1-9.fc32.x86_64.rpm", + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-2.2.0-1.fc32.x86_64.rpm", + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-core-5.6.6-300.fc32.x86_64.rpm", + "checksum": "sha256:a1613e90865db93fb578b8ee1a4ee40bd396c6c9f2fb2a14757acacecb9f23e8", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-27-1.fc32.x86_64.rpm", + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-libs-27-1.fc32.x86_64.rpm", + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kpartx-0.8.2-3.fc32.x86_64.rpm", + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/krb5-libs-1.18-1.fc32.x86_64.rpm", + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "name": "langpacks-core-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0", + "check_gpg": true + }, + { + "name": "langpacks-core-font-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-font-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389", + "check_gpg": true + }, + { + "name": "langpacks-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca", + "check_gpg": true + }, + { + "name": "less", + "epoch": 0, + "version": "551", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/less-551-3.fc32.x86_64.rpm", + "checksum": "sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libacl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.2", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libarchive-3.4.2-1.fc32.x86_64.rpm", + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libargon2-20171227-4.fc32.x86_64.rpm", + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libassuan-2.5.3-3.fc32.x86_64.rpm", + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libattr-2.4.48-8.fc32.x86_64.rpm", + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-44.fc32.x86_64.rpm", + "checksum": "sha256:26cca773f1f258105f0f825a8e0faebcaa183655b5d91cd972afbe791b586478", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libblkid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "name": "libbrotli", + "epoch": 0, + "version": "1.0.7", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbrotli-1.0.7-10.fc32.x86_64.rpm", + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-2.26-7.fc32.x86_64.rpm", + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-ng-0.7.10-2.fc32.x86_64.rpm", + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "name": "libcbor", + "epoch": 0, + "version": "0.5.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcbor-0.5.0-7.fc32.x86_64.rpm", + "checksum": "sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5", + "check_gpg": true + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcollection-0.7.0-44.fc32.x86_64.rpm", + "checksum": "sha256:9d4691918d7add910e8c03d61cccda0316b62d77b30ac2e502cf2e55289d1823", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcom_err-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcroco-0.6.13-3.fc32.x86_64.rpm", + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcurl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdhash-0.5.0-44.fc32.x86_64.rpm", + "checksum": "sha256:ca540fb7088948fdfe6e6b52a5e2b6a74d2d17136857da9f3f4a1ee29c8eb74b", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "32.20191231cvs.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libedit-3.1-32.20191231cvs.fc32.x86_64.rpm", + "checksum": "sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libevent-2.1.8-8.fc32.x86_64.rpm", + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfdisk-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libffi-3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "name": "libfido2", + "epoch": 0, + "version": "1.3.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfido2-1.3.1-1.fc32.x86_64.rpm", + "checksum": "sha256:ebbace15f986288bba7681f44a111b14bcc7cae00b7a1faadaa838bd51897357", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcc-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-3.fc32.x86_64.rpm", + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgomp-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgpg-error-1.36-3.fc32.x86_64.rpm", + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libidn2-2.3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libini_config-1.3.1-44.fc32.x86_64.rpm", + "checksum": "sha256:fed6244fce0c0b48933d622dfbb00cf73931b2f746b27675a025a33b591d9820", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libksba-1.3.5-11.fc32.x86_64.rpm", + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.1.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libldb-2.1.1-1.fc32.x86_64.rpm", + "checksum": "sha256:cd16f6ef433d7dc6860b19f3d77b666a03d35361aba78ee09d772575c2f69cc0", + "check_gpg": true + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.3.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmaxminddb-1.3.2-2.fc32.x86_64.rpm", + "checksum": "sha256:60589342d58922ba061ac8df7d753a7e7e75162c97ab086739e9d33fbf289091", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-10.fc32.x86_64.rpm", + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmnl-1.0.4-11.fc32.x86_64.rpm", + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmodulemd-2.9.1-1.fc32.x86_64.rpm", + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmount-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libndp-1.7-5.fc32.x86_64.rpm", + "checksum": "sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.x86_64.rpm", + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "17.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.x86_64.rpm", + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.4.3", + "release": "0.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfsidmap-2.4.3-0.fc32.x86_64.rpm", + "checksum": "sha256:bb154a90c968150172036d86f0c9fc2a24b5799718bc4d835cb10d0758890c67", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.40.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnghttp2-1.40.0-2.fc32.x86_64.rpm", + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnl3-3.5.0-2.fc32.x86_64.rpm", + "checksum": "sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "6.20180605git4a062cf.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64.rpm", + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-44.fc32.x86_64.rpm", + "checksum": "sha256:ce1a80b0ba6f09a7e5a188436088dd31d10c5f7b43dbe9c1788f705127c8e6b2", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpcap-1.9.1-3.fc32.x86_64.rpm", + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpipeline-1.5.2-2.fc32.x86_64.rpm", + "checksum": "sha256:c0a0c6f3e30c20815496be8de00f9596737e2693feb85f7484f200ffa9174530", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpsl-0.21.0-4.fc32.x86_64.rpm", + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpwquality-1.4.2-2.fc32.x86_64.rpm", + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libref_array-0.1.5-44.fc32.x86_64.rpm", + "checksum": "sha256:6fc1181ed798617668f195579acfcf8fb212513a776f376eecfb3d086c66b2d9", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.11.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/librepo-1.11.1-4.fc32.x86_64.rpm", + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.12.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm", + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libseccomp-2.4.2-3.fc32.x86_64.rpm", + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.20.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsecret-0.20.2-2.fc32.x86_64.rpm", + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-utils-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsemanage-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsepol-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsigsegv-2.11-10.fc32.x86_64.rpm", + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsmartcols-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsolv-0.7.11-2.fc32.x86_64.rpm", + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libss-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-0.9.3-2.fc32.x86_64.rpm", + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm", + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_autofs-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:695ef8ae55ed6a165a3633b3c0d75b320879246386e6df4539be9286f5176cc5", + "check_gpg": true + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_certmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:f391fe0e21e51e7c864f8bce1b5825419f4096023b5b90b3976bbd69d6a4d720", + "check_gpg": true + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:599549d72d26b48c45156585a5698898c853e56469142e202d3749b781428465", + "check_gpg": true + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:66bb5b2e99d2c74b82943fe61fe9b9a3674350b0242f69a6854ec9718dcf5e07", + "check_gpg": true + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:af66820023c984d8b981ecac715d0c2daec1f89dcb69bed76ddf58b0ee80c1b1", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtalloc-2.3.1-2.fc32.x86_64.rpm", + "checksum": "sha256:16702883a79532a400d7304146cdb47b0599983b9fb48ab918ef9fa1ce0be394", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.16.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtasn1-4.16.0-1.fc32.x86_64.rpm", + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtdb-1.4.3-2.fc32.x86_64.rpm", + "checksum": "sha256:36778f8a4fa111c4f796bbea8fd52f7b9708de8f4351070faa30bc985db59885", + "check_gpg": true + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtevent-0.10.2-2.fc32.x86_64.rpm", + "checksum": "sha256:dab54013f8316b766c40c71f9c0c2124c1f0c219b417d588b5ba1dccf7d63fd7", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.2.5", + "release": "1.rc2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.x86_64.rpm", + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libunistring-0.9.10-7.fc32.x86_64.rpm", + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libusbx-1.0.23-1.fc32.x86_64.rpm", + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuser-0.62-24.fc32.x86_64.rpm", + "checksum": "sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "18.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libutempter-1.1.6-18.fc32.x86_64.rpm", + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuuid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libverto-0.3.0-9.fc32.x86_64.rpm", + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.10.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.x86_64.rpm", + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.10", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxml2-2.9.10-3.fc32.x86_64.rpm", + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libyaml-0.2.2-3.fc32.x86_64.rpm", + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libzstd-1.4.4-2.fc32.x86_64.rpm", + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "name": "linux-atm-libs", + "epoch": 0, + "version": "2.5.1", + "release": "26.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-26.fc32.x86_64.rpm", + "checksum": "sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467", + "check_gpg": true + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20200316", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-20200316-106.fc32.noarch.rpm", + "checksum": "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4", + "check_gpg": true + }, + { + "name": "linux-firmware-whence", + "epoch": 0, + "version": "20200316", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-whence-20200316-106.fc32.noarch.rpm", + "checksum": "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9", + "check_gpg": true + }, + { + "name": "lmdb-libs", + "epoch": 0, + "version": "0.9.24", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.24-1.fc32.x86_64.rpm", + "checksum": "sha256:25ae9056f75df4efff0d17d916e7c3889c421368613acec7f1c4119bd17eac13", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-7.fc32.x86_64.rpm", + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-2.fc32.x86_64.rpm", + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.9.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/man-db-2.9.0-2.fc32.x86_64.rpm", + "checksum": "sha256:ca80c458fab5bdde0276702f06217d1219085428560af6039aa1c5cf1e58ff3b", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mkpasswd-5.5.6-1.fc32.x86_64.rpm", + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "name": "mozjs60", + "epoch": 0, + "version": "60.9.0", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mozjs60-60.9.0-5.fc32.x86_64.rpm", + "checksum": "sha256:80cf220a3314f965c088e03d2b750426767db0b36b6b7c5e8059b9217ff4de6d", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "4.0.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mpfr-4.0.2-3.fc32.x86_64.rpm", + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "name": "mtools", + "epoch": 0, + "version": "4.0.24", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mtools-4.0.24-1.fc32.x86_64.rpm", + "checksum": "sha256:280b880de2f5c6bbd8e000c63dff495533925893ef02cc599222cdb3c7586a22", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm", + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.56.20160912git.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/net-tools-2.0-0.56.20160912git.fc32.x86_64.rpm", + "checksum": "sha256:924367aa63693da4660dcb806fbf52b3bcb7c4d12b40c4b4ba6329079936d073", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nettle-3.5.1-5.fc32.x86_64.rpm", + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/npth-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openldap-2.4.47-4.fc32.x86_64.rpm", + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-8.2p1-2.fc32.x86_64.rpm", + "checksum": "sha256:0d51c1319ee78978e6ea5a49b815c2078b4ffd4d575e98c70e54ca01c3390eb8", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-clients-8.2p1-2.fc32.x86_64.rpm", + "checksum": "sha256:8b148415fb6a583ef131d0ddff44f3209c30d0299fde7b20cd3ea385590927c1", + "check_gpg": true + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-server-8.2p1-2.fc32.x86_64.rpm", + "checksum": "sha256:d1e244b8b5ce7404846e97d96c762c8c18ff6447301f6fc63f50e615029aa7cd", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.x86_64.rpm", + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/os-prober-1.77-4.fc32.x86_64.rpm", + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pam-1.3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "name": "parted", + "epoch": 0, + "version": "3.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/parted-3.3-3.fc32.x86_64.rpm", + "checksum": "sha256:4b9da0cedada16eb80a2d66b86aa62c9b026501e13a3e947a5a03a06f41d9dbb", + "check_gpg": true + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/passwd-0.80-8.fc32.x86_64.rpm", + "checksum": "sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.44", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre-8.44-1.fc32.x86_64.rpm", + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-10.34-9.fc32.x86_64.rpm", + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "name": "pcre2-syntax", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm", + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pigz-2.4-6.fc32.x86_64.rpm", + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pinentry-1.1.0-7.fc32.x86_64.rpm", + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "name": "polkit", + "epoch": 0, + "version": "0.116", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-0.116-7.fc32.x86_64.rpm", + "checksum": "sha256:d49f0b1c8ecf9bc808ae93e9298a40fbcc124fe67c3bbdd37705b6b5d8cfdd87", + "check_gpg": true + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.116", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-libs-0.116-7.fc32.x86_64.rpm", + "checksum": "sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386", + "check_gpg": true + }, + { + "name": "polkit-pkla-compat", + "epoch": 0, + "version": "0.1", + "release": "16.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-pkla-compat-0.1-16.fc32.x86_64.rpm", + "checksum": "sha256:7c7eff31251dedcc3285a8b08c1b18f7fd9ee2e07dff86ad090f45a81e19e85e", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/popt-1.16-19.fc32.x86_64.rpm", + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-7.fc32.x86_64.rpm", + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "name": "psmisc", + "epoch": 0, + "version": "23.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/psmisc-23.3-3.fc32.x86_64.rpm", + "checksum": "sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm", + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "name": "python3-attrs", + "epoch": 0, + "version": "19.3.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-attrs-19.3.0-2.fc32.noarch.rpm", + "checksum": "sha256:bcb07748c8688c788ec69c3a33c0abd1bb3a496b9aa09b5729265670bc7ba0eb", + "check_gpg": true + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:b1111e77a5fdbacaa04acc90d3844706158bc5892173862928705620b8910adb", + "check_gpg": true + }, + { + "name": "python3-babel", + "epoch": 0, + "version": "2.8.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-babel-2.8.0-2.fc32.noarch.rpm", + "checksum": "sha256:5719dd2fb399cadec08b4ac41c794239d2a2de2f012faeb970ab90a07bba0084", + "check_gpg": true + }, + { + "name": "python3-cffi", + "epoch": 0, + "version": "1.14.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-cffi-1.14.0-1.fc32.x86_64.rpm", + "checksum": "sha256:7124f9fedc862e3bab80f05b804b6c9580603ce3155727e888646d4d4f5ddc50", + "check_gpg": true + }, + { + "name": "python3-chardet", + "epoch": 0, + "version": "3.0.4", + "release": "15.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-chardet-3.0.4-15.fc32.noarch.rpm", + "checksum": "sha256:e7b9fd73c260cd22d3a36823530d4f623ea0e16844b900a5677c769afa76341c", + "check_gpg": true + }, + { + "name": "python3-configobj", + "epoch": 0, + "version": "5.0.6", + "release": "20.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-configobj-5.0.6-20.fc32.noarch.rpm", + "checksum": "sha256:81b6181b947d50e0a1ea681298417e552421d6714900d07a34dc25899e5c9f60", + "check_gpg": true + }, + { + "name": "python3-cryptography", + "epoch": 0, + "version": "2.8", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-cryptography-2.8-3.fc32.x86_64.rpm", + "checksum": "sha256:bb8942d19e594c0f4ca181bd58796bd5d3cb681c3f17cd2ec2654c3afe28e39a", + "check_gpg": true + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.8.0", + "release": "8.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-8.fc32.noarch.rpm", + "checksum": "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862", + "check_gpg": true + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dbus-1.2.16-1.fc32.x86_64.rpm", + "checksum": "sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070", + "check_gpg": true + }, + { + "name": "python3-distro", + "epoch": 0, + "version": "1.4.0", + "release": "5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-5.fc32.noarch.rpm", + "checksum": "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.14", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-plugins-core-4.0.14-1.fc32.noarch.rpm", + "checksum": "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "name": "python3-idna", + "epoch": 0, + "version": "2.8", + "release": "6.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-idna-2.8-6.fc32.noarch.rpm", + "checksum": "sha256:61c51596cc97f35177efe8dc5e2ca52d8fd528570f33c184497f419259b73c90", + "check_gpg": true + }, + { + "name": "python3-jinja2", + "epoch": 0, + "version": "2.11.1", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jinja2-2.11.1-1.fc32.noarch.rpm", + "checksum": "sha256:645f82cf62da25742cab5e8ffd1f764301b84ab19710d9f3fb3aff1cb57ffdc6", + "check_gpg": true + }, + { + "name": "python3-jsonpatch", + "epoch": 0, + "version": "1.21", + "release": "11.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jsonpatch-1.21-11.fc32.noarch.rpm", + "checksum": "sha256:4c9d77d63ddc7dda0e018fc1c97d46025794e336e58d838a631fcc130dfa3b9b", + "check_gpg": true + }, + { + "name": "python3-jsonpointer", + "epoch": 0, + "version": "1.10", + "release": "19.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jsonpointer-1.10-19.fc32.noarch.rpm", + "checksum": "sha256:6615aae3def0c49910e43e2d69f7ae8852694953dceb4b6235b5cf4099296d70", + "check_gpg": true + }, + { + "name": "python3-jsonschema", + "epoch": 0, + "version": "3.2.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jsonschema-3.2.0-2.fc32.noarch.rpm", + "checksum": "sha256:6890a9545194ad6cf1b0c58e5273132171a9ced9cb665a1442aa62b6b6d3d2ea", + "check_gpg": true + }, + { + "name": "python3-jwt", + "epoch": 0, + "version": "1.7.1", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-jwt-1.7.1-7.fc32.noarch.rpm", + "checksum": "sha256:d0bc781a80be1d1fe204ec6b26255240261d55f6e24a28343572f2221a00533e", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libs-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libselinux-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124", + "check_gpg": true + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libsemanage-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:55bafcdf9c31b1456af3bf584bfe7ac745a03f4decd17197ea97b498d68b3b82", + "check_gpg": true + }, + { + "name": "python3-markupsafe", + "epoch": 0, + "version": "1.1.1", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-markupsafe-1.1.1-5.fc32.x86_64.rpm", + "checksum": "sha256:c05d01195aa4ca0f4a471574cc7ece8a0f4daf437935d845cd0745e2512cb9c9", + "check_gpg": true + }, + { + "name": "python3-oauthlib", + "epoch": 0, + "version": "3.0.2", + "release": "5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-oauthlib-3.0.2-5.fc32.noarch.rpm", + "checksum": "sha256:391faab010ca30610a14e0b3d54fbc0331be39bc831086fb877f8021fe4b171f", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "name": "python3-ply", + "epoch": 0, + "version": "3.11", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-ply-3.11-7.fc32.noarch.rpm", + "checksum": "sha256:f6203a41ed91197bb770a38a101d977f0f56de86ccc5a71cee9c0e198f26bcbc", + "check_gpg": true + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-policycoreutils-3.0-2.fc32.noarch.rpm", + "checksum": "sha256:15f2fc89b7bd39dcd3f6f8db30f56b76b65df311d7ad9852d498fbbc5c7d2aa2", + "check_gpg": true + }, + { + "name": "python3-prettytable", + "epoch": 0, + "version": "0.7.2", + "release": "22.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-prettytable-0.7.2-22.fc32.noarch.rpm", + "checksum": "sha256:4860a733ca3f22089c6c283cbdcf53123a702d60b5bffdd4fe9d76826f91139a", + "check_gpg": true + }, + { + "name": "python3-pycparser", + "epoch": 0, + "version": "2.19", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pycparser-2.19-2.fc32.noarch.rpm", + "checksum": "sha256:a0b87b2dc3c5f536e94d6a4f3563a621dfbc067a62c3d1fe69bdb70c3cecec57", + "check_gpg": true + }, + { + "name": "python3-pyrsistent", + "epoch": 0, + "version": "0.15.7", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyrsistent-0.15.7-2.fc32.x86_64.rpm", + "checksum": "sha256:1e655f02895f6a87f9be5793065570b57e623cbf15516094df62e1f5626d4158", + "check_gpg": true + }, + { + "name": "python3-pyserial", + "epoch": 0, + "version": "3.4", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyserial-3.4-7.fc32.noarch.rpm", + "checksum": "sha256:a107b3d3790a5bcfdc28f6f4718969039b103a681a2647f3cbcb82cf92e97acb", + "check_gpg": true + }, + { + "name": "python3-pysocks", + "epoch": 0, + "version": "1.7.1", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pysocks-1.7.1-4.fc32.noarch.rpm", + "checksum": "sha256:fa791a4328b4c41b7190d862de921605f266a64abee03b2ea2e8d2b644be307f", + "check_gpg": true + }, + { + "name": "python3-pytz", + "epoch": 0, + "version": "2019.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pytz-2019.3-2.fc32.noarch.rpm", + "checksum": "sha256:c93df175a0a4989aaaeb170406d8ff13a2cd93a5fc52ad33468245fea2044a86", + "check_gpg": true + }, + { + "name": "python3-pyyaml", + "epoch": 0, + "version": "5.3.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyyaml-5.3.1-1.fc32.x86_64.rpm", + "checksum": "sha256:c13c7da4b097499576861cb12fdd02e520af69b5f23d615b3968c54f40f8fd47", + "check_gpg": true + }, + { + "name": "python3-requests", + "epoch": 0, + "version": "2.22.0", + "release": "8.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-requests-2.22.0-8.fc32.noarch.rpm", + "checksum": "sha256:d611f0c4252c4c4b893850807748e62cf4d17d72d544ef2744091df3206d8178", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.3.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setools-4.3.0-1.fc32.x86_64.rpm", + "checksum": "sha256:6f5f53b66f7c3bf6958f6f163788583265ff0360188620c3b0f7ddedeac3d1f4", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.14.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-six-1.14.0-2.fc32.noarch.rpm", + "checksum": "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-unbound-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "name": "python3-urllib3", + "epoch": 0, + "version": "1.25.7", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-urllib3-1.25.7-3.fc32.noarch.rpm", + "checksum": "sha256:3882823d0eb18e0e8146584f4a32a4801961f6fdc09075607746317eba3265be", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.x86_64.rpm", + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/readline-8.0-4.fc32.x86_64.rpm", + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "27.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rootfiles-8.1-27.fc32.noarch.rpm", + "checksum": "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "name": "rsync", + "epoch": 0, + "version": "3.1.3", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rsync-3.1.3-11.fc32.x86_64.rpm", + "checksum": "sha256:024dd8a75eb5472692d0291292d25939b97a0295e5ab0958dcd22600d392eaae", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sed-4.5-5.fc32.x86_64.rpm", + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.6", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm", + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.8.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shadow-utils-4.8.1-2.fc32.x86_64.rpm", + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.15", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shared-mime-info-1.15-3.fc32.x86_64.rpm", + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.31.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-client-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:699c1a3ff311bbaa2380c085fb4f516aa08be474bed02bcd1569d0bbf5b22d07", + "check_gpg": true + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-common-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:265dee550073120d51e4c94d3d039e5efdee73a0ae1b1faf2b92de0dad1f58fa", + "check_gpg": true + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-kcm-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:3ee53d0dba5bbfd3bbb2ae4b54e3ebdfa122e1cf120e17ff9c4c35674269e5ad", + "check_gpg": true + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-nfs-idmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:3c3fb1ca768ecd6ae7905a09cd85b9f67e9f08c46d18779520fb4b29476865c7", + "check_gpg": true + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.9.0", + "release": "0.1.b4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sudo-1.9.0-0.1.b4.fc32.x86_64.rpm", + "checksum": "sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b", + "check_gpg": true + }, + { + "name": "syslinux", + "epoch": 0, + "version": "6.04", + "release": "0.13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/syslinux-6.04-0.13.fc32.x86_64.rpm", + "checksum": "sha256:dbcf6ba5f6ab0cdc884572f07427114b8492d453420a80ffd521578a752b8064", + "check_gpg": true + }, + { + "name": "syslinux-extlinux", + "epoch": 0, + "version": "6.04", + "release": "0.13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/syslinux-extlinux-6.04-0.13.fc32.x86_64.rpm", + "checksum": "sha256:78de81d45789ae9bccf6dd82f2b2835ac868f1a584e05d0e9f89f40bb4a202c7", + "check_gpg": true + }, + { + "name": "syslinux-extlinux-nonlinux", + "epoch": 0, + "version": "6.04", + "release": "0.13.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/syslinux-extlinux-nonlinux-6.04-0.13.fc32.noarch.rpm", + "checksum": "sha256:4e066ace8364aba9311fa74f4a87c21f98091bc1af5a6a4daa06441469234041", + "check_gpg": true + }, + { + "name": "syslinux-nonlinux", + "epoch": 0, + "version": "6.04", + "release": "0.13.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/syslinux-nonlinux-6.04-0.13.fc32.noarch.rpm", + "checksum": "sha256:dc2558fdefc439075ebdf57bd9f2f691d6a6f278879713f2e093398dcb62c25a", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-libs-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-pam-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm", + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-udev-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tar-1.32-4.fc32.x86_64.rpm", + "checksum": "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tss2-1331-4.fc32.x86_64.rpm", + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm", + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/unbound-libs-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/util-linux-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.2.525", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/v/vim-minimal-8.2.525-1.fc32.x86_64.rpm", + "checksum": "sha256:4fca21cfdcbed052e3e9e1eff74c22fb8ffb1fbbeb63e87e2aa540e43a8c0d09", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/which-2.21-19.fc32.x86_64.rpm", + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm", + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.4.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xfsprogs-5.4.0-3.fc32.x86_64.rpm", + "checksum": "sha256:e3175d0dba977f1cff702498ea68cc13134a0f525a869025e2ee3ede987d7867", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.29", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm", + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-libs-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/y/yum-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "21.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zlib-1.2.11-21.fc32.x86_64.rpm", + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ], + "checksums": { + "0": "sha256:c7f7c29a8ca90e226d2efee6d5856f2dea1d64ea758dfd114d75b4b20b56de1c" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac ro biosdevname=0 net.ifnames=0 debug" + }, + "bootloader": "grub", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "initrd": "/boot/initramfs-5.6.6-300.fc32.x86_64.img", + "linux": "/boot/vmlinuz-5.6.6-300.fc32.x86_64", + "options": "$kernelopts", + "title": "Fedora (5.6.6-300.fc32.x86_64) 32 (Thirty Two)", + "version": "5.6.6-300.fc32.x86_64" + } + ], + "fstab": [ + [ + "UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "/", + "ext4", + "defaults", + "1", + "1" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:992:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "group1:x:1030:user2", + "group2:x:1050:", + "input:x:997:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "polkitd:x:993:", + "render:x:996:", + "root:x:0:", + "ssh_keys:x:998:", + "sshd:x:74:", + "sys:x:3:", + "systemd-coredump:x:995:", + "systemd-journal:x:190:", + "systemd-network:x:192:", + "systemd-resolve:x:193:", + "systemd-timesync:x:994:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:999:", + "user1:x:1000:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "qcow2", + "os-release": { + "ANSI_COLOR": "0;34", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:fedoraproject:fedora:32", + "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f32/system-administrators-guide/", + "HOME_URL": "https://fedoraproject.org/", + "ID": "fedora", + "LOGO": "fedora-logo-icon", + "NAME": "Fedora", + "PLATFORM_ID": "platform:f32", + "PRETTY_NAME": "Fedora 32 (Cloud Edition)", + "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy", + "REDHAT_BUGZILLA_PRODUCT": "Fedora", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "32", + "REDHAT_SUPPORT_PRODUCT": "Fedora", + "REDHAT_SUPPORT_PRODUCT_VERSION": "32", + "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help", + "VARIANT": "Cloud Edition", + "VARIANT_ID": "cloud", + "VERSION": "32 (Cloud Edition)", + "VERSION_CODENAME": "", + "VERSION_ID": "32" + }, + "packages": [ + "NetworkManager-1.22.10-1.fc32.x86_64", + "NetworkManager-libnm-1.22.10-1.fc32.x86_64", + "acl-2.2.53-5.fc32.x86_64", + "alternatives-1.11-6.fc32.x86_64", + "audit-3.0-0.19.20191104git1c2f876.fc32.x86_64", + "audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64", + "basesystem-11-9.fc32.noarch", + "bash-5.0.11-2.fc32.x86_64", + "bzip2-libs-1.0.8-2.fc32.x86_64", + "c-ares-1.15.0-5.fc32.x86_64", + "ca-certificates-2020.2.40-3.fc32.noarch", + "checkpolicy-3.0-3.fc32.x86_64", + "chrony-3.5-8.fc32.x86_64", + "cloud-init-19.4-2.fc32.noarch", + "cloud-utils-growpart-0.31-6.fc32.noarch", + "compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch", + "compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch", + "compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch", + "console-login-helper-messages-0.17-2.fc32.noarch", + "console-login-helper-messages-issuegen-0.17-2.fc32.noarch", + "console-login-helper-messages-motdgen-0.17-2.fc32.noarch", + "console-login-helper-messages-profile-0.17-2.fc32.noarch", + "coreutils-8.32-3.fc32.1.x86_64", + "coreutils-common-8.32-3.fc32.1.x86_64", + "cpio-2.13-4.fc32.x86_64", + "cracklib-2.9.6-22.fc32.x86_64", + "cracklib-dicts-2.9.6-22.fc32.x86_64", + "crypto-policies-20191128-5.gitcd267a5.fc32.noarch", + "crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch", + "cryptsetup-libs-2.3.0-1.fc32.x86_64", + "curl-7.69.1-1.fc32.x86_64", + "cyrus-sasl-lib-2.1.27-4.fc32.x86_64", + "dbus-1.12.16-4.fc32.x86_64", + "dbus-broker-22-1.fc32.x86_64", + "dbus-common-1.12.16-4.fc32.noarch", + "dbus-libs-1.12.16-4.fc32.x86_64", + "dejavu-sans-fonts-2.37-7.fc32.noarch", + "deltarpm-3.6.2-5.fc32.x86_64", + "device-mapper-1.02.171-1.fc32.x86_64", + "device-mapper-libs-1.02.171-1.fc32.x86_64", + "dhcp-client-4.4.2-5.b1.fc32.x86_64", + "dhcp-common-4.4.2-5.b1.fc32.noarch", + "diffutils-3.7-4.fc32.x86_64", + "dnf-4.2.19-1.fc32.noarch", + "dnf-data-4.2.19-1.fc32.noarch", + "dnf-plugins-core-4.0.14-1.fc32.noarch", + "dracut-050-26.git20200316.fc32.x86_64", + "dracut-config-generic-050-26.git20200316.fc32.x86_64", + "e2fsprogs-1.45.5-3.fc32.x86_64", + "e2fsprogs-libs-1.45.5-3.fc32.x86_64", + "elfutils-debuginfod-client-0.179-1.fc32.x86_64", + "elfutils-default-yama-scope-0.179-1.fc32.noarch", + "elfutils-libelf-0.179-1.fc32.x86_64", + "elfutils-libs-0.179-1.fc32.x86_64", + "expat-2.2.8-2.fc32.x86_64", + "fedora-gpg-keys-32-1.noarch", + "fedora-release-cloud-32-1.noarch", + "fedora-release-common-32-1.noarch", + "fedora-repos-32-1.noarch", + "file-5.38-2.fc32.x86_64", + "file-libs-5.38-2.fc32.x86_64", + "filesystem-3.14-2.fc32.x86_64", + "findutils-4.7.0-3.fc32.x86_64", + "fipscheck-1.5.0-8.fc32.x86_64", + "fipscheck-lib-1.5.0-8.fc32.x86_64", + "fonts-filesystem-2.0.3-1.fc32.noarch", + "fuse-libs-2.9.9-9.fc32.x86_64", + "gawk-5.0.1-7.fc32.x86_64", + "gdbm-libs-1.18.1-3.fc32.x86_64", + "geolite2-city-20191217-2.fc32.noarch", + "geolite2-country-20191217-2.fc32.noarch", + "gettext-0.20.1-4.fc32.x86_64", + "gettext-libs-0.20.1-4.fc32.x86_64", + "glib2-2.64.1-1.fc32.x86_64", + "glibc-2.31-2.fc32.x86_64", + "glibc-common-2.31-2.fc32.x86_64", + "glibc-langpack-en-2.31-2.fc32.x86_64", + "gmp-6.1.2-13.fc32.x86_64", + "gnupg2-2.2.19-1.fc32.x86_64", + "gnupg2-smime-2.2.19-1.fc32.x86_64", + "gnutls-3.6.13-1.fc32.x86_64", + "gpg-pubkey-12c944d0-5d5156ab", + "gpgme-1.13.1-6.fc32.x86_64", + "grep-3.3-4.fc32.x86_64", + "groff-base-1.22.3-21.fc32.x86_64", + "grub2-common-2.04-12.fc32.noarch", + "grub2-pc-2.04-12.fc32.x86_64", + "grub2-pc-modules-2.04-12.fc32.noarch", + "grub2-tools-2.04-12.fc32.x86_64", + "grub2-tools-minimal-2.04-12.fc32.x86_64", + "grubby-8.40-40.fc32.x86_64", + "gzip-1.10-2.fc32.x86_64", + "hostname-3.23-2.fc32.x86_64", + "ima-evm-utils-1.2.1-3.fc32.x86_64", + "initscripts-10.02-3.fc32.x86_64", + "ipcalc-0.4.0-2.fc32.x86_64", + "iproute-5.5.0-1.fc32.x86_64", + "iproute-tc-5.5.0-1.fc32.x86_64", + "iptables-libs-1.8.4-7.fc32.x86_64", + "iputils-20190515-5.fc32.x86_64", + "jansson-2.12-5.fc32.x86_64", + "json-c-0.13.1-9.fc32.x86_64", + "kbd-2.2.0-1.fc32.x86_64", + "kbd-legacy-2.2.0-1.fc32.noarch", + "kbd-misc-2.2.0-1.fc32.noarch", + "kernel-core-5.6.6-300.fc32.x86_64", + "keyutils-libs-1.6-4.fc32.x86_64", + "kmod-27-1.fc32.x86_64", + "kmod-libs-27-1.fc32.x86_64", + "kpartx-0.8.2-3.fc32.x86_64", + "krb5-libs-1.18-1.fc32.x86_64", + "langpacks-core-en-3.0-3.fc32.noarch", + "langpacks-core-font-en-3.0-3.fc32.noarch", + "langpacks-en-3.0-3.fc32.noarch", + "less-551-3.fc32.x86_64", + "libacl-2.2.53-5.fc32.x86_64", + "libarchive-3.4.2-1.fc32.x86_64", + "libargon2-20171227-4.fc32.x86_64", + "libassuan-2.5.3-3.fc32.x86_64", + "libattr-2.4.48-8.fc32.x86_64", + "libbasicobjects-0.1.1-44.fc32.x86_64", + "libblkid-2.35.1-7.fc32.x86_64", + "libbrotli-1.0.7-10.fc32.x86_64", + "libcap-2.26-7.fc32.x86_64", + "libcap-ng-0.7.10-2.fc32.x86_64", + "libcbor-0.5.0-7.fc32.x86_64", + "libcollection-0.7.0-44.fc32.x86_64", + "libcom_err-1.45.5-3.fc32.x86_64", + "libcomps-0.1.14-4.fc32.x86_64", + "libcroco-0.6.13-3.fc32.x86_64", + "libcurl-7.69.1-1.fc32.x86_64", + "libdb-5.3.28-40.fc32.x86_64", + "libdb-utils-5.3.28-40.fc32.x86_64", + "libdhash-0.5.0-44.fc32.x86_64", + "libdnf-0.45.0-3.fc32.x86_64", + "libedit-3.1-32.20191231cvs.fc32.x86_64", + "libevent-2.1.8-8.fc32.x86_64", + "libfdisk-2.35.1-7.fc32.x86_64", + "libffi-3.1-24.fc32.x86_64", + "libfido2-1.3.1-1.fc32.x86_64", + "libgcc-10.0.1-0.11.fc32.x86_64", + "libgcrypt-1.8.5-3.fc32.x86_64", + "libgomp-10.0.1-0.11.fc32.x86_64", + "libgpg-error-1.36-3.fc32.x86_64", + "libidn2-2.3.0-2.fc32.x86_64", + "libini_config-1.3.1-44.fc32.x86_64", + "libkcapi-1.1.5-2.fc32.x86_64", + "libkcapi-hmaccalc-1.1.5-2.fc32.x86_64", + "libksba-1.3.5-11.fc32.x86_64", + "libldb-2.1.1-1.fc32.x86_64", + "libmaxminddb-1.3.2-2.fc32.x86_64", + "libmetalink-0.1.3-10.fc32.x86_64", + "libmnl-1.0.4-11.fc32.x86_64", + "libmodulemd-2.9.1-1.fc32.x86_64", + "libmount-2.35.1-7.fc32.x86_64", + "libndp-1.7-5.fc32.x86_64", + "libnetfilter_conntrack-1.0.7-4.fc32.x86_64", + "libnfnetlink-1.0.1-17.fc32.x86_64", + "libnfsidmap-2.4.3-0.fc32.x86_64", + "libnghttp2-1.40.0-2.fc32.x86_64", + "libnl3-3.5.0-2.fc32.x86_64", + "libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64", + "libpath_utils-0.2.1-44.fc32.x86_64", + "libpcap-1.9.1-3.fc32.x86_64", + "libpipeline-1.5.2-2.fc32.x86_64", + "libpsl-0.21.0-4.fc32.x86_64", + "libpwquality-1.4.2-2.fc32.x86_64", + "libref_array-0.1.5-44.fc32.x86_64", + "librepo-1.11.1-4.fc32.x86_64", + "libreport-filesystem-2.12.0-3.fc32.noarch", + "libseccomp-2.4.2-3.fc32.x86_64", + "libsecret-0.20.2-2.fc32.x86_64", + "libselinux-3.0-3.fc32.x86_64", + "libselinux-utils-3.0-3.fc32.x86_64", + "libsemanage-3.0-3.fc32.x86_64", + "libsepol-3.0-3.fc32.x86_64", + "libsigsegv-2.11-10.fc32.x86_64", + "libsmartcols-2.35.1-7.fc32.x86_64", + "libsolv-0.7.11-2.fc32.x86_64", + "libss-1.45.5-3.fc32.x86_64", + "libssh-0.9.3-2.fc32.x86_64", + "libssh-config-0.9.3-2.fc32.noarch", + "libsss_autofs-2.2.3-13.fc32.x86_64", + "libsss_certmap-2.2.3-13.fc32.x86_64", + "libsss_idmap-2.2.3-13.fc32.x86_64", + "libsss_nss_idmap-2.2.3-13.fc32.x86_64", + "libsss_sudo-2.2.3-13.fc32.x86_64", + "libstdc++-10.0.1-0.11.fc32.x86_64", + "libtalloc-2.3.1-2.fc32.x86_64", + "libtasn1-4.16.0-1.fc32.x86_64", + "libtdb-1.4.3-2.fc32.x86_64", + "libtevent-0.10.2-2.fc32.x86_64", + "libtextstyle-0.20.1-4.fc32.x86_64", + "libtirpc-1.2.5-1.rc2.fc32.x86_64", + "libunistring-0.9.10-7.fc32.x86_64", + "libusbx-1.0.23-1.fc32.x86_64", + "libuser-0.62-24.fc32.x86_64", + "libutempter-1.1.6-18.fc32.x86_64", + "libuuid-2.35.1-7.fc32.x86_64", + "libverto-0.3.0-9.fc32.x86_64", + "libxcrypt-4.4.16-1.fc32.x86_64", + "libxcrypt-compat-4.4.16-1.fc32.x86_64", + "libxkbcommon-0.10.0-2.fc32.x86_64", + "libxml2-2.9.10-3.fc32.x86_64", + "libyaml-0.2.2-3.fc32.x86_64", + "libzstd-1.4.4-2.fc32.x86_64", + "linux-atm-libs-2.5.1-26.fc32.x86_64", + "linux-firmware-20200316-106.fc32.noarch", + "linux-firmware-whence-20200316-106.fc32.noarch", + "lmdb-libs-0.9.24-1.fc32.x86_64", + "lua-libs-5.3.5-7.fc32.x86_64", + "lz4-libs-1.9.1-2.fc32.x86_64", + "man-db-2.9.0-2.fc32.x86_64", + "mkpasswd-5.5.6-1.fc32.x86_64", + "mozjs60-60.9.0-5.fc32.x86_64", + "mpfr-4.0.2-3.fc32.x86_64", + "mtools-4.0.24-1.fc32.x86_64", + "ncurses-6.1-15.20191109.fc32.x86_64", + "ncurses-base-6.1-15.20191109.fc32.noarch", + "ncurses-libs-6.1-15.20191109.fc32.x86_64", + "net-tools-2.0-0.56.20160912git.fc32.x86_64", + "nettle-3.5.1-5.fc32.x86_64", + "npth-1.6-4.fc32.x86_64", + "openldap-2.4.47-4.fc32.x86_64", + "openssh-8.2p1-2.fc32.x86_64", + "openssh-clients-8.2p1-2.fc32.x86_64", + "openssh-server-8.2p1-2.fc32.x86_64", + "openssl-1.1.1d-7.fc32.x86_64", + "openssl-libs-1.1.1d-7.fc32.x86_64", + "openssl-pkcs11-0.4.10-5.fc32.x86_64", + "os-prober-1.77-4.fc32.x86_64", + "p11-kit-0.23.20-1.fc32.x86_64", + "p11-kit-trust-0.23.20-1.fc32.x86_64", + "pam-1.3.1-24.fc32.x86_64", + "parted-3.3-3.fc32.x86_64", + "passwd-0.80-8.fc32.x86_64", + "pcre-8.44-1.fc32.x86_64", + "pcre2-10.34-9.fc32.x86_64", + "pcre2-syntax-10.34-9.fc32.noarch", + "pigz-2.4-6.fc32.x86_64", + "pinentry-1.1.0-7.fc32.x86_64", + "policycoreutils-3.0-2.fc32.x86_64", + "polkit-0.116-7.fc32.x86_64", + "polkit-libs-0.116-7.fc32.x86_64", + "polkit-pkla-compat-0.1-16.fc32.x86_64", + "popt-1.16-19.fc32.x86_64", + "procps-ng-3.3.15-7.fc32.x86_64", + "psmisc-23.3-3.fc32.x86_64", + "publicsuffix-list-dafsa-20190417-3.fc32.noarch", + "python-pip-wheel-19.3.1-2.fc32.noarch", + "python-setuptools-wheel-41.6.0-2.fc32.noarch", + "python-unversioned-command-3.8.2-2.fc32.noarch", + "python3-3.8.2-2.fc32.x86_64", + "python3-attrs-19.3.0-2.fc32.noarch", + "python3-audit-3.0-0.19.20191104git1c2f876.fc32.x86_64", + "python3-babel-2.8.0-2.fc32.noarch", + "python3-cffi-1.14.0-1.fc32.x86_64", + "python3-chardet-3.0.4-15.fc32.noarch", + "python3-configobj-5.0.6-20.fc32.noarch", + "python3-cryptography-2.8-3.fc32.x86_64", + "python3-dateutil-2.8.0-8.fc32.noarch", + "python3-dbus-1.2.16-1.fc32.x86_64", + "python3-distro-1.4.0-5.fc32.noarch", + "python3-dnf-4.2.19-1.fc32.noarch", + "python3-dnf-plugins-core-4.0.14-1.fc32.noarch", + "python3-gpg-1.13.1-6.fc32.x86_64", + "python3-hawkey-0.45.0-3.fc32.x86_64", + "python3-idna-2.8-6.fc32.noarch", + "python3-jinja2-2.11.1-1.fc32.noarch", + "python3-jsonpatch-1.21-11.fc32.noarch", + "python3-jsonpointer-1.10-19.fc32.noarch", + "python3-jsonschema-3.2.0-2.fc32.noarch", + "python3-jwt-1.7.1-7.fc32.noarch", + "python3-libcomps-0.1.14-4.fc32.x86_64", + "python3-libdnf-0.45.0-3.fc32.x86_64", + "python3-libs-3.8.2-2.fc32.x86_64", + "python3-libselinux-3.0-3.fc32.x86_64", + "python3-libsemanage-3.0-3.fc32.x86_64", + "python3-markupsafe-1.1.1-5.fc32.x86_64", + "python3-oauthlib-3.0.2-5.fc32.noarch", + "python3-pip-19.3.1-2.fc32.noarch", + "python3-ply-3.11-7.fc32.noarch", + "python3-policycoreutils-3.0-2.fc32.noarch", + "python3-prettytable-0.7.2-22.fc32.noarch", + "python3-pycparser-2.19-2.fc32.noarch", + "python3-pyrsistent-0.15.7-2.fc32.x86_64", + "python3-pyserial-3.4-7.fc32.noarch", + "python3-pysocks-1.7.1-4.fc32.noarch", + "python3-pytz-2019.3-2.fc32.noarch", + "python3-pyyaml-5.3.1-1.fc32.x86_64", + "python3-requests-2.22.0-8.fc32.noarch", + "python3-rpm-4.15.1-2.fc32.1.x86_64", + "python3-setools-4.3.0-1.fc32.x86_64", + "python3-setuptools-41.6.0-2.fc32.noarch", + "python3-six-1.14.0-2.fc32.noarch", + "python3-unbound-1.9.6-2.fc32.x86_64", + "python3-urllib3-1.25.7-3.fc32.noarch", + "qrencode-libs-4.0.2-5.fc32.x86_64", + "readline-8.0-4.fc32.x86_64", + "rootfiles-8.1-27.fc32.noarch", + "rpm-4.15.1-2.fc32.1.x86_64", + "rpm-build-libs-4.15.1-2.fc32.1.x86_64", + "rpm-libs-4.15.1-2.fc32.1.x86_64", + "rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64", + "rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64", + "rpm-sign-libs-4.15.1-2.fc32.1.x86_64", + "rsync-3.1.3-11.fc32.x86_64", + "sed-4.5-5.fc32.x86_64", + "selinux-policy-3.14.5-32.fc32.noarch", + "selinux-policy-targeted-3.14.5-32.fc32.noarch", + "setup-2.13.6-2.fc32.noarch", + "shadow-utils-4.8.1-2.fc32.x86_64", + "shared-mime-info-1.15-3.fc32.x86_64", + "sqlite-libs-3.31.1-1.fc32.x86_64", + "sssd-client-2.2.3-13.fc32.x86_64", + "sssd-common-2.2.3-13.fc32.x86_64", + "sssd-kcm-2.2.3-13.fc32.x86_64", + "sssd-nfs-idmap-2.2.3-13.fc32.x86_64", + "sudo-1.9.0-0.1.b4.fc32.x86_64", + "syslinux-6.04-0.13.fc32.x86_64", + "syslinux-extlinux-6.04-0.13.fc32.x86_64", + "syslinux-extlinux-nonlinux-6.04-0.13.fc32.noarch", + "syslinux-nonlinux-6.04-0.13.fc32.noarch", + "systemd-245.4-1.fc32.x86_64", + "systemd-libs-245.4-1.fc32.x86_64", + "systemd-pam-245.4-1.fc32.x86_64", + "systemd-rpm-macros-245.4-1.fc32.noarch", + "systemd-udev-245.4-1.fc32.x86_64", + "tar-1.32-4.fc32.x86_64", + "trousers-0.3.13-13.fc31.x86_64", + "trousers-lib-0.3.13-13.fc31.x86_64", + "tss2-1331-4.fc32.x86_64", + "tzdata-2019c-3.fc32.noarch", + "unbound-libs-1.9.6-2.fc32.x86_64", + "util-linux-2.35.1-7.fc32.x86_64", + "vim-minimal-8.2.525-1.fc32.x86_64", + "which-2.21-19.fc32.x86_64", + "whois-nls-5.5.6-1.fc32.noarch", + "xfsprogs-5.4.0-3.fc32.x86_64", + "xkeyboard-config-2.29-1.fc32.noarch", + "xz-5.2.5-1.fc32.x86_64", + "xz-libs-5.2.5-1.fc32.x86_64", + "yum-4.2.19-1.fc32.noarch", + "zchunk-libs-1.1.5-2.fc32.x86_64", + "zlib-1.2.11-21.fc32.x86_64" + ], + "partition-table": "dos", + "partition-table-id": "0x14fc63d2", + "partitions": [ + { + "bootable": true, + "fstype": "ext4", + "label": null, + "partuuid": "14fc63d2-01", + "size": 2146435072, + "start": 1048576, + "type": "83", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:995:992::/var/lib/chrony:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "polkitd:x:996:993:User for polkitd:/:/sbin/nologin", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:998:995:systemd Core Dumper:/:/sbin/nologin", + "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "systemd-timesync:x:997:994:systemd Time Synchronization:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:999:999:Unbound DNS resolver:/etc/unbound:/sbin/nologin", + "user1:x:1000:1000::/home/user1:/bin/bash", + "user2:x:1020:1050:description 2:/home/home2:/bin/sh" + ], + "rpm-verify": { + "changed": { + "/boot/System.map-5.6.6-300.fc32.x86_64": ".M.......", + "/boot/initramfs-5.6.6-300.fc32.x86_64.img": ".M.......", + "/etc/chrony.conf": "S.5....T.", + "/etc/udev/hwdb.bin": ".M.......", + "/lib/modules/5.6.6-300.fc32.x86_64/modules.builtin.alias.bin": ".......T.", + "/proc": ".M.......", + "/sys": ".M.......", + "/var/log/btmp": ".M.......", + "/var/log/journal": ".M....G..", + "/var/log/lastlog": ".M....G.." + }, + "missing": [] + }, + "services-disabled": [ + "arp-ethers.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "console-getty.service", + "console-login-helper-messages-issuegen.service", + "console-login-helper-messages-motdgen.service", + "debug-shell.service", + "exit.target", + "halt.target", + "kexec.target", + "loadmodules.service", + "man-db-restart-cache-update.service", + "nis-domainname.service", + "poweroff.target", + "proc-sys-fs-binfmt_misc.mount", + "rdisc.service", + "remote-cryptsetup.target", + "runlevel0.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-boot-check-no-failures.service", + "systemd-network-generator.service", + "systemd-networkd-wait-online.service", + "systemd-networkd.service", + "systemd-networkd.socket", + "systemd-pstore.service", + "systemd-resolved.service", + "systemd-time-wait-sync.service", + "systemd-timesyncd.service", + "tcsd.service" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "cloud-init.service", + "ctrl-alt-del.target", + "dbus-broker.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dbus.service", + "dbus.socket", + "dnf-makecache.timer", + "fstrim.timer", + "getty@.service", + "import-state.service", + "reboot.target", + "remote-fs.target", + "runlevel6.target", + "selinux-autorelabel-mark.service", + "sshd.service", + "sshd.socket", + "sssd-kcm.socket", + "sssd.service", + "unbound-anchor.timer" + ], + "timezone": "London" + } +} \ No newline at end of file diff --git a/test/cases/fedora_32-x86_64-vhd-boot.json b/test/cases/fedora_32-x86_64-vhd-boot.json new file mode 100644 index 0000000..54524d9 --- /dev/null +++ b/test/cases/fedora_32-x86_64-vhd-boot.json @@ -0,0 +1,9286 @@ +{ + "boot": { + "type": "azure" + }, + "compose-request": { + "distro": "fedora-32", + "arch": "x86_64", + "image-type": "vhd", + "repositories": [ + { + "baseurl": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ], + "filename": "disk.vhd", + "blueprint": { + "name": "vhd-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm" + }, + "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-six-1.14.0-2.fc32.noarch.rpm" + }, + "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.x86_64.rpm" + }, + "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/geolite2-country-20191217-2.fc32.noarch.rpm" + }, + "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtasn1-4.16.0-1.fc32.x86_64.rpm" + }, + "sha256:052ddc487a29acce1b5d44532f79f8ab594d0ac6565504071f4c7706d97fc552": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gobject-introspection-1.64.1-1.fc32.x86_64.rpm" + }, + "sha256:08c41c10745c172c34880e384cf5cff014a9627f4895e59fa482948b27e2ce9e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-nft-1.8.4-7.fc32.x86_64.rpm" + }, + "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm" + }, + "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm" + }, + "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/findutils-4.7.0-3.fc32.x86_64.rpm" + }, + "sha256:0b7d24759aac33303ff4b101c111dea03ff2529efc95661140e22f629cc1ab7a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nftables-0.9.3-2.fc32.x86_64.rpm" + }, + "sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-tc-5.5.0-1.fc32.x86_64.rpm" + }, + "sha256:0d51c1319ee78978e6ea5a49b815c2078b4ffd4d575e98c70e54ca01c3390eb8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-8.2p1-2.fc32.x86_64.rpm" + }, + "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.x86_64.rpm" + }, + "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-3.0-3.fc32.x86_64.rpm" + }, + "sha256:0fc0193d95d69c780b6feb1cb74759ca2d4804701b3de936dac8429cfbe0f2e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-nftables-0.9.3-2.fc32.x86_64.rpm" + }, + "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-7.fc32.x86_64.rpm" + }, + "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-2.04-12.fc32.x86_64.rpm" + }, + "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/filesystem-3.14-2.fc32.x86_64.rpm" + }, + "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cpio-2.13-4.fc32.x86_64.rpm" + }, + "sha256:129adf9147d5d120546ca8e0fb5f165761106d386d366fe82591e372754d0b4a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-decorator-4.4.0-6.fc32.noarch.rpm" + }, + "sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.31-2.fc32.x86_64.rpm" + }, + "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gpgme-1.13.1-6.fc32.x86_64.rpm" + }, + "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-utils-3.0-3.fc32.x86_64.rpm" + }, + "sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/passwd-0.80-8.fc32.x86_64.rpm" + }, + "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pigz-2.4-6.fc32.x86_64.rpm" + }, + "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-whence-20200316-106.fc32.noarch.rpm" + }, + "sha256:16702883a79532a400d7304146cdb47b0599983b9fb48ab918ef9fa1ce0be394": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtalloc-2.3.1-2.fc32.x86_64.rpm" + }, + "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gmp-6.1.2-13.fc32.x86_64.rpm" + }, + "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libblkid-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/diffutils-3.7-4.fc32.x86_64.rpm" + }, + "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.x86_64.rpm" + }, + "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libksba-1.3.5-11.fc32.x86_64.rpm" + }, + "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-2.26-7.fc32.x86_64.rpm" + }, + "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-5.2.5-1.fc32.x86_64.rpm" + }, + "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmnl-1.0.4-11.fc32.x86_64.rpm" + }, + "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-245.4-1.fc32.x86_64.rpm" + }, + "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-32-1.noarch.rpm" + }, + "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libidn2-2.3.0-2.fc32.x86_64.rpm" + }, + "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-broker-22-1.fc32.x86_64.rpm" + }, + "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-repos-32-1.noarch.rpm" + }, + "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm" + }, + "sha256:24520e03276e0d850169efc9d83b12a9a01eee5d7202dadca12d2e0a8b7352ba": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.31-2.fc32.x86_64.rpm" + }, + "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsecret-0.20.2-2.fc32.x86_64.rpm" + }, + "sha256:25ae9056f75df4efff0d17d916e7c3889c421368613acec7f1c4119bd17eac13": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.24-1.fc32.x86_64.rpm" + }, + "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm" + }, + "sha256:265dee550073120d51e4c94d3d039e5efdee73a0ae1b1faf2b92de0dad1f58fa": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-common-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-plugins-core-4.0.14-1.fc32.noarch.rpm" + }, + "sha256:26cca773f1f258105f0f825a8e0faebcaa183655b5d91cd972afbe791b586478": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-44.fc32.x86_64.rpm" + }, + "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libss-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-5.38-2.fc32.x86_64.rpm" + }, + "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/unbound-libs-1.9.6-2.fc32.x86_64.rpm" + }, + "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsepol-3.0-3.fc32.x86_64.rpm" + }, + "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mpfr-4.0.2-3.fc32.x86_64.rpm" + }, + "sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/less-551-3.fc32.x86_64.rpm" + }, + "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tar-1.32-4.fc32.x86_64.rpm" + }, + "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm" + }, + "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-0.9.3-2.fc32.x86_64.rpm" + }, + "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-udev-245.4-1.fc32.x86_64.rpm" + }, + "sha256:342bdf0143d9145f8846e1b5c3401685e0d1274b66df39ac8cbfb78013313861": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-1.22.10-1.fc32.x86_64.rpm" + }, + "sha256:34411604a91c301dc8489285065c68f3a2f50910717097fedcaade6481c7469e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gobject-base-3.36.0-2.fc32.x86_64.rpm" + }, + "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-0.20.1-4.fc32.x86_64.rpm" + }, + "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.x86_64.rpm" + }, + "sha256:36778f8a4fa111c4f796bbea8fd52f7b9708de8f4351070faa30bc985db59885": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtdb-1.4.3-2.fc32.x86_64.rpm" + }, + "sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/chrony-3.5-8.fc32.x86_64.rpm" + }, + "sha256:3afab9512fd4d56a13c95b530c805ac8b2bc872572ec5bb435eccdd59fbbc8b6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnftnl-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64.rpm" + }, + "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm" + }, + "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/npth-1.6-4.fc32.x86_64.rpm" + }, + "sha256:3c3fb1ca768ecd6ae7905a09cd85b9f67e9f08c46d18779520fb4b29476865c7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-nfs-idmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm" + }, + "sha256:3ee53d0dba5bbfd3bbb2ae4b54e3ebdfa122e1cf120e17ff9c4c35674269e5ad": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-kcm-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.x86_64.rpm" + }, + "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm" + }, + "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-27-1.fc32.x86_64.rpm" + }, + "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-40.fc32.x86_64.rpm" + }, + "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcom_err-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-2.fc32.x86_64.rpm" + }, + "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.x86_64.rpm" + }, + "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/os-prober-1.77-4.fc32.x86_64.rpm" + }, + "sha256:46407b730b272223b8b64d12df0725af571b4a5c5ab89b9f41e12a49e07c6e6b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/c-ares-1.15.0-5.fc32.x86_64.rpm" + }, + "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-4.fc32.x86_64.rpm" + }, + "sha256:47538b1db9720be4699329a8da32d873187d0c6c22f45252614ac5b8a8312482": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/firewalld-filesystem-0.8.2-2.fc32.noarch.rpm" + }, + "sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qemu-img-4.2.0-7.fc32.x86_64.rpm" + }, + "sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-config-generic-050-26.git20200316.fc32.x86_64.rpm" + }, + "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dhcp-common-4.4.2-5.b1.fc32.noarch.rpm" + }, + "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcc-10.0.1-0.11.fc32.x86_64.rpm" + }, + "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm" + }, + "sha256:4b9da0cedada16eb80a2d66b86aa62c9b026501e13a3e947a5a03a06f41d9dbb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/parted-3.3-3.fc32.x86_64.rpm" + }, + "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pam-1.3.1-24.fc32.x86_64.rpm" + }, + "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shadow-utils-4.8.1-2.fc32.x86_64.rpm" + }, + "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.x86_64.rpm" + }, + "sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libndp-1.7-5.fc32.x86_64.rpm" + }, + "sha256:4fca21cfdcbed052e3e9e1eff74c22fb8ffb1fbbeb63e87e2aa540e43a8c0d09": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/v/vim-minimal-8.2.525-1.fc32.x86_64.rpm" + }, + "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-unbound-1.9.6-2.fc32.x86_64.rpm" + }, + "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-common-8.32-3.fc32.1.x86_64.rpm" + }, + "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-9.fc32.x86_64.rpm" + }, + "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gzip-1.10-2.fc32.x86_64.rpm" + }, + "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsemanage-3.0-3.fc32.x86_64.rpm" + }, + "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-libs-27-1.fc32.x86_64.rpm" + }, + "sha256:58c2dec13e8402698adc521f0ac07d45407f1d25c3403ce9acf63ca215ab29e3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyasn1-0.4.8-1.fc32.noarch.rpm" + }, + "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-plugins-core-4.0.14-1.fc32.noarch.rpm" + }, + "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libassuan-2.5.3-3.fc32.x86_64.rpm" + }, + "sha256:599549d72d26b48c45156585a5698898c853e56469142e202d3749b781428465": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-20200316-106.fc32.noarch.rpm" + }, + "sha256:5cd4b781742b64dfff3cb3840ed5bb76f6946fb63f4ab742a51c3505747271a1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/plymouth-0.9.4-14.20200325gite31c81f.fc32.x86_64.rpm" + }, + "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm" + }, + "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-3.fc32.x86_64.rpm" + }, + "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:60589342d58922ba061ac8df7d753a7e7e75162c97ab086739e9d33fbf289091": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmaxminddb-1.3.2-2.fc32.x86_64.rpm" + }, + "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm" + }, + "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.x86_64.rpm" + }, + "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcroco-0.6.13-3.fc32.x86_64.rpm" + }, + "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mkpasswd-5.5.6-1.fc32.x86_64.rpm" + }, + "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libattr-2.4.48-8.fc32.x86_64.rpm" + }, + "sha256:669dfd072daa4223f7e3ceeb5f2e98f157e77fc89398e4bf51e26432f4ead1f1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/WALinuxAgent-2.2.40-7.fc32.noarch.rpm" + }, + "sha256:66bb5b2e99d2c74b82943fe61fe9b9a3674350b0242f69a6854ec9718dcf5e07": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-10.34-9.fc32.x86_64.rpm" + }, + "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm" + }, + "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-5.3.28-40.fc32.x86_64.rpm" + }, + "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-font-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:695ef8ae55ed6a165a3633b3c0d75b320879246386e6df4539be9286f5176cc5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_autofs-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:699c1a3ff311bbaa2380c085fb4f516aa08be474bed02bcd1569d0bbf5b22d07": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-client-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.x86_64.rpm" + }, + "sha256:6a3282927f525629bc0aaf4090e108d33b0709d3d5b35bc442000c2837e7b9b4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iputils-20190515-5.fc32.x86_64.rpm" + }, + "sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dbus-1.2.16-1.fc32.x86_64.rpm" + }, + "sha256:6c9cffafc624879e806b7c822a4ba1984d36d164336dd3ec712867ac488f1851": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ntfs-3g-system-compression-1.0-3.fc32.x86_64.rpm" + }, + "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-10.fc32.x86_64.rpm" + }, + "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/curl-7.69.1-1.fc32.x86_64.rpm" + }, + "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tss2-1331-4.fc32.x86_64.rpm" + }, + "sha256:6fc1181ed798617668f195579acfcf8fb212513a776f376eecfb3d086c66b2d9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libref_array-0.1.5-44.fc32.x86_64.rpm" + }, + "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm" + }, + "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glib2-2.64.1-1.fc32.x86_64.rpm" + }, + "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-8.32-3.fc32.1.x86_64.rpm" + }, + "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/acl-2.2.53-5.fc32.x86_64.rpm" + }, + "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm" + }, + "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libusbx-1.0.23-1.fc32.x86_64.rpm" + }, + "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm" + }, + "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-pam-245.4-1.fc32.x86_64.rpm" + }, + "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grep-3.3-4.fc32.x86_64.rpm" + }, + "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-libs-245.4-1.fc32.x86_64.rpm" + }, + "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bash-5.0.11-2.fc32.x86_64.rpm" + }, + "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libevent-2.1.8-8.fc32.x86_64.rpm" + }, + "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-4.4.16-1.fc32.x86_64.rpm" + }, + "sha256:7c21c21c3e3dbace06bee03fe4835ae6cb1e3ef86750ba2853f39d40dead2309": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipset-7.6-1.fc32.x86_64.rpm" + }, + "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libargon2-20171227-4.fc32.x86_64.rpm" + }, + "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm" + }, + "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pinentry-1.1.0-7.fc32.x86_64.rpm" + }, + "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcurl-7.69.1-1.fc32.x86_64.rpm" + }, + "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.x86_64.rpm" + }, + "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-2.04-12.fc32.x86_64.rpm" + }, + "sha256:808e7209893298d11ac27f148c1b3d1a2b28e303e7930b43659a08dc0f660ac4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/groff-base-1.22.3-21.fc32.x86_64.rpm" + }, + "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/geolite2-city-20191217-2.fc32.noarch.rpm" + }, + "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/which-2.21-19.fc32.x86_64.rpm" + }, + "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuuid-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.x86_64.rpm" + }, + "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-libs-5.2.5-1.fc32.x86_64.rpm" + }, + "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-2.9.6-22.fc32.x86_64.rpm" + }, + "sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-5.5.0-1.fc32.x86_64.rpm" + }, + "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libffi-3.1-24.fc32.x86_64.rpm" + }, + "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fonts-filesystem-2.0.3-1.fc32.noarch.rpm" + }, + "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.x86_64.rpm" + }, + "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libarchive-3.4.2-1.fc32.x86_64.rpm" + }, + "sha256:89c972ec7d2ab305c91c23bc248562c76f0ae645a9ed9f94d312e2f57c4d38fe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-5.6.6-300.fc32.x86_64.rpm" + }, + "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/popt-1.16-19.fc32.x86_64.rpm" + }, + "sha256:8b148415fb6a583ef131d0ddff44f3209c30d0299fde7b20cd3ea385590927c1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-clients-8.2p1-2.fc32.x86_64.rpm" + }, + "sha256:8c047278ce11e7ba7169a9c9537c3c6544f52c7eee8754179acd839ed59c028f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dhcp-client-4.4.2-5.b1.fc32.x86_64.rpm" + }, + "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-3.0-2.fc32.x86_64.rpm" + }, + "sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnl3-3.5.0-2.fc32.x86_64.rpm" + }, + "sha256:8ee8c4bbf024b998ffb77a6b4194a2306ac21c5a6fcf70c8c81a0fbf38f7c7fc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-firewall-0.8.2-2.fc32.noarch.rpm" + }, + "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/expat-2.2.8-2.fc32.x86_64.rpm" + }, + "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:907393755387a351806ec2afff376e7491f177116caadd12f07d0fcbed796750": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-8.fc32.x86_64.rpm" + }, + "sha256:924367aa63693da4660dcb806fbf52b3bcb7c4d12b40c4b4ba6329079936d073": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/net-tools-2.0-0.56.20160912git.fc32.x86_64.rpm" + }, + "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm" + }, + "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre-8.44-1.fc32.x86_64.rpm" + }, + "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-5.fc32.noarch.rpm" + }, + "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsigsegv-2.11-10.fc32.x86_64.rpm" + }, + "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfdisk-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libzstd-1.4.4-2.fc32.x86_64.rpm" + }, + "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.x86_64.rpm" + }, + "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm" + }, + "sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/jansson-2.12-5.fc32.x86_64.rpm" + }, + "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.x86_64.rpm" + }, + "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-050-26.git20200316.fc32.x86_64.rpm" + }, + "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/util-linux-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libs-0.179-1.fc32.x86_64.rpm" + }, + "sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libedit-3.1-32.20191231cvs.fc32.x86_64.rpm" + }, + "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm" + }, + "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgpg-error-1.36-3.fc32.x86_64.rpm" + }, + "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libyaml-0.2.2-3.fc32.x86_64.rpm" + }, + "sha256:9d4691918d7add910e8c03d61cccda0316b62d77b30ac2e502cf2e55289d1823": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcollection-0.7.0-44.fc32.x86_64.rpm" + }, + "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnutls-3.6.13-1.fc32.x86_64.rpm" + }, + "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-6.fc32.x86_64.rpm" + }, + "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpwquality-1.4.2-2.fc32.x86_64.rpm" + }, + "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-2.2.0-1.fc32.x86_64.rpm" + }, + "sha256:a1613e90865db93fb578b8ee1a4ee40bd396c6c9f2fb2a14757acacecb9f23e8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-core-5.6.6-300.fc32.x86_64.rpm" + }, + "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-common-32-1.noarch.rpm" + }, + "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shared-mime-info-1.15-3.fc32.x86_64.rpm" + }, + "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm" + }, + "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm" + }, + "sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libaio-0.3.111-7.fc32.x86_64.rpm" + }, + "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm" + }, + "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxml2-2.9.10-3.fc32.x86_64.rpm" + }, + "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnghttp2-1.40.0-2.fc32.x86_64.rpm" + }, + "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/librepo-1.11.1-4.fc32.x86_64.rpm" + }, + "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbrotli-1.0.7-10.fc32.x86_64.rpm" + }, + "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.x86_64.rpm" + }, + "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openldap-2.4.47-4.fc32.x86_64.rpm" + }, + "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.x86_64.rpm" + }, + "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm" + }, + "sha256:af66820023c984d8b981ecac715d0c2daec1f89dcb69bed76ddf58b0ee80c1b1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm" + }, + "sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcbor-0.5.0-7.fc32.x86_64.rpm" + }, + "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/y/yum-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-6.1-15.20191109.fc32.x86_64.rpm" + }, + "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpcap-1.9.1-3.fc32.x86_64.rpm" + }, + "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-4.fc32.x86_64.rpm" + }, + "sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuser-0.62-24.fc32.x86_64.rpm" + }, + "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-ng-0.7.10-2.fc32.x86_64.rpm" + }, + "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-5.fc32.x86_64.rpm" + }, + "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-3.8.2-2.fc32.x86_64.rpm" + }, + "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm" + }, + "sha256:b8ecd7fa0e7e072828e374dfb0d61bb8eecca7c190f3661050cee5e3fc8854b4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/firewalld-0.8.2-2.fc32.noarch.rpm" + }, + "sha256:b98687828b1d222ea73ebb8457450913dac58dd0be2e430a93bb7e98ba816505": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-modules-5.6.6-300.fc32.x86_64.rpm" + }, + "sha256:bb154a90c968150172036d86f0c9fc2a24b5799718bc4d835cb10d0758890c67": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfsidmap-2.4.3-0.fc32.x86_64.rpm" + }, + "sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/initscripts-10.02-3.fc32.x86_64.rpm" + }, + "sha256:be78c188a2b301e08efd8ebc706d913163c0fa63af0ab0e4f0e20b9783876f43": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ntfs-3g-2017.3.23-13.fc32.x86_64.rpm" + }, + "sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/psmisc-23.3-3.fc32.x86_64.rpm" + }, + "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsolv-0.7.11-2.fc32.x86_64.rpm" + }, + "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.x86_64.rpm" + }, + "sha256:bf973d907c3ae07ef84df09f90561fe9146fb0d122616ae70cdd7f5c31f24dd8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ntfsprogs-2017.3.23-13.fc32.x86_64.rpm" + }, + "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nettle-3.5.1-5.fc32.x86_64.rpm" + }, + "sha256:c0a0c6f3e30c20815496be8de00f9596737e2693feb85f7484f200ffa9174530": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpipeline-1.5.2-2.fc32.x86_64.rpm" + }, + "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zlib-1.2.11-21.fc32.x86_64.rpm" + }, + "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-1.02.171-1.fc32.x86_64.rpm" + }, + "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.x86_64.rpm" + }, + "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.x86_64.rpm" + }, + "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.04-12.fc32.noarch.rpm" + }, + "sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dosfstools-4.1-10.fc32.x86_64.rpm" + }, + "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/alternatives-1.11-6.fc32.x86_64.rpm" + }, + "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-26.fc32.x86_64.rpm" + }, + "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rootfiles-8.1-27.fc32.noarch.rpm" + }, + "sha256:ca540fb7088948fdfe6e6b52a5e2b6a74d2d17136857da9f3f4a1ee29c8eb74b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdhash-0.5.0-44.fc32.x86_64.rpm" + }, + "sha256:ca80c458fab5bdde0276702f06217d1219085428560af6039aa1c5cf1e58ff3b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/man-db-2.9.0-2.fc32.x86_64.rpm" + }, + "sha256:cb0c64cc81e0b384bbc9d27ffcb2a655b13c91a799aad8972264aed1767926a3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-slip-dbus-0.6.4-19.fc32.noarch.rpm" + }, + "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.16-1.fc32.x86_64.rpm" + }, + "sha256:cbdc61d713e4cbe52b2bece117912da0f1e3782cb3b33caa068e96c854c990be": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grubby-8.40-40.fc32.x86_64.rpm" + }, + "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-2.2.19-1.fc32.x86_64.rpm" + }, + "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-4.fc32.x86_64.rpm" + }, + "sha256:cd16f6ef433d7dc6860b19f3d77b666a03d35361aba78ee09d772575c2f69cc0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libldb-2.1.1-1.fc32.x86_64.rpm" + }, + "sha256:ce1a80b0ba6f09a7e5a188436088dd31d10c5f7b43dbe9c1788f705127c8e6b2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-44.fc32.x86_64.rpm" + }, + "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpsl-0.21.0-4.fc32.x86_64.rpm" + }, + "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm" + }, + "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gawk-5.0.1-7.fc32.x86_64.rpm" + }, + "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.x86_64.rpm" + }, + "sha256:d1e244b8b5ce7404846e97d96c762c8c18ff6447301f6fc63f50e615029aa7cd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-server-8.2p1-2.fc32.x86_64.rpm" + }, + "sha256:d2abba1a0523bd9df5073900593ab13ec2ed2e391440be4d883314fa154370f8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-slip-0.6.4-19.fc32.noarch.rpm" + }, + "sha256:d36f08a44d6a3bc95f995c858ecb5e0d7fb22a8236008267024dd6a0ff66cc85": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/plymouth-scripts-0.9.4-14.20200325gite31c81f.fc32.x86_64.rpm" + }, + "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/json-c-0.13.1-9.fc32.x86_64.rpm" + }, + "sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-libs-0.116-7.fc32.x86_64.rpm" + }, + "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgomp-10.0.1-0.11.fc32.x86_64.rpm" + }, + "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-1.1.1d-7.fc32.x86_64.rpm" + }, + "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-8.fc32.noarch.rpm" + }, + "sha256:dab54013f8316b766c40c71f9c0c2124c1f0c219b417d588b5ba1dccf7d63fd7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtevent-0.10.2-2.fc32.x86_64.rpm" + }, + "sha256:dc5a84049a6fc1f7c2a709ab3c2fa53de65e864f26085f5ca69864f5c2f6955d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/plymouth-core-libs-0.9.4-14.20200325gite31c81f.fc32.x86_64.rpm" + }, + "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-2.31-2.fc32.x86_64.rpm" + }, + "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsmartcols-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-0.23.20-1.fc32.x86_64.rpm" + }, + "sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/h/hostname-3.23-2.fc32.x86_64.rpm" + }, + "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libseccomp-2.4.2-3.fc32.x86_64.rpm" + }, + "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-libs-5.38-2.fc32.x86_64.rpm" + }, + "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/krb5-libs-1.18-1.fc32.x86_64.rpm" + }, + "sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sudo-1.9.0-0.1.b4.fc32.x86_64.rpm" + }, + "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmount-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-common-2.31-2.fc32.x86_64.rpm" + }, + "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcomps-0.1.14-4.fc32.x86_64.rpm" + }, + "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.x86_64.rpm" + }, + "sha256:ebbace15f986288bba7681f44a111b14bcc7cae00b7a1faadaa838bd51897357": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfido2-1.3.1-1.fc32.x86_64.rpm" + }, + "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm" + }, + "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libs-3.8.2-2.fc32.x86_64.rpm" + }, + "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.x86_64.rpm" + }, + "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-1.12.16-4.fc32.x86_64.rpm" + }, + "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libverto-0.3.0-9.fc32.x86_64.rpm" + }, + "sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm" + }, + "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.x86_64.rpm" + }, + "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/readline-8.0-4.fc32.x86_64.rpm" + }, + "sha256:f2715fc8a04d33716f40f5b34466e082140df7ff3b7b972c29655d4dfc6e3a72": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-8.fc32.x86_64.rpm" + }, + "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-7.fc32.x86_64.rpm" + }, + "sha256:f391fe0e21e51e7c864f8bce1b5825419f4096023b5b90b3976bbd69d6a4d720": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_certmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libelf-0.179-1.fc32.x86_64.rpm" + }, + "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-libs-1.8.4-7.fc32.x86_64.rpm" + }, + "sha256:f60fc561675e41ffa2c48b229960291e2438441d5ed758c1f28cb06b5d4e4ea9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipset-libs-7.6-1.fc32.x86_64.rpm" + }, + "sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libselinux-3.0-3.fc32.x86_64.rpm" + }, + "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libacl-2.2.53-5.fc32.x86_64.rpm" + }, + "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmodulemd-2.9.1-1.fc32.x86_64.rpm" + }, + "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libutempter-1.1.6-18.fc32.x86_64.rpm" + }, + "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdnf-0.45.0-3.fc32.x86_64.rpm" + }, + "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libunistring-0.9.10-7.fc32.x86_64.rpm" + }, + "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kpartx-0.8.2-3.fc32.x86_64.rpm" + }, + "sha256:fd2a2dd726d855f877296227fb351883d647df28b1b0085f525d87df622d49e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.22.10-1.fc32.x86_64.rpm" + }, + "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-4.fc32.x86_64.rpm" + }, + "sha256:fe70d5a1c818367be3a5a7e60cbb379f020f97f63ba3c13ed09740f45a43154a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipcalc-0.4.0-2.fc32.x86_64.rpm" + }, + "sha256:fed6244fce0c0b48933d622dfbb00cf73931b2f746b27675a025a33b591d9820": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libini_config-1.3.1-44.fc32.x86_64.rpm" + }, + "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.x86_64.rpm" + }, + "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sed-4.5-5.fc32.x86_64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "checksum": "sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec", + "check_gpg": true + }, + { + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "checksum": "sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe", + "check_gpg": true + }, + { + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "checksum": "sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4", + "check_gpg": true + }, + { + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "checksum": "sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9", + "check_gpg": true + }, + { + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "checksum": "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b", + "check_gpg": true + }, + { + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts", + "labels": { + "/usr/bin/cp": "system_u:object_r:install_exec_t:s0" + } + } + } + ] + }, + "runner": "org.osbuild.fedora32" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:342bdf0143d9145f8846e1b5c3401685e0d1274b66df39ac8cbfb78013313861", + "check_gpg": true + }, + { + "checksum": "sha256:fd2a2dd726d855f877296227fb351883d647df28b1b0085f525d87df622d49e4", + "check_gpg": true + }, + { + "checksum": "sha256:669dfd072daa4223f7e3ceeb5f2e98f157e77fc89398e4bf51e26432f4ead1f1", + "check_gpg": true + }, + { + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "checksum": "sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d", + "check_gpg": true + }, + { + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "checksum": "sha256:46407b730b272223b8b64d12df0725af571b4a5c5ab89b9f41e12a49e07c6e6b", + "check_gpg": true + }, + { + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "checksum": "sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57", + "check_gpg": true + }, + { + "checksum": "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309", + "check_gpg": true + }, + { + "checksum": "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56", + "check_gpg": true + }, + { + "checksum": "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280", + "check_gpg": true + }, + { + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "checksum": "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315", + "check_gpg": true + }, + { + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "checksum": "sha256:8c047278ce11e7ba7169a9c9537c3c6544f52c7eee8754179acd839ed59c028f", + "check_gpg": true + }, + { + "checksum": "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013", + "check_gpg": true + }, + { + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "checksum": "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d", + "check_gpg": true + }, + { + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "checksum": "sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73", + "check_gpg": true + }, + { + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "checksum": "sha256:907393755387a351806ec2afff376e7491f177116caadd12f07d0fcbed796750", + "check_gpg": true + }, + { + "checksum": "sha256:f2715fc8a04d33716f40f5b34466e082140df7ff3b7b972c29655d4dfc6e3a72", + "check_gpg": true + }, + { + "checksum": "sha256:b8ecd7fa0e7e072828e374dfb0d61bb8eecca7c190f3661050cee5e3fc8854b4", + "check_gpg": true + }, + { + "checksum": "sha256:47538b1db9720be4699329a8da32d873187d0c6c22f45252614ac5b8a8312482", + "check_gpg": true + }, + { + "checksum": "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012", + "check_gpg": true + }, + { + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "checksum": "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3", + "check_gpg": true + }, + { + "checksum": "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f", + "check_gpg": true + }, + { + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "checksum": "sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe", + "check_gpg": true + }, + { + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "checksum": "sha256:24520e03276e0d850169efc9d83b12a9a01eee5d7202dadca12d2e0a8b7352ba", + "check_gpg": true + }, + { + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "checksum": "sha256:052ddc487a29acce1b5d44532f79f8ab594d0ac6565504071f4c7706d97fc552", + "check_gpg": true + }, + { + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "checksum": "sha256:808e7209893298d11ac27f148c1b3d1a2b28e303e7930b43659a08dc0f660ac4", + "check_gpg": true + }, + { + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "checksum": "sha256:cbdc61d713e4cbe52b2bece117912da0f1e3782cb3b33caa068e96c854c990be", + "check_gpg": true + }, + { + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "checksum": "sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823", + "check_gpg": true + }, + { + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "checksum": "sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339", + "check_gpg": true + }, + { + "checksum": "sha256:fe70d5a1c818367be3a5a7e60cbb379f020f97f63ba3c13ed09740f45a43154a", + "check_gpg": true + }, + { + "checksum": "sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684", + "check_gpg": true + }, + { + "checksum": "sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae", + "check_gpg": true + }, + { + "checksum": "sha256:7c21c21c3e3dbace06bee03fe4835ae6cb1e3ef86750ba2853f39d40dead2309", + "check_gpg": true + }, + { + "checksum": "sha256:f60fc561675e41ffa2c48b229960291e2438441d5ed758c1f28cb06b5d4e4ea9", + "check_gpg": true + }, + { + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "checksum": "sha256:08c41c10745c172c34880e384cf5cff014a9627f4895e59fa482948b27e2ce9e", + "check_gpg": true + }, + { + "checksum": "sha256:6a3282927f525629bc0aaf4090e108d33b0709d3d5b35bc442000c2837e7b9b4", + "check_gpg": true + }, + { + "checksum": "sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8", + "check_gpg": true + }, + { + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "checksum": "sha256:89c972ec7d2ab305c91c23bc248562c76f0ae645a9ed9f94d312e2f57c4d38fe", + "check_gpg": true + }, + { + "checksum": "sha256:a1613e90865db93fb578b8ee1a4ee40bd396c6c9f2fb2a14757acacecb9f23e8", + "check_gpg": true + }, + { + "checksum": "sha256:b98687828b1d222ea73ebb8457450913dac58dd0be2e430a93bb7e98ba816505", + "check_gpg": true + }, + { + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "checksum": "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0", + "check_gpg": true + }, + { + "checksum": "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389", + "check_gpg": true + }, + { + "checksum": "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca", + "check_gpg": true + }, + { + "checksum": "sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884", + "check_gpg": true + }, + { + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "checksum": "sha256:26cca773f1f258105f0f825a8e0faebcaa183655b5d91cd972afbe791b586478", + "check_gpg": true + }, + { + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "checksum": "sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5", + "check_gpg": true + }, + { + "checksum": "sha256:9d4691918d7add910e8c03d61cccda0316b62d77b30ac2e502cf2e55289d1823", + "check_gpg": true + }, + { + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "checksum": "sha256:ca540fb7088948fdfe6e6b52a5e2b6a74d2d17136857da9f3f4a1ee29c8eb74b", + "check_gpg": true + }, + { + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "checksum": "sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09", + "check_gpg": true + }, + { + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "checksum": "sha256:ebbace15f986288bba7681f44a111b14bcc7cae00b7a1faadaa838bd51897357", + "check_gpg": true + }, + { + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "checksum": "sha256:fed6244fce0c0b48933d622dfbb00cf73931b2f746b27675a025a33b591d9820", + "check_gpg": true + }, + { + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "checksum": "sha256:cd16f6ef433d7dc6860b19f3d77b666a03d35361aba78ee09d772575c2f69cc0", + "check_gpg": true + }, + { + "checksum": "sha256:60589342d58922ba061ac8df7d753a7e7e75162c97ab086739e9d33fbf289091", + "check_gpg": true + }, + { + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "checksum": "sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f", + "check_gpg": true + }, + { + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "checksum": "sha256:bb154a90c968150172036d86f0c9fc2a24b5799718bc4d835cb10d0758890c67", + "check_gpg": true + }, + { + "checksum": "sha256:3afab9512fd4d56a13c95b530c805ac8b2bc872572ec5bb435eccdd59fbbc8b6", + "check_gpg": true + }, + { + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "checksum": "sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1", + "check_gpg": true + }, + { + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "checksum": "sha256:ce1a80b0ba6f09a7e5a188436088dd31d10c5f7b43dbe9c1788f705127c8e6b2", + "check_gpg": true + }, + { + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "checksum": "sha256:c0a0c6f3e30c20815496be8de00f9596737e2693feb85f7484f200ffa9174530", + "check_gpg": true + }, + { + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1181ed798617668f195579acfcf8fb212513a776f376eecfb3d086c66b2d9", + "check_gpg": true + }, + { + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "checksum": "sha256:695ef8ae55ed6a165a3633b3c0d75b320879246386e6df4539be9286f5176cc5", + "check_gpg": true + }, + { + "checksum": "sha256:f391fe0e21e51e7c864f8bce1b5825419f4096023b5b90b3976bbd69d6a4d720", + "check_gpg": true + }, + { + "checksum": "sha256:599549d72d26b48c45156585a5698898c853e56469142e202d3749b781428465", + "check_gpg": true + }, + { + "checksum": "sha256:66bb5b2e99d2c74b82943fe61fe9b9a3674350b0242f69a6854ec9718dcf5e07", + "check_gpg": true + }, + { + "checksum": "sha256:af66820023c984d8b981ecac715d0c2daec1f89dcb69bed76ddf58b0ee80c1b1", + "check_gpg": true + }, + { + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "checksum": "sha256:16702883a79532a400d7304146cdb47b0599983b9fb48ab918ef9fa1ce0be394", + "check_gpg": true + }, + { + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "checksum": "sha256:36778f8a4fa111c4f796bbea8fd52f7b9708de8f4351070faa30bc985db59885", + "check_gpg": true + }, + { + "checksum": "sha256:dab54013f8316b766c40c71f9c0c2124c1f0c219b417d588b5ba1dccf7d63fd7", + "check_gpg": true + }, + { + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "checksum": "sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975", + "check_gpg": true + }, + { + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "checksum": "sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467", + "check_gpg": true + }, + { + "checksum": "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4", + "check_gpg": true + }, + { + "checksum": "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9", + "check_gpg": true + }, + { + "checksum": "sha256:25ae9056f75df4efff0d17d916e7c3889c421368613acec7f1c4119bd17eac13", + "check_gpg": true + }, + { + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "checksum": "sha256:ca80c458fab5bdde0276702f06217d1219085428560af6039aa1c5cf1e58ff3b", + "check_gpg": true + }, + { + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "checksum": "sha256:924367aa63693da4660dcb806fbf52b3bcb7c4d12b40c4b4ba6329079936d073", + "check_gpg": true + }, + { + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "checksum": "sha256:0b7d24759aac33303ff4b101c111dea03ff2529efc95661140e22f629cc1ab7a", + "check_gpg": true + }, + { + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "checksum": "sha256:be78c188a2b301e08efd8ebc706d913163c0fa63af0ab0e4f0e20b9783876f43", + "check_gpg": true + }, + { + "checksum": "sha256:6c9cffafc624879e806b7c822a4ba1984d36d164336dd3ec712867ac488f1851", + "check_gpg": true + }, + { + "checksum": "sha256:bf973d907c3ae07ef84df09f90561fe9146fb0d122616ae70cdd7f5c31f24dd8", + "check_gpg": true + }, + { + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "checksum": "sha256:0d51c1319ee78978e6ea5a49b815c2078b4ffd4d575e98c70e54ca01c3390eb8", + "check_gpg": true + }, + { + "checksum": "sha256:8b148415fb6a583ef131d0ddff44f3209c30d0299fde7b20cd3ea385590927c1", + "check_gpg": true + }, + { + "checksum": "sha256:d1e244b8b5ce7404846e97d96c762c8c18ff6447301f6fc63f50e615029aa7cd", + "check_gpg": true + }, + { + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "checksum": "sha256:4b9da0cedada16eb80a2d66b86aa62c9b026501e13a3e947a5a03a06f41d9dbb", + "check_gpg": true + }, + { + "checksum": "sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719", + "check_gpg": true + }, + { + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "checksum": "sha256:5cd4b781742b64dfff3cb3840ed5bb76f6946fb63f4ab742a51c3505747271a1", + "check_gpg": true + }, + { + "checksum": "sha256:dc5a84049a6fc1f7c2a709ab3c2fa53de65e864f26085f5ca69864f5c2f6955d", + "check_gpg": true + }, + { + "checksum": "sha256:d36f08a44d6a3bc95f995c858ecb5e0d7fb22a8236008267024dd6a0ff66cc85", + "check_gpg": true + }, + { + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "checksum": "sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386", + "check_gpg": true + }, + { + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "checksum": "sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444", + "check_gpg": true + }, + { + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "checksum": "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862", + "check_gpg": true + }, + { + "checksum": "sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070", + "check_gpg": true + }, + { + "checksum": "sha256:129adf9147d5d120546ca8e0fb5f165761106d386d366fe82591e372754d0b4a", + "check_gpg": true + }, + { + "checksum": "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4", + "check_gpg": true + }, + { + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "checksum": "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576", + "check_gpg": true + }, + { + "checksum": "sha256:8ee8c4bbf024b998ffb77a6b4194a2306ac21c5a6fcf70c8c81a0fbf38f7c7fc", + "check_gpg": true + }, + { + "checksum": "sha256:34411604a91c301dc8489285065c68f3a2f50910717097fedcaade6481c7469e", + "check_gpg": true + }, + { + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "checksum": "sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124", + "check_gpg": true + }, + { + "checksum": "sha256:0fc0193d95d69c780b6feb1cb74759ca2d4804701b3de936dac8429cfbe0f2e9", + "check_gpg": true + }, + { + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "checksum": "sha256:58c2dec13e8402698adc521f0ac07d45407f1d25c3403ce9acf63ca215ab29e3", + "check_gpg": true + }, + { + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "checksum": "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f", + "check_gpg": true + }, + { + "checksum": "sha256:d2abba1a0523bd9df5073900593ab13ec2ed2e391440be4d883314fa154370f8", + "check_gpg": true + }, + { + "checksum": "sha256:cb0c64cc81e0b384bbc9d27ffcb2a655b13c91a799aad8972264aed1767926a3", + "check_gpg": true + }, + { + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "checksum": "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58", + "check_gpg": true + }, + { + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "checksum": "sha256:699c1a3ff311bbaa2380c085fb4f516aa08be474bed02bcd1569d0bbf5b22d07", + "check_gpg": true + }, + { + "checksum": "sha256:265dee550073120d51e4c94d3d039e5efdee73a0ae1b1faf2b92de0dad1f58fa", + "check_gpg": true + }, + { + "checksum": "sha256:3ee53d0dba5bbfd3bbb2ae4b54e3ebdfa122e1cf120e17ff9c4c35674269e5ad", + "check_gpg": true + }, + { + "checksum": "sha256:3c3fb1ca768ecd6ae7905a09cd85b9f67e9f08c46d18779520fb4b29476865c7", + "check_gpg": true + }, + { + "checksum": "sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b", + "check_gpg": true + }, + { + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "checksum": "sha256:4fca21cfdcbed052e3e9e1eff74c22fb8ffb1fbbeb63e87e2aa540e43a8c0d09", + "check_gpg": true + }, + { + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "checksum": "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf", + "check_gpg": true + }, + { + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "redhat": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "vfs_type": "ext4", + "path": "/", + "options": "defaults", + "freq": 1, + "passno": 1 + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "kernel_opts": "ro biosdevname=0 rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0", + "legacy": "i386-pc" + } + }, + { + "name": "org.osbuild.systemd", + "options": { + "enabled_services": [ + "sshd", + "waagent" + ], + "disabled_services": [ + "proc-sys-fs-binfmt_misc.mount", + "loadmodules.service" + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "vpc", + "filename": "disk.vhd", + "size": 2147483648, + "ptuuid": "0x14fc63d2", + "pttype": "mbr", + "partitions": [ + { + "start": 2048, + "bootable": true, + "filesystem": { + "type": "ext4", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/acl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/alternatives-1.11-6.fc32.x86_64.rpm", + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm", + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bash-5.0.11-2.fc32.x86_64.rpm", + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.x86_64.rpm", + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2020.2.40", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm", + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-common-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.13", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cpio-2.13-4.fc32.x86_64.rpm", + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.x86_64.rpm", + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/curl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.x86_64.rpm", + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "22", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-broker-22-1.fc32.x86_64.rpm", + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm", + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-5.fc32.x86_64.rpm", + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/diffutils-3.7-4.fc32.x86_64.rpm", + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dosfstools-4.1-10.fc32.x86_64.rpm", + "checksum": "sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-050-26.git20200316.fc32.x86_64.rpm", + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm", + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libelf-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libs-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/expat-2.2.8-2.fc32.x86_64.rpm", + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm", + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-32-1.noarch.rpm", + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-common-32-1.noarch.rpm", + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-repos-32-1.noarch.rpm", + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-libs-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.14", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/filesystem-3.14-2.fc32.x86_64.rpm", + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.7.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/findutils-4.7.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-9.fc32.x86_64.rpm", + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gawk-5.0.1-7.fc32.x86_64.rpm", + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.x86_64.rpm", + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.64.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glib2-2.64.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-common-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gmp-6.1.2-13.fc32.x86_64.rpm", + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.13", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnutls-3.6.13-1.fc32.x86_64.rpm", + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gpgme-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grep-3.3-4.fc32.x86_64.rpm", + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gzip-1.10-2.fc32.x86_64.rpm", + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.x86_64.rpm", + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-libs-1.8.4-7.fc32.x86_64.rpm", + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/json-c-0.13.1-9.fc32.x86_64.rpm", + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-2.2.0-1.fc32.x86_64.rpm", + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-27-1.fc32.x86_64.rpm", + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-libs-27-1.fc32.x86_64.rpm", + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kpartx-0.8.2-3.fc32.x86_64.rpm", + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/krb5-libs-1.18-1.fc32.x86_64.rpm", + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libacl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.111", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libaio-0.3.111-7.fc32.x86_64.rpm", + "checksum": "sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.2", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libarchive-3.4.2-1.fc32.x86_64.rpm", + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libargon2-20171227-4.fc32.x86_64.rpm", + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libassuan-2.5.3-3.fc32.x86_64.rpm", + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libattr-2.4.48-8.fc32.x86_64.rpm", + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libblkid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "name": "libbrotli", + "epoch": 0, + "version": "1.0.7", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbrotli-1.0.7-10.fc32.x86_64.rpm", + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-2.26-7.fc32.x86_64.rpm", + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-ng-0.7.10-2.fc32.x86_64.rpm", + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcom_err-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcroco-0.6.13-3.fc32.x86_64.rpm", + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcurl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libevent-2.1.8-8.fc32.x86_64.rpm", + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfdisk-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libffi-3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcc-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-3.fc32.x86_64.rpm", + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgomp-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgpg-error-1.36-3.fc32.x86_64.rpm", + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libidn2-2.3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libksba-1.3.5-11.fc32.x86_64.rpm", + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-10.fc32.x86_64.rpm", + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmnl-1.0.4-11.fc32.x86_64.rpm", + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmodulemd-2.9.1-1.fc32.x86_64.rpm", + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmount-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.x86_64.rpm", + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "17.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.x86_64.rpm", + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.40.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnghttp2-1.40.0-2.fc32.x86_64.rpm", + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "6.20180605git4a062cf.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64.rpm", + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpcap-1.9.1-3.fc32.x86_64.rpm", + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpsl-0.21.0-4.fc32.x86_64.rpm", + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpwquality-1.4.2-2.fc32.x86_64.rpm", + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.11.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/librepo-1.11.1-4.fc32.x86_64.rpm", + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.12.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm", + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libseccomp-2.4.2-3.fc32.x86_64.rpm", + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.20.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsecret-0.20.2-2.fc32.x86_64.rpm", + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-utils-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsemanage-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsepol-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsigsegv-2.11-10.fc32.x86_64.rpm", + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsmartcols-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsolv-0.7.11-2.fc32.x86_64.rpm", + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libss-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-0.9.3-2.fc32.x86_64.rpm", + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm", + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.16.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtasn1-4.16.0-1.fc32.x86_64.rpm", + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.2.5", + "release": "1.rc2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.x86_64.rpm", + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libunistring-0.9.10-7.fc32.x86_64.rpm", + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libusbx-1.0.23-1.fc32.x86_64.rpm", + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "18.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libutempter-1.1.6-18.fc32.x86_64.rpm", + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuuid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libverto-0.3.0-9.fc32.x86_64.rpm", + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.10.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.x86_64.rpm", + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.10", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxml2-2.9.10-3.fc32.x86_64.rpm", + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libyaml-0.2.2-3.fc32.x86_64.rpm", + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libzstd-1.4.4-2.fc32.x86_64.rpm", + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-7.fc32.x86_64.rpm", + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-2.fc32.x86_64.rpm", + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mkpasswd-5.5.6-1.fc32.x86_64.rpm", + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "4.0.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mpfr-4.0.2-3.fc32.x86_64.rpm", + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm", + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nettle-3.5.1-5.fc32.x86_64.rpm", + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/npth-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openldap-2.4.47-4.fc32.x86_64.rpm", + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.x86_64.rpm", + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/os-prober-1.77-4.fc32.x86_64.rpm", + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pam-1.3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.44", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre-8.44-1.fc32.x86_64.rpm", + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-10.34-9.fc32.x86_64.rpm", + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "name": "pcre2-syntax", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm", + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pigz-2.4-6.fc32.x86_64.rpm", + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pinentry-1.1.0-7.fc32.x86_64.rpm", + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/popt-1.16-19.fc32.x86_64.rpm", + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-7.fc32.x86_64.rpm", + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm", + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libs-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-unbound-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "name": "qemu-img", + "epoch": 2, + "version": "4.2.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qemu-img-4.2.0-7.fc32.x86_64.rpm", + "checksum": "sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.x86_64.rpm", + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/readline-8.0-4.fc32.x86_64.rpm", + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sed-4.5-5.fc32.x86_64.rpm", + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.6", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm", + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.8.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shadow-utils-4.8.1-2.fc32.x86_64.rpm", + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.15", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shared-mime-info-1.15-3.fc32.x86_64.rpm", + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.31.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-libs-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-pam-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm", + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-udev-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tar-1.32-4.fc32.x86_64.rpm", + "checksum": "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tss2-1331-4.fc32.x86_64.rpm", + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm", + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/unbound-libs-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/util-linux-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/which-2.21-19.fc32.x86_64.rpm", + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm", + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.29", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm", + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-libs-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "21.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zlib-1.2.11-21.fc32.x86_64.rpm", + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.22.10", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-1.22.10-1.fc32.x86_64.rpm", + "checksum": "sha256:342bdf0143d9145f8846e1b5c3401685e0d1274b66df39ac8cbfb78013313861", + "check_gpg": true + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.22.10", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.22.10-1.fc32.x86_64.rpm", + "checksum": "sha256:fd2a2dd726d855f877296227fb351883d647df28b1b0085f525d87df622d49e4", + "check_gpg": true + }, + { + "name": "WALinuxAgent", + "epoch": 0, + "version": "2.2.40", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/WALinuxAgent-2.2.40-7.fc32.noarch.rpm", + "checksum": "sha256:669dfd072daa4223f7e3ceeb5f2e98f157e77fc89398e4bf51e26432f4ead1f1", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/acl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/alternatives-1.11-6.fc32.x86_64.rpm", + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm", + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bash-5.0.11-2.fc32.x86_64.rpm", + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.x86_64.rpm", + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.15.0", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/c-ares-1.15.0-5.fc32.x86_64.rpm", + "checksum": "sha256:46407b730b272223b8b64d12df0725af571b4a5c5ab89b9f41e12a49e07c6e6b", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2020.2.40", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm", + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/chrony-3.5-8.fc32.x86_64.rpm", + "checksum": "sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-sans-mono-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-serif-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-common-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.13", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cpio-2.13-4.fc32.x86_64.rpm", + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.x86_64.rpm", + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/curl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.x86_64.rpm", + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "22", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-broker-22-1.fc32.x86_64.rpm", + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm", + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "name": "dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-5.fc32.x86_64.rpm", + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.4.2", + "release": "5.b1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dhcp-client-4.4.2-5.b1.fc32.x86_64.rpm", + "checksum": "sha256:8c047278ce11e7ba7169a9c9537c3c6544f52c7eee8754179acd839ed59c028f", + "check_gpg": true + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.4.2", + "release": "5.b1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dhcp-common-4.4.2-5.b1.fc32.noarch.rpm", + "checksum": "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/diffutils-3.7-4.fc32.x86_64.rpm", + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.14", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-plugins-core-4.0.14-1.fc32.noarch.rpm", + "checksum": "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-050-26.git20200316.fc32.x86_64.rpm", + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-config-generic-050-26.git20200316.fc32.x86_64.rpm", + "checksum": "sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm", + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libelf-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libs-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/expat-2.2.8-2.fc32.x86_64.rpm", + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm", + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-32-1.noarch.rpm", + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-common-32-1.noarch.rpm", + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-repos-32-1.noarch.rpm", + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-libs-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.14", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/filesystem-3.14-2.fc32.x86_64.rpm", + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.7.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/findutils-4.7.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-8.fc32.x86_64.rpm", + "checksum": "sha256:907393755387a351806ec2afff376e7491f177116caadd12f07d0fcbed796750", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-8.fc32.x86_64.rpm", + "checksum": "sha256:f2715fc8a04d33716f40f5b34466e082140df7ff3b7b972c29655d4dfc6e3a72", + "check_gpg": true + }, + { + "name": "firewalld", + "epoch": 0, + "version": "0.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/firewalld-0.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:b8ecd7fa0e7e072828e374dfb0d61bb8eecca7c190f3661050cee5e3fc8854b4", + "check_gpg": true + }, + { + "name": "firewalld-filesystem", + "epoch": 0, + "version": "0.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/firewalld-filesystem-0.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:47538b1db9720be4699329a8da32d873187d0c6c22f45252614ac5b8a8312482", + "check_gpg": true + }, + { + "name": "fonts-filesystem", + "epoch": 0, + "version": "2.0.3", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fonts-filesystem-2.0.3-1.fc32.noarch.rpm", + "checksum": "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-9.fc32.x86_64.rpm", + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gawk-5.0.1-7.fc32.x86_64.rpm", + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.x86_64.rpm", + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20191217", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/geolite2-city-20191217-2.fc32.noarch.rpm", + "checksum": "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3", + "check_gpg": true + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20191217", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/geolite2-country-20191217-2.fc32.noarch.rpm", + "checksum": "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.64.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glib2-2.64.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-common-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "name": "glibc-langpack-en", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:24520e03276e0d850169efc9d83b12a9a01eee5d7202dadca12d2e0a8b7352ba", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gmp-6.1.2-13.fc32.x86_64.rpm", + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.13", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnutls-3.6.13-1.fc32.x86_64.rpm", + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.64.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gobject-introspection-1.64.1-1.fc32.x86_64.rpm", + "checksum": "sha256:052ddc487a29acce1b5d44532f79f8ab594d0ac6565504071f4c7706d97fc552", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gpgme-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grep-3.3-4.fc32.x86_64.rpm", + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "21.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/groff-base-1.22.3-21.fc32.x86_64.rpm", + "checksum": "sha256:808e7209893298d11ac27f148c1b3d1a2b28e303e7930b43659a08dc0f660ac4", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grubby-8.40-40.fc32.x86_64.rpm", + "checksum": "sha256:cbdc61d713e4cbe52b2bece117912da0f1e3782cb3b33caa068e96c854c990be", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gzip-1.10-2.fc32.x86_64.rpm", + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.23", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/h/hostname-3.23-2.fc32.x86_64.rpm", + "checksum": "sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.x86_64.rpm", + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.02", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/initscripts-10.02-3.fc32.x86_64.rpm", + "checksum": "sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339", + "check_gpg": true + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.4.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipcalc-0.4.0-2.fc32.x86_64.rpm", + "checksum": "sha256:fe70d5a1c818367be3a5a7e60cbb379f020f97f63ba3c13ed09740f45a43154a", + "check_gpg": true + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.5.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-5.5.0-1.fc32.x86_64.rpm", + "checksum": "sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684", + "check_gpg": true + }, + { + "name": "iproute-tc", + "epoch": 0, + "version": "5.5.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-tc-5.5.0-1.fc32.x86_64.rpm", + "checksum": "sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae", + "check_gpg": true + }, + { + "name": "ipset", + "epoch": 0, + "version": "7.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipset-7.6-1.fc32.x86_64.rpm", + "checksum": "sha256:7c21c21c3e3dbace06bee03fe4835ae6cb1e3ef86750ba2853f39d40dead2309", + "check_gpg": true + }, + { + "name": "ipset-libs", + "epoch": 0, + "version": "7.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipset-libs-7.6-1.fc32.x86_64.rpm", + "checksum": "sha256:f60fc561675e41ffa2c48b229960291e2438441d5ed758c1f28cb06b5d4e4ea9", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-libs-1.8.4-7.fc32.x86_64.rpm", + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "name": "iptables-nft", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-nft-1.8.4-7.fc32.x86_64.rpm", + "checksum": "sha256:08c41c10745c172c34880e384cf5cff014a9627f4895e59fa482948b27e2ce9e", + "check_gpg": true + }, + { + "name": "iputils", + "epoch": 0, + "version": "20190515", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iputils-20190515-5.fc32.x86_64.rpm", + "checksum": "sha256:6a3282927f525629bc0aaf4090e108d33b0709d3d5b35bc442000c2837e7b9b4", + "check_gpg": true + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.12", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/jansson-2.12-5.fc32.x86_64.rpm", + "checksum": "sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/json-c-0.13.1-9.fc32.x86_64.rpm", + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-2.2.0-1.fc32.x86_64.rpm", + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "name": "kernel", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-5.6.6-300.fc32.x86_64.rpm", + "checksum": "sha256:89c972ec7d2ab305c91c23bc248562c76f0ae645a9ed9f94d312e2f57c4d38fe", + "check_gpg": true + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-core-5.6.6-300.fc32.x86_64.rpm", + "checksum": "sha256:a1613e90865db93fb578b8ee1a4ee40bd396c6c9f2fb2a14757acacecb9f23e8", + "check_gpg": true + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-modules-5.6.6-300.fc32.x86_64.rpm", + "checksum": "sha256:b98687828b1d222ea73ebb8457450913dac58dd0be2e430a93bb7e98ba816505", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-27-1.fc32.x86_64.rpm", + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-libs-27-1.fc32.x86_64.rpm", + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kpartx-0.8.2-3.fc32.x86_64.rpm", + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/krb5-libs-1.18-1.fc32.x86_64.rpm", + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "name": "langpacks-core-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0", + "check_gpg": true + }, + { + "name": "langpacks-core-font-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-font-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389", + "check_gpg": true + }, + { + "name": "langpacks-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca", + "check_gpg": true + }, + { + "name": "less", + "epoch": 0, + "version": "551", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/less-551-3.fc32.x86_64.rpm", + "checksum": "sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libacl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.2", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libarchive-3.4.2-1.fc32.x86_64.rpm", + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libargon2-20171227-4.fc32.x86_64.rpm", + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libassuan-2.5.3-3.fc32.x86_64.rpm", + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libattr-2.4.48-8.fc32.x86_64.rpm", + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-44.fc32.x86_64.rpm", + "checksum": "sha256:26cca773f1f258105f0f825a8e0faebcaa183655b5d91cd972afbe791b586478", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libblkid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "name": "libbrotli", + "epoch": 0, + "version": "1.0.7", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbrotli-1.0.7-10.fc32.x86_64.rpm", + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-2.26-7.fc32.x86_64.rpm", + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-ng-0.7.10-2.fc32.x86_64.rpm", + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "name": "libcbor", + "epoch": 0, + "version": "0.5.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcbor-0.5.0-7.fc32.x86_64.rpm", + "checksum": "sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5", + "check_gpg": true + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcollection-0.7.0-44.fc32.x86_64.rpm", + "checksum": "sha256:9d4691918d7add910e8c03d61cccda0316b62d77b30ac2e502cf2e55289d1823", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcom_err-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcroco-0.6.13-3.fc32.x86_64.rpm", + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcurl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdhash-0.5.0-44.fc32.x86_64.rpm", + "checksum": "sha256:ca540fb7088948fdfe6e6b52a5e2b6a74d2d17136857da9f3f4a1ee29c8eb74b", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "32.20191231cvs.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libedit-3.1-32.20191231cvs.fc32.x86_64.rpm", + "checksum": "sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libevent-2.1.8-8.fc32.x86_64.rpm", + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfdisk-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libffi-3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "name": "libfido2", + "epoch": 0, + "version": "1.3.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfido2-1.3.1-1.fc32.x86_64.rpm", + "checksum": "sha256:ebbace15f986288bba7681f44a111b14bcc7cae00b7a1faadaa838bd51897357", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcc-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-3.fc32.x86_64.rpm", + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgomp-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgpg-error-1.36-3.fc32.x86_64.rpm", + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libidn2-2.3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libini_config-1.3.1-44.fc32.x86_64.rpm", + "checksum": "sha256:fed6244fce0c0b48933d622dfbb00cf73931b2f746b27675a025a33b591d9820", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libksba-1.3.5-11.fc32.x86_64.rpm", + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.1.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libldb-2.1.1-1.fc32.x86_64.rpm", + "checksum": "sha256:cd16f6ef433d7dc6860b19f3d77b666a03d35361aba78ee09d772575c2f69cc0", + "check_gpg": true + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.3.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmaxminddb-1.3.2-2.fc32.x86_64.rpm", + "checksum": "sha256:60589342d58922ba061ac8df7d753a7e7e75162c97ab086739e9d33fbf289091", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-10.fc32.x86_64.rpm", + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmnl-1.0.4-11.fc32.x86_64.rpm", + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmodulemd-2.9.1-1.fc32.x86_64.rpm", + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmount-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libndp-1.7-5.fc32.x86_64.rpm", + "checksum": "sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.x86_64.rpm", + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "17.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.x86_64.rpm", + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.4.3", + "release": "0.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfsidmap-2.4.3-0.fc32.x86_64.rpm", + "checksum": "sha256:bb154a90c968150172036d86f0c9fc2a24b5799718bc4d835cb10d0758890c67", + "check_gpg": true + }, + { + "name": "libnftnl", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnftnl-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:3afab9512fd4d56a13c95b530c805ac8b2bc872572ec5bb435eccdd59fbbc8b6", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.40.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnghttp2-1.40.0-2.fc32.x86_64.rpm", + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnl3-3.5.0-2.fc32.x86_64.rpm", + "checksum": "sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "6.20180605git4a062cf.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64.rpm", + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-44.fc32.x86_64.rpm", + "checksum": "sha256:ce1a80b0ba6f09a7e5a188436088dd31d10c5f7b43dbe9c1788f705127c8e6b2", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpcap-1.9.1-3.fc32.x86_64.rpm", + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpipeline-1.5.2-2.fc32.x86_64.rpm", + "checksum": "sha256:c0a0c6f3e30c20815496be8de00f9596737e2693feb85f7484f200ffa9174530", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpsl-0.21.0-4.fc32.x86_64.rpm", + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpwquality-1.4.2-2.fc32.x86_64.rpm", + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libref_array-0.1.5-44.fc32.x86_64.rpm", + "checksum": "sha256:6fc1181ed798617668f195579acfcf8fb212513a776f376eecfb3d086c66b2d9", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.11.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/librepo-1.11.1-4.fc32.x86_64.rpm", + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.12.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm", + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libseccomp-2.4.2-3.fc32.x86_64.rpm", + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.20.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsecret-0.20.2-2.fc32.x86_64.rpm", + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-utils-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsemanage-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsepol-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsigsegv-2.11-10.fc32.x86_64.rpm", + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsmartcols-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsolv-0.7.11-2.fc32.x86_64.rpm", + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libss-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-0.9.3-2.fc32.x86_64.rpm", + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm", + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_autofs-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:695ef8ae55ed6a165a3633b3c0d75b320879246386e6df4539be9286f5176cc5", + "check_gpg": true + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_certmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:f391fe0e21e51e7c864f8bce1b5825419f4096023b5b90b3976bbd69d6a4d720", + "check_gpg": true + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:599549d72d26b48c45156585a5698898c853e56469142e202d3749b781428465", + "check_gpg": true + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:66bb5b2e99d2c74b82943fe61fe9b9a3674350b0242f69a6854ec9718dcf5e07", + "check_gpg": true + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:af66820023c984d8b981ecac715d0c2daec1f89dcb69bed76ddf58b0ee80c1b1", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtalloc-2.3.1-2.fc32.x86_64.rpm", + "checksum": "sha256:16702883a79532a400d7304146cdb47b0599983b9fb48ab918ef9fa1ce0be394", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.16.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtasn1-4.16.0-1.fc32.x86_64.rpm", + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtdb-1.4.3-2.fc32.x86_64.rpm", + "checksum": "sha256:36778f8a4fa111c4f796bbea8fd52f7b9708de8f4351070faa30bc985db59885", + "check_gpg": true + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtevent-0.10.2-2.fc32.x86_64.rpm", + "checksum": "sha256:dab54013f8316b766c40c71f9c0c2124c1f0c219b417d588b5ba1dccf7d63fd7", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.2.5", + "release": "1.rc2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.x86_64.rpm", + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libunistring-0.9.10-7.fc32.x86_64.rpm", + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libusbx-1.0.23-1.fc32.x86_64.rpm", + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuser-0.62-24.fc32.x86_64.rpm", + "checksum": "sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "18.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libutempter-1.1.6-18.fc32.x86_64.rpm", + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuuid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libverto-0.3.0-9.fc32.x86_64.rpm", + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.10.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.x86_64.rpm", + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.10", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxml2-2.9.10-3.fc32.x86_64.rpm", + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libyaml-0.2.2-3.fc32.x86_64.rpm", + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libzstd-1.4.4-2.fc32.x86_64.rpm", + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "name": "linux-atm-libs", + "epoch": 0, + "version": "2.5.1", + "release": "26.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-26.fc32.x86_64.rpm", + "checksum": "sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467", + "check_gpg": true + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20200316", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-20200316-106.fc32.noarch.rpm", + "checksum": "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4", + "check_gpg": true + }, + { + "name": "linux-firmware-whence", + "epoch": 0, + "version": "20200316", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-whence-20200316-106.fc32.noarch.rpm", + "checksum": "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9", + "check_gpg": true + }, + { + "name": "lmdb-libs", + "epoch": 0, + "version": "0.9.24", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.24-1.fc32.x86_64.rpm", + "checksum": "sha256:25ae9056f75df4efff0d17d916e7c3889c421368613acec7f1c4119bd17eac13", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-7.fc32.x86_64.rpm", + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-2.fc32.x86_64.rpm", + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.9.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/man-db-2.9.0-2.fc32.x86_64.rpm", + "checksum": "sha256:ca80c458fab5bdde0276702f06217d1219085428560af6039aa1c5cf1e58ff3b", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mkpasswd-5.5.6-1.fc32.x86_64.rpm", + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "4.0.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mpfr-4.0.2-3.fc32.x86_64.rpm", + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm", + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.56.20160912git.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/net-tools-2.0-0.56.20160912git.fc32.x86_64.rpm", + "checksum": "sha256:924367aa63693da4660dcb806fbf52b3bcb7c4d12b40c4b4ba6329079936d073", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nettle-3.5.1-5.fc32.x86_64.rpm", + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "name": "nftables", + "epoch": 1, + "version": "0.9.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nftables-0.9.3-2.fc32.x86_64.rpm", + "checksum": "sha256:0b7d24759aac33303ff4b101c111dea03ff2529efc95661140e22f629cc1ab7a", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/npth-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "name": "ntfs-3g", + "epoch": 2, + "version": "2017.3.23", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ntfs-3g-2017.3.23-13.fc32.x86_64.rpm", + "checksum": "sha256:be78c188a2b301e08efd8ebc706d913163c0fa63af0ab0e4f0e20b9783876f43", + "check_gpg": true + }, + { + "name": "ntfs-3g-system-compression", + "epoch": 0, + "version": "1.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ntfs-3g-system-compression-1.0-3.fc32.x86_64.rpm", + "checksum": "sha256:6c9cffafc624879e806b7c822a4ba1984d36d164336dd3ec712867ac488f1851", + "check_gpg": true + }, + { + "name": "ntfsprogs", + "epoch": 2, + "version": "2017.3.23", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ntfsprogs-2017.3.23-13.fc32.x86_64.rpm", + "checksum": "sha256:bf973d907c3ae07ef84df09f90561fe9146fb0d122616ae70cdd7f5c31f24dd8", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openldap-2.4.47-4.fc32.x86_64.rpm", + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-8.2p1-2.fc32.x86_64.rpm", + "checksum": "sha256:0d51c1319ee78978e6ea5a49b815c2078b4ffd4d575e98c70e54ca01c3390eb8", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-clients-8.2p1-2.fc32.x86_64.rpm", + "checksum": "sha256:8b148415fb6a583ef131d0ddff44f3209c30d0299fde7b20cd3ea385590927c1", + "check_gpg": true + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-server-8.2p1-2.fc32.x86_64.rpm", + "checksum": "sha256:d1e244b8b5ce7404846e97d96c762c8c18ff6447301f6fc63f50e615029aa7cd", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.x86_64.rpm", + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/os-prober-1.77-4.fc32.x86_64.rpm", + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pam-1.3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "name": "parted", + "epoch": 0, + "version": "3.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/parted-3.3-3.fc32.x86_64.rpm", + "checksum": "sha256:4b9da0cedada16eb80a2d66b86aa62c9b026501e13a3e947a5a03a06f41d9dbb", + "check_gpg": true + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/passwd-0.80-8.fc32.x86_64.rpm", + "checksum": "sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.44", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre-8.44-1.fc32.x86_64.rpm", + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-10.34-9.fc32.x86_64.rpm", + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "name": "pcre2-syntax", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm", + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pigz-2.4-6.fc32.x86_64.rpm", + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pinentry-1.1.0-7.fc32.x86_64.rpm", + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "name": "plymouth", + "epoch": 0, + "version": "0.9.4", + "release": "14.20200325gite31c81f.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/plymouth-0.9.4-14.20200325gite31c81f.fc32.x86_64.rpm", + "checksum": "sha256:5cd4b781742b64dfff3cb3840ed5bb76f6946fb63f4ab742a51c3505747271a1", + "check_gpg": true + }, + { + "name": "plymouth-core-libs", + "epoch": 0, + "version": "0.9.4", + "release": "14.20200325gite31c81f.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/plymouth-core-libs-0.9.4-14.20200325gite31c81f.fc32.x86_64.rpm", + "checksum": "sha256:dc5a84049a6fc1f7c2a709ab3c2fa53de65e864f26085f5ca69864f5c2f6955d", + "check_gpg": true + }, + { + "name": "plymouth-scripts", + "epoch": 0, + "version": "0.9.4", + "release": "14.20200325gite31c81f.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/plymouth-scripts-0.9.4-14.20200325gite31c81f.fc32.x86_64.rpm", + "checksum": "sha256:d36f08a44d6a3bc95f995c858ecb5e0d7fb22a8236008267024dd6a0ff66cc85", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.116", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-libs-0.116-7.fc32.x86_64.rpm", + "checksum": "sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/popt-1.16-19.fc32.x86_64.rpm", + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-7.fc32.x86_64.rpm", + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "name": "psmisc", + "epoch": 0, + "version": "23.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/psmisc-23.3-3.fc32.x86_64.rpm", + "checksum": "sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm", + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.8.0", + "release": "8.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-8.fc32.noarch.rpm", + "checksum": "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862", + "check_gpg": true + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dbus-1.2.16-1.fc32.x86_64.rpm", + "checksum": "sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070", + "check_gpg": true + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.4.0", + "release": "6.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-decorator-4.4.0-6.fc32.noarch.rpm", + "checksum": "sha256:129adf9147d5d120546ca8e0fb5f165761106d386d366fe82591e372754d0b4a", + "check_gpg": true + }, + { + "name": "python3-distro", + "epoch": 0, + "version": "1.4.0", + "release": "5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-5.fc32.noarch.rpm", + "checksum": "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.14", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-plugins-core-4.0.14-1.fc32.noarch.rpm", + "checksum": "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576", + "check_gpg": true + }, + { + "name": "python3-firewall", + "epoch": 0, + "version": "0.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-firewall-0.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:8ee8c4bbf024b998ffb77a6b4194a2306ac21c5a6fcf70c8c81a0fbf38f7c7fc", + "check_gpg": true + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.36.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gobject-base-3.36.0-2.fc32.x86_64.rpm", + "checksum": "sha256:34411604a91c301dc8489285065c68f3a2f50910717097fedcaade6481c7469e", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libs-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libselinux-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124", + "check_gpg": true + }, + { + "name": "python3-nftables", + "epoch": 1, + "version": "0.9.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-nftables-0.9.3-2.fc32.x86_64.rpm", + "checksum": "sha256:0fc0193d95d69c780b6feb1cb74759ca2d4804701b3de936dac8429cfbe0f2e9", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "name": "python3-pyasn1", + "epoch": 0, + "version": "0.4.8", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pyasn1-0.4.8-1.fc32.noarch.rpm", + "checksum": "sha256:58c2dec13e8402698adc521f0ac07d45407f1d25c3403ce9acf63ca215ab29e3", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.14.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-six-1.14.0-2.fc32.noarch.rpm", + "checksum": "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f", + "check_gpg": true + }, + { + "name": "python3-slip", + "epoch": 0, + "version": "0.6.4", + "release": "19.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-slip-0.6.4-19.fc32.noarch.rpm", + "checksum": "sha256:d2abba1a0523bd9df5073900593ab13ec2ed2e391440be4d883314fa154370f8", + "check_gpg": true + }, + { + "name": "python3-slip-dbus", + "epoch": 0, + "version": "0.6.4", + "release": "19.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-slip-dbus-0.6.4-19.fc32.noarch.rpm", + "checksum": "sha256:cb0c64cc81e0b384bbc9d27ffcb2a655b13c91a799aad8972264aed1767926a3", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-unbound-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.x86_64.rpm", + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/readline-8.0-4.fc32.x86_64.rpm", + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "27.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rootfiles-8.1-27.fc32.noarch.rpm", + "checksum": "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sed-4.5-5.fc32.x86_64.rpm", + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.6", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm", + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.8.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shadow-utils-4.8.1-2.fc32.x86_64.rpm", + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.15", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shared-mime-info-1.15-3.fc32.x86_64.rpm", + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.31.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-client-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:699c1a3ff311bbaa2380c085fb4f516aa08be474bed02bcd1569d0bbf5b22d07", + "check_gpg": true + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-common-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:265dee550073120d51e4c94d3d039e5efdee73a0ae1b1faf2b92de0dad1f58fa", + "check_gpg": true + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-kcm-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:3ee53d0dba5bbfd3bbb2ae4b54e3ebdfa122e1cf120e17ff9c4c35674269e5ad", + "check_gpg": true + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-nfs-idmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:3c3fb1ca768ecd6ae7905a09cd85b9f67e9f08c46d18779520fb4b29476865c7", + "check_gpg": true + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.9.0", + "release": "0.1.b4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sudo-1.9.0-0.1.b4.fc32.x86_64.rpm", + "checksum": "sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-libs-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-pam-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm", + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-udev-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tss2-1331-4.fc32.x86_64.rpm", + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm", + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/unbound-libs-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/util-linux-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.2.525", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/v/vim-minimal-8.2.525-1.fc32.x86_64.rpm", + "checksum": "sha256:4fca21cfdcbed052e3e9e1eff74c22fb8ffb1fbbeb63e87e2aa540e43a8c0d09", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/which-2.21-19.fc32.x86_64.rpm", + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm", + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.29", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm", + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-libs-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/y/yum-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "21.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zlib-1.2.11-21.fc32.x86_64.rpm", + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ], + "checksums": { + "0": "sha256:c7f7c29a8ca90e226d2efee6d5856f2dea1d64ea758dfd114d75b4b20b56de1c" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac ro biosdevname=0 rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0" + }, + "bootloader": "grub", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "initrd": "/boot/initramfs-5.6.6-300.fc32.x86_64.img", + "linux": "/boot/vmlinuz-5.6.6-300.fc32.x86_64", + "options": "$kernelopts", + "title": "Fedora (5.6.6-300.fc32.x86_64) 32 (Thirty Two)", + "version": "5.6.6-300.fc32.x86_64" + } + ], + "firewall-enabled": [ + "ssh", + "mdns", + "dhcpv6-client" + ], + "fstab": [ + [ + "UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "/", + "ext4", + "defaults", + "1", + "1" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:993:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:997:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "redhat:x:1000:", + "render:x:996:", + "root:x:0:", + "ssh_keys:x:998:", + "sshd:x:74:", + "sys:x:3:", + "systemd-coredump:x:995:", + "systemd-journal:x:190:", + "systemd-network:x:192:", + "systemd-resolve:x:193:", + "systemd-timesync:x:994:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:999:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "raw", + "os-release": { + "ANSI_COLOR": "0;34", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:fedoraproject:fedora:32", + "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f32/system-administrators-guide/", + "HOME_URL": "https://fedoraproject.org/", + "ID": "fedora", + "LOGO": "fedora-logo-icon", + "NAME": "Fedora", + "PLATFORM_ID": "platform:f32", + "PRETTY_NAME": "Fedora 32 (Thirty Two)", + "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy", + "REDHAT_BUGZILLA_PRODUCT": "Fedora", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "32", + "REDHAT_SUPPORT_PRODUCT": "Fedora", + "REDHAT_SUPPORT_PRODUCT_VERSION": "32", + "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help", + "VERSION": "32 (Thirty Two)", + "VERSION_CODENAME": "", + "VERSION_ID": "32" + }, + "packages": [ + "NetworkManager-1.22.10-1.fc32.x86_64", + "NetworkManager-libnm-1.22.10-1.fc32.x86_64", + "WALinuxAgent-2.2.40-7.fc32.noarch", + "acl-2.2.53-5.fc32.x86_64", + "alternatives-1.11-6.fc32.x86_64", + "audit-3.0-0.19.20191104git1c2f876.fc32.x86_64", + "audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64", + "basesystem-11-9.fc32.noarch", + "bash-5.0.11-2.fc32.x86_64", + "bzip2-libs-1.0.8-2.fc32.x86_64", + "c-ares-1.15.0-5.fc32.x86_64", + "ca-certificates-2020.2.40-3.fc32.noarch", + "chrony-3.5-8.fc32.x86_64", + "compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch", + "compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch", + "compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch", + "coreutils-8.32-3.fc32.1.x86_64", + "coreutils-common-8.32-3.fc32.1.x86_64", + "cpio-2.13-4.fc32.x86_64", + "cracklib-2.9.6-22.fc32.x86_64", + "cracklib-dicts-2.9.6-22.fc32.x86_64", + "crypto-policies-20191128-5.gitcd267a5.fc32.noarch", + "crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch", + "cryptsetup-libs-2.3.0-1.fc32.x86_64", + "curl-7.69.1-1.fc32.x86_64", + "cyrus-sasl-lib-2.1.27-4.fc32.x86_64", + "dbus-1.12.16-4.fc32.x86_64", + "dbus-broker-22-1.fc32.x86_64", + "dbus-common-1.12.16-4.fc32.noarch", + "dbus-libs-1.12.16-4.fc32.x86_64", + "dejavu-sans-fonts-2.37-7.fc32.noarch", + "deltarpm-3.6.2-5.fc32.x86_64", + "device-mapper-1.02.171-1.fc32.x86_64", + "device-mapper-libs-1.02.171-1.fc32.x86_64", + "dhcp-client-4.4.2-5.b1.fc32.x86_64", + "dhcp-common-4.4.2-5.b1.fc32.noarch", + "diffutils-3.7-4.fc32.x86_64", + "dnf-4.2.19-1.fc32.noarch", + "dnf-data-4.2.19-1.fc32.noarch", + "dnf-plugins-core-4.0.14-1.fc32.noarch", + "dracut-050-26.git20200316.fc32.x86_64", + "dracut-config-generic-050-26.git20200316.fc32.x86_64", + "e2fsprogs-1.45.5-3.fc32.x86_64", + "e2fsprogs-libs-1.45.5-3.fc32.x86_64", + "elfutils-debuginfod-client-0.179-1.fc32.x86_64", + "elfutils-default-yama-scope-0.179-1.fc32.noarch", + "elfutils-libelf-0.179-1.fc32.x86_64", + "elfutils-libs-0.179-1.fc32.x86_64", + "expat-2.2.8-2.fc32.x86_64", + "fedora-gpg-keys-32-1.noarch", + "fedora-release-32-1.noarch", + "fedora-release-common-32-1.noarch", + "fedora-repos-32-1.noarch", + "file-5.38-2.fc32.x86_64", + "file-libs-5.38-2.fc32.x86_64", + "filesystem-3.14-2.fc32.x86_64", + "findutils-4.7.0-3.fc32.x86_64", + "fipscheck-1.5.0-8.fc32.x86_64", + "fipscheck-lib-1.5.0-8.fc32.x86_64", + "firewalld-0.8.2-2.fc32.noarch", + "firewalld-filesystem-0.8.2-2.fc32.noarch", + "fonts-filesystem-2.0.3-1.fc32.noarch", + "fuse-libs-2.9.9-9.fc32.x86_64", + "gawk-5.0.1-7.fc32.x86_64", + "gdbm-libs-1.18.1-3.fc32.x86_64", + "geolite2-city-20191217-2.fc32.noarch", + "geolite2-country-20191217-2.fc32.noarch", + "gettext-0.20.1-4.fc32.x86_64", + "gettext-libs-0.20.1-4.fc32.x86_64", + "glib2-2.64.1-1.fc32.x86_64", + "glibc-2.31-2.fc32.x86_64", + "glibc-all-langpacks-2.31-2.fc32.x86_64", + "glibc-common-2.31-2.fc32.x86_64", + "glibc-langpack-en-2.31-2.fc32.x86_64", + "gmp-6.1.2-13.fc32.x86_64", + "gnupg2-2.2.19-1.fc32.x86_64", + "gnupg2-smime-2.2.19-1.fc32.x86_64", + "gnutls-3.6.13-1.fc32.x86_64", + "gobject-introspection-1.64.1-1.fc32.x86_64", + "gpg-pubkey-12c944d0-5d5156ab", + "gpgme-1.13.1-6.fc32.x86_64", + "grep-3.3-4.fc32.x86_64", + "groff-base-1.22.3-21.fc32.x86_64", + "grub2-common-2.04-12.fc32.noarch", + "grub2-pc-2.04-12.fc32.x86_64", + "grub2-pc-modules-2.04-12.fc32.noarch", + "grub2-tools-2.04-12.fc32.x86_64", + "grub2-tools-minimal-2.04-12.fc32.x86_64", + "grubby-8.40-40.fc32.x86_64", + "gzip-1.10-2.fc32.x86_64", + "hostname-3.23-2.fc32.x86_64", + "ima-evm-utils-1.2.1-3.fc32.x86_64", + "initscripts-10.02-3.fc32.x86_64", + "ipcalc-0.4.0-2.fc32.x86_64", + "iproute-5.5.0-1.fc32.x86_64", + "iproute-tc-5.5.0-1.fc32.x86_64", + "ipset-7.6-1.fc32.x86_64", + "ipset-libs-7.6-1.fc32.x86_64", + "iptables-libs-1.8.4-7.fc32.x86_64", + "iptables-nft-1.8.4-7.fc32.x86_64", + "iputils-20190515-5.fc32.x86_64", + "jansson-2.12-5.fc32.x86_64", + "json-c-0.13.1-9.fc32.x86_64", + "kbd-2.2.0-1.fc32.x86_64", + "kbd-legacy-2.2.0-1.fc32.noarch", + "kbd-misc-2.2.0-1.fc32.noarch", + "kernel-5.6.6-300.fc32.x86_64", + "kernel-core-5.6.6-300.fc32.x86_64", + "kernel-modules-5.6.6-300.fc32.x86_64", + "keyutils-libs-1.6-4.fc32.x86_64", + "kmod-27-1.fc32.x86_64", + "kmod-libs-27-1.fc32.x86_64", + "kpartx-0.8.2-3.fc32.x86_64", + "krb5-libs-1.18-1.fc32.x86_64", + "langpacks-core-en-3.0-3.fc32.noarch", + "langpacks-core-font-en-3.0-3.fc32.noarch", + "langpacks-en-3.0-3.fc32.noarch", + "less-551-3.fc32.x86_64", + "libacl-2.2.53-5.fc32.x86_64", + "libarchive-3.4.2-1.fc32.x86_64", + "libargon2-20171227-4.fc32.x86_64", + "libassuan-2.5.3-3.fc32.x86_64", + "libattr-2.4.48-8.fc32.x86_64", + "libbasicobjects-0.1.1-44.fc32.x86_64", + "libblkid-2.35.1-7.fc32.x86_64", + "libbrotli-1.0.7-10.fc32.x86_64", + "libcap-2.26-7.fc32.x86_64", + "libcap-ng-0.7.10-2.fc32.x86_64", + "libcbor-0.5.0-7.fc32.x86_64", + "libcollection-0.7.0-44.fc32.x86_64", + "libcom_err-1.45.5-3.fc32.x86_64", + "libcomps-0.1.14-4.fc32.x86_64", + "libcroco-0.6.13-3.fc32.x86_64", + "libcurl-7.69.1-1.fc32.x86_64", + "libdb-5.3.28-40.fc32.x86_64", + "libdb-utils-5.3.28-40.fc32.x86_64", + "libdhash-0.5.0-44.fc32.x86_64", + "libdnf-0.45.0-3.fc32.x86_64", + "libedit-3.1-32.20191231cvs.fc32.x86_64", + "libevent-2.1.8-8.fc32.x86_64", + "libfdisk-2.35.1-7.fc32.x86_64", + "libffi-3.1-24.fc32.x86_64", + "libfido2-1.3.1-1.fc32.x86_64", + "libgcc-10.0.1-0.11.fc32.x86_64", + "libgcrypt-1.8.5-3.fc32.x86_64", + "libgomp-10.0.1-0.11.fc32.x86_64", + "libgpg-error-1.36-3.fc32.x86_64", + "libidn2-2.3.0-2.fc32.x86_64", + "libini_config-1.3.1-44.fc32.x86_64", + "libkcapi-1.1.5-2.fc32.x86_64", + "libkcapi-hmaccalc-1.1.5-2.fc32.x86_64", + "libksba-1.3.5-11.fc32.x86_64", + "libldb-2.1.1-1.fc32.x86_64", + "libmaxminddb-1.3.2-2.fc32.x86_64", + "libmetalink-0.1.3-10.fc32.x86_64", + "libmnl-1.0.4-11.fc32.x86_64", + "libmodulemd-2.9.1-1.fc32.x86_64", + "libmount-2.35.1-7.fc32.x86_64", + "libndp-1.7-5.fc32.x86_64", + "libnetfilter_conntrack-1.0.7-4.fc32.x86_64", + "libnfnetlink-1.0.1-17.fc32.x86_64", + "libnfsidmap-2.4.3-0.fc32.x86_64", + "libnftnl-1.1.5-2.fc32.x86_64", + "libnghttp2-1.40.0-2.fc32.x86_64", + "libnl3-3.5.0-2.fc32.x86_64", + "libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64", + "libpath_utils-0.2.1-44.fc32.x86_64", + "libpcap-1.9.1-3.fc32.x86_64", + "libpipeline-1.5.2-2.fc32.x86_64", + "libpsl-0.21.0-4.fc32.x86_64", + "libpwquality-1.4.2-2.fc32.x86_64", + "libref_array-0.1.5-44.fc32.x86_64", + "librepo-1.11.1-4.fc32.x86_64", + "libreport-filesystem-2.12.0-3.fc32.noarch", + "libseccomp-2.4.2-3.fc32.x86_64", + "libsecret-0.20.2-2.fc32.x86_64", + "libselinux-3.0-3.fc32.x86_64", + "libselinux-utils-3.0-3.fc32.x86_64", + "libsemanage-3.0-3.fc32.x86_64", + "libsepol-3.0-3.fc32.x86_64", + "libsigsegv-2.11-10.fc32.x86_64", + "libsmartcols-2.35.1-7.fc32.x86_64", + "libsolv-0.7.11-2.fc32.x86_64", + "libss-1.45.5-3.fc32.x86_64", + "libssh-0.9.3-2.fc32.x86_64", + "libssh-config-0.9.3-2.fc32.noarch", + "libsss_autofs-2.2.3-13.fc32.x86_64", + "libsss_certmap-2.2.3-13.fc32.x86_64", + "libsss_idmap-2.2.3-13.fc32.x86_64", + "libsss_nss_idmap-2.2.3-13.fc32.x86_64", + "libsss_sudo-2.2.3-13.fc32.x86_64", + "libstdc++-10.0.1-0.11.fc32.x86_64", + "libtalloc-2.3.1-2.fc32.x86_64", + "libtasn1-4.16.0-1.fc32.x86_64", + "libtdb-1.4.3-2.fc32.x86_64", + "libtevent-0.10.2-2.fc32.x86_64", + "libtextstyle-0.20.1-4.fc32.x86_64", + "libtirpc-1.2.5-1.rc2.fc32.x86_64", + "libunistring-0.9.10-7.fc32.x86_64", + "libusbx-1.0.23-1.fc32.x86_64", + "libuser-0.62-24.fc32.x86_64", + "libutempter-1.1.6-18.fc32.x86_64", + "libuuid-2.35.1-7.fc32.x86_64", + "libverto-0.3.0-9.fc32.x86_64", + "libxcrypt-4.4.16-1.fc32.x86_64", + "libxcrypt-compat-4.4.16-1.fc32.x86_64", + "libxkbcommon-0.10.0-2.fc32.x86_64", + "libxml2-2.9.10-3.fc32.x86_64", + "libyaml-0.2.2-3.fc32.x86_64", + "libzstd-1.4.4-2.fc32.x86_64", + "linux-atm-libs-2.5.1-26.fc32.x86_64", + "linux-firmware-20200316-106.fc32.noarch", + "linux-firmware-whence-20200316-106.fc32.noarch", + "lmdb-libs-0.9.24-1.fc32.x86_64", + "lua-libs-5.3.5-7.fc32.x86_64", + "lz4-libs-1.9.1-2.fc32.x86_64", + "man-db-2.9.0-2.fc32.x86_64", + "mkpasswd-5.5.6-1.fc32.x86_64", + "mpfr-4.0.2-3.fc32.x86_64", + "ncurses-6.1-15.20191109.fc32.x86_64", + "ncurses-base-6.1-15.20191109.fc32.noarch", + "ncurses-libs-6.1-15.20191109.fc32.x86_64", + "net-tools-2.0-0.56.20160912git.fc32.x86_64", + "nettle-3.5.1-5.fc32.x86_64", + "nftables-0.9.3-2.fc32.x86_64", + "npth-1.6-4.fc32.x86_64", + "ntfs-3g-2017.3.23-13.fc32.x86_64", + "ntfs-3g-system-compression-1.0-3.fc32.x86_64", + "ntfsprogs-2017.3.23-13.fc32.x86_64", + "openldap-2.4.47-4.fc32.x86_64", + "openssh-8.2p1-2.fc32.x86_64", + "openssh-clients-8.2p1-2.fc32.x86_64", + "openssh-server-8.2p1-2.fc32.x86_64", + "openssl-1.1.1d-7.fc32.x86_64", + "openssl-libs-1.1.1d-7.fc32.x86_64", + "openssl-pkcs11-0.4.10-5.fc32.x86_64", + "os-prober-1.77-4.fc32.x86_64", + "p11-kit-0.23.20-1.fc32.x86_64", + "p11-kit-trust-0.23.20-1.fc32.x86_64", + "pam-1.3.1-24.fc32.x86_64", + "parted-3.3-3.fc32.x86_64", + "passwd-0.80-8.fc32.x86_64", + "pcre-8.44-1.fc32.x86_64", + "pcre2-10.34-9.fc32.x86_64", + "pcre2-syntax-10.34-9.fc32.noarch", + "pigz-2.4-6.fc32.x86_64", + "pinentry-1.1.0-7.fc32.x86_64", + "plymouth-0.9.4-14.20200325gite31c81f.fc32.x86_64", + "plymouth-core-libs-0.9.4-14.20200325gite31c81f.fc32.x86_64", + "plymouth-scripts-0.9.4-14.20200325gite31c81f.fc32.x86_64", + "policycoreutils-3.0-2.fc32.x86_64", + "polkit-libs-0.116-7.fc32.x86_64", + "popt-1.16-19.fc32.x86_64", + "procps-ng-3.3.15-7.fc32.x86_64", + "psmisc-23.3-3.fc32.x86_64", + "publicsuffix-list-dafsa-20190417-3.fc32.noarch", + "python-pip-wheel-19.3.1-2.fc32.noarch", + "python-setuptools-wheel-41.6.0-2.fc32.noarch", + "python-unversioned-command-3.8.2-2.fc32.noarch", + "python3-3.8.2-2.fc32.x86_64", + "python3-dateutil-2.8.0-8.fc32.noarch", + "python3-dbus-1.2.16-1.fc32.x86_64", + "python3-decorator-4.4.0-6.fc32.noarch", + "python3-distro-1.4.0-5.fc32.noarch", + "python3-dnf-4.2.19-1.fc32.noarch", + "python3-dnf-plugins-core-4.0.14-1.fc32.noarch", + "python3-firewall-0.8.2-2.fc32.noarch", + "python3-gobject-base-3.36.0-2.fc32.x86_64", + "python3-gpg-1.13.1-6.fc32.x86_64", + "python3-hawkey-0.45.0-3.fc32.x86_64", + "python3-libcomps-0.1.14-4.fc32.x86_64", + "python3-libdnf-0.45.0-3.fc32.x86_64", + "python3-libs-3.8.2-2.fc32.x86_64", + "python3-libselinux-3.0-3.fc32.x86_64", + "python3-nftables-0.9.3-2.fc32.x86_64", + "python3-pip-19.3.1-2.fc32.noarch", + "python3-pyasn1-0.4.8-1.fc32.noarch", + "python3-rpm-4.15.1-2.fc32.1.x86_64", + "python3-setuptools-41.6.0-2.fc32.noarch", + "python3-six-1.14.0-2.fc32.noarch", + "python3-slip-0.6.4-19.fc32.noarch", + "python3-slip-dbus-0.6.4-19.fc32.noarch", + "python3-unbound-1.9.6-2.fc32.x86_64", + "qrencode-libs-4.0.2-5.fc32.x86_64", + "readline-8.0-4.fc32.x86_64", + "rootfiles-8.1-27.fc32.noarch", + "rpm-4.15.1-2.fc32.1.x86_64", + "rpm-build-libs-4.15.1-2.fc32.1.x86_64", + "rpm-libs-4.15.1-2.fc32.1.x86_64", + "rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64", + "rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64", + "rpm-sign-libs-4.15.1-2.fc32.1.x86_64", + "sed-4.5-5.fc32.x86_64", + "selinux-policy-3.14.5-32.fc32.noarch", + "selinux-policy-targeted-3.14.5-32.fc32.noarch", + "setup-2.13.6-2.fc32.noarch", + "shadow-utils-4.8.1-2.fc32.x86_64", + "shared-mime-info-1.15-3.fc32.x86_64", + "sqlite-libs-3.31.1-1.fc32.x86_64", + "sssd-client-2.2.3-13.fc32.x86_64", + "sssd-common-2.2.3-13.fc32.x86_64", + "sssd-kcm-2.2.3-13.fc32.x86_64", + "sssd-nfs-idmap-2.2.3-13.fc32.x86_64", + "sudo-1.9.0-0.1.b4.fc32.x86_64", + "systemd-245.4-1.fc32.x86_64", + "systemd-libs-245.4-1.fc32.x86_64", + "systemd-pam-245.4-1.fc32.x86_64", + "systemd-rpm-macros-245.4-1.fc32.noarch", + "systemd-udev-245.4-1.fc32.x86_64", + "trousers-0.3.13-13.fc31.x86_64", + "trousers-lib-0.3.13-13.fc31.x86_64", + "tss2-1331-4.fc32.x86_64", + "tzdata-2019c-3.fc32.noarch", + "unbound-libs-1.9.6-2.fc32.x86_64", + "util-linux-2.35.1-7.fc32.x86_64", + "vim-minimal-8.2.525-1.fc32.x86_64", + "which-2.21-19.fc32.x86_64", + "whois-nls-5.5.6-1.fc32.noarch", + "xkeyboard-config-2.29-1.fc32.noarch", + "xz-5.2.5-1.fc32.x86_64", + "xz-libs-5.2.5-1.fc32.x86_64", + "yum-4.2.19-1.fc32.noarch", + "zchunk-libs-1.1.5-2.fc32.x86_64", + "zlib-1.2.11-21.fc32.x86_64" + ], + "partition-table": "dos", + "partition-table-id": "0x14fc63d2", + "partitions": [ + { + "bootable": true, + "fstype": "ext4", + "label": null, + "partuuid": "14fc63d2-01", + "size": 2146435072, + "start": 1048576, + "type": "83", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:996:993::/var/lib/chrony:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "redhat:x:1000:1000::/home/redhat:/bin/bash", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:998:995:systemd Core Dumper:/:/sbin/nologin", + "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "systemd-timesync:x:997:994:systemd Time Synchronization:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:999:999:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/boot/System.map-5.6.6-300.fc32.x86_64": ".M.......", + "/boot/initramfs-5.6.6-300.fc32.x86_64.img": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/lib/modules/5.6.6-300.fc32.x86_64/modules.builtin.alias.bin": ".......T.", + "/proc": ".M.......", + "/sys": ".M.......", + "/var/log/btmp": ".M.......", + "/var/log/journal": ".M....G..", + "/var/log/lastlog": ".M....G.." + }, + "missing": [] + }, + "services-disabled": [ + "arp-ethers.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "console-getty.service", + "debug-shell.service", + "exit.target", + "halt.target", + "kexec.target", + "loadmodules.service", + "man-db-restart-cache-update.service", + "nftables.service", + "nis-domainname.service", + "poweroff.target", + "proc-sys-fs-binfmt_misc.mount", + "rdisc.service", + "remote-cryptsetup.target", + "runlevel0.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-boot-check-no-failures.service", + "systemd-network-generator.service", + "systemd-networkd-wait-online.service", + "systemd-networkd.service", + "systemd-networkd.socket", + "systemd-pstore.service", + "systemd-resolved.service", + "systemd-time-wait-sync.service", + "systemd-timesyncd.service", + "tcsd.service" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "ctrl-alt-del.target", + "dbus-broker.service", + "dbus-org.fedoraproject.FirewallD1.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dbus.service", + "dbus.socket", + "dnf-makecache.timer", + "firewalld.service", + "fstrim.timer", + "getty@.service", + "import-state.service", + "reboot.target", + "remote-fs.target", + "runlevel6.target", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "unbound-anchor.timer", + "waagent.service" + ] + } +} \ No newline at end of file diff --git a/test/cases/fedora_32-x86_64-vmdk-boot.json b/test/cases/fedora_32-x86_64-vmdk-boot.json new file mode 100644 index 0000000..5a3f6d9 --- /dev/null +++ b/test/cases/fedora_32-x86_64-vmdk-boot.json @@ -0,0 +1,9400 @@ +{ + "boot": { + "type": "vmware" + }, + "compose-request": { + "distro": "fedora-32", + "arch": "x86_64", + "image-type": "vmdk", + "filename": "disk.vmdk", + "blueprint": { + "name": "vmdk-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + }, + "repositories": [ + { + "baseurl": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ] + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm" + }, + "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-six-1.14.0-2.fc32.noarch.rpm" + }, + "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.x86_64.rpm" + }, + "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/geolite2-country-20191217-2.fc32.noarch.rpm" + }, + "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtasn1-4.16.0-1.fc32.x86_64.rpm" + }, + "sha256:052ddc487a29acce1b5d44532f79f8ab594d0ac6565504071f4c7706d97fc552": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gobject-introspection-1.64.1-1.fc32.x86_64.rpm" + }, + "sha256:08c41c10745c172c34880e384cf5cff014a9627f4895e59fa482948b27e2ce9e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-nft-1.8.4-7.fc32.x86_64.rpm" + }, + "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm" + }, + "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm" + }, + "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/findutils-4.7.0-3.fc32.x86_64.rpm" + }, + "sha256:0b7d24759aac33303ff4b101c111dea03ff2529efc95661140e22f629cc1ab7a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nftables-0.9.3-2.fc32.x86_64.rpm" + }, + "sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-tc-5.5.0-1.fc32.x86_64.rpm" + }, + "sha256:0d51c1319ee78978e6ea5a49b815c2078b4ffd4d575e98c70e54ca01c3390eb8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-8.2p1-2.fc32.x86_64.rpm" + }, + "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.x86_64.rpm" + }, + "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-3.0-3.fc32.x86_64.rpm" + }, + "sha256:0fc0193d95d69c780b6feb1cb74759ca2d4804701b3de936dac8429cfbe0f2e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-nftables-0.9.3-2.fc32.x86_64.rpm" + }, + "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-7.fc32.x86_64.rpm" + }, + "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-2.04-12.fc32.x86_64.rpm" + }, + "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/filesystem-3.14-2.fc32.x86_64.rpm" + }, + "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cpio-2.13-4.fc32.x86_64.rpm" + }, + "sha256:129adf9147d5d120546ca8e0fb5f165761106d386d366fe82591e372754d0b4a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-decorator-4.4.0-6.fc32.noarch.rpm" + }, + "sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.31-2.fc32.x86_64.rpm" + }, + "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gpgme-1.13.1-6.fc32.x86_64.rpm" + }, + "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-utils-3.0-3.fc32.x86_64.rpm" + }, + "sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/passwd-0.80-8.fc32.x86_64.rpm" + }, + "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pigz-2.4-6.fc32.x86_64.rpm" + }, + "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-whence-20200316-106.fc32.noarch.rpm" + }, + "sha256:16702883a79532a400d7304146cdb47b0599983b9fb48ab918ef9fa1ce0be394": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtalloc-2.3.1-2.fc32.x86_64.rpm" + }, + "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gmp-6.1.2-13.fc32.x86_64.rpm" + }, + "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libblkid-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/diffutils-3.7-4.fc32.x86_64.rpm" + }, + "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.x86_64.rpm" + }, + "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libksba-1.3.5-11.fc32.x86_64.rpm" + }, + "sha256:1bbc57adf40ac80fd55112fe79e5020fdf92e81019eef4929de171bd50faeaf4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtool-ltdl-2.4.6-33.fc32.x86_64.rpm" + }, + "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-2.26-7.fc32.x86_64.rpm" + }, + "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-5.2.5-1.fc32.x86_64.rpm" + }, + "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmnl-1.0.4-11.fc32.x86_64.rpm" + }, + "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-245.4-1.fc32.x86_64.rpm" + }, + "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-32-1.noarch.rpm" + }, + "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libidn2-2.3.0-2.fc32.x86_64.rpm" + }, + "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-broker-22-1.fc32.x86_64.rpm" + }, + "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-repos-32-1.noarch.rpm" + }, + "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm" + }, + "sha256:2441e2b95e4df708b81a86005aff154f4d3ac54c8bad5b4cd6770d7fb48ac341": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmspack-0.10.1-0.3.alpha.fc32.x86_64.rpm" + }, + "sha256:24520e03276e0d850169efc9d83b12a9a01eee5d7202dadca12d2e0a8b7352ba": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.31-2.fc32.x86_64.rpm" + }, + "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsecret-0.20.2-2.fc32.x86_64.rpm" + }, + "sha256:25ae9056f75df4efff0d17d916e7c3889c421368613acec7f1c4119bd17eac13": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.24-1.fc32.x86_64.rpm" + }, + "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm" + }, + "sha256:265dee550073120d51e4c94d3d039e5efdee73a0ae1b1faf2b92de0dad1f58fa": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-common-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-plugins-core-4.0.14-1.fc32.noarch.rpm" + }, + "sha256:26cca773f1f258105f0f825a8e0faebcaa183655b5d91cd972afbe791b586478": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-44.fc32.x86_64.rpm" + }, + "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libss-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-5.38-2.fc32.x86_64.rpm" + }, + "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/unbound-libs-1.9.6-2.fc32.x86_64.rpm" + }, + "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsepol-3.0-3.fc32.x86_64.rpm" + }, + "sha256:2a43575b51ec218905692cd4ca445c13fe60fae58e42906bc2838c75c006c418": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxslt-1.1.34-1.fc32.x86_64.rpm" + }, + "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mpfr-4.0.2-3.fc32.x86_64.rpm" + }, + "sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/less-551-3.fc32.x86_64.rpm" + }, + "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tar-1.32-4.fc32.x86_64.rpm" + }, + "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm" + }, + "sha256:2f2480b184cf545765950db803333343b9b0f38e25eeb5c8285ac69feeaa9ef4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/open-vm-tools-11.0.5-3.fc32.x86_64.rpm" + }, + "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-0.9.3-2.fc32.x86_64.rpm" + }, + "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-udev-245.4-1.fc32.x86_64.rpm" + }, + "sha256:342bdf0143d9145f8846e1b5c3401685e0d1274b66df39ac8cbfb78013313861": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-1.22.10-1.fc32.x86_64.rpm" + }, + "sha256:34411604a91c301dc8489285065c68f3a2f50910717097fedcaade6481c7469e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gobject-base-3.36.0-2.fc32.x86_64.rpm" + }, + "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-0.20.1-4.fc32.x86_64.rpm" + }, + "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.x86_64.rpm" + }, + "sha256:36778f8a4fa111c4f796bbea8fd52f7b9708de8f4351070faa30bc985db59885": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtdb-1.4.3-2.fc32.x86_64.rpm" + }, + "sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/chrony-3.5-8.fc32.x86_64.rpm" + }, + "sha256:3afab9512fd4d56a13c95b530c805ac8b2bc872572ec5bb435eccdd59fbbc8b6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnftnl-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64.rpm" + }, + "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm" + }, + "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/npth-1.6-4.fc32.x86_64.rpm" + }, + "sha256:3c3fb1ca768ecd6ae7905a09cd85b9f67e9f08c46d18779520fb4b29476865c7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-nfs-idmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm" + }, + "sha256:3ee53d0dba5bbfd3bbb2ae4b54e3ebdfa122e1cf120e17ff9c4c35674269e5ad": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-kcm-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.x86_64.rpm" + }, + "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm" + }, + "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-27-1.fc32.x86_64.rpm" + }, + "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-40.fc32.x86_64.rpm" + }, + "sha256:444f18dc1d8f6d0a4ff8ca9816e21e8faaeb4c31ac7997774a9454d4d336c21b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pciutils-3.6.4-1.fc32.x86_64.rpm" + }, + "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcom_err-1.45.5-3.fc32.x86_64.rpm" + }, + "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-2.fc32.x86_64.rpm" + }, + "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.x86_64.rpm" + }, + "sha256:45132e53c649def28d63c199d8c3a3b9fd16fa8bca7426ad4e9c202e52a233b4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-common-3.9.1-1.fc32.x86_64.rpm" + }, + "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/os-prober-1.77-4.fc32.x86_64.rpm" + }, + "sha256:4630ea4b3e4c439f2d3bc4cf33e71388e65cd5394338c86fa1074c6f7fa0d801": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpciaccess-0.16-2.fc32.x86_64.rpm" + }, + "sha256:46407b730b272223b8b64d12df0725af571b4a5c5ab89b9f41e12a49e07c6e6b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/c-ares-1.15.0-5.fc32.x86_64.rpm" + }, + "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-4.fc32.x86_64.rpm" + }, + "sha256:47538b1db9720be4699329a8da32d873187d0c6c22f45252614ac5b8a8312482": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/firewalld-filesystem-0.8.2-2.fc32.noarch.rpm" + }, + "sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qemu-img-4.2.0-7.fc32.x86_64.rpm" + }, + "sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-config-generic-050-26.git20200316.fc32.x86_64.rpm" + }, + "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dhcp-common-4.4.2-5.b1.fc32.noarch.rpm" + }, + "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcc-10.0.1-0.11.fc32.x86_64.rpm" + }, + "sha256:4911b74bc1ec5d053ddef2c134e6fcf247ea89b06c7409c31314b4986933758c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xmlsec1-1.2.29-1.fc32.x86_64.rpm" + }, + "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm" + }, + "sha256:4b9da0cedada16eb80a2d66b86aa62c9b026501e13a3e947a5a03a06f41d9dbb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/parted-3.3-3.fc32.x86_64.rpm" + }, + "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pam-1.3.1-24.fc32.x86_64.rpm" + }, + "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shadow-utils-4.8.1-2.fc32.x86_64.rpm" + }, + "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.x86_64.rpm" + }, + "sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libndp-1.7-5.fc32.x86_64.rpm" + }, + "sha256:4fca21cfdcbed052e3e9e1eff74c22fb8ffb1fbbeb63e87e2aa540e43a8c0d09": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/v/vim-minimal-8.2.525-1.fc32.x86_64.rpm" + }, + "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-unbound-1.9.6-2.fc32.x86_64.rpm" + }, + "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-common-8.32-3.fc32.1.x86_64.rpm" + }, + "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-9.fc32.x86_64.rpm" + }, + "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gzip-1.10-2.fc32.x86_64.rpm" + }, + "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsemanage-3.0-3.fc32.x86_64.rpm" + }, + "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-libs-27-1.fc32.x86_64.rpm" + }, + "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-plugins-core-4.0.14-1.fc32.noarch.rpm" + }, + "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libassuan-2.5.3-3.fc32.x86_64.rpm" + }, + "sha256:599549d72d26b48c45156585a5698898c853e56469142e202d3749b781428465": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-20200316-106.fc32.noarch.rpm" + }, + "sha256:5cd4b781742b64dfff3cb3840ed5bb76f6946fb63f4ab742a51c3505747271a1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/plymouth-0.9.4-14.20200325gite31c81f.fc32.x86_64.rpm" + }, + "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm" + }, + "sha256:5eed798a806e26720df47f1c95600ae67cc1275c381f33c8260b32b23d81a978": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/h/hwdata-0.334-1.fc32.noarch.rpm" + }, + "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-3.fc32.x86_64.rpm" + }, + "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:60589342d58922ba061ac8df7d753a7e7e75162c97ab086739e9d33fbf289091": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmaxminddb-1.3.2-2.fc32.x86_64.rpm" + }, + "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm" + }, + "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.x86_64.rpm" + }, + "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcroco-0.6.13-3.fc32.x86_64.rpm" + }, + "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mkpasswd-5.5.6-1.fc32.x86_64.rpm" + }, + "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libattr-2.4.48-8.fc32.x86_64.rpm" + }, + "sha256:66bb5b2e99d2c74b82943fe61fe9b9a3674350b0242f69a6854ec9718dcf5e07": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-10.34-9.fc32.x86_64.rpm" + }, + "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm" + }, + "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-5.3.28-40.fc32.x86_64.rpm" + }, + "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-font-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:695ef8ae55ed6a165a3633b3c0d75b320879246386e6df4539be9286f5176cc5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_autofs-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:699c1a3ff311bbaa2380c085fb4f516aa08be474bed02bcd1569d0bbf5b22d07": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-client-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.x86_64.rpm" + }, + "sha256:6a3282927f525629bc0aaf4090e108d33b0709d3d5b35bc442000c2837e7b9b4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iputils-20190515-5.fc32.x86_64.rpm" + }, + "sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dbus-1.2.16-1.fc32.x86_64.rpm" + }, + "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-10.fc32.x86_64.rpm" + }, + "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/curl-7.69.1-1.fc32.x86_64.rpm" + }, + "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tss2-1331-4.fc32.x86_64.rpm" + }, + "sha256:6fc1181ed798617668f195579acfcf8fb212513a776f376eecfb3d086c66b2d9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libref_array-0.1.5-44.fc32.x86_64.rpm" + }, + "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm" + }, + "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glib2-2.64.1-1.fc32.x86_64.rpm" + }, + "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-8.32-3.fc32.1.x86_64.rpm" + }, + "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/acl-2.2.53-5.fc32.x86_64.rpm" + }, + "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm" + }, + "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libusbx-1.0.23-1.fc32.x86_64.rpm" + }, + "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm" + }, + "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-pam-245.4-1.fc32.x86_64.rpm" + }, + "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grep-3.3-4.fc32.x86_64.rpm" + }, + "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-libs-245.4-1.fc32.x86_64.rpm" + }, + "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bash-5.0.11-2.fc32.x86_64.rpm" + }, + "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libevent-2.1.8-8.fc32.x86_64.rpm" + }, + "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-4.4.16-1.fc32.x86_64.rpm" + }, + "sha256:7c21c21c3e3dbace06bee03fe4835ae6cb1e3ef86750ba2853f39d40dead2309": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipset-7.6-1.fc32.x86_64.rpm" + }, + "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libargon2-20171227-4.fc32.x86_64.rpm" + }, + "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm" + }, + "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pinentry-1.1.0-7.fc32.x86_64.rpm" + }, + "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcurl-7.69.1-1.fc32.x86_64.rpm" + }, + "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.x86_64.rpm" + }, + "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-2.04-12.fc32.x86_64.rpm" + }, + "sha256:808e7209893298d11ac27f148c1b3d1a2b28e303e7930b43659a08dc0f660ac4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/groff-base-1.22.3-21.fc32.x86_64.rpm" + }, + "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/geolite2-city-20191217-2.fc32.noarch.rpm" + }, + "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/which-2.21-19.fc32.x86_64.rpm" + }, + "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuuid-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.x86_64.rpm" + }, + "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-libs-5.2.5-1.fc32.x86_64.rpm" + }, + "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-2.9.6-22.fc32.x86_64.rpm" + }, + "sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-5.5.0-1.fc32.x86_64.rpm" + }, + "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-2.fc32.x86_64.rpm" + }, + "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libffi-3.1-24.fc32.x86_64.rpm" + }, + "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fonts-filesystem-2.0.3-1.fc32.noarch.rpm" + }, + "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.x86_64.rpm" + }, + "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-en-3.0-3.fc32.noarch.rpm" + }, + "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libarchive-3.4.2-1.fc32.x86_64.rpm" + }, + "sha256:89c972ec7d2ab305c91c23bc248562c76f0ae645a9ed9f94d312e2f57c4d38fe": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-5.6.6-300.fc32.x86_64.rpm" + }, + "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/popt-1.16-19.fc32.x86_64.rpm" + }, + "sha256:8a8a34323af79ec2a2d87743dfe375ffc2bcdeb7be75637524c60df854ff7b42": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xmlsec1-openssl-1.2.29-1.fc32.x86_64.rpm" + }, + "sha256:8b148415fb6a583ef131d0ddff44f3209c30d0299fde7b20cd3ea385590927c1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-clients-8.2p1-2.fc32.x86_64.rpm" + }, + "sha256:8c047278ce11e7ba7169a9c9537c3c6544f52c7eee8754179acd839ed59c028f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dhcp-client-4.4.2-5.b1.fc32.x86_64.rpm" + }, + "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-3.0-2.fc32.x86_64.rpm" + }, + "sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnl3-3.5.0-2.fc32.x86_64.rpm" + }, + "sha256:8ee8c4bbf024b998ffb77a6b4194a2306ac21c5a6fcf70c8c81a0fbf38f7c7fc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-firewall-0.8.2-2.fc32.noarch.rpm" + }, + "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/expat-2.2.8-2.fc32.x86_64.rpm" + }, + "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:907393755387a351806ec2afff376e7491f177116caadd12f07d0fcbed796750": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-8.fc32.x86_64.rpm" + }, + "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm" + }, + "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre-8.44-1.fc32.x86_64.rpm" + }, + "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-5.fc32.noarch.rpm" + }, + "sha256:9369d4fed30402f45705b7a5cb51b6eeefb1dabbe0942c84514c6fdf1edac5e0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-2.9.9-9.fc32.x86_64.rpm" + }, + "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsigsegv-2.11-10.fc32.x86_64.rpm" + }, + "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfdisk-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libzstd-1.4.4-2.fc32.x86_64.rpm" + }, + "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.x86_64.rpm" + }, + "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm" + }, + "sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/jansson-2.12-5.fc32.x86_64.rpm" + }, + "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.x86_64.rpm" + }, + "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-050-26.git20200316.fc32.x86_64.rpm" + }, + "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/util-linux-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libs-0.179-1.fc32.x86_64.rpm" + }, + "sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libedit-3.1-32.20191231cvs.fc32.x86_64.rpm" + }, + "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm" + }, + "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgpg-error-1.36-3.fc32.x86_64.rpm" + }, + "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libyaml-0.2.2-3.fc32.x86_64.rpm" + }, + "sha256:9d4691918d7add910e8c03d61cccda0316b62d77b30ac2e502cf2e55289d1823": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcollection-0.7.0-44.fc32.x86_64.rpm" + }, + "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnutls-3.6.13-1.fc32.x86_64.rpm" + }, + "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-6.fc32.x86_64.rpm" + }, + "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpwquality-1.4.2-2.fc32.x86_64.rpm" + }, + "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-2.2.0-1.fc32.x86_64.rpm" + }, + "sha256:a1613e90865db93fb578b8ee1a4ee40bd396c6c9f2fb2a14757acacecb9f23e8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-core-5.6.6-300.fc32.x86_64.rpm" + }, + "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-common-32-1.noarch.rpm" + }, + "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shared-mime-info-1.15-3.fc32.x86_64.rpm" + }, + "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm" + }, + "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm" + }, + "sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libaio-0.3.111-7.fc32.x86_64.rpm" + }, + "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm" + }, + "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxml2-2.9.10-3.fc32.x86_64.rpm" + }, + "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnghttp2-1.40.0-2.fc32.x86_64.rpm" + }, + "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/librepo-1.11.1-4.fc32.x86_64.rpm" + }, + "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbrotli-1.0.7-10.fc32.x86_64.rpm" + }, + "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.x86_64.rpm" + }, + "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openldap-2.4.47-4.fc32.x86_64.rpm" + }, + "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.x86_64.rpm" + }, + "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm" + }, + "sha256:af66820023c984d8b981ecac715d0c2daec1f89dcb69bed76ddf58b0ee80c1b1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm" + }, + "sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcbor-0.5.0-7.fc32.x86_64.rpm" + }, + "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/y/yum-4.2.19-1.fc32.noarch.rpm" + }, + "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-6.1-15.20191109.fc32.x86_64.rpm" + }, + "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpcap-1.9.1-3.fc32.x86_64.rpm" + }, + "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-4.fc32.x86_64.rpm" + }, + "sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuser-0.62-24.fc32.x86_64.rpm" + }, + "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-ng-0.7.10-2.fc32.x86_64.rpm" + }, + "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-5.fc32.x86_64.rpm" + }, + "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-3.8.2-2.fc32.x86_64.rpm" + }, + "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm" + }, + "sha256:b8ecd7fa0e7e072828e374dfb0d61bb8eecca7c190f3661050cee5e3fc8854b4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/firewalld-0.8.2-2.fc32.noarch.rpm" + }, + "sha256:b98687828b1d222ea73ebb8457450913dac58dd0be2e430a93bb7e98ba816505": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-modules-5.6.6-300.fc32.x86_64.rpm" + }, + "sha256:bb154a90c968150172036d86f0c9fc2a24b5799718bc4d835cb10d0758890c67": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfsidmap-2.4.3-0.fc32.x86_64.rpm" + }, + "sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/initscripts-10.02-3.fc32.x86_64.rpm" + }, + "sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/psmisc-23.3-3.fc32.x86_64.rpm" + }, + "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsolv-0.7.11-2.fc32.x86_64.rpm" + }, + "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.x86_64.rpm" + }, + "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nettle-3.5.1-5.fc32.x86_64.rpm" + }, + "sha256:c0a0c6f3e30c20815496be8de00f9596737e2693feb85f7484f200ffa9174530": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpipeline-1.5.2-2.fc32.x86_64.rpm" + }, + "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zlib-1.2.11-21.fc32.x86_64.rpm" + }, + "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-1.02.171-1.fc32.x86_64.rpm" + }, + "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.x86_64.rpm" + }, + "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.x86_64.rpm" + }, + "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.04-12.fc32.noarch.rpm" + }, + "sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dosfstools-4.1-10.fc32.x86_64.rpm" + }, + "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/alternatives-1.11-6.fc32.x86_64.rpm" + }, + "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch.rpm" + }, + "sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-26.fc32.x86_64.rpm" + }, + "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rootfiles-8.1-27.fc32.noarch.rpm" + }, + "sha256:ca540fb7088948fdfe6e6b52a5e2b6a74d2d17136857da9f3f4a1ee29c8eb74b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdhash-0.5.0-44.fc32.x86_64.rpm" + }, + "sha256:ca80c458fab5bdde0276702f06217d1219085428560af6039aa1c5cf1e58ff3b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/man-db-2.9.0-2.fc32.x86_64.rpm" + }, + "sha256:cb0c64cc81e0b384bbc9d27ffcb2a655b13c91a799aad8972264aed1767926a3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-slip-dbus-0.6.4-19.fc32.noarch.rpm" + }, + "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.16-1.fc32.x86_64.rpm" + }, + "sha256:cbdc61d713e4cbe52b2bece117912da0f1e3782cb3b33caa068e96c854c990be": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grubby-8.40-40.fc32.x86_64.rpm" + }, + "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm" + }, + "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-2.2.19-1.fc32.x86_64.rpm" + }, + "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-4.fc32.x86_64.rpm" + }, + "sha256:cd16f6ef433d7dc6860b19f3d77b666a03d35361aba78ee09d772575c2f69cc0": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libldb-2.1.1-1.fc32.x86_64.rpm" + }, + "sha256:ce1a80b0ba6f09a7e5a188436088dd31d10c5f7b43dbe9c1788f705127c8e6b2": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-44.fc32.x86_64.rpm" + }, + "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpsl-0.21.0-4.fc32.x86_64.rpm" + }, + "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm" + }, + "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gawk-5.0.1-7.fc32.x86_64.rpm" + }, + "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.x86_64.rpm" + }, + "sha256:d1e244b8b5ce7404846e97d96c762c8c18ff6447301f6fc63f50e615029aa7cd": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-server-8.2p1-2.fc32.x86_64.rpm" + }, + "sha256:d2abba1a0523bd9df5073900593ab13ec2ed2e391440be4d883314fa154370f8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-slip-0.6.4-19.fc32.noarch.rpm" + }, + "sha256:d36f08a44d6a3bc95f995c858ecb5e0d7fb22a8236008267024dd6a0ff66cc85": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/plymouth-scripts-0.9.4-14.20200325gite31c81f.fc32.x86_64.rpm" + }, + "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/json-c-0.13.1-9.fc32.x86_64.rpm" + }, + "sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-libs-0.116-7.fc32.x86_64.rpm" + }, + "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgomp-10.0.1-0.11.fc32.x86_64.rpm" + }, + "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-1.1.1d-7.fc32.x86_64.rpm" + }, + "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-8.fc32.noarch.rpm" + }, + "sha256:dab54013f8316b766c40c71f9c0c2124c1f0c219b417d588b5ba1dccf7d63fd7": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtevent-0.10.2-2.fc32.x86_64.rpm" + }, + "sha256:dc5a84049a6fc1f7c2a709ab3c2fa53de65e864f26085f5ca69864f5c2f6955d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/plymouth-core-libs-0.9.4-14.20200325gite31c81f.fc32.x86_64.rpm" + }, + "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-2.31-2.fc32.x86_64.rpm" + }, + "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsmartcols-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-0.23.20-1.fc32.x86_64.rpm" + }, + "sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/h/hostname-3.23-2.fc32.x86_64.rpm" + }, + "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libseccomp-2.4.2-3.fc32.x86_64.rpm" + }, + "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-libs-5.38-2.fc32.x86_64.rpm" + }, + "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64.rpm" + }, + "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/krb5-libs-1.18-1.fc32.x86_64.rpm" + }, + "sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sudo-1.9.0-0.1.b4.fc32.x86_64.rpm" + }, + "sha256:e5efc87172d7081559137feaa221047385a5e248ffafd9794c2bfc73b61f8f37": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pciutils-libs-3.6.4-1.fc32.x86_64.rpm" + }, + "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmount-2.35.1-7.fc32.x86_64.rpm" + }, + "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-common-2.31-2.fc32.x86_64.rpm" + }, + "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcomps-0.1.14-4.fc32.x86_64.rpm" + }, + "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.x86_64.rpm" + }, + "sha256:ebbace15f986288bba7681f44a111b14bcc7cae00b7a1faadaa838bd51897357": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfido2-1.3.1-1.fc32.x86_64.rpm" + }, + "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm" + }, + "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libs-3.8.2-2.fc32.x86_64.rpm" + }, + "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.x86_64.rpm" + }, + "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-1.12.16-4.fc32.x86_64.rpm" + }, + "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libverto-0.3.0-9.fc32.x86_64.rpm" + }, + "sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm" + }, + "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.x86_64.rpm" + }, + "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/readline-8.0-4.fc32.x86_64.rpm" + }, + "sha256:f2715fc8a04d33716f40f5b34466e082140df7ff3b7b972c29655d4dfc6e3a72": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-8.fc32.x86_64.rpm" + }, + "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-7.fc32.x86_64.rpm" + }, + "sha256:f391fe0e21e51e7c864f8bce1b5825419f4096023b5b90b3976bbd69d6a4d720": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_certmap-2.2.3-13.fc32.x86_64.rpm" + }, + "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libelf-0.179-1.fc32.x86_64.rpm" + }, + "sha256:f49739e27706d71a5dc75a5bfdf6c31fc67f6cb0cc1f38afe4eafb6e6ae1e4e9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdrm-2.4.100-2.fc32.x86_64.rpm" + }, + "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-libs-1.8.4-7.fc32.x86_64.rpm" + }, + "sha256:f60fc561675e41ffa2c48b229960291e2438441d5ed758c1f28cb06b5d4e4ea9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipset-libs-7.6-1.fc32.x86_64.rpm" + }, + "sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libselinux-3.0-3.fc32.x86_64.rpm" + }, + "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libacl-2.2.53-5.fc32.x86_64.rpm" + }, + "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmodulemd-2.9.1-1.fc32.x86_64.rpm" + }, + "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libutempter-1.1.6-18.fc32.x86_64.rpm" + }, + "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdnf-0.45.0-3.fc32.x86_64.rpm" + }, + "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libunistring-0.9.10-7.fc32.x86_64.rpm" + }, + "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kpartx-0.8.2-3.fc32.x86_64.rpm" + }, + "sha256:fd2a2dd726d855f877296227fb351883d647df28b1b0085f525d87df622d49e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.22.10-1.fc32.x86_64.rpm" + }, + "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-4.fc32.x86_64.rpm" + }, + "sha256:fe70d5a1c818367be3a5a7e60cbb379f020f97f63ba3c13ed09740f45a43154a": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipcalc-0.4.0-2.fc32.x86_64.rpm" + }, + "sha256:fed6244fce0c0b48933d622dfbb00cf73931b2f746b27675a025a33b591d9820": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libini_config-1.3.1-44.fc32.x86_64.rpm" + }, + "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.x86_64.rpm" + }, + "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61": { + "url": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sed-4.5-5.fc32.x86_64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "checksum": "sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec", + "check_gpg": true + }, + { + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "checksum": "sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe", + "check_gpg": true + }, + { + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "checksum": "sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4", + "check_gpg": true + }, + { + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "checksum": "sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9", + "check_gpg": true + }, + { + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "checksum": "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b", + "check_gpg": true + }, + { + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts", + "labels": { + "/usr/bin/cp": "system_u:object_r:install_exec_t:s0" + } + } + } + ] + }, + "runner": "org.osbuild.fedora32" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:342bdf0143d9145f8846e1b5c3401685e0d1274b66df39ac8cbfb78013313861", + "check_gpg": true + }, + { + "checksum": "sha256:fd2a2dd726d855f877296227fb351883d647df28b1b0085f525d87df622d49e4", + "check_gpg": true + }, + { + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "checksum": "sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d", + "check_gpg": true + }, + { + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "checksum": "sha256:46407b730b272223b8b64d12df0725af571b4a5c5ab89b9f41e12a49e07c6e6b", + "check_gpg": true + }, + { + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "checksum": "sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57", + "check_gpg": true + }, + { + "checksum": "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309", + "check_gpg": true + }, + { + "checksum": "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56", + "check_gpg": true + }, + { + "checksum": "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280", + "check_gpg": true + }, + { + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "checksum": "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315", + "check_gpg": true + }, + { + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "checksum": "sha256:8c047278ce11e7ba7169a9c9537c3c6544f52c7eee8754179acd839ed59c028f", + "check_gpg": true + }, + { + "checksum": "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013", + "check_gpg": true + }, + { + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "checksum": "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d", + "check_gpg": true + }, + { + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "checksum": "sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73", + "check_gpg": true + }, + { + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "checksum": "sha256:907393755387a351806ec2afff376e7491f177116caadd12f07d0fcbed796750", + "check_gpg": true + }, + { + "checksum": "sha256:f2715fc8a04d33716f40f5b34466e082140df7ff3b7b972c29655d4dfc6e3a72", + "check_gpg": true + }, + { + "checksum": "sha256:b8ecd7fa0e7e072828e374dfb0d61bb8eecca7c190f3661050cee5e3fc8854b4", + "check_gpg": true + }, + { + "checksum": "sha256:47538b1db9720be4699329a8da32d873187d0c6c22f45252614ac5b8a8312482", + "check_gpg": true + }, + { + "checksum": "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012", + "check_gpg": true + }, + { + "checksum": "sha256:9369d4fed30402f45705b7a5cb51b6eeefb1dabbe0942c84514c6fdf1edac5e0", + "check_gpg": true + }, + { + "checksum": "sha256:45132e53c649def28d63c199d8c3a3b9fd16fa8bca7426ad4e9c202e52a233b4", + "check_gpg": true + }, + { + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "checksum": "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3", + "check_gpg": true + }, + { + "checksum": "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f", + "check_gpg": true + }, + { + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "checksum": "sha256:24520e03276e0d850169efc9d83b12a9a01eee5d7202dadca12d2e0a8b7352ba", + "check_gpg": true + }, + { + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "checksum": "sha256:052ddc487a29acce1b5d44532f79f8ab594d0ac6565504071f4c7706d97fc552", + "check_gpg": true + }, + { + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "checksum": "sha256:808e7209893298d11ac27f148c1b3d1a2b28e303e7930b43659a08dc0f660ac4", + "check_gpg": true + }, + { + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "checksum": "sha256:cbdc61d713e4cbe52b2bece117912da0f1e3782cb3b33caa068e96c854c990be", + "check_gpg": true + }, + { + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "checksum": "sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823", + "check_gpg": true + }, + { + "checksum": "sha256:5eed798a806e26720df47f1c95600ae67cc1275c381f33c8260b32b23d81a978", + "check_gpg": true + }, + { + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "checksum": "sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339", + "check_gpg": true + }, + { + "checksum": "sha256:fe70d5a1c818367be3a5a7e60cbb379f020f97f63ba3c13ed09740f45a43154a", + "check_gpg": true + }, + { + "checksum": "sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684", + "check_gpg": true + }, + { + "checksum": "sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae", + "check_gpg": true + }, + { + "checksum": "sha256:7c21c21c3e3dbace06bee03fe4835ae6cb1e3ef86750ba2853f39d40dead2309", + "check_gpg": true + }, + { + "checksum": "sha256:f60fc561675e41ffa2c48b229960291e2438441d5ed758c1f28cb06b5d4e4ea9", + "check_gpg": true + }, + { + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "checksum": "sha256:08c41c10745c172c34880e384cf5cff014a9627f4895e59fa482948b27e2ce9e", + "check_gpg": true + }, + { + "checksum": "sha256:6a3282927f525629bc0aaf4090e108d33b0709d3d5b35bc442000c2837e7b9b4", + "check_gpg": true + }, + { + "checksum": "sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8", + "check_gpg": true + }, + { + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "checksum": "sha256:89c972ec7d2ab305c91c23bc248562c76f0ae645a9ed9f94d312e2f57c4d38fe", + "check_gpg": true + }, + { + "checksum": "sha256:a1613e90865db93fb578b8ee1a4ee40bd396c6c9f2fb2a14757acacecb9f23e8", + "check_gpg": true + }, + { + "checksum": "sha256:b98687828b1d222ea73ebb8457450913dac58dd0be2e430a93bb7e98ba816505", + "check_gpg": true + }, + { + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "checksum": "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0", + "check_gpg": true + }, + { + "checksum": "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389", + "check_gpg": true + }, + { + "checksum": "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca", + "check_gpg": true + }, + { + "checksum": "sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884", + "check_gpg": true + }, + { + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "checksum": "sha256:26cca773f1f258105f0f825a8e0faebcaa183655b5d91cd972afbe791b586478", + "check_gpg": true + }, + { + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "checksum": "sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5", + "check_gpg": true + }, + { + "checksum": "sha256:9d4691918d7add910e8c03d61cccda0316b62d77b30ac2e502cf2e55289d1823", + "check_gpg": true + }, + { + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "checksum": "sha256:ca540fb7088948fdfe6e6b52a5e2b6a74d2d17136857da9f3f4a1ee29c8eb74b", + "check_gpg": true + }, + { + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "checksum": "sha256:f49739e27706d71a5dc75a5bfdf6c31fc67f6cb0cc1f38afe4eafb6e6ae1e4e9", + "check_gpg": true + }, + { + "checksum": "sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09", + "check_gpg": true + }, + { + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "checksum": "sha256:ebbace15f986288bba7681f44a111b14bcc7cae00b7a1faadaa838bd51897357", + "check_gpg": true + }, + { + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "checksum": "sha256:fed6244fce0c0b48933d622dfbb00cf73931b2f746b27675a025a33b591d9820", + "check_gpg": true + }, + { + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "checksum": "sha256:cd16f6ef433d7dc6860b19f3d77b666a03d35361aba78ee09d772575c2f69cc0", + "check_gpg": true + }, + { + "checksum": "sha256:60589342d58922ba061ac8df7d753a7e7e75162c97ab086739e9d33fbf289091", + "check_gpg": true + }, + { + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "checksum": "sha256:2441e2b95e4df708b81a86005aff154f4d3ac54c8bad5b4cd6770d7fb48ac341", + "check_gpg": true + }, + { + "checksum": "sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f", + "check_gpg": true + }, + { + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "checksum": "sha256:bb154a90c968150172036d86f0c9fc2a24b5799718bc4d835cb10d0758890c67", + "check_gpg": true + }, + { + "checksum": "sha256:3afab9512fd4d56a13c95b530c805ac8b2bc872572ec5bb435eccdd59fbbc8b6", + "check_gpg": true + }, + { + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "checksum": "sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1", + "check_gpg": true + }, + { + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "checksum": "sha256:ce1a80b0ba6f09a7e5a188436088dd31d10c5f7b43dbe9c1788f705127c8e6b2", + "check_gpg": true + }, + { + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "checksum": "sha256:4630ea4b3e4c439f2d3bc4cf33e71388e65cd5394338c86fa1074c6f7fa0d801", + "check_gpg": true + }, + { + "checksum": "sha256:c0a0c6f3e30c20815496be8de00f9596737e2693feb85f7484f200ffa9174530", + "check_gpg": true + }, + { + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "checksum": "sha256:6fc1181ed798617668f195579acfcf8fb212513a776f376eecfb3d086c66b2d9", + "check_gpg": true + }, + { + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "checksum": "sha256:695ef8ae55ed6a165a3633b3c0d75b320879246386e6df4539be9286f5176cc5", + "check_gpg": true + }, + { + "checksum": "sha256:f391fe0e21e51e7c864f8bce1b5825419f4096023b5b90b3976bbd69d6a4d720", + "check_gpg": true + }, + { + "checksum": "sha256:599549d72d26b48c45156585a5698898c853e56469142e202d3749b781428465", + "check_gpg": true + }, + { + "checksum": "sha256:66bb5b2e99d2c74b82943fe61fe9b9a3674350b0242f69a6854ec9718dcf5e07", + "check_gpg": true + }, + { + "checksum": "sha256:af66820023c984d8b981ecac715d0c2daec1f89dcb69bed76ddf58b0ee80c1b1", + "check_gpg": true + }, + { + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "checksum": "sha256:16702883a79532a400d7304146cdb47b0599983b9fb48ab918ef9fa1ce0be394", + "check_gpg": true + }, + { + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "checksum": "sha256:36778f8a4fa111c4f796bbea8fd52f7b9708de8f4351070faa30bc985db59885", + "check_gpg": true + }, + { + "checksum": "sha256:dab54013f8316b766c40c71f9c0c2124c1f0c219b417d588b5ba1dccf7d63fd7", + "check_gpg": true + }, + { + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "checksum": "sha256:1bbc57adf40ac80fd55112fe79e5020fdf92e81019eef4929de171bd50faeaf4", + "check_gpg": true + }, + { + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "checksum": "sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975", + "check_gpg": true + }, + { + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "checksum": "sha256:2a43575b51ec218905692cd4ca445c13fe60fae58e42906bc2838c75c006c418", + "check_gpg": true + }, + { + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "checksum": "sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467", + "check_gpg": true + }, + { + "checksum": "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4", + "check_gpg": true + }, + { + "checksum": "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9", + "check_gpg": true + }, + { + "checksum": "sha256:25ae9056f75df4efff0d17d916e7c3889c421368613acec7f1c4119bd17eac13", + "check_gpg": true + }, + { + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "checksum": "sha256:ca80c458fab5bdde0276702f06217d1219085428560af6039aa1c5cf1e58ff3b", + "check_gpg": true + }, + { + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "checksum": "sha256:0b7d24759aac33303ff4b101c111dea03ff2529efc95661140e22f629cc1ab7a", + "check_gpg": true + }, + { + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "checksum": "sha256:2f2480b184cf545765950db803333343b9b0f38e25eeb5c8285ac69feeaa9ef4", + "check_gpg": true + }, + { + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "checksum": "sha256:0d51c1319ee78978e6ea5a49b815c2078b4ffd4d575e98c70e54ca01c3390eb8", + "check_gpg": true + }, + { + "checksum": "sha256:8b148415fb6a583ef131d0ddff44f3209c30d0299fde7b20cd3ea385590927c1", + "check_gpg": true + }, + { + "checksum": "sha256:d1e244b8b5ce7404846e97d96c762c8c18ff6447301f6fc63f50e615029aa7cd", + "check_gpg": true + }, + { + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "checksum": "sha256:4b9da0cedada16eb80a2d66b86aa62c9b026501e13a3e947a5a03a06f41d9dbb", + "check_gpg": true + }, + { + "checksum": "sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719", + "check_gpg": true + }, + { + "checksum": "sha256:444f18dc1d8f6d0a4ff8ca9816e21e8faaeb4c31ac7997774a9454d4d336c21b", + "check_gpg": true + }, + { + "checksum": "sha256:e5efc87172d7081559137feaa221047385a5e248ffafd9794c2bfc73b61f8f37", + "check_gpg": true + }, + { + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "checksum": "sha256:5cd4b781742b64dfff3cb3840ed5bb76f6946fb63f4ab742a51c3505747271a1", + "check_gpg": true + }, + { + "checksum": "sha256:dc5a84049a6fc1f7c2a709ab3c2fa53de65e864f26085f5ca69864f5c2f6955d", + "check_gpg": true + }, + { + "checksum": "sha256:d36f08a44d6a3bc95f995c858ecb5e0d7fb22a8236008267024dd6a0ff66cc85", + "check_gpg": true + }, + { + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "checksum": "sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386", + "check_gpg": true + }, + { + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "checksum": "sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444", + "check_gpg": true + }, + { + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "checksum": "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862", + "check_gpg": true + }, + { + "checksum": "sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070", + "check_gpg": true + }, + { + "checksum": "sha256:129adf9147d5d120546ca8e0fb5f165761106d386d366fe82591e372754d0b4a", + "check_gpg": true + }, + { + "checksum": "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4", + "check_gpg": true + }, + { + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "checksum": "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576", + "check_gpg": true + }, + { + "checksum": "sha256:8ee8c4bbf024b998ffb77a6b4194a2306ac21c5a6fcf70c8c81a0fbf38f7c7fc", + "check_gpg": true + }, + { + "checksum": "sha256:34411604a91c301dc8489285065c68f3a2f50910717097fedcaade6481c7469e", + "check_gpg": true + }, + { + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "checksum": "sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124", + "check_gpg": true + }, + { + "checksum": "sha256:0fc0193d95d69c780b6feb1cb74759ca2d4804701b3de936dac8429cfbe0f2e9", + "check_gpg": true + }, + { + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "checksum": "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f", + "check_gpg": true + }, + { + "checksum": "sha256:d2abba1a0523bd9df5073900593ab13ec2ed2e391440be4d883314fa154370f8", + "check_gpg": true + }, + { + "checksum": "sha256:cb0c64cc81e0b384bbc9d27ffcb2a655b13c91a799aad8972264aed1767926a3", + "check_gpg": true + }, + { + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "checksum": "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58", + "check_gpg": true + }, + { + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "checksum": "sha256:699c1a3ff311bbaa2380c085fb4f516aa08be474bed02bcd1569d0bbf5b22d07", + "check_gpg": true + }, + { + "checksum": "sha256:265dee550073120d51e4c94d3d039e5efdee73a0ae1b1faf2b92de0dad1f58fa", + "check_gpg": true + }, + { + "checksum": "sha256:3ee53d0dba5bbfd3bbb2ae4b54e3ebdfa122e1cf120e17ff9c4c35674269e5ad", + "check_gpg": true + }, + { + "checksum": "sha256:3c3fb1ca768ecd6ae7905a09cd85b9f67e9f08c46d18779520fb4b29476865c7", + "check_gpg": true + }, + { + "checksum": "sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b", + "check_gpg": true + }, + { + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "checksum": "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b", + "check_gpg": true + }, + { + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "checksum": "sha256:4fca21cfdcbed052e3e9e1eff74c22fb8ffb1fbbeb63e87e2aa540e43a8c0d09", + "check_gpg": true + }, + { + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "checksum": "sha256:4911b74bc1ec5d053ddef2c134e6fcf247ea89b06c7409c31314b4986933758c", + "check_gpg": true + }, + { + "checksum": "sha256:8a8a34323af79ec2a2d87743dfe375ffc2bcdeb7be75637524c60df854ff7b42", + "check_gpg": true + }, + { + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "checksum": "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf", + "check_gpg": true + }, + { + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "redhat": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "vfs_type": "ext4", + "path": "/", + "options": "defaults", + "freq": 1, + "passno": 1 + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "kernel_opts": "ro biosdevname=0 net.ifnames=0", + "legacy": "i386-pc" + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "vmdk", + "filename": "disk.vmdk", + "size": 2147483648, + "ptuuid": "0x14fc63d2", + "pttype": "mbr", + "partitions": [ + { + "start": 2048, + "bootable": true, + "filesystem": { + "type": "ext4", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/acl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/alternatives-1.11-6.fc32.x86_64.rpm", + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm", + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bash-5.0.11-2.fc32.x86_64.rpm", + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.x86_64.rpm", + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2020.2.40", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm", + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-common-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.13", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cpio-2.13-4.fc32.x86_64.rpm", + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.x86_64.rpm", + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/curl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.x86_64.rpm", + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "22", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-broker-22-1.fc32.x86_64.rpm", + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm", + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-5.fc32.x86_64.rpm", + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/diffutils-3.7-4.fc32.x86_64.rpm", + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dosfstools-4.1-10.fc32.x86_64.rpm", + "checksum": "sha256:c3f7089ae50f79cf4d2cb59e01091d33c70cab89ae08f95c547339a87404c3ec", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-050-26.git20200316.fc32.x86_64.rpm", + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm", + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libelf-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libs-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/expat-2.2.8-2.fc32.x86_64.rpm", + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm", + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-32-1.noarch.rpm", + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-common-32-1.noarch.rpm", + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-repos-32-1.noarch.rpm", + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-libs-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.14", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/filesystem-3.14-2.fc32.x86_64.rpm", + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.7.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/findutils-4.7.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-9.fc32.x86_64.rpm", + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gawk-5.0.1-7.fc32.x86_64.rpm", + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.x86_64.rpm", + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.64.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glib2-2.64.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-all-langpacks-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:129d919e55c09edecaa8edd0fd4058dbf7460aaae5d1c5625ca11f6df7defefe", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-common-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gmp-6.1.2-13.fc32.x86_64.rpm", + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.13", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnutls-3.6.13-1.fc32.x86_64.rpm", + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gpgme-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grep-3.3-4.fc32.x86_64.rpm", + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gzip-1.10-2.fc32.x86_64.rpm", + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.x86_64.rpm", + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-libs-1.8.4-7.fc32.x86_64.rpm", + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/json-c-0.13.1-9.fc32.x86_64.rpm", + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-2.2.0-1.fc32.x86_64.rpm", + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-27-1.fc32.x86_64.rpm", + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-libs-27-1.fc32.x86_64.rpm", + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kpartx-0.8.2-3.fc32.x86_64.rpm", + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/krb5-libs-1.18-1.fc32.x86_64.rpm", + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libacl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.111", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libaio-0.3.111-7.fc32.x86_64.rpm", + "checksum": "sha256:a410db5c56d4f39f6ea71e7d5bb6d4a2bd518015d1e34f38fbc0d7bbd4e872d4", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.2", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libarchive-3.4.2-1.fc32.x86_64.rpm", + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libargon2-20171227-4.fc32.x86_64.rpm", + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libassuan-2.5.3-3.fc32.x86_64.rpm", + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libattr-2.4.48-8.fc32.x86_64.rpm", + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libblkid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "name": "libbrotli", + "epoch": 0, + "version": "1.0.7", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbrotli-1.0.7-10.fc32.x86_64.rpm", + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-2.26-7.fc32.x86_64.rpm", + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-ng-0.7.10-2.fc32.x86_64.rpm", + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcom_err-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcroco-0.6.13-3.fc32.x86_64.rpm", + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcurl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libevent-2.1.8-8.fc32.x86_64.rpm", + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfdisk-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libffi-3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcc-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-3.fc32.x86_64.rpm", + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgomp-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgpg-error-1.36-3.fc32.x86_64.rpm", + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libidn2-2.3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libksba-1.3.5-11.fc32.x86_64.rpm", + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-10.fc32.x86_64.rpm", + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmnl-1.0.4-11.fc32.x86_64.rpm", + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmodulemd-2.9.1-1.fc32.x86_64.rpm", + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmount-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.x86_64.rpm", + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "17.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.x86_64.rpm", + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.40.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnghttp2-1.40.0-2.fc32.x86_64.rpm", + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "6.20180605git4a062cf.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64.rpm", + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpcap-1.9.1-3.fc32.x86_64.rpm", + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpsl-0.21.0-4.fc32.x86_64.rpm", + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpwquality-1.4.2-2.fc32.x86_64.rpm", + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.11.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/librepo-1.11.1-4.fc32.x86_64.rpm", + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.12.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm", + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libseccomp-2.4.2-3.fc32.x86_64.rpm", + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.20.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsecret-0.20.2-2.fc32.x86_64.rpm", + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-utils-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsemanage-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsepol-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsigsegv-2.11-10.fc32.x86_64.rpm", + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsmartcols-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsolv-0.7.11-2.fc32.x86_64.rpm", + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libss-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-0.9.3-2.fc32.x86_64.rpm", + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm", + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.16.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtasn1-4.16.0-1.fc32.x86_64.rpm", + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.2.5", + "release": "1.rc2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.x86_64.rpm", + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libunistring-0.9.10-7.fc32.x86_64.rpm", + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libusbx-1.0.23-1.fc32.x86_64.rpm", + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "18.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libutempter-1.1.6-18.fc32.x86_64.rpm", + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuuid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libverto-0.3.0-9.fc32.x86_64.rpm", + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.10.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.x86_64.rpm", + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.10", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxml2-2.9.10-3.fc32.x86_64.rpm", + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libyaml-0.2.2-3.fc32.x86_64.rpm", + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libzstd-1.4.4-2.fc32.x86_64.rpm", + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-7.fc32.x86_64.rpm", + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-2.fc32.x86_64.rpm", + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mkpasswd-5.5.6-1.fc32.x86_64.rpm", + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "4.0.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mpfr-4.0.2-3.fc32.x86_64.rpm", + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm", + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nettle-3.5.1-5.fc32.x86_64.rpm", + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/npth-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openldap-2.4.47-4.fc32.x86_64.rpm", + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.x86_64.rpm", + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/os-prober-1.77-4.fc32.x86_64.rpm", + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pam-1.3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.44", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre-8.44-1.fc32.x86_64.rpm", + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-10.34-9.fc32.x86_64.rpm", + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "name": "pcre2-syntax", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm", + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pigz-2.4-6.fc32.x86_64.rpm", + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pinentry-1.1.0-7.fc32.x86_64.rpm", + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/popt-1.16-19.fc32.x86_64.rpm", + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-7.fc32.x86_64.rpm", + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm", + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libs-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-unbound-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "name": "qemu-img", + "epoch": 2, + "version": "4.2.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qemu-img-4.2.0-7.fc32.x86_64.rpm", + "checksum": "sha256:475b6de876914aec2187ac4858a13ae75585f5c4cb5d739c637f79a5ca6f05f9", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.x86_64.rpm", + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/readline-8.0-4.fc32.x86_64.rpm", + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sed-4.5-5.fc32.x86_64.rpm", + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.6", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm", + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.8.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shadow-utils-4.8.1-2.fc32.x86_64.rpm", + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.15", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shared-mime-info-1.15-3.fc32.x86_64.rpm", + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.31.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-libs-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-pam-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm", + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-udev-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tar-1.32-4.fc32.x86_64.rpm", + "checksum": "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tss2-1331-4.fc32.x86_64.rpm", + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm", + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/unbound-libs-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/util-linux-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/which-2.21-19.fc32.x86_64.rpm", + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm", + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.29", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm", + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-libs-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "21.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zlib-1.2.11-21.fc32.x86_64.rpm", + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.22.10", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-1.22.10-1.fc32.x86_64.rpm", + "checksum": "sha256:342bdf0143d9145f8846e1b5c3401685e0d1274b66df39ac8cbfb78013313861", + "check_gpg": true + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.22.10", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/NetworkManager-libnm-1.22.10-1.fc32.x86_64.rpm", + "checksum": "sha256:fd2a2dd726d855f877296227fb351883d647df28b1b0085f525d87df622d49e4", + "check_gpg": true + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/acl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:705bdb96aab3a0f9d9e2ff48ead1208e2dbc1927d713d8637632af936235217b", + "check_gpg": true + }, + { + "name": "alternatives", + "epoch": 0, + "version": "1.11", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/alternatives-1.11-6.fc32.x86_64.rpm", + "checksum": "sha256:c574c5432197acbe08ea15c7837be7577cd0b49902a3e65227792f051d73ce5c", + "check_gpg": true + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:f09047c09660bc998460f710b9ac0561b4f6028214168d4d40f2f4d99f61a94d", + "check_gpg": true + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.19.20191104git1c2f876.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/a/audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64.rpm", + "checksum": "sha256:22d311f22902d592f72bd0fb4010a682f796e5a4698d5ea209848468a2d5aa96", + "check_gpg": true + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/basesystem-11-9.fc32.noarch.rpm", + "checksum": "sha256:a346990bb07adca8c323a15f31b093ef6e639bde6ca84adf1a3abebc4dc9adce", + "check_gpg": true + }, + { + "name": "bash", + "epoch": 0, + "version": "5.0.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bash-5.0.11-2.fc32.x86_64.rpm", + "checksum": "sha256:7a97e71cd552285ead303d07dbb6417403edf45c0a531e02cf4ebfb0efda4975", + "check_gpg": true + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/b/bzip2-libs-1.0.8-2.fc32.x86_64.rpm", + "checksum": "sha256:842f7a38be2e8dbb14eff3ede4091db214ebe241e1fde7a128e88c4e686b63b0", + "check_gpg": true + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.15.0", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/c-ares-1.15.0-5.fc32.x86_64.rpm", + "checksum": "sha256:46407b730b272223b8b64d12df0725af571b4a5c5ab89b9f41e12a49e07c6e6b", + "check_gpg": true + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2020.2.40", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/ca-certificates-2020.2.40-3.fc32.noarch.rpm", + "checksum": "sha256:73f6a9108f7d5ec3cd89c31dbbaa874ae28cd5cb443ef69700a1218903ee2fc4", + "check_gpg": true + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/chrony-3.5-8.fc32.x86_64.rpm", + "checksum": "sha256:398ce75ffc673f048ffd47d417b17ef086abc43f318b2b77d2869095ec764d57", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:c79b1ac96de482251a39cc064b4b31442423e318373539dea31b4f50f93ab309", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-sans-mono-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:a7af6691cd4c87765133c885f2931ac53191e3a48e481a256945d9c18d523d56", + "check_gpg": true + }, + { + "name": "compat-f32-dejavu-serif-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:5a4999ef9d68371dbf4df59f2131bdac3e357be5202f5f68bfd85ff71593e280", + "check_gpg": true + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:7023687eb65baa56a9b4c3ffde1e439b3d41b03ac4ad35a1a1fc3903464548f7", + "check_gpg": true + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.32", + "release": "3.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/coreutils-common-8.32-3.fc32.1.x86_64.rpm", + "checksum": "sha256:5323eb8d89b2d0c905a633513e04ca7df633c21eec288ee8c50f3f5170534e37", + "check_gpg": true + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.13", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cpio-2.13-4.fc32.x86_64.rpm", + "checksum": "sha256:116b9d121fad9886f245cd5e1ef678fdba889cd23a39e91447e75649214a6a8d", + "check_gpg": true + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:862e75c10377098a9cc50407a0395e5f3a81d14b5b6fecfb3f223325c8867829", + "check_gpg": true + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "22.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cracklib-dicts-2.9.6-22.fc32.x86_64.rpm", + "checksum": "sha256:1aee865249b031e591a5e94d62d05b69ad1a6118a26adccf2dfd46b0002716e5", + "check_gpg": true + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:3f8dcae27ad3609b7de298d0ca8d34a2790b9898f5f1b03f3f9f8784374e307b", + "check_gpg": true + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20191128", + "release": "5.gitcd267a5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch.rpm", + "checksum": "sha256:b821e9e8bf66abacaed4a386f9ed8ffa17f4f8be3db55e1ac31d52ba2d1faa1b", + "check_gpg": true + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cryptsetup-libs-2.3.0-1.fc32.x86_64.rpm", + "checksum": "sha256:eaffaa8de8fd28ad124da12524a2ca5db86252404d70d66c7c42921dad6b69c1", + "check_gpg": true + }, + { + "name": "curl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/curl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4", + "check_gpg": true + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/c/cyrus-sasl-lib-2.1.27-4.fc32.x86_64.rpm", + "checksum": "sha256:fefa4162a563eba24714ac43874c508d1ba036afb5127c5d21bbcbeaf238a740", + "check_gpg": true + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:ed36d759746e75a2834866fbeaa783df397f8813cae2ed79fcc4d146656bf6a6", + "check_gpg": true + }, + { + "name": "dbus-broker", + "epoch": 0, + "version": "22", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-broker-22-1.fc32.x86_64.rpm", + "checksum": "sha256:213c17fb822ffa50fad16989ed363aa023de106c6262ccc3f16e52a154b7133f", + "check_gpg": true + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-common-1.12.16-4.fc32.noarch.rpm", + "checksum": "sha256:6fc1b9a27eeb368a98f50dba5fc514f20a5eb23f8e0ee7dd92c4051ef8b4a940", + "check_gpg": true + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.16", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dbus-libs-1.12.16-4.fc32.x86_64.rpm", + "checksum": "sha256:474fd088c7e7234221d251153e9fda6081b0aa8979bf5ae25810c9862e1e9960", + "check_gpg": true + }, + { + "name": "dejavu-sans-fonts", + "epoch": 0, + "version": "2.37", + "release": "7.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dejavu-sans-fonts-2.37-7.fc32.noarch.rpm", + "checksum": "sha256:90696ad252433f7b9ae29cff87701836f980cc1a93f6e21584370ed20a8e1315", + "check_gpg": true + }, + { + "name": "deltarpm", + "epoch": 0, + "version": "3.6.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/deltarpm-3.6.2-5.fc32.x86_64.rpm", + "checksum": "sha256:b70d1c93e3448b1a0b5e3f50488290283a260ff46e22bff4fb704469e6017fa8", + "check_gpg": true + }, + { + "name": "device-mapper", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:c132999a3f110029cd427f7578965ad558e91374637087d5230ee11c626ebcd4", + "check_gpg": true + }, + { + "name": "device-mapper-libs", + "epoch": 0, + "version": "1.02.171", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/device-mapper-libs-1.02.171-1.fc32.x86_64.rpm", + "checksum": "sha256:61cae80187ef2924857fdfc48a240646d23b331482cf181e7d8c661b02c15949", + "check_gpg": true + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.4.2", + "release": "5.b1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dhcp-client-4.4.2-5.b1.fc32.x86_64.rpm", + "checksum": "sha256:8c047278ce11e7ba7169a9c9537c3c6544f52c7eee8754179acd839ed59c028f", + "check_gpg": true + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.4.2", + "release": "5.b1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dhcp-common-4.4.2-5.b1.fc32.noarch.rpm", + "checksum": "sha256:48c36b8950b7e79e5f36317da9349392dae0b739177e9c60653a8a1a62814013", + "check_gpg": true + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/diffutils-3.7-4.fc32.x86_64.rpm", + "checksum": "sha256:187dd61be71efcca6adf9819a523d432217abb335afcb2b95ef27b72928aff4b", + "check_gpg": true + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:78e1aa11379eec2906eedf843216f47bcbdfe4da4713d566fb44ca313c893f3f", + "check_gpg": true + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-data-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:80d407bbc5f6bb8d95504cfdb51faaca937f6c4c08df4c4aadcd46fe703c8a57", + "check_gpg": true + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.14", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dnf-plugins-core-4.0.14-1.fc32.noarch.rpm", + "checksum": "sha256:26b524ed340cdf6bcc93fd909c2168b9db76784e486d6c1f421dbe69a3847d6d", + "check_gpg": true + }, + { + "name": "dracut", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-050-26.git20200316.fc32.x86_64.rpm", + "checksum": "sha256:993680d5cd133a0c21184be92b3df405d757613d0ca25c4abf08b203d8d26b79", + "check_gpg": true + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "050", + "release": "26.git20200316.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/d/dracut-config-generic-050-26.git20200316.fc32.x86_64.rpm", + "checksum": "sha256:4819b3ce25b997d8d3e5e4e4be4ba270e8b66852576b474daf0e6d61b6e22d73", + "check_gpg": true + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:2fa5e252441852dae918b522a2ff3f46a5bbee4ce8936e06702bf65f57d7ff99", + "check_gpg": true + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/e2fsprogs-libs-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:26db62c2bc52c3eee5f3039cdbdf19498f675d0f45aec0c2a1c61c635f01479e", + "check_gpg": true + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-debuginfod-client-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:4f318cec61cb69fc233ba5505b7e24f679afdfb0b5defbaef507f1b471e7dbb5", + "check_gpg": true + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-default-yama-scope-0.179-1.fc32.noarch.rpm", + "checksum": "sha256:af62d0611b995b9f2b2c7b4d4852e03e521d66979534871ccb5a71275a15518d", + "check_gpg": true + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libelf-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:f3eb795f68c80ccf870f1d27f8fd019878db748c0c19275634c48cf5cea5bc46", + "check_gpg": true + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.179", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/elfutils-libs-0.179-1.fc32.x86_64.rpm", + "checksum": "sha256:99f87b4ec7c5852d45028f3eae65fc813f3ef107e128777f265b09a19ce262e0", + "check_gpg": true + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.8", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/e/expat-2.2.8-2.fc32.x86_64.rpm", + "checksum": "sha256:8fc2ae85f242105987d8fa7f05e4fa19358a7c81dff5fa163cf021eb6b9905e9", + "check_gpg": true + }, + { + "name": "fedora-gpg-keys", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-gpg-keys-32-1.noarch.rpm", + "checksum": "sha256:09fea9af8b695af862b19c1a8fbe1b1e8854257825ee4f663f67b3782a75d58a", + "check_gpg": true + }, + { + "name": "fedora-release", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-32-1.noarch.rpm", + "checksum": "sha256:1f2ba0fc562864ad1bea31a42da124030fc188d23a84d144be616c2d066e1531", + "check_gpg": true + }, + { + "name": "fedora-release-common", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-release-common-32-1.noarch.rpm", + "checksum": "sha256:a1835a7929d3c1613f3890caef878e9bdf857dcc0f63eb4d63a1140370b3f21b", + "check_gpg": true + }, + { + "name": "fedora-repos", + "epoch": 0, + "version": "32", + "release": "1", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fedora-repos-32-1.noarch.rpm", + "checksum": "sha256:21e3fd914a3bcc65b79de022782967903c55a4aed9a3c7d3464bc2fef32d02b3", + "check_gpg": true + }, + { + "name": "file", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:28656826cb0dfbae9b6e8d1e5c5691773d84000493c4be47f727092fec6dc6f4", + "check_gpg": true + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.38", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/file-libs-5.38-2.fc32.x86_64.rpm", + "checksum": "sha256:e0b1da98020a740991dbb70b42c0ff1eece9e268a461e555a5ec763bda1645f5", + "check_gpg": true + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.14", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/filesystem-3.14-2.fc32.x86_64.rpm", + "checksum": "sha256:1110261787146443e089955912255d99daf7ba042c3743e13648a9eb3d80ceb4", + "check_gpg": true + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.7.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/findutils-4.7.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0b7cd6f6cb3b7cd9e0704dd6c62b65254b04cb870ab638b9bed4951564436e24", + "check_gpg": true + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-1.5.0-8.fc32.x86_64.rpm", + "checksum": "sha256:907393755387a351806ec2afff376e7491f177116caadd12f07d0fcbed796750", + "check_gpg": true + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fipscheck-lib-1.5.0-8.fc32.x86_64.rpm", + "checksum": "sha256:f2715fc8a04d33716f40f5b34466e082140df7ff3b7b972c29655d4dfc6e3a72", + "check_gpg": true + }, + { + "name": "firewalld", + "epoch": 0, + "version": "0.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/firewalld-0.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:b8ecd7fa0e7e072828e374dfb0d61bb8eecca7c190f3661050cee5e3fc8854b4", + "check_gpg": true + }, + { + "name": "firewalld-filesystem", + "epoch": 0, + "version": "0.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/firewalld-filesystem-0.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:47538b1db9720be4699329a8da32d873187d0c6c22f45252614ac5b8a8312482", + "check_gpg": true + }, + { + "name": "fonts-filesystem", + "epoch": 0, + "version": "2.0.3", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fonts-filesystem-2.0.3-1.fc32.noarch.rpm", + "checksum": "sha256:879ba2533610771dbf3fa103fdbde878edf255b771b53aa8a170009d01446012", + "check_gpg": true + }, + { + "name": "fuse", + "epoch": 0, + "version": "2.9.9", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-2.9.9-9.fc32.x86_64.rpm", + "checksum": "sha256:9369d4fed30402f45705b7a5cb51b6eeefb1dabbe0942c84514c6fdf1edac5e0", + "check_gpg": true + }, + { + "name": "fuse-common", + "epoch": 0, + "version": "3.9.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-common-3.9.1-1.fc32.x86_64.rpm", + "checksum": "sha256:45132e53c649def28d63c199d8c3a3b9fd16fa8bca7426ad4e9c202e52a233b4", + "check_gpg": true + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.9", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/f/fuse-libs-2.9.9-9.fc32.x86_64.rpm", + "checksum": "sha256:53992752850779218421994f61f1589eda5d368e28d340dccaae3f67de06e7f2", + "check_gpg": true + }, + { + "name": "gawk", + "epoch": 0, + "version": "5.0.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gawk-5.0.1-7.fc32.x86_64.rpm", + "checksum": "sha256:d0e5d0104cf20c8dd332053a5903aab9b7fdadb84b35a1bfb3a6456f3399eb32", + "check_gpg": true + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gdbm-libs-1.18.1-3.fc32.x86_64.rpm", + "checksum": "sha256:9899cfd32ada2537693af30b60051da21c6264b0d0db51ba709fceb179d4c836", + "check_gpg": true + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20191217", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/geolite2-city-20191217-2.fc32.noarch.rpm", + "checksum": "sha256:81d4c5626c04f83f1d719f7e675f422533365fd363d34f546b44da328c7900f3", + "check_gpg": true + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20191217", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/geolite2-country-20191217-2.fc32.noarch.rpm", + "checksum": "sha256:0481487302a1a634a404f1a405a58034abb4c35fea95c4a73bdf16164b0c4c1f", + "check_gpg": true + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:349af433b2f6d45ff2e1ea5a38f847ec692fef0a8dd656a9a07d423a981946d0", + "check_gpg": true + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gettext-libs-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:fdb9bc612957a16fc44b717605a5a26e16a33850c0ff74a80a299cc2bab740e4", + "check_gpg": true + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.64.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glib2-2.64.1-1.fc32.x86_64.rpm", + "checksum": "sha256:6fe524feb38312f9c370b2190aeb42330acc9ce42f3a45e9cd05748b4aa00db2", + "check_gpg": true + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:dc9c0401522bcf73fe5a692184c141b214947ad83364be97de0413ab46b712e5", + "check_gpg": true + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-common-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:e80533822e2a892345b869395b2c17c0bcc98d3c3c47787da30123096835db00", + "check_gpg": true + }, + { + "name": "glibc-langpack-en", + "epoch": 0, + "version": "2.31", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/glibc-langpack-en-2.31-2.fc32.x86_64.rpm", + "checksum": "sha256:24520e03276e0d850169efc9d83b12a9a01eee5d7202dadca12d2e0a8b7352ba", + "check_gpg": true + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gmp-6.1.2-13.fc32.x86_64.rpm", + "checksum": "sha256:178e4470a6dfca84ec133932606737bfe167094560bf473940504c511354ddc9", + "check_gpg": true + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:cc3396df93ce0e8f439b83fb6b4d210903876846b0bd3a22c19c7770cf5a9050", + "check_gpg": true + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.19", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnupg2-smime-2.2.19-1.fc32.x86_64.rpm", + "checksum": "sha256:966084f83e0fedb7a217aa102b484ac8a63082ccfe99517544ed2cb102191204", + "check_gpg": true + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.13", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gnutls-3.6.13-1.fc32.x86_64.rpm", + "checksum": "sha256:9d4f1290565b852e56f9e9babc14b141b0283998121f78b0eb83dec367cf0abb", + "check_gpg": true + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.64.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gobject-introspection-1.64.1-1.fc32.x86_64.rpm", + "checksum": "sha256:052ddc487a29acce1b5d44532f79f8ab594d0ac6565504071f4c7706d97fc552", + "check_gpg": true + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gpgme-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:13a0c9c767f71164cc678ee36d89b7fddcdd6fb8243e3daf8b47cca0d1d14c4f", + "check_gpg": true + }, + { + "name": "grep", + "epoch": 0, + "version": "3.3", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grep-3.3-4.fc32.x86_64.rpm", + "checksum": "sha256:759165656ac8141b0c0ada230c258ffcd4516c4c8d132d7fbaf762cd5a5e4095", + "check_gpg": true + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "21.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/groff-base-1.22.3-21.fc32.x86_64.rpm", + "checksum": "sha256:808e7209893298d11ac27f148c1b3d1a2b28e303e7930b43659a08dc0f660ac4", + "check_gpg": true + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-common-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:01173d218dccdf88c1159bba4af332ce703fc0dcd7171cd279cb3e16f12b30a9", + "check_gpg": true + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:110f538d82f15f009d95e89d8c1e3669dc7358feb9aa7724301fef037f8b67fe", + "check_gpg": true + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-pc-modules-2.04-12.fc32.noarch.rpm", + "checksum": "sha256:c2197913bc8db9548b0a40ffddf840a31956b18e932ad4eec77a48d87d2289ce", + "check_gpg": true + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:7f6d2841ec9402ee5e57f1a46b9886935138c02005d860899f3c746c7885c7b9", + "check_gpg": true + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.04", + "release": "12.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grub2-tools-minimal-2.04-12.fc32.x86_64.rpm", + "checksum": "sha256:d1c6f183b9deaf6127db4ad7040046bd7f1aa62de177961aac39501605d2c815", + "check_gpg": true + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/grubby-8.40-40.fc32.x86_64.rpm", + "checksum": "sha256:cbdc61d713e4cbe52b2bece117912da0f1e3782cb3b33caa068e96c854c990be", + "check_gpg": true + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/g/gzip-1.10-2.fc32.x86_64.rpm", + "checksum": "sha256:53f1e8570b175e8b58895646df6d8068a7e1f3cb1bafdde714ddd038bcf91e85", + "check_gpg": true + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.23", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/h/hostname-3.23-2.fc32.x86_64.rpm", + "checksum": "sha256:def89a494acbfd6aae1fb70700dd18275ddd3050893bc962f1853499af9dd823", + "check_gpg": true + }, + { + "name": "hwdata", + "epoch": 0, + "version": "0.334", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/h/hwdata-0.334-1.fc32.noarch.rpm", + "checksum": "sha256:5eed798a806e26720df47f1c95600ae67cc1275c381f33c8260b32b23d81a978", + "check_gpg": true + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.2.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ima-evm-utils-1.2.1-3.fc32.x86_64.rpm", + "checksum": "sha256:c1f957511b5e011e6f7995ed7bca9196703cf1214068f209e86b1dc4fd0e98bf", + "check_gpg": true + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.02", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/initscripts-10.02-3.fc32.x86_64.rpm", + "checksum": "sha256:bca13571cf1452f3e41c8e89b8c64aa33d3d0f4e414571f9dde32a556591b339", + "check_gpg": true + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.4.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipcalc-0.4.0-2.fc32.x86_64.rpm", + "checksum": "sha256:fe70d5a1c818367be3a5a7e60cbb379f020f97f63ba3c13ed09740f45a43154a", + "check_gpg": true + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.5.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-5.5.0-1.fc32.x86_64.rpm", + "checksum": "sha256:865c7677d2664287bb4ba2874c83bc805232e1b3a02cf6ba96e047266d9ef684", + "check_gpg": true + }, + { + "name": "iproute-tc", + "epoch": 0, + "version": "5.5.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iproute-tc-5.5.0-1.fc32.x86_64.rpm", + "checksum": "sha256:0c6f4c1fbbdaf02014bf81726264e3301cbfe0ecda610765be11dbbfe99e34ae", + "check_gpg": true + }, + { + "name": "ipset", + "epoch": 0, + "version": "7.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipset-7.6-1.fc32.x86_64.rpm", + "checksum": "sha256:7c21c21c3e3dbace06bee03fe4835ae6cb1e3ef86750ba2853f39d40dead2309", + "check_gpg": true + }, + { + "name": "ipset-libs", + "epoch": 0, + "version": "7.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/ipset-libs-7.6-1.fc32.x86_64.rpm", + "checksum": "sha256:f60fc561675e41ffa2c48b229960291e2438441d5ed758c1f28cb06b5d4e4ea9", + "check_gpg": true + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-libs-1.8.4-7.fc32.x86_64.rpm", + "checksum": "sha256:f4eb6d332b9aea8d8ef0a6ea8dc2b073d6bf5f2599d64f24111d8da2ee82ad48", + "check_gpg": true + }, + { + "name": "iptables-nft", + "epoch": 0, + "version": "1.8.4", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iptables-nft-1.8.4-7.fc32.x86_64.rpm", + "checksum": "sha256:08c41c10745c172c34880e384cf5cff014a9627f4895e59fa482948b27e2ce9e", + "check_gpg": true + }, + { + "name": "iputils", + "epoch": 0, + "version": "20190515", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/i/iputils-20190515-5.fc32.x86_64.rpm", + "checksum": "sha256:6a3282927f525629bc0aaf4090e108d33b0709d3d5b35bc442000c2837e7b9b4", + "check_gpg": true + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.12", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/jansson-2.12-5.fc32.x86_64.rpm", + "checksum": "sha256:975719a0c73cf5cb5bcbc8ad11b816ed75923dccd9c091baa4a6c6000753dcd8", + "check_gpg": true + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/j/json-c-0.13.1-9.fc32.x86_64.rpm", + "checksum": "sha256:d3a64fcef3de79a97541b21c71ddd00d4cca9039c930bc660d6c5479eabf5f26", + "check_gpg": true + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-2.2.0-1.fc32.x86_64.rpm", + "checksum": "sha256:a05178831a546e2001e52f065fc6969f36d2292efaee2971fe7a7e882cc8c813", + "check_gpg": true + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-legacy-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:3be681b78e919bfd82eb186c7393718f1d37abd0b1bb8b1a8571aefa11e7a248", + "check_gpg": true + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.2.0", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kbd-misc-2.2.0-1.fc32.noarch.rpm", + "checksum": "sha256:60774007011889671c28158f599032f0db253c153ccae70f5e2f5840f2dc490b", + "check_gpg": true + }, + { + "name": "kernel", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-5.6.6-300.fc32.x86_64.rpm", + "checksum": "sha256:89c972ec7d2ab305c91c23bc248562c76f0ae645a9ed9f94d312e2f57c4d38fe", + "check_gpg": true + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-core-5.6.6-300.fc32.x86_64.rpm", + "checksum": "sha256:a1613e90865db93fb578b8ee1a4ee40bd396c6c9f2fb2a14757acacecb9f23e8", + "check_gpg": true + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "5.6.6", + "release": "300.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kernel-modules-5.6.6-300.fc32.x86_64.rpm", + "checksum": "sha256:b98687828b1d222ea73ebb8457450913dac58dd0be2e430a93bb7e98ba816505", + "check_gpg": true + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/keyutils-libs-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:ccc3cb2dcb7a534361cc911f27ff4e869902a150b68e236cf6eb209a99d4ee22", + "check_gpg": true + }, + { + "name": "kmod", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-27-1.fc32.x86_64.rpm", + "checksum": "sha256:3f9c95f3827b785f49ac4a270d4c3a703dceba673c452838744ec5064cf43cbd", + "check_gpg": true + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "27", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kmod-libs-27-1.fc32.x86_64.rpm", + "checksum": "sha256:56187c1c980cc0680f4dbc433ed2c8507e7dc9ab00000615b63ea08c086b7ab2", + "check_gpg": true + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/kpartx-0.8.2-3.fc32.x86_64.rpm", + "checksum": "sha256:fbb81a7811f7a11b1c95eec20c3df63beef9e007f0b3d2713f13ad80029d7249", + "check_gpg": true + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/k/krb5-libs-1.18-1.fc32.x86_64.rpm", + "checksum": "sha256:e2b2dddbce49fab5f01ba75fae8796ab7c9fd8280c652f78d06a2644246bd16d", + "check_gpg": true + }, + { + "name": "langpacks-core-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:8872b5c1cdb71f8161c54ccbba28110d68294fefd9d24afb67758be49598c1c0", + "check_gpg": true + }, + { + "name": "langpacks-core-font-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-core-font-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:6923881ce751e903ea2a2e8a58733aad24b33d042b0954fb5c9159360be6d389", + "check_gpg": true + }, + { + "name": "langpacks-en", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/langpacks-en-3.0-3.fc32.noarch.rpm", + "checksum": "sha256:0437d6e21c624d7319d8b2017c9bb907f88b6e89ac39123b2ab97cb8c7e61aca", + "check_gpg": true + }, + { + "name": "less", + "epoch": 0, + "version": "551", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/less-551-3.fc32.x86_64.rpm", + "checksum": "sha256:2b783576612dcf10ab151fee03084f8ae1667c044a9e2e9404a2a139e7c6c884", + "check_gpg": true + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libacl-2.2.53-5.fc32.x86_64.rpm", + "checksum": "sha256:f826f984b23d0701a1b72de5882b9c0e7bae87ef49d9edfea156654f489f8b2b", + "check_gpg": true + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.4.2", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libarchive-3.4.2-1.fc32.x86_64.rpm", + "checksum": "sha256:88f4bd19a6cf6eba5e6f2b5bba80819b5ccddb0476aadc53c8df13f9c45b1e58", + "check_gpg": true + }, + { + "name": "libargon2", + "epoch": 0, + "version": "20171227", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libargon2-20171227-4.fc32.x86_64.rpm", + "checksum": "sha256:7d9bd2fe016ca8860e8fab4a430b3aae4c7b7bea55f8ccd7775ad470172e2886", + "check_gpg": true + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libassuan-2.5.3-3.fc32.x86_64.rpm", + "checksum": "sha256:598a136b7027cb9b4fef6bfa34715979d41c2f62c9d8bec5d50b633a17790f7b", + "check_gpg": true + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libattr-2.4.48-8.fc32.x86_64.rpm", + "checksum": "sha256:65e0cfe367ae4d54cf8bf509cb05e063c9eb6f2fea8dadcf746cdd85adc31d88", + "check_gpg": true + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbasicobjects-0.1.1-44.fc32.x86_64.rpm", + "checksum": "sha256:26cca773f1f258105f0f825a8e0faebcaa183655b5d91cd972afbe791b586478", + "check_gpg": true + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libblkid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:1830b4aa42ef492c13b62f63fe941970869ba19bd9abde4dea5c97f9e38ffd68", + "check_gpg": true + }, + { + "name": "libbrotli", + "epoch": 0, + "version": "1.0.7", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libbrotli-1.0.7-10.fc32.x86_64.rpm", + "checksum": "sha256:ac8b1fea0b678d7630033a8900be5641b934306961b39a29c79c6d72f34f7d1c", + "check_gpg": true + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-2.26-7.fc32.x86_64.rpm", + "checksum": "sha256:1bc0542cf8a3746d0fe25c397a93c8206963f1f287246c6fb864eedfc9ffa4a7", + "check_gpg": true + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.10", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcap-ng-0.7.10-2.fc32.x86_64.rpm", + "checksum": "sha256:b60670fdcf91b50d97720f601d92277efedbd690bd887000ccd9a46b3fa8b314", + "check_gpg": true + }, + { + "name": "libcbor", + "epoch": 0, + "version": "0.5.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcbor-0.5.0-7.fc32.x86_64.rpm", + "checksum": "sha256:b13eed593b31a9cc0174774b97701c7da876f91ccdfc951b67a3134d59ccd8b5", + "check_gpg": true + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcollection-0.7.0-44.fc32.x86_64.rpm", + "checksum": "sha256:9d4691918d7add910e8c03d61cccda0316b62d77b30ac2e502cf2e55289d1823", + "check_gpg": true + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcom_err-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:4494013eac1ad337673f084242aa8ebffb4a149243475b448bee9266401f2896", + "check_gpg": true + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:e9a3ace2c71c2388ed6402e92ba148acb8d19b5c3495a47148b9e88cc6d6d1eb", + "check_gpg": true + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.13", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcroco-0.6.13-3.fc32.x86_64.rpm", + "checksum": "sha256:63400fedea4a6ddb8fced58d33e60560791f29cd439169998f337d09fb50a7d4", + "check_gpg": true + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.69.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libcurl-7.69.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7dfe1e8dac6d759479ae3dfd415fdd2662bbed9ff0f4da6093279efd1bacae31", + "check_gpg": true + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:688fcc0b7ef3c48cf7d602eefd7fefae7bcad4f0dc71c9fe9432c2ce5bbd9daa", + "check_gpg": true + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "40.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdb-utils-5.3.28-40.fc32.x86_64.rpm", + "checksum": "sha256:431d836b2be015212d8c15b4290d5ce5bb45282cbf3fc52696f632d84ce34dfe", + "check_gpg": true + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdhash-0.5.0-44.fc32.x86_64.rpm", + "checksum": "sha256:ca540fb7088948fdfe6e6b52a5e2b6a74d2d17136857da9f3f4a1ee29c8eb74b", + "check_gpg": true + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:fa08dccd7a2e38dfbab999613bdb41df2034b506d21964d0ef368af6e56c4cf9", + "check_gpg": true + }, + { + "name": "libdrm", + "epoch": 0, + "version": "2.4.100", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libdrm-2.4.100-2.fc32.x86_64.rpm", + "checksum": "sha256:f49739e27706d71a5dc75a5bfdf6c31fc67f6cb0cc1f38afe4eafb6e6ae1e4e9", + "check_gpg": true + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "32.20191231cvs.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libedit-3.1-32.20191231cvs.fc32.x86_64.rpm", + "checksum": "sha256:9a12db30090023c60e3d7bcd5b07142cdc6d84c77e25ddb1cf41a4c490e52f09", + "check_gpg": true + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libevent-2.1.8-8.fc32.x86_64.rpm", + "checksum": "sha256:7bf42ff57ce2a31db0da7d6c5926552f4e51e9f25cded77bd634eb5cd35eadab", + "check_gpg": true + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfdisk-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:942d06ec1f7033ea4c729b84ee09f5491481770efe10151ba581479ac7f3f9dc", + "check_gpg": true + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libffi-3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:86c87a4169bdf75c6d3a2f11d3a7e20b6364b2db97c74bc7eb62b1b22bc54401", + "check_gpg": true + }, + { + "name": "libfido2", + "epoch": 0, + "version": "1.3.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libfido2-1.3.1-1.fc32.x86_64.rpm", + "checksum": "sha256:ebbace15f986288bba7681f44a111b14bcc7cae00b7a1faadaa838bd51897357", + "check_gpg": true + }, + { + "name": "libgcc", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcc-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:48cf5ab32f6af8f2283d4d4834e8dd262aa412be7ea07c2292483e150d614bef", + "check_gpg": true + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgcrypt-1.8.5-3.fc32.x86_64.rpm", + "checksum": "sha256:5f0ae954b5955c86623e68cd81ccf8505a89f260003b8a3be6a93bd76f18452c", + "check_gpg": true + }, + { + "name": "libgomp", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgomp-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:d65b4bb6fa49198237f9b704ec471d71dfd94b87290f4d03c1c34d12f6efeb95", + "check_gpg": true + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.36", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libgpg-error-1.36-3.fc32.x86_64.rpm", + "checksum": "sha256:9bd5cb588664e8427bc8bebde0cdf5e14315916624ab6b1979dde60f6eae4278", + "check_gpg": true + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libidn2-2.3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:20787251df57a108bbf9c40e30f041b71ac36c8a10900fb699e574ee7e259bf2", + "check_gpg": true + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libini_config-1.3.1-44.fc32.x86_64.rpm", + "checksum": "sha256:fed6244fce0c0b48933d622dfbb00cf73931b2f746b27675a025a33b591d9820", + "check_gpg": true + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:8677b34fa73f258b1a599d18419f6fbbb8961bb1ca2ae5b0f9abdcc4f93b319e", + "check_gpg": true + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libkcapi-hmaccalc-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:5d5c8c7e9c78e3b8827ad38771efb44951d1c3c1692cf4e07b138c1c8c42bd5b", + "check_gpg": true + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libksba-1.3.5-11.fc32.x86_64.rpm", + "checksum": "sha256:1b05dd5abad5a31380c859bc33e7851158c24333fda837ca9facf869005f81fe", + "check_gpg": true + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.1.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libldb-2.1.1-1.fc32.x86_64.rpm", + "checksum": "sha256:cd16f6ef433d7dc6860b19f3d77b666a03d35361aba78ee09d772575c2f69cc0", + "check_gpg": true + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.3.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmaxminddb-1.3.2-2.fc32.x86_64.rpm", + "checksum": "sha256:60589342d58922ba061ac8df7d753a7e7e75162c97ab086739e9d33fbf289091", + "check_gpg": true + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmetalink-0.1.3-10.fc32.x86_64.rpm", + "checksum": "sha256:6eb95e39b9771c4dde5f9954a74cef6be90522c28c7c4aa767ebe7a9d55fcdf9", + "check_gpg": true + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmnl-1.0.4-11.fc32.x86_64.rpm", + "checksum": "sha256:1c68255945533ed4e3368125bc46e19f3fe348d7ec507a85a35038dbb976003f", + "check_gpg": true + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmodulemd-2.9.1-1.fc32.x86_64.rpm", + "checksum": "sha256:f98f854a86c68b534f71e1f35852fabddbe2cbfe481b01bb15291b3363013b2a", + "check_gpg": true + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmount-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:e740cc0a580639b887bda0039a779e750a32835be1fd8c64aa01183b4cbb98bf", + "check_gpg": true + }, + { + "name": "libmspack", + "epoch": 0, + "version": "0.10.1", + "release": "0.3.alpha.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libmspack-0.10.1-0.3.alpha.fc32.x86_64.rpm", + "checksum": "sha256:2441e2b95e4df708b81a86005aff154f4d3ac54c8bad5b4cd6770d7fb48ac341", + "check_gpg": true + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libndp-1.7-5.fc32.x86_64.rpm", + "checksum": "sha256:4f4ef59861c0566d22bd76369d22369d43130f5ccdb35a5fc2c8a236cf33651f", + "check_gpg": true + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.7", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnetfilter_conntrack-1.0.7-4.fc32.x86_64.rpm", + "checksum": "sha256:884357540f4be2a74e608e2c7a31f2371ee3b4d29be2fe39a371c0b131d84aa6", + "check_gpg": true + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "17.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfnetlink-1.0.1-17.fc32.x86_64.rpm", + "checksum": "sha256:ec6abd65541b5bded814de19c9d064e6c21e3d8b424dba7cb25b2fdc52d45a2b", + "check_gpg": true + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.4.3", + "release": "0.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnfsidmap-2.4.3-0.fc32.x86_64.rpm", + "checksum": "sha256:bb154a90c968150172036d86f0c9fc2a24b5799718bc4d835cb10d0758890c67", + "check_gpg": true + }, + { + "name": "libnftnl", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnftnl-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:3afab9512fd4d56a13c95b530c805ac8b2bc872572ec5bb435eccdd59fbbc8b6", + "check_gpg": true + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.40.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnghttp2-1.40.0-2.fc32.x86_64.rpm", + "checksum": "sha256:a8ce7406c87f64972f0b70f1823c2aad05516c71fe375c6c97737459c2448825", + "check_gpg": true + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnl3-3.5.0-2.fc32.x86_64.rpm", + "checksum": "sha256:8dfdbe51193bdcfc3db41b5b9f317f009bfab6373e6ed3c5475466b8772a85e1", + "check_gpg": true + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "6.20180605git4a062cf.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64.rpm", + "checksum": "sha256:3b4ce7fc4e2778758881feedf6ea19b65e99aa3672e19a7dd62977efe3b910b9", + "check_gpg": true + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpath_utils-0.2.1-44.fc32.x86_64.rpm", + "checksum": "sha256:ce1a80b0ba6f09a7e5a188436088dd31d10c5f7b43dbe9c1788f705127c8e6b2", + "check_gpg": true + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpcap-1.9.1-3.fc32.x86_64.rpm", + "checksum": "sha256:b3230630a471b806a9153669d187508350cdb2b368a68f8c439c82abad038c3f", + "check_gpg": true + }, + { + "name": "libpciaccess", + "epoch": 0, + "version": "0.16", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpciaccess-0.16-2.fc32.x86_64.rpm", + "checksum": "sha256:4630ea4b3e4c439f2d3bc4cf33e71388e65cd5394338c86fa1074c6f7fa0d801", + "check_gpg": true + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpipeline-1.5.2-2.fc32.x86_64.rpm", + "checksum": "sha256:c0a0c6f3e30c20815496be8de00f9596737e2693feb85f7484f200ffa9174530", + "check_gpg": true + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.21.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpsl-0.21.0-4.fc32.x86_64.rpm", + "checksum": "sha256:ce8c1f1ce3cb2cc0166dcaad17f35e84278ec39ea9bf232e24130d3ff3271923", + "check_gpg": true + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libpwquality-1.4.2-2.fc32.x86_64.rpm", + "checksum": "sha256:9ecc8aa9af05ba704cec879618afeda5ff92d8233811e2d6080aa02e0b5ceddf", + "check_gpg": true + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "44.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libref_array-0.1.5-44.fc32.x86_64.rpm", + "checksum": "sha256:6fc1181ed798617668f195579acfcf8fb212513a776f376eecfb3d086c66b2d9", + "check_gpg": true + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.11.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/librepo-1.11.1-4.fc32.x86_64.rpm", + "checksum": "sha256:aa783a91b1823b7b056575e6276df35910eb2e0d4b72121cf5649651c7d23a16", + "check_gpg": true + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.12.0", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libreport-filesystem-2.12.0-3.fc32.noarch.rpm", + "checksum": "sha256:3d33c29bcc4a39be16d6647a70a0d7ae2f08baf26dcea5c802289df1128d5f21", + "check_gpg": true + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libseccomp-2.4.2-3.fc32.x86_64.rpm", + "checksum": "sha256:df0a39eb6b91c4a8f481c22445cbbd88334bf5e0a6e1dd5fb240981eb031c4eb", + "check_gpg": true + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.20.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsecret-0.20.2-2.fc32.x86_64.rpm", + "checksum": "sha256:251fd875421da4708b76c15c7f5ba478d50b74d7e4242071a621625eac51a767", + "check_gpg": true + }, + { + "name": "libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:0e59b422e35eee975ba68e6e4de022c8f145feec7e169e86e0244d2fdad2f590", + "check_gpg": true + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libselinux-utils-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:1446032720fb8e0090190828fcea294a86fc7f83edd70f6089e3446770ba0438", + "check_gpg": true + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsemanage-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:54cb827278ae474cbab1f05e0fbee0355bee2674d46a804f1c2b78ff80a48caa", + "check_gpg": true + }, + { + "name": "libsepol", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsepol-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:29e2b62e9e63f25139a6863c863c3b534660440d7dec0c985807302a6895dbaf", + "check_gpg": true + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "10.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsigsegv-2.11-10.fc32.x86_64.rpm", + "checksum": "sha256:942707884401498938fba6e2439dc923d4e2d81f4bac205f4e73d458e9879927", + "check_gpg": true + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsmartcols-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:ddad78d00b09c6c85d46c06dcba4c951f7f7dfc9b2dab195bf45aa3f5a1fdc41", + "check_gpg": true + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsolv-0.7.11-2.fc32.x86_64.rpm", + "checksum": "sha256:be899d3e806441b1c46811c0ffe9f4e01f4ea4e1544f9cc32630254853e3f3a5", + "check_gpg": true + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libss-1.45.5-3.fc32.x86_64.rpm", + "checksum": "sha256:27701cda24f5f6386e0173745aabc4f6df28052975e73529854432c35399cfc8", + "check_gpg": true + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-0.9.3-2.fc32.x86_64.rpm", + "checksum": "sha256:32f8cbb3be91f589d569a2e737130f29c752f78eebc61e287af17f207e1b8c58", + "check_gpg": true + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.3", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libssh-config-0.9.3-2.fc32.noarch.rpm", + "checksum": "sha256:49bac21d5cdf863fccfcc32bf070e582d204706e35ee9f60b3e69df694bff87d", + "check_gpg": true + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_autofs-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:695ef8ae55ed6a165a3633b3c0d75b320879246386e6df4539be9286f5176cc5", + "check_gpg": true + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_certmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:f391fe0e21e51e7c864f8bce1b5825419f4096023b5b90b3976bbd69d6a4d720", + "check_gpg": true + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_idmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:599549d72d26b48c45156585a5698898c853e56469142e202d3749b781428465", + "check_gpg": true + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_nss_idmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:66bb5b2e99d2c74b82943fe61fe9b9a3674350b0242f69a6854ec9718dcf5e07", + "check_gpg": true + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libsss_sudo-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:af66820023c984d8b981ecac715d0c2daec1f89dcb69bed76ddf58b0ee80c1b1", + "check_gpg": true + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "10.0.1", + "release": "0.11.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libstdc++-10.0.1-0.11.fc32.x86_64.rpm", + "checksum": "sha256:be998dfbcc9ca8e3021ac4f56ed723cfa3fa1517524e89ee0b636f623abe995f", + "check_gpg": true + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtalloc-2.3.1-2.fc32.x86_64.rpm", + "checksum": "sha256:16702883a79532a400d7304146cdb47b0599983b9fb48ab918ef9fa1ce0be394", + "check_gpg": true + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.16.0", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtasn1-4.16.0-1.fc32.x86_64.rpm", + "checksum": "sha256:052d04c9a6697c6e5aa546546ae5058d547fc4a4f474d2805a3e45dbf69193c6", + "check_gpg": true + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtdb-1.4.3-2.fc32.x86_64.rpm", + "checksum": "sha256:36778f8a4fa111c4f796bbea8fd52f7b9708de8f4351070faa30bc985db59885", + "check_gpg": true + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtevent-0.10.2-2.fc32.x86_64.rpm", + "checksum": "sha256:dab54013f8316b766c40c71f9c0c2124c1f0c219b417d588b5ba1dccf7d63fd7", + "check_gpg": true + }, + { + "name": "libtextstyle", + "epoch": 0, + "version": "0.20.1", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtextstyle-0.20.1-4.fc32.x86_64.rpm", + "checksum": "sha256:b35256e417fd94c7efb1212f2f36b5e6b224ff5b9e8733774d4fbdc652078099", + "check_gpg": true + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.2.5", + "release": "1.rc2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtirpc-1.2.5-1.rc2.fc32.x86_64.rpm", + "checksum": "sha256:c1d754773972b5f4ca157c0afa45d6767901d965a91f381660c72740d682df63", + "check_gpg": true + }, + { + "name": "libtool-ltdl", + "epoch": 0, + "version": "2.4.6", + "release": "33.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libtool-ltdl-2.4.6-33.fc32.x86_64.rpm", + "checksum": "sha256:1bbc57adf40ac80fd55112fe79e5020fdf92e81019eef4929de171bd50faeaf4", + "check_gpg": true + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.10", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libunistring-0.9.10-7.fc32.x86_64.rpm", + "checksum": "sha256:fb06aa3d8059406a23694ddafe0ef340ca627dd68bf3f351f094de58ef30fb2c", + "check_gpg": true + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libusbx-1.0.23-1.fc32.x86_64.rpm", + "checksum": "sha256:729fb595040f1e2e71ff0a8c1c22ebe4b7187f78b816af8e6a8d93c03fc5d844", + "check_gpg": true + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuser-0.62-24.fc32.x86_64.rpm", + "checksum": "sha256:b58828b2f1ce4f7778d3f511c61ee8925042b9752aea526c23d33fd7533aa975", + "check_gpg": true + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "18.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libutempter-1.1.6-18.fc32.x86_64.rpm", + "checksum": "sha256:f9ccea65ecf98f4dfac65d25986d08efa62a1d1c0db9db0a061e7408d6805a1a", + "check_gpg": true + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libuuid-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:8402d3aabfc02c16f3789f3f93338dbee2448db8a49956002b83aff5390922d9", + "check_gpg": true + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libverto-0.3.0-9.fc32.x86_64.rpm", + "checksum": "sha256:ed84414c9b2190d3026f58db78dffd8bc3a9ad40311cb0adb8ff8e3c7c06ca60", + "check_gpg": true + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:7c1a229f4a36ac8b077e0514f68f311229652121528b0f8a2a7434c618276dcb", + "check_gpg": true + }, + { + "name": "libxcrypt-compat", + "epoch": 0, + "version": "4.4.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxcrypt-compat-4.4.16-1.fc32.x86_64.rpm", + "checksum": "sha256:cb4fb9b3733440ea15b3309c88d9471c4165aa7b71b4dbc5d0fb5bfcd97b2f2e", + "check_gpg": true + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.10.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxkbcommon-0.10.0-2.fc32.x86_64.rpm", + "checksum": "sha256:ae219ad5ecc0233271c3fd61263f817c646eecece19a8f075e7aa4dd9ff8698e", + "check_gpg": true + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.10", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxml2-2.9.10-3.fc32.x86_64.rpm", + "checksum": "sha256:a7f040de29d2414cc99fcffcd9ed3fa9d06ecc7aecd783ec3d2eef769e2389f1", + "check_gpg": true + }, + { + "name": "libxslt", + "epoch": 0, + "version": "1.1.34", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libxslt-1.1.34-1.fc32.x86_64.rpm", + "checksum": "sha256:2a43575b51ec218905692cd4ca445c13fe60fae58e42906bc2838c75c006c418", + "check_gpg": true + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.2.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libyaml-0.2.2-3.fc32.x86_64.rpm", + "checksum": "sha256:9c8a274158a6fe97598e33900cd51e171f7e7517ccfc8ad6351873e69b225986", + "check_gpg": true + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/libzstd-1.4.4-2.fc32.x86_64.rpm", + "checksum": "sha256:9465f2f1103697207a52d15edd716ab72dc6c281823c60f424cd064d706c7a51", + "check_gpg": true + }, + { + "name": "linux-atm-libs", + "epoch": 0, + "version": "2.5.1", + "release": "26.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-atm-libs-2.5.1-26.fc32.x86_64.rpm", + "checksum": "sha256:c9ba05cb46a9cb52e3325ca20c457a377361abcd0e5a7dda776ba19481770467", + "check_gpg": true + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20200316", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-20200316-106.fc32.noarch.rpm", + "checksum": "sha256:5b8a205f3d4bde162e01a821fdacbc10ebfa01b88ec61b166b4b6317c45910c4", + "check_gpg": true + }, + { + "name": "linux-firmware-whence", + "epoch": 0, + "version": "20200316", + "release": "106.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/linux-firmware-whence-20200316-106.fc32.noarch.rpm", + "checksum": "sha256:15f70393f706ea0ac6c622563268d9c00509ef376e3e087c1c05007b49894ee9", + "check_gpg": true + }, + { + "name": "lmdb-libs", + "epoch": 0, + "version": "0.9.24", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lmdb-libs-0.9.24-1.fc32.x86_64.rpm", + "checksum": "sha256:25ae9056f75df4efff0d17d916e7c3889c421368613acec7f1c4119bd17eac13", + "check_gpg": true + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.5", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lua-libs-5.3.5-7.fc32.x86_64.rpm", + "checksum": "sha256:10883ce95852cc9ae9b4e0d435b100a25f8fe5c0ea4677eb4a0b39f4f8def886", + "check_gpg": true + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.9.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/l/lz4-libs-1.9.1-2.fc32.x86_64.rpm", + "checksum": "sha256:44cfb58b368fba586981aa838a7f3974ac1d66d2b3b695f88d7b1d2e9c81a0b6", + "check_gpg": true + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.9.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/man-db-2.9.0-2.fc32.x86_64.rpm", + "checksum": "sha256:ca80c458fab5bdde0276702f06217d1219085428560af6039aa1c5cf1e58ff3b", + "check_gpg": true + }, + { + "name": "mkpasswd", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mkpasswd-5.5.6-1.fc32.x86_64.rpm", + "checksum": "sha256:640afe5b9d499c9a7efc1d23cce8c54e3e3704d92eb7e7a93a048f97d1e983e1", + "check_gpg": true + }, + { + "name": "mpfr", + "epoch": 0, + "version": "4.0.2", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/m/mpfr-4.0.2-3.fc32.x86_64.rpm", + "checksum": "sha256:2b098bc6f8004270ee9eac9f63980b364b5fe19394dc73a230b3c846cf488b1b", + "check_gpg": true + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:b2e862283ac97b1d8b1ede2034ead452ac7dc4ff308593306275b1b0ae5b4102", + "check_gpg": true + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-base-6.1-15.20191109.fc32.noarch.rpm", + "checksum": "sha256:25fc5d288536e1973436da38357690575ed58e03e17ca48d2b3840364f830659", + "check_gpg": true + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "15.20191109.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/ncurses-libs-6.1-15.20191109.fc32.x86_64.rpm", + "checksum": "sha256:04152a3a608d022a58830c0e3dac0818e2c060469b0f41d8d731f659981a4464", + "check_gpg": true + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.5.1", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nettle-3.5.1-5.fc32.x86_64.rpm", + "checksum": "sha256:c019d23ed2cb3ceb0ac9757a72c3e8b1d31f2a524b889e18049cc7d923bc9466", + "check_gpg": true + }, + { + "name": "nftables", + "epoch": 1, + "version": "0.9.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/nftables-0.9.3-2.fc32.x86_64.rpm", + "checksum": "sha256:0b7d24759aac33303ff4b101c111dea03ff2529efc95661140e22f629cc1ab7a", + "check_gpg": true + }, + { + "name": "npth", + "epoch": 0, + "version": "1.6", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/n/npth-1.6-4.fc32.x86_64.rpm", + "checksum": "sha256:3c2a641f118ab2e8b08df6dd2da72a60121d02df8d932b4afa2920eb80392875", + "check_gpg": true + }, + { + "name": "open-vm-tools", + "epoch": 0, + "version": "11.0.5", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/open-vm-tools-11.0.5-3.fc32.x86_64.rpm", + "checksum": "sha256:2f2480b184cf545765950db803333343b9b0f38e25eeb5c8285ac69feeaa9ef4", + "check_gpg": true + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.47", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openldap-2.4.47-4.fc32.x86_64.rpm", + "checksum": "sha256:ade8105796f5c1201a3efc8bcc654788cfc88c3815297b346845062a8c29cd59", + "check_gpg": true + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-8.2p1-2.fc32.x86_64.rpm", + "checksum": "sha256:0d51c1319ee78978e6ea5a49b815c2078b4ffd4d575e98c70e54ca01c3390eb8", + "check_gpg": true + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-clients-8.2p1-2.fc32.x86_64.rpm", + "checksum": "sha256:8b148415fb6a583ef131d0ddff44f3209c30d0299fde7b20cd3ea385590927c1", + "check_gpg": true + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.2p1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssh-server-8.2p1-2.fc32.x86_64.rpm", + "checksum": "sha256:d1e244b8b5ce7404846e97d96c762c8c18ff6447301f6fc63f50e615029aa7cd", + "check_gpg": true + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:d7b8b5815b72fb157de26579362383e357e026ae6ac2599c451fb336fe995555", + "check_gpg": true + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1d", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-libs-1.1.1d-7.fc32.x86_64.rpm", + "checksum": "sha256:ad6d7d9767e05978b14a39c08dba59ddc4396584576df194f77ed310a0816ae0", + "check_gpg": true + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/openssl-pkcs11-0.4.10-5.fc32.x86_64.rpm", + "checksum": "sha256:3f2cb9092d6f55f84dd9eacd5359dfb354772e5f38308328027c7758f4a06fb6", + "check_gpg": true + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.77", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/o/os-prober-1.77-4.fc32.x86_64.rpm", + "checksum": "sha256:45fc2608b746fd841dd25919e9e4d44834154758aec8fb8b529c014b11c7917d", + "check_gpg": true + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:dedd37a96262c35763ab2dcbc19838f5cc39a2a3a392a650a80bd6d5ae42ff8b", + "check_gpg": true + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.20", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/p11-kit-trust-0.23.20-1.fc32.x86_64.rpm", + "checksum": "sha256:3589b982ac0c2f5f6b47cde5cb7ec33c2c01d756dabf8c4ca64f6d9d0d78b35e", + "check_gpg": true + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "24.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pam-1.3.1-24.fc32.x86_64.rpm", + "checksum": "sha256:4c80ade4ac0889316930a8d181ea43fa2d1b2f1a6a5703c22f2b3ba191346eec", + "check_gpg": true + }, + { + "name": "parted", + "epoch": 0, + "version": "3.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/parted-3.3-3.fc32.x86_64.rpm", + "checksum": "sha256:4b9da0cedada16eb80a2d66b86aa62c9b026501e13a3e947a5a03a06f41d9dbb", + "check_gpg": true + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "8.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/passwd-0.80-8.fc32.x86_64.rpm", + "checksum": "sha256:156709efeaa1dfac72cc189d7e99de12d7c4b2069445da5d34fa807582e85719", + "check_gpg": true + }, + { + "name": "pciutils", + "epoch": 0, + "version": "3.6.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pciutils-3.6.4-1.fc32.x86_64.rpm", + "checksum": "sha256:444f18dc1d8f6d0a4ff8ca9816e21e8faaeb4c31ac7997774a9454d4d336c21b", + "check_gpg": true + }, + { + "name": "pciutils-libs", + "epoch": 0, + "version": "3.6.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pciutils-libs-3.6.4-1.fc32.x86_64.rpm", + "checksum": "sha256:e5efc87172d7081559137feaa221047385a5e248ffafd9794c2bfc73b61f8f37", + "check_gpg": true + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.44", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre-8.44-1.fc32.x86_64.rpm", + "checksum": "sha256:933bdb4cc6e14b2ebb1ca76c14ca176c13d271a2d1e88632f237392777d11808", + "check_gpg": true + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-10.34-9.fc32.x86_64.rpm", + "checksum": "sha256:6794fe48004c0403c29fc779b49f0fbea436123b96783a2df225eef2f0858795", + "check_gpg": true + }, + { + "name": "pcre2-syntax", + "epoch": 0, + "version": "10.34", + "release": "9.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pcre2-syntax-10.34-9.fc32.noarch.rpm", + "checksum": "sha256:5db7c0e949bd9172b9645237e72f6139d4ffcf14defad487262b8ad25b427daf", + "check_gpg": true + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pigz-2.4-6.fc32.x86_64.rpm", + "checksum": "sha256:15f08ce979e48fd25be5e16d63d1c95c57f9abff7704005137ea00b958442939", + "check_gpg": true + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/pinentry-1.1.0-7.fc32.x86_64.rpm", + "checksum": "sha256:7df4fa1a29772696d92866e890af6fbe006088f3407ed3e67b0e7867ef58d899", + "check_gpg": true + }, + { + "name": "plymouth", + "epoch": 0, + "version": "0.9.4", + "release": "14.20200325gite31c81f.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/plymouth-0.9.4-14.20200325gite31c81f.fc32.x86_64.rpm", + "checksum": "sha256:5cd4b781742b64dfff3cb3840ed5bb76f6946fb63f4ab742a51c3505747271a1", + "check_gpg": true + }, + { + "name": "plymouth-core-libs", + "epoch": 0, + "version": "0.9.4", + "release": "14.20200325gite31c81f.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/plymouth-core-libs-0.9.4-14.20200325gite31c81f.fc32.x86_64.rpm", + "checksum": "sha256:dc5a84049a6fc1f7c2a709ab3c2fa53de65e864f26085f5ca69864f5c2f6955d", + "check_gpg": true + }, + { + "name": "plymouth-scripts", + "epoch": 0, + "version": "0.9.4", + "release": "14.20200325gite31c81f.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/plymouth-scripts-0.9.4-14.20200325gite31c81f.fc32.x86_64.rpm", + "checksum": "sha256:d36f08a44d6a3bc95f995c858ecb5e0d7fb22a8236008267024dd6a0ff66cc85", + "check_gpg": true + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "3.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/policycoreutils-3.0-2.fc32.x86_64.rpm", + "checksum": "sha256:8df97dcfb42c1667b5d2e4150012eaf96f58eeac4f7b879e0928c8c36e3a7604", + "check_gpg": true + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.116", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/polkit-libs-0.116-7.fc32.x86_64.rpm", + "checksum": "sha256:d439ffbe20c8c0e8244e31c0324d60cf959dc1cd6cecc575d7b34509a73e9386", + "check_gpg": true + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/popt-1.16-19.fc32.x86_64.rpm", + "checksum": "sha256:8a0c00a69f9cb3a9ffacaf1cdc162c38a1faca76c9b976cb177bdc988902f2d4", + "check_gpg": true + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/procps-ng-3.3.15-7.fc32.x86_64.rpm", + "checksum": "sha256:f3908831ae53f43b07a4e196850d0e59cc89b50c97d838538c3185fd0eb0d569", + "check_gpg": true + }, + { + "name": "psmisc", + "epoch": 0, + "version": "23.3", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/psmisc-23.3-3.fc32.x86_64.rpm", + "checksum": "sha256:be7ba234b6c48717ac0f69fb5868b3caa6ef09fbfc76c42a47b367578cd19444", + "check_gpg": true + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20190417", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/publicsuffix-list-dafsa-20190417-3.fc32.noarch.rpm", + "checksum": "sha256:af992ad02594b68f17d2da41104a26aee41d02639edf22332d7dbb1fe9af58a5", + "check_gpg": true + }, + { + "name": "python-pip-wheel", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-pip-wheel-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:a7da5590635b9c19afafc7dd247604194a5ce7d8d863dc600b8cb86accb2e469", + "check_gpg": true + }, + { + "name": "python-setuptools-wheel", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-setuptools-wheel-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:7dd93baaf69a8004ae2cd3b9e6660b862d0b6f399d53c05a27a48a2e276ef1ee", + "check_gpg": true + }, + { + "name": "python-unversioned-command", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python-unversioned-command-3.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:0b290954bc2868b3dfc976b2b7a13ea8aeade76eeafc17674ff8e721049a5bf7", + "check_gpg": true + }, + { + "name": "python3", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:b79bb6af3e1650ba812c8affe42772ea566b164222a7d4d8e2f7efa867dc6849", + "check_gpg": true + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.8.0", + "release": "8.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dateutil-2.8.0-8.fc32.noarch.rpm", + "checksum": "sha256:d920a4a3b319b6c1af9471b33e1474a8d0a866e0ca7e38711eb1e691265e6862", + "check_gpg": true + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.16", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dbus-1.2.16-1.fc32.x86_64.rpm", + "checksum": "sha256:6aa0c6420a03f20e18842da9de611d823580efb8f6da93a94dafb48d59c2a070", + "check_gpg": true + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.4.0", + "release": "6.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-decorator-4.4.0-6.fc32.noarch.rpm", + "checksum": "sha256:129adf9147d5d120546ca8e0fb5f165761106d386d366fe82591e372754d0b4a", + "check_gpg": true + }, + { + "name": "python3-distro", + "epoch": 0, + "version": "1.4.0", + "release": "5.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-distro-1.4.0-5.fc32.noarch.rpm", + "checksum": "sha256:93436ea4755be74d7be2c2749a2a10ac5cae16d62343da5ce993348678e691f4", + "check_gpg": true + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:632aedc06003e319a1c3fa98876055fc3bd3b44c1188b44d3b7a455cef0d40e4", + "check_gpg": true + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.14", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-dnf-plugins-core-4.0.14-1.fc32.noarch.rpm", + "checksum": "sha256:5903e12edb43ea38ffe05e48f05225f1e2439779f4211285f52e8df36534d576", + "check_gpg": true + }, + { + "name": "python3-firewall", + "epoch": 0, + "version": "0.8.2", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-firewall-0.8.2-2.fc32.noarch.rpm", + "checksum": "sha256:8ee8c4bbf024b998ffb77a6b4194a2306ac21c5a6fcf70c8c81a0fbf38f7c7fc", + "check_gpg": true + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.36.0", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gobject-base-3.36.0-2.fc32.x86_64.rpm", + "checksum": "sha256:34411604a91c301dc8489285065c68f3a2f50910717097fedcaade6481c7469e", + "check_gpg": true + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "6.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-gpg-1.13.1-6.fc32.x86_64.rpm", + "checksum": "sha256:9de8eb13fbdf8b8c5c3e04c52a890ccc5b667351ff17152786d12ffc66210433", + "check_gpg": true + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-hawkey-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:6a2f4706a37bc5ad229f6fdddbd70fbcf82da85ec577a8deeb455513cbedc174", + "check_gpg": true + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.14", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libcomps-0.1.14-4.fc32.x86_64.rpm", + "checksum": "sha256:0d9d80adb91ccc8eed62bea68b23da5edb77675b1ec93227e2179d028449a2f7", + "check_gpg": true + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.45.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libdnf-0.45.0-3.fc32.x86_64.rpm", + "checksum": "sha256:44fabecae31a5900fe10837863ed231303f6863bd9fa5efa40a93a0fc059344f", + "check_gpg": true + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.8.2", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libs-3.8.2-2.fc32.x86_64.rpm", + "checksum": "sha256:ec58d03c60386bfb8aed2af3d2a49f8c6e5ccb4d3fd592cf75fef3342be137c3", + "check_gpg": true + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "3.0", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-libselinux-3.0-3.fc32.x86_64.rpm", + "checksum": "sha256:f77cad4c497f11c5b5bd7c9a29fc1f5f5574f8443cc4496e3bd98e680b363124", + "check_gpg": true + }, + { + "name": "python3-nftables", + "epoch": 1, + "version": "0.9.3", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-nftables-0.9.3-2.fc32.x86_64.rpm", + "checksum": "sha256:0fc0193d95d69c780b6feb1cb74759ca2d4804701b3de936dac8429cfbe0f2e9", + "check_gpg": true + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "19.3.1", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-pip-19.3.1-2.fc32.noarch.rpm", + "checksum": "sha256:9ade87dbb32f27e7f38ec981002ddc5a2189cc6f5ad5f24bada3b71cfa9167fd", + "check_gpg": true + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:355a095bb3c6d58f927277ff53267f88eb0729adbcafd8082b8d97e4815ee206", + "check_gpg": true + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "41.6.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-setuptools-41.6.0-2.fc32.noarch.rpm", + "checksum": "sha256:724cca9919bb7b0183b030aca216d4d51de70bf35c2cc5e8325a21a52ca15ceb", + "check_gpg": true + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.14.0", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-six-1.14.0-2.fc32.noarch.rpm", + "checksum": "sha256:02654432f3853c9ae39c7601b5b0606c9d5eb5eef1d95e3e6f0074501842941f", + "check_gpg": true + }, + { + "name": "python3-slip", + "epoch": 0, + "version": "0.6.4", + "release": "19.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-slip-0.6.4-19.fc32.noarch.rpm", + "checksum": "sha256:d2abba1a0523bd9df5073900593ab13ec2ed2e391440be4d883314fa154370f8", + "check_gpg": true + }, + { + "name": "python3-slip-dbus", + "epoch": 0, + "version": "0.6.4", + "release": "19.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-slip-dbus-0.6.4-19.fc32.noarch.rpm", + "checksum": "sha256:cb0c64cc81e0b384bbc9d27ffcb2a655b13c91a799aad8972264aed1767926a3", + "check_gpg": true + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/p/python3-unbound-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:517ff9662e5a1897b74f4ab4fbc8a88eccaad9880bc18be9cf4df6aba9824bd5", + "check_gpg": true + }, + { + "name": "qrencode-libs", + "epoch": 0, + "version": "4.0.2", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/q/qrencode-libs-4.0.2-5.fc32.x86_64.rpm", + "checksum": "sha256:f1150f9e17beaef09aca0f291e10db8c3ee5566fbf4c929b7672334410fa74e9", + "check_gpg": true + }, + { + "name": "readline", + "epoch": 0, + "version": "8.0", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/readline-8.0-4.fc32.x86_64.rpm", + "checksum": "sha256:f1c79039f4c6ba0fad88590c2cb55a96489449c334a671cc18c0bf424a4548b8", + "check_gpg": true + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "27.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rootfiles-8.1-27.fc32.noarch.rpm", + "checksum": "sha256:c9f3d536c1fa73de90836147d15db06dc2025e84a44034bda6c66b9c4b60be58", + "check_gpg": true + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:136a9cbae9c225be60718fdc8cc8988a55235d6502e451df77d1c5c765143850", + "check_gpg": true + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-build-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:3151132084577032b4c827eb577a1509950601888c6ff13a0a30b24252ee26d2", + "check_gpg": true + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:54b740cf7a75a7215168970378d9a1d6b9a5e4eb81159a874ce8ea5990436641", + "check_gpg": true + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:27dd9c78e41c04b5151a2b9ac150d3ebb89f2ca7a23e4896dfc718f19a000be3", + "check_gpg": true + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:e2a04f4de125ff60a3cdc3d2b3718a4530a9c9240c9cf14f55938444c229539f", + "check_gpg": true + }, + { + "name": "rpm-sign-libs", + "epoch": 0, + "version": "4.15.1", + "release": "2.fc32.1", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/r/rpm-sign-libs-4.15.1-2.fc32.1.x86_64.rpm", + "checksum": "sha256:630ad20496ff00f76764e01b9302ccbe94e3e91d76ececef88bd9e8a890b1ac3", + "check_gpg": true + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "5.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sed-4.5-5.fc32.x86_64.rpm", + "checksum": "sha256:ffe5076b9018efdb1612c487f637af39ab6c3c79ec37311978935cfa357ecd61", + "check_gpg": true + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:932a37ddd2a990a22a1ee7811d204552e8860e39a3e0c050ed618a535ae8c78c", + "check_gpg": true + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.5", + "release": "32.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/selinux-policy-targeted-3.14.5-32.fc32.noarch.rpm", + "checksum": "sha256:684aae86de55bd42215c136777613211f596788d3b6405d8fa645fb967904354", + "check_gpg": true + }, + { + "name": "setup", + "epoch": 0, + "version": "2.13.6", + "release": "2.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/setup-2.13.6-2.fc32.noarch.rpm", + "checksum": "sha256:a336d2e77255df4783f52762e44efcc8d77b044a3e39c7f577d5535212848280", + "check_gpg": true + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.8.1", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shadow-utils-4.8.1-2.fc32.x86_64.rpm", + "checksum": "sha256:4dd6100e477d88a4987b6eebfddecff168f38c7ff47cbb12f2fecba1e87c10d9", + "check_gpg": true + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.15", + "release": "3.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/shared-mime-info-1.15-3.fc32.x86_64.rpm", + "checksum": "sha256:a280c633b73517da167b91298fc97aeee2eb5fcc253c038ae0ce4b8478d3a103", + "check_gpg": true + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.31.1", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sqlite-libs-3.31.1-1.fc32.x86_64.rpm", + "checksum": "sha256:7f555c600b35ba798d8c0a63e30a1a12e917231730e1a44f48161ba0fe4b5973", + "check_gpg": true + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-client-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:699c1a3ff311bbaa2380c085fb4f516aa08be474bed02bcd1569d0bbf5b22d07", + "check_gpg": true + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-common-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:265dee550073120d51e4c94d3d039e5efdee73a0ae1b1faf2b92de0dad1f58fa", + "check_gpg": true + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-kcm-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:3ee53d0dba5bbfd3bbb2ae4b54e3ebdfa122e1cf120e17ff9c4c35674269e5ad", + "check_gpg": true + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.2.3", + "release": "13.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sssd-nfs-idmap-2.2.3-13.fc32.x86_64.rpm", + "checksum": "sha256:3c3fb1ca768ecd6ae7905a09cd85b9f67e9f08c46d18779520fb4b29476865c7", + "check_gpg": true + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.9.0", + "release": "0.1.b4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/sudo-1.9.0-0.1.b4.fc32.x86_64.rpm", + "checksum": "sha256:e5bf9266edf112540ec662bd492ce4bda3ed8d5e33d763b9f2318c42963a1d1b", + "check_gpg": true + }, + { + "name": "systemd", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:1de2be4fe5280ec3097305d9e671f5f2c768267f90d255edf2075eecb0c0afe9", + "check_gpg": true + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-libs-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:78db9007c08fa51f177210e47343b8e733ce0751826abb357ca96429836588db", + "check_gpg": true + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-pam-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:750da30da0289d5e2ad9ca297dda44e5ca18dbed0c3e0d4200379bc1818c22f3", + "check_gpg": true + }, + { + "name": "systemd-rpm-macros", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-rpm-macros-245.4-1.fc32.noarch.rpm", + "checksum": "sha256:97197411bca68cfba1ef6bab1fdd4b41c95ec71c36f1e67f525b963cf60598fd", + "check_gpg": true + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "245.4", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/s/systemd-udev-245.4-1.fc32.x86_64.rpm", + "checksum": "sha256:334d63914e7ff6fe8cfce0c8f80006c6cf2ab0615cd044a6ee588809395499e5", + "check_gpg": true + }, + { + "name": "tar", + "epoch": 2, + "version": "1.32", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tar-1.32-4.fc32.x86_64.rpm", + "checksum": "sha256:2cee64e12b295b74d2f4b008c7628ef3a01ef4149905fc4a7ae14b304da5f53b", + "check_gpg": true + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:5f156c2a950699d5cb9a21349cce049b3c8bfdcc4fcc780665fe2d3103f576c1", + "check_gpg": true + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.13", + "release": "13.fc31", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/trousers-lib-0.3.13-13.fc31.x86_64.rpm", + "checksum": "sha256:cc1be420582afb6360f380ff301c5e3d873f69fe1f7e00e4450bf2daa40ef9ff", + "check_gpg": true + }, + { + "name": "tss2", + "epoch": 0, + "version": "1331", + "release": "4.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tss2-1331-4.fc32.x86_64.rpm", + "checksum": "sha256:6f669ae6f70cfa80917adf4ae9d5e86fbd9d31ee308a9a3408a19be3afc46f7b", + "check_gpg": true + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "3.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/t/tzdata-2019c-3.fc32.noarch.rpm", + "checksum": "sha256:2db6d80760ab0e99f4e9c9816615e4f06b967bbb23a8c8c941b3f2d4b5f176c2", + "check_gpg": true + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.9.6", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/unbound-libs-1.9.6-2.fc32.x86_64.rpm", + "checksum": "sha256:29d7df69d66f51f6dddd637d3f599e70bdaa9bd476669002250bc038735a318c", + "check_gpg": true + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.35.1", + "release": "7.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/u/util-linux-2.35.1-7.fc32.x86_64.rpm", + "checksum": "sha256:9976e6228a10fa2761f1265a2a7666578d79ca57819837e5d1fbecc53324f1b9", + "check_gpg": true + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.2.525", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/v/vim-minimal-8.2.525-1.fc32.x86_64.rpm", + "checksum": "sha256:4fca21cfdcbed052e3e9e1eff74c22fb8ffb1fbbeb63e87e2aa540e43a8c0d09", + "check_gpg": true + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "19.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/which-2.21-19.fc32.x86_64.rpm", + "checksum": "sha256:82e0d8f1e0dccc6d18acd04b7806350343140d9c91da7a216f93167dcf650a61", + "check_gpg": true + }, + { + "name": "whois-nls", + "epoch": 0, + "version": "5.5.6", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/w/whois-nls-5.5.6-1.fc32.noarch.rpm", + "checksum": "sha256:d027a3ff0712e3e98d7d2358f8c526fb8d143b2386c353aadcc27199cffe125b", + "check_gpg": true + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.29", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xkeyboard-config-2.29-1.fc32.noarch.rpm", + "checksum": "sha256:ec12fef82d73314e3e4cb6e962f8de27e78989fa104dde0599a4480a53817647", + "check_gpg": true + }, + { + "name": "xmlsec1", + "epoch": 0, + "version": "1.2.29", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xmlsec1-1.2.29-1.fc32.x86_64.rpm", + "checksum": "sha256:4911b74bc1ec5d053ddef2c134e6fcf247ea89b06c7409c31314b4986933758c", + "check_gpg": true + }, + { + "name": "xmlsec1-openssl", + "epoch": 0, + "version": "1.2.29", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xmlsec1-openssl-1.2.29-1.fc32.x86_64.rpm", + "checksum": "sha256:8a8a34323af79ec2a2d87743dfe375ffc2bcdeb7be75637524c60df854ff7b42", + "check_gpg": true + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:1bdde5dc99a5588a8983f70b7b3e45e7006215d529c72adfec118c3bcbf7b01c", + "check_gpg": true + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.5", + "release": "1.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/x/xz-libs-5.2.5-1.fc32.x86_64.rpm", + "checksum": "sha256:84702d6395a9577c1a268184f123cfd4b15bc2287f01033625ba388a34ec2338", + "check_gpg": true + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.19", + "release": "1.fc32", + "arch": "noarch", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/y/yum-4.2.19-1.fc32.noarch.rpm", + "checksum": "sha256:b149e5c36e0327ca9c749b3ac0d3746ff9f9e0df68d6d177c3d13273273077cf", + "check_gpg": true + }, + { + "name": "zchunk-libs", + "epoch": 0, + "version": "1.1.5", + "release": "2.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zchunk-libs-1.1.5-2.fc32.x86_64.rpm", + "checksum": "sha256:140708561a2ec1c7709fd38d8b1b115d02da710b80eeecd65c2b8387d9d78ef9", + "check_gpg": true + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "21.fc32", + "arch": "x86_64", + "remote_location": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/Packages/z/zlib-1.2.11-21.fc32.x86_64.rpm", + "checksum": "sha256:c0fff40dc1092e18ed3e608bc6143c89a0d7775b9e0553319bb2caca7d324d80", + "check_gpg": true + } + ], + "checksums": { + "0": "sha256:c7f7c29a8ca90e226d2efee6d5856f2dea1d64ea758dfd114d75b4b20b56de1c" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac ro biosdevname=0 net.ifnames=0" + }, + "bootloader": "grub", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "initrd": "/boot/initramfs-5.6.6-300.fc32.x86_64.img", + "linux": "/boot/vmlinuz-5.6.6-300.fc32.x86_64", + "options": "$kernelopts", + "title": "Fedora (5.6.6-300.fc32.x86_64) 32 (Thirty Two)", + "version": "5.6.6-300.fc32.x86_64" + } + ], + "firewall-enabled": [ + "ssh", + "mdns", + "dhcpv6-client" + ], + "fstab": [ + [ + "UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac", + "/", + "ext4", + "defaults", + "1", + "1" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:993:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:997:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "redhat:x:1000:", + "render:x:996:", + "root:x:0:", + "ssh_keys:x:998:", + "sshd:x:74:", + "sys:x:3:", + "systemd-coredump:x:995:", + "systemd-journal:x:190:", + "systemd-network:x:192:", + "systemd-resolve:x:193:", + "systemd-timesync:x:994:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:999:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "vmdk", + "os-release": { + "ANSI_COLOR": "0;34", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:fedoraproject:fedora:32", + "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f32/system-administrators-guide/", + "HOME_URL": "https://fedoraproject.org/", + "ID": "fedora", + "LOGO": "fedora-logo-icon", + "NAME": "Fedora", + "PLATFORM_ID": "platform:f32", + "PRETTY_NAME": "Fedora 32 (Thirty Two)", + "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy", + "REDHAT_BUGZILLA_PRODUCT": "Fedora", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "32", + "REDHAT_SUPPORT_PRODUCT": "Fedora", + "REDHAT_SUPPORT_PRODUCT_VERSION": "32", + "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help", + "VERSION": "32 (Thirty Two)", + "VERSION_CODENAME": "", + "VERSION_ID": "32" + }, + "packages": [ + "NetworkManager-1.22.10-1.fc32.x86_64", + "NetworkManager-libnm-1.22.10-1.fc32.x86_64", + "acl-2.2.53-5.fc32.x86_64", + "alternatives-1.11-6.fc32.x86_64", + "audit-3.0-0.19.20191104git1c2f876.fc32.x86_64", + "audit-libs-3.0-0.19.20191104git1c2f876.fc32.x86_64", + "basesystem-11-9.fc32.noarch", + "bash-5.0.11-2.fc32.x86_64", + "bzip2-libs-1.0.8-2.fc32.x86_64", + "c-ares-1.15.0-5.fc32.x86_64", + "ca-certificates-2020.2.40-3.fc32.noarch", + "chrony-3.5-8.fc32.x86_64", + "compat-f32-dejavu-sans-fonts-2.37-7.fc32.noarch", + "compat-f32-dejavu-sans-mono-fonts-2.37-7.fc32.noarch", + "compat-f32-dejavu-serif-fonts-2.37-7.fc32.noarch", + "coreutils-8.32-3.fc32.1.x86_64", + "coreutils-common-8.32-3.fc32.1.x86_64", + "cpio-2.13-4.fc32.x86_64", + "cracklib-2.9.6-22.fc32.x86_64", + "cracklib-dicts-2.9.6-22.fc32.x86_64", + "crypto-policies-20191128-5.gitcd267a5.fc32.noarch", + "crypto-policies-scripts-20191128-5.gitcd267a5.fc32.noarch", + "cryptsetup-libs-2.3.0-1.fc32.x86_64", + "curl-7.69.1-1.fc32.x86_64", + "cyrus-sasl-lib-2.1.27-4.fc32.x86_64", + "dbus-1.12.16-4.fc32.x86_64", + "dbus-broker-22-1.fc32.x86_64", + "dbus-common-1.12.16-4.fc32.noarch", + "dbus-libs-1.12.16-4.fc32.x86_64", + "dejavu-sans-fonts-2.37-7.fc32.noarch", + "deltarpm-3.6.2-5.fc32.x86_64", + "device-mapper-1.02.171-1.fc32.x86_64", + "device-mapper-libs-1.02.171-1.fc32.x86_64", + "dhcp-client-4.4.2-5.b1.fc32.x86_64", + "dhcp-common-4.4.2-5.b1.fc32.noarch", + "diffutils-3.7-4.fc32.x86_64", + "dnf-4.2.19-1.fc32.noarch", + "dnf-data-4.2.19-1.fc32.noarch", + "dnf-plugins-core-4.0.14-1.fc32.noarch", + "dracut-050-26.git20200316.fc32.x86_64", + "dracut-config-generic-050-26.git20200316.fc32.x86_64", + "e2fsprogs-1.45.5-3.fc32.x86_64", + "e2fsprogs-libs-1.45.5-3.fc32.x86_64", + "elfutils-debuginfod-client-0.179-1.fc32.x86_64", + "elfutils-default-yama-scope-0.179-1.fc32.noarch", + "elfutils-libelf-0.179-1.fc32.x86_64", + "elfutils-libs-0.179-1.fc32.x86_64", + "expat-2.2.8-2.fc32.x86_64", + "fedora-gpg-keys-32-1.noarch", + "fedora-release-32-1.noarch", + "fedora-release-common-32-1.noarch", + "fedora-repos-32-1.noarch", + "file-5.38-2.fc32.x86_64", + "file-libs-5.38-2.fc32.x86_64", + "filesystem-3.14-2.fc32.x86_64", + "findutils-4.7.0-3.fc32.x86_64", + "fipscheck-1.5.0-8.fc32.x86_64", + "fipscheck-lib-1.5.0-8.fc32.x86_64", + "firewalld-0.8.2-2.fc32.noarch", + "firewalld-filesystem-0.8.2-2.fc32.noarch", + "fonts-filesystem-2.0.3-1.fc32.noarch", + "fuse-2.9.9-9.fc32.x86_64", + "fuse-common-3.9.1-1.fc32.x86_64", + "fuse-libs-2.9.9-9.fc32.x86_64", + "gawk-5.0.1-7.fc32.x86_64", + "gdbm-libs-1.18.1-3.fc32.x86_64", + "geolite2-city-20191217-2.fc32.noarch", + "geolite2-country-20191217-2.fc32.noarch", + "gettext-0.20.1-4.fc32.x86_64", + "gettext-libs-0.20.1-4.fc32.x86_64", + "glib2-2.64.1-1.fc32.x86_64", + "glibc-2.31-2.fc32.x86_64", + "glibc-common-2.31-2.fc32.x86_64", + "glibc-langpack-en-2.31-2.fc32.x86_64", + "gmp-6.1.2-13.fc32.x86_64", + "gnupg2-2.2.19-1.fc32.x86_64", + "gnupg2-smime-2.2.19-1.fc32.x86_64", + "gnutls-3.6.13-1.fc32.x86_64", + "gobject-introspection-1.64.1-1.fc32.x86_64", + "gpg-pubkey-12c944d0-5d5156ab", + "gpgme-1.13.1-6.fc32.x86_64", + "grep-3.3-4.fc32.x86_64", + "groff-base-1.22.3-21.fc32.x86_64", + "grub2-common-2.04-12.fc32.noarch", + "grub2-pc-2.04-12.fc32.x86_64", + "grub2-pc-modules-2.04-12.fc32.noarch", + "grub2-tools-2.04-12.fc32.x86_64", + "grub2-tools-minimal-2.04-12.fc32.x86_64", + "grubby-8.40-40.fc32.x86_64", + "gzip-1.10-2.fc32.x86_64", + "hostname-3.23-2.fc32.x86_64", + "hwdata-0.334-1.fc32.noarch", + "ima-evm-utils-1.2.1-3.fc32.x86_64", + "initscripts-10.02-3.fc32.x86_64", + "ipcalc-0.4.0-2.fc32.x86_64", + "iproute-5.5.0-1.fc32.x86_64", + "iproute-tc-5.5.0-1.fc32.x86_64", + "ipset-7.6-1.fc32.x86_64", + "ipset-libs-7.6-1.fc32.x86_64", + "iptables-libs-1.8.4-7.fc32.x86_64", + "iptables-nft-1.8.4-7.fc32.x86_64", + "iputils-20190515-5.fc32.x86_64", + "jansson-2.12-5.fc32.x86_64", + "json-c-0.13.1-9.fc32.x86_64", + "kbd-2.2.0-1.fc32.x86_64", + "kbd-legacy-2.2.0-1.fc32.noarch", + "kbd-misc-2.2.0-1.fc32.noarch", + "kernel-5.6.6-300.fc32.x86_64", + "kernel-core-5.6.6-300.fc32.x86_64", + "kernel-modules-5.6.6-300.fc32.x86_64", + "keyutils-libs-1.6-4.fc32.x86_64", + "kmod-27-1.fc32.x86_64", + "kmod-libs-27-1.fc32.x86_64", + "kpartx-0.8.2-3.fc32.x86_64", + "krb5-libs-1.18-1.fc32.x86_64", + "langpacks-core-en-3.0-3.fc32.noarch", + "langpacks-core-font-en-3.0-3.fc32.noarch", + "langpacks-en-3.0-3.fc32.noarch", + "less-551-3.fc32.x86_64", + "libacl-2.2.53-5.fc32.x86_64", + "libarchive-3.4.2-1.fc32.x86_64", + "libargon2-20171227-4.fc32.x86_64", + "libassuan-2.5.3-3.fc32.x86_64", + "libattr-2.4.48-8.fc32.x86_64", + "libbasicobjects-0.1.1-44.fc32.x86_64", + "libblkid-2.35.1-7.fc32.x86_64", + "libbrotli-1.0.7-10.fc32.x86_64", + "libcap-2.26-7.fc32.x86_64", + "libcap-ng-0.7.10-2.fc32.x86_64", + "libcbor-0.5.0-7.fc32.x86_64", + "libcollection-0.7.0-44.fc32.x86_64", + "libcom_err-1.45.5-3.fc32.x86_64", + "libcomps-0.1.14-4.fc32.x86_64", + "libcroco-0.6.13-3.fc32.x86_64", + "libcurl-7.69.1-1.fc32.x86_64", + "libdb-5.3.28-40.fc32.x86_64", + "libdb-utils-5.3.28-40.fc32.x86_64", + "libdhash-0.5.0-44.fc32.x86_64", + "libdnf-0.45.0-3.fc32.x86_64", + "libdrm-2.4.100-2.fc32.x86_64", + "libedit-3.1-32.20191231cvs.fc32.x86_64", + "libevent-2.1.8-8.fc32.x86_64", + "libfdisk-2.35.1-7.fc32.x86_64", + "libffi-3.1-24.fc32.x86_64", + "libfido2-1.3.1-1.fc32.x86_64", + "libgcc-10.0.1-0.11.fc32.x86_64", + "libgcrypt-1.8.5-3.fc32.x86_64", + "libgomp-10.0.1-0.11.fc32.x86_64", + "libgpg-error-1.36-3.fc32.x86_64", + "libidn2-2.3.0-2.fc32.x86_64", + "libini_config-1.3.1-44.fc32.x86_64", + "libkcapi-1.1.5-2.fc32.x86_64", + "libkcapi-hmaccalc-1.1.5-2.fc32.x86_64", + "libksba-1.3.5-11.fc32.x86_64", + "libldb-2.1.1-1.fc32.x86_64", + "libmaxminddb-1.3.2-2.fc32.x86_64", + "libmetalink-0.1.3-10.fc32.x86_64", + "libmnl-1.0.4-11.fc32.x86_64", + "libmodulemd-2.9.1-1.fc32.x86_64", + "libmount-2.35.1-7.fc32.x86_64", + "libmspack-0.10.1-0.3.alpha.fc32.x86_64", + "libndp-1.7-5.fc32.x86_64", + "libnetfilter_conntrack-1.0.7-4.fc32.x86_64", + "libnfnetlink-1.0.1-17.fc32.x86_64", + "libnfsidmap-2.4.3-0.fc32.x86_64", + "libnftnl-1.1.5-2.fc32.x86_64", + "libnghttp2-1.40.0-2.fc32.x86_64", + "libnl3-3.5.0-2.fc32.x86_64", + "libnsl2-1.2.0-6.20180605git4a062cf.fc32.x86_64", + "libpath_utils-0.2.1-44.fc32.x86_64", + "libpcap-1.9.1-3.fc32.x86_64", + "libpciaccess-0.16-2.fc32.x86_64", + "libpipeline-1.5.2-2.fc32.x86_64", + "libpsl-0.21.0-4.fc32.x86_64", + "libpwquality-1.4.2-2.fc32.x86_64", + "libref_array-0.1.5-44.fc32.x86_64", + "librepo-1.11.1-4.fc32.x86_64", + "libreport-filesystem-2.12.0-3.fc32.noarch", + "libseccomp-2.4.2-3.fc32.x86_64", + "libsecret-0.20.2-2.fc32.x86_64", + "libselinux-3.0-3.fc32.x86_64", + "libselinux-utils-3.0-3.fc32.x86_64", + "libsemanage-3.0-3.fc32.x86_64", + "libsepol-3.0-3.fc32.x86_64", + "libsigsegv-2.11-10.fc32.x86_64", + "libsmartcols-2.35.1-7.fc32.x86_64", + "libsolv-0.7.11-2.fc32.x86_64", + "libss-1.45.5-3.fc32.x86_64", + "libssh-0.9.3-2.fc32.x86_64", + "libssh-config-0.9.3-2.fc32.noarch", + "libsss_autofs-2.2.3-13.fc32.x86_64", + "libsss_certmap-2.2.3-13.fc32.x86_64", + "libsss_idmap-2.2.3-13.fc32.x86_64", + "libsss_nss_idmap-2.2.3-13.fc32.x86_64", + "libsss_sudo-2.2.3-13.fc32.x86_64", + "libstdc++-10.0.1-0.11.fc32.x86_64", + "libtalloc-2.3.1-2.fc32.x86_64", + "libtasn1-4.16.0-1.fc32.x86_64", + "libtdb-1.4.3-2.fc32.x86_64", + "libtevent-0.10.2-2.fc32.x86_64", + "libtextstyle-0.20.1-4.fc32.x86_64", + "libtirpc-1.2.5-1.rc2.fc32.x86_64", + "libtool-ltdl-2.4.6-33.fc32.x86_64", + "libunistring-0.9.10-7.fc32.x86_64", + "libusbx-1.0.23-1.fc32.x86_64", + "libuser-0.62-24.fc32.x86_64", + "libutempter-1.1.6-18.fc32.x86_64", + "libuuid-2.35.1-7.fc32.x86_64", + "libverto-0.3.0-9.fc32.x86_64", + "libxcrypt-4.4.16-1.fc32.x86_64", + "libxcrypt-compat-4.4.16-1.fc32.x86_64", + "libxkbcommon-0.10.0-2.fc32.x86_64", + "libxml2-2.9.10-3.fc32.x86_64", + "libxslt-1.1.34-1.fc32.x86_64", + "libyaml-0.2.2-3.fc32.x86_64", + "libzstd-1.4.4-2.fc32.x86_64", + "linux-atm-libs-2.5.1-26.fc32.x86_64", + "linux-firmware-20200316-106.fc32.noarch", + "linux-firmware-whence-20200316-106.fc32.noarch", + "lmdb-libs-0.9.24-1.fc32.x86_64", + "lua-libs-5.3.5-7.fc32.x86_64", + "lz4-libs-1.9.1-2.fc32.x86_64", + "man-db-2.9.0-2.fc32.x86_64", + "mkpasswd-5.5.6-1.fc32.x86_64", + "mpfr-4.0.2-3.fc32.x86_64", + "ncurses-6.1-15.20191109.fc32.x86_64", + "ncurses-base-6.1-15.20191109.fc32.noarch", + "ncurses-libs-6.1-15.20191109.fc32.x86_64", + "nettle-3.5.1-5.fc32.x86_64", + "nftables-0.9.3-2.fc32.x86_64", + "npth-1.6-4.fc32.x86_64", + "open-vm-tools-11.0.5-3.fc32.x86_64", + "openldap-2.4.47-4.fc32.x86_64", + "openssh-8.2p1-2.fc32.x86_64", + "openssh-clients-8.2p1-2.fc32.x86_64", + "openssh-server-8.2p1-2.fc32.x86_64", + "openssl-1.1.1d-7.fc32.x86_64", + "openssl-libs-1.1.1d-7.fc32.x86_64", + "openssl-pkcs11-0.4.10-5.fc32.x86_64", + "os-prober-1.77-4.fc32.x86_64", + "p11-kit-0.23.20-1.fc32.x86_64", + "p11-kit-trust-0.23.20-1.fc32.x86_64", + "pam-1.3.1-24.fc32.x86_64", + "parted-3.3-3.fc32.x86_64", + "passwd-0.80-8.fc32.x86_64", + "pciutils-3.6.4-1.fc32.x86_64", + "pciutils-libs-3.6.4-1.fc32.x86_64", + "pcre-8.44-1.fc32.x86_64", + "pcre2-10.34-9.fc32.x86_64", + "pcre2-syntax-10.34-9.fc32.noarch", + "pigz-2.4-6.fc32.x86_64", + "pinentry-1.1.0-7.fc32.x86_64", + "plymouth-0.9.4-14.20200325gite31c81f.fc32.x86_64", + "plymouth-core-libs-0.9.4-14.20200325gite31c81f.fc32.x86_64", + "plymouth-scripts-0.9.4-14.20200325gite31c81f.fc32.x86_64", + "policycoreutils-3.0-2.fc32.x86_64", + "polkit-libs-0.116-7.fc32.x86_64", + "popt-1.16-19.fc32.x86_64", + "procps-ng-3.3.15-7.fc32.x86_64", + "psmisc-23.3-3.fc32.x86_64", + "publicsuffix-list-dafsa-20190417-3.fc32.noarch", + "python-pip-wheel-19.3.1-2.fc32.noarch", + "python-setuptools-wheel-41.6.0-2.fc32.noarch", + "python-unversioned-command-3.8.2-2.fc32.noarch", + "python3-3.8.2-2.fc32.x86_64", + "python3-dateutil-2.8.0-8.fc32.noarch", + "python3-dbus-1.2.16-1.fc32.x86_64", + "python3-decorator-4.4.0-6.fc32.noarch", + "python3-distro-1.4.0-5.fc32.noarch", + "python3-dnf-4.2.19-1.fc32.noarch", + "python3-dnf-plugins-core-4.0.14-1.fc32.noarch", + "python3-firewall-0.8.2-2.fc32.noarch", + "python3-gobject-base-3.36.0-2.fc32.x86_64", + "python3-gpg-1.13.1-6.fc32.x86_64", + "python3-hawkey-0.45.0-3.fc32.x86_64", + "python3-libcomps-0.1.14-4.fc32.x86_64", + "python3-libdnf-0.45.0-3.fc32.x86_64", + "python3-libs-3.8.2-2.fc32.x86_64", + "python3-libselinux-3.0-3.fc32.x86_64", + "python3-nftables-0.9.3-2.fc32.x86_64", + "python3-pip-19.3.1-2.fc32.noarch", + "python3-rpm-4.15.1-2.fc32.1.x86_64", + "python3-setuptools-41.6.0-2.fc32.noarch", + "python3-six-1.14.0-2.fc32.noarch", + "python3-slip-0.6.4-19.fc32.noarch", + "python3-slip-dbus-0.6.4-19.fc32.noarch", + "python3-unbound-1.9.6-2.fc32.x86_64", + "qrencode-libs-4.0.2-5.fc32.x86_64", + "readline-8.0-4.fc32.x86_64", + "rootfiles-8.1-27.fc32.noarch", + "rpm-4.15.1-2.fc32.1.x86_64", + "rpm-build-libs-4.15.1-2.fc32.1.x86_64", + "rpm-libs-4.15.1-2.fc32.1.x86_64", + "rpm-plugin-selinux-4.15.1-2.fc32.1.x86_64", + "rpm-plugin-systemd-inhibit-4.15.1-2.fc32.1.x86_64", + "rpm-sign-libs-4.15.1-2.fc32.1.x86_64", + "sed-4.5-5.fc32.x86_64", + "selinux-policy-3.14.5-32.fc32.noarch", + "selinux-policy-targeted-3.14.5-32.fc32.noarch", + "setup-2.13.6-2.fc32.noarch", + "shadow-utils-4.8.1-2.fc32.x86_64", + "shared-mime-info-1.15-3.fc32.x86_64", + "sqlite-libs-3.31.1-1.fc32.x86_64", + "sssd-client-2.2.3-13.fc32.x86_64", + "sssd-common-2.2.3-13.fc32.x86_64", + "sssd-kcm-2.2.3-13.fc32.x86_64", + "sssd-nfs-idmap-2.2.3-13.fc32.x86_64", + "sudo-1.9.0-0.1.b4.fc32.x86_64", + "systemd-245.4-1.fc32.x86_64", + "systemd-libs-245.4-1.fc32.x86_64", + "systemd-pam-245.4-1.fc32.x86_64", + "systemd-rpm-macros-245.4-1.fc32.noarch", + "systemd-udev-245.4-1.fc32.x86_64", + "tar-1.32-4.fc32.x86_64", + "trousers-0.3.13-13.fc31.x86_64", + "trousers-lib-0.3.13-13.fc31.x86_64", + "tss2-1331-4.fc32.x86_64", + "tzdata-2019c-3.fc32.noarch", + "unbound-libs-1.9.6-2.fc32.x86_64", + "util-linux-2.35.1-7.fc32.x86_64", + "vim-minimal-8.2.525-1.fc32.x86_64", + "which-2.21-19.fc32.x86_64", + "whois-nls-5.5.6-1.fc32.noarch", + "xkeyboard-config-2.29-1.fc32.noarch", + "xmlsec1-1.2.29-1.fc32.x86_64", + "xmlsec1-openssl-1.2.29-1.fc32.x86_64", + "xz-5.2.5-1.fc32.x86_64", + "xz-libs-5.2.5-1.fc32.x86_64", + "yum-4.2.19-1.fc32.noarch", + "zchunk-libs-1.1.5-2.fc32.x86_64", + "zlib-1.2.11-21.fc32.x86_64" + ], + "partition-table": "dos", + "partition-table-id": "0x14fc63d2", + "partitions": [ + { + "bootable": true, + "fstype": "ext4", + "label": null, + "partuuid": "14fc63d2-01", + "size": 2146435072, + "start": 1048576, + "type": "83", + "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:996:993::/var/lib/chrony:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "redhat:x:1000:1000::/home/redhat:/bin/bash", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:998:995:systemd Core Dumper:/:/sbin/nologin", + "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "systemd-timesync:x:997:994:systemd Time Synchronization:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:999:999:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/boot/System.map-5.6.6-300.fc32.x86_64": ".M.......", + "/boot/initramfs-5.6.6-300.fc32.x86_64.img": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/lib/modules/5.6.6-300.fc32.x86_64/modules.builtin.alias.bin": ".......T.", + "/proc": ".M.......", + "/sys": ".M.......", + "/var/log/btmp": ".M.......", + "/var/log/journal": ".M....G..", + "/var/log/lastlog": ".M....G.." + }, + "missing": [] + }, + "services-disabled": [ + "chrony-dnssrv@.timer", + "chrony-wait.service", + "console-getty.service", + "debug-shell.service", + "exit.target", + "halt.target", + "kexec.target", + "loadmodules.service", + "man-db-restart-cache-update.service", + "nftables.service", + "nis-domainname.service", + "poweroff.target", + "proc-sys-fs-binfmt_misc.mount", + "rdisc.service", + "remote-cryptsetup.target", + "run-vmblock\\x2dfuse.mount", + "runlevel0.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-boot-check-no-failures.service", + "systemd-network-generator.service", + "systemd-networkd-wait-online.service", + "systemd-networkd.service", + "systemd-networkd.socket", + "systemd-pstore.service", + "systemd-resolved.service", + "systemd-time-wait-sync.service", + "systemd-timesyncd.service", + "tcsd.service" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "ctrl-alt-del.target", + "dbus-broker.service", + "dbus-org.fedoraproject.FirewallD1.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dbus.service", + "dbus.socket", + "dnf-makecache.timer", + "firewalld.service", + "fstrim.timer", + "getty@.service", + "import-state.service", + "reboot.target", + "remote-fs.target", + "runlevel6.target", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "unbound-anchor.timer", + "vgauthd.service", + "vmtoolsd.service" + ] + } +} \ No newline at end of file diff --git a/test/cases/rhel_8-aarch64-ami-boot.json b/test/cases/rhel_8-aarch64-ami-boot.json new file mode 100644 index 0000000..baf6ea1 --- /dev/null +++ b/test/cases/rhel_8-aarch64-ami-boot.json @@ -0,0 +1,9355 @@ +{ + "boot": { + "type": "aws" + }, + "compose-request": { + "distro": "rhel-8", + "arch": "aarch64", + "image-type": "ami", + "repositories": [ + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + }, + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + } + ], + "filename": "image.raw", + "blueprint": {} + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:0136940a3e28a159e7347b0bc7d1dbbc0339c64f431349e355f75abe31cbf21c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-4.18.0-221.el8.aarch64.rpm" + }, + "sha256:01d5881b441b015ac394e66fb27dbc5cb11befc8080973208806257ecee2d12d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lshw-B.02.19.2-2.el8.aarch64.rpm" + }, + "sha256:01e486a3be67325e9692e909f5c6534137ee6a6df185ba2c09d4d50fe6c738f6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libusbx-1.0.23-3.el8.aarch64.rpm" + }, + "sha256:0229afd544d1a59bfe26c095ad338bac7e0d2f10aab88bd895f3766e8f54fff3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-libnm-1.26.0-0.2.el8.aarch64.rpm" + }, + "sha256:0265d8b987f411738f3b53bd1f84386955704122e20ece4eb232a0df89ff62f0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pyyaml-3.12-12.el8.aarch64.rpm" + }, + "sha256:030eef043bf4cfdffc0a672ca2c1499281fbcb78a81a98a9e932ba0b7c9ebb6b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libbasicobjects-0.1.1-39.el8.aarch64.rpm" + }, + "sha256:047e04a10f26da24deb076a88c676fcaecd2f68aaa1a5adc7bc46791145c74c4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-newt-0.52.20-11.el8.aarch64.rpm" + }, + "sha256:04c031a07bde4360484a0180e832036d3ac45a95c4839e54d7a02423df5485ef": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pam-1.3.1-11.el8.aarch64.rpm" + }, + "sha256:057b6632870b8c3c0c950a19092ef2f9749bf3d1a37ccb083bf42ca6404db066": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-libs-1.02.171-3.el8.aarch64.rpm" + }, + "sha256:058822931f4c34c18675116c1b02b718de4044c1019acb0d5f97417f00a30ba7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libevent-2.1.8-5.el8.aarch64.rpm" + }, + "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/cloud-init-19.4-7.el8.noarch.rpm" + }, + "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-prettytable-0.7.2-14.el8.noarch.rpm" + }, + "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-jinja2-2.10.1-2.el8_0.noarch.rpm" + }, + "sha256:091c7cf9a81bc55f9d813c40904e1b7b4f8889df3584d0978e0f6770f01042e9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnl3-cli-3.5.0-1.el8.aarch64.rpm" + }, + "sha256:094eff70081085f87a7ac0dedafa851ad8ac8e03f9f328636df4a0f8301d0e87": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-libs-5.2.4-3.el8.aarch64.rpm" + }, + "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:09f390f3bf4dac907dfbc58b714d6c3de1ee7755a0ca5661b2f7c0a7dfbcfcff": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libini_config-1.3.1-39.el8.aarch64.rpm" + }, + "sha256:0a016d034c490f07425c402c260de595603a136bf7146dbc8ed90a661a60fbc1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rsyslog-8.1911.0-6.el8.aarch64.rpm" + }, + "sha256:0a885c6dc6abd969b828bf2fd7063ee884e6d058eaf405b02f3dd6efb6c66bac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-plugins-core-4.0.17-2.el8.noarch.rpm" + }, + "sha256:0ac8999f5ebca6b808973d0db5038a835daa2358af1007e9cb972b0e96eae217": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_sudo-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:0ac96870f86e4a275b6d7be6a6045383ff3071653b7e897538f713ba905edb42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pciutils-3.6.4-2.el8.aarch64.rpm" + }, + "sha256:0aeef4b59dae77f6bd7f557e62efb6621491c04c27287860f581d35cd9be7a19": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-markupsafe-0.23-19.el8.aarch64.rpm" + }, + "sha256:0b4564ad3a799af1a4a0de33b0952f6056d942b0cfa39b73e9375bf0c05b3191": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-smime-2.2.20-2.el8.aarch64.rpm" + }, + "sha256:0bb7024125ca67119612e55a92da13c989e0306ddd7de7e655a679c963939ef7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:0c9b5e526b6fe5384447db444a2657cb4b1766b646255f89c49c749d388bdc58": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libestr-0.1.10-1.el8.aarch64.rpm" + }, + "sha256:0cbb121302cc38ac16f8f9bd5ea8bd3ce3e2121f6c25c985b66bd29a532f2f7c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/logrotate-3.14.0-4.el8.aarch64.rpm" + }, + "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm" + }, + "sha256:0d61e2dfcaed066e4ef74e4baddab9cdec24602aeb7a98306481f38cb5f449eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-core-4.18.0-221.el8.aarch64.rpm" + }, + "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/linux-firmware-20200619-99.git3890db36.el8.noarch.rpm" + }, + "sha256:0e30a92139490232a4b891f4f802db74f41002475f8d203c6adffe1fb9d2b1ab": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/authselect-1.2.1-2.el8.aarch64.rpm" + }, + "sha256:0f1a02850c102e2a186787504f965c0c10d6432b9f600c18bc2f520e55f04a8c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libassuan-2.5.1-3.el8.aarch64.rpm" + }, + "sha256:0f2c07acd21a998f0a4b2a569ebfd143b889d6a5105541b2393dab96cd027a10": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_autofs-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:0f32d23a6b2b15603d710b0317238ef8dde3de61eda96713e21d86c9fc7a98ed": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/which-2.21-12.el8.aarch64.rpm" + }, + "sha256:0f6d940ccddd815da01182de1e7b7e2d12c493125285ff7ee902843beefdec16": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmnl-1.0.4-6.el8.aarch64.rpm" + }, + "sha256:0fd7dd5b060e7533144ad7a3cae2453ad6f87650010f328879b10c7c4cba0c04": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iptables-libs-1.8.4-14.el8.aarch64.rpm" + }, + "sha256:1091a799d34a42d2e42ac462b4f979a55d17513eca5a00bad9bdba56cca83357": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-25-16.el8.aarch64.rpm" + }, + "sha256:10a83db8ac5065869be834bf6ec61185eded982f885def5979948736e5c3ab95": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mozjs60-60.9.0-4.el8.aarch64.rpm" + }, + "sha256:10ac3bf7565725a55b0aef56f65befd0d320219fc83adfab6e564c19f8c44bd6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-2.0.4-10.el8.aarch64.rpm" + }, + "sha256:1143ac623a74d7feaaaf293c18d942d243248f6356628f87216670c10d11687b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-glib-1.4.4-1.el8.aarch64.rpm" + }, + "sha256:11aae64c2458371a884514b954f58896c5ba7fb751ade0351c476e29991da25b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm" + }, + "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm" + }, + "sha256:125c92f23d87b905c21e9f7669f0ec6e41428ab63c8c13f63db8980f292797d5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sed-4.5-2.el8.aarch64.rpm" + }, + "sha256:126d980678e5b687c775cf857b4013306f1a761353370258a0f04d92a3553f92": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-minimal-2.02-84.el8.aarch64.rpm" + }, + "sha256:13471e37bb0089a322183fc9e7a53948f0b203b54277630e75606a835268ad5d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rng-tools-6.8-3.el8.aarch64.rpm" + }, + "sha256:13f1d396ba9e0fe3f8d5ef43693b5c1178207e594d2b830e94d3f8e02e33767f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ethtool-5.0-2.el8.aarch64.rpm" + }, + "sha256:13f55a1fea88c4720dc704fa19573325ddde8c1c60ed71e96f98a9e5a6508d44": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/chrony-3.5-1.el8.aarch64.rpm" + }, + "sha256:140146ebcbadd9b0f2aa5c2fcde5c93888f2d84ce61a2a4cf148ef435d1ba410": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsemanage-2.9-3.el8.aarch64.rpm" + }, + "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm" + }, + "sha256:157044e6cf5cc52b64b9a5d621fdb5b0846a527daa428382330e68bdb47789eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dhcp-client-4.3.6-41.el8.aarch64.rpm" + }, + "sha256:15c33124ac0479d34f1f58d2bd24cc52db7089b4a8681c276a3fd0d6dfe4fc72": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-8.30-8.el8.aarch64.rpm" + }, + "sha256:1657e36d9213739cfef8bacc8876153692f5a5b4d87dd5dde86ad182dd63ca1b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_nss_idmap-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crontabs-1.11-16.20150630git.el8.noarch.rpm" + }, + "sha256:17501958f52d2db1417cab8dd5ca261bf447fd93eb62b80173f9875c3012b700": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efi-filesystem-3-2.el8.noarch.rpm" + }, + "sha256:1956304761f23c6661b831d33a3539b82384636db4113cccd19321b36a3a8415": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/vim-minimal-8.0.1763-15.el8.aarch64.rpm" + }, + "sha256:19cd894b4154d1a8521c6884cfd2a6eaf1f498b7dec5cc31408f8535b9098f2a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shared-mime-info-1.9-3.el8.aarch64.rpm" + }, + "sha256:19d1de27d2f62b4a55735233807f70a1e8ff7551fed97ee8650dbd09c1ef50ea": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libzstd-1.4.4-1.el8.aarch64.rpm" + }, + "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm" + }, + "sha256:19efe6f125c00123ccc6d96e51eb61e711f3ea01f32d18cce14d3b614217c58e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gmp-6.1.2-10.el8.aarch64.rpm" + }, + "sha256:1b8c037a6c67959b52894f38444ed1133356c65cec2eed3acf37c45cf8609e63": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efivar-36-1.el8.aarch64.rpm" + }, + "sha256:1bc21785bc6f66d6fcc29cd62f2cdd3584f3f8ea6321db4c27251b192f468433": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/usermode-1.113-1.el8.aarch64.rpm" + }, + "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tzdata-2020a-1.el8.noarch.rpm" + }, + "sha256:1e8b20ca3658abc9b7e2fe27d18eeae2f660779f33b39ca1fa2588363af250e5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm" + }, + "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm" + }, + "sha256:1eff42ff409079d679c7777483d476f3261a2881b456b6280e81f7903a0cd499": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtevent-0.10.2-2.el8.aarch64.rpm" + }, + "sha256:1f8013c5bd1c4914a11363d56d67fa70871f5f42c64f57862c791871fb9bb05c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-team-1.26.0-0.2.el8.aarch64.rpm" + }, + "sha256:1fbb9fed42dff3f9dbc9e4fd929281408f77506423424759c2ac57b76afc3cdb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpng-1.6.34-5.el8.aarch64.rpm" + }, + "sha256:207e6396488c1db18fb7b1f2b9952f48c2625f042c5f6a901d41974ce376b0e0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sqlite-libs-3.26.0-10.el8.aarch64.rpm" + }, + "sha256:21685a7b79484a6d684efd86af6fb23dc13aaadc534cc4c4ae3edc0ceb84051b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ipcalc-0.2.4-4.el8.aarch64.rpm" + }, + "sha256:2180d7f1748a5049763d5626b8e14b2c7442e5491a63094a79dded66bcc5c7b0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_idmap-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:22c0e44318e36e04ad1eb4632dcf25db991f481f9a543387d372e1f2ad92561f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/pinentry-1.1.0-2.el8.aarch64.rpm" + }, + "sha256:2397506a63455e543b201938f605e687de5590d9a06282824e2f6bfdf5e0f149": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsolv-0.7.11-1.el8.aarch64.rpm" + }, + "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tuned-2.14.0-2.el8.noarch.rpm" + }, + "sha256:268d9232f0853037100432e9363c659cf99927e03f759fd4884643b560710cd6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libss-1.45.6-1.el8.aarch64.rpm" + }, + "sha256:26b14d8f226962ce712bbccfb245843759e835a24a139eacae86d680043a85a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmount-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:26e7368e961b374cefb947dab3a98387a3da15a86331a0d99d7b0e68ef246626": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnfsidmap-2.3.3-35.el8.aarch64.rpm" + }, + "sha256:2769c1df985e8fea8760d7ca8908eac166a64262c9643c7b0f6a82db570a68f5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libfastjson-0.99.8-2.el8.aarch64.rpm" + }, + "sha256:27ed4654a9c4dfb8417c54cc1a6060c51bd3f1dd16c4ba4bd24dfeba57c5ede1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.aarch64.rpm" + }, + "sha256:2809ad51c6eb6c9a54d64cccc2cd948f6fd4207f32b4493b3f4a9bd0886c894b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcurl-7.61.1-12.el8.aarch64.rpm" + }, + "sha256:28d4282a27a17db514ff30d8c865cb8a306d1c412f9e13c2e617a23912f07dde": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm" + }, + "sha256:290c83afcd2b0a2b17aab95cf72a85da5f8b9f9a9862857c919a0f43e3fce70e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-pkcs11-0.4.10-2.el8.aarch64.rpm" + }, + "sha256:2921d3aa14a509d271ca35256903c142c30f088f7dc889a4c4e15b26316ef5c0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-2.02-84.el8.aarch64.rpm" + }, + "sha256:2b6d1fbf6f54f06c168862e19e03aa0ce32c299fb3f7e4cd1bf4aa9df4b4d995": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/parted-3.2-38.el8.aarch64.rpm" + }, + "sha256:2bbb8eebf42b0f55d735c0f84e2521c339febc7036f2e94332ff013d7406b80a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sssd-client-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:2cddadff38ccef2364a7e40af0e1d9b3bf9c06869c15ceeb655f3cfa431c2083": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-2.26-4.el8.aarch64.rpm" + }, + "sha256:2cfc9f7d8286002d753d12aa9669522222466c5e1e3f10ed81c8d4d23a3e203c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sssd-kcm-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:2d74e0ab14393921c6160fda8dd533b58c0348acdf5ee5c306ffc64221700de2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librepo-1.12.0-1.el8.aarch64.rpm" + }, + "sha256:2d84f6765b1645f867527f493b6153470602a80c75f81545bf619aa92127e4da": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bzip2-libs-1.0.6-26.el8.aarch64.rpm" + }, + "sha256:2dc8e2f52451d1a11b16bbb389a24c58b61a1ba804ee777f9d06dbe4e1fcf6e5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libidn2-2.2.0-1.el8.aarch64.rpm" + }, + "sha256:2df37064ec55f10e06dc0c05647a296b8ca7867251fe44130206052e58d39bda": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/subscription-manager-rhsm-certificates-1.27.9-1.el8.aarch64.rpm" + }, + "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pyOpenSSL-18.0.0-1.el8.noarch.rpm" + }, + "sha256:2e26672ae726ba833187292dcc6c1673a07e26d974fef2f71a83407989eea8a1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-config-generic-049-89.git20200625.el8.aarch64.rpm" + }, + "sha256:2efbfbcce7ef24e433d3c304b6b6b022d1b1b8a972969da1adb1c3c85f9625a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dosfstools-4.1-6.el8.aarch64.rpm" + }, + "sha256:31043a7324411dad6b84f6504a9e9cb7ece9f576acf091be522e484c8b82f469": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-gobject-base-3.28.3-2.el8.aarch64.rpm" + }, + "sha256:320ced09e242f09047f4fab0a7f66aba6de2e42583f6a2e164eadcc1ffd0b915": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mpfr-3.1.6-1.el8.aarch64.rpm" + }, + "sha256:3256e78263462d5d7ab37b696992aedd6f810431641ce8d1e1bc198c797b402b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-1.45.6-1.el8.aarch64.rpm" + }, + "sha256:32c9ff3e0278dbd7022ad76629146ece3fffdc58af14e1eaf97e7052d610daa2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/teamd-1.29-5.el8.aarch64.rpm" + }, + "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm" + }, + "sha256:342d7cd5f427c0d9c02336bc4f189225b3b57c5899f5d26b61b351fc37f99489": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setools-4.3.0-1.el8.aarch64.rpm" + }, + "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-oauthlib-2.1.0-1.el8.noarch.rpm" + }, + "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-chardet-3.0.4-7.el8.noarch.rpm" + }, + "sha256:36aece7b7a65785985bf0b98701514f12735a87517b8578a3eb3710f82ba4765": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-c-0.13.1-0.2.el8.aarch64.rpm" + }, + "sha256:38affe91361bf56b84490d97c7e3f815965cf8d2bbb222c6c045af4bf2dff736": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/langpacks-en-1.0-12.el8.noarch.rpm" + }, + "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libcomps-0.1.11-4.el8.aarch64.rpm" + }, + "sha256:3a684fd5f1b1d417c6c3e9d1f0d5b846138aa06450ff246425d43d4a20bd619e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/diffutils-3.6-6.el8.aarch64.rpm" + }, + "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-configobj-5.0.6-11.el8.noarch.rpm" + }, + "sha256:3b607f0dbedecb25239e22c1f553c8d70db9d2206a877fa07567fa1a49e233d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcc-8.3.1-5.1.el8.aarch64.rpm" + }, + "sha256:3bf230c85711b285afb968850d7e98eb6b068a06e7ca40e94203e388d8447f48": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnutls-3.6.14-3.el8.aarch64.rpm" + }, + "sha256:3c096d861c04f97c89dcf335d66a169bca3d371d9589e547c50f18b4180a9e6f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-perf-4.18.0-221.el8.aarch64.rpm" + }, + "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dnf-plugins-core-4.0.17-2.el8.noarch.rpm" + }, + "sha256:3d24b1cc90de184aa66cd58a1071888b6de8d34eb8155d6ab6a5ac777281adf5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-netifaces-0.10.6-4.el8.aarch64.rpm" + }, + "sha256:3e40a3103fbf71c83773beac7373d0e790631cb3c918d8b20a883c8e65e70136": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-tools-4.18.0-221.el8.aarch64.rpm" + }, + "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pyserial-3.1.1-8.el8.noarch.rpm" + }, + "sha256:3ee66f993ee567b2457a221ed364ae4f8dfe783a5f0e723d9169f95d12f9e696": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-libs-5.33-16.el8.aarch64.rpm" + }, + "sha256:3ee6a4f61935c2f0698ad2c4834a5864920a1e48d55c7800da7c382249895e39": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-0.9.4-2.el8.aarch64.rpm" + }, + "sha256:3ef63ecbebf844bcf682c9482dc0ddd158c955b0f066b62eb9575bb9a9642db5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-1.1.1g-9.el8.aarch64.rpm" + }, + "sha256:3f5765cebcac288cc1b5b118acfbc2016eda7b81ad73923f6f9c21e4731eb0d9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-1.18-1.el8.aarch64.rpm" + }, + "sha256:3f7e5e72ab9e18dbca936b40734c91520242a49a9e98a2f2589f397faa6ad8e8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/info-6.5-6.el8.aarch64.rpm" + }, + "sha256:3f8039ed081aa3f628e947656af825b4541ded3547675098eabb0f177eca45e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/polkit-0.115-11.el8.aarch64.rpm" + }, + "sha256:3fe7c10c144c8fffc00d144317a2bf8029bd9d048432bccfc352dfc6f0995680": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-udev-239-36.el8.aarch64.rpm" + }, + "sha256:4059e9cccbde0401f9af4dea1160a07af8760adbc3e1d964e5c8ac87307eff81": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hdparm-9.54-2.el8.aarch64.rpm" + }, + "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dhcp-common-4.3.6-41.el8.noarch.rpm" + }, + "sha256:41cc2d507fdfbba939c00164a563e770d466f992cb64d3c51a79aec20b31d6d1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.aarch64.rpm" + }, + "sha256:428af99d7ff753fc26a13130115c4dcbbac030776a299583d00c69e8ec6a13ca": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sssd-common-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:432ef41fd5f9ad2b9a797ed105f6e729dcaf19c17df9c1478802af04e898e305": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sudo-1.8.29-6.el8.aarch64.rpm" + }, + "sha256:435a2be84a2b38372965dbd60ffed0ed38a616b8100859787a8bb3b19d9fc4d9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpcap-1.9.1-4.el8.aarch64.rpm" + }, + "sha256:439c408eb3f33e9d8bea308afda0b32fadf7910f7b064c9821499332672a60cf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libldb-2.1.3-2.el8.aarch64.rpm" + }, + "sha256:43ab42c8a58267936a89da99e37d3b9fc56489e958060f600ba047445ca44ee3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/os-prober-1.74-6.el8.aarch64.rpm" + }, + "sha256:448d3ff44e7f32f3b33e891180e248dc1bcd4d410f68015a8b0c30dc7c385aca": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-libs-1.1.1g-9.el8.aarch64.rpm" + }, + "sha256:4633c2b5a93723e1cad477b81f9ccefafed342f8c4474ec305058f99c713229d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-extra-2.02-84.el8.aarch64.rpm" + }, + "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm" + }, + "sha256:471663fca7e3f609834368d69d8f1f469cfc0d3f3e95dc2b79381722d0368edc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.aarch64.rpm" + }, + "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm" + }, + "sha256:47b483c0f556c56f0b1f468603c57834864902ae5a849a18c8a0ca5f76d66c86": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:481bbd6d73415d437a73eee7977ec370299acdac44b215a026652debba31783d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtirpc-1.1.4-4.el8.aarch64.rpm" + }, + "sha256:48509ce37ec06c1b15149feec4b2eb5d3a2f0453a41804c9c5d9ef5b8b320d4f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-audit-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm" + }, + "sha256:4874e739ed37bc6a5bfdb6069d4620e5f7efe01d60eb9fd2550c550167c99990": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.aarch64.rpm" + }, + "sha256:4909edde46b5b2b58d228bacafa3bab5bc5847559d591d59ecd59cdf50d36db4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-hawkey-0.48.0-2.el8.aarch64.rpm" + }, + "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm" + }, + "sha256:4a27cd4496ebdba821b3c7692eeb0c0fff28c6af69fe4fe9e4bf52511639bd6a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kpartx-0.8.4-2.el8.aarch64.rpm" + }, + "sha256:4a308727d8b5a3d4cbbbc7d9b07884ebf6a37b4b6eb9a8edab5b61f449142285": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sg3_utils-1.44-5.el8.aarch64.rpm" + }, + "sha256:4a40a1538c8a488f32476f96d2461c3b792eb0cf5acb998e397d8a9cef8e5461": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libffi-3.1-22.el8.aarch64.rpm" + }, + "sha256:4a7d4068f39dbb01d7f707f9912abfddcc065a62b66144eeb7b7e2f13cec68af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/polkit-pkla-compat-0.1-12.el8.aarch64.rpm" + }, + "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pyudev-0.21.0-7.el8.noarch.rpm" + }, + "sha256:4d8d164f8bd56b7ab6252f009b38525f39fb161c03713414e1583894a265c50a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-all-langpacks-2.28-127.el8.aarch64.rpm" + }, + "sha256:4d8edaa317fd508226bb5421ef423470f3e9153167222dee7bf8fb2346b7875b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-049-89.git20200625.el8.aarch64.rpm" + }, + "sha256:4e4923f05d0032263d570075b9b832b9fc3550cd8f82f9a6b0b9b25061726110": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/popt-1.16-14.el8.aarch64.rpm" + }, + "sha256:4e644e08ef5bd3b33357d6c1ea64e37097c3224ae324456fef022b9e5fdd2947": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm" + }, + "sha256:4efe61bac45e15b3b1bfda93bf3cfbf72d49c7f0452737d01f12f49b6e624175": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/subscription-manager-1.27.9-1.el8.aarch64.rpm" + }, + "sha256:4fe7733b93fad52a48d4b47a6dc55582f3cc41fc2074e42a9b39fc5d407df6d3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-ethtool-0.14-3.el8.aarch64.rpm" + }, + "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm" + }, + "sha256:518e5412ce19ab733f62c334da8c5545a212c4c971d513eb95590b08a14e3772": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bash-4.4.19-12.el8.aarch64.rpm" + }, + "sha256:532d46a4c0e68bd45eabc3e2ba6d570880344044e1034f5f347b37c470d0dced": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libverto-0.3.0-5.el8.aarch64.rpm" + }, + "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:53fa2fd6a138d00c697b827a77bcc25ec498b1d49bb04ef80594e81ccabc165d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgomp-8.3.1-5.1.el8.aarch64.rpm" + }, + "sha256:540fa90864b4eb0176b56e0c5e9d7bc6130985288ae297b4c38950381b08a827": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/findutils-4.6.0-20.el8.aarch64.rpm" + }, + "sha256:551a506b43e32d21bf7b6333e028733956d5ef3560837a0c84b0d3e598efa046": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/less-530-1.el8.aarch64.rpm" + }, + "sha256:571b590c6ec7a2ac73996dc7d3dd7863aecc43e5dcb1411c191218a32633952b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cronie-1.5.2-4.el8.aarch64.rpm" + }, + "sha256:5801caf2cc296b52b3b89b24eaf431fba2c130e948076aaf345988a754cca65c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libteam-1.29-5.el8.aarch64.rpm" + }, + "sha256:5896ab6e22741dc47c8c70de8c72178e7956cfba2abbda9c6b4ebbc54921b636": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-tools-libs-4.18.0-221.el8.aarch64.rpm" + }, + "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm" + }, + "sha256:5996ff948b5874f894c5ce3495652e6de552addf2331fd82193023d77994ef8f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.aarch64.rpm" + }, + "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-jsonschema-2.6.0-4.el8.noarch.rpm" + }, + "sha256:5a05f1126ed38f752af247dcdf7c958e738b935b8b6d942fd42f423768f05255": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgpg-error-1.31-1.el8.aarch64.rpm" + }, + "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-jsonpointer-1.10-11.el8.noarch.rpm" + }, + "sha256:5eddb5c1febbe6e58491f8e9ee8fc9897298b307e0357c01f49d445cf25283c9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grubby-8.40-41.el8.aarch64.rpm" + }, + "sha256:60934825531d0364649b0441321d12e8823336d54550007258d7523286d2fa2e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/man-db-2.7.6.1-17.el8.aarch64.rpm" + }, + "sha256:6149e0dc3def62605315cbbe59d63b5ca340a791b4c6d3b4d0bda6efee7572f8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sssd-nfs-idmap-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:621e96e91103f2f701e4ac3b8b8b6ef9aab4db5ab8fb3e141eb02e3f328aed79": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-utils-5.3.28-39.el8.aarch64.rpm" + }, + "sha256:62a2878605ca0415fd60adcff4c7068d855d20737498a968fabc646610ccbe5c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-ng-0.7.9-5.el8.aarch64.rpm" + }, + "sha256:634a3cbf0b334e901b6887176fa1b98246be7c4010b4c21cb6fd8fa7aa5fdf94": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/filesystem-3.8-3.el8.aarch64.rpm" + }, + "sha256:635d847cc4dec8a8e1b418adfda2bc0a9e1814ed6c2c6154a5430029d83abd24": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-efi-aa64-2.02-84.el8.aarch64.rpm" + }, + "sha256:63c64d526e9820ddc57a77c053674eeccefef33f16af536dd9b47e816db06988": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-1.26.0-0.2.el8.aarch64.rpm" + }, + "sha256:6421426a896c0bf32738af8131c37001e532f62ac1242f63ebf6248ea34533b0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/squashfs-tools-4.3-19.el8.aarch64.rpm" + }, + "sha256:64ac5cb6fd3da1610812795ce17e09648d89c87513d6284b852a3455b0831d3a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lz4-libs-1.8.3-2.el8.aarch64.rpm" + }, + "sha256:651f38873d3356ec4efb27d04658541080d11cf1ece6335a07db1ca089fa7da3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-0.23.14-5.el8_0.aarch64.rpm" + }, + "sha256:6557d001315e85ac123b1378c5aafb81428e2383debcacf3f91c55476cfc48eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpsl-0.20.2-6.el8.aarch64.rpm" + }, + "sha256:65b8d755ff01dfefa423d2f0bd6fd54cfc4c580da63510e19cf178abb6e26172": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libs-3.6.8-30.el8.aarch64.rpm" + }, + "sha256:664a883f3c7042eb91e0b66fc99c309a729011b4912e4af9397f4e25e1adae90": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/cloud-utils-growpart-0.31-1.el8.noarch.rpm" + }, + "sha256:684080ec9230dce2d32c9b00ae381a00bb950d1984ed0b0e1c55fa6d75b6b099": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpipeline-1.5.0-2.el8.aarch64.rpm" + }, + "sha256:68593fad4413255772bd08ed7f8b578332f0f53e002c8c7473d90c966a87131b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-3.6.8-30.el8.aarch64.rpm" + }, + "sha256:689577d74311a7327aab6fe412a803d72b790957e863b6b78a8621a040306919": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cryptsetup-libs-2.3.3-1.el8.aarch64.rpm" + }, + "sha256:6a6aa18217ae72a0b33e4302da927e6ded92520cbf4d48a5030d4a2f95eeb5d8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/chkconfig-1.13-2.el8.aarch64.rpm" + }, + "sha256:6ae316dfb9723d13a8d36d98d109d4a55017b568ee2070279f1bdccdc699862a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-unbound-1.7.3-14.el8.aarch64.rpm" + }, + "sha256:6b14c3aa52da9a2eae13f2229bac41060ad7421ce5249eca80f4aa53e26344ab": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pciutils-libs-3.6.4-2.el8.aarch64.rpm" + }, + "sha256:6c3ee8b53c0af9bd4958b4e48d4d55fa7c574f444fb42eead1508ad740f97088": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/prefixdevname-0.1.0-6.el8.aarch64.rpm" + }, + "sha256:6cf02dd99fda867d11fdbb28fe0a277328319aece74b864133a8774cacd2bf54": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lsscsi-0.30-1.el8.aarch64.rpm" + }, + "sha256:6d46339afc3d65beb89cbb36052e779e95ef2448a163d26db13d67715dad9cf8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-syspurpose-1.27.9-1.el8.aarch64.rpm" + }, + "sha256:6f2bfbe0f23d3b233aacb72c153ee133839353325f028321eb5ea38b0dc06c02": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libattr-2.4.48-3.el8.aarch64.rpm" + }, + "sha256:6f87f305a3e0e0faf69c2a9d4f277958ca33e85b72c6e4f77a365a5f60ced3d3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-libs-25-16.el8.aarch64.rpm" + }, + "sha256:6fbfaa1e1b1bb4e2362cf3dce0f59a94a78b457904234cbccbe6afacde311c26": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-1.02.171-3.el8.aarch64.rpm" + }, + "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hwdata-0.314-8.5.el8.noarch.rpm" + }, + "sha256:704e1dc996a17815c6dcf7029c0ddb2849d40feaab6e9b9c687af9d95fef825c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libksba-1.3.5-7.el8.aarch64.rpm" + }, + "sha256:727c08fe072ef85837e8db30574aec712cdf67a062eead3e5481ba08425b2395": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/unbound-libs-1.7.3-14.el8.aarch64.rpm" + }, + "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:74040f3c930d97f3b4cab1015eaafe922773767d8010dd10b94460ab8a28c8a2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdisk-1.0.3-6.el8.aarch64.rpm" + }, + "sha256:760d9056891a60c200984f0655aee1876b3bf890f7486306c05db8e295ae7843": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xfsprogs-5.0.0-4.el8.aarch64.rpm" + }, + "sha256:77b56d825eb31ca191254d17a4c9399e3c4fe8af42a528c2ad4424bfd865b82d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/expat-2.2.5-4.el8.aarch64.rpm" + }, + "sha256:784d385116891056b618722c933d43c5b395b92fa82e5bc797081317ec6a82ba": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-eula-8.3-0.2.el8.aarch64.rpm" + }, + "sha256:7864fbc866ae5a3e59b4f0f114b77ff52b55e76c5388a917f82a6097f02a4db7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libyaml-0.1.7-5.el8.aarch64.rpm" + }, + "sha256:796cac51b2c1092c4faad372717c6ddc37cad9757111a41e531fe0a8d6c0a9ea": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/brotli-1.0.6-2.el8.aarch64.rpm" + }, + "sha256:7c014b54f7929348f614f8f4eb7a1552b8565c0a57f3a75ff6471dc05f30cafe": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libacl-2.2.53-1.el8.aarch64.rpm" + }, + "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm" + }, + "sha256:7d3ddbaae06c7fb8d24449e11b418ee07bdd9e07f7f0af57741d220b97228557": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/curl-7.61.1-12.el8.aarch64.rpm" + }, + "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:7fc33f147b99749fdbae420ed51277cb99d9b6418b7f739fe51c7563945bc0d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hostname-3.20-6.el8.aarch64.rpm" + }, + "sha256:800c9a0d718c641ceee26c8f625b2dcd79a33963e9e7a11930678dc99582a2d0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-libs-239-36.el8.aarch64.rpm" + }, + "sha256:81d2e21dad970c08798c0df00bbda21acf165a370f9612e0d14ce69e5dd6c5c3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grep-3.1-6.el8.aarch64.rpm" + }, + "sha256:8329bf1aedce9ef3a4d7513ef98d3931ad39b84d5c3e73e99936c7f9b87931c2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dbus-1.2.4-15.el8.aarch64.rpm" + }, + "sha256:83301ca502322e0634173460bf8fa35572c36ab8cc2e6e600bf9980f845fc857": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-1.2.0-2.el8.aarch64.rpm" + }, + "sha256:83e470505f558f8cf8414a7fc8fb0d1bc4b16ed15d05ccf7e46332b04d1a0d85": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/util-linux-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:8498846918c7bc7a20553340434cfbfb0d19185adcd0ff52866c6506ab8f747d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcrypt-1.8.5-4.el8.aarch64.rpm" + }, + "sha256:84e7102978d76d80aa40c43efcc71c1e54e819195132df921a8c13cec54328da": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-5.3.28-39.el8.aarch64.rpm" + }, + "sha256:861346b2e683c09a53c9418a9ed08faf7448e066e3111482c70722cb62a6edce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/polkit-libs-0.115-11.el8.aarch64.rpm" + }, + "sha256:86ae7501bdf0149728879f488dd4c86907216cb5b021192347a5c10a55382931": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcroco-0.6.12-4.el8.aarch64.rpm" + }, + "sha256:876ffb285aaeddb2c18ae32527bd4ee202710bd8e18d5b410af22937646dcdec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxcrypt-4.1.1-4.el8.aarch64.rpm" + }, + "sha256:8ac1003d722e3d5f383c9b970bf6dfbc905007a624abadb63e520d7a93993747": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-6.1-7.20180224.el8.aarch64.rpm" + }, + "sha256:8c0d40edf059bf044314df38c84e26cfbe00bf4e687a6114eacb17251718312b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnl3-3.5.0-1.el8.aarch64.rpm" + }, + "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pycparser-2.14-14.el8.noarch.rpm" + }, + "sha256:8d5c968225f0a3b7c492fdffb57cf0e34fee77c06a64a94a3a8b52edab30eed7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/slang-2.3.2-3.el8.aarch64.rpm" + }, + "sha256:8e2c0324789f42ebb6324847249699eb499544a3e6ad67ccd74713b3c1d6ce78": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-magic-5.33-16.el8.noarch.rpm" + }, + "sha256:8e916224ddbb8a7d8cd305f11087c66df950a318e4ef64290bca1afdc1327950": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/passwd-0.80-3.el8.aarch64.rpm" + }, + "sha256:8ef2fcbe5a8d6e7d393d28838ff458336d16e006bc7d19921f460eb105b88570": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-libs-1.18-1.el8.aarch64.rpm" + }, + "sha256:8f2c073583d6d4347642139a9806174ba64848c6bd4fbc81b7e7e0d42751cc74": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/groff-base-1.22.3-18.el8.aarch64.rpm" + }, + "sha256:90405803c0159cdf0f74a26b6ce064cfd9973e59232b2923ed171a38fc5684a6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-gpg-1.13.1-3.el8.aarch64.rpm" + }, + "sha256:9138a16731ceb7fdbb8661338a5806692a7a95875894aac95069104f44bca234": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcollection-0.7.0-39.el8.aarch64.rpm" + }, + "sha256:91c58481a7e4a9b7f9e0e14844fa73047395c75df95d35afa3b0d8ef3f584491": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-common-2.28-127.el8.aarch64.rpm" + }, + "sha256:925c70a394a76004087fd6e8d94f7edab9de9efb2b81740c875698532ba124c7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-plugin-subscription-manager-1.27.9-1.el8.aarch64.rpm" + }, + "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm" + }, + "sha256:95630378635c5e89eb204b2921dbd5db2e87d949e167fcf022174a3e63b532cb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libref_array-0.1.5-39.el8.aarch64.rpm" + }, + "sha256:95de1777f7e8a734445c5d45e0b77da8b6c41a9b504582ed266d852c677a936b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libuuid-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:964b1d9563e42a176c24cf5c91616ee5cc40de3b1c92038d7fb0392113eaf159": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glib2-2.56.4-8.el8.aarch64.rpm" + }, + "sha256:986683a0edb615a5d45a9c1b0ee3d27f8032c2667cad58d24526085e41010992": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-pam-239-36.el8.aarch64.rpm" + }, + "sha256:98cf1d2d3ca85b3ec31dc56532c3b9f6fa5b3edadc8b4f4125526cdfb2b7507b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cronie-anacron-1.5.2-4.el8.aarch64.rpm" + }, + "sha256:98dd1582b8ab27085379a3a7e598a6e261c62f97a5f3689447cbf1d4af9ae46c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libs-0.180-1.el8.aarch64.rpm" + }, + "sha256:98f838a9775269a0f796151bd54d52c7ac91d4bf1365186772f243bfafbb136a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libaio-0.3.112-1.el8.aarch64.rpm" + }, + "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:9a1c6f2b18126214e9afa768bbf16b29b89ce3169ccbd4bc169000eed143dcb4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dhcp-libs-4.3.6-41.el8.aarch64.rpm" + }, + "sha256:9a22fe8cebacb37d6bc22105db763016689e9ac06bee33fc41693f60b076ff0c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpath_utils-0.2.1-39.el8.aarch64.rpm" + }, + "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm" + }, + "sha256:9a9546fcc510204dc7bcfe61d6ca63f436c01cd9b3f8451c8f07ec4f4fc2ba68": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libuser-0.62-23.el8.aarch64.rpm" + }, + "sha256:9b6fcdd19caee5fe77b9ed17adb3f11769a7109ebcf52d3cb3358d5a9eecc391": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libdnf-0.48.0-2.el8.aarch64.rpm" + }, + "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-2.9-3.el8.aarch64.rpm" + }, + "sha256:9c416279320ab29a8ef4fc32ca60beaec4c8da6054d10695cd2b37af19cd0ee9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libselinux-2.9-3.el8.aarch64.rpm" + }, + "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-babel-2.5.1-5.el8.noarch.rpm" + }, + "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-ply-3.9-8.el8.noarch.rpm" + }, + "sha256:a05f9b43292810dde4e6acd64eac2a80f047d35533d2d5e647565f75502189fa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-schedutils-0.6-6.el8.aarch64.rpm" + }, + "sha256:a07f96031fbe9507a8d6bb0e14cf0783bc615552e4cfb75131672072f5729de8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libxkbcommon-0.9.1-1.el8.aarch64.rpm" + }, + "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:a213587722f7c8a0291a56f352861ec661604051c952ebf6a428ae969af377d0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_certmap-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:a32db9e3d2321bd5c4e998f7ed6f4459d85f792a16f4fdfb8805f5936d521572": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/c-ares-1.13.0-5.el8.aarch64.rpm" + }, + "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm" + }, + "sha256:a445e982c81c7a64f6660f7f3bf6ed03dac3cd599dcb1e4bae06b8f236ea7e7f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/irqbalance-1.4.0-4.el8.aarch64.rpm" + }, + "sha256:a5c6189b8644cea4d4039375dfe2d828e08a59896e9827ac967782d225a78619": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-cryptography-2.3-3.el8.aarch64.rpm" + }, + "sha256:a6292dd846bc471b22409fc95a5e09c88bcb6176251dc5cc11f4b14a73ddda11": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-8.3-0.2.el8.aarch64.rpm" + }, + "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pysocks-1.6.8-3.el8.noarch.rpm" + }, + "sha256:a7fe54c4d43f925093face259d9fd8f28f06e9c11dcc3ad100b24288c577e4a4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/authselect-libs-1.2.1-2.el8.aarch64.rpm" + }, + "sha256:a840b8193ce9b1b72e3783b9a9bb2ec91947ba3b6f7ac973ae8e0e20a7059117": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shadow-utils-4.6-10.el8.aarch64.rpm" + }, + "sha256:a93b90699f26009debf0ac7b6759daf23afa9f3c851ccd7c98e35d9a89824dcb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sg3_utils-libs-1.44-5.el8.aarch64.rpm" + }, + "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:aa1a6a85493590efb9c0235c15d6a05e8b119f385dc13b3e3abd2315f8c4a6e0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/memstrack-0.1.8-1.el8.aarch64.rpm" + }, + "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/setup-2.12.2-6.el8.noarch.rpm" + }, + "sha256:abeb97ed3fdd82145fd51f8eeaecfca272e4d1418b17a68241e054425a327aa3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/insights-client-3.0.14-2.el8.noarch.rpm" + }, + "sha256:abfda01b6d377de999efa9c2b4870bf3ba43cd50155f036d13aae0ba4a617565": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libndp-1.7-3.el8.aarch64.rpm" + }, + "sha256:acd4674b3fbe01d6cf94eb18a81cdb00beb73bf3d4a25a28e234f31498f5c389": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-dicts-2.9.6-15.el8.aarch64.rpm" + }, + "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rootfiles-8.1-22.el8.noarch.rpm" + }, + "sha256:ad07261ff4f478be9511f7ee749bfbe8b2ba8e28696c2f561caa20e35c535134": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libutempter-1.1.6-14.el8.aarch64.rpm" + }, + "sha256:adb9e37c63a055bc106a9676c10a85fdedcb4af64ae062249732e158bc0ae9af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/checkpolicy-2.9-1.el8.aarch64.rpm" + }, + "sha256:aeda2c664e2d993e56008f68823d05ec6d7665f2bb65b5f990c2112f0a7f91cb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mokutil-0.3.0-9.el8.aarch64.rpm" + }, + "sha256:af98260ff2c263c9cefcb96d16d200941c1873cda9868b57df51b034066940fe": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-8.0p1-5.el8.aarch64.rpm" + }, + "sha256:afcbadced001b780cb7fc4c180b070acb48c2fff04783d6a4a35d08fae9928d0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdhash-0.5.0-39.el8.aarch64.rpm" + }, + "sha256:b140eb203fe889d1c75ef3b5527033cfeb7a6f0c813638a607c9f10faf52a34b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libelf-0.180-1.el8.aarch64.rpm" + }, + "sha256:b35f92dddd2cd73f7f8d8595ebb197a1c67a214ec2acf960ac673a014f2d9b90": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-server-8.0p1-5.el8.aarch64.rpm" + }, + "sha256:b386b3ec3cb96fe9178fd1d2b245eddff0bdb2742a8f18e25faef1e98c00f42f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-librepo-1.12.0-1.el8.aarch64.rpm" + }, + "sha256:b5b1f5f7a02f70db056861813ddcf181f2ebba507cd368fbe2c32f262edf7fc6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-rpm-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:b6946db91c0a0b5e39427db028815391dd1e8c7a04faf98bc1031b5490034790": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/virt-what-1.18-6.el8.aarch64.rpm" + }, + "sha256:b7955bb1ba7e944f6e5c36713db3bbc570ba0eb8de11ec6a1fa28cfc5c0029c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/freetype-2.9.1-4.el8.aarch64.rpm" + }, + "sha256:b7bc10e9947763df6e6177b3dbbe77c21f55ed60d26c4c28bfe14a98f7e06189": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-2.9.6-15.el8.aarch64.rpm" + }, + "sha256:b83b5cb8c799dea710e0fffc841abf88495a1f3d04057dd699cff2aac610d7d9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shim-aa64-15-12.aarch64.rpm" + }, + "sha256:b847207a13bec4b7fcfaaf3668d93bc5ad40a6477f976e6aeb59ab431545d0c5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-glib-0.110-2.el8.aarch64.rpm" + }, + "sha256:b90ce065d5ea98845733ff06e47d385937f6293ebddf52144c80f5fe1f296307": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/policycoreutils-2.9-9.el8.aarch64.rpm" + }, + "sha256:b93a509fc65dd88761b4f7f21d8a05f1cd22e878ac59eb7d8e1507f5a2376a1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libedit-3.1-23.20170329cvs.el8.aarch64.rpm" + }, + "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/basesystem-11-5.el8.noarch.rpm" + }, + "sha256:b984d8576520272b1011cc46b03c666cd6abc1bf74b428a8781ca58c6287a007": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/acl-2.2.53-1.el8.aarch64.rpm" + }, + "sha256:b9ceb537921c8d98f1e874c0a39cf0c6a606f469be21be151fa119e4b9c7f06a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libsemanage-2.9-3.el8.aarch64.rpm" + }, + "sha256:ba1364539f16d7c8379d7563fd0634651fa8a05b3f7098a21ba96e1f5641f132": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmodulemd-2.9.4-2.el8.aarch64.rpm" + }, + "sha256:ba66a87402ccc8515e164f597f5d254ad9513979fe3ca1ffabf63c915c0daa73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tar-1.30-5.el8.aarch64.rpm" + }, + "sha256:bae965c689b08ce42f10366e4b441504432ac353d30edb8b4b2cfc798069434f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-libs-1.12.8-11.el8.aarch64.rpm" + }, + "sha256:bc0f9bd34ac6a01dd7272b87e1b7a33045ff8c6793cac02fa639dfc9341e8215": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lua-libs-5.3.4-11.el8.aarch64.rpm" + }, + "sha256:bcd19fd35b5f8535ff5bb15db91e2339c9435908c1123d5e2272fcae15a62260": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgudev-232-4.el8.aarch64.rpm" + }, + "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-jsonpatch-1.21-2.el8.noarch.rpm" + }, + "sha256:bd03a8a056bc9d2df361688583521f5f656e83fc893b90d349b6282178f9330b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-clients-8.0p1-5.el8.aarch64.rpm" + }, + "sha256:bdb8cc675da18f659ba06252f1f2604d171373239804c3cbc6004dadded54cd3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/yum-utils-4.0.17-2.el8.noarch.rpm" + }, + "sha256:bee28477fcd36d5a877d1fe3d61aa876f62128681411718e0c3fc82b95cf8e59": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm" + }, + "sha256:bf267d9571cf568375e261d593236750f400ac536c1c818513106482ebc3fb10": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsigsegv-2.11-5.el8.aarch64.rpm" + }, + "sha256:c00024ec890b67b443e2c40a0580a1263458dc9d09f4bde578d7c045323946b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-cffi-1.11.5-5.el8.aarch64.rpm" + }, + "sha256:c0f53020ecdb8eefb21795b0acf589334e89a9ef339a84d42e61999f53c67d18": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/jansson-2.11-3.el8.aarch64.rpm" + }, + "sha256:c17544abced52ad9df8229c71a0f8c437719c4d1fccd77f2db707be18226aecb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm" + }, + "sha256:c1b5c4668331e8b05a08e7de432cbfb75f8072401bb6651a24e43f64eff8dcc4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsecret-0.18.6-1.el8.aarch64.rpm" + }, + "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm" + }, + "sha256:c22f0d40fbdaaceec711be0cecc122fac4570d126914ce3694a3d6a1178bd487": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gpgme-1.13.1-3.el8.aarch64.rpm" + }, + "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/readline-7.0-10.el8.aarch64.rpm" + }, + "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-idna-2.5-5.el8.noarch.rpm" + }, + "sha256:c321e3a0253fb2691035135b3d3740faa76b8e9c84a0378f480ff85ddd9f16bd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efibootmgr-16-1.el8.aarch64.rpm" + }, + "sha256:c3727553ea6dd925d9c760b23eb617d1cb475fab9c495543868666ad6cd3b088": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-tui-1.26.0-0.2.el8.aarch64.rpm" + }, + "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-asn1crypto-0.24.0-3.el8.noarch.rpm" + }, + "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-hwdata-2.3.6-3.el8.noarch.rpm" + }, + "sha256:c59a19d44466633bf19e18463ece1ec20cdeae962f1ea3613bd09a2ffb160318": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/numactl-libs-2.0.12-11.el8.aarch64.rpm" + }, + "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm" + }, + "sha256:c633b98b4dbf96674a69573404819c34d66eb7e19820283fc588f6b10b0e3fc8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-build-libs-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:c7a1a166d4a58fd42848d05e4dd0d8bc459fa3b585396230729978f9cffc4474": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdaemon-0.14-15.el8.aarch64.rpm" + }, + "sha256:c82ca1c0ef4b89f75e8e7edbbae4f3eeb2720a4abd56b0927928cff2d9721186": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-utils-2.9-3.el8.aarch64.rpm" + }, + "sha256:c88d1656b8001ff79175f7d3b7818681e40e54e8fec6fb8556ba8141d437fcfa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.aarch64.rpm" + }, + "sha256:c8a28b4587888435c51f6d1ce42f48b08fb0256e4029ea569e9a02adcb82c85a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsepol-2.9-1.el8.aarch64.rpm" + }, + "sha256:ca87249f90bac96902d18c11a1f8c80566fa090c6473226bdd147e07e3ed21ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/krb5-libs-1.18.2-3.el8.aarch64.rpm" + }, + "sha256:cc7e751a62f9a28b82df0bce0ecfb050364b8688ef69473f1910909e44c5eb98": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libseccomp-2.4.3-1.el8.aarch64.rpm" + }, + "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pytz-2017.2-9.el8.noarch.rpm" + }, + "sha256:ce6960fa7831611815e163864a91b70b0ab1ef0f446c2cad1eec13404822cad5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-libs-0.19.8.1-17.el8.aarch64.rpm" + }, + "sha256:ce8c92fa2bef1770f44992db24e1cb8cc850feab03a74cf0ebf741ecb0d160ea": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre2-10.32-2.el8.aarch64.rpm" + }, + "sha256:cf8fdbfcd359aac8bf55500c24e6843baafe8fef35019126c3616806b41415b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ima-evm-utils-1.1-5.el8.aarch64.rpm" + }, + "sha256:cf9a0bbaa7bd075d2af532586ee93ab92b96d9859f53a57f85cd7e0309f8fff6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/zlib-1.2.11-15.el8.aarch64.rpm" + }, + "sha256:cfa188d39884fd4ba36d27e8fb25aed9dbd26efccffbfd01a24c2c580fdb96f1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openldap-2.4.46-15.el8.aarch64.rpm" + }, + "sha256:d173b35182f28b9dd48e4a942f2a20c659bee2f9ac234b60cf8b995aa2421382": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libblkid-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:d20f4bf44fcc90509e7afca364eae0a55c8f33df2f8a69e266f5fcd4b5fa2e4b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.aarch64.rpm" + }, + "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:d2efb494bd4793fdcaaad35a66d7721df7ec53b6fc8da4fa8c8f24008533f38a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtalloc-2.3.1-2.el8.aarch64.rpm" + }, + "sha256:d3fb5a473c44cd8ae6b94d6bf3fc552553d8f4ef28eed439658ea38990ab9db5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-libs-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:d4424a9c946da1eab876298af8f772d5aab1109a1f551ac2f1cd10ee849568de": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-2.28-127.el8.aarch64.rpm" + }, + "sha256:d4467ba499fe1ddd82746ad00d7e86bea59c4827fe1ff8c05132bad1f93ddb7f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-239-36.el8.aarch64.rpm" + }, + "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-urllib3-1.24.2-4.el8.noarch.rpm" + }, + "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:d695df94220c2ef990e502123b3bd8ede8fcfb4f738346dd98d999559b01b6b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-0.3.14-4.el8.aarch64.rpm" + }, + "sha256:d6aa17908468b5e2095526664fce6627dec7a02c26625339c14b9278cc39d4a6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libfdisk-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:d6ab7c8790cd6c9a137d908d840c51c547e950d25f6ab8af3c9ad3899ff6c044": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpwquality-1.4.0-9.el8.aarch64.rpm" + }, + "sha256:d74da38b942dc95929b21c8fcf2c5d2fb4468b78ed14e7a4bcbe933998be4deb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-modules-4.18.0-221.el8.aarch64.rpm" + }, + "sha256:d82c81115472a70d60d2320e254762c76a583ad2190ad45068476c77512588af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm" + }, + "sha256:d868f3e9b48e1acc5c7674292619f1e80a2a2617aa1ab75d7cb4665495bdc654": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-subscription-manager-rhsm-1.27.9-1.el8.aarch64.rpm" + }, + "sha256:d890d028f59e2553730fad3dbea0e1a245c92c24836513fa2281194b1c90b53a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/procps-ng-3.3.15-2.el8.aarch64.rpm" + }, + "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-requests-2.20.0-2.1.el8_1.noarch.rpm" + }, + "sha256:d9a4628bd8d3e776f626be4cb5edec305c2ff894d7c5cc7e33e212545721053a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm" + }, + "sha256:da4b9bfad26d559485ade669556512acfe93ba23d204f2556bac82c09401b4e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libunistring-0.9.9-3.el8.aarch64.rpm" + }, + "sha256:da4d193d5f0caf7a196f3bd4aa1225072b522521d82fca8edecc6546b5460ac6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.aarch64.rpm" + }, + "sha256:daf36ee86ec6001770ae68bdd82409526faf4b9b1313a6b74fb54cfb98ff571e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/npth-1.5-4.el8.aarch64.rpm" + }, + "sha256:db817b5d2f9d678fd0fee30e52ed080fdb5c9dd723cd57f7d6b0133293502047": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efivar-libs-36-1.el8.aarch64.rpm" + }, + "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:dc37d12420a2593c46619e9b67a0115255a0c7334f547871ce08e329bf5d15a2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-1.12.8-11.el8.aarch64.rpm" + }, + "sha256:dcda73e0ea7b5d2710528fc6df135d435281d1f4d2be0018bb6f1858e818d599": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cpio-2.12-8.el8.aarch64.rpm" + }, + "sha256:deaa0958c9fb57773dfdf74567b658d273cea81186b913aa1473867dc07b335b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dmidecode-3.2-6.el8.aarch64.rpm" + }, + "sha256:df1f1d61216be55ab9cadc9832e613ffd2350ca8dc03e27f537f22dc0f32e171": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/snappy-1.1.7-5.el8.aarch64.rpm" + }, + "sha256:dfaf74e2116ee30d1882b3461de90d3fb6faad4468eb0678f845d105b4439a83": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bind-export-libs-9.11.20-3.el8.aarch64.rpm" + }, + "sha256:dfdec57ff520511d1d4ef9d913d90fc8d6ac98685cbc12fb568c8980f2a73f1a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libarchive-3.3.2-9.el8.aarch64.rpm" + }, + "sha256:dfea8e48e0cf3d8984237e3d5fb715c7edd9b1f8db03faaefc42a8046b45dab8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbxtool-8-5.el8.aarch64.rpm" + }, + "sha256:e08305aecd924631284ddaeae39a83cca85495389d4ddef75410a32af49f946d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fuse-libs-2.9.7-12.el8.aarch64.rpm" + }, + "sha256:e085cf8bddcf09c908d925688dae077300d2964b40bd060af252d26a963cfe50": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-common-8.30-8.el8.aarch64.rpm" + }, + "sha256:e09e950b0a0842577364565380ba40e8c4f027919dc880378b606c2dafc5693b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libmaxminddb-1.2.0-10.el8.aarch64.rpm" + }, + "sha256:e0faa8a6bc43432619a2b6a26e9f1323d30cda945580d8bc0f6c2fe742b71924": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gawk-4.2.1-1.el8.aarch64.rpm" + }, + "sha256:e160910d31a37afeea87df306264fb1f727cbca574d2c234cdca856f5311fbd6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gobject-introspection-1.56.1-1.el8.aarch64.rpm" + }, + "sha256:e1826902c98cca301a4e0876b34e6c77f1688a1fb613c265cea37e2ee40e7884": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kexec-tools-2.0.20-29.el8.aarch64.rpm" + }, + "sha256:e1bee08f1e76f8b820a59b5c228a0c1b4eaa7fc70c7d840251a04a74d517e25c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-squash-049-89.git20200625.el8.aarch64.rpm" + }, + "sha256:e2c4ac0f7abf75cbcc7a6fb35412820c267f1a8ce614f41b60d901918c4616d5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/nettle-3.4.1-2.el8.aarch64.rpm" + }, + "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/yum-4.2.23-2.el8.noarch.rpm" + }, + "sha256:e426534c59b3a35068877d324dd34d643ad7c84d2c406b2e6502ac6c2a367d39": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-5.2.4-3.el8.aarch64.rpm" + }, + "sha256:e4ec1966f9bc7cbc898fe7550600ae3e9e4f8afbcdd3f6e74afe1965247653ba": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/keyutils-libs-1.5.10-6.el8.aarch64.rpm" + }, + "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-linux-procfs-0.6.2-2.el8.noarch.rpm" + }, + "sha256:e55bf252e792f27f076101e94dfbbac97dabeea0f7893a4cb9b111a0b72d187f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libreport-filesystem-2.9.5-11.el8.aarch64.rpm" + }, + "sha256:e5f82f102f51d88aa517bbebd170795a571b7ddc3036574b92b498cc13704d98": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcom_err-1.45.6-1.el8.aarch64.rpm" + }, + "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-policycoreutils-2.9-9.el8.noarch.rpm" + }, + "sha256:e82699d15e4e6ff7825629d7c1c8a0f50a5519b6e5328472de91a0deddb9cf3d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gzip-1.9-9.el8.aarch64.rpm" + }, + "sha256:e9487db2fdce1f494ee1582787a1afc1ea4e0429189db8be0ddbb0af2676c4b6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librhsm-0.0.3-3.el8.aarch64.rpm" + }, + "sha256:eaf3c7104d3ebd0cdda3d6ce44f4c79eec0a8ce3ce71cbb0d9dfe716f58a105d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-tools-1.12.8-11.el8.aarch64.rpm" + }, + "sha256:ebcaa2d2ec8ddaa66d042a208ccee6b13735ffba04fe3f326954cd76fa4f5910": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iputils-20180629-2.el8.aarch64.rpm" + }, + "sha256:ec40be9e0b2bb03f7b057a7a9342ffbd86129d58828fb310f445bc506261eb0e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.aarch64.rpm" + }, + "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm" + }, + "sha256:ed28e1e31109e27ce1c676914364c9f1dd46b71d00cb4cf13931f0fec6cf6978": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtasn1-4.13-3.el8.aarch64.rpm" + }, + "sha256:ed8e018fb3a2ae3243b047b7f25cd7bd0b5b73abc6f254de3a7d13a6a568e4a4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtdb-1.4.3-1.el8.aarch64.rpm" + }, + "sha256:edba68c63891b1171417b8d3af5827cc45a37210d18d701c0e178870e5435031": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/net-tools-2.0-0.52.20160912git.el8.aarch64.rpm" + }, + "sha256:ee978ba9ffa58b85705df0736903e6717f13936343aa693cda376c4167a828ab": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-langpack-en-2.28-127.el8.aarch64.rpm" + }, + "sha256:eea9359070225c205cd9233c98fc3e3eaa41848148b726a4ec8414575ae3730e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rsync-3.1.3-8.el8.aarch64.rpm" + }, + "sha256:f07b1f40ebb1fbe5c24e68a38b5f768a21e2ec2254d4bd8ff61fb0bde72f64ce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.aarch64.rpm" + }, + "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm" + }, + "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm" + }, + "sha256:f237a314daeeb228f767e1521edffa9e9b15b07695ba1008b0f2b6807085b9cb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lzo-2.08-14.el8.aarch64.rpm" + }, + "sha256:f35c0da3cff05ded33c0cb4f202dbb52a5caabec8b1897d5057df83c284d62f1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsmartcols-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:f4e63e7eedc0266a575eb6107f41c5f20ca0505a0e80145c21b9741674d5c0b5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libstdc++-8.3.1-5.1.el8.aarch64.rpm" + }, + "sha256:f4f5cc3080dc150c47b27383a344937fe17a679cb7046ca76165654d4e207a0b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iproute-5.3.0-5.el8.aarch64.rpm" + }, + "sha256:f6df1feba76d87214433eee205e3b99621dcd78b485ed5f99ba2658117786b6c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/newt-0.52.20-11.el8.aarch64.rpm" + }, + "sha256:f700797810fb2bdbba5a0b31e10c361360a87bac1a282da109273194a25bf6ef": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-2.2.20-2.el8.aarch64.rpm" + }, + "sha256:f769edf78f42bae1bd183a6f4a49d74822db2b5e830147178d197be1cd67a306": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-network-049-89.git20200625.el8.aarch64.rpm" + }, + "sha256:f7ccbe0d7b4a61b5a47253f168f8efcdbf41ad0755e678f9edcd2f6a69c93c7d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-5.33-16.el8.aarch64.rpm" + }, + "sha256:f7de2bbb3653c3033d43f645ac26e91c788527c0b4d5e7238dea54c3adc6f1a1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/initscripts-10.00.8-1.el8.aarch64.rpm" + }, + "sha256:f847957437e7f24844930c4a3ff64c5f7877f083553f48eeadca3c5f5e5c728e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pigz-2.4-4.el8.aarch64.rpm" + }, + "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm" + }, + "sha256:f96bc0d82d4c6934659c23a6771515e78bf2252ed24d32c78001260ee6e36c8d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-daemon-1.12.8-11.el8.aarch64.rpm" + }, + "sha256:f99f5edde9ad4574b84264c467420c910b31f78683fbf1b63d106a7e6c9d64a3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-libs-6.1-7.20180224.el8.aarch64.rpm" + }, + "sha256:fa80a7e82e231dc77b3e44edd2cbf5b3d1657e009e59f15bbe8d50a4290b7c82": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmetalink-0.1.3-7.el8.aarch64.rpm" + }, + "sha256:fac29887224d91e8190a569b3ac5be1168034f36c9c234576ea3cefe686e46cd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdnf-0.48.0-2.el8.aarch64.rpm" + }, + "sha256:fb263177eee60c26b7acaa76cb640c3d7ab6928e73c8af80b2111a247bd61ece": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-lib-0.3.14-4.el8.aarch64.rpm" + }, + "sha256:fb56b7a416e12da0782ae8ba7396bc03a2f8844c2efcb5df3f8b9e74eb8b8059": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxml2-2.9.7-8.el8.aarch64.rpm" + }, + "sha256:fc51460213b3bf5b67f08f2695aae8d728f614adbbacb917a0825e4ebfbc3e68": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hardlink-1.3-6.el8.aarch64.rpm" + }, + "sha256:fd202f857b3c5a15b8f66f86fd515c44a47c87c028d7db766661758dc3673436": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsysfs-2.1.0-24.el8.aarch64.rpm" + }, + "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm" + }, + "sha256:fddf61e9024c41073442ccff0c9990fa004e9b183f391c4e3cf3853e5ae6062c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-0.19.8.1-17.el8.aarch64.rpm" + }, + "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-jwt-1.6.1-2.el8.noarch.rpm" + }, + "sha256:fea4eb54fe59451b76fb40b9bd15ff41f0f51bb7371f94b2f5df572ef917d037": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre-8.42-4.el8.aarch64.rpm" + }, + "sha256:ff9fc6467a4c2fd0c22c419a9cdb7a524d1c69d0c87aa09f31728bef9f692f76": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcomps-0.1.11-4.el8.aarch64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:b984d8576520272b1011cc46b03c666cd6abc1bf74b428a8781ca58c6287a007" + }, + { + "checksum": "sha256:d9a4628bd8d3e776f626be4cb5edec305c2ff894d7c5cc7e33e212545721053a" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:518e5412ce19ab733f62c334da8c5545a212c4c971d513eb95590b08a14e3772" + }, + { + "checksum": "sha256:796cac51b2c1092c4faad372717c6ddc37cad9757111a41e531fe0a8d6c0a9ea" + }, + { + "checksum": "sha256:2d84f6765b1645f867527f493b6153470602a80c75f81545bf619aa92127e4da" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:6a6aa18217ae72a0b33e4302da927e6ded92520cbf4d48a5030d4a2f95eeb5d8" + }, + { + "checksum": "sha256:15c33124ac0479d34f1f58d2bd24cc52db7089b4a8681c276a3fd0d6dfe4fc72" + }, + { + "checksum": "sha256:e085cf8bddcf09c908d925688dae077300d2964b40bd060af252d26a963cfe50" + }, + { + "checksum": "sha256:dcda73e0ea7b5d2710528fc6df135d435281d1f4d2be0018bb6f1858e818d599" + }, + { + "checksum": "sha256:b7bc10e9947763df6e6177b3dbbe77c21f55ed60d26c4c28bfe14a98f7e06189" + }, + { + "checksum": "sha256:acd4674b3fbe01d6cf94eb18a81cdb00beb73bf3d4a25a28e234f31498f5c389" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:689577d74311a7327aab6fe412a803d72b790957e863b6b78a8621a040306919" + }, + { + "checksum": "sha256:7d3ddbaae06c7fb8d24449e11b418ee07bdd9e07f7f0af57741d220b97228557" + }, + { + "checksum": "sha256:41cc2d507fdfbba939c00164a563e770d466f992cb64d3c51a79aec20b31d6d1" + }, + { + "checksum": "sha256:dc37d12420a2593c46619e9b67a0115255a0c7334f547871ce08e329bf5d15a2" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:f96bc0d82d4c6934659c23a6771515e78bf2252ed24d32c78001260ee6e36c8d" + }, + { + "checksum": "sha256:bae965c689b08ce42f10366e4b441504432ac353d30edb8b4b2cfc798069434f" + }, + { + "checksum": "sha256:eaf3c7104d3ebd0cdda3d6ce44f4c79eec0a8ce3ce71cbb0d9dfe716f58a105d" + }, + { + "checksum": "sha256:6fbfaa1e1b1bb4e2362cf3dce0f59a94a78b457904234cbccbe6afacde311c26" + }, + { + "checksum": "sha256:057b6632870b8c3c0c950a19092ef2f9749bf3d1a37ccb083bf42ca6404db066" + }, + { + "checksum": "sha256:3a684fd5f1b1d417c6c3e9d1f0d5b846138aa06450ff246425d43d4a20bd619e" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:2efbfbcce7ef24e433d3c304b6b6b022d1b1b8a972969da1adb1c3c85f9625a7" + }, + { + "checksum": "sha256:4d8edaa317fd508226bb5421ef423470f3e9153167222dee7bf8fb2346b7875b" + }, + { + "checksum": "sha256:3256e78263462d5d7ab37b696992aedd6f810431641ce8d1e1bc198c797b402b" + }, + { + "checksum": "sha256:da4d193d5f0caf7a196f3bd4aa1225072b522521d82fca8edecc6546b5460ac6" + }, + { + "checksum": "sha256:c88d1656b8001ff79175f7d3b7818681e40e54e8fec6fb8556ba8141d437fcfa" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:b140eb203fe889d1c75ef3b5527033cfeb7a6f0c813638a607c9f10faf52a34b" + }, + { + "checksum": "sha256:98dd1582b8ab27085379a3a7e598a6e261c62f97a5f3689447cbf1d4af9ae46c" + }, + { + "checksum": "sha256:77b56d825eb31ca191254d17a4c9399e3c4fe8af42a528c2ad4424bfd865b82d" + }, + { + "checksum": "sha256:f7ccbe0d7b4a61b5a47253f168f8efcdbf41ad0755e678f9edcd2f6a69c93c7d" + }, + { + "checksum": "sha256:3ee66f993ee567b2457a221ed364ae4f8dfe783a5f0e723d9169f95d12f9e696" + }, + { + "checksum": "sha256:634a3cbf0b334e901b6887176fa1b98246be7c4010b4c21cb6fd8fa7aa5fdf94" + }, + { + "checksum": "sha256:540fa90864b4eb0176b56e0c5e9d7bc6130985288ae297b4c38950381b08a827" + }, + { + "checksum": "sha256:e08305aecd924631284ddaeae39a83cca85495389d4ddef75410a32af49f946d" + }, + { + "checksum": "sha256:e0faa8a6bc43432619a2b6a26e9f1323d30cda945580d8bc0f6c2fe742b71924" + }, + { + "checksum": "sha256:3f5765cebcac288cc1b5b118acfbc2016eda7b81ad73923f6f9c21e4731eb0d9" + }, + { + "checksum": "sha256:8ef2fcbe5a8d6e7d393d28838ff458336d16e006bc7d19921f460eb105b88570" + }, + { + "checksum": "sha256:fddf61e9024c41073442ccff0c9990fa004e9b183f391c4e3cf3853e5ae6062c" + }, + { + "checksum": "sha256:ce6960fa7831611815e163864a91b70b0ab1ef0f446c2cad1eec13404822cad5" + }, + { + "checksum": "sha256:964b1d9563e42a176c24cf5c91616ee5cc40de3b1c92038d7fb0392113eaf159" + }, + { + "checksum": "sha256:d4424a9c946da1eab876298af8f772d5aab1109a1f551ac2f1cd10ee849568de" + }, + { + "checksum": "sha256:4d8d164f8bd56b7ab6252f009b38525f39fb161c03713414e1583894a265c50a" + }, + { + "checksum": "sha256:91c58481a7e4a9b7f9e0e14844fa73047395c75df95d35afa3b0d8ef3f584491" + }, + { + "checksum": "sha256:19efe6f125c00123ccc6d96e51eb61e711f3ea01f32d18cce14d3b614217c58e" + }, + { + "checksum": "sha256:f700797810fb2bdbba5a0b31e10c361360a87bac1a282da109273194a25bf6ef" + }, + { + "checksum": "sha256:0b4564ad3a799af1a4a0de33b0952f6056d942b0cfa39b73e9375bf0c05b3191" + }, + { + "checksum": "sha256:3bf230c85711b285afb968850d7e98eb6b068a06e7ca40e94203e388d8447f48" + }, + { + "checksum": "sha256:c22f0d40fbdaaceec711be0cecc122fac4570d126914ce3694a3d6a1178bd487" + }, + { + "checksum": "sha256:81d2e21dad970c08798c0df00bbda21acf165a370f9612e0d14ce69e5dd6c5c3" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:2921d3aa14a509d271ca35256903c142c30f088f7dc889a4c4e15b26316ef5c0" + }, + { + "checksum": "sha256:126d980678e5b687c775cf857b4013306f1a761353370258a0f04d92a3553f92" + }, + { + "checksum": "sha256:5eddb5c1febbe6e58491f8e9ee8fc9897298b307e0357c01f49d445cf25283c9" + }, + { + "checksum": "sha256:e82699d15e4e6ff7825629d7c1c8a0f50a5519b6e5328472de91a0deddb9cf3d" + }, + { + "checksum": "sha256:fc51460213b3bf5b67f08f2695aae8d728f614adbbacb917a0825e4ebfbc3e68" + }, + { + "checksum": "sha256:cf8fdbfcd359aac8bf55500c24e6843baafe8fef35019126c3616806b41415b3" + }, + { + "checksum": "sha256:3f7e5e72ab9e18dbca936b40734c91520242a49a9e98a2f2589f397faa6ad8e8" + }, + { + "checksum": "sha256:0fd7dd5b060e7533144ad7a3cae2453ad6f87650010f328879b10c7c4cba0c04" + }, + { + "checksum": "sha256:36aece7b7a65785985bf0b98701514f12735a87517b8578a3eb3710f82ba4765" + }, + { + "checksum": "sha256:1143ac623a74d7feaaaf293c18d942d243248f6356628f87216670c10d11687b" + }, + { + "checksum": "sha256:10ac3bf7565725a55b0aef56f65befd0d320219fc83adfab6e564c19f8c44bd6" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:e4ec1966f9bc7cbc898fe7550600ae3e9e4f8afbcdd3f6e74afe1965247653ba" + }, + { + "checksum": "sha256:1091a799d34a42d2e42ac462b4f979a55d17513eca5a00bad9bdba56cca83357" + }, + { + "checksum": "sha256:6f87f305a3e0e0faf69c2a9d4f277958ca33e85b72c6e4f77a365a5f60ced3d3" + }, + { + "checksum": "sha256:4a27cd4496ebdba821b3c7692eeb0c0fff28c6af69fe4fe9e4bf52511639bd6a" + }, + { + "checksum": "sha256:ca87249f90bac96902d18c11a1f8c80566fa090c6473226bdd147e07e3ed21ec" + }, + { + "checksum": "sha256:7c014b54f7929348f614f8f4eb7a1552b8565c0a57f3a75ff6471dc05f30cafe" + }, + { + "checksum": "sha256:98f838a9775269a0f796151bd54d52c7ac91d4bf1365186772f243bfafbb136a" + }, + { + "checksum": "sha256:dfdec57ff520511d1d4ef9d913d90fc8d6ac98685cbc12fb568c8980f2a73f1a" + }, + { + "checksum": "sha256:0f1a02850c102e2a186787504f965c0c10d6432b9f600c18bc2f520e55f04a8c" + }, + { + "checksum": "sha256:6f2bfbe0f23d3b233aacb72c153ee133839353325f028321eb5ea38b0dc06c02" + }, + { + "checksum": "sha256:d173b35182f28b9dd48e4a942f2a20c659bee2f9ac234b60cf8b995aa2421382" + }, + { + "checksum": "sha256:2cddadff38ccef2364a7e40af0e1d9b3bf9c06869c15ceeb655f3cfa431c2083" + }, + { + "checksum": "sha256:62a2878605ca0415fd60adcff4c7068d855d20737498a968fabc646610ccbe5c" + }, + { + "checksum": "sha256:e5f82f102f51d88aa517bbebd170795a571b7ddc3036574b92b498cc13704d98" + }, + { + "checksum": "sha256:ff9fc6467a4c2fd0c22c419a9cdb7a524d1c69d0c87aa09f31728bef9f692f76" + }, + { + "checksum": "sha256:86ae7501bdf0149728879f488dd4c86907216cb5b021192347a5c10a55382931" + }, + { + "checksum": "sha256:2809ad51c6eb6c9a54d64cccc2cd948f6fd4207f32b4493b3f4a9bd0886c894b" + }, + { + "checksum": "sha256:84e7102978d76d80aa40c43efcc71c1e54e819195132df921a8c13cec54328da" + }, + { + "checksum": "sha256:621e96e91103f2f701e4ac3b8b8b6ef9aab4db5ab8fb3e141eb02e3f328aed79" + }, + { + "checksum": "sha256:fac29887224d91e8190a569b3ac5be1168034f36c9c234576ea3cefe686e46cd" + }, + { + "checksum": "sha256:058822931f4c34c18675116c1b02b718de4044c1019acb0d5f97417f00a30ba7" + }, + { + "checksum": "sha256:d6aa17908468b5e2095526664fce6627dec7a02c26625339c14b9278cc39d4a6" + }, + { + "checksum": "sha256:4a40a1538c8a488f32476f96d2461c3b792eb0cf5acb998e397d8a9cef8e5461" + }, + { + "checksum": "sha256:3b607f0dbedecb25239e22c1f553c8d70db9d2206a877fa07567fa1a49e233d7" + }, + { + "checksum": "sha256:8498846918c7bc7a20553340434cfbfb0d19185adcd0ff52866c6506ab8f747d" + }, + { + "checksum": "sha256:53fa2fd6a138d00c697b827a77bcc25ec498b1d49bb04ef80594e81ccabc165d" + }, + { + "checksum": "sha256:5a05f1126ed38f752af247dcdf7c958e738b935b8b6d942fd42f423768f05255" + }, + { + "checksum": "sha256:2dc8e2f52451d1a11b16bbb389a24c58b61a1ba804ee777f9d06dbe4e1fcf6e5" + }, + { + "checksum": "sha256:83301ca502322e0634173460bf8fa35572c36ab8cc2e6e600bf9980f845fc857" + }, + { + "checksum": "sha256:f07b1f40ebb1fbe5c24e68a38b5f768a21e2ec2254d4bd8ff61fb0bde72f64ce" + }, + { + "checksum": "sha256:704e1dc996a17815c6dcf7029c0ddb2849d40feaab6e9b9c687af9d95fef825c" + }, + { + "checksum": "sha256:fa80a7e82e231dc77b3e44edd2cbf5b3d1657e009e59f15bbe8d50a4290b7c82" + }, + { + "checksum": "sha256:ba1364539f16d7c8379d7563fd0634651fa8a05b3f7098a21ba96e1f5641f132" + }, + { + "checksum": "sha256:26b14d8f226962ce712bbccfb245843759e835a24a139eacae86d680043a85a7" + }, + { + "checksum": "sha256:4874e739ed37bc6a5bfdb6069d4620e5f7efe01d60eb9fd2550c550167c99990" + }, + { + "checksum": "sha256:471663fca7e3f609834368d69d8f1f469cfc0d3f3e95dc2b79381722d0368edc" + }, + { + "checksum": "sha256:435a2be84a2b38372965dbd60ffed0ed38a616b8100859787a8bb3b19d9fc4d9" + }, + { + "checksum": "sha256:6557d001315e85ac123b1378c5aafb81428e2383debcacf3f91c55476cfc48eb" + }, + { + "checksum": "sha256:d6ab7c8790cd6c9a137d908d840c51c547e950d25f6ab8af3c9ad3899ff6c044" + }, + { + "checksum": "sha256:2d74e0ab14393921c6160fda8dd533b58c0348acdf5ee5c306ffc64221700de2" + }, + { + "checksum": "sha256:e55bf252e792f27f076101e94dfbbac97dabeea0f7893a4cb9b111a0b72d187f" + }, + { + "checksum": "sha256:e9487db2fdce1f494ee1582787a1afc1ea4e0429189db8be0ddbb0af2676c4b6" + }, + { + "checksum": "sha256:cc7e751a62f9a28b82df0bce0ecfb050364b8688ef69473f1910909e44c5eb98" + }, + { + "checksum": "sha256:c1b5c4668331e8b05a08e7de432cbfb75f8072401bb6651a24e43f64eff8dcc4" + }, + { + "checksum": "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc" + }, + { + "checksum": "sha256:c82ca1c0ef4b89f75e8e7edbbae4f3eeb2720a4abd56b0927928cff2d9721186" + }, + { + "checksum": "sha256:140146ebcbadd9b0f2aa5c2fcde5c93888f2d84ce61a2a4cf148ef435d1ba410" + }, + { + "checksum": "sha256:c8a28b4587888435c51f6d1ce42f48b08fb0256e4029ea569e9a02adcb82c85a" + }, + { + "checksum": "sha256:bf267d9571cf568375e261d593236750f400ac536c1c818513106482ebc3fb10" + }, + { + "checksum": "sha256:f35c0da3cff05ded33c0cb4f202dbb52a5caabec8b1897d5057df83c284d62f1" + }, + { + "checksum": "sha256:2397506a63455e543b201938f605e687de5590d9a06282824e2f6bfdf5e0f149" + }, + { + "checksum": "sha256:268d9232f0853037100432e9363c659cf99927e03f759fd4884643b560710cd6" + }, + { + "checksum": "sha256:3ee6a4f61935c2f0698ad2c4834a5864920a1e48d55c7800da7c382249895e39" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:f4e63e7eedc0266a575eb6107f41c5f20ca0505a0e80145c21b9741674d5c0b5" + }, + { + "checksum": "sha256:ed28e1e31109e27ce1c676914364c9f1dd46b71d00cb4cf13931f0fec6cf6978" + }, + { + "checksum": "sha256:481bbd6d73415d437a73eee7977ec370299acdac44b215a026652debba31783d" + }, + { + "checksum": "sha256:da4b9bfad26d559485ade669556512acfe93ba23d204f2556bac82c09401b4e7" + }, + { + "checksum": "sha256:01e486a3be67325e9692e909f5c6534137ee6a6df185ba2c09d4d50fe6c738f6" + }, + { + "checksum": "sha256:ad07261ff4f478be9511f7ee749bfbe8b2ba8e28696c2f561caa20e35c535134" + }, + { + "checksum": "sha256:95de1777f7e8a734445c5d45e0b77da8b6c41a9b504582ed266d852c677a936b" + }, + { + "checksum": "sha256:532d46a4c0e68bd45eabc3e2ba6d570880344044e1034f5f347b37c470d0dced" + }, + { + "checksum": "sha256:876ffb285aaeddb2c18ae32527bd4ee202710bd8e18d5b410af22937646dcdec" + }, + { + "checksum": "sha256:fb56b7a416e12da0782ae8ba7396bc03a2f8844c2efcb5df3f8b9e74eb8b8059" + }, + { + "checksum": "sha256:7864fbc866ae5a3e59b4f0f114b77ff52b55e76c5388a917f82a6097f02a4db7" + }, + { + "checksum": "sha256:19d1de27d2f62b4a55735233807f70a1e8ff7551fed97ee8650dbd09c1ef50ea" + }, + { + "checksum": "sha256:bc0f9bd34ac6a01dd7272b87e1b7a33045ff8c6793cac02fa639dfc9341e8215" + }, + { + "checksum": "sha256:64ac5cb6fd3da1610812795ce17e09648d89c87513d6284b852a3455b0831d3a" + }, + { + "checksum": "sha256:320ced09e242f09047f4fab0a7f66aba6de2e42583f6a2e164eadcc1ffd0b915" + }, + { + "checksum": "sha256:8ac1003d722e3d5f383c9b970bf6dfbc905007a624abadb63e520d7a93993747" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:f99f5edde9ad4574b84264c467420c910b31f78683fbf1b63d106a7e6c9d64a3" + }, + { + "checksum": "sha256:e2c4ac0f7abf75cbcc7a6fb35412820c267f1a8ce614f41b60d901918c4616d5" + }, + { + "checksum": "sha256:daf36ee86ec6001770ae68bdd82409526faf4b9b1313a6b74fb54cfb98ff571e" + }, + { + "checksum": "sha256:cfa188d39884fd4ba36d27e8fb25aed9dbd26efccffbfd01a24c2c580fdb96f1" + }, + { + "checksum": "sha256:3ef63ecbebf844bcf682c9482dc0ddd158c955b0f066b62eb9575bb9a9642db5" + }, + { + "checksum": "sha256:448d3ff44e7f32f3b33e891180e248dc1bcd4d410f68015a8b0c30dc7c385aca" + }, + { + "checksum": "sha256:290c83afcd2b0a2b17aab95cf72a85da5f8b9f9a9862857c919a0f43e3fce70e" + }, + { + "checksum": "sha256:43ab42c8a58267936a89da99e37d3b9fc56489e958060f600ba047445ca44ee3" + }, + { + "checksum": "sha256:651f38873d3356ec4efb27d04658541080d11cf1ece6335a07db1ca089fa7da3" + }, + { + "checksum": "sha256:ec40be9e0b2bb03f7b057a7a9342ffbd86129d58828fb310f445bc506261eb0e" + }, + { + "checksum": "sha256:04c031a07bde4360484a0180e832036d3ac45a95c4839e54d7a02423df5485ef" + }, + { + "checksum": "sha256:fea4eb54fe59451b76fb40b9bd15ff41f0f51bb7371f94b2f5df572ef917d037" + }, + { + "checksum": "sha256:ce8c92fa2bef1770f44992db24e1cb8cc850feab03a74cf0ebf741ecb0d160ea" + }, + { + "checksum": "sha256:f847957437e7f24844930c4a3ff64c5f7877f083553f48eeadca3c5f5e5c728e" + }, + { + "checksum": "sha256:68593fad4413255772bd08ed7f8b578332f0f53e002c8c7473d90c966a87131b" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:b90ce065d5ea98845733ff06e47d385937f6293ebddf52144c80f5fe1f296307" + }, + { + "checksum": "sha256:4e4923f05d0032263d570075b9b832b9fc3550cd8f82f9a6b0b9b25061726110" + }, + { + "checksum": "sha256:d890d028f59e2553730fad3dbea0e1a245c92c24836513fa2281194b1c90b53a" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:90405803c0159cdf0f74a26b6ce064cfd9973e59232b2923ed171a38fc5684a6" + }, + { + "checksum": "sha256:4909edde46b5b2b58d228bacafa3bab5bc5847559d591d59ecd59cdf50d36db4" + }, + { + "checksum": "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63" + }, + { + "checksum": "sha256:9b6fcdd19caee5fe77b9ed17adb3f11769a7109ebcf52d3cb3358d5a9eecc391" + }, + { + "checksum": "sha256:65b8d755ff01dfefa423d2f0bd6fd54cfc4c580da63510e19cf178abb6e26172" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:b5b1f5f7a02f70db056861813ddcf181f2ebba507cd368fbe2c32f262edf7fc6" + }, + { + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e" + }, + { + "checksum": "sha256:a6292dd846bc471b22409fc95a5e09c88bcb6176251dc5cc11f4b14a73ddda11" + }, + { + "checksum": "sha256:784d385116891056b618722c933d43c5b395b92fa82e5bc797081317ec6a82ba" + }, + { + "checksum": "sha256:47b483c0f556c56f0b1f468603c57834864902ae5a849a18c8a0ca5f76d66c86" + }, + { + "checksum": "sha256:c633b98b4dbf96674a69573404819c34d66eb7e19820283fc588f6b10b0e3fc8" + }, + { + "checksum": "sha256:d3fb5a473c44cd8ae6b94d6bf3fc552553d8f4ef28eed439658ea38990ab9db5" + }, + { + "checksum": "sha256:0a885c6dc6abd969b828bf2fd7063ee884e6d058eaf405b02f3dd6efb6c66bac" + }, + { + "checksum": "sha256:0bb7024125ca67119612e55a92da13c989e0306ddd7de7e655a679c963939ef7" + }, + { + "checksum": "sha256:125c92f23d87b905c21e9f7669f0ec6e41428ab63c8c13f63db8980f292797d5" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:a840b8193ce9b1b72e3783b9a9bb2ec91947ba3b6f7ac973ae8e0e20a7059117" + }, + { + "checksum": "sha256:19cd894b4154d1a8521c6884cfd2a6eaf1f498b7dec5cc31408f8535b9098f2a" + }, + { + "checksum": "sha256:207e6396488c1db18fb7b1f2b9952f48c2625f042c5f6a901d41974ce376b0e0" + }, + { + "checksum": "sha256:d4467ba499fe1ddd82746ad00d7e86bea59c4827fe1ff8c05132bad1f93ddb7f" + }, + { + "checksum": "sha256:800c9a0d718c641ceee26c8f625b2dcd79a33963e9e7a11930678dc99582a2d0" + }, + { + "checksum": "sha256:986683a0edb615a5d45a9c1b0ee3d27f8032c2667cad58d24526085e41010992" + }, + { + "checksum": "sha256:3fe7c10c144c8fffc00d144317a2bf8029bd9d048432bccfc352dfc6f0995680" + }, + { + "checksum": "sha256:ba66a87402ccc8515e164f597f5d254ad9513979fe3ca1ffabf63c915c0daa73" + }, + { + "checksum": "sha256:d695df94220c2ef990e502123b3bd8ede8fcfb4f738346dd98d999559b01b6b3" + }, + { + "checksum": "sha256:fb263177eee60c26b7acaa76cb640c3d7ab6928e73c8af80b2111a247bd61ece" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:83e470505f558f8cf8414a7fc8fb0d1bc4b16ed15d05ccf7e46332b04d1a0d85" + }, + { + "checksum": "sha256:0f32d23a6b2b15603d710b0317238ef8dde3de61eda96713e21d86c9fc7a98ed" + }, + { + "checksum": "sha256:760d9056891a60c200984f0655aee1876b3bf890f7486306c05db8e295ae7843" + }, + { + "checksum": "sha256:e426534c59b3a35068877d324dd34d643ad7c84d2c406b2e6502ac6c2a367d39" + }, + { + "checksum": "sha256:094eff70081085f87a7ac0dedafa851ad8ac8e03f9f328636df4a0f8301d0e87" + }, + { + "checksum": "sha256:cf9a0bbaa7bd075d2af532586ee93ab92b96d9859f53a57f85cd7e0309f8fff6" + }, + { + "checksum": "sha256:a07f96031fbe9507a8d6bb0e14cf0783bc615552e4cfb75131672072f5729de8" + }, + { + "checksum": "sha256:aa1a6a85493590efb9c0235c15d6a05e8b119f385dc13b3e3abd2315f8c4a6e0" + }, + { + "checksum": "sha256:22c0e44318e36e04ad1eb4632dcf25db991f481f9a543387d372e1f2ad92561f" + }, + { + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "checksum": "sha256:6ae316dfb9723d13a8d36d98d109d4a55017b568ee2070279f1bdccdc699862a" + }, + { + "checksum": "sha256:5996ff948b5874f894c5ce3495652e6de552addf2331fd82193023d77994ef8f" + }, + { + "checksum": "sha256:d20f4bf44fcc90509e7afca364eae0a55c8f33df2f8a69e266f5fcd4b5fa2e4b" + }, + { + "checksum": "sha256:727c08fe072ef85837e8db30574aec712cdf67a062eead3e5481ba08425b2395" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ] + }, + "runner": "org.osbuild.rhel82" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:63c64d526e9820ddc57a77c053674eeccefef33f16af536dd9b47e816db06988" + }, + { + "checksum": "sha256:0229afd544d1a59bfe26c095ad338bac7e0d2f10aab88bd895f3766e8f54fff3" + }, + { + "checksum": "sha256:1f8013c5bd1c4914a11363d56d67fa70871f5f42c64f57862c791871fb9bb05c" + }, + { + "checksum": "sha256:c3727553ea6dd925d9c760b23eb617d1cb475fab9c495543868666ad6cd3b088" + }, + { + "checksum": "sha256:b984d8576520272b1011cc46b03c666cd6abc1bf74b428a8781ca58c6287a007" + }, + { + "checksum": "sha256:d82c81115472a70d60d2320e254762c76a583ad2190ad45068476c77512588af" + }, + { + "checksum": "sha256:d9a4628bd8d3e776f626be4cb5edec305c2ff894d7c5cc7e33e212545721053a" + }, + { + "checksum": "sha256:0e30a92139490232a4b891f4f802db74f41002475f8d203c6adffe1fb9d2b1ab" + }, + { + "checksum": "sha256:a7fe54c4d43f925093face259d9fd8f28f06e9c11dcc3ad100b24288c577e4a4" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:518e5412ce19ab733f62c334da8c5545a212c4c971d513eb95590b08a14e3772" + }, + { + "checksum": "sha256:dfaf74e2116ee30d1882b3461de90d3fb6faad4468eb0678f845d105b4439a83" + }, + { + "checksum": "sha256:796cac51b2c1092c4faad372717c6ddc37cad9757111a41e531fe0a8d6c0a9ea" + }, + { + "checksum": "sha256:2d84f6765b1645f867527f493b6153470602a80c75f81545bf619aa92127e4da" + }, + { + "checksum": "sha256:a32db9e3d2321bd5c4e998f7ed6f4459d85f792a16f4fdfb8805f5936d521572" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:adb9e37c63a055bc106a9676c10a85fdedcb4af64ae062249732e158bc0ae9af" + }, + { + "checksum": "sha256:6a6aa18217ae72a0b33e4302da927e6ded92520cbf4d48a5030d4a2f95eeb5d8" + }, + { + "checksum": "sha256:13f55a1fea88c4720dc704fa19573325ddde8c1c60ed71e96f98a9e5a6508d44" + }, + { + "checksum": "sha256:15c33124ac0479d34f1f58d2bd24cc52db7089b4a8681c276a3fd0d6dfe4fc72" + }, + { + "checksum": "sha256:e085cf8bddcf09c908d925688dae077300d2964b40bd060af252d26a963cfe50" + }, + { + "checksum": "sha256:dcda73e0ea7b5d2710528fc6df135d435281d1f4d2be0018bb6f1858e818d599" + }, + { + "checksum": "sha256:b7bc10e9947763df6e6177b3dbbe77c21f55ed60d26c4c28bfe14a98f7e06189" + }, + { + "checksum": "sha256:acd4674b3fbe01d6cf94eb18a81cdb00beb73bf3d4a25a28e234f31498f5c389" + }, + { + "checksum": "sha256:571b590c6ec7a2ac73996dc7d3dd7863aecc43e5dcb1411c191218a32633952b" + }, + { + "checksum": "sha256:98cf1d2d3ca85b3ec31dc56532c3b9f6fa5b3edadc8b4f4125526cdfb2b7507b" + }, + { + "checksum": "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:689577d74311a7327aab6fe412a803d72b790957e863b6b78a8621a040306919" + }, + { + "checksum": "sha256:7d3ddbaae06c7fb8d24449e11b418ee07bdd9e07f7f0af57741d220b97228557" + }, + { + "checksum": "sha256:41cc2d507fdfbba939c00164a563e770d466f992cb64d3c51a79aec20b31d6d1" + }, + { + "checksum": "sha256:dc37d12420a2593c46619e9b67a0115255a0c7334f547871ce08e329bf5d15a2" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:f96bc0d82d4c6934659c23a6771515e78bf2252ed24d32c78001260ee6e36c8d" + }, + { + "checksum": "sha256:b847207a13bec4b7fcfaaf3668d93bc5ad40a6477f976e6aeb59ab431545d0c5" + }, + { + "checksum": "sha256:bae965c689b08ce42f10366e4b441504432ac353d30edb8b4b2cfc798069434f" + }, + { + "checksum": "sha256:eaf3c7104d3ebd0cdda3d6ce44f4c79eec0a8ce3ce71cbb0d9dfe716f58a105d" + }, + { + "checksum": "sha256:dfea8e48e0cf3d8984237e3d5fb715c7edd9b1f8db03faaefc42a8046b45dab8" + }, + { + "checksum": "sha256:6fbfaa1e1b1bb4e2362cf3dce0f59a94a78b457904234cbccbe6afacde311c26" + }, + { + "checksum": "sha256:057b6632870b8c3c0c950a19092ef2f9749bf3d1a37ccb083bf42ca6404db066" + }, + { + "checksum": "sha256:157044e6cf5cc52b64b9a5d621fdb5b0846a527daa428382330e68bdb47789eb" + }, + { + "checksum": "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2" + }, + { + "checksum": "sha256:9a1c6f2b18126214e9afa768bbf16b29b89ce3169ccbd4bc169000eed143dcb4" + }, + { + "checksum": "sha256:3a684fd5f1b1d417c6c3e9d1f0d5b846138aa06450ff246425d43d4a20bd619e" + }, + { + "checksum": "sha256:deaa0958c9fb57773dfdf74567b658d273cea81186b913aa1473867dc07b335b" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:925c70a394a76004087fd6e8d94f7edab9de9efb2b81740c875698532ba124c7" + }, + { + "checksum": "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c" + }, + { + "checksum": "sha256:4d8edaa317fd508226bb5421ef423470f3e9153167222dee7bf8fb2346b7875b" + }, + { + "checksum": "sha256:2e26672ae726ba833187292dcc6c1673a07e26d974fef2f71a83407989eea8a1" + }, + { + "checksum": "sha256:f769edf78f42bae1bd183a6f4a49d74822db2b5e830147178d197be1cd67a306" + }, + { + "checksum": "sha256:e1bee08f1e76f8b820a59b5c228a0c1b4eaa7fc70c7d840251a04a74d517e25c" + }, + { + "checksum": "sha256:3256e78263462d5d7ab37b696992aedd6f810431641ce8d1e1bc198c797b402b" + }, + { + "checksum": "sha256:da4d193d5f0caf7a196f3bd4aa1225072b522521d82fca8edecc6546b5460ac6" + }, + { + "checksum": "sha256:17501958f52d2db1417cab8dd5ca261bf447fd93eb62b80173f9875c3012b700" + }, + { + "checksum": "sha256:c321e3a0253fb2691035135b3d3740faa76b8e9c84a0378f480ff85ddd9f16bd" + }, + { + "checksum": "sha256:1b8c037a6c67959b52894f38444ed1133356c65cec2eed3acf37c45cf8609e63" + }, + { + "checksum": "sha256:db817b5d2f9d678fd0fee30e52ed080fdb5c9dd723cd57f7d6b0133293502047" + }, + { + "checksum": "sha256:c88d1656b8001ff79175f7d3b7818681e40e54e8fec6fb8556ba8141d437fcfa" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:b140eb203fe889d1c75ef3b5527033cfeb7a6f0c813638a607c9f10faf52a34b" + }, + { + "checksum": "sha256:98dd1582b8ab27085379a3a7e598a6e261c62f97a5f3689447cbf1d4af9ae46c" + }, + { + "checksum": "sha256:13f1d396ba9e0fe3f8d5ef43693b5c1178207e594d2b830e94d3f8e02e33767f" + }, + { + "checksum": "sha256:77b56d825eb31ca191254d17a4c9399e3c4fe8af42a528c2ad4424bfd865b82d" + }, + { + "checksum": "sha256:f7ccbe0d7b4a61b5a47253f168f8efcdbf41ad0755e678f9edcd2f6a69c93c7d" + }, + { + "checksum": "sha256:3ee66f993ee567b2457a221ed364ae4f8dfe783a5f0e723d9169f95d12f9e696" + }, + { + "checksum": "sha256:634a3cbf0b334e901b6887176fa1b98246be7c4010b4c21cb6fd8fa7aa5fdf94" + }, + { + "checksum": "sha256:540fa90864b4eb0176b56e0c5e9d7bc6130985288ae297b4c38950381b08a827" + }, + { + "checksum": "sha256:b7955bb1ba7e944f6e5c36713db3bbc570ba0eb8de11ec6a1fa28cfc5c0029c8" + }, + { + "checksum": "sha256:e08305aecd924631284ddaeae39a83cca85495389d4ddef75410a32af49f946d" + }, + { + "checksum": "sha256:e0faa8a6bc43432619a2b6a26e9f1323d30cda945580d8bc0f6c2fe742b71924" + }, + { + "checksum": "sha256:3f5765cebcac288cc1b5b118acfbc2016eda7b81ad73923f6f9c21e4731eb0d9" + }, + { + "checksum": "sha256:8ef2fcbe5a8d6e7d393d28838ff458336d16e006bc7d19921f460eb105b88570" + }, + { + "checksum": "sha256:74040f3c930d97f3b4cab1015eaafe922773767d8010dd10b94460ab8a28c8a2" + }, + { + "checksum": "sha256:fddf61e9024c41073442ccff0c9990fa004e9b183f391c4e3cf3853e5ae6062c" + }, + { + "checksum": "sha256:ce6960fa7831611815e163864a91b70b0ab1ef0f446c2cad1eec13404822cad5" + }, + { + "checksum": "sha256:964b1d9563e42a176c24cf5c91616ee5cc40de3b1c92038d7fb0392113eaf159" + }, + { + "checksum": "sha256:d4424a9c946da1eab876298af8f772d5aab1109a1f551ac2f1cd10ee849568de" + }, + { + "checksum": "sha256:91c58481a7e4a9b7f9e0e14844fa73047395c75df95d35afa3b0d8ef3f584491" + }, + { + "checksum": "sha256:ee978ba9ffa58b85705df0736903e6717f13936343aa693cda376c4167a828ab" + }, + { + "checksum": "sha256:19efe6f125c00123ccc6d96e51eb61e711f3ea01f32d18cce14d3b614217c58e" + }, + { + "checksum": "sha256:f700797810fb2bdbba5a0b31e10c361360a87bac1a282da109273194a25bf6ef" + }, + { + "checksum": "sha256:0b4564ad3a799af1a4a0de33b0952f6056d942b0cfa39b73e9375bf0c05b3191" + }, + { + "checksum": "sha256:3bf230c85711b285afb968850d7e98eb6b068a06e7ca40e94203e388d8447f48" + }, + { + "checksum": "sha256:e160910d31a37afeea87df306264fb1f727cbca574d2c234cdca856f5311fbd6" + }, + { + "checksum": "sha256:c22f0d40fbdaaceec711be0cecc122fac4570d126914ce3694a3d6a1178bd487" + }, + { + "checksum": "sha256:81d2e21dad970c08798c0df00bbda21acf165a370f9612e0d14ce69e5dd6c5c3" + }, + { + "checksum": "sha256:8f2c073583d6d4347642139a9806174ba64848c6bd4fbc81b7e7e0d42751cc74" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:635d847cc4dec8a8e1b418adfda2bc0a9e1814ed6c2c6154a5430029d83abd24" + }, + { + "checksum": "sha256:2921d3aa14a509d271ca35256903c142c30f088f7dc889a4c4e15b26316ef5c0" + }, + { + "checksum": "sha256:4633c2b5a93723e1cad477b81f9ccefafed342f8c4474ec305058f99c713229d" + }, + { + "checksum": "sha256:126d980678e5b687c775cf857b4013306f1a761353370258a0f04d92a3553f92" + }, + { + "checksum": "sha256:5eddb5c1febbe6e58491f8e9ee8fc9897298b307e0357c01f49d445cf25283c9" + }, + { + "checksum": "sha256:e82699d15e4e6ff7825629d7c1c8a0f50a5519b6e5328472de91a0deddb9cf3d" + }, + { + "checksum": "sha256:fc51460213b3bf5b67f08f2695aae8d728f614adbbacb917a0825e4ebfbc3e68" + }, + { + "checksum": "sha256:4059e9cccbde0401f9af4dea1160a07af8760adbc3e1d964e5c8ac87307eff81" + }, + { + "checksum": "sha256:7fc33f147b99749fdbae420ed51277cb99d9b6418b7f739fe51c7563945bc0d7" + }, + { + "checksum": "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f" + }, + { + "checksum": "sha256:cf8fdbfcd359aac8bf55500c24e6843baafe8fef35019126c3616806b41415b3" + }, + { + "checksum": "sha256:3f7e5e72ab9e18dbca936b40734c91520242a49a9e98a2f2589f397faa6ad8e8" + }, + { + "checksum": "sha256:f7de2bbb3653c3033d43f645ac26e91c788527c0b4d5e7238dea54c3adc6f1a1" + }, + { + "checksum": "sha256:21685a7b79484a6d684efd86af6fb23dc13aaadc534cc4c4ae3edc0ceb84051b" + }, + { + "checksum": "sha256:f4f5cc3080dc150c47b27383a344937fe17a679cb7046ca76165654d4e207a0b" + }, + { + "checksum": "sha256:0fd7dd5b060e7533144ad7a3cae2453ad6f87650010f328879b10c7c4cba0c04" + }, + { + "checksum": "sha256:ebcaa2d2ec8ddaa66d042a208ccee6b13735ffba04fe3f326954cd76fa4f5910" + }, + { + "checksum": "sha256:a445e982c81c7a64f6660f7f3bf6ed03dac3cd599dcb1e4bae06b8f236ea7e7f" + }, + { + "checksum": "sha256:c0f53020ecdb8eefb21795b0acf589334e89a9ef339a84d42e61999f53c67d18" + }, + { + "checksum": "sha256:36aece7b7a65785985bf0b98701514f12735a87517b8578a3eb3710f82ba4765" + }, + { + "checksum": "sha256:1143ac623a74d7feaaaf293c18d942d243248f6356628f87216670c10d11687b" + }, + { + "checksum": "sha256:10ac3bf7565725a55b0aef56f65befd0d320219fc83adfab6e564c19f8c44bd6" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:0136940a3e28a159e7347b0bc7d1dbbc0339c64f431349e355f75abe31cbf21c" + }, + { + "checksum": "sha256:0d61e2dfcaed066e4ef74e4baddab9cdec24602aeb7a98306481f38cb5f449eb" + }, + { + "checksum": "sha256:d74da38b942dc95929b21c8fcf2c5d2fb4468b78ed14e7a4bcbe933998be4deb" + }, + { + "checksum": "sha256:3e40a3103fbf71c83773beac7373d0e790631cb3c918d8b20a883c8e65e70136" + }, + { + "checksum": "sha256:5896ab6e22741dc47c8c70de8c72178e7956cfba2abbda9c6b4ebbc54921b636" + }, + { + "checksum": "sha256:e1826902c98cca301a4e0876b34e6c77f1688a1fb613c265cea37e2ee40e7884" + }, + { + "checksum": "sha256:e4ec1966f9bc7cbc898fe7550600ae3e9e4f8afbcdd3f6e74afe1965247653ba" + }, + { + "checksum": "sha256:1091a799d34a42d2e42ac462b4f979a55d17513eca5a00bad9bdba56cca83357" + }, + { + "checksum": "sha256:6f87f305a3e0e0faf69c2a9d4f277958ca33e85b72c6e4f77a365a5f60ced3d3" + }, + { + "checksum": "sha256:4a27cd4496ebdba821b3c7692eeb0c0fff28c6af69fe4fe9e4bf52511639bd6a" + }, + { + "checksum": "sha256:ca87249f90bac96902d18c11a1f8c80566fa090c6473226bdd147e07e3ed21ec" + }, + { + "checksum": "sha256:551a506b43e32d21bf7b6333e028733956d5ef3560837a0c84b0d3e598efa046" + }, + { + "checksum": "sha256:7c014b54f7929348f614f8f4eb7a1552b8565c0a57f3a75ff6471dc05f30cafe" + }, + { + "checksum": "sha256:dfdec57ff520511d1d4ef9d913d90fc8d6ac98685cbc12fb568c8980f2a73f1a" + }, + { + "checksum": "sha256:0f1a02850c102e2a186787504f965c0c10d6432b9f600c18bc2f520e55f04a8c" + }, + { + "checksum": "sha256:6f2bfbe0f23d3b233aacb72c153ee133839353325f028321eb5ea38b0dc06c02" + }, + { + "checksum": "sha256:030eef043bf4cfdffc0a672ca2c1499281fbcb78a81a98a9e932ba0b7c9ebb6b" + }, + { + "checksum": "sha256:d173b35182f28b9dd48e4a942f2a20c659bee2f9ac234b60cf8b995aa2421382" + }, + { + "checksum": "sha256:2cddadff38ccef2364a7e40af0e1d9b3bf9c06869c15ceeb655f3cfa431c2083" + }, + { + "checksum": "sha256:62a2878605ca0415fd60adcff4c7068d855d20737498a968fabc646610ccbe5c" + }, + { + "checksum": "sha256:9138a16731ceb7fdbb8661338a5806692a7a95875894aac95069104f44bca234" + }, + { + "checksum": "sha256:e5f82f102f51d88aa517bbebd170795a571b7ddc3036574b92b498cc13704d98" + }, + { + "checksum": "sha256:ff9fc6467a4c2fd0c22c419a9cdb7a524d1c69d0c87aa09f31728bef9f692f76" + }, + { + "checksum": "sha256:86ae7501bdf0149728879f488dd4c86907216cb5b021192347a5c10a55382931" + }, + { + "checksum": "sha256:2809ad51c6eb6c9a54d64cccc2cd948f6fd4207f32b4493b3f4a9bd0886c894b" + }, + { + "checksum": "sha256:c7a1a166d4a58fd42848d05e4dd0d8bc459fa3b585396230729978f9cffc4474" + }, + { + "checksum": "sha256:84e7102978d76d80aa40c43efcc71c1e54e819195132df921a8c13cec54328da" + }, + { + "checksum": "sha256:621e96e91103f2f701e4ac3b8b8b6ef9aab4db5ab8fb3e141eb02e3f328aed79" + }, + { + "checksum": "sha256:afcbadced001b780cb7fc4c180b070acb48c2fff04783d6a4a35d08fae9928d0" + }, + { + "checksum": "sha256:fac29887224d91e8190a569b3ac5be1168034f36c9c234576ea3cefe686e46cd" + }, + { + "checksum": "sha256:b93a509fc65dd88761b4f7f21d8a05f1cd22e878ac59eb7d8e1507f5a2376a1e" + }, + { + "checksum": "sha256:058822931f4c34c18675116c1b02b718de4044c1019acb0d5f97417f00a30ba7" + }, + { + "checksum": "sha256:d6aa17908468b5e2095526664fce6627dec7a02c26625339c14b9278cc39d4a6" + }, + { + "checksum": "sha256:4a40a1538c8a488f32476f96d2461c3b792eb0cf5acb998e397d8a9cef8e5461" + }, + { + "checksum": "sha256:3b607f0dbedecb25239e22c1f553c8d70db9d2206a877fa07567fa1a49e233d7" + }, + { + "checksum": "sha256:8498846918c7bc7a20553340434cfbfb0d19185adcd0ff52866c6506ab8f747d" + }, + { + "checksum": "sha256:53fa2fd6a138d00c697b827a77bcc25ec498b1d49bb04ef80594e81ccabc165d" + }, + { + "checksum": "sha256:5a05f1126ed38f752af247dcdf7c958e738b935b8b6d942fd42f423768f05255" + }, + { + "checksum": "sha256:bcd19fd35b5f8535ff5bb15db91e2339c9435908c1123d5e2272fcae15a62260" + }, + { + "checksum": "sha256:2dc8e2f52451d1a11b16bbb389a24c58b61a1ba804ee777f9d06dbe4e1fcf6e5" + }, + { + "checksum": "sha256:09f390f3bf4dac907dfbc58b714d6c3de1ee7755a0ca5661b2f7c0a7dfbcfcff" + }, + { + "checksum": "sha256:83301ca502322e0634173460bf8fa35572c36ab8cc2e6e600bf9980f845fc857" + }, + { + "checksum": "sha256:f07b1f40ebb1fbe5c24e68a38b5f768a21e2ec2254d4bd8ff61fb0bde72f64ce" + }, + { + "checksum": "sha256:704e1dc996a17815c6dcf7029c0ddb2849d40feaab6e9b9c687af9d95fef825c" + }, + { + "checksum": "sha256:439c408eb3f33e9d8bea308afda0b32fadf7910f7b064c9821499332672a60cf" + }, + { + "checksum": "sha256:fa80a7e82e231dc77b3e44edd2cbf5b3d1657e009e59f15bbe8d50a4290b7c82" + }, + { + "checksum": "sha256:0f6d940ccddd815da01182de1e7b7e2d12c493125285ff7ee902843beefdec16" + }, + { + "checksum": "sha256:ba1364539f16d7c8379d7563fd0634651fa8a05b3f7098a21ba96e1f5641f132" + }, + { + "checksum": "sha256:26b14d8f226962ce712bbccfb245843759e835a24a139eacae86d680043a85a7" + }, + { + "checksum": "sha256:abfda01b6d377de999efa9c2b4870bf3ba43cd50155f036d13aae0ba4a617565" + }, + { + "checksum": "sha256:26e7368e961b374cefb947dab3a98387a3da15a86331a0d99d7b0e68ef246626" + }, + { + "checksum": "sha256:4874e739ed37bc6a5bfdb6069d4620e5f7efe01d60eb9fd2550c550167c99990" + }, + { + "checksum": "sha256:8c0d40edf059bf044314df38c84e26cfbe00bf4e687a6114eacb17251718312b" + }, + { + "checksum": "sha256:091c7cf9a81bc55f9d813c40904e1b7b4f8889df3584d0978e0f6770f01042e9" + }, + { + "checksum": "sha256:471663fca7e3f609834368d69d8f1f469cfc0d3f3e95dc2b79381722d0368edc" + }, + { + "checksum": "sha256:9a22fe8cebacb37d6bc22105db763016689e9ac06bee33fc41693f60b076ff0c" + }, + { + "checksum": "sha256:435a2be84a2b38372965dbd60ffed0ed38a616b8100859787a8bb3b19d9fc4d9" + }, + { + "checksum": "sha256:684080ec9230dce2d32c9b00ae381a00bb950d1984ed0b0e1c55fa6d75b6b099" + }, + { + "checksum": "sha256:1fbb9fed42dff3f9dbc9e4fd929281408f77506423424759c2ac57b76afc3cdb" + }, + { + "checksum": "sha256:6557d001315e85ac123b1378c5aafb81428e2383debcacf3f91c55476cfc48eb" + }, + { + "checksum": "sha256:d6ab7c8790cd6c9a137d908d840c51c547e950d25f6ab8af3c9ad3899ff6c044" + }, + { + "checksum": "sha256:95630378635c5e89eb204b2921dbd5db2e87d949e167fcf022174a3e63b532cb" + }, + { + "checksum": "sha256:2d74e0ab14393921c6160fda8dd533b58c0348acdf5ee5c306ffc64221700de2" + }, + { + "checksum": "sha256:e55bf252e792f27f076101e94dfbbac97dabeea0f7893a4cb9b111a0b72d187f" + }, + { + "checksum": "sha256:e9487db2fdce1f494ee1582787a1afc1ea4e0429189db8be0ddbb0af2676c4b6" + }, + { + "checksum": "sha256:cc7e751a62f9a28b82df0bce0ecfb050364b8688ef69473f1910909e44c5eb98" + }, + { + "checksum": "sha256:c1b5c4668331e8b05a08e7de432cbfb75f8072401bb6651a24e43f64eff8dcc4" + }, + { + "checksum": "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc" + }, + { + "checksum": "sha256:c82ca1c0ef4b89f75e8e7edbbae4f3eeb2720a4abd56b0927928cff2d9721186" + }, + { + "checksum": "sha256:140146ebcbadd9b0f2aa5c2fcde5c93888f2d84ce61a2a4cf148ef435d1ba410" + }, + { + "checksum": "sha256:c8a28b4587888435c51f6d1ce42f48b08fb0256e4029ea569e9a02adcb82c85a" + }, + { + "checksum": "sha256:bf267d9571cf568375e261d593236750f400ac536c1c818513106482ebc3fb10" + }, + { + "checksum": "sha256:f35c0da3cff05ded33c0cb4f202dbb52a5caabec8b1897d5057df83c284d62f1" + }, + { + "checksum": "sha256:2397506a63455e543b201938f605e687de5590d9a06282824e2f6bfdf5e0f149" + }, + { + "checksum": "sha256:268d9232f0853037100432e9363c659cf99927e03f759fd4884643b560710cd6" + }, + { + "checksum": "sha256:3ee6a4f61935c2f0698ad2c4834a5864920a1e48d55c7800da7c382249895e39" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:0f2c07acd21a998f0a4b2a569ebfd143b889d6a5105541b2393dab96cd027a10" + }, + { + "checksum": "sha256:a213587722f7c8a0291a56f352861ec661604051c952ebf6a428ae969af377d0" + }, + { + "checksum": "sha256:2180d7f1748a5049763d5626b8e14b2c7442e5491a63094a79dded66bcc5c7b0" + }, + { + "checksum": "sha256:1657e36d9213739cfef8bacc8876153692f5a5b4d87dd5dde86ad182dd63ca1b" + }, + { + "checksum": "sha256:0ac8999f5ebca6b808973d0db5038a835daa2358af1007e9cb972b0e96eae217" + }, + { + "checksum": "sha256:f4e63e7eedc0266a575eb6107f41c5f20ca0505a0e80145c21b9741674d5c0b5" + }, + { + "checksum": "sha256:fd202f857b3c5a15b8f66f86fd515c44a47c87c028d7db766661758dc3673436" + }, + { + "checksum": "sha256:d2efb494bd4793fdcaaad35a66d7721df7ec53b6fc8da4fa8c8f24008533f38a" + }, + { + "checksum": "sha256:ed28e1e31109e27ce1c676914364c9f1dd46b71d00cb4cf13931f0fec6cf6978" + }, + { + "checksum": "sha256:ed8e018fb3a2ae3243b047b7f25cd7bd0b5b73abc6f254de3a7d13a6a568e4a4" + }, + { + "checksum": "sha256:5801caf2cc296b52b3b89b24eaf431fba2c130e948076aaf345988a754cca65c" + }, + { + "checksum": "sha256:1eff42ff409079d679c7777483d476f3261a2881b456b6280e81f7903a0cd499" + }, + { + "checksum": "sha256:481bbd6d73415d437a73eee7977ec370299acdac44b215a026652debba31783d" + }, + { + "checksum": "sha256:da4b9bfad26d559485ade669556512acfe93ba23d204f2556bac82c09401b4e7" + }, + { + "checksum": "sha256:01e486a3be67325e9692e909f5c6534137ee6a6df185ba2c09d4d50fe6c738f6" + }, + { + "checksum": "sha256:9a9546fcc510204dc7bcfe61d6ca63f436c01cd9b3f8451c8f07ec4f4fc2ba68" + }, + { + "checksum": "sha256:ad07261ff4f478be9511f7ee749bfbe8b2ba8e28696c2f561caa20e35c535134" + }, + { + "checksum": "sha256:95de1777f7e8a734445c5d45e0b77da8b6c41a9b504582ed266d852c677a936b" + }, + { + "checksum": "sha256:532d46a4c0e68bd45eabc3e2ba6d570880344044e1034f5f347b37c470d0dced" + }, + { + "checksum": "sha256:876ffb285aaeddb2c18ae32527bd4ee202710bd8e18d5b410af22937646dcdec" + }, + { + "checksum": "sha256:fb56b7a416e12da0782ae8ba7396bc03a2f8844c2efcb5df3f8b9e74eb8b8059" + }, + { + "checksum": "sha256:7864fbc866ae5a3e59b4f0f114b77ff52b55e76c5388a917f82a6097f02a4db7" + }, + { + "checksum": "sha256:19d1de27d2f62b4a55735233807f70a1e8ff7551fed97ee8650dbd09c1ef50ea" + }, + { + "checksum": "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9" + }, + { + "checksum": "sha256:0cbb121302cc38ac16f8f9bd5ea8bd3ce3e2121f6c25c985b66bd29a532f2f7c" + }, + { + "checksum": "sha256:01d5881b441b015ac394e66fb27dbc5cb11befc8080973208806257ecee2d12d" + }, + { + "checksum": "sha256:6cf02dd99fda867d11fdbb28fe0a277328319aece74b864133a8774cacd2bf54" + }, + { + "checksum": "sha256:bc0f9bd34ac6a01dd7272b87e1b7a33045ff8c6793cac02fa639dfc9341e8215" + }, + { + "checksum": "sha256:64ac5cb6fd3da1610812795ce17e09648d89c87513d6284b852a3455b0831d3a" + }, + { + "checksum": "sha256:f237a314daeeb228f767e1521edffa9e9b15b07695ba1008b0f2b6807085b9cb" + }, + { + "checksum": "sha256:60934825531d0364649b0441321d12e8823336d54550007258d7523286d2fa2e" + }, + { + "checksum": "sha256:aeda2c664e2d993e56008f68823d05ec6d7665f2bb65b5f990c2112f0a7f91cb" + }, + { + "checksum": "sha256:10a83db8ac5065869be834bf6ec61185eded982f885def5979948736e5c3ab95" + }, + { + "checksum": "sha256:320ced09e242f09047f4fab0a7f66aba6de2e42583f6a2e164eadcc1ffd0b915" + }, + { + "checksum": "sha256:8ac1003d722e3d5f383c9b970bf6dfbc905007a624abadb63e520d7a93993747" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:f99f5edde9ad4574b84264c467420c910b31f78683fbf1b63d106a7e6c9d64a3" + }, + { + "checksum": "sha256:edba68c63891b1171417b8d3af5827cc45a37210d18d701c0e178870e5435031" + }, + { + "checksum": "sha256:e2c4ac0f7abf75cbcc7a6fb35412820c267f1a8ce614f41b60d901918c4616d5" + }, + { + "checksum": "sha256:f6df1feba76d87214433eee205e3b99621dcd78b485ed5f99ba2658117786b6c" + }, + { + "checksum": "sha256:daf36ee86ec6001770ae68bdd82409526faf4b9b1313a6b74fb54cfb98ff571e" + }, + { + "checksum": "sha256:c59a19d44466633bf19e18463ece1ec20cdeae962f1ea3613bd09a2ffb160318" + }, + { + "checksum": "sha256:cfa188d39884fd4ba36d27e8fb25aed9dbd26efccffbfd01a24c2c580fdb96f1" + }, + { + "checksum": "sha256:af98260ff2c263c9cefcb96d16d200941c1873cda9868b57df51b034066940fe" + }, + { + "checksum": "sha256:bd03a8a056bc9d2df361688583521f5f656e83fc893b90d349b6282178f9330b" + }, + { + "checksum": "sha256:b35f92dddd2cd73f7f8d8595ebb197a1c67a214ec2acf960ac673a014f2d9b90" + }, + { + "checksum": "sha256:3ef63ecbebf844bcf682c9482dc0ddd158c955b0f066b62eb9575bb9a9642db5" + }, + { + "checksum": "sha256:448d3ff44e7f32f3b33e891180e248dc1bcd4d410f68015a8b0c30dc7c385aca" + }, + { + "checksum": "sha256:290c83afcd2b0a2b17aab95cf72a85da5f8b9f9a9862857c919a0f43e3fce70e" + }, + { + "checksum": "sha256:43ab42c8a58267936a89da99e37d3b9fc56489e958060f600ba047445ca44ee3" + }, + { + "checksum": "sha256:651f38873d3356ec4efb27d04658541080d11cf1ece6335a07db1ca089fa7da3" + }, + { + "checksum": "sha256:ec40be9e0b2bb03f7b057a7a9342ffbd86129d58828fb310f445bc506261eb0e" + }, + { + "checksum": "sha256:04c031a07bde4360484a0180e832036d3ac45a95c4839e54d7a02423df5485ef" + }, + { + "checksum": "sha256:2b6d1fbf6f54f06c168862e19e03aa0ce32c299fb3f7e4cd1bf4aa9df4b4d995" + }, + { + "checksum": "sha256:8e916224ddbb8a7d8cd305f11087c66df950a318e4ef64290bca1afdc1327950" + }, + { + "checksum": "sha256:0ac96870f86e4a275b6d7be6a6045383ff3071653b7e897538f713ba905edb42" + }, + { + "checksum": "sha256:6b14c3aa52da9a2eae13f2229bac41060ad7421ce5249eca80f4aa53e26344ab" + }, + { + "checksum": "sha256:fea4eb54fe59451b76fb40b9bd15ff41f0f51bb7371f94b2f5df572ef917d037" + }, + { + "checksum": "sha256:ce8c92fa2bef1770f44992db24e1cb8cc850feab03a74cf0ebf741ecb0d160ea" + }, + { + "checksum": "sha256:f847957437e7f24844930c4a3ff64c5f7877f083553f48eeadca3c5f5e5c728e" + }, + { + "checksum": "sha256:68593fad4413255772bd08ed7f8b578332f0f53e002c8c7473d90c966a87131b" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:b90ce065d5ea98845733ff06e47d385937f6293ebddf52144c80f5fe1f296307" + }, + { + "checksum": "sha256:3f8039ed081aa3f628e947656af825b4541ded3547675098eabb0f177eca45e7" + }, + { + "checksum": "sha256:861346b2e683c09a53c9418a9ed08faf7448e066e3111482c70722cb62a6edce" + }, + { + "checksum": "sha256:4a7d4068f39dbb01d7f707f9912abfddcc065a62b66144eeb7b7e2f13cec68af" + }, + { + "checksum": "sha256:4e4923f05d0032263d570075b9b832b9fc3550cd8f82f9a6b0b9b25061726110" + }, + { + "checksum": "sha256:6c3ee8b53c0af9bd4958b4e48d4d55fa7c574f444fb42eead1508ad740f97088" + }, + { + "checksum": "sha256:d890d028f59e2553730fad3dbea0e1a245c92c24836513fa2281194b1c90b53a" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34" + }, + { + "checksum": "sha256:48509ce37ec06c1b15149feec4b2eb5d3a2f0453a41804c9c5d9ef5b8b320d4f" + }, + { + "checksum": "sha256:c00024ec890b67b443e2c40a0580a1263458dc9d09f4bde578d7c045323946b1" + }, + { + "checksum": "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786" + }, + { + "checksum": "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367" + }, + { + "checksum": "sha256:a5c6189b8644cea4d4039375dfe2d828e08a59896e9827ac967782d225a78619" + }, + { + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "checksum": "sha256:8329bf1aedce9ef3a4d7513ef98d3931ad39b84d5c3e73e99936c7f9b87931c2" + }, + { + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87" + }, + { + "checksum": "sha256:4fe7733b93fad52a48d4b47a6dc55582f3cc41fc2074e42a9b39fc5d407df6d3" + }, + { + "checksum": "sha256:31043a7324411dad6b84f6504a9e9cb7ece9f576acf091be522e484c8b82f469" + }, + { + "checksum": "sha256:90405803c0159cdf0f74a26b6ce064cfd9973e59232b2923ed171a38fc5684a6" + }, + { + "checksum": "sha256:4909edde46b5b2b58d228bacafa3bab5bc5847559d591d59ecd59cdf50d36db4" + }, + { + "checksum": "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20" + }, + { + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "checksum": "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c" + }, + { + "checksum": "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63" + }, + { + "checksum": "sha256:9b6fcdd19caee5fe77b9ed17adb3f11769a7109ebcf52d3cb3358d5a9eecc391" + }, + { + "checksum": "sha256:b386b3ec3cb96fe9178fd1d2b245eddff0bdb2742a8f18e25faef1e98c00f42f" + }, + { + "checksum": "sha256:65b8d755ff01dfefa423d2f0bd6fd54cfc4c580da63510e19cf178abb6e26172" + }, + { + "checksum": "sha256:9c416279320ab29a8ef4fc32ca60beaec4c8da6054d10695cd2b37af19cd0ee9" + }, + { + "checksum": "sha256:b9ceb537921c8d98f1e874c0a39cf0c6a606f469be21be151fa119e4b9c7f06a" + }, + { + "checksum": "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f" + }, + { + "checksum": "sha256:8e2c0324789f42ebb6324847249699eb499544a3e6ad67ccd74713b3c1d6ce78" + }, + { + "checksum": "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6" + }, + { + "checksum": "sha256:3c096d861c04f97c89dcf335d66a169bca3d371d9589e547c50f18b4180a9e6f" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9" + }, + { + "checksum": "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42" + }, + { + "checksum": "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf" + }, + { + "checksum": "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280" + }, + { + "checksum": "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde" + }, + { + "checksum": "sha256:0265d8b987f411738f3b53bd1f84386955704122e20ece4eb232a0df89ff62f0" + }, + { + "checksum": "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a" + }, + { + "checksum": "sha256:b5b1f5f7a02f70db056861813ddcf181f2ebba507cd368fbe2c32f262edf7fc6" + }, + { + "checksum": "sha256:a05f9b43292810dde4e6acd64eac2a80f047d35533d2d5e647565f75502189fa" + }, + { + "checksum": "sha256:342d7cd5f427c0d9c02336bc4f189225b3b57c5899f5d26b61b351fc37f99489" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "checksum": "sha256:d868f3e9b48e1acc5c7674292619f1e80a2a2617aa1ab75d7cb4665495bdc654" + }, + { + "checksum": "sha256:6d46339afc3d65beb89cbb36052e779e95ef2448a163d26db13d67715dad9cf8" + }, + { + "checksum": "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53" + }, + { + "checksum": "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e" + }, + { + "checksum": "sha256:a6292dd846bc471b22409fc95a5e09c88bcb6176251dc5cc11f4b14a73ddda11" + }, + { + "checksum": "sha256:784d385116891056b618722c933d43c5b395b92fa82e5bc797081317ec6a82ba" + }, + { + "checksum": "sha256:13471e37bb0089a322183fc9e7a53948f0b203b54277630e75606a835268ad5d" + }, + { + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "checksum": "sha256:47b483c0f556c56f0b1f468603c57834864902ae5a849a18c8a0ca5f76d66c86" + }, + { + "checksum": "sha256:c633b98b4dbf96674a69573404819c34d66eb7e19820283fc588f6b10b0e3fc8" + }, + { + "checksum": "sha256:d3fb5a473c44cd8ae6b94d6bf3fc552553d8f4ef28eed439658ea38990ab9db5" + }, + { + "checksum": "sha256:0a885c6dc6abd969b828bf2fd7063ee884e6d058eaf405b02f3dd6efb6c66bac" + }, + { + "checksum": "sha256:0bb7024125ca67119612e55a92da13c989e0306ddd7de7e655a679c963939ef7" + }, + { + "checksum": "sha256:eea9359070225c205cd9233c98fc3e3eaa41848148b726a4ec8414575ae3730e" + }, + { + "checksum": "sha256:125c92f23d87b905c21e9f7669f0ec6e41428ab63c8c13f63db8980f292797d5" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:4a308727d8b5a3d4cbbbc7d9b07884ebf6a37b4b6eb9a8edab5b61f449142285" + }, + { + "checksum": "sha256:a93b90699f26009debf0ac7b6759daf23afa9f3c851ccd7c98e35d9a89824dcb" + }, + { + "checksum": "sha256:a840b8193ce9b1b72e3783b9a9bb2ec91947ba3b6f7ac973ae8e0e20a7059117" + }, + { + "checksum": "sha256:19cd894b4154d1a8521c6884cfd2a6eaf1f498b7dec5cc31408f8535b9098f2a" + }, + { + "checksum": "sha256:b83b5cb8c799dea710e0fffc841abf88495a1f3d04057dd699cff2aac610d7d9" + }, + { + "checksum": "sha256:8d5c968225f0a3b7c492fdffb57cf0e34fee77c06a64a94a3a8b52edab30eed7" + }, + { + "checksum": "sha256:df1f1d61216be55ab9cadc9832e613ffd2350ca8dc03e27f537f22dc0f32e171" + }, + { + "checksum": "sha256:207e6396488c1db18fb7b1f2b9952f48c2625f042c5f6a901d41974ce376b0e0" + }, + { + "checksum": "sha256:6421426a896c0bf32738af8131c37001e532f62ac1242f63ebf6248ea34533b0" + }, + { + "checksum": "sha256:2bbb8eebf42b0f55d735c0f84e2521c339febc7036f2e94332ff013d7406b80a" + }, + { + "checksum": "sha256:428af99d7ff753fc26a13130115c4dcbbac030776a299583d00c69e8ec6a13ca" + }, + { + "checksum": "sha256:2cfc9f7d8286002d753d12aa9669522222466c5e1e3f10ed81c8d4d23a3e203c" + }, + { + "checksum": "sha256:6149e0dc3def62605315cbbe59d63b5ca340a791b4c6d3b4d0bda6efee7572f8" + }, + { + "checksum": "sha256:4efe61bac45e15b3b1bfda93bf3cfbf72d49c7f0452737d01f12f49b6e624175" + }, + { + "checksum": "sha256:2df37064ec55f10e06dc0c05647a296b8ca7867251fe44130206052e58d39bda" + }, + { + "checksum": "sha256:432ef41fd5f9ad2b9a797ed105f6e729dcaf19c17df9c1478802af04e898e305" + }, + { + "checksum": "sha256:d4467ba499fe1ddd82746ad00d7e86bea59c4827fe1ff8c05132bad1f93ddb7f" + }, + { + "checksum": "sha256:800c9a0d718c641ceee26c8f625b2dcd79a33963e9e7a11930678dc99582a2d0" + }, + { + "checksum": "sha256:986683a0edb615a5d45a9c1b0ee3d27f8032c2667cad58d24526085e41010992" + }, + { + "checksum": "sha256:3fe7c10c144c8fffc00d144317a2bf8029bd9d048432bccfc352dfc6f0995680" + }, + { + "checksum": "sha256:ba66a87402ccc8515e164f597f5d254ad9513979fe3ca1ffabf63c915c0daa73" + }, + { + "checksum": "sha256:32c9ff3e0278dbd7022ad76629146ece3fffdc58af14e1eaf97e7052d610daa2" + }, + { + "checksum": "sha256:d695df94220c2ef990e502123b3bd8ede8fcfb4f738346dd98d999559b01b6b3" + }, + { + "checksum": "sha256:fb263177eee60c26b7acaa76cb640c3d7ab6928e73c8af80b2111a247bd61ece" + }, + { + "checksum": "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:1bc21785bc6f66d6fcc29cd62f2cdd3584f3f8ea6321db4c27251b192f468433" + }, + { + "checksum": "sha256:83e470505f558f8cf8414a7fc8fb0d1bc4b16ed15d05ccf7e46332b04d1a0d85" + }, + { + "checksum": "sha256:1956304761f23c6661b831d33a3539b82384636db4113cccd19321b36a3a8415" + }, + { + "checksum": "sha256:b6946db91c0a0b5e39427db028815391dd1e8c7a04faf98bc1031b5490034790" + }, + { + "checksum": "sha256:0f32d23a6b2b15603d710b0317238ef8dde3de61eda96713e21d86c9fc7a98ed" + }, + { + "checksum": "sha256:760d9056891a60c200984f0655aee1876b3bf890f7486306c05db8e295ae7843" + }, + { + "checksum": "sha256:e426534c59b3a35068877d324dd34d643ad7c84d2c406b2e6502ac6c2a367d39" + }, + { + "checksum": "sha256:094eff70081085f87a7ac0dedafa851ad8ac8e03f9f328636df4a0f8301d0e87" + }, + { + "checksum": "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4" + }, + { + "checksum": "sha256:bdb8cc675da18f659ba06252f1f2604d171373239804c3cbc6004dadded54cd3" + }, + { + "checksum": "sha256:cf9a0bbaa7bd075d2af532586ee93ab92b96d9859f53a57f85cd7e0309f8fff6" + }, + { + "checksum": "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2" + }, + { + "checksum": "sha256:664a883f3c7042eb91e0b66fc99c309a729011b4912e4af9397f4e25e1adae90" + }, + { + "checksum": "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b" + }, + { + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "checksum": "sha256:abeb97ed3fdd82145fd51f8eeaecfca272e4d1418b17a68241e054425a327aa3" + }, + { + "checksum": "sha256:38affe91361bf56b84490d97c7e3f815965cf8d2bbb222c6c045af4bf2dff736" + }, + { + "checksum": "sha256:0c9b5e526b6fe5384447db444a2657cb4b1766b646255f89c49c749d388bdc58" + }, + { + "checksum": "sha256:2769c1df985e8fea8760d7ca8908eac166a64262c9643c7b0f6a82db570a68f5" + }, + { + "checksum": "sha256:e09e950b0a0842577364565380ba40e8c4f027919dc880378b606c2dafc5693b" + }, + { + "checksum": "sha256:a07f96031fbe9507a8d6bb0e14cf0783bc615552e4cfb75131672072f5729de8" + }, + { + "checksum": "sha256:aa1a6a85493590efb9c0235c15d6a05e8b119f385dc13b3e3abd2315f8c4a6e0" + }, + { + "checksum": "sha256:22c0e44318e36e04ad1eb4632dcf25db991f481f9a543387d372e1f2ad92561f" + }, + { + "checksum": "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28" + }, + { + "checksum": "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43" + }, + { + "checksum": "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362" + }, + { + "checksum": "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64" + }, + { + "checksum": "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835" + }, + { + "checksum": "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf" + }, + { + "checksum": "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b" + }, + { + "checksum": "sha256:0aeef4b59dae77f6bd7f557e62efb6621491c04c27287860f581d35cd9be7a19" + }, + { + "checksum": "sha256:3d24b1cc90de184aa66cd58a1071888b6de8d34eb8155d6ab6a5ac777281adf5" + }, + { + "checksum": "sha256:047e04a10f26da24deb076a88c676fcaecd2f68aaa1a5adc7bc46791145c74c4" + }, + { + "checksum": "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55" + }, + { + "checksum": "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21" + }, + { + "checksum": "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414" + }, + { + "checksum": "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca" + }, + { + "checksum": "sha256:4e644e08ef5bd3b33357d6c1ea64e37097c3224ae324456fef022b9e5fdd2947" + }, + { + "checksum": "sha256:11aae64c2458371a884514b954f58896c5ba7fb751ade0351c476e29991da25b" + }, + { + "checksum": "sha256:bee28477fcd36d5a877d1fe3d61aa876f62128681411718e0c3fc82b95cf8e59" + }, + { + "checksum": "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a" + }, + { + "checksum": "sha256:6ae316dfb9723d13a8d36d98d109d4a55017b568ee2070279f1bdccdc699862a" + }, + { + "checksum": "sha256:c17544abced52ad9df8229c71a0f8c437719c4d1fccd77f2db707be18226aecb" + }, + { + "checksum": "sha256:28d4282a27a17db514ff30d8c865cb8a306d1c412f9e13c2e617a23912f07dde" + }, + { + "checksum": "sha256:1e8b20ca3658abc9b7e2fe27d18eeae2f660779f33b39ca1fa2588363af250e5" + }, + { + "checksum": "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42" + }, + { + "checksum": "sha256:27ed4654a9c4dfb8417c54cc1a6060c51bd3f1dd16c4ba4bd24dfeba57c5ede1" + }, + { + "checksum": "sha256:0a016d034c490f07425c402c260de595603a136bf7146dbc8ed90a661a60fbc1" + }, + { + "checksum": "sha256:727c08fe072ef85837e8db30574aec712cdf67a062eead3e5481ba08425b2395" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "vfs_type": "xfs", + "path": "/", + "options": "defaults" + }, + { + "uuid": "46BB-8120", + "vfs_type": "vfat", + "path": "/boot/efi", + "options": "umask=0077,shortname=winnt", + "passno": 2 + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "kernel_opts": "ro console=ttyS0,115200n8 console=tty0 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295 crashkernel=auto", + "uefi": { + "vendor": "redhat" + } + } + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "raw", + "filename": "image.raw", + "size": 6442450944, + "ptuuid": "8DFDFF87-C96E-EA48-A3A6-9408F1F6B1EF", + "pttype": "gpt", + "partitions": [ + { + "start": 2048, + "size": 972800, + "type": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B", + "filesystem": { + "type": "vfat", + "uuid": "46BB-8120", + "label": "EFI System Partition", + "mountpoint": "/boot/efi" + } + }, + { + "start": 976896, + "filesystem": { + "type": "xfs", + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/acl-2.2.53-1.el8.aarch64.rpm", + "checksum": "sha256:b984d8576520272b1011cc46b03c666cd6abc1bf74b428a8781ca58c6287a007" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm", + "checksum": "sha256:d9a4628bd8d3e776f626be4cb5edec305c2ff894d7c5cc7e33e212545721053a" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bash-4.4.19-12.el8.aarch64.rpm", + "checksum": "sha256:518e5412ce19ab733f62c334da8c5545a212c4c971d513eb95590b08a14e3772" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/brotli-1.0.6-2.el8.aarch64.rpm", + "checksum": "sha256:796cac51b2c1092c4faad372717c6ddc37cad9757111a41e531fe0a8d6c0a9ea" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bzip2-libs-1.0.6-26.el8.aarch64.rpm", + "checksum": "sha256:2d84f6765b1645f867527f493b6153470602a80c75f81545bf619aa92127e4da" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/chkconfig-1.13-2.el8.aarch64.rpm", + "checksum": "sha256:6a6aa18217ae72a0b33e4302da927e6ded92520cbf4d48a5030d4a2f95eeb5d8" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-8.30-8.el8.aarch64.rpm", + "checksum": "sha256:15c33124ac0479d34f1f58d2bd24cc52db7089b4a8681c276a3fd0d6dfe4fc72" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-common-8.30-8.el8.aarch64.rpm", + "checksum": "sha256:e085cf8bddcf09c908d925688dae077300d2964b40bd060af252d26a963cfe50" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cpio-2.12-8.el8.aarch64.rpm", + "checksum": "sha256:dcda73e0ea7b5d2710528fc6df135d435281d1f4d2be0018bb6f1858e818d599" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-2.9.6-15.el8.aarch64.rpm", + "checksum": "sha256:b7bc10e9947763df6e6177b3dbbe77c21f55ed60d26c4c28bfe14a98f7e06189" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-dicts-2.9.6-15.el8.aarch64.rpm", + "checksum": "sha256:acd4674b3fbe01d6cf94eb18a81cdb00beb73bf3d4a25a28e234f31498f5c389" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cryptsetup-libs-2.3.3-1.el8.aarch64.rpm", + "checksum": "sha256:689577d74311a7327aab6fe412a803d72b790957e863b6b78a8621a040306919" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/curl-7.61.1-12.el8.aarch64.rpm", + "checksum": "sha256:7d3ddbaae06c7fb8d24449e11b418ee07bdd9e07f7f0af57741d220b97228557" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.aarch64.rpm", + "checksum": "sha256:41cc2d507fdfbba939c00164a563e770d466f992cb64d3c51a79aec20b31d6d1" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:dc37d12420a2593c46619e9b67a0115255a0c7334f547871ce08e329bf5d15a2" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-daemon-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:f96bc0d82d4c6934659c23a6771515e78bf2252ed24d32c78001260ee6e36c8d" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-libs-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:bae965c689b08ce42f10366e4b441504432ac353d30edb8b4b2cfc798069434f" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-tools-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:eaf3c7104d3ebd0cdda3d6ce44f4c79eec0a8ce3ce71cbb0d9dfe716f58a105d" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-1.02.171-3.el8.aarch64.rpm", + "checksum": "sha256:6fbfaa1e1b1bb4e2362cf3dce0f59a94a78b457904234cbccbe6afacde311c26" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-libs-1.02.171-3.el8.aarch64.rpm", + "checksum": "sha256:057b6632870b8c3c0c950a19092ef2f9749bf3d1a37ccb083bf42ca6404db066" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/diffutils-3.6-6.el8.aarch64.rpm", + "checksum": "sha256:3a684fd5f1b1d417c6c3e9d1f0d5b846138aa06450ff246425d43d4a20bd619e" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dosfstools-4.1-6.el8.aarch64.rpm", + "checksum": "sha256:2efbfbcce7ef24e433d3c304b6b6b022d1b1b8a972969da1adb1c3c85f9625a7" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-049-89.git20200625.el8.aarch64.rpm", + "checksum": "sha256:4d8edaa317fd508226bb5421ef423470f3e9153167222dee7bf8fb2346b7875b" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:3256e78263462d5d7ab37b696992aedd6f810431641ce8d1e1bc198c797b402b" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:da4d193d5f0caf7a196f3bd4aa1225072b522521d82fca8edecc6546b5460ac6" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:c88d1656b8001ff79175f7d3b7818681e40e54e8fec6fb8556ba8141d437fcfa" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libelf-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:b140eb203fe889d1c75ef3b5527033cfeb7a6f0c813638a607c9f10faf52a34b" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libs-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:98dd1582b8ab27085379a3a7e598a6e261c62f97a5f3689447cbf1d4af9ae46c" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/expat-2.2.5-4.el8.aarch64.rpm", + "checksum": "sha256:77b56d825eb31ca191254d17a4c9399e3c4fe8af42a528c2ad4424bfd865b82d" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-5.33-16.el8.aarch64.rpm", + "checksum": "sha256:f7ccbe0d7b4a61b5a47253f168f8efcdbf41ad0755e678f9edcd2f6a69c93c7d" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-libs-5.33-16.el8.aarch64.rpm", + "checksum": "sha256:3ee66f993ee567b2457a221ed364ae4f8dfe783a5f0e723d9169f95d12f9e696" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/filesystem-3.8-3.el8.aarch64.rpm", + "checksum": "sha256:634a3cbf0b334e901b6887176fa1b98246be7c4010b4c21cb6fd8fa7aa5fdf94" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/findutils-4.6.0-20.el8.aarch64.rpm", + "checksum": "sha256:540fa90864b4eb0176b56e0c5e9d7bc6130985288ae297b4c38950381b08a827" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fuse-libs-2.9.7-12.el8.aarch64.rpm", + "checksum": "sha256:e08305aecd924631284ddaeae39a83cca85495389d4ddef75410a32af49f946d" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gawk-4.2.1-1.el8.aarch64.rpm", + "checksum": "sha256:e0faa8a6bc43432619a2b6a26e9f1323d30cda945580d8bc0f6c2fe742b71924" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-1.18-1.el8.aarch64.rpm", + "checksum": "sha256:3f5765cebcac288cc1b5b118acfbc2016eda7b81ad73923f6f9c21e4731eb0d9" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-libs-1.18-1.el8.aarch64.rpm", + "checksum": "sha256:8ef2fcbe5a8d6e7d393d28838ff458336d16e006bc7d19921f460eb105b88570" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-0.19.8.1-17.el8.aarch64.rpm", + "checksum": "sha256:fddf61e9024c41073442ccff0c9990fa004e9b183f391c4e3cf3853e5ae6062c" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-libs-0.19.8.1-17.el8.aarch64.rpm", + "checksum": "sha256:ce6960fa7831611815e163864a91b70b0ab1ef0f446c2cad1eec13404822cad5" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glib2-2.56.4-8.el8.aarch64.rpm", + "checksum": "sha256:964b1d9563e42a176c24cf5c91616ee5cc40de3b1c92038d7fb0392113eaf159" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:d4424a9c946da1eab876298af8f772d5aab1109a1f551ac2f1cd10ee849568de" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-all-langpacks-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:4d8d164f8bd56b7ab6252f009b38525f39fb161c03713414e1583894a265c50a" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-common-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:91c58481a7e4a9b7f9e0e14844fa73047395c75df95d35afa3b0d8ef3f584491" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gmp-6.1.2-10.el8.aarch64.rpm", + "checksum": "sha256:19efe6f125c00123ccc6d96e51eb61e711f3ea01f32d18cce14d3b614217c58e" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-2.2.20-2.el8.aarch64.rpm", + "checksum": "sha256:f700797810fb2bdbba5a0b31e10c361360a87bac1a282da109273194a25bf6ef" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-smime-2.2.20-2.el8.aarch64.rpm", + "checksum": "sha256:0b4564ad3a799af1a4a0de33b0952f6056d942b0cfa39b73e9375bf0c05b3191" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnutls-3.6.14-3.el8.aarch64.rpm", + "checksum": "sha256:3bf230c85711b285afb968850d7e98eb6b068a06e7ca40e94203e388d8447f48" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gpgme-1.13.1-3.el8.aarch64.rpm", + "checksum": "sha256:c22f0d40fbdaaceec711be0cecc122fac4570d126914ce3694a3d6a1178bd487" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grep-3.1-6.el8.aarch64.rpm", + "checksum": "sha256:81d2e21dad970c08798c0df00bbda21acf165a370f9612e0d14ce69e5dd6c5c3" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:2921d3aa14a509d271ca35256903c142c30f088f7dc889a4c4e15b26316ef5c0" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-minimal-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:126d980678e5b687c775cf857b4013306f1a761353370258a0f04d92a3553f92" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grubby-8.40-41.el8.aarch64.rpm", + "checksum": "sha256:5eddb5c1febbe6e58491f8e9ee8fc9897298b307e0357c01f49d445cf25283c9" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gzip-1.9-9.el8.aarch64.rpm", + "checksum": "sha256:e82699d15e4e6ff7825629d7c1c8a0f50a5519b6e5328472de91a0deddb9cf3d" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hardlink-1.3-6.el8.aarch64.rpm", + "checksum": "sha256:fc51460213b3bf5b67f08f2695aae8d728f614adbbacb917a0825e4ebfbc3e68" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ima-evm-utils-1.1-5.el8.aarch64.rpm", + "checksum": "sha256:cf8fdbfcd359aac8bf55500c24e6843baafe8fef35019126c3616806b41415b3" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/info-6.5-6.el8.aarch64.rpm", + "checksum": "sha256:3f7e5e72ab9e18dbca936b40734c91520242a49a9e98a2f2589f397faa6ad8e8" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iptables-libs-1.8.4-14.el8.aarch64.rpm", + "checksum": "sha256:0fd7dd5b060e7533144ad7a3cae2453ad6f87650010f328879b10c7c4cba0c04" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-c-0.13.1-0.2.el8.aarch64.rpm", + "checksum": "sha256:36aece7b7a65785985bf0b98701514f12735a87517b8578a3eb3710f82ba4765" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-glib-1.4.4-1.el8.aarch64.rpm", + "checksum": "sha256:1143ac623a74d7feaaaf293c18d942d243248f6356628f87216670c10d11687b" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-2.0.4-10.el8.aarch64.rpm", + "checksum": "sha256:10ac3bf7565725a55b0aef56f65befd0d320219fc83adfab6e564c19f8c44bd6" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/keyutils-libs-1.5.10-6.el8.aarch64.rpm", + "checksum": "sha256:e4ec1966f9bc7cbc898fe7550600ae3e9e4f8afbcdd3f6e74afe1965247653ba" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-25-16.el8.aarch64.rpm", + "checksum": "sha256:1091a799d34a42d2e42ac462b4f979a55d17513eca5a00bad9bdba56cca83357" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-libs-25-16.el8.aarch64.rpm", + "checksum": "sha256:6f87f305a3e0e0faf69c2a9d4f277958ca33e85b72c6e4f77a365a5f60ced3d3" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kpartx-0.8.4-2.el8.aarch64.rpm", + "checksum": "sha256:4a27cd4496ebdba821b3c7692eeb0c0fff28c6af69fe4fe9e4bf52511639bd6a" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/krb5-libs-1.18.2-3.el8.aarch64.rpm", + "checksum": "sha256:ca87249f90bac96902d18c11a1f8c80566fa090c6473226bdd147e07e3ed21ec" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libacl-2.2.53-1.el8.aarch64.rpm", + "checksum": "sha256:7c014b54f7929348f614f8f4eb7a1552b8565c0a57f3a75ff6471dc05f30cafe" + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.112", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libaio-0.3.112-1.el8.aarch64.rpm", + "checksum": "sha256:98f838a9775269a0f796151bd54d52c7ac91d4bf1365186772f243bfafbb136a" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libarchive-3.3.2-9.el8.aarch64.rpm", + "checksum": "sha256:dfdec57ff520511d1d4ef9d913d90fc8d6ac98685cbc12fb568c8980f2a73f1a" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libassuan-2.5.1-3.el8.aarch64.rpm", + "checksum": "sha256:0f1a02850c102e2a186787504f965c0c10d6432b9f600c18bc2f520e55f04a8c" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libattr-2.4.48-3.el8.aarch64.rpm", + "checksum": "sha256:6f2bfbe0f23d3b233aacb72c153ee133839353325f028321eb5ea38b0dc06c02" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libblkid-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:d173b35182f28b9dd48e4a942f2a20c659bee2f9ac234b60cf8b995aa2421382" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-2.26-4.el8.aarch64.rpm", + "checksum": "sha256:2cddadff38ccef2364a7e40af0e1d9b3bf9c06869c15ceeb655f3cfa431c2083" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-ng-0.7.9-5.el8.aarch64.rpm", + "checksum": "sha256:62a2878605ca0415fd60adcff4c7068d855d20737498a968fabc646610ccbe5c" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcom_err-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:e5f82f102f51d88aa517bbebd170795a571b7ddc3036574b92b498cc13704d98" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcomps-0.1.11-4.el8.aarch64.rpm", + "checksum": "sha256:ff9fc6467a4c2fd0c22c419a9cdb7a524d1c69d0c87aa09f31728bef9f692f76" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcroco-0.6.12-4.el8.aarch64.rpm", + "checksum": "sha256:86ae7501bdf0149728879f488dd4c86907216cb5b021192347a5c10a55382931" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcurl-7.61.1-12.el8.aarch64.rpm", + "checksum": "sha256:2809ad51c6eb6c9a54d64cccc2cd948f6fd4207f32b4493b3f4a9bd0886c894b" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-5.3.28-39.el8.aarch64.rpm", + "checksum": "sha256:84e7102978d76d80aa40c43efcc71c1e54e819195132df921a8c13cec54328da" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-utils-5.3.28-39.el8.aarch64.rpm", + "checksum": "sha256:621e96e91103f2f701e4ac3b8b8b6ef9aab4db5ab8fb3e141eb02e3f328aed79" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdnf-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:fac29887224d91e8190a569b3ac5be1168034f36c9c234576ea3cefe686e46cd" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libevent-2.1.8-5.el8.aarch64.rpm", + "checksum": "sha256:058822931f4c34c18675116c1b02b718de4044c1019acb0d5f97417f00a30ba7" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libfdisk-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:d6aa17908468b5e2095526664fce6627dec7a02c26625339c14b9278cc39d4a6" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libffi-3.1-22.el8.aarch64.rpm", + "checksum": "sha256:4a40a1538c8a488f32476f96d2461c3b792eb0cf5acb998e397d8a9cef8e5461" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcc-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:3b607f0dbedecb25239e22c1f553c8d70db9d2206a877fa07567fa1a49e233d7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcrypt-1.8.5-4.el8.aarch64.rpm", + "checksum": "sha256:8498846918c7bc7a20553340434cfbfb0d19185adcd0ff52866c6506ab8f747d" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgomp-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:53fa2fd6a138d00c697b827a77bcc25ec498b1d49bb04ef80594e81ccabc165d" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgpg-error-1.31-1.el8.aarch64.rpm", + "checksum": "sha256:5a05f1126ed38f752af247dcdf7c958e738b935b8b6d942fd42f423768f05255" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libidn2-2.2.0-1.el8.aarch64.rpm", + "checksum": "sha256:2dc8e2f52451d1a11b16bbb389a24c58b61a1ba804ee777f9d06dbe4e1fcf6e5" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-1.2.0-2.el8.aarch64.rpm", + "checksum": "sha256:83301ca502322e0634173460bf8fa35572c36ab8cc2e6e600bf9980f845fc857" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.aarch64.rpm", + "checksum": "sha256:f07b1f40ebb1fbe5c24e68a38b5f768a21e2ec2254d4bd8ff61fb0bde72f64ce" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libksba-1.3.5-7.el8.aarch64.rpm", + "checksum": "sha256:704e1dc996a17815c6dcf7029c0ddb2849d40feaab6e9b9c687af9d95fef825c" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmetalink-0.1.3-7.el8.aarch64.rpm", + "checksum": "sha256:fa80a7e82e231dc77b3e44edd2cbf5b3d1657e009e59f15bbe8d50a4290b7c82" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmodulemd-2.9.4-2.el8.aarch64.rpm", + "checksum": "sha256:ba1364539f16d7c8379d7563fd0634651fa8a05b3f7098a21ba96e1f5641f132" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmount-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:26b14d8f226962ce712bbccfb245843759e835a24a139eacae86d680043a85a7" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.aarch64.rpm", + "checksum": "sha256:4874e739ed37bc6a5bfdb6069d4620e5f7efe01d60eb9fd2550c550167c99990" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.aarch64.rpm", + "checksum": "sha256:471663fca7e3f609834368d69d8f1f469cfc0d3f3e95dc2b79381722d0368edc" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpcap-1.9.1-4.el8.aarch64.rpm", + "checksum": "sha256:435a2be84a2b38372965dbd60ffed0ed38a616b8100859787a8bb3b19d9fc4d9" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpsl-0.20.2-6.el8.aarch64.rpm", + "checksum": "sha256:6557d001315e85ac123b1378c5aafb81428e2383debcacf3f91c55476cfc48eb" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpwquality-1.4.0-9.el8.aarch64.rpm", + "checksum": "sha256:d6ab7c8790cd6c9a137d908d840c51c547e950d25f6ab8af3c9ad3899ff6c044" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librepo-1.12.0-1.el8.aarch64.rpm", + "checksum": "sha256:2d74e0ab14393921c6160fda8dd533b58c0348acdf5ee5c306ffc64221700de2" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libreport-filesystem-2.9.5-11.el8.aarch64.rpm", + "checksum": "sha256:e55bf252e792f27f076101e94dfbbac97dabeea0f7893a4cb9b111a0b72d187f" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librhsm-0.0.3-3.el8.aarch64.rpm", + "checksum": "sha256:e9487db2fdce1f494ee1582787a1afc1ea4e0429189db8be0ddbb0af2676c4b6" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libseccomp-2.4.3-1.el8.aarch64.rpm", + "checksum": "sha256:cc7e751a62f9a28b82df0bce0ecfb050364b8688ef69473f1910909e44c5eb98" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsecret-0.18.6-1.el8.aarch64.rpm", + "checksum": "sha256:c1b5c4668331e8b05a08e7de432cbfb75f8072401bb6651a24e43f64eff8dcc4" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-utils-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:c82ca1c0ef4b89f75e8e7edbbae4f3eeb2720a4abd56b0927928cff2d9721186" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsemanage-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:140146ebcbadd9b0f2aa5c2fcde5c93888f2d84ce61a2a4cf148ef435d1ba410" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsepol-2.9-1.el8.aarch64.rpm", + "checksum": "sha256:c8a28b4587888435c51f6d1ce42f48b08fb0256e4029ea569e9a02adcb82c85a" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsigsegv-2.11-5.el8.aarch64.rpm", + "checksum": "sha256:bf267d9571cf568375e261d593236750f400ac536c1c818513106482ebc3fb10" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsmartcols-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:f35c0da3cff05ded33c0cb4f202dbb52a5caabec8b1897d5057df83c284d62f1" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsolv-0.7.11-1.el8.aarch64.rpm", + "checksum": "sha256:2397506a63455e543b201938f605e687de5590d9a06282824e2f6bfdf5e0f149" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libss-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:268d9232f0853037100432e9363c659cf99927e03f759fd4884643b560710cd6" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-0.9.4-2.el8.aarch64.rpm", + "checksum": "sha256:3ee6a4f61935c2f0698ad2c4834a5864920a1e48d55c7800da7c382249895e39" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libstdc++-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:f4e63e7eedc0266a575eb6107f41c5f20ca0505a0e80145c21b9741674d5c0b5" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtasn1-4.13-3.el8.aarch64.rpm", + "checksum": "sha256:ed28e1e31109e27ce1c676914364c9f1dd46b71d00cb4cf13931f0fec6cf6978" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtirpc-1.1.4-4.el8.aarch64.rpm", + "checksum": "sha256:481bbd6d73415d437a73eee7977ec370299acdac44b215a026652debba31783d" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libunistring-0.9.9-3.el8.aarch64.rpm", + "checksum": "sha256:da4b9bfad26d559485ade669556512acfe93ba23d204f2556bac82c09401b4e7" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libusbx-1.0.23-3.el8.aarch64.rpm", + "checksum": "sha256:01e486a3be67325e9692e909f5c6534137ee6a6df185ba2c09d4d50fe6c738f6" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libutempter-1.1.6-14.el8.aarch64.rpm", + "checksum": "sha256:ad07261ff4f478be9511f7ee749bfbe8b2ba8e28696c2f561caa20e35c535134" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libuuid-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:95de1777f7e8a734445c5d45e0b77da8b6c41a9b504582ed266d852c677a936b" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libverto-0.3.0-5.el8.aarch64.rpm", + "checksum": "sha256:532d46a4c0e68bd45eabc3e2ba6d570880344044e1034f5f347b37c470d0dced" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxcrypt-4.1.1-4.el8.aarch64.rpm", + "checksum": "sha256:876ffb285aaeddb2c18ae32527bd4ee202710bd8e18d5b410af22937646dcdec" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxml2-2.9.7-8.el8.aarch64.rpm", + "checksum": "sha256:fb56b7a416e12da0782ae8ba7396bc03a2f8844c2efcb5df3f8b9e74eb8b8059" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libyaml-0.1.7-5.el8.aarch64.rpm", + "checksum": "sha256:7864fbc866ae5a3e59b4f0f114b77ff52b55e76c5388a917f82a6097f02a4db7" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libzstd-1.4.4-1.el8.aarch64.rpm", + "checksum": "sha256:19d1de27d2f62b4a55735233807f70a1e8ff7551fed97ee8650dbd09c1ef50ea" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lua-libs-5.3.4-11.el8.aarch64.rpm", + "checksum": "sha256:bc0f9bd34ac6a01dd7272b87e1b7a33045ff8c6793cac02fa639dfc9341e8215" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lz4-libs-1.8.3-2.el8.aarch64.rpm", + "checksum": "sha256:64ac5cb6fd3da1610812795ce17e09648d89c87513d6284b852a3455b0831d3a" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mpfr-3.1.6-1.el8.aarch64.rpm", + "checksum": "sha256:320ced09e242f09047f4fab0a7f66aba6de2e42583f6a2e164eadcc1ffd0b915" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-6.1-7.20180224.el8.aarch64.rpm", + "checksum": "sha256:8ac1003d722e3d5f383c9b970bf6dfbc905007a624abadb63e520d7a93993747" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-libs-6.1-7.20180224.el8.aarch64.rpm", + "checksum": "sha256:f99f5edde9ad4574b84264c467420c910b31f78683fbf1b63d106a7e6c9d64a3" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/nettle-3.4.1-2.el8.aarch64.rpm", + "checksum": "sha256:e2c4ac0f7abf75cbcc7a6fb35412820c267f1a8ce614f41b60d901918c4616d5" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/npth-1.5-4.el8.aarch64.rpm", + "checksum": "sha256:daf36ee86ec6001770ae68bdd82409526faf4b9b1313a6b74fb54cfb98ff571e" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openldap-2.4.46-15.el8.aarch64.rpm", + "checksum": "sha256:cfa188d39884fd4ba36d27e8fb25aed9dbd26efccffbfd01a24c2c580fdb96f1" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-1.1.1g-9.el8.aarch64.rpm", + "checksum": "sha256:3ef63ecbebf844bcf682c9482dc0ddd158c955b0f066b62eb9575bb9a9642db5" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-libs-1.1.1g-9.el8.aarch64.rpm", + "checksum": "sha256:448d3ff44e7f32f3b33e891180e248dc1bcd4d410f68015a8b0c30dc7c385aca" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-pkcs11-0.4.10-2.el8.aarch64.rpm", + "checksum": "sha256:290c83afcd2b0a2b17aab95cf72a85da5f8b9f9a9862857c919a0f43e3fce70e" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/os-prober-1.74-6.el8.aarch64.rpm", + "checksum": "sha256:43ab42c8a58267936a89da99e37d3b9fc56489e958060f600ba047445ca44ee3" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-0.23.14-5.el8_0.aarch64.rpm", + "checksum": "sha256:651f38873d3356ec4efb27d04658541080d11cf1ece6335a07db1ca089fa7da3" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.aarch64.rpm", + "checksum": "sha256:ec40be9e0b2bb03f7b057a7a9342ffbd86129d58828fb310f445bc506261eb0e" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pam-1.3.1-11.el8.aarch64.rpm", + "checksum": "sha256:04c031a07bde4360484a0180e832036d3ac45a95c4839e54d7a02423df5485ef" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre-8.42-4.el8.aarch64.rpm", + "checksum": "sha256:fea4eb54fe59451b76fb40b9bd15ff41f0f51bb7371f94b2f5df572ef917d037" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre2-10.32-2.el8.aarch64.rpm", + "checksum": "sha256:ce8c92fa2bef1770f44992db24e1cb8cc850feab03a74cf0ebf741ecb0d160ea" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pigz-2.4-4.el8.aarch64.rpm", + "checksum": "sha256:f847957437e7f24844930c4a3ff64c5f7877f083553f48eeadca3c5f5e5c728e" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-3.6.8-30.el8.aarch64.rpm", + "checksum": "sha256:68593fad4413255772bd08ed7f8b578332f0f53e002c8c7473d90c966a87131b" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/policycoreutils-2.9-9.el8.aarch64.rpm", + "checksum": "sha256:b90ce065d5ea98845733ff06e47d385937f6293ebddf52144c80f5fe1f296307" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/popt-1.16-14.el8.aarch64.rpm", + "checksum": "sha256:4e4923f05d0032263d570075b9b832b9fc3550cd8f82f9a6b0b9b25061726110" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/procps-ng-3.3.15-2.el8.aarch64.rpm", + "checksum": "sha256:d890d028f59e2553730fad3dbea0e1a245c92c24836513fa2281194b1c90b53a" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-gpg-1.13.1-3.el8.aarch64.rpm", + "checksum": "sha256:90405803c0159cdf0f74a26b6ce064cfd9973e59232b2923ed171a38fc5684a6" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-hawkey-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:4909edde46b5b2b58d228bacafa3bab5bc5847559d591d59ecd59cdf50d36db4" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libcomps-0.1.11-4.el8.aarch64.rpm", + "checksum": "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libdnf-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:9b6fcdd19caee5fe77b9ed17adb3f11769a7109ebcf52d3cb3358d5a9eecc391" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libs-3.6.8-30.el8.aarch64.rpm", + "checksum": "sha256:65b8d755ff01dfefa423d2f0bd6fd54cfc4c580da63510e19cf178abb6e26172" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-rpm-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:b5b1f5f7a02f70db056861813ddcf181f2ebba507cd368fbe2c32f262edf7fc6" + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/readline-7.0-10.el8.aarch64.rpm", + "checksum": "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-8.3-0.2.el8.aarch64.rpm", + "checksum": "sha256:a6292dd846bc471b22409fc95a5e09c88bcb6176251dc5cc11f4b14a73ddda11" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-eula-8.3-0.2.el8.aarch64.rpm", + "checksum": "sha256:784d385116891056b618722c933d43c5b395b92fa82e5bc797081317ec6a82ba" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:47b483c0f556c56f0b1f468603c57834864902ae5a849a18c8a0ca5f76d66c86" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-build-libs-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:c633b98b4dbf96674a69573404819c34d66eb7e19820283fc588f6b10b0e3fc8" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-libs-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:d3fb5a473c44cd8ae6b94d6bf3fc552553d8f4ef28eed439658ea38990ab9db5" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:0a885c6dc6abd969b828bf2fd7063ee884e6d058eaf405b02f3dd6efb6c66bac" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:0bb7024125ca67119612e55a92da13c989e0306ddd7de7e655a679c963939ef7" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sed-4.5-2.el8.aarch64.rpm", + "checksum": "sha256:125c92f23d87b905c21e9f7669f0ec6e41428ab63c8c13f63db8980f292797d5" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shadow-utils-4.6-10.el8.aarch64.rpm", + "checksum": "sha256:a840b8193ce9b1b72e3783b9a9bb2ec91947ba3b6f7ac973ae8e0e20a7059117" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shared-mime-info-1.9-3.el8.aarch64.rpm", + "checksum": "sha256:19cd894b4154d1a8521c6884cfd2a6eaf1f498b7dec5cc31408f8535b9098f2a" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sqlite-libs-3.26.0-10.el8.aarch64.rpm", + "checksum": "sha256:207e6396488c1db18fb7b1f2b9952f48c2625f042c5f6a901d41974ce376b0e0" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-239-36.el8.aarch64.rpm", + "checksum": "sha256:d4467ba499fe1ddd82746ad00d7e86bea59c4827fe1ff8c05132bad1f93ddb7f" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-libs-239-36.el8.aarch64.rpm", + "checksum": "sha256:800c9a0d718c641ceee26c8f625b2dcd79a33963e9e7a11930678dc99582a2d0" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-pam-239-36.el8.aarch64.rpm", + "checksum": "sha256:986683a0edb615a5d45a9c1b0ee3d27f8032c2667cad58d24526085e41010992" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-udev-239-36.el8.aarch64.rpm", + "checksum": "sha256:3fe7c10c144c8fffc00d144317a2bf8029bd9d048432bccfc352dfc6f0995680" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tar-1.30-5.el8.aarch64.rpm", + "checksum": "sha256:ba66a87402ccc8515e164f597f5d254ad9513979fe3ca1ffabf63c915c0daa73" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-0.3.14-4.el8.aarch64.rpm", + "checksum": "sha256:d695df94220c2ef990e502123b3bd8ede8fcfb4f738346dd98d999559b01b6b3" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-lib-0.3.14-4.el8.aarch64.rpm", + "checksum": "sha256:fb263177eee60c26b7acaa76cb640c3d7ab6928e73c8af80b2111a247bd61ece" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/util-linux-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:83e470505f558f8cf8414a7fc8fb0d1bc4b16ed15d05ccf7e46332b04d1a0d85" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/which-2.21-12.el8.aarch64.rpm", + "checksum": "sha256:0f32d23a6b2b15603d710b0317238ef8dde3de61eda96713e21d86c9fc7a98ed" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xfsprogs-5.0.0-4.el8.aarch64.rpm", + "checksum": "sha256:760d9056891a60c200984f0655aee1876b3bf890f7486306c05db8e295ae7843" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-5.2.4-3.el8.aarch64.rpm", + "checksum": "sha256:e426534c59b3a35068877d324dd34d643ad7c84d2c406b2e6502ac6c2a367d39" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-libs-5.2.4-3.el8.aarch64.rpm", + "checksum": "sha256:094eff70081085f87a7ac0dedafa851ad8ac8e03f9f328636df4a0f8301d0e87" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/zlib-1.2.11-15.el8.aarch64.rpm", + "checksum": "sha256:cf9a0bbaa7bd075d2af532586ee93ab92b96d9859f53a57f85cd7e0309f8fff6" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libxkbcommon-0.9.1-1.el8.aarch64.rpm", + "checksum": "sha256:a07f96031fbe9507a8d6bb0e14cf0783bc615552e4cfb75131672072f5729de8" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/memstrack-0.1.8-1.el8.aarch64.rpm", + "checksum": "sha256:aa1a6a85493590efb9c0235c15d6a05e8b119f385dc13b3e3abd2315f8c4a6e0" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/pinentry-1.1.0-2.el8.aarch64.rpm", + "checksum": "sha256:22c0e44318e36e04ad1eb4632dcf25db991f481f9a543387d372e1f2ad92561f" + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-unbound-1.7.3-14.el8.aarch64.rpm", + "checksum": "sha256:6ae316dfb9723d13a8d36d98d109d4a55017b568ee2070279f1bdccdc699862a" + }, + { + "name": "python36", + "epoch": 0, + "version": "3.6.8", + "release": "2.module+el8.1.0+3334+5cb623d7", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.aarch64.rpm", + "checksum": "sha256:5996ff948b5874f894c5ce3495652e6de552addf2331fd82193023d77994ef8f" + }, + { + "name": "qemu-img", + "epoch": 15, + "version": "4.2.0", + "release": "29.module+el8.3.0+7212+401047e6", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.aarch64.rpm", + "checksum": "sha256:d20f4bf44fcc90509e7afca364eae0a55c8f33df2f8a69e266f5fcd4b5fa2e4b" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/unbound-libs-1.7.3-14.el8.aarch64.rpm", + "checksum": "sha256:727c08fe072ef85837e8db30574aec712cdf67a062eead3e5481ba08425b2395" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-1.26.0-0.2.el8.aarch64.rpm", + "checksum": "sha256:63c64d526e9820ddc57a77c053674eeccefef33f16af536dd9b47e816db06988" + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-libnm-1.26.0-0.2.el8.aarch64.rpm", + "checksum": "sha256:0229afd544d1a59bfe26c095ad338bac7e0d2f10aab88bd895f3766e8f54fff3" + }, + { + "name": "NetworkManager-team", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-team-1.26.0-0.2.el8.aarch64.rpm", + "checksum": "sha256:1f8013c5bd1c4914a11363d56d67fa70871f5f42c64f57862c791871fb9bb05c" + }, + { + "name": "NetworkManager-tui", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-tui-1.26.0-0.2.el8.aarch64.rpm", + "checksum": "sha256:c3727553ea6dd925d9c760b23eb617d1cb475fab9c495543868666ad6cd3b088" + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/acl-2.2.53-1.el8.aarch64.rpm", + "checksum": "sha256:b984d8576520272b1011cc46b03c666cd6abc1bf74b428a8781ca58c6287a007" + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm", + "checksum": "sha256:d82c81115472a70d60d2320e254762c76a583ad2190ad45068476c77512588af" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm", + "checksum": "sha256:d9a4628bd8d3e776f626be4cb5edec305c2ff894d7c5cc7e33e212545721053a" + }, + { + "name": "authselect", + "epoch": 0, + "version": "1.2.1", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/authselect-1.2.1-2.el8.aarch64.rpm", + "checksum": "sha256:0e30a92139490232a4b891f4f802db74f41002475f8d203c6adffe1fb9d2b1ab" + }, + { + "name": "authselect-libs", + "epoch": 0, + "version": "1.2.1", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/authselect-libs-1.2.1-2.el8.aarch64.rpm", + "checksum": "sha256:a7fe54c4d43f925093face259d9fd8f28f06e9c11dcc3ad100b24288c577e4a4" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bash-4.4.19-12.el8.aarch64.rpm", + "checksum": "sha256:518e5412ce19ab733f62c334da8c5545a212c4c971d513eb95590b08a14e3772" + }, + { + "name": "bind-export-libs", + "epoch": 32, + "version": "9.11.20", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bind-export-libs-9.11.20-3.el8.aarch64.rpm", + "checksum": "sha256:dfaf74e2116ee30d1882b3461de90d3fb6faad4468eb0678f845d105b4439a83" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/brotli-1.0.6-2.el8.aarch64.rpm", + "checksum": "sha256:796cac51b2c1092c4faad372717c6ddc37cad9757111a41e531fe0a8d6c0a9ea" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bzip2-libs-1.0.6-26.el8.aarch64.rpm", + "checksum": "sha256:2d84f6765b1645f867527f493b6153470602a80c75f81545bf619aa92127e4da" + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.13.0", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/c-ares-1.13.0-5.el8.aarch64.rpm", + "checksum": "sha256:a32db9e3d2321bd5c4e998f7ed6f4459d85f792a16f4fdfb8805f5936d521572" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/checkpolicy-2.9-1.el8.aarch64.rpm", + "checksum": "sha256:adb9e37c63a055bc106a9676c10a85fdedcb4af64ae062249732e158bc0ae9af" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/chkconfig-1.13-2.el8.aarch64.rpm", + "checksum": "sha256:6a6aa18217ae72a0b33e4302da927e6ded92520cbf4d48a5030d4a2f95eeb5d8" + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/chrony-3.5-1.el8.aarch64.rpm", + "checksum": "sha256:13f55a1fea88c4720dc704fa19573325ddde8c1c60ed71e96f98a9e5a6508d44" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-8.30-8.el8.aarch64.rpm", + "checksum": "sha256:15c33124ac0479d34f1f58d2bd24cc52db7089b4a8681c276a3fd0d6dfe4fc72" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-common-8.30-8.el8.aarch64.rpm", + "checksum": "sha256:e085cf8bddcf09c908d925688dae077300d2964b40bd060af252d26a963cfe50" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cpio-2.12-8.el8.aarch64.rpm", + "checksum": "sha256:dcda73e0ea7b5d2710528fc6df135d435281d1f4d2be0018bb6f1858e818d599" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-2.9.6-15.el8.aarch64.rpm", + "checksum": "sha256:b7bc10e9947763df6e6177b3dbbe77c21f55ed60d26c4c28bfe14a98f7e06189" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-dicts-2.9.6-15.el8.aarch64.rpm", + "checksum": "sha256:acd4674b3fbe01d6cf94eb18a81cdb00beb73bf3d4a25a28e234f31498f5c389" + }, + { + "name": "cronie", + "epoch": 0, + "version": "1.5.2", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cronie-1.5.2-4.el8.aarch64.rpm", + "checksum": "sha256:571b590c6ec7a2ac73996dc7d3dd7863aecc43e5dcb1411c191218a32633952b" + }, + { + "name": "cronie-anacron", + "epoch": 0, + "version": "1.5.2", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cronie-anacron-1.5.2-4.el8.aarch64.rpm", + "checksum": "sha256:98cf1d2d3ca85b3ec31dc56532c3b9f6fa5b3edadc8b4f4125526cdfb2b7507b" + }, + { + "name": "crontabs", + "epoch": 0, + "version": "1.11", + "release": "16.20150630git.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crontabs-1.11-16.20150630git.el8.noarch.rpm", + "checksum": "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cryptsetup-libs-2.3.3-1.el8.aarch64.rpm", + "checksum": "sha256:689577d74311a7327aab6fe412a803d72b790957e863b6b78a8621a040306919" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/curl-7.61.1-12.el8.aarch64.rpm", + "checksum": "sha256:7d3ddbaae06c7fb8d24449e11b418ee07bdd9e07f7f0af57741d220b97228557" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.aarch64.rpm", + "checksum": "sha256:41cc2d507fdfbba939c00164a563e770d466f992cb64d3c51a79aec20b31d6d1" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:dc37d12420a2593c46619e9b67a0115255a0c7334f547871ce08e329bf5d15a2" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-daemon-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:f96bc0d82d4c6934659c23a6771515e78bf2252ed24d32c78001260ee6e36c8d" + }, + { + "name": "dbus-glib", + "epoch": 0, + "version": "0.110", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-glib-0.110-2.el8.aarch64.rpm", + "checksum": "sha256:b847207a13bec4b7fcfaaf3668d93bc5ad40a6477f976e6aeb59ab431545d0c5" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-libs-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:bae965c689b08ce42f10366e4b441504432ac353d30edb8b4b2cfc798069434f" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-tools-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:eaf3c7104d3ebd0cdda3d6ce44f4c79eec0a8ce3ce71cbb0d9dfe716f58a105d" + }, + { + "name": "dbxtool", + "epoch": 0, + "version": "8", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbxtool-8-5.el8.aarch64.rpm", + "checksum": "sha256:dfea8e48e0cf3d8984237e3d5fb715c7edd9b1f8db03faaefc42a8046b45dab8" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-1.02.171-3.el8.aarch64.rpm", + "checksum": "sha256:6fbfaa1e1b1bb4e2362cf3dce0f59a94a78b457904234cbccbe6afacde311c26" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-libs-1.02.171-3.el8.aarch64.rpm", + "checksum": "sha256:057b6632870b8c3c0c950a19092ef2f9749bf3d1a37ccb083bf42ca6404db066" + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dhcp-client-4.3.6-41.el8.aarch64.rpm", + "checksum": "sha256:157044e6cf5cc52b64b9a5d621fdb5b0846a527daa428382330e68bdb47789eb" + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dhcp-common-4.3.6-41.el8.noarch.rpm", + "checksum": "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2" + }, + { + "name": "dhcp-libs", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dhcp-libs-4.3.6-41.el8.aarch64.rpm", + "checksum": "sha256:9a1c6f2b18126214e9afa768bbf16b29b89ce3169ccbd4bc169000eed143dcb4" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/diffutils-3.6-6.el8.aarch64.rpm", + "checksum": "sha256:3a684fd5f1b1d417c6c3e9d1f0d5b846138aa06450ff246425d43d4a20bd619e" + }, + { + "name": "dmidecode", + "epoch": 1, + "version": "3.2", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dmidecode-3.2-6.el8.aarch64.rpm", + "checksum": "sha256:deaa0958c9fb57773dfdf74567b658d273cea81186b913aa1473867dc07b335b" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dnf-plugin-subscription-manager", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-plugin-subscription-manager-1.27.9-1.el8.aarch64.rpm", + "checksum": "sha256:925c70a394a76004087fd6e8d94f7edab9de9efb2b81740c875698532ba124c7" + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-plugins-core-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-049-89.git20200625.el8.aarch64.rpm", + "checksum": "sha256:4d8edaa317fd508226bb5421ef423470f3e9153167222dee7bf8fb2346b7875b" + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-config-generic-049-89.git20200625.el8.aarch64.rpm", + "checksum": "sha256:2e26672ae726ba833187292dcc6c1673a07e26d974fef2f71a83407989eea8a1" + }, + { + "name": "dracut-network", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-network-049-89.git20200625.el8.aarch64.rpm", + "checksum": "sha256:f769edf78f42bae1bd183a6f4a49d74822db2b5e830147178d197be1cd67a306" + }, + { + "name": "dracut-squash", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-squash-049-89.git20200625.el8.aarch64.rpm", + "checksum": "sha256:e1bee08f1e76f8b820a59b5c228a0c1b4eaa7fc70c7d840251a04a74d517e25c" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:3256e78263462d5d7ab37b696992aedd6f810431641ce8d1e1bc198c797b402b" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:da4d193d5f0caf7a196f3bd4aa1225072b522521d82fca8edecc6546b5460ac6" + }, + { + "name": "efi-filesystem", + "epoch": 0, + "version": "3", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efi-filesystem-3-2.el8.noarch.rpm", + "checksum": "sha256:17501958f52d2db1417cab8dd5ca261bf447fd93eb62b80173f9875c3012b700" + }, + { + "name": "efibootmgr", + "epoch": 0, + "version": "16", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efibootmgr-16-1.el8.aarch64.rpm", + "checksum": "sha256:c321e3a0253fb2691035135b3d3740faa76b8e9c84a0378f480ff85ddd9f16bd" + }, + { + "name": "efivar", + "epoch": 0, + "version": "36", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efivar-36-1.el8.aarch64.rpm", + "checksum": "sha256:1b8c037a6c67959b52894f38444ed1133356c65cec2eed3acf37c45cf8609e63" + }, + { + "name": "efivar-libs", + "epoch": 0, + "version": "36", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efivar-libs-36-1.el8.aarch64.rpm", + "checksum": "sha256:db817b5d2f9d678fd0fee30e52ed080fdb5c9dd723cd57f7d6b0133293502047" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:c88d1656b8001ff79175f7d3b7818681e40e54e8fec6fb8556ba8141d437fcfa" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libelf-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:b140eb203fe889d1c75ef3b5527033cfeb7a6f0c813638a607c9f10faf52a34b" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libs-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:98dd1582b8ab27085379a3a7e598a6e261c62f97a5f3689447cbf1d4af9ae46c" + }, + { + "name": "ethtool", + "epoch": 2, + "version": "5.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ethtool-5.0-2.el8.aarch64.rpm", + "checksum": "sha256:13f1d396ba9e0fe3f8d5ef43693b5c1178207e594d2b830e94d3f8e02e33767f" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/expat-2.2.5-4.el8.aarch64.rpm", + "checksum": "sha256:77b56d825eb31ca191254d17a4c9399e3c4fe8af42a528c2ad4424bfd865b82d" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-5.33-16.el8.aarch64.rpm", + "checksum": "sha256:f7ccbe0d7b4a61b5a47253f168f8efcdbf41ad0755e678f9edcd2f6a69c93c7d" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-libs-5.33-16.el8.aarch64.rpm", + "checksum": "sha256:3ee66f993ee567b2457a221ed364ae4f8dfe783a5f0e723d9169f95d12f9e696" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/filesystem-3.8-3.el8.aarch64.rpm", + "checksum": "sha256:634a3cbf0b334e901b6887176fa1b98246be7c4010b4c21cb6fd8fa7aa5fdf94" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/findutils-4.6.0-20.el8.aarch64.rpm", + "checksum": "sha256:540fa90864b4eb0176b56e0c5e9d7bc6130985288ae297b4c38950381b08a827" + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.9.1", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/freetype-2.9.1-4.el8.aarch64.rpm", + "checksum": "sha256:b7955bb1ba7e944f6e5c36713db3bbc570ba0eb8de11ec6a1fa28cfc5c0029c8" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fuse-libs-2.9.7-12.el8.aarch64.rpm", + "checksum": "sha256:e08305aecd924631284ddaeae39a83cca85495389d4ddef75410a32af49f946d" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gawk-4.2.1-1.el8.aarch64.rpm", + "checksum": "sha256:e0faa8a6bc43432619a2b6a26e9f1323d30cda945580d8bc0f6c2fe742b71924" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-1.18-1.el8.aarch64.rpm", + "checksum": "sha256:3f5765cebcac288cc1b5b118acfbc2016eda7b81ad73923f6f9c21e4731eb0d9" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-libs-1.18-1.el8.aarch64.rpm", + "checksum": "sha256:8ef2fcbe5a8d6e7d393d28838ff458336d16e006bc7d19921f460eb105b88570" + }, + { + "name": "gdisk", + "epoch": 0, + "version": "1.0.3", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdisk-1.0.3-6.el8.aarch64.rpm", + "checksum": "sha256:74040f3c930d97f3b4cab1015eaafe922773767d8010dd10b94460ab8a28c8a2" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-0.19.8.1-17.el8.aarch64.rpm", + "checksum": "sha256:fddf61e9024c41073442ccff0c9990fa004e9b183f391c4e3cf3853e5ae6062c" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-libs-0.19.8.1-17.el8.aarch64.rpm", + "checksum": "sha256:ce6960fa7831611815e163864a91b70b0ab1ef0f446c2cad1eec13404822cad5" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glib2-2.56.4-8.el8.aarch64.rpm", + "checksum": "sha256:964b1d9563e42a176c24cf5c91616ee5cc40de3b1c92038d7fb0392113eaf159" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:d4424a9c946da1eab876298af8f772d5aab1109a1f551ac2f1cd10ee849568de" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-common-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:91c58481a7e4a9b7f9e0e14844fa73047395c75df95d35afa3b0d8ef3f584491" + }, + { + "name": "glibc-langpack-en", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-langpack-en-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:ee978ba9ffa58b85705df0736903e6717f13936343aa693cda376c4167a828ab" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gmp-6.1.2-10.el8.aarch64.rpm", + "checksum": "sha256:19efe6f125c00123ccc6d96e51eb61e711f3ea01f32d18cce14d3b614217c58e" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-2.2.20-2.el8.aarch64.rpm", + "checksum": "sha256:f700797810fb2bdbba5a0b31e10c361360a87bac1a282da109273194a25bf6ef" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-smime-2.2.20-2.el8.aarch64.rpm", + "checksum": "sha256:0b4564ad3a799af1a4a0de33b0952f6056d942b0cfa39b73e9375bf0c05b3191" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnutls-3.6.14-3.el8.aarch64.rpm", + "checksum": "sha256:3bf230c85711b285afb968850d7e98eb6b068a06e7ca40e94203e388d8447f48" + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.56.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gobject-introspection-1.56.1-1.el8.aarch64.rpm", + "checksum": "sha256:e160910d31a37afeea87df306264fb1f727cbca574d2c234cdca856f5311fbd6" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gpgme-1.13.1-3.el8.aarch64.rpm", + "checksum": "sha256:c22f0d40fbdaaceec711be0cecc122fac4570d126914ce3694a3d6a1178bd487" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grep-3.1-6.el8.aarch64.rpm", + "checksum": "sha256:81d2e21dad970c08798c0df00bbda21acf165a370f9612e0d14ce69e5dd6c5c3" + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "18.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/groff-base-1.22.3-18.el8.aarch64.rpm", + "checksum": "sha256:8f2c073583d6d4347642139a9806174ba64848c6bd4fbc81b7e7e0d42751cc74" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-efi-aa64", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-efi-aa64-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:635d847cc4dec8a8e1b418adfda2bc0a9e1814ed6c2c6154a5430029d83abd24" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:2921d3aa14a509d271ca35256903c142c30f088f7dc889a4c4e15b26316ef5c0" + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-extra-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:4633c2b5a93723e1cad477b81f9ccefafed342f8c4474ec305058f99c713229d" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-minimal-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:126d980678e5b687c775cf857b4013306f1a761353370258a0f04d92a3553f92" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grubby-8.40-41.el8.aarch64.rpm", + "checksum": "sha256:5eddb5c1febbe6e58491f8e9ee8fc9897298b307e0357c01f49d445cf25283c9" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gzip-1.9-9.el8.aarch64.rpm", + "checksum": "sha256:e82699d15e4e6ff7825629d7c1c8a0f50a5519b6e5328472de91a0deddb9cf3d" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hardlink-1.3-6.el8.aarch64.rpm", + "checksum": "sha256:fc51460213b3bf5b67f08f2695aae8d728f614adbbacb917a0825e4ebfbc3e68" + }, + { + "name": "hdparm", + "epoch": 0, + "version": "9.54", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hdparm-9.54-2.el8.aarch64.rpm", + "checksum": "sha256:4059e9cccbde0401f9af4dea1160a07af8760adbc3e1d964e5c8ac87307eff81" + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.20", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hostname-3.20-6.el8.aarch64.rpm", + "checksum": "sha256:7fc33f147b99749fdbae420ed51277cb99d9b6418b7f739fe51c7563945bc0d7" + }, + { + "name": "hwdata", + "epoch": 0, + "version": "0.314", + "release": "8.5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hwdata-0.314-8.5.el8.noarch.rpm", + "checksum": "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ima-evm-utils-1.1-5.el8.aarch64.rpm", + "checksum": "sha256:cf8fdbfcd359aac8bf55500c24e6843baafe8fef35019126c3616806b41415b3" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/info-6.5-6.el8.aarch64.rpm", + "checksum": "sha256:3f7e5e72ab9e18dbca936b40734c91520242a49a9e98a2f2589f397faa6ad8e8" + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.00.8", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/initscripts-10.00.8-1.el8.aarch64.rpm", + "checksum": "sha256:f7de2bbb3653c3033d43f645ac26e91c788527c0b4d5e7238dea54c3adc6f1a1" + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.2.4", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ipcalc-0.2.4-4.el8.aarch64.rpm", + "checksum": "sha256:21685a7b79484a6d684efd86af6fb23dc13aaadc534cc4c4ae3edc0ceb84051b" + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.3.0", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iproute-5.3.0-5.el8.aarch64.rpm", + "checksum": "sha256:f4f5cc3080dc150c47b27383a344937fe17a679cb7046ca76165654d4e207a0b" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iptables-libs-1.8.4-14.el8.aarch64.rpm", + "checksum": "sha256:0fd7dd5b060e7533144ad7a3cae2453ad6f87650010f328879b10c7c4cba0c04" + }, + { + "name": "iputils", + "epoch": 0, + "version": "20180629", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iputils-20180629-2.el8.aarch64.rpm", + "checksum": "sha256:ebcaa2d2ec8ddaa66d042a208ccee6b13735ffba04fe3f326954cd76fa4f5910" + }, + { + "name": "irqbalance", + "epoch": 2, + "version": "1.4.0", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/irqbalance-1.4.0-4.el8.aarch64.rpm", + "checksum": "sha256:a445e982c81c7a64f6660f7f3bf6ed03dac3cd599dcb1e4bae06b8f236ea7e7f" + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.11", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/jansson-2.11-3.el8.aarch64.rpm", + "checksum": "sha256:c0f53020ecdb8eefb21795b0acf589334e89a9ef339a84d42e61999f53c67d18" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-c-0.13.1-0.2.el8.aarch64.rpm", + "checksum": "sha256:36aece7b7a65785985bf0b98701514f12735a87517b8578a3eb3710f82ba4765" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-glib-1.4.4-1.el8.aarch64.rpm", + "checksum": "sha256:1143ac623a74d7feaaaf293c18d942d243248f6356628f87216670c10d11687b" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-2.0.4-10.el8.aarch64.rpm", + "checksum": "sha256:10ac3bf7565725a55b0aef56f65befd0d320219fc83adfab6e564c19f8c44bd6" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "kernel", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-4.18.0-221.el8.aarch64.rpm", + "checksum": "sha256:0136940a3e28a159e7347b0bc7d1dbbc0339c64f431349e355f75abe31cbf21c" + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-core-4.18.0-221.el8.aarch64.rpm", + "checksum": "sha256:0d61e2dfcaed066e4ef74e4baddab9cdec24602aeb7a98306481f38cb5f449eb" + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-modules-4.18.0-221.el8.aarch64.rpm", + "checksum": "sha256:d74da38b942dc95929b21c8fcf2c5d2fb4468b78ed14e7a4bcbe933998be4deb" + }, + { + "name": "kernel-tools", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-tools-4.18.0-221.el8.aarch64.rpm", + "checksum": "sha256:3e40a3103fbf71c83773beac7373d0e790631cb3c918d8b20a883c8e65e70136" + }, + { + "name": "kernel-tools-libs", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-tools-libs-4.18.0-221.el8.aarch64.rpm", + "checksum": "sha256:5896ab6e22741dc47c8c70de8c72178e7956cfba2abbda9c6b4ebbc54921b636" + }, + { + "name": "kexec-tools", + "epoch": 0, + "version": "2.0.20", + "release": "29.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kexec-tools-2.0.20-29.el8.aarch64.rpm", + "checksum": "sha256:e1826902c98cca301a4e0876b34e6c77f1688a1fb613c265cea37e2ee40e7884" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/keyutils-libs-1.5.10-6.el8.aarch64.rpm", + "checksum": "sha256:e4ec1966f9bc7cbc898fe7550600ae3e9e4f8afbcdd3f6e74afe1965247653ba" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-25-16.el8.aarch64.rpm", + "checksum": "sha256:1091a799d34a42d2e42ac462b4f979a55d17513eca5a00bad9bdba56cca83357" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-libs-25-16.el8.aarch64.rpm", + "checksum": "sha256:6f87f305a3e0e0faf69c2a9d4f277958ca33e85b72c6e4f77a365a5f60ced3d3" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kpartx-0.8.4-2.el8.aarch64.rpm", + "checksum": "sha256:4a27cd4496ebdba821b3c7692eeb0c0fff28c6af69fe4fe9e4bf52511639bd6a" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/krb5-libs-1.18.2-3.el8.aarch64.rpm", + "checksum": "sha256:ca87249f90bac96902d18c11a1f8c80566fa090c6473226bdd147e07e3ed21ec" + }, + { + "name": "less", + "epoch": 0, + "version": "530", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/less-530-1.el8.aarch64.rpm", + "checksum": "sha256:551a506b43e32d21bf7b6333e028733956d5ef3560837a0c84b0d3e598efa046" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libacl-2.2.53-1.el8.aarch64.rpm", + "checksum": "sha256:7c014b54f7929348f614f8f4eb7a1552b8565c0a57f3a75ff6471dc05f30cafe" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libarchive-3.3.2-9.el8.aarch64.rpm", + "checksum": "sha256:dfdec57ff520511d1d4ef9d913d90fc8d6ac98685cbc12fb568c8980f2a73f1a" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libassuan-2.5.1-3.el8.aarch64.rpm", + "checksum": "sha256:0f1a02850c102e2a186787504f965c0c10d6432b9f600c18bc2f520e55f04a8c" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libattr-2.4.48-3.el8.aarch64.rpm", + "checksum": "sha256:6f2bfbe0f23d3b233aacb72c153ee133839353325f028321eb5ea38b0dc06c02" + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libbasicobjects-0.1.1-39.el8.aarch64.rpm", + "checksum": "sha256:030eef043bf4cfdffc0a672ca2c1499281fbcb78a81a98a9e932ba0b7c9ebb6b" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libblkid-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:d173b35182f28b9dd48e4a942f2a20c659bee2f9ac234b60cf8b995aa2421382" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-2.26-4.el8.aarch64.rpm", + "checksum": "sha256:2cddadff38ccef2364a7e40af0e1d9b3bf9c06869c15ceeb655f3cfa431c2083" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-ng-0.7.9-5.el8.aarch64.rpm", + "checksum": "sha256:62a2878605ca0415fd60adcff4c7068d855d20737498a968fabc646610ccbe5c" + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcollection-0.7.0-39.el8.aarch64.rpm", + "checksum": "sha256:9138a16731ceb7fdbb8661338a5806692a7a95875894aac95069104f44bca234" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcom_err-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:e5f82f102f51d88aa517bbebd170795a571b7ddc3036574b92b498cc13704d98" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcomps-0.1.11-4.el8.aarch64.rpm", + "checksum": "sha256:ff9fc6467a4c2fd0c22c419a9cdb7a524d1c69d0c87aa09f31728bef9f692f76" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcroco-0.6.12-4.el8.aarch64.rpm", + "checksum": "sha256:86ae7501bdf0149728879f488dd4c86907216cb5b021192347a5c10a55382931" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcurl-7.61.1-12.el8.aarch64.rpm", + "checksum": "sha256:2809ad51c6eb6c9a54d64cccc2cd948f6fd4207f32b4493b3f4a9bd0886c894b" + }, + { + "name": "libdaemon", + "epoch": 0, + "version": "0.14", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdaemon-0.14-15.el8.aarch64.rpm", + "checksum": "sha256:c7a1a166d4a58fd42848d05e4dd0d8bc459fa3b585396230729978f9cffc4474" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-5.3.28-39.el8.aarch64.rpm", + "checksum": "sha256:84e7102978d76d80aa40c43efcc71c1e54e819195132df921a8c13cec54328da" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-utils-5.3.28-39.el8.aarch64.rpm", + "checksum": "sha256:621e96e91103f2f701e4ac3b8b8b6ef9aab4db5ab8fb3e141eb02e3f328aed79" + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdhash-0.5.0-39.el8.aarch64.rpm", + "checksum": "sha256:afcbadced001b780cb7fc4c180b070acb48c2fff04783d6a4a35d08fae9928d0" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdnf-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:fac29887224d91e8190a569b3ac5be1168034f36c9c234576ea3cefe686e46cd" + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "23.20170329cvs.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libedit-3.1-23.20170329cvs.el8.aarch64.rpm", + "checksum": "sha256:b93a509fc65dd88761b4f7f21d8a05f1cd22e878ac59eb7d8e1507f5a2376a1e" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libevent-2.1.8-5.el8.aarch64.rpm", + "checksum": "sha256:058822931f4c34c18675116c1b02b718de4044c1019acb0d5f97417f00a30ba7" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libfdisk-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:d6aa17908468b5e2095526664fce6627dec7a02c26625339c14b9278cc39d4a6" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libffi-3.1-22.el8.aarch64.rpm", + "checksum": "sha256:4a40a1538c8a488f32476f96d2461c3b792eb0cf5acb998e397d8a9cef8e5461" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcc-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:3b607f0dbedecb25239e22c1f553c8d70db9d2206a877fa07567fa1a49e233d7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcrypt-1.8.5-4.el8.aarch64.rpm", + "checksum": "sha256:8498846918c7bc7a20553340434cfbfb0d19185adcd0ff52866c6506ab8f747d" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgomp-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:53fa2fd6a138d00c697b827a77bcc25ec498b1d49bb04ef80594e81ccabc165d" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgpg-error-1.31-1.el8.aarch64.rpm", + "checksum": "sha256:5a05f1126ed38f752af247dcdf7c958e738b935b8b6d942fd42f423768f05255" + }, + { + "name": "libgudev", + "epoch": 0, + "version": "232", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgudev-232-4.el8.aarch64.rpm", + "checksum": "sha256:bcd19fd35b5f8535ff5bb15db91e2339c9435908c1123d5e2272fcae15a62260" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libidn2-2.2.0-1.el8.aarch64.rpm", + "checksum": "sha256:2dc8e2f52451d1a11b16bbb389a24c58b61a1ba804ee777f9d06dbe4e1fcf6e5" + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libini_config-1.3.1-39.el8.aarch64.rpm", + "checksum": "sha256:09f390f3bf4dac907dfbc58b714d6c3de1ee7755a0ca5661b2f7c0a7dfbcfcff" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-1.2.0-2.el8.aarch64.rpm", + "checksum": "sha256:83301ca502322e0634173460bf8fa35572c36ab8cc2e6e600bf9980f845fc857" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.aarch64.rpm", + "checksum": "sha256:f07b1f40ebb1fbe5c24e68a38b5f768a21e2ec2254d4bd8ff61fb0bde72f64ce" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libksba-1.3.5-7.el8.aarch64.rpm", + "checksum": "sha256:704e1dc996a17815c6dcf7029c0ddb2849d40feaab6e9b9c687af9d95fef825c" + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.1.3", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libldb-2.1.3-2.el8.aarch64.rpm", + "checksum": "sha256:439c408eb3f33e9d8bea308afda0b32fadf7910f7b064c9821499332672a60cf" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmetalink-0.1.3-7.el8.aarch64.rpm", + "checksum": "sha256:fa80a7e82e231dc77b3e44edd2cbf5b3d1657e009e59f15bbe8d50a4290b7c82" + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmnl-1.0.4-6.el8.aarch64.rpm", + "checksum": "sha256:0f6d940ccddd815da01182de1e7b7e2d12c493125285ff7ee902843beefdec16" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmodulemd-2.9.4-2.el8.aarch64.rpm", + "checksum": "sha256:ba1364539f16d7c8379d7563fd0634651fa8a05b3f7098a21ba96e1f5641f132" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmount-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:26b14d8f226962ce712bbccfb245843759e835a24a139eacae86d680043a85a7" + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libndp-1.7-3.el8.aarch64.rpm", + "checksum": "sha256:abfda01b6d377de999efa9c2b4870bf3ba43cd50155f036d13aae0ba4a617565" + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.3.3", + "release": "35.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnfsidmap-2.3.3-35.el8.aarch64.rpm", + "checksum": "sha256:26e7368e961b374cefb947dab3a98387a3da15a86331a0d99d7b0e68ef246626" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.aarch64.rpm", + "checksum": "sha256:4874e739ed37bc6a5bfdb6069d4620e5f7efe01d60eb9fd2550c550167c99990" + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnl3-3.5.0-1.el8.aarch64.rpm", + "checksum": "sha256:8c0d40edf059bf044314df38c84e26cfbe00bf4e687a6114eacb17251718312b" + }, + { + "name": "libnl3-cli", + "epoch": 0, + "version": "3.5.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnl3-cli-3.5.0-1.el8.aarch64.rpm", + "checksum": "sha256:091c7cf9a81bc55f9d813c40904e1b7b4f8889df3584d0978e0f6770f01042e9" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.aarch64.rpm", + "checksum": "sha256:471663fca7e3f609834368d69d8f1f469cfc0d3f3e95dc2b79381722d0368edc" + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpath_utils-0.2.1-39.el8.aarch64.rpm", + "checksum": "sha256:9a22fe8cebacb37d6bc22105db763016689e9ac06bee33fc41693f60b076ff0c" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpcap-1.9.1-4.el8.aarch64.rpm", + "checksum": "sha256:435a2be84a2b38372965dbd60ffed0ed38a616b8100859787a8bb3b19d9fc4d9" + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpipeline-1.5.0-2.el8.aarch64.rpm", + "checksum": "sha256:684080ec9230dce2d32c9b00ae381a00bb950d1984ed0b0e1c55fa6d75b6b099" + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.34", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpng-1.6.34-5.el8.aarch64.rpm", + "checksum": "sha256:1fbb9fed42dff3f9dbc9e4fd929281408f77506423424759c2ac57b76afc3cdb" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpsl-0.20.2-6.el8.aarch64.rpm", + "checksum": "sha256:6557d001315e85ac123b1378c5aafb81428e2383debcacf3f91c55476cfc48eb" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpwquality-1.4.0-9.el8.aarch64.rpm", + "checksum": "sha256:d6ab7c8790cd6c9a137d908d840c51c547e950d25f6ab8af3c9ad3899ff6c044" + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libref_array-0.1.5-39.el8.aarch64.rpm", + "checksum": "sha256:95630378635c5e89eb204b2921dbd5db2e87d949e167fcf022174a3e63b532cb" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librepo-1.12.0-1.el8.aarch64.rpm", + "checksum": "sha256:2d74e0ab14393921c6160fda8dd533b58c0348acdf5ee5c306ffc64221700de2" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libreport-filesystem-2.9.5-11.el8.aarch64.rpm", + "checksum": "sha256:e55bf252e792f27f076101e94dfbbac97dabeea0f7893a4cb9b111a0b72d187f" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librhsm-0.0.3-3.el8.aarch64.rpm", + "checksum": "sha256:e9487db2fdce1f494ee1582787a1afc1ea4e0429189db8be0ddbb0af2676c4b6" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libseccomp-2.4.3-1.el8.aarch64.rpm", + "checksum": "sha256:cc7e751a62f9a28b82df0bce0ecfb050364b8688ef69473f1910909e44c5eb98" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsecret-0.18.6-1.el8.aarch64.rpm", + "checksum": "sha256:c1b5c4668331e8b05a08e7de432cbfb75f8072401bb6651a24e43f64eff8dcc4" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-utils-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:c82ca1c0ef4b89f75e8e7edbbae4f3eeb2720a4abd56b0927928cff2d9721186" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsemanage-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:140146ebcbadd9b0f2aa5c2fcde5c93888f2d84ce61a2a4cf148ef435d1ba410" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsepol-2.9-1.el8.aarch64.rpm", + "checksum": "sha256:c8a28b4587888435c51f6d1ce42f48b08fb0256e4029ea569e9a02adcb82c85a" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsigsegv-2.11-5.el8.aarch64.rpm", + "checksum": "sha256:bf267d9571cf568375e261d593236750f400ac536c1c818513106482ebc3fb10" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsmartcols-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:f35c0da3cff05ded33c0cb4f202dbb52a5caabec8b1897d5057df83c284d62f1" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsolv-0.7.11-1.el8.aarch64.rpm", + "checksum": "sha256:2397506a63455e543b201938f605e687de5590d9a06282824e2f6bfdf5e0f149" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libss-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:268d9232f0853037100432e9363c659cf99927e03f759fd4884643b560710cd6" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-0.9.4-2.el8.aarch64.rpm", + "checksum": "sha256:3ee6a4f61935c2f0698ad2c4834a5864920a1e48d55c7800da7c382249895e39" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_autofs-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:0f2c07acd21a998f0a4b2a569ebfd143b889d6a5105541b2393dab96cd027a10" + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_certmap-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:a213587722f7c8a0291a56f352861ec661604051c952ebf6a428ae969af377d0" + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_idmap-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:2180d7f1748a5049763d5626b8e14b2c7442e5491a63094a79dded66bcc5c7b0" + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_nss_idmap-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:1657e36d9213739cfef8bacc8876153692f5a5b4d87dd5dde86ad182dd63ca1b" + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_sudo-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:0ac8999f5ebca6b808973d0db5038a835daa2358af1007e9cb972b0e96eae217" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libstdc++-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:f4e63e7eedc0266a575eb6107f41c5f20ca0505a0e80145c21b9741674d5c0b5" + }, + { + "name": "libsysfs", + "epoch": 0, + "version": "2.1.0", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsysfs-2.1.0-24.el8.aarch64.rpm", + "checksum": "sha256:fd202f857b3c5a15b8f66f86fd515c44a47c87c028d7db766661758dc3673436" + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.1", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtalloc-2.3.1-2.el8.aarch64.rpm", + "checksum": "sha256:d2efb494bd4793fdcaaad35a66d7721df7ec53b6fc8da4fa8c8f24008533f38a" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtasn1-4.13-3.el8.aarch64.rpm", + "checksum": "sha256:ed28e1e31109e27ce1c676914364c9f1dd46b71d00cb4cf13931f0fec6cf6978" + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtdb-1.4.3-1.el8.aarch64.rpm", + "checksum": "sha256:ed8e018fb3a2ae3243b047b7f25cd7bd0b5b73abc6f254de3a7d13a6a568e4a4" + }, + { + "name": "libteam", + "epoch": 0, + "version": "1.29", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libteam-1.29-5.el8.aarch64.rpm", + "checksum": "sha256:5801caf2cc296b52b3b89b24eaf431fba2c130e948076aaf345988a754cca65c" + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.2", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtevent-0.10.2-2.el8.aarch64.rpm", + "checksum": "sha256:1eff42ff409079d679c7777483d476f3261a2881b456b6280e81f7903a0cd499" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtirpc-1.1.4-4.el8.aarch64.rpm", + "checksum": "sha256:481bbd6d73415d437a73eee7977ec370299acdac44b215a026652debba31783d" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libunistring-0.9.9-3.el8.aarch64.rpm", + "checksum": "sha256:da4b9bfad26d559485ade669556512acfe93ba23d204f2556bac82c09401b4e7" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libusbx-1.0.23-3.el8.aarch64.rpm", + "checksum": "sha256:01e486a3be67325e9692e909f5c6534137ee6a6df185ba2c09d4d50fe6c738f6" + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "23.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libuser-0.62-23.el8.aarch64.rpm", + "checksum": "sha256:9a9546fcc510204dc7bcfe61d6ca63f436c01cd9b3f8451c8f07ec4f4fc2ba68" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libutempter-1.1.6-14.el8.aarch64.rpm", + "checksum": "sha256:ad07261ff4f478be9511f7ee749bfbe8b2ba8e28696c2f561caa20e35c535134" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libuuid-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:95de1777f7e8a734445c5d45e0b77da8b6c41a9b504582ed266d852c677a936b" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libverto-0.3.0-5.el8.aarch64.rpm", + "checksum": "sha256:532d46a4c0e68bd45eabc3e2ba6d570880344044e1034f5f347b37c470d0dced" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxcrypt-4.1.1-4.el8.aarch64.rpm", + "checksum": "sha256:876ffb285aaeddb2c18ae32527bd4ee202710bd8e18d5b410af22937646dcdec" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxml2-2.9.7-8.el8.aarch64.rpm", + "checksum": "sha256:fb56b7a416e12da0782ae8ba7396bc03a2f8844c2efcb5df3f8b9e74eb8b8059" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libyaml-0.1.7-5.el8.aarch64.rpm", + "checksum": "sha256:7864fbc866ae5a3e59b4f0f114b77ff52b55e76c5388a917f82a6097f02a4db7" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libzstd-1.4.4-1.el8.aarch64.rpm", + "checksum": "sha256:19d1de27d2f62b4a55735233807f70a1e8ff7551fed97ee8650dbd09c1ef50ea" + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20200619", + "release": "99.git3890db36.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/linux-firmware-20200619-99.git3890db36.el8.noarch.rpm", + "checksum": "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9" + }, + { + "name": "logrotate", + "epoch": 0, + "version": "3.14.0", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/logrotate-3.14.0-4.el8.aarch64.rpm", + "checksum": "sha256:0cbb121302cc38ac16f8f9bd5ea8bd3ce3e2121f6c25c985b66bd29a532f2f7c" + }, + { + "name": "lshw", + "epoch": 0, + "version": "B.02.19.2", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lshw-B.02.19.2-2.el8.aarch64.rpm", + "checksum": "sha256:01d5881b441b015ac394e66fb27dbc5cb11befc8080973208806257ecee2d12d" + }, + { + "name": "lsscsi", + "epoch": 0, + "version": "0.30", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lsscsi-0.30-1.el8.aarch64.rpm", + "checksum": "sha256:6cf02dd99fda867d11fdbb28fe0a277328319aece74b864133a8774cacd2bf54" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lua-libs-5.3.4-11.el8.aarch64.rpm", + "checksum": "sha256:bc0f9bd34ac6a01dd7272b87e1b7a33045ff8c6793cac02fa639dfc9341e8215" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lz4-libs-1.8.3-2.el8.aarch64.rpm", + "checksum": "sha256:64ac5cb6fd3da1610812795ce17e09648d89c87513d6284b852a3455b0831d3a" + }, + { + "name": "lzo", + "epoch": 0, + "version": "2.08", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lzo-2.08-14.el8.aarch64.rpm", + "checksum": "sha256:f237a314daeeb228f767e1521edffa9e9b15b07695ba1008b0f2b6807085b9cb" + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.7.6.1", + "release": "17.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/man-db-2.7.6.1-17.el8.aarch64.rpm", + "checksum": "sha256:60934825531d0364649b0441321d12e8823336d54550007258d7523286d2fa2e" + }, + { + "name": "mokutil", + "epoch": 1, + "version": "0.3.0", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mokutil-0.3.0-9.el8.aarch64.rpm", + "checksum": "sha256:aeda2c664e2d993e56008f68823d05ec6d7665f2bb65b5f990c2112f0a7f91cb" + }, + { + "name": "mozjs60", + "epoch": 0, + "version": "60.9.0", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mozjs60-60.9.0-4.el8.aarch64.rpm", + "checksum": "sha256:10a83db8ac5065869be834bf6ec61185eded982f885def5979948736e5c3ab95" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mpfr-3.1.6-1.el8.aarch64.rpm", + "checksum": "sha256:320ced09e242f09047f4fab0a7f66aba6de2e42583f6a2e164eadcc1ffd0b915" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-6.1-7.20180224.el8.aarch64.rpm", + "checksum": "sha256:8ac1003d722e3d5f383c9b970bf6dfbc905007a624abadb63e520d7a93993747" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-libs-6.1-7.20180224.el8.aarch64.rpm", + "checksum": "sha256:f99f5edde9ad4574b84264c467420c910b31f78683fbf1b63d106a7e6c9d64a3" + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.52.20160912git.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/net-tools-2.0-0.52.20160912git.el8.aarch64.rpm", + "checksum": "sha256:edba68c63891b1171417b8d3af5827cc45a37210d18d701c0e178870e5435031" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/nettle-3.4.1-2.el8.aarch64.rpm", + "checksum": "sha256:e2c4ac0f7abf75cbcc7a6fb35412820c267f1a8ce614f41b60d901918c4616d5" + }, + { + "name": "newt", + "epoch": 0, + "version": "0.52.20", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/newt-0.52.20-11.el8.aarch64.rpm", + "checksum": "sha256:f6df1feba76d87214433eee205e3b99621dcd78b485ed5f99ba2658117786b6c" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/npth-1.5-4.el8.aarch64.rpm", + "checksum": "sha256:daf36ee86ec6001770ae68bdd82409526faf4b9b1313a6b74fb54cfb98ff571e" + }, + { + "name": "numactl-libs", + "epoch": 0, + "version": "2.0.12", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/numactl-libs-2.0.12-11.el8.aarch64.rpm", + "checksum": "sha256:c59a19d44466633bf19e18463ece1ec20cdeae962f1ea3613bd09a2ffb160318" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openldap-2.4.46-15.el8.aarch64.rpm", + "checksum": "sha256:cfa188d39884fd4ba36d27e8fb25aed9dbd26efccffbfd01a24c2c580fdb96f1" + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-8.0p1-5.el8.aarch64.rpm", + "checksum": "sha256:af98260ff2c263c9cefcb96d16d200941c1873cda9868b57df51b034066940fe" + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-clients-8.0p1-5.el8.aarch64.rpm", + "checksum": "sha256:bd03a8a056bc9d2df361688583521f5f656e83fc893b90d349b6282178f9330b" + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-server-8.0p1-5.el8.aarch64.rpm", + "checksum": "sha256:b35f92dddd2cd73f7f8d8595ebb197a1c67a214ec2acf960ac673a014f2d9b90" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-1.1.1g-9.el8.aarch64.rpm", + "checksum": "sha256:3ef63ecbebf844bcf682c9482dc0ddd158c955b0f066b62eb9575bb9a9642db5" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-libs-1.1.1g-9.el8.aarch64.rpm", + "checksum": "sha256:448d3ff44e7f32f3b33e891180e248dc1bcd4d410f68015a8b0c30dc7c385aca" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-pkcs11-0.4.10-2.el8.aarch64.rpm", + "checksum": "sha256:290c83afcd2b0a2b17aab95cf72a85da5f8b9f9a9862857c919a0f43e3fce70e" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/os-prober-1.74-6.el8.aarch64.rpm", + "checksum": "sha256:43ab42c8a58267936a89da99e37d3b9fc56489e958060f600ba047445ca44ee3" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-0.23.14-5.el8_0.aarch64.rpm", + "checksum": "sha256:651f38873d3356ec4efb27d04658541080d11cf1ece6335a07db1ca089fa7da3" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.aarch64.rpm", + "checksum": "sha256:ec40be9e0b2bb03f7b057a7a9342ffbd86129d58828fb310f445bc506261eb0e" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pam-1.3.1-11.el8.aarch64.rpm", + "checksum": "sha256:04c031a07bde4360484a0180e832036d3ac45a95c4839e54d7a02423df5485ef" + }, + { + "name": "parted", + "epoch": 0, + "version": "3.2", + "release": "38.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/parted-3.2-38.el8.aarch64.rpm", + "checksum": "sha256:2b6d1fbf6f54f06c168862e19e03aa0ce32c299fb3f7e4cd1bf4aa9df4b4d995" + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/passwd-0.80-3.el8.aarch64.rpm", + "checksum": "sha256:8e916224ddbb8a7d8cd305f11087c66df950a318e4ef64290bca1afdc1327950" + }, + { + "name": "pciutils", + "epoch": 0, + "version": "3.6.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pciutils-3.6.4-2.el8.aarch64.rpm", + "checksum": "sha256:0ac96870f86e4a275b6d7be6a6045383ff3071653b7e897538f713ba905edb42" + }, + { + "name": "pciutils-libs", + "epoch": 0, + "version": "3.6.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pciutils-libs-3.6.4-2.el8.aarch64.rpm", + "checksum": "sha256:6b14c3aa52da9a2eae13f2229bac41060ad7421ce5249eca80f4aa53e26344ab" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre-8.42-4.el8.aarch64.rpm", + "checksum": "sha256:fea4eb54fe59451b76fb40b9bd15ff41f0f51bb7371f94b2f5df572ef917d037" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre2-10.32-2.el8.aarch64.rpm", + "checksum": "sha256:ce8c92fa2bef1770f44992db24e1cb8cc850feab03a74cf0ebf741ecb0d160ea" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pigz-2.4-4.el8.aarch64.rpm", + "checksum": "sha256:f847957437e7f24844930c4a3ff64c5f7877f083553f48eeadca3c5f5e5c728e" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-3.6.8-30.el8.aarch64.rpm", + "checksum": "sha256:68593fad4413255772bd08ed7f8b578332f0f53e002c8c7473d90c966a87131b" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/policycoreutils-2.9-9.el8.aarch64.rpm", + "checksum": "sha256:b90ce065d5ea98845733ff06e47d385937f6293ebddf52144c80f5fe1f296307" + }, + { + "name": "polkit", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/polkit-0.115-11.el8.aarch64.rpm", + "checksum": "sha256:3f8039ed081aa3f628e947656af825b4541ded3547675098eabb0f177eca45e7" + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/polkit-libs-0.115-11.el8.aarch64.rpm", + "checksum": "sha256:861346b2e683c09a53c9418a9ed08faf7448e066e3111482c70722cb62a6edce" + }, + { + "name": "polkit-pkla-compat", + "epoch": 0, + "version": "0.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/polkit-pkla-compat-0.1-12.el8.aarch64.rpm", + "checksum": "sha256:4a7d4068f39dbb01d7f707f9912abfddcc065a62b66144eeb7b7e2f13cec68af" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/popt-1.16-14.el8.aarch64.rpm", + "checksum": "sha256:4e4923f05d0032263d570075b9b832b9fc3550cd8f82f9a6b0b9b25061726110" + }, + { + "name": "prefixdevname", + "epoch": 0, + "version": "0.1.0", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/prefixdevname-0.1.0-6.el8.aarch64.rpm", + "checksum": "sha256:6c3ee8b53c0af9bd4958b4e48d4d55fa7c574f444fb42eead1508ad740f97088" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/procps-ng-3.3.15-2.el8.aarch64.rpm", + "checksum": "sha256:d890d028f59e2553730fad3dbea0e1a245c92c24836513fa2281194b1c90b53a" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-asn1crypto", + "epoch": 0, + "version": "0.24.0", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-asn1crypto-0.24.0-3.el8.noarch.rpm", + "checksum": "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34" + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-audit-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm", + "checksum": "sha256:48509ce37ec06c1b15149feec4b2eb5d3a2f0453a41804c9c5d9ef5b8b320d4f" + }, + { + "name": "python3-cffi", + "epoch": 0, + "version": "1.11.5", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-cffi-1.11.5-5.el8.aarch64.rpm", + "checksum": "sha256:c00024ec890b67b443e2c40a0580a1263458dc9d09f4bde578d7c045323946b1" + }, + { + "name": "python3-chardet", + "epoch": 0, + "version": "3.0.4", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-chardet-3.0.4-7.el8.noarch.rpm", + "checksum": "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786" + }, + { + "name": "python3-configobj", + "epoch": 0, + "version": "5.0.6", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-configobj-5.0.6-11.el8.noarch.rpm", + "checksum": "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367" + }, + { + "name": "python3-cryptography", + "epoch": 0, + "version": "2.3", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-cryptography-2.3-3.el8.aarch64.rpm", + "checksum": "sha256:a5c6189b8644cea4d4039375dfe2d828e08a59896e9827ac967782d225a78619" + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.6.1", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm", + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.4", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dbus-1.2.4-15.el8.aarch64.rpm", + "checksum": "sha256:8329bf1aedce9ef3a4d7513ef98d3931ad39b84d5c3e73e99936c7f9b87931c2" + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.2.1", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm", + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dnf-plugins-core-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87" + }, + { + "name": "python3-ethtool", + "epoch": 0, + "version": "0.14", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-ethtool-0.14-3.el8.aarch64.rpm", + "checksum": "sha256:4fe7733b93fad52a48d4b47a6dc55582f3cc41fc2074e42a9b39fc5d407df6d3" + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.28.3", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-gobject-base-3.28.3-2.el8.aarch64.rpm", + "checksum": "sha256:31043a7324411dad6b84f6504a9e9cb7ece9f576acf091be522e484c8b82f469" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-gpg-1.13.1-3.el8.aarch64.rpm", + "checksum": "sha256:90405803c0159cdf0f74a26b6ce064cfd9973e59232b2923ed171a38fc5684a6" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-hawkey-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:4909edde46b5b2b58d228bacafa3bab5bc5847559d591d59ecd59cdf50d36db4" + }, + { + "name": "python3-idna", + "epoch": 0, + "version": "2.5", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-idna-2.5-5.el8.noarch.rpm", + "checksum": "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20" + }, + { + "name": "python3-iniparse", + "epoch": 0, + "version": "0.4", + "release": "31.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm", + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "name": "python3-inotify", + "epoch": 0, + "version": "0.9.6", + "release": "13.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm", + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "name": "python3-jwt", + "epoch": 0, + "version": "1.6.1", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-jwt-1.6.1-2.el8.noarch.rpm", + "checksum": "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libcomps-0.1.11-4.el8.aarch64.rpm", + "checksum": "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libdnf-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:9b6fcdd19caee5fe77b9ed17adb3f11769a7109ebcf52d3cb3358d5a9eecc391" + }, + { + "name": "python3-librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-librepo-1.12.0-1.el8.aarch64.rpm", + "checksum": "sha256:b386b3ec3cb96fe9178fd1d2b245eddff0bdb2742a8f18e25faef1e98c00f42f" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libs-3.6.8-30.el8.aarch64.rpm", + "checksum": "sha256:65b8d755ff01dfefa423d2f0bd6fd54cfc4c580da63510e19cf178abb6e26172" + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libselinux-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:9c416279320ab29a8ef4fc32ca60beaec4c8da6054d10695cd2b37af19cd0ee9" + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libsemanage-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:b9ceb537921c8d98f1e874c0a39cf0c6a606f469be21be151fa119e4b9c7f06a" + }, + { + "name": "python3-linux-procfs", + "epoch": 0, + "version": "0.6.2", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-linux-procfs-0.6.2-2.el8.noarch.rpm", + "checksum": "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f" + }, + { + "name": "python3-magic", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-magic-5.33-16.el8.noarch.rpm", + "checksum": "sha256:8e2c0324789f42ebb6324847249699eb499544a3e6ad67ccd74713b3c1d6ce78" + }, + { + "name": "python3-oauthlib", + "epoch": 0, + "version": "2.1.0", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-oauthlib-2.1.0-1.el8.noarch.rpm", + "checksum": "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6" + }, + { + "name": "python3-perf", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-perf-4.18.0-221.el8.aarch64.rpm", + "checksum": "sha256:3c096d861c04f97c89dcf335d66a169bca3d371d9589e547c50f18b4180a9e6f" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-ply", + "epoch": 0, + "version": "3.9", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-ply-3.9-8.el8.noarch.rpm", + "checksum": "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9" + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-policycoreutils-2.9-9.el8.noarch.rpm", + "checksum": "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42" + }, + { + "name": "python3-pycparser", + "epoch": 0, + "version": "2.14", + "release": "14.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pycparser-2.14-14.el8.noarch.rpm", + "checksum": "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf" + }, + { + "name": "python3-pysocks", + "epoch": 0, + "version": "1.6.8", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pysocks-1.6.8-3.el8.noarch.rpm", + "checksum": "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280" + }, + { + "name": "python3-pyudev", + "epoch": 0, + "version": "0.21.0", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pyudev-0.21.0-7.el8.noarch.rpm", + "checksum": "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde" + }, + { + "name": "python3-pyyaml", + "epoch": 0, + "version": "3.12", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pyyaml-3.12-12.el8.aarch64.rpm", + "checksum": "sha256:0265d8b987f411738f3b53bd1f84386955704122e20ece4eb232a0df89ff62f0" + }, + { + "name": "python3-requests", + "epoch": 0, + "version": "2.20.0", + "release": "2.1.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-requests-2.20.0-2.1.el8_1.noarch.rpm", + "checksum": "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-rpm-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:b5b1f5f7a02f70db056861813ddcf181f2ebba507cd368fbe2c32f262edf7fc6" + }, + { + "name": "python3-schedutils", + "epoch": 0, + "version": "0.6", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-schedutils-0.6-6.el8.aarch64.rpm", + "checksum": "sha256:a05f9b43292810dde4e6acd64eac2a80f047d35533d2d5e647565f75502189fa" + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.3.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setools-4.3.0-1.el8.aarch64.rpm", + "checksum": "sha256:342d7cd5f427c0d9c02336bc4f189225b3b57c5899f5d26b61b351fc37f99489" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.11.0", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm", + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "name": "python3-subscription-manager-rhsm", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-subscription-manager-rhsm-1.27.9-1.el8.aarch64.rpm", + "checksum": "sha256:d868f3e9b48e1acc5c7674292619f1e80a2a2617aa1ab75d7cb4665495bdc654" + }, + { + "name": "python3-syspurpose", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-syspurpose-1.27.9-1.el8.aarch64.rpm", + "checksum": "sha256:6d46339afc3d65beb89cbb36052e779e95ef2448a163d26db13d67715dad9cf8" + }, + { + "name": "python3-urllib3", + "epoch": 0, + "version": "1.24.2", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-urllib3-1.24.2-4.el8.noarch.rpm", + "checksum": "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/readline-7.0-10.el8.aarch64.rpm", + "checksum": "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-8.3-0.2.el8.aarch64.rpm", + "checksum": "sha256:a6292dd846bc471b22409fc95a5e09c88bcb6176251dc5cc11f4b14a73ddda11" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-eula-8.3-0.2.el8.aarch64.rpm", + "checksum": "sha256:784d385116891056b618722c933d43c5b395b92fa82e5bc797081317ec6a82ba" + }, + { + "name": "rng-tools", + "epoch": 0, + "version": "6.8", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rng-tools-6.8-3.el8.aarch64.rpm", + "checksum": "sha256:13471e37bb0089a322183fc9e7a53948f0b203b54277630e75606a835268ad5d" + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "22.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rootfiles-8.1-22.el8.noarch.rpm", + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:47b483c0f556c56f0b1f468603c57834864902ae5a849a18c8a0ca5f76d66c86" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-build-libs-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:c633b98b4dbf96674a69573404819c34d66eb7e19820283fc588f6b10b0e3fc8" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-libs-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:d3fb5a473c44cd8ae6b94d6bf3fc552553d8f4ef28eed439658ea38990ab9db5" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:0a885c6dc6abd969b828bf2fd7063ee884e6d058eaf405b02f3dd6efb6c66bac" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:0bb7024125ca67119612e55a92da13c989e0306ddd7de7e655a679c963939ef7" + }, + { + "name": "rsync", + "epoch": 0, + "version": "3.1.3", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rsync-3.1.3-8.el8.aarch64.rpm", + "checksum": "sha256:eea9359070225c205cd9233c98fc3e3eaa41848148b726a4ec8414575ae3730e" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sed-4.5-2.el8.aarch64.rpm", + "checksum": "sha256:125c92f23d87b905c21e9f7669f0ec6e41428ab63c8c13f63db8980f292797d5" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "sg3_utils", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sg3_utils-1.44-5.el8.aarch64.rpm", + "checksum": "sha256:4a308727d8b5a3d4cbbbc7d9b07884ebf6a37b4b6eb9a8edab5b61f449142285" + }, + { + "name": "sg3_utils-libs", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sg3_utils-libs-1.44-5.el8.aarch64.rpm", + "checksum": "sha256:a93b90699f26009debf0ac7b6759daf23afa9f3c851ccd7c98e35d9a89824dcb" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shadow-utils-4.6-10.el8.aarch64.rpm", + "checksum": "sha256:a840b8193ce9b1b72e3783b9a9bb2ec91947ba3b6f7ac973ae8e0e20a7059117" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shared-mime-info-1.9-3.el8.aarch64.rpm", + "checksum": "sha256:19cd894b4154d1a8521c6884cfd2a6eaf1f498b7dec5cc31408f8535b9098f2a" + }, + { + "name": "shim-aa64", + "epoch": 0, + "version": "15", + "release": "12", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shim-aa64-15-12.aarch64.rpm", + "checksum": "sha256:b83b5cb8c799dea710e0fffc841abf88495a1f3d04057dd699cff2aac610d7d9" + }, + { + "name": "slang", + "epoch": 0, + "version": "2.3.2", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/slang-2.3.2-3.el8.aarch64.rpm", + "checksum": "sha256:8d5c968225f0a3b7c492fdffb57cf0e34fee77c06a64a94a3a8b52edab30eed7" + }, + { + "name": "snappy", + "epoch": 0, + "version": "1.1.7", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/snappy-1.1.7-5.el8.aarch64.rpm", + "checksum": "sha256:df1f1d61216be55ab9cadc9832e613ffd2350ca8dc03e27f537f22dc0f32e171" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sqlite-libs-3.26.0-10.el8.aarch64.rpm", + "checksum": "sha256:207e6396488c1db18fb7b1f2b9952f48c2625f042c5f6a901d41974ce376b0e0" + }, + { + "name": "squashfs-tools", + "epoch": 0, + "version": "4.3", + "release": "19.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/squashfs-tools-4.3-19.el8.aarch64.rpm", + "checksum": "sha256:6421426a896c0bf32738af8131c37001e532f62ac1242f63ebf6248ea34533b0" + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sssd-client-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:2bbb8eebf42b0f55d735c0f84e2521c339febc7036f2e94332ff013d7406b80a" + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sssd-common-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:428af99d7ff753fc26a13130115c4dcbbac030776a299583d00c69e8ec6a13ca" + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sssd-kcm-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:2cfc9f7d8286002d753d12aa9669522222466c5e1e3f10ed81c8d4d23a3e203c" + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sssd-nfs-idmap-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:6149e0dc3def62605315cbbe59d63b5ca340a791b4c6d3b4d0bda6efee7572f8" + }, + { + "name": "subscription-manager", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/subscription-manager-1.27.9-1.el8.aarch64.rpm", + "checksum": "sha256:4efe61bac45e15b3b1bfda93bf3cfbf72d49c7f0452737d01f12f49b6e624175" + }, + { + "name": "subscription-manager-rhsm-certificates", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/subscription-manager-rhsm-certificates-1.27.9-1.el8.aarch64.rpm", + "checksum": "sha256:2df37064ec55f10e06dc0c05647a296b8ca7867251fe44130206052e58d39bda" + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.8.29", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sudo-1.8.29-6.el8.aarch64.rpm", + "checksum": "sha256:432ef41fd5f9ad2b9a797ed105f6e729dcaf19c17df9c1478802af04e898e305" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-239-36.el8.aarch64.rpm", + "checksum": "sha256:d4467ba499fe1ddd82746ad00d7e86bea59c4827fe1ff8c05132bad1f93ddb7f" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-libs-239-36.el8.aarch64.rpm", + "checksum": "sha256:800c9a0d718c641ceee26c8f625b2dcd79a33963e9e7a11930678dc99582a2d0" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-pam-239-36.el8.aarch64.rpm", + "checksum": "sha256:986683a0edb615a5d45a9c1b0ee3d27f8032c2667cad58d24526085e41010992" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-udev-239-36.el8.aarch64.rpm", + "checksum": "sha256:3fe7c10c144c8fffc00d144317a2bf8029bd9d048432bccfc352dfc6f0995680" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tar-1.30-5.el8.aarch64.rpm", + "checksum": "sha256:ba66a87402ccc8515e164f597f5d254ad9513979fe3ca1ffabf63c915c0daa73" + }, + { + "name": "teamd", + "epoch": 0, + "version": "1.29", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/teamd-1.29-5.el8.aarch64.rpm", + "checksum": "sha256:32c9ff3e0278dbd7022ad76629146ece3fffdc58af14e1eaf97e7052d610daa2" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-0.3.14-4.el8.aarch64.rpm", + "checksum": "sha256:d695df94220c2ef990e502123b3bd8ede8fcfb4f738346dd98d999559b01b6b3" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-lib-0.3.14-4.el8.aarch64.rpm", + "checksum": "sha256:fb263177eee60c26b7acaa76cb640c3d7ab6928e73c8af80b2111a247bd61ece" + }, + { + "name": "tuned", + "epoch": 0, + "version": "2.14.0", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tuned-2.14.0-2.el8.noarch.rpm", + "checksum": "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "usermode", + "epoch": 0, + "version": "1.113", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/usermode-1.113-1.el8.aarch64.rpm", + "checksum": "sha256:1bc21785bc6f66d6fcc29cd62f2cdd3584f3f8ea6321db4c27251b192f468433" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/util-linux-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:83e470505f558f8cf8414a7fc8fb0d1bc4b16ed15d05ccf7e46332b04d1a0d85" + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.0.1763", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/vim-minimal-8.0.1763-15.el8.aarch64.rpm", + "checksum": "sha256:1956304761f23c6661b831d33a3539b82384636db4113cccd19321b36a3a8415" + }, + { + "name": "virt-what", + "epoch": 0, + "version": "1.18", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/virt-what-1.18-6.el8.aarch64.rpm", + "checksum": "sha256:b6946db91c0a0b5e39427db028815391dd1e8c7a04faf98bc1031b5490034790" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/which-2.21-12.el8.aarch64.rpm", + "checksum": "sha256:0f32d23a6b2b15603d710b0317238ef8dde3de61eda96713e21d86c9fc7a98ed" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xfsprogs-5.0.0-4.el8.aarch64.rpm", + "checksum": "sha256:760d9056891a60c200984f0655aee1876b3bf890f7486306c05db8e295ae7843" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-5.2.4-3.el8.aarch64.rpm", + "checksum": "sha256:e426534c59b3a35068877d324dd34d643ad7c84d2c406b2e6502ac6c2a367d39" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-libs-5.2.4-3.el8.aarch64.rpm", + "checksum": "sha256:094eff70081085f87a7ac0dedafa851ad8ac8e03f9f328636df4a0f8301d0e87" + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/yum-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4" + }, + { + "name": "yum-utils", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/yum-utils-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:bdb8cc675da18f659ba06252f1f2604d171373239804c3cbc6004dadded54cd3" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/zlib-1.2.11-15.el8.aarch64.rpm", + "checksum": "sha256:cf9a0bbaa7bd075d2af532586ee93ab92b96d9859f53a57f85cd7e0309f8fff6" + }, + { + "name": "cloud-init", + "epoch": 0, + "version": "19.4", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/cloud-init-19.4-7.el8.noarch.rpm", + "checksum": "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2" + }, + { + "name": "cloud-utils-growpart", + "epoch": 0, + "version": "0.31", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/cloud-utils-growpart-0.31-1.el8.noarch.rpm", + "checksum": "sha256:664a883f3c7042eb91e0b66fc99c309a729011b4912e4af9397f4e25e1adae90" + }, + { + "name": "dnf-plugin-spacewalk", + "epoch": 0, + "version": "2.8.5", + "release": "11.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b" + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm", + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm", + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "name": "insights-client", + "epoch": 0, + "version": "3.0.14", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/insights-client-3.0.14-2.el8.noarch.rpm", + "checksum": "sha256:abeb97ed3fdd82145fd51f8eeaecfca272e4d1418b17a68241e054425a327aa3" + }, + { + "name": "langpacks-en", + "epoch": 0, + "version": "1.0", + "release": "12.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/langpacks-en-1.0-12.el8.noarch.rpm", + "checksum": "sha256:38affe91361bf56b84490d97c7e3f815965cf8d2bbb222c6c045af4bf2dff736" + }, + { + "name": "libestr", + "epoch": 0, + "version": "0.1.10", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libestr-0.1.10-1.el8.aarch64.rpm", + "checksum": "sha256:0c9b5e526b6fe5384447db444a2657cb4b1766b646255f89c49c749d388bdc58" + }, + { + "name": "libfastjson", + "epoch": 0, + "version": "0.99.8", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libfastjson-0.99.8-2.el8.aarch64.rpm", + "checksum": "sha256:2769c1df985e8fea8760d7ca8908eac166a64262c9643c7b0f6a82db570a68f5" + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.2.0", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libmaxminddb-1.2.0-10.el8.aarch64.rpm", + "checksum": "sha256:e09e950b0a0842577364565380ba40e8c4f027919dc880378b606c2dafc5693b" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libxkbcommon-0.9.1-1.el8.aarch64.rpm", + "checksum": "sha256:a07f96031fbe9507a8d6bb0e14cf0783bc615552e4cfb75131672072f5729de8" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/memstrack-0.1.8-1.el8.aarch64.rpm", + "checksum": "sha256:aa1a6a85493590efb9c0235c15d6a05e8b119f385dc13b3e3abd2315f8c4a6e0" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/pinentry-1.1.0-2.el8.aarch64.rpm", + "checksum": "sha256:22c0e44318e36e04ad1eb4632dcf25db991f481f9a543387d372e1f2ad92561f" + }, + { + "name": "python3-babel", + "epoch": 0, + "version": "2.5.1", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-babel-2.5.1-5.el8.noarch.rpm", + "checksum": "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28" + }, + { + "name": "python3-dnf-plugin-spacewalk", + "epoch": 0, + "version": "2.8.5", + "release": "11.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43" + }, + { + "name": "python3-hwdata", + "epoch": 0, + "version": "2.3.6", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-hwdata-2.3.6-3.el8.noarch.rpm", + "checksum": "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362" + }, + { + "name": "python3-jinja2", + "epoch": 0, + "version": "2.10.1", + "release": "2.el8_0", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-jinja2-2.10.1-2.el8_0.noarch.rpm", + "checksum": "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64" + }, + { + "name": "python3-jsonpatch", + "epoch": 0, + "version": "1.21", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-jsonpatch-1.21-2.el8.noarch.rpm", + "checksum": "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835" + }, + { + "name": "python3-jsonpointer", + "epoch": 0, + "version": "1.10", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-jsonpointer-1.10-11.el8.noarch.rpm", + "checksum": "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf" + }, + { + "name": "python3-jsonschema", + "epoch": 0, + "version": "2.6.0", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-jsonschema-2.6.0-4.el8.noarch.rpm", + "checksum": "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b" + }, + { + "name": "python3-markupsafe", + "epoch": 0, + "version": "0.23", + "release": "19.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-markupsafe-0.23-19.el8.aarch64.rpm", + "checksum": "sha256:0aeef4b59dae77f6bd7f557e62efb6621491c04c27287860f581d35cd9be7a19" + }, + { + "name": "python3-netifaces", + "epoch": 0, + "version": "0.10.6", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-netifaces-0.10.6-4.el8.aarch64.rpm", + "checksum": "sha256:3d24b1cc90de184aa66cd58a1071888b6de8d34eb8155d6ab6a5ac777281adf5" + }, + { + "name": "python3-newt", + "epoch": 0, + "version": "0.52.20", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-newt-0.52.20-11.el8.aarch64.rpm", + "checksum": "sha256:047e04a10f26da24deb076a88c676fcaecd2f68aaa1a5adc7bc46791145c74c4" + }, + { + "name": "python3-prettytable", + "epoch": 0, + "version": "0.7.2", + "release": "14.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-prettytable-0.7.2-14.el8.noarch.rpm", + "checksum": "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55" + }, + { + "name": "python3-pyOpenSSL", + "epoch": 0, + "version": "18.0.0", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pyOpenSSL-18.0.0-1.el8.noarch.rpm", + "checksum": "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21" + }, + { + "name": "python3-pyserial", + "epoch": 0, + "version": "3.1.1", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pyserial-3.1.1-8.el8.noarch.rpm", + "checksum": "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414" + }, + { + "name": "python3-pytz", + "epoch": 0, + "version": "2017.2", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pytz-2017.2-9.el8.noarch.rpm", + "checksum": "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca" + }, + { + "name": "python3-rhn-check", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm", + "checksum": "sha256:4e644e08ef5bd3b33357d6c1ea64e37097c3224ae324456fef022b9e5fdd2947" + }, + { + "name": "python3-rhn-client-tools", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm", + "checksum": "sha256:11aae64c2458371a884514b954f58896c5ba7fb751ade0351c476e29991da25b" + }, + { + "name": "python3-rhn-setup", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm", + "checksum": "sha256:bee28477fcd36d5a877d1fe3d61aa876f62128681411718e0c3fc82b95cf8e59" + }, + { + "name": "python3-rhnlib", + "epoch": 0, + "version": "2.8.6", + "release": "8.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-unbound-1.7.3-14.el8.aarch64.rpm", + "checksum": "sha256:6ae316dfb9723d13a8d36d98d109d4a55017b568ee2070279f1bdccdc699862a" + }, + { + "name": "rhn-check", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm", + "checksum": "sha256:c17544abced52ad9df8229c71a0f8c437719c4d1fccd77f2db707be18226aecb" + }, + { + "name": "rhn-client-tools", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm", + "checksum": "sha256:28d4282a27a17db514ff30d8c865cb8a306d1c412f9e13c2e617a23912f07dde" + }, + { + "name": "rhn-setup", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm", + "checksum": "sha256:1e8b20ca3658abc9b7e2fe27d18eeae2f660779f33b39ca1fa2588363af250e5" + }, + { + "name": "rhnlib", + "epoch": 0, + "version": "2.8.6", + "release": "8.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42" + }, + { + "name": "rhnsd", + "epoch": 0, + "version": "5.0.35", + "release": "3.module+el8.1.0+3455+3ddf2832", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.aarch64.rpm", + "checksum": "sha256:27ed4654a9c4dfb8417c54cc1a6060c51bd3f1dd16c4ba4bd24dfeba57c5ede1" + }, + { + "name": "rsyslog", + "epoch": 0, + "version": "8.1911.0", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rsyslog-8.1911.0-6.el8.aarch64.rpm", + "checksum": "sha256:0a016d034c490f07425c402c260de595603a136bf7146dbc8ed90a661a60fbc1" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/unbound-libs-1.7.3-14.el8.aarch64.rpm", + "checksum": "sha256:727c08fe072ef85837e8db30574aec712cdf67a062eead3e5481ba08425b2395" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "checksums": { + "0": "sha256:16f28f379d3f297d9b559a5fafe972d5073fc9efbb5fa720068c56f378b3fafc", + "1": "sha256:556df33d4f50aa82d8e620b5bd509631bddb7376019640039a183fc3efac148b" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=0bd700f8-090f-4556-b797-b340297ea1bd ro console=ttyS0,115200n8 console=tty0 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295 crashkernel=auto" + }, + "bootloader": "unknown", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "id": "rhel-20200625225316-4.18.0-221.el8.aarch64", + "initrd": "/boot/initramfs-4.18.0-221.el8.aarch64.img $tuned_initrd", + "linux": "/boot/vmlinuz-4.18.0-221.el8.aarch64", + "options": "$kernelopts $tuned_params", + "title": "Red Hat Enterprise Linux (4.18.0-221.el8.aarch64) 8.3 (Ootpa)", + "version": "4.18.0-221.el8.aarch64" + } + ], + "fstab": [ + [ + "UUID=0bd700f8-090f-4556-b797-b340297ea1bd", + "/", + "xfs", + "defaults", + "0", + "0" + ], + [ + "UUID=46BB-8120", + "/boot/efi", + "vfat", + "umask=0077,shortname=winnt", + "0", + "2" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:992:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:999:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "polkitd:x:996:", + "render:x:998:", + "rngd:x:991:", + "root:x:0:", + "ssh_keys:x:995:", + "sshd:x:74:", + "sssd:x:993:", + "sys:x:3:", + "systemd-coredump:x:997:", + "systemd-journal:x:190:", + "systemd-resolve:x:193:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:994:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "raw", + "os-release": { + "ANSI_COLOR": "0;31", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:redhat:enterprise_linux:8.3:beta", + "HOME_URL": "https://www.redhat.com/", + "ID": "rhel", + "ID_LIKE": "fedora", + "NAME": "Red Hat Enterprise Linux", + "PLATFORM_ID": "platform:el8", + "PRETTY_NAME": "Red Hat Enterprise Linux 8.3 Beta (Ootpa)", + "REDHAT_BUGZILLA_PRODUCT": "Red Hat Enterprise Linux 8", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "8.3", + "REDHAT_SUPPORT_PRODUCT": "Red Hat Enterprise Linux", + "REDHAT_SUPPORT_PRODUCT_VERSION": "8.3 Beta", + "VERSION": "8.3 (Ootpa)", + "VERSION_ID": "8.3" + }, + "packages": [ + "NetworkManager-1.26.0-0.2.el8.aarch64", + "NetworkManager-libnm-1.26.0-0.2.el8.aarch64", + "NetworkManager-team-1.26.0-0.2.el8.aarch64", + "NetworkManager-tui-1.26.0-0.2.el8.aarch64", + "acl-2.2.53-1.el8.aarch64", + "audit-3.0-0.17.20191104git1c2f876.el8.aarch64", + "audit-libs-3.0-0.17.20191104git1c2f876.el8.aarch64", + "authselect-1.2.1-2.el8.aarch64", + "authselect-libs-1.2.1-2.el8.aarch64", + "basesystem-11-5.el8.noarch", + "bash-4.4.19-12.el8.aarch64", + "bind-export-libs-9.11.20-3.el8.aarch64", + "brotli-1.0.6-2.el8.aarch64", + "bzip2-libs-1.0.6-26.el8.aarch64", + "c-ares-1.13.0-5.el8.aarch64", + "ca-certificates-2019.2.32-80.0.el8_1.noarch", + "checkpolicy-2.9-1.el8.aarch64", + "chkconfig-1.13-2.el8.aarch64", + "chrony-3.5-1.el8.aarch64", + "cloud-init-19.4-7.el8.noarch", + "cloud-utils-growpart-0.31-1.el8.noarch", + "coreutils-8.30-8.el8.aarch64", + "coreutils-common-8.30-8.el8.aarch64", + "cpio-2.12-8.el8.aarch64", + "cracklib-2.9.6-15.el8.aarch64", + "cracklib-dicts-2.9.6-15.el8.aarch64", + "cronie-1.5.2-4.el8.aarch64", + "cronie-anacron-1.5.2-4.el8.aarch64", + "crontabs-1.11-16.20150630git.el8.noarch", + "crypto-policies-20200610-1.git0ac8b1f.el8.noarch", + "crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch", + "cryptsetup-libs-2.3.3-1.el8.aarch64", + "curl-7.61.1-12.el8.aarch64", + "cyrus-sasl-lib-2.1.27-5.el8.aarch64", + "dbus-1.12.8-11.el8.aarch64", + "dbus-common-1.12.8-11.el8.noarch", + "dbus-daemon-1.12.8-11.el8.aarch64", + "dbus-glib-0.110-2.el8.aarch64", + "dbus-libs-1.12.8-11.el8.aarch64", + "dbus-tools-1.12.8-11.el8.aarch64", + "dbxtool-8-5.el8.aarch64", + "device-mapper-1.02.171-3.el8.aarch64", + "device-mapper-libs-1.02.171-3.el8.aarch64", + "dhcp-client-4.3.6-41.el8.aarch64", + "dhcp-common-4.3.6-41.el8.noarch", + "dhcp-libs-4.3.6-41.el8.aarch64", + "diffutils-3.6-6.el8.aarch64", + "dmidecode-3.2-6.el8.aarch64", + "dnf-4.2.23-2.el8.noarch", + "dnf-data-4.2.23-2.el8.noarch", + "dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch", + "dnf-plugin-subscription-manager-1.27.9-1.el8.aarch64", + "dnf-plugins-core-4.0.17-2.el8.noarch", + "dracut-049-89.git20200625.el8.aarch64", + "dracut-config-generic-049-89.git20200625.el8.aarch64", + "dracut-network-049-89.git20200625.el8.aarch64", + "dracut-squash-049-89.git20200625.el8.aarch64", + "e2fsprogs-1.45.6-1.el8.aarch64", + "e2fsprogs-libs-1.45.6-1.el8.aarch64", + "efi-filesystem-3-2.el8.noarch", + "efibootmgr-16-1.el8.aarch64", + "efivar-36-1.el8.aarch64", + "efivar-libs-36-1.el8.aarch64", + "elfutils-debuginfod-client-0.180-1.el8.aarch64", + "elfutils-default-yama-scope-0.180-1.el8.noarch", + "elfutils-libelf-0.180-1.el8.aarch64", + "elfutils-libs-0.180-1.el8.aarch64", + "ethtool-5.0-2.el8.aarch64", + "expat-2.2.5-4.el8.aarch64", + "file-5.33-16.el8.aarch64", + "file-libs-5.33-16.el8.aarch64", + "filesystem-3.8-3.el8.aarch64", + "findutils-4.6.0-20.el8.aarch64", + "freetype-2.9.1-4.el8.aarch64", + "fuse-libs-2.9.7-12.el8.aarch64", + "gawk-4.2.1-1.el8.aarch64", + "gdbm-1.18-1.el8.aarch64", + "gdbm-libs-1.18-1.el8.aarch64", + "gdisk-1.0.3-6.el8.aarch64", + "geolite2-city-20180605-1.el8.noarch", + "geolite2-country-20180605-1.el8.noarch", + "gettext-0.19.8.1-17.el8.aarch64", + "gettext-libs-0.19.8.1-17.el8.aarch64", + "glib2-2.56.4-8.el8.aarch64", + "glibc-2.28-127.el8.aarch64", + "glibc-common-2.28-127.el8.aarch64", + "glibc-langpack-en-2.28-127.el8.aarch64", + "gmp-6.1.2-10.el8.aarch64", + "gnupg2-2.2.20-2.el8.aarch64", + "gnupg2-smime-2.2.20-2.el8.aarch64", + "gnutls-3.6.14-3.el8.aarch64", + "gobject-introspection-1.56.1-1.el8.aarch64", + "gpg-pubkey-d4082792-5b32db75", + "gpg-pubkey-fd431d51-4ae0493b", + "gpgme-1.13.1-3.el8.aarch64", + "grep-3.1-6.el8.aarch64", + "groff-base-1.22.3-18.el8.aarch64", + "grub2-common-2.02-84.el8.noarch", + "grub2-efi-aa64-2.02-84.el8.aarch64", + "grub2-tools-2.02-84.el8.aarch64", + "grub2-tools-extra-2.02-84.el8.aarch64", + "grub2-tools-minimal-2.02-84.el8.aarch64", + "grubby-8.40-41.el8.aarch64", + "gzip-1.9-9.el8.aarch64", + "hardlink-1.3-6.el8.aarch64", + "hdparm-9.54-2.el8.aarch64", + "hostname-3.20-6.el8.aarch64", + "hwdata-0.314-8.5.el8.noarch", + "ima-evm-utils-1.1-5.el8.aarch64", + "info-6.5-6.el8.aarch64", + "initscripts-10.00.8-1.el8.aarch64", + "insights-client-3.0.14-2.el8.noarch", + "ipcalc-0.2.4-4.el8.aarch64", + "iproute-5.3.0-5.el8.aarch64", + "iptables-libs-1.8.4-14.el8.aarch64", + "iputils-20180629-2.el8.aarch64", + "irqbalance-1.4.0-4.el8.aarch64", + "jansson-2.11-3.el8.aarch64", + "json-c-0.13.1-0.2.el8.aarch64", + "json-glib-1.4.4-1.el8.aarch64", + "kbd-2.0.4-10.el8.aarch64", + "kbd-legacy-2.0.4-10.el8.noarch", + "kbd-misc-2.0.4-10.el8.noarch", + "kernel-4.18.0-221.el8.aarch64", + "kernel-core-4.18.0-221.el8.aarch64", + "kernel-modules-4.18.0-221.el8.aarch64", + "kernel-tools-4.18.0-221.el8.aarch64", + "kernel-tools-libs-4.18.0-221.el8.aarch64", + "kexec-tools-2.0.20-29.el8.aarch64", + "keyutils-libs-1.5.10-6.el8.aarch64", + "kmod-25-16.el8.aarch64", + "kmod-libs-25-16.el8.aarch64", + "kpartx-0.8.4-2.el8.aarch64", + "krb5-libs-1.18.2-3.el8.aarch64", + "langpacks-en-1.0-12.el8.noarch", + "less-530-1.el8.aarch64", + "libacl-2.2.53-1.el8.aarch64", + "libarchive-3.3.2-9.el8.aarch64", + "libassuan-2.5.1-3.el8.aarch64", + "libattr-2.4.48-3.el8.aarch64", + "libbasicobjects-0.1.1-39.el8.aarch64", + "libblkid-2.32.1-24.el8.aarch64", + "libcap-2.26-4.el8.aarch64", + "libcap-ng-0.7.9-5.el8.aarch64", + "libcollection-0.7.0-39.el8.aarch64", + "libcom_err-1.45.6-1.el8.aarch64", + "libcomps-0.1.11-4.el8.aarch64", + "libcroco-0.6.12-4.el8.aarch64", + "libcurl-7.61.1-12.el8.aarch64", + "libdaemon-0.14-15.el8.aarch64", + "libdb-5.3.28-39.el8.aarch64", + "libdb-utils-5.3.28-39.el8.aarch64", + "libdhash-0.5.0-39.el8.aarch64", + "libdnf-0.48.0-2.el8.aarch64", + "libedit-3.1-23.20170329cvs.el8.aarch64", + "libestr-0.1.10-1.el8.aarch64", + "libevent-2.1.8-5.el8.aarch64", + "libfastjson-0.99.8-2.el8.aarch64", + "libfdisk-2.32.1-24.el8.aarch64", + "libffi-3.1-22.el8.aarch64", + "libgcc-8.3.1-5.1.el8.aarch64", + "libgcrypt-1.8.5-4.el8.aarch64", + "libgomp-8.3.1-5.1.el8.aarch64", + "libgpg-error-1.31-1.el8.aarch64", + "libgudev-232-4.el8.aarch64", + "libidn2-2.2.0-1.el8.aarch64", + "libini_config-1.3.1-39.el8.aarch64", + "libkcapi-1.2.0-2.el8.aarch64", + "libkcapi-hmaccalc-1.2.0-2.el8.aarch64", + "libksba-1.3.5-7.el8.aarch64", + "libldb-2.1.3-2.el8.aarch64", + "libmaxminddb-1.2.0-10.el8.aarch64", + "libmetalink-0.1.3-7.el8.aarch64", + "libmnl-1.0.4-6.el8.aarch64", + "libmodulemd-2.9.4-2.el8.aarch64", + "libmount-2.32.1-24.el8.aarch64", + "libndp-1.7-3.el8.aarch64", + "libnfsidmap-2.3.3-35.el8.aarch64", + "libnghttp2-1.33.0-3.el8_2.1.aarch64", + "libnl3-3.5.0-1.el8.aarch64", + "libnl3-cli-3.5.0-1.el8.aarch64", + "libnsl2-1.2.0-2.20180605git4a062cf.el8.aarch64", + "libpath_utils-0.2.1-39.el8.aarch64", + "libpcap-1.9.1-4.el8.aarch64", + "libpipeline-1.5.0-2.el8.aarch64", + "libpng-1.6.34-5.el8.aarch64", + "libpsl-0.20.2-6.el8.aarch64", + "libpwquality-1.4.0-9.el8.aarch64", + "libref_array-0.1.5-39.el8.aarch64", + "librepo-1.12.0-1.el8.aarch64", + "libreport-filesystem-2.9.5-11.el8.aarch64", + "librhsm-0.0.3-3.el8.aarch64", + "libseccomp-2.4.3-1.el8.aarch64", + "libsecret-0.18.6-1.el8.aarch64", + "libselinux-2.9-3.el8.aarch64", + "libselinux-utils-2.9-3.el8.aarch64", + "libsemanage-2.9-3.el8.aarch64", + "libsepol-2.9-1.el8.aarch64", + "libsigsegv-2.11-5.el8.aarch64", + "libsmartcols-2.32.1-24.el8.aarch64", + "libsolv-0.7.11-1.el8.aarch64", + "libss-1.45.6-1.el8.aarch64", + "libssh-0.9.4-2.el8.aarch64", + "libssh-config-0.9.4-2.el8.noarch", + "libsss_autofs-2.3.0-2.el8.aarch64", + "libsss_certmap-2.3.0-2.el8.aarch64", + "libsss_idmap-2.3.0-2.el8.aarch64", + "libsss_nss_idmap-2.3.0-2.el8.aarch64", + "libsss_sudo-2.3.0-2.el8.aarch64", + "libstdc++-8.3.1-5.1.el8.aarch64", + "libsysfs-2.1.0-24.el8.aarch64", + "libtalloc-2.3.1-2.el8.aarch64", + "libtasn1-4.13-3.el8.aarch64", + "libtdb-1.4.3-1.el8.aarch64", + "libteam-1.29-5.el8.aarch64", + "libtevent-0.10.2-2.el8.aarch64", + "libtirpc-1.1.4-4.el8.aarch64", + "libunistring-0.9.9-3.el8.aarch64", + "libusbx-1.0.23-3.el8.aarch64", + "libuser-0.62-23.el8.aarch64", + "libutempter-1.1.6-14.el8.aarch64", + "libuuid-2.32.1-24.el8.aarch64", + "libverto-0.3.0-5.el8.aarch64", + "libxcrypt-4.1.1-4.el8.aarch64", + "libxkbcommon-0.9.1-1.el8.aarch64", + "libxml2-2.9.7-8.el8.aarch64", + "libyaml-0.1.7-5.el8.aarch64", + "libzstd-1.4.4-1.el8.aarch64", + "linux-firmware-20200619-99.git3890db36.el8.noarch", + "logrotate-3.14.0-4.el8.aarch64", + "lshw-B.02.19.2-2.el8.aarch64", + "lsscsi-0.30-1.el8.aarch64", + "lua-libs-5.3.4-11.el8.aarch64", + "lz4-libs-1.8.3-2.el8.aarch64", + "lzo-2.08-14.el8.aarch64", + "man-db-2.7.6.1-17.el8.aarch64", + "memstrack-0.1.8-1.el8.aarch64", + "mokutil-0.3.0-9.el8.aarch64", + "mozjs60-60.9.0-4.el8.aarch64", + "mpfr-3.1.6-1.el8.aarch64", + "ncurses-6.1-7.20180224.el8.aarch64", + "ncurses-base-6.1-7.20180224.el8.noarch", + "ncurses-libs-6.1-7.20180224.el8.aarch64", + "net-tools-2.0-0.52.20160912git.el8.aarch64", + "nettle-3.4.1-2.el8.aarch64", + "newt-0.52.20-11.el8.aarch64", + "npth-1.5-4.el8.aarch64", + "numactl-libs-2.0.12-11.el8.aarch64", + "openldap-2.4.46-15.el8.aarch64", + "openssh-8.0p1-5.el8.aarch64", + "openssh-clients-8.0p1-5.el8.aarch64", + "openssh-server-8.0p1-5.el8.aarch64", + "openssl-1.1.1g-9.el8.aarch64", + "openssl-libs-1.1.1g-9.el8.aarch64", + "openssl-pkcs11-0.4.10-2.el8.aarch64", + "os-prober-1.74-6.el8.aarch64", + "p11-kit-0.23.14-5.el8_0.aarch64", + "p11-kit-trust-0.23.14-5.el8_0.aarch64", + "pam-1.3.1-11.el8.aarch64", + "parted-3.2-38.el8.aarch64", + "passwd-0.80-3.el8.aarch64", + "pciutils-3.6.4-2.el8.aarch64", + "pciutils-libs-3.6.4-2.el8.aarch64", + "pcre-8.42-4.el8.aarch64", + "pcre2-10.32-2.el8.aarch64", + "pigz-2.4-4.el8.aarch64", + "pinentry-1.1.0-2.el8.aarch64", + "platform-python-3.6.8-30.el8.aarch64", + "platform-python-pip-9.0.3-17.el8.noarch", + "platform-python-setuptools-39.2.0-6.el8.noarch", + "policycoreutils-2.9-9.el8.aarch64", + "polkit-0.115-11.el8.aarch64", + "polkit-libs-0.115-11.el8.aarch64", + "polkit-pkla-compat-0.1-12.el8.aarch64", + "popt-1.16-14.el8.aarch64", + "prefixdevname-0.1.0-6.el8.aarch64", + "procps-ng-3.3.15-2.el8.aarch64", + "publicsuffix-list-dafsa-20180723-1.el8.noarch", + "python3-asn1crypto-0.24.0-3.el8.noarch", + "python3-audit-3.0-0.17.20191104git1c2f876.el8.aarch64", + "python3-babel-2.5.1-5.el8.noarch", + "python3-cffi-1.11.5-5.el8.aarch64", + "python3-chardet-3.0.4-7.el8.noarch", + "python3-configobj-5.0.6-11.el8.noarch", + "python3-cryptography-2.3-3.el8.aarch64", + "python3-dateutil-2.6.1-6.el8.noarch", + "python3-dbus-1.2.4-15.el8.aarch64", + "python3-decorator-4.2.1-2.el8.noarch", + "python3-dnf-4.2.23-2.el8.noarch", + "python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch", + "python3-dnf-plugins-core-4.0.17-2.el8.noarch", + "python3-ethtool-0.14-3.el8.aarch64", + "python3-gobject-base-3.28.3-2.el8.aarch64", + "python3-gpg-1.13.1-3.el8.aarch64", + "python3-hawkey-0.48.0-2.el8.aarch64", + "python3-hwdata-2.3.6-3.el8.noarch", + "python3-idna-2.5-5.el8.noarch", + "python3-iniparse-0.4-31.el8.noarch", + "python3-inotify-0.9.6-13.el8.noarch", + "python3-jinja2-2.10.1-2.el8_0.noarch", + "python3-jsonpatch-1.21-2.el8.noarch", + "python3-jsonpointer-1.10-11.el8.noarch", + "python3-jsonschema-2.6.0-4.el8.noarch", + "python3-jwt-1.6.1-2.el8.noarch", + "python3-libcomps-0.1.11-4.el8.aarch64", + "python3-libdnf-0.48.0-2.el8.aarch64", + "python3-librepo-1.12.0-1.el8.aarch64", + "python3-libs-3.6.8-30.el8.aarch64", + "python3-libselinux-2.9-3.el8.aarch64", + "python3-libsemanage-2.9-3.el8.aarch64", + "python3-linux-procfs-0.6.2-2.el8.noarch", + "python3-magic-5.33-16.el8.noarch", + "python3-markupsafe-0.23-19.el8.aarch64", + "python3-netifaces-0.10.6-4.el8.aarch64", + "python3-newt-0.52.20-11.el8.aarch64", + "python3-oauthlib-2.1.0-1.el8.noarch", + "python3-perf-4.18.0-221.el8.aarch64", + "python3-pip-wheel-9.0.3-17.el8.noarch", + "python3-ply-3.9-8.el8.noarch", + "python3-policycoreutils-2.9-9.el8.noarch", + "python3-prettytable-0.7.2-14.el8.noarch", + "python3-pyOpenSSL-18.0.0-1.el8.noarch", + "python3-pycparser-2.14-14.el8.noarch", + "python3-pyserial-3.1.1-8.el8.noarch", + "python3-pysocks-1.6.8-3.el8.noarch", + "python3-pytz-2017.2-9.el8.noarch", + "python3-pyudev-0.21.0-7.el8.noarch", + "python3-pyyaml-3.12-12.el8.aarch64", + "python3-requests-2.20.0-2.1.el8_1.noarch", + "python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64", + "python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64", + "python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64", + "python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch", + "python3-rpm-4.14.3-4.el8.aarch64", + "python3-schedutils-0.6-6.el8.aarch64", + "python3-setools-4.3.0-1.el8.aarch64", + "python3-setuptools-wheel-39.2.0-6.el8.noarch", + "python3-six-1.11.0-8.el8.noarch", + "python3-subscription-manager-rhsm-1.27.9-1.el8.aarch64", + "python3-syspurpose-1.27.9-1.el8.aarch64", + "python3-unbound-1.7.3-14.el8.aarch64", + "python3-urllib3-1.24.2-4.el8.noarch", + "readline-7.0-10.el8.aarch64", + "redhat-release-8.3-0.2.el8.aarch64", + "redhat-release-eula-8.3-0.2.el8.aarch64", + "rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64", + "rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64", + "rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64", + "rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch", + "rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.aarch64", + "rng-tools-6.8-3.el8.aarch64", + "rootfiles-8.1-22.el8.noarch", + "rpm-4.14.3-4.el8.aarch64", + "rpm-build-libs-4.14.3-4.el8.aarch64", + "rpm-libs-4.14.3-4.el8.aarch64", + "rpm-plugin-selinux-4.14.3-4.el8.aarch64", + "rpm-plugin-systemd-inhibit-4.14.3-4.el8.aarch64", + "rsync-3.1.3-8.el8.aarch64", + "rsyslog-8.1911.0-6.el8.aarch64", + "sed-4.5-2.el8.aarch64", + "selinux-policy-3.14.3-48.el8.noarch", + "selinux-policy-targeted-3.14.3-48.el8.noarch", + "setup-2.12.2-6.el8.noarch", + "sg3_utils-1.44-5.el8.aarch64", + "sg3_utils-libs-1.44-5.el8.aarch64", + "shadow-utils-4.6-10.el8.aarch64", + "shared-mime-info-1.9-3.el8.aarch64", + "shim-aa64-15-12.aarch64", + "slang-2.3.2-3.el8.aarch64", + "snappy-1.1.7-5.el8.aarch64", + "sqlite-libs-3.26.0-10.el8.aarch64", + "squashfs-tools-4.3-19.el8.aarch64", + "sssd-client-2.3.0-2.el8.aarch64", + "sssd-common-2.3.0-2.el8.aarch64", + "sssd-kcm-2.3.0-2.el8.aarch64", + "sssd-nfs-idmap-2.3.0-2.el8.aarch64", + "subscription-manager-1.27.9-1.el8.aarch64", + "subscription-manager-rhsm-certificates-1.27.9-1.el8.aarch64", + "sudo-1.8.29-6.el8.aarch64", + "systemd-239-36.el8.aarch64", + "systemd-libs-239-36.el8.aarch64", + "systemd-pam-239-36.el8.aarch64", + "systemd-udev-239-36.el8.aarch64", + "tar-1.30-5.el8.aarch64", + "teamd-1.29-5.el8.aarch64", + "trousers-0.3.14-4.el8.aarch64", + "trousers-lib-0.3.14-4.el8.aarch64", + "tuned-2.14.0-2.el8.noarch", + "tzdata-2020a-1.el8.noarch", + "unbound-libs-1.7.3-14.el8.aarch64", + "usermode-1.113-1.el8.aarch64", + "util-linux-2.32.1-24.el8.aarch64", + "vim-minimal-8.0.1763-15.el8.aarch64", + "virt-what-1.18-6.el8.aarch64", + "which-2.21-12.el8.aarch64", + "xfsprogs-5.0.0-4.el8.aarch64", + "xkeyboard-config-2.28-1.el8.noarch", + "xz-5.2.4-3.el8.aarch64", + "xz-libs-5.2.4-3.el8.aarch64", + "yum-4.2.23-2.el8.noarch", + "yum-utils-4.0.17-2.el8.noarch", + "zlib-1.2.11-15.el8.aarch64" + ], + "partition-table": "gpt", + "partition-table-id": "8DFDFF87-C96E-EA48-A3A6-9408F1F6B1EF", + "partitions": [ + { + "bootable": false, + "fstype": "vfat", + "label": "EFI\\ System", + "partuuid": "48411865-6487-7F42-BC8D-2298C2053DF4", + "size": 498073600, + "start": 1048576, + "type": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B", + "uuid": "46BB-8120" + }, + { + "bootable": false, + "fstype": "xfs", + "label": null, + "partuuid": "14EC3C43-29D0-9A47-AE10-7764A263BFEF", + "size": 5942263296, + "start": 500170752, + "type": "0FC63DAF-8483-4772-8E79-3D69D8477DE4", + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:995:992::/var/lib/chrony:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "polkitd:x:998:996:User for polkitd:/:/sbin/nologin", + "rngd:x:994:991:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sssd:x:996:993:User for sssd:/:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/boot/efi/EFI": ".M.......", + "/boot/efi/EFI/BOOT/BOOTAA64.EFI": ".......T.", + "/boot/efi/EFI/BOOT/fbaa64.efi": ".......T.", + "/boot/efi/EFI/redhat/BOOTAA64.CSV": ".......T.", + "/boot/efi/EFI/redhat/mmaa64.efi": ".......T.", + "/boot/efi/EFI/redhat/shim.efi": ".......T.", + "/boot/efi/EFI/redhat/shimaa64-redhat.efi": ".......T.", + "/boot/efi/EFI/redhat/shimaa64.efi": ".......T.", + "/etc/machine-id": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/proc": ".M.......", + "/sys": ".M.......", + "/var/log/lastlog": ".M....G..", + "/var/spool/anacron/cron.daily": ".M.......", + "/var/spool/anacron/cron.monthly": ".M.......", + "/var/spool/anacron/cron.weekly": ".M......." + }, + "missing": [ + "/etc/systemd/system/dbus-org.freedesktop.resolve1.service" + ] + }, + "services-disabled": [ + "arp-ethers.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "console-getty.service", + "cpupower.service", + "ctrl-alt-del.target", + "dbxtool.service", + "debug-shell.service", + "exit.target", + "fstrim.timer", + "halt.target", + "insights-client-results.path", + "insights-client.timer", + "kexec.target", + "poweroff.target", + "rdisc.service", + "reboot.target", + "remote-cryptsetup.target", + "rhnsd.service", + "rhsm-facts.service", + "rhsm.service", + "rngd-wake-threshold.service", + "runlevel0.target", + "runlevel6.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-resolved.service", + "tcsd.service", + "tmp.mount" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "cloud-init.service", + "crond.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dnf-makecache.timer", + "getty@.service", + "import-state.service", + "irqbalance.service", + "kdump.service", + "loadmodules.service", + "nis-domainname.service", + "remote-fs.target", + "rhsmcertd.service", + "rngd.service", + "rsyslog.service", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "syslog.service", + "tuned.service", + "unbound-anchor.timer" + ], + "timezone": "UTC" + } +} \ No newline at end of file diff --git a/test/cases/rhel_8-aarch64-openstack-boot.json b/test/cases/rhel_8-aarch64-openstack-boot.json new file mode 100644 index 0000000..de08c58 --- /dev/null +++ b/test/cases/rhel_8-aarch64-openstack-boot.json @@ -0,0 +1,9967 @@ +{ + "boot": { + "type": "qemu" + }, + "compose-request": { + "distro": "rhel-8", + "arch": "aarch64", + "image-type": "openstack", + "repositories": [ + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + }, + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + } + ], + "filename": "disk.qcow2", + "blueprint": { + "name": "openstack-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:0136940a3e28a159e7347b0bc7d1dbbc0339c64f431349e355f75abe31cbf21c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-4.18.0-221.el8.aarch64.rpm" + }, + "sha256:01d5881b441b015ac394e66fb27dbc5cb11befc8080973208806257ecee2d12d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lshw-B.02.19.2-2.el8.aarch64.rpm" + }, + "sha256:01e486a3be67325e9692e909f5c6534137ee6a6df185ba2c09d4d50fe6c738f6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libusbx-1.0.23-3.el8.aarch64.rpm" + }, + "sha256:0229afd544d1a59bfe26c095ad338bac7e0d2f10aab88bd895f3766e8f54fff3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-libnm-1.26.0-0.2.el8.aarch64.rpm" + }, + "sha256:0265d8b987f411738f3b53bd1f84386955704122e20ece4eb232a0df89ff62f0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pyyaml-3.12-12.el8.aarch64.rpm" + }, + "sha256:030eef043bf4cfdffc0a672ca2c1499281fbcb78a81a98a9e932ba0b7c9ebb6b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libbasicobjects-0.1.1-39.el8.aarch64.rpm" + }, + "sha256:047e04a10f26da24deb076a88c676fcaecd2f68aaa1a5adc7bc46791145c74c4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-newt-0.52.20-11.el8.aarch64.rpm" + }, + "sha256:04c031a07bde4360484a0180e832036d3ac45a95c4839e54d7a02423df5485ef": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pam-1.3.1-11.el8.aarch64.rpm" + }, + "sha256:057b6632870b8c3c0c950a19092ef2f9749bf3d1a37ccb083bf42ca6404db066": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-libs-1.02.171-3.el8.aarch64.rpm" + }, + "sha256:058822931f4c34c18675116c1b02b718de4044c1019acb0d5f97417f00a30ba7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libevent-2.1.8-5.el8.aarch64.rpm" + }, + "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/cloud-init-19.4-7.el8.noarch.rpm" + }, + "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-prettytable-0.7.2-14.el8.noarch.rpm" + }, + "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-jinja2-2.10.1-2.el8_0.noarch.rpm" + }, + "sha256:091c7cf9a81bc55f9d813c40904e1b7b4f8889df3584d0978e0f6770f01042e9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnl3-cli-3.5.0-1.el8.aarch64.rpm" + }, + "sha256:094eff70081085f87a7ac0dedafa851ad8ac8e03f9f328636df4a0f8301d0e87": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-libs-5.2.4-3.el8.aarch64.rpm" + }, + "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:09f390f3bf4dac907dfbc58b714d6c3de1ee7755a0ca5661b2f7c0a7dfbcfcff": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libini_config-1.3.1-39.el8.aarch64.rpm" + }, + "sha256:0a016d034c490f07425c402c260de595603a136bf7146dbc8ed90a661a60fbc1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rsyslog-8.1911.0-6.el8.aarch64.rpm" + }, + "sha256:0a885c6dc6abd969b828bf2fd7063ee884e6d058eaf405b02f3dd6efb6c66bac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-plugins-core-4.0.17-2.el8.noarch.rpm" + }, + "sha256:0ac8999f5ebca6b808973d0db5038a835daa2358af1007e9cb972b0e96eae217": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_sudo-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:0aeef4b59dae77f6bd7f557e62efb6621491c04c27287860f581d35cd9be7a19": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-markupsafe-0.23-19.el8.aarch64.rpm" + }, + "sha256:0b4564ad3a799af1a4a0de33b0952f6056d942b0cfa39b73e9375bf0c05b3191": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-smime-2.2.20-2.el8.aarch64.rpm" + }, + "sha256:0bb7024125ca67119612e55a92da13c989e0306ddd7de7e655a679c963939ef7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:0c9b5e526b6fe5384447db444a2657cb4b1766b646255f89c49c749d388bdc58": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libestr-0.1.10-1.el8.aarch64.rpm" + }, + "sha256:0cbb121302cc38ac16f8f9bd5ea8bd3ce3e2121f6c25c985b66bd29a532f2f7c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/logrotate-3.14.0-4.el8.aarch64.rpm" + }, + "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm" + }, + "sha256:0d61e2dfcaed066e4ef74e4baddab9cdec24602aeb7a98306481f38cb5f449eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-core-4.18.0-221.el8.aarch64.rpm" + }, + "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/linux-firmware-20200619-99.git3890db36.el8.noarch.rpm" + }, + "sha256:0e30a92139490232a4b891f4f802db74f41002475f8d203c6adffe1fb9d2b1ab": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/authselect-1.2.1-2.el8.aarch64.rpm" + }, + "sha256:0f1a02850c102e2a186787504f965c0c10d6432b9f600c18bc2f520e55f04a8c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libassuan-2.5.1-3.el8.aarch64.rpm" + }, + "sha256:0f2c07acd21a998f0a4b2a569ebfd143b889d6a5105541b2393dab96cd027a10": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_autofs-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:0f32d23a6b2b15603d710b0317238ef8dde3de61eda96713e21d86c9fc7a98ed": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/which-2.21-12.el8.aarch64.rpm" + }, + "sha256:0f6d940ccddd815da01182de1e7b7e2d12c493125285ff7ee902843beefdec16": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmnl-1.0.4-6.el8.aarch64.rpm" + }, + "sha256:0fd7dd5b060e7533144ad7a3cae2453ad6f87650010f328879b10c7c4cba0c04": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iptables-libs-1.8.4-14.el8.aarch64.rpm" + }, + "sha256:1091a799d34a42d2e42ac462b4f979a55d17513eca5a00bad9bdba56cca83357": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-25-16.el8.aarch64.rpm" + }, + "sha256:10a83db8ac5065869be834bf6ec61185eded982f885def5979948736e5c3ab95": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mozjs60-60.9.0-4.el8.aarch64.rpm" + }, + "sha256:10ac3bf7565725a55b0aef56f65befd0d320219fc83adfab6e564c19f8c44bd6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-2.0.4-10.el8.aarch64.rpm" + }, + "sha256:1143ac623a74d7feaaaf293c18d942d243248f6356628f87216670c10d11687b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-glib-1.4.4-1.el8.aarch64.rpm" + }, + "sha256:11aae64c2458371a884514b954f58896c5ba7fb751ade0351c476e29991da25b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm" + }, + "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm" + }, + "sha256:125c92f23d87b905c21e9f7669f0ec6e41428ab63c8c13f63db8980f292797d5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sed-4.5-2.el8.aarch64.rpm" + }, + "sha256:126d980678e5b687c775cf857b4013306f1a761353370258a0f04d92a3553f92": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-minimal-2.02-84.el8.aarch64.rpm" + }, + "sha256:13471e37bb0089a322183fc9e7a53948f0b203b54277630e75606a835268ad5d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rng-tools-6.8-3.el8.aarch64.rpm" + }, + "sha256:13f1d396ba9e0fe3f8d5ef43693b5c1178207e594d2b830e94d3f8e02e33767f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ethtool-5.0-2.el8.aarch64.rpm" + }, + "sha256:140146ebcbadd9b0f2aa5c2fcde5c93888f2d84ce61a2a4cf148ef435d1ba410": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsemanage-2.9-3.el8.aarch64.rpm" + }, + "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm" + }, + "sha256:157044e6cf5cc52b64b9a5d621fdb5b0846a527daa428382330e68bdb47789eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dhcp-client-4.3.6-41.el8.aarch64.rpm" + }, + "sha256:15c33124ac0479d34f1f58d2bd24cc52db7089b4a8681c276a3fd0d6dfe4fc72": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-8.30-8.el8.aarch64.rpm" + }, + "sha256:1657e36d9213739cfef8bacc8876153692f5a5b4d87dd5dde86ad182dd63ca1b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_nss_idmap-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crontabs-1.11-16.20150630git.el8.noarch.rpm" + }, + "sha256:16dd7121e6461d2c136f9f7330d8a60b88ed9ec77ac6824ac3ee7495acdb6800": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnetfilter_conntrack-1.0.6-5.el8.aarch64.rpm" + }, + "sha256:17501958f52d2db1417cab8dd5ca261bf447fd93eb62b80173f9875c3012b700": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efi-filesystem-3-2.el8.noarch.rpm" + }, + "sha256:1956304761f23c6661b831d33a3539b82384636db4113cccd19321b36a3a8415": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/vim-minimal-8.0.1763-15.el8.aarch64.rpm" + }, + "sha256:19cd894b4154d1a8521c6884cfd2a6eaf1f498b7dec5cc31408f8535b9098f2a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shared-mime-info-1.9-3.el8.aarch64.rpm" + }, + "sha256:19d1de27d2f62b4a55735233807f70a1e8ff7551fed97ee8650dbd09c1ef50ea": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libzstd-1.4.4-1.el8.aarch64.rpm" + }, + "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm" + }, + "sha256:19efe6f125c00123ccc6d96e51eb61e711f3ea01f32d18cce14d3b614217c58e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gmp-6.1.2-10.el8.aarch64.rpm" + }, + "sha256:1b8c037a6c67959b52894f38444ed1133356c65cec2eed3acf37c45cf8609e63": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efivar-36-1.el8.aarch64.rpm" + }, + "sha256:1bc038693be7ccd59674c478176c3badce4a56f785dd0690548b087bcc7adaa1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl1000-firmware-39.31.5.1-99.el8.1.noarch.rpm" + }, + "sha256:1bc21785bc6f66d6fcc29cd62f2cdd3584f3f8ea6321db4c27251b192f468433": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/usermode-1.113-1.el8.aarch64.rpm" + }, + "sha256:1d28eaeaa59c48e4193c709dd2a6301c2f8701138164c05371a0d8f235d14c9c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl7260-firmware-25.30.13.0-99.el8.1.noarch.rpm" + }, + "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tzdata-2020a-1.el8.noarch.rpm" + }, + "sha256:1e8b20ca3658abc9b7e2fe27d18eeae2f660779f33b39ca1fa2588363af250e5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm" + }, + "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm" + }, + "sha256:1eff42ff409079d679c7777483d476f3261a2881b456b6280e81f7903a0cd499": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtevent-0.10.2-2.el8.aarch64.rpm" + }, + "sha256:1f8013c5bd1c4914a11363d56d67fa70871f5f42c64f57862c791871fb9bb05c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-team-1.26.0-0.2.el8.aarch64.rpm" + }, + "sha256:1fbb9fed42dff3f9dbc9e4fd929281408f77506423424759c2ac57b76afc3cdb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpng-1.6.34-5.el8.aarch64.rpm" + }, + "sha256:204e4dbaf357e12ff041c1c203b2527f7d178905ebae53db3c12e57d28fcbf46": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl135-firmware-18.168.6.1-99.el8.1.noarch.rpm" + }, + "sha256:207e6396488c1db18fb7b1f2b9952f48c2625f042c5f6a901d41974ce376b0e0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sqlite-libs-3.26.0-10.el8.aarch64.rpm" + }, + "sha256:21685a7b79484a6d684efd86af6fb23dc13aaadc534cc4c4ae3edc0ceb84051b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ipcalc-0.2.4-4.el8.aarch64.rpm" + }, + "sha256:2180d7f1748a5049763d5626b8e14b2c7442e5491a63094a79dded66bcc5c7b0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_idmap-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:22c0e44318e36e04ad1eb4632dcf25db991f481f9a543387d372e1f2ad92561f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/pinentry-1.1.0-2.el8.aarch64.rpm" + }, + "sha256:2397506a63455e543b201938f605e687de5590d9a06282824e2f6bfdf5e0f149": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsolv-0.7.11-1.el8.aarch64.rpm" + }, + "sha256:252d46d58e0c02cbe2d2485488bd63ea7129964643787557eae832102541f84f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl5150-firmware-8.24.2.2-99.el8.1.noarch.rpm" + }, + "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tuned-2.14.0-2.el8.noarch.rpm" + }, + "sha256:268d9232f0853037100432e9363c659cf99927e03f759fd4884643b560710cd6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libss-1.45.6-1.el8.aarch64.rpm" + }, + "sha256:26b14d8f226962ce712bbccfb245843759e835a24a139eacae86d680043a85a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmount-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:26e7368e961b374cefb947dab3a98387a3da15a86331a0d99d7b0e68ef246626": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnfsidmap-2.3.3-35.el8.aarch64.rpm" + }, + "sha256:2769c1df985e8fea8760d7ca8908eac166a64262c9643c7b0f6a82db570a68f5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libfastjson-0.99.8-2.el8.aarch64.rpm" + }, + "sha256:279529f5c16e8e84ddfa87c0d29d35cde6fac7e7a0b9de2c4e92b96ccb5d3319": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/alsa-lib-1.2.3.2-1.el8.aarch64.rpm" + }, + "sha256:27ed4654a9c4dfb8417c54cc1a6060c51bd3f1dd16c4ba4bd24dfeba57c5ede1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.aarch64.rpm" + }, + "sha256:2809ad51c6eb6c9a54d64cccc2cd948f6fd4207f32b4493b3f4a9bd0886c894b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcurl-7.61.1-12.el8.aarch64.rpm" + }, + "sha256:28cd61a54fe18d550c7ba48fc2557798fca5cbc85600ed55e30c5821a61ca168": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/plymouth-core-libs-0.9.4-1.20200615git1e36e30.el8.aarch64.rpm" + }, + "sha256:28d4282a27a17db514ff30d8c865cb8a306d1c412f9e13c2e617a23912f07dde": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm" + }, + "sha256:290c83afcd2b0a2b17aab95cf72a85da5f8b9f9a9862857c919a0f43e3fce70e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-pkcs11-0.4.10-2.el8.aarch64.rpm" + }, + "sha256:2921d3aa14a509d271ca35256903c142c30f088f7dc889a4c4e15b26316ef5c0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-2.02-84.el8.aarch64.rpm" + }, + "sha256:2a9a97f4ff381c061f075608ef3b1fed18ce11a07acd84a74160540e426f1723": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libXinerama-1.1.4-1.el8.aarch64.rpm" + }, + "sha256:2b6d1fbf6f54f06c168862e19e03aa0ce32c299fb3f7e4cd1bf4aa9df4b4d995": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/parted-3.2-38.el8.aarch64.rpm" + }, + "sha256:2bbb8eebf42b0f55d735c0f84e2521c339febc7036f2e94332ff013d7406b80a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sssd-client-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:2cddadff38ccef2364a7e40af0e1d9b3bf9c06869c15ceeb655f3cfa431c2083": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-2.26-4.el8.aarch64.rpm" + }, + "sha256:2cfc9f7d8286002d753d12aa9669522222466c5e1e3f10ed81c8d4d23a3e203c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sssd-kcm-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:2d74e0ab14393921c6160fda8dd533b58c0348acdf5ee5c306ffc64221700de2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librepo-1.12.0-1.el8.aarch64.rpm" + }, + "sha256:2d84f6765b1645f867527f493b6153470602a80c75f81545bf619aa92127e4da": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bzip2-libs-1.0.6-26.el8.aarch64.rpm" + }, + "sha256:2dc8e2f52451d1a11b16bbb389a24c58b61a1ba804ee777f9d06dbe4e1fcf6e5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libidn2-2.2.0-1.el8.aarch64.rpm" + }, + "sha256:2df37064ec55f10e06dc0c05647a296b8ca7867251fe44130206052e58d39bda": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/subscription-manager-rhsm-certificates-1.27.9-1.el8.aarch64.rpm" + }, + "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pyOpenSSL-18.0.0-1.el8.noarch.rpm" + }, + "sha256:2e26672ae726ba833187292dcc6c1673a07e26d974fef2f71a83407989eea8a1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-config-generic-049-89.git20200625.el8.aarch64.rpm" + }, + "sha256:2efbfbcce7ef24e433d3c304b6b6b022d1b1b8a972969da1adb1c3c85f9625a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dosfstools-4.1-6.el8.aarch64.rpm" + }, + "sha256:31043a7324411dad6b84f6504a9e9cb7ece9f576acf091be522e484c8b82f469": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-gobject-base-3.28.3-2.el8.aarch64.rpm" + }, + "sha256:320ced09e242f09047f4fab0a7f66aba6de2e42583f6a2e164eadcc1ffd0b915": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mpfr-3.1.6-1.el8.aarch64.rpm" + }, + "sha256:3256e78263462d5d7ab37b696992aedd6f810431641ce8d1e1bc198c797b402b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-1.45.6-1.el8.aarch64.rpm" + }, + "sha256:32c9ff3e0278dbd7022ad76629146ece3fffdc58af14e1eaf97e7052d610daa2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/teamd-1.29-5.el8.aarch64.rpm" + }, + "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm" + }, + "sha256:342d7cd5f427c0d9c02336bc4f189225b3b57c5899f5d26b61b351fc37f99489": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setools-4.3.0-1.el8.aarch64.rpm" + }, + "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-oauthlib-2.1.0-1.el8.noarch.rpm" + }, + "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-chardet-3.0.4-7.el8.noarch.rpm" + }, + "sha256:36aece7b7a65785985bf0b98701514f12735a87517b8578a3eb3710f82ba4765": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-c-0.13.1-0.2.el8.aarch64.rpm" + }, + "sha256:38affe91361bf56b84490d97c7e3f815965cf8d2bbb222c6c045af4bf2dff736": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/langpacks-en-1.0-12.el8.noarch.rpm" + }, + "sha256:393b5c2678d104c9f108ea2a353746d68f2111785acf13ffdff6798482d9d8d6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/qemu-guest-agent-4.2.0-29.module+el8.3.0+7212+401047e6.aarch64.rpm" + }, + "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libcomps-0.1.11-4.el8.aarch64.rpm" + }, + "sha256:3a684fd5f1b1d417c6c3e9d1f0d5b846138aa06450ff246425d43d4a20bd619e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/diffutils-3.6-6.el8.aarch64.rpm" + }, + "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-configobj-5.0.6-11.el8.noarch.rpm" + }, + "sha256:3b607f0dbedecb25239e22c1f553c8d70db9d2206a877fa07567fa1a49e233d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcc-8.3.1-5.1.el8.aarch64.rpm" + }, + "sha256:3bf230c85711b285afb968850d7e98eb6b068a06e7ca40e94203e388d8447f48": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnutls-3.6.14-3.el8.aarch64.rpm" + }, + "sha256:3c096d861c04f97c89dcf335d66a169bca3d371d9589e547c50f18b4180a9e6f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-perf-4.18.0-221.el8.aarch64.rpm" + }, + "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dnf-plugins-core-4.0.17-2.el8.noarch.rpm" + }, + "sha256:3d24b1cc90de184aa66cd58a1071888b6de8d34eb8155d6ab6a5ac777281adf5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-netifaces-0.10.6-4.el8.aarch64.rpm" + }, + "sha256:3dcc14bad9f9ec7c89d1bf08f23dbdfc2a641357fff6c23fa398d6ba482394ff": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/spice-vdagent-0.20.0-1.el8.aarch64.rpm" + }, + "sha256:3e40a3103fbf71c83773beac7373d0e790631cb3c918d8b20a883c8e65e70136": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-tools-4.18.0-221.el8.aarch64.rpm" + }, + "sha256:3e570377bfb3946bbbbe32abfc92f800af7922d0a448e3f044ef75b18e97b924": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libxcb-1.13.1-1.el8.aarch64.rpm" + }, + "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pyserial-3.1.1-8.el8.noarch.rpm" + }, + "sha256:3ee66f993ee567b2457a221ed364ae4f8dfe783a5f0e723d9169f95d12f9e696": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-libs-5.33-16.el8.aarch64.rpm" + }, + "sha256:3ee6a4f61935c2f0698ad2c4834a5864920a1e48d55c7800da7c382249895e39": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-0.9.4-2.el8.aarch64.rpm" + }, + "sha256:3ef63ecbebf844bcf682c9482dc0ddd158c955b0f066b62eb9575bb9a9642db5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-1.1.1g-9.el8.aarch64.rpm" + }, + "sha256:3f5765cebcac288cc1b5b118acfbc2016eda7b81ad73923f6f9c21e4731eb0d9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-1.18-1.el8.aarch64.rpm" + }, + "sha256:3f7e5e72ab9e18dbca936b40734c91520242a49a9e98a2f2589f397faa6ad8e8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/info-6.5-6.el8.aarch64.rpm" + }, + "sha256:3f8039ed081aa3f628e947656af825b4541ded3547675098eabb0f177eca45e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/polkit-0.115-11.el8.aarch64.rpm" + }, + "sha256:3fe7c10c144c8fffc00d144317a2bf8029bd9d048432bccfc352dfc6f0995680": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-udev-239-36.el8.aarch64.rpm" + }, + "sha256:4059e9cccbde0401f9af4dea1160a07af8760adbc3e1d964e5c8ac87307eff81": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hdparm-9.54-2.el8.aarch64.rpm" + }, + "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dhcp-common-4.3.6-41.el8.noarch.rpm" + }, + "sha256:41cc2d507fdfbba939c00164a563e770d466f992cb64d3c51a79aec20b31d6d1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.aarch64.rpm" + }, + "sha256:428af99d7ff753fc26a13130115c4dcbbac030776a299583d00c69e8ec6a13ca": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sssd-common-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:432ef41fd5f9ad2b9a797ed105f6e729dcaf19c17df9c1478802af04e898e305": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sudo-1.8.29-6.el8.aarch64.rpm" + }, + "sha256:435a2be84a2b38372965dbd60ffed0ed38a616b8100859787a8bb3b19d9fc4d9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpcap-1.9.1-4.el8.aarch64.rpm" + }, + "sha256:439c408eb3f33e9d8bea308afda0b32fadf7910f7b064c9821499332672a60cf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libldb-2.1.3-2.el8.aarch64.rpm" + }, + "sha256:43ab42c8a58267936a89da99e37d3b9fc56489e958060f600ba047445ca44ee3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/os-prober-1.74-6.el8.aarch64.rpm" + }, + "sha256:448d3ff44e7f32f3b33e891180e248dc1bcd4d410f68015a8b0c30dc7c385aca": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-libs-1.1.1g-9.el8.aarch64.rpm" + }, + "sha256:4633c2b5a93723e1cad477b81f9ccefafed342f8c4474ec305058f99c713229d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-extra-2.02-84.el8.aarch64.rpm" + }, + "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm" + }, + "sha256:471663fca7e3f609834368d69d8f1f469cfc0d3f3e95dc2b79381722d0368edc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.aarch64.rpm" + }, + "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm" + }, + "sha256:47b483c0f556c56f0b1f468603c57834864902ae5a849a18c8a0ca5f76d66c86": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:481bbd6d73415d437a73eee7977ec370299acdac44b215a026652debba31783d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtirpc-1.1.4-4.el8.aarch64.rpm" + }, + "sha256:48509ce37ec06c1b15149feec4b2eb5d3a2f0453a41804c9c5d9ef5b8b320d4f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-audit-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm" + }, + "sha256:4874e739ed37bc6a5bfdb6069d4620e5f7efe01d60eb9fd2550c550167c99990": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.aarch64.rpm" + }, + "sha256:4909edde46b5b2b58d228bacafa3bab5bc5847559d591d59ecd59cdf50d36db4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-hawkey-0.48.0-2.el8.aarch64.rpm" + }, + "sha256:49258c6900ab6f3eaa5f7c7515fcf0a7d604af9d99e7d5f72be7bc75e00a844a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libX11-1.6.8-3.el8.aarch64.rpm" + }, + "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm" + }, + "sha256:4a27cd4496ebdba821b3c7692eeb0c0fff28c6af69fe4fe9e4bf52511639bd6a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kpartx-0.8.4-2.el8.aarch64.rpm" + }, + "sha256:4a308727d8b5a3d4cbbbc7d9b07884ebf6a37b4b6eb9a8edab5b61f449142285": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sg3_utils-1.44-5.el8.aarch64.rpm" + }, + "sha256:4a40a1538c8a488f32476f96d2461c3b792eb0cf5acb998e397d8a9cef8e5461": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libffi-3.1-22.el8.aarch64.rpm" + }, + "sha256:4a7d4068f39dbb01d7f707f9912abfddcc065a62b66144eeb7b7e2f13cec68af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/polkit-pkla-compat-0.1-12.el8.aarch64.rpm" + }, + "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pyudev-0.21.0-7.el8.noarch.rpm" + }, + "sha256:4c6cf87b3ff6ea5b9eea8fa52906d42a634e7d6233ca3ec88c7b23da3745b9ea": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iprutils-2.4.19-1.el8.aarch64.rpm" + }, + "sha256:4d8d164f8bd56b7ab6252f009b38525f39fb161c03713414e1583894a265c50a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-all-langpacks-2.28-127.el8.aarch64.rpm" + }, + "sha256:4d8edaa317fd508226bb5421ef423470f3e9153167222dee7bf8fb2346b7875b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-049-89.git20200625.el8.aarch64.rpm" + }, + "sha256:4e4923f05d0032263d570075b9b832b9fc3550cd8f82f9a6b0b9b25061726110": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/popt-1.16-14.el8.aarch64.rpm" + }, + "sha256:4e644e08ef5bd3b33357d6c1ea64e37097c3224ae324456fef022b9e5fdd2947": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm" + }, + "sha256:4efe61bac45e15b3b1bfda93bf3cfbf72d49c7f0452737d01f12f49b6e624175": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/subscription-manager-1.27.9-1.el8.aarch64.rpm" + }, + "sha256:4fe7733b93fad52a48d4b47a6dc55582f3cc41fc2074e42a9b39fc5d407df6d3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-ethtool-0.14-3.el8.aarch64.rpm" + }, + "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm" + }, + "sha256:5176881bae429bec5136195c73b402081184ae2a35519673031a075e855f75f4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libXau-1.0.9-3.el8.aarch64.rpm" + }, + "sha256:518e5412ce19ab733f62c334da8c5545a212c4c971d513eb95590b08a14e3772": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bash-4.4.19-12.el8.aarch64.rpm" + }, + "sha256:532d46a4c0e68bd45eabc3e2ba6d570880344044e1034f5f347b37c470d0dced": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libverto-0.3.0-5.el8.aarch64.rpm" + }, + "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:53fa2fd6a138d00c697b827a77bcc25ec498b1d49bb04ef80594e81ccabc165d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgomp-8.3.1-5.1.el8.aarch64.rpm" + }, + "sha256:540fa90864b4eb0176b56e0c5e9d7bc6130985288ae297b4c38950381b08a827": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/findutils-4.6.0-20.el8.aarch64.rpm" + }, + "sha256:551a506b43e32d21bf7b6333e028733956d5ef3560837a0c84b0d3e598efa046": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/less-530-1.el8.aarch64.rpm" + }, + "sha256:56cc340c88cabacd9a329f80edee141154dbf84808894e43a937247394623cf0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl6000-firmware-9.221.4.1-99.el8.1.noarch.rpm" + }, + "sha256:571b590c6ec7a2ac73996dc7d3dd7863aecc43e5dcb1411c191218a32633952b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cronie-1.5.2-4.el8.aarch64.rpm" + }, + "sha256:5801caf2cc296b52b3b89b24eaf431fba2c130e948076aaf345988a754cca65c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libteam-1.29-5.el8.aarch64.rpm" + }, + "sha256:5896ab6e22741dc47c8c70de8c72178e7956cfba2abbda9c6b4ebbc54921b636": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-tools-libs-4.18.0-221.el8.aarch64.rpm" + }, + "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm" + }, + "sha256:593d4df5b8de12ed0ec5a0935cb0bd966e27a631aa0806250ba9f67092ad737f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libX11-common-1.6.8-3.el8.noarch.rpm" + }, + "sha256:5996ff948b5874f894c5ce3495652e6de552addf2331fd82193023d77994ef8f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.aarch64.rpm" + }, + "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-jsonschema-2.6.0-4.el8.noarch.rpm" + }, + "sha256:5a05f1126ed38f752af247dcdf7c958e738b935b8b6d942fd42f423768f05255": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgpg-error-1.31-1.el8.aarch64.rpm" + }, + "sha256:5cbe058e6d2177f88006fed866e6b1565d6024a12c311ae8eaa21008f76074b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl3160-firmware-25.30.13.0-99.el8.1.noarch.rpm" + }, + "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-jsonpointer-1.10-11.el8.noarch.rpm" + }, + "sha256:5eddb5c1febbe6e58491f8e9ee8fc9897298b307e0357c01f49d445cf25283c9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grubby-8.40-41.el8.aarch64.rpm" + }, + "sha256:60934825531d0364649b0441321d12e8823336d54550007258d7523286d2fa2e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/man-db-2.7.6.1-17.el8.aarch64.rpm" + }, + "sha256:6149e0dc3def62605315cbbe59d63b5ca340a791b4c6d3b4d0bda6efee7572f8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sssd-nfs-idmap-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:621e96e91103f2f701e4ac3b8b8b6ef9aab4db5ab8fb3e141eb02e3f328aed79": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-utils-5.3.28-39.el8.aarch64.rpm" + }, + "sha256:62a2878605ca0415fd60adcff4c7068d855d20737498a968fabc646610ccbe5c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-ng-0.7.9-5.el8.aarch64.rpm" + }, + "sha256:634a3cbf0b334e901b6887176fa1b98246be7c4010b4c21cb6fd8fa7aa5fdf94": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/filesystem-3.8-3.el8.aarch64.rpm" + }, + "sha256:635d847cc4dec8a8e1b418adfda2bc0a9e1814ed6c2c6154a5430029d83abd24": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-efi-aa64-2.02-84.el8.aarch64.rpm" + }, + "sha256:63c64d526e9820ddc57a77c053674eeccefef33f16af536dd9b47e816db06988": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-1.26.0-0.2.el8.aarch64.rpm" + }, + "sha256:6421426a896c0bf32738af8131c37001e532f62ac1242f63ebf6248ea34533b0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/squashfs-tools-4.3-19.el8.aarch64.rpm" + }, + "sha256:64ac5cb6fd3da1610812795ce17e09648d89c87513d6284b852a3455b0831d3a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lz4-libs-1.8.3-2.el8.aarch64.rpm" + }, + "sha256:651f38873d3356ec4efb27d04658541080d11cf1ece6335a07db1ca089fa7da3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-0.23.14-5.el8_0.aarch64.rpm" + }, + "sha256:6557d001315e85ac123b1378c5aafb81428e2383debcacf3f91c55476cfc48eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpsl-0.20.2-6.el8.aarch64.rpm" + }, + "sha256:65b8d755ff01dfefa423d2f0bd6fd54cfc4c580da63510e19cf178abb6e26172": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libs-3.6.8-30.el8.aarch64.rpm" + }, + "sha256:684080ec9230dce2d32c9b00ae381a00bb950d1984ed0b0e1c55fa6d75b6b099": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpipeline-1.5.0-2.el8.aarch64.rpm" + }, + "sha256:68593fad4413255772bd08ed7f8b578332f0f53e002c8c7473d90c966a87131b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-3.6.8-30.el8.aarch64.rpm" + }, + "sha256:689577d74311a7327aab6fe412a803d72b790957e863b6b78a8621a040306919": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cryptsetup-libs-2.3.3-1.el8.aarch64.rpm" + }, + "sha256:6a6aa18217ae72a0b33e4302da927e6ded92520cbf4d48a5030d4a2f95eeb5d8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/chkconfig-1.13-2.el8.aarch64.rpm" + }, + "sha256:6ae316dfb9723d13a8d36d98d109d4a55017b568ee2070279f1bdccdc699862a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-unbound-1.7.3-14.el8.aarch64.rpm" + }, + "sha256:6b14c3aa52da9a2eae13f2229bac41060ad7421ce5249eca80f4aa53e26344ab": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pciutils-libs-3.6.4-2.el8.aarch64.rpm" + }, + "sha256:6c3ee8b53c0af9bd4958b4e48d4d55fa7c574f444fb42eead1508ad740f97088": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/prefixdevname-0.1.0-6.el8.aarch64.rpm" + }, + "sha256:6cf02dd99fda867d11fdbb28fe0a277328319aece74b864133a8774cacd2bf54": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lsscsi-0.30-1.el8.aarch64.rpm" + }, + "sha256:6d46339afc3d65beb89cbb36052e779e95ef2448a163d26db13d67715dad9cf8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-syspurpose-1.27.9-1.el8.aarch64.rpm" + }, + "sha256:6f2bfbe0f23d3b233aacb72c153ee133839353325f028321eb5ea38b0dc06c02": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libattr-2.4.48-3.el8.aarch64.rpm" + }, + "sha256:6f87f305a3e0e0faf69c2a9d4f277958ca33e85b72c6e4f77a365a5f60ced3d3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-libs-25-16.el8.aarch64.rpm" + }, + "sha256:6fbfaa1e1b1bb4e2362cf3dce0f59a94a78b457904234cbccbe6afacde311c26": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-1.02.171-3.el8.aarch64.rpm" + }, + "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hwdata-0.314-8.5.el8.noarch.rpm" + }, + "sha256:704e1dc996a17815c6dcf7029c0ddb2849d40feaab6e9b9c687af9d95fef825c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libksba-1.3.5-7.el8.aarch64.rpm" + }, + "sha256:70c05e5512e85231b490c1aa9c0e7eeb7f9a09c34d1253c3aa1db0b8db6be974": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-nftables-0.9.3-14.el8.aarch64.rpm" + }, + "sha256:71ffa6d3e9722a0c4f89862ca2cdfe60e86a70b131569cfdf594f01dd0d69a70": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/plymouth-0.9.4-1.20200615git1e36e30.el8.aarch64.rpm" + }, + "sha256:727c08fe072ef85837e8db30574aec712cdf67a062eead3e5481ba08425b2395": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/unbound-libs-1.7.3-14.el8.aarch64.rpm" + }, + "sha256:72fe0e1837aa503049fada31c6e8ae73a4e550be2ddfd73303fb84e955fcc268": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl2000-firmware-18.168.6.1-99.el8.1.noarch.rpm" + }, + "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:740e25055db923edcb8a0bddebc688de61a17c6b738162163e9b569e0cda1e18": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libXext-1.3.4-1.el8.aarch64.rpm" + }, + "sha256:760d9056891a60c200984f0655aee1876b3bf890f7486306c05db8e295ae7843": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xfsprogs-5.0.0-4.el8.aarch64.rpm" + }, + "sha256:769b1ac34ba3aa35337b734b8548dcf9e8b41476b9b2093756341bcbd5969a36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/firewalld-filesystem-0.8.2-1.el8.noarch.rpm" + }, + "sha256:77b56d825eb31ca191254d17a4c9399e3c4fe8af42a528c2ad4424bfd865b82d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/expat-2.2.5-4.el8.aarch64.rpm" + }, + "sha256:784d385116891056b618722c933d43c5b395b92fa82e5bc797081317ec6a82ba": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-eula-8.3-0.2.el8.aarch64.rpm" + }, + "sha256:7864fbc866ae5a3e59b4f0f114b77ff52b55e76c5388a917f82a6097f02a4db7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libyaml-0.1.7-5.el8.aarch64.rpm" + }, + "sha256:796cac51b2c1092c4faad372717c6ddc37cad9757111a41e531fe0a8d6c0a9ea": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/brotli-1.0.6-2.el8.aarch64.rpm" + }, + "sha256:7c014b54f7929348f614f8f4eb7a1552b8565c0a57f3a75ff6471dc05f30cafe": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libacl-2.2.53-1.el8.aarch64.rpm" + }, + "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm" + }, + "sha256:7d3ddbaae06c7fb8d24449e11b418ee07bdd9e07f7f0af57741d220b97228557": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/curl-7.61.1-12.el8.aarch64.rpm" + }, + "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-slip-0.6.4-11.el8.noarch.rpm" + }, + "sha256:7fc33f147b99749fdbae420ed51277cb99d9b6418b7f739fe51c7563945bc0d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hostname-3.20-6.el8.aarch64.rpm" + }, + "sha256:800c9a0d718c641ceee26c8f625b2dcd79a33963e9e7a11930678dc99582a2d0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-libs-239-36.el8.aarch64.rpm" + }, + "sha256:81d2e21dad970c08798c0df00bbda21acf165a370f9612e0d14ce69e5dd6c5c3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grep-3.1-6.el8.aarch64.rpm" + }, + "sha256:8329bf1aedce9ef3a4d7513ef98d3931ad39b84d5c3e73e99936c7f9b87931c2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dbus-1.2.4-15.el8.aarch64.rpm" + }, + "sha256:83301ca502322e0634173460bf8fa35572c36ab8cc2e6e600bf9980f845fc857": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-1.2.0-2.el8.aarch64.rpm" + }, + "sha256:83e470505f558f8cf8414a7fc8fb0d1bc4b16ed15d05ccf7e46332b04d1a0d85": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/util-linux-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:8498846918c7bc7a20553340434cfbfb0d19185adcd0ff52866c6506ab8f747d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcrypt-1.8.5-4.el8.aarch64.rpm" + }, + "sha256:84e7102978d76d80aa40c43efcc71c1e54e819195132df921a8c13cec54328da": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-5.3.28-39.el8.aarch64.rpm" + }, + "sha256:861346b2e683c09a53c9418a9ed08faf7448e066e3111482c70722cb62a6edce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/polkit-libs-0.115-11.el8.aarch64.rpm" + }, + "sha256:86ae7501bdf0149728879f488dd4c86907216cb5b021192347a5c10a55382931": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcroco-0.6.12-4.el8.aarch64.rpm" + }, + "sha256:876ffb285aaeddb2c18ae32527bd4ee202710bd8e18d5b410af22937646dcdec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxcrypt-4.1.1-4.el8.aarch64.rpm" + }, + "sha256:8ac1003d722e3d5f383c9b970bf6dfbc905007a624abadb63e520d7a93993747": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-6.1-7.20180224.el8.aarch64.rpm" + }, + "sha256:8ae407fb97bfa1bcd669f4263d0b45dd7fc7e97c1371cc4b8f4360024a56e7bb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ipset-libs-7.1-1.el8.aarch64.rpm" + }, + "sha256:8c0d40edf059bf044314df38c84e26cfbe00bf4e687a6114eacb17251718312b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnl3-3.5.0-1.el8.aarch64.rpm" + }, + "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pycparser-2.14-14.el8.noarch.rpm" + }, + "sha256:8d5c968225f0a3b7c492fdffb57cf0e34fee77c06a64a94a3a8b52edab30eed7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/slang-2.3.2-3.el8.aarch64.rpm" + }, + "sha256:8e916224ddbb8a7d8cd305f11087c66df950a318e4ef64290bca1afdc1327950": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/passwd-0.80-3.el8.aarch64.rpm" + }, + "sha256:8eb3370fe641e329b03838e560f45ee290b273dcccfa182d97ad2dbff59b47fd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl6050-firmware-41.28.5.1-99.el8.1.noarch.rpm" + }, + "sha256:8ef2fcbe5a8d6e7d393d28838ff458336d16e006bc7d19921f460eb105b88570": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-libs-1.18-1.el8.aarch64.rpm" + }, + "sha256:8f2c073583d6d4347642139a9806174ba64848c6bd4fbc81b7e7e0d42751cc74": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/groff-base-1.22.3-18.el8.aarch64.rpm" + }, + "sha256:90405803c0159cdf0f74a26b6ce064cfd9973e59232b2923ed171a38fc5684a6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-gpg-1.13.1-3.el8.aarch64.rpm" + }, + "sha256:9138a16731ceb7fdbb8661338a5806692a7a95875894aac95069104f44bca234": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcollection-0.7.0-39.el8.aarch64.rpm" + }, + "sha256:91c58481a7e4a9b7f9e0e14844fa73047395c75df95d35afa3b0d8ef3f584491": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-common-2.28-127.el8.aarch64.rpm" + }, + "sha256:925c70a394a76004087fd6e8d94f7edab9de9efb2b81740c875698532ba124c7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-plugin-subscription-manager-1.27.9-1.el8.aarch64.rpm" + }, + "sha256:92bc3c29b5232c55f60c9d0a5426bb04675209b8ee87df5725a83a60944219cb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libXrender-0.9.10-7.el8.aarch64.rpm" + }, + "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm" + }, + "sha256:950b6b41580f4c35a108345c1c8d9d3930cc95a2c4fe4b726f02bce67532151d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl6000g2a-firmware-18.168.6.1-99.el8.1.noarch.rpm" + }, + "sha256:95630378635c5e89eb204b2921dbd5db2e87d949e167fcf022174a3e63b532cb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libref_array-0.1.5-39.el8.aarch64.rpm" + }, + "sha256:959fcb0016788a2b1ee55f0801c1490b196416579bc9ac9da9e38786e6c78ff6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl105-firmware-18.168.6.1-99.el8.1.noarch.rpm" + }, + "sha256:95de1777f7e8a734445c5d45e0b77da8b6c41a9b504582ed266d852c677a936b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libuuid-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:964b1d9563e42a176c24cf5c91616ee5cc40de3b1c92038d7fb0392113eaf159": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glib2-2.56.4-8.el8.aarch64.rpm" + }, + "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-slip-dbus-0.6.4-11.el8.noarch.rpm" + }, + "sha256:986683a0edb615a5d45a9c1b0ee3d27f8032c2667cad58d24526085e41010992": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-pam-239-36.el8.aarch64.rpm" + }, + "sha256:98cf1d2d3ca85b3ec31dc56532c3b9f6fa5b3edadc8b4f4125526cdfb2b7507b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cronie-anacron-1.5.2-4.el8.aarch64.rpm" + }, + "sha256:98dd1582b8ab27085379a3a7e598a6e261c62f97a5f3689447cbf1d4af9ae46c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libs-0.180-1.el8.aarch64.rpm" + }, + "sha256:98f838a9775269a0f796151bd54d52c7ac91d4bf1365186772f243bfafbb136a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libaio-0.3.112-1.el8.aarch64.rpm" + }, + "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:9a13d64325d59ec40093eaa8faa40b15933808d2dd7b1b3a3fbc5e3b99de19c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libdrm-2.4.101-1.el8.aarch64.rpm" + }, + "sha256:9a1c6f2b18126214e9afa768bbf16b29b89ce3169ccbd4bc169000eed143dcb4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dhcp-libs-4.3.6-41.el8.aarch64.rpm" + }, + "sha256:9a22fe8cebacb37d6bc22105db763016689e9ac06bee33fc41693f60b076ff0c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpath_utils-0.2.1-39.el8.aarch64.rpm" + }, + "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm" + }, + "sha256:9a9546fcc510204dc7bcfe61d6ca63f436c01cd9b3f8451c8f07ec4f4fc2ba68": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libuser-0.62-23.el8.aarch64.rpm" + }, + "sha256:9b6fcdd19caee5fe77b9ed17adb3f11769a7109ebcf52d3cb3358d5a9eecc391": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libdnf-0.48.0-2.el8.aarch64.rpm" + }, + "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-2.9-3.el8.aarch64.rpm" + }, + "sha256:9c416279320ab29a8ef4fc32ca60beaec4c8da6054d10695cd2b37af19cd0ee9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libselinux-2.9-3.el8.aarch64.rpm" + }, + "sha256:9da7de3dd0a487abf1bbfb0c9de0b491102fe0796e53a47ee4414003a8b51f33": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/nftables-0.9.3-14.el8.aarch64.rpm" + }, + "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-babel-2.5.1-5.el8.noarch.rpm" + }, + "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-ply-3.9-8.el8.noarch.rpm" + }, + "sha256:a05f9b43292810dde4e6acd64eac2a80f047d35533d2d5e647565f75502189fa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-schedutils-0.6-6.el8.aarch64.rpm" + }, + "sha256:a07f96031fbe9507a8d6bb0e14cf0783bc615552e4cfb75131672072f5729de8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libxkbcommon-0.9.1-1.el8.aarch64.rpm" + }, + "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:a213587722f7c8a0291a56f352861ec661604051c952ebf6a428ae969af377d0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_certmap-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:a32db9e3d2321bd5c4e998f7ed6f4459d85f792a16f4fdfb8805f5936d521572": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/c-ares-1.13.0-5.el8.aarch64.rpm" + }, + "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm" + }, + "sha256:a445e982c81c7a64f6660f7f3bf6ed03dac3cd599dcb1e4bae06b8f236ea7e7f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/irqbalance-1.4.0-4.el8.aarch64.rpm" + }, + "sha256:a5c6189b8644cea4d4039375dfe2d828e08a59896e9827ac967782d225a78619": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-cryptography-2.3-3.el8.aarch64.rpm" + }, + "sha256:a6292dd846bc471b22409fc95a5e09c88bcb6176251dc5cc11f4b14a73ddda11": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-8.3-0.2.el8.aarch64.rpm" + }, + "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pysocks-1.6.8-3.el8.noarch.rpm" + }, + "sha256:a7fe54c4d43f925093face259d9fd8f28f06e9c11dcc3ad100b24288c577e4a4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/authselect-libs-1.2.1-2.el8.aarch64.rpm" + }, + "sha256:a840b8193ce9b1b72e3783b9a9bb2ec91947ba3b6f7ac973ae8e0e20a7059117": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shadow-utils-4.6-10.el8.aarch64.rpm" + }, + "sha256:a93b90699f26009debf0ac7b6759daf23afa9f3c851ccd7c98e35d9a89824dcb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sg3_utils-libs-1.44-5.el8.aarch64.rpm" + }, + "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:aa1a6a85493590efb9c0235c15d6a05e8b119f385dc13b3e3abd2315f8c4a6e0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/memstrack-0.1.8-1.el8.aarch64.rpm" + }, + "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/setup-2.12.2-6.el8.noarch.rpm" + }, + "sha256:abfda01b6d377de999efa9c2b4870bf3ba43cd50155f036d13aae0ba4a617565": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libndp-1.7-3.el8.aarch64.rpm" + }, + "sha256:acd4674b3fbe01d6cf94eb18a81cdb00beb73bf3d4a25a28e234f31498f5c389": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-dicts-2.9.6-15.el8.aarch64.rpm" + }, + "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rootfiles-8.1-22.el8.noarch.rpm" + }, + "sha256:ad07261ff4f478be9511f7ee749bfbe8b2ba8e28696c2f561caa20e35c535134": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libutempter-1.1.6-14.el8.aarch64.rpm" + }, + "sha256:adb9e37c63a055bc106a9676c10a85fdedcb4af64ae062249732e158bc0ae9af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/checkpolicy-2.9-1.el8.aarch64.rpm" + }, + "sha256:aeda2c664e2d993e56008f68823d05ec6d7665f2bb65b5f990c2112f0a7f91cb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mokutil-0.3.0-9.el8.aarch64.rpm" + }, + "sha256:af3adfdba9b6ca2e6e8a57d60b64e11994bb6dbdcd63d03492c29c763b8f22c2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libXrandr-1.5.2-1.el8.aarch64.rpm" + }, + "sha256:af98260ff2c263c9cefcb96d16d200941c1873cda9868b57df51b034066940fe": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-8.0p1-5.el8.aarch64.rpm" + }, + "sha256:afcbadced001b780cb7fc4c180b070acb48c2fff04783d6a4a35d08fae9928d0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdhash-0.5.0-39.el8.aarch64.rpm" + }, + "sha256:b140eb203fe889d1c75ef3b5527033cfeb7a6f0c813638a607c9f10faf52a34b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libelf-0.180-1.el8.aarch64.rpm" + }, + "sha256:b35f92dddd2cd73f7f8d8595ebb197a1c67a214ec2acf960ac673a014f2d9b90": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-server-8.0p1-5.el8.aarch64.rpm" + }, + "sha256:b386b3ec3cb96fe9178fd1d2b245eddff0bdb2742a8f18e25faef1e98c00f42f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-librepo-1.12.0-1.el8.aarch64.rpm" + }, + "sha256:b55b77fb38d84685cef6638240daa54235fce156176c820a3c3b980bf414c5f4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl5000-firmware-8.83.5.1_1-99.el8.1.noarch.rpm" + }, + "sha256:b5b1f5f7a02f70db056861813ddcf181f2ebba507cd368fbe2c32f262edf7fc6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-rpm-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:b6946db91c0a0b5e39427db028815391dd1e8c7a04faf98bc1031b5490034790": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/virt-what-1.18-6.el8.aarch64.rpm" + }, + "sha256:b7955bb1ba7e944f6e5c36713db3bbc570ba0eb8de11ec6a1fa28cfc5c0029c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/freetype-2.9.1-4.el8.aarch64.rpm" + }, + "sha256:b7bc10e9947763df6e6177b3dbbe77c21f55ed60d26c4c28bfe14a98f7e06189": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-2.9.6-15.el8.aarch64.rpm" + }, + "sha256:b83b5cb8c799dea710e0fffc841abf88495a1f3d04057dd699cff2aac610d7d9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shim-aa64-15-12.aarch64.rpm" + }, + "sha256:b847207a13bec4b7fcfaaf3668d93bc5ad40a6477f976e6aeb59ab431545d0c5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-glib-0.110-2.el8.aarch64.rpm" + }, + "sha256:b90ce065d5ea98845733ff06e47d385937f6293ebddf52144c80f5fe1f296307": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/policycoreutils-2.9-9.el8.aarch64.rpm" + }, + "sha256:b93a509fc65dd88761b4f7f21d8a05f1cd22e878ac59eb7d8e1507f5a2376a1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libedit-3.1-23.20170329cvs.el8.aarch64.rpm" + }, + "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/basesystem-11-5.el8.noarch.rpm" + }, + "sha256:b984d8576520272b1011cc46b03c666cd6abc1bf74b428a8781ca58c6287a007": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/acl-2.2.53-1.el8.aarch64.rpm" + }, + "sha256:b9ceb537921c8d98f1e874c0a39cf0c6a606f469be21be151fa119e4b9c7f06a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libsemanage-2.9-3.el8.aarch64.rpm" + }, + "sha256:ba1364539f16d7c8379d7563fd0634651fa8a05b3f7098a21ba96e1f5641f132": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmodulemd-2.9.4-2.el8.aarch64.rpm" + }, + "sha256:ba66a87402ccc8515e164f597f5d254ad9513979fe3ca1ffabf63c915c0daa73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tar-1.30-5.el8.aarch64.rpm" + }, + "sha256:bae965c689b08ce42f10366e4b441504432ac353d30edb8b4b2cfc798069434f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-libs-1.12.8-11.el8.aarch64.rpm" + }, + "sha256:bc0f9bd34ac6a01dd7272b87e1b7a33045ff8c6793cac02fa639dfc9341e8215": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lua-libs-5.3.4-11.el8.aarch64.rpm" + }, + "sha256:bcd19fd35b5f8535ff5bb15db91e2339c9435908c1123d5e2272fcae15a62260": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgudev-232-4.el8.aarch64.rpm" + }, + "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-jsonpatch-1.21-2.el8.noarch.rpm" + }, + "sha256:bd03a8a056bc9d2df361688583521f5f656e83fc893b90d349b6282178f9330b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-clients-8.0p1-5.el8.aarch64.rpm" + }, + "sha256:bdcb042c2ff87e5c07685f70e04b051197199bd8465c5e26ceda82a13977d040": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iptables-1.8.4-14.el8.aarch64.rpm" + }, + "sha256:bee28477fcd36d5a877d1fe3d61aa876f62128681411718e0c3fc82b95cf8e59": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm" + }, + "sha256:bf267d9571cf568375e261d593236750f400ac536c1c818513106482ebc3fb10": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsigsegv-2.11-5.el8.aarch64.rpm" + }, + "sha256:c00024ec890b67b443e2c40a0580a1263458dc9d09f4bde578d7c045323946b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-cffi-1.11.5-5.el8.aarch64.rpm" + }, + "sha256:c0f53020ecdb8eefb21795b0acf589334e89a9ef339a84d42e61999f53c67d18": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/jansson-2.11-3.el8.aarch64.rpm" + }, + "sha256:c17544abced52ad9df8229c71a0f8c437719c4d1fccd77f2db707be18226aecb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm" + }, + "sha256:c1b5c4668331e8b05a08e7de432cbfb75f8072401bb6651a24e43f64eff8dcc4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsecret-0.18.6-1.el8.aarch64.rpm" + }, + "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm" + }, + "sha256:c22f0d40fbdaaceec711be0cecc122fac4570d126914ce3694a3d6a1178bd487": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gpgme-1.13.1-3.el8.aarch64.rpm" + }, + "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/readline-7.0-10.el8.aarch64.rpm" + }, + "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-idna-2.5-5.el8.noarch.rpm" + }, + "sha256:c321e3a0253fb2691035135b3d3740faa76b8e9c84a0378f480ff85ddd9f16bd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efibootmgr-16-1.el8.aarch64.rpm" + }, + "sha256:c3727553ea6dd925d9c760b23eb617d1cb475fab9c495543868666ad6cd3b088": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-tui-1.26.0-0.2.el8.aarch64.rpm" + }, + "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-asn1crypto-0.24.0-3.el8.noarch.rpm" + }, + "sha256:c5098f41849af65b808baac594539440fcdffea7afce4239eb41885eccfd67e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/firewalld-0.8.2-1.el8.noarch.rpm" + }, + "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-hwdata-2.3.6-3.el8.noarch.rpm" + }, + "sha256:c59a19d44466633bf19e18463ece1ec20cdeae962f1ea3613bd09a2ffb160318": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/numactl-libs-2.0.12-11.el8.aarch64.rpm" + }, + "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm" + }, + "sha256:c633b98b4dbf96674a69573404819c34d66eb7e19820283fc588f6b10b0e3fc8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-build-libs-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:c7a1a166d4a58fd42848d05e4dd0d8bc459fa3b585396230729978f9cffc4474": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdaemon-0.14-15.el8.aarch64.rpm" + }, + "sha256:c82ca1c0ef4b89f75e8e7edbbae4f3eeb2720a4abd56b0927928cff2d9721186": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-utils-2.9-3.el8.aarch64.rpm" + }, + "sha256:c88d1656b8001ff79175f7d3b7818681e40e54e8fec6fb8556ba8141d437fcfa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.aarch64.rpm" + }, + "sha256:c8a28b4587888435c51f6d1ce42f48b08fb0256e4029ea569e9a02adcb82c85a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsepol-2.9-1.el8.aarch64.rpm" + }, + "sha256:c9b3c6dcb4133c3051e3f75978f994aae4c0ad84dd1abbae7fcba497ee524603": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-firewall-0.8.2-1.el8.noarch.rpm" + }, + "sha256:ca87249f90bac96902d18c11a1f8c80566fa090c6473226bdd147e07e3ed21ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/krb5-libs-1.18.2-3.el8.aarch64.rpm" + }, + "sha256:cbf25aa7faf9114e9735dbc120fb8fdda1694c86ab24c204383faf484720ee58": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libXfixes-5.0.3-7.el8.aarch64.rpm" + }, + "sha256:cc7e751a62f9a28b82df0bce0ecfb050364b8688ef69473f1910909e44c5eb98": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libseccomp-2.4.3-1.el8.aarch64.rpm" + }, + "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pytz-2017.2-9.el8.noarch.rpm" + }, + "sha256:ce6960fa7831611815e163864a91b70b0ab1ef0f446c2cad1eec13404822cad5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-libs-0.19.8.1-17.el8.aarch64.rpm" + }, + "sha256:ce8c92fa2bef1770f44992db24e1cb8cc850feab03a74cf0ebf741ecb0d160ea": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre2-10.32-2.el8.aarch64.rpm" + }, + "sha256:cf6220736fdd005ba7c67ccb5d5d8a1d9c35718e3c13e79c80967866968d7344": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl100-firmware-39.31.5.1-99.el8.1.noarch.rpm" + }, + "sha256:cf8fdbfcd359aac8bf55500c24e6843baafe8fef35019126c3616806b41415b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ima-evm-utils-1.1-5.el8.aarch64.rpm" + }, + "sha256:cf9a0bbaa7bd075d2af532586ee93ab92b96d9859f53a57f85cd7e0309f8fff6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/zlib-1.2.11-15.el8.aarch64.rpm" + }, + "sha256:cfa188d39884fd4ba36d27e8fb25aed9dbd26efccffbfd01a24c2c580fdb96f1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openldap-2.4.46-15.el8.aarch64.rpm" + }, + "sha256:d173b35182f28b9dd48e4a942f2a20c659bee2f9ac234b60cf8b995aa2421382": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libblkid-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:d20f4bf44fcc90509e7afca364eae0a55c8f33df2f8a69e266f5fcd4b5fa2e4b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.aarch64.rpm" + }, + "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:d2efb494bd4793fdcaaad35a66d7721df7ec53b6fc8da4fa8c8f24008533f38a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtalloc-2.3.1-2.el8.aarch64.rpm" + }, + "sha256:d3fb5a473c44cd8ae6b94d6bf3fc552553d8f4ef28eed439658ea38990ab9db5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-libs-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:d4424a9c946da1eab876298af8f772d5aab1109a1f551ac2f1cd10ee849568de": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-2.28-127.el8.aarch64.rpm" + }, + "sha256:d4467ba499fe1ddd82746ad00d7e86bea59c4827fe1ff8c05132bad1f93ddb7f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-239-36.el8.aarch64.rpm" + }, + "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-urllib3-1.24.2-4.el8.noarch.rpm" + }, + "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:d695df94220c2ef990e502123b3bd8ede8fcfb4f738346dd98d999559b01b6b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-0.3.14-4.el8.aarch64.rpm" + }, + "sha256:d6aa17908468b5e2095526664fce6627dec7a02c26625339c14b9278cc39d4a6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libfdisk-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:d6ab7c8790cd6c9a137d908d840c51c547e950d25f6ab8af3c9ad3899ff6c044": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpwquality-1.4.0-9.el8.aarch64.rpm" + }, + "sha256:d74da38b942dc95929b21c8fcf2c5d2fb4468b78ed14e7a4bcbe933998be4deb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-modules-4.18.0-221.el8.aarch64.rpm" + }, + "sha256:d82c81115472a70d60d2320e254762c76a583ad2190ad45068476c77512588af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm" + }, + "sha256:d868f3e9b48e1acc5c7674292619f1e80a2a2617aa1ab75d7cb4665495bdc654": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-subscription-manager-rhsm-1.27.9-1.el8.aarch64.rpm" + }, + "sha256:d890d028f59e2553730fad3dbea0e1a245c92c24836513fa2281194b1c90b53a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/procps-ng-3.3.15-2.el8.aarch64.rpm" + }, + "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-requests-2.20.0-2.1.el8_1.noarch.rpm" + }, + "sha256:d9a4628bd8d3e776f626be4cb5edec305c2ff894d7c5cc7e33e212545721053a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm" + }, + "sha256:da4b9bfad26d559485ade669556512acfe93ba23d204f2556bac82c09401b4e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libunistring-0.9.9-3.el8.aarch64.rpm" + }, + "sha256:da4d193d5f0caf7a196f3bd4aa1225072b522521d82fca8edecc6546b5460ac6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.aarch64.rpm" + }, + "sha256:da671d59c65465dab426361abaaf42c3f3c0216e936cded295719e368066bc6b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iptables-ebtables-1.8.4-14.el8.aarch64.rpm" + }, + "sha256:da92fada5920a24577f614e1167e3b339d516ca646346c04c71ef2bd97295653": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ipset-7.1-1.el8.aarch64.rpm" + }, + "sha256:daf36ee86ec6001770ae68bdd82409526faf4b9b1313a6b74fb54cfb98ff571e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/npth-1.5-4.el8.aarch64.rpm" + }, + "sha256:db7899290e3f78a9cff3796d1181dc0ef3d837b3c80e715c7ca85e01a811093a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnftnl-1.1.5-4.el8.aarch64.rpm" + }, + "sha256:db817b5d2f9d678fd0fee30e52ed080fdb5c9dd723cd57f7d6b0133293502047": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efivar-libs-36-1.el8.aarch64.rpm" + }, + "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:dc37d12420a2593c46619e9b67a0115255a0c7334f547871ce08e329bf5d15a2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-1.12.8-11.el8.aarch64.rpm" + }, + "sha256:dcda73e0ea7b5d2710528fc6df135d435281d1f4d2be0018bb6f1858e818d599": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cpio-2.12-8.el8.aarch64.rpm" + }, + "sha256:dd67a6470f4b71ef5782a4ef53e2a0a1485d8215a93a7f708a69cb2a514c373f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpciaccess-0.14-1.el8.aarch64.rpm" + }, + "sha256:deaa0958c9fb57773dfdf74567b658d273cea81186b913aa1473867dc07b335b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dmidecode-3.2-6.el8.aarch64.rpm" + }, + "sha256:df1f1d61216be55ab9cadc9832e613ffd2350ca8dc03e27f537f22dc0f32e171": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/snappy-1.1.7-5.el8.aarch64.rpm" + }, + "sha256:dfaf74e2116ee30d1882b3461de90d3fb6faad4468eb0678f845d105b4439a83": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bind-export-libs-9.11.20-3.el8.aarch64.rpm" + }, + "sha256:dfdec57ff520511d1d4ef9d913d90fc8d6ac98685cbc12fb568c8980f2a73f1a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libarchive-3.3.2-9.el8.aarch64.rpm" + }, + "sha256:dfea8e48e0cf3d8984237e3d5fb715c7edd9b1f8db03faaefc42a8046b45dab8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbxtool-8-5.el8.aarch64.rpm" + }, + "sha256:e08305aecd924631284ddaeae39a83cca85495389d4ddef75410a32af49f946d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fuse-libs-2.9.7-12.el8.aarch64.rpm" + }, + "sha256:e085cf8bddcf09c908d925688dae077300d2964b40bd060af252d26a963cfe50": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-common-8.30-8.el8.aarch64.rpm" + }, + "sha256:e09e950b0a0842577364565380ba40e8c4f027919dc880378b606c2dafc5693b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libmaxminddb-1.2.0-10.el8.aarch64.rpm" + }, + "sha256:e0faa8a6bc43432619a2b6a26e9f1323d30cda945580d8bc0f6c2fe742b71924": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gawk-4.2.1-1.el8.aarch64.rpm" + }, + "sha256:e160910d31a37afeea87df306264fb1f727cbca574d2c234cdca856f5311fbd6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gobject-introspection-1.56.1-1.el8.aarch64.rpm" + }, + "sha256:e1826902c98cca301a4e0876b34e6c77f1688a1fb613c265cea37e2ee40e7884": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kexec-tools-2.0.20-29.el8.aarch64.rpm" + }, + "sha256:e1bee08f1e76f8b820a59b5c228a0c1b4eaa7fc70c7d840251a04a74d517e25c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-squash-049-89.git20200625.el8.aarch64.rpm" + }, + "sha256:e2c4ac0f7abf75cbcc7a6fb35412820c267f1a8ce614f41b60d901918c4616d5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/nettle-3.4.1-2.el8.aarch64.rpm" + }, + "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/yum-4.2.23-2.el8.noarch.rpm" + }, + "sha256:e426534c59b3a35068877d324dd34d643ad7c84d2c406b2e6502ac6c2a367d39": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-5.2.4-3.el8.aarch64.rpm" + }, + "sha256:e4ec1966f9bc7cbc898fe7550600ae3e9e4f8afbcdd3f6e74afe1965247653ba": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/keyutils-libs-1.5.10-6.el8.aarch64.rpm" + }, + "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-linux-procfs-0.6.2-2.el8.noarch.rpm" + }, + "sha256:e55bf252e792f27f076101e94dfbbac97dabeea0f7893a4cb9b111a0b72d187f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libreport-filesystem-2.9.5-11.el8.aarch64.rpm" + }, + "sha256:e5f82f102f51d88aa517bbebd170795a571b7ddc3036574b92b498cc13704d98": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcom_err-1.45.6-1.el8.aarch64.rpm" + }, + "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-policycoreutils-2.9-9.el8.noarch.rpm" + }, + "sha256:e82699d15e4e6ff7825629d7c1c8a0f50a5519b6e5328472de91a0deddb9cf3d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gzip-1.9-9.el8.aarch64.rpm" + }, + "sha256:e85c24b0e9d047763e2c8e673bb6dc579b55c650e8f19d14c9010f3dc5cd0ccd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnfnetlink-1.0.1-13.el8.aarch64.rpm" + }, + "sha256:e9487db2fdce1f494ee1582787a1afc1ea4e0429189db8be0ddbb0af2676c4b6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librhsm-0.0.3-3.el8.aarch64.rpm" + }, + "sha256:eaf3c7104d3ebd0cdda3d6ce44f4c79eec0a8ce3ce71cbb0d9dfe716f58a105d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-tools-1.12.8-11.el8.aarch64.rpm" + }, + "sha256:ebcaa2d2ec8ddaa66d042a208ccee6b13735ffba04fe3f326954cd76fa4f5910": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iputils-20180629-2.el8.aarch64.rpm" + }, + "sha256:ec40be9e0b2bb03f7b057a7a9342ffbd86129d58828fb310f445bc506261eb0e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.aarch64.rpm" + }, + "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm" + }, + "sha256:ed28e1e31109e27ce1c676914364c9f1dd46b71d00cb4cf13931f0fec6cf6978": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtasn1-4.13-3.el8.aarch64.rpm" + }, + "sha256:ed8e018fb3a2ae3243b047b7f25cd7bd0b5b73abc6f254de3a7d13a6a568e4a4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtdb-1.4.3-1.el8.aarch64.rpm" + }, + "sha256:edba68c63891b1171417b8d3af5827cc45a37210d18d701c0e178870e5435031": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/net-tools-2.0-0.52.20160912git.el8.aarch64.rpm" + }, + "sha256:ee978ba9ffa58b85705df0736903e6717f13936343aa693cda376c4167a828ab": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-langpack-en-2.28-127.el8.aarch64.rpm" + }, + "sha256:f07b1f40ebb1fbe5c24e68a38b5f768a21e2ec2254d4bd8ff61fb0bde72f64ce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.aarch64.rpm" + }, + "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm" + }, + "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm" + }, + "sha256:f237a314daeeb228f767e1521edffa9e9b15b07695ba1008b0f2b6807085b9cb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lzo-2.08-14.el8.aarch64.rpm" + }, + "sha256:f35c0da3cff05ded33c0cb4f202dbb52a5caabec8b1897d5057df83c284d62f1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsmartcols-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:f4e63e7eedc0266a575eb6107f41c5f20ca0505a0e80145c21b9741674d5c0b5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libstdc++-8.3.1-5.1.el8.aarch64.rpm" + }, + "sha256:f4f5cc3080dc150c47b27383a344937fe17a679cb7046ca76165654d4e207a0b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iproute-5.3.0-5.el8.aarch64.rpm" + }, + "sha256:f6df1feba76d87214433eee205e3b99621dcd78b485ed5f99ba2658117786b6c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/newt-0.52.20-11.el8.aarch64.rpm" + }, + "sha256:f700797810fb2bdbba5a0b31e10c361360a87bac1a282da109273194a25bf6ef": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-2.2.20-2.el8.aarch64.rpm" + }, + "sha256:f769edf78f42bae1bd183a6f4a49d74822db2b5e830147178d197be1cd67a306": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-network-049-89.git20200625.el8.aarch64.rpm" + }, + "sha256:f7ccbe0d7b4a61b5a47253f168f8efcdbf41ad0755e678f9edcd2f6a69c93c7d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-5.33-16.el8.aarch64.rpm" + }, + "sha256:f7de2bbb3653c3033d43f645ac26e91c788527c0b4d5e7238dea54c3adc6f1a1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/initscripts-10.00.8-1.el8.aarch64.rpm" + }, + "sha256:f847957437e7f24844930c4a3ff64c5f7877f083553f48eeadca3c5f5e5c728e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pigz-2.4-4.el8.aarch64.rpm" + }, + "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm" + }, + "sha256:f8c30f90610f8cc907009df99348a5e572f5598aed91280c15af604ba62687b2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl2030-firmware-18.168.6.1-99.el8.1.noarch.rpm" + }, + "sha256:f96bc0d82d4c6934659c23a6771515e78bf2252ed24d32c78001260ee6e36c8d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-daemon-1.12.8-11.el8.aarch64.rpm" + }, + "sha256:f99f5edde9ad4574b84264c467420c910b31f78683fbf1b63d106a7e6c9d64a3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-libs-6.1-7.20180224.el8.aarch64.rpm" + }, + "sha256:fa80a7e82e231dc77b3e44edd2cbf5b3d1657e009e59f15bbe8d50a4290b7c82": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmetalink-0.1.3-7.el8.aarch64.rpm" + }, + "sha256:fac29887224d91e8190a569b3ac5be1168034f36c9c234576ea3cefe686e46cd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdnf-0.48.0-2.el8.aarch64.rpm" + }, + "sha256:fb263177eee60c26b7acaa76cb640c3d7ab6928e73c8af80b2111a247bd61ece": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-lib-0.3.14-4.el8.aarch64.rpm" + }, + "sha256:fb56b7a416e12da0782ae8ba7396bc03a2f8844c2efcb5df3f8b9e74eb8b8059": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxml2-2.9.7-8.el8.aarch64.rpm" + }, + "sha256:fc51460213b3bf5b67f08f2695aae8d728f614adbbacb917a0825e4ebfbc3e68": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hardlink-1.3-6.el8.aarch64.rpm" + }, + "sha256:fcb59efbfef73a98caa84f0f99dbfd15d7d49d8e74368969d6760d132afffad2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/plymouth-scripts-0.9.4-1.20200615git1e36e30.el8.aarch64.rpm" + }, + "sha256:fd202f857b3c5a15b8f66f86fd515c44a47c87c028d7db766661758dc3673436": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsysfs-2.1.0-24.el8.aarch64.rpm" + }, + "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm" + }, + "sha256:fddf61e9024c41073442ccff0c9990fa004e9b183f391c4e3cf3853e5ae6062c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-0.19.8.1-17.el8.aarch64.rpm" + }, + "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-jwt-1.6.1-2.el8.noarch.rpm" + }, + "sha256:fea4eb54fe59451b76fb40b9bd15ff41f0f51bb7371f94b2f5df572ef917d037": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre-8.42-4.el8.aarch64.rpm" + }, + "sha256:ff9fc6467a4c2fd0c22c419a9cdb7a524d1c69d0c87aa09f31728bef9f692f76": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcomps-0.1.11-4.el8.aarch64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:b984d8576520272b1011cc46b03c666cd6abc1bf74b428a8781ca58c6287a007" + }, + { + "checksum": "sha256:d9a4628bd8d3e776f626be4cb5edec305c2ff894d7c5cc7e33e212545721053a" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:518e5412ce19ab733f62c334da8c5545a212c4c971d513eb95590b08a14e3772" + }, + { + "checksum": "sha256:796cac51b2c1092c4faad372717c6ddc37cad9757111a41e531fe0a8d6c0a9ea" + }, + { + "checksum": "sha256:2d84f6765b1645f867527f493b6153470602a80c75f81545bf619aa92127e4da" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:6a6aa18217ae72a0b33e4302da927e6ded92520cbf4d48a5030d4a2f95eeb5d8" + }, + { + "checksum": "sha256:15c33124ac0479d34f1f58d2bd24cc52db7089b4a8681c276a3fd0d6dfe4fc72" + }, + { + "checksum": "sha256:e085cf8bddcf09c908d925688dae077300d2964b40bd060af252d26a963cfe50" + }, + { + "checksum": "sha256:dcda73e0ea7b5d2710528fc6df135d435281d1f4d2be0018bb6f1858e818d599" + }, + { + "checksum": "sha256:b7bc10e9947763df6e6177b3dbbe77c21f55ed60d26c4c28bfe14a98f7e06189" + }, + { + "checksum": "sha256:acd4674b3fbe01d6cf94eb18a81cdb00beb73bf3d4a25a28e234f31498f5c389" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:689577d74311a7327aab6fe412a803d72b790957e863b6b78a8621a040306919" + }, + { + "checksum": "sha256:7d3ddbaae06c7fb8d24449e11b418ee07bdd9e07f7f0af57741d220b97228557" + }, + { + "checksum": "sha256:41cc2d507fdfbba939c00164a563e770d466f992cb64d3c51a79aec20b31d6d1" + }, + { + "checksum": "sha256:dc37d12420a2593c46619e9b67a0115255a0c7334f547871ce08e329bf5d15a2" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:f96bc0d82d4c6934659c23a6771515e78bf2252ed24d32c78001260ee6e36c8d" + }, + { + "checksum": "sha256:bae965c689b08ce42f10366e4b441504432ac353d30edb8b4b2cfc798069434f" + }, + { + "checksum": "sha256:eaf3c7104d3ebd0cdda3d6ce44f4c79eec0a8ce3ce71cbb0d9dfe716f58a105d" + }, + { + "checksum": "sha256:6fbfaa1e1b1bb4e2362cf3dce0f59a94a78b457904234cbccbe6afacde311c26" + }, + { + "checksum": "sha256:057b6632870b8c3c0c950a19092ef2f9749bf3d1a37ccb083bf42ca6404db066" + }, + { + "checksum": "sha256:3a684fd5f1b1d417c6c3e9d1f0d5b846138aa06450ff246425d43d4a20bd619e" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:2efbfbcce7ef24e433d3c304b6b6b022d1b1b8a972969da1adb1c3c85f9625a7" + }, + { + "checksum": "sha256:4d8edaa317fd508226bb5421ef423470f3e9153167222dee7bf8fb2346b7875b" + }, + { + "checksum": "sha256:3256e78263462d5d7ab37b696992aedd6f810431641ce8d1e1bc198c797b402b" + }, + { + "checksum": "sha256:da4d193d5f0caf7a196f3bd4aa1225072b522521d82fca8edecc6546b5460ac6" + }, + { + "checksum": "sha256:c88d1656b8001ff79175f7d3b7818681e40e54e8fec6fb8556ba8141d437fcfa" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:b140eb203fe889d1c75ef3b5527033cfeb7a6f0c813638a607c9f10faf52a34b" + }, + { + "checksum": "sha256:98dd1582b8ab27085379a3a7e598a6e261c62f97a5f3689447cbf1d4af9ae46c" + }, + { + "checksum": "sha256:77b56d825eb31ca191254d17a4c9399e3c4fe8af42a528c2ad4424bfd865b82d" + }, + { + "checksum": "sha256:f7ccbe0d7b4a61b5a47253f168f8efcdbf41ad0755e678f9edcd2f6a69c93c7d" + }, + { + "checksum": "sha256:3ee66f993ee567b2457a221ed364ae4f8dfe783a5f0e723d9169f95d12f9e696" + }, + { + "checksum": "sha256:634a3cbf0b334e901b6887176fa1b98246be7c4010b4c21cb6fd8fa7aa5fdf94" + }, + { + "checksum": "sha256:540fa90864b4eb0176b56e0c5e9d7bc6130985288ae297b4c38950381b08a827" + }, + { + "checksum": "sha256:e08305aecd924631284ddaeae39a83cca85495389d4ddef75410a32af49f946d" + }, + { + "checksum": "sha256:e0faa8a6bc43432619a2b6a26e9f1323d30cda945580d8bc0f6c2fe742b71924" + }, + { + "checksum": "sha256:3f5765cebcac288cc1b5b118acfbc2016eda7b81ad73923f6f9c21e4731eb0d9" + }, + { + "checksum": "sha256:8ef2fcbe5a8d6e7d393d28838ff458336d16e006bc7d19921f460eb105b88570" + }, + { + "checksum": "sha256:fddf61e9024c41073442ccff0c9990fa004e9b183f391c4e3cf3853e5ae6062c" + }, + { + "checksum": "sha256:ce6960fa7831611815e163864a91b70b0ab1ef0f446c2cad1eec13404822cad5" + }, + { + "checksum": "sha256:964b1d9563e42a176c24cf5c91616ee5cc40de3b1c92038d7fb0392113eaf159" + }, + { + "checksum": "sha256:d4424a9c946da1eab876298af8f772d5aab1109a1f551ac2f1cd10ee849568de" + }, + { + "checksum": "sha256:4d8d164f8bd56b7ab6252f009b38525f39fb161c03713414e1583894a265c50a" + }, + { + "checksum": "sha256:91c58481a7e4a9b7f9e0e14844fa73047395c75df95d35afa3b0d8ef3f584491" + }, + { + "checksum": "sha256:19efe6f125c00123ccc6d96e51eb61e711f3ea01f32d18cce14d3b614217c58e" + }, + { + "checksum": "sha256:f700797810fb2bdbba5a0b31e10c361360a87bac1a282da109273194a25bf6ef" + }, + { + "checksum": "sha256:0b4564ad3a799af1a4a0de33b0952f6056d942b0cfa39b73e9375bf0c05b3191" + }, + { + "checksum": "sha256:3bf230c85711b285afb968850d7e98eb6b068a06e7ca40e94203e388d8447f48" + }, + { + "checksum": "sha256:c22f0d40fbdaaceec711be0cecc122fac4570d126914ce3694a3d6a1178bd487" + }, + { + "checksum": "sha256:81d2e21dad970c08798c0df00bbda21acf165a370f9612e0d14ce69e5dd6c5c3" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:2921d3aa14a509d271ca35256903c142c30f088f7dc889a4c4e15b26316ef5c0" + }, + { + "checksum": "sha256:126d980678e5b687c775cf857b4013306f1a761353370258a0f04d92a3553f92" + }, + { + "checksum": "sha256:5eddb5c1febbe6e58491f8e9ee8fc9897298b307e0357c01f49d445cf25283c9" + }, + { + "checksum": "sha256:e82699d15e4e6ff7825629d7c1c8a0f50a5519b6e5328472de91a0deddb9cf3d" + }, + { + "checksum": "sha256:fc51460213b3bf5b67f08f2695aae8d728f614adbbacb917a0825e4ebfbc3e68" + }, + { + "checksum": "sha256:cf8fdbfcd359aac8bf55500c24e6843baafe8fef35019126c3616806b41415b3" + }, + { + "checksum": "sha256:3f7e5e72ab9e18dbca936b40734c91520242a49a9e98a2f2589f397faa6ad8e8" + }, + { + "checksum": "sha256:0fd7dd5b060e7533144ad7a3cae2453ad6f87650010f328879b10c7c4cba0c04" + }, + { + "checksum": "sha256:36aece7b7a65785985bf0b98701514f12735a87517b8578a3eb3710f82ba4765" + }, + { + "checksum": "sha256:1143ac623a74d7feaaaf293c18d942d243248f6356628f87216670c10d11687b" + }, + { + "checksum": "sha256:10ac3bf7565725a55b0aef56f65befd0d320219fc83adfab6e564c19f8c44bd6" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:e4ec1966f9bc7cbc898fe7550600ae3e9e4f8afbcdd3f6e74afe1965247653ba" + }, + { + "checksum": "sha256:1091a799d34a42d2e42ac462b4f979a55d17513eca5a00bad9bdba56cca83357" + }, + { + "checksum": "sha256:6f87f305a3e0e0faf69c2a9d4f277958ca33e85b72c6e4f77a365a5f60ced3d3" + }, + { + "checksum": "sha256:4a27cd4496ebdba821b3c7692eeb0c0fff28c6af69fe4fe9e4bf52511639bd6a" + }, + { + "checksum": "sha256:ca87249f90bac96902d18c11a1f8c80566fa090c6473226bdd147e07e3ed21ec" + }, + { + "checksum": "sha256:7c014b54f7929348f614f8f4eb7a1552b8565c0a57f3a75ff6471dc05f30cafe" + }, + { + "checksum": "sha256:98f838a9775269a0f796151bd54d52c7ac91d4bf1365186772f243bfafbb136a" + }, + { + "checksum": "sha256:dfdec57ff520511d1d4ef9d913d90fc8d6ac98685cbc12fb568c8980f2a73f1a" + }, + { + "checksum": "sha256:0f1a02850c102e2a186787504f965c0c10d6432b9f600c18bc2f520e55f04a8c" + }, + { + "checksum": "sha256:6f2bfbe0f23d3b233aacb72c153ee133839353325f028321eb5ea38b0dc06c02" + }, + { + "checksum": "sha256:d173b35182f28b9dd48e4a942f2a20c659bee2f9ac234b60cf8b995aa2421382" + }, + { + "checksum": "sha256:2cddadff38ccef2364a7e40af0e1d9b3bf9c06869c15ceeb655f3cfa431c2083" + }, + { + "checksum": "sha256:62a2878605ca0415fd60adcff4c7068d855d20737498a968fabc646610ccbe5c" + }, + { + "checksum": "sha256:e5f82f102f51d88aa517bbebd170795a571b7ddc3036574b92b498cc13704d98" + }, + { + "checksum": "sha256:ff9fc6467a4c2fd0c22c419a9cdb7a524d1c69d0c87aa09f31728bef9f692f76" + }, + { + "checksum": "sha256:86ae7501bdf0149728879f488dd4c86907216cb5b021192347a5c10a55382931" + }, + { + "checksum": "sha256:2809ad51c6eb6c9a54d64cccc2cd948f6fd4207f32b4493b3f4a9bd0886c894b" + }, + { + "checksum": "sha256:84e7102978d76d80aa40c43efcc71c1e54e819195132df921a8c13cec54328da" + }, + { + "checksum": "sha256:621e96e91103f2f701e4ac3b8b8b6ef9aab4db5ab8fb3e141eb02e3f328aed79" + }, + { + "checksum": "sha256:fac29887224d91e8190a569b3ac5be1168034f36c9c234576ea3cefe686e46cd" + }, + { + "checksum": "sha256:058822931f4c34c18675116c1b02b718de4044c1019acb0d5f97417f00a30ba7" + }, + { + "checksum": "sha256:d6aa17908468b5e2095526664fce6627dec7a02c26625339c14b9278cc39d4a6" + }, + { + "checksum": "sha256:4a40a1538c8a488f32476f96d2461c3b792eb0cf5acb998e397d8a9cef8e5461" + }, + { + "checksum": "sha256:3b607f0dbedecb25239e22c1f553c8d70db9d2206a877fa07567fa1a49e233d7" + }, + { + "checksum": "sha256:8498846918c7bc7a20553340434cfbfb0d19185adcd0ff52866c6506ab8f747d" + }, + { + "checksum": "sha256:53fa2fd6a138d00c697b827a77bcc25ec498b1d49bb04ef80594e81ccabc165d" + }, + { + "checksum": "sha256:5a05f1126ed38f752af247dcdf7c958e738b935b8b6d942fd42f423768f05255" + }, + { + "checksum": "sha256:2dc8e2f52451d1a11b16bbb389a24c58b61a1ba804ee777f9d06dbe4e1fcf6e5" + }, + { + "checksum": "sha256:83301ca502322e0634173460bf8fa35572c36ab8cc2e6e600bf9980f845fc857" + }, + { + "checksum": "sha256:f07b1f40ebb1fbe5c24e68a38b5f768a21e2ec2254d4bd8ff61fb0bde72f64ce" + }, + { + "checksum": "sha256:704e1dc996a17815c6dcf7029c0ddb2849d40feaab6e9b9c687af9d95fef825c" + }, + { + "checksum": "sha256:fa80a7e82e231dc77b3e44edd2cbf5b3d1657e009e59f15bbe8d50a4290b7c82" + }, + { + "checksum": "sha256:ba1364539f16d7c8379d7563fd0634651fa8a05b3f7098a21ba96e1f5641f132" + }, + { + "checksum": "sha256:26b14d8f226962ce712bbccfb245843759e835a24a139eacae86d680043a85a7" + }, + { + "checksum": "sha256:4874e739ed37bc6a5bfdb6069d4620e5f7efe01d60eb9fd2550c550167c99990" + }, + { + "checksum": "sha256:471663fca7e3f609834368d69d8f1f469cfc0d3f3e95dc2b79381722d0368edc" + }, + { + "checksum": "sha256:435a2be84a2b38372965dbd60ffed0ed38a616b8100859787a8bb3b19d9fc4d9" + }, + { + "checksum": "sha256:6557d001315e85ac123b1378c5aafb81428e2383debcacf3f91c55476cfc48eb" + }, + { + "checksum": "sha256:d6ab7c8790cd6c9a137d908d840c51c547e950d25f6ab8af3c9ad3899ff6c044" + }, + { + "checksum": "sha256:2d74e0ab14393921c6160fda8dd533b58c0348acdf5ee5c306ffc64221700de2" + }, + { + "checksum": "sha256:e55bf252e792f27f076101e94dfbbac97dabeea0f7893a4cb9b111a0b72d187f" + }, + { + "checksum": "sha256:e9487db2fdce1f494ee1582787a1afc1ea4e0429189db8be0ddbb0af2676c4b6" + }, + { + "checksum": "sha256:cc7e751a62f9a28b82df0bce0ecfb050364b8688ef69473f1910909e44c5eb98" + }, + { + "checksum": "sha256:c1b5c4668331e8b05a08e7de432cbfb75f8072401bb6651a24e43f64eff8dcc4" + }, + { + "checksum": "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc" + }, + { + "checksum": "sha256:c82ca1c0ef4b89f75e8e7edbbae4f3eeb2720a4abd56b0927928cff2d9721186" + }, + { + "checksum": "sha256:140146ebcbadd9b0f2aa5c2fcde5c93888f2d84ce61a2a4cf148ef435d1ba410" + }, + { + "checksum": "sha256:c8a28b4587888435c51f6d1ce42f48b08fb0256e4029ea569e9a02adcb82c85a" + }, + { + "checksum": "sha256:bf267d9571cf568375e261d593236750f400ac536c1c818513106482ebc3fb10" + }, + { + "checksum": "sha256:f35c0da3cff05ded33c0cb4f202dbb52a5caabec8b1897d5057df83c284d62f1" + }, + { + "checksum": "sha256:2397506a63455e543b201938f605e687de5590d9a06282824e2f6bfdf5e0f149" + }, + { + "checksum": "sha256:268d9232f0853037100432e9363c659cf99927e03f759fd4884643b560710cd6" + }, + { + "checksum": "sha256:3ee6a4f61935c2f0698ad2c4834a5864920a1e48d55c7800da7c382249895e39" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:f4e63e7eedc0266a575eb6107f41c5f20ca0505a0e80145c21b9741674d5c0b5" + }, + { + "checksum": "sha256:ed28e1e31109e27ce1c676914364c9f1dd46b71d00cb4cf13931f0fec6cf6978" + }, + { + "checksum": "sha256:481bbd6d73415d437a73eee7977ec370299acdac44b215a026652debba31783d" + }, + { + "checksum": "sha256:da4b9bfad26d559485ade669556512acfe93ba23d204f2556bac82c09401b4e7" + }, + { + "checksum": "sha256:01e486a3be67325e9692e909f5c6534137ee6a6df185ba2c09d4d50fe6c738f6" + }, + { + "checksum": "sha256:ad07261ff4f478be9511f7ee749bfbe8b2ba8e28696c2f561caa20e35c535134" + }, + { + "checksum": "sha256:95de1777f7e8a734445c5d45e0b77da8b6c41a9b504582ed266d852c677a936b" + }, + { + "checksum": "sha256:532d46a4c0e68bd45eabc3e2ba6d570880344044e1034f5f347b37c470d0dced" + }, + { + "checksum": "sha256:876ffb285aaeddb2c18ae32527bd4ee202710bd8e18d5b410af22937646dcdec" + }, + { + "checksum": "sha256:fb56b7a416e12da0782ae8ba7396bc03a2f8844c2efcb5df3f8b9e74eb8b8059" + }, + { + "checksum": "sha256:7864fbc866ae5a3e59b4f0f114b77ff52b55e76c5388a917f82a6097f02a4db7" + }, + { + "checksum": "sha256:19d1de27d2f62b4a55735233807f70a1e8ff7551fed97ee8650dbd09c1ef50ea" + }, + { + "checksum": "sha256:bc0f9bd34ac6a01dd7272b87e1b7a33045ff8c6793cac02fa639dfc9341e8215" + }, + { + "checksum": "sha256:64ac5cb6fd3da1610812795ce17e09648d89c87513d6284b852a3455b0831d3a" + }, + { + "checksum": "sha256:320ced09e242f09047f4fab0a7f66aba6de2e42583f6a2e164eadcc1ffd0b915" + }, + { + "checksum": "sha256:8ac1003d722e3d5f383c9b970bf6dfbc905007a624abadb63e520d7a93993747" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:f99f5edde9ad4574b84264c467420c910b31f78683fbf1b63d106a7e6c9d64a3" + }, + { + "checksum": "sha256:e2c4ac0f7abf75cbcc7a6fb35412820c267f1a8ce614f41b60d901918c4616d5" + }, + { + "checksum": "sha256:daf36ee86ec6001770ae68bdd82409526faf4b9b1313a6b74fb54cfb98ff571e" + }, + { + "checksum": "sha256:cfa188d39884fd4ba36d27e8fb25aed9dbd26efccffbfd01a24c2c580fdb96f1" + }, + { + "checksum": "sha256:3ef63ecbebf844bcf682c9482dc0ddd158c955b0f066b62eb9575bb9a9642db5" + }, + { + "checksum": "sha256:448d3ff44e7f32f3b33e891180e248dc1bcd4d410f68015a8b0c30dc7c385aca" + }, + { + "checksum": "sha256:290c83afcd2b0a2b17aab95cf72a85da5f8b9f9a9862857c919a0f43e3fce70e" + }, + { + "checksum": "sha256:43ab42c8a58267936a89da99e37d3b9fc56489e958060f600ba047445ca44ee3" + }, + { + "checksum": "sha256:651f38873d3356ec4efb27d04658541080d11cf1ece6335a07db1ca089fa7da3" + }, + { + "checksum": "sha256:ec40be9e0b2bb03f7b057a7a9342ffbd86129d58828fb310f445bc506261eb0e" + }, + { + "checksum": "sha256:04c031a07bde4360484a0180e832036d3ac45a95c4839e54d7a02423df5485ef" + }, + { + "checksum": "sha256:fea4eb54fe59451b76fb40b9bd15ff41f0f51bb7371f94b2f5df572ef917d037" + }, + { + "checksum": "sha256:ce8c92fa2bef1770f44992db24e1cb8cc850feab03a74cf0ebf741ecb0d160ea" + }, + { + "checksum": "sha256:f847957437e7f24844930c4a3ff64c5f7877f083553f48eeadca3c5f5e5c728e" + }, + { + "checksum": "sha256:68593fad4413255772bd08ed7f8b578332f0f53e002c8c7473d90c966a87131b" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:b90ce065d5ea98845733ff06e47d385937f6293ebddf52144c80f5fe1f296307" + }, + { + "checksum": "sha256:4e4923f05d0032263d570075b9b832b9fc3550cd8f82f9a6b0b9b25061726110" + }, + { + "checksum": "sha256:d890d028f59e2553730fad3dbea0e1a245c92c24836513fa2281194b1c90b53a" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:90405803c0159cdf0f74a26b6ce064cfd9973e59232b2923ed171a38fc5684a6" + }, + { + "checksum": "sha256:4909edde46b5b2b58d228bacafa3bab5bc5847559d591d59ecd59cdf50d36db4" + }, + { + "checksum": "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63" + }, + { + "checksum": "sha256:9b6fcdd19caee5fe77b9ed17adb3f11769a7109ebcf52d3cb3358d5a9eecc391" + }, + { + "checksum": "sha256:65b8d755ff01dfefa423d2f0bd6fd54cfc4c580da63510e19cf178abb6e26172" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:b5b1f5f7a02f70db056861813ddcf181f2ebba507cd368fbe2c32f262edf7fc6" + }, + { + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e" + }, + { + "checksum": "sha256:a6292dd846bc471b22409fc95a5e09c88bcb6176251dc5cc11f4b14a73ddda11" + }, + { + "checksum": "sha256:784d385116891056b618722c933d43c5b395b92fa82e5bc797081317ec6a82ba" + }, + { + "checksum": "sha256:47b483c0f556c56f0b1f468603c57834864902ae5a849a18c8a0ca5f76d66c86" + }, + { + "checksum": "sha256:c633b98b4dbf96674a69573404819c34d66eb7e19820283fc588f6b10b0e3fc8" + }, + { + "checksum": "sha256:d3fb5a473c44cd8ae6b94d6bf3fc552553d8f4ef28eed439658ea38990ab9db5" + }, + { + "checksum": "sha256:0a885c6dc6abd969b828bf2fd7063ee884e6d058eaf405b02f3dd6efb6c66bac" + }, + { + "checksum": "sha256:0bb7024125ca67119612e55a92da13c989e0306ddd7de7e655a679c963939ef7" + }, + { + "checksum": "sha256:125c92f23d87b905c21e9f7669f0ec6e41428ab63c8c13f63db8980f292797d5" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:a840b8193ce9b1b72e3783b9a9bb2ec91947ba3b6f7ac973ae8e0e20a7059117" + }, + { + "checksum": "sha256:19cd894b4154d1a8521c6884cfd2a6eaf1f498b7dec5cc31408f8535b9098f2a" + }, + { + "checksum": "sha256:207e6396488c1db18fb7b1f2b9952f48c2625f042c5f6a901d41974ce376b0e0" + }, + { + "checksum": "sha256:d4467ba499fe1ddd82746ad00d7e86bea59c4827fe1ff8c05132bad1f93ddb7f" + }, + { + "checksum": "sha256:800c9a0d718c641ceee26c8f625b2dcd79a33963e9e7a11930678dc99582a2d0" + }, + { + "checksum": "sha256:986683a0edb615a5d45a9c1b0ee3d27f8032c2667cad58d24526085e41010992" + }, + { + "checksum": "sha256:3fe7c10c144c8fffc00d144317a2bf8029bd9d048432bccfc352dfc6f0995680" + }, + { + "checksum": "sha256:ba66a87402ccc8515e164f597f5d254ad9513979fe3ca1ffabf63c915c0daa73" + }, + { + "checksum": "sha256:d695df94220c2ef990e502123b3bd8ede8fcfb4f738346dd98d999559b01b6b3" + }, + { + "checksum": "sha256:fb263177eee60c26b7acaa76cb640c3d7ab6928e73c8af80b2111a247bd61ece" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:83e470505f558f8cf8414a7fc8fb0d1bc4b16ed15d05ccf7e46332b04d1a0d85" + }, + { + "checksum": "sha256:0f32d23a6b2b15603d710b0317238ef8dde3de61eda96713e21d86c9fc7a98ed" + }, + { + "checksum": "sha256:760d9056891a60c200984f0655aee1876b3bf890f7486306c05db8e295ae7843" + }, + { + "checksum": "sha256:e426534c59b3a35068877d324dd34d643ad7c84d2c406b2e6502ac6c2a367d39" + }, + { + "checksum": "sha256:094eff70081085f87a7ac0dedafa851ad8ac8e03f9f328636df4a0f8301d0e87" + }, + { + "checksum": "sha256:cf9a0bbaa7bd075d2af532586ee93ab92b96d9859f53a57f85cd7e0309f8fff6" + }, + { + "checksum": "sha256:a07f96031fbe9507a8d6bb0e14cf0783bc615552e4cfb75131672072f5729de8" + }, + { + "checksum": "sha256:aa1a6a85493590efb9c0235c15d6a05e8b119f385dc13b3e3abd2315f8c4a6e0" + }, + { + "checksum": "sha256:22c0e44318e36e04ad1eb4632dcf25db991f481f9a543387d372e1f2ad92561f" + }, + { + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "checksum": "sha256:6ae316dfb9723d13a8d36d98d109d4a55017b568ee2070279f1bdccdc699862a" + }, + { + "checksum": "sha256:5996ff948b5874f894c5ce3495652e6de552addf2331fd82193023d77994ef8f" + }, + { + "checksum": "sha256:d20f4bf44fcc90509e7afca364eae0a55c8f33df2f8a69e266f5fcd4b5fa2e4b" + }, + { + "checksum": "sha256:727c08fe072ef85837e8db30574aec712cdf67a062eead3e5481ba08425b2395" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ] + }, + "runner": "org.osbuild.rhel82" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:63c64d526e9820ddc57a77c053674eeccefef33f16af536dd9b47e816db06988" + }, + { + "checksum": "sha256:0229afd544d1a59bfe26c095ad338bac7e0d2f10aab88bd895f3766e8f54fff3" + }, + { + "checksum": "sha256:1f8013c5bd1c4914a11363d56d67fa70871f5f42c64f57862c791871fb9bb05c" + }, + { + "checksum": "sha256:c3727553ea6dd925d9c760b23eb617d1cb475fab9c495543868666ad6cd3b088" + }, + { + "checksum": "sha256:b984d8576520272b1011cc46b03c666cd6abc1bf74b428a8781ca58c6287a007" + }, + { + "checksum": "sha256:d82c81115472a70d60d2320e254762c76a583ad2190ad45068476c77512588af" + }, + { + "checksum": "sha256:d9a4628bd8d3e776f626be4cb5edec305c2ff894d7c5cc7e33e212545721053a" + }, + { + "checksum": "sha256:0e30a92139490232a4b891f4f802db74f41002475f8d203c6adffe1fb9d2b1ab" + }, + { + "checksum": "sha256:a7fe54c4d43f925093face259d9fd8f28f06e9c11dcc3ad100b24288c577e4a4" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:518e5412ce19ab733f62c334da8c5545a212c4c971d513eb95590b08a14e3772" + }, + { + "checksum": "sha256:dfaf74e2116ee30d1882b3461de90d3fb6faad4468eb0678f845d105b4439a83" + }, + { + "checksum": "sha256:796cac51b2c1092c4faad372717c6ddc37cad9757111a41e531fe0a8d6c0a9ea" + }, + { + "checksum": "sha256:2d84f6765b1645f867527f493b6153470602a80c75f81545bf619aa92127e4da" + }, + { + "checksum": "sha256:a32db9e3d2321bd5c4e998f7ed6f4459d85f792a16f4fdfb8805f5936d521572" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:adb9e37c63a055bc106a9676c10a85fdedcb4af64ae062249732e158bc0ae9af" + }, + { + "checksum": "sha256:6a6aa18217ae72a0b33e4302da927e6ded92520cbf4d48a5030d4a2f95eeb5d8" + }, + { + "checksum": "sha256:15c33124ac0479d34f1f58d2bd24cc52db7089b4a8681c276a3fd0d6dfe4fc72" + }, + { + "checksum": "sha256:e085cf8bddcf09c908d925688dae077300d2964b40bd060af252d26a963cfe50" + }, + { + "checksum": "sha256:dcda73e0ea7b5d2710528fc6df135d435281d1f4d2be0018bb6f1858e818d599" + }, + { + "checksum": "sha256:b7bc10e9947763df6e6177b3dbbe77c21f55ed60d26c4c28bfe14a98f7e06189" + }, + { + "checksum": "sha256:acd4674b3fbe01d6cf94eb18a81cdb00beb73bf3d4a25a28e234f31498f5c389" + }, + { + "checksum": "sha256:571b590c6ec7a2ac73996dc7d3dd7863aecc43e5dcb1411c191218a32633952b" + }, + { + "checksum": "sha256:98cf1d2d3ca85b3ec31dc56532c3b9f6fa5b3edadc8b4f4125526cdfb2b7507b" + }, + { + "checksum": "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:689577d74311a7327aab6fe412a803d72b790957e863b6b78a8621a040306919" + }, + { + "checksum": "sha256:7d3ddbaae06c7fb8d24449e11b418ee07bdd9e07f7f0af57741d220b97228557" + }, + { + "checksum": "sha256:41cc2d507fdfbba939c00164a563e770d466f992cb64d3c51a79aec20b31d6d1" + }, + { + "checksum": "sha256:dc37d12420a2593c46619e9b67a0115255a0c7334f547871ce08e329bf5d15a2" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:f96bc0d82d4c6934659c23a6771515e78bf2252ed24d32c78001260ee6e36c8d" + }, + { + "checksum": "sha256:b847207a13bec4b7fcfaaf3668d93bc5ad40a6477f976e6aeb59ab431545d0c5" + }, + { + "checksum": "sha256:bae965c689b08ce42f10366e4b441504432ac353d30edb8b4b2cfc798069434f" + }, + { + "checksum": "sha256:eaf3c7104d3ebd0cdda3d6ce44f4c79eec0a8ce3ce71cbb0d9dfe716f58a105d" + }, + { + "checksum": "sha256:dfea8e48e0cf3d8984237e3d5fb715c7edd9b1f8db03faaefc42a8046b45dab8" + }, + { + "checksum": "sha256:6fbfaa1e1b1bb4e2362cf3dce0f59a94a78b457904234cbccbe6afacde311c26" + }, + { + "checksum": "sha256:057b6632870b8c3c0c950a19092ef2f9749bf3d1a37ccb083bf42ca6404db066" + }, + { + "checksum": "sha256:157044e6cf5cc52b64b9a5d621fdb5b0846a527daa428382330e68bdb47789eb" + }, + { + "checksum": "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2" + }, + { + "checksum": "sha256:9a1c6f2b18126214e9afa768bbf16b29b89ce3169ccbd4bc169000eed143dcb4" + }, + { + "checksum": "sha256:3a684fd5f1b1d417c6c3e9d1f0d5b846138aa06450ff246425d43d4a20bd619e" + }, + { + "checksum": "sha256:deaa0958c9fb57773dfdf74567b658d273cea81186b913aa1473867dc07b335b" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:925c70a394a76004087fd6e8d94f7edab9de9efb2b81740c875698532ba124c7" + }, + { + "checksum": "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c" + }, + { + "checksum": "sha256:4d8edaa317fd508226bb5421ef423470f3e9153167222dee7bf8fb2346b7875b" + }, + { + "checksum": "sha256:2e26672ae726ba833187292dcc6c1673a07e26d974fef2f71a83407989eea8a1" + }, + { + "checksum": "sha256:f769edf78f42bae1bd183a6f4a49d74822db2b5e830147178d197be1cd67a306" + }, + { + "checksum": "sha256:e1bee08f1e76f8b820a59b5c228a0c1b4eaa7fc70c7d840251a04a74d517e25c" + }, + { + "checksum": "sha256:3256e78263462d5d7ab37b696992aedd6f810431641ce8d1e1bc198c797b402b" + }, + { + "checksum": "sha256:da4d193d5f0caf7a196f3bd4aa1225072b522521d82fca8edecc6546b5460ac6" + }, + { + "checksum": "sha256:17501958f52d2db1417cab8dd5ca261bf447fd93eb62b80173f9875c3012b700" + }, + { + "checksum": "sha256:c321e3a0253fb2691035135b3d3740faa76b8e9c84a0378f480ff85ddd9f16bd" + }, + { + "checksum": "sha256:1b8c037a6c67959b52894f38444ed1133356c65cec2eed3acf37c45cf8609e63" + }, + { + "checksum": "sha256:db817b5d2f9d678fd0fee30e52ed080fdb5c9dd723cd57f7d6b0133293502047" + }, + { + "checksum": "sha256:c88d1656b8001ff79175f7d3b7818681e40e54e8fec6fb8556ba8141d437fcfa" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:b140eb203fe889d1c75ef3b5527033cfeb7a6f0c813638a607c9f10faf52a34b" + }, + { + "checksum": "sha256:98dd1582b8ab27085379a3a7e598a6e261c62f97a5f3689447cbf1d4af9ae46c" + }, + { + "checksum": "sha256:13f1d396ba9e0fe3f8d5ef43693b5c1178207e594d2b830e94d3f8e02e33767f" + }, + { + "checksum": "sha256:77b56d825eb31ca191254d17a4c9399e3c4fe8af42a528c2ad4424bfd865b82d" + }, + { + "checksum": "sha256:f7ccbe0d7b4a61b5a47253f168f8efcdbf41ad0755e678f9edcd2f6a69c93c7d" + }, + { + "checksum": "sha256:3ee66f993ee567b2457a221ed364ae4f8dfe783a5f0e723d9169f95d12f9e696" + }, + { + "checksum": "sha256:634a3cbf0b334e901b6887176fa1b98246be7c4010b4c21cb6fd8fa7aa5fdf94" + }, + { + "checksum": "sha256:540fa90864b4eb0176b56e0c5e9d7bc6130985288ae297b4c38950381b08a827" + }, + { + "checksum": "sha256:c5098f41849af65b808baac594539440fcdffea7afce4239eb41885eccfd67e2" + }, + { + "checksum": "sha256:769b1ac34ba3aa35337b734b8548dcf9e8b41476b9b2093756341bcbd5969a36" + }, + { + "checksum": "sha256:b7955bb1ba7e944f6e5c36713db3bbc570ba0eb8de11ec6a1fa28cfc5c0029c8" + }, + { + "checksum": "sha256:e08305aecd924631284ddaeae39a83cca85495389d4ddef75410a32af49f946d" + }, + { + "checksum": "sha256:e0faa8a6bc43432619a2b6a26e9f1323d30cda945580d8bc0f6c2fe742b71924" + }, + { + "checksum": "sha256:3f5765cebcac288cc1b5b118acfbc2016eda7b81ad73923f6f9c21e4731eb0d9" + }, + { + "checksum": "sha256:8ef2fcbe5a8d6e7d393d28838ff458336d16e006bc7d19921f460eb105b88570" + }, + { + "checksum": "sha256:fddf61e9024c41073442ccff0c9990fa004e9b183f391c4e3cf3853e5ae6062c" + }, + { + "checksum": "sha256:ce6960fa7831611815e163864a91b70b0ab1ef0f446c2cad1eec13404822cad5" + }, + { + "checksum": "sha256:964b1d9563e42a176c24cf5c91616ee5cc40de3b1c92038d7fb0392113eaf159" + }, + { + "checksum": "sha256:d4424a9c946da1eab876298af8f772d5aab1109a1f551ac2f1cd10ee849568de" + }, + { + "checksum": "sha256:91c58481a7e4a9b7f9e0e14844fa73047395c75df95d35afa3b0d8ef3f584491" + }, + { + "checksum": "sha256:ee978ba9ffa58b85705df0736903e6717f13936343aa693cda376c4167a828ab" + }, + { + "checksum": "sha256:19efe6f125c00123ccc6d96e51eb61e711f3ea01f32d18cce14d3b614217c58e" + }, + { + "checksum": "sha256:f700797810fb2bdbba5a0b31e10c361360a87bac1a282da109273194a25bf6ef" + }, + { + "checksum": "sha256:0b4564ad3a799af1a4a0de33b0952f6056d942b0cfa39b73e9375bf0c05b3191" + }, + { + "checksum": "sha256:3bf230c85711b285afb968850d7e98eb6b068a06e7ca40e94203e388d8447f48" + }, + { + "checksum": "sha256:e160910d31a37afeea87df306264fb1f727cbca574d2c234cdca856f5311fbd6" + }, + { + "checksum": "sha256:c22f0d40fbdaaceec711be0cecc122fac4570d126914ce3694a3d6a1178bd487" + }, + { + "checksum": "sha256:81d2e21dad970c08798c0df00bbda21acf165a370f9612e0d14ce69e5dd6c5c3" + }, + { + "checksum": "sha256:8f2c073583d6d4347642139a9806174ba64848c6bd4fbc81b7e7e0d42751cc74" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:635d847cc4dec8a8e1b418adfda2bc0a9e1814ed6c2c6154a5430029d83abd24" + }, + { + "checksum": "sha256:2921d3aa14a509d271ca35256903c142c30f088f7dc889a4c4e15b26316ef5c0" + }, + { + "checksum": "sha256:4633c2b5a93723e1cad477b81f9ccefafed342f8c4474ec305058f99c713229d" + }, + { + "checksum": "sha256:126d980678e5b687c775cf857b4013306f1a761353370258a0f04d92a3553f92" + }, + { + "checksum": "sha256:5eddb5c1febbe6e58491f8e9ee8fc9897298b307e0357c01f49d445cf25283c9" + }, + { + "checksum": "sha256:e82699d15e4e6ff7825629d7c1c8a0f50a5519b6e5328472de91a0deddb9cf3d" + }, + { + "checksum": "sha256:fc51460213b3bf5b67f08f2695aae8d728f614adbbacb917a0825e4ebfbc3e68" + }, + { + "checksum": "sha256:4059e9cccbde0401f9af4dea1160a07af8760adbc3e1d964e5c8ac87307eff81" + }, + { + "checksum": "sha256:7fc33f147b99749fdbae420ed51277cb99d9b6418b7f739fe51c7563945bc0d7" + }, + { + "checksum": "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f" + }, + { + "checksum": "sha256:cf8fdbfcd359aac8bf55500c24e6843baafe8fef35019126c3616806b41415b3" + }, + { + "checksum": "sha256:3f7e5e72ab9e18dbca936b40734c91520242a49a9e98a2f2589f397faa6ad8e8" + }, + { + "checksum": "sha256:f7de2bbb3653c3033d43f645ac26e91c788527c0b4d5e7238dea54c3adc6f1a1" + }, + { + "checksum": "sha256:21685a7b79484a6d684efd86af6fb23dc13aaadc534cc4c4ae3edc0ceb84051b" + }, + { + "checksum": "sha256:f4f5cc3080dc150c47b27383a344937fe17a679cb7046ca76165654d4e207a0b" + }, + { + "checksum": "sha256:4c6cf87b3ff6ea5b9eea8fa52906d42a634e7d6233ca3ec88c7b23da3745b9ea" + }, + { + "checksum": "sha256:da92fada5920a24577f614e1167e3b339d516ca646346c04c71ef2bd97295653" + }, + { + "checksum": "sha256:8ae407fb97bfa1bcd669f4263d0b45dd7fc7e97c1371cc4b8f4360024a56e7bb" + }, + { + "checksum": "sha256:bdcb042c2ff87e5c07685f70e04b051197199bd8465c5e26ceda82a13977d040" + }, + { + "checksum": "sha256:da671d59c65465dab426361abaaf42c3f3c0216e936cded295719e368066bc6b" + }, + { + "checksum": "sha256:0fd7dd5b060e7533144ad7a3cae2453ad6f87650010f328879b10c7c4cba0c04" + }, + { + "checksum": "sha256:ebcaa2d2ec8ddaa66d042a208ccee6b13735ffba04fe3f326954cd76fa4f5910" + }, + { + "checksum": "sha256:a445e982c81c7a64f6660f7f3bf6ed03dac3cd599dcb1e4bae06b8f236ea7e7f" + }, + { + "checksum": "sha256:cf6220736fdd005ba7c67ccb5d5d8a1d9c35718e3c13e79c80967866968d7344" + }, + { + "checksum": "sha256:1bc038693be7ccd59674c478176c3badce4a56f785dd0690548b087bcc7adaa1" + }, + { + "checksum": "sha256:959fcb0016788a2b1ee55f0801c1490b196416579bc9ac9da9e38786e6c78ff6" + }, + { + "checksum": "sha256:204e4dbaf357e12ff041c1c203b2527f7d178905ebae53db3c12e57d28fcbf46" + }, + { + "checksum": "sha256:72fe0e1837aa503049fada31c6e8ae73a4e550be2ddfd73303fb84e955fcc268" + }, + { + "checksum": "sha256:f8c30f90610f8cc907009df99348a5e572f5598aed91280c15af604ba62687b2" + }, + { + "checksum": "sha256:5cbe058e6d2177f88006fed866e6b1565d6024a12c311ae8eaa21008f76074b1" + }, + { + "checksum": "sha256:b55b77fb38d84685cef6638240daa54235fce156176c820a3c3b980bf414c5f4" + }, + { + "checksum": "sha256:252d46d58e0c02cbe2d2485488bd63ea7129964643787557eae832102541f84f" + }, + { + "checksum": "sha256:56cc340c88cabacd9a329f80edee141154dbf84808894e43a937247394623cf0" + }, + { + "checksum": "sha256:950b6b41580f4c35a108345c1c8d9d3930cc95a2c4fe4b726f02bce67532151d" + }, + { + "checksum": "sha256:8eb3370fe641e329b03838e560f45ee290b273dcccfa182d97ad2dbff59b47fd" + }, + { + "checksum": "sha256:1d28eaeaa59c48e4193c709dd2a6301c2f8701138164c05371a0d8f235d14c9c" + }, + { + "checksum": "sha256:c0f53020ecdb8eefb21795b0acf589334e89a9ef339a84d42e61999f53c67d18" + }, + { + "checksum": "sha256:36aece7b7a65785985bf0b98701514f12735a87517b8578a3eb3710f82ba4765" + }, + { + "checksum": "sha256:1143ac623a74d7feaaaf293c18d942d243248f6356628f87216670c10d11687b" + }, + { + "checksum": "sha256:10ac3bf7565725a55b0aef56f65befd0d320219fc83adfab6e564c19f8c44bd6" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:0136940a3e28a159e7347b0bc7d1dbbc0339c64f431349e355f75abe31cbf21c" + }, + { + "checksum": "sha256:0d61e2dfcaed066e4ef74e4baddab9cdec24602aeb7a98306481f38cb5f449eb" + }, + { + "checksum": "sha256:d74da38b942dc95929b21c8fcf2c5d2fb4468b78ed14e7a4bcbe933998be4deb" + }, + { + "checksum": "sha256:3e40a3103fbf71c83773beac7373d0e790631cb3c918d8b20a883c8e65e70136" + }, + { + "checksum": "sha256:5896ab6e22741dc47c8c70de8c72178e7956cfba2abbda9c6b4ebbc54921b636" + }, + { + "checksum": "sha256:e1826902c98cca301a4e0876b34e6c77f1688a1fb613c265cea37e2ee40e7884" + }, + { + "checksum": "sha256:e4ec1966f9bc7cbc898fe7550600ae3e9e4f8afbcdd3f6e74afe1965247653ba" + }, + { + "checksum": "sha256:1091a799d34a42d2e42ac462b4f979a55d17513eca5a00bad9bdba56cca83357" + }, + { + "checksum": "sha256:6f87f305a3e0e0faf69c2a9d4f277958ca33e85b72c6e4f77a365a5f60ced3d3" + }, + { + "checksum": "sha256:4a27cd4496ebdba821b3c7692eeb0c0fff28c6af69fe4fe9e4bf52511639bd6a" + }, + { + "checksum": "sha256:ca87249f90bac96902d18c11a1f8c80566fa090c6473226bdd147e07e3ed21ec" + }, + { + "checksum": "sha256:551a506b43e32d21bf7b6333e028733956d5ef3560837a0c84b0d3e598efa046" + }, + { + "checksum": "sha256:7c014b54f7929348f614f8f4eb7a1552b8565c0a57f3a75ff6471dc05f30cafe" + }, + { + "checksum": "sha256:dfdec57ff520511d1d4ef9d913d90fc8d6ac98685cbc12fb568c8980f2a73f1a" + }, + { + "checksum": "sha256:0f1a02850c102e2a186787504f965c0c10d6432b9f600c18bc2f520e55f04a8c" + }, + { + "checksum": "sha256:6f2bfbe0f23d3b233aacb72c153ee133839353325f028321eb5ea38b0dc06c02" + }, + { + "checksum": "sha256:030eef043bf4cfdffc0a672ca2c1499281fbcb78a81a98a9e932ba0b7c9ebb6b" + }, + { + "checksum": "sha256:d173b35182f28b9dd48e4a942f2a20c659bee2f9ac234b60cf8b995aa2421382" + }, + { + "checksum": "sha256:2cddadff38ccef2364a7e40af0e1d9b3bf9c06869c15ceeb655f3cfa431c2083" + }, + { + "checksum": "sha256:62a2878605ca0415fd60adcff4c7068d855d20737498a968fabc646610ccbe5c" + }, + { + "checksum": "sha256:9138a16731ceb7fdbb8661338a5806692a7a95875894aac95069104f44bca234" + }, + { + "checksum": "sha256:e5f82f102f51d88aa517bbebd170795a571b7ddc3036574b92b498cc13704d98" + }, + { + "checksum": "sha256:ff9fc6467a4c2fd0c22c419a9cdb7a524d1c69d0c87aa09f31728bef9f692f76" + }, + { + "checksum": "sha256:86ae7501bdf0149728879f488dd4c86907216cb5b021192347a5c10a55382931" + }, + { + "checksum": "sha256:2809ad51c6eb6c9a54d64cccc2cd948f6fd4207f32b4493b3f4a9bd0886c894b" + }, + { + "checksum": "sha256:c7a1a166d4a58fd42848d05e4dd0d8bc459fa3b585396230729978f9cffc4474" + }, + { + "checksum": "sha256:84e7102978d76d80aa40c43efcc71c1e54e819195132df921a8c13cec54328da" + }, + { + "checksum": "sha256:621e96e91103f2f701e4ac3b8b8b6ef9aab4db5ab8fb3e141eb02e3f328aed79" + }, + { + "checksum": "sha256:afcbadced001b780cb7fc4c180b070acb48c2fff04783d6a4a35d08fae9928d0" + }, + { + "checksum": "sha256:fac29887224d91e8190a569b3ac5be1168034f36c9c234576ea3cefe686e46cd" + }, + { + "checksum": "sha256:b93a509fc65dd88761b4f7f21d8a05f1cd22e878ac59eb7d8e1507f5a2376a1e" + }, + { + "checksum": "sha256:058822931f4c34c18675116c1b02b718de4044c1019acb0d5f97417f00a30ba7" + }, + { + "checksum": "sha256:d6aa17908468b5e2095526664fce6627dec7a02c26625339c14b9278cc39d4a6" + }, + { + "checksum": "sha256:4a40a1538c8a488f32476f96d2461c3b792eb0cf5acb998e397d8a9cef8e5461" + }, + { + "checksum": "sha256:3b607f0dbedecb25239e22c1f553c8d70db9d2206a877fa07567fa1a49e233d7" + }, + { + "checksum": "sha256:8498846918c7bc7a20553340434cfbfb0d19185adcd0ff52866c6506ab8f747d" + }, + { + "checksum": "sha256:53fa2fd6a138d00c697b827a77bcc25ec498b1d49bb04ef80594e81ccabc165d" + }, + { + "checksum": "sha256:5a05f1126ed38f752af247dcdf7c958e738b935b8b6d942fd42f423768f05255" + }, + { + "checksum": "sha256:bcd19fd35b5f8535ff5bb15db91e2339c9435908c1123d5e2272fcae15a62260" + }, + { + "checksum": "sha256:2dc8e2f52451d1a11b16bbb389a24c58b61a1ba804ee777f9d06dbe4e1fcf6e5" + }, + { + "checksum": "sha256:09f390f3bf4dac907dfbc58b714d6c3de1ee7755a0ca5661b2f7c0a7dfbcfcff" + }, + { + "checksum": "sha256:83301ca502322e0634173460bf8fa35572c36ab8cc2e6e600bf9980f845fc857" + }, + { + "checksum": "sha256:f07b1f40ebb1fbe5c24e68a38b5f768a21e2ec2254d4bd8ff61fb0bde72f64ce" + }, + { + "checksum": "sha256:704e1dc996a17815c6dcf7029c0ddb2849d40feaab6e9b9c687af9d95fef825c" + }, + { + "checksum": "sha256:439c408eb3f33e9d8bea308afda0b32fadf7910f7b064c9821499332672a60cf" + }, + { + "checksum": "sha256:fa80a7e82e231dc77b3e44edd2cbf5b3d1657e009e59f15bbe8d50a4290b7c82" + }, + { + "checksum": "sha256:0f6d940ccddd815da01182de1e7b7e2d12c493125285ff7ee902843beefdec16" + }, + { + "checksum": "sha256:ba1364539f16d7c8379d7563fd0634651fa8a05b3f7098a21ba96e1f5641f132" + }, + { + "checksum": "sha256:26b14d8f226962ce712bbccfb245843759e835a24a139eacae86d680043a85a7" + }, + { + "checksum": "sha256:abfda01b6d377de999efa9c2b4870bf3ba43cd50155f036d13aae0ba4a617565" + }, + { + "checksum": "sha256:16dd7121e6461d2c136f9f7330d8a60b88ed9ec77ac6824ac3ee7495acdb6800" + }, + { + "checksum": "sha256:e85c24b0e9d047763e2c8e673bb6dc579b55c650e8f19d14c9010f3dc5cd0ccd" + }, + { + "checksum": "sha256:26e7368e961b374cefb947dab3a98387a3da15a86331a0d99d7b0e68ef246626" + }, + { + "checksum": "sha256:db7899290e3f78a9cff3796d1181dc0ef3d837b3c80e715c7ca85e01a811093a" + }, + { + "checksum": "sha256:4874e739ed37bc6a5bfdb6069d4620e5f7efe01d60eb9fd2550c550167c99990" + }, + { + "checksum": "sha256:8c0d40edf059bf044314df38c84e26cfbe00bf4e687a6114eacb17251718312b" + }, + { + "checksum": "sha256:091c7cf9a81bc55f9d813c40904e1b7b4f8889df3584d0978e0f6770f01042e9" + }, + { + "checksum": "sha256:471663fca7e3f609834368d69d8f1f469cfc0d3f3e95dc2b79381722d0368edc" + }, + { + "checksum": "sha256:9a22fe8cebacb37d6bc22105db763016689e9ac06bee33fc41693f60b076ff0c" + }, + { + "checksum": "sha256:435a2be84a2b38372965dbd60ffed0ed38a616b8100859787a8bb3b19d9fc4d9" + }, + { + "checksum": "sha256:dd67a6470f4b71ef5782a4ef53e2a0a1485d8215a93a7f708a69cb2a514c373f" + }, + { + "checksum": "sha256:684080ec9230dce2d32c9b00ae381a00bb950d1984ed0b0e1c55fa6d75b6b099" + }, + { + "checksum": "sha256:1fbb9fed42dff3f9dbc9e4fd929281408f77506423424759c2ac57b76afc3cdb" + }, + { + "checksum": "sha256:6557d001315e85ac123b1378c5aafb81428e2383debcacf3f91c55476cfc48eb" + }, + { + "checksum": "sha256:d6ab7c8790cd6c9a137d908d840c51c547e950d25f6ab8af3c9ad3899ff6c044" + }, + { + "checksum": "sha256:95630378635c5e89eb204b2921dbd5db2e87d949e167fcf022174a3e63b532cb" + }, + { + "checksum": "sha256:2d74e0ab14393921c6160fda8dd533b58c0348acdf5ee5c306ffc64221700de2" + }, + { + "checksum": "sha256:e55bf252e792f27f076101e94dfbbac97dabeea0f7893a4cb9b111a0b72d187f" + }, + { + "checksum": "sha256:e9487db2fdce1f494ee1582787a1afc1ea4e0429189db8be0ddbb0af2676c4b6" + }, + { + "checksum": "sha256:cc7e751a62f9a28b82df0bce0ecfb050364b8688ef69473f1910909e44c5eb98" + }, + { + "checksum": "sha256:c1b5c4668331e8b05a08e7de432cbfb75f8072401bb6651a24e43f64eff8dcc4" + }, + { + "checksum": "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc" + }, + { + "checksum": "sha256:c82ca1c0ef4b89f75e8e7edbbae4f3eeb2720a4abd56b0927928cff2d9721186" + }, + { + "checksum": "sha256:140146ebcbadd9b0f2aa5c2fcde5c93888f2d84ce61a2a4cf148ef435d1ba410" + }, + { + "checksum": "sha256:c8a28b4587888435c51f6d1ce42f48b08fb0256e4029ea569e9a02adcb82c85a" + }, + { + "checksum": "sha256:bf267d9571cf568375e261d593236750f400ac536c1c818513106482ebc3fb10" + }, + { + "checksum": "sha256:f35c0da3cff05ded33c0cb4f202dbb52a5caabec8b1897d5057df83c284d62f1" + }, + { + "checksum": "sha256:2397506a63455e543b201938f605e687de5590d9a06282824e2f6bfdf5e0f149" + }, + { + "checksum": "sha256:268d9232f0853037100432e9363c659cf99927e03f759fd4884643b560710cd6" + }, + { + "checksum": "sha256:3ee6a4f61935c2f0698ad2c4834a5864920a1e48d55c7800da7c382249895e39" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:0f2c07acd21a998f0a4b2a569ebfd143b889d6a5105541b2393dab96cd027a10" + }, + { + "checksum": "sha256:a213587722f7c8a0291a56f352861ec661604051c952ebf6a428ae969af377d0" + }, + { + "checksum": "sha256:2180d7f1748a5049763d5626b8e14b2c7442e5491a63094a79dded66bcc5c7b0" + }, + { + "checksum": "sha256:1657e36d9213739cfef8bacc8876153692f5a5b4d87dd5dde86ad182dd63ca1b" + }, + { + "checksum": "sha256:0ac8999f5ebca6b808973d0db5038a835daa2358af1007e9cb972b0e96eae217" + }, + { + "checksum": "sha256:f4e63e7eedc0266a575eb6107f41c5f20ca0505a0e80145c21b9741674d5c0b5" + }, + { + "checksum": "sha256:fd202f857b3c5a15b8f66f86fd515c44a47c87c028d7db766661758dc3673436" + }, + { + "checksum": "sha256:d2efb494bd4793fdcaaad35a66d7721df7ec53b6fc8da4fa8c8f24008533f38a" + }, + { + "checksum": "sha256:ed28e1e31109e27ce1c676914364c9f1dd46b71d00cb4cf13931f0fec6cf6978" + }, + { + "checksum": "sha256:ed8e018fb3a2ae3243b047b7f25cd7bd0b5b73abc6f254de3a7d13a6a568e4a4" + }, + { + "checksum": "sha256:5801caf2cc296b52b3b89b24eaf431fba2c130e948076aaf345988a754cca65c" + }, + { + "checksum": "sha256:1eff42ff409079d679c7777483d476f3261a2881b456b6280e81f7903a0cd499" + }, + { + "checksum": "sha256:481bbd6d73415d437a73eee7977ec370299acdac44b215a026652debba31783d" + }, + { + "checksum": "sha256:da4b9bfad26d559485ade669556512acfe93ba23d204f2556bac82c09401b4e7" + }, + { + "checksum": "sha256:01e486a3be67325e9692e909f5c6534137ee6a6df185ba2c09d4d50fe6c738f6" + }, + { + "checksum": "sha256:9a9546fcc510204dc7bcfe61d6ca63f436c01cd9b3f8451c8f07ec4f4fc2ba68" + }, + { + "checksum": "sha256:ad07261ff4f478be9511f7ee749bfbe8b2ba8e28696c2f561caa20e35c535134" + }, + { + "checksum": "sha256:95de1777f7e8a734445c5d45e0b77da8b6c41a9b504582ed266d852c677a936b" + }, + { + "checksum": "sha256:532d46a4c0e68bd45eabc3e2ba6d570880344044e1034f5f347b37c470d0dced" + }, + { + "checksum": "sha256:876ffb285aaeddb2c18ae32527bd4ee202710bd8e18d5b410af22937646dcdec" + }, + { + "checksum": "sha256:fb56b7a416e12da0782ae8ba7396bc03a2f8844c2efcb5df3f8b9e74eb8b8059" + }, + { + "checksum": "sha256:7864fbc866ae5a3e59b4f0f114b77ff52b55e76c5388a917f82a6097f02a4db7" + }, + { + "checksum": "sha256:19d1de27d2f62b4a55735233807f70a1e8ff7551fed97ee8650dbd09c1ef50ea" + }, + { + "checksum": "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9" + }, + { + "checksum": "sha256:0cbb121302cc38ac16f8f9bd5ea8bd3ce3e2121f6c25c985b66bd29a532f2f7c" + }, + { + "checksum": "sha256:01d5881b441b015ac394e66fb27dbc5cb11befc8080973208806257ecee2d12d" + }, + { + "checksum": "sha256:6cf02dd99fda867d11fdbb28fe0a277328319aece74b864133a8774cacd2bf54" + }, + { + "checksum": "sha256:bc0f9bd34ac6a01dd7272b87e1b7a33045ff8c6793cac02fa639dfc9341e8215" + }, + { + "checksum": "sha256:64ac5cb6fd3da1610812795ce17e09648d89c87513d6284b852a3455b0831d3a" + }, + { + "checksum": "sha256:f237a314daeeb228f767e1521edffa9e9b15b07695ba1008b0f2b6807085b9cb" + }, + { + "checksum": "sha256:60934825531d0364649b0441321d12e8823336d54550007258d7523286d2fa2e" + }, + { + "checksum": "sha256:aeda2c664e2d993e56008f68823d05ec6d7665f2bb65b5f990c2112f0a7f91cb" + }, + { + "checksum": "sha256:10a83db8ac5065869be834bf6ec61185eded982f885def5979948736e5c3ab95" + }, + { + "checksum": "sha256:320ced09e242f09047f4fab0a7f66aba6de2e42583f6a2e164eadcc1ffd0b915" + }, + { + "checksum": "sha256:8ac1003d722e3d5f383c9b970bf6dfbc905007a624abadb63e520d7a93993747" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:f99f5edde9ad4574b84264c467420c910b31f78683fbf1b63d106a7e6c9d64a3" + }, + { + "checksum": "sha256:edba68c63891b1171417b8d3af5827cc45a37210d18d701c0e178870e5435031" + }, + { + "checksum": "sha256:e2c4ac0f7abf75cbcc7a6fb35412820c267f1a8ce614f41b60d901918c4616d5" + }, + { + "checksum": "sha256:f6df1feba76d87214433eee205e3b99621dcd78b485ed5f99ba2658117786b6c" + }, + { + "checksum": "sha256:9da7de3dd0a487abf1bbfb0c9de0b491102fe0796e53a47ee4414003a8b51f33" + }, + { + "checksum": "sha256:daf36ee86ec6001770ae68bdd82409526faf4b9b1313a6b74fb54cfb98ff571e" + }, + { + "checksum": "sha256:c59a19d44466633bf19e18463ece1ec20cdeae962f1ea3613bd09a2ffb160318" + }, + { + "checksum": "sha256:cfa188d39884fd4ba36d27e8fb25aed9dbd26efccffbfd01a24c2c580fdb96f1" + }, + { + "checksum": "sha256:af98260ff2c263c9cefcb96d16d200941c1873cda9868b57df51b034066940fe" + }, + { + "checksum": "sha256:bd03a8a056bc9d2df361688583521f5f656e83fc893b90d349b6282178f9330b" + }, + { + "checksum": "sha256:b35f92dddd2cd73f7f8d8595ebb197a1c67a214ec2acf960ac673a014f2d9b90" + }, + { + "checksum": "sha256:3ef63ecbebf844bcf682c9482dc0ddd158c955b0f066b62eb9575bb9a9642db5" + }, + { + "checksum": "sha256:448d3ff44e7f32f3b33e891180e248dc1bcd4d410f68015a8b0c30dc7c385aca" + }, + { + "checksum": "sha256:290c83afcd2b0a2b17aab95cf72a85da5f8b9f9a9862857c919a0f43e3fce70e" + }, + { + "checksum": "sha256:43ab42c8a58267936a89da99e37d3b9fc56489e958060f600ba047445ca44ee3" + }, + { + "checksum": "sha256:651f38873d3356ec4efb27d04658541080d11cf1ece6335a07db1ca089fa7da3" + }, + { + "checksum": "sha256:ec40be9e0b2bb03f7b057a7a9342ffbd86129d58828fb310f445bc506261eb0e" + }, + { + "checksum": "sha256:04c031a07bde4360484a0180e832036d3ac45a95c4839e54d7a02423df5485ef" + }, + { + "checksum": "sha256:2b6d1fbf6f54f06c168862e19e03aa0ce32c299fb3f7e4cd1bf4aa9df4b4d995" + }, + { + "checksum": "sha256:8e916224ddbb8a7d8cd305f11087c66df950a318e4ef64290bca1afdc1327950" + }, + { + "checksum": "sha256:6b14c3aa52da9a2eae13f2229bac41060ad7421ce5249eca80f4aa53e26344ab" + }, + { + "checksum": "sha256:fea4eb54fe59451b76fb40b9bd15ff41f0f51bb7371f94b2f5df572ef917d037" + }, + { + "checksum": "sha256:ce8c92fa2bef1770f44992db24e1cb8cc850feab03a74cf0ebf741ecb0d160ea" + }, + { + "checksum": "sha256:f847957437e7f24844930c4a3ff64c5f7877f083553f48eeadca3c5f5e5c728e" + }, + { + "checksum": "sha256:68593fad4413255772bd08ed7f8b578332f0f53e002c8c7473d90c966a87131b" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:b90ce065d5ea98845733ff06e47d385937f6293ebddf52144c80f5fe1f296307" + }, + { + "checksum": "sha256:3f8039ed081aa3f628e947656af825b4541ded3547675098eabb0f177eca45e7" + }, + { + "checksum": "sha256:861346b2e683c09a53c9418a9ed08faf7448e066e3111482c70722cb62a6edce" + }, + { + "checksum": "sha256:4a7d4068f39dbb01d7f707f9912abfddcc065a62b66144eeb7b7e2f13cec68af" + }, + { + "checksum": "sha256:4e4923f05d0032263d570075b9b832b9fc3550cd8f82f9a6b0b9b25061726110" + }, + { + "checksum": "sha256:6c3ee8b53c0af9bd4958b4e48d4d55fa7c574f444fb42eead1508ad740f97088" + }, + { + "checksum": "sha256:d890d028f59e2553730fad3dbea0e1a245c92c24836513fa2281194b1c90b53a" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34" + }, + { + "checksum": "sha256:48509ce37ec06c1b15149feec4b2eb5d3a2f0453a41804c9c5d9ef5b8b320d4f" + }, + { + "checksum": "sha256:c00024ec890b67b443e2c40a0580a1263458dc9d09f4bde578d7c045323946b1" + }, + { + "checksum": "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786" + }, + { + "checksum": "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367" + }, + { + "checksum": "sha256:a5c6189b8644cea4d4039375dfe2d828e08a59896e9827ac967782d225a78619" + }, + { + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "checksum": "sha256:8329bf1aedce9ef3a4d7513ef98d3931ad39b84d5c3e73e99936c7f9b87931c2" + }, + { + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87" + }, + { + "checksum": "sha256:4fe7733b93fad52a48d4b47a6dc55582f3cc41fc2074e42a9b39fc5d407df6d3" + }, + { + "checksum": "sha256:c9b3c6dcb4133c3051e3f75978f994aae4c0ad84dd1abbae7fcba497ee524603" + }, + { + "checksum": "sha256:31043a7324411dad6b84f6504a9e9cb7ece9f576acf091be522e484c8b82f469" + }, + { + "checksum": "sha256:90405803c0159cdf0f74a26b6ce064cfd9973e59232b2923ed171a38fc5684a6" + }, + { + "checksum": "sha256:4909edde46b5b2b58d228bacafa3bab5bc5847559d591d59ecd59cdf50d36db4" + }, + { + "checksum": "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20" + }, + { + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "checksum": "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c" + }, + { + "checksum": "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63" + }, + { + "checksum": "sha256:9b6fcdd19caee5fe77b9ed17adb3f11769a7109ebcf52d3cb3358d5a9eecc391" + }, + { + "checksum": "sha256:b386b3ec3cb96fe9178fd1d2b245eddff0bdb2742a8f18e25faef1e98c00f42f" + }, + { + "checksum": "sha256:65b8d755ff01dfefa423d2f0bd6fd54cfc4c580da63510e19cf178abb6e26172" + }, + { + "checksum": "sha256:9c416279320ab29a8ef4fc32ca60beaec4c8da6054d10695cd2b37af19cd0ee9" + }, + { + "checksum": "sha256:b9ceb537921c8d98f1e874c0a39cf0c6a606f469be21be151fa119e4b9c7f06a" + }, + { + "checksum": "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f" + }, + { + "checksum": "sha256:70c05e5512e85231b490c1aa9c0e7eeb7f9a09c34d1253c3aa1db0b8db6be974" + }, + { + "checksum": "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6" + }, + { + "checksum": "sha256:3c096d861c04f97c89dcf335d66a169bca3d371d9589e547c50f18b4180a9e6f" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9" + }, + { + "checksum": "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42" + }, + { + "checksum": "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf" + }, + { + "checksum": "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280" + }, + { + "checksum": "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde" + }, + { + "checksum": "sha256:0265d8b987f411738f3b53bd1f84386955704122e20ece4eb232a0df89ff62f0" + }, + { + "checksum": "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a" + }, + { + "checksum": "sha256:b5b1f5f7a02f70db056861813ddcf181f2ebba507cd368fbe2c32f262edf7fc6" + }, + { + "checksum": "sha256:a05f9b43292810dde4e6acd64eac2a80f047d35533d2d5e647565f75502189fa" + }, + { + "checksum": "sha256:342d7cd5f427c0d9c02336bc4f189225b3b57c5899f5d26b61b351fc37f99489" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "checksum": "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb" + }, + { + "checksum": "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d" + }, + { + "checksum": "sha256:d868f3e9b48e1acc5c7674292619f1e80a2a2617aa1ab75d7cb4665495bdc654" + }, + { + "checksum": "sha256:6d46339afc3d65beb89cbb36052e779e95ef2448a163d26db13d67715dad9cf8" + }, + { + "checksum": "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53" + }, + { + "checksum": "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e" + }, + { + "checksum": "sha256:a6292dd846bc471b22409fc95a5e09c88bcb6176251dc5cc11f4b14a73ddda11" + }, + { + "checksum": "sha256:784d385116891056b618722c933d43c5b395b92fa82e5bc797081317ec6a82ba" + }, + { + "checksum": "sha256:13471e37bb0089a322183fc9e7a53948f0b203b54277630e75606a835268ad5d" + }, + { + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "checksum": "sha256:47b483c0f556c56f0b1f468603c57834864902ae5a849a18c8a0ca5f76d66c86" + }, + { + "checksum": "sha256:c633b98b4dbf96674a69573404819c34d66eb7e19820283fc588f6b10b0e3fc8" + }, + { + "checksum": "sha256:d3fb5a473c44cd8ae6b94d6bf3fc552553d8f4ef28eed439658ea38990ab9db5" + }, + { + "checksum": "sha256:0a885c6dc6abd969b828bf2fd7063ee884e6d058eaf405b02f3dd6efb6c66bac" + }, + { + "checksum": "sha256:0bb7024125ca67119612e55a92da13c989e0306ddd7de7e655a679c963939ef7" + }, + { + "checksum": "sha256:125c92f23d87b905c21e9f7669f0ec6e41428ab63c8c13f63db8980f292797d5" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:4a308727d8b5a3d4cbbbc7d9b07884ebf6a37b4b6eb9a8edab5b61f449142285" + }, + { + "checksum": "sha256:a93b90699f26009debf0ac7b6759daf23afa9f3c851ccd7c98e35d9a89824dcb" + }, + { + "checksum": "sha256:a840b8193ce9b1b72e3783b9a9bb2ec91947ba3b6f7ac973ae8e0e20a7059117" + }, + { + "checksum": "sha256:19cd894b4154d1a8521c6884cfd2a6eaf1f498b7dec5cc31408f8535b9098f2a" + }, + { + "checksum": "sha256:b83b5cb8c799dea710e0fffc841abf88495a1f3d04057dd699cff2aac610d7d9" + }, + { + "checksum": "sha256:8d5c968225f0a3b7c492fdffb57cf0e34fee77c06a64a94a3a8b52edab30eed7" + }, + { + "checksum": "sha256:df1f1d61216be55ab9cadc9832e613ffd2350ca8dc03e27f537f22dc0f32e171" + }, + { + "checksum": "sha256:207e6396488c1db18fb7b1f2b9952f48c2625f042c5f6a901d41974ce376b0e0" + }, + { + "checksum": "sha256:6421426a896c0bf32738af8131c37001e532f62ac1242f63ebf6248ea34533b0" + }, + { + "checksum": "sha256:2bbb8eebf42b0f55d735c0f84e2521c339febc7036f2e94332ff013d7406b80a" + }, + { + "checksum": "sha256:428af99d7ff753fc26a13130115c4dcbbac030776a299583d00c69e8ec6a13ca" + }, + { + "checksum": "sha256:2cfc9f7d8286002d753d12aa9669522222466c5e1e3f10ed81c8d4d23a3e203c" + }, + { + "checksum": "sha256:6149e0dc3def62605315cbbe59d63b5ca340a791b4c6d3b4d0bda6efee7572f8" + }, + { + "checksum": "sha256:4efe61bac45e15b3b1bfda93bf3cfbf72d49c7f0452737d01f12f49b6e624175" + }, + { + "checksum": "sha256:2df37064ec55f10e06dc0c05647a296b8ca7867251fe44130206052e58d39bda" + }, + { + "checksum": "sha256:432ef41fd5f9ad2b9a797ed105f6e729dcaf19c17df9c1478802af04e898e305" + }, + { + "checksum": "sha256:d4467ba499fe1ddd82746ad00d7e86bea59c4827fe1ff8c05132bad1f93ddb7f" + }, + { + "checksum": "sha256:800c9a0d718c641ceee26c8f625b2dcd79a33963e9e7a11930678dc99582a2d0" + }, + { + "checksum": "sha256:986683a0edb615a5d45a9c1b0ee3d27f8032c2667cad58d24526085e41010992" + }, + { + "checksum": "sha256:3fe7c10c144c8fffc00d144317a2bf8029bd9d048432bccfc352dfc6f0995680" + }, + { + "checksum": "sha256:32c9ff3e0278dbd7022ad76629146ece3fffdc58af14e1eaf97e7052d610daa2" + }, + { + "checksum": "sha256:d695df94220c2ef990e502123b3bd8ede8fcfb4f738346dd98d999559b01b6b3" + }, + { + "checksum": "sha256:fb263177eee60c26b7acaa76cb640c3d7ab6928e73c8af80b2111a247bd61ece" + }, + { + "checksum": "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:1bc21785bc6f66d6fcc29cd62f2cdd3584f3f8ea6321db4c27251b192f468433" + }, + { + "checksum": "sha256:83e470505f558f8cf8414a7fc8fb0d1bc4b16ed15d05ccf7e46332b04d1a0d85" + }, + { + "checksum": "sha256:1956304761f23c6661b831d33a3539b82384636db4113cccd19321b36a3a8415" + }, + { + "checksum": "sha256:b6946db91c0a0b5e39427db028815391dd1e8c7a04faf98bc1031b5490034790" + }, + { + "checksum": "sha256:0f32d23a6b2b15603d710b0317238ef8dde3de61eda96713e21d86c9fc7a98ed" + }, + { + "checksum": "sha256:760d9056891a60c200984f0655aee1876b3bf890f7486306c05db8e295ae7843" + }, + { + "checksum": "sha256:e426534c59b3a35068877d324dd34d643ad7c84d2c406b2e6502ac6c2a367d39" + }, + { + "checksum": "sha256:094eff70081085f87a7ac0dedafa851ad8ac8e03f9f328636df4a0f8301d0e87" + }, + { + "checksum": "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4" + }, + { + "checksum": "sha256:cf9a0bbaa7bd075d2af532586ee93ab92b96d9859f53a57f85cd7e0309f8fff6" + }, + { + "checksum": "sha256:279529f5c16e8e84ddfa87c0d29d35cde6fac7e7a0b9de2c4e92b96ccb5d3319" + }, + { + "checksum": "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2" + }, + { + "checksum": "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b" + }, + { + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "checksum": "sha256:38affe91361bf56b84490d97c7e3f815965cf8d2bbb222c6c045af4bf2dff736" + }, + { + "checksum": "sha256:49258c6900ab6f3eaa5f7c7515fcf0a7d604af9d99e7d5f72be7bc75e00a844a" + }, + { + "checksum": "sha256:593d4df5b8de12ed0ec5a0935cb0bd966e27a631aa0806250ba9f67092ad737f" + }, + { + "checksum": "sha256:5176881bae429bec5136195c73b402081184ae2a35519673031a075e855f75f4" + }, + { + "checksum": "sha256:740e25055db923edcb8a0bddebc688de61a17c6b738162163e9b569e0cda1e18" + }, + { + "checksum": "sha256:cbf25aa7faf9114e9735dbc120fb8fdda1694c86ab24c204383faf484720ee58" + }, + { + "checksum": "sha256:2a9a97f4ff381c061f075608ef3b1fed18ce11a07acd84a74160540e426f1723" + }, + { + "checksum": "sha256:af3adfdba9b6ca2e6e8a57d60b64e11994bb6dbdcd63d03492c29c763b8f22c2" + }, + { + "checksum": "sha256:92bc3c29b5232c55f60c9d0a5426bb04675209b8ee87df5725a83a60944219cb" + }, + { + "checksum": "sha256:9a13d64325d59ec40093eaa8faa40b15933808d2dd7b1b3a3fbc5e3b99de19c8" + }, + { + "checksum": "sha256:0c9b5e526b6fe5384447db444a2657cb4b1766b646255f89c49c749d388bdc58" + }, + { + "checksum": "sha256:2769c1df985e8fea8760d7ca8908eac166a64262c9643c7b0f6a82db570a68f5" + }, + { + "checksum": "sha256:e09e950b0a0842577364565380ba40e8c4f027919dc880378b606c2dafc5693b" + }, + { + "checksum": "sha256:3e570377bfb3946bbbbe32abfc92f800af7922d0a448e3f044ef75b18e97b924" + }, + { + "checksum": "sha256:a07f96031fbe9507a8d6bb0e14cf0783bc615552e4cfb75131672072f5729de8" + }, + { + "checksum": "sha256:aa1a6a85493590efb9c0235c15d6a05e8b119f385dc13b3e3abd2315f8c4a6e0" + }, + { + "checksum": "sha256:22c0e44318e36e04ad1eb4632dcf25db991f481f9a543387d372e1f2ad92561f" + }, + { + "checksum": "sha256:71ffa6d3e9722a0c4f89862ca2cdfe60e86a70b131569cfdf594f01dd0d69a70" + }, + { + "checksum": "sha256:28cd61a54fe18d550c7ba48fc2557798fca5cbc85600ed55e30c5821a61ca168" + }, + { + "checksum": "sha256:fcb59efbfef73a98caa84f0f99dbfd15d7d49d8e74368969d6760d132afffad2" + }, + { + "checksum": "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28" + }, + { + "checksum": "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43" + }, + { + "checksum": "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362" + }, + { + "checksum": "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64" + }, + { + "checksum": "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835" + }, + { + "checksum": "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf" + }, + { + "checksum": "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b" + }, + { + "checksum": "sha256:0aeef4b59dae77f6bd7f557e62efb6621491c04c27287860f581d35cd9be7a19" + }, + { + "checksum": "sha256:3d24b1cc90de184aa66cd58a1071888b6de8d34eb8155d6ab6a5ac777281adf5" + }, + { + "checksum": "sha256:047e04a10f26da24deb076a88c676fcaecd2f68aaa1a5adc7bc46791145c74c4" + }, + { + "checksum": "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55" + }, + { + "checksum": "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21" + }, + { + "checksum": "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414" + }, + { + "checksum": "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca" + }, + { + "checksum": "sha256:4e644e08ef5bd3b33357d6c1ea64e37097c3224ae324456fef022b9e5fdd2947" + }, + { + "checksum": "sha256:11aae64c2458371a884514b954f58896c5ba7fb751ade0351c476e29991da25b" + }, + { + "checksum": "sha256:bee28477fcd36d5a877d1fe3d61aa876f62128681411718e0c3fc82b95cf8e59" + }, + { + "checksum": "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a" + }, + { + "checksum": "sha256:6ae316dfb9723d13a8d36d98d109d4a55017b568ee2070279f1bdccdc699862a" + }, + { + "checksum": "sha256:393b5c2678d104c9f108ea2a353746d68f2111785acf13ffdff6798482d9d8d6" + }, + { + "checksum": "sha256:c17544abced52ad9df8229c71a0f8c437719c4d1fccd77f2db707be18226aecb" + }, + { + "checksum": "sha256:28d4282a27a17db514ff30d8c865cb8a306d1c412f9e13c2e617a23912f07dde" + }, + { + "checksum": "sha256:1e8b20ca3658abc9b7e2fe27d18eeae2f660779f33b39ca1fa2588363af250e5" + }, + { + "checksum": "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42" + }, + { + "checksum": "sha256:27ed4654a9c4dfb8417c54cc1a6060c51bd3f1dd16c4ba4bd24dfeba57c5ede1" + }, + { + "checksum": "sha256:0a016d034c490f07425c402c260de595603a136bf7146dbc8ed90a661a60fbc1" + }, + { + "checksum": "sha256:3dcc14bad9f9ec7c89d1bf08f23dbdfc2a641357fff6c23fa398d6ba482394ff" + }, + { + "checksum": "sha256:727c08fe072ef85837e8db30574aec712cdf67a062eead3e5481ba08425b2395" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "vfs_type": "xfs", + "path": "/", + "options": "defaults" + }, + { + "uuid": "46BB-8120", + "vfs_type": "vfat", + "path": "/boot/efi", + "options": "umask=0077,shortname=winnt", + "passno": 2 + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "kernel_opts": "ro net.ifnames=0", + "uefi": { + "vendor": "redhat" + } + } + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "redhat": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "qcow2", + "filename": "disk.qcow2", + "size": 4294967296, + "ptuuid": "8DFDFF87-C96E-EA48-A3A6-9408F1F6B1EF", + "pttype": "gpt", + "partitions": [ + { + "start": 2048, + "size": 972800, + "type": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B", + "filesystem": { + "type": "vfat", + "uuid": "46BB-8120", + "label": "EFI System Partition", + "mountpoint": "/boot/efi" + } + }, + { + "start": 976896, + "filesystem": { + "type": "xfs", + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/acl-2.2.53-1.el8.aarch64.rpm", + "checksum": "sha256:b984d8576520272b1011cc46b03c666cd6abc1bf74b428a8781ca58c6287a007" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm", + "checksum": "sha256:d9a4628bd8d3e776f626be4cb5edec305c2ff894d7c5cc7e33e212545721053a" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bash-4.4.19-12.el8.aarch64.rpm", + "checksum": "sha256:518e5412ce19ab733f62c334da8c5545a212c4c971d513eb95590b08a14e3772" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/brotli-1.0.6-2.el8.aarch64.rpm", + "checksum": "sha256:796cac51b2c1092c4faad372717c6ddc37cad9757111a41e531fe0a8d6c0a9ea" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bzip2-libs-1.0.6-26.el8.aarch64.rpm", + "checksum": "sha256:2d84f6765b1645f867527f493b6153470602a80c75f81545bf619aa92127e4da" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/chkconfig-1.13-2.el8.aarch64.rpm", + "checksum": "sha256:6a6aa18217ae72a0b33e4302da927e6ded92520cbf4d48a5030d4a2f95eeb5d8" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-8.30-8.el8.aarch64.rpm", + "checksum": "sha256:15c33124ac0479d34f1f58d2bd24cc52db7089b4a8681c276a3fd0d6dfe4fc72" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-common-8.30-8.el8.aarch64.rpm", + "checksum": "sha256:e085cf8bddcf09c908d925688dae077300d2964b40bd060af252d26a963cfe50" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cpio-2.12-8.el8.aarch64.rpm", + "checksum": "sha256:dcda73e0ea7b5d2710528fc6df135d435281d1f4d2be0018bb6f1858e818d599" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-2.9.6-15.el8.aarch64.rpm", + "checksum": "sha256:b7bc10e9947763df6e6177b3dbbe77c21f55ed60d26c4c28bfe14a98f7e06189" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-dicts-2.9.6-15.el8.aarch64.rpm", + "checksum": "sha256:acd4674b3fbe01d6cf94eb18a81cdb00beb73bf3d4a25a28e234f31498f5c389" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cryptsetup-libs-2.3.3-1.el8.aarch64.rpm", + "checksum": "sha256:689577d74311a7327aab6fe412a803d72b790957e863b6b78a8621a040306919" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/curl-7.61.1-12.el8.aarch64.rpm", + "checksum": "sha256:7d3ddbaae06c7fb8d24449e11b418ee07bdd9e07f7f0af57741d220b97228557" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.aarch64.rpm", + "checksum": "sha256:41cc2d507fdfbba939c00164a563e770d466f992cb64d3c51a79aec20b31d6d1" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:dc37d12420a2593c46619e9b67a0115255a0c7334f547871ce08e329bf5d15a2" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-daemon-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:f96bc0d82d4c6934659c23a6771515e78bf2252ed24d32c78001260ee6e36c8d" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-libs-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:bae965c689b08ce42f10366e4b441504432ac353d30edb8b4b2cfc798069434f" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-tools-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:eaf3c7104d3ebd0cdda3d6ce44f4c79eec0a8ce3ce71cbb0d9dfe716f58a105d" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-1.02.171-3.el8.aarch64.rpm", + "checksum": "sha256:6fbfaa1e1b1bb4e2362cf3dce0f59a94a78b457904234cbccbe6afacde311c26" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-libs-1.02.171-3.el8.aarch64.rpm", + "checksum": "sha256:057b6632870b8c3c0c950a19092ef2f9749bf3d1a37ccb083bf42ca6404db066" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/diffutils-3.6-6.el8.aarch64.rpm", + "checksum": "sha256:3a684fd5f1b1d417c6c3e9d1f0d5b846138aa06450ff246425d43d4a20bd619e" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dosfstools-4.1-6.el8.aarch64.rpm", + "checksum": "sha256:2efbfbcce7ef24e433d3c304b6b6b022d1b1b8a972969da1adb1c3c85f9625a7" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-049-89.git20200625.el8.aarch64.rpm", + "checksum": "sha256:4d8edaa317fd508226bb5421ef423470f3e9153167222dee7bf8fb2346b7875b" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:3256e78263462d5d7ab37b696992aedd6f810431641ce8d1e1bc198c797b402b" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:da4d193d5f0caf7a196f3bd4aa1225072b522521d82fca8edecc6546b5460ac6" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:c88d1656b8001ff79175f7d3b7818681e40e54e8fec6fb8556ba8141d437fcfa" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libelf-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:b140eb203fe889d1c75ef3b5527033cfeb7a6f0c813638a607c9f10faf52a34b" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libs-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:98dd1582b8ab27085379a3a7e598a6e261c62f97a5f3689447cbf1d4af9ae46c" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/expat-2.2.5-4.el8.aarch64.rpm", + "checksum": "sha256:77b56d825eb31ca191254d17a4c9399e3c4fe8af42a528c2ad4424bfd865b82d" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-5.33-16.el8.aarch64.rpm", + "checksum": "sha256:f7ccbe0d7b4a61b5a47253f168f8efcdbf41ad0755e678f9edcd2f6a69c93c7d" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-libs-5.33-16.el8.aarch64.rpm", + "checksum": "sha256:3ee66f993ee567b2457a221ed364ae4f8dfe783a5f0e723d9169f95d12f9e696" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/filesystem-3.8-3.el8.aarch64.rpm", + "checksum": "sha256:634a3cbf0b334e901b6887176fa1b98246be7c4010b4c21cb6fd8fa7aa5fdf94" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/findutils-4.6.0-20.el8.aarch64.rpm", + "checksum": "sha256:540fa90864b4eb0176b56e0c5e9d7bc6130985288ae297b4c38950381b08a827" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fuse-libs-2.9.7-12.el8.aarch64.rpm", + "checksum": "sha256:e08305aecd924631284ddaeae39a83cca85495389d4ddef75410a32af49f946d" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gawk-4.2.1-1.el8.aarch64.rpm", + "checksum": "sha256:e0faa8a6bc43432619a2b6a26e9f1323d30cda945580d8bc0f6c2fe742b71924" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-1.18-1.el8.aarch64.rpm", + "checksum": "sha256:3f5765cebcac288cc1b5b118acfbc2016eda7b81ad73923f6f9c21e4731eb0d9" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-libs-1.18-1.el8.aarch64.rpm", + "checksum": "sha256:8ef2fcbe5a8d6e7d393d28838ff458336d16e006bc7d19921f460eb105b88570" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-0.19.8.1-17.el8.aarch64.rpm", + "checksum": "sha256:fddf61e9024c41073442ccff0c9990fa004e9b183f391c4e3cf3853e5ae6062c" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-libs-0.19.8.1-17.el8.aarch64.rpm", + "checksum": "sha256:ce6960fa7831611815e163864a91b70b0ab1ef0f446c2cad1eec13404822cad5" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glib2-2.56.4-8.el8.aarch64.rpm", + "checksum": "sha256:964b1d9563e42a176c24cf5c91616ee5cc40de3b1c92038d7fb0392113eaf159" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:d4424a9c946da1eab876298af8f772d5aab1109a1f551ac2f1cd10ee849568de" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-all-langpacks-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:4d8d164f8bd56b7ab6252f009b38525f39fb161c03713414e1583894a265c50a" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-common-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:91c58481a7e4a9b7f9e0e14844fa73047395c75df95d35afa3b0d8ef3f584491" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gmp-6.1.2-10.el8.aarch64.rpm", + "checksum": "sha256:19efe6f125c00123ccc6d96e51eb61e711f3ea01f32d18cce14d3b614217c58e" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-2.2.20-2.el8.aarch64.rpm", + "checksum": "sha256:f700797810fb2bdbba5a0b31e10c361360a87bac1a282da109273194a25bf6ef" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-smime-2.2.20-2.el8.aarch64.rpm", + "checksum": "sha256:0b4564ad3a799af1a4a0de33b0952f6056d942b0cfa39b73e9375bf0c05b3191" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnutls-3.6.14-3.el8.aarch64.rpm", + "checksum": "sha256:3bf230c85711b285afb968850d7e98eb6b068a06e7ca40e94203e388d8447f48" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gpgme-1.13.1-3.el8.aarch64.rpm", + "checksum": "sha256:c22f0d40fbdaaceec711be0cecc122fac4570d126914ce3694a3d6a1178bd487" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grep-3.1-6.el8.aarch64.rpm", + "checksum": "sha256:81d2e21dad970c08798c0df00bbda21acf165a370f9612e0d14ce69e5dd6c5c3" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:2921d3aa14a509d271ca35256903c142c30f088f7dc889a4c4e15b26316ef5c0" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-minimal-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:126d980678e5b687c775cf857b4013306f1a761353370258a0f04d92a3553f92" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grubby-8.40-41.el8.aarch64.rpm", + "checksum": "sha256:5eddb5c1febbe6e58491f8e9ee8fc9897298b307e0357c01f49d445cf25283c9" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gzip-1.9-9.el8.aarch64.rpm", + "checksum": "sha256:e82699d15e4e6ff7825629d7c1c8a0f50a5519b6e5328472de91a0deddb9cf3d" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hardlink-1.3-6.el8.aarch64.rpm", + "checksum": "sha256:fc51460213b3bf5b67f08f2695aae8d728f614adbbacb917a0825e4ebfbc3e68" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ima-evm-utils-1.1-5.el8.aarch64.rpm", + "checksum": "sha256:cf8fdbfcd359aac8bf55500c24e6843baafe8fef35019126c3616806b41415b3" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/info-6.5-6.el8.aarch64.rpm", + "checksum": "sha256:3f7e5e72ab9e18dbca936b40734c91520242a49a9e98a2f2589f397faa6ad8e8" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iptables-libs-1.8.4-14.el8.aarch64.rpm", + "checksum": "sha256:0fd7dd5b060e7533144ad7a3cae2453ad6f87650010f328879b10c7c4cba0c04" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-c-0.13.1-0.2.el8.aarch64.rpm", + "checksum": "sha256:36aece7b7a65785985bf0b98701514f12735a87517b8578a3eb3710f82ba4765" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-glib-1.4.4-1.el8.aarch64.rpm", + "checksum": "sha256:1143ac623a74d7feaaaf293c18d942d243248f6356628f87216670c10d11687b" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-2.0.4-10.el8.aarch64.rpm", + "checksum": "sha256:10ac3bf7565725a55b0aef56f65befd0d320219fc83adfab6e564c19f8c44bd6" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/keyutils-libs-1.5.10-6.el8.aarch64.rpm", + "checksum": "sha256:e4ec1966f9bc7cbc898fe7550600ae3e9e4f8afbcdd3f6e74afe1965247653ba" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-25-16.el8.aarch64.rpm", + "checksum": "sha256:1091a799d34a42d2e42ac462b4f979a55d17513eca5a00bad9bdba56cca83357" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-libs-25-16.el8.aarch64.rpm", + "checksum": "sha256:6f87f305a3e0e0faf69c2a9d4f277958ca33e85b72c6e4f77a365a5f60ced3d3" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kpartx-0.8.4-2.el8.aarch64.rpm", + "checksum": "sha256:4a27cd4496ebdba821b3c7692eeb0c0fff28c6af69fe4fe9e4bf52511639bd6a" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/krb5-libs-1.18.2-3.el8.aarch64.rpm", + "checksum": "sha256:ca87249f90bac96902d18c11a1f8c80566fa090c6473226bdd147e07e3ed21ec" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libacl-2.2.53-1.el8.aarch64.rpm", + "checksum": "sha256:7c014b54f7929348f614f8f4eb7a1552b8565c0a57f3a75ff6471dc05f30cafe" + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.112", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libaio-0.3.112-1.el8.aarch64.rpm", + "checksum": "sha256:98f838a9775269a0f796151bd54d52c7ac91d4bf1365186772f243bfafbb136a" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libarchive-3.3.2-9.el8.aarch64.rpm", + "checksum": "sha256:dfdec57ff520511d1d4ef9d913d90fc8d6ac98685cbc12fb568c8980f2a73f1a" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libassuan-2.5.1-3.el8.aarch64.rpm", + "checksum": "sha256:0f1a02850c102e2a186787504f965c0c10d6432b9f600c18bc2f520e55f04a8c" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libattr-2.4.48-3.el8.aarch64.rpm", + "checksum": "sha256:6f2bfbe0f23d3b233aacb72c153ee133839353325f028321eb5ea38b0dc06c02" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libblkid-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:d173b35182f28b9dd48e4a942f2a20c659bee2f9ac234b60cf8b995aa2421382" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-2.26-4.el8.aarch64.rpm", + "checksum": "sha256:2cddadff38ccef2364a7e40af0e1d9b3bf9c06869c15ceeb655f3cfa431c2083" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-ng-0.7.9-5.el8.aarch64.rpm", + "checksum": "sha256:62a2878605ca0415fd60adcff4c7068d855d20737498a968fabc646610ccbe5c" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcom_err-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:e5f82f102f51d88aa517bbebd170795a571b7ddc3036574b92b498cc13704d98" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcomps-0.1.11-4.el8.aarch64.rpm", + "checksum": "sha256:ff9fc6467a4c2fd0c22c419a9cdb7a524d1c69d0c87aa09f31728bef9f692f76" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcroco-0.6.12-4.el8.aarch64.rpm", + "checksum": "sha256:86ae7501bdf0149728879f488dd4c86907216cb5b021192347a5c10a55382931" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcurl-7.61.1-12.el8.aarch64.rpm", + "checksum": "sha256:2809ad51c6eb6c9a54d64cccc2cd948f6fd4207f32b4493b3f4a9bd0886c894b" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-5.3.28-39.el8.aarch64.rpm", + "checksum": "sha256:84e7102978d76d80aa40c43efcc71c1e54e819195132df921a8c13cec54328da" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-utils-5.3.28-39.el8.aarch64.rpm", + "checksum": "sha256:621e96e91103f2f701e4ac3b8b8b6ef9aab4db5ab8fb3e141eb02e3f328aed79" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdnf-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:fac29887224d91e8190a569b3ac5be1168034f36c9c234576ea3cefe686e46cd" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libevent-2.1.8-5.el8.aarch64.rpm", + "checksum": "sha256:058822931f4c34c18675116c1b02b718de4044c1019acb0d5f97417f00a30ba7" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libfdisk-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:d6aa17908468b5e2095526664fce6627dec7a02c26625339c14b9278cc39d4a6" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libffi-3.1-22.el8.aarch64.rpm", + "checksum": "sha256:4a40a1538c8a488f32476f96d2461c3b792eb0cf5acb998e397d8a9cef8e5461" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcc-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:3b607f0dbedecb25239e22c1f553c8d70db9d2206a877fa07567fa1a49e233d7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcrypt-1.8.5-4.el8.aarch64.rpm", + "checksum": "sha256:8498846918c7bc7a20553340434cfbfb0d19185adcd0ff52866c6506ab8f747d" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgomp-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:53fa2fd6a138d00c697b827a77bcc25ec498b1d49bb04ef80594e81ccabc165d" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgpg-error-1.31-1.el8.aarch64.rpm", + "checksum": "sha256:5a05f1126ed38f752af247dcdf7c958e738b935b8b6d942fd42f423768f05255" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libidn2-2.2.0-1.el8.aarch64.rpm", + "checksum": "sha256:2dc8e2f52451d1a11b16bbb389a24c58b61a1ba804ee777f9d06dbe4e1fcf6e5" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-1.2.0-2.el8.aarch64.rpm", + "checksum": "sha256:83301ca502322e0634173460bf8fa35572c36ab8cc2e6e600bf9980f845fc857" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.aarch64.rpm", + "checksum": "sha256:f07b1f40ebb1fbe5c24e68a38b5f768a21e2ec2254d4bd8ff61fb0bde72f64ce" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libksba-1.3.5-7.el8.aarch64.rpm", + "checksum": "sha256:704e1dc996a17815c6dcf7029c0ddb2849d40feaab6e9b9c687af9d95fef825c" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmetalink-0.1.3-7.el8.aarch64.rpm", + "checksum": "sha256:fa80a7e82e231dc77b3e44edd2cbf5b3d1657e009e59f15bbe8d50a4290b7c82" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmodulemd-2.9.4-2.el8.aarch64.rpm", + "checksum": "sha256:ba1364539f16d7c8379d7563fd0634651fa8a05b3f7098a21ba96e1f5641f132" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmount-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:26b14d8f226962ce712bbccfb245843759e835a24a139eacae86d680043a85a7" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.aarch64.rpm", + "checksum": "sha256:4874e739ed37bc6a5bfdb6069d4620e5f7efe01d60eb9fd2550c550167c99990" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.aarch64.rpm", + "checksum": "sha256:471663fca7e3f609834368d69d8f1f469cfc0d3f3e95dc2b79381722d0368edc" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpcap-1.9.1-4.el8.aarch64.rpm", + "checksum": "sha256:435a2be84a2b38372965dbd60ffed0ed38a616b8100859787a8bb3b19d9fc4d9" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpsl-0.20.2-6.el8.aarch64.rpm", + "checksum": "sha256:6557d001315e85ac123b1378c5aafb81428e2383debcacf3f91c55476cfc48eb" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpwquality-1.4.0-9.el8.aarch64.rpm", + "checksum": "sha256:d6ab7c8790cd6c9a137d908d840c51c547e950d25f6ab8af3c9ad3899ff6c044" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librepo-1.12.0-1.el8.aarch64.rpm", + "checksum": "sha256:2d74e0ab14393921c6160fda8dd533b58c0348acdf5ee5c306ffc64221700de2" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libreport-filesystem-2.9.5-11.el8.aarch64.rpm", + "checksum": "sha256:e55bf252e792f27f076101e94dfbbac97dabeea0f7893a4cb9b111a0b72d187f" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librhsm-0.0.3-3.el8.aarch64.rpm", + "checksum": "sha256:e9487db2fdce1f494ee1582787a1afc1ea4e0429189db8be0ddbb0af2676c4b6" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libseccomp-2.4.3-1.el8.aarch64.rpm", + "checksum": "sha256:cc7e751a62f9a28b82df0bce0ecfb050364b8688ef69473f1910909e44c5eb98" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsecret-0.18.6-1.el8.aarch64.rpm", + "checksum": "sha256:c1b5c4668331e8b05a08e7de432cbfb75f8072401bb6651a24e43f64eff8dcc4" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-utils-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:c82ca1c0ef4b89f75e8e7edbbae4f3eeb2720a4abd56b0927928cff2d9721186" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsemanage-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:140146ebcbadd9b0f2aa5c2fcde5c93888f2d84ce61a2a4cf148ef435d1ba410" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsepol-2.9-1.el8.aarch64.rpm", + "checksum": "sha256:c8a28b4587888435c51f6d1ce42f48b08fb0256e4029ea569e9a02adcb82c85a" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsigsegv-2.11-5.el8.aarch64.rpm", + "checksum": "sha256:bf267d9571cf568375e261d593236750f400ac536c1c818513106482ebc3fb10" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsmartcols-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:f35c0da3cff05ded33c0cb4f202dbb52a5caabec8b1897d5057df83c284d62f1" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsolv-0.7.11-1.el8.aarch64.rpm", + "checksum": "sha256:2397506a63455e543b201938f605e687de5590d9a06282824e2f6bfdf5e0f149" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libss-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:268d9232f0853037100432e9363c659cf99927e03f759fd4884643b560710cd6" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-0.9.4-2.el8.aarch64.rpm", + "checksum": "sha256:3ee6a4f61935c2f0698ad2c4834a5864920a1e48d55c7800da7c382249895e39" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libstdc++-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:f4e63e7eedc0266a575eb6107f41c5f20ca0505a0e80145c21b9741674d5c0b5" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtasn1-4.13-3.el8.aarch64.rpm", + "checksum": "sha256:ed28e1e31109e27ce1c676914364c9f1dd46b71d00cb4cf13931f0fec6cf6978" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtirpc-1.1.4-4.el8.aarch64.rpm", + "checksum": "sha256:481bbd6d73415d437a73eee7977ec370299acdac44b215a026652debba31783d" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libunistring-0.9.9-3.el8.aarch64.rpm", + "checksum": "sha256:da4b9bfad26d559485ade669556512acfe93ba23d204f2556bac82c09401b4e7" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libusbx-1.0.23-3.el8.aarch64.rpm", + "checksum": "sha256:01e486a3be67325e9692e909f5c6534137ee6a6df185ba2c09d4d50fe6c738f6" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libutempter-1.1.6-14.el8.aarch64.rpm", + "checksum": "sha256:ad07261ff4f478be9511f7ee749bfbe8b2ba8e28696c2f561caa20e35c535134" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libuuid-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:95de1777f7e8a734445c5d45e0b77da8b6c41a9b504582ed266d852c677a936b" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libverto-0.3.0-5.el8.aarch64.rpm", + "checksum": "sha256:532d46a4c0e68bd45eabc3e2ba6d570880344044e1034f5f347b37c470d0dced" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxcrypt-4.1.1-4.el8.aarch64.rpm", + "checksum": "sha256:876ffb285aaeddb2c18ae32527bd4ee202710bd8e18d5b410af22937646dcdec" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxml2-2.9.7-8.el8.aarch64.rpm", + "checksum": "sha256:fb56b7a416e12da0782ae8ba7396bc03a2f8844c2efcb5df3f8b9e74eb8b8059" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libyaml-0.1.7-5.el8.aarch64.rpm", + "checksum": "sha256:7864fbc866ae5a3e59b4f0f114b77ff52b55e76c5388a917f82a6097f02a4db7" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libzstd-1.4.4-1.el8.aarch64.rpm", + "checksum": "sha256:19d1de27d2f62b4a55735233807f70a1e8ff7551fed97ee8650dbd09c1ef50ea" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lua-libs-5.3.4-11.el8.aarch64.rpm", + "checksum": "sha256:bc0f9bd34ac6a01dd7272b87e1b7a33045ff8c6793cac02fa639dfc9341e8215" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lz4-libs-1.8.3-2.el8.aarch64.rpm", + "checksum": "sha256:64ac5cb6fd3da1610812795ce17e09648d89c87513d6284b852a3455b0831d3a" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mpfr-3.1.6-1.el8.aarch64.rpm", + "checksum": "sha256:320ced09e242f09047f4fab0a7f66aba6de2e42583f6a2e164eadcc1ffd0b915" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-6.1-7.20180224.el8.aarch64.rpm", + "checksum": "sha256:8ac1003d722e3d5f383c9b970bf6dfbc905007a624abadb63e520d7a93993747" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-libs-6.1-7.20180224.el8.aarch64.rpm", + "checksum": "sha256:f99f5edde9ad4574b84264c467420c910b31f78683fbf1b63d106a7e6c9d64a3" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/nettle-3.4.1-2.el8.aarch64.rpm", + "checksum": "sha256:e2c4ac0f7abf75cbcc7a6fb35412820c267f1a8ce614f41b60d901918c4616d5" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/npth-1.5-4.el8.aarch64.rpm", + "checksum": "sha256:daf36ee86ec6001770ae68bdd82409526faf4b9b1313a6b74fb54cfb98ff571e" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openldap-2.4.46-15.el8.aarch64.rpm", + "checksum": "sha256:cfa188d39884fd4ba36d27e8fb25aed9dbd26efccffbfd01a24c2c580fdb96f1" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-1.1.1g-9.el8.aarch64.rpm", + "checksum": "sha256:3ef63ecbebf844bcf682c9482dc0ddd158c955b0f066b62eb9575bb9a9642db5" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-libs-1.1.1g-9.el8.aarch64.rpm", + "checksum": "sha256:448d3ff44e7f32f3b33e891180e248dc1bcd4d410f68015a8b0c30dc7c385aca" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-pkcs11-0.4.10-2.el8.aarch64.rpm", + "checksum": "sha256:290c83afcd2b0a2b17aab95cf72a85da5f8b9f9a9862857c919a0f43e3fce70e" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/os-prober-1.74-6.el8.aarch64.rpm", + "checksum": "sha256:43ab42c8a58267936a89da99e37d3b9fc56489e958060f600ba047445ca44ee3" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-0.23.14-5.el8_0.aarch64.rpm", + "checksum": "sha256:651f38873d3356ec4efb27d04658541080d11cf1ece6335a07db1ca089fa7da3" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.aarch64.rpm", + "checksum": "sha256:ec40be9e0b2bb03f7b057a7a9342ffbd86129d58828fb310f445bc506261eb0e" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pam-1.3.1-11.el8.aarch64.rpm", + "checksum": "sha256:04c031a07bde4360484a0180e832036d3ac45a95c4839e54d7a02423df5485ef" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre-8.42-4.el8.aarch64.rpm", + "checksum": "sha256:fea4eb54fe59451b76fb40b9bd15ff41f0f51bb7371f94b2f5df572ef917d037" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre2-10.32-2.el8.aarch64.rpm", + "checksum": "sha256:ce8c92fa2bef1770f44992db24e1cb8cc850feab03a74cf0ebf741ecb0d160ea" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pigz-2.4-4.el8.aarch64.rpm", + "checksum": "sha256:f847957437e7f24844930c4a3ff64c5f7877f083553f48eeadca3c5f5e5c728e" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-3.6.8-30.el8.aarch64.rpm", + "checksum": "sha256:68593fad4413255772bd08ed7f8b578332f0f53e002c8c7473d90c966a87131b" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/policycoreutils-2.9-9.el8.aarch64.rpm", + "checksum": "sha256:b90ce065d5ea98845733ff06e47d385937f6293ebddf52144c80f5fe1f296307" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/popt-1.16-14.el8.aarch64.rpm", + "checksum": "sha256:4e4923f05d0032263d570075b9b832b9fc3550cd8f82f9a6b0b9b25061726110" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/procps-ng-3.3.15-2.el8.aarch64.rpm", + "checksum": "sha256:d890d028f59e2553730fad3dbea0e1a245c92c24836513fa2281194b1c90b53a" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-gpg-1.13.1-3.el8.aarch64.rpm", + "checksum": "sha256:90405803c0159cdf0f74a26b6ce064cfd9973e59232b2923ed171a38fc5684a6" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-hawkey-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:4909edde46b5b2b58d228bacafa3bab5bc5847559d591d59ecd59cdf50d36db4" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libcomps-0.1.11-4.el8.aarch64.rpm", + "checksum": "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libdnf-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:9b6fcdd19caee5fe77b9ed17adb3f11769a7109ebcf52d3cb3358d5a9eecc391" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libs-3.6.8-30.el8.aarch64.rpm", + "checksum": "sha256:65b8d755ff01dfefa423d2f0bd6fd54cfc4c580da63510e19cf178abb6e26172" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-rpm-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:b5b1f5f7a02f70db056861813ddcf181f2ebba507cd368fbe2c32f262edf7fc6" + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/readline-7.0-10.el8.aarch64.rpm", + "checksum": "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-8.3-0.2.el8.aarch64.rpm", + "checksum": "sha256:a6292dd846bc471b22409fc95a5e09c88bcb6176251dc5cc11f4b14a73ddda11" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-eula-8.3-0.2.el8.aarch64.rpm", + "checksum": "sha256:784d385116891056b618722c933d43c5b395b92fa82e5bc797081317ec6a82ba" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:47b483c0f556c56f0b1f468603c57834864902ae5a849a18c8a0ca5f76d66c86" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-build-libs-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:c633b98b4dbf96674a69573404819c34d66eb7e19820283fc588f6b10b0e3fc8" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-libs-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:d3fb5a473c44cd8ae6b94d6bf3fc552553d8f4ef28eed439658ea38990ab9db5" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:0a885c6dc6abd969b828bf2fd7063ee884e6d058eaf405b02f3dd6efb6c66bac" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:0bb7024125ca67119612e55a92da13c989e0306ddd7de7e655a679c963939ef7" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sed-4.5-2.el8.aarch64.rpm", + "checksum": "sha256:125c92f23d87b905c21e9f7669f0ec6e41428ab63c8c13f63db8980f292797d5" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shadow-utils-4.6-10.el8.aarch64.rpm", + "checksum": "sha256:a840b8193ce9b1b72e3783b9a9bb2ec91947ba3b6f7ac973ae8e0e20a7059117" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shared-mime-info-1.9-3.el8.aarch64.rpm", + "checksum": "sha256:19cd894b4154d1a8521c6884cfd2a6eaf1f498b7dec5cc31408f8535b9098f2a" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sqlite-libs-3.26.0-10.el8.aarch64.rpm", + "checksum": "sha256:207e6396488c1db18fb7b1f2b9952f48c2625f042c5f6a901d41974ce376b0e0" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-239-36.el8.aarch64.rpm", + "checksum": "sha256:d4467ba499fe1ddd82746ad00d7e86bea59c4827fe1ff8c05132bad1f93ddb7f" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-libs-239-36.el8.aarch64.rpm", + "checksum": "sha256:800c9a0d718c641ceee26c8f625b2dcd79a33963e9e7a11930678dc99582a2d0" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-pam-239-36.el8.aarch64.rpm", + "checksum": "sha256:986683a0edb615a5d45a9c1b0ee3d27f8032c2667cad58d24526085e41010992" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-udev-239-36.el8.aarch64.rpm", + "checksum": "sha256:3fe7c10c144c8fffc00d144317a2bf8029bd9d048432bccfc352dfc6f0995680" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tar-1.30-5.el8.aarch64.rpm", + "checksum": "sha256:ba66a87402ccc8515e164f597f5d254ad9513979fe3ca1ffabf63c915c0daa73" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-0.3.14-4.el8.aarch64.rpm", + "checksum": "sha256:d695df94220c2ef990e502123b3bd8ede8fcfb4f738346dd98d999559b01b6b3" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-lib-0.3.14-4.el8.aarch64.rpm", + "checksum": "sha256:fb263177eee60c26b7acaa76cb640c3d7ab6928e73c8af80b2111a247bd61ece" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/util-linux-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:83e470505f558f8cf8414a7fc8fb0d1bc4b16ed15d05ccf7e46332b04d1a0d85" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/which-2.21-12.el8.aarch64.rpm", + "checksum": "sha256:0f32d23a6b2b15603d710b0317238ef8dde3de61eda96713e21d86c9fc7a98ed" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xfsprogs-5.0.0-4.el8.aarch64.rpm", + "checksum": "sha256:760d9056891a60c200984f0655aee1876b3bf890f7486306c05db8e295ae7843" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-5.2.4-3.el8.aarch64.rpm", + "checksum": "sha256:e426534c59b3a35068877d324dd34d643ad7c84d2c406b2e6502ac6c2a367d39" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-libs-5.2.4-3.el8.aarch64.rpm", + "checksum": "sha256:094eff70081085f87a7ac0dedafa851ad8ac8e03f9f328636df4a0f8301d0e87" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/zlib-1.2.11-15.el8.aarch64.rpm", + "checksum": "sha256:cf9a0bbaa7bd075d2af532586ee93ab92b96d9859f53a57f85cd7e0309f8fff6" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libxkbcommon-0.9.1-1.el8.aarch64.rpm", + "checksum": "sha256:a07f96031fbe9507a8d6bb0e14cf0783bc615552e4cfb75131672072f5729de8" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/memstrack-0.1.8-1.el8.aarch64.rpm", + "checksum": "sha256:aa1a6a85493590efb9c0235c15d6a05e8b119f385dc13b3e3abd2315f8c4a6e0" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/pinentry-1.1.0-2.el8.aarch64.rpm", + "checksum": "sha256:22c0e44318e36e04ad1eb4632dcf25db991f481f9a543387d372e1f2ad92561f" + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-unbound-1.7.3-14.el8.aarch64.rpm", + "checksum": "sha256:6ae316dfb9723d13a8d36d98d109d4a55017b568ee2070279f1bdccdc699862a" + }, + { + "name": "python36", + "epoch": 0, + "version": "3.6.8", + "release": "2.module+el8.1.0+3334+5cb623d7", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.aarch64.rpm", + "checksum": "sha256:5996ff948b5874f894c5ce3495652e6de552addf2331fd82193023d77994ef8f" + }, + { + "name": "qemu-img", + "epoch": 15, + "version": "4.2.0", + "release": "29.module+el8.3.0+7212+401047e6", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.aarch64.rpm", + "checksum": "sha256:d20f4bf44fcc90509e7afca364eae0a55c8f33df2f8a69e266f5fcd4b5fa2e4b" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/unbound-libs-1.7.3-14.el8.aarch64.rpm", + "checksum": "sha256:727c08fe072ef85837e8db30574aec712cdf67a062eead3e5481ba08425b2395" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-1.26.0-0.2.el8.aarch64.rpm", + "checksum": "sha256:63c64d526e9820ddc57a77c053674eeccefef33f16af536dd9b47e816db06988" + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-libnm-1.26.0-0.2.el8.aarch64.rpm", + "checksum": "sha256:0229afd544d1a59bfe26c095ad338bac7e0d2f10aab88bd895f3766e8f54fff3" + }, + { + "name": "NetworkManager-team", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-team-1.26.0-0.2.el8.aarch64.rpm", + "checksum": "sha256:1f8013c5bd1c4914a11363d56d67fa70871f5f42c64f57862c791871fb9bb05c" + }, + { + "name": "NetworkManager-tui", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-tui-1.26.0-0.2.el8.aarch64.rpm", + "checksum": "sha256:c3727553ea6dd925d9c760b23eb617d1cb475fab9c495543868666ad6cd3b088" + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/acl-2.2.53-1.el8.aarch64.rpm", + "checksum": "sha256:b984d8576520272b1011cc46b03c666cd6abc1bf74b428a8781ca58c6287a007" + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm", + "checksum": "sha256:d82c81115472a70d60d2320e254762c76a583ad2190ad45068476c77512588af" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm", + "checksum": "sha256:d9a4628bd8d3e776f626be4cb5edec305c2ff894d7c5cc7e33e212545721053a" + }, + { + "name": "authselect", + "epoch": 0, + "version": "1.2.1", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/authselect-1.2.1-2.el8.aarch64.rpm", + "checksum": "sha256:0e30a92139490232a4b891f4f802db74f41002475f8d203c6adffe1fb9d2b1ab" + }, + { + "name": "authselect-libs", + "epoch": 0, + "version": "1.2.1", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/authselect-libs-1.2.1-2.el8.aarch64.rpm", + "checksum": "sha256:a7fe54c4d43f925093face259d9fd8f28f06e9c11dcc3ad100b24288c577e4a4" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bash-4.4.19-12.el8.aarch64.rpm", + "checksum": "sha256:518e5412ce19ab733f62c334da8c5545a212c4c971d513eb95590b08a14e3772" + }, + { + "name": "bind-export-libs", + "epoch": 32, + "version": "9.11.20", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bind-export-libs-9.11.20-3.el8.aarch64.rpm", + "checksum": "sha256:dfaf74e2116ee30d1882b3461de90d3fb6faad4468eb0678f845d105b4439a83" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/brotli-1.0.6-2.el8.aarch64.rpm", + "checksum": "sha256:796cac51b2c1092c4faad372717c6ddc37cad9757111a41e531fe0a8d6c0a9ea" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bzip2-libs-1.0.6-26.el8.aarch64.rpm", + "checksum": "sha256:2d84f6765b1645f867527f493b6153470602a80c75f81545bf619aa92127e4da" + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.13.0", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/c-ares-1.13.0-5.el8.aarch64.rpm", + "checksum": "sha256:a32db9e3d2321bd5c4e998f7ed6f4459d85f792a16f4fdfb8805f5936d521572" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/checkpolicy-2.9-1.el8.aarch64.rpm", + "checksum": "sha256:adb9e37c63a055bc106a9676c10a85fdedcb4af64ae062249732e158bc0ae9af" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/chkconfig-1.13-2.el8.aarch64.rpm", + "checksum": "sha256:6a6aa18217ae72a0b33e4302da927e6ded92520cbf4d48a5030d4a2f95eeb5d8" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-8.30-8.el8.aarch64.rpm", + "checksum": "sha256:15c33124ac0479d34f1f58d2bd24cc52db7089b4a8681c276a3fd0d6dfe4fc72" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-common-8.30-8.el8.aarch64.rpm", + "checksum": "sha256:e085cf8bddcf09c908d925688dae077300d2964b40bd060af252d26a963cfe50" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cpio-2.12-8.el8.aarch64.rpm", + "checksum": "sha256:dcda73e0ea7b5d2710528fc6df135d435281d1f4d2be0018bb6f1858e818d599" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-2.9.6-15.el8.aarch64.rpm", + "checksum": "sha256:b7bc10e9947763df6e6177b3dbbe77c21f55ed60d26c4c28bfe14a98f7e06189" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-dicts-2.9.6-15.el8.aarch64.rpm", + "checksum": "sha256:acd4674b3fbe01d6cf94eb18a81cdb00beb73bf3d4a25a28e234f31498f5c389" + }, + { + "name": "cronie", + "epoch": 0, + "version": "1.5.2", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cronie-1.5.2-4.el8.aarch64.rpm", + "checksum": "sha256:571b590c6ec7a2ac73996dc7d3dd7863aecc43e5dcb1411c191218a32633952b" + }, + { + "name": "cronie-anacron", + "epoch": 0, + "version": "1.5.2", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cronie-anacron-1.5.2-4.el8.aarch64.rpm", + "checksum": "sha256:98cf1d2d3ca85b3ec31dc56532c3b9f6fa5b3edadc8b4f4125526cdfb2b7507b" + }, + { + "name": "crontabs", + "epoch": 0, + "version": "1.11", + "release": "16.20150630git.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crontabs-1.11-16.20150630git.el8.noarch.rpm", + "checksum": "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cryptsetup-libs-2.3.3-1.el8.aarch64.rpm", + "checksum": "sha256:689577d74311a7327aab6fe412a803d72b790957e863b6b78a8621a040306919" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/curl-7.61.1-12.el8.aarch64.rpm", + "checksum": "sha256:7d3ddbaae06c7fb8d24449e11b418ee07bdd9e07f7f0af57741d220b97228557" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.aarch64.rpm", + "checksum": "sha256:41cc2d507fdfbba939c00164a563e770d466f992cb64d3c51a79aec20b31d6d1" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:dc37d12420a2593c46619e9b67a0115255a0c7334f547871ce08e329bf5d15a2" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-daemon-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:f96bc0d82d4c6934659c23a6771515e78bf2252ed24d32c78001260ee6e36c8d" + }, + { + "name": "dbus-glib", + "epoch": 0, + "version": "0.110", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-glib-0.110-2.el8.aarch64.rpm", + "checksum": "sha256:b847207a13bec4b7fcfaaf3668d93bc5ad40a6477f976e6aeb59ab431545d0c5" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-libs-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:bae965c689b08ce42f10366e4b441504432ac353d30edb8b4b2cfc798069434f" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-tools-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:eaf3c7104d3ebd0cdda3d6ce44f4c79eec0a8ce3ce71cbb0d9dfe716f58a105d" + }, + { + "name": "dbxtool", + "epoch": 0, + "version": "8", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbxtool-8-5.el8.aarch64.rpm", + "checksum": "sha256:dfea8e48e0cf3d8984237e3d5fb715c7edd9b1f8db03faaefc42a8046b45dab8" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-1.02.171-3.el8.aarch64.rpm", + "checksum": "sha256:6fbfaa1e1b1bb4e2362cf3dce0f59a94a78b457904234cbccbe6afacde311c26" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-libs-1.02.171-3.el8.aarch64.rpm", + "checksum": "sha256:057b6632870b8c3c0c950a19092ef2f9749bf3d1a37ccb083bf42ca6404db066" + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dhcp-client-4.3.6-41.el8.aarch64.rpm", + "checksum": "sha256:157044e6cf5cc52b64b9a5d621fdb5b0846a527daa428382330e68bdb47789eb" + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dhcp-common-4.3.6-41.el8.noarch.rpm", + "checksum": "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2" + }, + { + "name": "dhcp-libs", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dhcp-libs-4.3.6-41.el8.aarch64.rpm", + "checksum": "sha256:9a1c6f2b18126214e9afa768bbf16b29b89ce3169ccbd4bc169000eed143dcb4" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/diffutils-3.6-6.el8.aarch64.rpm", + "checksum": "sha256:3a684fd5f1b1d417c6c3e9d1f0d5b846138aa06450ff246425d43d4a20bd619e" + }, + { + "name": "dmidecode", + "epoch": 1, + "version": "3.2", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dmidecode-3.2-6.el8.aarch64.rpm", + "checksum": "sha256:deaa0958c9fb57773dfdf74567b658d273cea81186b913aa1473867dc07b335b" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dnf-plugin-subscription-manager", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-plugin-subscription-manager-1.27.9-1.el8.aarch64.rpm", + "checksum": "sha256:925c70a394a76004087fd6e8d94f7edab9de9efb2b81740c875698532ba124c7" + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-plugins-core-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-049-89.git20200625.el8.aarch64.rpm", + "checksum": "sha256:4d8edaa317fd508226bb5421ef423470f3e9153167222dee7bf8fb2346b7875b" + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-config-generic-049-89.git20200625.el8.aarch64.rpm", + "checksum": "sha256:2e26672ae726ba833187292dcc6c1673a07e26d974fef2f71a83407989eea8a1" + }, + { + "name": "dracut-network", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-network-049-89.git20200625.el8.aarch64.rpm", + "checksum": "sha256:f769edf78f42bae1bd183a6f4a49d74822db2b5e830147178d197be1cd67a306" + }, + { + "name": "dracut-squash", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-squash-049-89.git20200625.el8.aarch64.rpm", + "checksum": "sha256:e1bee08f1e76f8b820a59b5c228a0c1b4eaa7fc70c7d840251a04a74d517e25c" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:3256e78263462d5d7ab37b696992aedd6f810431641ce8d1e1bc198c797b402b" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:da4d193d5f0caf7a196f3bd4aa1225072b522521d82fca8edecc6546b5460ac6" + }, + { + "name": "efi-filesystem", + "epoch": 0, + "version": "3", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efi-filesystem-3-2.el8.noarch.rpm", + "checksum": "sha256:17501958f52d2db1417cab8dd5ca261bf447fd93eb62b80173f9875c3012b700" + }, + { + "name": "efibootmgr", + "epoch": 0, + "version": "16", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efibootmgr-16-1.el8.aarch64.rpm", + "checksum": "sha256:c321e3a0253fb2691035135b3d3740faa76b8e9c84a0378f480ff85ddd9f16bd" + }, + { + "name": "efivar", + "epoch": 0, + "version": "36", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efivar-36-1.el8.aarch64.rpm", + "checksum": "sha256:1b8c037a6c67959b52894f38444ed1133356c65cec2eed3acf37c45cf8609e63" + }, + { + "name": "efivar-libs", + "epoch": 0, + "version": "36", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efivar-libs-36-1.el8.aarch64.rpm", + "checksum": "sha256:db817b5d2f9d678fd0fee30e52ed080fdb5c9dd723cd57f7d6b0133293502047" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:c88d1656b8001ff79175f7d3b7818681e40e54e8fec6fb8556ba8141d437fcfa" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libelf-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:b140eb203fe889d1c75ef3b5527033cfeb7a6f0c813638a607c9f10faf52a34b" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libs-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:98dd1582b8ab27085379a3a7e598a6e261c62f97a5f3689447cbf1d4af9ae46c" + }, + { + "name": "ethtool", + "epoch": 2, + "version": "5.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ethtool-5.0-2.el8.aarch64.rpm", + "checksum": "sha256:13f1d396ba9e0fe3f8d5ef43693b5c1178207e594d2b830e94d3f8e02e33767f" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/expat-2.2.5-4.el8.aarch64.rpm", + "checksum": "sha256:77b56d825eb31ca191254d17a4c9399e3c4fe8af42a528c2ad4424bfd865b82d" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-5.33-16.el8.aarch64.rpm", + "checksum": "sha256:f7ccbe0d7b4a61b5a47253f168f8efcdbf41ad0755e678f9edcd2f6a69c93c7d" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-libs-5.33-16.el8.aarch64.rpm", + "checksum": "sha256:3ee66f993ee567b2457a221ed364ae4f8dfe783a5f0e723d9169f95d12f9e696" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/filesystem-3.8-3.el8.aarch64.rpm", + "checksum": "sha256:634a3cbf0b334e901b6887176fa1b98246be7c4010b4c21cb6fd8fa7aa5fdf94" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/findutils-4.6.0-20.el8.aarch64.rpm", + "checksum": "sha256:540fa90864b4eb0176b56e0c5e9d7bc6130985288ae297b4c38950381b08a827" + }, + { + "name": "firewalld", + "epoch": 0, + "version": "0.8.2", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/firewalld-0.8.2-1.el8.noarch.rpm", + "checksum": "sha256:c5098f41849af65b808baac594539440fcdffea7afce4239eb41885eccfd67e2" + }, + { + "name": "firewalld-filesystem", + "epoch": 0, + "version": "0.8.2", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/firewalld-filesystem-0.8.2-1.el8.noarch.rpm", + "checksum": "sha256:769b1ac34ba3aa35337b734b8548dcf9e8b41476b9b2093756341bcbd5969a36" + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.9.1", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/freetype-2.9.1-4.el8.aarch64.rpm", + "checksum": "sha256:b7955bb1ba7e944f6e5c36713db3bbc570ba0eb8de11ec6a1fa28cfc5c0029c8" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fuse-libs-2.9.7-12.el8.aarch64.rpm", + "checksum": "sha256:e08305aecd924631284ddaeae39a83cca85495389d4ddef75410a32af49f946d" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gawk-4.2.1-1.el8.aarch64.rpm", + "checksum": "sha256:e0faa8a6bc43432619a2b6a26e9f1323d30cda945580d8bc0f6c2fe742b71924" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-1.18-1.el8.aarch64.rpm", + "checksum": "sha256:3f5765cebcac288cc1b5b118acfbc2016eda7b81ad73923f6f9c21e4731eb0d9" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-libs-1.18-1.el8.aarch64.rpm", + "checksum": "sha256:8ef2fcbe5a8d6e7d393d28838ff458336d16e006bc7d19921f460eb105b88570" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-0.19.8.1-17.el8.aarch64.rpm", + "checksum": "sha256:fddf61e9024c41073442ccff0c9990fa004e9b183f391c4e3cf3853e5ae6062c" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-libs-0.19.8.1-17.el8.aarch64.rpm", + "checksum": "sha256:ce6960fa7831611815e163864a91b70b0ab1ef0f446c2cad1eec13404822cad5" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glib2-2.56.4-8.el8.aarch64.rpm", + "checksum": "sha256:964b1d9563e42a176c24cf5c91616ee5cc40de3b1c92038d7fb0392113eaf159" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:d4424a9c946da1eab876298af8f772d5aab1109a1f551ac2f1cd10ee849568de" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-common-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:91c58481a7e4a9b7f9e0e14844fa73047395c75df95d35afa3b0d8ef3f584491" + }, + { + "name": "glibc-langpack-en", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-langpack-en-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:ee978ba9ffa58b85705df0736903e6717f13936343aa693cda376c4167a828ab" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gmp-6.1.2-10.el8.aarch64.rpm", + "checksum": "sha256:19efe6f125c00123ccc6d96e51eb61e711f3ea01f32d18cce14d3b614217c58e" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-2.2.20-2.el8.aarch64.rpm", + "checksum": "sha256:f700797810fb2bdbba5a0b31e10c361360a87bac1a282da109273194a25bf6ef" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-smime-2.2.20-2.el8.aarch64.rpm", + "checksum": "sha256:0b4564ad3a799af1a4a0de33b0952f6056d942b0cfa39b73e9375bf0c05b3191" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnutls-3.6.14-3.el8.aarch64.rpm", + "checksum": "sha256:3bf230c85711b285afb968850d7e98eb6b068a06e7ca40e94203e388d8447f48" + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.56.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gobject-introspection-1.56.1-1.el8.aarch64.rpm", + "checksum": "sha256:e160910d31a37afeea87df306264fb1f727cbca574d2c234cdca856f5311fbd6" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gpgme-1.13.1-3.el8.aarch64.rpm", + "checksum": "sha256:c22f0d40fbdaaceec711be0cecc122fac4570d126914ce3694a3d6a1178bd487" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grep-3.1-6.el8.aarch64.rpm", + "checksum": "sha256:81d2e21dad970c08798c0df00bbda21acf165a370f9612e0d14ce69e5dd6c5c3" + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "18.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/groff-base-1.22.3-18.el8.aarch64.rpm", + "checksum": "sha256:8f2c073583d6d4347642139a9806174ba64848c6bd4fbc81b7e7e0d42751cc74" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-efi-aa64", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-efi-aa64-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:635d847cc4dec8a8e1b418adfda2bc0a9e1814ed6c2c6154a5430029d83abd24" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:2921d3aa14a509d271ca35256903c142c30f088f7dc889a4c4e15b26316ef5c0" + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-extra-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:4633c2b5a93723e1cad477b81f9ccefafed342f8c4474ec305058f99c713229d" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-minimal-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:126d980678e5b687c775cf857b4013306f1a761353370258a0f04d92a3553f92" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grubby-8.40-41.el8.aarch64.rpm", + "checksum": "sha256:5eddb5c1febbe6e58491f8e9ee8fc9897298b307e0357c01f49d445cf25283c9" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gzip-1.9-9.el8.aarch64.rpm", + "checksum": "sha256:e82699d15e4e6ff7825629d7c1c8a0f50a5519b6e5328472de91a0deddb9cf3d" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hardlink-1.3-6.el8.aarch64.rpm", + "checksum": "sha256:fc51460213b3bf5b67f08f2695aae8d728f614adbbacb917a0825e4ebfbc3e68" + }, + { + "name": "hdparm", + "epoch": 0, + "version": "9.54", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hdparm-9.54-2.el8.aarch64.rpm", + "checksum": "sha256:4059e9cccbde0401f9af4dea1160a07af8760adbc3e1d964e5c8ac87307eff81" + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.20", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hostname-3.20-6.el8.aarch64.rpm", + "checksum": "sha256:7fc33f147b99749fdbae420ed51277cb99d9b6418b7f739fe51c7563945bc0d7" + }, + { + "name": "hwdata", + "epoch": 0, + "version": "0.314", + "release": "8.5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hwdata-0.314-8.5.el8.noarch.rpm", + "checksum": "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ima-evm-utils-1.1-5.el8.aarch64.rpm", + "checksum": "sha256:cf8fdbfcd359aac8bf55500c24e6843baafe8fef35019126c3616806b41415b3" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/info-6.5-6.el8.aarch64.rpm", + "checksum": "sha256:3f7e5e72ab9e18dbca936b40734c91520242a49a9e98a2f2589f397faa6ad8e8" + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.00.8", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/initscripts-10.00.8-1.el8.aarch64.rpm", + "checksum": "sha256:f7de2bbb3653c3033d43f645ac26e91c788527c0b4d5e7238dea54c3adc6f1a1" + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.2.4", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ipcalc-0.2.4-4.el8.aarch64.rpm", + "checksum": "sha256:21685a7b79484a6d684efd86af6fb23dc13aaadc534cc4c4ae3edc0ceb84051b" + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.3.0", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iproute-5.3.0-5.el8.aarch64.rpm", + "checksum": "sha256:f4f5cc3080dc150c47b27383a344937fe17a679cb7046ca76165654d4e207a0b" + }, + { + "name": "iprutils", + "epoch": 0, + "version": "2.4.19", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iprutils-2.4.19-1.el8.aarch64.rpm", + "checksum": "sha256:4c6cf87b3ff6ea5b9eea8fa52906d42a634e7d6233ca3ec88c7b23da3745b9ea" + }, + { + "name": "ipset", + "epoch": 0, + "version": "7.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ipset-7.1-1.el8.aarch64.rpm", + "checksum": "sha256:da92fada5920a24577f614e1167e3b339d516ca646346c04c71ef2bd97295653" + }, + { + "name": "ipset-libs", + "epoch": 0, + "version": "7.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ipset-libs-7.1-1.el8.aarch64.rpm", + "checksum": "sha256:8ae407fb97bfa1bcd669f4263d0b45dd7fc7e97c1371cc4b8f4360024a56e7bb" + }, + { + "name": "iptables", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iptables-1.8.4-14.el8.aarch64.rpm", + "checksum": "sha256:bdcb042c2ff87e5c07685f70e04b051197199bd8465c5e26ceda82a13977d040" + }, + { + "name": "iptables-ebtables", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iptables-ebtables-1.8.4-14.el8.aarch64.rpm", + "checksum": "sha256:da671d59c65465dab426361abaaf42c3f3c0216e936cded295719e368066bc6b" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iptables-libs-1.8.4-14.el8.aarch64.rpm", + "checksum": "sha256:0fd7dd5b060e7533144ad7a3cae2453ad6f87650010f328879b10c7c4cba0c04" + }, + { + "name": "iputils", + "epoch": 0, + "version": "20180629", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iputils-20180629-2.el8.aarch64.rpm", + "checksum": "sha256:ebcaa2d2ec8ddaa66d042a208ccee6b13735ffba04fe3f326954cd76fa4f5910" + }, + { + "name": "irqbalance", + "epoch": 2, + "version": "1.4.0", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/irqbalance-1.4.0-4.el8.aarch64.rpm", + "checksum": "sha256:a445e982c81c7a64f6660f7f3bf6ed03dac3cd599dcb1e4bae06b8f236ea7e7f" + }, + { + "name": "iwl100-firmware", + "epoch": 0, + "version": "39.31.5.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl100-firmware-39.31.5.1-99.el8.1.noarch.rpm", + "checksum": "sha256:cf6220736fdd005ba7c67ccb5d5d8a1d9c35718e3c13e79c80967866968d7344" + }, + { + "name": "iwl1000-firmware", + "epoch": 1, + "version": "39.31.5.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl1000-firmware-39.31.5.1-99.el8.1.noarch.rpm", + "checksum": "sha256:1bc038693be7ccd59674c478176c3badce4a56f785dd0690548b087bcc7adaa1" + }, + { + "name": "iwl105-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl105-firmware-18.168.6.1-99.el8.1.noarch.rpm", + "checksum": "sha256:959fcb0016788a2b1ee55f0801c1490b196416579bc9ac9da9e38786e6c78ff6" + }, + { + "name": "iwl135-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl135-firmware-18.168.6.1-99.el8.1.noarch.rpm", + "checksum": "sha256:204e4dbaf357e12ff041c1c203b2527f7d178905ebae53db3c12e57d28fcbf46" + }, + { + "name": "iwl2000-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl2000-firmware-18.168.6.1-99.el8.1.noarch.rpm", + "checksum": "sha256:72fe0e1837aa503049fada31c6e8ae73a4e550be2ddfd73303fb84e955fcc268" + }, + { + "name": "iwl2030-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl2030-firmware-18.168.6.1-99.el8.1.noarch.rpm", + "checksum": "sha256:f8c30f90610f8cc907009df99348a5e572f5598aed91280c15af604ba62687b2" + }, + { + "name": "iwl3160-firmware", + "epoch": 1, + "version": "25.30.13.0", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl3160-firmware-25.30.13.0-99.el8.1.noarch.rpm", + "checksum": "sha256:5cbe058e6d2177f88006fed866e6b1565d6024a12c311ae8eaa21008f76074b1" + }, + { + "name": "iwl5000-firmware", + "epoch": 0, + "version": "8.83.5.1_1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl5000-firmware-8.83.5.1_1-99.el8.1.noarch.rpm", + "checksum": "sha256:b55b77fb38d84685cef6638240daa54235fce156176c820a3c3b980bf414c5f4" + }, + { + "name": "iwl5150-firmware", + "epoch": 0, + "version": "8.24.2.2", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl5150-firmware-8.24.2.2-99.el8.1.noarch.rpm", + "checksum": "sha256:252d46d58e0c02cbe2d2485488bd63ea7129964643787557eae832102541f84f" + }, + { + "name": "iwl6000-firmware", + "epoch": 0, + "version": "9.221.4.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl6000-firmware-9.221.4.1-99.el8.1.noarch.rpm", + "checksum": "sha256:56cc340c88cabacd9a329f80edee141154dbf84808894e43a937247394623cf0" + }, + { + "name": "iwl6000g2a-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl6000g2a-firmware-18.168.6.1-99.el8.1.noarch.rpm", + "checksum": "sha256:950b6b41580f4c35a108345c1c8d9d3930cc95a2c4fe4b726f02bce67532151d" + }, + { + "name": "iwl6050-firmware", + "epoch": 0, + "version": "41.28.5.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl6050-firmware-41.28.5.1-99.el8.1.noarch.rpm", + "checksum": "sha256:8eb3370fe641e329b03838e560f45ee290b273dcccfa182d97ad2dbff59b47fd" + }, + { + "name": "iwl7260-firmware", + "epoch": 1, + "version": "25.30.13.0", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl7260-firmware-25.30.13.0-99.el8.1.noarch.rpm", + "checksum": "sha256:1d28eaeaa59c48e4193c709dd2a6301c2f8701138164c05371a0d8f235d14c9c" + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.11", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/jansson-2.11-3.el8.aarch64.rpm", + "checksum": "sha256:c0f53020ecdb8eefb21795b0acf589334e89a9ef339a84d42e61999f53c67d18" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-c-0.13.1-0.2.el8.aarch64.rpm", + "checksum": "sha256:36aece7b7a65785985bf0b98701514f12735a87517b8578a3eb3710f82ba4765" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-glib-1.4.4-1.el8.aarch64.rpm", + "checksum": "sha256:1143ac623a74d7feaaaf293c18d942d243248f6356628f87216670c10d11687b" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-2.0.4-10.el8.aarch64.rpm", + "checksum": "sha256:10ac3bf7565725a55b0aef56f65befd0d320219fc83adfab6e564c19f8c44bd6" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "kernel", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-4.18.0-221.el8.aarch64.rpm", + "checksum": "sha256:0136940a3e28a159e7347b0bc7d1dbbc0339c64f431349e355f75abe31cbf21c" + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-core-4.18.0-221.el8.aarch64.rpm", + "checksum": "sha256:0d61e2dfcaed066e4ef74e4baddab9cdec24602aeb7a98306481f38cb5f449eb" + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-modules-4.18.0-221.el8.aarch64.rpm", + "checksum": "sha256:d74da38b942dc95929b21c8fcf2c5d2fb4468b78ed14e7a4bcbe933998be4deb" + }, + { + "name": "kernel-tools", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-tools-4.18.0-221.el8.aarch64.rpm", + "checksum": "sha256:3e40a3103fbf71c83773beac7373d0e790631cb3c918d8b20a883c8e65e70136" + }, + { + "name": "kernel-tools-libs", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-tools-libs-4.18.0-221.el8.aarch64.rpm", + "checksum": "sha256:5896ab6e22741dc47c8c70de8c72178e7956cfba2abbda9c6b4ebbc54921b636" + }, + { + "name": "kexec-tools", + "epoch": 0, + "version": "2.0.20", + "release": "29.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kexec-tools-2.0.20-29.el8.aarch64.rpm", + "checksum": "sha256:e1826902c98cca301a4e0876b34e6c77f1688a1fb613c265cea37e2ee40e7884" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/keyutils-libs-1.5.10-6.el8.aarch64.rpm", + "checksum": "sha256:e4ec1966f9bc7cbc898fe7550600ae3e9e4f8afbcdd3f6e74afe1965247653ba" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-25-16.el8.aarch64.rpm", + "checksum": "sha256:1091a799d34a42d2e42ac462b4f979a55d17513eca5a00bad9bdba56cca83357" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-libs-25-16.el8.aarch64.rpm", + "checksum": "sha256:6f87f305a3e0e0faf69c2a9d4f277958ca33e85b72c6e4f77a365a5f60ced3d3" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kpartx-0.8.4-2.el8.aarch64.rpm", + "checksum": "sha256:4a27cd4496ebdba821b3c7692eeb0c0fff28c6af69fe4fe9e4bf52511639bd6a" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/krb5-libs-1.18.2-3.el8.aarch64.rpm", + "checksum": "sha256:ca87249f90bac96902d18c11a1f8c80566fa090c6473226bdd147e07e3ed21ec" + }, + { + "name": "less", + "epoch": 0, + "version": "530", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/less-530-1.el8.aarch64.rpm", + "checksum": "sha256:551a506b43e32d21bf7b6333e028733956d5ef3560837a0c84b0d3e598efa046" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libacl-2.2.53-1.el8.aarch64.rpm", + "checksum": "sha256:7c014b54f7929348f614f8f4eb7a1552b8565c0a57f3a75ff6471dc05f30cafe" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libarchive-3.3.2-9.el8.aarch64.rpm", + "checksum": "sha256:dfdec57ff520511d1d4ef9d913d90fc8d6ac98685cbc12fb568c8980f2a73f1a" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libassuan-2.5.1-3.el8.aarch64.rpm", + "checksum": "sha256:0f1a02850c102e2a186787504f965c0c10d6432b9f600c18bc2f520e55f04a8c" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libattr-2.4.48-3.el8.aarch64.rpm", + "checksum": "sha256:6f2bfbe0f23d3b233aacb72c153ee133839353325f028321eb5ea38b0dc06c02" + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libbasicobjects-0.1.1-39.el8.aarch64.rpm", + "checksum": "sha256:030eef043bf4cfdffc0a672ca2c1499281fbcb78a81a98a9e932ba0b7c9ebb6b" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libblkid-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:d173b35182f28b9dd48e4a942f2a20c659bee2f9ac234b60cf8b995aa2421382" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-2.26-4.el8.aarch64.rpm", + "checksum": "sha256:2cddadff38ccef2364a7e40af0e1d9b3bf9c06869c15ceeb655f3cfa431c2083" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-ng-0.7.9-5.el8.aarch64.rpm", + "checksum": "sha256:62a2878605ca0415fd60adcff4c7068d855d20737498a968fabc646610ccbe5c" + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcollection-0.7.0-39.el8.aarch64.rpm", + "checksum": "sha256:9138a16731ceb7fdbb8661338a5806692a7a95875894aac95069104f44bca234" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcom_err-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:e5f82f102f51d88aa517bbebd170795a571b7ddc3036574b92b498cc13704d98" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcomps-0.1.11-4.el8.aarch64.rpm", + "checksum": "sha256:ff9fc6467a4c2fd0c22c419a9cdb7a524d1c69d0c87aa09f31728bef9f692f76" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcroco-0.6.12-4.el8.aarch64.rpm", + "checksum": "sha256:86ae7501bdf0149728879f488dd4c86907216cb5b021192347a5c10a55382931" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcurl-7.61.1-12.el8.aarch64.rpm", + "checksum": "sha256:2809ad51c6eb6c9a54d64cccc2cd948f6fd4207f32b4493b3f4a9bd0886c894b" + }, + { + "name": "libdaemon", + "epoch": 0, + "version": "0.14", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdaemon-0.14-15.el8.aarch64.rpm", + "checksum": "sha256:c7a1a166d4a58fd42848d05e4dd0d8bc459fa3b585396230729978f9cffc4474" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-5.3.28-39.el8.aarch64.rpm", + "checksum": "sha256:84e7102978d76d80aa40c43efcc71c1e54e819195132df921a8c13cec54328da" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-utils-5.3.28-39.el8.aarch64.rpm", + "checksum": "sha256:621e96e91103f2f701e4ac3b8b8b6ef9aab4db5ab8fb3e141eb02e3f328aed79" + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdhash-0.5.0-39.el8.aarch64.rpm", + "checksum": "sha256:afcbadced001b780cb7fc4c180b070acb48c2fff04783d6a4a35d08fae9928d0" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdnf-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:fac29887224d91e8190a569b3ac5be1168034f36c9c234576ea3cefe686e46cd" + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "23.20170329cvs.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libedit-3.1-23.20170329cvs.el8.aarch64.rpm", + "checksum": "sha256:b93a509fc65dd88761b4f7f21d8a05f1cd22e878ac59eb7d8e1507f5a2376a1e" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libevent-2.1.8-5.el8.aarch64.rpm", + "checksum": "sha256:058822931f4c34c18675116c1b02b718de4044c1019acb0d5f97417f00a30ba7" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libfdisk-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:d6aa17908468b5e2095526664fce6627dec7a02c26625339c14b9278cc39d4a6" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libffi-3.1-22.el8.aarch64.rpm", + "checksum": "sha256:4a40a1538c8a488f32476f96d2461c3b792eb0cf5acb998e397d8a9cef8e5461" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcc-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:3b607f0dbedecb25239e22c1f553c8d70db9d2206a877fa07567fa1a49e233d7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcrypt-1.8.5-4.el8.aarch64.rpm", + "checksum": "sha256:8498846918c7bc7a20553340434cfbfb0d19185adcd0ff52866c6506ab8f747d" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgomp-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:53fa2fd6a138d00c697b827a77bcc25ec498b1d49bb04ef80594e81ccabc165d" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgpg-error-1.31-1.el8.aarch64.rpm", + "checksum": "sha256:5a05f1126ed38f752af247dcdf7c958e738b935b8b6d942fd42f423768f05255" + }, + { + "name": "libgudev", + "epoch": 0, + "version": "232", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgudev-232-4.el8.aarch64.rpm", + "checksum": "sha256:bcd19fd35b5f8535ff5bb15db91e2339c9435908c1123d5e2272fcae15a62260" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libidn2-2.2.0-1.el8.aarch64.rpm", + "checksum": "sha256:2dc8e2f52451d1a11b16bbb389a24c58b61a1ba804ee777f9d06dbe4e1fcf6e5" + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libini_config-1.3.1-39.el8.aarch64.rpm", + "checksum": "sha256:09f390f3bf4dac907dfbc58b714d6c3de1ee7755a0ca5661b2f7c0a7dfbcfcff" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-1.2.0-2.el8.aarch64.rpm", + "checksum": "sha256:83301ca502322e0634173460bf8fa35572c36ab8cc2e6e600bf9980f845fc857" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.aarch64.rpm", + "checksum": "sha256:f07b1f40ebb1fbe5c24e68a38b5f768a21e2ec2254d4bd8ff61fb0bde72f64ce" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libksba-1.3.5-7.el8.aarch64.rpm", + "checksum": "sha256:704e1dc996a17815c6dcf7029c0ddb2849d40feaab6e9b9c687af9d95fef825c" + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.1.3", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libldb-2.1.3-2.el8.aarch64.rpm", + "checksum": "sha256:439c408eb3f33e9d8bea308afda0b32fadf7910f7b064c9821499332672a60cf" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmetalink-0.1.3-7.el8.aarch64.rpm", + "checksum": "sha256:fa80a7e82e231dc77b3e44edd2cbf5b3d1657e009e59f15bbe8d50a4290b7c82" + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmnl-1.0.4-6.el8.aarch64.rpm", + "checksum": "sha256:0f6d940ccddd815da01182de1e7b7e2d12c493125285ff7ee902843beefdec16" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmodulemd-2.9.4-2.el8.aarch64.rpm", + "checksum": "sha256:ba1364539f16d7c8379d7563fd0634651fa8a05b3f7098a21ba96e1f5641f132" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmount-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:26b14d8f226962ce712bbccfb245843759e835a24a139eacae86d680043a85a7" + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libndp-1.7-3.el8.aarch64.rpm", + "checksum": "sha256:abfda01b6d377de999efa9c2b4870bf3ba43cd50155f036d13aae0ba4a617565" + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.6", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnetfilter_conntrack-1.0.6-5.el8.aarch64.rpm", + "checksum": "sha256:16dd7121e6461d2c136f9f7330d8a60b88ed9ec77ac6824ac3ee7495acdb6800" + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "13.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnfnetlink-1.0.1-13.el8.aarch64.rpm", + "checksum": "sha256:e85c24b0e9d047763e2c8e673bb6dc579b55c650e8f19d14c9010f3dc5cd0ccd" + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.3.3", + "release": "35.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnfsidmap-2.3.3-35.el8.aarch64.rpm", + "checksum": "sha256:26e7368e961b374cefb947dab3a98387a3da15a86331a0d99d7b0e68ef246626" + }, + { + "name": "libnftnl", + "epoch": 0, + "version": "1.1.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnftnl-1.1.5-4.el8.aarch64.rpm", + "checksum": "sha256:db7899290e3f78a9cff3796d1181dc0ef3d837b3c80e715c7ca85e01a811093a" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.aarch64.rpm", + "checksum": "sha256:4874e739ed37bc6a5bfdb6069d4620e5f7efe01d60eb9fd2550c550167c99990" + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnl3-3.5.0-1.el8.aarch64.rpm", + "checksum": "sha256:8c0d40edf059bf044314df38c84e26cfbe00bf4e687a6114eacb17251718312b" + }, + { + "name": "libnl3-cli", + "epoch": 0, + "version": "3.5.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnl3-cli-3.5.0-1.el8.aarch64.rpm", + "checksum": "sha256:091c7cf9a81bc55f9d813c40904e1b7b4f8889df3584d0978e0f6770f01042e9" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.aarch64.rpm", + "checksum": "sha256:471663fca7e3f609834368d69d8f1f469cfc0d3f3e95dc2b79381722d0368edc" + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpath_utils-0.2.1-39.el8.aarch64.rpm", + "checksum": "sha256:9a22fe8cebacb37d6bc22105db763016689e9ac06bee33fc41693f60b076ff0c" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpcap-1.9.1-4.el8.aarch64.rpm", + "checksum": "sha256:435a2be84a2b38372965dbd60ffed0ed38a616b8100859787a8bb3b19d9fc4d9" + }, + { + "name": "libpciaccess", + "epoch": 0, + "version": "0.14", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpciaccess-0.14-1.el8.aarch64.rpm", + "checksum": "sha256:dd67a6470f4b71ef5782a4ef53e2a0a1485d8215a93a7f708a69cb2a514c373f" + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpipeline-1.5.0-2.el8.aarch64.rpm", + "checksum": "sha256:684080ec9230dce2d32c9b00ae381a00bb950d1984ed0b0e1c55fa6d75b6b099" + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.34", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpng-1.6.34-5.el8.aarch64.rpm", + "checksum": "sha256:1fbb9fed42dff3f9dbc9e4fd929281408f77506423424759c2ac57b76afc3cdb" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpsl-0.20.2-6.el8.aarch64.rpm", + "checksum": "sha256:6557d001315e85ac123b1378c5aafb81428e2383debcacf3f91c55476cfc48eb" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpwquality-1.4.0-9.el8.aarch64.rpm", + "checksum": "sha256:d6ab7c8790cd6c9a137d908d840c51c547e950d25f6ab8af3c9ad3899ff6c044" + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libref_array-0.1.5-39.el8.aarch64.rpm", + "checksum": "sha256:95630378635c5e89eb204b2921dbd5db2e87d949e167fcf022174a3e63b532cb" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librepo-1.12.0-1.el8.aarch64.rpm", + "checksum": "sha256:2d74e0ab14393921c6160fda8dd533b58c0348acdf5ee5c306ffc64221700de2" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libreport-filesystem-2.9.5-11.el8.aarch64.rpm", + "checksum": "sha256:e55bf252e792f27f076101e94dfbbac97dabeea0f7893a4cb9b111a0b72d187f" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librhsm-0.0.3-3.el8.aarch64.rpm", + "checksum": "sha256:e9487db2fdce1f494ee1582787a1afc1ea4e0429189db8be0ddbb0af2676c4b6" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libseccomp-2.4.3-1.el8.aarch64.rpm", + "checksum": "sha256:cc7e751a62f9a28b82df0bce0ecfb050364b8688ef69473f1910909e44c5eb98" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsecret-0.18.6-1.el8.aarch64.rpm", + "checksum": "sha256:c1b5c4668331e8b05a08e7de432cbfb75f8072401bb6651a24e43f64eff8dcc4" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-utils-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:c82ca1c0ef4b89f75e8e7edbbae4f3eeb2720a4abd56b0927928cff2d9721186" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsemanage-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:140146ebcbadd9b0f2aa5c2fcde5c93888f2d84ce61a2a4cf148ef435d1ba410" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsepol-2.9-1.el8.aarch64.rpm", + "checksum": "sha256:c8a28b4587888435c51f6d1ce42f48b08fb0256e4029ea569e9a02adcb82c85a" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsigsegv-2.11-5.el8.aarch64.rpm", + "checksum": "sha256:bf267d9571cf568375e261d593236750f400ac536c1c818513106482ebc3fb10" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsmartcols-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:f35c0da3cff05ded33c0cb4f202dbb52a5caabec8b1897d5057df83c284d62f1" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsolv-0.7.11-1.el8.aarch64.rpm", + "checksum": "sha256:2397506a63455e543b201938f605e687de5590d9a06282824e2f6bfdf5e0f149" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libss-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:268d9232f0853037100432e9363c659cf99927e03f759fd4884643b560710cd6" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-0.9.4-2.el8.aarch64.rpm", + "checksum": "sha256:3ee6a4f61935c2f0698ad2c4834a5864920a1e48d55c7800da7c382249895e39" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_autofs-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:0f2c07acd21a998f0a4b2a569ebfd143b889d6a5105541b2393dab96cd027a10" + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_certmap-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:a213587722f7c8a0291a56f352861ec661604051c952ebf6a428ae969af377d0" + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_idmap-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:2180d7f1748a5049763d5626b8e14b2c7442e5491a63094a79dded66bcc5c7b0" + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_nss_idmap-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:1657e36d9213739cfef8bacc8876153692f5a5b4d87dd5dde86ad182dd63ca1b" + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_sudo-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:0ac8999f5ebca6b808973d0db5038a835daa2358af1007e9cb972b0e96eae217" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libstdc++-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:f4e63e7eedc0266a575eb6107f41c5f20ca0505a0e80145c21b9741674d5c0b5" + }, + { + "name": "libsysfs", + "epoch": 0, + "version": "2.1.0", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsysfs-2.1.0-24.el8.aarch64.rpm", + "checksum": "sha256:fd202f857b3c5a15b8f66f86fd515c44a47c87c028d7db766661758dc3673436" + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.1", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtalloc-2.3.1-2.el8.aarch64.rpm", + "checksum": "sha256:d2efb494bd4793fdcaaad35a66d7721df7ec53b6fc8da4fa8c8f24008533f38a" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtasn1-4.13-3.el8.aarch64.rpm", + "checksum": "sha256:ed28e1e31109e27ce1c676914364c9f1dd46b71d00cb4cf13931f0fec6cf6978" + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtdb-1.4.3-1.el8.aarch64.rpm", + "checksum": "sha256:ed8e018fb3a2ae3243b047b7f25cd7bd0b5b73abc6f254de3a7d13a6a568e4a4" + }, + { + "name": "libteam", + "epoch": 0, + "version": "1.29", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libteam-1.29-5.el8.aarch64.rpm", + "checksum": "sha256:5801caf2cc296b52b3b89b24eaf431fba2c130e948076aaf345988a754cca65c" + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.2", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtevent-0.10.2-2.el8.aarch64.rpm", + "checksum": "sha256:1eff42ff409079d679c7777483d476f3261a2881b456b6280e81f7903a0cd499" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtirpc-1.1.4-4.el8.aarch64.rpm", + "checksum": "sha256:481bbd6d73415d437a73eee7977ec370299acdac44b215a026652debba31783d" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libunistring-0.9.9-3.el8.aarch64.rpm", + "checksum": "sha256:da4b9bfad26d559485ade669556512acfe93ba23d204f2556bac82c09401b4e7" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libusbx-1.0.23-3.el8.aarch64.rpm", + "checksum": "sha256:01e486a3be67325e9692e909f5c6534137ee6a6df185ba2c09d4d50fe6c738f6" + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "23.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libuser-0.62-23.el8.aarch64.rpm", + "checksum": "sha256:9a9546fcc510204dc7bcfe61d6ca63f436c01cd9b3f8451c8f07ec4f4fc2ba68" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libutempter-1.1.6-14.el8.aarch64.rpm", + "checksum": "sha256:ad07261ff4f478be9511f7ee749bfbe8b2ba8e28696c2f561caa20e35c535134" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libuuid-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:95de1777f7e8a734445c5d45e0b77da8b6c41a9b504582ed266d852c677a936b" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libverto-0.3.0-5.el8.aarch64.rpm", + "checksum": "sha256:532d46a4c0e68bd45eabc3e2ba6d570880344044e1034f5f347b37c470d0dced" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxcrypt-4.1.1-4.el8.aarch64.rpm", + "checksum": "sha256:876ffb285aaeddb2c18ae32527bd4ee202710bd8e18d5b410af22937646dcdec" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxml2-2.9.7-8.el8.aarch64.rpm", + "checksum": "sha256:fb56b7a416e12da0782ae8ba7396bc03a2f8844c2efcb5df3f8b9e74eb8b8059" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libyaml-0.1.7-5.el8.aarch64.rpm", + "checksum": "sha256:7864fbc866ae5a3e59b4f0f114b77ff52b55e76c5388a917f82a6097f02a4db7" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libzstd-1.4.4-1.el8.aarch64.rpm", + "checksum": "sha256:19d1de27d2f62b4a55735233807f70a1e8ff7551fed97ee8650dbd09c1ef50ea" + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20200619", + "release": "99.git3890db36.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/linux-firmware-20200619-99.git3890db36.el8.noarch.rpm", + "checksum": "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9" + }, + { + "name": "logrotate", + "epoch": 0, + "version": "3.14.0", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/logrotate-3.14.0-4.el8.aarch64.rpm", + "checksum": "sha256:0cbb121302cc38ac16f8f9bd5ea8bd3ce3e2121f6c25c985b66bd29a532f2f7c" + }, + { + "name": "lshw", + "epoch": 0, + "version": "B.02.19.2", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lshw-B.02.19.2-2.el8.aarch64.rpm", + "checksum": "sha256:01d5881b441b015ac394e66fb27dbc5cb11befc8080973208806257ecee2d12d" + }, + { + "name": "lsscsi", + "epoch": 0, + "version": "0.30", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lsscsi-0.30-1.el8.aarch64.rpm", + "checksum": "sha256:6cf02dd99fda867d11fdbb28fe0a277328319aece74b864133a8774cacd2bf54" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lua-libs-5.3.4-11.el8.aarch64.rpm", + "checksum": "sha256:bc0f9bd34ac6a01dd7272b87e1b7a33045ff8c6793cac02fa639dfc9341e8215" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lz4-libs-1.8.3-2.el8.aarch64.rpm", + "checksum": "sha256:64ac5cb6fd3da1610812795ce17e09648d89c87513d6284b852a3455b0831d3a" + }, + { + "name": "lzo", + "epoch": 0, + "version": "2.08", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lzo-2.08-14.el8.aarch64.rpm", + "checksum": "sha256:f237a314daeeb228f767e1521edffa9e9b15b07695ba1008b0f2b6807085b9cb" + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.7.6.1", + "release": "17.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/man-db-2.7.6.1-17.el8.aarch64.rpm", + "checksum": "sha256:60934825531d0364649b0441321d12e8823336d54550007258d7523286d2fa2e" + }, + { + "name": "mokutil", + "epoch": 1, + "version": "0.3.0", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mokutil-0.3.0-9.el8.aarch64.rpm", + "checksum": "sha256:aeda2c664e2d993e56008f68823d05ec6d7665f2bb65b5f990c2112f0a7f91cb" + }, + { + "name": "mozjs60", + "epoch": 0, + "version": "60.9.0", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mozjs60-60.9.0-4.el8.aarch64.rpm", + "checksum": "sha256:10a83db8ac5065869be834bf6ec61185eded982f885def5979948736e5c3ab95" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mpfr-3.1.6-1.el8.aarch64.rpm", + "checksum": "sha256:320ced09e242f09047f4fab0a7f66aba6de2e42583f6a2e164eadcc1ffd0b915" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-6.1-7.20180224.el8.aarch64.rpm", + "checksum": "sha256:8ac1003d722e3d5f383c9b970bf6dfbc905007a624abadb63e520d7a93993747" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-libs-6.1-7.20180224.el8.aarch64.rpm", + "checksum": "sha256:f99f5edde9ad4574b84264c467420c910b31f78683fbf1b63d106a7e6c9d64a3" + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.52.20160912git.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/net-tools-2.0-0.52.20160912git.el8.aarch64.rpm", + "checksum": "sha256:edba68c63891b1171417b8d3af5827cc45a37210d18d701c0e178870e5435031" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/nettle-3.4.1-2.el8.aarch64.rpm", + "checksum": "sha256:e2c4ac0f7abf75cbcc7a6fb35412820c267f1a8ce614f41b60d901918c4616d5" + }, + { + "name": "newt", + "epoch": 0, + "version": "0.52.20", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/newt-0.52.20-11.el8.aarch64.rpm", + "checksum": "sha256:f6df1feba76d87214433eee205e3b99621dcd78b485ed5f99ba2658117786b6c" + }, + { + "name": "nftables", + "epoch": 1, + "version": "0.9.3", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/nftables-0.9.3-14.el8.aarch64.rpm", + "checksum": "sha256:9da7de3dd0a487abf1bbfb0c9de0b491102fe0796e53a47ee4414003a8b51f33" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/npth-1.5-4.el8.aarch64.rpm", + "checksum": "sha256:daf36ee86ec6001770ae68bdd82409526faf4b9b1313a6b74fb54cfb98ff571e" + }, + { + "name": "numactl-libs", + "epoch": 0, + "version": "2.0.12", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/numactl-libs-2.0.12-11.el8.aarch64.rpm", + "checksum": "sha256:c59a19d44466633bf19e18463ece1ec20cdeae962f1ea3613bd09a2ffb160318" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openldap-2.4.46-15.el8.aarch64.rpm", + "checksum": "sha256:cfa188d39884fd4ba36d27e8fb25aed9dbd26efccffbfd01a24c2c580fdb96f1" + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-8.0p1-5.el8.aarch64.rpm", + "checksum": "sha256:af98260ff2c263c9cefcb96d16d200941c1873cda9868b57df51b034066940fe" + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-clients-8.0p1-5.el8.aarch64.rpm", + "checksum": "sha256:bd03a8a056bc9d2df361688583521f5f656e83fc893b90d349b6282178f9330b" + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-server-8.0p1-5.el8.aarch64.rpm", + "checksum": "sha256:b35f92dddd2cd73f7f8d8595ebb197a1c67a214ec2acf960ac673a014f2d9b90" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-1.1.1g-9.el8.aarch64.rpm", + "checksum": "sha256:3ef63ecbebf844bcf682c9482dc0ddd158c955b0f066b62eb9575bb9a9642db5" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-libs-1.1.1g-9.el8.aarch64.rpm", + "checksum": "sha256:448d3ff44e7f32f3b33e891180e248dc1bcd4d410f68015a8b0c30dc7c385aca" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-pkcs11-0.4.10-2.el8.aarch64.rpm", + "checksum": "sha256:290c83afcd2b0a2b17aab95cf72a85da5f8b9f9a9862857c919a0f43e3fce70e" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/os-prober-1.74-6.el8.aarch64.rpm", + "checksum": "sha256:43ab42c8a58267936a89da99e37d3b9fc56489e958060f600ba047445ca44ee3" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-0.23.14-5.el8_0.aarch64.rpm", + "checksum": "sha256:651f38873d3356ec4efb27d04658541080d11cf1ece6335a07db1ca089fa7da3" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.aarch64.rpm", + "checksum": "sha256:ec40be9e0b2bb03f7b057a7a9342ffbd86129d58828fb310f445bc506261eb0e" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pam-1.3.1-11.el8.aarch64.rpm", + "checksum": "sha256:04c031a07bde4360484a0180e832036d3ac45a95c4839e54d7a02423df5485ef" + }, + { + "name": "parted", + "epoch": 0, + "version": "3.2", + "release": "38.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/parted-3.2-38.el8.aarch64.rpm", + "checksum": "sha256:2b6d1fbf6f54f06c168862e19e03aa0ce32c299fb3f7e4cd1bf4aa9df4b4d995" + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/passwd-0.80-3.el8.aarch64.rpm", + "checksum": "sha256:8e916224ddbb8a7d8cd305f11087c66df950a318e4ef64290bca1afdc1327950" + }, + { + "name": "pciutils-libs", + "epoch": 0, + "version": "3.6.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pciutils-libs-3.6.4-2.el8.aarch64.rpm", + "checksum": "sha256:6b14c3aa52da9a2eae13f2229bac41060ad7421ce5249eca80f4aa53e26344ab" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre-8.42-4.el8.aarch64.rpm", + "checksum": "sha256:fea4eb54fe59451b76fb40b9bd15ff41f0f51bb7371f94b2f5df572ef917d037" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre2-10.32-2.el8.aarch64.rpm", + "checksum": "sha256:ce8c92fa2bef1770f44992db24e1cb8cc850feab03a74cf0ebf741ecb0d160ea" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pigz-2.4-4.el8.aarch64.rpm", + "checksum": "sha256:f847957437e7f24844930c4a3ff64c5f7877f083553f48eeadca3c5f5e5c728e" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-3.6.8-30.el8.aarch64.rpm", + "checksum": "sha256:68593fad4413255772bd08ed7f8b578332f0f53e002c8c7473d90c966a87131b" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/policycoreutils-2.9-9.el8.aarch64.rpm", + "checksum": "sha256:b90ce065d5ea98845733ff06e47d385937f6293ebddf52144c80f5fe1f296307" + }, + { + "name": "polkit", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/polkit-0.115-11.el8.aarch64.rpm", + "checksum": "sha256:3f8039ed081aa3f628e947656af825b4541ded3547675098eabb0f177eca45e7" + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/polkit-libs-0.115-11.el8.aarch64.rpm", + "checksum": "sha256:861346b2e683c09a53c9418a9ed08faf7448e066e3111482c70722cb62a6edce" + }, + { + "name": "polkit-pkla-compat", + "epoch": 0, + "version": "0.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/polkit-pkla-compat-0.1-12.el8.aarch64.rpm", + "checksum": "sha256:4a7d4068f39dbb01d7f707f9912abfddcc065a62b66144eeb7b7e2f13cec68af" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/popt-1.16-14.el8.aarch64.rpm", + "checksum": "sha256:4e4923f05d0032263d570075b9b832b9fc3550cd8f82f9a6b0b9b25061726110" + }, + { + "name": "prefixdevname", + "epoch": 0, + "version": "0.1.0", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/prefixdevname-0.1.0-6.el8.aarch64.rpm", + "checksum": "sha256:6c3ee8b53c0af9bd4958b4e48d4d55fa7c574f444fb42eead1508ad740f97088" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/procps-ng-3.3.15-2.el8.aarch64.rpm", + "checksum": "sha256:d890d028f59e2553730fad3dbea0e1a245c92c24836513fa2281194b1c90b53a" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-asn1crypto", + "epoch": 0, + "version": "0.24.0", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-asn1crypto-0.24.0-3.el8.noarch.rpm", + "checksum": "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34" + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-audit-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm", + "checksum": "sha256:48509ce37ec06c1b15149feec4b2eb5d3a2f0453a41804c9c5d9ef5b8b320d4f" + }, + { + "name": "python3-cffi", + "epoch": 0, + "version": "1.11.5", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-cffi-1.11.5-5.el8.aarch64.rpm", + "checksum": "sha256:c00024ec890b67b443e2c40a0580a1263458dc9d09f4bde578d7c045323946b1" + }, + { + "name": "python3-chardet", + "epoch": 0, + "version": "3.0.4", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-chardet-3.0.4-7.el8.noarch.rpm", + "checksum": "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786" + }, + { + "name": "python3-configobj", + "epoch": 0, + "version": "5.0.6", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-configobj-5.0.6-11.el8.noarch.rpm", + "checksum": "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367" + }, + { + "name": "python3-cryptography", + "epoch": 0, + "version": "2.3", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-cryptography-2.3-3.el8.aarch64.rpm", + "checksum": "sha256:a5c6189b8644cea4d4039375dfe2d828e08a59896e9827ac967782d225a78619" + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.6.1", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm", + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.4", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dbus-1.2.4-15.el8.aarch64.rpm", + "checksum": "sha256:8329bf1aedce9ef3a4d7513ef98d3931ad39b84d5c3e73e99936c7f9b87931c2" + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.2.1", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm", + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dnf-plugins-core-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87" + }, + { + "name": "python3-ethtool", + "epoch": 0, + "version": "0.14", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-ethtool-0.14-3.el8.aarch64.rpm", + "checksum": "sha256:4fe7733b93fad52a48d4b47a6dc55582f3cc41fc2074e42a9b39fc5d407df6d3" + }, + { + "name": "python3-firewall", + "epoch": 0, + "version": "0.8.2", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-firewall-0.8.2-1.el8.noarch.rpm", + "checksum": "sha256:c9b3c6dcb4133c3051e3f75978f994aae4c0ad84dd1abbae7fcba497ee524603" + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.28.3", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-gobject-base-3.28.3-2.el8.aarch64.rpm", + "checksum": "sha256:31043a7324411dad6b84f6504a9e9cb7ece9f576acf091be522e484c8b82f469" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-gpg-1.13.1-3.el8.aarch64.rpm", + "checksum": "sha256:90405803c0159cdf0f74a26b6ce064cfd9973e59232b2923ed171a38fc5684a6" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-hawkey-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:4909edde46b5b2b58d228bacafa3bab5bc5847559d591d59ecd59cdf50d36db4" + }, + { + "name": "python3-idna", + "epoch": 0, + "version": "2.5", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-idna-2.5-5.el8.noarch.rpm", + "checksum": "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20" + }, + { + "name": "python3-iniparse", + "epoch": 0, + "version": "0.4", + "release": "31.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm", + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "name": "python3-inotify", + "epoch": 0, + "version": "0.9.6", + "release": "13.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm", + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "name": "python3-jwt", + "epoch": 0, + "version": "1.6.1", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-jwt-1.6.1-2.el8.noarch.rpm", + "checksum": "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libcomps-0.1.11-4.el8.aarch64.rpm", + "checksum": "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libdnf-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:9b6fcdd19caee5fe77b9ed17adb3f11769a7109ebcf52d3cb3358d5a9eecc391" + }, + { + "name": "python3-librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-librepo-1.12.0-1.el8.aarch64.rpm", + "checksum": "sha256:b386b3ec3cb96fe9178fd1d2b245eddff0bdb2742a8f18e25faef1e98c00f42f" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libs-3.6.8-30.el8.aarch64.rpm", + "checksum": "sha256:65b8d755ff01dfefa423d2f0bd6fd54cfc4c580da63510e19cf178abb6e26172" + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libselinux-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:9c416279320ab29a8ef4fc32ca60beaec4c8da6054d10695cd2b37af19cd0ee9" + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libsemanage-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:b9ceb537921c8d98f1e874c0a39cf0c6a606f469be21be151fa119e4b9c7f06a" + }, + { + "name": "python3-linux-procfs", + "epoch": 0, + "version": "0.6.2", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-linux-procfs-0.6.2-2.el8.noarch.rpm", + "checksum": "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f" + }, + { + "name": "python3-nftables", + "epoch": 1, + "version": "0.9.3", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-nftables-0.9.3-14.el8.aarch64.rpm", + "checksum": "sha256:70c05e5512e85231b490c1aa9c0e7eeb7f9a09c34d1253c3aa1db0b8db6be974" + }, + { + "name": "python3-oauthlib", + "epoch": 0, + "version": "2.1.0", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-oauthlib-2.1.0-1.el8.noarch.rpm", + "checksum": "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6" + }, + { + "name": "python3-perf", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-perf-4.18.0-221.el8.aarch64.rpm", + "checksum": "sha256:3c096d861c04f97c89dcf335d66a169bca3d371d9589e547c50f18b4180a9e6f" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-ply", + "epoch": 0, + "version": "3.9", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-ply-3.9-8.el8.noarch.rpm", + "checksum": "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9" + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-policycoreutils-2.9-9.el8.noarch.rpm", + "checksum": "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42" + }, + { + "name": "python3-pycparser", + "epoch": 0, + "version": "2.14", + "release": "14.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pycparser-2.14-14.el8.noarch.rpm", + "checksum": "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf" + }, + { + "name": "python3-pysocks", + "epoch": 0, + "version": "1.6.8", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pysocks-1.6.8-3.el8.noarch.rpm", + "checksum": "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280" + }, + { + "name": "python3-pyudev", + "epoch": 0, + "version": "0.21.0", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pyudev-0.21.0-7.el8.noarch.rpm", + "checksum": "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde" + }, + { + "name": "python3-pyyaml", + "epoch": 0, + "version": "3.12", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pyyaml-3.12-12.el8.aarch64.rpm", + "checksum": "sha256:0265d8b987f411738f3b53bd1f84386955704122e20ece4eb232a0df89ff62f0" + }, + { + "name": "python3-requests", + "epoch": 0, + "version": "2.20.0", + "release": "2.1.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-requests-2.20.0-2.1.el8_1.noarch.rpm", + "checksum": "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-rpm-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:b5b1f5f7a02f70db056861813ddcf181f2ebba507cd368fbe2c32f262edf7fc6" + }, + { + "name": "python3-schedutils", + "epoch": 0, + "version": "0.6", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-schedutils-0.6-6.el8.aarch64.rpm", + "checksum": "sha256:a05f9b43292810dde4e6acd64eac2a80f047d35533d2d5e647565f75502189fa" + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.3.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setools-4.3.0-1.el8.aarch64.rpm", + "checksum": "sha256:342d7cd5f427c0d9c02336bc4f189225b3b57c5899f5d26b61b351fc37f99489" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.11.0", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm", + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "name": "python3-slip", + "epoch": 0, + "version": "0.6.4", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-slip-0.6.4-11.el8.noarch.rpm", + "checksum": "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb" + }, + { + "name": "python3-slip-dbus", + "epoch": 0, + "version": "0.6.4", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-slip-dbus-0.6.4-11.el8.noarch.rpm", + "checksum": "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d" + }, + { + "name": "python3-subscription-manager-rhsm", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-subscription-manager-rhsm-1.27.9-1.el8.aarch64.rpm", + "checksum": "sha256:d868f3e9b48e1acc5c7674292619f1e80a2a2617aa1ab75d7cb4665495bdc654" + }, + { + "name": "python3-syspurpose", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-syspurpose-1.27.9-1.el8.aarch64.rpm", + "checksum": "sha256:6d46339afc3d65beb89cbb36052e779e95ef2448a163d26db13d67715dad9cf8" + }, + { + "name": "python3-urllib3", + "epoch": 0, + "version": "1.24.2", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-urllib3-1.24.2-4.el8.noarch.rpm", + "checksum": "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/readline-7.0-10.el8.aarch64.rpm", + "checksum": "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-8.3-0.2.el8.aarch64.rpm", + "checksum": "sha256:a6292dd846bc471b22409fc95a5e09c88bcb6176251dc5cc11f4b14a73ddda11" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-eula-8.3-0.2.el8.aarch64.rpm", + "checksum": "sha256:784d385116891056b618722c933d43c5b395b92fa82e5bc797081317ec6a82ba" + }, + { + "name": "rng-tools", + "epoch": 0, + "version": "6.8", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rng-tools-6.8-3.el8.aarch64.rpm", + "checksum": "sha256:13471e37bb0089a322183fc9e7a53948f0b203b54277630e75606a835268ad5d" + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "22.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rootfiles-8.1-22.el8.noarch.rpm", + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:47b483c0f556c56f0b1f468603c57834864902ae5a849a18c8a0ca5f76d66c86" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-build-libs-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:c633b98b4dbf96674a69573404819c34d66eb7e19820283fc588f6b10b0e3fc8" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-libs-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:d3fb5a473c44cd8ae6b94d6bf3fc552553d8f4ef28eed439658ea38990ab9db5" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:0a885c6dc6abd969b828bf2fd7063ee884e6d058eaf405b02f3dd6efb6c66bac" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:0bb7024125ca67119612e55a92da13c989e0306ddd7de7e655a679c963939ef7" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sed-4.5-2.el8.aarch64.rpm", + "checksum": "sha256:125c92f23d87b905c21e9f7669f0ec6e41428ab63c8c13f63db8980f292797d5" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "sg3_utils", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sg3_utils-1.44-5.el8.aarch64.rpm", + "checksum": "sha256:4a308727d8b5a3d4cbbbc7d9b07884ebf6a37b4b6eb9a8edab5b61f449142285" + }, + { + "name": "sg3_utils-libs", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sg3_utils-libs-1.44-5.el8.aarch64.rpm", + "checksum": "sha256:a93b90699f26009debf0ac7b6759daf23afa9f3c851ccd7c98e35d9a89824dcb" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shadow-utils-4.6-10.el8.aarch64.rpm", + "checksum": "sha256:a840b8193ce9b1b72e3783b9a9bb2ec91947ba3b6f7ac973ae8e0e20a7059117" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shared-mime-info-1.9-3.el8.aarch64.rpm", + "checksum": "sha256:19cd894b4154d1a8521c6884cfd2a6eaf1f498b7dec5cc31408f8535b9098f2a" + }, + { + "name": "shim-aa64", + "epoch": 0, + "version": "15", + "release": "12", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shim-aa64-15-12.aarch64.rpm", + "checksum": "sha256:b83b5cb8c799dea710e0fffc841abf88495a1f3d04057dd699cff2aac610d7d9" + }, + { + "name": "slang", + "epoch": 0, + "version": "2.3.2", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/slang-2.3.2-3.el8.aarch64.rpm", + "checksum": "sha256:8d5c968225f0a3b7c492fdffb57cf0e34fee77c06a64a94a3a8b52edab30eed7" + }, + { + "name": "snappy", + "epoch": 0, + "version": "1.1.7", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/snappy-1.1.7-5.el8.aarch64.rpm", + "checksum": "sha256:df1f1d61216be55ab9cadc9832e613ffd2350ca8dc03e27f537f22dc0f32e171" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sqlite-libs-3.26.0-10.el8.aarch64.rpm", + "checksum": "sha256:207e6396488c1db18fb7b1f2b9952f48c2625f042c5f6a901d41974ce376b0e0" + }, + { + "name": "squashfs-tools", + "epoch": 0, + "version": "4.3", + "release": "19.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/squashfs-tools-4.3-19.el8.aarch64.rpm", + "checksum": "sha256:6421426a896c0bf32738af8131c37001e532f62ac1242f63ebf6248ea34533b0" + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sssd-client-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:2bbb8eebf42b0f55d735c0f84e2521c339febc7036f2e94332ff013d7406b80a" + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sssd-common-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:428af99d7ff753fc26a13130115c4dcbbac030776a299583d00c69e8ec6a13ca" + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sssd-kcm-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:2cfc9f7d8286002d753d12aa9669522222466c5e1e3f10ed81c8d4d23a3e203c" + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sssd-nfs-idmap-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:6149e0dc3def62605315cbbe59d63b5ca340a791b4c6d3b4d0bda6efee7572f8" + }, + { + "name": "subscription-manager", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/subscription-manager-1.27.9-1.el8.aarch64.rpm", + "checksum": "sha256:4efe61bac45e15b3b1bfda93bf3cfbf72d49c7f0452737d01f12f49b6e624175" + }, + { + "name": "subscription-manager-rhsm-certificates", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/subscription-manager-rhsm-certificates-1.27.9-1.el8.aarch64.rpm", + "checksum": "sha256:2df37064ec55f10e06dc0c05647a296b8ca7867251fe44130206052e58d39bda" + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.8.29", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sudo-1.8.29-6.el8.aarch64.rpm", + "checksum": "sha256:432ef41fd5f9ad2b9a797ed105f6e729dcaf19c17df9c1478802af04e898e305" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-239-36.el8.aarch64.rpm", + "checksum": "sha256:d4467ba499fe1ddd82746ad00d7e86bea59c4827fe1ff8c05132bad1f93ddb7f" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-libs-239-36.el8.aarch64.rpm", + "checksum": "sha256:800c9a0d718c641ceee26c8f625b2dcd79a33963e9e7a11930678dc99582a2d0" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-pam-239-36.el8.aarch64.rpm", + "checksum": "sha256:986683a0edb615a5d45a9c1b0ee3d27f8032c2667cad58d24526085e41010992" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-udev-239-36.el8.aarch64.rpm", + "checksum": "sha256:3fe7c10c144c8fffc00d144317a2bf8029bd9d048432bccfc352dfc6f0995680" + }, + { + "name": "teamd", + "epoch": 0, + "version": "1.29", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/teamd-1.29-5.el8.aarch64.rpm", + "checksum": "sha256:32c9ff3e0278dbd7022ad76629146ece3fffdc58af14e1eaf97e7052d610daa2" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-0.3.14-4.el8.aarch64.rpm", + "checksum": "sha256:d695df94220c2ef990e502123b3bd8ede8fcfb4f738346dd98d999559b01b6b3" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-lib-0.3.14-4.el8.aarch64.rpm", + "checksum": "sha256:fb263177eee60c26b7acaa76cb640c3d7ab6928e73c8af80b2111a247bd61ece" + }, + { + "name": "tuned", + "epoch": 0, + "version": "2.14.0", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tuned-2.14.0-2.el8.noarch.rpm", + "checksum": "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "usermode", + "epoch": 0, + "version": "1.113", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/usermode-1.113-1.el8.aarch64.rpm", + "checksum": "sha256:1bc21785bc6f66d6fcc29cd62f2cdd3584f3f8ea6321db4c27251b192f468433" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/util-linux-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:83e470505f558f8cf8414a7fc8fb0d1bc4b16ed15d05ccf7e46332b04d1a0d85" + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.0.1763", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/vim-minimal-8.0.1763-15.el8.aarch64.rpm", + "checksum": "sha256:1956304761f23c6661b831d33a3539b82384636db4113cccd19321b36a3a8415" + }, + { + "name": "virt-what", + "epoch": 0, + "version": "1.18", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/virt-what-1.18-6.el8.aarch64.rpm", + "checksum": "sha256:b6946db91c0a0b5e39427db028815391dd1e8c7a04faf98bc1031b5490034790" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/which-2.21-12.el8.aarch64.rpm", + "checksum": "sha256:0f32d23a6b2b15603d710b0317238ef8dde3de61eda96713e21d86c9fc7a98ed" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xfsprogs-5.0.0-4.el8.aarch64.rpm", + "checksum": "sha256:760d9056891a60c200984f0655aee1876b3bf890f7486306c05db8e295ae7843" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-5.2.4-3.el8.aarch64.rpm", + "checksum": "sha256:e426534c59b3a35068877d324dd34d643ad7c84d2c406b2e6502ac6c2a367d39" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-libs-5.2.4-3.el8.aarch64.rpm", + "checksum": "sha256:094eff70081085f87a7ac0dedafa851ad8ac8e03f9f328636df4a0f8301d0e87" + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/yum-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/zlib-1.2.11-15.el8.aarch64.rpm", + "checksum": "sha256:cf9a0bbaa7bd075d2af532586ee93ab92b96d9859f53a57f85cd7e0309f8fff6" + }, + { + "name": "alsa-lib", + "epoch": 0, + "version": "1.2.3.2", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/alsa-lib-1.2.3.2-1.el8.aarch64.rpm", + "checksum": "sha256:279529f5c16e8e84ddfa87c0d29d35cde6fac7e7a0b9de2c4e92b96ccb5d3319" + }, + { + "name": "cloud-init", + "epoch": 0, + "version": "19.4", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/cloud-init-19.4-7.el8.noarch.rpm", + "checksum": "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2" + }, + { + "name": "dnf-plugin-spacewalk", + "epoch": 0, + "version": "2.8.5", + "release": "11.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b" + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm", + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm", + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "name": "langpacks-en", + "epoch": 0, + "version": "1.0", + "release": "12.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/langpacks-en-1.0-12.el8.noarch.rpm", + "checksum": "sha256:38affe91361bf56b84490d97c7e3f815965cf8d2bbb222c6c045af4bf2dff736" + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.8", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libX11-1.6.8-3.el8.aarch64.rpm", + "checksum": "sha256:49258c6900ab6f3eaa5f7c7515fcf0a7d604af9d99e7d5f72be7bc75e00a844a" + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.8", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libX11-common-1.6.8-3.el8.noarch.rpm", + "checksum": "sha256:593d4df5b8de12ed0ec5a0935cb0bd966e27a631aa0806250ba9f67092ad737f" + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libXau-1.0.9-3.el8.aarch64.rpm", + "checksum": "sha256:5176881bae429bec5136195c73b402081184ae2a35519673031a075e855f75f4" + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libXext-1.3.4-1.el8.aarch64.rpm", + "checksum": "sha256:740e25055db923edcb8a0bddebc688de61a17c6b738162163e9b569e0cda1e18" + }, + { + "name": "libXfixes", + "epoch": 0, + "version": "5.0.3", + "release": "7.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libXfixes-5.0.3-7.el8.aarch64.rpm", + "checksum": "sha256:cbf25aa7faf9114e9735dbc120fb8fdda1694c86ab24c204383faf484720ee58" + }, + { + "name": "libXinerama", + "epoch": 0, + "version": "1.1.4", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libXinerama-1.1.4-1.el8.aarch64.rpm", + "checksum": "sha256:2a9a97f4ff381c061f075608ef3b1fed18ce11a07acd84a74160540e426f1723" + }, + { + "name": "libXrandr", + "epoch": 0, + "version": "1.5.2", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libXrandr-1.5.2-1.el8.aarch64.rpm", + "checksum": "sha256:af3adfdba9b6ca2e6e8a57d60b64e11994bb6dbdcd63d03492c29c763b8f22c2" + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "7.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libXrender-0.9.10-7.el8.aarch64.rpm", + "checksum": "sha256:92bc3c29b5232c55f60c9d0a5426bb04675209b8ee87df5725a83a60944219cb" + }, + { + "name": "libdrm", + "epoch": 0, + "version": "2.4.101", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libdrm-2.4.101-1.el8.aarch64.rpm", + "checksum": "sha256:9a13d64325d59ec40093eaa8faa40b15933808d2dd7b1b3a3fbc5e3b99de19c8" + }, + { + "name": "libestr", + "epoch": 0, + "version": "0.1.10", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libestr-0.1.10-1.el8.aarch64.rpm", + "checksum": "sha256:0c9b5e526b6fe5384447db444a2657cb4b1766b646255f89c49c749d388bdc58" + }, + { + "name": "libfastjson", + "epoch": 0, + "version": "0.99.8", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libfastjson-0.99.8-2.el8.aarch64.rpm", + "checksum": "sha256:2769c1df985e8fea8760d7ca8908eac166a64262c9643c7b0f6a82db570a68f5" + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.2.0", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libmaxminddb-1.2.0-10.el8.aarch64.rpm", + "checksum": "sha256:e09e950b0a0842577364565380ba40e8c4f027919dc880378b606c2dafc5693b" + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libxcb-1.13.1-1.el8.aarch64.rpm", + "checksum": "sha256:3e570377bfb3946bbbbe32abfc92f800af7922d0a448e3f044ef75b18e97b924" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libxkbcommon-0.9.1-1.el8.aarch64.rpm", + "checksum": "sha256:a07f96031fbe9507a8d6bb0e14cf0783bc615552e4cfb75131672072f5729de8" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/memstrack-0.1.8-1.el8.aarch64.rpm", + "checksum": "sha256:aa1a6a85493590efb9c0235c15d6a05e8b119f385dc13b3e3abd2315f8c4a6e0" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/pinentry-1.1.0-2.el8.aarch64.rpm", + "checksum": "sha256:22c0e44318e36e04ad1eb4632dcf25db991f481f9a543387d372e1f2ad92561f" + }, + { + "name": "plymouth", + "epoch": 0, + "version": "0.9.4", + "release": "1.20200615git1e36e30.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/plymouth-0.9.4-1.20200615git1e36e30.el8.aarch64.rpm", + "checksum": "sha256:71ffa6d3e9722a0c4f89862ca2cdfe60e86a70b131569cfdf594f01dd0d69a70" + }, + { + "name": "plymouth-core-libs", + "epoch": 0, + "version": "0.9.4", + "release": "1.20200615git1e36e30.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/plymouth-core-libs-0.9.4-1.20200615git1e36e30.el8.aarch64.rpm", + "checksum": "sha256:28cd61a54fe18d550c7ba48fc2557798fca5cbc85600ed55e30c5821a61ca168" + }, + { + "name": "plymouth-scripts", + "epoch": 0, + "version": "0.9.4", + "release": "1.20200615git1e36e30.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/plymouth-scripts-0.9.4-1.20200615git1e36e30.el8.aarch64.rpm", + "checksum": "sha256:fcb59efbfef73a98caa84f0f99dbfd15d7d49d8e74368969d6760d132afffad2" + }, + { + "name": "python3-babel", + "epoch": 0, + "version": "2.5.1", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-babel-2.5.1-5.el8.noarch.rpm", + "checksum": "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28" + }, + { + "name": "python3-dnf-plugin-spacewalk", + "epoch": 0, + "version": "2.8.5", + "release": "11.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43" + }, + { + "name": "python3-hwdata", + "epoch": 0, + "version": "2.3.6", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-hwdata-2.3.6-3.el8.noarch.rpm", + "checksum": "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362" + }, + { + "name": "python3-jinja2", + "epoch": 0, + "version": "2.10.1", + "release": "2.el8_0", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-jinja2-2.10.1-2.el8_0.noarch.rpm", + "checksum": "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64" + }, + { + "name": "python3-jsonpatch", + "epoch": 0, + "version": "1.21", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-jsonpatch-1.21-2.el8.noarch.rpm", + "checksum": "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835" + }, + { + "name": "python3-jsonpointer", + "epoch": 0, + "version": "1.10", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-jsonpointer-1.10-11.el8.noarch.rpm", + "checksum": "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf" + }, + { + "name": "python3-jsonschema", + "epoch": 0, + "version": "2.6.0", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-jsonschema-2.6.0-4.el8.noarch.rpm", + "checksum": "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b" + }, + { + "name": "python3-markupsafe", + "epoch": 0, + "version": "0.23", + "release": "19.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-markupsafe-0.23-19.el8.aarch64.rpm", + "checksum": "sha256:0aeef4b59dae77f6bd7f557e62efb6621491c04c27287860f581d35cd9be7a19" + }, + { + "name": "python3-netifaces", + "epoch": 0, + "version": "0.10.6", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-netifaces-0.10.6-4.el8.aarch64.rpm", + "checksum": "sha256:3d24b1cc90de184aa66cd58a1071888b6de8d34eb8155d6ab6a5ac777281adf5" + }, + { + "name": "python3-newt", + "epoch": 0, + "version": "0.52.20", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-newt-0.52.20-11.el8.aarch64.rpm", + "checksum": "sha256:047e04a10f26da24deb076a88c676fcaecd2f68aaa1a5adc7bc46791145c74c4" + }, + { + "name": "python3-prettytable", + "epoch": 0, + "version": "0.7.2", + "release": "14.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-prettytable-0.7.2-14.el8.noarch.rpm", + "checksum": "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55" + }, + { + "name": "python3-pyOpenSSL", + "epoch": 0, + "version": "18.0.0", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pyOpenSSL-18.0.0-1.el8.noarch.rpm", + "checksum": "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21" + }, + { + "name": "python3-pyserial", + "epoch": 0, + "version": "3.1.1", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pyserial-3.1.1-8.el8.noarch.rpm", + "checksum": "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414" + }, + { + "name": "python3-pytz", + "epoch": 0, + "version": "2017.2", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pytz-2017.2-9.el8.noarch.rpm", + "checksum": "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca" + }, + { + "name": "python3-rhn-check", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm", + "checksum": "sha256:4e644e08ef5bd3b33357d6c1ea64e37097c3224ae324456fef022b9e5fdd2947" + }, + { + "name": "python3-rhn-client-tools", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm", + "checksum": "sha256:11aae64c2458371a884514b954f58896c5ba7fb751ade0351c476e29991da25b" + }, + { + "name": "python3-rhn-setup", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm", + "checksum": "sha256:bee28477fcd36d5a877d1fe3d61aa876f62128681411718e0c3fc82b95cf8e59" + }, + { + "name": "python3-rhnlib", + "epoch": 0, + "version": "2.8.6", + "release": "8.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-unbound-1.7.3-14.el8.aarch64.rpm", + "checksum": "sha256:6ae316dfb9723d13a8d36d98d109d4a55017b568ee2070279f1bdccdc699862a" + }, + { + "name": "qemu-guest-agent", + "epoch": 15, + "version": "4.2.0", + "release": "29.module+el8.3.0+7212+401047e6", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/qemu-guest-agent-4.2.0-29.module+el8.3.0+7212+401047e6.aarch64.rpm", + "checksum": "sha256:393b5c2678d104c9f108ea2a353746d68f2111785acf13ffdff6798482d9d8d6" + }, + { + "name": "rhn-check", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm", + "checksum": "sha256:c17544abced52ad9df8229c71a0f8c437719c4d1fccd77f2db707be18226aecb" + }, + { + "name": "rhn-client-tools", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm", + "checksum": "sha256:28d4282a27a17db514ff30d8c865cb8a306d1c412f9e13c2e617a23912f07dde" + }, + { + "name": "rhn-setup", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm", + "checksum": "sha256:1e8b20ca3658abc9b7e2fe27d18eeae2f660779f33b39ca1fa2588363af250e5" + }, + { + "name": "rhnlib", + "epoch": 0, + "version": "2.8.6", + "release": "8.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42" + }, + { + "name": "rhnsd", + "epoch": 0, + "version": "5.0.35", + "release": "3.module+el8.1.0+3455+3ddf2832", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.aarch64.rpm", + "checksum": "sha256:27ed4654a9c4dfb8417c54cc1a6060c51bd3f1dd16c4ba4bd24dfeba57c5ede1" + }, + { + "name": "rsyslog", + "epoch": 0, + "version": "8.1911.0", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rsyslog-8.1911.0-6.el8.aarch64.rpm", + "checksum": "sha256:0a016d034c490f07425c402c260de595603a136bf7146dbc8ed90a661a60fbc1" + }, + { + "name": "spice-vdagent", + "epoch": 0, + "version": "0.20.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/spice-vdagent-0.20.0-1.el8.aarch64.rpm", + "checksum": "sha256:3dcc14bad9f9ec7c89d1bf08f23dbdfc2a641357fff6c23fa398d6ba482394ff" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/unbound-libs-1.7.3-14.el8.aarch64.rpm", + "checksum": "sha256:727c08fe072ef85837e8db30574aec712cdf67a062eead3e5481ba08425b2395" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "checksums": { + "0": "sha256:16f28f379d3f297d9b559a5fafe972d5073fc9efbb5fa720068c56f378b3fafc", + "1": "sha256:556df33d4f50aa82d8e620b5bd509631bddb7376019640039a183fc3efac148b" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=0bd700f8-090f-4556-b797-b340297ea1bd ro net.ifnames=0" + }, + "bootloader": "unknown", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "id": "rhel-20200625225316-4.18.0-221.el8.aarch64", + "initrd": "/boot/initramfs-4.18.0-221.el8.aarch64.img $tuned_initrd", + "linux": "/boot/vmlinuz-4.18.0-221.el8.aarch64", + "options": "$kernelopts $tuned_params", + "title": "Red Hat Enterprise Linux (4.18.0-221.el8.aarch64) 8.3 (Ootpa)", + "version": "4.18.0-221.el8.aarch64" + } + ], + "firewall-enabled": [ + "ssh", + "dhcpv6-client", + "cockpit" + ], + "fstab": [ + [ + "UUID=0bd700f8-090f-4556-b797-b340297ea1bd", + "/", + "xfs", + "defaults", + "0", + "0" + ], + [ + "UUID=46BB-8120", + "/boot/efi", + "vfat", + "umask=0077,shortname=winnt", + "0", + "2" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:999:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "polkitd:x:996:", + "redhat:x:1000:", + "render:x:998:", + "rngd:x:992:", + "root:x:0:", + "ssh_keys:x:995:", + "sshd:x:74:", + "sssd:x:993:", + "sys:x:3:", + "systemd-coredump:x:997:", + "systemd-journal:x:190:", + "systemd-resolve:x:193:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:994:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "qcow2", + "os-release": { + "ANSI_COLOR": "0;31", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:redhat:enterprise_linux:8.3:beta", + "HOME_URL": "https://www.redhat.com/", + "ID": "rhel", + "ID_LIKE": "fedora", + "NAME": "Red Hat Enterprise Linux", + "PLATFORM_ID": "platform:el8", + "PRETTY_NAME": "Red Hat Enterprise Linux 8.3 Beta (Ootpa)", + "REDHAT_BUGZILLA_PRODUCT": "Red Hat Enterprise Linux 8", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "8.3", + "REDHAT_SUPPORT_PRODUCT": "Red Hat Enterprise Linux", + "REDHAT_SUPPORT_PRODUCT_VERSION": "8.3 Beta", + "VERSION": "8.3 (Ootpa)", + "VERSION_ID": "8.3" + }, + "packages": [ + "NetworkManager-1.26.0-0.2.el8.aarch64", + "NetworkManager-libnm-1.26.0-0.2.el8.aarch64", + "NetworkManager-team-1.26.0-0.2.el8.aarch64", + "NetworkManager-tui-1.26.0-0.2.el8.aarch64", + "acl-2.2.53-1.el8.aarch64", + "alsa-lib-1.2.3.2-1.el8.aarch64", + "audit-3.0-0.17.20191104git1c2f876.el8.aarch64", + "audit-libs-3.0-0.17.20191104git1c2f876.el8.aarch64", + "authselect-1.2.1-2.el8.aarch64", + "authselect-libs-1.2.1-2.el8.aarch64", + "basesystem-11-5.el8.noarch", + "bash-4.4.19-12.el8.aarch64", + "bind-export-libs-9.11.20-3.el8.aarch64", + "brotli-1.0.6-2.el8.aarch64", + "bzip2-libs-1.0.6-26.el8.aarch64", + "c-ares-1.13.0-5.el8.aarch64", + "ca-certificates-2019.2.32-80.0.el8_1.noarch", + "checkpolicy-2.9-1.el8.aarch64", + "chkconfig-1.13-2.el8.aarch64", + "cloud-init-19.4-7.el8.noarch", + "coreutils-8.30-8.el8.aarch64", + "coreutils-common-8.30-8.el8.aarch64", + "cpio-2.12-8.el8.aarch64", + "cracklib-2.9.6-15.el8.aarch64", + "cracklib-dicts-2.9.6-15.el8.aarch64", + "cronie-1.5.2-4.el8.aarch64", + "cronie-anacron-1.5.2-4.el8.aarch64", + "crontabs-1.11-16.20150630git.el8.noarch", + "crypto-policies-20200610-1.git0ac8b1f.el8.noarch", + "crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch", + "cryptsetup-libs-2.3.3-1.el8.aarch64", + "curl-7.61.1-12.el8.aarch64", + "cyrus-sasl-lib-2.1.27-5.el8.aarch64", + "dbus-1.12.8-11.el8.aarch64", + "dbus-common-1.12.8-11.el8.noarch", + "dbus-daemon-1.12.8-11.el8.aarch64", + "dbus-glib-0.110-2.el8.aarch64", + "dbus-libs-1.12.8-11.el8.aarch64", + "dbus-tools-1.12.8-11.el8.aarch64", + "dbxtool-8-5.el8.aarch64", + "device-mapper-1.02.171-3.el8.aarch64", + "device-mapper-libs-1.02.171-3.el8.aarch64", + "dhcp-client-4.3.6-41.el8.aarch64", + "dhcp-common-4.3.6-41.el8.noarch", + "dhcp-libs-4.3.6-41.el8.aarch64", + "diffutils-3.6-6.el8.aarch64", + "dmidecode-3.2-6.el8.aarch64", + "dnf-4.2.23-2.el8.noarch", + "dnf-data-4.2.23-2.el8.noarch", + "dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch", + "dnf-plugin-subscription-manager-1.27.9-1.el8.aarch64", + "dnf-plugins-core-4.0.17-2.el8.noarch", + "dracut-049-89.git20200625.el8.aarch64", + "dracut-config-generic-049-89.git20200625.el8.aarch64", + "dracut-network-049-89.git20200625.el8.aarch64", + "dracut-squash-049-89.git20200625.el8.aarch64", + "e2fsprogs-1.45.6-1.el8.aarch64", + "e2fsprogs-libs-1.45.6-1.el8.aarch64", + "efi-filesystem-3-2.el8.noarch", + "efibootmgr-16-1.el8.aarch64", + "efivar-36-1.el8.aarch64", + "efivar-libs-36-1.el8.aarch64", + "elfutils-debuginfod-client-0.180-1.el8.aarch64", + "elfutils-default-yama-scope-0.180-1.el8.noarch", + "elfutils-libelf-0.180-1.el8.aarch64", + "elfutils-libs-0.180-1.el8.aarch64", + "ethtool-5.0-2.el8.aarch64", + "expat-2.2.5-4.el8.aarch64", + "file-5.33-16.el8.aarch64", + "file-libs-5.33-16.el8.aarch64", + "filesystem-3.8-3.el8.aarch64", + "findutils-4.6.0-20.el8.aarch64", + "firewalld-0.8.2-1.el8.noarch", + "firewalld-filesystem-0.8.2-1.el8.noarch", + "freetype-2.9.1-4.el8.aarch64", + "fuse-libs-2.9.7-12.el8.aarch64", + "gawk-4.2.1-1.el8.aarch64", + "gdbm-1.18-1.el8.aarch64", + "gdbm-libs-1.18-1.el8.aarch64", + "geolite2-city-20180605-1.el8.noarch", + "geolite2-country-20180605-1.el8.noarch", + "gettext-0.19.8.1-17.el8.aarch64", + "gettext-libs-0.19.8.1-17.el8.aarch64", + "glib2-2.56.4-8.el8.aarch64", + "glibc-2.28-127.el8.aarch64", + "glibc-common-2.28-127.el8.aarch64", + "glibc-langpack-en-2.28-127.el8.aarch64", + "gmp-6.1.2-10.el8.aarch64", + "gnupg2-2.2.20-2.el8.aarch64", + "gnupg2-smime-2.2.20-2.el8.aarch64", + "gnutls-3.6.14-3.el8.aarch64", + "gobject-introspection-1.56.1-1.el8.aarch64", + "gpg-pubkey-d4082792-5b32db75", + "gpg-pubkey-fd431d51-4ae0493b", + "gpgme-1.13.1-3.el8.aarch64", + "grep-3.1-6.el8.aarch64", + "groff-base-1.22.3-18.el8.aarch64", + "grub2-common-2.02-84.el8.noarch", + "grub2-efi-aa64-2.02-84.el8.aarch64", + "grub2-tools-2.02-84.el8.aarch64", + "grub2-tools-extra-2.02-84.el8.aarch64", + "grub2-tools-minimal-2.02-84.el8.aarch64", + "grubby-8.40-41.el8.aarch64", + "gzip-1.9-9.el8.aarch64", + "hardlink-1.3-6.el8.aarch64", + "hdparm-9.54-2.el8.aarch64", + "hostname-3.20-6.el8.aarch64", + "hwdata-0.314-8.5.el8.noarch", + "ima-evm-utils-1.1-5.el8.aarch64", + "info-6.5-6.el8.aarch64", + "initscripts-10.00.8-1.el8.aarch64", + "ipcalc-0.2.4-4.el8.aarch64", + "iproute-5.3.0-5.el8.aarch64", + "iprutils-2.4.19-1.el8.aarch64", + "ipset-7.1-1.el8.aarch64", + "ipset-libs-7.1-1.el8.aarch64", + "iptables-1.8.4-14.el8.aarch64", + "iptables-ebtables-1.8.4-14.el8.aarch64", + "iptables-libs-1.8.4-14.el8.aarch64", + "iputils-20180629-2.el8.aarch64", + "irqbalance-1.4.0-4.el8.aarch64", + "iwl100-firmware-39.31.5.1-99.el8.1.noarch", + "iwl1000-firmware-39.31.5.1-99.el8.1.noarch", + "iwl105-firmware-18.168.6.1-99.el8.1.noarch", + "iwl135-firmware-18.168.6.1-99.el8.1.noarch", + "iwl2000-firmware-18.168.6.1-99.el8.1.noarch", + "iwl2030-firmware-18.168.6.1-99.el8.1.noarch", + "iwl3160-firmware-25.30.13.0-99.el8.1.noarch", + "iwl5000-firmware-8.83.5.1_1-99.el8.1.noarch", + "iwl5150-firmware-8.24.2.2-99.el8.1.noarch", + "iwl6000-firmware-9.221.4.1-99.el8.1.noarch", + "iwl6000g2a-firmware-18.168.6.1-99.el8.1.noarch", + "iwl6050-firmware-41.28.5.1-99.el8.1.noarch", + "iwl7260-firmware-25.30.13.0-99.el8.1.noarch", + "jansson-2.11-3.el8.aarch64", + "json-c-0.13.1-0.2.el8.aarch64", + "json-glib-1.4.4-1.el8.aarch64", + "kbd-2.0.4-10.el8.aarch64", + "kbd-legacy-2.0.4-10.el8.noarch", + "kbd-misc-2.0.4-10.el8.noarch", + "kernel-4.18.0-221.el8.aarch64", + "kernel-core-4.18.0-221.el8.aarch64", + "kernel-modules-4.18.0-221.el8.aarch64", + "kernel-tools-4.18.0-221.el8.aarch64", + "kernel-tools-libs-4.18.0-221.el8.aarch64", + "kexec-tools-2.0.20-29.el8.aarch64", + "keyutils-libs-1.5.10-6.el8.aarch64", + "kmod-25-16.el8.aarch64", + "kmod-libs-25-16.el8.aarch64", + "kpartx-0.8.4-2.el8.aarch64", + "krb5-libs-1.18.2-3.el8.aarch64", + "langpacks-en-1.0-12.el8.noarch", + "less-530-1.el8.aarch64", + "libX11-1.6.8-3.el8.aarch64", + "libX11-common-1.6.8-3.el8.noarch", + "libXau-1.0.9-3.el8.aarch64", + "libXext-1.3.4-1.el8.aarch64", + "libXfixes-5.0.3-7.el8.aarch64", + "libXinerama-1.1.4-1.el8.aarch64", + "libXrandr-1.5.2-1.el8.aarch64", + "libXrender-0.9.10-7.el8.aarch64", + "libacl-2.2.53-1.el8.aarch64", + "libarchive-3.3.2-9.el8.aarch64", + "libassuan-2.5.1-3.el8.aarch64", + "libattr-2.4.48-3.el8.aarch64", + "libbasicobjects-0.1.1-39.el8.aarch64", + "libblkid-2.32.1-24.el8.aarch64", + "libcap-2.26-4.el8.aarch64", + "libcap-ng-0.7.9-5.el8.aarch64", + "libcollection-0.7.0-39.el8.aarch64", + "libcom_err-1.45.6-1.el8.aarch64", + "libcomps-0.1.11-4.el8.aarch64", + "libcroco-0.6.12-4.el8.aarch64", + "libcurl-7.61.1-12.el8.aarch64", + "libdaemon-0.14-15.el8.aarch64", + "libdb-5.3.28-39.el8.aarch64", + "libdb-utils-5.3.28-39.el8.aarch64", + "libdhash-0.5.0-39.el8.aarch64", + "libdnf-0.48.0-2.el8.aarch64", + "libdrm-2.4.101-1.el8.aarch64", + "libedit-3.1-23.20170329cvs.el8.aarch64", + "libestr-0.1.10-1.el8.aarch64", + "libevent-2.1.8-5.el8.aarch64", + "libfastjson-0.99.8-2.el8.aarch64", + "libfdisk-2.32.1-24.el8.aarch64", + "libffi-3.1-22.el8.aarch64", + "libgcc-8.3.1-5.1.el8.aarch64", + "libgcrypt-1.8.5-4.el8.aarch64", + "libgomp-8.3.1-5.1.el8.aarch64", + "libgpg-error-1.31-1.el8.aarch64", + "libgudev-232-4.el8.aarch64", + "libidn2-2.2.0-1.el8.aarch64", + "libini_config-1.3.1-39.el8.aarch64", + "libkcapi-1.2.0-2.el8.aarch64", + "libkcapi-hmaccalc-1.2.0-2.el8.aarch64", + "libksba-1.3.5-7.el8.aarch64", + "libldb-2.1.3-2.el8.aarch64", + "libmaxminddb-1.2.0-10.el8.aarch64", + "libmetalink-0.1.3-7.el8.aarch64", + "libmnl-1.0.4-6.el8.aarch64", + "libmodulemd-2.9.4-2.el8.aarch64", + "libmount-2.32.1-24.el8.aarch64", + "libndp-1.7-3.el8.aarch64", + "libnetfilter_conntrack-1.0.6-5.el8.aarch64", + "libnfnetlink-1.0.1-13.el8.aarch64", + "libnfsidmap-2.3.3-35.el8.aarch64", + "libnftnl-1.1.5-4.el8.aarch64", + "libnghttp2-1.33.0-3.el8_2.1.aarch64", + "libnl3-3.5.0-1.el8.aarch64", + "libnl3-cli-3.5.0-1.el8.aarch64", + "libnsl2-1.2.0-2.20180605git4a062cf.el8.aarch64", + "libpath_utils-0.2.1-39.el8.aarch64", + "libpcap-1.9.1-4.el8.aarch64", + "libpciaccess-0.14-1.el8.aarch64", + "libpipeline-1.5.0-2.el8.aarch64", + "libpng-1.6.34-5.el8.aarch64", + "libpsl-0.20.2-6.el8.aarch64", + "libpwquality-1.4.0-9.el8.aarch64", + "libref_array-0.1.5-39.el8.aarch64", + "librepo-1.12.0-1.el8.aarch64", + "libreport-filesystem-2.9.5-11.el8.aarch64", + "librhsm-0.0.3-3.el8.aarch64", + "libseccomp-2.4.3-1.el8.aarch64", + "libsecret-0.18.6-1.el8.aarch64", + "libselinux-2.9-3.el8.aarch64", + "libselinux-utils-2.9-3.el8.aarch64", + "libsemanage-2.9-3.el8.aarch64", + "libsepol-2.9-1.el8.aarch64", + "libsigsegv-2.11-5.el8.aarch64", + "libsmartcols-2.32.1-24.el8.aarch64", + "libsolv-0.7.11-1.el8.aarch64", + "libss-1.45.6-1.el8.aarch64", + "libssh-0.9.4-2.el8.aarch64", + "libssh-config-0.9.4-2.el8.noarch", + "libsss_autofs-2.3.0-2.el8.aarch64", + "libsss_certmap-2.3.0-2.el8.aarch64", + "libsss_idmap-2.3.0-2.el8.aarch64", + "libsss_nss_idmap-2.3.0-2.el8.aarch64", + "libsss_sudo-2.3.0-2.el8.aarch64", + "libstdc++-8.3.1-5.1.el8.aarch64", + "libsysfs-2.1.0-24.el8.aarch64", + "libtalloc-2.3.1-2.el8.aarch64", + "libtasn1-4.13-3.el8.aarch64", + "libtdb-1.4.3-1.el8.aarch64", + "libteam-1.29-5.el8.aarch64", + "libtevent-0.10.2-2.el8.aarch64", + "libtirpc-1.1.4-4.el8.aarch64", + "libunistring-0.9.9-3.el8.aarch64", + "libusbx-1.0.23-3.el8.aarch64", + "libuser-0.62-23.el8.aarch64", + "libutempter-1.1.6-14.el8.aarch64", + "libuuid-2.32.1-24.el8.aarch64", + "libverto-0.3.0-5.el8.aarch64", + "libxcb-1.13.1-1.el8.aarch64", + "libxcrypt-4.1.1-4.el8.aarch64", + "libxkbcommon-0.9.1-1.el8.aarch64", + "libxml2-2.9.7-8.el8.aarch64", + "libyaml-0.1.7-5.el8.aarch64", + "libzstd-1.4.4-1.el8.aarch64", + "linux-firmware-20200619-99.git3890db36.el8.noarch", + "logrotate-3.14.0-4.el8.aarch64", + "lshw-B.02.19.2-2.el8.aarch64", + "lsscsi-0.30-1.el8.aarch64", + "lua-libs-5.3.4-11.el8.aarch64", + "lz4-libs-1.8.3-2.el8.aarch64", + "lzo-2.08-14.el8.aarch64", + "man-db-2.7.6.1-17.el8.aarch64", + "memstrack-0.1.8-1.el8.aarch64", + "mokutil-0.3.0-9.el8.aarch64", + "mozjs60-60.9.0-4.el8.aarch64", + "mpfr-3.1.6-1.el8.aarch64", + "ncurses-6.1-7.20180224.el8.aarch64", + "ncurses-base-6.1-7.20180224.el8.noarch", + "ncurses-libs-6.1-7.20180224.el8.aarch64", + "net-tools-2.0-0.52.20160912git.el8.aarch64", + "nettle-3.4.1-2.el8.aarch64", + "newt-0.52.20-11.el8.aarch64", + "nftables-0.9.3-14.el8.aarch64", + "npth-1.5-4.el8.aarch64", + "numactl-libs-2.0.12-11.el8.aarch64", + "openldap-2.4.46-15.el8.aarch64", + "openssh-8.0p1-5.el8.aarch64", + "openssh-clients-8.0p1-5.el8.aarch64", + "openssh-server-8.0p1-5.el8.aarch64", + "openssl-1.1.1g-9.el8.aarch64", + "openssl-libs-1.1.1g-9.el8.aarch64", + "openssl-pkcs11-0.4.10-2.el8.aarch64", + "os-prober-1.74-6.el8.aarch64", + "p11-kit-0.23.14-5.el8_0.aarch64", + "p11-kit-trust-0.23.14-5.el8_0.aarch64", + "pam-1.3.1-11.el8.aarch64", + "parted-3.2-38.el8.aarch64", + "passwd-0.80-3.el8.aarch64", + "pciutils-libs-3.6.4-2.el8.aarch64", + "pcre-8.42-4.el8.aarch64", + "pcre2-10.32-2.el8.aarch64", + "pigz-2.4-4.el8.aarch64", + "pinentry-1.1.0-2.el8.aarch64", + "platform-python-3.6.8-30.el8.aarch64", + "platform-python-pip-9.0.3-17.el8.noarch", + "platform-python-setuptools-39.2.0-6.el8.noarch", + "plymouth-0.9.4-1.20200615git1e36e30.el8.aarch64", + "plymouth-core-libs-0.9.4-1.20200615git1e36e30.el8.aarch64", + "plymouth-scripts-0.9.4-1.20200615git1e36e30.el8.aarch64", + "policycoreutils-2.9-9.el8.aarch64", + "polkit-0.115-11.el8.aarch64", + "polkit-libs-0.115-11.el8.aarch64", + "polkit-pkla-compat-0.1-12.el8.aarch64", + "popt-1.16-14.el8.aarch64", + "prefixdevname-0.1.0-6.el8.aarch64", + "procps-ng-3.3.15-2.el8.aarch64", + "publicsuffix-list-dafsa-20180723-1.el8.noarch", + "python3-asn1crypto-0.24.0-3.el8.noarch", + "python3-audit-3.0-0.17.20191104git1c2f876.el8.aarch64", + "python3-babel-2.5.1-5.el8.noarch", + "python3-cffi-1.11.5-5.el8.aarch64", + "python3-chardet-3.0.4-7.el8.noarch", + "python3-configobj-5.0.6-11.el8.noarch", + "python3-cryptography-2.3-3.el8.aarch64", + "python3-dateutil-2.6.1-6.el8.noarch", + "python3-dbus-1.2.4-15.el8.aarch64", + "python3-decorator-4.2.1-2.el8.noarch", + "python3-dnf-4.2.23-2.el8.noarch", + "python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch", + "python3-dnf-plugins-core-4.0.17-2.el8.noarch", + "python3-ethtool-0.14-3.el8.aarch64", + "python3-firewall-0.8.2-1.el8.noarch", + "python3-gobject-base-3.28.3-2.el8.aarch64", + "python3-gpg-1.13.1-3.el8.aarch64", + "python3-hawkey-0.48.0-2.el8.aarch64", + "python3-hwdata-2.3.6-3.el8.noarch", + "python3-idna-2.5-5.el8.noarch", + "python3-iniparse-0.4-31.el8.noarch", + "python3-inotify-0.9.6-13.el8.noarch", + "python3-jinja2-2.10.1-2.el8_0.noarch", + "python3-jsonpatch-1.21-2.el8.noarch", + "python3-jsonpointer-1.10-11.el8.noarch", + "python3-jsonschema-2.6.0-4.el8.noarch", + "python3-jwt-1.6.1-2.el8.noarch", + "python3-libcomps-0.1.11-4.el8.aarch64", + "python3-libdnf-0.48.0-2.el8.aarch64", + "python3-librepo-1.12.0-1.el8.aarch64", + "python3-libs-3.6.8-30.el8.aarch64", + "python3-libselinux-2.9-3.el8.aarch64", + "python3-libsemanage-2.9-3.el8.aarch64", + "python3-linux-procfs-0.6.2-2.el8.noarch", + "python3-markupsafe-0.23-19.el8.aarch64", + "python3-netifaces-0.10.6-4.el8.aarch64", + "python3-newt-0.52.20-11.el8.aarch64", + "python3-nftables-0.9.3-14.el8.aarch64", + "python3-oauthlib-2.1.0-1.el8.noarch", + "python3-perf-4.18.0-221.el8.aarch64", + "python3-pip-wheel-9.0.3-17.el8.noarch", + "python3-ply-3.9-8.el8.noarch", + "python3-policycoreutils-2.9-9.el8.noarch", + "python3-prettytable-0.7.2-14.el8.noarch", + "python3-pyOpenSSL-18.0.0-1.el8.noarch", + "python3-pycparser-2.14-14.el8.noarch", + "python3-pyserial-3.1.1-8.el8.noarch", + "python3-pysocks-1.6.8-3.el8.noarch", + "python3-pytz-2017.2-9.el8.noarch", + "python3-pyudev-0.21.0-7.el8.noarch", + "python3-pyyaml-3.12-12.el8.aarch64", + "python3-requests-2.20.0-2.1.el8_1.noarch", + "python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64", + "python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64", + "python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64", + "python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch", + "python3-rpm-4.14.3-4.el8.aarch64", + "python3-schedutils-0.6-6.el8.aarch64", + "python3-setools-4.3.0-1.el8.aarch64", + "python3-setuptools-wheel-39.2.0-6.el8.noarch", + "python3-six-1.11.0-8.el8.noarch", + "python3-slip-0.6.4-11.el8.noarch", + "python3-slip-dbus-0.6.4-11.el8.noarch", + "python3-subscription-manager-rhsm-1.27.9-1.el8.aarch64", + "python3-syspurpose-1.27.9-1.el8.aarch64", + "python3-unbound-1.7.3-14.el8.aarch64", + "python3-urllib3-1.24.2-4.el8.noarch", + "qemu-guest-agent-4.2.0-29.module+el8.3.0+7212+401047e6.aarch64", + "readline-7.0-10.el8.aarch64", + "redhat-release-8.3-0.2.el8.aarch64", + "redhat-release-eula-8.3-0.2.el8.aarch64", + "rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64", + "rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64", + "rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64", + "rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch", + "rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.aarch64", + "rng-tools-6.8-3.el8.aarch64", + "rootfiles-8.1-22.el8.noarch", + "rpm-4.14.3-4.el8.aarch64", + "rpm-build-libs-4.14.3-4.el8.aarch64", + "rpm-libs-4.14.3-4.el8.aarch64", + "rpm-plugin-selinux-4.14.3-4.el8.aarch64", + "rpm-plugin-systemd-inhibit-4.14.3-4.el8.aarch64", + "rsyslog-8.1911.0-6.el8.aarch64", + "sed-4.5-2.el8.aarch64", + "selinux-policy-3.14.3-48.el8.noarch", + "selinux-policy-targeted-3.14.3-48.el8.noarch", + "setup-2.12.2-6.el8.noarch", + "sg3_utils-1.44-5.el8.aarch64", + "sg3_utils-libs-1.44-5.el8.aarch64", + "shadow-utils-4.6-10.el8.aarch64", + "shared-mime-info-1.9-3.el8.aarch64", + "shim-aa64-15-12.aarch64", + "slang-2.3.2-3.el8.aarch64", + "snappy-1.1.7-5.el8.aarch64", + "spice-vdagent-0.20.0-1.el8.aarch64", + "sqlite-libs-3.26.0-10.el8.aarch64", + "squashfs-tools-4.3-19.el8.aarch64", + "sssd-client-2.3.0-2.el8.aarch64", + "sssd-common-2.3.0-2.el8.aarch64", + "sssd-kcm-2.3.0-2.el8.aarch64", + "sssd-nfs-idmap-2.3.0-2.el8.aarch64", + "subscription-manager-1.27.9-1.el8.aarch64", + "subscription-manager-rhsm-certificates-1.27.9-1.el8.aarch64", + "sudo-1.8.29-6.el8.aarch64", + "systemd-239-36.el8.aarch64", + "systemd-libs-239-36.el8.aarch64", + "systemd-pam-239-36.el8.aarch64", + "systemd-udev-239-36.el8.aarch64", + "teamd-1.29-5.el8.aarch64", + "trousers-0.3.14-4.el8.aarch64", + "trousers-lib-0.3.14-4.el8.aarch64", + "tuned-2.14.0-2.el8.noarch", + "tzdata-2020a-1.el8.noarch", + "unbound-libs-1.7.3-14.el8.aarch64", + "usermode-1.113-1.el8.aarch64", + "util-linux-2.32.1-24.el8.aarch64", + "vim-minimal-8.0.1763-15.el8.aarch64", + "virt-what-1.18-6.el8.aarch64", + "which-2.21-12.el8.aarch64", + "xfsprogs-5.0.0-4.el8.aarch64", + "xkeyboard-config-2.28-1.el8.noarch", + "xz-5.2.4-3.el8.aarch64", + "xz-libs-5.2.4-3.el8.aarch64", + "yum-4.2.23-2.el8.noarch", + "zlib-1.2.11-15.el8.aarch64" + ], + "partition-table": "gpt", + "partition-table-id": "8DFDFF87-C96E-EA48-A3A6-9408F1F6B1EF", + "partitions": [ + { + "bootable": false, + "fstype": "vfat", + "label": "EFI\\ System", + "partuuid": "25EC419C-1F18-E54C-BCF4-37B57C1BDAE3", + "size": 498073600, + "start": 1048576, + "type": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B", + "uuid": "46BB-8120" + }, + { + "bootable": false, + "fstype": "xfs", + "label": null, + "partuuid": "FF64D5D1-D9D6-E145-87C4-73E5A6EF429A", + "size": 3794779648, + "start": 500170752, + "type": "0FC63DAF-8483-4772-8E79-3D69D8477DE4", + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "polkitd:x:998:996:User for polkitd:/:/sbin/nologin", + "redhat:x:1000:1000::/home/redhat:/bin/bash", + "rngd:x:995:992:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sssd:x:996:993:User for sssd:/:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/boot/efi/EFI": ".M.......", + "/boot/efi/EFI/BOOT/BOOTAA64.EFI": ".......T.", + "/boot/efi/EFI/BOOT/fbaa64.efi": ".......T.", + "/boot/efi/EFI/redhat/BOOTAA64.CSV": ".......T.", + "/boot/efi/EFI/redhat/mmaa64.efi": ".......T.", + "/boot/efi/EFI/redhat/shim.efi": ".......T.", + "/boot/efi/EFI/redhat/shimaa64-redhat.efi": ".......T.", + "/boot/efi/EFI/redhat/shimaa64.efi": ".......T.", + "/etc/machine-id": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/proc": ".M.......", + "/sys": ".M.......", + "/var/log/lastlog": ".M....G..", + "/var/spool/anacron/cron.daily": ".M.......", + "/var/spool/anacron/cron.monthly": ".M.......", + "/var/spool/anacron/cron.weekly": ".M......." + }, + "missing": [ + "/etc/systemd/system/dbus-org.freedesktop.resolve1.service" + ] + }, + "services-disabled": [ + "arp-ethers.service", + "console-getty.service", + "cpupower.service", + "ctrl-alt-del.target", + "dbxtool.service", + "debug-shell.service", + "ebtables.service", + "exit.target", + "fstrim.timer", + "halt.target", + "iprdump.service", + "iprinit.service", + "iprupdate.service", + "iprutils.target", + "kexec.target", + "nftables.service", + "poweroff.target", + "qemu-guest-agent.service", + "rdisc.service", + "reboot.target", + "remote-cryptsetup.target", + "rhnsd.service", + "rhsm-facts.service", + "rhsm.service", + "rngd-wake-threshold.service", + "runlevel0.target", + "runlevel6.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-resolved.service", + "tcsd.service", + "tmp.mount" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "cloud-init.service", + "crond.service", + "dbus-org.fedoraproject.FirewallD1.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dnf-makecache.timer", + "firewalld.service", + "getty@.service", + "import-state.service", + "irqbalance.service", + "kdump.service", + "loadmodules.service", + "nis-domainname.service", + "remote-fs.target", + "rhsmcertd.service", + "rngd.service", + "rsyslog.service", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "syslog.service", + "tuned.service", + "unbound-anchor.timer" + ], + "timezone": "UTC" + } +} \ No newline at end of file diff --git a/test/cases/rhel_8-aarch64-qcow2-boot.json b/test/cases/rhel_8-aarch64-qcow2-boot.json new file mode 100644 index 0000000..7b64a60 --- /dev/null +++ b/test/cases/rhel_8-aarch64-qcow2-boot.json @@ -0,0 +1,10199 @@ +{ + "boot": { + "type": "qemu" + }, + "compose-request": { + "distro": "rhel-8", + "arch": "aarch64", + "image-type": "qcow2", + "repositories": [ + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + }, + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + } + ], + "filename": "disk.qcow2", + "blueprint": { + "name": "qcow2-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:0136940a3e28a159e7347b0bc7d1dbbc0339c64f431349e355f75abe31cbf21c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-4.18.0-221.el8.aarch64.rpm" + }, + "sha256:01d5881b441b015ac394e66fb27dbc5cb11befc8080973208806257ecee2d12d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lshw-B.02.19.2-2.el8.aarch64.rpm" + }, + "sha256:01e486a3be67325e9692e909f5c6534137ee6a6df185ba2c09d4d50fe6c738f6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libusbx-1.0.23-3.el8.aarch64.rpm" + }, + "sha256:0229afd544d1a59bfe26c095ad338bac7e0d2f10aab88bd895f3766e8f54fff3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-libnm-1.26.0-0.2.el8.aarch64.rpm" + }, + "sha256:0265d8b987f411738f3b53bd1f84386955704122e20ece4eb232a0df89ff62f0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pyyaml-3.12-12.el8.aarch64.rpm" + }, + "sha256:030eef043bf4cfdffc0a672ca2c1499281fbcb78a81a98a9e932ba0b7c9ebb6b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libbasicobjects-0.1.1-39.el8.aarch64.rpm" + }, + "sha256:047e04a10f26da24deb076a88c676fcaecd2f68aaa1a5adc7bc46791145c74c4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-newt-0.52.20-11.el8.aarch64.rpm" + }, + "sha256:04c031a07bde4360484a0180e832036d3ac45a95c4839e54d7a02423df5485ef": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pam-1.3.1-11.el8.aarch64.rpm" + }, + "sha256:057b6632870b8c3c0c950a19092ef2f9749bf3d1a37ccb083bf42ca6404db066": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-libs-1.02.171-3.el8.aarch64.rpm" + }, + "sha256:058822931f4c34c18675116c1b02b718de4044c1019acb0d5f97417f00a30ba7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libevent-2.1.8-5.el8.aarch64.rpm" + }, + "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/cloud-init-19.4-7.el8.noarch.rpm" + }, + "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-prettytable-0.7.2-14.el8.noarch.rpm" + }, + "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-jinja2-2.10.1-2.el8_0.noarch.rpm" + }, + "sha256:091c7cf9a81bc55f9d813c40904e1b7b4f8889df3584d0978e0f6770f01042e9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnl3-cli-3.5.0-1.el8.aarch64.rpm" + }, + "sha256:094eff70081085f87a7ac0dedafa851ad8ac8e03f9f328636df4a0f8301d0e87": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-libs-5.2.4-3.el8.aarch64.rpm" + }, + "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:09f390f3bf4dac907dfbc58b714d6c3de1ee7755a0ca5661b2f7c0a7dfbcfcff": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libini_config-1.3.1-39.el8.aarch64.rpm" + }, + "sha256:0a016d034c490f07425c402c260de595603a136bf7146dbc8ed90a661a60fbc1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rsyslog-8.1911.0-6.el8.aarch64.rpm" + }, + "sha256:0a885c6dc6abd969b828bf2fd7063ee884e6d058eaf405b02f3dd6efb6c66bac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-plugins-core-4.0.17-2.el8.noarch.rpm" + }, + "sha256:0ac8999f5ebca6b808973d0db5038a835daa2358af1007e9cb972b0e96eae217": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_sudo-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:0ac96870f86e4a275b6d7be6a6045383ff3071653b7e897538f713ba905edb42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pciutils-3.6.4-2.el8.aarch64.rpm" + }, + "sha256:0aeef4b59dae77f6bd7f557e62efb6621491c04c27287860f581d35cd9be7a19": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-markupsafe-0.23-19.el8.aarch64.rpm" + }, + "sha256:0b4134a430320b461f8636f536b4c20c23e70aa129801cb0bafeb948b9de7e96": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/cairo-1.15.12-3.el8.aarch64.rpm" + }, + "sha256:0b4564ad3a799af1a4a0de33b0952f6056d942b0cfa39b73e9375bf0c05b3191": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-smime-2.2.20-2.el8.aarch64.rpm" + }, + "sha256:0bb7024125ca67119612e55a92da13c989e0306ddd7de7e655a679c963939ef7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:0c9b5e526b6fe5384447db444a2657cb4b1766b646255f89c49c749d388bdc58": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libestr-0.1.10-1.el8.aarch64.rpm" + }, + "sha256:0cbb121302cc38ac16f8f9bd5ea8bd3ce3e2121f6c25c985b66bd29a532f2f7c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/logrotate-3.14.0-4.el8.aarch64.rpm" + }, + "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm" + }, + "sha256:0d61e2dfcaed066e4ef74e4baddab9cdec24602aeb7a98306481f38cb5f449eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-core-4.18.0-221.el8.aarch64.rpm" + }, + "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/linux-firmware-20200619-99.git3890db36.el8.noarch.rpm" + }, + "sha256:0e30a92139490232a4b891f4f802db74f41002475f8d203c6adffe1fb9d2b1ab": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/authselect-1.2.1-2.el8.aarch64.rpm" + }, + "sha256:0f1a02850c102e2a186787504f965c0c10d6432b9f600c18bc2f520e55f04a8c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libassuan-2.5.1-3.el8.aarch64.rpm" + }, + "sha256:0f2c07acd21a998f0a4b2a569ebfd143b889d6a5105541b2393dab96cd027a10": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_autofs-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:0f32d23a6b2b15603d710b0317238ef8dde3de61eda96713e21d86c9fc7a98ed": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/which-2.21-12.el8.aarch64.rpm" + }, + "sha256:0f6d940ccddd815da01182de1e7b7e2d12c493125285ff7ee902843beefdec16": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmnl-1.0.4-6.el8.aarch64.rpm" + }, + "sha256:0fd7dd5b060e7533144ad7a3cae2453ad6f87650010f328879b10c7c4cba0c04": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iptables-libs-1.8.4-14.el8.aarch64.rpm" + }, + "sha256:1091a799d34a42d2e42ac462b4f979a55d17513eca5a00bad9bdba56cca83357": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-25-16.el8.aarch64.rpm" + }, + "sha256:10a83db8ac5065869be834bf6ec61185eded982f885def5979948736e5c3ab95": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mozjs60-60.9.0-4.el8.aarch64.rpm" + }, + "sha256:10ac3bf7565725a55b0aef56f65befd0d320219fc83adfab6e564c19f8c44bd6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-2.0.4-10.el8.aarch64.rpm" + }, + "sha256:1143ac623a74d7feaaaf293c18d942d243248f6356628f87216670c10d11687b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-glib-1.4.4-1.el8.aarch64.rpm" + }, + "sha256:11aae64c2458371a884514b954f58896c5ba7fb751ade0351c476e29991da25b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm" + }, + "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm" + }, + "sha256:125c92f23d87b905c21e9f7669f0ec6e41428ab63c8c13f63db8980f292797d5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sed-4.5-2.el8.aarch64.rpm" + }, + "sha256:126d980678e5b687c775cf857b4013306f1a761353370258a0f04d92a3553f92": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-minimal-2.02-84.el8.aarch64.rpm" + }, + "sha256:13471e37bb0089a322183fc9e7a53948f0b203b54277630e75606a835268ad5d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rng-tools-6.8-3.el8.aarch64.rpm" + }, + "sha256:13cab1083eb51b9ab0dc3fdc567106454e28096a6ec32184ad509ec19214fdef": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bzip2-1.0.6-26.el8.aarch64.rpm" + }, + "sha256:13f1d396ba9e0fe3f8d5ef43693b5c1178207e594d2b830e94d3f8e02e33767f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ethtool-5.0-2.el8.aarch64.rpm" + }, + "sha256:13f55a1fea88c4720dc704fa19573325ddde8c1c60ed71e96f98a9e5a6508d44": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/chrony-3.5-1.el8.aarch64.rpm" + }, + "sha256:140146ebcbadd9b0f2aa5c2fcde5c93888f2d84ce61a2a4cf148ef435d1ba410": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsemanage-2.9-3.el8.aarch64.rpm" + }, + "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm" + }, + "sha256:157044e6cf5cc52b64b9a5d621fdb5b0846a527daa428382330e68bdb47789eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dhcp-client-4.3.6-41.el8.aarch64.rpm" + }, + "sha256:1594afba86593ec614299ef6af255755a98ea55a34a72a22fdc9d80a040be39d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/abattis-cantarell-fonts-0.0.25-4.el8.noarch.rpm" + }, + "sha256:15c33124ac0479d34f1f58d2bd24cc52db7089b4a8681c276a3fd0d6dfe4fc72": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-8.30-8.el8.aarch64.rpm" + }, + "sha256:1657e36d9213739cfef8bacc8876153692f5a5b4d87dd5dde86ad182dd63ca1b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_nss_idmap-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crontabs-1.11-16.20150630git.el8.noarch.rpm" + }, + "sha256:17501958f52d2db1417cab8dd5ca261bf447fd93eb62b80173f9875c3012b700": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efi-filesystem-3-2.el8.noarch.rpm" + }, + "sha256:1956304761f23c6661b831d33a3539b82384636db4113cccd19321b36a3a8415": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/vim-minimal-8.0.1763-15.el8.aarch64.rpm" + }, + "sha256:19cd894b4154d1a8521c6884cfd2a6eaf1f498b7dec5cc31408f8535b9098f2a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shared-mime-info-1.9-3.el8.aarch64.rpm" + }, + "sha256:19d1de27d2f62b4a55735233807f70a1e8ff7551fed97ee8650dbd09c1ef50ea": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libzstd-1.4.4-1.el8.aarch64.rpm" + }, + "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm" + }, + "sha256:19efe6f125c00123ccc6d96e51eb61e711f3ea01f32d18cce14d3b614217c58e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gmp-6.1.2-10.el8.aarch64.rpm" + }, + "sha256:1b8c037a6c67959b52894f38444ed1133356c65cec2eed3acf37c45cf8609e63": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efivar-36-1.el8.aarch64.rpm" + }, + "sha256:1bc21785bc6f66d6fcc29cd62f2cdd3584f3f8ea6321db4c27251b192f468433": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/usermode-1.113-1.el8.aarch64.rpm" + }, + "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tzdata-2020a-1.el8.noarch.rpm" + }, + "sha256:1e8b20ca3658abc9b7e2fe27d18eeae2f660779f33b39ca1fa2588363af250e5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm" + }, + "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm" + }, + "sha256:1eff42ff409079d679c7777483d476f3261a2881b456b6280e81f7903a0cd499": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtevent-0.10.2-2.el8.aarch64.rpm" + }, + "sha256:1f8013c5bd1c4914a11363d56d67fa70871f5f42c64f57862c791871fb9bb05c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-team-1.26.0-0.2.el8.aarch64.rpm" + }, + "sha256:1fbb9fed42dff3f9dbc9e4fd929281408f77506423424759c2ac57b76afc3cdb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpng-1.6.34-5.el8.aarch64.rpm" + }, + "sha256:1fde97c3e596a88ef05e260970343d178a7c2188c166e7ba745640a051ae9f66": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/setroubleshoot-server-3.3.23-1.el8.aarch64.rpm" + }, + "sha256:202cfa88a6b2f1ec6a0bc0546f578c1ca6b5b6fcfeaf3e1228beead14d8bf758": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cockpit-system-222.1-1.el8.noarch.rpm" + }, + "sha256:207e6396488c1db18fb7b1f2b9952f48c2625f042c5f6a901d41974ce376b0e0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sqlite-libs-3.26.0-10.el8.aarch64.rpm" + }, + "sha256:21685a7b79484a6d684efd86af6fb23dc13aaadc534cc4c4ae3edc0ceb84051b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ipcalc-0.2.4-4.el8.aarch64.rpm" + }, + "sha256:2180d7f1748a5049763d5626b8e14b2c7442e5491a63094a79dded66bcc5c7b0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_idmap-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:22c0e44318e36e04ad1eb4632dcf25db991f481f9a543387d372e1f2ad92561f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/pinentry-1.1.0-2.el8.aarch64.rpm" + }, + "sha256:2310aa11c691bd1f457cb183cec446bd3275da50fedb7998bcdf39e84cb61068": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libverto-libevent-0.3.0-5.el8.aarch64.rpm" + }, + "sha256:2397506a63455e543b201938f605e687de5590d9a06282824e2f6bfdf5e0f149": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsolv-0.7.11-1.el8.aarch64.rpm" + }, + "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tuned-2.14.0-2.el8.noarch.rpm" + }, + "sha256:26725f2da31ba8cf58b34c70bdb763aa21fb9a9fe25ced46e70f071606ffbc94": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libappstream-glib-0.7.14-3.el8.aarch64.rpm" + }, + "sha256:268d9232f0853037100432e9363c659cf99927e03f759fd4884643b560710cd6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libss-1.45.6-1.el8.aarch64.rpm" + }, + "sha256:26b14d8f226962ce712bbccfb245843759e835a24a139eacae86d680043a85a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmount-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:26e7368e961b374cefb947dab3a98387a3da15a86331a0d99d7b0e68ef246626": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnfsidmap-2.3.3-35.el8.aarch64.rpm" + }, + "sha256:2769c1df985e8fea8760d7ca8908eac166a64262c9643c7b0f6a82db570a68f5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libfastjson-0.99.8-2.el8.aarch64.rpm" + }, + "sha256:27ed4654a9c4dfb8417c54cc1a6060c51bd3f1dd16c4ba4bd24dfeba57c5ede1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.aarch64.rpm" + }, + "sha256:2809ad51c6eb6c9a54d64cccc2cd948f6fd4207f32b4493b3f4a9bd0886c894b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcurl-7.61.1-12.el8.aarch64.rpm" + }, + "sha256:28d4282a27a17db514ff30d8c865cb8a306d1c412f9e13c2e617a23912f07dde": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm" + }, + "sha256:290c83afcd2b0a2b17aab95cf72a85da5f8b9f9a9862857c919a0f43e3fce70e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-pkcs11-0.4.10-2.el8.aarch64.rpm" + }, + "sha256:2921d3aa14a509d271ca35256903c142c30f088f7dc889a4c4e15b26316ef5c0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-2.02-84.el8.aarch64.rpm" + }, + "sha256:295a8620b3730a0d9f0c6a21175fdc7270054b7abf28197b4866f72a0a85072d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-systemd-234-8.el8.aarch64.rpm" + }, + "sha256:29ec65fa4b5624c1ab113aa7a33dd9ad87fe3bd8f5aabba51a9aecf19fd0cc52": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cockpit-ws-222.1-1.el8.aarch64.rpm" + }, + "sha256:2b6d1fbf6f54f06c168862e19e03aa0ce32c299fb3f7e4cd1bf4aa9df4b4d995": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/parted-3.2-38.el8.aarch64.rpm" + }, + "sha256:2bbb8eebf42b0f55d735c0f84e2521c339febc7036f2e94332ff013d7406b80a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sssd-client-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:2cddadff38ccef2364a7e40af0e1d9b3bf9c06869c15ceeb655f3cfa431c2083": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-2.26-4.el8.aarch64.rpm" + }, + "sha256:2cfc9f7d8286002d753d12aa9669522222466c5e1e3f10ed81c8d4d23a3e203c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sssd-kcm-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:2d74e0ab14393921c6160fda8dd533b58c0348acdf5ee5c306ffc64221700de2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librepo-1.12.0-1.el8.aarch64.rpm" + }, + "sha256:2d84f6765b1645f867527f493b6153470602a80c75f81545bf619aa92127e4da": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bzip2-libs-1.0.6-26.el8.aarch64.rpm" + }, + "sha256:2dc8e2f52451d1a11b16bbb389a24c58b61a1ba804ee777f9d06dbe4e1fcf6e5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libidn2-2.2.0-1.el8.aarch64.rpm" + }, + "sha256:2df37064ec55f10e06dc0c05647a296b8ca7867251fe44130206052e58d39bda": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/subscription-manager-rhsm-certificates-1.27.9-1.el8.aarch64.rpm" + }, + "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pyOpenSSL-18.0.0-1.el8.noarch.rpm" + }, + "sha256:2e26672ae726ba833187292dcc6c1673a07e26d974fef2f71a83407989eea8a1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-config-generic-049-89.git20200625.el8.aarch64.rpm" + }, + "sha256:2efbfbcce7ef24e433d3c304b6b6b022d1b1b8a972969da1adb1c3c85f9625a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dosfstools-4.1-6.el8.aarch64.rpm" + }, + "sha256:31043a7324411dad6b84f6504a9e9cb7ece9f576acf091be522e484c8b82f469": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-gobject-base-3.28.3-2.el8.aarch64.rpm" + }, + "sha256:320ced09e242f09047f4fab0a7f66aba6de2e42583f6a2e164eadcc1ffd0b915": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mpfr-3.1.6-1.el8.aarch64.rpm" + }, + "sha256:3256e78263462d5d7ab37b696992aedd6f810431641ce8d1e1bc198c797b402b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-1.45.6-1.el8.aarch64.rpm" + }, + "sha256:32c9ff3e0278dbd7022ad76629146ece3fffdc58af14e1eaf97e7052d610daa2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/teamd-1.29-5.el8.aarch64.rpm" + }, + "sha256:332c3cd387659ab5dfbb14ea5e75d1c8e1c8a8833e0314dde3ec758607efb3e4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libproxy-0.4.15-5.2.el8.aarch64.rpm" + }, + "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm" + }, + "sha256:342d7cd5f427c0d9c02336bc4f189225b3b57c5899f5d26b61b351fc37f99489": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setools-4.3.0-1.el8.aarch64.rpm" + }, + "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-oauthlib-2.1.0-1.el8.noarch.rpm" + }, + "sha256:3459ac9ecad925e511502cff687ceb77f52f391303793f7670794a5c0b040f3d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/setroubleshoot-plugins-3.3.12-1.el8.noarch.rpm" + }, + "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-chardet-3.0.4-7.el8.noarch.rpm" + }, + "sha256:36aece7b7a65785985bf0b98701514f12735a87517b8578a3eb3710f82ba4765": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-c-0.13.1-0.2.el8.aarch64.rpm" + }, + "sha256:393b5c2678d104c9f108ea2a353746d68f2111785acf13ffdff6798482d9d8d6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/qemu-guest-agent-4.2.0-29.module+el8.3.0+7212+401047e6.aarch64.rpm" + }, + "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libcomps-0.1.11-4.el8.aarch64.rpm" + }, + "sha256:3a684fd5f1b1d417c6c3e9d1f0d5b846138aa06450ff246425d43d4a20bd619e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/diffutils-3.6-6.el8.aarch64.rpm" + }, + "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-configobj-5.0.6-11.el8.noarch.rpm" + }, + "sha256:3b607f0dbedecb25239e22c1f553c8d70db9d2206a877fa07567fa1a49e233d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcc-8.3.1-5.1.el8.aarch64.rpm" + }, + "sha256:3bf230c85711b285afb968850d7e98eb6b068a06e7ca40e94203e388d8447f48": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnutls-3.6.14-3.el8.aarch64.rpm" + }, + "sha256:3c096d861c04f97c89dcf335d66a169bca3d371d9589e547c50f18b4180a9e6f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-perf-4.18.0-221.el8.aarch64.rpm" + }, + "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dnf-plugins-core-4.0.17-2.el8.noarch.rpm" + }, + "sha256:3d24b1cc90de184aa66cd58a1071888b6de8d34eb8155d6ab6a5ac777281adf5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-netifaces-0.10.6-4.el8.aarch64.rpm" + }, + "sha256:3e40a3103fbf71c83773beac7373d0e790631cb3c918d8b20a883c8e65e70136": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-tools-4.18.0-221.el8.aarch64.rpm" + }, + "sha256:3e570377bfb3946bbbbe32abfc92f800af7922d0a448e3f044ef75b18e97b924": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libxcb-1.13.1-1.el8.aarch64.rpm" + }, + "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pyserial-3.1.1-8.el8.noarch.rpm" + }, + "sha256:3ee66f993ee567b2457a221ed364ae4f8dfe783a5f0e723d9169f95d12f9e696": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-libs-5.33-16.el8.aarch64.rpm" + }, + "sha256:3ee6a4f61935c2f0698ad2c4834a5864920a1e48d55c7800da7c382249895e39": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-0.9.4-2.el8.aarch64.rpm" + }, + "sha256:3ef63ecbebf844bcf682c9482dc0ddd158c955b0f066b62eb9575bb9a9642db5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-1.1.1g-9.el8.aarch64.rpm" + }, + "sha256:3f5765cebcac288cc1b5b118acfbc2016eda7b81ad73923f6f9c21e4731eb0d9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-1.18-1.el8.aarch64.rpm" + }, + "sha256:3f7e5e72ab9e18dbca936b40734c91520242a49a9e98a2f2589f397faa6ad8e8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/info-6.5-6.el8.aarch64.rpm" + }, + "sha256:3f8039ed081aa3f628e947656af825b4541ded3547675098eabb0f177eca45e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/polkit-0.115-11.el8.aarch64.rpm" + }, + "sha256:3fe7c10c144c8fffc00d144317a2bf8029bd9d048432bccfc352dfc6f0995680": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-udev-239-36.el8.aarch64.rpm" + }, + "sha256:4059e9cccbde0401f9af4dea1160a07af8760adbc3e1d964e5c8ac87307eff81": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hdparm-9.54-2.el8.aarch64.rpm" + }, + "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dhcp-common-4.3.6-41.el8.noarch.rpm" + }, + "sha256:41cc2d507fdfbba939c00164a563e770d466f992cb64d3c51a79aec20b31d6d1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.aarch64.rpm" + }, + "sha256:428af99d7ff753fc26a13130115c4dcbbac030776a299583d00c69e8ec6a13ca": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sssd-common-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:432ef41fd5f9ad2b9a797ed105f6e729dcaf19c17df9c1478802af04e898e305": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sudo-1.8.29-6.el8.aarch64.rpm" + }, + "sha256:435a2be84a2b38372965dbd60ffed0ed38a616b8100859787a8bb3b19d9fc4d9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpcap-1.9.1-4.el8.aarch64.rpm" + }, + "sha256:439c408eb3f33e9d8bea308afda0b32fadf7910f7b064c9821499332672a60cf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libldb-2.1.3-2.el8.aarch64.rpm" + }, + "sha256:43ab42c8a58267936a89da99e37d3b9fc56489e958060f600ba047445ca44ee3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/os-prober-1.74-6.el8.aarch64.rpm" + }, + "sha256:448d3ff44e7f32f3b33e891180e248dc1bcd4d410f68015a8b0c30dc7c385aca": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-libs-1.1.1g-9.el8.aarch64.rpm" + }, + "sha256:4633c2b5a93723e1cad477b81f9ccefafed342f8c4474ec305058f99c713229d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-extra-2.02-84.el8.aarch64.rpm" + }, + "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm" + }, + "sha256:471663fca7e3f609834368d69d8f1f469cfc0d3f3e95dc2b79381722d0368edc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.aarch64.rpm" + }, + "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm" + }, + "sha256:47b483c0f556c56f0b1f468603c57834864902ae5a849a18c8a0ca5f76d66c86": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:4804145242848aee094897a4d5d959118efa59e1667593c4e79f300c3ca22ead": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/tcpdump-4.9.3-1.el8.aarch64.rpm" + }, + "sha256:481bbd6d73415d437a73eee7977ec370299acdac44b215a026652debba31783d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtirpc-1.1.4-4.el8.aarch64.rpm" + }, + "sha256:48509ce37ec06c1b15149feec4b2eb5d3a2f0453a41804c9c5d9ef5b8b320d4f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-audit-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm" + }, + "sha256:4874e739ed37bc6a5bfdb6069d4620e5f7efe01d60eb9fd2550c550167c99990": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.aarch64.rpm" + }, + "sha256:48a26ec0664bfc76a415821d63a658653f64e5b142b4b8a08c11c6cbc9e7db85": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-logos-81.1-1.el8.aarch64.rpm" + }, + "sha256:4909edde46b5b2b58d228bacafa3bab5bc5847559d591d59ecd59cdf50d36db4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-hawkey-0.48.0-2.el8.aarch64.rpm" + }, + "sha256:49258c6900ab6f3eaa5f7c7515fcf0a7d604af9d99e7d5f72be7bc75e00a844a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libX11-1.6.8-3.el8.aarch64.rpm" + }, + "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm" + }, + "sha256:4a27cd4496ebdba821b3c7692eeb0c0fff28c6af69fe4fe9e4bf52511639bd6a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kpartx-0.8.4-2.el8.aarch64.rpm" + }, + "sha256:4a308727d8b5a3d4cbbbc7d9b07884ebf6a37b4b6eb9a8edab5b61f449142285": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sg3_utils-1.44-5.el8.aarch64.rpm" + }, + "sha256:4a40a1538c8a488f32476f96d2461c3b792eb0cf5acb998e397d8a9cef8e5461": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libffi-3.1-22.el8.aarch64.rpm" + }, + "sha256:4a7d4068f39dbb01d7f707f9912abfddcc065a62b66144eeb7b7e2f13cec68af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/polkit-pkla-compat-0.1-12.el8.aarch64.rpm" + }, + "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pyudev-0.21.0-7.el8.noarch.rpm" + }, + "sha256:4d8d164f8bd56b7ab6252f009b38525f39fb161c03713414e1583894a265c50a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-all-langpacks-2.28-127.el8.aarch64.rpm" + }, + "sha256:4d8edaa317fd508226bb5421ef423470f3e9153167222dee7bf8fb2346b7875b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-049-89.git20200625.el8.aarch64.rpm" + }, + "sha256:4e4923f05d0032263d570075b9b832b9fc3550cd8f82f9a6b0b9b25061726110": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/popt-1.16-14.el8.aarch64.rpm" + }, + "sha256:4e644e08ef5bd3b33357d6c1ea64e37097c3224ae324456fef022b9e5fdd2947": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm" + }, + "sha256:4efe61bac45e15b3b1bfda93bf3cfbf72d49c7f0452737d01f12f49b6e624175": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/subscription-manager-1.27.9-1.el8.aarch64.rpm" + }, + "sha256:4fe7733b93fad52a48d4b47a6dc55582f3cc41fc2074e42a9b39fc5d407df6d3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-ethtool-0.14-3.el8.aarch64.rpm" + }, + "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm" + }, + "sha256:5176881bae429bec5136195c73b402081184ae2a35519673031a075e855f75f4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libXau-1.0.9-3.el8.aarch64.rpm" + }, + "sha256:518e5412ce19ab733f62c334da8c5545a212c4c971d513eb95590b08a14e3772": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bash-4.4.19-12.el8.aarch64.rpm" + }, + "sha256:532d46a4c0e68bd45eabc3e2ba6d570880344044e1034f5f347b37c470d0dced": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libverto-0.3.0-5.el8.aarch64.rpm" + }, + "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:53fa2fd6a138d00c697b827a77bcc25ec498b1d49bb04ef80594e81ccabc165d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgomp-8.3.1-5.1.el8.aarch64.rpm" + }, + "sha256:540fa90864b4eb0176b56e0c5e9d7bc6130985288ae297b4c38950381b08a827": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/findutils-4.6.0-20.el8.aarch64.rpm" + }, + "sha256:551a506b43e32d21bf7b6333e028733956d5ef3560837a0c84b0d3e598efa046": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/less-530-1.el8.aarch64.rpm" + }, + "sha256:571b590c6ec7a2ac73996dc7d3dd7863aecc43e5dcb1411c191218a32633952b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cronie-1.5.2-4.el8.aarch64.rpm" + }, + "sha256:5801caf2cc296b52b3b89b24eaf431fba2c130e948076aaf345988a754cca65c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libteam-1.29-5.el8.aarch64.rpm" + }, + "sha256:5896ab6e22741dc47c8c70de8c72178e7956cfba2abbda9c6b4ebbc54921b636": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-tools-libs-4.18.0-221.el8.aarch64.rpm" + }, + "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm" + }, + "sha256:593d4df5b8de12ed0ec5a0935cb0bd966e27a631aa0806250ba9f67092ad737f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libX11-common-1.6.8-3.el8.noarch.rpm" + }, + "sha256:5996ff948b5874f894c5ce3495652e6de552addf2331fd82193023d77994ef8f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.aarch64.rpm" + }, + "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-jsonschema-2.6.0-4.el8.noarch.rpm" + }, + "sha256:5a05f1126ed38f752af247dcdf7c958e738b935b8b6d942fd42f423768f05255": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgpg-error-1.31-1.el8.aarch64.rpm" + }, + "sha256:5be5628cff7e0cbf726771bd7af6d8f4bd987a672381a9fb225974bcfc7f9644": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsoup-2.62.3-1.el8.aarch64.rpm" + }, + "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-jsonpointer-1.10-11.el8.noarch.rpm" + }, + "sha256:5eddb5c1febbe6e58491f8e9ee8fc9897298b307e0357c01f49d445cf25283c9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grubby-8.40-41.el8.aarch64.rpm" + }, + "sha256:60934825531d0364649b0441321d12e8823336d54550007258d7523286d2fa2e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/man-db-2.7.6.1-17.el8.aarch64.rpm" + }, + "sha256:6149e0dc3def62605315cbbe59d63b5ca340a791b4c6d3b4d0bda6efee7572f8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sssd-nfs-idmap-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:621e96e91103f2f701e4ac3b8b8b6ef9aab4db5ab8fb3e141eb02e3f328aed79": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-utils-5.3.28-39.el8.aarch64.rpm" + }, + "sha256:62a2878605ca0415fd60adcff4c7068d855d20737498a968fabc646610ccbe5c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-ng-0.7.9-5.el8.aarch64.rpm" + }, + "sha256:634a3cbf0b334e901b6887176fa1b98246be7c4010b4c21cb6fd8fa7aa5fdf94": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/filesystem-3.8-3.el8.aarch64.rpm" + }, + "sha256:635d847cc4dec8a8e1b418adfda2bc0a9e1814ed6c2c6154a5430029d83abd24": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-efi-aa64-2.02-84.el8.aarch64.rpm" + }, + "sha256:63c64d526e9820ddc57a77c053674eeccefef33f16af536dd9b47e816db06988": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-1.26.0-0.2.el8.aarch64.rpm" + }, + "sha256:6421426a896c0bf32738af8131c37001e532f62ac1242f63ebf6248ea34533b0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/squashfs-tools-4.3-19.el8.aarch64.rpm" + }, + "sha256:64ac5cb6fd3da1610812795ce17e09648d89c87513d6284b852a3455b0831d3a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lz4-libs-1.8.3-2.el8.aarch64.rpm" + }, + "sha256:651f38873d3356ec4efb27d04658541080d11cf1ece6335a07db1ca089fa7da3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-0.23.14-5.el8_0.aarch64.rpm" + }, + "sha256:6557d001315e85ac123b1378c5aafb81428e2383debcacf3f91c55476cfc48eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpsl-0.20.2-6.el8.aarch64.rpm" + }, + "sha256:65b8d755ff01dfefa423d2f0bd6fd54cfc4c580da63510e19cf178abb6e26172": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libs-3.6.8-30.el8.aarch64.rpm" + }, + "sha256:664a883f3c7042eb91e0b66fc99c309a729011b4912e4af9397f4e25e1adae90": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/cloud-utils-growpart-0.31-1.el8.noarch.rpm" + }, + "sha256:684080ec9230dce2d32c9b00ae381a00bb950d1984ed0b0e1c55fa6d75b6b099": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpipeline-1.5.0-2.el8.aarch64.rpm" + }, + "sha256:68593fad4413255772bd08ed7f8b578332f0f53e002c8c7473d90c966a87131b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-3.6.8-30.el8.aarch64.rpm" + }, + "sha256:689577d74311a7327aab6fe412a803d72b790957e863b6b78a8621a040306919": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cryptsetup-libs-2.3.3-1.el8.aarch64.rpm" + }, + "sha256:6a6aa18217ae72a0b33e4302da927e6ded92520cbf4d48a5030d4a2f95eeb5d8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/chkconfig-1.13-2.el8.aarch64.rpm" + }, + "sha256:6ae316dfb9723d13a8d36d98d109d4a55017b568ee2070279f1bdccdc699862a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-unbound-1.7.3-14.el8.aarch64.rpm" + }, + "sha256:6b14c3aa52da9a2eae13f2229bac41060ad7421ce5249eca80f4aa53e26344ab": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pciutils-libs-3.6.4-2.el8.aarch64.rpm" + }, + "sha256:6b1dcf4c02ee8c588c0ae44af92ae1060dcdc44f197e624a71fb31c86554ad2c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glib-networking-2.56.1-1.1.el8.aarch64.rpm" + }, + "sha256:6c3ee8b53c0af9bd4958b4e48d4d55fa7c574f444fb42eead1508ad740f97088": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/prefixdevname-0.1.0-6.el8.aarch64.rpm" + }, + "sha256:6cf02dd99fda867d11fdbb28fe0a277328319aece74b864133a8774cacd2bf54": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lsscsi-0.30-1.el8.aarch64.rpm" + }, + "sha256:6d46339afc3d65beb89cbb36052e779e95ef2448a163d26db13d67715dad9cf8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-syspurpose-1.27.9-1.el8.aarch64.rpm" + }, + "sha256:6f2bfbe0f23d3b233aacb72c153ee133839353325f028321eb5ea38b0dc06c02": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libattr-2.4.48-3.el8.aarch64.rpm" + }, + "sha256:6f87f305a3e0e0faf69c2a9d4f277958ca33e85b72c6e4f77a365a5f60ced3d3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-libs-25-16.el8.aarch64.rpm" + }, + "sha256:6fbfaa1e1b1bb4e2362cf3dce0f59a94a78b457904234cbccbe6afacde311c26": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-1.02.171-3.el8.aarch64.rpm" + }, + "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hwdata-0.314-8.5.el8.noarch.rpm" + }, + "sha256:704e1dc996a17815c6dcf7029c0ddb2849d40feaab6e9b9c687af9d95fef825c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libksba-1.3.5-7.el8.aarch64.rpm" + }, + "sha256:727c08fe072ef85837e8db30574aec712cdf67a062eead3e5481ba08425b2395": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/unbound-libs-1.7.3-14.el8.aarch64.rpm" + }, + "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:740e25055db923edcb8a0bddebc688de61a17c6b738162163e9b569e0cda1e18": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libXext-1.3.4-1.el8.aarch64.rpm" + }, + "sha256:760d9056891a60c200984f0655aee1876b3bf890f7486306c05db8e295ae7843": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xfsprogs-5.0.0-4.el8.aarch64.rpm" + }, + "sha256:776323bbc7a9be78c9b6fdd4adec9610c78319cbb5b19d88cbfe2fa8f899ecc5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/quota-4.04-10.el8.aarch64.rpm" + }, + "sha256:77b56d825eb31ca191254d17a4c9399e3c4fe8af42a528c2ad4424bfd865b82d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/expat-2.2.5-4.el8.aarch64.rpm" + }, + "sha256:784d385116891056b618722c933d43c5b395b92fa82e5bc797081317ec6a82ba": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-eula-8.3-0.2.el8.aarch64.rpm" + }, + "sha256:7864fbc866ae5a3e59b4f0f114b77ff52b55e76c5388a917f82a6097f02a4db7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libyaml-0.1.7-5.el8.aarch64.rpm" + }, + "sha256:796cac51b2c1092c4faad372717c6ddc37cad9757111a41e531fe0a8d6c0a9ea": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/brotli-1.0.6-2.el8.aarch64.rpm" + }, + "sha256:7c014b54f7929348f614f8f4eb7a1552b8565c0a57f3a75ff6471dc05f30cafe": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libacl-2.2.53-1.el8.aarch64.rpm" + }, + "sha256:7ce6aa282f9f23c46c44186595924d05f4e7a899b504eb95a0f87008f6620268": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dejavu-fonts-common-2.35-6.el8.noarch.rpm" + }, + "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm" + }, + "sha256:7d3ddbaae06c7fb8d24449e11b418ee07bdd9e07f7f0af57741d220b97228557": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/curl-7.61.1-12.el8.aarch64.rpm" + }, + "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-slip-0.6.4-11.el8.noarch.rpm" + }, + "sha256:7fc33f147b99749fdbae420ed51277cb99d9b6418b7f739fe51c7563945bc0d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hostname-3.20-6.el8.aarch64.rpm" + }, + "sha256:800c9a0d718c641ceee26c8f625b2dcd79a33963e9e7a11930678dc99582a2d0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-libs-239-36.el8.aarch64.rpm" + }, + "sha256:81d2e21dad970c08798c0df00bbda21acf165a370f9612e0d14ce69e5dd6c5c3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grep-3.1-6.el8.aarch64.rpm" + }, + "sha256:8329bf1aedce9ef3a4d7513ef98d3931ad39b84d5c3e73e99936c7f9b87931c2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dbus-1.2.4-15.el8.aarch64.rpm" + }, + "sha256:83301ca502322e0634173460bf8fa35572c36ab8cc2e6e600bf9980f845fc857": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-1.2.0-2.el8.aarch64.rpm" + }, + "sha256:83e470505f558f8cf8414a7fc8fb0d1bc4b16ed15d05ccf7e46332b04d1a0d85": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/util-linux-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:83ffb9eac35272ff70a84f5160b74554fbf3f886ee17ebf55615928085baa7cb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gsettings-desktop-schemas-3.32.0-5.el8.aarch64.rpm" + }, + "sha256:8498846918c7bc7a20553340434cfbfb0d19185adcd0ff52866c6506ab8f747d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcrypt-1.8.5-4.el8.aarch64.rpm" + }, + "sha256:84e7102978d76d80aa40c43efcc71c1e54e819195132df921a8c13cec54328da": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-5.3.28-39.el8.aarch64.rpm" + }, + "sha256:853a828e0d2fa57b69ee46167f0c54dbeba977043f18b03f8912412204d3b8dc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libxml2-2.9.7-8.el8.aarch64.rpm" + }, + "sha256:861346b2e683c09a53c9418a9ed08faf7448e066e3111482c70722cb62a6edce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/polkit-libs-0.115-11.el8.aarch64.rpm" + }, + "sha256:86414db9ca27af26e31feb5b05b09c997c602721ff732afe13c5e79d1ccfe0af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-cairo-1.16.3-6.el8.aarch64.rpm" + }, + "sha256:86ae7501bdf0149728879f488dd4c86907216cb5b021192347a5c10a55382931": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcroco-0.6.12-4.el8.aarch64.rpm" + }, + "sha256:876ffb285aaeddb2c18ae32527bd4ee202710bd8e18d5b410af22937646dcdec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxcrypt-4.1.1-4.el8.aarch64.rpm" + }, + "sha256:8947ffafcbf333c5049c380d26bdd53929e7566dde9f812d12c544f75120bec4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/pixman-0.38.4-1.el8.aarch64.rpm" + }, + "sha256:895cfd814c56f2a592319f2391a736cb33848197124c4be40a9962f7af7e6a15": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libstemmer-0-10.585svn.el8.aarch64.rpm" + }, + "sha256:8ac1003d722e3d5f383c9b970bf6dfbc905007a624abadb63e520d7a93993747": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-6.1-7.20180224.el8.aarch64.rpm" + }, + "sha256:8c0d40edf059bf044314df38c84e26cfbe00bf4e687a6114eacb17251718312b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnl3-3.5.0-1.el8.aarch64.rpm" + }, + "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pycparser-2.14-14.el8.noarch.rpm" + }, + "sha256:8d5c968225f0a3b7c492fdffb57cf0e34fee77c06a64a94a3a8b52edab30eed7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/slang-2.3.2-3.el8.aarch64.rpm" + }, + "sha256:8e2c0324789f42ebb6324847249699eb499544a3e6ad67ccd74713b3c1d6ce78": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-magic-5.33-16.el8.noarch.rpm" + }, + "sha256:8e916224ddbb8a7d8cd305f11087c66df950a318e4ef64290bca1afdc1327950": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/passwd-0.80-3.el8.aarch64.rpm" + }, + "sha256:8ef2fcbe5a8d6e7d393d28838ff458336d16e006bc7d19921f460eb105b88570": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-libs-1.18-1.el8.aarch64.rpm" + }, + "sha256:8f2c073583d6d4347642139a9806174ba64848c6bd4fbc81b7e7e0d42751cc74": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/groff-base-1.22.3-18.el8.aarch64.rpm" + }, + "sha256:90405803c0159cdf0f74a26b6ce064cfd9973e59232b2923ed171a38fc5684a6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-gpg-1.13.1-3.el8.aarch64.rpm" + }, + "sha256:9138a16731ceb7fdbb8661338a5806692a7a95875894aac95069104f44bca234": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcollection-0.7.0-39.el8.aarch64.rpm" + }, + "sha256:91c58481a7e4a9b7f9e0e14844fa73047395c75df95d35afa3b0d8ef3f584491": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-common-2.28-127.el8.aarch64.rpm" + }, + "sha256:925c70a394a76004087fd6e8d94f7edab9de9efb2b81740c875698532ba124c7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-plugin-subscription-manager-1.27.9-1.el8.aarch64.rpm" + }, + "sha256:92bc3c29b5232c55f60c9d0a5426bb04675209b8ee87df5725a83a60944219cb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libXrender-0.9.10-7.el8.aarch64.rpm" + }, + "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm" + }, + "sha256:934205ae1baa04b3921065f73096378f1db65990392340ad32042f86c9b5b247": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sos-3.9.1-4.el8.noarch.rpm" + }, + "sha256:95630378635c5e89eb204b2921dbd5db2e87d949e167fcf022174a3e63b532cb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libref_array-0.1.5-39.el8.aarch64.rpm" + }, + "sha256:95de1777f7e8a734445c5d45e0b77da8b6c41a9b504582ed266d852c677a936b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libuuid-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:964b1d9563e42a176c24cf5c91616ee5cc40de3b1c92038d7fb0392113eaf159": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glib2-2.56.4-8.el8.aarch64.rpm" + }, + "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-slip-dbus-0.6.4-11.el8.noarch.rpm" + }, + "sha256:986683a0edb615a5d45a9c1b0ee3d27f8032c2667cad58d24526085e41010992": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-pam-239-36.el8.aarch64.rpm" + }, + "sha256:98cf1d2d3ca85b3ec31dc56532c3b9f6fa5b3edadc8b4f4125526cdfb2b7507b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cronie-anacron-1.5.2-4.el8.aarch64.rpm" + }, + "sha256:98dd1582b8ab27085379a3a7e598a6e261c62f97a5f3689447cbf1d4af9ae46c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libs-0.180-1.el8.aarch64.rpm" + }, + "sha256:98f838a9775269a0f796151bd54d52c7ac91d4bf1365186772f243bfafbb136a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libaio-0.3.112-1.el8.aarch64.rpm" + }, + "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:9a1c6f2b18126214e9afa768bbf16b29b89ce3169ccbd4bc169000eed143dcb4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dhcp-libs-4.3.6-41.el8.aarch64.rpm" + }, + "sha256:9a22fe8cebacb37d6bc22105db763016689e9ac06bee33fc41693f60b076ff0c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpath_utils-0.2.1-39.el8.aarch64.rpm" + }, + "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm" + }, + "sha256:9a9546fcc510204dc7bcfe61d6ca63f436c01cd9b3f8451c8f07ec4f4fc2ba68": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libuser-0.62-23.el8.aarch64.rpm" + }, + "sha256:9b6fcdd19caee5fe77b9ed17adb3f11769a7109ebcf52d3cb3358d5a9eecc391": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libdnf-0.48.0-2.el8.aarch64.rpm" + }, + "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-2.9-3.el8.aarch64.rpm" + }, + "sha256:9c416279320ab29a8ef4fc32ca60beaec4c8da6054d10695cd2b37af19cd0ee9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libselinux-2.9-3.el8.aarch64.rpm" + }, + "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-babel-2.5.1-5.el8.noarch.rpm" + }, + "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-ply-3.9-8.el8.noarch.rpm" + }, + "sha256:9fdfb9c1ced62828bfcb186bb83caf470b4c14a53611c0ab7f08035333b6dbee": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmodman-2.0.1-17.el8.aarch64.rpm" + }, + "sha256:a05f9b43292810dde4e6acd64eac2a80f047d35533d2d5e647565f75502189fa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-schedutils-0.6-6.el8.aarch64.rpm" + }, + "sha256:a07f96031fbe9507a8d6bb0e14cf0783bc615552e4cfb75131672072f5729de8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libxkbcommon-0.9.1-1.el8.aarch64.rpm" + }, + "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:a213587722f7c8a0291a56f352861ec661604051c952ebf6a428ae969af377d0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_certmap-2.3.0-2.el8.aarch64.rpm" + }, + "sha256:a32db9e3d2321bd5c4e998f7ed6f4459d85f792a16f4fdfb8805f5936d521572": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/c-ares-1.13.0-5.el8.aarch64.rpm" + }, + "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm" + }, + "sha256:a445e982c81c7a64f6660f7f3bf6ed03dac3cd599dcb1e4bae06b8f236ea7e7f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/irqbalance-1.4.0-4.el8.aarch64.rpm" + }, + "sha256:a5c6189b8644cea4d4039375dfe2d828e08a59896e9827ac967782d225a78619": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-cryptography-2.3-3.el8.aarch64.rpm" + }, + "sha256:a6292dd846bc471b22409fc95a5e09c88bcb6176251dc5cc11f4b14a73ddda11": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-8.3-0.2.el8.aarch64.rpm" + }, + "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pysocks-1.6.8-3.el8.noarch.rpm" + }, + "sha256:a7fe54c4d43f925093face259d9fd8f28f06e9c11dcc3ad100b24288c577e4a4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/authselect-libs-1.2.1-2.el8.aarch64.rpm" + }, + "sha256:a840b8193ce9b1b72e3783b9a9bb2ec91947ba3b6f7ac973ae8e0e20a7059117": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shadow-utils-4.6-10.el8.aarch64.rpm" + }, + "sha256:a93b90699f26009debf0ac7b6759daf23afa9f3c851ccd7c98e35d9a89824dcb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sg3_utils-libs-1.44-5.el8.aarch64.rpm" + }, + "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:aa1a6a85493590efb9c0235c15d6a05e8b119f385dc13b3e3abd2315f8c4a6e0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/memstrack-0.1.8-1.el8.aarch64.rpm" + }, + "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/setup-2.12.2-6.el8.noarch.rpm" + }, + "sha256:abeb97ed3fdd82145fd51f8eeaecfca272e4d1418b17a68241e054425a327aa3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/insights-client-3.0.14-2.el8.noarch.rpm" + }, + "sha256:abfda01b6d377de999efa9c2b4870bf3ba43cd50155f036d13aae0ba4a617565": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libndp-1.7-3.el8.aarch64.rpm" + }, + "sha256:acd4674b3fbe01d6cf94eb18a81cdb00beb73bf3d4a25a28e234f31498f5c389": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-dicts-2.9.6-15.el8.aarch64.rpm" + }, + "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rootfiles-8.1-22.el8.noarch.rpm" + }, + "sha256:ad07261ff4f478be9511f7ee749bfbe8b2ba8e28696c2f561caa20e35c535134": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libutempter-1.1.6-14.el8.aarch64.rpm" + }, + "sha256:adab024896eecd08250eb7a7a5e1686df0b945fd1604543877e230163c510f24": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/quota-nls-4.04-10.el8.noarch.rpm" + }, + "sha256:adb9e37c63a055bc106a9676c10a85fdedcb4af64ae062249732e158bc0ae9af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/checkpolicy-2.9-1.el8.aarch64.rpm" + }, + "sha256:adf5e529d714d774ffc43695015cbba845feafa1c49642dd8abbc6148aee4c6d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cockpit-bridge-222.1-1.el8.aarch64.rpm" + }, + "sha256:aeda2c664e2d993e56008f68823d05ec6d7665f2bb65b5f990c2112f0a7f91cb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mokutil-0.3.0-9.el8.aarch64.rpm" + }, + "sha256:af98260ff2c263c9cefcb96d16d200941c1873cda9868b57df51b034066940fe": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-8.0p1-5.el8.aarch64.rpm" + }, + "sha256:afcbadced001b780cb7fc4c180b070acb48c2fff04783d6a4a35d08fae9928d0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdhash-0.5.0-39.el8.aarch64.rpm" + }, + "sha256:b140eb203fe889d1c75ef3b5527033cfeb7a6f0c813638a607c9f10faf52a34b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libelf-0.180-1.el8.aarch64.rpm" + }, + "sha256:b35f92dddd2cd73f7f8d8595ebb197a1c67a214ec2acf960ac673a014f2d9b90": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-server-8.0p1-5.el8.aarch64.rpm" + }, + "sha256:b386b3ec3cb96fe9178fd1d2b245eddff0bdb2742a8f18e25faef1e98c00f42f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-librepo-1.12.0-1.el8.aarch64.rpm" + }, + "sha256:b3f48a0503e35391965a46b4467f5e229a30f847c303b7b5e2747f6ec71aa62f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gssproxy-0.8.0-16.el8.aarch64.rpm" + }, + "sha256:b4fb3d8b0255a5ba9456b61e4f479f2f8355d171263508bbe869af677015fd97": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/policycoreutils-python-utils-2.9-9.el8.noarch.rpm" + }, + "sha256:b5b1f5f7a02f70db056861813ddcf181f2ebba507cd368fbe2c32f262edf7fc6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-rpm-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:b6946db91c0a0b5e39427db028815391dd1e8c7a04faf98bc1031b5490034790": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/virt-what-1.18-6.el8.aarch64.rpm" + }, + "sha256:b7955bb1ba7e944f6e5c36713db3bbc570ba0eb8de11ec6a1fa28cfc5c0029c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/freetype-2.9.1-4.el8.aarch64.rpm" + }, + "sha256:b7bc10e9947763df6e6177b3dbbe77c21f55ed60d26c4c28bfe14a98f7e06189": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-2.9.6-15.el8.aarch64.rpm" + }, + "sha256:b83b5cb8c799dea710e0fffc841abf88495a1f3d04057dd699cff2aac610d7d9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shim-aa64-15-12.aarch64.rpm" + }, + "sha256:b847207a13bec4b7fcfaaf3668d93bc5ad40a6477f976e6aeb59ab431545d0c5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-glib-0.110-2.el8.aarch64.rpm" + }, + "sha256:b90ce065d5ea98845733ff06e47d385937f6293ebddf52144c80f5fe1f296307": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/policycoreutils-2.9-9.el8.aarch64.rpm" + }, + "sha256:b93a509fc65dd88761b4f7f21d8a05f1cd22e878ac59eb7d8e1507f5a2376a1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libedit-3.1-23.20170329cvs.el8.aarch64.rpm" + }, + "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/basesystem-11-5.el8.noarch.rpm" + }, + "sha256:b984d8576520272b1011cc46b03c666cd6abc1bf74b428a8781ca58c6287a007": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/acl-2.2.53-1.el8.aarch64.rpm" + }, + "sha256:b9ceb537921c8d98f1e874c0a39cf0c6a606f469be21be151fa119e4b9c7f06a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libsemanage-2.9-3.el8.aarch64.rpm" + }, + "sha256:ba0f68531fd015a2ce13b9b4269a75a508e308746f2acd65aee5d8e7580cde22": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/nfs-utils-2.3.3-35.el8.aarch64.rpm" + }, + "sha256:ba1364539f16d7c8379d7563fd0634651fa8a05b3f7098a21ba96e1f5641f132": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmodulemd-2.9.4-2.el8.aarch64.rpm" + }, + "sha256:ba66a87402ccc8515e164f597f5d254ad9513979fe3ca1ffabf63c915c0daa73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tar-1.30-5.el8.aarch64.rpm" + }, + "sha256:bae965c689b08ce42f10366e4b441504432ac353d30edb8b4b2cfc798069434f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-libs-1.12.8-11.el8.aarch64.rpm" + }, + "sha256:bc0f9bd34ac6a01dd7272b87e1b7a33045ff8c6793cac02fa639dfc9341e8215": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lua-libs-5.3.4-11.el8.aarch64.rpm" + }, + "sha256:bc3d32d534059d7a7fb535686b2a137564a93910413a8e8a585dbd00a877e9fc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/PackageKit-1.1.12-6.el8.aarch64.rpm" + }, + "sha256:bcd19fd35b5f8535ff5bb15db91e2339c9435908c1123d5e2272fcae15a62260": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgudev-232-4.el8.aarch64.rpm" + }, + "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-jsonpatch-1.21-2.el8.noarch.rpm" + }, + "sha256:bd03a8a056bc9d2df361688583521f5f656e83fc893b90d349b6282178f9330b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-clients-8.0p1-5.el8.aarch64.rpm" + }, + "sha256:bdb8cc675da18f659ba06252f1f2604d171373239804c3cbc6004dadded54cd3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/yum-utils-4.0.17-2.el8.noarch.rpm" + }, + "sha256:bee28477fcd36d5a877d1fe3d61aa876f62128681411718e0c3fc82b95cf8e59": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm" + }, + "sha256:bf267d9571cf568375e261d593236750f400ac536c1c818513106482ebc3fb10": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsigsegv-2.11-5.el8.aarch64.rpm" + }, + "sha256:c00024ec890b67b443e2c40a0580a1263458dc9d09f4bde578d7c045323946b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-cffi-1.11.5-5.el8.aarch64.rpm" + }, + "sha256:c0bfa38aa054fdc993c4fe0764f05f72be1bd7d4d121dddff9cc6f1703c4934e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-gobject-3.28.3-2.el8.aarch64.rpm" + }, + "sha256:c0f53020ecdb8eefb21795b0acf589334e89a9ef339a84d42e61999f53c67d18": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/jansson-2.11-3.el8.aarch64.rpm" + }, + "sha256:c17544abced52ad9df8229c71a0f8c437719c4d1fccd77f2db707be18226aecb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm" + }, + "sha256:c1b5c4668331e8b05a08e7de432cbfb75f8072401bb6651a24e43f64eff8dcc4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsecret-0.18.6-1.el8.aarch64.rpm" + }, + "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm" + }, + "sha256:c22f0d40fbdaaceec711be0cecc122fac4570d126914ce3694a3d6a1178bd487": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gpgme-1.13.1-3.el8.aarch64.rpm" + }, + "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/readline-7.0-10.el8.aarch64.rpm" + }, + "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-idna-2.5-5.el8.noarch.rpm" + }, + "sha256:c321e3a0253fb2691035135b3d3740faa76b8e9c84a0378f480ff85ddd9f16bd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efibootmgr-16-1.el8.aarch64.rpm" + }, + "sha256:c3727553ea6dd925d9c760b23eb617d1cb475fab9c495543868666ad6cd3b088": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-tui-1.26.0-0.2.el8.aarch64.rpm" + }, + "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-asn1crypto-0.24.0-3.el8.noarch.rpm" + }, + "sha256:c4b6cad5e84e65ef2ef4cabfa2a68643187c97767331f026be5e6765ddfa4db8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdk-pixbuf2-2.36.12-5.el8.aarch64.rpm" + }, + "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-hwdata-2.3.6-3.el8.noarch.rpm" + }, + "sha256:c59a19d44466633bf19e18463ece1ec20cdeae962f1ea3613bd09a2ffb160318": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/numactl-libs-2.0.12-11.el8.aarch64.rpm" + }, + "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm" + }, + "sha256:c62bb06ffc0e023172239a519a06ca47d9da2602ee37eb5ef9303b7e1e917e61": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fontconfig-2.13.1-3.el8.aarch64.rpm" + }, + "sha256:c633b98b4dbf96674a69573404819c34d66eb7e19820283fc588f6b10b0e3fc8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-build-libs-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:c7a1a166d4a58fd42848d05e4dd0d8bc459fa3b585396230729978f9cffc4474": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdaemon-0.14-15.el8.aarch64.rpm" + }, + "sha256:c82ca1c0ef4b89f75e8e7edbbae4f3eeb2720a4abd56b0927928cff2d9721186": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-utils-2.9-3.el8.aarch64.rpm" + }, + "sha256:c88d1656b8001ff79175f7d3b7818681e40e54e8fec6fb8556ba8141d437fcfa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.aarch64.rpm" + }, + "sha256:c8a28b4587888435c51f6d1ce42f48b08fb0256e4029ea569e9a02adcb82c85a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsepol-2.9-1.el8.aarch64.rpm" + }, + "sha256:ca87249f90bac96902d18c11a1f8c80566fa090c6473226bdd147e07e3ed21ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/krb5-libs-1.18.2-3.el8.aarch64.rpm" + }, + "sha256:cc7e751a62f9a28b82df0bce0ecfb050364b8688ef69473f1910909e44c5eb98": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libseccomp-2.4.3-1.el8.aarch64.rpm" + }, + "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pytz-2017.2-9.el8.noarch.rpm" + }, + "sha256:cddf8fbd1021116ee137a080d50a06ecd9269beb5042aee5782ca68bab62acf3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/keyutils-1.5.10-6.el8.aarch64.rpm" + }, + "sha256:ce6960fa7831611815e163864a91b70b0ab1ef0f446c2cad1eec13404822cad5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-libs-0.19.8.1-17.el8.aarch64.rpm" + }, + "sha256:ce8c92fa2bef1770f44992db24e1cb8cc850feab03a74cf0ebf741ecb0d160ea": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre2-10.32-2.el8.aarch64.rpm" + }, + "sha256:cf8fdbfcd359aac8bf55500c24e6843baafe8fef35019126c3616806b41415b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ima-evm-utils-1.1-5.el8.aarch64.rpm" + }, + "sha256:cf9a0bbaa7bd075d2af532586ee93ab92b96d9859f53a57f85cd7e0309f8fff6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/zlib-1.2.11-15.el8.aarch64.rpm" + }, + "sha256:cfa188d39884fd4ba36d27e8fb25aed9dbd26efccffbfd01a24c2c580fdb96f1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openldap-2.4.46-15.el8.aarch64.rpm" + }, + "sha256:d173b35182f28b9dd48e4a942f2a20c659bee2f9ac234b60cf8b995aa2421382": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libblkid-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:d20f4bf44fcc90509e7afca364eae0a55c8f33df2f8a69e266f5fcd4b5fa2e4b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.aarch64.rpm" + }, + "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:d2efb494bd4793fdcaaad35a66d7721df7ec53b6fc8da4fa8c8f24008533f38a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtalloc-2.3.1-2.el8.aarch64.rpm" + }, + "sha256:d3fb5a473c44cd8ae6b94d6bf3fc552553d8f4ef28eed439658ea38990ab9db5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-libs-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:d4424a9c946da1eab876298af8f772d5aab1109a1f551ac2f1cd10ee849568de": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-2.28-127.el8.aarch64.rpm" + }, + "sha256:d4467ba499fe1ddd82746ad00d7e86bea59c4827fe1ff8c05132bad1f93ddb7f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-239-36.el8.aarch64.rpm" + }, + "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-urllib3-1.24.2-4.el8.noarch.rpm" + }, + "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:d695df94220c2ef990e502123b3bd8ede8fcfb4f738346dd98d999559b01b6b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-0.3.14-4.el8.aarch64.rpm" + }, + "sha256:d6aa17908468b5e2095526664fce6627dec7a02c26625339c14b9278cc39d4a6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libfdisk-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:d6ab7c8790cd6c9a137d908d840c51c547e950d25f6ab8af3c9ad3899ff6c044": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpwquality-1.4.0-9.el8.aarch64.rpm" + }, + "sha256:d74da38b942dc95929b21c8fcf2c5d2fb4468b78ed14e7a4bcbe933998be4deb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-modules-4.18.0-221.el8.aarch64.rpm" + }, + "sha256:d82c81115472a70d60d2320e254762c76a583ad2190ad45068476c77512588af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm" + }, + "sha256:d868f3e9b48e1acc5c7674292619f1e80a2a2617aa1ab75d7cb4665495bdc654": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-subscription-manager-rhsm-1.27.9-1.el8.aarch64.rpm" + }, + "sha256:d890d028f59e2553730fad3dbea0e1a245c92c24836513fa2281194b1c90b53a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/procps-ng-3.3.15-2.el8.aarch64.rpm" + }, + "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-requests-2.20.0-2.1.el8_1.noarch.rpm" + }, + "sha256:d9a4628bd8d3e776f626be4cb5edec305c2ff894d7c5cc7e33e212545721053a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm" + }, + "sha256:da4b9bfad26d559485ade669556512acfe93ba23d204f2556bac82c09401b4e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libunistring-0.9.9-3.el8.aarch64.rpm" + }, + "sha256:da4d193d5f0caf7a196f3bd4aa1225072b522521d82fca8edecc6546b5460ac6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.aarch64.rpm" + }, + "sha256:daf36ee86ec6001770ae68bdd82409526faf4b9b1313a6b74fb54cfb98ff571e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/npth-1.5-4.el8.aarch64.rpm" + }, + "sha256:db1fad3c2d8735e69084bd4b09ea963938e4dde2f2e096dc7a4ce146f18b7ab0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fontpackages-filesystem-1.44-22.el8.noarch.rpm" + }, + "sha256:db817b5d2f9d678fd0fee30e52ed080fdb5c9dd723cd57f7d6b0133293502047": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efivar-libs-36-1.el8.aarch64.rpm" + }, + "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:dc37d12420a2593c46619e9b67a0115255a0c7334f547871ce08e329bf5d15a2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-1.12.8-11.el8.aarch64.rpm" + }, + "sha256:dcda73e0ea7b5d2710528fc6df135d435281d1f4d2be0018bb6f1858e818d599": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cpio-2.12-8.el8.aarch64.rpm" + }, + "sha256:dd379385bd1d2e05f50c4795e5a0eff9030fdac0fd2579bb4b56233257672b27": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dejavu-sans-mono-fonts-2.35-6.el8.noarch.rpm" + }, + "sha256:de28a06359abc39016fc8fb730773e00a3fa2ec8360a037a4dce79cf3482bacb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/sscg-2.3.3-14.el8.aarch64.rpm" + }, + "sha256:deaa0958c9fb57773dfdf74567b658d273cea81186b913aa1473867dc07b335b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dmidecode-3.2-6.el8.aarch64.rpm" + }, + "sha256:df1f1d61216be55ab9cadc9832e613ffd2350ca8dc03e27f537f22dc0f32e171": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/snappy-1.1.7-5.el8.aarch64.rpm" + }, + "sha256:dfaf74e2116ee30d1882b3461de90d3fb6faad4468eb0678f845d105b4439a83": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bind-export-libs-9.11.20-3.el8.aarch64.rpm" + }, + "sha256:dfdec57ff520511d1d4ef9d913d90fc8d6ac98685cbc12fb568c8980f2a73f1a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libarchive-3.3.2-9.el8.aarch64.rpm" + }, + "sha256:dfea8e48e0cf3d8984237e3d5fb715c7edd9b1f8db03faaefc42a8046b45dab8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbxtool-8-5.el8.aarch64.rpm" + }, + "sha256:e08305aecd924631284ddaeae39a83cca85495389d4ddef75410a32af49f946d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fuse-libs-2.9.7-12.el8.aarch64.rpm" + }, + "sha256:e085cf8bddcf09c908d925688dae077300d2964b40bd060af252d26a963cfe50": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-common-8.30-8.el8.aarch64.rpm" + }, + "sha256:e09e950b0a0842577364565380ba40e8c4f027919dc880378b606c2dafc5693b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libmaxminddb-1.2.0-10.el8.aarch64.rpm" + }, + "sha256:e0faa8a6bc43432619a2b6a26e9f1323d30cda945580d8bc0f6c2fe742b71924": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gawk-4.2.1-1.el8.aarch64.rpm" + }, + "sha256:e160910d31a37afeea87df306264fb1f727cbca574d2c234cdca856f5311fbd6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gobject-introspection-1.56.1-1.el8.aarch64.rpm" + }, + "sha256:e1826902c98cca301a4e0876b34e6c77f1688a1fb613c265cea37e2ee40e7884": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kexec-tools-2.0.20-29.el8.aarch64.rpm" + }, + "sha256:e1bee08f1e76f8b820a59b5c228a0c1b4eaa7fc70c7d840251a04a74d517e25c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-squash-049-89.git20200625.el8.aarch64.rpm" + }, + "sha256:e2c4ac0f7abf75cbcc7a6fb35412820c267f1a8ce614f41b60d901918c4616d5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/nettle-3.4.1-2.el8.aarch64.rpm" + }, + "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/yum-4.2.23-2.el8.noarch.rpm" + }, + "sha256:e426534c59b3a35068877d324dd34d643ad7c84d2c406b2e6502ac6c2a367d39": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-5.2.4-3.el8.aarch64.rpm" + }, + "sha256:e4ec1966f9bc7cbc898fe7550600ae3e9e4f8afbcdd3f6e74afe1965247653ba": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/keyutils-libs-1.5.10-6.el8.aarch64.rpm" + }, + "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-linux-procfs-0.6.2-2.el8.noarch.rpm" + }, + "sha256:e55bf252e792f27f076101e94dfbbac97dabeea0f7893a4cb9b111a0b72d187f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libreport-filesystem-2.9.5-11.el8.aarch64.rpm" + }, + "sha256:e5f82f102f51d88aa517bbebd170795a571b7ddc3036574b92b498cc13704d98": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcom_err-1.45.6-1.el8.aarch64.rpm" + }, + "sha256:e5f98b24c13e975046890306bc9f840d016c9db2204e7632b221a11dcbb3e9a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpcbind-1.2.5-7.el8.aarch64.rpm" + }, + "sha256:e6194926699147659c3a35d9330b5e9706b203aa806c4023c258559f9a0f8ae7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/subscription-manager-cockpit-1.27.9-1.el8.noarch.rpm" + }, + "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-policycoreutils-2.9-9.el8.noarch.rpm" + }, + "sha256:e82699d15e4e6ff7825629d7c1c8a0f50a5519b6e5328472de91a0deddb9cf3d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gzip-1.9-9.el8.aarch64.rpm" + }, + "sha256:e9487db2fdce1f494ee1582787a1afc1ea4e0429189db8be0ddbb0af2676c4b6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librhsm-0.0.3-3.el8.aarch64.rpm" + }, + "sha256:eaf3c7104d3ebd0cdda3d6ce44f4c79eec0a8ce3ce71cbb0d9dfe716f58a105d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-tools-1.12.8-11.el8.aarch64.rpm" + }, + "sha256:ebcaa2d2ec8ddaa66d042a208ccee6b13735ffba04fe3f326954cd76fa4f5910": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iputils-20180629-2.el8.aarch64.rpm" + }, + "sha256:ec40be9e0b2bb03f7b057a7a9342ffbd86129d58828fb310f445bc506261eb0e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.aarch64.rpm" + }, + "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm" + }, + "sha256:ed28e1e31109e27ce1c676914364c9f1dd46b71d00cb4cf13931f0fec6cf6978": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtasn1-4.13-3.el8.aarch64.rpm" + }, + "sha256:ed8e018fb3a2ae3243b047b7f25cd7bd0b5b73abc6f254de3a7d13a6a568e4a4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtdb-1.4.3-1.el8.aarch64.rpm" + }, + "sha256:edae480b0177d04b0b3ff54105c77c0cf4ec565c5234b10e2967f912290c4758": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/cairo-gobject-1.15.12-3.el8.aarch64.rpm" + }, + "sha256:edba68c63891b1171417b8d3af5827cc45a37210d18d701c0e178870e5435031": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/net-tools-2.0-0.52.20160912git.el8.aarch64.rpm" + }, + "sha256:eea9359070225c205cd9233c98fc3e3eaa41848148b726a4ec8414575ae3730e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rsync-3.1.3-8.el8.aarch64.rpm" + }, + "sha256:f07b1f40ebb1fbe5c24e68a38b5f768a21e2ec2254d4bd8ff61fb0bde72f64ce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.aarch64.rpm" + }, + "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm" + }, + "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm" + }, + "sha256:f237a314daeeb228f767e1521edffa9e9b15b07695ba1008b0f2b6807085b9cb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lzo-2.08-14.el8.aarch64.rpm" + }, + "sha256:f35c0da3cff05ded33c0cb4f202dbb52a5caabec8b1897d5057df83c284d62f1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsmartcols-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:f4e63e7eedc0266a575eb6107f41c5f20ca0505a0e80145c21b9741674d5c0b5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libstdc++-8.3.1-5.1.el8.aarch64.rpm" + }, + "sha256:f4f5cc3080dc150c47b27383a344937fe17a679cb7046ca76165654d4e207a0b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iproute-5.3.0-5.el8.aarch64.rpm" + }, + "sha256:f6df1feba76d87214433eee205e3b99621dcd78b485ed5f99ba2658117786b6c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/newt-0.52.20-11.el8.aarch64.rpm" + }, + "sha256:f700797810fb2bdbba5a0b31e10c361360a87bac1a282da109273194a25bf6ef": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-2.2.20-2.el8.aarch64.rpm" + }, + "sha256:f769edf78f42bae1bd183a6f4a49d74822db2b5e830147178d197be1cd67a306": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-network-049-89.git20200625.el8.aarch64.rpm" + }, + "sha256:f7ccbe0d7b4a61b5a47253f168f8efcdbf41ad0755e678f9edcd2f6a69c93c7d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-5.33-16.el8.aarch64.rpm" + }, + "sha256:f7de2bbb3653c3033d43f645ac26e91c788527c0b4d5e7238dea54c3adc6f1a1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/initscripts-10.00.8-1.el8.aarch64.rpm" + }, + "sha256:f847957437e7f24844930c4a3ff64c5f7877f083553f48eeadca3c5f5e5c728e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pigz-2.4-4.el8.aarch64.rpm" + }, + "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm" + }, + "sha256:f96bc0d82d4c6934659c23a6771515e78bf2252ed24d32c78001260ee6e36c8d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-daemon-1.12.8-11.el8.aarch64.rpm" + }, + "sha256:f99f5edde9ad4574b84264c467420c910b31f78683fbf1b63d106a7e6c9d64a3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-libs-6.1-7.20180224.el8.aarch64.rpm" + }, + "sha256:fa80a7e82e231dc77b3e44edd2cbf5b3d1657e009e59f15bbe8d50a4290b7c82": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmetalink-0.1.3-7.el8.aarch64.rpm" + }, + "sha256:fac29887224d91e8190a569b3ac5be1168034f36c9c234576ea3cefe686e46cd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdnf-0.48.0-2.el8.aarch64.rpm" + }, + "sha256:fb263177eee60c26b7acaa76cb640c3d7ab6928e73c8af80b2111a247bd61ece": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-lib-0.3.14-4.el8.aarch64.rpm" + }, + "sha256:fb56b7a416e12da0782ae8ba7396bc03a2f8844c2efcb5df3f8b9e74eb8b8059": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxml2-2.9.7-8.el8.aarch64.rpm" + }, + "sha256:fb97246f1e22b2db98fc309470c4d87755ecc59e5b98047c52c4fedbb08d9b6f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rhsm-icons-1.27.9-1.el8.noarch.rpm" + }, + "sha256:fc51460213b3bf5b67f08f2695aae8d728f614adbbacb917a0825e4ebfbc3e68": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hardlink-1.3-6.el8.aarch64.rpm" + }, + "sha256:fd202f857b3c5a15b8f66f86fd515c44a47c87c028d7db766661758dc3673436": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsysfs-2.1.0-24.el8.aarch64.rpm" + }, + "sha256:fd75c594f871a3353d326833e630ea1d28e5f446f796b836dc628f8c9c039f88": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pydbus-0.6.0-5.el8.noarch.rpm" + }, + "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm" + }, + "sha256:fddf61e9024c41073442ccff0c9990fa004e9b183f391c4e3cf3853e5ae6062c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-0.19.8.1-17.el8.aarch64.rpm" + }, + "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-jwt-1.6.1-2.el8.noarch.rpm" + }, + "sha256:fea4eb54fe59451b76fb40b9bd15ff41f0f51bb7371f94b2f5df572ef917d037": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre-8.42-4.el8.aarch64.rpm" + }, + "sha256:ff9fc6467a4c2fd0c22c419a9cdb7a524d1c69d0c87aa09f31728bef9f692f76": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcomps-0.1.11-4.el8.aarch64.rpm" + }, + "sha256:ffc4464926a4e9a9129af0773bd9caab04fd2cd3e3ded760a891d0dc338265a4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/PackageKit-glib-1.1.12-6.el8.aarch64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:b984d8576520272b1011cc46b03c666cd6abc1bf74b428a8781ca58c6287a007" + }, + { + "checksum": "sha256:d9a4628bd8d3e776f626be4cb5edec305c2ff894d7c5cc7e33e212545721053a" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:518e5412ce19ab733f62c334da8c5545a212c4c971d513eb95590b08a14e3772" + }, + { + "checksum": "sha256:796cac51b2c1092c4faad372717c6ddc37cad9757111a41e531fe0a8d6c0a9ea" + }, + { + "checksum": "sha256:2d84f6765b1645f867527f493b6153470602a80c75f81545bf619aa92127e4da" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:6a6aa18217ae72a0b33e4302da927e6ded92520cbf4d48a5030d4a2f95eeb5d8" + }, + { + "checksum": "sha256:15c33124ac0479d34f1f58d2bd24cc52db7089b4a8681c276a3fd0d6dfe4fc72" + }, + { + "checksum": "sha256:e085cf8bddcf09c908d925688dae077300d2964b40bd060af252d26a963cfe50" + }, + { + "checksum": "sha256:dcda73e0ea7b5d2710528fc6df135d435281d1f4d2be0018bb6f1858e818d599" + }, + { + "checksum": "sha256:b7bc10e9947763df6e6177b3dbbe77c21f55ed60d26c4c28bfe14a98f7e06189" + }, + { + "checksum": "sha256:acd4674b3fbe01d6cf94eb18a81cdb00beb73bf3d4a25a28e234f31498f5c389" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:689577d74311a7327aab6fe412a803d72b790957e863b6b78a8621a040306919" + }, + { + "checksum": "sha256:7d3ddbaae06c7fb8d24449e11b418ee07bdd9e07f7f0af57741d220b97228557" + }, + { + "checksum": "sha256:41cc2d507fdfbba939c00164a563e770d466f992cb64d3c51a79aec20b31d6d1" + }, + { + "checksum": "sha256:dc37d12420a2593c46619e9b67a0115255a0c7334f547871ce08e329bf5d15a2" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:f96bc0d82d4c6934659c23a6771515e78bf2252ed24d32c78001260ee6e36c8d" + }, + { + "checksum": "sha256:bae965c689b08ce42f10366e4b441504432ac353d30edb8b4b2cfc798069434f" + }, + { + "checksum": "sha256:eaf3c7104d3ebd0cdda3d6ce44f4c79eec0a8ce3ce71cbb0d9dfe716f58a105d" + }, + { + "checksum": "sha256:6fbfaa1e1b1bb4e2362cf3dce0f59a94a78b457904234cbccbe6afacde311c26" + }, + { + "checksum": "sha256:057b6632870b8c3c0c950a19092ef2f9749bf3d1a37ccb083bf42ca6404db066" + }, + { + "checksum": "sha256:3a684fd5f1b1d417c6c3e9d1f0d5b846138aa06450ff246425d43d4a20bd619e" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:2efbfbcce7ef24e433d3c304b6b6b022d1b1b8a972969da1adb1c3c85f9625a7" + }, + { + "checksum": "sha256:4d8edaa317fd508226bb5421ef423470f3e9153167222dee7bf8fb2346b7875b" + }, + { + "checksum": "sha256:3256e78263462d5d7ab37b696992aedd6f810431641ce8d1e1bc198c797b402b" + }, + { + "checksum": "sha256:da4d193d5f0caf7a196f3bd4aa1225072b522521d82fca8edecc6546b5460ac6" + }, + { + "checksum": "sha256:c88d1656b8001ff79175f7d3b7818681e40e54e8fec6fb8556ba8141d437fcfa" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:b140eb203fe889d1c75ef3b5527033cfeb7a6f0c813638a607c9f10faf52a34b" + }, + { + "checksum": "sha256:98dd1582b8ab27085379a3a7e598a6e261c62f97a5f3689447cbf1d4af9ae46c" + }, + { + "checksum": "sha256:77b56d825eb31ca191254d17a4c9399e3c4fe8af42a528c2ad4424bfd865b82d" + }, + { + "checksum": "sha256:f7ccbe0d7b4a61b5a47253f168f8efcdbf41ad0755e678f9edcd2f6a69c93c7d" + }, + { + "checksum": "sha256:3ee66f993ee567b2457a221ed364ae4f8dfe783a5f0e723d9169f95d12f9e696" + }, + { + "checksum": "sha256:634a3cbf0b334e901b6887176fa1b98246be7c4010b4c21cb6fd8fa7aa5fdf94" + }, + { + "checksum": "sha256:540fa90864b4eb0176b56e0c5e9d7bc6130985288ae297b4c38950381b08a827" + }, + { + "checksum": "sha256:e08305aecd924631284ddaeae39a83cca85495389d4ddef75410a32af49f946d" + }, + { + "checksum": "sha256:e0faa8a6bc43432619a2b6a26e9f1323d30cda945580d8bc0f6c2fe742b71924" + }, + { + "checksum": "sha256:3f5765cebcac288cc1b5b118acfbc2016eda7b81ad73923f6f9c21e4731eb0d9" + }, + { + "checksum": "sha256:8ef2fcbe5a8d6e7d393d28838ff458336d16e006bc7d19921f460eb105b88570" + }, + { + "checksum": "sha256:fddf61e9024c41073442ccff0c9990fa004e9b183f391c4e3cf3853e5ae6062c" + }, + { + "checksum": "sha256:ce6960fa7831611815e163864a91b70b0ab1ef0f446c2cad1eec13404822cad5" + }, + { + "checksum": "sha256:964b1d9563e42a176c24cf5c91616ee5cc40de3b1c92038d7fb0392113eaf159" + }, + { + "checksum": "sha256:d4424a9c946da1eab876298af8f772d5aab1109a1f551ac2f1cd10ee849568de" + }, + { + "checksum": "sha256:4d8d164f8bd56b7ab6252f009b38525f39fb161c03713414e1583894a265c50a" + }, + { + "checksum": "sha256:91c58481a7e4a9b7f9e0e14844fa73047395c75df95d35afa3b0d8ef3f584491" + }, + { + "checksum": "sha256:19efe6f125c00123ccc6d96e51eb61e711f3ea01f32d18cce14d3b614217c58e" + }, + { + "checksum": "sha256:f700797810fb2bdbba5a0b31e10c361360a87bac1a282da109273194a25bf6ef" + }, + { + "checksum": "sha256:0b4564ad3a799af1a4a0de33b0952f6056d942b0cfa39b73e9375bf0c05b3191" + }, + { + "checksum": "sha256:3bf230c85711b285afb968850d7e98eb6b068a06e7ca40e94203e388d8447f48" + }, + { + "checksum": "sha256:c22f0d40fbdaaceec711be0cecc122fac4570d126914ce3694a3d6a1178bd487" + }, + { + "checksum": "sha256:81d2e21dad970c08798c0df00bbda21acf165a370f9612e0d14ce69e5dd6c5c3" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:2921d3aa14a509d271ca35256903c142c30f088f7dc889a4c4e15b26316ef5c0" + }, + { + "checksum": "sha256:126d980678e5b687c775cf857b4013306f1a761353370258a0f04d92a3553f92" + }, + { + "checksum": "sha256:5eddb5c1febbe6e58491f8e9ee8fc9897298b307e0357c01f49d445cf25283c9" + }, + { + "checksum": "sha256:e82699d15e4e6ff7825629d7c1c8a0f50a5519b6e5328472de91a0deddb9cf3d" + }, + { + "checksum": "sha256:fc51460213b3bf5b67f08f2695aae8d728f614adbbacb917a0825e4ebfbc3e68" + }, + { + "checksum": "sha256:cf8fdbfcd359aac8bf55500c24e6843baafe8fef35019126c3616806b41415b3" + }, + { + "checksum": "sha256:3f7e5e72ab9e18dbca936b40734c91520242a49a9e98a2f2589f397faa6ad8e8" + }, + { + "checksum": "sha256:0fd7dd5b060e7533144ad7a3cae2453ad6f87650010f328879b10c7c4cba0c04" + }, + { + "checksum": "sha256:36aece7b7a65785985bf0b98701514f12735a87517b8578a3eb3710f82ba4765" + }, + { + "checksum": "sha256:1143ac623a74d7feaaaf293c18d942d243248f6356628f87216670c10d11687b" + }, + { + "checksum": "sha256:10ac3bf7565725a55b0aef56f65befd0d320219fc83adfab6e564c19f8c44bd6" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:e4ec1966f9bc7cbc898fe7550600ae3e9e4f8afbcdd3f6e74afe1965247653ba" + }, + { + "checksum": "sha256:1091a799d34a42d2e42ac462b4f979a55d17513eca5a00bad9bdba56cca83357" + }, + { + "checksum": "sha256:6f87f305a3e0e0faf69c2a9d4f277958ca33e85b72c6e4f77a365a5f60ced3d3" + }, + { + "checksum": "sha256:4a27cd4496ebdba821b3c7692eeb0c0fff28c6af69fe4fe9e4bf52511639bd6a" + }, + { + "checksum": "sha256:ca87249f90bac96902d18c11a1f8c80566fa090c6473226bdd147e07e3ed21ec" + }, + { + "checksum": "sha256:7c014b54f7929348f614f8f4eb7a1552b8565c0a57f3a75ff6471dc05f30cafe" + }, + { + "checksum": "sha256:98f838a9775269a0f796151bd54d52c7ac91d4bf1365186772f243bfafbb136a" + }, + { + "checksum": "sha256:dfdec57ff520511d1d4ef9d913d90fc8d6ac98685cbc12fb568c8980f2a73f1a" + }, + { + "checksum": "sha256:0f1a02850c102e2a186787504f965c0c10d6432b9f600c18bc2f520e55f04a8c" + }, + { + "checksum": "sha256:6f2bfbe0f23d3b233aacb72c153ee133839353325f028321eb5ea38b0dc06c02" + }, + { + "checksum": "sha256:d173b35182f28b9dd48e4a942f2a20c659bee2f9ac234b60cf8b995aa2421382" + }, + { + "checksum": "sha256:2cddadff38ccef2364a7e40af0e1d9b3bf9c06869c15ceeb655f3cfa431c2083" + }, + { + "checksum": "sha256:62a2878605ca0415fd60adcff4c7068d855d20737498a968fabc646610ccbe5c" + }, + { + "checksum": "sha256:e5f82f102f51d88aa517bbebd170795a571b7ddc3036574b92b498cc13704d98" + }, + { + "checksum": "sha256:ff9fc6467a4c2fd0c22c419a9cdb7a524d1c69d0c87aa09f31728bef9f692f76" + }, + { + "checksum": "sha256:86ae7501bdf0149728879f488dd4c86907216cb5b021192347a5c10a55382931" + }, + { + "checksum": "sha256:2809ad51c6eb6c9a54d64cccc2cd948f6fd4207f32b4493b3f4a9bd0886c894b" + }, + { + "checksum": "sha256:84e7102978d76d80aa40c43efcc71c1e54e819195132df921a8c13cec54328da" + }, + { + "checksum": "sha256:621e96e91103f2f701e4ac3b8b8b6ef9aab4db5ab8fb3e141eb02e3f328aed79" + }, + { + "checksum": "sha256:fac29887224d91e8190a569b3ac5be1168034f36c9c234576ea3cefe686e46cd" + }, + { + "checksum": "sha256:058822931f4c34c18675116c1b02b718de4044c1019acb0d5f97417f00a30ba7" + }, + { + "checksum": "sha256:d6aa17908468b5e2095526664fce6627dec7a02c26625339c14b9278cc39d4a6" + }, + { + "checksum": "sha256:4a40a1538c8a488f32476f96d2461c3b792eb0cf5acb998e397d8a9cef8e5461" + }, + { + "checksum": "sha256:3b607f0dbedecb25239e22c1f553c8d70db9d2206a877fa07567fa1a49e233d7" + }, + { + "checksum": "sha256:8498846918c7bc7a20553340434cfbfb0d19185adcd0ff52866c6506ab8f747d" + }, + { + "checksum": "sha256:53fa2fd6a138d00c697b827a77bcc25ec498b1d49bb04ef80594e81ccabc165d" + }, + { + "checksum": "sha256:5a05f1126ed38f752af247dcdf7c958e738b935b8b6d942fd42f423768f05255" + }, + { + "checksum": "sha256:2dc8e2f52451d1a11b16bbb389a24c58b61a1ba804ee777f9d06dbe4e1fcf6e5" + }, + { + "checksum": "sha256:83301ca502322e0634173460bf8fa35572c36ab8cc2e6e600bf9980f845fc857" + }, + { + "checksum": "sha256:f07b1f40ebb1fbe5c24e68a38b5f768a21e2ec2254d4bd8ff61fb0bde72f64ce" + }, + { + "checksum": "sha256:704e1dc996a17815c6dcf7029c0ddb2849d40feaab6e9b9c687af9d95fef825c" + }, + { + "checksum": "sha256:fa80a7e82e231dc77b3e44edd2cbf5b3d1657e009e59f15bbe8d50a4290b7c82" + }, + { + "checksum": "sha256:ba1364539f16d7c8379d7563fd0634651fa8a05b3f7098a21ba96e1f5641f132" + }, + { + "checksum": "sha256:26b14d8f226962ce712bbccfb245843759e835a24a139eacae86d680043a85a7" + }, + { + "checksum": "sha256:4874e739ed37bc6a5bfdb6069d4620e5f7efe01d60eb9fd2550c550167c99990" + }, + { + "checksum": "sha256:471663fca7e3f609834368d69d8f1f469cfc0d3f3e95dc2b79381722d0368edc" + }, + { + "checksum": "sha256:435a2be84a2b38372965dbd60ffed0ed38a616b8100859787a8bb3b19d9fc4d9" + }, + { + "checksum": "sha256:6557d001315e85ac123b1378c5aafb81428e2383debcacf3f91c55476cfc48eb" + }, + { + "checksum": "sha256:d6ab7c8790cd6c9a137d908d840c51c547e950d25f6ab8af3c9ad3899ff6c044" + }, + { + "checksum": "sha256:2d74e0ab14393921c6160fda8dd533b58c0348acdf5ee5c306ffc64221700de2" + }, + { + "checksum": "sha256:e55bf252e792f27f076101e94dfbbac97dabeea0f7893a4cb9b111a0b72d187f" + }, + { + "checksum": "sha256:e9487db2fdce1f494ee1582787a1afc1ea4e0429189db8be0ddbb0af2676c4b6" + }, + { + "checksum": "sha256:cc7e751a62f9a28b82df0bce0ecfb050364b8688ef69473f1910909e44c5eb98" + }, + { + "checksum": "sha256:c1b5c4668331e8b05a08e7de432cbfb75f8072401bb6651a24e43f64eff8dcc4" + }, + { + "checksum": "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc" + }, + { + "checksum": "sha256:c82ca1c0ef4b89f75e8e7edbbae4f3eeb2720a4abd56b0927928cff2d9721186" + }, + { + "checksum": "sha256:140146ebcbadd9b0f2aa5c2fcde5c93888f2d84ce61a2a4cf148ef435d1ba410" + }, + { + "checksum": "sha256:c8a28b4587888435c51f6d1ce42f48b08fb0256e4029ea569e9a02adcb82c85a" + }, + { + "checksum": "sha256:bf267d9571cf568375e261d593236750f400ac536c1c818513106482ebc3fb10" + }, + { + "checksum": "sha256:f35c0da3cff05ded33c0cb4f202dbb52a5caabec8b1897d5057df83c284d62f1" + }, + { + "checksum": "sha256:2397506a63455e543b201938f605e687de5590d9a06282824e2f6bfdf5e0f149" + }, + { + "checksum": "sha256:268d9232f0853037100432e9363c659cf99927e03f759fd4884643b560710cd6" + }, + { + "checksum": "sha256:3ee6a4f61935c2f0698ad2c4834a5864920a1e48d55c7800da7c382249895e39" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:f4e63e7eedc0266a575eb6107f41c5f20ca0505a0e80145c21b9741674d5c0b5" + }, + { + "checksum": "sha256:ed28e1e31109e27ce1c676914364c9f1dd46b71d00cb4cf13931f0fec6cf6978" + }, + { + "checksum": "sha256:481bbd6d73415d437a73eee7977ec370299acdac44b215a026652debba31783d" + }, + { + "checksum": "sha256:da4b9bfad26d559485ade669556512acfe93ba23d204f2556bac82c09401b4e7" + }, + { + "checksum": "sha256:01e486a3be67325e9692e909f5c6534137ee6a6df185ba2c09d4d50fe6c738f6" + }, + { + "checksum": "sha256:ad07261ff4f478be9511f7ee749bfbe8b2ba8e28696c2f561caa20e35c535134" + }, + { + "checksum": "sha256:95de1777f7e8a734445c5d45e0b77da8b6c41a9b504582ed266d852c677a936b" + }, + { + "checksum": "sha256:532d46a4c0e68bd45eabc3e2ba6d570880344044e1034f5f347b37c470d0dced" + }, + { + "checksum": "sha256:876ffb285aaeddb2c18ae32527bd4ee202710bd8e18d5b410af22937646dcdec" + }, + { + "checksum": "sha256:fb56b7a416e12da0782ae8ba7396bc03a2f8844c2efcb5df3f8b9e74eb8b8059" + }, + { + "checksum": "sha256:7864fbc866ae5a3e59b4f0f114b77ff52b55e76c5388a917f82a6097f02a4db7" + }, + { + "checksum": "sha256:19d1de27d2f62b4a55735233807f70a1e8ff7551fed97ee8650dbd09c1ef50ea" + }, + { + "checksum": "sha256:bc0f9bd34ac6a01dd7272b87e1b7a33045ff8c6793cac02fa639dfc9341e8215" + }, + { + "checksum": "sha256:64ac5cb6fd3da1610812795ce17e09648d89c87513d6284b852a3455b0831d3a" + }, + { + "checksum": "sha256:320ced09e242f09047f4fab0a7f66aba6de2e42583f6a2e164eadcc1ffd0b915" + }, + { + "checksum": "sha256:8ac1003d722e3d5f383c9b970bf6dfbc905007a624abadb63e520d7a93993747" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:f99f5edde9ad4574b84264c467420c910b31f78683fbf1b63d106a7e6c9d64a3" + }, + { + "checksum": "sha256:e2c4ac0f7abf75cbcc7a6fb35412820c267f1a8ce614f41b60d901918c4616d5" + }, + { + "checksum": "sha256:daf36ee86ec6001770ae68bdd82409526faf4b9b1313a6b74fb54cfb98ff571e" + }, + { + "checksum": "sha256:cfa188d39884fd4ba36d27e8fb25aed9dbd26efccffbfd01a24c2c580fdb96f1" + }, + { + "checksum": "sha256:3ef63ecbebf844bcf682c9482dc0ddd158c955b0f066b62eb9575bb9a9642db5" + }, + { + "checksum": "sha256:448d3ff44e7f32f3b33e891180e248dc1bcd4d410f68015a8b0c30dc7c385aca" + }, + { + "checksum": "sha256:290c83afcd2b0a2b17aab95cf72a85da5f8b9f9a9862857c919a0f43e3fce70e" + }, + { + "checksum": "sha256:43ab42c8a58267936a89da99e37d3b9fc56489e958060f600ba047445ca44ee3" + }, + { + "checksum": "sha256:651f38873d3356ec4efb27d04658541080d11cf1ece6335a07db1ca089fa7da3" + }, + { + "checksum": "sha256:ec40be9e0b2bb03f7b057a7a9342ffbd86129d58828fb310f445bc506261eb0e" + }, + { + "checksum": "sha256:04c031a07bde4360484a0180e832036d3ac45a95c4839e54d7a02423df5485ef" + }, + { + "checksum": "sha256:fea4eb54fe59451b76fb40b9bd15ff41f0f51bb7371f94b2f5df572ef917d037" + }, + { + "checksum": "sha256:ce8c92fa2bef1770f44992db24e1cb8cc850feab03a74cf0ebf741ecb0d160ea" + }, + { + "checksum": "sha256:f847957437e7f24844930c4a3ff64c5f7877f083553f48eeadca3c5f5e5c728e" + }, + { + "checksum": "sha256:68593fad4413255772bd08ed7f8b578332f0f53e002c8c7473d90c966a87131b" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:b90ce065d5ea98845733ff06e47d385937f6293ebddf52144c80f5fe1f296307" + }, + { + "checksum": "sha256:4e4923f05d0032263d570075b9b832b9fc3550cd8f82f9a6b0b9b25061726110" + }, + { + "checksum": "sha256:d890d028f59e2553730fad3dbea0e1a245c92c24836513fa2281194b1c90b53a" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:90405803c0159cdf0f74a26b6ce064cfd9973e59232b2923ed171a38fc5684a6" + }, + { + "checksum": "sha256:4909edde46b5b2b58d228bacafa3bab5bc5847559d591d59ecd59cdf50d36db4" + }, + { + "checksum": "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63" + }, + { + "checksum": "sha256:9b6fcdd19caee5fe77b9ed17adb3f11769a7109ebcf52d3cb3358d5a9eecc391" + }, + { + "checksum": "sha256:65b8d755ff01dfefa423d2f0bd6fd54cfc4c580da63510e19cf178abb6e26172" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:b5b1f5f7a02f70db056861813ddcf181f2ebba507cd368fbe2c32f262edf7fc6" + }, + { + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e" + }, + { + "checksum": "sha256:a6292dd846bc471b22409fc95a5e09c88bcb6176251dc5cc11f4b14a73ddda11" + }, + { + "checksum": "sha256:784d385116891056b618722c933d43c5b395b92fa82e5bc797081317ec6a82ba" + }, + { + "checksum": "sha256:47b483c0f556c56f0b1f468603c57834864902ae5a849a18c8a0ca5f76d66c86" + }, + { + "checksum": "sha256:c633b98b4dbf96674a69573404819c34d66eb7e19820283fc588f6b10b0e3fc8" + }, + { + "checksum": "sha256:d3fb5a473c44cd8ae6b94d6bf3fc552553d8f4ef28eed439658ea38990ab9db5" + }, + { + "checksum": "sha256:0a885c6dc6abd969b828bf2fd7063ee884e6d058eaf405b02f3dd6efb6c66bac" + }, + { + "checksum": "sha256:0bb7024125ca67119612e55a92da13c989e0306ddd7de7e655a679c963939ef7" + }, + { + "checksum": "sha256:125c92f23d87b905c21e9f7669f0ec6e41428ab63c8c13f63db8980f292797d5" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:a840b8193ce9b1b72e3783b9a9bb2ec91947ba3b6f7ac973ae8e0e20a7059117" + }, + { + "checksum": "sha256:19cd894b4154d1a8521c6884cfd2a6eaf1f498b7dec5cc31408f8535b9098f2a" + }, + { + "checksum": "sha256:207e6396488c1db18fb7b1f2b9952f48c2625f042c5f6a901d41974ce376b0e0" + }, + { + "checksum": "sha256:d4467ba499fe1ddd82746ad00d7e86bea59c4827fe1ff8c05132bad1f93ddb7f" + }, + { + "checksum": "sha256:800c9a0d718c641ceee26c8f625b2dcd79a33963e9e7a11930678dc99582a2d0" + }, + { + "checksum": "sha256:986683a0edb615a5d45a9c1b0ee3d27f8032c2667cad58d24526085e41010992" + }, + { + "checksum": "sha256:3fe7c10c144c8fffc00d144317a2bf8029bd9d048432bccfc352dfc6f0995680" + }, + { + "checksum": "sha256:ba66a87402ccc8515e164f597f5d254ad9513979fe3ca1ffabf63c915c0daa73" + }, + { + "checksum": "sha256:d695df94220c2ef990e502123b3bd8ede8fcfb4f738346dd98d999559b01b6b3" + }, + { + "checksum": "sha256:fb263177eee60c26b7acaa76cb640c3d7ab6928e73c8af80b2111a247bd61ece" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:83e470505f558f8cf8414a7fc8fb0d1bc4b16ed15d05ccf7e46332b04d1a0d85" + }, + { + "checksum": "sha256:0f32d23a6b2b15603d710b0317238ef8dde3de61eda96713e21d86c9fc7a98ed" + }, + { + "checksum": "sha256:760d9056891a60c200984f0655aee1876b3bf890f7486306c05db8e295ae7843" + }, + { + "checksum": "sha256:e426534c59b3a35068877d324dd34d643ad7c84d2c406b2e6502ac6c2a367d39" + }, + { + "checksum": "sha256:094eff70081085f87a7ac0dedafa851ad8ac8e03f9f328636df4a0f8301d0e87" + }, + { + "checksum": "sha256:cf9a0bbaa7bd075d2af532586ee93ab92b96d9859f53a57f85cd7e0309f8fff6" + }, + { + "checksum": "sha256:a07f96031fbe9507a8d6bb0e14cf0783bc615552e4cfb75131672072f5729de8" + }, + { + "checksum": "sha256:aa1a6a85493590efb9c0235c15d6a05e8b119f385dc13b3e3abd2315f8c4a6e0" + }, + { + "checksum": "sha256:22c0e44318e36e04ad1eb4632dcf25db991f481f9a543387d372e1f2ad92561f" + }, + { + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "checksum": "sha256:6ae316dfb9723d13a8d36d98d109d4a55017b568ee2070279f1bdccdc699862a" + }, + { + "checksum": "sha256:5996ff948b5874f894c5ce3495652e6de552addf2331fd82193023d77994ef8f" + }, + { + "checksum": "sha256:d20f4bf44fcc90509e7afca364eae0a55c8f33df2f8a69e266f5fcd4b5fa2e4b" + }, + { + "checksum": "sha256:727c08fe072ef85837e8db30574aec712cdf67a062eead3e5481ba08425b2395" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ] + }, + "runner": "org.osbuild.rhel82" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:63c64d526e9820ddc57a77c053674eeccefef33f16af536dd9b47e816db06988" + }, + { + "checksum": "sha256:0229afd544d1a59bfe26c095ad338bac7e0d2f10aab88bd895f3766e8f54fff3" + }, + { + "checksum": "sha256:1f8013c5bd1c4914a11363d56d67fa70871f5f42c64f57862c791871fb9bb05c" + }, + { + "checksum": "sha256:c3727553ea6dd925d9c760b23eb617d1cb475fab9c495543868666ad6cd3b088" + }, + { + "checksum": "sha256:b984d8576520272b1011cc46b03c666cd6abc1bf74b428a8781ca58c6287a007" + }, + { + "checksum": "sha256:d82c81115472a70d60d2320e254762c76a583ad2190ad45068476c77512588af" + }, + { + "checksum": "sha256:d9a4628bd8d3e776f626be4cb5edec305c2ff894d7c5cc7e33e212545721053a" + }, + { + "checksum": "sha256:0e30a92139490232a4b891f4f802db74f41002475f8d203c6adffe1fb9d2b1ab" + }, + { + "checksum": "sha256:a7fe54c4d43f925093face259d9fd8f28f06e9c11dcc3ad100b24288c577e4a4" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:518e5412ce19ab733f62c334da8c5545a212c4c971d513eb95590b08a14e3772" + }, + { + "checksum": "sha256:dfaf74e2116ee30d1882b3461de90d3fb6faad4468eb0678f845d105b4439a83" + }, + { + "checksum": "sha256:796cac51b2c1092c4faad372717c6ddc37cad9757111a41e531fe0a8d6c0a9ea" + }, + { + "checksum": "sha256:13cab1083eb51b9ab0dc3fdc567106454e28096a6ec32184ad509ec19214fdef" + }, + { + "checksum": "sha256:2d84f6765b1645f867527f493b6153470602a80c75f81545bf619aa92127e4da" + }, + { + "checksum": "sha256:a32db9e3d2321bd5c4e998f7ed6f4459d85f792a16f4fdfb8805f5936d521572" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:adb9e37c63a055bc106a9676c10a85fdedcb4af64ae062249732e158bc0ae9af" + }, + { + "checksum": "sha256:6a6aa18217ae72a0b33e4302da927e6ded92520cbf4d48a5030d4a2f95eeb5d8" + }, + { + "checksum": "sha256:13f55a1fea88c4720dc704fa19573325ddde8c1c60ed71e96f98a9e5a6508d44" + }, + { + "checksum": "sha256:adf5e529d714d774ffc43695015cbba845feafa1c49642dd8abbc6148aee4c6d" + }, + { + "checksum": "sha256:202cfa88a6b2f1ec6a0bc0546f578c1ca6b5b6fcfeaf3e1228beead14d8bf758" + }, + { + "checksum": "sha256:29ec65fa4b5624c1ab113aa7a33dd9ad87fe3bd8f5aabba51a9aecf19fd0cc52" + }, + { + "checksum": "sha256:15c33124ac0479d34f1f58d2bd24cc52db7089b4a8681c276a3fd0d6dfe4fc72" + }, + { + "checksum": "sha256:e085cf8bddcf09c908d925688dae077300d2964b40bd060af252d26a963cfe50" + }, + { + "checksum": "sha256:dcda73e0ea7b5d2710528fc6df135d435281d1f4d2be0018bb6f1858e818d599" + }, + { + "checksum": "sha256:b7bc10e9947763df6e6177b3dbbe77c21f55ed60d26c4c28bfe14a98f7e06189" + }, + { + "checksum": "sha256:acd4674b3fbe01d6cf94eb18a81cdb00beb73bf3d4a25a28e234f31498f5c389" + }, + { + "checksum": "sha256:571b590c6ec7a2ac73996dc7d3dd7863aecc43e5dcb1411c191218a32633952b" + }, + { + "checksum": "sha256:98cf1d2d3ca85b3ec31dc56532c3b9f6fa5b3edadc8b4f4125526cdfb2b7507b" + }, + { + "checksum": "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:689577d74311a7327aab6fe412a803d72b790957e863b6b78a8621a040306919" + }, + { + "checksum": "sha256:7d3ddbaae06c7fb8d24449e11b418ee07bdd9e07f7f0af57741d220b97228557" + }, + { + "checksum": "sha256:41cc2d507fdfbba939c00164a563e770d466f992cb64d3c51a79aec20b31d6d1" + }, + { + "checksum": "sha256:dc37d12420a2593c46619e9b67a0115255a0c7334f547871ce08e329bf5d15a2" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:f96bc0d82d4c6934659c23a6771515e78bf2252ed24d32c78001260ee6e36c8d" + }, + { + "checksum": "sha256:b847207a13bec4b7fcfaaf3668d93bc5ad40a6477f976e6aeb59ab431545d0c5" + }, + { + "checksum": "sha256:bae965c689b08ce42f10366e4b441504432ac353d30edb8b4b2cfc798069434f" + }, + { + "checksum": "sha256:eaf3c7104d3ebd0cdda3d6ce44f4c79eec0a8ce3ce71cbb0d9dfe716f58a105d" + }, + { + "checksum": "sha256:dfea8e48e0cf3d8984237e3d5fb715c7edd9b1f8db03faaefc42a8046b45dab8" + }, + { + "checksum": "sha256:7ce6aa282f9f23c46c44186595924d05f4e7a899b504eb95a0f87008f6620268" + }, + { + "checksum": "sha256:dd379385bd1d2e05f50c4795e5a0eff9030fdac0fd2579bb4b56233257672b27" + }, + { + "checksum": "sha256:6fbfaa1e1b1bb4e2362cf3dce0f59a94a78b457904234cbccbe6afacde311c26" + }, + { + "checksum": "sha256:057b6632870b8c3c0c950a19092ef2f9749bf3d1a37ccb083bf42ca6404db066" + }, + { + "checksum": "sha256:157044e6cf5cc52b64b9a5d621fdb5b0846a527daa428382330e68bdb47789eb" + }, + { + "checksum": "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2" + }, + { + "checksum": "sha256:9a1c6f2b18126214e9afa768bbf16b29b89ce3169ccbd4bc169000eed143dcb4" + }, + { + "checksum": "sha256:3a684fd5f1b1d417c6c3e9d1f0d5b846138aa06450ff246425d43d4a20bd619e" + }, + { + "checksum": "sha256:deaa0958c9fb57773dfdf74567b658d273cea81186b913aa1473867dc07b335b" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:925c70a394a76004087fd6e8d94f7edab9de9efb2b81740c875698532ba124c7" + }, + { + "checksum": "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c" + }, + { + "checksum": "sha256:4d8edaa317fd508226bb5421ef423470f3e9153167222dee7bf8fb2346b7875b" + }, + { + "checksum": "sha256:2e26672ae726ba833187292dcc6c1673a07e26d974fef2f71a83407989eea8a1" + }, + { + "checksum": "sha256:f769edf78f42bae1bd183a6f4a49d74822db2b5e830147178d197be1cd67a306" + }, + { + "checksum": "sha256:e1bee08f1e76f8b820a59b5c228a0c1b4eaa7fc70c7d840251a04a74d517e25c" + }, + { + "checksum": "sha256:3256e78263462d5d7ab37b696992aedd6f810431641ce8d1e1bc198c797b402b" + }, + { + "checksum": "sha256:da4d193d5f0caf7a196f3bd4aa1225072b522521d82fca8edecc6546b5460ac6" + }, + { + "checksum": "sha256:17501958f52d2db1417cab8dd5ca261bf447fd93eb62b80173f9875c3012b700" + }, + { + "checksum": "sha256:c321e3a0253fb2691035135b3d3740faa76b8e9c84a0378f480ff85ddd9f16bd" + }, + { + "checksum": "sha256:1b8c037a6c67959b52894f38444ed1133356c65cec2eed3acf37c45cf8609e63" + }, + { + "checksum": "sha256:db817b5d2f9d678fd0fee30e52ed080fdb5c9dd723cd57f7d6b0133293502047" + }, + { + "checksum": "sha256:c88d1656b8001ff79175f7d3b7818681e40e54e8fec6fb8556ba8141d437fcfa" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:b140eb203fe889d1c75ef3b5527033cfeb7a6f0c813638a607c9f10faf52a34b" + }, + { + "checksum": "sha256:98dd1582b8ab27085379a3a7e598a6e261c62f97a5f3689447cbf1d4af9ae46c" + }, + { + "checksum": "sha256:13f1d396ba9e0fe3f8d5ef43693b5c1178207e594d2b830e94d3f8e02e33767f" + }, + { + "checksum": "sha256:77b56d825eb31ca191254d17a4c9399e3c4fe8af42a528c2ad4424bfd865b82d" + }, + { + "checksum": "sha256:f7ccbe0d7b4a61b5a47253f168f8efcdbf41ad0755e678f9edcd2f6a69c93c7d" + }, + { + "checksum": "sha256:3ee66f993ee567b2457a221ed364ae4f8dfe783a5f0e723d9169f95d12f9e696" + }, + { + "checksum": "sha256:634a3cbf0b334e901b6887176fa1b98246be7c4010b4c21cb6fd8fa7aa5fdf94" + }, + { + "checksum": "sha256:540fa90864b4eb0176b56e0c5e9d7bc6130985288ae297b4c38950381b08a827" + }, + { + "checksum": "sha256:c62bb06ffc0e023172239a519a06ca47d9da2602ee37eb5ef9303b7e1e917e61" + }, + { + "checksum": "sha256:db1fad3c2d8735e69084bd4b09ea963938e4dde2f2e096dc7a4ce146f18b7ab0" + }, + { + "checksum": "sha256:b7955bb1ba7e944f6e5c36713db3bbc570ba0eb8de11ec6a1fa28cfc5c0029c8" + }, + { + "checksum": "sha256:e08305aecd924631284ddaeae39a83cca85495389d4ddef75410a32af49f946d" + }, + { + "checksum": "sha256:e0faa8a6bc43432619a2b6a26e9f1323d30cda945580d8bc0f6c2fe742b71924" + }, + { + "checksum": "sha256:3f5765cebcac288cc1b5b118acfbc2016eda7b81ad73923f6f9c21e4731eb0d9" + }, + { + "checksum": "sha256:8ef2fcbe5a8d6e7d393d28838ff458336d16e006bc7d19921f460eb105b88570" + }, + { + "checksum": "sha256:c4b6cad5e84e65ef2ef4cabfa2a68643187c97767331f026be5e6765ddfa4db8" + }, + { + "checksum": "sha256:fddf61e9024c41073442ccff0c9990fa004e9b183f391c4e3cf3853e5ae6062c" + }, + { + "checksum": "sha256:ce6960fa7831611815e163864a91b70b0ab1ef0f446c2cad1eec13404822cad5" + }, + { + "checksum": "sha256:6b1dcf4c02ee8c588c0ae44af92ae1060dcdc44f197e624a71fb31c86554ad2c" + }, + { + "checksum": "sha256:964b1d9563e42a176c24cf5c91616ee5cc40de3b1c92038d7fb0392113eaf159" + }, + { + "checksum": "sha256:d4424a9c946da1eab876298af8f772d5aab1109a1f551ac2f1cd10ee849568de" + }, + { + "checksum": "sha256:4d8d164f8bd56b7ab6252f009b38525f39fb161c03713414e1583894a265c50a" + }, + { + "checksum": "sha256:91c58481a7e4a9b7f9e0e14844fa73047395c75df95d35afa3b0d8ef3f584491" + }, + { + "checksum": "sha256:19efe6f125c00123ccc6d96e51eb61e711f3ea01f32d18cce14d3b614217c58e" + }, + { + "checksum": "sha256:f700797810fb2bdbba5a0b31e10c361360a87bac1a282da109273194a25bf6ef" + }, + { + "checksum": "sha256:0b4564ad3a799af1a4a0de33b0952f6056d942b0cfa39b73e9375bf0c05b3191" + }, + { + "checksum": "sha256:3bf230c85711b285afb968850d7e98eb6b068a06e7ca40e94203e388d8447f48" + }, + { + "checksum": "sha256:e160910d31a37afeea87df306264fb1f727cbca574d2c234cdca856f5311fbd6" + }, + { + "checksum": "sha256:c22f0d40fbdaaceec711be0cecc122fac4570d126914ce3694a3d6a1178bd487" + }, + { + "checksum": "sha256:81d2e21dad970c08798c0df00bbda21acf165a370f9612e0d14ce69e5dd6c5c3" + }, + { + "checksum": "sha256:8f2c073583d6d4347642139a9806174ba64848c6bd4fbc81b7e7e0d42751cc74" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:635d847cc4dec8a8e1b418adfda2bc0a9e1814ed6c2c6154a5430029d83abd24" + }, + { + "checksum": "sha256:2921d3aa14a509d271ca35256903c142c30f088f7dc889a4c4e15b26316ef5c0" + }, + { + "checksum": "sha256:4633c2b5a93723e1cad477b81f9ccefafed342f8c4474ec305058f99c713229d" + }, + { + "checksum": "sha256:126d980678e5b687c775cf857b4013306f1a761353370258a0f04d92a3553f92" + }, + { + "checksum": "sha256:5eddb5c1febbe6e58491f8e9ee8fc9897298b307e0357c01f49d445cf25283c9" + }, + { + "checksum": "sha256:83ffb9eac35272ff70a84f5160b74554fbf3f886ee17ebf55615928085baa7cb" + }, + { + "checksum": "sha256:b3f48a0503e35391965a46b4467f5e229a30f847c303b7b5e2747f6ec71aa62f" + }, + { + "checksum": "sha256:e82699d15e4e6ff7825629d7c1c8a0f50a5519b6e5328472de91a0deddb9cf3d" + }, + { + "checksum": "sha256:fc51460213b3bf5b67f08f2695aae8d728f614adbbacb917a0825e4ebfbc3e68" + }, + { + "checksum": "sha256:4059e9cccbde0401f9af4dea1160a07af8760adbc3e1d964e5c8ac87307eff81" + }, + { + "checksum": "sha256:7fc33f147b99749fdbae420ed51277cb99d9b6418b7f739fe51c7563945bc0d7" + }, + { + "checksum": "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f" + }, + { + "checksum": "sha256:cf8fdbfcd359aac8bf55500c24e6843baafe8fef35019126c3616806b41415b3" + }, + { + "checksum": "sha256:3f7e5e72ab9e18dbca936b40734c91520242a49a9e98a2f2589f397faa6ad8e8" + }, + { + "checksum": "sha256:f7de2bbb3653c3033d43f645ac26e91c788527c0b4d5e7238dea54c3adc6f1a1" + }, + { + "checksum": "sha256:21685a7b79484a6d684efd86af6fb23dc13aaadc534cc4c4ae3edc0ceb84051b" + }, + { + "checksum": "sha256:f4f5cc3080dc150c47b27383a344937fe17a679cb7046ca76165654d4e207a0b" + }, + { + "checksum": "sha256:0fd7dd5b060e7533144ad7a3cae2453ad6f87650010f328879b10c7c4cba0c04" + }, + { + "checksum": "sha256:ebcaa2d2ec8ddaa66d042a208ccee6b13735ffba04fe3f326954cd76fa4f5910" + }, + { + "checksum": "sha256:a445e982c81c7a64f6660f7f3bf6ed03dac3cd599dcb1e4bae06b8f236ea7e7f" + }, + { + "checksum": "sha256:c0f53020ecdb8eefb21795b0acf589334e89a9ef339a84d42e61999f53c67d18" + }, + { + "checksum": "sha256:36aece7b7a65785985bf0b98701514f12735a87517b8578a3eb3710f82ba4765" + }, + { + "checksum": "sha256:1143ac623a74d7feaaaf293c18d942d243248f6356628f87216670c10d11687b" + }, + { + "checksum": "sha256:10ac3bf7565725a55b0aef56f65befd0d320219fc83adfab6e564c19f8c44bd6" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:0136940a3e28a159e7347b0bc7d1dbbc0339c64f431349e355f75abe31cbf21c" + }, + { + "checksum": "sha256:0d61e2dfcaed066e4ef74e4baddab9cdec24602aeb7a98306481f38cb5f449eb" + }, + { + "checksum": "sha256:d74da38b942dc95929b21c8fcf2c5d2fb4468b78ed14e7a4bcbe933998be4deb" + }, + { + "checksum": "sha256:3e40a3103fbf71c83773beac7373d0e790631cb3c918d8b20a883c8e65e70136" + }, + { + "checksum": "sha256:5896ab6e22741dc47c8c70de8c72178e7956cfba2abbda9c6b4ebbc54921b636" + }, + { + "checksum": "sha256:e1826902c98cca301a4e0876b34e6c77f1688a1fb613c265cea37e2ee40e7884" + }, + { + "checksum": "sha256:cddf8fbd1021116ee137a080d50a06ecd9269beb5042aee5782ca68bab62acf3" + }, + { + "checksum": "sha256:e4ec1966f9bc7cbc898fe7550600ae3e9e4f8afbcdd3f6e74afe1965247653ba" + }, + { + "checksum": "sha256:1091a799d34a42d2e42ac462b4f979a55d17513eca5a00bad9bdba56cca83357" + }, + { + "checksum": "sha256:6f87f305a3e0e0faf69c2a9d4f277958ca33e85b72c6e4f77a365a5f60ced3d3" + }, + { + "checksum": "sha256:4a27cd4496ebdba821b3c7692eeb0c0fff28c6af69fe4fe9e4bf52511639bd6a" + }, + { + "checksum": "sha256:ca87249f90bac96902d18c11a1f8c80566fa090c6473226bdd147e07e3ed21ec" + }, + { + "checksum": "sha256:551a506b43e32d21bf7b6333e028733956d5ef3560837a0c84b0d3e598efa046" + }, + { + "checksum": "sha256:7c014b54f7929348f614f8f4eb7a1552b8565c0a57f3a75ff6471dc05f30cafe" + }, + { + "checksum": "sha256:26725f2da31ba8cf58b34c70bdb763aa21fb9a9fe25ced46e70f071606ffbc94" + }, + { + "checksum": "sha256:dfdec57ff520511d1d4ef9d913d90fc8d6ac98685cbc12fb568c8980f2a73f1a" + }, + { + "checksum": "sha256:0f1a02850c102e2a186787504f965c0c10d6432b9f600c18bc2f520e55f04a8c" + }, + { + "checksum": "sha256:6f2bfbe0f23d3b233aacb72c153ee133839353325f028321eb5ea38b0dc06c02" + }, + { + "checksum": "sha256:030eef043bf4cfdffc0a672ca2c1499281fbcb78a81a98a9e932ba0b7c9ebb6b" + }, + { + "checksum": "sha256:d173b35182f28b9dd48e4a942f2a20c659bee2f9ac234b60cf8b995aa2421382" + }, + { + "checksum": "sha256:2cddadff38ccef2364a7e40af0e1d9b3bf9c06869c15ceeb655f3cfa431c2083" + }, + { + "checksum": "sha256:62a2878605ca0415fd60adcff4c7068d855d20737498a968fabc646610ccbe5c" + }, + { + "checksum": "sha256:9138a16731ceb7fdbb8661338a5806692a7a95875894aac95069104f44bca234" + }, + { + "checksum": "sha256:e5f82f102f51d88aa517bbebd170795a571b7ddc3036574b92b498cc13704d98" + }, + { + "checksum": "sha256:ff9fc6467a4c2fd0c22c419a9cdb7a524d1c69d0c87aa09f31728bef9f692f76" + }, + { + "checksum": "sha256:86ae7501bdf0149728879f488dd4c86907216cb5b021192347a5c10a55382931" + }, + { + "checksum": "sha256:2809ad51c6eb6c9a54d64cccc2cd948f6fd4207f32b4493b3f4a9bd0886c894b" + }, + { + "checksum": "sha256:c7a1a166d4a58fd42848d05e4dd0d8bc459fa3b585396230729978f9cffc4474" + }, + { + "checksum": "sha256:84e7102978d76d80aa40c43efcc71c1e54e819195132df921a8c13cec54328da" + }, + { + "checksum": "sha256:621e96e91103f2f701e4ac3b8b8b6ef9aab4db5ab8fb3e141eb02e3f328aed79" + }, + { + "checksum": "sha256:afcbadced001b780cb7fc4c180b070acb48c2fff04783d6a4a35d08fae9928d0" + }, + { + "checksum": "sha256:fac29887224d91e8190a569b3ac5be1168034f36c9c234576ea3cefe686e46cd" + }, + { + "checksum": "sha256:b93a509fc65dd88761b4f7f21d8a05f1cd22e878ac59eb7d8e1507f5a2376a1e" + }, + { + "checksum": "sha256:058822931f4c34c18675116c1b02b718de4044c1019acb0d5f97417f00a30ba7" + }, + { + "checksum": "sha256:d6aa17908468b5e2095526664fce6627dec7a02c26625339c14b9278cc39d4a6" + }, + { + "checksum": "sha256:4a40a1538c8a488f32476f96d2461c3b792eb0cf5acb998e397d8a9cef8e5461" + }, + { + "checksum": "sha256:3b607f0dbedecb25239e22c1f553c8d70db9d2206a877fa07567fa1a49e233d7" + }, + { + "checksum": "sha256:8498846918c7bc7a20553340434cfbfb0d19185adcd0ff52866c6506ab8f747d" + }, + { + "checksum": "sha256:53fa2fd6a138d00c697b827a77bcc25ec498b1d49bb04ef80594e81ccabc165d" + }, + { + "checksum": "sha256:5a05f1126ed38f752af247dcdf7c958e738b935b8b6d942fd42f423768f05255" + }, + { + "checksum": "sha256:bcd19fd35b5f8535ff5bb15db91e2339c9435908c1123d5e2272fcae15a62260" + }, + { + "checksum": "sha256:2dc8e2f52451d1a11b16bbb389a24c58b61a1ba804ee777f9d06dbe4e1fcf6e5" + }, + { + "checksum": "sha256:09f390f3bf4dac907dfbc58b714d6c3de1ee7755a0ca5661b2f7c0a7dfbcfcff" + }, + { + "checksum": "sha256:83301ca502322e0634173460bf8fa35572c36ab8cc2e6e600bf9980f845fc857" + }, + { + "checksum": "sha256:f07b1f40ebb1fbe5c24e68a38b5f768a21e2ec2254d4bd8ff61fb0bde72f64ce" + }, + { + "checksum": "sha256:704e1dc996a17815c6dcf7029c0ddb2849d40feaab6e9b9c687af9d95fef825c" + }, + { + "checksum": "sha256:439c408eb3f33e9d8bea308afda0b32fadf7910f7b064c9821499332672a60cf" + }, + { + "checksum": "sha256:fa80a7e82e231dc77b3e44edd2cbf5b3d1657e009e59f15bbe8d50a4290b7c82" + }, + { + "checksum": "sha256:0f6d940ccddd815da01182de1e7b7e2d12c493125285ff7ee902843beefdec16" + }, + { + "checksum": "sha256:9fdfb9c1ced62828bfcb186bb83caf470b4c14a53611c0ab7f08035333b6dbee" + }, + { + "checksum": "sha256:ba1364539f16d7c8379d7563fd0634651fa8a05b3f7098a21ba96e1f5641f132" + }, + { + "checksum": "sha256:26b14d8f226962ce712bbccfb245843759e835a24a139eacae86d680043a85a7" + }, + { + "checksum": "sha256:abfda01b6d377de999efa9c2b4870bf3ba43cd50155f036d13aae0ba4a617565" + }, + { + "checksum": "sha256:26e7368e961b374cefb947dab3a98387a3da15a86331a0d99d7b0e68ef246626" + }, + { + "checksum": "sha256:4874e739ed37bc6a5bfdb6069d4620e5f7efe01d60eb9fd2550c550167c99990" + }, + { + "checksum": "sha256:8c0d40edf059bf044314df38c84e26cfbe00bf4e687a6114eacb17251718312b" + }, + { + "checksum": "sha256:091c7cf9a81bc55f9d813c40904e1b7b4f8889df3584d0978e0f6770f01042e9" + }, + { + "checksum": "sha256:471663fca7e3f609834368d69d8f1f469cfc0d3f3e95dc2b79381722d0368edc" + }, + { + "checksum": "sha256:9a22fe8cebacb37d6bc22105db763016689e9ac06bee33fc41693f60b076ff0c" + }, + { + "checksum": "sha256:435a2be84a2b38372965dbd60ffed0ed38a616b8100859787a8bb3b19d9fc4d9" + }, + { + "checksum": "sha256:684080ec9230dce2d32c9b00ae381a00bb950d1984ed0b0e1c55fa6d75b6b099" + }, + { + "checksum": "sha256:1fbb9fed42dff3f9dbc9e4fd929281408f77506423424759c2ac57b76afc3cdb" + }, + { + "checksum": "sha256:332c3cd387659ab5dfbb14ea5e75d1c8e1c8a8833e0314dde3ec758607efb3e4" + }, + { + "checksum": "sha256:6557d001315e85ac123b1378c5aafb81428e2383debcacf3f91c55476cfc48eb" + }, + { + "checksum": "sha256:d6ab7c8790cd6c9a137d908d840c51c547e950d25f6ab8af3c9ad3899ff6c044" + }, + { + "checksum": "sha256:95630378635c5e89eb204b2921dbd5db2e87d949e167fcf022174a3e63b532cb" + }, + { + "checksum": "sha256:2d74e0ab14393921c6160fda8dd533b58c0348acdf5ee5c306ffc64221700de2" + }, + { + "checksum": "sha256:e55bf252e792f27f076101e94dfbbac97dabeea0f7893a4cb9b111a0b72d187f" + }, + { + "checksum": "sha256:e9487db2fdce1f494ee1582787a1afc1ea4e0429189db8be0ddbb0af2676c4b6" + }, + { + "checksum": "sha256:cc7e751a62f9a28b82df0bce0ecfb050364b8688ef69473f1910909e44c5eb98" + }, + { + "checksum": "sha256:c1b5c4668331e8b05a08e7de432cbfb75f8072401bb6651a24e43f64eff8dcc4" + }, + { + "checksum": "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc" + }, + { + "checksum": "sha256:c82ca1c0ef4b89f75e8e7edbbae4f3eeb2720a4abd56b0927928cff2d9721186" + }, + { + "checksum": "sha256:140146ebcbadd9b0f2aa5c2fcde5c93888f2d84ce61a2a4cf148ef435d1ba410" + }, + { + "checksum": "sha256:c8a28b4587888435c51f6d1ce42f48b08fb0256e4029ea569e9a02adcb82c85a" + }, + { + "checksum": "sha256:bf267d9571cf568375e261d593236750f400ac536c1c818513106482ebc3fb10" + }, + { + "checksum": "sha256:f35c0da3cff05ded33c0cb4f202dbb52a5caabec8b1897d5057df83c284d62f1" + }, + { + "checksum": "sha256:2397506a63455e543b201938f605e687de5590d9a06282824e2f6bfdf5e0f149" + }, + { + "checksum": "sha256:5be5628cff7e0cbf726771bd7af6d8f4bd987a672381a9fb225974bcfc7f9644" + }, + { + "checksum": "sha256:268d9232f0853037100432e9363c659cf99927e03f759fd4884643b560710cd6" + }, + { + "checksum": "sha256:3ee6a4f61935c2f0698ad2c4834a5864920a1e48d55c7800da7c382249895e39" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:0f2c07acd21a998f0a4b2a569ebfd143b889d6a5105541b2393dab96cd027a10" + }, + { + "checksum": "sha256:a213587722f7c8a0291a56f352861ec661604051c952ebf6a428ae969af377d0" + }, + { + "checksum": "sha256:2180d7f1748a5049763d5626b8e14b2c7442e5491a63094a79dded66bcc5c7b0" + }, + { + "checksum": "sha256:1657e36d9213739cfef8bacc8876153692f5a5b4d87dd5dde86ad182dd63ca1b" + }, + { + "checksum": "sha256:0ac8999f5ebca6b808973d0db5038a835daa2358af1007e9cb972b0e96eae217" + }, + { + "checksum": "sha256:f4e63e7eedc0266a575eb6107f41c5f20ca0505a0e80145c21b9741674d5c0b5" + }, + { + "checksum": "sha256:895cfd814c56f2a592319f2391a736cb33848197124c4be40a9962f7af7e6a15" + }, + { + "checksum": "sha256:fd202f857b3c5a15b8f66f86fd515c44a47c87c028d7db766661758dc3673436" + }, + { + "checksum": "sha256:d2efb494bd4793fdcaaad35a66d7721df7ec53b6fc8da4fa8c8f24008533f38a" + }, + { + "checksum": "sha256:ed28e1e31109e27ce1c676914364c9f1dd46b71d00cb4cf13931f0fec6cf6978" + }, + { + "checksum": "sha256:ed8e018fb3a2ae3243b047b7f25cd7bd0b5b73abc6f254de3a7d13a6a568e4a4" + }, + { + "checksum": "sha256:5801caf2cc296b52b3b89b24eaf431fba2c130e948076aaf345988a754cca65c" + }, + { + "checksum": "sha256:1eff42ff409079d679c7777483d476f3261a2881b456b6280e81f7903a0cd499" + }, + { + "checksum": "sha256:481bbd6d73415d437a73eee7977ec370299acdac44b215a026652debba31783d" + }, + { + "checksum": "sha256:da4b9bfad26d559485ade669556512acfe93ba23d204f2556bac82c09401b4e7" + }, + { + "checksum": "sha256:01e486a3be67325e9692e909f5c6534137ee6a6df185ba2c09d4d50fe6c738f6" + }, + { + "checksum": "sha256:9a9546fcc510204dc7bcfe61d6ca63f436c01cd9b3f8451c8f07ec4f4fc2ba68" + }, + { + "checksum": "sha256:ad07261ff4f478be9511f7ee749bfbe8b2ba8e28696c2f561caa20e35c535134" + }, + { + "checksum": "sha256:95de1777f7e8a734445c5d45e0b77da8b6c41a9b504582ed266d852c677a936b" + }, + { + "checksum": "sha256:532d46a4c0e68bd45eabc3e2ba6d570880344044e1034f5f347b37c470d0dced" + }, + { + "checksum": "sha256:2310aa11c691bd1f457cb183cec446bd3275da50fedb7998bcdf39e84cb61068" + }, + { + "checksum": "sha256:876ffb285aaeddb2c18ae32527bd4ee202710bd8e18d5b410af22937646dcdec" + }, + { + "checksum": "sha256:fb56b7a416e12da0782ae8ba7396bc03a2f8844c2efcb5df3f8b9e74eb8b8059" + }, + { + "checksum": "sha256:7864fbc866ae5a3e59b4f0f114b77ff52b55e76c5388a917f82a6097f02a4db7" + }, + { + "checksum": "sha256:19d1de27d2f62b4a55735233807f70a1e8ff7551fed97ee8650dbd09c1ef50ea" + }, + { + "checksum": "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9" + }, + { + "checksum": "sha256:0cbb121302cc38ac16f8f9bd5ea8bd3ce3e2121f6c25c985b66bd29a532f2f7c" + }, + { + "checksum": "sha256:01d5881b441b015ac394e66fb27dbc5cb11befc8080973208806257ecee2d12d" + }, + { + "checksum": "sha256:6cf02dd99fda867d11fdbb28fe0a277328319aece74b864133a8774cacd2bf54" + }, + { + "checksum": "sha256:bc0f9bd34ac6a01dd7272b87e1b7a33045ff8c6793cac02fa639dfc9341e8215" + }, + { + "checksum": "sha256:64ac5cb6fd3da1610812795ce17e09648d89c87513d6284b852a3455b0831d3a" + }, + { + "checksum": "sha256:f237a314daeeb228f767e1521edffa9e9b15b07695ba1008b0f2b6807085b9cb" + }, + { + "checksum": "sha256:60934825531d0364649b0441321d12e8823336d54550007258d7523286d2fa2e" + }, + { + "checksum": "sha256:aeda2c664e2d993e56008f68823d05ec6d7665f2bb65b5f990c2112f0a7f91cb" + }, + { + "checksum": "sha256:10a83db8ac5065869be834bf6ec61185eded982f885def5979948736e5c3ab95" + }, + { + "checksum": "sha256:320ced09e242f09047f4fab0a7f66aba6de2e42583f6a2e164eadcc1ffd0b915" + }, + { + "checksum": "sha256:8ac1003d722e3d5f383c9b970bf6dfbc905007a624abadb63e520d7a93993747" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:f99f5edde9ad4574b84264c467420c910b31f78683fbf1b63d106a7e6c9d64a3" + }, + { + "checksum": "sha256:edba68c63891b1171417b8d3af5827cc45a37210d18d701c0e178870e5435031" + }, + { + "checksum": "sha256:e2c4ac0f7abf75cbcc7a6fb35412820c267f1a8ce614f41b60d901918c4616d5" + }, + { + "checksum": "sha256:f6df1feba76d87214433eee205e3b99621dcd78b485ed5f99ba2658117786b6c" + }, + { + "checksum": "sha256:ba0f68531fd015a2ce13b9b4269a75a508e308746f2acd65aee5d8e7580cde22" + }, + { + "checksum": "sha256:daf36ee86ec6001770ae68bdd82409526faf4b9b1313a6b74fb54cfb98ff571e" + }, + { + "checksum": "sha256:c59a19d44466633bf19e18463ece1ec20cdeae962f1ea3613bd09a2ffb160318" + }, + { + "checksum": "sha256:cfa188d39884fd4ba36d27e8fb25aed9dbd26efccffbfd01a24c2c580fdb96f1" + }, + { + "checksum": "sha256:af98260ff2c263c9cefcb96d16d200941c1873cda9868b57df51b034066940fe" + }, + { + "checksum": "sha256:bd03a8a056bc9d2df361688583521f5f656e83fc893b90d349b6282178f9330b" + }, + { + "checksum": "sha256:b35f92dddd2cd73f7f8d8595ebb197a1c67a214ec2acf960ac673a014f2d9b90" + }, + { + "checksum": "sha256:3ef63ecbebf844bcf682c9482dc0ddd158c955b0f066b62eb9575bb9a9642db5" + }, + { + "checksum": "sha256:448d3ff44e7f32f3b33e891180e248dc1bcd4d410f68015a8b0c30dc7c385aca" + }, + { + "checksum": "sha256:290c83afcd2b0a2b17aab95cf72a85da5f8b9f9a9862857c919a0f43e3fce70e" + }, + { + "checksum": "sha256:43ab42c8a58267936a89da99e37d3b9fc56489e958060f600ba047445ca44ee3" + }, + { + "checksum": "sha256:651f38873d3356ec4efb27d04658541080d11cf1ece6335a07db1ca089fa7da3" + }, + { + "checksum": "sha256:ec40be9e0b2bb03f7b057a7a9342ffbd86129d58828fb310f445bc506261eb0e" + }, + { + "checksum": "sha256:04c031a07bde4360484a0180e832036d3ac45a95c4839e54d7a02423df5485ef" + }, + { + "checksum": "sha256:2b6d1fbf6f54f06c168862e19e03aa0ce32c299fb3f7e4cd1bf4aa9df4b4d995" + }, + { + "checksum": "sha256:8e916224ddbb8a7d8cd305f11087c66df950a318e4ef64290bca1afdc1327950" + }, + { + "checksum": "sha256:0ac96870f86e4a275b6d7be6a6045383ff3071653b7e897538f713ba905edb42" + }, + { + "checksum": "sha256:6b14c3aa52da9a2eae13f2229bac41060ad7421ce5249eca80f4aa53e26344ab" + }, + { + "checksum": "sha256:fea4eb54fe59451b76fb40b9bd15ff41f0f51bb7371f94b2f5df572ef917d037" + }, + { + "checksum": "sha256:ce8c92fa2bef1770f44992db24e1cb8cc850feab03a74cf0ebf741ecb0d160ea" + }, + { + "checksum": "sha256:f847957437e7f24844930c4a3ff64c5f7877f083553f48eeadca3c5f5e5c728e" + }, + { + "checksum": "sha256:68593fad4413255772bd08ed7f8b578332f0f53e002c8c7473d90c966a87131b" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:b90ce065d5ea98845733ff06e47d385937f6293ebddf52144c80f5fe1f296307" + }, + { + "checksum": "sha256:b4fb3d8b0255a5ba9456b61e4f479f2f8355d171263508bbe869af677015fd97" + }, + { + "checksum": "sha256:3f8039ed081aa3f628e947656af825b4541ded3547675098eabb0f177eca45e7" + }, + { + "checksum": "sha256:861346b2e683c09a53c9418a9ed08faf7448e066e3111482c70722cb62a6edce" + }, + { + "checksum": "sha256:4a7d4068f39dbb01d7f707f9912abfddcc065a62b66144eeb7b7e2f13cec68af" + }, + { + "checksum": "sha256:4e4923f05d0032263d570075b9b832b9fc3550cd8f82f9a6b0b9b25061726110" + }, + { + "checksum": "sha256:6c3ee8b53c0af9bd4958b4e48d4d55fa7c574f444fb42eead1508ad740f97088" + }, + { + "checksum": "sha256:d890d028f59e2553730fad3dbea0e1a245c92c24836513fa2281194b1c90b53a" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34" + }, + { + "checksum": "sha256:48509ce37ec06c1b15149feec4b2eb5d3a2f0453a41804c9c5d9ef5b8b320d4f" + }, + { + "checksum": "sha256:c00024ec890b67b443e2c40a0580a1263458dc9d09f4bde578d7c045323946b1" + }, + { + "checksum": "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786" + }, + { + "checksum": "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367" + }, + { + "checksum": "sha256:a5c6189b8644cea4d4039375dfe2d828e08a59896e9827ac967782d225a78619" + }, + { + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "checksum": "sha256:8329bf1aedce9ef3a4d7513ef98d3931ad39b84d5c3e73e99936c7f9b87931c2" + }, + { + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87" + }, + { + "checksum": "sha256:4fe7733b93fad52a48d4b47a6dc55582f3cc41fc2074e42a9b39fc5d407df6d3" + }, + { + "checksum": "sha256:31043a7324411dad6b84f6504a9e9cb7ece9f576acf091be522e484c8b82f469" + }, + { + "checksum": "sha256:90405803c0159cdf0f74a26b6ce064cfd9973e59232b2923ed171a38fc5684a6" + }, + { + "checksum": "sha256:4909edde46b5b2b58d228bacafa3bab5bc5847559d591d59ecd59cdf50d36db4" + }, + { + "checksum": "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20" + }, + { + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "checksum": "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c" + }, + { + "checksum": "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63" + }, + { + "checksum": "sha256:9b6fcdd19caee5fe77b9ed17adb3f11769a7109ebcf52d3cb3358d5a9eecc391" + }, + { + "checksum": "sha256:b386b3ec3cb96fe9178fd1d2b245eddff0bdb2742a8f18e25faef1e98c00f42f" + }, + { + "checksum": "sha256:65b8d755ff01dfefa423d2f0bd6fd54cfc4c580da63510e19cf178abb6e26172" + }, + { + "checksum": "sha256:9c416279320ab29a8ef4fc32ca60beaec4c8da6054d10695cd2b37af19cd0ee9" + }, + { + "checksum": "sha256:b9ceb537921c8d98f1e874c0a39cf0c6a606f469be21be151fa119e4b9c7f06a" + }, + { + "checksum": "sha256:853a828e0d2fa57b69ee46167f0c54dbeba977043f18b03f8912412204d3b8dc" + }, + { + "checksum": "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f" + }, + { + "checksum": "sha256:8e2c0324789f42ebb6324847249699eb499544a3e6ad67ccd74713b3c1d6ce78" + }, + { + "checksum": "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6" + }, + { + "checksum": "sha256:3c096d861c04f97c89dcf335d66a169bca3d371d9589e547c50f18b4180a9e6f" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9" + }, + { + "checksum": "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42" + }, + { + "checksum": "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf" + }, + { + "checksum": "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280" + }, + { + "checksum": "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde" + }, + { + "checksum": "sha256:0265d8b987f411738f3b53bd1f84386955704122e20ece4eb232a0df89ff62f0" + }, + { + "checksum": "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a" + }, + { + "checksum": "sha256:b5b1f5f7a02f70db056861813ddcf181f2ebba507cd368fbe2c32f262edf7fc6" + }, + { + "checksum": "sha256:a05f9b43292810dde4e6acd64eac2a80f047d35533d2d5e647565f75502189fa" + }, + { + "checksum": "sha256:342d7cd5f427c0d9c02336bc4f189225b3b57c5899f5d26b61b351fc37f99489" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "checksum": "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb" + }, + { + "checksum": "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d" + }, + { + "checksum": "sha256:d868f3e9b48e1acc5c7674292619f1e80a2a2617aa1ab75d7cb4665495bdc654" + }, + { + "checksum": "sha256:6d46339afc3d65beb89cbb36052e779e95ef2448a163d26db13d67715dad9cf8" + }, + { + "checksum": "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53" + }, + { + "checksum": "sha256:776323bbc7a9be78c9b6fdd4adec9610c78319cbb5b19d88cbfe2fa8f899ecc5" + }, + { + "checksum": "sha256:adab024896eecd08250eb7a7a5e1686df0b945fd1604543877e230163c510f24" + }, + { + "checksum": "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e" + }, + { + "checksum": "sha256:48a26ec0664bfc76a415821d63a658653f64e5b142b4b8a08c11c6cbc9e7db85" + }, + { + "checksum": "sha256:a6292dd846bc471b22409fc95a5e09c88bcb6176251dc5cc11f4b14a73ddda11" + }, + { + "checksum": "sha256:784d385116891056b618722c933d43c5b395b92fa82e5bc797081317ec6a82ba" + }, + { + "checksum": "sha256:fb97246f1e22b2db98fc309470c4d87755ecc59e5b98047c52c4fedbb08d9b6f" + }, + { + "checksum": "sha256:13471e37bb0089a322183fc9e7a53948f0b203b54277630e75606a835268ad5d" + }, + { + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "checksum": "sha256:e5f98b24c13e975046890306bc9f840d016c9db2204e7632b221a11dcbb3e9a0" + }, + { + "checksum": "sha256:47b483c0f556c56f0b1f468603c57834864902ae5a849a18c8a0ca5f76d66c86" + }, + { + "checksum": "sha256:c633b98b4dbf96674a69573404819c34d66eb7e19820283fc588f6b10b0e3fc8" + }, + { + "checksum": "sha256:d3fb5a473c44cd8ae6b94d6bf3fc552553d8f4ef28eed439658ea38990ab9db5" + }, + { + "checksum": "sha256:0a885c6dc6abd969b828bf2fd7063ee884e6d058eaf405b02f3dd6efb6c66bac" + }, + { + "checksum": "sha256:0bb7024125ca67119612e55a92da13c989e0306ddd7de7e655a679c963939ef7" + }, + { + "checksum": "sha256:eea9359070225c205cd9233c98fc3e3eaa41848148b726a4ec8414575ae3730e" + }, + { + "checksum": "sha256:125c92f23d87b905c21e9f7669f0ec6e41428ab63c8c13f63db8980f292797d5" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:4a308727d8b5a3d4cbbbc7d9b07884ebf6a37b4b6eb9a8edab5b61f449142285" + }, + { + "checksum": "sha256:a93b90699f26009debf0ac7b6759daf23afa9f3c851ccd7c98e35d9a89824dcb" + }, + { + "checksum": "sha256:a840b8193ce9b1b72e3783b9a9bb2ec91947ba3b6f7ac973ae8e0e20a7059117" + }, + { + "checksum": "sha256:19cd894b4154d1a8521c6884cfd2a6eaf1f498b7dec5cc31408f8535b9098f2a" + }, + { + "checksum": "sha256:b83b5cb8c799dea710e0fffc841abf88495a1f3d04057dd699cff2aac610d7d9" + }, + { + "checksum": "sha256:8d5c968225f0a3b7c492fdffb57cf0e34fee77c06a64a94a3a8b52edab30eed7" + }, + { + "checksum": "sha256:df1f1d61216be55ab9cadc9832e613ffd2350ca8dc03e27f537f22dc0f32e171" + }, + { + "checksum": "sha256:934205ae1baa04b3921065f73096378f1db65990392340ad32042f86c9b5b247" + }, + { + "checksum": "sha256:207e6396488c1db18fb7b1f2b9952f48c2625f042c5f6a901d41974ce376b0e0" + }, + { + "checksum": "sha256:6421426a896c0bf32738af8131c37001e532f62ac1242f63ebf6248ea34533b0" + }, + { + "checksum": "sha256:2bbb8eebf42b0f55d735c0f84e2521c339febc7036f2e94332ff013d7406b80a" + }, + { + "checksum": "sha256:428af99d7ff753fc26a13130115c4dcbbac030776a299583d00c69e8ec6a13ca" + }, + { + "checksum": "sha256:2cfc9f7d8286002d753d12aa9669522222466c5e1e3f10ed81c8d4d23a3e203c" + }, + { + "checksum": "sha256:6149e0dc3def62605315cbbe59d63b5ca340a791b4c6d3b4d0bda6efee7572f8" + }, + { + "checksum": "sha256:4efe61bac45e15b3b1bfda93bf3cfbf72d49c7f0452737d01f12f49b6e624175" + }, + { + "checksum": "sha256:e6194926699147659c3a35d9330b5e9706b203aa806c4023c258559f9a0f8ae7" + }, + { + "checksum": "sha256:2df37064ec55f10e06dc0c05647a296b8ca7867251fe44130206052e58d39bda" + }, + { + "checksum": "sha256:432ef41fd5f9ad2b9a797ed105f6e729dcaf19c17df9c1478802af04e898e305" + }, + { + "checksum": "sha256:d4467ba499fe1ddd82746ad00d7e86bea59c4827fe1ff8c05132bad1f93ddb7f" + }, + { + "checksum": "sha256:800c9a0d718c641ceee26c8f625b2dcd79a33963e9e7a11930678dc99582a2d0" + }, + { + "checksum": "sha256:986683a0edb615a5d45a9c1b0ee3d27f8032c2667cad58d24526085e41010992" + }, + { + "checksum": "sha256:3fe7c10c144c8fffc00d144317a2bf8029bd9d048432bccfc352dfc6f0995680" + }, + { + "checksum": "sha256:ba66a87402ccc8515e164f597f5d254ad9513979fe3ca1ffabf63c915c0daa73" + }, + { + "checksum": "sha256:32c9ff3e0278dbd7022ad76629146ece3fffdc58af14e1eaf97e7052d610daa2" + }, + { + "checksum": "sha256:d695df94220c2ef990e502123b3bd8ede8fcfb4f738346dd98d999559b01b6b3" + }, + { + "checksum": "sha256:fb263177eee60c26b7acaa76cb640c3d7ab6928e73c8af80b2111a247bd61ece" + }, + { + "checksum": "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:1bc21785bc6f66d6fcc29cd62f2cdd3584f3f8ea6321db4c27251b192f468433" + }, + { + "checksum": "sha256:83e470505f558f8cf8414a7fc8fb0d1bc4b16ed15d05ccf7e46332b04d1a0d85" + }, + { + "checksum": "sha256:1956304761f23c6661b831d33a3539b82384636db4113cccd19321b36a3a8415" + }, + { + "checksum": "sha256:b6946db91c0a0b5e39427db028815391dd1e8c7a04faf98bc1031b5490034790" + }, + { + "checksum": "sha256:0f32d23a6b2b15603d710b0317238ef8dde3de61eda96713e21d86c9fc7a98ed" + }, + { + "checksum": "sha256:760d9056891a60c200984f0655aee1876b3bf890f7486306c05db8e295ae7843" + }, + { + "checksum": "sha256:e426534c59b3a35068877d324dd34d643ad7c84d2c406b2e6502ac6c2a367d39" + }, + { + "checksum": "sha256:094eff70081085f87a7ac0dedafa851ad8ac8e03f9f328636df4a0f8301d0e87" + }, + { + "checksum": "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4" + }, + { + "checksum": "sha256:bdb8cc675da18f659ba06252f1f2604d171373239804c3cbc6004dadded54cd3" + }, + { + "checksum": "sha256:cf9a0bbaa7bd075d2af532586ee93ab92b96d9859f53a57f85cd7e0309f8fff6" + }, + { + "checksum": "sha256:bc3d32d534059d7a7fb535686b2a137564a93910413a8e8a585dbd00a877e9fc" + }, + { + "checksum": "sha256:ffc4464926a4e9a9129af0773bd9caab04fd2cd3e3ded760a891d0dc338265a4" + }, + { + "checksum": "sha256:1594afba86593ec614299ef6af255755a98ea55a34a72a22fdc9d80a040be39d" + }, + { + "checksum": "sha256:0b4134a430320b461f8636f536b4c20c23e70aa129801cb0bafeb948b9de7e96" + }, + { + "checksum": "sha256:edae480b0177d04b0b3ff54105c77c0cf4ec565c5234b10e2967f912290c4758" + }, + { + "checksum": "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2" + }, + { + "checksum": "sha256:664a883f3c7042eb91e0b66fc99c309a729011b4912e4af9397f4e25e1adae90" + }, + { + "checksum": "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b" + }, + { + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "checksum": "sha256:abeb97ed3fdd82145fd51f8eeaecfca272e4d1418b17a68241e054425a327aa3" + }, + { + "checksum": "sha256:49258c6900ab6f3eaa5f7c7515fcf0a7d604af9d99e7d5f72be7bc75e00a844a" + }, + { + "checksum": "sha256:593d4df5b8de12ed0ec5a0935cb0bd966e27a631aa0806250ba9f67092ad737f" + }, + { + "checksum": "sha256:5176881bae429bec5136195c73b402081184ae2a35519673031a075e855f75f4" + }, + { + "checksum": "sha256:740e25055db923edcb8a0bddebc688de61a17c6b738162163e9b569e0cda1e18" + }, + { + "checksum": "sha256:92bc3c29b5232c55f60c9d0a5426bb04675209b8ee87df5725a83a60944219cb" + }, + { + "checksum": "sha256:0c9b5e526b6fe5384447db444a2657cb4b1766b646255f89c49c749d388bdc58" + }, + { + "checksum": "sha256:2769c1df985e8fea8760d7ca8908eac166a64262c9643c7b0f6a82db570a68f5" + }, + { + "checksum": "sha256:e09e950b0a0842577364565380ba40e8c4f027919dc880378b606c2dafc5693b" + }, + { + "checksum": "sha256:3e570377bfb3946bbbbe32abfc92f800af7922d0a448e3f044ef75b18e97b924" + }, + { + "checksum": "sha256:a07f96031fbe9507a8d6bb0e14cf0783bc615552e4cfb75131672072f5729de8" + }, + { + "checksum": "sha256:aa1a6a85493590efb9c0235c15d6a05e8b119f385dc13b3e3abd2315f8c4a6e0" + }, + { + "checksum": "sha256:22c0e44318e36e04ad1eb4632dcf25db991f481f9a543387d372e1f2ad92561f" + }, + { + "checksum": "sha256:8947ffafcbf333c5049c380d26bdd53929e7566dde9f812d12c544f75120bec4" + }, + { + "checksum": "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28" + }, + { + "checksum": "sha256:86414db9ca27af26e31feb5b05b09c997c602721ff732afe13c5e79d1ccfe0af" + }, + { + "checksum": "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43" + }, + { + "checksum": "sha256:c0bfa38aa054fdc993c4fe0764f05f72be1bd7d4d121dddff9cc6f1703c4934e" + }, + { + "checksum": "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362" + }, + { + "checksum": "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64" + }, + { + "checksum": "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835" + }, + { + "checksum": "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf" + }, + { + "checksum": "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b" + }, + { + "checksum": "sha256:0aeef4b59dae77f6bd7f557e62efb6621491c04c27287860f581d35cd9be7a19" + }, + { + "checksum": "sha256:3d24b1cc90de184aa66cd58a1071888b6de8d34eb8155d6ab6a5ac777281adf5" + }, + { + "checksum": "sha256:047e04a10f26da24deb076a88c676fcaecd2f68aaa1a5adc7bc46791145c74c4" + }, + { + "checksum": "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55" + }, + { + "checksum": "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21" + }, + { + "checksum": "sha256:fd75c594f871a3353d326833e630ea1d28e5f446f796b836dc628f8c9c039f88" + }, + { + "checksum": "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414" + }, + { + "checksum": "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca" + }, + { + "checksum": "sha256:4e644e08ef5bd3b33357d6c1ea64e37097c3224ae324456fef022b9e5fdd2947" + }, + { + "checksum": "sha256:11aae64c2458371a884514b954f58896c5ba7fb751ade0351c476e29991da25b" + }, + { + "checksum": "sha256:bee28477fcd36d5a877d1fe3d61aa876f62128681411718e0c3fc82b95cf8e59" + }, + { + "checksum": "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a" + }, + { + "checksum": "sha256:295a8620b3730a0d9f0c6a21175fdc7270054b7abf28197b4866f72a0a85072d" + }, + { + "checksum": "sha256:6ae316dfb9723d13a8d36d98d109d4a55017b568ee2070279f1bdccdc699862a" + }, + { + "checksum": "sha256:393b5c2678d104c9f108ea2a353746d68f2111785acf13ffdff6798482d9d8d6" + }, + { + "checksum": "sha256:c17544abced52ad9df8229c71a0f8c437719c4d1fccd77f2db707be18226aecb" + }, + { + "checksum": "sha256:28d4282a27a17db514ff30d8c865cb8a306d1c412f9e13c2e617a23912f07dde" + }, + { + "checksum": "sha256:1e8b20ca3658abc9b7e2fe27d18eeae2f660779f33b39ca1fa2588363af250e5" + }, + { + "checksum": "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42" + }, + { + "checksum": "sha256:27ed4654a9c4dfb8417c54cc1a6060c51bd3f1dd16c4ba4bd24dfeba57c5ede1" + }, + { + "checksum": "sha256:0a016d034c490f07425c402c260de595603a136bf7146dbc8ed90a661a60fbc1" + }, + { + "checksum": "sha256:3459ac9ecad925e511502cff687ceb77f52f391303793f7670794a5c0b040f3d" + }, + { + "checksum": "sha256:1fde97c3e596a88ef05e260970343d178a7c2188c166e7ba745640a051ae9f66" + }, + { + "checksum": "sha256:de28a06359abc39016fc8fb730773e00a3fa2ec8360a037a4dce79cf3482bacb" + }, + { + "checksum": "sha256:4804145242848aee094897a4d5d959118efa59e1667593c4e79f300c3ca22ead" + }, + { + "checksum": "sha256:727c08fe072ef85837e8db30574aec712cdf67a062eead3e5481ba08425b2395" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "vfs_type": "xfs", + "path": "/", + "options": "defaults" + }, + { + "uuid": "46BB-8120", + "vfs_type": "vfat", + "path": "/boot/efi", + "options": "umask=0077,shortname=winnt", + "passno": 2 + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "kernel_opts": "console=ttyS0 console=ttyS0,115200n8 no_timer_check crashkernel=auto net.ifnames=0", + "uefi": { + "vendor": "redhat" + } + } + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "redhat": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "qcow2", + "filename": "disk.qcow2", + "size": 4294967296, + "ptuuid": "8DFDFF87-C96E-EA48-A3A6-9408F1F6B1EF", + "pttype": "gpt", + "partitions": [ + { + "start": 2048, + "size": 972800, + "type": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B", + "filesystem": { + "type": "vfat", + "uuid": "46BB-8120", + "label": "EFI System Partition", + "mountpoint": "/boot/efi" + } + }, + { + "start": 976896, + "filesystem": { + "type": "xfs", + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/acl-2.2.53-1.el8.aarch64.rpm", + "checksum": "sha256:b984d8576520272b1011cc46b03c666cd6abc1bf74b428a8781ca58c6287a007" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm", + "checksum": "sha256:d9a4628bd8d3e776f626be4cb5edec305c2ff894d7c5cc7e33e212545721053a" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bash-4.4.19-12.el8.aarch64.rpm", + "checksum": "sha256:518e5412ce19ab733f62c334da8c5545a212c4c971d513eb95590b08a14e3772" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/brotli-1.0.6-2.el8.aarch64.rpm", + "checksum": "sha256:796cac51b2c1092c4faad372717c6ddc37cad9757111a41e531fe0a8d6c0a9ea" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bzip2-libs-1.0.6-26.el8.aarch64.rpm", + "checksum": "sha256:2d84f6765b1645f867527f493b6153470602a80c75f81545bf619aa92127e4da" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/chkconfig-1.13-2.el8.aarch64.rpm", + "checksum": "sha256:6a6aa18217ae72a0b33e4302da927e6ded92520cbf4d48a5030d4a2f95eeb5d8" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-8.30-8.el8.aarch64.rpm", + "checksum": "sha256:15c33124ac0479d34f1f58d2bd24cc52db7089b4a8681c276a3fd0d6dfe4fc72" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-common-8.30-8.el8.aarch64.rpm", + "checksum": "sha256:e085cf8bddcf09c908d925688dae077300d2964b40bd060af252d26a963cfe50" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cpio-2.12-8.el8.aarch64.rpm", + "checksum": "sha256:dcda73e0ea7b5d2710528fc6df135d435281d1f4d2be0018bb6f1858e818d599" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-2.9.6-15.el8.aarch64.rpm", + "checksum": "sha256:b7bc10e9947763df6e6177b3dbbe77c21f55ed60d26c4c28bfe14a98f7e06189" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-dicts-2.9.6-15.el8.aarch64.rpm", + "checksum": "sha256:acd4674b3fbe01d6cf94eb18a81cdb00beb73bf3d4a25a28e234f31498f5c389" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cryptsetup-libs-2.3.3-1.el8.aarch64.rpm", + "checksum": "sha256:689577d74311a7327aab6fe412a803d72b790957e863b6b78a8621a040306919" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/curl-7.61.1-12.el8.aarch64.rpm", + "checksum": "sha256:7d3ddbaae06c7fb8d24449e11b418ee07bdd9e07f7f0af57741d220b97228557" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.aarch64.rpm", + "checksum": "sha256:41cc2d507fdfbba939c00164a563e770d466f992cb64d3c51a79aec20b31d6d1" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:dc37d12420a2593c46619e9b67a0115255a0c7334f547871ce08e329bf5d15a2" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-daemon-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:f96bc0d82d4c6934659c23a6771515e78bf2252ed24d32c78001260ee6e36c8d" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-libs-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:bae965c689b08ce42f10366e4b441504432ac353d30edb8b4b2cfc798069434f" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-tools-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:eaf3c7104d3ebd0cdda3d6ce44f4c79eec0a8ce3ce71cbb0d9dfe716f58a105d" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-1.02.171-3.el8.aarch64.rpm", + "checksum": "sha256:6fbfaa1e1b1bb4e2362cf3dce0f59a94a78b457904234cbccbe6afacde311c26" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-libs-1.02.171-3.el8.aarch64.rpm", + "checksum": "sha256:057b6632870b8c3c0c950a19092ef2f9749bf3d1a37ccb083bf42ca6404db066" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/diffutils-3.6-6.el8.aarch64.rpm", + "checksum": "sha256:3a684fd5f1b1d417c6c3e9d1f0d5b846138aa06450ff246425d43d4a20bd619e" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dosfstools-4.1-6.el8.aarch64.rpm", + "checksum": "sha256:2efbfbcce7ef24e433d3c304b6b6b022d1b1b8a972969da1adb1c3c85f9625a7" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-049-89.git20200625.el8.aarch64.rpm", + "checksum": "sha256:4d8edaa317fd508226bb5421ef423470f3e9153167222dee7bf8fb2346b7875b" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:3256e78263462d5d7ab37b696992aedd6f810431641ce8d1e1bc198c797b402b" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:da4d193d5f0caf7a196f3bd4aa1225072b522521d82fca8edecc6546b5460ac6" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:c88d1656b8001ff79175f7d3b7818681e40e54e8fec6fb8556ba8141d437fcfa" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libelf-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:b140eb203fe889d1c75ef3b5527033cfeb7a6f0c813638a607c9f10faf52a34b" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libs-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:98dd1582b8ab27085379a3a7e598a6e261c62f97a5f3689447cbf1d4af9ae46c" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/expat-2.2.5-4.el8.aarch64.rpm", + "checksum": "sha256:77b56d825eb31ca191254d17a4c9399e3c4fe8af42a528c2ad4424bfd865b82d" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-5.33-16.el8.aarch64.rpm", + "checksum": "sha256:f7ccbe0d7b4a61b5a47253f168f8efcdbf41ad0755e678f9edcd2f6a69c93c7d" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-libs-5.33-16.el8.aarch64.rpm", + "checksum": "sha256:3ee66f993ee567b2457a221ed364ae4f8dfe783a5f0e723d9169f95d12f9e696" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/filesystem-3.8-3.el8.aarch64.rpm", + "checksum": "sha256:634a3cbf0b334e901b6887176fa1b98246be7c4010b4c21cb6fd8fa7aa5fdf94" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/findutils-4.6.0-20.el8.aarch64.rpm", + "checksum": "sha256:540fa90864b4eb0176b56e0c5e9d7bc6130985288ae297b4c38950381b08a827" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fuse-libs-2.9.7-12.el8.aarch64.rpm", + "checksum": "sha256:e08305aecd924631284ddaeae39a83cca85495389d4ddef75410a32af49f946d" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gawk-4.2.1-1.el8.aarch64.rpm", + "checksum": "sha256:e0faa8a6bc43432619a2b6a26e9f1323d30cda945580d8bc0f6c2fe742b71924" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-1.18-1.el8.aarch64.rpm", + "checksum": "sha256:3f5765cebcac288cc1b5b118acfbc2016eda7b81ad73923f6f9c21e4731eb0d9" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-libs-1.18-1.el8.aarch64.rpm", + "checksum": "sha256:8ef2fcbe5a8d6e7d393d28838ff458336d16e006bc7d19921f460eb105b88570" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-0.19.8.1-17.el8.aarch64.rpm", + "checksum": "sha256:fddf61e9024c41073442ccff0c9990fa004e9b183f391c4e3cf3853e5ae6062c" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-libs-0.19.8.1-17.el8.aarch64.rpm", + "checksum": "sha256:ce6960fa7831611815e163864a91b70b0ab1ef0f446c2cad1eec13404822cad5" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glib2-2.56.4-8.el8.aarch64.rpm", + "checksum": "sha256:964b1d9563e42a176c24cf5c91616ee5cc40de3b1c92038d7fb0392113eaf159" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:d4424a9c946da1eab876298af8f772d5aab1109a1f551ac2f1cd10ee849568de" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-all-langpacks-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:4d8d164f8bd56b7ab6252f009b38525f39fb161c03713414e1583894a265c50a" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-common-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:91c58481a7e4a9b7f9e0e14844fa73047395c75df95d35afa3b0d8ef3f584491" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gmp-6.1.2-10.el8.aarch64.rpm", + "checksum": "sha256:19efe6f125c00123ccc6d96e51eb61e711f3ea01f32d18cce14d3b614217c58e" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-2.2.20-2.el8.aarch64.rpm", + "checksum": "sha256:f700797810fb2bdbba5a0b31e10c361360a87bac1a282da109273194a25bf6ef" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-smime-2.2.20-2.el8.aarch64.rpm", + "checksum": "sha256:0b4564ad3a799af1a4a0de33b0952f6056d942b0cfa39b73e9375bf0c05b3191" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnutls-3.6.14-3.el8.aarch64.rpm", + "checksum": "sha256:3bf230c85711b285afb968850d7e98eb6b068a06e7ca40e94203e388d8447f48" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gpgme-1.13.1-3.el8.aarch64.rpm", + "checksum": "sha256:c22f0d40fbdaaceec711be0cecc122fac4570d126914ce3694a3d6a1178bd487" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grep-3.1-6.el8.aarch64.rpm", + "checksum": "sha256:81d2e21dad970c08798c0df00bbda21acf165a370f9612e0d14ce69e5dd6c5c3" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:2921d3aa14a509d271ca35256903c142c30f088f7dc889a4c4e15b26316ef5c0" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-minimal-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:126d980678e5b687c775cf857b4013306f1a761353370258a0f04d92a3553f92" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grubby-8.40-41.el8.aarch64.rpm", + "checksum": "sha256:5eddb5c1febbe6e58491f8e9ee8fc9897298b307e0357c01f49d445cf25283c9" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gzip-1.9-9.el8.aarch64.rpm", + "checksum": "sha256:e82699d15e4e6ff7825629d7c1c8a0f50a5519b6e5328472de91a0deddb9cf3d" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hardlink-1.3-6.el8.aarch64.rpm", + "checksum": "sha256:fc51460213b3bf5b67f08f2695aae8d728f614adbbacb917a0825e4ebfbc3e68" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ima-evm-utils-1.1-5.el8.aarch64.rpm", + "checksum": "sha256:cf8fdbfcd359aac8bf55500c24e6843baafe8fef35019126c3616806b41415b3" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/info-6.5-6.el8.aarch64.rpm", + "checksum": "sha256:3f7e5e72ab9e18dbca936b40734c91520242a49a9e98a2f2589f397faa6ad8e8" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iptables-libs-1.8.4-14.el8.aarch64.rpm", + "checksum": "sha256:0fd7dd5b060e7533144ad7a3cae2453ad6f87650010f328879b10c7c4cba0c04" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-c-0.13.1-0.2.el8.aarch64.rpm", + "checksum": "sha256:36aece7b7a65785985bf0b98701514f12735a87517b8578a3eb3710f82ba4765" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-glib-1.4.4-1.el8.aarch64.rpm", + "checksum": "sha256:1143ac623a74d7feaaaf293c18d942d243248f6356628f87216670c10d11687b" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-2.0.4-10.el8.aarch64.rpm", + "checksum": "sha256:10ac3bf7565725a55b0aef56f65befd0d320219fc83adfab6e564c19f8c44bd6" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/keyutils-libs-1.5.10-6.el8.aarch64.rpm", + "checksum": "sha256:e4ec1966f9bc7cbc898fe7550600ae3e9e4f8afbcdd3f6e74afe1965247653ba" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-25-16.el8.aarch64.rpm", + "checksum": "sha256:1091a799d34a42d2e42ac462b4f979a55d17513eca5a00bad9bdba56cca83357" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-libs-25-16.el8.aarch64.rpm", + "checksum": "sha256:6f87f305a3e0e0faf69c2a9d4f277958ca33e85b72c6e4f77a365a5f60ced3d3" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kpartx-0.8.4-2.el8.aarch64.rpm", + "checksum": "sha256:4a27cd4496ebdba821b3c7692eeb0c0fff28c6af69fe4fe9e4bf52511639bd6a" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/krb5-libs-1.18.2-3.el8.aarch64.rpm", + "checksum": "sha256:ca87249f90bac96902d18c11a1f8c80566fa090c6473226bdd147e07e3ed21ec" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libacl-2.2.53-1.el8.aarch64.rpm", + "checksum": "sha256:7c014b54f7929348f614f8f4eb7a1552b8565c0a57f3a75ff6471dc05f30cafe" + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.112", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libaio-0.3.112-1.el8.aarch64.rpm", + "checksum": "sha256:98f838a9775269a0f796151bd54d52c7ac91d4bf1365186772f243bfafbb136a" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libarchive-3.3.2-9.el8.aarch64.rpm", + "checksum": "sha256:dfdec57ff520511d1d4ef9d913d90fc8d6ac98685cbc12fb568c8980f2a73f1a" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libassuan-2.5.1-3.el8.aarch64.rpm", + "checksum": "sha256:0f1a02850c102e2a186787504f965c0c10d6432b9f600c18bc2f520e55f04a8c" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libattr-2.4.48-3.el8.aarch64.rpm", + "checksum": "sha256:6f2bfbe0f23d3b233aacb72c153ee133839353325f028321eb5ea38b0dc06c02" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libblkid-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:d173b35182f28b9dd48e4a942f2a20c659bee2f9ac234b60cf8b995aa2421382" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-2.26-4.el8.aarch64.rpm", + "checksum": "sha256:2cddadff38ccef2364a7e40af0e1d9b3bf9c06869c15ceeb655f3cfa431c2083" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-ng-0.7.9-5.el8.aarch64.rpm", + "checksum": "sha256:62a2878605ca0415fd60adcff4c7068d855d20737498a968fabc646610ccbe5c" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcom_err-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:e5f82f102f51d88aa517bbebd170795a571b7ddc3036574b92b498cc13704d98" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcomps-0.1.11-4.el8.aarch64.rpm", + "checksum": "sha256:ff9fc6467a4c2fd0c22c419a9cdb7a524d1c69d0c87aa09f31728bef9f692f76" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcroco-0.6.12-4.el8.aarch64.rpm", + "checksum": "sha256:86ae7501bdf0149728879f488dd4c86907216cb5b021192347a5c10a55382931" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcurl-7.61.1-12.el8.aarch64.rpm", + "checksum": "sha256:2809ad51c6eb6c9a54d64cccc2cd948f6fd4207f32b4493b3f4a9bd0886c894b" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-5.3.28-39.el8.aarch64.rpm", + "checksum": "sha256:84e7102978d76d80aa40c43efcc71c1e54e819195132df921a8c13cec54328da" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-utils-5.3.28-39.el8.aarch64.rpm", + "checksum": "sha256:621e96e91103f2f701e4ac3b8b8b6ef9aab4db5ab8fb3e141eb02e3f328aed79" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdnf-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:fac29887224d91e8190a569b3ac5be1168034f36c9c234576ea3cefe686e46cd" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libevent-2.1.8-5.el8.aarch64.rpm", + "checksum": "sha256:058822931f4c34c18675116c1b02b718de4044c1019acb0d5f97417f00a30ba7" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libfdisk-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:d6aa17908468b5e2095526664fce6627dec7a02c26625339c14b9278cc39d4a6" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libffi-3.1-22.el8.aarch64.rpm", + "checksum": "sha256:4a40a1538c8a488f32476f96d2461c3b792eb0cf5acb998e397d8a9cef8e5461" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcc-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:3b607f0dbedecb25239e22c1f553c8d70db9d2206a877fa07567fa1a49e233d7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcrypt-1.8.5-4.el8.aarch64.rpm", + "checksum": "sha256:8498846918c7bc7a20553340434cfbfb0d19185adcd0ff52866c6506ab8f747d" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgomp-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:53fa2fd6a138d00c697b827a77bcc25ec498b1d49bb04ef80594e81ccabc165d" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgpg-error-1.31-1.el8.aarch64.rpm", + "checksum": "sha256:5a05f1126ed38f752af247dcdf7c958e738b935b8b6d942fd42f423768f05255" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libidn2-2.2.0-1.el8.aarch64.rpm", + "checksum": "sha256:2dc8e2f52451d1a11b16bbb389a24c58b61a1ba804ee777f9d06dbe4e1fcf6e5" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-1.2.0-2.el8.aarch64.rpm", + "checksum": "sha256:83301ca502322e0634173460bf8fa35572c36ab8cc2e6e600bf9980f845fc857" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.aarch64.rpm", + "checksum": "sha256:f07b1f40ebb1fbe5c24e68a38b5f768a21e2ec2254d4bd8ff61fb0bde72f64ce" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libksba-1.3.5-7.el8.aarch64.rpm", + "checksum": "sha256:704e1dc996a17815c6dcf7029c0ddb2849d40feaab6e9b9c687af9d95fef825c" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmetalink-0.1.3-7.el8.aarch64.rpm", + "checksum": "sha256:fa80a7e82e231dc77b3e44edd2cbf5b3d1657e009e59f15bbe8d50a4290b7c82" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmodulemd-2.9.4-2.el8.aarch64.rpm", + "checksum": "sha256:ba1364539f16d7c8379d7563fd0634651fa8a05b3f7098a21ba96e1f5641f132" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmount-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:26b14d8f226962ce712bbccfb245843759e835a24a139eacae86d680043a85a7" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.aarch64.rpm", + "checksum": "sha256:4874e739ed37bc6a5bfdb6069d4620e5f7efe01d60eb9fd2550c550167c99990" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.aarch64.rpm", + "checksum": "sha256:471663fca7e3f609834368d69d8f1f469cfc0d3f3e95dc2b79381722d0368edc" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpcap-1.9.1-4.el8.aarch64.rpm", + "checksum": "sha256:435a2be84a2b38372965dbd60ffed0ed38a616b8100859787a8bb3b19d9fc4d9" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpsl-0.20.2-6.el8.aarch64.rpm", + "checksum": "sha256:6557d001315e85ac123b1378c5aafb81428e2383debcacf3f91c55476cfc48eb" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpwquality-1.4.0-9.el8.aarch64.rpm", + "checksum": "sha256:d6ab7c8790cd6c9a137d908d840c51c547e950d25f6ab8af3c9ad3899ff6c044" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librepo-1.12.0-1.el8.aarch64.rpm", + "checksum": "sha256:2d74e0ab14393921c6160fda8dd533b58c0348acdf5ee5c306ffc64221700de2" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libreport-filesystem-2.9.5-11.el8.aarch64.rpm", + "checksum": "sha256:e55bf252e792f27f076101e94dfbbac97dabeea0f7893a4cb9b111a0b72d187f" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librhsm-0.0.3-3.el8.aarch64.rpm", + "checksum": "sha256:e9487db2fdce1f494ee1582787a1afc1ea4e0429189db8be0ddbb0af2676c4b6" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libseccomp-2.4.3-1.el8.aarch64.rpm", + "checksum": "sha256:cc7e751a62f9a28b82df0bce0ecfb050364b8688ef69473f1910909e44c5eb98" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsecret-0.18.6-1.el8.aarch64.rpm", + "checksum": "sha256:c1b5c4668331e8b05a08e7de432cbfb75f8072401bb6651a24e43f64eff8dcc4" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-utils-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:c82ca1c0ef4b89f75e8e7edbbae4f3eeb2720a4abd56b0927928cff2d9721186" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsemanage-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:140146ebcbadd9b0f2aa5c2fcde5c93888f2d84ce61a2a4cf148ef435d1ba410" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsepol-2.9-1.el8.aarch64.rpm", + "checksum": "sha256:c8a28b4587888435c51f6d1ce42f48b08fb0256e4029ea569e9a02adcb82c85a" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsigsegv-2.11-5.el8.aarch64.rpm", + "checksum": "sha256:bf267d9571cf568375e261d593236750f400ac536c1c818513106482ebc3fb10" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsmartcols-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:f35c0da3cff05ded33c0cb4f202dbb52a5caabec8b1897d5057df83c284d62f1" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsolv-0.7.11-1.el8.aarch64.rpm", + "checksum": "sha256:2397506a63455e543b201938f605e687de5590d9a06282824e2f6bfdf5e0f149" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libss-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:268d9232f0853037100432e9363c659cf99927e03f759fd4884643b560710cd6" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-0.9.4-2.el8.aarch64.rpm", + "checksum": "sha256:3ee6a4f61935c2f0698ad2c4834a5864920a1e48d55c7800da7c382249895e39" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libstdc++-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:f4e63e7eedc0266a575eb6107f41c5f20ca0505a0e80145c21b9741674d5c0b5" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtasn1-4.13-3.el8.aarch64.rpm", + "checksum": "sha256:ed28e1e31109e27ce1c676914364c9f1dd46b71d00cb4cf13931f0fec6cf6978" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtirpc-1.1.4-4.el8.aarch64.rpm", + "checksum": "sha256:481bbd6d73415d437a73eee7977ec370299acdac44b215a026652debba31783d" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libunistring-0.9.9-3.el8.aarch64.rpm", + "checksum": "sha256:da4b9bfad26d559485ade669556512acfe93ba23d204f2556bac82c09401b4e7" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libusbx-1.0.23-3.el8.aarch64.rpm", + "checksum": "sha256:01e486a3be67325e9692e909f5c6534137ee6a6df185ba2c09d4d50fe6c738f6" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libutempter-1.1.6-14.el8.aarch64.rpm", + "checksum": "sha256:ad07261ff4f478be9511f7ee749bfbe8b2ba8e28696c2f561caa20e35c535134" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libuuid-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:95de1777f7e8a734445c5d45e0b77da8b6c41a9b504582ed266d852c677a936b" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libverto-0.3.0-5.el8.aarch64.rpm", + "checksum": "sha256:532d46a4c0e68bd45eabc3e2ba6d570880344044e1034f5f347b37c470d0dced" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxcrypt-4.1.1-4.el8.aarch64.rpm", + "checksum": "sha256:876ffb285aaeddb2c18ae32527bd4ee202710bd8e18d5b410af22937646dcdec" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxml2-2.9.7-8.el8.aarch64.rpm", + "checksum": "sha256:fb56b7a416e12da0782ae8ba7396bc03a2f8844c2efcb5df3f8b9e74eb8b8059" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libyaml-0.1.7-5.el8.aarch64.rpm", + "checksum": "sha256:7864fbc866ae5a3e59b4f0f114b77ff52b55e76c5388a917f82a6097f02a4db7" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libzstd-1.4.4-1.el8.aarch64.rpm", + "checksum": "sha256:19d1de27d2f62b4a55735233807f70a1e8ff7551fed97ee8650dbd09c1ef50ea" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lua-libs-5.3.4-11.el8.aarch64.rpm", + "checksum": "sha256:bc0f9bd34ac6a01dd7272b87e1b7a33045ff8c6793cac02fa639dfc9341e8215" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lz4-libs-1.8.3-2.el8.aarch64.rpm", + "checksum": "sha256:64ac5cb6fd3da1610812795ce17e09648d89c87513d6284b852a3455b0831d3a" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mpfr-3.1.6-1.el8.aarch64.rpm", + "checksum": "sha256:320ced09e242f09047f4fab0a7f66aba6de2e42583f6a2e164eadcc1ffd0b915" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-6.1-7.20180224.el8.aarch64.rpm", + "checksum": "sha256:8ac1003d722e3d5f383c9b970bf6dfbc905007a624abadb63e520d7a93993747" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-libs-6.1-7.20180224.el8.aarch64.rpm", + "checksum": "sha256:f99f5edde9ad4574b84264c467420c910b31f78683fbf1b63d106a7e6c9d64a3" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/nettle-3.4.1-2.el8.aarch64.rpm", + "checksum": "sha256:e2c4ac0f7abf75cbcc7a6fb35412820c267f1a8ce614f41b60d901918c4616d5" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/npth-1.5-4.el8.aarch64.rpm", + "checksum": "sha256:daf36ee86ec6001770ae68bdd82409526faf4b9b1313a6b74fb54cfb98ff571e" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openldap-2.4.46-15.el8.aarch64.rpm", + "checksum": "sha256:cfa188d39884fd4ba36d27e8fb25aed9dbd26efccffbfd01a24c2c580fdb96f1" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-1.1.1g-9.el8.aarch64.rpm", + "checksum": "sha256:3ef63ecbebf844bcf682c9482dc0ddd158c955b0f066b62eb9575bb9a9642db5" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-libs-1.1.1g-9.el8.aarch64.rpm", + "checksum": "sha256:448d3ff44e7f32f3b33e891180e248dc1bcd4d410f68015a8b0c30dc7c385aca" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-pkcs11-0.4.10-2.el8.aarch64.rpm", + "checksum": "sha256:290c83afcd2b0a2b17aab95cf72a85da5f8b9f9a9862857c919a0f43e3fce70e" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/os-prober-1.74-6.el8.aarch64.rpm", + "checksum": "sha256:43ab42c8a58267936a89da99e37d3b9fc56489e958060f600ba047445ca44ee3" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-0.23.14-5.el8_0.aarch64.rpm", + "checksum": "sha256:651f38873d3356ec4efb27d04658541080d11cf1ece6335a07db1ca089fa7da3" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.aarch64.rpm", + "checksum": "sha256:ec40be9e0b2bb03f7b057a7a9342ffbd86129d58828fb310f445bc506261eb0e" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pam-1.3.1-11.el8.aarch64.rpm", + "checksum": "sha256:04c031a07bde4360484a0180e832036d3ac45a95c4839e54d7a02423df5485ef" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre-8.42-4.el8.aarch64.rpm", + "checksum": "sha256:fea4eb54fe59451b76fb40b9bd15ff41f0f51bb7371f94b2f5df572ef917d037" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre2-10.32-2.el8.aarch64.rpm", + "checksum": "sha256:ce8c92fa2bef1770f44992db24e1cb8cc850feab03a74cf0ebf741ecb0d160ea" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pigz-2.4-4.el8.aarch64.rpm", + "checksum": "sha256:f847957437e7f24844930c4a3ff64c5f7877f083553f48eeadca3c5f5e5c728e" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-3.6.8-30.el8.aarch64.rpm", + "checksum": "sha256:68593fad4413255772bd08ed7f8b578332f0f53e002c8c7473d90c966a87131b" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/policycoreutils-2.9-9.el8.aarch64.rpm", + "checksum": "sha256:b90ce065d5ea98845733ff06e47d385937f6293ebddf52144c80f5fe1f296307" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/popt-1.16-14.el8.aarch64.rpm", + "checksum": "sha256:4e4923f05d0032263d570075b9b832b9fc3550cd8f82f9a6b0b9b25061726110" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/procps-ng-3.3.15-2.el8.aarch64.rpm", + "checksum": "sha256:d890d028f59e2553730fad3dbea0e1a245c92c24836513fa2281194b1c90b53a" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-gpg-1.13.1-3.el8.aarch64.rpm", + "checksum": "sha256:90405803c0159cdf0f74a26b6ce064cfd9973e59232b2923ed171a38fc5684a6" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-hawkey-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:4909edde46b5b2b58d228bacafa3bab5bc5847559d591d59ecd59cdf50d36db4" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libcomps-0.1.11-4.el8.aarch64.rpm", + "checksum": "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libdnf-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:9b6fcdd19caee5fe77b9ed17adb3f11769a7109ebcf52d3cb3358d5a9eecc391" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libs-3.6.8-30.el8.aarch64.rpm", + "checksum": "sha256:65b8d755ff01dfefa423d2f0bd6fd54cfc4c580da63510e19cf178abb6e26172" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-rpm-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:b5b1f5f7a02f70db056861813ddcf181f2ebba507cd368fbe2c32f262edf7fc6" + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/readline-7.0-10.el8.aarch64.rpm", + "checksum": "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-8.3-0.2.el8.aarch64.rpm", + "checksum": "sha256:a6292dd846bc471b22409fc95a5e09c88bcb6176251dc5cc11f4b14a73ddda11" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-eula-8.3-0.2.el8.aarch64.rpm", + "checksum": "sha256:784d385116891056b618722c933d43c5b395b92fa82e5bc797081317ec6a82ba" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:47b483c0f556c56f0b1f468603c57834864902ae5a849a18c8a0ca5f76d66c86" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-build-libs-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:c633b98b4dbf96674a69573404819c34d66eb7e19820283fc588f6b10b0e3fc8" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-libs-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:d3fb5a473c44cd8ae6b94d6bf3fc552553d8f4ef28eed439658ea38990ab9db5" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:0a885c6dc6abd969b828bf2fd7063ee884e6d058eaf405b02f3dd6efb6c66bac" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:0bb7024125ca67119612e55a92da13c989e0306ddd7de7e655a679c963939ef7" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sed-4.5-2.el8.aarch64.rpm", + "checksum": "sha256:125c92f23d87b905c21e9f7669f0ec6e41428ab63c8c13f63db8980f292797d5" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shadow-utils-4.6-10.el8.aarch64.rpm", + "checksum": "sha256:a840b8193ce9b1b72e3783b9a9bb2ec91947ba3b6f7ac973ae8e0e20a7059117" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shared-mime-info-1.9-3.el8.aarch64.rpm", + "checksum": "sha256:19cd894b4154d1a8521c6884cfd2a6eaf1f498b7dec5cc31408f8535b9098f2a" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sqlite-libs-3.26.0-10.el8.aarch64.rpm", + "checksum": "sha256:207e6396488c1db18fb7b1f2b9952f48c2625f042c5f6a901d41974ce376b0e0" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-239-36.el8.aarch64.rpm", + "checksum": "sha256:d4467ba499fe1ddd82746ad00d7e86bea59c4827fe1ff8c05132bad1f93ddb7f" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-libs-239-36.el8.aarch64.rpm", + "checksum": "sha256:800c9a0d718c641ceee26c8f625b2dcd79a33963e9e7a11930678dc99582a2d0" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-pam-239-36.el8.aarch64.rpm", + "checksum": "sha256:986683a0edb615a5d45a9c1b0ee3d27f8032c2667cad58d24526085e41010992" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-udev-239-36.el8.aarch64.rpm", + "checksum": "sha256:3fe7c10c144c8fffc00d144317a2bf8029bd9d048432bccfc352dfc6f0995680" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tar-1.30-5.el8.aarch64.rpm", + "checksum": "sha256:ba66a87402ccc8515e164f597f5d254ad9513979fe3ca1ffabf63c915c0daa73" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-0.3.14-4.el8.aarch64.rpm", + "checksum": "sha256:d695df94220c2ef990e502123b3bd8ede8fcfb4f738346dd98d999559b01b6b3" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-lib-0.3.14-4.el8.aarch64.rpm", + "checksum": "sha256:fb263177eee60c26b7acaa76cb640c3d7ab6928e73c8af80b2111a247bd61ece" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/util-linux-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:83e470505f558f8cf8414a7fc8fb0d1bc4b16ed15d05ccf7e46332b04d1a0d85" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/which-2.21-12.el8.aarch64.rpm", + "checksum": "sha256:0f32d23a6b2b15603d710b0317238ef8dde3de61eda96713e21d86c9fc7a98ed" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xfsprogs-5.0.0-4.el8.aarch64.rpm", + "checksum": "sha256:760d9056891a60c200984f0655aee1876b3bf890f7486306c05db8e295ae7843" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-5.2.4-3.el8.aarch64.rpm", + "checksum": "sha256:e426534c59b3a35068877d324dd34d643ad7c84d2c406b2e6502ac6c2a367d39" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-libs-5.2.4-3.el8.aarch64.rpm", + "checksum": "sha256:094eff70081085f87a7ac0dedafa851ad8ac8e03f9f328636df4a0f8301d0e87" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/zlib-1.2.11-15.el8.aarch64.rpm", + "checksum": "sha256:cf9a0bbaa7bd075d2af532586ee93ab92b96d9859f53a57f85cd7e0309f8fff6" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libxkbcommon-0.9.1-1.el8.aarch64.rpm", + "checksum": "sha256:a07f96031fbe9507a8d6bb0e14cf0783bc615552e4cfb75131672072f5729de8" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/memstrack-0.1.8-1.el8.aarch64.rpm", + "checksum": "sha256:aa1a6a85493590efb9c0235c15d6a05e8b119f385dc13b3e3abd2315f8c4a6e0" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/pinentry-1.1.0-2.el8.aarch64.rpm", + "checksum": "sha256:22c0e44318e36e04ad1eb4632dcf25db991f481f9a543387d372e1f2ad92561f" + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-unbound-1.7.3-14.el8.aarch64.rpm", + "checksum": "sha256:6ae316dfb9723d13a8d36d98d109d4a55017b568ee2070279f1bdccdc699862a" + }, + { + "name": "python36", + "epoch": 0, + "version": "3.6.8", + "release": "2.module+el8.1.0+3334+5cb623d7", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.aarch64.rpm", + "checksum": "sha256:5996ff948b5874f894c5ce3495652e6de552addf2331fd82193023d77994ef8f" + }, + { + "name": "qemu-img", + "epoch": 15, + "version": "4.2.0", + "release": "29.module+el8.3.0+7212+401047e6", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.aarch64.rpm", + "checksum": "sha256:d20f4bf44fcc90509e7afca364eae0a55c8f33df2f8a69e266f5fcd4b5fa2e4b" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/unbound-libs-1.7.3-14.el8.aarch64.rpm", + "checksum": "sha256:727c08fe072ef85837e8db30574aec712cdf67a062eead3e5481ba08425b2395" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-1.26.0-0.2.el8.aarch64.rpm", + "checksum": "sha256:63c64d526e9820ddc57a77c053674eeccefef33f16af536dd9b47e816db06988" + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-libnm-1.26.0-0.2.el8.aarch64.rpm", + "checksum": "sha256:0229afd544d1a59bfe26c095ad338bac7e0d2f10aab88bd895f3766e8f54fff3" + }, + { + "name": "NetworkManager-team", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-team-1.26.0-0.2.el8.aarch64.rpm", + "checksum": "sha256:1f8013c5bd1c4914a11363d56d67fa70871f5f42c64f57862c791871fb9bb05c" + }, + { + "name": "NetworkManager-tui", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-tui-1.26.0-0.2.el8.aarch64.rpm", + "checksum": "sha256:c3727553ea6dd925d9c760b23eb617d1cb475fab9c495543868666ad6cd3b088" + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/acl-2.2.53-1.el8.aarch64.rpm", + "checksum": "sha256:b984d8576520272b1011cc46b03c666cd6abc1bf74b428a8781ca58c6287a007" + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm", + "checksum": "sha256:d82c81115472a70d60d2320e254762c76a583ad2190ad45068476c77512588af" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm", + "checksum": "sha256:d9a4628bd8d3e776f626be4cb5edec305c2ff894d7c5cc7e33e212545721053a" + }, + { + "name": "authselect", + "epoch": 0, + "version": "1.2.1", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/authselect-1.2.1-2.el8.aarch64.rpm", + "checksum": "sha256:0e30a92139490232a4b891f4f802db74f41002475f8d203c6adffe1fb9d2b1ab" + }, + { + "name": "authselect-libs", + "epoch": 0, + "version": "1.2.1", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/authselect-libs-1.2.1-2.el8.aarch64.rpm", + "checksum": "sha256:a7fe54c4d43f925093face259d9fd8f28f06e9c11dcc3ad100b24288c577e4a4" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bash-4.4.19-12.el8.aarch64.rpm", + "checksum": "sha256:518e5412ce19ab733f62c334da8c5545a212c4c971d513eb95590b08a14e3772" + }, + { + "name": "bind-export-libs", + "epoch": 32, + "version": "9.11.20", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bind-export-libs-9.11.20-3.el8.aarch64.rpm", + "checksum": "sha256:dfaf74e2116ee30d1882b3461de90d3fb6faad4468eb0678f845d105b4439a83" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/brotli-1.0.6-2.el8.aarch64.rpm", + "checksum": "sha256:796cac51b2c1092c4faad372717c6ddc37cad9757111a41e531fe0a8d6c0a9ea" + }, + { + "name": "bzip2", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bzip2-1.0.6-26.el8.aarch64.rpm", + "checksum": "sha256:13cab1083eb51b9ab0dc3fdc567106454e28096a6ec32184ad509ec19214fdef" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bzip2-libs-1.0.6-26.el8.aarch64.rpm", + "checksum": "sha256:2d84f6765b1645f867527f493b6153470602a80c75f81545bf619aa92127e4da" + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.13.0", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/c-ares-1.13.0-5.el8.aarch64.rpm", + "checksum": "sha256:a32db9e3d2321bd5c4e998f7ed6f4459d85f792a16f4fdfb8805f5936d521572" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/checkpolicy-2.9-1.el8.aarch64.rpm", + "checksum": "sha256:adb9e37c63a055bc106a9676c10a85fdedcb4af64ae062249732e158bc0ae9af" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/chkconfig-1.13-2.el8.aarch64.rpm", + "checksum": "sha256:6a6aa18217ae72a0b33e4302da927e6ded92520cbf4d48a5030d4a2f95eeb5d8" + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/chrony-3.5-1.el8.aarch64.rpm", + "checksum": "sha256:13f55a1fea88c4720dc704fa19573325ddde8c1c60ed71e96f98a9e5a6508d44" + }, + { + "name": "cockpit-bridge", + "epoch": 0, + "version": "222.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cockpit-bridge-222.1-1.el8.aarch64.rpm", + "checksum": "sha256:adf5e529d714d774ffc43695015cbba845feafa1c49642dd8abbc6148aee4c6d" + }, + { + "name": "cockpit-system", + "epoch": 0, + "version": "222.1", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cockpit-system-222.1-1.el8.noarch.rpm", + "checksum": "sha256:202cfa88a6b2f1ec6a0bc0546f578c1ca6b5b6fcfeaf3e1228beead14d8bf758" + }, + { + "name": "cockpit-ws", + "epoch": 0, + "version": "222.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cockpit-ws-222.1-1.el8.aarch64.rpm", + "checksum": "sha256:29ec65fa4b5624c1ab113aa7a33dd9ad87fe3bd8f5aabba51a9aecf19fd0cc52" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-8.30-8.el8.aarch64.rpm", + "checksum": "sha256:15c33124ac0479d34f1f58d2bd24cc52db7089b4a8681c276a3fd0d6dfe4fc72" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-common-8.30-8.el8.aarch64.rpm", + "checksum": "sha256:e085cf8bddcf09c908d925688dae077300d2964b40bd060af252d26a963cfe50" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cpio-2.12-8.el8.aarch64.rpm", + "checksum": "sha256:dcda73e0ea7b5d2710528fc6df135d435281d1f4d2be0018bb6f1858e818d599" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-2.9.6-15.el8.aarch64.rpm", + "checksum": "sha256:b7bc10e9947763df6e6177b3dbbe77c21f55ed60d26c4c28bfe14a98f7e06189" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-dicts-2.9.6-15.el8.aarch64.rpm", + "checksum": "sha256:acd4674b3fbe01d6cf94eb18a81cdb00beb73bf3d4a25a28e234f31498f5c389" + }, + { + "name": "cronie", + "epoch": 0, + "version": "1.5.2", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cronie-1.5.2-4.el8.aarch64.rpm", + "checksum": "sha256:571b590c6ec7a2ac73996dc7d3dd7863aecc43e5dcb1411c191218a32633952b" + }, + { + "name": "cronie-anacron", + "epoch": 0, + "version": "1.5.2", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cronie-anacron-1.5.2-4.el8.aarch64.rpm", + "checksum": "sha256:98cf1d2d3ca85b3ec31dc56532c3b9f6fa5b3edadc8b4f4125526cdfb2b7507b" + }, + { + "name": "crontabs", + "epoch": 0, + "version": "1.11", + "release": "16.20150630git.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crontabs-1.11-16.20150630git.el8.noarch.rpm", + "checksum": "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cryptsetup-libs-2.3.3-1.el8.aarch64.rpm", + "checksum": "sha256:689577d74311a7327aab6fe412a803d72b790957e863b6b78a8621a040306919" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/curl-7.61.1-12.el8.aarch64.rpm", + "checksum": "sha256:7d3ddbaae06c7fb8d24449e11b418ee07bdd9e07f7f0af57741d220b97228557" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.aarch64.rpm", + "checksum": "sha256:41cc2d507fdfbba939c00164a563e770d466f992cb64d3c51a79aec20b31d6d1" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:dc37d12420a2593c46619e9b67a0115255a0c7334f547871ce08e329bf5d15a2" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-daemon-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:f96bc0d82d4c6934659c23a6771515e78bf2252ed24d32c78001260ee6e36c8d" + }, + { + "name": "dbus-glib", + "epoch": 0, + "version": "0.110", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-glib-0.110-2.el8.aarch64.rpm", + "checksum": "sha256:b847207a13bec4b7fcfaaf3668d93bc5ad40a6477f976e6aeb59ab431545d0c5" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-libs-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:bae965c689b08ce42f10366e4b441504432ac353d30edb8b4b2cfc798069434f" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-tools-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:eaf3c7104d3ebd0cdda3d6ce44f4c79eec0a8ce3ce71cbb0d9dfe716f58a105d" + }, + { + "name": "dbxtool", + "epoch": 0, + "version": "8", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbxtool-8-5.el8.aarch64.rpm", + "checksum": "sha256:dfea8e48e0cf3d8984237e3d5fb715c7edd9b1f8db03faaefc42a8046b45dab8" + }, + { + "name": "dejavu-fonts-common", + "epoch": 0, + "version": "2.35", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dejavu-fonts-common-2.35-6.el8.noarch.rpm", + "checksum": "sha256:7ce6aa282f9f23c46c44186595924d05f4e7a899b504eb95a0f87008f6620268" + }, + { + "name": "dejavu-sans-mono-fonts", + "epoch": 0, + "version": "2.35", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dejavu-sans-mono-fonts-2.35-6.el8.noarch.rpm", + "checksum": "sha256:dd379385bd1d2e05f50c4795e5a0eff9030fdac0fd2579bb4b56233257672b27" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-1.02.171-3.el8.aarch64.rpm", + "checksum": "sha256:6fbfaa1e1b1bb4e2362cf3dce0f59a94a78b457904234cbccbe6afacde311c26" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-libs-1.02.171-3.el8.aarch64.rpm", + "checksum": "sha256:057b6632870b8c3c0c950a19092ef2f9749bf3d1a37ccb083bf42ca6404db066" + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dhcp-client-4.3.6-41.el8.aarch64.rpm", + "checksum": "sha256:157044e6cf5cc52b64b9a5d621fdb5b0846a527daa428382330e68bdb47789eb" + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dhcp-common-4.3.6-41.el8.noarch.rpm", + "checksum": "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2" + }, + { + "name": "dhcp-libs", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dhcp-libs-4.3.6-41.el8.aarch64.rpm", + "checksum": "sha256:9a1c6f2b18126214e9afa768bbf16b29b89ce3169ccbd4bc169000eed143dcb4" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/diffutils-3.6-6.el8.aarch64.rpm", + "checksum": "sha256:3a684fd5f1b1d417c6c3e9d1f0d5b846138aa06450ff246425d43d4a20bd619e" + }, + { + "name": "dmidecode", + "epoch": 1, + "version": "3.2", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dmidecode-3.2-6.el8.aarch64.rpm", + "checksum": "sha256:deaa0958c9fb57773dfdf74567b658d273cea81186b913aa1473867dc07b335b" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dnf-plugin-subscription-manager", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-plugin-subscription-manager-1.27.9-1.el8.aarch64.rpm", + "checksum": "sha256:925c70a394a76004087fd6e8d94f7edab9de9efb2b81740c875698532ba124c7" + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-plugins-core-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-049-89.git20200625.el8.aarch64.rpm", + "checksum": "sha256:4d8edaa317fd508226bb5421ef423470f3e9153167222dee7bf8fb2346b7875b" + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-config-generic-049-89.git20200625.el8.aarch64.rpm", + "checksum": "sha256:2e26672ae726ba833187292dcc6c1673a07e26d974fef2f71a83407989eea8a1" + }, + { + "name": "dracut-network", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-network-049-89.git20200625.el8.aarch64.rpm", + "checksum": "sha256:f769edf78f42bae1bd183a6f4a49d74822db2b5e830147178d197be1cd67a306" + }, + { + "name": "dracut-squash", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-squash-049-89.git20200625.el8.aarch64.rpm", + "checksum": "sha256:e1bee08f1e76f8b820a59b5c228a0c1b4eaa7fc70c7d840251a04a74d517e25c" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:3256e78263462d5d7ab37b696992aedd6f810431641ce8d1e1bc198c797b402b" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:da4d193d5f0caf7a196f3bd4aa1225072b522521d82fca8edecc6546b5460ac6" + }, + { + "name": "efi-filesystem", + "epoch": 0, + "version": "3", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efi-filesystem-3-2.el8.noarch.rpm", + "checksum": "sha256:17501958f52d2db1417cab8dd5ca261bf447fd93eb62b80173f9875c3012b700" + }, + { + "name": "efibootmgr", + "epoch": 0, + "version": "16", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efibootmgr-16-1.el8.aarch64.rpm", + "checksum": "sha256:c321e3a0253fb2691035135b3d3740faa76b8e9c84a0378f480ff85ddd9f16bd" + }, + { + "name": "efivar", + "epoch": 0, + "version": "36", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efivar-36-1.el8.aarch64.rpm", + "checksum": "sha256:1b8c037a6c67959b52894f38444ed1133356c65cec2eed3acf37c45cf8609e63" + }, + { + "name": "efivar-libs", + "epoch": 0, + "version": "36", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efivar-libs-36-1.el8.aarch64.rpm", + "checksum": "sha256:db817b5d2f9d678fd0fee30e52ed080fdb5c9dd723cd57f7d6b0133293502047" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:c88d1656b8001ff79175f7d3b7818681e40e54e8fec6fb8556ba8141d437fcfa" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libelf-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:b140eb203fe889d1c75ef3b5527033cfeb7a6f0c813638a607c9f10faf52a34b" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libs-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:98dd1582b8ab27085379a3a7e598a6e261c62f97a5f3689447cbf1d4af9ae46c" + }, + { + "name": "ethtool", + "epoch": 2, + "version": "5.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ethtool-5.0-2.el8.aarch64.rpm", + "checksum": "sha256:13f1d396ba9e0fe3f8d5ef43693b5c1178207e594d2b830e94d3f8e02e33767f" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/expat-2.2.5-4.el8.aarch64.rpm", + "checksum": "sha256:77b56d825eb31ca191254d17a4c9399e3c4fe8af42a528c2ad4424bfd865b82d" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-5.33-16.el8.aarch64.rpm", + "checksum": "sha256:f7ccbe0d7b4a61b5a47253f168f8efcdbf41ad0755e678f9edcd2f6a69c93c7d" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-libs-5.33-16.el8.aarch64.rpm", + "checksum": "sha256:3ee66f993ee567b2457a221ed364ae4f8dfe783a5f0e723d9169f95d12f9e696" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/filesystem-3.8-3.el8.aarch64.rpm", + "checksum": "sha256:634a3cbf0b334e901b6887176fa1b98246be7c4010b4c21cb6fd8fa7aa5fdf94" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/findutils-4.6.0-20.el8.aarch64.rpm", + "checksum": "sha256:540fa90864b4eb0176b56e0c5e9d7bc6130985288ae297b4c38950381b08a827" + }, + { + "name": "fontconfig", + "epoch": 0, + "version": "2.13.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fontconfig-2.13.1-3.el8.aarch64.rpm", + "checksum": "sha256:c62bb06ffc0e023172239a519a06ca47d9da2602ee37eb5ef9303b7e1e917e61" + }, + { + "name": "fontpackages-filesystem", + "epoch": 0, + "version": "1.44", + "release": "22.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fontpackages-filesystem-1.44-22.el8.noarch.rpm", + "checksum": "sha256:db1fad3c2d8735e69084bd4b09ea963938e4dde2f2e096dc7a4ce146f18b7ab0" + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.9.1", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/freetype-2.9.1-4.el8.aarch64.rpm", + "checksum": "sha256:b7955bb1ba7e944f6e5c36713db3bbc570ba0eb8de11ec6a1fa28cfc5c0029c8" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fuse-libs-2.9.7-12.el8.aarch64.rpm", + "checksum": "sha256:e08305aecd924631284ddaeae39a83cca85495389d4ddef75410a32af49f946d" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gawk-4.2.1-1.el8.aarch64.rpm", + "checksum": "sha256:e0faa8a6bc43432619a2b6a26e9f1323d30cda945580d8bc0f6c2fe742b71924" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-1.18-1.el8.aarch64.rpm", + "checksum": "sha256:3f5765cebcac288cc1b5b118acfbc2016eda7b81ad73923f6f9c21e4731eb0d9" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-libs-1.18-1.el8.aarch64.rpm", + "checksum": "sha256:8ef2fcbe5a8d6e7d393d28838ff458336d16e006bc7d19921f460eb105b88570" + }, + { + "name": "gdk-pixbuf2", + "epoch": 0, + "version": "2.36.12", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdk-pixbuf2-2.36.12-5.el8.aarch64.rpm", + "checksum": "sha256:c4b6cad5e84e65ef2ef4cabfa2a68643187c97767331f026be5e6765ddfa4db8" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-0.19.8.1-17.el8.aarch64.rpm", + "checksum": "sha256:fddf61e9024c41073442ccff0c9990fa004e9b183f391c4e3cf3853e5ae6062c" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-libs-0.19.8.1-17.el8.aarch64.rpm", + "checksum": "sha256:ce6960fa7831611815e163864a91b70b0ab1ef0f446c2cad1eec13404822cad5" + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.56.1", + "release": "1.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glib-networking-2.56.1-1.1.el8.aarch64.rpm", + "checksum": "sha256:6b1dcf4c02ee8c588c0ae44af92ae1060dcdc44f197e624a71fb31c86554ad2c" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glib2-2.56.4-8.el8.aarch64.rpm", + "checksum": "sha256:964b1d9563e42a176c24cf5c91616ee5cc40de3b1c92038d7fb0392113eaf159" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:d4424a9c946da1eab876298af8f772d5aab1109a1f551ac2f1cd10ee849568de" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-all-langpacks-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:4d8d164f8bd56b7ab6252f009b38525f39fb161c03713414e1583894a265c50a" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-common-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:91c58481a7e4a9b7f9e0e14844fa73047395c75df95d35afa3b0d8ef3f584491" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gmp-6.1.2-10.el8.aarch64.rpm", + "checksum": "sha256:19efe6f125c00123ccc6d96e51eb61e711f3ea01f32d18cce14d3b614217c58e" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-2.2.20-2.el8.aarch64.rpm", + "checksum": "sha256:f700797810fb2bdbba5a0b31e10c361360a87bac1a282da109273194a25bf6ef" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-smime-2.2.20-2.el8.aarch64.rpm", + "checksum": "sha256:0b4564ad3a799af1a4a0de33b0952f6056d942b0cfa39b73e9375bf0c05b3191" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnutls-3.6.14-3.el8.aarch64.rpm", + "checksum": "sha256:3bf230c85711b285afb968850d7e98eb6b068a06e7ca40e94203e388d8447f48" + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.56.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gobject-introspection-1.56.1-1.el8.aarch64.rpm", + "checksum": "sha256:e160910d31a37afeea87df306264fb1f727cbca574d2c234cdca856f5311fbd6" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gpgme-1.13.1-3.el8.aarch64.rpm", + "checksum": "sha256:c22f0d40fbdaaceec711be0cecc122fac4570d126914ce3694a3d6a1178bd487" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grep-3.1-6.el8.aarch64.rpm", + "checksum": "sha256:81d2e21dad970c08798c0df00bbda21acf165a370f9612e0d14ce69e5dd6c5c3" + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "18.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/groff-base-1.22.3-18.el8.aarch64.rpm", + "checksum": "sha256:8f2c073583d6d4347642139a9806174ba64848c6bd4fbc81b7e7e0d42751cc74" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-efi-aa64", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-efi-aa64-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:635d847cc4dec8a8e1b418adfda2bc0a9e1814ed6c2c6154a5430029d83abd24" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:2921d3aa14a509d271ca35256903c142c30f088f7dc889a4c4e15b26316ef5c0" + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-extra-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:4633c2b5a93723e1cad477b81f9ccefafed342f8c4474ec305058f99c713229d" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-minimal-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:126d980678e5b687c775cf857b4013306f1a761353370258a0f04d92a3553f92" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grubby-8.40-41.el8.aarch64.rpm", + "checksum": "sha256:5eddb5c1febbe6e58491f8e9ee8fc9897298b307e0357c01f49d445cf25283c9" + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.32.0", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gsettings-desktop-schemas-3.32.0-5.el8.aarch64.rpm", + "checksum": "sha256:83ffb9eac35272ff70a84f5160b74554fbf3f886ee17ebf55615928085baa7cb" + }, + { + "name": "gssproxy", + "epoch": 0, + "version": "0.8.0", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gssproxy-0.8.0-16.el8.aarch64.rpm", + "checksum": "sha256:b3f48a0503e35391965a46b4467f5e229a30f847c303b7b5e2747f6ec71aa62f" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gzip-1.9-9.el8.aarch64.rpm", + "checksum": "sha256:e82699d15e4e6ff7825629d7c1c8a0f50a5519b6e5328472de91a0deddb9cf3d" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hardlink-1.3-6.el8.aarch64.rpm", + "checksum": "sha256:fc51460213b3bf5b67f08f2695aae8d728f614adbbacb917a0825e4ebfbc3e68" + }, + { + "name": "hdparm", + "epoch": 0, + "version": "9.54", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hdparm-9.54-2.el8.aarch64.rpm", + "checksum": "sha256:4059e9cccbde0401f9af4dea1160a07af8760adbc3e1d964e5c8ac87307eff81" + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.20", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hostname-3.20-6.el8.aarch64.rpm", + "checksum": "sha256:7fc33f147b99749fdbae420ed51277cb99d9b6418b7f739fe51c7563945bc0d7" + }, + { + "name": "hwdata", + "epoch": 0, + "version": "0.314", + "release": "8.5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hwdata-0.314-8.5.el8.noarch.rpm", + "checksum": "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ima-evm-utils-1.1-5.el8.aarch64.rpm", + "checksum": "sha256:cf8fdbfcd359aac8bf55500c24e6843baafe8fef35019126c3616806b41415b3" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/info-6.5-6.el8.aarch64.rpm", + "checksum": "sha256:3f7e5e72ab9e18dbca936b40734c91520242a49a9e98a2f2589f397faa6ad8e8" + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.00.8", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/initscripts-10.00.8-1.el8.aarch64.rpm", + "checksum": "sha256:f7de2bbb3653c3033d43f645ac26e91c788527c0b4d5e7238dea54c3adc6f1a1" + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.2.4", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ipcalc-0.2.4-4.el8.aarch64.rpm", + "checksum": "sha256:21685a7b79484a6d684efd86af6fb23dc13aaadc534cc4c4ae3edc0ceb84051b" + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.3.0", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iproute-5.3.0-5.el8.aarch64.rpm", + "checksum": "sha256:f4f5cc3080dc150c47b27383a344937fe17a679cb7046ca76165654d4e207a0b" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iptables-libs-1.8.4-14.el8.aarch64.rpm", + "checksum": "sha256:0fd7dd5b060e7533144ad7a3cae2453ad6f87650010f328879b10c7c4cba0c04" + }, + { + "name": "iputils", + "epoch": 0, + "version": "20180629", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iputils-20180629-2.el8.aarch64.rpm", + "checksum": "sha256:ebcaa2d2ec8ddaa66d042a208ccee6b13735ffba04fe3f326954cd76fa4f5910" + }, + { + "name": "irqbalance", + "epoch": 2, + "version": "1.4.0", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/irqbalance-1.4.0-4.el8.aarch64.rpm", + "checksum": "sha256:a445e982c81c7a64f6660f7f3bf6ed03dac3cd599dcb1e4bae06b8f236ea7e7f" + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.11", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/jansson-2.11-3.el8.aarch64.rpm", + "checksum": "sha256:c0f53020ecdb8eefb21795b0acf589334e89a9ef339a84d42e61999f53c67d18" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-c-0.13.1-0.2.el8.aarch64.rpm", + "checksum": "sha256:36aece7b7a65785985bf0b98701514f12735a87517b8578a3eb3710f82ba4765" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-glib-1.4.4-1.el8.aarch64.rpm", + "checksum": "sha256:1143ac623a74d7feaaaf293c18d942d243248f6356628f87216670c10d11687b" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-2.0.4-10.el8.aarch64.rpm", + "checksum": "sha256:10ac3bf7565725a55b0aef56f65befd0d320219fc83adfab6e564c19f8c44bd6" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "kernel", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-4.18.0-221.el8.aarch64.rpm", + "checksum": "sha256:0136940a3e28a159e7347b0bc7d1dbbc0339c64f431349e355f75abe31cbf21c" + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-core-4.18.0-221.el8.aarch64.rpm", + "checksum": "sha256:0d61e2dfcaed066e4ef74e4baddab9cdec24602aeb7a98306481f38cb5f449eb" + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-modules-4.18.0-221.el8.aarch64.rpm", + "checksum": "sha256:d74da38b942dc95929b21c8fcf2c5d2fb4468b78ed14e7a4bcbe933998be4deb" + }, + { + "name": "kernel-tools", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-tools-4.18.0-221.el8.aarch64.rpm", + "checksum": "sha256:3e40a3103fbf71c83773beac7373d0e790631cb3c918d8b20a883c8e65e70136" + }, + { + "name": "kernel-tools-libs", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-tools-libs-4.18.0-221.el8.aarch64.rpm", + "checksum": "sha256:5896ab6e22741dc47c8c70de8c72178e7956cfba2abbda9c6b4ebbc54921b636" + }, + { + "name": "kexec-tools", + "epoch": 0, + "version": "2.0.20", + "release": "29.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kexec-tools-2.0.20-29.el8.aarch64.rpm", + "checksum": "sha256:e1826902c98cca301a4e0876b34e6c77f1688a1fb613c265cea37e2ee40e7884" + }, + { + "name": "keyutils", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/keyutils-1.5.10-6.el8.aarch64.rpm", + "checksum": "sha256:cddf8fbd1021116ee137a080d50a06ecd9269beb5042aee5782ca68bab62acf3" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/keyutils-libs-1.5.10-6.el8.aarch64.rpm", + "checksum": "sha256:e4ec1966f9bc7cbc898fe7550600ae3e9e4f8afbcdd3f6e74afe1965247653ba" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-25-16.el8.aarch64.rpm", + "checksum": "sha256:1091a799d34a42d2e42ac462b4f979a55d17513eca5a00bad9bdba56cca83357" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-libs-25-16.el8.aarch64.rpm", + "checksum": "sha256:6f87f305a3e0e0faf69c2a9d4f277958ca33e85b72c6e4f77a365a5f60ced3d3" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kpartx-0.8.4-2.el8.aarch64.rpm", + "checksum": "sha256:4a27cd4496ebdba821b3c7692eeb0c0fff28c6af69fe4fe9e4bf52511639bd6a" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/krb5-libs-1.18.2-3.el8.aarch64.rpm", + "checksum": "sha256:ca87249f90bac96902d18c11a1f8c80566fa090c6473226bdd147e07e3ed21ec" + }, + { + "name": "less", + "epoch": 0, + "version": "530", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/less-530-1.el8.aarch64.rpm", + "checksum": "sha256:551a506b43e32d21bf7b6333e028733956d5ef3560837a0c84b0d3e598efa046" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libacl-2.2.53-1.el8.aarch64.rpm", + "checksum": "sha256:7c014b54f7929348f614f8f4eb7a1552b8565c0a57f3a75ff6471dc05f30cafe" + }, + { + "name": "libappstream-glib", + "epoch": 0, + "version": "0.7.14", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libappstream-glib-0.7.14-3.el8.aarch64.rpm", + "checksum": "sha256:26725f2da31ba8cf58b34c70bdb763aa21fb9a9fe25ced46e70f071606ffbc94" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libarchive-3.3.2-9.el8.aarch64.rpm", + "checksum": "sha256:dfdec57ff520511d1d4ef9d913d90fc8d6ac98685cbc12fb568c8980f2a73f1a" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libassuan-2.5.1-3.el8.aarch64.rpm", + "checksum": "sha256:0f1a02850c102e2a186787504f965c0c10d6432b9f600c18bc2f520e55f04a8c" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libattr-2.4.48-3.el8.aarch64.rpm", + "checksum": "sha256:6f2bfbe0f23d3b233aacb72c153ee133839353325f028321eb5ea38b0dc06c02" + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libbasicobjects-0.1.1-39.el8.aarch64.rpm", + "checksum": "sha256:030eef043bf4cfdffc0a672ca2c1499281fbcb78a81a98a9e932ba0b7c9ebb6b" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libblkid-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:d173b35182f28b9dd48e4a942f2a20c659bee2f9ac234b60cf8b995aa2421382" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-2.26-4.el8.aarch64.rpm", + "checksum": "sha256:2cddadff38ccef2364a7e40af0e1d9b3bf9c06869c15ceeb655f3cfa431c2083" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-ng-0.7.9-5.el8.aarch64.rpm", + "checksum": "sha256:62a2878605ca0415fd60adcff4c7068d855d20737498a968fabc646610ccbe5c" + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcollection-0.7.0-39.el8.aarch64.rpm", + "checksum": "sha256:9138a16731ceb7fdbb8661338a5806692a7a95875894aac95069104f44bca234" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcom_err-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:e5f82f102f51d88aa517bbebd170795a571b7ddc3036574b92b498cc13704d98" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcomps-0.1.11-4.el8.aarch64.rpm", + "checksum": "sha256:ff9fc6467a4c2fd0c22c419a9cdb7a524d1c69d0c87aa09f31728bef9f692f76" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcroco-0.6.12-4.el8.aarch64.rpm", + "checksum": "sha256:86ae7501bdf0149728879f488dd4c86907216cb5b021192347a5c10a55382931" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcurl-7.61.1-12.el8.aarch64.rpm", + "checksum": "sha256:2809ad51c6eb6c9a54d64cccc2cd948f6fd4207f32b4493b3f4a9bd0886c894b" + }, + { + "name": "libdaemon", + "epoch": 0, + "version": "0.14", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdaemon-0.14-15.el8.aarch64.rpm", + "checksum": "sha256:c7a1a166d4a58fd42848d05e4dd0d8bc459fa3b585396230729978f9cffc4474" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-5.3.28-39.el8.aarch64.rpm", + "checksum": "sha256:84e7102978d76d80aa40c43efcc71c1e54e819195132df921a8c13cec54328da" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-utils-5.3.28-39.el8.aarch64.rpm", + "checksum": "sha256:621e96e91103f2f701e4ac3b8b8b6ef9aab4db5ab8fb3e141eb02e3f328aed79" + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdhash-0.5.0-39.el8.aarch64.rpm", + "checksum": "sha256:afcbadced001b780cb7fc4c180b070acb48c2fff04783d6a4a35d08fae9928d0" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdnf-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:fac29887224d91e8190a569b3ac5be1168034f36c9c234576ea3cefe686e46cd" + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "23.20170329cvs.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libedit-3.1-23.20170329cvs.el8.aarch64.rpm", + "checksum": "sha256:b93a509fc65dd88761b4f7f21d8a05f1cd22e878ac59eb7d8e1507f5a2376a1e" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libevent-2.1.8-5.el8.aarch64.rpm", + "checksum": "sha256:058822931f4c34c18675116c1b02b718de4044c1019acb0d5f97417f00a30ba7" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libfdisk-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:d6aa17908468b5e2095526664fce6627dec7a02c26625339c14b9278cc39d4a6" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libffi-3.1-22.el8.aarch64.rpm", + "checksum": "sha256:4a40a1538c8a488f32476f96d2461c3b792eb0cf5acb998e397d8a9cef8e5461" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcc-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:3b607f0dbedecb25239e22c1f553c8d70db9d2206a877fa07567fa1a49e233d7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcrypt-1.8.5-4.el8.aarch64.rpm", + "checksum": "sha256:8498846918c7bc7a20553340434cfbfb0d19185adcd0ff52866c6506ab8f747d" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgomp-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:53fa2fd6a138d00c697b827a77bcc25ec498b1d49bb04ef80594e81ccabc165d" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgpg-error-1.31-1.el8.aarch64.rpm", + "checksum": "sha256:5a05f1126ed38f752af247dcdf7c958e738b935b8b6d942fd42f423768f05255" + }, + { + "name": "libgudev", + "epoch": 0, + "version": "232", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgudev-232-4.el8.aarch64.rpm", + "checksum": "sha256:bcd19fd35b5f8535ff5bb15db91e2339c9435908c1123d5e2272fcae15a62260" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libidn2-2.2.0-1.el8.aarch64.rpm", + "checksum": "sha256:2dc8e2f52451d1a11b16bbb389a24c58b61a1ba804ee777f9d06dbe4e1fcf6e5" + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libini_config-1.3.1-39.el8.aarch64.rpm", + "checksum": "sha256:09f390f3bf4dac907dfbc58b714d6c3de1ee7755a0ca5661b2f7c0a7dfbcfcff" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-1.2.0-2.el8.aarch64.rpm", + "checksum": "sha256:83301ca502322e0634173460bf8fa35572c36ab8cc2e6e600bf9980f845fc857" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.aarch64.rpm", + "checksum": "sha256:f07b1f40ebb1fbe5c24e68a38b5f768a21e2ec2254d4bd8ff61fb0bde72f64ce" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libksba-1.3.5-7.el8.aarch64.rpm", + "checksum": "sha256:704e1dc996a17815c6dcf7029c0ddb2849d40feaab6e9b9c687af9d95fef825c" + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.1.3", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libldb-2.1.3-2.el8.aarch64.rpm", + "checksum": "sha256:439c408eb3f33e9d8bea308afda0b32fadf7910f7b064c9821499332672a60cf" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmetalink-0.1.3-7.el8.aarch64.rpm", + "checksum": "sha256:fa80a7e82e231dc77b3e44edd2cbf5b3d1657e009e59f15bbe8d50a4290b7c82" + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmnl-1.0.4-6.el8.aarch64.rpm", + "checksum": "sha256:0f6d940ccddd815da01182de1e7b7e2d12c493125285ff7ee902843beefdec16" + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "17.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmodman-2.0.1-17.el8.aarch64.rpm", + "checksum": "sha256:9fdfb9c1ced62828bfcb186bb83caf470b4c14a53611c0ab7f08035333b6dbee" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmodulemd-2.9.4-2.el8.aarch64.rpm", + "checksum": "sha256:ba1364539f16d7c8379d7563fd0634651fa8a05b3f7098a21ba96e1f5641f132" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmount-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:26b14d8f226962ce712bbccfb245843759e835a24a139eacae86d680043a85a7" + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libndp-1.7-3.el8.aarch64.rpm", + "checksum": "sha256:abfda01b6d377de999efa9c2b4870bf3ba43cd50155f036d13aae0ba4a617565" + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.3.3", + "release": "35.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnfsidmap-2.3.3-35.el8.aarch64.rpm", + "checksum": "sha256:26e7368e961b374cefb947dab3a98387a3da15a86331a0d99d7b0e68ef246626" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.aarch64.rpm", + "checksum": "sha256:4874e739ed37bc6a5bfdb6069d4620e5f7efe01d60eb9fd2550c550167c99990" + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnl3-3.5.0-1.el8.aarch64.rpm", + "checksum": "sha256:8c0d40edf059bf044314df38c84e26cfbe00bf4e687a6114eacb17251718312b" + }, + { + "name": "libnl3-cli", + "epoch": 0, + "version": "3.5.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnl3-cli-3.5.0-1.el8.aarch64.rpm", + "checksum": "sha256:091c7cf9a81bc55f9d813c40904e1b7b4f8889df3584d0978e0f6770f01042e9" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.aarch64.rpm", + "checksum": "sha256:471663fca7e3f609834368d69d8f1f469cfc0d3f3e95dc2b79381722d0368edc" + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpath_utils-0.2.1-39.el8.aarch64.rpm", + "checksum": "sha256:9a22fe8cebacb37d6bc22105db763016689e9ac06bee33fc41693f60b076ff0c" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpcap-1.9.1-4.el8.aarch64.rpm", + "checksum": "sha256:435a2be84a2b38372965dbd60ffed0ed38a616b8100859787a8bb3b19d9fc4d9" + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpipeline-1.5.0-2.el8.aarch64.rpm", + "checksum": "sha256:684080ec9230dce2d32c9b00ae381a00bb950d1984ed0b0e1c55fa6d75b6b099" + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.34", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpng-1.6.34-5.el8.aarch64.rpm", + "checksum": "sha256:1fbb9fed42dff3f9dbc9e4fd929281408f77506423424759c2ac57b76afc3cdb" + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "5.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libproxy-0.4.15-5.2.el8.aarch64.rpm", + "checksum": "sha256:332c3cd387659ab5dfbb14ea5e75d1c8e1c8a8833e0314dde3ec758607efb3e4" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpsl-0.20.2-6.el8.aarch64.rpm", + "checksum": "sha256:6557d001315e85ac123b1378c5aafb81428e2383debcacf3f91c55476cfc48eb" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpwquality-1.4.0-9.el8.aarch64.rpm", + "checksum": "sha256:d6ab7c8790cd6c9a137d908d840c51c547e950d25f6ab8af3c9ad3899ff6c044" + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libref_array-0.1.5-39.el8.aarch64.rpm", + "checksum": "sha256:95630378635c5e89eb204b2921dbd5db2e87d949e167fcf022174a3e63b532cb" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librepo-1.12.0-1.el8.aarch64.rpm", + "checksum": "sha256:2d74e0ab14393921c6160fda8dd533b58c0348acdf5ee5c306ffc64221700de2" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libreport-filesystem-2.9.5-11.el8.aarch64.rpm", + "checksum": "sha256:e55bf252e792f27f076101e94dfbbac97dabeea0f7893a4cb9b111a0b72d187f" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librhsm-0.0.3-3.el8.aarch64.rpm", + "checksum": "sha256:e9487db2fdce1f494ee1582787a1afc1ea4e0429189db8be0ddbb0af2676c4b6" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libseccomp-2.4.3-1.el8.aarch64.rpm", + "checksum": "sha256:cc7e751a62f9a28b82df0bce0ecfb050364b8688ef69473f1910909e44c5eb98" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsecret-0.18.6-1.el8.aarch64.rpm", + "checksum": "sha256:c1b5c4668331e8b05a08e7de432cbfb75f8072401bb6651a24e43f64eff8dcc4" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-utils-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:c82ca1c0ef4b89f75e8e7edbbae4f3eeb2720a4abd56b0927928cff2d9721186" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsemanage-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:140146ebcbadd9b0f2aa5c2fcde5c93888f2d84ce61a2a4cf148ef435d1ba410" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsepol-2.9-1.el8.aarch64.rpm", + "checksum": "sha256:c8a28b4587888435c51f6d1ce42f48b08fb0256e4029ea569e9a02adcb82c85a" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsigsegv-2.11-5.el8.aarch64.rpm", + "checksum": "sha256:bf267d9571cf568375e261d593236750f400ac536c1c818513106482ebc3fb10" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsmartcols-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:f35c0da3cff05ded33c0cb4f202dbb52a5caabec8b1897d5057df83c284d62f1" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsolv-0.7.11-1.el8.aarch64.rpm", + "checksum": "sha256:2397506a63455e543b201938f605e687de5590d9a06282824e2f6bfdf5e0f149" + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.62.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsoup-2.62.3-1.el8.aarch64.rpm", + "checksum": "sha256:5be5628cff7e0cbf726771bd7af6d8f4bd987a672381a9fb225974bcfc7f9644" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libss-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:268d9232f0853037100432e9363c659cf99927e03f759fd4884643b560710cd6" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-0.9.4-2.el8.aarch64.rpm", + "checksum": "sha256:3ee6a4f61935c2f0698ad2c4834a5864920a1e48d55c7800da7c382249895e39" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_autofs-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:0f2c07acd21a998f0a4b2a569ebfd143b889d6a5105541b2393dab96cd027a10" + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_certmap-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:a213587722f7c8a0291a56f352861ec661604051c952ebf6a428ae969af377d0" + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_idmap-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:2180d7f1748a5049763d5626b8e14b2c7442e5491a63094a79dded66bcc5c7b0" + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_nss_idmap-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:1657e36d9213739cfef8bacc8876153692f5a5b4d87dd5dde86ad182dd63ca1b" + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsss_sudo-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:0ac8999f5ebca6b808973d0db5038a835daa2358af1007e9cb972b0e96eae217" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libstdc++-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:f4e63e7eedc0266a575eb6107f41c5f20ca0505a0e80145c21b9741674d5c0b5" + }, + { + "name": "libstemmer", + "epoch": 0, + "version": "0", + "release": "10.585svn.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libstemmer-0-10.585svn.el8.aarch64.rpm", + "checksum": "sha256:895cfd814c56f2a592319f2391a736cb33848197124c4be40a9962f7af7e6a15" + }, + { + "name": "libsysfs", + "epoch": 0, + "version": "2.1.0", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsysfs-2.1.0-24.el8.aarch64.rpm", + "checksum": "sha256:fd202f857b3c5a15b8f66f86fd515c44a47c87c028d7db766661758dc3673436" + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.1", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtalloc-2.3.1-2.el8.aarch64.rpm", + "checksum": "sha256:d2efb494bd4793fdcaaad35a66d7721df7ec53b6fc8da4fa8c8f24008533f38a" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtasn1-4.13-3.el8.aarch64.rpm", + "checksum": "sha256:ed28e1e31109e27ce1c676914364c9f1dd46b71d00cb4cf13931f0fec6cf6978" + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtdb-1.4.3-1.el8.aarch64.rpm", + "checksum": "sha256:ed8e018fb3a2ae3243b047b7f25cd7bd0b5b73abc6f254de3a7d13a6a568e4a4" + }, + { + "name": "libteam", + "epoch": 0, + "version": "1.29", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libteam-1.29-5.el8.aarch64.rpm", + "checksum": "sha256:5801caf2cc296b52b3b89b24eaf431fba2c130e948076aaf345988a754cca65c" + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.2", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtevent-0.10.2-2.el8.aarch64.rpm", + "checksum": "sha256:1eff42ff409079d679c7777483d476f3261a2881b456b6280e81f7903a0cd499" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtirpc-1.1.4-4.el8.aarch64.rpm", + "checksum": "sha256:481bbd6d73415d437a73eee7977ec370299acdac44b215a026652debba31783d" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libunistring-0.9.9-3.el8.aarch64.rpm", + "checksum": "sha256:da4b9bfad26d559485ade669556512acfe93ba23d204f2556bac82c09401b4e7" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libusbx-1.0.23-3.el8.aarch64.rpm", + "checksum": "sha256:01e486a3be67325e9692e909f5c6534137ee6a6df185ba2c09d4d50fe6c738f6" + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "23.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libuser-0.62-23.el8.aarch64.rpm", + "checksum": "sha256:9a9546fcc510204dc7bcfe61d6ca63f436c01cd9b3f8451c8f07ec4f4fc2ba68" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libutempter-1.1.6-14.el8.aarch64.rpm", + "checksum": "sha256:ad07261ff4f478be9511f7ee749bfbe8b2ba8e28696c2f561caa20e35c535134" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libuuid-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:95de1777f7e8a734445c5d45e0b77da8b6c41a9b504582ed266d852c677a936b" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libverto-0.3.0-5.el8.aarch64.rpm", + "checksum": "sha256:532d46a4c0e68bd45eabc3e2ba6d570880344044e1034f5f347b37c470d0dced" + }, + { + "name": "libverto-libevent", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libverto-libevent-0.3.0-5.el8.aarch64.rpm", + "checksum": "sha256:2310aa11c691bd1f457cb183cec446bd3275da50fedb7998bcdf39e84cb61068" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxcrypt-4.1.1-4.el8.aarch64.rpm", + "checksum": "sha256:876ffb285aaeddb2c18ae32527bd4ee202710bd8e18d5b410af22937646dcdec" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxml2-2.9.7-8.el8.aarch64.rpm", + "checksum": "sha256:fb56b7a416e12da0782ae8ba7396bc03a2f8844c2efcb5df3f8b9e74eb8b8059" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libyaml-0.1.7-5.el8.aarch64.rpm", + "checksum": "sha256:7864fbc866ae5a3e59b4f0f114b77ff52b55e76c5388a917f82a6097f02a4db7" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libzstd-1.4.4-1.el8.aarch64.rpm", + "checksum": "sha256:19d1de27d2f62b4a55735233807f70a1e8ff7551fed97ee8650dbd09c1ef50ea" + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20200619", + "release": "99.git3890db36.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/linux-firmware-20200619-99.git3890db36.el8.noarch.rpm", + "checksum": "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9" + }, + { + "name": "logrotate", + "epoch": 0, + "version": "3.14.0", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/logrotate-3.14.0-4.el8.aarch64.rpm", + "checksum": "sha256:0cbb121302cc38ac16f8f9bd5ea8bd3ce3e2121f6c25c985b66bd29a532f2f7c" + }, + { + "name": "lshw", + "epoch": 0, + "version": "B.02.19.2", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lshw-B.02.19.2-2.el8.aarch64.rpm", + "checksum": "sha256:01d5881b441b015ac394e66fb27dbc5cb11befc8080973208806257ecee2d12d" + }, + { + "name": "lsscsi", + "epoch": 0, + "version": "0.30", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lsscsi-0.30-1.el8.aarch64.rpm", + "checksum": "sha256:6cf02dd99fda867d11fdbb28fe0a277328319aece74b864133a8774cacd2bf54" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lua-libs-5.3.4-11.el8.aarch64.rpm", + "checksum": "sha256:bc0f9bd34ac6a01dd7272b87e1b7a33045ff8c6793cac02fa639dfc9341e8215" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lz4-libs-1.8.3-2.el8.aarch64.rpm", + "checksum": "sha256:64ac5cb6fd3da1610812795ce17e09648d89c87513d6284b852a3455b0831d3a" + }, + { + "name": "lzo", + "epoch": 0, + "version": "2.08", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lzo-2.08-14.el8.aarch64.rpm", + "checksum": "sha256:f237a314daeeb228f767e1521edffa9e9b15b07695ba1008b0f2b6807085b9cb" + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.7.6.1", + "release": "17.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/man-db-2.7.6.1-17.el8.aarch64.rpm", + "checksum": "sha256:60934825531d0364649b0441321d12e8823336d54550007258d7523286d2fa2e" + }, + { + "name": "mokutil", + "epoch": 1, + "version": "0.3.0", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mokutil-0.3.0-9.el8.aarch64.rpm", + "checksum": "sha256:aeda2c664e2d993e56008f68823d05ec6d7665f2bb65b5f990c2112f0a7f91cb" + }, + { + "name": "mozjs60", + "epoch": 0, + "version": "60.9.0", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mozjs60-60.9.0-4.el8.aarch64.rpm", + "checksum": "sha256:10a83db8ac5065869be834bf6ec61185eded982f885def5979948736e5c3ab95" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mpfr-3.1.6-1.el8.aarch64.rpm", + "checksum": "sha256:320ced09e242f09047f4fab0a7f66aba6de2e42583f6a2e164eadcc1ffd0b915" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-6.1-7.20180224.el8.aarch64.rpm", + "checksum": "sha256:8ac1003d722e3d5f383c9b970bf6dfbc905007a624abadb63e520d7a93993747" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-libs-6.1-7.20180224.el8.aarch64.rpm", + "checksum": "sha256:f99f5edde9ad4574b84264c467420c910b31f78683fbf1b63d106a7e6c9d64a3" + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.52.20160912git.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/net-tools-2.0-0.52.20160912git.el8.aarch64.rpm", + "checksum": "sha256:edba68c63891b1171417b8d3af5827cc45a37210d18d701c0e178870e5435031" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/nettle-3.4.1-2.el8.aarch64.rpm", + "checksum": "sha256:e2c4ac0f7abf75cbcc7a6fb35412820c267f1a8ce614f41b60d901918c4616d5" + }, + { + "name": "newt", + "epoch": 0, + "version": "0.52.20", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/newt-0.52.20-11.el8.aarch64.rpm", + "checksum": "sha256:f6df1feba76d87214433eee205e3b99621dcd78b485ed5f99ba2658117786b6c" + }, + { + "name": "nfs-utils", + "epoch": 1, + "version": "2.3.3", + "release": "35.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/nfs-utils-2.3.3-35.el8.aarch64.rpm", + "checksum": "sha256:ba0f68531fd015a2ce13b9b4269a75a508e308746f2acd65aee5d8e7580cde22" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/npth-1.5-4.el8.aarch64.rpm", + "checksum": "sha256:daf36ee86ec6001770ae68bdd82409526faf4b9b1313a6b74fb54cfb98ff571e" + }, + { + "name": "numactl-libs", + "epoch": 0, + "version": "2.0.12", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/numactl-libs-2.0.12-11.el8.aarch64.rpm", + "checksum": "sha256:c59a19d44466633bf19e18463ece1ec20cdeae962f1ea3613bd09a2ffb160318" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openldap-2.4.46-15.el8.aarch64.rpm", + "checksum": "sha256:cfa188d39884fd4ba36d27e8fb25aed9dbd26efccffbfd01a24c2c580fdb96f1" + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-8.0p1-5.el8.aarch64.rpm", + "checksum": "sha256:af98260ff2c263c9cefcb96d16d200941c1873cda9868b57df51b034066940fe" + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-clients-8.0p1-5.el8.aarch64.rpm", + "checksum": "sha256:bd03a8a056bc9d2df361688583521f5f656e83fc893b90d349b6282178f9330b" + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-server-8.0p1-5.el8.aarch64.rpm", + "checksum": "sha256:b35f92dddd2cd73f7f8d8595ebb197a1c67a214ec2acf960ac673a014f2d9b90" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-1.1.1g-9.el8.aarch64.rpm", + "checksum": "sha256:3ef63ecbebf844bcf682c9482dc0ddd158c955b0f066b62eb9575bb9a9642db5" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-libs-1.1.1g-9.el8.aarch64.rpm", + "checksum": "sha256:448d3ff44e7f32f3b33e891180e248dc1bcd4d410f68015a8b0c30dc7c385aca" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-pkcs11-0.4.10-2.el8.aarch64.rpm", + "checksum": "sha256:290c83afcd2b0a2b17aab95cf72a85da5f8b9f9a9862857c919a0f43e3fce70e" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/os-prober-1.74-6.el8.aarch64.rpm", + "checksum": "sha256:43ab42c8a58267936a89da99e37d3b9fc56489e958060f600ba047445ca44ee3" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-0.23.14-5.el8_0.aarch64.rpm", + "checksum": "sha256:651f38873d3356ec4efb27d04658541080d11cf1ece6335a07db1ca089fa7da3" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.aarch64.rpm", + "checksum": "sha256:ec40be9e0b2bb03f7b057a7a9342ffbd86129d58828fb310f445bc506261eb0e" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pam-1.3.1-11.el8.aarch64.rpm", + "checksum": "sha256:04c031a07bde4360484a0180e832036d3ac45a95c4839e54d7a02423df5485ef" + }, + { + "name": "parted", + "epoch": 0, + "version": "3.2", + "release": "38.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/parted-3.2-38.el8.aarch64.rpm", + "checksum": "sha256:2b6d1fbf6f54f06c168862e19e03aa0ce32c299fb3f7e4cd1bf4aa9df4b4d995" + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/passwd-0.80-3.el8.aarch64.rpm", + "checksum": "sha256:8e916224ddbb8a7d8cd305f11087c66df950a318e4ef64290bca1afdc1327950" + }, + { + "name": "pciutils", + "epoch": 0, + "version": "3.6.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pciutils-3.6.4-2.el8.aarch64.rpm", + "checksum": "sha256:0ac96870f86e4a275b6d7be6a6045383ff3071653b7e897538f713ba905edb42" + }, + { + "name": "pciutils-libs", + "epoch": 0, + "version": "3.6.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pciutils-libs-3.6.4-2.el8.aarch64.rpm", + "checksum": "sha256:6b14c3aa52da9a2eae13f2229bac41060ad7421ce5249eca80f4aa53e26344ab" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre-8.42-4.el8.aarch64.rpm", + "checksum": "sha256:fea4eb54fe59451b76fb40b9bd15ff41f0f51bb7371f94b2f5df572ef917d037" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre2-10.32-2.el8.aarch64.rpm", + "checksum": "sha256:ce8c92fa2bef1770f44992db24e1cb8cc850feab03a74cf0ebf741ecb0d160ea" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pigz-2.4-4.el8.aarch64.rpm", + "checksum": "sha256:f847957437e7f24844930c4a3ff64c5f7877f083553f48eeadca3c5f5e5c728e" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-3.6.8-30.el8.aarch64.rpm", + "checksum": "sha256:68593fad4413255772bd08ed7f8b578332f0f53e002c8c7473d90c966a87131b" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/policycoreutils-2.9-9.el8.aarch64.rpm", + "checksum": "sha256:b90ce065d5ea98845733ff06e47d385937f6293ebddf52144c80f5fe1f296307" + }, + { + "name": "policycoreutils-python-utils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/policycoreutils-python-utils-2.9-9.el8.noarch.rpm", + "checksum": "sha256:b4fb3d8b0255a5ba9456b61e4f479f2f8355d171263508bbe869af677015fd97" + }, + { + "name": "polkit", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/polkit-0.115-11.el8.aarch64.rpm", + "checksum": "sha256:3f8039ed081aa3f628e947656af825b4541ded3547675098eabb0f177eca45e7" + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/polkit-libs-0.115-11.el8.aarch64.rpm", + "checksum": "sha256:861346b2e683c09a53c9418a9ed08faf7448e066e3111482c70722cb62a6edce" + }, + { + "name": "polkit-pkla-compat", + "epoch": 0, + "version": "0.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/polkit-pkla-compat-0.1-12.el8.aarch64.rpm", + "checksum": "sha256:4a7d4068f39dbb01d7f707f9912abfddcc065a62b66144eeb7b7e2f13cec68af" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/popt-1.16-14.el8.aarch64.rpm", + "checksum": "sha256:4e4923f05d0032263d570075b9b832b9fc3550cd8f82f9a6b0b9b25061726110" + }, + { + "name": "prefixdevname", + "epoch": 0, + "version": "0.1.0", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/prefixdevname-0.1.0-6.el8.aarch64.rpm", + "checksum": "sha256:6c3ee8b53c0af9bd4958b4e48d4d55fa7c574f444fb42eead1508ad740f97088" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/procps-ng-3.3.15-2.el8.aarch64.rpm", + "checksum": "sha256:d890d028f59e2553730fad3dbea0e1a245c92c24836513fa2281194b1c90b53a" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-asn1crypto", + "epoch": 0, + "version": "0.24.0", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-asn1crypto-0.24.0-3.el8.noarch.rpm", + "checksum": "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34" + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-audit-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm", + "checksum": "sha256:48509ce37ec06c1b15149feec4b2eb5d3a2f0453a41804c9c5d9ef5b8b320d4f" + }, + { + "name": "python3-cffi", + "epoch": 0, + "version": "1.11.5", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-cffi-1.11.5-5.el8.aarch64.rpm", + "checksum": "sha256:c00024ec890b67b443e2c40a0580a1263458dc9d09f4bde578d7c045323946b1" + }, + { + "name": "python3-chardet", + "epoch": 0, + "version": "3.0.4", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-chardet-3.0.4-7.el8.noarch.rpm", + "checksum": "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786" + }, + { + "name": "python3-configobj", + "epoch": 0, + "version": "5.0.6", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-configobj-5.0.6-11.el8.noarch.rpm", + "checksum": "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367" + }, + { + "name": "python3-cryptography", + "epoch": 0, + "version": "2.3", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-cryptography-2.3-3.el8.aarch64.rpm", + "checksum": "sha256:a5c6189b8644cea4d4039375dfe2d828e08a59896e9827ac967782d225a78619" + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.6.1", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm", + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.4", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dbus-1.2.4-15.el8.aarch64.rpm", + "checksum": "sha256:8329bf1aedce9ef3a4d7513ef98d3931ad39b84d5c3e73e99936c7f9b87931c2" + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.2.1", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm", + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dnf-plugins-core-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87" + }, + { + "name": "python3-ethtool", + "epoch": 0, + "version": "0.14", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-ethtool-0.14-3.el8.aarch64.rpm", + "checksum": "sha256:4fe7733b93fad52a48d4b47a6dc55582f3cc41fc2074e42a9b39fc5d407df6d3" + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.28.3", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-gobject-base-3.28.3-2.el8.aarch64.rpm", + "checksum": "sha256:31043a7324411dad6b84f6504a9e9cb7ece9f576acf091be522e484c8b82f469" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-gpg-1.13.1-3.el8.aarch64.rpm", + "checksum": "sha256:90405803c0159cdf0f74a26b6ce064cfd9973e59232b2923ed171a38fc5684a6" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-hawkey-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:4909edde46b5b2b58d228bacafa3bab5bc5847559d591d59ecd59cdf50d36db4" + }, + { + "name": "python3-idna", + "epoch": 0, + "version": "2.5", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-idna-2.5-5.el8.noarch.rpm", + "checksum": "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20" + }, + { + "name": "python3-iniparse", + "epoch": 0, + "version": "0.4", + "release": "31.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm", + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "name": "python3-inotify", + "epoch": 0, + "version": "0.9.6", + "release": "13.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm", + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "name": "python3-jwt", + "epoch": 0, + "version": "1.6.1", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-jwt-1.6.1-2.el8.noarch.rpm", + "checksum": "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libcomps-0.1.11-4.el8.aarch64.rpm", + "checksum": "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libdnf-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:9b6fcdd19caee5fe77b9ed17adb3f11769a7109ebcf52d3cb3358d5a9eecc391" + }, + { + "name": "python3-librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-librepo-1.12.0-1.el8.aarch64.rpm", + "checksum": "sha256:b386b3ec3cb96fe9178fd1d2b245eddff0bdb2742a8f18e25faef1e98c00f42f" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libs-3.6.8-30.el8.aarch64.rpm", + "checksum": "sha256:65b8d755ff01dfefa423d2f0bd6fd54cfc4c580da63510e19cf178abb6e26172" + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libselinux-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:9c416279320ab29a8ef4fc32ca60beaec4c8da6054d10695cd2b37af19cd0ee9" + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libsemanage-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:b9ceb537921c8d98f1e874c0a39cf0c6a606f469be21be151fa119e4b9c7f06a" + }, + { + "name": "python3-libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libxml2-2.9.7-8.el8.aarch64.rpm", + "checksum": "sha256:853a828e0d2fa57b69ee46167f0c54dbeba977043f18b03f8912412204d3b8dc" + }, + { + "name": "python3-linux-procfs", + "epoch": 0, + "version": "0.6.2", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-linux-procfs-0.6.2-2.el8.noarch.rpm", + "checksum": "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f" + }, + { + "name": "python3-magic", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-magic-5.33-16.el8.noarch.rpm", + "checksum": "sha256:8e2c0324789f42ebb6324847249699eb499544a3e6ad67ccd74713b3c1d6ce78" + }, + { + "name": "python3-oauthlib", + "epoch": 0, + "version": "2.1.0", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-oauthlib-2.1.0-1.el8.noarch.rpm", + "checksum": "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6" + }, + { + "name": "python3-perf", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-perf-4.18.0-221.el8.aarch64.rpm", + "checksum": "sha256:3c096d861c04f97c89dcf335d66a169bca3d371d9589e547c50f18b4180a9e6f" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-ply", + "epoch": 0, + "version": "3.9", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-ply-3.9-8.el8.noarch.rpm", + "checksum": "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9" + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-policycoreutils-2.9-9.el8.noarch.rpm", + "checksum": "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42" + }, + { + "name": "python3-pycparser", + "epoch": 0, + "version": "2.14", + "release": "14.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pycparser-2.14-14.el8.noarch.rpm", + "checksum": "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf" + }, + { + "name": "python3-pysocks", + "epoch": 0, + "version": "1.6.8", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pysocks-1.6.8-3.el8.noarch.rpm", + "checksum": "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280" + }, + { + "name": "python3-pyudev", + "epoch": 0, + "version": "0.21.0", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pyudev-0.21.0-7.el8.noarch.rpm", + "checksum": "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde" + }, + { + "name": "python3-pyyaml", + "epoch": 0, + "version": "3.12", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pyyaml-3.12-12.el8.aarch64.rpm", + "checksum": "sha256:0265d8b987f411738f3b53bd1f84386955704122e20ece4eb232a0df89ff62f0" + }, + { + "name": "python3-requests", + "epoch": 0, + "version": "2.20.0", + "release": "2.1.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-requests-2.20.0-2.1.el8_1.noarch.rpm", + "checksum": "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-rpm-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:b5b1f5f7a02f70db056861813ddcf181f2ebba507cd368fbe2c32f262edf7fc6" + }, + { + "name": "python3-schedutils", + "epoch": 0, + "version": "0.6", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-schedutils-0.6-6.el8.aarch64.rpm", + "checksum": "sha256:a05f9b43292810dde4e6acd64eac2a80f047d35533d2d5e647565f75502189fa" + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.3.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setools-4.3.0-1.el8.aarch64.rpm", + "checksum": "sha256:342d7cd5f427c0d9c02336bc4f189225b3b57c5899f5d26b61b351fc37f99489" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.11.0", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm", + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "name": "python3-slip", + "epoch": 0, + "version": "0.6.4", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-slip-0.6.4-11.el8.noarch.rpm", + "checksum": "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb" + }, + { + "name": "python3-slip-dbus", + "epoch": 0, + "version": "0.6.4", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-slip-dbus-0.6.4-11.el8.noarch.rpm", + "checksum": "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d" + }, + { + "name": "python3-subscription-manager-rhsm", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-subscription-manager-rhsm-1.27.9-1.el8.aarch64.rpm", + "checksum": "sha256:d868f3e9b48e1acc5c7674292619f1e80a2a2617aa1ab75d7cb4665495bdc654" + }, + { + "name": "python3-syspurpose", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-syspurpose-1.27.9-1.el8.aarch64.rpm", + "checksum": "sha256:6d46339afc3d65beb89cbb36052e779e95ef2448a163d26db13d67715dad9cf8" + }, + { + "name": "python3-urllib3", + "epoch": 0, + "version": "1.24.2", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-urllib3-1.24.2-4.el8.noarch.rpm", + "checksum": "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53" + }, + { + "name": "quota", + "epoch": 1, + "version": "4.04", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/quota-4.04-10.el8.aarch64.rpm", + "checksum": "sha256:776323bbc7a9be78c9b6fdd4adec9610c78319cbb5b19d88cbfe2fa8f899ecc5" + }, + { + "name": "quota-nls", + "epoch": 1, + "version": "4.04", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/quota-nls-4.04-10.el8.noarch.rpm", + "checksum": "sha256:adab024896eecd08250eb7a7a5e1686df0b945fd1604543877e230163c510f24" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/readline-7.0-10.el8.aarch64.rpm", + "checksum": "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e" + }, + { + "name": "redhat-logos", + "epoch": 0, + "version": "81.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-logos-81.1-1.el8.aarch64.rpm", + "checksum": "sha256:48a26ec0664bfc76a415821d63a658653f64e5b142b4b8a08c11c6cbc9e7db85" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-8.3-0.2.el8.aarch64.rpm", + "checksum": "sha256:a6292dd846bc471b22409fc95a5e09c88bcb6176251dc5cc11f4b14a73ddda11" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-eula-8.3-0.2.el8.aarch64.rpm", + "checksum": "sha256:784d385116891056b618722c933d43c5b395b92fa82e5bc797081317ec6a82ba" + }, + { + "name": "rhsm-icons", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rhsm-icons-1.27.9-1.el8.noarch.rpm", + "checksum": "sha256:fb97246f1e22b2db98fc309470c4d87755ecc59e5b98047c52c4fedbb08d9b6f" + }, + { + "name": "rng-tools", + "epoch": 0, + "version": "6.8", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rng-tools-6.8-3.el8.aarch64.rpm", + "checksum": "sha256:13471e37bb0089a322183fc9e7a53948f0b203b54277630e75606a835268ad5d" + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "22.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rootfiles-8.1-22.el8.noarch.rpm", + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "name": "rpcbind", + "epoch": 0, + "version": "1.2.5", + "release": "7.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpcbind-1.2.5-7.el8.aarch64.rpm", + "checksum": "sha256:e5f98b24c13e975046890306bc9f840d016c9db2204e7632b221a11dcbb3e9a0" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:47b483c0f556c56f0b1f468603c57834864902ae5a849a18c8a0ca5f76d66c86" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-build-libs-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:c633b98b4dbf96674a69573404819c34d66eb7e19820283fc588f6b10b0e3fc8" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-libs-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:d3fb5a473c44cd8ae6b94d6bf3fc552553d8f4ef28eed439658ea38990ab9db5" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:0a885c6dc6abd969b828bf2fd7063ee884e6d058eaf405b02f3dd6efb6c66bac" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:0bb7024125ca67119612e55a92da13c989e0306ddd7de7e655a679c963939ef7" + }, + { + "name": "rsync", + "epoch": 0, + "version": "3.1.3", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rsync-3.1.3-8.el8.aarch64.rpm", + "checksum": "sha256:eea9359070225c205cd9233c98fc3e3eaa41848148b726a4ec8414575ae3730e" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sed-4.5-2.el8.aarch64.rpm", + "checksum": "sha256:125c92f23d87b905c21e9f7669f0ec6e41428ab63c8c13f63db8980f292797d5" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "sg3_utils", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sg3_utils-1.44-5.el8.aarch64.rpm", + "checksum": "sha256:4a308727d8b5a3d4cbbbc7d9b07884ebf6a37b4b6eb9a8edab5b61f449142285" + }, + { + "name": "sg3_utils-libs", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sg3_utils-libs-1.44-5.el8.aarch64.rpm", + "checksum": "sha256:a93b90699f26009debf0ac7b6759daf23afa9f3c851ccd7c98e35d9a89824dcb" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shadow-utils-4.6-10.el8.aarch64.rpm", + "checksum": "sha256:a840b8193ce9b1b72e3783b9a9bb2ec91947ba3b6f7ac973ae8e0e20a7059117" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shared-mime-info-1.9-3.el8.aarch64.rpm", + "checksum": "sha256:19cd894b4154d1a8521c6884cfd2a6eaf1f498b7dec5cc31408f8535b9098f2a" + }, + { + "name": "shim-aa64", + "epoch": 0, + "version": "15", + "release": "12", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shim-aa64-15-12.aarch64.rpm", + "checksum": "sha256:b83b5cb8c799dea710e0fffc841abf88495a1f3d04057dd699cff2aac610d7d9" + }, + { + "name": "slang", + "epoch": 0, + "version": "2.3.2", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/slang-2.3.2-3.el8.aarch64.rpm", + "checksum": "sha256:8d5c968225f0a3b7c492fdffb57cf0e34fee77c06a64a94a3a8b52edab30eed7" + }, + { + "name": "snappy", + "epoch": 0, + "version": "1.1.7", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/snappy-1.1.7-5.el8.aarch64.rpm", + "checksum": "sha256:df1f1d61216be55ab9cadc9832e613ffd2350ca8dc03e27f537f22dc0f32e171" + }, + { + "name": "sos", + "epoch": 0, + "version": "3.9.1", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sos-3.9.1-4.el8.noarch.rpm", + "checksum": "sha256:934205ae1baa04b3921065f73096378f1db65990392340ad32042f86c9b5b247" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sqlite-libs-3.26.0-10.el8.aarch64.rpm", + "checksum": "sha256:207e6396488c1db18fb7b1f2b9952f48c2625f042c5f6a901d41974ce376b0e0" + }, + { + "name": "squashfs-tools", + "epoch": 0, + "version": "4.3", + "release": "19.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/squashfs-tools-4.3-19.el8.aarch64.rpm", + "checksum": "sha256:6421426a896c0bf32738af8131c37001e532f62ac1242f63ebf6248ea34533b0" + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sssd-client-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:2bbb8eebf42b0f55d735c0f84e2521c339febc7036f2e94332ff013d7406b80a" + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sssd-common-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:428af99d7ff753fc26a13130115c4dcbbac030776a299583d00c69e8ec6a13ca" + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sssd-kcm-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:2cfc9f7d8286002d753d12aa9669522222466c5e1e3f10ed81c8d4d23a3e203c" + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sssd-nfs-idmap-2.3.0-2.el8.aarch64.rpm", + "checksum": "sha256:6149e0dc3def62605315cbbe59d63b5ca340a791b4c6d3b4d0bda6efee7572f8" + }, + { + "name": "subscription-manager", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/subscription-manager-1.27.9-1.el8.aarch64.rpm", + "checksum": "sha256:4efe61bac45e15b3b1bfda93bf3cfbf72d49c7f0452737d01f12f49b6e624175" + }, + { + "name": "subscription-manager-cockpit", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/subscription-manager-cockpit-1.27.9-1.el8.noarch.rpm", + "checksum": "sha256:e6194926699147659c3a35d9330b5e9706b203aa806c4023c258559f9a0f8ae7" + }, + { + "name": "subscription-manager-rhsm-certificates", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/subscription-manager-rhsm-certificates-1.27.9-1.el8.aarch64.rpm", + "checksum": "sha256:2df37064ec55f10e06dc0c05647a296b8ca7867251fe44130206052e58d39bda" + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.8.29", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sudo-1.8.29-6.el8.aarch64.rpm", + "checksum": "sha256:432ef41fd5f9ad2b9a797ed105f6e729dcaf19c17df9c1478802af04e898e305" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-239-36.el8.aarch64.rpm", + "checksum": "sha256:d4467ba499fe1ddd82746ad00d7e86bea59c4827fe1ff8c05132bad1f93ddb7f" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-libs-239-36.el8.aarch64.rpm", + "checksum": "sha256:800c9a0d718c641ceee26c8f625b2dcd79a33963e9e7a11930678dc99582a2d0" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-pam-239-36.el8.aarch64.rpm", + "checksum": "sha256:986683a0edb615a5d45a9c1b0ee3d27f8032c2667cad58d24526085e41010992" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-udev-239-36.el8.aarch64.rpm", + "checksum": "sha256:3fe7c10c144c8fffc00d144317a2bf8029bd9d048432bccfc352dfc6f0995680" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tar-1.30-5.el8.aarch64.rpm", + "checksum": "sha256:ba66a87402ccc8515e164f597f5d254ad9513979fe3ca1ffabf63c915c0daa73" + }, + { + "name": "teamd", + "epoch": 0, + "version": "1.29", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/teamd-1.29-5.el8.aarch64.rpm", + "checksum": "sha256:32c9ff3e0278dbd7022ad76629146ece3fffdc58af14e1eaf97e7052d610daa2" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-0.3.14-4.el8.aarch64.rpm", + "checksum": "sha256:d695df94220c2ef990e502123b3bd8ede8fcfb4f738346dd98d999559b01b6b3" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-lib-0.3.14-4.el8.aarch64.rpm", + "checksum": "sha256:fb263177eee60c26b7acaa76cb640c3d7ab6928e73c8af80b2111a247bd61ece" + }, + { + "name": "tuned", + "epoch": 0, + "version": "2.14.0", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tuned-2.14.0-2.el8.noarch.rpm", + "checksum": "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "usermode", + "epoch": 0, + "version": "1.113", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/usermode-1.113-1.el8.aarch64.rpm", + "checksum": "sha256:1bc21785bc6f66d6fcc29cd62f2cdd3584f3f8ea6321db4c27251b192f468433" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/util-linux-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:83e470505f558f8cf8414a7fc8fb0d1bc4b16ed15d05ccf7e46332b04d1a0d85" + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.0.1763", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/vim-minimal-8.0.1763-15.el8.aarch64.rpm", + "checksum": "sha256:1956304761f23c6661b831d33a3539b82384636db4113cccd19321b36a3a8415" + }, + { + "name": "virt-what", + "epoch": 0, + "version": "1.18", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/virt-what-1.18-6.el8.aarch64.rpm", + "checksum": "sha256:b6946db91c0a0b5e39427db028815391dd1e8c7a04faf98bc1031b5490034790" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/which-2.21-12.el8.aarch64.rpm", + "checksum": "sha256:0f32d23a6b2b15603d710b0317238ef8dde3de61eda96713e21d86c9fc7a98ed" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xfsprogs-5.0.0-4.el8.aarch64.rpm", + "checksum": "sha256:760d9056891a60c200984f0655aee1876b3bf890f7486306c05db8e295ae7843" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-5.2.4-3.el8.aarch64.rpm", + "checksum": "sha256:e426534c59b3a35068877d324dd34d643ad7c84d2c406b2e6502ac6c2a367d39" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-libs-5.2.4-3.el8.aarch64.rpm", + "checksum": "sha256:094eff70081085f87a7ac0dedafa851ad8ac8e03f9f328636df4a0f8301d0e87" + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/yum-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4" + }, + { + "name": "yum-utils", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/yum-utils-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:bdb8cc675da18f659ba06252f1f2604d171373239804c3cbc6004dadded54cd3" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/zlib-1.2.11-15.el8.aarch64.rpm", + "checksum": "sha256:cf9a0bbaa7bd075d2af532586ee93ab92b96d9859f53a57f85cd7e0309f8fff6" + }, + { + "name": "PackageKit", + "epoch": 0, + "version": "1.1.12", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/PackageKit-1.1.12-6.el8.aarch64.rpm", + "checksum": "sha256:bc3d32d534059d7a7fb535686b2a137564a93910413a8e8a585dbd00a877e9fc" + }, + { + "name": "PackageKit-glib", + "epoch": 0, + "version": "1.1.12", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/PackageKit-glib-1.1.12-6.el8.aarch64.rpm", + "checksum": "sha256:ffc4464926a4e9a9129af0773bd9caab04fd2cd3e3ded760a891d0dc338265a4" + }, + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.0.25", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/abattis-cantarell-fonts-0.0.25-4.el8.noarch.rpm", + "checksum": "sha256:1594afba86593ec614299ef6af255755a98ea55a34a72a22fdc9d80a040be39d" + }, + { + "name": "cairo", + "epoch": 0, + "version": "1.15.12", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/cairo-1.15.12-3.el8.aarch64.rpm", + "checksum": "sha256:0b4134a430320b461f8636f536b4c20c23e70aa129801cb0bafeb948b9de7e96" + }, + { + "name": "cairo-gobject", + "epoch": 0, + "version": "1.15.12", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/cairo-gobject-1.15.12-3.el8.aarch64.rpm", + "checksum": "sha256:edae480b0177d04b0b3ff54105c77c0cf4ec565c5234b10e2967f912290c4758" + }, + { + "name": "cloud-init", + "epoch": 0, + "version": "19.4", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/cloud-init-19.4-7.el8.noarch.rpm", + "checksum": "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2" + }, + { + "name": "cloud-utils-growpart", + "epoch": 0, + "version": "0.31", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/cloud-utils-growpart-0.31-1.el8.noarch.rpm", + "checksum": "sha256:664a883f3c7042eb91e0b66fc99c309a729011b4912e4af9397f4e25e1adae90" + }, + { + "name": "dnf-plugin-spacewalk", + "epoch": 0, + "version": "2.8.5", + "release": "11.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b" + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm", + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm", + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "name": "insights-client", + "epoch": 0, + "version": "3.0.14", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/insights-client-3.0.14-2.el8.noarch.rpm", + "checksum": "sha256:abeb97ed3fdd82145fd51f8eeaecfca272e4d1418b17a68241e054425a327aa3" + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.8", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libX11-1.6.8-3.el8.aarch64.rpm", + "checksum": "sha256:49258c6900ab6f3eaa5f7c7515fcf0a7d604af9d99e7d5f72be7bc75e00a844a" + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.8", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libX11-common-1.6.8-3.el8.noarch.rpm", + "checksum": "sha256:593d4df5b8de12ed0ec5a0935cb0bd966e27a631aa0806250ba9f67092ad737f" + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libXau-1.0.9-3.el8.aarch64.rpm", + "checksum": "sha256:5176881bae429bec5136195c73b402081184ae2a35519673031a075e855f75f4" + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libXext-1.3.4-1.el8.aarch64.rpm", + "checksum": "sha256:740e25055db923edcb8a0bddebc688de61a17c6b738162163e9b569e0cda1e18" + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "7.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libXrender-0.9.10-7.el8.aarch64.rpm", + "checksum": "sha256:92bc3c29b5232c55f60c9d0a5426bb04675209b8ee87df5725a83a60944219cb" + }, + { + "name": "libestr", + "epoch": 0, + "version": "0.1.10", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libestr-0.1.10-1.el8.aarch64.rpm", + "checksum": "sha256:0c9b5e526b6fe5384447db444a2657cb4b1766b646255f89c49c749d388bdc58" + }, + { + "name": "libfastjson", + "epoch": 0, + "version": "0.99.8", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libfastjson-0.99.8-2.el8.aarch64.rpm", + "checksum": "sha256:2769c1df985e8fea8760d7ca8908eac166a64262c9643c7b0f6a82db570a68f5" + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.2.0", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libmaxminddb-1.2.0-10.el8.aarch64.rpm", + "checksum": "sha256:e09e950b0a0842577364565380ba40e8c4f027919dc880378b606c2dafc5693b" + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libxcb-1.13.1-1.el8.aarch64.rpm", + "checksum": "sha256:3e570377bfb3946bbbbe32abfc92f800af7922d0a448e3f044ef75b18e97b924" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libxkbcommon-0.9.1-1.el8.aarch64.rpm", + "checksum": "sha256:a07f96031fbe9507a8d6bb0e14cf0783bc615552e4cfb75131672072f5729de8" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/memstrack-0.1.8-1.el8.aarch64.rpm", + "checksum": "sha256:aa1a6a85493590efb9c0235c15d6a05e8b119f385dc13b3e3abd2315f8c4a6e0" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/pinentry-1.1.0-2.el8.aarch64.rpm", + "checksum": "sha256:22c0e44318e36e04ad1eb4632dcf25db991f481f9a543387d372e1f2ad92561f" + }, + { + "name": "pixman", + "epoch": 0, + "version": "0.38.4", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/pixman-0.38.4-1.el8.aarch64.rpm", + "checksum": "sha256:8947ffafcbf333c5049c380d26bdd53929e7566dde9f812d12c544f75120bec4" + }, + { + "name": "python3-babel", + "epoch": 0, + "version": "2.5.1", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-babel-2.5.1-5.el8.noarch.rpm", + "checksum": "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28" + }, + { + "name": "python3-cairo", + "epoch": 0, + "version": "1.16.3", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-cairo-1.16.3-6.el8.aarch64.rpm", + "checksum": "sha256:86414db9ca27af26e31feb5b05b09c997c602721ff732afe13c5e79d1ccfe0af" + }, + { + "name": "python3-dnf-plugin-spacewalk", + "epoch": 0, + "version": "2.8.5", + "release": "11.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43" + }, + { + "name": "python3-gobject", + "epoch": 0, + "version": "3.28.3", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-gobject-3.28.3-2.el8.aarch64.rpm", + "checksum": "sha256:c0bfa38aa054fdc993c4fe0764f05f72be1bd7d4d121dddff9cc6f1703c4934e" + }, + { + "name": "python3-hwdata", + "epoch": 0, + "version": "2.3.6", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-hwdata-2.3.6-3.el8.noarch.rpm", + "checksum": "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362" + }, + { + "name": "python3-jinja2", + "epoch": 0, + "version": "2.10.1", + "release": "2.el8_0", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-jinja2-2.10.1-2.el8_0.noarch.rpm", + "checksum": "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64" + }, + { + "name": "python3-jsonpatch", + "epoch": 0, + "version": "1.21", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-jsonpatch-1.21-2.el8.noarch.rpm", + "checksum": "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835" + }, + { + "name": "python3-jsonpointer", + "epoch": 0, + "version": "1.10", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-jsonpointer-1.10-11.el8.noarch.rpm", + "checksum": "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf" + }, + { + "name": "python3-jsonschema", + "epoch": 0, + "version": "2.6.0", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-jsonschema-2.6.0-4.el8.noarch.rpm", + "checksum": "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b" + }, + { + "name": "python3-markupsafe", + "epoch": 0, + "version": "0.23", + "release": "19.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-markupsafe-0.23-19.el8.aarch64.rpm", + "checksum": "sha256:0aeef4b59dae77f6bd7f557e62efb6621491c04c27287860f581d35cd9be7a19" + }, + { + "name": "python3-netifaces", + "epoch": 0, + "version": "0.10.6", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-netifaces-0.10.6-4.el8.aarch64.rpm", + "checksum": "sha256:3d24b1cc90de184aa66cd58a1071888b6de8d34eb8155d6ab6a5ac777281adf5" + }, + { + "name": "python3-newt", + "epoch": 0, + "version": "0.52.20", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-newt-0.52.20-11.el8.aarch64.rpm", + "checksum": "sha256:047e04a10f26da24deb076a88c676fcaecd2f68aaa1a5adc7bc46791145c74c4" + }, + { + "name": "python3-prettytable", + "epoch": 0, + "version": "0.7.2", + "release": "14.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-prettytable-0.7.2-14.el8.noarch.rpm", + "checksum": "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55" + }, + { + "name": "python3-pyOpenSSL", + "epoch": 0, + "version": "18.0.0", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pyOpenSSL-18.0.0-1.el8.noarch.rpm", + "checksum": "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21" + }, + { + "name": "python3-pydbus", + "epoch": 0, + "version": "0.6.0", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pydbus-0.6.0-5.el8.noarch.rpm", + "checksum": "sha256:fd75c594f871a3353d326833e630ea1d28e5f446f796b836dc628f8c9c039f88" + }, + { + "name": "python3-pyserial", + "epoch": 0, + "version": "3.1.1", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pyserial-3.1.1-8.el8.noarch.rpm", + "checksum": "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414" + }, + { + "name": "python3-pytz", + "epoch": 0, + "version": "2017.2", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pytz-2017.2-9.el8.noarch.rpm", + "checksum": "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca" + }, + { + "name": "python3-rhn-check", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm", + "checksum": "sha256:4e644e08ef5bd3b33357d6c1ea64e37097c3224ae324456fef022b9e5fdd2947" + }, + { + "name": "python3-rhn-client-tools", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm", + "checksum": "sha256:11aae64c2458371a884514b954f58896c5ba7fb751ade0351c476e29991da25b" + }, + { + "name": "python3-rhn-setup", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm", + "checksum": "sha256:bee28477fcd36d5a877d1fe3d61aa876f62128681411718e0c3fc82b95cf8e59" + }, + { + "name": "python3-rhnlib", + "epoch": 0, + "version": "2.8.6", + "release": "8.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a" + }, + { + "name": "python3-systemd", + "epoch": 0, + "version": "234", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-systemd-234-8.el8.aarch64.rpm", + "checksum": "sha256:295a8620b3730a0d9f0c6a21175fdc7270054b7abf28197b4866f72a0a85072d" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-unbound-1.7.3-14.el8.aarch64.rpm", + "checksum": "sha256:6ae316dfb9723d13a8d36d98d109d4a55017b568ee2070279f1bdccdc699862a" + }, + { + "name": "qemu-guest-agent", + "epoch": 15, + "version": "4.2.0", + "release": "29.module+el8.3.0+7212+401047e6", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/qemu-guest-agent-4.2.0-29.module+el8.3.0+7212+401047e6.aarch64.rpm", + "checksum": "sha256:393b5c2678d104c9f108ea2a353746d68f2111785acf13ffdff6798482d9d8d6" + }, + { + "name": "rhn-check", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm", + "checksum": "sha256:c17544abced52ad9df8229c71a0f8c437719c4d1fccd77f2db707be18226aecb" + }, + { + "name": "rhn-client-tools", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm", + "checksum": "sha256:28d4282a27a17db514ff30d8c865cb8a306d1c412f9e13c2e617a23912f07dde" + }, + { + "name": "rhn-setup", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64.rpm", + "checksum": "sha256:1e8b20ca3658abc9b7e2fe27d18eeae2f660779f33b39ca1fa2588363af250e5" + }, + { + "name": "rhnlib", + "epoch": 0, + "version": "2.8.6", + "release": "8.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42" + }, + { + "name": "rhnsd", + "epoch": 0, + "version": "5.0.35", + "release": "3.module+el8.1.0+3455+3ddf2832", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.aarch64.rpm", + "checksum": "sha256:27ed4654a9c4dfb8417c54cc1a6060c51bd3f1dd16c4ba4bd24dfeba57c5ede1" + }, + { + "name": "rsyslog", + "epoch": 0, + "version": "8.1911.0", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rsyslog-8.1911.0-6.el8.aarch64.rpm", + "checksum": "sha256:0a016d034c490f07425c402c260de595603a136bf7146dbc8ed90a661a60fbc1" + }, + { + "name": "setroubleshoot-plugins", + "epoch": 0, + "version": "3.3.12", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/setroubleshoot-plugins-3.3.12-1.el8.noarch.rpm", + "checksum": "sha256:3459ac9ecad925e511502cff687ceb77f52f391303793f7670794a5c0b040f3d" + }, + { + "name": "setroubleshoot-server", + "epoch": 0, + "version": "3.3.23", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/setroubleshoot-server-3.3.23-1.el8.aarch64.rpm", + "checksum": "sha256:1fde97c3e596a88ef05e260970343d178a7c2188c166e7ba745640a051ae9f66" + }, + { + "name": "sscg", + "epoch": 0, + "version": "2.3.3", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/sscg-2.3.3-14.el8.aarch64.rpm", + "checksum": "sha256:de28a06359abc39016fc8fb730773e00a3fa2ec8360a037a4dce79cf3482bacb" + }, + { + "name": "tcpdump", + "epoch": 14, + "version": "4.9.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/tcpdump-4.9.3-1.el8.aarch64.rpm", + "checksum": "sha256:4804145242848aee094897a4d5d959118efa59e1667593c4e79f300c3ca22ead" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/unbound-libs-1.7.3-14.el8.aarch64.rpm", + "checksum": "sha256:727c08fe072ef85837e8db30574aec712cdf67a062eead3e5481ba08425b2395" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "checksums": { + "0": "sha256:16f28f379d3f297d9b559a5fafe972d5073fc9efbb5fa720068c56f378b3fafc", + "1": "sha256:556df33d4f50aa82d8e620b5bd509631bddb7376019640039a183fc3efac148b" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=0bd700f8-090f-4556-b797-b340297ea1bd console=ttyS0 console=ttyS0,115200n8 no_timer_check crashkernel=auto net.ifnames=0" + }, + "bootloader": "unknown", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "id": "rhel-20200625225316-4.18.0-221.el8.aarch64", + "initrd": "/boot/initramfs-4.18.0-221.el8.aarch64.img $tuned_initrd", + "linux": "/boot/vmlinuz-4.18.0-221.el8.aarch64", + "options": "$kernelopts $tuned_params", + "title": "Red Hat Enterprise Linux (4.18.0-221.el8.aarch64) 8.3 (Ootpa)", + "version": "4.18.0-221.el8.aarch64" + } + ], + "fstab": [ + [ + "UUID=0bd700f8-090f-4556-b797-b340297ea1bd", + "/", + "xfs", + "defaults", + "0", + "0" + ], + [ + "UUID=46BB-8120", + "/boot/efi", + "vfat", + "umask=0077,shortname=winnt", + "0", + "2" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:989:", + "cockpit-ws:x:991:", + "cockpit-wsinstance:x:990:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:999:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "polkitd:x:996:", + "redhat:x:1000:", + "render:x:998:", + "rngd:x:988:", + "root:x:0:", + "rpc:x:32:", + "rpcuser:x:29:", + "setroubleshoot:x:992:", + "ssh_keys:x:995:", + "sshd:x:74:", + "sssd:x:993:", + "sys:x:3:", + "systemd-coredump:x:997:", + "systemd-journal:x:190:", + "systemd-resolve:x:193:", + "tape:x:33:", + "tcpdump:x:72:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:994:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "qcow2", + "os-release": { + "ANSI_COLOR": "0;31", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:redhat:enterprise_linux:8.3:beta", + "HOME_URL": "https://www.redhat.com/", + "ID": "rhel", + "ID_LIKE": "fedora", + "NAME": "Red Hat Enterprise Linux", + "PLATFORM_ID": "platform:el8", + "PRETTY_NAME": "Red Hat Enterprise Linux 8.3 Beta (Ootpa)", + "REDHAT_BUGZILLA_PRODUCT": "Red Hat Enterprise Linux 8", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "8.3", + "REDHAT_SUPPORT_PRODUCT": "Red Hat Enterprise Linux", + "REDHAT_SUPPORT_PRODUCT_VERSION": "8.3 Beta", + "VERSION": "8.3 (Ootpa)", + "VERSION_ID": "8.3" + }, + "packages": [ + "NetworkManager-1.26.0-0.2.el8.aarch64", + "NetworkManager-libnm-1.26.0-0.2.el8.aarch64", + "NetworkManager-team-1.26.0-0.2.el8.aarch64", + "NetworkManager-tui-1.26.0-0.2.el8.aarch64", + "PackageKit-1.1.12-6.el8.aarch64", + "PackageKit-glib-1.1.12-6.el8.aarch64", + "abattis-cantarell-fonts-0.0.25-4.el8.noarch", + "acl-2.2.53-1.el8.aarch64", + "audit-3.0-0.17.20191104git1c2f876.el8.aarch64", + "audit-libs-3.0-0.17.20191104git1c2f876.el8.aarch64", + "authselect-1.2.1-2.el8.aarch64", + "authselect-libs-1.2.1-2.el8.aarch64", + "basesystem-11-5.el8.noarch", + "bash-4.4.19-12.el8.aarch64", + "bind-export-libs-9.11.20-3.el8.aarch64", + "brotli-1.0.6-2.el8.aarch64", + "bzip2-1.0.6-26.el8.aarch64", + "bzip2-libs-1.0.6-26.el8.aarch64", + "c-ares-1.13.0-5.el8.aarch64", + "ca-certificates-2019.2.32-80.0.el8_1.noarch", + "cairo-1.15.12-3.el8.aarch64", + "cairo-gobject-1.15.12-3.el8.aarch64", + "checkpolicy-2.9-1.el8.aarch64", + "chkconfig-1.13-2.el8.aarch64", + "chrony-3.5-1.el8.aarch64", + "cloud-init-19.4-7.el8.noarch", + "cloud-utils-growpart-0.31-1.el8.noarch", + "cockpit-bridge-222.1-1.el8.aarch64", + "cockpit-system-222.1-1.el8.noarch", + "cockpit-ws-222.1-1.el8.aarch64", + "coreutils-8.30-8.el8.aarch64", + "coreutils-common-8.30-8.el8.aarch64", + "cpio-2.12-8.el8.aarch64", + "cracklib-2.9.6-15.el8.aarch64", + "cracklib-dicts-2.9.6-15.el8.aarch64", + "cronie-1.5.2-4.el8.aarch64", + "cronie-anacron-1.5.2-4.el8.aarch64", + "crontabs-1.11-16.20150630git.el8.noarch", + "crypto-policies-20200610-1.git0ac8b1f.el8.noarch", + "crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch", + "cryptsetup-libs-2.3.3-1.el8.aarch64", + "curl-7.61.1-12.el8.aarch64", + "cyrus-sasl-lib-2.1.27-5.el8.aarch64", + "dbus-1.12.8-11.el8.aarch64", + "dbus-common-1.12.8-11.el8.noarch", + "dbus-daemon-1.12.8-11.el8.aarch64", + "dbus-glib-0.110-2.el8.aarch64", + "dbus-libs-1.12.8-11.el8.aarch64", + "dbus-tools-1.12.8-11.el8.aarch64", + "dbxtool-8-5.el8.aarch64", + "dejavu-fonts-common-2.35-6.el8.noarch", + "dejavu-sans-mono-fonts-2.35-6.el8.noarch", + "device-mapper-1.02.171-3.el8.aarch64", + "device-mapper-libs-1.02.171-3.el8.aarch64", + "dhcp-client-4.3.6-41.el8.aarch64", + "dhcp-common-4.3.6-41.el8.noarch", + "dhcp-libs-4.3.6-41.el8.aarch64", + "diffutils-3.6-6.el8.aarch64", + "dmidecode-3.2-6.el8.aarch64", + "dnf-4.2.23-2.el8.noarch", + "dnf-data-4.2.23-2.el8.noarch", + "dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch", + "dnf-plugin-subscription-manager-1.27.9-1.el8.aarch64", + "dnf-plugins-core-4.0.17-2.el8.noarch", + "dracut-049-89.git20200625.el8.aarch64", + "dracut-config-generic-049-89.git20200625.el8.aarch64", + "dracut-network-049-89.git20200625.el8.aarch64", + "dracut-squash-049-89.git20200625.el8.aarch64", + "e2fsprogs-1.45.6-1.el8.aarch64", + "e2fsprogs-libs-1.45.6-1.el8.aarch64", + "efi-filesystem-3-2.el8.noarch", + "efibootmgr-16-1.el8.aarch64", + "efivar-36-1.el8.aarch64", + "efivar-libs-36-1.el8.aarch64", + "elfutils-debuginfod-client-0.180-1.el8.aarch64", + "elfutils-default-yama-scope-0.180-1.el8.noarch", + "elfutils-libelf-0.180-1.el8.aarch64", + "elfutils-libs-0.180-1.el8.aarch64", + "ethtool-5.0-2.el8.aarch64", + "expat-2.2.5-4.el8.aarch64", + "file-5.33-16.el8.aarch64", + "file-libs-5.33-16.el8.aarch64", + "filesystem-3.8-3.el8.aarch64", + "findutils-4.6.0-20.el8.aarch64", + "fontconfig-2.13.1-3.el8.aarch64", + "fontpackages-filesystem-1.44-22.el8.noarch", + "freetype-2.9.1-4.el8.aarch64", + "fuse-libs-2.9.7-12.el8.aarch64", + "gawk-4.2.1-1.el8.aarch64", + "gdbm-1.18-1.el8.aarch64", + "gdbm-libs-1.18-1.el8.aarch64", + "gdk-pixbuf2-2.36.12-5.el8.aarch64", + "geolite2-city-20180605-1.el8.noarch", + "geolite2-country-20180605-1.el8.noarch", + "gettext-0.19.8.1-17.el8.aarch64", + "gettext-libs-0.19.8.1-17.el8.aarch64", + "glib-networking-2.56.1-1.1.el8.aarch64", + "glib2-2.56.4-8.el8.aarch64", + "glibc-2.28-127.el8.aarch64", + "glibc-all-langpacks-2.28-127.el8.aarch64", + "glibc-common-2.28-127.el8.aarch64", + "gmp-6.1.2-10.el8.aarch64", + "gnupg2-2.2.20-2.el8.aarch64", + "gnupg2-smime-2.2.20-2.el8.aarch64", + "gnutls-3.6.14-3.el8.aarch64", + "gobject-introspection-1.56.1-1.el8.aarch64", + "gpg-pubkey-d4082792-5b32db75", + "gpg-pubkey-fd431d51-4ae0493b", + "gpgme-1.13.1-3.el8.aarch64", + "grep-3.1-6.el8.aarch64", + "groff-base-1.22.3-18.el8.aarch64", + "grub2-common-2.02-84.el8.noarch", + "grub2-efi-aa64-2.02-84.el8.aarch64", + "grub2-tools-2.02-84.el8.aarch64", + "grub2-tools-extra-2.02-84.el8.aarch64", + "grub2-tools-minimal-2.02-84.el8.aarch64", + "grubby-8.40-41.el8.aarch64", + "gsettings-desktop-schemas-3.32.0-5.el8.aarch64", + "gssproxy-0.8.0-16.el8.aarch64", + "gzip-1.9-9.el8.aarch64", + "hardlink-1.3-6.el8.aarch64", + "hdparm-9.54-2.el8.aarch64", + "hostname-3.20-6.el8.aarch64", + "hwdata-0.314-8.5.el8.noarch", + "ima-evm-utils-1.1-5.el8.aarch64", + "info-6.5-6.el8.aarch64", + "initscripts-10.00.8-1.el8.aarch64", + "insights-client-3.0.14-2.el8.noarch", + "ipcalc-0.2.4-4.el8.aarch64", + "iproute-5.3.0-5.el8.aarch64", + "iptables-libs-1.8.4-14.el8.aarch64", + "iputils-20180629-2.el8.aarch64", + "irqbalance-1.4.0-4.el8.aarch64", + "jansson-2.11-3.el8.aarch64", + "json-c-0.13.1-0.2.el8.aarch64", + "json-glib-1.4.4-1.el8.aarch64", + "kbd-2.0.4-10.el8.aarch64", + "kbd-legacy-2.0.4-10.el8.noarch", + "kbd-misc-2.0.4-10.el8.noarch", + "kernel-4.18.0-221.el8.aarch64", + "kernel-core-4.18.0-221.el8.aarch64", + "kernel-modules-4.18.0-221.el8.aarch64", + "kernel-tools-4.18.0-221.el8.aarch64", + "kernel-tools-libs-4.18.0-221.el8.aarch64", + "kexec-tools-2.0.20-29.el8.aarch64", + "keyutils-1.5.10-6.el8.aarch64", + "keyutils-libs-1.5.10-6.el8.aarch64", + "kmod-25-16.el8.aarch64", + "kmod-libs-25-16.el8.aarch64", + "kpartx-0.8.4-2.el8.aarch64", + "krb5-libs-1.18.2-3.el8.aarch64", + "less-530-1.el8.aarch64", + "libX11-1.6.8-3.el8.aarch64", + "libX11-common-1.6.8-3.el8.noarch", + "libXau-1.0.9-3.el8.aarch64", + "libXext-1.3.4-1.el8.aarch64", + "libXrender-0.9.10-7.el8.aarch64", + "libacl-2.2.53-1.el8.aarch64", + "libappstream-glib-0.7.14-3.el8.aarch64", + "libarchive-3.3.2-9.el8.aarch64", + "libassuan-2.5.1-3.el8.aarch64", + "libattr-2.4.48-3.el8.aarch64", + "libbasicobjects-0.1.1-39.el8.aarch64", + "libblkid-2.32.1-24.el8.aarch64", + "libcap-2.26-4.el8.aarch64", + "libcap-ng-0.7.9-5.el8.aarch64", + "libcollection-0.7.0-39.el8.aarch64", + "libcom_err-1.45.6-1.el8.aarch64", + "libcomps-0.1.11-4.el8.aarch64", + "libcroco-0.6.12-4.el8.aarch64", + "libcurl-7.61.1-12.el8.aarch64", + "libdaemon-0.14-15.el8.aarch64", + "libdb-5.3.28-39.el8.aarch64", + "libdb-utils-5.3.28-39.el8.aarch64", + "libdhash-0.5.0-39.el8.aarch64", + "libdnf-0.48.0-2.el8.aarch64", + "libedit-3.1-23.20170329cvs.el8.aarch64", + "libestr-0.1.10-1.el8.aarch64", + "libevent-2.1.8-5.el8.aarch64", + "libfastjson-0.99.8-2.el8.aarch64", + "libfdisk-2.32.1-24.el8.aarch64", + "libffi-3.1-22.el8.aarch64", + "libgcc-8.3.1-5.1.el8.aarch64", + "libgcrypt-1.8.5-4.el8.aarch64", + "libgomp-8.3.1-5.1.el8.aarch64", + "libgpg-error-1.31-1.el8.aarch64", + "libgudev-232-4.el8.aarch64", + "libidn2-2.2.0-1.el8.aarch64", + "libini_config-1.3.1-39.el8.aarch64", + "libkcapi-1.2.0-2.el8.aarch64", + "libkcapi-hmaccalc-1.2.0-2.el8.aarch64", + "libksba-1.3.5-7.el8.aarch64", + "libldb-2.1.3-2.el8.aarch64", + "libmaxminddb-1.2.0-10.el8.aarch64", + "libmetalink-0.1.3-7.el8.aarch64", + "libmnl-1.0.4-6.el8.aarch64", + "libmodman-2.0.1-17.el8.aarch64", + "libmodulemd-2.9.4-2.el8.aarch64", + "libmount-2.32.1-24.el8.aarch64", + "libndp-1.7-3.el8.aarch64", + "libnfsidmap-2.3.3-35.el8.aarch64", + "libnghttp2-1.33.0-3.el8_2.1.aarch64", + "libnl3-3.5.0-1.el8.aarch64", + "libnl3-cli-3.5.0-1.el8.aarch64", + "libnsl2-1.2.0-2.20180605git4a062cf.el8.aarch64", + "libpath_utils-0.2.1-39.el8.aarch64", + "libpcap-1.9.1-4.el8.aarch64", + "libpipeline-1.5.0-2.el8.aarch64", + "libpng-1.6.34-5.el8.aarch64", + "libproxy-0.4.15-5.2.el8.aarch64", + "libpsl-0.20.2-6.el8.aarch64", + "libpwquality-1.4.0-9.el8.aarch64", + "libref_array-0.1.5-39.el8.aarch64", + "librepo-1.12.0-1.el8.aarch64", + "libreport-filesystem-2.9.5-11.el8.aarch64", + "librhsm-0.0.3-3.el8.aarch64", + "libseccomp-2.4.3-1.el8.aarch64", + "libsecret-0.18.6-1.el8.aarch64", + "libselinux-2.9-3.el8.aarch64", + "libselinux-utils-2.9-3.el8.aarch64", + "libsemanage-2.9-3.el8.aarch64", + "libsepol-2.9-1.el8.aarch64", + "libsigsegv-2.11-5.el8.aarch64", + "libsmartcols-2.32.1-24.el8.aarch64", + "libsolv-0.7.11-1.el8.aarch64", + "libsoup-2.62.3-1.el8.aarch64", + "libss-1.45.6-1.el8.aarch64", + "libssh-0.9.4-2.el8.aarch64", + "libssh-config-0.9.4-2.el8.noarch", + "libsss_autofs-2.3.0-2.el8.aarch64", + "libsss_certmap-2.3.0-2.el8.aarch64", + "libsss_idmap-2.3.0-2.el8.aarch64", + "libsss_nss_idmap-2.3.0-2.el8.aarch64", + "libsss_sudo-2.3.0-2.el8.aarch64", + "libstdc++-8.3.1-5.1.el8.aarch64", + "libstemmer-0-10.585svn.el8.aarch64", + "libsysfs-2.1.0-24.el8.aarch64", + "libtalloc-2.3.1-2.el8.aarch64", + "libtasn1-4.13-3.el8.aarch64", + "libtdb-1.4.3-1.el8.aarch64", + "libteam-1.29-5.el8.aarch64", + "libtevent-0.10.2-2.el8.aarch64", + "libtirpc-1.1.4-4.el8.aarch64", + "libunistring-0.9.9-3.el8.aarch64", + "libusbx-1.0.23-3.el8.aarch64", + "libuser-0.62-23.el8.aarch64", + "libutempter-1.1.6-14.el8.aarch64", + "libuuid-2.32.1-24.el8.aarch64", + "libverto-0.3.0-5.el8.aarch64", + "libverto-libevent-0.3.0-5.el8.aarch64", + "libxcb-1.13.1-1.el8.aarch64", + "libxcrypt-4.1.1-4.el8.aarch64", + "libxkbcommon-0.9.1-1.el8.aarch64", + "libxml2-2.9.7-8.el8.aarch64", + "libyaml-0.1.7-5.el8.aarch64", + "libzstd-1.4.4-1.el8.aarch64", + "linux-firmware-20200619-99.git3890db36.el8.noarch", + "logrotate-3.14.0-4.el8.aarch64", + "lshw-B.02.19.2-2.el8.aarch64", + "lsscsi-0.30-1.el8.aarch64", + "lua-libs-5.3.4-11.el8.aarch64", + "lz4-libs-1.8.3-2.el8.aarch64", + "lzo-2.08-14.el8.aarch64", + "man-db-2.7.6.1-17.el8.aarch64", + "memstrack-0.1.8-1.el8.aarch64", + "mokutil-0.3.0-9.el8.aarch64", + "mozjs60-60.9.0-4.el8.aarch64", + "mpfr-3.1.6-1.el8.aarch64", + "ncurses-6.1-7.20180224.el8.aarch64", + "ncurses-base-6.1-7.20180224.el8.noarch", + "ncurses-libs-6.1-7.20180224.el8.aarch64", + "net-tools-2.0-0.52.20160912git.el8.aarch64", + "nettle-3.4.1-2.el8.aarch64", + "newt-0.52.20-11.el8.aarch64", + "nfs-utils-2.3.3-35.el8.aarch64", + "npth-1.5-4.el8.aarch64", + "numactl-libs-2.0.12-11.el8.aarch64", + "openldap-2.4.46-15.el8.aarch64", + "openssh-8.0p1-5.el8.aarch64", + "openssh-clients-8.0p1-5.el8.aarch64", + "openssh-server-8.0p1-5.el8.aarch64", + "openssl-1.1.1g-9.el8.aarch64", + "openssl-libs-1.1.1g-9.el8.aarch64", + "openssl-pkcs11-0.4.10-2.el8.aarch64", + "os-prober-1.74-6.el8.aarch64", + "p11-kit-0.23.14-5.el8_0.aarch64", + "p11-kit-trust-0.23.14-5.el8_0.aarch64", + "pam-1.3.1-11.el8.aarch64", + "parted-3.2-38.el8.aarch64", + "passwd-0.80-3.el8.aarch64", + "pciutils-3.6.4-2.el8.aarch64", + "pciutils-libs-3.6.4-2.el8.aarch64", + "pcre-8.42-4.el8.aarch64", + "pcre2-10.32-2.el8.aarch64", + "pigz-2.4-4.el8.aarch64", + "pinentry-1.1.0-2.el8.aarch64", + "pixman-0.38.4-1.el8.aarch64", + "platform-python-3.6.8-30.el8.aarch64", + "platform-python-pip-9.0.3-17.el8.noarch", + "platform-python-setuptools-39.2.0-6.el8.noarch", + "policycoreutils-2.9-9.el8.aarch64", + "policycoreutils-python-utils-2.9-9.el8.noarch", + "polkit-0.115-11.el8.aarch64", + "polkit-libs-0.115-11.el8.aarch64", + "polkit-pkla-compat-0.1-12.el8.aarch64", + "popt-1.16-14.el8.aarch64", + "prefixdevname-0.1.0-6.el8.aarch64", + "procps-ng-3.3.15-2.el8.aarch64", + "publicsuffix-list-dafsa-20180723-1.el8.noarch", + "python3-asn1crypto-0.24.0-3.el8.noarch", + "python3-audit-3.0-0.17.20191104git1c2f876.el8.aarch64", + "python3-babel-2.5.1-5.el8.noarch", + "python3-cairo-1.16.3-6.el8.aarch64", + "python3-cffi-1.11.5-5.el8.aarch64", + "python3-chardet-3.0.4-7.el8.noarch", + "python3-configobj-5.0.6-11.el8.noarch", + "python3-cryptography-2.3-3.el8.aarch64", + "python3-dateutil-2.6.1-6.el8.noarch", + "python3-dbus-1.2.4-15.el8.aarch64", + "python3-decorator-4.2.1-2.el8.noarch", + "python3-dnf-4.2.23-2.el8.noarch", + "python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch", + "python3-dnf-plugins-core-4.0.17-2.el8.noarch", + "python3-ethtool-0.14-3.el8.aarch64", + "python3-gobject-3.28.3-2.el8.aarch64", + "python3-gobject-base-3.28.3-2.el8.aarch64", + "python3-gpg-1.13.1-3.el8.aarch64", + "python3-hawkey-0.48.0-2.el8.aarch64", + "python3-hwdata-2.3.6-3.el8.noarch", + "python3-idna-2.5-5.el8.noarch", + "python3-iniparse-0.4-31.el8.noarch", + "python3-inotify-0.9.6-13.el8.noarch", + "python3-jinja2-2.10.1-2.el8_0.noarch", + "python3-jsonpatch-1.21-2.el8.noarch", + "python3-jsonpointer-1.10-11.el8.noarch", + "python3-jsonschema-2.6.0-4.el8.noarch", + "python3-jwt-1.6.1-2.el8.noarch", + "python3-libcomps-0.1.11-4.el8.aarch64", + "python3-libdnf-0.48.0-2.el8.aarch64", + "python3-librepo-1.12.0-1.el8.aarch64", + "python3-libs-3.6.8-30.el8.aarch64", + "python3-libselinux-2.9-3.el8.aarch64", + "python3-libsemanage-2.9-3.el8.aarch64", + "python3-libxml2-2.9.7-8.el8.aarch64", + "python3-linux-procfs-0.6.2-2.el8.noarch", + "python3-magic-5.33-16.el8.noarch", + "python3-markupsafe-0.23-19.el8.aarch64", + "python3-netifaces-0.10.6-4.el8.aarch64", + "python3-newt-0.52.20-11.el8.aarch64", + "python3-oauthlib-2.1.0-1.el8.noarch", + "python3-perf-4.18.0-221.el8.aarch64", + "python3-pip-wheel-9.0.3-17.el8.noarch", + "python3-ply-3.9-8.el8.noarch", + "python3-policycoreutils-2.9-9.el8.noarch", + "python3-prettytable-0.7.2-14.el8.noarch", + "python3-pyOpenSSL-18.0.0-1.el8.noarch", + "python3-pycparser-2.14-14.el8.noarch", + "python3-pydbus-0.6.0-5.el8.noarch", + "python3-pyserial-3.1.1-8.el8.noarch", + "python3-pysocks-1.6.8-3.el8.noarch", + "python3-pytz-2017.2-9.el8.noarch", + "python3-pyudev-0.21.0-7.el8.noarch", + "python3-pyyaml-3.12-12.el8.aarch64", + "python3-requests-2.20.0-2.1.el8_1.noarch", + "python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64", + "python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64", + "python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64", + "python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch", + "python3-rpm-4.14.3-4.el8.aarch64", + "python3-schedutils-0.6-6.el8.aarch64", + "python3-setools-4.3.0-1.el8.aarch64", + "python3-setuptools-wheel-39.2.0-6.el8.noarch", + "python3-six-1.11.0-8.el8.noarch", + "python3-slip-0.6.4-11.el8.noarch", + "python3-slip-dbus-0.6.4-11.el8.noarch", + "python3-subscription-manager-rhsm-1.27.9-1.el8.aarch64", + "python3-syspurpose-1.27.9-1.el8.aarch64", + "python3-systemd-234-8.el8.aarch64", + "python3-unbound-1.7.3-14.el8.aarch64", + "python3-urllib3-1.24.2-4.el8.noarch", + "qemu-guest-agent-4.2.0-29.module+el8.3.0+7212+401047e6.aarch64", + "quota-4.04-10.el8.aarch64", + "quota-nls-4.04-10.el8.noarch", + "readline-7.0-10.el8.aarch64", + "redhat-logos-81.1-1.el8.aarch64", + "redhat-release-8.3-0.2.el8.aarch64", + "redhat-release-eula-8.3-0.2.el8.aarch64", + "rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64", + "rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64", + "rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.aarch64", + "rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch", + "rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.aarch64", + "rhsm-icons-1.27.9-1.el8.noarch", + "rng-tools-6.8-3.el8.aarch64", + "rootfiles-8.1-22.el8.noarch", + "rpcbind-1.2.5-7.el8.aarch64", + "rpm-4.14.3-4.el8.aarch64", + "rpm-build-libs-4.14.3-4.el8.aarch64", + "rpm-libs-4.14.3-4.el8.aarch64", + "rpm-plugin-selinux-4.14.3-4.el8.aarch64", + "rpm-plugin-systemd-inhibit-4.14.3-4.el8.aarch64", + "rsync-3.1.3-8.el8.aarch64", + "rsyslog-8.1911.0-6.el8.aarch64", + "sed-4.5-2.el8.aarch64", + "selinux-policy-3.14.3-48.el8.noarch", + "selinux-policy-targeted-3.14.3-48.el8.noarch", + "setroubleshoot-plugins-3.3.12-1.el8.noarch", + "setroubleshoot-server-3.3.23-1.el8.aarch64", + "setup-2.12.2-6.el8.noarch", + "sg3_utils-1.44-5.el8.aarch64", + "sg3_utils-libs-1.44-5.el8.aarch64", + "shadow-utils-4.6-10.el8.aarch64", + "shared-mime-info-1.9-3.el8.aarch64", + "shim-aa64-15-12.aarch64", + "slang-2.3.2-3.el8.aarch64", + "snappy-1.1.7-5.el8.aarch64", + "sos-3.9.1-4.el8.noarch", + "sqlite-libs-3.26.0-10.el8.aarch64", + "squashfs-tools-4.3-19.el8.aarch64", + "sscg-2.3.3-14.el8.aarch64", + "sssd-client-2.3.0-2.el8.aarch64", + "sssd-common-2.3.0-2.el8.aarch64", + "sssd-kcm-2.3.0-2.el8.aarch64", + "sssd-nfs-idmap-2.3.0-2.el8.aarch64", + "subscription-manager-1.27.9-1.el8.aarch64", + "subscription-manager-cockpit-1.27.9-1.el8.noarch", + "subscription-manager-rhsm-certificates-1.27.9-1.el8.aarch64", + "sudo-1.8.29-6.el8.aarch64", + "systemd-239-36.el8.aarch64", + "systemd-libs-239-36.el8.aarch64", + "systemd-pam-239-36.el8.aarch64", + "systemd-udev-239-36.el8.aarch64", + "tar-1.30-5.el8.aarch64", + "tcpdump-4.9.3-1.el8.aarch64", + "teamd-1.29-5.el8.aarch64", + "trousers-0.3.14-4.el8.aarch64", + "trousers-lib-0.3.14-4.el8.aarch64", + "tuned-2.14.0-2.el8.noarch", + "tzdata-2020a-1.el8.noarch", + "unbound-libs-1.7.3-14.el8.aarch64", + "usermode-1.113-1.el8.aarch64", + "util-linux-2.32.1-24.el8.aarch64", + "vim-minimal-8.0.1763-15.el8.aarch64", + "virt-what-1.18-6.el8.aarch64", + "which-2.21-12.el8.aarch64", + "xfsprogs-5.0.0-4.el8.aarch64", + "xkeyboard-config-2.28-1.el8.noarch", + "xz-5.2.4-3.el8.aarch64", + "xz-libs-5.2.4-3.el8.aarch64", + "yum-4.2.23-2.el8.noarch", + "yum-utils-4.0.17-2.el8.noarch", + "zlib-1.2.11-15.el8.aarch64" + ], + "partition-table": "gpt", + "partition-table-id": "8DFDFF87-C96E-EA48-A3A6-9408F1F6B1EF", + "partitions": [ + { + "bootable": false, + "fstype": "vfat", + "label": "EFI\\ System", + "partuuid": "633C7FB8-A102-024A-BB8D-F603A79B61CF", + "size": 498073600, + "start": 1048576, + "type": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B", + "uuid": "46BB-8120" + }, + { + "bootable": false, + "fstype": "xfs", + "label": null, + "partuuid": "095DCA55-5FC3-B742-AA88-A9891D0E8FEF", + "size": 3794779648, + "start": 500170752, + "type": "0FC63DAF-8483-4772-8E79-3D69D8477DE4", + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:992:989::/var/lib/chrony:/sbin/nologin", + "cockpit-ws:x:994:991:User for cockpit web service:/nonexisting:/sbin/nologin", + "cockpit-wsinstance:x:993:990:User for cockpit-ws instances:/nonexisting:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "polkitd:x:998:996:User for polkitd:/:/sbin/nologin", + "redhat:x:1000:1000::/home/redhat:/bin/bash", + "rngd:x:991:988:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin", + "root:x:0:0:root:/root:/bin/bash", + "rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin", + "rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin", + "setroubleshoot:x:995:992::/var/lib/setroubleshoot:/sbin/nologin", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sssd:x:996:993:User for sssd:/:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "tcpdump:x:72:72::/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/boot/efi/EFI": ".M.......", + "/boot/efi/EFI/BOOT/BOOTAA64.EFI": ".......T.", + "/boot/efi/EFI/BOOT/fbaa64.efi": ".......T.", + "/boot/efi/EFI/redhat/BOOTAA64.CSV": ".......T.", + "/boot/efi/EFI/redhat/mmaa64.efi": ".......T.", + "/boot/efi/EFI/redhat/shim.efi": ".......T.", + "/boot/efi/EFI/redhat/shimaa64-redhat.efi": ".......T.", + "/boot/efi/EFI/redhat/shimaa64.efi": ".......T.", + "/etc/machine-id": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/proc": ".M.......", + "/sys": ".M.......", + "/var/log/lastlog": ".M....G..", + "/var/spool/anacron/cron.daily": ".M.......", + "/var/spool/anacron/cron.monthly": ".M.......", + "/var/spool/anacron/cron.weekly": ".M......." + }, + "missing": [ + "/etc/systemd/system/dbus-org.freedesktop.resolve1.service" + ] + }, + "services-disabled": [ + "arp-ethers.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "cockpit.socket", + "console-getty.service", + "cpupower.service", + "ctrl-alt-del.target", + "dbxtool.service", + "debug-shell.service", + "exit.target", + "fstrim.timer", + "gssproxy.service", + "halt.target", + "insights-client-results.path", + "insights-client.timer", + "kexec.target", + "nfs-blkmap.service", + "nfs-server.service", + "poweroff.target", + "qemu-guest-agent.service", + "rdisc.service", + "reboot.target", + "remote-cryptsetup.target", + "rhnsd.service", + "rhsm-facts.service", + "rhsm.service", + "rngd-wake-threshold.service", + "runlevel0.target", + "runlevel6.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-resolved.service", + "tcsd.service", + "tmp.mount" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "cloud-init.service", + "crond.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dnf-makecache.timer", + "getty@.service", + "import-state.service", + "irqbalance.service", + "kdump.service", + "loadmodules.service", + "nfs-client.target", + "nfs-convert.service", + "nis-domainname.service", + "remote-fs.target", + "rhsmcertd.service", + "rngd.service", + "rpcbind.service", + "rpcbind.socket", + "rsyslog.service", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "syslog.service", + "tuned.service", + "unbound-anchor.timer" + ], + "timezone": "UTC" + } +} \ No newline at end of file diff --git a/test/cases/rhel_8-aarch64-rhel_edge_commit-boot.json b/test/cases/rhel_8-aarch64-rhel_edge_commit-boot.json new file mode 100644 index 0000000..203d214 --- /dev/null +++ b/test/cases/rhel_8-aarch64-rhel_edge_commit-boot.json @@ -0,0 +1,9126 @@ +{ + "compose-request": { + "distro": "rhel-8", + "arch": "aarch64", + "image-type": "rhel-edge-commit", + "repositories": [ + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + }, + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + } + ], + "filename": "commit.tar", + "blueprint": {} + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:0136940a3e28a159e7347b0bc7d1dbbc0339c64f431349e355f75abe31cbf21c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-4.18.0-221.el8.aarch64.rpm" + }, + "sha256:01e486a3be67325e9692e909f5c6534137ee6a6df185ba2c09d4d50fe6c738f6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libusbx-1.0.23-3.el8.aarch64.rpm" + }, + "sha256:0229afd544d1a59bfe26c095ad338bac7e0d2f10aab88bd895f3766e8f54fff3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-libnm-1.26.0-0.2.el8.aarch64.rpm" + }, + "sha256:0376e0b82157c1006ea475a52ca7806aea53ae6484c1a4534e9a249b4b13b23e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/podman-2.0.0-0.9.rc7.module+el8.3.0+7084+c16098dd.aarch64.rpm" + }, + "sha256:04c031a07bde4360484a0180e832036d3ac45a95c4839e54d7a02423df5485ef": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pam-1.3.1-11.el8.aarch64.rpm" + }, + "sha256:057b6632870b8c3c0c950a19092ef2f9749bf3d1a37ccb083bf42ca6404db066": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-libs-1.02.171-3.el8.aarch64.rpm" + }, + "sha256:058822931f4c34c18675116c1b02b718de4044c1019acb0d5f97417f00a30ba7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libevent-2.1.8-5.el8.aarch64.rpm" + }, + "sha256:078fe843b11622825dd88504c8fedb81c43cdbf4983107e1de82a44e1f43d6cd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/clevis-luks-13-3.el8.aarch64.rpm" + }, + "sha256:07ff7e41f0955d2140fb2fd2ef39777ad871c86019e9bbf0a5fa6116dffb2eeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lvm2-2.03.09-3.el8.aarch64.rpm" + }, + "sha256:094eff70081085f87a7ac0dedafa851ad8ac8e03f9f328636df4a0f8301d0e87": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-libs-5.2.4-3.el8.aarch64.rpm" + }, + "sha256:0a885c6dc6abd969b828bf2fd7063ee884e6d058eaf405b02f3dd6efb6c66bac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:0b4564ad3a799af1a4a0de33b0952f6056d942b0cfa39b73e9375bf0c05b3191": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-smime-2.2.20-2.el8.aarch64.rpm" + }, + "sha256:0bb7024125ca67119612e55a92da13c989e0306ddd7de7e655a679c963939ef7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:0c851bb11d2bce1ccb4804a958d21c1082267b8bc2f7f825e5236857e1f35274": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fuse-2.9.7-12.el8.aarch64.rpm" + }, + "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm" + }, + "sha256:0d61e2dfcaed066e4ef74e4baddab9cdec24602aeb7a98306481f38cb5f449eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-core-4.18.0-221.el8.aarch64.rpm" + }, + "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/linux-firmware-20200619-99.git3890db36.el8.noarch.rpm" + }, + "sha256:0e33000d382305bd26466545abaadf22c31d1c7d95b4c0475606348df68c4bfc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmodulemd1-1.8.16-0.2.9.4.2.aarch64.rpm" + }, + "sha256:0f1a02850c102e2a186787504f965c0c10d6432b9f600c18bc2f520e55f04a8c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libassuan-2.5.1-3.el8.aarch64.rpm" + }, + "sha256:0f32d23a6b2b15603d710b0317238ef8dde3de61eda96713e21d86c9fc7a98ed": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/which-2.21-12.el8.aarch64.rpm" + }, + "sha256:0f6d940ccddd815da01182de1e7b7e2d12c493125285ff7ee902843beefdec16": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmnl-1.0.4-6.el8.aarch64.rpm" + }, + "sha256:0fd7dd5b060e7533144ad7a3cae2453ad6f87650010f328879b10c7c4cba0c04": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iptables-libs-1.8.4-14.el8.aarch64.rpm" + }, + "sha256:1091a799d34a42d2e42ac462b4f979a55d17513eca5a00bad9bdba56cca83357": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-25-16.el8.aarch64.rpm" + }, + "sha256:10a83db8ac5065869be834bf6ec61185eded982f885def5979948736e5c3ab95": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mozjs60-60.9.0-4.el8.aarch64.rpm" + }, + "sha256:10ac3bf7565725a55b0aef56f65befd0d320219fc83adfab6e564c19f8c44bd6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-2.0.4-10.el8.aarch64.rpm" + }, + "sha256:1143ac623a74d7feaaaf293c18d942d243248f6356628f87216670c10d11687b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-glib-1.4.4-1.el8.aarch64.rpm" + }, + "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm" + }, + "sha256:125c92f23d87b905c21e9f7669f0ec6e41428ab63c8c13f63db8980f292797d5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sed-4.5-2.el8.aarch64.rpm" + }, + "sha256:126d980678e5b687c775cf857b4013306f1a761353370258a0f04d92a3553f92": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-minimal-2.02-84.el8.aarch64.rpm" + }, + "sha256:13471e37bb0089a322183fc9e7a53948f0b203b54277630e75606a835268ad5d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rng-tools-6.8-3.el8.aarch64.rpm" + }, + "sha256:13f55a1fea88c4720dc704fa19573325ddde8c1c60ed71e96f98a9e5a6508d44": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/chrony-3.5-1.el8.aarch64.rpm" + }, + "sha256:140146ebcbadd9b0f2aa5c2fcde5c93888f2d84ce61a2a4cf148ef435d1ba410": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsemanage-2.9-3.el8.aarch64.rpm" + }, + "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm" + }, + "sha256:157044e6cf5cc52b64b9a5d621fdb5b0846a527daa428382330e68bdb47789eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dhcp-client-4.3.6-41.el8.aarch64.rpm" + }, + "sha256:1594afba86593ec614299ef6af255755a98ea55a34a72a22fdc9d80a040be39d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/abattis-cantarell-fonts-0.0.25-4.el8.noarch.rpm" + }, + "sha256:15c33124ac0479d34f1f58d2bd24cc52db7089b4a8681c276a3fd0d6dfe4fc72": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-8.30-8.el8.aarch64.rpm" + }, + "sha256:16dd7121e6461d2c136f9f7330d8a60b88ed9ec77ac6824ac3ee7495acdb6800": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnetfilter_conntrack-1.0.6-5.el8.aarch64.rpm" + }, + "sha256:17501958f52d2db1417cab8dd5ca261bf447fd93eb62b80173f9875c3012b700": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efi-filesystem-3-2.el8.noarch.rpm" + }, + "sha256:1956304761f23c6661b831d33a3539b82384636db4113cccd19321b36a3a8415": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/vim-minimal-8.0.1763-15.el8.aarch64.rpm" + }, + "sha256:19cd894b4154d1a8521c6884cfd2a6eaf1f498b7dec5cc31408f8535b9098f2a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shared-mime-info-1.9-3.el8.aarch64.rpm" + }, + "sha256:19d1de27d2f62b4a55735233807f70a1e8ff7551fed97ee8650dbd09c1ef50ea": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libzstd-1.4.4-1.el8.aarch64.rpm" + }, + "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm" + }, + "sha256:19efe6f125c00123ccc6d96e51eb61e711f3ea01f32d18cce14d3b614217c58e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gmp-6.1.2-10.el8.aarch64.rpm" + }, + "sha256:1b8c037a6c67959b52894f38444ed1133356c65cec2eed3acf37c45cf8609e63": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efivar-36-1.el8.aarch64.rpm" + }, + "sha256:1bc21785bc6f66d6fcc29cd62f2cdd3584f3f8ea6321db4c27251b192f468433": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/usermode-1.113-1.el8.aarch64.rpm" + }, + "sha256:1d28eaeaa59c48e4193c709dd2a6301c2f8701138164c05371a0d8f235d14c9c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl7260-firmware-25.30.13.0-99.el8.1.noarch.rpm" + }, + "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tzdata-2020a-1.el8.noarch.rpm" + }, + "sha256:1d322a2742596a94b28bb8481621ea604da8ba980a4199b9fd2f41aa990664a4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libqmi-1.24.0-1.el8.aarch64.rpm" + }, + "sha256:1d39ffccb1971cf4c3b6d6e6c6415c9fceb50238f312ab9fa2417bce03679785": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pkgconf-1.4.2-1.el8.aarch64.rpm" + }, + "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm" + }, + "sha256:1fbb9fed42dff3f9dbc9e4fd929281408f77506423424759c2ac57b76afc3cdb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpng-1.6.34-5.el8.aarch64.rpm" + }, + "sha256:207e6396488c1db18fb7b1f2b9952f48c2625f042c5f6a901d41974ce376b0e0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sqlite-libs-3.26.0-10.el8.aarch64.rpm" + }, + "sha256:21685a7b79484a6d684efd86af6fb23dc13aaadc534cc4c4ae3edc0ceb84051b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ipcalc-0.2.4-4.el8.aarch64.rpm" + }, + "sha256:22069f81fb22bee7871e6368bec14602614aee7f81e8fd5c752b7023fd13de39": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/usbguard-selinux-0.7.8-5.el8.noarch.rpm" + }, + "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:22c0e44318e36e04ad1eb4632dcf25db991f481f9a543387d372e1f2ad92561f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/pinentry-1.1.0-2.el8.aarch64.rpm" + }, + "sha256:2397506a63455e543b201938f605e687de5590d9a06282824e2f6bfdf5e0f149": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsolv-0.7.11-1.el8.aarch64.rpm" + }, + "sha256:247bca3cfd7a4faac974bbf4f52203c224f0a83d439e112acde72638f33e708c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/jq-1.5-12.el8.aarch64.rpm" + }, + "sha256:268d9232f0853037100432e9363c659cf99927e03f759fd4884643b560710cd6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libss-1.45.6-1.el8.aarch64.rpm" + }, + "sha256:26b14d8f226962ce712bbccfb245843759e835a24a139eacae86d680043a85a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmount-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:2809ad51c6eb6c9a54d64cccc2cd948f6fd4207f32b4493b3f4a9bd0886c894b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcurl-7.61.1-12.el8.aarch64.rpm" + }, + "sha256:290c83afcd2b0a2b17aab95cf72a85da5f8b9f9a9862857c919a0f43e3fce70e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-pkcs11-0.4.10-2.el8.aarch64.rpm" + }, + "sha256:2921d3aa14a509d271ca35256903c142c30f088f7dc889a4c4e15b26316ef5c0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-2.02-84.el8.aarch64.rpm" + }, + "sha256:2cddadff38ccef2364a7e40af0e1d9b3bf9c06869c15ceeb655f3cfa431c2083": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-2.26-4.el8.aarch64.rpm" + }, + "sha256:2d74e0ab14393921c6160fda8dd533b58c0348acdf5ee5c306ffc64221700de2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librepo-1.12.0-1.el8.aarch64.rpm" + }, + "sha256:2d84f6765b1645f867527f493b6153470602a80c75f81545bf619aa92127e4da": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bzip2-libs-1.0.6-26.el8.aarch64.rpm" + }, + "sha256:2dc8e2f52451d1a11b16bbb389a24c58b61a1ba804ee777f9d06dbe4e1fcf6e5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libidn2-2.2.0-1.el8.aarch64.rpm" + }, + "sha256:2df37064ec55f10e06dc0c05647a296b8ca7867251fe44130206052e58d39bda": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/subscription-manager-rhsm-certificates-1.27.9-1.el8.aarch64.rpm" + }, + "sha256:2e26672ae726ba833187292dcc6c1673a07e26d974fef2f71a83407989eea8a1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-config-generic-049-89.git20200625.el8.aarch64.rpm" + }, + "sha256:2efbfbcce7ef24e433d3c304b6b6b022d1b1b8a972969da1adb1c3c85f9625a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dosfstools-4.1-6.el8.aarch64.rpm" + }, + "sha256:31043a7324411dad6b84f6504a9e9cb7ece9f576acf091be522e484c8b82f469": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-gobject-base-3.28.3-2.el8.aarch64.rpm" + }, + "sha256:320ced09e242f09047f4fab0a7f66aba6de2e42583f6a2e164eadcc1ffd0b915": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mpfr-3.1.6-1.el8.aarch64.rpm" + }, + "sha256:3256e78263462d5d7ab37b696992aedd6f810431641ce8d1e1bc198c797b402b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-1.45.6-1.el8.aarch64.rpm" + }, + "sha256:332c3cd387659ab5dfbb14ea5e75d1c8e1c8a8833e0314dde3ec758607efb3e4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libproxy-0.4.15-5.2.el8.aarch64.rpm" + }, + "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm" + }, + "sha256:342d7cd5f427c0d9c02336bc4f189225b3b57c5899f5d26b61b351fc37f99489": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setools-4.3.0-1.el8.aarch64.rpm" + }, + "sha256:34cd0ea2ffb4d75b6d3781c2683b0880ffc11e1da1f65f042a43dcca2e6bb9c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libslirp-4.3.0-3.module+el8.3.0+7084+c16098dd.aarch64.rpm" + }, + "sha256:35526b38ee65e37508867608143abd366f236c1dcecbdac3e3b7aafddfe797ff": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-event-1.02.171-3.el8.aarch64.rpm" + }, + "sha256:36aece7b7a65785985bf0b98701514f12735a87517b8578a3eb3710f82ba4765": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-c-0.13.1-0.2.el8.aarch64.rpm" + }, + "sha256:37fe346ef6d0ddec5894cfcf96d04ca41924a16a8199814ce8ae7f125183974d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fuse-common-3.2.1-12.el8.aarch64.rpm" + }, + "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libcomps-0.1.11-4.el8.aarch64.rpm" + }, + "sha256:3a32688730dde2950fd8f1126890daf77b3ec8576afdbfe1fde3c9f4a9677ee2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tmux-2.7-1.el8.aarch64.rpm" + }, + "sha256:3a684fd5f1b1d417c6c3e9d1f0d5b846138aa06450ff246425d43d4a20bd619e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/diffutils-3.6-6.el8.aarch64.rpm" + }, + "sha256:3b607f0dbedecb25239e22c1f553c8d70db9d2206a877fa07567fa1a49e233d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcc-8.3.1-5.1.el8.aarch64.rpm" + }, + "sha256:3bf230c85711b285afb968850d7e98eb6b068a06e7ca40e94203e388d8447f48": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnutls-3.6.14-3.el8.aarch64.rpm" + }, + "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dnf-plugins-core-4.0.17-2.el8.noarch.rpm" + }, + "sha256:3ee66f993ee567b2457a221ed364ae4f8dfe783a5f0e723d9169f95d12f9e696": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-libs-5.33-16.el8.aarch64.rpm" + }, + "sha256:3ee6a4f61935c2f0698ad2c4834a5864920a1e48d55c7800da7c382249895e39": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-0.9.4-2.el8.aarch64.rpm" + }, + "sha256:3ef63ecbebf844bcf682c9482dc0ddd158c955b0f066b62eb9575bb9a9642db5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-1.1.1g-9.el8.aarch64.rpm" + }, + "sha256:3f04145851379fd54be1aecfb0f73c91e9385ce7634b9beb1703cecfbae65ed2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cryptsetup-2.3.3-1.el8.aarch64.rpm" + }, + "sha256:3f5765cebcac288cc1b5b118acfbc2016eda7b81ad73923f6f9c21e4731eb0d9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-1.18-1.el8.aarch64.rpm" + }, + "sha256:3f7e5e72ab9e18dbca936b40734c91520242a49a9e98a2f2589f397faa6ad8e8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/info-6.5-6.el8.aarch64.rpm" + }, + "sha256:3f8039ed081aa3f628e947656af825b4541ded3547675098eabb0f177eca45e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/polkit-0.115-11.el8.aarch64.rpm" + }, + "sha256:3fe7c10c144c8fffc00d144317a2bf8029bd9d048432bccfc352dfc6f0995680": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-udev-239-36.el8.aarch64.rpm" + }, + "sha256:40096d3516d115e83bc2aa2b5877708f4511961d524e03ce562f9f1872fa27ab": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bubblewrap-0.4.0-1.el8.aarch64.rpm" + }, + "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dhcp-common-4.3.6-41.el8.noarch.rpm" + }, + "sha256:41cc2d507fdfbba939c00164a563e770d466f992cb64d3c51a79aec20b31d6d1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.aarch64.rpm" + }, + "sha256:421dd99d6a2654b08f01d62c1921116f80d6799eb99ff58c45ac055b3d7f731a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pkgconf-pkg-config-1.4.2-1.el8.aarch64.rpm" + }, + "sha256:425ed8338a8ff15ca107e058c4a806c52b7da8f24da5510c57f7e9b9ea031ca2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libjose-10-2.el8.aarch64.rpm" + }, + "sha256:4301ddbbfdbd5b72fe6596ce1872de3df7bc85101445d899b637a860b5c3383a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/setools-console-4.3.0-1.el8.aarch64.rpm" + }, + "sha256:432ef41fd5f9ad2b9a797ed105f6e729dcaf19c17df9c1478802af04e898e305": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sudo-1.8.29-6.el8.aarch64.rpm" + }, + "sha256:435a2be84a2b38372965dbd60ffed0ed38a616b8100859787a8bb3b19d9fc4d9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpcap-1.9.1-4.el8.aarch64.rpm" + }, + "sha256:43ab42c8a58267936a89da99e37d3b9fc56489e958060f600ba047445ca44ee3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/os-prober-1.74-6.el8.aarch64.rpm" + }, + "sha256:448d3ff44e7f32f3b33e891180e248dc1bcd4d410f68015a8b0c30dc7c385aca": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-libs-1.1.1g-9.el8.aarch64.rpm" + }, + "sha256:4633c2b5a93723e1cad477b81f9ccefafed342f8c4474ec305058f99c713229d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-extra-2.02-84.el8.aarch64.rpm" + }, + "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm" + }, + "sha256:471663fca7e3f609834368d69d8f1f469cfc0d3f3e95dc2b79381722d0368edc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.aarch64.rpm" + }, + "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm" + }, + "sha256:47b483c0f556c56f0b1f468603c57834864902ae5a849a18c8a0ca5f76d66c86": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:481bbd6d73415d437a73eee7977ec370299acdac44b215a026652debba31783d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtirpc-1.1.4-4.el8.aarch64.rpm" + }, + "sha256:48509ce37ec06c1b15149feec4b2eb5d3a2f0453a41804c9c5d9ef5b8b320d4f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-audit-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm" + }, + "sha256:4874e739ed37bc6a5bfdb6069d4620e5f7efe01d60eb9fd2550c550167c99990": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.aarch64.rpm" + }, + "sha256:4909edde46b5b2b58d228bacafa3bab5bc5847559d591d59ecd59cdf50d36db4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-hawkey-0.48.0-2.el8.aarch64.rpm" + }, + "sha256:497405568863a64e66904df3794d9da933738612b6185fc46efd9a63fdb5d84a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/ostree-libs-2020.3-3.el8.aarch64.rpm" + }, + "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm" + }, + "sha256:4a27cd4496ebdba821b3c7692eeb0c0fff28c6af69fe4fe9e4bf52511639bd6a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kpartx-0.8.4-2.el8.aarch64.rpm" + }, + "sha256:4a40a1538c8a488f32476f96d2461c3b792eb0cf5acb998e397d8a9cef8e5461": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libffi-3.1-22.el8.aarch64.rpm" + }, + "sha256:4a7d4068f39dbb01d7f707f9912abfddcc065a62b66144eeb7b7e2f13cec68af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/polkit-pkla-compat-0.1-12.el8.aarch64.rpm" + }, + "sha256:4c1754c21b2a83f4cc13a95ce545873907db154c7aebf9ab5af4b365fbb54502": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sqlite-3.26.0-10.el8.aarch64.rpm" + }, + "sha256:4c1d9194bb8462cb8a6dd7ac6fe7499c289bca2e5783ff7f504ee2e1a6887117": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/clevis-dracut-13-3.el8.aarch64.rpm" + }, + "sha256:4d8d164f8bd56b7ab6252f009b38525f39fb161c03713414e1583894a265c50a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-all-langpacks-2.28-127.el8.aarch64.rpm" + }, + "sha256:4d8edaa317fd508226bb5421ef423470f3e9153167222dee7bf8fb2346b7875b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-049-89.git20200625.el8.aarch64.rpm" + }, + "sha256:4e3434407548fab65e2dd9863b6b175ff66b114ca8f7cc65880fb7926c461a05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/conmon-2.0.18-1.module+el8.3.0+7084+c16098dd.aarch64.rpm" + }, + "sha256:4e4923f05d0032263d570075b9b832b9fc3550cd8f82f9a6b0b9b25061726110": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/popt-1.16-14.el8.aarch64.rpm" + }, + "sha256:4efe61bac45e15b3b1bfda93bf3cfbf72d49c7f0452737d01f12f49b6e624175": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/subscription-manager-1.27.9-1.el8.aarch64.rpm" + }, + "sha256:4fe7733b93fad52a48d4b47a6dc55582f3cc41fc2074e42a9b39fc5d407df6d3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-ethtool-0.14-3.el8.aarch64.rpm" + }, + "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm" + }, + "sha256:518e5412ce19ab733f62c334da8c5545a212c4c971d513eb95590b08a14e3772": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bash-4.4.19-12.el8.aarch64.rpm" + }, + "sha256:532d46a4c0e68bd45eabc3e2ba6d570880344044e1034f5f347b37c470d0dced": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libverto-0.3.0-5.el8.aarch64.rpm" + }, + "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:53b632a02518eacbcaec94404927dddaf860638cb594f4c9b898b89bd314ff59": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rpm-ostree-2020.2-2.el8.aarch64.rpm" + }, + "sha256:53fa2fd6a138d00c697b827a77bcc25ec498b1d49bb04ef80594e81ccabc165d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgomp-8.3.1-5.1.el8.aarch64.rpm" + }, + "sha256:540fa90864b4eb0176b56e0c5e9d7bc6130985288ae297b4c38950381b08a827": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/findutils-4.6.0-20.el8.aarch64.rpm" + }, + "sha256:551a506b43e32d21bf7b6333e028733956d5ef3560837a0c84b0d3e598efa046": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/less-530-1.el8.aarch64.rpm" + }, + "sha256:56d588cc5ffb16a91ce056824c02de133ad6d0070571f681166046c1805199a4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/skopeo-1.1.0-1.module+el8.3.0+7097+8d4f8cb4.aarch64.rpm" + }, + "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm" + }, + "sha256:5996ff948b5874f894c5ce3495652e6de552addf2331fd82193023d77994ef8f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.aarch64.rpm" + }, + "sha256:5a05f1126ed38f752af247dcdf7c958e738b935b8b6d942fd42f423768f05255": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgpg-error-1.31-1.el8.aarch64.rpm" + }, + "sha256:5a1b052999190993cf04eba28390166834b155d689806174b6ba483e160071a8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/jose-10-2.el8.aarch64.rpm" + }, + "sha256:5be5628cff7e0cbf726771bd7af6d8f4bd987a672381a9fb225974bcfc7f9644": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsoup-2.62.3-1.el8.aarch64.rpm" + }, + "sha256:5eddb5c1febbe6e58491f8e9ee8fc9897298b307e0357c01f49d445cf25283c9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grubby-8.40-41.el8.aarch64.rpm" + }, + "sha256:5f0a836e243fdaee7ba99ae085be7b57c02d0c199564166175ef1cc17cb7df34": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/nss-altfiles-2.18.1-12.el8.aarch64.rpm" + }, + "sha256:5f2581acb411d6bb5e4d04fc58eaf84f3774b17e527e9e357da80e597300edff": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-persistent-data-0.8.5-3.el8.aarch64.rpm" + }, + "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:621e96e91103f2f701e4ac3b8b8b6ef9aab4db5ab8fb3e141eb02e3f328aed79": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-utils-5.3.28-39.el8.aarch64.rpm" + }, + "sha256:62a2878605ca0415fd60adcff4c7068d855d20737498a968fabc646610ccbe5c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-ng-0.7.9-5.el8.aarch64.rpm" + }, + "sha256:634a3cbf0b334e901b6887176fa1b98246be7c4010b4c21cb6fd8fa7aa5fdf94": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/filesystem-3.8-3.el8.aarch64.rpm" + }, + "sha256:635d847cc4dec8a8e1b418adfda2bc0a9e1814ed6c2c6154a5430029d83abd24": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-efi-aa64-2.02-84.el8.aarch64.rpm" + }, + "sha256:63c64d526e9820ddc57a77c053674eeccefef33f16af536dd9b47e816db06988": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-1.26.0-0.2.el8.aarch64.rpm" + }, + "sha256:64ac5cb6fd3da1610812795ce17e09648d89c87513d6284b852a3455b0831d3a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lz4-libs-1.8.3-2.el8.aarch64.rpm" + }, + "sha256:651f38873d3356ec4efb27d04658541080d11cf1ece6335a07db1ca089fa7da3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-0.23.14-5.el8_0.aarch64.rpm" + }, + "sha256:6557d001315e85ac123b1378c5aafb81428e2383debcacf3f91c55476cfc48eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpsl-0.20.2-6.el8.aarch64.rpm" + }, + "sha256:65b8d755ff01dfefa423d2f0bd6fd54cfc4c580da63510e19cf178abb6e26172": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libs-3.6.8-30.el8.aarch64.rpm" + }, + "sha256:66565771f3fa38fe14b5f14f28dcd804b57130922f1e02ca7b53a199be4f5c52": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libqb-1.0.3-12.el8.aarch64.rpm" + }, + "sha256:68593fad4413255772bd08ed7f8b578332f0f53e002c8c7473d90c966a87131b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-3.6.8-30.el8.aarch64.rpm" + }, + "sha256:689577d74311a7327aab6fe412a803d72b790957e863b6b78a8621a040306919": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cryptsetup-libs-2.3.3-1.el8.aarch64.rpm" + }, + "sha256:6947e0a550f9841b662c57825e426e2f5096e54f4bfd201058eb038242f620c5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/luksmeta-9-4.el8.aarch64.rpm" + }, + "sha256:6a6aa18217ae72a0b33e4302da927e6ded92520cbf4d48a5030d4a2f95eeb5d8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/chkconfig-1.13-2.el8.aarch64.rpm" + }, + "sha256:6ae316dfb9723d13a8d36d98d109d4a55017b568ee2070279f1bdccdc699862a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-unbound-1.7.3-14.el8.aarch64.rpm" + }, + "sha256:6b1dcf4c02ee8c588c0ae44af92ae1060dcdc44f197e624a71fb31c86554ad2c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glib-networking-2.56.1-1.1.el8.aarch64.rpm" + }, + "sha256:6d46339afc3d65beb89cbb36052e779e95ef2448a163d26db13d67715dad9cf8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-syspurpose-1.27.9-1.el8.aarch64.rpm" + }, + "sha256:6f2bfbe0f23d3b233aacb72c153ee133839353325f028321eb5ea38b0dc06c02": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libattr-2.4.48-3.el8.aarch64.rpm" + }, + "sha256:6f87f305a3e0e0faf69c2a9d4f277958ca33e85b72c6e4f77a365a5f60ced3d3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-libs-25-16.el8.aarch64.rpm" + }, + "sha256:6fbfaa1e1b1bb4e2362cf3dce0f59a94a78b457904234cbccbe6afacde311c26": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-1.02.171-3.el8.aarch64.rpm" + }, + "sha256:704e1dc996a17815c6dcf7029c0ddb2849d40feaab6e9b9c687af9d95fef825c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libksba-1.3.5-7.el8.aarch64.rpm" + }, + "sha256:70c05e5512e85231b490c1aa9c0e7eeb7f9a09c34d1253c3aa1db0b8db6be974": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-nftables-0.9.3-14.el8.aarch64.rpm" + }, + "sha256:727c08fe072ef85837e8db30574aec712cdf67a062eead3e5481ba08425b2395": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/unbound-libs-1.7.3-14.el8.aarch64.rpm" + }, + "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:760d9056891a60c200984f0655aee1876b3bf890f7486306c05db8e295ae7843": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xfsprogs-5.0.0-4.el8.aarch64.rpm" + }, + "sha256:769b1ac34ba3aa35337b734b8548dcf9e8b41476b9b2093756341bcbd5969a36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/firewalld-filesystem-0.8.2-1.el8.noarch.rpm" + }, + "sha256:77b56d825eb31ca191254d17a4c9399e3c4fe8af42a528c2ad4424bfd865b82d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/expat-2.2.5-4.el8.aarch64.rpm" + }, + "sha256:784d385116891056b618722c933d43c5b395b92fa82e5bc797081317ec6a82ba": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-eula-8.3-0.2.el8.aarch64.rpm" + }, + "sha256:7864fbc866ae5a3e59b4f0f114b77ff52b55e76c5388a917f82a6097f02a4db7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libyaml-0.1.7-5.el8.aarch64.rpm" + }, + "sha256:796cac51b2c1092c4faad372717c6ddc37cad9757111a41e531fe0a8d6c0a9ea": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/brotli-1.0.6-2.el8.aarch64.rpm" + }, + "sha256:79ebb787a23dd8f016cacc6fa256af291c932fa69ad294f35acdd3876f789971": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/containernetworking-plugins-0.8.6-1.module+el8.3.0+7084+c16098dd.aarch64.rpm" + }, + "sha256:7bb182e41292af7c8607e088e926da6f88249587df30a9cdc74aa4fe28a7c9de": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/nmap-ncat-7.70-5.el8.aarch64.rpm" + }, + "sha256:7c014b54f7929348f614f8f4eb7a1552b8565c0a57f3a75ff6471dc05f30cafe": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libacl-2.2.53-1.el8.aarch64.rpm" + }, + "sha256:7ce6aa282f9f23c46c44186595924d05f4e7a899b504eb95a0f87008f6620268": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dejavu-fonts-common-2.35-6.el8.noarch.rpm" + }, + "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm" + }, + "sha256:7d3ddbaae06c7fb8d24449e11b418ee07bdd9e07f7f0af57741d220b97228557": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/curl-7.61.1-12.el8.aarch64.rpm" + }, + "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-slip-0.6.4-11.el8.noarch.rpm" + }, + "sha256:7fc33f147b99749fdbae420ed51277cb99d9b6418b7f739fe51c7563945bc0d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hostname-3.20-6.el8.aarch64.rpm" + }, + "sha256:800c9a0d718c641ceee26c8f625b2dcd79a33963e9e7a11930678dc99582a2d0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-libs-239-36.el8.aarch64.rpm" + }, + "sha256:80bc5c2d45224a1948f0101228da989138d4006a77c67560247a6edc17e7c22a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ModemManager-1.10.8-2.el8.aarch64.rpm" + }, + "sha256:81c075f5e4c2c10ec6ac49a1a4c54ea22318124fbcf4ad5afdbddeb055cf2552": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/attr-2.4.48-3.el8.aarch64.rpm" + }, + "sha256:81d2e21dad970c08798c0df00bbda21acf165a370f9612e0d14ce69e5dd6c5c3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grep-3.1-6.el8.aarch64.rpm" + }, + "sha256:8329bf1aedce9ef3a4d7513ef98d3931ad39b84d5c3e73e99936c7f9b87931c2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dbus-1.2.4-15.el8.aarch64.rpm" + }, + "sha256:83301ca502322e0634173460bf8fa35572c36ab8cc2e6e600bf9980f845fc857": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-1.2.0-2.el8.aarch64.rpm" + }, + "sha256:83e470505f558f8cf8414a7fc8fb0d1bc4b16ed15d05ccf7e46332b04d1a0d85": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/util-linux-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:83ffb9eac35272ff70a84f5160b74554fbf3f886ee17ebf55615928085baa7cb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gsettings-desktop-schemas-3.32.0-5.el8.aarch64.rpm" + }, + "sha256:8498846918c7bc7a20553340434cfbfb0d19185adcd0ff52866c6506ab8f747d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcrypt-1.8.5-4.el8.aarch64.rpm" + }, + "sha256:84e7102978d76d80aa40c43efcc71c1e54e819195132df921a8c13cec54328da": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-5.3.28-39.el8.aarch64.rpm" + }, + "sha256:861346b2e683c09a53c9418a9ed08faf7448e066e3111482c70722cb62a6edce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/polkit-libs-0.115-11.el8.aarch64.rpm" + }, + "sha256:86ae7501bdf0149728879f488dd4c86907216cb5b021192347a5c10a55382931": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcroco-0.6.12-4.el8.aarch64.rpm" + }, + "sha256:876ffb285aaeddb2c18ae32527bd4ee202710bd8e18d5b410af22937646dcdec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxcrypt-4.1.1-4.el8.aarch64.rpm" + }, + "sha256:89bd26efe94889e657c5cedede8b5eede7d4e8833619218753df6ab5ab477d37": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgusb-0.3.0-1.el8.aarch64.rpm" + }, + "sha256:8ac1003d722e3d5f383c9b970bf6dfbc905007a624abadb63e520d7a93993747": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-6.1-7.20180224.el8.aarch64.rpm" + }, + "sha256:8ae407fb97bfa1bcd669f4263d0b45dd7fc7e97c1371cc4b8f4360024a56e7bb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ipset-libs-7.1-1.el8.aarch64.rpm" + }, + "sha256:8c0d40edf059bf044314df38c84e26cfbe00bf4e687a6114eacb17251718312b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnl3-3.5.0-1.el8.aarch64.rpm" + }, + "sha256:8ccbbfc215ecd95f8774055c44d324eea401a5e22b3d24410d67c7a509aa97ad": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ModemManager-glib-1.10.8-2.el8.aarch64.rpm" + }, + "sha256:8e916224ddbb8a7d8cd305f11087c66df950a318e4ef64290bca1afdc1327950": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/passwd-0.80-3.el8.aarch64.rpm" + }, + "sha256:8ef2fcbe5a8d6e7d393d28838ff458336d16e006bc7d19921f460eb105b88570": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-libs-1.18-1.el8.aarch64.rpm" + }, + "sha256:90405803c0159cdf0f74a26b6ce064cfd9973e59232b2923ed171a38fc5684a6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-gpg-1.13.1-3.el8.aarch64.rpm" + }, + "sha256:90f1b278b55197ea3061934e563aad3705fecaf8550259ca83939b012bc0aa06": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/container-selinux-2.137.0-1.module+el8.3.0+7084+c16098dd.noarch.rpm" + }, + "sha256:91c58481a7e4a9b7f9e0e14844fa73047395c75df95d35afa3b0d8ef3f584491": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-common-2.28-127.el8.aarch64.rpm" + }, + "sha256:920a48d33953c8d7f1b47106fa6f3cacddecf3e0954f91454b608af94e81ea7b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcab1-1.1-1.el8.aarch64.rpm" + }, + "sha256:925c70a394a76004087fd6e8d94f7edab9de9efb2b81740c875698532ba124c7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-plugin-subscription-manager-1.27.9-1.el8.aarch64.rpm" + }, + "sha256:9276a1f4679fbcfeecbc281e5f927c0acf810f3965f2dc216b3638872594a4d9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/criu-3.14-2.module+el8.3.0+7084+c16098dd.aarch64.rpm" + }, + "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm" + }, + "sha256:95de1777f7e8a734445c5d45e0b77da8b6c41a9b504582ed266d852c677a936b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libuuid-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:964b1d9563e42a176c24cf5c91616ee5cc40de3b1c92038d7fb0392113eaf159": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glib2-2.56.4-8.el8.aarch64.rpm" + }, + "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-slip-dbus-0.6.4-11.el8.noarch.rpm" + }, + "sha256:986683a0edb615a5d45a9c1b0ee3d27f8032c2667cad58d24526085e41010992": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-pam-239-36.el8.aarch64.rpm" + }, + "sha256:98dd1582b8ab27085379a3a7e598a6e261c62f97a5f3689447cbf1d4af9ae46c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libs-0.180-1.el8.aarch64.rpm" + }, + "sha256:98f838a9775269a0f796151bd54d52c7ac91d4bf1365186772f243bfafbb136a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libaio-0.3.112-1.el8.aarch64.rpm" + }, + "sha256:9a1c6f2b18126214e9afa768bbf16b29b89ce3169ccbd4bc169000eed143dcb4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dhcp-libs-4.3.6-41.el8.aarch64.rpm" + }, + "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm" + }, + "sha256:9a89874a5b8326c85c0b34b02c122ffc052b32a12b20354ce95859ac5296a159": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pkgconf-m4-1.4.2-1.el8.noarch.rpm" + }, + "sha256:9a9546fcc510204dc7bcfe61d6ca63f436c01cd9b3f8451c8f07ec4f4fc2ba68": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libuser-0.62-23.el8.aarch64.rpm" + }, + "sha256:9b6fcdd19caee5fe77b9ed17adb3f11769a7109ebcf52d3cb3358d5a9eecc391": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libdnf-0.48.0-2.el8.aarch64.rpm" + }, + "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-2.9-3.el8.aarch64.rpm" + }, + "sha256:9c416279320ab29a8ef4fc32ca60beaec4c8da6054d10695cd2b37af19cd0ee9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libselinux-2.9-3.el8.aarch64.rpm" + }, + "sha256:9da7de3dd0a487abf1bbfb0c9de0b491102fe0796e53a47ee4414003a8b51f33": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/nftables-0.9.3-14.el8.aarch64.rpm" + }, + "sha256:9fdfb9c1ced62828bfcb186bb83caf470b4c14a53611c0ab7f08035333b6dbee": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmodman-2.0.1-17.el8.aarch64.rpm" + }, + "sha256:a006b695c5a4c6caff337a60a2a6b89a12f0dedb4e2fe47b9f1e68d2a838508f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpkgconf-1.4.2-1.el8.aarch64.rpm" + }, + "sha256:a07f96031fbe9507a8d6bb0e14cf0783bc615552e4cfb75131672072f5729de8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libxkbcommon-0.9.1-1.el8.aarch64.rpm" + }, + "sha256:a18a228e692988cd11aa0ee7575d620cc20419e51d3bbb9fdbcbdb2e53fe3554": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fuse3-libs-3.2.1-12.el8.aarch64.rpm" + }, + "sha256:a362b50497d2c4b69ffb5664b7573062e1305861861561d497b8796f123c506e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libqmi-utils-1.24.0-1.el8.aarch64.rpm" + }, + "sha256:a3c479a9afd17f2a92acab491af69de3b3f69850ab3f8fca5562c5f530530174": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/oniguruma-6.8.2-2.el8.aarch64.rpm" + }, + "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm" + }, + "sha256:a548d145df38e3afdd4f9476b91a2787278f8c95d5130114393a9850d0fa8e99": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/wpa_supplicant-2.9-2.el8.aarch64.rpm" + }, + "sha256:a6292dd846bc471b22409fc95a5e09c88bcb6176251dc5cc11f4b14a73ddda11": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-8.3-0.2.el8.aarch64.rpm" + }, + "sha256:a681ac2a07ed302c5c3a468f63bf9a447d5f71129dcd74948b5efc51a5e1ba1f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmbim-1.20.2-1.el8.aarch64.rpm" + }, + "sha256:a78481500097111da309fad544d6512b73c12cb0ce14813e1ea4124e9d26dbba": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/ostree-2020.3-3.el8.aarch64.rpm" + }, + "sha256:a840b8193ce9b1b72e3783b9a9bb2ec91947ba3b6f7ac973ae8e0e20a7059117": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shadow-utils-4.6-10.el8.aarch64.rpm" + }, + "sha256:a959efc9ecb3139bf6fa32b25fc4e821aa86230f1577d6acc3de273d26636587": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-event-libs-1.02.171-3.el8.aarch64.rpm" + }, + "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:aa1a6a85493590efb9c0235c15d6a05e8b119f385dc13b3e3abd2315f8c4a6e0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/memstrack-0.1.8-1.el8.aarch64.rpm" + }, + "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/setup-2.12.2-6.el8.noarch.rpm" + }, + "sha256:abfda01b6d377de999efa9c2b4870bf3ba43cd50155f036d13aae0ba4a617565": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libndp-1.7-3.el8.aarch64.rpm" + }, + "sha256:acd4674b3fbe01d6cf94eb18a81cdb00beb73bf3d4a25a28e234f31498f5c389": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-dicts-2.9.6-15.el8.aarch64.rpm" + }, + "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rootfiles-8.1-22.el8.noarch.rpm" + }, + "sha256:ad07261ff4f478be9511f7ee749bfbe8b2ba8e28696c2f561caa20e35c535134": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libutempter-1.1.6-14.el8.aarch64.rpm" + }, + "sha256:adb9e37c63a055bc106a9676c10a85fdedcb4af64ae062249732e158bc0ae9af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/checkpolicy-2.9-1.el8.aarch64.rpm" + }, + "sha256:aeda2c664e2d993e56008f68823d05ec6d7665f2bb65b5f990c2112f0a7f91cb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mokutil-0.3.0-9.el8.aarch64.rpm" + }, + "sha256:af98260ff2c263c9cefcb96d16d200941c1873cda9868b57df51b034066940fe": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-8.0p1-5.el8.aarch64.rpm" + }, + "sha256:b140eb203fe889d1c75ef3b5527033cfeb7a6f0c813638a607c9f10faf52a34b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libelf-0.180-1.el8.aarch64.rpm" + }, + "sha256:b1c9a4ff3d549dd43b97dd53810cddfabd1d1e2fde2c04d52e95e03f69a15845": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmbim-utils-1.20.2-1.el8.aarch64.rpm" + }, + "sha256:b35f92dddd2cd73f7f8d8595ebb197a1c67a214ec2acf960ac673a014f2d9b90": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-server-8.0p1-5.el8.aarch64.rpm" + }, + "sha256:b386b3ec3cb96fe9178fd1d2b245eddff0bdb2742a8f18e25faef1e98c00f42f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-librepo-1.12.0-1.el8.aarch64.rpm" + }, + "sha256:b4fb3d8b0255a5ba9456b61e4f479f2f8355d171263508bbe869af677015fd97": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/policycoreutils-python-utils-2.9-9.el8.noarch.rpm" + }, + "sha256:b5ab26eb9fc10aeaf136dc25284a232860c77dcf470a22361b085ea945373580": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/dnsmasq-2.79-13.el8.aarch64.rpm" + }, + "sha256:b5b1f5f7a02f70db056861813ddcf181f2ebba507cd368fbe2c32f262edf7fc6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-rpm-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:b6805a1506be42f7623d44b286610391a5f0577f963dcd595210591204b8b481": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/slirp4netns-1.1.1-1.module+el8.3.0+7084+c16098dd.aarch64.rpm" + }, + "sha256:b6946db91c0a0b5e39427db028815391dd1e8c7a04faf98bc1031b5490034790": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/virt-what-1.18-6.el8.aarch64.rpm" + }, + "sha256:b705e2abbce31768f9dde08b2e3bb4756f2512ad22ac94f4bb6761c530b66f71": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bash-completion-2.7-5.el8.noarch.rpm" + }, + "sha256:b7955bb1ba7e944f6e5c36713db3bbc570ba0eb8de11ec6a1fa28cfc5c0029c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/freetype-2.9.1-4.el8.aarch64.rpm" + }, + "sha256:b7b68b5c86ca77c738f39387174d59a4a0d30c888eaf72b3c29071be314d3621": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/usbguard-0.7.8-5.el8.aarch64.rpm" + }, + "sha256:b7bc10e9947763df6e6177b3dbbe77c21f55ed60d26c4c28bfe14a98f7e06189": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-2.9.6-15.el8.aarch64.rpm" + }, + "sha256:b7bf71e1c3bb7aaa94da2deefdfd083cf77f7791c1d8cf7b9f3f1f352e4c8993": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/traceroute-2.1.0-6.el8.aarch64.rpm" + }, + "sha256:b83b5cb8c799dea710e0fffc841abf88495a1f3d04057dd699cff2aac610d7d9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shim-aa64-15-12.aarch64.rpm" + }, + "sha256:b847207a13bec4b7fcfaaf3668d93bc5ad40a6477f976e6aeb59ab431545d0c5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-glib-0.110-2.el8.aarch64.rpm" + }, + "sha256:b90ce065d5ea98845733ff06e47d385937f6293ebddf52144c80f5fe1f296307": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/policycoreutils-2.9-9.el8.aarch64.rpm" + }, + "sha256:b93a509fc65dd88761b4f7f21d8a05f1cd22e878ac59eb7d8e1507f5a2376a1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libedit-3.1-23.20170329cvs.el8.aarch64.rpm" + }, + "sha256:b94335960fd37c4f4fd43f30dc4e960d76d9a4983cefb6236163fe2dc1babbfb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-minimal-langpack-2.28-127.el8.aarch64.rpm" + }, + "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/basesystem-11-5.el8.noarch.rpm" + }, + "sha256:b984d8576520272b1011cc46b03c666cd6abc1bf74b428a8781ca58c6287a007": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/acl-2.2.53-1.el8.aarch64.rpm" + }, + "sha256:b9ceb537921c8d98f1e874c0a39cf0c6a606f469be21be151fa119e4b9c7f06a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libsemanage-2.9-3.el8.aarch64.rpm" + }, + "sha256:ba1364539f16d7c8379d7563fd0634651fa8a05b3f7098a21ba96e1f5641f132": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmodulemd-2.9.4-2.el8.aarch64.rpm" + }, + "sha256:ba66a87402ccc8515e164f597f5d254ad9513979fe3ca1ffabf63c915c0daa73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tar-1.30-5.el8.aarch64.rpm" + }, + "sha256:bae965c689b08ce42f10366e4b441504432ac353d30edb8b4b2cfc798069434f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-libs-1.12.8-11.el8.aarch64.rpm" + }, + "sha256:bc0f9bd34ac6a01dd7272b87e1b7a33045ff8c6793cac02fa639dfc9341e8215": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lua-libs-5.3.4-11.el8.aarch64.rpm" + }, + "sha256:bcd19fd35b5f8535ff5bb15db91e2339c9435908c1123d5e2272fcae15a62260": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgudev-232-4.el8.aarch64.rpm" + }, + "sha256:bd03a8a056bc9d2df361688583521f5f656e83fc893b90d349b6282178f9330b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-clients-8.0p1-5.el8.aarch64.rpm" + }, + "sha256:bdcb042c2ff87e5c07685f70e04b051197199bd8465c5e26ceda82a13977d040": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iptables-1.8.4-14.el8.aarch64.rpm" + }, + "sha256:bf267d9571cf568375e261d593236750f400ac536c1c818513106482ebc3fb10": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsigsegv-2.11-5.el8.aarch64.rpm" + }, + "sha256:bf6a9ab5cdf3c0a71b634201fe260b1362d8eeb82fe33ccd220dc12c9396ec27": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/protobuf-3.5.0-13.el8.aarch64.rpm" + }, + "sha256:c0f53020ecdb8eefb21795b0acf589334e89a9ef339a84d42e61999f53c67d18": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/jansson-2.11-3.el8.aarch64.rpm" + }, + "sha256:c1b5c4668331e8b05a08e7de432cbfb75f8072401bb6651a24e43f64eff8dcc4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsecret-0.18.6-1.el8.aarch64.rpm" + }, + "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm" + }, + "sha256:c22f0d40fbdaaceec711be0cecc122fac4570d126914ce3694a3d6a1178bd487": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gpgme-1.13.1-3.el8.aarch64.rpm" + }, + "sha256:c253486979dac9a4c79d0d8b9fa5df0012b3a4d7567ee7c63c9d726da35c8355": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/fuse-overlayfs-1.1.1-1.module+el8.3.0+7121+472bc0cf.aarch64.rpm" + }, + "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/readline-7.0-10.el8.aarch64.rpm" + }, + "sha256:c321e3a0253fb2691035135b3d3740faa76b8e9c84a0378f480ff85ddd9f16bd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efibootmgr-16-1.el8.aarch64.rpm" + }, + "sha256:c5098f41849af65b808baac594539440fcdffea7afce4239eb41885eccfd67e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/firewalld-0.8.2-1.el8.noarch.rpm" + }, + "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm" + }, + "sha256:c633b98b4dbf96674a69573404819c34d66eb7e19820283fc588f6b10b0e3fc8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-build-libs-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:c82ca1c0ef4b89f75e8e7edbbae4f3eeb2720a4abd56b0927928cff2d9721186": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-utils-2.9-3.el8.aarch64.rpm" + }, + "sha256:c880062730d3fdbb06e5a9cd47929a5009023262686edfe4d6ed9daa54038e5f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/timedatex-0.5-3.el8.aarch64.rpm" + }, + "sha256:c88d1656b8001ff79175f7d3b7818681e40e54e8fec6fb8556ba8141d437fcfa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.aarch64.rpm" + }, + "sha256:c8a28b4587888435c51f6d1ce42f48b08fb0256e4029ea569e9a02adcb82c85a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsepol-2.9-1.el8.aarch64.rpm" + }, + "sha256:c9b3c6dcb4133c3051e3f75978f994aae4c0ad84dd1abbae7fcba497ee524603": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-firewall-0.8.2-1.el8.noarch.rpm" + }, + "sha256:ca3a7051dfa4e83c4200d2fa563b92ba8d1d0e3b7d04e4c2e72c7e318884d4e1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lvm2-libs-2.03.09-3.el8.aarch64.rpm" + }, + "sha256:ca87249f90bac96902d18c11a1f8c80566fa090c6473226bdd147e07e3ed21ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/krb5-libs-1.18.2-3.el8.aarch64.rpm" + }, + "sha256:cb7a8e0798d45987fe10eaec018e88cf518aa14000d6e306a687db02c3371c7e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/containers-common-1.1.0-1.module+el8.3.0+7097+8d4f8cb4.aarch64.rpm" + }, + "sha256:cc56ab0a8b45859e195464f4514fc61e84ba44da5d112c08ba5b4149a872778c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libluksmeta-9-4.el8.aarch64.rpm" + }, + "sha256:cc7e751a62f9a28b82df0bce0ecfb050364b8688ef69473f1910909e44c5eb98": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libseccomp-2.4.3-1.el8.aarch64.rpm" + }, + "sha256:cddf8fbd1021116ee137a080d50a06ecd9269beb5042aee5782ca68bab62acf3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/keyutils-1.5.10-6.el8.aarch64.rpm" + }, + "sha256:ce6960fa7831611815e163864a91b70b0ab1ef0f446c2cad1eec13404822cad5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-libs-0.19.8.1-17.el8.aarch64.rpm" + }, + "sha256:ce8c92fa2bef1770f44992db24e1cb8cc850feab03a74cf0ebf741ecb0d160ea": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre2-10.32-2.el8.aarch64.rpm" + }, + "sha256:cf5d9432afbd324b457d2a02eb9b270ff358b1bfcf28bee57ffe7b84df6e65f4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/protobuf-c-1.3.0-4.el8.aarch64.rpm" + }, + "sha256:cf8fdbfcd359aac8bf55500c24e6843baafe8fef35019126c3616806b41415b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ima-evm-utils-1.1-5.el8.aarch64.rpm" + }, + "sha256:cf9a0bbaa7bd075d2af532586ee93ab92b96d9859f53a57f85cd7e0309f8fff6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/zlib-1.2.11-15.el8.aarch64.rpm" + }, + "sha256:cfa188d39884fd4ba36d27e8fb25aed9dbd26efccffbfd01a24c2c580fdb96f1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openldap-2.4.46-15.el8.aarch64.rpm" + }, + "sha256:d173b35182f28b9dd48e4a942f2a20c659bee2f9ac234b60cf8b995aa2421382": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libblkid-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:d1ad3defad626f2b7f5d7710c8166293147603e3376c23c21a28618316af5b84": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/clevis-systemd-13-3.el8.aarch64.rpm" + }, + "sha256:d20f4bf44fcc90509e7afca364eae0a55c8f33df2f8a69e266f5fcd4b5fa2e4b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.aarch64.rpm" + }, + "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:d3fb5a473c44cd8ae6b94d6bf3fc552553d8f4ef28eed439658ea38990ab9db5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-libs-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:d4410304f8470ecad6043d55d6bd9a8efc68c24584e90ed451d74762c6f9ae62": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rpm-ostree-libs-2020.2-2.el8.aarch64.rpm" + }, + "sha256:d4424a9c946da1eab876298af8f772d5aab1109a1f551ac2f1cd10ee849568de": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-2.28-127.el8.aarch64.rpm" + }, + "sha256:d4467ba499fe1ddd82746ad00d7e86bea59c4827fe1ff8c05132bad1f93ddb7f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-239-36.el8.aarch64.rpm" + }, + "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:d61e6972f58a90d531ffbf4484e7253cdde3b462035be7938b2f6ac8e657a5a3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tpm2-tss-2.3.2-2.el8.aarch64.rpm" + }, + "sha256:d695df94220c2ef990e502123b3bd8ede8fcfb4f738346dd98d999559b01b6b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-0.3.14-4.el8.aarch64.rpm" + }, + "sha256:d6aa17908468b5e2095526664fce6627dec7a02c26625339c14b9278cc39d4a6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libfdisk-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:d6ab7c8790cd6c9a137d908d840c51c547e950d25f6ab8af3c9ad3899ff6c044": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpwquality-1.4.0-9.el8.aarch64.rpm" + }, + "sha256:d74da38b942dc95929b21c8fcf2c5d2fb4468b78ed14e7a4bcbe933998be4deb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-modules-4.18.0-221.el8.aarch64.rpm" + }, + "sha256:d82c81115472a70d60d2320e254762c76a583ad2190ad45068476c77512588af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm" + }, + "sha256:d868f3e9b48e1acc5c7674292619f1e80a2a2617aa1ab75d7cb4665495bdc654": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-subscription-manager-rhsm-1.27.9-1.el8.aarch64.rpm" + }, + "sha256:d890d028f59e2553730fad3dbea0e1a245c92c24836513fa2281194b1c90b53a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/procps-ng-3.3.15-2.el8.aarch64.rpm" + }, + "sha256:d9a4628bd8d3e776f626be4cb5edec305c2ff894d7c5cc7e33e212545721053a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm" + }, + "sha256:da4b9bfad26d559485ade669556512acfe93ba23d204f2556bac82c09401b4e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libunistring-0.9.9-3.el8.aarch64.rpm" + }, + "sha256:da4d193d5f0caf7a196f3bd4aa1225072b522521d82fca8edecc6546b5460ac6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.aarch64.rpm" + }, + "sha256:da671d59c65465dab426361abaaf42c3f3c0216e936cded295719e368066bc6b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iptables-ebtables-1.8.4-14.el8.aarch64.rpm" + }, + "sha256:da7daac31c7c5f9711e225b02f2a639df5c6d25ef49b1f8ea0799e4e2b13b14c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libvarlink-18-3.el8.aarch64.rpm" + }, + "sha256:da92fada5920a24577f614e1167e3b339d516ca646346c04c71ef2bd97295653": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ipset-7.1-1.el8.aarch64.rpm" + }, + "sha256:daf36ee86ec6001770ae68bdd82409526faf4b9b1313a6b74fb54cfb98ff571e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/npth-1.5-4.el8.aarch64.rpm" + }, + "sha256:db1fad3c2d8735e69084bd4b09ea963938e4dde2f2e096dc7a4ce146f18b7ab0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fontpackages-filesystem-1.44-22.el8.noarch.rpm" + }, + "sha256:db7899290e3f78a9cff3796d1181dc0ef3d837b3c80e715c7ca85e01a811093a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnftnl-1.1.5-4.el8.aarch64.rpm" + }, + "sha256:db817b5d2f9d678fd0fee30e52ed080fdb5c9dd723cd57f7d6b0133293502047": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efivar-libs-36-1.el8.aarch64.rpm" + }, + "sha256:dc37d12420a2593c46619e9b67a0115255a0c7334f547871ce08e329bf5d15a2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-1.12.8-11.el8.aarch64.rpm" + }, + "sha256:dcda73e0ea7b5d2710528fc6df135d435281d1f4d2be0018bb6f1858e818d599": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cpio-2.12-8.el8.aarch64.rpm" + }, + "sha256:dd379385bd1d2e05f50c4795e5a0eff9030fdac0fd2579bb4b56233257672b27": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dejavu-sans-mono-fonts-2.35-6.el8.noarch.rpm" + }, + "sha256:de0ef345ee3912dd38bd8b652f8698e08ec459e8f0e2f4383e837ac2232d3dc2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-wwan-1.26.0-0.2.el8.aarch64.rpm" + }, + "sha256:deaa0958c9fb57773dfdf74567b658d273cea81186b913aa1473867dc07b335b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dmidecode-3.2-6.el8.aarch64.rpm" + }, + "sha256:df72c0be7eed3939e5d7c28fdbdd66ef9e205df7cb00f027403c46e923568c13": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tpm2-tools-4.1.1-1.el8.aarch64.rpm" + }, + "sha256:dfaf74e2116ee30d1882b3461de90d3fb6faad4468eb0678f845d105b4439a83": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bind-export-libs-9.11.20-3.el8.aarch64.rpm" + }, + "sha256:dfdec57ff520511d1d4ef9d913d90fc8d6ac98685cbc12fb568c8980f2a73f1a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libarchive-3.3.2-9.el8.aarch64.rpm" + }, + "sha256:dfea8e48e0cf3d8984237e3d5fb715c7edd9b1f8db03faaefc42a8046b45dab8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbxtool-8-5.el8.aarch64.rpm" + }, + "sha256:e08305aecd924631284ddaeae39a83cca85495389d4ddef75410a32af49f946d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fuse-libs-2.9.7-12.el8.aarch64.rpm" + }, + "sha256:e085cf8bddcf09c908d925688dae077300d2964b40bd060af252d26a963cfe50": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-common-8.30-8.el8.aarch64.rpm" + }, + "sha256:e09e950b0a0842577364565380ba40e8c4f027919dc880378b606c2dafc5693b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libmaxminddb-1.2.0-10.el8.aarch64.rpm" + }, + "sha256:e0faa8a6bc43432619a2b6a26e9f1323d30cda945580d8bc0f6c2fe742b71924": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gawk-4.2.1-1.el8.aarch64.rpm" + }, + "sha256:e160910d31a37afeea87df306264fb1f727cbca574d2c234cdca856f5311fbd6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gobject-introspection-1.56.1-1.el8.aarch64.rpm" + }, + "sha256:e2c4ac0f7abf75cbcc7a6fb35412820c267f1a8ce614f41b60d901918c4616d5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/nettle-3.4.1-2.el8.aarch64.rpm" + }, + "sha256:e426534c59b3a35068877d324dd34d643ad7c84d2c406b2e6502ac6c2a367d39": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-5.2.4-3.el8.aarch64.rpm" + }, + "sha256:e4ec1966f9bc7cbc898fe7550600ae3e9e4f8afbcdd3f6e74afe1965247653ba": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/keyutils-libs-1.5.10-6.el8.aarch64.rpm" + }, + "sha256:e55bf252e792f27f076101e94dfbbac97dabeea0f7893a4cb9b111a0b72d187f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libreport-filesystem-2.9.5-11.el8.aarch64.rpm" + }, + "sha256:e5f82f102f51d88aa517bbebd170795a571b7ddc3036574b92b498cc13704d98": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcom_err-1.45.6-1.el8.aarch64.rpm" + }, + "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-policycoreutils-2.9-9.el8.noarch.rpm" + }, + "sha256:e6bcb623a411ed404c596a22b5fcd79080b3444d948b819f8901f92a36683e70": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fwupd-1.4.1-1.el8.aarch64.rpm" + }, + "sha256:e82699d15e4e6ff7825629d7c1c8a0f50a5519b6e5328472de91a0deddb9cf3d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gzip-1.9-9.el8.aarch64.rpm" + }, + "sha256:e85c24b0e9d047763e2c8e673bb6dc579b55c650e8f19d14c9010f3dc5cd0ccd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnfnetlink-1.0.1-13.el8.aarch64.rpm" + }, + "sha256:e86726a5ea5410dea25a80ef4d17efcba11fb4ffea2421c577626d9e29eafe80": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/clevis-13-3.el8.aarch64.rpm" + }, + "sha256:e8a5768895f9ef4a1fdc3740a0570e6b972f9ee6cc5e6d3bd38eb2bf80ccf847": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxmlb-0.1.15-1.el8.aarch64.rpm" + }, + "sha256:e90c57ced08b8d62a8ab79f5884c99425b007c560c878288a3917b453c40d074": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/runc-1.0.0-66.rc10.module+el8.3.0+7084+c16098dd.aarch64.rpm" + }, + "sha256:e9487db2fdce1f494ee1582787a1afc1ea4e0429189db8be0ddbb0af2676c4b6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librhsm-0.0.3-3.el8.aarch64.rpm" + }, + "sha256:eaf3c7104d3ebd0cdda3d6ce44f4c79eec0a8ce3ce71cbb0d9dfe716f58a105d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-tools-1.12.8-11.el8.aarch64.rpm" + }, + "sha256:ebcaa2d2ec8ddaa66d042a208ccee6b13735ffba04fe3f326954cd76fa4f5910": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iputils-20180629-2.el8.aarch64.rpm" + }, + "sha256:ec40be9e0b2bb03f7b057a7a9342ffbd86129d58828fb310f445bc506261eb0e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.aarch64.rpm" + }, + "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm" + }, + "sha256:ed28e1e31109e27ce1c676914364c9f1dd46b71d00cb4cf13931f0fec6cf6978": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtasn1-4.13-3.el8.aarch64.rpm" + }, + "sha256:ee45e2247336fa1e822e974aae932a2bb638ccdfcd30fae9bfa77705f2e2e685": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libnet-1.1.6-15.el8.aarch64.rpm" + }, + "sha256:eea9359070225c205cd9233c98fc3e3eaa41848148b726a4ec8414575ae3730e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rsync-3.1.3-8.el8.aarch64.rpm" + }, + "sha256:f07b1f40ebb1fbe5c24e68a38b5f768a21e2ec2254d4bd8ff61fb0bde72f64ce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.aarch64.rpm" + }, + "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm" + }, + "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm" + }, + "sha256:f35c0da3cff05ded33c0cb4f202dbb52a5caabec8b1897d5057df83c284d62f1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsmartcols-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:f4782c2ae7e7261f50f63e6ed729f5aeb9ac62614c77c9e09ce9b6f43ef3fe1c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-wifi-1.26.0-0.2.el8.aarch64.rpm" + }, + "sha256:f4e63e7eedc0266a575eb6107f41c5f20ca0505a0e80145c21b9741674d5c0b5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libstdc++-8.3.1-5.1.el8.aarch64.rpm" + }, + "sha256:f4f5cc3080dc150c47b27383a344937fe17a679cb7046ca76165654d4e207a0b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iproute-5.3.0-5.el8.aarch64.rpm" + }, + "sha256:f700797810fb2bdbba5a0b31e10c361360a87bac1a282da109273194a25bf6ef": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-2.2.20-2.el8.aarch64.rpm" + }, + "sha256:f769edf78f42bae1bd183a6f4a49d74822db2b5e830147178d197be1cd67a306": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-network-049-89.git20200625.el8.aarch64.rpm" + }, + "sha256:f7ccbe0d7b4a61b5a47253f168f8efcdbf41ad0755e678f9edcd2f6a69c93c7d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-5.33-16.el8.aarch64.rpm" + }, + "sha256:f7de2bbb3653c3033d43f645ac26e91c788527c0b4d5e7238dea54c3adc6f1a1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/initscripts-10.00.8-1.el8.aarch64.rpm" + }, + "sha256:f847957437e7f24844930c4a3ff64c5f7877f083553f48eeadca3c5f5e5c728e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pigz-2.4-4.el8.aarch64.rpm" + }, + "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm" + }, + "sha256:f96bc0d82d4c6934659c23a6771515e78bf2252ed24d32c78001260ee6e36c8d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-daemon-1.12.8-11.el8.aarch64.rpm" + }, + "sha256:f99f5edde9ad4574b84264c467420c910b31f78683fbf1b63d106a7e6c9d64a3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-libs-6.1-7.20180224.el8.aarch64.rpm" + }, + "sha256:fa80a7e82e231dc77b3e44edd2cbf5b3d1657e009e59f15bbe8d50a4290b7c82": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmetalink-0.1.3-7.el8.aarch64.rpm" + }, + "sha256:fac29887224d91e8190a569b3ac5be1168034f36c9c234576ea3cefe686e46cd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdnf-0.48.0-2.el8.aarch64.rpm" + }, + "sha256:fb263177eee60c26b7acaa76cb640c3d7ab6928e73c8af80b2111a247bd61ece": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-lib-0.3.14-4.el8.aarch64.rpm" + }, + "sha256:fb56b7a416e12da0782ae8ba7396bc03a2f8844c2efcb5df3f8b9e74eb8b8059": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxml2-2.9.7-8.el8.aarch64.rpm" + }, + "sha256:fc51460213b3bf5b67f08f2695aae8d728f614adbbacb917a0825e4ebfbc3e68": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hardlink-1.3-6.el8.aarch64.rpm" + }, + "sha256:fd202f857b3c5a15b8f66f86fd515c44a47c87c028d7db766661758dc3673436": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsysfs-2.1.0-24.el8.aarch64.rpm" + }, + "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm" + }, + "sha256:fddf61e9024c41073442ccff0c9990fa004e9b183f391c4e3cf3853e5ae6062c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-0.19.8.1-17.el8.aarch64.rpm" + }, + "sha256:fea4eb54fe59451b76fb40b9bd15ff41f0f51bb7371f94b2f5df572ef917d037": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre-8.42-4.el8.aarch64.rpm" + }, + "sha256:ff9fc6467a4c2fd0c22c419a9cdb7a524d1c69d0c87aa09f31728bef9f692f76": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcomps-0.1.11-4.el8.aarch64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:b984d8576520272b1011cc46b03c666cd6abc1bf74b428a8781ca58c6287a007" + }, + { + "checksum": "sha256:d9a4628bd8d3e776f626be4cb5edec305c2ff894d7c5cc7e33e212545721053a" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:518e5412ce19ab733f62c334da8c5545a212c4c971d513eb95590b08a14e3772" + }, + { + "checksum": "sha256:796cac51b2c1092c4faad372717c6ddc37cad9757111a41e531fe0a8d6c0a9ea" + }, + { + "checksum": "sha256:40096d3516d115e83bc2aa2b5877708f4511961d524e03ce562f9f1872fa27ab" + }, + { + "checksum": "sha256:2d84f6765b1645f867527f493b6153470602a80c75f81545bf619aa92127e4da" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:6a6aa18217ae72a0b33e4302da927e6ded92520cbf4d48a5030d4a2f95eeb5d8" + }, + { + "checksum": "sha256:15c33124ac0479d34f1f58d2bd24cc52db7089b4a8681c276a3fd0d6dfe4fc72" + }, + { + "checksum": "sha256:e085cf8bddcf09c908d925688dae077300d2964b40bd060af252d26a963cfe50" + }, + { + "checksum": "sha256:dcda73e0ea7b5d2710528fc6df135d435281d1f4d2be0018bb6f1858e818d599" + }, + { + "checksum": "sha256:b7bc10e9947763df6e6177b3dbbe77c21f55ed60d26c4c28bfe14a98f7e06189" + }, + { + "checksum": "sha256:acd4674b3fbe01d6cf94eb18a81cdb00beb73bf3d4a25a28e234f31498f5c389" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:689577d74311a7327aab6fe412a803d72b790957e863b6b78a8621a040306919" + }, + { + "checksum": "sha256:7d3ddbaae06c7fb8d24449e11b418ee07bdd9e07f7f0af57741d220b97228557" + }, + { + "checksum": "sha256:41cc2d507fdfbba939c00164a563e770d466f992cb64d3c51a79aec20b31d6d1" + }, + { + "checksum": "sha256:dc37d12420a2593c46619e9b67a0115255a0c7334f547871ce08e329bf5d15a2" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:f96bc0d82d4c6934659c23a6771515e78bf2252ed24d32c78001260ee6e36c8d" + }, + { + "checksum": "sha256:bae965c689b08ce42f10366e4b441504432ac353d30edb8b4b2cfc798069434f" + }, + { + "checksum": "sha256:eaf3c7104d3ebd0cdda3d6ce44f4c79eec0a8ce3ce71cbb0d9dfe716f58a105d" + }, + { + "checksum": "sha256:6fbfaa1e1b1bb4e2362cf3dce0f59a94a78b457904234cbccbe6afacde311c26" + }, + { + "checksum": "sha256:057b6632870b8c3c0c950a19092ef2f9749bf3d1a37ccb083bf42ca6404db066" + }, + { + "checksum": "sha256:3a684fd5f1b1d417c6c3e9d1f0d5b846138aa06450ff246425d43d4a20bd619e" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:2efbfbcce7ef24e433d3c304b6b6b022d1b1b8a972969da1adb1c3c85f9625a7" + }, + { + "checksum": "sha256:4d8edaa317fd508226bb5421ef423470f3e9153167222dee7bf8fb2346b7875b" + }, + { + "checksum": "sha256:3256e78263462d5d7ab37b696992aedd6f810431641ce8d1e1bc198c797b402b" + }, + { + "checksum": "sha256:da4d193d5f0caf7a196f3bd4aa1225072b522521d82fca8edecc6546b5460ac6" + }, + { + "checksum": "sha256:c88d1656b8001ff79175f7d3b7818681e40e54e8fec6fb8556ba8141d437fcfa" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:b140eb203fe889d1c75ef3b5527033cfeb7a6f0c813638a607c9f10faf52a34b" + }, + { + "checksum": "sha256:98dd1582b8ab27085379a3a7e598a6e261c62f97a5f3689447cbf1d4af9ae46c" + }, + { + "checksum": "sha256:77b56d825eb31ca191254d17a4c9399e3c4fe8af42a528c2ad4424bfd865b82d" + }, + { + "checksum": "sha256:f7ccbe0d7b4a61b5a47253f168f8efcdbf41ad0755e678f9edcd2f6a69c93c7d" + }, + { + "checksum": "sha256:3ee66f993ee567b2457a221ed364ae4f8dfe783a5f0e723d9169f95d12f9e696" + }, + { + "checksum": "sha256:634a3cbf0b334e901b6887176fa1b98246be7c4010b4c21cb6fd8fa7aa5fdf94" + }, + { + "checksum": "sha256:540fa90864b4eb0176b56e0c5e9d7bc6130985288ae297b4c38950381b08a827" + }, + { + "checksum": "sha256:0c851bb11d2bce1ccb4804a958d21c1082267b8bc2f7f825e5236857e1f35274" + }, + { + "checksum": "sha256:37fe346ef6d0ddec5894cfcf96d04ca41924a16a8199814ce8ae7f125183974d" + }, + { + "checksum": "sha256:e08305aecd924631284ddaeae39a83cca85495389d4ddef75410a32af49f946d" + }, + { + "checksum": "sha256:e0faa8a6bc43432619a2b6a26e9f1323d30cda945580d8bc0f6c2fe742b71924" + }, + { + "checksum": "sha256:3f5765cebcac288cc1b5b118acfbc2016eda7b81ad73923f6f9c21e4731eb0d9" + }, + { + "checksum": "sha256:8ef2fcbe5a8d6e7d393d28838ff458336d16e006bc7d19921f460eb105b88570" + }, + { + "checksum": "sha256:fddf61e9024c41073442ccff0c9990fa004e9b183f391c4e3cf3853e5ae6062c" + }, + { + "checksum": "sha256:ce6960fa7831611815e163864a91b70b0ab1ef0f446c2cad1eec13404822cad5" + }, + { + "checksum": "sha256:964b1d9563e42a176c24cf5c91616ee5cc40de3b1c92038d7fb0392113eaf159" + }, + { + "checksum": "sha256:d4424a9c946da1eab876298af8f772d5aab1109a1f551ac2f1cd10ee849568de" + }, + { + "checksum": "sha256:4d8d164f8bd56b7ab6252f009b38525f39fb161c03713414e1583894a265c50a" + }, + { + "checksum": "sha256:91c58481a7e4a9b7f9e0e14844fa73047395c75df95d35afa3b0d8ef3f584491" + }, + { + "checksum": "sha256:19efe6f125c00123ccc6d96e51eb61e711f3ea01f32d18cce14d3b614217c58e" + }, + { + "checksum": "sha256:f700797810fb2bdbba5a0b31e10c361360a87bac1a282da109273194a25bf6ef" + }, + { + "checksum": "sha256:0b4564ad3a799af1a4a0de33b0952f6056d942b0cfa39b73e9375bf0c05b3191" + }, + { + "checksum": "sha256:3bf230c85711b285afb968850d7e98eb6b068a06e7ca40e94203e388d8447f48" + }, + { + "checksum": "sha256:c22f0d40fbdaaceec711be0cecc122fac4570d126914ce3694a3d6a1178bd487" + }, + { + "checksum": "sha256:81d2e21dad970c08798c0df00bbda21acf165a370f9612e0d14ce69e5dd6c5c3" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:2921d3aa14a509d271ca35256903c142c30f088f7dc889a4c4e15b26316ef5c0" + }, + { + "checksum": "sha256:126d980678e5b687c775cf857b4013306f1a761353370258a0f04d92a3553f92" + }, + { + "checksum": "sha256:5eddb5c1febbe6e58491f8e9ee8fc9897298b307e0357c01f49d445cf25283c9" + }, + { + "checksum": "sha256:e82699d15e4e6ff7825629d7c1c8a0f50a5519b6e5328472de91a0deddb9cf3d" + }, + { + "checksum": "sha256:fc51460213b3bf5b67f08f2695aae8d728f614adbbacb917a0825e4ebfbc3e68" + }, + { + "checksum": "sha256:cf8fdbfcd359aac8bf55500c24e6843baafe8fef35019126c3616806b41415b3" + }, + { + "checksum": "sha256:3f7e5e72ab9e18dbca936b40734c91520242a49a9e98a2f2589f397faa6ad8e8" + }, + { + "checksum": "sha256:0fd7dd5b060e7533144ad7a3cae2453ad6f87650010f328879b10c7c4cba0c04" + }, + { + "checksum": "sha256:36aece7b7a65785985bf0b98701514f12735a87517b8578a3eb3710f82ba4765" + }, + { + "checksum": "sha256:1143ac623a74d7feaaaf293c18d942d243248f6356628f87216670c10d11687b" + }, + { + "checksum": "sha256:10ac3bf7565725a55b0aef56f65befd0d320219fc83adfab6e564c19f8c44bd6" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:e4ec1966f9bc7cbc898fe7550600ae3e9e4f8afbcdd3f6e74afe1965247653ba" + }, + { + "checksum": "sha256:1091a799d34a42d2e42ac462b4f979a55d17513eca5a00bad9bdba56cca83357" + }, + { + "checksum": "sha256:6f87f305a3e0e0faf69c2a9d4f277958ca33e85b72c6e4f77a365a5f60ced3d3" + }, + { + "checksum": "sha256:4a27cd4496ebdba821b3c7692eeb0c0fff28c6af69fe4fe9e4bf52511639bd6a" + }, + { + "checksum": "sha256:ca87249f90bac96902d18c11a1f8c80566fa090c6473226bdd147e07e3ed21ec" + }, + { + "checksum": "sha256:7c014b54f7929348f614f8f4eb7a1552b8565c0a57f3a75ff6471dc05f30cafe" + }, + { + "checksum": "sha256:98f838a9775269a0f796151bd54d52c7ac91d4bf1365186772f243bfafbb136a" + }, + { + "checksum": "sha256:dfdec57ff520511d1d4ef9d913d90fc8d6ac98685cbc12fb568c8980f2a73f1a" + }, + { + "checksum": "sha256:0f1a02850c102e2a186787504f965c0c10d6432b9f600c18bc2f520e55f04a8c" + }, + { + "checksum": "sha256:6f2bfbe0f23d3b233aacb72c153ee133839353325f028321eb5ea38b0dc06c02" + }, + { + "checksum": "sha256:d173b35182f28b9dd48e4a942f2a20c659bee2f9ac234b60cf8b995aa2421382" + }, + { + "checksum": "sha256:2cddadff38ccef2364a7e40af0e1d9b3bf9c06869c15ceeb655f3cfa431c2083" + }, + { + "checksum": "sha256:62a2878605ca0415fd60adcff4c7068d855d20737498a968fabc646610ccbe5c" + }, + { + "checksum": "sha256:e5f82f102f51d88aa517bbebd170795a571b7ddc3036574b92b498cc13704d98" + }, + { + "checksum": "sha256:ff9fc6467a4c2fd0c22c419a9cdb7a524d1c69d0c87aa09f31728bef9f692f76" + }, + { + "checksum": "sha256:86ae7501bdf0149728879f488dd4c86907216cb5b021192347a5c10a55382931" + }, + { + "checksum": "sha256:2809ad51c6eb6c9a54d64cccc2cd948f6fd4207f32b4493b3f4a9bd0886c894b" + }, + { + "checksum": "sha256:84e7102978d76d80aa40c43efcc71c1e54e819195132df921a8c13cec54328da" + }, + { + "checksum": "sha256:621e96e91103f2f701e4ac3b8b8b6ef9aab4db5ab8fb3e141eb02e3f328aed79" + }, + { + "checksum": "sha256:fac29887224d91e8190a569b3ac5be1168034f36c9c234576ea3cefe686e46cd" + }, + { + "checksum": "sha256:058822931f4c34c18675116c1b02b718de4044c1019acb0d5f97417f00a30ba7" + }, + { + "checksum": "sha256:d6aa17908468b5e2095526664fce6627dec7a02c26625339c14b9278cc39d4a6" + }, + { + "checksum": "sha256:4a40a1538c8a488f32476f96d2461c3b792eb0cf5acb998e397d8a9cef8e5461" + }, + { + "checksum": "sha256:3b607f0dbedecb25239e22c1f553c8d70db9d2206a877fa07567fa1a49e233d7" + }, + { + "checksum": "sha256:8498846918c7bc7a20553340434cfbfb0d19185adcd0ff52866c6506ab8f747d" + }, + { + "checksum": "sha256:53fa2fd6a138d00c697b827a77bcc25ec498b1d49bb04ef80594e81ccabc165d" + }, + { + "checksum": "sha256:5a05f1126ed38f752af247dcdf7c958e738b935b8b6d942fd42f423768f05255" + }, + { + "checksum": "sha256:2dc8e2f52451d1a11b16bbb389a24c58b61a1ba804ee777f9d06dbe4e1fcf6e5" + }, + { + "checksum": "sha256:83301ca502322e0634173460bf8fa35572c36ab8cc2e6e600bf9980f845fc857" + }, + { + "checksum": "sha256:f07b1f40ebb1fbe5c24e68a38b5f768a21e2ec2254d4bd8ff61fb0bde72f64ce" + }, + { + "checksum": "sha256:704e1dc996a17815c6dcf7029c0ddb2849d40feaab6e9b9c687af9d95fef825c" + }, + { + "checksum": "sha256:fa80a7e82e231dc77b3e44edd2cbf5b3d1657e009e59f15bbe8d50a4290b7c82" + }, + { + "checksum": "sha256:ba1364539f16d7c8379d7563fd0634651fa8a05b3f7098a21ba96e1f5641f132" + }, + { + "checksum": "sha256:0e33000d382305bd26466545abaadf22c31d1c7d95b4c0475606348df68c4bfc" + }, + { + "checksum": "sha256:26b14d8f226962ce712bbccfb245843759e835a24a139eacae86d680043a85a7" + }, + { + "checksum": "sha256:4874e739ed37bc6a5bfdb6069d4620e5f7efe01d60eb9fd2550c550167c99990" + }, + { + "checksum": "sha256:471663fca7e3f609834368d69d8f1f469cfc0d3f3e95dc2b79381722d0368edc" + }, + { + "checksum": "sha256:435a2be84a2b38372965dbd60ffed0ed38a616b8100859787a8bb3b19d9fc4d9" + }, + { + "checksum": "sha256:6557d001315e85ac123b1378c5aafb81428e2383debcacf3f91c55476cfc48eb" + }, + { + "checksum": "sha256:d6ab7c8790cd6c9a137d908d840c51c547e950d25f6ab8af3c9ad3899ff6c044" + }, + { + "checksum": "sha256:2d74e0ab14393921c6160fda8dd533b58c0348acdf5ee5c306ffc64221700de2" + }, + { + "checksum": "sha256:e55bf252e792f27f076101e94dfbbac97dabeea0f7893a4cb9b111a0b72d187f" + }, + { + "checksum": "sha256:e9487db2fdce1f494ee1582787a1afc1ea4e0429189db8be0ddbb0af2676c4b6" + }, + { + "checksum": "sha256:cc7e751a62f9a28b82df0bce0ecfb050364b8688ef69473f1910909e44c5eb98" + }, + { + "checksum": "sha256:c1b5c4668331e8b05a08e7de432cbfb75f8072401bb6651a24e43f64eff8dcc4" + }, + { + "checksum": "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc" + }, + { + "checksum": "sha256:c82ca1c0ef4b89f75e8e7edbbae4f3eeb2720a4abd56b0927928cff2d9721186" + }, + { + "checksum": "sha256:140146ebcbadd9b0f2aa5c2fcde5c93888f2d84ce61a2a4cf148ef435d1ba410" + }, + { + "checksum": "sha256:c8a28b4587888435c51f6d1ce42f48b08fb0256e4029ea569e9a02adcb82c85a" + }, + { + "checksum": "sha256:bf267d9571cf568375e261d593236750f400ac536c1c818513106482ebc3fb10" + }, + { + "checksum": "sha256:f35c0da3cff05ded33c0cb4f202dbb52a5caabec8b1897d5057df83c284d62f1" + }, + { + "checksum": "sha256:2397506a63455e543b201938f605e687de5590d9a06282824e2f6bfdf5e0f149" + }, + { + "checksum": "sha256:268d9232f0853037100432e9363c659cf99927e03f759fd4884643b560710cd6" + }, + { + "checksum": "sha256:3ee6a4f61935c2f0698ad2c4834a5864920a1e48d55c7800da7c382249895e39" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:f4e63e7eedc0266a575eb6107f41c5f20ca0505a0e80145c21b9741674d5c0b5" + }, + { + "checksum": "sha256:ed28e1e31109e27ce1c676914364c9f1dd46b71d00cb4cf13931f0fec6cf6978" + }, + { + "checksum": "sha256:481bbd6d73415d437a73eee7977ec370299acdac44b215a026652debba31783d" + }, + { + "checksum": "sha256:da4b9bfad26d559485ade669556512acfe93ba23d204f2556bac82c09401b4e7" + }, + { + "checksum": "sha256:01e486a3be67325e9692e909f5c6534137ee6a6df185ba2c09d4d50fe6c738f6" + }, + { + "checksum": "sha256:ad07261ff4f478be9511f7ee749bfbe8b2ba8e28696c2f561caa20e35c535134" + }, + { + "checksum": "sha256:95de1777f7e8a734445c5d45e0b77da8b6c41a9b504582ed266d852c677a936b" + }, + { + "checksum": "sha256:532d46a4c0e68bd45eabc3e2ba6d570880344044e1034f5f347b37c470d0dced" + }, + { + "checksum": "sha256:876ffb285aaeddb2c18ae32527bd4ee202710bd8e18d5b410af22937646dcdec" + }, + { + "checksum": "sha256:fb56b7a416e12da0782ae8ba7396bc03a2f8844c2efcb5df3f8b9e74eb8b8059" + }, + { + "checksum": "sha256:7864fbc866ae5a3e59b4f0f114b77ff52b55e76c5388a917f82a6097f02a4db7" + }, + { + "checksum": "sha256:19d1de27d2f62b4a55735233807f70a1e8ff7551fed97ee8650dbd09c1ef50ea" + }, + { + "checksum": "sha256:bc0f9bd34ac6a01dd7272b87e1b7a33045ff8c6793cac02fa639dfc9341e8215" + }, + { + "checksum": "sha256:64ac5cb6fd3da1610812795ce17e09648d89c87513d6284b852a3455b0831d3a" + }, + { + "checksum": "sha256:320ced09e242f09047f4fab0a7f66aba6de2e42583f6a2e164eadcc1ffd0b915" + }, + { + "checksum": "sha256:8ac1003d722e3d5f383c9b970bf6dfbc905007a624abadb63e520d7a93993747" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:f99f5edde9ad4574b84264c467420c910b31f78683fbf1b63d106a7e6c9d64a3" + }, + { + "checksum": "sha256:e2c4ac0f7abf75cbcc7a6fb35412820c267f1a8ce614f41b60d901918c4616d5" + }, + { + "checksum": "sha256:daf36ee86ec6001770ae68bdd82409526faf4b9b1313a6b74fb54cfb98ff571e" + }, + { + "checksum": "sha256:cfa188d39884fd4ba36d27e8fb25aed9dbd26efccffbfd01a24c2c580fdb96f1" + }, + { + "checksum": "sha256:3ef63ecbebf844bcf682c9482dc0ddd158c955b0f066b62eb9575bb9a9642db5" + }, + { + "checksum": "sha256:448d3ff44e7f32f3b33e891180e248dc1bcd4d410f68015a8b0c30dc7c385aca" + }, + { + "checksum": "sha256:290c83afcd2b0a2b17aab95cf72a85da5f8b9f9a9862857c919a0f43e3fce70e" + }, + { + "checksum": "sha256:43ab42c8a58267936a89da99e37d3b9fc56489e958060f600ba047445ca44ee3" + }, + { + "checksum": "sha256:651f38873d3356ec4efb27d04658541080d11cf1ece6335a07db1ca089fa7da3" + }, + { + "checksum": "sha256:ec40be9e0b2bb03f7b057a7a9342ffbd86129d58828fb310f445bc506261eb0e" + }, + { + "checksum": "sha256:04c031a07bde4360484a0180e832036d3ac45a95c4839e54d7a02423df5485ef" + }, + { + "checksum": "sha256:fea4eb54fe59451b76fb40b9bd15ff41f0f51bb7371f94b2f5df572ef917d037" + }, + { + "checksum": "sha256:ce8c92fa2bef1770f44992db24e1cb8cc850feab03a74cf0ebf741ecb0d160ea" + }, + { + "checksum": "sha256:f847957437e7f24844930c4a3ff64c5f7877f083553f48eeadca3c5f5e5c728e" + }, + { + "checksum": "sha256:68593fad4413255772bd08ed7f8b578332f0f53e002c8c7473d90c966a87131b" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:b90ce065d5ea98845733ff06e47d385937f6293ebddf52144c80f5fe1f296307" + }, + { + "checksum": "sha256:861346b2e683c09a53c9418a9ed08faf7448e066e3111482c70722cb62a6edce" + }, + { + "checksum": "sha256:4e4923f05d0032263d570075b9b832b9fc3550cd8f82f9a6b0b9b25061726110" + }, + { + "checksum": "sha256:d890d028f59e2553730fad3dbea0e1a245c92c24836513fa2281194b1c90b53a" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:90405803c0159cdf0f74a26b6ce064cfd9973e59232b2923ed171a38fc5684a6" + }, + { + "checksum": "sha256:4909edde46b5b2b58d228bacafa3bab5bc5847559d591d59ecd59cdf50d36db4" + }, + { + "checksum": "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63" + }, + { + "checksum": "sha256:9b6fcdd19caee5fe77b9ed17adb3f11769a7109ebcf52d3cb3358d5a9eecc391" + }, + { + "checksum": "sha256:65b8d755ff01dfefa423d2f0bd6fd54cfc4c580da63510e19cf178abb6e26172" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:b5b1f5f7a02f70db056861813ddcf181f2ebba507cd368fbe2c32f262edf7fc6" + }, + { + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e" + }, + { + "checksum": "sha256:a6292dd846bc471b22409fc95a5e09c88bcb6176251dc5cc11f4b14a73ddda11" + }, + { + "checksum": "sha256:784d385116891056b618722c933d43c5b395b92fa82e5bc797081317ec6a82ba" + }, + { + "checksum": "sha256:47b483c0f556c56f0b1f468603c57834864902ae5a849a18c8a0ca5f76d66c86" + }, + { + "checksum": "sha256:c633b98b4dbf96674a69573404819c34d66eb7e19820283fc588f6b10b0e3fc8" + }, + { + "checksum": "sha256:d3fb5a473c44cd8ae6b94d6bf3fc552553d8f4ef28eed439658ea38990ab9db5" + }, + { + "checksum": "sha256:0a885c6dc6abd969b828bf2fd7063ee884e6d058eaf405b02f3dd6efb6c66bac" + }, + { + "checksum": "sha256:0bb7024125ca67119612e55a92da13c989e0306ddd7de7e655a679c963939ef7" + }, + { + "checksum": "sha256:125c92f23d87b905c21e9f7669f0ec6e41428ab63c8c13f63db8980f292797d5" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:a840b8193ce9b1b72e3783b9a9bb2ec91947ba3b6f7ac973ae8e0e20a7059117" + }, + { + "checksum": "sha256:19cd894b4154d1a8521c6884cfd2a6eaf1f498b7dec5cc31408f8535b9098f2a" + }, + { + "checksum": "sha256:207e6396488c1db18fb7b1f2b9952f48c2625f042c5f6a901d41974ce376b0e0" + }, + { + "checksum": "sha256:d4467ba499fe1ddd82746ad00d7e86bea59c4827fe1ff8c05132bad1f93ddb7f" + }, + { + "checksum": "sha256:800c9a0d718c641ceee26c8f625b2dcd79a33963e9e7a11930678dc99582a2d0" + }, + { + "checksum": "sha256:986683a0edb615a5d45a9c1b0ee3d27f8032c2667cad58d24526085e41010992" + }, + { + "checksum": "sha256:3fe7c10c144c8fffc00d144317a2bf8029bd9d048432bccfc352dfc6f0995680" + }, + { + "checksum": "sha256:ba66a87402ccc8515e164f597f5d254ad9513979fe3ca1ffabf63c915c0daa73" + }, + { + "checksum": "sha256:d695df94220c2ef990e502123b3bd8ede8fcfb4f738346dd98d999559b01b6b3" + }, + { + "checksum": "sha256:fb263177eee60c26b7acaa76cb640c3d7ab6928e73c8af80b2111a247bd61ece" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:83e470505f558f8cf8414a7fc8fb0d1bc4b16ed15d05ccf7e46332b04d1a0d85" + }, + { + "checksum": "sha256:0f32d23a6b2b15603d710b0317238ef8dde3de61eda96713e21d86c9fc7a98ed" + }, + { + "checksum": "sha256:760d9056891a60c200984f0655aee1876b3bf890f7486306c05db8e295ae7843" + }, + { + "checksum": "sha256:e426534c59b3a35068877d324dd34d643ad7c84d2c406b2e6502ac6c2a367d39" + }, + { + "checksum": "sha256:094eff70081085f87a7ac0dedafa851ad8ac8e03f9f328636df4a0f8301d0e87" + }, + { + "checksum": "sha256:cf9a0bbaa7bd075d2af532586ee93ab92b96d9859f53a57f85cd7e0309f8fff6" + }, + { + "checksum": "sha256:a07f96031fbe9507a8d6bb0e14cf0783bc615552e4cfb75131672072f5729de8" + }, + { + "checksum": "sha256:aa1a6a85493590efb9c0235c15d6a05e8b119f385dc13b3e3abd2315f8c4a6e0" + }, + { + "checksum": "sha256:a78481500097111da309fad544d6512b73c12cb0ce14813e1ea4124e9d26dbba" + }, + { + "checksum": "sha256:497405568863a64e66904df3794d9da933738612b6185fc46efd9a63fdb5d84a" + }, + { + "checksum": "sha256:22c0e44318e36e04ad1eb4632dcf25db991f481f9a543387d372e1f2ad92561f" + }, + { + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "checksum": "sha256:6ae316dfb9723d13a8d36d98d109d4a55017b568ee2070279f1bdccdc699862a" + }, + { + "checksum": "sha256:5996ff948b5874f894c5ce3495652e6de552addf2331fd82193023d77994ef8f" + }, + { + "checksum": "sha256:d20f4bf44fcc90509e7afca364eae0a55c8f33df2f8a69e266f5fcd4b5fa2e4b" + }, + { + "checksum": "sha256:53b632a02518eacbcaec94404927dddaf860638cb594f4c9b898b89bd314ff59" + }, + { + "checksum": "sha256:d4410304f8470ecad6043d55d6bd9a8efc68c24584e90ed451d74762c6f9ae62" + }, + { + "checksum": "sha256:727c08fe072ef85837e8db30574aec712cdf67a062eead3e5481ba08425b2395" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ] + }, + "runner": "org.osbuild.rhel82" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:80bc5c2d45224a1948f0101228da989138d4006a77c67560247a6edc17e7c22a" + }, + { + "checksum": "sha256:8ccbbfc215ecd95f8774055c44d324eea401a5e22b3d24410d67c7a509aa97ad" + }, + { + "checksum": "sha256:63c64d526e9820ddc57a77c053674eeccefef33f16af536dd9b47e816db06988" + }, + { + "checksum": "sha256:0229afd544d1a59bfe26c095ad338bac7e0d2f10aab88bd895f3766e8f54fff3" + }, + { + "checksum": "sha256:f4782c2ae7e7261f50f63e6ed729f5aeb9ac62614c77c9e09ce9b6f43ef3fe1c" + }, + { + "checksum": "sha256:de0ef345ee3912dd38bd8b652f8698e08ec459e8f0e2f4383e837ac2232d3dc2" + }, + { + "checksum": "sha256:b984d8576520272b1011cc46b03c666cd6abc1bf74b428a8781ca58c6287a007" + }, + { + "checksum": "sha256:81c075f5e4c2c10ec6ac49a1a4c54ea22318124fbcf4ad5afdbddeb055cf2552" + }, + { + "checksum": "sha256:d82c81115472a70d60d2320e254762c76a583ad2190ad45068476c77512588af" + }, + { + "checksum": "sha256:d9a4628bd8d3e776f626be4cb5edec305c2ff894d7c5cc7e33e212545721053a" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:518e5412ce19ab733f62c334da8c5545a212c4c971d513eb95590b08a14e3772" + }, + { + "checksum": "sha256:b705e2abbce31768f9dde08b2e3bb4756f2512ad22ac94f4bb6761c530b66f71" + }, + { + "checksum": "sha256:dfaf74e2116ee30d1882b3461de90d3fb6faad4468eb0678f845d105b4439a83" + }, + { + "checksum": "sha256:796cac51b2c1092c4faad372717c6ddc37cad9757111a41e531fe0a8d6c0a9ea" + }, + { + "checksum": "sha256:40096d3516d115e83bc2aa2b5877708f4511961d524e03ce562f9f1872fa27ab" + }, + { + "checksum": "sha256:2d84f6765b1645f867527f493b6153470602a80c75f81545bf619aa92127e4da" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:adb9e37c63a055bc106a9676c10a85fdedcb4af64ae062249732e158bc0ae9af" + }, + { + "checksum": "sha256:6a6aa18217ae72a0b33e4302da927e6ded92520cbf4d48a5030d4a2f95eeb5d8" + }, + { + "checksum": "sha256:13f55a1fea88c4720dc704fa19573325ddde8c1c60ed71e96f98a9e5a6508d44" + }, + { + "checksum": "sha256:15c33124ac0479d34f1f58d2bd24cc52db7089b4a8681c276a3fd0d6dfe4fc72" + }, + { + "checksum": "sha256:e085cf8bddcf09c908d925688dae077300d2964b40bd060af252d26a963cfe50" + }, + { + "checksum": "sha256:dcda73e0ea7b5d2710528fc6df135d435281d1f4d2be0018bb6f1858e818d599" + }, + { + "checksum": "sha256:b7bc10e9947763df6e6177b3dbbe77c21f55ed60d26c4c28bfe14a98f7e06189" + }, + { + "checksum": "sha256:acd4674b3fbe01d6cf94eb18a81cdb00beb73bf3d4a25a28e234f31498f5c389" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:3f04145851379fd54be1aecfb0f73c91e9385ce7634b9beb1703cecfbae65ed2" + }, + { + "checksum": "sha256:689577d74311a7327aab6fe412a803d72b790957e863b6b78a8621a040306919" + }, + { + "checksum": "sha256:7d3ddbaae06c7fb8d24449e11b418ee07bdd9e07f7f0af57741d220b97228557" + }, + { + "checksum": "sha256:41cc2d507fdfbba939c00164a563e770d466f992cb64d3c51a79aec20b31d6d1" + }, + { + "checksum": "sha256:dc37d12420a2593c46619e9b67a0115255a0c7334f547871ce08e329bf5d15a2" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:f96bc0d82d4c6934659c23a6771515e78bf2252ed24d32c78001260ee6e36c8d" + }, + { + "checksum": "sha256:b847207a13bec4b7fcfaaf3668d93bc5ad40a6477f976e6aeb59ab431545d0c5" + }, + { + "checksum": "sha256:bae965c689b08ce42f10366e4b441504432ac353d30edb8b4b2cfc798069434f" + }, + { + "checksum": "sha256:eaf3c7104d3ebd0cdda3d6ce44f4c79eec0a8ce3ce71cbb0d9dfe716f58a105d" + }, + { + "checksum": "sha256:dfea8e48e0cf3d8984237e3d5fb715c7edd9b1f8db03faaefc42a8046b45dab8" + }, + { + "checksum": "sha256:7ce6aa282f9f23c46c44186595924d05f4e7a899b504eb95a0f87008f6620268" + }, + { + "checksum": "sha256:dd379385bd1d2e05f50c4795e5a0eff9030fdac0fd2579bb4b56233257672b27" + }, + { + "checksum": "sha256:6fbfaa1e1b1bb4e2362cf3dce0f59a94a78b457904234cbccbe6afacde311c26" + }, + { + "checksum": "sha256:35526b38ee65e37508867608143abd366f236c1dcecbdac3e3b7aafddfe797ff" + }, + { + "checksum": "sha256:a959efc9ecb3139bf6fa32b25fc4e821aa86230f1577d6acc3de273d26636587" + }, + { + "checksum": "sha256:057b6632870b8c3c0c950a19092ef2f9749bf3d1a37ccb083bf42ca6404db066" + }, + { + "checksum": "sha256:5f2581acb411d6bb5e4d04fc58eaf84f3774b17e527e9e357da80e597300edff" + }, + { + "checksum": "sha256:157044e6cf5cc52b64b9a5d621fdb5b0846a527daa428382330e68bdb47789eb" + }, + { + "checksum": "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2" + }, + { + "checksum": "sha256:9a1c6f2b18126214e9afa768bbf16b29b89ce3169ccbd4bc169000eed143dcb4" + }, + { + "checksum": "sha256:3a684fd5f1b1d417c6c3e9d1f0d5b846138aa06450ff246425d43d4a20bd619e" + }, + { + "checksum": "sha256:deaa0958c9fb57773dfdf74567b658d273cea81186b913aa1473867dc07b335b" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:925c70a394a76004087fd6e8d94f7edab9de9efb2b81740c875698532ba124c7" + }, + { + "checksum": "sha256:2efbfbcce7ef24e433d3c304b6b6b022d1b1b8a972969da1adb1c3c85f9625a7" + }, + { + "checksum": "sha256:4d8edaa317fd508226bb5421ef423470f3e9153167222dee7bf8fb2346b7875b" + }, + { + "checksum": "sha256:2e26672ae726ba833187292dcc6c1673a07e26d974fef2f71a83407989eea8a1" + }, + { + "checksum": "sha256:f769edf78f42bae1bd183a6f4a49d74822db2b5e830147178d197be1cd67a306" + }, + { + "checksum": "sha256:3256e78263462d5d7ab37b696992aedd6f810431641ce8d1e1bc198c797b402b" + }, + { + "checksum": "sha256:da4d193d5f0caf7a196f3bd4aa1225072b522521d82fca8edecc6546b5460ac6" + }, + { + "checksum": "sha256:17501958f52d2db1417cab8dd5ca261bf447fd93eb62b80173f9875c3012b700" + }, + { + "checksum": "sha256:c321e3a0253fb2691035135b3d3740faa76b8e9c84a0378f480ff85ddd9f16bd" + }, + { + "checksum": "sha256:1b8c037a6c67959b52894f38444ed1133356c65cec2eed3acf37c45cf8609e63" + }, + { + "checksum": "sha256:db817b5d2f9d678fd0fee30e52ed080fdb5c9dd723cd57f7d6b0133293502047" + }, + { + "checksum": "sha256:c88d1656b8001ff79175f7d3b7818681e40e54e8fec6fb8556ba8141d437fcfa" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:b140eb203fe889d1c75ef3b5527033cfeb7a6f0c813638a607c9f10faf52a34b" + }, + { + "checksum": "sha256:98dd1582b8ab27085379a3a7e598a6e261c62f97a5f3689447cbf1d4af9ae46c" + }, + { + "checksum": "sha256:77b56d825eb31ca191254d17a4c9399e3c4fe8af42a528c2ad4424bfd865b82d" + }, + { + "checksum": "sha256:f7ccbe0d7b4a61b5a47253f168f8efcdbf41ad0755e678f9edcd2f6a69c93c7d" + }, + { + "checksum": "sha256:3ee66f993ee567b2457a221ed364ae4f8dfe783a5f0e723d9169f95d12f9e696" + }, + { + "checksum": "sha256:634a3cbf0b334e901b6887176fa1b98246be7c4010b4c21cb6fd8fa7aa5fdf94" + }, + { + "checksum": "sha256:540fa90864b4eb0176b56e0c5e9d7bc6130985288ae297b4c38950381b08a827" + }, + { + "checksum": "sha256:c5098f41849af65b808baac594539440fcdffea7afce4239eb41885eccfd67e2" + }, + { + "checksum": "sha256:769b1ac34ba3aa35337b734b8548dcf9e8b41476b9b2093756341bcbd5969a36" + }, + { + "checksum": "sha256:db1fad3c2d8735e69084bd4b09ea963938e4dde2f2e096dc7a4ce146f18b7ab0" + }, + { + "checksum": "sha256:b7955bb1ba7e944f6e5c36713db3bbc570ba0eb8de11ec6a1fa28cfc5c0029c8" + }, + { + "checksum": "sha256:0c851bb11d2bce1ccb4804a958d21c1082267b8bc2f7f825e5236857e1f35274" + }, + { + "checksum": "sha256:37fe346ef6d0ddec5894cfcf96d04ca41924a16a8199814ce8ae7f125183974d" + }, + { + "checksum": "sha256:e08305aecd924631284ddaeae39a83cca85495389d4ddef75410a32af49f946d" + }, + { + "checksum": "sha256:a18a228e692988cd11aa0ee7575d620cc20419e51d3bbb9fdbcbdb2e53fe3554" + }, + { + "checksum": "sha256:e6bcb623a411ed404c596a22b5fcd79080b3444d948b819f8901f92a36683e70" + }, + { + "checksum": "sha256:e0faa8a6bc43432619a2b6a26e9f1323d30cda945580d8bc0f6c2fe742b71924" + }, + { + "checksum": "sha256:3f5765cebcac288cc1b5b118acfbc2016eda7b81ad73923f6f9c21e4731eb0d9" + }, + { + "checksum": "sha256:8ef2fcbe5a8d6e7d393d28838ff458336d16e006bc7d19921f460eb105b88570" + }, + { + "checksum": "sha256:fddf61e9024c41073442ccff0c9990fa004e9b183f391c4e3cf3853e5ae6062c" + }, + { + "checksum": "sha256:ce6960fa7831611815e163864a91b70b0ab1ef0f446c2cad1eec13404822cad5" + }, + { + "checksum": "sha256:6b1dcf4c02ee8c588c0ae44af92ae1060dcdc44f197e624a71fb31c86554ad2c" + }, + { + "checksum": "sha256:964b1d9563e42a176c24cf5c91616ee5cc40de3b1c92038d7fb0392113eaf159" + }, + { + "checksum": "sha256:d4424a9c946da1eab876298af8f772d5aab1109a1f551ac2f1cd10ee849568de" + }, + { + "checksum": "sha256:91c58481a7e4a9b7f9e0e14844fa73047395c75df95d35afa3b0d8ef3f584491" + }, + { + "checksum": "sha256:b94335960fd37c4f4fd43f30dc4e960d76d9a4983cefb6236163fe2dc1babbfb" + }, + { + "checksum": "sha256:19efe6f125c00123ccc6d96e51eb61e711f3ea01f32d18cce14d3b614217c58e" + }, + { + "checksum": "sha256:f700797810fb2bdbba5a0b31e10c361360a87bac1a282da109273194a25bf6ef" + }, + { + "checksum": "sha256:0b4564ad3a799af1a4a0de33b0952f6056d942b0cfa39b73e9375bf0c05b3191" + }, + { + "checksum": "sha256:3bf230c85711b285afb968850d7e98eb6b068a06e7ca40e94203e388d8447f48" + }, + { + "checksum": "sha256:e160910d31a37afeea87df306264fb1f727cbca574d2c234cdca856f5311fbd6" + }, + { + "checksum": "sha256:c22f0d40fbdaaceec711be0cecc122fac4570d126914ce3694a3d6a1178bd487" + }, + { + "checksum": "sha256:81d2e21dad970c08798c0df00bbda21acf165a370f9612e0d14ce69e5dd6c5c3" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:635d847cc4dec8a8e1b418adfda2bc0a9e1814ed6c2c6154a5430029d83abd24" + }, + { + "checksum": "sha256:2921d3aa14a509d271ca35256903c142c30f088f7dc889a4c4e15b26316ef5c0" + }, + { + "checksum": "sha256:4633c2b5a93723e1cad477b81f9ccefafed342f8c4474ec305058f99c713229d" + }, + { + "checksum": "sha256:126d980678e5b687c775cf857b4013306f1a761353370258a0f04d92a3553f92" + }, + { + "checksum": "sha256:5eddb5c1febbe6e58491f8e9ee8fc9897298b307e0357c01f49d445cf25283c9" + }, + { + "checksum": "sha256:83ffb9eac35272ff70a84f5160b74554fbf3f886ee17ebf55615928085baa7cb" + }, + { + "checksum": "sha256:e82699d15e4e6ff7825629d7c1c8a0f50a5519b6e5328472de91a0deddb9cf3d" + }, + { + "checksum": "sha256:fc51460213b3bf5b67f08f2695aae8d728f614adbbacb917a0825e4ebfbc3e68" + }, + { + "checksum": "sha256:7fc33f147b99749fdbae420ed51277cb99d9b6418b7f739fe51c7563945bc0d7" + }, + { + "checksum": "sha256:cf8fdbfcd359aac8bf55500c24e6843baafe8fef35019126c3616806b41415b3" + }, + { + "checksum": "sha256:3f7e5e72ab9e18dbca936b40734c91520242a49a9e98a2f2589f397faa6ad8e8" + }, + { + "checksum": "sha256:f7de2bbb3653c3033d43f645ac26e91c788527c0b4d5e7238dea54c3adc6f1a1" + }, + { + "checksum": "sha256:21685a7b79484a6d684efd86af6fb23dc13aaadc534cc4c4ae3edc0ceb84051b" + }, + { + "checksum": "sha256:f4f5cc3080dc150c47b27383a344937fe17a679cb7046ca76165654d4e207a0b" + }, + { + "checksum": "sha256:da92fada5920a24577f614e1167e3b339d516ca646346c04c71ef2bd97295653" + }, + { + "checksum": "sha256:8ae407fb97bfa1bcd669f4263d0b45dd7fc7e97c1371cc4b8f4360024a56e7bb" + }, + { + "checksum": "sha256:bdcb042c2ff87e5c07685f70e04b051197199bd8465c5e26ceda82a13977d040" + }, + { + "checksum": "sha256:da671d59c65465dab426361abaaf42c3f3c0216e936cded295719e368066bc6b" + }, + { + "checksum": "sha256:0fd7dd5b060e7533144ad7a3cae2453ad6f87650010f328879b10c7c4cba0c04" + }, + { + "checksum": "sha256:ebcaa2d2ec8ddaa66d042a208ccee6b13735ffba04fe3f326954cd76fa4f5910" + }, + { + "checksum": "sha256:1d28eaeaa59c48e4193c709dd2a6301c2f8701138164c05371a0d8f235d14c9c" + }, + { + "checksum": "sha256:c0f53020ecdb8eefb21795b0acf589334e89a9ef339a84d42e61999f53c67d18" + }, + { + "checksum": "sha256:36aece7b7a65785985bf0b98701514f12735a87517b8578a3eb3710f82ba4765" + }, + { + "checksum": "sha256:1143ac623a74d7feaaaf293c18d942d243248f6356628f87216670c10d11687b" + }, + { + "checksum": "sha256:10ac3bf7565725a55b0aef56f65befd0d320219fc83adfab6e564c19f8c44bd6" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:0136940a3e28a159e7347b0bc7d1dbbc0339c64f431349e355f75abe31cbf21c" + }, + { + "checksum": "sha256:0d61e2dfcaed066e4ef74e4baddab9cdec24602aeb7a98306481f38cb5f449eb" + }, + { + "checksum": "sha256:d74da38b942dc95929b21c8fcf2c5d2fb4468b78ed14e7a4bcbe933998be4deb" + }, + { + "checksum": "sha256:cddf8fbd1021116ee137a080d50a06ecd9269beb5042aee5782ca68bab62acf3" + }, + { + "checksum": "sha256:e4ec1966f9bc7cbc898fe7550600ae3e9e4f8afbcdd3f6e74afe1965247653ba" + }, + { + "checksum": "sha256:1091a799d34a42d2e42ac462b4f979a55d17513eca5a00bad9bdba56cca83357" + }, + { + "checksum": "sha256:6f87f305a3e0e0faf69c2a9d4f277958ca33e85b72c6e4f77a365a5f60ced3d3" + }, + { + "checksum": "sha256:4a27cd4496ebdba821b3c7692eeb0c0fff28c6af69fe4fe9e4bf52511639bd6a" + }, + { + "checksum": "sha256:ca87249f90bac96902d18c11a1f8c80566fa090c6473226bdd147e07e3ed21ec" + }, + { + "checksum": "sha256:551a506b43e32d21bf7b6333e028733956d5ef3560837a0c84b0d3e598efa046" + }, + { + "checksum": "sha256:7c014b54f7929348f614f8f4eb7a1552b8565c0a57f3a75ff6471dc05f30cafe" + }, + { + "checksum": "sha256:98f838a9775269a0f796151bd54d52c7ac91d4bf1365186772f243bfafbb136a" + }, + { + "checksum": "sha256:dfdec57ff520511d1d4ef9d913d90fc8d6ac98685cbc12fb568c8980f2a73f1a" + }, + { + "checksum": "sha256:0f1a02850c102e2a186787504f965c0c10d6432b9f600c18bc2f520e55f04a8c" + }, + { + "checksum": "sha256:6f2bfbe0f23d3b233aacb72c153ee133839353325f028321eb5ea38b0dc06c02" + }, + { + "checksum": "sha256:d173b35182f28b9dd48e4a942f2a20c659bee2f9ac234b60cf8b995aa2421382" + }, + { + "checksum": "sha256:2cddadff38ccef2364a7e40af0e1d9b3bf9c06869c15ceeb655f3cfa431c2083" + }, + { + "checksum": "sha256:62a2878605ca0415fd60adcff4c7068d855d20737498a968fabc646610ccbe5c" + }, + { + "checksum": "sha256:e5f82f102f51d88aa517bbebd170795a571b7ddc3036574b92b498cc13704d98" + }, + { + "checksum": "sha256:ff9fc6467a4c2fd0c22c419a9cdb7a524d1c69d0c87aa09f31728bef9f692f76" + }, + { + "checksum": "sha256:86ae7501bdf0149728879f488dd4c86907216cb5b021192347a5c10a55382931" + }, + { + "checksum": "sha256:2809ad51c6eb6c9a54d64cccc2cd948f6fd4207f32b4493b3f4a9bd0886c894b" + }, + { + "checksum": "sha256:84e7102978d76d80aa40c43efcc71c1e54e819195132df921a8c13cec54328da" + }, + { + "checksum": "sha256:621e96e91103f2f701e4ac3b8b8b6ef9aab4db5ab8fb3e141eb02e3f328aed79" + }, + { + "checksum": "sha256:fac29887224d91e8190a569b3ac5be1168034f36c9c234576ea3cefe686e46cd" + }, + { + "checksum": "sha256:b93a509fc65dd88761b4f7f21d8a05f1cd22e878ac59eb7d8e1507f5a2376a1e" + }, + { + "checksum": "sha256:058822931f4c34c18675116c1b02b718de4044c1019acb0d5f97417f00a30ba7" + }, + { + "checksum": "sha256:d6aa17908468b5e2095526664fce6627dec7a02c26625339c14b9278cc39d4a6" + }, + { + "checksum": "sha256:4a40a1538c8a488f32476f96d2461c3b792eb0cf5acb998e397d8a9cef8e5461" + }, + { + "checksum": "sha256:920a48d33953c8d7f1b47106fa6f3cacddecf3e0954f91454b608af94e81ea7b" + }, + { + "checksum": "sha256:3b607f0dbedecb25239e22c1f553c8d70db9d2206a877fa07567fa1a49e233d7" + }, + { + "checksum": "sha256:8498846918c7bc7a20553340434cfbfb0d19185adcd0ff52866c6506ab8f747d" + }, + { + "checksum": "sha256:53fa2fd6a138d00c697b827a77bcc25ec498b1d49bb04ef80594e81ccabc165d" + }, + { + "checksum": "sha256:5a05f1126ed38f752af247dcdf7c958e738b935b8b6d942fd42f423768f05255" + }, + { + "checksum": "sha256:bcd19fd35b5f8535ff5bb15db91e2339c9435908c1123d5e2272fcae15a62260" + }, + { + "checksum": "sha256:89bd26efe94889e657c5cedede8b5eede7d4e8833619218753df6ab5ab477d37" + }, + { + "checksum": "sha256:2dc8e2f52451d1a11b16bbb389a24c58b61a1ba804ee777f9d06dbe4e1fcf6e5" + }, + { + "checksum": "sha256:83301ca502322e0634173460bf8fa35572c36ab8cc2e6e600bf9980f845fc857" + }, + { + "checksum": "sha256:f07b1f40ebb1fbe5c24e68a38b5f768a21e2ec2254d4bd8ff61fb0bde72f64ce" + }, + { + "checksum": "sha256:704e1dc996a17815c6dcf7029c0ddb2849d40feaab6e9b9c687af9d95fef825c" + }, + { + "checksum": "sha256:a681ac2a07ed302c5c3a468f63bf9a447d5f71129dcd74948b5efc51a5e1ba1f" + }, + { + "checksum": "sha256:b1c9a4ff3d549dd43b97dd53810cddfabd1d1e2fde2c04d52e95e03f69a15845" + }, + { + "checksum": "sha256:fa80a7e82e231dc77b3e44edd2cbf5b3d1657e009e59f15bbe8d50a4290b7c82" + }, + { + "checksum": "sha256:0f6d940ccddd815da01182de1e7b7e2d12c493125285ff7ee902843beefdec16" + }, + { + "checksum": "sha256:9fdfb9c1ced62828bfcb186bb83caf470b4c14a53611c0ab7f08035333b6dbee" + }, + { + "checksum": "sha256:ba1364539f16d7c8379d7563fd0634651fa8a05b3f7098a21ba96e1f5641f132" + }, + { + "checksum": "sha256:0e33000d382305bd26466545abaadf22c31d1c7d95b4c0475606348df68c4bfc" + }, + { + "checksum": "sha256:26b14d8f226962ce712bbccfb245843759e835a24a139eacae86d680043a85a7" + }, + { + "checksum": "sha256:abfda01b6d377de999efa9c2b4870bf3ba43cd50155f036d13aae0ba4a617565" + }, + { + "checksum": "sha256:16dd7121e6461d2c136f9f7330d8a60b88ed9ec77ac6824ac3ee7495acdb6800" + }, + { + "checksum": "sha256:e85c24b0e9d047763e2c8e673bb6dc579b55c650e8f19d14c9010f3dc5cd0ccd" + }, + { + "checksum": "sha256:db7899290e3f78a9cff3796d1181dc0ef3d837b3c80e715c7ca85e01a811093a" + }, + { + "checksum": "sha256:4874e739ed37bc6a5bfdb6069d4620e5f7efe01d60eb9fd2550c550167c99990" + }, + { + "checksum": "sha256:8c0d40edf059bf044314df38c84e26cfbe00bf4e687a6114eacb17251718312b" + }, + { + "checksum": "sha256:471663fca7e3f609834368d69d8f1f469cfc0d3f3e95dc2b79381722d0368edc" + }, + { + "checksum": "sha256:435a2be84a2b38372965dbd60ffed0ed38a616b8100859787a8bb3b19d9fc4d9" + }, + { + "checksum": "sha256:a006b695c5a4c6caff337a60a2a6b89a12f0dedb4e2fe47b9f1e68d2a838508f" + }, + { + "checksum": "sha256:1fbb9fed42dff3f9dbc9e4fd929281408f77506423424759c2ac57b76afc3cdb" + }, + { + "checksum": "sha256:332c3cd387659ab5dfbb14ea5e75d1c8e1c8a8833e0314dde3ec758607efb3e4" + }, + { + "checksum": "sha256:6557d001315e85ac123b1378c5aafb81428e2383debcacf3f91c55476cfc48eb" + }, + { + "checksum": "sha256:d6ab7c8790cd6c9a137d908d840c51c547e950d25f6ab8af3c9ad3899ff6c044" + }, + { + "checksum": "sha256:66565771f3fa38fe14b5f14f28dcd804b57130922f1e02ca7b53a199be4f5c52" + }, + { + "checksum": "sha256:1d322a2742596a94b28bb8481621ea604da8ba980a4199b9fd2f41aa990664a4" + }, + { + "checksum": "sha256:a362b50497d2c4b69ffb5664b7573062e1305861861561d497b8796f123c506e" + }, + { + "checksum": "sha256:2d74e0ab14393921c6160fda8dd533b58c0348acdf5ee5c306ffc64221700de2" + }, + { + "checksum": "sha256:e55bf252e792f27f076101e94dfbbac97dabeea0f7893a4cb9b111a0b72d187f" + }, + { + "checksum": "sha256:e9487db2fdce1f494ee1582787a1afc1ea4e0429189db8be0ddbb0af2676c4b6" + }, + { + "checksum": "sha256:cc7e751a62f9a28b82df0bce0ecfb050364b8688ef69473f1910909e44c5eb98" + }, + { + "checksum": "sha256:c1b5c4668331e8b05a08e7de432cbfb75f8072401bb6651a24e43f64eff8dcc4" + }, + { + "checksum": "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc" + }, + { + "checksum": "sha256:c82ca1c0ef4b89f75e8e7edbbae4f3eeb2720a4abd56b0927928cff2d9721186" + }, + { + "checksum": "sha256:140146ebcbadd9b0f2aa5c2fcde5c93888f2d84ce61a2a4cf148ef435d1ba410" + }, + { + "checksum": "sha256:c8a28b4587888435c51f6d1ce42f48b08fb0256e4029ea569e9a02adcb82c85a" + }, + { + "checksum": "sha256:bf267d9571cf568375e261d593236750f400ac536c1c818513106482ebc3fb10" + }, + { + "checksum": "sha256:f35c0da3cff05ded33c0cb4f202dbb52a5caabec8b1897d5057df83c284d62f1" + }, + { + "checksum": "sha256:2397506a63455e543b201938f605e687de5590d9a06282824e2f6bfdf5e0f149" + }, + { + "checksum": "sha256:5be5628cff7e0cbf726771bd7af6d8f4bd987a672381a9fb225974bcfc7f9644" + }, + { + "checksum": "sha256:268d9232f0853037100432e9363c659cf99927e03f759fd4884643b560710cd6" + }, + { + "checksum": "sha256:3ee6a4f61935c2f0698ad2c4834a5864920a1e48d55c7800da7c382249895e39" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:f4e63e7eedc0266a575eb6107f41c5f20ca0505a0e80145c21b9741674d5c0b5" + }, + { + "checksum": "sha256:fd202f857b3c5a15b8f66f86fd515c44a47c87c028d7db766661758dc3673436" + }, + { + "checksum": "sha256:ed28e1e31109e27ce1c676914364c9f1dd46b71d00cb4cf13931f0fec6cf6978" + }, + { + "checksum": "sha256:481bbd6d73415d437a73eee7977ec370299acdac44b215a026652debba31783d" + }, + { + "checksum": "sha256:da4b9bfad26d559485ade669556512acfe93ba23d204f2556bac82c09401b4e7" + }, + { + "checksum": "sha256:01e486a3be67325e9692e909f5c6534137ee6a6df185ba2c09d4d50fe6c738f6" + }, + { + "checksum": "sha256:9a9546fcc510204dc7bcfe61d6ca63f436c01cd9b3f8451c8f07ec4f4fc2ba68" + }, + { + "checksum": "sha256:ad07261ff4f478be9511f7ee749bfbe8b2ba8e28696c2f561caa20e35c535134" + }, + { + "checksum": "sha256:95de1777f7e8a734445c5d45e0b77da8b6c41a9b504582ed266d852c677a936b" + }, + { + "checksum": "sha256:da7daac31c7c5f9711e225b02f2a639df5c6d25ef49b1f8ea0799e4e2b13b14c" + }, + { + "checksum": "sha256:532d46a4c0e68bd45eabc3e2ba6d570880344044e1034f5f347b37c470d0dced" + }, + { + "checksum": "sha256:876ffb285aaeddb2c18ae32527bd4ee202710bd8e18d5b410af22937646dcdec" + }, + { + "checksum": "sha256:fb56b7a416e12da0782ae8ba7396bc03a2f8844c2efcb5df3f8b9e74eb8b8059" + }, + { + "checksum": "sha256:e8a5768895f9ef4a1fdc3740a0570e6b972f9ee6cc5e6d3bd38eb2bf80ccf847" + }, + { + "checksum": "sha256:7864fbc866ae5a3e59b4f0f114b77ff52b55e76c5388a917f82a6097f02a4db7" + }, + { + "checksum": "sha256:19d1de27d2f62b4a55735233807f70a1e8ff7551fed97ee8650dbd09c1ef50ea" + }, + { + "checksum": "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9" + }, + { + "checksum": "sha256:bc0f9bd34ac6a01dd7272b87e1b7a33045ff8c6793cac02fa639dfc9341e8215" + }, + { + "checksum": "sha256:07ff7e41f0955d2140fb2fd2ef39777ad871c86019e9bbf0a5fa6116dffb2eeb" + }, + { + "checksum": "sha256:ca3a7051dfa4e83c4200d2fa563b92ba8d1d0e3b7d04e4c2e72c7e318884d4e1" + }, + { + "checksum": "sha256:64ac5cb6fd3da1610812795ce17e09648d89c87513d6284b852a3455b0831d3a" + }, + { + "checksum": "sha256:aeda2c664e2d993e56008f68823d05ec6d7665f2bb65b5f990c2112f0a7f91cb" + }, + { + "checksum": "sha256:10a83db8ac5065869be834bf6ec61185eded982f885def5979948736e5c3ab95" + }, + { + "checksum": "sha256:320ced09e242f09047f4fab0a7f66aba6de2e42583f6a2e164eadcc1ffd0b915" + }, + { + "checksum": "sha256:8ac1003d722e3d5f383c9b970bf6dfbc905007a624abadb63e520d7a93993747" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:f99f5edde9ad4574b84264c467420c910b31f78683fbf1b63d106a7e6c9d64a3" + }, + { + "checksum": "sha256:e2c4ac0f7abf75cbcc7a6fb35412820c267f1a8ce614f41b60d901918c4616d5" + }, + { + "checksum": "sha256:9da7de3dd0a487abf1bbfb0c9de0b491102fe0796e53a47ee4414003a8b51f33" + }, + { + "checksum": "sha256:daf36ee86ec6001770ae68bdd82409526faf4b9b1313a6b74fb54cfb98ff571e" + }, + { + "checksum": "sha256:cfa188d39884fd4ba36d27e8fb25aed9dbd26efccffbfd01a24c2c580fdb96f1" + }, + { + "checksum": "sha256:af98260ff2c263c9cefcb96d16d200941c1873cda9868b57df51b034066940fe" + }, + { + "checksum": "sha256:bd03a8a056bc9d2df361688583521f5f656e83fc893b90d349b6282178f9330b" + }, + { + "checksum": "sha256:b35f92dddd2cd73f7f8d8595ebb197a1c67a214ec2acf960ac673a014f2d9b90" + }, + { + "checksum": "sha256:3ef63ecbebf844bcf682c9482dc0ddd158c955b0f066b62eb9575bb9a9642db5" + }, + { + "checksum": "sha256:448d3ff44e7f32f3b33e891180e248dc1bcd4d410f68015a8b0c30dc7c385aca" + }, + { + "checksum": "sha256:290c83afcd2b0a2b17aab95cf72a85da5f8b9f9a9862857c919a0f43e3fce70e" + }, + { + "checksum": "sha256:43ab42c8a58267936a89da99e37d3b9fc56489e958060f600ba047445ca44ee3" + }, + { + "checksum": "sha256:651f38873d3356ec4efb27d04658541080d11cf1ece6335a07db1ca089fa7da3" + }, + { + "checksum": "sha256:ec40be9e0b2bb03f7b057a7a9342ffbd86129d58828fb310f445bc506261eb0e" + }, + { + "checksum": "sha256:04c031a07bde4360484a0180e832036d3ac45a95c4839e54d7a02423df5485ef" + }, + { + "checksum": "sha256:8e916224ddbb8a7d8cd305f11087c66df950a318e4ef64290bca1afdc1327950" + }, + { + "checksum": "sha256:fea4eb54fe59451b76fb40b9bd15ff41f0f51bb7371f94b2f5df572ef917d037" + }, + { + "checksum": "sha256:ce8c92fa2bef1770f44992db24e1cb8cc850feab03a74cf0ebf741ecb0d160ea" + }, + { + "checksum": "sha256:f847957437e7f24844930c4a3ff64c5f7877f083553f48eeadca3c5f5e5c728e" + }, + { + "checksum": "sha256:1d39ffccb1971cf4c3b6d6e6c6415c9fceb50238f312ab9fa2417bce03679785" + }, + { + "checksum": "sha256:9a89874a5b8326c85c0b34b02c122ffc052b32a12b20354ce95859ac5296a159" + }, + { + "checksum": "sha256:421dd99d6a2654b08f01d62c1921116f80d6799eb99ff58c45ac055b3d7f731a" + }, + { + "checksum": "sha256:68593fad4413255772bd08ed7f8b578332f0f53e002c8c7473d90c966a87131b" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:b90ce065d5ea98845733ff06e47d385937f6293ebddf52144c80f5fe1f296307" + }, + { + "checksum": "sha256:b4fb3d8b0255a5ba9456b61e4f479f2f8355d171263508bbe869af677015fd97" + }, + { + "checksum": "sha256:3f8039ed081aa3f628e947656af825b4541ded3547675098eabb0f177eca45e7" + }, + { + "checksum": "sha256:861346b2e683c09a53c9418a9ed08faf7448e066e3111482c70722cb62a6edce" + }, + { + "checksum": "sha256:4a7d4068f39dbb01d7f707f9912abfddcc065a62b66144eeb7b7e2f13cec68af" + }, + { + "checksum": "sha256:4e4923f05d0032263d570075b9b832b9fc3550cd8f82f9a6b0b9b25061726110" + }, + { + "checksum": "sha256:d890d028f59e2553730fad3dbea0e1a245c92c24836513fa2281194b1c90b53a" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:48509ce37ec06c1b15149feec4b2eb5d3a2f0453a41804c9c5d9ef5b8b320d4f" + }, + { + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "checksum": "sha256:8329bf1aedce9ef3a4d7513ef98d3931ad39b84d5c3e73e99936c7f9b87931c2" + }, + { + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87" + }, + { + "checksum": "sha256:4fe7733b93fad52a48d4b47a6dc55582f3cc41fc2074e42a9b39fc5d407df6d3" + }, + { + "checksum": "sha256:c9b3c6dcb4133c3051e3f75978f994aae4c0ad84dd1abbae7fcba497ee524603" + }, + { + "checksum": "sha256:31043a7324411dad6b84f6504a9e9cb7ece9f576acf091be522e484c8b82f469" + }, + { + "checksum": "sha256:90405803c0159cdf0f74a26b6ce064cfd9973e59232b2923ed171a38fc5684a6" + }, + { + "checksum": "sha256:4909edde46b5b2b58d228bacafa3bab5bc5847559d591d59ecd59cdf50d36db4" + }, + { + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "checksum": "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63" + }, + { + "checksum": "sha256:9b6fcdd19caee5fe77b9ed17adb3f11769a7109ebcf52d3cb3358d5a9eecc391" + }, + { + "checksum": "sha256:b386b3ec3cb96fe9178fd1d2b245eddff0bdb2742a8f18e25faef1e98c00f42f" + }, + { + "checksum": "sha256:65b8d755ff01dfefa423d2f0bd6fd54cfc4c580da63510e19cf178abb6e26172" + }, + { + "checksum": "sha256:9c416279320ab29a8ef4fc32ca60beaec4c8da6054d10695cd2b37af19cd0ee9" + }, + { + "checksum": "sha256:b9ceb537921c8d98f1e874c0a39cf0c6a606f469be21be151fa119e4b9c7f06a" + }, + { + "checksum": "sha256:70c05e5512e85231b490c1aa9c0e7eeb7f9a09c34d1253c3aa1db0b8db6be974" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42" + }, + { + "checksum": "sha256:b5b1f5f7a02f70db056861813ddcf181f2ebba507cd368fbe2c32f262edf7fc6" + }, + { + "checksum": "sha256:342d7cd5f427c0d9c02336bc4f189225b3b57c5899f5d26b61b351fc37f99489" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "checksum": "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb" + }, + { + "checksum": "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d" + }, + { + "checksum": "sha256:d868f3e9b48e1acc5c7674292619f1e80a2a2617aa1ab75d7cb4665495bdc654" + }, + { + "checksum": "sha256:6d46339afc3d65beb89cbb36052e779e95ef2448a163d26db13d67715dad9cf8" + }, + { + "checksum": "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e" + }, + { + "checksum": "sha256:a6292dd846bc471b22409fc95a5e09c88bcb6176251dc5cc11f4b14a73ddda11" + }, + { + "checksum": "sha256:784d385116891056b618722c933d43c5b395b92fa82e5bc797081317ec6a82ba" + }, + { + "checksum": "sha256:13471e37bb0089a322183fc9e7a53948f0b203b54277630e75606a835268ad5d" + }, + { + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "checksum": "sha256:47b483c0f556c56f0b1f468603c57834864902ae5a849a18c8a0ca5f76d66c86" + }, + { + "checksum": "sha256:c633b98b4dbf96674a69573404819c34d66eb7e19820283fc588f6b10b0e3fc8" + }, + { + "checksum": "sha256:d3fb5a473c44cd8ae6b94d6bf3fc552553d8f4ef28eed439658ea38990ab9db5" + }, + { + "checksum": "sha256:0a885c6dc6abd969b828bf2fd7063ee884e6d058eaf405b02f3dd6efb6c66bac" + }, + { + "checksum": "sha256:0bb7024125ca67119612e55a92da13c989e0306ddd7de7e655a679c963939ef7" + }, + { + "checksum": "sha256:eea9359070225c205cd9233c98fc3e3eaa41848148b726a4ec8414575ae3730e" + }, + { + "checksum": "sha256:125c92f23d87b905c21e9f7669f0ec6e41428ab63c8c13f63db8980f292797d5" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:4301ddbbfdbd5b72fe6596ce1872de3df7bc85101445d899b637a860b5c3383a" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:a840b8193ce9b1b72e3783b9a9bb2ec91947ba3b6f7ac973ae8e0e20a7059117" + }, + { + "checksum": "sha256:19cd894b4154d1a8521c6884cfd2a6eaf1f498b7dec5cc31408f8535b9098f2a" + }, + { + "checksum": "sha256:b83b5cb8c799dea710e0fffc841abf88495a1f3d04057dd699cff2aac610d7d9" + }, + { + "checksum": "sha256:4c1754c21b2a83f4cc13a95ce545873907db154c7aebf9ab5af4b365fbb54502" + }, + { + "checksum": "sha256:207e6396488c1db18fb7b1f2b9952f48c2625f042c5f6a901d41974ce376b0e0" + }, + { + "checksum": "sha256:4efe61bac45e15b3b1bfda93bf3cfbf72d49c7f0452737d01f12f49b6e624175" + }, + { + "checksum": "sha256:2df37064ec55f10e06dc0c05647a296b8ca7867251fe44130206052e58d39bda" + }, + { + "checksum": "sha256:432ef41fd5f9ad2b9a797ed105f6e729dcaf19c17df9c1478802af04e898e305" + }, + { + "checksum": "sha256:d4467ba499fe1ddd82746ad00d7e86bea59c4827fe1ff8c05132bad1f93ddb7f" + }, + { + "checksum": "sha256:800c9a0d718c641ceee26c8f625b2dcd79a33963e9e7a11930678dc99582a2d0" + }, + { + "checksum": "sha256:986683a0edb615a5d45a9c1b0ee3d27f8032c2667cad58d24526085e41010992" + }, + { + "checksum": "sha256:3fe7c10c144c8fffc00d144317a2bf8029bd9d048432bccfc352dfc6f0995680" + }, + { + "checksum": "sha256:ba66a87402ccc8515e164f597f5d254ad9513979fe3ca1ffabf63c915c0daa73" + }, + { + "checksum": "sha256:c880062730d3fdbb06e5a9cd47929a5009023262686edfe4d6ed9daa54038e5f" + }, + { + "checksum": "sha256:3a32688730dde2950fd8f1126890daf77b3ec8576afdbfe1fde3c9f4a9677ee2" + }, + { + "checksum": "sha256:df72c0be7eed3939e5d7c28fdbdd66ef9e205df7cb00f027403c46e923568c13" + }, + { + "checksum": "sha256:d61e6972f58a90d531ffbf4484e7253cdde3b462035be7938b2f6ac8e657a5a3" + }, + { + "checksum": "sha256:b7bf71e1c3bb7aaa94da2deefdfd083cf77f7791c1d8cf7b9f3f1f352e4c8993" + }, + { + "checksum": "sha256:d695df94220c2ef990e502123b3bd8ede8fcfb4f738346dd98d999559b01b6b3" + }, + { + "checksum": "sha256:fb263177eee60c26b7acaa76cb640c3d7ab6928e73c8af80b2111a247bd61ece" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:1bc21785bc6f66d6fcc29cd62f2cdd3584f3f8ea6321db4c27251b192f468433" + }, + { + "checksum": "sha256:83e470505f558f8cf8414a7fc8fb0d1bc4b16ed15d05ccf7e46332b04d1a0d85" + }, + { + "checksum": "sha256:1956304761f23c6661b831d33a3539b82384636db4113cccd19321b36a3a8415" + }, + { + "checksum": "sha256:b6946db91c0a0b5e39427db028815391dd1e8c7a04faf98bc1031b5490034790" + }, + { + "checksum": "sha256:0f32d23a6b2b15603d710b0317238ef8dde3de61eda96713e21d86c9fc7a98ed" + }, + { + "checksum": "sha256:a548d145df38e3afdd4f9476b91a2787278f8c95d5130114393a9850d0fa8e99" + }, + { + "checksum": "sha256:e426534c59b3a35068877d324dd34d643ad7c84d2c406b2e6502ac6c2a367d39" + }, + { + "checksum": "sha256:094eff70081085f87a7ac0dedafa851ad8ac8e03f9f328636df4a0f8301d0e87" + }, + { + "checksum": "sha256:cf9a0bbaa7bd075d2af532586ee93ab92b96d9859f53a57f85cd7e0309f8fff6" + }, + { + "checksum": "sha256:1594afba86593ec614299ef6af255755a98ea55a34a72a22fdc9d80a040be39d" + }, + { + "checksum": "sha256:e86726a5ea5410dea25a80ef4d17efcba11fb4ffea2421c577626d9e29eafe80" + }, + { + "checksum": "sha256:4c1d9194bb8462cb8a6dd7ac6fe7499c289bca2e5783ff7f504ee2e1a6887117" + }, + { + "checksum": "sha256:078fe843b11622825dd88504c8fedb81c43cdbf4983107e1de82a44e1f43d6cd" + }, + { + "checksum": "sha256:d1ad3defad626f2b7f5d7710c8166293147603e3376c23c21a28618316af5b84" + }, + { + "checksum": "sha256:4e3434407548fab65e2dd9863b6b175ff66b114ca8f7cc65880fb7926c461a05" + }, + { + "checksum": "sha256:90f1b278b55197ea3061934e563aad3705fecaf8550259ca83939b012bc0aa06" + }, + { + "checksum": "sha256:79ebb787a23dd8f016cacc6fa256af291c932fa69ad294f35acdd3876f789971" + }, + { + "checksum": "sha256:cb7a8e0798d45987fe10eaec018e88cf518aa14000d6e306a687db02c3371c7e" + }, + { + "checksum": "sha256:9276a1f4679fbcfeecbc281e5f927c0acf810f3965f2dc216b3638872594a4d9" + }, + { + "checksum": "sha256:b5ab26eb9fc10aeaf136dc25284a232860c77dcf470a22361b085ea945373580" + }, + { + "checksum": "sha256:c253486979dac9a4c79d0d8b9fa5df0012b3a4d7567ee7c63c9d726da35c8355" + }, + { + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "checksum": "sha256:5a1b052999190993cf04eba28390166834b155d689806174b6ba483e160071a8" + }, + { + "checksum": "sha256:247bca3cfd7a4faac974bbf4f52203c224f0a83d439e112acde72638f33e708c" + }, + { + "checksum": "sha256:425ed8338a8ff15ca107e058c4a806c52b7da8f24da5510c57f7e9b9ea031ca2" + }, + { + "checksum": "sha256:cc56ab0a8b45859e195464f4514fc61e84ba44da5d112c08ba5b4149a872778c" + }, + { + "checksum": "sha256:e09e950b0a0842577364565380ba40e8c4f027919dc880378b606c2dafc5693b" + }, + { + "checksum": "sha256:ee45e2247336fa1e822e974aae932a2bb638ccdfcd30fae9bfa77705f2e2e685" + }, + { + "checksum": "sha256:34cd0ea2ffb4d75b6d3781c2683b0880ffc11e1da1f65f042a43dcca2e6bb9c8" + }, + { + "checksum": "sha256:a07f96031fbe9507a8d6bb0e14cf0783bc615552e4cfb75131672072f5729de8" + }, + { + "checksum": "sha256:6947e0a550f9841b662c57825e426e2f5096e54f4bfd201058eb038242f620c5" + }, + { + "checksum": "sha256:aa1a6a85493590efb9c0235c15d6a05e8b119f385dc13b3e3abd2315f8c4a6e0" + }, + { + "checksum": "sha256:7bb182e41292af7c8607e088e926da6f88249587df30a9cdc74aa4fe28a7c9de" + }, + { + "checksum": "sha256:5f0a836e243fdaee7ba99ae085be7b57c02d0c199564166175ef1cc17cb7df34" + }, + { + "checksum": "sha256:a3c479a9afd17f2a92acab491af69de3b3f69850ab3f8fca5562c5f530530174" + }, + { + "checksum": "sha256:a78481500097111da309fad544d6512b73c12cb0ce14813e1ea4124e9d26dbba" + }, + { + "checksum": "sha256:497405568863a64e66904df3794d9da933738612b6185fc46efd9a63fdb5d84a" + }, + { + "checksum": "sha256:22c0e44318e36e04ad1eb4632dcf25db991f481f9a543387d372e1f2ad92561f" + }, + { + "checksum": "sha256:0376e0b82157c1006ea475a52ca7806aea53ae6484c1a4534e9a249b4b13b23e" + }, + { + "checksum": "sha256:bf6a9ab5cdf3c0a71b634201fe260b1362d8eeb82fe33ccd220dc12c9396ec27" + }, + { + "checksum": "sha256:cf5d9432afbd324b457d2a02eb9b270ff358b1bfcf28bee57ffe7b84df6e65f4" + }, + { + "checksum": "sha256:6ae316dfb9723d13a8d36d98d109d4a55017b568ee2070279f1bdccdc699862a" + }, + { + "checksum": "sha256:53b632a02518eacbcaec94404927dddaf860638cb594f4c9b898b89bd314ff59" + }, + { + "checksum": "sha256:d4410304f8470ecad6043d55d6bd9a8efc68c24584e90ed451d74762c6f9ae62" + }, + { + "checksum": "sha256:e90c57ced08b8d62a8ab79f5884c99425b007c560c878288a3917b453c40d074" + }, + { + "checksum": "sha256:56d588cc5ffb16a91ce056824c02de133ad6d0070571f681166046c1805199a4" + }, + { + "checksum": "sha256:b6805a1506be42f7623d44b286610391a5f0577f963dcd595210591204b8b481" + }, + { + "checksum": "sha256:727c08fe072ef85837e8db30574aec712cdf67a062eead3e5481ba08425b2395" + }, + { + "checksum": "sha256:b7b68b5c86ca77c738f39387174d59a4a0d30c888eaf72b3c29071be314d3621" + }, + { + "checksum": "sha256:22069f81fb22bee7871e6368bec14602614aee7f81e8fd5c752b7023fd13de39" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.systemd", + "options": { + "enabled_services": [ + "NetworkManager.service", + "firewalld.service", + "rngd.service", + "sshd.service" + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + }, + { + "name": "org.osbuild.rpm-ostree", + "options": { + "etc_group_members": [ + "wheel", + "docker" + ] + } + } + ], + "assembler": { + "name": "org.osbuild.ostree.commit", + "options": { + "ref": "rhel/8/aarch64/edge", + "tar": { + "filename": "commit.tar" + } + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/acl-2.2.53-1.el8.aarch64.rpm", + "checksum": "sha256:b984d8576520272b1011cc46b03c666cd6abc1bf74b428a8781ca58c6287a007" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm", + "checksum": "sha256:d9a4628bd8d3e776f626be4cb5edec305c2ff894d7c5cc7e33e212545721053a" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bash-4.4.19-12.el8.aarch64.rpm", + "checksum": "sha256:518e5412ce19ab733f62c334da8c5545a212c4c971d513eb95590b08a14e3772" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/brotli-1.0.6-2.el8.aarch64.rpm", + "checksum": "sha256:796cac51b2c1092c4faad372717c6ddc37cad9757111a41e531fe0a8d6c0a9ea" + }, + { + "name": "bubblewrap", + "epoch": 0, + "version": "0.4.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bubblewrap-0.4.0-1.el8.aarch64.rpm", + "checksum": "sha256:40096d3516d115e83bc2aa2b5877708f4511961d524e03ce562f9f1872fa27ab" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bzip2-libs-1.0.6-26.el8.aarch64.rpm", + "checksum": "sha256:2d84f6765b1645f867527f493b6153470602a80c75f81545bf619aa92127e4da" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/chkconfig-1.13-2.el8.aarch64.rpm", + "checksum": "sha256:6a6aa18217ae72a0b33e4302da927e6ded92520cbf4d48a5030d4a2f95eeb5d8" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-8.30-8.el8.aarch64.rpm", + "checksum": "sha256:15c33124ac0479d34f1f58d2bd24cc52db7089b4a8681c276a3fd0d6dfe4fc72" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-common-8.30-8.el8.aarch64.rpm", + "checksum": "sha256:e085cf8bddcf09c908d925688dae077300d2964b40bd060af252d26a963cfe50" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cpio-2.12-8.el8.aarch64.rpm", + "checksum": "sha256:dcda73e0ea7b5d2710528fc6df135d435281d1f4d2be0018bb6f1858e818d599" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-2.9.6-15.el8.aarch64.rpm", + "checksum": "sha256:b7bc10e9947763df6e6177b3dbbe77c21f55ed60d26c4c28bfe14a98f7e06189" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-dicts-2.9.6-15.el8.aarch64.rpm", + "checksum": "sha256:acd4674b3fbe01d6cf94eb18a81cdb00beb73bf3d4a25a28e234f31498f5c389" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cryptsetup-libs-2.3.3-1.el8.aarch64.rpm", + "checksum": "sha256:689577d74311a7327aab6fe412a803d72b790957e863b6b78a8621a040306919" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/curl-7.61.1-12.el8.aarch64.rpm", + "checksum": "sha256:7d3ddbaae06c7fb8d24449e11b418ee07bdd9e07f7f0af57741d220b97228557" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.aarch64.rpm", + "checksum": "sha256:41cc2d507fdfbba939c00164a563e770d466f992cb64d3c51a79aec20b31d6d1" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:dc37d12420a2593c46619e9b67a0115255a0c7334f547871ce08e329bf5d15a2" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-daemon-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:f96bc0d82d4c6934659c23a6771515e78bf2252ed24d32c78001260ee6e36c8d" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-libs-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:bae965c689b08ce42f10366e4b441504432ac353d30edb8b4b2cfc798069434f" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-tools-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:eaf3c7104d3ebd0cdda3d6ce44f4c79eec0a8ce3ce71cbb0d9dfe716f58a105d" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-1.02.171-3.el8.aarch64.rpm", + "checksum": "sha256:6fbfaa1e1b1bb4e2362cf3dce0f59a94a78b457904234cbccbe6afacde311c26" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-libs-1.02.171-3.el8.aarch64.rpm", + "checksum": "sha256:057b6632870b8c3c0c950a19092ef2f9749bf3d1a37ccb083bf42ca6404db066" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/diffutils-3.6-6.el8.aarch64.rpm", + "checksum": "sha256:3a684fd5f1b1d417c6c3e9d1f0d5b846138aa06450ff246425d43d4a20bd619e" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dosfstools-4.1-6.el8.aarch64.rpm", + "checksum": "sha256:2efbfbcce7ef24e433d3c304b6b6b022d1b1b8a972969da1adb1c3c85f9625a7" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-049-89.git20200625.el8.aarch64.rpm", + "checksum": "sha256:4d8edaa317fd508226bb5421ef423470f3e9153167222dee7bf8fb2346b7875b" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:3256e78263462d5d7ab37b696992aedd6f810431641ce8d1e1bc198c797b402b" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:da4d193d5f0caf7a196f3bd4aa1225072b522521d82fca8edecc6546b5460ac6" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:c88d1656b8001ff79175f7d3b7818681e40e54e8fec6fb8556ba8141d437fcfa" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libelf-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:b140eb203fe889d1c75ef3b5527033cfeb7a6f0c813638a607c9f10faf52a34b" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libs-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:98dd1582b8ab27085379a3a7e598a6e261c62f97a5f3689447cbf1d4af9ae46c" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/expat-2.2.5-4.el8.aarch64.rpm", + "checksum": "sha256:77b56d825eb31ca191254d17a4c9399e3c4fe8af42a528c2ad4424bfd865b82d" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-5.33-16.el8.aarch64.rpm", + "checksum": "sha256:f7ccbe0d7b4a61b5a47253f168f8efcdbf41ad0755e678f9edcd2f6a69c93c7d" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-libs-5.33-16.el8.aarch64.rpm", + "checksum": "sha256:3ee66f993ee567b2457a221ed364ae4f8dfe783a5f0e723d9169f95d12f9e696" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/filesystem-3.8-3.el8.aarch64.rpm", + "checksum": "sha256:634a3cbf0b334e901b6887176fa1b98246be7c4010b4c21cb6fd8fa7aa5fdf94" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/findutils-4.6.0-20.el8.aarch64.rpm", + "checksum": "sha256:540fa90864b4eb0176b56e0c5e9d7bc6130985288ae297b4c38950381b08a827" + }, + { + "name": "fuse", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fuse-2.9.7-12.el8.aarch64.rpm", + "checksum": "sha256:0c851bb11d2bce1ccb4804a958d21c1082267b8bc2f7f825e5236857e1f35274" + }, + { + "name": "fuse-common", + "epoch": 0, + "version": "3.2.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fuse-common-3.2.1-12.el8.aarch64.rpm", + "checksum": "sha256:37fe346ef6d0ddec5894cfcf96d04ca41924a16a8199814ce8ae7f125183974d" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fuse-libs-2.9.7-12.el8.aarch64.rpm", + "checksum": "sha256:e08305aecd924631284ddaeae39a83cca85495389d4ddef75410a32af49f946d" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gawk-4.2.1-1.el8.aarch64.rpm", + "checksum": "sha256:e0faa8a6bc43432619a2b6a26e9f1323d30cda945580d8bc0f6c2fe742b71924" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-1.18-1.el8.aarch64.rpm", + "checksum": "sha256:3f5765cebcac288cc1b5b118acfbc2016eda7b81ad73923f6f9c21e4731eb0d9" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-libs-1.18-1.el8.aarch64.rpm", + "checksum": "sha256:8ef2fcbe5a8d6e7d393d28838ff458336d16e006bc7d19921f460eb105b88570" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-0.19.8.1-17.el8.aarch64.rpm", + "checksum": "sha256:fddf61e9024c41073442ccff0c9990fa004e9b183f391c4e3cf3853e5ae6062c" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-libs-0.19.8.1-17.el8.aarch64.rpm", + "checksum": "sha256:ce6960fa7831611815e163864a91b70b0ab1ef0f446c2cad1eec13404822cad5" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glib2-2.56.4-8.el8.aarch64.rpm", + "checksum": "sha256:964b1d9563e42a176c24cf5c91616ee5cc40de3b1c92038d7fb0392113eaf159" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:d4424a9c946da1eab876298af8f772d5aab1109a1f551ac2f1cd10ee849568de" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-all-langpacks-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:4d8d164f8bd56b7ab6252f009b38525f39fb161c03713414e1583894a265c50a" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-common-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:91c58481a7e4a9b7f9e0e14844fa73047395c75df95d35afa3b0d8ef3f584491" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gmp-6.1.2-10.el8.aarch64.rpm", + "checksum": "sha256:19efe6f125c00123ccc6d96e51eb61e711f3ea01f32d18cce14d3b614217c58e" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-2.2.20-2.el8.aarch64.rpm", + "checksum": "sha256:f700797810fb2bdbba5a0b31e10c361360a87bac1a282da109273194a25bf6ef" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-smime-2.2.20-2.el8.aarch64.rpm", + "checksum": "sha256:0b4564ad3a799af1a4a0de33b0952f6056d942b0cfa39b73e9375bf0c05b3191" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnutls-3.6.14-3.el8.aarch64.rpm", + "checksum": "sha256:3bf230c85711b285afb968850d7e98eb6b068a06e7ca40e94203e388d8447f48" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gpgme-1.13.1-3.el8.aarch64.rpm", + "checksum": "sha256:c22f0d40fbdaaceec711be0cecc122fac4570d126914ce3694a3d6a1178bd487" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grep-3.1-6.el8.aarch64.rpm", + "checksum": "sha256:81d2e21dad970c08798c0df00bbda21acf165a370f9612e0d14ce69e5dd6c5c3" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:2921d3aa14a509d271ca35256903c142c30f088f7dc889a4c4e15b26316ef5c0" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-minimal-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:126d980678e5b687c775cf857b4013306f1a761353370258a0f04d92a3553f92" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grubby-8.40-41.el8.aarch64.rpm", + "checksum": "sha256:5eddb5c1febbe6e58491f8e9ee8fc9897298b307e0357c01f49d445cf25283c9" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gzip-1.9-9.el8.aarch64.rpm", + "checksum": "sha256:e82699d15e4e6ff7825629d7c1c8a0f50a5519b6e5328472de91a0deddb9cf3d" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hardlink-1.3-6.el8.aarch64.rpm", + "checksum": "sha256:fc51460213b3bf5b67f08f2695aae8d728f614adbbacb917a0825e4ebfbc3e68" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ima-evm-utils-1.1-5.el8.aarch64.rpm", + "checksum": "sha256:cf8fdbfcd359aac8bf55500c24e6843baafe8fef35019126c3616806b41415b3" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/info-6.5-6.el8.aarch64.rpm", + "checksum": "sha256:3f7e5e72ab9e18dbca936b40734c91520242a49a9e98a2f2589f397faa6ad8e8" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iptables-libs-1.8.4-14.el8.aarch64.rpm", + "checksum": "sha256:0fd7dd5b060e7533144ad7a3cae2453ad6f87650010f328879b10c7c4cba0c04" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-c-0.13.1-0.2.el8.aarch64.rpm", + "checksum": "sha256:36aece7b7a65785985bf0b98701514f12735a87517b8578a3eb3710f82ba4765" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-glib-1.4.4-1.el8.aarch64.rpm", + "checksum": "sha256:1143ac623a74d7feaaaf293c18d942d243248f6356628f87216670c10d11687b" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-2.0.4-10.el8.aarch64.rpm", + "checksum": "sha256:10ac3bf7565725a55b0aef56f65befd0d320219fc83adfab6e564c19f8c44bd6" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/keyutils-libs-1.5.10-6.el8.aarch64.rpm", + "checksum": "sha256:e4ec1966f9bc7cbc898fe7550600ae3e9e4f8afbcdd3f6e74afe1965247653ba" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-25-16.el8.aarch64.rpm", + "checksum": "sha256:1091a799d34a42d2e42ac462b4f979a55d17513eca5a00bad9bdba56cca83357" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-libs-25-16.el8.aarch64.rpm", + "checksum": "sha256:6f87f305a3e0e0faf69c2a9d4f277958ca33e85b72c6e4f77a365a5f60ced3d3" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kpartx-0.8.4-2.el8.aarch64.rpm", + "checksum": "sha256:4a27cd4496ebdba821b3c7692eeb0c0fff28c6af69fe4fe9e4bf52511639bd6a" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/krb5-libs-1.18.2-3.el8.aarch64.rpm", + "checksum": "sha256:ca87249f90bac96902d18c11a1f8c80566fa090c6473226bdd147e07e3ed21ec" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libacl-2.2.53-1.el8.aarch64.rpm", + "checksum": "sha256:7c014b54f7929348f614f8f4eb7a1552b8565c0a57f3a75ff6471dc05f30cafe" + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.112", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libaio-0.3.112-1.el8.aarch64.rpm", + "checksum": "sha256:98f838a9775269a0f796151bd54d52c7ac91d4bf1365186772f243bfafbb136a" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libarchive-3.3.2-9.el8.aarch64.rpm", + "checksum": "sha256:dfdec57ff520511d1d4ef9d913d90fc8d6ac98685cbc12fb568c8980f2a73f1a" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libassuan-2.5.1-3.el8.aarch64.rpm", + "checksum": "sha256:0f1a02850c102e2a186787504f965c0c10d6432b9f600c18bc2f520e55f04a8c" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libattr-2.4.48-3.el8.aarch64.rpm", + "checksum": "sha256:6f2bfbe0f23d3b233aacb72c153ee133839353325f028321eb5ea38b0dc06c02" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libblkid-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:d173b35182f28b9dd48e4a942f2a20c659bee2f9ac234b60cf8b995aa2421382" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-2.26-4.el8.aarch64.rpm", + "checksum": "sha256:2cddadff38ccef2364a7e40af0e1d9b3bf9c06869c15ceeb655f3cfa431c2083" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-ng-0.7.9-5.el8.aarch64.rpm", + "checksum": "sha256:62a2878605ca0415fd60adcff4c7068d855d20737498a968fabc646610ccbe5c" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcom_err-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:e5f82f102f51d88aa517bbebd170795a571b7ddc3036574b92b498cc13704d98" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcomps-0.1.11-4.el8.aarch64.rpm", + "checksum": "sha256:ff9fc6467a4c2fd0c22c419a9cdb7a524d1c69d0c87aa09f31728bef9f692f76" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcroco-0.6.12-4.el8.aarch64.rpm", + "checksum": "sha256:86ae7501bdf0149728879f488dd4c86907216cb5b021192347a5c10a55382931" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcurl-7.61.1-12.el8.aarch64.rpm", + "checksum": "sha256:2809ad51c6eb6c9a54d64cccc2cd948f6fd4207f32b4493b3f4a9bd0886c894b" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-5.3.28-39.el8.aarch64.rpm", + "checksum": "sha256:84e7102978d76d80aa40c43efcc71c1e54e819195132df921a8c13cec54328da" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-utils-5.3.28-39.el8.aarch64.rpm", + "checksum": "sha256:621e96e91103f2f701e4ac3b8b8b6ef9aab4db5ab8fb3e141eb02e3f328aed79" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdnf-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:fac29887224d91e8190a569b3ac5be1168034f36c9c234576ea3cefe686e46cd" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libevent-2.1.8-5.el8.aarch64.rpm", + "checksum": "sha256:058822931f4c34c18675116c1b02b718de4044c1019acb0d5f97417f00a30ba7" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libfdisk-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:d6aa17908468b5e2095526664fce6627dec7a02c26625339c14b9278cc39d4a6" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libffi-3.1-22.el8.aarch64.rpm", + "checksum": "sha256:4a40a1538c8a488f32476f96d2461c3b792eb0cf5acb998e397d8a9cef8e5461" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcc-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:3b607f0dbedecb25239e22c1f553c8d70db9d2206a877fa07567fa1a49e233d7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcrypt-1.8.5-4.el8.aarch64.rpm", + "checksum": "sha256:8498846918c7bc7a20553340434cfbfb0d19185adcd0ff52866c6506ab8f747d" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgomp-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:53fa2fd6a138d00c697b827a77bcc25ec498b1d49bb04ef80594e81ccabc165d" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgpg-error-1.31-1.el8.aarch64.rpm", + "checksum": "sha256:5a05f1126ed38f752af247dcdf7c958e738b935b8b6d942fd42f423768f05255" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libidn2-2.2.0-1.el8.aarch64.rpm", + "checksum": "sha256:2dc8e2f52451d1a11b16bbb389a24c58b61a1ba804ee777f9d06dbe4e1fcf6e5" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-1.2.0-2.el8.aarch64.rpm", + "checksum": "sha256:83301ca502322e0634173460bf8fa35572c36ab8cc2e6e600bf9980f845fc857" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.aarch64.rpm", + "checksum": "sha256:f07b1f40ebb1fbe5c24e68a38b5f768a21e2ec2254d4bd8ff61fb0bde72f64ce" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libksba-1.3.5-7.el8.aarch64.rpm", + "checksum": "sha256:704e1dc996a17815c6dcf7029c0ddb2849d40feaab6e9b9c687af9d95fef825c" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmetalink-0.1.3-7.el8.aarch64.rpm", + "checksum": "sha256:fa80a7e82e231dc77b3e44edd2cbf5b3d1657e009e59f15bbe8d50a4290b7c82" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmodulemd-2.9.4-2.el8.aarch64.rpm", + "checksum": "sha256:ba1364539f16d7c8379d7563fd0634651fa8a05b3f7098a21ba96e1f5641f132" + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.16", + "release": "0.2.9.4.2", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmodulemd1-1.8.16-0.2.9.4.2.aarch64.rpm", + "checksum": "sha256:0e33000d382305bd26466545abaadf22c31d1c7d95b4c0475606348df68c4bfc" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmount-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:26b14d8f226962ce712bbccfb245843759e835a24a139eacae86d680043a85a7" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.aarch64.rpm", + "checksum": "sha256:4874e739ed37bc6a5bfdb6069d4620e5f7efe01d60eb9fd2550c550167c99990" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.aarch64.rpm", + "checksum": "sha256:471663fca7e3f609834368d69d8f1f469cfc0d3f3e95dc2b79381722d0368edc" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpcap-1.9.1-4.el8.aarch64.rpm", + "checksum": "sha256:435a2be84a2b38372965dbd60ffed0ed38a616b8100859787a8bb3b19d9fc4d9" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpsl-0.20.2-6.el8.aarch64.rpm", + "checksum": "sha256:6557d001315e85ac123b1378c5aafb81428e2383debcacf3f91c55476cfc48eb" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpwquality-1.4.0-9.el8.aarch64.rpm", + "checksum": "sha256:d6ab7c8790cd6c9a137d908d840c51c547e950d25f6ab8af3c9ad3899ff6c044" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librepo-1.12.0-1.el8.aarch64.rpm", + "checksum": "sha256:2d74e0ab14393921c6160fda8dd533b58c0348acdf5ee5c306ffc64221700de2" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libreport-filesystem-2.9.5-11.el8.aarch64.rpm", + "checksum": "sha256:e55bf252e792f27f076101e94dfbbac97dabeea0f7893a4cb9b111a0b72d187f" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librhsm-0.0.3-3.el8.aarch64.rpm", + "checksum": "sha256:e9487db2fdce1f494ee1582787a1afc1ea4e0429189db8be0ddbb0af2676c4b6" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libseccomp-2.4.3-1.el8.aarch64.rpm", + "checksum": "sha256:cc7e751a62f9a28b82df0bce0ecfb050364b8688ef69473f1910909e44c5eb98" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsecret-0.18.6-1.el8.aarch64.rpm", + "checksum": "sha256:c1b5c4668331e8b05a08e7de432cbfb75f8072401bb6651a24e43f64eff8dcc4" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-utils-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:c82ca1c0ef4b89f75e8e7edbbae4f3eeb2720a4abd56b0927928cff2d9721186" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsemanage-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:140146ebcbadd9b0f2aa5c2fcde5c93888f2d84ce61a2a4cf148ef435d1ba410" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsepol-2.9-1.el8.aarch64.rpm", + "checksum": "sha256:c8a28b4587888435c51f6d1ce42f48b08fb0256e4029ea569e9a02adcb82c85a" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsigsegv-2.11-5.el8.aarch64.rpm", + "checksum": "sha256:bf267d9571cf568375e261d593236750f400ac536c1c818513106482ebc3fb10" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsmartcols-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:f35c0da3cff05ded33c0cb4f202dbb52a5caabec8b1897d5057df83c284d62f1" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsolv-0.7.11-1.el8.aarch64.rpm", + "checksum": "sha256:2397506a63455e543b201938f605e687de5590d9a06282824e2f6bfdf5e0f149" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libss-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:268d9232f0853037100432e9363c659cf99927e03f759fd4884643b560710cd6" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-0.9.4-2.el8.aarch64.rpm", + "checksum": "sha256:3ee6a4f61935c2f0698ad2c4834a5864920a1e48d55c7800da7c382249895e39" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libstdc++-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:f4e63e7eedc0266a575eb6107f41c5f20ca0505a0e80145c21b9741674d5c0b5" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtasn1-4.13-3.el8.aarch64.rpm", + "checksum": "sha256:ed28e1e31109e27ce1c676914364c9f1dd46b71d00cb4cf13931f0fec6cf6978" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtirpc-1.1.4-4.el8.aarch64.rpm", + "checksum": "sha256:481bbd6d73415d437a73eee7977ec370299acdac44b215a026652debba31783d" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libunistring-0.9.9-3.el8.aarch64.rpm", + "checksum": "sha256:da4b9bfad26d559485ade669556512acfe93ba23d204f2556bac82c09401b4e7" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libusbx-1.0.23-3.el8.aarch64.rpm", + "checksum": "sha256:01e486a3be67325e9692e909f5c6534137ee6a6df185ba2c09d4d50fe6c738f6" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libutempter-1.1.6-14.el8.aarch64.rpm", + "checksum": "sha256:ad07261ff4f478be9511f7ee749bfbe8b2ba8e28696c2f561caa20e35c535134" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libuuid-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:95de1777f7e8a734445c5d45e0b77da8b6c41a9b504582ed266d852c677a936b" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libverto-0.3.0-5.el8.aarch64.rpm", + "checksum": "sha256:532d46a4c0e68bd45eabc3e2ba6d570880344044e1034f5f347b37c470d0dced" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxcrypt-4.1.1-4.el8.aarch64.rpm", + "checksum": "sha256:876ffb285aaeddb2c18ae32527bd4ee202710bd8e18d5b410af22937646dcdec" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxml2-2.9.7-8.el8.aarch64.rpm", + "checksum": "sha256:fb56b7a416e12da0782ae8ba7396bc03a2f8844c2efcb5df3f8b9e74eb8b8059" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libyaml-0.1.7-5.el8.aarch64.rpm", + "checksum": "sha256:7864fbc866ae5a3e59b4f0f114b77ff52b55e76c5388a917f82a6097f02a4db7" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libzstd-1.4.4-1.el8.aarch64.rpm", + "checksum": "sha256:19d1de27d2f62b4a55735233807f70a1e8ff7551fed97ee8650dbd09c1ef50ea" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lua-libs-5.3.4-11.el8.aarch64.rpm", + "checksum": "sha256:bc0f9bd34ac6a01dd7272b87e1b7a33045ff8c6793cac02fa639dfc9341e8215" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lz4-libs-1.8.3-2.el8.aarch64.rpm", + "checksum": "sha256:64ac5cb6fd3da1610812795ce17e09648d89c87513d6284b852a3455b0831d3a" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mpfr-3.1.6-1.el8.aarch64.rpm", + "checksum": "sha256:320ced09e242f09047f4fab0a7f66aba6de2e42583f6a2e164eadcc1ffd0b915" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-6.1-7.20180224.el8.aarch64.rpm", + "checksum": "sha256:8ac1003d722e3d5f383c9b970bf6dfbc905007a624abadb63e520d7a93993747" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-libs-6.1-7.20180224.el8.aarch64.rpm", + "checksum": "sha256:f99f5edde9ad4574b84264c467420c910b31f78683fbf1b63d106a7e6c9d64a3" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/nettle-3.4.1-2.el8.aarch64.rpm", + "checksum": "sha256:e2c4ac0f7abf75cbcc7a6fb35412820c267f1a8ce614f41b60d901918c4616d5" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/npth-1.5-4.el8.aarch64.rpm", + "checksum": "sha256:daf36ee86ec6001770ae68bdd82409526faf4b9b1313a6b74fb54cfb98ff571e" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openldap-2.4.46-15.el8.aarch64.rpm", + "checksum": "sha256:cfa188d39884fd4ba36d27e8fb25aed9dbd26efccffbfd01a24c2c580fdb96f1" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-1.1.1g-9.el8.aarch64.rpm", + "checksum": "sha256:3ef63ecbebf844bcf682c9482dc0ddd158c955b0f066b62eb9575bb9a9642db5" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-libs-1.1.1g-9.el8.aarch64.rpm", + "checksum": "sha256:448d3ff44e7f32f3b33e891180e248dc1bcd4d410f68015a8b0c30dc7c385aca" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-pkcs11-0.4.10-2.el8.aarch64.rpm", + "checksum": "sha256:290c83afcd2b0a2b17aab95cf72a85da5f8b9f9a9862857c919a0f43e3fce70e" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/os-prober-1.74-6.el8.aarch64.rpm", + "checksum": "sha256:43ab42c8a58267936a89da99e37d3b9fc56489e958060f600ba047445ca44ee3" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-0.23.14-5.el8_0.aarch64.rpm", + "checksum": "sha256:651f38873d3356ec4efb27d04658541080d11cf1ece6335a07db1ca089fa7da3" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.aarch64.rpm", + "checksum": "sha256:ec40be9e0b2bb03f7b057a7a9342ffbd86129d58828fb310f445bc506261eb0e" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pam-1.3.1-11.el8.aarch64.rpm", + "checksum": "sha256:04c031a07bde4360484a0180e832036d3ac45a95c4839e54d7a02423df5485ef" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre-8.42-4.el8.aarch64.rpm", + "checksum": "sha256:fea4eb54fe59451b76fb40b9bd15ff41f0f51bb7371f94b2f5df572ef917d037" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre2-10.32-2.el8.aarch64.rpm", + "checksum": "sha256:ce8c92fa2bef1770f44992db24e1cb8cc850feab03a74cf0ebf741ecb0d160ea" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pigz-2.4-4.el8.aarch64.rpm", + "checksum": "sha256:f847957437e7f24844930c4a3ff64c5f7877f083553f48eeadca3c5f5e5c728e" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-3.6.8-30.el8.aarch64.rpm", + "checksum": "sha256:68593fad4413255772bd08ed7f8b578332f0f53e002c8c7473d90c966a87131b" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/policycoreutils-2.9-9.el8.aarch64.rpm", + "checksum": "sha256:b90ce065d5ea98845733ff06e47d385937f6293ebddf52144c80f5fe1f296307" + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/polkit-libs-0.115-11.el8.aarch64.rpm", + "checksum": "sha256:861346b2e683c09a53c9418a9ed08faf7448e066e3111482c70722cb62a6edce" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/popt-1.16-14.el8.aarch64.rpm", + "checksum": "sha256:4e4923f05d0032263d570075b9b832b9fc3550cd8f82f9a6b0b9b25061726110" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/procps-ng-3.3.15-2.el8.aarch64.rpm", + "checksum": "sha256:d890d028f59e2553730fad3dbea0e1a245c92c24836513fa2281194b1c90b53a" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-gpg-1.13.1-3.el8.aarch64.rpm", + "checksum": "sha256:90405803c0159cdf0f74a26b6ce064cfd9973e59232b2923ed171a38fc5684a6" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-hawkey-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:4909edde46b5b2b58d228bacafa3bab5bc5847559d591d59ecd59cdf50d36db4" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libcomps-0.1.11-4.el8.aarch64.rpm", + "checksum": "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libdnf-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:9b6fcdd19caee5fe77b9ed17adb3f11769a7109ebcf52d3cb3358d5a9eecc391" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libs-3.6.8-30.el8.aarch64.rpm", + "checksum": "sha256:65b8d755ff01dfefa423d2f0bd6fd54cfc4c580da63510e19cf178abb6e26172" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-rpm-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:b5b1f5f7a02f70db056861813ddcf181f2ebba507cd368fbe2c32f262edf7fc6" + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/readline-7.0-10.el8.aarch64.rpm", + "checksum": "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-8.3-0.2.el8.aarch64.rpm", + "checksum": "sha256:a6292dd846bc471b22409fc95a5e09c88bcb6176251dc5cc11f4b14a73ddda11" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-eula-8.3-0.2.el8.aarch64.rpm", + "checksum": "sha256:784d385116891056b618722c933d43c5b395b92fa82e5bc797081317ec6a82ba" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:47b483c0f556c56f0b1f468603c57834864902ae5a849a18c8a0ca5f76d66c86" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-build-libs-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:c633b98b4dbf96674a69573404819c34d66eb7e19820283fc588f6b10b0e3fc8" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-libs-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:d3fb5a473c44cd8ae6b94d6bf3fc552553d8f4ef28eed439658ea38990ab9db5" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:0a885c6dc6abd969b828bf2fd7063ee884e6d058eaf405b02f3dd6efb6c66bac" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:0bb7024125ca67119612e55a92da13c989e0306ddd7de7e655a679c963939ef7" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sed-4.5-2.el8.aarch64.rpm", + "checksum": "sha256:125c92f23d87b905c21e9f7669f0ec6e41428ab63c8c13f63db8980f292797d5" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shadow-utils-4.6-10.el8.aarch64.rpm", + "checksum": "sha256:a840b8193ce9b1b72e3783b9a9bb2ec91947ba3b6f7ac973ae8e0e20a7059117" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shared-mime-info-1.9-3.el8.aarch64.rpm", + "checksum": "sha256:19cd894b4154d1a8521c6884cfd2a6eaf1f498b7dec5cc31408f8535b9098f2a" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sqlite-libs-3.26.0-10.el8.aarch64.rpm", + "checksum": "sha256:207e6396488c1db18fb7b1f2b9952f48c2625f042c5f6a901d41974ce376b0e0" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-239-36.el8.aarch64.rpm", + "checksum": "sha256:d4467ba499fe1ddd82746ad00d7e86bea59c4827fe1ff8c05132bad1f93ddb7f" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-libs-239-36.el8.aarch64.rpm", + "checksum": "sha256:800c9a0d718c641ceee26c8f625b2dcd79a33963e9e7a11930678dc99582a2d0" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-pam-239-36.el8.aarch64.rpm", + "checksum": "sha256:986683a0edb615a5d45a9c1b0ee3d27f8032c2667cad58d24526085e41010992" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-udev-239-36.el8.aarch64.rpm", + "checksum": "sha256:3fe7c10c144c8fffc00d144317a2bf8029bd9d048432bccfc352dfc6f0995680" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tar-1.30-5.el8.aarch64.rpm", + "checksum": "sha256:ba66a87402ccc8515e164f597f5d254ad9513979fe3ca1ffabf63c915c0daa73" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-0.3.14-4.el8.aarch64.rpm", + "checksum": "sha256:d695df94220c2ef990e502123b3bd8ede8fcfb4f738346dd98d999559b01b6b3" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-lib-0.3.14-4.el8.aarch64.rpm", + "checksum": "sha256:fb263177eee60c26b7acaa76cb640c3d7ab6928e73c8af80b2111a247bd61ece" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/util-linux-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:83e470505f558f8cf8414a7fc8fb0d1bc4b16ed15d05ccf7e46332b04d1a0d85" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/which-2.21-12.el8.aarch64.rpm", + "checksum": "sha256:0f32d23a6b2b15603d710b0317238ef8dde3de61eda96713e21d86c9fc7a98ed" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xfsprogs-5.0.0-4.el8.aarch64.rpm", + "checksum": "sha256:760d9056891a60c200984f0655aee1876b3bf890f7486306c05db8e295ae7843" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-5.2.4-3.el8.aarch64.rpm", + "checksum": "sha256:e426534c59b3a35068877d324dd34d643ad7c84d2c406b2e6502ac6c2a367d39" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-libs-5.2.4-3.el8.aarch64.rpm", + "checksum": "sha256:094eff70081085f87a7ac0dedafa851ad8ac8e03f9f328636df4a0f8301d0e87" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/zlib-1.2.11-15.el8.aarch64.rpm", + "checksum": "sha256:cf9a0bbaa7bd075d2af532586ee93ab92b96d9859f53a57f85cd7e0309f8fff6" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libxkbcommon-0.9.1-1.el8.aarch64.rpm", + "checksum": "sha256:a07f96031fbe9507a8d6bb0e14cf0783bc615552e4cfb75131672072f5729de8" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/memstrack-0.1.8-1.el8.aarch64.rpm", + "checksum": "sha256:aa1a6a85493590efb9c0235c15d6a05e8b119f385dc13b3e3abd2315f8c4a6e0" + }, + { + "name": "ostree", + "epoch": 0, + "version": "2020.3", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/ostree-2020.3-3.el8.aarch64.rpm", + "checksum": "sha256:a78481500097111da309fad544d6512b73c12cb0ce14813e1ea4124e9d26dbba" + }, + { + "name": "ostree-libs", + "epoch": 0, + "version": "2020.3", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/ostree-libs-2020.3-3.el8.aarch64.rpm", + "checksum": "sha256:497405568863a64e66904df3794d9da933738612b6185fc46efd9a63fdb5d84a" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/pinentry-1.1.0-2.el8.aarch64.rpm", + "checksum": "sha256:22c0e44318e36e04ad1eb4632dcf25db991f481f9a543387d372e1f2ad92561f" + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-unbound-1.7.3-14.el8.aarch64.rpm", + "checksum": "sha256:6ae316dfb9723d13a8d36d98d109d4a55017b568ee2070279f1bdccdc699862a" + }, + { + "name": "python36", + "epoch": 0, + "version": "3.6.8", + "release": "2.module+el8.1.0+3334+5cb623d7", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.aarch64.rpm", + "checksum": "sha256:5996ff948b5874f894c5ce3495652e6de552addf2331fd82193023d77994ef8f" + }, + { + "name": "qemu-img", + "epoch": 15, + "version": "4.2.0", + "release": "29.module+el8.3.0+7212+401047e6", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.aarch64.rpm", + "checksum": "sha256:d20f4bf44fcc90509e7afca364eae0a55c8f33df2f8a69e266f5fcd4b5fa2e4b" + }, + { + "name": "rpm-ostree", + "epoch": 0, + "version": "2020.2", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rpm-ostree-2020.2-2.el8.aarch64.rpm", + "checksum": "sha256:53b632a02518eacbcaec94404927dddaf860638cb594f4c9b898b89bd314ff59" + }, + { + "name": "rpm-ostree-libs", + "epoch": 0, + "version": "2020.2", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rpm-ostree-libs-2020.2-2.el8.aarch64.rpm", + "checksum": "sha256:d4410304f8470ecad6043d55d6bd9a8efc68c24584e90ed451d74762c6f9ae62" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/unbound-libs-1.7.3-14.el8.aarch64.rpm", + "checksum": "sha256:727c08fe072ef85837e8db30574aec712cdf67a062eead3e5481ba08425b2395" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "packages": [ + { + "name": "ModemManager", + "epoch": 0, + "version": "1.10.8", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ModemManager-1.10.8-2.el8.aarch64.rpm", + "checksum": "sha256:80bc5c2d45224a1948f0101228da989138d4006a77c67560247a6edc17e7c22a" + }, + { + "name": "ModemManager-glib", + "epoch": 0, + "version": "1.10.8", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ModemManager-glib-1.10.8-2.el8.aarch64.rpm", + "checksum": "sha256:8ccbbfc215ecd95f8774055c44d324eea401a5e22b3d24410d67c7a509aa97ad" + }, + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-1.26.0-0.2.el8.aarch64.rpm", + "checksum": "sha256:63c64d526e9820ddc57a77c053674eeccefef33f16af536dd9b47e816db06988" + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-libnm-1.26.0-0.2.el8.aarch64.rpm", + "checksum": "sha256:0229afd544d1a59bfe26c095ad338bac7e0d2f10aab88bd895f3766e8f54fff3" + }, + { + "name": "NetworkManager-wifi", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-wifi-1.26.0-0.2.el8.aarch64.rpm", + "checksum": "sha256:f4782c2ae7e7261f50f63e6ed729f5aeb9ac62614c77c9e09ce9b6f43ef3fe1c" + }, + { + "name": "NetworkManager-wwan", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/NetworkManager-wwan-1.26.0-0.2.el8.aarch64.rpm", + "checksum": "sha256:de0ef345ee3912dd38bd8b652f8698e08ec459e8f0e2f4383e837ac2232d3dc2" + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/acl-2.2.53-1.el8.aarch64.rpm", + "checksum": "sha256:b984d8576520272b1011cc46b03c666cd6abc1bf74b428a8781ca58c6287a007" + }, + { + "name": "attr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/attr-2.4.48-3.el8.aarch64.rpm", + "checksum": "sha256:81c075f5e4c2c10ec6ac49a1a4c54ea22318124fbcf4ad5afdbddeb055cf2552" + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm", + "checksum": "sha256:d82c81115472a70d60d2320e254762c76a583ad2190ad45068476c77512588af" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm", + "checksum": "sha256:d9a4628bd8d3e776f626be4cb5edec305c2ff894d7c5cc7e33e212545721053a" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bash-4.4.19-12.el8.aarch64.rpm", + "checksum": "sha256:518e5412ce19ab733f62c334da8c5545a212c4c971d513eb95590b08a14e3772" + }, + { + "name": "bash-completion", + "epoch": 1, + "version": "2.7", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bash-completion-2.7-5.el8.noarch.rpm", + "checksum": "sha256:b705e2abbce31768f9dde08b2e3bb4756f2512ad22ac94f4bb6761c530b66f71" + }, + { + "name": "bind-export-libs", + "epoch": 32, + "version": "9.11.20", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bind-export-libs-9.11.20-3.el8.aarch64.rpm", + "checksum": "sha256:dfaf74e2116ee30d1882b3461de90d3fb6faad4468eb0678f845d105b4439a83" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/brotli-1.0.6-2.el8.aarch64.rpm", + "checksum": "sha256:796cac51b2c1092c4faad372717c6ddc37cad9757111a41e531fe0a8d6c0a9ea" + }, + { + "name": "bubblewrap", + "epoch": 0, + "version": "0.4.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bubblewrap-0.4.0-1.el8.aarch64.rpm", + "checksum": "sha256:40096d3516d115e83bc2aa2b5877708f4511961d524e03ce562f9f1872fa27ab" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bzip2-libs-1.0.6-26.el8.aarch64.rpm", + "checksum": "sha256:2d84f6765b1645f867527f493b6153470602a80c75f81545bf619aa92127e4da" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/checkpolicy-2.9-1.el8.aarch64.rpm", + "checksum": "sha256:adb9e37c63a055bc106a9676c10a85fdedcb4af64ae062249732e158bc0ae9af" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/chkconfig-1.13-2.el8.aarch64.rpm", + "checksum": "sha256:6a6aa18217ae72a0b33e4302da927e6ded92520cbf4d48a5030d4a2f95eeb5d8" + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/chrony-3.5-1.el8.aarch64.rpm", + "checksum": "sha256:13f55a1fea88c4720dc704fa19573325ddde8c1c60ed71e96f98a9e5a6508d44" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-8.30-8.el8.aarch64.rpm", + "checksum": "sha256:15c33124ac0479d34f1f58d2bd24cc52db7089b4a8681c276a3fd0d6dfe4fc72" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-common-8.30-8.el8.aarch64.rpm", + "checksum": "sha256:e085cf8bddcf09c908d925688dae077300d2964b40bd060af252d26a963cfe50" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cpio-2.12-8.el8.aarch64.rpm", + "checksum": "sha256:dcda73e0ea7b5d2710528fc6df135d435281d1f4d2be0018bb6f1858e818d599" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-2.9.6-15.el8.aarch64.rpm", + "checksum": "sha256:b7bc10e9947763df6e6177b3dbbe77c21f55ed60d26c4c28bfe14a98f7e06189" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-dicts-2.9.6-15.el8.aarch64.rpm", + "checksum": "sha256:acd4674b3fbe01d6cf94eb18a81cdb00beb73bf3d4a25a28e234f31498f5c389" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cryptsetup-2.3.3-1.el8.aarch64.rpm", + "checksum": "sha256:3f04145851379fd54be1aecfb0f73c91e9385ce7634b9beb1703cecfbae65ed2" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cryptsetup-libs-2.3.3-1.el8.aarch64.rpm", + "checksum": "sha256:689577d74311a7327aab6fe412a803d72b790957e863b6b78a8621a040306919" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/curl-7.61.1-12.el8.aarch64.rpm", + "checksum": "sha256:7d3ddbaae06c7fb8d24449e11b418ee07bdd9e07f7f0af57741d220b97228557" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.aarch64.rpm", + "checksum": "sha256:41cc2d507fdfbba939c00164a563e770d466f992cb64d3c51a79aec20b31d6d1" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:dc37d12420a2593c46619e9b67a0115255a0c7334f547871ce08e329bf5d15a2" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-daemon-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:f96bc0d82d4c6934659c23a6771515e78bf2252ed24d32c78001260ee6e36c8d" + }, + { + "name": "dbus-glib", + "epoch": 0, + "version": "0.110", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-glib-0.110-2.el8.aarch64.rpm", + "checksum": "sha256:b847207a13bec4b7fcfaaf3668d93bc5ad40a6477f976e6aeb59ab431545d0c5" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-libs-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:bae965c689b08ce42f10366e4b441504432ac353d30edb8b4b2cfc798069434f" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-tools-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:eaf3c7104d3ebd0cdda3d6ce44f4c79eec0a8ce3ce71cbb0d9dfe716f58a105d" + }, + { + "name": "dbxtool", + "epoch": 0, + "version": "8", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbxtool-8-5.el8.aarch64.rpm", + "checksum": "sha256:dfea8e48e0cf3d8984237e3d5fb715c7edd9b1f8db03faaefc42a8046b45dab8" + }, + { + "name": "dejavu-fonts-common", + "epoch": 0, + "version": "2.35", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dejavu-fonts-common-2.35-6.el8.noarch.rpm", + "checksum": "sha256:7ce6aa282f9f23c46c44186595924d05f4e7a899b504eb95a0f87008f6620268" + }, + { + "name": "dejavu-sans-mono-fonts", + "epoch": 0, + "version": "2.35", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dejavu-sans-mono-fonts-2.35-6.el8.noarch.rpm", + "checksum": "sha256:dd379385bd1d2e05f50c4795e5a0eff9030fdac0fd2579bb4b56233257672b27" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-1.02.171-3.el8.aarch64.rpm", + "checksum": "sha256:6fbfaa1e1b1bb4e2362cf3dce0f59a94a78b457904234cbccbe6afacde311c26" + }, + { + "name": "device-mapper-event", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-event-1.02.171-3.el8.aarch64.rpm", + "checksum": "sha256:35526b38ee65e37508867608143abd366f236c1dcecbdac3e3b7aafddfe797ff" + }, + { + "name": "device-mapper-event-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-event-libs-1.02.171-3.el8.aarch64.rpm", + "checksum": "sha256:a959efc9ecb3139bf6fa32b25fc4e821aa86230f1577d6acc3de273d26636587" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-libs-1.02.171-3.el8.aarch64.rpm", + "checksum": "sha256:057b6632870b8c3c0c950a19092ef2f9749bf3d1a37ccb083bf42ca6404db066" + }, + { + "name": "device-mapper-persistent-data", + "epoch": 0, + "version": "0.8.5", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-persistent-data-0.8.5-3.el8.aarch64.rpm", + "checksum": "sha256:5f2581acb411d6bb5e4d04fc58eaf84f3774b17e527e9e357da80e597300edff" + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dhcp-client-4.3.6-41.el8.aarch64.rpm", + "checksum": "sha256:157044e6cf5cc52b64b9a5d621fdb5b0846a527daa428382330e68bdb47789eb" + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dhcp-common-4.3.6-41.el8.noarch.rpm", + "checksum": "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2" + }, + { + "name": "dhcp-libs", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dhcp-libs-4.3.6-41.el8.aarch64.rpm", + "checksum": "sha256:9a1c6f2b18126214e9afa768bbf16b29b89ce3169ccbd4bc169000eed143dcb4" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/diffutils-3.6-6.el8.aarch64.rpm", + "checksum": "sha256:3a684fd5f1b1d417c6c3e9d1f0d5b846138aa06450ff246425d43d4a20bd619e" + }, + { + "name": "dmidecode", + "epoch": 1, + "version": "3.2", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dmidecode-3.2-6.el8.aarch64.rpm", + "checksum": "sha256:deaa0958c9fb57773dfdf74567b658d273cea81186b913aa1473867dc07b335b" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dnf-plugin-subscription-manager", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-plugin-subscription-manager-1.27.9-1.el8.aarch64.rpm", + "checksum": "sha256:925c70a394a76004087fd6e8d94f7edab9de9efb2b81740c875698532ba124c7" + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dosfstools-4.1-6.el8.aarch64.rpm", + "checksum": "sha256:2efbfbcce7ef24e433d3c304b6b6b022d1b1b8a972969da1adb1c3c85f9625a7" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-049-89.git20200625.el8.aarch64.rpm", + "checksum": "sha256:4d8edaa317fd508226bb5421ef423470f3e9153167222dee7bf8fb2346b7875b" + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-config-generic-049-89.git20200625.el8.aarch64.rpm", + "checksum": "sha256:2e26672ae726ba833187292dcc6c1673a07e26d974fef2f71a83407989eea8a1" + }, + { + "name": "dracut-network", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-network-049-89.git20200625.el8.aarch64.rpm", + "checksum": "sha256:f769edf78f42bae1bd183a6f4a49d74822db2b5e830147178d197be1cd67a306" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:3256e78263462d5d7ab37b696992aedd6f810431641ce8d1e1bc198c797b402b" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:da4d193d5f0caf7a196f3bd4aa1225072b522521d82fca8edecc6546b5460ac6" + }, + { + "name": "efi-filesystem", + "epoch": 0, + "version": "3", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efi-filesystem-3-2.el8.noarch.rpm", + "checksum": "sha256:17501958f52d2db1417cab8dd5ca261bf447fd93eb62b80173f9875c3012b700" + }, + { + "name": "efibootmgr", + "epoch": 0, + "version": "16", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efibootmgr-16-1.el8.aarch64.rpm", + "checksum": "sha256:c321e3a0253fb2691035135b3d3740faa76b8e9c84a0378f480ff85ddd9f16bd" + }, + { + "name": "efivar", + "epoch": 0, + "version": "36", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efivar-36-1.el8.aarch64.rpm", + "checksum": "sha256:1b8c037a6c67959b52894f38444ed1133356c65cec2eed3acf37c45cf8609e63" + }, + { + "name": "efivar-libs", + "epoch": 0, + "version": "36", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/efivar-libs-36-1.el8.aarch64.rpm", + "checksum": "sha256:db817b5d2f9d678fd0fee30e52ed080fdb5c9dd723cd57f7d6b0133293502047" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:c88d1656b8001ff79175f7d3b7818681e40e54e8fec6fb8556ba8141d437fcfa" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libelf-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:b140eb203fe889d1c75ef3b5527033cfeb7a6f0c813638a607c9f10faf52a34b" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libs-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:98dd1582b8ab27085379a3a7e598a6e261c62f97a5f3689447cbf1d4af9ae46c" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/expat-2.2.5-4.el8.aarch64.rpm", + "checksum": "sha256:77b56d825eb31ca191254d17a4c9399e3c4fe8af42a528c2ad4424bfd865b82d" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-5.33-16.el8.aarch64.rpm", + "checksum": "sha256:f7ccbe0d7b4a61b5a47253f168f8efcdbf41ad0755e678f9edcd2f6a69c93c7d" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-libs-5.33-16.el8.aarch64.rpm", + "checksum": "sha256:3ee66f993ee567b2457a221ed364ae4f8dfe783a5f0e723d9169f95d12f9e696" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/filesystem-3.8-3.el8.aarch64.rpm", + "checksum": "sha256:634a3cbf0b334e901b6887176fa1b98246be7c4010b4c21cb6fd8fa7aa5fdf94" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/findutils-4.6.0-20.el8.aarch64.rpm", + "checksum": "sha256:540fa90864b4eb0176b56e0c5e9d7bc6130985288ae297b4c38950381b08a827" + }, + { + "name": "firewalld", + "epoch": 0, + "version": "0.8.2", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/firewalld-0.8.2-1.el8.noarch.rpm", + "checksum": "sha256:c5098f41849af65b808baac594539440fcdffea7afce4239eb41885eccfd67e2" + }, + { + "name": "firewalld-filesystem", + "epoch": 0, + "version": "0.8.2", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/firewalld-filesystem-0.8.2-1.el8.noarch.rpm", + "checksum": "sha256:769b1ac34ba3aa35337b734b8548dcf9e8b41476b9b2093756341bcbd5969a36" + }, + { + "name": "fontpackages-filesystem", + "epoch": 0, + "version": "1.44", + "release": "22.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fontpackages-filesystem-1.44-22.el8.noarch.rpm", + "checksum": "sha256:db1fad3c2d8735e69084bd4b09ea963938e4dde2f2e096dc7a4ce146f18b7ab0" + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.9.1", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/freetype-2.9.1-4.el8.aarch64.rpm", + "checksum": "sha256:b7955bb1ba7e944f6e5c36713db3bbc570ba0eb8de11ec6a1fa28cfc5c0029c8" + }, + { + "name": "fuse", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fuse-2.9.7-12.el8.aarch64.rpm", + "checksum": "sha256:0c851bb11d2bce1ccb4804a958d21c1082267b8bc2f7f825e5236857e1f35274" + }, + { + "name": "fuse-common", + "epoch": 0, + "version": "3.2.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fuse-common-3.2.1-12.el8.aarch64.rpm", + "checksum": "sha256:37fe346ef6d0ddec5894cfcf96d04ca41924a16a8199814ce8ae7f125183974d" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fuse-libs-2.9.7-12.el8.aarch64.rpm", + "checksum": "sha256:e08305aecd924631284ddaeae39a83cca85495389d4ddef75410a32af49f946d" + }, + { + "name": "fuse3-libs", + "epoch": 0, + "version": "3.2.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fuse3-libs-3.2.1-12.el8.aarch64.rpm", + "checksum": "sha256:a18a228e692988cd11aa0ee7575d620cc20419e51d3bbb9fdbcbdb2e53fe3554" + }, + { + "name": "fwupd", + "epoch": 0, + "version": "1.4.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fwupd-1.4.1-1.el8.aarch64.rpm", + "checksum": "sha256:e6bcb623a411ed404c596a22b5fcd79080b3444d948b819f8901f92a36683e70" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gawk-4.2.1-1.el8.aarch64.rpm", + "checksum": "sha256:e0faa8a6bc43432619a2b6a26e9f1323d30cda945580d8bc0f6c2fe742b71924" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-1.18-1.el8.aarch64.rpm", + "checksum": "sha256:3f5765cebcac288cc1b5b118acfbc2016eda7b81ad73923f6f9c21e4731eb0d9" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-libs-1.18-1.el8.aarch64.rpm", + "checksum": "sha256:8ef2fcbe5a8d6e7d393d28838ff458336d16e006bc7d19921f460eb105b88570" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-0.19.8.1-17.el8.aarch64.rpm", + "checksum": "sha256:fddf61e9024c41073442ccff0c9990fa004e9b183f391c4e3cf3853e5ae6062c" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-libs-0.19.8.1-17.el8.aarch64.rpm", + "checksum": "sha256:ce6960fa7831611815e163864a91b70b0ab1ef0f446c2cad1eec13404822cad5" + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.56.1", + "release": "1.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glib-networking-2.56.1-1.1.el8.aarch64.rpm", + "checksum": "sha256:6b1dcf4c02ee8c588c0ae44af92ae1060dcdc44f197e624a71fb31c86554ad2c" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glib2-2.56.4-8.el8.aarch64.rpm", + "checksum": "sha256:964b1d9563e42a176c24cf5c91616ee5cc40de3b1c92038d7fb0392113eaf159" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:d4424a9c946da1eab876298af8f772d5aab1109a1f551ac2f1cd10ee849568de" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-common-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:91c58481a7e4a9b7f9e0e14844fa73047395c75df95d35afa3b0d8ef3f584491" + }, + { + "name": "glibc-minimal-langpack", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-minimal-langpack-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:b94335960fd37c4f4fd43f30dc4e960d76d9a4983cefb6236163fe2dc1babbfb" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gmp-6.1.2-10.el8.aarch64.rpm", + "checksum": "sha256:19efe6f125c00123ccc6d96e51eb61e711f3ea01f32d18cce14d3b614217c58e" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-2.2.20-2.el8.aarch64.rpm", + "checksum": "sha256:f700797810fb2bdbba5a0b31e10c361360a87bac1a282da109273194a25bf6ef" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-smime-2.2.20-2.el8.aarch64.rpm", + "checksum": "sha256:0b4564ad3a799af1a4a0de33b0952f6056d942b0cfa39b73e9375bf0c05b3191" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnutls-3.6.14-3.el8.aarch64.rpm", + "checksum": "sha256:3bf230c85711b285afb968850d7e98eb6b068a06e7ca40e94203e388d8447f48" + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.56.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gobject-introspection-1.56.1-1.el8.aarch64.rpm", + "checksum": "sha256:e160910d31a37afeea87df306264fb1f727cbca574d2c234cdca856f5311fbd6" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gpgme-1.13.1-3.el8.aarch64.rpm", + "checksum": "sha256:c22f0d40fbdaaceec711be0cecc122fac4570d126914ce3694a3d6a1178bd487" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grep-3.1-6.el8.aarch64.rpm", + "checksum": "sha256:81d2e21dad970c08798c0df00bbda21acf165a370f9612e0d14ce69e5dd6c5c3" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-efi-aa64", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-efi-aa64-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:635d847cc4dec8a8e1b418adfda2bc0a9e1814ed6c2c6154a5430029d83abd24" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:2921d3aa14a509d271ca35256903c142c30f088f7dc889a4c4e15b26316ef5c0" + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-extra-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:4633c2b5a93723e1cad477b81f9ccefafed342f8c4474ec305058f99c713229d" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-minimal-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:126d980678e5b687c775cf857b4013306f1a761353370258a0f04d92a3553f92" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grubby-8.40-41.el8.aarch64.rpm", + "checksum": "sha256:5eddb5c1febbe6e58491f8e9ee8fc9897298b307e0357c01f49d445cf25283c9" + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.32.0", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gsettings-desktop-schemas-3.32.0-5.el8.aarch64.rpm", + "checksum": "sha256:83ffb9eac35272ff70a84f5160b74554fbf3f886ee17ebf55615928085baa7cb" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gzip-1.9-9.el8.aarch64.rpm", + "checksum": "sha256:e82699d15e4e6ff7825629d7c1c8a0f50a5519b6e5328472de91a0deddb9cf3d" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hardlink-1.3-6.el8.aarch64.rpm", + "checksum": "sha256:fc51460213b3bf5b67f08f2695aae8d728f614adbbacb917a0825e4ebfbc3e68" + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.20", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hostname-3.20-6.el8.aarch64.rpm", + "checksum": "sha256:7fc33f147b99749fdbae420ed51277cb99d9b6418b7f739fe51c7563945bc0d7" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ima-evm-utils-1.1-5.el8.aarch64.rpm", + "checksum": "sha256:cf8fdbfcd359aac8bf55500c24e6843baafe8fef35019126c3616806b41415b3" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/info-6.5-6.el8.aarch64.rpm", + "checksum": "sha256:3f7e5e72ab9e18dbca936b40734c91520242a49a9e98a2f2589f397faa6ad8e8" + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.00.8", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/initscripts-10.00.8-1.el8.aarch64.rpm", + "checksum": "sha256:f7de2bbb3653c3033d43f645ac26e91c788527c0b4d5e7238dea54c3adc6f1a1" + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.2.4", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ipcalc-0.2.4-4.el8.aarch64.rpm", + "checksum": "sha256:21685a7b79484a6d684efd86af6fb23dc13aaadc534cc4c4ae3edc0ceb84051b" + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.3.0", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iproute-5.3.0-5.el8.aarch64.rpm", + "checksum": "sha256:f4f5cc3080dc150c47b27383a344937fe17a679cb7046ca76165654d4e207a0b" + }, + { + "name": "ipset", + "epoch": 0, + "version": "7.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ipset-7.1-1.el8.aarch64.rpm", + "checksum": "sha256:da92fada5920a24577f614e1167e3b339d516ca646346c04c71ef2bd97295653" + }, + { + "name": "ipset-libs", + "epoch": 0, + "version": "7.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ipset-libs-7.1-1.el8.aarch64.rpm", + "checksum": "sha256:8ae407fb97bfa1bcd669f4263d0b45dd7fc7e97c1371cc4b8f4360024a56e7bb" + }, + { + "name": "iptables", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iptables-1.8.4-14.el8.aarch64.rpm", + "checksum": "sha256:bdcb042c2ff87e5c07685f70e04b051197199bd8465c5e26ceda82a13977d040" + }, + { + "name": "iptables-ebtables", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iptables-ebtables-1.8.4-14.el8.aarch64.rpm", + "checksum": "sha256:da671d59c65465dab426361abaaf42c3f3c0216e936cded295719e368066bc6b" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iptables-libs-1.8.4-14.el8.aarch64.rpm", + "checksum": "sha256:0fd7dd5b060e7533144ad7a3cae2453ad6f87650010f328879b10c7c4cba0c04" + }, + { + "name": "iputils", + "epoch": 0, + "version": "20180629", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iputils-20180629-2.el8.aarch64.rpm", + "checksum": "sha256:ebcaa2d2ec8ddaa66d042a208ccee6b13735ffba04fe3f326954cd76fa4f5910" + }, + { + "name": "iwl7260-firmware", + "epoch": 1, + "version": "25.30.13.0", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iwl7260-firmware-25.30.13.0-99.el8.1.noarch.rpm", + "checksum": "sha256:1d28eaeaa59c48e4193c709dd2a6301c2f8701138164c05371a0d8f235d14c9c" + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.11", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/jansson-2.11-3.el8.aarch64.rpm", + "checksum": "sha256:c0f53020ecdb8eefb21795b0acf589334e89a9ef339a84d42e61999f53c67d18" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-c-0.13.1-0.2.el8.aarch64.rpm", + "checksum": "sha256:36aece7b7a65785985bf0b98701514f12735a87517b8578a3eb3710f82ba4765" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-glib-1.4.4-1.el8.aarch64.rpm", + "checksum": "sha256:1143ac623a74d7feaaaf293c18d942d243248f6356628f87216670c10d11687b" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-2.0.4-10.el8.aarch64.rpm", + "checksum": "sha256:10ac3bf7565725a55b0aef56f65befd0d320219fc83adfab6e564c19f8c44bd6" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "kernel", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-4.18.0-221.el8.aarch64.rpm", + "checksum": "sha256:0136940a3e28a159e7347b0bc7d1dbbc0339c64f431349e355f75abe31cbf21c" + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-core-4.18.0-221.el8.aarch64.rpm", + "checksum": "sha256:0d61e2dfcaed066e4ef74e4baddab9cdec24602aeb7a98306481f38cb5f449eb" + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kernel-modules-4.18.0-221.el8.aarch64.rpm", + "checksum": "sha256:d74da38b942dc95929b21c8fcf2c5d2fb4468b78ed14e7a4bcbe933998be4deb" + }, + { + "name": "keyutils", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/keyutils-1.5.10-6.el8.aarch64.rpm", + "checksum": "sha256:cddf8fbd1021116ee137a080d50a06ecd9269beb5042aee5782ca68bab62acf3" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/keyutils-libs-1.5.10-6.el8.aarch64.rpm", + "checksum": "sha256:e4ec1966f9bc7cbc898fe7550600ae3e9e4f8afbcdd3f6e74afe1965247653ba" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-25-16.el8.aarch64.rpm", + "checksum": "sha256:1091a799d34a42d2e42ac462b4f979a55d17513eca5a00bad9bdba56cca83357" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-libs-25-16.el8.aarch64.rpm", + "checksum": "sha256:6f87f305a3e0e0faf69c2a9d4f277958ca33e85b72c6e4f77a365a5f60ced3d3" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kpartx-0.8.4-2.el8.aarch64.rpm", + "checksum": "sha256:4a27cd4496ebdba821b3c7692eeb0c0fff28c6af69fe4fe9e4bf52511639bd6a" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/krb5-libs-1.18.2-3.el8.aarch64.rpm", + "checksum": "sha256:ca87249f90bac96902d18c11a1f8c80566fa090c6473226bdd147e07e3ed21ec" + }, + { + "name": "less", + "epoch": 0, + "version": "530", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/less-530-1.el8.aarch64.rpm", + "checksum": "sha256:551a506b43e32d21bf7b6333e028733956d5ef3560837a0c84b0d3e598efa046" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libacl-2.2.53-1.el8.aarch64.rpm", + "checksum": "sha256:7c014b54f7929348f614f8f4eb7a1552b8565c0a57f3a75ff6471dc05f30cafe" + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.112", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libaio-0.3.112-1.el8.aarch64.rpm", + "checksum": "sha256:98f838a9775269a0f796151bd54d52c7ac91d4bf1365186772f243bfafbb136a" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libarchive-3.3.2-9.el8.aarch64.rpm", + "checksum": "sha256:dfdec57ff520511d1d4ef9d913d90fc8d6ac98685cbc12fb568c8980f2a73f1a" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libassuan-2.5.1-3.el8.aarch64.rpm", + "checksum": "sha256:0f1a02850c102e2a186787504f965c0c10d6432b9f600c18bc2f520e55f04a8c" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libattr-2.4.48-3.el8.aarch64.rpm", + "checksum": "sha256:6f2bfbe0f23d3b233aacb72c153ee133839353325f028321eb5ea38b0dc06c02" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libblkid-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:d173b35182f28b9dd48e4a942f2a20c659bee2f9ac234b60cf8b995aa2421382" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-2.26-4.el8.aarch64.rpm", + "checksum": "sha256:2cddadff38ccef2364a7e40af0e1d9b3bf9c06869c15ceeb655f3cfa431c2083" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-ng-0.7.9-5.el8.aarch64.rpm", + "checksum": "sha256:62a2878605ca0415fd60adcff4c7068d855d20737498a968fabc646610ccbe5c" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcom_err-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:e5f82f102f51d88aa517bbebd170795a571b7ddc3036574b92b498cc13704d98" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcomps-0.1.11-4.el8.aarch64.rpm", + "checksum": "sha256:ff9fc6467a4c2fd0c22c419a9cdb7a524d1c69d0c87aa09f31728bef9f692f76" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcroco-0.6.12-4.el8.aarch64.rpm", + "checksum": "sha256:86ae7501bdf0149728879f488dd4c86907216cb5b021192347a5c10a55382931" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcurl-7.61.1-12.el8.aarch64.rpm", + "checksum": "sha256:2809ad51c6eb6c9a54d64cccc2cd948f6fd4207f32b4493b3f4a9bd0886c894b" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-5.3.28-39.el8.aarch64.rpm", + "checksum": "sha256:84e7102978d76d80aa40c43efcc71c1e54e819195132df921a8c13cec54328da" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-utils-5.3.28-39.el8.aarch64.rpm", + "checksum": "sha256:621e96e91103f2f701e4ac3b8b8b6ef9aab4db5ab8fb3e141eb02e3f328aed79" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdnf-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:fac29887224d91e8190a569b3ac5be1168034f36c9c234576ea3cefe686e46cd" + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "23.20170329cvs.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libedit-3.1-23.20170329cvs.el8.aarch64.rpm", + "checksum": "sha256:b93a509fc65dd88761b4f7f21d8a05f1cd22e878ac59eb7d8e1507f5a2376a1e" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libevent-2.1.8-5.el8.aarch64.rpm", + "checksum": "sha256:058822931f4c34c18675116c1b02b718de4044c1019acb0d5f97417f00a30ba7" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libfdisk-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:d6aa17908468b5e2095526664fce6627dec7a02c26625339c14b9278cc39d4a6" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libffi-3.1-22.el8.aarch64.rpm", + "checksum": "sha256:4a40a1538c8a488f32476f96d2461c3b792eb0cf5acb998e397d8a9cef8e5461" + }, + { + "name": "libgcab1", + "epoch": 0, + "version": "1.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcab1-1.1-1.el8.aarch64.rpm", + "checksum": "sha256:920a48d33953c8d7f1b47106fa6f3cacddecf3e0954f91454b608af94e81ea7b" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcc-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:3b607f0dbedecb25239e22c1f553c8d70db9d2206a877fa07567fa1a49e233d7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcrypt-1.8.5-4.el8.aarch64.rpm", + "checksum": "sha256:8498846918c7bc7a20553340434cfbfb0d19185adcd0ff52866c6506ab8f747d" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgomp-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:53fa2fd6a138d00c697b827a77bcc25ec498b1d49bb04ef80594e81ccabc165d" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgpg-error-1.31-1.el8.aarch64.rpm", + "checksum": "sha256:5a05f1126ed38f752af247dcdf7c958e738b935b8b6d942fd42f423768f05255" + }, + { + "name": "libgudev", + "epoch": 0, + "version": "232", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgudev-232-4.el8.aarch64.rpm", + "checksum": "sha256:bcd19fd35b5f8535ff5bb15db91e2339c9435908c1123d5e2272fcae15a62260" + }, + { + "name": "libgusb", + "epoch": 0, + "version": "0.3.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgusb-0.3.0-1.el8.aarch64.rpm", + "checksum": "sha256:89bd26efe94889e657c5cedede8b5eede7d4e8833619218753df6ab5ab477d37" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libidn2-2.2.0-1.el8.aarch64.rpm", + "checksum": "sha256:2dc8e2f52451d1a11b16bbb389a24c58b61a1ba804ee777f9d06dbe4e1fcf6e5" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-1.2.0-2.el8.aarch64.rpm", + "checksum": "sha256:83301ca502322e0634173460bf8fa35572c36ab8cc2e6e600bf9980f845fc857" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.aarch64.rpm", + "checksum": "sha256:f07b1f40ebb1fbe5c24e68a38b5f768a21e2ec2254d4bd8ff61fb0bde72f64ce" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libksba-1.3.5-7.el8.aarch64.rpm", + "checksum": "sha256:704e1dc996a17815c6dcf7029c0ddb2849d40feaab6e9b9c687af9d95fef825c" + }, + { + "name": "libmbim", + "epoch": 0, + "version": "1.20.2", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmbim-1.20.2-1.el8.aarch64.rpm", + "checksum": "sha256:a681ac2a07ed302c5c3a468f63bf9a447d5f71129dcd74948b5efc51a5e1ba1f" + }, + { + "name": "libmbim-utils", + "epoch": 0, + "version": "1.20.2", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmbim-utils-1.20.2-1.el8.aarch64.rpm", + "checksum": "sha256:b1c9a4ff3d549dd43b97dd53810cddfabd1d1e2fde2c04d52e95e03f69a15845" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmetalink-0.1.3-7.el8.aarch64.rpm", + "checksum": "sha256:fa80a7e82e231dc77b3e44edd2cbf5b3d1657e009e59f15bbe8d50a4290b7c82" + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmnl-1.0.4-6.el8.aarch64.rpm", + "checksum": "sha256:0f6d940ccddd815da01182de1e7b7e2d12c493125285ff7ee902843beefdec16" + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "17.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmodman-2.0.1-17.el8.aarch64.rpm", + "checksum": "sha256:9fdfb9c1ced62828bfcb186bb83caf470b4c14a53611c0ab7f08035333b6dbee" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmodulemd-2.9.4-2.el8.aarch64.rpm", + "checksum": "sha256:ba1364539f16d7c8379d7563fd0634651fa8a05b3f7098a21ba96e1f5641f132" + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.16", + "release": "0.2.9.4.2", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmodulemd1-1.8.16-0.2.9.4.2.aarch64.rpm", + "checksum": "sha256:0e33000d382305bd26466545abaadf22c31d1c7d95b4c0475606348df68c4bfc" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmount-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:26b14d8f226962ce712bbccfb245843759e835a24a139eacae86d680043a85a7" + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libndp-1.7-3.el8.aarch64.rpm", + "checksum": "sha256:abfda01b6d377de999efa9c2b4870bf3ba43cd50155f036d13aae0ba4a617565" + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.6", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnetfilter_conntrack-1.0.6-5.el8.aarch64.rpm", + "checksum": "sha256:16dd7121e6461d2c136f9f7330d8a60b88ed9ec77ac6824ac3ee7495acdb6800" + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "13.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnfnetlink-1.0.1-13.el8.aarch64.rpm", + "checksum": "sha256:e85c24b0e9d047763e2c8e673bb6dc579b55c650e8f19d14c9010f3dc5cd0ccd" + }, + { + "name": "libnftnl", + "epoch": 0, + "version": "1.1.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnftnl-1.1.5-4.el8.aarch64.rpm", + "checksum": "sha256:db7899290e3f78a9cff3796d1181dc0ef3d837b3c80e715c7ca85e01a811093a" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.aarch64.rpm", + "checksum": "sha256:4874e739ed37bc6a5bfdb6069d4620e5f7efe01d60eb9fd2550c550167c99990" + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnl3-3.5.0-1.el8.aarch64.rpm", + "checksum": "sha256:8c0d40edf059bf044314df38c84e26cfbe00bf4e687a6114eacb17251718312b" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.aarch64.rpm", + "checksum": "sha256:471663fca7e3f609834368d69d8f1f469cfc0d3f3e95dc2b79381722d0368edc" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpcap-1.9.1-4.el8.aarch64.rpm", + "checksum": "sha256:435a2be84a2b38372965dbd60ffed0ed38a616b8100859787a8bb3b19d9fc4d9" + }, + { + "name": "libpkgconf", + "epoch": 0, + "version": "1.4.2", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpkgconf-1.4.2-1.el8.aarch64.rpm", + "checksum": "sha256:a006b695c5a4c6caff337a60a2a6b89a12f0dedb4e2fe47b9f1e68d2a838508f" + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.34", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpng-1.6.34-5.el8.aarch64.rpm", + "checksum": "sha256:1fbb9fed42dff3f9dbc9e4fd929281408f77506423424759c2ac57b76afc3cdb" + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "5.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libproxy-0.4.15-5.2.el8.aarch64.rpm", + "checksum": "sha256:332c3cd387659ab5dfbb14ea5e75d1c8e1c8a8833e0314dde3ec758607efb3e4" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpsl-0.20.2-6.el8.aarch64.rpm", + "checksum": "sha256:6557d001315e85ac123b1378c5aafb81428e2383debcacf3f91c55476cfc48eb" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpwquality-1.4.0-9.el8.aarch64.rpm", + "checksum": "sha256:d6ab7c8790cd6c9a137d908d840c51c547e950d25f6ab8af3c9ad3899ff6c044" + }, + { + "name": "libqb", + "epoch": 0, + "version": "1.0.3", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libqb-1.0.3-12.el8.aarch64.rpm", + "checksum": "sha256:66565771f3fa38fe14b5f14f28dcd804b57130922f1e02ca7b53a199be4f5c52" + }, + { + "name": "libqmi", + "epoch": 0, + "version": "1.24.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libqmi-1.24.0-1.el8.aarch64.rpm", + "checksum": "sha256:1d322a2742596a94b28bb8481621ea604da8ba980a4199b9fd2f41aa990664a4" + }, + { + "name": "libqmi-utils", + "epoch": 0, + "version": "1.24.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libqmi-utils-1.24.0-1.el8.aarch64.rpm", + "checksum": "sha256:a362b50497d2c4b69ffb5664b7573062e1305861861561d497b8796f123c506e" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librepo-1.12.0-1.el8.aarch64.rpm", + "checksum": "sha256:2d74e0ab14393921c6160fda8dd533b58c0348acdf5ee5c306ffc64221700de2" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libreport-filesystem-2.9.5-11.el8.aarch64.rpm", + "checksum": "sha256:e55bf252e792f27f076101e94dfbbac97dabeea0f7893a4cb9b111a0b72d187f" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librhsm-0.0.3-3.el8.aarch64.rpm", + "checksum": "sha256:e9487db2fdce1f494ee1582787a1afc1ea4e0429189db8be0ddbb0af2676c4b6" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libseccomp-2.4.3-1.el8.aarch64.rpm", + "checksum": "sha256:cc7e751a62f9a28b82df0bce0ecfb050364b8688ef69473f1910909e44c5eb98" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsecret-0.18.6-1.el8.aarch64.rpm", + "checksum": "sha256:c1b5c4668331e8b05a08e7de432cbfb75f8072401bb6651a24e43f64eff8dcc4" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-utils-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:c82ca1c0ef4b89f75e8e7edbbae4f3eeb2720a4abd56b0927928cff2d9721186" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsemanage-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:140146ebcbadd9b0f2aa5c2fcde5c93888f2d84ce61a2a4cf148ef435d1ba410" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsepol-2.9-1.el8.aarch64.rpm", + "checksum": "sha256:c8a28b4587888435c51f6d1ce42f48b08fb0256e4029ea569e9a02adcb82c85a" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsigsegv-2.11-5.el8.aarch64.rpm", + "checksum": "sha256:bf267d9571cf568375e261d593236750f400ac536c1c818513106482ebc3fb10" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsmartcols-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:f35c0da3cff05ded33c0cb4f202dbb52a5caabec8b1897d5057df83c284d62f1" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsolv-0.7.11-1.el8.aarch64.rpm", + "checksum": "sha256:2397506a63455e543b201938f605e687de5590d9a06282824e2f6bfdf5e0f149" + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.62.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsoup-2.62.3-1.el8.aarch64.rpm", + "checksum": "sha256:5be5628cff7e0cbf726771bd7af6d8f4bd987a672381a9fb225974bcfc7f9644" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libss-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:268d9232f0853037100432e9363c659cf99927e03f759fd4884643b560710cd6" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-0.9.4-2.el8.aarch64.rpm", + "checksum": "sha256:3ee6a4f61935c2f0698ad2c4834a5864920a1e48d55c7800da7c382249895e39" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libstdc++-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:f4e63e7eedc0266a575eb6107f41c5f20ca0505a0e80145c21b9741674d5c0b5" + }, + { + "name": "libsysfs", + "epoch": 0, + "version": "2.1.0", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsysfs-2.1.0-24.el8.aarch64.rpm", + "checksum": "sha256:fd202f857b3c5a15b8f66f86fd515c44a47c87c028d7db766661758dc3673436" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtasn1-4.13-3.el8.aarch64.rpm", + "checksum": "sha256:ed28e1e31109e27ce1c676914364c9f1dd46b71d00cb4cf13931f0fec6cf6978" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtirpc-1.1.4-4.el8.aarch64.rpm", + "checksum": "sha256:481bbd6d73415d437a73eee7977ec370299acdac44b215a026652debba31783d" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libunistring-0.9.9-3.el8.aarch64.rpm", + "checksum": "sha256:da4b9bfad26d559485ade669556512acfe93ba23d204f2556bac82c09401b4e7" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libusbx-1.0.23-3.el8.aarch64.rpm", + "checksum": "sha256:01e486a3be67325e9692e909f5c6534137ee6a6df185ba2c09d4d50fe6c738f6" + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "23.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libuser-0.62-23.el8.aarch64.rpm", + "checksum": "sha256:9a9546fcc510204dc7bcfe61d6ca63f436c01cd9b3f8451c8f07ec4f4fc2ba68" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libutempter-1.1.6-14.el8.aarch64.rpm", + "checksum": "sha256:ad07261ff4f478be9511f7ee749bfbe8b2ba8e28696c2f561caa20e35c535134" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libuuid-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:95de1777f7e8a734445c5d45e0b77da8b6c41a9b504582ed266d852c677a936b" + }, + { + "name": "libvarlink", + "epoch": 0, + "version": "18", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libvarlink-18-3.el8.aarch64.rpm", + "checksum": "sha256:da7daac31c7c5f9711e225b02f2a639df5c6d25ef49b1f8ea0799e4e2b13b14c" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libverto-0.3.0-5.el8.aarch64.rpm", + "checksum": "sha256:532d46a4c0e68bd45eabc3e2ba6d570880344044e1034f5f347b37c470d0dced" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxcrypt-4.1.1-4.el8.aarch64.rpm", + "checksum": "sha256:876ffb285aaeddb2c18ae32527bd4ee202710bd8e18d5b410af22937646dcdec" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxml2-2.9.7-8.el8.aarch64.rpm", + "checksum": "sha256:fb56b7a416e12da0782ae8ba7396bc03a2f8844c2efcb5df3f8b9e74eb8b8059" + }, + { + "name": "libxmlb", + "epoch": 0, + "version": "0.1.15", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxmlb-0.1.15-1.el8.aarch64.rpm", + "checksum": "sha256:e8a5768895f9ef4a1fdc3740a0570e6b972f9ee6cc5e6d3bd38eb2bf80ccf847" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libyaml-0.1.7-5.el8.aarch64.rpm", + "checksum": "sha256:7864fbc866ae5a3e59b4f0f114b77ff52b55e76c5388a917f82a6097f02a4db7" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libzstd-1.4.4-1.el8.aarch64.rpm", + "checksum": "sha256:19d1de27d2f62b4a55735233807f70a1e8ff7551fed97ee8650dbd09c1ef50ea" + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20200619", + "release": "99.git3890db36.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/linux-firmware-20200619-99.git3890db36.el8.noarch.rpm", + "checksum": "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lua-libs-5.3.4-11.el8.aarch64.rpm", + "checksum": "sha256:bc0f9bd34ac6a01dd7272b87e1b7a33045ff8c6793cac02fa639dfc9341e8215" + }, + { + "name": "lvm2", + "epoch": 8, + "version": "2.03.09", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lvm2-2.03.09-3.el8.aarch64.rpm", + "checksum": "sha256:07ff7e41f0955d2140fb2fd2ef39777ad871c86019e9bbf0a5fa6116dffb2eeb" + }, + { + "name": "lvm2-libs", + "epoch": 8, + "version": "2.03.09", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lvm2-libs-2.03.09-3.el8.aarch64.rpm", + "checksum": "sha256:ca3a7051dfa4e83c4200d2fa563b92ba8d1d0e3b7d04e4c2e72c7e318884d4e1" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lz4-libs-1.8.3-2.el8.aarch64.rpm", + "checksum": "sha256:64ac5cb6fd3da1610812795ce17e09648d89c87513d6284b852a3455b0831d3a" + }, + { + "name": "mokutil", + "epoch": 1, + "version": "0.3.0", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mokutil-0.3.0-9.el8.aarch64.rpm", + "checksum": "sha256:aeda2c664e2d993e56008f68823d05ec6d7665f2bb65b5f990c2112f0a7f91cb" + }, + { + "name": "mozjs60", + "epoch": 0, + "version": "60.9.0", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mozjs60-60.9.0-4.el8.aarch64.rpm", + "checksum": "sha256:10a83db8ac5065869be834bf6ec61185eded982f885def5979948736e5c3ab95" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mpfr-3.1.6-1.el8.aarch64.rpm", + "checksum": "sha256:320ced09e242f09047f4fab0a7f66aba6de2e42583f6a2e164eadcc1ffd0b915" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-6.1-7.20180224.el8.aarch64.rpm", + "checksum": "sha256:8ac1003d722e3d5f383c9b970bf6dfbc905007a624abadb63e520d7a93993747" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-libs-6.1-7.20180224.el8.aarch64.rpm", + "checksum": "sha256:f99f5edde9ad4574b84264c467420c910b31f78683fbf1b63d106a7e6c9d64a3" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/nettle-3.4.1-2.el8.aarch64.rpm", + "checksum": "sha256:e2c4ac0f7abf75cbcc7a6fb35412820c267f1a8ce614f41b60d901918c4616d5" + }, + { + "name": "nftables", + "epoch": 1, + "version": "0.9.3", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/nftables-0.9.3-14.el8.aarch64.rpm", + "checksum": "sha256:9da7de3dd0a487abf1bbfb0c9de0b491102fe0796e53a47ee4414003a8b51f33" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/npth-1.5-4.el8.aarch64.rpm", + "checksum": "sha256:daf36ee86ec6001770ae68bdd82409526faf4b9b1313a6b74fb54cfb98ff571e" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openldap-2.4.46-15.el8.aarch64.rpm", + "checksum": "sha256:cfa188d39884fd4ba36d27e8fb25aed9dbd26efccffbfd01a24c2c580fdb96f1" + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-8.0p1-5.el8.aarch64.rpm", + "checksum": "sha256:af98260ff2c263c9cefcb96d16d200941c1873cda9868b57df51b034066940fe" + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-clients-8.0p1-5.el8.aarch64.rpm", + "checksum": "sha256:bd03a8a056bc9d2df361688583521f5f656e83fc893b90d349b6282178f9330b" + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-server-8.0p1-5.el8.aarch64.rpm", + "checksum": "sha256:b35f92dddd2cd73f7f8d8595ebb197a1c67a214ec2acf960ac673a014f2d9b90" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-1.1.1g-9.el8.aarch64.rpm", + "checksum": "sha256:3ef63ecbebf844bcf682c9482dc0ddd158c955b0f066b62eb9575bb9a9642db5" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-libs-1.1.1g-9.el8.aarch64.rpm", + "checksum": "sha256:448d3ff44e7f32f3b33e891180e248dc1bcd4d410f68015a8b0c30dc7c385aca" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-pkcs11-0.4.10-2.el8.aarch64.rpm", + "checksum": "sha256:290c83afcd2b0a2b17aab95cf72a85da5f8b9f9a9862857c919a0f43e3fce70e" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/os-prober-1.74-6.el8.aarch64.rpm", + "checksum": "sha256:43ab42c8a58267936a89da99e37d3b9fc56489e958060f600ba047445ca44ee3" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-0.23.14-5.el8_0.aarch64.rpm", + "checksum": "sha256:651f38873d3356ec4efb27d04658541080d11cf1ece6335a07db1ca089fa7da3" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.aarch64.rpm", + "checksum": "sha256:ec40be9e0b2bb03f7b057a7a9342ffbd86129d58828fb310f445bc506261eb0e" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pam-1.3.1-11.el8.aarch64.rpm", + "checksum": "sha256:04c031a07bde4360484a0180e832036d3ac45a95c4839e54d7a02423df5485ef" + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/passwd-0.80-3.el8.aarch64.rpm", + "checksum": "sha256:8e916224ddbb8a7d8cd305f11087c66df950a318e4ef64290bca1afdc1327950" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre-8.42-4.el8.aarch64.rpm", + "checksum": "sha256:fea4eb54fe59451b76fb40b9bd15ff41f0f51bb7371f94b2f5df572ef917d037" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre2-10.32-2.el8.aarch64.rpm", + "checksum": "sha256:ce8c92fa2bef1770f44992db24e1cb8cc850feab03a74cf0ebf741ecb0d160ea" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pigz-2.4-4.el8.aarch64.rpm", + "checksum": "sha256:f847957437e7f24844930c4a3ff64c5f7877f083553f48eeadca3c5f5e5c728e" + }, + { + "name": "pkgconf", + "epoch": 0, + "version": "1.4.2", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pkgconf-1.4.2-1.el8.aarch64.rpm", + "checksum": "sha256:1d39ffccb1971cf4c3b6d6e6c6415c9fceb50238f312ab9fa2417bce03679785" + }, + { + "name": "pkgconf-m4", + "epoch": 0, + "version": "1.4.2", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pkgconf-m4-1.4.2-1.el8.noarch.rpm", + "checksum": "sha256:9a89874a5b8326c85c0b34b02c122ffc052b32a12b20354ce95859ac5296a159" + }, + { + "name": "pkgconf-pkg-config", + "epoch": 0, + "version": "1.4.2", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pkgconf-pkg-config-1.4.2-1.el8.aarch64.rpm", + "checksum": "sha256:421dd99d6a2654b08f01d62c1921116f80d6799eb99ff58c45ac055b3d7f731a" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-3.6.8-30.el8.aarch64.rpm", + "checksum": "sha256:68593fad4413255772bd08ed7f8b578332f0f53e002c8c7473d90c966a87131b" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/policycoreutils-2.9-9.el8.aarch64.rpm", + "checksum": "sha256:b90ce065d5ea98845733ff06e47d385937f6293ebddf52144c80f5fe1f296307" + }, + { + "name": "policycoreutils-python-utils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/policycoreutils-python-utils-2.9-9.el8.noarch.rpm", + "checksum": "sha256:b4fb3d8b0255a5ba9456b61e4f479f2f8355d171263508bbe869af677015fd97" + }, + { + "name": "polkit", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/polkit-0.115-11.el8.aarch64.rpm", + "checksum": "sha256:3f8039ed081aa3f628e947656af825b4541ded3547675098eabb0f177eca45e7" + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/polkit-libs-0.115-11.el8.aarch64.rpm", + "checksum": "sha256:861346b2e683c09a53c9418a9ed08faf7448e066e3111482c70722cb62a6edce" + }, + { + "name": "polkit-pkla-compat", + "epoch": 0, + "version": "0.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/polkit-pkla-compat-0.1-12.el8.aarch64.rpm", + "checksum": "sha256:4a7d4068f39dbb01d7f707f9912abfddcc065a62b66144eeb7b7e2f13cec68af" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/popt-1.16-14.el8.aarch64.rpm", + "checksum": "sha256:4e4923f05d0032263d570075b9b832b9fc3550cd8f82f9a6b0b9b25061726110" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/procps-ng-3.3.15-2.el8.aarch64.rpm", + "checksum": "sha256:d890d028f59e2553730fad3dbea0e1a245c92c24836513fa2281194b1c90b53a" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-audit-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm", + "checksum": "sha256:48509ce37ec06c1b15149feec4b2eb5d3a2f0453a41804c9c5d9ef5b8b320d4f" + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.6.1", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm", + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.4", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dbus-1.2.4-15.el8.aarch64.rpm", + "checksum": "sha256:8329bf1aedce9ef3a4d7513ef98d3931ad39b84d5c3e73e99936c7f9b87931c2" + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.2.1", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm", + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dnf-plugins-core-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87" + }, + { + "name": "python3-ethtool", + "epoch": 0, + "version": "0.14", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-ethtool-0.14-3.el8.aarch64.rpm", + "checksum": "sha256:4fe7733b93fad52a48d4b47a6dc55582f3cc41fc2074e42a9b39fc5d407df6d3" + }, + { + "name": "python3-firewall", + "epoch": 0, + "version": "0.8.2", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-firewall-0.8.2-1.el8.noarch.rpm", + "checksum": "sha256:c9b3c6dcb4133c3051e3f75978f994aae4c0ad84dd1abbae7fcba497ee524603" + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.28.3", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-gobject-base-3.28.3-2.el8.aarch64.rpm", + "checksum": "sha256:31043a7324411dad6b84f6504a9e9cb7ece9f576acf091be522e484c8b82f469" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-gpg-1.13.1-3.el8.aarch64.rpm", + "checksum": "sha256:90405803c0159cdf0f74a26b6ce064cfd9973e59232b2923ed171a38fc5684a6" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-hawkey-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:4909edde46b5b2b58d228bacafa3bab5bc5847559d591d59ecd59cdf50d36db4" + }, + { + "name": "python3-iniparse", + "epoch": 0, + "version": "0.4", + "release": "31.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm", + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "name": "python3-inotify", + "epoch": 0, + "version": "0.9.6", + "release": "13.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm", + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libcomps-0.1.11-4.el8.aarch64.rpm", + "checksum": "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libdnf-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:9b6fcdd19caee5fe77b9ed17adb3f11769a7109ebcf52d3cb3358d5a9eecc391" + }, + { + "name": "python3-librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-librepo-1.12.0-1.el8.aarch64.rpm", + "checksum": "sha256:b386b3ec3cb96fe9178fd1d2b245eddff0bdb2742a8f18e25faef1e98c00f42f" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libs-3.6.8-30.el8.aarch64.rpm", + "checksum": "sha256:65b8d755ff01dfefa423d2f0bd6fd54cfc4c580da63510e19cf178abb6e26172" + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libselinux-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:9c416279320ab29a8ef4fc32ca60beaec4c8da6054d10695cd2b37af19cd0ee9" + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libsemanage-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:b9ceb537921c8d98f1e874c0a39cf0c6a606f469be21be151fa119e4b9c7f06a" + }, + { + "name": "python3-nftables", + "epoch": 1, + "version": "0.9.3", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-nftables-0.9.3-14.el8.aarch64.rpm", + "checksum": "sha256:70c05e5512e85231b490c1aa9c0e7eeb7f9a09c34d1253c3aa1db0b8db6be974" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-policycoreutils-2.9-9.el8.noarch.rpm", + "checksum": "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-rpm-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:b5b1f5f7a02f70db056861813ddcf181f2ebba507cd368fbe2c32f262edf7fc6" + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.3.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setools-4.3.0-1.el8.aarch64.rpm", + "checksum": "sha256:342d7cd5f427c0d9c02336bc4f189225b3b57c5899f5d26b61b351fc37f99489" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.11.0", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm", + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "name": "python3-slip", + "epoch": 0, + "version": "0.6.4", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-slip-0.6.4-11.el8.noarch.rpm", + "checksum": "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb" + }, + { + "name": "python3-slip-dbus", + "epoch": 0, + "version": "0.6.4", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-slip-dbus-0.6.4-11.el8.noarch.rpm", + "checksum": "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d" + }, + { + "name": "python3-subscription-manager-rhsm", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-subscription-manager-rhsm-1.27.9-1.el8.aarch64.rpm", + "checksum": "sha256:d868f3e9b48e1acc5c7674292619f1e80a2a2617aa1ab75d7cb4665495bdc654" + }, + { + "name": "python3-syspurpose", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-syspurpose-1.27.9-1.el8.aarch64.rpm", + "checksum": "sha256:6d46339afc3d65beb89cbb36052e779e95ef2448a163d26db13d67715dad9cf8" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/readline-7.0-10.el8.aarch64.rpm", + "checksum": "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-8.3-0.2.el8.aarch64.rpm", + "checksum": "sha256:a6292dd846bc471b22409fc95a5e09c88bcb6176251dc5cc11f4b14a73ddda11" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-eula-8.3-0.2.el8.aarch64.rpm", + "checksum": "sha256:784d385116891056b618722c933d43c5b395b92fa82e5bc797081317ec6a82ba" + }, + { + "name": "rng-tools", + "epoch": 0, + "version": "6.8", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rng-tools-6.8-3.el8.aarch64.rpm", + "checksum": "sha256:13471e37bb0089a322183fc9e7a53948f0b203b54277630e75606a835268ad5d" + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "22.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rootfiles-8.1-22.el8.noarch.rpm", + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:47b483c0f556c56f0b1f468603c57834864902ae5a849a18c8a0ca5f76d66c86" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-build-libs-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:c633b98b4dbf96674a69573404819c34d66eb7e19820283fc588f6b10b0e3fc8" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-libs-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:d3fb5a473c44cd8ae6b94d6bf3fc552553d8f4ef28eed439658ea38990ab9db5" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:0a885c6dc6abd969b828bf2fd7063ee884e6d058eaf405b02f3dd6efb6c66bac" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:0bb7024125ca67119612e55a92da13c989e0306ddd7de7e655a679c963939ef7" + }, + { + "name": "rsync", + "epoch": 0, + "version": "3.1.3", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rsync-3.1.3-8.el8.aarch64.rpm", + "checksum": "sha256:eea9359070225c205cd9233c98fc3e3eaa41848148b726a4ec8414575ae3730e" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sed-4.5-2.el8.aarch64.rpm", + "checksum": "sha256:125c92f23d87b905c21e9f7669f0ec6e41428ab63c8c13f63db8980f292797d5" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setools-console", + "epoch": 0, + "version": "4.3.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/setools-console-4.3.0-1.el8.aarch64.rpm", + "checksum": "sha256:4301ddbbfdbd5b72fe6596ce1872de3df7bc85101445d899b637a860b5c3383a" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shadow-utils-4.6-10.el8.aarch64.rpm", + "checksum": "sha256:a840b8193ce9b1b72e3783b9a9bb2ec91947ba3b6f7ac973ae8e0e20a7059117" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shared-mime-info-1.9-3.el8.aarch64.rpm", + "checksum": "sha256:19cd894b4154d1a8521c6884cfd2a6eaf1f498b7dec5cc31408f8535b9098f2a" + }, + { + "name": "shim-aa64", + "epoch": 0, + "version": "15", + "release": "12", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shim-aa64-15-12.aarch64.rpm", + "checksum": "sha256:b83b5cb8c799dea710e0fffc841abf88495a1f3d04057dd699cff2aac610d7d9" + }, + { + "name": "sqlite", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sqlite-3.26.0-10.el8.aarch64.rpm", + "checksum": "sha256:4c1754c21b2a83f4cc13a95ce545873907db154c7aebf9ab5af4b365fbb54502" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sqlite-libs-3.26.0-10.el8.aarch64.rpm", + "checksum": "sha256:207e6396488c1db18fb7b1f2b9952f48c2625f042c5f6a901d41974ce376b0e0" + }, + { + "name": "subscription-manager", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/subscription-manager-1.27.9-1.el8.aarch64.rpm", + "checksum": "sha256:4efe61bac45e15b3b1bfda93bf3cfbf72d49c7f0452737d01f12f49b6e624175" + }, + { + "name": "subscription-manager-rhsm-certificates", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/subscription-manager-rhsm-certificates-1.27.9-1.el8.aarch64.rpm", + "checksum": "sha256:2df37064ec55f10e06dc0c05647a296b8ca7867251fe44130206052e58d39bda" + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.8.29", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sudo-1.8.29-6.el8.aarch64.rpm", + "checksum": "sha256:432ef41fd5f9ad2b9a797ed105f6e729dcaf19c17df9c1478802af04e898e305" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-239-36.el8.aarch64.rpm", + "checksum": "sha256:d4467ba499fe1ddd82746ad00d7e86bea59c4827fe1ff8c05132bad1f93ddb7f" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-libs-239-36.el8.aarch64.rpm", + "checksum": "sha256:800c9a0d718c641ceee26c8f625b2dcd79a33963e9e7a11930678dc99582a2d0" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-pam-239-36.el8.aarch64.rpm", + "checksum": "sha256:986683a0edb615a5d45a9c1b0ee3d27f8032c2667cad58d24526085e41010992" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-udev-239-36.el8.aarch64.rpm", + "checksum": "sha256:3fe7c10c144c8fffc00d144317a2bf8029bd9d048432bccfc352dfc6f0995680" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tar-1.30-5.el8.aarch64.rpm", + "checksum": "sha256:ba66a87402ccc8515e164f597f5d254ad9513979fe3ca1ffabf63c915c0daa73" + }, + { + "name": "timedatex", + "epoch": 0, + "version": "0.5", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/timedatex-0.5-3.el8.aarch64.rpm", + "checksum": "sha256:c880062730d3fdbb06e5a9cd47929a5009023262686edfe4d6ed9daa54038e5f" + }, + { + "name": "tmux", + "epoch": 0, + "version": "2.7", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tmux-2.7-1.el8.aarch64.rpm", + "checksum": "sha256:3a32688730dde2950fd8f1126890daf77b3ec8576afdbfe1fde3c9f4a9677ee2" + }, + { + "name": "tpm2-tools", + "epoch": 0, + "version": "4.1.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tpm2-tools-4.1.1-1.el8.aarch64.rpm", + "checksum": "sha256:df72c0be7eed3939e5d7c28fdbdd66ef9e205df7cb00f027403c46e923568c13" + }, + { + "name": "tpm2-tss", + "epoch": 0, + "version": "2.3.2", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tpm2-tss-2.3.2-2.el8.aarch64.rpm", + "checksum": "sha256:d61e6972f58a90d531ffbf4484e7253cdde3b462035be7938b2f6ac8e657a5a3" + }, + { + "name": "traceroute", + "epoch": 3, + "version": "2.1.0", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/traceroute-2.1.0-6.el8.aarch64.rpm", + "checksum": "sha256:b7bf71e1c3bb7aaa94da2deefdfd083cf77f7791c1d8cf7b9f3f1f352e4c8993" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-0.3.14-4.el8.aarch64.rpm", + "checksum": "sha256:d695df94220c2ef990e502123b3bd8ede8fcfb4f738346dd98d999559b01b6b3" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-lib-0.3.14-4.el8.aarch64.rpm", + "checksum": "sha256:fb263177eee60c26b7acaa76cb640c3d7ab6928e73c8af80b2111a247bd61ece" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "usermode", + "epoch": 0, + "version": "1.113", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/usermode-1.113-1.el8.aarch64.rpm", + "checksum": "sha256:1bc21785bc6f66d6fcc29cd62f2cdd3584f3f8ea6321db4c27251b192f468433" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/util-linux-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:83e470505f558f8cf8414a7fc8fb0d1bc4b16ed15d05ccf7e46332b04d1a0d85" + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.0.1763", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/vim-minimal-8.0.1763-15.el8.aarch64.rpm", + "checksum": "sha256:1956304761f23c6661b831d33a3539b82384636db4113cccd19321b36a3a8415" + }, + { + "name": "virt-what", + "epoch": 0, + "version": "1.18", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/virt-what-1.18-6.el8.aarch64.rpm", + "checksum": "sha256:b6946db91c0a0b5e39427db028815391dd1e8c7a04faf98bc1031b5490034790" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/which-2.21-12.el8.aarch64.rpm", + "checksum": "sha256:0f32d23a6b2b15603d710b0317238ef8dde3de61eda96713e21d86c9fc7a98ed" + }, + { + "name": "wpa_supplicant", + "epoch": 1, + "version": "2.9", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/wpa_supplicant-2.9-2.el8.aarch64.rpm", + "checksum": "sha256:a548d145df38e3afdd4f9476b91a2787278f8c95d5130114393a9850d0fa8e99" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-5.2.4-3.el8.aarch64.rpm", + "checksum": "sha256:e426534c59b3a35068877d324dd34d643ad7c84d2c406b2e6502ac6c2a367d39" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-libs-5.2.4-3.el8.aarch64.rpm", + "checksum": "sha256:094eff70081085f87a7ac0dedafa851ad8ac8e03f9f328636df4a0f8301d0e87" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/zlib-1.2.11-15.el8.aarch64.rpm", + "checksum": "sha256:cf9a0bbaa7bd075d2af532586ee93ab92b96d9859f53a57f85cd7e0309f8fff6" + }, + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.0.25", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/abattis-cantarell-fonts-0.0.25-4.el8.noarch.rpm", + "checksum": "sha256:1594afba86593ec614299ef6af255755a98ea55a34a72a22fdc9d80a040be39d" + }, + { + "name": "clevis", + "epoch": 0, + "version": "13", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/clevis-13-3.el8.aarch64.rpm", + "checksum": "sha256:e86726a5ea5410dea25a80ef4d17efcba11fb4ffea2421c577626d9e29eafe80" + }, + { + "name": "clevis-dracut", + "epoch": 0, + "version": "13", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/clevis-dracut-13-3.el8.aarch64.rpm", + "checksum": "sha256:4c1d9194bb8462cb8a6dd7ac6fe7499c289bca2e5783ff7f504ee2e1a6887117" + }, + { + "name": "clevis-luks", + "epoch": 0, + "version": "13", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/clevis-luks-13-3.el8.aarch64.rpm", + "checksum": "sha256:078fe843b11622825dd88504c8fedb81c43cdbf4983107e1de82a44e1f43d6cd" + }, + { + "name": "clevis-systemd", + "epoch": 0, + "version": "13", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/clevis-systemd-13-3.el8.aarch64.rpm", + "checksum": "sha256:d1ad3defad626f2b7f5d7710c8166293147603e3376c23c21a28618316af5b84" + }, + { + "name": "conmon", + "epoch": 2, + "version": "2.0.18", + "release": "1.module+el8.3.0+7084+c16098dd", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/conmon-2.0.18-1.module+el8.3.0+7084+c16098dd.aarch64.rpm", + "checksum": "sha256:4e3434407548fab65e2dd9863b6b175ff66b114ca8f7cc65880fb7926c461a05" + }, + { + "name": "container-selinux", + "epoch": 2, + "version": "2.137.0", + "release": "1.module+el8.3.0+7084+c16098dd", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/container-selinux-2.137.0-1.module+el8.3.0+7084+c16098dd.noarch.rpm", + "checksum": "sha256:90f1b278b55197ea3061934e563aad3705fecaf8550259ca83939b012bc0aa06" + }, + { + "name": "containernetworking-plugins", + "epoch": 0, + "version": "0.8.6", + "release": "1.module+el8.3.0+7084+c16098dd", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/containernetworking-plugins-0.8.6-1.module+el8.3.0+7084+c16098dd.aarch64.rpm", + "checksum": "sha256:79ebb787a23dd8f016cacc6fa256af291c932fa69ad294f35acdd3876f789971" + }, + { + "name": "containers-common", + "epoch": 1, + "version": "1.1.0", + "release": "1.module+el8.3.0+7097+8d4f8cb4", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/containers-common-1.1.0-1.module+el8.3.0+7097+8d4f8cb4.aarch64.rpm", + "checksum": "sha256:cb7a8e0798d45987fe10eaec018e88cf518aa14000d6e306a687db02c3371c7e" + }, + { + "name": "criu", + "epoch": 0, + "version": "3.14", + "release": "2.module+el8.3.0+7084+c16098dd", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/criu-3.14-2.module+el8.3.0+7084+c16098dd.aarch64.rpm", + "checksum": "sha256:9276a1f4679fbcfeecbc281e5f927c0acf810f3965f2dc216b3638872594a4d9" + }, + { + "name": "dnsmasq", + "epoch": 0, + "version": "2.79", + "release": "13.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/dnsmasq-2.79-13.el8.aarch64.rpm", + "checksum": "sha256:b5ab26eb9fc10aeaf136dc25284a232860c77dcf470a22361b085ea945373580" + }, + { + "name": "fuse-overlayfs", + "epoch": 0, + "version": "1.1.1", + "release": "1.module+el8.3.0+7121+472bc0cf", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/fuse-overlayfs-1.1.1-1.module+el8.3.0+7121+472bc0cf.aarch64.rpm", + "checksum": "sha256:c253486979dac9a4c79d0d8b9fa5df0012b3a4d7567ee7c63c9d726da35c8355" + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm", + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm", + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "name": "jose", + "epoch": 0, + "version": "10", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/jose-10-2.el8.aarch64.rpm", + "checksum": "sha256:5a1b052999190993cf04eba28390166834b155d689806174b6ba483e160071a8" + }, + { + "name": "jq", + "epoch": 0, + "version": "1.5", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/jq-1.5-12.el8.aarch64.rpm", + "checksum": "sha256:247bca3cfd7a4faac974bbf4f52203c224f0a83d439e112acde72638f33e708c" + }, + { + "name": "libjose", + "epoch": 0, + "version": "10", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libjose-10-2.el8.aarch64.rpm", + "checksum": "sha256:425ed8338a8ff15ca107e058c4a806c52b7da8f24da5510c57f7e9b9ea031ca2" + }, + { + "name": "libluksmeta", + "epoch": 0, + "version": "9", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libluksmeta-9-4.el8.aarch64.rpm", + "checksum": "sha256:cc56ab0a8b45859e195464f4514fc61e84ba44da5d112c08ba5b4149a872778c" + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.2.0", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libmaxminddb-1.2.0-10.el8.aarch64.rpm", + "checksum": "sha256:e09e950b0a0842577364565380ba40e8c4f027919dc880378b606c2dafc5693b" + }, + { + "name": "libnet", + "epoch": 0, + "version": "1.1.6", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libnet-1.1.6-15.el8.aarch64.rpm", + "checksum": "sha256:ee45e2247336fa1e822e974aae932a2bb638ccdfcd30fae9bfa77705f2e2e685" + }, + { + "name": "libslirp", + "epoch": 0, + "version": "4.3.0", + "release": "3.module+el8.3.0+7084+c16098dd", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libslirp-4.3.0-3.module+el8.3.0+7084+c16098dd.aarch64.rpm", + "checksum": "sha256:34cd0ea2ffb4d75b6d3781c2683b0880ffc11e1da1f65f042a43dcca2e6bb9c8" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libxkbcommon-0.9.1-1.el8.aarch64.rpm", + "checksum": "sha256:a07f96031fbe9507a8d6bb0e14cf0783bc615552e4cfb75131672072f5729de8" + }, + { + "name": "luksmeta", + "epoch": 0, + "version": "9", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/luksmeta-9-4.el8.aarch64.rpm", + "checksum": "sha256:6947e0a550f9841b662c57825e426e2f5096e54f4bfd201058eb038242f620c5" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/memstrack-0.1.8-1.el8.aarch64.rpm", + "checksum": "sha256:aa1a6a85493590efb9c0235c15d6a05e8b119f385dc13b3e3abd2315f8c4a6e0" + }, + { + "name": "nmap-ncat", + "epoch": 2, + "version": "7.70", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/nmap-ncat-7.70-5.el8.aarch64.rpm", + "checksum": "sha256:7bb182e41292af7c8607e088e926da6f88249587df30a9cdc74aa4fe28a7c9de" + }, + { + "name": "nss-altfiles", + "epoch": 0, + "version": "2.18.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/nss-altfiles-2.18.1-12.el8.aarch64.rpm", + "checksum": "sha256:5f0a836e243fdaee7ba99ae085be7b57c02d0c199564166175ef1cc17cb7df34" + }, + { + "name": "oniguruma", + "epoch": 0, + "version": "6.8.2", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/oniguruma-6.8.2-2.el8.aarch64.rpm", + "checksum": "sha256:a3c479a9afd17f2a92acab491af69de3b3f69850ab3f8fca5562c5f530530174" + }, + { + "name": "ostree", + "epoch": 0, + "version": "2020.3", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/ostree-2020.3-3.el8.aarch64.rpm", + "checksum": "sha256:a78481500097111da309fad544d6512b73c12cb0ce14813e1ea4124e9d26dbba" + }, + { + "name": "ostree-libs", + "epoch": 0, + "version": "2020.3", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/ostree-libs-2020.3-3.el8.aarch64.rpm", + "checksum": "sha256:497405568863a64e66904df3794d9da933738612b6185fc46efd9a63fdb5d84a" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/pinentry-1.1.0-2.el8.aarch64.rpm", + "checksum": "sha256:22c0e44318e36e04ad1eb4632dcf25db991f481f9a543387d372e1f2ad92561f" + }, + { + "name": "podman", + "epoch": 0, + "version": "2.0.0", + "release": "0.9.rc7.module+el8.3.0+7084+c16098dd", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/podman-2.0.0-0.9.rc7.module+el8.3.0+7084+c16098dd.aarch64.rpm", + "checksum": "sha256:0376e0b82157c1006ea475a52ca7806aea53ae6484c1a4534e9a249b4b13b23e" + }, + { + "name": "protobuf", + "epoch": 0, + "version": "3.5.0", + "release": "13.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/protobuf-3.5.0-13.el8.aarch64.rpm", + "checksum": "sha256:bf6a9ab5cdf3c0a71b634201fe260b1362d8eeb82fe33ccd220dc12c9396ec27" + }, + { + "name": "protobuf-c", + "epoch": 0, + "version": "1.3.0", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/protobuf-c-1.3.0-4.el8.aarch64.rpm", + "checksum": "sha256:cf5d9432afbd324b457d2a02eb9b270ff358b1bfcf28bee57ffe7b84df6e65f4" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-unbound-1.7.3-14.el8.aarch64.rpm", + "checksum": "sha256:6ae316dfb9723d13a8d36d98d109d4a55017b568ee2070279f1bdccdc699862a" + }, + { + "name": "rpm-ostree", + "epoch": 0, + "version": "2020.2", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rpm-ostree-2020.2-2.el8.aarch64.rpm", + "checksum": "sha256:53b632a02518eacbcaec94404927dddaf860638cb594f4c9b898b89bd314ff59" + }, + { + "name": "rpm-ostree-libs", + "epoch": 0, + "version": "2020.2", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/rpm-ostree-libs-2020.2-2.el8.aarch64.rpm", + "checksum": "sha256:d4410304f8470ecad6043d55d6bd9a8efc68c24584e90ed451d74762c6f9ae62" + }, + { + "name": "runc", + "epoch": 0, + "version": "1.0.0", + "release": "66.rc10.module+el8.3.0+7084+c16098dd", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/runc-1.0.0-66.rc10.module+el8.3.0+7084+c16098dd.aarch64.rpm", + "checksum": "sha256:e90c57ced08b8d62a8ab79f5884c99425b007c560c878288a3917b453c40d074" + }, + { + "name": "skopeo", + "epoch": 1, + "version": "1.1.0", + "release": "1.module+el8.3.0+7097+8d4f8cb4", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/skopeo-1.1.0-1.module+el8.3.0+7097+8d4f8cb4.aarch64.rpm", + "checksum": "sha256:56d588cc5ffb16a91ce056824c02de133ad6d0070571f681166046c1805199a4" + }, + { + "name": "slirp4netns", + "epoch": 0, + "version": "1.1.1", + "release": "1.module+el8.3.0+7084+c16098dd", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/slirp4netns-1.1.1-1.module+el8.3.0+7084+c16098dd.aarch64.rpm", + "checksum": "sha256:b6805a1506be42f7623d44b286610391a5f0577f963dcd595210591204b8b481" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/unbound-libs-1.7.3-14.el8.aarch64.rpm", + "checksum": "sha256:727c08fe072ef85837e8db30574aec712cdf67a062eead3e5481ba08425b2395" + }, + { + "name": "usbguard", + "epoch": 0, + "version": "0.7.8", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/usbguard-0.7.8-5.el8.aarch64.rpm", + "checksum": "sha256:b7b68b5c86ca77c738f39387174d59a4a0d30c888eaf72b3c29071be314d3621" + }, + { + "name": "usbguard-selinux", + "epoch": 0, + "version": "0.7.8", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/usbguard-selinux-0.7.8-5.el8.noarch.rpm", + "checksum": "sha256:22069f81fb22bee7871e6368bec14602614aee7f81e8fd5c752b7023fd13de39" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "checksums": { + "0": "sha256:16f28f379d3f297d9b559a5fafe972d5073fc9efbb5fa720068c56f378b3fafc", + "1": "sha256:556df33d4f50aa82d8e620b5bd509631bddb7376019640039a183fc3efac148b" + } + }, + "image-info": { + "firewall-enabled": [ + "ssh", + "dhcpv6-client", + "cockpit" + ], + "groups": [ + "root:x:0:", + "wheel:x:10:" + ], + "groups-system": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:992:", + "clevis:x:993:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "dnsmasq:x:990:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:999:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "polkitd:x:996:", + "render:x:998:", + "rngd:x:991:", + "ssh_keys:x:995:", + "sshd:x:74:", + "sys:x:3:", + "systemd-coredump:x:997:", + "systemd-journal:x:190:", + "systemd-resolve:x:193:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:994:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "os-release": { + "ANSI_COLOR": "0;31", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:redhat:enterprise_linux:8.3:beta", + "HOME_URL": "https://www.redhat.com/", + "ID": "rhel", + "ID_LIKE": "fedora", + "NAME": "Red Hat Enterprise Linux", + "PLATFORM_ID": "platform:el8", + "PRETTY_NAME": "Red Hat Enterprise Linux 8.3 Beta (Ootpa)", + "REDHAT_BUGZILLA_PRODUCT": "Red Hat Enterprise Linux 8", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "8.3", + "REDHAT_SUPPORT_PRODUCT": "Red Hat Enterprise Linux", + "REDHAT_SUPPORT_PRODUCT_VERSION": "8.3 Beta", + "VERSION": "8.3 (Ootpa)", + "VERSION_ID": "8.3" + }, + "ostree": { + "refs": { + "rhel/8/aarch64/edge": { + "inputhash": "d5e23ce6090e343911ccd32a3d83a52dcf93133dfeab816306c8bb74dda0cbaf" + } + }, + "repo": { + "core.mode": "archive-z2" + } + }, + "packages": [ + "ModemManager-1.10.8-2.el8.aarch64", + "ModemManager-glib-1.10.8-2.el8.aarch64", + "NetworkManager-1.26.0-0.2.el8.aarch64", + "NetworkManager-libnm-1.26.0-0.2.el8.aarch64", + "NetworkManager-wifi-1.26.0-0.2.el8.aarch64", + "NetworkManager-wwan-1.26.0-0.2.el8.aarch64", + "abattis-cantarell-fonts-0.0.25-4.el8.noarch", + "acl-2.2.53-1.el8.aarch64", + "attr-2.4.48-3.el8.aarch64", + "audit-3.0-0.17.20191104git1c2f876.el8.aarch64", + "audit-libs-3.0-0.17.20191104git1c2f876.el8.aarch64", + "basesystem-11-5.el8.noarch", + "bash-4.4.19-12.el8.aarch64", + "bash-completion-2.7-5.el8.noarch", + "bind-export-libs-9.11.20-3.el8.aarch64", + "brotli-1.0.6-2.el8.aarch64", + "bubblewrap-0.4.0-1.el8.aarch64", + "bzip2-libs-1.0.6-26.el8.aarch64", + "ca-certificates-2019.2.32-80.0.el8_1.noarch", + "checkpolicy-2.9-1.el8.aarch64", + "chkconfig-1.13-2.el8.aarch64", + "chrony-3.5-1.el8.aarch64", + "clevis-13-3.el8.aarch64", + "clevis-dracut-13-3.el8.aarch64", + "clevis-luks-13-3.el8.aarch64", + "clevis-systemd-13-3.el8.aarch64", + "conmon-2.0.18-1.module+el8.3.0+7084+c16098dd.aarch64", + "container-selinux-2.137.0-1.module+el8.3.0+7084+c16098dd.noarch", + "containernetworking-plugins-0.8.6-1.module+el8.3.0+7084+c16098dd.aarch64", + "containers-common-1.1.0-1.module+el8.3.0+7097+8d4f8cb4.aarch64", + "coreutils-8.30-8.el8.aarch64", + "coreutils-common-8.30-8.el8.aarch64", + "cpio-2.12-8.el8.aarch64", + "cracklib-2.9.6-15.el8.aarch64", + "cracklib-dicts-2.9.6-15.el8.aarch64", + "criu-3.14-2.module+el8.3.0+7084+c16098dd.aarch64", + "crypto-policies-20200610-1.git0ac8b1f.el8.noarch", + "crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch", + "cryptsetup-2.3.3-1.el8.aarch64", + "cryptsetup-libs-2.3.3-1.el8.aarch64", + "curl-7.61.1-12.el8.aarch64", + "cyrus-sasl-lib-2.1.27-5.el8.aarch64", + "dbus-1.12.8-11.el8.aarch64", + "dbus-common-1.12.8-11.el8.noarch", + "dbus-daemon-1.12.8-11.el8.aarch64", + "dbus-glib-0.110-2.el8.aarch64", + "dbus-libs-1.12.8-11.el8.aarch64", + "dbus-tools-1.12.8-11.el8.aarch64", + "dbxtool-8-5.el8.aarch64", + "dejavu-fonts-common-2.35-6.el8.noarch", + "dejavu-sans-mono-fonts-2.35-6.el8.noarch", + "device-mapper-1.02.171-3.el8.aarch64", + "device-mapper-event-1.02.171-3.el8.aarch64", + "device-mapper-event-libs-1.02.171-3.el8.aarch64", + "device-mapper-libs-1.02.171-3.el8.aarch64", + "device-mapper-persistent-data-0.8.5-3.el8.aarch64", + "dhcp-client-4.3.6-41.el8.aarch64", + "dhcp-common-4.3.6-41.el8.noarch", + "dhcp-libs-4.3.6-41.el8.aarch64", + "diffutils-3.6-6.el8.aarch64", + "dmidecode-3.2-6.el8.aarch64", + "dnf-4.2.23-2.el8.noarch", + "dnf-data-4.2.23-2.el8.noarch", + "dnf-plugin-subscription-manager-1.27.9-1.el8.aarch64", + "dnsmasq-2.79-13.el8.aarch64", + "dosfstools-4.1-6.el8.aarch64", + "dracut-049-89.git20200625.el8.aarch64", + "dracut-config-generic-049-89.git20200625.el8.aarch64", + "dracut-network-049-89.git20200625.el8.aarch64", + "e2fsprogs-1.45.6-1.el8.aarch64", + "e2fsprogs-libs-1.45.6-1.el8.aarch64", + "efi-filesystem-3-2.el8.noarch", + "efibootmgr-16-1.el8.aarch64", + "efivar-36-1.el8.aarch64", + "efivar-libs-36-1.el8.aarch64", + "elfutils-debuginfod-client-0.180-1.el8.aarch64", + "elfutils-default-yama-scope-0.180-1.el8.noarch", + "elfutils-libelf-0.180-1.el8.aarch64", + "elfutils-libs-0.180-1.el8.aarch64", + "expat-2.2.5-4.el8.aarch64", + "file-5.33-16.el8.aarch64", + "file-libs-5.33-16.el8.aarch64", + "filesystem-3.8-3.el8.aarch64", + "findutils-4.6.0-20.el8.aarch64", + "firewalld-0.8.2-1.el8.noarch", + "firewalld-filesystem-0.8.2-1.el8.noarch", + "fontpackages-filesystem-1.44-22.el8.noarch", + "freetype-2.9.1-4.el8.aarch64", + "fuse-2.9.7-12.el8.aarch64", + "fuse-common-3.2.1-12.el8.aarch64", + "fuse-libs-2.9.7-12.el8.aarch64", + "fuse-overlayfs-1.1.1-1.module+el8.3.0+7121+472bc0cf.aarch64", + "fuse3-libs-3.2.1-12.el8.aarch64", + "fwupd-1.4.1-1.el8.aarch64", + "gawk-4.2.1-1.el8.aarch64", + "gdbm-1.18-1.el8.aarch64", + "gdbm-libs-1.18-1.el8.aarch64", + "geolite2-city-20180605-1.el8.noarch", + "geolite2-country-20180605-1.el8.noarch", + "gettext-0.19.8.1-17.el8.aarch64", + "gettext-libs-0.19.8.1-17.el8.aarch64", + "glib-networking-2.56.1-1.1.el8.aarch64", + "glib2-2.56.4-8.el8.aarch64", + "glibc-2.28-127.el8.aarch64", + "glibc-common-2.28-127.el8.aarch64", + "glibc-minimal-langpack-2.28-127.el8.aarch64", + "gmp-6.1.2-10.el8.aarch64", + "gnupg2-2.2.20-2.el8.aarch64", + "gnupg2-smime-2.2.20-2.el8.aarch64", + "gnutls-3.6.14-3.el8.aarch64", + "gobject-introspection-1.56.1-1.el8.aarch64", + "gpg-pubkey-d4082792-5b32db75", + "gpg-pubkey-fd431d51-4ae0493b", + "gpgme-1.13.1-3.el8.aarch64", + "grep-3.1-6.el8.aarch64", + "grub2-common-2.02-84.el8.noarch", + "grub2-efi-aa64-2.02-84.el8.aarch64", + "grub2-tools-2.02-84.el8.aarch64", + "grub2-tools-extra-2.02-84.el8.aarch64", + "grub2-tools-minimal-2.02-84.el8.aarch64", + "grubby-8.40-41.el8.aarch64", + "gsettings-desktop-schemas-3.32.0-5.el8.aarch64", + "gzip-1.9-9.el8.aarch64", + "hardlink-1.3-6.el8.aarch64", + "hostname-3.20-6.el8.aarch64", + "ima-evm-utils-1.1-5.el8.aarch64", + "info-6.5-6.el8.aarch64", + "initscripts-10.00.8-1.el8.aarch64", + "ipcalc-0.2.4-4.el8.aarch64", + "iproute-5.3.0-5.el8.aarch64", + "ipset-7.1-1.el8.aarch64", + "ipset-libs-7.1-1.el8.aarch64", + "iptables-1.8.4-14.el8.aarch64", + "iptables-ebtables-1.8.4-14.el8.aarch64", + "iptables-libs-1.8.4-14.el8.aarch64", + "iputils-20180629-2.el8.aarch64", + "iwl7260-firmware-25.30.13.0-99.el8.1.noarch", + "jansson-2.11-3.el8.aarch64", + "jose-10-2.el8.aarch64", + "jq-1.5-12.el8.aarch64", + "json-c-0.13.1-0.2.el8.aarch64", + "json-glib-1.4.4-1.el8.aarch64", + "kbd-2.0.4-10.el8.aarch64", + "kbd-legacy-2.0.4-10.el8.noarch", + "kbd-misc-2.0.4-10.el8.noarch", + "kernel-4.18.0-221.el8.aarch64", + "kernel-core-4.18.0-221.el8.aarch64", + "kernel-modules-4.18.0-221.el8.aarch64", + "keyutils-1.5.10-6.el8.aarch64", + "keyutils-libs-1.5.10-6.el8.aarch64", + "kmod-25-16.el8.aarch64", + "kmod-libs-25-16.el8.aarch64", + "kpartx-0.8.4-2.el8.aarch64", + "krb5-libs-1.18.2-3.el8.aarch64", + "less-530-1.el8.aarch64", + "libacl-2.2.53-1.el8.aarch64", + "libaio-0.3.112-1.el8.aarch64", + "libarchive-3.3.2-9.el8.aarch64", + "libassuan-2.5.1-3.el8.aarch64", + "libattr-2.4.48-3.el8.aarch64", + "libblkid-2.32.1-24.el8.aarch64", + "libcap-2.26-4.el8.aarch64", + "libcap-ng-0.7.9-5.el8.aarch64", + "libcom_err-1.45.6-1.el8.aarch64", + "libcomps-0.1.11-4.el8.aarch64", + "libcroco-0.6.12-4.el8.aarch64", + "libcurl-7.61.1-12.el8.aarch64", + "libdb-5.3.28-39.el8.aarch64", + "libdb-utils-5.3.28-39.el8.aarch64", + "libdnf-0.48.0-2.el8.aarch64", + "libedit-3.1-23.20170329cvs.el8.aarch64", + "libevent-2.1.8-5.el8.aarch64", + "libfdisk-2.32.1-24.el8.aarch64", + "libffi-3.1-22.el8.aarch64", + "libgcab1-1.1-1.el8.aarch64", + "libgcc-8.3.1-5.1.el8.aarch64", + "libgcrypt-1.8.5-4.el8.aarch64", + "libgomp-8.3.1-5.1.el8.aarch64", + "libgpg-error-1.31-1.el8.aarch64", + "libgudev-232-4.el8.aarch64", + "libgusb-0.3.0-1.el8.aarch64", + "libidn2-2.2.0-1.el8.aarch64", + "libjose-10-2.el8.aarch64", + "libkcapi-1.2.0-2.el8.aarch64", + "libkcapi-hmaccalc-1.2.0-2.el8.aarch64", + "libksba-1.3.5-7.el8.aarch64", + "libluksmeta-9-4.el8.aarch64", + "libmaxminddb-1.2.0-10.el8.aarch64", + "libmbim-1.20.2-1.el8.aarch64", + "libmbim-utils-1.20.2-1.el8.aarch64", + "libmetalink-0.1.3-7.el8.aarch64", + "libmnl-1.0.4-6.el8.aarch64", + "libmodman-2.0.1-17.el8.aarch64", + "libmodulemd-2.9.4-2.el8.aarch64", + "libmodulemd1-1.8.16-0.2.9.4.2.aarch64", + "libmount-2.32.1-24.el8.aarch64", + "libndp-1.7-3.el8.aarch64", + "libnet-1.1.6-15.el8.aarch64", + "libnetfilter_conntrack-1.0.6-5.el8.aarch64", + "libnfnetlink-1.0.1-13.el8.aarch64", + "libnftnl-1.1.5-4.el8.aarch64", + "libnghttp2-1.33.0-3.el8_2.1.aarch64", + "libnl3-3.5.0-1.el8.aarch64", + "libnsl2-1.2.0-2.20180605git4a062cf.el8.aarch64", + "libpcap-1.9.1-4.el8.aarch64", + "libpkgconf-1.4.2-1.el8.aarch64", + "libpng-1.6.34-5.el8.aarch64", + "libproxy-0.4.15-5.2.el8.aarch64", + "libpsl-0.20.2-6.el8.aarch64", + "libpwquality-1.4.0-9.el8.aarch64", + "libqb-1.0.3-12.el8.aarch64", + "libqmi-1.24.0-1.el8.aarch64", + "libqmi-utils-1.24.0-1.el8.aarch64", + "librepo-1.12.0-1.el8.aarch64", + "libreport-filesystem-2.9.5-11.el8.aarch64", + "librhsm-0.0.3-3.el8.aarch64", + "libseccomp-2.4.3-1.el8.aarch64", + "libsecret-0.18.6-1.el8.aarch64", + "libselinux-2.9-3.el8.aarch64", + "libselinux-utils-2.9-3.el8.aarch64", + "libsemanage-2.9-3.el8.aarch64", + "libsepol-2.9-1.el8.aarch64", + "libsigsegv-2.11-5.el8.aarch64", + "libslirp-4.3.0-3.module+el8.3.0+7084+c16098dd.aarch64", + "libsmartcols-2.32.1-24.el8.aarch64", + "libsolv-0.7.11-1.el8.aarch64", + "libsoup-2.62.3-1.el8.aarch64", + "libss-1.45.6-1.el8.aarch64", + "libssh-0.9.4-2.el8.aarch64", + "libssh-config-0.9.4-2.el8.noarch", + "libstdc++-8.3.1-5.1.el8.aarch64", + "libsysfs-2.1.0-24.el8.aarch64", + "libtasn1-4.13-3.el8.aarch64", + "libtirpc-1.1.4-4.el8.aarch64", + "libunistring-0.9.9-3.el8.aarch64", + "libusbx-1.0.23-3.el8.aarch64", + "libuser-0.62-23.el8.aarch64", + "libutempter-1.1.6-14.el8.aarch64", + "libuuid-2.32.1-24.el8.aarch64", + "libvarlink-18-3.el8.aarch64", + "libverto-0.3.0-5.el8.aarch64", + "libxcrypt-4.1.1-4.el8.aarch64", + "libxkbcommon-0.9.1-1.el8.aarch64", + "libxml2-2.9.7-8.el8.aarch64", + "libxmlb-0.1.15-1.el8.aarch64", + "libyaml-0.1.7-5.el8.aarch64", + "libzstd-1.4.4-1.el8.aarch64", + "linux-firmware-20200619-99.git3890db36.el8.noarch", + "lua-libs-5.3.4-11.el8.aarch64", + "luksmeta-9-4.el8.aarch64", + "lvm2-2.03.09-3.el8.aarch64", + "lvm2-libs-2.03.09-3.el8.aarch64", + "lz4-libs-1.8.3-2.el8.aarch64", + "memstrack-0.1.8-1.el8.aarch64", + "mokutil-0.3.0-9.el8.aarch64", + "mozjs60-60.9.0-4.el8.aarch64", + "mpfr-3.1.6-1.el8.aarch64", + "ncurses-6.1-7.20180224.el8.aarch64", + "ncurses-base-6.1-7.20180224.el8.noarch", + "ncurses-libs-6.1-7.20180224.el8.aarch64", + "nettle-3.4.1-2.el8.aarch64", + "nftables-0.9.3-14.el8.aarch64", + "nmap-ncat-7.70-5.el8.aarch64", + "npth-1.5-4.el8.aarch64", + "nss-altfiles-2.18.1-12.el8.aarch64", + "oniguruma-6.8.2-2.el8.aarch64", + "openldap-2.4.46-15.el8.aarch64", + "openssh-8.0p1-5.el8.aarch64", + "openssh-clients-8.0p1-5.el8.aarch64", + "openssh-server-8.0p1-5.el8.aarch64", + "openssl-1.1.1g-9.el8.aarch64", + "openssl-libs-1.1.1g-9.el8.aarch64", + "openssl-pkcs11-0.4.10-2.el8.aarch64", + "os-prober-1.74-6.el8.aarch64", + "ostree-2020.3-3.el8.aarch64", + "ostree-libs-2020.3-3.el8.aarch64", + "p11-kit-0.23.14-5.el8_0.aarch64", + "p11-kit-trust-0.23.14-5.el8_0.aarch64", + "pam-1.3.1-11.el8.aarch64", + "passwd-0.80-3.el8.aarch64", + "pcre-8.42-4.el8.aarch64", + "pcre2-10.32-2.el8.aarch64", + "pigz-2.4-4.el8.aarch64", + "pinentry-1.1.0-2.el8.aarch64", + "pkgconf-1.4.2-1.el8.aarch64", + "pkgconf-m4-1.4.2-1.el8.noarch", + "pkgconf-pkg-config-1.4.2-1.el8.aarch64", + "platform-python-3.6.8-30.el8.aarch64", + "platform-python-pip-9.0.3-17.el8.noarch", + "platform-python-setuptools-39.2.0-6.el8.noarch", + "podman-2.0.0-0.9.rc7.module+el8.3.0+7084+c16098dd.aarch64", + "policycoreutils-2.9-9.el8.aarch64", + "policycoreutils-python-utils-2.9-9.el8.noarch", + "polkit-0.115-11.el8.aarch64", + "polkit-libs-0.115-11.el8.aarch64", + "polkit-pkla-compat-0.1-12.el8.aarch64", + "popt-1.16-14.el8.aarch64", + "procps-ng-3.3.15-2.el8.aarch64", + "protobuf-3.5.0-13.el8.aarch64", + "protobuf-c-1.3.0-4.el8.aarch64", + "publicsuffix-list-dafsa-20180723-1.el8.noarch", + "python3-audit-3.0-0.17.20191104git1c2f876.el8.aarch64", + "python3-dateutil-2.6.1-6.el8.noarch", + "python3-dbus-1.2.4-15.el8.aarch64", + "python3-decorator-4.2.1-2.el8.noarch", + "python3-dnf-4.2.23-2.el8.noarch", + "python3-dnf-plugins-core-4.0.17-2.el8.noarch", + "python3-ethtool-0.14-3.el8.aarch64", + "python3-firewall-0.8.2-1.el8.noarch", + "python3-gobject-base-3.28.3-2.el8.aarch64", + "python3-gpg-1.13.1-3.el8.aarch64", + "python3-hawkey-0.48.0-2.el8.aarch64", + "python3-iniparse-0.4-31.el8.noarch", + "python3-inotify-0.9.6-13.el8.noarch", + "python3-libcomps-0.1.11-4.el8.aarch64", + "python3-libdnf-0.48.0-2.el8.aarch64", + "python3-librepo-1.12.0-1.el8.aarch64", + "python3-libs-3.6.8-30.el8.aarch64", + "python3-libselinux-2.9-3.el8.aarch64", + "python3-libsemanage-2.9-3.el8.aarch64", + "python3-nftables-0.9.3-14.el8.aarch64", + "python3-pip-wheel-9.0.3-17.el8.noarch", + "python3-policycoreutils-2.9-9.el8.noarch", + "python3-rpm-4.14.3-4.el8.aarch64", + "python3-setools-4.3.0-1.el8.aarch64", + "python3-setuptools-wheel-39.2.0-6.el8.noarch", + "python3-six-1.11.0-8.el8.noarch", + "python3-slip-0.6.4-11.el8.noarch", + "python3-slip-dbus-0.6.4-11.el8.noarch", + "python3-subscription-manager-rhsm-1.27.9-1.el8.aarch64", + "python3-syspurpose-1.27.9-1.el8.aarch64", + "python3-unbound-1.7.3-14.el8.aarch64", + "readline-7.0-10.el8.aarch64", + "redhat-release-8.3-0.2.el8.aarch64", + "redhat-release-eula-8.3-0.2.el8.aarch64", + "rng-tools-6.8-3.el8.aarch64", + "rootfiles-8.1-22.el8.noarch", + "rpm-4.14.3-4.el8.aarch64", + "rpm-build-libs-4.14.3-4.el8.aarch64", + "rpm-libs-4.14.3-4.el8.aarch64", + "rpm-ostree-2020.2-2.el8.aarch64", + "rpm-ostree-libs-2020.2-2.el8.aarch64", + "rpm-plugin-selinux-4.14.3-4.el8.aarch64", + "rpm-plugin-systemd-inhibit-4.14.3-4.el8.aarch64", + "rsync-3.1.3-8.el8.aarch64", + "runc-1.0.0-66.rc10.module+el8.3.0+7084+c16098dd.aarch64", + "sed-4.5-2.el8.aarch64", + "selinux-policy-3.14.3-48.el8.noarch", + "selinux-policy-targeted-3.14.3-48.el8.noarch", + "setools-console-4.3.0-1.el8.aarch64", + "setup-2.12.2-6.el8.noarch", + "shadow-utils-4.6-10.el8.aarch64", + "shared-mime-info-1.9-3.el8.aarch64", + "shim-aa64-15-12.aarch64", + "skopeo-1.1.0-1.module+el8.3.0+7097+8d4f8cb4.aarch64", + "slirp4netns-1.1.1-1.module+el8.3.0+7084+c16098dd.aarch64", + "sqlite-3.26.0-10.el8.aarch64", + "sqlite-libs-3.26.0-10.el8.aarch64", + "subscription-manager-1.27.9-1.el8.aarch64", + "subscription-manager-rhsm-certificates-1.27.9-1.el8.aarch64", + "sudo-1.8.29-6.el8.aarch64", + "systemd-239-36.el8.aarch64", + "systemd-libs-239-36.el8.aarch64", + "systemd-pam-239-36.el8.aarch64", + "systemd-udev-239-36.el8.aarch64", + "tar-1.30-5.el8.aarch64", + "timedatex-0.5-3.el8.aarch64", + "tmux-2.7-1.el8.aarch64", + "tpm2-tools-4.1.1-1.el8.aarch64", + "tpm2-tss-2.3.2-2.el8.aarch64", + "traceroute-2.1.0-6.el8.aarch64", + "trousers-0.3.14-4.el8.aarch64", + "trousers-lib-0.3.14-4.el8.aarch64", + "tzdata-2020a-1.el8.noarch", + "unbound-libs-1.7.3-14.el8.aarch64", + "usbguard-0.7.8-5.el8.aarch64", + "usbguard-selinux-0.7.8-5.el8.noarch", + "usermode-1.113-1.el8.aarch64", + "util-linux-2.32.1-24.el8.aarch64", + "vim-minimal-8.0.1763-15.el8.aarch64", + "virt-what-1.18-6.el8.aarch64", + "which-2.21-12.el8.aarch64", + "wpa_supplicant-2.9-2.el8.aarch64", + "xkeyboard-config-2.28-1.el8.noarch", + "xz-5.2.4-3.el8.aarch64", + "xz-libs-5.2.4-3.el8.aarch64", + "zlib-1.2.11-15.el8.aarch64" + ], + "passwd": [ + "root:x:0:0:root:/root:/bin/bash" + ], + "passwd-system": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:995:992::/var/lib/chrony:/sbin/nologin", + "clevis:x:996:993:Clevis Decryption Framework unprivileged user:/var/cache/clevis:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "dnsmasq:x:990:990:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "polkitd:x:998:996:User for polkitd:/:/sbin/nologin", + "rngd:x:994:991:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "services-disabled": [ + "blk-availability.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "clevis-luks-askpass@.path", + "console-getty.service", + "ctrl-alt-del.target", + "dbxtool.service", + "debug-shell.service", + "dnsmasq.service", + "ebtables.service", + "exit.target", + "fstrim.timer", + "fwupd-refresh.timer", + "halt.target", + "io.podman.service", + "io.podman.socket", + "kexec.target", + "nftables.service", + "ostree-finalize-staged.path", + "ostree-remount.service", + "podman.service", + "podman.socket", + "poweroff.target", + "rdisc.service", + "reboot.target", + "remote-cryptsetup.target", + "rhsm-facts.service", + "rhsm.service", + "rngd-wake-threshold.service", + "rpm-ostree-bootstatus.service", + "rpm-ostreed-automatic.timer", + "runlevel0.target", + "runlevel6.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "systemd-resolved.service", + "tcsd.service", + "tmp.mount", + "usbguard.service", + "wpa_supplicant.service" + ], + "services-enabled": [ + "ModemManager.service", + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "dbus-org.fedoraproject.FirewallD1.service", + "dbus-org.freedesktop.ModemManager1.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dbus-org.freedesktop.timedate1.service", + "dm-event.socket", + "dnf-makecache.timer", + "firewalld.service", + "getty@.service", + "import-state.service", + "loadmodules.service", + "lvm2-lvmpolld.socket", + "lvm2-monitor.service", + "nis-domainname.service", + "remote-fs.target", + "rhsmcertd.service", + "rngd.service", + "selinux-autorelabel-mark.service", + "sshd.service", + "timedatex.service", + "unbound-anchor.timer" + ], + "timezone": "UTC", + "type": "ostree/commit" + } +} \ No newline at end of file diff --git a/test/cases/rhel_8-aarch64-tar-boot.json b/test/cases/rhel_8-aarch64-tar-boot.json new file mode 100644 index 0000000..d018c4e --- /dev/null +++ b/test/cases/rhel_8-aarch64-tar-boot.json @@ -0,0 +1,5626 @@ +{ + "boot": { + "type": "nspawn-extract" + }, + "compose-request": { + "distro": "rhel-8", + "arch": "aarch64", + "image-type": "tar", + "repositories": [ + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + }, + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + } + ], + "filename": "root.tar.xz", + "blueprint": { + "name": "tar-boot-test", + "description": "Image for boot test", + "packages": [ + { + "name": "openssh-server", + "version": "*" + } + ], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:01e486a3be67325e9692e909f5c6534137ee6a6df185ba2c09d4d50fe6c738f6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libusbx-1.0.23-3.el8.aarch64.rpm" + }, + "sha256:04c031a07bde4360484a0180e832036d3ac45a95c4839e54d7a02423df5485ef": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pam-1.3.1-11.el8.aarch64.rpm" + }, + "sha256:057b6632870b8c3c0c950a19092ef2f9749bf3d1a37ccb083bf42ca6404db066": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-libs-1.02.171-3.el8.aarch64.rpm" + }, + "sha256:058822931f4c34c18675116c1b02b718de4044c1019acb0d5f97417f00a30ba7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libevent-2.1.8-5.el8.aarch64.rpm" + }, + "sha256:094eff70081085f87a7ac0dedafa851ad8ac8e03f9f328636df4a0f8301d0e87": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-libs-5.2.4-3.el8.aarch64.rpm" + }, + "sha256:0a885c6dc6abd969b828bf2fd7063ee884e6d058eaf405b02f3dd6efb6c66bac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:0b4564ad3a799af1a4a0de33b0952f6056d942b0cfa39b73e9375bf0c05b3191": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-smime-2.2.20-2.el8.aarch64.rpm" + }, + "sha256:0bb7024125ca67119612e55a92da13c989e0306ddd7de7e655a679c963939ef7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm" + }, + "sha256:0f1a02850c102e2a186787504f965c0c10d6432b9f600c18bc2f520e55f04a8c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libassuan-2.5.1-3.el8.aarch64.rpm" + }, + "sha256:0f32d23a6b2b15603d710b0317238ef8dde3de61eda96713e21d86c9fc7a98ed": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/which-2.21-12.el8.aarch64.rpm" + }, + "sha256:0fd7dd5b060e7533144ad7a3cae2453ad6f87650010f328879b10c7c4cba0c04": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iptables-libs-1.8.4-14.el8.aarch64.rpm" + }, + "sha256:1091a799d34a42d2e42ac462b4f979a55d17513eca5a00bad9bdba56cca83357": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-25-16.el8.aarch64.rpm" + }, + "sha256:10ac3bf7565725a55b0aef56f65befd0d320219fc83adfab6e564c19f8c44bd6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-2.0.4-10.el8.aarch64.rpm" + }, + "sha256:1143ac623a74d7feaaaf293c18d942d243248f6356628f87216670c10d11687b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-glib-1.4.4-1.el8.aarch64.rpm" + }, + "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm" + }, + "sha256:125c92f23d87b905c21e9f7669f0ec6e41428ab63c8c13f63db8980f292797d5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sed-4.5-2.el8.aarch64.rpm" + }, + "sha256:126d980678e5b687c775cf857b4013306f1a761353370258a0f04d92a3553f92": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-minimal-2.02-84.el8.aarch64.rpm" + }, + "sha256:140146ebcbadd9b0f2aa5c2fcde5c93888f2d84ce61a2a4cf148ef435d1ba410": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsemanage-2.9-3.el8.aarch64.rpm" + }, + "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm" + }, + "sha256:15c33124ac0479d34f1f58d2bd24cc52db7089b4a8681c276a3fd0d6dfe4fc72": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-8.30-8.el8.aarch64.rpm" + }, + "sha256:19cd894b4154d1a8521c6884cfd2a6eaf1f498b7dec5cc31408f8535b9098f2a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shared-mime-info-1.9-3.el8.aarch64.rpm" + }, + "sha256:19d1de27d2f62b4a55735233807f70a1e8ff7551fed97ee8650dbd09c1ef50ea": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libzstd-1.4.4-1.el8.aarch64.rpm" + }, + "sha256:19efe6f125c00123ccc6d96e51eb61e711f3ea01f32d18cce14d3b614217c58e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gmp-6.1.2-10.el8.aarch64.rpm" + }, + "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tzdata-2020a-1.el8.noarch.rpm" + }, + "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm" + }, + "sha256:207e6396488c1db18fb7b1f2b9952f48c2625f042c5f6a901d41974ce376b0e0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sqlite-libs-3.26.0-10.el8.aarch64.rpm" + }, + "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:22c0e44318e36e04ad1eb4632dcf25db991f481f9a543387d372e1f2ad92561f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/pinentry-1.1.0-2.el8.aarch64.rpm" + }, + "sha256:2397506a63455e543b201938f605e687de5590d9a06282824e2f6bfdf5e0f149": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsolv-0.7.11-1.el8.aarch64.rpm" + }, + "sha256:268d9232f0853037100432e9363c659cf99927e03f759fd4884643b560710cd6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libss-1.45.6-1.el8.aarch64.rpm" + }, + "sha256:26b14d8f226962ce712bbccfb245843759e835a24a139eacae86d680043a85a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmount-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:2809ad51c6eb6c9a54d64cccc2cd948f6fd4207f32b4493b3f4a9bd0886c894b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcurl-7.61.1-12.el8.aarch64.rpm" + }, + "sha256:290c83afcd2b0a2b17aab95cf72a85da5f8b9f9a9862857c919a0f43e3fce70e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-pkcs11-0.4.10-2.el8.aarch64.rpm" + }, + "sha256:2921d3aa14a509d271ca35256903c142c30f088f7dc889a4c4e15b26316ef5c0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-2.02-84.el8.aarch64.rpm" + }, + "sha256:2cddadff38ccef2364a7e40af0e1d9b3bf9c06869c15ceeb655f3cfa431c2083": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-2.26-4.el8.aarch64.rpm" + }, + "sha256:2d74e0ab14393921c6160fda8dd533b58c0348acdf5ee5c306ffc64221700de2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librepo-1.12.0-1.el8.aarch64.rpm" + }, + "sha256:2d84f6765b1645f867527f493b6153470602a80c75f81545bf619aa92127e4da": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bzip2-libs-1.0.6-26.el8.aarch64.rpm" + }, + "sha256:2dc8e2f52451d1a11b16bbb389a24c58b61a1ba804ee777f9d06dbe4e1fcf6e5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libidn2-2.2.0-1.el8.aarch64.rpm" + }, + "sha256:2efbfbcce7ef24e433d3c304b6b6b022d1b1b8a972969da1adb1c3c85f9625a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dosfstools-4.1-6.el8.aarch64.rpm" + }, + "sha256:320ced09e242f09047f4fab0a7f66aba6de2e42583f6a2e164eadcc1ffd0b915": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mpfr-3.1.6-1.el8.aarch64.rpm" + }, + "sha256:3256e78263462d5d7ab37b696992aedd6f810431641ce8d1e1bc198c797b402b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-1.45.6-1.el8.aarch64.rpm" + }, + "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm" + }, + "sha256:36aece7b7a65785985bf0b98701514f12735a87517b8578a3eb3710f82ba4765": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-c-0.13.1-0.2.el8.aarch64.rpm" + }, + "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libcomps-0.1.11-4.el8.aarch64.rpm" + }, + "sha256:3a684fd5f1b1d417c6c3e9d1f0d5b846138aa06450ff246425d43d4a20bd619e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/diffutils-3.6-6.el8.aarch64.rpm" + }, + "sha256:3b607f0dbedecb25239e22c1f553c8d70db9d2206a877fa07567fa1a49e233d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcc-8.3.1-5.1.el8.aarch64.rpm" + }, + "sha256:3bf230c85711b285afb968850d7e98eb6b068a06e7ca40e94203e388d8447f48": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnutls-3.6.14-3.el8.aarch64.rpm" + }, + "sha256:3ee66f993ee567b2457a221ed364ae4f8dfe783a5f0e723d9169f95d12f9e696": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-libs-5.33-16.el8.aarch64.rpm" + }, + "sha256:3ee6a4f61935c2f0698ad2c4834a5864920a1e48d55c7800da7c382249895e39": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-0.9.4-2.el8.aarch64.rpm" + }, + "sha256:3ef63ecbebf844bcf682c9482dc0ddd158c955b0f066b62eb9575bb9a9642db5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-1.1.1g-9.el8.aarch64.rpm" + }, + "sha256:3f5765cebcac288cc1b5b118acfbc2016eda7b81ad73923f6f9c21e4731eb0d9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-1.18-1.el8.aarch64.rpm" + }, + "sha256:3f7e5e72ab9e18dbca936b40734c91520242a49a9e98a2f2589f397faa6ad8e8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/info-6.5-6.el8.aarch64.rpm" + }, + "sha256:3fe7c10c144c8fffc00d144317a2bf8029bd9d048432bccfc352dfc6f0995680": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-udev-239-36.el8.aarch64.rpm" + }, + "sha256:41cc2d507fdfbba939c00164a563e770d466f992cb64d3c51a79aec20b31d6d1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.aarch64.rpm" + }, + "sha256:435a2be84a2b38372965dbd60ffed0ed38a616b8100859787a8bb3b19d9fc4d9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpcap-1.9.1-4.el8.aarch64.rpm" + }, + "sha256:43ab42c8a58267936a89da99e37d3b9fc56489e958060f600ba047445ca44ee3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/os-prober-1.74-6.el8.aarch64.rpm" + }, + "sha256:448d3ff44e7f32f3b33e891180e248dc1bcd4d410f68015a8b0c30dc7c385aca": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-libs-1.1.1g-9.el8.aarch64.rpm" + }, + "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm" + }, + "sha256:471663fca7e3f609834368d69d8f1f469cfc0d3f3e95dc2b79381722d0368edc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.aarch64.rpm" + }, + "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm" + }, + "sha256:47b483c0f556c56f0b1f468603c57834864902ae5a849a18c8a0ca5f76d66c86": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:481bbd6d73415d437a73eee7977ec370299acdac44b215a026652debba31783d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtirpc-1.1.4-4.el8.aarch64.rpm" + }, + "sha256:4874e739ed37bc6a5bfdb6069d4620e5f7efe01d60eb9fd2550c550167c99990": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.aarch64.rpm" + }, + "sha256:4909edde46b5b2b58d228bacafa3bab5bc5847559d591d59ecd59cdf50d36db4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-hawkey-0.48.0-2.el8.aarch64.rpm" + }, + "sha256:4a27cd4496ebdba821b3c7692eeb0c0fff28c6af69fe4fe9e4bf52511639bd6a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kpartx-0.8.4-2.el8.aarch64.rpm" + }, + "sha256:4a40a1538c8a488f32476f96d2461c3b792eb0cf5acb998e397d8a9cef8e5461": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libffi-3.1-22.el8.aarch64.rpm" + }, + "sha256:4d8d164f8bd56b7ab6252f009b38525f39fb161c03713414e1583894a265c50a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-all-langpacks-2.28-127.el8.aarch64.rpm" + }, + "sha256:4d8edaa317fd508226bb5421ef423470f3e9153167222dee7bf8fb2346b7875b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-049-89.git20200625.el8.aarch64.rpm" + }, + "sha256:4e4923f05d0032263d570075b9b832b9fc3550cd8f82f9a6b0b9b25061726110": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/popt-1.16-14.el8.aarch64.rpm" + }, + "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm" + }, + "sha256:518e5412ce19ab733f62c334da8c5545a212c4c971d513eb95590b08a14e3772": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bash-4.4.19-12.el8.aarch64.rpm" + }, + "sha256:532d46a4c0e68bd45eabc3e2ba6d570880344044e1034f5f347b37c470d0dced": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libverto-0.3.0-5.el8.aarch64.rpm" + }, + "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:53fa2fd6a138d00c697b827a77bcc25ec498b1d49bb04ef80594e81ccabc165d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgomp-8.3.1-5.1.el8.aarch64.rpm" + }, + "sha256:540fa90864b4eb0176b56e0c5e9d7bc6130985288ae297b4c38950381b08a827": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/findutils-4.6.0-20.el8.aarch64.rpm" + }, + "sha256:5996ff948b5874f894c5ce3495652e6de552addf2331fd82193023d77994ef8f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.aarch64.rpm" + }, + "sha256:5a05f1126ed38f752af247dcdf7c958e738b935b8b6d942fd42f423768f05255": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgpg-error-1.31-1.el8.aarch64.rpm" + }, + "sha256:5eddb5c1febbe6e58491f8e9ee8fc9897298b307e0357c01f49d445cf25283c9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grubby-8.40-41.el8.aarch64.rpm" + }, + "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:621e96e91103f2f701e4ac3b8b8b6ef9aab4db5ab8fb3e141eb02e3f328aed79": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-utils-5.3.28-39.el8.aarch64.rpm" + }, + "sha256:62a2878605ca0415fd60adcff4c7068d855d20737498a968fabc646610ccbe5c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-ng-0.7.9-5.el8.aarch64.rpm" + }, + "sha256:634a3cbf0b334e901b6887176fa1b98246be7c4010b4c21cb6fd8fa7aa5fdf94": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/filesystem-3.8-3.el8.aarch64.rpm" + }, + "sha256:64ac5cb6fd3da1610812795ce17e09648d89c87513d6284b852a3455b0831d3a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lz4-libs-1.8.3-2.el8.aarch64.rpm" + }, + "sha256:651f38873d3356ec4efb27d04658541080d11cf1ece6335a07db1ca089fa7da3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-0.23.14-5.el8_0.aarch64.rpm" + }, + "sha256:6557d001315e85ac123b1378c5aafb81428e2383debcacf3f91c55476cfc48eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpsl-0.20.2-6.el8.aarch64.rpm" + }, + "sha256:65b8d755ff01dfefa423d2f0bd6fd54cfc4c580da63510e19cf178abb6e26172": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libs-3.6.8-30.el8.aarch64.rpm" + }, + "sha256:68593fad4413255772bd08ed7f8b578332f0f53e002c8c7473d90c966a87131b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-3.6.8-30.el8.aarch64.rpm" + }, + "sha256:689577d74311a7327aab6fe412a803d72b790957e863b6b78a8621a040306919": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cryptsetup-libs-2.3.3-1.el8.aarch64.rpm" + }, + "sha256:6a6aa18217ae72a0b33e4302da927e6ded92520cbf4d48a5030d4a2f95eeb5d8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/chkconfig-1.13-2.el8.aarch64.rpm" + }, + "sha256:6ae316dfb9723d13a8d36d98d109d4a55017b568ee2070279f1bdccdc699862a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-unbound-1.7.3-14.el8.aarch64.rpm" + }, + "sha256:6f2bfbe0f23d3b233aacb72c153ee133839353325f028321eb5ea38b0dc06c02": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libattr-2.4.48-3.el8.aarch64.rpm" + }, + "sha256:6f87f305a3e0e0faf69c2a9d4f277958ca33e85b72c6e4f77a365a5f60ced3d3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-libs-25-16.el8.aarch64.rpm" + }, + "sha256:6fbfaa1e1b1bb4e2362cf3dce0f59a94a78b457904234cbccbe6afacde311c26": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-1.02.171-3.el8.aarch64.rpm" + }, + "sha256:704e1dc996a17815c6dcf7029c0ddb2849d40feaab6e9b9c687af9d95fef825c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libksba-1.3.5-7.el8.aarch64.rpm" + }, + "sha256:727c08fe072ef85837e8db30574aec712cdf67a062eead3e5481ba08425b2395": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/unbound-libs-1.7.3-14.el8.aarch64.rpm" + }, + "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:760d9056891a60c200984f0655aee1876b3bf890f7486306c05db8e295ae7843": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xfsprogs-5.0.0-4.el8.aarch64.rpm" + }, + "sha256:77b56d825eb31ca191254d17a4c9399e3c4fe8af42a528c2ad4424bfd865b82d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/expat-2.2.5-4.el8.aarch64.rpm" + }, + "sha256:784d385116891056b618722c933d43c5b395b92fa82e5bc797081317ec6a82ba": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-eula-8.3-0.2.el8.aarch64.rpm" + }, + "sha256:7864fbc866ae5a3e59b4f0f114b77ff52b55e76c5388a917f82a6097f02a4db7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libyaml-0.1.7-5.el8.aarch64.rpm" + }, + "sha256:796cac51b2c1092c4faad372717c6ddc37cad9757111a41e531fe0a8d6c0a9ea": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/brotli-1.0.6-2.el8.aarch64.rpm" + }, + "sha256:7c014b54f7929348f614f8f4eb7a1552b8565c0a57f3a75ff6471dc05f30cafe": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libacl-2.2.53-1.el8.aarch64.rpm" + }, + "sha256:7d3ddbaae06c7fb8d24449e11b418ee07bdd9e07f7f0af57741d220b97228557": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/curl-7.61.1-12.el8.aarch64.rpm" + }, + "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:800c9a0d718c641ceee26c8f625b2dcd79a33963e9e7a11930678dc99582a2d0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-libs-239-36.el8.aarch64.rpm" + }, + "sha256:81d2e21dad970c08798c0df00bbda21acf165a370f9612e0d14ce69e5dd6c5c3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grep-3.1-6.el8.aarch64.rpm" + }, + "sha256:83301ca502322e0634173460bf8fa35572c36ab8cc2e6e600bf9980f845fc857": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-1.2.0-2.el8.aarch64.rpm" + }, + "sha256:83e470505f558f8cf8414a7fc8fb0d1bc4b16ed15d05ccf7e46332b04d1a0d85": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/util-linux-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:8498846918c7bc7a20553340434cfbfb0d19185adcd0ff52866c6506ab8f747d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcrypt-1.8.5-4.el8.aarch64.rpm" + }, + "sha256:84e7102978d76d80aa40c43efcc71c1e54e819195132df921a8c13cec54328da": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-5.3.28-39.el8.aarch64.rpm" + }, + "sha256:86ae7501bdf0149728879f488dd4c86907216cb5b021192347a5c10a55382931": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcroco-0.6.12-4.el8.aarch64.rpm" + }, + "sha256:876ffb285aaeddb2c18ae32527bd4ee202710bd8e18d5b410af22937646dcdec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxcrypt-4.1.1-4.el8.aarch64.rpm" + }, + "sha256:8ac1003d722e3d5f383c9b970bf6dfbc905007a624abadb63e520d7a93993747": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-6.1-7.20180224.el8.aarch64.rpm" + }, + "sha256:8ef2fcbe5a8d6e7d393d28838ff458336d16e006bc7d19921f460eb105b88570": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-libs-1.18-1.el8.aarch64.rpm" + }, + "sha256:90405803c0159cdf0f74a26b6ce064cfd9973e59232b2923ed171a38fc5684a6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-gpg-1.13.1-3.el8.aarch64.rpm" + }, + "sha256:91c58481a7e4a9b7f9e0e14844fa73047395c75df95d35afa3b0d8ef3f584491": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-common-2.28-127.el8.aarch64.rpm" + }, + "sha256:95de1777f7e8a734445c5d45e0b77da8b6c41a9b504582ed266d852c677a936b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libuuid-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:964b1d9563e42a176c24cf5c91616ee5cc40de3b1c92038d7fb0392113eaf159": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glib2-2.56.4-8.el8.aarch64.rpm" + }, + "sha256:986683a0edb615a5d45a9c1b0ee3d27f8032c2667cad58d24526085e41010992": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-pam-239-36.el8.aarch64.rpm" + }, + "sha256:98dd1582b8ab27085379a3a7e598a6e261c62f97a5f3689447cbf1d4af9ae46c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libs-0.180-1.el8.aarch64.rpm" + }, + "sha256:98f838a9775269a0f796151bd54d52c7ac91d4bf1365186772f243bfafbb136a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libaio-0.3.112-1.el8.aarch64.rpm" + }, + "sha256:9b6fcdd19caee5fe77b9ed17adb3f11769a7109ebcf52d3cb3358d5a9eecc391": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libdnf-0.48.0-2.el8.aarch64.rpm" + }, + "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-2.9-3.el8.aarch64.rpm" + }, + "sha256:a07f96031fbe9507a8d6bb0e14cf0783bc615552e4cfb75131672072f5729de8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libxkbcommon-0.9.1-1.el8.aarch64.rpm" + }, + "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm" + }, + "sha256:a6292dd846bc471b22409fc95a5e09c88bcb6176251dc5cc11f4b14a73ddda11": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-8.3-0.2.el8.aarch64.rpm" + }, + "sha256:a840b8193ce9b1b72e3783b9a9bb2ec91947ba3b6f7ac973ae8e0e20a7059117": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shadow-utils-4.6-10.el8.aarch64.rpm" + }, + "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:aa1a6a85493590efb9c0235c15d6a05e8b119f385dc13b3e3abd2315f8c4a6e0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/memstrack-0.1.8-1.el8.aarch64.rpm" + }, + "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/setup-2.12.2-6.el8.noarch.rpm" + }, + "sha256:acd4674b3fbe01d6cf94eb18a81cdb00beb73bf3d4a25a28e234f31498f5c389": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-dicts-2.9.6-15.el8.aarch64.rpm" + }, + "sha256:ad07261ff4f478be9511f7ee749bfbe8b2ba8e28696c2f561caa20e35c535134": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libutempter-1.1.6-14.el8.aarch64.rpm" + }, + "sha256:af98260ff2c263c9cefcb96d16d200941c1873cda9868b57df51b034066940fe": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-8.0p1-5.el8.aarch64.rpm" + }, + "sha256:b140eb203fe889d1c75ef3b5527033cfeb7a6f0c813638a607c9f10faf52a34b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libelf-0.180-1.el8.aarch64.rpm" + }, + "sha256:b35f92dddd2cd73f7f8d8595ebb197a1c67a214ec2acf960ac673a014f2d9b90": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-server-8.0p1-5.el8.aarch64.rpm" + }, + "sha256:b5b1f5f7a02f70db056861813ddcf181f2ebba507cd368fbe2c32f262edf7fc6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-rpm-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:b7bc10e9947763df6e6177b3dbbe77c21f55ed60d26c4c28bfe14a98f7e06189": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-2.9.6-15.el8.aarch64.rpm" + }, + "sha256:b90ce065d5ea98845733ff06e47d385937f6293ebddf52144c80f5fe1f296307": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/policycoreutils-2.9-9.el8.aarch64.rpm" + }, + "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/basesystem-11-5.el8.noarch.rpm" + }, + "sha256:b984d8576520272b1011cc46b03c666cd6abc1bf74b428a8781ca58c6287a007": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/acl-2.2.53-1.el8.aarch64.rpm" + }, + "sha256:ba1364539f16d7c8379d7563fd0634651fa8a05b3f7098a21ba96e1f5641f132": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmodulemd-2.9.4-2.el8.aarch64.rpm" + }, + "sha256:ba66a87402ccc8515e164f597f5d254ad9513979fe3ca1ffabf63c915c0daa73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tar-1.30-5.el8.aarch64.rpm" + }, + "sha256:bae965c689b08ce42f10366e4b441504432ac353d30edb8b4b2cfc798069434f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-libs-1.12.8-11.el8.aarch64.rpm" + }, + "sha256:bc0f9bd34ac6a01dd7272b87e1b7a33045ff8c6793cac02fa639dfc9341e8215": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lua-libs-5.3.4-11.el8.aarch64.rpm" + }, + "sha256:bf267d9571cf568375e261d593236750f400ac536c1c818513106482ebc3fb10": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsigsegv-2.11-5.el8.aarch64.rpm" + }, + "sha256:c1b5c4668331e8b05a08e7de432cbfb75f8072401bb6651a24e43f64eff8dcc4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsecret-0.18.6-1.el8.aarch64.rpm" + }, + "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm" + }, + "sha256:c22f0d40fbdaaceec711be0cecc122fac4570d126914ce3694a3d6a1178bd487": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gpgme-1.13.1-3.el8.aarch64.rpm" + }, + "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/readline-7.0-10.el8.aarch64.rpm" + }, + "sha256:c633b98b4dbf96674a69573404819c34d66eb7e19820283fc588f6b10b0e3fc8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-build-libs-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:c82ca1c0ef4b89f75e8e7edbbae4f3eeb2720a4abd56b0927928cff2d9721186": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-utils-2.9-3.el8.aarch64.rpm" + }, + "sha256:c88d1656b8001ff79175f7d3b7818681e40e54e8fec6fb8556ba8141d437fcfa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.aarch64.rpm" + }, + "sha256:c8a28b4587888435c51f6d1ce42f48b08fb0256e4029ea569e9a02adcb82c85a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsepol-2.9-1.el8.aarch64.rpm" + }, + "sha256:ca87249f90bac96902d18c11a1f8c80566fa090c6473226bdd147e07e3ed21ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/krb5-libs-1.18.2-3.el8.aarch64.rpm" + }, + "sha256:cc7e751a62f9a28b82df0bce0ecfb050364b8688ef69473f1910909e44c5eb98": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libseccomp-2.4.3-1.el8.aarch64.rpm" + }, + "sha256:ce6960fa7831611815e163864a91b70b0ab1ef0f446c2cad1eec13404822cad5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-libs-0.19.8.1-17.el8.aarch64.rpm" + }, + "sha256:ce8c92fa2bef1770f44992db24e1cb8cc850feab03a74cf0ebf741ecb0d160ea": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre2-10.32-2.el8.aarch64.rpm" + }, + "sha256:cf8fdbfcd359aac8bf55500c24e6843baafe8fef35019126c3616806b41415b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ima-evm-utils-1.1-5.el8.aarch64.rpm" + }, + "sha256:cf9a0bbaa7bd075d2af532586ee93ab92b96d9859f53a57f85cd7e0309f8fff6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/zlib-1.2.11-15.el8.aarch64.rpm" + }, + "sha256:cfa188d39884fd4ba36d27e8fb25aed9dbd26efccffbfd01a24c2c580fdb96f1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openldap-2.4.46-15.el8.aarch64.rpm" + }, + "sha256:d173b35182f28b9dd48e4a942f2a20c659bee2f9ac234b60cf8b995aa2421382": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libblkid-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:d20f4bf44fcc90509e7afca364eae0a55c8f33df2f8a69e266f5fcd4b5fa2e4b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.aarch64.rpm" + }, + "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:d3fb5a473c44cd8ae6b94d6bf3fc552553d8f4ef28eed439658ea38990ab9db5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-libs-4.14.3-4.el8.aarch64.rpm" + }, + "sha256:d4424a9c946da1eab876298af8f772d5aab1109a1f551ac2f1cd10ee849568de": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-2.28-127.el8.aarch64.rpm" + }, + "sha256:d4467ba499fe1ddd82746ad00d7e86bea59c4827fe1ff8c05132bad1f93ddb7f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-239-36.el8.aarch64.rpm" + }, + "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:d695df94220c2ef990e502123b3bd8ede8fcfb4f738346dd98d999559b01b6b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-0.3.14-4.el8.aarch64.rpm" + }, + "sha256:d6aa17908468b5e2095526664fce6627dec7a02c26625339c14b9278cc39d4a6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libfdisk-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:d6ab7c8790cd6c9a137d908d840c51c547e950d25f6ab8af3c9ad3899ff6c044": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpwquality-1.4.0-9.el8.aarch64.rpm" + }, + "sha256:d890d028f59e2553730fad3dbea0e1a245c92c24836513fa2281194b1c90b53a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/procps-ng-3.3.15-2.el8.aarch64.rpm" + }, + "sha256:d9a4628bd8d3e776f626be4cb5edec305c2ff894d7c5cc7e33e212545721053a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm" + }, + "sha256:da4b9bfad26d559485ade669556512acfe93ba23d204f2556bac82c09401b4e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libunistring-0.9.9-3.el8.aarch64.rpm" + }, + "sha256:da4d193d5f0caf7a196f3bd4aa1225072b522521d82fca8edecc6546b5460ac6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.aarch64.rpm" + }, + "sha256:daf36ee86ec6001770ae68bdd82409526faf4b9b1313a6b74fb54cfb98ff571e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/npth-1.5-4.el8.aarch64.rpm" + }, + "sha256:dc37d12420a2593c46619e9b67a0115255a0c7334f547871ce08e329bf5d15a2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-1.12.8-11.el8.aarch64.rpm" + }, + "sha256:dcda73e0ea7b5d2710528fc6df135d435281d1f4d2be0018bb6f1858e818d599": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cpio-2.12-8.el8.aarch64.rpm" + }, + "sha256:dfdec57ff520511d1d4ef9d913d90fc8d6ac98685cbc12fb568c8980f2a73f1a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libarchive-3.3.2-9.el8.aarch64.rpm" + }, + "sha256:e08305aecd924631284ddaeae39a83cca85495389d4ddef75410a32af49f946d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fuse-libs-2.9.7-12.el8.aarch64.rpm" + }, + "sha256:e085cf8bddcf09c908d925688dae077300d2964b40bd060af252d26a963cfe50": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-common-8.30-8.el8.aarch64.rpm" + }, + "sha256:e0faa8a6bc43432619a2b6a26e9f1323d30cda945580d8bc0f6c2fe742b71924": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gawk-4.2.1-1.el8.aarch64.rpm" + }, + "sha256:e2c4ac0f7abf75cbcc7a6fb35412820c267f1a8ce614f41b60d901918c4616d5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/nettle-3.4.1-2.el8.aarch64.rpm" + }, + "sha256:e426534c59b3a35068877d324dd34d643ad7c84d2c406b2e6502ac6c2a367d39": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-5.2.4-3.el8.aarch64.rpm" + }, + "sha256:e4ec1966f9bc7cbc898fe7550600ae3e9e4f8afbcdd3f6e74afe1965247653ba": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/keyutils-libs-1.5.10-6.el8.aarch64.rpm" + }, + "sha256:e55bf252e792f27f076101e94dfbbac97dabeea0f7893a4cb9b111a0b72d187f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libreport-filesystem-2.9.5-11.el8.aarch64.rpm" + }, + "sha256:e5f82f102f51d88aa517bbebd170795a571b7ddc3036574b92b498cc13704d98": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcom_err-1.45.6-1.el8.aarch64.rpm" + }, + "sha256:e82699d15e4e6ff7825629d7c1c8a0f50a5519b6e5328472de91a0deddb9cf3d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gzip-1.9-9.el8.aarch64.rpm" + }, + "sha256:e9487db2fdce1f494ee1582787a1afc1ea4e0429189db8be0ddbb0af2676c4b6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librhsm-0.0.3-3.el8.aarch64.rpm" + }, + "sha256:eaf3c7104d3ebd0cdda3d6ce44f4c79eec0a8ce3ce71cbb0d9dfe716f58a105d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-tools-1.12.8-11.el8.aarch64.rpm" + }, + "sha256:ec40be9e0b2bb03f7b057a7a9342ffbd86129d58828fb310f445bc506261eb0e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.aarch64.rpm" + }, + "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm" + }, + "sha256:ed28e1e31109e27ce1c676914364c9f1dd46b71d00cb4cf13931f0fec6cf6978": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtasn1-4.13-3.el8.aarch64.rpm" + }, + "sha256:f07b1f40ebb1fbe5c24e68a38b5f768a21e2ec2254d4bd8ff61fb0bde72f64ce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.aarch64.rpm" + }, + "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm" + }, + "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm" + }, + "sha256:f35c0da3cff05ded33c0cb4f202dbb52a5caabec8b1897d5057df83c284d62f1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsmartcols-2.32.1-24.el8.aarch64.rpm" + }, + "sha256:f4e63e7eedc0266a575eb6107f41c5f20ca0505a0e80145c21b9741674d5c0b5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libstdc++-8.3.1-5.1.el8.aarch64.rpm" + }, + "sha256:f700797810fb2bdbba5a0b31e10c361360a87bac1a282da109273194a25bf6ef": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-2.2.20-2.el8.aarch64.rpm" + }, + "sha256:f7ccbe0d7b4a61b5a47253f168f8efcdbf41ad0755e678f9edcd2f6a69c93c7d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-5.33-16.el8.aarch64.rpm" + }, + "sha256:f847957437e7f24844930c4a3ff64c5f7877f083553f48eeadca3c5f5e5c728e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pigz-2.4-4.el8.aarch64.rpm" + }, + "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm" + }, + "sha256:f96bc0d82d4c6934659c23a6771515e78bf2252ed24d32c78001260ee6e36c8d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-daemon-1.12.8-11.el8.aarch64.rpm" + }, + "sha256:f99f5edde9ad4574b84264c467420c910b31f78683fbf1b63d106a7e6c9d64a3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-libs-6.1-7.20180224.el8.aarch64.rpm" + }, + "sha256:fa80a7e82e231dc77b3e44edd2cbf5b3d1657e009e59f15bbe8d50a4290b7c82": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmetalink-0.1.3-7.el8.aarch64.rpm" + }, + "sha256:fac29887224d91e8190a569b3ac5be1168034f36c9c234576ea3cefe686e46cd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdnf-0.48.0-2.el8.aarch64.rpm" + }, + "sha256:fb263177eee60c26b7acaa76cb640c3d7ab6928e73c8af80b2111a247bd61ece": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-lib-0.3.14-4.el8.aarch64.rpm" + }, + "sha256:fb56b7a416e12da0782ae8ba7396bc03a2f8844c2efcb5df3f8b9e74eb8b8059": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxml2-2.9.7-8.el8.aarch64.rpm" + }, + "sha256:fc51460213b3bf5b67f08f2695aae8d728f614adbbacb917a0825e4ebfbc3e68": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hardlink-1.3-6.el8.aarch64.rpm" + }, + "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm" + }, + "sha256:fddf61e9024c41073442ccff0c9990fa004e9b183f391c4e3cf3853e5ae6062c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-0.19.8.1-17.el8.aarch64.rpm" + }, + "sha256:fea4eb54fe59451b76fb40b9bd15ff41f0f51bb7371f94b2f5df572ef917d037": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre-8.42-4.el8.aarch64.rpm" + }, + "sha256:ff9fc6467a4c2fd0c22c419a9cdb7a524d1c69d0c87aa09f31728bef9f692f76": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcomps-0.1.11-4.el8.aarch64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:b984d8576520272b1011cc46b03c666cd6abc1bf74b428a8781ca58c6287a007" + }, + { + "checksum": "sha256:d9a4628bd8d3e776f626be4cb5edec305c2ff894d7c5cc7e33e212545721053a" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:518e5412ce19ab733f62c334da8c5545a212c4c971d513eb95590b08a14e3772" + }, + { + "checksum": "sha256:796cac51b2c1092c4faad372717c6ddc37cad9757111a41e531fe0a8d6c0a9ea" + }, + { + "checksum": "sha256:2d84f6765b1645f867527f493b6153470602a80c75f81545bf619aa92127e4da" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:6a6aa18217ae72a0b33e4302da927e6ded92520cbf4d48a5030d4a2f95eeb5d8" + }, + { + "checksum": "sha256:15c33124ac0479d34f1f58d2bd24cc52db7089b4a8681c276a3fd0d6dfe4fc72" + }, + { + "checksum": "sha256:e085cf8bddcf09c908d925688dae077300d2964b40bd060af252d26a963cfe50" + }, + { + "checksum": "sha256:dcda73e0ea7b5d2710528fc6df135d435281d1f4d2be0018bb6f1858e818d599" + }, + { + "checksum": "sha256:b7bc10e9947763df6e6177b3dbbe77c21f55ed60d26c4c28bfe14a98f7e06189" + }, + { + "checksum": "sha256:acd4674b3fbe01d6cf94eb18a81cdb00beb73bf3d4a25a28e234f31498f5c389" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:689577d74311a7327aab6fe412a803d72b790957e863b6b78a8621a040306919" + }, + { + "checksum": "sha256:7d3ddbaae06c7fb8d24449e11b418ee07bdd9e07f7f0af57741d220b97228557" + }, + { + "checksum": "sha256:41cc2d507fdfbba939c00164a563e770d466f992cb64d3c51a79aec20b31d6d1" + }, + { + "checksum": "sha256:dc37d12420a2593c46619e9b67a0115255a0c7334f547871ce08e329bf5d15a2" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:f96bc0d82d4c6934659c23a6771515e78bf2252ed24d32c78001260ee6e36c8d" + }, + { + "checksum": "sha256:bae965c689b08ce42f10366e4b441504432ac353d30edb8b4b2cfc798069434f" + }, + { + "checksum": "sha256:eaf3c7104d3ebd0cdda3d6ce44f4c79eec0a8ce3ce71cbb0d9dfe716f58a105d" + }, + { + "checksum": "sha256:6fbfaa1e1b1bb4e2362cf3dce0f59a94a78b457904234cbccbe6afacde311c26" + }, + { + "checksum": "sha256:057b6632870b8c3c0c950a19092ef2f9749bf3d1a37ccb083bf42ca6404db066" + }, + { + "checksum": "sha256:3a684fd5f1b1d417c6c3e9d1f0d5b846138aa06450ff246425d43d4a20bd619e" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:2efbfbcce7ef24e433d3c304b6b6b022d1b1b8a972969da1adb1c3c85f9625a7" + }, + { + "checksum": "sha256:4d8edaa317fd508226bb5421ef423470f3e9153167222dee7bf8fb2346b7875b" + }, + { + "checksum": "sha256:3256e78263462d5d7ab37b696992aedd6f810431641ce8d1e1bc198c797b402b" + }, + { + "checksum": "sha256:da4d193d5f0caf7a196f3bd4aa1225072b522521d82fca8edecc6546b5460ac6" + }, + { + "checksum": "sha256:c88d1656b8001ff79175f7d3b7818681e40e54e8fec6fb8556ba8141d437fcfa" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:b140eb203fe889d1c75ef3b5527033cfeb7a6f0c813638a607c9f10faf52a34b" + }, + { + "checksum": "sha256:98dd1582b8ab27085379a3a7e598a6e261c62f97a5f3689447cbf1d4af9ae46c" + }, + { + "checksum": "sha256:77b56d825eb31ca191254d17a4c9399e3c4fe8af42a528c2ad4424bfd865b82d" + }, + { + "checksum": "sha256:f7ccbe0d7b4a61b5a47253f168f8efcdbf41ad0755e678f9edcd2f6a69c93c7d" + }, + { + "checksum": "sha256:3ee66f993ee567b2457a221ed364ae4f8dfe783a5f0e723d9169f95d12f9e696" + }, + { + "checksum": "sha256:634a3cbf0b334e901b6887176fa1b98246be7c4010b4c21cb6fd8fa7aa5fdf94" + }, + { + "checksum": "sha256:540fa90864b4eb0176b56e0c5e9d7bc6130985288ae297b4c38950381b08a827" + }, + { + "checksum": "sha256:e08305aecd924631284ddaeae39a83cca85495389d4ddef75410a32af49f946d" + }, + { + "checksum": "sha256:e0faa8a6bc43432619a2b6a26e9f1323d30cda945580d8bc0f6c2fe742b71924" + }, + { + "checksum": "sha256:3f5765cebcac288cc1b5b118acfbc2016eda7b81ad73923f6f9c21e4731eb0d9" + }, + { + "checksum": "sha256:8ef2fcbe5a8d6e7d393d28838ff458336d16e006bc7d19921f460eb105b88570" + }, + { + "checksum": "sha256:fddf61e9024c41073442ccff0c9990fa004e9b183f391c4e3cf3853e5ae6062c" + }, + { + "checksum": "sha256:ce6960fa7831611815e163864a91b70b0ab1ef0f446c2cad1eec13404822cad5" + }, + { + "checksum": "sha256:964b1d9563e42a176c24cf5c91616ee5cc40de3b1c92038d7fb0392113eaf159" + }, + { + "checksum": "sha256:d4424a9c946da1eab876298af8f772d5aab1109a1f551ac2f1cd10ee849568de" + }, + { + "checksum": "sha256:4d8d164f8bd56b7ab6252f009b38525f39fb161c03713414e1583894a265c50a" + }, + { + "checksum": "sha256:91c58481a7e4a9b7f9e0e14844fa73047395c75df95d35afa3b0d8ef3f584491" + }, + { + "checksum": "sha256:19efe6f125c00123ccc6d96e51eb61e711f3ea01f32d18cce14d3b614217c58e" + }, + { + "checksum": "sha256:f700797810fb2bdbba5a0b31e10c361360a87bac1a282da109273194a25bf6ef" + }, + { + "checksum": "sha256:0b4564ad3a799af1a4a0de33b0952f6056d942b0cfa39b73e9375bf0c05b3191" + }, + { + "checksum": "sha256:3bf230c85711b285afb968850d7e98eb6b068a06e7ca40e94203e388d8447f48" + }, + { + "checksum": "sha256:c22f0d40fbdaaceec711be0cecc122fac4570d126914ce3694a3d6a1178bd487" + }, + { + "checksum": "sha256:81d2e21dad970c08798c0df00bbda21acf165a370f9612e0d14ce69e5dd6c5c3" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:2921d3aa14a509d271ca35256903c142c30f088f7dc889a4c4e15b26316ef5c0" + }, + { + "checksum": "sha256:126d980678e5b687c775cf857b4013306f1a761353370258a0f04d92a3553f92" + }, + { + "checksum": "sha256:5eddb5c1febbe6e58491f8e9ee8fc9897298b307e0357c01f49d445cf25283c9" + }, + { + "checksum": "sha256:e82699d15e4e6ff7825629d7c1c8a0f50a5519b6e5328472de91a0deddb9cf3d" + }, + { + "checksum": "sha256:fc51460213b3bf5b67f08f2695aae8d728f614adbbacb917a0825e4ebfbc3e68" + }, + { + "checksum": "sha256:cf8fdbfcd359aac8bf55500c24e6843baafe8fef35019126c3616806b41415b3" + }, + { + "checksum": "sha256:3f7e5e72ab9e18dbca936b40734c91520242a49a9e98a2f2589f397faa6ad8e8" + }, + { + "checksum": "sha256:0fd7dd5b060e7533144ad7a3cae2453ad6f87650010f328879b10c7c4cba0c04" + }, + { + "checksum": "sha256:36aece7b7a65785985bf0b98701514f12735a87517b8578a3eb3710f82ba4765" + }, + { + "checksum": "sha256:1143ac623a74d7feaaaf293c18d942d243248f6356628f87216670c10d11687b" + }, + { + "checksum": "sha256:10ac3bf7565725a55b0aef56f65befd0d320219fc83adfab6e564c19f8c44bd6" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:e4ec1966f9bc7cbc898fe7550600ae3e9e4f8afbcdd3f6e74afe1965247653ba" + }, + { + "checksum": "sha256:1091a799d34a42d2e42ac462b4f979a55d17513eca5a00bad9bdba56cca83357" + }, + { + "checksum": "sha256:6f87f305a3e0e0faf69c2a9d4f277958ca33e85b72c6e4f77a365a5f60ced3d3" + }, + { + "checksum": "sha256:4a27cd4496ebdba821b3c7692eeb0c0fff28c6af69fe4fe9e4bf52511639bd6a" + }, + { + "checksum": "sha256:ca87249f90bac96902d18c11a1f8c80566fa090c6473226bdd147e07e3ed21ec" + }, + { + "checksum": "sha256:7c014b54f7929348f614f8f4eb7a1552b8565c0a57f3a75ff6471dc05f30cafe" + }, + { + "checksum": "sha256:98f838a9775269a0f796151bd54d52c7ac91d4bf1365186772f243bfafbb136a" + }, + { + "checksum": "sha256:dfdec57ff520511d1d4ef9d913d90fc8d6ac98685cbc12fb568c8980f2a73f1a" + }, + { + "checksum": "sha256:0f1a02850c102e2a186787504f965c0c10d6432b9f600c18bc2f520e55f04a8c" + }, + { + "checksum": "sha256:6f2bfbe0f23d3b233aacb72c153ee133839353325f028321eb5ea38b0dc06c02" + }, + { + "checksum": "sha256:d173b35182f28b9dd48e4a942f2a20c659bee2f9ac234b60cf8b995aa2421382" + }, + { + "checksum": "sha256:2cddadff38ccef2364a7e40af0e1d9b3bf9c06869c15ceeb655f3cfa431c2083" + }, + { + "checksum": "sha256:62a2878605ca0415fd60adcff4c7068d855d20737498a968fabc646610ccbe5c" + }, + { + "checksum": "sha256:e5f82f102f51d88aa517bbebd170795a571b7ddc3036574b92b498cc13704d98" + }, + { + "checksum": "sha256:ff9fc6467a4c2fd0c22c419a9cdb7a524d1c69d0c87aa09f31728bef9f692f76" + }, + { + "checksum": "sha256:86ae7501bdf0149728879f488dd4c86907216cb5b021192347a5c10a55382931" + }, + { + "checksum": "sha256:2809ad51c6eb6c9a54d64cccc2cd948f6fd4207f32b4493b3f4a9bd0886c894b" + }, + { + "checksum": "sha256:84e7102978d76d80aa40c43efcc71c1e54e819195132df921a8c13cec54328da" + }, + { + "checksum": "sha256:621e96e91103f2f701e4ac3b8b8b6ef9aab4db5ab8fb3e141eb02e3f328aed79" + }, + { + "checksum": "sha256:fac29887224d91e8190a569b3ac5be1168034f36c9c234576ea3cefe686e46cd" + }, + { + "checksum": "sha256:058822931f4c34c18675116c1b02b718de4044c1019acb0d5f97417f00a30ba7" + }, + { + "checksum": "sha256:d6aa17908468b5e2095526664fce6627dec7a02c26625339c14b9278cc39d4a6" + }, + { + "checksum": "sha256:4a40a1538c8a488f32476f96d2461c3b792eb0cf5acb998e397d8a9cef8e5461" + }, + { + "checksum": "sha256:3b607f0dbedecb25239e22c1f553c8d70db9d2206a877fa07567fa1a49e233d7" + }, + { + "checksum": "sha256:8498846918c7bc7a20553340434cfbfb0d19185adcd0ff52866c6506ab8f747d" + }, + { + "checksum": "sha256:53fa2fd6a138d00c697b827a77bcc25ec498b1d49bb04ef80594e81ccabc165d" + }, + { + "checksum": "sha256:5a05f1126ed38f752af247dcdf7c958e738b935b8b6d942fd42f423768f05255" + }, + { + "checksum": "sha256:2dc8e2f52451d1a11b16bbb389a24c58b61a1ba804ee777f9d06dbe4e1fcf6e5" + }, + { + "checksum": "sha256:83301ca502322e0634173460bf8fa35572c36ab8cc2e6e600bf9980f845fc857" + }, + { + "checksum": "sha256:f07b1f40ebb1fbe5c24e68a38b5f768a21e2ec2254d4bd8ff61fb0bde72f64ce" + }, + { + "checksum": "sha256:704e1dc996a17815c6dcf7029c0ddb2849d40feaab6e9b9c687af9d95fef825c" + }, + { + "checksum": "sha256:fa80a7e82e231dc77b3e44edd2cbf5b3d1657e009e59f15bbe8d50a4290b7c82" + }, + { + "checksum": "sha256:ba1364539f16d7c8379d7563fd0634651fa8a05b3f7098a21ba96e1f5641f132" + }, + { + "checksum": "sha256:26b14d8f226962ce712bbccfb245843759e835a24a139eacae86d680043a85a7" + }, + { + "checksum": "sha256:4874e739ed37bc6a5bfdb6069d4620e5f7efe01d60eb9fd2550c550167c99990" + }, + { + "checksum": "sha256:471663fca7e3f609834368d69d8f1f469cfc0d3f3e95dc2b79381722d0368edc" + }, + { + "checksum": "sha256:435a2be84a2b38372965dbd60ffed0ed38a616b8100859787a8bb3b19d9fc4d9" + }, + { + "checksum": "sha256:6557d001315e85ac123b1378c5aafb81428e2383debcacf3f91c55476cfc48eb" + }, + { + "checksum": "sha256:d6ab7c8790cd6c9a137d908d840c51c547e950d25f6ab8af3c9ad3899ff6c044" + }, + { + "checksum": "sha256:2d74e0ab14393921c6160fda8dd533b58c0348acdf5ee5c306ffc64221700de2" + }, + { + "checksum": "sha256:e55bf252e792f27f076101e94dfbbac97dabeea0f7893a4cb9b111a0b72d187f" + }, + { + "checksum": "sha256:e9487db2fdce1f494ee1582787a1afc1ea4e0429189db8be0ddbb0af2676c4b6" + }, + { + "checksum": "sha256:cc7e751a62f9a28b82df0bce0ecfb050364b8688ef69473f1910909e44c5eb98" + }, + { + "checksum": "sha256:c1b5c4668331e8b05a08e7de432cbfb75f8072401bb6651a24e43f64eff8dcc4" + }, + { + "checksum": "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc" + }, + { + "checksum": "sha256:c82ca1c0ef4b89f75e8e7edbbae4f3eeb2720a4abd56b0927928cff2d9721186" + }, + { + "checksum": "sha256:140146ebcbadd9b0f2aa5c2fcde5c93888f2d84ce61a2a4cf148ef435d1ba410" + }, + { + "checksum": "sha256:c8a28b4587888435c51f6d1ce42f48b08fb0256e4029ea569e9a02adcb82c85a" + }, + { + "checksum": "sha256:bf267d9571cf568375e261d593236750f400ac536c1c818513106482ebc3fb10" + }, + { + "checksum": "sha256:f35c0da3cff05ded33c0cb4f202dbb52a5caabec8b1897d5057df83c284d62f1" + }, + { + "checksum": "sha256:2397506a63455e543b201938f605e687de5590d9a06282824e2f6bfdf5e0f149" + }, + { + "checksum": "sha256:268d9232f0853037100432e9363c659cf99927e03f759fd4884643b560710cd6" + }, + { + "checksum": "sha256:3ee6a4f61935c2f0698ad2c4834a5864920a1e48d55c7800da7c382249895e39" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:f4e63e7eedc0266a575eb6107f41c5f20ca0505a0e80145c21b9741674d5c0b5" + }, + { + "checksum": "sha256:ed28e1e31109e27ce1c676914364c9f1dd46b71d00cb4cf13931f0fec6cf6978" + }, + { + "checksum": "sha256:481bbd6d73415d437a73eee7977ec370299acdac44b215a026652debba31783d" + }, + { + "checksum": "sha256:da4b9bfad26d559485ade669556512acfe93ba23d204f2556bac82c09401b4e7" + }, + { + "checksum": "sha256:01e486a3be67325e9692e909f5c6534137ee6a6df185ba2c09d4d50fe6c738f6" + }, + { + "checksum": "sha256:ad07261ff4f478be9511f7ee749bfbe8b2ba8e28696c2f561caa20e35c535134" + }, + { + "checksum": "sha256:95de1777f7e8a734445c5d45e0b77da8b6c41a9b504582ed266d852c677a936b" + }, + { + "checksum": "sha256:532d46a4c0e68bd45eabc3e2ba6d570880344044e1034f5f347b37c470d0dced" + }, + { + "checksum": "sha256:876ffb285aaeddb2c18ae32527bd4ee202710bd8e18d5b410af22937646dcdec" + }, + { + "checksum": "sha256:fb56b7a416e12da0782ae8ba7396bc03a2f8844c2efcb5df3f8b9e74eb8b8059" + }, + { + "checksum": "sha256:7864fbc866ae5a3e59b4f0f114b77ff52b55e76c5388a917f82a6097f02a4db7" + }, + { + "checksum": "sha256:19d1de27d2f62b4a55735233807f70a1e8ff7551fed97ee8650dbd09c1ef50ea" + }, + { + "checksum": "sha256:bc0f9bd34ac6a01dd7272b87e1b7a33045ff8c6793cac02fa639dfc9341e8215" + }, + { + "checksum": "sha256:64ac5cb6fd3da1610812795ce17e09648d89c87513d6284b852a3455b0831d3a" + }, + { + "checksum": "sha256:320ced09e242f09047f4fab0a7f66aba6de2e42583f6a2e164eadcc1ffd0b915" + }, + { + "checksum": "sha256:8ac1003d722e3d5f383c9b970bf6dfbc905007a624abadb63e520d7a93993747" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:f99f5edde9ad4574b84264c467420c910b31f78683fbf1b63d106a7e6c9d64a3" + }, + { + "checksum": "sha256:e2c4ac0f7abf75cbcc7a6fb35412820c267f1a8ce614f41b60d901918c4616d5" + }, + { + "checksum": "sha256:daf36ee86ec6001770ae68bdd82409526faf4b9b1313a6b74fb54cfb98ff571e" + }, + { + "checksum": "sha256:cfa188d39884fd4ba36d27e8fb25aed9dbd26efccffbfd01a24c2c580fdb96f1" + }, + { + "checksum": "sha256:3ef63ecbebf844bcf682c9482dc0ddd158c955b0f066b62eb9575bb9a9642db5" + }, + { + "checksum": "sha256:448d3ff44e7f32f3b33e891180e248dc1bcd4d410f68015a8b0c30dc7c385aca" + }, + { + "checksum": "sha256:290c83afcd2b0a2b17aab95cf72a85da5f8b9f9a9862857c919a0f43e3fce70e" + }, + { + "checksum": "sha256:43ab42c8a58267936a89da99e37d3b9fc56489e958060f600ba047445ca44ee3" + }, + { + "checksum": "sha256:651f38873d3356ec4efb27d04658541080d11cf1ece6335a07db1ca089fa7da3" + }, + { + "checksum": "sha256:ec40be9e0b2bb03f7b057a7a9342ffbd86129d58828fb310f445bc506261eb0e" + }, + { + "checksum": "sha256:04c031a07bde4360484a0180e832036d3ac45a95c4839e54d7a02423df5485ef" + }, + { + "checksum": "sha256:fea4eb54fe59451b76fb40b9bd15ff41f0f51bb7371f94b2f5df572ef917d037" + }, + { + "checksum": "sha256:ce8c92fa2bef1770f44992db24e1cb8cc850feab03a74cf0ebf741ecb0d160ea" + }, + { + "checksum": "sha256:f847957437e7f24844930c4a3ff64c5f7877f083553f48eeadca3c5f5e5c728e" + }, + { + "checksum": "sha256:68593fad4413255772bd08ed7f8b578332f0f53e002c8c7473d90c966a87131b" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:b90ce065d5ea98845733ff06e47d385937f6293ebddf52144c80f5fe1f296307" + }, + { + "checksum": "sha256:4e4923f05d0032263d570075b9b832b9fc3550cd8f82f9a6b0b9b25061726110" + }, + { + "checksum": "sha256:d890d028f59e2553730fad3dbea0e1a245c92c24836513fa2281194b1c90b53a" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:90405803c0159cdf0f74a26b6ce064cfd9973e59232b2923ed171a38fc5684a6" + }, + { + "checksum": "sha256:4909edde46b5b2b58d228bacafa3bab5bc5847559d591d59ecd59cdf50d36db4" + }, + { + "checksum": "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63" + }, + { + "checksum": "sha256:9b6fcdd19caee5fe77b9ed17adb3f11769a7109ebcf52d3cb3358d5a9eecc391" + }, + { + "checksum": "sha256:65b8d755ff01dfefa423d2f0bd6fd54cfc4c580da63510e19cf178abb6e26172" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:b5b1f5f7a02f70db056861813ddcf181f2ebba507cd368fbe2c32f262edf7fc6" + }, + { + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e" + }, + { + "checksum": "sha256:a6292dd846bc471b22409fc95a5e09c88bcb6176251dc5cc11f4b14a73ddda11" + }, + { + "checksum": "sha256:784d385116891056b618722c933d43c5b395b92fa82e5bc797081317ec6a82ba" + }, + { + "checksum": "sha256:47b483c0f556c56f0b1f468603c57834864902ae5a849a18c8a0ca5f76d66c86" + }, + { + "checksum": "sha256:c633b98b4dbf96674a69573404819c34d66eb7e19820283fc588f6b10b0e3fc8" + }, + { + "checksum": "sha256:d3fb5a473c44cd8ae6b94d6bf3fc552553d8f4ef28eed439658ea38990ab9db5" + }, + { + "checksum": "sha256:0a885c6dc6abd969b828bf2fd7063ee884e6d058eaf405b02f3dd6efb6c66bac" + }, + { + "checksum": "sha256:0bb7024125ca67119612e55a92da13c989e0306ddd7de7e655a679c963939ef7" + }, + { + "checksum": "sha256:125c92f23d87b905c21e9f7669f0ec6e41428ab63c8c13f63db8980f292797d5" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:a840b8193ce9b1b72e3783b9a9bb2ec91947ba3b6f7ac973ae8e0e20a7059117" + }, + { + "checksum": "sha256:19cd894b4154d1a8521c6884cfd2a6eaf1f498b7dec5cc31408f8535b9098f2a" + }, + { + "checksum": "sha256:207e6396488c1db18fb7b1f2b9952f48c2625f042c5f6a901d41974ce376b0e0" + }, + { + "checksum": "sha256:d4467ba499fe1ddd82746ad00d7e86bea59c4827fe1ff8c05132bad1f93ddb7f" + }, + { + "checksum": "sha256:800c9a0d718c641ceee26c8f625b2dcd79a33963e9e7a11930678dc99582a2d0" + }, + { + "checksum": "sha256:986683a0edb615a5d45a9c1b0ee3d27f8032c2667cad58d24526085e41010992" + }, + { + "checksum": "sha256:3fe7c10c144c8fffc00d144317a2bf8029bd9d048432bccfc352dfc6f0995680" + }, + { + "checksum": "sha256:ba66a87402ccc8515e164f597f5d254ad9513979fe3ca1ffabf63c915c0daa73" + }, + { + "checksum": "sha256:d695df94220c2ef990e502123b3bd8ede8fcfb4f738346dd98d999559b01b6b3" + }, + { + "checksum": "sha256:fb263177eee60c26b7acaa76cb640c3d7ab6928e73c8af80b2111a247bd61ece" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:83e470505f558f8cf8414a7fc8fb0d1bc4b16ed15d05ccf7e46332b04d1a0d85" + }, + { + "checksum": "sha256:0f32d23a6b2b15603d710b0317238ef8dde3de61eda96713e21d86c9fc7a98ed" + }, + { + "checksum": "sha256:760d9056891a60c200984f0655aee1876b3bf890f7486306c05db8e295ae7843" + }, + { + "checksum": "sha256:e426534c59b3a35068877d324dd34d643ad7c84d2c406b2e6502ac6c2a367d39" + }, + { + "checksum": "sha256:094eff70081085f87a7ac0dedafa851ad8ac8e03f9f328636df4a0f8301d0e87" + }, + { + "checksum": "sha256:cf9a0bbaa7bd075d2af532586ee93ab92b96d9859f53a57f85cd7e0309f8fff6" + }, + { + "checksum": "sha256:a07f96031fbe9507a8d6bb0e14cf0783bc615552e4cfb75131672072f5729de8" + }, + { + "checksum": "sha256:aa1a6a85493590efb9c0235c15d6a05e8b119f385dc13b3e3abd2315f8c4a6e0" + }, + { + "checksum": "sha256:22c0e44318e36e04ad1eb4632dcf25db991f481f9a543387d372e1f2ad92561f" + }, + { + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "checksum": "sha256:6ae316dfb9723d13a8d36d98d109d4a55017b568ee2070279f1bdccdc699862a" + }, + { + "checksum": "sha256:5996ff948b5874f894c5ce3495652e6de552addf2331fd82193023d77994ef8f" + }, + { + "checksum": "sha256:d20f4bf44fcc90509e7afca364eae0a55c8f33df2f8a69e266f5fcd4b5fa2e4b" + }, + { + "checksum": "sha256:727c08fe072ef85837e8db30574aec712cdf67a062eead3e5481ba08425b2395" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ] + }, + "runner": "org.osbuild.rhel82" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:b984d8576520272b1011cc46b03c666cd6abc1bf74b428a8781ca58c6287a007" + }, + { + "checksum": "sha256:d9a4628bd8d3e776f626be4cb5edec305c2ff894d7c5cc7e33e212545721053a" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:518e5412ce19ab733f62c334da8c5545a212c4c971d513eb95590b08a14e3772" + }, + { + "checksum": "sha256:796cac51b2c1092c4faad372717c6ddc37cad9757111a41e531fe0a8d6c0a9ea" + }, + { + "checksum": "sha256:2d84f6765b1645f867527f493b6153470602a80c75f81545bf619aa92127e4da" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:6a6aa18217ae72a0b33e4302da927e6ded92520cbf4d48a5030d4a2f95eeb5d8" + }, + { + "checksum": "sha256:15c33124ac0479d34f1f58d2bd24cc52db7089b4a8681c276a3fd0d6dfe4fc72" + }, + { + "checksum": "sha256:e085cf8bddcf09c908d925688dae077300d2964b40bd060af252d26a963cfe50" + }, + { + "checksum": "sha256:dcda73e0ea7b5d2710528fc6df135d435281d1f4d2be0018bb6f1858e818d599" + }, + { + "checksum": "sha256:b7bc10e9947763df6e6177b3dbbe77c21f55ed60d26c4c28bfe14a98f7e06189" + }, + { + "checksum": "sha256:acd4674b3fbe01d6cf94eb18a81cdb00beb73bf3d4a25a28e234f31498f5c389" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:689577d74311a7327aab6fe412a803d72b790957e863b6b78a8621a040306919" + }, + { + "checksum": "sha256:7d3ddbaae06c7fb8d24449e11b418ee07bdd9e07f7f0af57741d220b97228557" + }, + { + "checksum": "sha256:41cc2d507fdfbba939c00164a563e770d466f992cb64d3c51a79aec20b31d6d1" + }, + { + "checksum": "sha256:dc37d12420a2593c46619e9b67a0115255a0c7334f547871ce08e329bf5d15a2" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:f96bc0d82d4c6934659c23a6771515e78bf2252ed24d32c78001260ee6e36c8d" + }, + { + "checksum": "sha256:bae965c689b08ce42f10366e4b441504432ac353d30edb8b4b2cfc798069434f" + }, + { + "checksum": "sha256:eaf3c7104d3ebd0cdda3d6ce44f4c79eec0a8ce3ce71cbb0d9dfe716f58a105d" + }, + { + "checksum": "sha256:6fbfaa1e1b1bb4e2362cf3dce0f59a94a78b457904234cbccbe6afacde311c26" + }, + { + "checksum": "sha256:057b6632870b8c3c0c950a19092ef2f9749bf3d1a37ccb083bf42ca6404db066" + }, + { + "checksum": "sha256:3a684fd5f1b1d417c6c3e9d1f0d5b846138aa06450ff246425d43d4a20bd619e" + }, + { + "checksum": "sha256:4d8edaa317fd508226bb5421ef423470f3e9153167222dee7bf8fb2346b7875b" + }, + { + "checksum": "sha256:c88d1656b8001ff79175f7d3b7818681e40e54e8fec6fb8556ba8141d437fcfa" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:b140eb203fe889d1c75ef3b5527033cfeb7a6f0c813638a607c9f10faf52a34b" + }, + { + "checksum": "sha256:98dd1582b8ab27085379a3a7e598a6e261c62f97a5f3689447cbf1d4af9ae46c" + }, + { + "checksum": "sha256:77b56d825eb31ca191254d17a4c9399e3c4fe8af42a528c2ad4424bfd865b82d" + }, + { + "checksum": "sha256:f7ccbe0d7b4a61b5a47253f168f8efcdbf41ad0755e678f9edcd2f6a69c93c7d" + }, + { + "checksum": "sha256:3ee66f993ee567b2457a221ed364ae4f8dfe783a5f0e723d9169f95d12f9e696" + }, + { + "checksum": "sha256:634a3cbf0b334e901b6887176fa1b98246be7c4010b4c21cb6fd8fa7aa5fdf94" + }, + { + "checksum": "sha256:540fa90864b4eb0176b56e0c5e9d7bc6130985288ae297b4c38950381b08a827" + }, + { + "checksum": "sha256:e0faa8a6bc43432619a2b6a26e9f1323d30cda945580d8bc0f6c2fe742b71924" + }, + { + "checksum": "sha256:3f5765cebcac288cc1b5b118acfbc2016eda7b81ad73923f6f9c21e4731eb0d9" + }, + { + "checksum": "sha256:8ef2fcbe5a8d6e7d393d28838ff458336d16e006bc7d19921f460eb105b88570" + }, + { + "checksum": "sha256:fddf61e9024c41073442ccff0c9990fa004e9b183f391c4e3cf3853e5ae6062c" + }, + { + "checksum": "sha256:ce6960fa7831611815e163864a91b70b0ab1ef0f446c2cad1eec13404822cad5" + }, + { + "checksum": "sha256:964b1d9563e42a176c24cf5c91616ee5cc40de3b1c92038d7fb0392113eaf159" + }, + { + "checksum": "sha256:d4424a9c946da1eab876298af8f772d5aab1109a1f551ac2f1cd10ee849568de" + }, + { + "checksum": "sha256:4d8d164f8bd56b7ab6252f009b38525f39fb161c03713414e1583894a265c50a" + }, + { + "checksum": "sha256:91c58481a7e4a9b7f9e0e14844fa73047395c75df95d35afa3b0d8ef3f584491" + }, + { + "checksum": "sha256:19efe6f125c00123ccc6d96e51eb61e711f3ea01f32d18cce14d3b614217c58e" + }, + { + "checksum": "sha256:3bf230c85711b285afb968850d7e98eb6b068a06e7ca40e94203e388d8447f48" + }, + { + "checksum": "sha256:81d2e21dad970c08798c0df00bbda21acf165a370f9612e0d14ce69e5dd6c5c3" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:2921d3aa14a509d271ca35256903c142c30f088f7dc889a4c4e15b26316ef5c0" + }, + { + "checksum": "sha256:126d980678e5b687c775cf857b4013306f1a761353370258a0f04d92a3553f92" + }, + { + "checksum": "sha256:5eddb5c1febbe6e58491f8e9ee8fc9897298b307e0357c01f49d445cf25283c9" + }, + { + "checksum": "sha256:e82699d15e4e6ff7825629d7c1c8a0f50a5519b6e5328472de91a0deddb9cf3d" + }, + { + "checksum": "sha256:fc51460213b3bf5b67f08f2695aae8d728f614adbbacb917a0825e4ebfbc3e68" + }, + { + "checksum": "sha256:3f7e5e72ab9e18dbca936b40734c91520242a49a9e98a2f2589f397faa6ad8e8" + }, + { + "checksum": "sha256:0fd7dd5b060e7533144ad7a3cae2453ad6f87650010f328879b10c7c4cba0c04" + }, + { + "checksum": "sha256:36aece7b7a65785985bf0b98701514f12735a87517b8578a3eb3710f82ba4765" + }, + { + "checksum": "sha256:10ac3bf7565725a55b0aef56f65befd0d320219fc83adfab6e564c19f8c44bd6" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:e4ec1966f9bc7cbc898fe7550600ae3e9e4f8afbcdd3f6e74afe1965247653ba" + }, + { + "checksum": "sha256:1091a799d34a42d2e42ac462b4f979a55d17513eca5a00bad9bdba56cca83357" + }, + { + "checksum": "sha256:6f87f305a3e0e0faf69c2a9d4f277958ca33e85b72c6e4f77a365a5f60ced3d3" + }, + { + "checksum": "sha256:4a27cd4496ebdba821b3c7692eeb0c0fff28c6af69fe4fe9e4bf52511639bd6a" + }, + { + "checksum": "sha256:ca87249f90bac96902d18c11a1f8c80566fa090c6473226bdd147e07e3ed21ec" + }, + { + "checksum": "sha256:7c014b54f7929348f614f8f4eb7a1552b8565c0a57f3a75ff6471dc05f30cafe" + }, + { + "checksum": "sha256:dfdec57ff520511d1d4ef9d913d90fc8d6ac98685cbc12fb568c8980f2a73f1a" + }, + { + "checksum": "sha256:6f2bfbe0f23d3b233aacb72c153ee133839353325f028321eb5ea38b0dc06c02" + }, + { + "checksum": "sha256:d173b35182f28b9dd48e4a942f2a20c659bee2f9ac234b60cf8b995aa2421382" + }, + { + "checksum": "sha256:2cddadff38ccef2364a7e40af0e1d9b3bf9c06869c15ceeb655f3cfa431c2083" + }, + { + "checksum": "sha256:62a2878605ca0415fd60adcff4c7068d855d20737498a968fabc646610ccbe5c" + }, + { + "checksum": "sha256:e5f82f102f51d88aa517bbebd170795a571b7ddc3036574b92b498cc13704d98" + }, + { + "checksum": "sha256:86ae7501bdf0149728879f488dd4c86907216cb5b021192347a5c10a55382931" + }, + { + "checksum": "sha256:2809ad51c6eb6c9a54d64cccc2cd948f6fd4207f32b4493b3f4a9bd0886c894b" + }, + { + "checksum": "sha256:84e7102978d76d80aa40c43efcc71c1e54e819195132df921a8c13cec54328da" + }, + { + "checksum": "sha256:621e96e91103f2f701e4ac3b8b8b6ef9aab4db5ab8fb3e141eb02e3f328aed79" + }, + { + "checksum": "sha256:d6aa17908468b5e2095526664fce6627dec7a02c26625339c14b9278cc39d4a6" + }, + { + "checksum": "sha256:4a40a1538c8a488f32476f96d2461c3b792eb0cf5acb998e397d8a9cef8e5461" + }, + { + "checksum": "sha256:3b607f0dbedecb25239e22c1f553c8d70db9d2206a877fa07567fa1a49e233d7" + }, + { + "checksum": "sha256:8498846918c7bc7a20553340434cfbfb0d19185adcd0ff52866c6506ab8f747d" + }, + { + "checksum": "sha256:53fa2fd6a138d00c697b827a77bcc25ec498b1d49bb04ef80594e81ccabc165d" + }, + { + "checksum": "sha256:5a05f1126ed38f752af247dcdf7c958e738b935b8b6d942fd42f423768f05255" + }, + { + "checksum": "sha256:2dc8e2f52451d1a11b16bbb389a24c58b61a1ba804ee777f9d06dbe4e1fcf6e5" + }, + { + "checksum": "sha256:83301ca502322e0634173460bf8fa35572c36ab8cc2e6e600bf9980f845fc857" + }, + { + "checksum": "sha256:f07b1f40ebb1fbe5c24e68a38b5f768a21e2ec2254d4bd8ff61fb0bde72f64ce" + }, + { + "checksum": "sha256:fa80a7e82e231dc77b3e44edd2cbf5b3d1657e009e59f15bbe8d50a4290b7c82" + }, + { + "checksum": "sha256:26b14d8f226962ce712bbccfb245843759e835a24a139eacae86d680043a85a7" + }, + { + "checksum": "sha256:4874e739ed37bc6a5bfdb6069d4620e5f7efe01d60eb9fd2550c550167c99990" + }, + { + "checksum": "sha256:471663fca7e3f609834368d69d8f1f469cfc0d3f3e95dc2b79381722d0368edc" + }, + { + "checksum": "sha256:435a2be84a2b38372965dbd60ffed0ed38a616b8100859787a8bb3b19d9fc4d9" + }, + { + "checksum": "sha256:6557d001315e85ac123b1378c5aafb81428e2383debcacf3f91c55476cfc48eb" + }, + { + "checksum": "sha256:d6ab7c8790cd6c9a137d908d840c51c547e950d25f6ab8af3c9ad3899ff6c044" + }, + { + "checksum": "sha256:cc7e751a62f9a28b82df0bce0ecfb050364b8688ef69473f1910909e44c5eb98" + }, + { + "checksum": "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc" + }, + { + "checksum": "sha256:c82ca1c0ef4b89f75e8e7edbbae4f3eeb2720a4abd56b0927928cff2d9721186" + }, + { + "checksum": "sha256:140146ebcbadd9b0f2aa5c2fcde5c93888f2d84ce61a2a4cf148ef435d1ba410" + }, + { + "checksum": "sha256:c8a28b4587888435c51f6d1ce42f48b08fb0256e4029ea569e9a02adcb82c85a" + }, + { + "checksum": "sha256:bf267d9571cf568375e261d593236750f400ac536c1c818513106482ebc3fb10" + }, + { + "checksum": "sha256:f35c0da3cff05ded33c0cb4f202dbb52a5caabec8b1897d5057df83c284d62f1" + }, + { + "checksum": "sha256:3ee6a4f61935c2f0698ad2c4834a5864920a1e48d55c7800da7c382249895e39" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:f4e63e7eedc0266a575eb6107f41c5f20ca0505a0e80145c21b9741674d5c0b5" + }, + { + "checksum": "sha256:ed28e1e31109e27ce1c676914364c9f1dd46b71d00cb4cf13931f0fec6cf6978" + }, + { + "checksum": "sha256:481bbd6d73415d437a73eee7977ec370299acdac44b215a026652debba31783d" + }, + { + "checksum": "sha256:da4b9bfad26d559485ade669556512acfe93ba23d204f2556bac82c09401b4e7" + }, + { + "checksum": "sha256:ad07261ff4f478be9511f7ee749bfbe8b2ba8e28696c2f561caa20e35c535134" + }, + { + "checksum": "sha256:95de1777f7e8a734445c5d45e0b77da8b6c41a9b504582ed266d852c677a936b" + }, + { + "checksum": "sha256:532d46a4c0e68bd45eabc3e2ba6d570880344044e1034f5f347b37c470d0dced" + }, + { + "checksum": "sha256:876ffb285aaeddb2c18ae32527bd4ee202710bd8e18d5b410af22937646dcdec" + }, + { + "checksum": "sha256:fb56b7a416e12da0782ae8ba7396bc03a2f8844c2efcb5df3f8b9e74eb8b8059" + }, + { + "checksum": "sha256:19d1de27d2f62b4a55735233807f70a1e8ff7551fed97ee8650dbd09c1ef50ea" + }, + { + "checksum": "sha256:bc0f9bd34ac6a01dd7272b87e1b7a33045ff8c6793cac02fa639dfc9341e8215" + }, + { + "checksum": "sha256:64ac5cb6fd3da1610812795ce17e09648d89c87513d6284b852a3455b0831d3a" + }, + { + "checksum": "sha256:320ced09e242f09047f4fab0a7f66aba6de2e42583f6a2e164eadcc1ffd0b915" + }, + { + "checksum": "sha256:8ac1003d722e3d5f383c9b970bf6dfbc905007a624abadb63e520d7a93993747" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:f99f5edde9ad4574b84264c467420c910b31f78683fbf1b63d106a7e6c9d64a3" + }, + { + "checksum": "sha256:e2c4ac0f7abf75cbcc7a6fb35412820c267f1a8ce614f41b60d901918c4616d5" + }, + { + "checksum": "sha256:cfa188d39884fd4ba36d27e8fb25aed9dbd26efccffbfd01a24c2c580fdb96f1" + }, + { + "checksum": "sha256:af98260ff2c263c9cefcb96d16d200941c1873cda9868b57df51b034066940fe" + }, + { + "checksum": "sha256:b35f92dddd2cd73f7f8d8595ebb197a1c67a214ec2acf960ac673a014f2d9b90" + }, + { + "checksum": "sha256:3ef63ecbebf844bcf682c9482dc0ddd158c955b0f066b62eb9575bb9a9642db5" + }, + { + "checksum": "sha256:448d3ff44e7f32f3b33e891180e248dc1bcd4d410f68015a8b0c30dc7c385aca" + }, + { + "checksum": "sha256:290c83afcd2b0a2b17aab95cf72a85da5f8b9f9a9862857c919a0f43e3fce70e" + }, + { + "checksum": "sha256:43ab42c8a58267936a89da99e37d3b9fc56489e958060f600ba047445ca44ee3" + }, + { + "checksum": "sha256:651f38873d3356ec4efb27d04658541080d11cf1ece6335a07db1ca089fa7da3" + }, + { + "checksum": "sha256:ec40be9e0b2bb03f7b057a7a9342ffbd86129d58828fb310f445bc506261eb0e" + }, + { + "checksum": "sha256:04c031a07bde4360484a0180e832036d3ac45a95c4839e54d7a02423df5485ef" + }, + { + "checksum": "sha256:fea4eb54fe59451b76fb40b9bd15ff41f0f51bb7371f94b2f5df572ef917d037" + }, + { + "checksum": "sha256:ce8c92fa2bef1770f44992db24e1cb8cc850feab03a74cf0ebf741ecb0d160ea" + }, + { + "checksum": "sha256:f847957437e7f24844930c4a3ff64c5f7877f083553f48eeadca3c5f5e5c728e" + }, + { + "checksum": "sha256:68593fad4413255772bd08ed7f8b578332f0f53e002c8c7473d90c966a87131b" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:b90ce065d5ea98845733ff06e47d385937f6293ebddf52144c80f5fe1f296307" + }, + { + "checksum": "sha256:4e4923f05d0032263d570075b9b832b9fc3550cd8f82f9a6b0b9b25061726110" + }, + { + "checksum": "sha256:d890d028f59e2553730fad3dbea0e1a245c92c24836513fa2281194b1c90b53a" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:65b8d755ff01dfefa423d2f0bd6fd54cfc4c580da63510e19cf178abb6e26172" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e" + }, + { + "checksum": "sha256:a6292dd846bc471b22409fc95a5e09c88bcb6176251dc5cc11f4b14a73ddda11" + }, + { + "checksum": "sha256:784d385116891056b618722c933d43c5b395b92fa82e5bc797081317ec6a82ba" + }, + { + "checksum": "sha256:47b483c0f556c56f0b1f468603c57834864902ae5a849a18c8a0ca5f76d66c86" + }, + { + "checksum": "sha256:d3fb5a473c44cd8ae6b94d6bf3fc552553d8f4ef28eed439658ea38990ab9db5" + }, + { + "checksum": "sha256:0a885c6dc6abd969b828bf2fd7063ee884e6d058eaf405b02f3dd6efb6c66bac" + }, + { + "checksum": "sha256:125c92f23d87b905c21e9f7669f0ec6e41428ab63c8c13f63db8980f292797d5" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:a840b8193ce9b1b72e3783b9a9bb2ec91947ba3b6f7ac973ae8e0e20a7059117" + }, + { + "checksum": "sha256:19cd894b4154d1a8521c6884cfd2a6eaf1f498b7dec5cc31408f8535b9098f2a" + }, + { + "checksum": "sha256:207e6396488c1db18fb7b1f2b9952f48c2625f042c5f6a901d41974ce376b0e0" + }, + { + "checksum": "sha256:d4467ba499fe1ddd82746ad00d7e86bea59c4827fe1ff8c05132bad1f93ddb7f" + }, + { + "checksum": "sha256:800c9a0d718c641ceee26c8f625b2dcd79a33963e9e7a11930678dc99582a2d0" + }, + { + "checksum": "sha256:986683a0edb615a5d45a9c1b0ee3d27f8032c2667cad58d24526085e41010992" + }, + { + "checksum": "sha256:3fe7c10c144c8fffc00d144317a2bf8029bd9d048432bccfc352dfc6f0995680" + }, + { + "checksum": "sha256:d695df94220c2ef990e502123b3bd8ede8fcfb4f738346dd98d999559b01b6b3" + }, + { + "checksum": "sha256:fb263177eee60c26b7acaa76cb640c3d7ab6928e73c8af80b2111a247bd61ece" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:83e470505f558f8cf8414a7fc8fb0d1bc4b16ed15d05ccf7e46332b04d1a0d85" + }, + { + "checksum": "sha256:0f32d23a6b2b15603d710b0317238ef8dde3de61eda96713e21d86c9fc7a98ed" + }, + { + "checksum": "sha256:e426534c59b3a35068877d324dd34d643ad7c84d2c406b2e6502ac6c2a367d39" + }, + { + "checksum": "sha256:094eff70081085f87a7ac0dedafa851ad8ac8e03f9f328636df4a0f8301d0e87" + }, + { + "checksum": "sha256:cf9a0bbaa7bd075d2af532586ee93ab92b96d9859f53a57f85cd7e0309f8fff6" + }, + { + "checksum": "sha256:a07f96031fbe9507a8d6bb0e14cf0783bc615552e4cfb75131672072f5729de8" + }, + { + "checksum": "sha256:aa1a6a85493590efb9c0235c15d6a05e8b119f385dc13b3e3abd2315f8c4a6e0" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "redhat": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.tar", + "options": { + "filename": "root.tar.xz", + "compression": "xz" + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/acl-2.2.53-1.el8.aarch64.rpm", + "checksum": "sha256:b984d8576520272b1011cc46b03c666cd6abc1bf74b428a8781ca58c6287a007" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm", + "checksum": "sha256:d9a4628bd8d3e776f626be4cb5edec305c2ff894d7c5cc7e33e212545721053a" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bash-4.4.19-12.el8.aarch64.rpm", + "checksum": "sha256:518e5412ce19ab733f62c334da8c5545a212c4c971d513eb95590b08a14e3772" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/brotli-1.0.6-2.el8.aarch64.rpm", + "checksum": "sha256:796cac51b2c1092c4faad372717c6ddc37cad9757111a41e531fe0a8d6c0a9ea" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bzip2-libs-1.0.6-26.el8.aarch64.rpm", + "checksum": "sha256:2d84f6765b1645f867527f493b6153470602a80c75f81545bf619aa92127e4da" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/chkconfig-1.13-2.el8.aarch64.rpm", + "checksum": "sha256:6a6aa18217ae72a0b33e4302da927e6ded92520cbf4d48a5030d4a2f95eeb5d8" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-8.30-8.el8.aarch64.rpm", + "checksum": "sha256:15c33124ac0479d34f1f58d2bd24cc52db7089b4a8681c276a3fd0d6dfe4fc72" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-common-8.30-8.el8.aarch64.rpm", + "checksum": "sha256:e085cf8bddcf09c908d925688dae077300d2964b40bd060af252d26a963cfe50" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cpio-2.12-8.el8.aarch64.rpm", + "checksum": "sha256:dcda73e0ea7b5d2710528fc6df135d435281d1f4d2be0018bb6f1858e818d599" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-2.9.6-15.el8.aarch64.rpm", + "checksum": "sha256:b7bc10e9947763df6e6177b3dbbe77c21f55ed60d26c4c28bfe14a98f7e06189" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-dicts-2.9.6-15.el8.aarch64.rpm", + "checksum": "sha256:acd4674b3fbe01d6cf94eb18a81cdb00beb73bf3d4a25a28e234f31498f5c389" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cryptsetup-libs-2.3.3-1.el8.aarch64.rpm", + "checksum": "sha256:689577d74311a7327aab6fe412a803d72b790957e863b6b78a8621a040306919" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/curl-7.61.1-12.el8.aarch64.rpm", + "checksum": "sha256:7d3ddbaae06c7fb8d24449e11b418ee07bdd9e07f7f0af57741d220b97228557" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.aarch64.rpm", + "checksum": "sha256:41cc2d507fdfbba939c00164a563e770d466f992cb64d3c51a79aec20b31d6d1" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:dc37d12420a2593c46619e9b67a0115255a0c7334f547871ce08e329bf5d15a2" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-daemon-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:f96bc0d82d4c6934659c23a6771515e78bf2252ed24d32c78001260ee6e36c8d" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-libs-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:bae965c689b08ce42f10366e4b441504432ac353d30edb8b4b2cfc798069434f" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-tools-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:eaf3c7104d3ebd0cdda3d6ce44f4c79eec0a8ce3ce71cbb0d9dfe716f58a105d" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-1.02.171-3.el8.aarch64.rpm", + "checksum": "sha256:6fbfaa1e1b1bb4e2362cf3dce0f59a94a78b457904234cbccbe6afacde311c26" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-libs-1.02.171-3.el8.aarch64.rpm", + "checksum": "sha256:057b6632870b8c3c0c950a19092ef2f9749bf3d1a37ccb083bf42ca6404db066" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/diffutils-3.6-6.el8.aarch64.rpm", + "checksum": "sha256:3a684fd5f1b1d417c6c3e9d1f0d5b846138aa06450ff246425d43d4a20bd619e" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dosfstools-4.1-6.el8.aarch64.rpm", + "checksum": "sha256:2efbfbcce7ef24e433d3c304b6b6b022d1b1b8a972969da1adb1c3c85f9625a7" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-049-89.git20200625.el8.aarch64.rpm", + "checksum": "sha256:4d8edaa317fd508226bb5421ef423470f3e9153167222dee7bf8fb2346b7875b" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:3256e78263462d5d7ab37b696992aedd6f810431641ce8d1e1bc198c797b402b" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:da4d193d5f0caf7a196f3bd4aa1225072b522521d82fca8edecc6546b5460ac6" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:c88d1656b8001ff79175f7d3b7818681e40e54e8fec6fb8556ba8141d437fcfa" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libelf-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:b140eb203fe889d1c75ef3b5527033cfeb7a6f0c813638a607c9f10faf52a34b" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libs-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:98dd1582b8ab27085379a3a7e598a6e261c62f97a5f3689447cbf1d4af9ae46c" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/expat-2.2.5-4.el8.aarch64.rpm", + "checksum": "sha256:77b56d825eb31ca191254d17a4c9399e3c4fe8af42a528c2ad4424bfd865b82d" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-5.33-16.el8.aarch64.rpm", + "checksum": "sha256:f7ccbe0d7b4a61b5a47253f168f8efcdbf41ad0755e678f9edcd2f6a69c93c7d" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-libs-5.33-16.el8.aarch64.rpm", + "checksum": "sha256:3ee66f993ee567b2457a221ed364ae4f8dfe783a5f0e723d9169f95d12f9e696" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/filesystem-3.8-3.el8.aarch64.rpm", + "checksum": "sha256:634a3cbf0b334e901b6887176fa1b98246be7c4010b4c21cb6fd8fa7aa5fdf94" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/findutils-4.6.0-20.el8.aarch64.rpm", + "checksum": "sha256:540fa90864b4eb0176b56e0c5e9d7bc6130985288ae297b4c38950381b08a827" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/fuse-libs-2.9.7-12.el8.aarch64.rpm", + "checksum": "sha256:e08305aecd924631284ddaeae39a83cca85495389d4ddef75410a32af49f946d" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gawk-4.2.1-1.el8.aarch64.rpm", + "checksum": "sha256:e0faa8a6bc43432619a2b6a26e9f1323d30cda945580d8bc0f6c2fe742b71924" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-1.18-1.el8.aarch64.rpm", + "checksum": "sha256:3f5765cebcac288cc1b5b118acfbc2016eda7b81ad73923f6f9c21e4731eb0d9" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-libs-1.18-1.el8.aarch64.rpm", + "checksum": "sha256:8ef2fcbe5a8d6e7d393d28838ff458336d16e006bc7d19921f460eb105b88570" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-0.19.8.1-17.el8.aarch64.rpm", + "checksum": "sha256:fddf61e9024c41073442ccff0c9990fa004e9b183f391c4e3cf3853e5ae6062c" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-libs-0.19.8.1-17.el8.aarch64.rpm", + "checksum": "sha256:ce6960fa7831611815e163864a91b70b0ab1ef0f446c2cad1eec13404822cad5" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glib2-2.56.4-8.el8.aarch64.rpm", + "checksum": "sha256:964b1d9563e42a176c24cf5c91616ee5cc40de3b1c92038d7fb0392113eaf159" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:d4424a9c946da1eab876298af8f772d5aab1109a1f551ac2f1cd10ee849568de" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-all-langpacks-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:4d8d164f8bd56b7ab6252f009b38525f39fb161c03713414e1583894a265c50a" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-common-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:91c58481a7e4a9b7f9e0e14844fa73047395c75df95d35afa3b0d8ef3f584491" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gmp-6.1.2-10.el8.aarch64.rpm", + "checksum": "sha256:19efe6f125c00123ccc6d96e51eb61e711f3ea01f32d18cce14d3b614217c58e" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-2.2.20-2.el8.aarch64.rpm", + "checksum": "sha256:f700797810fb2bdbba5a0b31e10c361360a87bac1a282da109273194a25bf6ef" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnupg2-smime-2.2.20-2.el8.aarch64.rpm", + "checksum": "sha256:0b4564ad3a799af1a4a0de33b0952f6056d942b0cfa39b73e9375bf0c05b3191" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnutls-3.6.14-3.el8.aarch64.rpm", + "checksum": "sha256:3bf230c85711b285afb968850d7e98eb6b068a06e7ca40e94203e388d8447f48" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gpgme-1.13.1-3.el8.aarch64.rpm", + "checksum": "sha256:c22f0d40fbdaaceec711be0cecc122fac4570d126914ce3694a3d6a1178bd487" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grep-3.1-6.el8.aarch64.rpm", + "checksum": "sha256:81d2e21dad970c08798c0df00bbda21acf165a370f9612e0d14ce69e5dd6c5c3" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:2921d3aa14a509d271ca35256903c142c30f088f7dc889a4c4e15b26316ef5c0" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-minimal-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:126d980678e5b687c775cf857b4013306f1a761353370258a0f04d92a3553f92" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grubby-8.40-41.el8.aarch64.rpm", + "checksum": "sha256:5eddb5c1febbe6e58491f8e9ee8fc9897298b307e0357c01f49d445cf25283c9" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gzip-1.9-9.el8.aarch64.rpm", + "checksum": "sha256:e82699d15e4e6ff7825629d7c1c8a0f50a5519b6e5328472de91a0deddb9cf3d" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hardlink-1.3-6.el8.aarch64.rpm", + "checksum": "sha256:fc51460213b3bf5b67f08f2695aae8d728f614adbbacb917a0825e4ebfbc3e68" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ima-evm-utils-1.1-5.el8.aarch64.rpm", + "checksum": "sha256:cf8fdbfcd359aac8bf55500c24e6843baafe8fef35019126c3616806b41415b3" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/info-6.5-6.el8.aarch64.rpm", + "checksum": "sha256:3f7e5e72ab9e18dbca936b40734c91520242a49a9e98a2f2589f397faa6ad8e8" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iptables-libs-1.8.4-14.el8.aarch64.rpm", + "checksum": "sha256:0fd7dd5b060e7533144ad7a3cae2453ad6f87650010f328879b10c7c4cba0c04" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-c-0.13.1-0.2.el8.aarch64.rpm", + "checksum": "sha256:36aece7b7a65785985bf0b98701514f12735a87517b8578a3eb3710f82ba4765" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-glib-1.4.4-1.el8.aarch64.rpm", + "checksum": "sha256:1143ac623a74d7feaaaf293c18d942d243248f6356628f87216670c10d11687b" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-2.0.4-10.el8.aarch64.rpm", + "checksum": "sha256:10ac3bf7565725a55b0aef56f65befd0d320219fc83adfab6e564c19f8c44bd6" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/keyutils-libs-1.5.10-6.el8.aarch64.rpm", + "checksum": "sha256:e4ec1966f9bc7cbc898fe7550600ae3e9e4f8afbcdd3f6e74afe1965247653ba" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-25-16.el8.aarch64.rpm", + "checksum": "sha256:1091a799d34a42d2e42ac462b4f979a55d17513eca5a00bad9bdba56cca83357" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-libs-25-16.el8.aarch64.rpm", + "checksum": "sha256:6f87f305a3e0e0faf69c2a9d4f277958ca33e85b72c6e4f77a365a5f60ced3d3" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kpartx-0.8.4-2.el8.aarch64.rpm", + "checksum": "sha256:4a27cd4496ebdba821b3c7692eeb0c0fff28c6af69fe4fe9e4bf52511639bd6a" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/krb5-libs-1.18.2-3.el8.aarch64.rpm", + "checksum": "sha256:ca87249f90bac96902d18c11a1f8c80566fa090c6473226bdd147e07e3ed21ec" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libacl-2.2.53-1.el8.aarch64.rpm", + "checksum": "sha256:7c014b54f7929348f614f8f4eb7a1552b8565c0a57f3a75ff6471dc05f30cafe" + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.112", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libaio-0.3.112-1.el8.aarch64.rpm", + "checksum": "sha256:98f838a9775269a0f796151bd54d52c7ac91d4bf1365186772f243bfafbb136a" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libarchive-3.3.2-9.el8.aarch64.rpm", + "checksum": "sha256:dfdec57ff520511d1d4ef9d913d90fc8d6ac98685cbc12fb568c8980f2a73f1a" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libassuan-2.5.1-3.el8.aarch64.rpm", + "checksum": "sha256:0f1a02850c102e2a186787504f965c0c10d6432b9f600c18bc2f520e55f04a8c" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libattr-2.4.48-3.el8.aarch64.rpm", + "checksum": "sha256:6f2bfbe0f23d3b233aacb72c153ee133839353325f028321eb5ea38b0dc06c02" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libblkid-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:d173b35182f28b9dd48e4a942f2a20c659bee2f9ac234b60cf8b995aa2421382" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-2.26-4.el8.aarch64.rpm", + "checksum": "sha256:2cddadff38ccef2364a7e40af0e1d9b3bf9c06869c15ceeb655f3cfa431c2083" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-ng-0.7.9-5.el8.aarch64.rpm", + "checksum": "sha256:62a2878605ca0415fd60adcff4c7068d855d20737498a968fabc646610ccbe5c" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcom_err-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:e5f82f102f51d88aa517bbebd170795a571b7ddc3036574b92b498cc13704d98" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcomps-0.1.11-4.el8.aarch64.rpm", + "checksum": "sha256:ff9fc6467a4c2fd0c22c419a9cdb7a524d1c69d0c87aa09f31728bef9f692f76" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcroco-0.6.12-4.el8.aarch64.rpm", + "checksum": "sha256:86ae7501bdf0149728879f488dd4c86907216cb5b021192347a5c10a55382931" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcurl-7.61.1-12.el8.aarch64.rpm", + "checksum": "sha256:2809ad51c6eb6c9a54d64cccc2cd948f6fd4207f32b4493b3f4a9bd0886c894b" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-5.3.28-39.el8.aarch64.rpm", + "checksum": "sha256:84e7102978d76d80aa40c43efcc71c1e54e819195132df921a8c13cec54328da" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-utils-5.3.28-39.el8.aarch64.rpm", + "checksum": "sha256:621e96e91103f2f701e4ac3b8b8b6ef9aab4db5ab8fb3e141eb02e3f328aed79" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdnf-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:fac29887224d91e8190a569b3ac5be1168034f36c9c234576ea3cefe686e46cd" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libevent-2.1.8-5.el8.aarch64.rpm", + "checksum": "sha256:058822931f4c34c18675116c1b02b718de4044c1019acb0d5f97417f00a30ba7" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libfdisk-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:d6aa17908468b5e2095526664fce6627dec7a02c26625339c14b9278cc39d4a6" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libffi-3.1-22.el8.aarch64.rpm", + "checksum": "sha256:4a40a1538c8a488f32476f96d2461c3b792eb0cf5acb998e397d8a9cef8e5461" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcc-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:3b607f0dbedecb25239e22c1f553c8d70db9d2206a877fa07567fa1a49e233d7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcrypt-1.8.5-4.el8.aarch64.rpm", + "checksum": "sha256:8498846918c7bc7a20553340434cfbfb0d19185adcd0ff52866c6506ab8f747d" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgomp-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:53fa2fd6a138d00c697b827a77bcc25ec498b1d49bb04ef80594e81ccabc165d" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgpg-error-1.31-1.el8.aarch64.rpm", + "checksum": "sha256:5a05f1126ed38f752af247dcdf7c958e738b935b8b6d942fd42f423768f05255" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libidn2-2.2.0-1.el8.aarch64.rpm", + "checksum": "sha256:2dc8e2f52451d1a11b16bbb389a24c58b61a1ba804ee777f9d06dbe4e1fcf6e5" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-1.2.0-2.el8.aarch64.rpm", + "checksum": "sha256:83301ca502322e0634173460bf8fa35572c36ab8cc2e6e600bf9980f845fc857" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.aarch64.rpm", + "checksum": "sha256:f07b1f40ebb1fbe5c24e68a38b5f768a21e2ec2254d4bd8ff61fb0bde72f64ce" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libksba-1.3.5-7.el8.aarch64.rpm", + "checksum": "sha256:704e1dc996a17815c6dcf7029c0ddb2849d40feaab6e9b9c687af9d95fef825c" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmetalink-0.1.3-7.el8.aarch64.rpm", + "checksum": "sha256:fa80a7e82e231dc77b3e44edd2cbf5b3d1657e009e59f15bbe8d50a4290b7c82" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmodulemd-2.9.4-2.el8.aarch64.rpm", + "checksum": "sha256:ba1364539f16d7c8379d7563fd0634651fa8a05b3f7098a21ba96e1f5641f132" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmount-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:26b14d8f226962ce712bbccfb245843759e835a24a139eacae86d680043a85a7" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.aarch64.rpm", + "checksum": "sha256:4874e739ed37bc6a5bfdb6069d4620e5f7efe01d60eb9fd2550c550167c99990" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.aarch64.rpm", + "checksum": "sha256:471663fca7e3f609834368d69d8f1f469cfc0d3f3e95dc2b79381722d0368edc" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpcap-1.9.1-4.el8.aarch64.rpm", + "checksum": "sha256:435a2be84a2b38372965dbd60ffed0ed38a616b8100859787a8bb3b19d9fc4d9" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpsl-0.20.2-6.el8.aarch64.rpm", + "checksum": "sha256:6557d001315e85ac123b1378c5aafb81428e2383debcacf3f91c55476cfc48eb" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpwquality-1.4.0-9.el8.aarch64.rpm", + "checksum": "sha256:d6ab7c8790cd6c9a137d908d840c51c547e950d25f6ab8af3c9ad3899ff6c044" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librepo-1.12.0-1.el8.aarch64.rpm", + "checksum": "sha256:2d74e0ab14393921c6160fda8dd533b58c0348acdf5ee5c306ffc64221700de2" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libreport-filesystem-2.9.5-11.el8.aarch64.rpm", + "checksum": "sha256:e55bf252e792f27f076101e94dfbbac97dabeea0f7893a4cb9b111a0b72d187f" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/librhsm-0.0.3-3.el8.aarch64.rpm", + "checksum": "sha256:e9487db2fdce1f494ee1582787a1afc1ea4e0429189db8be0ddbb0af2676c4b6" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libseccomp-2.4.3-1.el8.aarch64.rpm", + "checksum": "sha256:cc7e751a62f9a28b82df0bce0ecfb050364b8688ef69473f1910909e44c5eb98" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsecret-0.18.6-1.el8.aarch64.rpm", + "checksum": "sha256:c1b5c4668331e8b05a08e7de432cbfb75f8072401bb6651a24e43f64eff8dcc4" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-utils-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:c82ca1c0ef4b89f75e8e7edbbae4f3eeb2720a4abd56b0927928cff2d9721186" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsemanage-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:140146ebcbadd9b0f2aa5c2fcde5c93888f2d84ce61a2a4cf148ef435d1ba410" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsepol-2.9-1.el8.aarch64.rpm", + "checksum": "sha256:c8a28b4587888435c51f6d1ce42f48b08fb0256e4029ea569e9a02adcb82c85a" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsigsegv-2.11-5.el8.aarch64.rpm", + "checksum": "sha256:bf267d9571cf568375e261d593236750f400ac536c1c818513106482ebc3fb10" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsmartcols-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:f35c0da3cff05ded33c0cb4f202dbb52a5caabec8b1897d5057df83c284d62f1" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsolv-0.7.11-1.el8.aarch64.rpm", + "checksum": "sha256:2397506a63455e543b201938f605e687de5590d9a06282824e2f6bfdf5e0f149" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libss-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:268d9232f0853037100432e9363c659cf99927e03f759fd4884643b560710cd6" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-0.9.4-2.el8.aarch64.rpm", + "checksum": "sha256:3ee6a4f61935c2f0698ad2c4834a5864920a1e48d55c7800da7c382249895e39" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libstdc++-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:f4e63e7eedc0266a575eb6107f41c5f20ca0505a0e80145c21b9741674d5c0b5" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtasn1-4.13-3.el8.aarch64.rpm", + "checksum": "sha256:ed28e1e31109e27ce1c676914364c9f1dd46b71d00cb4cf13931f0fec6cf6978" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtirpc-1.1.4-4.el8.aarch64.rpm", + "checksum": "sha256:481bbd6d73415d437a73eee7977ec370299acdac44b215a026652debba31783d" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libunistring-0.9.9-3.el8.aarch64.rpm", + "checksum": "sha256:da4b9bfad26d559485ade669556512acfe93ba23d204f2556bac82c09401b4e7" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libusbx-1.0.23-3.el8.aarch64.rpm", + "checksum": "sha256:01e486a3be67325e9692e909f5c6534137ee6a6df185ba2c09d4d50fe6c738f6" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libutempter-1.1.6-14.el8.aarch64.rpm", + "checksum": "sha256:ad07261ff4f478be9511f7ee749bfbe8b2ba8e28696c2f561caa20e35c535134" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libuuid-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:95de1777f7e8a734445c5d45e0b77da8b6c41a9b504582ed266d852c677a936b" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libverto-0.3.0-5.el8.aarch64.rpm", + "checksum": "sha256:532d46a4c0e68bd45eabc3e2ba6d570880344044e1034f5f347b37c470d0dced" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxcrypt-4.1.1-4.el8.aarch64.rpm", + "checksum": "sha256:876ffb285aaeddb2c18ae32527bd4ee202710bd8e18d5b410af22937646dcdec" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxml2-2.9.7-8.el8.aarch64.rpm", + "checksum": "sha256:fb56b7a416e12da0782ae8ba7396bc03a2f8844c2efcb5df3f8b9e74eb8b8059" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libyaml-0.1.7-5.el8.aarch64.rpm", + "checksum": "sha256:7864fbc866ae5a3e59b4f0f114b77ff52b55e76c5388a917f82a6097f02a4db7" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libzstd-1.4.4-1.el8.aarch64.rpm", + "checksum": "sha256:19d1de27d2f62b4a55735233807f70a1e8ff7551fed97ee8650dbd09c1ef50ea" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lua-libs-5.3.4-11.el8.aarch64.rpm", + "checksum": "sha256:bc0f9bd34ac6a01dd7272b87e1b7a33045ff8c6793cac02fa639dfc9341e8215" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lz4-libs-1.8.3-2.el8.aarch64.rpm", + "checksum": "sha256:64ac5cb6fd3da1610812795ce17e09648d89c87513d6284b852a3455b0831d3a" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mpfr-3.1.6-1.el8.aarch64.rpm", + "checksum": "sha256:320ced09e242f09047f4fab0a7f66aba6de2e42583f6a2e164eadcc1ffd0b915" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-6.1-7.20180224.el8.aarch64.rpm", + "checksum": "sha256:8ac1003d722e3d5f383c9b970bf6dfbc905007a624abadb63e520d7a93993747" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-libs-6.1-7.20180224.el8.aarch64.rpm", + "checksum": "sha256:f99f5edde9ad4574b84264c467420c910b31f78683fbf1b63d106a7e6c9d64a3" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/nettle-3.4.1-2.el8.aarch64.rpm", + "checksum": "sha256:e2c4ac0f7abf75cbcc7a6fb35412820c267f1a8ce614f41b60d901918c4616d5" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/npth-1.5-4.el8.aarch64.rpm", + "checksum": "sha256:daf36ee86ec6001770ae68bdd82409526faf4b9b1313a6b74fb54cfb98ff571e" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openldap-2.4.46-15.el8.aarch64.rpm", + "checksum": "sha256:cfa188d39884fd4ba36d27e8fb25aed9dbd26efccffbfd01a24c2c580fdb96f1" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-1.1.1g-9.el8.aarch64.rpm", + "checksum": "sha256:3ef63ecbebf844bcf682c9482dc0ddd158c955b0f066b62eb9575bb9a9642db5" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-libs-1.1.1g-9.el8.aarch64.rpm", + "checksum": "sha256:448d3ff44e7f32f3b33e891180e248dc1bcd4d410f68015a8b0c30dc7c385aca" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-pkcs11-0.4.10-2.el8.aarch64.rpm", + "checksum": "sha256:290c83afcd2b0a2b17aab95cf72a85da5f8b9f9a9862857c919a0f43e3fce70e" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/os-prober-1.74-6.el8.aarch64.rpm", + "checksum": "sha256:43ab42c8a58267936a89da99e37d3b9fc56489e958060f600ba047445ca44ee3" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-0.23.14-5.el8_0.aarch64.rpm", + "checksum": "sha256:651f38873d3356ec4efb27d04658541080d11cf1ece6335a07db1ca089fa7da3" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.aarch64.rpm", + "checksum": "sha256:ec40be9e0b2bb03f7b057a7a9342ffbd86129d58828fb310f445bc506261eb0e" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pam-1.3.1-11.el8.aarch64.rpm", + "checksum": "sha256:04c031a07bde4360484a0180e832036d3ac45a95c4839e54d7a02423df5485ef" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre-8.42-4.el8.aarch64.rpm", + "checksum": "sha256:fea4eb54fe59451b76fb40b9bd15ff41f0f51bb7371f94b2f5df572ef917d037" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre2-10.32-2.el8.aarch64.rpm", + "checksum": "sha256:ce8c92fa2bef1770f44992db24e1cb8cc850feab03a74cf0ebf741ecb0d160ea" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pigz-2.4-4.el8.aarch64.rpm", + "checksum": "sha256:f847957437e7f24844930c4a3ff64c5f7877f083553f48eeadca3c5f5e5c728e" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-3.6.8-30.el8.aarch64.rpm", + "checksum": "sha256:68593fad4413255772bd08ed7f8b578332f0f53e002c8c7473d90c966a87131b" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/policycoreutils-2.9-9.el8.aarch64.rpm", + "checksum": "sha256:b90ce065d5ea98845733ff06e47d385937f6293ebddf52144c80f5fe1f296307" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/popt-1.16-14.el8.aarch64.rpm", + "checksum": "sha256:4e4923f05d0032263d570075b9b832b9fc3550cd8f82f9a6b0b9b25061726110" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/procps-ng-3.3.15-2.el8.aarch64.rpm", + "checksum": "sha256:d890d028f59e2553730fad3dbea0e1a245c92c24836513fa2281194b1c90b53a" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-gpg-1.13.1-3.el8.aarch64.rpm", + "checksum": "sha256:90405803c0159cdf0f74a26b6ce064cfd9973e59232b2923ed171a38fc5684a6" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-hawkey-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:4909edde46b5b2b58d228bacafa3bab5bc5847559d591d59ecd59cdf50d36db4" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libcomps-0.1.11-4.el8.aarch64.rpm", + "checksum": "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libdnf-0.48.0-2.el8.aarch64.rpm", + "checksum": "sha256:9b6fcdd19caee5fe77b9ed17adb3f11769a7109ebcf52d3cb3358d5a9eecc391" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libs-3.6.8-30.el8.aarch64.rpm", + "checksum": "sha256:65b8d755ff01dfefa423d2f0bd6fd54cfc4c580da63510e19cf178abb6e26172" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-rpm-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:b5b1f5f7a02f70db056861813ddcf181f2ebba507cd368fbe2c32f262edf7fc6" + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/readline-7.0-10.el8.aarch64.rpm", + "checksum": "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-8.3-0.2.el8.aarch64.rpm", + "checksum": "sha256:a6292dd846bc471b22409fc95a5e09c88bcb6176251dc5cc11f4b14a73ddda11" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-eula-8.3-0.2.el8.aarch64.rpm", + "checksum": "sha256:784d385116891056b618722c933d43c5b395b92fa82e5bc797081317ec6a82ba" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:47b483c0f556c56f0b1f468603c57834864902ae5a849a18c8a0ca5f76d66c86" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-build-libs-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:c633b98b4dbf96674a69573404819c34d66eb7e19820283fc588f6b10b0e3fc8" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-libs-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:d3fb5a473c44cd8ae6b94d6bf3fc552553d8f4ef28eed439658ea38990ab9db5" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:0a885c6dc6abd969b828bf2fd7063ee884e6d058eaf405b02f3dd6efb6c66bac" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:0bb7024125ca67119612e55a92da13c989e0306ddd7de7e655a679c963939ef7" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sed-4.5-2.el8.aarch64.rpm", + "checksum": "sha256:125c92f23d87b905c21e9f7669f0ec6e41428ab63c8c13f63db8980f292797d5" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shadow-utils-4.6-10.el8.aarch64.rpm", + "checksum": "sha256:a840b8193ce9b1b72e3783b9a9bb2ec91947ba3b6f7ac973ae8e0e20a7059117" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shared-mime-info-1.9-3.el8.aarch64.rpm", + "checksum": "sha256:19cd894b4154d1a8521c6884cfd2a6eaf1f498b7dec5cc31408f8535b9098f2a" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sqlite-libs-3.26.0-10.el8.aarch64.rpm", + "checksum": "sha256:207e6396488c1db18fb7b1f2b9952f48c2625f042c5f6a901d41974ce376b0e0" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-239-36.el8.aarch64.rpm", + "checksum": "sha256:d4467ba499fe1ddd82746ad00d7e86bea59c4827fe1ff8c05132bad1f93ddb7f" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-libs-239-36.el8.aarch64.rpm", + "checksum": "sha256:800c9a0d718c641ceee26c8f625b2dcd79a33963e9e7a11930678dc99582a2d0" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-pam-239-36.el8.aarch64.rpm", + "checksum": "sha256:986683a0edb615a5d45a9c1b0ee3d27f8032c2667cad58d24526085e41010992" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-udev-239-36.el8.aarch64.rpm", + "checksum": "sha256:3fe7c10c144c8fffc00d144317a2bf8029bd9d048432bccfc352dfc6f0995680" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tar-1.30-5.el8.aarch64.rpm", + "checksum": "sha256:ba66a87402ccc8515e164f597f5d254ad9513979fe3ca1ffabf63c915c0daa73" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-0.3.14-4.el8.aarch64.rpm", + "checksum": "sha256:d695df94220c2ef990e502123b3bd8ede8fcfb4f738346dd98d999559b01b6b3" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-lib-0.3.14-4.el8.aarch64.rpm", + "checksum": "sha256:fb263177eee60c26b7acaa76cb640c3d7ab6928e73c8af80b2111a247bd61ece" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/util-linux-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:83e470505f558f8cf8414a7fc8fb0d1bc4b16ed15d05ccf7e46332b04d1a0d85" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/which-2.21-12.el8.aarch64.rpm", + "checksum": "sha256:0f32d23a6b2b15603d710b0317238ef8dde3de61eda96713e21d86c9fc7a98ed" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xfsprogs-5.0.0-4.el8.aarch64.rpm", + "checksum": "sha256:760d9056891a60c200984f0655aee1876b3bf890f7486306c05db8e295ae7843" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-5.2.4-3.el8.aarch64.rpm", + "checksum": "sha256:e426534c59b3a35068877d324dd34d643ad7c84d2c406b2e6502ac6c2a367d39" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-libs-5.2.4-3.el8.aarch64.rpm", + "checksum": "sha256:094eff70081085f87a7ac0dedafa851ad8ac8e03f9f328636df4a0f8301d0e87" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/zlib-1.2.11-15.el8.aarch64.rpm", + "checksum": "sha256:cf9a0bbaa7bd075d2af532586ee93ab92b96d9859f53a57f85cd7e0309f8fff6" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libxkbcommon-0.9.1-1.el8.aarch64.rpm", + "checksum": "sha256:a07f96031fbe9507a8d6bb0e14cf0783bc615552e4cfb75131672072f5729de8" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/memstrack-0.1.8-1.el8.aarch64.rpm", + "checksum": "sha256:aa1a6a85493590efb9c0235c15d6a05e8b119f385dc13b3e3abd2315f8c4a6e0" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/pinentry-1.1.0-2.el8.aarch64.rpm", + "checksum": "sha256:22c0e44318e36e04ad1eb4632dcf25db991f481f9a543387d372e1f2ad92561f" + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python3-unbound-1.7.3-14.el8.aarch64.rpm", + "checksum": "sha256:6ae316dfb9723d13a8d36d98d109d4a55017b568ee2070279f1bdccdc699862a" + }, + { + "name": "python36", + "epoch": 0, + "version": "3.6.8", + "release": "2.module+el8.1.0+3334+5cb623d7", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.aarch64.rpm", + "checksum": "sha256:5996ff948b5874f894c5ce3495652e6de552addf2331fd82193023d77994ef8f" + }, + { + "name": "qemu-img", + "epoch": 15, + "version": "4.2.0", + "release": "29.module+el8.3.0+7212+401047e6", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.aarch64.rpm", + "checksum": "sha256:d20f4bf44fcc90509e7afca364eae0a55c8f33df2f8a69e266f5fcd4b5fa2e4b" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/unbound-libs-1.7.3-14.el8.aarch64.rpm", + "checksum": "sha256:727c08fe072ef85837e8db30574aec712cdf67a062eead3e5481ba08425b2395" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/acl-2.2.53-1.el8.aarch64.rpm", + "checksum": "sha256:b984d8576520272b1011cc46b03c666cd6abc1bf74b428a8781ca58c6287a007" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.aarch64.rpm", + "checksum": "sha256:d9a4628bd8d3e776f626be4cb5edec305c2ff894d7c5cc7e33e212545721053a" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bash-4.4.19-12.el8.aarch64.rpm", + "checksum": "sha256:518e5412ce19ab733f62c334da8c5545a212c4c971d513eb95590b08a14e3772" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/brotli-1.0.6-2.el8.aarch64.rpm", + "checksum": "sha256:796cac51b2c1092c4faad372717c6ddc37cad9757111a41e531fe0a8d6c0a9ea" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/bzip2-libs-1.0.6-26.el8.aarch64.rpm", + "checksum": "sha256:2d84f6765b1645f867527f493b6153470602a80c75f81545bf619aa92127e4da" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/chkconfig-1.13-2.el8.aarch64.rpm", + "checksum": "sha256:6a6aa18217ae72a0b33e4302da927e6ded92520cbf4d48a5030d4a2f95eeb5d8" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-8.30-8.el8.aarch64.rpm", + "checksum": "sha256:15c33124ac0479d34f1f58d2bd24cc52db7089b4a8681c276a3fd0d6dfe4fc72" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/coreutils-common-8.30-8.el8.aarch64.rpm", + "checksum": "sha256:e085cf8bddcf09c908d925688dae077300d2964b40bd060af252d26a963cfe50" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cpio-2.12-8.el8.aarch64.rpm", + "checksum": "sha256:dcda73e0ea7b5d2710528fc6df135d435281d1f4d2be0018bb6f1858e818d599" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-2.9.6-15.el8.aarch64.rpm", + "checksum": "sha256:b7bc10e9947763df6e6177b3dbbe77c21f55ed60d26c4c28bfe14a98f7e06189" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cracklib-dicts-2.9.6-15.el8.aarch64.rpm", + "checksum": "sha256:acd4674b3fbe01d6cf94eb18a81cdb00beb73bf3d4a25a28e234f31498f5c389" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cryptsetup-libs-2.3.3-1.el8.aarch64.rpm", + "checksum": "sha256:689577d74311a7327aab6fe412a803d72b790957e863b6b78a8621a040306919" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/curl-7.61.1-12.el8.aarch64.rpm", + "checksum": "sha256:7d3ddbaae06c7fb8d24449e11b418ee07bdd9e07f7f0af57741d220b97228557" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.aarch64.rpm", + "checksum": "sha256:41cc2d507fdfbba939c00164a563e770d466f992cb64d3c51a79aec20b31d6d1" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:dc37d12420a2593c46619e9b67a0115255a0c7334f547871ce08e329bf5d15a2" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-daemon-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:f96bc0d82d4c6934659c23a6771515e78bf2252ed24d32c78001260ee6e36c8d" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-libs-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:bae965c689b08ce42f10366e4b441504432ac353d30edb8b4b2cfc798069434f" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dbus-tools-1.12.8-11.el8.aarch64.rpm", + "checksum": "sha256:eaf3c7104d3ebd0cdda3d6ce44f4c79eec0a8ce3ce71cbb0d9dfe716f58a105d" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-1.02.171-3.el8.aarch64.rpm", + "checksum": "sha256:6fbfaa1e1b1bb4e2362cf3dce0f59a94a78b457904234cbccbe6afacde311c26" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/device-mapper-libs-1.02.171-3.el8.aarch64.rpm", + "checksum": "sha256:057b6632870b8c3c0c950a19092ef2f9749bf3d1a37ccb083bf42ca6404db066" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/diffutils-3.6-6.el8.aarch64.rpm", + "checksum": "sha256:3a684fd5f1b1d417c6c3e9d1f0d5b846138aa06450ff246425d43d4a20bd619e" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/dracut-049-89.git20200625.el8.aarch64.rpm", + "checksum": "sha256:4d8edaa317fd508226bb5421ef423470f3e9153167222dee7bf8fb2346b7875b" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:c88d1656b8001ff79175f7d3b7818681e40e54e8fec6fb8556ba8141d437fcfa" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libelf-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:b140eb203fe889d1c75ef3b5527033cfeb7a6f0c813638a607c9f10faf52a34b" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/elfutils-libs-0.180-1.el8.aarch64.rpm", + "checksum": "sha256:98dd1582b8ab27085379a3a7e598a6e261c62f97a5f3689447cbf1d4af9ae46c" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/expat-2.2.5-4.el8.aarch64.rpm", + "checksum": "sha256:77b56d825eb31ca191254d17a4c9399e3c4fe8af42a528c2ad4424bfd865b82d" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-5.33-16.el8.aarch64.rpm", + "checksum": "sha256:f7ccbe0d7b4a61b5a47253f168f8efcdbf41ad0755e678f9edcd2f6a69c93c7d" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/file-libs-5.33-16.el8.aarch64.rpm", + "checksum": "sha256:3ee66f993ee567b2457a221ed364ae4f8dfe783a5f0e723d9169f95d12f9e696" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/filesystem-3.8-3.el8.aarch64.rpm", + "checksum": "sha256:634a3cbf0b334e901b6887176fa1b98246be7c4010b4c21cb6fd8fa7aa5fdf94" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/findutils-4.6.0-20.el8.aarch64.rpm", + "checksum": "sha256:540fa90864b4eb0176b56e0c5e9d7bc6130985288ae297b4c38950381b08a827" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gawk-4.2.1-1.el8.aarch64.rpm", + "checksum": "sha256:e0faa8a6bc43432619a2b6a26e9f1323d30cda945580d8bc0f6c2fe742b71924" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-1.18-1.el8.aarch64.rpm", + "checksum": "sha256:3f5765cebcac288cc1b5b118acfbc2016eda7b81ad73923f6f9c21e4731eb0d9" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gdbm-libs-1.18-1.el8.aarch64.rpm", + "checksum": "sha256:8ef2fcbe5a8d6e7d393d28838ff458336d16e006bc7d19921f460eb105b88570" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-0.19.8.1-17.el8.aarch64.rpm", + "checksum": "sha256:fddf61e9024c41073442ccff0c9990fa004e9b183f391c4e3cf3853e5ae6062c" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gettext-libs-0.19.8.1-17.el8.aarch64.rpm", + "checksum": "sha256:ce6960fa7831611815e163864a91b70b0ab1ef0f446c2cad1eec13404822cad5" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glib2-2.56.4-8.el8.aarch64.rpm", + "checksum": "sha256:964b1d9563e42a176c24cf5c91616ee5cc40de3b1c92038d7fb0392113eaf159" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:d4424a9c946da1eab876298af8f772d5aab1109a1f551ac2f1cd10ee849568de" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-all-langpacks-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:4d8d164f8bd56b7ab6252f009b38525f39fb161c03713414e1583894a265c50a" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/glibc-common-2.28-127.el8.aarch64.rpm", + "checksum": "sha256:91c58481a7e4a9b7f9e0e14844fa73047395c75df95d35afa3b0d8ef3f584491" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gmp-6.1.2-10.el8.aarch64.rpm", + "checksum": "sha256:19efe6f125c00123ccc6d96e51eb61e711f3ea01f32d18cce14d3b614217c58e" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gnutls-3.6.14-3.el8.aarch64.rpm", + "checksum": "sha256:3bf230c85711b285afb968850d7e98eb6b068a06e7ca40e94203e388d8447f48" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grep-3.1-6.el8.aarch64.rpm", + "checksum": "sha256:81d2e21dad970c08798c0df00bbda21acf165a370f9612e0d14ce69e5dd6c5c3" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:2921d3aa14a509d271ca35256903c142c30f088f7dc889a4c4e15b26316ef5c0" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grub2-tools-minimal-2.02-84.el8.aarch64.rpm", + "checksum": "sha256:126d980678e5b687c775cf857b4013306f1a761353370258a0f04d92a3553f92" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/grubby-8.40-41.el8.aarch64.rpm", + "checksum": "sha256:5eddb5c1febbe6e58491f8e9ee8fc9897298b307e0357c01f49d445cf25283c9" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/gzip-1.9-9.el8.aarch64.rpm", + "checksum": "sha256:e82699d15e4e6ff7825629d7c1c8a0f50a5519b6e5328472de91a0deddb9cf3d" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/hardlink-1.3-6.el8.aarch64.rpm", + "checksum": "sha256:fc51460213b3bf5b67f08f2695aae8d728f614adbbacb917a0825e4ebfbc3e68" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/info-6.5-6.el8.aarch64.rpm", + "checksum": "sha256:3f7e5e72ab9e18dbca936b40734c91520242a49a9e98a2f2589f397faa6ad8e8" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/iptables-libs-1.8.4-14.el8.aarch64.rpm", + "checksum": "sha256:0fd7dd5b060e7533144ad7a3cae2453ad6f87650010f328879b10c7c4cba0c04" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/json-c-0.13.1-0.2.el8.aarch64.rpm", + "checksum": "sha256:36aece7b7a65785985bf0b98701514f12735a87517b8578a3eb3710f82ba4765" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-2.0.4-10.el8.aarch64.rpm", + "checksum": "sha256:10ac3bf7565725a55b0aef56f65befd0d320219fc83adfab6e564c19f8c44bd6" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/keyutils-libs-1.5.10-6.el8.aarch64.rpm", + "checksum": "sha256:e4ec1966f9bc7cbc898fe7550600ae3e9e4f8afbcdd3f6e74afe1965247653ba" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-25-16.el8.aarch64.rpm", + "checksum": "sha256:1091a799d34a42d2e42ac462b4f979a55d17513eca5a00bad9bdba56cca83357" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kmod-libs-25-16.el8.aarch64.rpm", + "checksum": "sha256:6f87f305a3e0e0faf69c2a9d4f277958ca33e85b72c6e4f77a365a5f60ced3d3" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/kpartx-0.8.4-2.el8.aarch64.rpm", + "checksum": "sha256:4a27cd4496ebdba821b3c7692eeb0c0fff28c6af69fe4fe9e4bf52511639bd6a" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/krb5-libs-1.18.2-3.el8.aarch64.rpm", + "checksum": "sha256:ca87249f90bac96902d18c11a1f8c80566fa090c6473226bdd147e07e3ed21ec" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libacl-2.2.53-1.el8.aarch64.rpm", + "checksum": "sha256:7c014b54f7929348f614f8f4eb7a1552b8565c0a57f3a75ff6471dc05f30cafe" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libarchive-3.3.2-9.el8.aarch64.rpm", + "checksum": "sha256:dfdec57ff520511d1d4ef9d913d90fc8d6ac98685cbc12fb568c8980f2a73f1a" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libattr-2.4.48-3.el8.aarch64.rpm", + "checksum": "sha256:6f2bfbe0f23d3b233aacb72c153ee133839353325f028321eb5ea38b0dc06c02" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libblkid-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:d173b35182f28b9dd48e4a942f2a20c659bee2f9ac234b60cf8b995aa2421382" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-2.26-4.el8.aarch64.rpm", + "checksum": "sha256:2cddadff38ccef2364a7e40af0e1d9b3bf9c06869c15ceeb655f3cfa431c2083" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcap-ng-0.7.9-5.el8.aarch64.rpm", + "checksum": "sha256:62a2878605ca0415fd60adcff4c7068d855d20737498a968fabc646610ccbe5c" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcom_err-1.45.6-1.el8.aarch64.rpm", + "checksum": "sha256:e5f82f102f51d88aa517bbebd170795a571b7ddc3036574b92b498cc13704d98" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcroco-0.6.12-4.el8.aarch64.rpm", + "checksum": "sha256:86ae7501bdf0149728879f488dd4c86907216cb5b021192347a5c10a55382931" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libcurl-7.61.1-12.el8.aarch64.rpm", + "checksum": "sha256:2809ad51c6eb6c9a54d64cccc2cd948f6fd4207f32b4493b3f4a9bd0886c894b" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-5.3.28-39.el8.aarch64.rpm", + "checksum": "sha256:84e7102978d76d80aa40c43efcc71c1e54e819195132df921a8c13cec54328da" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libdb-utils-5.3.28-39.el8.aarch64.rpm", + "checksum": "sha256:621e96e91103f2f701e4ac3b8b8b6ef9aab4db5ab8fb3e141eb02e3f328aed79" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libfdisk-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:d6aa17908468b5e2095526664fce6627dec7a02c26625339c14b9278cc39d4a6" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libffi-3.1-22.el8.aarch64.rpm", + "checksum": "sha256:4a40a1538c8a488f32476f96d2461c3b792eb0cf5acb998e397d8a9cef8e5461" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcc-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:3b607f0dbedecb25239e22c1f553c8d70db9d2206a877fa07567fa1a49e233d7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgcrypt-1.8.5-4.el8.aarch64.rpm", + "checksum": "sha256:8498846918c7bc7a20553340434cfbfb0d19185adcd0ff52866c6506ab8f747d" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgomp-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:53fa2fd6a138d00c697b827a77bcc25ec498b1d49bb04ef80594e81ccabc165d" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libgpg-error-1.31-1.el8.aarch64.rpm", + "checksum": "sha256:5a05f1126ed38f752af247dcdf7c958e738b935b8b6d942fd42f423768f05255" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libidn2-2.2.0-1.el8.aarch64.rpm", + "checksum": "sha256:2dc8e2f52451d1a11b16bbb389a24c58b61a1ba804ee777f9d06dbe4e1fcf6e5" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-1.2.0-2.el8.aarch64.rpm", + "checksum": "sha256:83301ca502322e0634173460bf8fa35572c36ab8cc2e6e600bf9980f845fc857" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.aarch64.rpm", + "checksum": "sha256:f07b1f40ebb1fbe5c24e68a38b5f768a21e2ec2254d4bd8ff61fb0bde72f64ce" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmetalink-0.1.3-7.el8.aarch64.rpm", + "checksum": "sha256:fa80a7e82e231dc77b3e44edd2cbf5b3d1657e009e59f15bbe8d50a4290b7c82" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libmount-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:26b14d8f226962ce712bbccfb245843759e835a24a139eacae86d680043a85a7" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.aarch64.rpm", + "checksum": "sha256:4874e739ed37bc6a5bfdb6069d4620e5f7efe01d60eb9fd2550c550167c99990" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.aarch64.rpm", + "checksum": "sha256:471663fca7e3f609834368d69d8f1f469cfc0d3f3e95dc2b79381722d0368edc" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpcap-1.9.1-4.el8.aarch64.rpm", + "checksum": "sha256:435a2be84a2b38372965dbd60ffed0ed38a616b8100859787a8bb3b19d9fc4d9" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpsl-0.20.2-6.el8.aarch64.rpm", + "checksum": "sha256:6557d001315e85ac123b1378c5aafb81428e2383debcacf3f91c55476cfc48eb" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libpwquality-1.4.0-9.el8.aarch64.rpm", + "checksum": "sha256:d6ab7c8790cd6c9a137d908d840c51c547e950d25f6ab8af3c9ad3899ff6c044" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libseccomp-2.4.3-1.el8.aarch64.rpm", + "checksum": "sha256:cc7e751a62f9a28b82df0bce0ecfb050364b8688ef69473f1910909e44c5eb98" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libselinux-utils-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:c82ca1c0ef4b89f75e8e7edbbae4f3eeb2720a4abd56b0927928cff2d9721186" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsemanage-2.9-3.el8.aarch64.rpm", + "checksum": "sha256:140146ebcbadd9b0f2aa5c2fcde5c93888f2d84ce61a2a4cf148ef435d1ba410" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsepol-2.9-1.el8.aarch64.rpm", + "checksum": "sha256:c8a28b4587888435c51f6d1ce42f48b08fb0256e4029ea569e9a02adcb82c85a" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsigsegv-2.11-5.el8.aarch64.rpm", + "checksum": "sha256:bf267d9571cf568375e261d593236750f400ac536c1c818513106482ebc3fb10" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libsmartcols-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:f35c0da3cff05ded33c0cb4f202dbb52a5caabec8b1897d5057df83c284d62f1" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-0.9.4-2.el8.aarch64.rpm", + "checksum": "sha256:3ee6a4f61935c2f0698ad2c4834a5864920a1e48d55c7800da7c382249895e39" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libstdc++-8.3.1-5.1.el8.aarch64.rpm", + "checksum": "sha256:f4e63e7eedc0266a575eb6107f41c5f20ca0505a0e80145c21b9741674d5c0b5" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtasn1-4.13-3.el8.aarch64.rpm", + "checksum": "sha256:ed28e1e31109e27ce1c676914364c9f1dd46b71d00cb4cf13931f0fec6cf6978" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libtirpc-1.1.4-4.el8.aarch64.rpm", + "checksum": "sha256:481bbd6d73415d437a73eee7977ec370299acdac44b215a026652debba31783d" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libunistring-0.9.9-3.el8.aarch64.rpm", + "checksum": "sha256:da4b9bfad26d559485ade669556512acfe93ba23d204f2556bac82c09401b4e7" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libutempter-1.1.6-14.el8.aarch64.rpm", + "checksum": "sha256:ad07261ff4f478be9511f7ee749bfbe8b2ba8e28696c2f561caa20e35c535134" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libuuid-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:95de1777f7e8a734445c5d45e0b77da8b6c41a9b504582ed266d852c677a936b" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libverto-0.3.0-5.el8.aarch64.rpm", + "checksum": "sha256:532d46a4c0e68bd45eabc3e2ba6d570880344044e1034f5f347b37c470d0dced" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxcrypt-4.1.1-4.el8.aarch64.rpm", + "checksum": "sha256:876ffb285aaeddb2c18ae32527bd4ee202710bd8e18d5b410af22937646dcdec" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libxml2-2.9.7-8.el8.aarch64.rpm", + "checksum": "sha256:fb56b7a416e12da0782ae8ba7396bc03a2f8844c2efcb5df3f8b9e74eb8b8059" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/libzstd-1.4.4-1.el8.aarch64.rpm", + "checksum": "sha256:19d1de27d2f62b4a55735233807f70a1e8ff7551fed97ee8650dbd09c1ef50ea" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lua-libs-5.3.4-11.el8.aarch64.rpm", + "checksum": "sha256:bc0f9bd34ac6a01dd7272b87e1b7a33045ff8c6793cac02fa639dfc9341e8215" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/lz4-libs-1.8.3-2.el8.aarch64.rpm", + "checksum": "sha256:64ac5cb6fd3da1610812795ce17e09648d89c87513d6284b852a3455b0831d3a" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/mpfr-3.1.6-1.el8.aarch64.rpm", + "checksum": "sha256:320ced09e242f09047f4fab0a7f66aba6de2e42583f6a2e164eadcc1ffd0b915" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-6.1-7.20180224.el8.aarch64.rpm", + "checksum": "sha256:8ac1003d722e3d5f383c9b970bf6dfbc905007a624abadb63e520d7a93993747" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/ncurses-libs-6.1-7.20180224.el8.aarch64.rpm", + "checksum": "sha256:f99f5edde9ad4574b84264c467420c910b31f78683fbf1b63d106a7e6c9d64a3" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/nettle-3.4.1-2.el8.aarch64.rpm", + "checksum": "sha256:e2c4ac0f7abf75cbcc7a6fb35412820c267f1a8ce614f41b60d901918c4616d5" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openldap-2.4.46-15.el8.aarch64.rpm", + "checksum": "sha256:cfa188d39884fd4ba36d27e8fb25aed9dbd26efccffbfd01a24c2c580fdb96f1" + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-8.0p1-5.el8.aarch64.rpm", + "checksum": "sha256:af98260ff2c263c9cefcb96d16d200941c1873cda9868b57df51b034066940fe" + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssh-server-8.0p1-5.el8.aarch64.rpm", + "checksum": "sha256:b35f92dddd2cd73f7f8d8595ebb197a1c67a214ec2acf960ac673a014f2d9b90" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-1.1.1g-9.el8.aarch64.rpm", + "checksum": "sha256:3ef63ecbebf844bcf682c9482dc0ddd158c955b0f066b62eb9575bb9a9642db5" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-libs-1.1.1g-9.el8.aarch64.rpm", + "checksum": "sha256:448d3ff44e7f32f3b33e891180e248dc1bcd4d410f68015a8b0c30dc7c385aca" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/openssl-pkcs11-0.4.10-2.el8.aarch64.rpm", + "checksum": "sha256:290c83afcd2b0a2b17aab95cf72a85da5f8b9f9a9862857c919a0f43e3fce70e" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/os-prober-1.74-6.el8.aarch64.rpm", + "checksum": "sha256:43ab42c8a58267936a89da99e37d3b9fc56489e958060f600ba047445ca44ee3" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-0.23.14-5.el8_0.aarch64.rpm", + "checksum": "sha256:651f38873d3356ec4efb27d04658541080d11cf1ece6335a07db1ca089fa7da3" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.aarch64.rpm", + "checksum": "sha256:ec40be9e0b2bb03f7b057a7a9342ffbd86129d58828fb310f445bc506261eb0e" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pam-1.3.1-11.el8.aarch64.rpm", + "checksum": "sha256:04c031a07bde4360484a0180e832036d3ac45a95c4839e54d7a02423df5485ef" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre-8.42-4.el8.aarch64.rpm", + "checksum": "sha256:fea4eb54fe59451b76fb40b9bd15ff41f0f51bb7371f94b2f5df572ef917d037" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pcre2-10.32-2.el8.aarch64.rpm", + "checksum": "sha256:ce8c92fa2bef1770f44992db24e1cb8cc850feab03a74cf0ebf741ecb0d160ea" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/pigz-2.4-4.el8.aarch64.rpm", + "checksum": "sha256:f847957437e7f24844930c4a3ff64c5f7877f083553f48eeadca3c5f5e5c728e" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-3.6.8-30.el8.aarch64.rpm", + "checksum": "sha256:68593fad4413255772bd08ed7f8b578332f0f53e002c8c7473d90c966a87131b" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/policycoreutils-2.9-9.el8.aarch64.rpm", + "checksum": "sha256:b90ce065d5ea98845733ff06e47d385937f6293ebddf52144c80f5fe1f296307" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/popt-1.16-14.el8.aarch64.rpm", + "checksum": "sha256:4e4923f05d0032263d570075b9b832b9fc3550cd8f82f9a6b0b9b25061726110" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/procps-ng-3.3.15-2.el8.aarch64.rpm", + "checksum": "sha256:d890d028f59e2553730fad3dbea0e1a245c92c24836513fa2281194b1c90b53a" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-libs-3.6.8-30.el8.aarch64.rpm", + "checksum": "sha256:65b8d755ff01dfefa423d2f0bd6fd54cfc4c580da63510e19cf178abb6e26172" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/readline-7.0-10.el8.aarch64.rpm", + "checksum": "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-8.3-0.2.el8.aarch64.rpm", + "checksum": "sha256:a6292dd846bc471b22409fc95a5e09c88bcb6176251dc5cc11f4b14a73ddda11" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/redhat-release-eula-8.3-0.2.el8.aarch64.rpm", + "checksum": "sha256:784d385116891056b618722c933d43c5b395b92fa82e5bc797081317ec6a82ba" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:47b483c0f556c56f0b1f468603c57834864902ae5a849a18c8a0ca5f76d66c86" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-libs-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:d3fb5a473c44cd8ae6b94d6bf3fc552553d8f4ef28eed439658ea38990ab9db5" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.aarch64.rpm", + "checksum": "sha256:0a885c6dc6abd969b828bf2fd7063ee884e6d058eaf405b02f3dd6efb6c66bac" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sed-4.5-2.el8.aarch64.rpm", + "checksum": "sha256:125c92f23d87b905c21e9f7669f0ec6e41428ab63c8c13f63db8980f292797d5" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shadow-utils-4.6-10.el8.aarch64.rpm", + "checksum": "sha256:a840b8193ce9b1b72e3783b9a9bb2ec91947ba3b6f7ac973ae8e0e20a7059117" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/shared-mime-info-1.9-3.el8.aarch64.rpm", + "checksum": "sha256:19cd894b4154d1a8521c6884cfd2a6eaf1f498b7dec5cc31408f8535b9098f2a" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/sqlite-libs-3.26.0-10.el8.aarch64.rpm", + "checksum": "sha256:207e6396488c1db18fb7b1f2b9952f48c2625f042c5f6a901d41974ce376b0e0" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-239-36.el8.aarch64.rpm", + "checksum": "sha256:d4467ba499fe1ddd82746ad00d7e86bea59c4827fe1ff8c05132bad1f93ddb7f" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-libs-239-36.el8.aarch64.rpm", + "checksum": "sha256:800c9a0d718c641ceee26c8f625b2dcd79a33963e9e7a11930678dc99582a2d0" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-pam-239-36.el8.aarch64.rpm", + "checksum": "sha256:986683a0edb615a5d45a9c1b0ee3d27f8032c2667cad58d24526085e41010992" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/systemd-udev-239-36.el8.aarch64.rpm", + "checksum": "sha256:3fe7c10c144c8fffc00d144317a2bf8029bd9d048432bccfc352dfc6f0995680" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-0.3.14-4.el8.aarch64.rpm", + "checksum": "sha256:d695df94220c2ef990e502123b3bd8ede8fcfb4f738346dd98d999559b01b6b3" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/trousers-lib-0.3.14-4.el8.aarch64.rpm", + "checksum": "sha256:fb263177eee60c26b7acaa76cb640c3d7ab6928e73c8af80b2111a247bd61ece" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/util-linux-2.32.1-24.el8.aarch64.rpm", + "checksum": "sha256:83e470505f558f8cf8414a7fc8fb0d1bc4b16ed15d05ccf7e46332b04d1a0d85" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/which-2.21-12.el8.aarch64.rpm", + "checksum": "sha256:0f32d23a6b2b15603d710b0317238ef8dde3de61eda96713e21d86c9fc7a98ed" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-5.2.4-3.el8.aarch64.rpm", + "checksum": "sha256:e426534c59b3a35068877d324dd34d643ad7c84d2c406b2e6502ac6c2a367d39" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/xz-libs-5.2.4-3.el8.aarch64.rpm", + "checksum": "sha256:094eff70081085f87a7ac0dedafa851ad8ac8e03f9f328636df4a0f8301d0e87" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os/Packages/zlib-1.2.11-15.el8.aarch64.rpm", + "checksum": "sha256:cf9a0bbaa7bd075d2af532586ee93ab92b96d9859f53a57f85cd7e0309f8fff6" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/libxkbcommon-0.9.1-1.el8.aarch64.rpm", + "checksum": "sha256:a07f96031fbe9507a8d6bb0e14cf0783bc615552e4cfb75131672072f5729de8" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "aarch64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/memstrack-0.1.8-1.el8.aarch64.rpm", + "checksum": "sha256:aa1a6a85493590efb9c0235c15d6a05e8b119f385dc13b3e3abd2315f8c4a6e0" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "checksums": { + "0": "sha256:16f28f379d3f297d9b559a5fafe972d5073fc9efbb5fa720068c56f378b3fafc", + "1": "sha256:556df33d4f50aa82d8e620b5bd509631bddb7376019640039a183fc3efac148b" + } + }, + "image-info": { + "bootmenu": [], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:999:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "redhat:x:1000:", + "render:x:998:", + "root:x:0:", + "ssh_keys:x:996:", + "sshd:x:74:", + "sys:x:3:", + "systemd-coredump:x:997:", + "systemd-journal:x:190:", + "systemd-resolve:x:193:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "os-release": { + "ANSI_COLOR": "0;31", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:redhat:enterprise_linux:8.3:beta", + "HOME_URL": "https://www.redhat.com/", + "ID": "rhel", + "ID_LIKE": "fedora", + "NAME": "Red Hat Enterprise Linux", + "PLATFORM_ID": "platform:el8", + "PRETTY_NAME": "Red Hat Enterprise Linux 8.3 Beta (Ootpa)", + "REDHAT_BUGZILLA_PRODUCT": "Red Hat Enterprise Linux 8", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "8.3", + "REDHAT_SUPPORT_PRODUCT": "Red Hat Enterprise Linux", + "REDHAT_SUPPORT_PRODUCT_VERSION": "8.3 Beta", + "VERSION": "8.3 (Ootpa)", + "VERSION_ID": "8.3" + }, + "packages": [ + "acl-2.2.53-1.el8.aarch64", + "audit-libs-3.0-0.17.20191104git1c2f876.el8.aarch64", + "basesystem-11-5.el8.noarch", + "bash-4.4.19-12.el8.aarch64", + "brotli-1.0.6-2.el8.aarch64", + "bzip2-libs-1.0.6-26.el8.aarch64", + "ca-certificates-2019.2.32-80.0.el8_1.noarch", + "chkconfig-1.13-2.el8.aarch64", + "coreutils-8.30-8.el8.aarch64", + "coreutils-common-8.30-8.el8.aarch64", + "cpio-2.12-8.el8.aarch64", + "cracklib-2.9.6-15.el8.aarch64", + "cracklib-dicts-2.9.6-15.el8.aarch64", + "crypto-policies-20200610-1.git0ac8b1f.el8.noarch", + "crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch", + "cryptsetup-libs-2.3.3-1.el8.aarch64", + "curl-7.61.1-12.el8.aarch64", + "cyrus-sasl-lib-2.1.27-5.el8.aarch64", + "dbus-1.12.8-11.el8.aarch64", + "dbus-common-1.12.8-11.el8.noarch", + "dbus-daemon-1.12.8-11.el8.aarch64", + "dbus-libs-1.12.8-11.el8.aarch64", + "dbus-tools-1.12.8-11.el8.aarch64", + "device-mapper-1.02.171-3.el8.aarch64", + "device-mapper-libs-1.02.171-3.el8.aarch64", + "diffutils-3.6-6.el8.aarch64", + "dracut-049-89.git20200625.el8.aarch64", + "elfutils-debuginfod-client-0.180-1.el8.aarch64", + "elfutils-default-yama-scope-0.180-1.el8.noarch", + "elfutils-libelf-0.180-1.el8.aarch64", + "elfutils-libs-0.180-1.el8.aarch64", + "expat-2.2.5-4.el8.aarch64", + "file-5.33-16.el8.aarch64", + "file-libs-5.33-16.el8.aarch64", + "filesystem-3.8-3.el8.aarch64", + "findutils-4.6.0-20.el8.aarch64", + "gawk-4.2.1-1.el8.aarch64", + "gdbm-1.18-1.el8.aarch64", + "gdbm-libs-1.18-1.el8.aarch64", + "gettext-0.19.8.1-17.el8.aarch64", + "gettext-libs-0.19.8.1-17.el8.aarch64", + "glib2-2.56.4-8.el8.aarch64", + "glibc-2.28-127.el8.aarch64", + "glibc-all-langpacks-2.28-127.el8.aarch64", + "glibc-common-2.28-127.el8.aarch64", + "gmp-6.1.2-10.el8.aarch64", + "gnutls-3.6.14-3.el8.aarch64", + "gpg-pubkey-d4082792-5b32db75", + "gpg-pubkey-fd431d51-4ae0493b", + "grep-3.1-6.el8.aarch64", + "grub2-common-2.02-84.el8.noarch", + "grub2-tools-2.02-84.el8.aarch64", + "grub2-tools-minimal-2.02-84.el8.aarch64", + "grubby-8.40-41.el8.aarch64", + "gzip-1.9-9.el8.aarch64", + "hardlink-1.3-6.el8.aarch64", + "info-6.5-6.el8.aarch64", + "iptables-libs-1.8.4-14.el8.aarch64", + "json-c-0.13.1-0.2.el8.aarch64", + "kbd-2.0.4-10.el8.aarch64", + "kbd-legacy-2.0.4-10.el8.noarch", + "kbd-misc-2.0.4-10.el8.noarch", + "keyutils-libs-1.5.10-6.el8.aarch64", + "kmod-25-16.el8.aarch64", + "kmod-libs-25-16.el8.aarch64", + "kpartx-0.8.4-2.el8.aarch64", + "krb5-libs-1.18.2-3.el8.aarch64", + "libacl-2.2.53-1.el8.aarch64", + "libarchive-3.3.2-9.el8.aarch64", + "libattr-2.4.48-3.el8.aarch64", + "libblkid-2.32.1-24.el8.aarch64", + "libcap-2.26-4.el8.aarch64", + "libcap-ng-0.7.9-5.el8.aarch64", + "libcom_err-1.45.6-1.el8.aarch64", + "libcroco-0.6.12-4.el8.aarch64", + "libcurl-7.61.1-12.el8.aarch64", + "libdb-5.3.28-39.el8.aarch64", + "libdb-utils-5.3.28-39.el8.aarch64", + "libfdisk-2.32.1-24.el8.aarch64", + "libffi-3.1-22.el8.aarch64", + "libgcc-8.3.1-5.1.el8.aarch64", + "libgcrypt-1.8.5-4.el8.aarch64", + "libgomp-8.3.1-5.1.el8.aarch64", + "libgpg-error-1.31-1.el8.aarch64", + "libidn2-2.2.0-1.el8.aarch64", + "libkcapi-1.2.0-2.el8.aarch64", + "libkcapi-hmaccalc-1.2.0-2.el8.aarch64", + "libmetalink-0.1.3-7.el8.aarch64", + "libmount-2.32.1-24.el8.aarch64", + "libnghttp2-1.33.0-3.el8_2.1.aarch64", + "libnsl2-1.2.0-2.20180605git4a062cf.el8.aarch64", + "libpcap-1.9.1-4.el8.aarch64", + "libpsl-0.20.2-6.el8.aarch64", + "libpwquality-1.4.0-9.el8.aarch64", + "libseccomp-2.4.3-1.el8.aarch64", + "libselinux-2.9-3.el8.aarch64", + "libselinux-utils-2.9-3.el8.aarch64", + "libsemanage-2.9-3.el8.aarch64", + "libsepol-2.9-1.el8.aarch64", + "libsigsegv-2.11-5.el8.aarch64", + "libsmartcols-2.32.1-24.el8.aarch64", + "libssh-0.9.4-2.el8.aarch64", + "libssh-config-0.9.4-2.el8.noarch", + "libstdc++-8.3.1-5.1.el8.aarch64", + "libtasn1-4.13-3.el8.aarch64", + "libtirpc-1.1.4-4.el8.aarch64", + "libunistring-0.9.9-3.el8.aarch64", + "libutempter-1.1.6-14.el8.aarch64", + "libuuid-2.32.1-24.el8.aarch64", + "libverto-0.3.0-5.el8.aarch64", + "libxcrypt-4.1.1-4.el8.aarch64", + "libxkbcommon-0.9.1-1.el8.aarch64", + "libxml2-2.9.7-8.el8.aarch64", + "libzstd-1.4.4-1.el8.aarch64", + "lua-libs-5.3.4-11.el8.aarch64", + "lz4-libs-1.8.3-2.el8.aarch64", + "memstrack-0.1.8-1.el8.aarch64", + "mpfr-3.1.6-1.el8.aarch64", + "ncurses-6.1-7.20180224.el8.aarch64", + "ncurses-base-6.1-7.20180224.el8.noarch", + "ncurses-libs-6.1-7.20180224.el8.aarch64", + "nettle-3.4.1-2.el8.aarch64", + "openldap-2.4.46-15.el8.aarch64", + "openssh-8.0p1-5.el8.aarch64", + "openssh-server-8.0p1-5.el8.aarch64", + "openssl-1.1.1g-9.el8.aarch64", + "openssl-libs-1.1.1g-9.el8.aarch64", + "openssl-pkcs11-0.4.10-2.el8.aarch64", + "os-prober-1.74-6.el8.aarch64", + "p11-kit-0.23.14-5.el8_0.aarch64", + "p11-kit-trust-0.23.14-5.el8_0.aarch64", + "pam-1.3.1-11.el8.aarch64", + "pcre-8.42-4.el8.aarch64", + "pcre2-10.32-2.el8.aarch64", + "pigz-2.4-4.el8.aarch64", + "platform-python-3.6.8-30.el8.aarch64", + "platform-python-pip-9.0.3-17.el8.noarch", + "platform-python-setuptools-39.2.0-6.el8.noarch", + "policycoreutils-2.9-9.el8.aarch64", + "popt-1.16-14.el8.aarch64", + "procps-ng-3.3.15-2.el8.aarch64", + "publicsuffix-list-dafsa-20180723-1.el8.noarch", + "python3-libs-3.6.8-30.el8.aarch64", + "python3-pip-wheel-9.0.3-17.el8.noarch", + "python3-setuptools-wheel-39.2.0-6.el8.noarch", + "readline-7.0-10.el8.aarch64", + "redhat-release-8.3-0.2.el8.aarch64", + "redhat-release-eula-8.3-0.2.el8.aarch64", + "rpm-4.14.3-4.el8.aarch64", + "rpm-libs-4.14.3-4.el8.aarch64", + "rpm-plugin-selinux-4.14.3-4.el8.aarch64", + "sed-4.5-2.el8.aarch64", + "selinux-policy-3.14.3-48.el8.noarch", + "selinux-policy-targeted-3.14.3-48.el8.noarch", + "setup-2.12.2-6.el8.noarch", + "shadow-utils-4.6-10.el8.aarch64", + "shared-mime-info-1.9-3.el8.aarch64", + "sqlite-libs-3.26.0-10.el8.aarch64", + "systemd-239-36.el8.aarch64", + "systemd-libs-239-36.el8.aarch64", + "systemd-pam-239-36.el8.aarch64", + "systemd-udev-239-36.el8.aarch64", + "trousers-0.3.14-4.el8.aarch64", + "trousers-lib-0.3.14-4.el8.aarch64", + "tzdata-2020a-1.el8.noarch", + "util-linux-2.32.1-24.el8.aarch64", + "which-2.21-12.el8.aarch64", + "xkeyboard-config-2.28-1.el8.noarch", + "xz-5.2.4-3.el8.aarch64", + "xz-libs-5.2.4-3.el8.aarch64", + "zlib-1.2.11-15.el8.aarch64" + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "redhat:x:1000:1000::/home/redhat:/bin/bash", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/etc/machine-id": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/proc": ".M.......", + "/sys": ".M.......", + "/usr/bin/newgidmap": "........P", + "/usr/bin/newuidmap": "........P", + "/usr/libexec/openssh/ssh-keysign": "......G..", + "/var/log/lastlog": ".M....G.." + }, + "missing": [ + "/etc/systemd/system/dbus-org.freedesktop.resolve1.service" + ] + }, + "services-disabled": [ + "console-getty.service", + "ctrl-alt-del.target", + "debug-shell.service", + "exit.target", + "fstrim.timer", + "halt.target", + "kexec.target", + "poweroff.target", + "reboot.target", + "remote-cryptsetup.target", + "runlevel0.target", + "runlevel6.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "systemd-resolved.service", + "tcsd.service", + "tmp.mount" + ], + "services-enabled": [ + "autovt@.service", + "getty@.service", + "remote-fs.target", + "selinux-autorelabel-mark.service", + "sshd.service" + ], + "timezone": "UTC" + } +} \ No newline at end of file diff --git a/test/cases/rhel_8-ppc64le-qcow2-boot.json b/test/cases/rhel_8-ppc64le-qcow2-boot.json new file mode 100644 index 0000000..2b2aba3 --- /dev/null +++ b/test/cases/rhel_8-ppc64le-qcow2-boot.json @@ -0,0 +1,10968 @@ +{ + "boot": { + "type": "qemu" + }, + "compose-request": { + "distro": "rhel-8", + "arch": "ppc64le", + "image-type": "qcow2", + "repositories": [ + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + }, + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + } + ], + "filename": "disk.qcow2", + "blueprint": { + "name": "qcow2-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:004d04ca75a6c2b0b33602e3253ec6d1d8cbad9bac8da8e8fc525b1ca2684d08": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sg3_utils-libs-1.44-5.el8.ppc64le.rpm" + }, + "sha256:005d3eb002670604516c7fa58c137c35c80bf6100a2109881ccb8e44cce28777": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-libs-5.26.3-416.el8.ppc64le.rpm" + }, + "sha256:011335bf845f38d1ba40988305f28913873cc6f0d94ed71bd37b69fb221dcfff": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/teamd-1.29-5.el8.ppc64le.rpm" + }, + "sha256:0143da5903a3053bbd62714904db5a7c1aba3b9ff77c97d9126a4479d3047c58": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libzstd-1.4.4-1.el8.ppc64le.rpm" + }, + "sha256:01827bf9d3d6fd52c2f41c880055ef7bbd9a8dae1778c5e90ddd460be2bac5c2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/initscripts-10.00.8-1.el8.ppc64le.rpm" + }, + "sha256:01bcb514e0985596e0d6a88d28dfa296e2b957a4dac219c79e87e2b6db5bedbe": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/cairo-1.15.12-3.el8.ppc64le.rpm" + }, + "sha256:03318129f3b75d57abb1f15adf1ddc26c23fc178432c66b5ffc43e586c948428": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libmount-2.32.1-24.el8.ppc64le.rpm" + }, + "sha256:0396d12973b68a7d16074aa51f75e706c0b7558cd24d32e5573c49a487b2497c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-libcomps-0.1.11-4.el8.ppc64le.rpm" + }, + "sha256:03b2a3f3d38bcbf07b58b7507739590d8eb3867a9b94db92dacb80890f36d440": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/snappy-1.1.7-5.el8.ppc64le.rpm" + }, + "sha256:03e586f573bb9a8a463215d194a6b2bceff16d67af096883df5bbcda0ca55076": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cracklib-2.9.6-15.el8.ppc64le.rpm" + }, + "sha256:04ad0e61cc39b28f98d043b7c6da75098118431b82eb9afbb809b128409a8c3d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gsettings-desktop-schemas-3.32.0-5.el8.ppc64le.rpm" + }, + "sha256:05421657115297a907645ca4536e8d81e82da116f20053541f8c1e71d62977a6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-tools-minimal-2.02-84.el8.ppc64le.rpm" + }, + "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/cloud-init-19.4-7.el8.noarch.rpm" + }, + "sha256:075bb18685d13a0a2d628d665ab5585c7e80c65edf3efc72b5c27b6046ba13b2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dnf-plugin-subscription-manager-1.27.9-1.el8.ppc64le.rpm" + }, + "sha256:0764057bdd0dc7d7db74195221cd3ec1eee9a031355af5be7ca3726116fc16c7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libproxy-0.4.15-5.2.el8.ppc64le.rpm" + }, + "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-prettytable-0.7.2-14.el8.noarch.rpm" + }, + "sha256:07eb3b2b952ecfe7fb8ee2e57b18435be13487a8b05b7a8094fda101ec75fec6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/mozjs60-60.9.0-4.el8.ppc64le.rpm" + }, + "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-jinja2-2.10.1-2.el8_0.noarch.rpm" + }, + "sha256:08af4dc49ee9fbef7b2b6320da7809a952fa5d4bb907e546aa2a74827dcd7390": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/librhsm-0.0.3-3.el8.ppc64le.rpm" + }, + "sha256:090273fb5feb61c91755b41b0ade0fcce8ac222ed0f48c4a63f0f0253b1c12c2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/hostname-3.20-6.el8.ppc64le.rpm" + }, + "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:0970bde39d7cc1dfebda51e4359f63821fe8dd573d46253fc471f8466c79ac82": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/os-prober-1.74-6.el8.ppc64le.rpm" + }, + "sha256:099495aa4c0d7c6a8e92ebd79496941c5a7291d806ce52f0983ca5a0993db0ad": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libuser-0.62-23.el8.ppc64le.rpm" + }, + "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dnf-plugins-core-4.0.17-2.el8.noarch.rpm" + }, + "sha256:0bc3401315ece79b243e066b97b462164ddb56f6728b8f562126d0b28f4a2777": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-syspurpose-1.27.9-1.el8.ppc64le.rpm" + }, + "sha256:0c706e235cd737512024bbc99a6fcbca41a9898c13a4ae11797514ac99a16839": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/info-6.5-6.el8.ppc64le.rpm" + }, + "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm" + }, + "sha256:0cf5f171b1eb6ebe859a767792abf8a22fe2f8d1f701960ebf75f045089fde8e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-perf-4.18.0-221.el8.ppc64le.rpm" + }, + "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/linux-firmware-20200619-99.git3890db36.el8.noarch.rpm" + }, + "sha256:0de547c2ed3a69512cc6b87f38528b0d8157b0c17d02a6b167bb3804eb2dbf41": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libdhash-0.5.0-39.el8.ppc64le.rpm" + }, + "sha256:0ec21164642fdc03a56ebcdeb4691ee5db63f8da78a2762bb5b8d86398ca432f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/bc-1.07.1-5.el8.ppc64le.rpm" + }, + "sha256:0ecb10a5141fd74ad9165fef9dd7d9485a34ea1b10605a9d4b61eefe60b767d9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssl-pkcs11-0.4.10-2.el8.ppc64le.rpm" + }, + "sha256:1130c50d23d464653fbca78aa597b1c65d22c9163c70cf3011a9a116af76bbca": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openldap-2.4.46-15.el8.ppc64le.rpm" + }, + "sha256:120917580d51db51cb32edabbf3929dfcc044bf7a3016007ba8db59bc915f909": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-markupsafe-0.23-19.el8.ppc64le.rpm" + }, + "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm" + }, + "sha256:12b368c93ec9e4282ee1aad905e336166aa6dd2519a9f53a1adc11b6fbc2095c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dracut-049-89.git20200625.el8.ppc64le.rpm" + }, + "sha256:13f54c6408ac37c8b4a24fb22af1a719d05d86206d1d4f979d71fad96ab7f319": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cracklib-dicts-2.9.6-15.el8.ppc64le.rpm" + }, + "sha256:14ac9ec62c0ac314d555b27aa1d8283dab7dbc5c9271c692f8008e45125f7efc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-setools-4.3.0-1.el8.ppc64le.rpm" + }, + "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-common-2.02-84.el8.noarch.rpm" + }, + "sha256:1594afba86593ec614299ef6af255755a98ea55a34a72a22fdc9d80a040be39d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/abattis-cantarell-fonts-0.0.25-4.el8.noarch.rpm" + }, + "sha256:16294bc45d609de6ce07b660fadc851022e43d00a13f3c98c1f45064abf591d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/redhat-release-8.3-0.2.el8.ppc64le.rpm" + }, + "sha256:16744c34b4e5d937388ea1169160dff7ac02692884d90c87b730ba0f9964476d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kmod-25-16.el8.ppc64le.rpm" + }, + "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/crontabs-1.11-16.20150630git.el8.noarch.rpm" + }, + "sha256:16923f95942b0607ceeceedc30bbeea60a224c9da6d70ac8640b8a19915bfda1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libini_config-1.3.1-39.el8.ppc64le.rpm" + }, + "sha256:16ba1aa8c5db466e4288412bfedf01be75918b4cece328bdf8ebe590a845d490": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grubby-8.40-41.el8.ppc64le.rpm" + }, + "sha256:17d887ffe27ba3dfd324bae27b0309c13b0b8430597fb65cb4b377416cc21cf3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/fuse-libs-2.9.7-12.el8.ppc64le.rpm" + }, + "sha256:183ae7a707951036dd77805d75aae1dbb055ca52d8fecdc6ef21d5e1518fca4d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sed-4.5-2.el8.ppc64le.rpm" + }, + "sha256:189718794d3954cb4643af95c1ed73adf11db3a52883c632a28dfe865b969112": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/PackageKit-1.1.12-6.el8.ppc64le.rpm" + }, + "sha256:18b66eb926d6554fdfa6c6464c301d906d63ec69f54ac318cf0a5e7cccf43d2e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libusbx-1.0.23-3.el8.ppc64le.rpm" + }, + "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm" + }, + "sha256:1a6f0a2a3a9e6a1df7917d95918f63353796c8a11c6d73dc4623c968dc612750": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/authselect-libs-1.2.1-2.el8.ppc64le.rpm" + }, + "sha256:1a92ddb2b7caa477d02eadcd97b1f4fb124359609dc827dfedb7de0976ebf824": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgcc-8.3.1-5.1.el8.ppc64le.rpm" + }, + "sha256:1aad74f1f0c753f35f92492cf969ec7f951c227f88d9192b7dfcc83ef73b35d5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ppc64-diag-2.7.6-2.el8.ppc64le.rpm" + }, + "sha256:1b9ee3cff65d0603f4495bdaf0ecb7a316c88943232c8dd78591083cc313a163": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/irqbalance-1.4.0-4.el8.ppc64le.rpm" + }, + "sha256:1cca144223075fbb7d43bdc42d42d273c73920ec3d381b0be8e9759055f3fcc2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpipeline-1.5.0-2.el8.ppc64le.rpm" + }, + "sha256:1d084e85f865a35f39067256c83f17a05632b531d9b6c5afb8cdecca1e594d62": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/bzip2-libs-1.0.6-26.el8.ppc64le.rpm" + }, + "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/tzdata-2020a-1.el8.noarch.rpm" + }, + "sha256:1e9348cb9aea6b2dfd9dd9aad5e86eb3f01ef399465c9b262689b430f4f5595a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rng-tools-6.8-3.el8.ppc64le.rpm" + }, + "sha256:1ea7838dd4ae4147f0888b6e3613bd4b86fb9a1293d0e192c61aa9ff6fb9ebcb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.ppc64le.rpm" + }, + "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm" + }, + "sha256:202cfa88a6b2f1ec6a0bc0546f578c1ca6b5b6fcfeaf3e1228beead14d8bf758": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cockpit-system-222.1-1.el8.noarch.rpm" + }, + "sha256:2034236aa3ea2de19c9d9b717b83515a7a2e82685e8963d03fbb19973b20c249": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gawk-4.2.1-1.el8.ppc64le.rpm" + }, + "sha256:2081809fd42c6cefcf677362a825c38b166f04df8edf865d5d6404348179e536": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/tar-1.30-5.el8.ppc64le.rpm" + }, + "sha256:20a994752f44f7f2c1c3df9850b5381be5b641c0ee913a80a794ca6c49ef7efb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/curl-7.61.1-12.el8.ppc64le.rpm" + }, + "sha256:20bf63f43afe093c6293839ca1fec23eae2973666a36d4fcdb58e09ead28567f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/numactl-libs-2.0.12-11.el8.ppc64le.rpm" + }, + "sha256:21a8001b6092b823bf67d78f439f02e6d6f3a5403c2e8b346eb404c31567c5cb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libdaemon-0.14-15.el8.ppc64le.rpm" + }, + "sha256:21b1497d132a52c93129700d58c44ba8c36af8da1bbd23fb408c00c3117c1012": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Pod-Escapes-1.07-395.el8.noarch.rpm" + }, + "sha256:21d0f9e7ad964facd218351d15850c75335382fdfc429e96d58f1461d1942f22": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/subscription-manager-rhsm-certificates-1.27.9-1.el8.ppc64le.rpm" + }, + "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:238f8f86020dbc6994f1cc5960412ae2337f3a2410bbfee39c3ddc5ab603f05b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/virt-what-1.18-6.el8.ppc64le.rpm" + }, + "sha256:23b438c52f920e7d3870031673412e81e1edc12c427e64e204ba6620df4401b7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libmodulemd-2.9.4-2.el8.ppc64le.rpm" + }, + "sha256:23e7003ecaf5a03793b299ab5e737ef833657e4dddce3adc5ac261eb946132fc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/qemu-guest-agent-4.2.0-29.module+el8.3.0+7212+401047e6.ppc64le.rpm" + }, + "sha256:23ec415c270bb2b87d6b09d755771c8fd779d0b85892888b12d38a00963e6785": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/polkit-libs-0.115-11.el8.ppc64le.rpm" + }, + "sha256:2402279a7bdd1e6d200e5dd4e4cb87a90a8c3c4dc371c679537ca8d32ede360e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-audit-3.0-0.17.20191104git1c2f876.el8.ppc64le.rpm" + }, + "sha256:241a563df5ae3b3b49d45cbf9e67b6932b8345b3fbb40029dbb3b0834cf3db16": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/which-2.21-12.el8.ppc64le.rpm" + }, + "sha256:24d4b4ca9d967a535037e512808e9eb8a325268bb995a59691ef3d2da8f37d45": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libndp-1.7-3.el8.ppc64le.rpm" + }, + "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/tuned-2.14.0-2.el8.noarch.rpm" + }, + "sha256:25ff1ab94430493bde65da6a800bb2638edc64dca38971eba2c798475cc18b97": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Text-ParseWords-3.30-395.el8.noarch.rpm" + }, + "sha256:261aca60621e3185d35b5d8b59af8cf938cbf9b26a686389b9e81544c8ff5c96": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/rsyslog-8.1911.0-6.el8.ppc64le.rpm" + }, + "sha256:278dffe93fc19fd1613a9ab8d61c87a755e68120163d5a1352368b68f3880074": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/librepo-1.12.0-1.el8.ppc64le.rpm" + }, + "sha256:2976f2c007ac981a70e414960cd7426f446ebc8a0bf8feae7a6ece06c63ffefb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Getopt-Long-2.50-4.el8.noarch.rpm" + }, + "sha256:299078646f29228e7f497925598b233024996dfaccaa96dcf62c1d14e30a7735": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/e2fsprogs-libs-1.45.6-1.el8.ppc64le.rpm" + }, + "sha256:29a06adbb34836ac0aa4e152db899c8ebc0f9ee6df34c8fc378628283571de2d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/PackageKit-glib-1.1.12-6.el8.ppc64le.rpm" + }, + "sha256:2af56bdac984d2755e44a4bc733df7217c1756aac3007dbca1408a218cc6c2b4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-daemon-1.12.8-11.el8.ppc64le.rpm" + }, + "sha256:2b2e0d9a397d27c7076f05ab309c71ebffdf2c33df95de51c700af181899c87e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/xz-5.2.4-3.el8.ppc64le.rpm" + }, + "sha256:2c07c0dbf321a121be4cfa929f1e7bb91b26febb1b59de9dd98bf18c5f376111": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-librepo-1.12.0-1.el8.ppc64le.rpm" + }, + "sha256:2c1a643202117f9bdf48b11c24b60a01c409f2ccdc43914a89ac980f7d692ae6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcurl-7.61.1-12.el8.ppc64le.rpm" + }, + "sha256:2c27f780afa55ca934fca745848553facd9efdf8132275a13bd25bf24975f3b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/opal-prd-6.6-1.el8.ppc64le.rpm" + }, + "sha256:2c3aeeee40861bf0576cfccb8a1d7fbf5948dd60e1c97d2354b8d4dbe34247e8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-ppc64le-2.02-84.el8.ppc64le.rpm" + }, + "sha256:2cb969d603bd632da8bd2af6cf49f101e26030a5efca3b610a7e81a48ae75222": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sssd-nfs-idmap-2.3.0-2.el8.ppc64le.rpm" + }, + "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-pyOpenSSL-18.0.0-1.el8.noarch.rpm" + }, + "sha256:2ed632face13f21a2f71f8fb3e86f90119bd74712b8c4837646c6442c8e24f53": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/libxcb-1.13.1-1.el8.ppc64le.rpm" + }, + "sha256:2edb7ade3d137c1373e8dcf1f765e62dabd7a86f256f2b8872baf1b4cd4a420b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/device-mapper-libs-1.02.171-3.el8.ppc64le.rpm" + }, + "sha256:2ee0a45ec4832e276ee130d8440cd29de05b7fd3ca335fe4635499a8bcbdfb73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-HTTP-Tiny-0.074-1.el8.noarch.rpm" + }, + "sha256:30b6dfdf98da777eb424fc687f59acf7528110a0a8bdcd8dbbf78b0d74a7b714": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/logrotate-3.14.0-4.el8.ppc64le.rpm" + }, + "sha256:30d4c6c8be50db61b674a16eda95ce19396d68954907b2ad7643922cfacf4326": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pciutils-libs-3.6.4-2.el8.ppc64le.rpm" + }, + "sha256:32fc4d89fa8040aa8a180717305eb2c7a7094ad255cdb66fd7af2254fa89a5c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libassuan-2.5.1-3.el8.ppc64le.rpm" + }, + "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm" + }, + "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-oauthlib-2.1.0-1.el8.noarch.rpm" + }, + "sha256:3459ac9ecad925e511502cff687ceb77f52f391303793f7670794a5c0b040f3d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/setroubleshoot-plugins-3.3.12-1.el8.noarch.rpm" + }, + "sha256:349d5e65aeee405ea53d10c651d541418f11af4bf5f436ab5cba8c07183f405e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libutempter-1.1.6-14.el8.ppc64le.rpm" + }, + "sha256:350d1a6728391907db3ef0ec69b80837d145e39b0cf86a36161432f587dc3308": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gnupg2-2.2.20-2.el8.ppc64le.rpm" + }, + "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-chardet-3.0.4-7.el8.noarch.rpm" + }, + "sha256:35598d36ec3edefc4bae80f0a5b345a254ae686aa913dc92ac04d6855331c037": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/groff-base-1.22.3-18.el8.ppc64le.rpm" + }, + "sha256:36798d9e979c9976ed66e23b3c8bda6250c4e80e411afe55c3942291cb4cb4ce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-constant-1.33-396.el8.noarch.rpm" + }, + "sha256:36ccdb1a1673d3f739a29105edc45c09074ec667cc470051c2d9c52bfa6b78b0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libstdc++-8.3.1-5.1.el8.ppc64le.rpm" + }, + "sha256:37e4f7e854765b98e8dd10986b758631c7ca00942bc53efb4003ee326e1cc834": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/xz-libs-5.2.4-3.el8.ppc64le.rpm" + }, + "sha256:388cc111d2c2cd5da6c024764584e3afba5eeff0c53a41ee19becebf8faea06a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpath_utils-0.2.1-39.el8.ppc64le.rpm" + }, + "sha256:390cd4d0df9ad341f80b740c40c0959b3b0c31cdc3d0dfb415e05af72ada00d4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cronie-anacron-1.5.2-4.el8.ppc64le.rpm" + }, + "sha256:39acf20c2687b0c174c5961f88209b42b689ce866701f78bbb94bd875afd883e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/elfutils-debuginfod-client-0.180-1.el8.ppc64le.rpm" + }, + "sha256:39fec51b4b40aef643f68f41cca660bce59c5fbb360bcedceec04c17cafd17e6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcap-ng-0.7.9-5.el8.ppc64le.rpm" + }, + "sha256:3a29d69c08ff6d48294cd99e4c825d3deb6cd1c87558b9dad020e3f200d683c2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-subscription-manager-rhsm-1.27.9-1.el8.ppc64le.rpm" + }, + "sha256:3a5d1837798f980b89b6d635fe40f118cc871fac7638dcea3539d45e4e9f7985": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/bash-4.4.19-12.el8.ppc64le.rpm" + }, + "sha256:3a65dd5868f303c775f48e7acef810cea2a606aec93496cae36c5e9eb9129650": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/elfutils-libelf-0.180-1.el8.ppc64le.rpm" + }, + "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-configobj-5.0.6-11.el8.noarch.rpm" + }, + "sha256:3ab5aad8b10e5343c08af8c24775334b6111cd50fb9629f21335626057c7dab9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-build-libs-4.14.3-4.el8.ppc64le.rpm" + }, + "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-dnf-plugins-core-4.0.17-2.el8.noarch.rpm" + }, + "sha256:3cf77fdd2b44a842f2dcd2a4cc3bc2bba2e83ea78da1a86f9a45a3890a69cccb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/parted-3.2-38.el8.ppc64le.rpm" + }, + "sha256:3d425b214eeb598d59e4891ee3f5b0c941ff4755790907588309b431c1482195": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libaio-0.3.112-1.el8.ppc64le.rpm" + }, + "sha256:3d541124624e02a289cb2dfcfc20bd02e87b69a85bdbcd1fb3a382c8bf2624c7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sssd-common-2.3.0-2.el8.ppc64le.rpm" + }, + "sha256:3e1b1298205d8e211bc897b761664975851aa1cc480261be14abe1fa51e16aaf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/powerpc-utils-core-1.3.6-11.el8.ppc64le.rpm" + }, + "sha256:3e572b42e5d4a488026eb5242396b43c88e13971e873d2951cd149a96880cf09": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cronie-1.5.2-4.el8.ppc64le.rpm" + }, + "sha256:3e6181163fff4553eecbd8ff42d81424bca1265fdfda0fc03c76b3e2195ae8e9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/iproute-5.3.0-5.el8.ppc64le.rpm" + }, + "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-pyserial-3.1.1-8.el8.noarch.rpm" + }, + "sha256:3ee2ccbfee32f806afec5a5e873423d49c5ba88a3c425b98663ac95be4c62a10": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Encode-2.97-3.el8.ppc64le.rpm" + }, + "sha256:3f16f888f188951fdbff9117c6f30763f68eab0e36595fd12782dc6d298d4c2f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsss_idmap-2.3.0-2.el8.ppc64le.rpm" + }, + "sha256:3f5c97c72cbbe552e9f7183d1f8eb477a3f46647bb513a175a8c158d3eba3dee": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/trousers-lib-0.3.14-4.el8.ppc64le.rpm" + }, + "sha256:4019e427bf69ed70e3a3cdfdcdd6771bcee1484f8e83bb69539a9e6530baddf1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Time-Local-1.280-1.el8.noarch.rpm" + }, + "sha256:40e937791b4b008d86cc82d0bd7564e55fa2b08c092b2a7dab0040876f790022": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/expat-2.2.5-4.el8.ppc64le.rpm" + }, + "sha256:415f392bbba9e8e1c05138aa9a4a6164b9ca015ca991c7ef08f0374c86b3cc34": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/libXrender-0.9.10-7.el8.ppc64le.rpm" + }, + "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dhcp-common-4.3.6-41.el8.noarch.rpm" + }, + "sha256:41c0f3ea7c7c2f21b5ccb0432db2c1b916ae34691a57f0b7bcb5a09dc7d8fafc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Term-Cap-1.17-395.el8.noarch.rpm" + }, + "sha256:42c2ee5aaeb59bf19e80a9b58e4cf7c4977563789c83eaea53d4bb5cf0284fce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-newt-0.52.20-11.el8.ppc64le.rpm" + }, + "sha256:43c96252342f0998041b052f719a3b0f848af845664ea21bb3b72543422f95c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/tcpdump-4.9.3-1.el8.ppc64le.rpm" + }, + "sha256:43f2f6800f07a6ad71790dfab1c424286b9c18fa6fd469ec800671f4ea242001": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/libestr-0.1.10-1.el8.ppc64le.rpm" + }, + "sha256:44d69e72ce307f5ea39148bcf98c60f2f23b305b2f71e4c886c8a0bdc649d7fa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/usermode-1.113-1.el8.ppc64le.rpm" + }, + "sha256:44e0e3afc547cbbff4a3ae8a8788712bf2917ff5050dc6fcf969cf78b71d385e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-MIME-Base64-3.15-396.el8.ppc64le.rpm" + }, + "sha256:4538fb52ec654977ccaf56d0fc26b491f4cdda58e8070f5922165ac77104857c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/npth-1.5-4.el8.ppc64le.rpm" + }, + "sha256:45ba923afec390fcdb3587c7114d3d4b2f509e2df9d6f237b6869a44a4137ade": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-libselinux-2.9-3.el8.ppc64le.rpm" + }, + "sha256:4652cdbf488fe4aa85fd54289f3b4d824fe1b9cdbf30c989cd8124928331803d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/libmaxminddb-1.2.0-10.el8.ppc64le.rpm" + }, + "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm" + }, + "sha256:477fc6eb3aed3d10f9d730b5960cdb4bdd6381c337e8fd3303537a22a558eba4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dhcp-client-4.3.6-41.el8.ppc64le.rpm" + }, + "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm" + }, + "sha256:4811ab95c1d50ef7380e2c5937ae4490f8e28f56cf787c189437d1709e4423fb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-podlators-4.11-1.el8.noarch.rpm" + }, + "sha256:481d6065068ab8fd3bef7fa0539e73ca8ede56ecb652dc3974eb7d2244670aee": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Data-Dumper-2.167-399.el8.ppc64le.rpm" + }, + "sha256:485ef6f1f8b26b7bf4c1ae8ee8ae7bda9ff679aa0fc9e62d1ff990a54e0e559d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsecret-0.18.6-1.el8.ppc64le.rpm" + }, + "sha256:4887b8527e2390441745251ddd5f37aa53acbf3f2a4e7e5a5d45588c9de0cb61": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cockpit-ws-222.1-1.el8.ppc64le.rpm" + }, + "sha256:495c3fc6f15c5daef8686fd01d1f7008bbc72ca9c963da1ae3cf60ffc519f48d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-libs-3.6.8-30.el8.ppc64le.rpm" + }, + "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm" + }, + "sha256:4a44b9e5e7977128528c4108ef55d49e52290c51d376c6ffd177a6b59113fbf6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.ppc64le.rpm" + }, + "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-pyudev-0.21.0-7.el8.noarch.rpm" + }, + "sha256:4b8701e18c79cd39f5501dc5c15081637f3dc86da94b2bd78cbfa022c90c0b96": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-cryptography-2.3-3.el8.ppc64le.rpm" + }, + "sha256:4e4dc28e98b8470dfbb789d784b8bc5afc04dc7295047d2ee16d36ab4dbaba1d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsepol-2.9-1.el8.ppc64le.rpm" + }, + "sha256:4e9b4c5de79533bcf304bd5e034ed22462dfb5531008f4ad578671eb95aeb46d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/keyutils-1.5.10-6.el8.ppc64le.rpm" + }, + "sha256:4f2725db0dc03a8bb729ccf6ced8fc4e8eae995afa7029decb7a7aa81e6eb417": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgcrypt-1.8.5-4.el8.ppc64le.rpm" + }, + "sha256:5009afc9241f592691ce9097fb74dabba84b1d2eaf267a7bea71b33bc7ac3795": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gmp-6.1.2-10.el8.ppc64le.rpm" + }, + "sha256:509b96a92ba84cdd0664dfdb798980162fc4e82bbbc4435e7e3b39b60e8b5c13": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sudo-1.8.29-6.el8.ppc64le.rpm" + }, + "sha256:50f00be9540e2ab1e81f955e9ad33ecbb24ba6538ddccf418ad00ebfeb1fe472": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libevent-2.1.8-5.el8.ppc64le.rpm" + }, + "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm" + }, + "sha256:5246dc8c3bae5d860cb5ca12d787e976c3ca70bc3d023350eabc8a9e88601058": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grep-3.1-6.el8.ppc64le.rpm" + }, + "sha256:530f8aa49c10d80202e2b3e2c2b505dbdcdc2c3b56231d5986b6388da3ffd12b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libnghttp2-1.33.0-3.el8_2.1.ppc64le.rpm" + }, + "sha256:5369eb8f82cff7ef6592fd9b67fc50d2cdd01d2fb1e6879cccb85080842a0bf4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libnl3-3.5.0-1.el8.ppc64le.rpm" + }, + "sha256:537059f8a2598f7b364693aec72f67f1a954c525b381139f736d75edbf19aa12": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-File-Temp-0.230.600-1.el8.noarch.rpm" + }, + "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:54b3552112a26b7ad79db1251bc0e8e0415ac60da299d54700c5bc59760e5be9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.ppc64le.rpm" + }, + "sha256:559de474c1dd617a53585eb4913da24181b4b52a4e579bd91c4fd280f5c7776f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/e2fsprogs-1.45.6-1.el8.ppc64le.rpm" + }, + "sha256:56a66127f50af442a8bbd3183c29d39d4b1825526dd134405ecea82839ccca23": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcomps-0.1.11-4.el8.ppc64le.rpm" + }, + "sha256:56c622aef9afcb91805b40a6afcf90015ff6bce38e1f529a3b9433e5858084e6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/servicelog-1.1.15-1.el8.ppc64le.rpm" + }, + "sha256:56dc429cc3404a69f5d72338303a615fdbb16380688c93a4a7e13ecd773a80f2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/json-c-0.13.1-0.2.el8.ppc64le.rpm" + }, + "sha256:571f71164eee089ef2fabd81368b9127e0cde805ded935cf66645c3e910c88c6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/libX11-1.6.8-3.el8.ppc64le.rpm" + }, + "sha256:5896adabcbefa7b297052fd9687b51a9eefe883c91f71e7be71a9200188757d1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gnupg2-smime-2.2.20-2.el8.ppc64le.rpm" + }, + "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm" + }, + "sha256:58a7c06351efae8f3b1bff3b4832ed02ebc9f1018d6978b1703c6e963f26db98": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libattr-2.4.48-3.el8.ppc64le.rpm" + }, + "sha256:5911745604ab6ecd74e5eac31ad5dd449bc8f7e286ebb21e6865c6bc5400af7f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-pyyaml-3.12-12.el8.ppc64le.rpm" + }, + "sha256:5919c5de67dbc1f44a553cbb4037572c258bb394ff27ca838b2198d05a0c2dad": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.ppc64le.rpm" + }, + "sha256:593d4df5b8de12ed0ec5a0935cb0bd966e27a631aa0806250ba9f67092ad737f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/libX11-common-1.6.8-3.el8.noarch.rpm" + }, + "sha256:595921e0fba0fc75e4017cae448f912328149994c78e48657341258128a1636b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-ethtool-0.14-3.el8.ppc64le.rpm" + }, + "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-jsonschema-2.6.0-4.el8.noarch.rpm" + }, + "sha256:5a4582945c88472741d154fda2763945db6de6013b39090de8b523c88a97f2fb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kernel-tools-libs-4.18.0-221.el8.ppc64le.rpm" + }, + "sha256:5a67ae309abe3ef1d6dc326a373abc5791d4264b657fa2e3e15be334fb1baa1d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kmod-libs-25-16.el8.ppc64le.rpm" + }, + "sha256:5d190a4742bc826edbe3d3dfb261c94688aca6e1bd0d431b58fc0feb9f40c1b5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cpio-2.12-8.el8.ppc64le.rpm" + }, + "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-jsonpointer-1.10-11.el8.noarch.rpm" + }, + "sha256:5e3963bc4b999aa0ebf6fdc2b93424a8a822a9dfd5d1d978e359491c93406df6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/squashfs-tools-4.3-19.el8.ppc64le.rpm" + }, + "sha256:5ea0604f773c0ae0e273206443a5f115e21010e8acb1d580a22e5ce0219ac991": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libmetalink-0.1.3-7.el8.ppc64le.rpm" + }, + "sha256:5ec6ae7905536e750f71445ab42960577aa7355d58b4e4f683aa29e270e6adb7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/bind-export-libs-9.11.20-3.el8.ppc64le.rpm" + }, + "sha256:5f34bc7117ef6b1bd601735b3c1e9e8ee56852ad6d963471813d128e7cbb325d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dracut-network-049-89.git20200625.el8.ppc64le.rpm" + }, + "sha256:60dc43534d0e8b5e6917accd3c76c8b68f95b72e19cccc194bf1c449c6d9c7af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/checkpolicy-2.9-1.el8.ppc64le.rpm" + }, + "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:627e59a303477393242aa301d711c6e98908041a481349ac1eec861c0a8d71da": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sg3_utils-1.44-5.el8.ppc64le.rpm" + }, + "sha256:63edd5d05106443ccfad8b8efe80c5546e6a23f8336e7269c899b01eab928d5c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/powerpc-utils-1.3.6-11.el8.ppc64le.rpm" + }, + "sha256:64465f01f00fbce1cc67e603af5dd542f8c4c4c17704ff419cafd8285ea97205": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/polkit-pkla-compat-0.1-12.el8.ppc64le.rpm" + }, + "sha256:64974a66c0deda570362735cc698951b3683d93cadc3c88f0e6557f96e1b2fbe": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.ppc64le.rpm" + }, + "sha256:6501a0edf570ea01137395ff13cdbc3914dee9e536ab92ff9698a5ddd76dfb16": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-gpg-1.13.1-3.el8.ppc64le.rpm" + }, + "sha256:657efda777af4b0d63ab127a72f3373c0d8a18f3b81e912b24a5fbdc9927dc1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Term-ANSIColor-4.06-396.el8.noarch.rpm" + }, + "sha256:65911ee8ff0d9bb81f4ce2537ff9cf58fe0903feba5119f0b261e3237ebafa30": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.ppc64le.rpm" + }, + "sha256:664a883f3c7042eb91e0b66fc99c309a729011b4912e4af9397f4e25e1adae90": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/cloud-utils-growpart-0.31-1.el8.noarch.rpm" + }, + "sha256:679ba7cf5974aaeb4b50a926e8fa28821f48b71c182d50b1033bccb6fdc34a06": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libxml2-2.9.7-8.el8.ppc64le.rpm" + }, + "sha256:68269d4f3588a15e94360c9d0f595d0ad7f1ece27968162ac42468acd462e526": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libacl-2.2.53-1.el8.ppc64le.rpm" + }, + "sha256:683db6cfc407c739357b34d19c3d9881d1790b0d0aa6a5b4b2a206b7d6581b32": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-netifaces-0.10.6-4.el8.ppc64le.rpm" + }, + "sha256:68c10fbde60ad63306c334df256056bc93eb04d56eaba5ddc40254e81e815056": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/nettle-3.4.1-2.el8.ppc64le.rpm" + }, + "sha256:69997f597de86de2dedda20db0f5b516585751822162f4dacd01cbc2808a9155": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgpg-error-1.31-1.el8.ppc64le.rpm" + }, + "sha256:6b0cfe88a81e314afa03ce297f2bb0470a29a8f13465ba4a52fc65550027cbda": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libdb-utils-5.3.28-39.el8.ppc64le.rpm" + }, + "sha256:6b6b362f865498d59d17673d93fabe076015e7804462412e3da589335890f8d9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgomp-8.3.1-5.1.el8.ppc64le.rpm" + }, + "sha256:6c836d295d33eb6d66f5e805a8ab5f4e4e514a027b8dc4d16ba2e0469940e477": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libstemmer-0-10.585svn.el8.ppc64le.rpm" + }, + "sha256:6cc8c3ff2b465defb9ac46a2caf95d53c887d18f68bd43f21e6e3635b884d6ab": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsemanage-2.9-3.el8.ppc64le.rpm" + }, + "sha256:6dcd9452321975a5d2014a925e80d6629c6de79758fb59844a796f41e837ce7e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dhcp-libs-4.3.6-41.el8.ppc64le.rpm" + }, + "sha256:6edd52da878b6d64327c584e28bf657831cbbaee66132fe8056895009424a235": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgudev-232-4.el8.ppc64le.rpm" + }, + "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/hwdata-0.314-8.5.el8.noarch.rpm" + }, + "sha256:704622626b2938eee1c096c1ecf1e5fc88be4e4eac80a911d0c2ee893f9657b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/platform-python-3.6.8-30.el8.ppc64le.rpm" + }, + "sha256:70ccdbee7bc8bb785263a24547b64faa09ea013046a548a341b204391328c887": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dracut-config-generic-049-89.git20200625.el8.ppc64le.rpm" + }, + "sha256:715dbe24d12d9fe43a6efa804dedb3e50e5babed510073b838b6e42ec06d5b8b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gpgme-1.13.1-3.el8.ppc64le.rpm" + }, + "sha256:7221e9c72741e31d3e954cae6a1b780b15da86abb70d6fdf3c125b1a440ce2b2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libidn2-2.2.0-1.el8.ppc64le.rpm" + }, + "sha256:7276a9f44f6b731ca7b2b85f5c79457ab6d4a2d5597352ac772f93dfa2535730": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libtevent-0.10.2-2.el8.ppc64le.rpm" + }, + "sha256:72c17b5b06cb08a819da004e904d03ee23c1dfe86e0b29231cccc6f50d303ceb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dosfstools-4.1-6.el8.ppc64le.rpm" + }, + "sha256:72c41f668b3845264a00885bff6752453d6d514796860c43d33652e8ec9036d6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/iputils-20180629-2.el8.ppc64le.rpm" + }, + "sha256:73566657bf7df1e8709db1985fd04cc4535138557e30e37f3c4ec24ece806824": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/polkit-0.115-11.el8.ppc64le.rpm" + }, + "sha256:739a6551c66057a68275d53d3ddeb35f1329cd4be1deea3d4103576cf7667cc8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssh-8.0p1-5.el8.ppc64le.rpm" + }, + "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:73f54ead0d97055f6fefd2619bb58cf421ef4d287a94e10c318ec2e9efa1a9fa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/lsscsi-0.30-1.el8.ppc64le.rpm" + }, + "sha256:7414afd238a66fb6c75319f9a73f9aa267d3578ed63fc850cf633dd08cd2ebb5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/bzip2-1.0.6-26.el8.ppc64le.rpm" + }, + "sha256:7417d32587ec264dc30eaaa94d8fd561b648e59d4d172a06abd2cd43833c85b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/man-db-2.7.6.1-17.el8.ppc64le.rpm" + }, + "sha256:744a6f8d1acf3c49b77e0f96217a6bae3d7dba6228a16676be21b7332adf9f43": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/unbound-libs-1.7.3-14.el8.ppc64le.rpm" + }, + "sha256:7519682fc74640736910735ce7b0f3a4ca6deed6d6e365d1cff47f8412519a13": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kbd-2.0.4-10.el8.ppc64le.rpm" + }, + "sha256:7519f2af362827daecf105e1dccb551350f32dfd3f6a8a85bf6eb1b4b7788255": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/perl-IO-Socket-IP-0.39-5.el8.noarch.rpm" + }, + "sha256:756fe3065871f2c7c1f9635ae75119d1755dbb6a5ea62fae7660b410d9392e34": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/lua-libs-5.3.4-11.el8.ppc64le.rpm" + }, + "sha256:759ba259e960c720b7e096a7a1ef092d7e2181f7b9d17ccabd45867dafba98d3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsoup-2.62.3-1.el8.ppc64le.rpm" + }, + "sha256:759d2a6cb209926af2799c1f25851e28a34f6af7e55f93a68045776bb2519379": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-PathTools-3.74-1.el8.ppc64le.rpm" + }, + "sha256:75f6ee212b397466bbdc9320473ee2de0198b9573d3204a71422ef215e985e8d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gdbm-1.18-1.el8.ppc64le.rpm" + }, + "sha256:7676c7a3f92aedec71efad68ce95c1ba5362b7bb75a815b70174a96a2126cebe": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcap-2.26-4.el8.ppc64le.rpm" + }, + "sha256:76ed4d1820916e1d4d5ba12a9200b790fc75f2801937d63753fca7e12b6c9d6e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/keyutils-libs-1.5.10-6.el8.ppc64le.rpm" + }, + "sha256:77066ee655df356370b5d6d736d96835f5712f8e814dfc46b391ecaef9cdd19b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Carp-1.42-396.el8.noarch.rpm" + }, + "sha256:793641f96b3d5b0e67a2ffccea6f8d928ef3d4877636b6c3852341b230242cc1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/lzo-2.08-14.el8.ppc64le.rpm" + }, + "sha256:79d49c7e1c6bde0467649271fb45928a313c5a8cad3c0855d3cae9277e9b474c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libdnf-0.48.0-2.el8.ppc64le.rpm" + }, + "sha256:79fd24e8c8c10d0937e716705b1ce196464c1d901e34219c60ab0865cc126879": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcollection-0.7.0-39.el8.ppc64le.rpm" + }, + "sha256:7a05e800e37b4aa74e657a829097090faf013338056c8bd6ebfeee5ae4467a22": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/util-linux-2.32.1-24.el8.ppc64le.rpm" + }, + "sha256:7c385e32c12b2639232f74a5dfdfef86daf82e5418bc292c5ab2640fb5cf46dc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Exporter-5.72-396.el8.noarch.rpm" + }, + "sha256:7c458f0dfbd31662e5a8a91b847881dfba6ff04786bc21e7de230236ce8ffaa7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.ppc64le.rpm" + }, + "sha256:7c526e6c9e22ba9fbd88da30824a4791c87f3da890426890be3a72f2ebf7f0c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libreport-filesystem-2.9.5-11.el8.ppc64le.rpm" + }, + "sha256:7c7df93f7b01587f4945ae4c69eec2af512ff4dfc83d8a36268c9238acd9aa71": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.ppc64le.rpm" + }, + "sha256:7ce6aa282f9f23c46c44186595924d05f4e7a899b504eb95a0f87008f6620268": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dejavu-fonts-common-2.35-6.el8.noarch.rpm" + }, + "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm" + }, + "sha256:7d60802fc8b2f721be351e30f23e11678fa85fb0fcfdfa04a903a8452725bb6f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pciutils-3.6.4-2.el8.ppc64le.rpm" + }, + "sha256:7d7280d0de03be269a1b078534d286496085416efef921996590bcce7db64736": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ncurses-6.1-7.20180224.el8.ppc64le.rpm" + }, + "sha256:7db7737df4ce7f9bf2099a13dee98a724118bb8bf873fddb14ddbf4c22378287": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsss_sudo-2.3.0-2.el8.ppc64le.rpm" + }, + "sha256:7ddfb571e9fe4183721b20fc063c9b0fc1797b2cc5c7d0e677edce583d72c0c5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/iptables-libs-1.8.4-14.el8.ppc64le.rpm" + }, + "sha256:7e078a375d2636b705e1734be79a8b76a306f8578066c901713663e367925bc7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Text-Tabs+Wrap-2013.0523-395.el8.noarch.rpm" + }, + "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:7e6bb03794258406bfee886f507934be08fe1d80a8643af028e631b37f9bcd4f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/file-5.33-16.el8.ppc64le.rpm" + }, + "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-slip-0.6.4-11.el8.noarch.rpm" + }, + "sha256:7f2af219510f9bb8c70beea8c1bbfcdf3d84f9c96ebf28fe84c8bac20f4516e3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gzip-1.9-9.el8.ppc64le.rpm" + }, + "sha256:7f3337d8024c8eb5d67ed830c2ed1c5b046887d4806ea22cf6e8f3f77b8d7e6f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/p11-kit-trust-0.23.14-5.el8_0.ppc64le.rpm" + }, + "sha256:7f8760b668bc465f9e538da9bfa281d1c881d05611ba54a0ac38a97338694ce2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libedit-3.1-23.20170329cvs.el8.ppc64le.rpm" + }, + "sha256:8048c87208855ae3dc3f2b14c9364337f0ad17277a89f1f6fc2edf9cd3e33eae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-libsemanage-2.9-3.el8.ppc64le.rpm" + }, + "sha256:805dcfbc69e21fbbe2b0a03ec577f3e32c543f034f3b9c0a81f97442130bdfc6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libteam-1.29-5.el8.ppc64le.rpm" + }, + "sha256:80fe17f542ecf961d5fb29ada18de1280cefd94cdd4b1325050df794364d5c44": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/hdparm-9.54-2.el8.ppc64le.rpm" + }, + "sha256:81a30f2977dfa5ede4e3a4077c8590de94c2f6bc97c4968f7bb556c713169a99": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gdbm-libs-1.18-1.el8.ppc64le.rpm" + }, + "sha256:81afd309f084c91d68c06bd46a4fce2e0d1e265a01ff87e309d1202e711e4a02": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/perl-libnet-3.11-3.el8.noarch.rpm" + }, + "sha256:81ca20194dbba8bb696a02f1f01d45b1ca73aa38a18d97173022fcf96e195156": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libxcrypt-4.1.1-4.el8.ppc64le.rpm" + }, + "sha256:82a40c656ab0a5658383654ba842d29b12a7334207ef80cc23c43fa3c9bde43b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/NetworkManager-team-1.26.0-0.2.el8.ppc64le.rpm" + }, + "sha256:8373993533b0671cf77930fe3e685a648f1393acc2231a12ce84d8f8ef0216fe": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssh-clients-8.0p1-5.el8.ppc64le.rpm" + }, + "sha256:848e59a9e9836ac1c7300da6958b25b64527078a4e6547e011f5ada16ce2fa4a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsysfs-2.1.0-24.el8.ppc64le.rpm" + }, + "sha256:849ccf21d9d01314b037a500ed84f9c687ef27843ac9f6a255027f579441b3dd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/fontconfig-2.13.1-3.el8.ppc64le.rpm" + }, + "sha256:84fe687d85ab19aabd3933ca4e0eebca7c16486d9475b5b587bdf83570084027": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cockpit-bridge-222.1-1.el8.ppc64le.rpm" + }, + "sha256:8527e6b228ce500ac99cbff9bc11822120586664e52e40203a6dee86d3ffe238": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ethtool-5.0-2.el8.ppc64le.rpm" + }, + "sha256:8592c632ab75709f66c5fe6b49ce424a2ddd390f7bf01ee768425b3e60801fec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glib-networking-2.56.1-1.1.el8.ppc64le.rpm" + }, + "sha256:85ac0902c707636ebc08b90981dffdc080d37b0acdec3950cfb3029779dcb823": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/libXext-1.3.4-1.el8.ppc64le.rpm" + }, + "sha256:86ae5e445a80e4485162e6f24fcf6df539fa7d1d31650755d4d5af5d65ec2b88": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libss-1.45.6-1.el8.ppc64le.rpm" + }, + "sha256:87209220ec94795ac0e079e98877a4f911beaee3a829bf95cda5a8b24b545a94": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/xfsprogs-5.0.0-4.el8.ppc64le.rpm" + }, + "sha256:8821bda7623a2157db4883763f5f74a11dfd1b875d3085b571122f454bff8f73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libvpd-2.2.7-1.el8.ppc64le.rpm" + }, + "sha256:8ac41d38c793722177492319ae57588ae2619962c8442e64aecc4b6708295707": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-rpm-4.14.3-4.el8.ppc64le.rpm" + }, + "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-pycparser-2.14-14.el8.noarch.rpm" + }, + "sha256:8c8e8e8db16ef828278de55cefb09425a83079597a093f93e6261fd5bd027406": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glibc-common-2.28-127.el8.ppc64le.rpm" + }, + "sha256:8d54cc441cf480bc016c027df4acfd938373a19d91a7fd00749e4d2de3c36bfd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Storable-3.11-3.el8.ppc64le.rpm" + }, + "sha256:8e2c0324789f42ebb6324847249699eb499544a3e6ad67ccd74713b3c1d6ce78": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-magic-5.33-16.el8.noarch.rpm" + }, + "sha256:8ec9594f8cb1eb3313cb8979201b0f85a914107fc4f706ea27727e977da056ee": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libssh-0.9.4-2.el8.ppc64le.rpm" + }, + "sha256:8fc1e64c093d904507bfa66977e476c0f4f52ddb79f6698eddaa2b5a5359ac7f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kexec-tools-2.0.20-29.el8.ppc64le.rpm" + }, + "sha256:921bd23cb652304164d7ca8bcf22d948caad840bd96a180c38c11374c7b93e2a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dracut-squash-049-89.git20200625.el8.ppc64le.rpm" + }, + "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm" + }, + "sha256:934205ae1baa04b3921065f73096378f1db65990392340ad32042f86c9b5b247": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sos-3.9.1-4.el8.noarch.rpm" + }, + "sha256:93e8eb519fee69ad0a90733dea8577670a1c62f02fce9348633880e0d9190f4b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libseccomp-2.4.3-1.el8.ppc64le.rpm" + }, + "sha256:941fb8859ba0911c8d42d7fadb9a70e89155013f3fa697bb61ba5a18661a1d45": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Socket-2.027-3.el8.ppc64le.rpm" + }, + "sha256:94700eed0bd231ee73fac06e38ce66573466039c0454774bf268ea50a03fe056": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/shadow-utils-4.6-10.el8.ppc64le.rpm" + }, + "sha256:94b8f8ce9926a60524cba62e9695785bf12f3ca7f6de86cbcb510889e9e61509": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/librtas-2.0.2-1.el8.ppc64le.rpm" + }, + "sha256:95971777d5b9af4cc37788f0b9193c693de7dc2f0f842f341a5d2182af4edb24": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpsl-0.20.2-6.el8.ppc64le.rpm" + }, + "sha256:96904dd00cb918042fa0492a244c9ffcd2609604adb639a4e41a75368967f2b0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/freetype-2.9.1-4.el8.ppc64le.rpm" + }, + "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-slip-dbus-0.6.4-11.el8.noarch.rpm" + }, + "sha256:97e8ec14c0569aee6633342fd3b05507b8c30c9d62b52aff0c3e693640d78938": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/systemd-239-36.el8.ppc64le.rpm" + }, + "sha256:97ffad7f79927ee908510ae381ada704827d369b5a0b8715214f51270a0984d3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libtasn1-4.13-3.el8.ppc64le.rpm" + }, + "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm" + }, + "sha256:9badb068b18ed2b26a352efec492df8cb1599df51f4cf1bcdc8baeac903aa45a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kernel-core-4.18.0-221.el8.ppc64le.rpm" + }, + "sha256:9bdf8e5f329b54f1ea45a5d5277d650be84f7bd2f1570d7c5e7ac743fd57cf1f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsmartcols-2.32.1-24.el8.ppc64le.rpm" + }, + "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-babel-2.5.1-5.el8.noarch.rpm" + }, + "sha256:9e5e0c1de12f0bd0127f23356d9b1cd0f005ce26c2a0996f692f9483e0b6cc89": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/jansson-2.11-3.el8.ppc64le.rpm" + }, + "sha256:9e802845a3e725e8014b2f0f1e6be1cb6dcbdaaa7472e011b5cd7ce5007aa0b4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gdk-pixbuf2-2.36.12-5.el8.ppc64le.rpm" + }, + "sha256:9e90e6054da06f5c8c2733c3b66987693a58ddc1f05d95b23ca0a464e26a2b22": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/perl-Digest-1.17-395.el8.noarch.rpm" + }, + "sha256:9f1810ee304c2827027a4dadb0142f6940c28991b5371cbe302593eece6c25e4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libyaml-0.1.7-5.el8.ppc64le.rpm" + }, + "sha256:9f526c50ff9fae2f6c1d02eb10b6ced74b3ee94e7292e7ad483076ab730c1eef": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpcap-1.9.1-4.el8.ppc64le.rpm" + }, + "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-ply-3.9-8.el8.noarch.rpm" + }, + "sha256:a07b21bf156e4a15c566506eb5f5b9e9c7087a58c471c004f53d4eae1bce90e3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-unbound-1.7.3-14.el8.ppc64le.rpm" + }, + "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:a3850bfcfaff4d53303ab9d8403940b09c26037f501206d0081ccc7b0ca5049d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/passwd-0.80-3.el8.ppc64le.rpm" + }, + "sha256:a3a7b6f870a420aec92c67a5489150796673f4b2297af07ef0db200987d9ee3f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/libfastjson-0.99.8-2.el8.ppc64le.rpm" + }, + "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm" + }, + "sha256:a48836542020c973d67ba459387dca8549d4d65749926eed8031f601b18a8738": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/findutils-4.6.0-20.el8.ppc64le.rpm" + }, + "sha256:a4ef09e900e5504b692f38dd95bfd20b305c1a4ff0799b39246808e7cc201d01": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/sscg-2.3.3-14.el8.ppc64le.rpm" + }, + "sha256:a58bbe21c85a4ae7124d72635da3fe73e43757c82bf4f15233579f28e29ae9e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/quota-4.04-10.el8.ppc64le.rpm" + }, + "sha256:a5fcf3d4d064289bd04a9f19cc204c8facaf389c0c10e47b075529f0601dc02c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libselinux-2.9-3.el8.ppc64le.rpm" + }, + "sha256:a660a0ed20a7d6fd7caa88d85f92575cfa21d207c059aab380fa82c4742a1634": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libmodman-2.0.1-17.el8.ppc64le.rpm" + }, + "sha256:a660c78f704d3d22458c71d86605f51d62e3cc5306d22d66bb1df86c7274ad6c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Pod-Perldoc-3.28-396.el8.noarch.rpm" + }, + "sha256:a6eed3ca128d562c0aed92a123d9d726cf8074df7f98c7ecef5c40257d5bc76e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/coreutils-8.30-8.el8.ppc64le.rpm" + }, + "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-pysocks-1.6.8-3.el8.noarch.rpm" + }, + "sha256:a7db88e037715eb0ea86ffa464285615549b23178a14d691935685bdb6df4742": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libunistring-0.9.9-3.el8.ppc64le.rpm" + }, + "sha256:a99969c9b217ceef0f2208c4fe7a57c71374e39ec2f9cebafd1f6b29a4cd28a2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/slang-2.3.2-3.el8.ppc64le.rpm" + }, + "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/setup-2.12.2-6.el8.noarch.rpm" + }, + "sha256:abe578c5dee7c306812e241c77ebc8ba4b54f90df8e65c56f8f202ba6e0d7183": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-parent-0.237-1.el8.noarch.rpm" + }, + "sha256:abeb97ed3fdd82145fd51f8eeaecfca272e4d1418b17a68241e054425a327aa3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/insights-client-3.0.14-2.el8.noarch.rpm" + }, + "sha256:abf49a75e3221dce4a379c9300b15611dc4a45acc109862e88146441776d0343": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Scalar-List-Utils-1.49-2.el8.ppc64le.rpm" + }, + "sha256:ac56f03020c08a0e56aa90d369d68ed6c558786b828c575b266c3e7967eae61d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-threads-2.21-2.el8.ppc64le.rpm" + }, + "sha256:ac8a116d533843bfb95ebc3777b084b76fea22f67662e3a20c51fae5325d4000": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/c-ares-1.13.0-5.el8.ppc64le.rpm" + }, + "sha256:acd73603cd1d0dd6542d16ad9f86aa0ce95517a6c5bd2ab1279417dc4cd0aa8b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-glib-0.110-2.el8.ppc64le.rpm" + }, + "sha256:acdee02b0e12502f5010ebfeb9d3cec41172e83db45a5e941085a8edba1bd408": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-libs-4.14.3-4.el8.ppc64le.rpm" + }, + "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rootfiles-8.1-22.el8.noarch.rpm" + }, + "sha256:adab024896eecd08250eb7a7a5e1686df0b945fd1604543877e230163c510f24": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/quota-nls-4.04-10.el8.noarch.rpm" + }, + "sha256:af1858d5279d6624b777a4f5b7ff7efbfd3a6b75a6a6357c4412696dc59b2802": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libmnl-1.0.4-6.el8.ppc64le.rpm" + }, + "sha256:b0a406b04a8ab0cd64bc2260faeecee8aaf93b82916cb8551b48eaace6dcf16a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsss_certmap-2.3.0-2.el8.ppc64le.rpm" + }, + "sha256:b1184fa6ab84322f715418f76a8e260c6a6bb352307cce9732d72ed3f0ebdec0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssl-1.1.1g-9.el8.ppc64le.rpm" + }, + "sha256:b25a8c87220920855a25357cd27024b1b9b87fefa48e1e877f7e23d0e1954a1d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/filesystem-3.8-3.el8.ppc64le.rpm" + }, + "sha256:b2d090246903da9162c06912dcfed747df9e7ba1b9f029a98c96c4155f68ce67": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/redhat-release-eula-8.3-0.2.el8.ppc64le.rpm" + }, + "sha256:b41a7db6b738b61a8f9e248da09cc474bf4e7b9dc9eb048a62114f3e7e512a0d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kernel-4.18.0-221.el8.ppc64le.rpm" + }, + "sha256:b490e452b2ba6ebb8980392cef4b7be06b9788ad4cfd37ce31c568d80b29861b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-1.12.8-11.el8.ppc64le.rpm" + }, + "sha256:b4fb3d8b0255a5ba9456b61e4f479f2f8355d171263508bbe869af677015fd97": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/policycoreutils-python-utils-2.9-9.el8.noarch.rpm" + }, + "sha256:b56bf1fc0c0818069d8833845e90c629215abbc8bce652c52cf077dcc224be34": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libblkid-2.32.1-24.el8.ppc64le.rpm" + }, + "sha256:b64080283110b2e23a184787ccd14eca6994c321cf4be9cb16205cfda1ab5d89": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/pinentry-1.1.0-2.el8.ppc64le.rpm" + }, + "sha256:b828eb01daf36933c3476f38b3c7c464828f056171a91df2d82e9e19ea9aa9e6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libbasicobjects-0.1.1-39.el8.ppc64le.rpm" + }, + "sha256:b896a07208090c08a314e4f590ed8ee399f77ffc6a73864a11b4e9dcac234bba": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/elfutils-libs-0.180-1.el8.ppc64le.rpm" + }, + "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/basesystem-11-5.el8.noarch.rpm" + }, + "sha256:b96fe83e9e8b9b1a6819e739ba23ee0b39991845aebc20f95dd434ed418f8912": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libldb-2.1.3-2.el8.ppc64le.rpm" + }, + "sha256:b9a80c6b1e8bff298ad6215248ce9d193d734dc038f1de211c01a2e118b9606f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/systemd-pam-239-36.el8.ppc64le.rpm" + }, + "sha256:ba5b6364787be1ce76c7d5d3f7861f75157db6c5354f4b6e7b26ba8962fb226d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-4.14.3-4.el8.ppc64le.rpm" + }, + "sha256:ba5ed56f4798d522c6ba041f841617e9362a33b41eee1794214d85eb3bd3fa53": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/json-glib-1.4.4-1.el8.ppc64le.rpm" + }, + "sha256:ba96075700fb65a1bb508b93401904b769a66b593148c23e99230a50ff0e174f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.ppc64le.rpm" + }, + "sha256:bb7554c3a90cd75fba7a3e3027761a7ff43c4e48a24b759c64ba4625ceec83c1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Errno-1.28-416.el8.ppc64le.rpm" + }, + "sha256:bbfd0c8d360ae86528c2d06b6b64ceb2d6a974dea101ba5e1268740b689142b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/popt-1.16-14.el8.ppc64le.rpm" + }, + "sha256:bc658714fda75fa2cd8f635d358369a1716692f2e9d8ca4fae6ca6361dd422bc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libtdb-1.4.3-1.el8.ppc64le.rpm" + }, + "sha256:bcd9e55362d6afab44a89acd877c8c0a8ae27572028bfc9282f3bfec0d21e27c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ncurses-libs-6.1-7.20180224.el8.ppc64le.rpm" + }, + "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-jsonpatch-1.21-2.el8.noarch.rpm" + }, + "sha256:bd73b6ee39c5d7e36fe72dc00e6a9da773d6fd7496bb3ecbf960f05dfa99edb0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libnl3-cli-3.5.0-1.el8.ppc64le.rpm" + }, + "sha256:bdb8cc675da18f659ba06252f1f2604d171373239804c3cbc6004dadded54cd3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/yum-utils-4.0.17-2.el8.noarch.rpm" + }, + "sha256:be5a5ad0d3338da31fca41645852b03c748c41e77bd715619033f71496f3c875": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/systemd-libs-239-36.el8.ppc64le.rpm" + }, + "sha256:c00ca52f5d13adf55105e6276d32cfad2637d57db399e65d08947672fa8a4acb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/NetworkManager-tui-1.26.0-0.2.el8.ppc64le.rpm" + }, + "sha256:c1508ffd007eeca1ba4e5d1c2fa1d8cd7e537b10f177742570644c703e447763": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/setroubleshoot-server-3.3.23-1.el8.ppc64le.rpm" + }, + "sha256:c1da8e31a629d048b524c5ccbaf1158586822fff72e3b1d772387eaeb54adaf2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/newt-0.52.20-11.el8.ppc64le.rpm" + }, + "sha256:c1fb113cecb751cfc6cea9e39c554b29e7fd56cd122977c772d5dcf3a9ce0812": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libverto-libevent-0.3.0-5.el8.ppc64le.rpm" + }, + "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm" + }, + "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-idna-2.5-5.el8.noarch.rpm" + }, + "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-asn1crypto-0.24.0-3.el8.noarch.rpm" + }, + "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-hwdata-2.3.6-3.el8.noarch.rpm" + }, + "sha256:c58b75f57dcdcd781917090e670e36137aa0ee3bd918f2f99460bbd2de487057": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-schedutils-0.6-6.el8.ppc64le.rpm" + }, + "sha256:c58f71151ec41a8da17f8d5a45364e6c85cb3fe149993047ac9ef4b5aecd1fff": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glibc-all-langpacks-2.28-127.el8.ppc64le.rpm" + }, + "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm" + }, + "sha256:c6c053bc48ff5c75386422a4712277b85d1bea54b4dc0894a4e2c8a9f034d64a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sssd-kcm-2.3.0-2.el8.ppc64le.rpm" + }, + "sha256:c7efac801bc1b89d979c6eef9eae0fc75dc322bc15060b8cdc396fe1def0564b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/perl-Digest-MD5-2.55-396.el8.ppc64le.rpm" + }, + "sha256:c80b960ea521232657be394882ac2e2ab827e732686a75a41fca2837d985f4f2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/perl-Net-SSLeay-1.88-1.module+el8.3.0+6446+594cad75.ppc64le.rpm" + }, + "sha256:ca164a41ad98cbc73c23259bb112bbd04162bb363b596a3c99eac02182a01d26": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glibc-2.28-127.el8.ppc64le.rpm" + }, + "sha256:ca642031ece8f6f46a55543cfebf58c0a50fe961fd8a796d4ebf9fa684922797": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/subscription-manager-1.27.9-1.el8.ppc64le.rpm" + }, + "sha256:cb2a87844be8eef053cd2b32047552c53b32f16f618fac592a75a5376a4688bf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/lsvpd-1.7.11-1.el8.ppc64le.rpm" + }, + "sha256:cb77a2c9467e5873cf21f429069da709089dc10062c4d927d9e59eca0aac2546": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kpartx-0.8.4-2.el8.ppc64le.rpm" + }, + "sha256:ccc3640eff73677c4f962104b7a9fa6cb8c08787d77c4ba016569b0b11deb8f5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/device-mapper-1.02.171-3.el8.ppc64le.rpm" + }, + "sha256:ccd0b65f90f2db606a9b38f00c71f5bcd7611fafde92e185a57d3e2a3f027787": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/procps-ng-3.3.15-2.el8.ppc64le.rpm" + }, + "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-pytz-2017.2-9.el8.noarch.rpm" + }, + "sha256:cd1ed33bd28c614fe79026826b697c6904a67bf979d2720c2632d0f20c69c457": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libappstream-glib-0.7.14-3.el8.ppc64le.rpm" + }, + "sha256:ce85ea9b2eb4d1e2ae94136168cda2bb768fe995ca09620615c1e69b8b0d6bfb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-ppc64le-modules-2.02-84.el8.noarch.rpm" + }, + "sha256:cfffe21010ac66d51d483885a02b359c833d5e1f0de9d8d24af55e035d35119e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ppc64-diag-rtas-2.7.6-2.el8.ppc64le.rpm" + }, + "sha256:d07a535fd49579414267571a6e7286d38061e65dcffd1f947e32b8edeb0e7f58": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libselinux-utils-2.9-3.el8.ppc64le.rpm" + }, + "sha256:d0bdb653ebfa5cc5a596157434e50d544ad176bd6c3869896be0aa5996199771": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glib2-2.56.4-8.el8.ppc64le.rpm" + }, + "sha256:d0c32bda35b74d519124495cb2b2d38721c4d4ae5ea066e5727a249b22b94334": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-cffi-1.11.5-5.el8.ppc64le.rpm" + }, + "sha256:d20bcdcb1e6a8d16a5df9cdc99744f907516b9ded51b671bd0a0f31189ac43a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libffi-3.1-22.el8.ppc64le.rpm" + }, + "sha256:d2206467c216ee77262401385a61b540eeaabca9a44b9ab864c993962ba76758": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/shared-mime-info-1.9-3.el8.ppc64le.rpm" + }, + "sha256:d2593772ce32d37483f61d254990c31e3548ab504c793b95e8f4603a5040032b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/perl-Mozilla-CA-20160104-7.module+el8.3.0+6498+9eecfe51.noarch.rpm" + }, + "sha256:d281c9c6793be93fcda14521cd3cccf37102b955607fda53d7051a1276bf0401": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsss_autofs-2.3.0-2.el8.ppc64le.rpm" + }, + "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:d311e76aaf7a5bc43df52e69ace9679036c497bf1f4a0272309b98af649021fa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.ppc64le.rpm" + }, + "sha256:d3192605b3aa6c19118f95e14f69f4394424eb09f7649e127223bbfbff676758": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-cairo-1.16.3-6.el8.ppc64le.rpm" + }, + "sha256:d381673d6d7fe39f88f7966b5dbbe733695f1dc6243aad15aba04548f0d99d9b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/net-tools-2.0-0.52.20160912git.el8.ppc64le.rpm" + }, + "sha256:d3b6d1d0bc08398ecdc1ecab089318d829414811e5ccf63c2a5ffb80f8f92138": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-gobject-3.28.3-2.el8.ppc64le.rpm" + }, + "sha256:d3c4038a7a3be6987f74236394642be84092a9dd731317dfe5974af757c3ccfc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/mpfr-3.1.6-1.el8.ppc64le.rpm" + }, + "sha256:d3d600e075b60b1462bc5f2cf7319ad484a416739175aaacf384a5805749861c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsolv-0.7.11-1.el8.ppc64le.rpm" + }, + "sha256:d42e36ab818d9284eb5fb9d46a0af71d99b91d917b3fdf1ac9af3ebd473606f1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpng-1.6.34-5.el8.ppc64le.rpm" + }, + "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-urllib3-1.24.2-4.el8.noarch.rpm" + }, + "sha256:d48165ea7223207004c35f5f227db97e0bfb829c2e51f76f496eac557eccf03a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/redhat-logos-81.1-1.el8.ppc64le.rpm" + }, + "sha256:d4fff4e2707628db04c16a2cd8fa0c5e9854084688acf74ca4c1db27ea9d2f8d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libkcapi-1.2.0-2.el8.ppc64le.rpm" + }, + "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:d55a783930503e7f1590bc2ad10d9fa184ed3cb44e2ca85ae2bbe11fcbf166b8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/trousers-0.3.14-4.el8.ppc64le.rpm" + }, + "sha256:d79c92d015fa952edf2a4ad75f95042139fbf8b4323f24e939e1ed06481253d9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pcre2-10.32-2.el8.ppc64le.rpm" + }, + "sha256:d82f1c7302a07e05879a53a49491f84b38af443519b39243fee95b79d7b700f1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/less-530-1.el8.ppc64le.rpm" + }, + "sha256:d863808793a34bae10d7bf066b68be37883eb38cf117172de5e47c9eb729cb3d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/memstrack-0.1.8-1.el8.ppc64le.rpm" + }, + "sha256:d8b5b571fb84c7ccfa24f8a20460471d41fc4487d6d0c34f91fbeaba4c857eb2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pigz-2.4-4.el8.ppc64le.rpm" + }, + "sha256:d8ba6a91610d87dfb599018c887514af663a0f963ed6b25a83bac8fba56fa266": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/readline-7.0-10.el8.ppc64le.rpm" + }, + "sha256:d906b13d5dd7a5595133e2a1af83ae17a1aae0c107579db723d21ec4371f3570": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-File-Path-2.15-2.el8.noarch.rpm" + }, + "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-requests-2.20.0-2.1.el8_1.noarch.rpm" + }, + "sha256:d96bfcccbdce94af25721e3018a5853ff9670de828b6ac61ed76b5248a413e90": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/brotli-1.0.6-2.el8.ppc64le.rpm" + }, + "sha256:da9ced19708b900ccc4053ca3df8d58c081869b46c9ee801c1685f447a299731": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gnutls-3.6.14-3.el8.ppc64le.rpm" + }, + "sha256:daa918b5b5ecdc2ba8337afb799a795e2c9d84d5ed947aefe2ce3a4dfb2494d2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-dbus-1.2.4-15.el8.ppc64le.rpm" + }, + "sha256:db1fad3c2d8735e69084bd4b09ea963938e4dde2f2e096dc7a4ce146f18b7ab0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/fontpackages-filesystem-1.44-22.el8.noarch.rpm" + }, + "sha256:db6872540b6a0671c1170eccd328ae49869b06f8f39beb93ebef92aa7306440d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.ppc64le.rpm" + }, + "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:dcf427833f63e4672ecf04100181b671235ae2b50d450a25976ea176ead363fb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sqlite-libs-3.26.0-10.el8.ppc64le.rpm" + }, + "sha256:dd379385bd1d2e05f50c4795e5a0eff9030fdac0fd2579bb4b56233257672b27": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dejavu-sans-mono-fonts-2.35-6.el8.noarch.rpm" + }, + "sha256:dd6a948e5a656701156c618e202c0b6defd11ba6f162b6790cbb42cea15141ae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/perl-URI-1.73-3.el8.noarch.rpm" + }, + "sha256:ddd3be2e7e48c17085b756240d53a6b69a79ed82266cd4131c5459b2ee2a676d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.ppc64le.rpm" + }, + "sha256:de3b94c31c90b14e46d4c8d163d5fcc7d3b016e2fcfc090dcc076bbcc021800b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/lshw-B.02.19.2-2.el8.ppc64le.rpm" + }, + "sha256:df50c6f03ef2fa2d8f900a4a95d84921511b5e435533677f3067c1fd47f84b93": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/zlib-1.2.11-15.el8.ppc64le.rpm" + }, + "sha256:dfd1a319a66586bb1027b9a7a674f17b18070e3b389eb8dcd34ffad3ff485725": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/p11-kit-0.23.14-5.el8_0.ppc64le.rpm" + }, + "sha256:e02d721b2396471683a7f73d681ed4cc71bb2d50ef0e8390cc97ab047e4187a9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpwquality-1.4.0-9.el8.ppc64le.rpm" + }, + "sha256:e0da1061a61a16d6582be907ede03247165d0da480f9cac85ba502b158763770": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpcbind-1.2.5-7.el8.ppc64le.rpm" + }, + "sha256:e1067888710b91198be46b5f35ccf948450afb97603faf822163adbef075d313": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.ppc64le.rpm" + }, + "sha256:e17077c8803f792c02570b2768510b8e4955bd0ae68ab4930e7060fcbb3793f6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Pod-Simple-3.35-395.el8.noarch.rpm" + }, + "sha256:e18d17088ddaf866d7b440041554461a3188d067fa417baf6f5b070c2f9cee30": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssh-server-8.0p1-5.el8.ppc64le.rpm" + }, + "sha256:e1c727c81c7d54b21ebf7346d81ea57bbf77cdee59efc2c1bd57d78b45697de6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsigsegv-2.11-5.el8.ppc64le.rpm" + }, + "sha256:e1f1f3beb08cd5f29b2daa92593822fdd2c5af843b0532b0e8925180e3e931a2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-threads-shared-1.58-2.el8.ppc64le.rpm" + }, + "sha256:e280c3b7c5bb7838c7956ea3605165ea35480cde85a617c1eff6ca64d6157fe9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/acl-2.2.53-1.el8.ppc64le.rpm" + }, + "sha256:e349beccff56e002b94c9772d9150a5bbaf67db7e4e8a7130af0296956b25c54": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kernel-modules-4.18.0-221.el8.ppc64le.rpm" + }, + "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/yum-4.2.23-2.el8.noarch.rpm" + }, + "sha256:e3e3eaa6437eb9a91707097ac1a236759e6d57e439ea48572eec68267ac15e2a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-IO-1.38-416.el8.ppc64le.rpm" + }, + "sha256:e4dbbf5ba29de01b7121586f8bfc99305168d1db301ba121320344e344012704": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libuuid-2.32.1-24.el8.ppc64le.rpm" + }, + "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-linux-procfs-0.6.2-2.el8.noarch.rpm" + }, + "sha256:e5a9d44a20cdfb7cee822e0ec9411ddfcc7fab662300a7919a8530a669cf7a8c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libref_array-0.1.5-39.el8.ppc64le.rpm" + }, + "sha256:e5cb9b897bd73c0c7d49bbec0949b364bd2971edb637dc3d88fc25bf6c57de78": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-systemd-234-8.el8.ppc64le.rpm" + }, + "sha256:e6194926699147659c3a35d9330b5e9706b203aa806c4023c258559f9a0f8ae7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/subscription-manager-cockpit-1.27.9-1.el8.noarch.rpm" + }, + "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-policycoreutils-2.9-9.el8.noarch.rpm" + }, + "sha256:e660d48e49bb3da5f5e8ad3e79b65184a95eeb4351b3f6d38e3024c332bbb570": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libdb-5.3.28-39.el8.ppc64le.rpm" + }, + "sha256:e6bdc7b1e5bb8b3c9d578fa1a88c4cbd3ff262b14857464a691b6afd34e38b90": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libtirpc-1.1.4-4.el8.ppc64le.rpm" + }, + "sha256:e746fc392b4f034395f34e9461f046a776acc87b769abe0431db7f849de7c2bb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/cairo-gobject-1.15.12-3.el8.ppc64le.rpm" + }, + "sha256:e773a81f7cba7beffb23d9ebb6ce545ba4b1556091544f73ff57d263cc552176": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pcre-8.42-4.el8.ppc64le.rpm" + }, + "sha256:e811b0abd14d296513d7900092e66d06736d42e46db06d06d845dcd260fbc665": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/diffutils-3.6-6.el8.ppc64le.rpm" + }, + "sha256:e820bcff2a4fb2de93e1e4d4b369964bbdc82e2f6fa77d41c3a8835a9becb909": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ima-evm-utils-1.1-5.el8.ppc64le.rpm" + }, + "sha256:e82ab03c8a19f40df7f1eee34786246562ba4f5d5876ce77736ecde219006cf4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/perl-IO-Socket-SSL-2.066-4.module+el8.3.0+6446+594cad75.noarch.rpm" + }, + "sha256:e84ba0cc416281ce1c296db3b2eaf10ac3f3f5e9b5e09fc792b0a91c48df5185": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.ppc64le.rpm" + }, + "sha256:e88bf835ce671803517345468b682f757022d788b17ebac257bb5ee4879222b6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/NetworkManager-libnm-1.26.0-0.2.el8.ppc64le.rpm" + }, + "sha256:e943b3e1fb71459be6ee74f944e7bcf6a0835858b48924501645eb00997b5d1b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/lz4-libs-1.8.3-2.el8.ppc64le.rpm" + }, + "sha256:e9c4d2606604003b7dd226619b1ed62a18626e22e150b06f1fec14dfd1721b8a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/pixman-0.38.4-1.el8.ppc64le.rpm" + }, + "sha256:e9d3adb5df960913105864554af0d17ac26287f7454c13865895cec93c57cc6c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/libxkbcommon-0.9.1-1.el8.ppc64le.rpm" + }, + "sha256:e9db628a63adadce6b6466cdb0af34d5bb0c147e682c4f4a9fc2294373d4b6d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libservicelog-1.1.18-2.el8.ppc64le.rpm" + }, + "sha256:ea3ecc89cb330622a075fadbfafb5789de7d78a91954931dee0aa56cd7b0472c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/authselect-1.2.1-2.el8.ppc64le.rpm" + }, + "sha256:ea7acd3d0f14136f649d7403f0c4302cc757ddda22b8d738dae9b6f74c72c4b8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/libXau-1.0.9-3.el8.ppc64le.rpm" + }, + "sha256:ea8d6dd8c5e592d79229541874e6c2521e456e0efa5386a1fde95a7ed93ee4bd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/hardlink-1.3-6.el8.ppc64le.rpm" + }, + "sha256:eb2cc86f4f01aa0ee86ec3a878ceac7eabe04ce5142f8a4b06e3f22cab002b75": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/file-libs-5.33-16.el8.ppc64le.rpm" + }, + "sha256:eb870676d56cd2212611a9814f6ab08b53a209d1bee37e38fdbc434b6a1600a1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libverto-0.3.0-5.el8.ppc64le.rpm" + }, + "sha256:ebf4129602495e20eb3ab2da938dd89646955e44dfa72a5e5a8f6fbe3c40d7e6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sssd-client-2.3.0-2.el8.ppc64le.rpm" + }, + "sha256:ec12527a8c08222f2d4552bd2a5c1729764c180950fe5fec9ca4dcb97e4099c6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Unicode-Normalize-1.25-396.el8.ppc64le.rpm" + }, + "sha256:ec450facea1c2a5dc1a6b5bacc2330dd5174780d92db66379f4918c2ab40da83": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-libdnf-0.48.0-2.el8.ppc64le.rpm" + }, + "sha256:ec5d13a3aeca7edd6397ba211328a8d68adad4b135c7c2e78020f9eae530daee": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/NetworkManager-1.26.0-0.2.el8.ppc64le.rpm" + }, + "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm" + }, + "sha256:ecd31959fe40425f51dae04269b063c5a77bd78a5445879b1c944f1aabb669bb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-libxml2-2.9.7-8.el8.ppc64le.rpm" + }, + "sha256:ed5d642b5684142e9224449ffc26aeca810276b1182b66a391c2e276b988ae3c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-libs-1.12.8-11.el8.ppc64le.rpm" + }, + "sha256:eea72f348c2af9b2281466c14a8aef76bb6d3db3ee853817b6dab6f4f828b5a9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-gobject-base-3.28.3-2.el8.ppc64le.rpm" + }, + "sha256:eec4945093aa8b86e3c3a8ed629499ac3478be1e5f0a89d74178e277a7484750": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gettext-libs-0.19.8.1-17.el8.ppc64le.rpm" + }, + "sha256:eee41ee73236cba78a31ad3914a2f49f3d00abe114e752409d9ec07e50d2c48e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.ppc64le.rpm" + }, + "sha256:efb004153a5a6a96330b8a5371b02ce4dc22a8cf6d28f5b928cc443cf3416285": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/policycoreutils-2.9-9.el8.ppc64le.rpm" + }, + "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm" + }, + "sha256:f10990a6f2e8affe55991a46ca80eda2af8c0c8a4aada3b623ba740abfb059cf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/systemd-udev-239-36.el8.ppc64le.rpm" + }, + "sha256:f14b5f40e96ae727ce58c415295141645910311915d79d446403f68ff416ebad": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gettext-0.19.8.1-17.el8.ppc64le.rpm" + }, + "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm" + }, + "sha256:f1d3e3ea7b8a12c148ba128e5e734a8615fcc7b5d2bad8a34cb504240ed6e949": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gobject-introspection-1.56.1-1.el8.ppc64le.rpm" + }, + "sha256:f240ad7059651b3df40fb6ad32a153e5da71692f716d4e0fcdbc9aed931971f6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ipcalc-0.2.4-4.el8.ppc64le.rpm" + }, + "sha256:f3495aae115e7a02bc1d55465e699a6836116a0bd34bdb7eb992e2b878d4b584": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libarchive-3.3.2-9.el8.ppc64le.rpm" + }, + "sha256:f349e95ba63ed4f9747cd2bbd177a3f6534bc797539e6e5f0d77da662c560844": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/nfs-utils-2.3.3-35.el8.ppc64le.rpm" + }, + "sha256:f388ccb860267e5e6b142708a2ebf16acf0f8181b9f59127e962159ab13d6336": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsss_nss_idmap-2.3.0-2.el8.ppc64le.rpm" + }, + "sha256:f5dd157f0b1ac9d0d898a019b0995002716aba85d028d28a1bd3b6de5e8f5107": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-macros-5.26.3-416.el8.ppc64le.rpm" + }, + "sha256:f616e1d0db786c6a194f012f85fd534dd5aa84c19353dcfa8a5a13d8898bfc3d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cryptsetup-libs-2.3.3-1.el8.ppc64le.rpm" + }, + "sha256:f661a9f8dd567b4e47c6753f94a3c9497ded0ceb08ffabe8b279420d7e9f9f32": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-tools-extra-2.02-84.el8.ppc64le.rpm" + }, + "sha256:f68cc6cecafe770005ecf01a527510374fc7daa34988bb37162dbe8b0fcf773b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/chrony-3.5-1.el8.ppc64le.rpm" + }, + "sha256:f6a005b8edb3f866d72ea95d3801930c3be8d75cdebadcf995b0d85300069840": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/chkconfig-1.13-2.el8.ppc64le.rpm" + }, + "sha256:f727e7919c662ae990d02ad2a6299ed3161ad7522587c11441477aae03549f06": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Pod-Usage-1.69-395.el8.noarch.rpm" + }, + "sha256:f79f084807195110307640a0f6e3ecbce88cce070961ea19d68bdfafab3862fb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcom_err-1.45.6-1.el8.ppc64le.rpm" + }, + "sha256:f7cbcbe2816044bb92ca5066d88ac8c3b578a68eff16b2745d93c90483a5153f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-hawkey-0.48.0-2.el8.ppc64le.rpm" + }, + "sha256:f81b7190a3c12a3932ae5de934c19033079d1d0766b6b3b72aaf4edec0b8755a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/prefixdevname-0.1.0-6.el8.ppc64le.rpm" + }, + "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm" + }, + "sha256:f8f85ee37485e4ea80f24214571cb87889e226a520a1d5dc5699344bf59717ca": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libnfsidmap-2.3.3-35.el8.ppc64le.rpm" + }, + "sha256:f94e7324ef21711961c6e223210fcc27df0d84a9506487c633f225f00fe4432f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rsync-3.1.3-8.el8.ppc64le.rpm" + }, + "sha256:f9607d29ed10edab125dba7a1972b0f783a0522eb29f03f825abbeb5281fbeeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcroco-0.6.12-4.el8.ppc64le.rpm" + }, + "sha256:f98a963e1bd233a65606e24dd2b941455e7233e6d9d0d07925f419c85be2bdc2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-tools-1.12.8-11.el8.ppc64le.rpm" + }, + "sha256:f9bf7114261adcc471838f4f82e7b37d3e411282c5c45aeb7de29fb6f990f836": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gssproxy-0.8.0-16.el8.ppc64le.rpm" + }, + "sha256:fabddaa901a0de98c661612755fbe4ebe4ac1ec372a5e0ec6b7874ef6901340f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pam-1.3.1-11.el8.ppc64le.rpm" + }, + "sha256:fac9542eacd842779725fe679851cdb7cff06da65beb71fda320610ab1e6ba67": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-interpreter-5.26.3-416.el8.ppc64le.rpm" + }, + "sha256:fb110b4fd708d68d41606e0120f5befbb171e6a9f8be2a23618284238fbf19dd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libfdisk-2.32.1-24.el8.ppc64le.rpm" + }, + "sha256:fb97246f1e22b2db98fc309470c4d87755ecc59e5b98047c52c4fedbb08d9b6f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rhsm-icons-1.27.9-1.el8.noarch.rpm" + }, + "sha256:fc16215bdc96167d391b31193e8a66a5ca9612f907e41e18e15450e61eaf4208": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kernel-tools-4.18.0-221.el8.ppc64le.rpm" + }, + "sha256:fc1ae52e3812c059032ad99f074e2a2019c6c005d5b31ea33365c301eb5d4a2d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/coreutils-common-8.30-8.el8.ppc64le.rpm" + }, + "sha256:fd5c2530f60be39592a9b1b7a65569d44f5bbb826db5e721d17e3cb9d6ffe41d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.ppc64le.rpm" + }, + "sha256:fd6163ed3dfc4d67c4f0aab0cc621815c59c3c95835cafac74155a7f4f85f202": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libtalloc-2.3.1-2.el8.ppc64le.rpm" + }, + "sha256:fd75c594f871a3353d326833e630ea1d28e5f446f796b836dc628f8c9c039f88": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-pydbus-0.6.0-5.el8.noarch.rpm" + }, + "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm" + }, + "sha256:fdcf713f1e8b7710e8629b2ba05e336cdc454be98f1bd492bdf8de8c50595437": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/vim-minimal-8.0.1763-15.el8.ppc64le.rpm" + }, + "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-jwt-1.6.1-2.el8.noarch.rpm" + }, + "sha256:feac297c00956073e5f1f4465db8d66ee8498f67719e6dc0bf2b808b4d23523d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-tools-2.02-84.el8.ppc64le.rpm" + }, + "sha256:feee80d14e2857f2a229cfed7aea85b74b6f2350532816e824c09f356dc38126": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssl-libs-1.1.1g-9.el8.ppc64le.rpm" + }, + "sha256:fef4bb13fab5780f4f9c9d8962c7d15378c7128a69ab08244b1e520b295bf685": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libksba-1.3.5-7.el8.ppc64le.rpm" + }, + "sha256:ff355a15b36bb34bf2f0a8c4cf4b16347981c0c95e71ea7f3c125d01a33e57c7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/krb5-libs-1.18.2-3.el8.ppc64le.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:e280c3b7c5bb7838c7956ea3605165ea35480cde85a617c1eff6ca64d6157fe9" + }, + { + "checksum": "sha256:7c7df93f7b01587f4945ae4c69eec2af512ff4dfc83d8a36268c9238acd9aa71" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:3a5d1837798f980b89b6d635fe40f118cc871fac7638dcea3539d45e4e9f7985" + }, + { + "checksum": "sha256:d96bfcccbdce94af25721e3018a5853ff9670de828b6ac61ed76b5248a413e90" + }, + { + "checksum": "sha256:1d084e85f865a35f39067256c83f17a05632b531d9b6c5afb8cdecca1e594d62" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:f6a005b8edb3f866d72ea95d3801930c3be8d75cdebadcf995b0d85300069840" + }, + { + "checksum": "sha256:a6eed3ca128d562c0aed92a123d9d726cf8074df7f98c7ecef5c40257d5bc76e" + }, + { + "checksum": "sha256:fc1ae52e3812c059032ad99f074e2a2019c6c005d5b31ea33365c301eb5d4a2d" + }, + { + "checksum": "sha256:5d190a4742bc826edbe3d3dfb261c94688aca6e1bd0d431b58fc0feb9f40c1b5" + }, + { + "checksum": "sha256:03e586f573bb9a8a463215d194a6b2bceff16d67af096883df5bbcda0ca55076" + }, + { + "checksum": "sha256:13f54c6408ac37c8b4a24fb22af1a719d05d86206d1d4f979d71fad96ab7f319" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:f616e1d0db786c6a194f012f85fd534dd5aa84c19353dcfa8a5a13d8898bfc3d" + }, + { + "checksum": "sha256:20a994752f44f7f2c1c3df9850b5381be5b641c0ee913a80a794ca6c49ef7efb" + }, + { + "checksum": "sha256:eee41ee73236cba78a31ad3914a2f49f3d00abe114e752409d9ec07e50d2c48e" + }, + { + "checksum": "sha256:b490e452b2ba6ebb8980392cef4b7be06b9788ad4cfd37ce31c568d80b29861b" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:2af56bdac984d2755e44a4bc733df7217c1756aac3007dbca1408a218cc6c2b4" + }, + { + "checksum": "sha256:ed5d642b5684142e9224449ffc26aeca810276b1182b66a391c2e276b988ae3c" + }, + { + "checksum": "sha256:f98a963e1bd233a65606e24dd2b941455e7233e6d9d0d07925f419c85be2bdc2" + }, + { + "checksum": "sha256:ccc3640eff73677c4f962104b7a9fa6cb8c08787d77c4ba016569b0b11deb8f5" + }, + { + "checksum": "sha256:2edb7ade3d137c1373e8dcf1f765e62dabd7a86f256f2b8872baf1b4cd4a420b" + }, + { + "checksum": "sha256:e811b0abd14d296513d7900092e66d06736d42e46db06d06d845dcd260fbc665" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:72c17b5b06cb08a819da004e904d03ee23c1dfe86e0b29231cccc6f50d303ceb" + }, + { + "checksum": "sha256:12b368c93ec9e4282ee1aad905e336166aa6dd2519a9f53a1adc11b6fbc2095c" + }, + { + "checksum": "sha256:559de474c1dd617a53585eb4913da24181b4b52a4e579bd91c4fd280f5c7776f" + }, + { + "checksum": "sha256:299078646f29228e7f497925598b233024996dfaccaa96dcf62c1d14e30a7735" + }, + { + "checksum": "sha256:39acf20c2687b0c174c5961f88209b42b689ce866701f78bbb94bd875afd883e" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:3a65dd5868f303c775f48e7acef810cea2a606aec93496cae36c5e9eb9129650" + }, + { + "checksum": "sha256:b896a07208090c08a314e4f590ed8ee399f77ffc6a73864a11b4e9dcac234bba" + }, + { + "checksum": "sha256:40e937791b4b008d86cc82d0bd7564e55fa2b08c092b2a7dab0040876f790022" + }, + { + "checksum": "sha256:7e6bb03794258406bfee886f507934be08fe1d80a8643af028e631b37f9bcd4f" + }, + { + "checksum": "sha256:eb2cc86f4f01aa0ee86ec3a878ceac7eabe04ce5142f8a4b06e3f22cab002b75" + }, + { + "checksum": "sha256:b25a8c87220920855a25357cd27024b1b9b87fefa48e1e877f7e23d0e1954a1d" + }, + { + "checksum": "sha256:a48836542020c973d67ba459387dca8549d4d65749926eed8031f601b18a8738" + }, + { + "checksum": "sha256:96904dd00cb918042fa0492a244c9ffcd2609604adb639a4e41a75368967f2b0" + }, + { + "checksum": "sha256:17d887ffe27ba3dfd324bae27b0309c13b0b8430597fb65cb4b377416cc21cf3" + }, + { + "checksum": "sha256:2034236aa3ea2de19c9d9b717b83515a7a2e82685e8963d03fbb19973b20c249" + }, + { + "checksum": "sha256:75f6ee212b397466bbdc9320473ee2de0198b9573d3204a71422ef215e985e8d" + }, + { + "checksum": "sha256:81a30f2977dfa5ede4e3a4077c8590de94c2f6bc97c4968f7bb556c713169a99" + }, + { + "checksum": "sha256:f14b5f40e96ae727ce58c415295141645910311915d79d446403f68ff416ebad" + }, + { + "checksum": "sha256:eec4945093aa8b86e3c3a8ed629499ac3478be1e5f0a89d74178e277a7484750" + }, + { + "checksum": "sha256:d0bdb653ebfa5cc5a596157434e50d544ad176bd6c3869896be0aa5996199771" + }, + { + "checksum": "sha256:ca164a41ad98cbc73c23259bb112bbd04162bb363b596a3c99eac02182a01d26" + }, + { + "checksum": "sha256:c58f71151ec41a8da17f8d5a45364e6c85cb3fe149993047ac9ef4b5aecd1fff" + }, + { + "checksum": "sha256:8c8e8e8db16ef828278de55cefb09425a83079597a093f93e6261fd5bd027406" + }, + { + "checksum": "sha256:5009afc9241f592691ce9097fb74dabba84b1d2eaf267a7bea71b33bc7ac3795" + }, + { + "checksum": "sha256:350d1a6728391907db3ef0ec69b80837d145e39b0cf86a36161432f587dc3308" + }, + { + "checksum": "sha256:5896adabcbefa7b297052fd9687b51a9eefe883c91f71e7be71a9200188757d1" + }, + { + "checksum": "sha256:da9ced19708b900ccc4053ca3df8d58c081869b46c9ee801c1685f447a299731" + }, + { + "checksum": "sha256:715dbe24d12d9fe43a6efa804dedb3e50e5babed510073b838b6e42ec06d5b8b" + }, + { + "checksum": "sha256:5246dc8c3bae5d860cb5ca12d787e976c3ca70bc3d023350eabc8a9e88601058" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:2c3aeeee40861bf0576cfccb8a1d7fbf5948dd60e1c97d2354b8d4dbe34247e8" + }, + { + "checksum": "sha256:ce85ea9b2eb4d1e2ae94136168cda2bb768fe995ca09620615c1e69b8b0d6bfb" + }, + { + "checksum": "sha256:feac297c00956073e5f1f4465db8d66ee8498f67719e6dc0bf2b808b4d23523d" + }, + { + "checksum": "sha256:f661a9f8dd567b4e47c6753f94a3c9497ded0ceb08ffabe8b279420d7e9f9f32" + }, + { + "checksum": "sha256:05421657115297a907645ca4536e8d81e82da116f20053541f8c1e71d62977a6" + }, + { + "checksum": "sha256:16ba1aa8c5db466e4288412bfedf01be75918b4cece328bdf8ebe590a845d490" + }, + { + "checksum": "sha256:7f2af219510f9bb8c70beea8c1bbfcdf3d84f9c96ebf28fe84c8bac20f4516e3" + }, + { + "checksum": "sha256:ea8d6dd8c5e592d79229541874e6c2521e456e0efa5386a1fde95a7ed93ee4bd" + }, + { + "checksum": "sha256:e820bcff2a4fb2de93e1e4d4b369964bbdc82e2f6fa77d41c3a8835a9becb909" + }, + { + "checksum": "sha256:0c706e235cd737512024bbc99a6fcbca41a9898c13a4ae11797514ac99a16839" + }, + { + "checksum": "sha256:7ddfb571e9fe4183721b20fc063c9b0fc1797b2cc5c7d0e677edce583d72c0c5" + }, + { + "checksum": "sha256:56dc429cc3404a69f5d72338303a615fdbb16380688c93a4a7e13ecd773a80f2" + }, + { + "checksum": "sha256:ba5ed56f4798d522c6ba041f841617e9362a33b41eee1794214d85eb3bd3fa53" + }, + { + "checksum": "sha256:7519682fc74640736910735ce7b0f3a4ca6deed6d6e365d1cff47f8412519a13" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:76ed4d1820916e1d4d5ba12a9200b790fc75f2801937d63753fca7e12b6c9d6e" + }, + { + "checksum": "sha256:16744c34b4e5d937388ea1169160dff7ac02692884d90c87b730ba0f9964476d" + }, + { + "checksum": "sha256:5a67ae309abe3ef1d6dc326a373abc5791d4264b657fa2e3e15be334fb1baa1d" + }, + { + "checksum": "sha256:cb77a2c9467e5873cf21f429069da709089dc10062c4d927d9e59eca0aac2546" + }, + { + "checksum": "sha256:ff355a15b36bb34bf2f0a8c4cf4b16347981c0c95e71ea7f3c125d01a33e57c7" + }, + { + "checksum": "sha256:68269d4f3588a15e94360c9d0f595d0ad7f1ece27968162ac42468acd462e526" + }, + { + "checksum": "sha256:3d425b214eeb598d59e4891ee3f5b0c941ff4755790907588309b431c1482195" + }, + { + "checksum": "sha256:f3495aae115e7a02bc1d55465e699a6836116a0bd34bdb7eb992e2b878d4b584" + }, + { + "checksum": "sha256:32fc4d89fa8040aa8a180717305eb2c7a7094ad255cdb66fd7af2254fa89a5c8" + }, + { + "checksum": "sha256:58a7c06351efae8f3b1bff3b4832ed02ebc9f1018d6978b1703c6e963f26db98" + }, + { + "checksum": "sha256:b56bf1fc0c0818069d8833845e90c629215abbc8bce652c52cf077dcc224be34" + }, + { + "checksum": "sha256:7676c7a3f92aedec71efad68ce95c1ba5362b7bb75a815b70174a96a2126cebe" + }, + { + "checksum": "sha256:39fec51b4b40aef643f68f41cca660bce59c5fbb360bcedceec04c17cafd17e6" + }, + { + "checksum": "sha256:f79f084807195110307640a0f6e3ecbce88cce070961ea19d68bdfafab3862fb" + }, + { + "checksum": "sha256:56a66127f50af442a8bbd3183c29d39d4b1825526dd134405ecea82839ccca23" + }, + { + "checksum": "sha256:f9607d29ed10edab125dba7a1972b0f783a0522eb29f03f825abbeb5281fbeeb" + }, + { + "checksum": "sha256:2c1a643202117f9bdf48b11c24b60a01c409f2ccdc43914a89ac980f7d692ae6" + }, + { + "checksum": "sha256:e660d48e49bb3da5f5e8ad3e79b65184a95eeb4351b3f6d38e3024c332bbb570" + }, + { + "checksum": "sha256:6b0cfe88a81e314afa03ce297f2bb0470a29a8f13465ba4a52fc65550027cbda" + }, + { + "checksum": "sha256:79d49c7e1c6bde0467649271fb45928a313c5a8cad3c0855d3cae9277e9b474c" + }, + { + "checksum": "sha256:50f00be9540e2ab1e81f955e9ad33ecbb24ba6538ddccf418ad00ebfeb1fe472" + }, + { + "checksum": "sha256:fb110b4fd708d68d41606e0120f5befbb171e6a9f8be2a23618284238fbf19dd" + }, + { + "checksum": "sha256:d20bcdcb1e6a8d16a5df9cdc99744f907516b9ded51b671bd0a0f31189ac43a5" + }, + { + "checksum": "sha256:1a92ddb2b7caa477d02eadcd97b1f4fb124359609dc827dfedb7de0976ebf824" + }, + { + "checksum": "sha256:4f2725db0dc03a8bb729ccf6ced8fc4e8eae995afa7029decb7a7aa81e6eb417" + }, + { + "checksum": "sha256:6b6b362f865498d59d17673d93fabe076015e7804462412e3da589335890f8d9" + }, + { + "checksum": "sha256:69997f597de86de2dedda20db0f5b516585751822162f4dacd01cbc2808a9155" + }, + { + "checksum": "sha256:7221e9c72741e31d3e954cae6a1b780b15da86abb70d6fdf3c125b1a440ce2b2" + }, + { + "checksum": "sha256:d4fff4e2707628db04c16a2cd8fa0c5e9854084688acf74ca4c1db27ea9d2f8d" + }, + { + "checksum": "sha256:4a44b9e5e7977128528c4108ef55d49e52290c51d376c6ffd177a6b59113fbf6" + }, + { + "checksum": "sha256:fef4bb13fab5780f4f9c9d8962c7d15378c7128a69ab08244b1e520b295bf685" + }, + { + "checksum": "sha256:5ea0604f773c0ae0e273206443a5f115e21010e8acb1d580a22e5ce0219ac991" + }, + { + "checksum": "sha256:23b438c52f920e7d3870031673412e81e1edc12c427e64e204ba6620df4401b7" + }, + { + "checksum": "sha256:03318129f3b75d57abb1f15adf1ddc26c23fc178432c66b5ffc43e586c948428" + }, + { + "checksum": "sha256:530f8aa49c10d80202e2b3e2c2b505dbdcdc2c3b56231d5986b6388da3ffd12b" + }, + { + "checksum": "sha256:7c458f0dfbd31662e5a8a91b847881dfba6ff04786bc21e7de230236ce8ffaa7" + }, + { + "checksum": "sha256:9f526c50ff9fae2f6c1d02eb10b6ced74b3ee94e7292e7ad483076ab730c1eef" + }, + { + "checksum": "sha256:d42e36ab818d9284eb5fb9d46a0af71d99b91d917b3fdf1ac9af3ebd473606f1" + }, + { + "checksum": "sha256:95971777d5b9af4cc37788f0b9193c693de7dc2f0f842f341a5d2182af4edb24" + }, + { + "checksum": "sha256:e02d721b2396471683a7f73d681ed4cc71bb2d50ef0e8390cc97ab047e4187a9" + }, + { + "checksum": "sha256:278dffe93fc19fd1613a9ab8d61c87a755e68120163d5a1352368b68f3880074" + }, + { + "checksum": "sha256:7c526e6c9e22ba9fbd88da30824a4791c87f3da890426890be3a72f2ebf7f0c8" + }, + { + "checksum": "sha256:08af4dc49ee9fbef7b2b6320da7809a952fa5d4bb907e546aa2a74827dcd7390" + }, + { + "checksum": "sha256:94b8f8ce9926a60524cba62e9695785bf12f3ca7f6de86cbcb510889e9e61509" + }, + { + "checksum": "sha256:93e8eb519fee69ad0a90733dea8577670a1c62f02fce9348633880e0d9190f4b" + }, + { + "checksum": "sha256:485ef6f1f8b26b7bf4c1ae8ee8ae7bda9ff679aa0fc9e62d1ff990a54e0e559d" + }, + { + "checksum": "sha256:a5fcf3d4d064289bd04a9f19cc204c8facaf389c0c10e47b075529f0601dc02c" + }, + { + "checksum": "sha256:d07a535fd49579414267571a6e7286d38061e65dcffd1f947e32b8edeb0e7f58" + }, + { + "checksum": "sha256:6cc8c3ff2b465defb9ac46a2caf95d53c887d18f68bd43f21e6e3635b884d6ab" + }, + { + "checksum": "sha256:4e4dc28e98b8470dfbb789d784b8bc5afc04dc7295047d2ee16d36ab4dbaba1d" + }, + { + "checksum": "sha256:e1c727c81c7d54b21ebf7346d81ea57bbf77cdee59efc2c1bd57d78b45697de6" + }, + { + "checksum": "sha256:9bdf8e5f329b54f1ea45a5d5277d650be84f7bd2f1570d7c5e7ac743fd57cf1f" + }, + { + "checksum": "sha256:d3d600e075b60b1462bc5f2cf7319ad484a416739175aaacf384a5805749861c" + }, + { + "checksum": "sha256:86ae5e445a80e4485162e6f24fcf6df539fa7d1d31650755d4d5af5d65ec2b88" + }, + { + "checksum": "sha256:8ec9594f8cb1eb3313cb8979201b0f85a914107fc4f706ea27727e977da056ee" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:36ccdb1a1673d3f739a29105edc45c09074ec667cc470051c2d9c52bfa6b78b0" + }, + { + "checksum": "sha256:97ffad7f79927ee908510ae381ada704827d369b5a0b8715214f51270a0984d3" + }, + { + "checksum": "sha256:e6bdc7b1e5bb8b3c9d578fa1a88c4cbd3ff262b14857464a691b6afd34e38b90" + }, + { + "checksum": "sha256:a7db88e037715eb0ea86ffa464285615549b23178a14d691935685bdb6df4742" + }, + { + "checksum": "sha256:18b66eb926d6554fdfa6c6464c301d906d63ec69f54ac318cf0a5e7cccf43d2e" + }, + { + "checksum": "sha256:349d5e65aeee405ea53d10c651d541418f11af4bf5f436ab5cba8c07183f405e" + }, + { + "checksum": "sha256:e4dbbf5ba29de01b7121586f8bfc99305168d1db301ba121320344e344012704" + }, + { + "checksum": "sha256:eb870676d56cd2212611a9814f6ab08b53a209d1bee37e38fdbc434b6a1600a1" + }, + { + "checksum": "sha256:81ca20194dbba8bb696a02f1f01d45b1ca73aa38a18d97173022fcf96e195156" + }, + { + "checksum": "sha256:679ba7cf5974aaeb4b50a926e8fa28821f48b71c182d50b1033bccb6fdc34a06" + }, + { + "checksum": "sha256:9f1810ee304c2827027a4dadb0142f6940c28991b5371cbe302593eece6c25e4" + }, + { + "checksum": "sha256:0143da5903a3053bbd62714904db5a7c1aba3b9ff77c97d9126a4479d3047c58" + }, + { + "checksum": "sha256:756fe3065871f2c7c1f9635ae75119d1755dbb6a5ea62fae7660b410d9392e34" + }, + { + "checksum": "sha256:e943b3e1fb71459be6ee74f944e7bcf6a0835858b48924501645eb00997b5d1b" + }, + { + "checksum": "sha256:d3c4038a7a3be6987f74236394642be84092a9dd731317dfe5974af757c3ccfc" + }, + { + "checksum": "sha256:7d7280d0de03be269a1b078534d286496085416efef921996590bcce7db64736" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:bcd9e55362d6afab44a89acd877c8c0a8ae27572028bfc9282f3bfec0d21e27c" + }, + { + "checksum": "sha256:68c10fbde60ad63306c334df256056bc93eb04d56eaba5ddc40254e81e815056" + }, + { + "checksum": "sha256:4538fb52ec654977ccaf56d0fc26b491f4cdda58e8070f5922165ac77104857c" + }, + { + "checksum": "sha256:1130c50d23d464653fbca78aa597b1c65d22c9163c70cf3011a9a116af76bbca" + }, + { + "checksum": "sha256:b1184fa6ab84322f715418f76a8e260c6a6bb352307cce9732d72ed3f0ebdec0" + }, + { + "checksum": "sha256:feee80d14e2857f2a229cfed7aea85b74b6f2350532816e824c09f356dc38126" + }, + { + "checksum": "sha256:0ecb10a5141fd74ad9165fef9dd7d9485a34ea1b10605a9d4b61eefe60b767d9" + }, + { + "checksum": "sha256:0970bde39d7cc1dfebda51e4359f63821fe8dd573d46253fc471f8466c79ac82" + }, + { + "checksum": "sha256:dfd1a319a66586bb1027b9a7a674f17b18070e3b389eb8dcd34ffad3ff485725" + }, + { + "checksum": "sha256:7f3337d8024c8eb5d67ed830c2ed1c5b046887d4806ea22cf6e8f3f77b8d7e6f" + }, + { + "checksum": "sha256:fabddaa901a0de98c661612755fbe4ebe4ac1ec372a5e0ec6b7874ef6901340f" + }, + { + "checksum": "sha256:e773a81f7cba7beffb23d9ebb6ce545ba4b1556091544f73ff57d263cc552176" + }, + { + "checksum": "sha256:d79c92d015fa952edf2a4ad75f95042139fbf8b4323f24e939e1ed06481253d9" + }, + { + "checksum": "sha256:d8b5b571fb84c7ccfa24f8a20460471d41fc4487d6d0c34f91fbeaba4c857eb2" + }, + { + "checksum": "sha256:704622626b2938eee1c096c1ecf1e5fc88be4e4eac80a911d0c2ee893f9657b1" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:efb004153a5a6a96330b8a5371b02ce4dc22a8cf6d28f5b928cc443cf3416285" + }, + { + "checksum": "sha256:bbfd0c8d360ae86528c2d06b6b64ceb2d6a974dea101ba5e1268740b689142b9" + }, + { + "checksum": "sha256:ccd0b65f90f2db606a9b38f00c71f5bcd7611fafde92e185a57d3e2a3f027787" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:6501a0edf570ea01137395ff13cdbc3914dee9e536ab92ff9698a5ddd76dfb16" + }, + { + "checksum": "sha256:f7cbcbe2816044bb92ca5066d88ac8c3b578a68eff16b2745d93c90483a5153f" + }, + { + "checksum": "sha256:0396d12973b68a7d16074aa51f75e706c0b7558cd24d32e5573c49a487b2497c" + }, + { + "checksum": "sha256:ec450facea1c2a5dc1a6b5bacc2330dd5174780d92db66379f4918c2ab40da83" + }, + { + "checksum": "sha256:495c3fc6f15c5daef8686fd01d1f7008bbc72ca9c963da1ae3cf60ffc519f48d" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:8ac41d38c793722177492319ae57588ae2619962c8442e64aecc4b6708295707" + }, + { + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:d8ba6a91610d87dfb599018c887514af663a0f963ed6b25a83bac8fba56fa266" + }, + { + "checksum": "sha256:16294bc45d609de6ce07b660fadc851022e43d00a13f3c98c1f45064abf591d7" + }, + { + "checksum": "sha256:b2d090246903da9162c06912dcfed747df9e7ba1b9f029a98c96c4155f68ce67" + }, + { + "checksum": "sha256:ba5b6364787be1ce76c7d5d3f7861f75157db6c5354f4b6e7b26ba8962fb226d" + }, + { + "checksum": "sha256:3ab5aad8b10e5343c08af8c24775334b6111cd50fb9629f21335626057c7dab9" + }, + { + "checksum": "sha256:acdee02b0e12502f5010ebfeb9d3cec41172e83db45a5e941085a8edba1bd408" + }, + { + "checksum": "sha256:5919c5de67dbc1f44a553cbb4037572c258bb394ff27ca838b2198d05a0c2dad" + }, + { + "checksum": "sha256:54b3552112a26b7ad79db1251bc0e8e0415ac60da299d54700c5bc59760e5be9" + }, + { + "checksum": "sha256:183ae7a707951036dd77805d75aae1dbb055ca52d8fecdc6ef21d5e1518fca4d" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:94700eed0bd231ee73fac06e38ce66573466039c0454774bf268ea50a03fe056" + }, + { + "checksum": "sha256:d2206467c216ee77262401385a61b540eeaabca9a44b9ab864c993962ba76758" + }, + { + "checksum": "sha256:dcf427833f63e4672ecf04100181b671235ae2b50d450a25976ea176ead363fb" + }, + { + "checksum": "sha256:97e8ec14c0569aee6633342fd3b05507b8c30c9d62b52aff0c3e693640d78938" + }, + { + "checksum": "sha256:be5a5ad0d3338da31fca41645852b03c748c41e77bd715619033f71496f3c875" + }, + { + "checksum": "sha256:b9a80c6b1e8bff298ad6215248ce9d193d734dc038f1de211c01a2e118b9606f" + }, + { + "checksum": "sha256:f10990a6f2e8affe55991a46ca80eda2af8c0c8a4aada3b623ba740abfb059cf" + }, + { + "checksum": "sha256:2081809fd42c6cefcf677362a825c38b166f04df8edf865d5d6404348179e536" + }, + { + "checksum": "sha256:d55a783930503e7f1590bc2ad10d9fa184ed3cb44e2ca85ae2bbe11fcbf166b8" + }, + { + "checksum": "sha256:3f5c97c72cbbe552e9f7183d1f8eb477a3f46647bb513a175a8c158d3eba3dee" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:7a05e800e37b4aa74e657a829097090faf013338056c8bd6ebfeee5ae4467a22" + }, + { + "checksum": "sha256:241a563df5ae3b3b49d45cbf9e67b6932b8345b3fbb40029dbb3b0834cf3db16" + }, + { + "checksum": "sha256:87209220ec94795ac0e079e98877a4f911beaee3a829bf95cda5a8b24b545a94" + }, + { + "checksum": "sha256:2b2e0d9a397d27c7076f05ab309c71ebffdf2c33df95de51c700af181899c87e" + }, + { + "checksum": "sha256:37e4f7e854765b98e8dd10986b758631c7ca00942bc53efb4003ee326e1cc834" + }, + { + "checksum": "sha256:df50c6f03ef2fa2d8f900a4a95d84921511b5e435533677f3067c1fd47f84b93" + }, + { + "checksum": "sha256:e9d3adb5df960913105864554af0d17ac26287f7454c13865895cec93c57cc6c" + }, + { + "checksum": "sha256:d863808793a34bae10d7bf066b68be37883eb38cf117172de5e47c9eb729cb3d" + }, + { + "checksum": "sha256:b64080283110b2e23a184787ccd14eca6994c321cf4be9cb16205cfda1ab5d89" + }, + { + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "checksum": "sha256:a07b21bf156e4a15c566506eb5f5b9e9c7087a58c471c004f53d4eae1bce90e3" + }, + { + "checksum": "sha256:fd5c2530f60be39592a9b1b7a65569d44f5bbb826db5e721d17e3cb9d6ffe41d" + }, + { + "checksum": "sha256:ddd3be2e7e48c17085b756240d53a6b69a79ed82266cd4131c5459b2ee2a676d" + }, + { + "checksum": "sha256:744a6f8d1acf3c49b77e0f96217a6bae3d7dba6228a16676be21b7332adf9f43" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ] + }, + "runner": "org.osbuild.rhel82" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:ec5d13a3aeca7edd6397ba211328a8d68adad4b135c7c2e78020f9eae530daee" + }, + { + "checksum": "sha256:e88bf835ce671803517345468b682f757022d788b17ebac257bb5ee4879222b6" + }, + { + "checksum": "sha256:82a40c656ab0a5658383654ba842d29b12a7334207ef80cc23c43fa3c9bde43b" + }, + { + "checksum": "sha256:c00ca52f5d13adf55105e6276d32cfad2637d57db399e65d08947672fa8a4acb" + }, + { + "checksum": "sha256:e280c3b7c5bb7838c7956ea3605165ea35480cde85a617c1eff6ca64d6157fe9" + }, + { + "checksum": "sha256:65911ee8ff0d9bb81f4ce2537ff9cf58fe0903feba5119f0b261e3237ebafa30" + }, + { + "checksum": "sha256:7c7df93f7b01587f4945ae4c69eec2af512ff4dfc83d8a36268c9238acd9aa71" + }, + { + "checksum": "sha256:ea3ecc89cb330622a075fadbfafb5789de7d78a91954931dee0aa56cd7b0472c" + }, + { + "checksum": "sha256:1a6f0a2a3a9e6a1df7917d95918f63353796c8a11c6d73dc4623c968dc612750" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:3a5d1837798f980b89b6d635fe40f118cc871fac7638dcea3539d45e4e9f7985" + }, + { + "checksum": "sha256:0ec21164642fdc03a56ebcdeb4691ee5db63f8da78a2762bb5b8d86398ca432f" + }, + { + "checksum": "sha256:5ec6ae7905536e750f71445ab42960577aa7355d58b4e4f683aa29e270e6adb7" + }, + { + "checksum": "sha256:d96bfcccbdce94af25721e3018a5853ff9670de828b6ac61ed76b5248a413e90" + }, + { + "checksum": "sha256:7414afd238a66fb6c75319f9a73f9aa267d3578ed63fc850cf633dd08cd2ebb5" + }, + { + "checksum": "sha256:1d084e85f865a35f39067256c83f17a05632b531d9b6c5afb8cdecca1e594d62" + }, + { + "checksum": "sha256:ac8a116d533843bfb95ebc3777b084b76fea22f67662e3a20c51fae5325d4000" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:60dc43534d0e8b5e6917accd3c76c8b68f95b72e19cccc194bf1c449c6d9c7af" + }, + { + "checksum": "sha256:f6a005b8edb3f866d72ea95d3801930c3be8d75cdebadcf995b0d85300069840" + }, + { + "checksum": "sha256:f68cc6cecafe770005ecf01a527510374fc7daa34988bb37162dbe8b0fcf773b" + }, + { + "checksum": "sha256:84fe687d85ab19aabd3933ca4e0eebca7c16486d9475b5b587bdf83570084027" + }, + { + "checksum": "sha256:202cfa88a6b2f1ec6a0bc0546f578c1ca6b5b6fcfeaf3e1228beead14d8bf758" + }, + { + "checksum": "sha256:4887b8527e2390441745251ddd5f37aa53acbf3f2a4e7e5a5d45588c9de0cb61" + }, + { + "checksum": "sha256:a6eed3ca128d562c0aed92a123d9d726cf8074df7f98c7ecef5c40257d5bc76e" + }, + { + "checksum": "sha256:fc1ae52e3812c059032ad99f074e2a2019c6c005d5b31ea33365c301eb5d4a2d" + }, + { + "checksum": "sha256:5d190a4742bc826edbe3d3dfb261c94688aca6e1bd0d431b58fc0feb9f40c1b5" + }, + { + "checksum": "sha256:03e586f573bb9a8a463215d194a6b2bceff16d67af096883df5bbcda0ca55076" + }, + { + "checksum": "sha256:13f54c6408ac37c8b4a24fb22af1a719d05d86206d1d4f979d71fad96ab7f319" + }, + { + "checksum": "sha256:3e572b42e5d4a488026eb5242396b43c88e13971e873d2951cd149a96880cf09" + }, + { + "checksum": "sha256:390cd4d0df9ad341f80b740c40c0959b3b0c31cdc3d0dfb415e05af72ada00d4" + }, + { + "checksum": "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:f616e1d0db786c6a194f012f85fd534dd5aa84c19353dcfa8a5a13d8898bfc3d" + }, + { + "checksum": "sha256:20a994752f44f7f2c1c3df9850b5381be5b641c0ee913a80a794ca6c49ef7efb" + }, + { + "checksum": "sha256:eee41ee73236cba78a31ad3914a2f49f3d00abe114e752409d9ec07e50d2c48e" + }, + { + "checksum": "sha256:b490e452b2ba6ebb8980392cef4b7be06b9788ad4cfd37ce31c568d80b29861b" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:2af56bdac984d2755e44a4bc733df7217c1756aac3007dbca1408a218cc6c2b4" + }, + { + "checksum": "sha256:acd73603cd1d0dd6542d16ad9f86aa0ce95517a6c5bd2ab1279417dc4cd0aa8b" + }, + { + "checksum": "sha256:ed5d642b5684142e9224449ffc26aeca810276b1182b66a391c2e276b988ae3c" + }, + { + "checksum": "sha256:f98a963e1bd233a65606e24dd2b941455e7233e6d9d0d07925f419c85be2bdc2" + }, + { + "checksum": "sha256:7ce6aa282f9f23c46c44186595924d05f4e7a899b504eb95a0f87008f6620268" + }, + { + "checksum": "sha256:dd379385bd1d2e05f50c4795e5a0eff9030fdac0fd2579bb4b56233257672b27" + }, + { + "checksum": "sha256:ccc3640eff73677c4f962104b7a9fa6cb8c08787d77c4ba016569b0b11deb8f5" + }, + { + "checksum": "sha256:2edb7ade3d137c1373e8dcf1f765e62dabd7a86f256f2b8872baf1b4cd4a420b" + }, + { + "checksum": "sha256:477fc6eb3aed3d10f9d730b5960cdb4bdd6381c337e8fd3303537a22a558eba4" + }, + { + "checksum": "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2" + }, + { + "checksum": "sha256:6dcd9452321975a5d2014a925e80d6629c6de79758fb59844a796f41e837ce7e" + }, + { + "checksum": "sha256:e811b0abd14d296513d7900092e66d06736d42e46db06d06d845dcd260fbc665" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:075bb18685d13a0a2d628d665ab5585c7e80c65edf3efc72b5c27b6046ba13b2" + }, + { + "checksum": "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c" + }, + { + "checksum": "sha256:12b368c93ec9e4282ee1aad905e336166aa6dd2519a9f53a1adc11b6fbc2095c" + }, + { + "checksum": "sha256:70ccdbee7bc8bb785263a24547b64faa09ea013046a548a341b204391328c887" + }, + { + "checksum": "sha256:5f34bc7117ef6b1bd601735b3c1e9e8ee56852ad6d963471813d128e7cbb325d" + }, + { + "checksum": "sha256:921bd23cb652304164d7ca8bcf22d948caad840bd96a180c38c11374c7b93e2a" + }, + { + "checksum": "sha256:559de474c1dd617a53585eb4913da24181b4b52a4e579bd91c4fd280f5c7776f" + }, + { + "checksum": "sha256:299078646f29228e7f497925598b233024996dfaccaa96dcf62c1d14e30a7735" + }, + { + "checksum": "sha256:39acf20c2687b0c174c5961f88209b42b689ce866701f78bbb94bd875afd883e" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:3a65dd5868f303c775f48e7acef810cea2a606aec93496cae36c5e9eb9129650" + }, + { + "checksum": "sha256:b896a07208090c08a314e4f590ed8ee399f77ffc6a73864a11b4e9dcac234bba" + }, + { + "checksum": "sha256:8527e6b228ce500ac99cbff9bc11822120586664e52e40203a6dee86d3ffe238" + }, + { + "checksum": "sha256:40e937791b4b008d86cc82d0bd7564e55fa2b08c092b2a7dab0040876f790022" + }, + { + "checksum": "sha256:7e6bb03794258406bfee886f507934be08fe1d80a8643af028e631b37f9bcd4f" + }, + { + "checksum": "sha256:eb2cc86f4f01aa0ee86ec3a878ceac7eabe04ce5142f8a4b06e3f22cab002b75" + }, + { + "checksum": "sha256:b25a8c87220920855a25357cd27024b1b9b87fefa48e1e877f7e23d0e1954a1d" + }, + { + "checksum": "sha256:a48836542020c973d67ba459387dca8549d4d65749926eed8031f601b18a8738" + }, + { + "checksum": "sha256:849ccf21d9d01314b037a500ed84f9c687ef27843ac9f6a255027f579441b3dd" + }, + { + "checksum": "sha256:db1fad3c2d8735e69084bd4b09ea963938e4dde2f2e096dc7a4ce146f18b7ab0" + }, + { + "checksum": "sha256:96904dd00cb918042fa0492a244c9ffcd2609604adb639a4e41a75368967f2b0" + }, + { + "checksum": "sha256:17d887ffe27ba3dfd324bae27b0309c13b0b8430597fb65cb4b377416cc21cf3" + }, + { + "checksum": "sha256:2034236aa3ea2de19c9d9b717b83515a7a2e82685e8963d03fbb19973b20c249" + }, + { + "checksum": "sha256:75f6ee212b397466bbdc9320473ee2de0198b9573d3204a71422ef215e985e8d" + }, + { + "checksum": "sha256:81a30f2977dfa5ede4e3a4077c8590de94c2f6bc97c4968f7bb556c713169a99" + }, + { + "checksum": "sha256:9e802845a3e725e8014b2f0f1e6be1cb6dcbdaaa7472e011b5cd7ce5007aa0b4" + }, + { + "checksum": "sha256:f14b5f40e96ae727ce58c415295141645910311915d79d446403f68ff416ebad" + }, + { + "checksum": "sha256:eec4945093aa8b86e3c3a8ed629499ac3478be1e5f0a89d74178e277a7484750" + }, + { + "checksum": "sha256:8592c632ab75709f66c5fe6b49ce424a2ddd390f7bf01ee768425b3e60801fec" + }, + { + "checksum": "sha256:d0bdb653ebfa5cc5a596157434e50d544ad176bd6c3869896be0aa5996199771" + }, + { + "checksum": "sha256:ca164a41ad98cbc73c23259bb112bbd04162bb363b596a3c99eac02182a01d26" + }, + { + "checksum": "sha256:c58f71151ec41a8da17f8d5a45364e6c85cb3fe149993047ac9ef4b5aecd1fff" + }, + { + "checksum": "sha256:8c8e8e8db16ef828278de55cefb09425a83079597a093f93e6261fd5bd027406" + }, + { + "checksum": "sha256:5009afc9241f592691ce9097fb74dabba84b1d2eaf267a7bea71b33bc7ac3795" + }, + { + "checksum": "sha256:350d1a6728391907db3ef0ec69b80837d145e39b0cf86a36161432f587dc3308" + }, + { + "checksum": "sha256:5896adabcbefa7b297052fd9687b51a9eefe883c91f71e7be71a9200188757d1" + }, + { + "checksum": "sha256:da9ced19708b900ccc4053ca3df8d58c081869b46c9ee801c1685f447a299731" + }, + { + "checksum": "sha256:f1d3e3ea7b8a12c148ba128e5e734a8615fcc7b5d2bad8a34cb504240ed6e949" + }, + { + "checksum": "sha256:715dbe24d12d9fe43a6efa804dedb3e50e5babed510073b838b6e42ec06d5b8b" + }, + { + "checksum": "sha256:5246dc8c3bae5d860cb5ca12d787e976c3ca70bc3d023350eabc8a9e88601058" + }, + { + "checksum": "sha256:35598d36ec3edefc4bae80f0a5b345a254ae686aa913dc92ac04d6855331c037" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:2c3aeeee40861bf0576cfccb8a1d7fbf5948dd60e1c97d2354b8d4dbe34247e8" + }, + { + "checksum": "sha256:ce85ea9b2eb4d1e2ae94136168cda2bb768fe995ca09620615c1e69b8b0d6bfb" + }, + { + "checksum": "sha256:feac297c00956073e5f1f4465db8d66ee8498f67719e6dc0bf2b808b4d23523d" + }, + { + "checksum": "sha256:f661a9f8dd567b4e47c6753f94a3c9497ded0ceb08ffabe8b279420d7e9f9f32" + }, + { + "checksum": "sha256:05421657115297a907645ca4536e8d81e82da116f20053541f8c1e71d62977a6" + }, + { + "checksum": "sha256:16ba1aa8c5db466e4288412bfedf01be75918b4cece328bdf8ebe590a845d490" + }, + { + "checksum": "sha256:04ad0e61cc39b28f98d043b7c6da75098118431b82eb9afbb809b128409a8c3d" + }, + { + "checksum": "sha256:f9bf7114261adcc471838f4f82e7b37d3e411282c5c45aeb7de29fb6f990f836" + }, + { + "checksum": "sha256:7f2af219510f9bb8c70beea8c1bbfcdf3d84f9c96ebf28fe84c8bac20f4516e3" + }, + { + "checksum": "sha256:ea8d6dd8c5e592d79229541874e6c2521e456e0efa5386a1fde95a7ed93ee4bd" + }, + { + "checksum": "sha256:80fe17f542ecf961d5fb29ada18de1280cefd94cdd4b1325050df794364d5c44" + }, + { + "checksum": "sha256:090273fb5feb61c91755b41b0ade0fcce8ac222ed0f48c4a63f0f0253b1c12c2" + }, + { + "checksum": "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f" + }, + { + "checksum": "sha256:e820bcff2a4fb2de93e1e4d4b369964bbdc82e2f6fa77d41c3a8835a9becb909" + }, + { + "checksum": "sha256:0c706e235cd737512024bbc99a6fcbca41a9898c13a4ae11797514ac99a16839" + }, + { + "checksum": "sha256:01827bf9d3d6fd52c2f41c880055ef7bbd9a8dae1778c5e90ddd460be2bac5c2" + }, + { + "checksum": "sha256:f240ad7059651b3df40fb6ad32a153e5da71692f716d4e0fcdbc9aed931971f6" + }, + { + "checksum": "sha256:3e6181163fff4553eecbd8ff42d81424bca1265fdfda0fc03c76b3e2195ae8e9" + }, + { + "checksum": "sha256:7ddfb571e9fe4183721b20fc063c9b0fc1797b2cc5c7d0e677edce583d72c0c5" + }, + { + "checksum": "sha256:72c41f668b3845264a00885bff6752453d6d514796860c43d33652e8ec9036d6" + }, + { + "checksum": "sha256:1b9ee3cff65d0603f4495bdaf0ecb7a316c88943232c8dd78591083cc313a163" + }, + { + "checksum": "sha256:9e5e0c1de12f0bd0127f23356d9b1cd0f005ce26c2a0996f692f9483e0b6cc89" + }, + { + "checksum": "sha256:56dc429cc3404a69f5d72338303a615fdbb16380688c93a4a7e13ecd773a80f2" + }, + { + "checksum": "sha256:ba5ed56f4798d522c6ba041f841617e9362a33b41eee1794214d85eb3bd3fa53" + }, + { + "checksum": "sha256:7519682fc74640736910735ce7b0f3a4ca6deed6d6e365d1cff47f8412519a13" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:b41a7db6b738b61a8f9e248da09cc474bf4e7b9dc9eb048a62114f3e7e512a0d" + }, + { + "checksum": "sha256:9badb068b18ed2b26a352efec492df8cb1599df51f4cf1bcdc8baeac903aa45a" + }, + { + "checksum": "sha256:e349beccff56e002b94c9772d9150a5bbaf67db7e4e8a7130af0296956b25c54" + }, + { + "checksum": "sha256:fc16215bdc96167d391b31193e8a66a5ca9612f907e41e18e15450e61eaf4208" + }, + { + "checksum": "sha256:5a4582945c88472741d154fda2763945db6de6013b39090de8b523c88a97f2fb" + }, + { + "checksum": "sha256:8fc1e64c093d904507bfa66977e476c0f4f52ddb79f6698eddaa2b5a5359ac7f" + }, + { + "checksum": "sha256:4e9b4c5de79533bcf304bd5e034ed22462dfb5531008f4ad578671eb95aeb46d" + }, + { + "checksum": "sha256:76ed4d1820916e1d4d5ba12a9200b790fc75f2801937d63753fca7e12b6c9d6e" + }, + { + "checksum": "sha256:16744c34b4e5d937388ea1169160dff7ac02692884d90c87b730ba0f9964476d" + }, + { + "checksum": "sha256:5a67ae309abe3ef1d6dc326a373abc5791d4264b657fa2e3e15be334fb1baa1d" + }, + { + "checksum": "sha256:cb77a2c9467e5873cf21f429069da709089dc10062c4d927d9e59eca0aac2546" + }, + { + "checksum": "sha256:ff355a15b36bb34bf2f0a8c4cf4b16347981c0c95e71ea7f3c125d01a33e57c7" + }, + { + "checksum": "sha256:d82f1c7302a07e05879a53a49491f84b38af443519b39243fee95b79d7b700f1" + }, + { + "checksum": "sha256:68269d4f3588a15e94360c9d0f595d0ad7f1ece27968162ac42468acd462e526" + }, + { + "checksum": "sha256:cd1ed33bd28c614fe79026826b697c6904a67bf979d2720c2632d0f20c69c457" + }, + { + "checksum": "sha256:f3495aae115e7a02bc1d55465e699a6836116a0bd34bdb7eb992e2b878d4b584" + }, + { + "checksum": "sha256:32fc4d89fa8040aa8a180717305eb2c7a7094ad255cdb66fd7af2254fa89a5c8" + }, + { + "checksum": "sha256:58a7c06351efae8f3b1bff3b4832ed02ebc9f1018d6978b1703c6e963f26db98" + }, + { + "checksum": "sha256:b828eb01daf36933c3476f38b3c7c464828f056171a91df2d82e9e19ea9aa9e6" + }, + { + "checksum": "sha256:b56bf1fc0c0818069d8833845e90c629215abbc8bce652c52cf077dcc224be34" + }, + { + "checksum": "sha256:7676c7a3f92aedec71efad68ce95c1ba5362b7bb75a815b70174a96a2126cebe" + }, + { + "checksum": "sha256:39fec51b4b40aef643f68f41cca660bce59c5fbb360bcedceec04c17cafd17e6" + }, + { + "checksum": "sha256:79fd24e8c8c10d0937e716705b1ce196464c1d901e34219c60ab0865cc126879" + }, + { + "checksum": "sha256:f79f084807195110307640a0f6e3ecbce88cce070961ea19d68bdfafab3862fb" + }, + { + "checksum": "sha256:56a66127f50af442a8bbd3183c29d39d4b1825526dd134405ecea82839ccca23" + }, + { + "checksum": "sha256:f9607d29ed10edab125dba7a1972b0f783a0522eb29f03f825abbeb5281fbeeb" + }, + { + "checksum": "sha256:2c1a643202117f9bdf48b11c24b60a01c409f2ccdc43914a89ac980f7d692ae6" + }, + { + "checksum": "sha256:21a8001b6092b823bf67d78f439f02e6d6f3a5403c2e8b346eb404c31567c5cb" + }, + { + "checksum": "sha256:e660d48e49bb3da5f5e8ad3e79b65184a95eeb4351b3f6d38e3024c332bbb570" + }, + { + "checksum": "sha256:6b0cfe88a81e314afa03ce297f2bb0470a29a8f13465ba4a52fc65550027cbda" + }, + { + "checksum": "sha256:0de547c2ed3a69512cc6b87f38528b0d8157b0c17d02a6b167bb3804eb2dbf41" + }, + { + "checksum": "sha256:79d49c7e1c6bde0467649271fb45928a313c5a8cad3c0855d3cae9277e9b474c" + }, + { + "checksum": "sha256:7f8760b668bc465f9e538da9bfa281d1c881d05611ba54a0ac38a97338694ce2" + }, + { + "checksum": "sha256:50f00be9540e2ab1e81f955e9ad33ecbb24ba6538ddccf418ad00ebfeb1fe472" + }, + { + "checksum": "sha256:fb110b4fd708d68d41606e0120f5befbb171e6a9f8be2a23618284238fbf19dd" + }, + { + "checksum": "sha256:d20bcdcb1e6a8d16a5df9cdc99744f907516b9ded51b671bd0a0f31189ac43a5" + }, + { + "checksum": "sha256:1a92ddb2b7caa477d02eadcd97b1f4fb124359609dc827dfedb7de0976ebf824" + }, + { + "checksum": "sha256:4f2725db0dc03a8bb729ccf6ced8fc4e8eae995afa7029decb7a7aa81e6eb417" + }, + { + "checksum": "sha256:6b6b362f865498d59d17673d93fabe076015e7804462412e3da589335890f8d9" + }, + { + "checksum": "sha256:69997f597de86de2dedda20db0f5b516585751822162f4dacd01cbc2808a9155" + }, + { + "checksum": "sha256:6edd52da878b6d64327c584e28bf657831cbbaee66132fe8056895009424a235" + }, + { + "checksum": "sha256:7221e9c72741e31d3e954cae6a1b780b15da86abb70d6fdf3c125b1a440ce2b2" + }, + { + "checksum": "sha256:16923f95942b0607ceeceedc30bbeea60a224c9da6d70ac8640b8a19915bfda1" + }, + { + "checksum": "sha256:d4fff4e2707628db04c16a2cd8fa0c5e9854084688acf74ca4c1db27ea9d2f8d" + }, + { + "checksum": "sha256:4a44b9e5e7977128528c4108ef55d49e52290c51d376c6ffd177a6b59113fbf6" + }, + { + "checksum": "sha256:fef4bb13fab5780f4f9c9d8962c7d15378c7128a69ab08244b1e520b295bf685" + }, + { + "checksum": "sha256:b96fe83e9e8b9b1a6819e739ba23ee0b39991845aebc20f95dd434ed418f8912" + }, + { + "checksum": "sha256:5ea0604f773c0ae0e273206443a5f115e21010e8acb1d580a22e5ce0219ac991" + }, + { + "checksum": "sha256:af1858d5279d6624b777a4f5b7ff7efbfd3a6b75a6a6357c4412696dc59b2802" + }, + { + "checksum": "sha256:a660a0ed20a7d6fd7caa88d85f92575cfa21d207c059aab380fa82c4742a1634" + }, + { + "checksum": "sha256:23b438c52f920e7d3870031673412e81e1edc12c427e64e204ba6620df4401b7" + }, + { + "checksum": "sha256:03318129f3b75d57abb1f15adf1ddc26c23fc178432c66b5ffc43e586c948428" + }, + { + "checksum": "sha256:24d4b4ca9d967a535037e512808e9eb8a325268bb995a59691ef3d2da8f37d45" + }, + { + "checksum": "sha256:f8f85ee37485e4ea80f24214571cb87889e226a520a1d5dc5699344bf59717ca" + }, + { + "checksum": "sha256:530f8aa49c10d80202e2b3e2c2b505dbdcdc2c3b56231d5986b6388da3ffd12b" + }, + { + "checksum": "sha256:5369eb8f82cff7ef6592fd9b67fc50d2cdd01d2fb1e6879cccb85080842a0bf4" + }, + { + "checksum": "sha256:bd73b6ee39c5d7e36fe72dc00e6a9da773d6fd7496bb3ecbf960f05dfa99edb0" + }, + { + "checksum": "sha256:7c458f0dfbd31662e5a8a91b847881dfba6ff04786bc21e7de230236ce8ffaa7" + }, + { + "checksum": "sha256:388cc111d2c2cd5da6c024764584e3afba5eeff0c53a41ee19becebf8faea06a" + }, + { + "checksum": "sha256:9f526c50ff9fae2f6c1d02eb10b6ced74b3ee94e7292e7ad483076ab730c1eef" + }, + { + "checksum": "sha256:1cca144223075fbb7d43bdc42d42d273c73920ec3d381b0be8e9759055f3fcc2" + }, + { + "checksum": "sha256:d42e36ab818d9284eb5fb9d46a0af71d99b91d917b3fdf1ac9af3ebd473606f1" + }, + { + "checksum": "sha256:0764057bdd0dc7d7db74195221cd3ec1eee9a031355af5be7ca3726116fc16c7" + }, + { + "checksum": "sha256:95971777d5b9af4cc37788f0b9193c693de7dc2f0f842f341a5d2182af4edb24" + }, + { + "checksum": "sha256:e02d721b2396471683a7f73d681ed4cc71bb2d50ef0e8390cc97ab047e4187a9" + }, + { + "checksum": "sha256:e5a9d44a20cdfb7cee822e0ec9411ddfcc7fab662300a7919a8530a669cf7a8c" + }, + { + "checksum": "sha256:278dffe93fc19fd1613a9ab8d61c87a755e68120163d5a1352368b68f3880074" + }, + { + "checksum": "sha256:7c526e6c9e22ba9fbd88da30824a4791c87f3da890426890be3a72f2ebf7f0c8" + }, + { + "checksum": "sha256:08af4dc49ee9fbef7b2b6320da7809a952fa5d4bb907e546aa2a74827dcd7390" + }, + { + "checksum": "sha256:94b8f8ce9926a60524cba62e9695785bf12f3ca7f6de86cbcb510889e9e61509" + }, + { + "checksum": "sha256:93e8eb519fee69ad0a90733dea8577670a1c62f02fce9348633880e0d9190f4b" + }, + { + "checksum": "sha256:485ef6f1f8b26b7bf4c1ae8ee8ae7bda9ff679aa0fc9e62d1ff990a54e0e559d" + }, + { + "checksum": "sha256:a5fcf3d4d064289bd04a9f19cc204c8facaf389c0c10e47b075529f0601dc02c" + }, + { + "checksum": "sha256:d07a535fd49579414267571a6e7286d38061e65dcffd1f947e32b8edeb0e7f58" + }, + { + "checksum": "sha256:6cc8c3ff2b465defb9ac46a2caf95d53c887d18f68bd43f21e6e3635b884d6ab" + }, + { + "checksum": "sha256:4e4dc28e98b8470dfbb789d784b8bc5afc04dc7295047d2ee16d36ab4dbaba1d" + }, + { + "checksum": "sha256:e9db628a63adadce6b6466cdb0af34d5bb0c147e682c4f4a9fc2294373d4b6d7" + }, + { + "checksum": "sha256:e1c727c81c7d54b21ebf7346d81ea57bbf77cdee59efc2c1bd57d78b45697de6" + }, + { + "checksum": "sha256:9bdf8e5f329b54f1ea45a5d5277d650be84f7bd2f1570d7c5e7ac743fd57cf1f" + }, + { + "checksum": "sha256:d3d600e075b60b1462bc5f2cf7319ad484a416739175aaacf384a5805749861c" + }, + { + "checksum": "sha256:759ba259e960c720b7e096a7a1ef092d7e2181f7b9d17ccabd45867dafba98d3" + }, + { + "checksum": "sha256:86ae5e445a80e4485162e6f24fcf6df539fa7d1d31650755d4d5af5d65ec2b88" + }, + { + "checksum": "sha256:8ec9594f8cb1eb3313cb8979201b0f85a914107fc4f706ea27727e977da056ee" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:d281c9c6793be93fcda14521cd3cccf37102b955607fda53d7051a1276bf0401" + }, + { + "checksum": "sha256:b0a406b04a8ab0cd64bc2260faeecee8aaf93b82916cb8551b48eaace6dcf16a" + }, + { + "checksum": "sha256:3f16f888f188951fdbff9117c6f30763f68eab0e36595fd12782dc6d298d4c2f" + }, + { + "checksum": "sha256:f388ccb860267e5e6b142708a2ebf16acf0f8181b9f59127e962159ab13d6336" + }, + { + "checksum": "sha256:7db7737df4ce7f9bf2099a13dee98a724118bb8bf873fddb14ddbf4c22378287" + }, + { + "checksum": "sha256:36ccdb1a1673d3f739a29105edc45c09074ec667cc470051c2d9c52bfa6b78b0" + }, + { + "checksum": "sha256:6c836d295d33eb6d66f5e805a8ab5f4e4e514a027b8dc4d16ba2e0469940e477" + }, + { + "checksum": "sha256:848e59a9e9836ac1c7300da6958b25b64527078a4e6547e011f5ada16ce2fa4a" + }, + { + "checksum": "sha256:fd6163ed3dfc4d67c4f0aab0cc621815c59c3c95835cafac74155a7f4f85f202" + }, + { + "checksum": "sha256:97ffad7f79927ee908510ae381ada704827d369b5a0b8715214f51270a0984d3" + }, + { + "checksum": "sha256:bc658714fda75fa2cd8f635d358369a1716692f2e9d8ca4fae6ca6361dd422bc" + }, + { + "checksum": "sha256:805dcfbc69e21fbbe2b0a03ec577f3e32c543f034f3b9c0a81f97442130bdfc6" + }, + { + "checksum": "sha256:7276a9f44f6b731ca7b2b85f5c79457ab6d4a2d5597352ac772f93dfa2535730" + }, + { + "checksum": "sha256:e6bdc7b1e5bb8b3c9d578fa1a88c4cbd3ff262b14857464a691b6afd34e38b90" + }, + { + "checksum": "sha256:a7db88e037715eb0ea86ffa464285615549b23178a14d691935685bdb6df4742" + }, + { + "checksum": "sha256:18b66eb926d6554fdfa6c6464c301d906d63ec69f54ac318cf0a5e7cccf43d2e" + }, + { + "checksum": "sha256:099495aa4c0d7c6a8e92ebd79496941c5a7291d806ce52f0983ca5a0993db0ad" + }, + { + "checksum": "sha256:349d5e65aeee405ea53d10c651d541418f11af4bf5f436ab5cba8c07183f405e" + }, + { + "checksum": "sha256:e4dbbf5ba29de01b7121586f8bfc99305168d1db301ba121320344e344012704" + }, + { + "checksum": "sha256:eb870676d56cd2212611a9814f6ab08b53a209d1bee37e38fdbc434b6a1600a1" + }, + { + "checksum": "sha256:c1fb113cecb751cfc6cea9e39c554b29e7fd56cd122977c772d5dcf3a9ce0812" + }, + { + "checksum": "sha256:8821bda7623a2157db4883763f5f74a11dfd1b875d3085b571122f454bff8f73" + }, + { + "checksum": "sha256:81ca20194dbba8bb696a02f1f01d45b1ca73aa38a18d97173022fcf96e195156" + }, + { + "checksum": "sha256:679ba7cf5974aaeb4b50a926e8fa28821f48b71c182d50b1033bccb6fdc34a06" + }, + { + "checksum": "sha256:9f1810ee304c2827027a4dadb0142f6940c28991b5371cbe302593eece6c25e4" + }, + { + "checksum": "sha256:0143da5903a3053bbd62714904db5a7c1aba3b9ff77c97d9126a4479d3047c58" + }, + { + "checksum": "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9" + }, + { + "checksum": "sha256:30b6dfdf98da777eb424fc687f59acf7528110a0a8bdcd8dbbf78b0d74a7b714" + }, + { + "checksum": "sha256:de3b94c31c90b14e46d4c8d163d5fcc7d3b016e2fcfc090dcc076bbcc021800b" + }, + { + "checksum": "sha256:73f54ead0d97055f6fefd2619bb58cf421ef4d287a94e10c318ec2e9efa1a9fa" + }, + { + "checksum": "sha256:cb2a87844be8eef053cd2b32047552c53b32f16f618fac592a75a5376a4688bf" + }, + { + "checksum": "sha256:756fe3065871f2c7c1f9635ae75119d1755dbb6a5ea62fae7660b410d9392e34" + }, + { + "checksum": "sha256:e943b3e1fb71459be6ee74f944e7bcf6a0835858b48924501645eb00997b5d1b" + }, + { + "checksum": "sha256:793641f96b3d5b0e67a2ffccea6f8d928ef3d4877636b6c3852341b230242cc1" + }, + { + "checksum": "sha256:7417d32587ec264dc30eaaa94d8fd561b648e59d4d172a06abd2cd43833c85b9" + }, + { + "checksum": "sha256:07eb3b2b952ecfe7fb8ee2e57b18435be13487a8b05b7a8094fda101ec75fec6" + }, + { + "checksum": "sha256:d3c4038a7a3be6987f74236394642be84092a9dd731317dfe5974af757c3ccfc" + }, + { + "checksum": "sha256:7d7280d0de03be269a1b078534d286496085416efef921996590bcce7db64736" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:bcd9e55362d6afab44a89acd877c8c0a8ae27572028bfc9282f3bfec0d21e27c" + }, + { + "checksum": "sha256:d381673d6d7fe39f88f7966b5dbbe733695f1dc6243aad15aba04548f0d99d9b" + }, + { + "checksum": "sha256:68c10fbde60ad63306c334df256056bc93eb04d56eaba5ddc40254e81e815056" + }, + { + "checksum": "sha256:c1da8e31a629d048b524c5ccbaf1158586822fff72e3b1d772387eaeb54adaf2" + }, + { + "checksum": "sha256:f349e95ba63ed4f9747cd2bbd177a3f6534bc797539e6e5f0d77da662c560844" + }, + { + "checksum": "sha256:4538fb52ec654977ccaf56d0fc26b491f4cdda58e8070f5922165ac77104857c" + }, + { + "checksum": "sha256:20bf63f43afe093c6293839ca1fec23eae2973666a36d4fcdb58e09ead28567f" + }, + { + "checksum": "sha256:2c27f780afa55ca934fca745848553facd9efdf8132275a13bd25bf24975f3b1" + }, + { + "checksum": "sha256:1130c50d23d464653fbca78aa597b1c65d22c9163c70cf3011a9a116af76bbca" + }, + { + "checksum": "sha256:739a6551c66057a68275d53d3ddeb35f1329cd4be1deea3d4103576cf7667cc8" + }, + { + "checksum": "sha256:8373993533b0671cf77930fe3e685a648f1393acc2231a12ce84d8f8ef0216fe" + }, + { + "checksum": "sha256:e18d17088ddaf866d7b440041554461a3188d067fa417baf6f5b070c2f9cee30" + }, + { + "checksum": "sha256:b1184fa6ab84322f715418f76a8e260c6a6bb352307cce9732d72ed3f0ebdec0" + }, + { + "checksum": "sha256:feee80d14e2857f2a229cfed7aea85b74b6f2350532816e824c09f356dc38126" + }, + { + "checksum": "sha256:0ecb10a5141fd74ad9165fef9dd7d9485a34ea1b10605a9d4b61eefe60b767d9" + }, + { + "checksum": "sha256:0970bde39d7cc1dfebda51e4359f63821fe8dd573d46253fc471f8466c79ac82" + }, + { + "checksum": "sha256:dfd1a319a66586bb1027b9a7a674f17b18070e3b389eb8dcd34ffad3ff485725" + }, + { + "checksum": "sha256:7f3337d8024c8eb5d67ed830c2ed1c5b046887d4806ea22cf6e8f3f77b8d7e6f" + }, + { + "checksum": "sha256:fabddaa901a0de98c661612755fbe4ebe4ac1ec372a5e0ec6b7874ef6901340f" + }, + { + "checksum": "sha256:3cf77fdd2b44a842f2dcd2a4cc3bc2bba2e83ea78da1a86f9a45a3890a69cccb" + }, + { + "checksum": "sha256:a3850bfcfaff4d53303ab9d8403940b09c26037f501206d0081ccc7b0ca5049d" + }, + { + "checksum": "sha256:7d60802fc8b2f721be351e30f23e11678fa85fb0fcfdfa04a903a8452725bb6f" + }, + { + "checksum": "sha256:30d4c6c8be50db61b674a16eda95ce19396d68954907b2ad7643922cfacf4326" + }, + { + "checksum": "sha256:e773a81f7cba7beffb23d9ebb6ce545ba4b1556091544f73ff57d263cc552176" + }, + { + "checksum": "sha256:d79c92d015fa952edf2a4ad75f95042139fbf8b4323f24e939e1ed06481253d9" + }, + { + "checksum": "sha256:77066ee655df356370b5d6d736d96835f5712f8e814dfc46b391ecaef9cdd19b" + }, + { + "checksum": "sha256:481d6065068ab8fd3bef7fa0539e73ca8ede56ecb652dc3974eb7d2244670aee" + }, + { + "checksum": "sha256:3ee2ccbfee32f806afec5a5e873423d49c5ba88a3c425b98663ac95be4c62a10" + }, + { + "checksum": "sha256:bb7554c3a90cd75fba7a3e3027761a7ff43c4e48a24b759c64ba4625ceec83c1" + }, + { + "checksum": "sha256:7c385e32c12b2639232f74a5dfdfef86daf82e5418bc292c5ab2640fb5cf46dc" + }, + { + "checksum": "sha256:d906b13d5dd7a5595133e2a1af83ae17a1aae0c107579db723d21ec4371f3570" + }, + { + "checksum": "sha256:537059f8a2598f7b364693aec72f67f1a954c525b381139f736d75edbf19aa12" + }, + { + "checksum": "sha256:2976f2c007ac981a70e414960cd7426f446ebc8a0bf8feae7a6ece06c63ffefb" + }, + { + "checksum": "sha256:2ee0a45ec4832e276ee130d8440cd29de05b7fd3ca335fe4635499a8bcbdfb73" + }, + { + "checksum": "sha256:e3e3eaa6437eb9a91707097ac1a236759e6d57e439ea48572eec68267ac15e2a" + }, + { + "checksum": "sha256:44e0e3afc547cbbff4a3ae8a8788712bf2917ff5050dc6fcf969cf78b71d385e" + }, + { + "checksum": "sha256:759d2a6cb209926af2799c1f25851e28a34f6af7e55f93a68045776bb2519379" + }, + { + "checksum": "sha256:21b1497d132a52c93129700d58c44ba8c36af8da1bbd23fb408c00c3117c1012" + }, + { + "checksum": "sha256:a660c78f704d3d22458c71d86605f51d62e3cc5306d22d66bb1df86c7274ad6c" + }, + { + "checksum": "sha256:e17077c8803f792c02570b2768510b8e4955bd0ae68ab4930e7060fcbb3793f6" + }, + { + "checksum": "sha256:f727e7919c662ae990d02ad2a6299ed3161ad7522587c11441477aae03549f06" + }, + { + "checksum": "sha256:abf49a75e3221dce4a379c9300b15611dc4a45acc109862e88146441776d0343" + }, + { + "checksum": "sha256:941fb8859ba0911c8d42d7fadb9a70e89155013f3fa697bb61ba5a18661a1d45" + }, + { + "checksum": "sha256:8d54cc441cf480bc016c027df4acfd938373a19d91a7fd00749e4d2de3c36bfd" + }, + { + "checksum": "sha256:657efda777af4b0d63ab127a72f3373c0d8a18f3b81e912b24a5fbdc9927dc1e" + }, + { + "checksum": "sha256:41c0f3ea7c7c2f21b5ccb0432db2c1b916ae34691a57f0b7bcb5a09dc7d8fafc" + }, + { + "checksum": "sha256:25ff1ab94430493bde65da6a800bb2638edc64dca38971eba2c798475cc18b97" + }, + { + "checksum": "sha256:7e078a375d2636b705e1734be79a8b76a306f8578066c901713663e367925bc7" + }, + { + "checksum": "sha256:4019e427bf69ed70e3a3cdfdcdd6771bcee1484f8e83bb69539a9e6530baddf1" + }, + { + "checksum": "sha256:ec12527a8c08222f2d4552bd2a5c1729764c180950fe5fec9ca4dcb97e4099c6" + }, + { + "checksum": "sha256:36798d9e979c9976ed66e23b3c8bda6250c4e80e411afe55c3942291cb4cb4ce" + }, + { + "checksum": "sha256:fac9542eacd842779725fe679851cdb7cff06da65beb71fda320610ab1e6ba67" + }, + { + "checksum": "sha256:005d3eb002670604516c7fa58c137c35c80bf6100a2109881ccb8e44cce28777" + }, + { + "checksum": "sha256:f5dd157f0b1ac9d0d898a019b0995002716aba85d028d28a1bd3b6de5e8f5107" + }, + { + "checksum": "sha256:abe578c5dee7c306812e241c77ebc8ba4b54f90df8e65c56f8f202ba6e0d7183" + }, + { + "checksum": "sha256:4811ab95c1d50ef7380e2c5937ae4490f8e28f56cf787c189437d1709e4423fb" + }, + { + "checksum": "sha256:ac56f03020c08a0e56aa90d369d68ed6c558786b828c575b266c3e7967eae61d" + }, + { + "checksum": "sha256:e1f1f3beb08cd5f29b2daa92593822fdd2c5af843b0532b0e8925180e3e931a2" + }, + { + "checksum": "sha256:d8b5b571fb84c7ccfa24f8a20460471d41fc4487d6d0c34f91fbeaba4c857eb2" + }, + { + "checksum": "sha256:704622626b2938eee1c096c1ecf1e5fc88be4e4eac80a911d0c2ee893f9657b1" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:efb004153a5a6a96330b8a5371b02ce4dc22a8cf6d28f5b928cc443cf3416285" + }, + { + "checksum": "sha256:b4fb3d8b0255a5ba9456b61e4f479f2f8355d171263508bbe869af677015fd97" + }, + { + "checksum": "sha256:73566657bf7df1e8709db1985fd04cc4535138557e30e37f3c4ec24ece806824" + }, + { + "checksum": "sha256:23ec415c270bb2b87d6b09d755771c8fd779d0b85892888b12d38a00963e6785" + }, + { + "checksum": "sha256:64465f01f00fbce1cc67e603af5dd542f8c4c4c17704ff419cafd8285ea97205" + }, + { + "checksum": "sha256:bbfd0c8d360ae86528c2d06b6b64ceb2d6a974dea101ba5e1268740b689142b9" + }, + { + "checksum": "sha256:63edd5d05106443ccfad8b8efe80c5546e6a23f8336e7269c899b01eab928d5c" + }, + { + "checksum": "sha256:3e1b1298205d8e211bc897b761664975851aa1cc480261be14abe1fa51e16aaf" + }, + { + "checksum": "sha256:1aad74f1f0c753f35f92492cf969ec7f951c227f88d9192b7dfcc83ef73b35d5" + }, + { + "checksum": "sha256:cfffe21010ac66d51d483885a02b359c833d5e1f0de9d8d24af55e035d35119e" + }, + { + "checksum": "sha256:f81b7190a3c12a3932ae5de934c19033079d1d0766b6b3b72aaf4edec0b8755a" + }, + { + "checksum": "sha256:ccd0b65f90f2db606a9b38f00c71f5bcd7611fafde92e185a57d3e2a3f027787" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34" + }, + { + "checksum": "sha256:2402279a7bdd1e6d200e5dd4e4cb87a90a8c3c4dc371c679537ca8d32ede360e" + }, + { + "checksum": "sha256:d0c32bda35b74d519124495cb2b2d38721c4d4ae5ea066e5727a249b22b94334" + }, + { + "checksum": "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786" + }, + { + "checksum": "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367" + }, + { + "checksum": "sha256:4b8701e18c79cd39f5501dc5c15081637f3dc86da94b2bd78cbfa022c90c0b96" + }, + { + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "checksum": "sha256:daa918b5b5ecdc2ba8337afb799a795e2c9d84d5ed947aefe2ce3a4dfb2494d2" + }, + { + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87" + }, + { + "checksum": "sha256:595921e0fba0fc75e4017cae448f912328149994c78e48657341258128a1636b" + }, + { + "checksum": "sha256:eea72f348c2af9b2281466c14a8aef76bb6d3db3ee853817b6dab6f4f828b5a9" + }, + { + "checksum": "sha256:6501a0edf570ea01137395ff13cdbc3914dee9e536ab92ff9698a5ddd76dfb16" + }, + { + "checksum": "sha256:f7cbcbe2816044bb92ca5066d88ac8c3b578a68eff16b2745d93c90483a5153f" + }, + { + "checksum": "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20" + }, + { + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "checksum": "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c" + }, + { + "checksum": "sha256:0396d12973b68a7d16074aa51f75e706c0b7558cd24d32e5573c49a487b2497c" + }, + { + "checksum": "sha256:ec450facea1c2a5dc1a6b5bacc2330dd5174780d92db66379f4918c2ab40da83" + }, + { + "checksum": "sha256:2c07c0dbf321a121be4cfa929f1e7bb91b26febb1b59de9dd98bf18c5f376111" + }, + { + "checksum": "sha256:495c3fc6f15c5daef8686fd01d1f7008bbc72ca9c963da1ae3cf60ffc519f48d" + }, + { + "checksum": "sha256:45ba923afec390fcdb3587c7114d3d4b2f509e2df9d6f237b6869a44a4137ade" + }, + { + "checksum": "sha256:8048c87208855ae3dc3f2b14c9364337f0ad17277a89f1f6fc2edf9cd3e33eae" + }, + { + "checksum": "sha256:ecd31959fe40425f51dae04269b063c5a77bd78a5445879b1c944f1aabb669bb" + }, + { + "checksum": "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f" + }, + { + "checksum": "sha256:8e2c0324789f42ebb6324847249699eb499544a3e6ad67ccd74713b3c1d6ce78" + }, + { + "checksum": "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6" + }, + { + "checksum": "sha256:0cf5f171b1eb6ebe859a767792abf8a22fe2f8d1f701960ebf75f045089fde8e" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9" + }, + { + "checksum": "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42" + }, + { + "checksum": "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf" + }, + { + "checksum": "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280" + }, + { + "checksum": "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde" + }, + { + "checksum": "sha256:5911745604ab6ecd74e5eac31ad5dd449bc8f7e286ebb21e6865c6bc5400af7f" + }, + { + "checksum": "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a" + }, + { + "checksum": "sha256:8ac41d38c793722177492319ae57588ae2619962c8442e64aecc4b6708295707" + }, + { + "checksum": "sha256:c58b75f57dcdcd781917090e670e36137aa0ee3bd918f2f99460bbd2de487057" + }, + { + "checksum": "sha256:14ac9ec62c0ac314d555b27aa1d8283dab7dbc5c9271c692f8008e45125f7efc" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "checksum": "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb" + }, + { + "checksum": "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d" + }, + { + "checksum": "sha256:3a29d69c08ff6d48294cd99e4c825d3deb6cd1c87558b9dad020e3f200d683c2" + }, + { + "checksum": "sha256:0bc3401315ece79b243e066b97b462164ddb56f6728b8f562126d0b28f4a2777" + }, + { + "checksum": "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53" + }, + { + "checksum": "sha256:a58bbe21c85a4ae7124d72635da3fe73e43757c82bf4f15233579f28e29ae9e2" + }, + { + "checksum": "sha256:adab024896eecd08250eb7a7a5e1686df0b945fd1604543877e230163c510f24" + }, + { + "checksum": "sha256:d8ba6a91610d87dfb599018c887514af663a0f963ed6b25a83bac8fba56fa266" + }, + { + "checksum": "sha256:d48165ea7223207004c35f5f227db97e0bfb829c2e51f76f496eac557eccf03a" + }, + { + "checksum": "sha256:16294bc45d609de6ce07b660fadc851022e43d00a13f3c98c1f45064abf591d7" + }, + { + "checksum": "sha256:b2d090246903da9162c06912dcfed747df9e7ba1b9f029a98c96c4155f68ce67" + }, + { + "checksum": "sha256:fb97246f1e22b2db98fc309470c4d87755ecc59e5b98047c52c4fedbb08d9b6f" + }, + { + "checksum": "sha256:1e9348cb9aea6b2dfd9dd9aad5e86eb3f01ef399465c9b262689b430f4f5595a" + }, + { + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "checksum": "sha256:e0da1061a61a16d6582be907ede03247165d0da480f9cac85ba502b158763770" + }, + { + "checksum": "sha256:ba5b6364787be1ce76c7d5d3f7861f75157db6c5354f4b6e7b26ba8962fb226d" + }, + { + "checksum": "sha256:3ab5aad8b10e5343c08af8c24775334b6111cd50fb9629f21335626057c7dab9" + }, + { + "checksum": "sha256:acdee02b0e12502f5010ebfeb9d3cec41172e83db45a5e941085a8edba1bd408" + }, + { + "checksum": "sha256:5919c5de67dbc1f44a553cbb4037572c258bb394ff27ca838b2198d05a0c2dad" + }, + { + "checksum": "sha256:54b3552112a26b7ad79db1251bc0e8e0415ac60da299d54700c5bc59760e5be9" + }, + { + "checksum": "sha256:f94e7324ef21711961c6e223210fcc27df0d84a9506487c633f225f00fe4432f" + }, + { + "checksum": "sha256:183ae7a707951036dd77805d75aae1dbb055ca52d8fecdc6ef21d5e1518fca4d" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:56c622aef9afcb91805b40a6afcf90015ff6bce38e1f529a3b9433e5858084e6" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:627e59a303477393242aa301d711c6e98908041a481349ac1eec861c0a8d71da" + }, + { + "checksum": "sha256:004d04ca75a6c2b0b33602e3253ec6d1d8cbad9bac8da8e8fc525b1ca2684d08" + }, + { + "checksum": "sha256:94700eed0bd231ee73fac06e38ce66573466039c0454774bf268ea50a03fe056" + }, + { + "checksum": "sha256:d2206467c216ee77262401385a61b540eeaabca9a44b9ab864c993962ba76758" + }, + { + "checksum": "sha256:a99969c9b217ceef0f2208c4fe7a57c71374e39ec2f9cebafd1f6b29a4cd28a2" + }, + { + "checksum": "sha256:03b2a3f3d38bcbf07b58b7507739590d8eb3867a9b94db92dacb80890f36d440" + }, + { + "checksum": "sha256:934205ae1baa04b3921065f73096378f1db65990392340ad32042f86c9b5b247" + }, + { + "checksum": "sha256:dcf427833f63e4672ecf04100181b671235ae2b50d450a25976ea176ead363fb" + }, + { + "checksum": "sha256:5e3963bc4b999aa0ebf6fdc2b93424a8a822a9dfd5d1d978e359491c93406df6" + }, + { + "checksum": "sha256:ebf4129602495e20eb3ab2da938dd89646955e44dfa72a5e5a8f6fbe3c40d7e6" + }, + { + "checksum": "sha256:3d541124624e02a289cb2dfcfc20bd02e87b69a85bdbcd1fb3a382c8bf2624c7" + }, + { + "checksum": "sha256:c6c053bc48ff5c75386422a4712277b85d1bea54b4dc0894a4e2c8a9f034d64a" + }, + { + "checksum": "sha256:2cb969d603bd632da8bd2af6cf49f101e26030a5efca3b610a7e81a48ae75222" + }, + { + "checksum": "sha256:ca642031ece8f6f46a55543cfebf58c0a50fe961fd8a796d4ebf9fa684922797" + }, + { + "checksum": "sha256:e6194926699147659c3a35d9330b5e9706b203aa806c4023c258559f9a0f8ae7" + }, + { + "checksum": "sha256:21d0f9e7ad964facd218351d15850c75335382fdfc429e96d58f1461d1942f22" + }, + { + "checksum": "sha256:509b96a92ba84cdd0664dfdb798980162fc4e82bbbc4435e7e3b39b60e8b5c13" + }, + { + "checksum": "sha256:97e8ec14c0569aee6633342fd3b05507b8c30c9d62b52aff0c3e693640d78938" + }, + { + "checksum": "sha256:be5a5ad0d3338da31fca41645852b03c748c41e77bd715619033f71496f3c875" + }, + { + "checksum": "sha256:b9a80c6b1e8bff298ad6215248ce9d193d734dc038f1de211c01a2e118b9606f" + }, + { + "checksum": "sha256:f10990a6f2e8affe55991a46ca80eda2af8c0c8a4aada3b623ba740abfb059cf" + }, + { + "checksum": "sha256:2081809fd42c6cefcf677362a825c38b166f04df8edf865d5d6404348179e536" + }, + { + "checksum": "sha256:011335bf845f38d1ba40988305f28913873cc6f0d94ed71bd37b69fb221dcfff" + }, + { + "checksum": "sha256:d55a783930503e7f1590bc2ad10d9fa184ed3cb44e2ca85ae2bbe11fcbf166b8" + }, + { + "checksum": "sha256:3f5c97c72cbbe552e9f7183d1f8eb477a3f46647bb513a175a8c158d3eba3dee" + }, + { + "checksum": "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:44d69e72ce307f5ea39148bcf98c60f2f23b305b2f71e4c886c8a0bdc649d7fa" + }, + { + "checksum": "sha256:7a05e800e37b4aa74e657a829097090faf013338056c8bd6ebfeee5ae4467a22" + }, + { + "checksum": "sha256:fdcf713f1e8b7710e8629b2ba05e336cdc454be98f1bd492bdf8de8c50595437" + }, + { + "checksum": "sha256:238f8f86020dbc6994f1cc5960412ae2337f3a2410bbfee39c3ddc5ab603f05b" + }, + { + "checksum": "sha256:241a563df5ae3b3b49d45cbf9e67b6932b8345b3fbb40029dbb3b0834cf3db16" + }, + { + "checksum": "sha256:87209220ec94795ac0e079e98877a4f911beaee3a829bf95cda5a8b24b545a94" + }, + { + "checksum": "sha256:2b2e0d9a397d27c7076f05ab309c71ebffdf2c33df95de51c700af181899c87e" + }, + { + "checksum": "sha256:37e4f7e854765b98e8dd10986b758631c7ca00942bc53efb4003ee326e1cc834" + }, + { + "checksum": "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4" + }, + { + "checksum": "sha256:bdb8cc675da18f659ba06252f1f2604d171373239804c3cbc6004dadded54cd3" + }, + { + "checksum": "sha256:df50c6f03ef2fa2d8f900a4a95d84921511b5e435533677f3067c1fd47f84b93" + }, + { + "checksum": "sha256:189718794d3954cb4643af95c1ed73adf11db3a52883c632a28dfe865b969112" + }, + { + "checksum": "sha256:29a06adbb34836ac0aa4e152db899c8ebc0f9ee6df34c8fc378628283571de2d" + }, + { + "checksum": "sha256:1594afba86593ec614299ef6af255755a98ea55a34a72a22fdc9d80a040be39d" + }, + { + "checksum": "sha256:01bcb514e0985596e0d6a88d28dfa296e2b957a4dac219c79e87e2b6db5bedbe" + }, + { + "checksum": "sha256:e746fc392b4f034395f34e9461f046a776acc87b769abe0431db7f849de7c2bb" + }, + { + "checksum": "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2" + }, + { + "checksum": "sha256:664a883f3c7042eb91e0b66fc99c309a729011b4912e4af9397f4e25e1adae90" + }, + { + "checksum": "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b" + }, + { + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "checksum": "sha256:abeb97ed3fdd82145fd51f8eeaecfca272e4d1418b17a68241e054425a327aa3" + }, + { + "checksum": "sha256:571f71164eee089ef2fabd81368b9127e0cde805ded935cf66645c3e910c88c6" + }, + { + "checksum": "sha256:593d4df5b8de12ed0ec5a0935cb0bd966e27a631aa0806250ba9f67092ad737f" + }, + { + "checksum": "sha256:ea7acd3d0f14136f649d7403f0c4302cc757ddda22b8d738dae9b6f74c72c4b8" + }, + { + "checksum": "sha256:85ac0902c707636ebc08b90981dffdc080d37b0acdec3950cfb3029779dcb823" + }, + { + "checksum": "sha256:415f392bbba9e8e1c05138aa9a4a6164b9ca015ca991c7ef08f0374c86b3cc34" + }, + { + "checksum": "sha256:43f2f6800f07a6ad71790dfab1c424286b9c18fa6fd469ec800671f4ea242001" + }, + { + "checksum": "sha256:a3a7b6f870a420aec92c67a5489150796673f4b2297af07ef0db200987d9ee3f" + }, + { + "checksum": "sha256:4652cdbf488fe4aa85fd54289f3b4d824fe1b9cdbf30c989cd8124928331803d" + }, + { + "checksum": "sha256:2ed632face13f21a2f71f8fb3e86f90119bd74712b8c4837646c6442c8e24f53" + }, + { + "checksum": "sha256:e9d3adb5df960913105864554af0d17ac26287f7454c13865895cec93c57cc6c" + }, + { + "checksum": "sha256:d863808793a34bae10d7bf066b68be37883eb38cf117172de5e47c9eb729cb3d" + }, + { + "checksum": "sha256:9e90e6054da06f5c8c2733c3b66987693a58ddc1f05d95b23ca0a464e26a2b22" + }, + { + "checksum": "sha256:c7efac801bc1b89d979c6eef9eae0fc75dc322bc15060b8cdc396fe1def0564b" + }, + { + "checksum": "sha256:7519f2af362827daecf105e1dccb551350f32dfd3f6a8a85bf6eb1b4b7788255" + }, + { + "checksum": "sha256:e82ab03c8a19f40df7f1eee34786246562ba4f5d5876ce77736ecde219006cf4" + }, + { + "checksum": "sha256:d2593772ce32d37483f61d254990c31e3548ab504c793b95e8f4603a5040032b" + }, + { + "checksum": "sha256:c80b960ea521232657be394882ac2e2ab827e732686a75a41fca2837d985f4f2" + }, + { + "checksum": "sha256:dd6a948e5a656701156c618e202c0b6defd11ba6f162b6790cbb42cea15141ae" + }, + { + "checksum": "sha256:81afd309f084c91d68c06bd46a4fce2e0d1e265a01ff87e309d1202e711e4a02" + }, + { + "checksum": "sha256:b64080283110b2e23a184787ccd14eca6994c321cf4be9cb16205cfda1ab5d89" + }, + { + "checksum": "sha256:e9c4d2606604003b7dd226619b1ed62a18626e22e150b06f1fec14dfd1721b8a" + }, + { + "checksum": "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28" + }, + { + "checksum": "sha256:d3192605b3aa6c19118f95e14f69f4394424eb09f7649e127223bbfbff676758" + }, + { + "checksum": "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43" + }, + { + "checksum": "sha256:d3b6d1d0bc08398ecdc1ecab089318d829414811e5ccf63c2a5ffb80f8f92138" + }, + { + "checksum": "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362" + }, + { + "checksum": "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64" + }, + { + "checksum": "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835" + }, + { + "checksum": "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf" + }, + { + "checksum": "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b" + }, + { + "checksum": "sha256:120917580d51db51cb32edabbf3929dfcc044bf7a3016007ba8db59bc915f909" + }, + { + "checksum": "sha256:683db6cfc407c739357b34d19c3d9881d1790b0d0aa6a5b4b2a206b7d6581b32" + }, + { + "checksum": "sha256:42c2ee5aaeb59bf19e80a9b58e4cf7c4977563789c83eaea53d4bb5cf0284fce" + }, + { + "checksum": "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55" + }, + { + "checksum": "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21" + }, + { + "checksum": "sha256:fd75c594f871a3353d326833e630ea1d28e5f446f796b836dc628f8c9c039f88" + }, + { + "checksum": "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414" + }, + { + "checksum": "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca" + }, + { + "checksum": "sha256:1ea7838dd4ae4147f0888b6e3613bd4b86fb9a1293d0e192c61aa9ff6fb9ebcb" + }, + { + "checksum": "sha256:d311e76aaf7a5bc43df52e69ace9679036c497bf1f4a0272309b98af649021fa" + }, + { + "checksum": "sha256:e84ba0cc416281ce1c296db3b2eaf10ac3f3f5e9b5e09fc792b0a91c48df5185" + }, + { + "checksum": "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a" + }, + { + "checksum": "sha256:e5cb9b897bd73c0c7d49bbec0949b364bd2971edb637dc3d88fc25bf6c57de78" + }, + { + "checksum": "sha256:a07b21bf156e4a15c566506eb5f5b9e9c7087a58c471c004f53d4eae1bce90e3" + }, + { + "checksum": "sha256:23e7003ecaf5a03793b299ab5e737ef833657e4dddce3adc5ac261eb946132fc" + }, + { + "checksum": "sha256:ba96075700fb65a1bb508b93401904b769a66b593148c23e99230a50ff0e174f" + }, + { + "checksum": "sha256:64974a66c0deda570362735cc698951b3683d93cadc3c88f0e6557f96e1b2fbe" + }, + { + "checksum": "sha256:e1067888710b91198be46b5f35ccf948450afb97603faf822163adbef075d313" + }, + { + "checksum": "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42" + }, + { + "checksum": "sha256:db6872540b6a0671c1170eccd328ae49869b06f8f39beb93ebef92aa7306440d" + }, + { + "checksum": "sha256:261aca60621e3185d35b5d8b59af8cf938cbf9b26a686389b9e81544c8ff5c96" + }, + { + "checksum": "sha256:3459ac9ecad925e511502cff687ceb77f52f391303793f7670794a5c0b040f3d" + }, + { + "checksum": "sha256:c1508ffd007eeca1ba4e5d1c2fa1d8cd7e537b10f177742570644c703e447763" + }, + { + "checksum": "sha256:a4ef09e900e5504b692f38dd95bfd20b305c1a4ff0799b39246808e7cc201d01" + }, + { + "checksum": "sha256:43c96252342f0998041b052f719a3b0f848af845664ea21bb3b72543422f95c8" + }, + { + "checksum": "sha256:744a6f8d1acf3c49b77e0f96217a6bae3d7dba6228a16676be21b7332adf9f43" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "vfs_type": "xfs", + "path": "/", + "options": "defaults" + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "kernel_opts": "console=ttyS0 console=ttyS0,115200n8 no_timer_check crashkernel=auto net.ifnames=0", + "legacy": "powerpc-ieee1275" + } + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "redhat": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "bootloader": { + "type": "grub2", + "platform": "powerpc-ieee1275" + }, + "format": "qcow2", + "filename": "disk.qcow2", + "size": 4294967296, + "ptuuid": "0x14fc63d2", + "pttype": "dos", + "partitions": [ + { + "start": 0, + "size": 8192, + "type": "41", + "bootable": true + }, + { + "start": 10240, + "filesystem": { + "type": "xfs", + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/acl-2.2.53-1.el8.ppc64le.rpm", + "checksum": "sha256:e280c3b7c5bb7838c7956ea3605165ea35480cde85a617c1eff6ca64d6157fe9" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.ppc64le.rpm", + "checksum": "sha256:7c7df93f7b01587f4945ae4c69eec2af512ff4dfc83d8a36268c9238acd9aa71" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/bash-4.4.19-12.el8.ppc64le.rpm", + "checksum": "sha256:3a5d1837798f980b89b6d635fe40f118cc871fac7638dcea3539d45e4e9f7985" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/brotli-1.0.6-2.el8.ppc64le.rpm", + "checksum": "sha256:d96bfcccbdce94af25721e3018a5853ff9670de828b6ac61ed76b5248a413e90" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/bzip2-libs-1.0.6-26.el8.ppc64le.rpm", + "checksum": "sha256:1d084e85f865a35f39067256c83f17a05632b531d9b6c5afb8cdecca1e594d62" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/chkconfig-1.13-2.el8.ppc64le.rpm", + "checksum": "sha256:f6a005b8edb3f866d72ea95d3801930c3be8d75cdebadcf995b0d85300069840" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/coreutils-8.30-8.el8.ppc64le.rpm", + "checksum": "sha256:a6eed3ca128d562c0aed92a123d9d726cf8074df7f98c7ecef5c40257d5bc76e" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/coreutils-common-8.30-8.el8.ppc64le.rpm", + "checksum": "sha256:fc1ae52e3812c059032ad99f074e2a2019c6c005d5b31ea33365c301eb5d4a2d" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cpio-2.12-8.el8.ppc64le.rpm", + "checksum": "sha256:5d190a4742bc826edbe3d3dfb261c94688aca6e1bd0d431b58fc0feb9f40c1b5" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cracklib-2.9.6-15.el8.ppc64le.rpm", + "checksum": "sha256:03e586f573bb9a8a463215d194a6b2bceff16d67af096883df5bbcda0ca55076" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cracklib-dicts-2.9.6-15.el8.ppc64le.rpm", + "checksum": "sha256:13f54c6408ac37c8b4a24fb22af1a719d05d86206d1d4f979d71fad96ab7f319" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cryptsetup-libs-2.3.3-1.el8.ppc64le.rpm", + "checksum": "sha256:f616e1d0db786c6a194f012f85fd534dd5aa84c19353dcfa8a5a13d8898bfc3d" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/curl-7.61.1-12.el8.ppc64le.rpm", + "checksum": "sha256:20a994752f44f7f2c1c3df9850b5381be5b641c0ee913a80a794ca6c49ef7efb" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.ppc64le.rpm", + "checksum": "sha256:eee41ee73236cba78a31ad3914a2f49f3d00abe114e752409d9ec07e50d2c48e" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-1.12.8-11.el8.ppc64le.rpm", + "checksum": "sha256:b490e452b2ba6ebb8980392cef4b7be06b9788ad4cfd37ce31c568d80b29861b" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-daemon-1.12.8-11.el8.ppc64le.rpm", + "checksum": "sha256:2af56bdac984d2755e44a4bc733df7217c1756aac3007dbca1408a218cc6c2b4" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-libs-1.12.8-11.el8.ppc64le.rpm", + "checksum": "sha256:ed5d642b5684142e9224449ffc26aeca810276b1182b66a391c2e276b988ae3c" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-tools-1.12.8-11.el8.ppc64le.rpm", + "checksum": "sha256:f98a963e1bd233a65606e24dd2b941455e7233e6d9d0d07925f419c85be2bdc2" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/device-mapper-1.02.171-3.el8.ppc64le.rpm", + "checksum": "sha256:ccc3640eff73677c4f962104b7a9fa6cb8c08787d77c4ba016569b0b11deb8f5" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/device-mapper-libs-1.02.171-3.el8.ppc64le.rpm", + "checksum": "sha256:2edb7ade3d137c1373e8dcf1f765e62dabd7a86f256f2b8872baf1b4cd4a420b" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/diffutils-3.6-6.el8.ppc64le.rpm", + "checksum": "sha256:e811b0abd14d296513d7900092e66d06736d42e46db06d06d845dcd260fbc665" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dosfstools-4.1-6.el8.ppc64le.rpm", + "checksum": "sha256:72c17b5b06cb08a819da004e904d03ee23c1dfe86e0b29231cccc6f50d303ceb" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dracut-049-89.git20200625.el8.ppc64le.rpm", + "checksum": "sha256:12b368c93ec9e4282ee1aad905e336166aa6dd2519a9f53a1adc11b6fbc2095c" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/e2fsprogs-1.45.6-1.el8.ppc64le.rpm", + "checksum": "sha256:559de474c1dd617a53585eb4913da24181b4b52a4e579bd91c4fd280f5c7776f" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/e2fsprogs-libs-1.45.6-1.el8.ppc64le.rpm", + "checksum": "sha256:299078646f29228e7f497925598b233024996dfaccaa96dcf62c1d14e30a7735" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/elfutils-debuginfod-client-0.180-1.el8.ppc64le.rpm", + "checksum": "sha256:39acf20c2687b0c174c5961f88209b42b689ce866701f78bbb94bd875afd883e" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/elfutils-libelf-0.180-1.el8.ppc64le.rpm", + "checksum": "sha256:3a65dd5868f303c775f48e7acef810cea2a606aec93496cae36c5e9eb9129650" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/elfutils-libs-0.180-1.el8.ppc64le.rpm", + "checksum": "sha256:b896a07208090c08a314e4f590ed8ee399f77ffc6a73864a11b4e9dcac234bba" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/expat-2.2.5-4.el8.ppc64le.rpm", + "checksum": "sha256:40e937791b4b008d86cc82d0bd7564e55fa2b08c092b2a7dab0040876f790022" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/file-5.33-16.el8.ppc64le.rpm", + "checksum": "sha256:7e6bb03794258406bfee886f507934be08fe1d80a8643af028e631b37f9bcd4f" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/file-libs-5.33-16.el8.ppc64le.rpm", + "checksum": "sha256:eb2cc86f4f01aa0ee86ec3a878ceac7eabe04ce5142f8a4b06e3f22cab002b75" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/filesystem-3.8-3.el8.ppc64le.rpm", + "checksum": "sha256:b25a8c87220920855a25357cd27024b1b9b87fefa48e1e877f7e23d0e1954a1d" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/findutils-4.6.0-20.el8.ppc64le.rpm", + "checksum": "sha256:a48836542020c973d67ba459387dca8549d4d65749926eed8031f601b18a8738" + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.9.1", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/freetype-2.9.1-4.el8.ppc64le.rpm", + "checksum": "sha256:96904dd00cb918042fa0492a244c9ffcd2609604adb639a4e41a75368967f2b0" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/fuse-libs-2.9.7-12.el8.ppc64le.rpm", + "checksum": "sha256:17d887ffe27ba3dfd324bae27b0309c13b0b8430597fb65cb4b377416cc21cf3" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gawk-4.2.1-1.el8.ppc64le.rpm", + "checksum": "sha256:2034236aa3ea2de19c9d9b717b83515a7a2e82685e8963d03fbb19973b20c249" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gdbm-1.18-1.el8.ppc64le.rpm", + "checksum": "sha256:75f6ee212b397466bbdc9320473ee2de0198b9573d3204a71422ef215e985e8d" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gdbm-libs-1.18-1.el8.ppc64le.rpm", + "checksum": "sha256:81a30f2977dfa5ede4e3a4077c8590de94c2f6bc97c4968f7bb556c713169a99" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gettext-0.19.8.1-17.el8.ppc64le.rpm", + "checksum": "sha256:f14b5f40e96ae727ce58c415295141645910311915d79d446403f68ff416ebad" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gettext-libs-0.19.8.1-17.el8.ppc64le.rpm", + "checksum": "sha256:eec4945093aa8b86e3c3a8ed629499ac3478be1e5f0a89d74178e277a7484750" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glib2-2.56.4-8.el8.ppc64le.rpm", + "checksum": "sha256:d0bdb653ebfa5cc5a596157434e50d544ad176bd6c3869896be0aa5996199771" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glibc-2.28-127.el8.ppc64le.rpm", + "checksum": "sha256:ca164a41ad98cbc73c23259bb112bbd04162bb363b596a3c99eac02182a01d26" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glibc-all-langpacks-2.28-127.el8.ppc64le.rpm", + "checksum": "sha256:c58f71151ec41a8da17f8d5a45364e6c85cb3fe149993047ac9ef4b5aecd1fff" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glibc-common-2.28-127.el8.ppc64le.rpm", + "checksum": "sha256:8c8e8e8db16ef828278de55cefb09425a83079597a093f93e6261fd5bd027406" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gmp-6.1.2-10.el8.ppc64le.rpm", + "checksum": "sha256:5009afc9241f592691ce9097fb74dabba84b1d2eaf267a7bea71b33bc7ac3795" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gnupg2-2.2.20-2.el8.ppc64le.rpm", + "checksum": "sha256:350d1a6728391907db3ef0ec69b80837d145e39b0cf86a36161432f587dc3308" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gnupg2-smime-2.2.20-2.el8.ppc64le.rpm", + "checksum": "sha256:5896adabcbefa7b297052fd9687b51a9eefe883c91f71e7be71a9200188757d1" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gnutls-3.6.14-3.el8.ppc64le.rpm", + "checksum": "sha256:da9ced19708b900ccc4053ca3df8d58c081869b46c9ee801c1685f447a299731" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gpgme-1.13.1-3.el8.ppc64le.rpm", + "checksum": "sha256:715dbe24d12d9fe43a6efa804dedb3e50e5babed510073b838b6e42ec06d5b8b" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grep-3.1-6.el8.ppc64le.rpm", + "checksum": "sha256:5246dc8c3bae5d860cb5ca12d787e976c3ca70bc3d023350eabc8a9e88601058" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-ppc64le", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-ppc64le-2.02-84.el8.ppc64le.rpm", + "checksum": "sha256:2c3aeeee40861bf0576cfccb8a1d7fbf5948dd60e1c97d2354b8d4dbe34247e8" + }, + { + "name": "grub2-ppc64le-modules", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-ppc64le-modules-2.02-84.el8.noarch.rpm", + "checksum": "sha256:ce85ea9b2eb4d1e2ae94136168cda2bb768fe995ca09620615c1e69b8b0d6bfb" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-tools-2.02-84.el8.ppc64le.rpm", + "checksum": "sha256:feac297c00956073e5f1f4465db8d66ee8498f67719e6dc0bf2b808b4d23523d" + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-tools-extra-2.02-84.el8.ppc64le.rpm", + "checksum": "sha256:f661a9f8dd567b4e47c6753f94a3c9497ded0ceb08ffabe8b279420d7e9f9f32" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-tools-minimal-2.02-84.el8.ppc64le.rpm", + "checksum": "sha256:05421657115297a907645ca4536e8d81e82da116f20053541f8c1e71d62977a6" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grubby-8.40-41.el8.ppc64le.rpm", + "checksum": "sha256:16ba1aa8c5db466e4288412bfedf01be75918b4cece328bdf8ebe590a845d490" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gzip-1.9-9.el8.ppc64le.rpm", + "checksum": "sha256:7f2af219510f9bb8c70beea8c1bbfcdf3d84f9c96ebf28fe84c8bac20f4516e3" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/hardlink-1.3-6.el8.ppc64le.rpm", + "checksum": "sha256:ea8d6dd8c5e592d79229541874e6c2521e456e0efa5386a1fde95a7ed93ee4bd" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ima-evm-utils-1.1-5.el8.ppc64le.rpm", + "checksum": "sha256:e820bcff2a4fb2de93e1e4d4b369964bbdc82e2f6fa77d41c3a8835a9becb909" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/info-6.5-6.el8.ppc64le.rpm", + "checksum": "sha256:0c706e235cd737512024bbc99a6fcbca41a9898c13a4ae11797514ac99a16839" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/iptables-libs-1.8.4-14.el8.ppc64le.rpm", + "checksum": "sha256:7ddfb571e9fe4183721b20fc063c9b0fc1797b2cc5c7d0e677edce583d72c0c5" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/json-c-0.13.1-0.2.el8.ppc64le.rpm", + "checksum": "sha256:56dc429cc3404a69f5d72338303a615fdbb16380688c93a4a7e13ecd773a80f2" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/json-glib-1.4.4-1.el8.ppc64le.rpm", + "checksum": "sha256:ba5ed56f4798d522c6ba041f841617e9362a33b41eee1794214d85eb3bd3fa53" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kbd-2.0.4-10.el8.ppc64le.rpm", + "checksum": "sha256:7519682fc74640736910735ce7b0f3a4ca6deed6d6e365d1cff47f8412519a13" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/keyutils-libs-1.5.10-6.el8.ppc64le.rpm", + "checksum": "sha256:76ed4d1820916e1d4d5ba12a9200b790fc75f2801937d63753fca7e12b6c9d6e" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kmod-25-16.el8.ppc64le.rpm", + "checksum": "sha256:16744c34b4e5d937388ea1169160dff7ac02692884d90c87b730ba0f9964476d" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kmod-libs-25-16.el8.ppc64le.rpm", + "checksum": "sha256:5a67ae309abe3ef1d6dc326a373abc5791d4264b657fa2e3e15be334fb1baa1d" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kpartx-0.8.4-2.el8.ppc64le.rpm", + "checksum": "sha256:cb77a2c9467e5873cf21f429069da709089dc10062c4d927d9e59eca0aac2546" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/krb5-libs-1.18.2-3.el8.ppc64le.rpm", + "checksum": "sha256:ff355a15b36bb34bf2f0a8c4cf4b16347981c0c95e71ea7f3c125d01a33e57c7" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libacl-2.2.53-1.el8.ppc64le.rpm", + "checksum": "sha256:68269d4f3588a15e94360c9d0f595d0ad7f1ece27968162ac42468acd462e526" + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.112", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libaio-0.3.112-1.el8.ppc64le.rpm", + "checksum": "sha256:3d425b214eeb598d59e4891ee3f5b0c941ff4755790907588309b431c1482195" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libarchive-3.3.2-9.el8.ppc64le.rpm", + "checksum": "sha256:f3495aae115e7a02bc1d55465e699a6836116a0bd34bdb7eb992e2b878d4b584" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libassuan-2.5.1-3.el8.ppc64le.rpm", + "checksum": "sha256:32fc4d89fa8040aa8a180717305eb2c7a7094ad255cdb66fd7af2254fa89a5c8" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libattr-2.4.48-3.el8.ppc64le.rpm", + "checksum": "sha256:58a7c06351efae8f3b1bff3b4832ed02ebc9f1018d6978b1703c6e963f26db98" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libblkid-2.32.1-24.el8.ppc64le.rpm", + "checksum": "sha256:b56bf1fc0c0818069d8833845e90c629215abbc8bce652c52cf077dcc224be34" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcap-2.26-4.el8.ppc64le.rpm", + "checksum": "sha256:7676c7a3f92aedec71efad68ce95c1ba5362b7bb75a815b70174a96a2126cebe" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcap-ng-0.7.9-5.el8.ppc64le.rpm", + "checksum": "sha256:39fec51b4b40aef643f68f41cca660bce59c5fbb360bcedceec04c17cafd17e6" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcom_err-1.45.6-1.el8.ppc64le.rpm", + "checksum": "sha256:f79f084807195110307640a0f6e3ecbce88cce070961ea19d68bdfafab3862fb" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcomps-0.1.11-4.el8.ppc64le.rpm", + "checksum": "sha256:56a66127f50af442a8bbd3183c29d39d4b1825526dd134405ecea82839ccca23" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcroco-0.6.12-4.el8.ppc64le.rpm", + "checksum": "sha256:f9607d29ed10edab125dba7a1972b0f783a0522eb29f03f825abbeb5281fbeeb" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcurl-7.61.1-12.el8.ppc64le.rpm", + "checksum": "sha256:2c1a643202117f9bdf48b11c24b60a01c409f2ccdc43914a89ac980f7d692ae6" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libdb-5.3.28-39.el8.ppc64le.rpm", + "checksum": "sha256:e660d48e49bb3da5f5e8ad3e79b65184a95eeb4351b3f6d38e3024c332bbb570" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libdb-utils-5.3.28-39.el8.ppc64le.rpm", + "checksum": "sha256:6b0cfe88a81e314afa03ce297f2bb0470a29a8f13465ba4a52fc65550027cbda" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libdnf-0.48.0-2.el8.ppc64le.rpm", + "checksum": "sha256:79d49c7e1c6bde0467649271fb45928a313c5a8cad3c0855d3cae9277e9b474c" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libevent-2.1.8-5.el8.ppc64le.rpm", + "checksum": "sha256:50f00be9540e2ab1e81f955e9ad33ecbb24ba6538ddccf418ad00ebfeb1fe472" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libfdisk-2.32.1-24.el8.ppc64le.rpm", + "checksum": "sha256:fb110b4fd708d68d41606e0120f5befbb171e6a9f8be2a23618284238fbf19dd" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libffi-3.1-22.el8.ppc64le.rpm", + "checksum": "sha256:d20bcdcb1e6a8d16a5df9cdc99744f907516b9ded51b671bd0a0f31189ac43a5" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgcc-8.3.1-5.1.el8.ppc64le.rpm", + "checksum": "sha256:1a92ddb2b7caa477d02eadcd97b1f4fb124359609dc827dfedb7de0976ebf824" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgcrypt-1.8.5-4.el8.ppc64le.rpm", + "checksum": "sha256:4f2725db0dc03a8bb729ccf6ced8fc4e8eae995afa7029decb7a7aa81e6eb417" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgomp-8.3.1-5.1.el8.ppc64le.rpm", + "checksum": "sha256:6b6b362f865498d59d17673d93fabe076015e7804462412e3da589335890f8d9" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgpg-error-1.31-1.el8.ppc64le.rpm", + "checksum": "sha256:69997f597de86de2dedda20db0f5b516585751822162f4dacd01cbc2808a9155" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libidn2-2.2.0-1.el8.ppc64le.rpm", + "checksum": "sha256:7221e9c72741e31d3e954cae6a1b780b15da86abb70d6fdf3c125b1a440ce2b2" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libkcapi-1.2.0-2.el8.ppc64le.rpm", + "checksum": "sha256:d4fff4e2707628db04c16a2cd8fa0c5e9854084688acf74ca4c1db27ea9d2f8d" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.ppc64le.rpm", + "checksum": "sha256:4a44b9e5e7977128528c4108ef55d49e52290c51d376c6ffd177a6b59113fbf6" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libksba-1.3.5-7.el8.ppc64le.rpm", + "checksum": "sha256:fef4bb13fab5780f4f9c9d8962c7d15378c7128a69ab08244b1e520b295bf685" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libmetalink-0.1.3-7.el8.ppc64le.rpm", + "checksum": "sha256:5ea0604f773c0ae0e273206443a5f115e21010e8acb1d580a22e5ce0219ac991" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libmodulemd-2.9.4-2.el8.ppc64le.rpm", + "checksum": "sha256:23b438c52f920e7d3870031673412e81e1edc12c427e64e204ba6620df4401b7" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libmount-2.32.1-24.el8.ppc64le.rpm", + "checksum": "sha256:03318129f3b75d57abb1f15adf1ddc26c23fc178432c66b5ffc43e586c948428" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libnghttp2-1.33.0-3.el8_2.1.ppc64le.rpm", + "checksum": "sha256:530f8aa49c10d80202e2b3e2c2b505dbdcdc2c3b56231d5986b6388da3ffd12b" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.ppc64le.rpm", + "checksum": "sha256:7c458f0dfbd31662e5a8a91b847881dfba6ff04786bc21e7de230236ce8ffaa7" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpcap-1.9.1-4.el8.ppc64le.rpm", + "checksum": "sha256:9f526c50ff9fae2f6c1d02eb10b6ced74b3ee94e7292e7ad483076ab730c1eef" + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.34", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpng-1.6.34-5.el8.ppc64le.rpm", + "checksum": "sha256:d42e36ab818d9284eb5fb9d46a0af71d99b91d917b3fdf1ac9af3ebd473606f1" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpsl-0.20.2-6.el8.ppc64le.rpm", + "checksum": "sha256:95971777d5b9af4cc37788f0b9193c693de7dc2f0f842f341a5d2182af4edb24" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpwquality-1.4.0-9.el8.ppc64le.rpm", + "checksum": "sha256:e02d721b2396471683a7f73d681ed4cc71bb2d50ef0e8390cc97ab047e4187a9" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/librepo-1.12.0-1.el8.ppc64le.rpm", + "checksum": "sha256:278dffe93fc19fd1613a9ab8d61c87a755e68120163d5a1352368b68f3880074" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libreport-filesystem-2.9.5-11.el8.ppc64le.rpm", + "checksum": "sha256:7c526e6c9e22ba9fbd88da30824a4791c87f3da890426890be3a72f2ebf7f0c8" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/librhsm-0.0.3-3.el8.ppc64le.rpm", + "checksum": "sha256:08af4dc49ee9fbef7b2b6320da7809a952fa5d4bb907e546aa2a74827dcd7390" + }, + { + "name": "librtas", + "epoch": 0, + "version": "2.0.2", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/librtas-2.0.2-1.el8.ppc64le.rpm", + "checksum": "sha256:94b8f8ce9926a60524cba62e9695785bf12f3ca7f6de86cbcb510889e9e61509" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libseccomp-2.4.3-1.el8.ppc64le.rpm", + "checksum": "sha256:93e8eb519fee69ad0a90733dea8577670a1c62f02fce9348633880e0d9190f4b" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsecret-0.18.6-1.el8.ppc64le.rpm", + "checksum": "sha256:485ef6f1f8b26b7bf4c1ae8ee8ae7bda9ff679aa0fc9e62d1ff990a54e0e559d" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libselinux-2.9-3.el8.ppc64le.rpm", + "checksum": "sha256:a5fcf3d4d064289bd04a9f19cc204c8facaf389c0c10e47b075529f0601dc02c" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libselinux-utils-2.9-3.el8.ppc64le.rpm", + "checksum": "sha256:d07a535fd49579414267571a6e7286d38061e65dcffd1f947e32b8edeb0e7f58" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsemanage-2.9-3.el8.ppc64le.rpm", + "checksum": "sha256:6cc8c3ff2b465defb9ac46a2caf95d53c887d18f68bd43f21e6e3635b884d6ab" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsepol-2.9-1.el8.ppc64le.rpm", + "checksum": "sha256:4e4dc28e98b8470dfbb789d784b8bc5afc04dc7295047d2ee16d36ab4dbaba1d" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsigsegv-2.11-5.el8.ppc64le.rpm", + "checksum": "sha256:e1c727c81c7d54b21ebf7346d81ea57bbf77cdee59efc2c1bd57d78b45697de6" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsmartcols-2.32.1-24.el8.ppc64le.rpm", + "checksum": "sha256:9bdf8e5f329b54f1ea45a5d5277d650be84f7bd2f1570d7c5e7ac743fd57cf1f" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsolv-0.7.11-1.el8.ppc64le.rpm", + "checksum": "sha256:d3d600e075b60b1462bc5f2cf7319ad484a416739175aaacf384a5805749861c" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libss-1.45.6-1.el8.ppc64le.rpm", + "checksum": "sha256:86ae5e445a80e4485162e6f24fcf6df539fa7d1d31650755d4d5af5d65ec2b88" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libssh-0.9.4-2.el8.ppc64le.rpm", + "checksum": "sha256:8ec9594f8cb1eb3313cb8979201b0f85a914107fc4f706ea27727e977da056ee" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libstdc++-8.3.1-5.1.el8.ppc64le.rpm", + "checksum": "sha256:36ccdb1a1673d3f739a29105edc45c09074ec667cc470051c2d9c52bfa6b78b0" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libtasn1-4.13-3.el8.ppc64le.rpm", + "checksum": "sha256:97ffad7f79927ee908510ae381ada704827d369b5a0b8715214f51270a0984d3" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libtirpc-1.1.4-4.el8.ppc64le.rpm", + "checksum": "sha256:e6bdc7b1e5bb8b3c9d578fa1a88c4cbd3ff262b14857464a691b6afd34e38b90" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libunistring-0.9.9-3.el8.ppc64le.rpm", + "checksum": "sha256:a7db88e037715eb0ea86ffa464285615549b23178a14d691935685bdb6df4742" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libusbx-1.0.23-3.el8.ppc64le.rpm", + "checksum": "sha256:18b66eb926d6554fdfa6c6464c301d906d63ec69f54ac318cf0a5e7cccf43d2e" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libutempter-1.1.6-14.el8.ppc64le.rpm", + "checksum": "sha256:349d5e65aeee405ea53d10c651d541418f11af4bf5f436ab5cba8c07183f405e" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libuuid-2.32.1-24.el8.ppc64le.rpm", + "checksum": "sha256:e4dbbf5ba29de01b7121586f8bfc99305168d1db301ba121320344e344012704" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libverto-0.3.0-5.el8.ppc64le.rpm", + "checksum": "sha256:eb870676d56cd2212611a9814f6ab08b53a209d1bee37e38fdbc434b6a1600a1" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libxcrypt-4.1.1-4.el8.ppc64le.rpm", + "checksum": "sha256:81ca20194dbba8bb696a02f1f01d45b1ca73aa38a18d97173022fcf96e195156" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libxml2-2.9.7-8.el8.ppc64le.rpm", + "checksum": "sha256:679ba7cf5974aaeb4b50a926e8fa28821f48b71c182d50b1033bccb6fdc34a06" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libyaml-0.1.7-5.el8.ppc64le.rpm", + "checksum": "sha256:9f1810ee304c2827027a4dadb0142f6940c28991b5371cbe302593eece6c25e4" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libzstd-1.4.4-1.el8.ppc64le.rpm", + "checksum": "sha256:0143da5903a3053bbd62714904db5a7c1aba3b9ff77c97d9126a4479d3047c58" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/lua-libs-5.3.4-11.el8.ppc64le.rpm", + "checksum": "sha256:756fe3065871f2c7c1f9635ae75119d1755dbb6a5ea62fae7660b410d9392e34" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/lz4-libs-1.8.3-2.el8.ppc64le.rpm", + "checksum": "sha256:e943b3e1fb71459be6ee74f944e7bcf6a0835858b48924501645eb00997b5d1b" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/mpfr-3.1.6-1.el8.ppc64le.rpm", + "checksum": "sha256:d3c4038a7a3be6987f74236394642be84092a9dd731317dfe5974af757c3ccfc" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ncurses-6.1-7.20180224.el8.ppc64le.rpm", + "checksum": "sha256:7d7280d0de03be269a1b078534d286496085416efef921996590bcce7db64736" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ncurses-libs-6.1-7.20180224.el8.ppc64le.rpm", + "checksum": "sha256:bcd9e55362d6afab44a89acd877c8c0a8ae27572028bfc9282f3bfec0d21e27c" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/nettle-3.4.1-2.el8.ppc64le.rpm", + "checksum": "sha256:68c10fbde60ad63306c334df256056bc93eb04d56eaba5ddc40254e81e815056" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/npth-1.5-4.el8.ppc64le.rpm", + "checksum": "sha256:4538fb52ec654977ccaf56d0fc26b491f4cdda58e8070f5922165ac77104857c" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openldap-2.4.46-15.el8.ppc64le.rpm", + "checksum": "sha256:1130c50d23d464653fbca78aa597b1c65d22c9163c70cf3011a9a116af76bbca" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssl-1.1.1g-9.el8.ppc64le.rpm", + "checksum": "sha256:b1184fa6ab84322f715418f76a8e260c6a6bb352307cce9732d72ed3f0ebdec0" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssl-libs-1.1.1g-9.el8.ppc64le.rpm", + "checksum": "sha256:feee80d14e2857f2a229cfed7aea85b74b6f2350532816e824c09f356dc38126" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssl-pkcs11-0.4.10-2.el8.ppc64le.rpm", + "checksum": "sha256:0ecb10a5141fd74ad9165fef9dd7d9485a34ea1b10605a9d4b61eefe60b767d9" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/os-prober-1.74-6.el8.ppc64le.rpm", + "checksum": "sha256:0970bde39d7cc1dfebda51e4359f63821fe8dd573d46253fc471f8466c79ac82" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/p11-kit-0.23.14-5.el8_0.ppc64le.rpm", + "checksum": "sha256:dfd1a319a66586bb1027b9a7a674f17b18070e3b389eb8dcd34ffad3ff485725" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/p11-kit-trust-0.23.14-5.el8_0.ppc64le.rpm", + "checksum": "sha256:7f3337d8024c8eb5d67ed830c2ed1c5b046887d4806ea22cf6e8f3f77b8d7e6f" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pam-1.3.1-11.el8.ppc64le.rpm", + "checksum": "sha256:fabddaa901a0de98c661612755fbe4ebe4ac1ec372a5e0ec6b7874ef6901340f" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pcre-8.42-4.el8.ppc64le.rpm", + "checksum": "sha256:e773a81f7cba7beffb23d9ebb6ce545ba4b1556091544f73ff57d263cc552176" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pcre2-10.32-2.el8.ppc64le.rpm", + "checksum": "sha256:d79c92d015fa952edf2a4ad75f95042139fbf8b4323f24e939e1ed06481253d9" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pigz-2.4-4.el8.ppc64le.rpm", + "checksum": "sha256:d8b5b571fb84c7ccfa24f8a20460471d41fc4487d6d0c34f91fbeaba4c857eb2" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/platform-python-3.6.8-30.el8.ppc64le.rpm", + "checksum": "sha256:704622626b2938eee1c096c1ecf1e5fc88be4e4eac80a911d0c2ee893f9657b1" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/policycoreutils-2.9-9.el8.ppc64le.rpm", + "checksum": "sha256:efb004153a5a6a96330b8a5371b02ce4dc22a8cf6d28f5b928cc443cf3416285" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/popt-1.16-14.el8.ppc64le.rpm", + "checksum": "sha256:bbfd0c8d360ae86528c2d06b6b64ceb2d6a974dea101ba5e1268740b689142b9" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/procps-ng-3.3.15-2.el8.ppc64le.rpm", + "checksum": "sha256:ccd0b65f90f2db606a9b38f00c71f5bcd7611fafde92e185a57d3e2a3f027787" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-gpg-1.13.1-3.el8.ppc64le.rpm", + "checksum": "sha256:6501a0edf570ea01137395ff13cdbc3914dee9e536ab92ff9698a5ddd76dfb16" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-hawkey-0.48.0-2.el8.ppc64le.rpm", + "checksum": "sha256:f7cbcbe2816044bb92ca5066d88ac8c3b578a68eff16b2745d93c90483a5153f" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-libcomps-0.1.11-4.el8.ppc64le.rpm", + "checksum": "sha256:0396d12973b68a7d16074aa51f75e706c0b7558cd24d32e5573c49a487b2497c" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-libdnf-0.48.0-2.el8.ppc64le.rpm", + "checksum": "sha256:ec450facea1c2a5dc1a6b5bacc2330dd5174780d92db66379f4918c2ab40da83" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-libs-3.6.8-30.el8.ppc64le.rpm", + "checksum": "sha256:495c3fc6f15c5daef8686fd01d1f7008bbc72ca9c963da1ae3cf60ffc519f48d" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-rpm-4.14.3-4.el8.ppc64le.rpm", + "checksum": "sha256:8ac41d38c793722177492319ae57588ae2619962c8442e64aecc4b6708295707" + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/readline-7.0-10.el8.ppc64le.rpm", + "checksum": "sha256:d8ba6a91610d87dfb599018c887514af663a0f963ed6b25a83bac8fba56fa266" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/redhat-release-8.3-0.2.el8.ppc64le.rpm", + "checksum": "sha256:16294bc45d609de6ce07b660fadc851022e43d00a13f3c98c1f45064abf591d7" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/redhat-release-eula-8.3-0.2.el8.ppc64le.rpm", + "checksum": "sha256:b2d090246903da9162c06912dcfed747df9e7ba1b9f029a98c96c4155f68ce67" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-4.14.3-4.el8.ppc64le.rpm", + "checksum": "sha256:ba5b6364787be1ce76c7d5d3f7861f75157db6c5354f4b6e7b26ba8962fb226d" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-build-libs-4.14.3-4.el8.ppc64le.rpm", + "checksum": "sha256:3ab5aad8b10e5343c08af8c24775334b6111cd50fb9629f21335626057c7dab9" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-libs-4.14.3-4.el8.ppc64le.rpm", + "checksum": "sha256:acdee02b0e12502f5010ebfeb9d3cec41172e83db45a5e941085a8edba1bd408" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.ppc64le.rpm", + "checksum": "sha256:5919c5de67dbc1f44a553cbb4037572c258bb394ff27ca838b2198d05a0c2dad" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.ppc64le.rpm", + "checksum": "sha256:54b3552112a26b7ad79db1251bc0e8e0415ac60da299d54700c5bc59760e5be9" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sed-4.5-2.el8.ppc64le.rpm", + "checksum": "sha256:183ae7a707951036dd77805d75aae1dbb055ca52d8fecdc6ef21d5e1518fca4d" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/shadow-utils-4.6-10.el8.ppc64le.rpm", + "checksum": "sha256:94700eed0bd231ee73fac06e38ce66573466039c0454774bf268ea50a03fe056" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/shared-mime-info-1.9-3.el8.ppc64le.rpm", + "checksum": "sha256:d2206467c216ee77262401385a61b540eeaabca9a44b9ab864c993962ba76758" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sqlite-libs-3.26.0-10.el8.ppc64le.rpm", + "checksum": "sha256:dcf427833f63e4672ecf04100181b671235ae2b50d450a25976ea176ead363fb" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/systemd-239-36.el8.ppc64le.rpm", + "checksum": "sha256:97e8ec14c0569aee6633342fd3b05507b8c30c9d62b52aff0c3e693640d78938" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/systemd-libs-239-36.el8.ppc64le.rpm", + "checksum": "sha256:be5a5ad0d3338da31fca41645852b03c748c41e77bd715619033f71496f3c875" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/systemd-pam-239-36.el8.ppc64le.rpm", + "checksum": "sha256:b9a80c6b1e8bff298ad6215248ce9d193d734dc038f1de211c01a2e118b9606f" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/systemd-udev-239-36.el8.ppc64le.rpm", + "checksum": "sha256:f10990a6f2e8affe55991a46ca80eda2af8c0c8a4aada3b623ba740abfb059cf" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/tar-1.30-5.el8.ppc64le.rpm", + "checksum": "sha256:2081809fd42c6cefcf677362a825c38b166f04df8edf865d5d6404348179e536" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/trousers-0.3.14-4.el8.ppc64le.rpm", + "checksum": "sha256:d55a783930503e7f1590bc2ad10d9fa184ed3cb44e2ca85ae2bbe11fcbf166b8" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/trousers-lib-0.3.14-4.el8.ppc64le.rpm", + "checksum": "sha256:3f5c97c72cbbe552e9f7183d1f8eb477a3f46647bb513a175a8c158d3eba3dee" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/util-linux-2.32.1-24.el8.ppc64le.rpm", + "checksum": "sha256:7a05e800e37b4aa74e657a829097090faf013338056c8bd6ebfeee5ae4467a22" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/which-2.21-12.el8.ppc64le.rpm", + "checksum": "sha256:241a563df5ae3b3b49d45cbf9e67b6932b8345b3fbb40029dbb3b0834cf3db16" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/xfsprogs-5.0.0-4.el8.ppc64le.rpm", + "checksum": "sha256:87209220ec94795ac0e079e98877a4f911beaee3a829bf95cda5a8b24b545a94" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/xz-5.2.4-3.el8.ppc64le.rpm", + "checksum": "sha256:2b2e0d9a397d27c7076f05ab309c71ebffdf2c33df95de51c700af181899c87e" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/xz-libs-5.2.4-3.el8.ppc64le.rpm", + "checksum": "sha256:37e4f7e854765b98e8dd10986b758631c7ca00942bc53efb4003ee326e1cc834" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/zlib-1.2.11-15.el8.ppc64le.rpm", + "checksum": "sha256:df50c6f03ef2fa2d8f900a4a95d84921511b5e435533677f3067c1fd47f84b93" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/libxkbcommon-0.9.1-1.el8.ppc64le.rpm", + "checksum": "sha256:e9d3adb5df960913105864554af0d17ac26287f7454c13865895cec93c57cc6c" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/memstrack-0.1.8-1.el8.ppc64le.rpm", + "checksum": "sha256:d863808793a34bae10d7bf066b68be37883eb38cf117172de5e47c9eb729cb3d" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/pinentry-1.1.0-2.el8.ppc64le.rpm", + "checksum": "sha256:b64080283110b2e23a184787ccd14eca6994c321cf4be9cb16205cfda1ab5d89" + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-unbound-1.7.3-14.el8.ppc64le.rpm", + "checksum": "sha256:a07b21bf156e4a15c566506eb5f5b9e9c7087a58c471c004f53d4eae1bce90e3" + }, + { + "name": "python36", + "epoch": 0, + "version": "3.6.8", + "release": "2.module+el8.1.0+3334+5cb623d7", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.ppc64le.rpm", + "checksum": "sha256:fd5c2530f60be39592a9b1b7a65569d44f5bbb826db5e721d17e3cb9d6ffe41d" + }, + { + "name": "qemu-img", + "epoch": 15, + "version": "4.2.0", + "release": "29.module+el8.3.0+7212+401047e6", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.ppc64le.rpm", + "checksum": "sha256:ddd3be2e7e48c17085b756240d53a6b69a79ed82266cd4131c5459b2ee2a676d" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/unbound-libs-1.7.3-14.el8.ppc64le.rpm", + "checksum": "sha256:744a6f8d1acf3c49b77e0f96217a6bae3d7dba6228a16676be21b7332adf9f43" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/NetworkManager-1.26.0-0.2.el8.ppc64le.rpm", + "checksum": "sha256:ec5d13a3aeca7edd6397ba211328a8d68adad4b135c7c2e78020f9eae530daee" + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/NetworkManager-libnm-1.26.0-0.2.el8.ppc64le.rpm", + "checksum": "sha256:e88bf835ce671803517345468b682f757022d788b17ebac257bb5ee4879222b6" + }, + { + "name": "NetworkManager-team", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/NetworkManager-team-1.26.0-0.2.el8.ppc64le.rpm", + "checksum": "sha256:82a40c656ab0a5658383654ba842d29b12a7334207ef80cc23c43fa3c9bde43b" + }, + { + "name": "NetworkManager-tui", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/NetworkManager-tui-1.26.0-0.2.el8.ppc64le.rpm", + "checksum": "sha256:c00ca52f5d13adf55105e6276d32cfad2637d57db399e65d08947672fa8a4acb" + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/acl-2.2.53-1.el8.ppc64le.rpm", + "checksum": "sha256:e280c3b7c5bb7838c7956ea3605165ea35480cde85a617c1eff6ca64d6157fe9" + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.ppc64le.rpm", + "checksum": "sha256:65911ee8ff0d9bb81f4ce2537ff9cf58fe0903feba5119f0b261e3237ebafa30" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.ppc64le.rpm", + "checksum": "sha256:7c7df93f7b01587f4945ae4c69eec2af512ff4dfc83d8a36268c9238acd9aa71" + }, + { + "name": "authselect", + "epoch": 0, + "version": "1.2.1", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/authselect-1.2.1-2.el8.ppc64le.rpm", + "checksum": "sha256:ea3ecc89cb330622a075fadbfafb5789de7d78a91954931dee0aa56cd7b0472c" + }, + { + "name": "authselect-libs", + "epoch": 0, + "version": "1.2.1", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/authselect-libs-1.2.1-2.el8.ppc64le.rpm", + "checksum": "sha256:1a6f0a2a3a9e6a1df7917d95918f63353796c8a11c6d73dc4623c968dc612750" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/bash-4.4.19-12.el8.ppc64le.rpm", + "checksum": "sha256:3a5d1837798f980b89b6d635fe40f118cc871fac7638dcea3539d45e4e9f7985" + }, + { + "name": "bc", + "epoch": 0, + "version": "1.07.1", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/bc-1.07.1-5.el8.ppc64le.rpm", + "checksum": "sha256:0ec21164642fdc03a56ebcdeb4691ee5db63f8da78a2762bb5b8d86398ca432f" + }, + { + "name": "bind-export-libs", + "epoch": 32, + "version": "9.11.20", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/bind-export-libs-9.11.20-3.el8.ppc64le.rpm", + "checksum": "sha256:5ec6ae7905536e750f71445ab42960577aa7355d58b4e4f683aa29e270e6adb7" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/brotli-1.0.6-2.el8.ppc64le.rpm", + "checksum": "sha256:d96bfcccbdce94af25721e3018a5853ff9670de828b6ac61ed76b5248a413e90" + }, + { + "name": "bzip2", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/bzip2-1.0.6-26.el8.ppc64le.rpm", + "checksum": "sha256:7414afd238a66fb6c75319f9a73f9aa267d3578ed63fc850cf633dd08cd2ebb5" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/bzip2-libs-1.0.6-26.el8.ppc64le.rpm", + "checksum": "sha256:1d084e85f865a35f39067256c83f17a05632b531d9b6c5afb8cdecca1e594d62" + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.13.0", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/c-ares-1.13.0-5.el8.ppc64le.rpm", + "checksum": "sha256:ac8a116d533843bfb95ebc3777b084b76fea22f67662e3a20c51fae5325d4000" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/checkpolicy-2.9-1.el8.ppc64le.rpm", + "checksum": "sha256:60dc43534d0e8b5e6917accd3c76c8b68f95b72e19cccc194bf1c449c6d9c7af" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/chkconfig-1.13-2.el8.ppc64le.rpm", + "checksum": "sha256:f6a005b8edb3f866d72ea95d3801930c3be8d75cdebadcf995b0d85300069840" + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/chrony-3.5-1.el8.ppc64le.rpm", + "checksum": "sha256:f68cc6cecafe770005ecf01a527510374fc7daa34988bb37162dbe8b0fcf773b" + }, + { + "name": "cockpit-bridge", + "epoch": 0, + "version": "222.1", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cockpit-bridge-222.1-1.el8.ppc64le.rpm", + "checksum": "sha256:84fe687d85ab19aabd3933ca4e0eebca7c16486d9475b5b587bdf83570084027" + }, + { + "name": "cockpit-system", + "epoch": 0, + "version": "222.1", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cockpit-system-222.1-1.el8.noarch.rpm", + "checksum": "sha256:202cfa88a6b2f1ec6a0bc0546f578c1ca6b5b6fcfeaf3e1228beead14d8bf758" + }, + { + "name": "cockpit-ws", + "epoch": 0, + "version": "222.1", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cockpit-ws-222.1-1.el8.ppc64le.rpm", + "checksum": "sha256:4887b8527e2390441745251ddd5f37aa53acbf3f2a4e7e5a5d45588c9de0cb61" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/coreutils-8.30-8.el8.ppc64le.rpm", + "checksum": "sha256:a6eed3ca128d562c0aed92a123d9d726cf8074df7f98c7ecef5c40257d5bc76e" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/coreutils-common-8.30-8.el8.ppc64le.rpm", + "checksum": "sha256:fc1ae52e3812c059032ad99f074e2a2019c6c005d5b31ea33365c301eb5d4a2d" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cpio-2.12-8.el8.ppc64le.rpm", + "checksum": "sha256:5d190a4742bc826edbe3d3dfb261c94688aca6e1bd0d431b58fc0feb9f40c1b5" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cracklib-2.9.6-15.el8.ppc64le.rpm", + "checksum": "sha256:03e586f573bb9a8a463215d194a6b2bceff16d67af096883df5bbcda0ca55076" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cracklib-dicts-2.9.6-15.el8.ppc64le.rpm", + "checksum": "sha256:13f54c6408ac37c8b4a24fb22af1a719d05d86206d1d4f979d71fad96ab7f319" + }, + { + "name": "cronie", + "epoch": 0, + "version": "1.5.2", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cronie-1.5.2-4.el8.ppc64le.rpm", + "checksum": "sha256:3e572b42e5d4a488026eb5242396b43c88e13971e873d2951cd149a96880cf09" + }, + { + "name": "cronie-anacron", + "epoch": 0, + "version": "1.5.2", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cronie-anacron-1.5.2-4.el8.ppc64le.rpm", + "checksum": "sha256:390cd4d0df9ad341f80b740c40c0959b3b0c31cdc3d0dfb415e05af72ada00d4" + }, + { + "name": "crontabs", + "epoch": 0, + "version": "1.11", + "release": "16.20150630git.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/crontabs-1.11-16.20150630git.el8.noarch.rpm", + "checksum": "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cryptsetup-libs-2.3.3-1.el8.ppc64le.rpm", + "checksum": "sha256:f616e1d0db786c6a194f012f85fd534dd5aa84c19353dcfa8a5a13d8898bfc3d" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/curl-7.61.1-12.el8.ppc64le.rpm", + "checksum": "sha256:20a994752f44f7f2c1c3df9850b5381be5b641c0ee913a80a794ca6c49ef7efb" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.ppc64le.rpm", + "checksum": "sha256:eee41ee73236cba78a31ad3914a2f49f3d00abe114e752409d9ec07e50d2c48e" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-1.12.8-11.el8.ppc64le.rpm", + "checksum": "sha256:b490e452b2ba6ebb8980392cef4b7be06b9788ad4cfd37ce31c568d80b29861b" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-daemon-1.12.8-11.el8.ppc64le.rpm", + "checksum": "sha256:2af56bdac984d2755e44a4bc733df7217c1756aac3007dbca1408a218cc6c2b4" + }, + { + "name": "dbus-glib", + "epoch": 0, + "version": "0.110", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-glib-0.110-2.el8.ppc64le.rpm", + "checksum": "sha256:acd73603cd1d0dd6542d16ad9f86aa0ce95517a6c5bd2ab1279417dc4cd0aa8b" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-libs-1.12.8-11.el8.ppc64le.rpm", + "checksum": "sha256:ed5d642b5684142e9224449ffc26aeca810276b1182b66a391c2e276b988ae3c" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-tools-1.12.8-11.el8.ppc64le.rpm", + "checksum": "sha256:f98a963e1bd233a65606e24dd2b941455e7233e6d9d0d07925f419c85be2bdc2" + }, + { + "name": "dejavu-fonts-common", + "epoch": 0, + "version": "2.35", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dejavu-fonts-common-2.35-6.el8.noarch.rpm", + "checksum": "sha256:7ce6aa282f9f23c46c44186595924d05f4e7a899b504eb95a0f87008f6620268" + }, + { + "name": "dejavu-sans-mono-fonts", + "epoch": 0, + "version": "2.35", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dejavu-sans-mono-fonts-2.35-6.el8.noarch.rpm", + "checksum": "sha256:dd379385bd1d2e05f50c4795e5a0eff9030fdac0fd2579bb4b56233257672b27" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/device-mapper-1.02.171-3.el8.ppc64le.rpm", + "checksum": "sha256:ccc3640eff73677c4f962104b7a9fa6cb8c08787d77c4ba016569b0b11deb8f5" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/device-mapper-libs-1.02.171-3.el8.ppc64le.rpm", + "checksum": "sha256:2edb7ade3d137c1373e8dcf1f765e62dabd7a86f256f2b8872baf1b4cd4a420b" + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dhcp-client-4.3.6-41.el8.ppc64le.rpm", + "checksum": "sha256:477fc6eb3aed3d10f9d730b5960cdb4bdd6381c337e8fd3303537a22a558eba4" + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dhcp-common-4.3.6-41.el8.noarch.rpm", + "checksum": "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2" + }, + { + "name": "dhcp-libs", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dhcp-libs-4.3.6-41.el8.ppc64le.rpm", + "checksum": "sha256:6dcd9452321975a5d2014a925e80d6629c6de79758fb59844a796f41e837ce7e" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/diffutils-3.6-6.el8.ppc64le.rpm", + "checksum": "sha256:e811b0abd14d296513d7900092e66d06736d42e46db06d06d845dcd260fbc665" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dnf-plugin-subscription-manager", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dnf-plugin-subscription-manager-1.27.9-1.el8.ppc64le.rpm", + "checksum": "sha256:075bb18685d13a0a2d628d665ab5585c7e80c65edf3efc72b5c27b6046ba13b2" + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dnf-plugins-core-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dracut-049-89.git20200625.el8.ppc64le.rpm", + "checksum": "sha256:12b368c93ec9e4282ee1aad905e336166aa6dd2519a9f53a1adc11b6fbc2095c" + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dracut-config-generic-049-89.git20200625.el8.ppc64le.rpm", + "checksum": "sha256:70ccdbee7bc8bb785263a24547b64faa09ea013046a548a341b204391328c887" + }, + { + "name": "dracut-network", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dracut-network-049-89.git20200625.el8.ppc64le.rpm", + "checksum": "sha256:5f34bc7117ef6b1bd601735b3c1e9e8ee56852ad6d963471813d128e7cbb325d" + }, + { + "name": "dracut-squash", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dracut-squash-049-89.git20200625.el8.ppc64le.rpm", + "checksum": "sha256:921bd23cb652304164d7ca8bcf22d948caad840bd96a180c38c11374c7b93e2a" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/e2fsprogs-1.45.6-1.el8.ppc64le.rpm", + "checksum": "sha256:559de474c1dd617a53585eb4913da24181b4b52a4e579bd91c4fd280f5c7776f" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/e2fsprogs-libs-1.45.6-1.el8.ppc64le.rpm", + "checksum": "sha256:299078646f29228e7f497925598b233024996dfaccaa96dcf62c1d14e30a7735" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/elfutils-debuginfod-client-0.180-1.el8.ppc64le.rpm", + "checksum": "sha256:39acf20c2687b0c174c5961f88209b42b689ce866701f78bbb94bd875afd883e" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/elfutils-libelf-0.180-1.el8.ppc64le.rpm", + "checksum": "sha256:3a65dd5868f303c775f48e7acef810cea2a606aec93496cae36c5e9eb9129650" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/elfutils-libs-0.180-1.el8.ppc64le.rpm", + "checksum": "sha256:b896a07208090c08a314e4f590ed8ee399f77ffc6a73864a11b4e9dcac234bba" + }, + { + "name": "ethtool", + "epoch": 2, + "version": "5.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ethtool-5.0-2.el8.ppc64le.rpm", + "checksum": "sha256:8527e6b228ce500ac99cbff9bc11822120586664e52e40203a6dee86d3ffe238" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/expat-2.2.5-4.el8.ppc64le.rpm", + "checksum": "sha256:40e937791b4b008d86cc82d0bd7564e55fa2b08c092b2a7dab0040876f790022" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/file-5.33-16.el8.ppc64le.rpm", + "checksum": "sha256:7e6bb03794258406bfee886f507934be08fe1d80a8643af028e631b37f9bcd4f" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/file-libs-5.33-16.el8.ppc64le.rpm", + "checksum": "sha256:eb2cc86f4f01aa0ee86ec3a878ceac7eabe04ce5142f8a4b06e3f22cab002b75" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/filesystem-3.8-3.el8.ppc64le.rpm", + "checksum": "sha256:b25a8c87220920855a25357cd27024b1b9b87fefa48e1e877f7e23d0e1954a1d" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/findutils-4.6.0-20.el8.ppc64le.rpm", + "checksum": "sha256:a48836542020c973d67ba459387dca8549d4d65749926eed8031f601b18a8738" + }, + { + "name": "fontconfig", + "epoch": 0, + "version": "2.13.1", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/fontconfig-2.13.1-3.el8.ppc64le.rpm", + "checksum": "sha256:849ccf21d9d01314b037a500ed84f9c687ef27843ac9f6a255027f579441b3dd" + }, + { + "name": "fontpackages-filesystem", + "epoch": 0, + "version": "1.44", + "release": "22.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/fontpackages-filesystem-1.44-22.el8.noarch.rpm", + "checksum": "sha256:db1fad3c2d8735e69084bd4b09ea963938e4dde2f2e096dc7a4ce146f18b7ab0" + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.9.1", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/freetype-2.9.1-4.el8.ppc64le.rpm", + "checksum": "sha256:96904dd00cb918042fa0492a244c9ffcd2609604adb639a4e41a75368967f2b0" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/fuse-libs-2.9.7-12.el8.ppc64le.rpm", + "checksum": "sha256:17d887ffe27ba3dfd324bae27b0309c13b0b8430597fb65cb4b377416cc21cf3" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gawk-4.2.1-1.el8.ppc64le.rpm", + "checksum": "sha256:2034236aa3ea2de19c9d9b717b83515a7a2e82685e8963d03fbb19973b20c249" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gdbm-1.18-1.el8.ppc64le.rpm", + "checksum": "sha256:75f6ee212b397466bbdc9320473ee2de0198b9573d3204a71422ef215e985e8d" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gdbm-libs-1.18-1.el8.ppc64le.rpm", + "checksum": "sha256:81a30f2977dfa5ede4e3a4077c8590de94c2f6bc97c4968f7bb556c713169a99" + }, + { + "name": "gdk-pixbuf2", + "epoch": 0, + "version": "2.36.12", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gdk-pixbuf2-2.36.12-5.el8.ppc64le.rpm", + "checksum": "sha256:9e802845a3e725e8014b2f0f1e6be1cb6dcbdaaa7472e011b5cd7ce5007aa0b4" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gettext-0.19.8.1-17.el8.ppc64le.rpm", + "checksum": "sha256:f14b5f40e96ae727ce58c415295141645910311915d79d446403f68ff416ebad" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gettext-libs-0.19.8.1-17.el8.ppc64le.rpm", + "checksum": "sha256:eec4945093aa8b86e3c3a8ed629499ac3478be1e5f0a89d74178e277a7484750" + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.56.1", + "release": "1.1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glib-networking-2.56.1-1.1.el8.ppc64le.rpm", + "checksum": "sha256:8592c632ab75709f66c5fe6b49ce424a2ddd390f7bf01ee768425b3e60801fec" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glib2-2.56.4-8.el8.ppc64le.rpm", + "checksum": "sha256:d0bdb653ebfa5cc5a596157434e50d544ad176bd6c3869896be0aa5996199771" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glibc-2.28-127.el8.ppc64le.rpm", + "checksum": "sha256:ca164a41ad98cbc73c23259bb112bbd04162bb363b596a3c99eac02182a01d26" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glibc-all-langpacks-2.28-127.el8.ppc64le.rpm", + "checksum": "sha256:c58f71151ec41a8da17f8d5a45364e6c85cb3fe149993047ac9ef4b5aecd1fff" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glibc-common-2.28-127.el8.ppc64le.rpm", + "checksum": "sha256:8c8e8e8db16ef828278de55cefb09425a83079597a093f93e6261fd5bd027406" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gmp-6.1.2-10.el8.ppc64le.rpm", + "checksum": "sha256:5009afc9241f592691ce9097fb74dabba84b1d2eaf267a7bea71b33bc7ac3795" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gnupg2-2.2.20-2.el8.ppc64le.rpm", + "checksum": "sha256:350d1a6728391907db3ef0ec69b80837d145e39b0cf86a36161432f587dc3308" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gnupg2-smime-2.2.20-2.el8.ppc64le.rpm", + "checksum": "sha256:5896adabcbefa7b297052fd9687b51a9eefe883c91f71e7be71a9200188757d1" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gnutls-3.6.14-3.el8.ppc64le.rpm", + "checksum": "sha256:da9ced19708b900ccc4053ca3df8d58c081869b46c9ee801c1685f447a299731" + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.56.1", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gobject-introspection-1.56.1-1.el8.ppc64le.rpm", + "checksum": "sha256:f1d3e3ea7b8a12c148ba128e5e734a8615fcc7b5d2bad8a34cb504240ed6e949" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gpgme-1.13.1-3.el8.ppc64le.rpm", + "checksum": "sha256:715dbe24d12d9fe43a6efa804dedb3e50e5babed510073b838b6e42ec06d5b8b" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grep-3.1-6.el8.ppc64le.rpm", + "checksum": "sha256:5246dc8c3bae5d860cb5ca12d787e976c3ca70bc3d023350eabc8a9e88601058" + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "18.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/groff-base-1.22.3-18.el8.ppc64le.rpm", + "checksum": "sha256:35598d36ec3edefc4bae80f0a5b345a254ae686aa913dc92ac04d6855331c037" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-ppc64le", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-ppc64le-2.02-84.el8.ppc64le.rpm", + "checksum": "sha256:2c3aeeee40861bf0576cfccb8a1d7fbf5948dd60e1c97d2354b8d4dbe34247e8" + }, + { + "name": "grub2-ppc64le-modules", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-ppc64le-modules-2.02-84.el8.noarch.rpm", + "checksum": "sha256:ce85ea9b2eb4d1e2ae94136168cda2bb768fe995ca09620615c1e69b8b0d6bfb" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-tools-2.02-84.el8.ppc64le.rpm", + "checksum": "sha256:feac297c00956073e5f1f4465db8d66ee8498f67719e6dc0bf2b808b4d23523d" + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-tools-extra-2.02-84.el8.ppc64le.rpm", + "checksum": "sha256:f661a9f8dd567b4e47c6753f94a3c9497ded0ceb08ffabe8b279420d7e9f9f32" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-tools-minimal-2.02-84.el8.ppc64le.rpm", + "checksum": "sha256:05421657115297a907645ca4536e8d81e82da116f20053541f8c1e71d62977a6" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grubby-8.40-41.el8.ppc64le.rpm", + "checksum": "sha256:16ba1aa8c5db466e4288412bfedf01be75918b4cece328bdf8ebe590a845d490" + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.32.0", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gsettings-desktop-schemas-3.32.0-5.el8.ppc64le.rpm", + "checksum": "sha256:04ad0e61cc39b28f98d043b7c6da75098118431b82eb9afbb809b128409a8c3d" + }, + { + "name": "gssproxy", + "epoch": 0, + "version": "0.8.0", + "release": "16.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gssproxy-0.8.0-16.el8.ppc64le.rpm", + "checksum": "sha256:f9bf7114261adcc471838f4f82e7b37d3e411282c5c45aeb7de29fb6f990f836" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gzip-1.9-9.el8.ppc64le.rpm", + "checksum": "sha256:7f2af219510f9bb8c70beea8c1bbfcdf3d84f9c96ebf28fe84c8bac20f4516e3" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/hardlink-1.3-6.el8.ppc64le.rpm", + "checksum": "sha256:ea8d6dd8c5e592d79229541874e6c2521e456e0efa5386a1fde95a7ed93ee4bd" + }, + { + "name": "hdparm", + "epoch": 0, + "version": "9.54", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/hdparm-9.54-2.el8.ppc64le.rpm", + "checksum": "sha256:80fe17f542ecf961d5fb29ada18de1280cefd94cdd4b1325050df794364d5c44" + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.20", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/hostname-3.20-6.el8.ppc64le.rpm", + "checksum": "sha256:090273fb5feb61c91755b41b0ade0fcce8ac222ed0f48c4a63f0f0253b1c12c2" + }, + { + "name": "hwdata", + "epoch": 0, + "version": "0.314", + "release": "8.5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/hwdata-0.314-8.5.el8.noarch.rpm", + "checksum": "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ima-evm-utils-1.1-5.el8.ppc64le.rpm", + "checksum": "sha256:e820bcff2a4fb2de93e1e4d4b369964bbdc82e2f6fa77d41c3a8835a9becb909" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/info-6.5-6.el8.ppc64le.rpm", + "checksum": "sha256:0c706e235cd737512024bbc99a6fcbca41a9898c13a4ae11797514ac99a16839" + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.00.8", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/initscripts-10.00.8-1.el8.ppc64le.rpm", + "checksum": "sha256:01827bf9d3d6fd52c2f41c880055ef7bbd9a8dae1778c5e90ddd460be2bac5c2" + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.2.4", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ipcalc-0.2.4-4.el8.ppc64le.rpm", + "checksum": "sha256:f240ad7059651b3df40fb6ad32a153e5da71692f716d4e0fcdbc9aed931971f6" + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.3.0", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/iproute-5.3.0-5.el8.ppc64le.rpm", + "checksum": "sha256:3e6181163fff4553eecbd8ff42d81424bca1265fdfda0fc03c76b3e2195ae8e9" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/iptables-libs-1.8.4-14.el8.ppc64le.rpm", + "checksum": "sha256:7ddfb571e9fe4183721b20fc063c9b0fc1797b2cc5c7d0e677edce583d72c0c5" + }, + { + "name": "iputils", + "epoch": 0, + "version": "20180629", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/iputils-20180629-2.el8.ppc64le.rpm", + "checksum": "sha256:72c41f668b3845264a00885bff6752453d6d514796860c43d33652e8ec9036d6" + }, + { + "name": "irqbalance", + "epoch": 2, + "version": "1.4.0", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/irqbalance-1.4.0-4.el8.ppc64le.rpm", + "checksum": "sha256:1b9ee3cff65d0603f4495bdaf0ecb7a316c88943232c8dd78591083cc313a163" + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.11", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/jansson-2.11-3.el8.ppc64le.rpm", + "checksum": "sha256:9e5e0c1de12f0bd0127f23356d9b1cd0f005ce26c2a0996f692f9483e0b6cc89" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/json-c-0.13.1-0.2.el8.ppc64le.rpm", + "checksum": "sha256:56dc429cc3404a69f5d72338303a615fdbb16380688c93a4a7e13ecd773a80f2" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/json-glib-1.4.4-1.el8.ppc64le.rpm", + "checksum": "sha256:ba5ed56f4798d522c6ba041f841617e9362a33b41eee1794214d85eb3bd3fa53" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kbd-2.0.4-10.el8.ppc64le.rpm", + "checksum": "sha256:7519682fc74640736910735ce7b0f3a4ca6deed6d6e365d1cff47f8412519a13" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "kernel", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kernel-4.18.0-221.el8.ppc64le.rpm", + "checksum": "sha256:b41a7db6b738b61a8f9e248da09cc474bf4e7b9dc9eb048a62114f3e7e512a0d" + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kernel-core-4.18.0-221.el8.ppc64le.rpm", + "checksum": "sha256:9badb068b18ed2b26a352efec492df8cb1599df51f4cf1bcdc8baeac903aa45a" + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kernel-modules-4.18.0-221.el8.ppc64le.rpm", + "checksum": "sha256:e349beccff56e002b94c9772d9150a5bbaf67db7e4e8a7130af0296956b25c54" + }, + { + "name": "kernel-tools", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kernel-tools-4.18.0-221.el8.ppc64le.rpm", + "checksum": "sha256:fc16215bdc96167d391b31193e8a66a5ca9612f907e41e18e15450e61eaf4208" + }, + { + "name": "kernel-tools-libs", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kernel-tools-libs-4.18.0-221.el8.ppc64le.rpm", + "checksum": "sha256:5a4582945c88472741d154fda2763945db6de6013b39090de8b523c88a97f2fb" + }, + { + "name": "kexec-tools", + "epoch": 0, + "version": "2.0.20", + "release": "29.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kexec-tools-2.0.20-29.el8.ppc64le.rpm", + "checksum": "sha256:8fc1e64c093d904507bfa66977e476c0f4f52ddb79f6698eddaa2b5a5359ac7f" + }, + { + "name": "keyutils", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/keyutils-1.5.10-6.el8.ppc64le.rpm", + "checksum": "sha256:4e9b4c5de79533bcf304bd5e034ed22462dfb5531008f4ad578671eb95aeb46d" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/keyutils-libs-1.5.10-6.el8.ppc64le.rpm", + "checksum": "sha256:76ed4d1820916e1d4d5ba12a9200b790fc75f2801937d63753fca7e12b6c9d6e" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kmod-25-16.el8.ppc64le.rpm", + "checksum": "sha256:16744c34b4e5d937388ea1169160dff7ac02692884d90c87b730ba0f9964476d" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kmod-libs-25-16.el8.ppc64le.rpm", + "checksum": "sha256:5a67ae309abe3ef1d6dc326a373abc5791d4264b657fa2e3e15be334fb1baa1d" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kpartx-0.8.4-2.el8.ppc64le.rpm", + "checksum": "sha256:cb77a2c9467e5873cf21f429069da709089dc10062c4d927d9e59eca0aac2546" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/krb5-libs-1.18.2-3.el8.ppc64le.rpm", + "checksum": "sha256:ff355a15b36bb34bf2f0a8c4cf4b16347981c0c95e71ea7f3c125d01a33e57c7" + }, + { + "name": "less", + "epoch": 0, + "version": "530", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/less-530-1.el8.ppc64le.rpm", + "checksum": "sha256:d82f1c7302a07e05879a53a49491f84b38af443519b39243fee95b79d7b700f1" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libacl-2.2.53-1.el8.ppc64le.rpm", + "checksum": "sha256:68269d4f3588a15e94360c9d0f595d0ad7f1ece27968162ac42468acd462e526" + }, + { + "name": "libappstream-glib", + "epoch": 0, + "version": "0.7.14", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libappstream-glib-0.7.14-3.el8.ppc64le.rpm", + "checksum": "sha256:cd1ed33bd28c614fe79026826b697c6904a67bf979d2720c2632d0f20c69c457" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libarchive-3.3.2-9.el8.ppc64le.rpm", + "checksum": "sha256:f3495aae115e7a02bc1d55465e699a6836116a0bd34bdb7eb992e2b878d4b584" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libassuan-2.5.1-3.el8.ppc64le.rpm", + "checksum": "sha256:32fc4d89fa8040aa8a180717305eb2c7a7094ad255cdb66fd7af2254fa89a5c8" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libattr-2.4.48-3.el8.ppc64le.rpm", + "checksum": "sha256:58a7c06351efae8f3b1bff3b4832ed02ebc9f1018d6978b1703c6e963f26db98" + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "39.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libbasicobjects-0.1.1-39.el8.ppc64le.rpm", + "checksum": "sha256:b828eb01daf36933c3476f38b3c7c464828f056171a91df2d82e9e19ea9aa9e6" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libblkid-2.32.1-24.el8.ppc64le.rpm", + "checksum": "sha256:b56bf1fc0c0818069d8833845e90c629215abbc8bce652c52cf077dcc224be34" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcap-2.26-4.el8.ppc64le.rpm", + "checksum": "sha256:7676c7a3f92aedec71efad68ce95c1ba5362b7bb75a815b70174a96a2126cebe" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcap-ng-0.7.9-5.el8.ppc64le.rpm", + "checksum": "sha256:39fec51b4b40aef643f68f41cca660bce59c5fbb360bcedceec04c17cafd17e6" + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "39.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcollection-0.7.0-39.el8.ppc64le.rpm", + "checksum": "sha256:79fd24e8c8c10d0937e716705b1ce196464c1d901e34219c60ab0865cc126879" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcom_err-1.45.6-1.el8.ppc64le.rpm", + "checksum": "sha256:f79f084807195110307640a0f6e3ecbce88cce070961ea19d68bdfafab3862fb" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcomps-0.1.11-4.el8.ppc64le.rpm", + "checksum": "sha256:56a66127f50af442a8bbd3183c29d39d4b1825526dd134405ecea82839ccca23" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcroco-0.6.12-4.el8.ppc64le.rpm", + "checksum": "sha256:f9607d29ed10edab125dba7a1972b0f783a0522eb29f03f825abbeb5281fbeeb" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcurl-7.61.1-12.el8.ppc64le.rpm", + "checksum": "sha256:2c1a643202117f9bdf48b11c24b60a01c409f2ccdc43914a89ac980f7d692ae6" + }, + { + "name": "libdaemon", + "epoch": 0, + "version": "0.14", + "release": "15.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libdaemon-0.14-15.el8.ppc64le.rpm", + "checksum": "sha256:21a8001b6092b823bf67d78f439f02e6d6f3a5403c2e8b346eb404c31567c5cb" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libdb-5.3.28-39.el8.ppc64le.rpm", + "checksum": "sha256:e660d48e49bb3da5f5e8ad3e79b65184a95eeb4351b3f6d38e3024c332bbb570" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libdb-utils-5.3.28-39.el8.ppc64le.rpm", + "checksum": "sha256:6b0cfe88a81e314afa03ce297f2bb0470a29a8f13465ba4a52fc65550027cbda" + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "39.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libdhash-0.5.0-39.el8.ppc64le.rpm", + "checksum": "sha256:0de547c2ed3a69512cc6b87f38528b0d8157b0c17d02a6b167bb3804eb2dbf41" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libdnf-0.48.0-2.el8.ppc64le.rpm", + "checksum": "sha256:79d49c7e1c6bde0467649271fb45928a313c5a8cad3c0855d3cae9277e9b474c" + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "23.20170329cvs.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libedit-3.1-23.20170329cvs.el8.ppc64le.rpm", + "checksum": "sha256:7f8760b668bc465f9e538da9bfa281d1c881d05611ba54a0ac38a97338694ce2" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libevent-2.1.8-5.el8.ppc64le.rpm", + "checksum": "sha256:50f00be9540e2ab1e81f955e9ad33ecbb24ba6538ddccf418ad00ebfeb1fe472" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libfdisk-2.32.1-24.el8.ppc64le.rpm", + "checksum": "sha256:fb110b4fd708d68d41606e0120f5befbb171e6a9f8be2a23618284238fbf19dd" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libffi-3.1-22.el8.ppc64le.rpm", + "checksum": "sha256:d20bcdcb1e6a8d16a5df9cdc99744f907516b9ded51b671bd0a0f31189ac43a5" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgcc-8.3.1-5.1.el8.ppc64le.rpm", + "checksum": "sha256:1a92ddb2b7caa477d02eadcd97b1f4fb124359609dc827dfedb7de0976ebf824" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgcrypt-1.8.5-4.el8.ppc64le.rpm", + "checksum": "sha256:4f2725db0dc03a8bb729ccf6ced8fc4e8eae995afa7029decb7a7aa81e6eb417" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgomp-8.3.1-5.1.el8.ppc64le.rpm", + "checksum": "sha256:6b6b362f865498d59d17673d93fabe076015e7804462412e3da589335890f8d9" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgpg-error-1.31-1.el8.ppc64le.rpm", + "checksum": "sha256:69997f597de86de2dedda20db0f5b516585751822162f4dacd01cbc2808a9155" + }, + { + "name": "libgudev", + "epoch": 0, + "version": "232", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgudev-232-4.el8.ppc64le.rpm", + "checksum": "sha256:6edd52da878b6d64327c584e28bf657831cbbaee66132fe8056895009424a235" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libidn2-2.2.0-1.el8.ppc64le.rpm", + "checksum": "sha256:7221e9c72741e31d3e954cae6a1b780b15da86abb70d6fdf3c125b1a440ce2b2" + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "39.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libini_config-1.3.1-39.el8.ppc64le.rpm", + "checksum": "sha256:16923f95942b0607ceeceedc30bbeea60a224c9da6d70ac8640b8a19915bfda1" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libkcapi-1.2.0-2.el8.ppc64le.rpm", + "checksum": "sha256:d4fff4e2707628db04c16a2cd8fa0c5e9854084688acf74ca4c1db27ea9d2f8d" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.ppc64le.rpm", + "checksum": "sha256:4a44b9e5e7977128528c4108ef55d49e52290c51d376c6ffd177a6b59113fbf6" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libksba-1.3.5-7.el8.ppc64le.rpm", + "checksum": "sha256:fef4bb13fab5780f4f9c9d8962c7d15378c7128a69ab08244b1e520b295bf685" + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.1.3", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libldb-2.1.3-2.el8.ppc64le.rpm", + "checksum": "sha256:b96fe83e9e8b9b1a6819e739ba23ee0b39991845aebc20f95dd434ed418f8912" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libmetalink-0.1.3-7.el8.ppc64le.rpm", + "checksum": "sha256:5ea0604f773c0ae0e273206443a5f115e21010e8acb1d580a22e5ce0219ac991" + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libmnl-1.0.4-6.el8.ppc64le.rpm", + "checksum": "sha256:af1858d5279d6624b777a4f5b7ff7efbfd3a6b75a6a6357c4412696dc59b2802" + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "17.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libmodman-2.0.1-17.el8.ppc64le.rpm", + "checksum": "sha256:a660a0ed20a7d6fd7caa88d85f92575cfa21d207c059aab380fa82c4742a1634" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libmodulemd-2.9.4-2.el8.ppc64le.rpm", + "checksum": "sha256:23b438c52f920e7d3870031673412e81e1edc12c427e64e204ba6620df4401b7" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libmount-2.32.1-24.el8.ppc64le.rpm", + "checksum": "sha256:03318129f3b75d57abb1f15adf1ddc26c23fc178432c66b5ffc43e586c948428" + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libndp-1.7-3.el8.ppc64le.rpm", + "checksum": "sha256:24d4b4ca9d967a535037e512808e9eb8a325268bb995a59691ef3d2da8f37d45" + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.3.3", + "release": "35.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libnfsidmap-2.3.3-35.el8.ppc64le.rpm", + "checksum": "sha256:f8f85ee37485e4ea80f24214571cb87889e226a520a1d5dc5699344bf59717ca" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libnghttp2-1.33.0-3.el8_2.1.ppc64le.rpm", + "checksum": "sha256:530f8aa49c10d80202e2b3e2c2b505dbdcdc2c3b56231d5986b6388da3ffd12b" + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libnl3-3.5.0-1.el8.ppc64le.rpm", + "checksum": "sha256:5369eb8f82cff7ef6592fd9b67fc50d2cdd01d2fb1e6879cccb85080842a0bf4" + }, + { + "name": "libnl3-cli", + "epoch": 0, + "version": "3.5.0", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libnl3-cli-3.5.0-1.el8.ppc64le.rpm", + "checksum": "sha256:bd73b6ee39c5d7e36fe72dc00e6a9da773d6fd7496bb3ecbf960f05dfa99edb0" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.ppc64le.rpm", + "checksum": "sha256:7c458f0dfbd31662e5a8a91b847881dfba6ff04786bc21e7de230236ce8ffaa7" + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "39.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpath_utils-0.2.1-39.el8.ppc64le.rpm", + "checksum": "sha256:388cc111d2c2cd5da6c024764584e3afba5eeff0c53a41ee19becebf8faea06a" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpcap-1.9.1-4.el8.ppc64le.rpm", + "checksum": "sha256:9f526c50ff9fae2f6c1d02eb10b6ced74b3ee94e7292e7ad483076ab730c1eef" + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpipeline-1.5.0-2.el8.ppc64le.rpm", + "checksum": "sha256:1cca144223075fbb7d43bdc42d42d273c73920ec3d381b0be8e9759055f3fcc2" + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.34", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpng-1.6.34-5.el8.ppc64le.rpm", + "checksum": "sha256:d42e36ab818d9284eb5fb9d46a0af71d99b91d917b3fdf1ac9af3ebd473606f1" + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "5.2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libproxy-0.4.15-5.2.el8.ppc64le.rpm", + "checksum": "sha256:0764057bdd0dc7d7db74195221cd3ec1eee9a031355af5be7ca3726116fc16c7" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpsl-0.20.2-6.el8.ppc64le.rpm", + "checksum": "sha256:95971777d5b9af4cc37788f0b9193c693de7dc2f0f842f341a5d2182af4edb24" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpwquality-1.4.0-9.el8.ppc64le.rpm", + "checksum": "sha256:e02d721b2396471683a7f73d681ed4cc71bb2d50ef0e8390cc97ab047e4187a9" + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "39.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libref_array-0.1.5-39.el8.ppc64le.rpm", + "checksum": "sha256:e5a9d44a20cdfb7cee822e0ec9411ddfcc7fab662300a7919a8530a669cf7a8c" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/librepo-1.12.0-1.el8.ppc64le.rpm", + "checksum": "sha256:278dffe93fc19fd1613a9ab8d61c87a755e68120163d5a1352368b68f3880074" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libreport-filesystem-2.9.5-11.el8.ppc64le.rpm", + "checksum": "sha256:7c526e6c9e22ba9fbd88da30824a4791c87f3da890426890be3a72f2ebf7f0c8" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/librhsm-0.0.3-3.el8.ppc64le.rpm", + "checksum": "sha256:08af4dc49ee9fbef7b2b6320da7809a952fa5d4bb907e546aa2a74827dcd7390" + }, + { + "name": "librtas", + "epoch": 0, + "version": "2.0.2", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/librtas-2.0.2-1.el8.ppc64le.rpm", + "checksum": "sha256:94b8f8ce9926a60524cba62e9695785bf12f3ca7f6de86cbcb510889e9e61509" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libseccomp-2.4.3-1.el8.ppc64le.rpm", + "checksum": "sha256:93e8eb519fee69ad0a90733dea8577670a1c62f02fce9348633880e0d9190f4b" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsecret-0.18.6-1.el8.ppc64le.rpm", + "checksum": "sha256:485ef6f1f8b26b7bf4c1ae8ee8ae7bda9ff679aa0fc9e62d1ff990a54e0e559d" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libselinux-2.9-3.el8.ppc64le.rpm", + "checksum": "sha256:a5fcf3d4d064289bd04a9f19cc204c8facaf389c0c10e47b075529f0601dc02c" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libselinux-utils-2.9-3.el8.ppc64le.rpm", + "checksum": "sha256:d07a535fd49579414267571a6e7286d38061e65dcffd1f947e32b8edeb0e7f58" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsemanage-2.9-3.el8.ppc64le.rpm", + "checksum": "sha256:6cc8c3ff2b465defb9ac46a2caf95d53c887d18f68bd43f21e6e3635b884d6ab" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsepol-2.9-1.el8.ppc64le.rpm", + "checksum": "sha256:4e4dc28e98b8470dfbb789d784b8bc5afc04dc7295047d2ee16d36ab4dbaba1d" + }, + { + "name": "libservicelog", + "epoch": 0, + "version": "1.1.18", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libservicelog-1.1.18-2.el8.ppc64le.rpm", + "checksum": "sha256:e9db628a63adadce6b6466cdb0af34d5bb0c147e682c4f4a9fc2294373d4b6d7" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsigsegv-2.11-5.el8.ppc64le.rpm", + "checksum": "sha256:e1c727c81c7d54b21ebf7346d81ea57bbf77cdee59efc2c1bd57d78b45697de6" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsmartcols-2.32.1-24.el8.ppc64le.rpm", + "checksum": "sha256:9bdf8e5f329b54f1ea45a5d5277d650be84f7bd2f1570d7c5e7ac743fd57cf1f" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsolv-0.7.11-1.el8.ppc64le.rpm", + "checksum": "sha256:d3d600e075b60b1462bc5f2cf7319ad484a416739175aaacf384a5805749861c" + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.62.3", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsoup-2.62.3-1.el8.ppc64le.rpm", + "checksum": "sha256:759ba259e960c720b7e096a7a1ef092d7e2181f7b9d17ccabd45867dafba98d3" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libss-1.45.6-1.el8.ppc64le.rpm", + "checksum": "sha256:86ae5e445a80e4485162e6f24fcf6df539fa7d1d31650755d4d5af5d65ec2b88" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libssh-0.9.4-2.el8.ppc64le.rpm", + "checksum": "sha256:8ec9594f8cb1eb3313cb8979201b0f85a914107fc4f706ea27727e977da056ee" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsss_autofs-2.3.0-2.el8.ppc64le.rpm", + "checksum": "sha256:d281c9c6793be93fcda14521cd3cccf37102b955607fda53d7051a1276bf0401" + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsss_certmap-2.3.0-2.el8.ppc64le.rpm", + "checksum": "sha256:b0a406b04a8ab0cd64bc2260faeecee8aaf93b82916cb8551b48eaace6dcf16a" + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsss_idmap-2.3.0-2.el8.ppc64le.rpm", + "checksum": "sha256:3f16f888f188951fdbff9117c6f30763f68eab0e36595fd12782dc6d298d4c2f" + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsss_nss_idmap-2.3.0-2.el8.ppc64le.rpm", + "checksum": "sha256:f388ccb860267e5e6b142708a2ebf16acf0f8181b9f59127e962159ab13d6336" + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsss_sudo-2.3.0-2.el8.ppc64le.rpm", + "checksum": "sha256:7db7737df4ce7f9bf2099a13dee98a724118bb8bf873fddb14ddbf4c22378287" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libstdc++-8.3.1-5.1.el8.ppc64le.rpm", + "checksum": "sha256:36ccdb1a1673d3f739a29105edc45c09074ec667cc470051c2d9c52bfa6b78b0" + }, + { + "name": "libstemmer", + "epoch": 0, + "version": "0", + "release": "10.585svn.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libstemmer-0-10.585svn.el8.ppc64le.rpm", + "checksum": "sha256:6c836d295d33eb6d66f5e805a8ab5f4e4e514a027b8dc4d16ba2e0469940e477" + }, + { + "name": "libsysfs", + "epoch": 0, + "version": "2.1.0", + "release": "24.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsysfs-2.1.0-24.el8.ppc64le.rpm", + "checksum": "sha256:848e59a9e9836ac1c7300da6958b25b64527078a4e6547e011f5ada16ce2fa4a" + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.1", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libtalloc-2.3.1-2.el8.ppc64le.rpm", + "checksum": "sha256:fd6163ed3dfc4d67c4f0aab0cc621815c59c3c95835cafac74155a7f4f85f202" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libtasn1-4.13-3.el8.ppc64le.rpm", + "checksum": "sha256:97ffad7f79927ee908510ae381ada704827d369b5a0b8715214f51270a0984d3" + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.3", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libtdb-1.4.3-1.el8.ppc64le.rpm", + "checksum": "sha256:bc658714fda75fa2cd8f635d358369a1716692f2e9d8ca4fae6ca6361dd422bc" + }, + { + "name": "libteam", + "epoch": 0, + "version": "1.29", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libteam-1.29-5.el8.ppc64le.rpm", + "checksum": "sha256:805dcfbc69e21fbbe2b0a03ec577f3e32c543f034f3b9c0a81f97442130bdfc6" + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.2", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libtevent-0.10.2-2.el8.ppc64le.rpm", + "checksum": "sha256:7276a9f44f6b731ca7b2b85f5c79457ab6d4a2d5597352ac772f93dfa2535730" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libtirpc-1.1.4-4.el8.ppc64le.rpm", + "checksum": "sha256:e6bdc7b1e5bb8b3c9d578fa1a88c4cbd3ff262b14857464a691b6afd34e38b90" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libunistring-0.9.9-3.el8.ppc64le.rpm", + "checksum": "sha256:a7db88e037715eb0ea86ffa464285615549b23178a14d691935685bdb6df4742" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libusbx-1.0.23-3.el8.ppc64le.rpm", + "checksum": "sha256:18b66eb926d6554fdfa6c6464c301d906d63ec69f54ac318cf0a5e7cccf43d2e" + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "23.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libuser-0.62-23.el8.ppc64le.rpm", + "checksum": "sha256:099495aa4c0d7c6a8e92ebd79496941c5a7291d806ce52f0983ca5a0993db0ad" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libutempter-1.1.6-14.el8.ppc64le.rpm", + "checksum": "sha256:349d5e65aeee405ea53d10c651d541418f11af4bf5f436ab5cba8c07183f405e" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libuuid-2.32.1-24.el8.ppc64le.rpm", + "checksum": "sha256:e4dbbf5ba29de01b7121586f8bfc99305168d1db301ba121320344e344012704" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libverto-0.3.0-5.el8.ppc64le.rpm", + "checksum": "sha256:eb870676d56cd2212611a9814f6ab08b53a209d1bee37e38fdbc434b6a1600a1" + }, + { + "name": "libverto-libevent", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libverto-libevent-0.3.0-5.el8.ppc64le.rpm", + "checksum": "sha256:c1fb113cecb751cfc6cea9e39c554b29e7fd56cd122977c772d5dcf3a9ce0812" + }, + { + "name": "libvpd", + "epoch": 0, + "version": "2.2.7", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libvpd-2.2.7-1.el8.ppc64le.rpm", + "checksum": "sha256:8821bda7623a2157db4883763f5f74a11dfd1b875d3085b571122f454bff8f73" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libxcrypt-4.1.1-4.el8.ppc64le.rpm", + "checksum": "sha256:81ca20194dbba8bb696a02f1f01d45b1ca73aa38a18d97173022fcf96e195156" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libxml2-2.9.7-8.el8.ppc64le.rpm", + "checksum": "sha256:679ba7cf5974aaeb4b50a926e8fa28821f48b71c182d50b1033bccb6fdc34a06" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libyaml-0.1.7-5.el8.ppc64le.rpm", + "checksum": "sha256:9f1810ee304c2827027a4dadb0142f6940c28991b5371cbe302593eece6c25e4" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libzstd-1.4.4-1.el8.ppc64le.rpm", + "checksum": "sha256:0143da5903a3053bbd62714904db5a7c1aba3b9ff77c97d9126a4479d3047c58" + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20200619", + "release": "99.git3890db36.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/linux-firmware-20200619-99.git3890db36.el8.noarch.rpm", + "checksum": "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9" + }, + { + "name": "logrotate", + "epoch": 0, + "version": "3.14.0", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/logrotate-3.14.0-4.el8.ppc64le.rpm", + "checksum": "sha256:30b6dfdf98da777eb424fc687f59acf7528110a0a8bdcd8dbbf78b0d74a7b714" + }, + { + "name": "lshw", + "epoch": 0, + "version": "B.02.19.2", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/lshw-B.02.19.2-2.el8.ppc64le.rpm", + "checksum": "sha256:de3b94c31c90b14e46d4c8d163d5fcc7d3b016e2fcfc090dcc076bbcc021800b" + }, + { + "name": "lsscsi", + "epoch": 0, + "version": "0.30", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/lsscsi-0.30-1.el8.ppc64le.rpm", + "checksum": "sha256:73f54ead0d97055f6fefd2619bb58cf421ef4d287a94e10c318ec2e9efa1a9fa" + }, + { + "name": "lsvpd", + "epoch": 0, + "version": "1.7.11", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/lsvpd-1.7.11-1.el8.ppc64le.rpm", + "checksum": "sha256:cb2a87844be8eef053cd2b32047552c53b32f16f618fac592a75a5376a4688bf" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/lua-libs-5.3.4-11.el8.ppc64le.rpm", + "checksum": "sha256:756fe3065871f2c7c1f9635ae75119d1755dbb6a5ea62fae7660b410d9392e34" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/lz4-libs-1.8.3-2.el8.ppc64le.rpm", + "checksum": "sha256:e943b3e1fb71459be6ee74f944e7bcf6a0835858b48924501645eb00997b5d1b" + }, + { + "name": "lzo", + "epoch": 0, + "version": "2.08", + "release": "14.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/lzo-2.08-14.el8.ppc64le.rpm", + "checksum": "sha256:793641f96b3d5b0e67a2ffccea6f8d928ef3d4877636b6c3852341b230242cc1" + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.7.6.1", + "release": "17.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/man-db-2.7.6.1-17.el8.ppc64le.rpm", + "checksum": "sha256:7417d32587ec264dc30eaaa94d8fd561b648e59d4d172a06abd2cd43833c85b9" + }, + { + "name": "mozjs60", + "epoch": 0, + "version": "60.9.0", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/mozjs60-60.9.0-4.el8.ppc64le.rpm", + "checksum": "sha256:07eb3b2b952ecfe7fb8ee2e57b18435be13487a8b05b7a8094fda101ec75fec6" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/mpfr-3.1.6-1.el8.ppc64le.rpm", + "checksum": "sha256:d3c4038a7a3be6987f74236394642be84092a9dd731317dfe5974af757c3ccfc" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ncurses-6.1-7.20180224.el8.ppc64le.rpm", + "checksum": "sha256:7d7280d0de03be269a1b078534d286496085416efef921996590bcce7db64736" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ncurses-libs-6.1-7.20180224.el8.ppc64le.rpm", + "checksum": "sha256:bcd9e55362d6afab44a89acd877c8c0a8ae27572028bfc9282f3bfec0d21e27c" + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.52.20160912git.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/net-tools-2.0-0.52.20160912git.el8.ppc64le.rpm", + "checksum": "sha256:d381673d6d7fe39f88f7966b5dbbe733695f1dc6243aad15aba04548f0d99d9b" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/nettle-3.4.1-2.el8.ppc64le.rpm", + "checksum": "sha256:68c10fbde60ad63306c334df256056bc93eb04d56eaba5ddc40254e81e815056" + }, + { + "name": "newt", + "epoch": 0, + "version": "0.52.20", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/newt-0.52.20-11.el8.ppc64le.rpm", + "checksum": "sha256:c1da8e31a629d048b524c5ccbaf1158586822fff72e3b1d772387eaeb54adaf2" + }, + { + "name": "nfs-utils", + "epoch": 1, + "version": "2.3.3", + "release": "35.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/nfs-utils-2.3.3-35.el8.ppc64le.rpm", + "checksum": "sha256:f349e95ba63ed4f9747cd2bbd177a3f6534bc797539e6e5f0d77da662c560844" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/npth-1.5-4.el8.ppc64le.rpm", + "checksum": "sha256:4538fb52ec654977ccaf56d0fc26b491f4cdda58e8070f5922165ac77104857c" + }, + { + "name": "numactl-libs", + "epoch": 0, + "version": "2.0.12", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/numactl-libs-2.0.12-11.el8.ppc64le.rpm", + "checksum": "sha256:20bf63f43afe093c6293839ca1fec23eae2973666a36d4fcdb58e09ead28567f" + }, + { + "name": "opal-prd", + "epoch": 0, + "version": "6.6", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/opal-prd-6.6-1.el8.ppc64le.rpm", + "checksum": "sha256:2c27f780afa55ca934fca745848553facd9efdf8132275a13bd25bf24975f3b1" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openldap-2.4.46-15.el8.ppc64le.rpm", + "checksum": "sha256:1130c50d23d464653fbca78aa597b1c65d22c9163c70cf3011a9a116af76bbca" + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssh-8.0p1-5.el8.ppc64le.rpm", + "checksum": "sha256:739a6551c66057a68275d53d3ddeb35f1329cd4be1deea3d4103576cf7667cc8" + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssh-clients-8.0p1-5.el8.ppc64le.rpm", + "checksum": "sha256:8373993533b0671cf77930fe3e685a648f1393acc2231a12ce84d8f8ef0216fe" + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssh-server-8.0p1-5.el8.ppc64le.rpm", + "checksum": "sha256:e18d17088ddaf866d7b440041554461a3188d067fa417baf6f5b070c2f9cee30" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssl-1.1.1g-9.el8.ppc64le.rpm", + "checksum": "sha256:b1184fa6ab84322f715418f76a8e260c6a6bb352307cce9732d72ed3f0ebdec0" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssl-libs-1.1.1g-9.el8.ppc64le.rpm", + "checksum": "sha256:feee80d14e2857f2a229cfed7aea85b74b6f2350532816e824c09f356dc38126" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssl-pkcs11-0.4.10-2.el8.ppc64le.rpm", + "checksum": "sha256:0ecb10a5141fd74ad9165fef9dd7d9485a34ea1b10605a9d4b61eefe60b767d9" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/os-prober-1.74-6.el8.ppc64le.rpm", + "checksum": "sha256:0970bde39d7cc1dfebda51e4359f63821fe8dd573d46253fc471f8466c79ac82" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/p11-kit-0.23.14-5.el8_0.ppc64le.rpm", + "checksum": "sha256:dfd1a319a66586bb1027b9a7a674f17b18070e3b389eb8dcd34ffad3ff485725" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/p11-kit-trust-0.23.14-5.el8_0.ppc64le.rpm", + "checksum": "sha256:7f3337d8024c8eb5d67ed830c2ed1c5b046887d4806ea22cf6e8f3f77b8d7e6f" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pam-1.3.1-11.el8.ppc64le.rpm", + "checksum": "sha256:fabddaa901a0de98c661612755fbe4ebe4ac1ec372a5e0ec6b7874ef6901340f" + }, + { + "name": "parted", + "epoch": 0, + "version": "3.2", + "release": "38.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/parted-3.2-38.el8.ppc64le.rpm", + "checksum": "sha256:3cf77fdd2b44a842f2dcd2a4cc3bc2bba2e83ea78da1a86f9a45a3890a69cccb" + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/passwd-0.80-3.el8.ppc64le.rpm", + "checksum": "sha256:a3850bfcfaff4d53303ab9d8403940b09c26037f501206d0081ccc7b0ca5049d" + }, + { + "name": "pciutils", + "epoch": 0, + "version": "3.6.4", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pciutils-3.6.4-2.el8.ppc64le.rpm", + "checksum": "sha256:7d60802fc8b2f721be351e30f23e11678fa85fb0fcfdfa04a903a8452725bb6f" + }, + { + "name": "pciutils-libs", + "epoch": 0, + "version": "3.6.4", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pciutils-libs-3.6.4-2.el8.ppc64le.rpm", + "checksum": "sha256:30d4c6c8be50db61b674a16eda95ce19396d68954907b2ad7643922cfacf4326" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pcre-8.42-4.el8.ppc64le.rpm", + "checksum": "sha256:e773a81f7cba7beffb23d9ebb6ce545ba4b1556091544f73ff57d263cc552176" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pcre2-10.32-2.el8.ppc64le.rpm", + "checksum": "sha256:d79c92d015fa952edf2a4ad75f95042139fbf8b4323f24e939e1ed06481253d9" + }, + { + "name": "perl-Carp", + "epoch": 0, + "version": "1.42", + "release": "396.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Carp-1.42-396.el8.noarch.rpm", + "checksum": "sha256:77066ee655df356370b5d6d736d96835f5712f8e814dfc46b391ecaef9cdd19b" + }, + { + "name": "perl-Data-Dumper", + "epoch": 0, + "version": "2.167", + "release": "399.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Data-Dumper-2.167-399.el8.ppc64le.rpm", + "checksum": "sha256:481d6065068ab8fd3bef7fa0539e73ca8ede56ecb652dc3974eb7d2244670aee" + }, + { + "name": "perl-Encode", + "epoch": 4, + "version": "2.97", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Encode-2.97-3.el8.ppc64le.rpm", + "checksum": "sha256:3ee2ccbfee32f806afec5a5e873423d49c5ba88a3c425b98663ac95be4c62a10" + }, + { + "name": "perl-Errno", + "epoch": 0, + "version": "1.28", + "release": "416.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Errno-1.28-416.el8.ppc64le.rpm", + "checksum": "sha256:bb7554c3a90cd75fba7a3e3027761a7ff43c4e48a24b759c64ba4625ceec83c1" + }, + { + "name": "perl-Exporter", + "epoch": 0, + "version": "5.72", + "release": "396.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Exporter-5.72-396.el8.noarch.rpm", + "checksum": "sha256:7c385e32c12b2639232f74a5dfdfef86daf82e5418bc292c5ab2640fb5cf46dc" + }, + { + "name": "perl-File-Path", + "epoch": 0, + "version": "2.15", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-File-Path-2.15-2.el8.noarch.rpm", + "checksum": "sha256:d906b13d5dd7a5595133e2a1af83ae17a1aae0c107579db723d21ec4371f3570" + }, + { + "name": "perl-File-Temp", + "epoch": 0, + "version": "0.230.600", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-File-Temp-0.230.600-1.el8.noarch.rpm", + "checksum": "sha256:537059f8a2598f7b364693aec72f67f1a954c525b381139f736d75edbf19aa12" + }, + { + "name": "perl-Getopt-Long", + "epoch": 1, + "version": "2.50", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Getopt-Long-2.50-4.el8.noarch.rpm", + "checksum": "sha256:2976f2c007ac981a70e414960cd7426f446ebc8a0bf8feae7a6ece06c63ffefb" + }, + { + "name": "perl-HTTP-Tiny", + "epoch": 0, + "version": "0.074", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-HTTP-Tiny-0.074-1.el8.noarch.rpm", + "checksum": "sha256:2ee0a45ec4832e276ee130d8440cd29de05b7fd3ca335fe4635499a8bcbdfb73" + }, + { + "name": "perl-IO", + "epoch": 0, + "version": "1.38", + "release": "416.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-IO-1.38-416.el8.ppc64le.rpm", + "checksum": "sha256:e3e3eaa6437eb9a91707097ac1a236759e6d57e439ea48572eec68267ac15e2a" + }, + { + "name": "perl-MIME-Base64", + "epoch": 0, + "version": "3.15", + "release": "396.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-MIME-Base64-3.15-396.el8.ppc64le.rpm", + "checksum": "sha256:44e0e3afc547cbbff4a3ae8a8788712bf2917ff5050dc6fcf969cf78b71d385e" + }, + { + "name": "perl-PathTools", + "epoch": 0, + "version": "3.74", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-PathTools-3.74-1.el8.ppc64le.rpm", + "checksum": "sha256:759d2a6cb209926af2799c1f25851e28a34f6af7e55f93a68045776bb2519379" + }, + { + "name": "perl-Pod-Escapes", + "epoch": 1, + "version": "1.07", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Pod-Escapes-1.07-395.el8.noarch.rpm", + "checksum": "sha256:21b1497d132a52c93129700d58c44ba8c36af8da1bbd23fb408c00c3117c1012" + }, + { + "name": "perl-Pod-Perldoc", + "epoch": 0, + "version": "3.28", + "release": "396.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Pod-Perldoc-3.28-396.el8.noarch.rpm", + "checksum": "sha256:a660c78f704d3d22458c71d86605f51d62e3cc5306d22d66bb1df86c7274ad6c" + }, + { + "name": "perl-Pod-Simple", + "epoch": 1, + "version": "3.35", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Pod-Simple-3.35-395.el8.noarch.rpm", + "checksum": "sha256:e17077c8803f792c02570b2768510b8e4955bd0ae68ab4930e7060fcbb3793f6" + }, + { + "name": "perl-Pod-Usage", + "epoch": 4, + "version": "1.69", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Pod-Usage-1.69-395.el8.noarch.rpm", + "checksum": "sha256:f727e7919c662ae990d02ad2a6299ed3161ad7522587c11441477aae03549f06" + }, + { + "name": "perl-Scalar-List-Utils", + "epoch": 3, + "version": "1.49", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Scalar-List-Utils-1.49-2.el8.ppc64le.rpm", + "checksum": "sha256:abf49a75e3221dce4a379c9300b15611dc4a45acc109862e88146441776d0343" + }, + { + "name": "perl-Socket", + "epoch": 4, + "version": "2.027", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Socket-2.027-3.el8.ppc64le.rpm", + "checksum": "sha256:941fb8859ba0911c8d42d7fadb9a70e89155013f3fa697bb61ba5a18661a1d45" + }, + { + "name": "perl-Storable", + "epoch": 1, + "version": "3.11", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Storable-3.11-3.el8.ppc64le.rpm", + "checksum": "sha256:8d54cc441cf480bc016c027df4acfd938373a19d91a7fd00749e4d2de3c36bfd" + }, + { + "name": "perl-Term-ANSIColor", + "epoch": 0, + "version": "4.06", + "release": "396.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Term-ANSIColor-4.06-396.el8.noarch.rpm", + "checksum": "sha256:657efda777af4b0d63ab127a72f3373c0d8a18f3b81e912b24a5fbdc9927dc1e" + }, + { + "name": "perl-Term-Cap", + "epoch": 0, + "version": "1.17", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Term-Cap-1.17-395.el8.noarch.rpm", + "checksum": "sha256:41c0f3ea7c7c2f21b5ccb0432db2c1b916ae34691a57f0b7bcb5a09dc7d8fafc" + }, + { + "name": "perl-Text-ParseWords", + "epoch": 0, + "version": "3.30", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Text-ParseWords-3.30-395.el8.noarch.rpm", + "checksum": "sha256:25ff1ab94430493bde65da6a800bb2638edc64dca38971eba2c798475cc18b97" + }, + { + "name": "perl-Text-Tabs+Wrap", + "epoch": 0, + "version": "2013.0523", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Text-Tabs+Wrap-2013.0523-395.el8.noarch.rpm", + "checksum": "sha256:7e078a375d2636b705e1734be79a8b76a306f8578066c901713663e367925bc7" + }, + { + "name": "perl-Time-Local", + "epoch": 1, + "version": "1.280", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Time-Local-1.280-1.el8.noarch.rpm", + "checksum": "sha256:4019e427bf69ed70e3a3cdfdcdd6771bcee1484f8e83bb69539a9e6530baddf1" + }, + { + "name": "perl-Unicode-Normalize", + "epoch": 0, + "version": "1.25", + "release": "396.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-Unicode-Normalize-1.25-396.el8.ppc64le.rpm", + "checksum": "sha256:ec12527a8c08222f2d4552bd2a5c1729764c180950fe5fec9ca4dcb97e4099c6" + }, + { + "name": "perl-constant", + "epoch": 0, + "version": "1.33", + "release": "396.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-constant-1.33-396.el8.noarch.rpm", + "checksum": "sha256:36798d9e979c9976ed66e23b3c8bda6250c4e80e411afe55c3942291cb4cb4ce" + }, + { + "name": "perl-interpreter", + "epoch": 4, + "version": "5.26.3", + "release": "416.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-interpreter-5.26.3-416.el8.ppc64le.rpm", + "checksum": "sha256:fac9542eacd842779725fe679851cdb7cff06da65beb71fda320610ab1e6ba67" + }, + { + "name": "perl-libs", + "epoch": 4, + "version": "5.26.3", + "release": "416.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-libs-5.26.3-416.el8.ppc64le.rpm", + "checksum": "sha256:005d3eb002670604516c7fa58c137c35c80bf6100a2109881ccb8e44cce28777" + }, + { + "name": "perl-macros", + "epoch": 4, + "version": "5.26.3", + "release": "416.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-macros-5.26.3-416.el8.ppc64le.rpm", + "checksum": "sha256:f5dd157f0b1ac9d0d898a019b0995002716aba85d028d28a1bd3b6de5e8f5107" + }, + { + "name": "perl-parent", + "epoch": 1, + "version": "0.237", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-parent-0.237-1.el8.noarch.rpm", + "checksum": "sha256:abe578c5dee7c306812e241c77ebc8ba4b54f90df8e65c56f8f202ba6e0d7183" + }, + { + "name": "perl-podlators", + "epoch": 0, + "version": "4.11", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-podlators-4.11-1.el8.noarch.rpm", + "checksum": "sha256:4811ab95c1d50ef7380e2c5937ae4490f8e28f56cf787c189437d1709e4423fb" + }, + { + "name": "perl-threads", + "epoch": 1, + "version": "2.21", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-threads-2.21-2.el8.ppc64le.rpm", + "checksum": "sha256:ac56f03020c08a0e56aa90d369d68ed6c558786b828c575b266c3e7967eae61d" + }, + { + "name": "perl-threads-shared", + "epoch": 0, + "version": "1.58", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/perl-threads-shared-1.58-2.el8.ppc64le.rpm", + "checksum": "sha256:e1f1f3beb08cd5f29b2daa92593822fdd2c5af843b0532b0e8925180e3e931a2" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pigz-2.4-4.el8.ppc64le.rpm", + "checksum": "sha256:d8b5b571fb84c7ccfa24f8a20460471d41fc4487d6d0c34f91fbeaba4c857eb2" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/platform-python-3.6.8-30.el8.ppc64le.rpm", + "checksum": "sha256:704622626b2938eee1c096c1ecf1e5fc88be4e4eac80a911d0c2ee893f9657b1" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/policycoreutils-2.9-9.el8.ppc64le.rpm", + "checksum": "sha256:efb004153a5a6a96330b8a5371b02ce4dc22a8cf6d28f5b928cc443cf3416285" + }, + { + "name": "policycoreutils-python-utils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/policycoreutils-python-utils-2.9-9.el8.noarch.rpm", + "checksum": "sha256:b4fb3d8b0255a5ba9456b61e4f479f2f8355d171263508bbe869af677015fd97" + }, + { + "name": "polkit", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/polkit-0.115-11.el8.ppc64le.rpm", + "checksum": "sha256:73566657bf7df1e8709db1985fd04cc4535138557e30e37f3c4ec24ece806824" + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/polkit-libs-0.115-11.el8.ppc64le.rpm", + "checksum": "sha256:23ec415c270bb2b87d6b09d755771c8fd779d0b85892888b12d38a00963e6785" + }, + { + "name": "polkit-pkla-compat", + "epoch": 0, + "version": "0.1", + "release": "12.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/polkit-pkla-compat-0.1-12.el8.ppc64le.rpm", + "checksum": "sha256:64465f01f00fbce1cc67e603af5dd542f8c4c4c17704ff419cafd8285ea97205" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/popt-1.16-14.el8.ppc64le.rpm", + "checksum": "sha256:bbfd0c8d360ae86528c2d06b6b64ceb2d6a974dea101ba5e1268740b689142b9" + }, + { + "name": "powerpc-utils", + "epoch": 0, + "version": "1.3.6", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/powerpc-utils-1.3.6-11.el8.ppc64le.rpm", + "checksum": "sha256:63edd5d05106443ccfad8b8efe80c5546e6a23f8336e7269c899b01eab928d5c" + }, + { + "name": "powerpc-utils-core", + "epoch": 0, + "version": "1.3.6", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/powerpc-utils-core-1.3.6-11.el8.ppc64le.rpm", + "checksum": "sha256:3e1b1298205d8e211bc897b761664975851aa1cc480261be14abe1fa51e16aaf" + }, + { + "name": "ppc64-diag", + "epoch": 0, + "version": "2.7.6", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ppc64-diag-2.7.6-2.el8.ppc64le.rpm", + "checksum": "sha256:1aad74f1f0c753f35f92492cf969ec7f951c227f88d9192b7dfcc83ef73b35d5" + }, + { + "name": "ppc64-diag-rtas", + "epoch": 0, + "version": "2.7.6", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ppc64-diag-rtas-2.7.6-2.el8.ppc64le.rpm", + "checksum": "sha256:cfffe21010ac66d51d483885a02b359c833d5e1f0de9d8d24af55e035d35119e" + }, + { + "name": "prefixdevname", + "epoch": 0, + "version": "0.1.0", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/prefixdevname-0.1.0-6.el8.ppc64le.rpm", + "checksum": "sha256:f81b7190a3c12a3932ae5de934c19033079d1d0766b6b3b72aaf4edec0b8755a" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/procps-ng-3.3.15-2.el8.ppc64le.rpm", + "checksum": "sha256:ccd0b65f90f2db606a9b38f00c71f5bcd7611fafde92e185a57d3e2a3f027787" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-asn1crypto", + "epoch": 0, + "version": "0.24.0", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-asn1crypto-0.24.0-3.el8.noarch.rpm", + "checksum": "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34" + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-audit-3.0-0.17.20191104git1c2f876.el8.ppc64le.rpm", + "checksum": "sha256:2402279a7bdd1e6d200e5dd4e4cb87a90a8c3c4dc371c679537ca8d32ede360e" + }, + { + "name": "python3-cffi", + "epoch": 0, + "version": "1.11.5", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-cffi-1.11.5-5.el8.ppc64le.rpm", + "checksum": "sha256:d0c32bda35b74d519124495cb2b2d38721c4d4ae5ea066e5727a249b22b94334" + }, + { + "name": "python3-chardet", + "epoch": 0, + "version": "3.0.4", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-chardet-3.0.4-7.el8.noarch.rpm", + "checksum": "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786" + }, + { + "name": "python3-configobj", + "epoch": 0, + "version": "5.0.6", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-configobj-5.0.6-11.el8.noarch.rpm", + "checksum": "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367" + }, + { + "name": "python3-cryptography", + "epoch": 0, + "version": "2.3", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-cryptography-2.3-3.el8.ppc64le.rpm", + "checksum": "sha256:4b8701e18c79cd39f5501dc5c15081637f3dc86da94b2bd78cbfa022c90c0b96" + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.6.1", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm", + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.4", + "release": "15.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-dbus-1.2.4-15.el8.ppc64le.rpm", + "checksum": "sha256:daa918b5b5ecdc2ba8337afb799a795e2c9d84d5ed947aefe2ce3a4dfb2494d2" + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.2.1", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm", + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-dnf-plugins-core-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87" + }, + { + "name": "python3-ethtool", + "epoch": 0, + "version": "0.14", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-ethtool-0.14-3.el8.ppc64le.rpm", + "checksum": "sha256:595921e0fba0fc75e4017cae448f912328149994c78e48657341258128a1636b" + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.28.3", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-gobject-base-3.28.3-2.el8.ppc64le.rpm", + "checksum": "sha256:eea72f348c2af9b2281466c14a8aef76bb6d3db3ee853817b6dab6f4f828b5a9" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-gpg-1.13.1-3.el8.ppc64le.rpm", + "checksum": "sha256:6501a0edf570ea01137395ff13cdbc3914dee9e536ab92ff9698a5ddd76dfb16" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-hawkey-0.48.0-2.el8.ppc64le.rpm", + "checksum": "sha256:f7cbcbe2816044bb92ca5066d88ac8c3b578a68eff16b2745d93c90483a5153f" + }, + { + "name": "python3-idna", + "epoch": 0, + "version": "2.5", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-idna-2.5-5.el8.noarch.rpm", + "checksum": "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20" + }, + { + "name": "python3-iniparse", + "epoch": 0, + "version": "0.4", + "release": "31.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm", + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "name": "python3-inotify", + "epoch": 0, + "version": "0.9.6", + "release": "13.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm", + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "name": "python3-jwt", + "epoch": 0, + "version": "1.6.1", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-jwt-1.6.1-2.el8.noarch.rpm", + "checksum": "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-libcomps-0.1.11-4.el8.ppc64le.rpm", + "checksum": "sha256:0396d12973b68a7d16074aa51f75e706c0b7558cd24d32e5573c49a487b2497c" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-libdnf-0.48.0-2.el8.ppc64le.rpm", + "checksum": "sha256:ec450facea1c2a5dc1a6b5bacc2330dd5174780d92db66379f4918c2ab40da83" + }, + { + "name": "python3-librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-librepo-1.12.0-1.el8.ppc64le.rpm", + "checksum": "sha256:2c07c0dbf321a121be4cfa929f1e7bb91b26febb1b59de9dd98bf18c5f376111" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-libs-3.6.8-30.el8.ppc64le.rpm", + "checksum": "sha256:495c3fc6f15c5daef8686fd01d1f7008bbc72ca9c963da1ae3cf60ffc519f48d" + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-libselinux-2.9-3.el8.ppc64le.rpm", + "checksum": "sha256:45ba923afec390fcdb3587c7114d3d4b2f509e2df9d6f237b6869a44a4137ade" + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-libsemanage-2.9-3.el8.ppc64le.rpm", + "checksum": "sha256:8048c87208855ae3dc3f2b14c9364337f0ad17277a89f1f6fc2edf9cd3e33eae" + }, + { + "name": "python3-libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-libxml2-2.9.7-8.el8.ppc64le.rpm", + "checksum": "sha256:ecd31959fe40425f51dae04269b063c5a77bd78a5445879b1c944f1aabb669bb" + }, + { + "name": "python3-linux-procfs", + "epoch": 0, + "version": "0.6.2", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-linux-procfs-0.6.2-2.el8.noarch.rpm", + "checksum": "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f" + }, + { + "name": "python3-magic", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-magic-5.33-16.el8.noarch.rpm", + "checksum": "sha256:8e2c0324789f42ebb6324847249699eb499544a3e6ad67ccd74713b3c1d6ce78" + }, + { + "name": "python3-oauthlib", + "epoch": 0, + "version": "2.1.0", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-oauthlib-2.1.0-1.el8.noarch.rpm", + "checksum": "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6" + }, + { + "name": "python3-perf", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-perf-4.18.0-221.el8.ppc64le.rpm", + "checksum": "sha256:0cf5f171b1eb6ebe859a767792abf8a22fe2f8d1f701960ebf75f045089fde8e" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-ply", + "epoch": 0, + "version": "3.9", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-ply-3.9-8.el8.noarch.rpm", + "checksum": "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9" + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-policycoreutils-2.9-9.el8.noarch.rpm", + "checksum": "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42" + }, + { + "name": "python3-pycparser", + "epoch": 0, + "version": "2.14", + "release": "14.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-pycparser-2.14-14.el8.noarch.rpm", + "checksum": "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf" + }, + { + "name": "python3-pysocks", + "epoch": 0, + "version": "1.6.8", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-pysocks-1.6.8-3.el8.noarch.rpm", + "checksum": "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280" + }, + { + "name": "python3-pyudev", + "epoch": 0, + "version": "0.21.0", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-pyudev-0.21.0-7.el8.noarch.rpm", + "checksum": "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde" + }, + { + "name": "python3-pyyaml", + "epoch": 0, + "version": "3.12", + "release": "12.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-pyyaml-3.12-12.el8.ppc64le.rpm", + "checksum": "sha256:5911745604ab6ecd74e5eac31ad5dd449bc8f7e286ebb21e6865c6bc5400af7f" + }, + { + "name": "python3-requests", + "epoch": 0, + "version": "2.20.0", + "release": "2.1.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-requests-2.20.0-2.1.el8_1.noarch.rpm", + "checksum": "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-rpm-4.14.3-4.el8.ppc64le.rpm", + "checksum": "sha256:8ac41d38c793722177492319ae57588ae2619962c8442e64aecc4b6708295707" + }, + { + "name": "python3-schedutils", + "epoch": 0, + "version": "0.6", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-schedutils-0.6-6.el8.ppc64le.rpm", + "checksum": "sha256:c58b75f57dcdcd781917090e670e36137aa0ee3bd918f2f99460bbd2de487057" + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.3.0", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-setools-4.3.0-1.el8.ppc64le.rpm", + "checksum": "sha256:14ac9ec62c0ac314d555b27aa1d8283dab7dbc5c9271c692f8008e45125f7efc" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.11.0", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm", + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "name": "python3-slip", + "epoch": 0, + "version": "0.6.4", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-slip-0.6.4-11.el8.noarch.rpm", + "checksum": "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb" + }, + { + "name": "python3-slip-dbus", + "epoch": 0, + "version": "0.6.4", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-slip-dbus-0.6.4-11.el8.noarch.rpm", + "checksum": "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d" + }, + { + "name": "python3-subscription-manager-rhsm", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-subscription-manager-rhsm-1.27.9-1.el8.ppc64le.rpm", + "checksum": "sha256:3a29d69c08ff6d48294cd99e4c825d3deb6cd1c87558b9dad020e3f200d683c2" + }, + { + "name": "python3-syspurpose", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-syspurpose-1.27.9-1.el8.ppc64le.rpm", + "checksum": "sha256:0bc3401315ece79b243e066b97b462164ddb56f6728b8f562126d0b28f4a2777" + }, + { + "name": "python3-urllib3", + "epoch": 0, + "version": "1.24.2", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-urllib3-1.24.2-4.el8.noarch.rpm", + "checksum": "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53" + }, + { + "name": "quota", + "epoch": 1, + "version": "4.04", + "release": "10.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/quota-4.04-10.el8.ppc64le.rpm", + "checksum": "sha256:a58bbe21c85a4ae7124d72635da3fe73e43757c82bf4f15233579f28e29ae9e2" + }, + { + "name": "quota-nls", + "epoch": 1, + "version": "4.04", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/quota-nls-4.04-10.el8.noarch.rpm", + "checksum": "sha256:adab024896eecd08250eb7a7a5e1686df0b945fd1604543877e230163c510f24" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/readline-7.0-10.el8.ppc64le.rpm", + "checksum": "sha256:d8ba6a91610d87dfb599018c887514af663a0f963ed6b25a83bac8fba56fa266" + }, + { + "name": "redhat-logos", + "epoch": 0, + "version": "81.1", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/redhat-logos-81.1-1.el8.ppc64le.rpm", + "checksum": "sha256:d48165ea7223207004c35f5f227db97e0bfb829c2e51f76f496eac557eccf03a" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/redhat-release-8.3-0.2.el8.ppc64le.rpm", + "checksum": "sha256:16294bc45d609de6ce07b660fadc851022e43d00a13f3c98c1f45064abf591d7" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/redhat-release-eula-8.3-0.2.el8.ppc64le.rpm", + "checksum": "sha256:b2d090246903da9162c06912dcfed747df9e7ba1b9f029a98c96c4155f68ce67" + }, + { + "name": "rhsm-icons", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rhsm-icons-1.27.9-1.el8.noarch.rpm", + "checksum": "sha256:fb97246f1e22b2db98fc309470c4d87755ecc59e5b98047c52c4fedbb08d9b6f" + }, + { + "name": "rng-tools", + "epoch": 0, + "version": "6.8", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rng-tools-6.8-3.el8.ppc64le.rpm", + "checksum": "sha256:1e9348cb9aea6b2dfd9dd9aad5e86eb3f01ef399465c9b262689b430f4f5595a" + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "22.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rootfiles-8.1-22.el8.noarch.rpm", + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "name": "rpcbind", + "epoch": 0, + "version": "1.2.5", + "release": "7.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpcbind-1.2.5-7.el8.ppc64le.rpm", + "checksum": "sha256:e0da1061a61a16d6582be907ede03247165d0da480f9cac85ba502b158763770" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-4.14.3-4.el8.ppc64le.rpm", + "checksum": "sha256:ba5b6364787be1ce76c7d5d3f7861f75157db6c5354f4b6e7b26ba8962fb226d" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-build-libs-4.14.3-4.el8.ppc64le.rpm", + "checksum": "sha256:3ab5aad8b10e5343c08af8c24775334b6111cd50fb9629f21335626057c7dab9" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-libs-4.14.3-4.el8.ppc64le.rpm", + "checksum": "sha256:acdee02b0e12502f5010ebfeb9d3cec41172e83db45a5e941085a8edba1bd408" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.ppc64le.rpm", + "checksum": "sha256:5919c5de67dbc1f44a553cbb4037572c258bb394ff27ca838b2198d05a0c2dad" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.ppc64le.rpm", + "checksum": "sha256:54b3552112a26b7ad79db1251bc0e8e0415ac60da299d54700c5bc59760e5be9" + }, + { + "name": "rsync", + "epoch": 0, + "version": "3.1.3", + "release": "8.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rsync-3.1.3-8.el8.ppc64le.rpm", + "checksum": "sha256:f94e7324ef21711961c6e223210fcc27df0d84a9506487c633f225f00fe4432f" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sed-4.5-2.el8.ppc64le.rpm", + "checksum": "sha256:183ae7a707951036dd77805d75aae1dbb055ca52d8fecdc6ef21d5e1518fca4d" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "servicelog", + "epoch": 0, + "version": "1.1.15", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/servicelog-1.1.15-1.el8.ppc64le.rpm", + "checksum": "sha256:56c622aef9afcb91805b40a6afcf90015ff6bce38e1f529a3b9433e5858084e6" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "sg3_utils", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sg3_utils-1.44-5.el8.ppc64le.rpm", + "checksum": "sha256:627e59a303477393242aa301d711c6e98908041a481349ac1eec861c0a8d71da" + }, + { + "name": "sg3_utils-libs", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sg3_utils-libs-1.44-5.el8.ppc64le.rpm", + "checksum": "sha256:004d04ca75a6c2b0b33602e3253ec6d1d8cbad9bac8da8e8fc525b1ca2684d08" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/shadow-utils-4.6-10.el8.ppc64le.rpm", + "checksum": "sha256:94700eed0bd231ee73fac06e38ce66573466039c0454774bf268ea50a03fe056" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/shared-mime-info-1.9-3.el8.ppc64le.rpm", + "checksum": "sha256:d2206467c216ee77262401385a61b540eeaabca9a44b9ab864c993962ba76758" + }, + { + "name": "slang", + "epoch": 0, + "version": "2.3.2", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/slang-2.3.2-3.el8.ppc64le.rpm", + "checksum": "sha256:a99969c9b217ceef0f2208c4fe7a57c71374e39ec2f9cebafd1f6b29a4cd28a2" + }, + { + "name": "snappy", + "epoch": 0, + "version": "1.1.7", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/snappy-1.1.7-5.el8.ppc64le.rpm", + "checksum": "sha256:03b2a3f3d38bcbf07b58b7507739590d8eb3867a9b94db92dacb80890f36d440" + }, + { + "name": "sos", + "epoch": 0, + "version": "3.9.1", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sos-3.9.1-4.el8.noarch.rpm", + "checksum": "sha256:934205ae1baa04b3921065f73096378f1db65990392340ad32042f86c9b5b247" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sqlite-libs-3.26.0-10.el8.ppc64le.rpm", + "checksum": "sha256:dcf427833f63e4672ecf04100181b671235ae2b50d450a25976ea176ead363fb" + }, + { + "name": "squashfs-tools", + "epoch": 0, + "version": "4.3", + "release": "19.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/squashfs-tools-4.3-19.el8.ppc64le.rpm", + "checksum": "sha256:5e3963bc4b999aa0ebf6fdc2b93424a8a822a9dfd5d1d978e359491c93406df6" + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sssd-client-2.3.0-2.el8.ppc64le.rpm", + "checksum": "sha256:ebf4129602495e20eb3ab2da938dd89646955e44dfa72a5e5a8f6fbe3c40d7e6" + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sssd-common-2.3.0-2.el8.ppc64le.rpm", + "checksum": "sha256:3d541124624e02a289cb2dfcfc20bd02e87b69a85bdbcd1fb3a382c8bf2624c7" + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sssd-kcm-2.3.0-2.el8.ppc64le.rpm", + "checksum": "sha256:c6c053bc48ff5c75386422a4712277b85d1bea54b4dc0894a4e2c8a9f034d64a" + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sssd-nfs-idmap-2.3.0-2.el8.ppc64le.rpm", + "checksum": "sha256:2cb969d603bd632da8bd2af6cf49f101e26030a5efca3b610a7e81a48ae75222" + }, + { + "name": "subscription-manager", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/subscription-manager-1.27.9-1.el8.ppc64le.rpm", + "checksum": "sha256:ca642031ece8f6f46a55543cfebf58c0a50fe961fd8a796d4ebf9fa684922797" + }, + { + "name": "subscription-manager-cockpit", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/subscription-manager-cockpit-1.27.9-1.el8.noarch.rpm", + "checksum": "sha256:e6194926699147659c3a35d9330b5e9706b203aa806c4023c258559f9a0f8ae7" + }, + { + "name": "subscription-manager-rhsm-certificates", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/subscription-manager-rhsm-certificates-1.27.9-1.el8.ppc64le.rpm", + "checksum": "sha256:21d0f9e7ad964facd218351d15850c75335382fdfc429e96d58f1461d1942f22" + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.8.29", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sudo-1.8.29-6.el8.ppc64le.rpm", + "checksum": "sha256:509b96a92ba84cdd0664dfdb798980162fc4e82bbbc4435e7e3b39b60e8b5c13" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/systemd-239-36.el8.ppc64le.rpm", + "checksum": "sha256:97e8ec14c0569aee6633342fd3b05507b8c30c9d62b52aff0c3e693640d78938" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/systemd-libs-239-36.el8.ppc64le.rpm", + "checksum": "sha256:be5a5ad0d3338da31fca41645852b03c748c41e77bd715619033f71496f3c875" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/systemd-pam-239-36.el8.ppc64le.rpm", + "checksum": "sha256:b9a80c6b1e8bff298ad6215248ce9d193d734dc038f1de211c01a2e118b9606f" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/systemd-udev-239-36.el8.ppc64le.rpm", + "checksum": "sha256:f10990a6f2e8affe55991a46ca80eda2af8c0c8a4aada3b623ba740abfb059cf" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/tar-1.30-5.el8.ppc64le.rpm", + "checksum": "sha256:2081809fd42c6cefcf677362a825c38b166f04df8edf865d5d6404348179e536" + }, + { + "name": "teamd", + "epoch": 0, + "version": "1.29", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/teamd-1.29-5.el8.ppc64le.rpm", + "checksum": "sha256:011335bf845f38d1ba40988305f28913873cc6f0d94ed71bd37b69fb221dcfff" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/trousers-0.3.14-4.el8.ppc64le.rpm", + "checksum": "sha256:d55a783930503e7f1590bc2ad10d9fa184ed3cb44e2ca85ae2bbe11fcbf166b8" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/trousers-lib-0.3.14-4.el8.ppc64le.rpm", + "checksum": "sha256:3f5c97c72cbbe552e9f7183d1f8eb477a3f46647bb513a175a8c158d3eba3dee" + }, + { + "name": "tuned", + "epoch": 0, + "version": "2.14.0", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/tuned-2.14.0-2.el8.noarch.rpm", + "checksum": "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "usermode", + "epoch": 0, + "version": "1.113", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/usermode-1.113-1.el8.ppc64le.rpm", + "checksum": "sha256:44d69e72ce307f5ea39148bcf98c60f2f23b305b2f71e4c886c8a0bdc649d7fa" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/util-linux-2.32.1-24.el8.ppc64le.rpm", + "checksum": "sha256:7a05e800e37b4aa74e657a829097090faf013338056c8bd6ebfeee5ae4467a22" + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.0.1763", + "release": "15.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/vim-minimal-8.0.1763-15.el8.ppc64le.rpm", + "checksum": "sha256:fdcf713f1e8b7710e8629b2ba05e336cdc454be98f1bd492bdf8de8c50595437" + }, + { + "name": "virt-what", + "epoch": 0, + "version": "1.18", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/virt-what-1.18-6.el8.ppc64le.rpm", + "checksum": "sha256:238f8f86020dbc6994f1cc5960412ae2337f3a2410bbfee39c3ddc5ab603f05b" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/which-2.21-12.el8.ppc64le.rpm", + "checksum": "sha256:241a563df5ae3b3b49d45cbf9e67b6932b8345b3fbb40029dbb3b0834cf3db16" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/xfsprogs-5.0.0-4.el8.ppc64le.rpm", + "checksum": "sha256:87209220ec94795ac0e079e98877a4f911beaee3a829bf95cda5a8b24b545a94" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/xz-5.2.4-3.el8.ppc64le.rpm", + "checksum": "sha256:2b2e0d9a397d27c7076f05ab309c71ebffdf2c33df95de51c700af181899c87e" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/xz-libs-5.2.4-3.el8.ppc64le.rpm", + "checksum": "sha256:37e4f7e854765b98e8dd10986b758631c7ca00942bc53efb4003ee326e1cc834" + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/yum-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4" + }, + { + "name": "yum-utils", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/yum-utils-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:bdb8cc675da18f659ba06252f1f2604d171373239804c3cbc6004dadded54cd3" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/zlib-1.2.11-15.el8.ppc64le.rpm", + "checksum": "sha256:df50c6f03ef2fa2d8f900a4a95d84921511b5e435533677f3067c1fd47f84b93" + }, + { + "name": "PackageKit", + "epoch": 0, + "version": "1.1.12", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/PackageKit-1.1.12-6.el8.ppc64le.rpm", + "checksum": "sha256:189718794d3954cb4643af95c1ed73adf11db3a52883c632a28dfe865b969112" + }, + { + "name": "PackageKit-glib", + "epoch": 0, + "version": "1.1.12", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/PackageKit-glib-1.1.12-6.el8.ppc64le.rpm", + "checksum": "sha256:29a06adbb34836ac0aa4e152db899c8ebc0f9ee6df34c8fc378628283571de2d" + }, + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.0.25", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/abattis-cantarell-fonts-0.0.25-4.el8.noarch.rpm", + "checksum": "sha256:1594afba86593ec614299ef6af255755a98ea55a34a72a22fdc9d80a040be39d" + }, + { + "name": "cairo", + "epoch": 0, + "version": "1.15.12", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/cairo-1.15.12-3.el8.ppc64le.rpm", + "checksum": "sha256:01bcb514e0985596e0d6a88d28dfa296e2b957a4dac219c79e87e2b6db5bedbe" + }, + { + "name": "cairo-gobject", + "epoch": 0, + "version": "1.15.12", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/cairo-gobject-1.15.12-3.el8.ppc64le.rpm", + "checksum": "sha256:e746fc392b4f034395f34e9461f046a776acc87b769abe0431db7f849de7c2bb" + }, + { + "name": "cloud-init", + "epoch": 0, + "version": "19.4", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/cloud-init-19.4-7.el8.noarch.rpm", + "checksum": "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2" + }, + { + "name": "cloud-utils-growpart", + "epoch": 0, + "version": "0.31", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/cloud-utils-growpart-0.31-1.el8.noarch.rpm", + "checksum": "sha256:664a883f3c7042eb91e0b66fc99c309a729011b4912e4af9397f4e25e1adae90" + }, + { + "name": "dnf-plugin-spacewalk", + "epoch": 0, + "version": "2.8.5", + "release": "11.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b" + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm", + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm", + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "name": "insights-client", + "epoch": 0, + "version": "3.0.14", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/insights-client-3.0.14-2.el8.noarch.rpm", + "checksum": "sha256:abeb97ed3fdd82145fd51f8eeaecfca272e4d1418b17a68241e054425a327aa3" + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.8", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/libX11-1.6.8-3.el8.ppc64le.rpm", + "checksum": "sha256:571f71164eee089ef2fabd81368b9127e0cde805ded935cf66645c3e910c88c6" + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.8", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/libX11-common-1.6.8-3.el8.noarch.rpm", + "checksum": "sha256:593d4df5b8de12ed0ec5a0935cb0bd966e27a631aa0806250ba9f67092ad737f" + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/libXau-1.0.9-3.el8.ppc64le.rpm", + "checksum": "sha256:ea7acd3d0f14136f649d7403f0c4302cc757ddda22b8d738dae9b6f74c72c4b8" + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/libXext-1.3.4-1.el8.ppc64le.rpm", + "checksum": "sha256:85ac0902c707636ebc08b90981dffdc080d37b0acdec3950cfb3029779dcb823" + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "7.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/libXrender-0.9.10-7.el8.ppc64le.rpm", + "checksum": "sha256:415f392bbba9e8e1c05138aa9a4a6164b9ca015ca991c7ef08f0374c86b3cc34" + }, + { + "name": "libestr", + "epoch": 0, + "version": "0.1.10", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/libestr-0.1.10-1.el8.ppc64le.rpm", + "checksum": "sha256:43f2f6800f07a6ad71790dfab1c424286b9c18fa6fd469ec800671f4ea242001" + }, + { + "name": "libfastjson", + "epoch": 0, + "version": "0.99.8", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/libfastjson-0.99.8-2.el8.ppc64le.rpm", + "checksum": "sha256:a3a7b6f870a420aec92c67a5489150796673f4b2297af07ef0db200987d9ee3f" + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.2.0", + "release": "10.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/libmaxminddb-1.2.0-10.el8.ppc64le.rpm", + "checksum": "sha256:4652cdbf488fe4aa85fd54289f3b4d824fe1b9cdbf30c989cd8124928331803d" + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/libxcb-1.13.1-1.el8.ppc64le.rpm", + "checksum": "sha256:2ed632face13f21a2f71f8fb3e86f90119bd74712b8c4837646c6442c8e24f53" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/libxkbcommon-0.9.1-1.el8.ppc64le.rpm", + "checksum": "sha256:e9d3adb5df960913105864554af0d17ac26287f7454c13865895cec93c57cc6c" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/memstrack-0.1.8-1.el8.ppc64le.rpm", + "checksum": "sha256:d863808793a34bae10d7bf066b68be37883eb38cf117172de5e47c9eb729cb3d" + }, + { + "name": "perl-Digest", + "epoch": 0, + "version": "1.17", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/perl-Digest-1.17-395.el8.noarch.rpm", + "checksum": "sha256:9e90e6054da06f5c8c2733c3b66987693a58ddc1f05d95b23ca0a464e26a2b22" + }, + { + "name": "perl-Digest-MD5", + "epoch": 0, + "version": "2.55", + "release": "396.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/perl-Digest-MD5-2.55-396.el8.ppc64le.rpm", + "checksum": "sha256:c7efac801bc1b89d979c6eef9eae0fc75dc322bc15060b8cdc396fe1def0564b" + }, + { + "name": "perl-IO-Socket-IP", + "epoch": 0, + "version": "0.39", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/perl-IO-Socket-IP-0.39-5.el8.noarch.rpm", + "checksum": "sha256:7519f2af362827daecf105e1dccb551350f32dfd3f6a8a85bf6eb1b4b7788255" + }, + { + "name": "perl-IO-Socket-SSL", + "epoch": 0, + "version": "2.066", + "release": "4.module+el8.3.0+6446+594cad75", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/perl-IO-Socket-SSL-2.066-4.module+el8.3.0+6446+594cad75.noarch.rpm", + "checksum": "sha256:e82ab03c8a19f40df7f1eee34786246562ba4f5d5876ce77736ecde219006cf4" + }, + { + "name": "perl-Mozilla-CA", + "epoch": 0, + "version": "20160104", + "release": "7.module+el8.3.0+6498+9eecfe51", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/perl-Mozilla-CA-20160104-7.module+el8.3.0+6498+9eecfe51.noarch.rpm", + "checksum": "sha256:d2593772ce32d37483f61d254990c31e3548ab504c793b95e8f4603a5040032b" + }, + { + "name": "perl-Net-SSLeay", + "epoch": 0, + "version": "1.88", + "release": "1.module+el8.3.0+6446+594cad75", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/perl-Net-SSLeay-1.88-1.module+el8.3.0+6446+594cad75.ppc64le.rpm", + "checksum": "sha256:c80b960ea521232657be394882ac2e2ab827e732686a75a41fca2837d985f4f2" + }, + { + "name": "perl-URI", + "epoch": 0, + "version": "1.73", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/perl-URI-1.73-3.el8.noarch.rpm", + "checksum": "sha256:dd6a948e5a656701156c618e202c0b6defd11ba6f162b6790cbb42cea15141ae" + }, + { + "name": "perl-libnet", + "epoch": 0, + "version": "3.11", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/perl-libnet-3.11-3.el8.noarch.rpm", + "checksum": "sha256:81afd309f084c91d68c06bd46a4fce2e0d1e265a01ff87e309d1202e711e4a02" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/pinentry-1.1.0-2.el8.ppc64le.rpm", + "checksum": "sha256:b64080283110b2e23a184787ccd14eca6994c321cf4be9cb16205cfda1ab5d89" + }, + { + "name": "pixman", + "epoch": 0, + "version": "0.38.4", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/pixman-0.38.4-1.el8.ppc64le.rpm", + "checksum": "sha256:e9c4d2606604003b7dd226619b1ed62a18626e22e150b06f1fec14dfd1721b8a" + }, + { + "name": "python3-babel", + "epoch": 0, + "version": "2.5.1", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-babel-2.5.1-5.el8.noarch.rpm", + "checksum": "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28" + }, + { + "name": "python3-cairo", + "epoch": 0, + "version": "1.16.3", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-cairo-1.16.3-6.el8.ppc64le.rpm", + "checksum": "sha256:d3192605b3aa6c19118f95e14f69f4394424eb09f7649e127223bbfbff676758" + }, + { + "name": "python3-dnf-plugin-spacewalk", + "epoch": 0, + "version": "2.8.5", + "release": "11.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43" + }, + { + "name": "python3-gobject", + "epoch": 0, + "version": "3.28.3", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-gobject-3.28.3-2.el8.ppc64le.rpm", + "checksum": "sha256:d3b6d1d0bc08398ecdc1ecab089318d829414811e5ccf63c2a5ffb80f8f92138" + }, + { + "name": "python3-hwdata", + "epoch": 0, + "version": "2.3.6", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-hwdata-2.3.6-3.el8.noarch.rpm", + "checksum": "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362" + }, + { + "name": "python3-jinja2", + "epoch": 0, + "version": "2.10.1", + "release": "2.el8_0", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-jinja2-2.10.1-2.el8_0.noarch.rpm", + "checksum": "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64" + }, + { + "name": "python3-jsonpatch", + "epoch": 0, + "version": "1.21", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-jsonpatch-1.21-2.el8.noarch.rpm", + "checksum": "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835" + }, + { + "name": "python3-jsonpointer", + "epoch": 0, + "version": "1.10", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-jsonpointer-1.10-11.el8.noarch.rpm", + "checksum": "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf" + }, + { + "name": "python3-jsonschema", + "epoch": 0, + "version": "2.6.0", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-jsonschema-2.6.0-4.el8.noarch.rpm", + "checksum": "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b" + }, + { + "name": "python3-markupsafe", + "epoch": 0, + "version": "0.23", + "release": "19.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-markupsafe-0.23-19.el8.ppc64le.rpm", + "checksum": "sha256:120917580d51db51cb32edabbf3929dfcc044bf7a3016007ba8db59bc915f909" + }, + { + "name": "python3-netifaces", + "epoch": 0, + "version": "0.10.6", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-netifaces-0.10.6-4.el8.ppc64le.rpm", + "checksum": "sha256:683db6cfc407c739357b34d19c3d9881d1790b0d0aa6a5b4b2a206b7d6581b32" + }, + { + "name": "python3-newt", + "epoch": 0, + "version": "0.52.20", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-newt-0.52.20-11.el8.ppc64le.rpm", + "checksum": "sha256:42c2ee5aaeb59bf19e80a9b58e4cf7c4977563789c83eaea53d4bb5cf0284fce" + }, + { + "name": "python3-prettytable", + "epoch": 0, + "version": "0.7.2", + "release": "14.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-prettytable-0.7.2-14.el8.noarch.rpm", + "checksum": "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55" + }, + { + "name": "python3-pyOpenSSL", + "epoch": 0, + "version": "18.0.0", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-pyOpenSSL-18.0.0-1.el8.noarch.rpm", + "checksum": "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21" + }, + { + "name": "python3-pydbus", + "epoch": 0, + "version": "0.6.0", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-pydbus-0.6.0-5.el8.noarch.rpm", + "checksum": "sha256:fd75c594f871a3353d326833e630ea1d28e5f446f796b836dc628f8c9c039f88" + }, + { + "name": "python3-pyserial", + "epoch": 0, + "version": "3.1.1", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-pyserial-3.1.1-8.el8.noarch.rpm", + "checksum": "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414" + }, + { + "name": "python3-pytz", + "epoch": 0, + "version": "2017.2", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-pytz-2017.2-9.el8.noarch.rpm", + "checksum": "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca" + }, + { + "name": "python3-rhn-check", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.ppc64le.rpm", + "checksum": "sha256:1ea7838dd4ae4147f0888b6e3613bd4b86fb9a1293d0e192c61aa9ff6fb9ebcb" + }, + { + "name": "python3-rhn-client-tools", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.ppc64le.rpm", + "checksum": "sha256:d311e76aaf7a5bc43df52e69ace9679036c497bf1f4a0272309b98af649021fa" + }, + { + "name": "python3-rhn-setup", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.ppc64le.rpm", + "checksum": "sha256:e84ba0cc416281ce1c296db3b2eaf10ac3f3f5e9b5e09fc792b0a91c48df5185" + }, + { + "name": "python3-rhnlib", + "epoch": 0, + "version": "2.8.6", + "release": "8.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a" + }, + { + "name": "python3-systemd", + "epoch": 0, + "version": "234", + "release": "8.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-systemd-234-8.el8.ppc64le.rpm", + "checksum": "sha256:e5cb9b897bd73c0c7d49bbec0949b364bd2971edb637dc3d88fc25bf6c57de78" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-unbound-1.7.3-14.el8.ppc64le.rpm", + "checksum": "sha256:a07b21bf156e4a15c566506eb5f5b9e9c7087a58c471c004f53d4eae1bce90e3" + }, + { + "name": "qemu-guest-agent", + "epoch": 15, + "version": "4.2.0", + "release": "29.module+el8.3.0+7212+401047e6", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/qemu-guest-agent-4.2.0-29.module+el8.3.0+7212+401047e6.ppc64le.rpm", + "checksum": "sha256:23e7003ecaf5a03793b299ab5e737ef833657e4dddce3adc5ac261eb946132fc" + }, + { + "name": "rhn-check", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.ppc64le.rpm", + "checksum": "sha256:ba96075700fb65a1bb508b93401904b769a66b593148c23e99230a50ff0e174f" + }, + { + "name": "rhn-client-tools", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.ppc64le.rpm", + "checksum": "sha256:64974a66c0deda570362735cc698951b3683d93cadc3c88f0e6557f96e1b2fbe" + }, + { + "name": "rhn-setup", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.ppc64le.rpm", + "checksum": "sha256:e1067888710b91198be46b5f35ccf948450afb97603faf822163adbef075d313" + }, + { + "name": "rhnlib", + "epoch": 0, + "version": "2.8.6", + "release": "8.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42" + }, + { + "name": "rhnsd", + "epoch": 0, + "version": "5.0.35", + "release": "3.module+el8.1.0+3455+3ddf2832", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.ppc64le.rpm", + "checksum": "sha256:db6872540b6a0671c1170eccd328ae49869b06f8f39beb93ebef92aa7306440d" + }, + { + "name": "rsyslog", + "epoch": 0, + "version": "8.1911.0", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/rsyslog-8.1911.0-6.el8.ppc64le.rpm", + "checksum": "sha256:261aca60621e3185d35b5d8b59af8cf938cbf9b26a686389b9e81544c8ff5c96" + }, + { + "name": "setroubleshoot-plugins", + "epoch": 0, + "version": "3.3.12", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/setroubleshoot-plugins-3.3.12-1.el8.noarch.rpm", + "checksum": "sha256:3459ac9ecad925e511502cff687ceb77f52f391303793f7670794a5c0b040f3d" + }, + { + "name": "setroubleshoot-server", + "epoch": 0, + "version": "3.3.23", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/setroubleshoot-server-3.3.23-1.el8.ppc64le.rpm", + "checksum": "sha256:c1508ffd007eeca1ba4e5d1c2fa1d8cd7e537b10f177742570644c703e447763" + }, + { + "name": "sscg", + "epoch": 0, + "version": "2.3.3", + "release": "14.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/sscg-2.3.3-14.el8.ppc64le.rpm", + "checksum": "sha256:a4ef09e900e5504b692f38dd95bfd20b305c1a4ff0799b39246808e7cc201d01" + }, + { + "name": "tcpdump", + "epoch": 14, + "version": "4.9.3", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/tcpdump-4.9.3-1.el8.ppc64le.rpm", + "checksum": "sha256:43c96252342f0998041b052f719a3b0f848af845664ea21bb3b72543422f95c8" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/unbound-libs-1.7.3-14.el8.ppc64le.rpm", + "checksum": "sha256:744a6f8d1acf3c49b77e0f96217a6bae3d7dba6228a16676be21b7332adf9f43" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "checksums": { + "0": "sha256:c7997a53898ae29deadd2ac318155ea27856b6446e1150265ecdb08a8d30ff02", + "1": "sha256:9fecb979241b08021ac74e0f5fa3fd3cf80cecdd1dcc3a65445b29b20af0b545" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=0bd700f8-090f-4556-b797-b340297ea1bd console=ttyS0 console=ttyS0,115200n8 no_timer_check crashkernel=auto net.ifnames=0" + }, + "bootloader": "unknown", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "id": "rhel-20200625210003-4.18.0-221.el8.ppc64le", + "initrd": "/boot/initramfs-4.18.0-221.el8.ppc64le.img $tuned_initrd", + "linux": "/boot/vmlinuz-4.18.0-221.el8.ppc64le", + "options": "$kernelopts $tuned_params", + "title": "Red Hat Enterprise Linux (4.18.0-221.el8.ppc64le) 8.3 (Ootpa)", + "version": "4.18.0-221.el8.ppc64le" + } + ], + "fstab": [ + [ + "UUID=0bd700f8-090f-4556-b797-b340297ea1bd", + "/", + "xfs", + "defaults", + "0", + "0" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:988:", + "cockpit-ws:x:990:", + "cockpit-wsinstance:x:989:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:999:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "polkitd:x:996:", + "redhat:x:1000:", + "render:x:998:", + "rngd:x:987:", + "root:x:0:", + "rpc:x:32:", + "rpcuser:x:29:", + "service:x:995:", + "setroubleshoot:x:991:", + "ssh_keys:x:994:", + "sshd:x:74:", + "sssd:x:992:", + "sys:x:3:", + "systemd-coredump:x:997:", + "systemd-journal:x:190:", + "systemd-resolve:x:193:", + "tape:x:33:", + "tcpdump:x:72:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:993:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "qcow2", + "os-release": { + "ANSI_COLOR": "0;31", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:redhat:enterprise_linux:8.3:beta", + "HOME_URL": "https://www.redhat.com/", + "ID": "rhel", + "ID_LIKE": "fedora", + "NAME": "Red Hat Enterprise Linux", + "PLATFORM_ID": "platform:el8", + "PRETTY_NAME": "Red Hat Enterprise Linux 8.3 Beta (Ootpa)", + "REDHAT_BUGZILLA_PRODUCT": "Red Hat Enterprise Linux 8", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "8.3", + "REDHAT_SUPPORT_PRODUCT": "Red Hat Enterprise Linux", + "REDHAT_SUPPORT_PRODUCT_VERSION": "8.3 Beta", + "VERSION": "8.3 (Ootpa)", + "VERSION_ID": "8.3" + }, + "packages": [ + "NetworkManager-1.26.0-0.2.el8.ppc64le", + "NetworkManager-libnm-1.26.0-0.2.el8.ppc64le", + "NetworkManager-team-1.26.0-0.2.el8.ppc64le", + "NetworkManager-tui-1.26.0-0.2.el8.ppc64le", + "PackageKit-1.1.12-6.el8.ppc64le", + "PackageKit-glib-1.1.12-6.el8.ppc64le", + "abattis-cantarell-fonts-0.0.25-4.el8.noarch", + "acl-2.2.53-1.el8.ppc64le", + "audit-3.0-0.17.20191104git1c2f876.el8.ppc64le", + "audit-libs-3.0-0.17.20191104git1c2f876.el8.ppc64le", + "authselect-1.2.1-2.el8.ppc64le", + "authselect-libs-1.2.1-2.el8.ppc64le", + "basesystem-11-5.el8.noarch", + "bash-4.4.19-12.el8.ppc64le", + "bc-1.07.1-5.el8.ppc64le", + "bind-export-libs-9.11.20-3.el8.ppc64le", + "brotli-1.0.6-2.el8.ppc64le", + "bzip2-1.0.6-26.el8.ppc64le", + "bzip2-libs-1.0.6-26.el8.ppc64le", + "c-ares-1.13.0-5.el8.ppc64le", + "ca-certificates-2019.2.32-80.0.el8_1.noarch", + "cairo-1.15.12-3.el8.ppc64le", + "cairo-gobject-1.15.12-3.el8.ppc64le", + "checkpolicy-2.9-1.el8.ppc64le", + "chkconfig-1.13-2.el8.ppc64le", + "chrony-3.5-1.el8.ppc64le", + "cloud-init-19.4-7.el8.noarch", + "cloud-utils-growpart-0.31-1.el8.noarch", + "cockpit-bridge-222.1-1.el8.ppc64le", + "cockpit-system-222.1-1.el8.noarch", + "cockpit-ws-222.1-1.el8.ppc64le", + "coreutils-8.30-8.el8.ppc64le", + "coreutils-common-8.30-8.el8.ppc64le", + "cpio-2.12-8.el8.ppc64le", + "cracklib-2.9.6-15.el8.ppc64le", + "cracklib-dicts-2.9.6-15.el8.ppc64le", + "cronie-1.5.2-4.el8.ppc64le", + "cronie-anacron-1.5.2-4.el8.ppc64le", + "crontabs-1.11-16.20150630git.el8.noarch", + "crypto-policies-20200610-1.git0ac8b1f.el8.noarch", + "crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch", + "cryptsetup-libs-2.3.3-1.el8.ppc64le", + "curl-7.61.1-12.el8.ppc64le", + "cyrus-sasl-lib-2.1.27-5.el8.ppc64le", + "dbus-1.12.8-11.el8.ppc64le", + "dbus-common-1.12.8-11.el8.noarch", + "dbus-daemon-1.12.8-11.el8.ppc64le", + "dbus-glib-0.110-2.el8.ppc64le", + "dbus-libs-1.12.8-11.el8.ppc64le", + "dbus-tools-1.12.8-11.el8.ppc64le", + "dejavu-fonts-common-2.35-6.el8.noarch", + "dejavu-sans-mono-fonts-2.35-6.el8.noarch", + "device-mapper-1.02.171-3.el8.ppc64le", + "device-mapper-libs-1.02.171-3.el8.ppc64le", + "dhcp-client-4.3.6-41.el8.ppc64le", + "dhcp-common-4.3.6-41.el8.noarch", + "dhcp-libs-4.3.6-41.el8.ppc64le", + "diffutils-3.6-6.el8.ppc64le", + "dnf-4.2.23-2.el8.noarch", + "dnf-data-4.2.23-2.el8.noarch", + "dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch", + "dnf-plugin-subscription-manager-1.27.9-1.el8.ppc64le", + "dnf-plugins-core-4.0.17-2.el8.noarch", + "dracut-049-89.git20200625.el8.ppc64le", + "dracut-config-generic-049-89.git20200625.el8.ppc64le", + "dracut-network-049-89.git20200625.el8.ppc64le", + "dracut-squash-049-89.git20200625.el8.ppc64le", + "e2fsprogs-1.45.6-1.el8.ppc64le", + "e2fsprogs-libs-1.45.6-1.el8.ppc64le", + "elfutils-debuginfod-client-0.180-1.el8.ppc64le", + "elfutils-default-yama-scope-0.180-1.el8.noarch", + "elfutils-libelf-0.180-1.el8.ppc64le", + "elfutils-libs-0.180-1.el8.ppc64le", + "ethtool-5.0-2.el8.ppc64le", + "expat-2.2.5-4.el8.ppc64le", + "file-5.33-16.el8.ppc64le", + "file-libs-5.33-16.el8.ppc64le", + "filesystem-3.8-3.el8.ppc64le", + "findutils-4.6.0-20.el8.ppc64le", + "fontconfig-2.13.1-3.el8.ppc64le", + "fontpackages-filesystem-1.44-22.el8.noarch", + "freetype-2.9.1-4.el8.ppc64le", + "fuse-libs-2.9.7-12.el8.ppc64le", + "gawk-4.2.1-1.el8.ppc64le", + "gdbm-1.18-1.el8.ppc64le", + "gdbm-libs-1.18-1.el8.ppc64le", + "gdk-pixbuf2-2.36.12-5.el8.ppc64le", + "geolite2-city-20180605-1.el8.noarch", + "geolite2-country-20180605-1.el8.noarch", + "gettext-0.19.8.1-17.el8.ppc64le", + "gettext-libs-0.19.8.1-17.el8.ppc64le", + "glib-networking-2.56.1-1.1.el8.ppc64le", + "glib2-2.56.4-8.el8.ppc64le", + "glibc-2.28-127.el8.ppc64le", + "glibc-all-langpacks-2.28-127.el8.ppc64le", + "glibc-common-2.28-127.el8.ppc64le", + "gmp-6.1.2-10.el8.ppc64le", + "gnupg2-2.2.20-2.el8.ppc64le", + "gnupg2-smime-2.2.20-2.el8.ppc64le", + "gnutls-3.6.14-3.el8.ppc64le", + "gobject-introspection-1.56.1-1.el8.ppc64le", + "gpg-pubkey-d4082792-5b32db75", + "gpg-pubkey-fd431d51-4ae0493b", + "gpgme-1.13.1-3.el8.ppc64le", + "grep-3.1-6.el8.ppc64le", + "groff-base-1.22.3-18.el8.ppc64le", + "grub2-common-2.02-84.el8.noarch", + "grub2-ppc64le-2.02-84.el8.ppc64le", + "grub2-ppc64le-modules-2.02-84.el8.noarch", + "grub2-tools-2.02-84.el8.ppc64le", + "grub2-tools-extra-2.02-84.el8.ppc64le", + "grub2-tools-minimal-2.02-84.el8.ppc64le", + "grubby-8.40-41.el8.ppc64le", + "gsettings-desktop-schemas-3.32.0-5.el8.ppc64le", + "gssproxy-0.8.0-16.el8.ppc64le", + "gzip-1.9-9.el8.ppc64le", + "hardlink-1.3-6.el8.ppc64le", + "hdparm-9.54-2.el8.ppc64le", + "hostname-3.20-6.el8.ppc64le", + "hwdata-0.314-8.5.el8.noarch", + "ima-evm-utils-1.1-5.el8.ppc64le", + "info-6.5-6.el8.ppc64le", + "initscripts-10.00.8-1.el8.ppc64le", + "insights-client-3.0.14-2.el8.noarch", + "ipcalc-0.2.4-4.el8.ppc64le", + "iproute-5.3.0-5.el8.ppc64le", + "iptables-libs-1.8.4-14.el8.ppc64le", + "iputils-20180629-2.el8.ppc64le", + "irqbalance-1.4.0-4.el8.ppc64le", + "jansson-2.11-3.el8.ppc64le", + "json-c-0.13.1-0.2.el8.ppc64le", + "json-glib-1.4.4-1.el8.ppc64le", + "kbd-2.0.4-10.el8.ppc64le", + "kbd-legacy-2.0.4-10.el8.noarch", + "kbd-misc-2.0.4-10.el8.noarch", + "kernel-4.18.0-221.el8.ppc64le", + "kernel-core-4.18.0-221.el8.ppc64le", + "kernel-modules-4.18.0-221.el8.ppc64le", + "kernel-tools-4.18.0-221.el8.ppc64le", + "kernel-tools-libs-4.18.0-221.el8.ppc64le", + "kexec-tools-2.0.20-29.el8.ppc64le", + "keyutils-1.5.10-6.el8.ppc64le", + "keyutils-libs-1.5.10-6.el8.ppc64le", + "kmod-25-16.el8.ppc64le", + "kmod-libs-25-16.el8.ppc64le", + "kpartx-0.8.4-2.el8.ppc64le", + "krb5-libs-1.18.2-3.el8.ppc64le", + "less-530-1.el8.ppc64le", + "libX11-1.6.8-3.el8.ppc64le", + "libX11-common-1.6.8-3.el8.noarch", + "libXau-1.0.9-3.el8.ppc64le", + "libXext-1.3.4-1.el8.ppc64le", + "libXrender-0.9.10-7.el8.ppc64le", + "libacl-2.2.53-1.el8.ppc64le", + "libappstream-glib-0.7.14-3.el8.ppc64le", + "libarchive-3.3.2-9.el8.ppc64le", + "libassuan-2.5.1-3.el8.ppc64le", + "libattr-2.4.48-3.el8.ppc64le", + "libbasicobjects-0.1.1-39.el8.ppc64le", + "libblkid-2.32.1-24.el8.ppc64le", + "libcap-2.26-4.el8.ppc64le", + "libcap-ng-0.7.9-5.el8.ppc64le", + "libcollection-0.7.0-39.el8.ppc64le", + "libcom_err-1.45.6-1.el8.ppc64le", + "libcomps-0.1.11-4.el8.ppc64le", + "libcroco-0.6.12-4.el8.ppc64le", + "libcurl-7.61.1-12.el8.ppc64le", + "libdaemon-0.14-15.el8.ppc64le", + "libdb-5.3.28-39.el8.ppc64le", + "libdb-utils-5.3.28-39.el8.ppc64le", + "libdhash-0.5.0-39.el8.ppc64le", + "libdnf-0.48.0-2.el8.ppc64le", + "libedit-3.1-23.20170329cvs.el8.ppc64le", + "libestr-0.1.10-1.el8.ppc64le", + "libevent-2.1.8-5.el8.ppc64le", + "libfastjson-0.99.8-2.el8.ppc64le", + "libfdisk-2.32.1-24.el8.ppc64le", + "libffi-3.1-22.el8.ppc64le", + "libgcc-8.3.1-5.1.el8.ppc64le", + "libgcrypt-1.8.5-4.el8.ppc64le", + "libgomp-8.3.1-5.1.el8.ppc64le", + "libgpg-error-1.31-1.el8.ppc64le", + "libgudev-232-4.el8.ppc64le", + "libidn2-2.2.0-1.el8.ppc64le", + "libini_config-1.3.1-39.el8.ppc64le", + "libkcapi-1.2.0-2.el8.ppc64le", + "libkcapi-hmaccalc-1.2.0-2.el8.ppc64le", + "libksba-1.3.5-7.el8.ppc64le", + "libldb-2.1.3-2.el8.ppc64le", + "libmaxminddb-1.2.0-10.el8.ppc64le", + "libmetalink-0.1.3-7.el8.ppc64le", + "libmnl-1.0.4-6.el8.ppc64le", + "libmodman-2.0.1-17.el8.ppc64le", + "libmodulemd-2.9.4-2.el8.ppc64le", + "libmount-2.32.1-24.el8.ppc64le", + "libndp-1.7-3.el8.ppc64le", + "libnfsidmap-2.3.3-35.el8.ppc64le", + "libnghttp2-1.33.0-3.el8_2.1.ppc64le", + "libnl3-3.5.0-1.el8.ppc64le", + "libnl3-cli-3.5.0-1.el8.ppc64le", + "libnsl2-1.2.0-2.20180605git4a062cf.el8.ppc64le", + "libpath_utils-0.2.1-39.el8.ppc64le", + "libpcap-1.9.1-4.el8.ppc64le", + "libpipeline-1.5.0-2.el8.ppc64le", + "libpng-1.6.34-5.el8.ppc64le", + "libproxy-0.4.15-5.2.el8.ppc64le", + "libpsl-0.20.2-6.el8.ppc64le", + "libpwquality-1.4.0-9.el8.ppc64le", + "libref_array-0.1.5-39.el8.ppc64le", + "librepo-1.12.0-1.el8.ppc64le", + "libreport-filesystem-2.9.5-11.el8.ppc64le", + "librhsm-0.0.3-3.el8.ppc64le", + "librtas-2.0.2-1.el8.ppc64le", + "libseccomp-2.4.3-1.el8.ppc64le", + "libsecret-0.18.6-1.el8.ppc64le", + "libselinux-2.9-3.el8.ppc64le", + "libselinux-utils-2.9-3.el8.ppc64le", + "libsemanage-2.9-3.el8.ppc64le", + "libsepol-2.9-1.el8.ppc64le", + "libservicelog-1.1.18-2.el8.ppc64le", + "libsigsegv-2.11-5.el8.ppc64le", + "libsmartcols-2.32.1-24.el8.ppc64le", + "libsolv-0.7.11-1.el8.ppc64le", + "libsoup-2.62.3-1.el8.ppc64le", + "libss-1.45.6-1.el8.ppc64le", + "libssh-0.9.4-2.el8.ppc64le", + "libssh-config-0.9.4-2.el8.noarch", + "libsss_autofs-2.3.0-2.el8.ppc64le", + "libsss_certmap-2.3.0-2.el8.ppc64le", + "libsss_idmap-2.3.0-2.el8.ppc64le", + "libsss_nss_idmap-2.3.0-2.el8.ppc64le", + "libsss_sudo-2.3.0-2.el8.ppc64le", + "libstdc++-8.3.1-5.1.el8.ppc64le", + "libstemmer-0-10.585svn.el8.ppc64le", + "libsysfs-2.1.0-24.el8.ppc64le", + "libtalloc-2.3.1-2.el8.ppc64le", + "libtasn1-4.13-3.el8.ppc64le", + "libtdb-1.4.3-1.el8.ppc64le", + "libteam-1.29-5.el8.ppc64le", + "libtevent-0.10.2-2.el8.ppc64le", + "libtirpc-1.1.4-4.el8.ppc64le", + "libunistring-0.9.9-3.el8.ppc64le", + "libusbx-1.0.23-3.el8.ppc64le", + "libuser-0.62-23.el8.ppc64le", + "libutempter-1.1.6-14.el8.ppc64le", + "libuuid-2.32.1-24.el8.ppc64le", + "libverto-0.3.0-5.el8.ppc64le", + "libverto-libevent-0.3.0-5.el8.ppc64le", + "libvpd-2.2.7-1.el8.ppc64le", + "libxcb-1.13.1-1.el8.ppc64le", + "libxcrypt-4.1.1-4.el8.ppc64le", + "libxkbcommon-0.9.1-1.el8.ppc64le", + "libxml2-2.9.7-8.el8.ppc64le", + "libyaml-0.1.7-5.el8.ppc64le", + "libzstd-1.4.4-1.el8.ppc64le", + "linux-firmware-20200619-99.git3890db36.el8.noarch", + "logrotate-3.14.0-4.el8.ppc64le", + "lshw-B.02.19.2-2.el8.ppc64le", + "lsscsi-0.30-1.el8.ppc64le", + "lsvpd-1.7.11-1.el8.ppc64le", + "lua-libs-5.3.4-11.el8.ppc64le", + "lz4-libs-1.8.3-2.el8.ppc64le", + "lzo-2.08-14.el8.ppc64le", + "man-db-2.7.6.1-17.el8.ppc64le", + "memstrack-0.1.8-1.el8.ppc64le", + "mozjs60-60.9.0-4.el8.ppc64le", + "mpfr-3.1.6-1.el8.ppc64le", + "ncurses-6.1-7.20180224.el8.ppc64le", + "ncurses-base-6.1-7.20180224.el8.noarch", + "ncurses-libs-6.1-7.20180224.el8.ppc64le", + "net-tools-2.0-0.52.20160912git.el8.ppc64le", + "nettle-3.4.1-2.el8.ppc64le", + "newt-0.52.20-11.el8.ppc64le", + "nfs-utils-2.3.3-35.el8.ppc64le", + "npth-1.5-4.el8.ppc64le", + "numactl-libs-2.0.12-11.el8.ppc64le", + "opal-prd-6.6-1.el8.ppc64le", + "openldap-2.4.46-15.el8.ppc64le", + "openssh-8.0p1-5.el8.ppc64le", + "openssh-clients-8.0p1-5.el8.ppc64le", + "openssh-server-8.0p1-5.el8.ppc64le", + "openssl-1.1.1g-9.el8.ppc64le", + "openssl-libs-1.1.1g-9.el8.ppc64le", + "openssl-pkcs11-0.4.10-2.el8.ppc64le", + "os-prober-1.74-6.el8.ppc64le", + "p11-kit-0.23.14-5.el8_0.ppc64le", + "p11-kit-trust-0.23.14-5.el8_0.ppc64le", + "pam-1.3.1-11.el8.ppc64le", + "parted-3.2-38.el8.ppc64le", + "passwd-0.80-3.el8.ppc64le", + "pciutils-3.6.4-2.el8.ppc64le", + "pciutils-libs-3.6.4-2.el8.ppc64le", + "pcre-8.42-4.el8.ppc64le", + "pcre2-10.32-2.el8.ppc64le", + "perl-Carp-1.42-396.el8.noarch", + "perl-Data-Dumper-2.167-399.el8.ppc64le", + "perl-Digest-1.17-395.el8.noarch", + "perl-Digest-MD5-2.55-396.el8.ppc64le", + "perl-Encode-2.97-3.el8.ppc64le", + "perl-Errno-1.28-416.el8.ppc64le", + "perl-Exporter-5.72-396.el8.noarch", + "perl-File-Path-2.15-2.el8.noarch", + "perl-File-Temp-0.230.600-1.el8.noarch", + "perl-Getopt-Long-2.50-4.el8.noarch", + "perl-HTTP-Tiny-0.074-1.el8.noarch", + "perl-IO-1.38-416.el8.ppc64le", + "perl-IO-Socket-IP-0.39-5.el8.noarch", + "perl-IO-Socket-SSL-2.066-4.module+el8.3.0+6446+594cad75.noarch", + "perl-MIME-Base64-3.15-396.el8.ppc64le", + "perl-Mozilla-CA-20160104-7.module+el8.3.0+6498+9eecfe51.noarch", + "perl-Net-SSLeay-1.88-1.module+el8.3.0+6446+594cad75.ppc64le", + "perl-PathTools-3.74-1.el8.ppc64le", + "perl-Pod-Escapes-1.07-395.el8.noarch", + "perl-Pod-Perldoc-3.28-396.el8.noarch", + "perl-Pod-Simple-3.35-395.el8.noarch", + "perl-Pod-Usage-1.69-395.el8.noarch", + "perl-Scalar-List-Utils-1.49-2.el8.ppc64le", + "perl-Socket-2.027-3.el8.ppc64le", + "perl-Storable-3.11-3.el8.ppc64le", + "perl-Term-ANSIColor-4.06-396.el8.noarch", + "perl-Term-Cap-1.17-395.el8.noarch", + "perl-Text-ParseWords-3.30-395.el8.noarch", + "perl-Text-Tabs+Wrap-2013.0523-395.el8.noarch", + "perl-Time-Local-1.280-1.el8.noarch", + "perl-URI-1.73-3.el8.noarch", + "perl-Unicode-Normalize-1.25-396.el8.ppc64le", + "perl-constant-1.33-396.el8.noarch", + "perl-interpreter-5.26.3-416.el8.ppc64le", + "perl-libnet-3.11-3.el8.noarch", + "perl-libs-5.26.3-416.el8.ppc64le", + "perl-macros-5.26.3-416.el8.ppc64le", + "perl-parent-0.237-1.el8.noarch", + "perl-podlators-4.11-1.el8.noarch", + "perl-threads-2.21-2.el8.ppc64le", + "perl-threads-shared-1.58-2.el8.ppc64le", + "pigz-2.4-4.el8.ppc64le", + "pinentry-1.1.0-2.el8.ppc64le", + "pixman-0.38.4-1.el8.ppc64le", + "platform-python-3.6.8-30.el8.ppc64le", + "platform-python-pip-9.0.3-17.el8.noarch", + "platform-python-setuptools-39.2.0-6.el8.noarch", + "policycoreutils-2.9-9.el8.ppc64le", + "policycoreutils-python-utils-2.9-9.el8.noarch", + "polkit-0.115-11.el8.ppc64le", + "polkit-libs-0.115-11.el8.ppc64le", + "polkit-pkla-compat-0.1-12.el8.ppc64le", + "popt-1.16-14.el8.ppc64le", + "powerpc-utils-1.3.6-11.el8.ppc64le", + "powerpc-utils-core-1.3.6-11.el8.ppc64le", + "ppc64-diag-2.7.6-2.el8.ppc64le", + "ppc64-diag-rtas-2.7.6-2.el8.ppc64le", + "prefixdevname-0.1.0-6.el8.ppc64le", + "procps-ng-3.3.15-2.el8.ppc64le", + "publicsuffix-list-dafsa-20180723-1.el8.noarch", + "python3-asn1crypto-0.24.0-3.el8.noarch", + "python3-audit-3.0-0.17.20191104git1c2f876.el8.ppc64le", + "python3-babel-2.5.1-5.el8.noarch", + "python3-cairo-1.16.3-6.el8.ppc64le", + "python3-cffi-1.11.5-5.el8.ppc64le", + "python3-chardet-3.0.4-7.el8.noarch", + "python3-configobj-5.0.6-11.el8.noarch", + "python3-cryptography-2.3-3.el8.ppc64le", + "python3-dateutil-2.6.1-6.el8.noarch", + "python3-dbus-1.2.4-15.el8.ppc64le", + "python3-decorator-4.2.1-2.el8.noarch", + "python3-dnf-4.2.23-2.el8.noarch", + "python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch", + "python3-dnf-plugins-core-4.0.17-2.el8.noarch", + "python3-ethtool-0.14-3.el8.ppc64le", + "python3-gobject-3.28.3-2.el8.ppc64le", + "python3-gobject-base-3.28.3-2.el8.ppc64le", + "python3-gpg-1.13.1-3.el8.ppc64le", + "python3-hawkey-0.48.0-2.el8.ppc64le", + "python3-hwdata-2.3.6-3.el8.noarch", + "python3-idna-2.5-5.el8.noarch", + "python3-iniparse-0.4-31.el8.noarch", + "python3-inotify-0.9.6-13.el8.noarch", + "python3-jinja2-2.10.1-2.el8_0.noarch", + "python3-jsonpatch-1.21-2.el8.noarch", + "python3-jsonpointer-1.10-11.el8.noarch", + "python3-jsonschema-2.6.0-4.el8.noarch", + "python3-jwt-1.6.1-2.el8.noarch", + "python3-libcomps-0.1.11-4.el8.ppc64le", + "python3-libdnf-0.48.0-2.el8.ppc64le", + "python3-librepo-1.12.0-1.el8.ppc64le", + "python3-libs-3.6.8-30.el8.ppc64le", + "python3-libselinux-2.9-3.el8.ppc64le", + "python3-libsemanage-2.9-3.el8.ppc64le", + "python3-libxml2-2.9.7-8.el8.ppc64le", + "python3-linux-procfs-0.6.2-2.el8.noarch", + "python3-magic-5.33-16.el8.noarch", + "python3-markupsafe-0.23-19.el8.ppc64le", + "python3-netifaces-0.10.6-4.el8.ppc64le", + "python3-newt-0.52.20-11.el8.ppc64le", + "python3-oauthlib-2.1.0-1.el8.noarch", + "python3-perf-4.18.0-221.el8.ppc64le", + "python3-pip-wheel-9.0.3-17.el8.noarch", + "python3-ply-3.9-8.el8.noarch", + "python3-policycoreutils-2.9-9.el8.noarch", + "python3-prettytable-0.7.2-14.el8.noarch", + "python3-pyOpenSSL-18.0.0-1.el8.noarch", + "python3-pycparser-2.14-14.el8.noarch", + "python3-pydbus-0.6.0-5.el8.noarch", + "python3-pyserial-3.1.1-8.el8.noarch", + "python3-pysocks-1.6.8-3.el8.noarch", + "python3-pytz-2017.2-9.el8.noarch", + "python3-pyudev-0.21.0-7.el8.noarch", + "python3-pyyaml-3.12-12.el8.ppc64le", + "python3-requests-2.20.0-2.1.el8_1.noarch", + "python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.ppc64le", + "python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.ppc64le", + "python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.ppc64le", + "python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch", + "python3-rpm-4.14.3-4.el8.ppc64le", + "python3-schedutils-0.6-6.el8.ppc64le", + "python3-setools-4.3.0-1.el8.ppc64le", + "python3-setuptools-wheel-39.2.0-6.el8.noarch", + "python3-six-1.11.0-8.el8.noarch", + "python3-slip-0.6.4-11.el8.noarch", + "python3-slip-dbus-0.6.4-11.el8.noarch", + "python3-subscription-manager-rhsm-1.27.9-1.el8.ppc64le", + "python3-syspurpose-1.27.9-1.el8.ppc64le", + "python3-systemd-234-8.el8.ppc64le", + "python3-unbound-1.7.3-14.el8.ppc64le", + "python3-urllib3-1.24.2-4.el8.noarch", + "qemu-guest-agent-4.2.0-29.module+el8.3.0+7212+401047e6.ppc64le", + "quota-4.04-10.el8.ppc64le", + "quota-nls-4.04-10.el8.noarch", + "readline-7.0-10.el8.ppc64le", + "redhat-logos-81.1-1.el8.ppc64le", + "redhat-release-8.3-0.2.el8.ppc64le", + "redhat-release-eula-8.3-0.2.el8.ppc64le", + "rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.ppc64le", + "rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.ppc64le", + "rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.ppc64le", + "rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch", + "rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.ppc64le", + "rhsm-icons-1.27.9-1.el8.noarch", + "rng-tools-6.8-3.el8.ppc64le", + "rootfiles-8.1-22.el8.noarch", + "rpcbind-1.2.5-7.el8.ppc64le", + "rpm-4.14.3-4.el8.ppc64le", + "rpm-build-libs-4.14.3-4.el8.ppc64le", + "rpm-libs-4.14.3-4.el8.ppc64le", + "rpm-plugin-selinux-4.14.3-4.el8.ppc64le", + "rpm-plugin-systemd-inhibit-4.14.3-4.el8.ppc64le", + "rsync-3.1.3-8.el8.ppc64le", + "rsyslog-8.1911.0-6.el8.ppc64le", + "sed-4.5-2.el8.ppc64le", + "selinux-policy-3.14.3-48.el8.noarch", + "selinux-policy-targeted-3.14.3-48.el8.noarch", + "servicelog-1.1.15-1.el8.ppc64le", + "setroubleshoot-plugins-3.3.12-1.el8.noarch", + "setroubleshoot-server-3.3.23-1.el8.ppc64le", + "setup-2.12.2-6.el8.noarch", + "sg3_utils-1.44-5.el8.ppc64le", + "sg3_utils-libs-1.44-5.el8.ppc64le", + "shadow-utils-4.6-10.el8.ppc64le", + "shared-mime-info-1.9-3.el8.ppc64le", + "slang-2.3.2-3.el8.ppc64le", + "snappy-1.1.7-5.el8.ppc64le", + "sos-3.9.1-4.el8.noarch", + "sqlite-libs-3.26.0-10.el8.ppc64le", + "squashfs-tools-4.3-19.el8.ppc64le", + "sscg-2.3.3-14.el8.ppc64le", + "sssd-client-2.3.0-2.el8.ppc64le", + "sssd-common-2.3.0-2.el8.ppc64le", + "sssd-kcm-2.3.0-2.el8.ppc64le", + "sssd-nfs-idmap-2.3.0-2.el8.ppc64le", + "subscription-manager-1.27.9-1.el8.ppc64le", + "subscription-manager-cockpit-1.27.9-1.el8.noarch", + "subscription-manager-rhsm-certificates-1.27.9-1.el8.ppc64le", + "sudo-1.8.29-6.el8.ppc64le", + "systemd-239-36.el8.ppc64le", + "systemd-libs-239-36.el8.ppc64le", + "systemd-pam-239-36.el8.ppc64le", + "systemd-udev-239-36.el8.ppc64le", + "tar-1.30-5.el8.ppc64le", + "tcpdump-4.9.3-1.el8.ppc64le", + "teamd-1.29-5.el8.ppc64le", + "trousers-0.3.14-4.el8.ppc64le", + "trousers-lib-0.3.14-4.el8.ppc64le", + "tuned-2.14.0-2.el8.noarch", + "tzdata-2020a-1.el8.noarch", + "unbound-libs-1.7.3-14.el8.ppc64le", + "usermode-1.113-1.el8.ppc64le", + "util-linux-2.32.1-24.el8.ppc64le", + "vim-minimal-8.0.1763-15.el8.ppc64le", + "virt-what-1.18-6.el8.ppc64le", + "which-2.21-12.el8.ppc64le", + "xfsprogs-5.0.0-4.el8.ppc64le", + "xkeyboard-config-2.28-1.el8.noarch", + "xz-5.2.4-3.el8.ppc64le", + "xz-libs-5.2.4-3.el8.ppc64le", + "yum-4.2.23-2.el8.noarch", + "yum-utils-4.0.17-2.el8.noarch", + "zlib-1.2.11-15.el8.ppc64le" + ], + "partition-table": "dos", + "partition-table-id": "0x14fc63d2", + "partitions": [ + { + "bootable": true, + "fstype": null, + "label": null, + "partuuid": "14fc63d2-01", + "size": 4194304, + "start": 1048576, + "type": "41", + "uuid": null + }, + { + "bootable": false, + "fstype": "xfs", + "label": null, + "partuuid": "14fc63d2-02", + "size": 2142240768, + "start": 5242880, + "type": "83", + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:992:988::/var/lib/chrony:/sbin/nologin", + "cockpit-ws:x:994:990:User for cockpit web service:/nonexisting:/sbin/nologin", + "cockpit-wsinstance:x:993:989:User for cockpit-ws instances:/nonexisting:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "polkitd:x:998:996:User for polkitd:/:/sbin/nologin", + "redhat:x:1000:1000::/home/redhat:/bin/bash", + "rngd:x:991:987:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin", + "root:x:0:0:root:/root:/bin/bash", + "rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin", + "rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin", + "setroubleshoot:x:995:991::/var/lib/setroubleshoot:/sbin/nologin", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sssd:x:996:992:User for sssd:/:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "tcpdump:x:72:72::/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:997:993:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/etc/machine-id": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/proc": ".M.......", + "/sys": ".M.......", + "/var/log/lastlog": ".M....G..", + "/var/spool/anacron/cron.daily": ".M.......", + "/var/spool/anacron/cron.monthly": ".M.......", + "/var/spool/anacron/cron.weekly": ".M......." + }, + "missing": [ + "/etc/systemd/system/dbus-org.freedesktop.resolve1.service" + ] + }, + "services-disabled": [ + "arp-ethers.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "cockpit.socket", + "console-getty.service", + "cpupower.service", + "ctrl-alt-del.target", + "debug-shell.service", + "exit.target", + "fstrim.timer", + "gssproxy.service", + "halt.target", + "insights-client-results.path", + "insights-client.timer", + "kexec.target", + "nfs-blkmap.service", + "nfs-server.service", + "poweroff.target", + "qemu-guest-agent.service", + "rdisc.service", + "reboot.target", + "remote-cryptsetup.target", + "rhnsd.service", + "rhsm-facts.service", + "rhsm.service", + "rngd-wake-threshold.service", + "runlevel0.target", + "runlevel6.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-resolved.service", + "tcsd.service", + "tmp.mount" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "cloud-init.service", + "crond.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dnf-makecache.timer", + "getty@.service", + "import-state.service", + "irqbalance.service", + "kdump.service", + "loadmodules.service", + "nfs-client.target", + "nfs-convert.service", + "nis-domainname.service", + "opal-prd.service", + "opal_errd.service", + "remote-fs.target", + "rhsmcertd.service", + "rngd.service", + "rpcbind.service", + "rpcbind.socket", + "rsyslog.service", + "rtas_errd.service", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "syslog.service", + "tuned.service", + "unbound-anchor.timer" + ], + "timezone": "UTC" + } +} \ No newline at end of file diff --git a/test/cases/rhel_8-ppc64le-tar-boot.json b/test/cases/rhel_8-ppc64le-tar-boot.json new file mode 100644 index 0000000..0e7f3ab --- /dev/null +++ b/test/cases/rhel_8-ppc64le-tar-boot.json @@ -0,0 +1,5729 @@ +{ + "boot": { + "type": "nspawn-extract" + }, + "compose-request": { + "distro": "rhel-8", + "arch": "ppc64le", + "image-type": "tar", + "repositories": [ + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + }, + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + } + ], + "filename": "root.tar.xz", + "blueprint": { + "name": "tar-boot-test", + "description": "Image for boot test", + "packages": [ + { + "name": "openssh-server", + "version": "*" + } + ], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:0143da5903a3053bbd62714904db5a7c1aba3b9ff77c97d9126a4479d3047c58": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libzstd-1.4.4-1.el8.ppc64le.rpm" + }, + "sha256:03318129f3b75d57abb1f15adf1ddc26c23fc178432c66b5ffc43e586c948428": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libmount-2.32.1-24.el8.ppc64le.rpm" + }, + "sha256:0396d12973b68a7d16074aa51f75e706c0b7558cd24d32e5573c49a487b2497c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-libcomps-0.1.11-4.el8.ppc64le.rpm" + }, + "sha256:03e586f573bb9a8a463215d194a6b2bceff16d67af096883df5bbcda0ca55076": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cracklib-2.9.6-15.el8.ppc64le.rpm" + }, + "sha256:05421657115297a907645ca4536e8d81e82da116f20053541f8c1e71d62977a6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-tools-minimal-2.02-84.el8.ppc64le.rpm" + }, + "sha256:08af4dc49ee9fbef7b2b6320da7809a952fa5d4bb907e546aa2a74827dcd7390": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/librhsm-0.0.3-3.el8.ppc64le.rpm" + }, + "sha256:0970bde39d7cc1dfebda51e4359f63821fe8dd573d46253fc471f8466c79ac82": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/os-prober-1.74-6.el8.ppc64le.rpm" + }, + "sha256:0c706e235cd737512024bbc99a6fcbca41a9898c13a4ae11797514ac99a16839": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/info-6.5-6.el8.ppc64le.rpm" + }, + "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm" + }, + "sha256:0ecb10a5141fd74ad9165fef9dd7d9485a34ea1b10605a9d4b61eefe60b767d9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssl-pkcs11-0.4.10-2.el8.ppc64le.rpm" + }, + "sha256:1130c50d23d464653fbca78aa597b1c65d22c9163c70cf3011a9a116af76bbca": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openldap-2.4.46-15.el8.ppc64le.rpm" + }, + "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm" + }, + "sha256:12b368c93ec9e4282ee1aad905e336166aa6dd2519a9f53a1adc11b6fbc2095c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dracut-049-89.git20200625.el8.ppc64le.rpm" + }, + "sha256:13f54c6408ac37c8b4a24fb22af1a719d05d86206d1d4f979d71fad96ab7f319": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cracklib-dicts-2.9.6-15.el8.ppc64le.rpm" + }, + "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-common-2.02-84.el8.noarch.rpm" + }, + "sha256:16294bc45d609de6ce07b660fadc851022e43d00a13f3c98c1f45064abf591d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/redhat-release-8.3-0.2.el8.ppc64le.rpm" + }, + "sha256:16744c34b4e5d937388ea1169160dff7ac02692884d90c87b730ba0f9964476d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kmod-25-16.el8.ppc64le.rpm" + }, + "sha256:16ba1aa8c5db466e4288412bfedf01be75918b4cece328bdf8ebe590a845d490": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grubby-8.40-41.el8.ppc64le.rpm" + }, + "sha256:17d887ffe27ba3dfd324bae27b0309c13b0b8430597fb65cb4b377416cc21cf3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/fuse-libs-2.9.7-12.el8.ppc64le.rpm" + }, + "sha256:183ae7a707951036dd77805d75aae1dbb055ca52d8fecdc6ef21d5e1518fca4d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sed-4.5-2.el8.ppc64le.rpm" + }, + "sha256:18b66eb926d6554fdfa6c6464c301d906d63ec69f54ac318cf0a5e7cccf43d2e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libusbx-1.0.23-3.el8.ppc64le.rpm" + }, + "sha256:1a92ddb2b7caa477d02eadcd97b1f4fb124359609dc827dfedb7de0976ebf824": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgcc-8.3.1-5.1.el8.ppc64le.rpm" + }, + "sha256:1d084e85f865a35f39067256c83f17a05632b531d9b6c5afb8cdecca1e594d62": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/bzip2-libs-1.0.6-26.el8.ppc64le.rpm" + }, + "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/tzdata-2020a-1.el8.noarch.rpm" + }, + "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm" + }, + "sha256:2034236aa3ea2de19c9d9b717b83515a7a2e82685e8963d03fbb19973b20c249": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gawk-4.2.1-1.el8.ppc64le.rpm" + }, + "sha256:2081809fd42c6cefcf677362a825c38b166f04df8edf865d5d6404348179e536": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/tar-1.30-5.el8.ppc64le.rpm" + }, + "sha256:20a994752f44f7f2c1c3df9850b5381be5b641c0ee913a80a794ca6c49ef7efb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/curl-7.61.1-12.el8.ppc64le.rpm" + }, + "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:23b438c52f920e7d3870031673412e81e1edc12c427e64e204ba6620df4401b7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libmodulemd-2.9.4-2.el8.ppc64le.rpm" + }, + "sha256:241a563df5ae3b3b49d45cbf9e67b6932b8345b3fbb40029dbb3b0834cf3db16": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/which-2.21-12.el8.ppc64le.rpm" + }, + "sha256:278dffe93fc19fd1613a9ab8d61c87a755e68120163d5a1352368b68f3880074": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/librepo-1.12.0-1.el8.ppc64le.rpm" + }, + "sha256:299078646f29228e7f497925598b233024996dfaccaa96dcf62c1d14e30a7735": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/e2fsprogs-libs-1.45.6-1.el8.ppc64le.rpm" + }, + "sha256:2af56bdac984d2755e44a4bc733df7217c1756aac3007dbca1408a218cc6c2b4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-daemon-1.12.8-11.el8.ppc64le.rpm" + }, + "sha256:2b2e0d9a397d27c7076f05ab309c71ebffdf2c33df95de51c700af181899c87e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/xz-5.2.4-3.el8.ppc64le.rpm" + }, + "sha256:2c1a643202117f9bdf48b11c24b60a01c409f2ccdc43914a89ac980f7d692ae6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcurl-7.61.1-12.el8.ppc64le.rpm" + }, + "sha256:2c3aeeee40861bf0576cfccb8a1d7fbf5948dd60e1c97d2354b8d4dbe34247e8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-ppc64le-2.02-84.el8.ppc64le.rpm" + }, + "sha256:2edb7ade3d137c1373e8dcf1f765e62dabd7a86f256f2b8872baf1b4cd4a420b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/device-mapper-libs-1.02.171-3.el8.ppc64le.rpm" + }, + "sha256:32fc4d89fa8040aa8a180717305eb2c7a7094ad255cdb66fd7af2254fa89a5c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libassuan-2.5.1-3.el8.ppc64le.rpm" + }, + "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm" + }, + "sha256:349d5e65aeee405ea53d10c651d541418f11af4bf5f436ab5cba8c07183f405e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libutempter-1.1.6-14.el8.ppc64le.rpm" + }, + "sha256:350d1a6728391907db3ef0ec69b80837d145e39b0cf86a36161432f587dc3308": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gnupg2-2.2.20-2.el8.ppc64le.rpm" + }, + "sha256:36ccdb1a1673d3f739a29105edc45c09074ec667cc470051c2d9c52bfa6b78b0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libstdc++-8.3.1-5.1.el8.ppc64le.rpm" + }, + "sha256:37e4f7e854765b98e8dd10986b758631c7ca00942bc53efb4003ee326e1cc834": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/xz-libs-5.2.4-3.el8.ppc64le.rpm" + }, + "sha256:39acf20c2687b0c174c5961f88209b42b689ce866701f78bbb94bd875afd883e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/elfutils-debuginfod-client-0.180-1.el8.ppc64le.rpm" + }, + "sha256:39fec51b4b40aef643f68f41cca660bce59c5fbb360bcedceec04c17cafd17e6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcap-ng-0.7.9-5.el8.ppc64le.rpm" + }, + "sha256:3a5d1837798f980b89b6d635fe40f118cc871fac7638dcea3539d45e4e9f7985": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/bash-4.4.19-12.el8.ppc64le.rpm" + }, + "sha256:3a65dd5868f303c775f48e7acef810cea2a606aec93496cae36c5e9eb9129650": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/elfutils-libelf-0.180-1.el8.ppc64le.rpm" + }, + "sha256:3ab5aad8b10e5343c08af8c24775334b6111cd50fb9629f21335626057c7dab9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-build-libs-4.14.3-4.el8.ppc64le.rpm" + }, + "sha256:3d425b214eeb598d59e4891ee3f5b0c941ff4755790907588309b431c1482195": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libaio-0.3.112-1.el8.ppc64le.rpm" + }, + "sha256:3f5c97c72cbbe552e9f7183d1f8eb477a3f46647bb513a175a8c158d3eba3dee": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/trousers-lib-0.3.14-4.el8.ppc64le.rpm" + }, + "sha256:40e937791b4b008d86cc82d0bd7564e55fa2b08c092b2a7dab0040876f790022": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/expat-2.2.5-4.el8.ppc64le.rpm" + }, + "sha256:4538fb52ec654977ccaf56d0fc26b491f4cdda58e8070f5922165ac77104857c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/npth-1.5-4.el8.ppc64le.rpm" + }, + "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm" + }, + "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm" + }, + "sha256:485ef6f1f8b26b7bf4c1ae8ee8ae7bda9ff679aa0fc9e62d1ff990a54e0e559d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsecret-0.18.6-1.el8.ppc64le.rpm" + }, + "sha256:495c3fc6f15c5daef8686fd01d1f7008bbc72ca9c963da1ae3cf60ffc519f48d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-libs-3.6.8-30.el8.ppc64le.rpm" + }, + "sha256:4a44b9e5e7977128528c4108ef55d49e52290c51d376c6ffd177a6b59113fbf6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.ppc64le.rpm" + }, + "sha256:4e4dc28e98b8470dfbb789d784b8bc5afc04dc7295047d2ee16d36ab4dbaba1d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsepol-2.9-1.el8.ppc64le.rpm" + }, + "sha256:4f2725db0dc03a8bb729ccf6ced8fc4e8eae995afa7029decb7a7aa81e6eb417": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgcrypt-1.8.5-4.el8.ppc64le.rpm" + }, + "sha256:5009afc9241f592691ce9097fb74dabba84b1d2eaf267a7bea71b33bc7ac3795": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gmp-6.1.2-10.el8.ppc64le.rpm" + }, + "sha256:50f00be9540e2ab1e81f955e9ad33ecbb24ba6538ddccf418ad00ebfeb1fe472": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libevent-2.1.8-5.el8.ppc64le.rpm" + }, + "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm" + }, + "sha256:5246dc8c3bae5d860cb5ca12d787e976c3ca70bc3d023350eabc8a9e88601058": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grep-3.1-6.el8.ppc64le.rpm" + }, + "sha256:530f8aa49c10d80202e2b3e2c2b505dbdcdc2c3b56231d5986b6388da3ffd12b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libnghttp2-1.33.0-3.el8_2.1.ppc64le.rpm" + }, + "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:54b3552112a26b7ad79db1251bc0e8e0415ac60da299d54700c5bc59760e5be9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.ppc64le.rpm" + }, + "sha256:559de474c1dd617a53585eb4913da24181b4b52a4e579bd91c4fd280f5c7776f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/e2fsprogs-1.45.6-1.el8.ppc64le.rpm" + }, + "sha256:56a66127f50af442a8bbd3183c29d39d4b1825526dd134405ecea82839ccca23": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcomps-0.1.11-4.el8.ppc64le.rpm" + }, + "sha256:56dc429cc3404a69f5d72338303a615fdbb16380688c93a4a7e13ecd773a80f2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/json-c-0.13.1-0.2.el8.ppc64le.rpm" + }, + "sha256:5896adabcbefa7b297052fd9687b51a9eefe883c91f71e7be71a9200188757d1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gnupg2-smime-2.2.20-2.el8.ppc64le.rpm" + }, + "sha256:58a7c06351efae8f3b1bff3b4832ed02ebc9f1018d6978b1703c6e963f26db98": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libattr-2.4.48-3.el8.ppc64le.rpm" + }, + "sha256:5919c5de67dbc1f44a553cbb4037572c258bb394ff27ca838b2198d05a0c2dad": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.ppc64le.rpm" + }, + "sha256:5a67ae309abe3ef1d6dc326a373abc5791d4264b657fa2e3e15be334fb1baa1d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kmod-libs-25-16.el8.ppc64le.rpm" + }, + "sha256:5d190a4742bc826edbe3d3dfb261c94688aca6e1bd0d431b58fc0feb9f40c1b5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cpio-2.12-8.el8.ppc64le.rpm" + }, + "sha256:5ea0604f773c0ae0e273206443a5f115e21010e8acb1d580a22e5ce0219ac991": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libmetalink-0.1.3-7.el8.ppc64le.rpm" + }, + "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:6501a0edf570ea01137395ff13cdbc3914dee9e536ab92ff9698a5ddd76dfb16": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-gpg-1.13.1-3.el8.ppc64le.rpm" + }, + "sha256:679ba7cf5974aaeb4b50a926e8fa28821f48b71c182d50b1033bccb6fdc34a06": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libxml2-2.9.7-8.el8.ppc64le.rpm" + }, + "sha256:68269d4f3588a15e94360c9d0f595d0ad7f1ece27968162ac42468acd462e526": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libacl-2.2.53-1.el8.ppc64le.rpm" + }, + "sha256:68c10fbde60ad63306c334df256056bc93eb04d56eaba5ddc40254e81e815056": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/nettle-3.4.1-2.el8.ppc64le.rpm" + }, + "sha256:69997f597de86de2dedda20db0f5b516585751822162f4dacd01cbc2808a9155": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgpg-error-1.31-1.el8.ppc64le.rpm" + }, + "sha256:6b0cfe88a81e314afa03ce297f2bb0470a29a8f13465ba4a52fc65550027cbda": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libdb-utils-5.3.28-39.el8.ppc64le.rpm" + }, + "sha256:6b6b362f865498d59d17673d93fabe076015e7804462412e3da589335890f8d9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgomp-8.3.1-5.1.el8.ppc64le.rpm" + }, + "sha256:6cc8c3ff2b465defb9ac46a2caf95d53c887d18f68bd43f21e6e3635b884d6ab": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsemanage-2.9-3.el8.ppc64le.rpm" + }, + "sha256:704622626b2938eee1c096c1ecf1e5fc88be4e4eac80a911d0c2ee893f9657b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/platform-python-3.6.8-30.el8.ppc64le.rpm" + }, + "sha256:715dbe24d12d9fe43a6efa804dedb3e50e5babed510073b838b6e42ec06d5b8b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gpgme-1.13.1-3.el8.ppc64le.rpm" + }, + "sha256:7221e9c72741e31d3e954cae6a1b780b15da86abb70d6fdf3c125b1a440ce2b2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libidn2-2.2.0-1.el8.ppc64le.rpm" + }, + "sha256:72c17b5b06cb08a819da004e904d03ee23c1dfe86e0b29231cccc6f50d303ceb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dosfstools-4.1-6.el8.ppc64le.rpm" + }, + "sha256:739a6551c66057a68275d53d3ddeb35f1329cd4be1deea3d4103576cf7667cc8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssh-8.0p1-5.el8.ppc64le.rpm" + }, + "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:744a6f8d1acf3c49b77e0f96217a6bae3d7dba6228a16676be21b7332adf9f43": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/unbound-libs-1.7.3-14.el8.ppc64le.rpm" + }, + "sha256:7519682fc74640736910735ce7b0f3a4ca6deed6d6e365d1cff47f8412519a13": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kbd-2.0.4-10.el8.ppc64le.rpm" + }, + "sha256:756fe3065871f2c7c1f9635ae75119d1755dbb6a5ea62fae7660b410d9392e34": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/lua-libs-5.3.4-11.el8.ppc64le.rpm" + }, + "sha256:75f6ee212b397466bbdc9320473ee2de0198b9573d3204a71422ef215e985e8d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gdbm-1.18-1.el8.ppc64le.rpm" + }, + "sha256:7676c7a3f92aedec71efad68ce95c1ba5362b7bb75a815b70174a96a2126cebe": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcap-2.26-4.el8.ppc64le.rpm" + }, + "sha256:76ed4d1820916e1d4d5ba12a9200b790fc75f2801937d63753fca7e12b6c9d6e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/keyutils-libs-1.5.10-6.el8.ppc64le.rpm" + }, + "sha256:79d49c7e1c6bde0467649271fb45928a313c5a8cad3c0855d3cae9277e9b474c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libdnf-0.48.0-2.el8.ppc64le.rpm" + }, + "sha256:7a05e800e37b4aa74e657a829097090faf013338056c8bd6ebfeee5ae4467a22": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/util-linux-2.32.1-24.el8.ppc64le.rpm" + }, + "sha256:7c458f0dfbd31662e5a8a91b847881dfba6ff04786bc21e7de230236ce8ffaa7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.ppc64le.rpm" + }, + "sha256:7c526e6c9e22ba9fbd88da30824a4791c87f3da890426890be3a72f2ebf7f0c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libreport-filesystem-2.9.5-11.el8.ppc64le.rpm" + }, + "sha256:7c7df93f7b01587f4945ae4c69eec2af512ff4dfc83d8a36268c9238acd9aa71": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.ppc64le.rpm" + }, + "sha256:7d7280d0de03be269a1b078534d286496085416efef921996590bcce7db64736": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ncurses-6.1-7.20180224.el8.ppc64le.rpm" + }, + "sha256:7ddfb571e9fe4183721b20fc063c9b0fc1797b2cc5c7d0e677edce583d72c0c5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/iptables-libs-1.8.4-14.el8.ppc64le.rpm" + }, + "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:7e6bb03794258406bfee886f507934be08fe1d80a8643af028e631b37f9bcd4f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/file-5.33-16.el8.ppc64le.rpm" + }, + "sha256:7f2af219510f9bb8c70beea8c1bbfcdf3d84f9c96ebf28fe84c8bac20f4516e3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gzip-1.9-9.el8.ppc64le.rpm" + }, + "sha256:7f3337d8024c8eb5d67ed830c2ed1c5b046887d4806ea22cf6e8f3f77b8d7e6f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/p11-kit-trust-0.23.14-5.el8_0.ppc64le.rpm" + }, + "sha256:81a30f2977dfa5ede4e3a4077c8590de94c2f6bc97c4968f7bb556c713169a99": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gdbm-libs-1.18-1.el8.ppc64le.rpm" + }, + "sha256:81ca20194dbba8bb696a02f1f01d45b1ca73aa38a18d97173022fcf96e195156": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libxcrypt-4.1.1-4.el8.ppc64le.rpm" + }, + "sha256:86ae5e445a80e4485162e6f24fcf6df539fa7d1d31650755d4d5af5d65ec2b88": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libss-1.45.6-1.el8.ppc64le.rpm" + }, + "sha256:87209220ec94795ac0e079e98877a4f911beaee3a829bf95cda5a8b24b545a94": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/xfsprogs-5.0.0-4.el8.ppc64le.rpm" + }, + "sha256:8ac41d38c793722177492319ae57588ae2619962c8442e64aecc4b6708295707": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-rpm-4.14.3-4.el8.ppc64le.rpm" + }, + "sha256:8c8e8e8db16ef828278de55cefb09425a83079597a093f93e6261fd5bd027406": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glibc-common-2.28-127.el8.ppc64le.rpm" + }, + "sha256:8ec9594f8cb1eb3313cb8979201b0f85a914107fc4f706ea27727e977da056ee": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libssh-0.9.4-2.el8.ppc64le.rpm" + }, + "sha256:93e8eb519fee69ad0a90733dea8577670a1c62f02fce9348633880e0d9190f4b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libseccomp-2.4.3-1.el8.ppc64le.rpm" + }, + "sha256:94700eed0bd231ee73fac06e38ce66573466039c0454774bf268ea50a03fe056": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/shadow-utils-4.6-10.el8.ppc64le.rpm" + }, + "sha256:94b8f8ce9926a60524cba62e9695785bf12f3ca7f6de86cbcb510889e9e61509": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/librtas-2.0.2-1.el8.ppc64le.rpm" + }, + "sha256:95971777d5b9af4cc37788f0b9193c693de7dc2f0f842f341a5d2182af4edb24": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpsl-0.20.2-6.el8.ppc64le.rpm" + }, + "sha256:96904dd00cb918042fa0492a244c9ffcd2609604adb639a4e41a75368967f2b0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/freetype-2.9.1-4.el8.ppc64le.rpm" + }, + "sha256:97e8ec14c0569aee6633342fd3b05507b8c30c9d62b52aff0c3e693640d78938": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/systemd-239-36.el8.ppc64le.rpm" + }, + "sha256:97ffad7f79927ee908510ae381ada704827d369b5a0b8715214f51270a0984d3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libtasn1-4.13-3.el8.ppc64le.rpm" + }, + "sha256:9bdf8e5f329b54f1ea45a5d5277d650be84f7bd2f1570d7c5e7ac743fd57cf1f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsmartcols-2.32.1-24.el8.ppc64le.rpm" + }, + "sha256:9f1810ee304c2827027a4dadb0142f6940c28991b5371cbe302593eece6c25e4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libyaml-0.1.7-5.el8.ppc64le.rpm" + }, + "sha256:9f526c50ff9fae2f6c1d02eb10b6ced74b3ee94e7292e7ad483076ab730c1eef": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpcap-1.9.1-4.el8.ppc64le.rpm" + }, + "sha256:a07b21bf156e4a15c566506eb5f5b9e9c7087a58c471c004f53d4eae1bce90e3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-unbound-1.7.3-14.el8.ppc64le.rpm" + }, + "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm" + }, + "sha256:a48836542020c973d67ba459387dca8549d4d65749926eed8031f601b18a8738": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/findutils-4.6.0-20.el8.ppc64le.rpm" + }, + "sha256:a5fcf3d4d064289bd04a9f19cc204c8facaf389c0c10e47b075529f0601dc02c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libselinux-2.9-3.el8.ppc64le.rpm" + }, + "sha256:a6eed3ca128d562c0aed92a123d9d726cf8074df7f98c7ecef5c40257d5bc76e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/coreutils-8.30-8.el8.ppc64le.rpm" + }, + "sha256:a7db88e037715eb0ea86ffa464285615549b23178a14d691935685bdb6df4742": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libunistring-0.9.9-3.el8.ppc64le.rpm" + }, + "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/setup-2.12.2-6.el8.noarch.rpm" + }, + "sha256:acdee02b0e12502f5010ebfeb9d3cec41172e83db45a5e941085a8edba1bd408": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-libs-4.14.3-4.el8.ppc64le.rpm" + }, + "sha256:b1184fa6ab84322f715418f76a8e260c6a6bb352307cce9732d72ed3f0ebdec0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssl-1.1.1g-9.el8.ppc64le.rpm" + }, + "sha256:b25a8c87220920855a25357cd27024b1b9b87fefa48e1e877f7e23d0e1954a1d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/filesystem-3.8-3.el8.ppc64le.rpm" + }, + "sha256:b2d090246903da9162c06912dcfed747df9e7ba1b9f029a98c96c4155f68ce67": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/redhat-release-eula-8.3-0.2.el8.ppc64le.rpm" + }, + "sha256:b490e452b2ba6ebb8980392cef4b7be06b9788ad4cfd37ce31c568d80b29861b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-1.12.8-11.el8.ppc64le.rpm" + }, + "sha256:b56bf1fc0c0818069d8833845e90c629215abbc8bce652c52cf077dcc224be34": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libblkid-2.32.1-24.el8.ppc64le.rpm" + }, + "sha256:b64080283110b2e23a184787ccd14eca6994c321cf4be9cb16205cfda1ab5d89": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/pinentry-1.1.0-2.el8.ppc64le.rpm" + }, + "sha256:b896a07208090c08a314e4f590ed8ee399f77ffc6a73864a11b4e9dcac234bba": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/elfutils-libs-0.180-1.el8.ppc64le.rpm" + }, + "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/basesystem-11-5.el8.noarch.rpm" + }, + "sha256:b9a80c6b1e8bff298ad6215248ce9d193d734dc038f1de211c01a2e118b9606f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/systemd-pam-239-36.el8.ppc64le.rpm" + }, + "sha256:ba5b6364787be1ce76c7d5d3f7861f75157db6c5354f4b6e7b26ba8962fb226d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-4.14.3-4.el8.ppc64le.rpm" + }, + "sha256:ba5ed56f4798d522c6ba041f841617e9362a33b41eee1794214d85eb3bd3fa53": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/json-glib-1.4.4-1.el8.ppc64le.rpm" + }, + "sha256:bbfd0c8d360ae86528c2d06b6b64ceb2d6a974dea101ba5e1268740b689142b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/popt-1.16-14.el8.ppc64le.rpm" + }, + "sha256:bcd9e55362d6afab44a89acd877c8c0a8ae27572028bfc9282f3bfec0d21e27c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ncurses-libs-6.1-7.20180224.el8.ppc64le.rpm" + }, + "sha256:be5a5ad0d3338da31fca41645852b03c748c41e77bd715619033f71496f3c875": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/systemd-libs-239-36.el8.ppc64le.rpm" + }, + "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm" + }, + "sha256:c58f71151ec41a8da17f8d5a45364e6c85cb3fe149993047ac9ef4b5aecd1fff": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glibc-all-langpacks-2.28-127.el8.ppc64le.rpm" + }, + "sha256:ca164a41ad98cbc73c23259bb112bbd04162bb363b596a3c99eac02182a01d26": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glibc-2.28-127.el8.ppc64le.rpm" + }, + "sha256:cb77a2c9467e5873cf21f429069da709089dc10062c4d927d9e59eca0aac2546": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kpartx-0.8.4-2.el8.ppc64le.rpm" + }, + "sha256:ccc3640eff73677c4f962104b7a9fa6cb8c08787d77c4ba016569b0b11deb8f5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/device-mapper-1.02.171-3.el8.ppc64le.rpm" + }, + "sha256:ccd0b65f90f2db606a9b38f00c71f5bcd7611fafde92e185a57d3e2a3f027787": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/procps-ng-3.3.15-2.el8.ppc64le.rpm" + }, + "sha256:ce85ea9b2eb4d1e2ae94136168cda2bb768fe995ca09620615c1e69b8b0d6bfb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-ppc64le-modules-2.02-84.el8.noarch.rpm" + }, + "sha256:d07a535fd49579414267571a6e7286d38061e65dcffd1f947e32b8edeb0e7f58": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libselinux-utils-2.9-3.el8.ppc64le.rpm" + }, + "sha256:d0bdb653ebfa5cc5a596157434e50d544ad176bd6c3869896be0aa5996199771": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glib2-2.56.4-8.el8.ppc64le.rpm" + }, + "sha256:d20bcdcb1e6a8d16a5df9cdc99744f907516b9ded51b671bd0a0f31189ac43a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libffi-3.1-22.el8.ppc64le.rpm" + }, + "sha256:d2206467c216ee77262401385a61b540eeaabca9a44b9ab864c993962ba76758": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/shared-mime-info-1.9-3.el8.ppc64le.rpm" + }, + "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:d3c4038a7a3be6987f74236394642be84092a9dd731317dfe5974af757c3ccfc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/mpfr-3.1.6-1.el8.ppc64le.rpm" + }, + "sha256:d3d600e075b60b1462bc5f2cf7319ad484a416739175aaacf384a5805749861c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsolv-0.7.11-1.el8.ppc64le.rpm" + }, + "sha256:d42e36ab818d9284eb5fb9d46a0af71d99b91d917b3fdf1ac9af3ebd473606f1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpng-1.6.34-5.el8.ppc64le.rpm" + }, + "sha256:d4fff4e2707628db04c16a2cd8fa0c5e9854084688acf74ca4c1db27ea9d2f8d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libkcapi-1.2.0-2.el8.ppc64le.rpm" + }, + "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:d55a783930503e7f1590bc2ad10d9fa184ed3cb44e2ca85ae2bbe11fcbf166b8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/trousers-0.3.14-4.el8.ppc64le.rpm" + }, + "sha256:d79c92d015fa952edf2a4ad75f95042139fbf8b4323f24e939e1ed06481253d9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pcre2-10.32-2.el8.ppc64le.rpm" + }, + "sha256:d863808793a34bae10d7bf066b68be37883eb38cf117172de5e47c9eb729cb3d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/memstrack-0.1.8-1.el8.ppc64le.rpm" + }, + "sha256:d8b5b571fb84c7ccfa24f8a20460471d41fc4487d6d0c34f91fbeaba4c857eb2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pigz-2.4-4.el8.ppc64le.rpm" + }, + "sha256:d8ba6a91610d87dfb599018c887514af663a0f963ed6b25a83bac8fba56fa266": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/readline-7.0-10.el8.ppc64le.rpm" + }, + "sha256:d96bfcccbdce94af25721e3018a5853ff9670de828b6ac61ed76b5248a413e90": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/brotli-1.0.6-2.el8.ppc64le.rpm" + }, + "sha256:da9ced19708b900ccc4053ca3df8d58c081869b46c9ee801c1685f447a299731": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gnutls-3.6.14-3.el8.ppc64le.rpm" + }, + "sha256:dcf427833f63e4672ecf04100181b671235ae2b50d450a25976ea176ead363fb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sqlite-libs-3.26.0-10.el8.ppc64le.rpm" + }, + "sha256:ddd3be2e7e48c17085b756240d53a6b69a79ed82266cd4131c5459b2ee2a676d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.ppc64le.rpm" + }, + "sha256:df50c6f03ef2fa2d8f900a4a95d84921511b5e435533677f3067c1fd47f84b93": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/zlib-1.2.11-15.el8.ppc64le.rpm" + }, + "sha256:dfd1a319a66586bb1027b9a7a674f17b18070e3b389eb8dcd34ffad3ff485725": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/p11-kit-0.23.14-5.el8_0.ppc64le.rpm" + }, + "sha256:e02d721b2396471683a7f73d681ed4cc71bb2d50ef0e8390cc97ab047e4187a9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpwquality-1.4.0-9.el8.ppc64le.rpm" + }, + "sha256:e18d17088ddaf866d7b440041554461a3188d067fa417baf6f5b070c2f9cee30": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssh-server-8.0p1-5.el8.ppc64le.rpm" + }, + "sha256:e1c727c81c7d54b21ebf7346d81ea57bbf77cdee59efc2c1bd57d78b45697de6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsigsegv-2.11-5.el8.ppc64le.rpm" + }, + "sha256:e280c3b7c5bb7838c7956ea3605165ea35480cde85a617c1eff6ca64d6157fe9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/acl-2.2.53-1.el8.ppc64le.rpm" + }, + "sha256:e4dbbf5ba29de01b7121586f8bfc99305168d1db301ba121320344e344012704": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libuuid-2.32.1-24.el8.ppc64le.rpm" + }, + "sha256:e660d48e49bb3da5f5e8ad3e79b65184a95eeb4351b3f6d38e3024c332bbb570": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libdb-5.3.28-39.el8.ppc64le.rpm" + }, + "sha256:e6bdc7b1e5bb8b3c9d578fa1a88c4cbd3ff262b14857464a691b6afd34e38b90": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libtirpc-1.1.4-4.el8.ppc64le.rpm" + }, + "sha256:e773a81f7cba7beffb23d9ebb6ce545ba4b1556091544f73ff57d263cc552176": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pcre-8.42-4.el8.ppc64le.rpm" + }, + "sha256:e811b0abd14d296513d7900092e66d06736d42e46db06d06d845dcd260fbc665": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/diffutils-3.6-6.el8.ppc64le.rpm" + }, + "sha256:e820bcff2a4fb2de93e1e4d4b369964bbdc82e2f6fa77d41c3a8835a9becb909": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ima-evm-utils-1.1-5.el8.ppc64le.rpm" + }, + "sha256:e943b3e1fb71459be6ee74f944e7bcf6a0835858b48924501645eb00997b5d1b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/lz4-libs-1.8.3-2.el8.ppc64le.rpm" + }, + "sha256:e9d3adb5df960913105864554af0d17ac26287f7454c13865895cec93c57cc6c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/libxkbcommon-0.9.1-1.el8.ppc64le.rpm" + }, + "sha256:ea8d6dd8c5e592d79229541874e6c2521e456e0efa5386a1fde95a7ed93ee4bd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/hardlink-1.3-6.el8.ppc64le.rpm" + }, + "sha256:eb2cc86f4f01aa0ee86ec3a878ceac7eabe04ce5142f8a4b06e3f22cab002b75": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/file-libs-5.33-16.el8.ppc64le.rpm" + }, + "sha256:eb870676d56cd2212611a9814f6ab08b53a209d1bee37e38fdbc434b6a1600a1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libverto-0.3.0-5.el8.ppc64le.rpm" + }, + "sha256:ec450facea1c2a5dc1a6b5bacc2330dd5174780d92db66379f4918c2ab40da83": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-libdnf-0.48.0-2.el8.ppc64le.rpm" + }, + "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm" + }, + "sha256:ed5d642b5684142e9224449ffc26aeca810276b1182b66a391c2e276b988ae3c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-libs-1.12.8-11.el8.ppc64le.rpm" + }, + "sha256:eec4945093aa8b86e3c3a8ed629499ac3478be1e5f0a89d74178e277a7484750": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gettext-libs-0.19.8.1-17.el8.ppc64le.rpm" + }, + "sha256:eee41ee73236cba78a31ad3914a2f49f3d00abe114e752409d9ec07e50d2c48e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.ppc64le.rpm" + }, + "sha256:efb004153a5a6a96330b8a5371b02ce4dc22a8cf6d28f5b928cc443cf3416285": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/policycoreutils-2.9-9.el8.ppc64le.rpm" + }, + "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm" + }, + "sha256:f10990a6f2e8affe55991a46ca80eda2af8c0c8a4aada3b623ba740abfb059cf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/systemd-udev-239-36.el8.ppc64le.rpm" + }, + "sha256:f14b5f40e96ae727ce58c415295141645910311915d79d446403f68ff416ebad": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gettext-0.19.8.1-17.el8.ppc64le.rpm" + }, + "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm" + }, + "sha256:f3495aae115e7a02bc1d55465e699a6836116a0bd34bdb7eb992e2b878d4b584": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libarchive-3.3.2-9.el8.ppc64le.rpm" + }, + "sha256:f616e1d0db786c6a194f012f85fd534dd5aa84c19353dcfa8a5a13d8898bfc3d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cryptsetup-libs-2.3.3-1.el8.ppc64le.rpm" + }, + "sha256:f661a9f8dd567b4e47c6753f94a3c9497ded0ceb08ffabe8b279420d7e9f9f32": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-tools-extra-2.02-84.el8.ppc64le.rpm" + }, + "sha256:f6a005b8edb3f866d72ea95d3801930c3be8d75cdebadcf995b0d85300069840": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/chkconfig-1.13-2.el8.ppc64le.rpm" + }, + "sha256:f79f084807195110307640a0f6e3ecbce88cce070961ea19d68bdfafab3862fb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcom_err-1.45.6-1.el8.ppc64le.rpm" + }, + "sha256:f7cbcbe2816044bb92ca5066d88ac8c3b578a68eff16b2745d93c90483a5153f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-hawkey-0.48.0-2.el8.ppc64le.rpm" + }, + "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm" + }, + "sha256:f9607d29ed10edab125dba7a1972b0f783a0522eb29f03f825abbeb5281fbeeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcroco-0.6.12-4.el8.ppc64le.rpm" + }, + "sha256:f98a963e1bd233a65606e24dd2b941455e7233e6d9d0d07925f419c85be2bdc2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-tools-1.12.8-11.el8.ppc64le.rpm" + }, + "sha256:fabddaa901a0de98c661612755fbe4ebe4ac1ec372a5e0ec6b7874ef6901340f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pam-1.3.1-11.el8.ppc64le.rpm" + }, + "sha256:fb110b4fd708d68d41606e0120f5befbb171e6a9f8be2a23618284238fbf19dd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libfdisk-2.32.1-24.el8.ppc64le.rpm" + }, + "sha256:fc1ae52e3812c059032ad99f074e2a2019c6c005d5b31ea33365c301eb5d4a2d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/coreutils-common-8.30-8.el8.ppc64le.rpm" + }, + "sha256:fd5c2530f60be39592a9b1b7a65569d44f5bbb826db5e721d17e3cb9d6ffe41d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.ppc64le.rpm" + }, + "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm" + }, + "sha256:feac297c00956073e5f1f4465db8d66ee8498f67719e6dc0bf2b808b4d23523d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-tools-2.02-84.el8.ppc64le.rpm" + }, + "sha256:feee80d14e2857f2a229cfed7aea85b74b6f2350532816e824c09f356dc38126": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssl-libs-1.1.1g-9.el8.ppc64le.rpm" + }, + "sha256:fef4bb13fab5780f4f9c9d8962c7d15378c7128a69ab08244b1e520b295bf685": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libksba-1.3.5-7.el8.ppc64le.rpm" + }, + "sha256:ff355a15b36bb34bf2f0a8c4cf4b16347981c0c95e71ea7f3c125d01a33e57c7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/krb5-libs-1.18.2-3.el8.ppc64le.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:e280c3b7c5bb7838c7956ea3605165ea35480cde85a617c1eff6ca64d6157fe9" + }, + { + "checksum": "sha256:7c7df93f7b01587f4945ae4c69eec2af512ff4dfc83d8a36268c9238acd9aa71" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:3a5d1837798f980b89b6d635fe40f118cc871fac7638dcea3539d45e4e9f7985" + }, + { + "checksum": "sha256:d96bfcccbdce94af25721e3018a5853ff9670de828b6ac61ed76b5248a413e90" + }, + { + "checksum": "sha256:1d084e85f865a35f39067256c83f17a05632b531d9b6c5afb8cdecca1e594d62" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:f6a005b8edb3f866d72ea95d3801930c3be8d75cdebadcf995b0d85300069840" + }, + { + "checksum": "sha256:a6eed3ca128d562c0aed92a123d9d726cf8074df7f98c7ecef5c40257d5bc76e" + }, + { + "checksum": "sha256:fc1ae52e3812c059032ad99f074e2a2019c6c005d5b31ea33365c301eb5d4a2d" + }, + { + "checksum": "sha256:5d190a4742bc826edbe3d3dfb261c94688aca6e1bd0d431b58fc0feb9f40c1b5" + }, + { + "checksum": "sha256:03e586f573bb9a8a463215d194a6b2bceff16d67af096883df5bbcda0ca55076" + }, + { + "checksum": "sha256:13f54c6408ac37c8b4a24fb22af1a719d05d86206d1d4f979d71fad96ab7f319" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:f616e1d0db786c6a194f012f85fd534dd5aa84c19353dcfa8a5a13d8898bfc3d" + }, + { + "checksum": "sha256:20a994752f44f7f2c1c3df9850b5381be5b641c0ee913a80a794ca6c49ef7efb" + }, + { + "checksum": "sha256:eee41ee73236cba78a31ad3914a2f49f3d00abe114e752409d9ec07e50d2c48e" + }, + { + "checksum": "sha256:b490e452b2ba6ebb8980392cef4b7be06b9788ad4cfd37ce31c568d80b29861b" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:2af56bdac984d2755e44a4bc733df7217c1756aac3007dbca1408a218cc6c2b4" + }, + { + "checksum": "sha256:ed5d642b5684142e9224449ffc26aeca810276b1182b66a391c2e276b988ae3c" + }, + { + "checksum": "sha256:f98a963e1bd233a65606e24dd2b941455e7233e6d9d0d07925f419c85be2bdc2" + }, + { + "checksum": "sha256:ccc3640eff73677c4f962104b7a9fa6cb8c08787d77c4ba016569b0b11deb8f5" + }, + { + "checksum": "sha256:2edb7ade3d137c1373e8dcf1f765e62dabd7a86f256f2b8872baf1b4cd4a420b" + }, + { + "checksum": "sha256:e811b0abd14d296513d7900092e66d06736d42e46db06d06d845dcd260fbc665" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:72c17b5b06cb08a819da004e904d03ee23c1dfe86e0b29231cccc6f50d303ceb" + }, + { + "checksum": "sha256:12b368c93ec9e4282ee1aad905e336166aa6dd2519a9f53a1adc11b6fbc2095c" + }, + { + "checksum": "sha256:559de474c1dd617a53585eb4913da24181b4b52a4e579bd91c4fd280f5c7776f" + }, + { + "checksum": "sha256:299078646f29228e7f497925598b233024996dfaccaa96dcf62c1d14e30a7735" + }, + { + "checksum": "sha256:39acf20c2687b0c174c5961f88209b42b689ce866701f78bbb94bd875afd883e" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:3a65dd5868f303c775f48e7acef810cea2a606aec93496cae36c5e9eb9129650" + }, + { + "checksum": "sha256:b896a07208090c08a314e4f590ed8ee399f77ffc6a73864a11b4e9dcac234bba" + }, + { + "checksum": "sha256:40e937791b4b008d86cc82d0bd7564e55fa2b08c092b2a7dab0040876f790022" + }, + { + "checksum": "sha256:7e6bb03794258406bfee886f507934be08fe1d80a8643af028e631b37f9bcd4f" + }, + { + "checksum": "sha256:eb2cc86f4f01aa0ee86ec3a878ceac7eabe04ce5142f8a4b06e3f22cab002b75" + }, + { + "checksum": "sha256:b25a8c87220920855a25357cd27024b1b9b87fefa48e1e877f7e23d0e1954a1d" + }, + { + "checksum": "sha256:a48836542020c973d67ba459387dca8549d4d65749926eed8031f601b18a8738" + }, + { + "checksum": "sha256:96904dd00cb918042fa0492a244c9ffcd2609604adb639a4e41a75368967f2b0" + }, + { + "checksum": "sha256:17d887ffe27ba3dfd324bae27b0309c13b0b8430597fb65cb4b377416cc21cf3" + }, + { + "checksum": "sha256:2034236aa3ea2de19c9d9b717b83515a7a2e82685e8963d03fbb19973b20c249" + }, + { + "checksum": "sha256:75f6ee212b397466bbdc9320473ee2de0198b9573d3204a71422ef215e985e8d" + }, + { + "checksum": "sha256:81a30f2977dfa5ede4e3a4077c8590de94c2f6bc97c4968f7bb556c713169a99" + }, + { + "checksum": "sha256:f14b5f40e96ae727ce58c415295141645910311915d79d446403f68ff416ebad" + }, + { + "checksum": "sha256:eec4945093aa8b86e3c3a8ed629499ac3478be1e5f0a89d74178e277a7484750" + }, + { + "checksum": "sha256:d0bdb653ebfa5cc5a596157434e50d544ad176bd6c3869896be0aa5996199771" + }, + { + "checksum": "sha256:ca164a41ad98cbc73c23259bb112bbd04162bb363b596a3c99eac02182a01d26" + }, + { + "checksum": "sha256:c58f71151ec41a8da17f8d5a45364e6c85cb3fe149993047ac9ef4b5aecd1fff" + }, + { + "checksum": "sha256:8c8e8e8db16ef828278de55cefb09425a83079597a093f93e6261fd5bd027406" + }, + { + "checksum": "sha256:5009afc9241f592691ce9097fb74dabba84b1d2eaf267a7bea71b33bc7ac3795" + }, + { + "checksum": "sha256:350d1a6728391907db3ef0ec69b80837d145e39b0cf86a36161432f587dc3308" + }, + { + "checksum": "sha256:5896adabcbefa7b297052fd9687b51a9eefe883c91f71e7be71a9200188757d1" + }, + { + "checksum": "sha256:da9ced19708b900ccc4053ca3df8d58c081869b46c9ee801c1685f447a299731" + }, + { + "checksum": "sha256:715dbe24d12d9fe43a6efa804dedb3e50e5babed510073b838b6e42ec06d5b8b" + }, + { + "checksum": "sha256:5246dc8c3bae5d860cb5ca12d787e976c3ca70bc3d023350eabc8a9e88601058" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:2c3aeeee40861bf0576cfccb8a1d7fbf5948dd60e1c97d2354b8d4dbe34247e8" + }, + { + "checksum": "sha256:ce85ea9b2eb4d1e2ae94136168cda2bb768fe995ca09620615c1e69b8b0d6bfb" + }, + { + "checksum": "sha256:feac297c00956073e5f1f4465db8d66ee8498f67719e6dc0bf2b808b4d23523d" + }, + { + "checksum": "sha256:f661a9f8dd567b4e47c6753f94a3c9497ded0ceb08ffabe8b279420d7e9f9f32" + }, + { + "checksum": "sha256:05421657115297a907645ca4536e8d81e82da116f20053541f8c1e71d62977a6" + }, + { + "checksum": "sha256:16ba1aa8c5db466e4288412bfedf01be75918b4cece328bdf8ebe590a845d490" + }, + { + "checksum": "sha256:7f2af219510f9bb8c70beea8c1bbfcdf3d84f9c96ebf28fe84c8bac20f4516e3" + }, + { + "checksum": "sha256:ea8d6dd8c5e592d79229541874e6c2521e456e0efa5386a1fde95a7ed93ee4bd" + }, + { + "checksum": "sha256:e820bcff2a4fb2de93e1e4d4b369964bbdc82e2f6fa77d41c3a8835a9becb909" + }, + { + "checksum": "sha256:0c706e235cd737512024bbc99a6fcbca41a9898c13a4ae11797514ac99a16839" + }, + { + "checksum": "sha256:7ddfb571e9fe4183721b20fc063c9b0fc1797b2cc5c7d0e677edce583d72c0c5" + }, + { + "checksum": "sha256:56dc429cc3404a69f5d72338303a615fdbb16380688c93a4a7e13ecd773a80f2" + }, + { + "checksum": "sha256:ba5ed56f4798d522c6ba041f841617e9362a33b41eee1794214d85eb3bd3fa53" + }, + { + "checksum": "sha256:7519682fc74640736910735ce7b0f3a4ca6deed6d6e365d1cff47f8412519a13" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:76ed4d1820916e1d4d5ba12a9200b790fc75f2801937d63753fca7e12b6c9d6e" + }, + { + "checksum": "sha256:16744c34b4e5d937388ea1169160dff7ac02692884d90c87b730ba0f9964476d" + }, + { + "checksum": "sha256:5a67ae309abe3ef1d6dc326a373abc5791d4264b657fa2e3e15be334fb1baa1d" + }, + { + "checksum": "sha256:cb77a2c9467e5873cf21f429069da709089dc10062c4d927d9e59eca0aac2546" + }, + { + "checksum": "sha256:ff355a15b36bb34bf2f0a8c4cf4b16347981c0c95e71ea7f3c125d01a33e57c7" + }, + { + "checksum": "sha256:68269d4f3588a15e94360c9d0f595d0ad7f1ece27968162ac42468acd462e526" + }, + { + "checksum": "sha256:3d425b214eeb598d59e4891ee3f5b0c941ff4755790907588309b431c1482195" + }, + { + "checksum": "sha256:f3495aae115e7a02bc1d55465e699a6836116a0bd34bdb7eb992e2b878d4b584" + }, + { + "checksum": "sha256:32fc4d89fa8040aa8a180717305eb2c7a7094ad255cdb66fd7af2254fa89a5c8" + }, + { + "checksum": "sha256:58a7c06351efae8f3b1bff3b4832ed02ebc9f1018d6978b1703c6e963f26db98" + }, + { + "checksum": "sha256:b56bf1fc0c0818069d8833845e90c629215abbc8bce652c52cf077dcc224be34" + }, + { + "checksum": "sha256:7676c7a3f92aedec71efad68ce95c1ba5362b7bb75a815b70174a96a2126cebe" + }, + { + "checksum": "sha256:39fec51b4b40aef643f68f41cca660bce59c5fbb360bcedceec04c17cafd17e6" + }, + { + "checksum": "sha256:f79f084807195110307640a0f6e3ecbce88cce070961ea19d68bdfafab3862fb" + }, + { + "checksum": "sha256:56a66127f50af442a8bbd3183c29d39d4b1825526dd134405ecea82839ccca23" + }, + { + "checksum": "sha256:f9607d29ed10edab125dba7a1972b0f783a0522eb29f03f825abbeb5281fbeeb" + }, + { + "checksum": "sha256:2c1a643202117f9bdf48b11c24b60a01c409f2ccdc43914a89ac980f7d692ae6" + }, + { + "checksum": "sha256:e660d48e49bb3da5f5e8ad3e79b65184a95eeb4351b3f6d38e3024c332bbb570" + }, + { + "checksum": "sha256:6b0cfe88a81e314afa03ce297f2bb0470a29a8f13465ba4a52fc65550027cbda" + }, + { + "checksum": "sha256:79d49c7e1c6bde0467649271fb45928a313c5a8cad3c0855d3cae9277e9b474c" + }, + { + "checksum": "sha256:50f00be9540e2ab1e81f955e9ad33ecbb24ba6538ddccf418ad00ebfeb1fe472" + }, + { + "checksum": "sha256:fb110b4fd708d68d41606e0120f5befbb171e6a9f8be2a23618284238fbf19dd" + }, + { + "checksum": "sha256:d20bcdcb1e6a8d16a5df9cdc99744f907516b9ded51b671bd0a0f31189ac43a5" + }, + { + "checksum": "sha256:1a92ddb2b7caa477d02eadcd97b1f4fb124359609dc827dfedb7de0976ebf824" + }, + { + "checksum": "sha256:4f2725db0dc03a8bb729ccf6ced8fc4e8eae995afa7029decb7a7aa81e6eb417" + }, + { + "checksum": "sha256:6b6b362f865498d59d17673d93fabe076015e7804462412e3da589335890f8d9" + }, + { + "checksum": "sha256:69997f597de86de2dedda20db0f5b516585751822162f4dacd01cbc2808a9155" + }, + { + "checksum": "sha256:7221e9c72741e31d3e954cae6a1b780b15da86abb70d6fdf3c125b1a440ce2b2" + }, + { + "checksum": "sha256:d4fff4e2707628db04c16a2cd8fa0c5e9854084688acf74ca4c1db27ea9d2f8d" + }, + { + "checksum": "sha256:4a44b9e5e7977128528c4108ef55d49e52290c51d376c6ffd177a6b59113fbf6" + }, + { + "checksum": "sha256:fef4bb13fab5780f4f9c9d8962c7d15378c7128a69ab08244b1e520b295bf685" + }, + { + "checksum": "sha256:5ea0604f773c0ae0e273206443a5f115e21010e8acb1d580a22e5ce0219ac991" + }, + { + "checksum": "sha256:23b438c52f920e7d3870031673412e81e1edc12c427e64e204ba6620df4401b7" + }, + { + "checksum": "sha256:03318129f3b75d57abb1f15adf1ddc26c23fc178432c66b5ffc43e586c948428" + }, + { + "checksum": "sha256:530f8aa49c10d80202e2b3e2c2b505dbdcdc2c3b56231d5986b6388da3ffd12b" + }, + { + "checksum": "sha256:7c458f0dfbd31662e5a8a91b847881dfba6ff04786bc21e7de230236ce8ffaa7" + }, + { + "checksum": "sha256:9f526c50ff9fae2f6c1d02eb10b6ced74b3ee94e7292e7ad483076ab730c1eef" + }, + { + "checksum": "sha256:d42e36ab818d9284eb5fb9d46a0af71d99b91d917b3fdf1ac9af3ebd473606f1" + }, + { + "checksum": "sha256:95971777d5b9af4cc37788f0b9193c693de7dc2f0f842f341a5d2182af4edb24" + }, + { + "checksum": "sha256:e02d721b2396471683a7f73d681ed4cc71bb2d50ef0e8390cc97ab047e4187a9" + }, + { + "checksum": "sha256:278dffe93fc19fd1613a9ab8d61c87a755e68120163d5a1352368b68f3880074" + }, + { + "checksum": "sha256:7c526e6c9e22ba9fbd88da30824a4791c87f3da890426890be3a72f2ebf7f0c8" + }, + { + "checksum": "sha256:08af4dc49ee9fbef7b2b6320da7809a952fa5d4bb907e546aa2a74827dcd7390" + }, + { + "checksum": "sha256:94b8f8ce9926a60524cba62e9695785bf12f3ca7f6de86cbcb510889e9e61509" + }, + { + "checksum": "sha256:93e8eb519fee69ad0a90733dea8577670a1c62f02fce9348633880e0d9190f4b" + }, + { + "checksum": "sha256:485ef6f1f8b26b7bf4c1ae8ee8ae7bda9ff679aa0fc9e62d1ff990a54e0e559d" + }, + { + "checksum": "sha256:a5fcf3d4d064289bd04a9f19cc204c8facaf389c0c10e47b075529f0601dc02c" + }, + { + "checksum": "sha256:d07a535fd49579414267571a6e7286d38061e65dcffd1f947e32b8edeb0e7f58" + }, + { + "checksum": "sha256:6cc8c3ff2b465defb9ac46a2caf95d53c887d18f68bd43f21e6e3635b884d6ab" + }, + { + "checksum": "sha256:4e4dc28e98b8470dfbb789d784b8bc5afc04dc7295047d2ee16d36ab4dbaba1d" + }, + { + "checksum": "sha256:e1c727c81c7d54b21ebf7346d81ea57bbf77cdee59efc2c1bd57d78b45697de6" + }, + { + "checksum": "sha256:9bdf8e5f329b54f1ea45a5d5277d650be84f7bd2f1570d7c5e7ac743fd57cf1f" + }, + { + "checksum": "sha256:d3d600e075b60b1462bc5f2cf7319ad484a416739175aaacf384a5805749861c" + }, + { + "checksum": "sha256:86ae5e445a80e4485162e6f24fcf6df539fa7d1d31650755d4d5af5d65ec2b88" + }, + { + "checksum": "sha256:8ec9594f8cb1eb3313cb8979201b0f85a914107fc4f706ea27727e977da056ee" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:36ccdb1a1673d3f739a29105edc45c09074ec667cc470051c2d9c52bfa6b78b0" + }, + { + "checksum": "sha256:97ffad7f79927ee908510ae381ada704827d369b5a0b8715214f51270a0984d3" + }, + { + "checksum": "sha256:e6bdc7b1e5bb8b3c9d578fa1a88c4cbd3ff262b14857464a691b6afd34e38b90" + }, + { + "checksum": "sha256:a7db88e037715eb0ea86ffa464285615549b23178a14d691935685bdb6df4742" + }, + { + "checksum": "sha256:18b66eb926d6554fdfa6c6464c301d906d63ec69f54ac318cf0a5e7cccf43d2e" + }, + { + "checksum": "sha256:349d5e65aeee405ea53d10c651d541418f11af4bf5f436ab5cba8c07183f405e" + }, + { + "checksum": "sha256:e4dbbf5ba29de01b7121586f8bfc99305168d1db301ba121320344e344012704" + }, + { + "checksum": "sha256:eb870676d56cd2212611a9814f6ab08b53a209d1bee37e38fdbc434b6a1600a1" + }, + { + "checksum": "sha256:81ca20194dbba8bb696a02f1f01d45b1ca73aa38a18d97173022fcf96e195156" + }, + { + "checksum": "sha256:679ba7cf5974aaeb4b50a926e8fa28821f48b71c182d50b1033bccb6fdc34a06" + }, + { + "checksum": "sha256:9f1810ee304c2827027a4dadb0142f6940c28991b5371cbe302593eece6c25e4" + }, + { + "checksum": "sha256:0143da5903a3053bbd62714904db5a7c1aba3b9ff77c97d9126a4479d3047c58" + }, + { + "checksum": "sha256:756fe3065871f2c7c1f9635ae75119d1755dbb6a5ea62fae7660b410d9392e34" + }, + { + "checksum": "sha256:e943b3e1fb71459be6ee74f944e7bcf6a0835858b48924501645eb00997b5d1b" + }, + { + "checksum": "sha256:d3c4038a7a3be6987f74236394642be84092a9dd731317dfe5974af757c3ccfc" + }, + { + "checksum": "sha256:7d7280d0de03be269a1b078534d286496085416efef921996590bcce7db64736" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:bcd9e55362d6afab44a89acd877c8c0a8ae27572028bfc9282f3bfec0d21e27c" + }, + { + "checksum": "sha256:68c10fbde60ad63306c334df256056bc93eb04d56eaba5ddc40254e81e815056" + }, + { + "checksum": "sha256:4538fb52ec654977ccaf56d0fc26b491f4cdda58e8070f5922165ac77104857c" + }, + { + "checksum": "sha256:1130c50d23d464653fbca78aa597b1c65d22c9163c70cf3011a9a116af76bbca" + }, + { + "checksum": "sha256:b1184fa6ab84322f715418f76a8e260c6a6bb352307cce9732d72ed3f0ebdec0" + }, + { + "checksum": "sha256:feee80d14e2857f2a229cfed7aea85b74b6f2350532816e824c09f356dc38126" + }, + { + "checksum": "sha256:0ecb10a5141fd74ad9165fef9dd7d9485a34ea1b10605a9d4b61eefe60b767d9" + }, + { + "checksum": "sha256:0970bde39d7cc1dfebda51e4359f63821fe8dd573d46253fc471f8466c79ac82" + }, + { + "checksum": "sha256:dfd1a319a66586bb1027b9a7a674f17b18070e3b389eb8dcd34ffad3ff485725" + }, + { + "checksum": "sha256:7f3337d8024c8eb5d67ed830c2ed1c5b046887d4806ea22cf6e8f3f77b8d7e6f" + }, + { + "checksum": "sha256:fabddaa901a0de98c661612755fbe4ebe4ac1ec372a5e0ec6b7874ef6901340f" + }, + { + "checksum": "sha256:e773a81f7cba7beffb23d9ebb6ce545ba4b1556091544f73ff57d263cc552176" + }, + { + "checksum": "sha256:d79c92d015fa952edf2a4ad75f95042139fbf8b4323f24e939e1ed06481253d9" + }, + { + "checksum": "sha256:d8b5b571fb84c7ccfa24f8a20460471d41fc4487d6d0c34f91fbeaba4c857eb2" + }, + { + "checksum": "sha256:704622626b2938eee1c096c1ecf1e5fc88be4e4eac80a911d0c2ee893f9657b1" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:efb004153a5a6a96330b8a5371b02ce4dc22a8cf6d28f5b928cc443cf3416285" + }, + { + "checksum": "sha256:bbfd0c8d360ae86528c2d06b6b64ceb2d6a974dea101ba5e1268740b689142b9" + }, + { + "checksum": "sha256:ccd0b65f90f2db606a9b38f00c71f5bcd7611fafde92e185a57d3e2a3f027787" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:6501a0edf570ea01137395ff13cdbc3914dee9e536ab92ff9698a5ddd76dfb16" + }, + { + "checksum": "sha256:f7cbcbe2816044bb92ca5066d88ac8c3b578a68eff16b2745d93c90483a5153f" + }, + { + "checksum": "sha256:0396d12973b68a7d16074aa51f75e706c0b7558cd24d32e5573c49a487b2497c" + }, + { + "checksum": "sha256:ec450facea1c2a5dc1a6b5bacc2330dd5174780d92db66379f4918c2ab40da83" + }, + { + "checksum": "sha256:495c3fc6f15c5daef8686fd01d1f7008bbc72ca9c963da1ae3cf60ffc519f48d" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:8ac41d38c793722177492319ae57588ae2619962c8442e64aecc4b6708295707" + }, + { + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:d8ba6a91610d87dfb599018c887514af663a0f963ed6b25a83bac8fba56fa266" + }, + { + "checksum": "sha256:16294bc45d609de6ce07b660fadc851022e43d00a13f3c98c1f45064abf591d7" + }, + { + "checksum": "sha256:b2d090246903da9162c06912dcfed747df9e7ba1b9f029a98c96c4155f68ce67" + }, + { + "checksum": "sha256:ba5b6364787be1ce76c7d5d3f7861f75157db6c5354f4b6e7b26ba8962fb226d" + }, + { + "checksum": "sha256:3ab5aad8b10e5343c08af8c24775334b6111cd50fb9629f21335626057c7dab9" + }, + { + "checksum": "sha256:acdee02b0e12502f5010ebfeb9d3cec41172e83db45a5e941085a8edba1bd408" + }, + { + "checksum": "sha256:5919c5de67dbc1f44a553cbb4037572c258bb394ff27ca838b2198d05a0c2dad" + }, + { + "checksum": "sha256:54b3552112a26b7ad79db1251bc0e8e0415ac60da299d54700c5bc59760e5be9" + }, + { + "checksum": "sha256:183ae7a707951036dd77805d75aae1dbb055ca52d8fecdc6ef21d5e1518fca4d" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:94700eed0bd231ee73fac06e38ce66573466039c0454774bf268ea50a03fe056" + }, + { + "checksum": "sha256:d2206467c216ee77262401385a61b540eeaabca9a44b9ab864c993962ba76758" + }, + { + "checksum": "sha256:dcf427833f63e4672ecf04100181b671235ae2b50d450a25976ea176ead363fb" + }, + { + "checksum": "sha256:97e8ec14c0569aee6633342fd3b05507b8c30c9d62b52aff0c3e693640d78938" + }, + { + "checksum": "sha256:be5a5ad0d3338da31fca41645852b03c748c41e77bd715619033f71496f3c875" + }, + { + "checksum": "sha256:b9a80c6b1e8bff298ad6215248ce9d193d734dc038f1de211c01a2e118b9606f" + }, + { + "checksum": "sha256:f10990a6f2e8affe55991a46ca80eda2af8c0c8a4aada3b623ba740abfb059cf" + }, + { + "checksum": "sha256:2081809fd42c6cefcf677362a825c38b166f04df8edf865d5d6404348179e536" + }, + { + "checksum": "sha256:d55a783930503e7f1590bc2ad10d9fa184ed3cb44e2ca85ae2bbe11fcbf166b8" + }, + { + "checksum": "sha256:3f5c97c72cbbe552e9f7183d1f8eb477a3f46647bb513a175a8c158d3eba3dee" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:7a05e800e37b4aa74e657a829097090faf013338056c8bd6ebfeee5ae4467a22" + }, + { + "checksum": "sha256:241a563df5ae3b3b49d45cbf9e67b6932b8345b3fbb40029dbb3b0834cf3db16" + }, + { + "checksum": "sha256:87209220ec94795ac0e079e98877a4f911beaee3a829bf95cda5a8b24b545a94" + }, + { + "checksum": "sha256:2b2e0d9a397d27c7076f05ab309c71ebffdf2c33df95de51c700af181899c87e" + }, + { + "checksum": "sha256:37e4f7e854765b98e8dd10986b758631c7ca00942bc53efb4003ee326e1cc834" + }, + { + "checksum": "sha256:df50c6f03ef2fa2d8f900a4a95d84921511b5e435533677f3067c1fd47f84b93" + }, + { + "checksum": "sha256:e9d3adb5df960913105864554af0d17ac26287f7454c13865895cec93c57cc6c" + }, + { + "checksum": "sha256:d863808793a34bae10d7bf066b68be37883eb38cf117172de5e47c9eb729cb3d" + }, + { + "checksum": "sha256:b64080283110b2e23a184787ccd14eca6994c321cf4be9cb16205cfda1ab5d89" + }, + { + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "checksum": "sha256:a07b21bf156e4a15c566506eb5f5b9e9c7087a58c471c004f53d4eae1bce90e3" + }, + { + "checksum": "sha256:fd5c2530f60be39592a9b1b7a65569d44f5bbb826db5e721d17e3cb9d6ffe41d" + }, + { + "checksum": "sha256:ddd3be2e7e48c17085b756240d53a6b69a79ed82266cd4131c5459b2ee2a676d" + }, + { + "checksum": "sha256:744a6f8d1acf3c49b77e0f96217a6bae3d7dba6228a16676be21b7332adf9f43" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ] + }, + "runner": "org.osbuild.rhel82" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:e280c3b7c5bb7838c7956ea3605165ea35480cde85a617c1eff6ca64d6157fe9" + }, + { + "checksum": "sha256:7c7df93f7b01587f4945ae4c69eec2af512ff4dfc83d8a36268c9238acd9aa71" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:3a5d1837798f980b89b6d635fe40f118cc871fac7638dcea3539d45e4e9f7985" + }, + { + "checksum": "sha256:d96bfcccbdce94af25721e3018a5853ff9670de828b6ac61ed76b5248a413e90" + }, + { + "checksum": "sha256:1d084e85f865a35f39067256c83f17a05632b531d9b6c5afb8cdecca1e594d62" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:f6a005b8edb3f866d72ea95d3801930c3be8d75cdebadcf995b0d85300069840" + }, + { + "checksum": "sha256:a6eed3ca128d562c0aed92a123d9d726cf8074df7f98c7ecef5c40257d5bc76e" + }, + { + "checksum": "sha256:fc1ae52e3812c059032ad99f074e2a2019c6c005d5b31ea33365c301eb5d4a2d" + }, + { + "checksum": "sha256:5d190a4742bc826edbe3d3dfb261c94688aca6e1bd0d431b58fc0feb9f40c1b5" + }, + { + "checksum": "sha256:03e586f573bb9a8a463215d194a6b2bceff16d67af096883df5bbcda0ca55076" + }, + { + "checksum": "sha256:13f54c6408ac37c8b4a24fb22af1a719d05d86206d1d4f979d71fad96ab7f319" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:f616e1d0db786c6a194f012f85fd534dd5aa84c19353dcfa8a5a13d8898bfc3d" + }, + { + "checksum": "sha256:20a994752f44f7f2c1c3df9850b5381be5b641c0ee913a80a794ca6c49ef7efb" + }, + { + "checksum": "sha256:eee41ee73236cba78a31ad3914a2f49f3d00abe114e752409d9ec07e50d2c48e" + }, + { + "checksum": "sha256:b490e452b2ba6ebb8980392cef4b7be06b9788ad4cfd37ce31c568d80b29861b" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:2af56bdac984d2755e44a4bc733df7217c1756aac3007dbca1408a218cc6c2b4" + }, + { + "checksum": "sha256:ed5d642b5684142e9224449ffc26aeca810276b1182b66a391c2e276b988ae3c" + }, + { + "checksum": "sha256:f98a963e1bd233a65606e24dd2b941455e7233e6d9d0d07925f419c85be2bdc2" + }, + { + "checksum": "sha256:ccc3640eff73677c4f962104b7a9fa6cb8c08787d77c4ba016569b0b11deb8f5" + }, + { + "checksum": "sha256:2edb7ade3d137c1373e8dcf1f765e62dabd7a86f256f2b8872baf1b4cd4a420b" + }, + { + "checksum": "sha256:e811b0abd14d296513d7900092e66d06736d42e46db06d06d845dcd260fbc665" + }, + { + "checksum": "sha256:12b368c93ec9e4282ee1aad905e336166aa6dd2519a9f53a1adc11b6fbc2095c" + }, + { + "checksum": "sha256:39acf20c2687b0c174c5961f88209b42b689ce866701f78bbb94bd875afd883e" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:3a65dd5868f303c775f48e7acef810cea2a606aec93496cae36c5e9eb9129650" + }, + { + "checksum": "sha256:b896a07208090c08a314e4f590ed8ee399f77ffc6a73864a11b4e9dcac234bba" + }, + { + "checksum": "sha256:40e937791b4b008d86cc82d0bd7564e55fa2b08c092b2a7dab0040876f790022" + }, + { + "checksum": "sha256:7e6bb03794258406bfee886f507934be08fe1d80a8643af028e631b37f9bcd4f" + }, + { + "checksum": "sha256:eb2cc86f4f01aa0ee86ec3a878ceac7eabe04ce5142f8a4b06e3f22cab002b75" + }, + { + "checksum": "sha256:b25a8c87220920855a25357cd27024b1b9b87fefa48e1e877f7e23d0e1954a1d" + }, + { + "checksum": "sha256:a48836542020c973d67ba459387dca8549d4d65749926eed8031f601b18a8738" + }, + { + "checksum": "sha256:2034236aa3ea2de19c9d9b717b83515a7a2e82685e8963d03fbb19973b20c249" + }, + { + "checksum": "sha256:75f6ee212b397466bbdc9320473ee2de0198b9573d3204a71422ef215e985e8d" + }, + { + "checksum": "sha256:81a30f2977dfa5ede4e3a4077c8590de94c2f6bc97c4968f7bb556c713169a99" + }, + { + "checksum": "sha256:f14b5f40e96ae727ce58c415295141645910311915d79d446403f68ff416ebad" + }, + { + "checksum": "sha256:eec4945093aa8b86e3c3a8ed629499ac3478be1e5f0a89d74178e277a7484750" + }, + { + "checksum": "sha256:d0bdb653ebfa5cc5a596157434e50d544ad176bd6c3869896be0aa5996199771" + }, + { + "checksum": "sha256:ca164a41ad98cbc73c23259bb112bbd04162bb363b596a3c99eac02182a01d26" + }, + { + "checksum": "sha256:c58f71151ec41a8da17f8d5a45364e6c85cb3fe149993047ac9ef4b5aecd1fff" + }, + { + "checksum": "sha256:8c8e8e8db16ef828278de55cefb09425a83079597a093f93e6261fd5bd027406" + }, + { + "checksum": "sha256:5009afc9241f592691ce9097fb74dabba84b1d2eaf267a7bea71b33bc7ac3795" + }, + { + "checksum": "sha256:da9ced19708b900ccc4053ca3df8d58c081869b46c9ee801c1685f447a299731" + }, + { + "checksum": "sha256:5246dc8c3bae5d860cb5ca12d787e976c3ca70bc3d023350eabc8a9e88601058" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:feac297c00956073e5f1f4465db8d66ee8498f67719e6dc0bf2b808b4d23523d" + }, + { + "checksum": "sha256:05421657115297a907645ca4536e8d81e82da116f20053541f8c1e71d62977a6" + }, + { + "checksum": "sha256:16ba1aa8c5db466e4288412bfedf01be75918b4cece328bdf8ebe590a845d490" + }, + { + "checksum": "sha256:7f2af219510f9bb8c70beea8c1bbfcdf3d84f9c96ebf28fe84c8bac20f4516e3" + }, + { + "checksum": "sha256:ea8d6dd8c5e592d79229541874e6c2521e456e0efa5386a1fde95a7ed93ee4bd" + }, + { + "checksum": "sha256:0c706e235cd737512024bbc99a6fcbca41a9898c13a4ae11797514ac99a16839" + }, + { + "checksum": "sha256:7ddfb571e9fe4183721b20fc063c9b0fc1797b2cc5c7d0e677edce583d72c0c5" + }, + { + "checksum": "sha256:56dc429cc3404a69f5d72338303a615fdbb16380688c93a4a7e13ecd773a80f2" + }, + { + "checksum": "sha256:7519682fc74640736910735ce7b0f3a4ca6deed6d6e365d1cff47f8412519a13" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:76ed4d1820916e1d4d5ba12a9200b790fc75f2801937d63753fca7e12b6c9d6e" + }, + { + "checksum": "sha256:16744c34b4e5d937388ea1169160dff7ac02692884d90c87b730ba0f9964476d" + }, + { + "checksum": "sha256:5a67ae309abe3ef1d6dc326a373abc5791d4264b657fa2e3e15be334fb1baa1d" + }, + { + "checksum": "sha256:cb77a2c9467e5873cf21f429069da709089dc10062c4d927d9e59eca0aac2546" + }, + { + "checksum": "sha256:ff355a15b36bb34bf2f0a8c4cf4b16347981c0c95e71ea7f3c125d01a33e57c7" + }, + { + "checksum": "sha256:68269d4f3588a15e94360c9d0f595d0ad7f1ece27968162ac42468acd462e526" + }, + { + "checksum": "sha256:f3495aae115e7a02bc1d55465e699a6836116a0bd34bdb7eb992e2b878d4b584" + }, + { + "checksum": "sha256:58a7c06351efae8f3b1bff3b4832ed02ebc9f1018d6978b1703c6e963f26db98" + }, + { + "checksum": "sha256:b56bf1fc0c0818069d8833845e90c629215abbc8bce652c52cf077dcc224be34" + }, + { + "checksum": "sha256:7676c7a3f92aedec71efad68ce95c1ba5362b7bb75a815b70174a96a2126cebe" + }, + { + "checksum": "sha256:39fec51b4b40aef643f68f41cca660bce59c5fbb360bcedceec04c17cafd17e6" + }, + { + "checksum": "sha256:f79f084807195110307640a0f6e3ecbce88cce070961ea19d68bdfafab3862fb" + }, + { + "checksum": "sha256:f9607d29ed10edab125dba7a1972b0f783a0522eb29f03f825abbeb5281fbeeb" + }, + { + "checksum": "sha256:2c1a643202117f9bdf48b11c24b60a01c409f2ccdc43914a89ac980f7d692ae6" + }, + { + "checksum": "sha256:e660d48e49bb3da5f5e8ad3e79b65184a95eeb4351b3f6d38e3024c332bbb570" + }, + { + "checksum": "sha256:6b0cfe88a81e314afa03ce297f2bb0470a29a8f13465ba4a52fc65550027cbda" + }, + { + "checksum": "sha256:fb110b4fd708d68d41606e0120f5befbb171e6a9f8be2a23618284238fbf19dd" + }, + { + "checksum": "sha256:d20bcdcb1e6a8d16a5df9cdc99744f907516b9ded51b671bd0a0f31189ac43a5" + }, + { + "checksum": "sha256:1a92ddb2b7caa477d02eadcd97b1f4fb124359609dc827dfedb7de0976ebf824" + }, + { + "checksum": "sha256:4f2725db0dc03a8bb729ccf6ced8fc4e8eae995afa7029decb7a7aa81e6eb417" + }, + { + "checksum": "sha256:6b6b362f865498d59d17673d93fabe076015e7804462412e3da589335890f8d9" + }, + { + "checksum": "sha256:69997f597de86de2dedda20db0f5b516585751822162f4dacd01cbc2808a9155" + }, + { + "checksum": "sha256:7221e9c72741e31d3e954cae6a1b780b15da86abb70d6fdf3c125b1a440ce2b2" + }, + { + "checksum": "sha256:d4fff4e2707628db04c16a2cd8fa0c5e9854084688acf74ca4c1db27ea9d2f8d" + }, + { + "checksum": "sha256:4a44b9e5e7977128528c4108ef55d49e52290c51d376c6ffd177a6b59113fbf6" + }, + { + "checksum": "sha256:5ea0604f773c0ae0e273206443a5f115e21010e8acb1d580a22e5ce0219ac991" + }, + { + "checksum": "sha256:03318129f3b75d57abb1f15adf1ddc26c23fc178432c66b5ffc43e586c948428" + }, + { + "checksum": "sha256:530f8aa49c10d80202e2b3e2c2b505dbdcdc2c3b56231d5986b6388da3ffd12b" + }, + { + "checksum": "sha256:7c458f0dfbd31662e5a8a91b847881dfba6ff04786bc21e7de230236ce8ffaa7" + }, + { + "checksum": "sha256:9f526c50ff9fae2f6c1d02eb10b6ced74b3ee94e7292e7ad483076ab730c1eef" + }, + { + "checksum": "sha256:95971777d5b9af4cc37788f0b9193c693de7dc2f0f842f341a5d2182af4edb24" + }, + { + "checksum": "sha256:e02d721b2396471683a7f73d681ed4cc71bb2d50ef0e8390cc97ab047e4187a9" + }, + { + "checksum": "sha256:94b8f8ce9926a60524cba62e9695785bf12f3ca7f6de86cbcb510889e9e61509" + }, + { + "checksum": "sha256:93e8eb519fee69ad0a90733dea8577670a1c62f02fce9348633880e0d9190f4b" + }, + { + "checksum": "sha256:a5fcf3d4d064289bd04a9f19cc204c8facaf389c0c10e47b075529f0601dc02c" + }, + { + "checksum": "sha256:d07a535fd49579414267571a6e7286d38061e65dcffd1f947e32b8edeb0e7f58" + }, + { + "checksum": "sha256:6cc8c3ff2b465defb9ac46a2caf95d53c887d18f68bd43f21e6e3635b884d6ab" + }, + { + "checksum": "sha256:4e4dc28e98b8470dfbb789d784b8bc5afc04dc7295047d2ee16d36ab4dbaba1d" + }, + { + "checksum": "sha256:e1c727c81c7d54b21ebf7346d81ea57bbf77cdee59efc2c1bd57d78b45697de6" + }, + { + "checksum": "sha256:9bdf8e5f329b54f1ea45a5d5277d650be84f7bd2f1570d7c5e7ac743fd57cf1f" + }, + { + "checksum": "sha256:8ec9594f8cb1eb3313cb8979201b0f85a914107fc4f706ea27727e977da056ee" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:36ccdb1a1673d3f739a29105edc45c09074ec667cc470051c2d9c52bfa6b78b0" + }, + { + "checksum": "sha256:97ffad7f79927ee908510ae381ada704827d369b5a0b8715214f51270a0984d3" + }, + { + "checksum": "sha256:e6bdc7b1e5bb8b3c9d578fa1a88c4cbd3ff262b14857464a691b6afd34e38b90" + }, + { + "checksum": "sha256:a7db88e037715eb0ea86ffa464285615549b23178a14d691935685bdb6df4742" + }, + { + "checksum": "sha256:349d5e65aeee405ea53d10c651d541418f11af4bf5f436ab5cba8c07183f405e" + }, + { + "checksum": "sha256:e4dbbf5ba29de01b7121586f8bfc99305168d1db301ba121320344e344012704" + }, + { + "checksum": "sha256:eb870676d56cd2212611a9814f6ab08b53a209d1bee37e38fdbc434b6a1600a1" + }, + { + "checksum": "sha256:81ca20194dbba8bb696a02f1f01d45b1ca73aa38a18d97173022fcf96e195156" + }, + { + "checksum": "sha256:679ba7cf5974aaeb4b50a926e8fa28821f48b71c182d50b1033bccb6fdc34a06" + }, + { + "checksum": "sha256:0143da5903a3053bbd62714904db5a7c1aba3b9ff77c97d9126a4479d3047c58" + }, + { + "checksum": "sha256:756fe3065871f2c7c1f9635ae75119d1755dbb6a5ea62fae7660b410d9392e34" + }, + { + "checksum": "sha256:e943b3e1fb71459be6ee74f944e7bcf6a0835858b48924501645eb00997b5d1b" + }, + { + "checksum": "sha256:d3c4038a7a3be6987f74236394642be84092a9dd731317dfe5974af757c3ccfc" + }, + { + "checksum": "sha256:7d7280d0de03be269a1b078534d286496085416efef921996590bcce7db64736" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:bcd9e55362d6afab44a89acd877c8c0a8ae27572028bfc9282f3bfec0d21e27c" + }, + { + "checksum": "sha256:68c10fbde60ad63306c334df256056bc93eb04d56eaba5ddc40254e81e815056" + }, + { + "checksum": "sha256:1130c50d23d464653fbca78aa597b1c65d22c9163c70cf3011a9a116af76bbca" + }, + { + "checksum": "sha256:739a6551c66057a68275d53d3ddeb35f1329cd4be1deea3d4103576cf7667cc8" + }, + { + "checksum": "sha256:e18d17088ddaf866d7b440041554461a3188d067fa417baf6f5b070c2f9cee30" + }, + { + "checksum": "sha256:b1184fa6ab84322f715418f76a8e260c6a6bb352307cce9732d72ed3f0ebdec0" + }, + { + "checksum": "sha256:feee80d14e2857f2a229cfed7aea85b74b6f2350532816e824c09f356dc38126" + }, + { + "checksum": "sha256:0ecb10a5141fd74ad9165fef9dd7d9485a34ea1b10605a9d4b61eefe60b767d9" + }, + { + "checksum": "sha256:0970bde39d7cc1dfebda51e4359f63821fe8dd573d46253fc471f8466c79ac82" + }, + { + "checksum": "sha256:dfd1a319a66586bb1027b9a7a674f17b18070e3b389eb8dcd34ffad3ff485725" + }, + { + "checksum": "sha256:7f3337d8024c8eb5d67ed830c2ed1c5b046887d4806ea22cf6e8f3f77b8d7e6f" + }, + { + "checksum": "sha256:fabddaa901a0de98c661612755fbe4ebe4ac1ec372a5e0ec6b7874ef6901340f" + }, + { + "checksum": "sha256:e773a81f7cba7beffb23d9ebb6ce545ba4b1556091544f73ff57d263cc552176" + }, + { + "checksum": "sha256:d79c92d015fa952edf2a4ad75f95042139fbf8b4323f24e939e1ed06481253d9" + }, + { + "checksum": "sha256:d8b5b571fb84c7ccfa24f8a20460471d41fc4487d6d0c34f91fbeaba4c857eb2" + }, + { + "checksum": "sha256:704622626b2938eee1c096c1ecf1e5fc88be4e4eac80a911d0c2ee893f9657b1" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:efb004153a5a6a96330b8a5371b02ce4dc22a8cf6d28f5b928cc443cf3416285" + }, + { + "checksum": "sha256:bbfd0c8d360ae86528c2d06b6b64ceb2d6a974dea101ba5e1268740b689142b9" + }, + { + "checksum": "sha256:ccd0b65f90f2db606a9b38f00c71f5bcd7611fafde92e185a57d3e2a3f027787" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:495c3fc6f15c5daef8686fd01d1f7008bbc72ca9c963da1ae3cf60ffc519f48d" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:d8ba6a91610d87dfb599018c887514af663a0f963ed6b25a83bac8fba56fa266" + }, + { + "checksum": "sha256:16294bc45d609de6ce07b660fadc851022e43d00a13f3c98c1f45064abf591d7" + }, + { + "checksum": "sha256:b2d090246903da9162c06912dcfed747df9e7ba1b9f029a98c96c4155f68ce67" + }, + { + "checksum": "sha256:ba5b6364787be1ce76c7d5d3f7861f75157db6c5354f4b6e7b26ba8962fb226d" + }, + { + "checksum": "sha256:acdee02b0e12502f5010ebfeb9d3cec41172e83db45a5e941085a8edba1bd408" + }, + { + "checksum": "sha256:5919c5de67dbc1f44a553cbb4037572c258bb394ff27ca838b2198d05a0c2dad" + }, + { + "checksum": "sha256:183ae7a707951036dd77805d75aae1dbb055ca52d8fecdc6ef21d5e1518fca4d" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:94700eed0bd231ee73fac06e38ce66573466039c0454774bf268ea50a03fe056" + }, + { + "checksum": "sha256:d2206467c216ee77262401385a61b540eeaabca9a44b9ab864c993962ba76758" + }, + { + "checksum": "sha256:dcf427833f63e4672ecf04100181b671235ae2b50d450a25976ea176ead363fb" + }, + { + "checksum": "sha256:97e8ec14c0569aee6633342fd3b05507b8c30c9d62b52aff0c3e693640d78938" + }, + { + "checksum": "sha256:be5a5ad0d3338da31fca41645852b03c748c41e77bd715619033f71496f3c875" + }, + { + "checksum": "sha256:b9a80c6b1e8bff298ad6215248ce9d193d734dc038f1de211c01a2e118b9606f" + }, + { + "checksum": "sha256:f10990a6f2e8affe55991a46ca80eda2af8c0c8a4aada3b623ba740abfb059cf" + }, + { + "checksum": "sha256:d55a783930503e7f1590bc2ad10d9fa184ed3cb44e2ca85ae2bbe11fcbf166b8" + }, + { + "checksum": "sha256:3f5c97c72cbbe552e9f7183d1f8eb477a3f46647bb513a175a8c158d3eba3dee" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:7a05e800e37b4aa74e657a829097090faf013338056c8bd6ebfeee5ae4467a22" + }, + { + "checksum": "sha256:241a563df5ae3b3b49d45cbf9e67b6932b8345b3fbb40029dbb3b0834cf3db16" + }, + { + "checksum": "sha256:2b2e0d9a397d27c7076f05ab309c71ebffdf2c33df95de51c700af181899c87e" + }, + { + "checksum": "sha256:37e4f7e854765b98e8dd10986b758631c7ca00942bc53efb4003ee326e1cc834" + }, + { + "checksum": "sha256:df50c6f03ef2fa2d8f900a4a95d84921511b5e435533677f3067c1fd47f84b93" + }, + { + "checksum": "sha256:e9d3adb5df960913105864554af0d17ac26287f7454c13865895cec93c57cc6c" + }, + { + "checksum": "sha256:d863808793a34bae10d7bf066b68be37883eb38cf117172de5e47c9eb729cb3d" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "redhat": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.tar", + "options": { + "filename": "root.tar.xz", + "compression": "xz" + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/acl-2.2.53-1.el8.ppc64le.rpm", + "checksum": "sha256:e280c3b7c5bb7838c7956ea3605165ea35480cde85a617c1eff6ca64d6157fe9" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.ppc64le.rpm", + "checksum": "sha256:7c7df93f7b01587f4945ae4c69eec2af512ff4dfc83d8a36268c9238acd9aa71" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/bash-4.4.19-12.el8.ppc64le.rpm", + "checksum": "sha256:3a5d1837798f980b89b6d635fe40f118cc871fac7638dcea3539d45e4e9f7985" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/brotli-1.0.6-2.el8.ppc64le.rpm", + "checksum": "sha256:d96bfcccbdce94af25721e3018a5853ff9670de828b6ac61ed76b5248a413e90" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/bzip2-libs-1.0.6-26.el8.ppc64le.rpm", + "checksum": "sha256:1d084e85f865a35f39067256c83f17a05632b531d9b6c5afb8cdecca1e594d62" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/chkconfig-1.13-2.el8.ppc64le.rpm", + "checksum": "sha256:f6a005b8edb3f866d72ea95d3801930c3be8d75cdebadcf995b0d85300069840" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/coreutils-8.30-8.el8.ppc64le.rpm", + "checksum": "sha256:a6eed3ca128d562c0aed92a123d9d726cf8074df7f98c7ecef5c40257d5bc76e" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/coreutils-common-8.30-8.el8.ppc64le.rpm", + "checksum": "sha256:fc1ae52e3812c059032ad99f074e2a2019c6c005d5b31ea33365c301eb5d4a2d" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cpio-2.12-8.el8.ppc64le.rpm", + "checksum": "sha256:5d190a4742bc826edbe3d3dfb261c94688aca6e1bd0d431b58fc0feb9f40c1b5" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cracklib-2.9.6-15.el8.ppc64le.rpm", + "checksum": "sha256:03e586f573bb9a8a463215d194a6b2bceff16d67af096883df5bbcda0ca55076" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cracklib-dicts-2.9.6-15.el8.ppc64le.rpm", + "checksum": "sha256:13f54c6408ac37c8b4a24fb22af1a719d05d86206d1d4f979d71fad96ab7f319" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cryptsetup-libs-2.3.3-1.el8.ppc64le.rpm", + "checksum": "sha256:f616e1d0db786c6a194f012f85fd534dd5aa84c19353dcfa8a5a13d8898bfc3d" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/curl-7.61.1-12.el8.ppc64le.rpm", + "checksum": "sha256:20a994752f44f7f2c1c3df9850b5381be5b641c0ee913a80a794ca6c49ef7efb" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.ppc64le.rpm", + "checksum": "sha256:eee41ee73236cba78a31ad3914a2f49f3d00abe114e752409d9ec07e50d2c48e" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-1.12.8-11.el8.ppc64le.rpm", + "checksum": "sha256:b490e452b2ba6ebb8980392cef4b7be06b9788ad4cfd37ce31c568d80b29861b" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-daemon-1.12.8-11.el8.ppc64le.rpm", + "checksum": "sha256:2af56bdac984d2755e44a4bc733df7217c1756aac3007dbca1408a218cc6c2b4" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-libs-1.12.8-11.el8.ppc64le.rpm", + "checksum": "sha256:ed5d642b5684142e9224449ffc26aeca810276b1182b66a391c2e276b988ae3c" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-tools-1.12.8-11.el8.ppc64le.rpm", + "checksum": "sha256:f98a963e1bd233a65606e24dd2b941455e7233e6d9d0d07925f419c85be2bdc2" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/device-mapper-1.02.171-3.el8.ppc64le.rpm", + "checksum": "sha256:ccc3640eff73677c4f962104b7a9fa6cb8c08787d77c4ba016569b0b11deb8f5" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/device-mapper-libs-1.02.171-3.el8.ppc64le.rpm", + "checksum": "sha256:2edb7ade3d137c1373e8dcf1f765e62dabd7a86f256f2b8872baf1b4cd4a420b" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/diffutils-3.6-6.el8.ppc64le.rpm", + "checksum": "sha256:e811b0abd14d296513d7900092e66d06736d42e46db06d06d845dcd260fbc665" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dosfstools-4.1-6.el8.ppc64le.rpm", + "checksum": "sha256:72c17b5b06cb08a819da004e904d03ee23c1dfe86e0b29231cccc6f50d303ceb" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dracut-049-89.git20200625.el8.ppc64le.rpm", + "checksum": "sha256:12b368c93ec9e4282ee1aad905e336166aa6dd2519a9f53a1adc11b6fbc2095c" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/e2fsprogs-1.45.6-1.el8.ppc64le.rpm", + "checksum": "sha256:559de474c1dd617a53585eb4913da24181b4b52a4e579bd91c4fd280f5c7776f" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/e2fsprogs-libs-1.45.6-1.el8.ppc64le.rpm", + "checksum": "sha256:299078646f29228e7f497925598b233024996dfaccaa96dcf62c1d14e30a7735" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/elfutils-debuginfod-client-0.180-1.el8.ppc64le.rpm", + "checksum": "sha256:39acf20c2687b0c174c5961f88209b42b689ce866701f78bbb94bd875afd883e" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/elfutils-libelf-0.180-1.el8.ppc64le.rpm", + "checksum": "sha256:3a65dd5868f303c775f48e7acef810cea2a606aec93496cae36c5e9eb9129650" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/elfutils-libs-0.180-1.el8.ppc64le.rpm", + "checksum": "sha256:b896a07208090c08a314e4f590ed8ee399f77ffc6a73864a11b4e9dcac234bba" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/expat-2.2.5-4.el8.ppc64le.rpm", + "checksum": "sha256:40e937791b4b008d86cc82d0bd7564e55fa2b08c092b2a7dab0040876f790022" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/file-5.33-16.el8.ppc64le.rpm", + "checksum": "sha256:7e6bb03794258406bfee886f507934be08fe1d80a8643af028e631b37f9bcd4f" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/file-libs-5.33-16.el8.ppc64le.rpm", + "checksum": "sha256:eb2cc86f4f01aa0ee86ec3a878ceac7eabe04ce5142f8a4b06e3f22cab002b75" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/filesystem-3.8-3.el8.ppc64le.rpm", + "checksum": "sha256:b25a8c87220920855a25357cd27024b1b9b87fefa48e1e877f7e23d0e1954a1d" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/findutils-4.6.0-20.el8.ppc64le.rpm", + "checksum": "sha256:a48836542020c973d67ba459387dca8549d4d65749926eed8031f601b18a8738" + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.9.1", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/freetype-2.9.1-4.el8.ppc64le.rpm", + "checksum": "sha256:96904dd00cb918042fa0492a244c9ffcd2609604adb639a4e41a75368967f2b0" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/fuse-libs-2.9.7-12.el8.ppc64le.rpm", + "checksum": "sha256:17d887ffe27ba3dfd324bae27b0309c13b0b8430597fb65cb4b377416cc21cf3" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gawk-4.2.1-1.el8.ppc64le.rpm", + "checksum": "sha256:2034236aa3ea2de19c9d9b717b83515a7a2e82685e8963d03fbb19973b20c249" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gdbm-1.18-1.el8.ppc64le.rpm", + "checksum": "sha256:75f6ee212b397466bbdc9320473ee2de0198b9573d3204a71422ef215e985e8d" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gdbm-libs-1.18-1.el8.ppc64le.rpm", + "checksum": "sha256:81a30f2977dfa5ede4e3a4077c8590de94c2f6bc97c4968f7bb556c713169a99" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gettext-0.19.8.1-17.el8.ppc64le.rpm", + "checksum": "sha256:f14b5f40e96ae727ce58c415295141645910311915d79d446403f68ff416ebad" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gettext-libs-0.19.8.1-17.el8.ppc64le.rpm", + "checksum": "sha256:eec4945093aa8b86e3c3a8ed629499ac3478be1e5f0a89d74178e277a7484750" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glib2-2.56.4-8.el8.ppc64le.rpm", + "checksum": "sha256:d0bdb653ebfa5cc5a596157434e50d544ad176bd6c3869896be0aa5996199771" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glibc-2.28-127.el8.ppc64le.rpm", + "checksum": "sha256:ca164a41ad98cbc73c23259bb112bbd04162bb363b596a3c99eac02182a01d26" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glibc-all-langpacks-2.28-127.el8.ppc64le.rpm", + "checksum": "sha256:c58f71151ec41a8da17f8d5a45364e6c85cb3fe149993047ac9ef4b5aecd1fff" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glibc-common-2.28-127.el8.ppc64le.rpm", + "checksum": "sha256:8c8e8e8db16ef828278de55cefb09425a83079597a093f93e6261fd5bd027406" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gmp-6.1.2-10.el8.ppc64le.rpm", + "checksum": "sha256:5009afc9241f592691ce9097fb74dabba84b1d2eaf267a7bea71b33bc7ac3795" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gnupg2-2.2.20-2.el8.ppc64le.rpm", + "checksum": "sha256:350d1a6728391907db3ef0ec69b80837d145e39b0cf86a36161432f587dc3308" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gnupg2-smime-2.2.20-2.el8.ppc64le.rpm", + "checksum": "sha256:5896adabcbefa7b297052fd9687b51a9eefe883c91f71e7be71a9200188757d1" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gnutls-3.6.14-3.el8.ppc64le.rpm", + "checksum": "sha256:da9ced19708b900ccc4053ca3df8d58c081869b46c9ee801c1685f447a299731" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gpgme-1.13.1-3.el8.ppc64le.rpm", + "checksum": "sha256:715dbe24d12d9fe43a6efa804dedb3e50e5babed510073b838b6e42ec06d5b8b" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grep-3.1-6.el8.ppc64le.rpm", + "checksum": "sha256:5246dc8c3bae5d860cb5ca12d787e976c3ca70bc3d023350eabc8a9e88601058" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-ppc64le", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-ppc64le-2.02-84.el8.ppc64le.rpm", + "checksum": "sha256:2c3aeeee40861bf0576cfccb8a1d7fbf5948dd60e1c97d2354b8d4dbe34247e8" + }, + { + "name": "grub2-ppc64le-modules", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-ppc64le-modules-2.02-84.el8.noarch.rpm", + "checksum": "sha256:ce85ea9b2eb4d1e2ae94136168cda2bb768fe995ca09620615c1e69b8b0d6bfb" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-tools-2.02-84.el8.ppc64le.rpm", + "checksum": "sha256:feac297c00956073e5f1f4465db8d66ee8498f67719e6dc0bf2b808b4d23523d" + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-tools-extra-2.02-84.el8.ppc64le.rpm", + "checksum": "sha256:f661a9f8dd567b4e47c6753f94a3c9497ded0ceb08ffabe8b279420d7e9f9f32" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-tools-minimal-2.02-84.el8.ppc64le.rpm", + "checksum": "sha256:05421657115297a907645ca4536e8d81e82da116f20053541f8c1e71d62977a6" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grubby-8.40-41.el8.ppc64le.rpm", + "checksum": "sha256:16ba1aa8c5db466e4288412bfedf01be75918b4cece328bdf8ebe590a845d490" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gzip-1.9-9.el8.ppc64le.rpm", + "checksum": "sha256:7f2af219510f9bb8c70beea8c1bbfcdf3d84f9c96ebf28fe84c8bac20f4516e3" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/hardlink-1.3-6.el8.ppc64le.rpm", + "checksum": "sha256:ea8d6dd8c5e592d79229541874e6c2521e456e0efa5386a1fde95a7ed93ee4bd" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ima-evm-utils-1.1-5.el8.ppc64le.rpm", + "checksum": "sha256:e820bcff2a4fb2de93e1e4d4b369964bbdc82e2f6fa77d41c3a8835a9becb909" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/info-6.5-6.el8.ppc64le.rpm", + "checksum": "sha256:0c706e235cd737512024bbc99a6fcbca41a9898c13a4ae11797514ac99a16839" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/iptables-libs-1.8.4-14.el8.ppc64le.rpm", + "checksum": "sha256:7ddfb571e9fe4183721b20fc063c9b0fc1797b2cc5c7d0e677edce583d72c0c5" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/json-c-0.13.1-0.2.el8.ppc64le.rpm", + "checksum": "sha256:56dc429cc3404a69f5d72338303a615fdbb16380688c93a4a7e13ecd773a80f2" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/json-glib-1.4.4-1.el8.ppc64le.rpm", + "checksum": "sha256:ba5ed56f4798d522c6ba041f841617e9362a33b41eee1794214d85eb3bd3fa53" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kbd-2.0.4-10.el8.ppc64le.rpm", + "checksum": "sha256:7519682fc74640736910735ce7b0f3a4ca6deed6d6e365d1cff47f8412519a13" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/keyutils-libs-1.5.10-6.el8.ppc64le.rpm", + "checksum": "sha256:76ed4d1820916e1d4d5ba12a9200b790fc75f2801937d63753fca7e12b6c9d6e" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kmod-25-16.el8.ppc64le.rpm", + "checksum": "sha256:16744c34b4e5d937388ea1169160dff7ac02692884d90c87b730ba0f9964476d" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kmod-libs-25-16.el8.ppc64le.rpm", + "checksum": "sha256:5a67ae309abe3ef1d6dc326a373abc5791d4264b657fa2e3e15be334fb1baa1d" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kpartx-0.8.4-2.el8.ppc64le.rpm", + "checksum": "sha256:cb77a2c9467e5873cf21f429069da709089dc10062c4d927d9e59eca0aac2546" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/krb5-libs-1.18.2-3.el8.ppc64le.rpm", + "checksum": "sha256:ff355a15b36bb34bf2f0a8c4cf4b16347981c0c95e71ea7f3c125d01a33e57c7" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libacl-2.2.53-1.el8.ppc64le.rpm", + "checksum": "sha256:68269d4f3588a15e94360c9d0f595d0ad7f1ece27968162ac42468acd462e526" + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.112", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libaio-0.3.112-1.el8.ppc64le.rpm", + "checksum": "sha256:3d425b214eeb598d59e4891ee3f5b0c941ff4755790907588309b431c1482195" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libarchive-3.3.2-9.el8.ppc64le.rpm", + "checksum": "sha256:f3495aae115e7a02bc1d55465e699a6836116a0bd34bdb7eb992e2b878d4b584" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libassuan-2.5.1-3.el8.ppc64le.rpm", + "checksum": "sha256:32fc4d89fa8040aa8a180717305eb2c7a7094ad255cdb66fd7af2254fa89a5c8" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libattr-2.4.48-3.el8.ppc64le.rpm", + "checksum": "sha256:58a7c06351efae8f3b1bff3b4832ed02ebc9f1018d6978b1703c6e963f26db98" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libblkid-2.32.1-24.el8.ppc64le.rpm", + "checksum": "sha256:b56bf1fc0c0818069d8833845e90c629215abbc8bce652c52cf077dcc224be34" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcap-2.26-4.el8.ppc64le.rpm", + "checksum": "sha256:7676c7a3f92aedec71efad68ce95c1ba5362b7bb75a815b70174a96a2126cebe" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcap-ng-0.7.9-5.el8.ppc64le.rpm", + "checksum": "sha256:39fec51b4b40aef643f68f41cca660bce59c5fbb360bcedceec04c17cafd17e6" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcom_err-1.45.6-1.el8.ppc64le.rpm", + "checksum": "sha256:f79f084807195110307640a0f6e3ecbce88cce070961ea19d68bdfafab3862fb" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcomps-0.1.11-4.el8.ppc64le.rpm", + "checksum": "sha256:56a66127f50af442a8bbd3183c29d39d4b1825526dd134405ecea82839ccca23" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcroco-0.6.12-4.el8.ppc64le.rpm", + "checksum": "sha256:f9607d29ed10edab125dba7a1972b0f783a0522eb29f03f825abbeb5281fbeeb" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcurl-7.61.1-12.el8.ppc64le.rpm", + "checksum": "sha256:2c1a643202117f9bdf48b11c24b60a01c409f2ccdc43914a89ac980f7d692ae6" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libdb-5.3.28-39.el8.ppc64le.rpm", + "checksum": "sha256:e660d48e49bb3da5f5e8ad3e79b65184a95eeb4351b3f6d38e3024c332bbb570" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libdb-utils-5.3.28-39.el8.ppc64le.rpm", + "checksum": "sha256:6b0cfe88a81e314afa03ce297f2bb0470a29a8f13465ba4a52fc65550027cbda" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libdnf-0.48.0-2.el8.ppc64le.rpm", + "checksum": "sha256:79d49c7e1c6bde0467649271fb45928a313c5a8cad3c0855d3cae9277e9b474c" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libevent-2.1.8-5.el8.ppc64le.rpm", + "checksum": "sha256:50f00be9540e2ab1e81f955e9ad33ecbb24ba6538ddccf418ad00ebfeb1fe472" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libfdisk-2.32.1-24.el8.ppc64le.rpm", + "checksum": "sha256:fb110b4fd708d68d41606e0120f5befbb171e6a9f8be2a23618284238fbf19dd" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libffi-3.1-22.el8.ppc64le.rpm", + "checksum": "sha256:d20bcdcb1e6a8d16a5df9cdc99744f907516b9ded51b671bd0a0f31189ac43a5" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgcc-8.3.1-5.1.el8.ppc64le.rpm", + "checksum": "sha256:1a92ddb2b7caa477d02eadcd97b1f4fb124359609dc827dfedb7de0976ebf824" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgcrypt-1.8.5-4.el8.ppc64le.rpm", + "checksum": "sha256:4f2725db0dc03a8bb729ccf6ced8fc4e8eae995afa7029decb7a7aa81e6eb417" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgomp-8.3.1-5.1.el8.ppc64le.rpm", + "checksum": "sha256:6b6b362f865498d59d17673d93fabe076015e7804462412e3da589335890f8d9" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgpg-error-1.31-1.el8.ppc64le.rpm", + "checksum": "sha256:69997f597de86de2dedda20db0f5b516585751822162f4dacd01cbc2808a9155" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libidn2-2.2.0-1.el8.ppc64le.rpm", + "checksum": "sha256:7221e9c72741e31d3e954cae6a1b780b15da86abb70d6fdf3c125b1a440ce2b2" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libkcapi-1.2.0-2.el8.ppc64le.rpm", + "checksum": "sha256:d4fff4e2707628db04c16a2cd8fa0c5e9854084688acf74ca4c1db27ea9d2f8d" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.ppc64le.rpm", + "checksum": "sha256:4a44b9e5e7977128528c4108ef55d49e52290c51d376c6ffd177a6b59113fbf6" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libksba-1.3.5-7.el8.ppc64le.rpm", + "checksum": "sha256:fef4bb13fab5780f4f9c9d8962c7d15378c7128a69ab08244b1e520b295bf685" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libmetalink-0.1.3-7.el8.ppc64le.rpm", + "checksum": "sha256:5ea0604f773c0ae0e273206443a5f115e21010e8acb1d580a22e5ce0219ac991" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libmodulemd-2.9.4-2.el8.ppc64le.rpm", + "checksum": "sha256:23b438c52f920e7d3870031673412e81e1edc12c427e64e204ba6620df4401b7" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libmount-2.32.1-24.el8.ppc64le.rpm", + "checksum": "sha256:03318129f3b75d57abb1f15adf1ddc26c23fc178432c66b5ffc43e586c948428" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libnghttp2-1.33.0-3.el8_2.1.ppc64le.rpm", + "checksum": "sha256:530f8aa49c10d80202e2b3e2c2b505dbdcdc2c3b56231d5986b6388da3ffd12b" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.ppc64le.rpm", + "checksum": "sha256:7c458f0dfbd31662e5a8a91b847881dfba6ff04786bc21e7de230236ce8ffaa7" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpcap-1.9.1-4.el8.ppc64le.rpm", + "checksum": "sha256:9f526c50ff9fae2f6c1d02eb10b6ced74b3ee94e7292e7ad483076ab730c1eef" + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.34", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpng-1.6.34-5.el8.ppc64le.rpm", + "checksum": "sha256:d42e36ab818d9284eb5fb9d46a0af71d99b91d917b3fdf1ac9af3ebd473606f1" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpsl-0.20.2-6.el8.ppc64le.rpm", + "checksum": "sha256:95971777d5b9af4cc37788f0b9193c693de7dc2f0f842f341a5d2182af4edb24" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpwquality-1.4.0-9.el8.ppc64le.rpm", + "checksum": "sha256:e02d721b2396471683a7f73d681ed4cc71bb2d50ef0e8390cc97ab047e4187a9" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/librepo-1.12.0-1.el8.ppc64le.rpm", + "checksum": "sha256:278dffe93fc19fd1613a9ab8d61c87a755e68120163d5a1352368b68f3880074" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libreport-filesystem-2.9.5-11.el8.ppc64le.rpm", + "checksum": "sha256:7c526e6c9e22ba9fbd88da30824a4791c87f3da890426890be3a72f2ebf7f0c8" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/librhsm-0.0.3-3.el8.ppc64le.rpm", + "checksum": "sha256:08af4dc49ee9fbef7b2b6320da7809a952fa5d4bb907e546aa2a74827dcd7390" + }, + { + "name": "librtas", + "epoch": 0, + "version": "2.0.2", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/librtas-2.0.2-1.el8.ppc64le.rpm", + "checksum": "sha256:94b8f8ce9926a60524cba62e9695785bf12f3ca7f6de86cbcb510889e9e61509" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libseccomp-2.4.3-1.el8.ppc64le.rpm", + "checksum": "sha256:93e8eb519fee69ad0a90733dea8577670a1c62f02fce9348633880e0d9190f4b" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsecret-0.18.6-1.el8.ppc64le.rpm", + "checksum": "sha256:485ef6f1f8b26b7bf4c1ae8ee8ae7bda9ff679aa0fc9e62d1ff990a54e0e559d" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libselinux-2.9-3.el8.ppc64le.rpm", + "checksum": "sha256:a5fcf3d4d064289bd04a9f19cc204c8facaf389c0c10e47b075529f0601dc02c" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libselinux-utils-2.9-3.el8.ppc64le.rpm", + "checksum": "sha256:d07a535fd49579414267571a6e7286d38061e65dcffd1f947e32b8edeb0e7f58" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsemanage-2.9-3.el8.ppc64le.rpm", + "checksum": "sha256:6cc8c3ff2b465defb9ac46a2caf95d53c887d18f68bd43f21e6e3635b884d6ab" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsepol-2.9-1.el8.ppc64le.rpm", + "checksum": "sha256:4e4dc28e98b8470dfbb789d784b8bc5afc04dc7295047d2ee16d36ab4dbaba1d" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsigsegv-2.11-5.el8.ppc64le.rpm", + "checksum": "sha256:e1c727c81c7d54b21ebf7346d81ea57bbf77cdee59efc2c1bd57d78b45697de6" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsmartcols-2.32.1-24.el8.ppc64le.rpm", + "checksum": "sha256:9bdf8e5f329b54f1ea45a5d5277d650be84f7bd2f1570d7c5e7ac743fd57cf1f" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsolv-0.7.11-1.el8.ppc64le.rpm", + "checksum": "sha256:d3d600e075b60b1462bc5f2cf7319ad484a416739175aaacf384a5805749861c" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libss-1.45.6-1.el8.ppc64le.rpm", + "checksum": "sha256:86ae5e445a80e4485162e6f24fcf6df539fa7d1d31650755d4d5af5d65ec2b88" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libssh-0.9.4-2.el8.ppc64le.rpm", + "checksum": "sha256:8ec9594f8cb1eb3313cb8979201b0f85a914107fc4f706ea27727e977da056ee" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libstdc++-8.3.1-5.1.el8.ppc64le.rpm", + "checksum": "sha256:36ccdb1a1673d3f739a29105edc45c09074ec667cc470051c2d9c52bfa6b78b0" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libtasn1-4.13-3.el8.ppc64le.rpm", + "checksum": "sha256:97ffad7f79927ee908510ae381ada704827d369b5a0b8715214f51270a0984d3" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libtirpc-1.1.4-4.el8.ppc64le.rpm", + "checksum": "sha256:e6bdc7b1e5bb8b3c9d578fa1a88c4cbd3ff262b14857464a691b6afd34e38b90" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libunistring-0.9.9-3.el8.ppc64le.rpm", + "checksum": "sha256:a7db88e037715eb0ea86ffa464285615549b23178a14d691935685bdb6df4742" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libusbx-1.0.23-3.el8.ppc64le.rpm", + "checksum": "sha256:18b66eb926d6554fdfa6c6464c301d906d63ec69f54ac318cf0a5e7cccf43d2e" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libutempter-1.1.6-14.el8.ppc64le.rpm", + "checksum": "sha256:349d5e65aeee405ea53d10c651d541418f11af4bf5f436ab5cba8c07183f405e" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libuuid-2.32.1-24.el8.ppc64le.rpm", + "checksum": "sha256:e4dbbf5ba29de01b7121586f8bfc99305168d1db301ba121320344e344012704" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libverto-0.3.0-5.el8.ppc64le.rpm", + "checksum": "sha256:eb870676d56cd2212611a9814f6ab08b53a209d1bee37e38fdbc434b6a1600a1" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libxcrypt-4.1.1-4.el8.ppc64le.rpm", + "checksum": "sha256:81ca20194dbba8bb696a02f1f01d45b1ca73aa38a18d97173022fcf96e195156" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libxml2-2.9.7-8.el8.ppc64le.rpm", + "checksum": "sha256:679ba7cf5974aaeb4b50a926e8fa28821f48b71c182d50b1033bccb6fdc34a06" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libyaml-0.1.7-5.el8.ppc64le.rpm", + "checksum": "sha256:9f1810ee304c2827027a4dadb0142f6940c28991b5371cbe302593eece6c25e4" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libzstd-1.4.4-1.el8.ppc64le.rpm", + "checksum": "sha256:0143da5903a3053bbd62714904db5a7c1aba3b9ff77c97d9126a4479d3047c58" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/lua-libs-5.3.4-11.el8.ppc64le.rpm", + "checksum": "sha256:756fe3065871f2c7c1f9635ae75119d1755dbb6a5ea62fae7660b410d9392e34" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/lz4-libs-1.8.3-2.el8.ppc64le.rpm", + "checksum": "sha256:e943b3e1fb71459be6ee74f944e7bcf6a0835858b48924501645eb00997b5d1b" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/mpfr-3.1.6-1.el8.ppc64le.rpm", + "checksum": "sha256:d3c4038a7a3be6987f74236394642be84092a9dd731317dfe5974af757c3ccfc" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ncurses-6.1-7.20180224.el8.ppc64le.rpm", + "checksum": "sha256:7d7280d0de03be269a1b078534d286496085416efef921996590bcce7db64736" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ncurses-libs-6.1-7.20180224.el8.ppc64le.rpm", + "checksum": "sha256:bcd9e55362d6afab44a89acd877c8c0a8ae27572028bfc9282f3bfec0d21e27c" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/nettle-3.4.1-2.el8.ppc64le.rpm", + "checksum": "sha256:68c10fbde60ad63306c334df256056bc93eb04d56eaba5ddc40254e81e815056" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/npth-1.5-4.el8.ppc64le.rpm", + "checksum": "sha256:4538fb52ec654977ccaf56d0fc26b491f4cdda58e8070f5922165ac77104857c" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openldap-2.4.46-15.el8.ppc64le.rpm", + "checksum": "sha256:1130c50d23d464653fbca78aa597b1c65d22c9163c70cf3011a9a116af76bbca" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssl-1.1.1g-9.el8.ppc64le.rpm", + "checksum": "sha256:b1184fa6ab84322f715418f76a8e260c6a6bb352307cce9732d72ed3f0ebdec0" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssl-libs-1.1.1g-9.el8.ppc64le.rpm", + "checksum": "sha256:feee80d14e2857f2a229cfed7aea85b74b6f2350532816e824c09f356dc38126" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssl-pkcs11-0.4.10-2.el8.ppc64le.rpm", + "checksum": "sha256:0ecb10a5141fd74ad9165fef9dd7d9485a34ea1b10605a9d4b61eefe60b767d9" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/os-prober-1.74-6.el8.ppc64le.rpm", + "checksum": "sha256:0970bde39d7cc1dfebda51e4359f63821fe8dd573d46253fc471f8466c79ac82" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/p11-kit-0.23.14-5.el8_0.ppc64le.rpm", + "checksum": "sha256:dfd1a319a66586bb1027b9a7a674f17b18070e3b389eb8dcd34ffad3ff485725" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/p11-kit-trust-0.23.14-5.el8_0.ppc64le.rpm", + "checksum": "sha256:7f3337d8024c8eb5d67ed830c2ed1c5b046887d4806ea22cf6e8f3f77b8d7e6f" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pam-1.3.1-11.el8.ppc64le.rpm", + "checksum": "sha256:fabddaa901a0de98c661612755fbe4ebe4ac1ec372a5e0ec6b7874ef6901340f" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pcre-8.42-4.el8.ppc64le.rpm", + "checksum": "sha256:e773a81f7cba7beffb23d9ebb6ce545ba4b1556091544f73ff57d263cc552176" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pcre2-10.32-2.el8.ppc64le.rpm", + "checksum": "sha256:d79c92d015fa952edf2a4ad75f95042139fbf8b4323f24e939e1ed06481253d9" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pigz-2.4-4.el8.ppc64le.rpm", + "checksum": "sha256:d8b5b571fb84c7ccfa24f8a20460471d41fc4487d6d0c34f91fbeaba4c857eb2" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/platform-python-3.6.8-30.el8.ppc64le.rpm", + "checksum": "sha256:704622626b2938eee1c096c1ecf1e5fc88be4e4eac80a911d0c2ee893f9657b1" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/policycoreutils-2.9-9.el8.ppc64le.rpm", + "checksum": "sha256:efb004153a5a6a96330b8a5371b02ce4dc22a8cf6d28f5b928cc443cf3416285" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/popt-1.16-14.el8.ppc64le.rpm", + "checksum": "sha256:bbfd0c8d360ae86528c2d06b6b64ceb2d6a974dea101ba5e1268740b689142b9" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/procps-ng-3.3.15-2.el8.ppc64le.rpm", + "checksum": "sha256:ccd0b65f90f2db606a9b38f00c71f5bcd7611fafde92e185a57d3e2a3f027787" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-gpg-1.13.1-3.el8.ppc64le.rpm", + "checksum": "sha256:6501a0edf570ea01137395ff13cdbc3914dee9e536ab92ff9698a5ddd76dfb16" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-hawkey-0.48.0-2.el8.ppc64le.rpm", + "checksum": "sha256:f7cbcbe2816044bb92ca5066d88ac8c3b578a68eff16b2745d93c90483a5153f" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-libcomps-0.1.11-4.el8.ppc64le.rpm", + "checksum": "sha256:0396d12973b68a7d16074aa51f75e706c0b7558cd24d32e5573c49a487b2497c" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-libdnf-0.48.0-2.el8.ppc64le.rpm", + "checksum": "sha256:ec450facea1c2a5dc1a6b5bacc2330dd5174780d92db66379f4918c2ab40da83" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-libs-3.6.8-30.el8.ppc64le.rpm", + "checksum": "sha256:495c3fc6f15c5daef8686fd01d1f7008bbc72ca9c963da1ae3cf60ffc519f48d" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-rpm-4.14.3-4.el8.ppc64le.rpm", + "checksum": "sha256:8ac41d38c793722177492319ae57588ae2619962c8442e64aecc4b6708295707" + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/readline-7.0-10.el8.ppc64le.rpm", + "checksum": "sha256:d8ba6a91610d87dfb599018c887514af663a0f963ed6b25a83bac8fba56fa266" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/redhat-release-8.3-0.2.el8.ppc64le.rpm", + "checksum": "sha256:16294bc45d609de6ce07b660fadc851022e43d00a13f3c98c1f45064abf591d7" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/redhat-release-eula-8.3-0.2.el8.ppc64le.rpm", + "checksum": "sha256:b2d090246903da9162c06912dcfed747df9e7ba1b9f029a98c96c4155f68ce67" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-4.14.3-4.el8.ppc64le.rpm", + "checksum": "sha256:ba5b6364787be1ce76c7d5d3f7861f75157db6c5354f4b6e7b26ba8962fb226d" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-build-libs-4.14.3-4.el8.ppc64le.rpm", + "checksum": "sha256:3ab5aad8b10e5343c08af8c24775334b6111cd50fb9629f21335626057c7dab9" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-libs-4.14.3-4.el8.ppc64le.rpm", + "checksum": "sha256:acdee02b0e12502f5010ebfeb9d3cec41172e83db45a5e941085a8edba1bd408" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.ppc64le.rpm", + "checksum": "sha256:5919c5de67dbc1f44a553cbb4037572c258bb394ff27ca838b2198d05a0c2dad" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.ppc64le.rpm", + "checksum": "sha256:54b3552112a26b7ad79db1251bc0e8e0415ac60da299d54700c5bc59760e5be9" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sed-4.5-2.el8.ppc64le.rpm", + "checksum": "sha256:183ae7a707951036dd77805d75aae1dbb055ca52d8fecdc6ef21d5e1518fca4d" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/shadow-utils-4.6-10.el8.ppc64le.rpm", + "checksum": "sha256:94700eed0bd231ee73fac06e38ce66573466039c0454774bf268ea50a03fe056" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/shared-mime-info-1.9-3.el8.ppc64le.rpm", + "checksum": "sha256:d2206467c216ee77262401385a61b540eeaabca9a44b9ab864c993962ba76758" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sqlite-libs-3.26.0-10.el8.ppc64le.rpm", + "checksum": "sha256:dcf427833f63e4672ecf04100181b671235ae2b50d450a25976ea176ead363fb" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/systemd-239-36.el8.ppc64le.rpm", + "checksum": "sha256:97e8ec14c0569aee6633342fd3b05507b8c30c9d62b52aff0c3e693640d78938" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/systemd-libs-239-36.el8.ppc64le.rpm", + "checksum": "sha256:be5a5ad0d3338da31fca41645852b03c748c41e77bd715619033f71496f3c875" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/systemd-pam-239-36.el8.ppc64le.rpm", + "checksum": "sha256:b9a80c6b1e8bff298ad6215248ce9d193d734dc038f1de211c01a2e118b9606f" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/systemd-udev-239-36.el8.ppc64le.rpm", + "checksum": "sha256:f10990a6f2e8affe55991a46ca80eda2af8c0c8a4aada3b623ba740abfb059cf" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/tar-1.30-5.el8.ppc64le.rpm", + "checksum": "sha256:2081809fd42c6cefcf677362a825c38b166f04df8edf865d5d6404348179e536" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/trousers-0.3.14-4.el8.ppc64le.rpm", + "checksum": "sha256:d55a783930503e7f1590bc2ad10d9fa184ed3cb44e2ca85ae2bbe11fcbf166b8" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/trousers-lib-0.3.14-4.el8.ppc64le.rpm", + "checksum": "sha256:3f5c97c72cbbe552e9f7183d1f8eb477a3f46647bb513a175a8c158d3eba3dee" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/util-linux-2.32.1-24.el8.ppc64le.rpm", + "checksum": "sha256:7a05e800e37b4aa74e657a829097090faf013338056c8bd6ebfeee5ae4467a22" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/which-2.21-12.el8.ppc64le.rpm", + "checksum": "sha256:241a563df5ae3b3b49d45cbf9e67b6932b8345b3fbb40029dbb3b0834cf3db16" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/xfsprogs-5.0.0-4.el8.ppc64le.rpm", + "checksum": "sha256:87209220ec94795ac0e079e98877a4f911beaee3a829bf95cda5a8b24b545a94" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/xz-5.2.4-3.el8.ppc64le.rpm", + "checksum": "sha256:2b2e0d9a397d27c7076f05ab309c71ebffdf2c33df95de51c700af181899c87e" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/xz-libs-5.2.4-3.el8.ppc64le.rpm", + "checksum": "sha256:37e4f7e854765b98e8dd10986b758631c7ca00942bc53efb4003ee326e1cc834" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/zlib-1.2.11-15.el8.ppc64le.rpm", + "checksum": "sha256:df50c6f03ef2fa2d8f900a4a95d84921511b5e435533677f3067c1fd47f84b93" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/libxkbcommon-0.9.1-1.el8.ppc64le.rpm", + "checksum": "sha256:e9d3adb5df960913105864554af0d17ac26287f7454c13865895cec93c57cc6c" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/memstrack-0.1.8-1.el8.ppc64le.rpm", + "checksum": "sha256:d863808793a34bae10d7bf066b68be37883eb38cf117172de5e47c9eb729cb3d" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/pinentry-1.1.0-2.el8.ppc64le.rpm", + "checksum": "sha256:b64080283110b2e23a184787ccd14eca6994c321cf4be9cb16205cfda1ab5d89" + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python3-unbound-1.7.3-14.el8.ppc64le.rpm", + "checksum": "sha256:a07b21bf156e4a15c566506eb5f5b9e9c7087a58c471c004f53d4eae1bce90e3" + }, + { + "name": "python36", + "epoch": 0, + "version": "3.6.8", + "release": "2.module+el8.1.0+3334+5cb623d7", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.ppc64le.rpm", + "checksum": "sha256:fd5c2530f60be39592a9b1b7a65569d44f5bbb826db5e721d17e3cb9d6ffe41d" + }, + { + "name": "qemu-img", + "epoch": 15, + "version": "4.2.0", + "release": "29.module+el8.3.0+7212+401047e6", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.ppc64le.rpm", + "checksum": "sha256:ddd3be2e7e48c17085b756240d53a6b69a79ed82266cd4131c5459b2ee2a676d" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/unbound-libs-1.7.3-14.el8.ppc64le.rpm", + "checksum": "sha256:744a6f8d1acf3c49b77e0f96217a6bae3d7dba6228a16676be21b7332adf9f43" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/acl-2.2.53-1.el8.ppc64le.rpm", + "checksum": "sha256:e280c3b7c5bb7838c7956ea3605165ea35480cde85a617c1eff6ca64d6157fe9" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.ppc64le.rpm", + "checksum": "sha256:7c7df93f7b01587f4945ae4c69eec2af512ff4dfc83d8a36268c9238acd9aa71" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/bash-4.4.19-12.el8.ppc64le.rpm", + "checksum": "sha256:3a5d1837798f980b89b6d635fe40f118cc871fac7638dcea3539d45e4e9f7985" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/brotli-1.0.6-2.el8.ppc64le.rpm", + "checksum": "sha256:d96bfcccbdce94af25721e3018a5853ff9670de828b6ac61ed76b5248a413e90" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/bzip2-libs-1.0.6-26.el8.ppc64le.rpm", + "checksum": "sha256:1d084e85f865a35f39067256c83f17a05632b531d9b6c5afb8cdecca1e594d62" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/chkconfig-1.13-2.el8.ppc64le.rpm", + "checksum": "sha256:f6a005b8edb3f866d72ea95d3801930c3be8d75cdebadcf995b0d85300069840" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/coreutils-8.30-8.el8.ppc64le.rpm", + "checksum": "sha256:a6eed3ca128d562c0aed92a123d9d726cf8074df7f98c7ecef5c40257d5bc76e" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/coreutils-common-8.30-8.el8.ppc64le.rpm", + "checksum": "sha256:fc1ae52e3812c059032ad99f074e2a2019c6c005d5b31ea33365c301eb5d4a2d" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cpio-2.12-8.el8.ppc64le.rpm", + "checksum": "sha256:5d190a4742bc826edbe3d3dfb261c94688aca6e1bd0d431b58fc0feb9f40c1b5" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cracklib-2.9.6-15.el8.ppc64le.rpm", + "checksum": "sha256:03e586f573bb9a8a463215d194a6b2bceff16d67af096883df5bbcda0ca55076" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cracklib-dicts-2.9.6-15.el8.ppc64le.rpm", + "checksum": "sha256:13f54c6408ac37c8b4a24fb22af1a719d05d86206d1d4f979d71fad96ab7f319" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cryptsetup-libs-2.3.3-1.el8.ppc64le.rpm", + "checksum": "sha256:f616e1d0db786c6a194f012f85fd534dd5aa84c19353dcfa8a5a13d8898bfc3d" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/curl-7.61.1-12.el8.ppc64le.rpm", + "checksum": "sha256:20a994752f44f7f2c1c3df9850b5381be5b641c0ee913a80a794ca6c49ef7efb" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.ppc64le.rpm", + "checksum": "sha256:eee41ee73236cba78a31ad3914a2f49f3d00abe114e752409d9ec07e50d2c48e" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-1.12.8-11.el8.ppc64le.rpm", + "checksum": "sha256:b490e452b2ba6ebb8980392cef4b7be06b9788ad4cfd37ce31c568d80b29861b" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-daemon-1.12.8-11.el8.ppc64le.rpm", + "checksum": "sha256:2af56bdac984d2755e44a4bc733df7217c1756aac3007dbca1408a218cc6c2b4" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-libs-1.12.8-11.el8.ppc64le.rpm", + "checksum": "sha256:ed5d642b5684142e9224449ffc26aeca810276b1182b66a391c2e276b988ae3c" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dbus-tools-1.12.8-11.el8.ppc64le.rpm", + "checksum": "sha256:f98a963e1bd233a65606e24dd2b941455e7233e6d9d0d07925f419c85be2bdc2" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/device-mapper-1.02.171-3.el8.ppc64le.rpm", + "checksum": "sha256:ccc3640eff73677c4f962104b7a9fa6cb8c08787d77c4ba016569b0b11deb8f5" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/device-mapper-libs-1.02.171-3.el8.ppc64le.rpm", + "checksum": "sha256:2edb7ade3d137c1373e8dcf1f765e62dabd7a86f256f2b8872baf1b4cd4a420b" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/diffutils-3.6-6.el8.ppc64le.rpm", + "checksum": "sha256:e811b0abd14d296513d7900092e66d06736d42e46db06d06d845dcd260fbc665" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/dracut-049-89.git20200625.el8.ppc64le.rpm", + "checksum": "sha256:12b368c93ec9e4282ee1aad905e336166aa6dd2519a9f53a1adc11b6fbc2095c" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/elfutils-debuginfod-client-0.180-1.el8.ppc64le.rpm", + "checksum": "sha256:39acf20c2687b0c174c5961f88209b42b689ce866701f78bbb94bd875afd883e" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/elfutils-libelf-0.180-1.el8.ppc64le.rpm", + "checksum": "sha256:3a65dd5868f303c775f48e7acef810cea2a606aec93496cae36c5e9eb9129650" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/elfutils-libs-0.180-1.el8.ppc64le.rpm", + "checksum": "sha256:b896a07208090c08a314e4f590ed8ee399f77ffc6a73864a11b4e9dcac234bba" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/expat-2.2.5-4.el8.ppc64le.rpm", + "checksum": "sha256:40e937791b4b008d86cc82d0bd7564e55fa2b08c092b2a7dab0040876f790022" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/file-5.33-16.el8.ppc64le.rpm", + "checksum": "sha256:7e6bb03794258406bfee886f507934be08fe1d80a8643af028e631b37f9bcd4f" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/file-libs-5.33-16.el8.ppc64le.rpm", + "checksum": "sha256:eb2cc86f4f01aa0ee86ec3a878ceac7eabe04ce5142f8a4b06e3f22cab002b75" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/filesystem-3.8-3.el8.ppc64le.rpm", + "checksum": "sha256:b25a8c87220920855a25357cd27024b1b9b87fefa48e1e877f7e23d0e1954a1d" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/findutils-4.6.0-20.el8.ppc64le.rpm", + "checksum": "sha256:a48836542020c973d67ba459387dca8549d4d65749926eed8031f601b18a8738" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gawk-4.2.1-1.el8.ppc64le.rpm", + "checksum": "sha256:2034236aa3ea2de19c9d9b717b83515a7a2e82685e8963d03fbb19973b20c249" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gdbm-1.18-1.el8.ppc64le.rpm", + "checksum": "sha256:75f6ee212b397466bbdc9320473ee2de0198b9573d3204a71422ef215e985e8d" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gdbm-libs-1.18-1.el8.ppc64le.rpm", + "checksum": "sha256:81a30f2977dfa5ede4e3a4077c8590de94c2f6bc97c4968f7bb556c713169a99" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gettext-0.19.8.1-17.el8.ppc64le.rpm", + "checksum": "sha256:f14b5f40e96ae727ce58c415295141645910311915d79d446403f68ff416ebad" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gettext-libs-0.19.8.1-17.el8.ppc64le.rpm", + "checksum": "sha256:eec4945093aa8b86e3c3a8ed629499ac3478be1e5f0a89d74178e277a7484750" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glib2-2.56.4-8.el8.ppc64le.rpm", + "checksum": "sha256:d0bdb653ebfa5cc5a596157434e50d544ad176bd6c3869896be0aa5996199771" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glibc-2.28-127.el8.ppc64le.rpm", + "checksum": "sha256:ca164a41ad98cbc73c23259bb112bbd04162bb363b596a3c99eac02182a01d26" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glibc-all-langpacks-2.28-127.el8.ppc64le.rpm", + "checksum": "sha256:c58f71151ec41a8da17f8d5a45364e6c85cb3fe149993047ac9ef4b5aecd1fff" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/glibc-common-2.28-127.el8.ppc64le.rpm", + "checksum": "sha256:8c8e8e8db16ef828278de55cefb09425a83079597a093f93e6261fd5bd027406" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gmp-6.1.2-10.el8.ppc64le.rpm", + "checksum": "sha256:5009afc9241f592691ce9097fb74dabba84b1d2eaf267a7bea71b33bc7ac3795" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gnutls-3.6.14-3.el8.ppc64le.rpm", + "checksum": "sha256:da9ced19708b900ccc4053ca3df8d58c081869b46c9ee801c1685f447a299731" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grep-3.1-6.el8.ppc64le.rpm", + "checksum": "sha256:5246dc8c3bae5d860cb5ca12d787e976c3ca70bc3d023350eabc8a9e88601058" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-tools-2.02-84.el8.ppc64le.rpm", + "checksum": "sha256:feac297c00956073e5f1f4465db8d66ee8498f67719e6dc0bf2b808b4d23523d" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grub2-tools-minimal-2.02-84.el8.ppc64le.rpm", + "checksum": "sha256:05421657115297a907645ca4536e8d81e82da116f20053541f8c1e71d62977a6" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/grubby-8.40-41.el8.ppc64le.rpm", + "checksum": "sha256:16ba1aa8c5db466e4288412bfedf01be75918b4cece328bdf8ebe590a845d490" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/gzip-1.9-9.el8.ppc64le.rpm", + "checksum": "sha256:7f2af219510f9bb8c70beea8c1bbfcdf3d84f9c96ebf28fe84c8bac20f4516e3" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/hardlink-1.3-6.el8.ppc64le.rpm", + "checksum": "sha256:ea8d6dd8c5e592d79229541874e6c2521e456e0efa5386a1fde95a7ed93ee4bd" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/info-6.5-6.el8.ppc64le.rpm", + "checksum": "sha256:0c706e235cd737512024bbc99a6fcbca41a9898c13a4ae11797514ac99a16839" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/iptables-libs-1.8.4-14.el8.ppc64le.rpm", + "checksum": "sha256:7ddfb571e9fe4183721b20fc063c9b0fc1797b2cc5c7d0e677edce583d72c0c5" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/json-c-0.13.1-0.2.el8.ppc64le.rpm", + "checksum": "sha256:56dc429cc3404a69f5d72338303a615fdbb16380688c93a4a7e13ecd773a80f2" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kbd-2.0.4-10.el8.ppc64le.rpm", + "checksum": "sha256:7519682fc74640736910735ce7b0f3a4ca6deed6d6e365d1cff47f8412519a13" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/keyutils-libs-1.5.10-6.el8.ppc64le.rpm", + "checksum": "sha256:76ed4d1820916e1d4d5ba12a9200b790fc75f2801937d63753fca7e12b6c9d6e" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kmod-25-16.el8.ppc64le.rpm", + "checksum": "sha256:16744c34b4e5d937388ea1169160dff7ac02692884d90c87b730ba0f9964476d" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kmod-libs-25-16.el8.ppc64le.rpm", + "checksum": "sha256:5a67ae309abe3ef1d6dc326a373abc5791d4264b657fa2e3e15be334fb1baa1d" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/kpartx-0.8.4-2.el8.ppc64le.rpm", + "checksum": "sha256:cb77a2c9467e5873cf21f429069da709089dc10062c4d927d9e59eca0aac2546" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/krb5-libs-1.18.2-3.el8.ppc64le.rpm", + "checksum": "sha256:ff355a15b36bb34bf2f0a8c4cf4b16347981c0c95e71ea7f3c125d01a33e57c7" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libacl-2.2.53-1.el8.ppc64le.rpm", + "checksum": "sha256:68269d4f3588a15e94360c9d0f595d0ad7f1ece27968162ac42468acd462e526" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libarchive-3.3.2-9.el8.ppc64le.rpm", + "checksum": "sha256:f3495aae115e7a02bc1d55465e699a6836116a0bd34bdb7eb992e2b878d4b584" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libattr-2.4.48-3.el8.ppc64le.rpm", + "checksum": "sha256:58a7c06351efae8f3b1bff3b4832ed02ebc9f1018d6978b1703c6e963f26db98" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libblkid-2.32.1-24.el8.ppc64le.rpm", + "checksum": "sha256:b56bf1fc0c0818069d8833845e90c629215abbc8bce652c52cf077dcc224be34" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcap-2.26-4.el8.ppc64le.rpm", + "checksum": "sha256:7676c7a3f92aedec71efad68ce95c1ba5362b7bb75a815b70174a96a2126cebe" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcap-ng-0.7.9-5.el8.ppc64le.rpm", + "checksum": "sha256:39fec51b4b40aef643f68f41cca660bce59c5fbb360bcedceec04c17cafd17e6" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcom_err-1.45.6-1.el8.ppc64le.rpm", + "checksum": "sha256:f79f084807195110307640a0f6e3ecbce88cce070961ea19d68bdfafab3862fb" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcroco-0.6.12-4.el8.ppc64le.rpm", + "checksum": "sha256:f9607d29ed10edab125dba7a1972b0f783a0522eb29f03f825abbeb5281fbeeb" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libcurl-7.61.1-12.el8.ppc64le.rpm", + "checksum": "sha256:2c1a643202117f9bdf48b11c24b60a01c409f2ccdc43914a89ac980f7d692ae6" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libdb-5.3.28-39.el8.ppc64le.rpm", + "checksum": "sha256:e660d48e49bb3da5f5e8ad3e79b65184a95eeb4351b3f6d38e3024c332bbb570" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libdb-utils-5.3.28-39.el8.ppc64le.rpm", + "checksum": "sha256:6b0cfe88a81e314afa03ce297f2bb0470a29a8f13465ba4a52fc65550027cbda" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libfdisk-2.32.1-24.el8.ppc64le.rpm", + "checksum": "sha256:fb110b4fd708d68d41606e0120f5befbb171e6a9f8be2a23618284238fbf19dd" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libffi-3.1-22.el8.ppc64le.rpm", + "checksum": "sha256:d20bcdcb1e6a8d16a5df9cdc99744f907516b9ded51b671bd0a0f31189ac43a5" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgcc-8.3.1-5.1.el8.ppc64le.rpm", + "checksum": "sha256:1a92ddb2b7caa477d02eadcd97b1f4fb124359609dc827dfedb7de0976ebf824" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgcrypt-1.8.5-4.el8.ppc64le.rpm", + "checksum": "sha256:4f2725db0dc03a8bb729ccf6ced8fc4e8eae995afa7029decb7a7aa81e6eb417" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgomp-8.3.1-5.1.el8.ppc64le.rpm", + "checksum": "sha256:6b6b362f865498d59d17673d93fabe076015e7804462412e3da589335890f8d9" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libgpg-error-1.31-1.el8.ppc64le.rpm", + "checksum": "sha256:69997f597de86de2dedda20db0f5b516585751822162f4dacd01cbc2808a9155" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libidn2-2.2.0-1.el8.ppc64le.rpm", + "checksum": "sha256:7221e9c72741e31d3e954cae6a1b780b15da86abb70d6fdf3c125b1a440ce2b2" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libkcapi-1.2.0-2.el8.ppc64le.rpm", + "checksum": "sha256:d4fff4e2707628db04c16a2cd8fa0c5e9854084688acf74ca4c1db27ea9d2f8d" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.ppc64le.rpm", + "checksum": "sha256:4a44b9e5e7977128528c4108ef55d49e52290c51d376c6ffd177a6b59113fbf6" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libmetalink-0.1.3-7.el8.ppc64le.rpm", + "checksum": "sha256:5ea0604f773c0ae0e273206443a5f115e21010e8acb1d580a22e5ce0219ac991" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libmount-2.32.1-24.el8.ppc64le.rpm", + "checksum": "sha256:03318129f3b75d57abb1f15adf1ddc26c23fc178432c66b5ffc43e586c948428" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libnghttp2-1.33.0-3.el8_2.1.ppc64le.rpm", + "checksum": "sha256:530f8aa49c10d80202e2b3e2c2b505dbdcdc2c3b56231d5986b6388da3ffd12b" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.ppc64le.rpm", + "checksum": "sha256:7c458f0dfbd31662e5a8a91b847881dfba6ff04786bc21e7de230236ce8ffaa7" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpcap-1.9.1-4.el8.ppc64le.rpm", + "checksum": "sha256:9f526c50ff9fae2f6c1d02eb10b6ced74b3ee94e7292e7ad483076ab730c1eef" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpsl-0.20.2-6.el8.ppc64le.rpm", + "checksum": "sha256:95971777d5b9af4cc37788f0b9193c693de7dc2f0f842f341a5d2182af4edb24" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libpwquality-1.4.0-9.el8.ppc64le.rpm", + "checksum": "sha256:e02d721b2396471683a7f73d681ed4cc71bb2d50ef0e8390cc97ab047e4187a9" + }, + { + "name": "librtas", + "epoch": 0, + "version": "2.0.2", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/librtas-2.0.2-1.el8.ppc64le.rpm", + "checksum": "sha256:94b8f8ce9926a60524cba62e9695785bf12f3ca7f6de86cbcb510889e9e61509" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libseccomp-2.4.3-1.el8.ppc64le.rpm", + "checksum": "sha256:93e8eb519fee69ad0a90733dea8577670a1c62f02fce9348633880e0d9190f4b" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libselinux-2.9-3.el8.ppc64le.rpm", + "checksum": "sha256:a5fcf3d4d064289bd04a9f19cc204c8facaf389c0c10e47b075529f0601dc02c" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libselinux-utils-2.9-3.el8.ppc64le.rpm", + "checksum": "sha256:d07a535fd49579414267571a6e7286d38061e65dcffd1f947e32b8edeb0e7f58" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsemanage-2.9-3.el8.ppc64le.rpm", + "checksum": "sha256:6cc8c3ff2b465defb9ac46a2caf95d53c887d18f68bd43f21e6e3635b884d6ab" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsepol-2.9-1.el8.ppc64le.rpm", + "checksum": "sha256:4e4dc28e98b8470dfbb789d784b8bc5afc04dc7295047d2ee16d36ab4dbaba1d" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsigsegv-2.11-5.el8.ppc64le.rpm", + "checksum": "sha256:e1c727c81c7d54b21ebf7346d81ea57bbf77cdee59efc2c1bd57d78b45697de6" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libsmartcols-2.32.1-24.el8.ppc64le.rpm", + "checksum": "sha256:9bdf8e5f329b54f1ea45a5d5277d650be84f7bd2f1570d7c5e7ac743fd57cf1f" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libssh-0.9.4-2.el8.ppc64le.rpm", + "checksum": "sha256:8ec9594f8cb1eb3313cb8979201b0f85a914107fc4f706ea27727e977da056ee" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libstdc++-8.3.1-5.1.el8.ppc64le.rpm", + "checksum": "sha256:36ccdb1a1673d3f739a29105edc45c09074ec667cc470051c2d9c52bfa6b78b0" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libtasn1-4.13-3.el8.ppc64le.rpm", + "checksum": "sha256:97ffad7f79927ee908510ae381ada704827d369b5a0b8715214f51270a0984d3" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libtirpc-1.1.4-4.el8.ppc64le.rpm", + "checksum": "sha256:e6bdc7b1e5bb8b3c9d578fa1a88c4cbd3ff262b14857464a691b6afd34e38b90" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libunistring-0.9.9-3.el8.ppc64le.rpm", + "checksum": "sha256:a7db88e037715eb0ea86ffa464285615549b23178a14d691935685bdb6df4742" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libutempter-1.1.6-14.el8.ppc64le.rpm", + "checksum": "sha256:349d5e65aeee405ea53d10c651d541418f11af4bf5f436ab5cba8c07183f405e" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libuuid-2.32.1-24.el8.ppc64le.rpm", + "checksum": "sha256:e4dbbf5ba29de01b7121586f8bfc99305168d1db301ba121320344e344012704" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libverto-0.3.0-5.el8.ppc64le.rpm", + "checksum": "sha256:eb870676d56cd2212611a9814f6ab08b53a209d1bee37e38fdbc434b6a1600a1" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libxcrypt-4.1.1-4.el8.ppc64le.rpm", + "checksum": "sha256:81ca20194dbba8bb696a02f1f01d45b1ca73aa38a18d97173022fcf96e195156" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libxml2-2.9.7-8.el8.ppc64le.rpm", + "checksum": "sha256:679ba7cf5974aaeb4b50a926e8fa28821f48b71c182d50b1033bccb6fdc34a06" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/libzstd-1.4.4-1.el8.ppc64le.rpm", + "checksum": "sha256:0143da5903a3053bbd62714904db5a7c1aba3b9ff77c97d9126a4479d3047c58" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/lua-libs-5.3.4-11.el8.ppc64le.rpm", + "checksum": "sha256:756fe3065871f2c7c1f9635ae75119d1755dbb6a5ea62fae7660b410d9392e34" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/lz4-libs-1.8.3-2.el8.ppc64le.rpm", + "checksum": "sha256:e943b3e1fb71459be6ee74f944e7bcf6a0835858b48924501645eb00997b5d1b" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/mpfr-3.1.6-1.el8.ppc64le.rpm", + "checksum": "sha256:d3c4038a7a3be6987f74236394642be84092a9dd731317dfe5974af757c3ccfc" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ncurses-6.1-7.20180224.el8.ppc64le.rpm", + "checksum": "sha256:7d7280d0de03be269a1b078534d286496085416efef921996590bcce7db64736" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/ncurses-libs-6.1-7.20180224.el8.ppc64le.rpm", + "checksum": "sha256:bcd9e55362d6afab44a89acd877c8c0a8ae27572028bfc9282f3bfec0d21e27c" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/nettle-3.4.1-2.el8.ppc64le.rpm", + "checksum": "sha256:68c10fbde60ad63306c334df256056bc93eb04d56eaba5ddc40254e81e815056" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openldap-2.4.46-15.el8.ppc64le.rpm", + "checksum": "sha256:1130c50d23d464653fbca78aa597b1c65d22c9163c70cf3011a9a116af76bbca" + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssh-8.0p1-5.el8.ppc64le.rpm", + "checksum": "sha256:739a6551c66057a68275d53d3ddeb35f1329cd4be1deea3d4103576cf7667cc8" + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssh-server-8.0p1-5.el8.ppc64le.rpm", + "checksum": "sha256:e18d17088ddaf866d7b440041554461a3188d067fa417baf6f5b070c2f9cee30" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssl-1.1.1g-9.el8.ppc64le.rpm", + "checksum": "sha256:b1184fa6ab84322f715418f76a8e260c6a6bb352307cce9732d72ed3f0ebdec0" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssl-libs-1.1.1g-9.el8.ppc64le.rpm", + "checksum": "sha256:feee80d14e2857f2a229cfed7aea85b74b6f2350532816e824c09f356dc38126" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/openssl-pkcs11-0.4.10-2.el8.ppc64le.rpm", + "checksum": "sha256:0ecb10a5141fd74ad9165fef9dd7d9485a34ea1b10605a9d4b61eefe60b767d9" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/os-prober-1.74-6.el8.ppc64le.rpm", + "checksum": "sha256:0970bde39d7cc1dfebda51e4359f63821fe8dd573d46253fc471f8466c79ac82" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/p11-kit-0.23.14-5.el8_0.ppc64le.rpm", + "checksum": "sha256:dfd1a319a66586bb1027b9a7a674f17b18070e3b389eb8dcd34ffad3ff485725" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/p11-kit-trust-0.23.14-5.el8_0.ppc64le.rpm", + "checksum": "sha256:7f3337d8024c8eb5d67ed830c2ed1c5b046887d4806ea22cf6e8f3f77b8d7e6f" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pam-1.3.1-11.el8.ppc64le.rpm", + "checksum": "sha256:fabddaa901a0de98c661612755fbe4ebe4ac1ec372a5e0ec6b7874ef6901340f" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pcre-8.42-4.el8.ppc64le.rpm", + "checksum": "sha256:e773a81f7cba7beffb23d9ebb6ce545ba4b1556091544f73ff57d263cc552176" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pcre2-10.32-2.el8.ppc64le.rpm", + "checksum": "sha256:d79c92d015fa952edf2a4ad75f95042139fbf8b4323f24e939e1ed06481253d9" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/pigz-2.4-4.el8.ppc64le.rpm", + "checksum": "sha256:d8b5b571fb84c7ccfa24f8a20460471d41fc4487d6d0c34f91fbeaba4c857eb2" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/platform-python-3.6.8-30.el8.ppc64le.rpm", + "checksum": "sha256:704622626b2938eee1c096c1ecf1e5fc88be4e4eac80a911d0c2ee893f9657b1" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/policycoreutils-2.9-9.el8.ppc64le.rpm", + "checksum": "sha256:efb004153a5a6a96330b8a5371b02ce4dc22a8cf6d28f5b928cc443cf3416285" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/popt-1.16-14.el8.ppc64le.rpm", + "checksum": "sha256:bbfd0c8d360ae86528c2d06b6b64ceb2d6a974dea101ba5e1268740b689142b9" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/procps-ng-3.3.15-2.el8.ppc64le.rpm", + "checksum": "sha256:ccd0b65f90f2db606a9b38f00c71f5bcd7611fafde92e185a57d3e2a3f027787" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-libs-3.6.8-30.el8.ppc64le.rpm", + "checksum": "sha256:495c3fc6f15c5daef8686fd01d1f7008bbc72ca9c963da1ae3cf60ffc519f48d" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/readline-7.0-10.el8.ppc64le.rpm", + "checksum": "sha256:d8ba6a91610d87dfb599018c887514af663a0f963ed6b25a83bac8fba56fa266" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/redhat-release-8.3-0.2.el8.ppc64le.rpm", + "checksum": "sha256:16294bc45d609de6ce07b660fadc851022e43d00a13f3c98c1f45064abf591d7" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/redhat-release-eula-8.3-0.2.el8.ppc64le.rpm", + "checksum": "sha256:b2d090246903da9162c06912dcfed747df9e7ba1b9f029a98c96c4155f68ce67" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-4.14.3-4.el8.ppc64le.rpm", + "checksum": "sha256:ba5b6364787be1ce76c7d5d3f7861f75157db6c5354f4b6e7b26ba8962fb226d" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-libs-4.14.3-4.el8.ppc64le.rpm", + "checksum": "sha256:acdee02b0e12502f5010ebfeb9d3cec41172e83db45a5e941085a8edba1bd408" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.ppc64le.rpm", + "checksum": "sha256:5919c5de67dbc1f44a553cbb4037572c258bb394ff27ca838b2198d05a0c2dad" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sed-4.5-2.el8.ppc64le.rpm", + "checksum": "sha256:183ae7a707951036dd77805d75aae1dbb055ca52d8fecdc6ef21d5e1518fca4d" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/shadow-utils-4.6-10.el8.ppc64le.rpm", + "checksum": "sha256:94700eed0bd231ee73fac06e38ce66573466039c0454774bf268ea50a03fe056" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/shared-mime-info-1.9-3.el8.ppc64le.rpm", + "checksum": "sha256:d2206467c216ee77262401385a61b540eeaabca9a44b9ab864c993962ba76758" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/sqlite-libs-3.26.0-10.el8.ppc64le.rpm", + "checksum": "sha256:dcf427833f63e4672ecf04100181b671235ae2b50d450a25976ea176ead363fb" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/systemd-239-36.el8.ppc64le.rpm", + "checksum": "sha256:97e8ec14c0569aee6633342fd3b05507b8c30c9d62b52aff0c3e693640d78938" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/systemd-libs-239-36.el8.ppc64le.rpm", + "checksum": "sha256:be5a5ad0d3338da31fca41645852b03c748c41e77bd715619033f71496f3c875" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/systemd-pam-239-36.el8.ppc64le.rpm", + "checksum": "sha256:b9a80c6b1e8bff298ad6215248ce9d193d734dc038f1de211c01a2e118b9606f" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/systemd-udev-239-36.el8.ppc64le.rpm", + "checksum": "sha256:f10990a6f2e8affe55991a46ca80eda2af8c0c8a4aada3b623ba740abfb059cf" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/trousers-0.3.14-4.el8.ppc64le.rpm", + "checksum": "sha256:d55a783930503e7f1590bc2ad10d9fa184ed3cb44e2ca85ae2bbe11fcbf166b8" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/trousers-lib-0.3.14-4.el8.ppc64le.rpm", + "checksum": "sha256:3f5c97c72cbbe552e9f7183d1f8eb477a3f46647bb513a175a8c158d3eba3dee" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/util-linux-2.32.1-24.el8.ppc64le.rpm", + "checksum": "sha256:7a05e800e37b4aa74e657a829097090faf013338056c8bd6ebfeee5ae4467a22" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/which-2.21-12.el8.ppc64le.rpm", + "checksum": "sha256:241a563df5ae3b3b49d45cbf9e67b6932b8345b3fbb40029dbb3b0834cf3db16" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/xz-5.2.4-3.el8.ppc64le.rpm", + "checksum": "sha256:2b2e0d9a397d27c7076f05ab309c71ebffdf2c33df95de51c700af181899c87e" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/xz-libs-5.2.4-3.el8.ppc64le.rpm", + "checksum": "sha256:37e4f7e854765b98e8dd10986b758631c7ca00942bc53efb4003ee326e1cc834" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os/Packages/zlib-1.2.11-15.el8.ppc64le.rpm", + "checksum": "sha256:df50c6f03ef2fa2d8f900a4a95d84921511b5e435533677f3067c1fd47f84b93" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/libxkbcommon-0.9.1-1.el8.ppc64le.rpm", + "checksum": "sha256:e9d3adb5df960913105864554af0d17ac26287f7454c13865895cec93c57cc6c" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "ppc64le", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/memstrack-0.1.8-1.el8.ppc64le.rpm", + "checksum": "sha256:d863808793a34bae10d7bf066b68be37883eb38cf117172de5e47c9eb729cb3d" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "checksums": { + "0": "sha256:c7997a53898ae29deadd2ac318155ea27856b6446e1150265ecdb08a8d30ff02", + "1": "sha256:9fecb979241b08021ac74e0f5fa3fd3cf80cecdd1dcc3a65445b29b20af0b545" + } + }, + "image-info": { + "bootmenu": [], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:999:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "redhat:x:1000:", + "render:x:998:", + "root:x:0:", + "ssh_keys:x:996:", + "sshd:x:74:", + "sys:x:3:", + "systemd-coredump:x:997:", + "systemd-journal:x:190:", + "systemd-resolve:x:193:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "os-release": { + "ANSI_COLOR": "0;31", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:redhat:enterprise_linux:8.3:beta", + "HOME_URL": "https://www.redhat.com/", + "ID": "rhel", + "ID_LIKE": "fedora", + "NAME": "Red Hat Enterprise Linux", + "PLATFORM_ID": "platform:el8", + "PRETTY_NAME": "Red Hat Enterprise Linux 8.3 Beta (Ootpa)", + "REDHAT_BUGZILLA_PRODUCT": "Red Hat Enterprise Linux 8", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "8.3", + "REDHAT_SUPPORT_PRODUCT": "Red Hat Enterprise Linux", + "REDHAT_SUPPORT_PRODUCT_VERSION": "8.3 Beta", + "VERSION": "8.3 (Ootpa)", + "VERSION_ID": "8.3" + }, + "packages": [ + "acl-2.2.53-1.el8.ppc64le", + "audit-libs-3.0-0.17.20191104git1c2f876.el8.ppc64le", + "basesystem-11-5.el8.noarch", + "bash-4.4.19-12.el8.ppc64le", + "brotli-1.0.6-2.el8.ppc64le", + "bzip2-libs-1.0.6-26.el8.ppc64le", + "ca-certificates-2019.2.32-80.0.el8_1.noarch", + "chkconfig-1.13-2.el8.ppc64le", + "coreutils-8.30-8.el8.ppc64le", + "coreutils-common-8.30-8.el8.ppc64le", + "cpio-2.12-8.el8.ppc64le", + "cracklib-2.9.6-15.el8.ppc64le", + "cracklib-dicts-2.9.6-15.el8.ppc64le", + "crypto-policies-20200610-1.git0ac8b1f.el8.noarch", + "crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch", + "cryptsetup-libs-2.3.3-1.el8.ppc64le", + "curl-7.61.1-12.el8.ppc64le", + "cyrus-sasl-lib-2.1.27-5.el8.ppc64le", + "dbus-1.12.8-11.el8.ppc64le", + "dbus-common-1.12.8-11.el8.noarch", + "dbus-daemon-1.12.8-11.el8.ppc64le", + "dbus-libs-1.12.8-11.el8.ppc64le", + "dbus-tools-1.12.8-11.el8.ppc64le", + "device-mapper-1.02.171-3.el8.ppc64le", + "device-mapper-libs-1.02.171-3.el8.ppc64le", + "diffutils-3.6-6.el8.ppc64le", + "dracut-049-89.git20200625.el8.ppc64le", + "elfutils-debuginfod-client-0.180-1.el8.ppc64le", + "elfutils-default-yama-scope-0.180-1.el8.noarch", + "elfutils-libelf-0.180-1.el8.ppc64le", + "elfutils-libs-0.180-1.el8.ppc64le", + "expat-2.2.5-4.el8.ppc64le", + "file-5.33-16.el8.ppc64le", + "file-libs-5.33-16.el8.ppc64le", + "filesystem-3.8-3.el8.ppc64le", + "findutils-4.6.0-20.el8.ppc64le", + "gawk-4.2.1-1.el8.ppc64le", + "gdbm-1.18-1.el8.ppc64le", + "gdbm-libs-1.18-1.el8.ppc64le", + "gettext-0.19.8.1-17.el8.ppc64le", + "gettext-libs-0.19.8.1-17.el8.ppc64le", + "glib2-2.56.4-8.el8.ppc64le", + "glibc-2.28-127.el8.ppc64le", + "glibc-all-langpacks-2.28-127.el8.ppc64le", + "glibc-common-2.28-127.el8.ppc64le", + "gmp-6.1.2-10.el8.ppc64le", + "gnutls-3.6.14-3.el8.ppc64le", + "gpg-pubkey-d4082792-5b32db75", + "gpg-pubkey-fd431d51-4ae0493b", + "grep-3.1-6.el8.ppc64le", + "grub2-common-2.02-84.el8.noarch", + "grub2-tools-2.02-84.el8.ppc64le", + "grub2-tools-minimal-2.02-84.el8.ppc64le", + "grubby-8.40-41.el8.ppc64le", + "gzip-1.9-9.el8.ppc64le", + "hardlink-1.3-6.el8.ppc64le", + "info-6.5-6.el8.ppc64le", + "iptables-libs-1.8.4-14.el8.ppc64le", + "json-c-0.13.1-0.2.el8.ppc64le", + "kbd-2.0.4-10.el8.ppc64le", + "kbd-legacy-2.0.4-10.el8.noarch", + "kbd-misc-2.0.4-10.el8.noarch", + "keyutils-libs-1.5.10-6.el8.ppc64le", + "kmod-25-16.el8.ppc64le", + "kmod-libs-25-16.el8.ppc64le", + "kpartx-0.8.4-2.el8.ppc64le", + "krb5-libs-1.18.2-3.el8.ppc64le", + "libacl-2.2.53-1.el8.ppc64le", + "libarchive-3.3.2-9.el8.ppc64le", + "libattr-2.4.48-3.el8.ppc64le", + "libblkid-2.32.1-24.el8.ppc64le", + "libcap-2.26-4.el8.ppc64le", + "libcap-ng-0.7.9-5.el8.ppc64le", + "libcom_err-1.45.6-1.el8.ppc64le", + "libcroco-0.6.12-4.el8.ppc64le", + "libcurl-7.61.1-12.el8.ppc64le", + "libdb-5.3.28-39.el8.ppc64le", + "libdb-utils-5.3.28-39.el8.ppc64le", + "libfdisk-2.32.1-24.el8.ppc64le", + "libffi-3.1-22.el8.ppc64le", + "libgcc-8.3.1-5.1.el8.ppc64le", + "libgcrypt-1.8.5-4.el8.ppc64le", + "libgomp-8.3.1-5.1.el8.ppc64le", + "libgpg-error-1.31-1.el8.ppc64le", + "libidn2-2.2.0-1.el8.ppc64le", + "libkcapi-1.2.0-2.el8.ppc64le", + "libkcapi-hmaccalc-1.2.0-2.el8.ppc64le", + "libmetalink-0.1.3-7.el8.ppc64le", + "libmount-2.32.1-24.el8.ppc64le", + "libnghttp2-1.33.0-3.el8_2.1.ppc64le", + "libnsl2-1.2.0-2.20180605git4a062cf.el8.ppc64le", + "libpcap-1.9.1-4.el8.ppc64le", + "libpsl-0.20.2-6.el8.ppc64le", + "libpwquality-1.4.0-9.el8.ppc64le", + "librtas-2.0.2-1.el8.ppc64le", + "libseccomp-2.4.3-1.el8.ppc64le", + "libselinux-2.9-3.el8.ppc64le", + "libselinux-utils-2.9-3.el8.ppc64le", + "libsemanage-2.9-3.el8.ppc64le", + "libsepol-2.9-1.el8.ppc64le", + "libsigsegv-2.11-5.el8.ppc64le", + "libsmartcols-2.32.1-24.el8.ppc64le", + "libssh-0.9.4-2.el8.ppc64le", + "libssh-config-0.9.4-2.el8.noarch", + "libstdc++-8.3.1-5.1.el8.ppc64le", + "libtasn1-4.13-3.el8.ppc64le", + "libtirpc-1.1.4-4.el8.ppc64le", + "libunistring-0.9.9-3.el8.ppc64le", + "libutempter-1.1.6-14.el8.ppc64le", + "libuuid-2.32.1-24.el8.ppc64le", + "libverto-0.3.0-5.el8.ppc64le", + "libxcrypt-4.1.1-4.el8.ppc64le", + "libxkbcommon-0.9.1-1.el8.ppc64le", + "libxml2-2.9.7-8.el8.ppc64le", + "libzstd-1.4.4-1.el8.ppc64le", + "lua-libs-5.3.4-11.el8.ppc64le", + "lz4-libs-1.8.3-2.el8.ppc64le", + "memstrack-0.1.8-1.el8.ppc64le", + "mpfr-3.1.6-1.el8.ppc64le", + "ncurses-6.1-7.20180224.el8.ppc64le", + "ncurses-base-6.1-7.20180224.el8.noarch", + "ncurses-libs-6.1-7.20180224.el8.ppc64le", + "nettle-3.4.1-2.el8.ppc64le", + "openldap-2.4.46-15.el8.ppc64le", + "openssh-8.0p1-5.el8.ppc64le", + "openssh-server-8.0p1-5.el8.ppc64le", + "openssl-1.1.1g-9.el8.ppc64le", + "openssl-libs-1.1.1g-9.el8.ppc64le", + "openssl-pkcs11-0.4.10-2.el8.ppc64le", + "os-prober-1.74-6.el8.ppc64le", + "p11-kit-0.23.14-5.el8_0.ppc64le", + "p11-kit-trust-0.23.14-5.el8_0.ppc64le", + "pam-1.3.1-11.el8.ppc64le", + "pcre-8.42-4.el8.ppc64le", + "pcre2-10.32-2.el8.ppc64le", + "pigz-2.4-4.el8.ppc64le", + "platform-python-3.6.8-30.el8.ppc64le", + "platform-python-pip-9.0.3-17.el8.noarch", + "platform-python-setuptools-39.2.0-6.el8.noarch", + "policycoreutils-2.9-9.el8.ppc64le", + "popt-1.16-14.el8.ppc64le", + "procps-ng-3.3.15-2.el8.ppc64le", + "publicsuffix-list-dafsa-20180723-1.el8.noarch", + "python3-libs-3.6.8-30.el8.ppc64le", + "python3-pip-wheel-9.0.3-17.el8.noarch", + "python3-setuptools-wheel-39.2.0-6.el8.noarch", + "readline-7.0-10.el8.ppc64le", + "redhat-release-8.3-0.2.el8.ppc64le", + "redhat-release-eula-8.3-0.2.el8.ppc64le", + "rpm-4.14.3-4.el8.ppc64le", + "rpm-libs-4.14.3-4.el8.ppc64le", + "rpm-plugin-selinux-4.14.3-4.el8.ppc64le", + "sed-4.5-2.el8.ppc64le", + "selinux-policy-3.14.3-48.el8.noarch", + "selinux-policy-targeted-3.14.3-48.el8.noarch", + "setup-2.12.2-6.el8.noarch", + "shadow-utils-4.6-10.el8.ppc64le", + "shared-mime-info-1.9-3.el8.ppc64le", + "sqlite-libs-3.26.0-10.el8.ppc64le", + "systemd-239-36.el8.ppc64le", + "systemd-libs-239-36.el8.ppc64le", + "systemd-pam-239-36.el8.ppc64le", + "systemd-udev-239-36.el8.ppc64le", + "trousers-0.3.14-4.el8.ppc64le", + "trousers-lib-0.3.14-4.el8.ppc64le", + "tzdata-2020a-1.el8.noarch", + "util-linux-2.32.1-24.el8.ppc64le", + "which-2.21-12.el8.ppc64le", + "xkeyboard-config-2.28-1.el8.noarch", + "xz-5.2.4-3.el8.ppc64le", + "xz-libs-5.2.4-3.el8.ppc64le", + "zlib-1.2.11-15.el8.ppc64le" + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "redhat:x:1000:1000::/home/redhat:/bin/bash", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/etc/machine-id": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/proc": ".M.......", + "/sys": ".M.......", + "/usr/bin/newgidmap": "........P", + "/usr/bin/newuidmap": "........P", + "/usr/libexec/openssh/ssh-keysign": "......G..", + "/var/log/lastlog": ".M....G.." + }, + "missing": [ + "/etc/systemd/system/dbus-org.freedesktop.resolve1.service" + ] + }, + "services-disabled": [ + "console-getty.service", + "ctrl-alt-del.target", + "debug-shell.service", + "exit.target", + "fstrim.timer", + "halt.target", + "kexec.target", + "poweroff.target", + "reboot.target", + "remote-cryptsetup.target", + "runlevel0.target", + "runlevel6.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "systemd-resolved.service", + "tcsd.service", + "tmp.mount" + ], + "services-enabled": [ + "autovt@.service", + "getty@.service", + "remote-fs.target", + "selinux-autorelabel-mark.service", + "sshd.service" + ], + "timezone": "UTC" + } +} \ No newline at end of file diff --git a/test/cases/rhel_8-s390x-qcow2-boot.json b/test/cases/rhel_8-s390x-qcow2-boot.json new file mode 100644 index 0000000..a426cec --- /dev/null +++ b/test/cases/rhel_8-s390x-qcow2-boot.json @@ -0,0 +1,10888 @@ +{ + "boot": { + "type": "qemu" + }, + "compose-request": { + "distro": "rhel-8", + "arch": "s390x", + "image-type": "qcow2", + "repositories": [ + { + "baseurl": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + }, + { + "baseurl": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + } + ], + "filename": "disk.qcow2", + "blueprint": { + "name": "qcow2-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:01273ffc5443535d055b7962e173a10028fd2f128124480f587f8f9d7f4d4688": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-MIME-Base64-3.15-396.el8.s390x.rpm" + }, + "sha256:01740c9fbfd4b6918cfd9cb4b9a536328510b296404edb4028ad4480f1099980": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sudo-1.8.29-5.el8.s390x.rpm" + }, + "sha256:02b5629e0970f9f0bb6aeb6e63ae8d427492dcf1c3d6b471d624495e386a584e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsss_nss_idmap-2.2.3-20.el8.s390x.rpm" + }, + "sha256:02bae2823210d586e266d37dad90fb9daed0787c7932bbe0520b769afc6d8d76": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-unbound-1.7.3-10.el8.s390x.rpm" + }, + "sha256:03cf8cdeeaf80274436608b48a2c7451a9de386283074f58be28dec5b95b193b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/lsscsi-0.30-1.el8.s390x.rpm" + }, + "sha256:03d1b5541823ba8637e04c69d0e00d711e0c799e764d6191d6ad989b459004e3": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/brotli-1.0.6-1.el8.s390x.rpm" + }, + "sha256:04ae113a2f41daae0c19672c9920f26bb46960e79ce46e626591a7e278d636a3": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/krb5-libs-1.17-18.el8.s390x.rpm" + }, + "sha256:04e227546e73954475809db05a6133e4f978ae026423bd800247370f8758b31e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dosfstools-4.1-6.el8.s390x.rpm" + }, + "sha256:05bd495695df8a78448ff0d2f2df0480f0bc49c9b7065bc2b1ceba41b42f1772": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-PathTools-3.74-1.el8.s390x.rpm" + }, + "sha256:071b7ea81c6aa0609be6adae6df85a9a68d7e6b3514c6a32c23a0d7d7efc04d1": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/logrotate-3.14.0-3.el8.s390x.rpm" + }, + "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-prettytable-0.7.2-14.el8.noarch.rpm" + }, + "sha256:079483da2949b3bb56df6d265a700b5cc67d3ff1f945afa1c519b0d53772c199": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libuuid-2.32.1-22.el8.s390x.rpm" + }, + "sha256:07ce8c199fab0eb3b40b0b5d4736694c92c42892f26bf05cdd96896ac22c2e50": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.s390x.rpm" + }, + "sha256:07f8f24c26ec3b1716c37c9b212f4f3397dcb3eb349ef5fe09bb444654fe0033": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/popt-1.16-14.el8.s390x.rpm" + }, + "sha256:08178dfd67abc7e7984e94e62289d78ce84ead317c512ccb6596f7a752984dc7": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libevent-2.1.8-5.el8.s390x.rpm" + }, + "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-jinja2-2.10.1-2.el8_0.noarch.rpm" + }, + "sha256:08a6521ad991a23812bfe457fcdd03de655eb71c4f5dc580fa8c291cbb4c8599": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/vim-minimal-8.0.1763-13.el8.s390x.rpm" + }, + "sha256:0914bb1e4fd12735f4919734cb42871d5a576dfe8c3df82e9de3d867c87755c1": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libassuan-2.5.1-3.el8.s390x.rpm" + }, + "sha256:09523f0066c6f8a3cd0af3cbcf504b76814b2685dc91f79d75c7f990801a7765": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cronie-anacron-1.5.2-4.el8.s390x.rpm" + }, + "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:09c4c66589d924279dd5c63dfdbb4a19b6e2927f01f9a6958b519edd1dd1043d": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kernel-modules-4.18.0-193.el8.s390x.rpm" + }, + "sha256:0a2ac458890bace077929cd545f55dcd22b93d2b6a2fa6c1583e0ed41ff7a7ab": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-glib-0.110-2.el8.s390x.rpm" + }, + "sha256:0a3f52922caaa3b8213d350c3c955558d77fe31fe74f27fe58f178f93f381d56": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/mpfr-3.1.6-1.el8.s390x.rpm" + }, + "sha256:0af540f9af46e2ed891119dab6189e425323ac0742e0dd0f08b6df4e3ecb7092": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libidn2-2.2.0-1.el8.s390x.rpm" + }, + "sha256:0c3e22cf2e8ab8b4c4f043f043e4e71dfccbe9b30ecab3a6532f1dddcc06662c": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/coreutils-common-8.30-6.el8.s390x.rpm" + }, + "sha256:0cd56334755c7cbc9a4b18d9746dc3cae765a9ae8231b26e1e740a447d82c499": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cyrus-sasl-lib-2.1.27-1.el8.s390x.rpm" + }, + "sha256:0e6d88ed1b7038d234b0cbec9bdcf9239efc898993cfb2092ffa7fe52864d9a7": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gnupg2-2.2.9-1.el8.s390x.rpm" + }, + "sha256:10a17648fb1e8e94d70ffe93155760ac0d72fa4739beb3b165b702c0bd120be4": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/which-2.21-12.el8.s390x.rpm" + }, + "sha256:1201094e719702586fb1bf5a90c1871ca0b98503e712bfa5d1a43ecca4866627": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsss_certmap-2.2.3-20.el8.s390x.rpm" + }, + "sha256:1206464e80ce9c9730e029702fda02a3510294d334a559215a7d6361c457cd46": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libxkbcommon-0.9.1-1.el8.s390x.rpm" + }, + "sha256:126bbe586fe4116b343fc349c80480f01d597c2a41abec5bc15019b126f51fdc": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/acl-2.2.53-1.el8.s390x.rpm" + }, + "sha256:13e2716cf8b28d92df079f55cf5f78c280f8d429e619fe22c80abef49c4f901e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/pinentry-1.1.0-2.el8.s390x.rpm" + }, + "sha256:13eee378f386ece19fbd60558a2ed985eb5c32a076235c7ec15b49032888c828": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libpng-1.6.34-5.el8.s390x.rpm" + }, + "sha256:1582141ead8ddbe08290ed28c02274c58d2345fbd5263918f197d5b64503e1c9": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-librepo-1.11.0-2.el8.s390x.rpm" + }, + "sha256:1594afba86593ec614299ef6af255755a98ea55a34a72a22fdc9d80a040be39d": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/abattis-cantarell-fonts-0.0.25-4.el8.noarch.rpm" + }, + "sha256:15d24747a5d35c5c8872d1264e2d37f46102155086eff7ee970db5b9cb0be497": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsss_sudo-2.2.3-20.el8.s390x.rpm" + }, + "sha256:167a35f5dd48fb4a632cf00ea21337689a1b78e5bb36254a2a9c6f5196b98d88": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-libdnf-0.39.1-5.el8.s390x.rpm" + }, + "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/crontabs-1.11-16.20150630git.el8.noarch.rpm" + }, + "sha256:16a81bf1774e42134b7ea667adedd1a76bb7fc482163e1f217b0131fd55b2623": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-newt-0.52.20-11.el8.s390x.rpm" + }, + "sha256:186a83e25f1758b3efaf84330ce0ff548c9878d7f4590fcfbbf9f066abc095e0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-macros-5.26.3-416.el8.s390x.rpm" + }, + "sha256:18ad184245a885a9f2ef53c58aef0ef70fe4e4d6c7728d72b2b6527117f63b61": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libselinux-2.9-3.el8.s390x.rpm" + }, + "sha256:18c6c5fbd998c4d642b2dba059ba5042288b2f566cb03b7b45541b556b95f29d": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssl-pkcs11-0.4.10-2.el8.s390x.rpm" + }, + "sha256:18f6ad86cc7f681783183746576ba0cf5b9f0eee9ab18adb615bf6398404bb74": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libacl-2.2.53-1.el8.s390x.rpm" + }, + "sha256:19bb9e23dd56bfc1c29eb620bdd6f059fbea0f4d9a682e71793c52573dc2b5a5": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libpsl-0.20.2-5.el8.s390x.rpm" + }, + "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm" + }, + "sha256:1a47d3d89a38ce0caf4136f981e06c643bfb19f86ff014d4db8b923340612692": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/systemd-pam-239-29.el8.s390x.rpm" + }, + "sha256:1abf445376ec2530ba601838496ce0608edeadfe43a6b2114827811979be503d": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsoup-2.62.3-1.el8.s390x.rpm" + }, + "sha256:1af8f3ff12416a7a7b105840f53ada599e6e276ed08f2dea803ad0b21f962968": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/tar-1.30-4.el8.s390x.rpm" + }, + "sha256:1b1b72c2a65cd75c042700b48a534c20072b5174f8010c5e0aff0a54c8397938": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/virt-what-1.18-6.el8.s390x.rpm" + }, + "sha256:1b64c8492c71a96a8a47b4a041acf71b5792265cb7846fb2ff3bb250f7d98f56": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-gobject-3.28.3-1.el8.s390x.rpm" + }, + "sha256:1b879ebad67b32ba9e2a9237b91854cdd0ec5c9eb4a9c1c40462d36596405ec1": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libini_config-1.3.1-39.el8.s390x.rpm" + }, + "sha256:1be9f6acd5fb99b2451f2b138ddcc90b0aae002a8ec5fb08062c32c473d221c0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libtevent-0.10.0-2.el8.s390x.rpm" + }, + "sha256:1ca52cdabb94a8efd57626d4c38061b029e64b042b01b07a6cbad19bde6e86d4": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/PackageKit-glib-1.1.12-4.el8.s390x.rpm" + }, + "sha256:1cc3e427d85ddd7caeda2c9a5063af110987ef0009b19a3924757e76e0f7ac8a": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gmp-6.1.2-10.el8.s390x.rpm" + }, + "sha256:1d932b7b3d0cbb735e335e556fd825494259485d41c562c3bd532fdd0b7256f3": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.s390x.rpm" + }, + "sha256:1eca3ef1ec2edeae041c3d55687c806db77a2a1e0837fa4937b664e37b903e22": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/elfutils-libelf-0.178-7.el8.s390x.rpm" + }, + "sha256:1ee67a3650c2d0274c472bcb8bb261c3d508e44c856f6efeb19bfc684030766d": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-subscription-manager-rhsm-1.26.16-1.el8.s390x.rpm" + }, + "sha256:2020a1fe4a1643ebdd76f6ae3a0942f115e80279625d54a783f804711915e5a3": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cracklib-2.9.6-15.el8.s390x.rpm" + }, + "sha256:21a3e46a2a6ac7956b19be0bdf43f0be2d216c8455ca704f3bb818834874a82b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libldb-2.0.7-3.el8.s390x.rpm" + }, + "sha256:21b1497d132a52c93129700d58c44ba8c36af8da1bbd23fb408c00c3117c1012": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Pod-Escapes-1.07-395.el8.noarch.rpm" + }, + "sha256:21f23d4f9a04341117908ab4b778c287a0ffc04020797254534d56675cc99a33": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libpath_utils-0.2.1-39.el8.s390x.rpm" + }, + "sha256:22f3b4f5555795c96c7faa32cce72a2cc975c536397c480a296c5d11a3cc41a6": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/NetworkManager-1.22.8-4.el8.s390x.rpm" + }, + "sha256:23977fcf0abfaf9bb523adaf7432c5528c5add63508d4fb48a92c0b39a795317": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dracut-squash-049-70.git20200228.el8.s390x.rpm" + }, + "sha256:2429abaf8afb74f4fdc8050e4c90e315316186d372a809e062a914808d02d907": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/fuse-libs-2.9.7-12.el8.s390x.rpm" + }, + "sha256:242cf344a4a0f0439c325d0d8e58cc7d35a31157db4092bfc27c5db815ea62ea": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-cryptography-2.3-3.el8.s390x.rpm" + }, + "sha256:251ae9c0813ccc300bb793d143241a6dff5371d3836f3a5b448920b4fb5c3766": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dhcp-client-4.3.6-40.el8.s390x.rpm" + }, + "sha256:25ff1ab94430493bde65da6a800bb2638edc64dca38971eba2c798475cc18b97": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Text-ParseWords-3.30-395.el8.noarch.rpm" + }, + "sha256:265c87cf9f13796cb985d22c5c743ac367db8ca9a6a793ce1d8c77046d99117a": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cronie-1.5.2-4.el8.s390x.rpm" + }, + "sha256:268928928fa5d36b3b63387a17d91824924116fd3e3ce4016b9339d38e66b722": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-libs-3.6.8-23.el8.s390x.rpm" + }, + "sha256:26e280280f7ec0fa24047c73acae59d272a1ff19d652a3302ca7a04877f7f081": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-cairo-1.16.3-6.el8.s390x.rpm" + }, + "sha256:277708213acd2b535f20275de72275132bdee2d478382f12a28e7b13a3d34366": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gpgme-1.10.0-6.el8.s390x.rpm" + }, + "sha256:282edb776a576a2745fe7c3278c813e0f8997e27b0ace2507dcf14f50a5f9840": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/pcre2-10.32-1.el8.s390x.rpm" + }, + "sha256:286a8636c965433b8234c7780243732441b0650fe6633359a1b8950cd4e320a5": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/numactl-libs-2.0.12-9.el8.s390x.rpm" + }, + "sha256:28f0e364321eb824fd9bd1d104f0684d7a94dd0e7b07cf9c2b0ca645253baada": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/polkit-0.115-11.el8.s390x.rpm" + }, + "sha256:2976f2c007ac981a70e414960cd7426f446ebc8a0bf8feae7a6ece06c63ffefb": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Getopt-Long-2.50-4.el8.noarch.rpm" + }, + "sha256:29f3de36d25fe893787e4c375a4242ff9baec204158025187269a8379116deaa": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsigsegv-2.11-5.el8.s390x.rpm" + }, + "sha256:2a45920a9540e5057920f7c987d3daf910240a6d1ee63d1fa80fcdf3cee4fd71": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/xz-libs-5.2.4-3.el8.s390x.rpm" + }, + "sha256:2aa79d4a09d234c08afc877e292e68244835e447348e85ebee431b0be1fe5104": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-rpm-4.14.2-37.el8.s390x.rpm" + }, + "sha256:2b09ab68296b57a39b302498bdb837c8220e4de3aa1db7a197f23eb6b75cdacd": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/p11-kit-0.23.14-5.el8_0.s390x.rpm" + }, + "sha256:2cc3efed29198a6e4fae393b8db2661e5134b1abba4c6d056b258576925a26ee": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/grubby-8.40-38.el8.s390x.rpm" + }, + "sha256:2cd240f59d6570295931d54dfb392604f524572cfe252b1b1c8cec7793736e4d": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-threads-shared-1.58-2.el8.s390x.rpm" + }, + "sha256:2d457d282782cbf40c42e96e1c1e93ac947ce0d5f55985c97b307d746e7e56e2": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcomps-0.1.11-4.el8.s390x.rpm" + }, + "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-pyOpenSSL-18.0.0-1.el8.noarch.rpm" + }, + "sha256:2ee0a45ec4832e276ee130d8440cd29de05b7fd3ca335fe4635499a8bcbdfb73": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-HTTP-Tiny-0.074-1.el8.noarch.rpm" + }, + "sha256:302b0d285149d53df9a7805cc664b1a6407c27fc94e4331b9974a21da61c658e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/librepo-1.11.0-2.el8.s390x.rpm" + }, + "sha256:30624f95cd736ceec96b7e2dfc4c4594d38825139c670dcd09b323faeb46d87a": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/bash-4.4.19-10.el8.s390x.rpm" + }, + "sha256:3092ab7fc56e099d2f05167fb582076a29b1c1a2512e4fbabfd3f9000431a66b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/shadow-utils-4.6-8.el8.s390x.rpm" + }, + "sha256:309365c7a2ea977c132ecf9394bfa402b6fae9ba53226f45a3cc07659ca48c24": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/librhsm-0.0.3-3.el8.s390x.rpm" + }, + "sha256:31951582ea375a15365e9a42ec6c0cd8a61e6f593e00f0da013d79ac967878b7": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/systemd-libs-239-29.el8.s390x.rpm" + }, + "sha256:32af9fde2c066dafb8ec318ec081ab767b2d85d8fdb656f3c72eb3718c2f6923": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/pciutils-libs-3.5.6-4.el8.s390x.rpm" + }, + "sha256:333c9c48b7fcb74ee4ec16dbb41acbb3fe388dc18090e8b2a8ac412a820b1944": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sssd-nfs-idmap-2.2.3-20.el8.s390x.rpm" + }, + "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm" + }, + "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-oauthlib-2.1.0-1.el8.noarch.rpm" + }, + "sha256:344d35ca1adc8e4c5562c9936113807f088fd6b27aa4095d17a846745c2b3c98": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/cairo-1.15.12-3.el8.s390x.rpm" + }, + "sha256:34f9e9b309a8c6beabd1969ed3b0a685253eb8dd3e2d22d7ef2045f6796cd908": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-pip-wheel-9.0.3-16.el8.noarch.rpm" + }, + "sha256:35197371e37e599e683c8f5d91d1a5699191dfdc58cd67577caf64d60bfbe630": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libxml2-2.9.7-7.el8.s390x.rpm" + }, + "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-chardet-3.0.4-7.el8.noarch.rpm" + }, + "sha256:35471bc9ee490a4447723813c288126aceaa2617a0f271cb7cb98d99a6111ba0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcap-ng-0.7.9-5.el8.s390x.rpm" + }, + "sha256:35c952c9e48350adf6f94b48dc7636f664ebbe16ed6632ee30c2e0fd22e7f0bf": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/crypto-policies-20191128-2.git23e1bf1.el8.noarch.rpm" + }, + "sha256:36798d9e979c9976ed66e23b3c8bda6250c4e80e411afe55c3942291cb4cb4ce": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-constant-1.33-396.el8.noarch.rpm" + }, + "sha256:36c8375deb752eae4df0760fe4634c9b5be9a1cdaee4a7bea7789004e892ae3c": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libusbx-1.0.22-1.el8.s390x.rpm" + }, + "sha256:3700bd235900bf7c80ac7dbcb58d56a5b440fc6aa9c1217be3de5e9bc5f99195": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-gobject-base-3.28.3-1.el8.s390x.rpm" + }, + "sha256:3717331bb0807804e392afc98dd1c9cba30fdf2464aaf8869598d483313f9606": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/elfutils-debuginfod-client-0.178-7.el8.s390x.rpm" + }, + "sha256:372fd5ea8e1576b20b447ed77d7abb4b49c63b684731ea40940fb871207180cb": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/yum-4.2.17-6.el8.noarch.rpm" + }, + "sha256:37dc570b8dfd1d1062c75a7acf0205f8f92c343558ff387ddd878e7c04bd4e1c": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libstemmer-0-10.585svn.el8.s390x.rpm" + }, + "sha256:3830e5a3e5c11730baf10775ac1e3962a40b9409de5ce82ef372f7d742c680a0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.s390x.rpm" + }, + "sha256:3853bcdd64872c9fddd28f5fafdc863e6374e57e65be2ee4c581263bfea79697": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ipcalc-0.2.4-4.el8.s390x.rpm" + }, + "sha256:38c481843b2004d6aa76450aefb1d96936a7e5fc6eaa7f428463a7a68b3eb039": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libkcapi-hmaccalc-1.1.1-16_1.el8.s390x.rpm" + }, + "sha256:39833d43b0b71110eb1ca50fb2088159b1f0ab85e2ffc09769cddf58c04bd2f5": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libref_array-0.1.5-39.el8.s390x.rpm" + }, + "sha256:39bfa470cfbe028c3a638d7283ff66a3e7c8ee654ccefdd58474a860e3420e22": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kbd-misc-2.0.4-8.el8.noarch.rpm" + }, + "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-configobj-5.0.6-11.el8.noarch.rpm" + }, + "sha256:3b060586f41724416985e14e50ea2892e96caa103e4055acee38f00db4bcfdf5": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsemanage-2.9-2.el8.s390x.rpm" + }, + "sha256:3bccb3d9479adaa9dd9491b51247f79f05dd4fcad061a849781debd085e7209f": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libdnf-0.39.1-5.el8.s390x.rpm" + }, + "sha256:3ce2c638dd29c6d041374a746f04708e2f8aadd0831795b1d98be1f72d59d26a": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/redhat-logos-81.1-1.el8.s390x.rpm" + }, + "sha256:3e13b711f15b6c4db837cac46cb3792363fb8d1a92a93de424b3485768fe4488": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libstdc++-8.3.1-5.el8.s390x.rpm" + }, + "sha256:3e1977c9b662e295f67e2114694d4a11d87215346cd7836c8fe8b9cec050f357": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/readline-7.0-10.el8.s390x.rpm" + }, + "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-pyserial-3.1.1-8.el8.noarch.rpm" + }, + "sha256:3ea9e13b87f3156dd06ccfe43eeb77cb8834ab7be571a50b2faab5160c49291f": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcom_err-1.45.4-3.el8.s390x.rpm" + }, + "sha256:3ef66f9831664434eb956122c731d4af82e9e8df2986e15f78eeaed0bfe41445": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/checkpolicy-2.9-1.el8.s390x.rpm" + }, + "sha256:3f328081e6f97c4a833582e808d07bba2bf43f2b2d74f509c88889ba57fbe643": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-daemon-1.12.8-9.el8.s390x.rpm" + }, + "sha256:40104e3acb91efb6474c87c2bd5ea29cd71f13429a88d78890c2e9bc59bfc4e0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libss-1.45.4-3.el8.s390x.rpm" + }, + "sha256:4019e427bf69ed70e3a3cdfdcdd6771bcee1484f8e83bb69539a9e6530baddf1": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Time-Local-1.280-1.el8.noarch.rpm" + }, + "sha256:408557972679db1bd8c1c2d5a07399ec408d2022fa17d45e6e1d6e9baa6f2513": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/filesystem-3.8-2.el8.s390x.rpm" + }, + "sha256:40e39bd372ee233258f6c0b64ae62f5065d3c7bff91c891f2e0949b2ffa6e277": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glib-networking-2.56.1-1.1.el8.s390x.rpm" + }, + "sha256:4103adee1d874f535dccc59558968a8687c0cc8391b8adc4957d2952c244cf3b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-IO-Socket-SSL-2.066-4.el8.noarch.rpm" + }, + "sha256:413d3b549e7339e7fee5a2f8232ec11ec3e7490b57a303bde5b15677af0d9add": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gawk-4.2.1-1.el8.s390x.rpm" + }, + "sha256:41acedd1ce2cfa1063ef22c3f49d0a2d45eb768c587b9c8a6b135860ff1c02f4": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gssproxy-0.8.0-15.el8.s390x.rpm" + }, + "sha256:41c0f3ea7c7c2f21b5ccb0432db2c1b916ae34691a57f0b7bcb5a09dc7d8fafc": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Term-Cap-1.17-395.el8.noarch.rpm" + }, + "sha256:41e5390a8ea6cc1524155071675f89e4e3d8b681ce76c4d7369dbb7f075ff31f": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libX11-1.6.8-3.el8.s390x.rpm" + }, + "sha256:4291406b201a35d5baaa28d2a0c5b1c218ffb7d981d0ad25532a7d36b672628e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-plugin-systemd-inhibit-4.14.2-37.el8.s390x.rpm" + }, + "sha256:42f4cfc52a662e95002a2a35c0edfe8b855162ce84f813f7110394dbf8ff2596": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/json-c-0.13.1-0.2.el8.s390x.rpm" + }, + "sha256:436949033b66b9e0b91eb42961f0db604dffedd88db1dbce3a8515ade58043da": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libdb-5.3.28-37.el8.s390x.rpm" + }, + "sha256:4446635ab8b16c20215423512319292f21b7cca294b9472c6adb186a303e26c6": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libssh-config-0.9.0-4.el8.noarch.rpm" + }, + "sha256:457108e80b840850057c10f933446fd71a0d20b356c2a039af71e9fd68f61382": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dnf-4.2.17-6.el8.noarch.rpm" + }, + "sha256:466ba431d32e34a1b5effe7b885c73e5c753e007b7ad8e9b8cd96e0b427f96da": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-dnf-plugins-core-4.0.12-3.el8.noarch.rpm" + }, + "sha256:4682cfac60ce5f220640c3f7468c39fa2805bcc281cf464fc98c273bace1e579": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libksba-1.3.5-7.el8.s390x.rpm" + }, + "sha256:46d7ba98b995b454d3ba6debad5b15e5af168420fd3a1bc8d6d3114092be9c66": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-audit-3.0-0.17.20191104git1c2f876.el8.s390x.rpm" + }, + "sha256:475a66955c1749ba4ea13b5f4935dd13ac322c516961a512386496fe45d04472": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Scalar-List-Utils-1.49-2.el8.s390x.rpm" + }, + "sha256:4811ab95c1d50ef7380e2c5937ae4490f8e28f56cf787c189437d1709e4423fb": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-podlators-4.11-1.el8.noarch.rpm" + }, + "sha256:484f75c409de524cde02e7002b768ac6583ee4329bab0a28a0088863211d7832": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/initscripts-10.00.6-1.el8.s390x.rpm" + }, + "sha256:48f2ba5165e606fee1bac3d7b81ff319724338d7279cfe2a90f7a9f6f172075c": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/sscg-2.3.3-14.el8.s390x.rpm" + }, + "sha256:4980cdfb336c5de4c4336f41f6947cfb33b7befe7ed045711248469fe48edcd3": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/device-mapper-1.02.169-3.el8.s390x.rpm" + }, + "sha256:49d92784895f84d5526661e685cd38d5df00d610d12b6850061199d672997348": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Errno-1.28-416.el8.s390x.rpm" + }, + "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm" + }, + "sha256:4a20cfbaa38654e38dfa3df93bafa564252ac64177aacae8a0bc8b6dc395e6b2": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/rsyslog-8.1911.0-3.el8.s390x.rpm" + }, + "sha256:4a88a0e57e579ef6c53736c26cc8bbd7fa1f6d3de4a7d61fcde96d9ecb6947d9": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gdbm-libs-1.18-1.el8.s390x.rpm" + }, + "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-pyudev-0.21.0-7.el8.noarch.rpm" + }, + "sha256:4b0e7c48e4162142940bb0387fec4e2f03cbad1ca06ee75532a515d8355dc865": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libunistring-0.9.9-3.el8.s390x.rpm" + }, + "sha256:4b12fc6f2004fb899b0c06c462bee1932fef97112267e3784e8519ebb42ddede": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libverto-0.3.0-5.el8.s390x.rpm" + }, + "sha256:4b74cef48ac1a874b473311f779b9f9055ee0a0e4b2352439a342f2a353832e5": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/iproute-5.3.0-1.el8.s390x.rpm" + }, + "sha256:4c3ae6b8fe3174dabee8be4377fb1bee599227f6d6a88e04c34c733e8210077b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/linux-firmware-20191202-97.gite8a0f4c9.el8.noarch.rpm" + }, + "sha256:4c7e176a4024f519401c2b03fd69c23375714f80b5870894fccbb2abe4d0c724": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/trousers-0.3.14-4.el8.s390x.rpm" + }, + "sha256:4c90fe6c1bb01242a10c5d9e1655a0c27521febeffab450d33d88b4b11a8fa95": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/tzdata-2019c-1.el8.noarch.rpm" + }, + "sha256:4cc7df5bb4b441f031309c30264551fa372dfee8571b54d2333aa81a44995194": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsysfs-2.1.0-24.el8.s390x.rpm" + }, + "sha256:4cee6b88b41b31288938e70ceed50493f3d586121ec61ff553e4500fc25a81c6": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/subscription-manager-1.26.16-1.el8.s390x.rpm" + }, + "sha256:4d39add65cf7aecdb430a490a9119c5c098451c2d9c296e35c207136b6b300c5": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-schedutils-0.6-6.el8.s390x.rpm" + }, + "sha256:4dd35cd8eeb1b33dafb05a476df6eaaf26dcb5442e0f9c08d547bfd73f226d8f": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libseccomp-2.4.1-1.el8.s390x.rpm" + }, + "sha256:4df56916fd99c60c30af766bb84e43202a986f30a97f44bb6f8e6718dc34c372": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/insights-client-3.0.13-1.el8.noarch.rpm" + }, + "sha256:4ee51b6f690e64916984c844636f502e32ae9a753b87c498ac4f11a8bb57b71c": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cockpit-system-211.3-1.el8.noarch.rpm" + }, + "sha256:4f24819ebd2968527e2ddbbf08c31906d4c0757a9c9c883be13d0820dc272624": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libnl3-cli-3.5.0-1.el8.s390x.rpm" + }, + "sha256:4f850d4565e92e1d5542d790b4983104156480bcd8d73be16a779b4231c6598a": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libblkid-2.32.1-22.el8.s390x.rpm" + }, + "sha256:4fafa365bdf0023cf4efdd69c2f02f73d6e89d63b8a895d472baf5cc4feeed92": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glibc-2.28-101.el8.s390x.rpm" + }, + "sha256:4fe86c8a09f3dfc0d18a0861f9c483d0e3e5f054ed73c26c680acb528ead8dd1": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.s390x.rpm" + }, + "sha256:4ff9e7b217f71f5d7c8e23632ac242e7bb3cf9b785865d233516185efad9ccb8": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssh-server-8.0p1-4.el8_1.s390x.rpm" + }, + "sha256:508ebbee159a5a3d069ca0149fcf67199790c045f90db7c7ca624b8476821fe9": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libnfsidmap-2.3.3-31.el8.s390x.rpm" + }, + "sha256:51436452d89b01024c397555cc58b32ab3ac10055bd03043663b5debd089380b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libattr-2.4.48-3.el8.s390x.rpm" + }, + "sha256:523d6c8773f687dfaee21e80709a76bb31c9da2ab2834b6a8e2a8920ffb6615e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libpipeline-1.5.0-2.el8.s390x.rpm" + }, + "sha256:525a1a3494fe589513f191ca631f149b80db6107cc2472f20bfc5974d84136ee": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-cffi-1.11.5-5.el8.s390x.rpm" + }, + "sha256:52f6082ca12006790d087a08379b92b870fc09d6a1da9f863671722878c8d07e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gobject-introspection-1.56.1-1.el8.s390x.rpm" + }, + "sha256:534dd2a6b76a2fe8133b0801b230d425f928c50b635b352016da40447c7c7185": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsolv-0.7.7-1.el8.s390x.rpm" + }, + "sha256:537059f8a2598f7b364693aec72f67f1a954c525b381139f736d75edbf19aa12": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-File-Temp-0.230.600-1.el8.noarch.rpm" + }, + "sha256:53f553ae5c618d91bf82ad1a36bec5cdb0ec69f163df0af751adb8ae1492a09c": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dnf-plugins-core-4.0.12-3.el8.noarch.rpm" + }, + "sha256:546ebad5183085f345385a483d5bfea61bb772ecf7071a339d1db614188e69cc": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/shared-mime-info-1.9-3.el8.s390x.rpm" + }, + "sha256:54abb15c97a50d8c48cb2d6a900e895f98279379af8469eeed319cb13e23e799": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-linux-procfs-0.6-7.el8.noarch.rpm" + }, + "sha256:54ecab8ab8b08cb843ed22a939029fd73ff5ba6af16deaf01640a176cf780526": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-syspurpose-1.26.16-1.el8.s390x.rpm" + }, + "sha256:55b6a0136b23f4a36a2adef8ea11b0f8338535fbe169ee32f978f2a2defb57c2": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.s390x.rpm" + }, + "sha256:55f735aea8ee2737fa63ebf25d27258f93ad119733a3389bfb8ea37ce140725f": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssl-1.1.1c-15.el8.s390x.rpm" + }, + "sha256:56081a14fe517995972aaea890c246cf35a6439cc56a16769d913da670111b03": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-ethtool-0.14-3.el8.s390x.rpm" + }, + "sha256:5728ca9555dffa66592456e39c45afb5848c2307faaccaf8b936ee45d32f94cc": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/polkit-libs-0.115-11.el8.s390x.rpm" + }, + "sha256:57953b506733459b67a4d8e122bfb4a929388a33dbea7442acc71d14a48b9061": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libfastjson-0.99.8-2.el8.s390x.rpm" + }, + "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm" + }, + "sha256:593d4df5b8de12ed0ec5a0935cb0bd966e27a631aa0806250ba9f67092ad737f": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libX11-common-1.6.8-3.el8.noarch.rpm" + }, + "sha256:5999ddeea23f7ee7640ad90aacd09cc9c29b51fd489d5fe74db9e5b6ed981fef": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libmaxminddb-1.2.0-7.el8.s390x.rpm" + }, + "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-jsonschema-2.6.0-4.el8.noarch.rpm" + }, + "sha256:59c099ac7d9aee3e356bada6ecd9aab9bb57585214267b9d71fe2cba98de3cb0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/elfutils-default-yama-scope-0.178-7.el8.noarch.rpm" + }, + "sha256:5a84c721418c21c38a32cb3170f5fbf9cb3a8d1d728b408ce026dd8cd3955c15": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/grep-3.1-6.el8.s390x.rpm" + }, + "sha256:5b681ca8e1778a6a7ec40a7b30a72537aef11518c2bb5ffdde346a0c590a2517": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/e2fsprogs-1.45.4-3.el8.s390x.rpm" + }, + "sha256:5baa177e85af635cf7e1726e6ec558a6b44ebccbe84b13a1fa8a80f6240a19d2": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/policycoreutils-2.9-9.el8.s390x.rpm" + }, + "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-jsonpointer-1.10-11.el8.noarch.rpm" + }, + "sha256:5dd05dbb90d9d7436b6c78863872c94c5639124792fd34221c0727ca1b23f1d2": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sssd-kcm-2.2.3-20.el8.s390x.rpm" + }, + "sha256:5e6468f344c380e7ba83743a8a2aaa73a333595ea0a19a8388ead8753929909e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libnl3-3.5.0-1.el8.s390x.rpm" + }, + "sha256:5eb62b94a6f31bde8e6d571fb4f45e98fc93b2a2d10543d28afb9e275088951d": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/cairo-gobject-1.15.12-3.el8.s390x.rpm" + }, + "sha256:5fb154dd6b3ae091297ce6c99576a1203451b9fedfd4d3825f1d0ed60ef9c4f6": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sg3_utils-libs-1.44-5.el8.s390x.rpm" + }, + "sha256:6110d2531a5e40210ec9009cf80e901052406df0a41b075d591f903539575acf": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dnf-data-4.2.17-6.el8.noarch.rpm" + }, + "sha256:624a0bdcc56c2c5d02bb495b80fdfcd934cf8b6145710dc82ac65441dcc2c0a1": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libXext-1.3.3-9.el8.s390x.rpm" + }, + "sha256:625c189990e536c608651824f097a8b68d2b025bef2504bf2d4b006d652bec5b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/slang-2.3.2-3.el8.s390x.rpm" + }, + "sha256:6269d41355f5813539f64613a06cda7c6b439ad8754db2f2727c0a2ca5713a1b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libtirpc-1.1.4-4.el8.s390x.rpm" + }, + "sha256:63d72c31437b4813bf29bb4daee23292ca4dbd3aa7d1ce6fa4ebc168b244eeaa": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/lz4-libs-1.8.1.2-4.el8.s390x.rpm" + }, + "sha256:646b9a3d500ffe337d6dfe5e9acd6736248dc05887d0ee417203e59aea615b42": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/NetworkManager-libnm-1.22.8-4.el8.s390x.rpm" + }, + "sha256:64b660142064caf425a371e256e989e05995b86af214233277d9fe9fa00c420c": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/NetworkManager-team-1.22.8-4.el8.s390x.rpm" + }, + "sha256:64f84dd2024470dcb8ca11ac0e22cdbedc79e6a55b916f60de27c5da1018f9e9": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/fontconfig-2.13.1-3.el8.s390x.rpm" + }, + "sha256:657efda777af4b0d63ab127a72f3373c0d8a18f3b81e912b24a5fbdc9927dc1e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Term-ANSIColor-4.06-396.el8.noarch.rpm" + }, + "sha256:65bef4240948e0b9400b0d50c37420511ef2dbd0c0130bdb4413c3e60d60f2f1": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libmetalink-0.1.3-7.el8.s390x.rpm" + }, + "sha256:66760eb369153a4c41b1837d57a78d9a2f85f72ad567c8ad7ee3d5a89ef6a6cb": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/platform-python-3.6.8-23.el8.s390x.rpm" + }, + "sha256:66f835821256add088054ba93b125755dd01218ba7ab7aa587d12bbff9578f56": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssh-clients-8.0p1-4.el8_1.s390x.rpm" + }, + "sha256:677ea3b043f29110c06c6759be1a5afafa66b56bad6d7af6777d86cf7baefcb8": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/hardlink-1.3-6.el8.s390x.rpm" + }, + "sha256:684d8438fec907d780ad69dd6f7571f84d73fecefc66026b751935d463973bd8": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Data-Dumper-2.167-399.el8.s390x.rpm" + }, + "sha256:688aeafda1a81240a27f7f8697aa1217218fd7169adeefb5fab6bc5cc0c6414e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/lzo-2.08-14.el8.s390x.rpm" + }, + "sha256:693bba9fe29e6dae362e4a2ffad6474f3e8934bea6778797657d332d872c48b2": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/network-scripts-team-1.29-1.el8.s390x.rpm" + }, + "sha256:6ae2039179cb1d8485af2180817c26765aab781f17fc97f8b6e7239033f8bfb7": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rsync-3.1.3-7.el8.s390x.rpm" + }, + "sha256:6b157141692f891ad738b5989b6fdf5a0922d8b8683d957a76067fee6ba5f219": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/hdparm-9.54-2.el8.s390x.rpm" + }, + "sha256:6c0d698eef8a7e0dbce88893187307135269d321593700edabe10a17fdccfb14": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dhcp-common-4.3.6-40.el8.noarch.rpm" + }, + "sha256:6c144a883629536cf8eb7eccc64389f536cc89ef806b06b4a5de18d1746eecf2": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/redhat-release-eula-8.2-1.0.el8.s390x.rpm" + }, + "sha256:6d55aefe2ee59069d22514604c47da81d2638d219fed6e7ea086b0ce64e8c2c0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssl-libs-1.1.1c-15.el8.s390x.rpm" + }, + "sha256:6ed9fed1c5b4845fd82faf0e4a40c9478ac33878508487113801c4580e30baf1": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/pixman-0.38.4-1.el8.s390x.rpm" + }, + "sha256:6f195f37fa68639756a9c7addca897e89242553bb237ed691d8831f6d86f6cd9": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsss_idmap-2.2.3-20.el8.s390x.rpm" + }, + "sha256:72ffa52946382499ff2479f37305277e7a6cdc9f5c01a3dd150b3dd5fac0322f": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dracut-network-049-70.git20200228.el8.s390x.rpm" + }, + "sha256:7305aabe9ab0e0d65293384c636bcca017abb426986c59c5f92b9c08be016be1": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libreport-filesystem-2.9.5-10.el8.s390x.rpm" + }, + "sha256:73a4411822a90641b9ba957aedc0bbe090ae2efe7bf780bbb3aceace4369cfd3": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.s390x.rpm" + }, + "sha256:74727202d756f0ddfa6967c9ce36120e3f742b291b24d502514144af74118bf4": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/c-ares-1.13.0-5.el8.s390x.rpm" + }, + "sha256:74cad5967ec955d6b8851a5240c4ae823ea10f08dc0e811aba2b79d6dc5a9949": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libmodulemd1-1.8.16-0.2.8.2.1.s390x.rpm" + }, + "sha256:7519f2af362827daecf105e1dccb551350f32dfd3f6a8a85bf6eb1b4b7788255": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-IO-Socket-IP-0.39-5.el8.noarch.rpm" + }, + "sha256:751df4c8122e941b9dc37ab75debbe937807f72e5872401cf82d97c653866e07": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/curl-7.61.1-12.el8.s390x.rpm" + }, + "sha256:75b826208559ef5e3edca7441e2d111f40ca7a21cebadd6a5726f6dee8bf1cf8": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cockpit-ws-211.3-1.el8.s390x.rpm" + }, + "sha256:75cb8fa5f08004dd63e6647cd699bd011b9118a1bc9d6ee41c0eb772391db077": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sed-4.5-1.el8.s390x.rpm" + }, + "sha256:77066ee655df356370b5d6d736d96835f5712f8e814dfc46b391ecaef9cdd19b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Carp-1.42-396.el8.noarch.rpm" + }, + "sha256:7729a8f9623a6fe0f94428dc8fbb5bb2349659529ecfce4a5f1854e834108614": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/platform-python-setuptools-39.2.0-5.el8.noarch.rpm" + }, + "sha256:78c646627263a41cd55eed285232115dec589954da8c18ac32f37b2fdd96c688": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libappstream-glib-0.7.14-3.el8.s390x.rpm" + }, + "sha256:78f8ad277e8baeb9e14e9678b6f67786ab9eb3a33f98cd012c175fdb63806a31": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libxcrypt-4.1.1-4.el8.s390x.rpm" + }, + "sha256:792fc1513e33391423efb98aa9bcec85cf5db0a1a417ad41316178590fe069d7": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsepol-2.9-1.el8.s390x.rpm" + }, + "sha256:7af192dd97d723343c5142e2fb1053744b3d1e77b90e041ad5e0222b0258a001": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kmod-25-16.el8.s390x.rpm" + }, + "sha256:7b6a20549cfbb7a38f7dc021fa832dc021476c83ca3b96963074da8bddbc4430": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/teamd-1.29-1.el8.s390x.rpm" + }, + "sha256:7b6a754b55749e5f11ffec19cbb711f570607c2230e5750e5b2aaa915aa765c7": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-Digest-MD5-2.55-396.el8.s390x.rpm" + }, + "sha256:7b8b3d31e3ddd80fd39bf396122bb4b38582f090889b7d465e0db9eb8d6a7bf2": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/findutils-4.6.0-20.el8.s390x.rpm" + }, + "sha256:7c37700693bc781506a06eafc18ab1cb4a7f6b7559f0595c97f60a4f88390233": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Unicode-Normalize-1.25-396.el8.s390x.rpm" + }, + "sha256:7c385e32c12b2639232f74a5dfdfef86daf82e5418bc292c5ab2640fb5cf46dc": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Exporter-5.72-396.el8.noarch.rpm" + }, + "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm" + }, + "sha256:7db4f75c6439fbf4a1b3f6dcb1eb0935a92ac47b25c834d674ca46abda544a3c": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.s390x.rpm" + }, + "sha256:7e078a375d2636b705e1734be79a8b76a306f8578066c901713663e367925bc7": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Text-Tabs+Wrap-2013.0523-395.el8.noarch.rpm" + }, + "sha256:7e1b890a9e063d4041fc924cb55067db762b32980d5e30fed11e4a7a3696d026": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ncurses-libs-6.1-7.20180224.el8.s390x.rpm" + }, + "sha256:7e99557bcecefd6241b5d76a2fd43c3fd94d8a8337af0287cb238942cf5a30aa": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gsettings-desktop-schemas-3.32.0-4.el8.s390x.rpm" + }, + "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-slip-0.6.4-11.el8.noarch.rpm" + }, + "sha256:7f6395bef45df58a8d21f3516d71198d932eb1d9188a26fe9e6bc8881ace0f62": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libtalloc-2.2.0-7.el8.s390x.rpm" + }, + "sha256:7f97a748a033ca6da465cdb7a861bd844523de3c7a186248bf559f0f64db0952": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libgpg-error-1.31-1.el8.s390x.rpm" + }, + "sha256:7fcc96203ab686368fb66f568d042c893a64ac965390fd73f5c891b8a553f430": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/groff-base-1.22.3-18.el8.s390x.rpm" + }, + "sha256:806670e01e158d45919b7c9a5ff13153b9e2e7516d18c8388bf36b493148380e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/trousers-lib-0.3.14-4.el8.s390x.rpm" + }, + "sha256:813494dff0f52c8eb8105405b961d47ec32ea7ffc037a00c3bff568086b8ccf9": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-setuptools-wheel-39.2.0-5.el8.noarch.rpm" + }, + "sha256:81afd309f084c91d68c06bd46a4fce2e0d1e265a01ff87e309d1202e711e4a02": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-libnet-3.11-3.el8.noarch.rpm" + }, + "sha256:822ece218fa213adc9c2cde39c09d7ee1dafc12e25af025a457f175b24b7eda7": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/subscription-manager-cockpit-1.26.16-1.el8.noarch.rpm" + }, + "sha256:8239d6e7b8600e9b8876f6770ad0981b981cb5638b4a4a8d0ff352815dc9df59": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-magic-5.33-13.el8.noarch.rpm" + }, + "sha256:8260d48510e13ebc63a211a1e546b3bf243d1c03488e50744ec1f86cca7f2b9f": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libutempter-1.1.6-14.el8.s390x.rpm" + }, + "sha256:82becf766432b5ef763d2bfdb53f5c233a471ccae45d7703c19f876aaa69afd8": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/json-glib-1.4.4-1.el8.s390x.rpm" + }, + "sha256:82f2336e0c5cf2a9271259a12cc5c84f95959503e2f131a2f41ca5f291ad8055": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/chkconfig-1.11-1.el8.s390x.rpm" + }, + "sha256:8325ec9dbe6e447921673aaac09f5fde6a29276857791058ab45c3eb56f0cbf6": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/pciutils-3.5.6-4.el8.s390x.rpm" + }, + "sha256:83cfd01b18bd91f5ab60a882cd68314afc6eb091538ec840d3cb50d317182344": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-dnf-4.2.17-6.el8.noarch.rpm" + }, + "sha256:84cc3add4aafbee00fb25979f24818d71a99f03c63f8ff6f57e5f085dc693dbc": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gnupg2-smime-2.2.9-1.el8.s390x.rpm" + }, + "sha256:851d321970030ef2a2444c50a959daf4e63b814acc142be821eea560c404ab45": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/s390utils-base-2.6.0-28.el8.s390x.rpm" + }, + "sha256:86531929ef43081d9aaa4bdd97b6bff703f0031f7dcb4dc9e0979e4af1abf691": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-libselinux-2.9-3.el8.s390x.rpm" + }, + "sha256:879d72df89400ac2d742b5093870760ec31b5b3dfef346a91fa3e4fffd54bc16": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/bzip2-libs-1.0.6-26.el8.s390x.rpm" + }, + "sha256:880e3e51d0379b559522b32ff8ecd0664e618b9b0ba3493fa5a4fe4cf226daec": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/authselect-libs-1.1-2.el8.s390x.rpm" + }, + "sha256:885aad9ce00d5dd80d961c33873de3d7fd5c8e9d7493835e87be438e27423187": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libarchive-3.3.2-8.el8_1.s390x.rpm" + }, + "sha256:89531a2a7fecb645bb841bb38cad65499754e83e186d380f1a246638c661b000": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libnghttp2-1.33.0-1.el8_0.1.s390x.rpm" + }, + "sha256:89f88f664dd68bad43769774ae58e3aabc8eb79d4d00a66271e117f0fd9357af": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/mozjs60-60.9.0-4.el8.s390x.rpm" + }, + "sha256:8b0245757c52f6934a1ce7671217835f1661dc4f52be75dd070975b080a033e5": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/newt-0.52.20-11.el8.s390x.rpm" + }, + "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-pycparser-2.14-14.el8.noarch.rpm" + }, + "sha256:8c3f197a556bb91ba76701f286a63c9c54d8d2396b3db94425087497f51624fe": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/tuned-2.13.0-6.el8.noarch.rpm" + }, + "sha256:8ca16af0765e37aac3c2f4ef97791648b0fb0f247196f44bd768aed396c851e2": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cryptsetup-libs-2.2.2-1.el8.s390x.rpm" + }, + "sha256:8d09980b1baa907fbb3ec8a3d8907912a867bcb0c0bf702d9b3c8601874fe112": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-libs-4.14.2-37.el8.s390x.rpm" + }, + "sha256:8da30771a771910bca07c013a395ab60b623b4a8301c62422a478c58f4d3cb75": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/qemu-guest-agent-2.12.0-99.module+el8.2.0+5827+8c39933c.s390x.rpm" + }, + "sha256:8da37cb093752a1775c46cb71c0db55db3c3079d80bc1c5c7544d0c411bfac9b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-hawkey-0.39.1-5.el8.s390x.rpm" + }, + "sha256:8e2994a30b907bca3808c40bdde77b0746c4bec0d22c1ccfa74968f98c98a1d7": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsmartcols-2.32.1-22.el8.s390x.rpm" + }, + "sha256:8ea5b21347e371f3f2e124f8ddaf38909485ec829767f936c3764e142c28093d": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libaio-0.3.112-1.el8.s390x.rpm" + }, + "sha256:8f0e07257b26123e61b48bf23ded2f0713ccba8ddb69442f2999ae4c9cf291f0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dnf-plugin-subscription-manager-1.26.16-1.el8.s390x.rpm" + }, + "sha256:8f4f877b2758c07f609f78e1c445a9b41eadb3592e376592a57ab6b524c842e9": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/snappy-1.1.7-5.el8.s390x.rpm" + }, + "sha256:9075032326cd6da781c5a8f02f43988df08244182631df185b90884cdcd2bafb": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/iputils-20180629-2.el8.s390x.rpm" + }, + "sha256:9077c72004bd8266afafa2af093a30946105bf57ed052525e91bcc6acd9b8cef": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-setuptools-39.2.0-5.el8.noarch.rpm" + }, + "sha256:90cad0b0149c8e21613247039af49e91e138aa5e3e7d158022cfd274f349b123": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-libs-5.26.3-416.el8.s390x.rpm" + }, + "sha256:923b497f06eb1720c9ad6d1e55fc6bb3e26bf24fcd0e7e355a683a86de495fd1": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dhcp-libs-4.3.6-40.el8.s390x.rpm" + }, + "sha256:92bba4bcc53313c8add1ad83efbc2eae5e909a3d4f1632ae564ad99335a53aa0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-tools-1.12.8-9.el8.s390x.rpm" + }, + "sha256:9310c8ec49c5ab54bbe41637f54f8721a64e55a563469ab3693936a0336a7d1b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libssh-0.9.0-4.el8.s390x.rpm" + }, + "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm" + }, + "sha256:93772aade166fdb4bb4a78a0e08bea1b6f155e416597037267ad2603a767b9f5": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-Mozilla-CA-20160104-7.el8.noarch.rpm" + }, + "sha256:96172fbae0c8f413d09af511f770b08a8e26495b8ab3dfd9c3eb279257621ffd": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-plugin-selinux-4.14.2-37.el8.s390x.rpm" + }, + "sha256:9653bda9a6270f52ee607bfe5675dcc9224cb5765c11f52d25b1add9a9a7757b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libverto-libevent-0.3.0-5.el8.s390x.rpm" + }, + "sha256:965d6aabcf2b56566b2a082a950b293a9cb5b964e2a33aade07078092b2b3a45": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kexec-tools-2.0.20-14.el8.s390x.rpm" + }, + "sha256:966e2e9928f7006fedc83fc42df1c8d85cd448197097378aaf571b7e51f969d4": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/setroubleshoot-plugins-3.3.11-2.el8.noarch.rpm" + }, + "sha256:96aa9181e5e0e6ea19b903d8d861171e0dc2c35167626a6d91cfe0f3402ccf46": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/e2fsprogs-libs-1.45.4-3.el8.s390x.rpm" + }, + "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-slip-dbus-0.6.4-11.el8.noarch.rpm" + }, + "sha256:9761722b401cfb5386d8009b797a1a162f1deed04fef32815535703c9bb4b6a6": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cpio-2.12-8.el8.s390x.rpm" + }, + "sha256:98f8b8676e020636d1e096ce2b5f110c0dfa9fe83644bdf2e0ef4edaa770c183": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/bind-export-libs-9.11.13-3.el8.s390x.rpm" + }, + "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:998276e153886e014ce37c429a0f22b76f3ca955c1c9ba89999ce3dface1cf10": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libyaml-0.1.7-5.el8.s390x.rpm" + }, + "sha256:9a2e49109984bfe36d34cc1815a6aee230a2d8bb3c13b03763a367216af34d67": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libedit-3.1-23.20170329cvs.el8.s390x.rpm" + }, + "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm" + }, + "sha256:9b3fec76d33c17ff30266528444e85f87fa48f89bf1abb0eee293cbf7c6ed764": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dracut-config-generic-049-70.git20200228.el8.s390x.rpm" + }, + "sha256:9b4729d703d21dfc5ab34e1d5a8eb2a280cf78359f627cda4f6a05054b71062e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libtdb-1.4.2-2.el8.s390x.rpm" + }, + "sha256:9b88cba46414a21b780f2fc25f8e76a0cc144aabf1bec1eb9873e10369cd27c3": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/keyutils-libs-1.5.10-6.el8.s390x.rpm" + }, + "sha256:9bdd9dd41f11769374001c7782c2dc3eb3794d05622f4d2a6546a64757b48a6a": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sssd-common-2.2.3-20.el8.s390x.rpm" + }, + "sha256:9c246e12531d946d28959c3513ba74cbf4c15ccd69c11aaa54e6e399d05074f8": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-perf-4.18.0-193.el8.s390x.rpm" + }, + "sha256:9c58e6d1f654074080a50aefcd9eba3b37bb43c64a449fa96485725ba9ce6716": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libbasicobjects-0.1.1-39.el8.s390x.rpm" + }, + "sha256:9cc49bcc7a2e6a2c16c33d2a0037f9e5a81ca94962b0ccff8b671ce486ced497": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/passwd-0.80-3.el8.s390x.rpm" + }, + "sha256:9df26f1ca53725cb1091fe8858747bb8c841eee29b604f96031d92880c283238": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/info-6.5-6.el8.s390x.rpm" + }, + "sha256:9dff5a0a4e774218477d22efefb4a1be0ed8d9bd217a2907b64c0f772dbafc35": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.s390x.rpm" + }, + "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-babel-2.5.1-5.el8.noarch.rpm" + }, + "sha256:9e90e6054da06f5c8c2733c3b66987693a58ddc1f05d95b23ca0a464e26a2b22": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-Digest-1.17-395.el8.noarch.rpm" + }, + "sha256:9ee041eadd639ab6d9187f164c7f7b7954bdb4bf5f228555176207528e84fb1f": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Socket-2.027-3.el8.s390x.rpm" + }, + "sha256:9f1bc331219bc9bc97692477137dda660f512e8df95bbc99dd5300d48db13dbf": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/device-mapper-libs-1.02.169-3.el8.s390x.rpm" + }, + "sha256:9f4a1d60544336fe77a8a3451843c5189b06672c11b0f82bf9b32ef77eba6542": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-netifaces-0.10.6-4.el8.s390x.rpm" + }, + "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-ply-3.9-8.el8.noarch.rpm" + }, + "sha256:a00c72bd891d02b1e0a903fb9508d1a1aa77a3d95240b058dd8a7662173730b7": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-4.14.2-37.el8.s390x.rpm" + }, + "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:a16c9feab88a9876c41c34cd861490ce28be62e234040a59ce726e79dce4d9ef": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcurl-7.61.1-12.el8.s390x.rpm" + }, + "sha256:a1d824293cfc2883d27e25d94d0a9fb419e5e32ccf1566cee038157e35a0d230": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-libsemanage-2.9-2.el8.s390x.rpm" + }, + "sha256:a1e3beb51e4255795a948c5e3f8b7f74945750b5422eac2054edb6fa6fbe9851": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/man-db-2.7.6.1-17.el8.s390x.rpm" + }, + "sha256:a385cf1683c05ba68de9874b2659fca53160544abf658856a3bee9391e52532e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libkcapi-1.1.1-16_1.el8.s390x.rpm" + }, + "sha256:a5335a9d7e431ef45f4b6d256bdd7e4bfa98f73d994d6ec2a1b7c5ee792c821a": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.s390x.rpm" + }, + "sha256:a53e65798fdd2968ada806d34a248bde08dfe8d0e1164ebd272a96881483c5ed": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-gpg-1.10.0-6.el8.s390x.rpm" + }, + "sha256:a5b032d5d199e3facef794929ac837d572e7fcb0db3a9c9d2480daccb8765ee1": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ethtool-5.0-2.el8.s390x.rpm" + }, + "sha256:a660c78f704d3d22458c71d86605f51d62e3cc5306d22d66bb1df86c7274ad6c": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Pod-Perldoc-3.28-396.el8.noarch.rpm" + }, + "sha256:a66abcd7674f3356670ac394cbd3d1a34a2055259a1ccb45c02e91d190b44389": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/nettle-3.4.1-1.el8.s390x.rpm" + }, + "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-pysocks-1.6.8-3.el8.noarch.rpm" + }, + "sha256:a802778e1979c8b2115f68a799175fd0b6d6d1aec55401a17f84ca918b7505cd": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libproxy-0.4.15-5.2.el8.s390x.rpm" + }, + "sha256:a8ab9f2d13893fb30deecbb4d06bf33ef77fca46fbe340c12cad9bf7040371d7": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-pyyaml-3.12-12.el8.s390x.rpm" + }, + "sha256:a8d16009aa67cb5f09bdeeca57c1198ad1ecd2d1a963146369bb6200d1adcf5a": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/fipscheck-lib-1.5.0-4.el8.s390x.rpm" + }, + "sha256:a8dadc6e4ba668ee14fda07fecd8879c8c7acdfd9b2effeb829b541d1de0d7a2": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sg3_utils-1.44-5.el8.s390x.rpm" + }, + "sha256:a971b04b37533967e2b76d92af5b7d5dfe33998584bcc35919044fc78a456123": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/qemu-img-2.12.0-99.module+el8.2.0+5827+8c39933c.s390x.rpm" + }, + "sha256:aaa3d17cafb5ab7a2d8678d509d95974c53147505d1ae302b97905c5ec267b1d": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libgudev-232-4.el8.s390x.rpm" + }, + "sha256:ab08621cdf99fc696aab1d7de2c10649fbea9001f62a1c3574c5468240d24394": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/less-530-1.el8.s390x.rpm" + }, + "sha256:ab4cbc162b173a24b9f8e323b0b93d7619eab406177fa43e1d7b835b77b20e39": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/chrony-3.5-1.el8.s390x.rpm" + }, + "sha256:abe578c5dee7c306812e241c77ebc8ba4b54f90df8e65c56f8f202ba6e0d7183": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-parent-0.237-1.el8.noarch.rpm" + }, + "sha256:ac095caa9dcc503cf87a6ca5f5a4e3632fd970537c2f039205e22865a6bd10a3": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libdhash-0.5.0-39.el8.s390x.rpm" + }, + "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rootfiles-8.1-22.el8.noarch.rpm" + }, + "sha256:ad32bb58e49467cba3dabceee4e85202e8c4118624f870c299b49ff0396cda30": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ima-evm-utils-1.1-5.el8.s390x.rpm" + }, + "sha256:adab024896eecd08250eb7a7a5e1686df0b945fd1604543877e230163c510f24": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/quota-nls-4.04-10.el8.noarch.rpm" + }, + "sha256:ae2372e9110dfbf53c83bc7f78f867edc3cdb4044d62f1e63174cc3cf2d9e06e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/selinux-policy-targeted-3.14.3-41.el8.noarch.rpm" + }, + "sha256:af53fe5838e16824b50a6f16a4cc5850d2406f054d7c961c813673fc27698042": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libtasn1-4.13-3.el8.s390x.rpm" + }, + "sha256:af61087b5245e3e59bac54d1f1b886c452e82188db7118f04d0a7055d61cb5db": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/systemd-udev-239-29.el8.s390x.rpm" + }, + "sha256:b1af9ab85021403842c69373903db6d89328575a0902b95e852ae8052a177ac7": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/fipscheck-1.5.0-4.el8.s390x.rpm" + }, + "sha256:b2742fbda02636368c1ba4d6c8d77f7ba46261268c269090b1bf0e8450c180ea": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libndp-1.7-3.el8.s390x.rpm" + }, + "sha256:b2841b2cb926e7f529f604e2462304dcd0c63ff08f892eb573fb14029ad6511f": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sysfsutils-2.1.0-24.el8.s390x.rpm" + }, + "sha256:b2be91112ab5a4c3977ebcb72452393150a2e5ecbdfdd664c3c8b952db61c591": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/jansson-2.11-3.el8.s390x.rpm" + }, + "sha256:b4fb3d8b0255a5ba9456b61e4f479f2f8355d171263508bbe869af677015fd97": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/policycoreutils-python-utils-2.9-9.el8.noarch.rpm" + }, + "sha256:b59c6010d3eda92c654d4544fbc78d7bf3ed82b2661064d1679953bce8f8b7fd": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kpartx-0.8.3-3.el8.s390x.rpm" + }, + "sha256:b5e68b3d14142d44f3502c464f2720ffdc1181622cfdd2d430adba8885127e63": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcollection-0.7.0-39.el8.s390x.rpm" + }, + "sha256:b61e8abd760ba36a0ef10defd47d60e63d7fda3d1ba8bc01700d4957e49748b9": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rhsm-icons-1.26.16-1.el8.noarch.rpm" + }, + "sha256:b63261bfd20aaee97ab2a47c2368c8eab62fc62c1f988a80f52715347c3bd72d": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/expat-2.2.5-3.el8.s390x.rpm" + }, + "sha256:b7746a0aac1fa38b79711fd5d98f571612d7879af0e4e47c42bf43ba564cef16": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libdaemon-0.14-15.el8.s390x.rpm" + }, + "sha256:b79e0e33b98801e7cda1c845b31cfd5537b150fe4da4df1cacfc1d1534d57ce2": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-Net-SSLeay-1.88-1.el8.s390x.rpm" + }, + "sha256:b820452054d29635fe363c7753905aee1044c668e0357094e3fffec948f98c02": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/cloud-utils-growpart-0.29-3.el8.noarch.rpm" + }, + "sha256:b8921c14f31e46a8ae0e2cca015e43bc5ac96474654245d5def767c3003394e9": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/NetworkManager-tui-1.22.8-4.el8.s390x.rpm" + }, + "sha256:b8b2e5b057d65cee6a8c65f236fbd0a9a717d15384f4d3cbc678563b223bf011": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libffi-3.1-21.el8.s390x.rpm" + }, + "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/basesystem-11-5.el8.noarch.rpm" + }, + "sha256:bb1d56c02d161cfb07a9f31d8f3a73f93e75e5149c6df7b5d05173d6a5d3883f": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-dbus-1.2.4-15.el8.s390x.rpm" + }, + "sha256:bb54663316f683ffb7732f290d72b7c76a2b42e691a9d5a89869831b3982e41b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sqlite-libs-3.26.0-6.el8.s390x.rpm" + }, + "sha256:bb55b46b0849b445cbb7c38749b79affcbf4ae4e43c86a39ba28a64dff1ad0ec": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gzip-1.9-9.el8.s390x.rpm" + }, + "sha256:bbcee6c77d908470de66c126d770790a199337a32db93d8f07bb705330c8d7ba": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openldap-2.4.46-11.el8.s390x.rpm" + }, + "sha256:bbebf8199fc730d588d48d52bf839ac7cfefd921d32038a62d2d221d745ce945": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libselinux-utils-2.9-3.el8.s390x.rpm" + }, + "sha256:bbf1c85af70c001f23f7a47dbc604fa155765446aa16e4403ec12af21cd1ab42": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/procps-ng-3.3.15-1.el8.s390x.rpm" + }, + "sha256:bc931e7980d562ae9660f792de94829382a70d6f2d787025685868ce11366e24": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/nfs-utils-2.3.3-31.el8.s390x.rpm" + }, + "sha256:bcc032463153f59b2b58fa3ef73c3bf871b9e28ba1c0df09b8a5df80ce9af559": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-interpreter-5.26.3-416.el8.s390x.rpm" + }, + "sha256:bce48e34f1c6be096d433665f9c1f69e769445c179b91bc5b79a565604a74e3d": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libpwquality-1.4.0-9.el8.s390x.rpm" + }, + "sha256:bce4ccc35f0724dab035fdd012316ad7123a0b4bde6af67c20e71bcdaeb8f64f": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/hwdata-0.314-8.4.el8.noarch.rpm" + }, + "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-jsonpatch-1.21-2.el8.noarch.rpm" + }, + "sha256:be01593ef51abcb8540b55d0b40946f3d0d507e2f4cde1023898635b7e03fbef": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsecret-0.18.6-1.el8.s390x.rpm" + }, + "sha256:bfeddba14d40deb22197531dd544d10417b3e9231e1a56fb30418663d00df9a6": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kbd-2.0.4-8.el8.s390x.rpm" + }, + "sha256:c15782845bd5418289a7ff0ca28c303e5d80fdb55147872e580abca02eadf575": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kernel-4.18.0-193.el8.s390x.rpm" + }, + "sha256:c190674c383927684353be1fa61f000971811cb6a82782e81adf4906675723c2": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcap-2.26-3.el8.s390x.rpm" + }, + "sha256:c2202b679225da88f0edb87e2a51e5c3b55651457c6d1aebe51a77bed797e8c9": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libXau-1.0.8-13.el8.s390x.rpm" + }, + "sha256:c2b12d1994efd87e8ba215e98a47c48c6e0fd07929b4889f79fed02d73b48b39": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-libs-1.12.8-9.el8.s390x.rpm" + }, + "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-idna-2.5-5.el8.noarch.rpm" + }, + "sha256:c34e6300e7c863eba8fc9ac5c43b01c5474e88d2246c6d0bc97b9f168611e53c": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/hostname-3.20-6.el8.s390x.rpm" + }, + "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-asn1crypto-0.24.0-3.el8.noarch.rpm" + }, + "sha256:c4e89fc7630ba5e74efb55f60b2e04ad9762cd8758829f994cb48b5f6e836ac1": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/lshw-B.02.18-23.el8.s390x.rpm" + }, + "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-hwdata-2.3.6-3.el8.noarch.rpm" + }, + "sha256:c5a8ad2ff91b081c664dc9a946acaffc85c9dfd202c9e9667f56ad4c23211807": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/elfutils-libs-0.178-7.el8.s390x.rpm" + }, + "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm" + }, + "sha256:c660309209ba9f127661f47a3e098e4cabb74d4f3b08b52db9ce4321b54f3853": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libteam-1.29-1.el8.s390x.rpm" + }, + "sha256:c97b488edc305d08b9f78f896b008b71ad947447c81ff4b79c39715bcafe52c1": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libuser-0.62-23.el8.s390x.rpm" + }, + "sha256:cb1d1285d4195cd9b5098120649b95963341366f6e5490dfa9c5f06d7fa32dd4": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/coreutils-8.30-6.el8.s390x.rpm" + }, + "sha256:cb4a98e9dbbf1d2c85e5b10ea1b7c6edadba85395906ffbf5ed0cb12f77cef2e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libestr-0.1.10-1.el8.s390x.rpm" + }, + "sha256:cbfc3d7643d281649042460c2ad77758cdd0e99536f3559ad7b96a4dcc5a10a6": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssh-8.0p1-4.el8_1.s390x.rpm" + }, + "sha256:cc5a2d1f5209e14cbb310a77cf13537f2859ba118c4d03ac882621d015825b7d": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libXrender-0.9.10-7.el8.s390x.rpm" + }, + "sha256:ccd4a3fe16edc7f4a47983e191995b3308937b0483f84b141401285b867c8ef7": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libzstd-1.4.2-2.el8.s390x.rpm" + }, + "sha256:ccde203ded5f1bdc73301468985fbab7c4dc2f707a3565c6197261ac6f7361d3": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/xfsprogs-5.0.0-2.el8.s390x.rpm" + }, + "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-pytz-2017.2-9.el8.noarch.rpm" + }, + "sha256:cd14c516e074538510355237b57a3653bad90d7389371ae2e8d5a363e2c6afe9": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/cloud-init-18.5-12.el8.noarch.rpm" + }, + "sha256:cd8811c732e84a774ea720116d24b4b310d9a7d269a0457df8e708109fd0a120": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kbd-legacy-2.0.4-8.el8.noarch.rpm" + }, + "sha256:ce09871bed0750f1f238db93099b9ae264c746496ae2d79ce654afb8f513f243": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ncurses-6.1-7.20180224.el8.s390x.rpm" + }, + "sha256:ce0a6223eb830322bfcb8610b6e253b91958e4b3a8767a0cbe92ac803f50e8ce": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/PackageKit-1.1.12-4.el8.s390x.rpm" + }, + "sha256:cff5078143ab38f37a01e840bf5d42e2730c4b8e08ee7221a607ef52de8168cf": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-common-1.12.8-9.el8.noarch.rpm" + }, + "sha256:d05b84d3b2126b91834bd388af680b10a73595363d138cd05920eb4ca8c0f03e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/xz-5.2.4-3.el8.s390x.rpm" + }, + "sha256:d115c393bf047f72711f757568d43e633f75237a76e3cdc0ae267da6ad03ba04": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gnutls-3.6.8-9.el8.s390x.rpm" + }, + "sha256:d120bc374362edd18914525ef7311a63e24c888f924c4e7315e036f86796309e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libgcrypt-1.8.3-4.el8.s390x.rpm" + }, + "sha256:d2c97f8d96d6f82e34975bfcf8c25606e0370a3def4da27d6aabc85a86f589ca": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Encode-2.97-3.el8.s390x.rpm" + }, + "sha256:d3d5a6c8b906c6f59ed6a286dd5f34a0704e05f0929dd7bac4f1c3b692ccecae": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rng-tools-6.8-3.el8.s390x.rpm" + }, + "sha256:d3e6f8e99a5c411a1efa7b373cac48b41e9237edf5b65ec4e9f25fb496485bbd": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/iptables-libs-1.8.4-10.el8.s390x.rpm" + }, + "sha256:d3e95570de2bb3b418df9f883b22eae22086d60c437d9174c8e6bae71d0b7c11": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/setup-2.12.2-5.el8.noarch.rpm" + }, + "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-urllib3-1.24.2-4.el8.noarch.rpm" + }, + "sha256:d6a82133f2ab89874788c141b10ed1f090689cd823a7559ed9197403f4000506": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Storable-3.11-3.el8.s390x.rpm" + }, + "sha256:d6afe4abbdf882ed7f15dc9ede23040494b1cdc57981a0d88b6d96b91da471f0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/redhat-release-8.2-1.0.el8.s390x.rpm" + }, + "sha256:d6ba0f45311859012b68738abd9062cf20efe954cf3fd97e602e09fbfe8e3fdb": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/file-libs-5.33-13.el8.s390x.rpm" + }, + "sha256:d7789087a45017b084c27678ed782e8d923bd402547156a467a910b8682a8b02": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libfdisk-2.32.1-22.el8.s390x.rpm" + }, + "sha256:d7910a43ccb41a7cea58df1c4edecb309172d1ec8090a1a1a890381b046cedb2": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/keyutils-1.5.10-6.el8.s390x.rpm" + }, + "sha256:d906b13d5dd7a5595133e2a1af83ae17a1aae0c107579db723d21ec4371f3570": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-File-Path-2.15-2.el8.noarch.rpm" + }, + "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-requests-2.20.0-2.1.el8_1.noarch.rpm" + }, + "sha256:d97d6ef57cdd8731dc3cef774bb2bbdc0a506abf0e32cd58c49619bdf983733c": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/pigz-2.4-4.el8.s390x.rpm" + }, + "sha256:d9cf79223d9dd3ccace21bd73149b1f9618bbdd890c7845c2c68c237c74b59fd": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/quota-4.04-10.el8.s390x.rpm" + }, + "sha256:db17ac8a0794be4a3823d14daeb8a3a59be7bb0d6e7b3486107898dd604451cd": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/net-tools-2.0-0.51.20160912git.el8.s390x.rpm" + }, + "sha256:db1fad3c2d8735e69084bd4b09ea963938e4dde2f2e096dc7a4ce146f18b7ab0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/fontpackages-filesystem-1.44-22.el8.noarch.rpm" + }, + "sha256:dbb28005c8f68d794af2d9b35a3fcc3294190678b8cc9475acbad8a25a8837d3": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-IO-1.38-416.el8.s390x.rpm" + }, + "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:dc5fbbeb45fca1132cf465519fc6cba4701701aa25983da78f13050882787be2": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cockpit-bridge-211.3-1.el8.s390x.rpm" + }, + "sha256:dccd8b3ffb8a9015afe1d4cfa65df84589ede6582845899515d176695b457599": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/zlib-1.2.11-13.el8.s390x.rpm" + }, + "sha256:dd29e9ec3dac16997fa4718edc3dd016fc6bd070fb0ae17c58c064ff20aa5b03": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/util-linux-2.32.1-22.el8.s390x.rpm" + }, + "sha256:dd6a948e5a656701156c618e202c0b6defd11ba6f162b6790cbb42cea15141ae": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-URI-1.73-3.el8.noarch.rpm" + }, + "sha256:dd8480924a9e9d6adc3c36562e090aec3f33e57dc93e4dea73ff37618755406b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cracklib-dicts-2.9.6-15.el8.s390x.rpm" + }, + "sha256:dd91378f68acef88ad2c653450a9e03054d87979e79625fd5cd3f01b5a68ba55": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-pip-9.0.3-16.el8.noarch.rpm" + }, + "sha256:df582e688213786293a439987456c58463c8a30564fbd9c4999d0300c17e67ba": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glibc-common-2.28-101.el8.s390x.rpm" + }, + "sha256:df7652329162926a867e6dc880d5257af2496827b647067ef33c232b8a364a01": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-systemd-234-8.el8.s390x.rpm" + }, + "sha256:e085bf5e88381fe9a08cdf919d72843c5d267238e3f7dce7858c6f88d24a1c83": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/polkit-pkla-compat-0.1-12.el8.s390x.rpm" + }, + "sha256:e153757cbf8c1552b4f3f9593335a8332030b3aca304caf29258721c52ae4ec0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glib2-2.56.4-8.el8.s390x.rpm" + }, + "sha256:e17077c8803f792c02570b2768510b8e4955bd0ae68ab4930e7060fcbb3793f6": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Pod-Simple-3.35-395.el8.noarch.rpm" + }, + "sha256:e1f215df72d86fec4f860cf9a3c318ad7e3db9ac853956650d01087ff0f46caa": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.s390x.rpm" + }, + "sha256:e2cb056e6b9093aa449194a876f4f17937ceca090a766a5cf6e2f98ac8e893b4": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/tcpdump-4.9.2-6.el8.s390x.rpm" + }, + "sha256:e2e45f9ad3fa2d15b62b0d166975cf7c1ba94791cbfa305ab22086ceedff8867": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/npth-1.5-4.el8.s390x.rpm" + }, + "sha256:e2e79ae9c27bd89e089e1b31eea12084b0cce5aabdd7dd9113d9c8e53696d2ee": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libmodman-2.0.1-17.el8.s390x.rpm" + }, + "sha256:e35db3041d24f29f006b94cacf14c4ac82a12b3e723b5ddf3d161e67ac5eae2e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/file-5.33-13.el8.s390x.rpm" + }, + "sha256:e3c3592c21ceeefe6b62a3b6db97fc58e0ef8ed5208467a2a72dcbced0258cc6": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libpcap-1.9.0-3.el8.s390x.rpm" + }, + "sha256:e574bddfe80726668fdf0deff62369342858a862a4ed1f2332bbbcb74a497470": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-setools-4.2.2-2.el8.s390x.rpm" + }, + "sha256:e57979c45d14172f06d353e70c6fb5402319350bfe25b45ecd95339cf822ecc2": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/usermode-1.113-1.el8.s390x.rpm" + }, + "sha256:e57e36570f635b8df5dfcef61d40bb023ba5dd05a8b3109d6d671d956fcff69e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/platform-python-pip-9.0.3-16.el8.noarch.rpm" + }, + "sha256:e5a265eacd6db352523861796aceab37114e449adf8e75114cbf6b1bd7429d27": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsss_autofs-2.2.3-20.el8.s390x.rpm" + }, + "sha256:e630f2f55517bd25d483fae8a0ed936aec05da3a542f56d3fcd87f577cbcbc1a": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/authselect-1.1-2.el8.s390x.rpm" + }, + "sha256:e63f327c851c2a89254ead31b682e8f9fdb53806c6dea797dd72de18be837ff2": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libxcb-1.13.1-1.el8.s390x.rpm" + }, + "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-policycoreutils-2.9-9.el8.noarch.rpm" + }, + "sha256:e6a00b8a31b790687f294e1a829e3171b4963b34f302aa1f7eeb245d4b49071a": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-1.12.8-9.el8.s390x.rpm" + }, + "sha256:e6d780ed12021cb842de269c55a238649f6f0f76a08f5fde0db2463bdb15e067": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-build-libs-4.14.2-37.el8.s390x.rpm" + }, + "sha256:e6ff2a695a331ce5100f1c195d5748ce33408e300d9d611387889d77719007a3": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libmount-2.32.1-22.el8.s390x.rpm" + }, + "sha256:e74678e1b23544ffc0d1fc1e3e3d7564e359f6c874f5eede32d682cbe5059923": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kernel-core-4.18.0-193.el8.s390x.rpm" + }, + "sha256:e81af37e55bca721e41de93cbffedac3959256dd44bc67605908ac0298a1b74f": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kmod-libs-25-16.el8.s390x.rpm" + }, + "sha256:e88932488a9108e2ee373dffe9fbad3f0108c76c0b8f0aa781fc5df9c189d944": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sssd-client-2.2.3-20.el8.s390x.rpm" + }, + "sha256:e8b861558d5e316537d449d911909dd9623a31212ef7bd700dec3b0ad6fd7c04": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/yum-utils-4.0.12-3.el8.noarch.rpm" + }, + "sha256:e944915a4f9e920d831db11d1a2a08e3ab8712d04735e3499150f90be056026a": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gdbm-1.18-1.el8.s390x.rpm" + }, + "sha256:e990635ac1345ee9d17cd8c20b79341765ca68dce1f9775a68a0a4badce4f333": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.s390x.rpm" + }, + "sha256:ea8e98525aaeb63aea1e85a98ea93207cb2a88c82e921047e56f50a13b74a4fa": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/prefixdevname-0.1.0-6.el8.s390x.rpm" + }, + "sha256:ec3e5c0bec8bcc4cf03d665e3d48cb0511bd5b9c879630563b29ddbd05bbbda0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/pcre-8.42-4.el8.s390x.rpm" + }, + "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm" + }, + "sha256:ed03ae7d72ac4813b40490dfa0fb27fbb6828142d5507dc2fdcee636c4d19125": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/selinux-policy-3.14.3-41.el8.noarch.rpm" + }, + "sha256:ee7f3a5b1494773ff9003c831f724a09213cac9f160fd2a764d13ea9b1a3921b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/systemd-239-29.el8.s390x.rpm" + }, + "sha256:ef48355b0f8c051de6931674024dc472be1eddb4573da8d56a0668faf2352e0c": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/network-scripts-10.00.6-1.el8.s390x.rpm" + }, + "sha256:f096312848673cfea1e1e448083321fe4599b3339a79dc2b9e3998fd2ea1bdf3": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/p11-kit-trust-0.23.14-5.el8_0.s390x.rpm" + }, + "sha256:f0f8b7ec4ec783f4e6310208926f54b0bceed5476b6cebb5be9b336faaeaab0a": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/diffutils-3.6-6.el8.s390x.rpm" + }, + "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm" + }, + "sha256:f1e0648c7c3a1b0286d9b300966effd51f328a724c37c32a3bbbcc8e00c6b168": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libdb-utils-5.3.28-37.el8.s390x.rpm" + }, + "sha256:f3693f0a1c9e9e1772795fd0a88d48d8a5d8fa7d6e1b2f0f4bc42d577ef54076": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/pam-1.3.1-8.el8.s390x.rpm" + }, + "sha256:f3b45fd08cba7c338a8103d236ba4fd2c9bbe36e6d4ef96ddcb6a722d4cf529e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-libcomps-0.1.11-4.el8.s390x.rpm" + }, + "sha256:f444e3ca2fdcccbf49abf3848b7d79dd22193e704167d23d11bdc713126c6cf0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/subscription-manager-rhsm-certificates-1.26.16-1.el8.s390x.rpm" + }, + "sha256:f446646140cdc94ba1f4cd6942c4f4515bf64f38f4307962d252dbab47c82ef8": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-markupsafe-0.23-19.el8.s390x.rpm" + }, + "sha256:f70cdaa893490fe06e675ec0cc07f61aa2441a753c74215e199a0769a3c62596": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/setroubleshoot-server-3.3.22-2.el8.s390x.rpm" + }, + "sha256:f727e7919c662ae990d02ad2a6299ed3161ad7522587c11441477aae03549f06": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Pod-Usage-1.69-395.el8.noarch.rpm" + }, + "sha256:f89513dcf5d916665ff15dcc9f55ced1459e767a2874f7a7316832d40c404c2f": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/squashfs-tools-4.3-19.el8.s390x.rpm" + }, + "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm" + }, + "sha256:f8fb64d872132bbe7689bfd7ac362d9657e426887f8005fd352a3312b1485e47": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-libxml2-2.9.7-7.el8.s390x.rpm" + }, + "sha256:f934a992e23ec2d6c2adb63d5031912c4813238a82eb56ce5e0acea184588e78": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glibc-all-langpacks-2.28-101.el8.s390x.rpm" + }, + "sha256:fabfbd58cb438e4e1b029b148f2186fda469bf049a1125be01c982583d13f6bd": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gdk-pixbuf2-2.36.12-5.el8.s390x.rpm" + }, + "sha256:fac3dbed5e4adb8680b835eb6e72aac805134dddfea7b0151f220e92442622a3": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpcbind-1.2.5-7.el8.s390x.rpm" + }, + "sha256:fb224140d29f9bc48a2636b6947645e46da44b0d0233bcd4966765dea56a164e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kernel-tools-4.18.0-193.el8.s390x.rpm" + }, + "sha256:fb5a9dbeb24253bcb3451cd80b659cd24ce486f98efe6d282e14ad123f786848": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/freetype-2.9.1-4.el8.s390x.rpm" + }, + "sha256:fbbc385a90edf08de42879e9c8ff762c5d3d9ca750d10e0bccbcd56592e5cff0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/unbound-libs-1.7.3-10.el8.s390x.rpm" + }, + "sha256:fc944bebce84db486d6b9cdc99622fa443db0025287c0e73df3a25e2bfa1601d": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/parted-3.2-38.el8.s390x.rpm" + }, + "sha256:fc9f17a2fc6897c643fff67cf393051bb07ad16962b19a48f0e9991649ebae08": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libgcc-8.3.1-5.el8.s390x.rpm" + }, + "sha256:fcd9779461cdb1addf4ffb47909fd818fc1c2f9df5e0288f4e12760c3fe2c452": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dracut-049-70.git20200228.el8.s390x.rpm" + }, + "sha256:fd05bb7abdb6087d9c0eaaf321d30bc11399dc74881374952c4a5215ea2c86e8": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/lua-libs-5.3.4-11.el8.s390x.rpm" + }, + "sha256:fdbce603c9cb7792728413638e4d5591f0d094a361e07ff4fe0b7014a61b0104": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-threads-2.21-2.el8.s390x.rpm" + }, + "sha256:fdfde1848ded3233eadd44c677269196ef72cd8e82fd372ba2c45df4fa36a140": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libmnl-1.0.4-6.el8.s390x.rpm" + }, + "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-jwt-1.6.1-2.el8.noarch.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:126bbe586fe4116b343fc349c80480f01d597c2a41abec5bc15019b126f51fdc" + }, + { + "checksum": "sha256:a5335a9d7e431ef45f4b6d256bdd7e4bfa98f73d994d6ec2a1b7c5ee792c821a" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:30624f95cd736ceec96b7e2dfc4c4594d38825139c670dcd09b323faeb46d87a" + }, + { + "checksum": "sha256:03d1b5541823ba8637e04c69d0e00d711e0c799e764d6191d6ad989b459004e3" + }, + { + "checksum": "sha256:879d72df89400ac2d742b5093870760ec31b5b3dfef346a91fa3e4fffd54bc16" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:82f2336e0c5cf2a9271259a12cc5c84f95959503e2f131a2f41ca5f291ad8055" + }, + { + "checksum": "sha256:cb1d1285d4195cd9b5098120649b95963341366f6e5490dfa9c5f06d7fa32dd4" + }, + { + "checksum": "sha256:0c3e22cf2e8ab8b4c4f043f043e4e71dfccbe9b30ecab3a6532f1dddcc06662c" + }, + { + "checksum": "sha256:2020a1fe4a1643ebdd76f6ae3a0942f115e80279625d54a783f804711915e5a3" + }, + { + "checksum": "sha256:dd8480924a9e9d6adc3c36562e090aec3f33e57dc93e4dea73ff37618755406b" + }, + { + "checksum": "sha256:35c952c9e48350adf6f94b48dc7636f664ebbe16ed6632ee30c2e0fd22e7f0bf" + }, + { + "checksum": "sha256:8ca16af0765e37aac3c2f4ef97791648b0fb0f247196f44bd768aed396c851e2" + }, + { + "checksum": "sha256:751df4c8122e941b9dc37ab75debbe937807f72e5872401cf82d97c653866e07" + }, + { + "checksum": "sha256:0cd56334755c7cbc9a4b18d9746dc3cae765a9ae8231b26e1e740a447d82c499" + }, + { + "checksum": "sha256:e6a00b8a31b790687f294e1a829e3171b4963b34f302aa1f7eeb245d4b49071a" + }, + { + "checksum": "sha256:cff5078143ab38f37a01e840bf5d42e2730c4b8e08ee7221a607ef52de8168cf" + }, + { + "checksum": "sha256:3f328081e6f97c4a833582e808d07bba2bf43f2b2d74f509c88889ba57fbe643" + }, + { + "checksum": "sha256:c2b12d1994efd87e8ba215e98a47c48c6e0fd07929b4889f79fed02d73b48b39" + }, + { + "checksum": "sha256:92bba4bcc53313c8add1ad83efbc2eae5e909a3d4f1632ae564ad99335a53aa0" + }, + { + "checksum": "sha256:4980cdfb336c5de4c4336f41f6947cfb33b7befe7ed045711248469fe48edcd3" + }, + { + "checksum": "sha256:9f1bc331219bc9bc97692477137dda660f512e8df95bbc99dd5300d48db13dbf" + }, + { + "checksum": "sha256:f0f8b7ec4ec783f4e6310208926f54b0bceed5476b6cebb5be9b336faaeaab0a" + }, + { + "checksum": "sha256:457108e80b840850057c10f933446fd71a0d20b356c2a039af71e9fd68f61382" + }, + { + "checksum": "sha256:6110d2531a5e40210ec9009cf80e901052406df0a41b075d591f903539575acf" + }, + { + "checksum": "sha256:04e227546e73954475809db05a6133e4f978ae026423bd800247370f8758b31e" + }, + { + "checksum": "sha256:5b681ca8e1778a6a7ec40a7b30a72537aef11518c2bb5ffdde346a0c590a2517" + }, + { + "checksum": "sha256:96aa9181e5e0e6ea19b903d8d861171e0dc2c35167626a6d91cfe0f3402ccf46" + }, + { + "checksum": "sha256:59c099ac7d9aee3e356bada6ecd9aab9bb57585214267b9d71fe2cba98de3cb0" + }, + { + "checksum": "sha256:1eca3ef1ec2edeae041c3d55687c806db77a2a1e0837fa4937b664e37b903e22" + }, + { + "checksum": "sha256:c5a8ad2ff91b081c664dc9a946acaffc85c9dfd202c9e9667f56ad4c23211807" + }, + { + "checksum": "sha256:a5b032d5d199e3facef794929ac837d572e7fcb0db3a9c9d2480daccb8765ee1" + }, + { + "checksum": "sha256:b63261bfd20aaee97ab2a47c2368c8eab62fc62c1f988a80f52715347c3bd72d" + }, + { + "checksum": "sha256:d6ba0f45311859012b68738abd9062cf20efe954cf3fd97e602e09fbfe8e3fdb" + }, + { + "checksum": "sha256:408557972679db1bd8c1c2d5a07399ec408d2022fa17d45e6e1d6e9baa6f2513" + }, + { + "checksum": "sha256:7b8b3d31e3ddd80fd39bf396122bb4b38582f090889b7d465e0db9eb8d6a7bf2" + }, + { + "checksum": "sha256:2429abaf8afb74f4fdc8050e4c90e315316186d372a809e062a914808d02d907" + }, + { + "checksum": "sha256:413d3b549e7339e7fee5a2f8232ec11ec3e7490b57a303bde5b15677af0d9add" + }, + { + "checksum": "sha256:e944915a4f9e920d831db11d1a2a08e3ab8712d04735e3499150f90be056026a" + }, + { + "checksum": "sha256:4a88a0e57e579ef6c53736c26cc8bbd7fa1f6d3de4a7d61fcde96d9ecb6947d9" + }, + { + "checksum": "sha256:e153757cbf8c1552b4f3f9593335a8332030b3aca304caf29258721c52ae4ec0" + }, + { + "checksum": "sha256:4fafa365bdf0023cf4efdd69c2f02f73d6e89d63b8a895d472baf5cc4feeed92" + }, + { + "checksum": "sha256:f934a992e23ec2d6c2adb63d5031912c4813238a82eb56ce5e0acea184588e78" + }, + { + "checksum": "sha256:df582e688213786293a439987456c58463c8a30564fbd9c4999d0300c17e67ba" + }, + { + "checksum": "sha256:1cc3e427d85ddd7caeda2c9a5063af110987ef0009b19a3924757e76e0f7ac8a" + }, + { + "checksum": "sha256:0e6d88ed1b7038d234b0cbec9bdcf9239efc898993cfb2092ffa7fe52864d9a7" + }, + { + "checksum": "sha256:84cc3add4aafbee00fb25979f24818d71a99f03c63f8ff6f57e5f085dc693dbc" + }, + { + "checksum": "sha256:d115c393bf047f72711f757568d43e633f75237a76e3cdc0ae267da6ad03ba04" + }, + { + "checksum": "sha256:277708213acd2b535f20275de72275132bdee2d478382f12a28e7b13a3d34366" + }, + { + "checksum": "sha256:5a84c721418c21c38a32cb3170f5fbf9cb3a8d1d728b408ce026dd8cd3955c15" + }, + { + "checksum": "sha256:7fcc96203ab686368fb66f568d042c893a64ac965390fd73f5c891b8a553f430" + }, + { + "checksum": "sha256:2cc3efed29198a6e4fae393b8db2661e5134b1abba4c6d056b258576925a26ee" + }, + { + "checksum": "sha256:bb55b46b0849b445cbb7c38749b79affcbf4ae4e43c86a39ba28a64dff1ad0ec" + }, + { + "checksum": "sha256:c34e6300e7c863eba8fc9ac5c43b01c5474e88d2246c6d0bc97b9f168611e53c" + }, + { + "checksum": "sha256:ad32bb58e49467cba3dabceee4e85202e8c4118624f870c299b49ff0396cda30" + }, + { + "checksum": "sha256:9df26f1ca53725cb1091fe8858747bb8c841eee29b604f96031d92880c283238" + }, + { + "checksum": "sha256:484f75c409de524cde02e7002b768ac6583ee4329bab0a28a0088863211d7832" + }, + { + "checksum": "sha256:3853bcdd64872c9fddd28f5fafdc863e6374e57e65be2ee4c581263bfea79697" + }, + { + "checksum": "sha256:4b74cef48ac1a874b473311f779b9f9055ee0a0e4b2352439a342f2a353832e5" + }, + { + "checksum": "sha256:d3e6f8e99a5c411a1efa7b373cac48b41e9237edf5b65ec4e9f25fb496485bbd" + }, + { + "checksum": "sha256:42f4cfc52a662e95002a2a35c0edfe8b855162ce84f813f7110394dbf8ff2596" + }, + { + "checksum": "sha256:82becf766432b5ef763d2bfdb53f5c233a471ccae45d7703c19f876aaa69afd8" + }, + { + "checksum": "sha256:9b88cba46414a21b780f2fc25f8e76a0cc144aabf1bec1eb9873e10369cd27c3" + }, + { + "checksum": "sha256:7af192dd97d723343c5142e2fb1053744b3d1e77b90e041ad5e0222b0258a001" + }, + { + "checksum": "sha256:e81af37e55bca721e41de93cbffedac3959256dd44bc67605908ac0298a1b74f" + }, + { + "checksum": "sha256:04ae113a2f41daae0c19672c9920f26bb46960e79ce46e626591a7e278d636a3" + }, + { + "checksum": "sha256:18f6ad86cc7f681783183746576ba0cf5b9f0eee9ab18adb615bf6398404bb74" + }, + { + "checksum": "sha256:8ea5b21347e371f3f2e124f8ddaf38909485ec829767f936c3764e142c28093d" + }, + { + "checksum": "sha256:885aad9ce00d5dd80d961c33873de3d7fd5c8e9d7493835e87be438e27423187" + }, + { + "checksum": "sha256:0914bb1e4fd12735f4919734cb42871d5a576dfe8c3df82e9de3d867c87755c1" + }, + { + "checksum": "sha256:51436452d89b01024c397555cc58b32ab3ac10055bd03043663b5debd089380b" + }, + { + "checksum": "sha256:4f850d4565e92e1d5542d790b4983104156480bcd8d73be16a779b4231c6598a" + }, + { + "checksum": "sha256:c190674c383927684353be1fa61f000971811cb6a82782e81adf4906675723c2" + }, + { + "checksum": "sha256:35471bc9ee490a4447723813c288126aceaa2617a0f271cb7cb98d99a6111ba0" + }, + { + "checksum": "sha256:3ea9e13b87f3156dd06ccfe43eeb77cb8834ab7be571a50b2faab5160c49291f" + }, + { + "checksum": "sha256:2d457d282782cbf40c42e96e1c1e93ac947ce0d5f55985c97b307d746e7e56e2" + }, + { + "checksum": "sha256:a16c9feab88a9876c41c34cd861490ce28be62e234040a59ce726e79dce4d9ef" + }, + { + "checksum": "sha256:436949033b66b9e0b91eb42961f0db604dffedd88db1dbce3a8515ade58043da" + }, + { + "checksum": "sha256:f1e0648c7c3a1b0286d9b300966effd51f328a724c37c32a3bbbcc8e00c6b168" + }, + { + "checksum": "sha256:3bccb3d9479adaa9dd9491b51247f79f05dd4fcad061a849781debd085e7209f" + }, + { + "checksum": "sha256:08178dfd67abc7e7984e94e62289d78ce84ead317c512ccb6596f7a752984dc7" + }, + { + "checksum": "sha256:d7789087a45017b084c27678ed782e8d923bd402547156a467a910b8682a8b02" + }, + { + "checksum": "sha256:b8b2e5b057d65cee6a8c65f236fbd0a9a717d15384f4d3cbc678563b223bf011" + }, + { + "checksum": "sha256:fc9f17a2fc6897c643fff67cf393051bb07ad16962b19a48f0e9991649ebae08" + }, + { + "checksum": "sha256:d120bc374362edd18914525ef7311a63e24c888f924c4e7315e036f86796309e" + }, + { + "checksum": "sha256:7f97a748a033ca6da465cdb7a861bd844523de3c7a186248bf559f0f64db0952" + }, + { + "checksum": "sha256:0af540f9af46e2ed891119dab6189e425323ac0742e0dd0f08b6df4e3ecb7092" + }, + { + "checksum": "sha256:4682cfac60ce5f220640c3f7468c39fa2805bcc281cf464fc98c273bace1e579" + }, + { + "checksum": "sha256:65bef4240948e0b9400b0d50c37420511ef2dbd0c0130bdb4413c3e60d60f2f1" + }, + { + "checksum": "sha256:fdfde1848ded3233eadd44c677269196ef72cd8e82fd372ba2c45df4fa36a140" + }, + { + "checksum": "sha256:74cad5967ec955d6b8851a5240c4ae823ea10f08dc0e811aba2b79d6dc5a9949" + }, + { + "checksum": "sha256:e6ff2a695a331ce5100f1c195d5748ce33408e300d9d611387889d77719007a3" + }, + { + "checksum": "sha256:89531a2a7fecb645bb841bb38cad65499754e83e186d380f1a246638c661b000" + }, + { + "checksum": "sha256:e1f215df72d86fec4f860cf9a3c318ad7e3db9ac853956650d01087ff0f46caa" + }, + { + "checksum": "sha256:e3c3592c21ceeefe6b62a3b6db97fc58e0ef8ed5208467a2a72dcbced0258cc6" + }, + { + "checksum": "sha256:19bb9e23dd56bfc1c29eb620bdd6f059fbea0f4d9a682e71793c52573dc2b5a5" + }, + { + "checksum": "sha256:bce48e34f1c6be096d433665f9c1f69e769445c179b91bc5b79a565604a74e3d" + }, + { + "checksum": "sha256:302b0d285149d53df9a7805cc664b1a6407c27fc94e4331b9974a21da61c658e" + }, + { + "checksum": "sha256:7305aabe9ab0e0d65293384c636bcca017abb426986c59c5f92b9c08be016be1" + }, + { + "checksum": "sha256:309365c7a2ea977c132ecf9394bfa402b6fae9ba53226f45a3cc07659ca48c24" + }, + { + "checksum": "sha256:4dd35cd8eeb1b33dafb05a476df6eaaf26dcb5442e0f9c08d547bfd73f226d8f" + }, + { + "checksum": "sha256:be01593ef51abcb8540b55d0b40946f3d0d507e2f4cde1023898635b7e03fbef" + }, + { + "checksum": "sha256:18ad184245a885a9f2ef53c58aef0ef70fe4e4d6c7728d72b2b6527117f63b61" + }, + { + "checksum": "sha256:bbebf8199fc730d588d48d52bf839ac7cfefd921d32038a62d2d221d745ce945" + }, + { + "checksum": "sha256:3b060586f41724416985e14e50ea2892e96caa103e4055acee38f00db4bcfdf5" + }, + { + "checksum": "sha256:792fc1513e33391423efb98aa9bcec85cf5db0a1a417ad41316178590fe069d7" + }, + { + "checksum": "sha256:29f3de36d25fe893787e4c375a4242ff9baec204158025187269a8379116deaa" + }, + { + "checksum": "sha256:8e2994a30b907bca3808c40bdde77b0746c4bec0d22c1ccfa74968f98c98a1d7" + }, + { + "checksum": "sha256:534dd2a6b76a2fe8133b0801b230d425f928c50b635b352016da40447c7c7185" + }, + { + "checksum": "sha256:40104e3acb91efb6474c87c2bd5ea29cd71f13429a88d78890c2e9bc59bfc4e0" + }, + { + "checksum": "sha256:9310c8ec49c5ab54bbe41637f54f8721a64e55a563469ab3693936a0336a7d1b" + }, + { + "checksum": "sha256:4446635ab8b16c20215423512319292f21b7cca294b9472c6adb186a303e26c6" + }, + { + "checksum": "sha256:3e13b711f15b6c4db837cac46cb3792363fb8d1a92a93de424b3485768fe4488" + }, + { + "checksum": "sha256:4cc7df5bb4b441f031309c30264551fa372dfee8571b54d2333aa81a44995194" + }, + { + "checksum": "sha256:af53fe5838e16824b50a6f16a4cc5850d2406f054d7c961c813673fc27698042" + }, + { + "checksum": "sha256:6269d41355f5813539f64613a06cda7c6b439ad8754db2f2727c0a2ca5713a1b" + }, + { + "checksum": "sha256:4b0e7c48e4162142940bb0387fec4e2f03cbad1ca06ee75532a515d8355dc865" + }, + { + "checksum": "sha256:36c8375deb752eae4df0760fe4634c9b5be9a1cdaee4a7bea7789004e892ae3c" + }, + { + "checksum": "sha256:8260d48510e13ebc63a211a1e546b3bf243d1c03488e50744ec1f86cca7f2b9f" + }, + { + "checksum": "sha256:079483da2949b3bb56df6d265a700b5cc67d3ff1f945afa1c519b0d53772c199" + }, + { + "checksum": "sha256:4b12fc6f2004fb899b0c06c462bee1932fef97112267e3784e8519ebb42ddede" + }, + { + "checksum": "sha256:78f8ad277e8baeb9e14e9678b6f67786ab9eb3a33f98cd012c175fdb63806a31" + }, + { + "checksum": "sha256:35197371e37e599e683c8f5d91d1a5699191dfdc58cd67577caf64d60bfbe630" + }, + { + "checksum": "sha256:998276e153886e014ce37c429a0f22b76f3ca955c1c9ba89999ce3dface1cf10" + }, + { + "checksum": "sha256:ccd4a3fe16edc7f4a47983e191995b3308937b0483f84b141401285b867c8ef7" + }, + { + "checksum": "sha256:fd05bb7abdb6087d9c0eaaf321d30bc11399dc74881374952c4a5215ea2c86e8" + }, + { + "checksum": "sha256:63d72c31437b4813bf29bb4daee23292ca4dbd3aa7d1ce6fa4ebc168b244eeaa" + }, + { + "checksum": "sha256:0a3f52922caaa3b8213d350c3c955558d77fe31fe74f27fe58f178f93f381d56" + }, + { + "checksum": "sha256:ce09871bed0750f1f238db93099b9ae264c746496ae2d79ce654afb8f513f243" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:7e1b890a9e063d4041fc924cb55067db762b32980d5e30fed11e4a7a3696d026" + }, + { + "checksum": "sha256:a66abcd7674f3356670ac394cbd3d1a34a2055259a1ccb45c02e91d190b44389" + }, + { + "checksum": "sha256:ef48355b0f8c051de6931674024dc472be1eddb4573da8d56a0668faf2352e0c" + }, + { + "checksum": "sha256:e2e45f9ad3fa2d15b62b0d166975cf7c1ba94791cbfa305ab22086ceedff8867" + }, + { + "checksum": "sha256:bbcee6c77d908470de66c126d770790a199337a32db93d8f07bb705330c8d7ba" + }, + { + "checksum": "sha256:55f735aea8ee2737fa63ebf25d27258f93ad119733a3389bfb8ea37ce140725f" + }, + { + "checksum": "sha256:6d55aefe2ee59069d22514604c47da81d2638d219fed6e7ea086b0ce64e8c2c0" + }, + { + "checksum": "sha256:18c6c5fbd998c4d642b2dba059ba5042288b2f566cb03b7b45541b556b95f29d" + }, + { + "checksum": "sha256:2b09ab68296b57a39b302498bdb837c8220e4de3aa1db7a197f23eb6b75cdacd" + }, + { + "checksum": "sha256:f096312848673cfea1e1e448083321fe4599b3339a79dc2b9e3998fd2ea1bdf3" + }, + { + "checksum": "sha256:f3693f0a1c9e9e1772795fd0a88d48d8a5d8fa7d6e1b2f0f4bc42d577ef54076" + }, + { + "checksum": "sha256:ec3e5c0bec8bcc4cf03d665e3d48cb0511bd5b9c879630563b29ddbd05bbbda0" + }, + { + "checksum": "sha256:282edb776a576a2745fe7c3278c813e0f8997e27b0ace2507dcf14f50a5f9840" + }, + { + "checksum": "sha256:77066ee655df356370b5d6d736d96835f5712f8e814dfc46b391ecaef9cdd19b" + }, + { + "checksum": "sha256:684d8438fec907d780ad69dd6f7571f84d73fecefc66026b751935d463973bd8" + }, + { + "checksum": "sha256:d2c97f8d96d6f82e34975bfcf8c25606e0370a3def4da27d6aabc85a86f589ca" + }, + { + "checksum": "sha256:49d92784895f84d5526661e685cd38d5df00d610d12b6850061199d672997348" + }, + { + "checksum": "sha256:7c385e32c12b2639232f74a5dfdfef86daf82e5418bc292c5ab2640fb5cf46dc" + }, + { + "checksum": "sha256:d906b13d5dd7a5595133e2a1af83ae17a1aae0c107579db723d21ec4371f3570" + }, + { + "checksum": "sha256:537059f8a2598f7b364693aec72f67f1a954c525b381139f736d75edbf19aa12" + }, + { + "checksum": "sha256:2976f2c007ac981a70e414960cd7426f446ebc8a0bf8feae7a6ece06c63ffefb" + }, + { + "checksum": "sha256:2ee0a45ec4832e276ee130d8440cd29de05b7fd3ca335fe4635499a8bcbdfb73" + }, + { + "checksum": "sha256:dbb28005c8f68d794af2d9b35a3fcc3294190678b8cc9475acbad8a25a8837d3" + }, + { + "checksum": "sha256:01273ffc5443535d055b7962e173a10028fd2f128124480f587f8f9d7f4d4688" + }, + { + "checksum": "sha256:05bd495695df8a78448ff0d2f2df0480f0bc49c9b7065bc2b1ceba41b42f1772" + }, + { + "checksum": "sha256:21b1497d132a52c93129700d58c44ba8c36af8da1bbd23fb408c00c3117c1012" + }, + { + "checksum": "sha256:a660c78f704d3d22458c71d86605f51d62e3cc5306d22d66bb1df86c7274ad6c" + }, + { + "checksum": "sha256:e17077c8803f792c02570b2768510b8e4955bd0ae68ab4930e7060fcbb3793f6" + }, + { + "checksum": "sha256:f727e7919c662ae990d02ad2a6299ed3161ad7522587c11441477aae03549f06" + }, + { + "checksum": "sha256:475a66955c1749ba4ea13b5f4935dd13ac322c516961a512386496fe45d04472" + }, + { + "checksum": "sha256:9ee041eadd639ab6d9187f164c7f7b7954bdb4bf5f228555176207528e84fb1f" + }, + { + "checksum": "sha256:d6a82133f2ab89874788c141b10ed1f090689cd823a7559ed9197403f4000506" + }, + { + "checksum": "sha256:657efda777af4b0d63ab127a72f3373c0d8a18f3b81e912b24a5fbdc9927dc1e" + }, + { + "checksum": "sha256:41c0f3ea7c7c2f21b5ccb0432db2c1b916ae34691a57f0b7bcb5a09dc7d8fafc" + }, + { + "checksum": "sha256:25ff1ab94430493bde65da6a800bb2638edc64dca38971eba2c798475cc18b97" + }, + { + "checksum": "sha256:7e078a375d2636b705e1734be79a8b76a306f8578066c901713663e367925bc7" + }, + { + "checksum": "sha256:4019e427bf69ed70e3a3cdfdcdd6771bcee1484f8e83bb69539a9e6530baddf1" + }, + { + "checksum": "sha256:7c37700693bc781506a06eafc18ab1cb4a7f6b7559f0595c97f60a4f88390233" + }, + { + "checksum": "sha256:36798d9e979c9976ed66e23b3c8bda6250c4e80e411afe55c3942291cb4cb4ce" + }, + { + "checksum": "sha256:bcc032463153f59b2b58fa3ef73c3bf871b9e28ba1c0df09b8a5df80ce9af559" + }, + { + "checksum": "sha256:90cad0b0149c8e21613247039af49e91e138aa5e3e7d158022cfd274f349b123" + }, + { + "checksum": "sha256:186a83e25f1758b3efaf84330ce0ff548c9878d7f4590fcfbbf9f066abc095e0" + }, + { + "checksum": "sha256:abe578c5dee7c306812e241c77ebc8ba4b54f90df8e65c56f8f202ba6e0d7183" + }, + { + "checksum": "sha256:4811ab95c1d50ef7380e2c5937ae4490f8e28f56cf787c189437d1709e4423fb" + }, + { + "checksum": "sha256:fdbce603c9cb7792728413638e4d5591f0d094a361e07ff4fe0b7014a61b0104" + }, + { + "checksum": "sha256:2cd240f59d6570295931d54dfb392604f524572cfe252b1b1c8cec7793736e4d" + }, + { + "checksum": "sha256:66760eb369153a4c41b1837d57a78d9a2f85f72ad567c8ad7ee3d5a89ef6a6cb" + }, + { + "checksum": "sha256:e57e36570f635b8df5dfcef61d40bb023ba5dd05a8b3109d6d671d956fcff69e" + }, + { + "checksum": "sha256:7729a8f9623a6fe0f94428dc8fbb5bb2349659529ecfce4a5f1854e834108614" + }, + { + "checksum": "sha256:5baa177e85af635cf7e1726e6ec558a6b44ebccbe84b13a1fa8a80f6240a19d2" + }, + { + "checksum": "sha256:07f8f24c26ec3b1716c37c9b212f4f3397dcb3eb349ef5fe09bb444654fe0033" + }, + { + "checksum": "sha256:bbf1c85af70c001f23f7a47dbc604fa155765446aa16e4403ec12af21cd1ab42" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:83cfd01b18bd91f5ab60a882cd68314afc6eb091538ec840d3cb50d317182344" + }, + { + "checksum": "sha256:a53e65798fdd2968ada806d34a248bde08dfe8d0e1164ebd272a96881483c5ed" + }, + { + "checksum": "sha256:8da37cb093752a1775c46cb71c0db55db3c3079d80bc1c5c7544d0c411bfac9b" + }, + { + "checksum": "sha256:f3b45fd08cba7c338a8103d236ba4fd2c9bbe36e6d4ef96ddcb6a722d4cf529e" + }, + { + "checksum": "sha256:167a35f5dd48fb4a632cf00ea21337689a1b78e5bb36254a2a9c6f5196b98d88" + }, + { + "checksum": "sha256:268928928fa5d36b3b63387a17d91824924116fd3e3ce4016b9339d38e66b722" + }, + { + "checksum": "sha256:34f9e9b309a8c6beabd1969ed3b0a685253eb8dd3e2d22d7ef2045f6796cd908" + }, + { + "checksum": "sha256:2aa79d4a09d234c08afc877e292e68244835e447348e85ebee431b0be1fe5104" + }, + { + "checksum": "sha256:9077c72004bd8266afafa2af093a30946105bf57ed052525e91bcc6acd9b8cef" + }, + { + "checksum": "sha256:813494dff0f52c8eb8105405b961d47ec32ea7ffc037a00c3bff568086b8ccf9" + }, + { + "checksum": "sha256:3e1977c9b662e295f67e2114694d4a11d87215346cd7836c8fe8b9cec050f357" + }, + { + "checksum": "sha256:d6afe4abbdf882ed7f15dc9ede23040494b1cdc57981a0d88b6d96b91da471f0" + }, + { + "checksum": "sha256:6c144a883629536cf8eb7eccc64389f536cc89ef806b06b4a5de18d1746eecf2" + }, + { + "checksum": "sha256:a00c72bd891d02b1e0a903fb9508d1a1aa77a3d95240b058dd8a7662173730b7" + }, + { + "checksum": "sha256:e6d780ed12021cb842de269c55a238649f6f0f76a08f5fde0db2463bdb15e067" + }, + { + "checksum": "sha256:8d09980b1baa907fbb3ec8a3d8907912a867bcb0c0bf702d9b3c8601874fe112" + }, + { + "checksum": "sha256:96172fbae0c8f413d09af511f770b08a8e26495b8ab3dfd9c3eb279257621ffd" + }, + { + "checksum": "sha256:4291406b201a35d5baaa28d2a0c5b1c218ffb7d981d0ad25532a7d36b672628e" + }, + { + "checksum": "sha256:851d321970030ef2a2444c50a959daf4e63b814acc142be821eea560c404ab45" + }, + { + "checksum": "sha256:75cb8fa5f08004dd63e6647cd699bd011b9118a1bc9d6ee41c0eb772391db077" + }, + { + "checksum": "sha256:ed03ae7d72ac4813b40490dfa0fb27fbb6828142d5507dc2fdcee636c4d19125" + }, + { + "checksum": "sha256:ae2372e9110dfbf53c83bc7f78f867edc3cdb4044d62f1e63174cc3cf2d9e06e" + }, + { + "checksum": "sha256:d3e95570de2bb3b418df9f883b22eae22086d60c437d9174c8e6bae71d0b7c11" + }, + { + "checksum": "sha256:a8dadc6e4ba668ee14fda07fecd8879c8c7acdfd9b2effeb829b541d1de0d7a2" + }, + { + "checksum": "sha256:5fb154dd6b3ae091297ce6c99576a1203451b9fedfd4d3825f1d0ed60ef9c4f6" + }, + { + "checksum": "sha256:3092ab7fc56e099d2f05167fb582076a29b1c1a2512e4fbabfd3f9000431a66b" + }, + { + "checksum": "sha256:546ebad5183085f345385a483d5bfea61bb772ecf7071a339d1db614188e69cc" + }, + { + "checksum": "sha256:bb54663316f683ffb7732f290d72b7c76a2b42e691a9d5a89869831b3982e41b" + }, + { + "checksum": "sha256:b2841b2cb926e7f529f604e2462304dcd0c63ff08f892eb573fb14029ad6511f" + }, + { + "checksum": "sha256:ee7f3a5b1494773ff9003c831f724a09213cac9f160fd2a764d13ea9b1a3921b" + }, + { + "checksum": "sha256:31951582ea375a15365e9a42ec6c0cd8a61e6f593e00f0da013d79ac967878b7" + }, + { + "checksum": "sha256:1a47d3d89a38ce0caf4136f981e06c643bfb19f86ff014d4db8b923340612692" + }, + { + "checksum": "sha256:1af8f3ff12416a7a7b105840f53ada599e6e276ed08f2dea803ad0b21f962968" + }, + { + "checksum": "sha256:4c7e176a4024f519401c2b03fd69c23375714f80b5870894fccbb2abe4d0c724" + }, + { + "checksum": "sha256:806670e01e158d45919b7c9a5ff13153b9e2e7516d18c8388bf36b493148380e" + }, + { + "checksum": "sha256:4c90fe6c1bb01242a10c5d9e1655a0c27521febeffab450d33d88b4b11a8fa95" + }, + { + "checksum": "sha256:dd29e9ec3dac16997fa4718edc3dd016fc6bd070fb0ae17c58c064ff20aa5b03" + }, + { + "checksum": "sha256:ccde203ded5f1bdc73301468985fbab7c4dc2f707a3565c6197261ac6f7361d3" + }, + { + "checksum": "sha256:d05b84d3b2126b91834bd388af680b10a73595363d138cd05920eb4ca8c0f03e" + }, + { + "checksum": "sha256:2a45920a9540e5057920f7c987d3daf910240a6d1ee63d1fa80fcdf3cee4fd71" + }, + { + "checksum": "sha256:dccd8b3ffb8a9015afe1d4cfa65df84589ede6582845899515d176695b457599" + }, + { + "checksum": "sha256:3717331bb0807804e392afc98dd1c9cba30fdf2464aaf8869598d483313f9606" + }, + { + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "checksum": "sha256:5999ddeea23f7ee7640ad90aacd09cc9c29b51fd489d5fe74db9e5b6ed981fef" + }, + { + "checksum": "sha256:1206464e80ce9c9730e029702fda02a3510294d334a559215a7d6361c457cd46" + }, + { + "checksum": "sha256:9e90e6054da06f5c8c2733c3b66987693a58ddc1f05d95b23ca0a464e26a2b22" + }, + { + "checksum": "sha256:7b6a754b55749e5f11ffec19cbb711f570607c2230e5750e5b2aaa915aa765c7" + }, + { + "checksum": "sha256:7519f2af362827daecf105e1dccb551350f32dfd3f6a8a85bf6eb1b4b7788255" + }, + { + "checksum": "sha256:4103adee1d874f535dccc59558968a8687c0cc8391b8adc4957d2952c244cf3b" + }, + { + "checksum": "sha256:93772aade166fdb4bb4a78a0e08bea1b6f155e416597037267ad2603a767b9f5" + }, + { + "checksum": "sha256:b79e0e33b98801e7cda1c845b31cfd5537b150fe4da4df1cacfc1d1534d57ce2" + }, + { + "checksum": "sha256:dd6a948e5a656701156c618e202c0b6defd11ba6f162b6790cbb42cea15141ae" + }, + { + "checksum": "sha256:81afd309f084c91d68c06bd46a4fce2e0d1e265a01ff87e309d1202e711e4a02" + }, + { + "checksum": "sha256:13e2716cf8b28d92df079f55cf5f78c280f8d429e619fe22c80abef49c4f901e" + }, + { + "checksum": "sha256:dd91378f68acef88ad2c653450a9e03054d87979e79625fd5cd3f01b5a68ba55" + }, + { + "checksum": "sha256:02bae2823210d586e266d37dad90fb9daed0787c7932bbe0520b769afc6d8d76" + }, + { + "checksum": "sha256:e990635ac1345ee9d17cd8c20b79341765ca68dce1f9775a68a0a4badce4f333" + }, + { + "checksum": "sha256:a971b04b37533967e2b76d92af5b7d5dfe33998584bcc35919044fc78a456123" + }, + { + "checksum": "sha256:fbbc385a90edf08de42879e9c8ff762c5d3d9ca750d10e0bccbcd56592e5cff0" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ] + }, + "runner": "org.osbuild.rhel82" + }, + "stages": [ + { + "name": "org.osbuild.kernel-cmdline", + "options": { + "root_fs_uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "kernel_opts": "net.ifnames=0 crashkernel=auto" + } + }, + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:22f3b4f5555795c96c7faa32cce72a2cc975c536397c480a296c5d11a3cc41a6" + }, + { + "checksum": "sha256:646b9a3d500ffe337d6dfe5e9acd6736248dc05887d0ee417203e59aea615b42" + }, + { + "checksum": "sha256:64b660142064caf425a371e256e989e05995b86af214233277d9fe9fa00c420c" + }, + { + "checksum": "sha256:b8921c14f31e46a8ae0e2cca015e43bc5ac96474654245d5def767c3003394e9" + }, + { + "checksum": "sha256:126bbe586fe4116b343fc349c80480f01d597c2a41abec5bc15019b126f51fdc" + }, + { + "checksum": "sha256:7db4f75c6439fbf4a1b3f6dcb1eb0935a92ac47b25c834d674ca46abda544a3c" + }, + { + "checksum": "sha256:a5335a9d7e431ef45f4b6d256bdd7e4bfa98f73d994d6ec2a1b7c5ee792c821a" + }, + { + "checksum": "sha256:e630f2f55517bd25d483fae8a0ed936aec05da3a542f56d3fcd87f577cbcbc1a" + }, + { + "checksum": "sha256:880e3e51d0379b559522b32ff8ecd0664e618b9b0ba3493fa5a4fe4cf226daec" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:30624f95cd736ceec96b7e2dfc4c4594d38825139c670dcd09b323faeb46d87a" + }, + { + "checksum": "sha256:98f8b8676e020636d1e096ce2b5f110c0dfa9fe83644bdf2e0ef4edaa770c183" + }, + { + "checksum": "sha256:03d1b5541823ba8637e04c69d0e00d711e0c799e764d6191d6ad989b459004e3" + }, + { + "checksum": "sha256:879d72df89400ac2d742b5093870760ec31b5b3dfef346a91fa3e4fffd54bc16" + }, + { + "checksum": "sha256:74727202d756f0ddfa6967c9ce36120e3f742b291b24d502514144af74118bf4" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:3ef66f9831664434eb956122c731d4af82e9e8df2986e15f78eeaed0bfe41445" + }, + { + "checksum": "sha256:82f2336e0c5cf2a9271259a12cc5c84f95959503e2f131a2f41ca5f291ad8055" + }, + { + "checksum": "sha256:ab4cbc162b173a24b9f8e323b0b93d7619eab406177fa43e1d7b835b77b20e39" + }, + { + "checksum": "sha256:dc5fbbeb45fca1132cf465519fc6cba4701701aa25983da78f13050882787be2" + }, + { + "checksum": "sha256:4ee51b6f690e64916984c844636f502e32ae9a753b87c498ac4f11a8bb57b71c" + }, + { + "checksum": "sha256:75b826208559ef5e3edca7441e2d111f40ca7a21cebadd6a5726f6dee8bf1cf8" + }, + { + "checksum": "sha256:cb1d1285d4195cd9b5098120649b95963341366f6e5490dfa9c5f06d7fa32dd4" + }, + { + "checksum": "sha256:0c3e22cf2e8ab8b4c4f043f043e4e71dfccbe9b30ecab3a6532f1dddcc06662c" + }, + { + "checksum": "sha256:9761722b401cfb5386d8009b797a1a162f1deed04fef32815535703c9bb4b6a6" + }, + { + "checksum": "sha256:2020a1fe4a1643ebdd76f6ae3a0942f115e80279625d54a783f804711915e5a3" + }, + { + "checksum": "sha256:dd8480924a9e9d6adc3c36562e090aec3f33e57dc93e4dea73ff37618755406b" + }, + { + "checksum": "sha256:265c87cf9f13796cb985d22c5c743ac367db8ca9a6a793ce1d8c77046d99117a" + }, + { + "checksum": "sha256:09523f0066c6f8a3cd0af3cbcf504b76814b2685dc91f79d75c7f990801a7765" + }, + { + "checksum": "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5" + }, + { + "checksum": "sha256:35c952c9e48350adf6f94b48dc7636f664ebbe16ed6632ee30c2e0fd22e7f0bf" + }, + { + "checksum": "sha256:8ca16af0765e37aac3c2f4ef97791648b0fb0f247196f44bd768aed396c851e2" + }, + { + "checksum": "sha256:751df4c8122e941b9dc37ab75debbe937807f72e5872401cf82d97c653866e07" + }, + { + "checksum": "sha256:0cd56334755c7cbc9a4b18d9746dc3cae765a9ae8231b26e1e740a447d82c499" + }, + { + "checksum": "sha256:e6a00b8a31b790687f294e1a829e3171b4963b34f302aa1f7eeb245d4b49071a" + }, + { + "checksum": "sha256:cff5078143ab38f37a01e840bf5d42e2730c4b8e08ee7221a607ef52de8168cf" + }, + { + "checksum": "sha256:3f328081e6f97c4a833582e808d07bba2bf43f2b2d74f509c88889ba57fbe643" + }, + { + "checksum": "sha256:0a2ac458890bace077929cd545f55dcd22b93d2b6a2fa6c1583e0ed41ff7a7ab" + }, + { + "checksum": "sha256:c2b12d1994efd87e8ba215e98a47c48c6e0fd07929b4889f79fed02d73b48b39" + }, + { + "checksum": "sha256:92bba4bcc53313c8add1ad83efbc2eae5e909a3d4f1632ae564ad99335a53aa0" + }, + { + "checksum": "sha256:4980cdfb336c5de4c4336f41f6947cfb33b7befe7ed045711248469fe48edcd3" + }, + { + "checksum": "sha256:9f1bc331219bc9bc97692477137dda660f512e8df95bbc99dd5300d48db13dbf" + }, + { + "checksum": "sha256:251ae9c0813ccc300bb793d143241a6dff5371d3836f3a5b448920b4fb5c3766" + }, + { + "checksum": "sha256:6c0d698eef8a7e0dbce88893187307135269d321593700edabe10a17fdccfb14" + }, + { + "checksum": "sha256:923b497f06eb1720c9ad6d1e55fc6bb3e26bf24fcd0e7e355a683a86de495fd1" + }, + { + "checksum": "sha256:f0f8b7ec4ec783f4e6310208926f54b0bceed5476b6cebb5be9b336faaeaab0a" + }, + { + "checksum": "sha256:457108e80b840850057c10f933446fd71a0d20b356c2a039af71e9fd68f61382" + }, + { + "checksum": "sha256:6110d2531a5e40210ec9009cf80e901052406df0a41b075d591f903539575acf" + }, + { + "checksum": "sha256:8f0e07257b26123e61b48bf23ded2f0713ccba8ddb69442f2999ae4c9cf291f0" + }, + { + "checksum": "sha256:53f553ae5c618d91bf82ad1a36bec5cdb0ec69f163df0af751adb8ae1492a09c" + }, + { + "checksum": "sha256:fcd9779461cdb1addf4ffb47909fd818fc1c2f9df5e0288f4e12760c3fe2c452" + }, + { + "checksum": "sha256:9b3fec76d33c17ff30266528444e85f87fa48f89bf1abb0eee293cbf7c6ed764" + }, + { + "checksum": "sha256:72ffa52946382499ff2479f37305277e7a6cdc9f5c01a3dd150b3dd5fac0322f" + }, + { + "checksum": "sha256:23977fcf0abfaf9bb523adaf7432c5528c5add63508d4fb48a92c0b39a795317" + }, + { + "checksum": "sha256:5b681ca8e1778a6a7ec40a7b30a72537aef11518c2bb5ffdde346a0c590a2517" + }, + { + "checksum": "sha256:96aa9181e5e0e6ea19b903d8d861171e0dc2c35167626a6d91cfe0f3402ccf46" + }, + { + "checksum": "sha256:59c099ac7d9aee3e356bada6ecd9aab9bb57585214267b9d71fe2cba98de3cb0" + }, + { + "checksum": "sha256:1eca3ef1ec2edeae041c3d55687c806db77a2a1e0837fa4937b664e37b903e22" + }, + { + "checksum": "sha256:c5a8ad2ff91b081c664dc9a946acaffc85c9dfd202c9e9667f56ad4c23211807" + }, + { + "checksum": "sha256:a5b032d5d199e3facef794929ac837d572e7fcb0db3a9c9d2480daccb8765ee1" + }, + { + "checksum": "sha256:b63261bfd20aaee97ab2a47c2368c8eab62fc62c1f988a80f52715347c3bd72d" + }, + { + "checksum": "sha256:e35db3041d24f29f006b94cacf14c4ac82a12b3e723b5ddf3d161e67ac5eae2e" + }, + { + "checksum": "sha256:d6ba0f45311859012b68738abd9062cf20efe954cf3fd97e602e09fbfe8e3fdb" + }, + { + "checksum": "sha256:408557972679db1bd8c1c2d5a07399ec408d2022fa17d45e6e1d6e9baa6f2513" + }, + { + "checksum": "sha256:7b8b3d31e3ddd80fd39bf396122bb4b38582f090889b7d465e0db9eb8d6a7bf2" + }, + { + "checksum": "sha256:b1af9ab85021403842c69373903db6d89328575a0902b95e852ae8052a177ac7" + }, + { + "checksum": "sha256:a8d16009aa67cb5f09bdeeca57c1198ad1ecd2d1a963146369bb6200d1adcf5a" + }, + { + "checksum": "sha256:64f84dd2024470dcb8ca11ac0e22cdbedc79e6a55b916f60de27c5da1018f9e9" + }, + { + "checksum": "sha256:db1fad3c2d8735e69084bd4b09ea963938e4dde2f2e096dc7a4ce146f18b7ab0" + }, + { + "checksum": "sha256:fb5a9dbeb24253bcb3451cd80b659cd24ce486f98efe6d282e14ad123f786848" + }, + { + "checksum": "sha256:2429abaf8afb74f4fdc8050e4c90e315316186d372a809e062a914808d02d907" + }, + { + "checksum": "sha256:413d3b549e7339e7fee5a2f8232ec11ec3e7490b57a303bde5b15677af0d9add" + }, + { + "checksum": "sha256:e944915a4f9e920d831db11d1a2a08e3ab8712d04735e3499150f90be056026a" + }, + { + "checksum": "sha256:4a88a0e57e579ef6c53736c26cc8bbd7fa1f6d3de4a7d61fcde96d9ecb6947d9" + }, + { + "checksum": "sha256:fabfbd58cb438e4e1b029b148f2186fda469bf049a1125be01c982583d13f6bd" + }, + { + "checksum": "sha256:40e39bd372ee233258f6c0b64ae62f5065d3c7bff91c891f2e0949b2ffa6e277" + }, + { + "checksum": "sha256:e153757cbf8c1552b4f3f9593335a8332030b3aca304caf29258721c52ae4ec0" + }, + { + "checksum": "sha256:4fafa365bdf0023cf4efdd69c2f02f73d6e89d63b8a895d472baf5cc4feeed92" + }, + { + "checksum": "sha256:f934a992e23ec2d6c2adb63d5031912c4813238a82eb56ce5e0acea184588e78" + }, + { + "checksum": "sha256:df582e688213786293a439987456c58463c8a30564fbd9c4999d0300c17e67ba" + }, + { + "checksum": "sha256:1cc3e427d85ddd7caeda2c9a5063af110987ef0009b19a3924757e76e0f7ac8a" + }, + { + "checksum": "sha256:0e6d88ed1b7038d234b0cbec9bdcf9239efc898993cfb2092ffa7fe52864d9a7" + }, + { + "checksum": "sha256:84cc3add4aafbee00fb25979f24818d71a99f03c63f8ff6f57e5f085dc693dbc" + }, + { + "checksum": "sha256:d115c393bf047f72711f757568d43e633f75237a76e3cdc0ae267da6ad03ba04" + }, + { + "checksum": "sha256:52f6082ca12006790d087a08379b92b870fc09d6a1da9f863671722878c8d07e" + }, + { + "checksum": "sha256:277708213acd2b535f20275de72275132bdee2d478382f12a28e7b13a3d34366" + }, + { + "checksum": "sha256:5a84c721418c21c38a32cb3170f5fbf9cb3a8d1d728b408ce026dd8cd3955c15" + }, + { + "checksum": "sha256:7fcc96203ab686368fb66f568d042c893a64ac965390fd73f5c891b8a553f430" + }, + { + "checksum": "sha256:2cc3efed29198a6e4fae393b8db2661e5134b1abba4c6d056b258576925a26ee" + }, + { + "checksum": "sha256:7e99557bcecefd6241b5d76a2fd43c3fd94d8a8337af0287cb238942cf5a30aa" + }, + { + "checksum": "sha256:41acedd1ce2cfa1063ef22c3f49d0a2d45eb768c587b9c8a6b135860ff1c02f4" + }, + { + "checksum": "sha256:bb55b46b0849b445cbb7c38749b79affcbf4ae4e43c86a39ba28a64dff1ad0ec" + }, + { + "checksum": "sha256:677ea3b043f29110c06c6759be1a5afafa66b56bad6d7af6777d86cf7baefcb8" + }, + { + "checksum": "sha256:6b157141692f891ad738b5989b6fdf5a0922d8b8683d957a76067fee6ba5f219" + }, + { + "checksum": "sha256:c34e6300e7c863eba8fc9ac5c43b01c5474e88d2246c6d0bc97b9f168611e53c" + }, + { + "checksum": "sha256:bce4ccc35f0724dab035fdd012316ad7123a0b4bde6af67c20e71bcdaeb8f64f" + }, + { + "checksum": "sha256:ad32bb58e49467cba3dabceee4e85202e8c4118624f870c299b49ff0396cda30" + }, + { + "checksum": "sha256:9df26f1ca53725cb1091fe8858747bb8c841eee29b604f96031d92880c283238" + }, + { + "checksum": "sha256:484f75c409de524cde02e7002b768ac6583ee4329bab0a28a0088863211d7832" + }, + { + "checksum": "sha256:3853bcdd64872c9fddd28f5fafdc863e6374e57e65be2ee4c581263bfea79697" + }, + { + "checksum": "sha256:4b74cef48ac1a874b473311f779b9f9055ee0a0e4b2352439a342f2a353832e5" + }, + { + "checksum": "sha256:d3e6f8e99a5c411a1efa7b373cac48b41e9237edf5b65ec4e9f25fb496485bbd" + }, + { + "checksum": "sha256:9075032326cd6da781c5a8f02f43988df08244182631df185b90884cdcd2bafb" + }, + { + "checksum": "sha256:b2be91112ab5a4c3977ebcb72452393150a2e5ecbdfdd664c3c8b952db61c591" + }, + { + "checksum": "sha256:42f4cfc52a662e95002a2a35c0edfe8b855162ce84f813f7110394dbf8ff2596" + }, + { + "checksum": "sha256:82becf766432b5ef763d2bfdb53f5c233a471ccae45d7703c19f876aaa69afd8" + }, + { + "checksum": "sha256:bfeddba14d40deb22197531dd544d10417b3e9231e1a56fb30418663d00df9a6" + }, + { + "checksum": "sha256:cd8811c732e84a774ea720116d24b4b310d9a7d269a0457df8e708109fd0a120" + }, + { + "checksum": "sha256:39bfa470cfbe028c3a638d7283ff66a3e7c8ee654ccefdd58474a860e3420e22" + }, + { + "checksum": "sha256:c15782845bd5418289a7ff0ca28c303e5d80fdb55147872e580abca02eadf575" + }, + { + "checksum": "sha256:e74678e1b23544ffc0d1fc1e3e3d7564e359f6c874f5eede32d682cbe5059923" + }, + { + "checksum": "sha256:09c4c66589d924279dd5c63dfdbb4a19b6e2927f01f9a6958b519edd1dd1043d" + }, + { + "checksum": "sha256:fb224140d29f9bc48a2636b6947645e46da44b0d0233bcd4966765dea56a164e" + }, + { + "checksum": "sha256:965d6aabcf2b56566b2a082a950b293a9cb5b964e2a33aade07078092b2b3a45" + }, + { + "checksum": "sha256:d7910a43ccb41a7cea58df1c4edecb309172d1ec8090a1a1a890381b046cedb2" + }, + { + "checksum": "sha256:9b88cba46414a21b780f2fc25f8e76a0cc144aabf1bec1eb9873e10369cd27c3" + }, + { + "checksum": "sha256:7af192dd97d723343c5142e2fb1053744b3d1e77b90e041ad5e0222b0258a001" + }, + { + "checksum": "sha256:e81af37e55bca721e41de93cbffedac3959256dd44bc67605908ac0298a1b74f" + }, + { + "checksum": "sha256:b59c6010d3eda92c654d4544fbc78d7bf3ed82b2661064d1679953bce8f8b7fd" + }, + { + "checksum": "sha256:04ae113a2f41daae0c19672c9920f26bb46960e79ce46e626591a7e278d636a3" + }, + { + "checksum": "sha256:ab08621cdf99fc696aab1d7de2c10649fbea9001f62a1c3574c5468240d24394" + }, + { + "checksum": "sha256:18f6ad86cc7f681783183746576ba0cf5b9f0eee9ab18adb615bf6398404bb74" + }, + { + "checksum": "sha256:78c646627263a41cd55eed285232115dec589954da8c18ac32f37b2fdd96c688" + }, + { + "checksum": "sha256:885aad9ce00d5dd80d961c33873de3d7fd5c8e9d7493835e87be438e27423187" + }, + { + "checksum": "sha256:0914bb1e4fd12735f4919734cb42871d5a576dfe8c3df82e9de3d867c87755c1" + }, + { + "checksum": "sha256:51436452d89b01024c397555cc58b32ab3ac10055bd03043663b5debd089380b" + }, + { + "checksum": "sha256:9c58e6d1f654074080a50aefcd9eba3b37bb43c64a449fa96485725ba9ce6716" + }, + { + "checksum": "sha256:4f850d4565e92e1d5542d790b4983104156480bcd8d73be16a779b4231c6598a" + }, + { + "checksum": "sha256:c190674c383927684353be1fa61f000971811cb6a82782e81adf4906675723c2" + }, + { + "checksum": "sha256:35471bc9ee490a4447723813c288126aceaa2617a0f271cb7cb98d99a6111ba0" + }, + { + "checksum": "sha256:b5e68b3d14142d44f3502c464f2720ffdc1181622cfdd2d430adba8885127e63" + }, + { + "checksum": "sha256:3ea9e13b87f3156dd06ccfe43eeb77cb8834ab7be571a50b2faab5160c49291f" + }, + { + "checksum": "sha256:2d457d282782cbf40c42e96e1c1e93ac947ce0d5f55985c97b307d746e7e56e2" + }, + { + "checksum": "sha256:a16c9feab88a9876c41c34cd861490ce28be62e234040a59ce726e79dce4d9ef" + }, + { + "checksum": "sha256:b7746a0aac1fa38b79711fd5d98f571612d7879af0e4e47c42bf43ba564cef16" + }, + { + "checksum": "sha256:436949033b66b9e0b91eb42961f0db604dffedd88db1dbce3a8515ade58043da" + }, + { + "checksum": "sha256:f1e0648c7c3a1b0286d9b300966effd51f328a724c37c32a3bbbcc8e00c6b168" + }, + { + "checksum": "sha256:ac095caa9dcc503cf87a6ca5f5a4e3632fd970537c2f039205e22865a6bd10a3" + }, + { + "checksum": "sha256:3bccb3d9479adaa9dd9491b51247f79f05dd4fcad061a849781debd085e7209f" + }, + { + "checksum": "sha256:9a2e49109984bfe36d34cc1815a6aee230a2d8bb3c13b03763a367216af34d67" + }, + { + "checksum": "sha256:08178dfd67abc7e7984e94e62289d78ce84ead317c512ccb6596f7a752984dc7" + }, + { + "checksum": "sha256:d7789087a45017b084c27678ed782e8d923bd402547156a467a910b8682a8b02" + }, + { + "checksum": "sha256:b8b2e5b057d65cee6a8c65f236fbd0a9a717d15384f4d3cbc678563b223bf011" + }, + { + "checksum": "sha256:fc9f17a2fc6897c643fff67cf393051bb07ad16962b19a48f0e9991649ebae08" + }, + { + "checksum": "sha256:d120bc374362edd18914525ef7311a63e24c888f924c4e7315e036f86796309e" + }, + { + "checksum": "sha256:7f97a748a033ca6da465cdb7a861bd844523de3c7a186248bf559f0f64db0952" + }, + { + "checksum": "sha256:aaa3d17cafb5ab7a2d8678d509d95974c53147505d1ae302b97905c5ec267b1d" + }, + { + "checksum": "sha256:0af540f9af46e2ed891119dab6189e425323ac0742e0dd0f08b6df4e3ecb7092" + }, + { + "checksum": "sha256:1b879ebad67b32ba9e2a9237b91854cdd0ec5c9eb4a9c1c40462d36596405ec1" + }, + { + "checksum": "sha256:a385cf1683c05ba68de9874b2659fca53160544abf658856a3bee9391e52532e" + }, + { + "checksum": "sha256:38c481843b2004d6aa76450aefb1d96936a7e5fc6eaa7f428463a7a68b3eb039" + }, + { + "checksum": "sha256:4682cfac60ce5f220640c3f7468c39fa2805bcc281cf464fc98c273bace1e579" + }, + { + "checksum": "sha256:21a3e46a2a6ac7956b19be0bdf43f0be2d216c8455ca704f3bb818834874a82b" + }, + { + "checksum": "sha256:65bef4240948e0b9400b0d50c37420511ef2dbd0c0130bdb4413c3e60d60f2f1" + }, + { + "checksum": "sha256:fdfde1848ded3233eadd44c677269196ef72cd8e82fd372ba2c45df4fa36a140" + }, + { + "checksum": "sha256:e2e79ae9c27bd89e089e1b31eea12084b0cce5aabdd7dd9113d9c8e53696d2ee" + }, + { + "checksum": "sha256:74cad5967ec955d6b8851a5240c4ae823ea10f08dc0e811aba2b79d6dc5a9949" + }, + { + "checksum": "sha256:e6ff2a695a331ce5100f1c195d5748ce33408e300d9d611387889d77719007a3" + }, + { + "checksum": "sha256:b2742fbda02636368c1ba4d6c8d77f7ba46261268c269090b1bf0e8450c180ea" + }, + { + "checksum": "sha256:508ebbee159a5a3d069ca0149fcf67199790c045f90db7c7ca624b8476821fe9" + }, + { + "checksum": "sha256:89531a2a7fecb645bb841bb38cad65499754e83e186d380f1a246638c661b000" + }, + { + "checksum": "sha256:5e6468f344c380e7ba83743a8a2aaa73a333595ea0a19a8388ead8753929909e" + }, + { + "checksum": "sha256:4f24819ebd2968527e2ddbbf08c31906d4c0757a9c9c883be13d0820dc272624" + }, + { + "checksum": "sha256:e1f215df72d86fec4f860cf9a3c318ad7e3db9ac853956650d01087ff0f46caa" + }, + { + "checksum": "sha256:21f23d4f9a04341117908ab4b778c287a0ffc04020797254534d56675cc99a33" + }, + { + "checksum": "sha256:e3c3592c21ceeefe6b62a3b6db97fc58e0ef8ed5208467a2a72dcbced0258cc6" + }, + { + "checksum": "sha256:523d6c8773f687dfaee21e80709a76bb31c9da2ab2834b6a8e2a8920ffb6615e" + }, + { + "checksum": "sha256:13eee378f386ece19fbd60558a2ed985eb5c32a076235c7ec15b49032888c828" + }, + { + "checksum": "sha256:a802778e1979c8b2115f68a799175fd0b6d6d1aec55401a17f84ca918b7505cd" + }, + { + "checksum": "sha256:19bb9e23dd56bfc1c29eb620bdd6f059fbea0f4d9a682e71793c52573dc2b5a5" + }, + { + "checksum": "sha256:bce48e34f1c6be096d433665f9c1f69e769445c179b91bc5b79a565604a74e3d" + }, + { + "checksum": "sha256:39833d43b0b71110eb1ca50fb2088159b1f0ab85e2ffc09769cddf58c04bd2f5" + }, + { + "checksum": "sha256:302b0d285149d53df9a7805cc664b1a6407c27fc94e4331b9974a21da61c658e" + }, + { + "checksum": "sha256:7305aabe9ab0e0d65293384c636bcca017abb426986c59c5f92b9c08be016be1" + }, + { + "checksum": "sha256:309365c7a2ea977c132ecf9394bfa402b6fae9ba53226f45a3cc07659ca48c24" + }, + { + "checksum": "sha256:4dd35cd8eeb1b33dafb05a476df6eaaf26dcb5442e0f9c08d547bfd73f226d8f" + }, + { + "checksum": "sha256:be01593ef51abcb8540b55d0b40946f3d0d507e2f4cde1023898635b7e03fbef" + }, + { + "checksum": "sha256:18ad184245a885a9f2ef53c58aef0ef70fe4e4d6c7728d72b2b6527117f63b61" + }, + { + "checksum": "sha256:bbebf8199fc730d588d48d52bf839ac7cfefd921d32038a62d2d221d745ce945" + }, + { + "checksum": "sha256:3b060586f41724416985e14e50ea2892e96caa103e4055acee38f00db4bcfdf5" + }, + { + "checksum": "sha256:792fc1513e33391423efb98aa9bcec85cf5db0a1a417ad41316178590fe069d7" + }, + { + "checksum": "sha256:29f3de36d25fe893787e4c375a4242ff9baec204158025187269a8379116deaa" + }, + { + "checksum": "sha256:8e2994a30b907bca3808c40bdde77b0746c4bec0d22c1ccfa74968f98c98a1d7" + }, + { + "checksum": "sha256:534dd2a6b76a2fe8133b0801b230d425f928c50b635b352016da40447c7c7185" + }, + { + "checksum": "sha256:1abf445376ec2530ba601838496ce0608edeadfe43a6b2114827811979be503d" + }, + { + "checksum": "sha256:40104e3acb91efb6474c87c2bd5ea29cd71f13429a88d78890c2e9bc59bfc4e0" + }, + { + "checksum": "sha256:9310c8ec49c5ab54bbe41637f54f8721a64e55a563469ab3693936a0336a7d1b" + }, + { + "checksum": "sha256:4446635ab8b16c20215423512319292f21b7cca294b9472c6adb186a303e26c6" + }, + { + "checksum": "sha256:e5a265eacd6db352523861796aceab37114e449adf8e75114cbf6b1bd7429d27" + }, + { + "checksum": "sha256:1201094e719702586fb1bf5a90c1871ca0b98503e712bfa5d1a43ecca4866627" + }, + { + "checksum": "sha256:6f195f37fa68639756a9c7addca897e89242553bb237ed691d8831f6d86f6cd9" + }, + { + "checksum": "sha256:02b5629e0970f9f0bb6aeb6e63ae8d427492dcf1c3d6b471d624495e386a584e" + }, + { + "checksum": "sha256:15d24747a5d35c5c8872d1264e2d37f46102155086eff7ee970db5b9cb0be497" + }, + { + "checksum": "sha256:3e13b711f15b6c4db837cac46cb3792363fb8d1a92a93de424b3485768fe4488" + }, + { + "checksum": "sha256:37dc570b8dfd1d1062c75a7acf0205f8f92c343558ff387ddd878e7c04bd4e1c" + }, + { + "checksum": "sha256:4cc7df5bb4b441f031309c30264551fa372dfee8571b54d2333aa81a44995194" + }, + { + "checksum": "sha256:7f6395bef45df58a8d21f3516d71198d932eb1d9188a26fe9e6bc8881ace0f62" + }, + { + "checksum": "sha256:af53fe5838e16824b50a6f16a4cc5850d2406f054d7c961c813673fc27698042" + }, + { + "checksum": "sha256:9b4729d703d21dfc5ab34e1d5a8eb2a280cf78359f627cda4f6a05054b71062e" + }, + { + "checksum": "sha256:c660309209ba9f127661f47a3e098e4cabb74d4f3b08b52db9ce4321b54f3853" + }, + { + "checksum": "sha256:1be9f6acd5fb99b2451f2b138ddcc90b0aae002a8ec5fb08062c32c473d221c0" + }, + { + "checksum": "sha256:6269d41355f5813539f64613a06cda7c6b439ad8754db2f2727c0a2ca5713a1b" + }, + { + "checksum": "sha256:4b0e7c48e4162142940bb0387fec4e2f03cbad1ca06ee75532a515d8355dc865" + }, + { + "checksum": "sha256:36c8375deb752eae4df0760fe4634c9b5be9a1cdaee4a7bea7789004e892ae3c" + }, + { + "checksum": "sha256:c97b488edc305d08b9f78f896b008b71ad947447c81ff4b79c39715bcafe52c1" + }, + { + "checksum": "sha256:8260d48510e13ebc63a211a1e546b3bf243d1c03488e50744ec1f86cca7f2b9f" + }, + { + "checksum": "sha256:079483da2949b3bb56df6d265a700b5cc67d3ff1f945afa1c519b0d53772c199" + }, + { + "checksum": "sha256:4b12fc6f2004fb899b0c06c462bee1932fef97112267e3784e8519ebb42ddede" + }, + { + "checksum": "sha256:9653bda9a6270f52ee607bfe5675dcc9224cb5765c11f52d25b1add9a9a7757b" + }, + { + "checksum": "sha256:78f8ad277e8baeb9e14e9678b6f67786ab9eb3a33f98cd012c175fdb63806a31" + }, + { + "checksum": "sha256:35197371e37e599e683c8f5d91d1a5699191dfdc58cd67577caf64d60bfbe630" + }, + { + "checksum": "sha256:998276e153886e014ce37c429a0f22b76f3ca955c1c9ba89999ce3dface1cf10" + }, + { + "checksum": "sha256:ccd4a3fe16edc7f4a47983e191995b3308937b0483f84b141401285b867c8ef7" + }, + { + "checksum": "sha256:4c3ae6b8fe3174dabee8be4377fb1bee599227f6d6a88e04c34c733e8210077b" + }, + { + "checksum": "sha256:071b7ea81c6aa0609be6adae6df85a9a68d7e6b3514c6a32c23a0d7d7efc04d1" + }, + { + "checksum": "sha256:c4e89fc7630ba5e74efb55f60b2e04ad9762cd8758829f994cb48b5f6e836ac1" + }, + { + "checksum": "sha256:03cf8cdeeaf80274436608b48a2c7451a9de386283074f58be28dec5b95b193b" + }, + { + "checksum": "sha256:fd05bb7abdb6087d9c0eaaf321d30bc11399dc74881374952c4a5215ea2c86e8" + }, + { + "checksum": "sha256:63d72c31437b4813bf29bb4daee23292ca4dbd3aa7d1ce6fa4ebc168b244eeaa" + }, + { + "checksum": "sha256:688aeafda1a81240a27f7f8697aa1217218fd7169adeefb5fab6bc5cc0c6414e" + }, + { + "checksum": "sha256:a1e3beb51e4255795a948c5e3f8b7f74945750b5422eac2054edb6fa6fbe9851" + }, + { + "checksum": "sha256:89f88f664dd68bad43769774ae58e3aabc8eb79d4d00a66271e117f0fd9357af" + }, + { + "checksum": "sha256:0a3f52922caaa3b8213d350c3c955558d77fe31fe74f27fe58f178f93f381d56" + }, + { + "checksum": "sha256:ce09871bed0750f1f238db93099b9ae264c746496ae2d79ce654afb8f513f243" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:7e1b890a9e063d4041fc924cb55067db762b32980d5e30fed11e4a7a3696d026" + }, + { + "checksum": "sha256:db17ac8a0794be4a3823d14daeb8a3a59be7bb0d6e7b3486107898dd604451cd" + }, + { + "checksum": "sha256:a66abcd7674f3356670ac394cbd3d1a34a2055259a1ccb45c02e91d190b44389" + }, + { + "checksum": "sha256:ef48355b0f8c051de6931674024dc472be1eddb4573da8d56a0668faf2352e0c" + }, + { + "checksum": "sha256:693bba9fe29e6dae362e4a2ffad6474f3e8934bea6778797657d332d872c48b2" + }, + { + "checksum": "sha256:8b0245757c52f6934a1ce7671217835f1661dc4f52be75dd070975b080a033e5" + }, + { + "checksum": "sha256:bc931e7980d562ae9660f792de94829382a70d6f2d787025685868ce11366e24" + }, + { + "checksum": "sha256:e2e45f9ad3fa2d15b62b0d166975cf7c1ba94791cbfa305ab22086ceedff8867" + }, + { + "checksum": "sha256:286a8636c965433b8234c7780243732441b0650fe6633359a1b8950cd4e320a5" + }, + { + "checksum": "sha256:bbcee6c77d908470de66c126d770790a199337a32db93d8f07bb705330c8d7ba" + }, + { + "checksum": "sha256:cbfc3d7643d281649042460c2ad77758cdd0e99536f3559ad7b96a4dcc5a10a6" + }, + { + "checksum": "sha256:66f835821256add088054ba93b125755dd01218ba7ab7aa587d12bbff9578f56" + }, + { + "checksum": "sha256:4ff9e7b217f71f5d7c8e23632ac242e7bb3cf9b785865d233516185efad9ccb8" + }, + { + "checksum": "sha256:55f735aea8ee2737fa63ebf25d27258f93ad119733a3389bfb8ea37ce140725f" + }, + { + "checksum": "sha256:6d55aefe2ee59069d22514604c47da81d2638d219fed6e7ea086b0ce64e8c2c0" + }, + { + "checksum": "sha256:18c6c5fbd998c4d642b2dba059ba5042288b2f566cb03b7b45541b556b95f29d" + }, + { + "checksum": "sha256:2b09ab68296b57a39b302498bdb837c8220e4de3aa1db7a197f23eb6b75cdacd" + }, + { + "checksum": "sha256:f096312848673cfea1e1e448083321fe4599b3339a79dc2b9e3998fd2ea1bdf3" + }, + { + "checksum": "sha256:f3693f0a1c9e9e1772795fd0a88d48d8a5d8fa7d6e1b2f0f4bc42d577ef54076" + }, + { + "checksum": "sha256:fc944bebce84db486d6b9cdc99622fa443db0025287c0e73df3a25e2bfa1601d" + }, + { + "checksum": "sha256:9cc49bcc7a2e6a2c16c33d2a0037f9e5a81ca94962b0ccff8b671ce486ced497" + }, + { + "checksum": "sha256:8325ec9dbe6e447921673aaac09f5fde6a29276857791058ab45c3eb56f0cbf6" + }, + { + "checksum": "sha256:32af9fde2c066dafb8ec318ec081ab767b2d85d8fdb656f3c72eb3718c2f6923" + }, + { + "checksum": "sha256:ec3e5c0bec8bcc4cf03d665e3d48cb0511bd5b9c879630563b29ddbd05bbbda0" + }, + { + "checksum": "sha256:282edb776a576a2745fe7c3278c813e0f8997e27b0ace2507dcf14f50a5f9840" + }, + { + "checksum": "sha256:77066ee655df356370b5d6d736d96835f5712f8e814dfc46b391ecaef9cdd19b" + }, + { + "checksum": "sha256:684d8438fec907d780ad69dd6f7571f84d73fecefc66026b751935d463973bd8" + }, + { + "checksum": "sha256:d2c97f8d96d6f82e34975bfcf8c25606e0370a3def4da27d6aabc85a86f589ca" + }, + { + "checksum": "sha256:49d92784895f84d5526661e685cd38d5df00d610d12b6850061199d672997348" + }, + { + "checksum": "sha256:7c385e32c12b2639232f74a5dfdfef86daf82e5418bc292c5ab2640fb5cf46dc" + }, + { + "checksum": "sha256:d906b13d5dd7a5595133e2a1af83ae17a1aae0c107579db723d21ec4371f3570" + }, + { + "checksum": "sha256:537059f8a2598f7b364693aec72f67f1a954c525b381139f736d75edbf19aa12" + }, + { + "checksum": "sha256:2976f2c007ac981a70e414960cd7426f446ebc8a0bf8feae7a6ece06c63ffefb" + }, + { + "checksum": "sha256:2ee0a45ec4832e276ee130d8440cd29de05b7fd3ca335fe4635499a8bcbdfb73" + }, + { + "checksum": "sha256:dbb28005c8f68d794af2d9b35a3fcc3294190678b8cc9475acbad8a25a8837d3" + }, + { + "checksum": "sha256:01273ffc5443535d055b7962e173a10028fd2f128124480f587f8f9d7f4d4688" + }, + { + "checksum": "sha256:05bd495695df8a78448ff0d2f2df0480f0bc49c9b7065bc2b1ceba41b42f1772" + }, + { + "checksum": "sha256:21b1497d132a52c93129700d58c44ba8c36af8da1bbd23fb408c00c3117c1012" + }, + { + "checksum": "sha256:a660c78f704d3d22458c71d86605f51d62e3cc5306d22d66bb1df86c7274ad6c" + }, + { + "checksum": "sha256:e17077c8803f792c02570b2768510b8e4955bd0ae68ab4930e7060fcbb3793f6" + }, + { + "checksum": "sha256:f727e7919c662ae990d02ad2a6299ed3161ad7522587c11441477aae03549f06" + }, + { + "checksum": "sha256:475a66955c1749ba4ea13b5f4935dd13ac322c516961a512386496fe45d04472" + }, + { + "checksum": "sha256:9ee041eadd639ab6d9187f164c7f7b7954bdb4bf5f228555176207528e84fb1f" + }, + { + "checksum": "sha256:d6a82133f2ab89874788c141b10ed1f090689cd823a7559ed9197403f4000506" + }, + { + "checksum": "sha256:657efda777af4b0d63ab127a72f3373c0d8a18f3b81e912b24a5fbdc9927dc1e" + }, + { + "checksum": "sha256:41c0f3ea7c7c2f21b5ccb0432db2c1b916ae34691a57f0b7bcb5a09dc7d8fafc" + }, + { + "checksum": "sha256:25ff1ab94430493bde65da6a800bb2638edc64dca38971eba2c798475cc18b97" + }, + { + "checksum": "sha256:7e078a375d2636b705e1734be79a8b76a306f8578066c901713663e367925bc7" + }, + { + "checksum": "sha256:4019e427bf69ed70e3a3cdfdcdd6771bcee1484f8e83bb69539a9e6530baddf1" + }, + { + "checksum": "sha256:7c37700693bc781506a06eafc18ab1cb4a7f6b7559f0595c97f60a4f88390233" + }, + { + "checksum": "sha256:36798d9e979c9976ed66e23b3c8bda6250c4e80e411afe55c3942291cb4cb4ce" + }, + { + "checksum": "sha256:bcc032463153f59b2b58fa3ef73c3bf871b9e28ba1c0df09b8a5df80ce9af559" + }, + { + "checksum": "sha256:90cad0b0149c8e21613247039af49e91e138aa5e3e7d158022cfd274f349b123" + }, + { + "checksum": "sha256:186a83e25f1758b3efaf84330ce0ff548c9878d7f4590fcfbbf9f066abc095e0" + }, + { + "checksum": "sha256:abe578c5dee7c306812e241c77ebc8ba4b54f90df8e65c56f8f202ba6e0d7183" + }, + { + "checksum": "sha256:4811ab95c1d50ef7380e2c5937ae4490f8e28f56cf787c189437d1709e4423fb" + }, + { + "checksum": "sha256:fdbce603c9cb7792728413638e4d5591f0d094a361e07ff4fe0b7014a61b0104" + }, + { + "checksum": "sha256:2cd240f59d6570295931d54dfb392604f524572cfe252b1b1c8cec7793736e4d" + }, + { + "checksum": "sha256:d97d6ef57cdd8731dc3cef774bb2bbdc0a506abf0e32cd58c49619bdf983733c" + }, + { + "checksum": "sha256:66760eb369153a4c41b1837d57a78d9a2f85f72ad567c8ad7ee3d5a89ef6a6cb" + }, + { + "checksum": "sha256:e57e36570f635b8df5dfcef61d40bb023ba5dd05a8b3109d6d671d956fcff69e" + }, + { + "checksum": "sha256:7729a8f9623a6fe0f94428dc8fbb5bb2349659529ecfce4a5f1854e834108614" + }, + { + "checksum": "sha256:5baa177e85af635cf7e1726e6ec558a6b44ebccbe84b13a1fa8a80f6240a19d2" + }, + { + "checksum": "sha256:b4fb3d8b0255a5ba9456b61e4f479f2f8355d171263508bbe869af677015fd97" + }, + { + "checksum": "sha256:28f0e364321eb824fd9bd1d104f0684d7a94dd0e7b07cf9c2b0ca645253baada" + }, + { + "checksum": "sha256:5728ca9555dffa66592456e39c45afb5848c2307faaccaf8b936ee45d32f94cc" + }, + { + "checksum": "sha256:e085bf5e88381fe9a08cdf919d72843c5d267238e3f7dce7858c6f88d24a1c83" + }, + { + "checksum": "sha256:07f8f24c26ec3b1716c37c9b212f4f3397dcb3eb349ef5fe09bb444654fe0033" + }, + { + "checksum": "sha256:ea8e98525aaeb63aea1e85a98ea93207cb2a88c82e921047e56f50a13b74a4fa" + }, + { + "checksum": "sha256:bbf1c85af70c001f23f7a47dbc604fa155765446aa16e4403ec12af21cd1ab42" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34" + }, + { + "checksum": "sha256:46d7ba98b995b454d3ba6debad5b15e5af168420fd3a1bc8d6d3114092be9c66" + }, + { + "checksum": "sha256:525a1a3494fe589513f191ca631f149b80db6107cc2472f20bfc5974d84136ee" + }, + { + "checksum": "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786" + }, + { + "checksum": "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367" + }, + { + "checksum": "sha256:242cf344a4a0f0439c325d0d8e58cc7d35a31157db4092bfc27c5db815ea62ea" + }, + { + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "checksum": "sha256:bb1d56c02d161cfb07a9f31d8f3a73f93e75e5149c6df7b5d05173d6a5d3883f" + }, + { + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "checksum": "sha256:83cfd01b18bd91f5ab60a882cd68314afc6eb091538ec840d3cb50d317182344" + }, + { + "checksum": "sha256:466ba431d32e34a1b5effe7b885c73e5c753e007b7ad8e9b8cd96e0b427f96da" + }, + { + "checksum": "sha256:56081a14fe517995972aaea890c246cf35a6439cc56a16769d913da670111b03" + }, + { + "checksum": "sha256:3700bd235900bf7c80ac7dbcb58d56a5b440fc6aa9c1217be3de5e9bc5f99195" + }, + { + "checksum": "sha256:a53e65798fdd2968ada806d34a248bde08dfe8d0e1164ebd272a96881483c5ed" + }, + { + "checksum": "sha256:8da37cb093752a1775c46cb71c0db55db3c3079d80bc1c5c7544d0c411bfac9b" + }, + { + "checksum": "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20" + }, + { + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "checksum": "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c" + }, + { + "checksum": "sha256:f3b45fd08cba7c338a8103d236ba4fd2c9bbe36e6d4ef96ddcb6a722d4cf529e" + }, + { + "checksum": "sha256:167a35f5dd48fb4a632cf00ea21337689a1b78e5bb36254a2a9c6f5196b98d88" + }, + { + "checksum": "sha256:1582141ead8ddbe08290ed28c02274c58d2345fbd5263918f197d5b64503e1c9" + }, + { + "checksum": "sha256:268928928fa5d36b3b63387a17d91824924116fd3e3ce4016b9339d38e66b722" + }, + { + "checksum": "sha256:86531929ef43081d9aaa4bdd97b6bff703f0031f7dcb4dc9e0979e4af1abf691" + }, + { + "checksum": "sha256:a1d824293cfc2883d27e25d94d0a9fb419e5e32ccf1566cee038157e35a0d230" + }, + { + "checksum": "sha256:f8fb64d872132bbe7689bfd7ac362d9657e426887f8005fd352a3312b1485e47" + }, + { + "checksum": "sha256:54abb15c97a50d8c48cb2d6a900e895f98279379af8469eeed319cb13e23e799" + }, + { + "checksum": "sha256:8239d6e7b8600e9b8876f6770ad0981b981cb5638b4a4a8d0ff352815dc9df59" + }, + { + "checksum": "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6" + }, + { + "checksum": "sha256:9c246e12531d946d28959c3513ba74cbf4c15ccd69c11aaa54e6e399d05074f8" + }, + { + "checksum": "sha256:34f9e9b309a8c6beabd1969ed3b0a685253eb8dd3e2d22d7ef2045f6796cd908" + }, + { + "checksum": "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9" + }, + { + "checksum": "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42" + }, + { + "checksum": "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf" + }, + { + "checksum": "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280" + }, + { + "checksum": "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde" + }, + { + "checksum": "sha256:a8ab9f2d13893fb30deecbb4d06bf33ef77fca46fbe340c12cad9bf7040371d7" + }, + { + "checksum": "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a" + }, + { + "checksum": "sha256:2aa79d4a09d234c08afc877e292e68244835e447348e85ebee431b0be1fe5104" + }, + { + "checksum": "sha256:4d39add65cf7aecdb430a490a9119c5c098451c2d9c296e35c207136b6b300c5" + }, + { + "checksum": "sha256:e574bddfe80726668fdf0deff62369342858a862a4ed1f2332bbbcb74a497470" + }, + { + "checksum": "sha256:813494dff0f52c8eb8105405b961d47ec32ea7ffc037a00c3bff568086b8ccf9" + }, + { + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "checksum": "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb" + }, + { + "checksum": "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d" + }, + { + "checksum": "sha256:1ee67a3650c2d0274c472bcb8bb261c3d508e44c856f6efeb19bfc684030766d" + }, + { + "checksum": "sha256:54ecab8ab8b08cb843ed22a939029fd73ff5ba6af16deaf01640a176cf780526" + }, + { + "checksum": "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53" + }, + { + "checksum": "sha256:d9cf79223d9dd3ccace21bd73149b1f9618bbdd890c7845c2c68c237c74b59fd" + }, + { + "checksum": "sha256:adab024896eecd08250eb7a7a5e1686df0b945fd1604543877e230163c510f24" + }, + { + "checksum": "sha256:3e1977c9b662e295f67e2114694d4a11d87215346cd7836c8fe8b9cec050f357" + }, + { + "checksum": "sha256:3ce2c638dd29c6d041374a746f04708e2f8aadd0831795b1d98be1f72d59d26a" + }, + { + "checksum": "sha256:d6afe4abbdf882ed7f15dc9ede23040494b1cdc57981a0d88b6d96b91da471f0" + }, + { + "checksum": "sha256:6c144a883629536cf8eb7eccc64389f536cc89ef806b06b4a5de18d1746eecf2" + }, + { + "checksum": "sha256:b61e8abd760ba36a0ef10defd47d60e63d7fda3d1ba8bc01700d4957e49748b9" + }, + { + "checksum": "sha256:d3d5a6c8b906c6f59ed6a286dd5f34a0704e05f0929dd7bac4f1c3b692ccecae" + }, + { + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "checksum": "sha256:fac3dbed5e4adb8680b835eb6e72aac805134dddfea7b0151f220e92442622a3" + }, + { + "checksum": "sha256:a00c72bd891d02b1e0a903fb9508d1a1aa77a3d95240b058dd8a7662173730b7" + }, + { + "checksum": "sha256:e6d780ed12021cb842de269c55a238649f6f0f76a08f5fde0db2463bdb15e067" + }, + { + "checksum": "sha256:8d09980b1baa907fbb3ec8a3d8907912a867bcb0c0bf702d9b3c8601874fe112" + }, + { + "checksum": "sha256:96172fbae0c8f413d09af511f770b08a8e26495b8ab3dfd9c3eb279257621ffd" + }, + { + "checksum": "sha256:4291406b201a35d5baaa28d2a0c5b1c218ffb7d981d0ad25532a7d36b672628e" + }, + { + "checksum": "sha256:6ae2039179cb1d8485af2180817c26765aab781f17fc97f8b6e7239033f8bfb7" + }, + { + "checksum": "sha256:851d321970030ef2a2444c50a959daf4e63b814acc142be821eea560c404ab45" + }, + { + "checksum": "sha256:75cb8fa5f08004dd63e6647cd699bd011b9118a1bc9d6ee41c0eb772391db077" + }, + { + "checksum": "sha256:ed03ae7d72ac4813b40490dfa0fb27fbb6828142d5507dc2fdcee636c4d19125" + }, + { + "checksum": "sha256:ae2372e9110dfbf53c83bc7f78f867edc3cdb4044d62f1e63174cc3cf2d9e06e" + }, + { + "checksum": "sha256:d3e95570de2bb3b418df9f883b22eae22086d60c437d9174c8e6bae71d0b7c11" + }, + { + "checksum": "sha256:a8dadc6e4ba668ee14fda07fecd8879c8c7acdfd9b2effeb829b541d1de0d7a2" + }, + { + "checksum": "sha256:5fb154dd6b3ae091297ce6c99576a1203451b9fedfd4d3825f1d0ed60ef9c4f6" + }, + { + "checksum": "sha256:3092ab7fc56e099d2f05167fb582076a29b1c1a2512e4fbabfd3f9000431a66b" + }, + { + "checksum": "sha256:546ebad5183085f345385a483d5bfea61bb772ecf7071a339d1db614188e69cc" + }, + { + "checksum": "sha256:625c189990e536c608651824f097a8b68d2b025bef2504bf2d4b006d652bec5b" + }, + { + "checksum": "sha256:8f4f877b2758c07f609f78e1c445a9b41eadb3592e376592a57ab6b524c842e9" + }, + { + "checksum": "sha256:bb54663316f683ffb7732f290d72b7c76a2b42e691a9d5a89869831b3982e41b" + }, + { + "checksum": "sha256:f89513dcf5d916665ff15dcc9f55ced1459e767a2874f7a7316832d40c404c2f" + }, + { + "checksum": "sha256:e88932488a9108e2ee373dffe9fbad3f0108c76c0b8f0aa781fc5df9c189d944" + }, + { + "checksum": "sha256:9bdd9dd41f11769374001c7782c2dc3eb3794d05622f4d2a6546a64757b48a6a" + }, + { + "checksum": "sha256:5dd05dbb90d9d7436b6c78863872c94c5639124792fd34221c0727ca1b23f1d2" + }, + { + "checksum": "sha256:333c9c48b7fcb74ee4ec16dbb41acbb3fe388dc18090e8b2a8ac412a820b1944" + }, + { + "checksum": "sha256:4cee6b88b41b31288938e70ceed50493f3d586121ec61ff553e4500fc25a81c6" + }, + { + "checksum": "sha256:822ece218fa213adc9c2cde39c09d7ee1dafc12e25af025a457f175b24b7eda7" + }, + { + "checksum": "sha256:f444e3ca2fdcccbf49abf3848b7d79dd22193e704167d23d11bdc713126c6cf0" + }, + { + "checksum": "sha256:01740c9fbfd4b6918cfd9cb4b9a536328510b296404edb4028ad4480f1099980" + }, + { + "checksum": "sha256:b2841b2cb926e7f529f604e2462304dcd0c63ff08f892eb573fb14029ad6511f" + }, + { + "checksum": "sha256:ee7f3a5b1494773ff9003c831f724a09213cac9f160fd2a764d13ea9b1a3921b" + }, + { + "checksum": "sha256:31951582ea375a15365e9a42ec6c0cd8a61e6f593e00f0da013d79ac967878b7" + }, + { + "checksum": "sha256:1a47d3d89a38ce0caf4136f981e06c643bfb19f86ff014d4db8b923340612692" + }, + { + "checksum": "sha256:af61087b5245e3e59bac54d1f1b886c452e82188db7118f04d0a7055d61cb5db" + }, + { + "checksum": "sha256:1af8f3ff12416a7a7b105840f53ada599e6e276ed08f2dea803ad0b21f962968" + }, + { + "checksum": "sha256:7b6a20549cfbb7a38f7dc021fa832dc021476c83ca3b96963074da8bddbc4430" + }, + { + "checksum": "sha256:4c7e176a4024f519401c2b03fd69c23375714f80b5870894fccbb2abe4d0c724" + }, + { + "checksum": "sha256:806670e01e158d45919b7c9a5ff13153b9e2e7516d18c8388bf36b493148380e" + }, + { + "checksum": "sha256:8c3f197a556bb91ba76701f286a63c9c54d8d2396b3db94425087497f51624fe" + }, + { + "checksum": "sha256:4c90fe6c1bb01242a10c5d9e1655a0c27521febeffab450d33d88b4b11a8fa95" + }, + { + "checksum": "sha256:e57979c45d14172f06d353e70c6fb5402319350bfe25b45ecd95339cf822ecc2" + }, + { + "checksum": "sha256:dd29e9ec3dac16997fa4718edc3dd016fc6bd070fb0ae17c58c064ff20aa5b03" + }, + { + "checksum": "sha256:08a6521ad991a23812bfe457fcdd03de655eb71c4f5dc580fa8c291cbb4c8599" + }, + { + "checksum": "sha256:1b1b72c2a65cd75c042700b48a534c20072b5174f8010c5e0aff0a54c8397938" + }, + { + "checksum": "sha256:10a17648fb1e8e94d70ffe93155760ac0d72fa4739beb3b165b702c0bd120be4" + }, + { + "checksum": "sha256:ccde203ded5f1bdc73301468985fbab7c4dc2f707a3565c6197261ac6f7361d3" + }, + { + "checksum": "sha256:d05b84d3b2126b91834bd388af680b10a73595363d138cd05920eb4ca8c0f03e" + }, + { + "checksum": "sha256:2a45920a9540e5057920f7c987d3daf910240a6d1ee63d1fa80fcdf3cee4fd71" + }, + { + "checksum": "sha256:372fd5ea8e1576b20b447ed77d7abb4b49c63b684731ea40940fb871207180cb" + }, + { + "checksum": "sha256:e8b861558d5e316537d449d911909dd9623a31212ef7bd700dec3b0ad6fd7c04" + }, + { + "checksum": "sha256:dccd8b3ffb8a9015afe1d4cfa65df84589ede6582845899515d176695b457599" + }, + { + "checksum": "sha256:ce0a6223eb830322bfcb8610b6e253b91958e4b3a8767a0cbe92ac803f50e8ce" + }, + { + "checksum": "sha256:1ca52cdabb94a8efd57626d4c38061b029e64b042b01b07a6cbad19bde6e86d4" + }, + { + "checksum": "sha256:1594afba86593ec614299ef6af255755a98ea55a34a72a22fdc9d80a040be39d" + }, + { + "checksum": "sha256:344d35ca1adc8e4c5562c9936113807f088fd6b27aa4095d17a846745c2b3c98" + }, + { + "checksum": "sha256:5eb62b94a6f31bde8e6d571fb4f45e98fc93b2a2d10543d28afb9e275088951d" + }, + { + "checksum": "sha256:cd14c516e074538510355237b57a3653bad90d7389371ae2e8d5a363e2c6afe9" + }, + { + "checksum": "sha256:b820452054d29635fe363c7753905aee1044c668e0357094e3fffec948f98c02" + }, + { + "checksum": "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b" + }, + { + "checksum": "sha256:3717331bb0807804e392afc98dd1c9cba30fdf2464aaf8869598d483313f9606" + }, + { + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "checksum": "sha256:4df56916fd99c60c30af766bb84e43202a986f30a97f44bb6f8e6718dc34c372" + }, + { + "checksum": "sha256:41e5390a8ea6cc1524155071675f89e4e3d8b681ce76c4d7369dbb7f075ff31f" + }, + { + "checksum": "sha256:593d4df5b8de12ed0ec5a0935cb0bd966e27a631aa0806250ba9f67092ad737f" + }, + { + "checksum": "sha256:c2202b679225da88f0edb87e2a51e5c3b55651457c6d1aebe51a77bed797e8c9" + }, + { + "checksum": "sha256:624a0bdcc56c2c5d02bb495b80fdfcd934cf8b6145710dc82ac65441dcc2c0a1" + }, + { + "checksum": "sha256:cc5a2d1f5209e14cbb310a77cf13537f2859ba118c4d03ac882621d015825b7d" + }, + { + "checksum": "sha256:cb4a98e9dbbf1d2c85e5b10ea1b7c6edadba85395906ffbf5ed0cb12f77cef2e" + }, + { + "checksum": "sha256:57953b506733459b67a4d8e122bfb4a929388a33dbea7442acc71d14a48b9061" + }, + { + "checksum": "sha256:5999ddeea23f7ee7640ad90aacd09cc9c29b51fd489d5fe74db9e5b6ed981fef" + }, + { + "checksum": "sha256:e63f327c851c2a89254ead31b682e8f9fdb53806c6dea797dd72de18be837ff2" + }, + { + "checksum": "sha256:1206464e80ce9c9730e029702fda02a3510294d334a559215a7d6361c457cd46" + }, + { + "checksum": "sha256:9e90e6054da06f5c8c2733c3b66987693a58ddc1f05d95b23ca0a464e26a2b22" + }, + { + "checksum": "sha256:7b6a754b55749e5f11ffec19cbb711f570607c2230e5750e5b2aaa915aa765c7" + }, + { + "checksum": "sha256:7519f2af362827daecf105e1dccb551350f32dfd3f6a8a85bf6eb1b4b7788255" + }, + { + "checksum": "sha256:4103adee1d874f535dccc59558968a8687c0cc8391b8adc4957d2952c244cf3b" + }, + { + "checksum": "sha256:93772aade166fdb4bb4a78a0e08bea1b6f155e416597037267ad2603a767b9f5" + }, + { + "checksum": "sha256:b79e0e33b98801e7cda1c845b31cfd5537b150fe4da4df1cacfc1d1534d57ce2" + }, + { + "checksum": "sha256:dd6a948e5a656701156c618e202c0b6defd11ba6f162b6790cbb42cea15141ae" + }, + { + "checksum": "sha256:81afd309f084c91d68c06bd46a4fce2e0d1e265a01ff87e309d1202e711e4a02" + }, + { + "checksum": "sha256:13e2716cf8b28d92df079f55cf5f78c280f8d429e619fe22c80abef49c4f901e" + }, + { + "checksum": "sha256:6ed9fed1c5b4845fd82faf0e4a40c9478ac33878508487113801c4580e30baf1" + }, + { + "checksum": "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28" + }, + { + "checksum": "sha256:26e280280f7ec0fa24047c73acae59d272a1ff19d652a3302ca7a04877f7f081" + }, + { + "checksum": "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43" + }, + { + "checksum": "sha256:1b64c8492c71a96a8a47b4a041acf71b5792265cb7846fb2ff3bb250f7d98f56" + }, + { + "checksum": "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362" + }, + { + "checksum": "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64" + }, + { + "checksum": "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835" + }, + { + "checksum": "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf" + }, + { + "checksum": "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b" + }, + { + "checksum": "sha256:f446646140cdc94ba1f4cd6942c4f4515bf64f38f4307962d252dbab47c82ef8" + }, + { + "checksum": "sha256:9f4a1d60544336fe77a8a3451843c5189b06672c11b0f82bf9b32ef77eba6542" + }, + { + "checksum": "sha256:16a81bf1774e42134b7ea667adedd1a76bb7fc482163e1f217b0131fd55b2623" + }, + { + "checksum": "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55" + }, + { + "checksum": "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21" + }, + { + "checksum": "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414" + }, + { + "checksum": "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca" + }, + { + "checksum": "sha256:4fe86c8a09f3dfc0d18a0861f9c483d0e3e5f054ed73c26c680acb528ead8dd1" + }, + { + "checksum": "sha256:73a4411822a90641b9ba957aedc0bbe090ae2efe7bf780bbb3aceace4369cfd3" + }, + { + "checksum": "sha256:1d932b7b3d0cbb735e335e556fd825494259485d41c562c3bd532fdd0b7256f3" + }, + { + "checksum": "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a" + }, + { + "checksum": "sha256:df7652329162926a867e6dc880d5257af2496827b647067ef33c232b8a364a01" + }, + { + "checksum": "sha256:02bae2823210d586e266d37dad90fb9daed0787c7932bbe0520b769afc6d8d76" + }, + { + "checksum": "sha256:8da30771a771910bca07c013a395ab60b623b4a8301c62422a478c58f4d3cb75" + }, + { + "checksum": "sha256:9dff5a0a4e774218477d22efefb4a1be0ed8d9bd217a2907b64c0f772dbafc35" + }, + { + "checksum": "sha256:07ce8c199fab0eb3b40b0b5d4736694c92c42892f26bf05cdd96896ac22c2e50" + }, + { + "checksum": "sha256:55b6a0136b23f4a36a2adef8ea11b0f8338535fbe169ee32f978f2a2defb57c2" + }, + { + "checksum": "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42" + }, + { + "checksum": "sha256:3830e5a3e5c11730baf10775ac1e3962a40b9409de5ce82ef372f7d742c680a0" + }, + { + "checksum": "sha256:4a20cfbaa38654e38dfa3df93bafa564252ac64177aacae8a0bc8b6dc395e6b2" + }, + { + "checksum": "sha256:966e2e9928f7006fedc83fc42df1c8d85cd448197097378aaf571b7e51f969d4" + }, + { + "checksum": "sha256:f70cdaa893490fe06e675ec0cc07f61aa2441a753c74215e199a0769a3c62596" + }, + { + "checksum": "sha256:48f2ba5165e606fee1bac3d7b81ff319724338d7279cfe2a90f7a9f6f172075c" + }, + { + "checksum": "sha256:e2cb056e6b9093aa449194a876f4f17937ceca090a766a5cf6e2f98ac8e893b4" + }, + { + "checksum": "sha256:fbbc385a90edf08de42879e9c8ff762c5d3d9ca750d10e0bccbcd56592e5cff0" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "vfs_type": "xfs", + "path": "/", + "options": "defaults" + } + ] + } + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "redhat": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.zipl", + "options": {} + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "bootloader": { + "type": "zipl" + }, + "format": "qcow2", + "filename": "disk.qcow2", + "size": 4294967296, + "ptuuid": "0x14fc63d2", + "pttype": "dos", + "partitions": [ + { + "start": 2048, + "bootable": true, + "filesystem": { + "type": "xfs", + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/acl-2.2.53-1.el8.s390x.rpm", + "checksum": "sha256:126bbe586fe4116b343fc349c80480f01d597c2a41abec5bc15019b126f51fdc" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.s390x.rpm", + "checksum": "sha256:a5335a9d7e431ef45f4b6d256bdd7e4bfa98f73d994d6ec2a1b7c5ee792c821a" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/bash-4.4.19-10.el8.s390x.rpm", + "checksum": "sha256:30624f95cd736ceec96b7e2dfc4c4594d38825139c670dcd09b323faeb46d87a" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/brotli-1.0.6-1.el8.s390x.rpm", + "checksum": "sha256:03d1b5541823ba8637e04c69d0e00d711e0c799e764d6191d6ad989b459004e3" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/bzip2-libs-1.0.6-26.el8.s390x.rpm", + "checksum": "sha256:879d72df89400ac2d742b5093870760ec31b5b3dfef346a91fa3e4fffd54bc16" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.11", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/chkconfig-1.11-1.el8.s390x.rpm", + "checksum": "sha256:82f2336e0c5cf2a9271259a12cc5c84f95959503e2f131a2f41ca5f291ad8055" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/coreutils-8.30-6.el8.s390x.rpm", + "checksum": "sha256:cb1d1285d4195cd9b5098120649b95963341366f6e5490dfa9c5f06d7fa32dd4" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/coreutils-common-8.30-6.el8.s390x.rpm", + "checksum": "sha256:0c3e22cf2e8ab8b4c4f043f043e4e71dfccbe9b30ecab3a6532f1dddcc06662c" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cracklib-2.9.6-15.el8.s390x.rpm", + "checksum": "sha256:2020a1fe4a1643ebdd76f6ae3a0942f115e80279625d54a783f804711915e5a3" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cracklib-dicts-2.9.6-15.el8.s390x.rpm", + "checksum": "sha256:dd8480924a9e9d6adc3c36562e090aec3f33e57dc93e4dea73ff37618755406b" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20191128", + "release": "2.git23e1bf1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/crypto-policies-20191128-2.git23e1bf1.el8.noarch.rpm", + "checksum": "sha256:35c952c9e48350adf6f94b48dc7636f664ebbe16ed6632ee30c2e0fd22e7f0bf" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.2.2", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cryptsetup-libs-2.2.2-1.el8.s390x.rpm", + "checksum": "sha256:8ca16af0765e37aac3c2f4ef97791648b0fb0f247196f44bd768aed396c851e2" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/curl-7.61.1-12.el8.s390x.rpm", + "checksum": "sha256:751df4c8122e941b9dc37ab75debbe937807f72e5872401cf82d97c653866e07" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cyrus-sasl-lib-2.1.27-1.el8.s390x.rpm", + "checksum": "sha256:0cd56334755c7cbc9a4b18d9746dc3cae765a9ae8231b26e1e740a447d82c499" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-1.12.8-9.el8.s390x.rpm", + "checksum": "sha256:e6a00b8a31b790687f294e1a829e3171b4963b34f302aa1f7eeb245d4b49071a" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-common-1.12.8-9.el8.noarch.rpm", + "checksum": "sha256:cff5078143ab38f37a01e840bf5d42e2730c4b8e08ee7221a607ef52de8168cf" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-daemon-1.12.8-9.el8.s390x.rpm", + "checksum": "sha256:3f328081e6f97c4a833582e808d07bba2bf43f2b2d74f509c88889ba57fbe643" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-libs-1.12.8-9.el8.s390x.rpm", + "checksum": "sha256:c2b12d1994efd87e8ba215e98a47c48c6e0fd07929b4889f79fed02d73b48b39" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-tools-1.12.8-9.el8.s390x.rpm", + "checksum": "sha256:92bba4bcc53313c8add1ad83efbc2eae5e909a3d4f1632ae564ad99335a53aa0" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.169", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/device-mapper-1.02.169-3.el8.s390x.rpm", + "checksum": "sha256:4980cdfb336c5de4c4336f41f6947cfb33b7befe7ed045711248469fe48edcd3" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.169", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/device-mapper-libs-1.02.169-3.el8.s390x.rpm", + "checksum": "sha256:9f1bc331219bc9bc97692477137dda660f512e8df95bbc99dd5300d48db13dbf" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/diffutils-3.6-6.el8.s390x.rpm", + "checksum": "sha256:f0f8b7ec4ec783f4e6310208926f54b0bceed5476b6cebb5be9b336faaeaab0a" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.17", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dnf-4.2.17-6.el8.noarch.rpm", + "checksum": "sha256:457108e80b840850057c10f933446fd71a0d20b356c2a039af71e9fd68f61382" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.17", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dnf-data-4.2.17-6.el8.noarch.rpm", + "checksum": "sha256:6110d2531a5e40210ec9009cf80e901052406df0a41b075d591f903539575acf" + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dosfstools-4.1-6.el8.s390x.rpm", + "checksum": "sha256:04e227546e73954475809db05a6133e4f978ae026423bd800247370f8758b31e" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.4", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/e2fsprogs-1.45.4-3.el8.s390x.rpm", + "checksum": "sha256:5b681ca8e1778a6a7ec40a7b30a72537aef11518c2bb5ffdde346a0c590a2517" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.4", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/e2fsprogs-libs-1.45.4-3.el8.s390x.rpm", + "checksum": "sha256:96aa9181e5e0e6ea19b903d8d861171e0dc2c35167626a6d91cfe0f3402ccf46" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.178", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/elfutils-default-yama-scope-0.178-7.el8.noarch.rpm", + "checksum": "sha256:59c099ac7d9aee3e356bada6ecd9aab9bb57585214267b9d71fe2cba98de3cb0" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.178", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/elfutils-libelf-0.178-7.el8.s390x.rpm", + "checksum": "sha256:1eca3ef1ec2edeae041c3d55687c806db77a2a1e0837fa4937b664e37b903e22" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.178", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/elfutils-libs-0.178-7.el8.s390x.rpm", + "checksum": "sha256:c5a8ad2ff91b081c664dc9a946acaffc85c9dfd202c9e9667f56ad4c23211807" + }, + { + "name": "ethtool", + "epoch": 2, + "version": "5.0", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ethtool-5.0-2.el8.s390x.rpm", + "checksum": "sha256:a5b032d5d199e3facef794929ac837d572e7fcb0db3a9c9d2480daccb8765ee1" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/expat-2.2.5-3.el8.s390x.rpm", + "checksum": "sha256:b63261bfd20aaee97ab2a47c2368c8eab62fc62c1f988a80f52715347c3bd72d" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "13.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/file-libs-5.33-13.el8.s390x.rpm", + "checksum": "sha256:d6ba0f45311859012b68738abd9062cf20efe954cf3fd97e602e09fbfe8e3fdb" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/filesystem-3.8-2.el8.s390x.rpm", + "checksum": "sha256:408557972679db1bd8c1c2d5a07399ec408d2022fa17d45e6e1d6e9baa6f2513" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/findutils-4.6.0-20.el8.s390x.rpm", + "checksum": "sha256:7b8b3d31e3ddd80fd39bf396122bb4b38582f090889b7d465e0db9eb8d6a7bf2" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/fuse-libs-2.9.7-12.el8.s390x.rpm", + "checksum": "sha256:2429abaf8afb74f4fdc8050e4c90e315316186d372a809e062a914808d02d907" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gawk-4.2.1-1.el8.s390x.rpm", + "checksum": "sha256:413d3b549e7339e7fee5a2f8232ec11ec3e7490b57a303bde5b15677af0d9add" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gdbm-1.18-1.el8.s390x.rpm", + "checksum": "sha256:e944915a4f9e920d831db11d1a2a08e3ab8712d04735e3499150f90be056026a" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gdbm-libs-1.18-1.el8.s390x.rpm", + "checksum": "sha256:4a88a0e57e579ef6c53736c26cc8bbd7fa1f6d3de4a7d61fcde96d9ecb6947d9" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glib2-2.56.4-8.el8.s390x.rpm", + "checksum": "sha256:e153757cbf8c1552b4f3f9593335a8332030b3aca304caf29258721c52ae4ec0" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "101.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glibc-2.28-101.el8.s390x.rpm", + "checksum": "sha256:4fafa365bdf0023cf4efdd69c2f02f73d6e89d63b8a895d472baf5cc4feeed92" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "101.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glibc-all-langpacks-2.28-101.el8.s390x.rpm", + "checksum": "sha256:f934a992e23ec2d6c2adb63d5031912c4813238a82eb56ce5e0acea184588e78" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "101.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glibc-common-2.28-101.el8.s390x.rpm", + "checksum": "sha256:df582e688213786293a439987456c58463c8a30564fbd9c4999d0300c17e67ba" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gmp-6.1.2-10.el8.s390x.rpm", + "checksum": "sha256:1cc3e427d85ddd7caeda2c9a5063af110987ef0009b19a3924757e76e0f7ac8a" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.9", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gnupg2-2.2.9-1.el8.s390x.rpm", + "checksum": "sha256:0e6d88ed1b7038d234b0cbec9bdcf9239efc898993cfb2092ffa7fe52864d9a7" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.9", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gnupg2-smime-2.2.9-1.el8.s390x.rpm", + "checksum": "sha256:84cc3add4aafbee00fb25979f24818d71a99f03c63f8ff6f57e5f085dc693dbc" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.8", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gnutls-3.6.8-9.el8.s390x.rpm", + "checksum": "sha256:d115c393bf047f72711f757568d43e633f75237a76e3cdc0ae267da6ad03ba04" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.10.0", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gpgme-1.10.0-6.el8.s390x.rpm", + "checksum": "sha256:277708213acd2b535f20275de72275132bdee2d478382f12a28e7b13a3d34366" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/grep-3.1-6.el8.s390x.rpm", + "checksum": "sha256:5a84c721418c21c38a32cb3170f5fbf9cb3a8d1d728b408ce026dd8cd3955c15" + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "18.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/groff-base-1.22.3-18.el8.s390x.rpm", + "checksum": "sha256:7fcc96203ab686368fb66f568d042c893a64ac965390fd73f5c891b8a553f430" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "38.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/grubby-8.40-38.el8.s390x.rpm", + "checksum": "sha256:2cc3efed29198a6e4fae393b8db2661e5134b1abba4c6d056b258576925a26ee" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gzip-1.9-9.el8.s390x.rpm", + "checksum": "sha256:bb55b46b0849b445cbb7c38749b79affcbf4ae4e43c86a39ba28a64dff1ad0ec" + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.20", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/hostname-3.20-6.el8.s390x.rpm", + "checksum": "sha256:c34e6300e7c863eba8fc9ac5c43b01c5474e88d2246c6d0bc97b9f168611e53c" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ima-evm-utils-1.1-5.el8.s390x.rpm", + "checksum": "sha256:ad32bb58e49467cba3dabceee4e85202e8c4118624f870c299b49ff0396cda30" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/info-6.5-6.el8.s390x.rpm", + "checksum": "sha256:9df26f1ca53725cb1091fe8858747bb8c841eee29b604f96031d92880c283238" + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.00.6", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/initscripts-10.00.6-1.el8.s390x.rpm", + "checksum": "sha256:484f75c409de524cde02e7002b768ac6583ee4329bab0a28a0088863211d7832" + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.2.4", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ipcalc-0.2.4-4.el8.s390x.rpm", + "checksum": "sha256:3853bcdd64872c9fddd28f5fafdc863e6374e57e65be2ee4c581263bfea79697" + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.3.0", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/iproute-5.3.0-1.el8.s390x.rpm", + "checksum": "sha256:4b74cef48ac1a874b473311f779b9f9055ee0a0e4b2352439a342f2a353832e5" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/iptables-libs-1.8.4-10.el8.s390x.rpm", + "checksum": "sha256:d3e6f8e99a5c411a1efa7b373cac48b41e9237edf5b65ec4e9f25fb496485bbd" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/json-c-0.13.1-0.2.el8.s390x.rpm", + "checksum": "sha256:42f4cfc52a662e95002a2a35c0edfe8b855162ce84f813f7110394dbf8ff2596" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/json-glib-1.4.4-1.el8.s390x.rpm", + "checksum": "sha256:82becf766432b5ef763d2bfdb53f5c233a471ccae45d7703c19f876aaa69afd8" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/keyutils-libs-1.5.10-6.el8.s390x.rpm", + "checksum": "sha256:9b88cba46414a21b780f2fc25f8e76a0cc144aabf1bec1eb9873e10369cd27c3" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kmod-25-16.el8.s390x.rpm", + "checksum": "sha256:7af192dd97d723343c5142e2fb1053744b3d1e77b90e041ad5e0222b0258a001" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kmod-libs-25-16.el8.s390x.rpm", + "checksum": "sha256:e81af37e55bca721e41de93cbffedac3959256dd44bc67605908ac0298a1b74f" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.17", + "release": "18.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/krb5-libs-1.17-18.el8.s390x.rpm", + "checksum": "sha256:04ae113a2f41daae0c19672c9920f26bb46960e79ce46e626591a7e278d636a3" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libacl-2.2.53-1.el8.s390x.rpm", + "checksum": "sha256:18f6ad86cc7f681783183746576ba0cf5b9f0eee9ab18adb615bf6398404bb74" + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.112", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libaio-0.3.112-1.el8.s390x.rpm", + "checksum": "sha256:8ea5b21347e371f3f2e124f8ddaf38909485ec829767f936c3764e142c28093d" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "8.el8_1", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libarchive-3.3.2-8.el8_1.s390x.rpm", + "checksum": "sha256:885aad9ce00d5dd80d961c33873de3d7fd5c8e9d7493835e87be438e27423187" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libassuan-2.5.1-3.el8.s390x.rpm", + "checksum": "sha256:0914bb1e4fd12735f4919734cb42871d5a576dfe8c3df82e9de3d867c87755c1" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libattr-2.4.48-3.el8.s390x.rpm", + "checksum": "sha256:51436452d89b01024c397555cc58b32ab3ac10055bd03043663b5debd089380b" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "22.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libblkid-2.32.1-22.el8.s390x.rpm", + "checksum": "sha256:4f850d4565e92e1d5542d790b4983104156480bcd8d73be16a779b4231c6598a" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcap-2.26-3.el8.s390x.rpm", + "checksum": "sha256:c190674c383927684353be1fa61f000971811cb6a82782e81adf4906675723c2" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcap-ng-0.7.9-5.el8.s390x.rpm", + "checksum": "sha256:35471bc9ee490a4447723813c288126aceaa2617a0f271cb7cb98d99a6111ba0" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.4", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcom_err-1.45.4-3.el8.s390x.rpm", + "checksum": "sha256:3ea9e13b87f3156dd06ccfe43eeb77cb8834ab7be571a50b2faab5160c49291f" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcomps-0.1.11-4.el8.s390x.rpm", + "checksum": "sha256:2d457d282782cbf40c42e96e1c1e93ac947ce0d5f55985c97b307d746e7e56e2" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcurl-7.61.1-12.el8.s390x.rpm", + "checksum": "sha256:a16c9feab88a9876c41c34cd861490ce28be62e234040a59ce726e79dce4d9ef" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libdb-5.3.28-37.el8.s390x.rpm", + "checksum": "sha256:436949033b66b9e0b91eb42961f0db604dffedd88db1dbce3a8515ade58043da" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libdb-utils-5.3.28-37.el8.s390x.rpm", + "checksum": "sha256:f1e0648c7c3a1b0286d9b300966effd51f328a724c37c32a3bbbcc8e00c6b168" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.39.1", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libdnf-0.39.1-5.el8.s390x.rpm", + "checksum": "sha256:3bccb3d9479adaa9dd9491b51247f79f05dd4fcad061a849781debd085e7209f" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libevent-2.1.8-5.el8.s390x.rpm", + "checksum": "sha256:08178dfd67abc7e7984e94e62289d78ce84ead317c512ccb6596f7a752984dc7" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "22.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libfdisk-2.32.1-22.el8.s390x.rpm", + "checksum": "sha256:d7789087a45017b084c27678ed782e8d923bd402547156a467a910b8682a8b02" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "21.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libffi-3.1-21.el8.s390x.rpm", + "checksum": "sha256:b8b2e5b057d65cee6a8c65f236fbd0a9a717d15384f4d3cbc678563b223bf011" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libgcc-8.3.1-5.el8.s390x.rpm", + "checksum": "sha256:fc9f17a2fc6897c643fff67cf393051bb07ad16962b19a48f0e9991649ebae08" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.3", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libgcrypt-1.8.3-4.el8.s390x.rpm", + "checksum": "sha256:d120bc374362edd18914525ef7311a63e24c888f924c4e7315e036f86796309e" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libgpg-error-1.31-1.el8.s390x.rpm", + "checksum": "sha256:7f97a748a033ca6da465cdb7a861bd844523de3c7a186248bf559f0f64db0952" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libidn2-2.2.0-1.el8.s390x.rpm", + "checksum": "sha256:0af540f9af46e2ed891119dab6189e425323ac0742e0dd0f08b6df4e3ecb7092" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libksba-1.3.5-7.el8.s390x.rpm", + "checksum": "sha256:4682cfac60ce5f220640c3f7468c39fa2805bcc281cf464fc98c273bace1e579" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libmetalink-0.1.3-7.el8.s390x.rpm", + "checksum": "sha256:65bef4240948e0b9400b0d50c37420511ef2dbd0c0130bdb4413c3e60d60f2f1" + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libmnl-1.0.4-6.el8.s390x.rpm", + "checksum": "sha256:fdfde1848ded3233eadd44c677269196ef72cd8e82fd372ba2c45df4fa36a140" + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.16", + "release": "0.2.8.2.1", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libmodulemd1-1.8.16-0.2.8.2.1.s390x.rpm", + "checksum": "sha256:74cad5967ec955d6b8851a5240c4ae823ea10f08dc0e811aba2b79d6dc5a9949" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "22.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libmount-2.32.1-22.el8.s390x.rpm", + "checksum": "sha256:e6ff2a695a331ce5100f1c195d5748ce33408e300d9d611387889d77719007a3" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "1.el8_0.1", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libnghttp2-1.33.0-1.el8_0.1.s390x.rpm", + "checksum": "sha256:89531a2a7fecb645bb841bb38cad65499754e83e186d380f1a246638c661b000" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.s390x.rpm", + "checksum": "sha256:e1f215df72d86fec4f860cf9a3c318ad7e3db9ac853956650d01087ff0f46caa" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.0", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libpcap-1.9.0-3.el8.s390x.rpm", + "checksum": "sha256:e3c3592c21ceeefe6b62a3b6db97fc58e0ef8ed5208467a2a72dcbced0258cc6" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libpsl-0.20.2-5.el8.s390x.rpm", + "checksum": "sha256:19bb9e23dd56bfc1c29eb620bdd6f059fbea0f4d9a682e71793c52573dc2b5a5" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libpwquality-1.4.0-9.el8.s390x.rpm", + "checksum": "sha256:bce48e34f1c6be096d433665f9c1f69e769445c179b91bc5b79a565604a74e3d" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.11.0", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/librepo-1.11.0-2.el8.s390x.rpm", + "checksum": "sha256:302b0d285149d53df9a7805cc664b1a6407c27fc94e4331b9974a21da61c658e" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libreport-filesystem-2.9.5-10.el8.s390x.rpm", + "checksum": "sha256:7305aabe9ab0e0d65293384c636bcca017abb426986c59c5f92b9c08be016be1" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/librhsm-0.0.3-3.el8.s390x.rpm", + "checksum": "sha256:309365c7a2ea977c132ecf9394bfa402b6fae9ba53226f45a3cc07659ca48c24" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.1", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libseccomp-2.4.1-1.el8.s390x.rpm", + "checksum": "sha256:4dd35cd8eeb1b33dafb05a476df6eaaf26dcb5442e0f9c08d547bfd73f226d8f" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsecret-0.18.6-1.el8.s390x.rpm", + "checksum": "sha256:be01593ef51abcb8540b55d0b40946f3d0d507e2f4cde1023898635b7e03fbef" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libselinux-2.9-3.el8.s390x.rpm", + "checksum": "sha256:18ad184245a885a9f2ef53c58aef0ef70fe4e4d6c7728d72b2b6527117f63b61" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libselinux-utils-2.9-3.el8.s390x.rpm", + "checksum": "sha256:bbebf8199fc730d588d48d52bf839ac7cfefd921d32038a62d2d221d745ce945" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsemanage-2.9-2.el8.s390x.rpm", + "checksum": "sha256:3b060586f41724416985e14e50ea2892e96caa103e4055acee38f00db4bcfdf5" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsepol-2.9-1.el8.s390x.rpm", + "checksum": "sha256:792fc1513e33391423efb98aa9bcec85cf5db0a1a417ad41316178590fe069d7" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsigsegv-2.11-5.el8.s390x.rpm", + "checksum": "sha256:29f3de36d25fe893787e4c375a4242ff9baec204158025187269a8379116deaa" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "22.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsmartcols-2.32.1-22.el8.s390x.rpm", + "checksum": "sha256:8e2994a30b907bca3808c40bdde77b0746c4bec0d22c1ccfa74968f98c98a1d7" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.7", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsolv-0.7.7-1.el8.s390x.rpm", + "checksum": "sha256:534dd2a6b76a2fe8133b0801b230d425f928c50b635b352016da40447c7c7185" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.4", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libss-1.45.4-3.el8.s390x.rpm", + "checksum": "sha256:40104e3acb91efb6474c87c2bd5ea29cd71f13429a88d78890c2e9bc59bfc4e0" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.0", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libssh-0.9.0-4.el8.s390x.rpm", + "checksum": "sha256:9310c8ec49c5ab54bbe41637f54f8721a64e55a563469ab3693936a0336a7d1b" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.0", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libssh-config-0.9.0-4.el8.noarch.rpm", + "checksum": "sha256:4446635ab8b16c20215423512319292f21b7cca294b9472c6adb186a303e26c6" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libstdc++-8.3.1-5.el8.s390x.rpm", + "checksum": "sha256:3e13b711f15b6c4db837cac46cb3792363fb8d1a92a93de424b3485768fe4488" + }, + { + "name": "libsysfs", + "epoch": 0, + "version": "2.1.0", + "release": "24.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsysfs-2.1.0-24.el8.s390x.rpm", + "checksum": "sha256:4cc7df5bb4b441f031309c30264551fa372dfee8571b54d2333aa81a44995194" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libtasn1-4.13-3.el8.s390x.rpm", + "checksum": "sha256:af53fe5838e16824b50a6f16a4cc5850d2406f054d7c961c813673fc27698042" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libtirpc-1.1.4-4.el8.s390x.rpm", + "checksum": "sha256:6269d41355f5813539f64613a06cda7c6b439ad8754db2f2727c0a2ca5713a1b" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libunistring-0.9.9-3.el8.s390x.rpm", + "checksum": "sha256:4b0e7c48e4162142940bb0387fec4e2f03cbad1ca06ee75532a515d8355dc865" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.22", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libusbx-1.0.22-1.el8.s390x.rpm", + "checksum": "sha256:36c8375deb752eae4df0760fe4634c9b5be9a1cdaee4a7bea7789004e892ae3c" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libutempter-1.1.6-14.el8.s390x.rpm", + "checksum": "sha256:8260d48510e13ebc63a211a1e546b3bf243d1c03488e50744ec1f86cca7f2b9f" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "22.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libuuid-2.32.1-22.el8.s390x.rpm", + "checksum": "sha256:079483da2949b3bb56df6d265a700b5cc67d3ff1f945afa1c519b0d53772c199" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libverto-0.3.0-5.el8.s390x.rpm", + "checksum": "sha256:4b12fc6f2004fb899b0c06c462bee1932fef97112267e3784e8519ebb42ddede" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libxcrypt-4.1.1-4.el8.s390x.rpm", + "checksum": "sha256:78f8ad277e8baeb9e14e9678b6f67786ab9eb3a33f98cd012c175fdb63806a31" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libxml2-2.9.7-7.el8.s390x.rpm", + "checksum": "sha256:35197371e37e599e683c8f5d91d1a5699191dfdc58cd67577caf64d60bfbe630" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libyaml-0.1.7-5.el8.s390x.rpm", + "checksum": "sha256:998276e153886e014ce37c429a0f22b76f3ca955c1c9ba89999ce3dface1cf10" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.2", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libzstd-1.4.2-2.el8.s390x.rpm", + "checksum": "sha256:ccd4a3fe16edc7f4a47983e191995b3308937b0483f84b141401285b867c8ef7" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/lua-libs-5.3.4-11.el8.s390x.rpm", + "checksum": "sha256:fd05bb7abdb6087d9c0eaaf321d30bc11399dc74881374952c4a5215ea2c86e8" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.1.2", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/lz4-libs-1.8.1.2-4.el8.s390x.rpm", + "checksum": "sha256:63d72c31437b4813bf29bb4daee23292ca4dbd3aa7d1ce6fa4ebc168b244eeaa" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/mpfr-3.1.6-1.el8.s390x.rpm", + "checksum": "sha256:0a3f52922caaa3b8213d350c3c955558d77fe31fe74f27fe58f178f93f381d56" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ncurses-6.1-7.20180224.el8.s390x.rpm", + "checksum": "sha256:ce09871bed0750f1f238db93099b9ae264c746496ae2d79ce654afb8f513f243" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ncurses-libs-6.1-7.20180224.el8.s390x.rpm", + "checksum": "sha256:7e1b890a9e063d4041fc924cb55067db762b32980d5e30fed11e4a7a3696d026" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/nettle-3.4.1-1.el8.s390x.rpm", + "checksum": "sha256:a66abcd7674f3356670ac394cbd3d1a34a2055259a1ccb45c02e91d190b44389" + }, + { + "name": "network-scripts", + "epoch": 0, + "version": "10.00.6", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/network-scripts-10.00.6-1.el8.s390x.rpm", + "checksum": "sha256:ef48355b0f8c051de6931674024dc472be1eddb4573da8d56a0668faf2352e0c" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/npth-1.5-4.el8.s390x.rpm", + "checksum": "sha256:e2e45f9ad3fa2d15b62b0d166975cf7c1ba94791cbfa305ab22086ceedff8867" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "11.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openldap-2.4.46-11.el8.s390x.rpm", + "checksum": "sha256:bbcee6c77d908470de66c126d770790a199337a32db93d8f07bb705330c8d7ba" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1c", + "release": "15.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssl-1.1.1c-15.el8.s390x.rpm", + "checksum": "sha256:55f735aea8ee2737fa63ebf25d27258f93ad119733a3389bfb8ea37ce140725f" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1c", + "release": "15.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssl-libs-1.1.1c-15.el8.s390x.rpm", + "checksum": "sha256:6d55aefe2ee59069d22514604c47da81d2638d219fed6e7ea086b0ce64e8c2c0" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssl-pkcs11-0.4.10-2.el8.s390x.rpm", + "checksum": "sha256:18c6c5fbd998c4d642b2dba059ba5042288b2f566cb03b7b45541b556b95f29d" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/p11-kit-0.23.14-5.el8_0.s390x.rpm", + "checksum": "sha256:2b09ab68296b57a39b302498bdb837c8220e4de3aa1db7a197f23eb6b75cdacd" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/p11-kit-trust-0.23.14-5.el8_0.s390x.rpm", + "checksum": "sha256:f096312848673cfea1e1e448083321fe4599b3339a79dc2b9e3998fd2ea1bdf3" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "8.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/pam-1.3.1-8.el8.s390x.rpm", + "checksum": "sha256:f3693f0a1c9e9e1772795fd0a88d48d8a5d8fa7d6e1b2f0f4bc42d577ef54076" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/pcre-8.42-4.el8.s390x.rpm", + "checksum": "sha256:ec3e5c0bec8bcc4cf03d665e3d48cb0511bd5b9c879630563b29ddbd05bbbda0" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/pcre2-10.32-1.el8.s390x.rpm", + "checksum": "sha256:282edb776a576a2745fe7c3278c813e0f8997e27b0ace2507dcf14f50a5f9840" + }, + { + "name": "perl-Carp", + "epoch": 0, + "version": "1.42", + "release": "396.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Carp-1.42-396.el8.noarch.rpm", + "checksum": "sha256:77066ee655df356370b5d6d736d96835f5712f8e814dfc46b391ecaef9cdd19b" + }, + { + "name": "perl-Data-Dumper", + "epoch": 0, + "version": "2.167", + "release": "399.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Data-Dumper-2.167-399.el8.s390x.rpm", + "checksum": "sha256:684d8438fec907d780ad69dd6f7571f84d73fecefc66026b751935d463973bd8" + }, + { + "name": "perl-Encode", + "epoch": 4, + "version": "2.97", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Encode-2.97-3.el8.s390x.rpm", + "checksum": "sha256:d2c97f8d96d6f82e34975bfcf8c25606e0370a3def4da27d6aabc85a86f589ca" + }, + { + "name": "perl-Errno", + "epoch": 0, + "version": "1.28", + "release": "416.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Errno-1.28-416.el8.s390x.rpm", + "checksum": "sha256:49d92784895f84d5526661e685cd38d5df00d610d12b6850061199d672997348" + }, + { + "name": "perl-Exporter", + "epoch": 0, + "version": "5.72", + "release": "396.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Exporter-5.72-396.el8.noarch.rpm", + "checksum": "sha256:7c385e32c12b2639232f74a5dfdfef86daf82e5418bc292c5ab2640fb5cf46dc" + }, + { + "name": "perl-File-Path", + "epoch": 0, + "version": "2.15", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-File-Path-2.15-2.el8.noarch.rpm", + "checksum": "sha256:d906b13d5dd7a5595133e2a1af83ae17a1aae0c107579db723d21ec4371f3570" + }, + { + "name": "perl-File-Temp", + "epoch": 0, + "version": "0.230.600", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-File-Temp-0.230.600-1.el8.noarch.rpm", + "checksum": "sha256:537059f8a2598f7b364693aec72f67f1a954c525b381139f736d75edbf19aa12" + }, + { + "name": "perl-Getopt-Long", + "epoch": 1, + "version": "2.50", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Getopt-Long-2.50-4.el8.noarch.rpm", + "checksum": "sha256:2976f2c007ac981a70e414960cd7426f446ebc8a0bf8feae7a6ece06c63ffefb" + }, + { + "name": "perl-HTTP-Tiny", + "epoch": 0, + "version": "0.074", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-HTTP-Tiny-0.074-1.el8.noarch.rpm", + "checksum": "sha256:2ee0a45ec4832e276ee130d8440cd29de05b7fd3ca335fe4635499a8bcbdfb73" + }, + { + "name": "perl-IO", + "epoch": 0, + "version": "1.38", + "release": "416.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-IO-1.38-416.el8.s390x.rpm", + "checksum": "sha256:dbb28005c8f68d794af2d9b35a3fcc3294190678b8cc9475acbad8a25a8837d3" + }, + { + "name": "perl-MIME-Base64", + "epoch": 0, + "version": "3.15", + "release": "396.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-MIME-Base64-3.15-396.el8.s390x.rpm", + "checksum": "sha256:01273ffc5443535d055b7962e173a10028fd2f128124480f587f8f9d7f4d4688" + }, + { + "name": "perl-PathTools", + "epoch": 0, + "version": "3.74", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-PathTools-3.74-1.el8.s390x.rpm", + "checksum": "sha256:05bd495695df8a78448ff0d2f2df0480f0bc49c9b7065bc2b1ceba41b42f1772" + }, + { + "name": "perl-Pod-Escapes", + "epoch": 1, + "version": "1.07", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Pod-Escapes-1.07-395.el8.noarch.rpm", + "checksum": "sha256:21b1497d132a52c93129700d58c44ba8c36af8da1bbd23fb408c00c3117c1012" + }, + { + "name": "perl-Pod-Perldoc", + "epoch": 0, + "version": "3.28", + "release": "396.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Pod-Perldoc-3.28-396.el8.noarch.rpm", + "checksum": "sha256:a660c78f704d3d22458c71d86605f51d62e3cc5306d22d66bb1df86c7274ad6c" + }, + { + "name": "perl-Pod-Simple", + "epoch": 1, + "version": "3.35", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Pod-Simple-3.35-395.el8.noarch.rpm", + "checksum": "sha256:e17077c8803f792c02570b2768510b8e4955bd0ae68ab4930e7060fcbb3793f6" + }, + { + "name": "perl-Pod-Usage", + "epoch": 4, + "version": "1.69", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Pod-Usage-1.69-395.el8.noarch.rpm", + "checksum": "sha256:f727e7919c662ae990d02ad2a6299ed3161ad7522587c11441477aae03549f06" + }, + { + "name": "perl-Scalar-List-Utils", + "epoch": 3, + "version": "1.49", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Scalar-List-Utils-1.49-2.el8.s390x.rpm", + "checksum": "sha256:475a66955c1749ba4ea13b5f4935dd13ac322c516961a512386496fe45d04472" + }, + { + "name": "perl-Socket", + "epoch": 4, + "version": "2.027", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Socket-2.027-3.el8.s390x.rpm", + "checksum": "sha256:9ee041eadd639ab6d9187f164c7f7b7954bdb4bf5f228555176207528e84fb1f" + }, + { + "name": "perl-Storable", + "epoch": 1, + "version": "3.11", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Storable-3.11-3.el8.s390x.rpm", + "checksum": "sha256:d6a82133f2ab89874788c141b10ed1f090689cd823a7559ed9197403f4000506" + }, + { + "name": "perl-Term-ANSIColor", + "epoch": 0, + "version": "4.06", + "release": "396.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Term-ANSIColor-4.06-396.el8.noarch.rpm", + "checksum": "sha256:657efda777af4b0d63ab127a72f3373c0d8a18f3b81e912b24a5fbdc9927dc1e" + }, + { + "name": "perl-Term-Cap", + "epoch": 0, + "version": "1.17", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Term-Cap-1.17-395.el8.noarch.rpm", + "checksum": "sha256:41c0f3ea7c7c2f21b5ccb0432db2c1b916ae34691a57f0b7bcb5a09dc7d8fafc" + }, + { + "name": "perl-Text-ParseWords", + "epoch": 0, + "version": "3.30", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Text-ParseWords-3.30-395.el8.noarch.rpm", + "checksum": "sha256:25ff1ab94430493bde65da6a800bb2638edc64dca38971eba2c798475cc18b97" + }, + { + "name": "perl-Text-Tabs+Wrap", + "epoch": 0, + "version": "2013.0523", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Text-Tabs+Wrap-2013.0523-395.el8.noarch.rpm", + "checksum": "sha256:7e078a375d2636b705e1734be79a8b76a306f8578066c901713663e367925bc7" + }, + { + "name": "perl-Time-Local", + "epoch": 1, + "version": "1.280", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Time-Local-1.280-1.el8.noarch.rpm", + "checksum": "sha256:4019e427bf69ed70e3a3cdfdcdd6771bcee1484f8e83bb69539a9e6530baddf1" + }, + { + "name": "perl-Unicode-Normalize", + "epoch": 0, + "version": "1.25", + "release": "396.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Unicode-Normalize-1.25-396.el8.s390x.rpm", + "checksum": "sha256:7c37700693bc781506a06eafc18ab1cb4a7f6b7559f0595c97f60a4f88390233" + }, + { + "name": "perl-constant", + "epoch": 0, + "version": "1.33", + "release": "396.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-constant-1.33-396.el8.noarch.rpm", + "checksum": "sha256:36798d9e979c9976ed66e23b3c8bda6250c4e80e411afe55c3942291cb4cb4ce" + }, + { + "name": "perl-interpreter", + "epoch": 4, + "version": "5.26.3", + "release": "416.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-interpreter-5.26.3-416.el8.s390x.rpm", + "checksum": "sha256:bcc032463153f59b2b58fa3ef73c3bf871b9e28ba1c0df09b8a5df80ce9af559" + }, + { + "name": "perl-libs", + "epoch": 4, + "version": "5.26.3", + "release": "416.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-libs-5.26.3-416.el8.s390x.rpm", + "checksum": "sha256:90cad0b0149c8e21613247039af49e91e138aa5e3e7d158022cfd274f349b123" + }, + { + "name": "perl-macros", + "epoch": 4, + "version": "5.26.3", + "release": "416.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-macros-5.26.3-416.el8.s390x.rpm", + "checksum": "sha256:186a83e25f1758b3efaf84330ce0ff548c9878d7f4590fcfbbf9f066abc095e0" + }, + { + "name": "perl-parent", + "epoch": 1, + "version": "0.237", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-parent-0.237-1.el8.noarch.rpm", + "checksum": "sha256:abe578c5dee7c306812e241c77ebc8ba4b54f90df8e65c56f8f202ba6e0d7183" + }, + { + "name": "perl-podlators", + "epoch": 0, + "version": "4.11", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-podlators-4.11-1.el8.noarch.rpm", + "checksum": "sha256:4811ab95c1d50ef7380e2c5937ae4490f8e28f56cf787c189437d1709e4423fb" + }, + { + "name": "perl-threads", + "epoch": 1, + "version": "2.21", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-threads-2.21-2.el8.s390x.rpm", + "checksum": "sha256:fdbce603c9cb7792728413638e4d5591f0d094a361e07ff4fe0b7014a61b0104" + }, + { + "name": "perl-threads-shared", + "epoch": 0, + "version": "1.58", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-threads-shared-1.58-2.el8.s390x.rpm", + "checksum": "sha256:2cd240f59d6570295931d54dfb392604f524572cfe252b1b1c8cec7793736e4d" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "23.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/platform-python-3.6.8-23.el8.s390x.rpm", + "checksum": "sha256:66760eb369153a4c41b1837d57a78d9a2f85f72ad567c8ad7ee3d5a89ef6a6cb" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "16.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/platform-python-pip-9.0.3-16.el8.noarch.rpm", + "checksum": "sha256:e57e36570f635b8df5dfcef61d40bb023ba5dd05a8b3109d6d671d956fcff69e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/platform-python-setuptools-39.2.0-5.el8.noarch.rpm", + "checksum": "sha256:7729a8f9623a6fe0f94428dc8fbb5bb2349659529ecfce4a5f1854e834108614" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/policycoreutils-2.9-9.el8.s390x.rpm", + "checksum": "sha256:5baa177e85af635cf7e1726e6ec558a6b44ebccbe84b13a1fa8a80f6240a19d2" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/popt-1.16-14.el8.s390x.rpm", + "checksum": "sha256:07f8f24c26ec3b1716c37c9b212f4f3397dcb3eb349ef5fe09bb444654fe0033" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/procps-ng-3.3.15-1.el8.s390x.rpm", + "checksum": "sha256:bbf1c85af70c001f23f7a47dbc604fa155765446aa16e4403ec12af21cd1ab42" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.17", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-dnf-4.2.17-6.el8.noarch.rpm", + "checksum": "sha256:83cfd01b18bd91f5ab60a882cd68314afc6eb091538ec840d3cb50d317182344" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.10.0", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-gpg-1.10.0-6.el8.s390x.rpm", + "checksum": "sha256:a53e65798fdd2968ada806d34a248bde08dfe8d0e1164ebd272a96881483c5ed" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.39.1", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-hawkey-0.39.1-5.el8.s390x.rpm", + "checksum": "sha256:8da37cb093752a1775c46cb71c0db55db3c3079d80bc1c5c7544d0c411bfac9b" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-libcomps-0.1.11-4.el8.s390x.rpm", + "checksum": "sha256:f3b45fd08cba7c338a8103d236ba4fd2c9bbe36e6d4ef96ddcb6a722d4cf529e" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.39.1", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-libdnf-0.39.1-5.el8.s390x.rpm", + "checksum": "sha256:167a35f5dd48fb4a632cf00ea21337689a1b78e5bb36254a2a9c6f5196b98d88" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "23.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-libs-3.6.8-23.el8.s390x.rpm", + "checksum": "sha256:268928928fa5d36b3b63387a17d91824924116fd3e3ce4016b9339d38e66b722" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "16.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-pip-wheel-9.0.3-16.el8.noarch.rpm", + "checksum": "sha256:34f9e9b309a8c6beabd1969ed3b0a685253eb8dd3e2d22d7ef2045f6796cd908" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.2", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-rpm-4.14.2-37.el8.s390x.rpm", + "checksum": "sha256:2aa79d4a09d234c08afc877e292e68244835e447348e85ebee431b0be1fe5104" + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-setuptools-39.2.0-5.el8.noarch.rpm", + "checksum": "sha256:9077c72004bd8266afafa2af093a30946105bf57ed052525e91bcc6acd9b8cef" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-setuptools-wheel-39.2.0-5.el8.noarch.rpm", + "checksum": "sha256:813494dff0f52c8eb8105405b961d47ec32ea7ffc037a00c3bff568086b8ccf9" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/readline-7.0-10.el8.s390x.rpm", + "checksum": "sha256:3e1977c9b662e295f67e2114694d4a11d87215346cd7836c8fe8b9cec050f357" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.2", + "release": "1.0.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/redhat-release-8.2-1.0.el8.s390x.rpm", + "checksum": "sha256:d6afe4abbdf882ed7f15dc9ede23040494b1cdc57981a0d88b6d96b91da471f0" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.2", + "release": "1.0.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/redhat-release-eula-8.2-1.0.el8.s390x.rpm", + "checksum": "sha256:6c144a883629536cf8eb7eccc64389f536cc89ef806b06b4a5de18d1746eecf2" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.2", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-4.14.2-37.el8.s390x.rpm", + "checksum": "sha256:a00c72bd891d02b1e0a903fb9508d1a1aa77a3d95240b058dd8a7662173730b7" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.2", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-build-libs-4.14.2-37.el8.s390x.rpm", + "checksum": "sha256:e6d780ed12021cb842de269c55a238649f6f0f76a08f5fde0db2463bdb15e067" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.2", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-libs-4.14.2-37.el8.s390x.rpm", + "checksum": "sha256:8d09980b1baa907fbb3ec8a3d8907912a867bcb0c0bf702d9b3c8601874fe112" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.2", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-plugin-selinux-4.14.2-37.el8.s390x.rpm", + "checksum": "sha256:96172fbae0c8f413d09af511f770b08a8e26495b8ab3dfd9c3eb279257621ffd" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.2", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-plugin-systemd-inhibit-4.14.2-37.el8.s390x.rpm", + "checksum": "sha256:4291406b201a35d5baaa28d2a0c5b1c218ffb7d981d0ad25532a7d36b672628e" + }, + { + "name": "s390utils-base", + "epoch": 2, + "version": "2.6.0", + "release": "28.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/s390utils-base-2.6.0-28.el8.s390x.rpm", + "checksum": "sha256:851d321970030ef2a2444c50a959daf4e63b814acc142be821eea560c404ab45" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sed-4.5-1.el8.s390x.rpm", + "checksum": "sha256:75cb8fa5f08004dd63e6647cd699bd011b9118a1bc9d6ee41c0eb772391db077" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "41.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/selinux-policy-3.14.3-41.el8.noarch.rpm", + "checksum": "sha256:ed03ae7d72ac4813b40490dfa0fb27fbb6828142d5507dc2fdcee636c4d19125" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "41.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/selinux-policy-targeted-3.14.3-41.el8.noarch.rpm", + "checksum": "sha256:ae2372e9110dfbf53c83bc7f78f867edc3cdb4044d62f1e63174cc3cf2d9e06e" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/setup-2.12.2-5.el8.noarch.rpm", + "checksum": "sha256:d3e95570de2bb3b418df9f883b22eae22086d60c437d9174c8e6bae71d0b7c11" + }, + { + "name": "sg3_utils", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sg3_utils-1.44-5.el8.s390x.rpm", + "checksum": "sha256:a8dadc6e4ba668ee14fda07fecd8879c8c7acdfd9b2effeb829b541d1de0d7a2" + }, + { + "name": "sg3_utils-libs", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sg3_utils-libs-1.44-5.el8.s390x.rpm", + "checksum": "sha256:5fb154dd6b3ae091297ce6c99576a1203451b9fedfd4d3825f1d0ed60ef9c4f6" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "8.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/shadow-utils-4.6-8.el8.s390x.rpm", + "checksum": "sha256:3092ab7fc56e099d2f05167fb582076a29b1c1a2512e4fbabfd3f9000431a66b" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/shared-mime-info-1.9-3.el8.s390x.rpm", + "checksum": "sha256:546ebad5183085f345385a483d5bfea61bb772ecf7071a339d1db614188e69cc" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sqlite-libs-3.26.0-6.el8.s390x.rpm", + "checksum": "sha256:bb54663316f683ffb7732f290d72b7c76a2b42e691a9d5a89869831b3982e41b" + }, + { + "name": "sysfsutils", + "epoch": 0, + "version": "2.1.0", + "release": "24.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sysfsutils-2.1.0-24.el8.s390x.rpm", + "checksum": "sha256:b2841b2cb926e7f529f604e2462304dcd0c63ff08f892eb573fb14029ad6511f" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "29.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/systemd-239-29.el8.s390x.rpm", + "checksum": "sha256:ee7f3a5b1494773ff9003c831f724a09213cac9f160fd2a764d13ea9b1a3921b" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "29.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/systemd-libs-239-29.el8.s390x.rpm", + "checksum": "sha256:31951582ea375a15365e9a42ec6c0cd8a61e6f593e00f0da013d79ac967878b7" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "29.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/systemd-pam-239-29.el8.s390x.rpm", + "checksum": "sha256:1a47d3d89a38ce0caf4136f981e06c643bfb19f86ff014d4db8b923340612692" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/tar-1.30-4.el8.s390x.rpm", + "checksum": "sha256:1af8f3ff12416a7a7b105840f53ada599e6e276ed08f2dea803ad0b21f962968" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/trousers-0.3.14-4.el8.s390x.rpm", + "checksum": "sha256:4c7e176a4024f519401c2b03fd69c23375714f80b5870894fccbb2abe4d0c724" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/trousers-lib-0.3.14-4.el8.s390x.rpm", + "checksum": "sha256:806670e01e158d45919b7c9a5ff13153b9e2e7516d18c8388bf36b493148380e" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/tzdata-2019c-1.el8.noarch.rpm", + "checksum": "sha256:4c90fe6c1bb01242a10c5d9e1655a0c27521febeffab450d33d88b4b11a8fa95" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "22.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/util-linux-2.32.1-22.el8.s390x.rpm", + "checksum": "sha256:dd29e9ec3dac16997fa4718edc3dd016fc6bd070fb0ae17c58c064ff20aa5b03" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/xfsprogs-5.0.0-2.el8.s390x.rpm", + "checksum": "sha256:ccde203ded5f1bdc73301468985fbab7c4dc2f707a3565c6197261ac6f7361d3" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/xz-5.2.4-3.el8.s390x.rpm", + "checksum": "sha256:d05b84d3b2126b91834bd388af680b10a73595363d138cd05920eb4ca8c0f03e" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/xz-libs-5.2.4-3.el8.s390x.rpm", + "checksum": "sha256:2a45920a9540e5057920f7c987d3daf910240a6d1ee63d1fa80fcdf3cee4fd71" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "13.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/zlib-1.2.11-13.el8.s390x.rpm", + "checksum": "sha256:dccd8b3ffb8a9015afe1d4cfa65df84589ede6582845899515d176695b457599" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.178", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/elfutils-debuginfod-client-0.178-7.el8.s390x.rpm", + "checksum": "sha256:3717331bb0807804e392afc98dd1c9cba30fdf2464aaf8869598d483313f9606" + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm", + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm", + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.2.0", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libmaxminddb-1.2.0-7.el8.s390x.rpm", + "checksum": "sha256:5999ddeea23f7ee7640ad90aacd09cc9c29b51fd489d5fe74db9e5b6ed981fef" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libxkbcommon-0.9.1-1.el8.s390x.rpm", + "checksum": "sha256:1206464e80ce9c9730e029702fda02a3510294d334a559215a7d6361c457cd46" + }, + { + "name": "perl-Digest", + "epoch": 0, + "version": "1.17", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-Digest-1.17-395.el8.noarch.rpm", + "checksum": "sha256:9e90e6054da06f5c8c2733c3b66987693a58ddc1f05d95b23ca0a464e26a2b22" + }, + { + "name": "perl-Digest-MD5", + "epoch": 0, + "version": "2.55", + "release": "396.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-Digest-MD5-2.55-396.el8.s390x.rpm", + "checksum": "sha256:7b6a754b55749e5f11ffec19cbb711f570607c2230e5750e5b2aaa915aa765c7" + }, + { + "name": "perl-IO-Socket-IP", + "epoch": 0, + "version": "0.39", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-IO-Socket-IP-0.39-5.el8.noarch.rpm", + "checksum": "sha256:7519f2af362827daecf105e1dccb551350f32dfd3f6a8a85bf6eb1b4b7788255" + }, + { + "name": "perl-IO-Socket-SSL", + "epoch": 0, + "version": "2.066", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-IO-Socket-SSL-2.066-4.el8.noarch.rpm", + "checksum": "sha256:4103adee1d874f535dccc59558968a8687c0cc8391b8adc4957d2952c244cf3b" + }, + { + "name": "perl-Mozilla-CA", + "epoch": 0, + "version": "20160104", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-Mozilla-CA-20160104-7.el8.noarch.rpm", + "checksum": "sha256:93772aade166fdb4bb4a78a0e08bea1b6f155e416597037267ad2603a767b9f5" + }, + { + "name": "perl-Net-SSLeay", + "epoch": 0, + "version": "1.88", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-Net-SSLeay-1.88-1.el8.s390x.rpm", + "checksum": "sha256:b79e0e33b98801e7cda1c845b31cfd5537b150fe4da4df1cacfc1d1534d57ce2" + }, + { + "name": "perl-URI", + "epoch": 0, + "version": "1.73", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-URI-1.73-3.el8.noarch.rpm", + "checksum": "sha256:dd6a948e5a656701156c618e202c0b6defd11ba6f162b6790cbb42cea15141ae" + }, + { + "name": "perl-libnet", + "epoch": 0, + "version": "3.11", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-libnet-3.11-3.el8.noarch.rpm", + "checksum": "sha256:81afd309f084c91d68c06bd46a4fce2e0d1e265a01ff87e309d1202e711e4a02" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/pinentry-1.1.0-2.el8.s390x.rpm", + "checksum": "sha256:13e2716cf8b28d92df079f55cf5f78c280f8d429e619fe22c80abef49c4f901e" + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "9.0.3", + "release": "16.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-pip-9.0.3-16.el8.noarch.rpm", + "checksum": "sha256:dd91378f68acef88ad2c653450a9e03054d87979e79625fd5cd3f01b5a68ba55" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-unbound-1.7.3-10.el8.s390x.rpm", + "checksum": "sha256:02bae2823210d586e266d37dad90fb9daed0787c7932bbe0520b769afc6d8d76" + }, + { + "name": "python36", + "epoch": 0, + "version": "3.6.8", + "release": "2.module+el8.1.0+3334+5cb623d7", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.s390x.rpm", + "checksum": "sha256:e990635ac1345ee9d17cd8c20b79341765ca68dce1f9775a68a0a4badce4f333" + }, + { + "name": "qemu-img", + "epoch": 15, + "version": "2.12.0", + "release": "99.module+el8.2.0+5827+8c39933c", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/qemu-img-2.12.0-99.module+el8.2.0+5827+8c39933c.s390x.rpm", + "checksum": "sha256:a971b04b37533967e2b76d92af5b7d5dfe33998584bcc35919044fc78a456123" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/unbound-libs-1.7.3-10.el8.s390x.rpm", + "checksum": "sha256:fbbc385a90edf08de42879e9c8ff762c5d3d9ca750d10e0bccbcd56592e5cff0" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.22.8", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/NetworkManager-1.22.8-4.el8.s390x.rpm", + "checksum": "sha256:22f3b4f5555795c96c7faa32cce72a2cc975c536397c480a296c5d11a3cc41a6" + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.22.8", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/NetworkManager-libnm-1.22.8-4.el8.s390x.rpm", + "checksum": "sha256:646b9a3d500ffe337d6dfe5e9acd6736248dc05887d0ee417203e59aea615b42" + }, + { + "name": "NetworkManager-team", + "epoch": 1, + "version": "1.22.8", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/NetworkManager-team-1.22.8-4.el8.s390x.rpm", + "checksum": "sha256:64b660142064caf425a371e256e989e05995b86af214233277d9fe9fa00c420c" + }, + { + "name": "NetworkManager-tui", + "epoch": 1, + "version": "1.22.8", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/NetworkManager-tui-1.22.8-4.el8.s390x.rpm", + "checksum": "sha256:b8921c14f31e46a8ae0e2cca015e43bc5ac96474654245d5def767c3003394e9" + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/acl-2.2.53-1.el8.s390x.rpm", + "checksum": "sha256:126bbe586fe4116b343fc349c80480f01d597c2a41abec5bc15019b126f51fdc" + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.s390x.rpm", + "checksum": "sha256:7db4f75c6439fbf4a1b3f6dcb1eb0935a92ac47b25c834d674ca46abda544a3c" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.s390x.rpm", + "checksum": "sha256:a5335a9d7e431ef45f4b6d256bdd7e4bfa98f73d994d6ec2a1b7c5ee792c821a" + }, + { + "name": "authselect", + "epoch": 0, + "version": "1.1", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/authselect-1.1-2.el8.s390x.rpm", + "checksum": "sha256:e630f2f55517bd25d483fae8a0ed936aec05da3a542f56d3fcd87f577cbcbc1a" + }, + { + "name": "authselect-libs", + "epoch": 0, + "version": "1.1", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/authselect-libs-1.1-2.el8.s390x.rpm", + "checksum": "sha256:880e3e51d0379b559522b32ff8ecd0664e618b9b0ba3493fa5a4fe4cf226daec" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/bash-4.4.19-10.el8.s390x.rpm", + "checksum": "sha256:30624f95cd736ceec96b7e2dfc4c4594d38825139c670dcd09b323faeb46d87a" + }, + { + "name": "bind-export-libs", + "epoch": 32, + "version": "9.11.13", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/bind-export-libs-9.11.13-3.el8.s390x.rpm", + "checksum": "sha256:98f8b8676e020636d1e096ce2b5f110c0dfa9fe83644bdf2e0ef4edaa770c183" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/brotli-1.0.6-1.el8.s390x.rpm", + "checksum": "sha256:03d1b5541823ba8637e04c69d0e00d711e0c799e764d6191d6ad989b459004e3" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/bzip2-libs-1.0.6-26.el8.s390x.rpm", + "checksum": "sha256:879d72df89400ac2d742b5093870760ec31b5b3dfef346a91fa3e4fffd54bc16" + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.13.0", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/c-ares-1.13.0-5.el8.s390x.rpm", + "checksum": "sha256:74727202d756f0ddfa6967c9ce36120e3f742b291b24d502514144af74118bf4" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/checkpolicy-2.9-1.el8.s390x.rpm", + "checksum": "sha256:3ef66f9831664434eb956122c731d4af82e9e8df2986e15f78eeaed0bfe41445" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.11", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/chkconfig-1.11-1.el8.s390x.rpm", + "checksum": "sha256:82f2336e0c5cf2a9271259a12cc5c84f95959503e2f131a2f41ca5f291ad8055" + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/chrony-3.5-1.el8.s390x.rpm", + "checksum": "sha256:ab4cbc162b173a24b9f8e323b0b93d7619eab406177fa43e1d7b835b77b20e39" + }, + { + "name": "cockpit-bridge", + "epoch": 0, + "version": "211.3", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cockpit-bridge-211.3-1.el8.s390x.rpm", + "checksum": "sha256:dc5fbbeb45fca1132cf465519fc6cba4701701aa25983da78f13050882787be2" + }, + { + "name": "cockpit-system", + "epoch": 0, + "version": "211.3", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cockpit-system-211.3-1.el8.noarch.rpm", + "checksum": "sha256:4ee51b6f690e64916984c844636f502e32ae9a753b87c498ac4f11a8bb57b71c" + }, + { + "name": "cockpit-ws", + "epoch": 0, + "version": "211.3", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cockpit-ws-211.3-1.el8.s390x.rpm", + "checksum": "sha256:75b826208559ef5e3edca7441e2d111f40ca7a21cebadd6a5726f6dee8bf1cf8" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/coreutils-8.30-6.el8.s390x.rpm", + "checksum": "sha256:cb1d1285d4195cd9b5098120649b95963341366f6e5490dfa9c5f06d7fa32dd4" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/coreutils-common-8.30-6.el8.s390x.rpm", + "checksum": "sha256:0c3e22cf2e8ab8b4c4f043f043e4e71dfccbe9b30ecab3a6532f1dddcc06662c" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cpio-2.12-8.el8.s390x.rpm", + "checksum": "sha256:9761722b401cfb5386d8009b797a1a162f1deed04fef32815535703c9bb4b6a6" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cracklib-2.9.6-15.el8.s390x.rpm", + "checksum": "sha256:2020a1fe4a1643ebdd76f6ae3a0942f115e80279625d54a783f804711915e5a3" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cracklib-dicts-2.9.6-15.el8.s390x.rpm", + "checksum": "sha256:dd8480924a9e9d6adc3c36562e090aec3f33e57dc93e4dea73ff37618755406b" + }, + { + "name": "cronie", + "epoch": 0, + "version": "1.5.2", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cronie-1.5.2-4.el8.s390x.rpm", + "checksum": "sha256:265c87cf9f13796cb985d22c5c743ac367db8ca9a6a793ce1d8c77046d99117a" + }, + { + "name": "cronie-anacron", + "epoch": 0, + "version": "1.5.2", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cronie-anacron-1.5.2-4.el8.s390x.rpm", + "checksum": "sha256:09523f0066c6f8a3cd0af3cbcf504b76814b2685dc91f79d75c7f990801a7765" + }, + { + "name": "crontabs", + "epoch": 0, + "version": "1.11", + "release": "16.20150630git.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/crontabs-1.11-16.20150630git.el8.noarch.rpm", + "checksum": "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20191128", + "release": "2.git23e1bf1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/crypto-policies-20191128-2.git23e1bf1.el8.noarch.rpm", + "checksum": "sha256:35c952c9e48350adf6f94b48dc7636f664ebbe16ed6632ee30c2e0fd22e7f0bf" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.2.2", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cryptsetup-libs-2.2.2-1.el8.s390x.rpm", + "checksum": "sha256:8ca16af0765e37aac3c2f4ef97791648b0fb0f247196f44bd768aed396c851e2" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/curl-7.61.1-12.el8.s390x.rpm", + "checksum": "sha256:751df4c8122e941b9dc37ab75debbe937807f72e5872401cf82d97c653866e07" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cyrus-sasl-lib-2.1.27-1.el8.s390x.rpm", + "checksum": "sha256:0cd56334755c7cbc9a4b18d9746dc3cae765a9ae8231b26e1e740a447d82c499" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-1.12.8-9.el8.s390x.rpm", + "checksum": "sha256:e6a00b8a31b790687f294e1a829e3171b4963b34f302aa1f7eeb245d4b49071a" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-common-1.12.8-9.el8.noarch.rpm", + "checksum": "sha256:cff5078143ab38f37a01e840bf5d42e2730c4b8e08ee7221a607ef52de8168cf" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-daemon-1.12.8-9.el8.s390x.rpm", + "checksum": "sha256:3f328081e6f97c4a833582e808d07bba2bf43f2b2d74f509c88889ba57fbe643" + }, + { + "name": "dbus-glib", + "epoch": 0, + "version": "0.110", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-glib-0.110-2.el8.s390x.rpm", + "checksum": "sha256:0a2ac458890bace077929cd545f55dcd22b93d2b6a2fa6c1583e0ed41ff7a7ab" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-libs-1.12.8-9.el8.s390x.rpm", + "checksum": "sha256:c2b12d1994efd87e8ba215e98a47c48c6e0fd07929b4889f79fed02d73b48b39" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-tools-1.12.8-9.el8.s390x.rpm", + "checksum": "sha256:92bba4bcc53313c8add1ad83efbc2eae5e909a3d4f1632ae564ad99335a53aa0" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.169", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/device-mapper-1.02.169-3.el8.s390x.rpm", + "checksum": "sha256:4980cdfb336c5de4c4336f41f6947cfb33b7befe7ed045711248469fe48edcd3" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.169", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/device-mapper-libs-1.02.169-3.el8.s390x.rpm", + "checksum": "sha256:9f1bc331219bc9bc97692477137dda660f512e8df95bbc99dd5300d48db13dbf" + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.3.6", + "release": "40.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dhcp-client-4.3.6-40.el8.s390x.rpm", + "checksum": "sha256:251ae9c0813ccc300bb793d143241a6dff5371d3836f3a5b448920b4fb5c3766" + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.3.6", + "release": "40.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dhcp-common-4.3.6-40.el8.noarch.rpm", + "checksum": "sha256:6c0d698eef8a7e0dbce88893187307135269d321593700edabe10a17fdccfb14" + }, + { + "name": "dhcp-libs", + "epoch": 12, + "version": "4.3.6", + "release": "40.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dhcp-libs-4.3.6-40.el8.s390x.rpm", + "checksum": "sha256:923b497f06eb1720c9ad6d1e55fc6bb3e26bf24fcd0e7e355a683a86de495fd1" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/diffutils-3.6-6.el8.s390x.rpm", + "checksum": "sha256:f0f8b7ec4ec783f4e6310208926f54b0bceed5476b6cebb5be9b336faaeaab0a" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.17", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dnf-4.2.17-6.el8.noarch.rpm", + "checksum": "sha256:457108e80b840850057c10f933446fd71a0d20b356c2a039af71e9fd68f61382" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.17", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dnf-data-4.2.17-6.el8.noarch.rpm", + "checksum": "sha256:6110d2531a5e40210ec9009cf80e901052406df0a41b075d591f903539575acf" + }, + { + "name": "dnf-plugin-subscription-manager", + "epoch": 0, + "version": "1.26.16", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dnf-plugin-subscription-manager-1.26.16-1.el8.s390x.rpm", + "checksum": "sha256:8f0e07257b26123e61b48bf23ded2f0713ccba8ddb69442f2999ae4c9cf291f0" + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.12", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dnf-plugins-core-4.0.12-3.el8.noarch.rpm", + "checksum": "sha256:53f553ae5c618d91bf82ad1a36bec5cdb0ec69f163df0af751adb8ae1492a09c" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "70.git20200228.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dracut-049-70.git20200228.el8.s390x.rpm", + "checksum": "sha256:fcd9779461cdb1addf4ffb47909fd818fc1c2f9df5e0288f4e12760c3fe2c452" + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "049", + "release": "70.git20200228.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dracut-config-generic-049-70.git20200228.el8.s390x.rpm", + "checksum": "sha256:9b3fec76d33c17ff30266528444e85f87fa48f89bf1abb0eee293cbf7c6ed764" + }, + { + "name": "dracut-network", + "epoch": 0, + "version": "049", + "release": "70.git20200228.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dracut-network-049-70.git20200228.el8.s390x.rpm", + "checksum": "sha256:72ffa52946382499ff2479f37305277e7a6cdc9f5c01a3dd150b3dd5fac0322f" + }, + { + "name": "dracut-squash", + "epoch": 0, + "version": "049", + "release": "70.git20200228.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dracut-squash-049-70.git20200228.el8.s390x.rpm", + "checksum": "sha256:23977fcf0abfaf9bb523adaf7432c5528c5add63508d4fb48a92c0b39a795317" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.4", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/e2fsprogs-1.45.4-3.el8.s390x.rpm", + "checksum": "sha256:5b681ca8e1778a6a7ec40a7b30a72537aef11518c2bb5ffdde346a0c590a2517" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.4", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/e2fsprogs-libs-1.45.4-3.el8.s390x.rpm", + "checksum": "sha256:96aa9181e5e0e6ea19b903d8d861171e0dc2c35167626a6d91cfe0f3402ccf46" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.178", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/elfutils-default-yama-scope-0.178-7.el8.noarch.rpm", + "checksum": "sha256:59c099ac7d9aee3e356bada6ecd9aab9bb57585214267b9d71fe2cba98de3cb0" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.178", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/elfutils-libelf-0.178-7.el8.s390x.rpm", + "checksum": "sha256:1eca3ef1ec2edeae041c3d55687c806db77a2a1e0837fa4937b664e37b903e22" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.178", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/elfutils-libs-0.178-7.el8.s390x.rpm", + "checksum": "sha256:c5a8ad2ff91b081c664dc9a946acaffc85c9dfd202c9e9667f56ad4c23211807" + }, + { + "name": "ethtool", + "epoch": 2, + "version": "5.0", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ethtool-5.0-2.el8.s390x.rpm", + "checksum": "sha256:a5b032d5d199e3facef794929ac837d572e7fcb0db3a9c9d2480daccb8765ee1" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/expat-2.2.5-3.el8.s390x.rpm", + "checksum": "sha256:b63261bfd20aaee97ab2a47c2368c8eab62fc62c1f988a80f52715347c3bd72d" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "13.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/file-5.33-13.el8.s390x.rpm", + "checksum": "sha256:e35db3041d24f29f006b94cacf14c4ac82a12b3e723b5ddf3d161e67ac5eae2e" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "13.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/file-libs-5.33-13.el8.s390x.rpm", + "checksum": "sha256:d6ba0f45311859012b68738abd9062cf20efe954cf3fd97e602e09fbfe8e3fdb" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/filesystem-3.8-2.el8.s390x.rpm", + "checksum": "sha256:408557972679db1bd8c1c2d5a07399ec408d2022fa17d45e6e1d6e9baa6f2513" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/findutils-4.6.0-20.el8.s390x.rpm", + "checksum": "sha256:7b8b3d31e3ddd80fd39bf396122bb4b38582f090889b7d465e0db9eb8d6a7bf2" + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/fipscheck-1.5.0-4.el8.s390x.rpm", + "checksum": "sha256:b1af9ab85021403842c69373903db6d89328575a0902b95e852ae8052a177ac7" + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/fipscheck-lib-1.5.0-4.el8.s390x.rpm", + "checksum": "sha256:a8d16009aa67cb5f09bdeeca57c1198ad1ecd2d1a963146369bb6200d1adcf5a" + }, + { + "name": "fontconfig", + "epoch": 0, + "version": "2.13.1", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/fontconfig-2.13.1-3.el8.s390x.rpm", + "checksum": "sha256:64f84dd2024470dcb8ca11ac0e22cdbedc79e6a55b916f60de27c5da1018f9e9" + }, + { + "name": "fontpackages-filesystem", + "epoch": 0, + "version": "1.44", + "release": "22.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/fontpackages-filesystem-1.44-22.el8.noarch.rpm", + "checksum": "sha256:db1fad3c2d8735e69084bd4b09ea963938e4dde2f2e096dc7a4ce146f18b7ab0" + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.9.1", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/freetype-2.9.1-4.el8.s390x.rpm", + "checksum": "sha256:fb5a9dbeb24253bcb3451cd80b659cd24ce486f98efe6d282e14ad123f786848" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/fuse-libs-2.9.7-12.el8.s390x.rpm", + "checksum": "sha256:2429abaf8afb74f4fdc8050e4c90e315316186d372a809e062a914808d02d907" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gawk-4.2.1-1.el8.s390x.rpm", + "checksum": "sha256:413d3b549e7339e7fee5a2f8232ec11ec3e7490b57a303bde5b15677af0d9add" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gdbm-1.18-1.el8.s390x.rpm", + "checksum": "sha256:e944915a4f9e920d831db11d1a2a08e3ab8712d04735e3499150f90be056026a" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gdbm-libs-1.18-1.el8.s390x.rpm", + "checksum": "sha256:4a88a0e57e579ef6c53736c26cc8bbd7fa1f6d3de4a7d61fcde96d9ecb6947d9" + }, + { + "name": "gdk-pixbuf2", + "epoch": 0, + "version": "2.36.12", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gdk-pixbuf2-2.36.12-5.el8.s390x.rpm", + "checksum": "sha256:fabfbd58cb438e4e1b029b148f2186fda469bf049a1125be01c982583d13f6bd" + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.56.1", + "release": "1.1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glib-networking-2.56.1-1.1.el8.s390x.rpm", + "checksum": "sha256:40e39bd372ee233258f6c0b64ae62f5065d3c7bff91c891f2e0949b2ffa6e277" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glib2-2.56.4-8.el8.s390x.rpm", + "checksum": "sha256:e153757cbf8c1552b4f3f9593335a8332030b3aca304caf29258721c52ae4ec0" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "101.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glibc-2.28-101.el8.s390x.rpm", + "checksum": "sha256:4fafa365bdf0023cf4efdd69c2f02f73d6e89d63b8a895d472baf5cc4feeed92" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "101.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glibc-all-langpacks-2.28-101.el8.s390x.rpm", + "checksum": "sha256:f934a992e23ec2d6c2adb63d5031912c4813238a82eb56ce5e0acea184588e78" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "101.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glibc-common-2.28-101.el8.s390x.rpm", + "checksum": "sha256:df582e688213786293a439987456c58463c8a30564fbd9c4999d0300c17e67ba" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gmp-6.1.2-10.el8.s390x.rpm", + "checksum": "sha256:1cc3e427d85ddd7caeda2c9a5063af110987ef0009b19a3924757e76e0f7ac8a" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.9", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gnupg2-2.2.9-1.el8.s390x.rpm", + "checksum": "sha256:0e6d88ed1b7038d234b0cbec9bdcf9239efc898993cfb2092ffa7fe52864d9a7" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.9", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gnupg2-smime-2.2.9-1.el8.s390x.rpm", + "checksum": "sha256:84cc3add4aafbee00fb25979f24818d71a99f03c63f8ff6f57e5f085dc693dbc" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.8", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gnutls-3.6.8-9.el8.s390x.rpm", + "checksum": "sha256:d115c393bf047f72711f757568d43e633f75237a76e3cdc0ae267da6ad03ba04" + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.56.1", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gobject-introspection-1.56.1-1.el8.s390x.rpm", + "checksum": "sha256:52f6082ca12006790d087a08379b92b870fc09d6a1da9f863671722878c8d07e" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.10.0", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gpgme-1.10.0-6.el8.s390x.rpm", + "checksum": "sha256:277708213acd2b535f20275de72275132bdee2d478382f12a28e7b13a3d34366" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/grep-3.1-6.el8.s390x.rpm", + "checksum": "sha256:5a84c721418c21c38a32cb3170f5fbf9cb3a8d1d728b408ce026dd8cd3955c15" + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "18.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/groff-base-1.22.3-18.el8.s390x.rpm", + "checksum": "sha256:7fcc96203ab686368fb66f568d042c893a64ac965390fd73f5c891b8a553f430" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "38.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/grubby-8.40-38.el8.s390x.rpm", + "checksum": "sha256:2cc3efed29198a6e4fae393b8db2661e5134b1abba4c6d056b258576925a26ee" + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.32.0", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gsettings-desktop-schemas-3.32.0-4.el8.s390x.rpm", + "checksum": "sha256:7e99557bcecefd6241b5d76a2fd43c3fd94d8a8337af0287cb238942cf5a30aa" + }, + { + "name": "gssproxy", + "epoch": 0, + "version": "0.8.0", + "release": "15.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gssproxy-0.8.0-15.el8.s390x.rpm", + "checksum": "sha256:41acedd1ce2cfa1063ef22c3f49d0a2d45eb768c587b9c8a6b135860ff1c02f4" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gzip-1.9-9.el8.s390x.rpm", + "checksum": "sha256:bb55b46b0849b445cbb7c38749b79affcbf4ae4e43c86a39ba28a64dff1ad0ec" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/hardlink-1.3-6.el8.s390x.rpm", + "checksum": "sha256:677ea3b043f29110c06c6759be1a5afafa66b56bad6d7af6777d86cf7baefcb8" + }, + { + "name": "hdparm", + "epoch": 0, + "version": "9.54", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/hdparm-9.54-2.el8.s390x.rpm", + "checksum": "sha256:6b157141692f891ad738b5989b6fdf5a0922d8b8683d957a76067fee6ba5f219" + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.20", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/hostname-3.20-6.el8.s390x.rpm", + "checksum": "sha256:c34e6300e7c863eba8fc9ac5c43b01c5474e88d2246c6d0bc97b9f168611e53c" + }, + { + "name": "hwdata", + "epoch": 0, + "version": "0.314", + "release": "8.4.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/hwdata-0.314-8.4.el8.noarch.rpm", + "checksum": "sha256:bce4ccc35f0724dab035fdd012316ad7123a0b4bde6af67c20e71bcdaeb8f64f" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ima-evm-utils-1.1-5.el8.s390x.rpm", + "checksum": "sha256:ad32bb58e49467cba3dabceee4e85202e8c4118624f870c299b49ff0396cda30" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/info-6.5-6.el8.s390x.rpm", + "checksum": "sha256:9df26f1ca53725cb1091fe8858747bb8c841eee29b604f96031d92880c283238" + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.00.6", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/initscripts-10.00.6-1.el8.s390x.rpm", + "checksum": "sha256:484f75c409de524cde02e7002b768ac6583ee4329bab0a28a0088863211d7832" + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.2.4", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ipcalc-0.2.4-4.el8.s390x.rpm", + "checksum": "sha256:3853bcdd64872c9fddd28f5fafdc863e6374e57e65be2ee4c581263bfea79697" + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.3.0", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/iproute-5.3.0-1.el8.s390x.rpm", + "checksum": "sha256:4b74cef48ac1a874b473311f779b9f9055ee0a0e4b2352439a342f2a353832e5" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/iptables-libs-1.8.4-10.el8.s390x.rpm", + "checksum": "sha256:d3e6f8e99a5c411a1efa7b373cac48b41e9237edf5b65ec4e9f25fb496485bbd" + }, + { + "name": "iputils", + "epoch": 0, + "version": "20180629", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/iputils-20180629-2.el8.s390x.rpm", + "checksum": "sha256:9075032326cd6da781c5a8f02f43988df08244182631df185b90884cdcd2bafb" + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.11", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/jansson-2.11-3.el8.s390x.rpm", + "checksum": "sha256:b2be91112ab5a4c3977ebcb72452393150a2e5ecbdfdd664c3c8b952db61c591" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/json-c-0.13.1-0.2.el8.s390x.rpm", + "checksum": "sha256:42f4cfc52a662e95002a2a35c0edfe8b855162ce84f813f7110394dbf8ff2596" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/json-glib-1.4.4-1.el8.s390x.rpm", + "checksum": "sha256:82becf766432b5ef763d2bfdb53f5c233a471ccae45d7703c19f876aaa69afd8" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "8.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kbd-2.0.4-8.el8.s390x.rpm", + "checksum": "sha256:bfeddba14d40deb22197531dd544d10417b3e9231e1a56fb30418663d00df9a6" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kbd-legacy-2.0.4-8.el8.noarch.rpm", + "checksum": "sha256:cd8811c732e84a774ea720116d24b4b310d9a7d269a0457df8e708109fd0a120" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kbd-misc-2.0.4-8.el8.noarch.rpm", + "checksum": "sha256:39bfa470cfbe028c3a638d7283ff66a3e7c8ee654ccefdd58474a860e3420e22" + }, + { + "name": "kernel", + "epoch": 0, + "version": "4.18.0", + "release": "193.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kernel-4.18.0-193.el8.s390x.rpm", + "checksum": "sha256:c15782845bd5418289a7ff0ca28c303e5d80fdb55147872e580abca02eadf575" + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "4.18.0", + "release": "193.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kernel-core-4.18.0-193.el8.s390x.rpm", + "checksum": "sha256:e74678e1b23544ffc0d1fc1e3e3d7564e359f6c874f5eede32d682cbe5059923" + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "4.18.0", + "release": "193.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kernel-modules-4.18.0-193.el8.s390x.rpm", + "checksum": "sha256:09c4c66589d924279dd5c63dfdbb4a19b6e2927f01f9a6958b519edd1dd1043d" + }, + { + "name": "kernel-tools", + "epoch": 0, + "version": "4.18.0", + "release": "193.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kernel-tools-4.18.0-193.el8.s390x.rpm", + "checksum": "sha256:fb224140d29f9bc48a2636b6947645e46da44b0d0233bcd4966765dea56a164e" + }, + { + "name": "kexec-tools", + "epoch": 0, + "version": "2.0.20", + "release": "14.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kexec-tools-2.0.20-14.el8.s390x.rpm", + "checksum": "sha256:965d6aabcf2b56566b2a082a950b293a9cb5b964e2a33aade07078092b2b3a45" + }, + { + "name": "keyutils", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/keyutils-1.5.10-6.el8.s390x.rpm", + "checksum": "sha256:d7910a43ccb41a7cea58df1c4edecb309172d1ec8090a1a1a890381b046cedb2" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/keyutils-libs-1.5.10-6.el8.s390x.rpm", + "checksum": "sha256:9b88cba46414a21b780f2fc25f8e76a0cc144aabf1bec1eb9873e10369cd27c3" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kmod-25-16.el8.s390x.rpm", + "checksum": "sha256:7af192dd97d723343c5142e2fb1053744b3d1e77b90e041ad5e0222b0258a001" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kmod-libs-25-16.el8.s390x.rpm", + "checksum": "sha256:e81af37e55bca721e41de93cbffedac3959256dd44bc67605908ac0298a1b74f" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.3", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kpartx-0.8.3-3.el8.s390x.rpm", + "checksum": "sha256:b59c6010d3eda92c654d4544fbc78d7bf3ed82b2661064d1679953bce8f8b7fd" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.17", + "release": "18.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/krb5-libs-1.17-18.el8.s390x.rpm", + "checksum": "sha256:04ae113a2f41daae0c19672c9920f26bb46960e79ce46e626591a7e278d636a3" + }, + { + "name": "less", + "epoch": 0, + "version": "530", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/less-530-1.el8.s390x.rpm", + "checksum": "sha256:ab08621cdf99fc696aab1d7de2c10649fbea9001f62a1c3574c5468240d24394" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libacl-2.2.53-1.el8.s390x.rpm", + "checksum": "sha256:18f6ad86cc7f681783183746576ba0cf5b9f0eee9ab18adb615bf6398404bb74" + }, + { + "name": "libappstream-glib", + "epoch": 0, + "version": "0.7.14", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libappstream-glib-0.7.14-3.el8.s390x.rpm", + "checksum": "sha256:78c646627263a41cd55eed285232115dec589954da8c18ac32f37b2fdd96c688" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "8.el8_1", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libarchive-3.3.2-8.el8_1.s390x.rpm", + "checksum": "sha256:885aad9ce00d5dd80d961c33873de3d7fd5c8e9d7493835e87be438e27423187" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libassuan-2.5.1-3.el8.s390x.rpm", + "checksum": "sha256:0914bb1e4fd12735f4919734cb42871d5a576dfe8c3df82e9de3d867c87755c1" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libattr-2.4.48-3.el8.s390x.rpm", + "checksum": "sha256:51436452d89b01024c397555cc58b32ab3ac10055bd03043663b5debd089380b" + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "39.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libbasicobjects-0.1.1-39.el8.s390x.rpm", + "checksum": "sha256:9c58e6d1f654074080a50aefcd9eba3b37bb43c64a449fa96485725ba9ce6716" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "22.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libblkid-2.32.1-22.el8.s390x.rpm", + "checksum": "sha256:4f850d4565e92e1d5542d790b4983104156480bcd8d73be16a779b4231c6598a" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcap-2.26-3.el8.s390x.rpm", + "checksum": "sha256:c190674c383927684353be1fa61f000971811cb6a82782e81adf4906675723c2" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcap-ng-0.7.9-5.el8.s390x.rpm", + "checksum": "sha256:35471bc9ee490a4447723813c288126aceaa2617a0f271cb7cb98d99a6111ba0" + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "39.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcollection-0.7.0-39.el8.s390x.rpm", + "checksum": "sha256:b5e68b3d14142d44f3502c464f2720ffdc1181622cfdd2d430adba8885127e63" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.4", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcom_err-1.45.4-3.el8.s390x.rpm", + "checksum": "sha256:3ea9e13b87f3156dd06ccfe43eeb77cb8834ab7be571a50b2faab5160c49291f" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcomps-0.1.11-4.el8.s390x.rpm", + "checksum": "sha256:2d457d282782cbf40c42e96e1c1e93ac947ce0d5f55985c97b307d746e7e56e2" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcurl-7.61.1-12.el8.s390x.rpm", + "checksum": "sha256:a16c9feab88a9876c41c34cd861490ce28be62e234040a59ce726e79dce4d9ef" + }, + { + "name": "libdaemon", + "epoch": 0, + "version": "0.14", + "release": "15.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libdaemon-0.14-15.el8.s390x.rpm", + "checksum": "sha256:b7746a0aac1fa38b79711fd5d98f571612d7879af0e4e47c42bf43ba564cef16" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libdb-5.3.28-37.el8.s390x.rpm", + "checksum": "sha256:436949033b66b9e0b91eb42961f0db604dffedd88db1dbce3a8515ade58043da" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libdb-utils-5.3.28-37.el8.s390x.rpm", + "checksum": "sha256:f1e0648c7c3a1b0286d9b300966effd51f328a724c37c32a3bbbcc8e00c6b168" + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "39.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libdhash-0.5.0-39.el8.s390x.rpm", + "checksum": "sha256:ac095caa9dcc503cf87a6ca5f5a4e3632fd970537c2f039205e22865a6bd10a3" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.39.1", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libdnf-0.39.1-5.el8.s390x.rpm", + "checksum": "sha256:3bccb3d9479adaa9dd9491b51247f79f05dd4fcad061a849781debd085e7209f" + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "23.20170329cvs.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libedit-3.1-23.20170329cvs.el8.s390x.rpm", + "checksum": "sha256:9a2e49109984bfe36d34cc1815a6aee230a2d8bb3c13b03763a367216af34d67" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libevent-2.1.8-5.el8.s390x.rpm", + "checksum": "sha256:08178dfd67abc7e7984e94e62289d78ce84ead317c512ccb6596f7a752984dc7" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "22.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libfdisk-2.32.1-22.el8.s390x.rpm", + "checksum": "sha256:d7789087a45017b084c27678ed782e8d923bd402547156a467a910b8682a8b02" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "21.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libffi-3.1-21.el8.s390x.rpm", + "checksum": "sha256:b8b2e5b057d65cee6a8c65f236fbd0a9a717d15384f4d3cbc678563b223bf011" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libgcc-8.3.1-5.el8.s390x.rpm", + "checksum": "sha256:fc9f17a2fc6897c643fff67cf393051bb07ad16962b19a48f0e9991649ebae08" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.3", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libgcrypt-1.8.3-4.el8.s390x.rpm", + "checksum": "sha256:d120bc374362edd18914525ef7311a63e24c888f924c4e7315e036f86796309e" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libgpg-error-1.31-1.el8.s390x.rpm", + "checksum": "sha256:7f97a748a033ca6da465cdb7a861bd844523de3c7a186248bf559f0f64db0952" + }, + { + "name": "libgudev", + "epoch": 0, + "version": "232", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libgudev-232-4.el8.s390x.rpm", + "checksum": "sha256:aaa3d17cafb5ab7a2d8678d509d95974c53147505d1ae302b97905c5ec267b1d" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libidn2-2.2.0-1.el8.s390x.rpm", + "checksum": "sha256:0af540f9af46e2ed891119dab6189e425323ac0742e0dd0f08b6df4e3ecb7092" + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "39.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libini_config-1.3.1-39.el8.s390x.rpm", + "checksum": "sha256:1b879ebad67b32ba9e2a9237b91854cdd0ec5c9eb4a9c1c40462d36596405ec1" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.1.1", + "release": "16_1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libkcapi-1.1.1-16_1.el8.s390x.rpm", + "checksum": "sha256:a385cf1683c05ba68de9874b2659fca53160544abf658856a3bee9391e52532e" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.1.1", + "release": "16_1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libkcapi-hmaccalc-1.1.1-16_1.el8.s390x.rpm", + "checksum": "sha256:38c481843b2004d6aa76450aefb1d96936a7e5fc6eaa7f428463a7a68b3eb039" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libksba-1.3.5-7.el8.s390x.rpm", + "checksum": "sha256:4682cfac60ce5f220640c3f7468c39fa2805bcc281cf464fc98c273bace1e579" + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.0.7", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libldb-2.0.7-3.el8.s390x.rpm", + "checksum": "sha256:21a3e46a2a6ac7956b19be0bdf43f0be2d216c8455ca704f3bb818834874a82b" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libmetalink-0.1.3-7.el8.s390x.rpm", + "checksum": "sha256:65bef4240948e0b9400b0d50c37420511ef2dbd0c0130bdb4413c3e60d60f2f1" + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libmnl-1.0.4-6.el8.s390x.rpm", + "checksum": "sha256:fdfde1848ded3233eadd44c677269196ef72cd8e82fd372ba2c45df4fa36a140" + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "17.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libmodman-2.0.1-17.el8.s390x.rpm", + "checksum": "sha256:e2e79ae9c27bd89e089e1b31eea12084b0cce5aabdd7dd9113d9c8e53696d2ee" + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.16", + "release": "0.2.8.2.1", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libmodulemd1-1.8.16-0.2.8.2.1.s390x.rpm", + "checksum": "sha256:74cad5967ec955d6b8851a5240c4ae823ea10f08dc0e811aba2b79d6dc5a9949" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "22.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libmount-2.32.1-22.el8.s390x.rpm", + "checksum": "sha256:e6ff2a695a331ce5100f1c195d5748ce33408e300d9d611387889d77719007a3" + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libndp-1.7-3.el8.s390x.rpm", + "checksum": "sha256:b2742fbda02636368c1ba4d6c8d77f7ba46261268c269090b1bf0e8450c180ea" + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.3.3", + "release": "31.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libnfsidmap-2.3.3-31.el8.s390x.rpm", + "checksum": "sha256:508ebbee159a5a3d069ca0149fcf67199790c045f90db7c7ca624b8476821fe9" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "1.el8_0.1", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libnghttp2-1.33.0-1.el8_0.1.s390x.rpm", + "checksum": "sha256:89531a2a7fecb645bb841bb38cad65499754e83e186d380f1a246638c661b000" + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libnl3-3.5.0-1.el8.s390x.rpm", + "checksum": "sha256:5e6468f344c380e7ba83743a8a2aaa73a333595ea0a19a8388ead8753929909e" + }, + { + "name": "libnl3-cli", + "epoch": 0, + "version": "3.5.0", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libnl3-cli-3.5.0-1.el8.s390x.rpm", + "checksum": "sha256:4f24819ebd2968527e2ddbbf08c31906d4c0757a9c9c883be13d0820dc272624" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.s390x.rpm", + "checksum": "sha256:e1f215df72d86fec4f860cf9a3c318ad7e3db9ac853956650d01087ff0f46caa" + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "39.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libpath_utils-0.2.1-39.el8.s390x.rpm", + "checksum": "sha256:21f23d4f9a04341117908ab4b778c287a0ffc04020797254534d56675cc99a33" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.0", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libpcap-1.9.0-3.el8.s390x.rpm", + "checksum": "sha256:e3c3592c21ceeefe6b62a3b6db97fc58e0ef8ed5208467a2a72dcbced0258cc6" + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.0", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libpipeline-1.5.0-2.el8.s390x.rpm", + "checksum": "sha256:523d6c8773f687dfaee21e80709a76bb31c9da2ab2834b6a8e2a8920ffb6615e" + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.34", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libpng-1.6.34-5.el8.s390x.rpm", + "checksum": "sha256:13eee378f386ece19fbd60558a2ed985eb5c32a076235c7ec15b49032888c828" + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "5.2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libproxy-0.4.15-5.2.el8.s390x.rpm", + "checksum": "sha256:a802778e1979c8b2115f68a799175fd0b6d6d1aec55401a17f84ca918b7505cd" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libpsl-0.20.2-5.el8.s390x.rpm", + "checksum": "sha256:19bb9e23dd56bfc1c29eb620bdd6f059fbea0f4d9a682e71793c52573dc2b5a5" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libpwquality-1.4.0-9.el8.s390x.rpm", + "checksum": "sha256:bce48e34f1c6be096d433665f9c1f69e769445c179b91bc5b79a565604a74e3d" + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "39.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libref_array-0.1.5-39.el8.s390x.rpm", + "checksum": "sha256:39833d43b0b71110eb1ca50fb2088159b1f0ab85e2ffc09769cddf58c04bd2f5" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.11.0", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/librepo-1.11.0-2.el8.s390x.rpm", + "checksum": "sha256:302b0d285149d53df9a7805cc664b1a6407c27fc94e4331b9974a21da61c658e" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libreport-filesystem-2.9.5-10.el8.s390x.rpm", + "checksum": "sha256:7305aabe9ab0e0d65293384c636bcca017abb426986c59c5f92b9c08be016be1" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/librhsm-0.0.3-3.el8.s390x.rpm", + "checksum": "sha256:309365c7a2ea977c132ecf9394bfa402b6fae9ba53226f45a3cc07659ca48c24" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.1", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libseccomp-2.4.1-1.el8.s390x.rpm", + "checksum": "sha256:4dd35cd8eeb1b33dafb05a476df6eaaf26dcb5442e0f9c08d547bfd73f226d8f" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsecret-0.18.6-1.el8.s390x.rpm", + "checksum": "sha256:be01593ef51abcb8540b55d0b40946f3d0d507e2f4cde1023898635b7e03fbef" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libselinux-2.9-3.el8.s390x.rpm", + "checksum": "sha256:18ad184245a885a9f2ef53c58aef0ef70fe4e4d6c7728d72b2b6527117f63b61" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libselinux-utils-2.9-3.el8.s390x.rpm", + "checksum": "sha256:bbebf8199fc730d588d48d52bf839ac7cfefd921d32038a62d2d221d745ce945" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsemanage-2.9-2.el8.s390x.rpm", + "checksum": "sha256:3b060586f41724416985e14e50ea2892e96caa103e4055acee38f00db4bcfdf5" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsepol-2.9-1.el8.s390x.rpm", + "checksum": "sha256:792fc1513e33391423efb98aa9bcec85cf5db0a1a417ad41316178590fe069d7" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsigsegv-2.11-5.el8.s390x.rpm", + "checksum": "sha256:29f3de36d25fe893787e4c375a4242ff9baec204158025187269a8379116deaa" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "22.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsmartcols-2.32.1-22.el8.s390x.rpm", + "checksum": "sha256:8e2994a30b907bca3808c40bdde77b0746c4bec0d22c1ccfa74968f98c98a1d7" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.7", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsolv-0.7.7-1.el8.s390x.rpm", + "checksum": "sha256:534dd2a6b76a2fe8133b0801b230d425f928c50b635b352016da40447c7c7185" + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.62.3", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsoup-2.62.3-1.el8.s390x.rpm", + "checksum": "sha256:1abf445376ec2530ba601838496ce0608edeadfe43a6b2114827811979be503d" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.4", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libss-1.45.4-3.el8.s390x.rpm", + "checksum": "sha256:40104e3acb91efb6474c87c2bd5ea29cd71f13429a88d78890c2e9bc59bfc4e0" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.0", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libssh-0.9.0-4.el8.s390x.rpm", + "checksum": "sha256:9310c8ec49c5ab54bbe41637f54f8721a64e55a563469ab3693936a0336a7d1b" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.0", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libssh-config-0.9.0-4.el8.noarch.rpm", + "checksum": "sha256:4446635ab8b16c20215423512319292f21b7cca294b9472c6adb186a303e26c6" + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.2.3", + "release": "20.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsss_autofs-2.2.3-20.el8.s390x.rpm", + "checksum": "sha256:e5a265eacd6db352523861796aceab37114e449adf8e75114cbf6b1bd7429d27" + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.2.3", + "release": "20.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsss_certmap-2.2.3-20.el8.s390x.rpm", + "checksum": "sha256:1201094e719702586fb1bf5a90c1871ca0b98503e712bfa5d1a43ecca4866627" + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.2.3", + "release": "20.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsss_idmap-2.2.3-20.el8.s390x.rpm", + "checksum": "sha256:6f195f37fa68639756a9c7addca897e89242553bb237ed691d8831f6d86f6cd9" + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.2.3", + "release": "20.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsss_nss_idmap-2.2.3-20.el8.s390x.rpm", + "checksum": "sha256:02b5629e0970f9f0bb6aeb6e63ae8d427492dcf1c3d6b471d624495e386a584e" + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.2.3", + "release": "20.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsss_sudo-2.2.3-20.el8.s390x.rpm", + "checksum": "sha256:15d24747a5d35c5c8872d1264e2d37f46102155086eff7ee970db5b9cb0be497" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libstdc++-8.3.1-5.el8.s390x.rpm", + "checksum": "sha256:3e13b711f15b6c4db837cac46cb3792363fb8d1a92a93de424b3485768fe4488" + }, + { + "name": "libstemmer", + "epoch": 0, + "version": "0", + "release": "10.585svn.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libstemmer-0-10.585svn.el8.s390x.rpm", + "checksum": "sha256:37dc570b8dfd1d1062c75a7acf0205f8f92c343558ff387ddd878e7c04bd4e1c" + }, + { + "name": "libsysfs", + "epoch": 0, + "version": "2.1.0", + "release": "24.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsysfs-2.1.0-24.el8.s390x.rpm", + "checksum": "sha256:4cc7df5bb4b441f031309c30264551fa372dfee8571b54d2333aa81a44995194" + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.2.0", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libtalloc-2.2.0-7.el8.s390x.rpm", + "checksum": "sha256:7f6395bef45df58a8d21f3516d71198d932eb1d9188a26fe9e6bc8881ace0f62" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libtasn1-4.13-3.el8.s390x.rpm", + "checksum": "sha256:af53fe5838e16824b50a6f16a4cc5850d2406f054d7c961c813673fc27698042" + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.2", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libtdb-1.4.2-2.el8.s390x.rpm", + "checksum": "sha256:9b4729d703d21dfc5ab34e1d5a8eb2a280cf78359f627cda4f6a05054b71062e" + }, + { + "name": "libteam", + "epoch": 0, + "version": "1.29", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libteam-1.29-1.el8.s390x.rpm", + "checksum": "sha256:c660309209ba9f127661f47a3e098e4cabb74d4f3b08b52db9ce4321b54f3853" + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.0", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libtevent-0.10.0-2.el8.s390x.rpm", + "checksum": "sha256:1be9f6acd5fb99b2451f2b138ddcc90b0aae002a8ec5fb08062c32c473d221c0" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libtirpc-1.1.4-4.el8.s390x.rpm", + "checksum": "sha256:6269d41355f5813539f64613a06cda7c6b439ad8754db2f2727c0a2ca5713a1b" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libunistring-0.9.9-3.el8.s390x.rpm", + "checksum": "sha256:4b0e7c48e4162142940bb0387fec4e2f03cbad1ca06ee75532a515d8355dc865" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.22", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libusbx-1.0.22-1.el8.s390x.rpm", + "checksum": "sha256:36c8375deb752eae4df0760fe4634c9b5be9a1cdaee4a7bea7789004e892ae3c" + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "23.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libuser-0.62-23.el8.s390x.rpm", + "checksum": "sha256:c97b488edc305d08b9f78f896b008b71ad947447c81ff4b79c39715bcafe52c1" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libutempter-1.1.6-14.el8.s390x.rpm", + "checksum": "sha256:8260d48510e13ebc63a211a1e546b3bf243d1c03488e50744ec1f86cca7f2b9f" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "22.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libuuid-2.32.1-22.el8.s390x.rpm", + "checksum": "sha256:079483da2949b3bb56df6d265a700b5cc67d3ff1f945afa1c519b0d53772c199" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libverto-0.3.0-5.el8.s390x.rpm", + "checksum": "sha256:4b12fc6f2004fb899b0c06c462bee1932fef97112267e3784e8519ebb42ddede" + }, + { + "name": "libverto-libevent", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libverto-libevent-0.3.0-5.el8.s390x.rpm", + "checksum": "sha256:9653bda9a6270f52ee607bfe5675dcc9224cb5765c11f52d25b1add9a9a7757b" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libxcrypt-4.1.1-4.el8.s390x.rpm", + "checksum": "sha256:78f8ad277e8baeb9e14e9678b6f67786ab9eb3a33f98cd012c175fdb63806a31" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libxml2-2.9.7-7.el8.s390x.rpm", + "checksum": "sha256:35197371e37e599e683c8f5d91d1a5699191dfdc58cd67577caf64d60bfbe630" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libyaml-0.1.7-5.el8.s390x.rpm", + "checksum": "sha256:998276e153886e014ce37c429a0f22b76f3ca955c1c9ba89999ce3dface1cf10" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.2", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libzstd-1.4.2-2.el8.s390x.rpm", + "checksum": "sha256:ccd4a3fe16edc7f4a47983e191995b3308937b0483f84b141401285b867c8ef7" + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20191202", + "release": "97.gite8a0f4c9.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/linux-firmware-20191202-97.gite8a0f4c9.el8.noarch.rpm", + "checksum": "sha256:4c3ae6b8fe3174dabee8be4377fb1bee599227f6d6a88e04c34c733e8210077b" + }, + { + "name": "logrotate", + "epoch": 0, + "version": "3.14.0", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/logrotate-3.14.0-3.el8.s390x.rpm", + "checksum": "sha256:071b7ea81c6aa0609be6adae6df85a9a68d7e6b3514c6a32c23a0d7d7efc04d1" + }, + { + "name": "lshw", + "epoch": 0, + "version": "B.02.18", + "release": "23.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/lshw-B.02.18-23.el8.s390x.rpm", + "checksum": "sha256:c4e89fc7630ba5e74efb55f60b2e04ad9762cd8758829f994cb48b5f6e836ac1" + }, + { + "name": "lsscsi", + "epoch": 0, + "version": "0.30", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/lsscsi-0.30-1.el8.s390x.rpm", + "checksum": "sha256:03cf8cdeeaf80274436608b48a2c7451a9de386283074f58be28dec5b95b193b" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/lua-libs-5.3.4-11.el8.s390x.rpm", + "checksum": "sha256:fd05bb7abdb6087d9c0eaaf321d30bc11399dc74881374952c4a5215ea2c86e8" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.1.2", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/lz4-libs-1.8.1.2-4.el8.s390x.rpm", + "checksum": "sha256:63d72c31437b4813bf29bb4daee23292ca4dbd3aa7d1ce6fa4ebc168b244eeaa" + }, + { + "name": "lzo", + "epoch": 0, + "version": "2.08", + "release": "14.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/lzo-2.08-14.el8.s390x.rpm", + "checksum": "sha256:688aeafda1a81240a27f7f8697aa1217218fd7169adeefb5fab6bc5cc0c6414e" + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.7.6.1", + "release": "17.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/man-db-2.7.6.1-17.el8.s390x.rpm", + "checksum": "sha256:a1e3beb51e4255795a948c5e3f8b7f74945750b5422eac2054edb6fa6fbe9851" + }, + { + "name": "mozjs60", + "epoch": 0, + "version": "60.9.0", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/mozjs60-60.9.0-4.el8.s390x.rpm", + "checksum": "sha256:89f88f664dd68bad43769774ae58e3aabc8eb79d4d00a66271e117f0fd9357af" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/mpfr-3.1.6-1.el8.s390x.rpm", + "checksum": "sha256:0a3f52922caaa3b8213d350c3c955558d77fe31fe74f27fe58f178f93f381d56" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ncurses-6.1-7.20180224.el8.s390x.rpm", + "checksum": "sha256:ce09871bed0750f1f238db93099b9ae264c746496ae2d79ce654afb8f513f243" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ncurses-libs-6.1-7.20180224.el8.s390x.rpm", + "checksum": "sha256:7e1b890a9e063d4041fc924cb55067db762b32980d5e30fed11e4a7a3696d026" + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.51.20160912git.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/net-tools-2.0-0.51.20160912git.el8.s390x.rpm", + "checksum": "sha256:db17ac8a0794be4a3823d14daeb8a3a59be7bb0d6e7b3486107898dd604451cd" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/nettle-3.4.1-1.el8.s390x.rpm", + "checksum": "sha256:a66abcd7674f3356670ac394cbd3d1a34a2055259a1ccb45c02e91d190b44389" + }, + { + "name": "network-scripts", + "epoch": 0, + "version": "10.00.6", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/network-scripts-10.00.6-1.el8.s390x.rpm", + "checksum": "sha256:ef48355b0f8c051de6931674024dc472be1eddb4573da8d56a0668faf2352e0c" + }, + { + "name": "network-scripts-team", + "epoch": 0, + "version": "1.29", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/network-scripts-team-1.29-1.el8.s390x.rpm", + "checksum": "sha256:693bba9fe29e6dae362e4a2ffad6474f3e8934bea6778797657d332d872c48b2" + }, + { + "name": "newt", + "epoch": 0, + "version": "0.52.20", + "release": "11.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/newt-0.52.20-11.el8.s390x.rpm", + "checksum": "sha256:8b0245757c52f6934a1ce7671217835f1661dc4f52be75dd070975b080a033e5" + }, + { + "name": "nfs-utils", + "epoch": 1, + "version": "2.3.3", + "release": "31.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/nfs-utils-2.3.3-31.el8.s390x.rpm", + "checksum": "sha256:bc931e7980d562ae9660f792de94829382a70d6f2d787025685868ce11366e24" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/npth-1.5-4.el8.s390x.rpm", + "checksum": "sha256:e2e45f9ad3fa2d15b62b0d166975cf7c1ba94791cbfa305ab22086ceedff8867" + }, + { + "name": "numactl-libs", + "epoch": 0, + "version": "2.0.12", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/numactl-libs-2.0.12-9.el8.s390x.rpm", + "checksum": "sha256:286a8636c965433b8234c7780243732441b0650fe6633359a1b8950cd4e320a5" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "11.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openldap-2.4.46-11.el8.s390x.rpm", + "checksum": "sha256:bbcee6c77d908470de66c126d770790a199337a32db93d8f07bb705330c8d7ba" + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "4.el8_1", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssh-8.0p1-4.el8_1.s390x.rpm", + "checksum": "sha256:cbfc3d7643d281649042460c2ad77758cdd0e99536f3559ad7b96a4dcc5a10a6" + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "4.el8_1", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssh-clients-8.0p1-4.el8_1.s390x.rpm", + "checksum": "sha256:66f835821256add088054ba93b125755dd01218ba7ab7aa587d12bbff9578f56" + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "4.el8_1", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssh-server-8.0p1-4.el8_1.s390x.rpm", + "checksum": "sha256:4ff9e7b217f71f5d7c8e23632ac242e7bb3cf9b785865d233516185efad9ccb8" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1c", + "release": "15.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssl-1.1.1c-15.el8.s390x.rpm", + "checksum": "sha256:55f735aea8ee2737fa63ebf25d27258f93ad119733a3389bfb8ea37ce140725f" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1c", + "release": "15.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssl-libs-1.1.1c-15.el8.s390x.rpm", + "checksum": "sha256:6d55aefe2ee59069d22514604c47da81d2638d219fed6e7ea086b0ce64e8c2c0" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssl-pkcs11-0.4.10-2.el8.s390x.rpm", + "checksum": "sha256:18c6c5fbd998c4d642b2dba059ba5042288b2f566cb03b7b45541b556b95f29d" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/p11-kit-0.23.14-5.el8_0.s390x.rpm", + "checksum": "sha256:2b09ab68296b57a39b302498bdb837c8220e4de3aa1db7a197f23eb6b75cdacd" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/p11-kit-trust-0.23.14-5.el8_0.s390x.rpm", + "checksum": "sha256:f096312848673cfea1e1e448083321fe4599b3339a79dc2b9e3998fd2ea1bdf3" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "8.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/pam-1.3.1-8.el8.s390x.rpm", + "checksum": "sha256:f3693f0a1c9e9e1772795fd0a88d48d8a5d8fa7d6e1b2f0f4bc42d577ef54076" + }, + { + "name": "parted", + "epoch": 0, + "version": "3.2", + "release": "38.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/parted-3.2-38.el8.s390x.rpm", + "checksum": "sha256:fc944bebce84db486d6b9cdc99622fa443db0025287c0e73df3a25e2bfa1601d" + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/passwd-0.80-3.el8.s390x.rpm", + "checksum": "sha256:9cc49bcc7a2e6a2c16c33d2a0037f9e5a81ca94962b0ccff8b671ce486ced497" + }, + { + "name": "pciutils", + "epoch": 0, + "version": "3.5.6", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/pciutils-3.5.6-4.el8.s390x.rpm", + "checksum": "sha256:8325ec9dbe6e447921673aaac09f5fde6a29276857791058ab45c3eb56f0cbf6" + }, + { + "name": "pciutils-libs", + "epoch": 0, + "version": "3.5.6", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/pciutils-libs-3.5.6-4.el8.s390x.rpm", + "checksum": "sha256:32af9fde2c066dafb8ec318ec081ab767b2d85d8fdb656f3c72eb3718c2f6923" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/pcre-8.42-4.el8.s390x.rpm", + "checksum": "sha256:ec3e5c0bec8bcc4cf03d665e3d48cb0511bd5b9c879630563b29ddbd05bbbda0" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/pcre2-10.32-1.el8.s390x.rpm", + "checksum": "sha256:282edb776a576a2745fe7c3278c813e0f8997e27b0ace2507dcf14f50a5f9840" + }, + { + "name": "perl-Carp", + "epoch": 0, + "version": "1.42", + "release": "396.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Carp-1.42-396.el8.noarch.rpm", + "checksum": "sha256:77066ee655df356370b5d6d736d96835f5712f8e814dfc46b391ecaef9cdd19b" + }, + { + "name": "perl-Data-Dumper", + "epoch": 0, + "version": "2.167", + "release": "399.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Data-Dumper-2.167-399.el8.s390x.rpm", + "checksum": "sha256:684d8438fec907d780ad69dd6f7571f84d73fecefc66026b751935d463973bd8" + }, + { + "name": "perl-Encode", + "epoch": 4, + "version": "2.97", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Encode-2.97-3.el8.s390x.rpm", + "checksum": "sha256:d2c97f8d96d6f82e34975bfcf8c25606e0370a3def4da27d6aabc85a86f589ca" + }, + { + "name": "perl-Errno", + "epoch": 0, + "version": "1.28", + "release": "416.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Errno-1.28-416.el8.s390x.rpm", + "checksum": "sha256:49d92784895f84d5526661e685cd38d5df00d610d12b6850061199d672997348" + }, + { + "name": "perl-Exporter", + "epoch": 0, + "version": "5.72", + "release": "396.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Exporter-5.72-396.el8.noarch.rpm", + "checksum": "sha256:7c385e32c12b2639232f74a5dfdfef86daf82e5418bc292c5ab2640fb5cf46dc" + }, + { + "name": "perl-File-Path", + "epoch": 0, + "version": "2.15", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-File-Path-2.15-2.el8.noarch.rpm", + "checksum": "sha256:d906b13d5dd7a5595133e2a1af83ae17a1aae0c107579db723d21ec4371f3570" + }, + { + "name": "perl-File-Temp", + "epoch": 0, + "version": "0.230.600", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-File-Temp-0.230.600-1.el8.noarch.rpm", + "checksum": "sha256:537059f8a2598f7b364693aec72f67f1a954c525b381139f736d75edbf19aa12" + }, + { + "name": "perl-Getopt-Long", + "epoch": 1, + "version": "2.50", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Getopt-Long-2.50-4.el8.noarch.rpm", + "checksum": "sha256:2976f2c007ac981a70e414960cd7426f446ebc8a0bf8feae7a6ece06c63ffefb" + }, + { + "name": "perl-HTTP-Tiny", + "epoch": 0, + "version": "0.074", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-HTTP-Tiny-0.074-1.el8.noarch.rpm", + "checksum": "sha256:2ee0a45ec4832e276ee130d8440cd29de05b7fd3ca335fe4635499a8bcbdfb73" + }, + { + "name": "perl-IO", + "epoch": 0, + "version": "1.38", + "release": "416.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-IO-1.38-416.el8.s390x.rpm", + "checksum": "sha256:dbb28005c8f68d794af2d9b35a3fcc3294190678b8cc9475acbad8a25a8837d3" + }, + { + "name": "perl-MIME-Base64", + "epoch": 0, + "version": "3.15", + "release": "396.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-MIME-Base64-3.15-396.el8.s390x.rpm", + "checksum": "sha256:01273ffc5443535d055b7962e173a10028fd2f128124480f587f8f9d7f4d4688" + }, + { + "name": "perl-PathTools", + "epoch": 0, + "version": "3.74", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-PathTools-3.74-1.el8.s390x.rpm", + "checksum": "sha256:05bd495695df8a78448ff0d2f2df0480f0bc49c9b7065bc2b1ceba41b42f1772" + }, + { + "name": "perl-Pod-Escapes", + "epoch": 1, + "version": "1.07", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Pod-Escapes-1.07-395.el8.noarch.rpm", + "checksum": "sha256:21b1497d132a52c93129700d58c44ba8c36af8da1bbd23fb408c00c3117c1012" + }, + { + "name": "perl-Pod-Perldoc", + "epoch": 0, + "version": "3.28", + "release": "396.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Pod-Perldoc-3.28-396.el8.noarch.rpm", + "checksum": "sha256:a660c78f704d3d22458c71d86605f51d62e3cc5306d22d66bb1df86c7274ad6c" + }, + { + "name": "perl-Pod-Simple", + "epoch": 1, + "version": "3.35", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Pod-Simple-3.35-395.el8.noarch.rpm", + "checksum": "sha256:e17077c8803f792c02570b2768510b8e4955bd0ae68ab4930e7060fcbb3793f6" + }, + { + "name": "perl-Pod-Usage", + "epoch": 4, + "version": "1.69", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Pod-Usage-1.69-395.el8.noarch.rpm", + "checksum": "sha256:f727e7919c662ae990d02ad2a6299ed3161ad7522587c11441477aae03549f06" + }, + { + "name": "perl-Scalar-List-Utils", + "epoch": 3, + "version": "1.49", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Scalar-List-Utils-1.49-2.el8.s390x.rpm", + "checksum": "sha256:475a66955c1749ba4ea13b5f4935dd13ac322c516961a512386496fe45d04472" + }, + { + "name": "perl-Socket", + "epoch": 4, + "version": "2.027", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Socket-2.027-3.el8.s390x.rpm", + "checksum": "sha256:9ee041eadd639ab6d9187f164c7f7b7954bdb4bf5f228555176207528e84fb1f" + }, + { + "name": "perl-Storable", + "epoch": 1, + "version": "3.11", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Storable-3.11-3.el8.s390x.rpm", + "checksum": "sha256:d6a82133f2ab89874788c141b10ed1f090689cd823a7559ed9197403f4000506" + }, + { + "name": "perl-Term-ANSIColor", + "epoch": 0, + "version": "4.06", + "release": "396.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Term-ANSIColor-4.06-396.el8.noarch.rpm", + "checksum": "sha256:657efda777af4b0d63ab127a72f3373c0d8a18f3b81e912b24a5fbdc9927dc1e" + }, + { + "name": "perl-Term-Cap", + "epoch": 0, + "version": "1.17", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Term-Cap-1.17-395.el8.noarch.rpm", + "checksum": "sha256:41c0f3ea7c7c2f21b5ccb0432db2c1b916ae34691a57f0b7bcb5a09dc7d8fafc" + }, + { + "name": "perl-Text-ParseWords", + "epoch": 0, + "version": "3.30", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Text-ParseWords-3.30-395.el8.noarch.rpm", + "checksum": "sha256:25ff1ab94430493bde65da6a800bb2638edc64dca38971eba2c798475cc18b97" + }, + { + "name": "perl-Text-Tabs+Wrap", + "epoch": 0, + "version": "2013.0523", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Text-Tabs+Wrap-2013.0523-395.el8.noarch.rpm", + "checksum": "sha256:7e078a375d2636b705e1734be79a8b76a306f8578066c901713663e367925bc7" + }, + { + "name": "perl-Time-Local", + "epoch": 1, + "version": "1.280", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Time-Local-1.280-1.el8.noarch.rpm", + "checksum": "sha256:4019e427bf69ed70e3a3cdfdcdd6771bcee1484f8e83bb69539a9e6530baddf1" + }, + { + "name": "perl-Unicode-Normalize", + "epoch": 0, + "version": "1.25", + "release": "396.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Unicode-Normalize-1.25-396.el8.s390x.rpm", + "checksum": "sha256:7c37700693bc781506a06eafc18ab1cb4a7f6b7559f0595c97f60a4f88390233" + }, + { + "name": "perl-constant", + "epoch": 0, + "version": "1.33", + "release": "396.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-constant-1.33-396.el8.noarch.rpm", + "checksum": "sha256:36798d9e979c9976ed66e23b3c8bda6250c4e80e411afe55c3942291cb4cb4ce" + }, + { + "name": "perl-interpreter", + "epoch": 4, + "version": "5.26.3", + "release": "416.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-interpreter-5.26.3-416.el8.s390x.rpm", + "checksum": "sha256:bcc032463153f59b2b58fa3ef73c3bf871b9e28ba1c0df09b8a5df80ce9af559" + }, + { + "name": "perl-libs", + "epoch": 4, + "version": "5.26.3", + "release": "416.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-libs-5.26.3-416.el8.s390x.rpm", + "checksum": "sha256:90cad0b0149c8e21613247039af49e91e138aa5e3e7d158022cfd274f349b123" + }, + { + "name": "perl-macros", + "epoch": 4, + "version": "5.26.3", + "release": "416.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-macros-5.26.3-416.el8.s390x.rpm", + "checksum": "sha256:186a83e25f1758b3efaf84330ce0ff548c9878d7f4590fcfbbf9f066abc095e0" + }, + { + "name": "perl-parent", + "epoch": 1, + "version": "0.237", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-parent-0.237-1.el8.noarch.rpm", + "checksum": "sha256:abe578c5dee7c306812e241c77ebc8ba4b54f90df8e65c56f8f202ba6e0d7183" + }, + { + "name": "perl-podlators", + "epoch": 0, + "version": "4.11", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-podlators-4.11-1.el8.noarch.rpm", + "checksum": "sha256:4811ab95c1d50ef7380e2c5937ae4490f8e28f56cf787c189437d1709e4423fb" + }, + { + "name": "perl-threads", + "epoch": 1, + "version": "2.21", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-threads-2.21-2.el8.s390x.rpm", + "checksum": "sha256:fdbce603c9cb7792728413638e4d5591f0d094a361e07ff4fe0b7014a61b0104" + }, + { + "name": "perl-threads-shared", + "epoch": 0, + "version": "1.58", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-threads-shared-1.58-2.el8.s390x.rpm", + "checksum": "sha256:2cd240f59d6570295931d54dfb392604f524572cfe252b1b1c8cec7793736e4d" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/pigz-2.4-4.el8.s390x.rpm", + "checksum": "sha256:d97d6ef57cdd8731dc3cef774bb2bbdc0a506abf0e32cd58c49619bdf983733c" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "23.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/platform-python-3.6.8-23.el8.s390x.rpm", + "checksum": "sha256:66760eb369153a4c41b1837d57a78d9a2f85f72ad567c8ad7ee3d5a89ef6a6cb" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "16.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/platform-python-pip-9.0.3-16.el8.noarch.rpm", + "checksum": "sha256:e57e36570f635b8df5dfcef61d40bb023ba5dd05a8b3109d6d671d956fcff69e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/platform-python-setuptools-39.2.0-5.el8.noarch.rpm", + "checksum": "sha256:7729a8f9623a6fe0f94428dc8fbb5bb2349659529ecfce4a5f1854e834108614" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/policycoreutils-2.9-9.el8.s390x.rpm", + "checksum": "sha256:5baa177e85af635cf7e1726e6ec558a6b44ebccbe84b13a1fa8a80f6240a19d2" + }, + { + "name": "policycoreutils-python-utils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/policycoreutils-python-utils-2.9-9.el8.noarch.rpm", + "checksum": "sha256:b4fb3d8b0255a5ba9456b61e4f479f2f8355d171263508bbe869af677015fd97" + }, + { + "name": "polkit", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/polkit-0.115-11.el8.s390x.rpm", + "checksum": "sha256:28f0e364321eb824fd9bd1d104f0684d7a94dd0e7b07cf9c2b0ca645253baada" + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/polkit-libs-0.115-11.el8.s390x.rpm", + "checksum": "sha256:5728ca9555dffa66592456e39c45afb5848c2307faaccaf8b936ee45d32f94cc" + }, + { + "name": "polkit-pkla-compat", + "epoch": 0, + "version": "0.1", + "release": "12.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/polkit-pkla-compat-0.1-12.el8.s390x.rpm", + "checksum": "sha256:e085bf5e88381fe9a08cdf919d72843c5d267238e3f7dce7858c6f88d24a1c83" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/popt-1.16-14.el8.s390x.rpm", + "checksum": "sha256:07f8f24c26ec3b1716c37c9b212f4f3397dcb3eb349ef5fe09bb444654fe0033" + }, + { + "name": "prefixdevname", + "epoch": 0, + "version": "0.1.0", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/prefixdevname-0.1.0-6.el8.s390x.rpm", + "checksum": "sha256:ea8e98525aaeb63aea1e85a98ea93207cb2a88c82e921047e56f50a13b74a4fa" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/procps-ng-3.3.15-1.el8.s390x.rpm", + "checksum": "sha256:bbf1c85af70c001f23f7a47dbc604fa155765446aa16e4403ec12af21cd1ab42" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-asn1crypto", + "epoch": 0, + "version": "0.24.0", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-asn1crypto-0.24.0-3.el8.noarch.rpm", + "checksum": "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34" + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-audit-3.0-0.17.20191104git1c2f876.el8.s390x.rpm", + "checksum": "sha256:46d7ba98b995b454d3ba6debad5b15e5af168420fd3a1bc8d6d3114092be9c66" + }, + { + "name": "python3-cffi", + "epoch": 0, + "version": "1.11.5", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-cffi-1.11.5-5.el8.s390x.rpm", + "checksum": "sha256:525a1a3494fe589513f191ca631f149b80db6107cc2472f20bfc5974d84136ee" + }, + { + "name": "python3-chardet", + "epoch": 0, + "version": "3.0.4", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-chardet-3.0.4-7.el8.noarch.rpm", + "checksum": "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786" + }, + { + "name": "python3-configobj", + "epoch": 0, + "version": "5.0.6", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-configobj-5.0.6-11.el8.noarch.rpm", + "checksum": "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367" + }, + { + "name": "python3-cryptography", + "epoch": 0, + "version": "2.3", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-cryptography-2.3-3.el8.s390x.rpm", + "checksum": "sha256:242cf344a4a0f0439c325d0d8e58cc7d35a31157db4092bfc27c5db815ea62ea" + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.6.1", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm", + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.4", + "release": "15.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-dbus-1.2.4-15.el8.s390x.rpm", + "checksum": "sha256:bb1d56c02d161cfb07a9f31d8f3a73f93e75e5149c6df7b5d05173d6a5d3883f" + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.2.1", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm", + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.17", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-dnf-4.2.17-6.el8.noarch.rpm", + "checksum": "sha256:83cfd01b18bd91f5ab60a882cd68314afc6eb091538ec840d3cb50d317182344" + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.12", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-dnf-plugins-core-4.0.12-3.el8.noarch.rpm", + "checksum": "sha256:466ba431d32e34a1b5effe7b885c73e5c753e007b7ad8e9b8cd96e0b427f96da" + }, + { + "name": "python3-ethtool", + "epoch": 0, + "version": "0.14", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-ethtool-0.14-3.el8.s390x.rpm", + "checksum": "sha256:56081a14fe517995972aaea890c246cf35a6439cc56a16769d913da670111b03" + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.28.3", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-gobject-base-3.28.3-1.el8.s390x.rpm", + "checksum": "sha256:3700bd235900bf7c80ac7dbcb58d56a5b440fc6aa9c1217be3de5e9bc5f99195" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.10.0", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-gpg-1.10.0-6.el8.s390x.rpm", + "checksum": "sha256:a53e65798fdd2968ada806d34a248bde08dfe8d0e1164ebd272a96881483c5ed" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.39.1", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-hawkey-0.39.1-5.el8.s390x.rpm", + "checksum": "sha256:8da37cb093752a1775c46cb71c0db55db3c3079d80bc1c5c7544d0c411bfac9b" + }, + { + "name": "python3-idna", + "epoch": 0, + "version": "2.5", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-idna-2.5-5.el8.noarch.rpm", + "checksum": "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20" + }, + { + "name": "python3-iniparse", + "epoch": 0, + "version": "0.4", + "release": "31.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm", + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "name": "python3-inotify", + "epoch": 0, + "version": "0.9.6", + "release": "13.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm", + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "name": "python3-jwt", + "epoch": 0, + "version": "1.6.1", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-jwt-1.6.1-2.el8.noarch.rpm", + "checksum": "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-libcomps-0.1.11-4.el8.s390x.rpm", + "checksum": "sha256:f3b45fd08cba7c338a8103d236ba4fd2c9bbe36e6d4ef96ddcb6a722d4cf529e" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.39.1", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-libdnf-0.39.1-5.el8.s390x.rpm", + "checksum": "sha256:167a35f5dd48fb4a632cf00ea21337689a1b78e5bb36254a2a9c6f5196b98d88" + }, + { + "name": "python3-librepo", + "epoch": 0, + "version": "1.11.0", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-librepo-1.11.0-2.el8.s390x.rpm", + "checksum": "sha256:1582141ead8ddbe08290ed28c02274c58d2345fbd5263918f197d5b64503e1c9" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "23.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-libs-3.6.8-23.el8.s390x.rpm", + "checksum": "sha256:268928928fa5d36b3b63387a17d91824924116fd3e3ce4016b9339d38e66b722" + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-libselinux-2.9-3.el8.s390x.rpm", + "checksum": "sha256:86531929ef43081d9aaa4bdd97b6bff703f0031f7dcb4dc9e0979e4af1abf691" + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "2.9", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-libsemanage-2.9-2.el8.s390x.rpm", + "checksum": "sha256:a1d824293cfc2883d27e25d94d0a9fb419e5e32ccf1566cee038157e35a0d230" + }, + { + "name": "python3-libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-libxml2-2.9.7-7.el8.s390x.rpm", + "checksum": "sha256:f8fb64d872132bbe7689bfd7ac362d9657e426887f8005fd352a3312b1485e47" + }, + { + "name": "python3-linux-procfs", + "epoch": 0, + "version": "0.6", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-linux-procfs-0.6-7.el8.noarch.rpm", + "checksum": "sha256:54abb15c97a50d8c48cb2d6a900e895f98279379af8469eeed319cb13e23e799" + }, + { + "name": "python3-magic", + "epoch": 0, + "version": "5.33", + "release": "13.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-magic-5.33-13.el8.noarch.rpm", + "checksum": "sha256:8239d6e7b8600e9b8876f6770ad0981b981cb5638b4a4a8d0ff352815dc9df59" + }, + { + "name": "python3-oauthlib", + "epoch": 0, + "version": "2.1.0", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-oauthlib-2.1.0-1.el8.noarch.rpm", + "checksum": "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6" + }, + { + "name": "python3-perf", + "epoch": 0, + "version": "4.18.0", + "release": "193.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-perf-4.18.0-193.el8.s390x.rpm", + "checksum": "sha256:9c246e12531d946d28959c3513ba74cbf4c15ccd69c11aaa54e6e399d05074f8" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "16.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-pip-wheel-9.0.3-16.el8.noarch.rpm", + "checksum": "sha256:34f9e9b309a8c6beabd1969ed3b0a685253eb8dd3e2d22d7ef2045f6796cd908" + }, + { + "name": "python3-ply", + "epoch": 0, + "version": "3.9", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-ply-3.9-8.el8.noarch.rpm", + "checksum": "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9" + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-policycoreutils-2.9-9.el8.noarch.rpm", + "checksum": "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42" + }, + { + "name": "python3-pycparser", + "epoch": 0, + "version": "2.14", + "release": "14.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-pycparser-2.14-14.el8.noarch.rpm", + "checksum": "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf" + }, + { + "name": "python3-pysocks", + "epoch": 0, + "version": "1.6.8", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-pysocks-1.6.8-3.el8.noarch.rpm", + "checksum": "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280" + }, + { + "name": "python3-pyudev", + "epoch": 0, + "version": "0.21.0", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-pyudev-0.21.0-7.el8.noarch.rpm", + "checksum": "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde" + }, + { + "name": "python3-pyyaml", + "epoch": 0, + "version": "3.12", + "release": "12.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-pyyaml-3.12-12.el8.s390x.rpm", + "checksum": "sha256:a8ab9f2d13893fb30deecbb4d06bf33ef77fca46fbe340c12cad9bf7040371d7" + }, + { + "name": "python3-requests", + "epoch": 0, + "version": "2.20.0", + "release": "2.1.el8_1", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-requests-2.20.0-2.1.el8_1.noarch.rpm", + "checksum": "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.2", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-rpm-4.14.2-37.el8.s390x.rpm", + "checksum": "sha256:2aa79d4a09d234c08afc877e292e68244835e447348e85ebee431b0be1fe5104" + }, + { + "name": "python3-schedutils", + "epoch": 0, + "version": "0.6", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-schedutils-0.6-6.el8.s390x.rpm", + "checksum": "sha256:4d39add65cf7aecdb430a490a9119c5c098451c2d9c296e35c207136b6b300c5" + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.2.2", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-setools-4.2.2-2.el8.s390x.rpm", + "checksum": "sha256:e574bddfe80726668fdf0deff62369342858a862a4ed1f2332bbbcb74a497470" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-setuptools-wheel-39.2.0-5.el8.noarch.rpm", + "checksum": "sha256:813494dff0f52c8eb8105405b961d47ec32ea7ffc037a00c3bff568086b8ccf9" + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.11.0", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm", + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "name": "python3-slip", + "epoch": 0, + "version": "0.6.4", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-slip-0.6.4-11.el8.noarch.rpm", + "checksum": "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb" + }, + { + "name": "python3-slip-dbus", + "epoch": 0, + "version": "0.6.4", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-slip-dbus-0.6.4-11.el8.noarch.rpm", + "checksum": "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d" + }, + { + "name": "python3-subscription-manager-rhsm", + "epoch": 0, + "version": "1.26.16", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-subscription-manager-rhsm-1.26.16-1.el8.s390x.rpm", + "checksum": "sha256:1ee67a3650c2d0274c472bcb8bb261c3d508e44c856f6efeb19bfc684030766d" + }, + { + "name": "python3-syspurpose", + "epoch": 0, + "version": "1.26.16", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-syspurpose-1.26.16-1.el8.s390x.rpm", + "checksum": "sha256:54ecab8ab8b08cb843ed22a939029fd73ff5ba6af16deaf01640a176cf780526" + }, + { + "name": "python3-urllib3", + "epoch": 0, + "version": "1.24.2", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-urllib3-1.24.2-4.el8.noarch.rpm", + "checksum": "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53" + }, + { + "name": "quota", + "epoch": 1, + "version": "4.04", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/quota-4.04-10.el8.s390x.rpm", + "checksum": "sha256:d9cf79223d9dd3ccace21bd73149b1f9618bbdd890c7845c2c68c237c74b59fd" + }, + { + "name": "quota-nls", + "epoch": 1, + "version": "4.04", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/quota-nls-4.04-10.el8.noarch.rpm", + "checksum": "sha256:adab024896eecd08250eb7a7a5e1686df0b945fd1604543877e230163c510f24" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/readline-7.0-10.el8.s390x.rpm", + "checksum": "sha256:3e1977c9b662e295f67e2114694d4a11d87215346cd7836c8fe8b9cec050f357" + }, + { + "name": "redhat-logos", + "epoch": 0, + "version": "81.1", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/redhat-logos-81.1-1.el8.s390x.rpm", + "checksum": "sha256:3ce2c638dd29c6d041374a746f04708e2f8aadd0831795b1d98be1f72d59d26a" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.2", + "release": "1.0.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/redhat-release-8.2-1.0.el8.s390x.rpm", + "checksum": "sha256:d6afe4abbdf882ed7f15dc9ede23040494b1cdc57981a0d88b6d96b91da471f0" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.2", + "release": "1.0.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/redhat-release-eula-8.2-1.0.el8.s390x.rpm", + "checksum": "sha256:6c144a883629536cf8eb7eccc64389f536cc89ef806b06b4a5de18d1746eecf2" + }, + { + "name": "rhsm-icons", + "epoch": 0, + "version": "1.26.16", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rhsm-icons-1.26.16-1.el8.noarch.rpm", + "checksum": "sha256:b61e8abd760ba36a0ef10defd47d60e63d7fda3d1ba8bc01700d4957e49748b9" + }, + { + "name": "rng-tools", + "epoch": 0, + "version": "6.8", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rng-tools-6.8-3.el8.s390x.rpm", + "checksum": "sha256:d3d5a6c8b906c6f59ed6a286dd5f34a0704e05f0929dd7bac4f1c3b692ccecae" + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "22.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rootfiles-8.1-22.el8.noarch.rpm", + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "name": "rpcbind", + "epoch": 0, + "version": "1.2.5", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpcbind-1.2.5-7.el8.s390x.rpm", + "checksum": "sha256:fac3dbed5e4adb8680b835eb6e72aac805134dddfea7b0151f220e92442622a3" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.2", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-4.14.2-37.el8.s390x.rpm", + "checksum": "sha256:a00c72bd891d02b1e0a903fb9508d1a1aa77a3d95240b058dd8a7662173730b7" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.2", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-build-libs-4.14.2-37.el8.s390x.rpm", + "checksum": "sha256:e6d780ed12021cb842de269c55a238649f6f0f76a08f5fde0db2463bdb15e067" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.2", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-libs-4.14.2-37.el8.s390x.rpm", + "checksum": "sha256:8d09980b1baa907fbb3ec8a3d8907912a867bcb0c0bf702d9b3c8601874fe112" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.2", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-plugin-selinux-4.14.2-37.el8.s390x.rpm", + "checksum": "sha256:96172fbae0c8f413d09af511f770b08a8e26495b8ab3dfd9c3eb279257621ffd" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.2", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-plugin-systemd-inhibit-4.14.2-37.el8.s390x.rpm", + "checksum": "sha256:4291406b201a35d5baaa28d2a0c5b1c218ffb7d981d0ad25532a7d36b672628e" + }, + { + "name": "rsync", + "epoch": 0, + "version": "3.1.3", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rsync-3.1.3-7.el8.s390x.rpm", + "checksum": "sha256:6ae2039179cb1d8485af2180817c26765aab781f17fc97f8b6e7239033f8bfb7" + }, + { + "name": "s390utils-base", + "epoch": 2, + "version": "2.6.0", + "release": "28.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/s390utils-base-2.6.0-28.el8.s390x.rpm", + "checksum": "sha256:851d321970030ef2a2444c50a959daf4e63b814acc142be821eea560c404ab45" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sed-4.5-1.el8.s390x.rpm", + "checksum": "sha256:75cb8fa5f08004dd63e6647cd699bd011b9118a1bc9d6ee41c0eb772391db077" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "41.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/selinux-policy-3.14.3-41.el8.noarch.rpm", + "checksum": "sha256:ed03ae7d72ac4813b40490dfa0fb27fbb6828142d5507dc2fdcee636c4d19125" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "41.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/selinux-policy-targeted-3.14.3-41.el8.noarch.rpm", + "checksum": "sha256:ae2372e9110dfbf53c83bc7f78f867edc3cdb4044d62f1e63174cc3cf2d9e06e" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/setup-2.12.2-5.el8.noarch.rpm", + "checksum": "sha256:d3e95570de2bb3b418df9f883b22eae22086d60c437d9174c8e6bae71d0b7c11" + }, + { + "name": "sg3_utils", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sg3_utils-1.44-5.el8.s390x.rpm", + "checksum": "sha256:a8dadc6e4ba668ee14fda07fecd8879c8c7acdfd9b2effeb829b541d1de0d7a2" + }, + { + "name": "sg3_utils-libs", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sg3_utils-libs-1.44-5.el8.s390x.rpm", + "checksum": "sha256:5fb154dd6b3ae091297ce6c99576a1203451b9fedfd4d3825f1d0ed60ef9c4f6" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "8.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/shadow-utils-4.6-8.el8.s390x.rpm", + "checksum": "sha256:3092ab7fc56e099d2f05167fb582076a29b1c1a2512e4fbabfd3f9000431a66b" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/shared-mime-info-1.9-3.el8.s390x.rpm", + "checksum": "sha256:546ebad5183085f345385a483d5bfea61bb772ecf7071a339d1db614188e69cc" + }, + { + "name": "slang", + "epoch": 0, + "version": "2.3.2", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/slang-2.3.2-3.el8.s390x.rpm", + "checksum": "sha256:625c189990e536c608651824f097a8b68d2b025bef2504bf2d4b006d652bec5b" + }, + { + "name": "snappy", + "epoch": 0, + "version": "1.1.7", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/snappy-1.1.7-5.el8.s390x.rpm", + "checksum": "sha256:8f4f877b2758c07f609f78e1c445a9b41eadb3592e376592a57ab6b524c842e9" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sqlite-libs-3.26.0-6.el8.s390x.rpm", + "checksum": "sha256:bb54663316f683ffb7732f290d72b7c76a2b42e691a9d5a89869831b3982e41b" + }, + { + "name": "squashfs-tools", + "epoch": 0, + "version": "4.3", + "release": "19.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/squashfs-tools-4.3-19.el8.s390x.rpm", + "checksum": "sha256:f89513dcf5d916665ff15dcc9f55ced1459e767a2874f7a7316832d40c404c2f" + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.2.3", + "release": "20.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sssd-client-2.2.3-20.el8.s390x.rpm", + "checksum": "sha256:e88932488a9108e2ee373dffe9fbad3f0108c76c0b8f0aa781fc5df9c189d944" + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.2.3", + "release": "20.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sssd-common-2.2.3-20.el8.s390x.rpm", + "checksum": "sha256:9bdd9dd41f11769374001c7782c2dc3eb3794d05622f4d2a6546a64757b48a6a" + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.2.3", + "release": "20.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sssd-kcm-2.2.3-20.el8.s390x.rpm", + "checksum": "sha256:5dd05dbb90d9d7436b6c78863872c94c5639124792fd34221c0727ca1b23f1d2" + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.2.3", + "release": "20.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sssd-nfs-idmap-2.2.3-20.el8.s390x.rpm", + "checksum": "sha256:333c9c48b7fcb74ee4ec16dbb41acbb3fe388dc18090e8b2a8ac412a820b1944" + }, + { + "name": "subscription-manager", + "epoch": 0, + "version": "1.26.16", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/subscription-manager-1.26.16-1.el8.s390x.rpm", + "checksum": "sha256:4cee6b88b41b31288938e70ceed50493f3d586121ec61ff553e4500fc25a81c6" + }, + { + "name": "subscription-manager-cockpit", + "epoch": 0, + "version": "1.26.16", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/subscription-manager-cockpit-1.26.16-1.el8.noarch.rpm", + "checksum": "sha256:822ece218fa213adc9c2cde39c09d7ee1dafc12e25af025a457f175b24b7eda7" + }, + { + "name": "subscription-manager-rhsm-certificates", + "epoch": 0, + "version": "1.26.16", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/subscription-manager-rhsm-certificates-1.26.16-1.el8.s390x.rpm", + "checksum": "sha256:f444e3ca2fdcccbf49abf3848b7d79dd22193e704167d23d11bdc713126c6cf0" + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.8.29", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sudo-1.8.29-5.el8.s390x.rpm", + "checksum": "sha256:01740c9fbfd4b6918cfd9cb4b9a536328510b296404edb4028ad4480f1099980" + }, + { + "name": "sysfsutils", + "epoch": 0, + "version": "2.1.0", + "release": "24.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sysfsutils-2.1.0-24.el8.s390x.rpm", + "checksum": "sha256:b2841b2cb926e7f529f604e2462304dcd0c63ff08f892eb573fb14029ad6511f" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "29.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/systemd-239-29.el8.s390x.rpm", + "checksum": "sha256:ee7f3a5b1494773ff9003c831f724a09213cac9f160fd2a764d13ea9b1a3921b" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "29.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/systemd-libs-239-29.el8.s390x.rpm", + "checksum": "sha256:31951582ea375a15365e9a42ec6c0cd8a61e6f593e00f0da013d79ac967878b7" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "29.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/systemd-pam-239-29.el8.s390x.rpm", + "checksum": "sha256:1a47d3d89a38ce0caf4136f981e06c643bfb19f86ff014d4db8b923340612692" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "29.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/systemd-udev-239-29.el8.s390x.rpm", + "checksum": "sha256:af61087b5245e3e59bac54d1f1b886c452e82188db7118f04d0a7055d61cb5db" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/tar-1.30-4.el8.s390x.rpm", + "checksum": "sha256:1af8f3ff12416a7a7b105840f53ada599e6e276ed08f2dea803ad0b21f962968" + }, + { + "name": "teamd", + "epoch": 0, + "version": "1.29", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/teamd-1.29-1.el8.s390x.rpm", + "checksum": "sha256:7b6a20549cfbb7a38f7dc021fa832dc021476c83ca3b96963074da8bddbc4430" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/trousers-0.3.14-4.el8.s390x.rpm", + "checksum": "sha256:4c7e176a4024f519401c2b03fd69c23375714f80b5870894fccbb2abe4d0c724" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/trousers-lib-0.3.14-4.el8.s390x.rpm", + "checksum": "sha256:806670e01e158d45919b7c9a5ff13153b9e2e7516d18c8388bf36b493148380e" + }, + { + "name": "tuned", + "epoch": 0, + "version": "2.13.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/tuned-2.13.0-6.el8.noarch.rpm", + "checksum": "sha256:8c3f197a556bb91ba76701f286a63c9c54d8d2396b3db94425087497f51624fe" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/tzdata-2019c-1.el8.noarch.rpm", + "checksum": "sha256:4c90fe6c1bb01242a10c5d9e1655a0c27521febeffab450d33d88b4b11a8fa95" + }, + { + "name": "usermode", + "epoch": 0, + "version": "1.113", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/usermode-1.113-1.el8.s390x.rpm", + "checksum": "sha256:e57979c45d14172f06d353e70c6fb5402319350bfe25b45ecd95339cf822ecc2" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "22.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/util-linux-2.32.1-22.el8.s390x.rpm", + "checksum": "sha256:dd29e9ec3dac16997fa4718edc3dd016fc6bd070fb0ae17c58c064ff20aa5b03" + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.0.1763", + "release": "13.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/vim-minimal-8.0.1763-13.el8.s390x.rpm", + "checksum": "sha256:08a6521ad991a23812bfe457fcdd03de655eb71c4f5dc580fa8c291cbb4c8599" + }, + { + "name": "virt-what", + "epoch": 0, + "version": "1.18", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/virt-what-1.18-6.el8.s390x.rpm", + "checksum": "sha256:1b1b72c2a65cd75c042700b48a534c20072b5174f8010c5e0aff0a54c8397938" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/which-2.21-12.el8.s390x.rpm", + "checksum": "sha256:10a17648fb1e8e94d70ffe93155760ac0d72fa4739beb3b165b702c0bd120be4" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/xfsprogs-5.0.0-2.el8.s390x.rpm", + "checksum": "sha256:ccde203ded5f1bdc73301468985fbab7c4dc2f707a3565c6197261ac6f7361d3" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/xz-5.2.4-3.el8.s390x.rpm", + "checksum": "sha256:d05b84d3b2126b91834bd388af680b10a73595363d138cd05920eb4ca8c0f03e" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/xz-libs-5.2.4-3.el8.s390x.rpm", + "checksum": "sha256:2a45920a9540e5057920f7c987d3daf910240a6d1ee63d1fa80fcdf3cee4fd71" + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.17", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/yum-4.2.17-6.el8.noarch.rpm", + "checksum": "sha256:372fd5ea8e1576b20b447ed77d7abb4b49c63b684731ea40940fb871207180cb" + }, + { + "name": "yum-utils", + "epoch": 0, + "version": "4.0.12", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/yum-utils-4.0.12-3.el8.noarch.rpm", + "checksum": "sha256:e8b861558d5e316537d449d911909dd9623a31212ef7bd700dec3b0ad6fd7c04" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "13.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/zlib-1.2.11-13.el8.s390x.rpm", + "checksum": "sha256:dccd8b3ffb8a9015afe1d4cfa65df84589ede6582845899515d176695b457599" + }, + { + "name": "PackageKit", + "epoch": 0, + "version": "1.1.12", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/PackageKit-1.1.12-4.el8.s390x.rpm", + "checksum": "sha256:ce0a6223eb830322bfcb8610b6e253b91958e4b3a8767a0cbe92ac803f50e8ce" + }, + { + "name": "PackageKit-glib", + "epoch": 0, + "version": "1.1.12", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/PackageKit-glib-1.1.12-4.el8.s390x.rpm", + "checksum": "sha256:1ca52cdabb94a8efd57626d4c38061b029e64b042b01b07a6cbad19bde6e86d4" + }, + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.0.25", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/abattis-cantarell-fonts-0.0.25-4.el8.noarch.rpm", + "checksum": "sha256:1594afba86593ec614299ef6af255755a98ea55a34a72a22fdc9d80a040be39d" + }, + { + "name": "cairo", + "epoch": 0, + "version": "1.15.12", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/cairo-1.15.12-3.el8.s390x.rpm", + "checksum": "sha256:344d35ca1adc8e4c5562c9936113807f088fd6b27aa4095d17a846745c2b3c98" + }, + { + "name": "cairo-gobject", + "epoch": 0, + "version": "1.15.12", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/cairo-gobject-1.15.12-3.el8.s390x.rpm", + "checksum": "sha256:5eb62b94a6f31bde8e6d571fb4f45e98fc93b2a2d10543d28afb9e275088951d" + }, + { + "name": "cloud-init", + "epoch": 0, + "version": "18.5", + "release": "12.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/cloud-init-18.5-12.el8.noarch.rpm", + "checksum": "sha256:cd14c516e074538510355237b57a3653bad90d7389371ae2e8d5a363e2c6afe9" + }, + { + "name": "cloud-utils-growpart", + "epoch": 0, + "version": "0.29", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/cloud-utils-growpart-0.29-3.el8.noarch.rpm", + "checksum": "sha256:b820452054d29635fe363c7753905aee1044c668e0357094e3fffec948f98c02" + }, + { + "name": "dnf-plugin-spacewalk", + "epoch": 0, + "version": "2.8.5", + "release": "11.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.178", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/elfutils-debuginfod-client-0.178-7.el8.s390x.rpm", + "checksum": "sha256:3717331bb0807804e392afc98dd1c9cba30fdf2464aaf8869598d483313f9606" + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm", + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm", + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "name": "insights-client", + "epoch": 0, + "version": "3.0.13", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/insights-client-3.0.13-1.el8.noarch.rpm", + "checksum": "sha256:4df56916fd99c60c30af766bb84e43202a986f30a97f44bb6f8e6718dc34c372" + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.8", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libX11-1.6.8-3.el8.s390x.rpm", + "checksum": "sha256:41e5390a8ea6cc1524155071675f89e4e3d8b681ce76c4d7369dbb7f075ff31f" + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.8", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libX11-common-1.6.8-3.el8.noarch.rpm", + "checksum": "sha256:593d4df5b8de12ed0ec5a0935cb0bd966e27a631aa0806250ba9f67092ad737f" + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.8", + "release": "13.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libXau-1.0.8-13.el8.s390x.rpm", + "checksum": "sha256:c2202b679225da88f0edb87e2a51e5c3b55651457c6d1aebe51a77bed797e8c9" + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.3", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libXext-1.3.3-9.el8.s390x.rpm", + "checksum": "sha256:624a0bdcc56c2c5d02bb495b80fdfcd934cf8b6145710dc82ac65441dcc2c0a1" + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libXrender-0.9.10-7.el8.s390x.rpm", + "checksum": "sha256:cc5a2d1f5209e14cbb310a77cf13537f2859ba118c4d03ac882621d015825b7d" + }, + { + "name": "libestr", + "epoch": 0, + "version": "0.1.10", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libestr-0.1.10-1.el8.s390x.rpm", + "checksum": "sha256:cb4a98e9dbbf1d2c85e5b10ea1b7c6edadba85395906ffbf5ed0cb12f77cef2e" + }, + { + "name": "libfastjson", + "epoch": 0, + "version": "0.99.8", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libfastjson-0.99.8-2.el8.s390x.rpm", + "checksum": "sha256:57953b506733459b67a4d8e122bfb4a929388a33dbea7442acc71d14a48b9061" + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.2.0", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libmaxminddb-1.2.0-7.el8.s390x.rpm", + "checksum": "sha256:5999ddeea23f7ee7640ad90aacd09cc9c29b51fd489d5fe74db9e5b6ed981fef" + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libxcb-1.13.1-1.el8.s390x.rpm", + "checksum": "sha256:e63f327c851c2a89254ead31b682e8f9fdb53806c6dea797dd72de18be837ff2" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libxkbcommon-0.9.1-1.el8.s390x.rpm", + "checksum": "sha256:1206464e80ce9c9730e029702fda02a3510294d334a559215a7d6361c457cd46" + }, + { + "name": "perl-Digest", + "epoch": 0, + "version": "1.17", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-Digest-1.17-395.el8.noarch.rpm", + "checksum": "sha256:9e90e6054da06f5c8c2733c3b66987693a58ddc1f05d95b23ca0a464e26a2b22" + }, + { + "name": "perl-Digest-MD5", + "epoch": 0, + "version": "2.55", + "release": "396.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-Digest-MD5-2.55-396.el8.s390x.rpm", + "checksum": "sha256:7b6a754b55749e5f11ffec19cbb711f570607c2230e5750e5b2aaa915aa765c7" + }, + { + "name": "perl-IO-Socket-IP", + "epoch": 0, + "version": "0.39", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-IO-Socket-IP-0.39-5.el8.noarch.rpm", + "checksum": "sha256:7519f2af362827daecf105e1dccb551350f32dfd3f6a8a85bf6eb1b4b7788255" + }, + { + "name": "perl-IO-Socket-SSL", + "epoch": 0, + "version": "2.066", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-IO-Socket-SSL-2.066-4.el8.noarch.rpm", + "checksum": "sha256:4103adee1d874f535dccc59558968a8687c0cc8391b8adc4957d2952c244cf3b" + }, + { + "name": "perl-Mozilla-CA", + "epoch": 0, + "version": "20160104", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-Mozilla-CA-20160104-7.el8.noarch.rpm", + "checksum": "sha256:93772aade166fdb4bb4a78a0e08bea1b6f155e416597037267ad2603a767b9f5" + }, + { + "name": "perl-Net-SSLeay", + "epoch": 0, + "version": "1.88", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-Net-SSLeay-1.88-1.el8.s390x.rpm", + "checksum": "sha256:b79e0e33b98801e7cda1c845b31cfd5537b150fe4da4df1cacfc1d1534d57ce2" + }, + { + "name": "perl-URI", + "epoch": 0, + "version": "1.73", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-URI-1.73-3.el8.noarch.rpm", + "checksum": "sha256:dd6a948e5a656701156c618e202c0b6defd11ba6f162b6790cbb42cea15141ae" + }, + { + "name": "perl-libnet", + "epoch": 0, + "version": "3.11", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-libnet-3.11-3.el8.noarch.rpm", + "checksum": "sha256:81afd309f084c91d68c06bd46a4fce2e0d1e265a01ff87e309d1202e711e4a02" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/pinentry-1.1.0-2.el8.s390x.rpm", + "checksum": "sha256:13e2716cf8b28d92df079f55cf5f78c280f8d429e619fe22c80abef49c4f901e" + }, + { + "name": "pixman", + "epoch": 0, + "version": "0.38.4", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/pixman-0.38.4-1.el8.s390x.rpm", + "checksum": "sha256:6ed9fed1c5b4845fd82faf0e4a40c9478ac33878508487113801c4580e30baf1" + }, + { + "name": "python3-babel", + "epoch": 0, + "version": "2.5.1", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-babel-2.5.1-5.el8.noarch.rpm", + "checksum": "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28" + }, + { + "name": "python3-cairo", + "epoch": 0, + "version": "1.16.3", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-cairo-1.16.3-6.el8.s390x.rpm", + "checksum": "sha256:26e280280f7ec0fa24047c73acae59d272a1ff19d652a3302ca7a04877f7f081" + }, + { + "name": "python3-dnf-plugin-spacewalk", + "epoch": 0, + "version": "2.8.5", + "release": "11.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43" + }, + { + "name": "python3-gobject", + "epoch": 0, + "version": "3.28.3", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-gobject-3.28.3-1.el8.s390x.rpm", + "checksum": "sha256:1b64c8492c71a96a8a47b4a041acf71b5792265cb7846fb2ff3bb250f7d98f56" + }, + { + "name": "python3-hwdata", + "epoch": 0, + "version": "2.3.6", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-hwdata-2.3.6-3.el8.noarch.rpm", + "checksum": "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362" + }, + { + "name": "python3-jinja2", + "epoch": 0, + "version": "2.10.1", + "release": "2.el8_0", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-jinja2-2.10.1-2.el8_0.noarch.rpm", + "checksum": "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64" + }, + { + "name": "python3-jsonpatch", + "epoch": 0, + "version": "1.21", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-jsonpatch-1.21-2.el8.noarch.rpm", + "checksum": "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835" + }, + { + "name": "python3-jsonpointer", + "epoch": 0, + "version": "1.10", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-jsonpointer-1.10-11.el8.noarch.rpm", + "checksum": "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf" + }, + { + "name": "python3-jsonschema", + "epoch": 0, + "version": "2.6.0", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-jsonschema-2.6.0-4.el8.noarch.rpm", + "checksum": "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b" + }, + { + "name": "python3-markupsafe", + "epoch": 0, + "version": "0.23", + "release": "19.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-markupsafe-0.23-19.el8.s390x.rpm", + "checksum": "sha256:f446646140cdc94ba1f4cd6942c4f4515bf64f38f4307962d252dbab47c82ef8" + }, + { + "name": "python3-netifaces", + "epoch": 0, + "version": "0.10.6", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-netifaces-0.10.6-4.el8.s390x.rpm", + "checksum": "sha256:9f4a1d60544336fe77a8a3451843c5189b06672c11b0f82bf9b32ef77eba6542" + }, + { + "name": "python3-newt", + "epoch": 0, + "version": "0.52.20", + "release": "11.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-newt-0.52.20-11.el8.s390x.rpm", + "checksum": "sha256:16a81bf1774e42134b7ea667adedd1a76bb7fc482163e1f217b0131fd55b2623" + }, + { + "name": "python3-prettytable", + "epoch": 0, + "version": "0.7.2", + "release": "14.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-prettytable-0.7.2-14.el8.noarch.rpm", + "checksum": "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55" + }, + { + "name": "python3-pyOpenSSL", + "epoch": 0, + "version": "18.0.0", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-pyOpenSSL-18.0.0-1.el8.noarch.rpm", + "checksum": "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21" + }, + { + "name": "python3-pyserial", + "epoch": 0, + "version": "3.1.1", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-pyserial-3.1.1-8.el8.noarch.rpm", + "checksum": "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414" + }, + { + "name": "python3-pytz", + "epoch": 0, + "version": "2017.2", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-pytz-2017.2-9.el8.noarch.rpm", + "checksum": "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca" + }, + { + "name": "python3-rhn-check", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.s390x.rpm", + "checksum": "sha256:4fe86c8a09f3dfc0d18a0861f9c483d0e3e5f054ed73c26c680acb528ead8dd1" + }, + { + "name": "python3-rhn-client-tools", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.s390x.rpm", + "checksum": "sha256:73a4411822a90641b9ba957aedc0bbe090ae2efe7bf780bbb3aceace4369cfd3" + }, + { + "name": "python3-rhn-setup", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.s390x.rpm", + "checksum": "sha256:1d932b7b3d0cbb735e335e556fd825494259485d41c562c3bd532fdd0b7256f3" + }, + { + "name": "python3-rhnlib", + "epoch": 0, + "version": "2.8.6", + "release": "8.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a" + }, + { + "name": "python3-systemd", + "epoch": 0, + "version": "234", + "release": "8.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-systemd-234-8.el8.s390x.rpm", + "checksum": "sha256:df7652329162926a867e6dc880d5257af2496827b647067ef33c232b8a364a01" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-unbound-1.7.3-10.el8.s390x.rpm", + "checksum": "sha256:02bae2823210d586e266d37dad90fb9daed0787c7932bbe0520b769afc6d8d76" + }, + { + "name": "qemu-guest-agent", + "epoch": 15, + "version": "2.12.0", + "release": "99.module+el8.2.0+5827+8c39933c", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/qemu-guest-agent-2.12.0-99.module+el8.2.0+5827+8c39933c.s390x.rpm", + "checksum": "sha256:8da30771a771910bca07c013a395ab60b623b4a8301c62422a478c58f4d3cb75" + }, + { + "name": "rhn-check", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.s390x.rpm", + "checksum": "sha256:9dff5a0a4e774218477d22efefb4a1be0ed8d9bd217a2907b64c0f772dbafc35" + }, + { + "name": "rhn-client-tools", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.s390x.rpm", + "checksum": "sha256:07ce8c199fab0eb3b40b0b5d4736694c92c42892f26bf05cdd96896ac22c2e50" + }, + { + "name": "rhn-setup", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.s390x.rpm", + "checksum": "sha256:55b6a0136b23f4a36a2adef8ea11b0f8338535fbe169ee32f978f2a2defb57c2" + }, + { + "name": "rhnlib", + "epoch": 0, + "version": "2.8.6", + "release": "8.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42" + }, + { + "name": "rhnsd", + "epoch": 0, + "version": "5.0.35", + "release": "3.module+el8.1.0+3455+3ddf2832", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.s390x.rpm", + "checksum": "sha256:3830e5a3e5c11730baf10775ac1e3962a40b9409de5ce82ef372f7d742c680a0" + }, + { + "name": "rsyslog", + "epoch": 0, + "version": "8.1911.0", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/rsyslog-8.1911.0-3.el8.s390x.rpm", + "checksum": "sha256:4a20cfbaa38654e38dfa3df93bafa564252ac64177aacae8a0bc8b6dc395e6b2" + }, + { + "name": "setroubleshoot-plugins", + "epoch": 0, + "version": "3.3.11", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/setroubleshoot-plugins-3.3.11-2.el8.noarch.rpm", + "checksum": "sha256:966e2e9928f7006fedc83fc42df1c8d85cd448197097378aaf571b7e51f969d4" + }, + { + "name": "setroubleshoot-server", + "epoch": 0, + "version": "3.3.22", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/setroubleshoot-server-3.3.22-2.el8.s390x.rpm", + "checksum": "sha256:f70cdaa893490fe06e675ec0cc07f61aa2441a753c74215e199a0769a3c62596" + }, + { + "name": "sscg", + "epoch": 0, + "version": "2.3.3", + "release": "14.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/sscg-2.3.3-14.el8.s390x.rpm", + "checksum": "sha256:48f2ba5165e606fee1bac3d7b81ff319724338d7279cfe2a90f7a9f6f172075c" + }, + { + "name": "tcpdump", + "epoch": 14, + "version": "4.9.2", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/tcpdump-4.9.2-6.el8.s390x.rpm", + "checksum": "sha256:e2cb056e6b9093aa449194a876f4f17937ceca090a766a5cf6e2f98ac8e893b4" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/unbound-libs-1.7.3-10.el8.s390x.rpm", + "checksum": "sha256:fbbc385a90edf08de42879e9c8ff762c5d3d9ca750d10e0bccbcd56592e5cff0" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "checksums": { + "0": "sha256:18fd6386dd9a98d8181819eaa99365fde24f624b409181d74317ccdffafa1ebd", + "1": "sha256:3d65a2da0ab6a7d04a62c84ff852eccb6641e864f6270a14fbc7a70cdc60ad76" + } + }, + "image-info": { + "bootloader": "unknown", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "id": "rhel-20200327145516-4.18.0-193.el8.s390x", + "initrd": "/boot/initramfs-4.18.0-193.el8.s390x.img", + "linux": "/boot/vmlinuz-4.18.0-193.el8.s390x", + "options": "root=UUID=0bd700f8-090f-4556-b797-b340297ea1bd net.ifnames=0 crashkernel=auto $tuned_params", + "title": "Red Hat Enterprise Linux (4.18.0-193.el8.s390x) 8.2 (Ootpa)", + "version": "4.18.0-193.el8.s390x" + } + ], + "fstab": [ + [ + "UUID=0bd700f8-090f-4556-b797-b340297ea1bd", + "/", + "xfs", + "defaults", + "0", + "0" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:988:", + "cockpit-ws:x:990:", + "cockpit-wsinstance:x:989:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:999:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "polkitd:x:995:", + "redhat:x:1000:", + "render:x:998:", + "rngd:x:987:", + "root:x:0:", + "rpc:x:32:", + "rpcuser:x:29:", + "setroubleshoot:x:991:", + "ssh_keys:x:993:", + "sshd:x:74:", + "sssd:x:992:", + "sys:x:3:", + "systemd-coredump:x:997:", + "systemd-journal:x:190:", + "systemd-resolve:x:193:", + "tape:x:33:", + "tcpdump:x:72:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:994:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:", + "zkeyadm:x:996:" + ], + "image-format": "qcow2", + "os-release": { + "ANSI_COLOR": "0;31", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:redhat:enterprise_linux:8.2:GA", + "HOME_URL": "https://www.redhat.com/", + "ID": "rhel", + "ID_LIKE": "fedora", + "NAME": "Red Hat Enterprise Linux", + "PLATFORM_ID": "platform:el8", + "PRETTY_NAME": "Red Hat Enterprise Linux 8.2 (Ootpa)", + "REDHAT_BUGZILLA_PRODUCT": "Red Hat Enterprise Linux 8", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "8.2", + "REDHAT_SUPPORT_PRODUCT": "Red Hat Enterprise Linux", + "REDHAT_SUPPORT_PRODUCT_VERSION": "8.2", + "VERSION": "8.2 (Ootpa)", + "VERSION_ID": "8.2" + }, + "packages": [ + "NetworkManager-1.22.8-4.el8.s390x", + "NetworkManager-libnm-1.22.8-4.el8.s390x", + "NetworkManager-team-1.22.8-4.el8.s390x", + "NetworkManager-tui-1.22.8-4.el8.s390x", + "PackageKit-1.1.12-4.el8.s390x", + "PackageKit-glib-1.1.12-4.el8.s390x", + "abattis-cantarell-fonts-0.0.25-4.el8.noarch", + "acl-2.2.53-1.el8.s390x", + "audit-3.0-0.17.20191104git1c2f876.el8.s390x", + "audit-libs-3.0-0.17.20191104git1c2f876.el8.s390x", + "authselect-1.1-2.el8.s390x", + "authselect-libs-1.1-2.el8.s390x", + "basesystem-11-5.el8.noarch", + "bash-4.4.19-10.el8.s390x", + "bind-export-libs-9.11.13-3.el8.s390x", + "brotli-1.0.6-1.el8.s390x", + "bzip2-libs-1.0.6-26.el8.s390x", + "c-ares-1.13.0-5.el8.s390x", + "ca-certificates-2019.2.32-80.0.el8_1.noarch", + "cairo-1.15.12-3.el8.s390x", + "cairo-gobject-1.15.12-3.el8.s390x", + "checkpolicy-2.9-1.el8.s390x", + "chkconfig-1.11-1.el8.s390x", + "chrony-3.5-1.el8.s390x", + "cloud-init-18.5-12.el8.noarch", + "cloud-utils-growpart-0.29-3.el8.noarch", + "cockpit-bridge-211.3-1.el8.s390x", + "cockpit-system-211.3-1.el8.noarch", + "cockpit-ws-211.3-1.el8.s390x", + "coreutils-8.30-6.el8.s390x", + "coreutils-common-8.30-6.el8.s390x", + "cpio-2.12-8.el8.s390x", + "cracklib-2.9.6-15.el8.s390x", + "cracklib-dicts-2.9.6-15.el8.s390x", + "cronie-1.5.2-4.el8.s390x", + "cronie-anacron-1.5.2-4.el8.s390x", + "crontabs-1.11-16.20150630git.el8.noarch", + "crypto-policies-20191128-2.git23e1bf1.el8.noarch", + "cryptsetup-libs-2.2.2-1.el8.s390x", + "curl-7.61.1-12.el8.s390x", + "cyrus-sasl-lib-2.1.27-1.el8.s390x", + "dbus-1.12.8-9.el8.s390x", + "dbus-common-1.12.8-9.el8.noarch", + "dbus-daemon-1.12.8-9.el8.s390x", + "dbus-glib-0.110-2.el8.s390x", + "dbus-libs-1.12.8-9.el8.s390x", + "dbus-tools-1.12.8-9.el8.s390x", + "device-mapper-1.02.169-3.el8.s390x", + "device-mapper-libs-1.02.169-3.el8.s390x", + "dhcp-client-4.3.6-40.el8.s390x", + "dhcp-common-4.3.6-40.el8.noarch", + "dhcp-libs-4.3.6-40.el8.s390x", + "diffutils-3.6-6.el8.s390x", + "dnf-4.2.17-6.el8.noarch", + "dnf-data-4.2.17-6.el8.noarch", + "dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch", + "dnf-plugin-subscription-manager-1.26.16-1.el8.s390x", + "dnf-plugins-core-4.0.12-3.el8.noarch", + "dracut-049-70.git20200228.el8.s390x", + "dracut-config-generic-049-70.git20200228.el8.s390x", + "dracut-network-049-70.git20200228.el8.s390x", + "dracut-squash-049-70.git20200228.el8.s390x", + "e2fsprogs-1.45.4-3.el8.s390x", + "e2fsprogs-libs-1.45.4-3.el8.s390x", + "elfutils-debuginfod-client-0.178-7.el8.s390x", + "elfutils-default-yama-scope-0.178-7.el8.noarch", + "elfutils-libelf-0.178-7.el8.s390x", + "elfutils-libs-0.178-7.el8.s390x", + "ethtool-5.0-2.el8.s390x", + "expat-2.2.5-3.el8.s390x", + "file-5.33-13.el8.s390x", + "file-libs-5.33-13.el8.s390x", + "filesystem-3.8-2.el8.s390x", + "findutils-4.6.0-20.el8.s390x", + "fipscheck-1.5.0-4.el8.s390x", + "fipscheck-lib-1.5.0-4.el8.s390x", + "fontconfig-2.13.1-3.el8.s390x", + "fontpackages-filesystem-1.44-22.el8.noarch", + "freetype-2.9.1-4.el8.s390x", + "fuse-libs-2.9.7-12.el8.s390x", + "gawk-4.2.1-1.el8.s390x", + "gdbm-1.18-1.el8.s390x", + "gdbm-libs-1.18-1.el8.s390x", + "gdk-pixbuf2-2.36.12-5.el8.s390x", + "geolite2-city-20180605-1.el8.noarch", + "geolite2-country-20180605-1.el8.noarch", + "glib-networking-2.56.1-1.1.el8.s390x", + "glib2-2.56.4-8.el8.s390x", + "glibc-2.28-101.el8.s390x", + "glibc-all-langpacks-2.28-101.el8.s390x", + "glibc-common-2.28-101.el8.s390x", + "gmp-6.1.2-10.el8.s390x", + "gnupg2-2.2.9-1.el8.s390x", + "gnupg2-smime-2.2.9-1.el8.s390x", + "gnutls-3.6.8-9.el8.s390x", + "gobject-introspection-1.56.1-1.el8.s390x", + "gpg-pubkey-d4082792-5b32db75", + "gpg-pubkey-fd431d51-4ae0493b", + "gpgme-1.10.0-6.el8.s390x", + "grep-3.1-6.el8.s390x", + "groff-base-1.22.3-18.el8.s390x", + "grubby-8.40-38.el8.s390x", + "gsettings-desktop-schemas-3.32.0-4.el8.s390x", + "gssproxy-0.8.0-15.el8.s390x", + "gzip-1.9-9.el8.s390x", + "hardlink-1.3-6.el8.s390x", + "hdparm-9.54-2.el8.s390x", + "hostname-3.20-6.el8.s390x", + "hwdata-0.314-8.4.el8.noarch", + "ima-evm-utils-1.1-5.el8.s390x", + "info-6.5-6.el8.s390x", + "initscripts-10.00.6-1.el8.s390x", + "insights-client-3.0.13-1.el8.noarch", + "ipcalc-0.2.4-4.el8.s390x", + "iproute-5.3.0-1.el8.s390x", + "iptables-libs-1.8.4-10.el8.s390x", + "iputils-20180629-2.el8.s390x", + "jansson-2.11-3.el8.s390x", + "json-c-0.13.1-0.2.el8.s390x", + "json-glib-1.4.4-1.el8.s390x", + "kbd-2.0.4-8.el8.s390x", + "kbd-legacy-2.0.4-8.el8.noarch", + "kbd-misc-2.0.4-8.el8.noarch", + "kernel-4.18.0-193.el8.s390x", + "kernel-core-4.18.0-193.el8.s390x", + "kernel-modules-4.18.0-193.el8.s390x", + "kernel-tools-4.18.0-193.el8.s390x", + "kexec-tools-2.0.20-14.el8.s390x", + "keyutils-1.5.10-6.el8.s390x", + "keyutils-libs-1.5.10-6.el8.s390x", + "kmod-25-16.el8.s390x", + "kmod-libs-25-16.el8.s390x", + "kpartx-0.8.3-3.el8.s390x", + "krb5-libs-1.17-18.el8.s390x", + "less-530-1.el8.s390x", + "libX11-1.6.8-3.el8.s390x", + "libX11-common-1.6.8-3.el8.noarch", + "libXau-1.0.8-13.el8.s390x", + "libXext-1.3.3-9.el8.s390x", + "libXrender-0.9.10-7.el8.s390x", + "libacl-2.2.53-1.el8.s390x", + "libappstream-glib-0.7.14-3.el8.s390x", + "libarchive-3.3.2-8.el8_1.s390x", + "libassuan-2.5.1-3.el8.s390x", + "libattr-2.4.48-3.el8.s390x", + "libbasicobjects-0.1.1-39.el8.s390x", + "libblkid-2.32.1-22.el8.s390x", + "libcap-2.26-3.el8.s390x", + "libcap-ng-0.7.9-5.el8.s390x", + "libcollection-0.7.0-39.el8.s390x", + "libcom_err-1.45.4-3.el8.s390x", + "libcomps-0.1.11-4.el8.s390x", + "libcurl-7.61.1-12.el8.s390x", + "libdaemon-0.14-15.el8.s390x", + "libdb-5.3.28-37.el8.s390x", + "libdb-utils-5.3.28-37.el8.s390x", + "libdhash-0.5.0-39.el8.s390x", + "libdnf-0.39.1-5.el8.s390x", + "libedit-3.1-23.20170329cvs.el8.s390x", + "libestr-0.1.10-1.el8.s390x", + "libevent-2.1.8-5.el8.s390x", + "libfastjson-0.99.8-2.el8.s390x", + "libfdisk-2.32.1-22.el8.s390x", + "libffi-3.1-21.el8.s390x", + "libgcc-8.3.1-5.el8.s390x", + "libgcrypt-1.8.3-4.el8.s390x", + "libgpg-error-1.31-1.el8.s390x", + "libgudev-232-4.el8.s390x", + "libidn2-2.2.0-1.el8.s390x", + "libini_config-1.3.1-39.el8.s390x", + "libkcapi-1.1.1-16_1.el8.s390x", + "libkcapi-hmaccalc-1.1.1-16_1.el8.s390x", + "libksba-1.3.5-7.el8.s390x", + "libldb-2.0.7-3.el8.s390x", + "libmaxminddb-1.2.0-7.el8.s390x", + "libmetalink-0.1.3-7.el8.s390x", + "libmnl-1.0.4-6.el8.s390x", + "libmodman-2.0.1-17.el8.s390x", + "libmodulemd1-1.8.16-0.2.8.2.1.s390x", + "libmount-2.32.1-22.el8.s390x", + "libndp-1.7-3.el8.s390x", + "libnfsidmap-2.3.3-31.el8.s390x", + "libnghttp2-1.33.0-1.el8_0.1.s390x", + "libnl3-3.5.0-1.el8.s390x", + "libnl3-cli-3.5.0-1.el8.s390x", + "libnsl2-1.2.0-2.20180605git4a062cf.el8.s390x", + "libpath_utils-0.2.1-39.el8.s390x", + "libpcap-1.9.0-3.el8.s390x", + "libpipeline-1.5.0-2.el8.s390x", + "libpng-1.6.34-5.el8.s390x", + "libproxy-0.4.15-5.2.el8.s390x", + "libpsl-0.20.2-5.el8.s390x", + "libpwquality-1.4.0-9.el8.s390x", + "libref_array-0.1.5-39.el8.s390x", + "librepo-1.11.0-2.el8.s390x", + "libreport-filesystem-2.9.5-10.el8.s390x", + "librhsm-0.0.3-3.el8.s390x", + "libseccomp-2.4.1-1.el8.s390x", + "libsecret-0.18.6-1.el8.s390x", + "libselinux-2.9-3.el8.s390x", + "libselinux-utils-2.9-3.el8.s390x", + "libsemanage-2.9-2.el8.s390x", + "libsepol-2.9-1.el8.s390x", + "libsigsegv-2.11-5.el8.s390x", + "libsmartcols-2.32.1-22.el8.s390x", + "libsolv-0.7.7-1.el8.s390x", + "libsoup-2.62.3-1.el8.s390x", + "libss-1.45.4-3.el8.s390x", + "libssh-0.9.0-4.el8.s390x", + "libssh-config-0.9.0-4.el8.noarch", + "libsss_autofs-2.2.3-20.el8.s390x", + "libsss_certmap-2.2.3-20.el8.s390x", + "libsss_idmap-2.2.3-20.el8.s390x", + "libsss_nss_idmap-2.2.3-20.el8.s390x", + "libsss_sudo-2.2.3-20.el8.s390x", + "libstdc++-8.3.1-5.el8.s390x", + "libstemmer-0-10.585svn.el8.s390x", + "libsysfs-2.1.0-24.el8.s390x", + "libtalloc-2.2.0-7.el8.s390x", + "libtasn1-4.13-3.el8.s390x", + "libtdb-1.4.2-2.el8.s390x", + "libteam-1.29-1.el8.s390x", + "libtevent-0.10.0-2.el8.s390x", + "libtirpc-1.1.4-4.el8.s390x", + "libunistring-0.9.9-3.el8.s390x", + "libusbx-1.0.22-1.el8.s390x", + "libuser-0.62-23.el8.s390x", + "libutempter-1.1.6-14.el8.s390x", + "libuuid-2.32.1-22.el8.s390x", + "libverto-0.3.0-5.el8.s390x", + "libverto-libevent-0.3.0-5.el8.s390x", + "libxcb-1.13.1-1.el8.s390x", + "libxcrypt-4.1.1-4.el8.s390x", + "libxkbcommon-0.9.1-1.el8.s390x", + "libxml2-2.9.7-7.el8.s390x", + "libyaml-0.1.7-5.el8.s390x", + "libzstd-1.4.2-2.el8.s390x", + "linux-firmware-20191202-97.gite8a0f4c9.el8.noarch", + "logrotate-3.14.0-3.el8.s390x", + "lshw-B.02.18-23.el8.s390x", + "lsscsi-0.30-1.el8.s390x", + "lua-libs-5.3.4-11.el8.s390x", + "lz4-libs-1.8.1.2-4.el8.s390x", + "lzo-2.08-14.el8.s390x", + "man-db-2.7.6.1-17.el8.s390x", + "mozjs60-60.9.0-4.el8.s390x", + "mpfr-3.1.6-1.el8.s390x", + "ncurses-6.1-7.20180224.el8.s390x", + "ncurses-base-6.1-7.20180224.el8.noarch", + "ncurses-libs-6.1-7.20180224.el8.s390x", + "net-tools-2.0-0.51.20160912git.el8.s390x", + "nettle-3.4.1-1.el8.s390x", + "network-scripts-10.00.6-1.el8.s390x", + "network-scripts-team-1.29-1.el8.s390x", + "newt-0.52.20-11.el8.s390x", + "nfs-utils-2.3.3-31.el8.s390x", + "npth-1.5-4.el8.s390x", + "numactl-libs-2.0.12-9.el8.s390x", + "openldap-2.4.46-11.el8.s390x", + "openssh-8.0p1-4.el8_1.s390x", + "openssh-clients-8.0p1-4.el8_1.s390x", + "openssh-server-8.0p1-4.el8_1.s390x", + "openssl-1.1.1c-15.el8.s390x", + "openssl-libs-1.1.1c-15.el8.s390x", + "openssl-pkcs11-0.4.10-2.el8.s390x", + "p11-kit-0.23.14-5.el8_0.s390x", + "p11-kit-trust-0.23.14-5.el8_0.s390x", + "pam-1.3.1-8.el8.s390x", + "parted-3.2-38.el8.s390x", + "passwd-0.80-3.el8.s390x", + "pciutils-3.5.6-4.el8.s390x", + "pciutils-libs-3.5.6-4.el8.s390x", + "pcre-8.42-4.el8.s390x", + "pcre2-10.32-1.el8.s390x", + "perl-Carp-1.42-396.el8.noarch", + "perl-Data-Dumper-2.167-399.el8.s390x", + "perl-Digest-1.17-395.el8.noarch", + "perl-Digest-MD5-2.55-396.el8.s390x", + "perl-Encode-2.97-3.el8.s390x", + "perl-Errno-1.28-416.el8.s390x", + "perl-Exporter-5.72-396.el8.noarch", + "perl-File-Path-2.15-2.el8.noarch", + "perl-File-Temp-0.230.600-1.el8.noarch", + "perl-Getopt-Long-2.50-4.el8.noarch", + "perl-HTTP-Tiny-0.074-1.el8.noarch", + "perl-IO-1.38-416.el8.s390x", + "perl-IO-Socket-IP-0.39-5.el8.noarch", + "perl-IO-Socket-SSL-2.066-4.el8.noarch", + "perl-MIME-Base64-3.15-396.el8.s390x", + "perl-Mozilla-CA-20160104-7.el8.noarch", + "perl-Net-SSLeay-1.88-1.el8.s390x", + "perl-PathTools-3.74-1.el8.s390x", + "perl-Pod-Escapes-1.07-395.el8.noarch", + "perl-Pod-Perldoc-3.28-396.el8.noarch", + "perl-Pod-Simple-3.35-395.el8.noarch", + "perl-Pod-Usage-1.69-395.el8.noarch", + "perl-Scalar-List-Utils-1.49-2.el8.s390x", + "perl-Socket-2.027-3.el8.s390x", + "perl-Storable-3.11-3.el8.s390x", + "perl-Term-ANSIColor-4.06-396.el8.noarch", + "perl-Term-Cap-1.17-395.el8.noarch", + "perl-Text-ParseWords-3.30-395.el8.noarch", + "perl-Text-Tabs+Wrap-2013.0523-395.el8.noarch", + "perl-Time-Local-1.280-1.el8.noarch", + "perl-URI-1.73-3.el8.noarch", + "perl-Unicode-Normalize-1.25-396.el8.s390x", + "perl-constant-1.33-396.el8.noarch", + "perl-interpreter-5.26.3-416.el8.s390x", + "perl-libnet-3.11-3.el8.noarch", + "perl-libs-5.26.3-416.el8.s390x", + "perl-macros-5.26.3-416.el8.s390x", + "perl-parent-0.237-1.el8.noarch", + "perl-podlators-4.11-1.el8.noarch", + "perl-threads-2.21-2.el8.s390x", + "perl-threads-shared-1.58-2.el8.s390x", + "pigz-2.4-4.el8.s390x", + "pinentry-1.1.0-2.el8.s390x", + "pixman-0.38.4-1.el8.s390x", + "platform-python-3.6.8-23.el8.s390x", + "platform-python-pip-9.0.3-16.el8.noarch", + "platform-python-setuptools-39.2.0-5.el8.noarch", + "policycoreutils-2.9-9.el8.s390x", + "policycoreutils-python-utils-2.9-9.el8.noarch", + "polkit-0.115-11.el8.s390x", + "polkit-libs-0.115-11.el8.s390x", + "polkit-pkla-compat-0.1-12.el8.s390x", + "popt-1.16-14.el8.s390x", + "prefixdevname-0.1.0-6.el8.s390x", + "procps-ng-3.3.15-1.el8.s390x", + "publicsuffix-list-dafsa-20180723-1.el8.noarch", + "python3-asn1crypto-0.24.0-3.el8.noarch", + "python3-audit-3.0-0.17.20191104git1c2f876.el8.s390x", + "python3-babel-2.5.1-5.el8.noarch", + "python3-cairo-1.16.3-6.el8.s390x", + "python3-cffi-1.11.5-5.el8.s390x", + "python3-chardet-3.0.4-7.el8.noarch", + "python3-configobj-5.0.6-11.el8.noarch", + "python3-cryptography-2.3-3.el8.s390x", + "python3-dateutil-2.6.1-6.el8.noarch", + "python3-dbus-1.2.4-15.el8.s390x", + "python3-decorator-4.2.1-2.el8.noarch", + "python3-dnf-4.2.17-6.el8.noarch", + "python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch", + "python3-dnf-plugins-core-4.0.12-3.el8.noarch", + "python3-ethtool-0.14-3.el8.s390x", + "python3-gobject-3.28.3-1.el8.s390x", + "python3-gobject-base-3.28.3-1.el8.s390x", + "python3-gpg-1.10.0-6.el8.s390x", + "python3-hawkey-0.39.1-5.el8.s390x", + "python3-hwdata-2.3.6-3.el8.noarch", + "python3-idna-2.5-5.el8.noarch", + "python3-iniparse-0.4-31.el8.noarch", + "python3-inotify-0.9.6-13.el8.noarch", + "python3-jinja2-2.10.1-2.el8_0.noarch", + "python3-jsonpatch-1.21-2.el8.noarch", + "python3-jsonpointer-1.10-11.el8.noarch", + "python3-jsonschema-2.6.0-4.el8.noarch", + "python3-jwt-1.6.1-2.el8.noarch", + "python3-libcomps-0.1.11-4.el8.s390x", + "python3-libdnf-0.39.1-5.el8.s390x", + "python3-librepo-1.11.0-2.el8.s390x", + "python3-libs-3.6.8-23.el8.s390x", + "python3-libselinux-2.9-3.el8.s390x", + "python3-libsemanage-2.9-2.el8.s390x", + "python3-libxml2-2.9.7-7.el8.s390x", + "python3-linux-procfs-0.6-7.el8.noarch", + "python3-magic-5.33-13.el8.noarch", + "python3-markupsafe-0.23-19.el8.s390x", + "python3-netifaces-0.10.6-4.el8.s390x", + "python3-newt-0.52.20-11.el8.s390x", + "python3-oauthlib-2.1.0-1.el8.noarch", + "python3-perf-4.18.0-193.el8.s390x", + "python3-pip-wheel-9.0.3-16.el8.noarch", + "python3-ply-3.9-8.el8.noarch", + "python3-policycoreutils-2.9-9.el8.noarch", + "python3-prettytable-0.7.2-14.el8.noarch", + "python3-pyOpenSSL-18.0.0-1.el8.noarch", + "python3-pycparser-2.14-14.el8.noarch", + "python3-pyserial-3.1.1-8.el8.noarch", + "python3-pysocks-1.6.8-3.el8.noarch", + "python3-pytz-2017.2-9.el8.noarch", + "python3-pyudev-0.21.0-7.el8.noarch", + "python3-pyyaml-3.12-12.el8.s390x", + "python3-requests-2.20.0-2.1.el8_1.noarch", + "python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.s390x", + "python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.s390x", + "python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.s390x", + "python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch", + "python3-rpm-4.14.2-37.el8.s390x", + "python3-schedutils-0.6-6.el8.s390x", + "python3-setools-4.2.2-2.el8.s390x", + "python3-setuptools-wheel-39.2.0-5.el8.noarch", + "python3-six-1.11.0-8.el8.noarch", + "python3-slip-0.6.4-11.el8.noarch", + "python3-slip-dbus-0.6.4-11.el8.noarch", + "python3-subscription-manager-rhsm-1.26.16-1.el8.s390x", + "python3-syspurpose-1.26.16-1.el8.s390x", + "python3-systemd-234-8.el8.s390x", + "python3-unbound-1.7.3-10.el8.s390x", + "python3-urllib3-1.24.2-4.el8.noarch", + "qemu-guest-agent-2.12.0-99.module+el8.2.0+5827+8c39933c.s390x", + "quota-4.04-10.el8.s390x", + "quota-nls-4.04-10.el8.noarch", + "readline-7.0-10.el8.s390x", + "redhat-logos-81.1-1.el8.s390x", + "redhat-release-8.2-1.0.el8.s390x", + "redhat-release-eula-8.2-1.0.el8.s390x", + "rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.s390x", + "rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.s390x", + "rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.s390x", + "rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch", + "rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.s390x", + "rhsm-icons-1.26.16-1.el8.noarch", + "rng-tools-6.8-3.el8.s390x", + "rootfiles-8.1-22.el8.noarch", + "rpcbind-1.2.5-7.el8.s390x", + "rpm-4.14.2-37.el8.s390x", + "rpm-build-libs-4.14.2-37.el8.s390x", + "rpm-libs-4.14.2-37.el8.s390x", + "rpm-plugin-selinux-4.14.2-37.el8.s390x", + "rpm-plugin-systemd-inhibit-4.14.2-37.el8.s390x", + "rsync-3.1.3-7.el8.s390x", + "rsyslog-8.1911.0-3.el8.s390x", + "s390utils-base-2.6.0-28.el8.s390x", + "sed-4.5-1.el8.s390x", + "selinux-policy-3.14.3-41.el8.noarch", + "selinux-policy-targeted-3.14.3-41.el8.noarch", + "setroubleshoot-plugins-3.3.11-2.el8.noarch", + "setroubleshoot-server-3.3.22-2.el8.s390x", + "setup-2.12.2-5.el8.noarch", + "sg3_utils-1.44-5.el8.s390x", + "sg3_utils-libs-1.44-5.el8.s390x", + "shadow-utils-4.6-8.el8.s390x", + "shared-mime-info-1.9-3.el8.s390x", + "slang-2.3.2-3.el8.s390x", + "snappy-1.1.7-5.el8.s390x", + "sqlite-libs-3.26.0-6.el8.s390x", + "squashfs-tools-4.3-19.el8.s390x", + "sscg-2.3.3-14.el8.s390x", + "sssd-client-2.2.3-20.el8.s390x", + "sssd-common-2.2.3-20.el8.s390x", + "sssd-kcm-2.2.3-20.el8.s390x", + "sssd-nfs-idmap-2.2.3-20.el8.s390x", + "subscription-manager-1.26.16-1.el8.s390x", + "subscription-manager-cockpit-1.26.16-1.el8.noarch", + "subscription-manager-rhsm-certificates-1.26.16-1.el8.s390x", + "sudo-1.8.29-5.el8.s390x", + "sysfsutils-2.1.0-24.el8.s390x", + "systemd-239-29.el8.s390x", + "systemd-libs-239-29.el8.s390x", + "systemd-pam-239-29.el8.s390x", + "systemd-udev-239-29.el8.s390x", + "tar-1.30-4.el8.s390x", + "tcpdump-4.9.2-6.el8.s390x", + "teamd-1.29-1.el8.s390x", + "trousers-0.3.14-4.el8.s390x", + "trousers-lib-0.3.14-4.el8.s390x", + "tuned-2.13.0-6.el8.noarch", + "tzdata-2019c-1.el8.noarch", + "unbound-libs-1.7.3-10.el8.s390x", + "usermode-1.113-1.el8.s390x", + "util-linux-2.32.1-22.el8.s390x", + "vim-minimal-8.0.1763-13.el8.s390x", + "virt-what-1.18-6.el8.s390x", + "which-2.21-12.el8.s390x", + "xfsprogs-5.0.0-2.el8.s390x", + "xkeyboard-config-2.28-1.el8.noarch", + "xz-5.2.4-3.el8.s390x", + "xz-libs-5.2.4-3.el8.s390x", + "yum-4.2.17-6.el8.noarch", + "yum-utils-4.0.12-3.el8.noarch", + "zlib-1.2.11-13.el8.s390x" + ], + "partition-table": "dos", + "partition-table-id": "0x14fc63d2", + "partitions": [ + { + "bootable": true, + "fstype": "xfs", + "label": null, + "partuuid": "14fc63d2-01", + "size": 2146435072, + "start": 1048576, + "type": "83", + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:992:988::/var/lib/chrony:/sbin/nologin", + "cockpit-ws:x:994:990:User for cockpit web service:/nonexisting:/sbin/nologin", + "cockpit-wsinstance:x:993:989:User for cockpit-ws instances:/nonexisting:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "polkitd:x:998:995:User for polkitd:/:/sbin/nologin", + "redhat:x:1000:1000::/home/redhat:/bin/bash", + "rngd:x:991:987:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin", + "root:x:0:0:root:/root:/bin/bash", + "rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin", + "rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin", + "setroubleshoot:x:995:991::/var/lib/setroubleshoot:/sbin/nologin", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sssd:x:996:992:User for sssd:/:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "tcpdump:x:72:72::/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/etc/udev/hwdb.bin": ".M.......", + "/proc": ".M.......", + "/sys": ".M.......", + "/var/cache/private": ".M.......", + "/var/lib/private": ".M.......", + "/var/log/btmp": ".M.......", + "/var/log/lastlog": ".M....G..", + "/var/log/private": ".M.......", + "/var/spool/anacron/cron.daily": ".M.......", + "/var/spool/anacron/cron.monthly": ".M.......", + "/var/spool/anacron/cron.weekly": ".M......." + }, + "missing": [ + "/etc/systemd/system/dbus-org.freedesktop.resolve1.service" + ] + }, + "services-disabled": [ + "arp-ethers.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "cockpit.socket", + "console-getty.service", + "ctrl-alt-del.target", + "debug-shell.service", + "dumpconf.service", + "exit.target", + "fstrim.timer", + "gssproxy.service", + "halt.target", + "insights-client.timer", + "kexec.target", + "nfs-blkmap.service", + "nfs-server.service", + "nis-domainname.service", + "poweroff.target", + "qemu-guest-agent.service", + "rdisc.service", + "reboot.target", + "remote-cryptsetup.target", + "rhnsd.service", + "rhsm-facts.service", + "rhsm.service", + "rngd-wake-threshold.service", + "runlevel0.target", + "runlevel6.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-resolved.service", + "tcsd.service", + "tmp.mount" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "cloud-init.service", + "cpi.service", + "crond.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "device_cio_free.service", + "dnf-makecache.timer", + "getty@.service", + "import-state.service", + "kdump.service", + "loadmodules.service", + "nfs-client.target", + "nfs-convert.service", + "remote-fs.target", + "rhsmcertd.service", + "rngd.service", + "rpcbind.service", + "rpcbind.socket", + "rsyslog.service", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "syslog.service", + "tuned.service", + "unbound-anchor.timer" + ], + "timezone": "UTC" + } +} \ No newline at end of file diff --git a/test/cases/rhel_8-s390x-tar-boot.json b/test/cases/rhel_8-s390x-tar-boot.json new file mode 100644 index 0000000..b5c2885 --- /dev/null +++ b/test/cases/rhel_8-s390x-tar-boot.json @@ -0,0 +1,6277 @@ +{ + "boot": { + "type": "nspawn-extract" + }, + "compose-request": { + "distro": "rhel-8", + "arch": "s390x", + "image-type": "tar", + "repositories": [ + { + "baseurl": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + }, + { + "baseurl": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + } + ], + "filename": "root.tar.xz", + "blueprint": { + "name": "tar-boot-test", + "description": "Image for boot test", + "packages": [ + { + "name": "openssh-server", + "version": "*" + } + ], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:01273ffc5443535d055b7962e173a10028fd2f128124480f587f8f9d7f4d4688": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-MIME-Base64-3.15-396.el8.s390x.rpm" + }, + "sha256:02bae2823210d586e266d37dad90fb9daed0787c7932bbe0520b769afc6d8d76": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-unbound-1.7.3-10.el8.s390x.rpm" + }, + "sha256:03d1b5541823ba8637e04c69d0e00d711e0c799e764d6191d6ad989b459004e3": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/brotli-1.0.6-1.el8.s390x.rpm" + }, + "sha256:04ae113a2f41daae0c19672c9920f26bb46960e79ce46e626591a7e278d636a3": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/krb5-libs-1.17-18.el8.s390x.rpm" + }, + "sha256:04e227546e73954475809db05a6133e4f978ae026423bd800247370f8758b31e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dosfstools-4.1-6.el8.s390x.rpm" + }, + "sha256:05bd495695df8a78448ff0d2f2df0480f0bc49c9b7065bc2b1ceba41b42f1772": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-PathTools-3.74-1.el8.s390x.rpm" + }, + "sha256:079483da2949b3bb56df6d265a700b5cc67d3ff1f945afa1c519b0d53772c199": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libuuid-2.32.1-22.el8.s390x.rpm" + }, + "sha256:07f8f24c26ec3b1716c37c9b212f4f3397dcb3eb349ef5fe09bb444654fe0033": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/popt-1.16-14.el8.s390x.rpm" + }, + "sha256:08178dfd67abc7e7984e94e62289d78ce84ead317c512ccb6596f7a752984dc7": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libevent-2.1.8-5.el8.s390x.rpm" + }, + "sha256:0914bb1e4fd12735f4919734cb42871d5a576dfe8c3df82e9de3d867c87755c1": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libassuan-2.5.1-3.el8.s390x.rpm" + }, + "sha256:0a3f52922caaa3b8213d350c3c955558d77fe31fe74f27fe58f178f93f381d56": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/mpfr-3.1.6-1.el8.s390x.rpm" + }, + "sha256:0af540f9af46e2ed891119dab6189e425323ac0742e0dd0f08b6df4e3ecb7092": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libidn2-2.2.0-1.el8.s390x.rpm" + }, + "sha256:0c3e22cf2e8ab8b4c4f043f043e4e71dfccbe9b30ecab3a6532f1dddcc06662c": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/coreutils-common-8.30-6.el8.s390x.rpm" + }, + "sha256:0cd56334755c7cbc9a4b18d9746dc3cae765a9ae8231b26e1e740a447d82c499": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cyrus-sasl-lib-2.1.27-1.el8.s390x.rpm" + }, + "sha256:0e6d88ed1b7038d234b0cbec9bdcf9239efc898993cfb2092ffa7fe52864d9a7": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gnupg2-2.2.9-1.el8.s390x.rpm" + }, + "sha256:1206464e80ce9c9730e029702fda02a3510294d334a559215a7d6361c457cd46": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libxkbcommon-0.9.1-1.el8.s390x.rpm" + }, + "sha256:126bbe586fe4116b343fc349c80480f01d597c2a41abec5bc15019b126f51fdc": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/acl-2.2.53-1.el8.s390x.rpm" + }, + "sha256:13e2716cf8b28d92df079f55cf5f78c280f8d429e619fe22c80abef49c4f901e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/pinentry-1.1.0-2.el8.s390x.rpm" + }, + "sha256:167a35f5dd48fb4a632cf00ea21337689a1b78e5bb36254a2a9c6f5196b98d88": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-libdnf-0.39.1-5.el8.s390x.rpm" + }, + "sha256:186a83e25f1758b3efaf84330ce0ff548c9878d7f4590fcfbbf9f066abc095e0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-macros-5.26.3-416.el8.s390x.rpm" + }, + "sha256:18ad184245a885a9f2ef53c58aef0ef70fe4e4d6c7728d72b2b6527117f63b61": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libselinux-2.9-3.el8.s390x.rpm" + }, + "sha256:18c6c5fbd998c4d642b2dba059ba5042288b2f566cb03b7b45541b556b95f29d": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssl-pkcs11-0.4.10-2.el8.s390x.rpm" + }, + "sha256:18f6ad86cc7f681783183746576ba0cf5b9f0eee9ab18adb615bf6398404bb74": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libacl-2.2.53-1.el8.s390x.rpm" + }, + "sha256:19bb9e23dd56bfc1c29eb620bdd6f059fbea0f4d9a682e71793c52573dc2b5a5": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libpsl-0.20.2-5.el8.s390x.rpm" + }, + "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm" + }, + "sha256:1a47d3d89a38ce0caf4136f981e06c643bfb19f86ff014d4db8b923340612692": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/systemd-pam-239-29.el8.s390x.rpm" + }, + "sha256:1af8f3ff12416a7a7b105840f53ada599e6e276ed08f2dea803ad0b21f962968": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/tar-1.30-4.el8.s390x.rpm" + }, + "sha256:1cc3e427d85ddd7caeda2c9a5063af110987ef0009b19a3924757e76e0f7ac8a": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gmp-6.1.2-10.el8.s390x.rpm" + }, + "sha256:1eca3ef1ec2edeae041c3d55687c806db77a2a1e0837fa4937b664e37b903e22": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/elfutils-libelf-0.178-7.el8.s390x.rpm" + }, + "sha256:2020a1fe4a1643ebdd76f6ae3a0942f115e80279625d54a783f804711915e5a3": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cracklib-2.9.6-15.el8.s390x.rpm" + }, + "sha256:21b1497d132a52c93129700d58c44ba8c36af8da1bbd23fb408c00c3117c1012": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Pod-Escapes-1.07-395.el8.noarch.rpm" + }, + "sha256:2429abaf8afb74f4fdc8050e4c90e315316186d372a809e062a914808d02d907": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/fuse-libs-2.9.7-12.el8.s390x.rpm" + }, + "sha256:25ff1ab94430493bde65da6a800bb2638edc64dca38971eba2c798475cc18b97": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Text-ParseWords-3.30-395.el8.noarch.rpm" + }, + "sha256:268928928fa5d36b3b63387a17d91824924116fd3e3ce4016b9339d38e66b722": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-libs-3.6.8-23.el8.s390x.rpm" + }, + "sha256:277708213acd2b535f20275de72275132bdee2d478382f12a28e7b13a3d34366": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gpgme-1.10.0-6.el8.s390x.rpm" + }, + "sha256:282edb776a576a2745fe7c3278c813e0f8997e27b0ace2507dcf14f50a5f9840": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/pcre2-10.32-1.el8.s390x.rpm" + }, + "sha256:2976f2c007ac981a70e414960cd7426f446ebc8a0bf8feae7a6ece06c63ffefb": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Getopt-Long-2.50-4.el8.noarch.rpm" + }, + "sha256:29f3de36d25fe893787e4c375a4242ff9baec204158025187269a8379116deaa": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsigsegv-2.11-5.el8.s390x.rpm" + }, + "sha256:2a45920a9540e5057920f7c987d3daf910240a6d1ee63d1fa80fcdf3cee4fd71": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/xz-libs-5.2.4-3.el8.s390x.rpm" + }, + "sha256:2aa79d4a09d234c08afc877e292e68244835e447348e85ebee431b0be1fe5104": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-rpm-4.14.2-37.el8.s390x.rpm" + }, + "sha256:2b09ab68296b57a39b302498bdb837c8220e4de3aa1db7a197f23eb6b75cdacd": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/p11-kit-0.23.14-5.el8_0.s390x.rpm" + }, + "sha256:2cc3efed29198a6e4fae393b8db2661e5134b1abba4c6d056b258576925a26ee": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/grubby-8.40-38.el8.s390x.rpm" + }, + "sha256:2cd240f59d6570295931d54dfb392604f524572cfe252b1b1c8cec7793736e4d": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-threads-shared-1.58-2.el8.s390x.rpm" + }, + "sha256:2d457d282782cbf40c42e96e1c1e93ac947ce0d5f55985c97b307d746e7e56e2": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcomps-0.1.11-4.el8.s390x.rpm" + }, + "sha256:2ee0a45ec4832e276ee130d8440cd29de05b7fd3ca335fe4635499a8bcbdfb73": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-HTTP-Tiny-0.074-1.el8.noarch.rpm" + }, + "sha256:302b0d285149d53df9a7805cc664b1a6407c27fc94e4331b9974a21da61c658e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/librepo-1.11.0-2.el8.s390x.rpm" + }, + "sha256:30624f95cd736ceec96b7e2dfc4c4594d38825139c670dcd09b323faeb46d87a": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/bash-4.4.19-10.el8.s390x.rpm" + }, + "sha256:3092ab7fc56e099d2f05167fb582076a29b1c1a2512e4fbabfd3f9000431a66b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/shadow-utils-4.6-8.el8.s390x.rpm" + }, + "sha256:309365c7a2ea977c132ecf9394bfa402b6fae9ba53226f45a3cc07659ca48c24": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/librhsm-0.0.3-3.el8.s390x.rpm" + }, + "sha256:31951582ea375a15365e9a42ec6c0cd8a61e6f593e00f0da013d79ac967878b7": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/systemd-libs-239-29.el8.s390x.rpm" + }, + "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm" + }, + "sha256:34f9e9b309a8c6beabd1969ed3b0a685253eb8dd3e2d22d7ef2045f6796cd908": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-pip-wheel-9.0.3-16.el8.noarch.rpm" + }, + "sha256:35197371e37e599e683c8f5d91d1a5699191dfdc58cd67577caf64d60bfbe630": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libxml2-2.9.7-7.el8.s390x.rpm" + }, + "sha256:35471bc9ee490a4447723813c288126aceaa2617a0f271cb7cb98d99a6111ba0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcap-ng-0.7.9-5.el8.s390x.rpm" + }, + "sha256:35c952c9e48350adf6f94b48dc7636f664ebbe16ed6632ee30c2e0fd22e7f0bf": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/crypto-policies-20191128-2.git23e1bf1.el8.noarch.rpm" + }, + "sha256:36798d9e979c9976ed66e23b3c8bda6250c4e80e411afe55c3942291cb4cb4ce": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-constant-1.33-396.el8.noarch.rpm" + }, + "sha256:36c8375deb752eae4df0760fe4634c9b5be9a1cdaee4a7bea7789004e892ae3c": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libusbx-1.0.22-1.el8.s390x.rpm" + }, + "sha256:3717331bb0807804e392afc98dd1c9cba30fdf2464aaf8869598d483313f9606": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/elfutils-debuginfod-client-0.178-7.el8.s390x.rpm" + }, + "sha256:3853bcdd64872c9fddd28f5fafdc863e6374e57e65be2ee4c581263bfea79697": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ipcalc-0.2.4-4.el8.s390x.rpm" + }, + "sha256:3b060586f41724416985e14e50ea2892e96caa103e4055acee38f00db4bcfdf5": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsemanage-2.9-2.el8.s390x.rpm" + }, + "sha256:3bccb3d9479adaa9dd9491b51247f79f05dd4fcad061a849781debd085e7209f": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libdnf-0.39.1-5.el8.s390x.rpm" + }, + "sha256:3e13b711f15b6c4db837cac46cb3792363fb8d1a92a93de424b3485768fe4488": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libstdc++-8.3.1-5.el8.s390x.rpm" + }, + "sha256:3e1977c9b662e295f67e2114694d4a11d87215346cd7836c8fe8b9cec050f357": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/readline-7.0-10.el8.s390x.rpm" + }, + "sha256:3ea9e13b87f3156dd06ccfe43eeb77cb8834ab7be571a50b2faab5160c49291f": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcom_err-1.45.4-3.el8.s390x.rpm" + }, + "sha256:3f328081e6f97c4a833582e808d07bba2bf43f2b2d74f509c88889ba57fbe643": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-daemon-1.12.8-9.el8.s390x.rpm" + }, + "sha256:40104e3acb91efb6474c87c2bd5ea29cd71f13429a88d78890c2e9bc59bfc4e0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libss-1.45.4-3.el8.s390x.rpm" + }, + "sha256:4019e427bf69ed70e3a3cdfdcdd6771bcee1484f8e83bb69539a9e6530baddf1": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Time-Local-1.280-1.el8.noarch.rpm" + }, + "sha256:408557972679db1bd8c1c2d5a07399ec408d2022fa17d45e6e1d6e9baa6f2513": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/filesystem-3.8-2.el8.s390x.rpm" + }, + "sha256:4103adee1d874f535dccc59558968a8687c0cc8391b8adc4957d2952c244cf3b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-IO-Socket-SSL-2.066-4.el8.noarch.rpm" + }, + "sha256:413d3b549e7339e7fee5a2f8232ec11ec3e7490b57a303bde5b15677af0d9add": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gawk-4.2.1-1.el8.s390x.rpm" + }, + "sha256:41c0f3ea7c7c2f21b5ccb0432db2c1b916ae34691a57f0b7bcb5a09dc7d8fafc": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Term-Cap-1.17-395.el8.noarch.rpm" + }, + "sha256:4291406b201a35d5baaa28d2a0c5b1c218ffb7d981d0ad25532a7d36b672628e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-plugin-systemd-inhibit-4.14.2-37.el8.s390x.rpm" + }, + "sha256:42f4cfc52a662e95002a2a35c0edfe8b855162ce84f813f7110394dbf8ff2596": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/json-c-0.13.1-0.2.el8.s390x.rpm" + }, + "sha256:436949033b66b9e0b91eb42961f0db604dffedd88db1dbce3a8515ade58043da": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libdb-5.3.28-37.el8.s390x.rpm" + }, + "sha256:4446635ab8b16c20215423512319292f21b7cca294b9472c6adb186a303e26c6": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libssh-config-0.9.0-4.el8.noarch.rpm" + }, + "sha256:457108e80b840850057c10f933446fd71a0d20b356c2a039af71e9fd68f61382": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dnf-4.2.17-6.el8.noarch.rpm" + }, + "sha256:4682cfac60ce5f220640c3f7468c39fa2805bcc281cf464fc98c273bace1e579": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libksba-1.3.5-7.el8.s390x.rpm" + }, + "sha256:475a66955c1749ba4ea13b5f4935dd13ac322c516961a512386496fe45d04472": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Scalar-List-Utils-1.49-2.el8.s390x.rpm" + }, + "sha256:4811ab95c1d50ef7380e2c5937ae4490f8e28f56cf787c189437d1709e4423fb": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-podlators-4.11-1.el8.noarch.rpm" + }, + "sha256:484f75c409de524cde02e7002b768ac6583ee4329bab0a28a0088863211d7832": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/initscripts-10.00.6-1.el8.s390x.rpm" + }, + "sha256:4980cdfb336c5de4c4336f41f6947cfb33b7befe7ed045711248469fe48edcd3": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/device-mapper-1.02.169-3.el8.s390x.rpm" + }, + "sha256:49d92784895f84d5526661e685cd38d5df00d610d12b6850061199d672997348": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Errno-1.28-416.el8.s390x.rpm" + }, + "sha256:4a88a0e57e579ef6c53736c26cc8bbd7fa1f6d3de4a7d61fcde96d9ecb6947d9": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gdbm-libs-1.18-1.el8.s390x.rpm" + }, + "sha256:4b0e7c48e4162142940bb0387fec4e2f03cbad1ca06ee75532a515d8355dc865": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libunistring-0.9.9-3.el8.s390x.rpm" + }, + "sha256:4b12fc6f2004fb899b0c06c462bee1932fef97112267e3784e8519ebb42ddede": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libverto-0.3.0-5.el8.s390x.rpm" + }, + "sha256:4b74cef48ac1a874b473311f779b9f9055ee0a0e4b2352439a342f2a353832e5": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/iproute-5.3.0-1.el8.s390x.rpm" + }, + "sha256:4c7e176a4024f519401c2b03fd69c23375714f80b5870894fccbb2abe4d0c724": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/trousers-0.3.14-4.el8.s390x.rpm" + }, + "sha256:4c90fe6c1bb01242a10c5d9e1655a0c27521febeffab450d33d88b4b11a8fa95": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/tzdata-2019c-1.el8.noarch.rpm" + }, + "sha256:4cc7df5bb4b441f031309c30264551fa372dfee8571b54d2333aa81a44995194": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsysfs-2.1.0-24.el8.s390x.rpm" + }, + "sha256:4dd35cd8eeb1b33dafb05a476df6eaaf26dcb5442e0f9c08d547bfd73f226d8f": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libseccomp-2.4.1-1.el8.s390x.rpm" + }, + "sha256:4f850d4565e92e1d5542d790b4983104156480bcd8d73be16a779b4231c6598a": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libblkid-2.32.1-22.el8.s390x.rpm" + }, + "sha256:4fafa365bdf0023cf4efdd69c2f02f73d6e89d63b8a895d472baf5cc4feeed92": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glibc-2.28-101.el8.s390x.rpm" + }, + "sha256:4ff9e7b217f71f5d7c8e23632ac242e7bb3cf9b785865d233516185efad9ccb8": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssh-server-8.0p1-4.el8_1.s390x.rpm" + }, + "sha256:51436452d89b01024c397555cc58b32ab3ac10055bd03043663b5debd089380b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libattr-2.4.48-3.el8.s390x.rpm" + }, + "sha256:534dd2a6b76a2fe8133b0801b230d425f928c50b635b352016da40447c7c7185": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsolv-0.7.7-1.el8.s390x.rpm" + }, + "sha256:537059f8a2598f7b364693aec72f67f1a954c525b381139f736d75edbf19aa12": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-File-Temp-0.230.600-1.el8.noarch.rpm" + }, + "sha256:546ebad5183085f345385a483d5bfea61bb772ecf7071a339d1db614188e69cc": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/shared-mime-info-1.9-3.el8.s390x.rpm" + }, + "sha256:55f735aea8ee2737fa63ebf25d27258f93ad119733a3389bfb8ea37ce140725f": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssl-1.1.1c-15.el8.s390x.rpm" + }, + "sha256:5999ddeea23f7ee7640ad90aacd09cc9c29b51fd489d5fe74db9e5b6ed981fef": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libmaxminddb-1.2.0-7.el8.s390x.rpm" + }, + "sha256:59c099ac7d9aee3e356bada6ecd9aab9bb57585214267b9d71fe2cba98de3cb0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/elfutils-default-yama-scope-0.178-7.el8.noarch.rpm" + }, + "sha256:5a84c721418c21c38a32cb3170f5fbf9cb3a8d1d728b408ce026dd8cd3955c15": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/grep-3.1-6.el8.s390x.rpm" + }, + "sha256:5b681ca8e1778a6a7ec40a7b30a72537aef11518c2bb5ffdde346a0c590a2517": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/e2fsprogs-1.45.4-3.el8.s390x.rpm" + }, + "sha256:5baa177e85af635cf7e1726e6ec558a6b44ebccbe84b13a1fa8a80f6240a19d2": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/policycoreutils-2.9-9.el8.s390x.rpm" + }, + "sha256:5fb154dd6b3ae091297ce6c99576a1203451b9fedfd4d3825f1d0ed60ef9c4f6": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sg3_utils-libs-1.44-5.el8.s390x.rpm" + }, + "sha256:6110d2531a5e40210ec9009cf80e901052406df0a41b075d591f903539575acf": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dnf-data-4.2.17-6.el8.noarch.rpm" + }, + "sha256:6269d41355f5813539f64613a06cda7c6b439ad8754db2f2727c0a2ca5713a1b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libtirpc-1.1.4-4.el8.s390x.rpm" + }, + "sha256:63d72c31437b4813bf29bb4daee23292ca4dbd3aa7d1ce6fa4ebc168b244eeaa": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/lz4-libs-1.8.1.2-4.el8.s390x.rpm" + }, + "sha256:657efda777af4b0d63ab127a72f3373c0d8a18f3b81e912b24a5fbdc9927dc1e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Term-ANSIColor-4.06-396.el8.noarch.rpm" + }, + "sha256:65bef4240948e0b9400b0d50c37420511ef2dbd0c0130bdb4413c3e60d60f2f1": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libmetalink-0.1.3-7.el8.s390x.rpm" + }, + "sha256:66760eb369153a4c41b1837d57a78d9a2f85f72ad567c8ad7ee3d5a89ef6a6cb": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/platform-python-3.6.8-23.el8.s390x.rpm" + }, + "sha256:684d8438fec907d780ad69dd6f7571f84d73fecefc66026b751935d463973bd8": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Data-Dumper-2.167-399.el8.s390x.rpm" + }, + "sha256:6c144a883629536cf8eb7eccc64389f536cc89ef806b06b4a5de18d1746eecf2": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/redhat-release-eula-8.2-1.0.el8.s390x.rpm" + }, + "sha256:6d55aefe2ee59069d22514604c47da81d2638d219fed6e7ea086b0ce64e8c2c0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssl-libs-1.1.1c-15.el8.s390x.rpm" + }, + "sha256:7305aabe9ab0e0d65293384c636bcca017abb426986c59c5f92b9c08be016be1": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libreport-filesystem-2.9.5-10.el8.s390x.rpm" + }, + "sha256:74cad5967ec955d6b8851a5240c4ae823ea10f08dc0e811aba2b79d6dc5a9949": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libmodulemd1-1.8.16-0.2.8.2.1.s390x.rpm" + }, + "sha256:7519f2af362827daecf105e1dccb551350f32dfd3f6a8a85bf6eb1b4b7788255": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-IO-Socket-IP-0.39-5.el8.noarch.rpm" + }, + "sha256:751df4c8122e941b9dc37ab75debbe937807f72e5872401cf82d97c653866e07": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/curl-7.61.1-12.el8.s390x.rpm" + }, + "sha256:75cb8fa5f08004dd63e6647cd699bd011b9118a1bc9d6ee41c0eb772391db077": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sed-4.5-1.el8.s390x.rpm" + }, + "sha256:77066ee655df356370b5d6d736d96835f5712f8e814dfc46b391ecaef9cdd19b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Carp-1.42-396.el8.noarch.rpm" + }, + "sha256:7729a8f9623a6fe0f94428dc8fbb5bb2349659529ecfce4a5f1854e834108614": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/platform-python-setuptools-39.2.0-5.el8.noarch.rpm" + }, + "sha256:78f8ad277e8baeb9e14e9678b6f67786ab9eb3a33f98cd012c175fdb63806a31": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libxcrypt-4.1.1-4.el8.s390x.rpm" + }, + "sha256:792fc1513e33391423efb98aa9bcec85cf5db0a1a417ad41316178590fe069d7": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsepol-2.9-1.el8.s390x.rpm" + }, + "sha256:7af192dd97d723343c5142e2fb1053744b3d1e77b90e041ad5e0222b0258a001": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kmod-25-16.el8.s390x.rpm" + }, + "sha256:7b6a754b55749e5f11ffec19cbb711f570607c2230e5750e5b2aaa915aa765c7": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-Digest-MD5-2.55-396.el8.s390x.rpm" + }, + "sha256:7b8b3d31e3ddd80fd39bf396122bb4b38582f090889b7d465e0db9eb8d6a7bf2": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/findutils-4.6.0-20.el8.s390x.rpm" + }, + "sha256:7c37700693bc781506a06eafc18ab1cb4a7f6b7559f0595c97f60a4f88390233": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Unicode-Normalize-1.25-396.el8.s390x.rpm" + }, + "sha256:7c385e32c12b2639232f74a5dfdfef86daf82e5418bc292c5ab2640fb5cf46dc": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Exporter-5.72-396.el8.noarch.rpm" + }, + "sha256:7e078a375d2636b705e1734be79a8b76a306f8578066c901713663e367925bc7": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Text-Tabs+Wrap-2013.0523-395.el8.noarch.rpm" + }, + "sha256:7e1b890a9e063d4041fc924cb55067db762b32980d5e30fed11e4a7a3696d026": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ncurses-libs-6.1-7.20180224.el8.s390x.rpm" + }, + "sha256:7f97a748a033ca6da465cdb7a861bd844523de3c7a186248bf559f0f64db0952": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libgpg-error-1.31-1.el8.s390x.rpm" + }, + "sha256:7fcc96203ab686368fb66f568d042c893a64ac965390fd73f5c891b8a553f430": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/groff-base-1.22.3-18.el8.s390x.rpm" + }, + "sha256:806670e01e158d45919b7c9a5ff13153b9e2e7516d18c8388bf36b493148380e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/trousers-lib-0.3.14-4.el8.s390x.rpm" + }, + "sha256:813494dff0f52c8eb8105405b961d47ec32ea7ffc037a00c3bff568086b8ccf9": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-setuptools-wheel-39.2.0-5.el8.noarch.rpm" + }, + "sha256:81afd309f084c91d68c06bd46a4fce2e0d1e265a01ff87e309d1202e711e4a02": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-libnet-3.11-3.el8.noarch.rpm" + }, + "sha256:8260d48510e13ebc63a211a1e546b3bf243d1c03488e50744ec1f86cca7f2b9f": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libutempter-1.1.6-14.el8.s390x.rpm" + }, + "sha256:82becf766432b5ef763d2bfdb53f5c233a471ccae45d7703c19f876aaa69afd8": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/json-glib-1.4.4-1.el8.s390x.rpm" + }, + "sha256:82f2336e0c5cf2a9271259a12cc5c84f95959503e2f131a2f41ca5f291ad8055": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/chkconfig-1.11-1.el8.s390x.rpm" + }, + "sha256:83cfd01b18bd91f5ab60a882cd68314afc6eb091538ec840d3cb50d317182344": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-dnf-4.2.17-6.el8.noarch.rpm" + }, + "sha256:84cc3add4aafbee00fb25979f24818d71a99f03c63f8ff6f57e5f085dc693dbc": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gnupg2-smime-2.2.9-1.el8.s390x.rpm" + }, + "sha256:851d321970030ef2a2444c50a959daf4e63b814acc142be821eea560c404ab45": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/s390utils-base-2.6.0-28.el8.s390x.rpm" + }, + "sha256:879d72df89400ac2d742b5093870760ec31b5b3dfef346a91fa3e4fffd54bc16": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/bzip2-libs-1.0.6-26.el8.s390x.rpm" + }, + "sha256:885aad9ce00d5dd80d961c33873de3d7fd5c8e9d7493835e87be438e27423187": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libarchive-3.3.2-8.el8_1.s390x.rpm" + }, + "sha256:89531a2a7fecb645bb841bb38cad65499754e83e186d380f1a246638c661b000": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libnghttp2-1.33.0-1.el8_0.1.s390x.rpm" + }, + "sha256:8ca16af0765e37aac3c2f4ef97791648b0fb0f247196f44bd768aed396c851e2": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cryptsetup-libs-2.2.2-1.el8.s390x.rpm" + }, + "sha256:8d09980b1baa907fbb3ec8a3d8907912a867bcb0c0bf702d9b3c8601874fe112": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-libs-4.14.2-37.el8.s390x.rpm" + }, + "sha256:8da37cb093752a1775c46cb71c0db55db3c3079d80bc1c5c7544d0c411bfac9b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-hawkey-0.39.1-5.el8.s390x.rpm" + }, + "sha256:8e2994a30b907bca3808c40bdde77b0746c4bec0d22c1ccfa74968f98c98a1d7": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsmartcols-2.32.1-22.el8.s390x.rpm" + }, + "sha256:8ea5b21347e371f3f2e124f8ddaf38909485ec829767f936c3764e142c28093d": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libaio-0.3.112-1.el8.s390x.rpm" + }, + "sha256:9077c72004bd8266afafa2af093a30946105bf57ed052525e91bcc6acd9b8cef": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-setuptools-39.2.0-5.el8.noarch.rpm" + }, + "sha256:90cad0b0149c8e21613247039af49e91e138aa5e3e7d158022cfd274f349b123": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-libs-5.26.3-416.el8.s390x.rpm" + }, + "sha256:92bba4bcc53313c8add1ad83efbc2eae5e909a3d4f1632ae564ad99335a53aa0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-tools-1.12.8-9.el8.s390x.rpm" + }, + "sha256:9310c8ec49c5ab54bbe41637f54f8721a64e55a563469ab3693936a0336a7d1b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libssh-0.9.0-4.el8.s390x.rpm" + }, + "sha256:93772aade166fdb4bb4a78a0e08bea1b6f155e416597037267ad2603a767b9f5": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-Mozilla-CA-20160104-7.el8.noarch.rpm" + }, + "sha256:96172fbae0c8f413d09af511f770b08a8e26495b8ab3dfd9c3eb279257621ffd": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-plugin-selinux-4.14.2-37.el8.s390x.rpm" + }, + "sha256:96aa9181e5e0e6ea19b903d8d861171e0dc2c35167626a6d91cfe0f3402ccf46": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/e2fsprogs-libs-1.45.4-3.el8.s390x.rpm" + }, + "sha256:998276e153886e014ce37c429a0f22b76f3ca955c1c9ba89999ce3dface1cf10": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libyaml-0.1.7-5.el8.s390x.rpm" + }, + "sha256:9b88cba46414a21b780f2fc25f8e76a0cc144aabf1bec1eb9873e10369cd27c3": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/keyutils-libs-1.5.10-6.el8.s390x.rpm" + }, + "sha256:9df26f1ca53725cb1091fe8858747bb8c841eee29b604f96031d92880c283238": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/info-6.5-6.el8.s390x.rpm" + }, + "sha256:9e90e6054da06f5c8c2733c3b66987693a58ddc1f05d95b23ca0a464e26a2b22": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-Digest-1.17-395.el8.noarch.rpm" + }, + "sha256:9ee041eadd639ab6d9187f164c7f7b7954bdb4bf5f228555176207528e84fb1f": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Socket-2.027-3.el8.s390x.rpm" + }, + "sha256:9f1bc331219bc9bc97692477137dda660f512e8df95bbc99dd5300d48db13dbf": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/device-mapper-libs-1.02.169-3.el8.s390x.rpm" + }, + "sha256:a00c72bd891d02b1e0a903fb9508d1a1aa77a3d95240b058dd8a7662173730b7": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-4.14.2-37.el8.s390x.rpm" + }, + "sha256:a16c9feab88a9876c41c34cd861490ce28be62e234040a59ce726e79dce4d9ef": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcurl-7.61.1-12.el8.s390x.rpm" + }, + "sha256:a5335a9d7e431ef45f4b6d256bdd7e4bfa98f73d994d6ec2a1b7c5ee792c821a": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.s390x.rpm" + }, + "sha256:a53e65798fdd2968ada806d34a248bde08dfe8d0e1164ebd272a96881483c5ed": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-gpg-1.10.0-6.el8.s390x.rpm" + }, + "sha256:a5b032d5d199e3facef794929ac837d572e7fcb0db3a9c9d2480daccb8765ee1": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ethtool-5.0-2.el8.s390x.rpm" + }, + "sha256:a660c78f704d3d22458c71d86605f51d62e3cc5306d22d66bb1df86c7274ad6c": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Pod-Perldoc-3.28-396.el8.noarch.rpm" + }, + "sha256:a66abcd7674f3356670ac394cbd3d1a34a2055259a1ccb45c02e91d190b44389": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/nettle-3.4.1-1.el8.s390x.rpm" + }, + "sha256:a8d16009aa67cb5f09bdeeca57c1198ad1ecd2d1a963146369bb6200d1adcf5a": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/fipscheck-lib-1.5.0-4.el8.s390x.rpm" + }, + "sha256:a8dadc6e4ba668ee14fda07fecd8879c8c7acdfd9b2effeb829b541d1de0d7a2": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sg3_utils-1.44-5.el8.s390x.rpm" + }, + "sha256:a971b04b37533967e2b76d92af5b7d5dfe33998584bcc35919044fc78a456123": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/qemu-img-2.12.0-99.module+el8.2.0+5827+8c39933c.s390x.rpm" + }, + "sha256:abe578c5dee7c306812e241c77ebc8ba4b54f90df8e65c56f8f202ba6e0d7183": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-parent-0.237-1.el8.noarch.rpm" + }, + "sha256:ad32bb58e49467cba3dabceee4e85202e8c4118624f870c299b49ff0396cda30": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ima-evm-utils-1.1-5.el8.s390x.rpm" + }, + "sha256:ae2372e9110dfbf53c83bc7f78f867edc3cdb4044d62f1e63174cc3cf2d9e06e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/selinux-policy-targeted-3.14.3-41.el8.noarch.rpm" + }, + "sha256:af53fe5838e16824b50a6f16a4cc5850d2406f054d7c961c813673fc27698042": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libtasn1-4.13-3.el8.s390x.rpm" + }, + "sha256:b1af9ab85021403842c69373903db6d89328575a0902b95e852ae8052a177ac7": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/fipscheck-1.5.0-4.el8.s390x.rpm" + }, + "sha256:b2841b2cb926e7f529f604e2462304dcd0c63ff08f892eb573fb14029ad6511f": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sysfsutils-2.1.0-24.el8.s390x.rpm" + }, + "sha256:b63261bfd20aaee97ab2a47c2368c8eab62fc62c1f988a80f52715347c3bd72d": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/expat-2.2.5-3.el8.s390x.rpm" + }, + "sha256:b79e0e33b98801e7cda1c845b31cfd5537b150fe4da4df1cacfc1d1534d57ce2": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-Net-SSLeay-1.88-1.el8.s390x.rpm" + }, + "sha256:b8b2e5b057d65cee6a8c65f236fbd0a9a717d15384f4d3cbc678563b223bf011": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libffi-3.1-21.el8.s390x.rpm" + }, + "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/basesystem-11-5.el8.noarch.rpm" + }, + "sha256:bb54663316f683ffb7732f290d72b7c76a2b42e691a9d5a89869831b3982e41b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sqlite-libs-3.26.0-6.el8.s390x.rpm" + }, + "sha256:bb55b46b0849b445cbb7c38749b79affcbf4ae4e43c86a39ba28a64dff1ad0ec": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gzip-1.9-9.el8.s390x.rpm" + }, + "sha256:bbcee6c77d908470de66c126d770790a199337a32db93d8f07bb705330c8d7ba": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openldap-2.4.46-11.el8.s390x.rpm" + }, + "sha256:bbebf8199fc730d588d48d52bf839ac7cfefd921d32038a62d2d221d745ce945": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libselinux-utils-2.9-3.el8.s390x.rpm" + }, + "sha256:bbf1c85af70c001f23f7a47dbc604fa155765446aa16e4403ec12af21cd1ab42": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/procps-ng-3.3.15-1.el8.s390x.rpm" + }, + "sha256:bcc032463153f59b2b58fa3ef73c3bf871b9e28ba1c0df09b8a5df80ce9af559": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-interpreter-5.26.3-416.el8.s390x.rpm" + }, + "sha256:bce48e34f1c6be096d433665f9c1f69e769445c179b91bc5b79a565604a74e3d": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libpwquality-1.4.0-9.el8.s390x.rpm" + }, + "sha256:be01593ef51abcb8540b55d0b40946f3d0d507e2f4cde1023898635b7e03fbef": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsecret-0.18.6-1.el8.s390x.rpm" + }, + "sha256:c190674c383927684353be1fa61f000971811cb6a82782e81adf4906675723c2": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcap-2.26-3.el8.s390x.rpm" + }, + "sha256:c2b12d1994efd87e8ba215e98a47c48c6e0fd07929b4889f79fed02d73b48b39": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-libs-1.12.8-9.el8.s390x.rpm" + }, + "sha256:c34e6300e7c863eba8fc9ac5c43b01c5474e88d2246c6d0bc97b9f168611e53c": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/hostname-3.20-6.el8.s390x.rpm" + }, + "sha256:c5a8ad2ff91b081c664dc9a946acaffc85c9dfd202c9e9667f56ad4c23211807": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/elfutils-libs-0.178-7.el8.s390x.rpm" + }, + "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm" + }, + "sha256:cb1d1285d4195cd9b5098120649b95963341366f6e5490dfa9c5f06d7fa32dd4": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/coreutils-8.30-6.el8.s390x.rpm" + }, + "sha256:cbfc3d7643d281649042460c2ad77758cdd0e99536f3559ad7b96a4dcc5a10a6": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssh-8.0p1-4.el8_1.s390x.rpm" + }, + "sha256:ccd4a3fe16edc7f4a47983e191995b3308937b0483f84b141401285b867c8ef7": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libzstd-1.4.2-2.el8.s390x.rpm" + }, + "sha256:ccde203ded5f1bdc73301468985fbab7c4dc2f707a3565c6197261ac6f7361d3": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/xfsprogs-5.0.0-2.el8.s390x.rpm" + }, + "sha256:ce09871bed0750f1f238db93099b9ae264c746496ae2d79ce654afb8f513f243": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ncurses-6.1-7.20180224.el8.s390x.rpm" + }, + "sha256:cff5078143ab38f37a01e840bf5d42e2730c4b8e08ee7221a607ef52de8168cf": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-common-1.12.8-9.el8.noarch.rpm" + }, + "sha256:d05b84d3b2126b91834bd388af680b10a73595363d138cd05920eb4ca8c0f03e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/xz-5.2.4-3.el8.s390x.rpm" + }, + "sha256:d115c393bf047f72711f757568d43e633f75237a76e3cdc0ae267da6ad03ba04": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gnutls-3.6.8-9.el8.s390x.rpm" + }, + "sha256:d120bc374362edd18914525ef7311a63e24c888f924c4e7315e036f86796309e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libgcrypt-1.8.3-4.el8.s390x.rpm" + }, + "sha256:d2c97f8d96d6f82e34975bfcf8c25606e0370a3def4da27d6aabc85a86f589ca": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Encode-2.97-3.el8.s390x.rpm" + }, + "sha256:d3e6f8e99a5c411a1efa7b373cac48b41e9237edf5b65ec4e9f25fb496485bbd": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/iptables-libs-1.8.4-10.el8.s390x.rpm" + }, + "sha256:d3e95570de2bb3b418df9f883b22eae22086d60c437d9174c8e6bae71d0b7c11": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/setup-2.12.2-5.el8.noarch.rpm" + }, + "sha256:d6a82133f2ab89874788c141b10ed1f090689cd823a7559ed9197403f4000506": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Storable-3.11-3.el8.s390x.rpm" + }, + "sha256:d6afe4abbdf882ed7f15dc9ede23040494b1cdc57981a0d88b6d96b91da471f0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/redhat-release-8.2-1.0.el8.s390x.rpm" + }, + "sha256:d6ba0f45311859012b68738abd9062cf20efe954cf3fd97e602e09fbfe8e3fdb": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/file-libs-5.33-13.el8.s390x.rpm" + }, + "sha256:d7789087a45017b084c27678ed782e8d923bd402547156a467a910b8682a8b02": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libfdisk-2.32.1-22.el8.s390x.rpm" + }, + "sha256:d906b13d5dd7a5595133e2a1af83ae17a1aae0c107579db723d21ec4371f3570": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-File-Path-2.15-2.el8.noarch.rpm" + }, + "sha256:dbb28005c8f68d794af2d9b35a3fcc3294190678b8cc9475acbad8a25a8837d3": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-IO-1.38-416.el8.s390x.rpm" + }, + "sha256:dccd8b3ffb8a9015afe1d4cfa65df84589ede6582845899515d176695b457599": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/zlib-1.2.11-13.el8.s390x.rpm" + }, + "sha256:dd29e9ec3dac16997fa4718edc3dd016fc6bd070fb0ae17c58c064ff20aa5b03": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/util-linux-2.32.1-22.el8.s390x.rpm" + }, + "sha256:dd6a948e5a656701156c618e202c0b6defd11ba6f162b6790cbb42cea15141ae": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-URI-1.73-3.el8.noarch.rpm" + }, + "sha256:dd8480924a9e9d6adc3c36562e090aec3f33e57dc93e4dea73ff37618755406b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cracklib-dicts-2.9.6-15.el8.s390x.rpm" + }, + "sha256:dd91378f68acef88ad2c653450a9e03054d87979e79625fd5cd3f01b5a68ba55": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-pip-9.0.3-16.el8.noarch.rpm" + }, + "sha256:df582e688213786293a439987456c58463c8a30564fbd9c4999d0300c17e67ba": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glibc-common-2.28-101.el8.s390x.rpm" + }, + "sha256:e153757cbf8c1552b4f3f9593335a8332030b3aca304caf29258721c52ae4ec0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glib2-2.56.4-8.el8.s390x.rpm" + }, + "sha256:e17077c8803f792c02570b2768510b8e4955bd0ae68ab4930e7060fcbb3793f6": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Pod-Simple-3.35-395.el8.noarch.rpm" + }, + "sha256:e1f215df72d86fec4f860cf9a3c318ad7e3db9ac853956650d01087ff0f46caa": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.s390x.rpm" + }, + "sha256:e2e45f9ad3fa2d15b62b0d166975cf7c1ba94791cbfa305ab22086ceedff8867": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/npth-1.5-4.el8.s390x.rpm" + }, + "sha256:e3c3592c21ceeefe6b62a3b6db97fc58e0ef8ed5208467a2a72dcbced0258cc6": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libpcap-1.9.0-3.el8.s390x.rpm" + }, + "sha256:e57e36570f635b8df5dfcef61d40bb023ba5dd05a8b3109d6d671d956fcff69e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/platform-python-pip-9.0.3-16.el8.noarch.rpm" + }, + "sha256:e6a00b8a31b790687f294e1a829e3171b4963b34f302aa1f7eeb245d4b49071a": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-1.12.8-9.el8.s390x.rpm" + }, + "sha256:e6d780ed12021cb842de269c55a238649f6f0f76a08f5fde0db2463bdb15e067": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-build-libs-4.14.2-37.el8.s390x.rpm" + }, + "sha256:e6ff2a695a331ce5100f1c195d5748ce33408e300d9d611387889d77719007a3": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libmount-2.32.1-22.el8.s390x.rpm" + }, + "sha256:e81af37e55bca721e41de93cbffedac3959256dd44bc67605908ac0298a1b74f": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kmod-libs-25-16.el8.s390x.rpm" + }, + "sha256:e944915a4f9e920d831db11d1a2a08e3ab8712d04735e3499150f90be056026a": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gdbm-1.18-1.el8.s390x.rpm" + }, + "sha256:e990635ac1345ee9d17cd8c20b79341765ca68dce1f9775a68a0a4badce4f333": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.s390x.rpm" + }, + "sha256:ec3e5c0bec8bcc4cf03d665e3d48cb0511bd5b9c879630563b29ddbd05bbbda0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/pcre-8.42-4.el8.s390x.rpm" + }, + "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm" + }, + "sha256:ed03ae7d72ac4813b40490dfa0fb27fbb6828142d5507dc2fdcee636c4d19125": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/selinux-policy-3.14.3-41.el8.noarch.rpm" + }, + "sha256:ee7f3a5b1494773ff9003c831f724a09213cac9f160fd2a764d13ea9b1a3921b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/systemd-239-29.el8.s390x.rpm" + }, + "sha256:ef48355b0f8c051de6931674024dc472be1eddb4573da8d56a0668faf2352e0c": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/network-scripts-10.00.6-1.el8.s390x.rpm" + }, + "sha256:f096312848673cfea1e1e448083321fe4599b3339a79dc2b9e3998fd2ea1bdf3": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/p11-kit-trust-0.23.14-5.el8_0.s390x.rpm" + }, + "sha256:f0f8b7ec4ec783f4e6310208926f54b0bceed5476b6cebb5be9b336faaeaab0a": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/diffutils-3.6-6.el8.s390x.rpm" + }, + "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm" + }, + "sha256:f1e0648c7c3a1b0286d9b300966effd51f328a724c37c32a3bbbcc8e00c6b168": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libdb-utils-5.3.28-37.el8.s390x.rpm" + }, + "sha256:f3693f0a1c9e9e1772795fd0a88d48d8a5d8fa7d6e1b2f0f4bc42d577ef54076": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/pam-1.3.1-8.el8.s390x.rpm" + }, + "sha256:f3b45fd08cba7c338a8103d236ba4fd2c9bbe36e6d4ef96ddcb6a722d4cf529e": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-libcomps-0.1.11-4.el8.s390x.rpm" + }, + "sha256:f727e7919c662ae990d02ad2a6299ed3161ad7522587c11441477aae03549f06": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Pod-Usage-1.69-395.el8.noarch.rpm" + }, + "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm" + }, + "sha256:f934a992e23ec2d6c2adb63d5031912c4813238a82eb56ce5e0acea184588e78": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glibc-all-langpacks-2.28-101.el8.s390x.rpm" + }, + "sha256:fbbc385a90edf08de42879e9c8ff762c5d3d9ca750d10e0bccbcd56592e5cff0": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/unbound-libs-1.7.3-10.el8.s390x.rpm" + }, + "sha256:fc9f17a2fc6897c643fff67cf393051bb07ad16962b19a48f0e9991649ebae08": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libgcc-8.3.1-5.el8.s390x.rpm" + }, + "sha256:fd05bb7abdb6087d9c0eaaf321d30bc11399dc74881374952c4a5215ea2c86e8": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/lua-libs-5.3.4-11.el8.s390x.rpm" + }, + "sha256:fdbce603c9cb7792728413638e4d5591f0d094a361e07ff4fe0b7014a61b0104": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-threads-2.21-2.el8.s390x.rpm" + }, + "sha256:fdfde1848ded3233eadd44c677269196ef72cd8e82fd372ba2c45df4fa36a140": { + "url": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libmnl-1.0.4-6.el8.s390x.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:126bbe586fe4116b343fc349c80480f01d597c2a41abec5bc15019b126f51fdc" + }, + { + "checksum": "sha256:a5335a9d7e431ef45f4b6d256bdd7e4bfa98f73d994d6ec2a1b7c5ee792c821a" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:30624f95cd736ceec96b7e2dfc4c4594d38825139c670dcd09b323faeb46d87a" + }, + { + "checksum": "sha256:03d1b5541823ba8637e04c69d0e00d711e0c799e764d6191d6ad989b459004e3" + }, + { + "checksum": "sha256:879d72df89400ac2d742b5093870760ec31b5b3dfef346a91fa3e4fffd54bc16" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:82f2336e0c5cf2a9271259a12cc5c84f95959503e2f131a2f41ca5f291ad8055" + }, + { + "checksum": "sha256:cb1d1285d4195cd9b5098120649b95963341366f6e5490dfa9c5f06d7fa32dd4" + }, + { + "checksum": "sha256:0c3e22cf2e8ab8b4c4f043f043e4e71dfccbe9b30ecab3a6532f1dddcc06662c" + }, + { + "checksum": "sha256:2020a1fe4a1643ebdd76f6ae3a0942f115e80279625d54a783f804711915e5a3" + }, + { + "checksum": "sha256:dd8480924a9e9d6adc3c36562e090aec3f33e57dc93e4dea73ff37618755406b" + }, + { + "checksum": "sha256:35c952c9e48350adf6f94b48dc7636f664ebbe16ed6632ee30c2e0fd22e7f0bf" + }, + { + "checksum": "sha256:8ca16af0765e37aac3c2f4ef97791648b0fb0f247196f44bd768aed396c851e2" + }, + { + "checksum": "sha256:751df4c8122e941b9dc37ab75debbe937807f72e5872401cf82d97c653866e07" + }, + { + "checksum": "sha256:0cd56334755c7cbc9a4b18d9746dc3cae765a9ae8231b26e1e740a447d82c499" + }, + { + "checksum": "sha256:e6a00b8a31b790687f294e1a829e3171b4963b34f302aa1f7eeb245d4b49071a" + }, + { + "checksum": "sha256:cff5078143ab38f37a01e840bf5d42e2730c4b8e08ee7221a607ef52de8168cf" + }, + { + "checksum": "sha256:3f328081e6f97c4a833582e808d07bba2bf43f2b2d74f509c88889ba57fbe643" + }, + { + "checksum": "sha256:c2b12d1994efd87e8ba215e98a47c48c6e0fd07929b4889f79fed02d73b48b39" + }, + { + "checksum": "sha256:92bba4bcc53313c8add1ad83efbc2eae5e909a3d4f1632ae564ad99335a53aa0" + }, + { + "checksum": "sha256:4980cdfb336c5de4c4336f41f6947cfb33b7befe7ed045711248469fe48edcd3" + }, + { + "checksum": "sha256:9f1bc331219bc9bc97692477137dda660f512e8df95bbc99dd5300d48db13dbf" + }, + { + "checksum": "sha256:f0f8b7ec4ec783f4e6310208926f54b0bceed5476b6cebb5be9b336faaeaab0a" + }, + { + "checksum": "sha256:457108e80b840850057c10f933446fd71a0d20b356c2a039af71e9fd68f61382" + }, + { + "checksum": "sha256:6110d2531a5e40210ec9009cf80e901052406df0a41b075d591f903539575acf" + }, + { + "checksum": "sha256:04e227546e73954475809db05a6133e4f978ae026423bd800247370f8758b31e" + }, + { + "checksum": "sha256:5b681ca8e1778a6a7ec40a7b30a72537aef11518c2bb5ffdde346a0c590a2517" + }, + { + "checksum": "sha256:96aa9181e5e0e6ea19b903d8d861171e0dc2c35167626a6d91cfe0f3402ccf46" + }, + { + "checksum": "sha256:59c099ac7d9aee3e356bada6ecd9aab9bb57585214267b9d71fe2cba98de3cb0" + }, + { + "checksum": "sha256:1eca3ef1ec2edeae041c3d55687c806db77a2a1e0837fa4937b664e37b903e22" + }, + { + "checksum": "sha256:c5a8ad2ff91b081c664dc9a946acaffc85c9dfd202c9e9667f56ad4c23211807" + }, + { + "checksum": "sha256:a5b032d5d199e3facef794929ac837d572e7fcb0db3a9c9d2480daccb8765ee1" + }, + { + "checksum": "sha256:b63261bfd20aaee97ab2a47c2368c8eab62fc62c1f988a80f52715347c3bd72d" + }, + { + "checksum": "sha256:d6ba0f45311859012b68738abd9062cf20efe954cf3fd97e602e09fbfe8e3fdb" + }, + { + "checksum": "sha256:408557972679db1bd8c1c2d5a07399ec408d2022fa17d45e6e1d6e9baa6f2513" + }, + { + "checksum": "sha256:7b8b3d31e3ddd80fd39bf396122bb4b38582f090889b7d465e0db9eb8d6a7bf2" + }, + { + "checksum": "sha256:2429abaf8afb74f4fdc8050e4c90e315316186d372a809e062a914808d02d907" + }, + { + "checksum": "sha256:413d3b549e7339e7fee5a2f8232ec11ec3e7490b57a303bde5b15677af0d9add" + }, + { + "checksum": "sha256:e944915a4f9e920d831db11d1a2a08e3ab8712d04735e3499150f90be056026a" + }, + { + "checksum": "sha256:4a88a0e57e579ef6c53736c26cc8bbd7fa1f6d3de4a7d61fcde96d9ecb6947d9" + }, + { + "checksum": "sha256:e153757cbf8c1552b4f3f9593335a8332030b3aca304caf29258721c52ae4ec0" + }, + { + "checksum": "sha256:4fafa365bdf0023cf4efdd69c2f02f73d6e89d63b8a895d472baf5cc4feeed92" + }, + { + "checksum": "sha256:f934a992e23ec2d6c2adb63d5031912c4813238a82eb56ce5e0acea184588e78" + }, + { + "checksum": "sha256:df582e688213786293a439987456c58463c8a30564fbd9c4999d0300c17e67ba" + }, + { + "checksum": "sha256:1cc3e427d85ddd7caeda2c9a5063af110987ef0009b19a3924757e76e0f7ac8a" + }, + { + "checksum": "sha256:0e6d88ed1b7038d234b0cbec9bdcf9239efc898993cfb2092ffa7fe52864d9a7" + }, + { + "checksum": "sha256:84cc3add4aafbee00fb25979f24818d71a99f03c63f8ff6f57e5f085dc693dbc" + }, + { + "checksum": "sha256:d115c393bf047f72711f757568d43e633f75237a76e3cdc0ae267da6ad03ba04" + }, + { + "checksum": "sha256:277708213acd2b535f20275de72275132bdee2d478382f12a28e7b13a3d34366" + }, + { + "checksum": "sha256:5a84c721418c21c38a32cb3170f5fbf9cb3a8d1d728b408ce026dd8cd3955c15" + }, + { + "checksum": "sha256:7fcc96203ab686368fb66f568d042c893a64ac965390fd73f5c891b8a553f430" + }, + { + "checksum": "sha256:2cc3efed29198a6e4fae393b8db2661e5134b1abba4c6d056b258576925a26ee" + }, + { + "checksum": "sha256:bb55b46b0849b445cbb7c38749b79affcbf4ae4e43c86a39ba28a64dff1ad0ec" + }, + { + "checksum": "sha256:c34e6300e7c863eba8fc9ac5c43b01c5474e88d2246c6d0bc97b9f168611e53c" + }, + { + "checksum": "sha256:ad32bb58e49467cba3dabceee4e85202e8c4118624f870c299b49ff0396cda30" + }, + { + "checksum": "sha256:9df26f1ca53725cb1091fe8858747bb8c841eee29b604f96031d92880c283238" + }, + { + "checksum": "sha256:484f75c409de524cde02e7002b768ac6583ee4329bab0a28a0088863211d7832" + }, + { + "checksum": "sha256:3853bcdd64872c9fddd28f5fafdc863e6374e57e65be2ee4c581263bfea79697" + }, + { + "checksum": "sha256:4b74cef48ac1a874b473311f779b9f9055ee0a0e4b2352439a342f2a353832e5" + }, + { + "checksum": "sha256:d3e6f8e99a5c411a1efa7b373cac48b41e9237edf5b65ec4e9f25fb496485bbd" + }, + { + "checksum": "sha256:42f4cfc52a662e95002a2a35c0edfe8b855162ce84f813f7110394dbf8ff2596" + }, + { + "checksum": "sha256:82becf766432b5ef763d2bfdb53f5c233a471ccae45d7703c19f876aaa69afd8" + }, + { + "checksum": "sha256:9b88cba46414a21b780f2fc25f8e76a0cc144aabf1bec1eb9873e10369cd27c3" + }, + { + "checksum": "sha256:7af192dd97d723343c5142e2fb1053744b3d1e77b90e041ad5e0222b0258a001" + }, + { + "checksum": "sha256:e81af37e55bca721e41de93cbffedac3959256dd44bc67605908ac0298a1b74f" + }, + { + "checksum": "sha256:04ae113a2f41daae0c19672c9920f26bb46960e79ce46e626591a7e278d636a3" + }, + { + "checksum": "sha256:18f6ad86cc7f681783183746576ba0cf5b9f0eee9ab18adb615bf6398404bb74" + }, + { + "checksum": "sha256:8ea5b21347e371f3f2e124f8ddaf38909485ec829767f936c3764e142c28093d" + }, + { + "checksum": "sha256:885aad9ce00d5dd80d961c33873de3d7fd5c8e9d7493835e87be438e27423187" + }, + { + "checksum": "sha256:0914bb1e4fd12735f4919734cb42871d5a576dfe8c3df82e9de3d867c87755c1" + }, + { + "checksum": "sha256:51436452d89b01024c397555cc58b32ab3ac10055bd03043663b5debd089380b" + }, + { + "checksum": "sha256:4f850d4565e92e1d5542d790b4983104156480bcd8d73be16a779b4231c6598a" + }, + { + "checksum": "sha256:c190674c383927684353be1fa61f000971811cb6a82782e81adf4906675723c2" + }, + { + "checksum": "sha256:35471bc9ee490a4447723813c288126aceaa2617a0f271cb7cb98d99a6111ba0" + }, + { + "checksum": "sha256:3ea9e13b87f3156dd06ccfe43eeb77cb8834ab7be571a50b2faab5160c49291f" + }, + { + "checksum": "sha256:2d457d282782cbf40c42e96e1c1e93ac947ce0d5f55985c97b307d746e7e56e2" + }, + { + "checksum": "sha256:a16c9feab88a9876c41c34cd861490ce28be62e234040a59ce726e79dce4d9ef" + }, + { + "checksum": "sha256:436949033b66b9e0b91eb42961f0db604dffedd88db1dbce3a8515ade58043da" + }, + { + "checksum": "sha256:f1e0648c7c3a1b0286d9b300966effd51f328a724c37c32a3bbbcc8e00c6b168" + }, + { + "checksum": "sha256:3bccb3d9479adaa9dd9491b51247f79f05dd4fcad061a849781debd085e7209f" + }, + { + "checksum": "sha256:08178dfd67abc7e7984e94e62289d78ce84ead317c512ccb6596f7a752984dc7" + }, + { + "checksum": "sha256:d7789087a45017b084c27678ed782e8d923bd402547156a467a910b8682a8b02" + }, + { + "checksum": "sha256:b8b2e5b057d65cee6a8c65f236fbd0a9a717d15384f4d3cbc678563b223bf011" + }, + { + "checksum": "sha256:fc9f17a2fc6897c643fff67cf393051bb07ad16962b19a48f0e9991649ebae08" + }, + { + "checksum": "sha256:d120bc374362edd18914525ef7311a63e24c888f924c4e7315e036f86796309e" + }, + { + "checksum": "sha256:7f97a748a033ca6da465cdb7a861bd844523de3c7a186248bf559f0f64db0952" + }, + { + "checksum": "sha256:0af540f9af46e2ed891119dab6189e425323ac0742e0dd0f08b6df4e3ecb7092" + }, + { + "checksum": "sha256:4682cfac60ce5f220640c3f7468c39fa2805bcc281cf464fc98c273bace1e579" + }, + { + "checksum": "sha256:65bef4240948e0b9400b0d50c37420511ef2dbd0c0130bdb4413c3e60d60f2f1" + }, + { + "checksum": "sha256:fdfde1848ded3233eadd44c677269196ef72cd8e82fd372ba2c45df4fa36a140" + }, + { + "checksum": "sha256:74cad5967ec955d6b8851a5240c4ae823ea10f08dc0e811aba2b79d6dc5a9949" + }, + { + "checksum": "sha256:e6ff2a695a331ce5100f1c195d5748ce33408e300d9d611387889d77719007a3" + }, + { + "checksum": "sha256:89531a2a7fecb645bb841bb38cad65499754e83e186d380f1a246638c661b000" + }, + { + "checksum": "sha256:e1f215df72d86fec4f860cf9a3c318ad7e3db9ac853956650d01087ff0f46caa" + }, + { + "checksum": "sha256:e3c3592c21ceeefe6b62a3b6db97fc58e0ef8ed5208467a2a72dcbced0258cc6" + }, + { + "checksum": "sha256:19bb9e23dd56bfc1c29eb620bdd6f059fbea0f4d9a682e71793c52573dc2b5a5" + }, + { + "checksum": "sha256:bce48e34f1c6be096d433665f9c1f69e769445c179b91bc5b79a565604a74e3d" + }, + { + "checksum": "sha256:302b0d285149d53df9a7805cc664b1a6407c27fc94e4331b9974a21da61c658e" + }, + { + "checksum": "sha256:7305aabe9ab0e0d65293384c636bcca017abb426986c59c5f92b9c08be016be1" + }, + { + "checksum": "sha256:309365c7a2ea977c132ecf9394bfa402b6fae9ba53226f45a3cc07659ca48c24" + }, + { + "checksum": "sha256:4dd35cd8eeb1b33dafb05a476df6eaaf26dcb5442e0f9c08d547bfd73f226d8f" + }, + { + "checksum": "sha256:be01593ef51abcb8540b55d0b40946f3d0d507e2f4cde1023898635b7e03fbef" + }, + { + "checksum": "sha256:18ad184245a885a9f2ef53c58aef0ef70fe4e4d6c7728d72b2b6527117f63b61" + }, + { + "checksum": "sha256:bbebf8199fc730d588d48d52bf839ac7cfefd921d32038a62d2d221d745ce945" + }, + { + "checksum": "sha256:3b060586f41724416985e14e50ea2892e96caa103e4055acee38f00db4bcfdf5" + }, + { + "checksum": "sha256:792fc1513e33391423efb98aa9bcec85cf5db0a1a417ad41316178590fe069d7" + }, + { + "checksum": "sha256:29f3de36d25fe893787e4c375a4242ff9baec204158025187269a8379116deaa" + }, + { + "checksum": "sha256:8e2994a30b907bca3808c40bdde77b0746c4bec0d22c1ccfa74968f98c98a1d7" + }, + { + "checksum": "sha256:534dd2a6b76a2fe8133b0801b230d425f928c50b635b352016da40447c7c7185" + }, + { + "checksum": "sha256:40104e3acb91efb6474c87c2bd5ea29cd71f13429a88d78890c2e9bc59bfc4e0" + }, + { + "checksum": "sha256:9310c8ec49c5ab54bbe41637f54f8721a64e55a563469ab3693936a0336a7d1b" + }, + { + "checksum": "sha256:4446635ab8b16c20215423512319292f21b7cca294b9472c6adb186a303e26c6" + }, + { + "checksum": "sha256:3e13b711f15b6c4db837cac46cb3792363fb8d1a92a93de424b3485768fe4488" + }, + { + "checksum": "sha256:4cc7df5bb4b441f031309c30264551fa372dfee8571b54d2333aa81a44995194" + }, + { + "checksum": "sha256:af53fe5838e16824b50a6f16a4cc5850d2406f054d7c961c813673fc27698042" + }, + { + "checksum": "sha256:6269d41355f5813539f64613a06cda7c6b439ad8754db2f2727c0a2ca5713a1b" + }, + { + "checksum": "sha256:4b0e7c48e4162142940bb0387fec4e2f03cbad1ca06ee75532a515d8355dc865" + }, + { + "checksum": "sha256:36c8375deb752eae4df0760fe4634c9b5be9a1cdaee4a7bea7789004e892ae3c" + }, + { + "checksum": "sha256:8260d48510e13ebc63a211a1e546b3bf243d1c03488e50744ec1f86cca7f2b9f" + }, + { + "checksum": "sha256:079483da2949b3bb56df6d265a700b5cc67d3ff1f945afa1c519b0d53772c199" + }, + { + "checksum": "sha256:4b12fc6f2004fb899b0c06c462bee1932fef97112267e3784e8519ebb42ddede" + }, + { + "checksum": "sha256:78f8ad277e8baeb9e14e9678b6f67786ab9eb3a33f98cd012c175fdb63806a31" + }, + { + "checksum": "sha256:35197371e37e599e683c8f5d91d1a5699191dfdc58cd67577caf64d60bfbe630" + }, + { + "checksum": "sha256:998276e153886e014ce37c429a0f22b76f3ca955c1c9ba89999ce3dface1cf10" + }, + { + "checksum": "sha256:ccd4a3fe16edc7f4a47983e191995b3308937b0483f84b141401285b867c8ef7" + }, + { + "checksum": "sha256:fd05bb7abdb6087d9c0eaaf321d30bc11399dc74881374952c4a5215ea2c86e8" + }, + { + "checksum": "sha256:63d72c31437b4813bf29bb4daee23292ca4dbd3aa7d1ce6fa4ebc168b244eeaa" + }, + { + "checksum": "sha256:0a3f52922caaa3b8213d350c3c955558d77fe31fe74f27fe58f178f93f381d56" + }, + { + "checksum": "sha256:ce09871bed0750f1f238db93099b9ae264c746496ae2d79ce654afb8f513f243" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:7e1b890a9e063d4041fc924cb55067db762b32980d5e30fed11e4a7a3696d026" + }, + { + "checksum": "sha256:a66abcd7674f3356670ac394cbd3d1a34a2055259a1ccb45c02e91d190b44389" + }, + { + "checksum": "sha256:ef48355b0f8c051de6931674024dc472be1eddb4573da8d56a0668faf2352e0c" + }, + { + "checksum": "sha256:e2e45f9ad3fa2d15b62b0d166975cf7c1ba94791cbfa305ab22086ceedff8867" + }, + { + "checksum": "sha256:bbcee6c77d908470de66c126d770790a199337a32db93d8f07bb705330c8d7ba" + }, + { + "checksum": "sha256:55f735aea8ee2737fa63ebf25d27258f93ad119733a3389bfb8ea37ce140725f" + }, + { + "checksum": "sha256:6d55aefe2ee59069d22514604c47da81d2638d219fed6e7ea086b0ce64e8c2c0" + }, + { + "checksum": "sha256:18c6c5fbd998c4d642b2dba059ba5042288b2f566cb03b7b45541b556b95f29d" + }, + { + "checksum": "sha256:2b09ab68296b57a39b302498bdb837c8220e4de3aa1db7a197f23eb6b75cdacd" + }, + { + "checksum": "sha256:f096312848673cfea1e1e448083321fe4599b3339a79dc2b9e3998fd2ea1bdf3" + }, + { + "checksum": "sha256:f3693f0a1c9e9e1772795fd0a88d48d8a5d8fa7d6e1b2f0f4bc42d577ef54076" + }, + { + "checksum": "sha256:ec3e5c0bec8bcc4cf03d665e3d48cb0511bd5b9c879630563b29ddbd05bbbda0" + }, + { + "checksum": "sha256:282edb776a576a2745fe7c3278c813e0f8997e27b0ace2507dcf14f50a5f9840" + }, + { + "checksum": "sha256:77066ee655df356370b5d6d736d96835f5712f8e814dfc46b391ecaef9cdd19b" + }, + { + "checksum": "sha256:684d8438fec907d780ad69dd6f7571f84d73fecefc66026b751935d463973bd8" + }, + { + "checksum": "sha256:d2c97f8d96d6f82e34975bfcf8c25606e0370a3def4da27d6aabc85a86f589ca" + }, + { + "checksum": "sha256:49d92784895f84d5526661e685cd38d5df00d610d12b6850061199d672997348" + }, + { + "checksum": "sha256:7c385e32c12b2639232f74a5dfdfef86daf82e5418bc292c5ab2640fb5cf46dc" + }, + { + "checksum": "sha256:d906b13d5dd7a5595133e2a1af83ae17a1aae0c107579db723d21ec4371f3570" + }, + { + "checksum": "sha256:537059f8a2598f7b364693aec72f67f1a954c525b381139f736d75edbf19aa12" + }, + { + "checksum": "sha256:2976f2c007ac981a70e414960cd7426f446ebc8a0bf8feae7a6ece06c63ffefb" + }, + { + "checksum": "sha256:2ee0a45ec4832e276ee130d8440cd29de05b7fd3ca335fe4635499a8bcbdfb73" + }, + { + "checksum": "sha256:dbb28005c8f68d794af2d9b35a3fcc3294190678b8cc9475acbad8a25a8837d3" + }, + { + "checksum": "sha256:01273ffc5443535d055b7962e173a10028fd2f128124480f587f8f9d7f4d4688" + }, + { + "checksum": "sha256:05bd495695df8a78448ff0d2f2df0480f0bc49c9b7065bc2b1ceba41b42f1772" + }, + { + "checksum": "sha256:21b1497d132a52c93129700d58c44ba8c36af8da1bbd23fb408c00c3117c1012" + }, + { + "checksum": "sha256:a660c78f704d3d22458c71d86605f51d62e3cc5306d22d66bb1df86c7274ad6c" + }, + { + "checksum": "sha256:e17077c8803f792c02570b2768510b8e4955bd0ae68ab4930e7060fcbb3793f6" + }, + { + "checksum": "sha256:f727e7919c662ae990d02ad2a6299ed3161ad7522587c11441477aae03549f06" + }, + { + "checksum": "sha256:475a66955c1749ba4ea13b5f4935dd13ac322c516961a512386496fe45d04472" + }, + { + "checksum": "sha256:9ee041eadd639ab6d9187f164c7f7b7954bdb4bf5f228555176207528e84fb1f" + }, + { + "checksum": "sha256:d6a82133f2ab89874788c141b10ed1f090689cd823a7559ed9197403f4000506" + }, + { + "checksum": "sha256:657efda777af4b0d63ab127a72f3373c0d8a18f3b81e912b24a5fbdc9927dc1e" + }, + { + "checksum": "sha256:41c0f3ea7c7c2f21b5ccb0432db2c1b916ae34691a57f0b7bcb5a09dc7d8fafc" + }, + { + "checksum": "sha256:25ff1ab94430493bde65da6a800bb2638edc64dca38971eba2c798475cc18b97" + }, + { + "checksum": "sha256:7e078a375d2636b705e1734be79a8b76a306f8578066c901713663e367925bc7" + }, + { + "checksum": "sha256:4019e427bf69ed70e3a3cdfdcdd6771bcee1484f8e83bb69539a9e6530baddf1" + }, + { + "checksum": "sha256:7c37700693bc781506a06eafc18ab1cb4a7f6b7559f0595c97f60a4f88390233" + }, + { + "checksum": "sha256:36798d9e979c9976ed66e23b3c8bda6250c4e80e411afe55c3942291cb4cb4ce" + }, + { + "checksum": "sha256:bcc032463153f59b2b58fa3ef73c3bf871b9e28ba1c0df09b8a5df80ce9af559" + }, + { + "checksum": "sha256:90cad0b0149c8e21613247039af49e91e138aa5e3e7d158022cfd274f349b123" + }, + { + "checksum": "sha256:186a83e25f1758b3efaf84330ce0ff548c9878d7f4590fcfbbf9f066abc095e0" + }, + { + "checksum": "sha256:abe578c5dee7c306812e241c77ebc8ba4b54f90df8e65c56f8f202ba6e0d7183" + }, + { + "checksum": "sha256:4811ab95c1d50ef7380e2c5937ae4490f8e28f56cf787c189437d1709e4423fb" + }, + { + "checksum": "sha256:fdbce603c9cb7792728413638e4d5591f0d094a361e07ff4fe0b7014a61b0104" + }, + { + "checksum": "sha256:2cd240f59d6570295931d54dfb392604f524572cfe252b1b1c8cec7793736e4d" + }, + { + "checksum": "sha256:66760eb369153a4c41b1837d57a78d9a2f85f72ad567c8ad7ee3d5a89ef6a6cb" + }, + { + "checksum": "sha256:e57e36570f635b8df5dfcef61d40bb023ba5dd05a8b3109d6d671d956fcff69e" + }, + { + "checksum": "sha256:7729a8f9623a6fe0f94428dc8fbb5bb2349659529ecfce4a5f1854e834108614" + }, + { + "checksum": "sha256:5baa177e85af635cf7e1726e6ec558a6b44ebccbe84b13a1fa8a80f6240a19d2" + }, + { + "checksum": "sha256:07f8f24c26ec3b1716c37c9b212f4f3397dcb3eb349ef5fe09bb444654fe0033" + }, + { + "checksum": "sha256:bbf1c85af70c001f23f7a47dbc604fa155765446aa16e4403ec12af21cd1ab42" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:83cfd01b18bd91f5ab60a882cd68314afc6eb091538ec840d3cb50d317182344" + }, + { + "checksum": "sha256:a53e65798fdd2968ada806d34a248bde08dfe8d0e1164ebd272a96881483c5ed" + }, + { + "checksum": "sha256:8da37cb093752a1775c46cb71c0db55db3c3079d80bc1c5c7544d0c411bfac9b" + }, + { + "checksum": "sha256:f3b45fd08cba7c338a8103d236ba4fd2c9bbe36e6d4ef96ddcb6a722d4cf529e" + }, + { + "checksum": "sha256:167a35f5dd48fb4a632cf00ea21337689a1b78e5bb36254a2a9c6f5196b98d88" + }, + { + "checksum": "sha256:268928928fa5d36b3b63387a17d91824924116fd3e3ce4016b9339d38e66b722" + }, + { + "checksum": "sha256:34f9e9b309a8c6beabd1969ed3b0a685253eb8dd3e2d22d7ef2045f6796cd908" + }, + { + "checksum": "sha256:2aa79d4a09d234c08afc877e292e68244835e447348e85ebee431b0be1fe5104" + }, + { + "checksum": "sha256:9077c72004bd8266afafa2af093a30946105bf57ed052525e91bcc6acd9b8cef" + }, + { + "checksum": "sha256:813494dff0f52c8eb8105405b961d47ec32ea7ffc037a00c3bff568086b8ccf9" + }, + { + "checksum": "sha256:3e1977c9b662e295f67e2114694d4a11d87215346cd7836c8fe8b9cec050f357" + }, + { + "checksum": "sha256:d6afe4abbdf882ed7f15dc9ede23040494b1cdc57981a0d88b6d96b91da471f0" + }, + { + "checksum": "sha256:6c144a883629536cf8eb7eccc64389f536cc89ef806b06b4a5de18d1746eecf2" + }, + { + "checksum": "sha256:a00c72bd891d02b1e0a903fb9508d1a1aa77a3d95240b058dd8a7662173730b7" + }, + { + "checksum": "sha256:e6d780ed12021cb842de269c55a238649f6f0f76a08f5fde0db2463bdb15e067" + }, + { + "checksum": "sha256:8d09980b1baa907fbb3ec8a3d8907912a867bcb0c0bf702d9b3c8601874fe112" + }, + { + "checksum": "sha256:96172fbae0c8f413d09af511f770b08a8e26495b8ab3dfd9c3eb279257621ffd" + }, + { + "checksum": "sha256:4291406b201a35d5baaa28d2a0c5b1c218ffb7d981d0ad25532a7d36b672628e" + }, + { + "checksum": "sha256:851d321970030ef2a2444c50a959daf4e63b814acc142be821eea560c404ab45" + }, + { + "checksum": "sha256:75cb8fa5f08004dd63e6647cd699bd011b9118a1bc9d6ee41c0eb772391db077" + }, + { + "checksum": "sha256:ed03ae7d72ac4813b40490dfa0fb27fbb6828142d5507dc2fdcee636c4d19125" + }, + { + "checksum": "sha256:ae2372e9110dfbf53c83bc7f78f867edc3cdb4044d62f1e63174cc3cf2d9e06e" + }, + { + "checksum": "sha256:d3e95570de2bb3b418df9f883b22eae22086d60c437d9174c8e6bae71d0b7c11" + }, + { + "checksum": "sha256:a8dadc6e4ba668ee14fda07fecd8879c8c7acdfd9b2effeb829b541d1de0d7a2" + }, + { + "checksum": "sha256:5fb154dd6b3ae091297ce6c99576a1203451b9fedfd4d3825f1d0ed60ef9c4f6" + }, + { + "checksum": "sha256:3092ab7fc56e099d2f05167fb582076a29b1c1a2512e4fbabfd3f9000431a66b" + }, + { + "checksum": "sha256:546ebad5183085f345385a483d5bfea61bb772ecf7071a339d1db614188e69cc" + }, + { + "checksum": "sha256:bb54663316f683ffb7732f290d72b7c76a2b42e691a9d5a89869831b3982e41b" + }, + { + "checksum": "sha256:b2841b2cb926e7f529f604e2462304dcd0c63ff08f892eb573fb14029ad6511f" + }, + { + "checksum": "sha256:ee7f3a5b1494773ff9003c831f724a09213cac9f160fd2a764d13ea9b1a3921b" + }, + { + "checksum": "sha256:31951582ea375a15365e9a42ec6c0cd8a61e6f593e00f0da013d79ac967878b7" + }, + { + "checksum": "sha256:1a47d3d89a38ce0caf4136f981e06c643bfb19f86ff014d4db8b923340612692" + }, + { + "checksum": "sha256:1af8f3ff12416a7a7b105840f53ada599e6e276ed08f2dea803ad0b21f962968" + }, + { + "checksum": "sha256:4c7e176a4024f519401c2b03fd69c23375714f80b5870894fccbb2abe4d0c724" + }, + { + "checksum": "sha256:806670e01e158d45919b7c9a5ff13153b9e2e7516d18c8388bf36b493148380e" + }, + { + "checksum": "sha256:4c90fe6c1bb01242a10c5d9e1655a0c27521febeffab450d33d88b4b11a8fa95" + }, + { + "checksum": "sha256:dd29e9ec3dac16997fa4718edc3dd016fc6bd070fb0ae17c58c064ff20aa5b03" + }, + { + "checksum": "sha256:ccde203ded5f1bdc73301468985fbab7c4dc2f707a3565c6197261ac6f7361d3" + }, + { + "checksum": "sha256:d05b84d3b2126b91834bd388af680b10a73595363d138cd05920eb4ca8c0f03e" + }, + { + "checksum": "sha256:2a45920a9540e5057920f7c987d3daf910240a6d1ee63d1fa80fcdf3cee4fd71" + }, + { + "checksum": "sha256:dccd8b3ffb8a9015afe1d4cfa65df84589ede6582845899515d176695b457599" + }, + { + "checksum": "sha256:3717331bb0807804e392afc98dd1c9cba30fdf2464aaf8869598d483313f9606" + }, + { + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "checksum": "sha256:5999ddeea23f7ee7640ad90aacd09cc9c29b51fd489d5fe74db9e5b6ed981fef" + }, + { + "checksum": "sha256:1206464e80ce9c9730e029702fda02a3510294d334a559215a7d6361c457cd46" + }, + { + "checksum": "sha256:9e90e6054da06f5c8c2733c3b66987693a58ddc1f05d95b23ca0a464e26a2b22" + }, + { + "checksum": "sha256:7b6a754b55749e5f11ffec19cbb711f570607c2230e5750e5b2aaa915aa765c7" + }, + { + "checksum": "sha256:7519f2af362827daecf105e1dccb551350f32dfd3f6a8a85bf6eb1b4b7788255" + }, + { + "checksum": "sha256:4103adee1d874f535dccc59558968a8687c0cc8391b8adc4957d2952c244cf3b" + }, + { + "checksum": "sha256:93772aade166fdb4bb4a78a0e08bea1b6f155e416597037267ad2603a767b9f5" + }, + { + "checksum": "sha256:b79e0e33b98801e7cda1c845b31cfd5537b150fe4da4df1cacfc1d1534d57ce2" + }, + { + "checksum": "sha256:dd6a948e5a656701156c618e202c0b6defd11ba6f162b6790cbb42cea15141ae" + }, + { + "checksum": "sha256:81afd309f084c91d68c06bd46a4fce2e0d1e265a01ff87e309d1202e711e4a02" + }, + { + "checksum": "sha256:13e2716cf8b28d92df079f55cf5f78c280f8d429e619fe22c80abef49c4f901e" + }, + { + "checksum": "sha256:dd91378f68acef88ad2c653450a9e03054d87979e79625fd5cd3f01b5a68ba55" + }, + { + "checksum": "sha256:02bae2823210d586e266d37dad90fb9daed0787c7932bbe0520b769afc6d8d76" + }, + { + "checksum": "sha256:e990635ac1345ee9d17cd8c20b79341765ca68dce1f9775a68a0a4badce4f333" + }, + { + "checksum": "sha256:a971b04b37533967e2b76d92af5b7d5dfe33998584bcc35919044fc78a456123" + }, + { + "checksum": "sha256:fbbc385a90edf08de42879e9c8ff762c5d3d9ca750d10e0bccbcd56592e5cff0" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ] + }, + "runner": "org.osbuild.rhel82" + }, + "stages": [ + { + "name": "org.osbuild.kernel-cmdline", + "options": { + "root_fs_uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "kernel_opts": "net.ifnames=0 crashkernel=auto" + } + }, + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:126bbe586fe4116b343fc349c80480f01d597c2a41abec5bc15019b126f51fdc" + }, + { + "checksum": "sha256:a5335a9d7e431ef45f4b6d256bdd7e4bfa98f73d994d6ec2a1b7c5ee792c821a" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:30624f95cd736ceec96b7e2dfc4c4594d38825139c670dcd09b323faeb46d87a" + }, + { + "checksum": "sha256:03d1b5541823ba8637e04c69d0e00d711e0c799e764d6191d6ad989b459004e3" + }, + { + "checksum": "sha256:879d72df89400ac2d742b5093870760ec31b5b3dfef346a91fa3e4fffd54bc16" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:82f2336e0c5cf2a9271259a12cc5c84f95959503e2f131a2f41ca5f291ad8055" + }, + { + "checksum": "sha256:cb1d1285d4195cd9b5098120649b95963341366f6e5490dfa9c5f06d7fa32dd4" + }, + { + "checksum": "sha256:0c3e22cf2e8ab8b4c4f043f043e4e71dfccbe9b30ecab3a6532f1dddcc06662c" + }, + { + "checksum": "sha256:2020a1fe4a1643ebdd76f6ae3a0942f115e80279625d54a783f804711915e5a3" + }, + { + "checksum": "sha256:dd8480924a9e9d6adc3c36562e090aec3f33e57dc93e4dea73ff37618755406b" + }, + { + "checksum": "sha256:35c952c9e48350adf6f94b48dc7636f664ebbe16ed6632ee30c2e0fd22e7f0bf" + }, + { + "checksum": "sha256:8ca16af0765e37aac3c2f4ef97791648b0fb0f247196f44bd768aed396c851e2" + }, + { + "checksum": "sha256:751df4c8122e941b9dc37ab75debbe937807f72e5872401cf82d97c653866e07" + }, + { + "checksum": "sha256:0cd56334755c7cbc9a4b18d9746dc3cae765a9ae8231b26e1e740a447d82c499" + }, + { + "checksum": "sha256:e6a00b8a31b790687f294e1a829e3171b4963b34f302aa1f7eeb245d4b49071a" + }, + { + "checksum": "sha256:cff5078143ab38f37a01e840bf5d42e2730c4b8e08ee7221a607ef52de8168cf" + }, + { + "checksum": "sha256:3f328081e6f97c4a833582e808d07bba2bf43f2b2d74f509c88889ba57fbe643" + }, + { + "checksum": "sha256:c2b12d1994efd87e8ba215e98a47c48c6e0fd07929b4889f79fed02d73b48b39" + }, + { + "checksum": "sha256:92bba4bcc53313c8add1ad83efbc2eae5e909a3d4f1632ae564ad99335a53aa0" + }, + { + "checksum": "sha256:4980cdfb336c5de4c4336f41f6947cfb33b7befe7ed045711248469fe48edcd3" + }, + { + "checksum": "sha256:9f1bc331219bc9bc97692477137dda660f512e8df95bbc99dd5300d48db13dbf" + }, + { + "checksum": "sha256:f0f8b7ec4ec783f4e6310208926f54b0bceed5476b6cebb5be9b336faaeaab0a" + }, + { + "checksum": "sha256:59c099ac7d9aee3e356bada6ecd9aab9bb57585214267b9d71fe2cba98de3cb0" + }, + { + "checksum": "sha256:1eca3ef1ec2edeae041c3d55687c806db77a2a1e0837fa4937b664e37b903e22" + }, + { + "checksum": "sha256:c5a8ad2ff91b081c664dc9a946acaffc85c9dfd202c9e9667f56ad4c23211807" + }, + { + "checksum": "sha256:a5b032d5d199e3facef794929ac837d572e7fcb0db3a9c9d2480daccb8765ee1" + }, + { + "checksum": "sha256:b63261bfd20aaee97ab2a47c2368c8eab62fc62c1f988a80f52715347c3bd72d" + }, + { + "checksum": "sha256:408557972679db1bd8c1c2d5a07399ec408d2022fa17d45e6e1d6e9baa6f2513" + }, + { + "checksum": "sha256:7b8b3d31e3ddd80fd39bf396122bb4b38582f090889b7d465e0db9eb8d6a7bf2" + }, + { + "checksum": "sha256:b1af9ab85021403842c69373903db6d89328575a0902b95e852ae8052a177ac7" + }, + { + "checksum": "sha256:a8d16009aa67cb5f09bdeeca57c1198ad1ecd2d1a963146369bb6200d1adcf5a" + }, + { + "checksum": "sha256:2429abaf8afb74f4fdc8050e4c90e315316186d372a809e062a914808d02d907" + }, + { + "checksum": "sha256:413d3b549e7339e7fee5a2f8232ec11ec3e7490b57a303bde5b15677af0d9add" + }, + { + "checksum": "sha256:e944915a4f9e920d831db11d1a2a08e3ab8712d04735e3499150f90be056026a" + }, + { + "checksum": "sha256:4a88a0e57e579ef6c53736c26cc8bbd7fa1f6d3de4a7d61fcde96d9ecb6947d9" + }, + { + "checksum": "sha256:e153757cbf8c1552b4f3f9593335a8332030b3aca304caf29258721c52ae4ec0" + }, + { + "checksum": "sha256:4fafa365bdf0023cf4efdd69c2f02f73d6e89d63b8a895d472baf5cc4feeed92" + }, + { + "checksum": "sha256:f934a992e23ec2d6c2adb63d5031912c4813238a82eb56ce5e0acea184588e78" + }, + { + "checksum": "sha256:df582e688213786293a439987456c58463c8a30564fbd9c4999d0300c17e67ba" + }, + { + "checksum": "sha256:1cc3e427d85ddd7caeda2c9a5063af110987ef0009b19a3924757e76e0f7ac8a" + }, + { + "checksum": "sha256:d115c393bf047f72711f757568d43e633f75237a76e3cdc0ae267da6ad03ba04" + }, + { + "checksum": "sha256:5a84c721418c21c38a32cb3170f5fbf9cb3a8d1d728b408ce026dd8cd3955c15" + }, + { + "checksum": "sha256:7fcc96203ab686368fb66f568d042c893a64ac965390fd73f5c891b8a553f430" + }, + { + "checksum": "sha256:2cc3efed29198a6e4fae393b8db2661e5134b1abba4c6d056b258576925a26ee" + }, + { + "checksum": "sha256:bb55b46b0849b445cbb7c38749b79affcbf4ae4e43c86a39ba28a64dff1ad0ec" + }, + { + "checksum": "sha256:c34e6300e7c863eba8fc9ac5c43b01c5474e88d2246c6d0bc97b9f168611e53c" + }, + { + "checksum": "sha256:9df26f1ca53725cb1091fe8858747bb8c841eee29b604f96031d92880c283238" + }, + { + "checksum": "sha256:484f75c409de524cde02e7002b768ac6583ee4329bab0a28a0088863211d7832" + }, + { + "checksum": "sha256:3853bcdd64872c9fddd28f5fafdc863e6374e57e65be2ee4c581263bfea79697" + }, + { + "checksum": "sha256:4b74cef48ac1a874b473311f779b9f9055ee0a0e4b2352439a342f2a353832e5" + }, + { + "checksum": "sha256:d3e6f8e99a5c411a1efa7b373cac48b41e9237edf5b65ec4e9f25fb496485bbd" + }, + { + "checksum": "sha256:42f4cfc52a662e95002a2a35c0edfe8b855162ce84f813f7110394dbf8ff2596" + }, + { + "checksum": "sha256:9b88cba46414a21b780f2fc25f8e76a0cc144aabf1bec1eb9873e10369cd27c3" + }, + { + "checksum": "sha256:7af192dd97d723343c5142e2fb1053744b3d1e77b90e041ad5e0222b0258a001" + }, + { + "checksum": "sha256:e81af37e55bca721e41de93cbffedac3959256dd44bc67605908ac0298a1b74f" + }, + { + "checksum": "sha256:04ae113a2f41daae0c19672c9920f26bb46960e79ce46e626591a7e278d636a3" + }, + { + "checksum": "sha256:18f6ad86cc7f681783183746576ba0cf5b9f0eee9ab18adb615bf6398404bb74" + }, + { + "checksum": "sha256:885aad9ce00d5dd80d961c33873de3d7fd5c8e9d7493835e87be438e27423187" + }, + { + "checksum": "sha256:51436452d89b01024c397555cc58b32ab3ac10055bd03043663b5debd089380b" + }, + { + "checksum": "sha256:4f850d4565e92e1d5542d790b4983104156480bcd8d73be16a779b4231c6598a" + }, + { + "checksum": "sha256:c190674c383927684353be1fa61f000971811cb6a82782e81adf4906675723c2" + }, + { + "checksum": "sha256:35471bc9ee490a4447723813c288126aceaa2617a0f271cb7cb98d99a6111ba0" + }, + { + "checksum": "sha256:3ea9e13b87f3156dd06ccfe43eeb77cb8834ab7be571a50b2faab5160c49291f" + }, + { + "checksum": "sha256:a16c9feab88a9876c41c34cd861490ce28be62e234040a59ce726e79dce4d9ef" + }, + { + "checksum": "sha256:436949033b66b9e0b91eb42961f0db604dffedd88db1dbce3a8515ade58043da" + }, + { + "checksum": "sha256:f1e0648c7c3a1b0286d9b300966effd51f328a724c37c32a3bbbcc8e00c6b168" + }, + { + "checksum": "sha256:d7789087a45017b084c27678ed782e8d923bd402547156a467a910b8682a8b02" + }, + { + "checksum": "sha256:b8b2e5b057d65cee6a8c65f236fbd0a9a717d15384f4d3cbc678563b223bf011" + }, + { + "checksum": "sha256:fc9f17a2fc6897c643fff67cf393051bb07ad16962b19a48f0e9991649ebae08" + }, + { + "checksum": "sha256:d120bc374362edd18914525ef7311a63e24c888f924c4e7315e036f86796309e" + }, + { + "checksum": "sha256:7f97a748a033ca6da465cdb7a861bd844523de3c7a186248bf559f0f64db0952" + }, + { + "checksum": "sha256:0af540f9af46e2ed891119dab6189e425323ac0742e0dd0f08b6df4e3ecb7092" + }, + { + "checksum": "sha256:65bef4240948e0b9400b0d50c37420511ef2dbd0c0130bdb4413c3e60d60f2f1" + }, + { + "checksum": "sha256:fdfde1848ded3233eadd44c677269196ef72cd8e82fd372ba2c45df4fa36a140" + }, + { + "checksum": "sha256:e6ff2a695a331ce5100f1c195d5748ce33408e300d9d611387889d77719007a3" + }, + { + "checksum": "sha256:89531a2a7fecb645bb841bb38cad65499754e83e186d380f1a246638c661b000" + }, + { + "checksum": "sha256:e1f215df72d86fec4f860cf9a3c318ad7e3db9ac853956650d01087ff0f46caa" + }, + { + "checksum": "sha256:e3c3592c21ceeefe6b62a3b6db97fc58e0ef8ed5208467a2a72dcbced0258cc6" + }, + { + "checksum": "sha256:19bb9e23dd56bfc1c29eb620bdd6f059fbea0f4d9a682e71793c52573dc2b5a5" + }, + { + "checksum": "sha256:bce48e34f1c6be096d433665f9c1f69e769445c179b91bc5b79a565604a74e3d" + }, + { + "checksum": "sha256:4dd35cd8eeb1b33dafb05a476df6eaaf26dcb5442e0f9c08d547bfd73f226d8f" + }, + { + "checksum": "sha256:18ad184245a885a9f2ef53c58aef0ef70fe4e4d6c7728d72b2b6527117f63b61" + }, + { + "checksum": "sha256:bbebf8199fc730d588d48d52bf839ac7cfefd921d32038a62d2d221d745ce945" + }, + { + "checksum": "sha256:3b060586f41724416985e14e50ea2892e96caa103e4055acee38f00db4bcfdf5" + }, + { + "checksum": "sha256:792fc1513e33391423efb98aa9bcec85cf5db0a1a417ad41316178590fe069d7" + }, + { + "checksum": "sha256:29f3de36d25fe893787e4c375a4242ff9baec204158025187269a8379116deaa" + }, + { + "checksum": "sha256:8e2994a30b907bca3808c40bdde77b0746c4bec0d22c1ccfa74968f98c98a1d7" + }, + { + "checksum": "sha256:9310c8ec49c5ab54bbe41637f54f8721a64e55a563469ab3693936a0336a7d1b" + }, + { + "checksum": "sha256:4446635ab8b16c20215423512319292f21b7cca294b9472c6adb186a303e26c6" + }, + { + "checksum": "sha256:3e13b711f15b6c4db837cac46cb3792363fb8d1a92a93de424b3485768fe4488" + }, + { + "checksum": "sha256:4cc7df5bb4b441f031309c30264551fa372dfee8571b54d2333aa81a44995194" + }, + { + "checksum": "sha256:af53fe5838e16824b50a6f16a4cc5850d2406f054d7c961c813673fc27698042" + }, + { + "checksum": "sha256:6269d41355f5813539f64613a06cda7c6b439ad8754db2f2727c0a2ca5713a1b" + }, + { + "checksum": "sha256:4b0e7c48e4162142940bb0387fec4e2f03cbad1ca06ee75532a515d8355dc865" + }, + { + "checksum": "sha256:8260d48510e13ebc63a211a1e546b3bf243d1c03488e50744ec1f86cca7f2b9f" + }, + { + "checksum": "sha256:079483da2949b3bb56df6d265a700b5cc67d3ff1f945afa1c519b0d53772c199" + }, + { + "checksum": "sha256:4b12fc6f2004fb899b0c06c462bee1932fef97112267e3784e8519ebb42ddede" + }, + { + "checksum": "sha256:78f8ad277e8baeb9e14e9678b6f67786ab9eb3a33f98cd012c175fdb63806a31" + }, + { + "checksum": "sha256:35197371e37e599e683c8f5d91d1a5699191dfdc58cd67577caf64d60bfbe630" + }, + { + "checksum": "sha256:ccd4a3fe16edc7f4a47983e191995b3308937b0483f84b141401285b867c8ef7" + }, + { + "checksum": "sha256:fd05bb7abdb6087d9c0eaaf321d30bc11399dc74881374952c4a5215ea2c86e8" + }, + { + "checksum": "sha256:63d72c31437b4813bf29bb4daee23292ca4dbd3aa7d1ce6fa4ebc168b244eeaa" + }, + { + "checksum": "sha256:0a3f52922caaa3b8213d350c3c955558d77fe31fe74f27fe58f178f93f381d56" + }, + { + "checksum": "sha256:ce09871bed0750f1f238db93099b9ae264c746496ae2d79ce654afb8f513f243" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:7e1b890a9e063d4041fc924cb55067db762b32980d5e30fed11e4a7a3696d026" + }, + { + "checksum": "sha256:a66abcd7674f3356670ac394cbd3d1a34a2055259a1ccb45c02e91d190b44389" + }, + { + "checksum": "sha256:ef48355b0f8c051de6931674024dc472be1eddb4573da8d56a0668faf2352e0c" + }, + { + "checksum": "sha256:bbcee6c77d908470de66c126d770790a199337a32db93d8f07bb705330c8d7ba" + }, + { + "checksum": "sha256:cbfc3d7643d281649042460c2ad77758cdd0e99536f3559ad7b96a4dcc5a10a6" + }, + { + "checksum": "sha256:4ff9e7b217f71f5d7c8e23632ac242e7bb3cf9b785865d233516185efad9ccb8" + }, + { + "checksum": "sha256:55f735aea8ee2737fa63ebf25d27258f93ad119733a3389bfb8ea37ce140725f" + }, + { + "checksum": "sha256:6d55aefe2ee59069d22514604c47da81d2638d219fed6e7ea086b0ce64e8c2c0" + }, + { + "checksum": "sha256:18c6c5fbd998c4d642b2dba059ba5042288b2f566cb03b7b45541b556b95f29d" + }, + { + "checksum": "sha256:2b09ab68296b57a39b302498bdb837c8220e4de3aa1db7a197f23eb6b75cdacd" + }, + { + "checksum": "sha256:f096312848673cfea1e1e448083321fe4599b3339a79dc2b9e3998fd2ea1bdf3" + }, + { + "checksum": "sha256:f3693f0a1c9e9e1772795fd0a88d48d8a5d8fa7d6e1b2f0f4bc42d577ef54076" + }, + { + "checksum": "sha256:ec3e5c0bec8bcc4cf03d665e3d48cb0511bd5b9c879630563b29ddbd05bbbda0" + }, + { + "checksum": "sha256:282edb776a576a2745fe7c3278c813e0f8997e27b0ace2507dcf14f50a5f9840" + }, + { + "checksum": "sha256:77066ee655df356370b5d6d736d96835f5712f8e814dfc46b391ecaef9cdd19b" + }, + { + "checksum": "sha256:684d8438fec907d780ad69dd6f7571f84d73fecefc66026b751935d463973bd8" + }, + { + "checksum": "sha256:d2c97f8d96d6f82e34975bfcf8c25606e0370a3def4da27d6aabc85a86f589ca" + }, + { + "checksum": "sha256:49d92784895f84d5526661e685cd38d5df00d610d12b6850061199d672997348" + }, + { + "checksum": "sha256:7c385e32c12b2639232f74a5dfdfef86daf82e5418bc292c5ab2640fb5cf46dc" + }, + { + "checksum": "sha256:d906b13d5dd7a5595133e2a1af83ae17a1aae0c107579db723d21ec4371f3570" + }, + { + "checksum": "sha256:537059f8a2598f7b364693aec72f67f1a954c525b381139f736d75edbf19aa12" + }, + { + "checksum": "sha256:2976f2c007ac981a70e414960cd7426f446ebc8a0bf8feae7a6ece06c63ffefb" + }, + { + "checksum": "sha256:2ee0a45ec4832e276ee130d8440cd29de05b7fd3ca335fe4635499a8bcbdfb73" + }, + { + "checksum": "sha256:dbb28005c8f68d794af2d9b35a3fcc3294190678b8cc9475acbad8a25a8837d3" + }, + { + "checksum": "sha256:01273ffc5443535d055b7962e173a10028fd2f128124480f587f8f9d7f4d4688" + }, + { + "checksum": "sha256:05bd495695df8a78448ff0d2f2df0480f0bc49c9b7065bc2b1ceba41b42f1772" + }, + { + "checksum": "sha256:21b1497d132a52c93129700d58c44ba8c36af8da1bbd23fb408c00c3117c1012" + }, + { + "checksum": "sha256:a660c78f704d3d22458c71d86605f51d62e3cc5306d22d66bb1df86c7274ad6c" + }, + { + "checksum": "sha256:e17077c8803f792c02570b2768510b8e4955bd0ae68ab4930e7060fcbb3793f6" + }, + { + "checksum": "sha256:f727e7919c662ae990d02ad2a6299ed3161ad7522587c11441477aae03549f06" + }, + { + "checksum": "sha256:475a66955c1749ba4ea13b5f4935dd13ac322c516961a512386496fe45d04472" + }, + { + "checksum": "sha256:9ee041eadd639ab6d9187f164c7f7b7954bdb4bf5f228555176207528e84fb1f" + }, + { + "checksum": "sha256:d6a82133f2ab89874788c141b10ed1f090689cd823a7559ed9197403f4000506" + }, + { + "checksum": "sha256:657efda777af4b0d63ab127a72f3373c0d8a18f3b81e912b24a5fbdc9927dc1e" + }, + { + "checksum": "sha256:41c0f3ea7c7c2f21b5ccb0432db2c1b916ae34691a57f0b7bcb5a09dc7d8fafc" + }, + { + "checksum": "sha256:25ff1ab94430493bde65da6a800bb2638edc64dca38971eba2c798475cc18b97" + }, + { + "checksum": "sha256:7e078a375d2636b705e1734be79a8b76a306f8578066c901713663e367925bc7" + }, + { + "checksum": "sha256:4019e427bf69ed70e3a3cdfdcdd6771bcee1484f8e83bb69539a9e6530baddf1" + }, + { + "checksum": "sha256:7c37700693bc781506a06eafc18ab1cb4a7f6b7559f0595c97f60a4f88390233" + }, + { + "checksum": "sha256:36798d9e979c9976ed66e23b3c8bda6250c4e80e411afe55c3942291cb4cb4ce" + }, + { + "checksum": "sha256:bcc032463153f59b2b58fa3ef73c3bf871b9e28ba1c0df09b8a5df80ce9af559" + }, + { + "checksum": "sha256:90cad0b0149c8e21613247039af49e91e138aa5e3e7d158022cfd274f349b123" + }, + { + "checksum": "sha256:186a83e25f1758b3efaf84330ce0ff548c9878d7f4590fcfbbf9f066abc095e0" + }, + { + "checksum": "sha256:abe578c5dee7c306812e241c77ebc8ba4b54f90df8e65c56f8f202ba6e0d7183" + }, + { + "checksum": "sha256:4811ab95c1d50ef7380e2c5937ae4490f8e28f56cf787c189437d1709e4423fb" + }, + { + "checksum": "sha256:fdbce603c9cb7792728413638e4d5591f0d094a361e07ff4fe0b7014a61b0104" + }, + { + "checksum": "sha256:2cd240f59d6570295931d54dfb392604f524572cfe252b1b1c8cec7793736e4d" + }, + { + "checksum": "sha256:66760eb369153a4c41b1837d57a78d9a2f85f72ad567c8ad7ee3d5a89ef6a6cb" + }, + { + "checksum": "sha256:e57e36570f635b8df5dfcef61d40bb023ba5dd05a8b3109d6d671d956fcff69e" + }, + { + "checksum": "sha256:7729a8f9623a6fe0f94428dc8fbb5bb2349659529ecfce4a5f1854e834108614" + }, + { + "checksum": "sha256:5baa177e85af635cf7e1726e6ec558a6b44ebccbe84b13a1fa8a80f6240a19d2" + }, + { + "checksum": "sha256:07f8f24c26ec3b1716c37c9b212f4f3397dcb3eb349ef5fe09bb444654fe0033" + }, + { + "checksum": "sha256:bbf1c85af70c001f23f7a47dbc604fa155765446aa16e4403ec12af21cd1ab42" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:268928928fa5d36b3b63387a17d91824924116fd3e3ce4016b9339d38e66b722" + }, + { + "checksum": "sha256:34f9e9b309a8c6beabd1969ed3b0a685253eb8dd3e2d22d7ef2045f6796cd908" + }, + { + "checksum": "sha256:813494dff0f52c8eb8105405b961d47ec32ea7ffc037a00c3bff568086b8ccf9" + }, + { + "checksum": "sha256:3e1977c9b662e295f67e2114694d4a11d87215346cd7836c8fe8b9cec050f357" + }, + { + "checksum": "sha256:d6afe4abbdf882ed7f15dc9ede23040494b1cdc57981a0d88b6d96b91da471f0" + }, + { + "checksum": "sha256:6c144a883629536cf8eb7eccc64389f536cc89ef806b06b4a5de18d1746eecf2" + }, + { + "checksum": "sha256:a00c72bd891d02b1e0a903fb9508d1a1aa77a3d95240b058dd8a7662173730b7" + }, + { + "checksum": "sha256:8d09980b1baa907fbb3ec8a3d8907912a867bcb0c0bf702d9b3c8601874fe112" + }, + { + "checksum": "sha256:96172fbae0c8f413d09af511f770b08a8e26495b8ab3dfd9c3eb279257621ffd" + }, + { + "checksum": "sha256:851d321970030ef2a2444c50a959daf4e63b814acc142be821eea560c404ab45" + }, + { + "checksum": "sha256:75cb8fa5f08004dd63e6647cd699bd011b9118a1bc9d6ee41c0eb772391db077" + }, + { + "checksum": "sha256:ed03ae7d72ac4813b40490dfa0fb27fbb6828142d5507dc2fdcee636c4d19125" + }, + { + "checksum": "sha256:ae2372e9110dfbf53c83bc7f78f867edc3cdb4044d62f1e63174cc3cf2d9e06e" + }, + { + "checksum": "sha256:d3e95570de2bb3b418df9f883b22eae22086d60c437d9174c8e6bae71d0b7c11" + }, + { + "checksum": "sha256:a8dadc6e4ba668ee14fda07fecd8879c8c7acdfd9b2effeb829b541d1de0d7a2" + }, + { + "checksum": "sha256:5fb154dd6b3ae091297ce6c99576a1203451b9fedfd4d3825f1d0ed60ef9c4f6" + }, + { + "checksum": "sha256:3092ab7fc56e099d2f05167fb582076a29b1c1a2512e4fbabfd3f9000431a66b" + }, + { + "checksum": "sha256:546ebad5183085f345385a483d5bfea61bb772ecf7071a339d1db614188e69cc" + }, + { + "checksum": "sha256:bb54663316f683ffb7732f290d72b7c76a2b42e691a9d5a89869831b3982e41b" + }, + { + "checksum": "sha256:b2841b2cb926e7f529f604e2462304dcd0c63ff08f892eb573fb14029ad6511f" + }, + { + "checksum": "sha256:ee7f3a5b1494773ff9003c831f724a09213cac9f160fd2a764d13ea9b1a3921b" + }, + { + "checksum": "sha256:31951582ea375a15365e9a42ec6c0cd8a61e6f593e00f0da013d79ac967878b7" + }, + { + "checksum": "sha256:1a47d3d89a38ce0caf4136f981e06c643bfb19f86ff014d4db8b923340612692" + }, + { + "checksum": "sha256:4c7e176a4024f519401c2b03fd69c23375714f80b5870894fccbb2abe4d0c724" + }, + { + "checksum": "sha256:806670e01e158d45919b7c9a5ff13153b9e2e7516d18c8388bf36b493148380e" + }, + { + "checksum": "sha256:4c90fe6c1bb01242a10c5d9e1655a0c27521febeffab450d33d88b4b11a8fa95" + }, + { + "checksum": "sha256:dd29e9ec3dac16997fa4718edc3dd016fc6bd070fb0ae17c58c064ff20aa5b03" + }, + { + "checksum": "sha256:2a45920a9540e5057920f7c987d3daf910240a6d1ee63d1fa80fcdf3cee4fd71" + }, + { + "checksum": "sha256:dccd8b3ffb8a9015afe1d4cfa65df84589ede6582845899515d176695b457599" + }, + { + "checksum": "sha256:3717331bb0807804e392afc98dd1c9cba30fdf2464aaf8869598d483313f9606" + }, + { + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "checksum": "sha256:5999ddeea23f7ee7640ad90aacd09cc9c29b51fd489d5fe74db9e5b6ed981fef" + }, + { + "checksum": "sha256:1206464e80ce9c9730e029702fda02a3510294d334a559215a7d6361c457cd46" + }, + { + "checksum": "sha256:9e90e6054da06f5c8c2733c3b66987693a58ddc1f05d95b23ca0a464e26a2b22" + }, + { + "checksum": "sha256:7b6a754b55749e5f11ffec19cbb711f570607c2230e5750e5b2aaa915aa765c7" + }, + { + "checksum": "sha256:7519f2af362827daecf105e1dccb551350f32dfd3f6a8a85bf6eb1b4b7788255" + }, + { + "checksum": "sha256:4103adee1d874f535dccc59558968a8687c0cc8391b8adc4957d2952c244cf3b" + }, + { + "checksum": "sha256:93772aade166fdb4bb4a78a0e08bea1b6f155e416597037267ad2603a767b9f5" + }, + { + "checksum": "sha256:b79e0e33b98801e7cda1c845b31cfd5537b150fe4da4df1cacfc1d1534d57ce2" + }, + { + "checksum": "sha256:dd6a948e5a656701156c618e202c0b6defd11ba6f162b6790cbb42cea15141ae" + }, + { + "checksum": "sha256:81afd309f084c91d68c06bd46a4fce2e0d1e265a01ff87e309d1202e711e4a02" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "redhat": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.zipl", + "options": {} + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.tar", + "options": { + "filename": "root.tar.xz", + "compression": "xz" + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/acl-2.2.53-1.el8.s390x.rpm", + "checksum": "sha256:126bbe586fe4116b343fc349c80480f01d597c2a41abec5bc15019b126f51fdc" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.s390x.rpm", + "checksum": "sha256:a5335a9d7e431ef45f4b6d256bdd7e4bfa98f73d994d6ec2a1b7c5ee792c821a" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/bash-4.4.19-10.el8.s390x.rpm", + "checksum": "sha256:30624f95cd736ceec96b7e2dfc4c4594d38825139c670dcd09b323faeb46d87a" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/brotli-1.0.6-1.el8.s390x.rpm", + "checksum": "sha256:03d1b5541823ba8637e04c69d0e00d711e0c799e764d6191d6ad989b459004e3" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/bzip2-libs-1.0.6-26.el8.s390x.rpm", + "checksum": "sha256:879d72df89400ac2d742b5093870760ec31b5b3dfef346a91fa3e4fffd54bc16" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.11", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/chkconfig-1.11-1.el8.s390x.rpm", + "checksum": "sha256:82f2336e0c5cf2a9271259a12cc5c84f95959503e2f131a2f41ca5f291ad8055" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/coreutils-8.30-6.el8.s390x.rpm", + "checksum": "sha256:cb1d1285d4195cd9b5098120649b95963341366f6e5490dfa9c5f06d7fa32dd4" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/coreutils-common-8.30-6.el8.s390x.rpm", + "checksum": "sha256:0c3e22cf2e8ab8b4c4f043f043e4e71dfccbe9b30ecab3a6532f1dddcc06662c" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cracklib-2.9.6-15.el8.s390x.rpm", + "checksum": "sha256:2020a1fe4a1643ebdd76f6ae3a0942f115e80279625d54a783f804711915e5a3" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cracklib-dicts-2.9.6-15.el8.s390x.rpm", + "checksum": "sha256:dd8480924a9e9d6adc3c36562e090aec3f33e57dc93e4dea73ff37618755406b" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20191128", + "release": "2.git23e1bf1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/crypto-policies-20191128-2.git23e1bf1.el8.noarch.rpm", + "checksum": "sha256:35c952c9e48350adf6f94b48dc7636f664ebbe16ed6632ee30c2e0fd22e7f0bf" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.2.2", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cryptsetup-libs-2.2.2-1.el8.s390x.rpm", + "checksum": "sha256:8ca16af0765e37aac3c2f4ef97791648b0fb0f247196f44bd768aed396c851e2" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/curl-7.61.1-12.el8.s390x.rpm", + "checksum": "sha256:751df4c8122e941b9dc37ab75debbe937807f72e5872401cf82d97c653866e07" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cyrus-sasl-lib-2.1.27-1.el8.s390x.rpm", + "checksum": "sha256:0cd56334755c7cbc9a4b18d9746dc3cae765a9ae8231b26e1e740a447d82c499" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-1.12.8-9.el8.s390x.rpm", + "checksum": "sha256:e6a00b8a31b790687f294e1a829e3171b4963b34f302aa1f7eeb245d4b49071a" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-common-1.12.8-9.el8.noarch.rpm", + "checksum": "sha256:cff5078143ab38f37a01e840bf5d42e2730c4b8e08ee7221a607ef52de8168cf" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-daemon-1.12.8-9.el8.s390x.rpm", + "checksum": "sha256:3f328081e6f97c4a833582e808d07bba2bf43f2b2d74f509c88889ba57fbe643" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-libs-1.12.8-9.el8.s390x.rpm", + "checksum": "sha256:c2b12d1994efd87e8ba215e98a47c48c6e0fd07929b4889f79fed02d73b48b39" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-tools-1.12.8-9.el8.s390x.rpm", + "checksum": "sha256:92bba4bcc53313c8add1ad83efbc2eae5e909a3d4f1632ae564ad99335a53aa0" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.169", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/device-mapper-1.02.169-3.el8.s390x.rpm", + "checksum": "sha256:4980cdfb336c5de4c4336f41f6947cfb33b7befe7ed045711248469fe48edcd3" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.169", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/device-mapper-libs-1.02.169-3.el8.s390x.rpm", + "checksum": "sha256:9f1bc331219bc9bc97692477137dda660f512e8df95bbc99dd5300d48db13dbf" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/diffutils-3.6-6.el8.s390x.rpm", + "checksum": "sha256:f0f8b7ec4ec783f4e6310208926f54b0bceed5476b6cebb5be9b336faaeaab0a" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.17", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dnf-4.2.17-6.el8.noarch.rpm", + "checksum": "sha256:457108e80b840850057c10f933446fd71a0d20b356c2a039af71e9fd68f61382" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.17", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dnf-data-4.2.17-6.el8.noarch.rpm", + "checksum": "sha256:6110d2531a5e40210ec9009cf80e901052406df0a41b075d591f903539575acf" + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dosfstools-4.1-6.el8.s390x.rpm", + "checksum": "sha256:04e227546e73954475809db05a6133e4f978ae026423bd800247370f8758b31e" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.4", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/e2fsprogs-1.45.4-3.el8.s390x.rpm", + "checksum": "sha256:5b681ca8e1778a6a7ec40a7b30a72537aef11518c2bb5ffdde346a0c590a2517" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.4", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/e2fsprogs-libs-1.45.4-3.el8.s390x.rpm", + "checksum": "sha256:96aa9181e5e0e6ea19b903d8d861171e0dc2c35167626a6d91cfe0f3402ccf46" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.178", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/elfutils-default-yama-scope-0.178-7.el8.noarch.rpm", + "checksum": "sha256:59c099ac7d9aee3e356bada6ecd9aab9bb57585214267b9d71fe2cba98de3cb0" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.178", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/elfutils-libelf-0.178-7.el8.s390x.rpm", + "checksum": "sha256:1eca3ef1ec2edeae041c3d55687c806db77a2a1e0837fa4937b664e37b903e22" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.178", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/elfutils-libs-0.178-7.el8.s390x.rpm", + "checksum": "sha256:c5a8ad2ff91b081c664dc9a946acaffc85c9dfd202c9e9667f56ad4c23211807" + }, + { + "name": "ethtool", + "epoch": 2, + "version": "5.0", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ethtool-5.0-2.el8.s390x.rpm", + "checksum": "sha256:a5b032d5d199e3facef794929ac837d572e7fcb0db3a9c9d2480daccb8765ee1" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/expat-2.2.5-3.el8.s390x.rpm", + "checksum": "sha256:b63261bfd20aaee97ab2a47c2368c8eab62fc62c1f988a80f52715347c3bd72d" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "13.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/file-libs-5.33-13.el8.s390x.rpm", + "checksum": "sha256:d6ba0f45311859012b68738abd9062cf20efe954cf3fd97e602e09fbfe8e3fdb" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/filesystem-3.8-2.el8.s390x.rpm", + "checksum": "sha256:408557972679db1bd8c1c2d5a07399ec408d2022fa17d45e6e1d6e9baa6f2513" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/findutils-4.6.0-20.el8.s390x.rpm", + "checksum": "sha256:7b8b3d31e3ddd80fd39bf396122bb4b38582f090889b7d465e0db9eb8d6a7bf2" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/fuse-libs-2.9.7-12.el8.s390x.rpm", + "checksum": "sha256:2429abaf8afb74f4fdc8050e4c90e315316186d372a809e062a914808d02d907" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gawk-4.2.1-1.el8.s390x.rpm", + "checksum": "sha256:413d3b549e7339e7fee5a2f8232ec11ec3e7490b57a303bde5b15677af0d9add" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gdbm-1.18-1.el8.s390x.rpm", + "checksum": "sha256:e944915a4f9e920d831db11d1a2a08e3ab8712d04735e3499150f90be056026a" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gdbm-libs-1.18-1.el8.s390x.rpm", + "checksum": "sha256:4a88a0e57e579ef6c53736c26cc8bbd7fa1f6d3de4a7d61fcde96d9ecb6947d9" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glib2-2.56.4-8.el8.s390x.rpm", + "checksum": "sha256:e153757cbf8c1552b4f3f9593335a8332030b3aca304caf29258721c52ae4ec0" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "101.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glibc-2.28-101.el8.s390x.rpm", + "checksum": "sha256:4fafa365bdf0023cf4efdd69c2f02f73d6e89d63b8a895d472baf5cc4feeed92" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "101.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glibc-all-langpacks-2.28-101.el8.s390x.rpm", + "checksum": "sha256:f934a992e23ec2d6c2adb63d5031912c4813238a82eb56ce5e0acea184588e78" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "101.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glibc-common-2.28-101.el8.s390x.rpm", + "checksum": "sha256:df582e688213786293a439987456c58463c8a30564fbd9c4999d0300c17e67ba" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gmp-6.1.2-10.el8.s390x.rpm", + "checksum": "sha256:1cc3e427d85ddd7caeda2c9a5063af110987ef0009b19a3924757e76e0f7ac8a" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.9", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gnupg2-2.2.9-1.el8.s390x.rpm", + "checksum": "sha256:0e6d88ed1b7038d234b0cbec9bdcf9239efc898993cfb2092ffa7fe52864d9a7" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.9", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gnupg2-smime-2.2.9-1.el8.s390x.rpm", + "checksum": "sha256:84cc3add4aafbee00fb25979f24818d71a99f03c63f8ff6f57e5f085dc693dbc" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.8", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gnutls-3.6.8-9.el8.s390x.rpm", + "checksum": "sha256:d115c393bf047f72711f757568d43e633f75237a76e3cdc0ae267da6ad03ba04" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.10.0", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gpgme-1.10.0-6.el8.s390x.rpm", + "checksum": "sha256:277708213acd2b535f20275de72275132bdee2d478382f12a28e7b13a3d34366" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/grep-3.1-6.el8.s390x.rpm", + "checksum": "sha256:5a84c721418c21c38a32cb3170f5fbf9cb3a8d1d728b408ce026dd8cd3955c15" + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "18.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/groff-base-1.22.3-18.el8.s390x.rpm", + "checksum": "sha256:7fcc96203ab686368fb66f568d042c893a64ac965390fd73f5c891b8a553f430" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "38.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/grubby-8.40-38.el8.s390x.rpm", + "checksum": "sha256:2cc3efed29198a6e4fae393b8db2661e5134b1abba4c6d056b258576925a26ee" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gzip-1.9-9.el8.s390x.rpm", + "checksum": "sha256:bb55b46b0849b445cbb7c38749b79affcbf4ae4e43c86a39ba28a64dff1ad0ec" + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.20", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/hostname-3.20-6.el8.s390x.rpm", + "checksum": "sha256:c34e6300e7c863eba8fc9ac5c43b01c5474e88d2246c6d0bc97b9f168611e53c" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ima-evm-utils-1.1-5.el8.s390x.rpm", + "checksum": "sha256:ad32bb58e49467cba3dabceee4e85202e8c4118624f870c299b49ff0396cda30" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/info-6.5-6.el8.s390x.rpm", + "checksum": "sha256:9df26f1ca53725cb1091fe8858747bb8c841eee29b604f96031d92880c283238" + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.00.6", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/initscripts-10.00.6-1.el8.s390x.rpm", + "checksum": "sha256:484f75c409de524cde02e7002b768ac6583ee4329bab0a28a0088863211d7832" + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.2.4", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ipcalc-0.2.4-4.el8.s390x.rpm", + "checksum": "sha256:3853bcdd64872c9fddd28f5fafdc863e6374e57e65be2ee4c581263bfea79697" + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.3.0", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/iproute-5.3.0-1.el8.s390x.rpm", + "checksum": "sha256:4b74cef48ac1a874b473311f779b9f9055ee0a0e4b2352439a342f2a353832e5" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/iptables-libs-1.8.4-10.el8.s390x.rpm", + "checksum": "sha256:d3e6f8e99a5c411a1efa7b373cac48b41e9237edf5b65ec4e9f25fb496485bbd" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/json-c-0.13.1-0.2.el8.s390x.rpm", + "checksum": "sha256:42f4cfc52a662e95002a2a35c0edfe8b855162ce84f813f7110394dbf8ff2596" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/json-glib-1.4.4-1.el8.s390x.rpm", + "checksum": "sha256:82becf766432b5ef763d2bfdb53f5c233a471ccae45d7703c19f876aaa69afd8" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/keyutils-libs-1.5.10-6.el8.s390x.rpm", + "checksum": "sha256:9b88cba46414a21b780f2fc25f8e76a0cc144aabf1bec1eb9873e10369cd27c3" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kmod-25-16.el8.s390x.rpm", + "checksum": "sha256:7af192dd97d723343c5142e2fb1053744b3d1e77b90e041ad5e0222b0258a001" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kmod-libs-25-16.el8.s390x.rpm", + "checksum": "sha256:e81af37e55bca721e41de93cbffedac3959256dd44bc67605908ac0298a1b74f" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.17", + "release": "18.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/krb5-libs-1.17-18.el8.s390x.rpm", + "checksum": "sha256:04ae113a2f41daae0c19672c9920f26bb46960e79ce46e626591a7e278d636a3" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libacl-2.2.53-1.el8.s390x.rpm", + "checksum": "sha256:18f6ad86cc7f681783183746576ba0cf5b9f0eee9ab18adb615bf6398404bb74" + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.112", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libaio-0.3.112-1.el8.s390x.rpm", + "checksum": "sha256:8ea5b21347e371f3f2e124f8ddaf38909485ec829767f936c3764e142c28093d" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "8.el8_1", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libarchive-3.3.2-8.el8_1.s390x.rpm", + "checksum": "sha256:885aad9ce00d5dd80d961c33873de3d7fd5c8e9d7493835e87be438e27423187" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libassuan-2.5.1-3.el8.s390x.rpm", + "checksum": "sha256:0914bb1e4fd12735f4919734cb42871d5a576dfe8c3df82e9de3d867c87755c1" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libattr-2.4.48-3.el8.s390x.rpm", + "checksum": "sha256:51436452d89b01024c397555cc58b32ab3ac10055bd03043663b5debd089380b" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "22.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libblkid-2.32.1-22.el8.s390x.rpm", + "checksum": "sha256:4f850d4565e92e1d5542d790b4983104156480bcd8d73be16a779b4231c6598a" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcap-2.26-3.el8.s390x.rpm", + "checksum": "sha256:c190674c383927684353be1fa61f000971811cb6a82782e81adf4906675723c2" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcap-ng-0.7.9-5.el8.s390x.rpm", + "checksum": "sha256:35471bc9ee490a4447723813c288126aceaa2617a0f271cb7cb98d99a6111ba0" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.4", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcom_err-1.45.4-3.el8.s390x.rpm", + "checksum": "sha256:3ea9e13b87f3156dd06ccfe43eeb77cb8834ab7be571a50b2faab5160c49291f" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcomps-0.1.11-4.el8.s390x.rpm", + "checksum": "sha256:2d457d282782cbf40c42e96e1c1e93ac947ce0d5f55985c97b307d746e7e56e2" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcurl-7.61.1-12.el8.s390x.rpm", + "checksum": "sha256:a16c9feab88a9876c41c34cd861490ce28be62e234040a59ce726e79dce4d9ef" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libdb-5.3.28-37.el8.s390x.rpm", + "checksum": "sha256:436949033b66b9e0b91eb42961f0db604dffedd88db1dbce3a8515ade58043da" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libdb-utils-5.3.28-37.el8.s390x.rpm", + "checksum": "sha256:f1e0648c7c3a1b0286d9b300966effd51f328a724c37c32a3bbbcc8e00c6b168" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.39.1", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libdnf-0.39.1-5.el8.s390x.rpm", + "checksum": "sha256:3bccb3d9479adaa9dd9491b51247f79f05dd4fcad061a849781debd085e7209f" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libevent-2.1.8-5.el8.s390x.rpm", + "checksum": "sha256:08178dfd67abc7e7984e94e62289d78ce84ead317c512ccb6596f7a752984dc7" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "22.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libfdisk-2.32.1-22.el8.s390x.rpm", + "checksum": "sha256:d7789087a45017b084c27678ed782e8d923bd402547156a467a910b8682a8b02" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "21.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libffi-3.1-21.el8.s390x.rpm", + "checksum": "sha256:b8b2e5b057d65cee6a8c65f236fbd0a9a717d15384f4d3cbc678563b223bf011" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libgcc-8.3.1-5.el8.s390x.rpm", + "checksum": "sha256:fc9f17a2fc6897c643fff67cf393051bb07ad16962b19a48f0e9991649ebae08" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.3", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libgcrypt-1.8.3-4.el8.s390x.rpm", + "checksum": "sha256:d120bc374362edd18914525ef7311a63e24c888f924c4e7315e036f86796309e" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libgpg-error-1.31-1.el8.s390x.rpm", + "checksum": "sha256:7f97a748a033ca6da465cdb7a861bd844523de3c7a186248bf559f0f64db0952" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libidn2-2.2.0-1.el8.s390x.rpm", + "checksum": "sha256:0af540f9af46e2ed891119dab6189e425323ac0742e0dd0f08b6df4e3ecb7092" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libksba-1.3.5-7.el8.s390x.rpm", + "checksum": "sha256:4682cfac60ce5f220640c3f7468c39fa2805bcc281cf464fc98c273bace1e579" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libmetalink-0.1.3-7.el8.s390x.rpm", + "checksum": "sha256:65bef4240948e0b9400b0d50c37420511ef2dbd0c0130bdb4413c3e60d60f2f1" + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libmnl-1.0.4-6.el8.s390x.rpm", + "checksum": "sha256:fdfde1848ded3233eadd44c677269196ef72cd8e82fd372ba2c45df4fa36a140" + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.16", + "release": "0.2.8.2.1", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libmodulemd1-1.8.16-0.2.8.2.1.s390x.rpm", + "checksum": "sha256:74cad5967ec955d6b8851a5240c4ae823ea10f08dc0e811aba2b79d6dc5a9949" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "22.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libmount-2.32.1-22.el8.s390x.rpm", + "checksum": "sha256:e6ff2a695a331ce5100f1c195d5748ce33408e300d9d611387889d77719007a3" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "1.el8_0.1", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libnghttp2-1.33.0-1.el8_0.1.s390x.rpm", + "checksum": "sha256:89531a2a7fecb645bb841bb38cad65499754e83e186d380f1a246638c661b000" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.s390x.rpm", + "checksum": "sha256:e1f215df72d86fec4f860cf9a3c318ad7e3db9ac853956650d01087ff0f46caa" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.0", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libpcap-1.9.0-3.el8.s390x.rpm", + "checksum": "sha256:e3c3592c21ceeefe6b62a3b6db97fc58e0ef8ed5208467a2a72dcbced0258cc6" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libpsl-0.20.2-5.el8.s390x.rpm", + "checksum": "sha256:19bb9e23dd56bfc1c29eb620bdd6f059fbea0f4d9a682e71793c52573dc2b5a5" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libpwquality-1.4.0-9.el8.s390x.rpm", + "checksum": "sha256:bce48e34f1c6be096d433665f9c1f69e769445c179b91bc5b79a565604a74e3d" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.11.0", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/librepo-1.11.0-2.el8.s390x.rpm", + "checksum": "sha256:302b0d285149d53df9a7805cc664b1a6407c27fc94e4331b9974a21da61c658e" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libreport-filesystem-2.9.5-10.el8.s390x.rpm", + "checksum": "sha256:7305aabe9ab0e0d65293384c636bcca017abb426986c59c5f92b9c08be016be1" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/librhsm-0.0.3-3.el8.s390x.rpm", + "checksum": "sha256:309365c7a2ea977c132ecf9394bfa402b6fae9ba53226f45a3cc07659ca48c24" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.1", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libseccomp-2.4.1-1.el8.s390x.rpm", + "checksum": "sha256:4dd35cd8eeb1b33dafb05a476df6eaaf26dcb5442e0f9c08d547bfd73f226d8f" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsecret-0.18.6-1.el8.s390x.rpm", + "checksum": "sha256:be01593ef51abcb8540b55d0b40946f3d0d507e2f4cde1023898635b7e03fbef" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libselinux-2.9-3.el8.s390x.rpm", + "checksum": "sha256:18ad184245a885a9f2ef53c58aef0ef70fe4e4d6c7728d72b2b6527117f63b61" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libselinux-utils-2.9-3.el8.s390x.rpm", + "checksum": "sha256:bbebf8199fc730d588d48d52bf839ac7cfefd921d32038a62d2d221d745ce945" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsemanage-2.9-2.el8.s390x.rpm", + "checksum": "sha256:3b060586f41724416985e14e50ea2892e96caa103e4055acee38f00db4bcfdf5" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsepol-2.9-1.el8.s390x.rpm", + "checksum": "sha256:792fc1513e33391423efb98aa9bcec85cf5db0a1a417ad41316178590fe069d7" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsigsegv-2.11-5.el8.s390x.rpm", + "checksum": "sha256:29f3de36d25fe893787e4c375a4242ff9baec204158025187269a8379116deaa" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "22.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsmartcols-2.32.1-22.el8.s390x.rpm", + "checksum": "sha256:8e2994a30b907bca3808c40bdde77b0746c4bec0d22c1ccfa74968f98c98a1d7" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.7", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsolv-0.7.7-1.el8.s390x.rpm", + "checksum": "sha256:534dd2a6b76a2fe8133b0801b230d425f928c50b635b352016da40447c7c7185" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.4", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libss-1.45.4-3.el8.s390x.rpm", + "checksum": "sha256:40104e3acb91efb6474c87c2bd5ea29cd71f13429a88d78890c2e9bc59bfc4e0" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.0", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libssh-0.9.0-4.el8.s390x.rpm", + "checksum": "sha256:9310c8ec49c5ab54bbe41637f54f8721a64e55a563469ab3693936a0336a7d1b" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.0", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libssh-config-0.9.0-4.el8.noarch.rpm", + "checksum": "sha256:4446635ab8b16c20215423512319292f21b7cca294b9472c6adb186a303e26c6" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libstdc++-8.3.1-5.el8.s390x.rpm", + "checksum": "sha256:3e13b711f15b6c4db837cac46cb3792363fb8d1a92a93de424b3485768fe4488" + }, + { + "name": "libsysfs", + "epoch": 0, + "version": "2.1.0", + "release": "24.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsysfs-2.1.0-24.el8.s390x.rpm", + "checksum": "sha256:4cc7df5bb4b441f031309c30264551fa372dfee8571b54d2333aa81a44995194" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libtasn1-4.13-3.el8.s390x.rpm", + "checksum": "sha256:af53fe5838e16824b50a6f16a4cc5850d2406f054d7c961c813673fc27698042" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libtirpc-1.1.4-4.el8.s390x.rpm", + "checksum": "sha256:6269d41355f5813539f64613a06cda7c6b439ad8754db2f2727c0a2ca5713a1b" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libunistring-0.9.9-3.el8.s390x.rpm", + "checksum": "sha256:4b0e7c48e4162142940bb0387fec4e2f03cbad1ca06ee75532a515d8355dc865" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.22", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libusbx-1.0.22-1.el8.s390x.rpm", + "checksum": "sha256:36c8375deb752eae4df0760fe4634c9b5be9a1cdaee4a7bea7789004e892ae3c" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libutempter-1.1.6-14.el8.s390x.rpm", + "checksum": "sha256:8260d48510e13ebc63a211a1e546b3bf243d1c03488e50744ec1f86cca7f2b9f" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "22.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libuuid-2.32.1-22.el8.s390x.rpm", + "checksum": "sha256:079483da2949b3bb56df6d265a700b5cc67d3ff1f945afa1c519b0d53772c199" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libverto-0.3.0-5.el8.s390x.rpm", + "checksum": "sha256:4b12fc6f2004fb899b0c06c462bee1932fef97112267e3784e8519ebb42ddede" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libxcrypt-4.1.1-4.el8.s390x.rpm", + "checksum": "sha256:78f8ad277e8baeb9e14e9678b6f67786ab9eb3a33f98cd012c175fdb63806a31" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libxml2-2.9.7-7.el8.s390x.rpm", + "checksum": "sha256:35197371e37e599e683c8f5d91d1a5699191dfdc58cd67577caf64d60bfbe630" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libyaml-0.1.7-5.el8.s390x.rpm", + "checksum": "sha256:998276e153886e014ce37c429a0f22b76f3ca955c1c9ba89999ce3dface1cf10" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.2", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libzstd-1.4.2-2.el8.s390x.rpm", + "checksum": "sha256:ccd4a3fe16edc7f4a47983e191995b3308937b0483f84b141401285b867c8ef7" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/lua-libs-5.3.4-11.el8.s390x.rpm", + "checksum": "sha256:fd05bb7abdb6087d9c0eaaf321d30bc11399dc74881374952c4a5215ea2c86e8" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.1.2", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/lz4-libs-1.8.1.2-4.el8.s390x.rpm", + "checksum": "sha256:63d72c31437b4813bf29bb4daee23292ca4dbd3aa7d1ce6fa4ebc168b244eeaa" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/mpfr-3.1.6-1.el8.s390x.rpm", + "checksum": "sha256:0a3f52922caaa3b8213d350c3c955558d77fe31fe74f27fe58f178f93f381d56" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ncurses-6.1-7.20180224.el8.s390x.rpm", + "checksum": "sha256:ce09871bed0750f1f238db93099b9ae264c746496ae2d79ce654afb8f513f243" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ncurses-libs-6.1-7.20180224.el8.s390x.rpm", + "checksum": "sha256:7e1b890a9e063d4041fc924cb55067db762b32980d5e30fed11e4a7a3696d026" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/nettle-3.4.1-1.el8.s390x.rpm", + "checksum": "sha256:a66abcd7674f3356670ac394cbd3d1a34a2055259a1ccb45c02e91d190b44389" + }, + { + "name": "network-scripts", + "epoch": 0, + "version": "10.00.6", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/network-scripts-10.00.6-1.el8.s390x.rpm", + "checksum": "sha256:ef48355b0f8c051de6931674024dc472be1eddb4573da8d56a0668faf2352e0c" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/npth-1.5-4.el8.s390x.rpm", + "checksum": "sha256:e2e45f9ad3fa2d15b62b0d166975cf7c1ba94791cbfa305ab22086ceedff8867" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "11.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openldap-2.4.46-11.el8.s390x.rpm", + "checksum": "sha256:bbcee6c77d908470de66c126d770790a199337a32db93d8f07bb705330c8d7ba" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1c", + "release": "15.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssl-1.1.1c-15.el8.s390x.rpm", + "checksum": "sha256:55f735aea8ee2737fa63ebf25d27258f93ad119733a3389bfb8ea37ce140725f" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1c", + "release": "15.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssl-libs-1.1.1c-15.el8.s390x.rpm", + "checksum": "sha256:6d55aefe2ee59069d22514604c47da81d2638d219fed6e7ea086b0ce64e8c2c0" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssl-pkcs11-0.4.10-2.el8.s390x.rpm", + "checksum": "sha256:18c6c5fbd998c4d642b2dba059ba5042288b2f566cb03b7b45541b556b95f29d" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/p11-kit-0.23.14-5.el8_0.s390x.rpm", + "checksum": "sha256:2b09ab68296b57a39b302498bdb837c8220e4de3aa1db7a197f23eb6b75cdacd" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/p11-kit-trust-0.23.14-5.el8_0.s390x.rpm", + "checksum": "sha256:f096312848673cfea1e1e448083321fe4599b3339a79dc2b9e3998fd2ea1bdf3" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "8.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/pam-1.3.1-8.el8.s390x.rpm", + "checksum": "sha256:f3693f0a1c9e9e1772795fd0a88d48d8a5d8fa7d6e1b2f0f4bc42d577ef54076" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/pcre-8.42-4.el8.s390x.rpm", + "checksum": "sha256:ec3e5c0bec8bcc4cf03d665e3d48cb0511bd5b9c879630563b29ddbd05bbbda0" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/pcre2-10.32-1.el8.s390x.rpm", + "checksum": "sha256:282edb776a576a2745fe7c3278c813e0f8997e27b0ace2507dcf14f50a5f9840" + }, + { + "name": "perl-Carp", + "epoch": 0, + "version": "1.42", + "release": "396.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Carp-1.42-396.el8.noarch.rpm", + "checksum": "sha256:77066ee655df356370b5d6d736d96835f5712f8e814dfc46b391ecaef9cdd19b" + }, + { + "name": "perl-Data-Dumper", + "epoch": 0, + "version": "2.167", + "release": "399.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Data-Dumper-2.167-399.el8.s390x.rpm", + "checksum": "sha256:684d8438fec907d780ad69dd6f7571f84d73fecefc66026b751935d463973bd8" + }, + { + "name": "perl-Encode", + "epoch": 4, + "version": "2.97", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Encode-2.97-3.el8.s390x.rpm", + "checksum": "sha256:d2c97f8d96d6f82e34975bfcf8c25606e0370a3def4da27d6aabc85a86f589ca" + }, + { + "name": "perl-Errno", + "epoch": 0, + "version": "1.28", + "release": "416.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Errno-1.28-416.el8.s390x.rpm", + "checksum": "sha256:49d92784895f84d5526661e685cd38d5df00d610d12b6850061199d672997348" + }, + { + "name": "perl-Exporter", + "epoch": 0, + "version": "5.72", + "release": "396.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Exporter-5.72-396.el8.noarch.rpm", + "checksum": "sha256:7c385e32c12b2639232f74a5dfdfef86daf82e5418bc292c5ab2640fb5cf46dc" + }, + { + "name": "perl-File-Path", + "epoch": 0, + "version": "2.15", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-File-Path-2.15-2.el8.noarch.rpm", + "checksum": "sha256:d906b13d5dd7a5595133e2a1af83ae17a1aae0c107579db723d21ec4371f3570" + }, + { + "name": "perl-File-Temp", + "epoch": 0, + "version": "0.230.600", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-File-Temp-0.230.600-1.el8.noarch.rpm", + "checksum": "sha256:537059f8a2598f7b364693aec72f67f1a954c525b381139f736d75edbf19aa12" + }, + { + "name": "perl-Getopt-Long", + "epoch": 1, + "version": "2.50", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Getopt-Long-2.50-4.el8.noarch.rpm", + "checksum": "sha256:2976f2c007ac981a70e414960cd7426f446ebc8a0bf8feae7a6ece06c63ffefb" + }, + { + "name": "perl-HTTP-Tiny", + "epoch": 0, + "version": "0.074", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-HTTP-Tiny-0.074-1.el8.noarch.rpm", + "checksum": "sha256:2ee0a45ec4832e276ee130d8440cd29de05b7fd3ca335fe4635499a8bcbdfb73" + }, + { + "name": "perl-IO", + "epoch": 0, + "version": "1.38", + "release": "416.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-IO-1.38-416.el8.s390x.rpm", + "checksum": "sha256:dbb28005c8f68d794af2d9b35a3fcc3294190678b8cc9475acbad8a25a8837d3" + }, + { + "name": "perl-MIME-Base64", + "epoch": 0, + "version": "3.15", + "release": "396.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-MIME-Base64-3.15-396.el8.s390x.rpm", + "checksum": "sha256:01273ffc5443535d055b7962e173a10028fd2f128124480f587f8f9d7f4d4688" + }, + { + "name": "perl-PathTools", + "epoch": 0, + "version": "3.74", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-PathTools-3.74-1.el8.s390x.rpm", + "checksum": "sha256:05bd495695df8a78448ff0d2f2df0480f0bc49c9b7065bc2b1ceba41b42f1772" + }, + { + "name": "perl-Pod-Escapes", + "epoch": 1, + "version": "1.07", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Pod-Escapes-1.07-395.el8.noarch.rpm", + "checksum": "sha256:21b1497d132a52c93129700d58c44ba8c36af8da1bbd23fb408c00c3117c1012" + }, + { + "name": "perl-Pod-Perldoc", + "epoch": 0, + "version": "3.28", + "release": "396.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Pod-Perldoc-3.28-396.el8.noarch.rpm", + "checksum": "sha256:a660c78f704d3d22458c71d86605f51d62e3cc5306d22d66bb1df86c7274ad6c" + }, + { + "name": "perl-Pod-Simple", + "epoch": 1, + "version": "3.35", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Pod-Simple-3.35-395.el8.noarch.rpm", + "checksum": "sha256:e17077c8803f792c02570b2768510b8e4955bd0ae68ab4930e7060fcbb3793f6" + }, + { + "name": "perl-Pod-Usage", + "epoch": 4, + "version": "1.69", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Pod-Usage-1.69-395.el8.noarch.rpm", + "checksum": "sha256:f727e7919c662ae990d02ad2a6299ed3161ad7522587c11441477aae03549f06" + }, + { + "name": "perl-Scalar-List-Utils", + "epoch": 3, + "version": "1.49", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Scalar-List-Utils-1.49-2.el8.s390x.rpm", + "checksum": "sha256:475a66955c1749ba4ea13b5f4935dd13ac322c516961a512386496fe45d04472" + }, + { + "name": "perl-Socket", + "epoch": 4, + "version": "2.027", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Socket-2.027-3.el8.s390x.rpm", + "checksum": "sha256:9ee041eadd639ab6d9187f164c7f7b7954bdb4bf5f228555176207528e84fb1f" + }, + { + "name": "perl-Storable", + "epoch": 1, + "version": "3.11", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Storable-3.11-3.el8.s390x.rpm", + "checksum": "sha256:d6a82133f2ab89874788c141b10ed1f090689cd823a7559ed9197403f4000506" + }, + { + "name": "perl-Term-ANSIColor", + "epoch": 0, + "version": "4.06", + "release": "396.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Term-ANSIColor-4.06-396.el8.noarch.rpm", + "checksum": "sha256:657efda777af4b0d63ab127a72f3373c0d8a18f3b81e912b24a5fbdc9927dc1e" + }, + { + "name": "perl-Term-Cap", + "epoch": 0, + "version": "1.17", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Term-Cap-1.17-395.el8.noarch.rpm", + "checksum": "sha256:41c0f3ea7c7c2f21b5ccb0432db2c1b916ae34691a57f0b7bcb5a09dc7d8fafc" + }, + { + "name": "perl-Text-ParseWords", + "epoch": 0, + "version": "3.30", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Text-ParseWords-3.30-395.el8.noarch.rpm", + "checksum": "sha256:25ff1ab94430493bde65da6a800bb2638edc64dca38971eba2c798475cc18b97" + }, + { + "name": "perl-Text-Tabs+Wrap", + "epoch": 0, + "version": "2013.0523", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Text-Tabs+Wrap-2013.0523-395.el8.noarch.rpm", + "checksum": "sha256:7e078a375d2636b705e1734be79a8b76a306f8578066c901713663e367925bc7" + }, + { + "name": "perl-Time-Local", + "epoch": 1, + "version": "1.280", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Time-Local-1.280-1.el8.noarch.rpm", + "checksum": "sha256:4019e427bf69ed70e3a3cdfdcdd6771bcee1484f8e83bb69539a9e6530baddf1" + }, + { + "name": "perl-Unicode-Normalize", + "epoch": 0, + "version": "1.25", + "release": "396.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Unicode-Normalize-1.25-396.el8.s390x.rpm", + "checksum": "sha256:7c37700693bc781506a06eafc18ab1cb4a7f6b7559f0595c97f60a4f88390233" + }, + { + "name": "perl-constant", + "epoch": 0, + "version": "1.33", + "release": "396.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-constant-1.33-396.el8.noarch.rpm", + "checksum": "sha256:36798d9e979c9976ed66e23b3c8bda6250c4e80e411afe55c3942291cb4cb4ce" + }, + { + "name": "perl-interpreter", + "epoch": 4, + "version": "5.26.3", + "release": "416.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-interpreter-5.26.3-416.el8.s390x.rpm", + "checksum": "sha256:bcc032463153f59b2b58fa3ef73c3bf871b9e28ba1c0df09b8a5df80ce9af559" + }, + { + "name": "perl-libs", + "epoch": 4, + "version": "5.26.3", + "release": "416.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-libs-5.26.3-416.el8.s390x.rpm", + "checksum": "sha256:90cad0b0149c8e21613247039af49e91e138aa5e3e7d158022cfd274f349b123" + }, + { + "name": "perl-macros", + "epoch": 4, + "version": "5.26.3", + "release": "416.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-macros-5.26.3-416.el8.s390x.rpm", + "checksum": "sha256:186a83e25f1758b3efaf84330ce0ff548c9878d7f4590fcfbbf9f066abc095e0" + }, + { + "name": "perl-parent", + "epoch": 1, + "version": "0.237", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-parent-0.237-1.el8.noarch.rpm", + "checksum": "sha256:abe578c5dee7c306812e241c77ebc8ba4b54f90df8e65c56f8f202ba6e0d7183" + }, + { + "name": "perl-podlators", + "epoch": 0, + "version": "4.11", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-podlators-4.11-1.el8.noarch.rpm", + "checksum": "sha256:4811ab95c1d50ef7380e2c5937ae4490f8e28f56cf787c189437d1709e4423fb" + }, + { + "name": "perl-threads", + "epoch": 1, + "version": "2.21", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-threads-2.21-2.el8.s390x.rpm", + "checksum": "sha256:fdbce603c9cb7792728413638e4d5591f0d094a361e07ff4fe0b7014a61b0104" + }, + { + "name": "perl-threads-shared", + "epoch": 0, + "version": "1.58", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-threads-shared-1.58-2.el8.s390x.rpm", + "checksum": "sha256:2cd240f59d6570295931d54dfb392604f524572cfe252b1b1c8cec7793736e4d" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "23.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/platform-python-3.6.8-23.el8.s390x.rpm", + "checksum": "sha256:66760eb369153a4c41b1837d57a78d9a2f85f72ad567c8ad7ee3d5a89ef6a6cb" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "16.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/platform-python-pip-9.0.3-16.el8.noarch.rpm", + "checksum": "sha256:e57e36570f635b8df5dfcef61d40bb023ba5dd05a8b3109d6d671d956fcff69e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/platform-python-setuptools-39.2.0-5.el8.noarch.rpm", + "checksum": "sha256:7729a8f9623a6fe0f94428dc8fbb5bb2349659529ecfce4a5f1854e834108614" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/policycoreutils-2.9-9.el8.s390x.rpm", + "checksum": "sha256:5baa177e85af635cf7e1726e6ec558a6b44ebccbe84b13a1fa8a80f6240a19d2" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/popt-1.16-14.el8.s390x.rpm", + "checksum": "sha256:07f8f24c26ec3b1716c37c9b212f4f3397dcb3eb349ef5fe09bb444654fe0033" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/procps-ng-3.3.15-1.el8.s390x.rpm", + "checksum": "sha256:bbf1c85af70c001f23f7a47dbc604fa155765446aa16e4403ec12af21cd1ab42" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.17", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-dnf-4.2.17-6.el8.noarch.rpm", + "checksum": "sha256:83cfd01b18bd91f5ab60a882cd68314afc6eb091538ec840d3cb50d317182344" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.10.0", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-gpg-1.10.0-6.el8.s390x.rpm", + "checksum": "sha256:a53e65798fdd2968ada806d34a248bde08dfe8d0e1164ebd272a96881483c5ed" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.39.1", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-hawkey-0.39.1-5.el8.s390x.rpm", + "checksum": "sha256:8da37cb093752a1775c46cb71c0db55db3c3079d80bc1c5c7544d0c411bfac9b" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-libcomps-0.1.11-4.el8.s390x.rpm", + "checksum": "sha256:f3b45fd08cba7c338a8103d236ba4fd2c9bbe36e6d4ef96ddcb6a722d4cf529e" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.39.1", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-libdnf-0.39.1-5.el8.s390x.rpm", + "checksum": "sha256:167a35f5dd48fb4a632cf00ea21337689a1b78e5bb36254a2a9c6f5196b98d88" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "23.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-libs-3.6.8-23.el8.s390x.rpm", + "checksum": "sha256:268928928fa5d36b3b63387a17d91824924116fd3e3ce4016b9339d38e66b722" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "16.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-pip-wheel-9.0.3-16.el8.noarch.rpm", + "checksum": "sha256:34f9e9b309a8c6beabd1969ed3b0a685253eb8dd3e2d22d7ef2045f6796cd908" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.2", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-rpm-4.14.2-37.el8.s390x.rpm", + "checksum": "sha256:2aa79d4a09d234c08afc877e292e68244835e447348e85ebee431b0be1fe5104" + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-setuptools-39.2.0-5.el8.noarch.rpm", + "checksum": "sha256:9077c72004bd8266afafa2af093a30946105bf57ed052525e91bcc6acd9b8cef" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-setuptools-wheel-39.2.0-5.el8.noarch.rpm", + "checksum": "sha256:813494dff0f52c8eb8105405b961d47ec32ea7ffc037a00c3bff568086b8ccf9" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/readline-7.0-10.el8.s390x.rpm", + "checksum": "sha256:3e1977c9b662e295f67e2114694d4a11d87215346cd7836c8fe8b9cec050f357" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.2", + "release": "1.0.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/redhat-release-8.2-1.0.el8.s390x.rpm", + "checksum": "sha256:d6afe4abbdf882ed7f15dc9ede23040494b1cdc57981a0d88b6d96b91da471f0" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.2", + "release": "1.0.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/redhat-release-eula-8.2-1.0.el8.s390x.rpm", + "checksum": "sha256:6c144a883629536cf8eb7eccc64389f536cc89ef806b06b4a5de18d1746eecf2" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.2", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-4.14.2-37.el8.s390x.rpm", + "checksum": "sha256:a00c72bd891d02b1e0a903fb9508d1a1aa77a3d95240b058dd8a7662173730b7" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.2", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-build-libs-4.14.2-37.el8.s390x.rpm", + "checksum": "sha256:e6d780ed12021cb842de269c55a238649f6f0f76a08f5fde0db2463bdb15e067" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.2", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-libs-4.14.2-37.el8.s390x.rpm", + "checksum": "sha256:8d09980b1baa907fbb3ec8a3d8907912a867bcb0c0bf702d9b3c8601874fe112" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.2", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-plugin-selinux-4.14.2-37.el8.s390x.rpm", + "checksum": "sha256:96172fbae0c8f413d09af511f770b08a8e26495b8ab3dfd9c3eb279257621ffd" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.2", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-plugin-systemd-inhibit-4.14.2-37.el8.s390x.rpm", + "checksum": "sha256:4291406b201a35d5baaa28d2a0c5b1c218ffb7d981d0ad25532a7d36b672628e" + }, + { + "name": "s390utils-base", + "epoch": 2, + "version": "2.6.0", + "release": "28.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/s390utils-base-2.6.0-28.el8.s390x.rpm", + "checksum": "sha256:851d321970030ef2a2444c50a959daf4e63b814acc142be821eea560c404ab45" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sed-4.5-1.el8.s390x.rpm", + "checksum": "sha256:75cb8fa5f08004dd63e6647cd699bd011b9118a1bc9d6ee41c0eb772391db077" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "41.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/selinux-policy-3.14.3-41.el8.noarch.rpm", + "checksum": "sha256:ed03ae7d72ac4813b40490dfa0fb27fbb6828142d5507dc2fdcee636c4d19125" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "41.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/selinux-policy-targeted-3.14.3-41.el8.noarch.rpm", + "checksum": "sha256:ae2372e9110dfbf53c83bc7f78f867edc3cdb4044d62f1e63174cc3cf2d9e06e" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/setup-2.12.2-5.el8.noarch.rpm", + "checksum": "sha256:d3e95570de2bb3b418df9f883b22eae22086d60c437d9174c8e6bae71d0b7c11" + }, + { + "name": "sg3_utils", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sg3_utils-1.44-5.el8.s390x.rpm", + "checksum": "sha256:a8dadc6e4ba668ee14fda07fecd8879c8c7acdfd9b2effeb829b541d1de0d7a2" + }, + { + "name": "sg3_utils-libs", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sg3_utils-libs-1.44-5.el8.s390x.rpm", + "checksum": "sha256:5fb154dd6b3ae091297ce6c99576a1203451b9fedfd4d3825f1d0ed60ef9c4f6" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "8.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/shadow-utils-4.6-8.el8.s390x.rpm", + "checksum": "sha256:3092ab7fc56e099d2f05167fb582076a29b1c1a2512e4fbabfd3f9000431a66b" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/shared-mime-info-1.9-3.el8.s390x.rpm", + "checksum": "sha256:546ebad5183085f345385a483d5bfea61bb772ecf7071a339d1db614188e69cc" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sqlite-libs-3.26.0-6.el8.s390x.rpm", + "checksum": "sha256:bb54663316f683ffb7732f290d72b7c76a2b42e691a9d5a89869831b3982e41b" + }, + { + "name": "sysfsutils", + "epoch": 0, + "version": "2.1.0", + "release": "24.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sysfsutils-2.1.0-24.el8.s390x.rpm", + "checksum": "sha256:b2841b2cb926e7f529f604e2462304dcd0c63ff08f892eb573fb14029ad6511f" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "29.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/systemd-239-29.el8.s390x.rpm", + "checksum": "sha256:ee7f3a5b1494773ff9003c831f724a09213cac9f160fd2a764d13ea9b1a3921b" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "29.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/systemd-libs-239-29.el8.s390x.rpm", + "checksum": "sha256:31951582ea375a15365e9a42ec6c0cd8a61e6f593e00f0da013d79ac967878b7" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "29.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/systemd-pam-239-29.el8.s390x.rpm", + "checksum": "sha256:1a47d3d89a38ce0caf4136f981e06c643bfb19f86ff014d4db8b923340612692" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/tar-1.30-4.el8.s390x.rpm", + "checksum": "sha256:1af8f3ff12416a7a7b105840f53ada599e6e276ed08f2dea803ad0b21f962968" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/trousers-0.3.14-4.el8.s390x.rpm", + "checksum": "sha256:4c7e176a4024f519401c2b03fd69c23375714f80b5870894fccbb2abe4d0c724" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/trousers-lib-0.3.14-4.el8.s390x.rpm", + "checksum": "sha256:806670e01e158d45919b7c9a5ff13153b9e2e7516d18c8388bf36b493148380e" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/tzdata-2019c-1.el8.noarch.rpm", + "checksum": "sha256:4c90fe6c1bb01242a10c5d9e1655a0c27521febeffab450d33d88b4b11a8fa95" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "22.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/util-linux-2.32.1-22.el8.s390x.rpm", + "checksum": "sha256:dd29e9ec3dac16997fa4718edc3dd016fc6bd070fb0ae17c58c064ff20aa5b03" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/xfsprogs-5.0.0-2.el8.s390x.rpm", + "checksum": "sha256:ccde203ded5f1bdc73301468985fbab7c4dc2f707a3565c6197261ac6f7361d3" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/xz-5.2.4-3.el8.s390x.rpm", + "checksum": "sha256:d05b84d3b2126b91834bd388af680b10a73595363d138cd05920eb4ca8c0f03e" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/xz-libs-5.2.4-3.el8.s390x.rpm", + "checksum": "sha256:2a45920a9540e5057920f7c987d3daf910240a6d1ee63d1fa80fcdf3cee4fd71" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "13.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/zlib-1.2.11-13.el8.s390x.rpm", + "checksum": "sha256:dccd8b3ffb8a9015afe1d4cfa65df84589ede6582845899515d176695b457599" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.178", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/elfutils-debuginfod-client-0.178-7.el8.s390x.rpm", + "checksum": "sha256:3717331bb0807804e392afc98dd1c9cba30fdf2464aaf8869598d483313f9606" + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm", + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm", + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.2.0", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libmaxminddb-1.2.0-7.el8.s390x.rpm", + "checksum": "sha256:5999ddeea23f7ee7640ad90aacd09cc9c29b51fd489d5fe74db9e5b6ed981fef" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libxkbcommon-0.9.1-1.el8.s390x.rpm", + "checksum": "sha256:1206464e80ce9c9730e029702fda02a3510294d334a559215a7d6361c457cd46" + }, + { + "name": "perl-Digest", + "epoch": 0, + "version": "1.17", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-Digest-1.17-395.el8.noarch.rpm", + "checksum": "sha256:9e90e6054da06f5c8c2733c3b66987693a58ddc1f05d95b23ca0a464e26a2b22" + }, + { + "name": "perl-Digest-MD5", + "epoch": 0, + "version": "2.55", + "release": "396.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-Digest-MD5-2.55-396.el8.s390x.rpm", + "checksum": "sha256:7b6a754b55749e5f11ffec19cbb711f570607c2230e5750e5b2aaa915aa765c7" + }, + { + "name": "perl-IO-Socket-IP", + "epoch": 0, + "version": "0.39", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-IO-Socket-IP-0.39-5.el8.noarch.rpm", + "checksum": "sha256:7519f2af362827daecf105e1dccb551350f32dfd3f6a8a85bf6eb1b4b7788255" + }, + { + "name": "perl-IO-Socket-SSL", + "epoch": 0, + "version": "2.066", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-IO-Socket-SSL-2.066-4.el8.noarch.rpm", + "checksum": "sha256:4103adee1d874f535dccc59558968a8687c0cc8391b8adc4957d2952c244cf3b" + }, + { + "name": "perl-Mozilla-CA", + "epoch": 0, + "version": "20160104", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-Mozilla-CA-20160104-7.el8.noarch.rpm", + "checksum": "sha256:93772aade166fdb4bb4a78a0e08bea1b6f155e416597037267ad2603a767b9f5" + }, + { + "name": "perl-Net-SSLeay", + "epoch": 0, + "version": "1.88", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-Net-SSLeay-1.88-1.el8.s390x.rpm", + "checksum": "sha256:b79e0e33b98801e7cda1c845b31cfd5537b150fe4da4df1cacfc1d1534d57ce2" + }, + { + "name": "perl-URI", + "epoch": 0, + "version": "1.73", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-URI-1.73-3.el8.noarch.rpm", + "checksum": "sha256:dd6a948e5a656701156c618e202c0b6defd11ba6f162b6790cbb42cea15141ae" + }, + { + "name": "perl-libnet", + "epoch": 0, + "version": "3.11", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-libnet-3.11-3.el8.noarch.rpm", + "checksum": "sha256:81afd309f084c91d68c06bd46a4fce2e0d1e265a01ff87e309d1202e711e4a02" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/pinentry-1.1.0-2.el8.s390x.rpm", + "checksum": "sha256:13e2716cf8b28d92df079f55cf5f78c280f8d429e619fe22c80abef49c4f901e" + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "9.0.3", + "release": "16.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-pip-9.0.3-16.el8.noarch.rpm", + "checksum": "sha256:dd91378f68acef88ad2c653450a9e03054d87979e79625fd5cd3f01b5a68ba55" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python3-unbound-1.7.3-10.el8.s390x.rpm", + "checksum": "sha256:02bae2823210d586e266d37dad90fb9daed0787c7932bbe0520b769afc6d8d76" + }, + { + "name": "python36", + "epoch": 0, + "version": "3.6.8", + "release": "2.module+el8.1.0+3334+5cb623d7", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.s390x.rpm", + "checksum": "sha256:e990635ac1345ee9d17cd8c20b79341765ca68dce1f9775a68a0a4badce4f333" + }, + { + "name": "qemu-img", + "epoch": 15, + "version": "2.12.0", + "release": "99.module+el8.2.0+5827+8c39933c", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/qemu-img-2.12.0-99.module+el8.2.0+5827+8c39933c.s390x.rpm", + "checksum": "sha256:a971b04b37533967e2b76d92af5b7d5dfe33998584bcc35919044fc78a456123" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/unbound-libs-1.7.3-10.el8.s390x.rpm", + "checksum": "sha256:fbbc385a90edf08de42879e9c8ff762c5d3d9ca750d10e0bccbcd56592e5cff0" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/acl-2.2.53-1.el8.s390x.rpm", + "checksum": "sha256:126bbe586fe4116b343fc349c80480f01d597c2a41abec5bc15019b126f51fdc" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.s390x.rpm", + "checksum": "sha256:a5335a9d7e431ef45f4b6d256bdd7e4bfa98f73d994d6ec2a1b7c5ee792c821a" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/bash-4.4.19-10.el8.s390x.rpm", + "checksum": "sha256:30624f95cd736ceec96b7e2dfc4c4594d38825139c670dcd09b323faeb46d87a" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/brotli-1.0.6-1.el8.s390x.rpm", + "checksum": "sha256:03d1b5541823ba8637e04c69d0e00d711e0c799e764d6191d6ad989b459004e3" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/bzip2-libs-1.0.6-26.el8.s390x.rpm", + "checksum": "sha256:879d72df89400ac2d742b5093870760ec31b5b3dfef346a91fa3e4fffd54bc16" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.11", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/chkconfig-1.11-1.el8.s390x.rpm", + "checksum": "sha256:82f2336e0c5cf2a9271259a12cc5c84f95959503e2f131a2f41ca5f291ad8055" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/coreutils-8.30-6.el8.s390x.rpm", + "checksum": "sha256:cb1d1285d4195cd9b5098120649b95963341366f6e5490dfa9c5f06d7fa32dd4" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/coreutils-common-8.30-6.el8.s390x.rpm", + "checksum": "sha256:0c3e22cf2e8ab8b4c4f043f043e4e71dfccbe9b30ecab3a6532f1dddcc06662c" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cracklib-2.9.6-15.el8.s390x.rpm", + "checksum": "sha256:2020a1fe4a1643ebdd76f6ae3a0942f115e80279625d54a783f804711915e5a3" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cracklib-dicts-2.9.6-15.el8.s390x.rpm", + "checksum": "sha256:dd8480924a9e9d6adc3c36562e090aec3f33e57dc93e4dea73ff37618755406b" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20191128", + "release": "2.git23e1bf1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/crypto-policies-20191128-2.git23e1bf1.el8.noarch.rpm", + "checksum": "sha256:35c952c9e48350adf6f94b48dc7636f664ebbe16ed6632ee30c2e0fd22e7f0bf" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.2.2", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cryptsetup-libs-2.2.2-1.el8.s390x.rpm", + "checksum": "sha256:8ca16af0765e37aac3c2f4ef97791648b0fb0f247196f44bd768aed396c851e2" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/curl-7.61.1-12.el8.s390x.rpm", + "checksum": "sha256:751df4c8122e941b9dc37ab75debbe937807f72e5872401cf82d97c653866e07" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/cyrus-sasl-lib-2.1.27-1.el8.s390x.rpm", + "checksum": "sha256:0cd56334755c7cbc9a4b18d9746dc3cae765a9ae8231b26e1e740a447d82c499" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-1.12.8-9.el8.s390x.rpm", + "checksum": "sha256:e6a00b8a31b790687f294e1a829e3171b4963b34f302aa1f7eeb245d4b49071a" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-common-1.12.8-9.el8.noarch.rpm", + "checksum": "sha256:cff5078143ab38f37a01e840bf5d42e2730c4b8e08ee7221a607ef52de8168cf" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-daemon-1.12.8-9.el8.s390x.rpm", + "checksum": "sha256:3f328081e6f97c4a833582e808d07bba2bf43f2b2d74f509c88889ba57fbe643" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-libs-1.12.8-9.el8.s390x.rpm", + "checksum": "sha256:c2b12d1994efd87e8ba215e98a47c48c6e0fd07929b4889f79fed02d73b48b39" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/dbus-tools-1.12.8-9.el8.s390x.rpm", + "checksum": "sha256:92bba4bcc53313c8add1ad83efbc2eae5e909a3d4f1632ae564ad99335a53aa0" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.169", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/device-mapper-1.02.169-3.el8.s390x.rpm", + "checksum": "sha256:4980cdfb336c5de4c4336f41f6947cfb33b7befe7ed045711248469fe48edcd3" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.169", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/device-mapper-libs-1.02.169-3.el8.s390x.rpm", + "checksum": "sha256:9f1bc331219bc9bc97692477137dda660f512e8df95bbc99dd5300d48db13dbf" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/diffutils-3.6-6.el8.s390x.rpm", + "checksum": "sha256:f0f8b7ec4ec783f4e6310208926f54b0bceed5476b6cebb5be9b336faaeaab0a" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.178", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/elfutils-default-yama-scope-0.178-7.el8.noarch.rpm", + "checksum": "sha256:59c099ac7d9aee3e356bada6ecd9aab9bb57585214267b9d71fe2cba98de3cb0" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.178", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/elfutils-libelf-0.178-7.el8.s390x.rpm", + "checksum": "sha256:1eca3ef1ec2edeae041c3d55687c806db77a2a1e0837fa4937b664e37b903e22" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.178", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/elfutils-libs-0.178-7.el8.s390x.rpm", + "checksum": "sha256:c5a8ad2ff91b081c664dc9a946acaffc85c9dfd202c9e9667f56ad4c23211807" + }, + { + "name": "ethtool", + "epoch": 2, + "version": "5.0", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ethtool-5.0-2.el8.s390x.rpm", + "checksum": "sha256:a5b032d5d199e3facef794929ac837d572e7fcb0db3a9c9d2480daccb8765ee1" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/expat-2.2.5-3.el8.s390x.rpm", + "checksum": "sha256:b63261bfd20aaee97ab2a47c2368c8eab62fc62c1f988a80f52715347c3bd72d" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/filesystem-3.8-2.el8.s390x.rpm", + "checksum": "sha256:408557972679db1bd8c1c2d5a07399ec408d2022fa17d45e6e1d6e9baa6f2513" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/findutils-4.6.0-20.el8.s390x.rpm", + "checksum": "sha256:7b8b3d31e3ddd80fd39bf396122bb4b38582f090889b7d465e0db9eb8d6a7bf2" + }, + { + "name": "fipscheck", + "epoch": 0, + "version": "1.5.0", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/fipscheck-1.5.0-4.el8.s390x.rpm", + "checksum": "sha256:b1af9ab85021403842c69373903db6d89328575a0902b95e852ae8052a177ac7" + }, + { + "name": "fipscheck-lib", + "epoch": 0, + "version": "1.5.0", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/fipscheck-lib-1.5.0-4.el8.s390x.rpm", + "checksum": "sha256:a8d16009aa67cb5f09bdeeca57c1198ad1ecd2d1a963146369bb6200d1adcf5a" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/fuse-libs-2.9.7-12.el8.s390x.rpm", + "checksum": "sha256:2429abaf8afb74f4fdc8050e4c90e315316186d372a809e062a914808d02d907" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gawk-4.2.1-1.el8.s390x.rpm", + "checksum": "sha256:413d3b549e7339e7fee5a2f8232ec11ec3e7490b57a303bde5b15677af0d9add" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gdbm-1.18-1.el8.s390x.rpm", + "checksum": "sha256:e944915a4f9e920d831db11d1a2a08e3ab8712d04735e3499150f90be056026a" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gdbm-libs-1.18-1.el8.s390x.rpm", + "checksum": "sha256:4a88a0e57e579ef6c53736c26cc8bbd7fa1f6d3de4a7d61fcde96d9ecb6947d9" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glib2-2.56.4-8.el8.s390x.rpm", + "checksum": "sha256:e153757cbf8c1552b4f3f9593335a8332030b3aca304caf29258721c52ae4ec0" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "101.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glibc-2.28-101.el8.s390x.rpm", + "checksum": "sha256:4fafa365bdf0023cf4efdd69c2f02f73d6e89d63b8a895d472baf5cc4feeed92" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "101.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glibc-all-langpacks-2.28-101.el8.s390x.rpm", + "checksum": "sha256:f934a992e23ec2d6c2adb63d5031912c4813238a82eb56ce5e0acea184588e78" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "101.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/glibc-common-2.28-101.el8.s390x.rpm", + "checksum": "sha256:df582e688213786293a439987456c58463c8a30564fbd9c4999d0300c17e67ba" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gmp-6.1.2-10.el8.s390x.rpm", + "checksum": "sha256:1cc3e427d85ddd7caeda2c9a5063af110987ef0009b19a3924757e76e0f7ac8a" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.8", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gnutls-3.6.8-9.el8.s390x.rpm", + "checksum": "sha256:d115c393bf047f72711f757568d43e633f75237a76e3cdc0ae267da6ad03ba04" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/grep-3.1-6.el8.s390x.rpm", + "checksum": "sha256:5a84c721418c21c38a32cb3170f5fbf9cb3a8d1d728b408ce026dd8cd3955c15" + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "18.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/groff-base-1.22.3-18.el8.s390x.rpm", + "checksum": "sha256:7fcc96203ab686368fb66f568d042c893a64ac965390fd73f5c891b8a553f430" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "38.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/grubby-8.40-38.el8.s390x.rpm", + "checksum": "sha256:2cc3efed29198a6e4fae393b8db2661e5134b1abba4c6d056b258576925a26ee" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/gzip-1.9-9.el8.s390x.rpm", + "checksum": "sha256:bb55b46b0849b445cbb7c38749b79affcbf4ae4e43c86a39ba28a64dff1ad0ec" + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.20", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/hostname-3.20-6.el8.s390x.rpm", + "checksum": "sha256:c34e6300e7c863eba8fc9ac5c43b01c5474e88d2246c6d0bc97b9f168611e53c" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/info-6.5-6.el8.s390x.rpm", + "checksum": "sha256:9df26f1ca53725cb1091fe8858747bb8c841eee29b604f96031d92880c283238" + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.00.6", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/initscripts-10.00.6-1.el8.s390x.rpm", + "checksum": "sha256:484f75c409de524cde02e7002b768ac6583ee4329bab0a28a0088863211d7832" + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.2.4", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ipcalc-0.2.4-4.el8.s390x.rpm", + "checksum": "sha256:3853bcdd64872c9fddd28f5fafdc863e6374e57e65be2ee4c581263bfea79697" + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.3.0", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/iproute-5.3.0-1.el8.s390x.rpm", + "checksum": "sha256:4b74cef48ac1a874b473311f779b9f9055ee0a0e4b2352439a342f2a353832e5" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/iptables-libs-1.8.4-10.el8.s390x.rpm", + "checksum": "sha256:d3e6f8e99a5c411a1efa7b373cac48b41e9237edf5b65ec4e9f25fb496485bbd" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/json-c-0.13.1-0.2.el8.s390x.rpm", + "checksum": "sha256:42f4cfc52a662e95002a2a35c0edfe8b855162ce84f813f7110394dbf8ff2596" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/keyutils-libs-1.5.10-6.el8.s390x.rpm", + "checksum": "sha256:9b88cba46414a21b780f2fc25f8e76a0cc144aabf1bec1eb9873e10369cd27c3" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kmod-25-16.el8.s390x.rpm", + "checksum": "sha256:7af192dd97d723343c5142e2fb1053744b3d1e77b90e041ad5e0222b0258a001" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/kmod-libs-25-16.el8.s390x.rpm", + "checksum": "sha256:e81af37e55bca721e41de93cbffedac3959256dd44bc67605908ac0298a1b74f" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.17", + "release": "18.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/krb5-libs-1.17-18.el8.s390x.rpm", + "checksum": "sha256:04ae113a2f41daae0c19672c9920f26bb46960e79ce46e626591a7e278d636a3" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libacl-2.2.53-1.el8.s390x.rpm", + "checksum": "sha256:18f6ad86cc7f681783183746576ba0cf5b9f0eee9ab18adb615bf6398404bb74" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "8.el8_1", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libarchive-3.3.2-8.el8_1.s390x.rpm", + "checksum": "sha256:885aad9ce00d5dd80d961c33873de3d7fd5c8e9d7493835e87be438e27423187" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libattr-2.4.48-3.el8.s390x.rpm", + "checksum": "sha256:51436452d89b01024c397555cc58b32ab3ac10055bd03043663b5debd089380b" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "22.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libblkid-2.32.1-22.el8.s390x.rpm", + "checksum": "sha256:4f850d4565e92e1d5542d790b4983104156480bcd8d73be16a779b4231c6598a" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcap-2.26-3.el8.s390x.rpm", + "checksum": "sha256:c190674c383927684353be1fa61f000971811cb6a82782e81adf4906675723c2" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcap-ng-0.7.9-5.el8.s390x.rpm", + "checksum": "sha256:35471bc9ee490a4447723813c288126aceaa2617a0f271cb7cb98d99a6111ba0" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.4", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcom_err-1.45.4-3.el8.s390x.rpm", + "checksum": "sha256:3ea9e13b87f3156dd06ccfe43eeb77cb8834ab7be571a50b2faab5160c49291f" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libcurl-7.61.1-12.el8.s390x.rpm", + "checksum": "sha256:a16c9feab88a9876c41c34cd861490ce28be62e234040a59ce726e79dce4d9ef" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libdb-5.3.28-37.el8.s390x.rpm", + "checksum": "sha256:436949033b66b9e0b91eb42961f0db604dffedd88db1dbce3a8515ade58043da" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libdb-utils-5.3.28-37.el8.s390x.rpm", + "checksum": "sha256:f1e0648c7c3a1b0286d9b300966effd51f328a724c37c32a3bbbcc8e00c6b168" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "22.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libfdisk-2.32.1-22.el8.s390x.rpm", + "checksum": "sha256:d7789087a45017b084c27678ed782e8d923bd402547156a467a910b8682a8b02" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "21.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libffi-3.1-21.el8.s390x.rpm", + "checksum": "sha256:b8b2e5b057d65cee6a8c65f236fbd0a9a717d15384f4d3cbc678563b223bf011" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libgcc-8.3.1-5.el8.s390x.rpm", + "checksum": "sha256:fc9f17a2fc6897c643fff67cf393051bb07ad16962b19a48f0e9991649ebae08" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.3", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libgcrypt-1.8.3-4.el8.s390x.rpm", + "checksum": "sha256:d120bc374362edd18914525ef7311a63e24c888f924c4e7315e036f86796309e" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libgpg-error-1.31-1.el8.s390x.rpm", + "checksum": "sha256:7f97a748a033ca6da465cdb7a861bd844523de3c7a186248bf559f0f64db0952" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libidn2-2.2.0-1.el8.s390x.rpm", + "checksum": "sha256:0af540f9af46e2ed891119dab6189e425323ac0742e0dd0f08b6df4e3ecb7092" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libmetalink-0.1.3-7.el8.s390x.rpm", + "checksum": "sha256:65bef4240948e0b9400b0d50c37420511ef2dbd0c0130bdb4413c3e60d60f2f1" + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libmnl-1.0.4-6.el8.s390x.rpm", + "checksum": "sha256:fdfde1848ded3233eadd44c677269196ef72cd8e82fd372ba2c45df4fa36a140" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "22.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libmount-2.32.1-22.el8.s390x.rpm", + "checksum": "sha256:e6ff2a695a331ce5100f1c195d5748ce33408e300d9d611387889d77719007a3" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "1.el8_0.1", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libnghttp2-1.33.0-1.el8_0.1.s390x.rpm", + "checksum": "sha256:89531a2a7fecb645bb841bb38cad65499754e83e186d380f1a246638c661b000" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.s390x.rpm", + "checksum": "sha256:e1f215df72d86fec4f860cf9a3c318ad7e3db9ac853956650d01087ff0f46caa" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.0", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libpcap-1.9.0-3.el8.s390x.rpm", + "checksum": "sha256:e3c3592c21ceeefe6b62a3b6db97fc58e0ef8ed5208467a2a72dcbced0258cc6" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libpsl-0.20.2-5.el8.s390x.rpm", + "checksum": "sha256:19bb9e23dd56bfc1c29eb620bdd6f059fbea0f4d9a682e71793c52573dc2b5a5" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libpwquality-1.4.0-9.el8.s390x.rpm", + "checksum": "sha256:bce48e34f1c6be096d433665f9c1f69e769445c179b91bc5b79a565604a74e3d" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.1", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libseccomp-2.4.1-1.el8.s390x.rpm", + "checksum": "sha256:4dd35cd8eeb1b33dafb05a476df6eaaf26dcb5442e0f9c08d547bfd73f226d8f" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libselinux-2.9-3.el8.s390x.rpm", + "checksum": "sha256:18ad184245a885a9f2ef53c58aef0ef70fe4e4d6c7728d72b2b6527117f63b61" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libselinux-utils-2.9-3.el8.s390x.rpm", + "checksum": "sha256:bbebf8199fc730d588d48d52bf839ac7cfefd921d32038a62d2d221d745ce945" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsemanage-2.9-2.el8.s390x.rpm", + "checksum": "sha256:3b060586f41724416985e14e50ea2892e96caa103e4055acee38f00db4bcfdf5" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsepol-2.9-1.el8.s390x.rpm", + "checksum": "sha256:792fc1513e33391423efb98aa9bcec85cf5db0a1a417ad41316178590fe069d7" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsigsegv-2.11-5.el8.s390x.rpm", + "checksum": "sha256:29f3de36d25fe893787e4c375a4242ff9baec204158025187269a8379116deaa" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "22.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsmartcols-2.32.1-22.el8.s390x.rpm", + "checksum": "sha256:8e2994a30b907bca3808c40bdde77b0746c4bec0d22c1ccfa74968f98c98a1d7" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.0", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libssh-0.9.0-4.el8.s390x.rpm", + "checksum": "sha256:9310c8ec49c5ab54bbe41637f54f8721a64e55a563469ab3693936a0336a7d1b" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.0", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libssh-config-0.9.0-4.el8.noarch.rpm", + "checksum": "sha256:4446635ab8b16c20215423512319292f21b7cca294b9472c6adb186a303e26c6" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libstdc++-8.3.1-5.el8.s390x.rpm", + "checksum": "sha256:3e13b711f15b6c4db837cac46cb3792363fb8d1a92a93de424b3485768fe4488" + }, + { + "name": "libsysfs", + "epoch": 0, + "version": "2.1.0", + "release": "24.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libsysfs-2.1.0-24.el8.s390x.rpm", + "checksum": "sha256:4cc7df5bb4b441f031309c30264551fa372dfee8571b54d2333aa81a44995194" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libtasn1-4.13-3.el8.s390x.rpm", + "checksum": "sha256:af53fe5838e16824b50a6f16a4cc5850d2406f054d7c961c813673fc27698042" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libtirpc-1.1.4-4.el8.s390x.rpm", + "checksum": "sha256:6269d41355f5813539f64613a06cda7c6b439ad8754db2f2727c0a2ca5713a1b" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libunistring-0.9.9-3.el8.s390x.rpm", + "checksum": "sha256:4b0e7c48e4162142940bb0387fec4e2f03cbad1ca06ee75532a515d8355dc865" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libutempter-1.1.6-14.el8.s390x.rpm", + "checksum": "sha256:8260d48510e13ebc63a211a1e546b3bf243d1c03488e50744ec1f86cca7f2b9f" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "22.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libuuid-2.32.1-22.el8.s390x.rpm", + "checksum": "sha256:079483da2949b3bb56df6d265a700b5cc67d3ff1f945afa1c519b0d53772c199" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libverto-0.3.0-5.el8.s390x.rpm", + "checksum": "sha256:4b12fc6f2004fb899b0c06c462bee1932fef97112267e3784e8519ebb42ddede" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libxcrypt-4.1.1-4.el8.s390x.rpm", + "checksum": "sha256:78f8ad277e8baeb9e14e9678b6f67786ab9eb3a33f98cd012c175fdb63806a31" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libxml2-2.9.7-7.el8.s390x.rpm", + "checksum": "sha256:35197371e37e599e683c8f5d91d1a5699191dfdc58cd67577caf64d60bfbe630" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.2", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/libzstd-1.4.2-2.el8.s390x.rpm", + "checksum": "sha256:ccd4a3fe16edc7f4a47983e191995b3308937b0483f84b141401285b867c8ef7" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/lua-libs-5.3.4-11.el8.s390x.rpm", + "checksum": "sha256:fd05bb7abdb6087d9c0eaaf321d30bc11399dc74881374952c4a5215ea2c86e8" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.1.2", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/lz4-libs-1.8.1.2-4.el8.s390x.rpm", + "checksum": "sha256:63d72c31437b4813bf29bb4daee23292ca4dbd3aa7d1ce6fa4ebc168b244eeaa" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/mpfr-3.1.6-1.el8.s390x.rpm", + "checksum": "sha256:0a3f52922caaa3b8213d350c3c955558d77fe31fe74f27fe58f178f93f381d56" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ncurses-6.1-7.20180224.el8.s390x.rpm", + "checksum": "sha256:ce09871bed0750f1f238db93099b9ae264c746496ae2d79ce654afb8f513f243" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/ncurses-libs-6.1-7.20180224.el8.s390x.rpm", + "checksum": "sha256:7e1b890a9e063d4041fc924cb55067db762b32980d5e30fed11e4a7a3696d026" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/nettle-3.4.1-1.el8.s390x.rpm", + "checksum": "sha256:a66abcd7674f3356670ac394cbd3d1a34a2055259a1ccb45c02e91d190b44389" + }, + { + "name": "network-scripts", + "epoch": 0, + "version": "10.00.6", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/network-scripts-10.00.6-1.el8.s390x.rpm", + "checksum": "sha256:ef48355b0f8c051de6931674024dc472be1eddb4573da8d56a0668faf2352e0c" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "11.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openldap-2.4.46-11.el8.s390x.rpm", + "checksum": "sha256:bbcee6c77d908470de66c126d770790a199337a32db93d8f07bb705330c8d7ba" + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "4.el8_1", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssh-8.0p1-4.el8_1.s390x.rpm", + "checksum": "sha256:cbfc3d7643d281649042460c2ad77758cdd0e99536f3559ad7b96a4dcc5a10a6" + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "4.el8_1", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssh-server-8.0p1-4.el8_1.s390x.rpm", + "checksum": "sha256:4ff9e7b217f71f5d7c8e23632ac242e7bb3cf9b785865d233516185efad9ccb8" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1c", + "release": "15.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssl-1.1.1c-15.el8.s390x.rpm", + "checksum": "sha256:55f735aea8ee2737fa63ebf25d27258f93ad119733a3389bfb8ea37ce140725f" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1c", + "release": "15.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssl-libs-1.1.1c-15.el8.s390x.rpm", + "checksum": "sha256:6d55aefe2ee59069d22514604c47da81d2638d219fed6e7ea086b0ce64e8c2c0" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/openssl-pkcs11-0.4.10-2.el8.s390x.rpm", + "checksum": "sha256:18c6c5fbd998c4d642b2dba059ba5042288b2f566cb03b7b45541b556b95f29d" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/p11-kit-0.23.14-5.el8_0.s390x.rpm", + "checksum": "sha256:2b09ab68296b57a39b302498bdb837c8220e4de3aa1db7a197f23eb6b75cdacd" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/p11-kit-trust-0.23.14-5.el8_0.s390x.rpm", + "checksum": "sha256:f096312848673cfea1e1e448083321fe4599b3339a79dc2b9e3998fd2ea1bdf3" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "8.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/pam-1.3.1-8.el8.s390x.rpm", + "checksum": "sha256:f3693f0a1c9e9e1772795fd0a88d48d8a5d8fa7d6e1b2f0f4bc42d577ef54076" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/pcre-8.42-4.el8.s390x.rpm", + "checksum": "sha256:ec3e5c0bec8bcc4cf03d665e3d48cb0511bd5b9c879630563b29ddbd05bbbda0" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/pcre2-10.32-1.el8.s390x.rpm", + "checksum": "sha256:282edb776a576a2745fe7c3278c813e0f8997e27b0ace2507dcf14f50a5f9840" + }, + { + "name": "perl-Carp", + "epoch": 0, + "version": "1.42", + "release": "396.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Carp-1.42-396.el8.noarch.rpm", + "checksum": "sha256:77066ee655df356370b5d6d736d96835f5712f8e814dfc46b391ecaef9cdd19b" + }, + { + "name": "perl-Data-Dumper", + "epoch": 0, + "version": "2.167", + "release": "399.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Data-Dumper-2.167-399.el8.s390x.rpm", + "checksum": "sha256:684d8438fec907d780ad69dd6f7571f84d73fecefc66026b751935d463973bd8" + }, + { + "name": "perl-Encode", + "epoch": 4, + "version": "2.97", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Encode-2.97-3.el8.s390x.rpm", + "checksum": "sha256:d2c97f8d96d6f82e34975bfcf8c25606e0370a3def4da27d6aabc85a86f589ca" + }, + { + "name": "perl-Errno", + "epoch": 0, + "version": "1.28", + "release": "416.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Errno-1.28-416.el8.s390x.rpm", + "checksum": "sha256:49d92784895f84d5526661e685cd38d5df00d610d12b6850061199d672997348" + }, + { + "name": "perl-Exporter", + "epoch": 0, + "version": "5.72", + "release": "396.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Exporter-5.72-396.el8.noarch.rpm", + "checksum": "sha256:7c385e32c12b2639232f74a5dfdfef86daf82e5418bc292c5ab2640fb5cf46dc" + }, + { + "name": "perl-File-Path", + "epoch": 0, + "version": "2.15", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-File-Path-2.15-2.el8.noarch.rpm", + "checksum": "sha256:d906b13d5dd7a5595133e2a1af83ae17a1aae0c107579db723d21ec4371f3570" + }, + { + "name": "perl-File-Temp", + "epoch": 0, + "version": "0.230.600", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-File-Temp-0.230.600-1.el8.noarch.rpm", + "checksum": "sha256:537059f8a2598f7b364693aec72f67f1a954c525b381139f736d75edbf19aa12" + }, + { + "name": "perl-Getopt-Long", + "epoch": 1, + "version": "2.50", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Getopt-Long-2.50-4.el8.noarch.rpm", + "checksum": "sha256:2976f2c007ac981a70e414960cd7426f446ebc8a0bf8feae7a6ece06c63ffefb" + }, + { + "name": "perl-HTTP-Tiny", + "epoch": 0, + "version": "0.074", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-HTTP-Tiny-0.074-1.el8.noarch.rpm", + "checksum": "sha256:2ee0a45ec4832e276ee130d8440cd29de05b7fd3ca335fe4635499a8bcbdfb73" + }, + { + "name": "perl-IO", + "epoch": 0, + "version": "1.38", + "release": "416.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-IO-1.38-416.el8.s390x.rpm", + "checksum": "sha256:dbb28005c8f68d794af2d9b35a3fcc3294190678b8cc9475acbad8a25a8837d3" + }, + { + "name": "perl-MIME-Base64", + "epoch": 0, + "version": "3.15", + "release": "396.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-MIME-Base64-3.15-396.el8.s390x.rpm", + "checksum": "sha256:01273ffc5443535d055b7962e173a10028fd2f128124480f587f8f9d7f4d4688" + }, + { + "name": "perl-PathTools", + "epoch": 0, + "version": "3.74", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-PathTools-3.74-1.el8.s390x.rpm", + "checksum": "sha256:05bd495695df8a78448ff0d2f2df0480f0bc49c9b7065bc2b1ceba41b42f1772" + }, + { + "name": "perl-Pod-Escapes", + "epoch": 1, + "version": "1.07", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Pod-Escapes-1.07-395.el8.noarch.rpm", + "checksum": "sha256:21b1497d132a52c93129700d58c44ba8c36af8da1bbd23fb408c00c3117c1012" + }, + { + "name": "perl-Pod-Perldoc", + "epoch": 0, + "version": "3.28", + "release": "396.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Pod-Perldoc-3.28-396.el8.noarch.rpm", + "checksum": "sha256:a660c78f704d3d22458c71d86605f51d62e3cc5306d22d66bb1df86c7274ad6c" + }, + { + "name": "perl-Pod-Simple", + "epoch": 1, + "version": "3.35", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Pod-Simple-3.35-395.el8.noarch.rpm", + "checksum": "sha256:e17077c8803f792c02570b2768510b8e4955bd0ae68ab4930e7060fcbb3793f6" + }, + { + "name": "perl-Pod-Usage", + "epoch": 4, + "version": "1.69", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Pod-Usage-1.69-395.el8.noarch.rpm", + "checksum": "sha256:f727e7919c662ae990d02ad2a6299ed3161ad7522587c11441477aae03549f06" + }, + { + "name": "perl-Scalar-List-Utils", + "epoch": 3, + "version": "1.49", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Scalar-List-Utils-1.49-2.el8.s390x.rpm", + "checksum": "sha256:475a66955c1749ba4ea13b5f4935dd13ac322c516961a512386496fe45d04472" + }, + { + "name": "perl-Socket", + "epoch": 4, + "version": "2.027", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Socket-2.027-3.el8.s390x.rpm", + "checksum": "sha256:9ee041eadd639ab6d9187f164c7f7b7954bdb4bf5f228555176207528e84fb1f" + }, + { + "name": "perl-Storable", + "epoch": 1, + "version": "3.11", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Storable-3.11-3.el8.s390x.rpm", + "checksum": "sha256:d6a82133f2ab89874788c141b10ed1f090689cd823a7559ed9197403f4000506" + }, + { + "name": "perl-Term-ANSIColor", + "epoch": 0, + "version": "4.06", + "release": "396.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Term-ANSIColor-4.06-396.el8.noarch.rpm", + "checksum": "sha256:657efda777af4b0d63ab127a72f3373c0d8a18f3b81e912b24a5fbdc9927dc1e" + }, + { + "name": "perl-Term-Cap", + "epoch": 0, + "version": "1.17", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Term-Cap-1.17-395.el8.noarch.rpm", + "checksum": "sha256:41c0f3ea7c7c2f21b5ccb0432db2c1b916ae34691a57f0b7bcb5a09dc7d8fafc" + }, + { + "name": "perl-Text-ParseWords", + "epoch": 0, + "version": "3.30", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Text-ParseWords-3.30-395.el8.noarch.rpm", + "checksum": "sha256:25ff1ab94430493bde65da6a800bb2638edc64dca38971eba2c798475cc18b97" + }, + { + "name": "perl-Text-Tabs+Wrap", + "epoch": 0, + "version": "2013.0523", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Text-Tabs+Wrap-2013.0523-395.el8.noarch.rpm", + "checksum": "sha256:7e078a375d2636b705e1734be79a8b76a306f8578066c901713663e367925bc7" + }, + { + "name": "perl-Time-Local", + "epoch": 1, + "version": "1.280", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Time-Local-1.280-1.el8.noarch.rpm", + "checksum": "sha256:4019e427bf69ed70e3a3cdfdcdd6771bcee1484f8e83bb69539a9e6530baddf1" + }, + { + "name": "perl-Unicode-Normalize", + "epoch": 0, + "version": "1.25", + "release": "396.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-Unicode-Normalize-1.25-396.el8.s390x.rpm", + "checksum": "sha256:7c37700693bc781506a06eafc18ab1cb4a7f6b7559f0595c97f60a4f88390233" + }, + { + "name": "perl-constant", + "epoch": 0, + "version": "1.33", + "release": "396.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-constant-1.33-396.el8.noarch.rpm", + "checksum": "sha256:36798d9e979c9976ed66e23b3c8bda6250c4e80e411afe55c3942291cb4cb4ce" + }, + { + "name": "perl-interpreter", + "epoch": 4, + "version": "5.26.3", + "release": "416.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-interpreter-5.26.3-416.el8.s390x.rpm", + "checksum": "sha256:bcc032463153f59b2b58fa3ef73c3bf871b9e28ba1c0df09b8a5df80ce9af559" + }, + { + "name": "perl-libs", + "epoch": 4, + "version": "5.26.3", + "release": "416.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-libs-5.26.3-416.el8.s390x.rpm", + "checksum": "sha256:90cad0b0149c8e21613247039af49e91e138aa5e3e7d158022cfd274f349b123" + }, + { + "name": "perl-macros", + "epoch": 4, + "version": "5.26.3", + "release": "416.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-macros-5.26.3-416.el8.s390x.rpm", + "checksum": "sha256:186a83e25f1758b3efaf84330ce0ff548c9878d7f4590fcfbbf9f066abc095e0" + }, + { + "name": "perl-parent", + "epoch": 1, + "version": "0.237", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-parent-0.237-1.el8.noarch.rpm", + "checksum": "sha256:abe578c5dee7c306812e241c77ebc8ba4b54f90df8e65c56f8f202ba6e0d7183" + }, + { + "name": "perl-podlators", + "epoch": 0, + "version": "4.11", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-podlators-4.11-1.el8.noarch.rpm", + "checksum": "sha256:4811ab95c1d50ef7380e2c5937ae4490f8e28f56cf787c189437d1709e4423fb" + }, + { + "name": "perl-threads", + "epoch": 1, + "version": "2.21", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-threads-2.21-2.el8.s390x.rpm", + "checksum": "sha256:fdbce603c9cb7792728413638e4d5591f0d094a361e07ff4fe0b7014a61b0104" + }, + { + "name": "perl-threads-shared", + "epoch": 0, + "version": "1.58", + "release": "2.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/perl-threads-shared-1.58-2.el8.s390x.rpm", + "checksum": "sha256:2cd240f59d6570295931d54dfb392604f524572cfe252b1b1c8cec7793736e4d" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "23.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/platform-python-3.6.8-23.el8.s390x.rpm", + "checksum": "sha256:66760eb369153a4c41b1837d57a78d9a2f85f72ad567c8ad7ee3d5a89ef6a6cb" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "16.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/platform-python-pip-9.0.3-16.el8.noarch.rpm", + "checksum": "sha256:e57e36570f635b8df5dfcef61d40bb023ba5dd05a8b3109d6d671d956fcff69e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/platform-python-setuptools-39.2.0-5.el8.noarch.rpm", + "checksum": "sha256:7729a8f9623a6fe0f94428dc8fbb5bb2349659529ecfce4a5f1854e834108614" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/policycoreutils-2.9-9.el8.s390x.rpm", + "checksum": "sha256:5baa177e85af635cf7e1726e6ec558a6b44ebccbe84b13a1fa8a80f6240a19d2" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/popt-1.16-14.el8.s390x.rpm", + "checksum": "sha256:07f8f24c26ec3b1716c37c9b212f4f3397dcb3eb349ef5fe09bb444654fe0033" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/procps-ng-3.3.15-1.el8.s390x.rpm", + "checksum": "sha256:bbf1c85af70c001f23f7a47dbc604fa155765446aa16e4403ec12af21cd1ab42" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "23.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-libs-3.6.8-23.el8.s390x.rpm", + "checksum": "sha256:268928928fa5d36b3b63387a17d91824924116fd3e3ce4016b9339d38e66b722" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "16.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-pip-wheel-9.0.3-16.el8.noarch.rpm", + "checksum": "sha256:34f9e9b309a8c6beabd1969ed3b0a685253eb8dd3e2d22d7ef2045f6796cd908" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/python3-setuptools-wheel-39.2.0-5.el8.noarch.rpm", + "checksum": "sha256:813494dff0f52c8eb8105405b961d47ec32ea7ffc037a00c3bff568086b8ccf9" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/readline-7.0-10.el8.s390x.rpm", + "checksum": "sha256:3e1977c9b662e295f67e2114694d4a11d87215346cd7836c8fe8b9cec050f357" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.2", + "release": "1.0.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/redhat-release-8.2-1.0.el8.s390x.rpm", + "checksum": "sha256:d6afe4abbdf882ed7f15dc9ede23040494b1cdc57981a0d88b6d96b91da471f0" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.2", + "release": "1.0.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/redhat-release-eula-8.2-1.0.el8.s390x.rpm", + "checksum": "sha256:6c144a883629536cf8eb7eccc64389f536cc89ef806b06b4a5de18d1746eecf2" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.2", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-4.14.2-37.el8.s390x.rpm", + "checksum": "sha256:a00c72bd891d02b1e0a903fb9508d1a1aa77a3d95240b058dd8a7662173730b7" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.2", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-libs-4.14.2-37.el8.s390x.rpm", + "checksum": "sha256:8d09980b1baa907fbb3ec8a3d8907912a867bcb0c0bf702d9b3c8601874fe112" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.2", + "release": "37.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/rpm-plugin-selinux-4.14.2-37.el8.s390x.rpm", + "checksum": "sha256:96172fbae0c8f413d09af511f770b08a8e26495b8ab3dfd9c3eb279257621ffd" + }, + { + "name": "s390utils-base", + "epoch": 2, + "version": "2.6.0", + "release": "28.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/s390utils-base-2.6.0-28.el8.s390x.rpm", + "checksum": "sha256:851d321970030ef2a2444c50a959daf4e63b814acc142be821eea560c404ab45" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sed-4.5-1.el8.s390x.rpm", + "checksum": "sha256:75cb8fa5f08004dd63e6647cd699bd011b9118a1bc9d6ee41c0eb772391db077" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "41.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/selinux-policy-3.14.3-41.el8.noarch.rpm", + "checksum": "sha256:ed03ae7d72ac4813b40490dfa0fb27fbb6828142d5507dc2fdcee636c4d19125" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "41.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/selinux-policy-targeted-3.14.3-41.el8.noarch.rpm", + "checksum": "sha256:ae2372e9110dfbf53c83bc7f78f867edc3cdb4044d62f1e63174cc3cf2d9e06e" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/setup-2.12.2-5.el8.noarch.rpm", + "checksum": "sha256:d3e95570de2bb3b418df9f883b22eae22086d60c437d9174c8e6bae71d0b7c11" + }, + { + "name": "sg3_utils", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sg3_utils-1.44-5.el8.s390x.rpm", + "checksum": "sha256:a8dadc6e4ba668ee14fda07fecd8879c8c7acdfd9b2effeb829b541d1de0d7a2" + }, + { + "name": "sg3_utils-libs", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sg3_utils-libs-1.44-5.el8.s390x.rpm", + "checksum": "sha256:5fb154dd6b3ae091297ce6c99576a1203451b9fedfd4d3825f1d0ed60ef9c4f6" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "8.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/shadow-utils-4.6-8.el8.s390x.rpm", + "checksum": "sha256:3092ab7fc56e099d2f05167fb582076a29b1c1a2512e4fbabfd3f9000431a66b" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/shared-mime-info-1.9-3.el8.s390x.rpm", + "checksum": "sha256:546ebad5183085f345385a483d5bfea61bb772ecf7071a339d1db614188e69cc" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "6.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sqlite-libs-3.26.0-6.el8.s390x.rpm", + "checksum": "sha256:bb54663316f683ffb7732f290d72b7c76a2b42e691a9d5a89869831b3982e41b" + }, + { + "name": "sysfsutils", + "epoch": 0, + "version": "2.1.0", + "release": "24.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/sysfsutils-2.1.0-24.el8.s390x.rpm", + "checksum": "sha256:b2841b2cb926e7f529f604e2462304dcd0c63ff08f892eb573fb14029ad6511f" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "29.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/systemd-239-29.el8.s390x.rpm", + "checksum": "sha256:ee7f3a5b1494773ff9003c831f724a09213cac9f160fd2a764d13ea9b1a3921b" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "29.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/systemd-libs-239-29.el8.s390x.rpm", + "checksum": "sha256:31951582ea375a15365e9a42ec6c0cd8a61e6f593e00f0da013d79ac967878b7" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "29.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/systemd-pam-239-29.el8.s390x.rpm", + "checksum": "sha256:1a47d3d89a38ce0caf4136f981e06c643bfb19f86ff014d4db8b923340612692" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/trousers-0.3.14-4.el8.s390x.rpm", + "checksum": "sha256:4c7e176a4024f519401c2b03fd69c23375714f80b5870894fccbb2abe4d0c724" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/trousers-lib-0.3.14-4.el8.s390x.rpm", + "checksum": "sha256:806670e01e158d45919b7c9a5ff13153b9e2e7516d18c8388bf36b493148380e" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2019c", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/tzdata-2019c-1.el8.noarch.rpm", + "checksum": "sha256:4c90fe6c1bb01242a10c5d9e1655a0c27521febeffab450d33d88b4b11a8fa95" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "22.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/util-linux-2.32.1-22.el8.s390x.rpm", + "checksum": "sha256:dd29e9ec3dac16997fa4718edc3dd016fc6bd070fb0ae17c58c064ff20aa5b03" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/xz-libs-5.2.4-3.el8.s390x.rpm", + "checksum": "sha256:2a45920a9540e5057920f7c987d3daf910240a6d1ee63d1fa80fcdf3cee4fd71" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "13.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/BaseOS/s390x/os/Packages/zlib-1.2.11-13.el8.s390x.rpm", + "checksum": "sha256:dccd8b3ffb8a9015afe1d4cfa65df84589ede6582845899515d176695b457599" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.178", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/elfutils-debuginfod-client-0.178-7.el8.s390x.rpm", + "checksum": "sha256:3717331bb0807804e392afc98dd1c9cba30fdf2464aaf8869598d483313f9606" + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm", + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm", + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.2.0", + "release": "7.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libmaxminddb-1.2.0-7.el8.s390x.rpm", + "checksum": "sha256:5999ddeea23f7ee7640ad90aacd09cc9c29b51fd489d5fe74db9e5b6ed981fef" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/libxkbcommon-0.9.1-1.el8.s390x.rpm", + "checksum": "sha256:1206464e80ce9c9730e029702fda02a3510294d334a559215a7d6361c457cd46" + }, + { + "name": "perl-Digest", + "epoch": 0, + "version": "1.17", + "release": "395.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-Digest-1.17-395.el8.noarch.rpm", + "checksum": "sha256:9e90e6054da06f5c8c2733c3b66987693a58ddc1f05d95b23ca0a464e26a2b22" + }, + { + "name": "perl-Digest-MD5", + "epoch": 0, + "version": "2.55", + "release": "396.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-Digest-MD5-2.55-396.el8.s390x.rpm", + "checksum": "sha256:7b6a754b55749e5f11ffec19cbb711f570607c2230e5750e5b2aaa915aa765c7" + }, + { + "name": "perl-IO-Socket-IP", + "epoch": 0, + "version": "0.39", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-IO-Socket-IP-0.39-5.el8.noarch.rpm", + "checksum": "sha256:7519f2af362827daecf105e1dccb551350f32dfd3f6a8a85bf6eb1b4b7788255" + }, + { + "name": "perl-IO-Socket-SSL", + "epoch": 0, + "version": "2.066", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-IO-Socket-SSL-2.066-4.el8.noarch.rpm", + "checksum": "sha256:4103adee1d874f535dccc59558968a8687c0cc8391b8adc4957d2952c244cf3b" + }, + { + "name": "perl-Mozilla-CA", + "epoch": 0, + "version": "20160104", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-Mozilla-CA-20160104-7.el8.noarch.rpm", + "checksum": "sha256:93772aade166fdb4bb4a78a0e08bea1b6f155e416597037267ad2603a767b9f5" + }, + { + "name": "perl-Net-SSLeay", + "epoch": 0, + "version": "1.88", + "release": "1.el8", + "arch": "s390x", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-Net-SSLeay-1.88-1.el8.s390x.rpm", + "checksum": "sha256:b79e0e33b98801e7cda1c845b31cfd5537b150fe4da4df1cacfc1d1534d57ce2" + }, + { + "name": "perl-URI", + "epoch": 0, + "version": "1.73", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-URI-1.73-3.el8.noarch.rpm", + "checksum": "sha256:dd6a948e5a656701156c618e202c0b6defd11ba6f162b6790cbb42cea15141ae" + }, + { + "name": "perl-libnet", + "epoch": 0, + "version": "3.11", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/perl-libnet-3.11-3.el8.noarch.rpm", + "checksum": "sha256:81afd309f084c91d68c06bd46a4fce2e0d1e265a01ff87e309d1202e711e4a02" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.devel.redhat.com/rhel-8/rel-eng/RHEL-8/RHEL-8.2.0-RC-1.3/compose/AppStream/s390x/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "checksums": { + "0": "sha256:18fd6386dd9a98d8181819eaa99365fde24f624b409181d74317ccdffafa1ebd", + "1": "sha256:3d65a2da0ab6a7d04a62c84ff852eccb6641e864f6270a14fbc7a70cdc60ad76" + } + } +} \ No newline at end of file diff --git a/test/cases/rhel_8-x86_64-ami-boot.json b/test/cases/rhel_8-x86_64-ami-boot.json new file mode 100644 index 0000000..9896d71 --- /dev/null +++ b/test/cases/rhel_8-x86_64-ami-boot.json @@ -0,0 +1,9322 @@ +{ + "boot": { + "type": "aws" + }, + "compose-request": { + "distro": "rhel-8", + "arch": "x86_64", + "image-type": "ami", + "repositories": [ + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + }, + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + } + ], + "filename": "image.raw", + "blueprint": {} + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:0027700684ce09927aded1d2c5bb84028529141a6b418897bde37d4af348f8bb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:00cc9cd4517cbb4ad99dbce63b40b700699523550cd7f8202948af28dbe2cd9e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:0129696c208f60326723c650295167b0600791ccb2e9c3d446c4caf9adecb3d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-3.5.0-1.el8.x86_64.rpm" + }, + "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libyaml-0.1.7-5.el8.x86_64.rpm" + }, + "sha256:0391105afa53c9503b59591615bd7c98e2f7a4cd94ff4fd1451c4234522f3880": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libedit-3.1-23.20170329cvs.el8.x86_64.rpm" + }, + "sha256:0493fd81825df694be5d15685bfe4dc002de314d18f5ae47ccee769f65ea5013": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ethtool-5.0-2.el8.x86_64.rpm" + }, + "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmount-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cloud-init-19.4-7.el8.noarch.rpm" + }, + "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-daemon-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-prettytable-0.7.2-14.el8.noarch.rpm" + }, + "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libunistring-0.9.9-3.el8.x86_64.rpm" + }, + "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jinja2-2.10.1-2.el8_0.noarch.rpm" + }, + "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:09ca7b05e26f93d35ac299dbcd865b65ec3a3d2654e1da87d2c3c0462dbe6e4a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-schedutils-0.6-6.el8.x86_64.rpm" + }, + "sha256:09fc3154e76c8ee25b3982c15f3bc455017262c3df5af84075859dcbf79e4f82": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libsemanage-2.9-3.el8.x86_64.rpm" + }, + "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugins-core-4.0.17-2.el8.noarch.rpm" + }, + "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-239-36.el8.x86_64.rpm" + }, + "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/expat-2.2.5-4.el8.x86_64.rpm" + }, + "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-libs-2.3.3-1.el8.x86_64.rpm" + }, + "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm" + }, + "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxcrypt-4.1.1-4.el8.x86_64.rpm" + }, + "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/linux-firmware-20200619-99.git3890db36.el8.noarch.rpm" + }, + "sha256:0e4b7687f0c62f4e336223b939f6cb169c8dac49eee23c53fd919e58d8f989df": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/microcode_ctl-20200609-2.el8.x86_64.rpm" + }, + "sha256:0f3b084d947bc246fe68822129b8ae1294c4187270a19f0966282baf75b34dc6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-subscription-manager-rhsm-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:1065049dbd53849d35db269a23be54148cbe481122381ab71b72f62e83816b26": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gobject-introspection-1.56.1-1.el8.x86_64.rpm" + }, + "sha256:10f40567d02123b71bd878ef423dd0d5dca415e806ff041c3c69b99d114fea84": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chrony-3.5-1.el8.x86_64.rpm" + }, + "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-all-langpacks-2.28-127.el8.x86_64.rpm" + }, + "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm" + }, + "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gmp-6.1.2-10.el8.x86_64.rpm" + }, + "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcc-8.3.1-5.1.el8.x86_64.rpm" + }, + "sha256:13ffce0597b689dd53f55ea0d03dd6d013246634f5c6cbcef51fa549d9734b29": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-cffi-1.11.5-5.el8.x86_64.rpm" + }, + "sha256:14098d36fe4be983fac73d04aeacf0ed7977d962e760907b89e3f80b4ca46f3f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-common-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm" + }, + "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cpio-2.12-8.el8.x86_64.rpm" + }, + "sha256:15462b748aef3c565bcf4f849c1a21c1389a8ef5e7dae94e64718865a67d46a9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-libs-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crontabs-1.11-16.20150630git.el8.noarch.rpm" + }, + "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-smime-2.2.20-2.el8.x86_64.rpm" + }, + "sha256:18d419718a99851370262584bec1b27d60cbd08845b50fbe97e1a56b71cd5ea2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-perf-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm" + }, + "sha256:1b1fe43a375a21f4c3ccf04861c122fd519d4865b9c1abc7f1973b86a0252a06": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-kcm-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-5.2.4-3.el8.x86_64.rpm" + }, + "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.x86_64.rpm" + }, + "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-25-16.el8.x86_64.rpm" + }, + "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tzdata-2020a-1.el8.noarch.rpm" + }, + "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libksba-1.3.5-7.el8.x86_64.rpm" + }, + "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsecret-0.18.6-1.el8.x86_64.rpm" + }, + "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm" + }, + "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/krb5-libs-1.18.2-3.el8.x86_64.rpm" + }, + "sha256:1faa85c12115426d8afc51c8bed2e71bf1dd87063e25052bcf85c17dbc0d9ea4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-network-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-2.02-84.el8.x86_64.rpm" + }, + "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-common-2.28-127.el8.x86_64.rpm" + }, + "sha256:206cba480b58c70348584010d547d21bcd84c6094fd3980e22c6b640da12704c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-syspurpose-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:206de21c82d76de550bcc1959138472640b0a950a311b753203f5dfe5b201b7b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipcalc-0.2.4-4.el8.x86_64.rpm" + }, + "sha256:20dec130e4fd0a2146443791ca7ade6e079cea691d93711813d5f483b691c55a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ethtool-0.14-3.el8.x86_64.rpm" + }, + "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-5.33-16.el8.x86_64.rpm" + }, + "sha256:22585bd5d69c5e0a06fe00a6844da2e5d311512374c1d176f17f41caab7e121f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/parted-3.2-38.el8.x86_64.rpm" + }, + "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:22942af5dab657f662538619ab84a260d3c92e3498694fca2a126100ff9ab316": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pciutils-3.6.4-2.el8.x86_64.rpm" + }, + "sha256:231bc0eeb8fb127f0a4da5a4da1edd226067d5029a0b4fd6ef72c246ccfc31c0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libldb-2.1.3-2.el8.x86_64.rpm" + }, + "sha256:2334cb78002aa30feeb11549d51e204aa868f5538a09957850082d7efb15b00f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/c-ares-1.13.0-5.el8.x86_64.rpm" + }, + "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libcomps-0.1.11-4.el8.x86_64.rpm" + }, + "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-3.6.8-30.el8.x86_64.rpm" + }, + "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tuned-2.14.0-2.el8.noarch.rpm" + }, + "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxkbcommon-0.9.1-1.el8.x86_64.rpm" + }, + "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-2.0.4-10.el8.x86_64.rpm" + }, + "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-ng-0.7.9-5.el8.x86_64.rpm" + }, + "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libattr-2.4.48-3.el8.x86_64.rpm" + }, + "sha256:289e2a39b2a29163a29da35936d4b484fe356d0a6d519524023e79686daf501b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-client-4.3.6-41.el8.x86_64.rpm" + }, + "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mpfr-3.1.6-1.el8.x86_64.rpm" + }, + "sha256:2a65cec3eb67ba7645dd97cf3f3811cd5fb06eea2526d36a683d3fdaa0f2825e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cronie-anacron-1.5.2-4.el8.x86_64.rpm" + }, + "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre2-10.32-2.el8.x86_64.rpm" + }, + "sha256:2cfcc3d6163dfaf7ce76998be992bd0b70dd7cbb838430cecf2aff04cd435d24": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/virt-what-1.18-6.el8.x86_64.rpm" + }, + "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pyOpenSSL-18.0.0-1.el8.noarch.rpm" + }, + "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.x86_64.rpm" + }, + "sha256:2e90748420a7d28b3063df04de129e79ea85310a8d9cf2faf0a2e7b8430307c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-client-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:2eba2dc51974271244bdeaaf17c6e8fac3c35b62914b680076bdc4a32272df01": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpath_utils-0.2.1-39.el8.x86_64.rpm" + }, + "sha256:2eed977380b41885d4f7ad33e122abbb9ea7391c1255d182451efd457688c8b2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnfsidmap-2.3.3-35.el8.x86_64.rpm" + }, + "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-8.30-8.el8.x86_64.rpm" + }, + "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kpartx-0.8.4-2.el8.x86_64.rpm" + }, + "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpsl-0.20.2-6.el8.x86_64.rpm" + }, + "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm" + }, + "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-dicts-2.9.6-15.el8.x86_64.rpm" + }, + "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-oauthlib-2.1.0-1.el8.noarch.rpm" + }, + "sha256:348b7d66a20015563489babbc3850928587575d0acde7c61d55480ebf0f3820d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-squash-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:350657e984b1736bb4a8c9cc01b772517a4194467d6db84110c1cc42131f1cae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/initscripts-10.00.8-1.el8.x86_64.rpm" + }, + "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-chardet-3.0.4-7.el8.noarch.rpm" + }, + "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/zlib-1.2.11-15.el8.x86_64.rpm" + }, + "sha256:3730f3f8d3332836f278250408891cb097379a5d7745fe698b1d418e9e13d335": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-clients-8.0p1-5.el8.x86_64.rpm" + }, + "sha256:37504d807ac0bb6c429d7be9c636f7b755464023511d856846dbb9deb8f6a76d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/logrotate-3.14.0-4.el8.x86_64.rpm" + }, + "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libseccomp-2.4.3-1.el8.x86_64.rpm" + }, + "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-2.26-4.el8.x86_64.rpm" + }, + "sha256:38affe91361bf56b84490d97c7e3f815965cf8d2bbb222c6c045af4bf2dff736": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/langpacks-en-1.0-12.el8.noarch.rpm" + }, + "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-1.18-1.el8.x86_64.rpm" + }, + "sha256:398c1abc82097370f46e6fdf4dae63870e1f767b24d0130c79ed67ea3a67233a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sg3_utils-1.44-5.el8.x86_64.rpm" + }, + "sha256:39e59e9a2460e3b6fe147501e79a57042f161c217963be212359031bb8b18daa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/jansson-2.11-3.el8.x86_64.rpm" + }, + "sha256:3a1058c6ba468722090a74002a3239161771b0d8b444975bff891afd45bb672a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsysfs-2.1.0-24.el8.x86_64.rpm" + }, + "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-configobj-5.0.6-11.el8.noarch.rpm" + }, + "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/procps-ng-3.3.15-2.el8.x86_64.rpm" + }, + "sha256:3b087daa7e9de69c051f22f9df1ef00867ffddd99357bc3a215ccde76a13c02f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtalloc-2.3.1-2.el8.x86_64.rpm" + }, + "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/filesystem-3.8-3.el8.x86_64.rpm" + }, + "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-plugins-core-4.0.17-2.el8.noarch.rpm" + }, + "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-8.3-0.2.el8.x86_64.rpm" + }, + "sha256:3e180253732f00c919aaebc9aaa0562eefac466ce145ce5ad5e1092453aeebaa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rsync-3.1.3-8.el8.x86_64.rpm" + }, + "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ima-evm-utils-1.1-5.el8.x86_64.rpm" + }, + "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tar-1.30-5.el8.x86_64.rpm" + }, + "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pyserial-3.1.1-8.el8.noarch.rpm" + }, + "sha256:3edf7d29e530e6568416d4455e9fbaa511aba236c603da9928e689fae77b9874": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-netifaces-0.10.6-4.el8.x86_64.rpm" + }, + "sha256:40010441888b72dd077d4d6790f837236701b93c8b31da5dbf65c700fd2571fd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-config-generic-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:411d65fe9e463458af055d06a4a89a1d822d26049198615c0afc9741c426c77c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cronie-1.5.2-4.el8.x86_64.rpm" + }, + "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gpg-1.13.1-3.el8.x86_64.rpm" + }, + "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-common-4.3.6-41.el8.noarch.rpm" + }, + "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/util-linux-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xfsprogs-5.0.0-4.el8.x86_64.rpm" + }, + "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:4403330cdf4f15d75d727e2ac8c3358ff6a13209b3395dfac2131984e443eb23": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/snappy-1.1.7-5.el8.x86_64.rpm" + }, + "sha256:4405d32322fd496c65f57a12b6037fd75b49957269dbf9cb0417b598162f7407": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iproute-5.3.0-5.el8.x86_64.rpm" + }, + "sha256:441efa6f0b9a9905ef11ec987d6db89e7dba2857060020c4554e32db3e59fce5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-libs-0.115-11.el8.x86_64.rpm" + }, + "sha256:44e81330b185085f871e9fbf8fae27c8de411600c032aca371dc6d39a3e261da": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_sudo-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libzstd-1.4.4-1.el8.x86_64.rpm" + }, + "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtirpc-1.1.4-4.el8.x86_64.rpm" + }, + "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm" + }, + "sha256:474a66a4cf3d5a00286be40c15bad69ea1ac63a9424a1ff44f20a548a7686f7a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libfastjson-0.99.8-2.el8.x86_64.rpm" + }, + "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm" + }, + "sha256:4882ff53265bdeabb69f1ac9c585454b28ae799ab31fa72c9eb10bdbe1f41d9a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-tools-libs-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:4931d78c496eaaa8e6b6bbec2b4750da52b9fc7e989ae89b7c1fa2a6f40ff7fa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm" + }, + "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libidn2-2.2.0-1.el8.x86_64.rpm" + }, + "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pyudev-0.21.0-7.el8.noarch.rpm" + }, + "sha256:4b8cd13404adac1a30a105e894a733f7c79bfac1a125b8cd095e6ba9c1d056f9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-tui-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-modules-2.02-84.el8.noarch.rpm" + }, + "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgpg-error-1.31-1.el8.x86_64.rpm" + }, + "sha256:4ca553b0c0f6dc130e05e2011cdf1f52132e8f70bd93be8eee4e415b2cac0c56": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-librepo-1.12.0-1.el8.x86_64.rpm" + }, + "sha256:4ccbefcbe75decfef38ccae5d8ff92ba6b00e8232b64ec46ae0c0be8ae20ec50": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libxml2-2.9.7-8.el8.x86_64.rpm" + }, + "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-libs-1.0.6-26.el8.x86_64.rpm" + }, + "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-libs-1.5.10-6.el8.x86_64.rpm" + }, + "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shared-mime-info-1.9-3.el8.x86_64.rpm" + }, + "sha256:4ed1a6294eea09a3a7e15683267ca5d383e4c2b27fd57fe05d2666e0e6c3d26f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtdb-1.4.3-1.el8.x86_64.rpm" + }, + "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/npth-1.5-4.el8.x86_64.rpm" + }, + "sha256:507442831068c749ba21b22bd96993a1a2a6c74dd53c55f34c7f81a21554c82d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libref_array-0.1.5-39.el8.x86_64.rpm" + }, + "sha256:50c0d1828a9e8db638c09d88afb0828d98349027ce498ee7df74e7ff6052ac1d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdhash-0.5.0-39.el8.x86_64.rpm" + }, + "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib2-2.56.4-8.el8.x86_64.rpm" + }, + "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm" + }, + "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-eula-8.3-0.2.el8.x86_64.rpm" + }, + "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-rpm-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-4.4.19-12.el8.x86_64.rpm" + }, + "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-c-0.13.1-0.2.el8.x86_64.rpm" + }, + "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:539abfc369a17023658486f7b4a48c8db159cc4d617b27da256ddac6e15ea687": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpipeline-1.5.0-2.el8.x86_64.rpm" + }, + "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpng-1.6.34-5.el8.x86_64.rpm" + }, + "sha256:53fb6834e2e439e79225d957c4643922da74836417b5558d0c2943b546b26e57": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libndp-1.7-3.el8.x86_64.rpm" + }, + "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-build-libs-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm" + }, + "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcroco-0.6.12-4.el8.x86_64.rpm" + }, + "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonschema-2.6.0-4.el8.noarch.rpm" + }, + "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-hawkey-0.48.0-2.el8.x86_64.rpm" + }, + "sha256:5a85222c8e9997a8b609b915a8fbae756de9b9bff732db852fb15fe0524f2d86": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dbus-1.2.4-15.el8.x86_64.rpm" + }, + "sha256:5bdb82a14d3604899324afc296aa7e7179a15788e2514348eea81b46934d6a3c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/authselect-libs-1.2.1-2.el8.x86_64.rpm" + }, + "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgomp-8.3.1-5.1.el8.x86_64.rpm" + }, + "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lz4-libs-1.8.3-2.el8.x86_64.rpm" + }, + "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonpointer-1.10-11.el8.noarch.rpm" + }, + "sha256:5ef47eb6a042a13c902764907692c1068eb0f69153b47bc85792bef74bfa852b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rsyslog-8.1911.0-6.el8.x86_64.rpm" + }, + "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-libs-5.33-16.el8.x86_64.rpm" + }, + "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lua-libs-5.3.4-11.el8.x86_64.rpm" + }, + "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-6.1-7.20180224.el8.x86_64.rpm" + }, + "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/curl-7.61.1-12.el8.x86_64.rpm" + }, + "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nettle-3.4.1-2.el8.x86_64.rpm" + }, + "sha256:65dc391ab1c96d1009ef2e7706eabacd5cf84f2a47ea1cc87f6f5e2c1324b178": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsepol-2.9-1.el8.x86_64.rpm" + }, + "sha256:664a883f3c7042eb91e0b66fc99c309a729011b4912e4af9397f4e25e1adae90": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cloud-utils-growpart-0.31-1.el8.noarch.rpm" + }, + "sha256:671852e4f32de6278dd384d35d1dc799ab5d3e8ef718e89e516452cbcba068f0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sg3_utils-libs-1.44-5.el8.x86_64.rpm" + }, + "sha256:68362500ad574eb2df43a3d260ab8d0f3ce1ae5f34e66d71f2478fef8e17cb4a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/less-530-1.el8.x86_64.rpm" + }, + "sha256:6844197fd8ffdb16cf94ab77709aa2954cb39512435a377401ebce340d06c7de": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/irqbalance-1.4.0-4.el8.x86_64.rpm" + }, + "sha256:686015c78247edec0a0f5e0d2cbbf02d9feea162e5967ed5b5be35d3951b1f3d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dmidecode-3.2-6.el8.x86_64.rpm" + }, + "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-5.3.28-39.el8.x86_64.rpm" + }, + "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/freetype-2.9.1-4.el8.x86_64.rpm" + }, + "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpwquality-1.4.0-9.el8.x86_64.rpm" + }, + "sha256:6d0dcbaa45457461dd5c4afe97689fa2baf5f95551bbe5e827a152dee545a51d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-libnm-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-7.20180224.el8.x86_64.rpm" + }, + "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-0.19.8.1-17.el8.x86_64.rpm" + }, + "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hwdata-0.314-8.5.el8.noarch.rpm" + }, + "sha256:713ec69b972a8e88622b3fcd3b84fccdbd6c333b68b6c52151c2350edad2576a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgudev-232-4.el8.x86_64.rpm" + }, + "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openldap-2.4.46-15.el8.x86_64.rpm" + }, + "sha256:72ff3a3f6c52849a40cb24f9694115a68cc939970a00c374b4c73b1e4c5dc20c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/squashfs-tools-4.3-19.el8.x86_64.rpm" + }, + "sha256:73c29baa2cd94f1ae6a1d1333818969a281b16dd4262f413ad284c5333719a4d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/groff-base-1.22.3-18.el8.x86_64.rpm" + }, + "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libdnf-0.48.0-2.el8.x86_64.rpm" + }, + "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.x86_64.rpm" + }, + "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsemanage-2.9-3.el8.x86_64.rpm" + }, + "sha256:76ca09c73360f48d4b6fe4d4ee0aa974ef53531222df8e363d8006ec469051cf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-core-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-libs-1.02.171-3.el8.x86_64.rpm" + }, + "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-utils-5.3.28-39.el8.x86_64.rpm" + }, + "sha256:798420bbda79fd0b9312abac25efad6b28957c512497f37f4beddad5d67dd66a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdaemon-0.14-15.el8.x86_64.rpm" + }, + "sha256:7a7a238ea529165348acef1d1a20c1d47c1ef5838d8501f3879bb130c1b73e06": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-cryptography-2.3-3.el8.x86_64.rpm" + }, + "sha256:7b6856dc4dc1d88d9c3c9597fb824b5776af59f045087bdb2713d64045216a36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/man-db-2.7.6.1-17.el8.x86_64.rpm" + }, + "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pinentry-1.1.0-2.el8.x86_64.rpm" + }, + "sha256:7c0b2b064dad700cba2754b46f483e3e59aaf798740470df1daad3d5239fb893": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/passwd-0.80-3.el8.x86_64.rpm" + }, + "sha256:7c292b3bb74d12d77e1e22221c55696a0c5f50304040b3a706c2164d5b6a42e4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_nss_idmap-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:7c89c2d055013779252c12643e8f0b3731f4dd5e2b61d9d81233a0ee298abb36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libteam-1.29-5.el8.x86_64.rpm" + }, + "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/brotli-1.0.6-2.el8.x86_64.rpm" + }, + "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm" + }, + "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libevent-2.1.8-5.el8.x86_64.rpm" + }, + "sha256:7f7f559d65b4b29a1695a644c3d0e04f36565feaa65416f4b84b309716ecf17f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdisk-1.0.3-6.el8.x86_64.rpm" + }, + "sha256:802263173d9c487fc3ca584cc2a5b7b7bb49ac0d12d9026b3246d50fd0888fb1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-glib-0.110-2.el8.x86_64.rpm" + }, + "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/popt-1.16-14.el8.x86_64.rpm" + }, + "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.x86_64.rpm" + }, + "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-libs-1.8.4-14.el8.x86_64.rpm" + }, + "sha256:860676d4231afa3e6b23933d8dd65e5f7f5823910791e6481d2440ae4ec64c53": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtevent-0.10.2-2.el8.x86_64.rpm" + }, + "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libassuan-2.5.1-3.el8.x86_64.rpm" + }, + "sha256:86d305a1466a596f8b436561d674f2510f268bed9e73f56c87da1dd120f99c18": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gobject-base-3.28.3-2.el8.x86_64.rpm" + }, + "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grubby-8.40-41.el8.x86_64.rpm" + }, + "sha256:879cb96ce1591886728a45bfb6dbd6fcf48a43757c42f5481019157037046b61": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-langpack-en-2.28-127.el8.x86_64.rpm" + }, + "sha256:8af00d4b0857240310156e05123e07795e6573da7c1fe9e7fd83b51f13971725": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-0.115-11.el8.x86_64.rpm" + }, + "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libfdisk-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pycparser-2.14-14.el8.noarch.rpm" + }, + "sha256:8d371e753071edc796d2eadb8278980290511be6279fdf46649c81b859497d6a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/prefixdevname-0.1.0-6.el8.x86_64.rpm" + }, + "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpcap-1.9.1-4.el8.x86_64.rpm" + }, + "sha256:8e2c0324789f42ebb6324847249699eb499544a3e6ad67ccd74713b3c1d6ce78": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-magic-5.33-16.el8.noarch.rpm" + }, + "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/unbound-libs-1.7.3-14.el8.x86_64.rpm" + }, + "sha256:8f00781eb679c6baf359099fa2a672ffccfc8e43b7c03c1dc635619cb25ff01d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm" + }, + "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-libs-2.9.7-12.el8.x86_64.rpm" + }, + "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm" + }, + "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libacl-2.2.53-1.el8.x86_64.rpm" + }, + "sha256:947b4e4eebec21501ca62e2a7ff9baae0e4e7c59584fbba4b6276a402cfbb45b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/vim-minimal-8.0.1763-15.el8.x86_64.rpm" + }, + "sha256:9487bff6bb16e7326c8b805751580b4593220ba19b06515c69de83fee8e3bb1f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libselinux-2.9-3.el8.x86_64.rpm" + }, + "sha256:948e61e32986303f12f8dbe40bc44674287b3906a54dadae5e3dfd2ccba88fac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kexec-tools-2.0.20-29.el8.x86_64.rpm" + }, + "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-0.3.0-5.el8.x86_64.rpm" + }, + "sha256:97c8af6f58e3d14317036bd3ed2cbc498803c91c55b9dc0e8f0fddea7ac929e3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-modules-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chkconfig-1.13-2.el8.x86_64.rpm" + }, + "sha256:98a589d7e1cdea9d974aa43f688e55333eed11ce7cb2037d45cc2e69bce579b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/usermode-1.113-1.el8.x86_64.rpm" + }, + "sha256:995a5401cd86404d14d08c0aeafeaa8da3f540b1806f9d0e233d75dec9e45c74": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libmaxminddb-1.2.0-10.el8.x86_64.rpm" + }, + "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:99fa92b5d1e0d335fb2bb961ef39988b50968350b899e8790cead73c9a0bec65": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-rhsm-certificates-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm" + }, + "sha256:9a9ca6857f517f1249d2eb496fe904590d6203e4a9547a28e0b23f21c4cae24a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-pkla-compat-0.1-12.el8.x86_64.rpm" + }, + "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdnf-0.48.0-2.el8.x86_64.rpm" + }, + "sha256:9c5594fcac97c0f8813d7a188e2368e3b1095025fc4a0ecbd5d17e54c0c93f97": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmnl-1.0.4-6.el8.x86_64.rpm" + }, + "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-2.9.6-15.el8.x86_64.rpm" + }, + "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstdc++-8.3.1-5.1.el8.x86_64.rpm" + }, + "sha256:9d9d1bdfba4cd852f90232ebe2c4247e7b3a88c4476578c820788a91d6838e55": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rng-tools-6.8-3.el8.x86_64.rpm" + }, + "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-babel-2.5.1-5.el8.noarch.rpm" + }, + "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64.rpm" + }, + "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libelf-0.180-1.el8.x86_64.rpm" + }, + "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ply-3.9-8.el8.noarch.rpm" + }, + "sha256:a01bc8ab29f40d5e9f03929cee7a796804d63fda3c471054a67d1fd1e5577f6c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-team-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcrypt-1.8.5-4.el8.x86_64.rpm" + }, + "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-0.3.14-4.el8.x86_64.rpm" + }, + "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-glib-1.4.4-1.el8.x86_64.rpm" + }, + "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-libs-25-16.el8.x86_64.rpm" + }, + "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/os-prober-1.74-6.el8.x86_64.rpm" + }, + "sha256:a3dedf8c077b4656d3cd4ef641e696397a3fff83ee8b14f0e3fc69d7c10cebcf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lzo-2.08-14.el8.x86_64.rpm" + }, + "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm" + }, + "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libss-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librhsm-0.0.3-3.el8.x86_64.rpm" + }, + "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pysocks-1.6.8-3.el8.noarch.rpm" + }, + "sha256:a8808c053ffb7ccf826d80fdd458b6521f2cc63e55eb90d79a504fbb66c36cb0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/checkpolicy-2.9-1.el8.x86_64.rpm" + }, + "sha256:a8961c50502aa02071c043a16f93399ac6794a058a0ef42be889abe60f35985b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iputils-20180629-2.el8.x86_64.rpm" + }, + "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcomps-0.1.11-4.el8.x86_64.rpm" + }, + "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setup-2.12.2-6.el8.noarch.rpm" + }, + "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:abeb97ed3fdd82145fd51f8eeaecfca272e4d1418b17a68241e054425a327aa3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/insights-client-3.0.14-2.el8.noarch.rpm" + }, + "sha256:ac2800369b7f4dc05a8fec452eabedf02f153c11e188a1e80157e35592305690": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-cli-3.5.0-1.el8.x86_64.rpm" + }, + "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rootfiles-8.1-22.el8.noarch.rpm" + }, + "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-minimal-2.02-84.el8.x86_64.rpm" + }, + "sha256:ad9b3b98ace87913e9487fceaae165faffb81e9c32400a72e08cc752cab0d037": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/authselect-1.2.1-2.el8.x86_64.rpm" + }, + "sha256:af495353f000008aab42640530c0c9005aaf60f0d4b4cf1a9b66b07bfc5b5881": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-tools-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hardlink-1.3-6.el8.x86_64.rpm" + }, + "sha256:b156691caa225f0025533a68eeb9a2cf3883062dd209ede9ec07727b358171cc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/teamd-1.29-5.el8.x86_64.rpm" + }, + "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxml2-2.9.7-8.el8.x86_64.rpm" + }, + "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtasn1-4.13-3.el8.x86_64.rpm" + }, + "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnutls-3.6.14-3.el8.x86_64.rpm" + }, + "sha256:b2dcbd3b81196b16e33054d31c0129c432cf59fb591035845cc299bbb46000c1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuser-0.62-23.el8.x86_64.rpm" + }, + "sha256:b446b1469bd535cf94e555525f40fa751b1343d89d589f3cff30ee2d7c38258e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hdparm-9.54-2.el8.x86_64.rpm" + }, + "sha256:b4e89276818abec218c909ca961db9bb2e09b1fc609ff280e6c05227143fa24d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-newt-0.52.20-11.el8.x86_64.rpm" + }, + "sha256:b59cdea55a890a10f484d8596e244a18455ee82920c7e466991801d24c4718cd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lshw-B.02.19.2-2.el8.x86_64.rpm" + }, + "sha256:b5fc6f35798edccd0390e54fce40290936c3699227e79cc6d1a42d803358fd03": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-8.0p1-5.el8.x86_64.rpm" + }, + "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-pam-239-36.el8.x86_64.rpm" + }, + "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libreport-filesystem-2.9.5-11.el8.x86_64.rpm" + }, + "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-2.2.20-2.el8.x86_64.rpm" + }, + "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/basesystem-11-5.el8.noarch.rpm" + }, + "sha256:b9a17114d551cc8259eea6996b6871ec36675330fdb1eb16db529e6f8a9c34d5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lsscsi-0.30-1.el8.x86_64.rpm" + }, + "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/which-2.21-12.el8.x86_64.rpm" + }, + "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonpatch-1.21-2.el8.noarch.rpm" + }, + "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pigz-2.4-4.el8.x86_64.rpm" + }, + "sha256:bdb8cc675da18f659ba06252f1f2604d171373239804c3cbc6004dadded54cd3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/yum-utils-4.0.17-2.el8.noarch.rpm" + }, + "sha256:bed436b103161f7d8f61b617c84f3a7b5509f1d00c8425900a88c222b1331b31": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:beea3f8c88b9c0a74d75622aa71467f51c457d1acf0ff557f7cd0e2ae3dfafe3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_certmap-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-libs-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd-2.9.4-2.el8.x86_64.rpm" + }, + "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsolv-0.7.11-1.el8.x86_64.rpm" + }, + "sha256:bfe5c8ea12012936cc59981a10728e95d5fdadd3e893457af7a27c464d8cb6ba": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libestr-0.1.10-1.el8.x86_64.rpm" + }, + "sha256:c0025c0b08ed82c640fa470e62743aed17a33f7948ed0cc969892d7c149206b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-nfs-idmap-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libs-0.180-1.el8.x86_64.rpm" + }, + "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-libs-1.1.1g-9.el8.x86_64.rpm" + }, + "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-libs-1.18-1.el8.x86_64.rpm" + }, + "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-libs-3.26.0-10.el8.x86_64.rpm" + }, + "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm" + }, + "sha256:c24a1814f0fff7edcbd5cdca29571e8a79c5584e8ef300e89aef906b35c8a67d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bind-export-libs-9.11.20-3.el8.x86_64.rpm" + }, + "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-pkcs11-0.4.10-2.el8.x86_64.rpm" + }, + "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-idna-2.5-5.el8.noarch.rpm" + }, + "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-asn1crypto-0.24.0-3.el8.noarch.rpm" + }, + "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcom_err-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:c4279ad2915f4ce1806c4121675e49d2b525bb6e977d487dc2ad138fce8c2734": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_idmap-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:c46ee71ba426e0964b2264bdf18fc4cff4d7815206c9e8a471bdf678e65c24b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libini_config-1.3.1-39.el8.x86_64.rpm" + }, + "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-hwdata-2.3.6-3.el8.noarch.rpm" + }, + "sha256:c5e978963bda83e9321563bb18f69f3753f2eb510dfdafdc6c4e2856dc6b6302": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugin-subscription-manager-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm" + }, + "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pam-1.3.1-11.el8.x86_64.rpm" + }, + "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:cac59a5629e7229653c29c0d575bd8f8c2d3774474615eb65615109afb151981": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libbasicobjects-0.1.1-39.el8.x86_64.rpm" + }, + "sha256:cb8e7909d58206223ad7108a850218360a6b1e2147d97bc94097962dc820d0de": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setools-4.3.0-1.el8.x86_64.rpm" + }, + "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-1.1.1g-9.el8.x86_64.rpm" + }, + "sha256:cc3df9449002eacd595a73df52eb973d3b37e4c03d4669c7dce6ce7a26dabd6b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm" + }, + "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pytz-2017.2-9.el8.noarch.rpm" + }, + "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmetalink-0.1.3-7.el8.x86_64.rpm" + }, + "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/findutils-4.6.0-20.el8.x86_64.rpm" + }, + "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/acl-2.2.53-1.el8.x86_64.rpm" + }, + "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsigsegv-2.11-5.el8.x86_64.rpm" + }, + "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-unbound-1.7.3-14.el8.x86_64.rpm" + }, + "sha256:d186f806ed9c841a385f7acf194c20b78616396414da9131982e469f065619b8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_autofs-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:d2b777ea98ee644997029994136723cf4fa78e97afeaceab39f76b545b51792b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dmidecode-3.12.2-15.el8.x86_64.rpm" + }, + "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-libs-0.19.8.1-17.el8.x86_64.rpm" + }, + "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-libs-5.2.4-3.el8.x86_64.rpm" + }, + "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libs-3.6.8-30.el8.x86_64.rpm" + }, + "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-urllib3-1.24.2-4.el8.noarch.rpm" + }, + "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grep-3.1-6.el8.x86_64.rpm" + }, + "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-extra-2.02-84.el8.x86_64.rpm" + }, + "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gpgme-1.13.1-3.el8.x86_64.rpm" + }, + "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libusbx-1.0.23-3.el8.x86_64.rpm" + }, + "sha256:d80219a299035688091aa230b1c9169143c00c141c4f1ad8e75d176d22cc1cd0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:d81c180c682e6014a0da09aaa144492e8cb03c1d61022513ba6db5bd3740f921": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm" + }, + "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libaio-0.3.112-1.el8.x86_64.rpm" + }, + "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-2.9-3.el8.x86_64.rpm" + }, + "sha256:d94a39545f8570ba2d199e4892cfe05ebd5ea6e4e8322790b4f960bf92da5f09": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/numactl-libs-2.0.12-11.el8.x86_64.rpm" + }, + "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-requests-2.20.0-2.1.el8_1.noarch.rpm" + }, + "sha256:da5606af487682acce52799418a97614d0f6e6b72d15c88c4f6f2a076f384dac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pciutils-libs-3.6.4-2.el8.x86_64.rpm" + }, + "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-libs-239-36.el8.x86_64.rpm" + }, + "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libarchive-3.3.2-9.el8.x86_64.rpm" + }, + "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-tools-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shadow-utils-4.6-10.el8.x86_64.rpm" + }, + "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-2.02-84.el8.x86_64.rpm" + }, + "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-2.28-127.el8.x86_64.rpm" + }, + "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-udev-239-36.el8.x86_64.rpm" + }, + "sha256:de870435340bf30620406df41b79e43adaf7d0a277db1635a0fae710df993fc0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pyyaml-3.12-12.el8.x86_64.rpm" + }, + "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librepo-1.12.0-1.el8.x86_64.rpm" + }, + "sha256:e0cde0185535bd50f7c5e5e2c0c19b5ab086b6bfa8cea95af9d56ffc81cb26b7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-libs-4.3.6-41.el8.x86_64.rpm" + }, + "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/memstrack-0.1.8-1.el8.x86_64.rpm" + }, + "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gawk-4.2.1-1.el8.x86_64.rpm" + }, + "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmartcols-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/info-6.5-6.el8.x86_64.rpm" + }, + "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-utils-2.9-3.el8.x86_64.rpm" + }, + "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/yum-4.2.23-2.el8.noarch.rpm" + }, + "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-1.02.171-3.el8.x86_64.rpm" + }, + "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-linux-procfs-0.6.2-2.el8.noarch.rpm" + }, + "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuuid-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-policycoreutils-2.9-9.el8.noarch.rpm" + }, + "sha256:e67a1c5f02c3e6fdccaad455fddf0dfdf812069da87d841a22df910bf361cfb9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/net-tools-2.0-0.52.20160912git.el8.x86_64.rpm" + }, + "sha256:e868499743c399baa6463fa64a2534a7d32f8e1cca7b1b47ec00c60b34250bfe": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-markupsafe-0.23-19.el8.x86_64.rpm" + }, + "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-2.9-9.el8.x86_64.rpm" + }, + "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-lib-0.3.14-4.el8.x86_64.rpm" + }, + "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libffi-3.1-22.el8.x86_64.rpm" + }, + "sha256:eb5e29df2e7f803a62769aa19c60959ee7d368cd51397e00ebdbedba7d2d4768": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-common-8.30-8.el8.x86_64.rpm" + }, + "sha256:eb9b37827f1851c8a2683cd86026fda90847afe90d51ea746d7cd5f49f6f90d1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/newt-0.52.20-11.el8.x86_64.rpm" + }, + "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libutempter-1.1.6-14.el8.x86_64.rpm" + }, + "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-0.23.14-5.el8_0.x86_64.rpm" + }, + "sha256:ec26615d079ce89316352f813279f74a44871fa8c26fed8f369b9fe847aa5121": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm" + }, + "sha256:ec9adedf0d5d2d096acf4739e2eefab8095498037e13dac9b283e17a9c54259a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sudo-1.8.29-6.el8.x86_64.rpm" + }, + "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre-8.42-4.el8.x86_64.rpm" + }, + "sha256:ecd53a50b4cb20dd1597f45ab4a9cba1fd7793a6000fb2114421687779738672": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcollection-0.7.0-39.el8.x86_64.rpm" + }, + "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/readline-7.0-10.el8.x86_64.rpm" + }, + "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:efa20ae5eca5860656d0131086470cb8d5c3a1ae2819301e7d015f06bbb68a26": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/slang-2.3.2-3.el8.x86_64.rpm" + }, + "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm" + }, + "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm" + }, + "sha256:f2b58d2dfeb45318f8e9e67a96c4f02df69815149ce7b092233a02c0dea19f89": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64.rpm" + }, + "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sed-4.5-2.el8.x86_64.rpm" + }, + "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-0.9.4-2.el8.x86_64.rpm" + }, + "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gzip-1.9-9.el8.x86_64.rpm" + }, + "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-1.2.0-2.el8.x86_64.rpm" + }, + "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64.rpm" + }, + "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/diffutils-3.6-6.el8.x86_64.rpm" + }, + "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm" + }, + "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.x86_64.rpm" + }, + "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcurl-7.61.1-12.el8.x86_64.rpm" + }, + "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dosfstools-4.1-6.el8.x86_64.rpm" + }, + "sha256:fd7bc748b59a48a1ba803dc893be729c8624a4141e23fcef126a401857bbb455": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-server-8.0p1-5.el8.x86_64.rpm" + }, + "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm" + }, + "sha256:fd9e5c379cd3482d32686fb13881827a39037e7a7afa92c62d58c1f05fcb797f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mozjs60-60.9.0-4.el8.x86_64.rpm" + }, + "sha256:fdcc4180cae8fa83ca54188fc2f6796a1bc8d7eb7106163b98dd93d974b48cd1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hostname-3.20-6.el8.x86_64.rpm" + }, + "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-jwt-1.6.1-2.el8.noarch.rpm" + }, + "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libblkid-2.32.1-24.el8.x86_64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3" + }, + { + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "checksum": "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710" + }, + { + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "checksum": "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379" + }, + { + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "checksum": "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7" + }, + { + "checksum": "sha256:f2b58d2dfeb45318f8e9e67a96c4f02df69815149ce7b092233a02c0dea19f89" + }, + { + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ] + }, + "runner": "org.osbuild.rhel82" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:0027700684ce09927aded1d2c5bb84028529141a6b418897bde37d4af348f8bb" + }, + { + "checksum": "sha256:6d0dcbaa45457461dd5c4afe97689fa2baf5f95551bbe5e827a152dee545a51d" + }, + { + "checksum": "sha256:a01bc8ab29f40d5e9f03929cee7a796804d63fda3c471054a67d1fd1e5577f6c" + }, + { + "checksum": "sha256:4b8cd13404adac1a30a105e894a733f7c79bfac1a125b8cd095e6ba9c1d056f9" + }, + { + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "checksum": "sha256:cc3df9449002eacd595a73df52eb973d3b37e4c03d4669c7dce6ce7a26dabd6b" + }, + { + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "checksum": "sha256:ad9b3b98ace87913e9487fceaae165faffb81e9c32400a72e08cc752cab0d037" + }, + { + "checksum": "sha256:5bdb82a14d3604899324afc296aa7e7179a15788e2514348eea81b46934d6a3c" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "checksum": "sha256:c24a1814f0fff7edcbd5cdca29571e8a79c5584e8ef300e89aef906b35c8a67d" + }, + { + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "checksum": "sha256:2334cb78002aa30feeb11549d51e204aa868f5538a09957850082d7efb15b00f" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:a8808c053ffb7ccf826d80fdd458b6521f2cc63e55eb90d79a504fbb66c36cb0" + }, + { + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "checksum": "sha256:10f40567d02123b71bd878ef423dd0d5dca415e806ff041c3c69b99d114fea84" + }, + { + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "checksum": "sha256:411d65fe9e463458af055d06a4a89a1d822d26049198615c0afc9741c426c77c" + }, + { + "checksum": "sha256:2a65cec3eb67ba7645dd97cf3f3811cd5fb06eea2526d36a683d3fdaa0f2825e" + }, + { + "checksum": "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "checksum": "sha256:802263173d9c487fc3ca584cc2a5b7b7bb49ac0d12d9026b3246d50fd0888fb1" + }, + { + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "checksum": "sha256:289e2a39b2a29163a29da35936d4b484fe356d0a6d519524023e79686daf501b" + }, + { + "checksum": "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2" + }, + { + "checksum": "sha256:e0cde0185535bd50f7c5e5e2c0c19b5ab086b6bfa8cea95af9d56ffc81cb26b7" + }, + { + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "checksum": "sha256:686015c78247edec0a0f5e0d2cbbf02d9feea162e5967ed5b5be35d3951b1f3d" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:c5e978963bda83e9321563bb18f69f3753f2eb510dfdafdc6c4e2856dc6b6302" + }, + { + "checksum": "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c" + }, + { + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "checksum": "sha256:40010441888b72dd077d4d6790f837236701b93c8b31da5dbf65c700fd2571fd" + }, + { + "checksum": "sha256:1faa85c12115426d8afc51c8bed2e71bf1dd87063e25052bcf85c17dbc0d9ea4" + }, + { + "checksum": "sha256:348b7d66a20015563489babbc3850928587575d0acde7c61d55480ebf0f3820d" + }, + { + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "checksum": "sha256:0493fd81825df694be5d15685bfe4dc002de314d18f5ae47ccee769f65ea5013" + }, + { + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "checksum": "sha256:7f7f559d65b4b29a1695a644c3d0e04f36565feaa65416f4b84b309716ecf17f" + }, + { + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "checksum": "sha256:879cb96ce1591886728a45bfb6dbd6fcf48a43757c42f5481019157037046b61" + }, + { + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "checksum": "sha256:1065049dbd53849d35db269a23be54148cbe481122381ab71b72f62e83816b26" + }, + { + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "checksum": "sha256:73c29baa2cd94f1ae6a1d1333818969a281b16dd4262f413ad284c5333719a4d" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "checksum": "sha256:b446b1469bd535cf94e555525f40fa751b1343d89d589f3cff30ee2d7c38258e" + }, + { + "checksum": "sha256:fdcc4180cae8fa83ca54188fc2f6796a1bc8d7eb7106163b98dd93d974b48cd1" + }, + { + "checksum": "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f" + }, + { + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "checksum": "sha256:350657e984b1736bb4a8c9cc01b772517a4194467d6db84110c1cc42131f1cae" + }, + { + "checksum": "sha256:206de21c82d76de550bcc1959138472640b0a950a311b753203f5dfe5b201b7b" + }, + { + "checksum": "sha256:4405d32322fd496c65f57a12b6037fd75b49957269dbf9cb0417b598162f7407" + }, + { + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "checksum": "sha256:a8961c50502aa02071c043a16f93399ac6794a058a0ef42be889abe60f35985b" + }, + { + "checksum": "sha256:6844197fd8ffdb16cf94ab77709aa2954cb39512435a377401ebce340d06c7de" + }, + { + "checksum": "sha256:39e59e9a2460e3b6fe147501e79a57042f161c217963be212359031bb8b18daa" + }, + { + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:eb5e29df2e7f803a62769aa19c60959ee7d368cd51397e00ebdbedba7d2d4768" + }, + { + "checksum": "sha256:76ca09c73360f48d4b6fe4d4ee0aa974ef53531222df8e363d8006ec469051cf" + }, + { + "checksum": "sha256:97c8af6f58e3d14317036bd3ed2cbc498803c91c55b9dc0e8f0fddea7ac929e3" + }, + { + "checksum": "sha256:af495353f000008aab42640530c0c9005aaf60f0d4b4cf1a9b66b07bfc5b5881" + }, + { + "checksum": "sha256:4882ff53265bdeabb69f1ac9c585454b28ae799ab31fa72c9eb10bdbe1f41d9a" + }, + { + "checksum": "sha256:948e61e32986303f12f8dbe40bc44674287b3906a54dadae5e3dfd2ccba88fac" + }, + { + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "checksum": "sha256:68362500ad574eb2df43a3d260ab8d0f3ce1ae5f34e66d71f2478fef8e17cb4a" + }, + { + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "checksum": "sha256:cac59a5629e7229653c29c0d575bd8f8c2d3774474615eb65615109afb151981" + }, + { + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "checksum": "sha256:ecd53a50b4cb20dd1597f45ab4a9cba1fd7793a6000fb2114421687779738672" + }, + { + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "checksum": "sha256:798420bbda79fd0b9312abac25efad6b28957c512497f37f4beddad5d67dd66a" + }, + { + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "checksum": "sha256:50c0d1828a9e8db638c09d88afb0828d98349027ce498ee7df74e7ff6052ac1d" + }, + { + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "checksum": "sha256:0391105afa53c9503b59591615bd7c98e2f7a4cd94ff4fd1451c4234522f3880" + }, + { + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "checksum": "sha256:713ec69b972a8e88622b3fcd3b84fccdbd6c333b68b6c52151c2350edad2576a" + }, + { + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "checksum": "sha256:c46ee71ba426e0964b2264bdf18fc4cff4d7815206c9e8a471bdf678e65c24b9" + }, + { + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "checksum": "sha256:231bc0eeb8fb127f0a4da5a4da1edd226067d5029a0b4fd6ef72c246ccfc31c0" + }, + { + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "checksum": "sha256:9c5594fcac97c0f8813d7a188e2368e3b1095025fc4a0ecbd5d17e54c0c93f97" + }, + { + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "checksum": "sha256:53fb6834e2e439e79225d957c4643922da74836417b5558d0c2943b546b26e57" + }, + { + "checksum": "sha256:2eed977380b41885d4f7ad33e122abbb9ea7391c1255d182451efd457688c8b2" + }, + { + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "checksum": "sha256:0129696c208f60326723c650295167b0600791ccb2e9c3d446c4caf9adecb3d7" + }, + { + "checksum": "sha256:ac2800369b7f4dc05a8fec452eabedf02f153c11e188a1e80157e35592305690" + }, + { + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "checksum": "sha256:2eba2dc51974271244bdeaaf17c6e8fac3c35b62914b680076bdc4a32272df01" + }, + { + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "checksum": "sha256:539abfc369a17023658486f7b4a48c8db159cc4d617b27da256ddac6e15ea687" + }, + { + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "checksum": "sha256:507442831068c749ba21b22bd96993a1a2a6c74dd53c55f34c7f81a21554c82d" + }, + { + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:d186f806ed9c841a385f7acf194c20b78616396414da9131982e469f065619b8" + }, + { + "checksum": "sha256:beea3f8c88b9c0a74d75622aa71467f51c457d1acf0ff557f7cd0e2ae3dfafe3" + }, + { + "checksum": "sha256:c4279ad2915f4ce1806c4121675e49d2b525bb6e977d487dc2ad138fce8c2734" + }, + { + "checksum": "sha256:7c292b3bb74d12d77e1e22221c55696a0c5f50304040b3a706c2164d5b6a42e4" + }, + { + "checksum": "sha256:44e81330b185085f871e9fbf8fae27c8de411600c032aca371dc6d39a3e261da" + }, + { + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "checksum": "sha256:3a1058c6ba468722090a74002a3239161771b0d8b444975bff891afd45bb672a" + }, + { + "checksum": "sha256:3b087daa7e9de69c051f22f9df1ef00867ffddd99357bc3a215ccde76a13c02f" + }, + { + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "checksum": "sha256:4ed1a6294eea09a3a7e15683267ca5d383e4c2b27fd57fe05d2666e0e6c3d26f" + }, + { + "checksum": "sha256:7c89c2d055013779252c12643e8f0b3731f4dd5e2b61d9d81233a0ee298abb36" + }, + { + "checksum": "sha256:860676d4231afa3e6b23933d8dd65e5f7f5823910791e6481d2440ae4ec64c53" + }, + { + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "checksum": "sha256:b2dcbd3b81196b16e33054d31c0129c432cf59fb591035845cc299bbb46000c1" + }, + { + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "checksum": "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9" + }, + { + "checksum": "sha256:37504d807ac0bb6c429d7be9c636f7b755464023511d856846dbb9deb8f6a76d" + }, + { + "checksum": "sha256:b59cdea55a890a10f484d8596e244a18455ee82920c7e466991801d24c4718cd" + }, + { + "checksum": "sha256:b9a17114d551cc8259eea6996b6871ec36675330fdb1eb16db529e6f8a9c34d5" + }, + { + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "checksum": "sha256:a3dedf8c077b4656d3cd4ef641e696397a3fff83ee8b14f0e3fc69d7c10cebcf" + }, + { + "checksum": "sha256:7b6856dc4dc1d88d9c3c9597fb824b5776af59f045087bdb2713d64045216a36" + }, + { + "checksum": "sha256:0e4b7687f0c62f4e336223b939f6cb169c8dac49eee23c53fd919e58d8f989df" + }, + { + "checksum": "sha256:fd9e5c379cd3482d32686fb13881827a39037e7a7afa92c62d58c1f05fcb797f" + }, + { + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "checksum": "sha256:e67a1c5f02c3e6fdccaad455fddf0dfdf812069da87d841a22df910bf361cfb9" + }, + { + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "checksum": "sha256:eb9b37827f1851c8a2683cd86026fda90847afe90d51ea746d7cd5f49f6f90d1" + }, + { + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "checksum": "sha256:d94a39545f8570ba2d199e4892cfe05ebd5ea6e4e8322790b4f960bf92da5f09" + }, + { + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "checksum": "sha256:b5fc6f35798edccd0390e54fce40290936c3699227e79cc6d1a42d803358fd03" + }, + { + "checksum": "sha256:3730f3f8d3332836f278250408891cb097379a5d7745fe698b1d418e9e13d335" + }, + { + "checksum": "sha256:fd7bc748b59a48a1ba803dc893be729c8624a4141e23fcef126a401857bbb455" + }, + { + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "checksum": "sha256:22585bd5d69c5e0a06fe00a6844da2e5d311512374c1d176f17f41caab7e121f" + }, + { + "checksum": "sha256:7c0b2b064dad700cba2754b46f483e3e59aaf798740470df1daad3d5239fb893" + }, + { + "checksum": "sha256:22942af5dab657f662538619ab84a260d3c92e3498694fca2a126100ff9ab316" + }, + { + "checksum": "sha256:da5606af487682acce52799418a97614d0f6e6b72d15c88c4f6f2a076f384dac" + }, + { + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "checksum": "sha256:8af00d4b0857240310156e05123e07795e6573da7c1fe9e7fd83b51f13971725" + }, + { + "checksum": "sha256:441efa6f0b9a9905ef11ec987d6db89e7dba2857060020c4554e32db3e59fce5" + }, + { + "checksum": "sha256:9a9ca6857f517f1249d2eb496fe904590d6203e4a9547a28e0b23f21c4cae24a" + }, + { + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "checksum": "sha256:8d371e753071edc796d2eadb8278980290511be6279fdf46649c81b859497d6a" + }, + { + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34" + }, + { + "checksum": "sha256:8f00781eb679c6baf359099fa2a672ffccfc8e43b7c03c1dc635619cb25ff01d" + }, + { + "checksum": "sha256:13ffce0597b689dd53f55ea0d03dd6d013246634f5c6cbcef51fa549d9734b29" + }, + { + "checksum": "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786" + }, + { + "checksum": "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367" + }, + { + "checksum": "sha256:7a7a238ea529165348acef1d1a20c1d47c1ef5838d8501f3879bb130c1b73e06" + }, + { + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "checksum": "sha256:5a85222c8e9997a8b609b915a8fbae756de9b9bff732db852fb15fe0524f2d86" + }, + { + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "checksum": "sha256:d2b777ea98ee644997029994136723cf4fa78e97afeaceab39f76b545b51792b" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87" + }, + { + "checksum": "sha256:20dec130e4fd0a2146443791ca7ade6e079cea691d93711813d5f483b691c55a" + }, + { + "checksum": "sha256:86d305a1466a596f8b436561d674f2510f268bed9e73f56c87da1dd120f99c18" + }, + { + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "checksum": "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20" + }, + { + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "checksum": "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c" + }, + { + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "checksum": "sha256:4ca553b0c0f6dc130e05e2011cdf1f52132e8f70bd93be8eee4e415b2cac0c56" + }, + { + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "checksum": "sha256:9487bff6bb16e7326c8b805751580b4593220ba19b06515c69de83fee8e3bb1f" + }, + { + "checksum": "sha256:09fc3154e76c8ee25b3982c15f3bc455017262c3df5af84075859dcbf79e4f82" + }, + { + "checksum": "sha256:4ccbefcbe75decfef38ccae5d8ff92ba6b00e8232b64ec46ae0c0be8ae20ec50" + }, + { + "checksum": "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f" + }, + { + "checksum": "sha256:8e2c0324789f42ebb6324847249699eb499544a3e6ad67ccd74713b3c1d6ce78" + }, + { + "checksum": "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6" + }, + { + "checksum": "sha256:18d419718a99851370262584bec1b27d60cbd08845b50fbe97e1a56b71cd5ea2" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9" + }, + { + "checksum": "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42" + }, + { + "checksum": "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf" + }, + { + "checksum": "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280" + }, + { + "checksum": "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde" + }, + { + "checksum": "sha256:de870435340bf30620406df41b79e43adaf7d0a277db1635a0fae710df993fc0" + }, + { + "checksum": "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a" + }, + { + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "checksum": "sha256:09ca7b05e26f93d35ac299dbcd865b65ec3a3d2654e1da87d2c3c0462dbe6e4a" + }, + { + "checksum": "sha256:cb8e7909d58206223ad7108a850218360a6b1e2147d97bc94097962dc820d0de" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "checksum": "sha256:0f3b084d947bc246fe68822129b8ae1294c4187270a19f0966282baf75b34dc6" + }, + { + "checksum": "sha256:206cba480b58c70348584010d547d21bcd84c6094fd3980e22c6b640da12704c" + }, + { + "checksum": "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53" + }, + { + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "checksum": "sha256:9d9d1bdfba4cd852f90232ebe2c4247e7b3a88c4476578c820788a91d6838e55" + }, + { + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "checksum": "sha256:3e180253732f00c919aaebc9aaa0562eefac466ce145ce5ad5e1092453aeebaa" + }, + { + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:398c1abc82097370f46e6fdf4dae63870e1f767b24d0130c79ed67ea3a67233a" + }, + { + "checksum": "sha256:671852e4f32de6278dd384d35d1dc799ab5d3e8ef718e89e516452cbcba068f0" + }, + { + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "checksum": "sha256:efa20ae5eca5860656d0131086470cb8d5c3a1ae2819301e7d015f06bbb68a26" + }, + { + "checksum": "sha256:4403330cdf4f15d75d727e2ac8c3358ff6a13209b3395dfac2131984e443eb23" + }, + { + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "checksum": "sha256:72ff3a3f6c52849a40cb24f9694115a68cc939970a00c374b4c73b1e4c5dc20c" + }, + { + "checksum": "sha256:2e90748420a7d28b3063df04de129e79ea85310a8d9cf2faf0a2e7b8430307c8" + }, + { + "checksum": "sha256:14098d36fe4be983fac73d04aeacf0ed7977d962e760907b89e3f80b4ca46f3f" + }, + { + "checksum": "sha256:1b1fe43a375a21f4c3ccf04861c122fd519d4865b9c1abc7f1973b86a0252a06" + }, + { + "checksum": "sha256:c0025c0b08ed82c640fa470e62743aed17a33f7948ed0cc969892d7c149206b3" + }, + { + "checksum": "sha256:65dc391ab1c96d1009ef2e7706eabacd5cf84f2a47ea1cc87f6f5e2c1324b178" + }, + { + "checksum": "sha256:99fa92b5d1e0d335fb2bb961ef39988b50968350b899e8790cead73c9a0bec65" + }, + { + "checksum": "sha256:ec9adedf0d5d2d096acf4739e2eefab8095498037e13dac9b283e17a9c54259a" + }, + { + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "checksum": "sha256:b156691caa225f0025533a68eeb9a2cf3883062dd209ede9ec07727b358171cc" + }, + { + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "checksum": "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:98a589d7e1cdea9d974aa43f688e55333eed11ce7cb2037d45cc2e69bce579b3" + }, + { + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "checksum": "sha256:947b4e4eebec21501ca62e2a7ff9baae0e4e7c59584fbba4b6276a402cfbb45b" + }, + { + "checksum": "sha256:2cfcc3d6163dfaf7ce76998be992bd0b70dd7cbb838430cecf2aff04cd435d24" + }, + { + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "checksum": "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4" + }, + { + "checksum": "sha256:bdb8cc675da18f659ba06252f1f2604d171373239804c3cbc6004dadded54cd3" + }, + { + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "checksum": "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2" + }, + { + "checksum": "sha256:664a883f3c7042eb91e0b66fc99c309a729011b4912e4af9397f4e25e1adae90" + }, + { + "checksum": "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b" + }, + { + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "checksum": "sha256:abeb97ed3fdd82145fd51f8eeaecfca272e4d1418b17a68241e054425a327aa3" + }, + { + "checksum": "sha256:38affe91361bf56b84490d97c7e3f815965cf8d2bbb222c6c045af4bf2dff736" + }, + { + "checksum": "sha256:bfe5c8ea12012936cc59981a10728e95d5fdadd3e893457af7a27c464d8cb6ba" + }, + { + "checksum": "sha256:474a66a4cf3d5a00286be40c15bad69ea1ac63a9424a1ff44f20a548a7686f7a" + }, + { + "checksum": "sha256:995a5401cd86404d14d08c0aeafeaa8da3f540b1806f9d0e233d75dec9e45c74" + }, + { + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "checksum": "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28" + }, + { + "checksum": "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43" + }, + { + "checksum": "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362" + }, + { + "checksum": "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64" + }, + { + "checksum": "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835" + }, + { + "checksum": "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf" + }, + { + "checksum": "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b" + }, + { + "checksum": "sha256:e868499743c399baa6463fa64a2534a7d32f8e1cca7b1b47ec00c60b34250bfe" + }, + { + "checksum": "sha256:3edf7d29e530e6568416d4455e9fbaa511aba236c603da9928e689fae77b9874" + }, + { + "checksum": "sha256:b4e89276818abec218c909ca961db9bb2e09b1fc609ff280e6c05227143fa24d" + }, + { + "checksum": "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55" + }, + { + "checksum": "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21" + }, + { + "checksum": "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414" + }, + { + "checksum": "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca" + }, + { + "checksum": "sha256:15462b748aef3c565bcf4f849c1a21c1389a8ef5e7dae94e64718865a67d46a9" + }, + { + "checksum": "sha256:bed436b103161f7d8f61b617c84f3a7b5509f1d00c8425900a88c222b1331b31" + }, + { + "checksum": "sha256:ec26615d079ce89316352f813279f74a44871fa8c26fed8f369b9fe847aa5121" + }, + { + "checksum": "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a" + }, + { + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "checksum": "sha256:d81c180c682e6014a0da09aaa144492e8cb03c1d61022513ba6db5bd3740f921" + }, + { + "checksum": "sha256:d80219a299035688091aa230b1c9169143c00c141c4f1ad8e75d176d22cc1cd0" + }, + { + "checksum": "sha256:4931d78c496eaaa8e6b6bbec2b4750da52b9fc7e989ae89b7c1fa2a6f40ff7fa" + }, + { + "checksum": "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42" + }, + { + "checksum": "sha256:00cc9cd4517cbb4ad99dbce63b40b700699523550cd7f8202948af28dbe2cd9e" + }, + { + "checksum": "sha256:5ef47eb6a042a13c902764907692c1068eb0f69153b47bc85792bef74bfa852b" + }, + { + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "vfs_type": "xfs", + "path": "/", + "options": "defaults" + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "kernel_opts": "ro console=ttyS0,115200n8 console=tty0 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295 crashkernel=auto", + "legacy": "i386-pc" + } + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "raw", + "filename": "image.raw", + "size": 6442450944, + "ptuuid": "0x14fc63d2", + "pttype": "mbr", + "partitions": [ + { + "start": 2048, + "bootable": true, + "filesystem": { + "type": "xfs", + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/acl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-4.4.19-12.el8.x86_64.rpm", + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/brotli-1.0.6-2.el8.x86_64.rpm", + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-libs-1.0.6-26.el8.x86_64.rpm", + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chkconfig-1.13-2.el8.x86_64.rpm", + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-common-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cpio-2.12-8.el8.x86_64.rpm", + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-dicts-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-libs-2.3.3-1.el8.x86_64.rpm", + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/curl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.x86_64.rpm", + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-daemon-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-libs-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-tools-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-libs-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/diffutils-3.6-6.el8.x86_64.rpm", + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dosfstools-4.1-6.el8.x86_64.rpm", + "checksum": "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libelf-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libs-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/expat-2.2.5-4.el8.x86_64.rpm", + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-libs-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/filesystem-3.8-3.el8.x86_64.rpm", + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/findutils-4.6.0-20.el8.x86_64.rpm", + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/freetype-2.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-libs-2.9.7-12.el8.x86_64.rpm", + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gawk-4.2.1-1.el8.x86_64.rpm", + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-libs-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-libs-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib2-2.56.4-8.el8.x86_64.rpm", + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-all-langpacks-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-common-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gmp-6.1.2-10.el8.x86_64.rpm", + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-smime-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnutls-3.6.14-3.el8.x86_64.rpm", + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gpgme-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grep-3.1-6.el8.x86_64.rpm", + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-modules-2.02-84.el8.noarch.rpm", + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-extra-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-minimal-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grubby-8.40-41.el8.x86_64.rpm", + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gzip-1.9-9.el8.x86_64.rpm", + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hardlink-1.3-6.el8.x86_64.rpm", + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ima-evm-utils-1.1-5.el8.x86_64.rpm", + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/info-6.5-6.el8.x86_64.rpm", + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-libs-1.8.4-14.el8.x86_64.rpm", + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-c-0.13.1-0.2.el8.x86_64.rpm", + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-glib-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-2.0.4-10.el8.x86_64.rpm", + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-libs-1.5.10-6.el8.x86_64.rpm", + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-25-16.el8.x86_64.rpm", + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-libs-25-16.el8.x86_64.rpm", + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kpartx-0.8.4-2.el8.x86_64.rpm", + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/krb5-libs-1.18.2-3.el8.x86_64.rpm", + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libacl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.112", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libaio-0.3.112-1.el8.x86_64.rpm", + "checksum": "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libarchive-3.3.2-9.el8.x86_64.rpm", + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libassuan-2.5.1-3.el8.x86_64.rpm", + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libattr-2.4.48-3.el8.x86_64.rpm", + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libblkid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-2.26-4.el8.x86_64.rpm", + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-ng-0.7.9-5.el8.x86_64.rpm", + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcom_err-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcroco-0.6.12-4.el8.x86_64.rpm", + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcurl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-utils-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libevent-2.1.8-5.el8.x86_64.rpm", + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libfdisk-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libffi-3.1-22.el8.x86_64.rpm", + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcc-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcrypt-1.8.5-4.el8.x86_64.rpm", + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgomp-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgpg-error-1.31-1.el8.x86_64.rpm", + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libidn2-2.2.0-1.el8.x86_64.rpm", + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libksba-1.3.5-7.el8.x86_64.rpm", + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmetalink-0.1.3-7.el8.x86_64.rpm", + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd-2.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmount-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.x86_64.rpm", + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64.rpm", + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpcap-1.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.34", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpng-1.6.34-5.el8.x86_64.rpm", + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpsl-0.20.2-6.el8.x86_64.rpm", + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpwquality-1.4.0-9.el8.x86_64.rpm", + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librepo-1.12.0-1.el8.x86_64.rpm", + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libreport-filesystem-2.9.5-11.el8.x86_64.rpm", + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librhsm-0.0.3-3.el8.x86_64.rpm", + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libseccomp-2.4.3-1.el8.x86_64.rpm", + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsecret-0.18.6-1.el8.x86_64.rpm", + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-utils-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsemanage-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsepol-2.9-1.el8.x86_64.rpm", + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsigsegv-2.11-5.el8.x86_64.rpm", + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmartcols-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsolv-0.7.11-1.el8.x86_64.rpm", + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libss-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-0.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstdc++-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtasn1-4.13-3.el8.x86_64.rpm", + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtirpc-1.1.4-4.el8.x86_64.rpm", + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libunistring-0.9.9-3.el8.x86_64.rpm", + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libusbx-1.0.23-3.el8.x86_64.rpm", + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libutempter-1.1.6-14.el8.x86_64.rpm", + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuuid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-0.3.0-5.el8.x86_64.rpm", + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxcrypt-4.1.1-4.el8.x86_64.rpm", + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxml2-2.9.7-8.el8.x86_64.rpm", + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libyaml-0.1.7-5.el8.x86_64.rpm", + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libzstd-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lua-libs-5.3.4-11.el8.x86_64.rpm", + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lz4-libs-1.8.3-2.el8.x86_64.rpm", + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mpfr-3.1.6-1.el8.x86_64.rpm", + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nettle-3.4.1-2.el8.x86_64.rpm", + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/npth-1.5-4.el8.x86_64.rpm", + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openldap-2.4.46-15.el8.x86_64.rpm", + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-libs-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-pkcs11-0.4.10-2.el8.x86_64.rpm", + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/os-prober-1.74-6.el8.x86_64.rpm", + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pam-1.3.1-11.el8.x86_64.rpm", + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre-8.42-4.el8.x86_64.rpm", + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre2-10.32-2.el8.x86_64.rpm", + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pigz-2.4-4.el8.x86_64.rpm", + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-2.9-9.el8.x86_64.rpm", + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/popt-1.16-14.el8.x86_64.rpm", + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/procps-ng-3.3.15-2.el8.x86_64.rpm", + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gpg-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-hawkey-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libs-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/readline-7.0-10.el8.x86_64.rpm", + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-eula-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-build-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sed-4.5-2.el8.x86_64.rpm", + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shadow-utils-4.6-10.el8.x86_64.rpm", + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shared-mime-info-1.9-3.el8.x86_64.rpm", + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-libs-3.26.0-10.el8.x86_64.rpm", + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-239-36.el8.x86_64.rpm", + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-libs-239-36.el8.x86_64.rpm", + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-pam-239-36.el8.x86_64.rpm", + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-udev-239-36.el8.x86_64.rpm", + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tar-1.30-5.el8.x86_64.rpm", + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-lib-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/util-linux-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/which-2.21-12.el8.x86_64.rpm", + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xfsprogs-5.0.0-4.el8.x86_64.rpm", + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-libs-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/zlib-1.2.11-15.el8.x86_64.rpm", + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxkbcommon-0.9.1-1.el8.x86_64.rpm", + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/memstrack-0.1.8-1.el8.x86_64.rpm", + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pinentry-1.1.0-2.el8.x86_64.rpm", + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-unbound-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "name": "python36", + "epoch": 0, + "version": "3.6.8", + "release": "2.module+el8.1.0+3334+5cb623d7", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64.rpm", + "checksum": "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7" + }, + { + "name": "qemu-img", + "epoch": 15, + "version": "4.2.0", + "release": "29.module+el8.3.0+7212+401047e6", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64.rpm", + "checksum": "sha256:f2b58d2dfeb45318f8e9e67a96c4f02df69815149ce7b092233a02c0dea19f89" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/unbound-libs-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:0027700684ce09927aded1d2c5bb84028529141a6b418897bde37d4af348f8bb" + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-libnm-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:6d0dcbaa45457461dd5c4afe97689fa2baf5f95551bbe5e827a152dee545a51d" + }, + { + "name": "NetworkManager-team", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-team-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:a01bc8ab29f40d5e9f03929cee7a796804d63fda3c471054a67d1fd1e5577f6c" + }, + { + "name": "NetworkManager-tui", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-tui-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:4b8cd13404adac1a30a105e894a733f7c79bfac1a125b8cd095e6ba9c1d056f9" + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/acl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:cc3df9449002eacd595a73df52eb973d3b37e4c03d4669c7dce6ce7a26dabd6b" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "name": "authselect", + "epoch": 0, + "version": "1.2.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/authselect-1.2.1-2.el8.x86_64.rpm", + "checksum": "sha256:ad9b3b98ace87913e9487fceaae165faffb81e9c32400a72e08cc752cab0d037" + }, + { + "name": "authselect-libs", + "epoch": 0, + "version": "1.2.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/authselect-libs-1.2.1-2.el8.x86_64.rpm", + "checksum": "sha256:5bdb82a14d3604899324afc296aa7e7179a15788e2514348eea81b46934d6a3c" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-4.4.19-12.el8.x86_64.rpm", + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "name": "bind-export-libs", + "epoch": 32, + "version": "9.11.20", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bind-export-libs-9.11.20-3.el8.x86_64.rpm", + "checksum": "sha256:c24a1814f0fff7edcbd5cdca29571e8a79c5584e8ef300e89aef906b35c8a67d" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/brotli-1.0.6-2.el8.x86_64.rpm", + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-libs-1.0.6-26.el8.x86_64.rpm", + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.13.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/c-ares-1.13.0-5.el8.x86_64.rpm", + "checksum": "sha256:2334cb78002aa30feeb11549d51e204aa868f5538a09957850082d7efb15b00f" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/checkpolicy-2.9-1.el8.x86_64.rpm", + "checksum": "sha256:a8808c053ffb7ccf826d80fdd458b6521f2cc63e55eb90d79a504fbb66c36cb0" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chkconfig-1.13-2.el8.x86_64.rpm", + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chrony-3.5-1.el8.x86_64.rpm", + "checksum": "sha256:10f40567d02123b71bd878ef423dd0d5dca415e806ff041c3c69b99d114fea84" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-common-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cpio-2.12-8.el8.x86_64.rpm", + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-dicts-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "name": "cronie", + "epoch": 0, + "version": "1.5.2", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cronie-1.5.2-4.el8.x86_64.rpm", + "checksum": "sha256:411d65fe9e463458af055d06a4a89a1d822d26049198615c0afc9741c426c77c" + }, + { + "name": "cronie-anacron", + "epoch": 0, + "version": "1.5.2", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cronie-anacron-1.5.2-4.el8.x86_64.rpm", + "checksum": "sha256:2a65cec3eb67ba7645dd97cf3f3811cd5fb06eea2526d36a683d3fdaa0f2825e" + }, + { + "name": "crontabs", + "epoch": 0, + "version": "1.11", + "release": "16.20150630git.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crontabs-1.11-16.20150630git.el8.noarch.rpm", + "checksum": "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-libs-2.3.3-1.el8.x86_64.rpm", + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/curl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.x86_64.rpm", + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-daemon-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "name": "dbus-glib", + "epoch": 0, + "version": "0.110", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-glib-0.110-2.el8.x86_64.rpm", + "checksum": "sha256:802263173d9c487fc3ca584cc2a5b7b7bb49ac0d12d9026b3246d50fd0888fb1" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-libs-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-tools-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-libs-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-client-4.3.6-41.el8.x86_64.rpm", + "checksum": "sha256:289e2a39b2a29163a29da35936d4b484fe356d0a6d519524023e79686daf501b" + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-common-4.3.6-41.el8.noarch.rpm", + "checksum": "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2" + }, + { + "name": "dhcp-libs", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-libs-4.3.6-41.el8.x86_64.rpm", + "checksum": "sha256:e0cde0185535bd50f7c5e5e2c0c19b5ab086b6bfa8cea95af9d56ffc81cb26b7" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/diffutils-3.6-6.el8.x86_64.rpm", + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "name": "dmidecode", + "epoch": 1, + "version": "3.2", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dmidecode-3.2-6.el8.x86_64.rpm", + "checksum": "sha256:686015c78247edec0a0f5e0d2cbbf02d9feea162e5967ed5b5be35d3951b1f3d" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dnf-plugin-subscription-manager", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugin-subscription-manager-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:c5e978963bda83e9321563bb18f69f3753f2eb510dfdafdc6c4e2856dc6b6302" + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugins-core-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-config-generic-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:40010441888b72dd077d4d6790f837236701b93c8b31da5dbf65c700fd2571fd" + }, + { + "name": "dracut-network", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-network-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:1faa85c12115426d8afc51c8bed2e71bf1dd87063e25052bcf85c17dbc0d9ea4" + }, + { + "name": "dracut-squash", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-squash-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:348b7d66a20015563489babbc3850928587575d0acde7c61d55480ebf0f3820d" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libelf-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libs-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "name": "ethtool", + "epoch": 2, + "version": "5.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ethtool-5.0-2.el8.x86_64.rpm", + "checksum": "sha256:0493fd81825df694be5d15685bfe4dc002de314d18f5ae47ccee769f65ea5013" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/expat-2.2.5-4.el8.x86_64.rpm", + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-libs-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/filesystem-3.8-3.el8.x86_64.rpm", + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/findutils-4.6.0-20.el8.x86_64.rpm", + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/freetype-2.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-libs-2.9.7-12.el8.x86_64.rpm", + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gawk-4.2.1-1.el8.x86_64.rpm", + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-libs-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "name": "gdisk", + "epoch": 0, + "version": "1.0.3", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdisk-1.0.3-6.el8.x86_64.rpm", + "checksum": "sha256:7f7f559d65b4b29a1695a644c3d0e04f36565feaa65416f4b84b309716ecf17f" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-libs-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib2-2.56.4-8.el8.x86_64.rpm", + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-common-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "name": "glibc-langpack-en", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-langpack-en-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:879cb96ce1591886728a45bfb6dbd6fcf48a43757c42f5481019157037046b61" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gmp-6.1.2-10.el8.x86_64.rpm", + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-smime-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnutls-3.6.14-3.el8.x86_64.rpm", + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.56.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gobject-introspection-1.56.1-1.el8.x86_64.rpm", + "checksum": "sha256:1065049dbd53849d35db269a23be54148cbe481122381ab71b72f62e83816b26" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gpgme-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grep-3.1-6.el8.x86_64.rpm", + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "18.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/groff-base-1.22.3-18.el8.x86_64.rpm", + "checksum": "sha256:73c29baa2cd94f1ae6a1d1333818969a281b16dd4262f413ad284c5333719a4d" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-modules-2.02-84.el8.noarch.rpm", + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-extra-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-minimal-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grubby-8.40-41.el8.x86_64.rpm", + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gzip-1.9-9.el8.x86_64.rpm", + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hardlink-1.3-6.el8.x86_64.rpm", + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "name": "hdparm", + "epoch": 0, + "version": "9.54", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hdparm-9.54-2.el8.x86_64.rpm", + "checksum": "sha256:b446b1469bd535cf94e555525f40fa751b1343d89d589f3cff30ee2d7c38258e" + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.20", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hostname-3.20-6.el8.x86_64.rpm", + "checksum": "sha256:fdcc4180cae8fa83ca54188fc2f6796a1bc8d7eb7106163b98dd93d974b48cd1" + }, + { + "name": "hwdata", + "epoch": 0, + "version": "0.314", + "release": "8.5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hwdata-0.314-8.5.el8.noarch.rpm", + "checksum": "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ima-evm-utils-1.1-5.el8.x86_64.rpm", + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/info-6.5-6.el8.x86_64.rpm", + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.00.8", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/initscripts-10.00.8-1.el8.x86_64.rpm", + "checksum": "sha256:350657e984b1736bb4a8c9cc01b772517a4194467d6db84110c1cc42131f1cae" + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.2.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipcalc-0.2.4-4.el8.x86_64.rpm", + "checksum": "sha256:206de21c82d76de550bcc1959138472640b0a950a311b753203f5dfe5b201b7b" + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.3.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iproute-5.3.0-5.el8.x86_64.rpm", + "checksum": "sha256:4405d32322fd496c65f57a12b6037fd75b49957269dbf9cb0417b598162f7407" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-libs-1.8.4-14.el8.x86_64.rpm", + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "name": "iputils", + "epoch": 0, + "version": "20180629", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iputils-20180629-2.el8.x86_64.rpm", + "checksum": "sha256:a8961c50502aa02071c043a16f93399ac6794a058a0ef42be889abe60f35985b" + }, + { + "name": "irqbalance", + "epoch": 2, + "version": "1.4.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/irqbalance-1.4.0-4.el8.x86_64.rpm", + "checksum": "sha256:6844197fd8ffdb16cf94ab77709aa2954cb39512435a377401ebce340d06c7de" + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.11", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/jansson-2.11-3.el8.x86_64.rpm", + "checksum": "sha256:39e59e9a2460e3b6fe147501e79a57042f161c217963be212359031bb8b18daa" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-c-0.13.1-0.2.el8.x86_64.rpm", + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-glib-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-2.0.4-10.el8.x86_64.rpm", + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "kernel", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:eb5e29df2e7f803a62769aa19c60959ee7d368cd51397e00ebdbedba7d2d4768" + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-core-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:76ca09c73360f48d4b6fe4d4ee0aa974ef53531222df8e363d8006ec469051cf" + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-modules-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:97c8af6f58e3d14317036bd3ed2cbc498803c91c55b9dc0e8f0fddea7ac929e3" + }, + { + "name": "kernel-tools", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-tools-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:af495353f000008aab42640530c0c9005aaf60f0d4b4cf1a9b66b07bfc5b5881" + }, + { + "name": "kernel-tools-libs", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-tools-libs-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:4882ff53265bdeabb69f1ac9c585454b28ae799ab31fa72c9eb10bdbe1f41d9a" + }, + { + "name": "kexec-tools", + "epoch": 0, + "version": "2.0.20", + "release": "29.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kexec-tools-2.0.20-29.el8.x86_64.rpm", + "checksum": "sha256:948e61e32986303f12f8dbe40bc44674287b3906a54dadae5e3dfd2ccba88fac" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-libs-1.5.10-6.el8.x86_64.rpm", + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-25-16.el8.x86_64.rpm", + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-libs-25-16.el8.x86_64.rpm", + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kpartx-0.8.4-2.el8.x86_64.rpm", + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/krb5-libs-1.18.2-3.el8.x86_64.rpm", + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "name": "less", + "epoch": 0, + "version": "530", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/less-530-1.el8.x86_64.rpm", + "checksum": "sha256:68362500ad574eb2df43a3d260ab8d0f3ce1ae5f34e66d71f2478fef8e17cb4a" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libacl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libarchive-3.3.2-9.el8.x86_64.rpm", + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libassuan-2.5.1-3.el8.x86_64.rpm", + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libattr-2.4.48-3.el8.x86_64.rpm", + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libbasicobjects-0.1.1-39.el8.x86_64.rpm", + "checksum": "sha256:cac59a5629e7229653c29c0d575bd8f8c2d3774474615eb65615109afb151981" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libblkid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-2.26-4.el8.x86_64.rpm", + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-ng-0.7.9-5.el8.x86_64.rpm", + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcollection-0.7.0-39.el8.x86_64.rpm", + "checksum": "sha256:ecd53a50b4cb20dd1597f45ab4a9cba1fd7793a6000fb2114421687779738672" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcom_err-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcroco-0.6.12-4.el8.x86_64.rpm", + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcurl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "name": "libdaemon", + "epoch": 0, + "version": "0.14", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdaemon-0.14-15.el8.x86_64.rpm", + "checksum": "sha256:798420bbda79fd0b9312abac25efad6b28957c512497f37f4beddad5d67dd66a" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-utils-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdhash-0.5.0-39.el8.x86_64.rpm", + "checksum": "sha256:50c0d1828a9e8db638c09d88afb0828d98349027ce498ee7df74e7ff6052ac1d" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "23.20170329cvs.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libedit-3.1-23.20170329cvs.el8.x86_64.rpm", + "checksum": "sha256:0391105afa53c9503b59591615bd7c98e2f7a4cd94ff4fd1451c4234522f3880" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libevent-2.1.8-5.el8.x86_64.rpm", + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libfdisk-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libffi-3.1-22.el8.x86_64.rpm", + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcc-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcrypt-1.8.5-4.el8.x86_64.rpm", + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgomp-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgpg-error-1.31-1.el8.x86_64.rpm", + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "name": "libgudev", + "epoch": 0, + "version": "232", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgudev-232-4.el8.x86_64.rpm", + "checksum": "sha256:713ec69b972a8e88622b3fcd3b84fccdbd6c333b68b6c52151c2350edad2576a" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libidn2-2.2.0-1.el8.x86_64.rpm", + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libini_config-1.3.1-39.el8.x86_64.rpm", + "checksum": "sha256:c46ee71ba426e0964b2264bdf18fc4cff4d7815206c9e8a471bdf678e65c24b9" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libksba-1.3.5-7.el8.x86_64.rpm", + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.1.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libldb-2.1.3-2.el8.x86_64.rpm", + "checksum": "sha256:231bc0eeb8fb127f0a4da5a4da1edd226067d5029a0b4fd6ef72c246ccfc31c0" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmetalink-0.1.3-7.el8.x86_64.rpm", + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmnl-1.0.4-6.el8.x86_64.rpm", + "checksum": "sha256:9c5594fcac97c0f8813d7a188e2368e3b1095025fc4a0ecbd5d17e54c0c93f97" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd-2.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmount-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libndp-1.7-3.el8.x86_64.rpm", + "checksum": "sha256:53fb6834e2e439e79225d957c4643922da74836417b5558d0c2943b546b26e57" + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.3.3", + "release": "35.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnfsidmap-2.3.3-35.el8.x86_64.rpm", + "checksum": "sha256:2eed977380b41885d4f7ad33e122abbb9ea7391c1255d182451efd457688c8b2" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.x86_64.rpm", + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-3.5.0-1.el8.x86_64.rpm", + "checksum": "sha256:0129696c208f60326723c650295167b0600791ccb2e9c3d446c4caf9adecb3d7" + }, + { + "name": "libnl3-cli", + "epoch": 0, + "version": "3.5.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-cli-3.5.0-1.el8.x86_64.rpm", + "checksum": "sha256:ac2800369b7f4dc05a8fec452eabedf02f153c11e188a1e80157e35592305690" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64.rpm", + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpath_utils-0.2.1-39.el8.x86_64.rpm", + "checksum": "sha256:2eba2dc51974271244bdeaaf17c6e8fac3c35b62914b680076bdc4a32272df01" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpcap-1.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpipeline-1.5.0-2.el8.x86_64.rpm", + "checksum": "sha256:539abfc369a17023658486f7b4a48c8db159cc4d617b27da256ddac6e15ea687" + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.34", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpng-1.6.34-5.el8.x86_64.rpm", + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpsl-0.20.2-6.el8.x86_64.rpm", + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpwquality-1.4.0-9.el8.x86_64.rpm", + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libref_array-0.1.5-39.el8.x86_64.rpm", + "checksum": "sha256:507442831068c749ba21b22bd96993a1a2a6c74dd53c55f34c7f81a21554c82d" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librepo-1.12.0-1.el8.x86_64.rpm", + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libreport-filesystem-2.9.5-11.el8.x86_64.rpm", + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librhsm-0.0.3-3.el8.x86_64.rpm", + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libseccomp-2.4.3-1.el8.x86_64.rpm", + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsecret-0.18.6-1.el8.x86_64.rpm", + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-utils-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsemanage-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsepol-2.9-1.el8.x86_64.rpm", + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsigsegv-2.11-5.el8.x86_64.rpm", + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmartcols-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsolv-0.7.11-1.el8.x86_64.rpm", + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libss-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-0.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_autofs-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:d186f806ed9c841a385f7acf194c20b78616396414da9131982e469f065619b8" + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_certmap-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:beea3f8c88b9c0a74d75622aa71467f51c457d1acf0ff557f7cd0e2ae3dfafe3" + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_idmap-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:c4279ad2915f4ce1806c4121675e49d2b525bb6e977d487dc2ad138fce8c2734" + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_nss_idmap-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:7c292b3bb74d12d77e1e22221c55696a0c5f50304040b3a706c2164d5b6a42e4" + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_sudo-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:44e81330b185085f871e9fbf8fae27c8de411600c032aca371dc6d39a3e261da" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstdc++-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "name": "libsysfs", + "epoch": 0, + "version": "2.1.0", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsysfs-2.1.0-24.el8.x86_64.rpm", + "checksum": "sha256:3a1058c6ba468722090a74002a3239161771b0d8b444975bff891afd45bb672a" + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtalloc-2.3.1-2.el8.x86_64.rpm", + "checksum": "sha256:3b087daa7e9de69c051f22f9df1ef00867ffddd99357bc3a215ccde76a13c02f" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtasn1-4.13-3.el8.x86_64.rpm", + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtdb-1.4.3-1.el8.x86_64.rpm", + "checksum": "sha256:4ed1a6294eea09a3a7e15683267ca5d383e4c2b27fd57fe05d2666e0e6c3d26f" + }, + { + "name": "libteam", + "epoch": 0, + "version": "1.29", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libteam-1.29-5.el8.x86_64.rpm", + "checksum": "sha256:7c89c2d055013779252c12643e8f0b3731f4dd5e2b61d9d81233a0ee298abb36" + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.2", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtevent-0.10.2-2.el8.x86_64.rpm", + "checksum": "sha256:860676d4231afa3e6b23933d8dd65e5f7f5823910791e6481d2440ae4ec64c53" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtirpc-1.1.4-4.el8.x86_64.rpm", + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libunistring-0.9.9-3.el8.x86_64.rpm", + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libusbx-1.0.23-3.el8.x86_64.rpm", + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "23.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuser-0.62-23.el8.x86_64.rpm", + "checksum": "sha256:b2dcbd3b81196b16e33054d31c0129c432cf59fb591035845cc299bbb46000c1" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libutempter-1.1.6-14.el8.x86_64.rpm", + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuuid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-0.3.0-5.el8.x86_64.rpm", + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxcrypt-4.1.1-4.el8.x86_64.rpm", + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxml2-2.9.7-8.el8.x86_64.rpm", + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libyaml-0.1.7-5.el8.x86_64.rpm", + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libzstd-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20200619", + "release": "99.git3890db36.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/linux-firmware-20200619-99.git3890db36.el8.noarch.rpm", + "checksum": "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9" + }, + { + "name": "logrotate", + "epoch": 0, + "version": "3.14.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/logrotate-3.14.0-4.el8.x86_64.rpm", + "checksum": "sha256:37504d807ac0bb6c429d7be9c636f7b755464023511d856846dbb9deb8f6a76d" + }, + { + "name": "lshw", + "epoch": 0, + "version": "B.02.19.2", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lshw-B.02.19.2-2.el8.x86_64.rpm", + "checksum": "sha256:b59cdea55a890a10f484d8596e244a18455ee82920c7e466991801d24c4718cd" + }, + { + "name": "lsscsi", + "epoch": 0, + "version": "0.30", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lsscsi-0.30-1.el8.x86_64.rpm", + "checksum": "sha256:b9a17114d551cc8259eea6996b6871ec36675330fdb1eb16db529e6f8a9c34d5" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lua-libs-5.3.4-11.el8.x86_64.rpm", + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lz4-libs-1.8.3-2.el8.x86_64.rpm", + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "name": "lzo", + "epoch": 0, + "version": "2.08", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lzo-2.08-14.el8.x86_64.rpm", + "checksum": "sha256:a3dedf8c077b4656d3cd4ef641e696397a3fff83ee8b14f0e3fc69d7c10cebcf" + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.7.6.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/man-db-2.7.6.1-17.el8.x86_64.rpm", + "checksum": "sha256:7b6856dc4dc1d88d9c3c9597fb824b5776af59f045087bdb2713d64045216a36" + }, + { + "name": "microcode_ctl", + "epoch": 4, + "version": "20200609", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/microcode_ctl-20200609-2.el8.x86_64.rpm", + "checksum": "sha256:0e4b7687f0c62f4e336223b939f6cb169c8dac49eee23c53fd919e58d8f989df" + }, + { + "name": "mozjs60", + "epoch": 0, + "version": "60.9.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mozjs60-60.9.0-4.el8.x86_64.rpm", + "checksum": "sha256:fd9e5c379cd3482d32686fb13881827a39037e7a7afa92c62d58c1f05fcb797f" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mpfr-3.1.6-1.el8.x86_64.rpm", + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.52.20160912git.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/net-tools-2.0-0.52.20160912git.el8.x86_64.rpm", + "checksum": "sha256:e67a1c5f02c3e6fdccaad455fddf0dfdf812069da87d841a22df910bf361cfb9" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nettle-3.4.1-2.el8.x86_64.rpm", + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "name": "newt", + "epoch": 0, + "version": "0.52.20", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/newt-0.52.20-11.el8.x86_64.rpm", + "checksum": "sha256:eb9b37827f1851c8a2683cd86026fda90847afe90d51ea746d7cd5f49f6f90d1" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/npth-1.5-4.el8.x86_64.rpm", + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "name": "numactl-libs", + "epoch": 0, + "version": "2.0.12", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/numactl-libs-2.0.12-11.el8.x86_64.rpm", + "checksum": "sha256:d94a39545f8570ba2d199e4892cfe05ebd5ea6e4e8322790b4f960bf92da5f09" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openldap-2.4.46-15.el8.x86_64.rpm", + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-8.0p1-5.el8.x86_64.rpm", + "checksum": "sha256:b5fc6f35798edccd0390e54fce40290936c3699227e79cc6d1a42d803358fd03" + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-clients-8.0p1-5.el8.x86_64.rpm", + "checksum": "sha256:3730f3f8d3332836f278250408891cb097379a5d7745fe698b1d418e9e13d335" + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-server-8.0p1-5.el8.x86_64.rpm", + "checksum": "sha256:fd7bc748b59a48a1ba803dc893be729c8624a4141e23fcef126a401857bbb455" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-libs-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-pkcs11-0.4.10-2.el8.x86_64.rpm", + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/os-prober-1.74-6.el8.x86_64.rpm", + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pam-1.3.1-11.el8.x86_64.rpm", + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "name": "parted", + "epoch": 0, + "version": "3.2", + "release": "38.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/parted-3.2-38.el8.x86_64.rpm", + "checksum": "sha256:22585bd5d69c5e0a06fe00a6844da2e5d311512374c1d176f17f41caab7e121f" + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/passwd-0.80-3.el8.x86_64.rpm", + "checksum": "sha256:7c0b2b064dad700cba2754b46f483e3e59aaf798740470df1daad3d5239fb893" + }, + { + "name": "pciutils", + "epoch": 0, + "version": "3.6.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pciutils-3.6.4-2.el8.x86_64.rpm", + "checksum": "sha256:22942af5dab657f662538619ab84a260d3c92e3498694fca2a126100ff9ab316" + }, + { + "name": "pciutils-libs", + "epoch": 0, + "version": "3.6.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pciutils-libs-3.6.4-2.el8.x86_64.rpm", + "checksum": "sha256:da5606af487682acce52799418a97614d0f6e6b72d15c88c4f6f2a076f384dac" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre-8.42-4.el8.x86_64.rpm", + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre2-10.32-2.el8.x86_64.rpm", + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pigz-2.4-4.el8.x86_64.rpm", + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-2.9-9.el8.x86_64.rpm", + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "name": "polkit", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-0.115-11.el8.x86_64.rpm", + "checksum": "sha256:8af00d4b0857240310156e05123e07795e6573da7c1fe9e7fd83b51f13971725" + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-libs-0.115-11.el8.x86_64.rpm", + "checksum": "sha256:441efa6f0b9a9905ef11ec987d6db89e7dba2857060020c4554e32db3e59fce5" + }, + { + "name": "polkit-pkla-compat", + "epoch": 0, + "version": "0.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-pkla-compat-0.1-12.el8.x86_64.rpm", + "checksum": "sha256:9a9ca6857f517f1249d2eb496fe904590d6203e4a9547a28e0b23f21c4cae24a" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/popt-1.16-14.el8.x86_64.rpm", + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "name": "prefixdevname", + "epoch": 0, + "version": "0.1.0", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/prefixdevname-0.1.0-6.el8.x86_64.rpm", + "checksum": "sha256:8d371e753071edc796d2eadb8278980290511be6279fdf46649c81b859497d6a" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/procps-ng-3.3.15-2.el8.x86_64.rpm", + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-asn1crypto", + "epoch": 0, + "version": "0.24.0", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-asn1crypto-0.24.0-3.el8.noarch.rpm", + "checksum": "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34" + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:8f00781eb679c6baf359099fa2a672ffccfc8e43b7c03c1dc635619cb25ff01d" + }, + { + "name": "python3-cffi", + "epoch": 0, + "version": "1.11.5", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-cffi-1.11.5-5.el8.x86_64.rpm", + "checksum": "sha256:13ffce0597b689dd53f55ea0d03dd6d013246634f5c6cbcef51fa549d9734b29" + }, + { + "name": "python3-chardet", + "epoch": 0, + "version": "3.0.4", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-chardet-3.0.4-7.el8.noarch.rpm", + "checksum": "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786" + }, + { + "name": "python3-configobj", + "epoch": 0, + "version": "5.0.6", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-configobj-5.0.6-11.el8.noarch.rpm", + "checksum": "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367" + }, + { + "name": "python3-cryptography", + "epoch": 0, + "version": "2.3", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-cryptography-2.3-3.el8.x86_64.rpm", + "checksum": "sha256:7a7a238ea529165348acef1d1a20c1d47c1ef5838d8501f3879bb130c1b73e06" + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.6.1", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm", + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.4", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dbus-1.2.4-15.el8.x86_64.rpm", + "checksum": "sha256:5a85222c8e9997a8b609b915a8fbae756de9b9bff732db852fb15fe0524f2d86" + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.2.1", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm", + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "name": "python3-dmidecode", + "epoch": 0, + "version": "3.12.2", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dmidecode-3.12.2-15.el8.x86_64.rpm", + "checksum": "sha256:d2b777ea98ee644997029994136723cf4fa78e97afeaceab39f76b545b51792b" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-plugins-core-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87" + }, + { + "name": "python3-ethtool", + "epoch": 0, + "version": "0.14", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ethtool-0.14-3.el8.x86_64.rpm", + "checksum": "sha256:20dec130e4fd0a2146443791ca7ade6e079cea691d93711813d5f483b691c55a" + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.28.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gobject-base-3.28.3-2.el8.x86_64.rpm", + "checksum": "sha256:86d305a1466a596f8b436561d674f2510f268bed9e73f56c87da1dd120f99c18" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gpg-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-hawkey-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "name": "python3-idna", + "epoch": 0, + "version": "2.5", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-idna-2.5-5.el8.noarch.rpm", + "checksum": "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20" + }, + { + "name": "python3-iniparse", + "epoch": 0, + "version": "0.4", + "release": "31.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm", + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "name": "python3-inotify", + "epoch": 0, + "version": "0.9.6", + "release": "13.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm", + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "name": "python3-jwt", + "epoch": 0, + "version": "1.6.1", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-jwt-1.6.1-2.el8.noarch.rpm", + "checksum": "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "name": "python3-librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-librepo-1.12.0-1.el8.x86_64.rpm", + "checksum": "sha256:4ca553b0c0f6dc130e05e2011cdf1f52132e8f70bd93be8eee4e415b2cac0c56" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libs-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libselinux-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:9487bff6bb16e7326c8b805751580b4593220ba19b06515c69de83fee8e3bb1f" + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libsemanage-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:09fc3154e76c8ee25b3982c15f3bc455017262c3df5af84075859dcbf79e4f82" + }, + { + "name": "python3-libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libxml2-2.9.7-8.el8.x86_64.rpm", + "checksum": "sha256:4ccbefcbe75decfef38ccae5d8ff92ba6b00e8232b64ec46ae0c0be8ae20ec50" + }, + { + "name": "python3-linux-procfs", + "epoch": 0, + "version": "0.6.2", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-linux-procfs-0.6.2-2.el8.noarch.rpm", + "checksum": "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f" + }, + { + "name": "python3-magic", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-magic-5.33-16.el8.noarch.rpm", + "checksum": "sha256:8e2c0324789f42ebb6324847249699eb499544a3e6ad67ccd74713b3c1d6ce78" + }, + { + "name": "python3-oauthlib", + "epoch": 0, + "version": "2.1.0", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-oauthlib-2.1.0-1.el8.noarch.rpm", + "checksum": "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6" + }, + { + "name": "python3-perf", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-perf-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:18d419718a99851370262584bec1b27d60cbd08845b50fbe97e1a56b71cd5ea2" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-ply", + "epoch": 0, + "version": "3.9", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ply-3.9-8.el8.noarch.rpm", + "checksum": "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9" + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-policycoreutils-2.9-9.el8.noarch.rpm", + "checksum": "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42" + }, + { + "name": "python3-pycparser", + "epoch": 0, + "version": "2.14", + "release": "14.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pycparser-2.14-14.el8.noarch.rpm", + "checksum": "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf" + }, + { + "name": "python3-pysocks", + "epoch": 0, + "version": "1.6.8", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pysocks-1.6.8-3.el8.noarch.rpm", + "checksum": "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280" + }, + { + "name": "python3-pyudev", + "epoch": 0, + "version": "0.21.0", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pyudev-0.21.0-7.el8.noarch.rpm", + "checksum": "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde" + }, + { + "name": "python3-pyyaml", + "epoch": 0, + "version": "3.12", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pyyaml-3.12-12.el8.x86_64.rpm", + "checksum": "sha256:de870435340bf30620406df41b79e43adaf7d0a277db1635a0fae710df993fc0" + }, + { + "name": "python3-requests", + "epoch": 0, + "version": "2.20.0", + "release": "2.1.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-requests-2.20.0-2.1.el8_1.noarch.rpm", + "checksum": "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "name": "python3-schedutils", + "epoch": 0, + "version": "0.6", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-schedutils-0.6-6.el8.x86_64.rpm", + "checksum": "sha256:09ca7b05e26f93d35ac299dbcd865b65ec3a3d2654e1da87d2c3c0462dbe6e4a" + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.3.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setools-4.3.0-1.el8.x86_64.rpm", + "checksum": "sha256:cb8e7909d58206223ad7108a850218360a6b1e2147d97bc94097962dc820d0de" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.11.0", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm", + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "name": "python3-subscription-manager-rhsm", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-subscription-manager-rhsm-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:0f3b084d947bc246fe68822129b8ae1294c4187270a19f0966282baf75b34dc6" + }, + { + "name": "python3-syspurpose", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-syspurpose-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:206cba480b58c70348584010d547d21bcd84c6094fd3980e22c6b640da12704c" + }, + { + "name": "python3-urllib3", + "epoch": 0, + "version": "1.24.2", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-urllib3-1.24.2-4.el8.noarch.rpm", + "checksum": "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/readline-7.0-10.el8.x86_64.rpm", + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-eula-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "name": "rng-tools", + "epoch": 0, + "version": "6.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rng-tools-6.8-3.el8.x86_64.rpm", + "checksum": "sha256:9d9d1bdfba4cd852f90232ebe2c4247e7b3a88c4476578c820788a91d6838e55" + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "22.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rootfiles-8.1-22.el8.noarch.rpm", + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-build-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "name": "rsync", + "epoch": 0, + "version": "3.1.3", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rsync-3.1.3-8.el8.x86_64.rpm", + "checksum": "sha256:3e180253732f00c919aaebc9aaa0562eefac466ce145ce5ad5e1092453aeebaa" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sed-4.5-2.el8.x86_64.rpm", + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "sg3_utils", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sg3_utils-1.44-5.el8.x86_64.rpm", + "checksum": "sha256:398c1abc82097370f46e6fdf4dae63870e1f767b24d0130c79ed67ea3a67233a" + }, + { + "name": "sg3_utils-libs", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sg3_utils-libs-1.44-5.el8.x86_64.rpm", + "checksum": "sha256:671852e4f32de6278dd384d35d1dc799ab5d3e8ef718e89e516452cbcba068f0" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shadow-utils-4.6-10.el8.x86_64.rpm", + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shared-mime-info-1.9-3.el8.x86_64.rpm", + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "name": "slang", + "epoch": 0, + "version": "2.3.2", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/slang-2.3.2-3.el8.x86_64.rpm", + "checksum": "sha256:efa20ae5eca5860656d0131086470cb8d5c3a1ae2819301e7d015f06bbb68a26" + }, + { + "name": "snappy", + "epoch": 0, + "version": "1.1.7", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/snappy-1.1.7-5.el8.x86_64.rpm", + "checksum": "sha256:4403330cdf4f15d75d727e2ac8c3358ff6a13209b3395dfac2131984e443eb23" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-libs-3.26.0-10.el8.x86_64.rpm", + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "name": "squashfs-tools", + "epoch": 0, + "version": "4.3", + "release": "19.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/squashfs-tools-4.3-19.el8.x86_64.rpm", + "checksum": "sha256:72ff3a3f6c52849a40cb24f9694115a68cc939970a00c374b4c73b1e4c5dc20c" + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-client-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:2e90748420a7d28b3063df04de129e79ea85310a8d9cf2faf0a2e7b8430307c8" + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-common-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:14098d36fe4be983fac73d04aeacf0ed7977d962e760907b89e3f80b4ca46f3f" + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-kcm-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:1b1fe43a375a21f4c3ccf04861c122fd519d4865b9c1abc7f1973b86a0252a06" + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-nfs-idmap-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:c0025c0b08ed82c640fa470e62743aed17a33f7948ed0cc969892d7c149206b3" + }, + { + "name": "subscription-manager", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:65dc391ab1c96d1009ef2e7706eabacd5cf84f2a47ea1cc87f6f5e2c1324b178" + }, + { + "name": "subscription-manager-rhsm-certificates", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-rhsm-certificates-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:99fa92b5d1e0d335fb2bb961ef39988b50968350b899e8790cead73c9a0bec65" + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.8.29", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sudo-1.8.29-6.el8.x86_64.rpm", + "checksum": "sha256:ec9adedf0d5d2d096acf4739e2eefab8095498037e13dac9b283e17a9c54259a" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-239-36.el8.x86_64.rpm", + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-libs-239-36.el8.x86_64.rpm", + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-pam-239-36.el8.x86_64.rpm", + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-udev-239-36.el8.x86_64.rpm", + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tar-1.30-5.el8.x86_64.rpm", + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "name": "teamd", + "epoch": 0, + "version": "1.29", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/teamd-1.29-5.el8.x86_64.rpm", + "checksum": "sha256:b156691caa225f0025533a68eeb9a2cf3883062dd209ede9ec07727b358171cc" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-lib-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "name": "tuned", + "epoch": 0, + "version": "2.14.0", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tuned-2.14.0-2.el8.noarch.rpm", + "checksum": "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "usermode", + "epoch": 0, + "version": "1.113", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/usermode-1.113-1.el8.x86_64.rpm", + "checksum": "sha256:98a589d7e1cdea9d974aa43f688e55333eed11ce7cb2037d45cc2e69bce579b3" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/util-linux-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.0.1763", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/vim-minimal-8.0.1763-15.el8.x86_64.rpm", + "checksum": "sha256:947b4e4eebec21501ca62e2a7ff9baae0e4e7c59584fbba4b6276a402cfbb45b" + }, + { + "name": "virt-what", + "epoch": 0, + "version": "1.18", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/virt-what-1.18-6.el8.x86_64.rpm", + "checksum": "sha256:2cfcc3d6163dfaf7ce76998be992bd0b70dd7cbb838430cecf2aff04cd435d24" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/which-2.21-12.el8.x86_64.rpm", + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xfsprogs-5.0.0-4.el8.x86_64.rpm", + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-libs-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/yum-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4" + }, + { + "name": "yum-utils", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/yum-utils-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:bdb8cc675da18f659ba06252f1f2604d171373239804c3cbc6004dadded54cd3" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/zlib-1.2.11-15.el8.x86_64.rpm", + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "name": "cloud-init", + "epoch": 0, + "version": "19.4", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cloud-init-19.4-7.el8.noarch.rpm", + "checksum": "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2" + }, + { + "name": "cloud-utils-growpart", + "epoch": 0, + "version": "0.31", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cloud-utils-growpart-0.31-1.el8.noarch.rpm", + "checksum": "sha256:664a883f3c7042eb91e0b66fc99c309a729011b4912e4af9397f4e25e1adae90" + }, + { + "name": "dnf-plugin-spacewalk", + "epoch": 0, + "version": "2.8.5", + "release": "11.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b" + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm", + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm", + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "name": "insights-client", + "epoch": 0, + "version": "3.0.14", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/insights-client-3.0.14-2.el8.noarch.rpm", + "checksum": "sha256:abeb97ed3fdd82145fd51f8eeaecfca272e4d1418b17a68241e054425a327aa3" + }, + { + "name": "langpacks-en", + "epoch": 0, + "version": "1.0", + "release": "12.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/langpacks-en-1.0-12.el8.noarch.rpm", + "checksum": "sha256:38affe91361bf56b84490d97c7e3f815965cf8d2bbb222c6c045af4bf2dff736" + }, + { + "name": "libestr", + "epoch": 0, + "version": "0.1.10", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libestr-0.1.10-1.el8.x86_64.rpm", + "checksum": "sha256:bfe5c8ea12012936cc59981a10728e95d5fdadd3e893457af7a27c464d8cb6ba" + }, + { + "name": "libfastjson", + "epoch": 0, + "version": "0.99.8", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libfastjson-0.99.8-2.el8.x86_64.rpm", + "checksum": "sha256:474a66a4cf3d5a00286be40c15bad69ea1ac63a9424a1ff44f20a548a7686f7a" + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.2.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libmaxminddb-1.2.0-10.el8.x86_64.rpm", + "checksum": "sha256:995a5401cd86404d14d08c0aeafeaa8da3f540b1806f9d0e233d75dec9e45c74" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxkbcommon-0.9.1-1.el8.x86_64.rpm", + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/memstrack-0.1.8-1.el8.x86_64.rpm", + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pinentry-1.1.0-2.el8.x86_64.rpm", + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "name": "python3-babel", + "epoch": 0, + "version": "2.5.1", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-babel-2.5.1-5.el8.noarch.rpm", + "checksum": "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28" + }, + { + "name": "python3-dnf-plugin-spacewalk", + "epoch": 0, + "version": "2.8.5", + "release": "11.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43" + }, + { + "name": "python3-hwdata", + "epoch": 0, + "version": "2.3.6", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-hwdata-2.3.6-3.el8.noarch.rpm", + "checksum": "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362" + }, + { + "name": "python3-jinja2", + "epoch": 0, + "version": "2.10.1", + "release": "2.el8_0", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jinja2-2.10.1-2.el8_0.noarch.rpm", + "checksum": "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64" + }, + { + "name": "python3-jsonpatch", + "epoch": 0, + "version": "1.21", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonpatch-1.21-2.el8.noarch.rpm", + "checksum": "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835" + }, + { + "name": "python3-jsonpointer", + "epoch": 0, + "version": "1.10", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonpointer-1.10-11.el8.noarch.rpm", + "checksum": "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf" + }, + { + "name": "python3-jsonschema", + "epoch": 0, + "version": "2.6.0", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonschema-2.6.0-4.el8.noarch.rpm", + "checksum": "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b" + }, + { + "name": "python3-markupsafe", + "epoch": 0, + "version": "0.23", + "release": "19.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-markupsafe-0.23-19.el8.x86_64.rpm", + "checksum": "sha256:e868499743c399baa6463fa64a2534a7d32f8e1cca7b1b47ec00c60b34250bfe" + }, + { + "name": "python3-netifaces", + "epoch": 0, + "version": "0.10.6", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-netifaces-0.10.6-4.el8.x86_64.rpm", + "checksum": "sha256:3edf7d29e530e6568416d4455e9fbaa511aba236c603da9928e689fae77b9874" + }, + { + "name": "python3-newt", + "epoch": 0, + "version": "0.52.20", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-newt-0.52.20-11.el8.x86_64.rpm", + "checksum": "sha256:b4e89276818abec218c909ca961db9bb2e09b1fc609ff280e6c05227143fa24d" + }, + { + "name": "python3-prettytable", + "epoch": 0, + "version": "0.7.2", + "release": "14.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-prettytable-0.7.2-14.el8.noarch.rpm", + "checksum": "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55" + }, + { + "name": "python3-pyOpenSSL", + "epoch": 0, + "version": "18.0.0", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pyOpenSSL-18.0.0-1.el8.noarch.rpm", + "checksum": "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21" + }, + { + "name": "python3-pyserial", + "epoch": 0, + "version": "3.1.1", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pyserial-3.1.1-8.el8.noarch.rpm", + "checksum": "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414" + }, + { + "name": "python3-pytz", + "epoch": 0, + "version": "2017.2", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pytz-2017.2-9.el8.noarch.rpm", + "checksum": "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca" + }, + { + "name": "python3-rhn-check", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:15462b748aef3c565bcf4f849c1a21c1389a8ef5e7dae94e64718865a67d46a9" + }, + { + "name": "python3-rhn-client-tools", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:bed436b103161f7d8f61b617c84f3a7b5509f1d00c8425900a88c222b1331b31" + }, + { + "name": "python3-rhn-setup", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:ec26615d079ce89316352f813279f74a44871fa8c26fed8f369b9fe847aa5121" + }, + { + "name": "python3-rhnlib", + "epoch": 0, + "version": "2.8.6", + "release": "8.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-unbound-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "name": "rhn-check", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:d81c180c682e6014a0da09aaa144492e8cb03c1d61022513ba6db5bd3740f921" + }, + { + "name": "rhn-client-tools", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:d80219a299035688091aa230b1c9169143c00c141c4f1ad8e75d176d22cc1cd0" + }, + { + "name": "rhn-setup", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:4931d78c496eaaa8e6b6bbec2b4750da52b9fc7e989ae89b7c1fa2a6f40ff7fa" + }, + { + "name": "rhnlib", + "epoch": 0, + "version": "2.8.6", + "release": "8.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42" + }, + { + "name": "rhnsd", + "epoch": 0, + "version": "5.0.35", + "release": "3.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:00cc9cd4517cbb4ad99dbce63b40b700699523550cd7f8202948af28dbe2cd9e" + }, + { + "name": "rsyslog", + "epoch": 0, + "version": "8.1911.0", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rsyslog-8.1911.0-6.el8.x86_64.rpm", + "checksum": "sha256:5ef47eb6a042a13c902764907692c1068eb0f69153b47bc85792bef74bfa852b" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/unbound-libs-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "checksums": { + "0": "sha256:cc014fee6e92f8a81f152d72a43137a3270189ef229c738381b98bc0c88443f8", + "1": "sha256:2b881b017a4c721893038307bf4f0269afe55c35114a477be226f53a2f585545" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=0bd700f8-090f-4556-b797-b340297ea1bd ro console=ttyS0,115200n8 console=tty0 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295 crashkernel=auto" + }, + "bootloader": "grub", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "id": "rhel-20200625210904-4.18.0-221.el8.x86_64", + "initrd": "/boot/initramfs-4.18.0-221.el8.x86_64.img $tuned_initrd", + "linux": "/boot/vmlinuz-4.18.0-221.el8.x86_64", + "options": "$kernelopts $tuned_params", + "title": "Red Hat Enterprise Linux (4.18.0-221.el8.x86_64) 8.3 (Ootpa)", + "version": "4.18.0-221.el8.x86_64" + } + ], + "fstab": [ + [ + "UUID=0bd700f8-090f-4556-b797-b340297ea1bd", + "/", + "xfs", + "defaults", + "0", + "0" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:992:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:999:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "polkitd:x:996:", + "render:x:998:", + "rngd:x:991:", + "root:x:0:", + "ssh_keys:x:995:", + "sshd:x:74:", + "sssd:x:993:", + "sys:x:3:", + "systemd-coredump:x:997:", + "systemd-journal:x:190:", + "systemd-resolve:x:193:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:994:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "raw", + "os-release": { + "ANSI_COLOR": "0;31", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:redhat:enterprise_linux:8.3:beta", + "HOME_URL": "https://www.redhat.com/", + "ID": "rhel", + "ID_LIKE": "fedora", + "NAME": "Red Hat Enterprise Linux", + "PLATFORM_ID": "platform:el8", + "PRETTY_NAME": "Red Hat Enterprise Linux 8.3 Beta (Ootpa)", + "REDHAT_BUGZILLA_PRODUCT": "Red Hat Enterprise Linux 8", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "8.3", + "REDHAT_SUPPORT_PRODUCT": "Red Hat Enterprise Linux", + "REDHAT_SUPPORT_PRODUCT_VERSION": "8.3 Beta", + "VERSION": "8.3 (Ootpa)", + "VERSION_ID": "8.3" + }, + "packages": [ + "NetworkManager-1.26.0-0.2.el8.x86_64", + "NetworkManager-libnm-1.26.0-0.2.el8.x86_64", + "NetworkManager-team-1.26.0-0.2.el8.x86_64", + "NetworkManager-tui-1.26.0-0.2.el8.x86_64", + "acl-2.2.53-1.el8.x86_64", + "audit-3.0-0.17.20191104git1c2f876.el8.x86_64", + "audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64", + "authselect-1.2.1-2.el8.x86_64", + "authselect-libs-1.2.1-2.el8.x86_64", + "basesystem-11-5.el8.noarch", + "bash-4.4.19-12.el8.x86_64", + "bind-export-libs-9.11.20-3.el8.x86_64", + "brotli-1.0.6-2.el8.x86_64", + "bzip2-libs-1.0.6-26.el8.x86_64", + "c-ares-1.13.0-5.el8.x86_64", + "ca-certificates-2019.2.32-80.0.el8_1.noarch", + "checkpolicy-2.9-1.el8.x86_64", + "chkconfig-1.13-2.el8.x86_64", + "chrony-3.5-1.el8.x86_64", + "cloud-init-19.4-7.el8.noarch", + "cloud-utils-growpart-0.31-1.el8.noarch", + "coreutils-8.30-8.el8.x86_64", + "coreutils-common-8.30-8.el8.x86_64", + "cpio-2.12-8.el8.x86_64", + "cracklib-2.9.6-15.el8.x86_64", + "cracklib-dicts-2.9.6-15.el8.x86_64", + "cronie-1.5.2-4.el8.x86_64", + "cronie-anacron-1.5.2-4.el8.x86_64", + "crontabs-1.11-16.20150630git.el8.noarch", + "crypto-policies-20200610-1.git0ac8b1f.el8.noarch", + "crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch", + "cryptsetup-libs-2.3.3-1.el8.x86_64", + "curl-7.61.1-12.el8.x86_64", + "cyrus-sasl-lib-2.1.27-5.el8.x86_64", + "dbus-1.12.8-11.el8.x86_64", + "dbus-common-1.12.8-11.el8.noarch", + "dbus-daemon-1.12.8-11.el8.x86_64", + "dbus-glib-0.110-2.el8.x86_64", + "dbus-libs-1.12.8-11.el8.x86_64", + "dbus-tools-1.12.8-11.el8.x86_64", + "device-mapper-1.02.171-3.el8.x86_64", + "device-mapper-libs-1.02.171-3.el8.x86_64", + "dhcp-client-4.3.6-41.el8.x86_64", + "dhcp-common-4.3.6-41.el8.noarch", + "dhcp-libs-4.3.6-41.el8.x86_64", + "diffutils-3.6-6.el8.x86_64", + "dmidecode-3.2-6.el8.x86_64", + "dnf-4.2.23-2.el8.noarch", + "dnf-data-4.2.23-2.el8.noarch", + "dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch", + "dnf-plugin-subscription-manager-1.27.9-1.el8.x86_64", + "dnf-plugins-core-4.0.17-2.el8.noarch", + "dracut-049-89.git20200625.el8.x86_64", + "dracut-config-generic-049-89.git20200625.el8.x86_64", + "dracut-network-049-89.git20200625.el8.x86_64", + "dracut-squash-049-89.git20200625.el8.x86_64", + "e2fsprogs-1.45.6-1.el8.x86_64", + "e2fsprogs-libs-1.45.6-1.el8.x86_64", + "elfutils-debuginfod-client-0.180-1.el8.x86_64", + "elfutils-default-yama-scope-0.180-1.el8.noarch", + "elfutils-libelf-0.180-1.el8.x86_64", + "elfutils-libs-0.180-1.el8.x86_64", + "ethtool-5.0-2.el8.x86_64", + "expat-2.2.5-4.el8.x86_64", + "file-5.33-16.el8.x86_64", + "file-libs-5.33-16.el8.x86_64", + "filesystem-3.8-3.el8.x86_64", + "findutils-4.6.0-20.el8.x86_64", + "freetype-2.9.1-4.el8.x86_64", + "fuse-libs-2.9.7-12.el8.x86_64", + "gawk-4.2.1-1.el8.x86_64", + "gdbm-1.18-1.el8.x86_64", + "gdbm-libs-1.18-1.el8.x86_64", + "gdisk-1.0.3-6.el8.x86_64", + "geolite2-city-20180605-1.el8.noarch", + "geolite2-country-20180605-1.el8.noarch", + "gettext-0.19.8.1-17.el8.x86_64", + "gettext-libs-0.19.8.1-17.el8.x86_64", + "glib2-2.56.4-8.el8.x86_64", + "glibc-2.28-127.el8.x86_64", + "glibc-common-2.28-127.el8.x86_64", + "glibc-langpack-en-2.28-127.el8.x86_64", + "gmp-6.1.2-10.el8.x86_64", + "gnupg2-2.2.20-2.el8.x86_64", + "gnupg2-smime-2.2.20-2.el8.x86_64", + "gnutls-3.6.14-3.el8.x86_64", + "gobject-introspection-1.56.1-1.el8.x86_64", + "gpg-pubkey-d4082792-5b32db75", + "gpg-pubkey-fd431d51-4ae0493b", + "gpgme-1.13.1-3.el8.x86_64", + "grep-3.1-6.el8.x86_64", + "groff-base-1.22.3-18.el8.x86_64", + "grub2-common-2.02-84.el8.noarch", + "grub2-pc-2.02-84.el8.x86_64", + "grub2-pc-modules-2.02-84.el8.noarch", + "grub2-tools-2.02-84.el8.x86_64", + "grub2-tools-extra-2.02-84.el8.x86_64", + "grub2-tools-minimal-2.02-84.el8.x86_64", + "grubby-8.40-41.el8.x86_64", + "gzip-1.9-9.el8.x86_64", + "hardlink-1.3-6.el8.x86_64", + "hdparm-9.54-2.el8.x86_64", + "hostname-3.20-6.el8.x86_64", + "hwdata-0.314-8.5.el8.noarch", + "ima-evm-utils-1.1-5.el8.x86_64", + "info-6.5-6.el8.x86_64", + "initscripts-10.00.8-1.el8.x86_64", + "insights-client-3.0.14-2.el8.noarch", + "ipcalc-0.2.4-4.el8.x86_64", + "iproute-5.3.0-5.el8.x86_64", + "iptables-libs-1.8.4-14.el8.x86_64", + "iputils-20180629-2.el8.x86_64", + "irqbalance-1.4.0-4.el8.x86_64", + "jansson-2.11-3.el8.x86_64", + "json-c-0.13.1-0.2.el8.x86_64", + "json-glib-1.4.4-1.el8.x86_64", + "kbd-2.0.4-10.el8.x86_64", + "kbd-legacy-2.0.4-10.el8.noarch", + "kbd-misc-2.0.4-10.el8.noarch", + "kernel-4.18.0-221.el8.x86_64", + "kernel-core-4.18.0-221.el8.x86_64", + "kernel-modules-4.18.0-221.el8.x86_64", + "kernel-tools-4.18.0-221.el8.x86_64", + "kernel-tools-libs-4.18.0-221.el8.x86_64", + "kexec-tools-2.0.20-29.el8.x86_64", + "keyutils-libs-1.5.10-6.el8.x86_64", + "kmod-25-16.el8.x86_64", + "kmod-libs-25-16.el8.x86_64", + "kpartx-0.8.4-2.el8.x86_64", + "krb5-libs-1.18.2-3.el8.x86_64", + "langpacks-en-1.0-12.el8.noarch", + "less-530-1.el8.x86_64", + "libacl-2.2.53-1.el8.x86_64", + "libarchive-3.3.2-9.el8.x86_64", + "libassuan-2.5.1-3.el8.x86_64", + "libattr-2.4.48-3.el8.x86_64", + "libbasicobjects-0.1.1-39.el8.x86_64", + "libblkid-2.32.1-24.el8.x86_64", + "libcap-2.26-4.el8.x86_64", + "libcap-ng-0.7.9-5.el8.x86_64", + "libcollection-0.7.0-39.el8.x86_64", + "libcom_err-1.45.6-1.el8.x86_64", + "libcomps-0.1.11-4.el8.x86_64", + "libcroco-0.6.12-4.el8.x86_64", + "libcurl-7.61.1-12.el8.x86_64", + "libdaemon-0.14-15.el8.x86_64", + "libdb-5.3.28-39.el8.x86_64", + "libdb-utils-5.3.28-39.el8.x86_64", + "libdhash-0.5.0-39.el8.x86_64", + "libdnf-0.48.0-2.el8.x86_64", + "libedit-3.1-23.20170329cvs.el8.x86_64", + "libestr-0.1.10-1.el8.x86_64", + "libevent-2.1.8-5.el8.x86_64", + "libfastjson-0.99.8-2.el8.x86_64", + "libfdisk-2.32.1-24.el8.x86_64", + "libffi-3.1-22.el8.x86_64", + "libgcc-8.3.1-5.1.el8.x86_64", + "libgcrypt-1.8.5-4.el8.x86_64", + "libgomp-8.3.1-5.1.el8.x86_64", + "libgpg-error-1.31-1.el8.x86_64", + "libgudev-232-4.el8.x86_64", + "libidn2-2.2.0-1.el8.x86_64", + "libini_config-1.3.1-39.el8.x86_64", + "libkcapi-1.2.0-2.el8.x86_64", + "libkcapi-hmaccalc-1.2.0-2.el8.x86_64", + "libksba-1.3.5-7.el8.x86_64", + "libldb-2.1.3-2.el8.x86_64", + "libmaxminddb-1.2.0-10.el8.x86_64", + "libmetalink-0.1.3-7.el8.x86_64", + "libmnl-1.0.4-6.el8.x86_64", + "libmodulemd-2.9.4-2.el8.x86_64", + "libmount-2.32.1-24.el8.x86_64", + "libndp-1.7-3.el8.x86_64", + "libnfsidmap-2.3.3-35.el8.x86_64", + "libnghttp2-1.33.0-3.el8_2.1.x86_64", + "libnl3-3.5.0-1.el8.x86_64", + "libnl3-cli-3.5.0-1.el8.x86_64", + "libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64", + "libpath_utils-0.2.1-39.el8.x86_64", + "libpcap-1.9.1-4.el8.x86_64", + "libpipeline-1.5.0-2.el8.x86_64", + "libpng-1.6.34-5.el8.x86_64", + "libpsl-0.20.2-6.el8.x86_64", + "libpwquality-1.4.0-9.el8.x86_64", + "libref_array-0.1.5-39.el8.x86_64", + "librepo-1.12.0-1.el8.x86_64", + "libreport-filesystem-2.9.5-11.el8.x86_64", + "librhsm-0.0.3-3.el8.x86_64", + "libseccomp-2.4.3-1.el8.x86_64", + "libsecret-0.18.6-1.el8.x86_64", + "libselinux-2.9-3.el8.x86_64", + "libselinux-utils-2.9-3.el8.x86_64", + "libsemanage-2.9-3.el8.x86_64", + "libsepol-2.9-1.el8.x86_64", + "libsigsegv-2.11-5.el8.x86_64", + "libsmartcols-2.32.1-24.el8.x86_64", + "libsolv-0.7.11-1.el8.x86_64", + "libss-1.45.6-1.el8.x86_64", + "libssh-0.9.4-2.el8.x86_64", + "libssh-config-0.9.4-2.el8.noarch", + "libsss_autofs-2.3.0-2.el8.x86_64", + "libsss_certmap-2.3.0-2.el8.x86_64", + "libsss_idmap-2.3.0-2.el8.x86_64", + "libsss_nss_idmap-2.3.0-2.el8.x86_64", + "libsss_sudo-2.3.0-2.el8.x86_64", + "libstdc++-8.3.1-5.1.el8.x86_64", + "libsysfs-2.1.0-24.el8.x86_64", + "libtalloc-2.3.1-2.el8.x86_64", + "libtasn1-4.13-3.el8.x86_64", + "libtdb-1.4.3-1.el8.x86_64", + "libteam-1.29-5.el8.x86_64", + "libtevent-0.10.2-2.el8.x86_64", + "libtirpc-1.1.4-4.el8.x86_64", + "libunistring-0.9.9-3.el8.x86_64", + "libusbx-1.0.23-3.el8.x86_64", + "libuser-0.62-23.el8.x86_64", + "libutempter-1.1.6-14.el8.x86_64", + "libuuid-2.32.1-24.el8.x86_64", + "libverto-0.3.0-5.el8.x86_64", + "libxcrypt-4.1.1-4.el8.x86_64", + "libxkbcommon-0.9.1-1.el8.x86_64", + "libxml2-2.9.7-8.el8.x86_64", + "libyaml-0.1.7-5.el8.x86_64", + "libzstd-1.4.4-1.el8.x86_64", + "linux-firmware-20200619-99.git3890db36.el8.noarch", + "logrotate-3.14.0-4.el8.x86_64", + "lshw-B.02.19.2-2.el8.x86_64", + "lsscsi-0.30-1.el8.x86_64", + "lua-libs-5.3.4-11.el8.x86_64", + "lz4-libs-1.8.3-2.el8.x86_64", + "lzo-2.08-14.el8.x86_64", + "man-db-2.7.6.1-17.el8.x86_64", + "memstrack-0.1.8-1.el8.x86_64", + "microcode_ctl-20200609-2.el8.x86_64", + "mozjs60-60.9.0-4.el8.x86_64", + "mpfr-3.1.6-1.el8.x86_64", + "ncurses-6.1-7.20180224.el8.x86_64", + "ncurses-base-6.1-7.20180224.el8.noarch", + "ncurses-libs-6.1-7.20180224.el8.x86_64", + "net-tools-2.0-0.52.20160912git.el8.x86_64", + "nettle-3.4.1-2.el8.x86_64", + "newt-0.52.20-11.el8.x86_64", + "npth-1.5-4.el8.x86_64", + "numactl-libs-2.0.12-11.el8.x86_64", + "openldap-2.4.46-15.el8.x86_64", + "openssh-8.0p1-5.el8.x86_64", + "openssh-clients-8.0p1-5.el8.x86_64", + "openssh-server-8.0p1-5.el8.x86_64", + "openssl-1.1.1g-9.el8.x86_64", + "openssl-libs-1.1.1g-9.el8.x86_64", + "openssl-pkcs11-0.4.10-2.el8.x86_64", + "os-prober-1.74-6.el8.x86_64", + "p11-kit-0.23.14-5.el8_0.x86_64", + "p11-kit-trust-0.23.14-5.el8_0.x86_64", + "pam-1.3.1-11.el8.x86_64", + "parted-3.2-38.el8.x86_64", + "passwd-0.80-3.el8.x86_64", + "pciutils-3.6.4-2.el8.x86_64", + "pciutils-libs-3.6.4-2.el8.x86_64", + "pcre-8.42-4.el8.x86_64", + "pcre2-10.32-2.el8.x86_64", + "pigz-2.4-4.el8.x86_64", + "pinentry-1.1.0-2.el8.x86_64", + "platform-python-3.6.8-30.el8.x86_64", + "platform-python-pip-9.0.3-17.el8.noarch", + "platform-python-setuptools-39.2.0-6.el8.noarch", + "policycoreutils-2.9-9.el8.x86_64", + "polkit-0.115-11.el8.x86_64", + "polkit-libs-0.115-11.el8.x86_64", + "polkit-pkla-compat-0.1-12.el8.x86_64", + "popt-1.16-14.el8.x86_64", + "prefixdevname-0.1.0-6.el8.x86_64", + "procps-ng-3.3.15-2.el8.x86_64", + "publicsuffix-list-dafsa-20180723-1.el8.noarch", + "python3-asn1crypto-0.24.0-3.el8.noarch", + "python3-audit-3.0-0.17.20191104git1c2f876.el8.x86_64", + "python3-babel-2.5.1-5.el8.noarch", + "python3-cffi-1.11.5-5.el8.x86_64", + "python3-chardet-3.0.4-7.el8.noarch", + "python3-configobj-5.0.6-11.el8.noarch", + "python3-cryptography-2.3-3.el8.x86_64", + "python3-dateutil-2.6.1-6.el8.noarch", + "python3-dbus-1.2.4-15.el8.x86_64", + "python3-decorator-4.2.1-2.el8.noarch", + "python3-dmidecode-3.12.2-15.el8.x86_64", + "python3-dnf-4.2.23-2.el8.noarch", + "python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch", + "python3-dnf-plugins-core-4.0.17-2.el8.noarch", + "python3-ethtool-0.14-3.el8.x86_64", + "python3-gobject-base-3.28.3-2.el8.x86_64", + "python3-gpg-1.13.1-3.el8.x86_64", + "python3-hawkey-0.48.0-2.el8.x86_64", + "python3-hwdata-2.3.6-3.el8.noarch", + "python3-idna-2.5-5.el8.noarch", + "python3-iniparse-0.4-31.el8.noarch", + "python3-inotify-0.9.6-13.el8.noarch", + "python3-jinja2-2.10.1-2.el8_0.noarch", + "python3-jsonpatch-1.21-2.el8.noarch", + "python3-jsonpointer-1.10-11.el8.noarch", + "python3-jsonschema-2.6.0-4.el8.noarch", + "python3-jwt-1.6.1-2.el8.noarch", + "python3-libcomps-0.1.11-4.el8.x86_64", + "python3-libdnf-0.48.0-2.el8.x86_64", + "python3-librepo-1.12.0-1.el8.x86_64", + "python3-libs-3.6.8-30.el8.x86_64", + "python3-libselinux-2.9-3.el8.x86_64", + "python3-libsemanage-2.9-3.el8.x86_64", + "python3-libxml2-2.9.7-8.el8.x86_64", + "python3-linux-procfs-0.6.2-2.el8.noarch", + "python3-magic-5.33-16.el8.noarch", + "python3-markupsafe-0.23-19.el8.x86_64", + "python3-netifaces-0.10.6-4.el8.x86_64", + "python3-newt-0.52.20-11.el8.x86_64", + "python3-oauthlib-2.1.0-1.el8.noarch", + "python3-perf-4.18.0-221.el8.x86_64", + "python3-pip-wheel-9.0.3-17.el8.noarch", + "python3-ply-3.9-8.el8.noarch", + "python3-policycoreutils-2.9-9.el8.noarch", + "python3-prettytable-0.7.2-14.el8.noarch", + "python3-pyOpenSSL-18.0.0-1.el8.noarch", + "python3-pycparser-2.14-14.el8.noarch", + "python3-pyserial-3.1.1-8.el8.noarch", + "python3-pysocks-1.6.8-3.el8.noarch", + "python3-pytz-2017.2-9.el8.noarch", + "python3-pyudev-0.21.0-7.el8.noarch", + "python3-pyyaml-3.12-12.el8.x86_64", + "python3-requests-2.20.0-2.1.el8_1.noarch", + "python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch", + "python3-rpm-4.14.3-4.el8.x86_64", + "python3-schedutils-0.6-6.el8.x86_64", + "python3-setools-4.3.0-1.el8.x86_64", + "python3-setuptools-wheel-39.2.0-6.el8.noarch", + "python3-six-1.11.0-8.el8.noarch", + "python3-subscription-manager-rhsm-1.27.9-1.el8.x86_64", + "python3-syspurpose-1.27.9-1.el8.x86_64", + "python3-unbound-1.7.3-14.el8.x86_64", + "python3-urllib3-1.24.2-4.el8.noarch", + "readline-7.0-10.el8.x86_64", + "redhat-release-8.3-0.2.el8.x86_64", + "redhat-release-eula-8.3-0.2.el8.x86_64", + "rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch", + "rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.x86_64", + "rng-tools-6.8-3.el8.x86_64", + "rootfiles-8.1-22.el8.noarch", + "rpm-4.14.3-4.el8.x86_64", + "rpm-build-libs-4.14.3-4.el8.x86_64", + "rpm-libs-4.14.3-4.el8.x86_64", + "rpm-plugin-selinux-4.14.3-4.el8.x86_64", + "rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64", + "rsync-3.1.3-8.el8.x86_64", + "rsyslog-8.1911.0-6.el8.x86_64", + "sed-4.5-2.el8.x86_64", + "selinux-policy-3.14.3-48.el8.noarch", + "selinux-policy-targeted-3.14.3-48.el8.noarch", + "setup-2.12.2-6.el8.noarch", + "sg3_utils-1.44-5.el8.x86_64", + "sg3_utils-libs-1.44-5.el8.x86_64", + "shadow-utils-4.6-10.el8.x86_64", + "shared-mime-info-1.9-3.el8.x86_64", + "slang-2.3.2-3.el8.x86_64", + "snappy-1.1.7-5.el8.x86_64", + "sqlite-libs-3.26.0-10.el8.x86_64", + "squashfs-tools-4.3-19.el8.x86_64", + "sssd-client-2.3.0-2.el8.x86_64", + "sssd-common-2.3.0-2.el8.x86_64", + "sssd-kcm-2.3.0-2.el8.x86_64", + "sssd-nfs-idmap-2.3.0-2.el8.x86_64", + "subscription-manager-1.27.9-1.el8.x86_64", + "subscription-manager-rhsm-certificates-1.27.9-1.el8.x86_64", + "sudo-1.8.29-6.el8.x86_64", + "systemd-239-36.el8.x86_64", + "systemd-libs-239-36.el8.x86_64", + "systemd-pam-239-36.el8.x86_64", + "systemd-udev-239-36.el8.x86_64", + "tar-1.30-5.el8.x86_64", + "teamd-1.29-5.el8.x86_64", + "trousers-0.3.14-4.el8.x86_64", + "trousers-lib-0.3.14-4.el8.x86_64", + "tuned-2.14.0-2.el8.noarch", + "tzdata-2020a-1.el8.noarch", + "unbound-libs-1.7.3-14.el8.x86_64", + "usermode-1.113-1.el8.x86_64", + "util-linux-2.32.1-24.el8.x86_64", + "vim-minimal-8.0.1763-15.el8.x86_64", + "virt-what-1.18-6.el8.x86_64", + "which-2.21-12.el8.x86_64", + "xfsprogs-5.0.0-4.el8.x86_64", + "xkeyboard-config-2.28-1.el8.noarch", + "xz-5.2.4-3.el8.x86_64", + "xz-libs-5.2.4-3.el8.x86_64", + "yum-4.2.23-2.el8.noarch", + "yum-utils-4.0.17-2.el8.noarch", + "zlib-1.2.11-15.el8.x86_64" + ], + "partition-table": "dos", + "partition-table-id": "0x14fc63d2", + "partitions": [ + { + "bootable": true, + "fstype": "xfs", + "label": null, + "partuuid": "14fc63d2-01", + "size": 6441402368, + "start": 1048576, + "type": "83", + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:995:992::/var/lib/chrony:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "polkitd:x:998:996:User for polkitd:/:/sbin/nologin", + "rngd:x:994:991:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sssd:x:996:993:User for sssd:/:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/etc/machine-id": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/proc": ".M.......", + "/sys": ".M.......", + "/var/log/lastlog": ".M....G..", + "/var/spool/anacron/cron.daily": ".M.......", + "/var/spool/anacron/cron.monthly": ".M.......", + "/var/spool/anacron/cron.weekly": ".M......." + }, + "missing": [ + "/etc/systemd/system/dbus-org.freedesktop.resolve1.service" + ] + }, + "services-disabled": [ + "arp-ethers.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "console-getty.service", + "cpupower.service", + "ctrl-alt-del.target", + "debug-shell.service", + "exit.target", + "fstrim.timer", + "halt.target", + "insights-client-results.path", + "insights-client.timer", + "kexec.target", + "poweroff.target", + "rdisc.service", + "reboot.target", + "remote-cryptsetup.target", + "rhnsd.service", + "rhsm-facts.service", + "rhsm.service", + "rngd-wake-threshold.service", + "runlevel0.target", + "runlevel6.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-resolved.service", + "tcsd.service", + "tmp.mount" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "cloud-init.service", + "crond.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dnf-makecache.timer", + "getty@.service", + "import-state.service", + "irqbalance.service", + "kdump.service", + "loadmodules.service", + "microcode.service", + "nis-domainname.service", + "remote-fs.target", + "rhsmcertd.service", + "rngd.service", + "rsyslog.service", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "syslog.service", + "tuned.service", + "unbound-anchor.timer" + ], + "timezone": "UTC" + } +} \ No newline at end of file diff --git a/test/cases/rhel_8-x86_64-openstack-boot.json b/test/cases/rhel_8-x86_64-openstack-boot.json new file mode 100644 index 0000000..277315d --- /dev/null +++ b/test/cases/rhel_8-x86_64-openstack-boot.json @@ -0,0 +1,9950 @@ +{ + "boot": { + "type": "openstack" + }, + "compose-request": { + "distro": "rhel-8", + "arch": "x86_64", + "image-type": "openstack", + "repositories": [ + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + }, + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + } + ], + "filename": "disk.qcow2", + "blueprint": { + "name": "openstack-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:0027700684ce09927aded1d2c5bb84028529141a6b418897bde37d4af348f8bb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:00cc9cd4517cbb4ad99dbce63b40b700699523550cd7f8202948af28dbe2cd9e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:0129696c208f60326723c650295167b0600791ccb2e9c3d446c4caf9adecb3d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-3.5.0-1.el8.x86_64.rpm" + }, + "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libyaml-0.1.7-5.el8.x86_64.rpm" + }, + "sha256:0391105afa53c9503b59591615bd7c98e2f7a4cd94ff4fd1451c4234522f3880": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libedit-3.1-23.20170329cvs.el8.x86_64.rpm" + }, + "sha256:0493fd81825df694be5d15685bfe4dc002de314d18f5ae47ccee769f65ea5013": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ethtool-5.0-2.el8.x86_64.rpm" + }, + "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmount-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cloud-init-19.4-7.el8.noarch.rpm" + }, + "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-daemon-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-prettytable-0.7.2-14.el8.noarch.rpm" + }, + "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libunistring-0.9.9-3.el8.x86_64.rpm" + }, + "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jinja2-2.10.1-2.el8_0.noarch.rpm" + }, + "sha256:08bf2e898b5775317d04266f4598eddbe06c424a3694b1534e3ceff088e2e8ca": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-nftables-0.9.3-14.el8.x86_64.rpm" + }, + "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:09ca7b05e26f93d35ac299dbcd865b65ec3a3d2654e1da87d2c3c0462dbe6e4a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-schedutils-0.6-6.el8.x86_64.rpm" + }, + "sha256:09fc3154e76c8ee25b3982c15f3bc455017262c3df5af84075859dcbf79e4f82": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libsemanage-2.9-3.el8.x86_64.rpm" + }, + "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugins-core-4.0.17-2.el8.noarch.rpm" + }, + "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-239-36.el8.x86_64.rpm" + }, + "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/expat-2.2.5-4.el8.x86_64.rpm" + }, + "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-libs-2.3.3-1.el8.x86_64.rpm" + }, + "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm" + }, + "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxcrypt-4.1.1-4.el8.x86_64.rpm" + }, + "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/linux-firmware-20200619-99.git3890db36.el8.noarch.rpm" + }, + "sha256:0e4b7687f0c62f4e336223b939f6cb169c8dac49eee23c53fd919e58d8f989df": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/microcode_ctl-20200609-2.el8.x86_64.rpm" + }, + "sha256:0f3b084d947bc246fe68822129b8ae1294c4187270a19f0966282baf75b34dc6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-subscription-manager-rhsm-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:0f662be3013f7958961ae70400c7ed1fb4350c823881c123a16cbb2b6b8c8f6a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/plymouth-core-libs-0.9.4-1.20200615git1e36e30.el8.x86_64.rpm" + }, + "sha256:1065049dbd53849d35db269a23be54148cbe481122381ab71b72f62e83816b26": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gobject-introspection-1.56.1-1.el8.x86_64.rpm" + }, + "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-all-langpacks-2.28-127.el8.x86_64.rpm" + }, + "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm" + }, + "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gmp-6.1.2-10.el8.x86_64.rpm" + }, + "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcc-8.3.1-5.1.el8.x86_64.rpm" + }, + "sha256:13ffce0597b689dd53f55ea0d03dd6d013246634f5c6cbcef51fa549d9734b29": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-cffi-1.11.5-5.el8.x86_64.rpm" + }, + "sha256:14098d36fe4be983fac73d04aeacf0ed7977d962e760907b89e3f80b4ca46f3f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-common-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm" + }, + "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cpio-2.12-8.el8.x86_64.rpm" + }, + "sha256:15462b748aef3c565bcf4f849c1a21c1389a8ef5e7dae94e64718865a67d46a9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-libs-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crontabs-1.11-16.20150630git.el8.noarch.rpm" + }, + "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-smime-2.2.20-2.el8.x86_64.rpm" + }, + "sha256:18d419718a99851370262584bec1b27d60cbd08845b50fbe97e1a56b71cd5ea2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-perf-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm" + }, + "sha256:1b1fe43a375a21f4c3ccf04861c122fd519d4865b9c1abc7f1973b86a0252a06": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-kcm-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-5.2.4-3.el8.x86_64.rpm" + }, + "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.x86_64.rpm" + }, + "sha256:1bc038693be7ccd59674c478176c3badce4a56f785dd0690548b087bcc7adaa1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl1000-firmware-39.31.5.1-99.el8.1.noarch.rpm" + }, + "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-25-16.el8.x86_64.rpm" + }, + "sha256:1d28eaeaa59c48e4193c709dd2a6301c2f8701138164c05371a0d8f235d14c9c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl7260-firmware-25.30.13.0-99.el8.1.noarch.rpm" + }, + "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tzdata-2020a-1.el8.noarch.rpm" + }, + "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libksba-1.3.5-7.el8.x86_64.rpm" + }, + "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsecret-0.18.6-1.el8.x86_64.rpm" + }, + "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm" + }, + "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/krb5-libs-1.18.2-3.el8.x86_64.rpm" + }, + "sha256:1faa85c12115426d8afc51c8bed2e71bf1dd87063e25052bcf85c17dbc0d9ea4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-network-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-2.02-84.el8.x86_64.rpm" + }, + "sha256:204e4dbaf357e12ff041c1c203b2527f7d178905ebae53db3c12e57d28fcbf46": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl135-firmware-18.168.6.1-99.el8.1.noarch.rpm" + }, + "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-common-2.28-127.el8.x86_64.rpm" + }, + "sha256:206cba480b58c70348584010d547d21bcd84c6094fd3980e22c6b640da12704c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-syspurpose-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:206de21c82d76de550bcc1959138472640b0a950a311b753203f5dfe5b201b7b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipcalc-0.2.4-4.el8.x86_64.rpm" + }, + "sha256:20dec130e4fd0a2146443791ca7ade6e079cea691d93711813d5f483b691c55a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ethtool-0.14-3.el8.x86_64.rpm" + }, + "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-5.33-16.el8.x86_64.rpm" + }, + "sha256:22585bd5d69c5e0a06fe00a6844da2e5d311512374c1d176f17f41caab7e121f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/parted-3.2-38.el8.x86_64.rpm" + }, + "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:231bc0eeb8fb127f0a4da5a4da1edd226067d5029a0b4fd6ef72c246ccfc31c0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libldb-2.1.3-2.el8.x86_64.rpm" + }, + "sha256:2334cb78002aa30feeb11549d51e204aa868f5538a09957850082d7efb15b00f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/c-ares-1.13.0-5.el8.x86_64.rpm" + }, + "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libcomps-0.1.11-4.el8.x86_64.rpm" + }, + "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-3.6.8-30.el8.x86_64.rpm" + }, + "sha256:252d46d58e0c02cbe2d2485488bd63ea7129964643787557eae832102541f84f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl5150-firmware-8.24.2.2-99.el8.1.noarch.rpm" + }, + "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tuned-2.14.0-2.el8.noarch.rpm" + }, + "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxkbcommon-0.9.1-1.el8.x86_64.rpm" + }, + "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-2.0.4-10.el8.x86_64.rpm" + }, + "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-ng-0.7.9-5.el8.x86_64.rpm" + }, + "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libattr-2.4.48-3.el8.x86_64.rpm" + }, + "sha256:289e2a39b2a29163a29da35936d4b484fe356d0a6d519524023e79686daf501b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-client-4.3.6-41.el8.x86_64.rpm" + }, + "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mpfr-3.1.6-1.el8.x86_64.rpm" + }, + "sha256:2a65cec3eb67ba7645dd97cf3f3811cd5fb06eea2526d36a683d3fdaa0f2825e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cronie-anacron-1.5.2-4.el8.x86_64.rpm" + }, + "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre2-10.32-2.el8.x86_64.rpm" + }, + "sha256:2cfcc3d6163dfaf7ce76998be992bd0b70dd7cbb838430cecf2aff04cd435d24": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/virt-what-1.18-6.el8.x86_64.rpm" + }, + "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pyOpenSSL-18.0.0-1.el8.noarch.rpm" + }, + "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.x86_64.rpm" + }, + "sha256:2e90748420a7d28b3063df04de129e79ea85310a8d9cf2faf0a2e7b8430307c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-client-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:2eba2dc51974271244bdeaaf17c6e8fac3c35b62914b680076bdc4a32272df01": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpath_utils-0.2.1-39.el8.x86_64.rpm" + }, + "sha256:2eed977380b41885d4f7ad33e122abbb9ea7391c1255d182451efd457688c8b2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnfsidmap-2.3.3-35.el8.x86_64.rpm" + }, + "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-8.30-8.el8.x86_64.rpm" + }, + "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kpartx-0.8.4-2.el8.x86_64.rpm" + }, + "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpsl-0.20.2-6.el8.x86_64.rpm" + }, + "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm" + }, + "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-dicts-2.9.6-15.el8.x86_64.rpm" + }, + "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-oauthlib-2.1.0-1.el8.noarch.rpm" + }, + "sha256:348b7d66a20015563489babbc3850928587575d0acde7c61d55480ebf0f3820d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-squash-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:34b08ea266a4bbddffe8307693742c11a09c3dc2a9f271f95a7ab5c4f67ea3e3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libXrandr-1.5.2-1.el8.x86_64.rpm" + }, + "sha256:350657e984b1736bb4a8c9cc01b772517a4194467d6db84110c1cc42131f1cae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/initscripts-10.00.8-1.el8.x86_64.rpm" + }, + "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-chardet-3.0.4-7.el8.noarch.rpm" + }, + "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/zlib-1.2.11-15.el8.x86_64.rpm" + }, + "sha256:3730f3f8d3332836f278250408891cb097379a5d7745fe698b1d418e9e13d335": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-clients-8.0p1-5.el8.x86_64.rpm" + }, + "sha256:37504d807ac0bb6c429d7be9c636f7b755464023511d856846dbb9deb8f6a76d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/logrotate-3.14.0-4.el8.x86_64.rpm" + }, + "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libseccomp-2.4.3-1.el8.x86_64.rpm" + }, + "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-2.26-4.el8.x86_64.rpm" + }, + "sha256:38affe91361bf56b84490d97c7e3f815965cf8d2bbb222c6c045af4bf2dff736": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/langpacks-en-1.0-12.el8.noarch.rpm" + }, + "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-1.18-1.el8.x86_64.rpm" + }, + "sha256:398c1abc82097370f46e6fdf4dae63870e1f767b24d0130c79ed67ea3a67233a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sg3_utils-1.44-5.el8.x86_64.rpm" + }, + "sha256:39e59e9a2460e3b6fe147501e79a57042f161c217963be212359031bb8b18daa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/jansson-2.11-3.el8.x86_64.rpm" + }, + "sha256:39e6bc1e8101e536066554702d5d6b25f8cad359fb5e02ac598cfdad56eafb6d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxcb-1.13.1-1.el8.x86_64.rpm" + }, + "sha256:3a1058c6ba468722090a74002a3239161771b0d8b444975bff891afd45bb672a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsysfs-2.1.0-24.el8.x86_64.rpm" + }, + "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-configobj-5.0.6-11.el8.noarch.rpm" + }, + "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/procps-ng-3.3.15-2.el8.x86_64.rpm" + }, + "sha256:3b087daa7e9de69c051f22f9df1ef00867ffddd99357bc3a215ccde76a13c02f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtalloc-2.3.1-2.el8.x86_64.rpm" + }, + "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/filesystem-3.8-3.el8.x86_64.rpm" + }, + "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-plugins-core-4.0.17-2.el8.noarch.rpm" + }, + "sha256:3d1dfe2e487e06efda133298a0fd0913f95b61c4373332db110b496aaadc8f05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/qemu-guest-agent-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64.rpm" + }, + "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-8.3-0.2.el8.x86_64.rpm" + }, + "sha256:3d807ee0bd43ba2cfbc5fa3678963fb706898bd41588a29330c315a9d88ab2a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipset-libs-7.1-1.el8.x86_64.rpm" + }, + "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ima-evm-utils-1.1-5.el8.x86_64.rpm" + }, + "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tar-1.30-5.el8.x86_64.rpm" + }, + "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pyserial-3.1.1-8.el8.noarch.rpm" + }, + "sha256:3edf7d29e530e6568416d4455e9fbaa511aba236c603da9928e689fae77b9874": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-netifaces-0.10.6-4.el8.x86_64.rpm" + }, + "sha256:40010441888b72dd077d4d6790f837236701b93c8b31da5dbf65c700fd2571fd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-config-generic-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:411d65fe9e463458af055d06a4a89a1d822d26049198615c0afc9741c426c77c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cronie-1.5.2-4.el8.x86_64.rpm" + }, + "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gpg-1.13.1-3.el8.x86_64.rpm" + }, + "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-common-4.3.6-41.el8.noarch.rpm" + }, + "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/util-linux-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:42cd48bff06dee66716b6a6362d6469168d4657511fcf3bd16003c441dc88fea": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libXfixes-5.0.3-7.el8.x86_64.rpm" + }, + "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xfsprogs-5.0.0-4.el8.x86_64.rpm" + }, + "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:4403330cdf4f15d75d727e2ac8c3358ff6a13209b3395dfac2131984e443eb23": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/snappy-1.1.7-5.el8.x86_64.rpm" + }, + "sha256:4405d32322fd496c65f57a12b6037fd75b49957269dbf9cb0417b598162f7407": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iproute-5.3.0-5.el8.x86_64.rpm" + }, + "sha256:441efa6f0b9a9905ef11ec987d6db89e7dba2857060020c4554e32db3e59fce5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-libs-0.115-11.el8.x86_64.rpm" + }, + "sha256:44e81330b185085f871e9fbf8fae27c8de411600c032aca371dc6d39a3e261da": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_sudo-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libzstd-1.4.4-1.el8.x86_64.rpm" + }, + "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtirpc-1.1.4-4.el8.x86_64.rpm" + }, + "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm" + }, + "sha256:474a66a4cf3d5a00286be40c15bad69ea1ac63a9424a1ff44f20a548a7686f7a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libfastjson-0.99.8-2.el8.x86_64.rpm" + }, + "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm" + }, + "sha256:4882ff53265bdeabb69f1ac9c585454b28ae799ab31fa72c9eb10bdbe1f41d9a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-tools-libs-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:4931d78c496eaaa8e6b6bbec2b4750da52b9fc7e989ae89b7c1fa2a6f40ff7fa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm" + }, + "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libidn2-2.2.0-1.el8.x86_64.rpm" + }, + "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pyudev-0.21.0-7.el8.noarch.rpm" + }, + "sha256:4b8cd13404adac1a30a105e894a733f7c79bfac1a125b8cd095e6ba9c1d056f9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-tui-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-modules-2.02-84.el8.noarch.rpm" + }, + "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgpg-error-1.31-1.el8.x86_64.rpm" + }, + "sha256:4ca553b0c0f6dc130e05e2011cdf1f52132e8f70bd93be8eee4e415b2cac0c56": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-librepo-1.12.0-1.el8.x86_64.rpm" + }, + "sha256:4ccbefcbe75decfef38ccae5d8ff92ba6b00e8232b64ec46ae0c0be8ae20ec50": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libxml2-2.9.7-8.el8.x86_64.rpm" + }, + "sha256:4ce17c90ad64c2ca85191caa990db8eb0aec7cde24a26a89294c5821cfd20e5f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iprutils-2.4.19-1.el8.x86_64.rpm" + }, + "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-libs-1.0.6-26.el8.x86_64.rpm" + }, + "sha256:4d54749c92887ab059c768ada265c0f64e292594846b183d1fdfa9b29fff3ac1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/plymouth-0.9.4-1.20200615git1e36e30.el8.x86_64.rpm" + }, + "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-libs-1.5.10-6.el8.x86_64.rpm" + }, + "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shared-mime-info-1.9-3.el8.x86_64.rpm" + }, + "sha256:4ed1a6294eea09a3a7e15683267ca5d383e4c2b27fd57fe05d2666e0e6c3d26f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtdb-1.4.3-1.el8.x86_64.rpm" + }, + "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/npth-1.5-4.el8.x86_64.rpm" + }, + "sha256:507442831068c749ba21b22bd96993a1a2a6c74dd53c55f34c7f81a21554c82d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libref_array-0.1.5-39.el8.x86_64.rpm" + }, + "sha256:50c0d1828a9e8db638c09d88afb0828d98349027ce498ee7df74e7ff6052ac1d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdhash-0.5.0-39.el8.x86_64.rpm" + }, + "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib2-2.56.4-8.el8.x86_64.rpm" + }, + "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm" + }, + "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-eula-8.3-0.2.el8.x86_64.rpm" + }, + "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-rpm-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-4.4.19-12.el8.x86_64.rpm" + }, + "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-c-0.13.1-0.2.el8.x86_64.rpm" + }, + "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:539abfc369a17023658486f7b4a48c8db159cc4d617b27da256ddac6e15ea687": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpipeline-1.5.0-2.el8.x86_64.rpm" + }, + "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpng-1.6.34-5.el8.x86_64.rpm" + }, + "sha256:53fb6834e2e439e79225d957c4643922da74836417b5558d0c2943b546b26e57": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libndp-1.7-3.el8.x86_64.rpm" + }, + "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:56cc340c88cabacd9a329f80edee141154dbf84808894e43a937247394623cf0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl6000-firmware-9.221.4.1-99.el8.1.noarch.rpm" + }, + "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-build-libs-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:5869b0b682ea0c2cc74a089818970d6c6bbf6e72e6229aed6ba680f15ce87347": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/spice-vdagent-0.20.0-1.el8.x86_64.rpm" + }, + "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm" + }, + "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcroco-0.6.12-4.el8.x86_64.rpm" + }, + "sha256:593d4df5b8de12ed0ec5a0935cb0bd966e27a631aa0806250ba9f67092ad737f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libX11-common-1.6.8-3.el8.noarch.rpm" + }, + "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonschema-2.6.0-4.el8.noarch.rpm" + }, + "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-hawkey-0.48.0-2.el8.x86_64.rpm" + }, + "sha256:5a85222c8e9997a8b609b915a8fbae756de9b9bff732db852fb15fe0524f2d86": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dbus-1.2.4-15.el8.x86_64.rpm" + }, + "sha256:5ac24d7513e9daa137064985cd8a8774c94aa8a6c07e2814d0c56ddde33fcc8d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nftables-0.9.3-14.el8.x86_64.rpm" + }, + "sha256:5bdb82a14d3604899324afc296aa7e7179a15788e2514348eea81b46934d6a3c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/authselect-libs-1.2.1-2.el8.x86_64.rpm" + }, + "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgomp-8.3.1-5.1.el8.x86_64.rpm" + }, + "sha256:5cbe058e6d2177f88006fed866e6b1565d6024a12c311ae8eaa21008f76074b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl3160-firmware-25.30.13.0-99.el8.1.noarch.rpm" + }, + "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lz4-libs-1.8.3-2.el8.x86_64.rpm" + }, + "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonpointer-1.10-11.el8.noarch.rpm" + }, + "sha256:5ef47eb6a042a13c902764907692c1068eb0f69153b47bc85792bef74bfa852b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rsyslog-8.1911.0-6.el8.x86_64.rpm" + }, + "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-libs-5.33-16.el8.x86_64.rpm" + }, + "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lua-libs-5.3.4-11.el8.x86_64.rpm" + }, + "sha256:61498bdebac578394eae8667e16ad7393309f7144266d4331f4c17f276b15fe0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/plymouth-scripts-0.9.4-1.20200615git1e36e30.el8.x86_64.rpm" + }, + "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:61cf7338e12188f787c7162e2cd669c895e4e2cf4ae86c9debcd56fd3b8a8322": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnfnetlink-1.0.1-13.el8.x86_64.rpm" + }, + "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-6.1-7.20180224.el8.x86_64.rpm" + }, + "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/curl-7.61.1-12.el8.x86_64.rpm" + }, + "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nettle-3.4.1-2.el8.x86_64.rpm" + }, + "sha256:65dc391ab1c96d1009ef2e7706eabacd5cf84f2a47ea1cc87f6f5e2c1324b178": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsepol-2.9-1.el8.x86_64.rpm" + }, + "sha256:671852e4f32de6278dd384d35d1dc799ab5d3e8ef718e89e516452cbcba068f0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sg3_utils-libs-1.44-5.el8.x86_64.rpm" + }, + "sha256:68362500ad574eb2df43a3d260ab8d0f3ce1ae5f34e66d71f2478fef8e17cb4a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/less-530-1.el8.x86_64.rpm" + }, + "sha256:6844197fd8ffdb16cf94ab77709aa2954cb39512435a377401ebce340d06c7de": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/irqbalance-1.4.0-4.el8.x86_64.rpm" + }, + "sha256:686015c78247edec0a0f5e0d2cbbf02d9feea162e5967ed5b5be35d3951b1f3d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dmidecode-3.2-6.el8.x86_64.rpm" + }, + "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-5.3.28-39.el8.x86_64.rpm" + }, + "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/freetype-2.9.1-4.el8.x86_64.rpm" + }, + "sha256:6a2995eedf44e1404dc439768efad015a680b39230bf5e2a1d7a33a438434c43": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/alsa-lib-1.2.3.2-1.el8.x86_64.rpm" + }, + "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpwquality-1.4.0-9.el8.x86_64.rpm" + }, + "sha256:6d0dcbaa45457461dd5c4afe97689fa2baf5f95551bbe5e827a152dee545a51d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-libnm-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-7.20180224.el8.x86_64.rpm" + }, + "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-0.19.8.1-17.el8.x86_64.rpm" + }, + "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hwdata-0.314-8.5.el8.noarch.rpm" + }, + "sha256:713ec69b972a8e88622b3fcd3b84fccdbd6c333b68b6c52151c2350edad2576a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgudev-232-4.el8.x86_64.rpm" + }, + "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openldap-2.4.46-15.el8.x86_64.rpm" + }, + "sha256:72fe0e1837aa503049fada31c6e8ae73a4e550be2ddfd73303fb84e955fcc268": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl2000-firmware-18.168.6.1-99.el8.1.noarch.rpm" + }, + "sha256:72ff3a3f6c52849a40cb24f9694115a68cc939970a00c374b4c73b1e4c5dc20c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/squashfs-tools-4.3-19.el8.x86_64.rpm" + }, + "sha256:73c29baa2cd94f1ae6a1d1333818969a281b16dd4262f413ad284c5333719a4d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/groff-base-1.22.3-18.el8.x86_64.rpm" + }, + "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libdnf-0.48.0-2.el8.x86_64.rpm" + }, + "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:74d05cb72dc6740be73480e68b15b209d7e7a2bf7d7d54e0d3a2dc261ce64e4b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnetfilter_conntrack-1.0.6-5.el8.x86_64.rpm" + }, + "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.x86_64.rpm" + }, + "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsemanage-2.9-3.el8.x86_64.rpm" + }, + "sha256:769b1ac34ba3aa35337b734b8548dcf9e8b41476b9b2093756341bcbd5969a36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/firewalld-filesystem-0.8.2-1.el8.noarch.rpm" + }, + "sha256:76ca09c73360f48d4b6fe4d4ee0aa974ef53531222df8e363d8006ec469051cf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-core-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-libs-1.02.171-3.el8.x86_64.rpm" + }, + "sha256:78926ec2c75db8bcbdd4f4fbd8c06b373f85bd7ecce0e6aac8c75dda95fcae2c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/biosdevname-0.7.3-2.el8.x86_64.rpm" + }, + "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-utils-5.3.28-39.el8.x86_64.rpm" + }, + "sha256:798420bbda79fd0b9312abac25efad6b28957c512497f37f4beddad5d67dd66a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdaemon-0.14-15.el8.x86_64.rpm" + }, + "sha256:7a7a238ea529165348acef1d1a20c1d47c1ef5838d8501f3879bb130c1b73e06": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-cryptography-2.3-3.el8.x86_64.rpm" + }, + "sha256:7b6856dc4dc1d88d9c3c9597fb824b5776af59f045087bdb2713d64045216a36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/man-db-2.7.6.1-17.el8.x86_64.rpm" + }, + "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pinentry-1.1.0-2.el8.x86_64.rpm" + }, + "sha256:7c0b2b064dad700cba2754b46f483e3e59aaf798740470df1daad3d5239fb893": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/passwd-0.80-3.el8.x86_64.rpm" + }, + "sha256:7c292b3bb74d12d77e1e22221c55696a0c5f50304040b3a706c2164d5b6a42e4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_nss_idmap-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:7c89c2d055013779252c12643e8f0b3731f4dd5e2b61d9d81233a0ee298abb36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libteam-1.29-5.el8.x86_64.rpm" + }, + "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/brotli-1.0.6-2.el8.x86_64.rpm" + }, + "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm" + }, + "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libevent-2.1.8-5.el8.x86_64.rpm" + }, + "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-slip-0.6.4-11.el8.noarch.rpm" + }, + "sha256:802263173d9c487fc3ca584cc2a5b7b7bb49ac0d12d9026b3246d50fd0888fb1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-glib-0.110-2.el8.x86_64.rpm" + }, + "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/popt-1.16-14.el8.x86_64.rpm" + }, + "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.x86_64.rpm" + }, + "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-libs-1.8.4-14.el8.x86_64.rpm" + }, + "sha256:831a51570e09368c7b720567827b74a46ed5a01c7c39906c185c385bc50079d9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpciaccess-0.14-1.el8.x86_64.rpm" + }, + "sha256:860676d4231afa3e6b23933d8dd65e5f7f5823910791e6481d2440ae4ec64c53": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtevent-0.10.2-2.el8.x86_64.rpm" + }, + "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libassuan-2.5.1-3.el8.x86_64.rpm" + }, + "sha256:86d305a1466a596f8b436561d674f2510f268bed9e73f56c87da1dd120f99c18": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gobject-base-3.28.3-2.el8.x86_64.rpm" + }, + "sha256:871672b8a9ffbe887b32e736494c1f005795bc7ffda026c6a063ee0d28788709": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libXrender-0.9.10-7.el8.x86_64.rpm" + }, + "sha256:8716781f69e8f2bf3f171ed6a34a012f79dc76ce0bcfa318fa0b02d488173ee1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-ebtables-1.8.4-14.el8.x86_64.rpm" + }, + "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grubby-8.40-41.el8.x86_64.rpm" + }, + "sha256:879cb96ce1591886728a45bfb6dbd6fcf48a43757c42f5481019157037046b61": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-langpack-en-2.28-127.el8.x86_64.rpm" + }, + "sha256:8af00d4b0857240310156e05123e07795e6573da7c1fe9e7fd83b51f13971725": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-0.115-11.el8.x86_64.rpm" + }, + "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libfdisk-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pycparser-2.14-14.el8.noarch.rpm" + }, + "sha256:8d371e753071edc796d2eadb8278980290511be6279fdf46649c81b859497d6a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/prefixdevname-0.1.0-6.el8.x86_64.rpm" + }, + "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpcap-1.9.1-4.el8.x86_64.rpm" + }, + "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/unbound-libs-1.7.3-14.el8.x86_64.rpm" + }, + "sha256:8eb3370fe641e329b03838e560f45ee290b273dcccfa182d97ad2dbff59b47fd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl6050-firmware-41.28.5.1-99.el8.1.noarch.rpm" + }, + "sha256:8f00781eb679c6baf359099fa2a672ffccfc8e43b7c03c1dc635619cb25ff01d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm" + }, + "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-libs-2.9.7-12.el8.x86_64.rpm" + }, + "sha256:9226efc49ff191d0d713446e8b28bb58ae4ab1cb64e34a6f7fc08af247202cdd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libXinerama-1.1.4-1.el8.x86_64.rpm" + }, + "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm" + }, + "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libacl-2.2.53-1.el8.x86_64.rpm" + }, + "sha256:947b4e4eebec21501ca62e2a7ff9baae0e4e7c59584fbba4b6276a402cfbb45b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/vim-minimal-8.0.1763-15.el8.x86_64.rpm" + }, + "sha256:9487bff6bb16e7326c8b805751580b4593220ba19b06515c69de83fee8e3bb1f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libselinux-2.9-3.el8.x86_64.rpm" + }, + "sha256:948e61e32986303f12f8dbe40bc44674287b3906a54dadae5e3dfd2ccba88fac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kexec-tools-2.0.20-29.el8.x86_64.rpm" + }, + "sha256:950b6b41580f4c35a108345c1c8d9d3930cc95a2c4fe4b726f02bce67532151d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl6000g2a-firmware-18.168.6.1-99.el8.1.noarch.rpm" + }, + "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-0.3.0-5.el8.x86_64.rpm" + }, + "sha256:959fcb0016788a2b1ee55f0801c1490b196416579bc9ac9da9e38786e6c78ff6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl105-firmware-18.168.6.1-99.el8.1.noarch.rpm" + }, + "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-slip-dbus-0.6.4-11.el8.noarch.rpm" + }, + "sha256:97c8af6f58e3d14317036bd3ed2cbc498803c91c55b9dc0e8f0fddea7ac929e3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-modules-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chkconfig-1.13-2.el8.x86_64.rpm" + }, + "sha256:98a589d7e1cdea9d974aa43f688e55333eed11ce7cb2037d45cc2e69bce579b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/usermode-1.113-1.el8.x86_64.rpm" + }, + "sha256:995a5401cd86404d14d08c0aeafeaa8da3f540b1806f9d0e233d75dec9e45c74": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libmaxminddb-1.2.0-10.el8.x86_64.rpm" + }, + "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:99fa92b5d1e0d335fb2bb961ef39988b50968350b899e8790cead73c9a0bec65": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-rhsm-certificates-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm" + }, + "sha256:9a9ca6857f517f1249d2eb496fe904590d6203e4a9547a28e0b23f21c4cae24a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-pkla-compat-0.1-12.el8.x86_64.rpm" + }, + "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdnf-0.48.0-2.el8.x86_64.rpm" + }, + "sha256:9c5594fcac97c0f8813d7a188e2368e3b1095025fc4a0ecbd5d17e54c0c93f97": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmnl-1.0.4-6.el8.x86_64.rpm" + }, + "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-2.9.6-15.el8.x86_64.rpm" + }, + "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstdc++-8.3.1-5.1.el8.x86_64.rpm" + }, + "sha256:9d9d1bdfba4cd852f90232ebe2c4247e7b3a88c4476578c820788a91d6838e55": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rng-tools-6.8-3.el8.x86_64.rpm" + }, + "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-babel-2.5.1-5.el8.noarch.rpm" + }, + "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64.rpm" + }, + "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libelf-0.180-1.el8.x86_64.rpm" + }, + "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ply-3.9-8.el8.noarch.rpm" + }, + "sha256:a01bc8ab29f40d5e9f03929cee7a796804d63fda3c471054a67d1fd1e5577f6c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-team-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcrypt-1.8.5-4.el8.x86_64.rpm" + }, + "sha256:a143d66ae06409c70fe4323c52c4507a1d7247c59f21951b96279fd7ca173215": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libX11-1.6.8-3.el8.x86_64.rpm" + }, + "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-0.3.14-4.el8.x86_64.rpm" + }, + "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-glib-1.4.4-1.el8.x86_64.rpm" + }, + "sha256:a260f793e49805b188908e2f30c4687abe4e023b20c28a85d10d2371556c3981": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libXau-1.0.9-3.el8.x86_64.rpm" + }, + "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-libs-25-16.el8.x86_64.rpm" + }, + "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/os-prober-1.74-6.el8.x86_64.rpm" + }, + "sha256:a3dedf8c077b4656d3cd4ef641e696397a3fff83ee8b14f0e3fc69d7c10cebcf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lzo-2.08-14.el8.x86_64.rpm" + }, + "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm" + }, + "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libss-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librhsm-0.0.3-3.el8.x86_64.rpm" + }, + "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pysocks-1.6.8-3.el8.noarch.rpm" + }, + "sha256:a8808c053ffb7ccf826d80fdd458b6521f2cc63e55eb90d79a504fbb66c36cb0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/checkpolicy-2.9-1.el8.x86_64.rpm" + }, + "sha256:a8961c50502aa02071c043a16f93399ac6794a058a0ef42be889abe60f35985b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iputils-20180629-2.el8.x86_64.rpm" + }, + "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcomps-0.1.11-4.el8.x86_64.rpm" + }, + "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setup-2.12.2-6.el8.noarch.rpm" + }, + "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:ac2800369b7f4dc05a8fec452eabedf02f153c11e188a1e80157e35592305690": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-cli-3.5.0-1.el8.x86_64.rpm" + }, + "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rootfiles-8.1-22.el8.noarch.rpm" + }, + "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-minimal-2.02-84.el8.x86_64.rpm" + }, + "sha256:ad9b3b98ace87913e9487fceaae165faffb81e9c32400a72e08cc752cab0d037": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/authselect-1.2.1-2.el8.x86_64.rpm" + }, + "sha256:af495353f000008aab42640530c0c9005aaf60f0d4b4cf1a9b66b07bfc5b5881": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-tools-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hardlink-1.3-6.el8.x86_64.rpm" + }, + "sha256:b05032d419c29bfbe60b3495dab9b368865e2154b1b25d87b1e4f5b379226747": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnftnl-1.1.5-4.el8.x86_64.rpm" + }, + "sha256:b156691caa225f0025533a68eeb9a2cf3883062dd209ede9ec07727b358171cc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/teamd-1.29-5.el8.x86_64.rpm" + }, + "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxml2-2.9.7-8.el8.x86_64.rpm" + }, + "sha256:b169780b212062e9b9564d7c033f0895f98955c42312f1a023e02277966916e6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libdrm-2.4.101-1.el8.x86_64.rpm" + }, + "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtasn1-4.13-3.el8.x86_64.rpm" + }, + "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnutls-3.6.14-3.el8.x86_64.rpm" + }, + "sha256:b2dcbd3b81196b16e33054d31c0129c432cf59fb591035845cc299bbb46000c1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuser-0.62-23.el8.x86_64.rpm" + }, + "sha256:b446b1469bd535cf94e555525f40fa751b1343d89d589f3cff30ee2d7c38258e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hdparm-9.54-2.el8.x86_64.rpm" + }, + "sha256:b4e89276818abec218c909ca961db9bb2e09b1fc609ff280e6c05227143fa24d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-newt-0.52.20-11.el8.x86_64.rpm" + }, + "sha256:b55b77fb38d84685cef6638240daa54235fce156176c820a3c3b980bf414c5f4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl5000-firmware-8.83.5.1_1-99.el8.1.noarch.rpm" + }, + "sha256:b59cdea55a890a10f484d8596e244a18455ee82920c7e466991801d24c4718cd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lshw-B.02.19.2-2.el8.x86_64.rpm" + }, + "sha256:b5fc6f35798edccd0390e54fce40290936c3699227e79cc6d1a42d803358fd03": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-8.0p1-5.el8.x86_64.rpm" + }, + "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-pam-239-36.el8.x86_64.rpm" + }, + "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libreport-filesystem-2.9.5-11.el8.x86_64.rpm" + }, + "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-2.2.20-2.el8.x86_64.rpm" + }, + "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/basesystem-11-5.el8.noarch.rpm" + }, + "sha256:b9a17114d551cc8259eea6996b6871ec36675330fdb1eb16db529e6f8a9c34d5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lsscsi-0.30-1.el8.x86_64.rpm" + }, + "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/which-2.21-12.el8.x86_64.rpm" + }, + "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonpatch-1.21-2.el8.noarch.rpm" + }, + "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pigz-2.4-4.el8.x86_64.rpm" + }, + "sha256:bed436b103161f7d8f61b617c84f3a7b5509f1d00c8425900a88c222b1331b31": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:beea3f8c88b9c0a74d75622aa71467f51c457d1acf0ff557f7cd0e2ae3dfafe3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_certmap-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-libs-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd-2.9.4-2.el8.x86_64.rpm" + }, + "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsolv-0.7.11-1.el8.x86_64.rpm" + }, + "sha256:bfe5c8ea12012936cc59981a10728e95d5fdadd3e893457af7a27c464d8cb6ba": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libestr-0.1.10-1.el8.x86_64.rpm" + }, + "sha256:c0025c0b08ed82c640fa470e62743aed17a33f7948ed0cc969892d7c149206b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-nfs-idmap-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libs-0.180-1.el8.x86_64.rpm" + }, + "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-libs-1.1.1g-9.el8.x86_64.rpm" + }, + "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-libs-1.18-1.el8.x86_64.rpm" + }, + "sha256:c193b87ad1690e81ca35ec1f1f7dff94f179907ed13d5b7936c189ff5f8f2bae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipset-7.1-1.el8.x86_64.rpm" + }, + "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-libs-3.26.0-10.el8.x86_64.rpm" + }, + "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm" + }, + "sha256:c24a1814f0fff7edcbd5cdca29571e8a79c5584e8ef300e89aef906b35c8a67d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bind-export-libs-9.11.20-3.el8.x86_64.rpm" + }, + "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-pkcs11-0.4.10-2.el8.x86_64.rpm" + }, + "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-idna-2.5-5.el8.noarch.rpm" + }, + "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-asn1crypto-0.24.0-3.el8.noarch.rpm" + }, + "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcom_err-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:c4279ad2915f4ce1806c4121675e49d2b525bb6e977d487dc2ad138fce8c2734": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_idmap-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:c46ee71ba426e0964b2264bdf18fc4cff4d7815206c9e8a471bdf678e65c24b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libini_config-1.3.1-39.el8.x86_64.rpm" + }, + "sha256:c5098f41849af65b808baac594539440fcdffea7afce4239eb41885eccfd67e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/firewalld-0.8.2-1.el8.noarch.rpm" + }, + "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-hwdata-2.3.6-3.el8.noarch.rpm" + }, + "sha256:c5e978963bda83e9321563bb18f69f3753f2eb510dfdafdc6c4e2856dc6b6302": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugin-subscription-manager-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm" + }, + "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pam-1.3.1-11.el8.x86_64.rpm" + }, + "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:c9b3c6dcb4133c3051e3f75978f994aae4c0ad84dd1abbae7fcba497ee524603": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-firewall-0.8.2-1.el8.noarch.rpm" + }, + "sha256:cac59a5629e7229653c29c0d575bd8f8c2d3774474615eb65615109afb151981": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libbasicobjects-0.1.1-39.el8.x86_64.rpm" + }, + "sha256:cb8e7909d58206223ad7108a850218360a6b1e2147d97bc94097962dc820d0de": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setools-4.3.0-1.el8.x86_64.rpm" + }, + "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-1.1.1g-9.el8.x86_64.rpm" + }, + "sha256:cc3df9449002eacd595a73df52eb973d3b37e4c03d4669c7dce6ce7a26dabd6b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm" + }, + "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pytz-2017.2-9.el8.noarch.rpm" + }, + "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmetalink-0.1.3-7.el8.x86_64.rpm" + }, + "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/findutils-4.6.0-20.el8.x86_64.rpm" + }, + "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/acl-2.2.53-1.el8.x86_64.rpm" + }, + "sha256:cf6220736fdd005ba7c67ccb5d5d8a1d9c35718e3c13e79c80967866968d7344": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl100-firmware-39.31.5.1-99.el8.1.noarch.rpm" + }, + "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsigsegv-2.11-5.el8.x86_64.rpm" + }, + "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-unbound-1.7.3-14.el8.x86_64.rpm" + }, + "sha256:d186f806ed9c841a385f7acf194c20b78616396414da9131982e469f065619b8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_autofs-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:d2b777ea98ee644997029994136723cf4fa78e97afeaceab39f76b545b51792b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dmidecode-3.12.2-15.el8.x86_64.rpm" + }, + "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-libs-0.19.8.1-17.el8.x86_64.rpm" + }, + "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-libs-5.2.4-3.el8.x86_64.rpm" + }, + "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libs-3.6.8-30.el8.x86_64.rpm" + }, + "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-urllib3-1.24.2-4.el8.noarch.rpm" + }, + "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grep-3.1-6.el8.x86_64.rpm" + }, + "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-extra-2.02-84.el8.x86_64.rpm" + }, + "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gpgme-1.13.1-3.el8.x86_64.rpm" + }, + "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libusbx-1.0.23-3.el8.x86_64.rpm" + }, + "sha256:d80219a299035688091aa230b1c9169143c00c141c4f1ad8e75d176d22cc1cd0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:d81c180c682e6014a0da09aaa144492e8cb03c1d61022513ba6db5bd3740f921": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm" + }, + "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libaio-0.3.112-1.el8.x86_64.rpm" + }, + "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-2.9-3.el8.x86_64.rpm" + }, + "sha256:d94a39545f8570ba2d199e4892cfe05ebd5ea6e4e8322790b4f960bf92da5f09": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/numactl-libs-2.0.12-11.el8.x86_64.rpm" + }, + "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-requests-2.20.0-2.1.el8_1.noarch.rpm" + }, + "sha256:da5606af487682acce52799418a97614d0f6e6b72d15c88c4f6f2a076f384dac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pciutils-libs-3.6.4-2.el8.x86_64.rpm" + }, + "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-libs-239-36.el8.x86_64.rpm" + }, + "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libarchive-3.3.2-9.el8.x86_64.rpm" + }, + "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-tools-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shadow-utils-4.6-10.el8.x86_64.rpm" + }, + "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-2.02-84.el8.x86_64.rpm" + }, + "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-2.28-127.el8.x86_64.rpm" + }, + "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-udev-239-36.el8.x86_64.rpm" + }, + "sha256:ddafccd3f010fc75da6de158b5a68fd672f8b3554ac403065490318ce2be05f3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libXext-1.3.4-1.el8.x86_64.rpm" + }, + "sha256:de870435340bf30620406df41b79e43adaf7d0a277db1635a0fae710df993fc0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pyyaml-3.12-12.el8.x86_64.rpm" + }, + "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librepo-1.12.0-1.el8.x86_64.rpm" + }, + "sha256:e0cde0185535bd50f7c5e5e2c0c19b5ab086b6bfa8cea95af9d56ffc81cb26b7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-libs-4.3.6-41.el8.x86_64.rpm" + }, + "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/memstrack-0.1.8-1.el8.x86_64.rpm" + }, + "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gawk-4.2.1-1.el8.x86_64.rpm" + }, + "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmartcols-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/info-6.5-6.el8.x86_64.rpm" + }, + "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-utils-2.9-3.el8.x86_64.rpm" + }, + "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/yum-4.2.23-2.el8.noarch.rpm" + }, + "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-1.02.171-3.el8.x86_64.rpm" + }, + "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-linux-procfs-0.6.2-2.el8.noarch.rpm" + }, + "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuuid-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-policycoreutils-2.9-9.el8.noarch.rpm" + }, + "sha256:e67a1c5f02c3e6fdccaad455fddf0dfdf812069da87d841a22df910bf361cfb9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/net-tools-2.0-0.52.20160912git.el8.x86_64.rpm" + }, + "sha256:e868499743c399baa6463fa64a2534a7d32f8e1cca7b1b47ec00c60b34250bfe": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-markupsafe-0.23-19.el8.x86_64.rpm" + }, + "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-2.9-9.el8.x86_64.rpm" + }, + "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-lib-0.3.14-4.el8.x86_64.rpm" + }, + "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libffi-3.1-22.el8.x86_64.rpm" + }, + "sha256:eb5e29df2e7f803a62769aa19c60959ee7d368cd51397e00ebdbedba7d2d4768": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-common-8.30-8.el8.x86_64.rpm" + }, + "sha256:eb9b37827f1851c8a2683cd86026fda90847afe90d51ea746d7cd5f49f6f90d1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/newt-0.52.20-11.el8.x86_64.rpm" + }, + "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libutempter-1.1.6-14.el8.x86_64.rpm" + }, + "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-0.23.14-5.el8_0.x86_64.rpm" + }, + "sha256:ec26615d079ce89316352f813279f74a44871fa8c26fed8f369b9fe847aa5121": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm" + }, + "sha256:ec9adedf0d5d2d096acf4739e2eefab8095498037e13dac9b283e17a9c54259a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sudo-1.8.29-6.el8.x86_64.rpm" + }, + "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre-8.42-4.el8.x86_64.rpm" + }, + "sha256:ecd53a50b4cb20dd1597f45ab4a9cba1fd7793a6000fb2114421687779738672": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcollection-0.7.0-39.el8.x86_64.rpm" + }, + "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/readline-7.0-10.el8.x86_64.rpm" + }, + "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:efa20ae5eca5860656d0131086470cb8d5c3a1ae2819301e7d015f06bbb68a26": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/slang-2.3.2-3.el8.x86_64.rpm" + }, + "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm" + }, + "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm" + }, + "sha256:f2b58d2dfeb45318f8e9e67a96c4f02df69815149ce7b092233a02c0dea19f89": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64.rpm" + }, + "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sed-4.5-2.el8.x86_64.rpm" + }, + "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-0.9.4-2.el8.x86_64.rpm" + }, + "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gzip-1.9-9.el8.x86_64.rpm" + }, + "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-1.2.0-2.el8.x86_64.rpm" + }, + "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64.rpm" + }, + "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/diffutils-3.6-6.el8.x86_64.rpm" + }, + "sha256:f83dc47f0c2ac234e15d5687951285c23576fd2efcc615656c8585f2495456b6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-1.8.4-14.el8.x86_64.rpm" + }, + "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm" + }, + "sha256:f8c30f90610f8cc907009df99348a5e572f5598aed91280c15af604ba62687b2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl2030-firmware-18.168.6.1-99.el8.1.noarch.rpm" + }, + "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.x86_64.rpm" + }, + "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcurl-7.61.1-12.el8.x86_64.rpm" + }, + "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dosfstools-4.1-6.el8.x86_64.rpm" + }, + "sha256:fd7bc748b59a48a1ba803dc893be729c8624a4141e23fcef126a401857bbb455": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-server-8.0p1-5.el8.x86_64.rpm" + }, + "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm" + }, + "sha256:fd9e5c379cd3482d32686fb13881827a39037e7a7afa92c62d58c1f05fcb797f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mozjs60-60.9.0-4.el8.x86_64.rpm" + }, + "sha256:fdcc4180cae8fa83ca54188fc2f6796a1bc8d7eb7106163b98dd93d974b48cd1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hostname-3.20-6.el8.x86_64.rpm" + }, + "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-jwt-1.6.1-2.el8.noarch.rpm" + }, + "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libblkid-2.32.1-24.el8.x86_64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3" + }, + { + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "checksum": "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710" + }, + { + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "checksum": "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379" + }, + { + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "checksum": "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7" + }, + { + "checksum": "sha256:f2b58d2dfeb45318f8e9e67a96c4f02df69815149ce7b092233a02c0dea19f89" + }, + { + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ] + }, + "runner": "org.osbuild.rhel82" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:0027700684ce09927aded1d2c5bb84028529141a6b418897bde37d4af348f8bb" + }, + { + "checksum": "sha256:6d0dcbaa45457461dd5c4afe97689fa2baf5f95551bbe5e827a152dee545a51d" + }, + { + "checksum": "sha256:a01bc8ab29f40d5e9f03929cee7a796804d63fda3c471054a67d1fd1e5577f6c" + }, + { + "checksum": "sha256:4b8cd13404adac1a30a105e894a733f7c79bfac1a125b8cd095e6ba9c1d056f9" + }, + { + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "checksum": "sha256:cc3df9449002eacd595a73df52eb973d3b37e4c03d4669c7dce6ce7a26dabd6b" + }, + { + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "checksum": "sha256:ad9b3b98ace87913e9487fceaae165faffb81e9c32400a72e08cc752cab0d037" + }, + { + "checksum": "sha256:5bdb82a14d3604899324afc296aa7e7179a15788e2514348eea81b46934d6a3c" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "checksum": "sha256:c24a1814f0fff7edcbd5cdca29571e8a79c5584e8ef300e89aef906b35c8a67d" + }, + { + "checksum": "sha256:78926ec2c75db8bcbdd4f4fbd8c06b373f85bd7ecce0e6aac8c75dda95fcae2c" + }, + { + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "checksum": "sha256:2334cb78002aa30feeb11549d51e204aa868f5538a09957850082d7efb15b00f" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:a8808c053ffb7ccf826d80fdd458b6521f2cc63e55eb90d79a504fbb66c36cb0" + }, + { + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "checksum": "sha256:411d65fe9e463458af055d06a4a89a1d822d26049198615c0afc9741c426c77c" + }, + { + "checksum": "sha256:2a65cec3eb67ba7645dd97cf3f3811cd5fb06eea2526d36a683d3fdaa0f2825e" + }, + { + "checksum": "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "checksum": "sha256:802263173d9c487fc3ca584cc2a5b7b7bb49ac0d12d9026b3246d50fd0888fb1" + }, + { + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "checksum": "sha256:289e2a39b2a29163a29da35936d4b484fe356d0a6d519524023e79686daf501b" + }, + { + "checksum": "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2" + }, + { + "checksum": "sha256:e0cde0185535bd50f7c5e5e2c0c19b5ab086b6bfa8cea95af9d56ffc81cb26b7" + }, + { + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "checksum": "sha256:686015c78247edec0a0f5e0d2cbbf02d9feea162e5967ed5b5be35d3951b1f3d" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:c5e978963bda83e9321563bb18f69f3753f2eb510dfdafdc6c4e2856dc6b6302" + }, + { + "checksum": "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c" + }, + { + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "checksum": "sha256:40010441888b72dd077d4d6790f837236701b93c8b31da5dbf65c700fd2571fd" + }, + { + "checksum": "sha256:1faa85c12115426d8afc51c8bed2e71bf1dd87063e25052bcf85c17dbc0d9ea4" + }, + { + "checksum": "sha256:348b7d66a20015563489babbc3850928587575d0acde7c61d55480ebf0f3820d" + }, + { + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "checksum": "sha256:0493fd81825df694be5d15685bfe4dc002de314d18f5ae47ccee769f65ea5013" + }, + { + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "checksum": "sha256:c5098f41849af65b808baac594539440fcdffea7afce4239eb41885eccfd67e2" + }, + { + "checksum": "sha256:769b1ac34ba3aa35337b734b8548dcf9e8b41476b9b2093756341bcbd5969a36" + }, + { + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "checksum": "sha256:879cb96ce1591886728a45bfb6dbd6fcf48a43757c42f5481019157037046b61" + }, + { + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "checksum": "sha256:1065049dbd53849d35db269a23be54148cbe481122381ab71b72f62e83816b26" + }, + { + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "checksum": "sha256:73c29baa2cd94f1ae6a1d1333818969a281b16dd4262f413ad284c5333719a4d" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "checksum": "sha256:b446b1469bd535cf94e555525f40fa751b1343d89d589f3cff30ee2d7c38258e" + }, + { + "checksum": "sha256:fdcc4180cae8fa83ca54188fc2f6796a1bc8d7eb7106163b98dd93d974b48cd1" + }, + { + "checksum": "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f" + }, + { + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "checksum": "sha256:350657e984b1736bb4a8c9cc01b772517a4194467d6db84110c1cc42131f1cae" + }, + { + "checksum": "sha256:206de21c82d76de550bcc1959138472640b0a950a311b753203f5dfe5b201b7b" + }, + { + "checksum": "sha256:4405d32322fd496c65f57a12b6037fd75b49957269dbf9cb0417b598162f7407" + }, + { + "checksum": "sha256:4ce17c90ad64c2ca85191caa990db8eb0aec7cde24a26a89294c5821cfd20e5f" + }, + { + "checksum": "sha256:c193b87ad1690e81ca35ec1f1f7dff94f179907ed13d5b7936c189ff5f8f2bae" + }, + { + "checksum": "sha256:3d807ee0bd43ba2cfbc5fa3678963fb706898bd41588a29330c315a9d88ab2a7" + }, + { + "checksum": "sha256:f83dc47f0c2ac234e15d5687951285c23576fd2efcc615656c8585f2495456b6" + }, + { + "checksum": "sha256:8716781f69e8f2bf3f171ed6a34a012f79dc76ce0bcfa318fa0b02d488173ee1" + }, + { + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "checksum": "sha256:a8961c50502aa02071c043a16f93399ac6794a058a0ef42be889abe60f35985b" + }, + { + "checksum": "sha256:6844197fd8ffdb16cf94ab77709aa2954cb39512435a377401ebce340d06c7de" + }, + { + "checksum": "sha256:cf6220736fdd005ba7c67ccb5d5d8a1d9c35718e3c13e79c80967866968d7344" + }, + { + "checksum": "sha256:1bc038693be7ccd59674c478176c3badce4a56f785dd0690548b087bcc7adaa1" + }, + { + "checksum": "sha256:959fcb0016788a2b1ee55f0801c1490b196416579bc9ac9da9e38786e6c78ff6" + }, + { + "checksum": "sha256:204e4dbaf357e12ff041c1c203b2527f7d178905ebae53db3c12e57d28fcbf46" + }, + { + "checksum": "sha256:72fe0e1837aa503049fada31c6e8ae73a4e550be2ddfd73303fb84e955fcc268" + }, + { + "checksum": "sha256:f8c30f90610f8cc907009df99348a5e572f5598aed91280c15af604ba62687b2" + }, + { + "checksum": "sha256:5cbe058e6d2177f88006fed866e6b1565d6024a12c311ae8eaa21008f76074b1" + }, + { + "checksum": "sha256:b55b77fb38d84685cef6638240daa54235fce156176c820a3c3b980bf414c5f4" + }, + { + "checksum": "sha256:252d46d58e0c02cbe2d2485488bd63ea7129964643787557eae832102541f84f" + }, + { + "checksum": "sha256:56cc340c88cabacd9a329f80edee141154dbf84808894e43a937247394623cf0" + }, + { + "checksum": "sha256:950b6b41580f4c35a108345c1c8d9d3930cc95a2c4fe4b726f02bce67532151d" + }, + { + "checksum": "sha256:8eb3370fe641e329b03838e560f45ee290b273dcccfa182d97ad2dbff59b47fd" + }, + { + "checksum": "sha256:1d28eaeaa59c48e4193c709dd2a6301c2f8701138164c05371a0d8f235d14c9c" + }, + { + "checksum": "sha256:39e59e9a2460e3b6fe147501e79a57042f161c217963be212359031bb8b18daa" + }, + { + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:eb5e29df2e7f803a62769aa19c60959ee7d368cd51397e00ebdbedba7d2d4768" + }, + { + "checksum": "sha256:76ca09c73360f48d4b6fe4d4ee0aa974ef53531222df8e363d8006ec469051cf" + }, + { + "checksum": "sha256:97c8af6f58e3d14317036bd3ed2cbc498803c91c55b9dc0e8f0fddea7ac929e3" + }, + { + "checksum": "sha256:af495353f000008aab42640530c0c9005aaf60f0d4b4cf1a9b66b07bfc5b5881" + }, + { + "checksum": "sha256:4882ff53265bdeabb69f1ac9c585454b28ae799ab31fa72c9eb10bdbe1f41d9a" + }, + { + "checksum": "sha256:948e61e32986303f12f8dbe40bc44674287b3906a54dadae5e3dfd2ccba88fac" + }, + { + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "checksum": "sha256:68362500ad574eb2df43a3d260ab8d0f3ce1ae5f34e66d71f2478fef8e17cb4a" + }, + { + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "checksum": "sha256:cac59a5629e7229653c29c0d575bd8f8c2d3774474615eb65615109afb151981" + }, + { + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "checksum": "sha256:ecd53a50b4cb20dd1597f45ab4a9cba1fd7793a6000fb2114421687779738672" + }, + { + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "checksum": "sha256:798420bbda79fd0b9312abac25efad6b28957c512497f37f4beddad5d67dd66a" + }, + { + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "checksum": "sha256:50c0d1828a9e8db638c09d88afb0828d98349027ce498ee7df74e7ff6052ac1d" + }, + { + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "checksum": "sha256:0391105afa53c9503b59591615bd7c98e2f7a4cd94ff4fd1451c4234522f3880" + }, + { + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "checksum": "sha256:713ec69b972a8e88622b3fcd3b84fccdbd6c333b68b6c52151c2350edad2576a" + }, + { + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "checksum": "sha256:c46ee71ba426e0964b2264bdf18fc4cff4d7815206c9e8a471bdf678e65c24b9" + }, + { + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "checksum": "sha256:231bc0eeb8fb127f0a4da5a4da1edd226067d5029a0b4fd6ef72c246ccfc31c0" + }, + { + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "checksum": "sha256:9c5594fcac97c0f8813d7a188e2368e3b1095025fc4a0ecbd5d17e54c0c93f97" + }, + { + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "checksum": "sha256:53fb6834e2e439e79225d957c4643922da74836417b5558d0c2943b546b26e57" + }, + { + "checksum": "sha256:74d05cb72dc6740be73480e68b15b209d7e7a2bf7d7d54e0d3a2dc261ce64e4b" + }, + { + "checksum": "sha256:61cf7338e12188f787c7162e2cd669c895e4e2cf4ae86c9debcd56fd3b8a8322" + }, + { + "checksum": "sha256:2eed977380b41885d4f7ad33e122abbb9ea7391c1255d182451efd457688c8b2" + }, + { + "checksum": "sha256:b05032d419c29bfbe60b3495dab9b368865e2154b1b25d87b1e4f5b379226747" + }, + { + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "checksum": "sha256:0129696c208f60326723c650295167b0600791ccb2e9c3d446c4caf9adecb3d7" + }, + { + "checksum": "sha256:ac2800369b7f4dc05a8fec452eabedf02f153c11e188a1e80157e35592305690" + }, + { + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "checksum": "sha256:2eba2dc51974271244bdeaaf17c6e8fac3c35b62914b680076bdc4a32272df01" + }, + { + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "checksum": "sha256:831a51570e09368c7b720567827b74a46ed5a01c7c39906c185c385bc50079d9" + }, + { + "checksum": "sha256:539abfc369a17023658486f7b4a48c8db159cc4d617b27da256ddac6e15ea687" + }, + { + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "checksum": "sha256:507442831068c749ba21b22bd96993a1a2a6c74dd53c55f34c7f81a21554c82d" + }, + { + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:d186f806ed9c841a385f7acf194c20b78616396414da9131982e469f065619b8" + }, + { + "checksum": "sha256:beea3f8c88b9c0a74d75622aa71467f51c457d1acf0ff557f7cd0e2ae3dfafe3" + }, + { + "checksum": "sha256:c4279ad2915f4ce1806c4121675e49d2b525bb6e977d487dc2ad138fce8c2734" + }, + { + "checksum": "sha256:7c292b3bb74d12d77e1e22221c55696a0c5f50304040b3a706c2164d5b6a42e4" + }, + { + "checksum": "sha256:44e81330b185085f871e9fbf8fae27c8de411600c032aca371dc6d39a3e261da" + }, + { + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "checksum": "sha256:3a1058c6ba468722090a74002a3239161771b0d8b444975bff891afd45bb672a" + }, + { + "checksum": "sha256:3b087daa7e9de69c051f22f9df1ef00867ffddd99357bc3a215ccde76a13c02f" + }, + { + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "checksum": "sha256:4ed1a6294eea09a3a7e15683267ca5d383e4c2b27fd57fe05d2666e0e6c3d26f" + }, + { + "checksum": "sha256:7c89c2d055013779252c12643e8f0b3731f4dd5e2b61d9d81233a0ee298abb36" + }, + { + "checksum": "sha256:860676d4231afa3e6b23933d8dd65e5f7f5823910791e6481d2440ae4ec64c53" + }, + { + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "checksum": "sha256:b2dcbd3b81196b16e33054d31c0129c432cf59fb591035845cc299bbb46000c1" + }, + { + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "checksum": "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9" + }, + { + "checksum": "sha256:37504d807ac0bb6c429d7be9c636f7b755464023511d856846dbb9deb8f6a76d" + }, + { + "checksum": "sha256:b59cdea55a890a10f484d8596e244a18455ee82920c7e466991801d24c4718cd" + }, + { + "checksum": "sha256:b9a17114d551cc8259eea6996b6871ec36675330fdb1eb16db529e6f8a9c34d5" + }, + { + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "checksum": "sha256:a3dedf8c077b4656d3cd4ef641e696397a3fff83ee8b14f0e3fc69d7c10cebcf" + }, + { + "checksum": "sha256:7b6856dc4dc1d88d9c3c9597fb824b5776af59f045087bdb2713d64045216a36" + }, + { + "checksum": "sha256:0e4b7687f0c62f4e336223b939f6cb169c8dac49eee23c53fd919e58d8f989df" + }, + { + "checksum": "sha256:fd9e5c379cd3482d32686fb13881827a39037e7a7afa92c62d58c1f05fcb797f" + }, + { + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "checksum": "sha256:e67a1c5f02c3e6fdccaad455fddf0dfdf812069da87d841a22df910bf361cfb9" + }, + { + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "checksum": "sha256:eb9b37827f1851c8a2683cd86026fda90847afe90d51ea746d7cd5f49f6f90d1" + }, + { + "checksum": "sha256:5ac24d7513e9daa137064985cd8a8774c94aa8a6c07e2814d0c56ddde33fcc8d" + }, + { + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "checksum": "sha256:d94a39545f8570ba2d199e4892cfe05ebd5ea6e4e8322790b4f960bf92da5f09" + }, + { + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "checksum": "sha256:b5fc6f35798edccd0390e54fce40290936c3699227e79cc6d1a42d803358fd03" + }, + { + "checksum": "sha256:3730f3f8d3332836f278250408891cb097379a5d7745fe698b1d418e9e13d335" + }, + { + "checksum": "sha256:fd7bc748b59a48a1ba803dc893be729c8624a4141e23fcef126a401857bbb455" + }, + { + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "checksum": "sha256:22585bd5d69c5e0a06fe00a6844da2e5d311512374c1d176f17f41caab7e121f" + }, + { + "checksum": "sha256:7c0b2b064dad700cba2754b46f483e3e59aaf798740470df1daad3d5239fb893" + }, + { + "checksum": "sha256:da5606af487682acce52799418a97614d0f6e6b72d15c88c4f6f2a076f384dac" + }, + { + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "checksum": "sha256:8af00d4b0857240310156e05123e07795e6573da7c1fe9e7fd83b51f13971725" + }, + { + "checksum": "sha256:441efa6f0b9a9905ef11ec987d6db89e7dba2857060020c4554e32db3e59fce5" + }, + { + "checksum": "sha256:9a9ca6857f517f1249d2eb496fe904590d6203e4a9547a28e0b23f21c4cae24a" + }, + { + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "checksum": "sha256:8d371e753071edc796d2eadb8278980290511be6279fdf46649c81b859497d6a" + }, + { + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34" + }, + { + "checksum": "sha256:8f00781eb679c6baf359099fa2a672ffccfc8e43b7c03c1dc635619cb25ff01d" + }, + { + "checksum": "sha256:13ffce0597b689dd53f55ea0d03dd6d013246634f5c6cbcef51fa549d9734b29" + }, + { + "checksum": "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786" + }, + { + "checksum": "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367" + }, + { + "checksum": "sha256:7a7a238ea529165348acef1d1a20c1d47c1ef5838d8501f3879bb130c1b73e06" + }, + { + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "checksum": "sha256:5a85222c8e9997a8b609b915a8fbae756de9b9bff732db852fb15fe0524f2d86" + }, + { + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "checksum": "sha256:d2b777ea98ee644997029994136723cf4fa78e97afeaceab39f76b545b51792b" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87" + }, + { + "checksum": "sha256:20dec130e4fd0a2146443791ca7ade6e079cea691d93711813d5f483b691c55a" + }, + { + "checksum": "sha256:c9b3c6dcb4133c3051e3f75978f994aae4c0ad84dd1abbae7fcba497ee524603" + }, + { + "checksum": "sha256:86d305a1466a596f8b436561d674f2510f268bed9e73f56c87da1dd120f99c18" + }, + { + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "checksum": "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20" + }, + { + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "checksum": "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c" + }, + { + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "checksum": "sha256:4ca553b0c0f6dc130e05e2011cdf1f52132e8f70bd93be8eee4e415b2cac0c56" + }, + { + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "checksum": "sha256:9487bff6bb16e7326c8b805751580b4593220ba19b06515c69de83fee8e3bb1f" + }, + { + "checksum": "sha256:09fc3154e76c8ee25b3982c15f3bc455017262c3df5af84075859dcbf79e4f82" + }, + { + "checksum": "sha256:4ccbefcbe75decfef38ccae5d8ff92ba6b00e8232b64ec46ae0c0be8ae20ec50" + }, + { + "checksum": "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f" + }, + { + "checksum": "sha256:08bf2e898b5775317d04266f4598eddbe06c424a3694b1534e3ceff088e2e8ca" + }, + { + "checksum": "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6" + }, + { + "checksum": "sha256:18d419718a99851370262584bec1b27d60cbd08845b50fbe97e1a56b71cd5ea2" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9" + }, + { + "checksum": "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42" + }, + { + "checksum": "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf" + }, + { + "checksum": "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280" + }, + { + "checksum": "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde" + }, + { + "checksum": "sha256:de870435340bf30620406df41b79e43adaf7d0a277db1635a0fae710df993fc0" + }, + { + "checksum": "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a" + }, + { + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "checksum": "sha256:09ca7b05e26f93d35ac299dbcd865b65ec3a3d2654e1da87d2c3c0462dbe6e4a" + }, + { + "checksum": "sha256:cb8e7909d58206223ad7108a850218360a6b1e2147d97bc94097962dc820d0de" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "checksum": "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb" + }, + { + "checksum": "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d" + }, + { + "checksum": "sha256:0f3b084d947bc246fe68822129b8ae1294c4187270a19f0966282baf75b34dc6" + }, + { + "checksum": "sha256:206cba480b58c70348584010d547d21bcd84c6094fd3980e22c6b640da12704c" + }, + { + "checksum": "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53" + }, + { + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "checksum": "sha256:9d9d1bdfba4cd852f90232ebe2c4247e7b3a88c4476578c820788a91d6838e55" + }, + { + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:398c1abc82097370f46e6fdf4dae63870e1f767b24d0130c79ed67ea3a67233a" + }, + { + "checksum": "sha256:671852e4f32de6278dd384d35d1dc799ab5d3e8ef718e89e516452cbcba068f0" + }, + { + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "checksum": "sha256:efa20ae5eca5860656d0131086470cb8d5c3a1ae2819301e7d015f06bbb68a26" + }, + { + "checksum": "sha256:4403330cdf4f15d75d727e2ac8c3358ff6a13209b3395dfac2131984e443eb23" + }, + { + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "checksum": "sha256:72ff3a3f6c52849a40cb24f9694115a68cc939970a00c374b4c73b1e4c5dc20c" + }, + { + "checksum": "sha256:2e90748420a7d28b3063df04de129e79ea85310a8d9cf2faf0a2e7b8430307c8" + }, + { + "checksum": "sha256:14098d36fe4be983fac73d04aeacf0ed7977d962e760907b89e3f80b4ca46f3f" + }, + { + "checksum": "sha256:1b1fe43a375a21f4c3ccf04861c122fd519d4865b9c1abc7f1973b86a0252a06" + }, + { + "checksum": "sha256:c0025c0b08ed82c640fa470e62743aed17a33f7948ed0cc969892d7c149206b3" + }, + { + "checksum": "sha256:65dc391ab1c96d1009ef2e7706eabacd5cf84f2a47ea1cc87f6f5e2c1324b178" + }, + { + "checksum": "sha256:99fa92b5d1e0d335fb2bb961ef39988b50968350b899e8790cead73c9a0bec65" + }, + { + "checksum": "sha256:ec9adedf0d5d2d096acf4739e2eefab8095498037e13dac9b283e17a9c54259a" + }, + { + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "checksum": "sha256:b156691caa225f0025533a68eeb9a2cf3883062dd209ede9ec07727b358171cc" + }, + { + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "checksum": "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:98a589d7e1cdea9d974aa43f688e55333eed11ce7cb2037d45cc2e69bce579b3" + }, + { + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "checksum": "sha256:947b4e4eebec21501ca62e2a7ff9baae0e4e7c59584fbba4b6276a402cfbb45b" + }, + { + "checksum": "sha256:2cfcc3d6163dfaf7ce76998be992bd0b70dd7cbb838430cecf2aff04cd435d24" + }, + { + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "checksum": "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4" + }, + { + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "checksum": "sha256:6a2995eedf44e1404dc439768efad015a680b39230bf5e2a1d7a33a438434c43" + }, + { + "checksum": "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2" + }, + { + "checksum": "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b" + }, + { + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "checksum": "sha256:38affe91361bf56b84490d97c7e3f815965cf8d2bbb222c6c045af4bf2dff736" + }, + { + "checksum": "sha256:a143d66ae06409c70fe4323c52c4507a1d7247c59f21951b96279fd7ca173215" + }, + { + "checksum": "sha256:593d4df5b8de12ed0ec5a0935cb0bd966e27a631aa0806250ba9f67092ad737f" + }, + { + "checksum": "sha256:a260f793e49805b188908e2f30c4687abe4e023b20c28a85d10d2371556c3981" + }, + { + "checksum": "sha256:ddafccd3f010fc75da6de158b5a68fd672f8b3554ac403065490318ce2be05f3" + }, + { + "checksum": "sha256:42cd48bff06dee66716b6a6362d6469168d4657511fcf3bd16003c441dc88fea" + }, + { + "checksum": "sha256:9226efc49ff191d0d713446e8b28bb58ae4ab1cb64e34a6f7fc08af247202cdd" + }, + { + "checksum": "sha256:34b08ea266a4bbddffe8307693742c11a09c3dc2a9f271f95a7ab5c4f67ea3e3" + }, + { + "checksum": "sha256:871672b8a9ffbe887b32e736494c1f005795bc7ffda026c6a063ee0d28788709" + }, + { + "checksum": "sha256:b169780b212062e9b9564d7c033f0895f98955c42312f1a023e02277966916e6" + }, + { + "checksum": "sha256:bfe5c8ea12012936cc59981a10728e95d5fdadd3e893457af7a27c464d8cb6ba" + }, + { + "checksum": "sha256:474a66a4cf3d5a00286be40c15bad69ea1ac63a9424a1ff44f20a548a7686f7a" + }, + { + "checksum": "sha256:995a5401cd86404d14d08c0aeafeaa8da3f540b1806f9d0e233d75dec9e45c74" + }, + { + "checksum": "sha256:39e6bc1e8101e536066554702d5d6b25f8cad359fb5e02ac598cfdad56eafb6d" + }, + { + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "checksum": "sha256:4d54749c92887ab059c768ada265c0f64e292594846b183d1fdfa9b29fff3ac1" + }, + { + "checksum": "sha256:0f662be3013f7958961ae70400c7ed1fb4350c823881c123a16cbb2b6b8c8f6a" + }, + { + "checksum": "sha256:61498bdebac578394eae8667e16ad7393309f7144266d4331f4c17f276b15fe0" + }, + { + "checksum": "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28" + }, + { + "checksum": "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43" + }, + { + "checksum": "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362" + }, + { + "checksum": "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64" + }, + { + "checksum": "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835" + }, + { + "checksum": "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf" + }, + { + "checksum": "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b" + }, + { + "checksum": "sha256:e868499743c399baa6463fa64a2534a7d32f8e1cca7b1b47ec00c60b34250bfe" + }, + { + "checksum": "sha256:3edf7d29e530e6568416d4455e9fbaa511aba236c603da9928e689fae77b9874" + }, + { + "checksum": "sha256:b4e89276818abec218c909ca961db9bb2e09b1fc609ff280e6c05227143fa24d" + }, + { + "checksum": "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55" + }, + { + "checksum": "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21" + }, + { + "checksum": "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414" + }, + { + "checksum": "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca" + }, + { + "checksum": "sha256:15462b748aef3c565bcf4f849c1a21c1389a8ef5e7dae94e64718865a67d46a9" + }, + { + "checksum": "sha256:bed436b103161f7d8f61b617c84f3a7b5509f1d00c8425900a88c222b1331b31" + }, + { + "checksum": "sha256:ec26615d079ce89316352f813279f74a44871fa8c26fed8f369b9fe847aa5121" + }, + { + "checksum": "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a" + }, + { + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "checksum": "sha256:3d1dfe2e487e06efda133298a0fd0913f95b61c4373332db110b496aaadc8f05" + }, + { + "checksum": "sha256:d81c180c682e6014a0da09aaa144492e8cb03c1d61022513ba6db5bd3740f921" + }, + { + "checksum": "sha256:d80219a299035688091aa230b1c9169143c00c141c4f1ad8e75d176d22cc1cd0" + }, + { + "checksum": "sha256:4931d78c496eaaa8e6b6bbec2b4750da52b9fc7e989ae89b7c1fa2a6f40ff7fa" + }, + { + "checksum": "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42" + }, + { + "checksum": "sha256:00cc9cd4517cbb4ad99dbce63b40b700699523550cd7f8202948af28dbe2cd9e" + }, + { + "checksum": "sha256:5ef47eb6a042a13c902764907692c1068eb0f69153b47bc85792bef74bfa852b" + }, + { + "checksum": "sha256:5869b0b682ea0c2cc74a089818970d6c6bbf6e72e6229aed6ba680f15ce87347" + }, + { + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "vfs_type": "xfs", + "path": "/", + "options": "defaults" + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "kernel_opts": "ro net.ifnames=0", + "legacy": "i386-pc" + } + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "redhat": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "qcow2", + "filename": "disk.qcow2", + "size": 4294967296, + "ptuuid": "0x14fc63d2", + "pttype": "mbr", + "partitions": [ + { + "start": 2048, + "bootable": true, + "filesystem": { + "type": "xfs", + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/acl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-4.4.19-12.el8.x86_64.rpm", + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/brotli-1.0.6-2.el8.x86_64.rpm", + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-libs-1.0.6-26.el8.x86_64.rpm", + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chkconfig-1.13-2.el8.x86_64.rpm", + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-common-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cpio-2.12-8.el8.x86_64.rpm", + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-dicts-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-libs-2.3.3-1.el8.x86_64.rpm", + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/curl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.x86_64.rpm", + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-daemon-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-libs-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-tools-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-libs-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/diffutils-3.6-6.el8.x86_64.rpm", + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dosfstools-4.1-6.el8.x86_64.rpm", + "checksum": "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libelf-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libs-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/expat-2.2.5-4.el8.x86_64.rpm", + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-libs-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/filesystem-3.8-3.el8.x86_64.rpm", + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/findutils-4.6.0-20.el8.x86_64.rpm", + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/freetype-2.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-libs-2.9.7-12.el8.x86_64.rpm", + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gawk-4.2.1-1.el8.x86_64.rpm", + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-libs-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-libs-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib2-2.56.4-8.el8.x86_64.rpm", + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-all-langpacks-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-common-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gmp-6.1.2-10.el8.x86_64.rpm", + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-smime-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnutls-3.6.14-3.el8.x86_64.rpm", + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gpgme-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grep-3.1-6.el8.x86_64.rpm", + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-modules-2.02-84.el8.noarch.rpm", + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-extra-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-minimal-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grubby-8.40-41.el8.x86_64.rpm", + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gzip-1.9-9.el8.x86_64.rpm", + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hardlink-1.3-6.el8.x86_64.rpm", + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ima-evm-utils-1.1-5.el8.x86_64.rpm", + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/info-6.5-6.el8.x86_64.rpm", + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-libs-1.8.4-14.el8.x86_64.rpm", + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-c-0.13.1-0.2.el8.x86_64.rpm", + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-glib-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-2.0.4-10.el8.x86_64.rpm", + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-libs-1.5.10-6.el8.x86_64.rpm", + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-25-16.el8.x86_64.rpm", + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-libs-25-16.el8.x86_64.rpm", + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kpartx-0.8.4-2.el8.x86_64.rpm", + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/krb5-libs-1.18.2-3.el8.x86_64.rpm", + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libacl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.112", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libaio-0.3.112-1.el8.x86_64.rpm", + "checksum": "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libarchive-3.3.2-9.el8.x86_64.rpm", + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libassuan-2.5.1-3.el8.x86_64.rpm", + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libattr-2.4.48-3.el8.x86_64.rpm", + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libblkid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-2.26-4.el8.x86_64.rpm", + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-ng-0.7.9-5.el8.x86_64.rpm", + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcom_err-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcroco-0.6.12-4.el8.x86_64.rpm", + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcurl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-utils-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libevent-2.1.8-5.el8.x86_64.rpm", + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libfdisk-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libffi-3.1-22.el8.x86_64.rpm", + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcc-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcrypt-1.8.5-4.el8.x86_64.rpm", + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgomp-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgpg-error-1.31-1.el8.x86_64.rpm", + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libidn2-2.2.0-1.el8.x86_64.rpm", + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libksba-1.3.5-7.el8.x86_64.rpm", + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmetalink-0.1.3-7.el8.x86_64.rpm", + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd-2.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmount-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.x86_64.rpm", + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64.rpm", + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpcap-1.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.34", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpng-1.6.34-5.el8.x86_64.rpm", + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpsl-0.20.2-6.el8.x86_64.rpm", + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpwquality-1.4.0-9.el8.x86_64.rpm", + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librepo-1.12.0-1.el8.x86_64.rpm", + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libreport-filesystem-2.9.5-11.el8.x86_64.rpm", + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librhsm-0.0.3-3.el8.x86_64.rpm", + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libseccomp-2.4.3-1.el8.x86_64.rpm", + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsecret-0.18.6-1.el8.x86_64.rpm", + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-utils-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsemanage-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsepol-2.9-1.el8.x86_64.rpm", + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsigsegv-2.11-5.el8.x86_64.rpm", + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmartcols-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsolv-0.7.11-1.el8.x86_64.rpm", + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libss-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-0.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstdc++-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtasn1-4.13-3.el8.x86_64.rpm", + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtirpc-1.1.4-4.el8.x86_64.rpm", + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libunistring-0.9.9-3.el8.x86_64.rpm", + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libusbx-1.0.23-3.el8.x86_64.rpm", + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libutempter-1.1.6-14.el8.x86_64.rpm", + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuuid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-0.3.0-5.el8.x86_64.rpm", + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxcrypt-4.1.1-4.el8.x86_64.rpm", + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxml2-2.9.7-8.el8.x86_64.rpm", + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libyaml-0.1.7-5.el8.x86_64.rpm", + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libzstd-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lua-libs-5.3.4-11.el8.x86_64.rpm", + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lz4-libs-1.8.3-2.el8.x86_64.rpm", + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mpfr-3.1.6-1.el8.x86_64.rpm", + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nettle-3.4.1-2.el8.x86_64.rpm", + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/npth-1.5-4.el8.x86_64.rpm", + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openldap-2.4.46-15.el8.x86_64.rpm", + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-libs-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-pkcs11-0.4.10-2.el8.x86_64.rpm", + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/os-prober-1.74-6.el8.x86_64.rpm", + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pam-1.3.1-11.el8.x86_64.rpm", + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre-8.42-4.el8.x86_64.rpm", + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre2-10.32-2.el8.x86_64.rpm", + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pigz-2.4-4.el8.x86_64.rpm", + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-2.9-9.el8.x86_64.rpm", + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/popt-1.16-14.el8.x86_64.rpm", + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/procps-ng-3.3.15-2.el8.x86_64.rpm", + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gpg-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-hawkey-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libs-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/readline-7.0-10.el8.x86_64.rpm", + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-eula-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-build-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sed-4.5-2.el8.x86_64.rpm", + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shadow-utils-4.6-10.el8.x86_64.rpm", + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shared-mime-info-1.9-3.el8.x86_64.rpm", + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-libs-3.26.0-10.el8.x86_64.rpm", + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-239-36.el8.x86_64.rpm", + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-libs-239-36.el8.x86_64.rpm", + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-pam-239-36.el8.x86_64.rpm", + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-udev-239-36.el8.x86_64.rpm", + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tar-1.30-5.el8.x86_64.rpm", + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-lib-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/util-linux-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/which-2.21-12.el8.x86_64.rpm", + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xfsprogs-5.0.0-4.el8.x86_64.rpm", + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-libs-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/zlib-1.2.11-15.el8.x86_64.rpm", + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxkbcommon-0.9.1-1.el8.x86_64.rpm", + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/memstrack-0.1.8-1.el8.x86_64.rpm", + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pinentry-1.1.0-2.el8.x86_64.rpm", + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-unbound-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "name": "python36", + "epoch": 0, + "version": "3.6.8", + "release": "2.module+el8.1.0+3334+5cb623d7", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64.rpm", + "checksum": "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7" + }, + { + "name": "qemu-img", + "epoch": 15, + "version": "4.2.0", + "release": "29.module+el8.3.0+7212+401047e6", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64.rpm", + "checksum": "sha256:f2b58d2dfeb45318f8e9e67a96c4f02df69815149ce7b092233a02c0dea19f89" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/unbound-libs-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:0027700684ce09927aded1d2c5bb84028529141a6b418897bde37d4af348f8bb" + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-libnm-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:6d0dcbaa45457461dd5c4afe97689fa2baf5f95551bbe5e827a152dee545a51d" + }, + { + "name": "NetworkManager-team", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-team-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:a01bc8ab29f40d5e9f03929cee7a796804d63fda3c471054a67d1fd1e5577f6c" + }, + { + "name": "NetworkManager-tui", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-tui-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:4b8cd13404adac1a30a105e894a733f7c79bfac1a125b8cd095e6ba9c1d056f9" + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/acl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:cc3df9449002eacd595a73df52eb973d3b37e4c03d4669c7dce6ce7a26dabd6b" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "name": "authselect", + "epoch": 0, + "version": "1.2.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/authselect-1.2.1-2.el8.x86_64.rpm", + "checksum": "sha256:ad9b3b98ace87913e9487fceaae165faffb81e9c32400a72e08cc752cab0d037" + }, + { + "name": "authselect-libs", + "epoch": 0, + "version": "1.2.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/authselect-libs-1.2.1-2.el8.x86_64.rpm", + "checksum": "sha256:5bdb82a14d3604899324afc296aa7e7179a15788e2514348eea81b46934d6a3c" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-4.4.19-12.el8.x86_64.rpm", + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "name": "bind-export-libs", + "epoch": 32, + "version": "9.11.20", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bind-export-libs-9.11.20-3.el8.x86_64.rpm", + "checksum": "sha256:c24a1814f0fff7edcbd5cdca29571e8a79c5584e8ef300e89aef906b35c8a67d" + }, + { + "name": "biosdevname", + "epoch": 0, + "version": "0.7.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/biosdevname-0.7.3-2.el8.x86_64.rpm", + "checksum": "sha256:78926ec2c75db8bcbdd4f4fbd8c06b373f85bd7ecce0e6aac8c75dda95fcae2c" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/brotli-1.0.6-2.el8.x86_64.rpm", + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-libs-1.0.6-26.el8.x86_64.rpm", + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.13.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/c-ares-1.13.0-5.el8.x86_64.rpm", + "checksum": "sha256:2334cb78002aa30feeb11549d51e204aa868f5538a09957850082d7efb15b00f" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/checkpolicy-2.9-1.el8.x86_64.rpm", + "checksum": "sha256:a8808c053ffb7ccf826d80fdd458b6521f2cc63e55eb90d79a504fbb66c36cb0" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chkconfig-1.13-2.el8.x86_64.rpm", + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-common-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cpio-2.12-8.el8.x86_64.rpm", + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-dicts-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "name": "cronie", + "epoch": 0, + "version": "1.5.2", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cronie-1.5.2-4.el8.x86_64.rpm", + "checksum": "sha256:411d65fe9e463458af055d06a4a89a1d822d26049198615c0afc9741c426c77c" + }, + { + "name": "cronie-anacron", + "epoch": 0, + "version": "1.5.2", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cronie-anacron-1.5.2-4.el8.x86_64.rpm", + "checksum": "sha256:2a65cec3eb67ba7645dd97cf3f3811cd5fb06eea2526d36a683d3fdaa0f2825e" + }, + { + "name": "crontabs", + "epoch": 0, + "version": "1.11", + "release": "16.20150630git.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crontabs-1.11-16.20150630git.el8.noarch.rpm", + "checksum": "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-libs-2.3.3-1.el8.x86_64.rpm", + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/curl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.x86_64.rpm", + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-daemon-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "name": "dbus-glib", + "epoch": 0, + "version": "0.110", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-glib-0.110-2.el8.x86_64.rpm", + "checksum": "sha256:802263173d9c487fc3ca584cc2a5b7b7bb49ac0d12d9026b3246d50fd0888fb1" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-libs-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-tools-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-libs-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-client-4.3.6-41.el8.x86_64.rpm", + "checksum": "sha256:289e2a39b2a29163a29da35936d4b484fe356d0a6d519524023e79686daf501b" + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-common-4.3.6-41.el8.noarch.rpm", + "checksum": "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2" + }, + { + "name": "dhcp-libs", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-libs-4.3.6-41.el8.x86_64.rpm", + "checksum": "sha256:e0cde0185535bd50f7c5e5e2c0c19b5ab086b6bfa8cea95af9d56ffc81cb26b7" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/diffutils-3.6-6.el8.x86_64.rpm", + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "name": "dmidecode", + "epoch": 1, + "version": "3.2", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dmidecode-3.2-6.el8.x86_64.rpm", + "checksum": "sha256:686015c78247edec0a0f5e0d2cbbf02d9feea162e5967ed5b5be35d3951b1f3d" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dnf-plugin-subscription-manager", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugin-subscription-manager-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:c5e978963bda83e9321563bb18f69f3753f2eb510dfdafdc6c4e2856dc6b6302" + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugins-core-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-config-generic-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:40010441888b72dd077d4d6790f837236701b93c8b31da5dbf65c700fd2571fd" + }, + { + "name": "dracut-network", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-network-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:1faa85c12115426d8afc51c8bed2e71bf1dd87063e25052bcf85c17dbc0d9ea4" + }, + { + "name": "dracut-squash", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-squash-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:348b7d66a20015563489babbc3850928587575d0acde7c61d55480ebf0f3820d" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libelf-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libs-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "name": "ethtool", + "epoch": 2, + "version": "5.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ethtool-5.0-2.el8.x86_64.rpm", + "checksum": "sha256:0493fd81825df694be5d15685bfe4dc002de314d18f5ae47ccee769f65ea5013" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/expat-2.2.5-4.el8.x86_64.rpm", + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-libs-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/filesystem-3.8-3.el8.x86_64.rpm", + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/findutils-4.6.0-20.el8.x86_64.rpm", + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "name": "firewalld", + "epoch": 0, + "version": "0.8.2", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/firewalld-0.8.2-1.el8.noarch.rpm", + "checksum": "sha256:c5098f41849af65b808baac594539440fcdffea7afce4239eb41885eccfd67e2" + }, + { + "name": "firewalld-filesystem", + "epoch": 0, + "version": "0.8.2", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/firewalld-filesystem-0.8.2-1.el8.noarch.rpm", + "checksum": "sha256:769b1ac34ba3aa35337b734b8548dcf9e8b41476b9b2093756341bcbd5969a36" + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/freetype-2.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-libs-2.9.7-12.el8.x86_64.rpm", + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gawk-4.2.1-1.el8.x86_64.rpm", + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-libs-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-libs-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib2-2.56.4-8.el8.x86_64.rpm", + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-common-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "name": "glibc-langpack-en", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-langpack-en-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:879cb96ce1591886728a45bfb6dbd6fcf48a43757c42f5481019157037046b61" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gmp-6.1.2-10.el8.x86_64.rpm", + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-smime-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnutls-3.6.14-3.el8.x86_64.rpm", + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.56.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gobject-introspection-1.56.1-1.el8.x86_64.rpm", + "checksum": "sha256:1065049dbd53849d35db269a23be54148cbe481122381ab71b72f62e83816b26" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gpgme-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grep-3.1-6.el8.x86_64.rpm", + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "18.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/groff-base-1.22.3-18.el8.x86_64.rpm", + "checksum": "sha256:73c29baa2cd94f1ae6a1d1333818969a281b16dd4262f413ad284c5333719a4d" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-modules-2.02-84.el8.noarch.rpm", + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-extra-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-minimal-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grubby-8.40-41.el8.x86_64.rpm", + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gzip-1.9-9.el8.x86_64.rpm", + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hardlink-1.3-6.el8.x86_64.rpm", + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "name": "hdparm", + "epoch": 0, + "version": "9.54", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hdparm-9.54-2.el8.x86_64.rpm", + "checksum": "sha256:b446b1469bd535cf94e555525f40fa751b1343d89d589f3cff30ee2d7c38258e" + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.20", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hostname-3.20-6.el8.x86_64.rpm", + "checksum": "sha256:fdcc4180cae8fa83ca54188fc2f6796a1bc8d7eb7106163b98dd93d974b48cd1" + }, + { + "name": "hwdata", + "epoch": 0, + "version": "0.314", + "release": "8.5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hwdata-0.314-8.5.el8.noarch.rpm", + "checksum": "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ima-evm-utils-1.1-5.el8.x86_64.rpm", + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/info-6.5-6.el8.x86_64.rpm", + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.00.8", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/initscripts-10.00.8-1.el8.x86_64.rpm", + "checksum": "sha256:350657e984b1736bb4a8c9cc01b772517a4194467d6db84110c1cc42131f1cae" + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.2.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipcalc-0.2.4-4.el8.x86_64.rpm", + "checksum": "sha256:206de21c82d76de550bcc1959138472640b0a950a311b753203f5dfe5b201b7b" + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.3.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iproute-5.3.0-5.el8.x86_64.rpm", + "checksum": "sha256:4405d32322fd496c65f57a12b6037fd75b49957269dbf9cb0417b598162f7407" + }, + { + "name": "iprutils", + "epoch": 0, + "version": "2.4.19", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iprutils-2.4.19-1.el8.x86_64.rpm", + "checksum": "sha256:4ce17c90ad64c2ca85191caa990db8eb0aec7cde24a26a89294c5821cfd20e5f" + }, + { + "name": "ipset", + "epoch": 0, + "version": "7.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipset-7.1-1.el8.x86_64.rpm", + "checksum": "sha256:c193b87ad1690e81ca35ec1f1f7dff94f179907ed13d5b7936c189ff5f8f2bae" + }, + { + "name": "ipset-libs", + "epoch": 0, + "version": "7.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipset-libs-7.1-1.el8.x86_64.rpm", + "checksum": "sha256:3d807ee0bd43ba2cfbc5fa3678963fb706898bd41588a29330c315a9d88ab2a7" + }, + { + "name": "iptables", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-1.8.4-14.el8.x86_64.rpm", + "checksum": "sha256:f83dc47f0c2ac234e15d5687951285c23576fd2efcc615656c8585f2495456b6" + }, + { + "name": "iptables-ebtables", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-ebtables-1.8.4-14.el8.x86_64.rpm", + "checksum": "sha256:8716781f69e8f2bf3f171ed6a34a012f79dc76ce0bcfa318fa0b02d488173ee1" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-libs-1.8.4-14.el8.x86_64.rpm", + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "name": "iputils", + "epoch": 0, + "version": "20180629", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iputils-20180629-2.el8.x86_64.rpm", + "checksum": "sha256:a8961c50502aa02071c043a16f93399ac6794a058a0ef42be889abe60f35985b" + }, + { + "name": "irqbalance", + "epoch": 2, + "version": "1.4.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/irqbalance-1.4.0-4.el8.x86_64.rpm", + "checksum": "sha256:6844197fd8ffdb16cf94ab77709aa2954cb39512435a377401ebce340d06c7de" + }, + { + "name": "iwl100-firmware", + "epoch": 0, + "version": "39.31.5.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl100-firmware-39.31.5.1-99.el8.1.noarch.rpm", + "checksum": "sha256:cf6220736fdd005ba7c67ccb5d5d8a1d9c35718e3c13e79c80967866968d7344" + }, + { + "name": "iwl1000-firmware", + "epoch": 1, + "version": "39.31.5.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl1000-firmware-39.31.5.1-99.el8.1.noarch.rpm", + "checksum": "sha256:1bc038693be7ccd59674c478176c3badce4a56f785dd0690548b087bcc7adaa1" + }, + { + "name": "iwl105-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl105-firmware-18.168.6.1-99.el8.1.noarch.rpm", + "checksum": "sha256:959fcb0016788a2b1ee55f0801c1490b196416579bc9ac9da9e38786e6c78ff6" + }, + { + "name": "iwl135-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl135-firmware-18.168.6.1-99.el8.1.noarch.rpm", + "checksum": "sha256:204e4dbaf357e12ff041c1c203b2527f7d178905ebae53db3c12e57d28fcbf46" + }, + { + "name": "iwl2000-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl2000-firmware-18.168.6.1-99.el8.1.noarch.rpm", + "checksum": "sha256:72fe0e1837aa503049fada31c6e8ae73a4e550be2ddfd73303fb84e955fcc268" + }, + { + "name": "iwl2030-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl2030-firmware-18.168.6.1-99.el8.1.noarch.rpm", + "checksum": "sha256:f8c30f90610f8cc907009df99348a5e572f5598aed91280c15af604ba62687b2" + }, + { + "name": "iwl3160-firmware", + "epoch": 1, + "version": "25.30.13.0", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl3160-firmware-25.30.13.0-99.el8.1.noarch.rpm", + "checksum": "sha256:5cbe058e6d2177f88006fed866e6b1565d6024a12c311ae8eaa21008f76074b1" + }, + { + "name": "iwl5000-firmware", + "epoch": 0, + "version": "8.83.5.1_1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl5000-firmware-8.83.5.1_1-99.el8.1.noarch.rpm", + "checksum": "sha256:b55b77fb38d84685cef6638240daa54235fce156176c820a3c3b980bf414c5f4" + }, + { + "name": "iwl5150-firmware", + "epoch": 0, + "version": "8.24.2.2", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl5150-firmware-8.24.2.2-99.el8.1.noarch.rpm", + "checksum": "sha256:252d46d58e0c02cbe2d2485488bd63ea7129964643787557eae832102541f84f" + }, + { + "name": "iwl6000-firmware", + "epoch": 0, + "version": "9.221.4.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl6000-firmware-9.221.4.1-99.el8.1.noarch.rpm", + "checksum": "sha256:56cc340c88cabacd9a329f80edee141154dbf84808894e43a937247394623cf0" + }, + { + "name": "iwl6000g2a-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl6000g2a-firmware-18.168.6.1-99.el8.1.noarch.rpm", + "checksum": "sha256:950b6b41580f4c35a108345c1c8d9d3930cc95a2c4fe4b726f02bce67532151d" + }, + { + "name": "iwl6050-firmware", + "epoch": 0, + "version": "41.28.5.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl6050-firmware-41.28.5.1-99.el8.1.noarch.rpm", + "checksum": "sha256:8eb3370fe641e329b03838e560f45ee290b273dcccfa182d97ad2dbff59b47fd" + }, + { + "name": "iwl7260-firmware", + "epoch": 1, + "version": "25.30.13.0", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl7260-firmware-25.30.13.0-99.el8.1.noarch.rpm", + "checksum": "sha256:1d28eaeaa59c48e4193c709dd2a6301c2f8701138164c05371a0d8f235d14c9c" + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.11", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/jansson-2.11-3.el8.x86_64.rpm", + "checksum": "sha256:39e59e9a2460e3b6fe147501e79a57042f161c217963be212359031bb8b18daa" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-c-0.13.1-0.2.el8.x86_64.rpm", + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-glib-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-2.0.4-10.el8.x86_64.rpm", + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "kernel", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:eb5e29df2e7f803a62769aa19c60959ee7d368cd51397e00ebdbedba7d2d4768" + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-core-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:76ca09c73360f48d4b6fe4d4ee0aa974ef53531222df8e363d8006ec469051cf" + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-modules-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:97c8af6f58e3d14317036bd3ed2cbc498803c91c55b9dc0e8f0fddea7ac929e3" + }, + { + "name": "kernel-tools", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-tools-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:af495353f000008aab42640530c0c9005aaf60f0d4b4cf1a9b66b07bfc5b5881" + }, + { + "name": "kernel-tools-libs", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-tools-libs-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:4882ff53265bdeabb69f1ac9c585454b28ae799ab31fa72c9eb10bdbe1f41d9a" + }, + { + "name": "kexec-tools", + "epoch": 0, + "version": "2.0.20", + "release": "29.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kexec-tools-2.0.20-29.el8.x86_64.rpm", + "checksum": "sha256:948e61e32986303f12f8dbe40bc44674287b3906a54dadae5e3dfd2ccba88fac" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-libs-1.5.10-6.el8.x86_64.rpm", + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-25-16.el8.x86_64.rpm", + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-libs-25-16.el8.x86_64.rpm", + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kpartx-0.8.4-2.el8.x86_64.rpm", + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/krb5-libs-1.18.2-3.el8.x86_64.rpm", + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "name": "less", + "epoch": 0, + "version": "530", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/less-530-1.el8.x86_64.rpm", + "checksum": "sha256:68362500ad574eb2df43a3d260ab8d0f3ce1ae5f34e66d71f2478fef8e17cb4a" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libacl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libarchive-3.3.2-9.el8.x86_64.rpm", + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libassuan-2.5.1-3.el8.x86_64.rpm", + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libattr-2.4.48-3.el8.x86_64.rpm", + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libbasicobjects-0.1.1-39.el8.x86_64.rpm", + "checksum": "sha256:cac59a5629e7229653c29c0d575bd8f8c2d3774474615eb65615109afb151981" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libblkid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-2.26-4.el8.x86_64.rpm", + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-ng-0.7.9-5.el8.x86_64.rpm", + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcollection-0.7.0-39.el8.x86_64.rpm", + "checksum": "sha256:ecd53a50b4cb20dd1597f45ab4a9cba1fd7793a6000fb2114421687779738672" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcom_err-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcroco-0.6.12-4.el8.x86_64.rpm", + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcurl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "name": "libdaemon", + "epoch": 0, + "version": "0.14", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdaemon-0.14-15.el8.x86_64.rpm", + "checksum": "sha256:798420bbda79fd0b9312abac25efad6b28957c512497f37f4beddad5d67dd66a" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-utils-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdhash-0.5.0-39.el8.x86_64.rpm", + "checksum": "sha256:50c0d1828a9e8db638c09d88afb0828d98349027ce498ee7df74e7ff6052ac1d" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "23.20170329cvs.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libedit-3.1-23.20170329cvs.el8.x86_64.rpm", + "checksum": "sha256:0391105afa53c9503b59591615bd7c98e2f7a4cd94ff4fd1451c4234522f3880" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libevent-2.1.8-5.el8.x86_64.rpm", + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libfdisk-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libffi-3.1-22.el8.x86_64.rpm", + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcc-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcrypt-1.8.5-4.el8.x86_64.rpm", + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgomp-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgpg-error-1.31-1.el8.x86_64.rpm", + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "name": "libgudev", + "epoch": 0, + "version": "232", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgudev-232-4.el8.x86_64.rpm", + "checksum": "sha256:713ec69b972a8e88622b3fcd3b84fccdbd6c333b68b6c52151c2350edad2576a" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libidn2-2.2.0-1.el8.x86_64.rpm", + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libini_config-1.3.1-39.el8.x86_64.rpm", + "checksum": "sha256:c46ee71ba426e0964b2264bdf18fc4cff4d7815206c9e8a471bdf678e65c24b9" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libksba-1.3.5-7.el8.x86_64.rpm", + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.1.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libldb-2.1.3-2.el8.x86_64.rpm", + "checksum": "sha256:231bc0eeb8fb127f0a4da5a4da1edd226067d5029a0b4fd6ef72c246ccfc31c0" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmetalink-0.1.3-7.el8.x86_64.rpm", + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmnl-1.0.4-6.el8.x86_64.rpm", + "checksum": "sha256:9c5594fcac97c0f8813d7a188e2368e3b1095025fc4a0ecbd5d17e54c0c93f97" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd-2.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmount-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libndp-1.7-3.el8.x86_64.rpm", + "checksum": "sha256:53fb6834e2e439e79225d957c4643922da74836417b5558d0c2943b546b26e57" + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.6", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnetfilter_conntrack-1.0.6-5.el8.x86_64.rpm", + "checksum": "sha256:74d05cb72dc6740be73480e68b15b209d7e7a2bf7d7d54e0d3a2dc261ce64e4b" + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "13.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnfnetlink-1.0.1-13.el8.x86_64.rpm", + "checksum": "sha256:61cf7338e12188f787c7162e2cd669c895e4e2cf4ae86c9debcd56fd3b8a8322" + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.3.3", + "release": "35.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnfsidmap-2.3.3-35.el8.x86_64.rpm", + "checksum": "sha256:2eed977380b41885d4f7ad33e122abbb9ea7391c1255d182451efd457688c8b2" + }, + { + "name": "libnftnl", + "epoch": 0, + "version": "1.1.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnftnl-1.1.5-4.el8.x86_64.rpm", + "checksum": "sha256:b05032d419c29bfbe60b3495dab9b368865e2154b1b25d87b1e4f5b379226747" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.x86_64.rpm", + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-3.5.0-1.el8.x86_64.rpm", + "checksum": "sha256:0129696c208f60326723c650295167b0600791ccb2e9c3d446c4caf9adecb3d7" + }, + { + "name": "libnl3-cli", + "epoch": 0, + "version": "3.5.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-cli-3.5.0-1.el8.x86_64.rpm", + "checksum": "sha256:ac2800369b7f4dc05a8fec452eabedf02f153c11e188a1e80157e35592305690" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64.rpm", + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpath_utils-0.2.1-39.el8.x86_64.rpm", + "checksum": "sha256:2eba2dc51974271244bdeaaf17c6e8fac3c35b62914b680076bdc4a32272df01" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpcap-1.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "name": "libpciaccess", + "epoch": 0, + "version": "0.14", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpciaccess-0.14-1.el8.x86_64.rpm", + "checksum": "sha256:831a51570e09368c7b720567827b74a46ed5a01c7c39906c185c385bc50079d9" + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpipeline-1.5.0-2.el8.x86_64.rpm", + "checksum": "sha256:539abfc369a17023658486f7b4a48c8db159cc4d617b27da256ddac6e15ea687" + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.34", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpng-1.6.34-5.el8.x86_64.rpm", + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpsl-0.20.2-6.el8.x86_64.rpm", + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpwquality-1.4.0-9.el8.x86_64.rpm", + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libref_array-0.1.5-39.el8.x86_64.rpm", + "checksum": "sha256:507442831068c749ba21b22bd96993a1a2a6c74dd53c55f34c7f81a21554c82d" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librepo-1.12.0-1.el8.x86_64.rpm", + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libreport-filesystem-2.9.5-11.el8.x86_64.rpm", + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librhsm-0.0.3-3.el8.x86_64.rpm", + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libseccomp-2.4.3-1.el8.x86_64.rpm", + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsecret-0.18.6-1.el8.x86_64.rpm", + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-utils-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsemanage-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsepol-2.9-1.el8.x86_64.rpm", + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsigsegv-2.11-5.el8.x86_64.rpm", + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmartcols-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsolv-0.7.11-1.el8.x86_64.rpm", + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libss-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-0.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_autofs-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:d186f806ed9c841a385f7acf194c20b78616396414da9131982e469f065619b8" + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_certmap-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:beea3f8c88b9c0a74d75622aa71467f51c457d1acf0ff557f7cd0e2ae3dfafe3" + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_idmap-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:c4279ad2915f4ce1806c4121675e49d2b525bb6e977d487dc2ad138fce8c2734" + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_nss_idmap-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:7c292b3bb74d12d77e1e22221c55696a0c5f50304040b3a706c2164d5b6a42e4" + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_sudo-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:44e81330b185085f871e9fbf8fae27c8de411600c032aca371dc6d39a3e261da" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstdc++-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "name": "libsysfs", + "epoch": 0, + "version": "2.1.0", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsysfs-2.1.0-24.el8.x86_64.rpm", + "checksum": "sha256:3a1058c6ba468722090a74002a3239161771b0d8b444975bff891afd45bb672a" + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtalloc-2.3.1-2.el8.x86_64.rpm", + "checksum": "sha256:3b087daa7e9de69c051f22f9df1ef00867ffddd99357bc3a215ccde76a13c02f" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtasn1-4.13-3.el8.x86_64.rpm", + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtdb-1.4.3-1.el8.x86_64.rpm", + "checksum": "sha256:4ed1a6294eea09a3a7e15683267ca5d383e4c2b27fd57fe05d2666e0e6c3d26f" + }, + { + "name": "libteam", + "epoch": 0, + "version": "1.29", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libteam-1.29-5.el8.x86_64.rpm", + "checksum": "sha256:7c89c2d055013779252c12643e8f0b3731f4dd5e2b61d9d81233a0ee298abb36" + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.2", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtevent-0.10.2-2.el8.x86_64.rpm", + "checksum": "sha256:860676d4231afa3e6b23933d8dd65e5f7f5823910791e6481d2440ae4ec64c53" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtirpc-1.1.4-4.el8.x86_64.rpm", + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libunistring-0.9.9-3.el8.x86_64.rpm", + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libusbx-1.0.23-3.el8.x86_64.rpm", + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "23.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuser-0.62-23.el8.x86_64.rpm", + "checksum": "sha256:b2dcbd3b81196b16e33054d31c0129c432cf59fb591035845cc299bbb46000c1" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libutempter-1.1.6-14.el8.x86_64.rpm", + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuuid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-0.3.0-5.el8.x86_64.rpm", + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxcrypt-4.1.1-4.el8.x86_64.rpm", + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxml2-2.9.7-8.el8.x86_64.rpm", + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libyaml-0.1.7-5.el8.x86_64.rpm", + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libzstd-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20200619", + "release": "99.git3890db36.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/linux-firmware-20200619-99.git3890db36.el8.noarch.rpm", + "checksum": "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9" + }, + { + "name": "logrotate", + "epoch": 0, + "version": "3.14.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/logrotate-3.14.0-4.el8.x86_64.rpm", + "checksum": "sha256:37504d807ac0bb6c429d7be9c636f7b755464023511d856846dbb9deb8f6a76d" + }, + { + "name": "lshw", + "epoch": 0, + "version": "B.02.19.2", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lshw-B.02.19.2-2.el8.x86_64.rpm", + "checksum": "sha256:b59cdea55a890a10f484d8596e244a18455ee82920c7e466991801d24c4718cd" + }, + { + "name": "lsscsi", + "epoch": 0, + "version": "0.30", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lsscsi-0.30-1.el8.x86_64.rpm", + "checksum": "sha256:b9a17114d551cc8259eea6996b6871ec36675330fdb1eb16db529e6f8a9c34d5" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lua-libs-5.3.4-11.el8.x86_64.rpm", + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lz4-libs-1.8.3-2.el8.x86_64.rpm", + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "name": "lzo", + "epoch": 0, + "version": "2.08", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lzo-2.08-14.el8.x86_64.rpm", + "checksum": "sha256:a3dedf8c077b4656d3cd4ef641e696397a3fff83ee8b14f0e3fc69d7c10cebcf" + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.7.6.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/man-db-2.7.6.1-17.el8.x86_64.rpm", + "checksum": "sha256:7b6856dc4dc1d88d9c3c9597fb824b5776af59f045087bdb2713d64045216a36" + }, + { + "name": "microcode_ctl", + "epoch": 4, + "version": "20200609", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/microcode_ctl-20200609-2.el8.x86_64.rpm", + "checksum": "sha256:0e4b7687f0c62f4e336223b939f6cb169c8dac49eee23c53fd919e58d8f989df" + }, + { + "name": "mozjs60", + "epoch": 0, + "version": "60.9.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mozjs60-60.9.0-4.el8.x86_64.rpm", + "checksum": "sha256:fd9e5c379cd3482d32686fb13881827a39037e7a7afa92c62d58c1f05fcb797f" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mpfr-3.1.6-1.el8.x86_64.rpm", + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.52.20160912git.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/net-tools-2.0-0.52.20160912git.el8.x86_64.rpm", + "checksum": "sha256:e67a1c5f02c3e6fdccaad455fddf0dfdf812069da87d841a22df910bf361cfb9" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nettle-3.4.1-2.el8.x86_64.rpm", + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "name": "newt", + "epoch": 0, + "version": "0.52.20", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/newt-0.52.20-11.el8.x86_64.rpm", + "checksum": "sha256:eb9b37827f1851c8a2683cd86026fda90847afe90d51ea746d7cd5f49f6f90d1" + }, + { + "name": "nftables", + "epoch": 1, + "version": "0.9.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nftables-0.9.3-14.el8.x86_64.rpm", + "checksum": "sha256:5ac24d7513e9daa137064985cd8a8774c94aa8a6c07e2814d0c56ddde33fcc8d" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/npth-1.5-4.el8.x86_64.rpm", + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "name": "numactl-libs", + "epoch": 0, + "version": "2.0.12", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/numactl-libs-2.0.12-11.el8.x86_64.rpm", + "checksum": "sha256:d94a39545f8570ba2d199e4892cfe05ebd5ea6e4e8322790b4f960bf92da5f09" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openldap-2.4.46-15.el8.x86_64.rpm", + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-8.0p1-5.el8.x86_64.rpm", + "checksum": "sha256:b5fc6f35798edccd0390e54fce40290936c3699227e79cc6d1a42d803358fd03" + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-clients-8.0p1-5.el8.x86_64.rpm", + "checksum": "sha256:3730f3f8d3332836f278250408891cb097379a5d7745fe698b1d418e9e13d335" + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-server-8.0p1-5.el8.x86_64.rpm", + "checksum": "sha256:fd7bc748b59a48a1ba803dc893be729c8624a4141e23fcef126a401857bbb455" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-libs-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-pkcs11-0.4.10-2.el8.x86_64.rpm", + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/os-prober-1.74-6.el8.x86_64.rpm", + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pam-1.3.1-11.el8.x86_64.rpm", + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "name": "parted", + "epoch": 0, + "version": "3.2", + "release": "38.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/parted-3.2-38.el8.x86_64.rpm", + "checksum": "sha256:22585bd5d69c5e0a06fe00a6844da2e5d311512374c1d176f17f41caab7e121f" + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/passwd-0.80-3.el8.x86_64.rpm", + "checksum": "sha256:7c0b2b064dad700cba2754b46f483e3e59aaf798740470df1daad3d5239fb893" + }, + { + "name": "pciutils-libs", + "epoch": 0, + "version": "3.6.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pciutils-libs-3.6.4-2.el8.x86_64.rpm", + "checksum": "sha256:da5606af487682acce52799418a97614d0f6e6b72d15c88c4f6f2a076f384dac" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre-8.42-4.el8.x86_64.rpm", + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre2-10.32-2.el8.x86_64.rpm", + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pigz-2.4-4.el8.x86_64.rpm", + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-2.9-9.el8.x86_64.rpm", + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "name": "polkit", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-0.115-11.el8.x86_64.rpm", + "checksum": "sha256:8af00d4b0857240310156e05123e07795e6573da7c1fe9e7fd83b51f13971725" + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-libs-0.115-11.el8.x86_64.rpm", + "checksum": "sha256:441efa6f0b9a9905ef11ec987d6db89e7dba2857060020c4554e32db3e59fce5" + }, + { + "name": "polkit-pkla-compat", + "epoch": 0, + "version": "0.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-pkla-compat-0.1-12.el8.x86_64.rpm", + "checksum": "sha256:9a9ca6857f517f1249d2eb496fe904590d6203e4a9547a28e0b23f21c4cae24a" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/popt-1.16-14.el8.x86_64.rpm", + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "name": "prefixdevname", + "epoch": 0, + "version": "0.1.0", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/prefixdevname-0.1.0-6.el8.x86_64.rpm", + "checksum": "sha256:8d371e753071edc796d2eadb8278980290511be6279fdf46649c81b859497d6a" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/procps-ng-3.3.15-2.el8.x86_64.rpm", + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-asn1crypto", + "epoch": 0, + "version": "0.24.0", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-asn1crypto-0.24.0-3.el8.noarch.rpm", + "checksum": "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34" + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:8f00781eb679c6baf359099fa2a672ffccfc8e43b7c03c1dc635619cb25ff01d" + }, + { + "name": "python3-cffi", + "epoch": 0, + "version": "1.11.5", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-cffi-1.11.5-5.el8.x86_64.rpm", + "checksum": "sha256:13ffce0597b689dd53f55ea0d03dd6d013246634f5c6cbcef51fa549d9734b29" + }, + { + "name": "python3-chardet", + "epoch": 0, + "version": "3.0.4", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-chardet-3.0.4-7.el8.noarch.rpm", + "checksum": "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786" + }, + { + "name": "python3-configobj", + "epoch": 0, + "version": "5.0.6", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-configobj-5.0.6-11.el8.noarch.rpm", + "checksum": "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367" + }, + { + "name": "python3-cryptography", + "epoch": 0, + "version": "2.3", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-cryptography-2.3-3.el8.x86_64.rpm", + "checksum": "sha256:7a7a238ea529165348acef1d1a20c1d47c1ef5838d8501f3879bb130c1b73e06" + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.6.1", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm", + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.4", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dbus-1.2.4-15.el8.x86_64.rpm", + "checksum": "sha256:5a85222c8e9997a8b609b915a8fbae756de9b9bff732db852fb15fe0524f2d86" + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.2.1", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm", + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "name": "python3-dmidecode", + "epoch": 0, + "version": "3.12.2", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dmidecode-3.12.2-15.el8.x86_64.rpm", + "checksum": "sha256:d2b777ea98ee644997029994136723cf4fa78e97afeaceab39f76b545b51792b" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-plugins-core-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87" + }, + { + "name": "python3-ethtool", + "epoch": 0, + "version": "0.14", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ethtool-0.14-3.el8.x86_64.rpm", + "checksum": "sha256:20dec130e4fd0a2146443791ca7ade6e079cea691d93711813d5f483b691c55a" + }, + { + "name": "python3-firewall", + "epoch": 0, + "version": "0.8.2", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-firewall-0.8.2-1.el8.noarch.rpm", + "checksum": "sha256:c9b3c6dcb4133c3051e3f75978f994aae4c0ad84dd1abbae7fcba497ee524603" + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.28.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gobject-base-3.28.3-2.el8.x86_64.rpm", + "checksum": "sha256:86d305a1466a596f8b436561d674f2510f268bed9e73f56c87da1dd120f99c18" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gpg-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-hawkey-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "name": "python3-idna", + "epoch": 0, + "version": "2.5", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-idna-2.5-5.el8.noarch.rpm", + "checksum": "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20" + }, + { + "name": "python3-iniparse", + "epoch": 0, + "version": "0.4", + "release": "31.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm", + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "name": "python3-inotify", + "epoch": 0, + "version": "0.9.6", + "release": "13.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm", + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "name": "python3-jwt", + "epoch": 0, + "version": "1.6.1", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-jwt-1.6.1-2.el8.noarch.rpm", + "checksum": "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "name": "python3-librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-librepo-1.12.0-1.el8.x86_64.rpm", + "checksum": "sha256:4ca553b0c0f6dc130e05e2011cdf1f52132e8f70bd93be8eee4e415b2cac0c56" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libs-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libselinux-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:9487bff6bb16e7326c8b805751580b4593220ba19b06515c69de83fee8e3bb1f" + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libsemanage-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:09fc3154e76c8ee25b3982c15f3bc455017262c3df5af84075859dcbf79e4f82" + }, + { + "name": "python3-libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libxml2-2.9.7-8.el8.x86_64.rpm", + "checksum": "sha256:4ccbefcbe75decfef38ccae5d8ff92ba6b00e8232b64ec46ae0c0be8ae20ec50" + }, + { + "name": "python3-linux-procfs", + "epoch": 0, + "version": "0.6.2", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-linux-procfs-0.6.2-2.el8.noarch.rpm", + "checksum": "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f" + }, + { + "name": "python3-nftables", + "epoch": 1, + "version": "0.9.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-nftables-0.9.3-14.el8.x86_64.rpm", + "checksum": "sha256:08bf2e898b5775317d04266f4598eddbe06c424a3694b1534e3ceff088e2e8ca" + }, + { + "name": "python3-oauthlib", + "epoch": 0, + "version": "2.1.0", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-oauthlib-2.1.0-1.el8.noarch.rpm", + "checksum": "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6" + }, + { + "name": "python3-perf", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-perf-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:18d419718a99851370262584bec1b27d60cbd08845b50fbe97e1a56b71cd5ea2" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-ply", + "epoch": 0, + "version": "3.9", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ply-3.9-8.el8.noarch.rpm", + "checksum": "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9" + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-policycoreutils-2.9-9.el8.noarch.rpm", + "checksum": "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42" + }, + { + "name": "python3-pycparser", + "epoch": 0, + "version": "2.14", + "release": "14.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pycparser-2.14-14.el8.noarch.rpm", + "checksum": "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf" + }, + { + "name": "python3-pysocks", + "epoch": 0, + "version": "1.6.8", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pysocks-1.6.8-3.el8.noarch.rpm", + "checksum": "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280" + }, + { + "name": "python3-pyudev", + "epoch": 0, + "version": "0.21.0", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pyudev-0.21.0-7.el8.noarch.rpm", + "checksum": "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde" + }, + { + "name": "python3-pyyaml", + "epoch": 0, + "version": "3.12", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pyyaml-3.12-12.el8.x86_64.rpm", + "checksum": "sha256:de870435340bf30620406df41b79e43adaf7d0a277db1635a0fae710df993fc0" + }, + { + "name": "python3-requests", + "epoch": 0, + "version": "2.20.0", + "release": "2.1.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-requests-2.20.0-2.1.el8_1.noarch.rpm", + "checksum": "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "name": "python3-schedutils", + "epoch": 0, + "version": "0.6", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-schedutils-0.6-6.el8.x86_64.rpm", + "checksum": "sha256:09ca7b05e26f93d35ac299dbcd865b65ec3a3d2654e1da87d2c3c0462dbe6e4a" + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.3.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setools-4.3.0-1.el8.x86_64.rpm", + "checksum": "sha256:cb8e7909d58206223ad7108a850218360a6b1e2147d97bc94097962dc820d0de" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.11.0", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm", + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "name": "python3-slip", + "epoch": 0, + "version": "0.6.4", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-slip-0.6.4-11.el8.noarch.rpm", + "checksum": "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb" + }, + { + "name": "python3-slip-dbus", + "epoch": 0, + "version": "0.6.4", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-slip-dbus-0.6.4-11.el8.noarch.rpm", + "checksum": "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d" + }, + { + "name": "python3-subscription-manager-rhsm", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-subscription-manager-rhsm-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:0f3b084d947bc246fe68822129b8ae1294c4187270a19f0966282baf75b34dc6" + }, + { + "name": "python3-syspurpose", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-syspurpose-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:206cba480b58c70348584010d547d21bcd84c6094fd3980e22c6b640da12704c" + }, + { + "name": "python3-urllib3", + "epoch": 0, + "version": "1.24.2", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-urllib3-1.24.2-4.el8.noarch.rpm", + "checksum": "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/readline-7.0-10.el8.x86_64.rpm", + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-eula-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "name": "rng-tools", + "epoch": 0, + "version": "6.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rng-tools-6.8-3.el8.x86_64.rpm", + "checksum": "sha256:9d9d1bdfba4cd852f90232ebe2c4247e7b3a88c4476578c820788a91d6838e55" + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "22.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rootfiles-8.1-22.el8.noarch.rpm", + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-build-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sed-4.5-2.el8.x86_64.rpm", + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "sg3_utils", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sg3_utils-1.44-5.el8.x86_64.rpm", + "checksum": "sha256:398c1abc82097370f46e6fdf4dae63870e1f767b24d0130c79ed67ea3a67233a" + }, + { + "name": "sg3_utils-libs", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sg3_utils-libs-1.44-5.el8.x86_64.rpm", + "checksum": "sha256:671852e4f32de6278dd384d35d1dc799ab5d3e8ef718e89e516452cbcba068f0" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shadow-utils-4.6-10.el8.x86_64.rpm", + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shared-mime-info-1.9-3.el8.x86_64.rpm", + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "name": "slang", + "epoch": 0, + "version": "2.3.2", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/slang-2.3.2-3.el8.x86_64.rpm", + "checksum": "sha256:efa20ae5eca5860656d0131086470cb8d5c3a1ae2819301e7d015f06bbb68a26" + }, + { + "name": "snappy", + "epoch": 0, + "version": "1.1.7", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/snappy-1.1.7-5.el8.x86_64.rpm", + "checksum": "sha256:4403330cdf4f15d75d727e2ac8c3358ff6a13209b3395dfac2131984e443eb23" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-libs-3.26.0-10.el8.x86_64.rpm", + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "name": "squashfs-tools", + "epoch": 0, + "version": "4.3", + "release": "19.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/squashfs-tools-4.3-19.el8.x86_64.rpm", + "checksum": "sha256:72ff3a3f6c52849a40cb24f9694115a68cc939970a00c374b4c73b1e4c5dc20c" + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-client-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:2e90748420a7d28b3063df04de129e79ea85310a8d9cf2faf0a2e7b8430307c8" + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-common-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:14098d36fe4be983fac73d04aeacf0ed7977d962e760907b89e3f80b4ca46f3f" + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-kcm-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:1b1fe43a375a21f4c3ccf04861c122fd519d4865b9c1abc7f1973b86a0252a06" + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-nfs-idmap-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:c0025c0b08ed82c640fa470e62743aed17a33f7948ed0cc969892d7c149206b3" + }, + { + "name": "subscription-manager", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:65dc391ab1c96d1009ef2e7706eabacd5cf84f2a47ea1cc87f6f5e2c1324b178" + }, + { + "name": "subscription-manager-rhsm-certificates", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-rhsm-certificates-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:99fa92b5d1e0d335fb2bb961ef39988b50968350b899e8790cead73c9a0bec65" + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.8.29", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sudo-1.8.29-6.el8.x86_64.rpm", + "checksum": "sha256:ec9adedf0d5d2d096acf4739e2eefab8095498037e13dac9b283e17a9c54259a" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-239-36.el8.x86_64.rpm", + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-libs-239-36.el8.x86_64.rpm", + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-pam-239-36.el8.x86_64.rpm", + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-udev-239-36.el8.x86_64.rpm", + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "name": "teamd", + "epoch": 0, + "version": "1.29", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/teamd-1.29-5.el8.x86_64.rpm", + "checksum": "sha256:b156691caa225f0025533a68eeb9a2cf3883062dd209ede9ec07727b358171cc" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-lib-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "name": "tuned", + "epoch": 0, + "version": "2.14.0", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tuned-2.14.0-2.el8.noarch.rpm", + "checksum": "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "usermode", + "epoch": 0, + "version": "1.113", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/usermode-1.113-1.el8.x86_64.rpm", + "checksum": "sha256:98a589d7e1cdea9d974aa43f688e55333eed11ce7cb2037d45cc2e69bce579b3" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/util-linux-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.0.1763", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/vim-minimal-8.0.1763-15.el8.x86_64.rpm", + "checksum": "sha256:947b4e4eebec21501ca62e2a7ff9baae0e4e7c59584fbba4b6276a402cfbb45b" + }, + { + "name": "virt-what", + "epoch": 0, + "version": "1.18", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/virt-what-1.18-6.el8.x86_64.rpm", + "checksum": "sha256:2cfcc3d6163dfaf7ce76998be992bd0b70dd7cbb838430cecf2aff04cd435d24" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/which-2.21-12.el8.x86_64.rpm", + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xfsprogs-5.0.0-4.el8.x86_64.rpm", + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-libs-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/yum-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/zlib-1.2.11-15.el8.x86_64.rpm", + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "name": "alsa-lib", + "epoch": 0, + "version": "1.2.3.2", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/alsa-lib-1.2.3.2-1.el8.x86_64.rpm", + "checksum": "sha256:6a2995eedf44e1404dc439768efad015a680b39230bf5e2a1d7a33a438434c43" + }, + { + "name": "cloud-init", + "epoch": 0, + "version": "19.4", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cloud-init-19.4-7.el8.noarch.rpm", + "checksum": "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2" + }, + { + "name": "dnf-plugin-spacewalk", + "epoch": 0, + "version": "2.8.5", + "release": "11.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b" + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm", + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm", + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "name": "langpacks-en", + "epoch": 0, + "version": "1.0", + "release": "12.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/langpacks-en-1.0-12.el8.noarch.rpm", + "checksum": "sha256:38affe91361bf56b84490d97c7e3f815965cf8d2bbb222c6c045af4bf2dff736" + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libX11-1.6.8-3.el8.x86_64.rpm", + "checksum": "sha256:a143d66ae06409c70fe4323c52c4507a1d7247c59f21951b96279fd7ca173215" + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.8", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libX11-common-1.6.8-3.el8.noarch.rpm", + "checksum": "sha256:593d4df5b8de12ed0ec5a0935cb0bd966e27a631aa0806250ba9f67092ad737f" + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libXau-1.0.9-3.el8.x86_64.rpm", + "checksum": "sha256:a260f793e49805b188908e2f30c4687abe4e023b20c28a85d10d2371556c3981" + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libXext-1.3.4-1.el8.x86_64.rpm", + "checksum": "sha256:ddafccd3f010fc75da6de158b5a68fd672f8b3554ac403065490318ce2be05f3" + }, + { + "name": "libXfixes", + "epoch": 0, + "version": "5.0.3", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libXfixes-5.0.3-7.el8.x86_64.rpm", + "checksum": "sha256:42cd48bff06dee66716b6a6362d6469168d4657511fcf3bd16003c441dc88fea" + }, + { + "name": "libXinerama", + "epoch": 0, + "version": "1.1.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libXinerama-1.1.4-1.el8.x86_64.rpm", + "checksum": "sha256:9226efc49ff191d0d713446e8b28bb58ae4ab1cb64e34a6f7fc08af247202cdd" + }, + { + "name": "libXrandr", + "epoch": 0, + "version": "1.5.2", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libXrandr-1.5.2-1.el8.x86_64.rpm", + "checksum": "sha256:34b08ea266a4bbddffe8307693742c11a09c3dc2a9f271f95a7ab5c4f67ea3e3" + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libXrender-0.9.10-7.el8.x86_64.rpm", + "checksum": "sha256:871672b8a9ffbe887b32e736494c1f005795bc7ffda026c6a063ee0d28788709" + }, + { + "name": "libdrm", + "epoch": 0, + "version": "2.4.101", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libdrm-2.4.101-1.el8.x86_64.rpm", + "checksum": "sha256:b169780b212062e9b9564d7c033f0895f98955c42312f1a023e02277966916e6" + }, + { + "name": "libestr", + "epoch": 0, + "version": "0.1.10", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libestr-0.1.10-1.el8.x86_64.rpm", + "checksum": "sha256:bfe5c8ea12012936cc59981a10728e95d5fdadd3e893457af7a27c464d8cb6ba" + }, + { + "name": "libfastjson", + "epoch": 0, + "version": "0.99.8", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libfastjson-0.99.8-2.el8.x86_64.rpm", + "checksum": "sha256:474a66a4cf3d5a00286be40c15bad69ea1ac63a9424a1ff44f20a548a7686f7a" + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.2.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libmaxminddb-1.2.0-10.el8.x86_64.rpm", + "checksum": "sha256:995a5401cd86404d14d08c0aeafeaa8da3f540b1806f9d0e233d75dec9e45c74" + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxcb-1.13.1-1.el8.x86_64.rpm", + "checksum": "sha256:39e6bc1e8101e536066554702d5d6b25f8cad359fb5e02ac598cfdad56eafb6d" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxkbcommon-0.9.1-1.el8.x86_64.rpm", + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/memstrack-0.1.8-1.el8.x86_64.rpm", + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pinentry-1.1.0-2.el8.x86_64.rpm", + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "name": "plymouth", + "epoch": 0, + "version": "0.9.4", + "release": "1.20200615git1e36e30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/plymouth-0.9.4-1.20200615git1e36e30.el8.x86_64.rpm", + "checksum": "sha256:4d54749c92887ab059c768ada265c0f64e292594846b183d1fdfa9b29fff3ac1" + }, + { + "name": "plymouth-core-libs", + "epoch": 0, + "version": "0.9.4", + "release": "1.20200615git1e36e30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/plymouth-core-libs-0.9.4-1.20200615git1e36e30.el8.x86_64.rpm", + "checksum": "sha256:0f662be3013f7958961ae70400c7ed1fb4350c823881c123a16cbb2b6b8c8f6a" + }, + { + "name": "plymouth-scripts", + "epoch": 0, + "version": "0.9.4", + "release": "1.20200615git1e36e30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/plymouth-scripts-0.9.4-1.20200615git1e36e30.el8.x86_64.rpm", + "checksum": "sha256:61498bdebac578394eae8667e16ad7393309f7144266d4331f4c17f276b15fe0" + }, + { + "name": "python3-babel", + "epoch": 0, + "version": "2.5.1", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-babel-2.5.1-5.el8.noarch.rpm", + "checksum": "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28" + }, + { + "name": "python3-dnf-plugin-spacewalk", + "epoch": 0, + "version": "2.8.5", + "release": "11.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43" + }, + { + "name": "python3-hwdata", + "epoch": 0, + "version": "2.3.6", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-hwdata-2.3.6-3.el8.noarch.rpm", + "checksum": "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362" + }, + { + "name": "python3-jinja2", + "epoch": 0, + "version": "2.10.1", + "release": "2.el8_0", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jinja2-2.10.1-2.el8_0.noarch.rpm", + "checksum": "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64" + }, + { + "name": "python3-jsonpatch", + "epoch": 0, + "version": "1.21", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonpatch-1.21-2.el8.noarch.rpm", + "checksum": "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835" + }, + { + "name": "python3-jsonpointer", + "epoch": 0, + "version": "1.10", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonpointer-1.10-11.el8.noarch.rpm", + "checksum": "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf" + }, + { + "name": "python3-jsonschema", + "epoch": 0, + "version": "2.6.0", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonschema-2.6.0-4.el8.noarch.rpm", + "checksum": "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b" + }, + { + "name": "python3-markupsafe", + "epoch": 0, + "version": "0.23", + "release": "19.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-markupsafe-0.23-19.el8.x86_64.rpm", + "checksum": "sha256:e868499743c399baa6463fa64a2534a7d32f8e1cca7b1b47ec00c60b34250bfe" + }, + { + "name": "python3-netifaces", + "epoch": 0, + "version": "0.10.6", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-netifaces-0.10.6-4.el8.x86_64.rpm", + "checksum": "sha256:3edf7d29e530e6568416d4455e9fbaa511aba236c603da9928e689fae77b9874" + }, + { + "name": "python3-newt", + "epoch": 0, + "version": "0.52.20", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-newt-0.52.20-11.el8.x86_64.rpm", + "checksum": "sha256:b4e89276818abec218c909ca961db9bb2e09b1fc609ff280e6c05227143fa24d" + }, + { + "name": "python3-prettytable", + "epoch": 0, + "version": "0.7.2", + "release": "14.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-prettytable-0.7.2-14.el8.noarch.rpm", + "checksum": "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55" + }, + { + "name": "python3-pyOpenSSL", + "epoch": 0, + "version": "18.0.0", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pyOpenSSL-18.0.0-1.el8.noarch.rpm", + "checksum": "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21" + }, + { + "name": "python3-pyserial", + "epoch": 0, + "version": "3.1.1", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pyserial-3.1.1-8.el8.noarch.rpm", + "checksum": "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414" + }, + { + "name": "python3-pytz", + "epoch": 0, + "version": "2017.2", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pytz-2017.2-9.el8.noarch.rpm", + "checksum": "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca" + }, + { + "name": "python3-rhn-check", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:15462b748aef3c565bcf4f849c1a21c1389a8ef5e7dae94e64718865a67d46a9" + }, + { + "name": "python3-rhn-client-tools", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:bed436b103161f7d8f61b617c84f3a7b5509f1d00c8425900a88c222b1331b31" + }, + { + "name": "python3-rhn-setup", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:ec26615d079ce89316352f813279f74a44871fa8c26fed8f369b9fe847aa5121" + }, + { + "name": "python3-rhnlib", + "epoch": 0, + "version": "2.8.6", + "release": "8.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-unbound-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "name": "qemu-guest-agent", + "epoch": 15, + "version": "4.2.0", + "release": "29.module+el8.3.0+7212+401047e6", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/qemu-guest-agent-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64.rpm", + "checksum": "sha256:3d1dfe2e487e06efda133298a0fd0913f95b61c4373332db110b496aaadc8f05" + }, + { + "name": "rhn-check", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:d81c180c682e6014a0da09aaa144492e8cb03c1d61022513ba6db5bd3740f921" + }, + { + "name": "rhn-client-tools", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:d80219a299035688091aa230b1c9169143c00c141c4f1ad8e75d176d22cc1cd0" + }, + { + "name": "rhn-setup", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:4931d78c496eaaa8e6b6bbec2b4750da52b9fc7e989ae89b7c1fa2a6f40ff7fa" + }, + { + "name": "rhnlib", + "epoch": 0, + "version": "2.8.6", + "release": "8.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42" + }, + { + "name": "rhnsd", + "epoch": 0, + "version": "5.0.35", + "release": "3.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:00cc9cd4517cbb4ad99dbce63b40b700699523550cd7f8202948af28dbe2cd9e" + }, + { + "name": "rsyslog", + "epoch": 0, + "version": "8.1911.0", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rsyslog-8.1911.0-6.el8.x86_64.rpm", + "checksum": "sha256:5ef47eb6a042a13c902764907692c1068eb0f69153b47bc85792bef74bfa852b" + }, + { + "name": "spice-vdagent", + "epoch": 0, + "version": "0.20.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/spice-vdagent-0.20.0-1.el8.x86_64.rpm", + "checksum": "sha256:5869b0b682ea0c2cc74a089818970d6c6bbf6e72e6229aed6ba680f15ce87347" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/unbound-libs-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "checksums": { + "0": "sha256:cc014fee6e92f8a81f152d72a43137a3270189ef229c738381b98bc0c88443f8", + "1": "sha256:2b881b017a4c721893038307bf4f0269afe55c35114a477be226f53a2f585545" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=0bd700f8-090f-4556-b797-b340297ea1bd ro net.ifnames=0" + }, + "bootloader": "grub", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "id": "rhel-20200625210904-4.18.0-221.el8.x86_64", + "initrd": "/boot/initramfs-4.18.0-221.el8.x86_64.img $tuned_initrd", + "linux": "/boot/vmlinuz-4.18.0-221.el8.x86_64", + "options": "$kernelopts $tuned_params", + "title": "Red Hat Enterprise Linux (4.18.0-221.el8.x86_64) 8.3 (Ootpa)", + "version": "4.18.0-221.el8.x86_64" + } + ], + "firewall-enabled": [ + "ssh", + "dhcpv6-client", + "cockpit" + ], + "fstab": [ + [ + "UUID=0bd700f8-090f-4556-b797-b340297ea1bd", + "/", + "xfs", + "defaults", + "0", + "0" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:999:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "polkitd:x:996:", + "redhat:x:1000:", + "render:x:998:", + "rngd:x:992:", + "root:x:0:", + "ssh_keys:x:995:", + "sshd:x:74:", + "sssd:x:993:", + "sys:x:3:", + "systemd-coredump:x:997:", + "systemd-journal:x:190:", + "systemd-resolve:x:193:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:994:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "qcow2", + "os-release": { + "ANSI_COLOR": "0;31", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:redhat:enterprise_linux:8.3:beta", + "HOME_URL": "https://www.redhat.com/", + "ID": "rhel", + "ID_LIKE": "fedora", + "NAME": "Red Hat Enterprise Linux", + "PLATFORM_ID": "platform:el8", + "PRETTY_NAME": "Red Hat Enterprise Linux 8.3 Beta (Ootpa)", + "REDHAT_BUGZILLA_PRODUCT": "Red Hat Enterprise Linux 8", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "8.3", + "REDHAT_SUPPORT_PRODUCT": "Red Hat Enterprise Linux", + "REDHAT_SUPPORT_PRODUCT_VERSION": "8.3 Beta", + "VERSION": "8.3 (Ootpa)", + "VERSION_ID": "8.3" + }, + "packages": [ + "NetworkManager-1.26.0-0.2.el8.x86_64", + "NetworkManager-libnm-1.26.0-0.2.el8.x86_64", + "NetworkManager-team-1.26.0-0.2.el8.x86_64", + "NetworkManager-tui-1.26.0-0.2.el8.x86_64", + "acl-2.2.53-1.el8.x86_64", + "alsa-lib-1.2.3.2-1.el8.x86_64", + "audit-3.0-0.17.20191104git1c2f876.el8.x86_64", + "audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64", + "authselect-1.2.1-2.el8.x86_64", + "authselect-libs-1.2.1-2.el8.x86_64", + "basesystem-11-5.el8.noarch", + "bash-4.4.19-12.el8.x86_64", + "bind-export-libs-9.11.20-3.el8.x86_64", + "biosdevname-0.7.3-2.el8.x86_64", + "brotli-1.0.6-2.el8.x86_64", + "bzip2-libs-1.0.6-26.el8.x86_64", + "c-ares-1.13.0-5.el8.x86_64", + "ca-certificates-2019.2.32-80.0.el8_1.noarch", + "checkpolicy-2.9-1.el8.x86_64", + "chkconfig-1.13-2.el8.x86_64", + "cloud-init-19.4-7.el8.noarch", + "coreutils-8.30-8.el8.x86_64", + "coreutils-common-8.30-8.el8.x86_64", + "cpio-2.12-8.el8.x86_64", + "cracklib-2.9.6-15.el8.x86_64", + "cracklib-dicts-2.9.6-15.el8.x86_64", + "cronie-1.5.2-4.el8.x86_64", + "cronie-anacron-1.5.2-4.el8.x86_64", + "crontabs-1.11-16.20150630git.el8.noarch", + "crypto-policies-20200610-1.git0ac8b1f.el8.noarch", + "crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch", + "cryptsetup-libs-2.3.3-1.el8.x86_64", + "curl-7.61.1-12.el8.x86_64", + "cyrus-sasl-lib-2.1.27-5.el8.x86_64", + "dbus-1.12.8-11.el8.x86_64", + "dbus-common-1.12.8-11.el8.noarch", + "dbus-daemon-1.12.8-11.el8.x86_64", + "dbus-glib-0.110-2.el8.x86_64", + "dbus-libs-1.12.8-11.el8.x86_64", + "dbus-tools-1.12.8-11.el8.x86_64", + "device-mapper-1.02.171-3.el8.x86_64", + "device-mapper-libs-1.02.171-3.el8.x86_64", + "dhcp-client-4.3.6-41.el8.x86_64", + "dhcp-common-4.3.6-41.el8.noarch", + "dhcp-libs-4.3.6-41.el8.x86_64", + "diffutils-3.6-6.el8.x86_64", + "dmidecode-3.2-6.el8.x86_64", + "dnf-4.2.23-2.el8.noarch", + "dnf-data-4.2.23-2.el8.noarch", + "dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch", + "dnf-plugin-subscription-manager-1.27.9-1.el8.x86_64", + "dnf-plugins-core-4.0.17-2.el8.noarch", + "dracut-049-89.git20200625.el8.x86_64", + "dracut-config-generic-049-89.git20200625.el8.x86_64", + "dracut-network-049-89.git20200625.el8.x86_64", + "dracut-squash-049-89.git20200625.el8.x86_64", + "e2fsprogs-1.45.6-1.el8.x86_64", + "e2fsprogs-libs-1.45.6-1.el8.x86_64", + "elfutils-debuginfod-client-0.180-1.el8.x86_64", + "elfutils-default-yama-scope-0.180-1.el8.noarch", + "elfutils-libelf-0.180-1.el8.x86_64", + "elfutils-libs-0.180-1.el8.x86_64", + "ethtool-5.0-2.el8.x86_64", + "expat-2.2.5-4.el8.x86_64", + "file-5.33-16.el8.x86_64", + "file-libs-5.33-16.el8.x86_64", + "filesystem-3.8-3.el8.x86_64", + "findutils-4.6.0-20.el8.x86_64", + "firewalld-0.8.2-1.el8.noarch", + "firewalld-filesystem-0.8.2-1.el8.noarch", + "freetype-2.9.1-4.el8.x86_64", + "fuse-libs-2.9.7-12.el8.x86_64", + "gawk-4.2.1-1.el8.x86_64", + "gdbm-1.18-1.el8.x86_64", + "gdbm-libs-1.18-1.el8.x86_64", + "geolite2-city-20180605-1.el8.noarch", + "geolite2-country-20180605-1.el8.noarch", + "gettext-0.19.8.1-17.el8.x86_64", + "gettext-libs-0.19.8.1-17.el8.x86_64", + "glib2-2.56.4-8.el8.x86_64", + "glibc-2.28-127.el8.x86_64", + "glibc-common-2.28-127.el8.x86_64", + "glibc-langpack-en-2.28-127.el8.x86_64", + "gmp-6.1.2-10.el8.x86_64", + "gnupg2-2.2.20-2.el8.x86_64", + "gnupg2-smime-2.2.20-2.el8.x86_64", + "gnutls-3.6.14-3.el8.x86_64", + "gobject-introspection-1.56.1-1.el8.x86_64", + "gpg-pubkey-d4082792-5b32db75", + "gpg-pubkey-fd431d51-4ae0493b", + "gpgme-1.13.1-3.el8.x86_64", + "grep-3.1-6.el8.x86_64", + "groff-base-1.22.3-18.el8.x86_64", + "grub2-common-2.02-84.el8.noarch", + "grub2-pc-2.02-84.el8.x86_64", + "grub2-pc-modules-2.02-84.el8.noarch", + "grub2-tools-2.02-84.el8.x86_64", + "grub2-tools-extra-2.02-84.el8.x86_64", + "grub2-tools-minimal-2.02-84.el8.x86_64", + "grubby-8.40-41.el8.x86_64", + "gzip-1.9-9.el8.x86_64", + "hardlink-1.3-6.el8.x86_64", + "hdparm-9.54-2.el8.x86_64", + "hostname-3.20-6.el8.x86_64", + "hwdata-0.314-8.5.el8.noarch", + "ima-evm-utils-1.1-5.el8.x86_64", + "info-6.5-6.el8.x86_64", + "initscripts-10.00.8-1.el8.x86_64", + "ipcalc-0.2.4-4.el8.x86_64", + "iproute-5.3.0-5.el8.x86_64", + "iprutils-2.4.19-1.el8.x86_64", + "ipset-7.1-1.el8.x86_64", + "ipset-libs-7.1-1.el8.x86_64", + "iptables-1.8.4-14.el8.x86_64", + "iptables-ebtables-1.8.4-14.el8.x86_64", + "iptables-libs-1.8.4-14.el8.x86_64", + "iputils-20180629-2.el8.x86_64", + "irqbalance-1.4.0-4.el8.x86_64", + "iwl100-firmware-39.31.5.1-99.el8.1.noarch", + "iwl1000-firmware-39.31.5.1-99.el8.1.noarch", + "iwl105-firmware-18.168.6.1-99.el8.1.noarch", + "iwl135-firmware-18.168.6.1-99.el8.1.noarch", + "iwl2000-firmware-18.168.6.1-99.el8.1.noarch", + "iwl2030-firmware-18.168.6.1-99.el8.1.noarch", + "iwl3160-firmware-25.30.13.0-99.el8.1.noarch", + "iwl5000-firmware-8.83.5.1_1-99.el8.1.noarch", + "iwl5150-firmware-8.24.2.2-99.el8.1.noarch", + "iwl6000-firmware-9.221.4.1-99.el8.1.noarch", + "iwl6000g2a-firmware-18.168.6.1-99.el8.1.noarch", + "iwl6050-firmware-41.28.5.1-99.el8.1.noarch", + "iwl7260-firmware-25.30.13.0-99.el8.1.noarch", + "jansson-2.11-3.el8.x86_64", + "json-c-0.13.1-0.2.el8.x86_64", + "json-glib-1.4.4-1.el8.x86_64", + "kbd-2.0.4-10.el8.x86_64", + "kbd-legacy-2.0.4-10.el8.noarch", + "kbd-misc-2.0.4-10.el8.noarch", + "kernel-4.18.0-221.el8.x86_64", + "kernel-core-4.18.0-221.el8.x86_64", + "kernel-modules-4.18.0-221.el8.x86_64", + "kernel-tools-4.18.0-221.el8.x86_64", + "kernel-tools-libs-4.18.0-221.el8.x86_64", + "kexec-tools-2.0.20-29.el8.x86_64", + "keyutils-libs-1.5.10-6.el8.x86_64", + "kmod-25-16.el8.x86_64", + "kmod-libs-25-16.el8.x86_64", + "kpartx-0.8.4-2.el8.x86_64", + "krb5-libs-1.18.2-3.el8.x86_64", + "langpacks-en-1.0-12.el8.noarch", + "less-530-1.el8.x86_64", + "libX11-1.6.8-3.el8.x86_64", + "libX11-common-1.6.8-3.el8.noarch", + "libXau-1.0.9-3.el8.x86_64", + "libXext-1.3.4-1.el8.x86_64", + "libXfixes-5.0.3-7.el8.x86_64", + "libXinerama-1.1.4-1.el8.x86_64", + "libXrandr-1.5.2-1.el8.x86_64", + "libXrender-0.9.10-7.el8.x86_64", + "libacl-2.2.53-1.el8.x86_64", + "libarchive-3.3.2-9.el8.x86_64", + "libassuan-2.5.1-3.el8.x86_64", + "libattr-2.4.48-3.el8.x86_64", + "libbasicobjects-0.1.1-39.el8.x86_64", + "libblkid-2.32.1-24.el8.x86_64", + "libcap-2.26-4.el8.x86_64", + "libcap-ng-0.7.9-5.el8.x86_64", + "libcollection-0.7.0-39.el8.x86_64", + "libcom_err-1.45.6-1.el8.x86_64", + "libcomps-0.1.11-4.el8.x86_64", + "libcroco-0.6.12-4.el8.x86_64", + "libcurl-7.61.1-12.el8.x86_64", + "libdaemon-0.14-15.el8.x86_64", + "libdb-5.3.28-39.el8.x86_64", + "libdb-utils-5.3.28-39.el8.x86_64", + "libdhash-0.5.0-39.el8.x86_64", + "libdnf-0.48.0-2.el8.x86_64", + "libdrm-2.4.101-1.el8.x86_64", + "libedit-3.1-23.20170329cvs.el8.x86_64", + "libestr-0.1.10-1.el8.x86_64", + "libevent-2.1.8-5.el8.x86_64", + "libfastjson-0.99.8-2.el8.x86_64", + "libfdisk-2.32.1-24.el8.x86_64", + "libffi-3.1-22.el8.x86_64", + "libgcc-8.3.1-5.1.el8.x86_64", + "libgcrypt-1.8.5-4.el8.x86_64", + "libgomp-8.3.1-5.1.el8.x86_64", + "libgpg-error-1.31-1.el8.x86_64", + "libgudev-232-4.el8.x86_64", + "libidn2-2.2.0-1.el8.x86_64", + "libini_config-1.3.1-39.el8.x86_64", + "libkcapi-1.2.0-2.el8.x86_64", + "libkcapi-hmaccalc-1.2.0-2.el8.x86_64", + "libksba-1.3.5-7.el8.x86_64", + "libldb-2.1.3-2.el8.x86_64", + "libmaxminddb-1.2.0-10.el8.x86_64", + "libmetalink-0.1.3-7.el8.x86_64", + "libmnl-1.0.4-6.el8.x86_64", + "libmodulemd-2.9.4-2.el8.x86_64", + "libmount-2.32.1-24.el8.x86_64", + "libndp-1.7-3.el8.x86_64", + "libnetfilter_conntrack-1.0.6-5.el8.x86_64", + "libnfnetlink-1.0.1-13.el8.x86_64", + "libnfsidmap-2.3.3-35.el8.x86_64", + "libnftnl-1.1.5-4.el8.x86_64", + "libnghttp2-1.33.0-3.el8_2.1.x86_64", + "libnl3-3.5.0-1.el8.x86_64", + "libnl3-cli-3.5.0-1.el8.x86_64", + "libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64", + "libpath_utils-0.2.1-39.el8.x86_64", + "libpcap-1.9.1-4.el8.x86_64", + "libpciaccess-0.14-1.el8.x86_64", + "libpipeline-1.5.0-2.el8.x86_64", + "libpng-1.6.34-5.el8.x86_64", + "libpsl-0.20.2-6.el8.x86_64", + "libpwquality-1.4.0-9.el8.x86_64", + "libref_array-0.1.5-39.el8.x86_64", + "librepo-1.12.0-1.el8.x86_64", + "libreport-filesystem-2.9.5-11.el8.x86_64", + "librhsm-0.0.3-3.el8.x86_64", + "libseccomp-2.4.3-1.el8.x86_64", + "libsecret-0.18.6-1.el8.x86_64", + "libselinux-2.9-3.el8.x86_64", + "libselinux-utils-2.9-3.el8.x86_64", + "libsemanage-2.9-3.el8.x86_64", + "libsepol-2.9-1.el8.x86_64", + "libsigsegv-2.11-5.el8.x86_64", + "libsmartcols-2.32.1-24.el8.x86_64", + "libsolv-0.7.11-1.el8.x86_64", + "libss-1.45.6-1.el8.x86_64", + "libssh-0.9.4-2.el8.x86_64", + "libssh-config-0.9.4-2.el8.noarch", + "libsss_autofs-2.3.0-2.el8.x86_64", + "libsss_certmap-2.3.0-2.el8.x86_64", + "libsss_idmap-2.3.0-2.el8.x86_64", + "libsss_nss_idmap-2.3.0-2.el8.x86_64", + "libsss_sudo-2.3.0-2.el8.x86_64", + "libstdc++-8.3.1-5.1.el8.x86_64", + "libsysfs-2.1.0-24.el8.x86_64", + "libtalloc-2.3.1-2.el8.x86_64", + "libtasn1-4.13-3.el8.x86_64", + "libtdb-1.4.3-1.el8.x86_64", + "libteam-1.29-5.el8.x86_64", + "libtevent-0.10.2-2.el8.x86_64", + "libtirpc-1.1.4-4.el8.x86_64", + "libunistring-0.9.9-3.el8.x86_64", + "libusbx-1.0.23-3.el8.x86_64", + "libuser-0.62-23.el8.x86_64", + "libutempter-1.1.6-14.el8.x86_64", + "libuuid-2.32.1-24.el8.x86_64", + "libverto-0.3.0-5.el8.x86_64", + "libxcb-1.13.1-1.el8.x86_64", + "libxcrypt-4.1.1-4.el8.x86_64", + "libxkbcommon-0.9.1-1.el8.x86_64", + "libxml2-2.9.7-8.el8.x86_64", + "libyaml-0.1.7-5.el8.x86_64", + "libzstd-1.4.4-1.el8.x86_64", + "linux-firmware-20200619-99.git3890db36.el8.noarch", + "logrotate-3.14.0-4.el8.x86_64", + "lshw-B.02.19.2-2.el8.x86_64", + "lsscsi-0.30-1.el8.x86_64", + "lua-libs-5.3.4-11.el8.x86_64", + "lz4-libs-1.8.3-2.el8.x86_64", + "lzo-2.08-14.el8.x86_64", + "man-db-2.7.6.1-17.el8.x86_64", + "memstrack-0.1.8-1.el8.x86_64", + "microcode_ctl-20200609-2.el8.x86_64", + "mozjs60-60.9.0-4.el8.x86_64", + "mpfr-3.1.6-1.el8.x86_64", + "ncurses-6.1-7.20180224.el8.x86_64", + "ncurses-base-6.1-7.20180224.el8.noarch", + "ncurses-libs-6.1-7.20180224.el8.x86_64", + "net-tools-2.0-0.52.20160912git.el8.x86_64", + "nettle-3.4.1-2.el8.x86_64", + "newt-0.52.20-11.el8.x86_64", + "nftables-0.9.3-14.el8.x86_64", + "npth-1.5-4.el8.x86_64", + "numactl-libs-2.0.12-11.el8.x86_64", + "openldap-2.4.46-15.el8.x86_64", + "openssh-8.0p1-5.el8.x86_64", + "openssh-clients-8.0p1-5.el8.x86_64", + "openssh-server-8.0p1-5.el8.x86_64", + "openssl-1.1.1g-9.el8.x86_64", + "openssl-libs-1.1.1g-9.el8.x86_64", + "openssl-pkcs11-0.4.10-2.el8.x86_64", + "os-prober-1.74-6.el8.x86_64", + "p11-kit-0.23.14-5.el8_0.x86_64", + "p11-kit-trust-0.23.14-5.el8_0.x86_64", + "pam-1.3.1-11.el8.x86_64", + "parted-3.2-38.el8.x86_64", + "passwd-0.80-3.el8.x86_64", + "pciutils-libs-3.6.4-2.el8.x86_64", + "pcre-8.42-4.el8.x86_64", + "pcre2-10.32-2.el8.x86_64", + "pigz-2.4-4.el8.x86_64", + "pinentry-1.1.0-2.el8.x86_64", + "platform-python-3.6.8-30.el8.x86_64", + "platform-python-pip-9.0.3-17.el8.noarch", + "platform-python-setuptools-39.2.0-6.el8.noarch", + "plymouth-0.9.4-1.20200615git1e36e30.el8.x86_64", + "plymouth-core-libs-0.9.4-1.20200615git1e36e30.el8.x86_64", + "plymouth-scripts-0.9.4-1.20200615git1e36e30.el8.x86_64", + "policycoreutils-2.9-9.el8.x86_64", + "polkit-0.115-11.el8.x86_64", + "polkit-libs-0.115-11.el8.x86_64", + "polkit-pkla-compat-0.1-12.el8.x86_64", + "popt-1.16-14.el8.x86_64", + "prefixdevname-0.1.0-6.el8.x86_64", + "procps-ng-3.3.15-2.el8.x86_64", + "publicsuffix-list-dafsa-20180723-1.el8.noarch", + "python3-asn1crypto-0.24.0-3.el8.noarch", + "python3-audit-3.0-0.17.20191104git1c2f876.el8.x86_64", + "python3-babel-2.5.1-5.el8.noarch", + "python3-cffi-1.11.5-5.el8.x86_64", + "python3-chardet-3.0.4-7.el8.noarch", + "python3-configobj-5.0.6-11.el8.noarch", + "python3-cryptography-2.3-3.el8.x86_64", + "python3-dateutil-2.6.1-6.el8.noarch", + "python3-dbus-1.2.4-15.el8.x86_64", + "python3-decorator-4.2.1-2.el8.noarch", + "python3-dmidecode-3.12.2-15.el8.x86_64", + "python3-dnf-4.2.23-2.el8.noarch", + "python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch", + "python3-dnf-plugins-core-4.0.17-2.el8.noarch", + "python3-ethtool-0.14-3.el8.x86_64", + "python3-firewall-0.8.2-1.el8.noarch", + "python3-gobject-base-3.28.3-2.el8.x86_64", + "python3-gpg-1.13.1-3.el8.x86_64", + "python3-hawkey-0.48.0-2.el8.x86_64", + "python3-hwdata-2.3.6-3.el8.noarch", + "python3-idna-2.5-5.el8.noarch", + "python3-iniparse-0.4-31.el8.noarch", + "python3-inotify-0.9.6-13.el8.noarch", + "python3-jinja2-2.10.1-2.el8_0.noarch", + "python3-jsonpatch-1.21-2.el8.noarch", + "python3-jsonpointer-1.10-11.el8.noarch", + "python3-jsonschema-2.6.0-4.el8.noarch", + "python3-jwt-1.6.1-2.el8.noarch", + "python3-libcomps-0.1.11-4.el8.x86_64", + "python3-libdnf-0.48.0-2.el8.x86_64", + "python3-librepo-1.12.0-1.el8.x86_64", + "python3-libs-3.6.8-30.el8.x86_64", + "python3-libselinux-2.9-3.el8.x86_64", + "python3-libsemanage-2.9-3.el8.x86_64", + "python3-libxml2-2.9.7-8.el8.x86_64", + "python3-linux-procfs-0.6.2-2.el8.noarch", + "python3-markupsafe-0.23-19.el8.x86_64", + "python3-netifaces-0.10.6-4.el8.x86_64", + "python3-newt-0.52.20-11.el8.x86_64", + "python3-nftables-0.9.3-14.el8.x86_64", + "python3-oauthlib-2.1.0-1.el8.noarch", + "python3-perf-4.18.0-221.el8.x86_64", + "python3-pip-wheel-9.0.3-17.el8.noarch", + "python3-ply-3.9-8.el8.noarch", + "python3-policycoreutils-2.9-9.el8.noarch", + "python3-prettytable-0.7.2-14.el8.noarch", + "python3-pyOpenSSL-18.0.0-1.el8.noarch", + "python3-pycparser-2.14-14.el8.noarch", + "python3-pyserial-3.1.1-8.el8.noarch", + "python3-pysocks-1.6.8-3.el8.noarch", + "python3-pytz-2017.2-9.el8.noarch", + "python3-pyudev-0.21.0-7.el8.noarch", + "python3-pyyaml-3.12-12.el8.x86_64", + "python3-requests-2.20.0-2.1.el8_1.noarch", + "python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch", + "python3-rpm-4.14.3-4.el8.x86_64", + "python3-schedutils-0.6-6.el8.x86_64", + "python3-setools-4.3.0-1.el8.x86_64", + "python3-setuptools-wheel-39.2.0-6.el8.noarch", + "python3-six-1.11.0-8.el8.noarch", + "python3-slip-0.6.4-11.el8.noarch", + "python3-slip-dbus-0.6.4-11.el8.noarch", + "python3-subscription-manager-rhsm-1.27.9-1.el8.x86_64", + "python3-syspurpose-1.27.9-1.el8.x86_64", + "python3-unbound-1.7.3-14.el8.x86_64", + "python3-urllib3-1.24.2-4.el8.noarch", + "qemu-guest-agent-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64", + "readline-7.0-10.el8.x86_64", + "redhat-release-8.3-0.2.el8.x86_64", + "redhat-release-eula-8.3-0.2.el8.x86_64", + "rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch", + "rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.x86_64", + "rng-tools-6.8-3.el8.x86_64", + "rootfiles-8.1-22.el8.noarch", + "rpm-4.14.3-4.el8.x86_64", + "rpm-build-libs-4.14.3-4.el8.x86_64", + "rpm-libs-4.14.3-4.el8.x86_64", + "rpm-plugin-selinux-4.14.3-4.el8.x86_64", + "rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64", + "rsyslog-8.1911.0-6.el8.x86_64", + "sed-4.5-2.el8.x86_64", + "selinux-policy-3.14.3-48.el8.noarch", + "selinux-policy-targeted-3.14.3-48.el8.noarch", + "setup-2.12.2-6.el8.noarch", + "sg3_utils-1.44-5.el8.x86_64", + "sg3_utils-libs-1.44-5.el8.x86_64", + "shadow-utils-4.6-10.el8.x86_64", + "shared-mime-info-1.9-3.el8.x86_64", + "slang-2.3.2-3.el8.x86_64", + "snappy-1.1.7-5.el8.x86_64", + "spice-vdagent-0.20.0-1.el8.x86_64", + "sqlite-libs-3.26.0-10.el8.x86_64", + "squashfs-tools-4.3-19.el8.x86_64", + "sssd-client-2.3.0-2.el8.x86_64", + "sssd-common-2.3.0-2.el8.x86_64", + "sssd-kcm-2.3.0-2.el8.x86_64", + "sssd-nfs-idmap-2.3.0-2.el8.x86_64", + "subscription-manager-1.27.9-1.el8.x86_64", + "subscription-manager-rhsm-certificates-1.27.9-1.el8.x86_64", + "sudo-1.8.29-6.el8.x86_64", + "systemd-239-36.el8.x86_64", + "systemd-libs-239-36.el8.x86_64", + "systemd-pam-239-36.el8.x86_64", + "systemd-udev-239-36.el8.x86_64", + "teamd-1.29-5.el8.x86_64", + "trousers-0.3.14-4.el8.x86_64", + "trousers-lib-0.3.14-4.el8.x86_64", + "tuned-2.14.0-2.el8.noarch", + "tzdata-2020a-1.el8.noarch", + "unbound-libs-1.7.3-14.el8.x86_64", + "usermode-1.113-1.el8.x86_64", + "util-linux-2.32.1-24.el8.x86_64", + "vim-minimal-8.0.1763-15.el8.x86_64", + "virt-what-1.18-6.el8.x86_64", + "which-2.21-12.el8.x86_64", + "xfsprogs-5.0.0-4.el8.x86_64", + "xkeyboard-config-2.28-1.el8.noarch", + "xz-5.2.4-3.el8.x86_64", + "xz-libs-5.2.4-3.el8.x86_64", + "yum-4.2.23-2.el8.noarch", + "zlib-1.2.11-15.el8.x86_64" + ], + "partition-table": "dos", + "partition-table-id": "0x14fc63d2", + "partitions": [ + { + "bootable": true, + "fstype": "xfs", + "label": null, + "partuuid": "14fc63d2-01", + "size": 4293918720, + "start": 1048576, + "type": "83", + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "polkitd:x:998:996:User for polkitd:/:/sbin/nologin", + "redhat:x:1000:1000::/home/redhat:/bin/bash", + "rngd:x:995:992:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sssd:x:996:993:User for sssd:/:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/etc/machine-id": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/proc": ".M.......", + "/sys": ".M.......", + "/var/log/lastlog": ".M....G..", + "/var/spool/anacron/cron.daily": ".M.......", + "/var/spool/anacron/cron.monthly": ".M.......", + "/var/spool/anacron/cron.weekly": ".M......." + }, + "missing": [ + "/etc/systemd/system/dbus-org.freedesktop.resolve1.service" + ] + }, + "services-disabled": [ + "arp-ethers.service", + "console-getty.service", + "cpupower.service", + "ctrl-alt-del.target", + "debug-shell.service", + "ebtables.service", + "exit.target", + "fstrim.timer", + "halt.target", + "iprdump.service", + "iprinit.service", + "iprupdate.service", + "iprutils.target", + "kexec.target", + "nftables.service", + "poweroff.target", + "qemu-guest-agent.service", + "rdisc.service", + "reboot.target", + "remote-cryptsetup.target", + "rhnsd.service", + "rhsm-facts.service", + "rhsm.service", + "rngd-wake-threshold.service", + "runlevel0.target", + "runlevel6.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-resolved.service", + "tcsd.service", + "tmp.mount" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "cloud-init.service", + "crond.service", + "dbus-org.fedoraproject.FirewallD1.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dnf-makecache.timer", + "firewalld.service", + "getty@.service", + "import-state.service", + "irqbalance.service", + "kdump.service", + "loadmodules.service", + "microcode.service", + "nis-domainname.service", + "remote-fs.target", + "rhsmcertd.service", + "rngd.service", + "rsyslog.service", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "syslog.service", + "tuned.service", + "unbound-anchor.timer" + ], + "timezone": "UTC" + } +} \ No newline at end of file diff --git a/test/cases/rhel_8-x86_64-qcow2-boot.json b/test/cases/rhel_8-x86_64-qcow2-boot.json new file mode 100644 index 0000000..937491d --- /dev/null +++ b/test/cases/rhel_8-x86_64-qcow2-boot.json @@ -0,0 +1,10150 @@ +{ + "boot": { + "type": "qemu" + }, + "compose-request": { + "distro": "rhel-8", + "arch": "x86_64", + "image-type": "qcow2", + "repositories": [ + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + }, + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + } + ], + "filename": "disk.qcow2", + "blueprint": { + "name": "qcow2-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:0027700684ce09927aded1d2c5bb84028529141a6b418897bde37d4af348f8bb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:00cc9cd4517cbb4ad99dbce63b40b700699523550cd7f8202948af28dbe2cd9e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:0129696c208f60326723c650295167b0600791ccb2e9c3d446c4caf9adecb3d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-3.5.0-1.el8.x86_64.rpm" + }, + "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libyaml-0.1.7-5.el8.x86_64.rpm" + }, + "sha256:0391105afa53c9503b59591615bd7c98e2f7a4cd94ff4fd1451c4234522f3880": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libedit-3.1-23.20170329cvs.el8.x86_64.rpm" + }, + "sha256:0493fd81825df694be5d15685bfe4dc002de314d18f5ae47ccee769f65ea5013": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ethtool-5.0-2.el8.x86_64.rpm" + }, + "sha256:0602b342148d5e8e6a954bb26af60ed63d3f3d919cd3856ea93612e05ebe2937": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodman-2.0.1-17.el8.x86_64.rpm" + }, + "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmount-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cloud-init-19.4-7.el8.noarch.rpm" + }, + "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-daemon-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-prettytable-0.7.2-14.el8.noarch.rpm" + }, + "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libunistring-0.9.9-3.el8.x86_64.rpm" + }, + "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jinja2-2.10.1-2.el8_0.noarch.rpm" + }, + "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:09ca7b05e26f93d35ac299dbcd865b65ec3a3d2654e1da87d2c3c0462dbe6e4a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-schedutils-0.6-6.el8.x86_64.rpm" + }, + "sha256:09fc3154e76c8ee25b3982c15f3bc455017262c3df5af84075859dcbf79e4f82": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libsemanage-2.9-3.el8.x86_64.rpm" + }, + "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugins-core-4.0.17-2.el8.noarch.rpm" + }, + "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-239-36.el8.x86_64.rpm" + }, + "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/expat-2.2.5-4.el8.x86_64.rpm" + }, + "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-libs-2.3.3-1.el8.x86_64.rpm" + }, + "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm" + }, + "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxcrypt-4.1.1-4.el8.x86_64.rpm" + }, + "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/linux-firmware-20200619-99.git3890db36.el8.noarch.rpm" + }, + "sha256:0e4b7687f0c62f4e336223b939f6cb169c8dac49eee23c53fd919e58d8f989df": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/microcode_ctl-20200609-2.el8.x86_64.rpm" + }, + "sha256:0f3b084d947bc246fe68822129b8ae1294c4187270a19f0966282baf75b34dc6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-subscription-manager-rhsm-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:1065049dbd53849d35db269a23be54148cbe481122381ab71b72f62e83816b26": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gobject-introspection-1.56.1-1.el8.x86_64.rpm" + }, + "sha256:10f40567d02123b71bd878ef423dd0d5dca415e806ff041c3c69b99d114fea84": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chrony-3.5-1.el8.x86_64.rpm" + }, + "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-all-langpacks-2.28-127.el8.x86_64.rpm" + }, + "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm" + }, + "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gmp-6.1.2-10.el8.x86_64.rpm" + }, + "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcc-8.3.1-5.1.el8.x86_64.rpm" + }, + "sha256:13ffce0597b689dd53f55ea0d03dd6d013246634f5c6cbcef51fa549d9734b29": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-cffi-1.11.5-5.el8.x86_64.rpm" + }, + "sha256:14098d36fe4be983fac73d04aeacf0ed7977d962e760907b89e3f80b4ca46f3f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-common-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:14f5ca00582f8d8780a0bcc1b204fb73cfdb35c5725efa4eccffbe8a1988769e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nfs-utils-2.3.3-35.el8.x86_64.rpm" + }, + "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm" + }, + "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cpio-2.12-8.el8.x86_64.rpm" + }, + "sha256:15462b748aef3c565bcf4f849c1a21c1389a8ef5e7dae94e64718865a67d46a9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-libs-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:1594afba86593ec614299ef6af255755a98ea55a34a72a22fdc9d80a040be39d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/abattis-cantarell-fonts-0.0.25-4.el8.noarch.rpm" + }, + "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crontabs-1.11-16.20150630git.el8.noarch.rpm" + }, + "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-smime-2.2.20-2.el8.x86_64.rpm" + }, + "sha256:18d419718a99851370262584bec1b27d60cbd08845b50fbe97e1a56b71cd5ea2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-perf-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:18fd9b2a61147367ad7d51798d33db38aedbaf761f3d0561c752f0048d1f4221": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cairo-gobject-1.15.12-3.el8.x86_64.rpm" + }, + "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm" + }, + "sha256:1b1fe43a375a21f4c3ccf04861c122fd519d4865b9c1abc7f1973b86a0252a06": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-kcm-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-5.2.4-3.el8.x86_64.rpm" + }, + "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.x86_64.rpm" + }, + "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-25-16.el8.x86_64.rpm" + }, + "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tzdata-2020a-1.el8.noarch.rpm" + }, + "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libksba-1.3.5-7.el8.x86_64.rpm" + }, + "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsecret-0.18.6-1.el8.x86_64.rpm" + }, + "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm" + }, + "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/krb5-libs-1.18.2-3.el8.x86_64.rpm" + }, + "sha256:1faa85c12115426d8afc51c8bed2e71bf1dd87063e25052bcf85c17dbc0d9ea4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-network-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-2.02-84.el8.x86_64.rpm" + }, + "sha256:202cfa88a6b2f1ec6a0bc0546f578c1ca6b5b6fcfeaf3e1228beead14d8bf758": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cockpit-system-222.1-1.el8.noarch.rpm" + }, + "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-common-2.28-127.el8.x86_64.rpm" + }, + "sha256:206cba480b58c70348584010d547d21bcd84c6094fd3980e22c6b640da12704c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-syspurpose-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:206de21c82d76de550bcc1959138472640b0a950a311b753203f5dfe5b201b7b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipcalc-0.2.4-4.el8.x86_64.rpm" + }, + "sha256:20dec130e4fd0a2146443791ca7ade6e079cea691d93711813d5f483b691c55a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ethtool-0.14-3.el8.x86_64.rpm" + }, + "sha256:211d74a081c06399001bf09c59e941b444f3175d2900a02775a232f4c83d3fb1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/sscg-2.3.3-14.el8.x86_64.rpm" + }, + "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-5.33-16.el8.x86_64.rpm" + }, + "sha256:22585bd5d69c5e0a06fe00a6844da2e5d311512374c1d176f17f41caab7e121f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/parted-3.2-38.el8.x86_64.rpm" + }, + "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:22942af5dab657f662538619ab84a260d3c92e3498694fca2a126100ff9ab316": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pciutils-3.6.4-2.el8.x86_64.rpm" + }, + "sha256:231bc0eeb8fb127f0a4da5a4da1edd226067d5029a0b4fd6ef72c246ccfc31c0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libldb-2.1.3-2.el8.x86_64.rpm" + }, + "sha256:2334cb78002aa30feeb11549d51e204aa868f5538a09957850082d7efb15b00f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/c-ares-1.13.0-5.el8.x86_64.rpm" + }, + "sha256:23474f4f3841340af8a7ec5ab2d1fa693d4d72d2f782a5930c799560382916ac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstemmer-0-10.585svn.el8.x86_64.rpm" + }, + "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libcomps-0.1.11-4.el8.x86_64.rpm" + }, + "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-3.6.8-30.el8.x86_64.rpm" + }, + "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tuned-2.14.0-2.el8.noarch.rpm" + }, + "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxkbcommon-0.9.1-1.el8.x86_64.rpm" + }, + "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-2.0.4-10.el8.x86_64.rpm" + }, + "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-ng-0.7.9-5.el8.x86_64.rpm" + }, + "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libattr-2.4.48-3.el8.x86_64.rpm" + }, + "sha256:289e2a39b2a29163a29da35936d4b484fe356d0a6d519524023e79686daf501b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-client-4.3.6-41.el8.x86_64.rpm" + }, + "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mpfr-3.1.6-1.el8.x86_64.rpm" + }, + "sha256:2a65cec3eb67ba7645dd97cf3f3811cd5fb06eea2526d36a683d3fdaa0f2825e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cronie-anacron-1.5.2-4.el8.x86_64.rpm" + }, + "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre2-10.32-2.el8.x86_64.rpm" + }, + "sha256:2cfcc3d6163dfaf7ce76998be992bd0b70dd7cbb838430cecf2aff04cd435d24": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/virt-what-1.18-6.el8.x86_64.rpm" + }, + "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pyOpenSSL-18.0.0-1.el8.noarch.rpm" + }, + "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.x86_64.rpm" + }, + "sha256:2e90748420a7d28b3063df04de129e79ea85310a8d9cf2faf0a2e7b8430307c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-client-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:2eba2dc51974271244bdeaaf17c6e8fac3c35b62914b680076bdc4a32272df01": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpath_utils-0.2.1-39.el8.x86_64.rpm" + }, + "sha256:2eed977380b41885d4f7ad33e122abbb9ea7391c1255d182451efd457688c8b2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnfsidmap-2.3.3-35.el8.x86_64.rpm" + }, + "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-8.30-8.el8.x86_64.rpm" + }, + "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kpartx-0.8.4-2.el8.x86_64.rpm" + }, + "sha256:330b6ab19f2ac365587b1c7536420f63c7a1ec0e4f54903f13fffc9fe1f51527": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cockpit-ws-222.1-1.el8.x86_64.rpm" + }, + "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpsl-0.20.2-6.el8.x86_64.rpm" + }, + "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm" + }, + "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-dicts-2.9.6-15.el8.x86_64.rpm" + }, + "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-oauthlib-2.1.0-1.el8.noarch.rpm" + }, + "sha256:3459ac9ecad925e511502cff687ceb77f52f391303793f7670794a5c0b040f3d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/setroubleshoot-plugins-3.3.12-1.el8.noarch.rpm" + }, + "sha256:348b7d66a20015563489babbc3850928587575d0acde7c61d55480ebf0f3820d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-squash-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:350657e984b1736bb4a8c9cc01b772517a4194467d6db84110c1cc42131f1cae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/initscripts-10.00.8-1.el8.x86_64.rpm" + }, + "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-chardet-3.0.4-7.el8.noarch.rpm" + }, + "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/zlib-1.2.11-15.el8.x86_64.rpm" + }, + "sha256:3730f3f8d3332836f278250408891cb097379a5d7745fe698b1d418e9e13d335": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-clients-8.0p1-5.el8.x86_64.rpm" + }, + "sha256:37504d807ac0bb6c429d7be9c636f7b755464023511d856846dbb9deb8f6a76d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/logrotate-3.14.0-4.el8.x86_64.rpm" + }, + "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libseccomp-2.4.3-1.el8.x86_64.rpm" + }, + "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-2.26-4.el8.x86_64.rpm" + }, + "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-1.18-1.el8.x86_64.rpm" + }, + "sha256:398c1abc82097370f46e6fdf4dae63870e1f767b24d0130c79ed67ea3a67233a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sg3_utils-1.44-5.el8.x86_64.rpm" + }, + "sha256:39e59e9a2460e3b6fe147501e79a57042f161c217963be212359031bb8b18daa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/jansson-2.11-3.el8.x86_64.rpm" + }, + "sha256:39e6bc1e8101e536066554702d5d6b25f8cad359fb5e02ac598cfdad56eafb6d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxcb-1.13.1-1.el8.x86_64.rpm" + }, + "sha256:3a1058c6ba468722090a74002a3239161771b0d8b444975bff891afd45bb672a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsysfs-2.1.0-24.el8.x86_64.rpm" + }, + "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-configobj-5.0.6-11.el8.noarch.rpm" + }, + "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/procps-ng-3.3.15-2.el8.x86_64.rpm" + }, + "sha256:3b087daa7e9de69c051f22f9df1ef00867ffddd99357bc3a215ccde76a13c02f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtalloc-2.3.1-2.el8.x86_64.rpm" + }, + "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/filesystem-3.8-3.el8.x86_64.rpm" + }, + "sha256:3babb3a2d4bdffe51f8453a1a4151688a76b48327d37464e11f7c6529c888b30": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/setroubleshoot-server-3.3.23-1.el8.x86_64.rpm" + }, + "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-plugins-core-4.0.17-2.el8.noarch.rpm" + }, + "sha256:3d1dfe2e487e06efda133298a0fd0913f95b61c4373332db110b496aaadc8f05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/qemu-guest-agent-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64.rpm" + }, + "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-8.3-0.2.el8.x86_64.rpm" + }, + "sha256:3e180253732f00c919aaebc9aaa0562eefac466ce145ce5ad5e1092453aeebaa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rsync-3.1.3-8.el8.x86_64.rpm" + }, + "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ima-evm-utils-1.1-5.el8.x86_64.rpm" + }, + "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tar-1.30-5.el8.x86_64.rpm" + }, + "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pyserial-3.1.1-8.el8.noarch.rpm" + }, + "sha256:3edf7d29e530e6568416d4455e9fbaa511aba236c603da9928e689fae77b9874": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-netifaces-0.10.6-4.el8.x86_64.rpm" + }, + "sha256:40010441888b72dd077d4d6790f837236701b93c8b31da5dbf65c700fd2571fd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-config-generic-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:411d65fe9e463458af055d06a4a89a1d822d26049198615c0afc9741c426c77c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cronie-1.5.2-4.el8.x86_64.rpm" + }, + "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gpg-1.13.1-3.el8.x86_64.rpm" + }, + "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-common-4.3.6-41.el8.noarch.rpm" + }, + "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/util-linux-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:4229196b5ea88c1133d5509a2ec326093a2c7ac5566ca4abb55c3d6fab47130a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-gobject-3.28.3-2.el8.x86_64.rpm" + }, + "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xfsprogs-5.0.0-4.el8.x86_64.rpm" + }, + "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:4403330cdf4f15d75d727e2ac8c3358ff6a13209b3395dfac2131984e443eb23": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/snappy-1.1.7-5.el8.x86_64.rpm" + }, + "sha256:4405d32322fd496c65f57a12b6037fd75b49957269dbf9cb0417b598162f7407": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iproute-5.3.0-5.el8.x86_64.rpm" + }, + "sha256:441efa6f0b9a9905ef11ec987d6db89e7dba2857060020c4554e32db3e59fce5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-libs-0.115-11.el8.x86_64.rpm" + }, + "sha256:44e81330b185085f871e9fbf8fae27c8de411600c032aca371dc6d39a3e261da": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_sudo-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libzstd-1.4.4-1.el8.x86_64.rpm" + }, + "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtirpc-1.1.4-4.el8.x86_64.rpm" + }, + "sha256:468b540f98263d7b274c722a7b8f18ac1ab9d88783cfca6561c85e56b36afeee": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/PackageKit-glib-1.1.12-6.el8.x86_64.rpm" + }, + "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm" + }, + "sha256:474a66a4cf3d5a00286be40c15bad69ea1ac63a9424a1ff44f20a548a7686f7a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libfastjson-0.99.8-2.el8.x86_64.rpm" + }, + "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm" + }, + "sha256:4882ff53265bdeabb69f1ac9c585454b28ae799ab31fa72c9eb10bdbe1f41d9a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-tools-libs-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:4931d78c496eaaa8e6b6bbec2b4750da52b9fc7e989ae89b7c1fa2a6f40ff7fa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm" + }, + "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libidn2-2.2.0-1.el8.x86_64.rpm" + }, + "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pyudev-0.21.0-7.el8.noarch.rpm" + }, + "sha256:4b8cd13404adac1a30a105e894a733f7c79bfac1a125b8cd095e6ba9c1d056f9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-tui-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-modules-2.02-84.el8.noarch.rpm" + }, + "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgpg-error-1.31-1.el8.x86_64.rpm" + }, + "sha256:4ca553b0c0f6dc130e05e2011cdf1f52132e8f70bd93be8eee4e415b2cac0c56": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-librepo-1.12.0-1.el8.x86_64.rpm" + }, + "sha256:4ccbefcbe75decfef38ccae5d8ff92ba6b00e8232b64ec46ae0c0be8ae20ec50": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libxml2-2.9.7-8.el8.x86_64.rpm" + }, + "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-libs-1.0.6-26.el8.x86_64.rpm" + }, + "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-libs-1.5.10-6.el8.x86_64.rpm" + }, + "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shared-mime-info-1.9-3.el8.x86_64.rpm" + }, + "sha256:4ed1a6294eea09a3a7e15683267ca5d383e4c2b27fd57fe05d2666e0e6c3d26f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtdb-1.4.3-1.el8.x86_64.rpm" + }, + "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/npth-1.5-4.el8.x86_64.rpm" + }, + "sha256:507442831068c749ba21b22bd96993a1a2a6c74dd53c55f34c7f81a21554c82d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libref_array-0.1.5-39.el8.x86_64.rpm" + }, + "sha256:50c0d1828a9e8db638c09d88afb0828d98349027ce498ee7df74e7ff6052ac1d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdhash-0.5.0-39.el8.x86_64.rpm" + }, + "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib2-2.56.4-8.el8.x86_64.rpm" + }, + "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm" + }, + "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-eula-8.3-0.2.el8.x86_64.rpm" + }, + "sha256:516acd98bf46b3b2e09fd0d2f0cf1fbf4ecbecc9b0e10028c3a26ce9a6aca393": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpcbind-1.2.5-7.el8.x86_64.rpm" + }, + "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-rpm-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-4.4.19-12.el8.x86_64.rpm" + }, + "sha256:534bbf990d0f0537715561c818c2b68f10e6ba0cc1252a32a0696f1e22fde1e3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-systemd-234-8.el8.x86_64.rpm" + }, + "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-c-0.13.1-0.2.el8.x86_64.rpm" + }, + "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:539abfc369a17023658486f7b4a48c8db159cc4d617b27da256ddac6e15ea687": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpipeline-1.5.0-2.el8.x86_64.rpm" + }, + "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpng-1.6.34-5.el8.x86_64.rpm" + }, + "sha256:53fb6834e2e439e79225d957c4643922da74836417b5558d0c2943b546b26e57": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libndp-1.7-3.el8.x86_64.rpm" + }, + "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-build-libs-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm" + }, + "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcroco-0.6.12-4.el8.x86_64.rpm" + }, + "sha256:593d4df5b8de12ed0ec5a0935cb0bd966e27a631aa0806250ba9f67092ad737f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libX11-common-1.6.8-3.el8.noarch.rpm" + }, + "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonschema-2.6.0-4.el8.noarch.rpm" + }, + "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-hawkey-0.48.0-2.el8.x86_64.rpm" + }, + "sha256:5a85222c8e9997a8b609b915a8fbae756de9b9bff732db852fb15fe0524f2d86": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dbus-1.2.4-15.el8.x86_64.rpm" + }, + "sha256:5bdb82a14d3604899324afc296aa7e7179a15788e2514348eea81b46934d6a3c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/authselect-libs-1.2.1-2.el8.x86_64.rpm" + }, + "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgomp-8.3.1-5.1.el8.x86_64.rpm" + }, + "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lz4-libs-1.8.3-2.el8.x86_64.rpm" + }, + "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonpointer-1.10-11.el8.noarch.rpm" + }, + "sha256:5ef47eb6a042a13c902764907692c1068eb0f69153b47bc85792bef74bfa852b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rsyslog-8.1911.0-6.el8.x86_64.rpm" + }, + "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-libs-5.33-16.el8.x86_64.rpm" + }, + "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lua-libs-5.3.4-11.el8.x86_64.rpm" + }, + "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-6.1-7.20180224.el8.x86_64.rpm" + }, + "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/curl-7.61.1-12.el8.x86_64.rpm" + }, + "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nettle-3.4.1-2.el8.x86_64.rpm" + }, + "sha256:648e239be605f6cdc5b9cc63e316bcad906a4d0df605e7f6188009b0c48fc6d1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/tcpdump-4.9.3-1.el8.x86_64.rpm" + }, + "sha256:65dc391ab1c96d1009ef2e7706eabacd5cf84f2a47ea1cc87f6f5e2c1324b178": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsepol-2.9-1.el8.x86_64.rpm" + }, + "sha256:664a883f3c7042eb91e0b66fc99c309a729011b4912e4af9397f4e25e1adae90": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cloud-utils-growpart-0.31-1.el8.noarch.rpm" + }, + "sha256:671852e4f32de6278dd384d35d1dc799ab5d3e8ef718e89e516452cbcba068f0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sg3_utils-libs-1.44-5.el8.x86_64.rpm" + }, + "sha256:68362500ad574eb2df43a3d260ab8d0f3ce1ae5f34e66d71f2478fef8e17cb4a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/less-530-1.el8.x86_64.rpm" + }, + "sha256:6844197fd8ffdb16cf94ab77709aa2954cb39512435a377401ebce340d06c7de": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/irqbalance-1.4.0-4.el8.x86_64.rpm" + }, + "sha256:686015c78247edec0a0f5e0d2cbbf02d9feea162e5967ed5b5be35d3951b1f3d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dmidecode-3.2-6.el8.x86_64.rpm" + }, + "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-5.3.28-39.el8.x86_64.rpm" + }, + "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/freetype-2.9.1-4.el8.x86_64.rpm" + }, + "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpwquality-1.4.0-9.el8.x86_64.rpm" + }, + "sha256:6cab44ed85c7dc821e84fab9d383f7d0a4b299cc29c8f0860b13e82bb0da8d6f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsoup-2.62.3-1.el8.x86_64.rpm" + }, + "sha256:6d0dcbaa45457461dd5c4afe97689fa2baf5f95551bbe5e827a152dee545a51d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-libnm-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-7.20180224.el8.x86_64.rpm" + }, + "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-0.19.8.1-17.el8.x86_64.rpm" + }, + "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hwdata-0.314-8.5.el8.noarch.rpm" + }, + "sha256:713ec69b972a8e88622b3fcd3b84fccdbd6c333b68b6c52151c2350edad2576a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgudev-232-4.el8.x86_64.rpm" + }, + "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openldap-2.4.46-15.el8.x86_64.rpm" + }, + "sha256:72ff3a3f6c52849a40cb24f9694115a68cc939970a00c374b4c73b1e4c5dc20c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/squashfs-tools-4.3-19.el8.x86_64.rpm" + }, + "sha256:73c29baa2cd94f1ae6a1d1333818969a281b16dd4262f413ad284c5333719a4d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/groff-base-1.22.3-18.el8.x86_64.rpm" + }, + "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libdnf-0.48.0-2.el8.x86_64.rpm" + }, + "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.x86_64.rpm" + }, + "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsemanage-2.9-3.el8.x86_64.rpm" + }, + "sha256:761ff1ccc95562a4512c4bea1d4c2b507c42e3805c9e1e0093c80539a954047b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-1.5.10-6.el8.x86_64.rpm" + }, + "sha256:76ca09c73360f48d4b6fe4d4ee0aa974ef53531222df8e363d8006ec469051cf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-core-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:77edc93b5e83aed2527a58760033fe857c6c8f7807e2169865015acbbe926376": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pixman-0.38.4-1.el8.x86_64.rpm" + }, + "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-libs-1.02.171-3.el8.x86_64.rpm" + }, + "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-utils-5.3.28-39.el8.x86_64.rpm" + }, + "sha256:798420bbda79fd0b9312abac25efad6b28957c512497f37f4beddad5d67dd66a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdaemon-0.14-15.el8.x86_64.rpm" + }, + "sha256:7a7a238ea529165348acef1d1a20c1d47c1ef5838d8501f3879bb130c1b73e06": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-cryptography-2.3-3.el8.x86_64.rpm" + }, + "sha256:7b6856dc4dc1d88d9c3c9597fb824b5776af59f045087bdb2713d64045216a36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/man-db-2.7.6.1-17.el8.x86_64.rpm" + }, + "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pinentry-1.1.0-2.el8.x86_64.rpm" + }, + "sha256:7c0b2b064dad700cba2754b46f483e3e59aaf798740470df1daad3d5239fb893": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/passwd-0.80-3.el8.x86_64.rpm" + }, + "sha256:7c292b3bb74d12d77e1e22221c55696a0c5f50304040b3a706c2164d5b6a42e4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_nss_idmap-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:7c89c2d055013779252c12643e8f0b3731f4dd5e2b61d9d81233a0ee298abb36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libteam-1.29-5.el8.x86_64.rpm" + }, + "sha256:7ce6aa282f9f23c46c44186595924d05f4e7a899b504eb95a0f87008f6620268": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dejavu-fonts-common-2.35-6.el8.noarch.rpm" + }, + "sha256:7d0bc4f2f78166013ef160ed10930a4902c7c5c6d6b7940fc900d36eaacc65a2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cairo-1.15.12-3.el8.x86_64.rpm" + }, + "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/brotli-1.0.6-2.el8.x86_64.rpm" + }, + "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm" + }, + "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libevent-2.1.8-5.el8.x86_64.rpm" + }, + "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-slip-0.6.4-11.el8.noarch.rpm" + }, + "sha256:802263173d9c487fc3ca584cc2a5b7b7bb49ac0d12d9026b3246d50fd0888fb1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-glib-0.110-2.el8.x86_64.rpm" + }, + "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/popt-1.16-14.el8.x86_64.rpm" + }, + "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.x86_64.rpm" + }, + "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-libs-1.8.4-14.el8.x86_64.rpm" + }, + "sha256:860676d4231afa3e6b23933d8dd65e5f7f5823910791e6481d2440ae4ec64c53": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtevent-0.10.2-2.el8.x86_64.rpm" + }, + "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libassuan-2.5.1-3.el8.x86_64.rpm" + }, + "sha256:86d305a1466a596f8b436561d674f2510f268bed9e73f56c87da1dd120f99c18": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gobject-base-3.28.3-2.el8.x86_64.rpm" + }, + "sha256:871672b8a9ffbe887b32e736494c1f005795bc7ffda026c6a063ee0d28788709": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libXrender-0.9.10-7.el8.x86_64.rpm" + }, + "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grubby-8.40-41.el8.x86_64.rpm" + }, + "sha256:8af00d4b0857240310156e05123e07795e6573da7c1fe9e7fd83b51f13971725": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-0.115-11.el8.x86_64.rpm" + }, + "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libfdisk-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pycparser-2.14-14.el8.noarch.rpm" + }, + "sha256:8caac6d04fc98a82d17af56a8faacd1e1a019112ba207388fb82ffdd6df54301": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-cairo-1.16.3-6.el8.x86_64.rpm" + }, + "sha256:8d371e753071edc796d2eadb8278980290511be6279fdf46649c81b859497d6a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/prefixdevname-0.1.0-6.el8.x86_64.rpm" + }, + "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpcap-1.9.1-4.el8.x86_64.rpm" + }, + "sha256:8e2c0324789f42ebb6324847249699eb499544a3e6ad67ccd74713b3c1d6ce78": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-magic-5.33-16.el8.noarch.rpm" + }, + "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/unbound-libs-1.7.3-14.el8.x86_64.rpm" + }, + "sha256:8f00781eb679c6baf359099fa2a672ffccfc8e43b7c03c1dc635619cb25ff01d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm" + }, + "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-libs-2.9.7-12.el8.x86_64.rpm" + }, + "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm" + }, + "sha256:934205ae1baa04b3921065f73096378f1db65990392340ad32042f86c9b5b247": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sos-3.9.1-4.el8.noarch.rpm" + }, + "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libacl-2.2.53-1.el8.x86_64.rpm" + }, + "sha256:947b4e4eebec21501ca62e2a7ff9baae0e4e7c59584fbba4b6276a402cfbb45b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/vim-minimal-8.0.1763-15.el8.x86_64.rpm" + }, + "sha256:9487bff6bb16e7326c8b805751580b4593220ba19b06515c69de83fee8e3bb1f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libselinux-2.9-3.el8.x86_64.rpm" + }, + "sha256:948e61e32986303f12f8dbe40bc44674287b3906a54dadae5e3dfd2ccba88fac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kexec-tools-2.0.20-29.el8.x86_64.rpm" + }, + "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-0.3.0-5.el8.x86_64.rpm" + }, + "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-slip-dbus-0.6.4-11.el8.noarch.rpm" + }, + "sha256:97c8af6f58e3d14317036bd3ed2cbc498803c91c55b9dc0e8f0fddea7ac929e3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-modules-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chkconfig-1.13-2.el8.x86_64.rpm" + }, + "sha256:98a589d7e1cdea9d974aa43f688e55333eed11ce7cb2037d45cc2e69bce579b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/usermode-1.113-1.el8.x86_64.rpm" + }, + "sha256:995a5401cd86404d14d08c0aeafeaa8da3f540b1806f9d0e233d75dec9e45c74": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libmaxminddb-1.2.0-10.el8.x86_64.rpm" + }, + "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:99fa92b5d1e0d335fb2bb961ef39988b50968350b899e8790cead73c9a0bec65": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-rhsm-certificates-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm" + }, + "sha256:9a9ca6857f517f1249d2eb496fe904590d6203e4a9547a28e0b23f21c4cae24a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-pkla-compat-0.1-12.el8.x86_64.rpm" + }, + "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdnf-0.48.0-2.el8.x86_64.rpm" + }, + "sha256:9c5594fcac97c0f8813d7a188e2368e3b1095025fc4a0ecbd5d17e54c0c93f97": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmnl-1.0.4-6.el8.x86_64.rpm" + }, + "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-2.9.6-15.el8.x86_64.rpm" + }, + "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstdc++-8.3.1-5.1.el8.x86_64.rpm" + }, + "sha256:9d9d1bdfba4cd852f90232ebe2c4247e7b3a88c4476578c820788a91d6838e55": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rng-tools-6.8-3.el8.x86_64.rpm" + }, + "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-babel-2.5.1-5.el8.noarch.rpm" + }, + "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64.rpm" + }, + "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libelf-0.180-1.el8.x86_64.rpm" + }, + "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ply-3.9-8.el8.noarch.rpm" + }, + "sha256:a01bc8ab29f40d5e9f03929cee7a796804d63fda3c471054a67d1fd1e5577f6c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-team-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcrypt-1.8.5-4.el8.x86_64.rpm" + }, + "sha256:a143d66ae06409c70fe4323c52c4507a1d7247c59f21951b96279fd7ca173215": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libX11-1.6.8-3.el8.x86_64.rpm" + }, + "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-0.3.14-4.el8.x86_64.rpm" + }, + "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-glib-1.4.4-1.el8.x86_64.rpm" + }, + "sha256:a260f793e49805b188908e2f30c4687abe4e023b20c28a85d10d2371556c3981": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libXau-1.0.9-3.el8.x86_64.rpm" + }, + "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-libs-25-16.el8.x86_64.rpm" + }, + "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/os-prober-1.74-6.el8.x86_64.rpm" + }, + "sha256:a3dedf8c077b4656d3cd4ef641e696397a3fff83ee8b14f0e3fc69d7c10cebcf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lzo-2.08-14.el8.x86_64.rpm" + }, + "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm" + }, + "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libss-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librhsm-0.0.3-3.el8.x86_64.rpm" + }, + "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pysocks-1.6.8-3.el8.noarch.rpm" + }, + "sha256:a842bbdfe4e3f24ef55acd0ed6930639ccaa5980a2774235bc4c6c2a95ab421c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/PackageKit-1.1.12-6.el8.x86_64.rpm" + }, + "sha256:a8808c053ffb7ccf826d80fdd458b6521f2cc63e55eb90d79a504fbb66c36cb0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/checkpolicy-2.9-1.el8.x86_64.rpm" + }, + "sha256:a8961c50502aa02071c043a16f93399ac6794a058a0ef42be889abe60f35985b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iputils-20180629-2.el8.x86_64.rpm" + }, + "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcomps-0.1.11-4.el8.x86_64.rpm" + }, + "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setup-2.12.2-6.el8.noarch.rpm" + }, + "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:abeb97ed3fdd82145fd51f8eeaecfca272e4d1418b17a68241e054425a327aa3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/insights-client-3.0.14-2.el8.noarch.rpm" + }, + "sha256:ac2800369b7f4dc05a8fec452eabedf02f153c11e188a1e80157e35592305690": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-cli-3.5.0-1.el8.x86_64.rpm" + }, + "sha256:ac5e4942921cee7c931186db79f14c54ddda3d98756e37bd6bb5b0a1024f0e82": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-1.0.6-26.el8.x86_64.rpm" + }, + "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rootfiles-8.1-22.el8.noarch.rpm" + }, + "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-minimal-2.02-84.el8.x86_64.rpm" + }, + "sha256:ad9b3b98ace87913e9487fceaae165faffb81e9c32400a72e08cc752cab0d037": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/authselect-1.2.1-2.el8.x86_64.rpm" + }, + "sha256:adab024896eecd08250eb7a7a5e1686df0b945fd1604543877e230163c510f24": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/quota-nls-4.04-10.el8.noarch.rpm" + }, + "sha256:af495353f000008aab42640530c0c9005aaf60f0d4b4cf1a9b66b07bfc5b5881": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-tools-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:af541250a77d208a4128b792479f368c91771d5d7fabac96f768af451eaff154": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gsettings-desktop-schemas-3.32.0-5.el8.x86_64.rpm" + }, + "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hardlink-1.3-6.el8.x86_64.rpm" + }, + "sha256:b0307757d8cc817893b8ad987f332b99871ab5b7adbf5eb737b5d0a662835a6e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gssproxy-0.8.0-16.el8.x86_64.rpm" + }, + "sha256:b156691caa225f0025533a68eeb9a2cf3883062dd209ede9ec07727b358171cc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/teamd-1.29-5.el8.x86_64.rpm" + }, + "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxml2-2.9.7-8.el8.x86_64.rpm" + }, + "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtasn1-4.13-3.el8.x86_64.rpm" + }, + "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnutls-3.6.14-3.el8.x86_64.rpm" + }, + "sha256:b2dcbd3b81196b16e33054d31c0129c432cf59fb591035845cc299bbb46000c1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuser-0.62-23.el8.x86_64.rpm" + }, + "sha256:b446b1469bd535cf94e555525f40fa751b1343d89d589f3cff30ee2d7c38258e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hdparm-9.54-2.el8.x86_64.rpm" + }, + "sha256:b4e89276818abec218c909ca961db9bb2e09b1fc609ff280e6c05227143fa24d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-newt-0.52.20-11.el8.x86_64.rpm" + }, + "sha256:b4fb3d8b0255a5ba9456b61e4f479f2f8355d171263508bbe869af677015fd97": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-python-utils-2.9-9.el8.noarch.rpm" + }, + "sha256:b59cdea55a890a10f484d8596e244a18455ee82920c7e466991801d24c4718cd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lshw-B.02.19.2-2.el8.x86_64.rpm" + }, + "sha256:b5fc6f35798edccd0390e54fce40290936c3699227e79cc6d1a42d803358fd03": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-8.0p1-5.el8.x86_64.rpm" + }, + "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-pam-239-36.el8.x86_64.rpm" + }, + "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libreport-filesystem-2.9.5-11.el8.x86_64.rpm" + }, + "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-2.2.20-2.el8.x86_64.rpm" + }, + "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/basesystem-11-5.el8.noarch.rpm" + }, + "sha256:b9a17114d551cc8259eea6996b6871ec36675330fdb1eb16db529e6f8a9c34d5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lsscsi-0.30-1.el8.x86_64.rpm" + }, + "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/which-2.21-12.el8.x86_64.rpm" + }, + "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonpatch-1.21-2.el8.noarch.rpm" + }, + "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pigz-2.4-4.el8.x86_64.rpm" + }, + "sha256:bdb8cc675da18f659ba06252f1f2604d171373239804c3cbc6004dadded54cd3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/yum-utils-4.0.17-2.el8.noarch.rpm" + }, + "sha256:bed436b103161f7d8f61b617c84f3a7b5509f1d00c8425900a88c222b1331b31": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:beea3f8c88b9c0a74d75622aa71467f51c457d1acf0ff557f7cd0e2ae3dfafe3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_certmap-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-libs-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd-2.9.4-2.el8.x86_64.rpm" + }, + "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsolv-0.7.11-1.el8.x86_64.rpm" + }, + "sha256:bfe5c8ea12012936cc59981a10728e95d5fdadd3e893457af7a27c464d8cb6ba": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libestr-0.1.10-1.el8.x86_64.rpm" + }, + "sha256:c0025c0b08ed82c640fa470e62743aed17a33f7948ed0cc969892d7c149206b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-nfs-idmap-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libs-0.180-1.el8.x86_64.rpm" + }, + "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-libs-1.1.1g-9.el8.x86_64.rpm" + }, + "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-libs-1.18-1.el8.x86_64.rpm" + }, + "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-libs-3.26.0-10.el8.x86_64.rpm" + }, + "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm" + }, + "sha256:c24a1814f0fff7edcbd5cdca29571e8a79c5584e8ef300e89aef906b35c8a67d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bind-export-libs-9.11.20-3.el8.x86_64.rpm" + }, + "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-pkcs11-0.4.10-2.el8.x86_64.rpm" + }, + "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-idna-2.5-5.el8.noarch.rpm" + }, + "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-asn1crypto-0.24.0-3.el8.noarch.rpm" + }, + "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcom_err-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:c4279ad2915f4ce1806c4121675e49d2b525bb6e977d487dc2ad138fce8c2734": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_idmap-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:c46ee71ba426e0964b2264bdf18fc4cff4d7815206c9e8a471bdf678e65c24b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libini_config-1.3.1-39.el8.x86_64.rpm" + }, + "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-hwdata-2.3.6-3.el8.noarch.rpm" + }, + "sha256:c5d0c9a5acc6c2de5e52b38701d6cad5cc37d22c1cb518ca8bcac79bddffaaba": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libappstream-glib-0.7.14-3.el8.x86_64.rpm" + }, + "sha256:c5e978963bda83e9321563bb18f69f3753f2eb510dfdafdc6c4e2856dc6b6302": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugin-subscription-manager-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm" + }, + "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pam-1.3.1-11.el8.x86_64.rpm" + }, + "sha256:c7e767d836fe8aef670eba2fde4f593996fbc0fb304a6666dcd53c0f9af7d184": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib-networking-2.56.1-1.1.el8.x86_64.rpm" + }, + "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:cac59a5629e7229653c29c0d575bd8f8c2d3774474615eb65615109afb151981": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libbasicobjects-0.1.1-39.el8.x86_64.rpm" + }, + "sha256:cb8e7909d58206223ad7108a850218360a6b1e2147d97bc94097962dc820d0de": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setools-4.3.0-1.el8.x86_64.rpm" + }, + "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-1.1.1g-9.el8.x86_64.rpm" + }, + "sha256:cc3df9449002eacd595a73df52eb973d3b37e4c03d4669c7dce6ce7a26dabd6b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm" + }, + "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pytz-2017.2-9.el8.noarch.rpm" + }, + "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmetalink-0.1.3-7.el8.x86_64.rpm" + }, + "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/findutils-4.6.0-20.el8.x86_64.rpm" + }, + "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/acl-2.2.53-1.el8.x86_64.rpm" + }, + "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsigsegv-2.11-5.el8.x86_64.rpm" + }, + "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-unbound-1.7.3-14.el8.x86_64.rpm" + }, + "sha256:d186f806ed9c841a385f7acf194c20b78616396414da9131982e469f065619b8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_autofs-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:d2b777ea98ee644997029994136723cf4fa78e97afeaceab39f76b545b51792b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dmidecode-3.12.2-15.el8.x86_64.rpm" + }, + "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-libs-0.19.8.1-17.el8.x86_64.rpm" + }, + "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-libs-5.2.4-3.el8.x86_64.rpm" + }, + "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libs-3.6.8-30.el8.x86_64.rpm" + }, + "sha256:d3f8a537fc631378fbef3c70ebdf8922d4d8842813d3fb02a7c5fd1663f55179": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-libevent-0.3.0-5.el8.x86_64.rpm" + }, + "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-urllib3-1.24.2-4.el8.noarch.rpm" + }, + "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grep-3.1-6.el8.x86_64.rpm" + }, + "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-extra-2.02-84.el8.x86_64.rpm" + }, + "sha256:d649f6c55cdb75650e55852b1812a0ff3a5d689950abf2ae17fa094501037365": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdk-pixbuf2-2.36.12-5.el8.x86_64.rpm" + }, + "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gpgme-1.13.1-3.el8.x86_64.rpm" + }, + "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libusbx-1.0.23-3.el8.x86_64.rpm" + }, + "sha256:d7c7ba51c19e80dc07f72cfef5467279ab485c652e144cb790c8ce2471040ece": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fontconfig-2.13.1-3.el8.x86_64.rpm" + }, + "sha256:d80219a299035688091aa230b1c9169143c00c141c4f1ad8e75d176d22cc1cd0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:d81c180c682e6014a0da09aaa144492e8cb03c1d61022513ba6db5bd3740f921": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm" + }, + "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libaio-0.3.112-1.el8.x86_64.rpm" + }, + "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-2.9-3.el8.x86_64.rpm" + }, + "sha256:d94a39545f8570ba2d199e4892cfe05ebd5ea6e4e8322790b4f960bf92da5f09": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/numactl-libs-2.0.12-11.el8.x86_64.rpm" + }, + "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-requests-2.20.0-2.1.el8_1.noarch.rpm" + }, + "sha256:da5606af487682acce52799418a97614d0f6e6b72d15c88c4f6f2a076f384dac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pciutils-libs-3.6.4-2.el8.x86_64.rpm" + }, + "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-libs-239-36.el8.x86_64.rpm" + }, + "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libarchive-3.3.2-9.el8.x86_64.rpm" + }, + "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-tools-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:db1fad3c2d8735e69084bd4b09ea963938e4dde2f2e096dc7a4ce146f18b7ab0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fontpackages-filesystem-1.44-22.el8.noarch.rpm" + }, + "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shadow-utils-4.6-10.el8.x86_64.rpm" + }, + "sha256:db7ec7f6349da80049a035a7595523a44dfc5f090026dc3342cc3149d5a31bed": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/quota-4.04-10.el8.x86_64.rpm" + }, + "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-2.02-84.el8.x86_64.rpm" + }, + "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-2.28-127.el8.x86_64.rpm" + }, + "sha256:dd379385bd1d2e05f50c4795e5a0eff9030fdac0fd2579bb4b56233257672b27": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dejavu-sans-mono-fonts-2.35-6.el8.noarch.rpm" + }, + "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-udev-239-36.el8.x86_64.rpm" + }, + "sha256:ddafccd3f010fc75da6de158b5a68fd672f8b3554ac403065490318ce2be05f3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libXext-1.3.4-1.el8.x86_64.rpm" + }, + "sha256:de870435340bf30620406df41b79e43adaf7d0a277db1635a0fae710df993fc0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pyyaml-3.12-12.el8.x86_64.rpm" + }, + "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librepo-1.12.0-1.el8.x86_64.rpm" + }, + "sha256:e0cde0185535bd50f7c5e5e2c0c19b5ab086b6bfa8cea95af9d56ffc81cb26b7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-libs-4.3.6-41.el8.x86_64.rpm" + }, + "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/memstrack-0.1.8-1.el8.x86_64.rpm" + }, + "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gawk-4.2.1-1.el8.x86_64.rpm" + }, + "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmartcols-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/info-6.5-6.el8.x86_64.rpm" + }, + "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-utils-2.9-3.el8.x86_64.rpm" + }, + "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/yum-4.2.23-2.el8.noarch.rpm" + }, + "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-1.02.171-3.el8.x86_64.rpm" + }, + "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-linux-procfs-0.6.2-2.el8.noarch.rpm" + }, + "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuuid-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:e6194926699147659c3a35d9330b5e9706b203aa806c4023c258559f9a0f8ae7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-cockpit-1.27.9-1.el8.noarch.rpm" + }, + "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-policycoreutils-2.9-9.el8.noarch.rpm" + }, + "sha256:e67a1c5f02c3e6fdccaad455fddf0dfdf812069da87d841a22df910bf361cfb9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/net-tools-2.0-0.52.20160912git.el8.x86_64.rpm" + }, + "sha256:e868499743c399baa6463fa64a2534a7d32f8e1cca7b1b47ec00c60b34250bfe": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-markupsafe-0.23-19.el8.x86_64.rpm" + }, + "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-2.9-9.el8.x86_64.rpm" + }, + "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-lib-0.3.14-4.el8.x86_64.rpm" + }, + "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libffi-3.1-22.el8.x86_64.rpm" + }, + "sha256:eb5e29df2e7f803a62769aa19c60959ee7d368cd51397e00ebdbedba7d2d4768": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-common-8.30-8.el8.x86_64.rpm" + }, + "sha256:eb9b37827f1851c8a2683cd86026fda90847afe90d51ea746d7cd5f49f6f90d1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/newt-0.52.20-11.el8.x86_64.rpm" + }, + "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libutempter-1.1.6-14.el8.x86_64.rpm" + }, + "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-0.23.14-5.el8_0.x86_64.rpm" + }, + "sha256:ec26615d079ce89316352f813279f74a44871fa8c26fed8f369b9fe847aa5121": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm" + }, + "sha256:ec9adedf0d5d2d096acf4739e2eefab8095498037e13dac9b283e17a9c54259a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sudo-1.8.29-6.el8.x86_64.rpm" + }, + "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre-8.42-4.el8.x86_64.rpm" + }, + "sha256:ecd2a9cc865d694f02273ca7a6b970a6a799b679174dead75ec7c34ff710ffd2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libproxy-0.4.15-5.2.el8.x86_64.rpm" + }, + "sha256:ecd53a50b4cb20dd1597f45ab4a9cba1fd7793a6000fb2114421687779738672": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcollection-0.7.0-39.el8.x86_64.rpm" + }, + "sha256:ed54b383b0f252dde700d11524046568d98b64829feb77ce2b26080c0c827607": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-logos-81.1-1.el8.x86_64.rpm" + }, + "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/readline-7.0-10.el8.x86_64.rpm" + }, + "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:efa20ae5eca5860656d0131086470cb8d5c3a1ae2819301e7d015f06bbb68a26": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/slang-2.3.2-3.el8.x86_64.rpm" + }, + "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm" + }, + "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm" + }, + "sha256:f2b58d2dfeb45318f8e9e67a96c4f02df69815149ce7b092233a02c0dea19f89": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64.rpm" + }, + "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sed-4.5-2.el8.x86_64.rpm" + }, + "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-0.9.4-2.el8.x86_64.rpm" + }, + "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gzip-1.9-9.el8.x86_64.rpm" + }, + "sha256:f7120ef477465566e3b670d2eea1536d2e8a468b8bbe03d9df164c0280a14395": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cockpit-bridge-222.1-1.el8.x86_64.rpm" + }, + "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-1.2.0-2.el8.x86_64.rpm" + }, + "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64.rpm" + }, + "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/diffutils-3.6-6.el8.x86_64.rpm" + }, + "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm" + }, + "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.x86_64.rpm" + }, + "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcurl-7.61.1-12.el8.x86_64.rpm" + }, + "sha256:fb97246f1e22b2db98fc309470c4d87755ecc59e5b98047c52c4fedbb08d9b6f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rhsm-icons-1.27.9-1.el8.noarch.rpm" + }, + "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dosfstools-4.1-6.el8.x86_64.rpm" + }, + "sha256:fd75c594f871a3353d326833e630ea1d28e5f446f796b836dc628f8c9c039f88": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pydbus-0.6.0-5.el8.noarch.rpm" + }, + "sha256:fd7bc748b59a48a1ba803dc893be729c8624a4141e23fcef126a401857bbb455": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-server-8.0p1-5.el8.x86_64.rpm" + }, + "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm" + }, + "sha256:fd9e5c379cd3482d32686fb13881827a39037e7a7afa92c62d58c1f05fcb797f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mozjs60-60.9.0-4.el8.x86_64.rpm" + }, + "sha256:fdcc4180cae8fa83ca54188fc2f6796a1bc8d7eb7106163b98dd93d974b48cd1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hostname-3.20-6.el8.x86_64.rpm" + }, + "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-jwt-1.6.1-2.el8.noarch.rpm" + }, + "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libblkid-2.32.1-24.el8.x86_64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3" + }, + { + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "checksum": "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710" + }, + { + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "checksum": "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379" + }, + { + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "checksum": "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7" + }, + { + "checksum": "sha256:f2b58d2dfeb45318f8e9e67a96c4f02df69815149ce7b092233a02c0dea19f89" + }, + { + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ] + }, + "runner": "org.osbuild.rhel82" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:0027700684ce09927aded1d2c5bb84028529141a6b418897bde37d4af348f8bb" + }, + { + "checksum": "sha256:6d0dcbaa45457461dd5c4afe97689fa2baf5f95551bbe5e827a152dee545a51d" + }, + { + "checksum": "sha256:a01bc8ab29f40d5e9f03929cee7a796804d63fda3c471054a67d1fd1e5577f6c" + }, + { + "checksum": "sha256:4b8cd13404adac1a30a105e894a733f7c79bfac1a125b8cd095e6ba9c1d056f9" + }, + { + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "checksum": "sha256:cc3df9449002eacd595a73df52eb973d3b37e4c03d4669c7dce6ce7a26dabd6b" + }, + { + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "checksum": "sha256:ad9b3b98ace87913e9487fceaae165faffb81e9c32400a72e08cc752cab0d037" + }, + { + "checksum": "sha256:5bdb82a14d3604899324afc296aa7e7179a15788e2514348eea81b46934d6a3c" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "checksum": "sha256:c24a1814f0fff7edcbd5cdca29571e8a79c5584e8ef300e89aef906b35c8a67d" + }, + { + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "checksum": "sha256:ac5e4942921cee7c931186db79f14c54ddda3d98756e37bd6bb5b0a1024f0e82" + }, + { + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "checksum": "sha256:2334cb78002aa30feeb11549d51e204aa868f5538a09957850082d7efb15b00f" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:a8808c053ffb7ccf826d80fdd458b6521f2cc63e55eb90d79a504fbb66c36cb0" + }, + { + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "checksum": "sha256:10f40567d02123b71bd878ef423dd0d5dca415e806ff041c3c69b99d114fea84" + }, + { + "checksum": "sha256:f7120ef477465566e3b670d2eea1536d2e8a468b8bbe03d9df164c0280a14395" + }, + { + "checksum": "sha256:202cfa88a6b2f1ec6a0bc0546f578c1ca6b5b6fcfeaf3e1228beead14d8bf758" + }, + { + "checksum": "sha256:330b6ab19f2ac365587b1c7536420f63c7a1ec0e4f54903f13fffc9fe1f51527" + }, + { + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "checksum": "sha256:411d65fe9e463458af055d06a4a89a1d822d26049198615c0afc9741c426c77c" + }, + { + "checksum": "sha256:2a65cec3eb67ba7645dd97cf3f3811cd5fb06eea2526d36a683d3fdaa0f2825e" + }, + { + "checksum": "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "checksum": "sha256:802263173d9c487fc3ca584cc2a5b7b7bb49ac0d12d9026b3246d50fd0888fb1" + }, + { + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "checksum": "sha256:7ce6aa282f9f23c46c44186595924d05f4e7a899b504eb95a0f87008f6620268" + }, + { + "checksum": "sha256:dd379385bd1d2e05f50c4795e5a0eff9030fdac0fd2579bb4b56233257672b27" + }, + { + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "checksum": "sha256:289e2a39b2a29163a29da35936d4b484fe356d0a6d519524023e79686daf501b" + }, + { + "checksum": "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2" + }, + { + "checksum": "sha256:e0cde0185535bd50f7c5e5e2c0c19b5ab086b6bfa8cea95af9d56ffc81cb26b7" + }, + { + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "checksum": "sha256:686015c78247edec0a0f5e0d2cbbf02d9feea162e5967ed5b5be35d3951b1f3d" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:c5e978963bda83e9321563bb18f69f3753f2eb510dfdafdc6c4e2856dc6b6302" + }, + { + "checksum": "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c" + }, + { + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "checksum": "sha256:40010441888b72dd077d4d6790f837236701b93c8b31da5dbf65c700fd2571fd" + }, + { + "checksum": "sha256:1faa85c12115426d8afc51c8bed2e71bf1dd87063e25052bcf85c17dbc0d9ea4" + }, + { + "checksum": "sha256:348b7d66a20015563489babbc3850928587575d0acde7c61d55480ebf0f3820d" + }, + { + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "checksum": "sha256:0493fd81825df694be5d15685bfe4dc002de314d18f5ae47ccee769f65ea5013" + }, + { + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "checksum": "sha256:d7c7ba51c19e80dc07f72cfef5467279ab485c652e144cb790c8ce2471040ece" + }, + { + "checksum": "sha256:db1fad3c2d8735e69084bd4b09ea963938e4dde2f2e096dc7a4ce146f18b7ab0" + }, + { + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "checksum": "sha256:d649f6c55cdb75650e55852b1812a0ff3a5d689950abf2ae17fa094501037365" + }, + { + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "checksum": "sha256:c7e767d836fe8aef670eba2fde4f593996fbc0fb304a6666dcd53c0f9af7d184" + }, + { + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "checksum": "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710" + }, + { + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "checksum": "sha256:1065049dbd53849d35db269a23be54148cbe481122381ab71b72f62e83816b26" + }, + { + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "checksum": "sha256:73c29baa2cd94f1ae6a1d1333818969a281b16dd4262f413ad284c5333719a4d" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "checksum": "sha256:af541250a77d208a4128b792479f368c91771d5d7fabac96f768af451eaff154" + }, + { + "checksum": "sha256:b0307757d8cc817893b8ad987f332b99871ab5b7adbf5eb737b5d0a662835a6e" + }, + { + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "checksum": "sha256:b446b1469bd535cf94e555525f40fa751b1343d89d589f3cff30ee2d7c38258e" + }, + { + "checksum": "sha256:fdcc4180cae8fa83ca54188fc2f6796a1bc8d7eb7106163b98dd93d974b48cd1" + }, + { + "checksum": "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f" + }, + { + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "checksum": "sha256:350657e984b1736bb4a8c9cc01b772517a4194467d6db84110c1cc42131f1cae" + }, + { + "checksum": "sha256:206de21c82d76de550bcc1959138472640b0a950a311b753203f5dfe5b201b7b" + }, + { + "checksum": "sha256:4405d32322fd496c65f57a12b6037fd75b49957269dbf9cb0417b598162f7407" + }, + { + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "checksum": "sha256:a8961c50502aa02071c043a16f93399ac6794a058a0ef42be889abe60f35985b" + }, + { + "checksum": "sha256:6844197fd8ffdb16cf94ab77709aa2954cb39512435a377401ebce340d06c7de" + }, + { + "checksum": "sha256:39e59e9a2460e3b6fe147501e79a57042f161c217963be212359031bb8b18daa" + }, + { + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:eb5e29df2e7f803a62769aa19c60959ee7d368cd51397e00ebdbedba7d2d4768" + }, + { + "checksum": "sha256:76ca09c73360f48d4b6fe4d4ee0aa974ef53531222df8e363d8006ec469051cf" + }, + { + "checksum": "sha256:97c8af6f58e3d14317036bd3ed2cbc498803c91c55b9dc0e8f0fddea7ac929e3" + }, + { + "checksum": "sha256:af495353f000008aab42640530c0c9005aaf60f0d4b4cf1a9b66b07bfc5b5881" + }, + { + "checksum": "sha256:4882ff53265bdeabb69f1ac9c585454b28ae799ab31fa72c9eb10bdbe1f41d9a" + }, + { + "checksum": "sha256:948e61e32986303f12f8dbe40bc44674287b3906a54dadae5e3dfd2ccba88fac" + }, + { + "checksum": "sha256:761ff1ccc95562a4512c4bea1d4c2b507c42e3805c9e1e0093c80539a954047b" + }, + { + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "checksum": "sha256:68362500ad574eb2df43a3d260ab8d0f3ce1ae5f34e66d71f2478fef8e17cb4a" + }, + { + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "checksum": "sha256:c5d0c9a5acc6c2de5e52b38701d6cad5cc37d22c1cb518ca8bcac79bddffaaba" + }, + { + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "checksum": "sha256:cac59a5629e7229653c29c0d575bd8f8c2d3774474615eb65615109afb151981" + }, + { + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "checksum": "sha256:ecd53a50b4cb20dd1597f45ab4a9cba1fd7793a6000fb2114421687779738672" + }, + { + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "checksum": "sha256:798420bbda79fd0b9312abac25efad6b28957c512497f37f4beddad5d67dd66a" + }, + { + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "checksum": "sha256:50c0d1828a9e8db638c09d88afb0828d98349027ce498ee7df74e7ff6052ac1d" + }, + { + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "checksum": "sha256:0391105afa53c9503b59591615bd7c98e2f7a4cd94ff4fd1451c4234522f3880" + }, + { + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "checksum": "sha256:713ec69b972a8e88622b3fcd3b84fccdbd6c333b68b6c52151c2350edad2576a" + }, + { + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "checksum": "sha256:c46ee71ba426e0964b2264bdf18fc4cff4d7815206c9e8a471bdf678e65c24b9" + }, + { + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "checksum": "sha256:231bc0eeb8fb127f0a4da5a4da1edd226067d5029a0b4fd6ef72c246ccfc31c0" + }, + { + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "checksum": "sha256:9c5594fcac97c0f8813d7a188e2368e3b1095025fc4a0ecbd5d17e54c0c93f97" + }, + { + "checksum": "sha256:0602b342148d5e8e6a954bb26af60ed63d3f3d919cd3856ea93612e05ebe2937" + }, + { + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "checksum": "sha256:53fb6834e2e439e79225d957c4643922da74836417b5558d0c2943b546b26e57" + }, + { + "checksum": "sha256:2eed977380b41885d4f7ad33e122abbb9ea7391c1255d182451efd457688c8b2" + }, + { + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "checksum": "sha256:0129696c208f60326723c650295167b0600791ccb2e9c3d446c4caf9adecb3d7" + }, + { + "checksum": "sha256:ac2800369b7f4dc05a8fec452eabedf02f153c11e188a1e80157e35592305690" + }, + { + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "checksum": "sha256:2eba2dc51974271244bdeaaf17c6e8fac3c35b62914b680076bdc4a32272df01" + }, + { + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "checksum": "sha256:539abfc369a17023658486f7b4a48c8db159cc4d617b27da256ddac6e15ea687" + }, + { + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "checksum": "sha256:ecd2a9cc865d694f02273ca7a6b970a6a799b679174dead75ec7c34ff710ffd2" + }, + { + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "checksum": "sha256:507442831068c749ba21b22bd96993a1a2a6c74dd53c55f34c7f81a21554c82d" + }, + { + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "checksum": "sha256:6cab44ed85c7dc821e84fab9d383f7d0a4b299cc29c8f0860b13e82bb0da8d6f" + }, + { + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:d186f806ed9c841a385f7acf194c20b78616396414da9131982e469f065619b8" + }, + { + "checksum": "sha256:beea3f8c88b9c0a74d75622aa71467f51c457d1acf0ff557f7cd0e2ae3dfafe3" + }, + { + "checksum": "sha256:c4279ad2915f4ce1806c4121675e49d2b525bb6e977d487dc2ad138fce8c2734" + }, + { + "checksum": "sha256:7c292b3bb74d12d77e1e22221c55696a0c5f50304040b3a706c2164d5b6a42e4" + }, + { + "checksum": "sha256:44e81330b185085f871e9fbf8fae27c8de411600c032aca371dc6d39a3e261da" + }, + { + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "checksum": "sha256:23474f4f3841340af8a7ec5ab2d1fa693d4d72d2f782a5930c799560382916ac" + }, + { + "checksum": "sha256:3a1058c6ba468722090a74002a3239161771b0d8b444975bff891afd45bb672a" + }, + { + "checksum": "sha256:3b087daa7e9de69c051f22f9df1ef00867ffddd99357bc3a215ccde76a13c02f" + }, + { + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "checksum": "sha256:4ed1a6294eea09a3a7e15683267ca5d383e4c2b27fd57fe05d2666e0e6c3d26f" + }, + { + "checksum": "sha256:7c89c2d055013779252c12643e8f0b3731f4dd5e2b61d9d81233a0ee298abb36" + }, + { + "checksum": "sha256:860676d4231afa3e6b23933d8dd65e5f7f5823910791e6481d2440ae4ec64c53" + }, + { + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "checksum": "sha256:b2dcbd3b81196b16e33054d31c0129c432cf59fb591035845cc299bbb46000c1" + }, + { + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "checksum": "sha256:d3f8a537fc631378fbef3c70ebdf8922d4d8842813d3fb02a7c5fd1663f55179" + }, + { + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "checksum": "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9" + }, + { + "checksum": "sha256:37504d807ac0bb6c429d7be9c636f7b755464023511d856846dbb9deb8f6a76d" + }, + { + "checksum": "sha256:b59cdea55a890a10f484d8596e244a18455ee82920c7e466991801d24c4718cd" + }, + { + "checksum": "sha256:b9a17114d551cc8259eea6996b6871ec36675330fdb1eb16db529e6f8a9c34d5" + }, + { + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "checksum": "sha256:a3dedf8c077b4656d3cd4ef641e696397a3fff83ee8b14f0e3fc69d7c10cebcf" + }, + { + "checksum": "sha256:7b6856dc4dc1d88d9c3c9597fb824b5776af59f045087bdb2713d64045216a36" + }, + { + "checksum": "sha256:0e4b7687f0c62f4e336223b939f6cb169c8dac49eee23c53fd919e58d8f989df" + }, + { + "checksum": "sha256:fd9e5c379cd3482d32686fb13881827a39037e7a7afa92c62d58c1f05fcb797f" + }, + { + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "checksum": "sha256:e67a1c5f02c3e6fdccaad455fddf0dfdf812069da87d841a22df910bf361cfb9" + }, + { + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "checksum": "sha256:eb9b37827f1851c8a2683cd86026fda90847afe90d51ea746d7cd5f49f6f90d1" + }, + { + "checksum": "sha256:14f5ca00582f8d8780a0bcc1b204fb73cfdb35c5725efa4eccffbe8a1988769e" + }, + { + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "checksum": "sha256:d94a39545f8570ba2d199e4892cfe05ebd5ea6e4e8322790b4f960bf92da5f09" + }, + { + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "checksum": "sha256:b5fc6f35798edccd0390e54fce40290936c3699227e79cc6d1a42d803358fd03" + }, + { + "checksum": "sha256:3730f3f8d3332836f278250408891cb097379a5d7745fe698b1d418e9e13d335" + }, + { + "checksum": "sha256:fd7bc748b59a48a1ba803dc893be729c8624a4141e23fcef126a401857bbb455" + }, + { + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "checksum": "sha256:22585bd5d69c5e0a06fe00a6844da2e5d311512374c1d176f17f41caab7e121f" + }, + { + "checksum": "sha256:7c0b2b064dad700cba2754b46f483e3e59aaf798740470df1daad3d5239fb893" + }, + { + "checksum": "sha256:22942af5dab657f662538619ab84a260d3c92e3498694fca2a126100ff9ab316" + }, + { + "checksum": "sha256:da5606af487682acce52799418a97614d0f6e6b72d15c88c4f6f2a076f384dac" + }, + { + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "checksum": "sha256:b4fb3d8b0255a5ba9456b61e4f479f2f8355d171263508bbe869af677015fd97" + }, + { + "checksum": "sha256:8af00d4b0857240310156e05123e07795e6573da7c1fe9e7fd83b51f13971725" + }, + { + "checksum": "sha256:441efa6f0b9a9905ef11ec987d6db89e7dba2857060020c4554e32db3e59fce5" + }, + { + "checksum": "sha256:9a9ca6857f517f1249d2eb496fe904590d6203e4a9547a28e0b23f21c4cae24a" + }, + { + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "checksum": "sha256:8d371e753071edc796d2eadb8278980290511be6279fdf46649c81b859497d6a" + }, + { + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34" + }, + { + "checksum": "sha256:8f00781eb679c6baf359099fa2a672ffccfc8e43b7c03c1dc635619cb25ff01d" + }, + { + "checksum": "sha256:13ffce0597b689dd53f55ea0d03dd6d013246634f5c6cbcef51fa549d9734b29" + }, + { + "checksum": "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786" + }, + { + "checksum": "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367" + }, + { + "checksum": "sha256:7a7a238ea529165348acef1d1a20c1d47c1ef5838d8501f3879bb130c1b73e06" + }, + { + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "checksum": "sha256:5a85222c8e9997a8b609b915a8fbae756de9b9bff732db852fb15fe0524f2d86" + }, + { + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "checksum": "sha256:d2b777ea98ee644997029994136723cf4fa78e97afeaceab39f76b545b51792b" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87" + }, + { + "checksum": "sha256:20dec130e4fd0a2146443791ca7ade6e079cea691d93711813d5f483b691c55a" + }, + { + "checksum": "sha256:86d305a1466a596f8b436561d674f2510f268bed9e73f56c87da1dd120f99c18" + }, + { + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "checksum": "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20" + }, + { + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "checksum": "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c" + }, + { + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "checksum": "sha256:4ca553b0c0f6dc130e05e2011cdf1f52132e8f70bd93be8eee4e415b2cac0c56" + }, + { + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "checksum": "sha256:9487bff6bb16e7326c8b805751580b4593220ba19b06515c69de83fee8e3bb1f" + }, + { + "checksum": "sha256:09fc3154e76c8ee25b3982c15f3bc455017262c3df5af84075859dcbf79e4f82" + }, + { + "checksum": "sha256:4ccbefcbe75decfef38ccae5d8ff92ba6b00e8232b64ec46ae0c0be8ae20ec50" + }, + { + "checksum": "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f" + }, + { + "checksum": "sha256:8e2c0324789f42ebb6324847249699eb499544a3e6ad67ccd74713b3c1d6ce78" + }, + { + "checksum": "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6" + }, + { + "checksum": "sha256:18d419718a99851370262584bec1b27d60cbd08845b50fbe97e1a56b71cd5ea2" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9" + }, + { + "checksum": "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42" + }, + { + "checksum": "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf" + }, + { + "checksum": "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280" + }, + { + "checksum": "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde" + }, + { + "checksum": "sha256:de870435340bf30620406df41b79e43adaf7d0a277db1635a0fae710df993fc0" + }, + { + "checksum": "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a" + }, + { + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "checksum": "sha256:09ca7b05e26f93d35ac299dbcd865b65ec3a3d2654e1da87d2c3c0462dbe6e4a" + }, + { + "checksum": "sha256:cb8e7909d58206223ad7108a850218360a6b1e2147d97bc94097962dc820d0de" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "checksum": "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb" + }, + { + "checksum": "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d" + }, + { + "checksum": "sha256:0f3b084d947bc246fe68822129b8ae1294c4187270a19f0966282baf75b34dc6" + }, + { + "checksum": "sha256:206cba480b58c70348584010d547d21bcd84c6094fd3980e22c6b640da12704c" + }, + { + "checksum": "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53" + }, + { + "checksum": "sha256:db7ec7f6349da80049a035a7595523a44dfc5f090026dc3342cc3149d5a31bed" + }, + { + "checksum": "sha256:adab024896eecd08250eb7a7a5e1686df0b945fd1604543877e230163c510f24" + }, + { + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "checksum": "sha256:ed54b383b0f252dde700d11524046568d98b64829feb77ce2b26080c0c827607" + }, + { + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "checksum": "sha256:fb97246f1e22b2db98fc309470c4d87755ecc59e5b98047c52c4fedbb08d9b6f" + }, + { + "checksum": "sha256:9d9d1bdfba4cd852f90232ebe2c4247e7b3a88c4476578c820788a91d6838e55" + }, + { + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "checksum": "sha256:516acd98bf46b3b2e09fd0d2f0cf1fbf4ecbecc9b0e10028c3a26ce9a6aca393" + }, + { + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "checksum": "sha256:3e180253732f00c919aaebc9aaa0562eefac466ce145ce5ad5e1092453aeebaa" + }, + { + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:398c1abc82097370f46e6fdf4dae63870e1f767b24d0130c79ed67ea3a67233a" + }, + { + "checksum": "sha256:671852e4f32de6278dd384d35d1dc799ab5d3e8ef718e89e516452cbcba068f0" + }, + { + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "checksum": "sha256:efa20ae5eca5860656d0131086470cb8d5c3a1ae2819301e7d015f06bbb68a26" + }, + { + "checksum": "sha256:4403330cdf4f15d75d727e2ac8c3358ff6a13209b3395dfac2131984e443eb23" + }, + { + "checksum": "sha256:934205ae1baa04b3921065f73096378f1db65990392340ad32042f86c9b5b247" + }, + { + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "checksum": "sha256:72ff3a3f6c52849a40cb24f9694115a68cc939970a00c374b4c73b1e4c5dc20c" + }, + { + "checksum": "sha256:2e90748420a7d28b3063df04de129e79ea85310a8d9cf2faf0a2e7b8430307c8" + }, + { + "checksum": "sha256:14098d36fe4be983fac73d04aeacf0ed7977d962e760907b89e3f80b4ca46f3f" + }, + { + "checksum": "sha256:1b1fe43a375a21f4c3ccf04861c122fd519d4865b9c1abc7f1973b86a0252a06" + }, + { + "checksum": "sha256:c0025c0b08ed82c640fa470e62743aed17a33f7948ed0cc969892d7c149206b3" + }, + { + "checksum": "sha256:65dc391ab1c96d1009ef2e7706eabacd5cf84f2a47ea1cc87f6f5e2c1324b178" + }, + { + "checksum": "sha256:e6194926699147659c3a35d9330b5e9706b203aa806c4023c258559f9a0f8ae7" + }, + { + "checksum": "sha256:99fa92b5d1e0d335fb2bb961ef39988b50968350b899e8790cead73c9a0bec65" + }, + { + "checksum": "sha256:ec9adedf0d5d2d096acf4739e2eefab8095498037e13dac9b283e17a9c54259a" + }, + { + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "checksum": "sha256:b156691caa225f0025533a68eeb9a2cf3883062dd209ede9ec07727b358171cc" + }, + { + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "checksum": "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:98a589d7e1cdea9d974aa43f688e55333eed11ce7cb2037d45cc2e69bce579b3" + }, + { + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "checksum": "sha256:947b4e4eebec21501ca62e2a7ff9baae0e4e7c59584fbba4b6276a402cfbb45b" + }, + { + "checksum": "sha256:2cfcc3d6163dfaf7ce76998be992bd0b70dd7cbb838430cecf2aff04cd435d24" + }, + { + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "checksum": "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4" + }, + { + "checksum": "sha256:bdb8cc675da18f659ba06252f1f2604d171373239804c3cbc6004dadded54cd3" + }, + { + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "checksum": "sha256:a842bbdfe4e3f24ef55acd0ed6930639ccaa5980a2774235bc4c6c2a95ab421c" + }, + { + "checksum": "sha256:468b540f98263d7b274c722a7b8f18ac1ab9d88783cfca6561c85e56b36afeee" + }, + { + "checksum": "sha256:1594afba86593ec614299ef6af255755a98ea55a34a72a22fdc9d80a040be39d" + }, + { + "checksum": "sha256:7d0bc4f2f78166013ef160ed10930a4902c7c5c6d6b7940fc900d36eaacc65a2" + }, + { + "checksum": "sha256:18fd9b2a61147367ad7d51798d33db38aedbaf761f3d0561c752f0048d1f4221" + }, + { + "checksum": "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2" + }, + { + "checksum": "sha256:664a883f3c7042eb91e0b66fc99c309a729011b4912e4af9397f4e25e1adae90" + }, + { + "checksum": "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b" + }, + { + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "checksum": "sha256:abeb97ed3fdd82145fd51f8eeaecfca272e4d1418b17a68241e054425a327aa3" + }, + { + "checksum": "sha256:a143d66ae06409c70fe4323c52c4507a1d7247c59f21951b96279fd7ca173215" + }, + { + "checksum": "sha256:593d4df5b8de12ed0ec5a0935cb0bd966e27a631aa0806250ba9f67092ad737f" + }, + { + "checksum": "sha256:a260f793e49805b188908e2f30c4687abe4e023b20c28a85d10d2371556c3981" + }, + { + "checksum": "sha256:ddafccd3f010fc75da6de158b5a68fd672f8b3554ac403065490318ce2be05f3" + }, + { + "checksum": "sha256:871672b8a9ffbe887b32e736494c1f005795bc7ffda026c6a063ee0d28788709" + }, + { + "checksum": "sha256:bfe5c8ea12012936cc59981a10728e95d5fdadd3e893457af7a27c464d8cb6ba" + }, + { + "checksum": "sha256:474a66a4cf3d5a00286be40c15bad69ea1ac63a9424a1ff44f20a548a7686f7a" + }, + { + "checksum": "sha256:995a5401cd86404d14d08c0aeafeaa8da3f540b1806f9d0e233d75dec9e45c74" + }, + { + "checksum": "sha256:39e6bc1e8101e536066554702d5d6b25f8cad359fb5e02ac598cfdad56eafb6d" + }, + { + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "checksum": "sha256:77edc93b5e83aed2527a58760033fe857c6c8f7807e2169865015acbbe926376" + }, + { + "checksum": "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28" + }, + { + "checksum": "sha256:8caac6d04fc98a82d17af56a8faacd1e1a019112ba207388fb82ffdd6df54301" + }, + { + "checksum": "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43" + }, + { + "checksum": "sha256:4229196b5ea88c1133d5509a2ec326093a2c7ac5566ca4abb55c3d6fab47130a" + }, + { + "checksum": "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362" + }, + { + "checksum": "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64" + }, + { + "checksum": "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835" + }, + { + "checksum": "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf" + }, + { + "checksum": "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b" + }, + { + "checksum": "sha256:e868499743c399baa6463fa64a2534a7d32f8e1cca7b1b47ec00c60b34250bfe" + }, + { + "checksum": "sha256:3edf7d29e530e6568416d4455e9fbaa511aba236c603da9928e689fae77b9874" + }, + { + "checksum": "sha256:b4e89276818abec218c909ca961db9bb2e09b1fc609ff280e6c05227143fa24d" + }, + { + "checksum": "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55" + }, + { + "checksum": "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21" + }, + { + "checksum": "sha256:fd75c594f871a3353d326833e630ea1d28e5f446f796b836dc628f8c9c039f88" + }, + { + "checksum": "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414" + }, + { + "checksum": "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca" + }, + { + "checksum": "sha256:15462b748aef3c565bcf4f849c1a21c1389a8ef5e7dae94e64718865a67d46a9" + }, + { + "checksum": "sha256:bed436b103161f7d8f61b617c84f3a7b5509f1d00c8425900a88c222b1331b31" + }, + { + "checksum": "sha256:ec26615d079ce89316352f813279f74a44871fa8c26fed8f369b9fe847aa5121" + }, + { + "checksum": "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a" + }, + { + "checksum": "sha256:534bbf990d0f0537715561c818c2b68f10e6ba0cc1252a32a0696f1e22fde1e3" + }, + { + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "checksum": "sha256:3d1dfe2e487e06efda133298a0fd0913f95b61c4373332db110b496aaadc8f05" + }, + { + "checksum": "sha256:d81c180c682e6014a0da09aaa144492e8cb03c1d61022513ba6db5bd3740f921" + }, + { + "checksum": "sha256:d80219a299035688091aa230b1c9169143c00c141c4f1ad8e75d176d22cc1cd0" + }, + { + "checksum": "sha256:4931d78c496eaaa8e6b6bbec2b4750da52b9fc7e989ae89b7c1fa2a6f40ff7fa" + }, + { + "checksum": "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42" + }, + { + "checksum": "sha256:00cc9cd4517cbb4ad99dbce63b40b700699523550cd7f8202948af28dbe2cd9e" + }, + { + "checksum": "sha256:5ef47eb6a042a13c902764907692c1068eb0f69153b47bc85792bef74bfa852b" + }, + { + "checksum": "sha256:3459ac9ecad925e511502cff687ceb77f52f391303793f7670794a5c0b040f3d" + }, + { + "checksum": "sha256:3babb3a2d4bdffe51f8453a1a4151688a76b48327d37464e11f7c6529c888b30" + }, + { + "checksum": "sha256:211d74a081c06399001bf09c59e941b444f3175d2900a02775a232f4c83d3fb1" + }, + { + "checksum": "sha256:648e239be605f6cdc5b9cc63e316bcad906a4d0df605e7f6188009b0c48fc6d1" + }, + { + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "vfs_type": "xfs", + "path": "/", + "options": "defaults" + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "kernel_opts": "console=ttyS0 console=ttyS0,115200n8 no_timer_check crashkernel=auto net.ifnames=0", + "legacy": "i386-pc" + } + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "redhat": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "qcow2", + "filename": "disk.qcow2", + "size": 4294967296, + "ptuuid": "0x14fc63d2", + "pttype": "mbr", + "partitions": [ + { + "start": 2048, + "bootable": true, + "filesystem": { + "type": "xfs", + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/acl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-4.4.19-12.el8.x86_64.rpm", + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/brotli-1.0.6-2.el8.x86_64.rpm", + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-libs-1.0.6-26.el8.x86_64.rpm", + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chkconfig-1.13-2.el8.x86_64.rpm", + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-common-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cpio-2.12-8.el8.x86_64.rpm", + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-dicts-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-libs-2.3.3-1.el8.x86_64.rpm", + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/curl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.x86_64.rpm", + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-daemon-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-libs-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-tools-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-libs-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/diffutils-3.6-6.el8.x86_64.rpm", + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dosfstools-4.1-6.el8.x86_64.rpm", + "checksum": "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libelf-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libs-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/expat-2.2.5-4.el8.x86_64.rpm", + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-libs-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/filesystem-3.8-3.el8.x86_64.rpm", + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/findutils-4.6.0-20.el8.x86_64.rpm", + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/freetype-2.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-libs-2.9.7-12.el8.x86_64.rpm", + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gawk-4.2.1-1.el8.x86_64.rpm", + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-libs-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-libs-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib2-2.56.4-8.el8.x86_64.rpm", + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-all-langpacks-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-common-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gmp-6.1.2-10.el8.x86_64.rpm", + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-smime-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnutls-3.6.14-3.el8.x86_64.rpm", + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gpgme-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grep-3.1-6.el8.x86_64.rpm", + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-modules-2.02-84.el8.noarch.rpm", + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-extra-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-minimal-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grubby-8.40-41.el8.x86_64.rpm", + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gzip-1.9-9.el8.x86_64.rpm", + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hardlink-1.3-6.el8.x86_64.rpm", + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ima-evm-utils-1.1-5.el8.x86_64.rpm", + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/info-6.5-6.el8.x86_64.rpm", + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-libs-1.8.4-14.el8.x86_64.rpm", + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-c-0.13.1-0.2.el8.x86_64.rpm", + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-glib-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-2.0.4-10.el8.x86_64.rpm", + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-libs-1.5.10-6.el8.x86_64.rpm", + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-25-16.el8.x86_64.rpm", + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-libs-25-16.el8.x86_64.rpm", + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kpartx-0.8.4-2.el8.x86_64.rpm", + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/krb5-libs-1.18.2-3.el8.x86_64.rpm", + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libacl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.112", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libaio-0.3.112-1.el8.x86_64.rpm", + "checksum": "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libarchive-3.3.2-9.el8.x86_64.rpm", + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libassuan-2.5.1-3.el8.x86_64.rpm", + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libattr-2.4.48-3.el8.x86_64.rpm", + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libblkid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-2.26-4.el8.x86_64.rpm", + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-ng-0.7.9-5.el8.x86_64.rpm", + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcom_err-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcroco-0.6.12-4.el8.x86_64.rpm", + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcurl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-utils-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libevent-2.1.8-5.el8.x86_64.rpm", + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libfdisk-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libffi-3.1-22.el8.x86_64.rpm", + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcc-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcrypt-1.8.5-4.el8.x86_64.rpm", + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgomp-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgpg-error-1.31-1.el8.x86_64.rpm", + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libidn2-2.2.0-1.el8.x86_64.rpm", + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libksba-1.3.5-7.el8.x86_64.rpm", + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmetalink-0.1.3-7.el8.x86_64.rpm", + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd-2.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmount-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.x86_64.rpm", + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64.rpm", + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpcap-1.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.34", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpng-1.6.34-5.el8.x86_64.rpm", + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpsl-0.20.2-6.el8.x86_64.rpm", + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpwquality-1.4.0-9.el8.x86_64.rpm", + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librepo-1.12.0-1.el8.x86_64.rpm", + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libreport-filesystem-2.9.5-11.el8.x86_64.rpm", + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librhsm-0.0.3-3.el8.x86_64.rpm", + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libseccomp-2.4.3-1.el8.x86_64.rpm", + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsecret-0.18.6-1.el8.x86_64.rpm", + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-utils-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsemanage-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsepol-2.9-1.el8.x86_64.rpm", + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsigsegv-2.11-5.el8.x86_64.rpm", + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmartcols-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsolv-0.7.11-1.el8.x86_64.rpm", + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libss-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-0.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstdc++-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtasn1-4.13-3.el8.x86_64.rpm", + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtirpc-1.1.4-4.el8.x86_64.rpm", + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libunistring-0.9.9-3.el8.x86_64.rpm", + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libusbx-1.0.23-3.el8.x86_64.rpm", + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libutempter-1.1.6-14.el8.x86_64.rpm", + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuuid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-0.3.0-5.el8.x86_64.rpm", + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxcrypt-4.1.1-4.el8.x86_64.rpm", + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxml2-2.9.7-8.el8.x86_64.rpm", + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libyaml-0.1.7-5.el8.x86_64.rpm", + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libzstd-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lua-libs-5.3.4-11.el8.x86_64.rpm", + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lz4-libs-1.8.3-2.el8.x86_64.rpm", + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mpfr-3.1.6-1.el8.x86_64.rpm", + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nettle-3.4.1-2.el8.x86_64.rpm", + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/npth-1.5-4.el8.x86_64.rpm", + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openldap-2.4.46-15.el8.x86_64.rpm", + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-libs-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-pkcs11-0.4.10-2.el8.x86_64.rpm", + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/os-prober-1.74-6.el8.x86_64.rpm", + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pam-1.3.1-11.el8.x86_64.rpm", + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre-8.42-4.el8.x86_64.rpm", + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre2-10.32-2.el8.x86_64.rpm", + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pigz-2.4-4.el8.x86_64.rpm", + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-2.9-9.el8.x86_64.rpm", + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/popt-1.16-14.el8.x86_64.rpm", + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/procps-ng-3.3.15-2.el8.x86_64.rpm", + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gpg-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-hawkey-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libs-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/readline-7.0-10.el8.x86_64.rpm", + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-eula-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-build-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sed-4.5-2.el8.x86_64.rpm", + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shadow-utils-4.6-10.el8.x86_64.rpm", + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shared-mime-info-1.9-3.el8.x86_64.rpm", + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-libs-3.26.0-10.el8.x86_64.rpm", + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-239-36.el8.x86_64.rpm", + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-libs-239-36.el8.x86_64.rpm", + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-pam-239-36.el8.x86_64.rpm", + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-udev-239-36.el8.x86_64.rpm", + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tar-1.30-5.el8.x86_64.rpm", + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-lib-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/util-linux-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/which-2.21-12.el8.x86_64.rpm", + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xfsprogs-5.0.0-4.el8.x86_64.rpm", + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-libs-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/zlib-1.2.11-15.el8.x86_64.rpm", + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxkbcommon-0.9.1-1.el8.x86_64.rpm", + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/memstrack-0.1.8-1.el8.x86_64.rpm", + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pinentry-1.1.0-2.el8.x86_64.rpm", + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-unbound-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "name": "python36", + "epoch": 0, + "version": "3.6.8", + "release": "2.module+el8.1.0+3334+5cb623d7", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64.rpm", + "checksum": "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7" + }, + { + "name": "qemu-img", + "epoch": 15, + "version": "4.2.0", + "release": "29.module+el8.3.0+7212+401047e6", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64.rpm", + "checksum": "sha256:f2b58d2dfeb45318f8e9e67a96c4f02df69815149ce7b092233a02c0dea19f89" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/unbound-libs-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:0027700684ce09927aded1d2c5bb84028529141a6b418897bde37d4af348f8bb" + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-libnm-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:6d0dcbaa45457461dd5c4afe97689fa2baf5f95551bbe5e827a152dee545a51d" + }, + { + "name": "NetworkManager-team", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-team-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:a01bc8ab29f40d5e9f03929cee7a796804d63fda3c471054a67d1fd1e5577f6c" + }, + { + "name": "NetworkManager-tui", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-tui-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:4b8cd13404adac1a30a105e894a733f7c79bfac1a125b8cd095e6ba9c1d056f9" + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/acl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:cc3df9449002eacd595a73df52eb973d3b37e4c03d4669c7dce6ce7a26dabd6b" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "name": "authselect", + "epoch": 0, + "version": "1.2.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/authselect-1.2.1-2.el8.x86_64.rpm", + "checksum": "sha256:ad9b3b98ace87913e9487fceaae165faffb81e9c32400a72e08cc752cab0d037" + }, + { + "name": "authselect-libs", + "epoch": 0, + "version": "1.2.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/authselect-libs-1.2.1-2.el8.x86_64.rpm", + "checksum": "sha256:5bdb82a14d3604899324afc296aa7e7179a15788e2514348eea81b46934d6a3c" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-4.4.19-12.el8.x86_64.rpm", + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "name": "bind-export-libs", + "epoch": 32, + "version": "9.11.20", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bind-export-libs-9.11.20-3.el8.x86_64.rpm", + "checksum": "sha256:c24a1814f0fff7edcbd5cdca29571e8a79c5584e8ef300e89aef906b35c8a67d" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/brotli-1.0.6-2.el8.x86_64.rpm", + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "name": "bzip2", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-1.0.6-26.el8.x86_64.rpm", + "checksum": "sha256:ac5e4942921cee7c931186db79f14c54ddda3d98756e37bd6bb5b0a1024f0e82" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-libs-1.0.6-26.el8.x86_64.rpm", + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.13.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/c-ares-1.13.0-5.el8.x86_64.rpm", + "checksum": "sha256:2334cb78002aa30feeb11549d51e204aa868f5538a09957850082d7efb15b00f" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/checkpolicy-2.9-1.el8.x86_64.rpm", + "checksum": "sha256:a8808c053ffb7ccf826d80fdd458b6521f2cc63e55eb90d79a504fbb66c36cb0" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chkconfig-1.13-2.el8.x86_64.rpm", + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chrony-3.5-1.el8.x86_64.rpm", + "checksum": "sha256:10f40567d02123b71bd878ef423dd0d5dca415e806ff041c3c69b99d114fea84" + }, + { + "name": "cockpit-bridge", + "epoch": 0, + "version": "222.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cockpit-bridge-222.1-1.el8.x86_64.rpm", + "checksum": "sha256:f7120ef477465566e3b670d2eea1536d2e8a468b8bbe03d9df164c0280a14395" + }, + { + "name": "cockpit-system", + "epoch": 0, + "version": "222.1", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cockpit-system-222.1-1.el8.noarch.rpm", + "checksum": "sha256:202cfa88a6b2f1ec6a0bc0546f578c1ca6b5b6fcfeaf3e1228beead14d8bf758" + }, + { + "name": "cockpit-ws", + "epoch": 0, + "version": "222.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cockpit-ws-222.1-1.el8.x86_64.rpm", + "checksum": "sha256:330b6ab19f2ac365587b1c7536420f63c7a1ec0e4f54903f13fffc9fe1f51527" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-common-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cpio-2.12-8.el8.x86_64.rpm", + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-dicts-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "name": "cronie", + "epoch": 0, + "version": "1.5.2", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cronie-1.5.2-4.el8.x86_64.rpm", + "checksum": "sha256:411d65fe9e463458af055d06a4a89a1d822d26049198615c0afc9741c426c77c" + }, + { + "name": "cronie-anacron", + "epoch": 0, + "version": "1.5.2", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cronie-anacron-1.5.2-4.el8.x86_64.rpm", + "checksum": "sha256:2a65cec3eb67ba7645dd97cf3f3811cd5fb06eea2526d36a683d3fdaa0f2825e" + }, + { + "name": "crontabs", + "epoch": 0, + "version": "1.11", + "release": "16.20150630git.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crontabs-1.11-16.20150630git.el8.noarch.rpm", + "checksum": "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-libs-2.3.3-1.el8.x86_64.rpm", + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/curl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.x86_64.rpm", + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-daemon-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "name": "dbus-glib", + "epoch": 0, + "version": "0.110", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-glib-0.110-2.el8.x86_64.rpm", + "checksum": "sha256:802263173d9c487fc3ca584cc2a5b7b7bb49ac0d12d9026b3246d50fd0888fb1" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-libs-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-tools-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "name": "dejavu-fonts-common", + "epoch": 0, + "version": "2.35", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dejavu-fonts-common-2.35-6.el8.noarch.rpm", + "checksum": "sha256:7ce6aa282f9f23c46c44186595924d05f4e7a899b504eb95a0f87008f6620268" + }, + { + "name": "dejavu-sans-mono-fonts", + "epoch": 0, + "version": "2.35", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dejavu-sans-mono-fonts-2.35-6.el8.noarch.rpm", + "checksum": "sha256:dd379385bd1d2e05f50c4795e5a0eff9030fdac0fd2579bb4b56233257672b27" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-libs-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-client-4.3.6-41.el8.x86_64.rpm", + "checksum": "sha256:289e2a39b2a29163a29da35936d4b484fe356d0a6d519524023e79686daf501b" + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-common-4.3.6-41.el8.noarch.rpm", + "checksum": "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2" + }, + { + "name": "dhcp-libs", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-libs-4.3.6-41.el8.x86_64.rpm", + "checksum": "sha256:e0cde0185535bd50f7c5e5e2c0c19b5ab086b6bfa8cea95af9d56ffc81cb26b7" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/diffutils-3.6-6.el8.x86_64.rpm", + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "name": "dmidecode", + "epoch": 1, + "version": "3.2", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dmidecode-3.2-6.el8.x86_64.rpm", + "checksum": "sha256:686015c78247edec0a0f5e0d2cbbf02d9feea162e5967ed5b5be35d3951b1f3d" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dnf-plugin-subscription-manager", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugin-subscription-manager-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:c5e978963bda83e9321563bb18f69f3753f2eb510dfdafdc6c4e2856dc6b6302" + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugins-core-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-config-generic-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:40010441888b72dd077d4d6790f837236701b93c8b31da5dbf65c700fd2571fd" + }, + { + "name": "dracut-network", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-network-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:1faa85c12115426d8afc51c8bed2e71bf1dd87063e25052bcf85c17dbc0d9ea4" + }, + { + "name": "dracut-squash", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-squash-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:348b7d66a20015563489babbc3850928587575d0acde7c61d55480ebf0f3820d" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libelf-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libs-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "name": "ethtool", + "epoch": 2, + "version": "5.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ethtool-5.0-2.el8.x86_64.rpm", + "checksum": "sha256:0493fd81825df694be5d15685bfe4dc002de314d18f5ae47ccee769f65ea5013" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/expat-2.2.5-4.el8.x86_64.rpm", + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-libs-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/filesystem-3.8-3.el8.x86_64.rpm", + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/findutils-4.6.0-20.el8.x86_64.rpm", + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "name": "fontconfig", + "epoch": 0, + "version": "2.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fontconfig-2.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:d7c7ba51c19e80dc07f72cfef5467279ab485c652e144cb790c8ce2471040ece" + }, + { + "name": "fontpackages-filesystem", + "epoch": 0, + "version": "1.44", + "release": "22.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fontpackages-filesystem-1.44-22.el8.noarch.rpm", + "checksum": "sha256:db1fad3c2d8735e69084bd4b09ea963938e4dde2f2e096dc7a4ce146f18b7ab0" + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/freetype-2.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-libs-2.9.7-12.el8.x86_64.rpm", + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gawk-4.2.1-1.el8.x86_64.rpm", + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-libs-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "name": "gdk-pixbuf2", + "epoch": 0, + "version": "2.36.12", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdk-pixbuf2-2.36.12-5.el8.x86_64.rpm", + "checksum": "sha256:d649f6c55cdb75650e55852b1812a0ff3a5d689950abf2ae17fa094501037365" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-libs-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.56.1", + "release": "1.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib-networking-2.56.1-1.1.el8.x86_64.rpm", + "checksum": "sha256:c7e767d836fe8aef670eba2fde4f593996fbc0fb304a6666dcd53c0f9af7d184" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib2-2.56.4-8.el8.x86_64.rpm", + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-all-langpacks-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-common-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gmp-6.1.2-10.el8.x86_64.rpm", + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-smime-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnutls-3.6.14-3.el8.x86_64.rpm", + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.56.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gobject-introspection-1.56.1-1.el8.x86_64.rpm", + "checksum": "sha256:1065049dbd53849d35db269a23be54148cbe481122381ab71b72f62e83816b26" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gpgme-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grep-3.1-6.el8.x86_64.rpm", + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "18.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/groff-base-1.22.3-18.el8.x86_64.rpm", + "checksum": "sha256:73c29baa2cd94f1ae6a1d1333818969a281b16dd4262f413ad284c5333719a4d" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-modules-2.02-84.el8.noarch.rpm", + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-extra-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-minimal-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grubby-8.40-41.el8.x86_64.rpm", + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.32.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gsettings-desktop-schemas-3.32.0-5.el8.x86_64.rpm", + "checksum": "sha256:af541250a77d208a4128b792479f368c91771d5d7fabac96f768af451eaff154" + }, + { + "name": "gssproxy", + "epoch": 0, + "version": "0.8.0", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gssproxy-0.8.0-16.el8.x86_64.rpm", + "checksum": "sha256:b0307757d8cc817893b8ad987f332b99871ab5b7adbf5eb737b5d0a662835a6e" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gzip-1.9-9.el8.x86_64.rpm", + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hardlink-1.3-6.el8.x86_64.rpm", + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "name": "hdparm", + "epoch": 0, + "version": "9.54", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hdparm-9.54-2.el8.x86_64.rpm", + "checksum": "sha256:b446b1469bd535cf94e555525f40fa751b1343d89d589f3cff30ee2d7c38258e" + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.20", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hostname-3.20-6.el8.x86_64.rpm", + "checksum": "sha256:fdcc4180cae8fa83ca54188fc2f6796a1bc8d7eb7106163b98dd93d974b48cd1" + }, + { + "name": "hwdata", + "epoch": 0, + "version": "0.314", + "release": "8.5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hwdata-0.314-8.5.el8.noarch.rpm", + "checksum": "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ima-evm-utils-1.1-5.el8.x86_64.rpm", + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/info-6.5-6.el8.x86_64.rpm", + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.00.8", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/initscripts-10.00.8-1.el8.x86_64.rpm", + "checksum": "sha256:350657e984b1736bb4a8c9cc01b772517a4194467d6db84110c1cc42131f1cae" + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.2.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipcalc-0.2.4-4.el8.x86_64.rpm", + "checksum": "sha256:206de21c82d76de550bcc1959138472640b0a950a311b753203f5dfe5b201b7b" + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.3.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iproute-5.3.0-5.el8.x86_64.rpm", + "checksum": "sha256:4405d32322fd496c65f57a12b6037fd75b49957269dbf9cb0417b598162f7407" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-libs-1.8.4-14.el8.x86_64.rpm", + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "name": "iputils", + "epoch": 0, + "version": "20180629", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iputils-20180629-2.el8.x86_64.rpm", + "checksum": "sha256:a8961c50502aa02071c043a16f93399ac6794a058a0ef42be889abe60f35985b" + }, + { + "name": "irqbalance", + "epoch": 2, + "version": "1.4.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/irqbalance-1.4.0-4.el8.x86_64.rpm", + "checksum": "sha256:6844197fd8ffdb16cf94ab77709aa2954cb39512435a377401ebce340d06c7de" + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.11", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/jansson-2.11-3.el8.x86_64.rpm", + "checksum": "sha256:39e59e9a2460e3b6fe147501e79a57042f161c217963be212359031bb8b18daa" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-c-0.13.1-0.2.el8.x86_64.rpm", + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-glib-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-2.0.4-10.el8.x86_64.rpm", + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "kernel", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:eb5e29df2e7f803a62769aa19c60959ee7d368cd51397e00ebdbedba7d2d4768" + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-core-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:76ca09c73360f48d4b6fe4d4ee0aa974ef53531222df8e363d8006ec469051cf" + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-modules-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:97c8af6f58e3d14317036bd3ed2cbc498803c91c55b9dc0e8f0fddea7ac929e3" + }, + { + "name": "kernel-tools", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-tools-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:af495353f000008aab42640530c0c9005aaf60f0d4b4cf1a9b66b07bfc5b5881" + }, + { + "name": "kernel-tools-libs", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-tools-libs-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:4882ff53265bdeabb69f1ac9c585454b28ae799ab31fa72c9eb10bdbe1f41d9a" + }, + { + "name": "kexec-tools", + "epoch": 0, + "version": "2.0.20", + "release": "29.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kexec-tools-2.0.20-29.el8.x86_64.rpm", + "checksum": "sha256:948e61e32986303f12f8dbe40bc44674287b3906a54dadae5e3dfd2ccba88fac" + }, + { + "name": "keyutils", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-1.5.10-6.el8.x86_64.rpm", + "checksum": "sha256:761ff1ccc95562a4512c4bea1d4c2b507c42e3805c9e1e0093c80539a954047b" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-libs-1.5.10-6.el8.x86_64.rpm", + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-25-16.el8.x86_64.rpm", + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-libs-25-16.el8.x86_64.rpm", + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kpartx-0.8.4-2.el8.x86_64.rpm", + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/krb5-libs-1.18.2-3.el8.x86_64.rpm", + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "name": "less", + "epoch": 0, + "version": "530", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/less-530-1.el8.x86_64.rpm", + "checksum": "sha256:68362500ad574eb2df43a3d260ab8d0f3ce1ae5f34e66d71f2478fef8e17cb4a" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libacl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "name": "libappstream-glib", + "epoch": 0, + "version": "0.7.14", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libappstream-glib-0.7.14-3.el8.x86_64.rpm", + "checksum": "sha256:c5d0c9a5acc6c2de5e52b38701d6cad5cc37d22c1cb518ca8bcac79bddffaaba" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libarchive-3.3.2-9.el8.x86_64.rpm", + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libassuan-2.5.1-3.el8.x86_64.rpm", + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libattr-2.4.48-3.el8.x86_64.rpm", + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libbasicobjects-0.1.1-39.el8.x86_64.rpm", + "checksum": "sha256:cac59a5629e7229653c29c0d575bd8f8c2d3774474615eb65615109afb151981" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libblkid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-2.26-4.el8.x86_64.rpm", + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-ng-0.7.9-5.el8.x86_64.rpm", + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcollection-0.7.0-39.el8.x86_64.rpm", + "checksum": "sha256:ecd53a50b4cb20dd1597f45ab4a9cba1fd7793a6000fb2114421687779738672" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcom_err-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcroco-0.6.12-4.el8.x86_64.rpm", + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcurl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "name": "libdaemon", + "epoch": 0, + "version": "0.14", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdaemon-0.14-15.el8.x86_64.rpm", + "checksum": "sha256:798420bbda79fd0b9312abac25efad6b28957c512497f37f4beddad5d67dd66a" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-utils-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdhash-0.5.0-39.el8.x86_64.rpm", + "checksum": "sha256:50c0d1828a9e8db638c09d88afb0828d98349027ce498ee7df74e7ff6052ac1d" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "23.20170329cvs.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libedit-3.1-23.20170329cvs.el8.x86_64.rpm", + "checksum": "sha256:0391105afa53c9503b59591615bd7c98e2f7a4cd94ff4fd1451c4234522f3880" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libevent-2.1.8-5.el8.x86_64.rpm", + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libfdisk-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libffi-3.1-22.el8.x86_64.rpm", + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcc-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcrypt-1.8.5-4.el8.x86_64.rpm", + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgomp-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgpg-error-1.31-1.el8.x86_64.rpm", + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "name": "libgudev", + "epoch": 0, + "version": "232", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgudev-232-4.el8.x86_64.rpm", + "checksum": "sha256:713ec69b972a8e88622b3fcd3b84fccdbd6c333b68b6c52151c2350edad2576a" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libidn2-2.2.0-1.el8.x86_64.rpm", + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libini_config-1.3.1-39.el8.x86_64.rpm", + "checksum": "sha256:c46ee71ba426e0964b2264bdf18fc4cff4d7815206c9e8a471bdf678e65c24b9" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libksba-1.3.5-7.el8.x86_64.rpm", + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.1.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libldb-2.1.3-2.el8.x86_64.rpm", + "checksum": "sha256:231bc0eeb8fb127f0a4da5a4da1edd226067d5029a0b4fd6ef72c246ccfc31c0" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmetalink-0.1.3-7.el8.x86_64.rpm", + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmnl-1.0.4-6.el8.x86_64.rpm", + "checksum": "sha256:9c5594fcac97c0f8813d7a188e2368e3b1095025fc4a0ecbd5d17e54c0c93f97" + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodman-2.0.1-17.el8.x86_64.rpm", + "checksum": "sha256:0602b342148d5e8e6a954bb26af60ed63d3f3d919cd3856ea93612e05ebe2937" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd-2.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmount-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libndp-1.7-3.el8.x86_64.rpm", + "checksum": "sha256:53fb6834e2e439e79225d957c4643922da74836417b5558d0c2943b546b26e57" + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.3.3", + "release": "35.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnfsidmap-2.3.3-35.el8.x86_64.rpm", + "checksum": "sha256:2eed977380b41885d4f7ad33e122abbb9ea7391c1255d182451efd457688c8b2" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.x86_64.rpm", + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-3.5.0-1.el8.x86_64.rpm", + "checksum": "sha256:0129696c208f60326723c650295167b0600791ccb2e9c3d446c4caf9adecb3d7" + }, + { + "name": "libnl3-cli", + "epoch": 0, + "version": "3.5.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-cli-3.5.0-1.el8.x86_64.rpm", + "checksum": "sha256:ac2800369b7f4dc05a8fec452eabedf02f153c11e188a1e80157e35592305690" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64.rpm", + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpath_utils-0.2.1-39.el8.x86_64.rpm", + "checksum": "sha256:2eba2dc51974271244bdeaaf17c6e8fac3c35b62914b680076bdc4a32272df01" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpcap-1.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpipeline-1.5.0-2.el8.x86_64.rpm", + "checksum": "sha256:539abfc369a17023658486f7b4a48c8db159cc4d617b27da256ddac6e15ea687" + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.34", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpng-1.6.34-5.el8.x86_64.rpm", + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "5.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libproxy-0.4.15-5.2.el8.x86_64.rpm", + "checksum": "sha256:ecd2a9cc865d694f02273ca7a6b970a6a799b679174dead75ec7c34ff710ffd2" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpsl-0.20.2-6.el8.x86_64.rpm", + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpwquality-1.4.0-9.el8.x86_64.rpm", + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libref_array-0.1.5-39.el8.x86_64.rpm", + "checksum": "sha256:507442831068c749ba21b22bd96993a1a2a6c74dd53c55f34c7f81a21554c82d" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librepo-1.12.0-1.el8.x86_64.rpm", + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libreport-filesystem-2.9.5-11.el8.x86_64.rpm", + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librhsm-0.0.3-3.el8.x86_64.rpm", + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libseccomp-2.4.3-1.el8.x86_64.rpm", + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsecret-0.18.6-1.el8.x86_64.rpm", + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-utils-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsemanage-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsepol-2.9-1.el8.x86_64.rpm", + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsigsegv-2.11-5.el8.x86_64.rpm", + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmartcols-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsolv-0.7.11-1.el8.x86_64.rpm", + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.62.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsoup-2.62.3-1.el8.x86_64.rpm", + "checksum": "sha256:6cab44ed85c7dc821e84fab9d383f7d0a4b299cc29c8f0860b13e82bb0da8d6f" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libss-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-0.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_autofs-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:d186f806ed9c841a385f7acf194c20b78616396414da9131982e469f065619b8" + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_certmap-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:beea3f8c88b9c0a74d75622aa71467f51c457d1acf0ff557f7cd0e2ae3dfafe3" + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_idmap-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:c4279ad2915f4ce1806c4121675e49d2b525bb6e977d487dc2ad138fce8c2734" + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_nss_idmap-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:7c292b3bb74d12d77e1e22221c55696a0c5f50304040b3a706c2164d5b6a42e4" + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_sudo-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:44e81330b185085f871e9fbf8fae27c8de411600c032aca371dc6d39a3e261da" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstdc++-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "name": "libstemmer", + "epoch": 0, + "version": "0", + "release": "10.585svn.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstemmer-0-10.585svn.el8.x86_64.rpm", + "checksum": "sha256:23474f4f3841340af8a7ec5ab2d1fa693d4d72d2f782a5930c799560382916ac" + }, + { + "name": "libsysfs", + "epoch": 0, + "version": "2.1.0", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsysfs-2.1.0-24.el8.x86_64.rpm", + "checksum": "sha256:3a1058c6ba468722090a74002a3239161771b0d8b444975bff891afd45bb672a" + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtalloc-2.3.1-2.el8.x86_64.rpm", + "checksum": "sha256:3b087daa7e9de69c051f22f9df1ef00867ffddd99357bc3a215ccde76a13c02f" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtasn1-4.13-3.el8.x86_64.rpm", + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtdb-1.4.3-1.el8.x86_64.rpm", + "checksum": "sha256:4ed1a6294eea09a3a7e15683267ca5d383e4c2b27fd57fe05d2666e0e6c3d26f" + }, + { + "name": "libteam", + "epoch": 0, + "version": "1.29", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libteam-1.29-5.el8.x86_64.rpm", + "checksum": "sha256:7c89c2d055013779252c12643e8f0b3731f4dd5e2b61d9d81233a0ee298abb36" + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.2", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtevent-0.10.2-2.el8.x86_64.rpm", + "checksum": "sha256:860676d4231afa3e6b23933d8dd65e5f7f5823910791e6481d2440ae4ec64c53" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtirpc-1.1.4-4.el8.x86_64.rpm", + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libunistring-0.9.9-3.el8.x86_64.rpm", + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libusbx-1.0.23-3.el8.x86_64.rpm", + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "23.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuser-0.62-23.el8.x86_64.rpm", + "checksum": "sha256:b2dcbd3b81196b16e33054d31c0129c432cf59fb591035845cc299bbb46000c1" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libutempter-1.1.6-14.el8.x86_64.rpm", + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuuid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-0.3.0-5.el8.x86_64.rpm", + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "name": "libverto-libevent", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-libevent-0.3.0-5.el8.x86_64.rpm", + "checksum": "sha256:d3f8a537fc631378fbef3c70ebdf8922d4d8842813d3fb02a7c5fd1663f55179" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxcrypt-4.1.1-4.el8.x86_64.rpm", + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxml2-2.9.7-8.el8.x86_64.rpm", + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libyaml-0.1.7-5.el8.x86_64.rpm", + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libzstd-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20200619", + "release": "99.git3890db36.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/linux-firmware-20200619-99.git3890db36.el8.noarch.rpm", + "checksum": "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9" + }, + { + "name": "logrotate", + "epoch": 0, + "version": "3.14.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/logrotate-3.14.0-4.el8.x86_64.rpm", + "checksum": "sha256:37504d807ac0bb6c429d7be9c636f7b755464023511d856846dbb9deb8f6a76d" + }, + { + "name": "lshw", + "epoch": 0, + "version": "B.02.19.2", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lshw-B.02.19.2-2.el8.x86_64.rpm", + "checksum": "sha256:b59cdea55a890a10f484d8596e244a18455ee82920c7e466991801d24c4718cd" + }, + { + "name": "lsscsi", + "epoch": 0, + "version": "0.30", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lsscsi-0.30-1.el8.x86_64.rpm", + "checksum": "sha256:b9a17114d551cc8259eea6996b6871ec36675330fdb1eb16db529e6f8a9c34d5" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lua-libs-5.3.4-11.el8.x86_64.rpm", + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lz4-libs-1.8.3-2.el8.x86_64.rpm", + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "name": "lzo", + "epoch": 0, + "version": "2.08", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lzo-2.08-14.el8.x86_64.rpm", + "checksum": "sha256:a3dedf8c077b4656d3cd4ef641e696397a3fff83ee8b14f0e3fc69d7c10cebcf" + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.7.6.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/man-db-2.7.6.1-17.el8.x86_64.rpm", + "checksum": "sha256:7b6856dc4dc1d88d9c3c9597fb824b5776af59f045087bdb2713d64045216a36" + }, + { + "name": "microcode_ctl", + "epoch": 4, + "version": "20200609", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/microcode_ctl-20200609-2.el8.x86_64.rpm", + "checksum": "sha256:0e4b7687f0c62f4e336223b939f6cb169c8dac49eee23c53fd919e58d8f989df" + }, + { + "name": "mozjs60", + "epoch": 0, + "version": "60.9.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mozjs60-60.9.0-4.el8.x86_64.rpm", + "checksum": "sha256:fd9e5c379cd3482d32686fb13881827a39037e7a7afa92c62d58c1f05fcb797f" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mpfr-3.1.6-1.el8.x86_64.rpm", + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.52.20160912git.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/net-tools-2.0-0.52.20160912git.el8.x86_64.rpm", + "checksum": "sha256:e67a1c5f02c3e6fdccaad455fddf0dfdf812069da87d841a22df910bf361cfb9" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nettle-3.4.1-2.el8.x86_64.rpm", + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "name": "newt", + "epoch": 0, + "version": "0.52.20", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/newt-0.52.20-11.el8.x86_64.rpm", + "checksum": "sha256:eb9b37827f1851c8a2683cd86026fda90847afe90d51ea746d7cd5f49f6f90d1" + }, + { + "name": "nfs-utils", + "epoch": 1, + "version": "2.3.3", + "release": "35.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nfs-utils-2.3.3-35.el8.x86_64.rpm", + "checksum": "sha256:14f5ca00582f8d8780a0bcc1b204fb73cfdb35c5725efa4eccffbe8a1988769e" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/npth-1.5-4.el8.x86_64.rpm", + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "name": "numactl-libs", + "epoch": 0, + "version": "2.0.12", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/numactl-libs-2.0.12-11.el8.x86_64.rpm", + "checksum": "sha256:d94a39545f8570ba2d199e4892cfe05ebd5ea6e4e8322790b4f960bf92da5f09" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openldap-2.4.46-15.el8.x86_64.rpm", + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-8.0p1-5.el8.x86_64.rpm", + "checksum": "sha256:b5fc6f35798edccd0390e54fce40290936c3699227e79cc6d1a42d803358fd03" + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-clients-8.0p1-5.el8.x86_64.rpm", + "checksum": "sha256:3730f3f8d3332836f278250408891cb097379a5d7745fe698b1d418e9e13d335" + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-server-8.0p1-5.el8.x86_64.rpm", + "checksum": "sha256:fd7bc748b59a48a1ba803dc893be729c8624a4141e23fcef126a401857bbb455" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-libs-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-pkcs11-0.4.10-2.el8.x86_64.rpm", + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/os-prober-1.74-6.el8.x86_64.rpm", + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pam-1.3.1-11.el8.x86_64.rpm", + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "name": "parted", + "epoch": 0, + "version": "3.2", + "release": "38.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/parted-3.2-38.el8.x86_64.rpm", + "checksum": "sha256:22585bd5d69c5e0a06fe00a6844da2e5d311512374c1d176f17f41caab7e121f" + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/passwd-0.80-3.el8.x86_64.rpm", + "checksum": "sha256:7c0b2b064dad700cba2754b46f483e3e59aaf798740470df1daad3d5239fb893" + }, + { + "name": "pciutils", + "epoch": 0, + "version": "3.6.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pciutils-3.6.4-2.el8.x86_64.rpm", + "checksum": "sha256:22942af5dab657f662538619ab84a260d3c92e3498694fca2a126100ff9ab316" + }, + { + "name": "pciutils-libs", + "epoch": 0, + "version": "3.6.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pciutils-libs-3.6.4-2.el8.x86_64.rpm", + "checksum": "sha256:da5606af487682acce52799418a97614d0f6e6b72d15c88c4f6f2a076f384dac" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre-8.42-4.el8.x86_64.rpm", + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre2-10.32-2.el8.x86_64.rpm", + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pigz-2.4-4.el8.x86_64.rpm", + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-2.9-9.el8.x86_64.rpm", + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "name": "policycoreutils-python-utils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-python-utils-2.9-9.el8.noarch.rpm", + "checksum": "sha256:b4fb3d8b0255a5ba9456b61e4f479f2f8355d171263508bbe869af677015fd97" + }, + { + "name": "polkit", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-0.115-11.el8.x86_64.rpm", + "checksum": "sha256:8af00d4b0857240310156e05123e07795e6573da7c1fe9e7fd83b51f13971725" + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-libs-0.115-11.el8.x86_64.rpm", + "checksum": "sha256:441efa6f0b9a9905ef11ec987d6db89e7dba2857060020c4554e32db3e59fce5" + }, + { + "name": "polkit-pkla-compat", + "epoch": 0, + "version": "0.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-pkla-compat-0.1-12.el8.x86_64.rpm", + "checksum": "sha256:9a9ca6857f517f1249d2eb496fe904590d6203e4a9547a28e0b23f21c4cae24a" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/popt-1.16-14.el8.x86_64.rpm", + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "name": "prefixdevname", + "epoch": 0, + "version": "0.1.0", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/prefixdevname-0.1.0-6.el8.x86_64.rpm", + "checksum": "sha256:8d371e753071edc796d2eadb8278980290511be6279fdf46649c81b859497d6a" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/procps-ng-3.3.15-2.el8.x86_64.rpm", + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-asn1crypto", + "epoch": 0, + "version": "0.24.0", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-asn1crypto-0.24.0-3.el8.noarch.rpm", + "checksum": "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34" + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:8f00781eb679c6baf359099fa2a672ffccfc8e43b7c03c1dc635619cb25ff01d" + }, + { + "name": "python3-cffi", + "epoch": 0, + "version": "1.11.5", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-cffi-1.11.5-5.el8.x86_64.rpm", + "checksum": "sha256:13ffce0597b689dd53f55ea0d03dd6d013246634f5c6cbcef51fa549d9734b29" + }, + { + "name": "python3-chardet", + "epoch": 0, + "version": "3.0.4", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-chardet-3.0.4-7.el8.noarch.rpm", + "checksum": "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786" + }, + { + "name": "python3-configobj", + "epoch": 0, + "version": "5.0.6", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-configobj-5.0.6-11.el8.noarch.rpm", + "checksum": "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367" + }, + { + "name": "python3-cryptography", + "epoch": 0, + "version": "2.3", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-cryptography-2.3-3.el8.x86_64.rpm", + "checksum": "sha256:7a7a238ea529165348acef1d1a20c1d47c1ef5838d8501f3879bb130c1b73e06" + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.6.1", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm", + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.4", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dbus-1.2.4-15.el8.x86_64.rpm", + "checksum": "sha256:5a85222c8e9997a8b609b915a8fbae756de9b9bff732db852fb15fe0524f2d86" + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.2.1", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm", + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "name": "python3-dmidecode", + "epoch": 0, + "version": "3.12.2", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dmidecode-3.12.2-15.el8.x86_64.rpm", + "checksum": "sha256:d2b777ea98ee644997029994136723cf4fa78e97afeaceab39f76b545b51792b" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-plugins-core-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87" + }, + { + "name": "python3-ethtool", + "epoch": 0, + "version": "0.14", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ethtool-0.14-3.el8.x86_64.rpm", + "checksum": "sha256:20dec130e4fd0a2146443791ca7ade6e079cea691d93711813d5f483b691c55a" + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.28.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gobject-base-3.28.3-2.el8.x86_64.rpm", + "checksum": "sha256:86d305a1466a596f8b436561d674f2510f268bed9e73f56c87da1dd120f99c18" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gpg-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-hawkey-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "name": "python3-idna", + "epoch": 0, + "version": "2.5", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-idna-2.5-5.el8.noarch.rpm", + "checksum": "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20" + }, + { + "name": "python3-iniparse", + "epoch": 0, + "version": "0.4", + "release": "31.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm", + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "name": "python3-inotify", + "epoch": 0, + "version": "0.9.6", + "release": "13.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm", + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "name": "python3-jwt", + "epoch": 0, + "version": "1.6.1", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-jwt-1.6.1-2.el8.noarch.rpm", + "checksum": "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "name": "python3-librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-librepo-1.12.0-1.el8.x86_64.rpm", + "checksum": "sha256:4ca553b0c0f6dc130e05e2011cdf1f52132e8f70bd93be8eee4e415b2cac0c56" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libs-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libselinux-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:9487bff6bb16e7326c8b805751580b4593220ba19b06515c69de83fee8e3bb1f" + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libsemanage-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:09fc3154e76c8ee25b3982c15f3bc455017262c3df5af84075859dcbf79e4f82" + }, + { + "name": "python3-libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libxml2-2.9.7-8.el8.x86_64.rpm", + "checksum": "sha256:4ccbefcbe75decfef38ccae5d8ff92ba6b00e8232b64ec46ae0c0be8ae20ec50" + }, + { + "name": "python3-linux-procfs", + "epoch": 0, + "version": "0.6.2", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-linux-procfs-0.6.2-2.el8.noarch.rpm", + "checksum": "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f" + }, + { + "name": "python3-magic", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-magic-5.33-16.el8.noarch.rpm", + "checksum": "sha256:8e2c0324789f42ebb6324847249699eb499544a3e6ad67ccd74713b3c1d6ce78" + }, + { + "name": "python3-oauthlib", + "epoch": 0, + "version": "2.1.0", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-oauthlib-2.1.0-1.el8.noarch.rpm", + "checksum": "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6" + }, + { + "name": "python3-perf", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-perf-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:18d419718a99851370262584bec1b27d60cbd08845b50fbe97e1a56b71cd5ea2" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-ply", + "epoch": 0, + "version": "3.9", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ply-3.9-8.el8.noarch.rpm", + "checksum": "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9" + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-policycoreutils-2.9-9.el8.noarch.rpm", + "checksum": "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42" + }, + { + "name": "python3-pycparser", + "epoch": 0, + "version": "2.14", + "release": "14.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pycparser-2.14-14.el8.noarch.rpm", + "checksum": "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf" + }, + { + "name": "python3-pysocks", + "epoch": 0, + "version": "1.6.8", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pysocks-1.6.8-3.el8.noarch.rpm", + "checksum": "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280" + }, + { + "name": "python3-pyudev", + "epoch": 0, + "version": "0.21.0", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pyudev-0.21.0-7.el8.noarch.rpm", + "checksum": "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde" + }, + { + "name": "python3-pyyaml", + "epoch": 0, + "version": "3.12", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pyyaml-3.12-12.el8.x86_64.rpm", + "checksum": "sha256:de870435340bf30620406df41b79e43adaf7d0a277db1635a0fae710df993fc0" + }, + { + "name": "python3-requests", + "epoch": 0, + "version": "2.20.0", + "release": "2.1.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-requests-2.20.0-2.1.el8_1.noarch.rpm", + "checksum": "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "name": "python3-schedutils", + "epoch": 0, + "version": "0.6", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-schedutils-0.6-6.el8.x86_64.rpm", + "checksum": "sha256:09ca7b05e26f93d35ac299dbcd865b65ec3a3d2654e1da87d2c3c0462dbe6e4a" + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.3.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setools-4.3.0-1.el8.x86_64.rpm", + "checksum": "sha256:cb8e7909d58206223ad7108a850218360a6b1e2147d97bc94097962dc820d0de" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.11.0", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm", + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "name": "python3-slip", + "epoch": 0, + "version": "0.6.4", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-slip-0.6.4-11.el8.noarch.rpm", + "checksum": "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb" + }, + { + "name": "python3-slip-dbus", + "epoch": 0, + "version": "0.6.4", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-slip-dbus-0.6.4-11.el8.noarch.rpm", + "checksum": "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d" + }, + { + "name": "python3-subscription-manager-rhsm", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-subscription-manager-rhsm-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:0f3b084d947bc246fe68822129b8ae1294c4187270a19f0966282baf75b34dc6" + }, + { + "name": "python3-syspurpose", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-syspurpose-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:206cba480b58c70348584010d547d21bcd84c6094fd3980e22c6b640da12704c" + }, + { + "name": "python3-urllib3", + "epoch": 0, + "version": "1.24.2", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-urllib3-1.24.2-4.el8.noarch.rpm", + "checksum": "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53" + }, + { + "name": "quota", + "epoch": 1, + "version": "4.04", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/quota-4.04-10.el8.x86_64.rpm", + "checksum": "sha256:db7ec7f6349da80049a035a7595523a44dfc5f090026dc3342cc3149d5a31bed" + }, + { + "name": "quota-nls", + "epoch": 1, + "version": "4.04", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/quota-nls-4.04-10.el8.noarch.rpm", + "checksum": "sha256:adab024896eecd08250eb7a7a5e1686df0b945fd1604543877e230163c510f24" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/readline-7.0-10.el8.x86_64.rpm", + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "name": "redhat-logos", + "epoch": 0, + "version": "81.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-logos-81.1-1.el8.x86_64.rpm", + "checksum": "sha256:ed54b383b0f252dde700d11524046568d98b64829feb77ce2b26080c0c827607" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-eula-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "name": "rhsm-icons", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rhsm-icons-1.27.9-1.el8.noarch.rpm", + "checksum": "sha256:fb97246f1e22b2db98fc309470c4d87755ecc59e5b98047c52c4fedbb08d9b6f" + }, + { + "name": "rng-tools", + "epoch": 0, + "version": "6.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rng-tools-6.8-3.el8.x86_64.rpm", + "checksum": "sha256:9d9d1bdfba4cd852f90232ebe2c4247e7b3a88c4476578c820788a91d6838e55" + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "22.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rootfiles-8.1-22.el8.noarch.rpm", + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "name": "rpcbind", + "epoch": 0, + "version": "1.2.5", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpcbind-1.2.5-7.el8.x86_64.rpm", + "checksum": "sha256:516acd98bf46b3b2e09fd0d2f0cf1fbf4ecbecc9b0e10028c3a26ce9a6aca393" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-build-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "name": "rsync", + "epoch": 0, + "version": "3.1.3", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rsync-3.1.3-8.el8.x86_64.rpm", + "checksum": "sha256:3e180253732f00c919aaebc9aaa0562eefac466ce145ce5ad5e1092453aeebaa" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sed-4.5-2.el8.x86_64.rpm", + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "sg3_utils", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sg3_utils-1.44-5.el8.x86_64.rpm", + "checksum": "sha256:398c1abc82097370f46e6fdf4dae63870e1f767b24d0130c79ed67ea3a67233a" + }, + { + "name": "sg3_utils-libs", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sg3_utils-libs-1.44-5.el8.x86_64.rpm", + "checksum": "sha256:671852e4f32de6278dd384d35d1dc799ab5d3e8ef718e89e516452cbcba068f0" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shadow-utils-4.6-10.el8.x86_64.rpm", + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shared-mime-info-1.9-3.el8.x86_64.rpm", + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "name": "slang", + "epoch": 0, + "version": "2.3.2", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/slang-2.3.2-3.el8.x86_64.rpm", + "checksum": "sha256:efa20ae5eca5860656d0131086470cb8d5c3a1ae2819301e7d015f06bbb68a26" + }, + { + "name": "snappy", + "epoch": 0, + "version": "1.1.7", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/snappy-1.1.7-5.el8.x86_64.rpm", + "checksum": "sha256:4403330cdf4f15d75d727e2ac8c3358ff6a13209b3395dfac2131984e443eb23" + }, + { + "name": "sos", + "epoch": 0, + "version": "3.9.1", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sos-3.9.1-4.el8.noarch.rpm", + "checksum": "sha256:934205ae1baa04b3921065f73096378f1db65990392340ad32042f86c9b5b247" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-libs-3.26.0-10.el8.x86_64.rpm", + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "name": "squashfs-tools", + "epoch": 0, + "version": "4.3", + "release": "19.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/squashfs-tools-4.3-19.el8.x86_64.rpm", + "checksum": "sha256:72ff3a3f6c52849a40cb24f9694115a68cc939970a00c374b4c73b1e4c5dc20c" + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-client-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:2e90748420a7d28b3063df04de129e79ea85310a8d9cf2faf0a2e7b8430307c8" + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-common-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:14098d36fe4be983fac73d04aeacf0ed7977d962e760907b89e3f80b4ca46f3f" + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-kcm-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:1b1fe43a375a21f4c3ccf04861c122fd519d4865b9c1abc7f1973b86a0252a06" + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-nfs-idmap-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:c0025c0b08ed82c640fa470e62743aed17a33f7948ed0cc969892d7c149206b3" + }, + { + "name": "subscription-manager", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:65dc391ab1c96d1009ef2e7706eabacd5cf84f2a47ea1cc87f6f5e2c1324b178" + }, + { + "name": "subscription-manager-cockpit", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-cockpit-1.27.9-1.el8.noarch.rpm", + "checksum": "sha256:e6194926699147659c3a35d9330b5e9706b203aa806c4023c258559f9a0f8ae7" + }, + { + "name": "subscription-manager-rhsm-certificates", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-rhsm-certificates-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:99fa92b5d1e0d335fb2bb961ef39988b50968350b899e8790cead73c9a0bec65" + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.8.29", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sudo-1.8.29-6.el8.x86_64.rpm", + "checksum": "sha256:ec9adedf0d5d2d096acf4739e2eefab8095498037e13dac9b283e17a9c54259a" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-239-36.el8.x86_64.rpm", + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-libs-239-36.el8.x86_64.rpm", + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-pam-239-36.el8.x86_64.rpm", + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-udev-239-36.el8.x86_64.rpm", + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tar-1.30-5.el8.x86_64.rpm", + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "name": "teamd", + "epoch": 0, + "version": "1.29", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/teamd-1.29-5.el8.x86_64.rpm", + "checksum": "sha256:b156691caa225f0025533a68eeb9a2cf3883062dd209ede9ec07727b358171cc" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-lib-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "name": "tuned", + "epoch": 0, + "version": "2.14.0", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tuned-2.14.0-2.el8.noarch.rpm", + "checksum": "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "usermode", + "epoch": 0, + "version": "1.113", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/usermode-1.113-1.el8.x86_64.rpm", + "checksum": "sha256:98a589d7e1cdea9d974aa43f688e55333eed11ce7cb2037d45cc2e69bce579b3" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/util-linux-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.0.1763", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/vim-minimal-8.0.1763-15.el8.x86_64.rpm", + "checksum": "sha256:947b4e4eebec21501ca62e2a7ff9baae0e4e7c59584fbba4b6276a402cfbb45b" + }, + { + "name": "virt-what", + "epoch": 0, + "version": "1.18", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/virt-what-1.18-6.el8.x86_64.rpm", + "checksum": "sha256:2cfcc3d6163dfaf7ce76998be992bd0b70dd7cbb838430cecf2aff04cd435d24" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/which-2.21-12.el8.x86_64.rpm", + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xfsprogs-5.0.0-4.el8.x86_64.rpm", + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-libs-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/yum-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4" + }, + { + "name": "yum-utils", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/yum-utils-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:bdb8cc675da18f659ba06252f1f2604d171373239804c3cbc6004dadded54cd3" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/zlib-1.2.11-15.el8.x86_64.rpm", + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "name": "PackageKit", + "epoch": 0, + "version": "1.1.12", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/PackageKit-1.1.12-6.el8.x86_64.rpm", + "checksum": "sha256:a842bbdfe4e3f24ef55acd0ed6930639ccaa5980a2774235bc4c6c2a95ab421c" + }, + { + "name": "PackageKit-glib", + "epoch": 0, + "version": "1.1.12", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/PackageKit-glib-1.1.12-6.el8.x86_64.rpm", + "checksum": "sha256:468b540f98263d7b274c722a7b8f18ac1ab9d88783cfca6561c85e56b36afeee" + }, + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.0.25", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/abattis-cantarell-fonts-0.0.25-4.el8.noarch.rpm", + "checksum": "sha256:1594afba86593ec614299ef6af255755a98ea55a34a72a22fdc9d80a040be39d" + }, + { + "name": "cairo", + "epoch": 0, + "version": "1.15.12", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cairo-1.15.12-3.el8.x86_64.rpm", + "checksum": "sha256:7d0bc4f2f78166013ef160ed10930a4902c7c5c6d6b7940fc900d36eaacc65a2" + }, + { + "name": "cairo-gobject", + "epoch": 0, + "version": "1.15.12", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cairo-gobject-1.15.12-3.el8.x86_64.rpm", + "checksum": "sha256:18fd9b2a61147367ad7d51798d33db38aedbaf761f3d0561c752f0048d1f4221" + }, + { + "name": "cloud-init", + "epoch": 0, + "version": "19.4", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cloud-init-19.4-7.el8.noarch.rpm", + "checksum": "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2" + }, + { + "name": "cloud-utils-growpart", + "epoch": 0, + "version": "0.31", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cloud-utils-growpart-0.31-1.el8.noarch.rpm", + "checksum": "sha256:664a883f3c7042eb91e0b66fc99c309a729011b4912e4af9397f4e25e1adae90" + }, + { + "name": "dnf-plugin-spacewalk", + "epoch": 0, + "version": "2.8.5", + "release": "11.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b" + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm", + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm", + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "name": "insights-client", + "epoch": 0, + "version": "3.0.14", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/insights-client-3.0.14-2.el8.noarch.rpm", + "checksum": "sha256:abeb97ed3fdd82145fd51f8eeaecfca272e4d1418b17a68241e054425a327aa3" + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libX11-1.6.8-3.el8.x86_64.rpm", + "checksum": "sha256:a143d66ae06409c70fe4323c52c4507a1d7247c59f21951b96279fd7ca173215" + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.8", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libX11-common-1.6.8-3.el8.noarch.rpm", + "checksum": "sha256:593d4df5b8de12ed0ec5a0935cb0bd966e27a631aa0806250ba9f67092ad737f" + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libXau-1.0.9-3.el8.x86_64.rpm", + "checksum": "sha256:a260f793e49805b188908e2f30c4687abe4e023b20c28a85d10d2371556c3981" + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libXext-1.3.4-1.el8.x86_64.rpm", + "checksum": "sha256:ddafccd3f010fc75da6de158b5a68fd672f8b3554ac403065490318ce2be05f3" + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libXrender-0.9.10-7.el8.x86_64.rpm", + "checksum": "sha256:871672b8a9ffbe887b32e736494c1f005795bc7ffda026c6a063ee0d28788709" + }, + { + "name": "libestr", + "epoch": 0, + "version": "0.1.10", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libestr-0.1.10-1.el8.x86_64.rpm", + "checksum": "sha256:bfe5c8ea12012936cc59981a10728e95d5fdadd3e893457af7a27c464d8cb6ba" + }, + { + "name": "libfastjson", + "epoch": 0, + "version": "0.99.8", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libfastjson-0.99.8-2.el8.x86_64.rpm", + "checksum": "sha256:474a66a4cf3d5a00286be40c15bad69ea1ac63a9424a1ff44f20a548a7686f7a" + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.2.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libmaxminddb-1.2.0-10.el8.x86_64.rpm", + "checksum": "sha256:995a5401cd86404d14d08c0aeafeaa8da3f540b1806f9d0e233d75dec9e45c74" + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxcb-1.13.1-1.el8.x86_64.rpm", + "checksum": "sha256:39e6bc1e8101e536066554702d5d6b25f8cad359fb5e02ac598cfdad56eafb6d" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxkbcommon-0.9.1-1.el8.x86_64.rpm", + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/memstrack-0.1.8-1.el8.x86_64.rpm", + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pinentry-1.1.0-2.el8.x86_64.rpm", + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "name": "pixman", + "epoch": 0, + "version": "0.38.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pixman-0.38.4-1.el8.x86_64.rpm", + "checksum": "sha256:77edc93b5e83aed2527a58760033fe857c6c8f7807e2169865015acbbe926376" + }, + { + "name": "python3-babel", + "epoch": 0, + "version": "2.5.1", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-babel-2.5.1-5.el8.noarch.rpm", + "checksum": "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28" + }, + { + "name": "python3-cairo", + "epoch": 0, + "version": "1.16.3", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-cairo-1.16.3-6.el8.x86_64.rpm", + "checksum": "sha256:8caac6d04fc98a82d17af56a8faacd1e1a019112ba207388fb82ffdd6df54301" + }, + { + "name": "python3-dnf-plugin-spacewalk", + "epoch": 0, + "version": "2.8.5", + "release": "11.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43" + }, + { + "name": "python3-gobject", + "epoch": 0, + "version": "3.28.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-gobject-3.28.3-2.el8.x86_64.rpm", + "checksum": "sha256:4229196b5ea88c1133d5509a2ec326093a2c7ac5566ca4abb55c3d6fab47130a" + }, + { + "name": "python3-hwdata", + "epoch": 0, + "version": "2.3.6", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-hwdata-2.3.6-3.el8.noarch.rpm", + "checksum": "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362" + }, + { + "name": "python3-jinja2", + "epoch": 0, + "version": "2.10.1", + "release": "2.el8_0", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jinja2-2.10.1-2.el8_0.noarch.rpm", + "checksum": "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64" + }, + { + "name": "python3-jsonpatch", + "epoch": 0, + "version": "1.21", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonpatch-1.21-2.el8.noarch.rpm", + "checksum": "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835" + }, + { + "name": "python3-jsonpointer", + "epoch": 0, + "version": "1.10", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonpointer-1.10-11.el8.noarch.rpm", + "checksum": "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf" + }, + { + "name": "python3-jsonschema", + "epoch": 0, + "version": "2.6.0", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonschema-2.6.0-4.el8.noarch.rpm", + "checksum": "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b" + }, + { + "name": "python3-markupsafe", + "epoch": 0, + "version": "0.23", + "release": "19.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-markupsafe-0.23-19.el8.x86_64.rpm", + "checksum": "sha256:e868499743c399baa6463fa64a2534a7d32f8e1cca7b1b47ec00c60b34250bfe" + }, + { + "name": "python3-netifaces", + "epoch": 0, + "version": "0.10.6", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-netifaces-0.10.6-4.el8.x86_64.rpm", + "checksum": "sha256:3edf7d29e530e6568416d4455e9fbaa511aba236c603da9928e689fae77b9874" + }, + { + "name": "python3-newt", + "epoch": 0, + "version": "0.52.20", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-newt-0.52.20-11.el8.x86_64.rpm", + "checksum": "sha256:b4e89276818abec218c909ca961db9bb2e09b1fc609ff280e6c05227143fa24d" + }, + { + "name": "python3-prettytable", + "epoch": 0, + "version": "0.7.2", + "release": "14.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-prettytable-0.7.2-14.el8.noarch.rpm", + "checksum": "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55" + }, + { + "name": "python3-pyOpenSSL", + "epoch": 0, + "version": "18.0.0", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pyOpenSSL-18.0.0-1.el8.noarch.rpm", + "checksum": "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21" + }, + { + "name": "python3-pydbus", + "epoch": 0, + "version": "0.6.0", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pydbus-0.6.0-5.el8.noarch.rpm", + "checksum": "sha256:fd75c594f871a3353d326833e630ea1d28e5f446f796b836dc628f8c9c039f88" + }, + { + "name": "python3-pyserial", + "epoch": 0, + "version": "3.1.1", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pyserial-3.1.1-8.el8.noarch.rpm", + "checksum": "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414" + }, + { + "name": "python3-pytz", + "epoch": 0, + "version": "2017.2", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pytz-2017.2-9.el8.noarch.rpm", + "checksum": "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca" + }, + { + "name": "python3-rhn-check", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:15462b748aef3c565bcf4f849c1a21c1389a8ef5e7dae94e64718865a67d46a9" + }, + { + "name": "python3-rhn-client-tools", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:bed436b103161f7d8f61b617c84f3a7b5509f1d00c8425900a88c222b1331b31" + }, + { + "name": "python3-rhn-setup", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:ec26615d079ce89316352f813279f74a44871fa8c26fed8f369b9fe847aa5121" + }, + { + "name": "python3-rhnlib", + "epoch": 0, + "version": "2.8.6", + "release": "8.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a" + }, + { + "name": "python3-systemd", + "epoch": 0, + "version": "234", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-systemd-234-8.el8.x86_64.rpm", + "checksum": "sha256:534bbf990d0f0537715561c818c2b68f10e6ba0cc1252a32a0696f1e22fde1e3" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-unbound-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "name": "qemu-guest-agent", + "epoch": 15, + "version": "4.2.0", + "release": "29.module+el8.3.0+7212+401047e6", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/qemu-guest-agent-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64.rpm", + "checksum": "sha256:3d1dfe2e487e06efda133298a0fd0913f95b61c4373332db110b496aaadc8f05" + }, + { + "name": "rhn-check", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:d81c180c682e6014a0da09aaa144492e8cb03c1d61022513ba6db5bd3740f921" + }, + { + "name": "rhn-client-tools", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:d80219a299035688091aa230b1c9169143c00c141c4f1ad8e75d176d22cc1cd0" + }, + { + "name": "rhn-setup", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:4931d78c496eaaa8e6b6bbec2b4750da52b9fc7e989ae89b7c1fa2a6f40ff7fa" + }, + { + "name": "rhnlib", + "epoch": 0, + "version": "2.8.6", + "release": "8.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42" + }, + { + "name": "rhnsd", + "epoch": 0, + "version": "5.0.35", + "release": "3.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:00cc9cd4517cbb4ad99dbce63b40b700699523550cd7f8202948af28dbe2cd9e" + }, + { + "name": "rsyslog", + "epoch": 0, + "version": "8.1911.0", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rsyslog-8.1911.0-6.el8.x86_64.rpm", + "checksum": "sha256:5ef47eb6a042a13c902764907692c1068eb0f69153b47bc85792bef74bfa852b" + }, + { + "name": "setroubleshoot-plugins", + "epoch": 0, + "version": "3.3.12", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/setroubleshoot-plugins-3.3.12-1.el8.noarch.rpm", + "checksum": "sha256:3459ac9ecad925e511502cff687ceb77f52f391303793f7670794a5c0b040f3d" + }, + { + "name": "setroubleshoot-server", + "epoch": 0, + "version": "3.3.23", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/setroubleshoot-server-3.3.23-1.el8.x86_64.rpm", + "checksum": "sha256:3babb3a2d4bdffe51f8453a1a4151688a76b48327d37464e11f7c6529c888b30" + }, + { + "name": "sscg", + "epoch": 0, + "version": "2.3.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/sscg-2.3.3-14.el8.x86_64.rpm", + "checksum": "sha256:211d74a081c06399001bf09c59e941b444f3175d2900a02775a232f4c83d3fb1" + }, + { + "name": "tcpdump", + "epoch": 14, + "version": "4.9.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/tcpdump-4.9.3-1.el8.x86_64.rpm", + "checksum": "sha256:648e239be605f6cdc5b9cc63e316bcad906a4d0df605e7f6188009b0c48fc6d1" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/unbound-libs-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "checksums": { + "0": "sha256:cc014fee6e92f8a81f152d72a43137a3270189ef229c738381b98bc0c88443f8", + "1": "sha256:2b881b017a4c721893038307bf4f0269afe55c35114a477be226f53a2f585545" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=0bd700f8-090f-4556-b797-b340297ea1bd console=ttyS0 console=ttyS0,115200n8 no_timer_check crashkernel=auto net.ifnames=0" + }, + "bootloader": "grub", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "id": "rhel-20200625210904-4.18.0-221.el8.x86_64", + "initrd": "/boot/initramfs-4.18.0-221.el8.x86_64.img $tuned_initrd", + "linux": "/boot/vmlinuz-4.18.0-221.el8.x86_64", + "options": "$kernelopts $tuned_params", + "title": "Red Hat Enterprise Linux (4.18.0-221.el8.x86_64) 8.3 (Ootpa)", + "version": "4.18.0-221.el8.x86_64" + } + ], + "fstab": [ + [ + "UUID=0bd700f8-090f-4556-b797-b340297ea1bd", + "/", + "xfs", + "defaults", + "0", + "0" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:989:", + "cockpit-ws:x:991:", + "cockpit-wsinstance:x:990:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:999:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "polkitd:x:996:", + "redhat:x:1000:", + "render:x:998:", + "rngd:x:988:", + "root:x:0:", + "rpc:x:32:", + "rpcuser:x:29:", + "setroubleshoot:x:992:", + "ssh_keys:x:995:", + "sshd:x:74:", + "sssd:x:993:", + "sys:x:3:", + "systemd-coredump:x:997:", + "systemd-journal:x:190:", + "systemd-resolve:x:193:", + "tape:x:33:", + "tcpdump:x:72:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:994:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "qcow2", + "os-release": { + "ANSI_COLOR": "0;31", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:redhat:enterprise_linux:8.3:beta", + "HOME_URL": "https://www.redhat.com/", + "ID": "rhel", + "ID_LIKE": "fedora", + "NAME": "Red Hat Enterprise Linux", + "PLATFORM_ID": "platform:el8", + "PRETTY_NAME": "Red Hat Enterprise Linux 8.3 Beta (Ootpa)", + "REDHAT_BUGZILLA_PRODUCT": "Red Hat Enterprise Linux 8", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "8.3", + "REDHAT_SUPPORT_PRODUCT": "Red Hat Enterprise Linux", + "REDHAT_SUPPORT_PRODUCT_VERSION": "8.3 Beta", + "VERSION": "8.3 (Ootpa)", + "VERSION_ID": "8.3" + }, + "packages": [ + "NetworkManager-1.26.0-0.2.el8.x86_64", + "NetworkManager-libnm-1.26.0-0.2.el8.x86_64", + "NetworkManager-team-1.26.0-0.2.el8.x86_64", + "NetworkManager-tui-1.26.0-0.2.el8.x86_64", + "PackageKit-1.1.12-6.el8.x86_64", + "PackageKit-glib-1.1.12-6.el8.x86_64", + "abattis-cantarell-fonts-0.0.25-4.el8.noarch", + "acl-2.2.53-1.el8.x86_64", + "audit-3.0-0.17.20191104git1c2f876.el8.x86_64", + "audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64", + "authselect-1.2.1-2.el8.x86_64", + "authselect-libs-1.2.1-2.el8.x86_64", + "basesystem-11-5.el8.noarch", + "bash-4.4.19-12.el8.x86_64", + "bind-export-libs-9.11.20-3.el8.x86_64", + "brotli-1.0.6-2.el8.x86_64", + "bzip2-1.0.6-26.el8.x86_64", + "bzip2-libs-1.0.6-26.el8.x86_64", + "c-ares-1.13.0-5.el8.x86_64", + "ca-certificates-2019.2.32-80.0.el8_1.noarch", + "cairo-1.15.12-3.el8.x86_64", + "cairo-gobject-1.15.12-3.el8.x86_64", + "checkpolicy-2.9-1.el8.x86_64", + "chkconfig-1.13-2.el8.x86_64", + "chrony-3.5-1.el8.x86_64", + "cloud-init-19.4-7.el8.noarch", + "cloud-utils-growpart-0.31-1.el8.noarch", + "cockpit-bridge-222.1-1.el8.x86_64", + "cockpit-system-222.1-1.el8.noarch", + "cockpit-ws-222.1-1.el8.x86_64", + "coreutils-8.30-8.el8.x86_64", + "coreutils-common-8.30-8.el8.x86_64", + "cpio-2.12-8.el8.x86_64", + "cracklib-2.9.6-15.el8.x86_64", + "cracklib-dicts-2.9.6-15.el8.x86_64", + "cronie-1.5.2-4.el8.x86_64", + "cronie-anacron-1.5.2-4.el8.x86_64", + "crontabs-1.11-16.20150630git.el8.noarch", + "crypto-policies-20200610-1.git0ac8b1f.el8.noarch", + "crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch", + "cryptsetup-libs-2.3.3-1.el8.x86_64", + "curl-7.61.1-12.el8.x86_64", + "cyrus-sasl-lib-2.1.27-5.el8.x86_64", + "dbus-1.12.8-11.el8.x86_64", + "dbus-common-1.12.8-11.el8.noarch", + "dbus-daemon-1.12.8-11.el8.x86_64", + "dbus-glib-0.110-2.el8.x86_64", + "dbus-libs-1.12.8-11.el8.x86_64", + "dbus-tools-1.12.8-11.el8.x86_64", + "dejavu-fonts-common-2.35-6.el8.noarch", + "dejavu-sans-mono-fonts-2.35-6.el8.noarch", + "device-mapper-1.02.171-3.el8.x86_64", + "device-mapper-libs-1.02.171-3.el8.x86_64", + "dhcp-client-4.3.6-41.el8.x86_64", + "dhcp-common-4.3.6-41.el8.noarch", + "dhcp-libs-4.3.6-41.el8.x86_64", + "diffutils-3.6-6.el8.x86_64", + "dmidecode-3.2-6.el8.x86_64", + "dnf-4.2.23-2.el8.noarch", + "dnf-data-4.2.23-2.el8.noarch", + "dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch", + "dnf-plugin-subscription-manager-1.27.9-1.el8.x86_64", + "dnf-plugins-core-4.0.17-2.el8.noarch", + "dracut-049-89.git20200625.el8.x86_64", + "dracut-config-generic-049-89.git20200625.el8.x86_64", + "dracut-network-049-89.git20200625.el8.x86_64", + "dracut-squash-049-89.git20200625.el8.x86_64", + "e2fsprogs-1.45.6-1.el8.x86_64", + "e2fsprogs-libs-1.45.6-1.el8.x86_64", + "elfutils-debuginfod-client-0.180-1.el8.x86_64", + "elfutils-default-yama-scope-0.180-1.el8.noarch", + "elfutils-libelf-0.180-1.el8.x86_64", + "elfutils-libs-0.180-1.el8.x86_64", + "ethtool-5.0-2.el8.x86_64", + "expat-2.2.5-4.el8.x86_64", + "file-5.33-16.el8.x86_64", + "file-libs-5.33-16.el8.x86_64", + "filesystem-3.8-3.el8.x86_64", + "findutils-4.6.0-20.el8.x86_64", + "fontconfig-2.13.1-3.el8.x86_64", + "fontpackages-filesystem-1.44-22.el8.noarch", + "freetype-2.9.1-4.el8.x86_64", + "fuse-libs-2.9.7-12.el8.x86_64", + "gawk-4.2.1-1.el8.x86_64", + "gdbm-1.18-1.el8.x86_64", + "gdbm-libs-1.18-1.el8.x86_64", + "gdk-pixbuf2-2.36.12-5.el8.x86_64", + "geolite2-city-20180605-1.el8.noarch", + "geolite2-country-20180605-1.el8.noarch", + "gettext-0.19.8.1-17.el8.x86_64", + "gettext-libs-0.19.8.1-17.el8.x86_64", + "glib-networking-2.56.1-1.1.el8.x86_64", + "glib2-2.56.4-8.el8.x86_64", + "glibc-2.28-127.el8.x86_64", + "glibc-all-langpacks-2.28-127.el8.x86_64", + "glibc-common-2.28-127.el8.x86_64", + "gmp-6.1.2-10.el8.x86_64", + "gnupg2-2.2.20-2.el8.x86_64", + "gnupg2-smime-2.2.20-2.el8.x86_64", + "gnutls-3.6.14-3.el8.x86_64", + "gobject-introspection-1.56.1-1.el8.x86_64", + "gpg-pubkey-d4082792-5b32db75", + "gpg-pubkey-fd431d51-4ae0493b", + "gpgme-1.13.1-3.el8.x86_64", + "grep-3.1-6.el8.x86_64", + "groff-base-1.22.3-18.el8.x86_64", + "grub2-common-2.02-84.el8.noarch", + "grub2-pc-2.02-84.el8.x86_64", + "grub2-pc-modules-2.02-84.el8.noarch", + "grub2-tools-2.02-84.el8.x86_64", + "grub2-tools-extra-2.02-84.el8.x86_64", + "grub2-tools-minimal-2.02-84.el8.x86_64", + "grubby-8.40-41.el8.x86_64", + "gsettings-desktop-schemas-3.32.0-5.el8.x86_64", + "gssproxy-0.8.0-16.el8.x86_64", + "gzip-1.9-9.el8.x86_64", + "hardlink-1.3-6.el8.x86_64", + "hdparm-9.54-2.el8.x86_64", + "hostname-3.20-6.el8.x86_64", + "hwdata-0.314-8.5.el8.noarch", + "ima-evm-utils-1.1-5.el8.x86_64", + "info-6.5-6.el8.x86_64", + "initscripts-10.00.8-1.el8.x86_64", + "insights-client-3.0.14-2.el8.noarch", + "ipcalc-0.2.4-4.el8.x86_64", + "iproute-5.3.0-5.el8.x86_64", + "iptables-libs-1.8.4-14.el8.x86_64", + "iputils-20180629-2.el8.x86_64", + "irqbalance-1.4.0-4.el8.x86_64", + "jansson-2.11-3.el8.x86_64", + "json-c-0.13.1-0.2.el8.x86_64", + "json-glib-1.4.4-1.el8.x86_64", + "kbd-2.0.4-10.el8.x86_64", + "kbd-legacy-2.0.4-10.el8.noarch", + "kbd-misc-2.0.4-10.el8.noarch", + "kernel-4.18.0-221.el8.x86_64", + "kernel-core-4.18.0-221.el8.x86_64", + "kernel-modules-4.18.0-221.el8.x86_64", + "kernel-tools-4.18.0-221.el8.x86_64", + "kernel-tools-libs-4.18.0-221.el8.x86_64", + "kexec-tools-2.0.20-29.el8.x86_64", + "keyutils-1.5.10-6.el8.x86_64", + "keyutils-libs-1.5.10-6.el8.x86_64", + "kmod-25-16.el8.x86_64", + "kmod-libs-25-16.el8.x86_64", + "kpartx-0.8.4-2.el8.x86_64", + "krb5-libs-1.18.2-3.el8.x86_64", + "less-530-1.el8.x86_64", + "libX11-1.6.8-3.el8.x86_64", + "libX11-common-1.6.8-3.el8.noarch", + "libXau-1.0.9-3.el8.x86_64", + "libXext-1.3.4-1.el8.x86_64", + "libXrender-0.9.10-7.el8.x86_64", + "libacl-2.2.53-1.el8.x86_64", + "libappstream-glib-0.7.14-3.el8.x86_64", + "libarchive-3.3.2-9.el8.x86_64", + "libassuan-2.5.1-3.el8.x86_64", + "libattr-2.4.48-3.el8.x86_64", + "libbasicobjects-0.1.1-39.el8.x86_64", + "libblkid-2.32.1-24.el8.x86_64", + "libcap-2.26-4.el8.x86_64", + "libcap-ng-0.7.9-5.el8.x86_64", + "libcollection-0.7.0-39.el8.x86_64", + "libcom_err-1.45.6-1.el8.x86_64", + "libcomps-0.1.11-4.el8.x86_64", + "libcroco-0.6.12-4.el8.x86_64", + "libcurl-7.61.1-12.el8.x86_64", + "libdaemon-0.14-15.el8.x86_64", + "libdb-5.3.28-39.el8.x86_64", + "libdb-utils-5.3.28-39.el8.x86_64", + "libdhash-0.5.0-39.el8.x86_64", + "libdnf-0.48.0-2.el8.x86_64", + "libedit-3.1-23.20170329cvs.el8.x86_64", + "libestr-0.1.10-1.el8.x86_64", + "libevent-2.1.8-5.el8.x86_64", + "libfastjson-0.99.8-2.el8.x86_64", + "libfdisk-2.32.1-24.el8.x86_64", + "libffi-3.1-22.el8.x86_64", + "libgcc-8.3.1-5.1.el8.x86_64", + "libgcrypt-1.8.5-4.el8.x86_64", + "libgomp-8.3.1-5.1.el8.x86_64", + "libgpg-error-1.31-1.el8.x86_64", + "libgudev-232-4.el8.x86_64", + "libidn2-2.2.0-1.el8.x86_64", + "libini_config-1.3.1-39.el8.x86_64", + "libkcapi-1.2.0-2.el8.x86_64", + "libkcapi-hmaccalc-1.2.0-2.el8.x86_64", + "libksba-1.3.5-7.el8.x86_64", + "libldb-2.1.3-2.el8.x86_64", + "libmaxminddb-1.2.0-10.el8.x86_64", + "libmetalink-0.1.3-7.el8.x86_64", + "libmnl-1.0.4-6.el8.x86_64", + "libmodman-2.0.1-17.el8.x86_64", + "libmodulemd-2.9.4-2.el8.x86_64", + "libmount-2.32.1-24.el8.x86_64", + "libndp-1.7-3.el8.x86_64", + "libnfsidmap-2.3.3-35.el8.x86_64", + "libnghttp2-1.33.0-3.el8_2.1.x86_64", + "libnl3-3.5.0-1.el8.x86_64", + "libnl3-cli-3.5.0-1.el8.x86_64", + "libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64", + "libpath_utils-0.2.1-39.el8.x86_64", + "libpcap-1.9.1-4.el8.x86_64", + "libpipeline-1.5.0-2.el8.x86_64", + "libpng-1.6.34-5.el8.x86_64", + "libproxy-0.4.15-5.2.el8.x86_64", + "libpsl-0.20.2-6.el8.x86_64", + "libpwquality-1.4.0-9.el8.x86_64", + "libref_array-0.1.5-39.el8.x86_64", + "librepo-1.12.0-1.el8.x86_64", + "libreport-filesystem-2.9.5-11.el8.x86_64", + "librhsm-0.0.3-3.el8.x86_64", + "libseccomp-2.4.3-1.el8.x86_64", + "libsecret-0.18.6-1.el8.x86_64", + "libselinux-2.9-3.el8.x86_64", + "libselinux-utils-2.9-3.el8.x86_64", + "libsemanage-2.9-3.el8.x86_64", + "libsepol-2.9-1.el8.x86_64", + "libsigsegv-2.11-5.el8.x86_64", + "libsmartcols-2.32.1-24.el8.x86_64", + "libsolv-0.7.11-1.el8.x86_64", + "libsoup-2.62.3-1.el8.x86_64", + "libss-1.45.6-1.el8.x86_64", + "libssh-0.9.4-2.el8.x86_64", + "libssh-config-0.9.4-2.el8.noarch", + "libsss_autofs-2.3.0-2.el8.x86_64", + "libsss_certmap-2.3.0-2.el8.x86_64", + "libsss_idmap-2.3.0-2.el8.x86_64", + "libsss_nss_idmap-2.3.0-2.el8.x86_64", + "libsss_sudo-2.3.0-2.el8.x86_64", + "libstdc++-8.3.1-5.1.el8.x86_64", + "libstemmer-0-10.585svn.el8.x86_64", + "libsysfs-2.1.0-24.el8.x86_64", + "libtalloc-2.3.1-2.el8.x86_64", + "libtasn1-4.13-3.el8.x86_64", + "libtdb-1.4.3-1.el8.x86_64", + "libteam-1.29-5.el8.x86_64", + "libtevent-0.10.2-2.el8.x86_64", + "libtirpc-1.1.4-4.el8.x86_64", + "libunistring-0.9.9-3.el8.x86_64", + "libusbx-1.0.23-3.el8.x86_64", + "libuser-0.62-23.el8.x86_64", + "libutempter-1.1.6-14.el8.x86_64", + "libuuid-2.32.1-24.el8.x86_64", + "libverto-0.3.0-5.el8.x86_64", + "libverto-libevent-0.3.0-5.el8.x86_64", + "libxcb-1.13.1-1.el8.x86_64", + "libxcrypt-4.1.1-4.el8.x86_64", + "libxkbcommon-0.9.1-1.el8.x86_64", + "libxml2-2.9.7-8.el8.x86_64", + "libyaml-0.1.7-5.el8.x86_64", + "libzstd-1.4.4-1.el8.x86_64", + "linux-firmware-20200619-99.git3890db36.el8.noarch", + "logrotate-3.14.0-4.el8.x86_64", + "lshw-B.02.19.2-2.el8.x86_64", + "lsscsi-0.30-1.el8.x86_64", + "lua-libs-5.3.4-11.el8.x86_64", + "lz4-libs-1.8.3-2.el8.x86_64", + "lzo-2.08-14.el8.x86_64", + "man-db-2.7.6.1-17.el8.x86_64", + "memstrack-0.1.8-1.el8.x86_64", + "microcode_ctl-20200609-2.el8.x86_64", + "mozjs60-60.9.0-4.el8.x86_64", + "mpfr-3.1.6-1.el8.x86_64", + "ncurses-6.1-7.20180224.el8.x86_64", + "ncurses-base-6.1-7.20180224.el8.noarch", + "ncurses-libs-6.1-7.20180224.el8.x86_64", + "net-tools-2.0-0.52.20160912git.el8.x86_64", + "nettle-3.4.1-2.el8.x86_64", + "newt-0.52.20-11.el8.x86_64", + "nfs-utils-2.3.3-35.el8.x86_64", + "npth-1.5-4.el8.x86_64", + "numactl-libs-2.0.12-11.el8.x86_64", + "openldap-2.4.46-15.el8.x86_64", + "openssh-8.0p1-5.el8.x86_64", + "openssh-clients-8.0p1-5.el8.x86_64", + "openssh-server-8.0p1-5.el8.x86_64", + "openssl-1.1.1g-9.el8.x86_64", + "openssl-libs-1.1.1g-9.el8.x86_64", + "openssl-pkcs11-0.4.10-2.el8.x86_64", + "os-prober-1.74-6.el8.x86_64", + "p11-kit-0.23.14-5.el8_0.x86_64", + "p11-kit-trust-0.23.14-5.el8_0.x86_64", + "pam-1.3.1-11.el8.x86_64", + "parted-3.2-38.el8.x86_64", + "passwd-0.80-3.el8.x86_64", + "pciutils-3.6.4-2.el8.x86_64", + "pciutils-libs-3.6.4-2.el8.x86_64", + "pcre-8.42-4.el8.x86_64", + "pcre2-10.32-2.el8.x86_64", + "pigz-2.4-4.el8.x86_64", + "pinentry-1.1.0-2.el8.x86_64", + "pixman-0.38.4-1.el8.x86_64", + "platform-python-3.6.8-30.el8.x86_64", + "platform-python-pip-9.0.3-17.el8.noarch", + "platform-python-setuptools-39.2.0-6.el8.noarch", + "policycoreutils-2.9-9.el8.x86_64", + "policycoreutils-python-utils-2.9-9.el8.noarch", + "polkit-0.115-11.el8.x86_64", + "polkit-libs-0.115-11.el8.x86_64", + "polkit-pkla-compat-0.1-12.el8.x86_64", + "popt-1.16-14.el8.x86_64", + "prefixdevname-0.1.0-6.el8.x86_64", + "procps-ng-3.3.15-2.el8.x86_64", + "publicsuffix-list-dafsa-20180723-1.el8.noarch", + "python3-asn1crypto-0.24.0-3.el8.noarch", + "python3-audit-3.0-0.17.20191104git1c2f876.el8.x86_64", + "python3-babel-2.5.1-5.el8.noarch", + "python3-cairo-1.16.3-6.el8.x86_64", + "python3-cffi-1.11.5-5.el8.x86_64", + "python3-chardet-3.0.4-7.el8.noarch", + "python3-configobj-5.0.6-11.el8.noarch", + "python3-cryptography-2.3-3.el8.x86_64", + "python3-dateutil-2.6.1-6.el8.noarch", + "python3-dbus-1.2.4-15.el8.x86_64", + "python3-decorator-4.2.1-2.el8.noarch", + "python3-dmidecode-3.12.2-15.el8.x86_64", + "python3-dnf-4.2.23-2.el8.noarch", + "python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch", + "python3-dnf-plugins-core-4.0.17-2.el8.noarch", + "python3-ethtool-0.14-3.el8.x86_64", + "python3-gobject-3.28.3-2.el8.x86_64", + "python3-gobject-base-3.28.3-2.el8.x86_64", + "python3-gpg-1.13.1-3.el8.x86_64", + "python3-hawkey-0.48.0-2.el8.x86_64", + "python3-hwdata-2.3.6-3.el8.noarch", + "python3-idna-2.5-5.el8.noarch", + "python3-iniparse-0.4-31.el8.noarch", + "python3-inotify-0.9.6-13.el8.noarch", + "python3-jinja2-2.10.1-2.el8_0.noarch", + "python3-jsonpatch-1.21-2.el8.noarch", + "python3-jsonpointer-1.10-11.el8.noarch", + "python3-jsonschema-2.6.0-4.el8.noarch", + "python3-jwt-1.6.1-2.el8.noarch", + "python3-libcomps-0.1.11-4.el8.x86_64", + "python3-libdnf-0.48.0-2.el8.x86_64", + "python3-librepo-1.12.0-1.el8.x86_64", + "python3-libs-3.6.8-30.el8.x86_64", + "python3-libselinux-2.9-3.el8.x86_64", + "python3-libsemanage-2.9-3.el8.x86_64", + "python3-libxml2-2.9.7-8.el8.x86_64", + "python3-linux-procfs-0.6.2-2.el8.noarch", + "python3-magic-5.33-16.el8.noarch", + "python3-markupsafe-0.23-19.el8.x86_64", + "python3-netifaces-0.10.6-4.el8.x86_64", + "python3-newt-0.52.20-11.el8.x86_64", + "python3-oauthlib-2.1.0-1.el8.noarch", + "python3-perf-4.18.0-221.el8.x86_64", + "python3-pip-wheel-9.0.3-17.el8.noarch", + "python3-ply-3.9-8.el8.noarch", + "python3-policycoreutils-2.9-9.el8.noarch", + "python3-prettytable-0.7.2-14.el8.noarch", + "python3-pyOpenSSL-18.0.0-1.el8.noarch", + "python3-pycparser-2.14-14.el8.noarch", + "python3-pydbus-0.6.0-5.el8.noarch", + "python3-pyserial-3.1.1-8.el8.noarch", + "python3-pysocks-1.6.8-3.el8.noarch", + "python3-pytz-2017.2-9.el8.noarch", + "python3-pyudev-0.21.0-7.el8.noarch", + "python3-pyyaml-3.12-12.el8.x86_64", + "python3-requests-2.20.0-2.1.el8_1.noarch", + "python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch", + "python3-rpm-4.14.3-4.el8.x86_64", + "python3-schedutils-0.6-6.el8.x86_64", + "python3-setools-4.3.0-1.el8.x86_64", + "python3-setuptools-wheel-39.2.0-6.el8.noarch", + "python3-six-1.11.0-8.el8.noarch", + "python3-slip-0.6.4-11.el8.noarch", + "python3-slip-dbus-0.6.4-11.el8.noarch", + "python3-subscription-manager-rhsm-1.27.9-1.el8.x86_64", + "python3-syspurpose-1.27.9-1.el8.x86_64", + "python3-systemd-234-8.el8.x86_64", + "python3-unbound-1.7.3-14.el8.x86_64", + "python3-urllib3-1.24.2-4.el8.noarch", + "qemu-guest-agent-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64", + "quota-4.04-10.el8.x86_64", + "quota-nls-4.04-10.el8.noarch", + "readline-7.0-10.el8.x86_64", + "redhat-logos-81.1-1.el8.x86_64", + "redhat-release-8.3-0.2.el8.x86_64", + "redhat-release-eula-8.3-0.2.el8.x86_64", + "rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch", + "rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.x86_64", + "rhsm-icons-1.27.9-1.el8.noarch", + "rng-tools-6.8-3.el8.x86_64", + "rootfiles-8.1-22.el8.noarch", + "rpcbind-1.2.5-7.el8.x86_64", + "rpm-4.14.3-4.el8.x86_64", + "rpm-build-libs-4.14.3-4.el8.x86_64", + "rpm-libs-4.14.3-4.el8.x86_64", + "rpm-plugin-selinux-4.14.3-4.el8.x86_64", + "rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64", + "rsync-3.1.3-8.el8.x86_64", + "rsyslog-8.1911.0-6.el8.x86_64", + "sed-4.5-2.el8.x86_64", + "selinux-policy-3.14.3-48.el8.noarch", + "selinux-policy-targeted-3.14.3-48.el8.noarch", + "setroubleshoot-plugins-3.3.12-1.el8.noarch", + "setroubleshoot-server-3.3.23-1.el8.x86_64", + "setup-2.12.2-6.el8.noarch", + "sg3_utils-1.44-5.el8.x86_64", + "sg3_utils-libs-1.44-5.el8.x86_64", + "shadow-utils-4.6-10.el8.x86_64", + "shared-mime-info-1.9-3.el8.x86_64", + "slang-2.3.2-3.el8.x86_64", + "snappy-1.1.7-5.el8.x86_64", + "sos-3.9.1-4.el8.noarch", + "sqlite-libs-3.26.0-10.el8.x86_64", + "squashfs-tools-4.3-19.el8.x86_64", + "sscg-2.3.3-14.el8.x86_64", + "sssd-client-2.3.0-2.el8.x86_64", + "sssd-common-2.3.0-2.el8.x86_64", + "sssd-kcm-2.3.0-2.el8.x86_64", + "sssd-nfs-idmap-2.3.0-2.el8.x86_64", + "subscription-manager-1.27.9-1.el8.x86_64", + "subscription-manager-cockpit-1.27.9-1.el8.noarch", + "subscription-manager-rhsm-certificates-1.27.9-1.el8.x86_64", + "sudo-1.8.29-6.el8.x86_64", + "systemd-239-36.el8.x86_64", + "systemd-libs-239-36.el8.x86_64", + "systemd-pam-239-36.el8.x86_64", + "systemd-udev-239-36.el8.x86_64", + "tar-1.30-5.el8.x86_64", + "tcpdump-4.9.3-1.el8.x86_64", + "teamd-1.29-5.el8.x86_64", + "trousers-0.3.14-4.el8.x86_64", + "trousers-lib-0.3.14-4.el8.x86_64", + "tuned-2.14.0-2.el8.noarch", + "tzdata-2020a-1.el8.noarch", + "unbound-libs-1.7.3-14.el8.x86_64", + "usermode-1.113-1.el8.x86_64", + "util-linux-2.32.1-24.el8.x86_64", + "vim-minimal-8.0.1763-15.el8.x86_64", + "virt-what-1.18-6.el8.x86_64", + "which-2.21-12.el8.x86_64", + "xfsprogs-5.0.0-4.el8.x86_64", + "xkeyboard-config-2.28-1.el8.noarch", + "xz-5.2.4-3.el8.x86_64", + "xz-libs-5.2.4-3.el8.x86_64", + "yum-4.2.23-2.el8.noarch", + "yum-utils-4.0.17-2.el8.noarch", + "zlib-1.2.11-15.el8.x86_64" + ], + "partition-table": "dos", + "partition-table-id": "0x14fc63d2", + "partitions": [ + { + "bootable": true, + "fstype": "xfs", + "label": null, + "partuuid": "14fc63d2-01", + "size": 4293918720, + "start": 1048576, + "type": "83", + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:992:989::/var/lib/chrony:/sbin/nologin", + "cockpit-ws:x:994:991:User for cockpit web service:/nonexisting:/sbin/nologin", + "cockpit-wsinstance:x:993:990:User for cockpit-ws instances:/nonexisting:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "polkitd:x:998:996:User for polkitd:/:/sbin/nologin", + "redhat:x:1000:1000::/home/redhat:/bin/bash", + "rngd:x:991:988:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin", + "root:x:0:0:root:/root:/bin/bash", + "rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin", + "rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin", + "setroubleshoot:x:995:992::/var/lib/setroubleshoot:/sbin/nologin", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sssd:x:996:993:User for sssd:/:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "tcpdump:x:72:72::/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/etc/machine-id": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/proc": ".M.......", + "/sys": ".M.......", + "/var/log/lastlog": ".M....G..", + "/var/spool/anacron/cron.daily": ".M.......", + "/var/spool/anacron/cron.monthly": ".M.......", + "/var/spool/anacron/cron.weekly": ".M......." + }, + "missing": [ + "/etc/systemd/system/dbus-org.freedesktop.resolve1.service" + ] + }, + "services-disabled": [ + "arp-ethers.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "cockpit.socket", + "console-getty.service", + "cpupower.service", + "ctrl-alt-del.target", + "debug-shell.service", + "exit.target", + "fstrim.timer", + "gssproxy.service", + "halt.target", + "insights-client-results.path", + "insights-client.timer", + "kexec.target", + "nfs-blkmap.service", + "nfs-server.service", + "poweroff.target", + "qemu-guest-agent.service", + "rdisc.service", + "reboot.target", + "remote-cryptsetup.target", + "rhnsd.service", + "rhsm-facts.service", + "rhsm.service", + "rngd-wake-threshold.service", + "runlevel0.target", + "runlevel6.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-resolved.service", + "tcsd.service", + "tmp.mount" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "cloud-init.service", + "crond.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dnf-makecache.timer", + "getty@.service", + "import-state.service", + "irqbalance.service", + "kdump.service", + "loadmodules.service", + "microcode.service", + "nfs-client.target", + "nfs-convert.service", + "nis-domainname.service", + "remote-fs.target", + "rhsmcertd.service", + "rngd.service", + "rpcbind.service", + "rpcbind.socket", + "rsyslog.service", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "syslog.service", + "tuned.service", + "unbound-anchor.timer" + ], + "timezone": "UTC" + } +} \ No newline at end of file diff --git a/test/cases/rhel_8-x86_64-qcow2-customize.json b/test/cases/rhel_8-x86_64-qcow2-customize.json new file mode 100644 index 0000000..0e9aa0d --- /dev/null +++ b/test/cases/rhel_8-x86_64-qcow2-customize.json @@ -0,0 +1,10264 @@ +{ + "compose-request": { + "distro": "rhel-8", + "arch": "x86_64", + "repositories": [ + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + }, + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + } + ], + "image-type": "qcow2", + "filename": "disk.qcow2", + "blueprint": { + "packages": [ + { + "name": "bash", + "version": "*" + } + ], + "groups": [ + { + "name": "core" + } + ], + "customizations": { + "hosname": "my-host", + "kernel": { + "append": "debug" + }, + "sshkey": [ + { + "user": "user1", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ], + "user": [ + { + "name": "user2", + "description": "description 2", + "password": "$6$BhyxFBgrEFh0VrPJ$MllG8auiU26x2pmzL4.1maHzPHrA.4gTdCvlATFp8HJU9UPee4zCS9BVl2HOzKaUYD/zEm8r/OF05F2icWB0K/", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost", + "home": "/home/home2", + "shell": "/bin/sh", + "groups": [ + "group1" + ], + "uid": 1020, + "gid": 1050 + } + ], + "group": [ + { + "name": "group1", + "gid": 1030 + }, + { + "name": "group2", + "gid": 1050 + } + ], + "timezone": { + "timezone": "Europe/London", + "ntpservers": [ + "time.example.com" + ] + }, + "locale": { + "languages": [ + "en_US" + ], + "keyboard": "dvorak" + }, + "services": { + "enabled": [ + "sshd.socket" + ], + "disabled": [ + "bluetooth.service" + ] + } + } + } + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:0027700684ce09927aded1d2c5bb84028529141a6b418897bde37d4af348f8bb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:00cc9cd4517cbb4ad99dbce63b40b700699523550cd7f8202948af28dbe2cd9e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:0129696c208f60326723c650295167b0600791ccb2e9c3d446c4caf9adecb3d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-3.5.0-1.el8.x86_64.rpm" + }, + "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libyaml-0.1.7-5.el8.x86_64.rpm" + }, + "sha256:0391105afa53c9503b59591615bd7c98e2f7a4cd94ff4fd1451c4234522f3880": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libedit-3.1-23.20170329cvs.el8.x86_64.rpm" + }, + "sha256:0493fd81825df694be5d15685bfe4dc002de314d18f5ae47ccee769f65ea5013": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ethtool-5.0-2.el8.x86_64.rpm" + }, + "sha256:0602b342148d5e8e6a954bb26af60ed63d3f3d919cd3856ea93612e05ebe2937": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodman-2.0.1-17.el8.x86_64.rpm" + }, + "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmount-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cloud-init-19.4-7.el8.noarch.rpm" + }, + "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-daemon-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-prettytable-0.7.2-14.el8.noarch.rpm" + }, + "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libunistring-0.9.9-3.el8.x86_64.rpm" + }, + "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jinja2-2.10.1-2.el8_0.noarch.rpm" + }, + "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:09ca7b05e26f93d35ac299dbcd865b65ec3a3d2654e1da87d2c3c0462dbe6e4a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-schedutils-0.6-6.el8.x86_64.rpm" + }, + "sha256:09fc3154e76c8ee25b3982c15f3bc455017262c3df5af84075859dcbf79e4f82": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libsemanage-2.9-3.el8.x86_64.rpm" + }, + "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugins-core-4.0.17-2.el8.noarch.rpm" + }, + "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-239-36.el8.x86_64.rpm" + }, + "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/expat-2.2.5-4.el8.x86_64.rpm" + }, + "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-libs-2.3.3-1.el8.x86_64.rpm" + }, + "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm" + }, + "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxcrypt-4.1.1-4.el8.x86_64.rpm" + }, + "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/linux-firmware-20200619-99.git3890db36.el8.noarch.rpm" + }, + "sha256:0e4b7687f0c62f4e336223b939f6cb169c8dac49eee23c53fd919e58d8f989df": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/microcode_ctl-20200609-2.el8.x86_64.rpm" + }, + "sha256:0f3b084d947bc246fe68822129b8ae1294c4187270a19f0966282baf75b34dc6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-subscription-manager-rhsm-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:1065049dbd53849d35db269a23be54148cbe481122381ab71b72f62e83816b26": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gobject-introspection-1.56.1-1.el8.x86_64.rpm" + }, + "sha256:10f40567d02123b71bd878ef423dd0d5dca415e806ff041c3c69b99d114fea84": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chrony-3.5-1.el8.x86_64.rpm" + }, + "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-all-langpacks-2.28-127.el8.x86_64.rpm" + }, + "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm" + }, + "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gmp-6.1.2-10.el8.x86_64.rpm" + }, + "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcc-8.3.1-5.1.el8.x86_64.rpm" + }, + "sha256:13ffce0597b689dd53f55ea0d03dd6d013246634f5c6cbcef51fa549d9734b29": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-cffi-1.11.5-5.el8.x86_64.rpm" + }, + "sha256:14098d36fe4be983fac73d04aeacf0ed7977d962e760907b89e3f80b4ca46f3f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-common-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:14f5ca00582f8d8780a0bcc1b204fb73cfdb35c5725efa4eccffbe8a1988769e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nfs-utils-2.3.3-35.el8.x86_64.rpm" + }, + "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm" + }, + "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cpio-2.12-8.el8.x86_64.rpm" + }, + "sha256:15462b748aef3c565bcf4f849c1a21c1389a8ef5e7dae94e64718865a67d46a9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-libs-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:1594afba86593ec614299ef6af255755a98ea55a34a72a22fdc9d80a040be39d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/abattis-cantarell-fonts-0.0.25-4.el8.noarch.rpm" + }, + "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crontabs-1.11-16.20150630git.el8.noarch.rpm" + }, + "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-smime-2.2.20-2.el8.x86_64.rpm" + }, + "sha256:18d419718a99851370262584bec1b27d60cbd08845b50fbe97e1a56b71cd5ea2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-perf-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:18fd9b2a61147367ad7d51798d33db38aedbaf761f3d0561c752f0048d1f4221": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cairo-gobject-1.15.12-3.el8.x86_64.rpm" + }, + "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm" + }, + "sha256:1b1fe43a375a21f4c3ccf04861c122fd519d4865b9c1abc7f1973b86a0252a06": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-kcm-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-5.2.4-3.el8.x86_64.rpm" + }, + "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.x86_64.rpm" + }, + "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-25-16.el8.x86_64.rpm" + }, + "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tzdata-2020a-1.el8.noarch.rpm" + }, + "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libksba-1.3.5-7.el8.x86_64.rpm" + }, + "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsecret-0.18.6-1.el8.x86_64.rpm" + }, + "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm" + }, + "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/krb5-libs-1.18.2-3.el8.x86_64.rpm" + }, + "sha256:1faa85c12115426d8afc51c8bed2e71bf1dd87063e25052bcf85c17dbc0d9ea4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-network-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-2.02-84.el8.x86_64.rpm" + }, + "sha256:202cfa88a6b2f1ec6a0bc0546f578c1ca6b5b6fcfeaf3e1228beead14d8bf758": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cockpit-system-222.1-1.el8.noarch.rpm" + }, + "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-common-2.28-127.el8.x86_64.rpm" + }, + "sha256:206cba480b58c70348584010d547d21bcd84c6094fd3980e22c6b640da12704c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-syspurpose-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:206de21c82d76de550bcc1959138472640b0a950a311b753203f5dfe5b201b7b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipcalc-0.2.4-4.el8.x86_64.rpm" + }, + "sha256:20dec130e4fd0a2146443791ca7ade6e079cea691d93711813d5f483b691c55a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ethtool-0.14-3.el8.x86_64.rpm" + }, + "sha256:211d74a081c06399001bf09c59e941b444f3175d2900a02775a232f4c83d3fb1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/sscg-2.3.3-14.el8.x86_64.rpm" + }, + "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-5.33-16.el8.x86_64.rpm" + }, + "sha256:22585bd5d69c5e0a06fe00a6844da2e5d311512374c1d176f17f41caab7e121f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/parted-3.2-38.el8.x86_64.rpm" + }, + "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:22942af5dab657f662538619ab84a260d3c92e3498694fca2a126100ff9ab316": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pciutils-3.6.4-2.el8.x86_64.rpm" + }, + "sha256:231bc0eeb8fb127f0a4da5a4da1edd226067d5029a0b4fd6ef72c246ccfc31c0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libldb-2.1.3-2.el8.x86_64.rpm" + }, + "sha256:2334cb78002aa30feeb11549d51e204aa868f5538a09957850082d7efb15b00f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/c-ares-1.13.0-5.el8.x86_64.rpm" + }, + "sha256:23474f4f3841340af8a7ec5ab2d1fa693d4d72d2f782a5930c799560382916ac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstemmer-0-10.585svn.el8.x86_64.rpm" + }, + "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libcomps-0.1.11-4.el8.x86_64.rpm" + }, + "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-3.6.8-30.el8.x86_64.rpm" + }, + "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tuned-2.14.0-2.el8.noarch.rpm" + }, + "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxkbcommon-0.9.1-1.el8.x86_64.rpm" + }, + "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-2.0.4-10.el8.x86_64.rpm" + }, + "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-ng-0.7.9-5.el8.x86_64.rpm" + }, + "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libattr-2.4.48-3.el8.x86_64.rpm" + }, + "sha256:289e2a39b2a29163a29da35936d4b484fe356d0a6d519524023e79686daf501b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-client-4.3.6-41.el8.x86_64.rpm" + }, + "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mpfr-3.1.6-1.el8.x86_64.rpm" + }, + "sha256:2a65cec3eb67ba7645dd97cf3f3811cd5fb06eea2526d36a683d3fdaa0f2825e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cronie-anacron-1.5.2-4.el8.x86_64.rpm" + }, + "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre2-10.32-2.el8.x86_64.rpm" + }, + "sha256:2cfcc3d6163dfaf7ce76998be992bd0b70dd7cbb838430cecf2aff04cd435d24": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/virt-what-1.18-6.el8.x86_64.rpm" + }, + "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pyOpenSSL-18.0.0-1.el8.noarch.rpm" + }, + "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.x86_64.rpm" + }, + "sha256:2e90748420a7d28b3063df04de129e79ea85310a8d9cf2faf0a2e7b8430307c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-client-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:2eba2dc51974271244bdeaaf17c6e8fac3c35b62914b680076bdc4a32272df01": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpath_utils-0.2.1-39.el8.x86_64.rpm" + }, + "sha256:2eed977380b41885d4f7ad33e122abbb9ea7391c1255d182451efd457688c8b2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnfsidmap-2.3.3-35.el8.x86_64.rpm" + }, + "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-8.30-8.el8.x86_64.rpm" + }, + "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kpartx-0.8.4-2.el8.x86_64.rpm" + }, + "sha256:330b6ab19f2ac365587b1c7536420f63c7a1ec0e4f54903f13fffc9fe1f51527": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cockpit-ws-222.1-1.el8.x86_64.rpm" + }, + "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpsl-0.20.2-6.el8.x86_64.rpm" + }, + "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm" + }, + "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-dicts-2.9.6-15.el8.x86_64.rpm" + }, + "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-oauthlib-2.1.0-1.el8.noarch.rpm" + }, + "sha256:3459ac9ecad925e511502cff687ceb77f52f391303793f7670794a5c0b040f3d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/setroubleshoot-plugins-3.3.12-1.el8.noarch.rpm" + }, + "sha256:348b7d66a20015563489babbc3850928587575d0acde7c61d55480ebf0f3820d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-squash-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:350657e984b1736bb4a8c9cc01b772517a4194467d6db84110c1cc42131f1cae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/initscripts-10.00.8-1.el8.x86_64.rpm" + }, + "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-chardet-3.0.4-7.el8.noarch.rpm" + }, + "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/zlib-1.2.11-15.el8.x86_64.rpm" + }, + "sha256:3730f3f8d3332836f278250408891cb097379a5d7745fe698b1d418e9e13d335": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-clients-8.0p1-5.el8.x86_64.rpm" + }, + "sha256:37504d807ac0bb6c429d7be9c636f7b755464023511d856846dbb9deb8f6a76d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/logrotate-3.14.0-4.el8.x86_64.rpm" + }, + "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libseccomp-2.4.3-1.el8.x86_64.rpm" + }, + "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-2.26-4.el8.x86_64.rpm" + }, + "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-1.18-1.el8.x86_64.rpm" + }, + "sha256:398c1abc82097370f46e6fdf4dae63870e1f767b24d0130c79ed67ea3a67233a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sg3_utils-1.44-5.el8.x86_64.rpm" + }, + "sha256:39e59e9a2460e3b6fe147501e79a57042f161c217963be212359031bb8b18daa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/jansson-2.11-3.el8.x86_64.rpm" + }, + "sha256:39e6bc1e8101e536066554702d5d6b25f8cad359fb5e02ac598cfdad56eafb6d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxcb-1.13.1-1.el8.x86_64.rpm" + }, + "sha256:3a1058c6ba468722090a74002a3239161771b0d8b444975bff891afd45bb672a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsysfs-2.1.0-24.el8.x86_64.rpm" + }, + "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-configobj-5.0.6-11.el8.noarch.rpm" + }, + "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/procps-ng-3.3.15-2.el8.x86_64.rpm" + }, + "sha256:3b087daa7e9de69c051f22f9df1ef00867ffddd99357bc3a215ccde76a13c02f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtalloc-2.3.1-2.el8.x86_64.rpm" + }, + "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/filesystem-3.8-3.el8.x86_64.rpm" + }, + "sha256:3babb3a2d4bdffe51f8453a1a4151688a76b48327d37464e11f7c6529c888b30": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/setroubleshoot-server-3.3.23-1.el8.x86_64.rpm" + }, + "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-plugins-core-4.0.17-2.el8.noarch.rpm" + }, + "sha256:3d1dfe2e487e06efda133298a0fd0913f95b61c4373332db110b496aaadc8f05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/qemu-guest-agent-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64.rpm" + }, + "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-8.3-0.2.el8.x86_64.rpm" + }, + "sha256:3e180253732f00c919aaebc9aaa0562eefac466ce145ce5ad5e1092453aeebaa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rsync-3.1.3-8.el8.x86_64.rpm" + }, + "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ima-evm-utils-1.1-5.el8.x86_64.rpm" + }, + "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tar-1.30-5.el8.x86_64.rpm" + }, + "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pyserial-3.1.1-8.el8.noarch.rpm" + }, + "sha256:3edf7d29e530e6568416d4455e9fbaa511aba236c603da9928e689fae77b9874": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-netifaces-0.10.6-4.el8.x86_64.rpm" + }, + "sha256:40010441888b72dd077d4d6790f837236701b93c8b31da5dbf65c700fd2571fd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-config-generic-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:411d65fe9e463458af055d06a4a89a1d822d26049198615c0afc9741c426c77c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cronie-1.5.2-4.el8.x86_64.rpm" + }, + "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gpg-1.13.1-3.el8.x86_64.rpm" + }, + "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-common-4.3.6-41.el8.noarch.rpm" + }, + "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/util-linux-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:4229196b5ea88c1133d5509a2ec326093a2c7ac5566ca4abb55c3d6fab47130a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-gobject-3.28.3-2.el8.x86_64.rpm" + }, + "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xfsprogs-5.0.0-4.el8.x86_64.rpm" + }, + "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:4403330cdf4f15d75d727e2ac8c3358ff6a13209b3395dfac2131984e443eb23": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/snappy-1.1.7-5.el8.x86_64.rpm" + }, + "sha256:4405d32322fd496c65f57a12b6037fd75b49957269dbf9cb0417b598162f7407": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iproute-5.3.0-5.el8.x86_64.rpm" + }, + "sha256:441efa6f0b9a9905ef11ec987d6db89e7dba2857060020c4554e32db3e59fce5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-libs-0.115-11.el8.x86_64.rpm" + }, + "sha256:44e81330b185085f871e9fbf8fae27c8de411600c032aca371dc6d39a3e261da": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_sudo-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libzstd-1.4.4-1.el8.x86_64.rpm" + }, + "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtirpc-1.1.4-4.el8.x86_64.rpm" + }, + "sha256:468b540f98263d7b274c722a7b8f18ac1ab9d88783cfca6561c85e56b36afeee": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/PackageKit-glib-1.1.12-6.el8.x86_64.rpm" + }, + "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm" + }, + "sha256:474a66a4cf3d5a00286be40c15bad69ea1ac63a9424a1ff44f20a548a7686f7a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libfastjson-0.99.8-2.el8.x86_64.rpm" + }, + "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm" + }, + "sha256:4882ff53265bdeabb69f1ac9c585454b28ae799ab31fa72c9eb10bdbe1f41d9a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-tools-libs-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:4931d78c496eaaa8e6b6bbec2b4750da52b9fc7e989ae89b7c1fa2a6f40ff7fa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm" + }, + "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libidn2-2.2.0-1.el8.x86_64.rpm" + }, + "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pyudev-0.21.0-7.el8.noarch.rpm" + }, + "sha256:4b8cd13404adac1a30a105e894a733f7c79bfac1a125b8cd095e6ba9c1d056f9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-tui-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-modules-2.02-84.el8.noarch.rpm" + }, + "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgpg-error-1.31-1.el8.x86_64.rpm" + }, + "sha256:4ca553b0c0f6dc130e05e2011cdf1f52132e8f70bd93be8eee4e415b2cac0c56": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-librepo-1.12.0-1.el8.x86_64.rpm" + }, + "sha256:4ccbefcbe75decfef38ccae5d8ff92ba6b00e8232b64ec46ae0c0be8ae20ec50": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libxml2-2.9.7-8.el8.x86_64.rpm" + }, + "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-libs-1.0.6-26.el8.x86_64.rpm" + }, + "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-libs-1.5.10-6.el8.x86_64.rpm" + }, + "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shared-mime-info-1.9-3.el8.x86_64.rpm" + }, + "sha256:4ed1a6294eea09a3a7e15683267ca5d383e4c2b27fd57fe05d2666e0e6c3d26f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtdb-1.4.3-1.el8.x86_64.rpm" + }, + "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/npth-1.5-4.el8.x86_64.rpm" + }, + "sha256:507442831068c749ba21b22bd96993a1a2a6c74dd53c55f34c7f81a21554c82d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libref_array-0.1.5-39.el8.x86_64.rpm" + }, + "sha256:50c0d1828a9e8db638c09d88afb0828d98349027ce498ee7df74e7ff6052ac1d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdhash-0.5.0-39.el8.x86_64.rpm" + }, + "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib2-2.56.4-8.el8.x86_64.rpm" + }, + "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm" + }, + "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-eula-8.3-0.2.el8.x86_64.rpm" + }, + "sha256:516acd98bf46b3b2e09fd0d2f0cf1fbf4ecbecc9b0e10028c3a26ce9a6aca393": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpcbind-1.2.5-7.el8.x86_64.rpm" + }, + "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-rpm-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-4.4.19-12.el8.x86_64.rpm" + }, + "sha256:534bbf990d0f0537715561c818c2b68f10e6ba0cc1252a32a0696f1e22fde1e3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-systemd-234-8.el8.x86_64.rpm" + }, + "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-c-0.13.1-0.2.el8.x86_64.rpm" + }, + "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:539abfc369a17023658486f7b4a48c8db159cc4d617b27da256ddac6e15ea687": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpipeline-1.5.0-2.el8.x86_64.rpm" + }, + "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpng-1.6.34-5.el8.x86_64.rpm" + }, + "sha256:53fb6834e2e439e79225d957c4643922da74836417b5558d0c2943b546b26e57": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libndp-1.7-3.el8.x86_64.rpm" + }, + "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-build-libs-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm" + }, + "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcroco-0.6.12-4.el8.x86_64.rpm" + }, + "sha256:593d4df5b8de12ed0ec5a0935cb0bd966e27a631aa0806250ba9f67092ad737f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libX11-common-1.6.8-3.el8.noarch.rpm" + }, + "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonschema-2.6.0-4.el8.noarch.rpm" + }, + "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-hawkey-0.48.0-2.el8.x86_64.rpm" + }, + "sha256:5a85222c8e9997a8b609b915a8fbae756de9b9bff732db852fb15fe0524f2d86": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dbus-1.2.4-15.el8.x86_64.rpm" + }, + "sha256:5bdb82a14d3604899324afc296aa7e7179a15788e2514348eea81b46934d6a3c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/authselect-libs-1.2.1-2.el8.x86_64.rpm" + }, + "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgomp-8.3.1-5.1.el8.x86_64.rpm" + }, + "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lz4-libs-1.8.3-2.el8.x86_64.rpm" + }, + "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonpointer-1.10-11.el8.noarch.rpm" + }, + "sha256:5ef47eb6a042a13c902764907692c1068eb0f69153b47bc85792bef74bfa852b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rsyslog-8.1911.0-6.el8.x86_64.rpm" + }, + "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-libs-5.33-16.el8.x86_64.rpm" + }, + "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lua-libs-5.3.4-11.el8.x86_64.rpm" + }, + "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-6.1-7.20180224.el8.x86_64.rpm" + }, + "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/curl-7.61.1-12.el8.x86_64.rpm" + }, + "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nettle-3.4.1-2.el8.x86_64.rpm" + }, + "sha256:648e239be605f6cdc5b9cc63e316bcad906a4d0df605e7f6188009b0c48fc6d1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/tcpdump-4.9.3-1.el8.x86_64.rpm" + }, + "sha256:65dc391ab1c96d1009ef2e7706eabacd5cf84f2a47ea1cc87f6f5e2c1324b178": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsepol-2.9-1.el8.x86_64.rpm" + }, + "sha256:664a883f3c7042eb91e0b66fc99c309a729011b4912e4af9397f4e25e1adae90": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cloud-utils-growpart-0.31-1.el8.noarch.rpm" + }, + "sha256:671852e4f32de6278dd384d35d1dc799ab5d3e8ef718e89e516452cbcba068f0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sg3_utils-libs-1.44-5.el8.x86_64.rpm" + }, + "sha256:68362500ad574eb2df43a3d260ab8d0f3ce1ae5f34e66d71f2478fef8e17cb4a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/less-530-1.el8.x86_64.rpm" + }, + "sha256:6844197fd8ffdb16cf94ab77709aa2954cb39512435a377401ebce340d06c7de": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/irqbalance-1.4.0-4.el8.x86_64.rpm" + }, + "sha256:686015c78247edec0a0f5e0d2cbbf02d9feea162e5967ed5b5be35d3951b1f3d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dmidecode-3.2-6.el8.x86_64.rpm" + }, + "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-5.3.28-39.el8.x86_64.rpm" + }, + "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/freetype-2.9.1-4.el8.x86_64.rpm" + }, + "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpwquality-1.4.0-9.el8.x86_64.rpm" + }, + "sha256:6cab44ed85c7dc821e84fab9d383f7d0a4b299cc29c8f0860b13e82bb0da8d6f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsoup-2.62.3-1.el8.x86_64.rpm" + }, + "sha256:6d0dcbaa45457461dd5c4afe97689fa2baf5f95551bbe5e827a152dee545a51d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-libnm-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-7.20180224.el8.x86_64.rpm" + }, + "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-0.19.8.1-17.el8.x86_64.rpm" + }, + "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hwdata-0.314-8.5.el8.noarch.rpm" + }, + "sha256:713ec69b972a8e88622b3fcd3b84fccdbd6c333b68b6c52151c2350edad2576a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgudev-232-4.el8.x86_64.rpm" + }, + "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openldap-2.4.46-15.el8.x86_64.rpm" + }, + "sha256:72ff3a3f6c52849a40cb24f9694115a68cc939970a00c374b4c73b1e4c5dc20c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/squashfs-tools-4.3-19.el8.x86_64.rpm" + }, + "sha256:73c29baa2cd94f1ae6a1d1333818969a281b16dd4262f413ad284c5333719a4d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/groff-base-1.22.3-18.el8.x86_64.rpm" + }, + "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libdnf-0.48.0-2.el8.x86_64.rpm" + }, + "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.x86_64.rpm" + }, + "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsemanage-2.9-3.el8.x86_64.rpm" + }, + "sha256:761ff1ccc95562a4512c4bea1d4c2b507c42e3805c9e1e0093c80539a954047b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-1.5.10-6.el8.x86_64.rpm" + }, + "sha256:76ca09c73360f48d4b6fe4d4ee0aa974ef53531222df8e363d8006ec469051cf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-core-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:77edc93b5e83aed2527a58760033fe857c6c8f7807e2169865015acbbe926376": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pixman-0.38.4-1.el8.x86_64.rpm" + }, + "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-libs-1.02.171-3.el8.x86_64.rpm" + }, + "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-utils-5.3.28-39.el8.x86_64.rpm" + }, + "sha256:798420bbda79fd0b9312abac25efad6b28957c512497f37f4beddad5d67dd66a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdaemon-0.14-15.el8.x86_64.rpm" + }, + "sha256:7a7a238ea529165348acef1d1a20c1d47c1ef5838d8501f3879bb130c1b73e06": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-cryptography-2.3-3.el8.x86_64.rpm" + }, + "sha256:7b6856dc4dc1d88d9c3c9597fb824b5776af59f045087bdb2713d64045216a36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/man-db-2.7.6.1-17.el8.x86_64.rpm" + }, + "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pinentry-1.1.0-2.el8.x86_64.rpm" + }, + "sha256:7c0b2b064dad700cba2754b46f483e3e59aaf798740470df1daad3d5239fb893": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/passwd-0.80-3.el8.x86_64.rpm" + }, + "sha256:7c292b3bb74d12d77e1e22221c55696a0c5f50304040b3a706c2164d5b6a42e4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_nss_idmap-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:7c89c2d055013779252c12643e8f0b3731f4dd5e2b61d9d81233a0ee298abb36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libteam-1.29-5.el8.x86_64.rpm" + }, + "sha256:7ce6aa282f9f23c46c44186595924d05f4e7a899b504eb95a0f87008f6620268": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dejavu-fonts-common-2.35-6.el8.noarch.rpm" + }, + "sha256:7d0bc4f2f78166013ef160ed10930a4902c7c5c6d6b7940fc900d36eaacc65a2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cairo-1.15.12-3.el8.x86_64.rpm" + }, + "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/brotli-1.0.6-2.el8.x86_64.rpm" + }, + "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm" + }, + "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libevent-2.1.8-5.el8.x86_64.rpm" + }, + "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-slip-0.6.4-11.el8.noarch.rpm" + }, + "sha256:802263173d9c487fc3ca584cc2a5b7b7bb49ac0d12d9026b3246d50fd0888fb1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-glib-0.110-2.el8.x86_64.rpm" + }, + "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/popt-1.16-14.el8.x86_64.rpm" + }, + "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.x86_64.rpm" + }, + "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-libs-1.8.4-14.el8.x86_64.rpm" + }, + "sha256:860676d4231afa3e6b23933d8dd65e5f7f5823910791e6481d2440ae4ec64c53": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtevent-0.10.2-2.el8.x86_64.rpm" + }, + "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libassuan-2.5.1-3.el8.x86_64.rpm" + }, + "sha256:86d305a1466a596f8b436561d674f2510f268bed9e73f56c87da1dd120f99c18": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gobject-base-3.28.3-2.el8.x86_64.rpm" + }, + "sha256:871672b8a9ffbe887b32e736494c1f005795bc7ffda026c6a063ee0d28788709": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libXrender-0.9.10-7.el8.x86_64.rpm" + }, + "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grubby-8.40-41.el8.x86_64.rpm" + }, + "sha256:8af00d4b0857240310156e05123e07795e6573da7c1fe9e7fd83b51f13971725": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-0.115-11.el8.x86_64.rpm" + }, + "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libfdisk-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pycparser-2.14-14.el8.noarch.rpm" + }, + "sha256:8caac6d04fc98a82d17af56a8faacd1e1a019112ba207388fb82ffdd6df54301": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-cairo-1.16.3-6.el8.x86_64.rpm" + }, + "sha256:8d371e753071edc796d2eadb8278980290511be6279fdf46649c81b859497d6a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/prefixdevname-0.1.0-6.el8.x86_64.rpm" + }, + "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpcap-1.9.1-4.el8.x86_64.rpm" + }, + "sha256:8e2c0324789f42ebb6324847249699eb499544a3e6ad67ccd74713b3c1d6ce78": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-magic-5.33-16.el8.noarch.rpm" + }, + "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/unbound-libs-1.7.3-14.el8.x86_64.rpm" + }, + "sha256:8f00781eb679c6baf359099fa2a672ffccfc8e43b7c03c1dc635619cb25ff01d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm" + }, + "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-libs-2.9.7-12.el8.x86_64.rpm" + }, + "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm" + }, + "sha256:934205ae1baa04b3921065f73096378f1db65990392340ad32042f86c9b5b247": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sos-3.9.1-4.el8.noarch.rpm" + }, + "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libacl-2.2.53-1.el8.x86_64.rpm" + }, + "sha256:947b4e4eebec21501ca62e2a7ff9baae0e4e7c59584fbba4b6276a402cfbb45b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/vim-minimal-8.0.1763-15.el8.x86_64.rpm" + }, + "sha256:9487bff6bb16e7326c8b805751580b4593220ba19b06515c69de83fee8e3bb1f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libselinux-2.9-3.el8.x86_64.rpm" + }, + "sha256:948e61e32986303f12f8dbe40bc44674287b3906a54dadae5e3dfd2ccba88fac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kexec-tools-2.0.20-29.el8.x86_64.rpm" + }, + "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-0.3.0-5.el8.x86_64.rpm" + }, + "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-slip-dbus-0.6.4-11.el8.noarch.rpm" + }, + "sha256:97c8af6f58e3d14317036bd3ed2cbc498803c91c55b9dc0e8f0fddea7ac929e3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-modules-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chkconfig-1.13-2.el8.x86_64.rpm" + }, + "sha256:98a589d7e1cdea9d974aa43f688e55333eed11ce7cb2037d45cc2e69bce579b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/usermode-1.113-1.el8.x86_64.rpm" + }, + "sha256:995a5401cd86404d14d08c0aeafeaa8da3f540b1806f9d0e233d75dec9e45c74": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libmaxminddb-1.2.0-10.el8.x86_64.rpm" + }, + "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:99fa92b5d1e0d335fb2bb961ef39988b50968350b899e8790cead73c9a0bec65": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-rhsm-certificates-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm" + }, + "sha256:9a9ca6857f517f1249d2eb496fe904590d6203e4a9547a28e0b23f21c4cae24a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-pkla-compat-0.1-12.el8.x86_64.rpm" + }, + "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdnf-0.48.0-2.el8.x86_64.rpm" + }, + "sha256:9c5594fcac97c0f8813d7a188e2368e3b1095025fc4a0ecbd5d17e54c0c93f97": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmnl-1.0.4-6.el8.x86_64.rpm" + }, + "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-2.9.6-15.el8.x86_64.rpm" + }, + "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstdc++-8.3.1-5.1.el8.x86_64.rpm" + }, + "sha256:9d9d1bdfba4cd852f90232ebe2c4247e7b3a88c4476578c820788a91d6838e55": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rng-tools-6.8-3.el8.x86_64.rpm" + }, + "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-babel-2.5.1-5.el8.noarch.rpm" + }, + "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64.rpm" + }, + "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libelf-0.180-1.el8.x86_64.rpm" + }, + "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ply-3.9-8.el8.noarch.rpm" + }, + "sha256:a01bc8ab29f40d5e9f03929cee7a796804d63fda3c471054a67d1fd1e5577f6c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-team-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcrypt-1.8.5-4.el8.x86_64.rpm" + }, + "sha256:a143d66ae06409c70fe4323c52c4507a1d7247c59f21951b96279fd7ca173215": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libX11-1.6.8-3.el8.x86_64.rpm" + }, + "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-0.3.14-4.el8.x86_64.rpm" + }, + "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-glib-1.4.4-1.el8.x86_64.rpm" + }, + "sha256:a260f793e49805b188908e2f30c4687abe4e023b20c28a85d10d2371556c3981": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libXau-1.0.9-3.el8.x86_64.rpm" + }, + "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-libs-25-16.el8.x86_64.rpm" + }, + "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/os-prober-1.74-6.el8.x86_64.rpm" + }, + "sha256:a3dedf8c077b4656d3cd4ef641e696397a3fff83ee8b14f0e3fc69d7c10cebcf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lzo-2.08-14.el8.x86_64.rpm" + }, + "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm" + }, + "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libss-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librhsm-0.0.3-3.el8.x86_64.rpm" + }, + "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pysocks-1.6.8-3.el8.noarch.rpm" + }, + "sha256:a842bbdfe4e3f24ef55acd0ed6930639ccaa5980a2774235bc4c6c2a95ab421c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/PackageKit-1.1.12-6.el8.x86_64.rpm" + }, + "sha256:a8808c053ffb7ccf826d80fdd458b6521f2cc63e55eb90d79a504fbb66c36cb0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/checkpolicy-2.9-1.el8.x86_64.rpm" + }, + "sha256:a8961c50502aa02071c043a16f93399ac6794a058a0ef42be889abe60f35985b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iputils-20180629-2.el8.x86_64.rpm" + }, + "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcomps-0.1.11-4.el8.x86_64.rpm" + }, + "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setup-2.12.2-6.el8.noarch.rpm" + }, + "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:abeb97ed3fdd82145fd51f8eeaecfca272e4d1418b17a68241e054425a327aa3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/insights-client-3.0.14-2.el8.noarch.rpm" + }, + "sha256:ac2800369b7f4dc05a8fec452eabedf02f153c11e188a1e80157e35592305690": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-cli-3.5.0-1.el8.x86_64.rpm" + }, + "sha256:ac5e4942921cee7c931186db79f14c54ddda3d98756e37bd6bb5b0a1024f0e82": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-1.0.6-26.el8.x86_64.rpm" + }, + "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rootfiles-8.1-22.el8.noarch.rpm" + }, + "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-minimal-2.02-84.el8.x86_64.rpm" + }, + "sha256:ad9b3b98ace87913e9487fceaae165faffb81e9c32400a72e08cc752cab0d037": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/authselect-1.2.1-2.el8.x86_64.rpm" + }, + "sha256:adab024896eecd08250eb7a7a5e1686df0b945fd1604543877e230163c510f24": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/quota-nls-4.04-10.el8.noarch.rpm" + }, + "sha256:af495353f000008aab42640530c0c9005aaf60f0d4b4cf1a9b66b07bfc5b5881": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-tools-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:af541250a77d208a4128b792479f368c91771d5d7fabac96f768af451eaff154": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gsettings-desktop-schemas-3.32.0-5.el8.x86_64.rpm" + }, + "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hardlink-1.3-6.el8.x86_64.rpm" + }, + "sha256:b0307757d8cc817893b8ad987f332b99871ab5b7adbf5eb737b5d0a662835a6e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gssproxy-0.8.0-16.el8.x86_64.rpm" + }, + "sha256:b156691caa225f0025533a68eeb9a2cf3883062dd209ede9ec07727b358171cc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/teamd-1.29-5.el8.x86_64.rpm" + }, + "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxml2-2.9.7-8.el8.x86_64.rpm" + }, + "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtasn1-4.13-3.el8.x86_64.rpm" + }, + "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnutls-3.6.14-3.el8.x86_64.rpm" + }, + "sha256:b2dcbd3b81196b16e33054d31c0129c432cf59fb591035845cc299bbb46000c1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuser-0.62-23.el8.x86_64.rpm" + }, + "sha256:b446b1469bd535cf94e555525f40fa751b1343d89d589f3cff30ee2d7c38258e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hdparm-9.54-2.el8.x86_64.rpm" + }, + "sha256:b4e89276818abec218c909ca961db9bb2e09b1fc609ff280e6c05227143fa24d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-newt-0.52.20-11.el8.x86_64.rpm" + }, + "sha256:b4fb3d8b0255a5ba9456b61e4f479f2f8355d171263508bbe869af677015fd97": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-python-utils-2.9-9.el8.noarch.rpm" + }, + "sha256:b59cdea55a890a10f484d8596e244a18455ee82920c7e466991801d24c4718cd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lshw-B.02.19.2-2.el8.x86_64.rpm" + }, + "sha256:b5fc6f35798edccd0390e54fce40290936c3699227e79cc6d1a42d803358fd03": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-8.0p1-5.el8.x86_64.rpm" + }, + "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-pam-239-36.el8.x86_64.rpm" + }, + "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libreport-filesystem-2.9.5-11.el8.x86_64.rpm" + }, + "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-2.2.20-2.el8.x86_64.rpm" + }, + "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/basesystem-11-5.el8.noarch.rpm" + }, + "sha256:b9a17114d551cc8259eea6996b6871ec36675330fdb1eb16db529e6f8a9c34d5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lsscsi-0.30-1.el8.x86_64.rpm" + }, + "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/which-2.21-12.el8.x86_64.rpm" + }, + "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonpatch-1.21-2.el8.noarch.rpm" + }, + "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pigz-2.4-4.el8.x86_64.rpm" + }, + "sha256:bdb8cc675da18f659ba06252f1f2604d171373239804c3cbc6004dadded54cd3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/yum-utils-4.0.17-2.el8.noarch.rpm" + }, + "sha256:bed436b103161f7d8f61b617c84f3a7b5509f1d00c8425900a88c222b1331b31": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:beea3f8c88b9c0a74d75622aa71467f51c457d1acf0ff557f7cd0e2ae3dfafe3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_certmap-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-libs-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd-2.9.4-2.el8.x86_64.rpm" + }, + "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsolv-0.7.11-1.el8.x86_64.rpm" + }, + "sha256:bfe5c8ea12012936cc59981a10728e95d5fdadd3e893457af7a27c464d8cb6ba": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libestr-0.1.10-1.el8.x86_64.rpm" + }, + "sha256:c0025c0b08ed82c640fa470e62743aed17a33f7948ed0cc969892d7c149206b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-nfs-idmap-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libs-0.180-1.el8.x86_64.rpm" + }, + "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-libs-1.1.1g-9.el8.x86_64.rpm" + }, + "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-libs-1.18-1.el8.x86_64.rpm" + }, + "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-libs-3.26.0-10.el8.x86_64.rpm" + }, + "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm" + }, + "sha256:c24a1814f0fff7edcbd5cdca29571e8a79c5584e8ef300e89aef906b35c8a67d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bind-export-libs-9.11.20-3.el8.x86_64.rpm" + }, + "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-pkcs11-0.4.10-2.el8.x86_64.rpm" + }, + "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-idna-2.5-5.el8.noarch.rpm" + }, + "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-asn1crypto-0.24.0-3.el8.noarch.rpm" + }, + "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcom_err-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:c4279ad2915f4ce1806c4121675e49d2b525bb6e977d487dc2ad138fce8c2734": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_idmap-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:c46ee71ba426e0964b2264bdf18fc4cff4d7815206c9e8a471bdf678e65c24b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libini_config-1.3.1-39.el8.x86_64.rpm" + }, + "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-hwdata-2.3.6-3.el8.noarch.rpm" + }, + "sha256:c5d0c9a5acc6c2de5e52b38701d6cad5cc37d22c1cb518ca8bcac79bddffaaba": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libappstream-glib-0.7.14-3.el8.x86_64.rpm" + }, + "sha256:c5e978963bda83e9321563bb18f69f3753f2eb510dfdafdc6c4e2856dc6b6302": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugin-subscription-manager-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm" + }, + "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pam-1.3.1-11.el8.x86_64.rpm" + }, + "sha256:c7e767d836fe8aef670eba2fde4f593996fbc0fb304a6666dcd53c0f9af7d184": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib-networking-2.56.1-1.1.el8.x86_64.rpm" + }, + "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:cac59a5629e7229653c29c0d575bd8f8c2d3774474615eb65615109afb151981": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libbasicobjects-0.1.1-39.el8.x86_64.rpm" + }, + "sha256:cb8e7909d58206223ad7108a850218360a6b1e2147d97bc94097962dc820d0de": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setools-4.3.0-1.el8.x86_64.rpm" + }, + "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-1.1.1g-9.el8.x86_64.rpm" + }, + "sha256:cc3df9449002eacd595a73df52eb973d3b37e4c03d4669c7dce6ce7a26dabd6b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm" + }, + "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pytz-2017.2-9.el8.noarch.rpm" + }, + "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmetalink-0.1.3-7.el8.x86_64.rpm" + }, + "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/findutils-4.6.0-20.el8.x86_64.rpm" + }, + "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/acl-2.2.53-1.el8.x86_64.rpm" + }, + "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsigsegv-2.11-5.el8.x86_64.rpm" + }, + "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-unbound-1.7.3-14.el8.x86_64.rpm" + }, + "sha256:d186f806ed9c841a385f7acf194c20b78616396414da9131982e469f065619b8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_autofs-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:d2b777ea98ee644997029994136723cf4fa78e97afeaceab39f76b545b51792b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dmidecode-3.12.2-15.el8.x86_64.rpm" + }, + "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-libs-0.19.8.1-17.el8.x86_64.rpm" + }, + "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-libs-5.2.4-3.el8.x86_64.rpm" + }, + "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libs-3.6.8-30.el8.x86_64.rpm" + }, + "sha256:d3f8a537fc631378fbef3c70ebdf8922d4d8842813d3fb02a7c5fd1663f55179": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-libevent-0.3.0-5.el8.x86_64.rpm" + }, + "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-urllib3-1.24.2-4.el8.noarch.rpm" + }, + "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grep-3.1-6.el8.x86_64.rpm" + }, + "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-extra-2.02-84.el8.x86_64.rpm" + }, + "sha256:d649f6c55cdb75650e55852b1812a0ff3a5d689950abf2ae17fa094501037365": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdk-pixbuf2-2.36.12-5.el8.x86_64.rpm" + }, + "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gpgme-1.13.1-3.el8.x86_64.rpm" + }, + "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libusbx-1.0.23-3.el8.x86_64.rpm" + }, + "sha256:d7c7ba51c19e80dc07f72cfef5467279ab485c652e144cb790c8ce2471040ece": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fontconfig-2.13.1-3.el8.x86_64.rpm" + }, + "sha256:d80219a299035688091aa230b1c9169143c00c141c4f1ad8e75d176d22cc1cd0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:d81c180c682e6014a0da09aaa144492e8cb03c1d61022513ba6db5bd3740f921": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm" + }, + "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libaio-0.3.112-1.el8.x86_64.rpm" + }, + "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-2.9-3.el8.x86_64.rpm" + }, + "sha256:d94a39545f8570ba2d199e4892cfe05ebd5ea6e4e8322790b4f960bf92da5f09": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/numactl-libs-2.0.12-11.el8.x86_64.rpm" + }, + "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-requests-2.20.0-2.1.el8_1.noarch.rpm" + }, + "sha256:da5606af487682acce52799418a97614d0f6e6b72d15c88c4f6f2a076f384dac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pciutils-libs-3.6.4-2.el8.x86_64.rpm" + }, + "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-libs-239-36.el8.x86_64.rpm" + }, + "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libarchive-3.3.2-9.el8.x86_64.rpm" + }, + "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-tools-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:db1fad3c2d8735e69084bd4b09ea963938e4dde2f2e096dc7a4ce146f18b7ab0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fontpackages-filesystem-1.44-22.el8.noarch.rpm" + }, + "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shadow-utils-4.6-10.el8.x86_64.rpm" + }, + "sha256:db7ec7f6349da80049a035a7595523a44dfc5f090026dc3342cc3149d5a31bed": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/quota-4.04-10.el8.x86_64.rpm" + }, + "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-2.02-84.el8.x86_64.rpm" + }, + "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-2.28-127.el8.x86_64.rpm" + }, + "sha256:dd379385bd1d2e05f50c4795e5a0eff9030fdac0fd2579bb4b56233257672b27": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dejavu-sans-mono-fonts-2.35-6.el8.noarch.rpm" + }, + "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-udev-239-36.el8.x86_64.rpm" + }, + "sha256:ddafccd3f010fc75da6de158b5a68fd672f8b3554ac403065490318ce2be05f3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libXext-1.3.4-1.el8.x86_64.rpm" + }, + "sha256:de870435340bf30620406df41b79e43adaf7d0a277db1635a0fae710df993fc0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pyyaml-3.12-12.el8.x86_64.rpm" + }, + "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librepo-1.12.0-1.el8.x86_64.rpm" + }, + "sha256:e0cde0185535bd50f7c5e5e2c0c19b5ab086b6bfa8cea95af9d56ffc81cb26b7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-libs-4.3.6-41.el8.x86_64.rpm" + }, + "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/memstrack-0.1.8-1.el8.x86_64.rpm" + }, + "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gawk-4.2.1-1.el8.x86_64.rpm" + }, + "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmartcols-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/info-6.5-6.el8.x86_64.rpm" + }, + "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-utils-2.9-3.el8.x86_64.rpm" + }, + "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/yum-4.2.23-2.el8.noarch.rpm" + }, + "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-1.02.171-3.el8.x86_64.rpm" + }, + "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-linux-procfs-0.6.2-2.el8.noarch.rpm" + }, + "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuuid-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:e6194926699147659c3a35d9330b5e9706b203aa806c4023c258559f9a0f8ae7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-cockpit-1.27.9-1.el8.noarch.rpm" + }, + "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-policycoreutils-2.9-9.el8.noarch.rpm" + }, + "sha256:e67a1c5f02c3e6fdccaad455fddf0dfdf812069da87d841a22df910bf361cfb9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/net-tools-2.0-0.52.20160912git.el8.x86_64.rpm" + }, + "sha256:e868499743c399baa6463fa64a2534a7d32f8e1cca7b1b47ec00c60b34250bfe": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-markupsafe-0.23-19.el8.x86_64.rpm" + }, + "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-2.9-9.el8.x86_64.rpm" + }, + "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-lib-0.3.14-4.el8.x86_64.rpm" + }, + "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libffi-3.1-22.el8.x86_64.rpm" + }, + "sha256:eb5e29df2e7f803a62769aa19c60959ee7d368cd51397e00ebdbedba7d2d4768": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-common-8.30-8.el8.x86_64.rpm" + }, + "sha256:eb9b37827f1851c8a2683cd86026fda90847afe90d51ea746d7cd5f49f6f90d1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/newt-0.52.20-11.el8.x86_64.rpm" + }, + "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libutempter-1.1.6-14.el8.x86_64.rpm" + }, + "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-0.23.14-5.el8_0.x86_64.rpm" + }, + "sha256:ec26615d079ce89316352f813279f74a44871fa8c26fed8f369b9fe847aa5121": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm" + }, + "sha256:ec9adedf0d5d2d096acf4739e2eefab8095498037e13dac9b283e17a9c54259a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sudo-1.8.29-6.el8.x86_64.rpm" + }, + "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre-8.42-4.el8.x86_64.rpm" + }, + "sha256:ecd2a9cc865d694f02273ca7a6b970a6a799b679174dead75ec7c34ff710ffd2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libproxy-0.4.15-5.2.el8.x86_64.rpm" + }, + "sha256:ecd53a50b4cb20dd1597f45ab4a9cba1fd7793a6000fb2114421687779738672": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcollection-0.7.0-39.el8.x86_64.rpm" + }, + "sha256:ed54b383b0f252dde700d11524046568d98b64829feb77ce2b26080c0c827607": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-logos-81.1-1.el8.x86_64.rpm" + }, + "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/readline-7.0-10.el8.x86_64.rpm" + }, + "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:efa20ae5eca5860656d0131086470cb8d5c3a1ae2819301e7d015f06bbb68a26": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/slang-2.3.2-3.el8.x86_64.rpm" + }, + "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm" + }, + "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm" + }, + "sha256:f2b58d2dfeb45318f8e9e67a96c4f02df69815149ce7b092233a02c0dea19f89": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64.rpm" + }, + "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sed-4.5-2.el8.x86_64.rpm" + }, + "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-0.9.4-2.el8.x86_64.rpm" + }, + "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gzip-1.9-9.el8.x86_64.rpm" + }, + "sha256:f7120ef477465566e3b670d2eea1536d2e8a468b8bbe03d9df164c0280a14395": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cockpit-bridge-222.1-1.el8.x86_64.rpm" + }, + "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-1.2.0-2.el8.x86_64.rpm" + }, + "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64.rpm" + }, + "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/diffutils-3.6-6.el8.x86_64.rpm" + }, + "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm" + }, + "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.x86_64.rpm" + }, + "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcurl-7.61.1-12.el8.x86_64.rpm" + }, + "sha256:fb97246f1e22b2db98fc309470c4d87755ecc59e5b98047c52c4fedbb08d9b6f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rhsm-icons-1.27.9-1.el8.noarch.rpm" + }, + "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dosfstools-4.1-6.el8.x86_64.rpm" + }, + "sha256:fd75c594f871a3353d326833e630ea1d28e5f446f796b836dc628f8c9c039f88": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pydbus-0.6.0-5.el8.noarch.rpm" + }, + "sha256:fd7bc748b59a48a1ba803dc893be729c8624a4141e23fcef126a401857bbb455": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-server-8.0p1-5.el8.x86_64.rpm" + }, + "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm" + }, + "sha256:fd9e5c379cd3482d32686fb13881827a39037e7a7afa92c62d58c1f05fcb797f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mozjs60-60.9.0-4.el8.x86_64.rpm" + }, + "sha256:fdcc4180cae8fa83ca54188fc2f6796a1bc8d7eb7106163b98dd93d974b48cd1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hostname-3.20-6.el8.x86_64.rpm" + }, + "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-jwt-1.6.1-2.el8.noarch.rpm" + }, + "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libblkid-2.32.1-24.el8.x86_64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3" + }, + { + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "checksum": "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710" + }, + { + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "checksum": "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379" + }, + { + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "checksum": "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7" + }, + { + "checksum": "sha256:f2b58d2dfeb45318f8e9e67a96c4f02df69815149ce7b092233a02c0dea19f89" + }, + { + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ] + }, + "runner": "org.osbuild.rhel82" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:0027700684ce09927aded1d2c5bb84028529141a6b418897bde37d4af348f8bb" + }, + { + "checksum": "sha256:6d0dcbaa45457461dd5c4afe97689fa2baf5f95551bbe5e827a152dee545a51d" + }, + { + "checksum": "sha256:a01bc8ab29f40d5e9f03929cee7a796804d63fda3c471054a67d1fd1e5577f6c" + }, + { + "checksum": "sha256:4b8cd13404adac1a30a105e894a733f7c79bfac1a125b8cd095e6ba9c1d056f9" + }, + { + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "checksum": "sha256:cc3df9449002eacd595a73df52eb973d3b37e4c03d4669c7dce6ce7a26dabd6b" + }, + { + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "checksum": "sha256:ad9b3b98ace87913e9487fceaae165faffb81e9c32400a72e08cc752cab0d037" + }, + { + "checksum": "sha256:5bdb82a14d3604899324afc296aa7e7179a15788e2514348eea81b46934d6a3c" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "checksum": "sha256:c24a1814f0fff7edcbd5cdca29571e8a79c5584e8ef300e89aef906b35c8a67d" + }, + { + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "checksum": "sha256:ac5e4942921cee7c931186db79f14c54ddda3d98756e37bd6bb5b0a1024f0e82" + }, + { + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "checksum": "sha256:2334cb78002aa30feeb11549d51e204aa868f5538a09957850082d7efb15b00f" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:a8808c053ffb7ccf826d80fdd458b6521f2cc63e55eb90d79a504fbb66c36cb0" + }, + { + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "checksum": "sha256:10f40567d02123b71bd878ef423dd0d5dca415e806ff041c3c69b99d114fea84" + }, + { + "checksum": "sha256:f7120ef477465566e3b670d2eea1536d2e8a468b8bbe03d9df164c0280a14395" + }, + { + "checksum": "sha256:202cfa88a6b2f1ec6a0bc0546f578c1ca6b5b6fcfeaf3e1228beead14d8bf758" + }, + { + "checksum": "sha256:330b6ab19f2ac365587b1c7536420f63c7a1ec0e4f54903f13fffc9fe1f51527" + }, + { + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "checksum": "sha256:411d65fe9e463458af055d06a4a89a1d822d26049198615c0afc9741c426c77c" + }, + { + "checksum": "sha256:2a65cec3eb67ba7645dd97cf3f3811cd5fb06eea2526d36a683d3fdaa0f2825e" + }, + { + "checksum": "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "checksum": "sha256:802263173d9c487fc3ca584cc2a5b7b7bb49ac0d12d9026b3246d50fd0888fb1" + }, + { + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "checksum": "sha256:7ce6aa282f9f23c46c44186595924d05f4e7a899b504eb95a0f87008f6620268" + }, + { + "checksum": "sha256:dd379385bd1d2e05f50c4795e5a0eff9030fdac0fd2579bb4b56233257672b27" + }, + { + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "checksum": "sha256:289e2a39b2a29163a29da35936d4b484fe356d0a6d519524023e79686daf501b" + }, + { + "checksum": "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2" + }, + { + "checksum": "sha256:e0cde0185535bd50f7c5e5e2c0c19b5ab086b6bfa8cea95af9d56ffc81cb26b7" + }, + { + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "checksum": "sha256:686015c78247edec0a0f5e0d2cbbf02d9feea162e5967ed5b5be35d3951b1f3d" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:c5e978963bda83e9321563bb18f69f3753f2eb510dfdafdc6c4e2856dc6b6302" + }, + { + "checksum": "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c" + }, + { + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "checksum": "sha256:40010441888b72dd077d4d6790f837236701b93c8b31da5dbf65c700fd2571fd" + }, + { + "checksum": "sha256:1faa85c12115426d8afc51c8bed2e71bf1dd87063e25052bcf85c17dbc0d9ea4" + }, + { + "checksum": "sha256:348b7d66a20015563489babbc3850928587575d0acde7c61d55480ebf0f3820d" + }, + { + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "checksum": "sha256:0493fd81825df694be5d15685bfe4dc002de314d18f5ae47ccee769f65ea5013" + }, + { + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "checksum": "sha256:d7c7ba51c19e80dc07f72cfef5467279ab485c652e144cb790c8ce2471040ece" + }, + { + "checksum": "sha256:db1fad3c2d8735e69084bd4b09ea963938e4dde2f2e096dc7a4ce146f18b7ab0" + }, + { + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "checksum": "sha256:d649f6c55cdb75650e55852b1812a0ff3a5d689950abf2ae17fa094501037365" + }, + { + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "checksum": "sha256:c7e767d836fe8aef670eba2fde4f593996fbc0fb304a6666dcd53c0f9af7d184" + }, + { + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "checksum": "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710" + }, + { + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "checksum": "sha256:1065049dbd53849d35db269a23be54148cbe481122381ab71b72f62e83816b26" + }, + { + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "checksum": "sha256:73c29baa2cd94f1ae6a1d1333818969a281b16dd4262f413ad284c5333719a4d" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "checksum": "sha256:af541250a77d208a4128b792479f368c91771d5d7fabac96f768af451eaff154" + }, + { + "checksum": "sha256:b0307757d8cc817893b8ad987f332b99871ab5b7adbf5eb737b5d0a662835a6e" + }, + { + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "checksum": "sha256:b446b1469bd535cf94e555525f40fa751b1343d89d589f3cff30ee2d7c38258e" + }, + { + "checksum": "sha256:fdcc4180cae8fa83ca54188fc2f6796a1bc8d7eb7106163b98dd93d974b48cd1" + }, + { + "checksum": "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f" + }, + { + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "checksum": "sha256:350657e984b1736bb4a8c9cc01b772517a4194467d6db84110c1cc42131f1cae" + }, + { + "checksum": "sha256:206de21c82d76de550bcc1959138472640b0a950a311b753203f5dfe5b201b7b" + }, + { + "checksum": "sha256:4405d32322fd496c65f57a12b6037fd75b49957269dbf9cb0417b598162f7407" + }, + { + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "checksum": "sha256:a8961c50502aa02071c043a16f93399ac6794a058a0ef42be889abe60f35985b" + }, + { + "checksum": "sha256:6844197fd8ffdb16cf94ab77709aa2954cb39512435a377401ebce340d06c7de" + }, + { + "checksum": "sha256:39e59e9a2460e3b6fe147501e79a57042f161c217963be212359031bb8b18daa" + }, + { + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:eb5e29df2e7f803a62769aa19c60959ee7d368cd51397e00ebdbedba7d2d4768" + }, + { + "checksum": "sha256:76ca09c73360f48d4b6fe4d4ee0aa974ef53531222df8e363d8006ec469051cf" + }, + { + "checksum": "sha256:97c8af6f58e3d14317036bd3ed2cbc498803c91c55b9dc0e8f0fddea7ac929e3" + }, + { + "checksum": "sha256:af495353f000008aab42640530c0c9005aaf60f0d4b4cf1a9b66b07bfc5b5881" + }, + { + "checksum": "sha256:4882ff53265bdeabb69f1ac9c585454b28ae799ab31fa72c9eb10bdbe1f41d9a" + }, + { + "checksum": "sha256:948e61e32986303f12f8dbe40bc44674287b3906a54dadae5e3dfd2ccba88fac" + }, + { + "checksum": "sha256:761ff1ccc95562a4512c4bea1d4c2b507c42e3805c9e1e0093c80539a954047b" + }, + { + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "checksum": "sha256:68362500ad574eb2df43a3d260ab8d0f3ce1ae5f34e66d71f2478fef8e17cb4a" + }, + { + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "checksum": "sha256:c5d0c9a5acc6c2de5e52b38701d6cad5cc37d22c1cb518ca8bcac79bddffaaba" + }, + { + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "checksum": "sha256:cac59a5629e7229653c29c0d575bd8f8c2d3774474615eb65615109afb151981" + }, + { + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "checksum": "sha256:ecd53a50b4cb20dd1597f45ab4a9cba1fd7793a6000fb2114421687779738672" + }, + { + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "checksum": "sha256:798420bbda79fd0b9312abac25efad6b28957c512497f37f4beddad5d67dd66a" + }, + { + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "checksum": "sha256:50c0d1828a9e8db638c09d88afb0828d98349027ce498ee7df74e7ff6052ac1d" + }, + { + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "checksum": "sha256:0391105afa53c9503b59591615bd7c98e2f7a4cd94ff4fd1451c4234522f3880" + }, + { + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "checksum": "sha256:713ec69b972a8e88622b3fcd3b84fccdbd6c333b68b6c52151c2350edad2576a" + }, + { + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "checksum": "sha256:c46ee71ba426e0964b2264bdf18fc4cff4d7815206c9e8a471bdf678e65c24b9" + }, + { + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "checksum": "sha256:231bc0eeb8fb127f0a4da5a4da1edd226067d5029a0b4fd6ef72c246ccfc31c0" + }, + { + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "checksum": "sha256:9c5594fcac97c0f8813d7a188e2368e3b1095025fc4a0ecbd5d17e54c0c93f97" + }, + { + "checksum": "sha256:0602b342148d5e8e6a954bb26af60ed63d3f3d919cd3856ea93612e05ebe2937" + }, + { + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "checksum": "sha256:53fb6834e2e439e79225d957c4643922da74836417b5558d0c2943b546b26e57" + }, + { + "checksum": "sha256:2eed977380b41885d4f7ad33e122abbb9ea7391c1255d182451efd457688c8b2" + }, + { + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "checksum": "sha256:0129696c208f60326723c650295167b0600791ccb2e9c3d446c4caf9adecb3d7" + }, + { + "checksum": "sha256:ac2800369b7f4dc05a8fec452eabedf02f153c11e188a1e80157e35592305690" + }, + { + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "checksum": "sha256:2eba2dc51974271244bdeaaf17c6e8fac3c35b62914b680076bdc4a32272df01" + }, + { + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "checksum": "sha256:539abfc369a17023658486f7b4a48c8db159cc4d617b27da256ddac6e15ea687" + }, + { + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "checksum": "sha256:ecd2a9cc865d694f02273ca7a6b970a6a799b679174dead75ec7c34ff710ffd2" + }, + { + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "checksum": "sha256:507442831068c749ba21b22bd96993a1a2a6c74dd53c55f34c7f81a21554c82d" + }, + { + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "checksum": "sha256:6cab44ed85c7dc821e84fab9d383f7d0a4b299cc29c8f0860b13e82bb0da8d6f" + }, + { + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:d186f806ed9c841a385f7acf194c20b78616396414da9131982e469f065619b8" + }, + { + "checksum": "sha256:beea3f8c88b9c0a74d75622aa71467f51c457d1acf0ff557f7cd0e2ae3dfafe3" + }, + { + "checksum": "sha256:c4279ad2915f4ce1806c4121675e49d2b525bb6e977d487dc2ad138fce8c2734" + }, + { + "checksum": "sha256:7c292b3bb74d12d77e1e22221c55696a0c5f50304040b3a706c2164d5b6a42e4" + }, + { + "checksum": "sha256:44e81330b185085f871e9fbf8fae27c8de411600c032aca371dc6d39a3e261da" + }, + { + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "checksum": "sha256:23474f4f3841340af8a7ec5ab2d1fa693d4d72d2f782a5930c799560382916ac" + }, + { + "checksum": "sha256:3a1058c6ba468722090a74002a3239161771b0d8b444975bff891afd45bb672a" + }, + { + "checksum": "sha256:3b087daa7e9de69c051f22f9df1ef00867ffddd99357bc3a215ccde76a13c02f" + }, + { + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "checksum": "sha256:4ed1a6294eea09a3a7e15683267ca5d383e4c2b27fd57fe05d2666e0e6c3d26f" + }, + { + "checksum": "sha256:7c89c2d055013779252c12643e8f0b3731f4dd5e2b61d9d81233a0ee298abb36" + }, + { + "checksum": "sha256:860676d4231afa3e6b23933d8dd65e5f7f5823910791e6481d2440ae4ec64c53" + }, + { + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "checksum": "sha256:b2dcbd3b81196b16e33054d31c0129c432cf59fb591035845cc299bbb46000c1" + }, + { + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "checksum": "sha256:d3f8a537fc631378fbef3c70ebdf8922d4d8842813d3fb02a7c5fd1663f55179" + }, + { + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "checksum": "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9" + }, + { + "checksum": "sha256:37504d807ac0bb6c429d7be9c636f7b755464023511d856846dbb9deb8f6a76d" + }, + { + "checksum": "sha256:b59cdea55a890a10f484d8596e244a18455ee82920c7e466991801d24c4718cd" + }, + { + "checksum": "sha256:b9a17114d551cc8259eea6996b6871ec36675330fdb1eb16db529e6f8a9c34d5" + }, + { + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "checksum": "sha256:a3dedf8c077b4656d3cd4ef641e696397a3fff83ee8b14f0e3fc69d7c10cebcf" + }, + { + "checksum": "sha256:7b6856dc4dc1d88d9c3c9597fb824b5776af59f045087bdb2713d64045216a36" + }, + { + "checksum": "sha256:0e4b7687f0c62f4e336223b939f6cb169c8dac49eee23c53fd919e58d8f989df" + }, + { + "checksum": "sha256:fd9e5c379cd3482d32686fb13881827a39037e7a7afa92c62d58c1f05fcb797f" + }, + { + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "checksum": "sha256:e67a1c5f02c3e6fdccaad455fddf0dfdf812069da87d841a22df910bf361cfb9" + }, + { + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "checksum": "sha256:eb9b37827f1851c8a2683cd86026fda90847afe90d51ea746d7cd5f49f6f90d1" + }, + { + "checksum": "sha256:14f5ca00582f8d8780a0bcc1b204fb73cfdb35c5725efa4eccffbe8a1988769e" + }, + { + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "checksum": "sha256:d94a39545f8570ba2d199e4892cfe05ebd5ea6e4e8322790b4f960bf92da5f09" + }, + { + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "checksum": "sha256:b5fc6f35798edccd0390e54fce40290936c3699227e79cc6d1a42d803358fd03" + }, + { + "checksum": "sha256:3730f3f8d3332836f278250408891cb097379a5d7745fe698b1d418e9e13d335" + }, + { + "checksum": "sha256:fd7bc748b59a48a1ba803dc893be729c8624a4141e23fcef126a401857bbb455" + }, + { + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "checksum": "sha256:22585bd5d69c5e0a06fe00a6844da2e5d311512374c1d176f17f41caab7e121f" + }, + { + "checksum": "sha256:7c0b2b064dad700cba2754b46f483e3e59aaf798740470df1daad3d5239fb893" + }, + { + "checksum": "sha256:22942af5dab657f662538619ab84a260d3c92e3498694fca2a126100ff9ab316" + }, + { + "checksum": "sha256:da5606af487682acce52799418a97614d0f6e6b72d15c88c4f6f2a076f384dac" + }, + { + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "checksum": "sha256:b4fb3d8b0255a5ba9456b61e4f479f2f8355d171263508bbe869af677015fd97" + }, + { + "checksum": "sha256:8af00d4b0857240310156e05123e07795e6573da7c1fe9e7fd83b51f13971725" + }, + { + "checksum": "sha256:441efa6f0b9a9905ef11ec987d6db89e7dba2857060020c4554e32db3e59fce5" + }, + { + "checksum": "sha256:9a9ca6857f517f1249d2eb496fe904590d6203e4a9547a28e0b23f21c4cae24a" + }, + { + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "checksum": "sha256:8d371e753071edc796d2eadb8278980290511be6279fdf46649c81b859497d6a" + }, + { + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34" + }, + { + "checksum": "sha256:8f00781eb679c6baf359099fa2a672ffccfc8e43b7c03c1dc635619cb25ff01d" + }, + { + "checksum": "sha256:13ffce0597b689dd53f55ea0d03dd6d013246634f5c6cbcef51fa549d9734b29" + }, + { + "checksum": "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786" + }, + { + "checksum": "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367" + }, + { + "checksum": "sha256:7a7a238ea529165348acef1d1a20c1d47c1ef5838d8501f3879bb130c1b73e06" + }, + { + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "checksum": "sha256:5a85222c8e9997a8b609b915a8fbae756de9b9bff732db852fb15fe0524f2d86" + }, + { + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "checksum": "sha256:d2b777ea98ee644997029994136723cf4fa78e97afeaceab39f76b545b51792b" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87" + }, + { + "checksum": "sha256:20dec130e4fd0a2146443791ca7ade6e079cea691d93711813d5f483b691c55a" + }, + { + "checksum": "sha256:86d305a1466a596f8b436561d674f2510f268bed9e73f56c87da1dd120f99c18" + }, + { + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "checksum": "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20" + }, + { + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "checksum": "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c" + }, + { + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "checksum": "sha256:4ca553b0c0f6dc130e05e2011cdf1f52132e8f70bd93be8eee4e415b2cac0c56" + }, + { + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "checksum": "sha256:9487bff6bb16e7326c8b805751580b4593220ba19b06515c69de83fee8e3bb1f" + }, + { + "checksum": "sha256:09fc3154e76c8ee25b3982c15f3bc455017262c3df5af84075859dcbf79e4f82" + }, + { + "checksum": "sha256:4ccbefcbe75decfef38ccae5d8ff92ba6b00e8232b64ec46ae0c0be8ae20ec50" + }, + { + "checksum": "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f" + }, + { + "checksum": "sha256:8e2c0324789f42ebb6324847249699eb499544a3e6ad67ccd74713b3c1d6ce78" + }, + { + "checksum": "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6" + }, + { + "checksum": "sha256:18d419718a99851370262584bec1b27d60cbd08845b50fbe97e1a56b71cd5ea2" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9" + }, + { + "checksum": "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42" + }, + { + "checksum": "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf" + }, + { + "checksum": "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280" + }, + { + "checksum": "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde" + }, + { + "checksum": "sha256:de870435340bf30620406df41b79e43adaf7d0a277db1635a0fae710df993fc0" + }, + { + "checksum": "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a" + }, + { + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "checksum": "sha256:09ca7b05e26f93d35ac299dbcd865b65ec3a3d2654e1da87d2c3c0462dbe6e4a" + }, + { + "checksum": "sha256:cb8e7909d58206223ad7108a850218360a6b1e2147d97bc94097962dc820d0de" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "checksum": "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb" + }, + { + "checksum": "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d" + }, + { + "checksum": "sha256:0f3b084d947bc246fe68822129b8ae1294c4187270a19f0966282baf75b34dc6" + }, + { + "checksum": "sha256:206cba480b58c70348584010d547d21bcd84c6094fd3980e22c6b640da12704c" + }, + { + "checksum": "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53" + }, + { + "checksum": "sha256:db7ec7f6349da80049a035a7595523a44dfc5f090026dc3342cc3149d5a31bed" + }, + { + "checksum": "sha256:adab024896eecd08250eb7a7a5e1686df0b945fd1604543877e230163c510f24" + }, + { + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "checksum": "sha256:ed54b383b0f252dde700d11524046568d98b64829feb77ce2b26080c0c827607" + }, + { + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "checksum": "sha256:fb97246f1e22b2db98fc309470c4d87755ecc59e5b98047c52c4fedbb08d9b6f" + }, + { + "checksum": "sha256:9d9d1bdfba4cd852f90232ebe2c4247e7b3a88c4476578c820788a91d6838e55" + }, + { + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "checksum": "sha256:516acd98bf46b3b2e09fd0d2f0cf1fbf4ecbecc9b0e10028c3a26ce9a6aca393" + }, + { + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "checksum": "sha256:3e180253732f00c919aaebc9aaa0562eefac466ce145ce5ad5e1092453aeebaa" + }, + { + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:398c1abc82097370f46e6fdf4dae63870e1f767b24d0130c79ed67ea3a67233a" + }, + { + "checksum": "sha256:671852e4f32de6278dd384d35d1dc799ab5d3e8ef718e89e516452cbcba068f0" + }, + { + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "checksum": "sha256:efa20ae5eca5860656d0131086470cb8d5c3a1ae2819301e7d015f06bbb68a26" + }, + { + "checksum": "sha256:4403330cdf4f15d75d727e2ac8c3358ff6a13209b3395dfac2131984e443eb23" + }, + { + "checksum": "sha256:934205ae1baa04b3921065f73096378f1db65990392340ad32042f86c9b5b247" + }, + { + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "checksum": "sha256:72ff3a3f6c52849a40cb24f9694115a68cc939970a00c374b4c73b1e4c5dc20c" + }, + { + "checksum": "sha256:2e90748420a7d28b3063df04de129e79ea85310a8d9cf2faf0a2e7b8430307c8" + }, + { + "checksum": "sha256:14098d36fe4be983fac73d04aeacf0ed7977d962e760907b89e3f80b4ca46f3f" + }, + { + "checksum": "sha256:1b1fe43a375a21f4c3ccf04861c122fd519d4865b9c1abc7f1973b86a0252a06" + }, + { + "checksum": "sha256:c0025c0b08ed82c640fa470e62743aed17a33f7948ed0cc969892d7c149206b3" + }, + { + "checksum": "sha256:65dc391ab1c96d1009ef2e7706eabacd5cf84f2a47ea1cc87f6f5e2c1324b178" + }, + { + "checksum": "sha256:e6194926699147659c3a35d9330b5e9706b203aa806c4023c258559f9a0f8ae7" + }, + { + "checksum": "sha256:99fa92b5d1e0d335fb2bb961ef39988b50968350b899e8790cead73c9a0bec65" + }, + { + "checksum": "sha256:ec9adedf0d5d2d096acf4739e2eefab8095498037e13dac9b283e17a9c54259a" + }, + { + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "checksum": "sha256:b156691caa225f0025533a68eeb9a2cf3883062dd209ede9ec07727b358171cc" + }, + { + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "checksum": "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:98a589d7e1cdea9d974aa43f688e55333eed11ce7cb2037d45cc2e69bce579b3" + }, + { + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "checksum": "sha256:947b4e4eebec21501ca62e2a7ff9baae0e4e7c59584fbba4b6276a402cfbb45b" + }, + { + "checksum": "sha256:2cfcc3d6163dfaf7ce76998be992bd0b70dd7cbb838430cecf2aff04cd435d24" + }, + { + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "checksum": "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4" + }, + { + "checksum": "sha256:bdb8cc675da18f659ba06252f1f2604d171373239804c3cbc6004dadded54cd3" + }, + { + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "checksum": "sha256:a842bbdfe4e3f24ef55acd0ed6930639ccaa5980a2774235bc4c6c2a95ab421c" + }, + { + "checksum": "sha256:468b540f98263d7b274c722a7b8f18ac1ab9d88783cfca6561c85e56b36afeee" + }, + { + "checksum": "sha256:1594afba86593ec614299ef6af255755a98ea55a34a72a22fdc9d80a040be39d" + }, + { + "checksum": "sha256:7d0bc4f2f78166013ef160ed10930a4902c7c5c6d6b7940fc900d36eaacc65a2" + }, + { + "checksum": "sha256:18fd9b2a61147367ad7d51798d33db38aedbaf761f3d0561c752f0048d1f4221" + }, + { + "checksum": "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2" + }, + { + "checksum": "sha256:664a883f3c7042eb91e0b66fc99c309a729011b4912e4af9397f4e25e1adae90" + }, + { + "checksum": "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b" + }, + { + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "checksum": "sha256:abeb97ed3fdd82145fd51f8eeaecfca272e4d1418b17a68241e054425a327aa3" + }, + { + "checksum": "sha256:a143d66ae06409c70fe4323c52c4507a1d7247c59f21951b96279fd7ca173215" + }, + { + "checksum": "sha256:593d4df5b8de12ed0ec5a0935cb0bd966e27a631aa0806250ba9f67092ad737f" + }, + { + "checksum": "sha256:a260f793e49805b188908e2f30c4687abe4e023b20c28a85d10d2371556c3981" + }, + { + "checksum": "sha256:ddafccd3f010fc75da6de158b5a68fd672f8b3554ac403065490318ce2be05f3" + }, + { + "checksum": "sha256:871672b8a9ffbe887b32e736494c1f005795bc7ffda026c6a063ee0d28788709" + }, + { + "checksum": "sha256:bfe5c8ea12012936cc59981a10728e95d5fdadd3e893457af7a27c464d8cb6ba" + }, + { + "checksum": "sha256:474a66a4cf3d5a00286be40c15bad69ea1ac63a9424a1ff44f20a548a7686f7a" + }, + { + "checksum": "sha256:995a5401cd86404d14d08c0aeafeaa8da3f540b1806f9d0e233d75dec9e45c74" + }, + { + "checksum": "sha256:39e6bc1e8101e536066554702d5d6b25f8cad359fb5e02ac598cfdad56eafb6d" + }, + { + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "checksum": "sha256:77edc93b5e83aed2527a58760033fe857c6c8f7807e2169865015acbbe926376" + }, + { + "checksum": "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28" + }, + { + "checksum": "sha256:8caac6d04fc98a82d17af56a8faacd1e1a019112ba207388fb82ffdd6df54301" + }, + { + "checksum": "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43" + }, + { + "checksum": "sha256:4229196b5ea88c1133d5509a2ec326093a2c7ac5566ca4abb55c3d6fab47130a" + }, + { + "checksum": "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362" + }, + { + "checksum": "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64" + }, + { + "checksum": "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835" + }, + { + "checksum": "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf" + }, + { + "checksum": "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b" + }, + { + "checksum": "sha256:e868499743c399baa6463fa64a2534a7d32f8e1cca7b1b47ec00c60b34250bfe" + }, + { + "checksum": "sha256:3edf7d29e530e6568416d4455e9fbaa511aba236c603da9928e689fae77b9874" + }, + { + "checksum": "sha256:b4e89276818abec218c909ca961db9bb2e09b1fc609ff280e6c05227143fa24d" + }, + { + "checksum": "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55" + }, + { + "checksum": "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21" + }, + { + "checksum": "sha256:fd75c594f871a3353d326833e630ea1d28e5f446f796b836dc628f8c9c039f88" + }, + { + "checksum": "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414" + }, + { + "checksum": "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca" + }, + { + "checksum": "sha256:15462b748aef3c565bcf4f849c1a21c1389a8ef5e7dae94e64718865a67d46a9" + }, + { + "checksum": "sha256:bed436b103161f7d8f61b617c84f3a7b5509f1d00c8425900a88c222b1331b31" + }, + { + "checksum": "sha256:ec26615d079ce89316352f813279f74a44871fa8c26fed8f369b9fe847aa5121" + }, + { + "checksum": "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a" + }, + { + "checksum": "sha256:534bbf990d0f0537715561c818c2b68f10e6ba0cc1252a32a0696f1e22fde1e3" + }, + { + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "checksum": "sha256:3d1dfe2e487e06efda133298a0fd0913f95b61c4373332db110b496aaadc8f05" + }, + { + "checksum": "sha256:d81c180c682e6014a0da09aaa144492e8cb03c1d61022513ba6db5bd3740f921" + }, + { + "checksum": "sha256:d80219a299035688091aa230b1c9169143c00c141c4f1ad8e75d176d22cc1cd0" + }, + { + "checksum": "sha256:4931d78c496eaaa8e6b6bbec2b4750da52b9fc7e989ae89b7c1fa2a6f40ff7fa" + }, + { + "checksum": "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42" + }, + { + "checksum": "sha256:00cc9cd4517cbb4ad99dbce63b40b700699523550cd7f8202948af28dbe2cd9e" + }, + { + "checksum": "sha256:5ef47eb6a042a13c902764907692c1068eb0f69153b47bc85792bef74bfa852b" + }, + { + "checksum": "sha256:3459ac9ecad925e511502cff687ceb77f52f391303793f7670794a5c0b040f3d" + }, + { + "checksum": "sha256:3babb3a2d4bdffe51f8453a1a4151688a76b48327d37464e11f7c6529c888b30" + }, + { + "checksum": "sha256:211d74a081c06399001bf09c59e941b444f3175d2900a02775a232f4c83d3fb1" + }, + { + "checksum": "sha256:648e239be605f6cdc5b9cc63e316bcad906a4d0df605e7f6188009b0c48fc6d1" + }, + { + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "vfs_type": "xfs", + "path": "/", + "options": "defaults" + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "kernel_opts": "console=ttyS0 console=ttyS0,115200n8 no_timer_check crashkernel=auto net.ifnames=0 debug", + "legacy": "i386-pc" + } + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.keymap", + "options": { + "keymap": "dvorak" + } + }, + { + "name": "org.osbuild.timezone", + "options": { + "zone": "Europe/London" + } + }, + { + "name": "org.osbuild.chrony", + "options": { + "timeservers": [ + "time.example.com" + ] + } + }, + { + "name": "org.osbuild.groups", + "options": { + "groups": { + "group1": { + "name": "group1", + "gid": 1030 + }, + "group2": { + "name": "group2", + "gid": 1050 + } + } + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "user1": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + }, + "user2": { + "uid": 1020, + "gid": 1050, + "groups": [ + "group1" + ], + "description": "description 2", + "home": "/home/home2", + "shell": "/bin/sh", + "password": "$6$BhyxFBgrEFh0VrPJ$MllG8auiU26x2pmzL4.1maHzPHrA.4gTdCvlATFp8HJU9UPee4zCS9BVl2HOzKaUYD/zEm8r/OF05F2icWB0K/", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.systemd", + "options": { + "enabled_services": [ + "sshd.socket" + ], + "disabled_services": [ + "bluetooth.service" + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "qcow2", + "filename": "disk.qcow2", + "size": 4294967296, + "ptuuid": "0x14fc63d2", + "pttype": "mbr", + "partitions": [ + { + "start": 2048, + "bootable": true, + "filesystem": { + "type": "xfs", + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/acl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-4.4.19-12.el8.x86_64.rpm", + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/brotli-1.0.6-2.el8.x86_64.rpm", + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-libs-1.0.6-26.el8.x86_64.rpm", + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chkconfig-1.13-2.el8.x86_64.rpm", + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-common-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cpio-2.12-8.el8.x86_64.rpm", + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-dicts-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-libs-2.3.3-1.el8.x86_64.rpm", + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/curl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.x86_64.rpm", + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-daemon-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-libs-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-tools-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-libs-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/diffutils-3.6-6.el8.x86_64.rpm", + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dosfstools-4.1-6.el8.x86_64.rpm", + "checksum": "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libelf-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libs-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/expat-2.2.5-4.el8.x86_64.rpm", + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-libs-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/filesystem-3.8-3.el8.x86_64.rpm", + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/findutils-4.6.0-20.el8.x86_64.rpm", + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/freetype-2.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-libs-2.9.7-12.el8.x86_64.rpm", + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gawk-4.2.1-1.el8.x86_64.rpm", + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-libs-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-libs-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib2-2.56.4-8.el8.x86_64.rpm", + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-all-langpacks-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-common-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gmp-6.1.2-10.el8.x86_64.rpm", + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-smime-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnutls-3.6.14-3.el8.x86_64.rpm", + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gpgme-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grep-3.1-6.el8.x86_64.rpm", + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-modules-2.02-84.el8.noarch.rpm", + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-extra-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-minimal-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grubby-8.40-41.el8.x86_64.rpm", + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gzip-1.9-9.el8.x86_64.rpm", + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hardlink-1.3-6.el8.x86_64.rpm", + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ima-evm-utils-1.1-5.el8.x86_64.rpm", + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/info-6.5-6.el8.x86_64.rpm", + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-libs-1.8.4-14.el8.x86_64.rpm", + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-c-0.13.1-0.2.el8.x86_64.rpm", + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-glib-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-2.0.4-10.el8.x86_64.rpm", + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-libs-1.5.10-6.el8.x86_64.rpm", + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-25-16.el8.x86_64.rpm", + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-libs-25-16.el8.x86_64.rpm", + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kpartx-0.8.4-2.el8.x86_64.rpm", + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/krb5-libs-1.18.2-3.el8.x86_64.rpm", + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libacl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.112", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libaio-0.3.112-1.el8.x86_64.rpm", + "checksum": "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libarchive-3.3.2-9.el8.x86_64.rpm", + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libassuan-2.5.1-3.el8.x86_64.rpm", + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libattr-2.4.48-3.el8.x86_64.rpm", + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libblkid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-2.26-4.el8.x86_64.rpm", + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-ng-0.7.9-5.el8.x86_64.rpm", + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcom_err-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcroco-0.6.12-4.el8.x86_64.rpm", + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcurl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-utils-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libevent-2.1.8-5.el8.x86_64.rpm", + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libfdisk-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libffi-3.1-22.el8.x86_64.rpm", + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcc-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcrypt-1.8.5-4.el8.x86_64.rpm", + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgomp-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgpg-error-1.31-1.el8.x86_64.rpm", + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libidn2-2.2.0-1.el8.x86_64.rpm", + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libksba-1.3.5-7.el8.x86_64.rpm", + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmetalink-0.1.3-7.el8.x86_64.rpm", + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd-2.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmount-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.x86_64.rpm", + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64.rpm", + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpcap-1.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.34", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpng-1.6.34-5.el8.x86_64.rpm", + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpsl-0.20.2-6.el8.x86_64.rpm", + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpwquality-1.4.0-9.el8.x86_64.rpm", + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librepo-1.12.0-1.el8.x86_64.rpm", + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libreport-filesystem-2.9.5-11.el8.x86_64.rpm", + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librhsm-0.0.3-3.el8.x86_64.rpm", + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libseccomp-2.4.3-1.el8.x86_64.rpm", + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsecret-0.18.6-1.el8.x86_64.rpm", + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-utils-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsemanage-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsepol-2.9-1.el8.x86_64.rpm", + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsigsegv-2.11-5.el8.x86_64.rpm", + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmartcols-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsolv-0.7.11-1.el8.x86_64.rpm", + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libss-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-0.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstdc++-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtasn1-4.13-3.el8.x86_64.rpm", + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtirpc-1.1.4-4.el8.x86_64.rpm", + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libunistring-0.9.9-3.el8.x86_64.rpm", + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libusbx-1.0.23-3.el8.x86_64.rpm", + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libutempter-1.1.6-14.el8.x86_64.rpm", + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuuid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-0.3.0-5.el8.x86_64.rpm", + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxcrypt-4.1.1-4.el8.x86_64.rpm", + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxml2-2.9.7-8.el8.x86_64.rpm", + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libyaml-0.1.7-5.el8.x86_64.rpm", + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libzstd-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lua-libs-5.3.4-11.el8.x86_64.rpm", + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lz4-libs-1.8.3-2.el8.x86_64.rpm", + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mpfr-3.1.6-1.el8.x86_64.rpm", + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nettle-3.4.1-2.el8.x86_64.rpm", + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/npth-1.5-4.el8.x86_64.rpm", + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openldap-2.4.46-15.el8.x86_64.rpm", + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-libs-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-pkcs11-0.4.10-2.el8.x86_64.rpm", + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/os-prober-1.74-6.el8.x86_64.rpm", + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pam-1.3.1-11.el8.x86_64.rpm", + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre-8.42-4.el8.x86_64.rpm", + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre2-10.32-2.el8.x86_64.rpm", + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pigz-2.4-4.el8.x86_64.rpm", + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-2.9-9.el8.x86_64.rpm", + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/popt-1.16-14.el8.x86_64.rpm", + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/procps-ng-3.3.15-2.el8.x86_64.rpm", + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gpg-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-hawkey-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libs-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/readline-7.0-10.el8.x86_64.rpm", + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-eula-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-build-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sed-4.5-2.el8.x86_64.rpm", + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shadow-utils-4.6-10.el8.x86_64.rpm", + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shared-mime-info-1.9-3.el8.x86_64.rpm", + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-libs-3.26.0-10.el8.x86_64.rpm", + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-239-36.el8.x86_64.rpm", + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-libs-239-36.el8.x86_64.rpm", + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-pam-239-36.el8.x86_64.rpm", + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-udev-239-36.el8.x86_64.rpm", + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tar-1.30-5.el8.x86_64.rpm", + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-lib-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/util-linux-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/which-2.21-12.el8.x86_64.rpm", + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xfsprogs-5.0.0-4.el8.x86_64.rpm", + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-libs-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/zlib-1.2.11-15.el8.x86_64.rpm", + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxkbcommon-0.9.1-1.el8.x86_64.rpm", + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/memstrack-0.1.8-1.el8.x86_64.rpm", + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pinentry-1.1.0-2.el8.x86_64.rpm", + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-unbound-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "name": "python36", + "epoch": 0, + "version": "3.6.8", + "release": "2.module+el8.1.0+3334+5cb623d7", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64.rpm", + "checksum": "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7" + }, + { + "name": "qemu-img", + "epoch": 15, + "version": "4.2.0", + "release": "29.module+el8.3.0+7212+401047e6", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64.rpm", + "checksum": "sha256:f2b58d2dfeb45318f8e9e67a96c4f02df69815149ce7b092233a02c0dea19f89" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/unbound-libs-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:0027700684ce09927aded1d2c5bb84028529141a6b418897bde37d4af348f8bb" + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-libnm-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:6d0dcbaa45457461dd5c4afe97689fa2baf5f95551bbe5e827a152dee545a51d" + }, + { + "name": "NetworkManager-team", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-team-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:a01bc8ab29f40d5e9f03929cee7a796804d63fda3c471054a67d1fd1e5577f6c" + }, + { + "name": "NetworkManager-tui", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-tui-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:4b8cd13404adac1a30a105e894a733f7c79bfac1a125b8cd095e6ba9c1d056f9" + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/acl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:cc3df9449002eacd595a73df52eb973d3b37e4c03d4669c7dce6ce7a26dabd6b" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "name": "authselect", + "epoch": 0, + "version": "1.2.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/authselect-1.2.1-2.el8.x86_64.rpm", + "checksum": "sha256:ad9b3b98ace87913e9487fceaae165faffb81e9c32400a72e08cc752cab0d037" + }, + { + "name": "authselect-libs", + "epoch": 0, + "version": "1.2.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/authselect-libs-1.2.1-2.el8.x86_64.rpm", + "checksum": "sha256:5bdb82a14d3604899324afc296aa7e7179a15788e2514348eea81b46934d6a3c" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-4.4.19-12.el8.x86_64.rpm", + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "name": "bind-export-libs", + "epoch": 32, + "version": "9.11.20", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bind-export-libs-9.11.20-3.el8.x86_64.rpm", + "checksum": "sha256:c24a1814f0fff7edcbd5cdca29571e8a79c5584e8ef300e89aef906b35c8a67d" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/brotli-1.0.6-2.el8.x86_64.rpm", + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "name": "bzip2", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-1.0.6-26.el8.x86_64.rpm", + "checksum": "sha256:ac5e4942921cee7c931186db79f14c54ddda3d98756e37bd6bb5b0a1024f0e82" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-libs-1.0.6-26.el8.x86_64.rpm", + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.13.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/c-ares-1.13.0-5.el8.x86_64.rpm", + "checksum": "sha256:2334cb78002aa30feeb11549d51e204aa868f5538a09957850082d7efb15b00f" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/checkpolicy-2.9-1.el8.x86_64.rpm", + "checksum": "sha256:a8808c053ffb7ccf826d80fdd458b6521f2cc63e55eb90d79a504fbb66c36cb0" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chkconfig-1.13-2.el8.x86_64.rpm", + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chrony-3.5-1.el8.x86_64.rpm", + "checksum": "sha256:10f40567d02123b71bd878ef423dd0d5dca415e806ff041c3c69b99d114fea84" + }, + { + "name": "cockpit-bridge", + "epoch": 0, + "version": "222.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cockpit-bridge-222.1-1.el8.x86_64.rpm", + "checksum": "sha256:f7120ef477465566e3b670d2eea1536d2e8a468b8bbe03d9df164c0280a14395" + }, + { + "name": "cockpit-system", + "epoch": 0, + "version": "222.1", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cockpit-system-222.1-1.el8.noarch.rpm", + "checksum": "sha256:202cfa88a6b2f1ec6a0bc0546f578c1ca6b5b6fcfeaf3e1228beead14d8bf758" + }, + { + "name": "cockpit-ws", + "epoch": 0, + "version": "222.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cockpit-ws-222.1-1.el8.x86_64.rpm", + "checksum": "sha256:330b6ab19f2ac365587b1c7536420f63c7a1ec0e4f54903f13fffc9fe1f51527" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-common-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cpio-2.12-8.el8.x86_64.rpm", + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-dicts-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "name": "cronie", + "epoch": 0, + "version": "1.5.2", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cronie-1.5.2-4.el8.x86_64.rpm", + "checksum": "sha256:411d65fe9e463458af055d06a4a89a1d822d26049198615c0afc9741c426c77c" + }, + { + "name": "cronie-anacron", + "epoch": 0, + "version": "1.5.2", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cronie-anacron-1.5.2-4.el8.x86_64.rpm", + "checksum": "sha256:2a65cec3eb67ba7645dd97cf3f3811cd5fb06eea2526d36a683d3fdaa0f2825e" + }, + { + "name": "crontabs", + "epoch": 0, + "version": "1.11", + "release": "16.20150630git.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crontabs-1.11-16.20150630git.el8.noarch.rpm", + "checksum": "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-libs-2.3.3-1.el8.x86_64.rpm", + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/curl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.x86_64.rpm", + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-daemon-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "name": "dbus-glib", + "epoch": 0, + "version": "0.110", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-glib-0.110-2.el8.x86_64.rpm", + "checksum": "sha256:802263173d9c487fc3ca584cc2a5b7b7bb49ac0d12d9026b3246d50fd0888fb1" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-libs-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-tools-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "name": "dejavu-fonts-common", + "epoch": 0, + "version": "2.35", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dejavu-fonts-common-2.35-6.el8.noarch.rpm", + "checksum": "sha256:7ce6aa282f9f23c46c44186595924d05f4e7a899b504eb95a0f87008f6620268" + }, + { + "name": "dejavu-sans-mono-fonts", + "epoch": 0, + "version": "2.35", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dejavu-sans-mono-fonts-2.35-6.el8.noarch.rpm", + "checksum": "sha256:dd379385bd1d2e05f50c4795e5a0eff9030fdac0fd2579bb4b56233257672b27" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-libs-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-client-4.3.6-41.el8.x86_64.rpm", + "checksum": "sha256:289e2a39b2a29163a29da35936d4b484fe356d0a6d519524023e79686daf501b" + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-common-4.3.6-41.el8.noarch.rpm", + "checksum": "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2" + }, + { + "name": "dhcp-libs", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-libs-4.3.6-41.el8.x86_64.rpm", + "checksum": "sha256:e0cde0185535bd50f7c5e5e2c0c19b5ab086b6bfa8cea95af9d56ffc81cb26b7" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/diffutils-3.6-6.el8.x86_64.rpm", + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "name": "dmidecode", + "epoch": 1, + "version": "3.2", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dmidecode-3.2-6.el8.x86_64.rpm", + "checksum": "sha256:686015c78247edec0a0f5e0d2cbbf02d9feea162e5967ed5b5be35d3951b1f3d" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dnf-plugin-subscription-manager", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugin-subscription-manager-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:c5e978963bda83e9321563bb18f69f3753f2eb510dfdafdc6c4e2856dc6b6302" + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugins-core-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-config-generic-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:40010441888b72dd077d4d6790f837236701b93c8b31da5dbf65c700fd2571fd" + }, + { + "name": "dracut-network", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-network-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:1faa85c12115426d8afc51c8bed2e71bf1dd87063e25052bcf85c17dbc0d9ea4" + }, + { + "name": "dracut-squash", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-squash-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:348b7d66a20015563489babbc3850928587575d0acde7c61d55480ebf0f3820d" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libelf-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libs-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "name": "ethtool", + "epoch": 2, + "version": "5.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ethtool-5.0-2.el8.x86_64.rpm", + "checksum": "sha256:0493fd81825df694be5d15685bfe4dc002de314d18f5ae47ccee769f65ea5013" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/expat-2.2.5-4.el8.x86_64.rpm", + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-libs-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/filesystem-3.8-3.el8.x86_64.rpm", + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/findutils-4.6.0-20.el8.x86_64.rpm", + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "name": "fontconfig", + "epoch": 0, + "version": "2.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fontconfig-2.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:d7c7ba51c19e80dc07f72cfef5467279ab485c652e144cb790c8ce2471040ece" + }, + { + "name": "fontpackages-filesystem", + "epoch": 0, + "version": "1.44", + "release": "22.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fontpackages-filesystem-1.44-22.el8.noarch.rpm", + "checksum": "sha256:db1fad3c2d8735e69084bd4b09ea963938e4dde2f2e096dc7a4ce146f18b7ab0" + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/freetype-2.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-libs-2.9.7-12.el8.x86_64.rpm", + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gawk-4.2.1-1.el8.x86_64.rpm", + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-libs-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "name": "gdk-pixbuf2", + "epoch": 0, + "version": "2.36.12", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdk-pixbuf2-2.36.12-5.el8.x86_64.rpm", + "checksum": "sha256:d649f6c55cdb75650e55852b1812a0ff3a5d689950abf2ae17fa094501037365" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-libs-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.56.1", + "release": "1.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib-networking-2.56.1-1.1.el8.x86_64.rpm", + "checksum": "sha256:c7e767d836fe8aef670eba2fde4f593996fbc0fb304a6666dcd53c0f9af7d184" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib2-2.56.4-8.el8.x86_64.rpm", + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-all-langpacks-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-common-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gmp-6.1.2-10.el8.x86_64.rpm", + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-smime-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnutls-3.6.14-3.el8.x86_64.rpm", + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.56.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gobject-introspection-1.56.1-1.el8.x86_64.rpm", + "checksum": "sha256:1065049dbd53849d35db269a23be54148cbe481122381ab71b72f62e83816b26" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gpgme-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grep-3.1-6.el8.x86_64.rpm", + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "18.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/groff-base-1.22.3-18.el8.x86_64.rpm", + "checksum": "sha256:73c29baa2cd94f1ae6a1d1333818969a281b16dd4262f413ad284c5333719a4d" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-modules-2.02-84.el8.noarch.rpm", + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-extra-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-minimal-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grubby-8.40-41.el8.x86_64.rpm", + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.32.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gsettings-desktop-schemas-3.32.0-5.el8.x86_64.rpm", + "checksum": "sha256:af541250a77d208a4128b792479f368c91771d5d7fabac96f768af451eaff154" + }, + { + "name": "gssproxy", + "epoch": 0, + "version": "0.8.0", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gssproxy-0.8.0-16.el8.x86_64.rpm", + "checksum": "sha256:b0307757d8cc817893b8ad987f332b99871ab5b7adbf5eb737b5d0a662835a6e" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gzip-1.9-9.el8.x86_64.rpm", + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hardlink-1.3-6.el8.x86_64.rpm", + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "name": "hdparm", + "epoch": 0, + "version": "9.54", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hdparm-9.54-2.el8.x86_64.rpm", + "checksum": "sha256:b446b1469bd535cf94e555525f40fa751b1343d89d589f3cff30ee2d7c38258e" + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.20", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hostname-3.20-6.el8.x86_64.rpm", + "checksum": "sha256:fdcc4180cae8fa83ca54188fc2f6796a1bc8d7eb7106163b98dd93d974b48cd1" + }, + { + "name": "hwdata", + "epoch": 0, + "version": "0.314", + "release": "8.5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hwdata-0.314-8.5.el8.noarch.rpm", + "checksum": "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ima-evm-utils-1.1-5.el8.x86_64.rpm", + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/info-6.5-6.el8.x86_64.rpm", + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.00.8", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/initscripts-10.00.8-1.el8.x86_64.rpm", + "checksum": "sha256:350657e984b1736bb4a8c9cc01b772517a4194467d6db84110c1cc42131f1cae" + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.2.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipcalc-0.2.4-4.el8.x86_64.rpm", + "checksum": "sha256:206de21c82d76de550bcc1959138472640b0a950a311b753203f5dfe5b201b7b" + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.3.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iproute-5.3.0-5.el8.x86_64.rpm", + "checksum": "sha256:4405d32322fd496c65f57a12b6037fd75b49957269dbf9cb0417b598162f7407" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-libs-1.8.4-14.el8.x86_64.rpm", + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "name": "iputils", + "epoch": 0, + "version": "20180629", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iputils-20180629-2.el8.x86_64.rpm", + "checksum": "sha256:a8961c50502aa02071c043a16f93399ac6794a058a0ef42be889abe60f35985b" + }, + { + "name": "irqbalance", + "epoch": 2, + "version": "1.4.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/irqbalance-1.4.0-4.el8.x86_64.rpm", + "checksum": "sha256:6844197fd8ffdb16cf94ab77709aa2954cb39512435a377401ebce340d06c7de" + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.11", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/jansson-2.11-3.el8.x86_64.rpm", + "checksum": "sha256:39e59e9a2460e3b6fe147501e79a57042f161c217963be212359031bb8b18daa" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-c-0.13.1-0.2.el8.x86_64.rpm", + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-glib-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-2.0.4-10.el8.x86_64.rpm", + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "kernel", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:eb5e29df2e7f803a62769aa19c60959ee7d368cd51397e00ebdbedba7d2d4768" + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-core-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:76ca09c73360f48d4b6fe4d4ee0aa974ef53531222df8e363d8006ec469051cf" + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-modules-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:97c8af6f58e3d14317036bd3ed2cbc498803c91c55b9dc0e8f0fddea7ac929e3" + }, + { + "name": "kernel-tools", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-tools-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:af495353f000008aab42640530c0c9005aaf60f0d4b4cf1a9b66b07bfc5b5881" + }, + { + "name": "kernel-tools-libs", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-tools-libs-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:4882ff53265bdeabb69f1ac9c585454b28ae799ab31fa72c9eb10bdbe1f41d9a" + }, + { + "name": "kexec-tools", + "epoch": 0, + "version": "2.0.20", + "release": "29.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kexec-tools-2.0.20-29.el8.x86_64.rpm", + "checksum": "sha256:948e61e32986303f12f8dbe40bc44674287b3906a54dadae5e3dfd2ccba88fac" + }, + { + "name": "keyutils", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-1.5.10-6.el8.x86_64.rpm", + "checksum": "sha256:761ff1ccc95562a4512c4bea1d4c2b507c42e3805c9e1e0093c80539a954047b" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-libs-1.5.10-6.el8.x86_64.rpm", + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-25-16.el8.x86_64.rpm", + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-libs-25-16.el8.x86_64.rpm", + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kpartx-0.8.4-2.el8.x86_64.rpm", + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/krb5-libs-1.18.2-3.el8.x86_64.rpm", + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "name": "less", + "epoch": 0, + "version": "530", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/less-530-1.el8.x86_64.rpm", + "checksum": "sha256:68362500ad574eb2df43a3d260ab8d0f3ce1ae5f34e66d71f2478fef8e17cb4a" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libacl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "name": "libappstream-glib", + "epoch": 0, + "version": "0.7.14", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libappstream-glib-0.7.14-3.el8.x86_64.rpm", + "checksum": "sha256:c5d0c9a5acc6c2de5e52b38701d6cad5cc37d22c1cb518ca8bcac79bddffaaba" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libarchive-3.3.2-9.el8.x86_64.rpm", + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libassuan-2.5.1-3.el8.x86_64.rpm", + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libattr-2.4.48-3.el8.x86_64.rpm", + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libbasicobjects-0.1.1-39.el8.x86_64.rpm", + "checksum": "sha256:cac59a5629e7229653c29c0d575bd8f8c2d3774474615eb65615109afb151981" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libblkid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-2.26-4.el8.x86_64.rpm", + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-ng-0.7.9-5.el8.x86_64.rpm", + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcollection-0.7.0-39.el8.x86_64.rpm", + "checksum": "sha256:ecd53a50b4cb20dd1597f45ab4a9cba1fd7793a6000fb2114421687779738672" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcom_err-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcroco-0.6.12-4.el8.x86_64.rpm", + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcurl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "name": "libdaemon", + "epoch": 0, + "version": "0.14", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdaemon-0.14-15.el8.x86_64.rpm", + "checksum": "sha256:798420bbda79fd0b9312abac25efad6b28957c512497f37f4beddad5d67dd66a" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-utils-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdhash-0.5.0-39.el8.x86_64.rpm", + "checksum": "sha256:50c0d1828a9e8db638c09d88afb0828d98349027ce498ee7df74e7ff6052ac1d" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "23.20170329cvs.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libedit-3.1-23.20170329cvs.el8.x86_64.rpm", + "checksum": "sha256:0391105afa53c9503b59591615bd7c98e2f7a4cd94ff4fd1451c4234522f3880" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libevent-2.1.8-5.el8.x86_64.rpm", + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libfdisk-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libffi-3.1-22.el8.x86_64.rpm", + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcc-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcrypt-1.8.5-4.el8.x86_64.rpm", + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgomp-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgpg-error-1.31-1.el8.x86_64.rpm", + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "name": "libgudev", + "epoch": 0, + "version": "232", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgudev-232-4.el8.x86_64.rpm", + "checksum": "sha256:713ec69b972a8e88622b3fcd3b84fccdbd6c333b68b6c52151c2350edad2576a" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libidn2-2.2.0-1.el8.x86_64.rpm", + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libini_config-1.3.1-39.el8.x86_64.rpm", + "checksum": "sha256:c46ee71ba426e0964b2264bdf18fc4cff4d7815206c9e8a471bdf678e65c24b9" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libksba-1.3.5-7.el8.x86_64.rpm", + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.1.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libldb-2.1.3-2.el8.x86_64.rpm", + "checksum": "sha256:231bc0eeb8fb127f0a4da5a4da1edd226067d5029a0b4fd6ef72c246ccfc31c0" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmetalink-0.1.3-7.el8.x86_64.rpm", + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmnl-1.0.4-6.el8.x86_64.rpm", + "checksum": "sha256:9c5594fcac97c0f8813d7a188e2368e3b1095025fc4a0ecbd5d17e54c0c93f97" + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodman-2.0.1-17.el8.x86_64.rpm", + "checksum": "sha256:0602b342148d5e8e6a954bb26af60ed63d3f3d919cd3856ea93612e05ebe2937" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd-2.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmount-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libndp-1.7-3.el8.x86_64.rpm", + "checksum": "sha256:53fb6834e2e439e79225d957c4643922da74836417b5558d0c2943b546b26e57" + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.3.3", + "release": "35.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnfsidmap-2.3.3-35.el8.x86_64.rpm", + "checksum": "sha256:2eed977380b41885d4f7ad33e122abbb9ea7391c1255d182451efd457688c8b2" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.x86_64.rpm", + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-3.5.0-1.el8.x86_64.rpm", + "checksum": "sha256:0129696c208f60326723c650295167b0600791ccb2e9c3d446c4caf9adecb3d7" + }, + { + "name": "libnl3-cli", + "epoch": 0, + "version": "3.5.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-cli-3.5.0-1.el8.x86_64.rpm", + "checksum": "sha256:ac2800369b7f4dc05a8fec452eabedf02f153c11e188a1e80157e35592305690" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64.rpm", + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpath_utils-0.2.1-39.el8.x86_64.rpm", + "checksum": "sha256:2eba2dc51974271244bdeaaf17c6e8fac3c35b62914b680076bdc4a32272df01" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpcap-1.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpipeline-1.5.0-2.el8.x86_64.rpm", + "checksum": "sha256:539abfc369a17023658486f7b4a48c8db159cc4d617b27da256ddac6e15ea687" + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.34", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpng-1.6.34-5.el8.x86_64.rpm", + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "5.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libproxy-0.4.15-5.2.el8.x86_64.rpm", + "checksum": "sha256:ecd2a9cc865d694f02273ca7a6b970a6a799b679174dead75ec7c34ff710ffd2" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpsl-0.20.2-6.el8.x86_64.rpm", + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpwquality-1.4.0-9.el8.x86_64.rpm", + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libref_array-0.1.5-39.el8.x86_64.rpm", + "checksum": "sha256:507442831068c749ba21b22bd96993a1a2a6c74dd53c55f34c7f81a21554c82d" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librepo-1.12.0-1.el8.x86_64.rpm", + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libreport-filesystem-2.9.5-11.el8.x86_64.rpm", + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librhsm-0.0.3-3.el8.x86_64.rpm", + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libseccomp-2.4.3-1.el8.x86_64.rpm", + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsecret-0.18.6-1.el8.x86_64.rpm", + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-utils-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsemanage-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsepol-2.9-1.el8.x86_64.rpm", + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsigsegv-2.11-5.el8.x86_64.rpm", + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmartcols-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsolv-0.7.11-1.el8.x86_64.rpm", + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.62.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsoup-2.62.3-1.el8.x86_64.rpm", + "checksum": "sha256:6cab44ed85c7dc821e84fab9d383f7d0a4b299cc29c8f0860b13e82bb0da8d6f" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libss-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-0.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_autofs-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:d186f806ed9c841a385f7acf194c20b78616396414da9131982e469f065619b8" + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_certmap-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:beea3f8c88b9c0a74d75622aa71467f51c457d1acf0ff557f7cd0e2ae3dfafe3" + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_idmap-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:c4279ad2915f4ce1806c4121675e49d2b525bb6e977d487dc2ad138fce8c2734" + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_nss_idmap-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:7c292b3bb74d12d77e1e22221c55696a0c5f50304040b3a706c2164d5b6a42e4" + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_sudo-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:44e81330b185085f871e9fbf8fae27c8de411600c032aca371dc6d39a3e261da" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstdc++-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "name": "libstemmer", + "epoch": 0, + "version": "0", + "release": "10.585svn.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstemmer-0-10.585svn.el8.x86_64.rpm", + "checksum": "sha256:23474f4f3841340af8a7ec5ab2d1fa693d4d72d2f782a5930c799560382916ac" + }, + { + "name": "libsysfs", + "epoch": 0, + "version": "2.1.0", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsysfs-2.1.0-24.el8.x86_64.rpm", + "checksum": "sha256:3a1058c6ba468722090a74002a3239161771b0d8b444975bff891afd45bb672a" + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtalloc-2.3.1-2.el8.x86_64.rpm", + "checksum": "sha256:3b087daa7e9de69c051f22f9df1ef00867ffddd99357bc3a215ccde76a13c02f" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtasn1-4.13-3.el8.x86_64.rpm", + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtdb-1.4.3-1.el8.x86_64.rpm", + "checksum": "sha256:4ed1a6294eea09a3a7e15683267ca5d383e4c2b27fd57fe05d2666e0e6c3d26f" + }, + { + "name": "libteam", + "epoch": 0, + "version": "1.29", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libteam-1.29-5.el8.x86_64.rpm", + "checksum": "sha256:7c89c2d055013779252c12643e8f0b3731f4dd5e2b61d9d81233a0ee298abb36" + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.2", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtevent-0.10.2-2.el8.x86_64.rpm", + "checksum": "sha256:860676d4231afa3e6b23933d8dd65e5f7f5823910791e6481d2440ae4ec64c53" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtirpc-1.1.4-4.el8.x86_64.rpm", + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libunistring-0.9.9-3.el8.x86_64.rpm", + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libusbx-1.0.23-3.el8.x86_64.rpm", + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "23.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuser-0.62-23.el8.x86_64.rpm", + "checksum": "sha256:b2dcbd3b81196b16e33054d31c0129c432cf59fb591035845cc299bbb46000c1" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libutempter-1.1.6-14.el8.x86_64.rpm", + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuuid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-0.3.0-5.el8.x86_64.rpm", + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "name": "libverto-libevent", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-libevent-0.3.0-5.el8.x86_64.rpm", + "checksum": "sha256:d3f8a537fc631378fbef3c70ebdf8922d4d8842813d3fb02a7c5fd1663f55179" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxcrypt-4.1.1-4.el8.x86_64.rpm", + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxml2-2.9.7-8.el8.x86_64.rpm", + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libyaml-0.1.7-5.el8.x86_64.rpm", + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libzstd-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20200619", + "release": "99.git3890db36.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/linux-firmware-20200619-99.git3890db36.el8.noarch.rpm", + "checksum": "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9" + }, + { + "name": "logrotate", + "epoch": 0, + "version": "3.14.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/logrotate-3.14.0-4.el8.x86_64.rpm", + "checksum": "sha256:37504d807ac0bb6c429d7be9c636f7b755464023511d856846dbb9deb8f6a76d" + }, + { + "name": "lshw", + "epoch": 0, + "version": "B.02.19.2", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lshw-B.02.19.2-2.el8.x86_64.rpm", + "checksum": "sha256:b59cdea55a890a10f484d8596e244a18455ee82920c7e466991801d24c4718cd" + }, + { + "name": "lsscsi", + "epoch": 0, + "version": "0.30", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lsscsi-0.30-1.el8.x86_64.rpm", + "checksum": "sha256:b9a17114d551cc8259eea6996b6871ec36675330fdb1eb16db529e6f8a9c34d5" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lua-libs-5.3.4-11.el8.x86_64.rpm", + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lz4-libs-1.8.3-2.el8.x86_64.rpm", + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "name": "lzo", + "epoch": 0, + "version": "2.08", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lzo-2.08-14.el8.x86_64.rpm", + "checksum": "sha256:a3dedf8c077b4656d3cd4ef641e696397a3fff83ee8b14f0e3fc69d7c10cebcf" + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.7.6.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/man-db-2.7.6.1-17.el8.x86_64.rpm", + "checksum": "sha256:7b6856dc4dc1d88d9c3c9597fb824b5776af59f045087bdb2713d64045216a36" + }, + { + "name": "microcode_ctl", + "epoch": 4, + "version": "20200609", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/microcode_ctl-20200609-2.el8.x86_64.rpm", + "checksum": "sha256:0e4b7687f0c62f4e336223b939f6cb169c8dac49eee23c53fd919e58d8f989df" + }, + { + "name": "mozjs60", + "epoch": 0, + "version": "60.9.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mozjs60-60.9.0-4.el8.x86_64.rpm", + "checksum": "sha256:fd9e5c379cd3482d32686fb13881827a39037e7a7afa92c62d58c1f05fcb797f" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mpfr-3.1.6-1.el8.x86_64.rpm", + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.52.20160912git.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/net-tools-2.0-0.52.20160912git.el8.x86_64.rpm", + "checksum": "sha256:e67a1c5f02c3e6fdccaad455fddf0dfdf812069da87d841a22df910bf361cfb9" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nettle-3.4.1-2.el8.x86_64.rpm", + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "name": "newt", + "epoch": 0, + "version": "0.52.20", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/newt-0.52.20-11.el8.x86_64.rpm", + "checksum": "sha256:eb9b37827f1851c8a2683cd86026fda90847afe90d51ea746d7cd5f49f6f90d1" + }, + { + "name": "nfs-utils", + "epoch": 1, + "version": "2.3.3", + "release": "35.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nfs-utils-2.3.3-35.el8.x86_64.rpm", + "checksum": "sha256:14f5ca00582f8d8780a0bcc1b204fb73cfdb35c5725efa4eccffbe8a1988769e" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/npth-1.5-4.el8.x86_64.rpm", + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "name": "numactl-libs", + "epoch": 0, + "version": "2.0.12", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/numactl-libs-2.0.12-11.el8.x86_64.rpm", + "checksum": "sha256:d94a39545f8570ba2d199e4892cfe05ebd5ea6e4e8322790b4f960bf92da5f09" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openldap-2.4.46-15.el8.x86_64.rpm", + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-8.0p1-5.el8.x86_64.rpm", + "checksum": "sha256:b5fc6f35798edccd0390e54fce40290936c3699227e79cc6d1a42d803358fd03" + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-clients-8.0p1-5.el8.x86_64.rpm", + "checksum": "sha256:3730f3f8d3332836f278250408891cb097379a5d7745fe698b1d418e9e13d335" + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-server-8.0p1-5.el8.x86_64.rpm", + "checksum": "sha256:fd7bc748b59a48a1ba803dc893be729c8624a4141e23fcef126a401857bbb455" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-libs-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-pkcs11-0.4.10-2.el8.x86_64.rpm", + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/os-prober-1.74-6.el8.x86_64.rpm", + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pam-1.3.1-11.el8.x86_64.rpm", + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "name": "parted", + "epoch": 0, + "version": "3.2", + "release": "38.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/parted-3.2-38.el8.x86_64.rpm", + "checksum": "sha256:22585bd5d69c5e0a06fe00a6844da2e5d311512374c1d176f17f41caab7e121f" + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/passwd-0.80-3.el8.x86_64.rpm", + "checksum": "sha256:7c0b2b064dad700cba2754b46f483e3e59aaf798740470df1daad3d5239fb893" + }, + { + "name": "pciutils", + "epoch": 0, + "version": "3.6.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pciutils-3.6.4-2.el8.x86_64.rpm", + "checksum": "sha256:22942af5dab657f662538619ab84a260d3c92e3498694fca2a126100ff9ab316" + }, + { + "name": "pciutils-libs", + "epoch": 0, + "version": "3.6.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pciutils-libs-3.6.4-2.el8.x86_64.rpm", + "checksum": "sha256:da5606af487682acce52799418a97614d0f6e6b72d15c88c4f6f2a076f384dac" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre-8.42-4.el8.x86_64.rpm", + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre2-10.32-2.el8.x86_64.rpm", + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pigz-2.4-4.el8.x86_64.rpm", + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-2.9-9.el8.x86_64.rpm", + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "name": "policycoreutils-python-utils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-python-utils-2.9-9.el8.noarch.rpm", + "checksum": "sha256:b4fb3d8b0255a5ba9456b61e4f479f2f8355d171263508bbe869af677015fd97" + }, + { + "name": "polkit", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-0.115-11.el8.x86_64.rpm", + "checksum": "sha256:8af00d4b0857240310156e05123e07795e6573da7c1fe9e7fd83b51f13971725" + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-libs-0.115-11.el8.x86_64.rpm", + "checksum": "sha256:441efa6f0b9a9905ef11ec987d6db89e7dba2857060020c4554e32db3e59fce5" + }, + { + "name": "polkit-pkla-compat", + "epoch": 0, + "version": "0.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-pkla-compat-0.1-12.el8.x86_64.rpm", + "checksum": "sha256:9a9ca6857f517f1249d2eb496fe904590d6203e4a9547a28e0b23f21c4cae24a" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/popt-1.16-14.el8.x86_64.rpm", + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "name": "prefixdevname", + "epoch": 0, + "version": "0.1.0", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/prefixdevname-0.1.0-6.el8.x86_64.rpm", + "checksum": "sha256:8d371e753071edc796d2eadb8278980290511be6279fdf46649c81b859497d6a" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/procps-ng-3.3.15-2.el8.x86_64.rpm", + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-asn1crypto", + "epoch": 0, + "version": "0.24.0", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-asn1crypto-0.24.0-3.el8.noarch.rpm", + "checksum": "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34" + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:8f00781eb679c6baf359099fa2a672ffccfc8e43b7c03c1dc635619cb25ff01d" + }, + { + "name": "python3-cffi", + "epoch": 0, + "version": "1.11.5", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-cffi-1.11.5-5.el8.x86_64.rpm", + "checksum": "sha256:13ffce0597b689dd53f55ea0d03dd6d013246634f5c6cbcef51fa549d9734b29" + }, + { + "name": "python3-chardet", + "epoch": 0, + "version": "3.0.4", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-chardet-3.0.4-7.el8.noarch.rpm", + "checksum": "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786" + }, + { + "name": "python3-configobj", + "epoch": 0, + "version": "5.0.6", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-configobj-5.0.6-11.el8.noarch.rpm", + "checksum": "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367" + }, + { + "name": "python3-cryptography", + "epoch": 0, + "version": "2.3", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-cryptography-2.3-3.el8.x86_64.rpm", + "checksum": "sha256:7a7a238ea529165348acef1d1a20c1d47c1ef5838d8501f3879bb130c1b73e06" + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.6.1", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm", + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.4", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dbus-1.2.4-15.el8.x86_64.rpm", + "checksum": "sha256:5a85222c8e9997a8b609b915a8fbae756de9b9bff732db852fb15fe0524f2d86" + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.2.1", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm", + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "name": "python3-dmidecode", + "epoch": 0, + "version": "3.12.2", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dmidecode-3.12.2-15.el8.x86_64.rpm", + "checksum": "sha256:d2b777ea98ee644997029994136723cf4fa78e97afeaceab39f76b545b51792b" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-plugins-core-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87" + }, + { + "name": "python3-ethtool", + "epoch": 0, + "version": "0.14", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ethtool-0.14-3.el8.x86_64.rpm", + "checksum": "sha256:20dec130e4fd0a2146443791ca7ade6e079cea691d93711813d5f483b691c55a" + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.28.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gobject-base-3.28.3-2.el8.x86_64.rpm", + "checksum": "sha256:86d305a1466a596f8b436561d674f2510f268bed9e73f56c87da1dd120f99c18" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gpg-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-hawkey-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "name": "python3-idna", + "epoch": 0, + "version": "2.5", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-idna-2.5-5.el8.noarch.rpm", + "checksum": "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20" + }, + { + "name": "python3-iniparse", + "epoch": 0, + "version": "0.4", + "release": "31.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm", + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "name": "python3-inotify", + "epoch": 0, + "version": "0.9.6", + "release": "13.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm", + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "name": "python3-jwt", + "epoch": 0, + "version": "1.6.1", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-jwt-1.6.1-2.el8.noarch.rpm", + "checksum": "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "name": "python3-librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-librepo-1.12.0-1.el8.x86_64.rpm", + "checksum": "sha256:4ca553b0c0f6dc130e05e2011cdf1f52132e8f70bd93be8eee4e415b2cac0c56" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libs-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libselinux-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:9487bff6bb16e7326c8b805751580b4593220ba19b06515c69de83fee8e3bb1f" + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libsemanage-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:09fc3154e76c8ee25b3982c15f3bc455017262c3df5af84075859dcbf79e4f82" + }, + { + "name": "python3-libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libxml2-2.9.7-8.el8.x86_64.rpm", + "checksum": "sha256:4ccbefcbe75decfef38ccae5d8ff92ba6b00e8232b64ec46ae0c0be8ae20ec50" + }, + { + "name": "python3-linux-procfs", + "epoch": 0, + "version": "0.6.2", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-linux-procfs-0.6.2-2.el8.noarch.rpm", + "checksum": "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f" + }, + { + "name": "python3-magic", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-magic-5.33-16.el8.noarch.rpm", + "checksum": "sha256:8e2c0324789f42ebb6324847249699eb499544a3e6ad67ccd74713b3c1d6ce78" + }, + { + "name": "python3-oauthlib", + "epoch": 0, + "version": "2.1.0", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-oauthlib-2.1.0-1.el8.noarch.rpm", + "checksum": "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6" + }, + { + "name": "python3-perf", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-perf-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:18d419718a99851370262584bec1b27d60cbd08845b50fbe97e1a56b71cd5ea2" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-ply", + "epoch": 0, + "version": "3.9", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ply-3.9-8.el8.noarch.rpm", + "checksum": "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9" + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-policycoreutils-2.9-9.el8.noarch.rpm", + "checksum": "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42" + }, + { + "name": "python3-pycparser", + "epoch": 0, + "version": "2.14", + "release": "14.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pycparser-2.14-14.el8.noarch.rpm", + "checksum": "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf" + }, + { + "name": "python3-pysocks", + "epoch": 0, + "version": "1.6.8", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pysocks-1.6.8-3.el8.noarch.rpm", + "checksum": "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280" + }, + { + "name": "python3-pyudev", + "epoch": 0, + "version": "0.21.0", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pyudev-0.21.0-7.el8.noarch.rpm", + "checksum": "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde" + }, + { + "name": "python3-pyyaml", + "epoch": 0, + "version": "3.12", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pyyaml-3.12-12.el8.x86_64.rpm", + "checksum": "sha256:de870435340bf30620406df41b79e43adaf7d0a277db1635a0fae710df993fc0" + }, + { + "name": "python3-requests", + "epoch": 0, + "version": "2.20.0", + "release": "2.1.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-requests-2.20.0-2.1.el8_1.noarch.rpm", + "checksum": "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "name": "python3-schedutils", + "epoch": 0, + "version": "0.6", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-schedutils-0.6-6.el8.x86_64.rpm", + "checksum": "sha256:09ca7b05e26f93d35ac299dbcd865b65ec3a3d2654e1da87d2c3c0462dbe6e4a" + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.3.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setools-4.3.0-1.el8.x86_64.rpm", + "checksum": "sha256:cb8e7909d58206223ad7108a850218360a6b1e2147d97bc94097962dc820d0de" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.11.0", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm", + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "name": "python3-slip", + "epoch": 0, + "version": "0.6.4", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-slip-0.6.4-11.el8.noarch.rpm", + "checksum": "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb" + }, + { + "name": "python3-slip-dbus", + "epoch": 0, + "version": "0.6.4", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-slip-dbus-0.6.4-11.el8.noarch.rpm", + "checksum": "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d" + }, + { + "name": "python3-subscription-manager-rhsm", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-subscription-manager-rhsm-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:0f3b084d947bc246fe68822129b8ae1294c4187270a19f0966282baf75b34dc6" + }, + { + "name": "python3-syspurpose", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-syspurpose-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:206cba480b58c70348584010d547d21bcd84c6094fd3980e22c6b640da12704c" + }, + { + "name": "python3-urllib3", + "epoch": 0, + "version": "1.24.2", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-urllib3-1.24.2-4.el8.noarch.rpm", + "checksum": "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53" + }, + { + "name": "quota", + "epoch": 1, + "version": "4.04", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/quota-4.04-10.el8.x86_64.rpm", + "checksum": "sha256:db7ec7f6349da80049a035a7595523a44dfc5f090026dc3342cc3149d5a31bed" + }, + { + "name": "quota-nls", + "epoch": 1, + "version": "4.04", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/quota-nls-4.04-10.el8.noarch.rpm", + "checksum": "sha256:adab024896eecd08250eb7a7a5e1686df0b945fd1604543877e230163c510f24" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/readline-7.0-10.el8.x86_64.rpm", + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "name": "redhat-logos", + "epoch": 0, + "version": "81.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-logos-81.1-1.el8.x86_64.rpm", + "checksum": "sha256:ed54b383b0f252dde700d11524046568d98b64829feb77ce2b26080c0c827607" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-eula-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "name": "rhsm-icons", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rhsm-icons-1.27.9-1.el8.noarch.rpm", + "checksum": "sha256:fb97246f1e22b2db98fc309470c4d87755ecc59e5b98047c52c4fedbb08d9b6f" + }, + { + "name": "rng-tools", + "epoch": 0, + "version": "6.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rng-tools-6.8-3.el8.x86_64.rpm", + "checksum": "sha256:9d9d1bdfba4cd852f90232ebe2c4247e7b3a88c4476578c820788a91d6838e55" + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "22.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rootfiles-8.1-22.el8.noarch.rpm", + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "name": "rpcbind", + "epoch": 0, + "version": "1.2.5", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpcbind-1.2.5-7.el8.x86_64.rpm", + "checksum": "sha256:516acd98bf46b3b2e09fd0d2f0cf1fbf4ecbecc9b0e10028c3a26ce9a6aca393" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-build-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "name": "rsync", + "epoch": 0, + "version": "3.1.3", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rsync-3.1.3-8.el8.x86_64.rpm", + "checksum": "sha256:3e180253732f00c919aaebc9aaa0562eefac466ce145ce5ad5e1092453aeebaa" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sed-4.5-2.el8.x86_64.rpm", + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "sg3_utils", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sg3_utils-1.44-5.el8.x86_64.rpm", + "checksum": "sha256:398c1abc82097370f46e6fdf4dae63870e1f767b24d0130c79ed67ea3a67233a" + }, + { + "name": "sg3_utils-libs", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sg3_utils-libs-1.44-5.el8.x86_64.rpm", + "checksum": "sha256:671852e4f32de6278dd384d35d1dc799ab5d3e8ef718e89e516452cbcba068f0" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shadow-utils-4.6-10.el8.x86_64.rpm", + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shared-mime-info-1.9-3.el8.x86_64.rpm", + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "name": "slang", + "epoch": 0, + "version": "2.3.2", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/slang-2.3.2-3.el8.x86_64.rpm", + "checksum": "sha256:efa20ae5eca5860656d0131086470cb8d5c3a1ae2819301e7d015f06bbb68a26" + }, + { + "name": "snappy", + "epoch": 0, + "version": "1.1.7", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/snappy-1.1.7-5.el8.x86_64.rpm", + "checksum": "sha256:4403330cdf4f15d75d727e2ac8c3358ff6a13209b3395dfac2131984e443eb23" + }, + { + "name": "sos", + "epoch": 0, + "version": "3.9.1", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sos-3.9.1-4.el8.noarch.rpm", + "checksum": "sha256:934205ae1baa04b3921065f73096378f1db65990392340ad32042f86c9b5b247" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-libs-3.26.0-10.el8.x86_64.rpm", + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "name": "squashfs-tools", + "epoch": 0, + "version": "4.3", + "release": "19.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/squashfs-tools-4.3-19.el8.x86_64.rpm", + "checksum": "sha256:72ff3a3f6c52849a40cb24f9694115a68cc939970a00c374b4c73b1e4c5dc20c" + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-client-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:2e90748420a7d28b3063df04de129e79ea85310a8d9cf2faf0a2e7b8430307c8" + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-common-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:14098d36fe4be983fac73d04aeacf0ed7977d962e760907b89e3f80b4ca46f3f" + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-kcm-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:1b1fe43a375a21f4c3ccf04861c122fd519d4865b9c1abc7f1973b86a0252a06" + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-nfs-idmap-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:c0025c0b08ed82c640fa470e62743aed17a33f7948ed0cc969892d7c149206b3" + }, + { + "name": "subscription-manager", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:65dc391ab1c96d1009ef2e7706eabacd5cf84f2a47ea1cc87f6f5e2c1324b178" + }, + { + "name": "subscription-manager-cockpit", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-cockpit-1.27.9-1.el8.noarch.rpm", + "checksum": "sha256:e6194926699147659c3a35d9330b5e9706b203aa806c4023c258559f9a0f8ae7" + }, + { + "name": "subscription-manager-rhsm-certificates", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-rhsm-certificates-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:99fa92b5d1e0d335fb2bb961ef39988b50968350b899e8790cead73c9a0bec65" + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.8.29", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sudo-1.8.29-6.el8.x86_64.rpm", + "checksum": "sha256:ec9adedf0d5d2d096acf4739e2eefab8095498037e13dac9b283e17a9c54259a" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-239-36.el8.x86_64.rpm", + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-libs-239-36.el8.x86_64.rpm", + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-pam-239-36.el8.x86_64.rpm", + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-udev-239-36.el8.x86_64.rpm", + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tar-1.30-5.el8.x86_64.rpm", + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "name": "teamd", + "epoch": 0, + "version": "1.29", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/teamd-1.29-5.el8.x86_64.rpm", + "checksum": "sha256:b156691caa225f0025533a68eeb9a2cf3883062dd209ede9ec07727b358171cc" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-lib-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "name": "tuned", + "epoch": 0, + "version": "2.14.0", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tuned-2.14.0-2.el8.noarch.rpm", + "checksum": "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "usermode", + "epoch": 0, + "version": "1.113", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/usermode-1.113-1.el8.x86_64.rpm", + "checksum": "sha256:98a589d7e1cdea9d974aa43f688e55333eed11ce7cb2037d45cc2e69bce579b3" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/util-linux-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.0.1763", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/vim-minimal-8.0.1763-15.el8.x86_64.rpm", + "checksum": "sha256:947b4e4eebec21501ca62e2a7ff9baae0e4e7c59584fbba4b6276a402cfbb45b" + }, + { + "name": "virt-what", + "epoch": 0, + "version": "1.18", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/virt-what-1.18-6.el8.x86_64.rpm", + "checksum": "sha256:2cfcc3d6163dfaf7ce76998be992bd0b70dd7cbb838430cecf2aff04cd435d24" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/which-2.21-12.el8.x86_64.rpm", + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xfsprogs-5.0.0-4.el8.x86_64.rpm", + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-libs-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/yum-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4" + }, + { + "name": "yum-utils", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/yum-utils-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:bdb8cc675da18f659ba06252f1f2604d171373239804c3cbc6004dadded54cd3" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/zlib-1.2.11-15.el8.x86_64.rpm", + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "name": "PackageKit", + "epoch": 0, + "version": "1.1.12", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/PackageKit-1.1.12-6.el8.x86_64.rpm", + "checksum": "sha256:a842bbdfe4e3f24ef55acd0ed6930639ccaa5980a2774235bc4c6c2a95ab421c" + }, + { + "name": "PackageKit-glib", + "epoch": 0, + "version": "1.1.12", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/PackageKit-glib-1.1.12-6.el8.x86_64.rpm", + "checksum": "sha256:468b540f98263d7b274c722a7b8f18ac1ab9d88783cfca6561c85e56b36afeee" + }, + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.0.25", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/abattis-cantarell-fonts-0.0.25-4.el8.noarch.rpm", + "checksum": "sha256:1594afba86593ec614299ef6af255755a98ea55a34a72a22fdc9d80a040be39d" + }, + { + "name": "cairo", + "epoch": 0, + "version": "1.15.12", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cairo-1.15.12-3.el8.x86_64.rpm", + "checksum": "sha256:7d0bc4f2f78166013ef160ed10930a4902c7c5c6d6b7940fc900d36eaacc65a2" + }, + { + "name": "cairo-gobject", + "epoch": 0, + "version": "1.15.12", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cairo-gobject-1.15.12-3.el8.x86_64.rpm", + "checksum": "sha256:18fd9b2a61147367ad7d51798d33db38aedbaf761f3d0561c752f0048d1f4221" + }, + { + "name": "cloud-init", + "epoch": 0, + "version": "19.4", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cloud-init-19.4-7.el8.noarch.rpm", + "checksum": "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2" + }, + { + "name": "cloud-utils-growpart", + "epoch": 0, + "version": "0.31", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cloud-utils-growpart-0.31-1.el8.noarch.rpm", + "checksum": "sha256:664a883f3c7042eb91e0b66fc99c309a729011b4912e4af9397f4e25e1adae90" + }, + { + "name": "dnf-plugin-spacewalk", + "epoch": 0, + "version": "2.8.5", + "release": "11.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b" + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm", + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm", + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "name": "insights-client", + "epoch": 0, + "version": "3.0.14", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/insights-client-3.0.14-2.el8.noarch.rpm", + "checksum": "sha256:abeb97ed3fdd82145fd51f8eeaecfca272e4d1418b17a68241e054425a327aa3" + }, + { + "name": "libX11", + "epoch": 0, + "version": "1.6.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libX11-1.6.8-3.el8.x86_64.rpm", + "checksum": "sha256:a143d66ae06409c70fe4323c52c4507a1d7247c59f21951b96279fd7ca173215" + }, + { + "name": "libX11-common", + "epoch": 0, + "version": "1.6.8", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libX11-common-1.6.8-3.el8.noarch.rpm", + "checksum": "sha256:593d4df5b8de12ed0ec5a0935cb0bd966e27a631aa0806250ba9f67092ad737f" + }, + { + "name": "libXau", + "epoch": 0, + "version": "1.0.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libXau-1.0.9-3.el8.x86_64.rpm", + "checksum": "sha256:a260f793e49805b188908e2f30c4687abe4e023b20c28a85d10d2371556c3981" + }, + { + "name": "libXext", + "epoch": 0, + "version": "1.3.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libXext-1.3.4-1.el8.x86_64.rpm", + "checksum": "sha256:ddafccd3f010fc75da6de158b5a68fd672f8b3554ac403065490318ce2be05f3" + }, + { + "name": "libXrender", + "epoch": 0, + "version": "0.9.10", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libXrender-0.9.10-7.el8.x86_64.rpm", + "checksum": "sha256:871672b8a9ffbe887b32e736494c1f005795bc7ffda026c6a063ee0d28788709" + }, + { + "name": "libestr", + "epoch": 0, + "version": "0.1.10", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libestr-0.1.10-1.el8.x86_64.rpm", + "checksum": "sha256:bfe5c8ea12012936cc59981a10728e95d5fdadd3e893457af7a27c464d8cb6ba" + }, + { + "name": "libfastjson", + "epoch": 0, + "version": "0.99.8", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libfastjson-0.99.8-2.el8.x86_64.rpm", + "checksum": "sha256:474a66a4cf3d5a00286be40c15bad69ea1ac63a9424a1ff44f20a548a7686f7a" + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.2.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libmaxminddb-1.2.0-10.el8.x86_64.rpm", + "checksum": "sha256:995a5401cd86404d14d08c0aeafeaa8da3f540b1806f9d0e233d75dec9e45c74" + }, + { + "name": "libxcb", + "epoch": 0, + "version": "1.13.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxcb-1.13.1-1.el8.x86_64.rpm", + "checksum": "sha256:39e6bc1e8101e536066554702d5d6b25f8cad359fb5e02ac598cfdad56eafb6d" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxkbcommon-0.9.1-1.el8.x86_64.rpm", + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/memstrack-0.1.8-1.el8.x86_64.rpm", + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pinentry-1.1.0-2.el8.x86_64.rpm", + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "name": "pixman", + "epoch": 0, + "version": "0.38.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pixman-0.38.4-1.el8.x86_64.rpm", + "checksum": "sha256:77edc93b5e83aed2527a58760033fe857c6c8f7807e2169865015acbbe926376" + }, + { + "name": "python3-babel", + "epoch": 0, + "version": "2.5.1", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-babel-2.5.1-5.el8.noarch.rpm", + "checksum": "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28" + }, + { + "name": "python3-cairo", + "epoch": 0, + "version": "1.16.3", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-cairo-1.16.3-6.el8.x86_64.rpm", + "checksum": "sha256:8caac6d04fc98a82d17af56a8faacd1e1a019112ba207388fb82ffdd6df54301" + }, + { + "name": "python3-dnf-plugin-spacewalk", + "epoch": 0, + "version": "2.8.5", + "release": "11.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43" + }, + { + "name": "python3-gobject", + "epoch": 0, + "version": "3.28.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-gobject-3.28.3-2.el8.x86_64.rpm", + "checksum": "sha256:4229196b5ea88c1133d5509a2ec326093a2c7ac5566ca4abb55c3d6fab47130a" + }, + { + "name": "python3-hwdata", + "epoch": 0, + "version": "2.3.6", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-hwdata-2.3.6-3.el8.noarch.rpm", + "checksum": "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362" + }, + { + "name": "python3-jinja2", + "epoch": 0, + "version": "2.10.1", + "release": "2.el8_0", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jinja2-2.10.1-2.el8_0.noarch.rpm", + "checksum": "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64" + }, + { + "name": "python3-jsonpatch", + "epoch": 0, + "version": "1.21", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonpatch-1.21-2.el8.noarch.rpm", + "checksum": "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835" + }, + { + "name": "python3-jsonpointer", + "epoch": 0, + "version": "1.10", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonpointer-1.10-11.el8.noarch.rpm", + "checksum": "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf" + }, + { + "name": "python3-jsonschema", + "epoch": 0, + "version": "2.6.0", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonschema-2.6.0-4.el8.noarch.rpm", + "checksum": "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b" + }, + { + "name": "python3-markupsafe", + "epoch": 0, + "version": "0.23", + "release": "19.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-markupsafe-0.23-19.el8.x86_64.rpm", + "checksum": "sha256:e868499743c399baa6463fa64a2534a7d32f8e1cca7b1b47ec00c60b34250bfe" + }, + { + "name": "python3-netifaces", + "epoch": 0, + "version": "0.10.6", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-netifaces-0.10.6-4.el8.x86_64.rpm", + "checksum": "sha256:3edf7d29e530e6568416d4455e9fbaa511aba236c603da9928e689fae77b9874" + }, + { + "name": "python3-newt", + "epoch": 0, + "version": "0.52.20", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-newt-0.52.20-11.el8.x86_64.rpm", + "checksum": "sha256:b4e89276818abec218c909ca961db9bb2e09b1fc609ff280e6c05227143fa24d" + }, + { + "name": "python3-prettytable", + "epoch": 0, + "version": "0.7.2", + "release": "14.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-prettytable-0.7.2-14.el8.noarch.rpm", + "checksum": "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55" + }, + { + "name": "python3-pyOpenSSL", + "epoch": 0, + "version": "18.0.0", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pyOpenSSL-18.0.0-1.el8.noarch.rpm", + "checksum": "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21" + }, + { + "name": "python3-pydbus", + "epoch": 0, + "version": "0.6.0", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pydbus-0.6.0-5.el8.noarch.rpm", + "checksum": "sha256:fd75c594f871a3353d326833e630ea1d28e5f446f796b836dc628f8c9c039f88" + }, + { + "name": "python3-pyserial", + "epoch": 0, + "version": "3.1.1", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pyserial-3.1.1-8.el8.noarch.rpm", + "checksum": "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414" + }, + { + "name": "python3-pytz", + "epoch": 0, + "version": "2017.2", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pytz-2017.2-9.el8.noarch.rpm", + "checksum": "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca" + }, + { + "name": "python3-rhn-check", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:15462b748aef3c565bcf4f849c1a21c1389a8ef5e7dae94e64718865a67d46a9" + }, + { + "name": "python3-rhn-client-tools", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:bed436b103161f7d8f61b617c84f3a7b5509f1d00c8425900a88c222b1331b31" + }, + { + "name": "python3-rhn-setup", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:ec26615d079ce89316352f813279f74a44871fa8c26fed8f369b9fe847aa5121" + }, + { + "name": "python3-rhnlib", + "epoch": 0, + "version": "2.8.6", + "release": "8.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a" + }, + { + "name": "python3-systemd", + "epoch": 0, + "version": "234", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-systemd-234-8.el8.x86_64.rpm", + "checksum": "sha256:534bbf990d0f0537715561c818c2b68f10e6ba0cc1252a32a0696f1e22fde1e3" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-unbound-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "name": "qemu-guest-agent", + "epoch": 15, + "version": "4.2.0", + "release": "29.module+el8.3.0+7212+401047e6", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/qemu-guest-agent-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64.rpm", + "checksum": "sha256:3d1dfe2e487e06efda133298a0fd0913f95b61c4373332db110b496aaadc8f05" + }, + { + "name": "rhn-check", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:d81c180c682e6014a0da09aaa144492e8cb03c1d61022513ba6db5bd3740f921" + }, + { + "name": "rhn-client-tools", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:d80219a299035688091aa230b1c9169143c00c141c4f1ad8e75d176d22cc1cd0" + }, + { + "name": "rhn-setup", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:4931d78c496eaaa8e6b6bbec2b4750da52b9fc7e989ae89b7c1fa2a6f40ff7fa" + }, + { + "name": "rhnlib", + "epoch": 0, + "version": "2.8.6", + "release": "8.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42" + }, + { + "name": "rhnsd", + "epoch": 0, + "version": "5.0.35", + "release": "3.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:00cc9cd4517cbb4ad99dbce63b40b700699523550cd7f8202948af28dbe2cd9e" + }, + { + "name": "rsyslog", + "epoch": 0, + "version": "8.1911.0", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rsyslog-8.1911.0-6.el8.x86_64.rpm", + "checksum": "sha256:5ef47eb6a042a13c902764907692c1068eb0f69153b47bc85792bef74bfa852b" + }, + { + "name": "setroubleshoot-plugins", + "epoch": 0, + "version": "3.3.12", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/setroubleshoot-plugins-3.3.12-1.el8.noarch.rpm", + "checksum": "sha256:3459ac9ecad925e511502cff687ceb77f52f391303793f7670794a5c0b040f3d" + }, + { + "name": "setroubleshoot-server", + "epoch": 0, + "version": "3.3.23", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/setroubleshoot-server-3.3.23-1.el8.x86_64.rpm", + "checksum": "sha256:3babb3a2d4bdffe51f8453a1a4151688a76b48327d37464e11f7c6529c888b30" + }, + { + "name": "sscg", + "epoch": 0, + "version": "2.3.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/sscg-2.3.3-14.el8.x86_64.rpm", + "checksum": "sha256:211d74a081c06399001bf09c59e941b444f3175d2900a02775a232f4c83d3fb1" + }, + { + "name": "tcpdump", + "epoch": 14, + "version": "4.9.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/tcpdump-4.9.3-1.el8.x86_64.rpm", + "checksum": "sha256:648e239be605f6cdc5b9cc63e316bcad906a4d0df605e7f6188009b0c48fc6d1" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/unbound-libs-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "checksums": { + "0": "sha256:cc014fee6e92f8a81f152d72a43137a3270189ef229c738381b98bc0c88443f8", + "1": "sha256:2b881b017a4c721893038307bf4f0269afe55c35114a477be226f53a2f585545" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=0bd700f8-090f-4556-b797-b340297ea1bd console=ttyS0 console=ttyS0,115200n8 no_timer_check crashkernel=auto net.ifnames=0 debug" + }, + "bootloader": "grub", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "id": "rhel-20200625210904-4.18.0-221.el8.x86_64", + "initrd": "/boot/initramfs-4.18.0-221.el8.x86_64.img $tuned_initrd", + "linux": "/boot/vmlinuz-4.18.0-221.el8.x86_64", + "options": "$kernelopts $tuned_params", + "title": "Red Hat Enterprise Linux (4.18.0-221.el8.x86_64) 8.3 (Ootpa)", + "version": "4.18.0-221.el8.x86_64" + } + ], + "fstab": [ + [ + "UUID=0bd700f8-090f-4556-b797-b340297ea1bd", + "/", + "xfs", + "defaults", + "0", + "0" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:989:", + "cockpit-ws:x:991:", + "cockpit-wsinstance:x:990:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "group1:x:1030:user2", + "group2:x:1050:", + "input:x:999:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "polkitd:x:996:", + "render:x:998:", + "rngd:x:988:", + "root:x:0:", + "rpc:x:32:", + "rpcuser:x:29:", + "setroubleshoot:x:992:", + "ssh_keys:x:995:", + "sshd:x:74:", + "sssd:x:993:", + "sys:x:3:", + "systemd-coredump:x:997:", + "systemd-journal:x:190:", + "systemd-resolve:x:193:", + "tape:x:33:", + "tcpdump:x:72:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:994:", + "user1:x:1000:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "qcow2", + "os-release": { + "ANSI_COLOR": "0;31", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:redhat:enterprise_linux:8.3:beta", + "HOME_URL": "https://www.redhat.com/", + "ID": "rhel", + "ID_LIKE": "fedora", + "NAME": "Red Hat Enterprise Linux", + "PLATFORM_ID": "platform:el8", + "PRETTY_NAME": "Red Hat Enterprise Linux 8.3 Beta (Ootpa)", + "REDHAT_BUGZILLA_PRODUCT": "Red Hat Enterprise Linux 8", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "8.3", + "REDHAT_SUPPORT_PRODUCT": "Red Hat Enterprise Linux", + "REDHAT_SUPPORT_PRODUCT_VERSION": "8.3 Beta", + "VERSION": "8.3 (Ootpa)", + "VERSION_ID": "8.3" + }, + "packages": [ + "NetworkManager-1.26.0-0.2.el8.x86_64", + "NetworkManager-libnm-1.26.0-0.2.el8.x86_64", + "NetworkManager-team-1.26.0-0.2.el8.x86_64", + "NetworkManager-tui-1.26.0-0.2.el8.x86_64", + "PackageKit-1.1.12-6.el8.x86_64", + "PackageKit-glib-1.1.12-6.el8.x86_64", + "abattis-cantarell-fonts-0.0.25-4.el8.noarch", + "acl-2.2.53-1.el8.x86_64", + "audit-3.0-0.17.20191104git1c2f876.el8.x86_64", + "audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64", + "authselect-1.2.1-2.el8.x86_64", + "authselect-libs-1.2.1-2.el8.x86_64", + "basesystem-11-5.el8.noarch", + "bash-4.4.19-12.el8.x86_64", + "bind-export-libs-9.11.20-3.el8.x86_64", + "brotli-1.0.6-2.el8.x86_64", + "bzip2-1.0.6-26.el8.x86_64", + "bzip2-libs-1.0.6-26.el8.x86_64", + "c-ares-1.13.0-5.el8.x86_64", + "ca-certificates-2019.2.32-80.0.el8_1.noarch", + "cairo-1.15.12-3.el8.x86_64", + "cairo-gobject-1.15.12-3.el8.x86_64", + "checkpolicy-2.9-1.el8.x86_64", + "chkconfig-1.13-2.el8.x86_64", + "chrony-3.5-1.el8.x86_64", + "cloud-init-19.4-7.el8.noarch", + "cloud-utils-growpart-0.31-1.el8.noarch", + "cockpit-bridge-222.1-1.el8.x86_64", + "cockpit-system-222.1-1.el8.noarch", + "cockpit-ws-222.1-1.el8.x86_64", + "coreutils-8.30-8.el8.x86_64", + "coreutils-common-8.30-8.el8.x86_64", + "cpio-2.12-8.el8.x86_64", + "cracklib-2.9.6-15.el8.x86_64", + "cracklib-dicts-2.9.6-15.el8.x86_64", + "cronie-1.5.2-4.el8.x86_64", + "cronie-anacron-1.5.2-4.el8.x86_64", + "crontabs-1.11-16.20150630git.el8.noarch", + "crypto-policies-20200610-1.git0ac8b1f.el8.noarch", + "crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch", + "cryptsetup-libs-2.3.3-1.el8.x86_64", + "curl-7.61.1-12.el8.x86_64", + "cyrus-sasl-lib-2.1.27-5.el8.x86_64", + "dbus-1.12.8-11.el8.x86_64", + "dbus-common-1.12.8-11.el8.noarch", + "dbus-daemon-1.12.8-11.el8.x86_64", + "dbus-glib-0.110-2.el8.x86_64", + "dbus-libs-1.12.8-11.el8.x86_64", + "dbus-tools-1.12.8-11.el8.x86_64", + "dejavu-fonts-common-2.35-6.el8.noarch", + "dejavu-sans-mono-fonts-2.35-6.el8.noarch", + "device-mapper-1.02.171-3.el8.x86_64", + "device-mapper-libs-1.02.171-3.el8.x86_64", + "dhcp-client-4.3.6-41.el8.x86_64", + "dhcp-common-4.3.6-41.el8.noarch", + "dhcp-libs-4.3.6-41.el8.x86_64", + "diffutils-3.6-6.el8.x86_64", + "dmidecode-3.2-6.el8.x86_64", + "dnf-4.2.23-2.el8.noarch", + "dnf-data-4.2.23-2.el8.noarch", + "dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch", + "dnf-plugin-subscription-manager-1.27.9-1.el8.x86_64", + "dnf-plugins-core-4.0.17-2.el8.noarch", + "dracut-049-89.git20200625.el8.x86_64", + "dracut-config-generic-049-89.git20200625.el8.x86_64", + "dracut-network-049-89.git20200625.el8.x86_64", + "dracut-squash-049-89.git20200625.el8.x86_64", + "e2fsprogs-1.45.6-1.el8.x86_64", + "e2fsprogs-libs-1.45.6-1.el8.x86_64", + "elfutils-debuginfod-client-0.180-1.el8.x86_64", + "elfutils-default-yama-scope-0.180-1.el8.noarch", + "elfutils-libelf-0.180-1.el8.x86_64", + "elfutils-libs-0.180-1.el8.x86_64", + "ethtool-5.0-2.el8.x86_64", + "expat-2.2.5-4.el8.x86_64", + "file-5.33-16.el8.x86_64", + "file-libs-5.33-16.el8.x86_64", + "filesystem-3.8-3.el8.x86_64", + "findutils-4.6.0-20.el8.x86_64", + "fontconfig-2.13.1-3.el8.x86_64", + "fontpackages-filesystem-1.44-22.el8.noarch", + "freetype-2.9.1-4.el8.x86_64", + "fuse-libs-2.9.7-12.el8.x86_64", + "gawk-4.2.1-1.el8.x86_64", + "gdbm-1.18-1.el8.x86_64", + "gdbm-libs-1.18-1.el8.x86_64", + "gdk-pixbuf2-2.36.12-5.el8.x86_64", + "geolite2-city-20180605-1.el8.noarch", + "geolite2-country-20180605-1.el8.noarch", + "gettext-0.19.8.1-17.el8.x86_64", + "gettext-libs-0.19.8.1-17.el8.x86_64", + "glib-networking-2.56.1-1.1.el8.x86_64", + "glib2-2.56.4-8.el8.x86_64", + "glibc-2.28-127.el8.x86_64", + "glibc-all-langpacks-2.28-127.el8.x86_64", + "glibc-common-2.28-127.el8.x86_64", + "gmp-6.1.2-10.el8.x86_64", + "gnupg2-2.2.20-2.el8.x86_64", + "gnupg2-smime-2.2.20-2.el8.x86_64", + "gnutls-3.6.14-3.el8.x86_64", + "gobject-introspection-1.56.1-1.el8.x86_64", + "gpg-pubkey-d4082792-5b32db75", + "gpg-pubkey-fd431d51-4ae0493b", + "gpgme-1.13.1-3.el8.x86_64", + "grep-3.1-6.el8.x86_64", + "groff-base-1.22.3-18.el8.x86_64", + "grub2-common-2.02-84.el8.noarch", + "grub2-pc-2.02-84.el8.x86_64", + "grub2-pc-modules-2.02-84.el8.noarch", + "grub2-tools-2.02-84.el8.x86_64", + "grub2-tools-extra-2.02-84.el8.x86_64", + "grub2-tools-minimal-2.02-84.el8.x86_64", + "grubby-8.40-41.el8.x86_64", + "gsettings-desktop-schemas-3.32.0-5.el8.x86_64", + "gssproxy-0.8.0-16.el8.x86_64", + "gzip-1.9-9.el8.x86_64", + "hardlink-1.3-6.el8.x86_64", + "hdparm-9.54-2.el8.x86_64", + "hostname-3.20-6.el8.x86_64", + "hwdata-0.314-8.5.el8.noarch", + "ima-evm-utils-1.1-5.el8.x86_64", + "info-6.5-6.el8.x86_64", + "initscripts-10.00.8-1.el8.x86_64", + "insights-client-3.0.14-2.el8.noarch", + "ipcalc-0.2.4-4.el8.x86_64", + "iproute-5.3.0-5.el8.x86_64", + "iptables-libs-1.8.4-14.el8.x86_64", + "iputils-20180629-2.el8.x86_64", + "irqbalance-1.4.0-4.el8.x86_64", + "jansson-2.11-3.el8.x86_64", + "json-c-0.13.1-0.2.el8.x86_64", + "json-glib-1.4.4-1.el8.x86_64", + "kbd-2.0.4-10.el8.x86_64", + "kbd-legacy-2.0.4-10.el8.noarch", + "kbd-misc-2.0.4-10.el8.noarch", + "kernel-4.18.0-221.el8.x86_64", + "kernel-core-4.18.0-221.el8.x86_64", + "kernel-modules-4.18.0-221.el8.x86_64", + "kernel-tools-4.18.0-221.el8.x86_64", + "kernel-tools-libs-4.18.0-221.el8.x86_64", + "kexec-tools-2.0.20-29.el8.x86_64", + "keyutils-1.5.10-6.el8.x86_64", + "keyutils-libs-1.5.10-6.el8.x86_64", + "kmod-25-16.el8.x86_64", + "kmod-libs-25-16.el8.x86_64", + "kpartx-0.8.4-2.el8.x86_64", + "krb5-libs-1.18.2-3.el8.x86_64", + "less-530-1.el8.x86_64", + "libX11-1.6.8-3.el8.x86_64", + "libX11-common-1.6.8-3.el8.noarch", + "libXau-1.0.9-3.el8.x86_64", + "libXext-1.3.4-1.el8.x86_64", + "libXrender-0.9.10-7.el8.x86_64", + "libacl-2.2.53-1.el8.x86_64", + "libappstream-glib-0.7.14-3.el8.x86_64", + "libarchive-3.3.2-9.el8.x86_64", + "libassuan-2.5.1-3.el8.x86_64", + "libattr-2.4.48-3.el8.x86_64", + "libbasicobjects-0.1.1-39.el8.x86_64", + "libblkid-2.32.1-24.el8.x86_64", + "libcap-2.26-4.el8.x86_64", + "libcap-ng-0.7.9-5.el8.x86_64", + "libcollection-0.7.0-39.el8.x86_64", + "libcom_err-1.45.6-1.el8.x86_64", + "libcomps-0.1.11-4.el8.x86_64", + "libcroco-0.6.12-4.el8.x86_64", + "libcurl-7.61.1-12.el8.x86_64", + "libdaemon-0.14-15.el8.x86_64", + "libdb-5.3.28-39.el8.x86_64", + "libdb-utils-5.3.28-39.el8.x86_64", + "libdhash-0.5.0-39.el8.x86_64", + "libdnf-0.48.0-2.el8.x86_64", + "libedit-3.1-23.20170329cvs.el8.x86_64", + "libestr-0.1.10-1.el8.x86_64", + "libevent-2.1.8-5.el8.x86_64", + "libfastjson-0.99.8-2.el8.x86_64", + "libfdisk-2.32.1-24.el8.x86_64", + "libffi-3.1-22.el8.x86_64", + "libgcc-8.3.1-5.1.el8.x86_64", + "libgcrypt-1.8.5-4.el8.x86_64", + "libgomp-8.3.1-5.1.el8.x86_64", + "libgpg-error-1.31-1.el8.x86_64", + "libgudev-232-4.el8.x86_64", + "libidn2-2.2.0-1.el8.x86_64", + "libini_config-1.3.1-39.el8.x86_64", + "libkcapi-1.2.0-2.el8.x86_64", + "libkcapi-hmaccalc-1.2.0-2.el8.x86_64", + "libksba-1.3.5-7.el8.x86_64", + "libldb-2.1.3-2.el8.x86_64", + "libmaxminddb-1.2.0-10.el8.x86_64", + "libmetalink-0.1.3-7.el8.x86_64", + "libmnl-1.0.4-6.el8.x86_64", + "libmodman-2.0.1-17.el8.x86_64", + "libmodulemd-2.9.4-2.el8.x86_64", + "libmount-2.32.1-24.el8.x86_64", + "libndp-1.7-3.el8.x86_64", + "libnfsidmap-2.3.3-35.el8.x86_64", + "libnghttp2-1.33.0-3.el8_2.1.x86_64", + "libnl3-3.5.0-1.el8.x86_64", + "libnl3-cli-3.5.0-1.el8.x86_64", + "libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64", + "libpath_utils-0.2.1-39.el8.x86_64", + "libpcap-1.9.1-4.el8.x86_64", + "libpipeline-1.5.0-2.el8.x86_64", + "libpng-1.6.34-5.el8.x86_64", + "libproxy-0.4.15-5.2.el8.x86_64", + "libpsl-0.20.2-6.el8.x86_64", + "libpwquality-1.4.0-9.el8.x86_64", + "libref_array-0.1.5-39.el8.x86_64", + "librepo-1.12.0-1.el8.x86_64", + "libreport-filesystem-2.9.5-11.el8.x86_64", + "librhsm-0.0.3-3.el8.x86_64", + "libseccomp-2.4.3-1.el8.x86_64", + "libsecret-0.18.6-1.el8.x86_64", + "libselinux-2.9-3.el8.x86_64", + "libselinux-utils-2.9-3.el8.x86_64", + "libsemanage-2.9-3.el8.x86_64", + "libsepol-2.9-1.el8.x86_64", + "libsigsegv-2.11-5.el8.x86_64", + "libsmartcols-2.32.1-24.el8.x86_64", + "libsolv-0.7.11-1.el8.x86_64", + "libsoup-2.62.3-1.el8.x86_64", + "libss-1.45.6-1.el8.x86_64", + "libssh-0.9.4-2.el8.x86_64", + "libssh-config-0.9.4-2.el8.noarch", + "libsss_autofs-2.3.0-2.el8.x86_64", + "libsss_certmap-2.3.0-2.el8.x86_64", + "libsss_idmap-2.3.0-2.el8.x86_64", + "libsss_nss_idmap-2.3.0-2.el8.x86_64", + "libsss_sudo-2.3.0-2.el8.x86_64", + "libstdc++-8.3.1-5.1.el8.x86_64", + "libstemmer-0-10.585svn.el8.x86_64", + "libsysfs-2.1.0-24.el8.x86_64", + "libtalloc-2.3.1-2.el8.x86_64", + "libtasn1-4.13-3.el8.x86_64", + "libtdb-1.4.3-1.el8.x86_64", + "libteam-1.29-5.el8.x86_64", + "libtevent-0.10.2-2.el8.x86_64", + "libtirpc-1.1.4-4.el8.x86_64", + "libunistring-0.9.9-3.el8.x86_64", + "libusbx-1.0.23-3.el8.x86_64", + "libuser-0.62-23.el8.x86_64", + "libutempter-1.1.6-14.el8.x86_64", + "libuuid-2.32.1-24.el8.x86_64", + "libverto-0.3.0-5.el8.x86_64", + "libverto-libevent-0.3.0-5.el8.x86_64", + "libxcb-1.13.1-1.el8.x86_64", + "libxcrypt-4.1.1-4.el8.x86_64", + "libxkbcommon-0.9.1-1.el8.x86_64", + "libxml2-2.9.7-8.el8.x86_64", + "libyaml-0.1.7-5.el8.x86_64", + "libzstd-1.4.4-1.el8.x86_64", + "linux-firmware-20200619-99.git3890db36.el8.noarch", + "logrotate-3.14.0-4.el8.x86_64", + "lshw-B.02.19.2-2.el8.x86_64", + "lsscsi-0.30-1.el8.x86_64", + "lua-libs-5.3.4-11.el8.x86_64", + "lz4-libs-1.8.3-2.el8.x86_64", + "lzo-2.08-14.el8.x86_64", + "man-db-2.7.6.1-17.el8.x86_64", + "memstrack-0.1.8-1.el8.x86_64", + "microcode_ctl-20200609-2.el8.x86_64", + "mozjs60-60.9.0-4.el8.x86_64", + "mpfr-3.1.6-1.el8.x86_64", + "ncurses-6.1-7.20180224.el8.x86_64", + "ncurses-base-6.1-7.20180224.el8.noarch", + "ncurses-libs-6.1-7.20180224.el8.x86_64", + "net-tools-2.0-0.52.20160912git.el8.x86_64", + "nettle-3.4.1-2.el8.x86_64", + "newt-0.52.20-11.el8.x86_64", + "nfs-utils-2.3.3-35.el8.x86_64", + "npth-1.5-4.el8.x86_64", + "numactl-libs-2.0.12-11.el8.x86_64", + "openldap-2.4.46-15.el8.x86_64", + "openssh-8.0p1-5.el8.x86_64", + "openssh-clients-8.0p1-5.el8.x86_64", + "openssh-server-8.0p1-5.el8.x86_64", + "openssl-1.1.1g-9.el8.x86_64", + "openssl-libs-1.1.1g-9.el8.x86_64", + "openssl-pkcs11-0.4.10-2.el8.x86_64", + "os-prober-1.74-6.el8.x86_64", + "p11-kit-0.23.14-5.el8_0.x86_64", + "p11-kit-trust-0.23.14-5.el8_0.x86_64", + "pam-1.3.1-11.el8.x86_64", + "parted-3.2-38.el8.x86_64", + "passwd-0.80-3.el8.x86_64", + "pciutils-3.6.4-2.el8.x86_64", + "pciutils-libs-3.6.4-2.el8.x86_64", + "pcre-8.42-4.el8.x86_64", + "pcre2-10.32-2.el8.x86_64", + "pigz-2.4-4.el8.x86_64", + "pinentry-1.1.0-2.el8.x86_64", + "pixman-0.38.4-1.el8.x86_64", + "platform-python-3.6.8-30.el8.x86_64", + "platform-python-pip-9.0.3-17.el8.noarch", + "platform-python-setuptools-39.2.0-6.el8.noarch", + "policycoreutils-2.9-9.el8.x86_64", + "policycoreutils-python-utils-2.9-9.el8.noarch", + "polkit-0.115-11.el8.x86_64", + "polkit-libs-0.115-11.el8.x86_64", + "polkit-pkla-compat-0.1-12.el8.x86_64", + "popt-1.16-14.el8.x86_64", + "prefixdevname-0.1.0-6.el8.x86_64", + "procps-ng-3.3.15-2.el8.x86_64", + "publicsuffix-list-dafsa-20180723-1.el8.noarch", + "python3-asn1crypto-0.24.0-3.el8.noarch", + "python3-audit-3.0-0.17.20191104git1c2f876.el8.x86_64", + "python3-babel-2.5.1-5.el8.noarch", + "python3-cairo-1.16.3-6.el8.x86_64", + "python3-cffi-1.11.5-5.el8.x86_64", + "python3-chardet-3.0.4-7.el8.noarch", + "python3-configobj-5.0.6-11.el8.noarch", + "python3-cryptography-2.3-3.el8.x86_64", + "python3-dateutil-2.6.1-6.el8.noarch", + "python3-dbus-1.2.4-15.el8.x86_64", + "python3-decorator-4.2.1-2.el8.noarch", + "python3-dmidecode-3.12.2-15.el8.x86_64", + "python3-dnf-4.2.23-2.el8.noarch", + "python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch", + "python3-dnf-plugins-core-4.0.17-2.el8.noarch", + "python3-ethtool-0.14-3.el8.x86_64", + "python3-gobject-3.28.3-2.el8.x86_64", + "python3-gobject-base-3.28.3-2.el8.x86_64", + "python3-gpg-1.13.1-3.el8.x86_64", + "python3-hawkey-0.48.0-2.el8.x86_64", + "python3-hwdata-2.3.6-3.el8.noarch", + "python3-idna-2.5-5.el8.noarch", + "python3-iniparse-0.4-31.el8.noarch", + "python3-inotify-0.9.6-13.el8.noarch", + "python3-jinja2-2.10.1-2.el8_0.noarch", + "python3-jsonpatch-1.21-2.el8.noarch", + "python3-jsonpointer-1.10-11.el8.noarch", + "python3-jsonschema-2.6.0-4.el8.noarch", + "python3-jwt-1.6.1-2.el8.noarch", + "python3-libcomps-0.1.11-4.el8.x86_64", + "python3-libdnf-0.48.0-2.el8.x86_64", + "python3-librepo-1.12.0-1.el8.x86_64", + "python3-libs-3.6.8-30.el8.x86_64", + "python3-libselinux-2.9-3.el8.x86_64", + "python3-libsemanage-2.9-3.el8.x86_64", + "python3-libxml2-2.9.7-8.el8.x86_64", + "python3-linux-procfs-0.6.2-2.el8.noarch", + "python3-magic-5.33-16.el8.noarch", + "python3-markupsafe-0.23-19.el8.x86_64", + "python3-netifaces-0.10.6-4.el8.x86_64", + "python3-newt-0.52.20-11.el8.x86_64", + "python3-oauthlib-2.1.0-1.el8.noarch", + "python3-perf-4.18.0-221.el8.x86_64", + "python3-pip-wheel-9.0.3-17.el8.noarch", + "python3-ply-3.9-8.el8.noarch", + "python3-policycoreutils-2.9-9.el8.noarch", + "python3-prettytable-0.7.2-14.el8.noarch", + "python3-pyOpenSSL-18.0.0-1.el8.noarch", + "python3-pycparser-2.14-14.el8.noarch", + "python3-pydbus-0.6.0-5.el8.noarch", + "python3-pyserial-3.1.1-8.el8.noarch", + "python3-pysocks-1.6.8-3.el8.noarch", + "python3-pytz-2017.2-9.el8.noarch", + "python3-pyudev-0.21.0-7.el8.noarch", + "python3-pyyaml-3.12-12.el8.x86_64", + "python3-requests-2.20.0-2.1.el8_1.noarch", + "python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch", + "python3-rpm-4.14.3-4.el8.x86_64", + "python3-schedutils-0.6-6.el8.x86_64", + "python3-setools-4.3.0-1.el8.x86_64", + "python3-setuptools-wheel-39.2.0-6.el8.noarch", + "python3-six-1.11.0-8.el8.noarch", + "python3-slip-0.6.4-11.el8.noarch", + "python3-slip-dbus-0.6.4-11.el8.noarch", + "python3-subscription-manager-rhsm-1.27.9-1.el8.x86_64", + "python3-syspurpose-1.27.9-1.el8.x86_64", + "python3-systemd-234-8.el8.x86_64", + "python3-unbound-1.7.3-14.el8.x86_64", + "python3-urllib3-1.24.2-4.el8.noarch", + "qemu-guest-agent-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64", + "quota-4.04-10.el8.x86_64", + "quota-nls-4.04-10.el8.noarch", + "readline-7.0-10.el8.x86_64", + "redhat-logos-81.1-1.el8.x86_64", + "redhat-release-8.3-0.2.el8.x86_64", + "redhat-release-eula-8.3-0.2.el8.x86_64", + "rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch", + "rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.x86_64", + "rhsm-icons-1.27.9-1.el8.noarch", + "rng-tools-6.8-3.el8.x86_64", + "rootfiles-8.1-22.el8.noarch", + "rpcbind-1.2.5-7.el8.x86_64", + "rpm-4.14.3-4.el8.x86_64", + "rpm-build-libs-4.14.3-4.el8.x86_64", + "rpm-libs-4.14.3-4.el8.x86_64", + "rpm-plugin-selinux-4.14.3-4.el8.x86_64", + "rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64", + "rsync-3.1.3-8.el8.x86_64", + "rsyslog-8.1911.0-6.el8.x86_64", + "sed-4.5-2.el8.x86_64", + "selinux-policy-3.14.3-48.el8.noarch", + "selinux-policy-targeted-3.14.3-48.el8.noarch", + "setroubleshoot-plugins-3.3.12-1.el8.noarch", + "setroubleshoot-server-3.3.23-1.el8.x86_64", + "setup-2.12.2-6.el8.noarch", + "sg3_utils-1.44-5.el8.x86_64", + "sg3_utils-libs-1.44-5.el8.x86_64", + "shadow-utils-4.6-10.el8.x86_64", + "shared-mime-info-1.9-3.el8.x86_64", + "slang-2.3.2-3.el8.x86_64", + "snappy-1.1.7-5.el8.x86_64", + "sos-3.9.1-4.el8.noarch", + "sqlite-libs-3.26.0-10.el8.x86_64", + "squashfs-tools-4.3-19.el8.x86_64", + "sscg-2.3.3-14.el8.x86_64", + "sssd-client-2.3.0-2.el8.x86_64", + "sssd-common-2.3.0-2.el8.x86_64", + "sssd-kcm-2.3.0-2.el8.x86_64", + "sssd-nfs-idmap-2.3.0-2.el8.x86_64", + "subscription-manager-1.27.9-1.el8.x86_64", + "subscription-manager-cockpit-1.27.9-1.el8.noarch", + "subscription-manager-rhsm-certificates-1.27.9-1.el8.x86_64", + "sudo-1.8.29-6.el8.x86_64", + "systemd-239-36.el8.x86_64", + "systemd-libs-239-36.el8.x86_64", + "systemd-pam-239-36.el8.x86_64", + "systemd-udev-239-36.el8.x86_64", + "tar-1.30-5.el8.x86_64", + "tcpdump-4.9.3-1.el8.x86_64", + "teamd-1.29-5.el8.x86_64", + "trousers-0.3.14-4.el8.x86_64", + "trousers-lib-0.3.14-4.el8.x86_64", + "tuned-2.14.0-2.el8.noarch", + "tzdata-2020a-1.el8.noarch", + "unbound-libs-1.7.3-14.el8.x86_64", + "usermode-1.113-1.el8.x86_64", + "util-linux-2.32.1-24.el8.x86_64", + "vim-minimal-8.0.1763-15.el8.x86_64", + "virt-what-1.18-6.el8.x86_64", + "which-2.21-12.el8.x86_64", + "xfsprogs-5.0.0-4.el8.x86_64", + "xkeyboard-config-2.28-1.el8.noarch", + "xz-5.2.4-3.el8.x86_64", + "xz-libs-5.2.4-3.el8.x86_64", + "yum-4.2.23-2.el8.noarch", + "yum-utils-4.0.17-2.el8.noarch", + "zlib-1.2.11-15.el8.x86_64" + ], + "partition-table": "dos", + "partition-table-id": "0x14fc63d2", + "partitions": [ + { + "bootable": true, + "fstype": "xfs", + "label": null, + "partuuid": "14fc63d2-01", + "size": 4293918720, + "start": 1048576, + "type": "83", + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:992:989::/var/lib/chrony:/sbin/nologin", + "cockpit-ws:x:994:991:User for cockpit web service:/nonexisting:/sbin/nologin", + "cockpit-wsinstance:x:993:990:User for cockpit-ws instances:/nonexisting:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "polkitd:x:998:996:User for polkitd:/:/sbin/nologin", + "rngd:x:991:988:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin", + "root:x:0:0:root:/root:/bin/bash", + "rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin", + "rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin", + "setroubleshoot:x:995:992::/var/lib/setroubleshoot:/sbin/nologin", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sssd:x:996:993:User for sssd:/:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "tcpdump:x:72:72::/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin", + "user1:x:1000:1000::/home/user1:/bin/bash", + "user2:x:1020:1050:description 2:/home/home2:/bin/sh" + ], + "rpm-verify": { + "changed": { + "/etc/chrony.conf": "S.5....T.", + "/etc/machine-id": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/proc": ".M.......", + "/sys": ".M.......", + "/var/log/lastlog": ".M....G..", + "/var/spool/anacron/cron.daily": ".M.......", + "/var/spool/anacron/cron.monthly": ".M.......", + "/var/spool/anacron/cron.weekly": ".M......." + }, + "missing": [ + "/etc/systemd/system/dbus-org.freedesktop.resolve1.service" + ] + }, + "services-disabled": [ + "arp-ethers.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "cockpit.socket", + "console-getty.service", + "cpupower.service", + "ctrl-alt-del.target", + "debug-shell.service", + "exit.target", + "fstrim.timer", + "gssproxy.service", + "halt.target", + "insights-client-results.path", + "insights-client.timer", + "kexec.target", + "nfs-blkmap.service", + "nfs-server.service", + "poweroff.target", + "qemu-guest-agent.service", + "rdisc.service", + "reboot.target", + "remote-cryptsetup.target", + "rhnsd.service", + "rhsm-facts.service", + "rhsm.service", + "rngd-wake-threshold.service", + "runlevel0.target", + "runlevel6.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-resolved.service", + "tcsd.service", + "tmp.mount" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "cloud-init.service", + "crond.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dnf-makecache.timer", + "getty@.service", + "import-state.service", + "irqbalance.service", + "kdump.service", + "loadmodules.service", + "microcode.service", + "nfs-client.target", + "nfs-convert.service", + "nis-domainname.service", + "remote-fs.target", + "rhsmcertd.service", + "rngd.service", + "rpcbind.service", + "rpcbind.socket", + "rsyslog.service", + "selinux-autorelabel-mark.service", + "sshd.service", + "sshd.socket", + "sssd-kcm.socket", + "sssd.service", + "syslog.service", + "tuned.service", + "unbound-anchor.timer" + ], + "timezone": "London" + } +} \ No newline at end of file diff --git a/test/cases/rhel_8-x86_64-rhel_edge_commit-boot.json b/test/cases/rhel_8-x86_64-rhel_edge_commit-boot.json new file mode 100644 index 0000000..220e365 --- /dev/null +++ b/test/cases/rhel_8-x86_64-rhel_edge_commit-boot.json @@ -0,0 +1,9459 @@ +{ + "compose-request": { + "distro": "rhel-8", + "arch": "x86_64", + "image-type": "rhel-edge-commit", + "repositories": [ + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + }, + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + } + ], + "filename": "commit.tar", + "blueprint": {} + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:0027700684ce09927aded1d2c5bb84028529141a6b418897bde37d4af348f8bb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:0129696c208f60326723c650295167b0600791ccb2e9c3d446c4caf9adecb3d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-3.5.0-1.el8.x86_64.rpm" + }, + "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libyaml-0.1.7-5.el8.x86_64.rpm" + }, + "sha256:0391105afa53c9503b59591615bd7c98e2f7a4cd94ff4fd1451c4234522f3880": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libedit-3.1-23.20170329cvs.el8.x86_64.rpm" + }, + "sha256:059222cdbc9f1bf246e6c73f7334c83aca1e1906494e499e9effb8adf5b6bf03": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/nss-altfiles-2.18.1-12.el8.x86_64.rpm" + }, + "sha256:0602b342148d5e8e6a954bb26af60ed63d3f3d919cd3856ea93612e05ebe2937": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodman-2.0.1-17.el8.x86_64.rpm" + }, + "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmount-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-daemon-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libunistring-0.9.9-3.el8.x86_64.rpm" + }, + "sha256:08bf2e898b5775317d04266f4598eddbe06c424a3694b1534e3ceff088e2e8ca": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-nftables-0.9.3-14.el8.x86_64.rpm" + }, + "sha256:09c8dd96ccb066d458edd30dba99ae72cc3941c1563d260cb259d33d9bf6fe12": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libnet-1.1.6-15.el8.x86_64.rpm" + }, + "sha256:09fc3154e76c8ee25b3982c15f3bc455017262c3df5af84075859dcbf79e4f82": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libsemanage-2.9-3.el8.x86_64.rpm" + }, + "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-239-36.el8.x86_64.rpm" + }, + "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/expat-2.2.5-4.el8.x86_64.rpm" + }, + "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-libs-2.3.3-1.el8.x86_64.rpm" + }, + "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm" + }, + "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxcrypt-4.1.1-4.el8.x86_64.rpm" + }, + "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/linux-firmware-20200619-99.git3890db36.el8.noarch.rpm" + }, + "sha256:0e4b7687f0c62f4e336223b939f6cb169c8dac49eee23c53fd919e58d8f989df": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/microcode_ctl-20200609-2.el8.x86_64.rpm" + }, + "sha256:0f3b084d947bc246fe68822129b8ae1294c4187270a19f0966282baf75b34dc6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-subscription-manager-rhsm-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:1065049dbd53849d35db269a23be54148cbe481122381ab71b72f62e83816b26": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gobject-introspection-1.56.1-1.el8.x86_64.rpm" + }, + "sha256:10f40567d02123b71bd878ef423dd0d5dca415e806ff041c3c69b99d114fea84": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chrony-3.5-1.el8.x86_64.rpm" + }, + "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-all-langpacks-2.28-127.el8.x86_64.rpm" + }, + "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm" + }, + "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gmp-6.1.2-10.el8.x86_64.rpm" + }, + "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcc-8.3.1-5.1.el8.x86_64.rpm" + }, + "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm" + }, + "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cpio-2.12-8.el8.x86_64.rpm" + }, + "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-libs-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:1594afba86593ec614299ef6af255755a98ea55a34a72a22fdc9d80a040be39d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/abattis-cantarell-fonts-0.0.25-4.el8.noarch.rpm" + }, + "sha256:15fc9858886ef52dcf5666528778c4706c79ac056e1147758538144d298f6eab": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-wifi-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:174fe6e1e1e86ab424f46a4fb60a13813bb2daf68837a3672835da5eab1d94fd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd1-1.8.16-0.2.9.4.2.x86_64.rpm" + }, + "sha256:17501958f52d2db1417cab8dd5ca261bf447fd93eb62b80173f9875c3012b700": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/efi-filesystem-3-2.el8.noarch.rpm" + }, + "sha256:17877725105f5a6ec3b7766bc84c307bee76ca9c4c41864eb32ea48beac67f8e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/wpa_supplicant-2.9-2.el8.x86_64.rpm" + }, + "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-smime-2.2.20-2.el8.x86_64.rpm" + }, + "sha256:19c4c7dec378a3c21c8f2d4b9940fcf27f06fb1edf773eaeb185f664cb439a52": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libqmi-1.24.0-1.el8.x86_64.rpm" + }, + "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm" + }, + "sha256:1a1c32e624ac3141a3e60075270b2a408f1b218d30bedbe83e9751cb6d16af5b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/oniguruma-6.8.2-2.el8.x86_64.rpm" + }, + "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-5.2.4-3.el8.x86_64.rpm" + }, + "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.x86_64.rpm" + }, + "sha256:1bc038693be7ccd59674c478176c3badce4a56f785dd0690548b087bcc7adaa1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl1000-firmware-39.31.5.1-99.el8.1.noarch.rpm" + }, + "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-25-16.el8.x86_64.rpm" + }, + "sha256:1c4a8674eafc31d36030f3fd0c081326d4301570d4e35b59d6f6ef1e163f655b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pkgconf-pkg-config-1.4.2-1.el8.x86_64.rpm" + }, + "sha256:1d28eaeaa59c48e4193c709dd2a6301c2f8701138164c05371a0d8f235d14c9c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl7260-firmware-25.30.13.0-99.el8.1.noarch.rpm" + }, + "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tzdata-2020a-1.el8.noarch.rpm" + }, + "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libksba-1.3.5-7.el8.x86_64.rpm" + }, + "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsecret-0.18.6-1.el8.x86_64.rpm" + }, + "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm" + }, + "sha256:1f835437b274cf91162e1787bb922a738ce823df1c0bcbf1cbe7ba566e85f99f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/runc-1.0.0-66.rc10.module+el8.3.0+7084+c16098dd.x86_64.rpm" + }, + "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/krb5-libs-1.18.2-3.el8.x86_64.rpm" + }, + "sha256:1faa85c12115426d8afc51c8bed2e71bf1dd87063e25052bcf85c17dbc0d9ea4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-network-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-2.02-84.el8.x86_64.rpm" + }, + "sha256:201cb88c2d6ec79f015f1d8cf9f879d4b5127db0bf09b454554443c80b4ecd27": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/usbguard-0.7.8-5.el8.x86_64.rpm" + }, + "sha256:204e4dbaf357e12ff041c1c203b2527f7d178905ebae53db3c12e57d28fcbf46": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl135-firmware-18.168.6.1-99.el8.1.noarch.rpm" + }, + "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-common-2.28-127.el8.x86_64.rpm" + }, + "sha256:206cba480b58c70348584010d547d21bcd84c6094fd3980e22c6b640da12704c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-syspurpose-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:206de21c82d76de550bcc1959138472640b0a950a311b753203f5dfe5b201b7b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipcalc-0.2.4-4.el8.x86_64.rpm" + }, + "sha256:208dcd6b67c5d9569f64bcc259b365db3abdd0e786494a50a556dbf65355cd9a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmbim-1.20.2-1.el8.x86_64.rpm" + }, + "sha256:20dec130e4fd0a2146443791ca7ade6e079cea691d93711813d5f483b691c55a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ethtool-0.14-3.el8.x86_64.rpm" + }, + "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-5.33-16.el8.x86_64.rpm" + }, + "sha256:22069f81fb22bee7871e6368bec14602614aee7f81e8fd5c752b7023fd13de39": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/usbguard-selinux-0.7.8-5.el8.noarch.rpm" + }, + "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libcomps-0.1.11-4.el8.x86_64.rpm" + }, + "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-3.6.8-30.el8.x86_64.rpm" + }, + "sha256:252d46d58e0c02cbe2d2485488bd63ea7129964643787557eae832102541f84f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl5150-firmware-8.24.2.2-99.el8.1.noarch.rpm" + }, + "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxkbcommon-0.9.1-1.el8.x86_64.rpm" + }, + "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-2.0.4-10.el8.x86_64.rpm" + }, + "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-ng-0.7.9-5.el8.x86_64.rpm" + }, + "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libattr-2.4.48-3.el8.x86_64.rpm" + }, + "sha256:289e2a39b2a29163a29da35936d4b484fe356d0a6d519524023e79686daf501b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-client-4.3.6-41.el8.x86_64.rpm" + }, + "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mpfr-3.1.6-1.el8.x86_64.rpm" + }, + "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre2-10.32-2.el8.x86_64.rpm" + }, + "sha256:2cfcc3d6163dfaf7ce76998be992bd0b70dd7cbb838430cecf2aff04cd435d24": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/virt-what-1.18-6.el8.x86_64.rpm" + }, + "sha256:2d918b1022e83745d9f9568c0572eaf9859c62ffdd10a111e5ce64bb770fef36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mokutil-0.3.0-9.el8.x86_64.rpm" + }, + "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.x86_64.rpm" + }, + "sha256:2eb22d8c1bd8b825550a5edfdbf59038cd41173665f4e4428e3ce162b1929ec2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbxtool-8-5.el8.x86_64.rpm" + }, + "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-8.30-8.el8.x86_64.rpm" + }, + "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kpartx-0.8.4-2.el8.x86_64.rpm" + }, + "sha256:302bbd7fb5f0a8472eb5ddd24452d67d866c28d7467c58b577f2229e5be4a2b5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bubblewrap-0.4.0-1.el8.x86_64.rpm" + }, + "sha256:305ec4b5026b8ecffdfdf253e24c96aba795e9d07d17d3cad2d9e5573b641728": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgusb-0.3.0-1.el8.x86_64.rpm" + }, + "sha256:30a2e433b8dace2788780dd1924f2928a3111e7934733a9d3fdd0ff4a16e7e32": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcab1-1.1-1.el8.x86_64.rpm" + }, + "sha256:32de29c35eb7bf76c8cc6165ef7ccf6fff8b86e8622bbdb79631ca738e0652d2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-persistent-data-0.8.5-3.el8.x86_64.rpm" + }, + "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpsl-0.20.2-6.el8.x86_64.rpm" + }, + "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm" + }, + "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-dicts-2.9.6-15.el8.x86_64.rpm" + }, + "sha256:350657e984b1736bb4a8c9cc01b772517a4194467d6db84110c1cc42131f1cae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/initscripts-10.00.8-1.el8.x86_64.rpm" + }, + "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/zlib-1.2.11-15.el8.x86_64.rpm" + }, + "sha256:3730f3f8d3332836f278250408891cb097379a5d7745fe698b1d418e9e13d335": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-clients-8.0p1-5.el8.x86_64.rpm" + }, + "sha256:37582049ed88df6e03737825880fee090de4be0e13859b8f055973b6e1828d86": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse3-libs-3.2.1-12.el8.x86_64.rpm" + }, + "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libseccomp-2.4.3-1.el8.x86_64.rpm" + }, + "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-2.26-4.el8.x86_64.rpm" + }, + "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-1.18-1.el8.x86_64.rpm" + }, + "sha256:39e59e9a2460e3b6fe147501e79a57042f161c217963be212359031bb8b18daa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/jansson-2.11-3.el8.x86_64.rpm" + }, + "sha256:3a1058c6ba468722090a74002a3239161771b0d8b444975bff891afd45bb672a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsysfs-2.1.0-24.el8.x86_64.rpm" + }, + "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/procps-ng-3.3.15-2.el8.x86_64.rpm" + }, + "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/filesystem-3.8-3.el8.x86_64.rpm" + }, + "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-plugins-core-4.0.17-2.el8.noarch.rpm" + }, + "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-8.3-0.2.el8.x86_64.rpm" + }, + "sha256:3d807ee0bd43ba2cfbc5fa3678963fb706898bd41588a29330c315a9d88ab2a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipset-libs-7.1-1.el8.x86_64.rpm" + }, + "sha256:3e180253732f00c919aaebc9aaa0562eefac466ce145ce5ad5e1092453aeebaa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rsync-3.1.3-8.el8.x86_64.rpm" + }, + "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ima-evm-utils-1.1-5.el8.x86_64.rpm" + }, + "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tar-1.30-5.el8.x86_64.rpm" + }, + "sha256:40010441888b72dd077d4d6790f837236701b93c8b31da5dbf65c700fd2571fd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-config-generic-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gpg-1.13.1-3.el8.x86_64.rpm" + }, + "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-common-4.3.6-41.el8.noarch.rpm" + }, + "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/util-linux-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xfsprogs-5.0.0-4.el8.x86_64.rpm" + }, + "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:4405d32322fd496c65f57a12b6037fd75b49957269dbf9cb0417b598162f7407": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iproute-5.3.0-5.el8.x86_64.rpm" + }, + "sha256:441efa6f0b9a9905ef11ec987d6db89e7dba2857060020c4554e32db3e59fce5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-libs-0.115-11.el8.x86_64.rpm" + }, + "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libzstd-1.4.4-1.el8.x86_64.rpm" + }, + "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtirpc-1.1.4-4.el8.x86_64.rpm" + }, + "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm" + }, + "sha256:471d93320397aac486979acdf53a79833569160dca7c98a84e7f37a544e141e1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/clevis-luks-13-3.el8.x86_64.rpm" + }, + "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm" + }, + "sha256:48aa6045e9d52f12f42fc9146e6f7890d279450c60345daa8637ab23034f56dc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-3.26.0-10.el8.x86_64.rpm" + }, + "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm" + }, + "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libidn2-2.2.0-1.el8.x86_64.rpm" + }, + "sha256:4aa9d275ca72dc68e995a0bd9709db7f4934c5c1599690aa5dbab1d6c213323d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shim-x64-15-12.x86_64.rpm" + }, + "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-modules-2.02-84.el8.noarch.rpm" + }, + "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgpg-error-1.31-1.el8.x86_64.rpm" + }, + "sha256:4ca553b0c0f6dc130e05e2011cdf1f52132e8f70bd93be8eee4e415b2cac0c56": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-librepo-1.12.0-1.el8.x86_64.rpm" + }, + "sha256:4cb9b7259f44c8ca83c86dfb5c7a97cc33bf21898efe91769ea214458169a5c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-common-3.2.1-12.el8.x86_64.rpm" + }, + "sha256:4ccbefcbe75decfef38ccae5d8ff92ba6b00e8232b64ec46ae0c0be8ae20ec50": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libxml2-2.9.7-8.el8.x86_64.rpm" + }, + "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-libs-1.0.6-26.el8.x86_64.rpm" + }, + "sha256:4d29eb7b73080194cf0ff8961d99eaf3df21a1404f7f4b9b6e11cbf8332a22ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-event-1.02.171-3.el8.x86_64.rpm" + }, + "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-libs-1.5.10-6.el8.x86_64.rpm" + }, + "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shared-mime-info-1.9-3.el8.x86_64.rpm" + }, + "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/npth-1.5-4.el8.x86_64.rpm" + }, + "sha256:4f7fe3f75816e7f434c9ddcf380a4754a309d23d0fd7f81cf57ae38586892c31": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/criu-3.14-2.module+el8.3.0+7084+c16098dd.x86_64.rpm" + }, + "sha256:5117d1fa4938afcd75e3d0882316afda5b09c532205a75f47f6f26b443fff019": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmbim-utils-1.20.2-1.el8.x86_64.rpm" + }, + "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib2-2.56.4-8.el8.x86_64.rpm" + }, + "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm" + }, + "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-eula-8.3-0.2.el8.x86_64.rpm" + }, + "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-rpm-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-4.4.19-12.el8.x86_64.rpm" + }, + "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-c-0.13.1-0.2.el8.x86_64.rpm" + }, + "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpng-1.6.34-5.el8.x86_64.rpm" + }, + "sha256:53fb6834e2e439e79225d957c4643922da74836417b5558d0c2943b546b26e57": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libndp-1.7-3.el8.x86_64.rpm" + }, + "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:56cc340c88cabacd9a329f80edee141154dbf84808894e43a937247394623cf0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl6000-firmware-9.221.4.1-99.el8.1.noarch.rpm" + }, + "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-build-libs-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm" + }, + "sha256:58e9f72f622d5d8182f605a0e7c8f6413e1f2c31d770a09476eed7388130f5bd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libluksmeta-9-4.el8.x86_64.rpm" + }, + "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcroco-0.6.12-4.el8.x86_64.rpm" + }, + "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-hawkey-0.48.0-2.el8.x86_64.rpm" + }, + "sha256:5a85222c8e9997a8b609b915a8fbae756de9b9bff732db852fb15fe0524f2d86": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dbus-1.2.4-15.el8.x86_64.rpm" + }, + "sha256:5ac24d7513e9daa137064985cd8a8774c94aa8a6c07e2814d0c56ddde33fcc8d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nftables-0.9.3-14.el8.x86_64.rpm" + }, + "sha256:5ac39f58cbbe8a5971f6e8fc1f7fafbcf3f9220b2026ee563ec24fe25d86ede0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tpm2-tools-4.1.1-1.el8.x86_64.rpm" + }, + "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgomp-8.3.1-5.1.el8.x86_64.rpm" + }, + "sha256:5cbe058e6d2177f88006fed866e6b1565d6024a12c311ae8eaa21008f76074b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl3160-firmware-25.30.13.0-99.el8.1.noarch.rpm" + }, + "sha256:5cc06aa6c35eb488ae072e03fbc2ceb42614d1f51df043a72903962f21472047": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/luksmeta-9-4.el8.x86_64.rpm" + }, + "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lz4-libs-1.8.3-2.el8.x86_64.rpm" + }, + "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-libs-5.33-16.el8.x86_64.rpm" + }, + "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lua-libs-5.3.4-11.el8.x86_64.rpm" + }, + "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:61cf7338e12188f787c7162e2cd669c895e4e2cf4ae86c9debcd56fd3b8a8322": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnfnetlink-1.0.1-13.el8.x86_64.rpm" + }, + "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-6.1-7.20180224.el8.x86_64.rpm" + }, + "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/curl-7.61.1-12.el8.x86_64.rpm" + }, + "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nettle-3.4.1-2.el8.x86_64.rpm" + }, + "sha256:65dc391ab1c96d1009ef2e7706eabacd5cf84f2a47ea1cc87f6f5e2c1324b178": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsepol-2.9-1.el8.x86_64.rpm" + }, + "sha256:669bb92df236ee87675feee01cdc6c7ec1f14f9e391c9dacba75d47a0d42c056": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/ostree-libs-2020.3-3.el8.x86_64.rpm" + }, + "sha256:6821905c8c4a0c4865a287bf1c33d07e03ba86f54f98a99ec9da55fa6a7280cc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/attr-2.4.48-3.el8.x86_64.rpm" + }, + "sha256:68362500ad574eb2df43a3d260ab8d0f3ce1ae5f34e66d71f2478fef8e17cb4a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/less-530-1.el8.x86_64.rpm" + }, + "sha256:686015c78247edec0a0f5e0d2cbbf02d9feea162e5967ed5b5be35d3951b1f3d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dmidecode-3.2-6.el8.x86_64.rpm" + }, + "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-5.3.28-39.el8.x86_64.rpm" + }, + "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/freetype-2.9.1-4.el8.x86_64.rpm" + }, + "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpwquality-1.4.0-9.el8.x86_64.rpm" + }, + "sha256:6ba7ecff90ab1b738e8b5a6802707e444c1611070f6868d9579a6ed9624d4874": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/clevis-13-3.el8.x86_64.rpm" + }, + "sha256:6cab44ed85c7dc821e84fab9d383f7d0a4b299cc29c8f0860b13e82bb0da8d6f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsoup-2.62.3-1.el8.x86_64.rpm" + }, + "sha256:6d0dcbaa45457461dd5c4afe97689fa2baf5f95551bbe5e827a152dee545a51d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-libnm-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-7.20180224.el8.x86_64.rpm" + }, + "sha256:6dad00c0d3a861f027ebf65ecaeb51e867a7324fd920d4eb9f8e4ad7eca58f44": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lvm2-libs-2.03.09-3.el8.x86_64.rpm" + }, + "sha256:6dc5dfaf2eb04768e72bcb67382314c2883b191e70fc39415e57cd1beb484be9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/jq-1.5-12.el8.x86_64.rpm" + }, + "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-0.19.8.1-17.el8.x86_64.rpm" + }, + "sha256:713ec69b972a8e88622b3fcd3b84fccdbd6c333b68b6c52151c2350edad2576a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgudev-232-4.el8.x86_64.rpm" + }, + "sha256:727707cf3dd8d6de8c680606498289f2b07a31e2611d4146a49240529f2f9165": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-event-libs-1.02.171-3.el8.x86_64.rpm" + }, + "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openldap-2.4.46-15.el8.x86_64.rpm" + }, + "sha256:72fe0e1837aa503049fada31c6e8ae73a4e550be2ddfd73303fb84e955fcc268": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl2000-firmware-18.168.6.1-99.el8.1.noarch.rpm" + }, + "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libdnf-0.48.0-2.el8.x86_64.rpm" + }, + "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:741737a2820a2579df9608ca4f0328ee4b0539b0e17f80371ae80c3b56113920": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/clevis-systemd-13-3.el8.x86_64.rpm" + }, + "sha256:74d05cb72dc6740be73480e68b15b209d7e7a2bf7d7d54e0d3a2dc261ce64e4b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnetfilter_conntrack-1.0.6-5.el8.x86_64.rpm" + }, + "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.x86_64.rpm" + }, + "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsemanage-2.9-3.el8.x86_64.rpm" + }, + "sha256:761ff1ccc95562a4512c4bea1d4c2b507c42e3805c9e1e0093c80539a954047b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-1.5.10-6.el8.x86_64.rpm" + }, + "sha256:769b1ac34ba3aa35337b734b8548dcf9e8b41476b9b2093756341bcbd5969a36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/firewalld-filesystem-0.8.2-1.el8.noarch.rpm" + }, + "sha256:76ca09c73360f48d4b6fe4d4ee0aa974ef53531222df8e363d8006ec469051cf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-core-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-libs-1.02.171-3.el8.x86_64.rpm" + }, + "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-utils-5.3.28-39.el8.x86_64.rpm" + }, + "sha256:7938f537c7bd6641fbcb532c9259bb238ea3f6974aa4e4fecc8b883342347802": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rpm-ostree-2020.2-2.el8.x86_64.rpm" + }, + "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pinentry-1.1.0-2.el8.x86_64.rpm" + }, + "sha256:7c0b2b064dad700cba2754b46f483e3e59aaf798740470df1daad3d5239fb893": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/passwd-0.80-3.el8.x86_64.rpm" + }, + "sha256:7ce6aa282f9f23c46c44186595924d05f4e7a899b504eb95a0f87008f6620268": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dejavu-fonts-common-2.35-6.el8.noarch.rpm" + }, + "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/brotli-1.0.6-2.el8.x86_64.rpm" + }, + "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm" + }, + "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:7e777942f33112982e00ebfbd4145a5fa8260cfcae2f66949e92e574d276169a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/fuse-overlayfs-1.1.1-1.module+el8.3.0+7121+472bc0cf.x86_64.rpm" + }, + "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libevent-2.1.8-5.el8.x86_64.rpm" + }, + "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-slip-0.6.4-11.el8.noarch.rpm" + }, + "sha256:802263173d9c487fc3ca584cc2a5b7b7bb49ac0d12d9026b3246d50fd0888fb1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-glib-0.110-2.el8.x86_64.rpm" + }, + "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/popt-1.16-14.el8.x86_64.rpm" + }, + "sha256:81bb0f23e5603386587a256ed651157ec7ad572ff0ffe8ddc97e436f3673fe64": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ModemManager-1.10.8-2.el8.x86_64.rpm" + }, + "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.x86_64.rpm" + }, + "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-libs-1.8.4-14.el8.x86_64.rpm" + }, + "sha256:857f411ffaa8f5266f2a2eae592a785dcfcff9c53c738770991af39ce531fa65": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/containernetworking-plugins-0.8.6-1.module+el8.3.0+7084+c16098dd.x86_64.rpm" + }, + "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libassuan-2.5.1-3.el8.x86_64.rpm" + }, + "sha256:867505134ec44ec35124e76ffee812d34354b6916d40a56597c6178aca06f798": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rpm-ostree-libs-2020.2-2.el8.x86_64.rpm" + }, + "sha256:86d305a1466a596f8b436561d674f2510f268bed9e73f56c87da1dd120f99c18": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gobject-base-3.28.3-2.el8.x86_64.rpm" + }, + "sha256:8716781f69e8f2bf3f171ed6a34a012f79dc76ce0bcfa318fa0b02d488173ee1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-ebtables-1.8.4-14.el8.x86_64.rpm" + }, + "sha256:876a401451123153602105832e8f711af4931985a86ad3bae0817f9584496cf2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/traceroute-2.1.0-6.el8.x86_64.rpm" + }, + "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grubby-8.40-41.el8.x86_64.rpm" + }, + "sha256:8a2de5f0e170c44199145a6fa047c888eb6fcc00f67da35e452ab493b30c3f2e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmbios-2.4.1-2.el8.x86_64.rpm" + }, + "sha256:8a439a12bb5aab57a2886913d53e36f5353df314fc8e842641865785e7368393": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/ostree-2020.3-3.el8.x86_64.rpm" + }, + "sha256:8af00d4b0857240310156e05123e07795e6573da7c1fe9e7fd83b51f13971725": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-0.115-11.el8.x86_64.rpm" + }, + "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libfdisk-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpcap-1.9.1-4.el8.x86_64.rpm" + }, + "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/unbound-libs-1.7.3-14.el8.x86_64.rpm" + }, + "sha256:8e5a8fce6731ba091ffcd39479919f79a88877082ff661069cb31450bba98eff": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tpm2-tss-2.3.2-2.el8.x86_64.rpm" + }, + "sha256:8eb3370fe641e329b03838e560f45ee290b273dcccfa182d97ad2dbff59b47fd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl6050-firmware-41.28.5.1-99.el8.1.noarch.rpm" + }, + "sha256:8f00781eb679c6baf359099fa2a672ffccfc8e43b7c03c1dc635619cb25ff01d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm" + }, + "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-libs-2.9.7-12.el8.x86_64.rpm" + }, + "sha256:90f1b278b55197ea3061934e563aad3705fecaf8550259ca83939b012bc0aa06": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/container-selinux-2.137.0-1.module+el8.3.0+7084+c16098dd.noarch.rpm" + }, + "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm" + }, + "sha256:93728095128161579fd13ef8bb0687c6a92f4f59e9b044ac056dc52fb44bf054": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/efivar-36-1.el8.x86_64.rpm" + }, + "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libacl-2.2.53-1.el8.x86_64.rpm" + }, + "sha256:947b4e4eebec21501ca62e2a7ff9baae0e4e7c59584fbba4b6276a402cfbb45b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/vim-minimal-8.0.1763-15.el8.x86_64.rpm" + }, + "sha256:9487bff6bb16e7326c8b805751580b4593220ba19b06515c69de83fee8e3bb1f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libselinux-2.9-3.el8.x86_64.rpm" + }, + "sha256:94e22afaf7e8dacef3e7e1c7b578d9cf940797a9940c961a747af05e89b056e0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libslirp-4.3.0-3.module+el8.3.0+7084+c16098dd.x86_64.rpm" + }, + "sha256:94fa34d24dec1e26a9d1c1e4e7213c87d792fafaf106d09daecfa25ac928e809": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ModemManager-glib-1.10.8-2.el8.x86_64.rpm" + }, + "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-0.3.0-5.el8.x86_64.rpm" + }, + "sha256:959fcb0016788a2b1ee55f0801c1490b196416579bc9ac9da9e38786e6c78ff6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl105-firmware-18.168.6.1-99.el8.1.noarch.rpm" + }, + "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-slip-dbus-0.6.4-11.el8.noarch.rpm" + }, + "sha256:96fadfed6a8225a89b331e7b62ed8ee74b393cea1520fa0d89f6f0dc1a458fb3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpkgconf-1.4.2-1.el8.x86_64.rpm" + }, + "sha256:97c8af6f58e3d14317036bd3ed2cbc498803c91c55b9dc0e8f0fddea7ac929e3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-modules-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chkconfig-1.13-2.el8.x86_64.rpm" + }, + "sha256:9889833f56ee91ce8b7c2cb6258698b4e1f8f1824d03825f042c9ff6e8025ece": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libjose-10-2.el8.x86_64.rpm" + }, + "sha256:98a589d7e1cdea9d974aa43f688e55333eed11ce7cb2037d45cc2e69bce579b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/usermode-1.113-1.el8.x86_64.rpm" + }, + "sha256:995a5401cd86404d14d08c0aeafeaa8da3f540b1806f9d0e233d75dec9e45c74": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libmaxminddb-1.2.0-10.el8.x86_64.rpm" + }, + "sha256:99fa92b5d1e0d335fb2bb961ef39988b50968350b899e8790cead73c9a0bec65": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-rhsm-certificates-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm" + }, + "sha256:9a89874a5b8326c85c0b34b02c122ffc052b32a12b20354ce95859ac5296a159": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pkgconf-m4-1.4.2-1.el8.noarch.rpm" + }, + "sha256:9a9ca6857f517f1249d2eb496fe904590d6203e4a9547a28e0b23f21c4cae24a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-pkla-compat-0.1-12.el8.x86_64.rpm" + }, + "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdnf-0.48.0-2.el8.x86_64.rpm" + }, + "sha256:9c5594fcac97c0f8813d7a188e2368e3b1095025fc4a0ecbd5d17e54c0c93f97": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmnl-1.0.4-6.el8.x86_64.rpm" + }, + "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-2.9.6-15.el8.x86_64.rpm" + }, + "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstdc++-8.3.1-5.1.el8.x86_64.rpm" + }, + "sha256:9cf95789e0e6910f313fe467515338cad855eb270aa35172b3ec18b54e9f2e69": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-2.3.3-1.el8.x86_64.rpm" + }, + "sha256:9d8ec9b38fcbd87310b373d1576e8cea41010a3feb874453e5ae27cbca80dbc6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/containers-common-1.1.0-1.module+el8.3.0+7097+8d4f8cb4.x86_64.rpm" + }, + "sha256:9d9d1bdfba4cd852f90232ebe2c4247e7b3a88c4476578c820788a91d6838e55": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rng-tools-6.8-3.el8.x86_64.rpm" + }, + "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64.rpm" + }, + "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libelf-0.180-1.el8.x86_64.rpm" + }, + "sha256:a02b145714b69ed058183ad98ec2685101f15ce21941167ab39746831b777ce9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libvarlink-18-3.el8.x86_64.rpm" + }, + "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcrypt-1.8.5-4.el8.x86_64.rpm" + }, + "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-0.3.14-4.el8.x86_64.rpm" + }, + "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-glib-1.4.4-1.el8.x86_64.rpm" + }, + "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-libs-25-16.el8.x86_64.rpm" + }, + "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/os-prober-1.74-6.el8.x86_64.rpm" + }, + "sha256:a3942170aae588787e37dea8a3f49fe4f59efb377b08fc8c6b307df48bb4edc5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/efivar-libs-36-1.el8.x86_64.rpm" + }, + "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm" + }, + "sha256:a506765865ee31210532f16af156f54ea9431ba1763269d3a39c9ebf0adf5163": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libqb-1.0.3-12.el8.x86_64.rpm" + }, + "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libss-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librhsm-0.0.3-3.el8.x86_64.rpm" + }, + "sha256:a8808c053ffb7ccf826d80fdd458b6521f2cc63e55eb90d79a504fbb66c36cb0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/checkpolicy-2.9-1.el8.x86_64.rpm" + }, + "sha256:a8961c50502aa02071c043a16f93399ac6794a058a0ef42be889abe60f35985b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iputils-20180629-2.el8.x86_64.rpm" + }, + "sha256:a896c5d0e9480d111eaed58ad6e20b772702b7288cbdd6a3bfb5cd2827e3b608": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/dnsmasq-2.79-13.el8.x86_64.rpm" + }, + "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcomps-0.1.11-4.el8.x86_64.rpm" + }, + "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setup-2.12.2-6.el8.noarch.rpm" + }, + "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:abd8e1106f0e251c2ce3d272ddaa14b2afccef2d9d3adaf5d832331ee53a083a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libqmi-utils-1.24.0-1.el8.x86_64.rpm" + }, + "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rootfiles-8.1-22.el8.noarch.rpm" + }, + "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-minimal-2.02-84.el8.x86_64.rpm" + }, + "sha256:aecd902d4dd2636c381d15ed39eb556d828c16dd3ce7d53e5a8ff92c499ba080": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxmlb-0.1.15-1.el8.x86_64.rpm" + }, + "sha256:af541250a77d208a4128b792479f368c91771d5d7fabac96f768af451eaff154": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gsettings-desktop-schemas-3.32.0-5.el8.x86_64.rpm" + }, + "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hardlink-1.3-6.el8.x86_64.rpm" + }, + "sha256:b05032d419c29bfbe60b3495dab9b368865e2154b1b25d87b1e4f5b379226747": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnftnl-1.1.5-4.el8.x86_64.rpm" + }, + "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxml2-2.9.7-8.el8.x86_64.rpm" + }, + "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtasn1-4.13-3.el8.x86_64.rpm" + }, + "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnutls-3.6.14-3.el8.x86_64.rpm" + }, + "sha256:b202d2e1e1a02f48665d2dc8e58453c43c3ee53a784aee1fbefc775272561a22": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-wwan-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:b2dcbd3b81196b16e33054d31c0129c432cf59fb591035845cc299bbb46000c1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuser-0.62-23.el8.x86_64.rpm" + }, + "sha256:b4fb3d8b0255a5ba9456b61e4f479f2f8355d171263508bbe869af677015fd97": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-python-utils-2.9-9.el8.noarch.rpm" + }, + "sha256:b55b77fb38d84685cef6638240daa54235fce156176c820a3c3b980bf414c5f4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl5000-firmware-8.83.5.1_1-99.el8.1.noarch.rpm" + }, + "sha256:b5fc6f35798edccd0390e54fce40290936c3699227e79cc6d1a42d803358fd03": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-8.0p1-5.el8.x86_64.rpm" + }, + "sha256:b64037fee03ce41de72dda7e08008d70d99ec1a1b00fcd283ee04846e5d94a41": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/skopeo-1.1.0-1.module+el8.3.0+7097+8d4f8cb4.x86_64.rpm" + }, + "sha256:b705e2abbce31768f9dde08b2e3bb4756f2512ad22ac94f4bb6761c530b66f71": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-completion-2.7-5.el8.noarch.rpm" + }, + "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-pam-239-36.el8.x86_64.rpm" + }, + "sha256:b8734650357f50eaebcadb9eb007ec10177160b20ecb7527bb7280abb7d46504": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/slirp4netns-1.1.1-1.module+el8.3.0+7084+c16098dd.x86_64.rpm" + }, + "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libreport-filesystem-2.9.5-11.el8.x86_64.rpm" + }, + "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-2.2.20-2.el8.x86_64.rpm" + }, + "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/basesystem-11-5.el8.noarch.rpm" + }, + "sha256:b9812a38a1de6b0f06a9a63bfb75f6fe1e8720aa527dd7e604eadd7d2c3d4eb0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/nmap-ncat-7.70-5.el8.x86_64.rpm" + }, + "sha256:b9d0a4c0e16db4c05b2d0690216d8c5da2db7d67bc765a00ce2a32c5f810c245": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pkgconf-1.4.2-1.el8.x86_64.rpm" + }, + "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/which-2.21-12.el8.x86_64.rpm" + }, + "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pigz-2.4-4.el8.x86_64.rpm" + }, + "sha256:be9951df68a9f6a095a3bda9575ff3890f992d750411d97ad8aa00d5fe5a1916": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-minimal-langpack-2.28-127.el8.x86_64.rpm" + }, + "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-libs-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd-2.9.4-2.el8.x86_64.rpm" + }, + "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsolv-0.7.11-1.el8.x86_64.rpm" + }, + "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libs-0.180-1.el8.x86_64.rpm" + }, + "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-libs-1.1.1g-9.el8.x86_64.rpm" + }, + "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-libs-1.18-1.el8.x86_64.rpm" + }, + "sha256:c193b87ad1690e81ca35ec1f1f7dff94f179907ed13d5b7936c189ff5f8f2bae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipset-7.1-1.el8.x86_64.rpm" + }, + "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-libs-3.26.0-10.el8.x86_64.rpm" + }, + "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm" + }, + "sha256:c24a1814f0fff7edcbd5cdca29571e8a79c5584e8ef300e89aef906b35c8a67d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bind-export-libs-9.11.20-3.el8.x86_64.rpm" + }, + "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-pkcs11-0.4.10-2.el8.x86_64.rpm" + }, + "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcom_err-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:c5098f41849af65b808baac594539440fcdffea7afce4239eb41885eccfd67e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/firewalld-0.8.2-1.el8.noarch.rpm" + }, + "sha256:c5e978963bda83e9321563bb18f69f3753f2eb510dfdafdc6c4e2856dc6b6302": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugin-subscription-manager-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm" + }, + "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pam-1.3.1-11.el8.x86_64.rpm" + }, + "sha256:c7e767d836fe8aef670eba2fde4f593996fbc0fb304a6666dcd53c0f9af7d184": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib-networking-2.56.1-1.1.el8.x86_64.rpm" + }, + "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:c9b3c6dcb4133c3051e3f75978f994aae4c0ad84dd1abbae7fcba497ee524603": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-firewall-0.8.2-1.el8.noarch.rpm" + }, + "sha256:cb8e7909d58206223ad7108a850218360a6b1e2147d97bc94097962dc820d0de": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setools-4.3.0-1.el8.x86_64.rpm" + }, + "sha256:cbe8bf1ceef1c64ee0a8cec25840b94bb5914a1ba735cbac9634d75a8ea55869": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/jose-10-2.el8.x86_64.rpm" + }, + "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-1.1.1g-9.el8.x86_64.rpm" + }, + "sha256:cc3df9449002eacd595a73df52eb973d3b37e4c03d4669c7dce6ce7a26dabd6b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm" + }, + "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmetalink-0.1.3-7.el8.x86_64.rpm" + }, + "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/findutils-4.6.0-20.el8.x86_64.rpm" + }, + "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/acl-2.2.53-1.el8.x86_64.rpm" + }, + "sha256:cf6220736fdd005ba7c67ccb5d5d8a1d9c35718e3c13e79c80967866968d7344": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl100-firmware-39.31.5.1-99.el8.1.noarch.rpm" + }, + "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsigsegv-2.11-5.el8.x86_64.rpm" + }, + "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-unbound-1.7.3-14.el8.x86_64.rpm" + }, + "sha256:d2b777ea98ee644997029994136723cf4fa78e97afeaceab39f76b545b51792b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dmidecode-3.12.2-15.el8.x86_64.rpm" + }, + "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-libs-0.19.8.1-17.el8.x86_64.rpm" + }, + "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-libs-5.2.4-3.el8.x86_64.rpm" + }, + "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libs-3.6.8-30.el8.x86_64.rpm" + }, + "sha256:d4dc248be7aacad57e6684036d48d7fc1697bb0f1aa880c2a77dbd3ed714c642": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/timedatex-0.5-3.el8.x86_64.rpm" + }, + "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:d5130266a054d7cc7cbfe68f84a7dd8d1668518d87361235d12a993bc0750a5d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/efibootmgr-16-1.el8.x86_64.rpm" + }, + "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grep-3.1-6.el8.x86_64.rpm" + }, + "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-extra-2.02-84.el8.x86_64.rpm" + }, + "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gpgme-1.13.1-3.el8.x86_64.rpm" + }, + "sha256:d722cdc65328b13941bed614311a0c765de94a4f56f43e752b00dbc0830879aa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/podman-2.0.0-0.9.rc7.module+el8.3.0+7084+c16098dd.x86_64.rpm" + }, + "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libusbx-1.0.23-3.el8.x86_64.rpm" + }, + "sha256:d7d28747d0e214c60a9a294d95ac23cf43c1195bf5b8a3e76cfda7484664ee03": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setools-console-4.3.0-1.el8.x86_64.rpm" + }, + "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm" + }, + "sha256:d892992a9499de86fceb65e9d5f53e278dc04ffa9a36fce5c8512acba00a04fc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fwupd-1.4.1-1.el8.x86_64.rpm" + }, + "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libaio-0.3.112-1.el8.x86_64.rpm" + }, + "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-2.9-3.el8.x86_64.rpm" + }, + "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-libs-239-36.el8.x86_64.rpm" + }, + "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libarchive-3.3.2-9.el8.x86_64.rpm" + }, + "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-tools-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:db1fad3c2d8735e69084bd4b09ea963938e4dde2f2e096dc7a4ce146f18b7ab0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fontpackages-filesystem-1.44-22.el8.noarch.rpm" + }, + "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shadow-utils-4.6-10.el8.x86_64.rpm" + }, + "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-2.02-84.el8.x86_64.rpm" + }, + "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-2.28-127.el8.x86_64.rpm" + }, + "sha256:dd379385bd1d2e05f50c4795e5a0eff9030fdac0fd2579bb4b56233257672b27": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dejavu-sans-mono-fonts-2.35-6.el8.noarch.rpm" + }, + "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-udev-239-36.el8.x86_64.rpm" + }, + "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librepo-1.12.0-1.el8.x86_64.rpm" + }, + "sha256:e0cde0185535bd50f7c5e5e2c0c19b5ab086b6bfa8cea95af9d56ffc81cb26b7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-libs-4.3.6-41.el8.x86_64.rpm" + }, + "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/memstrack-0.1.8-1.el8.x86_64.rpm" + }, + "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gawk-4.2.1-1.el8.x86_64.rpm" + }, + "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmartcols-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/info-6.5-6.el8.x86_64.rpm" + }, + "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-utils-2.9-3.el8.x86_64.rpm" + }, + "sha256:e2f7c7b524ad9a613d523c0b4635491618186917ae08884a1744b46899ace566": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lvm2-2.03.09-3.el8.x86_64.rpm" + }, + "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-1.02.171-3.el8.x86_64.rpm" + }, + "sha256:e4d6897cd7f3a8475b14e575205865135cfebdf6f1687e99f7a14378010d6f39": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tmux-2.7-1.el8.x86_64.rpm" + }, + "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuuid-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-policycoreutils-2.9-9.el8.noarch.rpm" + }, + "sha256:e78a972408f57f8098d2e1f89703a37989a7921d32eedffeff951c4995e242c3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/clevis-dracut-13-3.el8.x86_64.rpm" + }, + "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-2.9-9.el8.x86_64.rpm" + }, + "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-lib-0.3.14-4.el8.x86_64.rpm" + }, + "sha256:eb0ed74444da940ab2a530776348362c5e2c07a0a30b2106dd4691bcbfa1e56a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/protobuf-3.5.0-13.el8.x86_64.rpm" + }, + "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libffi-3.1-22.el8.x86_64.rpm" + }, + "sha256:eb5e29df2e7f803a62769aa19c60959ee7d368cd51397e00ebdbedba7d2d4768": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-common-8.30-8.el8.x86_64.rpm" + }, + "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libutempter-1.1.6-14.el8.x86_64.rpm" + }, + "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-0.23.14-5.el8_0.x86_64.rpm" + }, + "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm" + }, + "sha256:ec9adedf0d5d2d096acf4739e2eefab8095498037e13dac9b283e17a9c54259a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sudo-1.8.29-6.el8.x86_64.rpm" + }, + "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre-8.42-4.el8.x86_64.rpm" + }, + "sha256:ecd2a9cc865d694f02273ca7a6b970a6a799b679174dead75ec7c34ff710ffd2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libproxy-0.4.15-5.2.el8.x86_64.rpm" + }, + "sha256:edd041a9e8d4168c5eccdc607fcb2e870a6fbfd89d305b05b2bc67f3c43f2f04": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-2.9.7-12.el8.x86_64.rpm" + }, + "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/readline-7.0-10.el8.x86_64.rpm" + }, + "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:f0662bbece3450b8f9ec4824bf374d7a906b243ab042354baa1e483f8859ef93": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-efi-x64-2.02-84.el8.x86_64.rpm" + }, + "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm" + }, + "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm" + }, + "sha256:f2b58d2dfeb45318f8e9e67a96c4f02df69815149ce7b092233a02c0dea19f89": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64.rpm" + }, + "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sed-4.5-2.el8.x86_64.rpm" + }, + "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-0.9.4-2.el8.x86_64.rpm" + }, + "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gzip-1.9-9.el8.x86_64.rpm" + }, + "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-1.2.0-2.el8.x86_64.rpm" + }, + "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64.rpm" + }, + "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/diffutils-3.6-6.el8.x86_64.rpm" + }, + "sha256:f83dc47f0c2ac234e15d5687951285c23576fd2efcc615656c8585f2495456b6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-1.8.4-14.el8.x86_64.rpm" + }, + "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm" + }, + "sha256:f8c30f90610f8cc907009df99348a5e572f5598aed91280c15af604ba62687b2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl2030-firmware-18.168.6.1-99.el8.1.noarch.rpm" + }, + "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.x86_64.rpm" + }, + "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcurl-7.61.1-12.el8.x86_64.rpm" + }, + "sha256:fbce3b7fc6cabc2204b2ceaf2b703146fa0642903b7999424cf86fbe26b61339": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/conmon-2.0.18-1.module+el8.3.0+7084+c16098dd.x86_64.rpm" + }, + "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dosfstools-4.1-6.el8.x86_64.rpm" + }, + "sha256:fd7bc748b59a48a1ba803dc893be729c8624a4141e23fcef126a401857bbb455": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-server-8.0p1-5.el8.x86_64.rpm" + }, + "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm" + }, + "sha256:fd9e5c379cd3482d32686fb13881827a39037e7a7afa92c62d58c1f05fcb797f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mozjs60-60.9.0-4.el8.x86_64.rpm" + }, + "sha256:fdcc4180cae8fa83ca54188fc2f6796a1bc8d7eb7106163b98dd93d974b48cd1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hostname-3.20-6.el8.x86_64.rpm" + }, + "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libblkid-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:ffe769e8d404589e60b0760d91669cd61e1320b5eeac85f9e8e624acdc845e76": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/protobuf-c-1.3.0-4.el8.x86_64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "checksum": "sha256:302bbd7fb5f0a8472eb5ddd24452d67d866c28d7467c58b577f2229e5be4a2b5" + }, + { + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3" + }, + { + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "checksum": "sha256:edd041a9e8d4168c5eccdc607fcb2e870a6fbfd89d305b05b2bc67f3c43f2f04" + }, + { + "checksum": "sha256:4cb9b7259f44c8ca83c86dfb5c7a97cc33bf21898efe91769ea214458169a5c8" + }, + { + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "checksum": "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710" + }, + { + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "checksum": "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379" + }, + { + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "checksum": "sha256:174fe6e1e1e86ab424f46a4fb60a13813bb2daf68837a3672835da5eab1d94fd" + }, + { + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "checksum": "sha256:441efa6f0b9a9905ef11ec987d6db89e7dba2857060020c4554e32db3e59fce5" + }, + { + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "checksum": "sha256:8a439a12bb5aab57a2886913d53e36f5353df314fc8e842641865785e7368393" + }, + { + "checksum": "sha256:669bb92df236ee87675feee01cdc6c7ec1f14f9e391c9dacba75d47a0d42c056" + }, + { + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "checksum": "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7" + }, + { + "checksum": "sha256:f2b58d2dfeb45318f8e9e67a96c4f02df69815149ce7b092233a02c0dea19f89" + }, + { + "checksum": "sha256:7938f537c7bd6641fbcb532c9259bb238ea3f6974aa4e4fecc8b883342347802" + }, + { + "checksum": "sha256:867505134ec44ec35124e76ffee812d34354b6916d40a56597c6178aca06f798" + }, + { + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ] + }, + "runner": "org.osbuild.rhel82" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:81bb0f23e5603386587a256ed651157ec7ad572ff0ffe8ddc97e436f3673fe64" + }, + { + "checksum": "sha256:94fa34d24dec1e26a9d1c1e4e7213c87d792fafaf106d09daecfa25ac928e809" + }, + { + "checksum": "sha256:0027700684ce09927aded1d2c5bb84028529141a6b418897bde37d4af348f8bb" + }, + { + "checksum": "sha256:6d0dcbaa45457461dd5c4afe97689fa2baf5f95551bbe5e827a152dee545a51d" + }, + { + "checksum": "sha256:15fc9858886ef52dcf5666528778c4706c79ac056e1147758538144d298f6eab" + }, + { + "checksum": "sha256:b202d2e1e1a02f48665d2dc8e58453c43c3ee53a784aee1fbefc775272561a22" + }, + { + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "checksum": "sha256:6821905c8c4a0c4865a287bf1c33d07e03ba86f54f98a99ec9da55fa6a7280cc" + }, + { + "checksum": "sha256:cc3df9449002eacd595a73df52eb973d3b37e4c03d4669c7dce6ce7a26dabd6b" + }, + { + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "checksum": "sha256:b705e2abbce31768f9dde08b2e3bb4756f2512ad22ac94f4bb6761c530b66f71" + }, + { + "checksum": "sha256:c24a1814f0fff7edcbd5cdca29571e8a79c5584e8ef300e89aef906b35c8a67d" + }, + { + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "checksum": "sha256:302bbd7fb5f0a8472eb5ddd24452d67d866c28d7467c58b577f2229e5be4a2b5" + }, + { + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:a8808c053ffb7ccf826d80fdd458b6521f2cc63e55eb90d79a504fbb66c36cb0" + }, + { + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "checksum": "sha256:10f40567d02123b71bd878ef423dd0d5dca415e806ff041c3c69b99d114fea84" + }, + { + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:9cf95789e0e6910f313fe467515338cad855eb270aa35172b3ec18b54e9f2e69" + }, + { + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "checksum": "sha256:802263173d9c487fc3ca584cc2a5b7b7bb49ac0d12d9026b3246d50fd0888fb1" + }, + { + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "checksum": "sha256:2eb22d8c1bd8b825550a5edfdbf59038cd41173665f4e4428e3ce162b1929ec2" + }, + { + "checksum": "sha256:7ce6aa282f9f23c46c44186595924d05f4e7a899b504eb95a0f87008f6620268" + }, + { + "checksum": "sha256:dd379385bd1d2e05f50c4795e5a0eff9030fdac0fd2579bb4b56233257672b27" + }, + { + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "checksum": "sha256:4d29eb7b73080194cf0ff8961d99eaf3df21a1404f7f4b9b6e11cbf8332a22ec" + }, + { + "checksum": "sha256:727707cf3dd8d6de8c680606498289f2b07a31e2611d4146a49240529f2f9165" + }, + { + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "checksum": "sha256:32de29c35eb7bf76c8cc6165ef7ccf6fff8b86e8622bbdb79631ca738e0652d2" + }, + { + "checksum": "sha256:289e2a39b2a29163a29da35936d4b484fe356d0a6d519524023e79686daf501b" + }, + { + "checksum": "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2" + }, + { + "checksum": "sha256:e0cde0185535bd50f7c5e5e2c0c19b5ab086b6bfa8cea95af9d56ffc81cb26b7" + }, + { + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "checksum": "sha256:686015c78247edec0a0f5e0d2cbbf02d9feea162e5967ed5b5be35d3951b1f3d" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:c5e978963bda83e9321563bb18f69f3753f2eb510dfdafdc6c4e2856dc6b6302" + }, + { + "checksum": "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3" + }, + { + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "checksum": "sha256:40010441888b72dd077d4d6790f837236701b93c8b31da5dbf65c700fd2571fd" + }, + { + "checksum": "sha256:1faa85c12115426d8afc51c8bed2e71bf1dd87063e25052bcf85c17dbc0d9ea4" + }, + { + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "checksum": "sha256:17501958f52d2db1417cab8dd5ca261bf447fd93eb62b80173f9875c3012b700" + }, + { + "checksum": "sha256:d5130266a054d7cc7cbfe68f84a7dd8d1668518d87361235d12a993bc0750a5d" + }, + { + "checksum": "sha256:93728095128161579fd13ef8bb0687c6a92f4f59e9b044ac056dc52fb44bf054" + }, + { + "checksum": "sha256:a3942170aae588787e37dea8a3f49fe4f59efb377b08fc8c6b307df48bb4edc5" + }, + { + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "checksum": "sha256:c5098f41849af65b808baac594539440fcdffea7afce4239eb41885eccfd67e2" + }, + { + "checksum": "sha256:769b1ac34ba3aa35337b734b8548dcf9e8b41476b9b2093756341bcbd5969a36" + }, + { + "checksum": "sha256:db1fad3c2d8735e69084bd4b09ea963938e4dde2f2e096dc7a4ce146f18b7ab0" + }, + { + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "checksum": "sha256:edd041a9e8d4168c5eccdc607fcb2e870a6fbfd89d305b05b2bc67f3c43f2f04" + }, + { + "checksum": "sha256:4cb9b7259f44c8ca83c86dfb5c7a97cc33bf21898efe91769ea214458169a5c8" + }, + { + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "checksum": "sha256:37582049ed88df6e03737825880fee090de4be0e13859b8f055973b6e1828d86" + }, + { + "checksum": "sha256:d892992a9499de86fceb65e9d5f53e278dc04ffa9a36fce5c8512acba00a04fc" + }, + { + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "checksum": "sha256:c7e767d836fe8aef670eba2fde4f593996fbc0fb304a6666dcd53c0f9af7d184" + }, + { + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "checksum": "sha256:be9951df68a9f6a095a3bda9575ff3890f992d750411d97ad8aa00d5fe5a1916" + }, + { + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "checksum": "sha256:1065049dbd53849d35db269a23be54148cbe481122381ab71b72f62e83816b26" + }, + { + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:f0662bbece3450b8f9ec4824bf374d7a906b243ab042354baa1e483f8859ef93" + }, + { + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "checksum": "sha256:af541250a77d208a4128b792479f368c91771d5d7fabac96f768af451eaff154" + }, + { + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "checksum": "sha256:fdcc4180cae8fa83ca54188fc2f6796a1bc8d7eb7106163b98dd93d974b48cd1" + }, + { + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "checksum": "sha256:350657e984b1736bb4a8c9cc01b772517a4194467d6db84110c1cc42131f1cae" + }, + { + "checksum": "sha256:206de21c82d76de550bcc1959138472640b0a950a311b753203f5dfe5b201b7b" + }, + { + "checksum": "sha256:4405d32322fd496c65f57a12b6037fd75b49957269dbf9cb0417b598162f7407" + }, + { + "checksum": "sha256:c193b87ad1690e81ca35ec1f1f7dff94f179907ed13d5b7936c189ff5f8f2bae" + }, + { + "checksum": "sha256:3d807ee0bd43ba2cfbc5fa3678963fb706898bd41588a29330c315a9d88ab2a7" + }, + { + "checksum": "sha256:f83dc47f0c2ac234e15d5687951285c23576fd2efcc615656c8585f2495456b6" + }, + { + "checksum": "sha256:8716781f69e8f2bf3f171ed6a34a012f79dc76ce0bcfa318fa0b02d488173ee1" + }, + { + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "checksum": "sha256:a8961c50502aa02071c043a16f93399ac6794a058a0ef42be889abe60f35985b" + }, + { + "checksum": "sha256:cf6220736fdd005ba7c67ccb5d5d8a1d9c35718e3c13e79c80967866968d7344" + }, + { + "checksum": "sha256:1bc038693be7ccd59674c478176c3badce4a56f785dd0690548b087bcc7adaa1" + }, + { + "checksum": "sha256:959fcb0016788a2b1ee55f0801c1490b196416579bc9ac9da9e38786e6c78ff6" + }, + { + "checksum": "sha256:204e4dbaf357e12ff041c1c203b2527f7d178905ebae53db3c12e57d28fcbf46" + }, + { + "checksum": "sha256:72fe0e1837aa503049fada31c6e8ae73a4e550be2ddfd73303fb84e955fcc268" + }, + { + "checksum": "sha256:f8c30f90610f8cc907009df99348a5e572f5598aed91280c15af604ba62687b2" + }, + { + "checksum": "sha256:5cbe058e6d2177f88006fed866e6b1565d6024a12c311ae8eaa21008f76074b1" + }, + { + "checksum": "sha256:b55b77fb38d84685cef6638240daa54235fce156176c820a3c3b980bf414c5f4" + }, + { + "checksum": "sha256:252d46d58e0c02cbe2d2485488bd63ea7129964643787557eae832102541f84f" + }, + { + "checksum": "sha256:56cc340c88cabacd9a329f80edee141154dbf84808894e43a937247394623cf0" + }, + { + "checksum": "sha256:8eb3370fe641e329b03838e560f45ee290b273dcccfa182d97ad2dbff59b47fd" + }, + { + "checksum": "sha256:1d28eaeaa59c48e4193c709dd2a6301c2f8701138164c05371a0d8f235d14c9c" + }, + { + "checksum": "sha256:39e59e9a2460e3b6fe147501e79a57042f161c217963be212359031bb8b18daa" + }, + { + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:eb5e29df2e7f803a62769aa19c60959ee7d368cd51397e00ebdbedba7d2d4768" + }, + { + "checksum": "sha256:76ca09c73360f48d4b6fe4d4ee0aa974ef53531222df8e363d8006ec469051cf" + }, + { + "checksum": "sha256:97c8af6f58e3d14317036bd3ed2cbc498803c91c55b9dc0e8f0fddea7ac929e3" + }, + { + "checksum": "sha256:761ff1ccc95562a4512c4bea1d4c2b507c42e3805c9e1e0093c80539a954047b" + }, + { + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "checksum": "sha256:68362500ad574eb2df43a3d260ab8d0f3ce1ae5f34e66d71f2478fef8e17cb4a" + }, + { + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "checksum": "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379" + }, + { + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "checksum": "sha256:0391105afa53c9503b59591615bd7c98e2f7a4cd94ff4fd1451c4234522f3880" + }, + { + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "checksum": "sha256:30a2e433b8dace2788780dd1924f2928a3111e7934733a9d3fdd0ff4a16e7e32" + }, + { + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "checksum": "sha256:713ec69b972a8e88622b3fcd3b84fccdbd6c333b68b6c52151c2350edad2576a" + }, + { + "checksum": "sha256:305ec4b5026b8ecffdfdf253e24c96aba795e9d07d17d3cad2d9e5573b641728" + }, + { + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "checksum": "sha256:208dcd6b67c5d9569f64bcc259b365db3abdd0e786494a50a556dbf65355cd9a" + }, + { + "checksum": "sha256:5117d1fa4938afcd75e3d0882316afda5b09c532205a75f47f6f26b443fff019" + }, + { + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "checksum": "sha256:9c5594fcac97c0f8813d7a188e2368e3b1095025fc4a0ecbd5d17e54c0c93f97" + }, + { + "checksum": "sha256:0602b342148d5e8e6a954bb26af60ed63d3f3d919cd3856ea93612e05ebe2937" + }, + { + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "checksum": "sha256:174fe6e1e1e86ab424f46a4fb60a13813bb2daf68837a3672835da5eab1d94fd" + }, + { + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "checksum": "sha256:53fb6834e2e439e79225d957c4643922da74836417b5558d0c2943b546b26e57" + }, + { + "checksum": "sha256:74d05cb72dc6740be73480e68b15b209d7e7a2bf7d7d54e0d3a2dc261ce64e4b" + }, + { + "checksum": "sha256:61cf7338e12188f787c7162e2cd669c895e4e2cf4ae86c9debcd56fd3b8a8322" + }, + { + "checksum": "sha256:b05032d419c29bfbe60b3495dab9b368865e2154b1b25d87b1e4f5b379226747" + }, + { + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "checksum": "sha256:0129696c208f60326723c650295167b0600791ccb2e9c3d446c4caf9adecb3d7" + }, + { + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "checksum": "sha256:96fadfed6a8225a89b331e7b62ed8ee74b393cea1520fa0d89f6f0dc1a458fb3" + }, + { + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "checksum": "sha256:ecd2a9cc865d694f02273ca7a6b970a6a799b679174dead75ec7c34ff710ffd2" + }, + { + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "checksum": "sha256:a506765865ee31210532f16af156f54ea9431ba1763269d3a39c9ebf0adf5163" + }, + { + "checksum": "sha256:19c4c7dec378a3c21c8f2d4b9940fcf27f06fb1edf773eaeb185f664cb439a52" + }, + { + "checksum": "sha256:abd8e1106f0e251c2ce3d272ddaa14b2afccef2d9d3adaf5d832331ee53a083a" + }, + { + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "checksum": "sha256:8a2de5f0e170c44199145a6fa047c888eb6fcc00f67da35e452ab493b30c3f2e" + }, + { + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "checksum": "sha256:6cab44ed85c7dc821e84fab9d383f7d0a4b299cc29c8f0860b13e82bb0da8d6f" + }, + { + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "checksum": "sha256:3a1058c6ba468722090a74002a3239161771b0d8b444975bff891afd45bb672a" + }, + { + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "checksum": "sha256:b2dcbd3b81196b16e33054d31c0129c432cf59fb591035845cc299bbb46000c1" + }, + { + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "checksum": "sha256:a02b145714b69ed058183ad98ec2685101f15ce21941167ab39746831b777ce9" + }, + { + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "checksum": "sha256:aecd902d4dd2636c381d15ed39eb556d828c16dd3ce7d53e5a8ff92c499ba080" + }, + { + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "checksum": "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9" + }, + { + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "checksum": "sha256:e2f7c7b524ad9a613d523c0b4635491618186917ae08884a1744b46899ace566" + }, + { + "checksum": "sha256:6dad00c0d3a861f027ebf65ecaeb51e867a7324fd920d4eb9f8e4ad7eca58f44" + }, + { + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "checksum": "sha256:0e4b7687f0c62f4e336223b939f6cb169c8dac49eee23c53fd919e58d8f989df" + }, + { + "checksum": "sha256:2d918b1022e83745d9f9568c0572eaf9859c62ffdd10a111e5ce64bb770fef36" + }, + { + "checksum": "sha256:fd9e5c379cd3482d32686fb13881827a39037e7a7afa92c62d58c1f05fcb797f" + }, + { + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "checksum": "sha256:5ac24d7513e9daa137064985cd8a8774c94aa8a6c07e2814d0c56ddde33fcc8d" + }, + { + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "checksum": "sha256:b5fc6f35798edccd0390e54fce40290936c3699227e79cc6d1a42d803358fd03" + }, + { + "checksum": "sha256:3730f3f8d3332836f278250408891cb097379a5d7745fe698b1d418e9e13d335" + }, + { + "checksum": "sha256:fd7bc748b59a48a1ba803dc893be729c8624a4141e23fcef126a401857bbb455" + }, + { + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "checksum": "sha256:7c0b2b064dad700cba2754b46f483e3e59aaf798740470df1daad3d5239fb893" + }, + { + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "checksum": "sha256:b9d0a4c0e16db4c05b2d0690216d8c5da2db7d67bc765a00ce2a32c5f810c245" + }, + { + "checksum": "sha256:9a89874a5b8326c85c0b34b02c122ffc052b32a12b20354ce95859ac5296a159" + }, + { + "checksum": "sha256:1c4a8674eafc31d36030f3fd0c081326d4301570d4e35b59d6f6ef1e163f655b" + }, + { + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "checksum": "sha256:b4fb3d8b0255a5ba9456b61e4f479f2f8355d171263508bbe869af677015fd97" + }, + { + "checksum": "sha256:8af00d4b0857240310156e05123e07795e6573da7c1fe9e7fd83b51f13971725" + }, + { + "checksum": "sha256:441efa6f0b9a9905ef11ec987d6db89e7dba2857060020c4554e32db3e59fce5" + }, + { + "checksum": "sha256:9a9ca6857f517f1249d2eb496fe904590d6203e4a9547a28e0b23f21c4cae24a" + }, + { + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:8f00781eb679c6baf359099fa2a672ffccfc8e43b7c03c1dc635619cb25ff01d" + }, + { + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "checksum": "sha256:5a85222c8e9997a8b609b915a8fbae756de9b9bff732db852fb15fe0524f2d86" + }, + { + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "checksum": "sha256:d2b777ea98ee644997029994136723cf4fa78e97afeaceab39f76b545b51792b" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87" + }, + { + "checksum": "sha256:20dec130e4fd0a2146443791ca7ade6e079cea691d93711813d5f483b691c55a" + }, + { + "checksum": "sha256:c9b3c6dcb4133c3051e3f75978f994aae4c0ad84dd1abbae7fcba497ee524603" + }, + { + "checksum": "sha256:86d305a1466a596f8b436561d674f2510f268bed9e73f56c87da1dd120f99c18" + }, + { + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "checksum": "sha256:4ca553b0c0f6dc130e05e2011cdf1f52132e8f70bd93be8eee4e415b2cac0c56" + }, + { + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "checksum": "sha256:9487bff6bb16e7326c8b805751580b4593220ba19b06515c69de83fee8e3bb1f" + }, + { + "checksum": "sha256:09fc3154e76c8ee25b3982c15f3bc455017262c3df5af84075859dcbf79e4f82" + }, + { + "checksum": "sha256:4ccbefcbe75decfef38ccae5d8ff92ba6b00e8232b64ec46ae0c0be8ae20ec50" + }, + { + "checksum": "sha256:08bf2e898b5775317d04266f4598eddbe06c424a3694b1534e3ceff088e2e8ca" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42" + }, + { + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "checksum": "sha256:cb8e7909d58206223ad7108a850218360a6b1e2147d97bc94097962dc820d0de" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "checksum": "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb" + }, + { + "checksum": "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d" + }, + { + "checksum": "sha256:0f3b084d947bc246fe68822129b8ae1294c4187270a19f0966282baf75b34dc6" + }, + { + "checksum": "sha256:206cba480b58c70348584010d547d21bcd84c6094fd3980e22c6b640da12704c" + }, + { + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "checksum": "sha256:9d9d1bdfba4cd852f90232ebe2c4247e7b3a88c4476578c820788a91d6838e55" + }, + { + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "checksum": "sha256:3e180253732f00c919aaebc9aaa0562eefac466ce145ce5ad5e1092453aeebaa" + }, + { + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:d7d28747d0e214c60a9a294d95ac23cf43c1195bf5b8a3e76cfda7484664ee03" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "checksum": "sha256:4aa9d275ca72dc68e995a0bd9709db7f4934c5c1599690aa5dbab1d6c213323d" + }, + { + "checksum": "sha256:48aa6045e9d52f12f42fc9146e6f7890d279450c60345daa8637ab23034f56dc" + }, + { + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "checksum": "sha256:65dc391ab1c96d1009ef2e7706eabacd5cf84f2a47ea1cc87f6f5e2c1324b178" + }, + { + "checksum": "sha256:99fa92b5d1e0d335fb2bb961ef39988b50968350b899e8790cead73c9a0bec65" + }, + { + "checksum": "sha256:ec9adedf0d5d2d096acf4739e2eefab8095498037e13dac9b283e17a9c54259a" + }, + { + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "checksum": "sha256:d4dc248be7aacad57e6684036d48d7fc1697bb0f1aa880c2a77dbd3ed714c642" + }, + { + "checksum": "sha256:e4d6897cd7f3a8475b14e575205865135cfebdf6f1687e99f7a14378010d6f39" + }, + { + "checksum": "sha256:5ac39f58cbbe8a5971f6e8fc1f7fafbcf3f9220b2026ee563ec24fe25d86ede0" + }, + { + "checksum": "sha256:8e5a8fce6731ba091ffcd39479919f79a88877082ff661069cb31450bba98eff" + }, + { + "checksum": "sha256:876a401451123153602105832e8f711af4931985a86ad3bae0817f9584496cf2" + }, + { + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:98a589d7e1cdea9d974aa43f688e55333eed11ce7cb2037d45cc2e69bce579b3" + }, + { + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "checksum": "sha256:947b4e4eebec21501ca62e2a7ff9baae0e4e7c59584fbba4b6276a402cfbb45b" + }, + { + "checksum": "sha256:2cfcc3d6163dfaf7ce76998be992bd0b70dd7cbb838430cecf2aff04cd435d24" + }, + { + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "checksum": "sha256:17877725105f5a6ec3b7766bc84c307bee76ca9c4c41864eb32ea48beac67f8e" + }, + { + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "checksum": "sha256:1594afba86593ec614299ef6af255755a98ea55a34a72a22fdc9d80a040be39d" + }, + { + "checksum": "sha256:6ba7ecff90ab1b738e8b5a6802707e444c1611070f6868d9579a6ed9624d4874" + }, + { + "checksum": "sha256:e78a972408f57f8098d2e1f89703a37989a7921d32eedffeff951c4995e242c3" + }, + { + "checksum": "sha256:471d93320397aac486979acdf53a79833569160dca7c98a84e7f37a544e141e1" + }, + { + "checksum": "sha256:741737a2820a2579df9608ca4f0328ee4b0539b0e17f80371ae80c3b56113920" + }, + { + "checksum": "sha256:fbce3b7fc6cabc2204b2ceaf2b703146fa0642903b7999424cf86fbe26b61339" + }, + { + "checksum": "sha256:90f1b278b55197ea3061934e563aad3705fecaf8550259ca83939b012bc0aa06" + }, + { + "checksum": "sha256:857f411ffaa8f5266f2a2eae592a785dcfcff9c53c738770991af39ce531fa65" + }, + { + "checksum": "sha256:9d8ec9b38fcbd87310b373d1576e8cea41010a3feb874453e5ae27cbca80dbc6" + }, + { + "checksum": "sha256:4f7fe3f75816e7f434c9ddcf380a4754a309d23d0fd7f81cf57ae38586892c31" + }, + { + "checksum": "sha256:a896c5d0e9480d111eaed58ad6e20b772702b7288cbdd6a3bfb5cd2827e3b608" + }, + { + "checksum": "sha256:7e777942f33112982e00ebfbd4145a5fa8260cfcae2f66949e92e574d276169a" + }, + { + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "checksum": "sha256:cbe8bf1ceef1c64ee0a8cec25840b94bb5914a1ba735cbac9634d75a8ea55869" + }, + { + "checksum": "sha256:6dc5dfaf2eb04768e72bcb67382314c2883b191e70fc39415e57cd1beb484be9" + }, + { + "checksum": "sha256:9889833f56ee91ce8b7c2cb6258698b4e1f8f1824d03825f042c9ff6e8025ece" + }, + { + "checksum": "sha256:58e9f72f622d5d8182f605a0e7c8f6413e1f2c31d770a09476eed7388130f5bd" + }, + { + "checksum": "sha256:995a5401cd86404d14d08c0aeafeaa8da3f540b1806f9d0e233d75dec9e45c74" + }, + { + "checksum": "sha256:09c8dd96ccb066d458edd30dba99ae72cc3941c1563d260cb259d33d9bf6fe12" + }, + { + "checksum": "sha256:94e22afaf7e8dacef3e7e1c7b578d9cf940797a9940c961a747af05e89b056e0" + }, + { + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "checksum": "sha256:5cc06aa6c35eb488ae072e03fbc2ceb42614d1f51df043a72903962f21472047" + }, + { + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "checksum": "sha256:b9812a38a1de6b0f06a9a63bfb75f6fe1e8720aa527dd7e604eadd7d2c3d4eb0" + }, + { + "checksum": "sha256:059222cdbc9f1bf246e6c73f7334c83aca1e1906494e499e9effb8adf5b6bf03" + }, + { + "checksum": "sha256:1a1c32e624ac3141a3e60075270b2a408f1b218d30bedbe83e9751cb6d16af5b" + }, + { + "checksum": "sha256:8a439a12bb5aab57a2886913d53e36f5353df314fc8e842641865785e7368393" + }, + { + "checksum": "sha256:669bb92df236ee87675feee01cdc6c7ec1f14f9e391c9dacba75d47a0d42c056" + }, + { + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "checksum": "sha256:d722cdc65328b13941bed614311a0c765de94a4f56f43e752b00dbc0830879aa" + }, + { + "checksum": "sha256:eb0ed74444da940ab2a530776348362c5e2c07a0a30b2106dd4691bcbfa1e56a" + }, + { + "checksum": "sha256:ffe769e8d404589e60b0760d91669cd61e1320b5eeac85f9e8e624acdc845e76" + }, + { + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "checksum": "sha256:7938f537c7bd6641fbcb532c9259bb238ea3f6974aa4e4fecc8b883342347802" + }, + { + "checksum": "sha256:867505134ec44ec35124e76ffee812d34354b6916d40a56597c6178aca06f798" + }, + { + "checksum": "sha256:1f835437b274cf91162e1787bb922a738ce823df1c0bcbf1cbe7ba566e85f99f" + }, + { + "checksum": "sha256:b64037fee03ce41de72dda7e08008d70d99ec1a1b00fcd283ee04846e5d94a41" + }, + { + "checksum": "sha256:b8734650357f50eaebcadb9eb007ec10177160b20ecb7527bb7280abb7d46504" + }, + { + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "checksum": "sha256:201cb88c2d6ec79f015f1d8cf9f879d4b5127db0bf09b454554443c80b4ecd27" + }, + { + "checksum": "sha256:22069f81fb22bee7871e6368bec14602614aee7f81e8fd5c752b7023fd13de39" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.systemd", + "options": { + "enabled_services": [ + "NetworkManager.service", + "firewalld.service", + "rngd.service", + "sshd.service" + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + }, + { + "name": "org.osbuild.rpm-ostree", + "options": { + "etc_group_members": [ + "wheel", + "docker" + ] + } + } + ], + "assembler": { + "name": "org.osbuild.ostree.commit", + "options": { + "ref": "rhel/8/x86_64/edge", + "tar": { + "filename": "commit.tar" + } + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/acl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-4.4.19-12.el8.x86_64.rpm", + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/brotli-1.0.6-2.el8.x86_64.rpm", + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "name": "bubblewrap", + "epoch": 0, + "version": "0.4.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bubblewrap-0.4.0-1.el8.x86_64.rpm", + "checksum": "sha256:302bbd7fb5f0a8472eb5ddd24452d67d866c28d7467c58b577f2229e5be4a2b5" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-libs-1.0.6-26.el8.x86_64.rpm", + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chkconfig-1.13-2.el8.x86_64.rpm", + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-common-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cpio-2.12-8.el8.x86_64.rpm", + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-dicts-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-libs-2.3.3-1.el8.x86_64.rpm", + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/curl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.x86_64.rpm", + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-daemon-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-libs-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-tools-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-libs-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/diffutils-3.6-6.el8.x86_64.rpm", + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dosfstools-4.1-6.el8.x86_64.rpm", + "checksum": "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libelf-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libs-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/expat-2.2.5-4.el8.x86_64.rpm", + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-libs-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/filesystem-3.8-3.el8.x86_64.rpm", + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/findutils-4.6.0-20.el8.x86_64.rpm", + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/freetype-2.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "name": "fuse", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-2.9.7-12.el8.x86_64.rpm", + "checksum": "sha256:edd041a9e8d4168c5eccdc607fcb2e870a6fbfd89d305b05b2bc67f3c43f2f04" + }, + { + "name": "fuse-common", + "epoch": 0, + "version": "3.2.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-common-3.2.1-12.el8.x86_64.rpm", + "checksum": "sha256:4cb9b7259f44c8ca83c86dfb5c7a97cc33bf21898efe91769ea214458169a5c8" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-libs-2.9.7-12.el8.x86_64.rpm", + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gawk-4.2.1-1.el8.x86_64.rpm", + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-libs-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-libs-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib2-2.56.4-8.el8.x86_64.rpm", + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-all-langpacks-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-common-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gmp-6.1.2-10.el8.x86_64.rpm", + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-smime-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnutls-3.6.14-3.el8.x86_64.rpm", + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gpgme-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grep-3.1-6.el8.x86_64.rpm", + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-modules-2.02-84.el8.noarch.rpm", + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-extra-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-minimal-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grubby-8.40-41.el8.x86_64.rpm", + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gzip-1.9-9.el8.x86_64.rpm", + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hardlink-1.3-6.el8.x86_64.rpm", + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ima-evm-utils-1.1-5.el8.x86_64.rpm", + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/info-6.5-6.el8.x86_64.rpm", + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-libs-1.8.4-14.el8.x86_64.rpm", + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-c-0.13.1-0.2.el8.x86_64.rpm", + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-glib-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-2.0.4-10.el8.x86_64.rpm", + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-libs-1.5.10-6.el8.x86_64.rpm", + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-25-16.el8.x86_64.rpm", + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-libs-25-16.el8.x86_64.rpm", + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kpartx-0.8.4-2.el8.x86_64.rpm", + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/krb5-libs-1.18.2-3.el8.x86_64.rpm", + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libacl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.112", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libaio-0.3.112-1.el8.x86_64.rpm", + "checksum": "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libarchive-3.3.2-9.el8.x86_64.rpm", + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libassuan-2.5.1-3.el8.x86_64.rpm", + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libattr-2.4.48-3.el8.x86_64.rpm", + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libblkid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-2.26-4.el8.x86_64.rpm", + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-ng-0.7.9-5.el8.x86_64.rpm", + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcom_err-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcroco-0.6.12-4.el8.x86_64.rpm", + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcurl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-utils-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libevent-2.1.8-5.el8.x86_64.rpm", + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libfdisk-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libffi-3.1-22.el8.x86_64.rpm", + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcc-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcrypt-1.8.5-4.el8.x86_64.rpm", + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgomp-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgpg-error-1.31-1.el8.x86_64.rpm", + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libidn2-2.2.0-1.el8.x86_64.rpm", + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libksba-1.3.5-7.el8.x86_64.rpm", + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmetalink-0.1.3-7.el8.x86_64.rpm", + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd-2.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.16", + "release": "0.2.9.4.2", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd1-1.8.16-0.2.9.4.2.x86_64.rpm", + "checksum": "sha256:174fe6e1e1e86ab424f46a4fb60a13813bb2daf68837a3672835da5eab1d94fd" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmount-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.x86_64.rpm", + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64.rpm", + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpcap-1.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.34", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpng-1.6.34-5.el8.x86_64.rpm", + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpsl-0.20.2-6.el8.x86_64.rpm", + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpwquality-1.4.0-9.el8.x86_64.rpm", + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librepo-1.12.0-1.el8.x86_64.rpm", + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libreport-filesystem-2.9.5-11.el8.x86_64.rpm", + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librhsm-0.0.3-3.el8.x86_64.rpm", + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libseccomp-2.4.3-1.el8.x86_64.rpm", + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsecret-0.18.6-1.el8.x86_64.rpm", + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-utils-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsemanage-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsepol-2.9-1.el8.x86_64.rpm", + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsigsegv-2.11-5.el8.x86_64.rpm", + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmartcols-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsolv-0.7.11-1.el8.x86_64.rpm", + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libss-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-0.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstdc++-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtasn1-4.13-3.el8.x86_64.rpm", + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtirpc-1.1.4-4.el8.x86_64.rpm", + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libunistring-0.9.9-3.el8.x86_64.rpm", + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libusbx-1.0.23-3.el8.x86_64.rpm", + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libutempter-1.1.6-14.el8.x86_64.rpm", + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuuid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-0.3.0-5.el8.x86_64.rpm", + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxcrypt-4.1.1-4.el8.x86_64.rpm", + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxml2-2.9.7-8.el8.x86_64.rpm", + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libyaml-0.1.7-5.el8.x86_64.rpm", + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libzstd-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lua-libs-5.3.4-11.el8.x86_64.rpm", + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lz4-libs-1.8.3-2.el8.x86_64.rpm", + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mpfr-3.1.6-1.el8.x86_64.rpm", + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nettle-3.4.1-2.el8.x86_64.rpm", + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/npth-1.5-4.el8.x86_64.rpm", + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openldap-2.4.46-15.el8.x86_64.rpm", + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-libs-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-pkcs11-0.4.10-2.el8.x86_64.rpm", + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/os-prober-1.74-6.el8.x86_64.rpm", + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pam-1.3.1-11.el8.x86_64.rpm", + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre-8.42-4.el8.x86_64.rpm", + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre2-10.32-2.el8.x86_64.rpm", + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pigz-2.4-4.el8.x86_64.rpm", + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-2.9-9.el8.x86_64.rpm", + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-libs-0.115-11.el8.x86_64.rpm", + "checksum": "sha256:441efa6f0b9a9905ef11ec987d6db89e7dba2857060020c4554e32db3e59fce5" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/popt-1.16-14.el8.x86_64.rpm", + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/procps-ng-3.3.15-2.el8.x86_64.rpm", + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gpg-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-hawkey-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libs-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/readline-7.0-10.el8.x86_64.rpm", + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-eula-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-build-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sed-4.5-2.el8.x86_64.rpm", + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shadow-utils-4.6-10.el8.x86_64.rpm", + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shared-mime-info-1.9-3.el8.x86_64.rpm", + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-libs-3.26.0-10.el8.x86_64.rpm", + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-239-36.el8.x86_64.rpm", + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-libs-239-36.el8.x86_64.rpm", + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-pam-239-36.el8.x86_64.rpm", + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-udev-239-36.el8.x86_64.rpm", + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tar-1.30-5.el8.x86_64.rpm", + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-lib-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/util-linux-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/which-2.21-12.el8.x86_64.rpm", + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xfsprogs-5.0.0-4.el8.x86_64.rpm", + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-libs-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/zlib-1.2.11-15.el8.x86_64.rpm", + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxkbcommon-0.9.1-1.el8.x86_64.rpm", + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/memstrack-0.1.8-1.el8.x86_64.rpm", + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "name": "ostree", + "epoch": 0, + "version": "2020.3", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/ostree-2020.3-3.el8.x86_64.rpm", + "checksum": "sha256:8a439a12bb5aab57a2886913d53e36f5353df314fc8e842641865785e7368393" + }, + { + "name": "ostree-libs", + "epoch": 0, + "version": "2020.3", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/ostree-libs-2020.3-3.el8.x86_64.rpm", + "checksum": "sha256:669bb92df236ee87675feee01cdc6c7ec1f14f9e391c9dacba75d47a0d42c056" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pinentry-1.1.0-2.el8.x86_64.rpm", + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-unbound-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "name": "python36", + "epoch": 0, + "version": "3.6.8", + "release": "2.module+el8.1.0+3334+5cb623d7", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64.rpm", + "checksum": "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7" + }, + { + "name": "qemu-img", + "epoch": 15, + "version": "4.2.0", + "release": "29.module+el8.3.0+7212+401047e6", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64.rpm", + "checksum": "sha256:f2b58d2dfeb45318f8e9e67a96c4f02df69815149ce7b092233a02c0dea19f89" + }, + { + "name": "rpm-ostree", + "epoch": 0, + "version": "2020.2", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rpm-ostree-2020.2-2.el8.x86_64.rpm", + "checksum": "sha256:7938f537c7bd6641fbcb532c9259bb238ea3f6974aa4e4fecc8b883342347802" + }, + { + "name": "rpm-ostree-libs", + "epoch": 0, + "version": "2020.2", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rpm-ostree-libs-2020.2-2.el8.x86_64.rpm", + "checksum": "sha256:867505134ec44ec35124e76ffee812d34354b6916d40a56597c6178aca06f798" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/unbound-libs-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "packages": [ + { + "name": "ModemManager", + "epoch": 0, + "version": "1.10.8", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ModemManager-1.10.8-2.el8.x86_64.rpm", + "checksum": "sha256:81bb0f23e5603386587a256ed651157ec7ad572ff0ffe8ddc97e436f3673fe64" + }, + { + "name": "ModemManager-glib", + "epoch": 0, + "version": "1.10.8", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ModemManager-glib-1.10.8-2.el8.x86_64.rpm", + "checksum": "sha256:94fa34d24dec1e26a9d1c1e4e7213c87d792fafaf106d09daecfa25ac928e809" + }, + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:0027700684ce09927aded1d2c5bb84028529141a6b418897bde37d4af348f8bb" + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-libnm-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:6d0dcbaa45457461dd5c4afe97689fa2baf5f95551bbe5e827a152dee545a51d" + }, + { + "name": "NetworkManager-wifi", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-wifi-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:15fc9858886ef52dcf5666528778c4706c79ac056e1147758538144d298f6eab" + }, + { + "name": "NetworkManager-wwan", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-wwan-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:b202d2e1e1a02f48665d2dc8e58453c43c3ee53a784aee1fbefc775272561a22" + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/acl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "name": "attr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/attr-2.4.48-3.el8.x86_64.rpm", + "checksum": "sha256:6821905c8c4a0c4865a287bf1c33d07e03ba86f54f98a99ec9da55fa6a7280cc" + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:cc3df9449002eacd595a73df52eb973d3b37e4c03d4669c7dce6ce7a26dabd6b" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-4.4.19-12.el8.x86_64.rpm", + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "name": "bash-completion", + "epoch": 1, + "version": "2.7", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-completion-2.7-5.el8.noarch.rpm", + "checksum": "sha256:b705e2abbce31768f9dde08b2e3bb4756f2512ad22ac94f4bb6761c530b66f71" + }, + { + "name": "bind-export-libs", + "epoch": 32, + "version": "9.11.20", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bind-export-libs-9.11.20-3.el8.x86_64.rpm", + "checksum": "sha256:c24a1814f0fff7edcbd5cdca29571e8a79c5584e8ef300e89aef906b35c8a67d" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/brotli-1.0.6-2.el8.x86_64.rpm", + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "name": "bubblewrap", + "epoch": 0, + "version": "0.4.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bubblewrap-0.4.0-1.el8.x86_64.rpm", + "checksum": "sha256:302bbd7fb5f0a8472eb5ddd24452d67d866c28d7467c58b577f2229e5be4a2b5" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-libs-1.0.6-26.el8.x86_64.rpm", + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/checkpolicy-2.9-1.el8.x86_64.rpm", + "checksum": "sha256:a8808c053ffb7ccf826d80fdd458b6521f2cc63e55eb90d79a504fbb66c36cb0" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chkconfig-1.13-2.el8.x86_64.rpm", + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chrony-3.5-1.el8.x86_64.rpm", + "checksum": "sha256:10f40567d02123b71bd878ef423dd0d5dca415e806ff041c3c69b99d114fea84" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-common-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cpio-2.12-8.el8.x86_64.rpm", + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-dicts-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-2.3.3-1.el8.x86_64.rpm", + "checksum": "sha256:9cf95789e0e6910f313fe467515338cad855eb270aa35172b3ec18b54e9f2e69" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-libs-2.3.3-1.el8.x86_64.rpm", + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/curl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.x86_64.rpm", + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-daemon-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "name": "dbus-glib", + "epoch": 0, + "version": "0.110", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-glib-0.110-2.el8.x86_64.rpm", + "checksum": "sha256:802263173d9c487fc3ca584cc2a5b7b7bb49ac0d12d9026b3246d50fd0888fb1" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-libs-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-tools-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "name": "dbxtool", + "epoch": 0, + "version": "8", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbxtool-8-5.el8.x86_64.rpm", + "checksum": "sha256:2eb22d8c1bd8b825550a5edfdbf59038cd41173665f4e4428e3ce162b1929ec2" + }, + { + "name": "dejavu-fonts-common", + "epoch": 0, + "version": "2.35", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dejavu-fonts-common-2.35-6.el8.noarch.rpm", + "checksum": "sha256:7ce6aa282f9f23c46c44186595924d05f4e7a899b504eb95a0f87008f6620268" + }, + { + "name": "dejavu-sans-mono-fonts", + "epoch": 0, + "version": "2.35", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dejavu-sans-mono-fonts-2.35-6.el8.noarch.rpm", + "checksum": "sha256:dd379385bd1d2e05f50c4795e5a0eff9030fdac0fd2579bb4b56233257672b27" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "name": "device-mapper-event", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-event-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:4d29eb7b73080194cf0ff8961d99eaf3df21a1404f7f4b9b6e11cbf8332a22ec" + }, + { + "name": "device-mapper-event-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-event-libs-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:727707cf3dd8d6de8c680606498289f2b07a31e2611d4146a49240529f2f9165" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-libs-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "name": "device-mapper-persistent-data", + "epoch": 0, + "version": "0.8.5", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-persistent-data-0.8.5-3.el8.x86_64.rpm", + "checksum": "sha256:32de29c35eb7bf76c8cc6165ef7ccf6fff8b86e8622bbdb79631ca738e0652d2" + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-client-4.3.6-41.el8.x86_64.rpm", + "checksum": "sha256:289e2a39b2a29163a29da35936d4b484fe356d0a6d519524023e79686daf501b" + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-common-4.3.6-41.el8.noarch.rpm", + "checksum": "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2" + }, + { + "name": "dhcp-libs", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-libs-4.3.6-41.el8.x86_64.rpm", + "checksum": "sha256:e0cde0185535bd50f7c5e5e2c0c19b5ab086b6bfa8cea95af9d56ffc81cb26b7" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/diffutils-3.6-6.el8.x86_64.rpm", + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "name": "dmidecode", + "epoch": 1, + "version": "3.2", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dmidecode-3.2-6.el8.x86_64.rpm", + "checksum": "sha256:686015c78247edec0a0f5e0d2cbbf02d9feea162e5967ed5b5be35d3951b1f3d" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dnf-plugin-subscription-manager", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugin-subscription-manager-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:c5e978963bda83e9321563bb18f69f3753f2eb510dfdafdc6c4e2856dc6b6302" + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dosfstools-4.1-6.el8.x86_64.rpm", + "checksum": "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-config-generic-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:40010441888b72dd077d4d6790f837236701b93c8b31da5dbf65c700fd2571fd" + }, + { + "name": "dracut-network", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-network-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:1faa85c12115426d8afc51c8bed2e71bf1dd87063e25052bcf85c17dbc0d9ea4" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "name": "efi-filesystem", + "epoch": 0, + "version": "3", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/efi-filesystem-3-2.el8.noarch.rpm", + "checksum": "sha256:17501958f52d2db1417cab8dd5ca261bf447fd93eb62b80173f9875c3012b700" + }, + { + "name": "efibootmgr", + "epoch": 0, + "version": "16", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/efibootmgr-16-1.el8.x86_64.rpm", + "checksum": "sha256:d5130266a054d7cc7cbfe68f84a7dd8d1668518d87361235d12a993bc0750a5d" + }, + { + "name": "efivar", + "epoch": 0, + "version": "36", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/efivar-36-1.el8.x86_64.rpm", + "checksum": "sha256:93728095128161579fd13ef8bb0687c6a92f4f59e9b044ac056dc52fb44bf054" + }, + { + "name": "efivar-libs", + "epoch": 0, + "version": "36", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/efivar-libs-36-1.el8.x86_64.rpm", + "checksum": "sha256:a3942170aae588787e37dea8a3f49fe4f59efb377b08fc8c6b307df48bb4edc5" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libelf-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libs-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/expat-2.2.5-4.el8.x86_64.rpm", + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-libs-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/filesystem-3.8-3.el8.x86_64.rpm", + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/findutils-4.6.0-20.el8.x86_64.rpm", + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "name": "firewalld", + "epoch": 0, + "version": "0.8.2", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/firewalld-0.8.2-1.el8.noarch.rpm", + "checksum": "sha256:c5098f41849af65b808baac594539440fcdffea7afce4239eb41885eccfd67e2" + }, + { + "name": "firewalld-filesystem", + "epoch": 0, + "version": "0.8.2", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/firewalld-filesystem-0.8.2-1.el8.noarch.rpm", + "checksum": "sha256:769b1ac34ba3aa35337b734b8548dcf9e8b41476b9b2093756341bcbd5969a36" + }, + { + "name": "fontpackages-filesystem", + "epoch": 0, + "version": "1.44", + "release": "22.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fontpackages-filesystem-1.44-22.el8.noarch.rpm", + "checksum": "sha256:db1fad3c2d8735e69084bd4b09ea963938e4dde2f2e096dc7a4ce146f18b7ab0" + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/freetype-2.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "name": "fuse", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-2.9.7-12.el8.x86_64.rpm", + "checksum": "sha256:edd041a9e8d4168c5eccdc607fcb2e870a6fbfd89d305b05b2bc67f3c43f2f04" + }, + { + "name": "fuse-common", + "epoch": 0, + "version": "3.2.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-common-3.2.1-12.el8.x86_64.rpm", + "checksum": "sha256:4cb9b7259f44c8ca83c86dfb5c7a97cc33bf21898efe91769ea214458169a5c8" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-libs-2.9.7-12.el8.x86_64.rpm", + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "name": "fuse3-libs", + "epoch": 0, + "version": "3.2.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse3-libs-3.2.1-12.el8.x86_64.rpm", + "checksum": "sha256:37582049ed88df6e03737825880fee090de4be0e13859b8f055973b6e1828d86" + }, + { + "name": "fwupd", + "epoch": 0, + "version": "1.4.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fwupd-1.4.1-1.el8.x86_64.rpm", + "checksum": "sha256:d892992a9499de86fceb65e9d5f53e278dc04ffa9a36fce5c8512acba00a04fc" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gawk-4.2.1-1.el8.x86_64.rpm", + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-libs-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-libs-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "name": "glib-networking", + "epoch": 0, + "version": "2.56.1", + "release": "1.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib-networking-2.56.1-1.1.el8.x86_64.rpm", + "checksum": "sha256:c7e767d836fe8aef670eba2fde4f593996fbc0fb304a6666dcd53c0f9af7d184" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib2-2.56.4-8.el8.x86_64.rpm", + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-common-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "name": "glibc-minimal-langpack", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-minimal-langpack-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:be9951df68a9f6a095a3bda9575ff3890f992d750411d97ad8aa00d5fe5a1916" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gmp-6.1.2-10.el8.x86_64.rpm", + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-smime-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnutls-3.6.14-3.el8.x86_64.rpm", + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.56.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gobject-introspection-1.56.1-1.el8.x86_64.rpm", + "checksum": "sha256:1065049dbd53849d35db269a23be54148cbe481122381ab71b72f62e83816b26" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gpgme-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grep-3.1-6.el8.x86_64.rpm", + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-efi-x64", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-efi-x64-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:f0662bbece3450b8f9ec4824bf374d7a906b243ab042354baa1e483f8859ef93" + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-modules-2.02-84.el8.noarch.rpm", + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-extra-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-minimal-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grubby-8.40-41.el8.x86_64.rpm", + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "name": "gsettings-desktop-schemas", + "epoch": 0, + "version": "3.32.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gsettings-desktop-schemas-3.32.0-5.el8.x86_64.rpm", + "checksum": "sha256:af541250a77d208a4128b792479f368c91771d5d7fabac96f768af451eaff154" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gzip-1.9-9.el8.x86_64.rpm", + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hardlink-1.3-6.el8.x86_64.rpm", + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.20", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hostname-3.20-6.el8.x86_64.rpm", + "checksum": "sha256:fdcc4180cae8fa83ca54188fc2f6796a1bc8d7eb7106163b98dd93d974b48cd1" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ima-evm-utils-1.1-5.el8.x86_64.rpm", + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/info-6.5-6.el8.x86_64.rpm", + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.00.8", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/initscripts-10.00.8-1.el8.x86_64.rpm", + "checksum": "sha256:350657e984b1736bb4a8c9cc01b772517a4194467d6db84110c1cc42131f1cae" + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.2.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipcalc-0.2.4-4.el8.x86_64.rpm", + "checksum": "sha256:206de21c82d76de550bcc1959138472640b0a950a311b753203f5dfe5b201b7b" + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.3.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iproute-5.3.0-5.el8.x86_64.rpm", + "checksum": "sha256:4405d32322fd496c65f57a12b6037fd75b49957269dbf9cb0417b598162f7407" + }, + { + "name": "ipset", + "epoch": 0, + "version": "7.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipset-7.1-1.el8.x86_64.rpm", + "checksum": "sha256:c193b87ad1690e81ca35ec1f1f7dff94f179907ed13d5b7936c189ff5f8f2bae" + }, + { + "name": "ipset-libs", + "epoch": 0, + "version": "7.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipset-libs-7.1-1.el8.x86_64.rpm", + "checksum": "sha256:3d807ee0bd43ba2cfbc5fa3678963fb706898bd41588a29330c315a9d88ab2a7" + }, + { + "name": "iptables", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-1.8.4-14.el8.x86_64.rpm", + "checksum": "sha256:f83dc47f0c2ac234e15d5687951285c23576fd2efcc615656c8585f2495456b6" + }, + { + "name": "iptables-ebtables", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-ebtables-1.8.4-14.el8.x86_64.rpm", + "checksum": "sha256:8716781f69e8f2bf3f171ed6a34a012f79dc76ce0bcfa318fa0b02d488173ee1" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-libs-1.8.4-14.el8.x86_64.rpm", + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "name": "iputils", + "epoch": 0, + "version": "20180629", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iputils-20180629-2.el8.x86_64.rpm", + "checksum": "sha256:a8961c50502aa02071c043a16f93399ac6794a058a0ef42be889abe60f35985b" + }, + { + "name": "iwl100-firmware", + "epoch": 0, + "version": "39.31.5.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl100-firmware-39.31.5.1-99.el8.1.noarch.rpm", + "checksum": "sha256:cf6220736fdd005ba7c67ccb5d5d8a1d9c35718e3c13e79c80967866968d7344" + }, + { + "name": "iwl1000-firmware", + "epoch": 1, + "version": "39.31.5.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl1000-firmware-39.31.5.1-99.el8.1.noarch.rpm", + "checksum": "sha256:1bc038693be7ccd59674c478176c3badce4a56f785dd0690548b087bcc7adaa1" + }, + { + "name": "iwl105-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl105-firmware-18.168.6.1-99.el8.1.noarch.rpm", + "checksum": "sha256:959fcb0016788a2b1ee55f0801c1490b196416579bc9ac9da9e38786e6c78ff6" + }, + { + "name": "iwl135-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl135-firmware-18.168.6.1-99.el8.1.noarch.rpm", + "checksum": "sha256:204e4dbaf357e12ff041c1c203b2527f7d178905ebae53db3c12e57d28fcbf46" + }, + { + "name": "iwl2000-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl2000-firmware-18.168.6.1-99.el8.1.noarch.rpm", + "checksum": "sha256:72fe0e1837aa503049fada31c6e8ae73a4e550be2ddfd73303fb84e955fcc268" + }, + { + "name": "iwl2030-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl2030-firmware-18.168.6.1-99.el8.1.noarch.rpm", + "checksum": "sha256:f8c30f90610f8cc907009df99348a5e572f5598aed91280c15af604ba62687b2" + }, + { + "name": "iwl3160-firmware", + "epoch": 1, + "version": "25.30.13.0", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl3160-firmware-25.30.13.0-99.el8.1.noarch.rpm", + "checksum": "sha256:5cbe058e6d2177f88006fed866e6b1565d6024a12c311ae8eaa21008f76074b1" + }, + { + "name": "iwl5000-firmware", + "epoch": 0, + "version": "8.83.5.1_1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl5000-firmware-8.83.5.1_1-99.el8.1.noarch.rpm", + "checksum": "sha256:b55b77fb38d84685cef6638240daa54235fce156176c820a3c3b980bf414c5f4" + }, + { + "name": "iwl5150-firmware", + "epoch": 0, + "version": "8.24.2.2", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl5150-firmware-8.24.2.2-99.el8.1.noarch.rpm", + "checksum": "sha256:252d46d58e0c02cbe2d2485488bd63ea7129964643787557eae832102541f84f" + }, + { + "name": "iwl6000-firmware", + "epoch": 0, + "version": "9.221.4.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl6000-firmware-9.221.4.1-99.el8.1.noarch.rpm", + "checksum": "sha256:56cc340c88cabacd9a329f80edee141154dbf84808894e43a937247394623cf0" + }, + { + "name": "iwl6050-firmware", + "epoch": 0, + "version": "41.28.5.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl6050-firmware-41.28.5.1-99.el8.1.noarch.rpm", + "checksum": "sha256:8eb3370fe641e329b03838e560f45ee290b273dcccfa182d97ad2dbff59b47fd" + }, + { + "name": "iwl7260-firmware", + "epoch": 1, + "version": "25.30.13.0", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl7260-firmware-25.30.13.0-99.el8.1.noarch.rpm", + "checksum": "sha256:1d28eaeaa59c48e4193c709dd2a6301c2f8701138164c05371a0d8f235d14c9c" + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.11", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/jansson-2.11-3.el8.x86_64.rpm", + "checksum": "sha256:39e59e9a2460e3b6fe147501e79a57042f161c217963be212359031bb8b18daa" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-c-0.13.1-0.2.el8.x86_64.rpm", + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-glib-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-2.0.4-10.el8.x86_64.rpm", + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "kernel", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:eb5e29df2e7f803a62769aa19c60959ee7d368cd51397e00ebdbedba7d2d4768" + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-core-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:76ca09c73360f48d4b6fe4d4ee0aa974ef53531222df8e363d8006ec469051cf" + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-modules-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:97c8af6f58e3d14317036bd3ed2cbc498803c91c55b9dc0e8f0fddea7ac929e3" + }, + { + "name": "keyutils", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-1.5.10-6.el8.x86_64.rpm", + "checksum": "sha256:761ff1ccc95562a4512c4bea1d4c2b507c42e3805c9e1e0093c80539a954047b" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-libs-1.5.10-6.el8.x86_64.rpm", + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-25-16.el8.x86_64.rpm", + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-libs-25-16.el8.x86_64.rpm", + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kpartx-0.8.4-2.el8.x86_64.rpm", + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/krb5-libs-1.18.2-3.el8.x86_64.rpm", + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "name": "less", + "epoch": 0, + "version": "530", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/less-530-1.el8.x86_64.rpm", + "checksum": "sha256:68362500ad574eb2df43a3d260ab8d0f3ce1ae5f34e66d71f2478fef8e17cb4a" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libacl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.112", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libaio-0.3.112-1.el8.x86_64.rpm", + "checksum": "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libarchive-3.3.2-9.el8.x86_64.rpm", + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libassuan-2.5.1-3.el8.x86_64.rpm", + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libattr-2.4.48-3.el8.x86_64.rpm", + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libblkid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-2.26-4.el8.x86_64.rpm", + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-ng-0.7.9-5.el8.x86_64.rpm", + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcom_err-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcroco-0.6.12-4.el8.x86_64.rpm", + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcurl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-utils-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "23.20170329cvs.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libedit-3.1-23.20170329cvs.el8.x86_64.rpm", + "checksum": "sha256:0391105afa53c9503b59591615bd7c98e2f7a4cd94ff4fd1451c4234522f3880" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libevent-2.1.8-5.el8.x86_64.rpm", + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libfdisk-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libffi-3.1-22.el8.x86_64.rpm", + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "name": "libgcab1", + "epoch": 0, + "version": "1.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcab1-1.1-1.el8.x86_64.rpm", + "checksum": "sha256:30a2e433b8dace2788780dd1924f2928a3111e7934733a9d3fdd0ff4a16e7e32" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcc-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcrypt-1.8.5-4.el8.x86_64.rpm", + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgomp-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgpg-error-1.31-1.el8.x86_64.rpm", + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "name": "libgudev", + "epoch": 0, + "version": "232", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgudev-232-4.el8.x86_64.rpm", + "checksum": "sha256:713ec69b972a8e88622b3fcd3b84fccdbd6c333b68b6c52151c2350edad2576a" + }, + { + "name": "libgusb", + "epoch": 0, + "version": "0.3.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgusb-0.3.0-1.el8.x86_64.rpm", + "checksum": "sha256:305ec4b5026b8ecffdfdf253e24c96aba795e9d07d17d3cad2d9e5573b641728" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libidn2-2.2.0-1.el8.x86_64.rpm", + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libksba-1.3.5-7.el8.x86_64.rpm", + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "name": "libmbim", + "epoch": 0, + "version": "1.20.2", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmbim-1.20.2-1.el8.x86_64.rpm", + "checksum": "sha256:208dcd6b67c5d9569f64bcc259b365db3abdd0e786494a50a556dbf65355cd9a" + }, + { + "name": "libmbim-utils", + "epoch": 0, + "version": "1.20.2", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmbim-utils-1.20.2-1.el8.x86_64.rpm", + "checksum": "sha256:5117d1fa4938afcd75e3d0882316afda5b09c532205a75f47f6f26b443fff019" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmetalink-0.1.3-7.el8.x86_64.rpm", + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmnl-1.0.4-6.el8.x86_64.rpm", + "checksum": "sha256:9c5594fcac97c0f8813d7a188e2368e3b1095025fc4a0ecbd5d17e54c0c93f97" + }, + { + "name": "libmodman", + "epoch": 0, + "version": "2.0.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodman-2.0.1-17.el8.x86_64.rpm", + "checksum": "sha256:0602b342148d5e8e6a954bb26af60ed63d3f3d919cd3856ea93612e05ebe2937" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd-2.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "name": "libmodulemd1", + "epoch": 0, + "version": "1.8.16", + "release": "0.2.9.4.2", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd1-1.8.16-0.2.9.4.2.x86_64.rpm", + "checksum": "sha256:174fe6e1e1e86ab424f46a4fb60a13813bb2daf68837a3672835da5eab1d94fd" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmount-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libndp-1.7-3.el8.x86_64.rpm", + "checksum": "sha256:53fb6834e2e439e79225d957c4643922da74836417b5558d0c2943b546b26e57" + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.6", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnetfilter_conntrack-1.0.6-5.el8.x86_64.rpm", + "checksum": "sha256:74d05cb72dc6740be73480e68b15b209d7e7a2bf7d7d54e0d3a2dc261ce64e4b" + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "13.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnfnetlink-1.0.1-13.el8.x86_64.rpm", + "checksum": "sha256:61cf7338e12188f787c7162e2cd669c895e4e2cf4ae86c9debcd56fd3b8a8322" + }, + { + "name": "libnftnl", + "epoch": 0, + "version": "1.1.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnftnl-1.1.5-4.el8.x86_64.rpm", + "checksum": "sha256:b05032d419c29bfbe60b3495dab9b368865e2154b1b25d87b1e4f5b379226747" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.x86_64.rpm", + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-3.5.0-1.el8.x86_64.rpm", + "checksum": "sha256:0129696c208f60326723c650295167b0600791ccb2e9c3d446c4caf9adecb3d7" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64.rpm", + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpcap-1.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "name": "libpkgconf", + "epoch": 0, + "version": "1.4.2", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpkgconf-1.4.2-1.el8.x86_64.rpm", + "checksum": "sha256:96fadfed6a8225a89b331e7b62ed8ee74b393cea1520fa0d89f6f0dc1a458fb3" + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.34", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpng-1.6.34-5.el8.x86_64.rpm", + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "name": "libproxy", + "epoch": 0, + "version": "0.4.15", + "release": "5.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libproxy-0.4.15-5.2.el8.x86_64.rpm", + "checksum": "sha256:ecd2a9cc865d694f02273ca7a6b970a6a799b679174dead75ec7c34ff710ffd2" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpsl-0.20.2-6.el8.x86_64.rpm", + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpwquality-1.4.0-9.el8.x86_64.rpm", + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "name": "libqb", + "epoch": 0, + "version": "1.0.3", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libqb-1.0.3-12.el8.x86_64.rpm", + "checksum": "sha256:a506765865ee31210532f16af156f54ea9431ba1763269d3a39c9ebf0adf5163" + }, + { + "name": "libqmi", + "epoch": 0, + "version": "1.24.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libqmi-1.24.0-1.el8.x86_64.rpm", + "checksum": "sha256:19c4c7dec378a3c21c8f2d4b9940fcf27f06fb1edf773eaeb185f664cb439a52" + }, + { + "name": "libqmi-utils", + "epoch": 0, + "version": "1.24.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libqmi-utils-1.24.0-1.el8.x86_64.rpm", + "checksum": "sha256:abd8e1106f0e251c2ce3d272ddaa14b2afccef2d9d3adaf5d832331ee53a083a" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librepo-1.12.0-1.el8.x86_64.rpm", + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libreport-filesystem-2.9.5-11.el8.x86_64.rpm", + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librhsm-0.0.3-3.el8.x86_64.rpm", + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libseccomp-2.4.3-1.el8.x86_64.rpm", + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsecret-0.18.6-1.el8.x86_64.rpm", + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-utils-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsemanage-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsepol-2.9-1.el8.x86_64.rpm", + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsigsegv-2.11-5.el8.x86_64.rpm", + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmartcols-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "name": "libsmbios", + "epoch": 0, + "version": "2.4.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmbios-2.4.1-2.el8.x86_64.rpm", + "checksum": "sha256:8a2de5f0e170c44199145a6fa047c888eb6fcc00f67da35e452ab493b30c3f2e" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsolv-0.7.11-1.el8.x86_64.rpm", + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "name": "libsoup", + "epoch": 0, + "version": "2.62.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsoup-2.62.3-1.el8.x86_64.rpm", + "checksum": "sha256:6cab44ed85c7dc821e84fab9d383f7d0a4b299cc29c8f0860b13e82bb0da8d6f" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libss-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-0.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstdc++-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "name": "libsysfs", + "epoch": 0, + "version": "2.1.0", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsysfs-2.1.0-24.el8.x86_64.rpm", + "checksum": "sha256:3a1058c6ba468722090a74002a3239161771b0d8b444975bff891afd45bb672a" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtasn1-4.13-3.el8.x86_64.rpm", + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtirpc-1.1.4-4.el8.x86_64.rpm", + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libunistring-0.9.9-3.el8.x86_64.rpm", + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libusbx-1.0.23-3.el8.x86_64.rpm", + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "23.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuser-0.62-23.el8.x86_64.rpm", + "checksum": "sha256:b2dcbd3b81196b16e33054d31c0129c432cf59fb591035845cc299bbb46000c1" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libutempter-1.1.6-14.el8.x86_64.rpm", + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuuid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "name": "libvarlink", + "epoch": 0, + "version": "18", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libvarlink-18-3.el8.x86_64.rpm", + "checksum": "sha256:a02b145714b69ed058183ad98ec2685101f15ce21941167ab39746831b777ce9" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-0.3.0-5.el8.x86_64.rpm", + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxcrypt-4.1.1-4.el8.x86_64.rpm", + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxml2-2.9.7-8.el8.x86_64.rpm", + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "name": "libxmlb", + "epoch": 0, + "version": "0.1.15", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxmlb-0.1.15-1.el8.x86_64.rpm", + "checksum": "sha256:aecd902d4dd2636c381d15ed39eb556d828c16dd3ce7d53e5a8ff92c499ba080" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libyaml-0.1.7-5.el8.x86_64.rpm", + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libzstd-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20200619", + "release": "99.git3890db36.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/linux-firmware-20200619-99.git3890db36.el8.noarch.rpm", + "checksum": "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lua-libs-5.3.4-11.el8.x86_64.rpm", + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "name": "lvm2", + "epoch": 8, + "version": "2.03.09", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lvm2-2.03.09-3.el8.x86_64.rpm", + "checksum": "sha256:e2f7c7b524ad9a613d523c0b4635491618186917ae08884a1744b46899ace566" + }, + { + "name": "lvm2-libs", + "epoch": 8, + "version": "2.03.09", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lvm2-libs-2.03.09-3.el8.x86_64.rpm", + "checksum": "sha256:6dad00c0d3a861f027ebf65ecaeb51e867a7324fd920d4eb9f8e4ad7eca58f44" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lz4-libs-1.8.3-2.el8.x86_64.rpm", + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "name": "microcode_ctl", + "epoch": 4, + "version": "20200609", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/microcode_ctl-20200609-2.el8.x86_64.rpm", + "checksum": "sha256:0e4b7687f0c62f4e336223b939f6cb169c8dac49eee23c53fd919e58d8f989df" + }, + { + "name": "mokutil", + "epoch": 1, + "version": "0.3.0", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mokutil-0.3.0-9.el8.x86_64.rpm", + "checksum": "sha256:2d918b1022e83745d9f9568c0572eaf9859c62ffdd10a111e5ce64bb770fef36" + }, + { + "name": "mozjs60", + "epoch": 0, + "version": "60.9.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mozjs60-60.9.0-4.el8.x86_64.rpm", + "checksum": "sha256:fd9e5c379cd3482d32686fb13881827a39037e7a7afa92c62d58c1f05fcb797f" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mpfr-3.1.6-1.el8.x86_64.rpm", + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nettle-3.4.1-2.el8.x86_64.rpm", + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "name": "nftables", + "epoch": 1, + "version": "0.9.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nftables-0.9.3-14.el8.x86_64.rpm", + "checksum": "sha256:5ac24d7513e9daa137064985cd8a8774c94aa8a6c07e2814d0c56ddde33fcc8d" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/npth-1.5-4.el8.x86_64.rpm", + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openldap-2.4.46-15.el8.x86_64.rpm", + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-8.0p1-5.el8.x86_64.rpm", + "checksum": "sha256:b5fc6f35798edccd0390e54fce40290936c3699227e79cc6d1a42d803358fd03" + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-clients-8.0p1-5.el8.x86_64.rpm", + "checksum": "sha256:3730f3f8d3332836f278250408891cb097379a5d7745fe698b1d418e9e13d335" + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-server-8.0p1-5.el8.x86_64.rpm", + "checksum": "sha256:fd7bc748b59a48a1ba803dc893be729c8624a4141e23fcef126a401857bbb455" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-libs-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-pkcs11-0.4.10-2.el8.x86_64.rpm", + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/os-prober-1.74-6.el8.x86_64.rpm", + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pam-1.3.1-11.el8.x86_64.rpm", + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/passwd-0.80-3.el8.x86_64.rpm", + "checksum": "sha256:7c0b2b064dad700cba2754b46f483e3e59aaf798740470df1daad3d5239fb893" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre-8.42-4.el8.x86_64.rpm", + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre2-10.32-2.el8.x86_64.rpm", + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pigz-2.4-4.el8.x86_64.rpm", + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "name": "pkgconf", + "epoch": 0, + "version": "1.4.2", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pkgconf-1.4.2-1.el8.x86_64.rpm", + "checksum": "sha256:b9d0a4c0e16db4c05b2d0690216d8c5da2db7d67bc765a00ce2a32c5f810c245" + }, + { + "name": "pkgconf-m4", + "epoch": 0, + "version": "1.4.2", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pkgconf-m4-1.4.2-1.el8.noarch.rpm", + "checksum": "sha256:9a89874a5b8326c85c0b34b02c122ffc052b32a12b20354ce95859ac5296a159" + }, + { + "name": "pkgconf-pkg-config", + "epoch": 0, + "version": "1.4.2", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pkgconf-pkg-config-1.4.2-1.el8.x86_64.rpm", + "checksum": "sha256:1c4a8674eafc31d36030f3fd0c081326d4301570d4e35b59d6f6ef1e163f655b" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-2.9-9.el8.x86_64.rpm", + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "name": "policycoreutils-python-utils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-python-utils-2.9-9.el8.noarch.rpm", + "checksum": "sha256:b4fb3d8b0255a5ba9456b61e4f479f2f8355d171263508bbe869af677015fd97" + }, + { + "name": "polkit", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-0.115-11.el8.x86_64.rpm", + "checksum": "sha256:8af00d4b0857240310156e05123e07795e6573da7c1fe9e7fd83b51f13971725" + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-libs-0.115-11.el8.x86_64.rpm", + "checksum": "sha256:441efa6f0b9a9905ef11ec987d6db89e7dba2857060020c4554e32db3e59fce5" + }, + { + "name": "polkit-pkla-compat", + "epoch": 0, + "version": "0.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-pkla-compat-0.1-12.el8.x86_64.rpm", + "checksum": "sha256:9a9ca6857f517f1249d2eb496fe904590d6203e4a9547a28e0b23f21c4cae24a" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/popt-1.16-14.el8.x86_64.rpm", + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/procps-ng-3.3.15-2.el8.x86_64.rpm", + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:8f00781eb679c6baf359099fa2a672ffccfc8e43b7c03c1dc635619cb25ff01d" + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.6.1", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm", + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.4", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dbus-1.2.4-15.el8.x86_64.rpm", + "checksum": "sha256:5a85222c8e9997a8b609b915a8fbae756de9b9bff732db852fb15fe0524f2d86" + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.2.1", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm", + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "name": "python3-dmidecode", + "epoch": 0, + "version": "3.12.2", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dmidecode-3.12.2-15.el8.x86_64.rpm", + "checksum": "sha256:d2b777ea98ee644997029994136723cf4fa78e97afeaceab39f76b545b51792b" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-plugins-core-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87" + }, + { + "name": "python3-ethtool", + "epoch": 0, + "version": "0.14", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ethtool-0.14-3.el8.x86_64.rpm", + "checksum": "sha256:20dec130e4fd0a2146443791ca7ade6e079cea691d93711813d5f483b691c55a" + }, + { + "name": "python3-firewall", + "epoch": 0, + "version": "0.8.2", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-firewall-0.8.2-1.el8.noarch.rpm", + "checksum": "sha256:c9b3c6dcb4133c3051e3f75978f994aae4c0ad84dd1abbae7fcba497ee524603" + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.28.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gobject-base-3.28.3-2.el8.x86_64.rpm", + "checksum": "sha256:86d305a1466a596f8b436561d674f2510f268bed9e73f56c87da1dd120f99c18" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gpg-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-hawkey-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "name": "python3-iniparse", + "epoch": 0, + "version": "0.4", + "release": "31.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm", + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "name": "python3-inotify", + "epoch": 0, + "version": "0.9.6", + "release": "13.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm", + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "name": "python3-librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-librepo-1.12.0-1.el8.x86_64.rpm", + "checksum": "sha256:4ca553b0c0f6dc130e05e2011cdf1f52132e8f70bd93be8eee4e415b2cac0c56" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libs-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libselinux-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:9487bff6bb16e7326c8b805751580b4593220ba19b06515c69de83fee8e3bb1f" + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libsemanage-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:09fc3154e76c8ee25b3982c15f3bc455017262c3df5af84075859dcbf79e4f82" + }, + { + "name": "python3-libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libxml2-2.9.7-8.el8.x86_64.rpm", + "checksum": "sha256:4ccbefcbe75decfef38ccae5d8ff92ba6b00e8232b64ec46ae0c0be8ae20ec50" + }, + { + "name": "python3-nftables", + "epoch": 1, + "version": "0.9.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-nftables-0.9.3-14.el8.x86_64.rpm", + "checksum": "sha256:08bf2e898b5775317d04266f4598eddbe06c424a3694b1534e3ceff088e2e8ca" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-policycoreutils-2.9-9.el8.noarch.rpm", + "checksum": "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.3.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setools-4.3.0-1.el8.x86_64.rpm", + "checksum": "sha256:cb8e7909d58206223ad7108a850218360a6b1e2147d97bc94097962dc820d0de" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.11.0", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm", + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "name": "python3-slip", + "epoch": 0, + "version": "0.6.4", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-slip-0.6.4-11.el8.noarch.rpm", + "checksum": "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb" + }, + { + "name": "python3-slip-dbus", + "epoch": 0, + "version": "0.6.4", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-slip-dbus-0.6.4-11.el8.noarch.rpm", + "checksum": "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d" + }, + { + "name": "python3-subscription-manager-rhsm", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-subscription-manager-rhsm-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:0f3b084d947bc246fe68822129b8ae1294c4187270a19f0966282baf75b34dc6" + }, + { + "name": "python3-syspurpose", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-syspurpose-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:206cba480b58c70348584010d547d21bcd84c6094fd3980e22c6b640da12704c" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/readline-7.0-10.el8.x86_64.rpm", + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-eula-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "name": "rng-tools", + "epoch": 0, + "version": "6.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rng-tools-6.8-3.el8.x86_64.rpm", + "checksum": "sha256:9d9d1bdfba4cd852f90232ebe2c4247e7b3a88c4476578c820788a91d6838e55" + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "22.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rootfiles-8.1-22.el8.noarch.rpm", + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-build-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "name": "rsync", + "epoch": 0, + "version": "3.1.3", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rsync-3.1.3-8.el8.x86_64.rpm", + "checksum": "sha256:3e180253732f00c919aaebc9aaa0562eefac466ce145ce5ad5e1092453aeebaa" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sed-4.5-2.el8.x86_64.rpm", + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setools-console", + "epoch": 0, + "version": "4.3.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setools-console-4.3.0-1.el8.x86_64.rpm", + "checksum": "sha256:d7d28747d0e214c60a9a294d95ac23cf43c1195bf5b8a3e76cfda7484664ee03" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shadow-utils-4.6-10.el8.x86_64.rpm", + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shared-mime-info-1.9-3.el8.x86_64.rpm", + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "name": "shim-x64", + "epoch": 0, + "version": "15", + "release": "12", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shim-x64-15-12.x86_64.rpm", + "checksum": "sha256:4aa9d275ca72dc68e995a0bd9709db7f4934c5c1599690aa5dbab1d6c213323d" + }, + { + "name": "sqlite", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-3.26.0-10.el8.x86_64.rpm", + "checksum": "sha256:48aa6045e9d52f12f42fc9146e6f7890d279450c60345daa8637ab23034f56dc" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-libs-3.26.0-10.el8.x86_64.rpm", + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "name": "subscription-manager", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:65dc391ab1c96d1009ef2e7706eabacd5cf84f2a47ea1cc87f6f5e2c1324b178" + }, + { + "name": "subscription-manager-rhsm-certificates", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-rhsm-certificates-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:99fa92b5d1e0d335fb2bb961ef39988b50968350b899e8790cead73c9a0bec65" + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.8.29", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sudo-1.8.29-6.el8.x86_64.rpm", + "checksum": "sha256:ec9adedf0d5d2d096acf4739e2eefab8095498037e13dac9b283e17a9c54259a" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-239-36.el8.x86_64.rpm", + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-libs-239-36.el8.x86_64.rpm", + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-pam-239-36.el8.x86_64.rpm", + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-udev-239-36.el8.x86_64.rpm", + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tar-1.30-5.el8.x86_64.rpm", + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "name": "timedatex", + "epoch": 0, + "version": "0.5", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/timedatex-0.5-3.el8.x86_64.rpm", + "checksum": "sha256:d4dc248be7aacad57e6684036d48d7fc1697bb0f1aa880c2a77dbd3ed714c642" + }, + { + "name": "tmux", + "epoch": 0, + "version": "2.7", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tmux-2.7-1.el8.x86_64.rpm", + "checksum": "sha256:e4d6897cd7f3a8475b14e575205865135cfebdf6f1687e99f7a14378010d6f39" + }, + { + "name": "tpm2-tools", + "epoch": 0, + "version": "4.1.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tpm2-tools-4.1.1-1.el8.x86_64.rpm", + "checksum": "sha256:5ac39f58cbbe8a5971f6e8fc1f7fafbcf3f9220b2026ee563ec24fe25d86ede0" + }, + { + "name": "tpm2-tss", + "epoch": 0, + "version": "2.3.2", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tpm2-tss-2.3.2-2.el8.x86_64.rpm", + "checksum": "sha256:8e5a8fce6731ba091ffcd39479919f79a88877082ff661069cb31450bba98eff" + }, + { + "name": "traceroute", + "epoch": 3, + "version": "2.1.0", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/traceroute-2.1.0-6.el8.x86_64.rpm", + "checksum": "sha256:876a401451123153602105832e8f711af4931985a86ad3bae0817f9584496cf2" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-lib-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "usermode", + "epoch": 0, + "version": "1.113", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/usermode-1.113-1.el8.x86_64.rpm", + "checksum": "sha256:98a589d7e1cdea9d974aa43f688e55333eed11ce7cb2037d45cc2e69bce579b3" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/util-linux-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.0.1763", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/vim-minimal-8.0.1763-15.el8.x86_64.rpm", + "checksum": "sha256:947b4e4eebec21501ca62e2a7ff9baae0e4e7c59584fbba4b6276a402cfbb45b" + }, + { + "name": "virt-what", + "epoch": 0, + "version": "1.18", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/virt-what-1.18-6.el8.x86_64.rpm", + "checksum": "sha256:2cfcc3d6163dfaf7ce76998be992bd0b70dd7cbb838430cecf2aff04cd435d24" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/which-2.21-12.el8.x86_64.rpm", + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "name": "wpa_supplicant", + "epoch": 1, + "version": "2.9", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/wpa_supplicant-2.9-2.el8.x86_64.rpm", + "checksum": "sha256:17877725105f5a6ec3b7766bc84c307bee76ca9c4c41864eb32ea48beac67f8e" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-libs-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/zlib-1.2.11-15.el8.x86_64.rpm", + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "name": "abattis-cantarell-fonts", + "epoch": 0, + "version": "0.0.25", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/abattis-cantarell-fonts-0.0.25-4.el8.noarch.rpm", + "checksum": "sha256:1594afba86593ec614299ef6af255755a98ea55a34a72a22fdc9d80a040be39d" + }, + { + "name": "clevis", + "epoch": 0, + "version": "13", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/clevis-13-3.el8.x86_64.rpm", + "checksum": "sha256:6ba7ecff90ab1b738e8b5a6802707e444c1611070f6868d9579a6ed9624d4874" + }, + { + "name": "clevis-dracut", + "epoch": 0, + "version": "13", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/clevis-dracut-13-3.el8.x86_64.rpm", + "checksum": "sha256:e78a972408f57f8098d2e1f89703a37989a7921d32eedffeff951c4995e242c3" + }, + { + "name": "clevis-luks", + "epoch": 0, + "version": "13", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/clevis-luks-13-3.el8.x86_64.rpm", + "checksum": "sha256:471d93320397aac486979acdf53a79833569160dca7c98a84e7f37a544e141e1" + }, + { + "name": "clevis-systemd", + "epoch": 0, + "version": "13", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/clevis-systemd-13-3.el8.x86_64.rpm", + "checksum": "sha256:741737a2820a2579df9608ca4f0328ee4b0539b0e17f80371ae80c3b56113920" + }, + { + "name": "conmon", + "epoch": 2, + "version": "2.0.18", + "release": "1.module+el8.3.0+7084+c16098dd", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/conmon-2.0.18-1.module+el8.3.0+7084+c16098dd.x86_64.rpm", + "checksum": "sha256:fbce3b7fc6cabc2204b2ceaf2b703146fa0642903b7999424cf86fbe26b61339" + }, + { + "name": "container-selinux", + "epoch": 2, + "version": "2.137.0", + "release": "1.module+el8.3.0+7084+c16098dd", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/container-selinux-2.137.0-1.module+el8.3.0+7084+c16098dd.noarch.rpm", + "checksum": "sha256:90f1b278b55197ea3061934e563aad3705fecaf8550259ca83939b012bc0aa06" + }, + { + "name": "containernetworking-plugins", + "epoch": 0, + "version": "0.8.6", + "release": "1.module+el8.3.0+7084+c16098dd", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/containernetworking-plugins-0.8.6-1.module+el8.3.0+7084+c16098dd.x86_64.rpm", + "checksum": "sha256:857f411ffaa8f5266f2a2eae592a785dcfcff9c53c738770991af39ce531fa65" + }, + { + "name": "containers-common", + "epoch": 1, + "version": "1.1.0", + "release": "1.module+el8.3.0+7097+8d4f8cb4", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/containers-common-1.1.0-1.module+el8.3.0+7097+8d4f8cb4.x86_64.rpm", + "checksum": "sha256:9d8ec9b38fcbd87310b373d1576e8cea41010a3feb874453e5ae27cbca80dbc6" + }, + { + "name": "criu", + "epoch": 0, + "version": "3.14", + "release": "2.module+el8.3.0+7084+c16098dd", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/criu-3.14-2.module+el8.3.0+7084+c16098dd.x86_64.rpm", + "checksum": "sha256:4f7fe3f75816e7f434c9ddcf380a4754a309d23d0fd7f81cf57ae38586892c31" + }, + { + "name": "dnsmasq", + "epoch": 0, + "version": "2.79", + "release": "13.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/dnsmasq-2.79-13.el8.x86_64.rpm", + "checksum": "sha256:a896c5d0e9480d111eaed58ad6e20b772702b7288cbdd6a3bfb5cd2827e3b608" + }, + { + "name": "fuse-overlayfs", + "epoch": 0, + "version": "1.1.1", + "release": "1.module+el8.3.0+7121+472bc0cf", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/fuse-overlayfs-1.1.1-1.module+el8.3.0+7121+472bc0cf.x86_64.rpm", + "checksum": "sha256:7e777942f33112982e00ebfbd4145a5fa8260cfcae2f66949e92e574d276169a" + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm", + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm", + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "name": "jose", + "epoch": 0, + "version": "10", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/jose-10-2.el8.x86_64.rpm", + "checksum": "sha256:cbe8bf1ceef1c64ee0a8cec25840b94bb5914a1ba735cbac9634d75a8ea55869" + }, + { + "name": "jq", + "epoch": 0, + "version": "1.5", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/jq-1.5-12.el8.x86_64.rpm", + "checksum": "sha256:6dc5dfaf2eb04768e72bcb67382314c2883b191e70fc39415e57cd1beb484be9" + }, + { + "name": "libjose", + "epoch": 0, + "version": "10", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libjose-10-2.el8.x86_64.rpm", + "checksum": "sha256:9889833f56ee91ce8b7c2cb6258698b4e1f8f1824d03825f042c9ff6e8025ece" + }, + { + "name": "libluksmeta", + "epoch": 0, + "version": "9", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libluksmeta-9-4.el8.x86_64.rpm", + "checksum": "sha256:58e9f72f622d5d8182f605a0e7c8f6413e1f2c31d770a09476eed7388130f5bd" + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.2.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libmaxminddb-1.2.0-10.el8.x86_64.rpm", + "checksum": "sha256:995a5401cd86404d14d08c0aeafeaa8da3f540b1806f9d0e233d75dec9e45c74" + }, + { + "name": "libnet", + "epoch": 0, + "version": "1.1.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libnet-1.1.6-15.el8.x86_64.rpm", + "checksum": "sha256:09c8dd96ccb066d458edd30dba99ae72cc3941c1563d260cb259d33d9bf6fe12" + }, + { + "name": "libslirp", + "epoch": 0, + "version": "4.3.0", + "release": "3.module+el8.3.0+7084+c16098dd", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libslirp-4.3.0-3.module+el8.3.0+7084+c16098dd.x86_64.rpm", + "checksum": "sha256:94e22afaf7e8dacef3e7e1c7b578d9cf940797a9940c961a747af05e89b056e0" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxkbcommon-0.9.1-1.el8.x86_64.rpm", + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "name": "luksmeta", + "epoch": 0, + "version": "9", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/luksmeta-9-4.el8.x86_64.rpm", + "checksum": "sha256:5cc06aa6c35eb488ae072e03fbc2ceb42614d1f51df043a72903962f21472047" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/memstrack-0.1.8-1.el8.x86_64.rpm", + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "name": "nmap-ncat", + "epoch": 2, + "version": "7.70", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/nmap-ncat-7.70-5.el8.x86_64.rpm", + "checksum": "sha256:b9812a38a1de6b0f06a9a63bfb75f6fe1e8720aa527dd7e604eadd7d2c3d4eb0" + }, + { + "name": "nss-altfiles", + "epoch": 0, + "version": "2.18.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/nss-altfiles-2.18.1-12.el8.x86_64.rpm", + "checksum": "sha256:059222cdbc9f1bf246e6c73f7334c83aca1e1906494e499e9effb8adf5b6bf03" + }, + { + "name": "oniguruma", + "epoch": 0, + "version": "6.8.2", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/oniguruma-6.8.2-2.el8.x86_64.rpm", + "checksum": "sha256:1a1c32e624ac3141a3e60075270b2a408f1b218d30bedbe83e9751cb6d16af5b" + }, + { + "name": "ostree", + "epoch": 0, + "version": "2020.3", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/ostree-2020.3-3.el8.x86_64.rpm", + "checksum": "sha256:8a439a12bb5aab57a2886913d53e36f5353df314fc8e842641865785e7368393" + }, + { + "name": "ostree-libs", + "epoch": 0, + "version": "2020.3", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/ostree-libs-2020.3-3.el8.x86_64.rpm", + "checksum": "sha256:669bb92df236ee87675feee01cdc6c7ec1f14f9e391c9dacba75d47a0d42c056" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pinentry-1.1.0-2.el8.x86_64.rpm", + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "name": "podman", + "epoch": 0, + "version": "2.0.0", + "release": "0.9.rc7.module+el8.3.0+7084+c16098dd", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/podman-2.0.0-0.9.rc7.module+el8.3.0+7084+c16098dd.x86_64.rpm", + "checksum": "sha256:d722cdc65328b13941bed614311a0c765de94a4f56f43e752b00dbc0830879aa" + }, + { + "name": "protobuf", + "epoch": 0, + "version": "3.5.0", + "release": "13.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/protobuf-3.5.0-13.el8.x86_64.rpm", + "checksum": "sha256:eb0ed74444da940ab2a530776348362c5e2c07a0a30b2106dd4691bcbfa1e56a" + }, + { + "name": "protobuf-c", + "epoch": 0, + "version": "1.3.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/protobuf-c-1.3.0-4.el8.x86_64.rpm", + "checksum": "sha256:ffe769e8d404589e60b0760d91669cd61e1320b5eeac85f9e8e624acdc845e76" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-unbound-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "name": "rpm-ostree", + "epoch": 0, + "version": "2020.2", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rpm-ostree-2020.2-2.el8.x86_64.rpm", + "checksum": "sha256:7938f537c7bd6641fbcb532c9259bb238ea3f6974aa4e4fecc8b883342347802" + }, + { + "name": "rpm-ostree-libs", + "epoch": 0, + "version": "2020.2", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rpm-ostree-libs-2020.2-2.el8.x86_64.rpm", + "checksum": "sha256:867505134ec44ec35124e76ffee812d34354b6916d40a56597c6178aca06f798" + }, + { + "name": "runc", + "epoch": 0, + "version": "1.0.0", + "release": "66.rc10.module+el8.3.0+7084+c16098dd", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/runc-1.0.0-66.rc10.module+el8.3.0+7084+c16098dd.x86_64.rpm", + "checksum": "sha256:1f835437b274cf91162e1787bb922a738ce823df1c0bcbf1cbe7ba566e85f99f" + }, + { + "name": "skopeo", + "epoch": 1, + "version": "1.1.0", + "release": "1.module+el8.3.0+7097+8d4f8cb4", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/skopeo-1.1.0-1.module+el8.3.0+7097+8d4f8cb4.x86_64.rpm", + "checksum": "sha256:b64037fee03ce41de72dda7e08008d70d99ec1a1b00fcd283ee04846e5d94a41" + }, + { + "name": "slirp4netns", + "epoch": 0, + "version": "1.1.1", + "release": "1.module+el8.3.0+7084+c16098dd", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/slirp4netns-1.1.1-1.module+el8.3.0+7084+c16098dd.x86_64.rpm", + "checksum": "sha256:b8734650357f50eaebcadb9eb007ec10177160b20ecb7527bb7280abb7d46504" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/unbound-libs-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "name": "usbguard", + "epoch": 0, + "version": "0.7.8", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/usbguard-0.7.8-5.el8.x86_64.rpm", + "checksum": "sha256:201cb88c2d6ec79f015f1d8cf9f879d4b5127db0bf09b454554443c80b4ecd27" + }, + { + "name": "usbguard-selinux", + "epoch": 0, + "version": "0.7.8", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/usbguard-selinux-0.7.8-5.el8.noarch.rpm", + "checksum": "sha256:22069f81fb22bee7871e6368bec14602614aee7f81e8fd5c752b7023fd13de39" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "checksums": { + "0": "sha256:cc014fee6e92f8a81f152d72a43137a3270189ef229c738381b98bc0c88443f8", + "1": "sha256:2b881b017a4c721893038307bf4f0269afe55c35114a477be226f53a2f585545" + } + }, + "image-info": { + "firewall-enabled": [ + "ssh", + "dhcpv6-client", + "cockpit" + ], + "groups": [ + "root:x:0:", + "wheel:x:10:" + ], + "groups-system": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:992:", + "clevis:x:993:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "dnsmasq:x:990:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:999:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "polkitd:x:996:", + "render:x:998:", + "rngd:x:991:", + "ssh_keys:x:995:", + "sshd:x:74:", + "sys:x:3:", + "systemd-coredump:x:997:", + "systemd-journal:x:190:", + "systemd-resolve:x:193:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:994:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "os-release": { + "ANSI_COLOR": "0;31", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:redhat:enterprise_linux:8.3:beta", + "HOME_URL": "https://www.redhat.com/", + "ID": "rhel", + "ID_LIKE": "fedora", + "NAME": "Red Hat Enterprise Linux", + "PLATFORM_ID": "platform:el8", + "PRETTY_NAME": "Red Hat Enterprise Linux 8.3 Beta (Ootpa)", + "REDHAT_BUGZILLA_PRODUCT": "Red Hat Enterprise Linux 8", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "8.3", + "REDHAT_SUPPORT_PRODUCT": "Red Hat Enterprise Linux", + "REDHAT_SUPPORT_PRODUCT_VERSION": "8.3 Beta", + "VERSION": "8.3 (Ootpa)", + "VERSION_ID": "8.3" + }, + "ostree": { + "refs": { + "rhel/8/x86_64/edge": { + "inputhash": "fd14e7be282bc30cba865fd1a8059fbb9da77d37e382d0015796034e59d621d9" + } + }, + "repo": { + "core.mode": "archive-z2" + } + }, + "packages": [ + "ModemManager-1.10.8-2.el8.x86_64", + "ModemManager-glib-1.10.8-2.el8.x86_64", + "NetworkManager-1.26.0-0.2.el8.x86_64", + "NetworkManager-libnm-1.26.0-0.2.el8.x86_64", + "NetworkManager-wifi-1.26.0-0.2.el8.x86_64", + "NetworkManager-wwan-1.26.0-0.2.el8.x86_64", + "abattis-cantarell-fonts-0.0.25-4.el8.noarch", + "acl-2.2.53-1.el8.x86_64", + "attr-2.4.48-3.el8.x86_64", + "audit-3.0-0.17.20191104git1c2f876.el8.x86_64", + "audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64", + "basesystem-11-5.el8.noarch", + "bash-4.4.19-12.el8.x86_64", + "bash-completion-2.7-5.el8.noarch", + "bind-export-libs-9.11.20-3.el8.x86_64", + "brotli-1.0.6-2.el8.x86_64", + "bubblewrap-0.4.0-1.el8.x86_64", + "bzip2-libs-1.0.6-26.el8.x86_64", + "ca-certificates-2019.2.32-80.0.el8_1.noarch", + "checkpolicy-2.9-1.el8.x86_64", + "chkconfig-1.13-2.el8.x86_64", + "chrony-3.5-1.el8.x86_64", + "clevis-13-3.el8.x86_64", + "clevis-dracut-13-3.el8.x86_64", + "clevis-luks-13-3.el8.x86_64", + "clevis-systemd-13-3.el8.x86_64", + "conmon-2.0.18-1.module+el8.3.0+7084+c16098dd.x86_64", + "container-selinux-2.137.0-1.module+el8.3.0+7084+c16098dd.noarch", + "containernetworking-plugins-0.8.6-1.module+el8.3.0+7084+c16098dd.x86_64", + "containers-common-1.1.0-1.module+el8.3.0+7097+8d4f8cb4.x86_64", + "coreutils-8.30-8.el8.x86_64", + "coreutils-common-8.30-8.el8.x86_64", + "cpio-2.12-8.el8.x86_64", + "cracklib-2.9.6-15.el8.x86_64", + "cracklib-dicts-2.9.6-15.el8.x86_64", + "criu-3.14-2.module+el8.3.0+7084+c16098dd.x86_64", + "crypto-policies-20200610-1.git0ac8b1f.el8.noarch", + "crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch", + "cryptsetup-2.3.3-1.el8.x86_64", + "cryptsetup-libs-2.3.3-1.el8.x86_64", + "curl-7.61.1-12.el8.x86_64", + "cyrus-sasl-lib-2.1.27-5.el8.x86_64", + "dbus-1.12.8-11.el8.x86_64", + "dbus-common-1.12.8-11.el8.noarch", + "dbus-daemon-1.12.8-11.el8.x86_64", + "dbus-glib-0.110-2.el8.x86_64", + "dbus-libs-1.12.8-11.el8.x86_64", + "dbus-tools-1.12.8-11.el8.x86_64", + "dbxtool-8-5.el8.x86_64", + "dejavu-fonts-common-2.35-6.el8.noarch", + "dejavu-sans-mono-fonts-2.35-6.el8.noarch", + "device-mapper-1.02.171-3.el8.x86_64", + "device-mapper-event-1.02.171-3.el8.x86_64", + "device-mapper-event-libs-1.02.171-3.el8.x86_64", + "device-mapper-libs-1.02.171-3.el8.x86_64", + "device-mapper-persistent-data-0.8.5-3.el8.x86_64", + "dhcp-client-4.3.6-41.el8.x86_64", + "dhcp-common-4.3.6-41.el8.noarch", + "dhcp-libs-4.3.6-41.el8.x86_64", + "diffutils-3.6-6.el8.x86_64", + "dmidecode-3.2-6.el8.x86_64", + "dnf-4.2.23-2.el8.noarch", + "dnf-data-4.2.23-2.el8.noarch", + "dnf-plugin-subscription-manager-1.27.9-1.el8.x86_64", + "dnsmasq-2.79-13.el8.x86_64", + "dosfstools-4.1-6.el8.x86_64", + "dracut-049-89.git20200625.el8.x86_64", + "dracut-config-generic-049-89.git20200625.el8.x86_64", + "dracut-network-049-89.git20200625.el8.x86_64", + "e2fsprogs-1.45.6-1.el8.x86_64", + "e2fsprogs-libs-1.45.6-1.el8.x86_64", + "efi-filesystem-3-2.el8.noarch", + "efibootmgr-16-1.el8.x86_64", + "efivar-36-1.el8.x86_64", + "efivar-libs-36-1.el8.x86_64", + "elfutils-debuginfod-client-0.180-1.el8.x86_64", + "elfutils-default-yama-scope-0.180-1.el8.noarch", + "elfutils-libelf-0.180-1.el8.x86_64", + "elfutils-libs-0.180-1.el8.x86_64", + "expat-2.2.5-4.el8.x86_64", + "file-5.33-16.el8.x86_64", + "file-libs-5.33-16.el8.x86_64", + "filesystem-3.8-3.el8.x86_64", + "findutils-4.6.0-20.el8.x86_64", + "firewalld-0.8.2-1.el8.noarch", + "firewalld-filesystem-0.8.2-1.el8.noarch", + "fontpackages-filesystem-1.44-22.el8.noarch", + "freetype-2.9.1-4.el8.x86_64", + "fuse-2.9.7-12.el8.x86_64", + "fuse-common-3.2.1-12.el8.x86_64", + "fuse-libs-2.9.7-12.el8.x86_64", + "fuse-overlayfs-1.1.1-1.module+el8.3.0+7121+472bc0cf.x86_64", + "fuse3-libs-3.2.1-12.el8.x86_64", + "fwupd-1.4.1-1.el8.x86_64", + "gawk-4.2.1-1.el8.x86_64", + "gdbm-1.18-1.el8.x86_64", + "gdbm-libs-1.18-1.el8.x86_64", + "geolite2-city-20180605-1.el8.noarch", + "geolite2-country-20180605-1.el8.noarch", + "gettext-0.19.8.1-17.el8.x86_64", + "gettext-libs-0.19.8.1-17.el8.x86_64", + "glib-networking-2.56.1-1.1.el8.x86_64", + "glib2-2.56.4-8.el8.x86_64", + "glibc-2.28-127.el8.x86_64", + "glibc-common-2.28-127.el8.x86_64", + "glibc-minimal-langpack-2.28-127.el8.x86_64", + "gmp-6.1.2-10.el8.x86_64", + "gnupg2-2.2.20-2.el8.x86_64", + "gnupg2-smime-2.2.20-2.el8.x86_64", + "gnutls-3.6.14-3.el8.x86_64", + "gobject-introspection-1.56.1-1.el8.x86_64", + "gpg-pubkey-d4082792-5b32db75", + "gpg-pubkey-fd431d51-4ae0493b", + "gpgme-1.13.1-3.el8.x86_64", + "grep-3.1-6.el8.x86_64", + "grub2-common-2.02-84.el8.noarch", + "grub2-efi-x64-2.02-84.el8.x86_64", + "grub2-pc-2.02-84.el8.x86_64", + "grub2-pc-modules-2.02-84.el8.noarch", + "grub2-tools-2.02-84.el8.x86_64", + "grub2-tools-extra-2.02-84.el8.x86_64", + "grub2-tools-minimal-2.02-84.el8.x86_64", + "grubby-8.40-41.el8.x86_64", + "gsettings-desktop-schemas-3.32.0-5.el8.x86_64", + "gzip-1.9-9.el8.x86_64", + "hardlink-1.3-6.el8.x86_64", + "hostname-3.20-6.el8.x86_64", + "ima-evm-utils-1.1-5.el8.x86_64", + "info-6.5-6.el8.x86_64", + "initscripts-10.00.8-1.el8.x86_64", + "ipcalc-0.2.4-4.el8.x86_64", + "iproute-5.3.0-5.el8.x86_64", + "ipset-7.1-1.el8.x86_64", + "ipset-libs-7.1-1.el8.x86_64", + "iptables-1.8.4-14.el8.x86_64", + "iptables-ebtables-1.8.4-14.el8.x86_64", + "iptables-libs-1.8.4-14.el8.x86_64", + "iputils-20180629-2.el8.x86_64", + "iwl100-firmware-39.31.5.1-99.el8.1.noarch", + "iwl1000-firmware-39.31.5.1-99.el8.1.noarch", + "iwl105-firmware-18.168.6.1-99.el8.1.noarch", + "iwl135-firmware-18.168.6.1-99.el8.1.noarch", + "iwl2000-firmware-18.168.6.1-99.el8.1.noarch", + "iwl2030-firmware-18.168.6.1-99.el8.1.noarch", + "iwl3160-firmware-25.30.13.0-99.el8.1.noarch", + "iwl5000-firmware-8.83.5.1_1-99.el8.1.noarch", + "iwl5150-firmware-8.24.2.2-99.el8.1.noarch", + "iwl6000-firmware-9.221.4.1-99.el8.1.noarch", + "iwl6050-firmware-41.28.5.1-99.el8.1.noarch", + "iwl7260-firmware-25.30.13.0-99.el8.1.noarch", + "jansson-2.11-3.el8.x86_64", + "jose-10-2.el8.x86_64", + "jq-1.5-12.el8.x86_64", + "json-c-0.13.1-0.2.el8.x86_64", + "json-glib-1.4.4-1.el8.x86_64", + "kbd-2.0.4-10.el8.x86_64", + "kbd-legacy-2.0.4-10.el8.noarch", + "kbd-misc-2.0.4-10.el8.noarch", + "kernel-4.18.0-221.el8.x86_64", + "kernel-core-4.18.0-221.el8.x86_64", + "kernel-modules-4.18.0-221.el8.x86_64", + "keyutils-1.5.10-6.el8.x86_64", + "keyutils-libs-1.5.10-6.el8.x86_64", + "kmod-25-16.el8.x86_64", + "kmod-libs-25-16.el8.x86_64", + "kpartx-0.8.4-2.el8.x86_64", + "krb5-libs-1.18.2-3.el8.x86_64", + "less-530-1.el8.x86_64", + "libacl-2.2.53-1.el8.x86_64", + "libaio-0.3.112-1.el8.x86_64", + "libarchive-3.3.2-9.el8.x86_64", + "libassuan-2.5.1-3.el8.x86_64", + "libattr-2.4.48-3.el8.x86_64", + "libblkid-2.32.1-24.el8.x86_64", + "libcap-2.26-4.el8.x86_64", + "libcap-ng-0.7.9-5.el8.x86_64", + "libcom_err-1.45.6-1.el8.x86_64", + "libcomps-0.1.11-4.el8.x86_64", + "libcroco-0.6.12-4.el8.x86_64", + "libcurl-7.61.1-12.el8.x86_64", + "libdb-5.3.28-39.el8.x86_64", + "libdb-utils-5.3.28-39.el8.x86_64", + "libdnf-0.48.0-2.el8.x86_64", + "libedit-3.1-23.20170329cvs.el8.x86_64", + "libevent-2.1.8-5.el8.x86_64", + "libfdisk-2.32.1-24.el8.x86_64", + "libffi-3.1-22.el8.x86_64", + "libgcab1-1.1-1.el8.x86_64", + "libgcc-8.3.1-5.1.el8.x86_64", + "libgcrypt-1.8.5-4.el8.x86_64", + "libgomp-8.3.1-5.1.el8.x86_64", + "libgpg-error-1.31-1.el8.x86_64", + "libgudev-232-4.el8.x86_64", + "libgusb-0.3.0-1.el8.x86_64", + "libidn2-2.2.0-1.el8.x86_64", + "libjose-10-2.el8.x86_64", + "libkcapi-1.2.0-2.el8.x86_64", + "libkcapi-hmaccalc-1.2.0-2.el8.x86_64", + "libksba-1.3.5-7.el8.x86_64", + "libluksmeta-9-4.el8.x86_64", + "libmaxminddb-1.2.0-10.el8.x86_64", + "libmbim-1.20.2-1.el8.x86_64", + "libmbim-utils-1.20.2-1.el8.x86_64", + "libmetalink-0.1.3-7.el8.x86_64", + "libmnl-1.0.4-6.el8.x86_64", + "libmodman-2.0.1-17.el8.x86_64", + "libmodulemd-2.9.4-2.el8.x86_64", + "libmodulemd1-1.8.16-0.2.9.4.2.x86_64", + "libmount-2.32.1-24.el8.x86_64", + "libndp-1.7-3.el8.x86_64", + "libnet-1.1.6-15.el8.x86_64", + "libnetfilter_conntrack-1.0.6-5.el8.x86_64", + "libnfnetlink-1.0.1-13.el8.x86_64", + "libnftnl-1.1.5-4.el8.x86_64", + "libnghttp2-1.33.0-3.el8_2.1.x86_64", + "libnl3-3.5.0-1.el8.x86_64", + "libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64", + "libpcap-1.9.1-4.el8.x86_64", + "libpkgconf-1.4.2-1.el8.x86_64", + "libpng-1.6.34-5.el8.x86_64", + "libproxy-0.4.15-5.2.el8.x86_64", + "libpsl-0.20.2-6.el8.x86_64", + "libpwquality-1.4.0-9.el8.x86_64", + "libqb-1.0.3-12.el8.x86_64", + "libqmi-1.24.0-1.el8.x86_64", + "libqmi-utils-1.24.0-1.el8.x86_64", + "librepo-1.12.0-1.el8.x86_64", + "libreport-filesystem-2.9.5-11.el8.x86_64", + "librhsm-0.0.3-3.el8.x86_64", + "libseccomp-2.4.3-1.el8.x86_64", + "libsecret-0.18.6-1.el8.x86_64", + "libselinux-2.9-3.el8.x86_64", + "libselinux-utils-2.9-3.el8.x86_64", + "libsemanage-2.9-3.el8.x86_64", + "libsepol-2.9-1.el8.x86_64", + "libsigsegv-2.11-5.el8.x86_64", + "libslirp-4.3.0-3.module+el8.3.0+7084+c16098dd.x86_64", + "libsmartcols-2.32.1-24.el8.x86_64", + "libsmbios-2.4.1-2.el8.x86_64", + "libsolv-0.7.11-1.el8.x86_64", + "libsoup-2.62.3-1.el8.x86_64", + "libss-1.45.6-1.el8.x86_64", + "libssh-0.9.4-2.el8.x86_64", + "libssh-config-0.9.4-2.el8.noarch", + "libstdc++-8.3.1-5.1.el8.x86_64", + "libsysfs-2.1.0-24.el8.x86_64", + "libtasn1-4.13-3.el8.x86_64", + "libtirpc-1.1.4-4.el8.x86_64", + "libunistring-0.9.9-3.el8.x86_64", + "libusbx-1.0.23-3.el8.x86_64", + "libuser-0.62-23.el8.x86_64", + "libutempter-1.1.6-14.el8.x86_64", + "libuuid-2.32.1-24.el8.x86_64", + "libvarlink-18-3.el8.x86_64", + "libverto-0.3.0-5.el8.x86_64", + "libxcrypt-4.1.1-4.el8.x86_64", + "libxkbcommon-0.9.1-1.el8.x86_64", + "libxml2-2.9.7-8.el8.x86_64", + "libxmlb-0.1.15-1.el8.x86_64", + "libyaml-0.1.7-5.el8.x86_64", + "libzstd-1.4.4-1.el8.x86_64", + "linux-firmware-20200619-99.git3890db36.el8.noarch", + "lua-libs-5.3.4-11.el8.x86_64", + "luksmeta-9-4.el8.x86_64", + "lvm2-2.03.09-3.el8.x86_64", + "lvm2-libs-2.03.09-3.el8.x86_64", + "lz4-libs-1.8.3-2.el8.x86_64", + "memstrack-0.1.8-1.el8.x86_64", + "microcode_ctl-20200609-2.el8.x86_64", + "mokutil-0.3.0-9.el8.x86_64", + "mozjs60-60.9.0-4.el8.x86_64", + "mpfr-3.1.6-1.el8.x86_64", + "ncurses-6.1-7.20180224.el8.x86_64", + "ncurses-base-6.1-7.20180224.el8.noarch", + "ncurses-libs-6.1-7.20180224.el8.x86_64", + "nettle-3.4.1-2.el8.x86_64", + "nftables-0.9.3-14.el8.x86_64", + "nmap-ncat-7.70-5.el8.x86_64", + "npth-1.5-4.el8.x86_64", + "nss-altfiles-2.18.1-12.el8.x86_64", + "oniguruma-6.8.2-2.el8.x86_64", + "openldap-2.4.46-15.el8.x86_64", + "openssh-8.0p1-5.el8.x86_64", + "openssh-clients-8.0p1-5.el8.x86_64", + "openssh-server-8.0p1-5.el8.x86_64", + "openssl-1.1.1g-9.el8.x86_64", + "openssl-libs-1.1.1g-9.el8.x86_64", + "openssl-pkcs11-0.4.10-2.el8.x86_64", + "os-prober-1.74-6.el8.x86_64", + "ostree-2020.3-3.el8.x86_64", + "ostree-libs-2020.3-3.el8.x86_64", + "p11-kit-0.23.14-5.el8_0.x86_64", + "p11-kit-trust-0.23.14-5.el8_0.x86_64", + "pam-1.3.1-11.el8.x86_64", + "passwd-0.80-3.el8.x86_64", + "pcre-8.42-4.el8.x86_64", + "pcre2-10.32-2.el8.x86_64", + "pigz-2.4-4.el8.x86_64", + "pinentry-1.1.0-2.el8.x86_64", + "pkgconf-1.4.2-1.el8.x86_64", + "pkgconf-m4-1.4.2-1.el8.noarch", + "pkgconf-pkg-config-1.4.2-1.el8.x86_64", + "platform-python-3.6.8-30.el8.x86_64", + "platform-python-pip-9.0.3-17.el8.noarch", + "platform-python-setuptools-39.2.0-6.el8.noarch", + "podman-2.0.0-0.9.rc7.module+el8.3.0+7084+c16098dd.x86_64", + "policycoreutils-2.9-9.el8.x86_64", + "policycoreutils-python-utils-2.9-9.el8.noarch", + "polkit-0.115-11.el8.x86_64", + "polkit-libs-0.115-11.el8.x86_64", + "polkit-pkla-compat-0.1-12.el8.x86_64", + "popt-1.16-14.el8.x86_64", + "procps-ng-3.3.15-2.el8.x86_64", + "protobuf-3.5.0-13.el8.x86_64", + "protobuf-c-1.3.0-4.el8.x86_64", + "publicsuffix-list-dafsa-20180723-1.el8.noarch", + "python3-audit-3.0-0.17.20191104git1c2f876.el8.x86_64", + "python3-dateutil-2.6.1-6.el8.noarch", + "python3-dbus-1.2.4-15.el8.x86_64", + "python3-decorator-4.2.1-2.el8.noarch", + "python3-dmidecode-3.12.2-15.el8.x86_64", + "python3-dnf-4.2.23-2.el8.noarch", + "python3-dnf-plugins-core-4.0.17-2.el8.noarch", + "python3-ethtool-0.14-3.el8.x86_64", + "python3-firewall-0.8.2-1.el8.noarch", + "python3-gobject-base-3.28.3-2.el8.x86_64", + "python3-gpg-1.13.1-3.el8.x86_64", + "python3-hawkey-0.48.0-2.el8.x86_64", + "python3-iniparse-0.4-31.el8.noarch", + "python3-inotify-0.9.6-13.el8.noarch", + "python3-libcomps-0.1.11-4.el8.x86_64", + "python3-libdnf-0.48.0-2.el8.x86_64", + "python3-librepo-1.12.0-1.el8.x86_64", + "python3-libs-3.6.8-30.el8.x86_64", + "python3-libselinux-2.9-3.el8.x86_64", + "python3-libsemanage-2.9-3.el8.x86_64", + "python3-libxml2-2.9.7-8.el8.x86_64", + "python3-nftables-0.9.3-14.el8.x86_64", + "python3-pip-wheel-9.0.3-17.el8.noarch", + "python3-policycoreutils-2.9-9.el8.noarch", + "python3-rpm-4.14.3-4.el8.x86_64", + "python3-setools-4.3.0-1.el8.x86_64", + "python3-setuptools-wheel-39.2.0-6.el8.noarch", + "python3-six-1.11.0-8.el8.noarch", + "python3-slip-0.6.4-11.el8.noarch", + "python3-slip-dbus-0.6.4-11.el8.noarch", + "python3-subscription-manager-rhsm-1.27.9-1.el8.x86_64", + "python3-syspurpose-1.27.9-1.el8.x86_64", + "python3-unbound-1.7.3-14.el8.x86_64", + "readline-7.0-10.el8.x86_64", + "redhat-release-8.3-0.2.el8.x86_64", + "redhat-release-eula-8.3-0.2.el8.x86_64", + "rng-tools-6.8-3.el8.x86_64", + "rootfiles-8.1-22.el8.noarch", + "rpm-4.14.3-4.el8.x86_64", + "rpm-build-libs-4.14.3-4.el8.x86_64", + "rpm-libs-4.14.3-4.el8.x86_64", + "rpm-ostree-2020.2-2.el8.x86_64", + "rpm-ostree-libs-2020.2-2.el8.x86_64", + "rpm-plugin-selinux-4.14.3-4.el8.x86_64", + "rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64", + "rsync-3.1.3-8.el8.x86_64", + "runc-1.0.0-66.rc10.module+el8.3.0+7084+c16098dd.x86_64", + "sed-4.5-2.el8.x86_64", + "selinux-policy-3.14.3-48.el8.noarch", + "selinux-policy-targeted-3.14.3-48.el8.noarch", + "setools-console-4.3.0-1.el8.x86_64", + "setup-2.12.2-6.el8.noarch", + "shadow-utils-4.6-10.el8.x86_64", + "shared-mime-info-1.9-3.el8.x86_64", + "shim-x64-15-12.x86_64", + "skopeo-1.1.0-1.module+el8.3.0+7097+8d4f8cb4.x86_64", + "slirp4netns-1.1.1-1.module+el8.3.0+7084+c16098dd.x86_64", + "sqlite-3.26.0-10.el8.x86_64", + "sqlite-libs-3.26.0-10.el8.x86_64", + "subscription-manager-1.27.9-1.el8.x86_64", + "subscription-manager-rhsm-certificates-1.27.9-1.el8.x86_64", + "sudo-1.8.29-6.el8.x86_64", + "systemd-239-36.el8.x86_64", + "systemd-libs-239-36.el8.x86_64", + "systemd-pam-239-36.el8.x86_64", + "systemd-udev-239-36.el8.x86_64", + "tar-1.30-5.el8.x86_64", + "timedatex-0.5-3.el8.x86_64", + "tmux-2.7-1.el8.x86_64", + "tpm2-tools-4.1.1-1.el8.x86_64", + "tpm2-tss-2.3.2-2.el8.x86_64", + "traceroute-2.1.0-6.el8.x86_64", + "trousers-0.3.14-4.el8.x86_64", + "trousers-lib-0.3.14-4.el8.x86_64", + "tzdata-2020a-1.el8.noarch", + "unbound-libs-1.7.3-14.el8.x86_64", + "usbguard-0.7.8-5.el8.x86_64", + "usbguard-selinux-0.7.8-5.el8.noarch", + "usermode-1.113-1.el8.x86_64", + "util-linux-2.32.1-24.el8.x86_64", + "vim-minimal-8.0.1763-15.el8.x86_64", + "virt-what-1.18-6.el8.x86_64", + "which-2.21-12.el8.x86_64", + "wpa_supplicant-2.9-2.el8.x86_64", + "xkeyboard-config-2.28-1.el8.noarch", + "xz-5.2.4-3.el8.x86_64", + "xz-libs-5.2.4-3.el8.x86_64", + "zlib-1.2.11-15.el8.x86_64" + ], + "passwd": [ + "root:x:0:0:root:/root:/bin/bash" + ], + "passwd-system": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:995:992::/var/lib/chrony:/sbin/nologin", + "clevis:x:996:993:Clevis Decryption Framework unprivileged user:/var/cache/clevis:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "dnsmasq:x:990:990:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "polkitd:x:998:996:User for polkitd:/:/sbin/nologin", + "rngd:x:994:991:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "services-disabled": [ + "blk-availability.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "clevis-luks-askpass@.path", + "console-getty.service", + "ctrl-alt-del.target", + "dbxtool.service", + "debug-shell.service", + "dnsmasq.service", + "ebtables.service", + "exit.target", + "fstrim.timer", + "fwupd-refresh.timer", + "halt.target", + "io.podman.service", + "io.podman.socket", + "kexec.target", + "nftables.service", + "ostree-finalize-staged.path", + "ostree-remount.service", + "podman.service", + "podman.socket", + "poweroff.target", + "rdisc.service", + "reboot.target", + "remote-cryptsetup.target", + "rhsm-facts.service", + "rhsm.service", + "rngd-wake-threshold.service", + "rpm-ostree-bootstatus.service", + "rpm-ostreed-automatic.timer", + "runlevel0.target", + "runlevel6.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "systemd-resolved.service", + "tcsd.service", + "tmp.mount", + "usbguard.service", + "wpa_supplicant.service" + ], + "services-enabled": [ + "ModemManager.service", + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "dbus-org.fedoraproject.FirewallD1.service", + "dbus-org.freedesktop.ModemManager1.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dbus-org.freedesktop.timedate1.service", + "dm-event.socket", + "dnf-makecache.timer", + "firewalld.service", + "getty@.service", + "import-state.service", + "loadmodules.service", + "lvm2-lvmpolld.socket", + "lvm2-monitor.service", + "microcode.service", + "nis-domainname.service", + "remote-fs.target", + "rhsmcertd.service", + "rngd.service", + "selinux-autorelabel-mark.service", + "sshd.service", + "timedatex.service", + "unbound-anchor.timer" + ], + "timezone": "UTC", + "type": "ostree/commit" + } +} \ No newline at end of file diff --git a/test/cases/rhel_8-x86_64-tar-boot.json b/test/cases/rhel_8-x86_64-tar-boot.json new file mode 100644 index 0000000..cb123fb --- /dev/null +++ b/test/cases/rhel_8-x86_64-tar-boot.json @@ -0,0 +1,5701 @@ +{ + "boot": { + "type": "nspawn-extract" + }, + "compose-request": { + "distro": "rhel-8", + "arch": "x86_64", + "image-type": "tar", + "repositories": [ + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + }, + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + } + ], + "filename": "root.tar.xz", + "blueprint": { + "name": "tar-boot-test", + "description": "Image for boot test", + "packages": [ + { + "name": "openssh-server", + "version": "*" + } + ], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libyaml-0.1.7-5.el8.x86_64.rpm" + }, + "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmount-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-daemon-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libunistring-0.9.9-3.el8.x86_64.rpm" + }, + "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-239-36.el8.x86_64.rpm" + }, + "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/expat-2.2.5-4.el8.x86_64.rpm" + }, + "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-libs-2.3.3-1.el8.x86_64.rpm" + }, + "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm" + }, + "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxcrypt-4.1.1-4.el8.x86_64.rpm" + }, + "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-all-langpacks-2.28-127.el8.x86_64.rpm" + }, + "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm" + }, + "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gmp-6.1.2-10.el8.x86_64.rpm" + }, + "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcc-8.3.1-5.1.el8.x86_64.rpm" + }, + "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm" + }, + "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cpio-2.12-8.el8.x86_64.rpm" + }, + "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-libs-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-smime-2.2.20-2.el8.x86_64.rpm" + }, + "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-5.2.4-3.el8.x86_64.rpm" + }, + "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.x86_64.rpm" + }, + "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-25-16.el8.x86_64.rpm" + }, + "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tzdata-2020a-1.el8.noarch.rpm" + }, + "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libksba-1.3.5-7.el8.x86_64.rpm" + }, + "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsecret-0.18.6-1.el8.x86_64.rpm" + }, + "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm" + }, + "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/krb5-libs-1.18.2-3.el8.x86_64.rpm" + }, + "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-2.02-84.el8.x86_64.rpm" + }, + "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-common-2.28-127.el8.x86_64.rpm" + }, + "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-5.33-16.el8.x86_64.rpm" + }, + "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libcomps-0.1.11-4.el8.x86_64.rpm" + }, + "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-3.6.8-30.el8.x86_64.rpm" + }, + "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxkbcommon-0.9.1-1.el8.x86_64.rpm" + }, + "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-2.0.4-10.el8.x86_64.rpm" + }, + "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-ng-0.7.9-5.el8.x86_64.rpm" + }, + "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libattr-2.4.48-3.el8.x86_64.rpm" + }, + "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mpfr-3.1.6-1.el8.x86_64.rpm" + }, + "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre2-10.32-2.el8.x86_64.rpm" + }, + "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.x86_64.rpm" + }, + "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-8.30-8.el8.x86_64.rpm" + }, + "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kpartx-0.8.4-2.el8.x86_64.rpm" + }, + "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpsl-0.20.2-6.el8.x86_64.rpm" + }, + "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm" + }, + "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-dicts-2.9.6-15.el8.x86_64.rpm" + }, + "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/zlib-1.2.11-15.el8.x86_64.rpm" + }, + "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libseccomp-2.4.3-1.el8.x86_64.rpm" + }, + "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-2.26-4.el8.x86_64.rpm" + }, + "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-1.18-1.el8.x86_64.rpm" + }, + "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/procps-ng-3.3.15-2.el8.x86_64.rpm" + }, + "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/filesystem-3.8-3.el8.x86_64.rpm" + }, + "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-8.3-0.2.el8.x86_64.rpm" + }, + "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ima-evm-utils-1.1-5.el8.x86_64.rpm" + }, + "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tar-1.30-5.el8.x86_64.rpm" + }, + "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gpg-1.13.1-3.el8.x86_64.rpm" + }, + "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/util-linux-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xfsprogs-5.0.0-4.el8.x86_64.rpm" + }, + "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libzstd-1.4.4-1.el8.x86_64.rpm" + }, + "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtirpc-1.1.4-4.el8.x86_64.rpm" + }, + "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm" + }, + "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm" + }, + "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libidn2-2.2.0-1.el8.x86_64.rpm" + }, + "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-modules-2.02-84.el8.noarch.rpm" + }, + "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgpg-error-1.31-1.el8.x86_64.rpm" + }, + "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-libs-1.0.6-26.el8.x86_64.rpm" + }, + "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-libs-1.5.10-6.el8.x86_64.rpm" + }, + "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shared-mime-info-1.9-3.el8.x86_64.rpm" + }, + "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/npth-1.5-4.el8.x86_64.rpm" + }, + "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib2-2.56.4-8.el8.x86_64.rpm" + }, + "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm" + }, + "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-eula-8.3-0.2.el8.x86_64.rpm" + }, + "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-rpm-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-4.4.19-12.el8.x86_64.rpm" + }, + "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-c-0.13.1-0.2.el8.x86_64.rpm" + }, + "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpng-1.6.34-5.el8.x86_64.rpm" + }, + "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-build-libs-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcroco-0.6.12-4.el8.x86_64.rpm" + }, + "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-hawkey-0.48.0-2.el8.x86_64.rpm" + }, + "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgomp-8.3.1-5.1.el8.x86_64.rpm" + }, + "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lz4-libs-1.8.3-2.el8.x86_64.rpm" + }, + "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-libs-5.33-16.el8.x86_64.rpm" + }, + "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lua-libs-5.3.4-11.el8.x86_64.rpm" + }, + "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-6.1-7.20180224.el8.x86_64.rpm" + }, + "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/curl-7.61.1-12.el8.x86_64.rpm" + }, + "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nettle-3.4.1-2.el8.x86_64.rpm" + }, + "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsepol-2.9-1.el8.x86_64.rpm" + }, + "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-5.3.28-39.el8.x86_64.rpm" + }, + "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/freetype-2.9.1-4.el8.x86_64.rpm" + }, + "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpwquality-1.4.0-9.el8.x86_64.rpm" + }, + "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-7.20180224.el8.x86_64.rpm" + }, + "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-0.19.8.1-17.el8.x86_64.rpm" + }, + "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openldap-2.4.46-15.el8.x86_64.rpm" + }, + "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libdnf-0.48.0-2.el8.x86_64.rpm" + }, + "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.x86_64.rpm" + }, + "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsemanage-2.9-3.el8.x86_64.rpm" + }, + "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-libs-1.02.171-3.el8.x86_64.rpm" + }, + "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-utils-5.3.28-39.el8.x86_64.rpm" + }, + "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pinentry-1.1.0-2.el8.x86_64.rpm" + }, + "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/brotli-1.0.6-2.el8.x86_64.rpm" + }, + "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libevent-2.1.8-5.el8.x86_64.rpm" + }, + "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/popt-1.16-14.el8.x86_64.rpm" + }, + "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.x86_64.rpm" + }, + "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-libs-1.8.4-14.el8.x86_64.rpm" + }, + "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libassuan-2.5.1-3.el8.x86_64.rpm" + }, + "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grubby-8.40-41.el8.x86_64.rpm" + }, + "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libfdisk-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpcap-1.9.1-4.el8.x86_64.rpm" + }, + "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/unbound-libs-1.7.3-14.el8.x86_64.rpm" + }, + "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-libs-2.9.7-12.el8.x86_64.rpm" + }, + "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libacl-2.2.53-1.el8.x86_64.rpm" + }, + "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-0.3.0-5.el8.x86_64.rpm" + }, + "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chkconfig-1.13-2.el8.x86_64.rpm" + }, + "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdnf-0.48.0-2.el8.x86_64.rpm" + }, + "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-2.9.6-15.el8.x86_64.rpm" + }, + "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstdc++-8.3.1-5.1.el8.x86_64.rpm" + }, + "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64.rpm" + }, + "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libelf-0.180-1.el8.x86_64.rpm" + }, + "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcrypt-1.8.5-4.el8.x86_64.rpm" + }, + "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-0.3.14-4.el8.x86_64.rpm" + }, + "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-glib-1.4.4-1.el8.x86_64.rpm" + }, + "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-libs-25-16.el8.x86_64.rpm" + }, + "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/os-prober-1.74-6.el8.x86_64.rpm" + }, + "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm" + }, + "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libss-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librhsm-0.0.3-3.el8.x86_64.rpm" + }, + "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcomps-0.1.11-4.el8.x86_64.rpm" + }, + "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setup-2.12.2-6.el8.noarch.rpm" + }, + "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-minimal-2.02-84.el8.x86_64.rpm" + }, + "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hardlink-1.3-6.el8.x86_64.rpm" + }, + "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxml2-2.9.7-8.el8.x86_64.rpm" + }, + "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtasn1-4.13-3.el8.x86_64.rpm" + }, + "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnutls-3.6.14-3.el8.x86_64.rpm" + }, + "sha256:b5fc6f35798edccd0390e54fce40290936c3699227e79cc6d1a42d803358fd03": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-8.0p1-5.el8.x86_64.rpm" + }, + "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-pam-239-36.el8.x86_64.rpm" + }, + "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libreport-filesystem-2.9.5-11.el8.x86_64.rpm" + }, + "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-2.2.20-2.el8.x86_64.rpm" + }, + "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/basesystem-11-5.el8.noarch.rpm" + }, + "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/which-2.21-12.el8.x86_64.rpm" + }, + "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pigz-2.4-4.el8.x86_64.rpm" + }, + "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-libs-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd-2.9.4-2.el8.x86_64.rpm" + }, + "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsolv-0.7.11-1.el8.x86_64.rpm" + }, + "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libs-0.180-1.el8.x86_64.rpm" + }, + "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-libs-1.1.1g-9.el8.x86_64.rpm" + }, + "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-libs-1.18-1.el8.x86_64.rpm" + }, + "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-libs-3.26.0-10.el8.x86_64.rpm" + }, + "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm" + }, + "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-pkcs11-0.4.10-2.el8.x86_64.rpm" + }, + "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcom_err-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pam-1.3.1-11.el8.x86_64.rpm" + }, + "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-1.1.1g-9.el8.x86_64.rpm" + }, + "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmetalink-0.1.3-7.el8.x86_64.rpm" + }, + "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/findutils-4.6.0-20.el8.x86_64.rpm" + }, + "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/acl-2.2.53-1.el8.x86_64.rpm" + }, + "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsigsegv-2.11-5.el8.x86_64.rpm" + }, + "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-unbound-1.7.3-14.el8.x86_64.rpm" + }, + "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-libs-0.19.8.1-17.el8.x86_64.rpm" + }, + "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-libs-5.2.4-3.el8.x86_64.rpm" + }, + "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libs-3.6.8-30.el8.x86_64.rpm" + }, + "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grep-3.1-6.el8.x86_64.rpm" + }, + "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-extra-2.02-84.el8.x86_64.rpm" + }, + "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gpgme-1.13.1-3.el8.x86_64.rpm" + }, + "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libusbx-1.0.23-3.el8.x86_64.rpm" + }, + "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm" + }, + "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libaio-0.3.112-1.el8.x86_64.rpm" + }, + "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-2.9-3.el8.x86_64.rpm" + }, + "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-libs-239-36.el8.x86_64.rpm" + }, + "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libarchive-3.3.2-9.el8.x86_64.rpm" + }, + "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-tools-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shadow-utils-4.6-10.el8.x86_64.rpm" + }, + "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-2.02-84.el8.x86_64.rpm" + }, + "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-2.28-127.el8.x86_64.rpm" + }, + "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-udev-239-36.el8.x86_64.rpm" + }, + "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librepo-1.12.0-1.el8.x86_64.rpm" + }, + "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/memstrack-0.1.8-1.el8.x86_64.rpm" + }, + "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gawk-4.2.1-1.el8.x86_64.rpm" + }, + "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmartcols-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/info-6.5-6.el8.x86_64.rpm" + }, + "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-utils-2.9-3.el8.x86_64.rpm" + }, + "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-1.02.171-3.el8.x86_64.rpm" + }, + "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuuid-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-2.9-9.el8.x86_64.rpm" + }, + "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-lib-0.3.14-4.el8.x86_64.rpm" + }, + "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libffi-3.1-22.el8.x86_64.rpm" + }, + "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-common-8.30-8.el8.x86_64.rpm" + }, + "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libutempter-1.1.6-14.el8.x86_64.rpm" + }, + "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-0.23.14-5.el8_0.x86_64.rpm" + }, + "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm" + }, + "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre-8.42-4.el8.x86_64.rpm" + }, + "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/readline-7.0-10.el8.x86_64.rpm" + }, + "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm" + }, + "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm" + }, + "sha256:f2b58d2dfeb45318f8e9e67a96c4f02df69815149ce7b092233a02c0dea19f89": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64.rpm" + }, + "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sed-4.5-2.el8.x86_64.rpm" + }, + "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-0.9.4-2.el8.x86_64.rpm" + }, + "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gzip-1.9-9.el8.x86_64.rpm" + }, + "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-1.2.0-2.el8.x86_64.rpm" + }, + "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64.rpm" + }, + "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/diffutils-3.6-6.el8.x86_64.rpm" + }, + "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm" + }, + "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.x86_64.rpm" + }, + "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcurl-7.61.1-12.el8.x86_64.rpm" + }, + "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dosfstools-4.1-6.el8.x86_64.rpm" + }, + "sha256:fd7bc748b59a48a1ba803dc893be729c8624a4141e23fcef126a401857bbb455": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-server-8.0p1-5.el8.x86_64.rpm" + }, + "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm" + }, + "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libblkid-2.32.1-24.el8.x86_64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3" + }, + { + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "checksum": "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710" + }, + { + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "checksum": "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379" + }, + { + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "checksum": "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7" + }, + { + "checksum": "sha256:f2b58d2dfeb45318f8e9e67a96c4f02df69815149ce7b092233a02c0dea19f89" + }, + { + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ] + }, + "runner": "org.osbuild.rhel82" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "checksum": "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710" + }, + { + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "checksum": "sha256:b5fc6f35798edccd0390e54fce40290936c3699227e79cc6d1a42d803358fd03" + }, + { + "checksum": "sha256:fd7bc748b59a48a1ba803dc893be729c8624a4141e23fcef126a401857bbb455" + }, + { + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "redhat": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.tar", + "options": { + "filename": "root.tar.xz", + "compression": "xz" + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/acl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-4.4.19-12.el8.x86_64.rpm", + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/brotli-1.0.6-2.el8.x86_64.rpm", + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-libs-1.0.6-26.el8.x86_64.rpm", + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chkconfig-1.13-2.el8.x86_64.rpm", + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-common-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cpio-2.12-8.el8.x86_64.rpm", + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-dicts-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-libs-2.3.3-1.el8.x86_64.rpm", + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/curl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.x86_64.rpm", + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-daemon-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-libs-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-tools-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-libs-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/diffutils-3.6-6.el8.x86_64.rpm", + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dosfstools-4.1-6.el8.x86_64.rpm", + "checksum": "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libelf-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libs-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/expat-2.2.5-4.el8.x86_64.rpm", + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-libs-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/filesystem-3.8-3.el8.x86_64.rpm", + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/findutils-4.6.0-20.el8.x86_64.rpm", + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/freetype-2.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-libs-2.9.7-12.el8.x86_64.rpm", + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gawk-4.2.1-1.el8.x86_64.rpm", + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-libs-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-libs-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib2-2.56.4-8.el8.x86_64.rpm", + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-all-langpacks-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-common-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gmp-6.1.2-10.el8.x86_64.rpm", + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-smime-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnutls-3.6.14-3.el8.x86_64.rpm", + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gpgme-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grep-3.1-6.el8.x86_64.rpm", + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-modules-2.02-84.el8.noarch.rpm", + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-extra-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-minimal-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grubby-8.40-41.el8.x86_64.rpm", + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gzip-1.9-9.el8.x86_64.rpm", + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hardlink-1.3-6.el8.x86_64.rpm", + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ima-evm-utils-1.1-5.el8.x86_64.rpm", + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/info-6.5-6.el8.x86_64.rpm", + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-libs-1.8.4-14.el8.x86_64.rpm", + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-c-0.13.1-0.2.el8.x86_64.rpm", + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-glib-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-2.0.4-10.el8.x86_64.rpm", + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-libs-1.5.10-6.el8.x86_64.rpm", + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-25-16.el8.x86_64.rpm", + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-libs-25-16.el8.x86_64.rpm", + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kpartx-0.8.4-2.el8.x86_64.rpm", + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/krb5-libs-1.18.2-3.el8.x86_64.rpm", + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libacl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.112", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libaio-0.3.112-1.el8.x86_64.rpm", + "checksum": "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libarchive-3.3.2-9.el8.x86_64.rpm", + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libassuan-2.5.1-3.el8.x86_64.rpm", + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libattr-2.4.48-3.el8.x86_64.rpm", + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libblkid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-2.26-4.el8.x86_64.rpm", + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-ng-0.7.9-5.el8.x86_64.rpm", + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcom_err-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcroco-0.6.12-4.el8.x86_64.rpm", + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcurl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-utils-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libevent-2.1.8-5.el8.x86_64.rpm", + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libfdisk-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libffi-3.1-22.el8.x86_64.rpm", + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcc-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcrypt-1.8.5-4.el8.x86_64.rpm", + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgomp-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgpg-error-1.31-1.el8.x86_64.rpm", + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libidn2-2.2.0-1.el8.x86_64.rpm", + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libksba-1.3.5-7.el8.x86_64.rpm", + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmetalink-0.1.3-7.el8.x86_64.rpm", + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd-2.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmount-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.x86_64.rpm", + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64.rpm", + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpcap-1.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.34", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpng-1.6.34-5.el8.x86_64.rpm", + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpsl-0.20.2-6.el8.x86_64.rpm", + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpwquality-1.4.0-9.el8.x86_64.rpm", + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librepo-1.12.0-1.el8.x86_64.rpm", + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libreport-filesystem-2.9.5-11.el8.x86_64.rpm", + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librhsm-0.0.3-3.el8.x86_64.rpm", + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libseccomp-2.4.3-1.el8.x86_64.rpm", + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsecret-0.18.6-1.el8.x86_64.rpm", + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-utils-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsemanage-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsepol-2.9-1.el8.x86_64.rpm", + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsigsegv-2.11-5.el8.x86_64.rpm", + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmartcols-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsolv-0.7.11-1.el8.x86_64.rpm", + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libss-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-0.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstdc++-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtasn1-4.13-3.el8.x86_64.rpm", + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtirpc-1.1.4-4.el8.x86_64.rpm", + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libunistring-0.9.9-3.el8.x86_64.rpm", + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libusbx-1.0.23-3.el8.x86_64.rpm", + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libutempter-1.1.6-14.el8.x86_64.rpm", + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuuid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-0.3.0-5.el8.x86_64.rpm", + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxcrypt-4.1.1-4.el8.x86_64.rpm", + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxml2-2.9.7-8.el8.x86_64.rpm", + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libyaml-0.1.7-5.el8.x86_64.rpm", + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libzstd-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lua-libs-5.3.4-11.el8.x86_64.rpm", + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lz4-libs-1.8.3-2.el8.x86_64.rpm", + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mpfr-3.1.6-1.el8.x86_64.rpm", + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nettle-3.4.1-2.el8.x86_64.rpm", + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/npth-1.5-4.el8.x86_64.rpm", + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openldap-2.4.46-15.el8.x86_64.rpm", + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-libs-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-pkcs11-0.4.10-2.el8.x86_64.rpm", + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/os-prober-1.74-6.el8.x86_64.rpm", + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pam-1.3.1-11.el8.x86_64.rpm", + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre-8.42-4.el8.x86_64.rpm", + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre2-10.32-2.el8.x86_64.rpm", + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pigz-2.4-4.el8.x86_64.rpm", + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-2.9-9.el8.x86_64.rpm", + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/popt-1.16-14.el8.x86_64.rpm", + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/procps-ng-3.3.15-2.el8.x86_64.rpm", + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gpg-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-hawkey-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libs-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/readline-7.0-10.el8.x86_64.rpm", + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-eula-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-build-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sed-4.5-2.el8.x86_64.rpm", + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shadow-utils-4.6-10.el8.x86_64.rpm", + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shared-mime-info-1.9-3.el8.x86_64.rpm", + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-libs-3.26.0-10.el8.x86_64.rpm", + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-239-36.el8.x86_64.rpm", + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-libs-239-36.el8.x86_64.rpm", + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-pam-239-36.el8.x86_64.rpm", + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-udev-239-36.el8.x86_64.rpm", + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tar-1.30-5.el8.x86_64.rpm", + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-lib-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/util-linux-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/which-2.21-12.el8.x86_64.rpm", + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xfsprogs-5.0.0-4.el8.x86_64.rpm", + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-libs-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/zlib-1.2.11-15.el8.x86_64.rpm", + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxkbcommon-0.9.1-1.el8.x86_64.rpm", + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/memstrack-0.1.8-1.el8.x86_64.rpm", + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pinentry-1.1.0-2.el8.x86_64.rpm", + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-unbound-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "name": "python36", + "epoch": 0, + "version": "3.6.8", + "release": "2.module+el8.1.0+3334+5cb623d7", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64.rpm", + "checksum": "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7" + }, + { + "name": "qemu-img", + "epoch": 15, + "version": "4.2.0", + "release": "29.module+el8.3.0+7212+401047e6", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64.rpm", + "checksum": "sha256:f2b58d2dfeb45318f8e9e67a96c4f02df69815149ce7b092233a02c0dea19f89" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/unbound-libs-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/acl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-4.4.19-12.el8.x86_64.rpm", + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/brotli-1.0.6-2.el8.x86_64.rpm", + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-libs-1.0.6-26.el8.x86_64.rpm", + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chkconfig-1.13-2.el8.x86_64.rpm", + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-common-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cpio-2.12-8.el8.x86_64.rpm", + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-dicts-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-libs-2.3.3-1.el8.x86_64.rpm", + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/curl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.x86_64.rpm", + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-daemon-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-libs-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-tools-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-libs-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/diffutils-3.6-6.el8.x86_64.rpm", + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libelf-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libs-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/expat-2.2.5-4.el8.x86_64.rpm", + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-libs-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/filesystem-3.8-3.el8.x86_64.rpm", + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/findutils-4.6.0-20.el8.x86_64.rpm", + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gawk-4.2.1-1.el8.x86_64.rpm", + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-libs-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-libs-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib2-2.56.4-8.el8.x86_64.rpm", + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-all-langpacks-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-common-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gmp-6.1.2-10.el8.x86_64.rpm", + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnutls-3.6.14-3.el8.x86_64.rpm", + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grep-3.1-6.el8.x86_64.rpm", + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-minimal-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grubby-8.40-41.el8.x86_64.rpm", + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gzip-1.9-9.el8.x86_64.rpm", + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hardlink-1.3-6.el8.x86_64.rpm", + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/info-6.5-6.el8.x86_64.rpm", + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-libs-1.8.4-14.el8.x86_64.rpm", + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-c-0.13.1-0.2.el8.x86_64.rpm", + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-2.0.4-10.el8.x86_64.rpm", + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-libs-1.5.10-6.el8.x86_64.rpm", + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-25-16.el8.x86_64.rpm", + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-libs-25-16.el8.x86_64.rpm", + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kpartx-0.8.4-2.el8.x86_64.rpm", + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/krb5-libs-1.18.2-3.el8.x86_64.rpm", + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libacl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libarchive-3.3.2-9.el8.x86_64.rpm", + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libattr-2.4.48-3.el8.x86_64.rpm", + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libblkid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-2.26-4.el8.x86_64.rpm", + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-ng-0.7.9-5.el8.x86_64.rpm", + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcom_err-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcroco-0.6.12-4.el8.x86_64.rpm", + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcurl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-utils-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libfdisk-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libffi-3.1-22.el8.x86_64.rpm", + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcc-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcrypt-1.8.5-4.el8.x86_64.rpm", + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgomp-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgpg-error-1.31-1.el8.x86_64.rpm", + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libidn2-2.2.0-1.el8.x86_64.rpm", + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmetalink-0.1.3-7.el8.x86_64.rpm", + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmount-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.x86_64.rpm", + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64.rpm", + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpcap-1.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpsl-0.20.2-6.el8.x86_64.rpm", + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpwquality-1.4.0-9.el8.x86_64.rpm", + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libseccomp-2.4.3-1.el8.x86_64.rpm", + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-utils-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsemanage-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsepol-2.9-1.el8.x86_64.rpm", + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsigsegv-2.11-5.el8.x86_64.rpm", + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmartcols-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-0.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstdc++-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtasn1-4.13-3.el8.x86_64.rpm", + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtirpc-1.1.4-4.el8.x86_64.rpm", + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libunistring-0.9.9-3.el8.x86_64.rpm", + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libutempter-1.1.6-14.el8.x86_64.rpm", + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuuid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-0.3.0-5.el8.x86_64.rpm", + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxcrypt-4.1.1-4.el8.x86_64.rpm", + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxml2-2.9.7-8.el8.x86_64.rpm", + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libzstd-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lua-libs-5.3.4-11.el8.x86_64.rpm", + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lz4-libs-1.8.3-2.el8.x86_64.rpm", + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mpfr-3.1.6-1.el8.x86_64.rpm", + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nettle-3.4.1-2.el8.x86_64.rpm", + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openldap-2.4.46-15.el8.x86_64.rpm", + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-8.0p1-5.el8.x86_64.rpm", + "checksum": "sha256:b5fc6f35798edccd0390e54fce40290936c3699227e79cc6d1a42d803358fd03" + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-server-8.0p1-5.el8.x86_64.rpm", + "checksum": "sha256:fd7bc748b59a48a1ba803dc893be729c8624a4141e23fcef126a401857bbb455" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-libs-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-pkcs11-0.4.10-2.el8.x86_64.rpm", + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/os-prober-1.74-6.el8.x86_64.rpm", + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pam-1.3.1-11.el8.x86_64.rpm", + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre-8.42-4.el8.x86_64.rpm", + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre2-10.32-2.el8.x86_64.rpm", + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pigz-2.4-4.el8.x86_64.rpm", + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-2.9-9.el8.x86_64.rpm", + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/popt-1.16-14.el8.x86_64.rpm", + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/procps-ng-3.3.15-2.el8.x86_64.rpm", + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libs-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/readline-7.0-10.el8.x86_64.rpm", + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-eula-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sed-4.5-2.el8.x86_64.rpm", + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shadow-utils-4.6-10.el8.x86_64.rpm", + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shared-mime-info-1.9-3.el8.x86_64.rpm", + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-libs-3.26.0-10.el8.x86_64.rpm", + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-239-36.el8.x86_64.rpm", + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-libs-239-36.el8.x86_64.rpm", + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-pam-239-36.el8.x86_64.rpm", + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-udev-239-36.el8.x86_64.rpm", + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-lib-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/util-linux-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/which-2.21-12.el8.x86_64.rpm", + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-libs-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/zlib-1.2.11-15.el8.x86_64.rpm", + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxkbcommon-0.9.1-1.el8.x86_64.rpm", + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/memstrack-0.1.8-1.el8.x86_64.rpm", + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "checksums": { + "0": "sha256:cc014fee6e92f8a81f152d72a43137a3270189ef229c738381b98bc0c88443f8", + "1": "sha256:2b881b017a4c721893038307bf4f0269afe55c35114a477be226f53a2f585545" + } + }, + "image-info": { + "bootmenu": [], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:999:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "redhat:x:1000:", + "render:x:998:", + "root:x:0:", + "ssh_keys:x:996:", + "sshd:x:74:", + "sys:x:3:", + "systemd-coredump:x:997:", + "systemd-journal:x:190:", + "systemd-resolve:x:193:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "os-release": { + "ANSI_COLOR": "0;31", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:redhat:enterprise_linux:8.3:beta", + "HOME_URL": "https://www.redhat.com/", + "ID": "rhel", + "ID_LIKE": "fedora", + "NAME": "Red Hat Enterprise Linux", + "PLATFORM_ID": "platform:el8", + "PRETTY_NAME": "Red Hat Enterprise Linux 8.3 Beta (Ootpa)", + "REDHAT_BUGZILLA_PRODUCT": "Red Hat Enterprise Linux 8", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "8.3", + "REDHAT_SUPPORT_PRODUCT": "Red Hat Enterprise Linux", + "REDHAT_SUPPORT_PRODUCT_VERSION": "8.3 Beta", + "VERSION": "8.3 (Ootpa)", + "VERSION_ID": "8.3" + }, + "packages": [ + "acl-2.2.53-1.el8.x86_64", + "audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64", + "basesystem-11-5.el8.noarch", + "bash-4.4.19-12.el8.x86_64", + "brotli-1.0.6-2.el8.x86_64", + "bzip2-libs-1.0.6-26.el8.x86_64", + "ca-certificates-2019.2.32-80.0.el8_1.noarch", + "chkconfig-1.13-2.el8.x86_64", + "coreutils-8.30-8.el8.x86_64", + "coreutils-common-8.30-8.el8.x86_64", + "cpio-2.12-8.el8.x86_64", + "cracklib-2.9.6-15.el8.x86_64", + "cracklib-dicts-2.9.6-15.el8.x86_64", + "crypto-policies-20200610-1.git0ac8b1f.el8.noarch", + "crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch", + "cryptsetup-libs-2.3.3-1.el8.x86_64", + "curl-7.61.1-12.el8.x86_64", + "cyrus-sasl-lib-2.1.27-5.el8.x86_64", + "dbus-1.12.8-11.el8.x86_64", + "dbus-common-1.12.8-11.el8.noarch", + "dbus-daemon-1.12.8-11.el8.x86_64", + "dbus-libs-1.12.8-11.el8.x86_64", + "dbus-tools-1.12.8-11.el8.x86_64", + "device-mapper-1.02.171-3.el8.x86_64", + "device-mapper-libs-1.02.171-3.el8.x86_64", + "diffutils-3.6-6.el8.x86_64", + "dracut-049-89.git20200625.el8.x86_64", + "elfutils-debuginfod-client-0.180-1.el8.x86_64", + "elfutils-default-yama-scope-0.180-1.el8.noarch", + "elfutils-libelf-0.180-1.el8.x86_64", + "elfutils-libs-0.180-1.el8.x86_64", + "expat-2.2.5-4.el8.x86_64", + "file-5.33-16.el8.x86_64", + "file-libs-5.33-16.el8.x86_64", + "filesystem-3.8-3.el8.x86_64", + "findutils-4.6.0-20.el8.x86_64", + "gawk-4.2.1-1.el8.x86_64", + "gdbm-1.18-1.el8.x86_64", + "gdbm-libs-1.18-1.el8.x86_64", + "gettext-0.19.8.1-17.el8.x86_64", + "gettext-libs-0.19.8.1-17.el8.x86_64", + "glib2-2.56.4-8.el8.x86_64", + "glibc-2.28-127.el8.x86_64", + "glibc-all-langpacks-2.28-127.el8.x86_64", + "glibc-common-2.28-127.el8.x86_64", + "gmp-6.1.2-10.el8.x86_64", + "gnutls-3.6.14-3.el8.x86_64", + "gpg-pubkey-d4082792-5b32db75", + "gpg-pubkey-fd431d51-4ae0493b", + "grep-3.1-6.el8.x86_64", + "grub2-common-2.02-84.el8.noarch", + "grub2-tools-2.02-84.el8.x86_64", + "grub2-tools-minimal-2.02-84.el8.x86_64", + "grubby-8.40-41.el8.x86_64", + "gzip-1.9-9.el8.x86_64", + "hardlink-1.3-6.el8.x86_64", + "info-6.5-6.el8.x86_64", + "iptables-libs-1.8.4-14.el8.x86_64", + "json-c-0.13.1-0.2.el8.x86_64", + "kbd-2.0.4-10.el8.x86_64", + "kbd-legacy-2.0.4-10.el8.noarch", + "kbd-misc-2.0.4-10.el8.noarch", + "keyutils-libs-1.5.10-6.el8.x86_64", + "kmod-25-16.el8.x86_64", + "kmod-libs-25-16.el8.x86_64", + "kpartx-0.8.4-2.el8.x86_64", + "krb5-libs-1.18.2-3.el8.x86_64", + "libacl-2.2.53-1.el8.x86_64", + "libarchive-3.3.2-9.el8.x86_64", + "libattr-2.4.48-3.el8.x86_64", + "libblkid-2.32.1-24.el8.x86_64", + "libcap-2.26-4.el8.x86_64", + "libcap-ng-0.7.9-5.el8.x86_64", + "libcom_err-1.45.6-1.el8.x86_64", + "libcroco-0.6.12-4.el8.x86_64", + "libcurl-7.61.1-12.el8.x86_64", + "libdb-5.3.28-39.el8.x86_64", + "libdb-utils-5.3.28-39.el8.x86_64", + "libfdisk-2.32.1-24.el8.x86_64", + "libffi-3.1-22.el8.x86_64", + "libgcc-8.3.1-5.1.el8.x86_64", + "libgcrypt-1.8.5-4.el8.x86_64", + "libgomp-8.3.1-5.1.el8.x86_64", + "libgpg-error-1.31-1.el8.x86_64", + "libidn2-2.2.0-1.el8.x86_64", + "libkcapi-1.2.0-2.el8.x86_64", + "libkcapi-hmaccalc-1.2.0-2.el8.x86_64", + "libmetalink-0.1.3-7.el8.x86_64", + "libmount-2.32.1-24.el8.x86_64", + "libnghttp2-1.33.0-3.el8_2.1.x86_64", + "libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64", + "libpcap-1.9.1-4.el8.x86_64", + "libpsl-0.20.2-6.el8.x86_64", + "libpwquality-1.4.0-9.el8.x86_64", + "libseccomp-2.4.3-1.el8.x86_64", + "libselinux-2.9-3.el8.x86_64", + "libselinux-utils-2.9-3.el8.x86_64", + "libsemanage-2.9-3.el8.x86_64", + "libsepol-2.9-1.el8.x86_64", + "libsigsegv-2.11-5.el8.x86_64", + "libsmartcols-2.32.1-24.el8.x86_64", + "libssh-0.9.4-2.el8.x86_64", + "libssh-config-0.9.4-2.el8.noarch", + "libstdc++-8.3.1-5.1.el8.x86_64", + "libtasn1-4.13-3.el8.x86_64", + "libtirpc-1.1.4-4.el8.x86_64", + "libunistring-0.9.9-3.el8.x86_64", + "libutempter-1.1.6-14.el8.x86_64", + "libuuid-2.32.1-24.el8.x86_64", + "libverto-0.3.0-5.el8.x86_64", + "libxcrypt-4.1.1-4.el8.x86_64", + "libxkbcommon-0.9.1-1.el8.x86_64", + "libxml2-2.9.7-8.el8.x86_64", + "libzstd-1.4.4-1.el8.x86_64", + "lua-libs-5.3.4-11.el8.x86_64", + "lz4-libs-1.8.3-2.el8.x86_64", + "memstrack-0.1.8-1.el8.x86_64", + "mpfr-3.1.6-1.el8.x86_64", + "ncurses-6.1-7.20180224.el8.x86_64", + "ncurses-base-6.1-7.20180224.el8.noarch", + "ncurses-libs-6.1-7.20180224.el8.x86_64", + "nettle-3.4.1-2.el8.x86_64", + "openldap-2.4.46-15.el8.x86_64", + "openssh-8.0p1-5.el8.x86_64", + "openssh-server-8.0p1-5.el8.x86_64", + "openssl-1.1.1g-9.el8.x86_64", + "openssl-libs-1.1.1g-9.el8.x86_64", + "openssl-pkcs11-0.4.10-2.el8.x86_64", + "os-prober-1.74-6.el8.x86_64", + "p11-kit-0.23.14-5.el8_0.x86_64", + "p11-kit-trust-0.23.14-5.el8_0.x86_64", + "pam-1.3.1-11.el8.x86_64", + "pcre-8.42-4.el8.x86_64", + "pcre2-10.32-2.el8.x86_64", + "pigz-2.4-4.el8.x86_64", + "platform-python-3.6.8-30.el8.x86_64", + "platform-python-pip-9.0.3-17.el8.noarch", + "platform-python-setuptools-39.2.0-6.el8.noarch", + "policycoreutils-2.9-9.el8.x86_64", + "popt-1.16-14.el8.x86_64", + "procps-ng-3.3.15-2.el8.x86_64", + "publicsuffix-list-dafsa-20180723-1.el8.noarch", + "python3-libs-3.6.8-30.el8.x86_64", + "python3-pip-wheel-9.0.3-17.el8.noarch", + "python3-setuptools-wheel-39.2.0-6.el8.noarch", + "readline-7.0-10.el8.x86_64", + "redhat-release-8.3-0.2.el8.x86_64", + "redhat-release-eula-8.3-0.2.el8.x86_64", + "rpm-4.14.3-4.el8.x86_64", + "rpm-libs-4.14.3-4.el8.x86_64", + "rpm-plugin-selinux-4.14.3-4.el8.x86_64", + "sed-4.5-2.el8.x86_64", + "selinux-policy-3.14.3-48.el8.noarch", + "selinux-policy-targeted-3.14.3-48.el8.noarch", + "setup-2.12.2-6.el8.noarch", + "shadow-utils-4.6-10.el8.x86_64", + "shared-mime-info-1.9-3.el8.x86_64", + "sqlite-libs-3.26.0-10.el8.x86_64", + "systemd-239-36.el8.x86_64", + "systemd-libs-239-36.el8.x86_64", + "systemd-pam-239-36.el8.x86_64", + "systemd-udev-239-36.el8.x86_64", + "trousers-0.3.14-4.el8.x86_64", + "trousers-lib-0.3.14-4.el8.x86_64", + "tzdata-2020a-1.el8.noarch", + "util-linux-2.32.1-24.el8.x86_64", + "which-2.21-12.el8.x86_64", + "xkeyboard-config-2.28-1.el8.noarch", + "xz-5.2.4-3.el8.x86_64", + "xz-libs-5.2.4-3.el8.x86_64", + "zlib-1.2.11-15.el8.x86_64" + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "redhat:x:1000:1000::/home/redhat:/bin/bash", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/etc/machine-id": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/proc": ".M.......", + "/sys": ".M.......", + "/usr/bin/newgidmap": "........P", + "/usr/bin/newuidmap": "........P", + "/usr/libexec/openssh/ssh-keysign": "......G..", + "/var/log/lastlog": ".M....G.." + }, + "missing": [ + "/etc/systemd/system/dbus-org.freedesktop.resolve1.service" + ] + }, + "services-disabled": [ + "console-getty.service", + "ctrl-alt-del.target", + "debug-shell.service", + "exit.target", + "fstrim.timer", + "halt.target", + "kexec.target", + "poweroff.target", + "reboot.target", + "remote-cryptsetup.target", + "runlevel0.target", + "runlevel6.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "systemd-resolved.service", + "tcsd.service", + "tmp.mount" + ], + "services-enabled": [ + "autovt@.service", + "getty@.service", + "remote-fs.target", + "selinux-autorelabel-mark.service", + "sshd.service" + ], + "timezone": "UTC" + } +} \ No newline at end of file diff --git a/test/cases/rhel_8-x86_64-vhd-boot.json b/test/cases/rhel_8-x86_64-vhd-boot.json new file mode 100644 index 0000000..525a388 --- /dev/null +++ b/test/cases/rhel_8-x86_64-vhd-boot.json @@ -0,0 +1,9860 @@ +{ + "boot": { + "type": "azure" + }, + "compose-request": { + "distro": "rhel-8", + "arch": "x86_64", + "image-type": "vhd", + "repositories": [ + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + }, + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + } + ], + "filename": "disk.vhd", + "blueprint": { + "name": "vhd-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:0027700684ce09927aded1d2c5bb84028529141a6b418897bde37d4af348f8bb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:00cc9cd4517cbb4ad99dbce63b40b700699523550cd7f8202948af28dbe2cd9e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:0129696c208f60326723c650295167b0600791ccb2e9c3d446c4caf9adecb3d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-3.5.0-1.el8.x86_64.rpm" + }, + "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libyaml-0.1.7-5.el8.x86_64.rpm" + }, + "sha256:0391105afa53c9503b59591615bd7c98e2f7a4cd94ff4fd1451c4234522f3880": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libedit-3.1-23.20170329cvs.el8.x86_64.rpm" + }, + "sha256:0493fd81825df694be5d15685bfe4dc002de314d18f5ae47ccee769f65ea5013": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ethtool-5.0-2.el8.x86_64.rpm" + }, + "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmount-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cloud-init-19.4-7.el8.noarch.rpm" + }, + "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-daemon-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-prettytable-0.7.2-14.el8.noarch.rpm" + }, + "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libunistring-0.9.9-3.el8.x86_64.rpm" + }, + "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jinja2-2.10.1-2.el8_0.noarch.rpm" + }, + "sha256:08bf2e898b5775317d04266f4598eddbe06c424a3694b1534e3ceff088e2e8ca": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-nftables-0.9.3-14.el8.x86_64.rpm" + }, + "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:09ca7b05e26f93d35ac299dbcd865b65ec3a3d2654e1da87d2c3c0462dbe6e4a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-schedutils-0.6-6.el8.x86_64.rpm" + }, + "sha256:09fc3154e76c8ee25b3982c15f3bc455017262c3df5af84075859dcbf79e4f82": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libsemanage-2.9-3.el8.x86_64.rpm" + }, + "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugins-core-4.0.17-2.el8.noarch.rpm" + }, + "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-239-36.el8.x86_64.rpm" + }, + "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/expat-2.2.5-4.el8.x86_64.rpm" + }, + "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-libs-2.3.3-1.el8.x86_64.rpm" + }, + "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm" + }, + "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxcrypt-4.1.1-4.el8.x86_64.rpm" + }, + "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/linux-firmware-20200619-99.git3890db36.el8.noarch.rpm" + }, + "sha256:0e4b7687f0c62f4e336223b939f6cb169c8dac49eee23c53fd919e58d8f989df": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/microcode_ctl-20200609-2.el8.x86_64.rpm" + }, + "sha256:0f3b084d947bc246fe68822129b8ae1294c4187270a19f0966282baf75b34dc6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-subscription-manager-rhsm-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:0f662be3013f7958961ae70400c7ed1fb4350c823881c123a16cbb2b6b8c8f6a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/plymouth-core-libs-0.9.4-1.20200615git1e36e30.el8.x86_64.rpm" + }, + "sha256:1065049dbd53849d35db269a23be54148cbe481122381ab71b72f62e83816b26": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gobject-introspection-1.56.1-1.el8.x86_64.rpm" + }, + "sha256:10f40567d02123b71bd878ef423dd0d5dca415e806ff041c3c69b99d114fea84": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chrony-3.5-1.el8.x86_64.rpm" + }, + "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-all-langpacks-2.28-127.el8.x86_64.rpm" + }, + "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm" + }, + "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gmp-6.1.2-10.el8.x86_64.rpm" + }, + "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcc-8.3.1-5.1.el8.x86_64.rpm" + }, + "sha256:13ffce0597b689dd53f55ea0d03dd6d013246634f5c6cbcef51fa549d9734b29": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-cffi-1.11.5-5.el8.x86_64.rpm" + }, + "sha256:14098d36fe4be983fac73d04aeacf0ed7977d962e760907b89e3f80b4ca46f3f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-common-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm" + }, + "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cpio-2.12-8.el8.x86_64.rpm" + }, + "sha256:15462b748aef3c565bcf4f849c1a21c1389a8ef5e7dae94e64718865a67d46a9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-libs-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crontabs-1.11-16.20150630git.el8.noarch.rpm" + }, + "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-smime-2.2.20-2.el8.x86_64.rpm" + }, + "sha256:18d419718a99851370262584bec1b27d60cbd08845b50fbe97e1a56b71cd5ea2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-perf-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm" + }, + "sha256:1b1fe43a375a21f4c3ccf04861c122fd519d4865b9c1abc7f1973b86a0252a06": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-kcm-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-5.2.4-3.el8.x86_64.rpm" + }, + "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.x86_64.rpm" + }, + "sha256:1bc038693be7ccd59674c478176c3badce4a56f785dd0690548b087bcc7adaa1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl1000-firmware-39.31.5.1-99.el8.1.noarch.rpm" + }, + "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-25-16.el8.x86_64.rpm" + }, + "sha256:1d28eaeaa59c48e4193c709dd2a6301c2f8701138164c05371a0d8f235d14c9c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl7260-firmware-25.30.13.0-99.el8.1.noarch.rpm" + }, + "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tzdata-2020a-1.el8.noarch.rpm" + }, + "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libksba-1.3.5-7.el8.x86_64.rpm" + }, + "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsecret-0.18.6-1.el8.x86_64.rpm" + }, + "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm" + }, + "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/krb5-libs-1.18.2-3.el8.x86_64.rpm" + }, + "sha256:1faa85c12115426d8afc51c8bed2e71bf1dd87063e25052bcf85c17dbc0d9ea4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-network-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-2.02-84.el8.x86_64.rpm" + }, + "sha256:204e4dbaf357e12ff041c1c203b2527f7d178905ebae53db3c12e57d28fcbf46": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl135-firmware-18.168.6.1-99.el8.1.noarch.rpm" + }, + "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-common-2.28-127.el8.x86_64.rpm" + }, + "sha256:206cba480b58c70348584010d547d21bcd84c6094fd3980e22c6b640da12704c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-syspurpose-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:206de21c82d76de550bcc1959138472640b0a950a311b753203f5dfe5b201b7b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipcalc-0.2.4-4.el8.x86_64.rpm" + }, + "sha256:20dec130e4fd0a2146443791ca7ade6e079cea691d93711813d5f483b691c55a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ethtool-0.14-3.el8.x86_64.rpm" + }, + "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-5.33-16.el8.x86_64.rpm" + }, + "sha256:22585bd5d69c5e0a06fe00a6844da2e5d311512374c1d176f17f41caab7e121f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/parted-3.2-38.el8.x86_64.rpm" + }, + "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:231bc0eeb8fb127f0a4da5a4da1edd226067d5029a0b4fd6ef72c246ccfc31c0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libldb-2.1.3-2.el8.x86_64.rpm" + }, + "sha256:2334cb78002aa30feeb11549d51e204aa868f5538a09957850082d7efb15b00f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/c-ares-1.13.0-5.el8.x86_64.rpm" + }, + "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libcomps-0.1.11-4.el8.x86_64.rpm" + }, + "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-3.6.8-30.el8.x86_64.rpm" + }, + "sha256:252d46d58e0c02cbe2d2485488bd63ea7129964643787557eae832102541f84f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl5150-firmware-8.24.2.2-99.el8.1.noarch.rpm" + }, + "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tuned-2.14.0-2.el8.noarch.rpm" + }, + "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxkbcommon-0.9.1-1.el8.x86_64.rpm" + }, + "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-2.0.4-10.el8.x86_64.rpm" + }, + "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-ng-0.7.9-5.el8.x86_64.rpm" + }, + "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libattr-2.4.48-3.el8.x86_64.rpm" + }, + "sha256:289e2a39b2a29163a29da35936d4b484fe356d0a6d519524023e79686daf501b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-client-4.3.6-41.el8.x86_64.rpm" + }, + "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mpfr-3.1.6-1.el8.x86_64.rpm" + }, + "sha256:2a65cec3eb67ba7645dd97cf3f3811cd5fb06eea2526d36a683d3fdaa0f2825e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cronie-anacron-1.5.2-4.el8.x86_64.rpm" + }, + "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre2-10.32-2.el8.x86_64.rpm" + }, + "sha256:2cfcc3d6163dfaf7ce76998be992bd0b70dd7cbb838430cecf2aff04cd435d24": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/virt-what-1.18-6.el8.x86_64.rpm" + }, + "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pyOpenSSL-18.0.0-1.el8.noarch.rpm" + }, + "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.x86_64.rpm" + }, + "sha256:2e90748420a7d28b3063df04de129e79ea85310a8d9cf2faf0a2e7b8430307c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-client-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:2eba2dc51974271244bdeaaf17c6e8fac3c35b62914b680076bdc4a32272df01": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpath_utils-0.2.1-39.el8.x86_64.rpm" + }, + "sha256:2eed977380b41885d4f7ad33e122abbb9ea7391c1255d182451efd457688c8b2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnfsidmap-2.3.3-35.el8.x86_64.rpm" + }, + "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-8.30-8.el8.x86_64.rpm" + }, + "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kpartx-0.8.4-2.el8.x86_64.rpm" + }, + "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpsl-0.20.2-6.el8.x86_64.rpm" + }, + "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm" + }, + "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-dicts-2.9.6-15.el8.x86_64.rpm" + }, + "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-oauthlib-2.1.0-1.el8.noarch.rpm" + }, + "sha256:348b7d66a20015563489babbc3850928587575d0acde7c61d55480ebf0f3820d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-squash-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:350657e984b1736bb4a8c9cc01b772517a4194467d6db84110c1cc42131f1cae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/initscripts-10.00.8-1.el8.x86_64.rpm" + }, + "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-chardet-3.0.4-7.el8.noarch.rpm" + }, + "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/zlib-1.2.11-15.el8.x86_64.rpm" + }, + "sha256:3730f3f8d3332836f278250408891cb097379a5d7745fe698b1d418e9e13d335": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-clients-8.0p1-5.el8.x86_64.rpm" + }, + "sha256:37504d807ac0bb6c429d7be9c636f7b755464023511d856846dbb9deb8f6a76d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/logrotate-3.14.0-4.el8.x86_64.rpm" + }, + "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libseccomp-2.4.3-1.el8.x86_64.rpm" + }, + "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-2.26-4.el8.x86_64.rpm" + }, + "sha256:38affe91361bf56b84490d97c7e3f815965cf8d2bbb222c6c045af4bf2dff736": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/langpacks-en-1.0-12.el8.noarch.rpm" + }, + "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-1.18-1.el8.x86_64.rpm" + }, + "sha256:398c1abc82097370f46e6fdf4dae63870e1f767b24d0130c79ed67ea3a67233a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sg3_utils-1.44-5.el8.x86_64.rpm" + }, + "sha256:39e59e9a2460e3b6fe147501e79a57042f161c217963be212359031bb8b18daa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/jansson-2.11-3.el8.x86_64.rpm" + }, + "sha256:3a1058c6ba468722090a74002a3239161771b0d8b444975bff891afd45bb672a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsysfs-2.1.0-24.el8.x86_64.rpm" + }, + "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-configobj-5.0.6-11.el8.noarch.rpm" + }, + "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/procps-ng-3.3.15-2.el8.x86_64.rpm" + }, + "sha256:3b087daa7e9de69c051f22f9df1ef00867ffddd99357bc3a215ccde76a13c02f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtalloc-2.3.1-2.el8.x86_64.rpm" + }, + "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/filesystem-3.8-3.el8.x86_64.rpm" + }, + "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-plugins-core-4.0.17-2.el8.noarch.rpm" + }, + "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-8.3-0.2.el8.x86_64.rpm" + }, + "sha256:3d807ee0bd43ba2cfbc5fa3678963fb706898bd41588a29330c315a9d88ab2a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipset-libs-7.1-1.el8.x86_64.rpm" + }, + "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ima-evm-utils-1.1-5.el8.x86_64.rpm" + }, + "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tar-1.30-5.el8.x86_64.rpm" + }, + "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pyserial-3.1.1-8.el8.noarch.rpm" + }, + "sha256:3edf7d29e530e6568416d4455e9fbaa511aba236c603da9928e689fae77b9874": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-netifaces-0.10.6-4.el8.x86_64.rpm" + }, + "sha256:40010441888b72dd077d4d6790f837236701b93c8b31da5dbf65c700fd2571fd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-config-generic-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:411d65fe9e463458af055d06a4a89a1d822d26049198615c0afc9741c426c77c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cronie-1.5.2-4.el8.x86_64.rpm" + }, + "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gpg-1.13.1-3.el8.x86_64.rpm" + }, + "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-common-4.3.6-41.el8.noarch.rpm" + }, + "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/util-linux-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:42b2221eb7118f2a10bbe67ba22e6876cdad05f9db6ae0e057d556041555dc7f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pyasn1-0.3.7-6.el8.noarch.rpm" + }, + "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xfsprogs-5.0.0-4.el8.x86_64.rpm" + }, + "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:4403330cdf4f15d75d727e2ac8c3358ff6a13209b3395dfac2131984e443eb23": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/snappy-1.1.7-5.el8.x86_64.rpm" + }, + "sha256:4405d32322fd496c65f57a12b6037fd75b49957269dbf9cb0417b598162f7407": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iproute-5.3.0-5.el8.x86_64.rpm" + }, + "sha256:441efa6f0b9a9905ef11ec987d6db89e7dba2857060020c4554e32db3e59fce5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-libs-0.115-11.el8.x86_64.rpm" + }, + "sha256:44e81330b185085f871e9fbf8fae27c8de411600c032aca371dc6d39a3e261da": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_sudo-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libzstd-1.4.4-1.el8.x86_64.rpm" + }, + "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtirpc-1.1.4-4.el8.x86_64.rpm" + }, + "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm" + }, + "sha256:474a66a4cf3d5a00286be40c15bad69ea1ac63a9424a1ff44f20a548a7686f7a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libfastjson-0.99.8-2.el8.x86_64.rpm" + }, + "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm" + }, + "sha256:4882ff53265bdeabb69f1ac9c585454b28ae799ab31fa72c9eb10bdbe1f41d9a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-tools-libs-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:4931d78c496eaaa8e6b6bbec2b4750da52b9fc7e989ae89b7c1fa2a6f40ff7fa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm" + }, + "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libidn2-2.2.0-1.el8.x86_64.rpm" + }, + "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pyudev-0.21.0-7.el8.noarch.rpm" + }, + "sha256:4b8cd13404adac1a30a105e894a733f7c79bfac1a125b8cd095e6ba9c1d056f9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-tui-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-modules-2.02-84.el8.noarch.rpm" + }, + "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgpg-error-1.31-1.el8.x86_64.rpm" + }, + "sha256:4ca553b0c0f6dc130e05e2011cdf1f52132e8f70bd93be8eee4e415b2cac0c56": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-librepo-1.12.0-1.el8.x86_64.rpm" + }, + "sha256:4ccbefcbe75decfef38ccae5d8ff92ba6b00e8232b64ec46ae0c0be8ae20ec50": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libxml2-2.9.7-8.el8.x86_64.rpm" + }, + "sha256:4ce17c90ad64c2ca85191caa990db8eb0aec7cde24a26a89294c5821cfd20e5f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iprutils-2.4.19-1.el8.x86_64.rpm" + }, + "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-libs-1.0.6-26.el8.x86_64.rpm" + }, + "sha256:4d54749c92887ab059c768ada265c0f64e292594846b183d1fdfa9b29fff3ac1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/plymouth-0.9.4-1.20200615git1e36e30.el8.x86_64.rpm" + }, + "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-libs-1.5.10-6.el8.x86_64.rpm" + }, + "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shared-mime-info-1.9-3.el8.x86_64.rpm" + }, + "sha256:4ed1a6294eea09a3a7e15683267ca5d383e4c2b27fd57fe05d2666e0e6c3d26f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtdb-1.4.3-1.el8.x86_64.rpm" + }, + "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/npth-1.5-4.el8.x86_64.rpm" + }, + "sha256:507442831068c749ba21b22bd96993a1a2a6c74dd53c55f34c7f81a21554c82d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libref_array-0.1.5-39.el8.x86_64.rpm" + }, + "sha256:50c0d1828a9e8db638c09d88afb0828d98349027ce498ee7df74e7ff6052ac1d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdhash-0.5.0-39.el8.x86_64.rpm" + }, + "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib2-2.56.4-8.el8.x86_64.rpm" + }, + "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm" + }, + "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-eula-8.3-0.2.el8.x86_64.rpm" + }, + "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-rpm-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-4.4.19-12.el8.x86_64.rpm" + }, + "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-c-0.13.1-0.2.el8.x86_64.rpm" + }, + "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:539abfc369a17023658486f7b4a48c8db159cc4d617b27da256ddac6e15ea687": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpipeline-1.5.0-2.el8.x86_64.rpm" + }, + "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpng-1.6.34-5.el8.x86_64.rpm" + }, + "sha256:53fb6834e2e439e79225d957c4643922da74836417b5558d0c2943b546b26e57": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libndp-1.7-3.el8.x86_64.rpm" + }, + "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:56cc340c88cabacd9a329f80edee141154dbf84808894e43a937247394623cf0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl6000-firmware-9.221.4.1-99.el8.1.noarch.rpm" + }, + "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-build-libs-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm" + }, + "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcroco-0.6.12-4.el8.x86_64.rpm" + }, + "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonschema-2.6.0-4.el8.noarch.rpm" + }, + "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-hawkey-0.48.0-2.el8.x86_64.rpm" + }, + "sha256:5a85222c8e9997a8b609b915a8fbae756de9b9bff732db852fb15fe0524f2d86": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dbus-1.2.4-15.el8.x86_64.rpm" + }, + "sha256:5ac24d7513e9daa137064985cd8a8774c94aa8a6c07e2814d0c56ddde33fcc8d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nftables-0.9.3-14.el8.x86_64.rpm" + }, + "sha256:5bdb82a14d3604899324afc296aa7e7179a15788e2514348eea81b46934d6a3c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/authselect-libs-1.2.1-2.el8.x86_64.rpm" + }, + "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgomp-8.3.1-5.1.el8.x86_64.rpm" + }, + "sha256:5cbe058e6d2177f88006fed866e6b1565d6024a12c311ae8eaa21008f76074b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl3160-firmware-25.30.13.0-99.el8.1.noarch.rpm" + }, + "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lz4-libs-1.8.3-2.el8.x86_64.rpm" + }, + "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonpointer-1.10-11.el8.noarch.rpm" + }, + "sha256:5ef47eb6a042a13c902764907692c1068eb0f69153b47bc85792bef74bfa852b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rsyslog-8.1911.0-6.el8.x86_64.rpm" + }, + "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-libs-5.33-16.el8.x86_64.rpm" + }, + "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lua-libs-5.3.4-11.el8.x86_64.rpm" + }, + "sha256:61498bdebac578394eae8667e16ad7393309f7144266d4331f4c17f276b15fe0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/plymouth-scripts-0.9.4-1.20200615git1e36e30.el8.x86_64.rpm" + }, + "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:61cf7338e12188f787c7162e2cd669c895e4e2cf4ae86c9debcd56fd3b8a8322": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnfnetlink-1.0.1-13.el8.x86_64.rpm" + }, + "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-6.1-7.20180224.el8.x86_64.rpm" + }, + "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/curl-7.61.1-12.el8.x86_64.rpm" + }, + "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nettle-3.4.1-2.el8.x86_64.rpm" + }, + "sha256:65dc391ab1c96d1009ef2e7706eabacd5cf84f2a47ea1cc87f6f5e2c1324b178": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsepol-2.9-1.el8.x86_64.rpm" + }, + "sha256:664a883f3c7042eb91e0b66fc99c309a729011b4912e4af9397f4e25e1adae90": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cloud-utils-growpart-0.31-1.el8.noarch.rpm" + }, + "sha256:671852e4f32de6278dd384d35d1dc799ab5d3e8ef718e89e516452cbcba068f0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sg3_utils-libs-1.44-5.el8.x86_64.rpm" + }, + "sha256:68362500ad574eb2df43a3d260ab8d0f3ce1ae5f34e66d71f2478fef8e17cb4a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/less-530-1.el8.x86_64.rpm" + }, + "sha256:6844197fd8ffdb16cf94ab77709aa2954cb39512435a377401ebce340d06c7de": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/irqbalance-1.4.0-4.el8.x86_64.rpm" + }, + "sha256:686015c78247edec0a0f5e0d2cbbf02d9feea162e5967ed5b5be35d3951b1f3d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dmidecode-3.2-6.el8.x86_64.rpm" + }, + "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-5.3.28-39.el8.x86_64.rpm" + }, + "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/freetype-2.9.1-4.el8.x86_64.rpm" + }, + "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpwquality-1.4.0-9.el8.x86_64.rpm" + }, + "sha256:6d0dcbaa45457461dd5c4afe97689fa2baf5f95551bbe5e827a152dee545a51d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-libnm-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-7.20180224.el8.x86_64.rpm" + }, + "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-0.19.8.1-17.el8.x86_64.rpm" + }, + "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hwdata-0.314-8.5.el8.noarch.rpm" + }, + "sha256:713ec69b972a8e88622b3fcd3b84fccdbd6c333b68b6c52151c2350edad2576a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgudev-232-4.el8.x86_64.rpm" + }, + "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openldap-2.4.46-15.el8.x86_64.rpm" + }, + "sha256:72fe0e1837aa503049fada31c6e8ae73a4e550be2ddfd73303fb84e955fcc268": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl2000-firmware-18.168.6.1-99.el8.1.noarch.rpm" + }, + "sha256:72ff3a3f6c52849a40cb24f9694115a68cc939970a00c374b4c73b1e4c5dc20c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/squashfs-tools-4.3-19.el8.x86_64.rpm" + }, + "sha256:73c29baa2cd94f1ae6a1d1333818969a281b16dd4262f413ad284c5333719a4d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/groff-base-1.22.3-18.el8.x86_64.rpm" + }, + "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libdnf-0.48.0-2.el8.x86_64.rpm" + }, + "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:74d05cb72dc6740be73480e68b15b209d7e7a2bf7d7d54e0d3a2dc261ce64e4b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnetfilter_conntrack-1.0.6-5.el8.x86_64.rpm" + }, + "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.x86_64.rpm" + }, + "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsemanage-2.9-3.el8.x86_64.rpm" + }, + "sha256:769b1ac34ba3aa35337b734b8548dcf9e8b41476b9b2093756341bcbd5969a36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/firewalld-filesystem-0.8.2-1.el8.noarch.rpm" + }, + "sha256:76ca09c73360f48d4b6fe4d4ee0aa974ef53531222df8e363d8006ec469051cf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-core-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-libs-1.02.171-3.el8.x86_64.rpm" + }, + "sha256:78926ec2c75db8bcbdd4f4fbd8c06b373f85bd7ecce0e6aac8c75dda95fcae2c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/biosdevname-0.7.3-2.el8.x86_64.rpm" + }, + "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-utils-5.3.28-39.el8.x86_64.rpm" + }, + "sha256:798420bbda79fd0b9312abac25efad6b28957c512497f37f4beddad5d67dd66a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdaemon-0.14-15.el8.x86_64.rpm" + }, + "sha256:7a7a238ea529165348acef1d1a20c1d47c1ef5838d8501f3879bb130c1b73e06": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-cryptography-2.3-3.el8.x86_64.rpm" + }, + "sha256:7b6856dc4dc1d88d9c3c9597fb824b5776af59f045087bdb2713d64045216a36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/man-db-2.7.6.1-17.el8.x86_64.rpm" + }, + "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pinentry-1.1.0-2.el8.x86_64.rpm" + }, + "sha256:7c0b2b064dad700cba2754b46f483e3e59aaf798740470df1daad3d5239fb893": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/passwd-0.80-3.el8.x86_64.rpm" + }, + "sha256:7c292b3bb74d12d77e1e22221c55696a0c5f50304040b3a706c2164d5b6a42e4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_nss_idmap-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:7c89c2d055013779252c12643e8f0b3731f4dd5e2b61d9d81233a0ee298abb36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libteam-1.29-5.el8.x86_64.rpm" + }, + "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/brotli-1.0.6-2.el8.x86_64.rpm" + }, + "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm" + }, + "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libevent-2.1.8-5.el8.x86_64.rpm" + }, + "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-slip-0.6.4-11.el8.noarch.rpm" + }, + "sha256:7f7f559d65b4b29a1695a644c3d0e04f36565feaa65416f4b84b309716ecf17f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdisk-1.0.3-6.el8.x86_64.rpm" + }, + "sha256:802263173d9c487fc3ca584cc2a5b7b7bb49ac0d12d9026b3246d50fd0888fb1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-glib-0.110-2.el8.x86_64.rpm" + }, + "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/popt-1.16-14.el8.x86_64.rpm" + }, + "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.x86_64.rpm" + }, + "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-libs-1.8.4-14.el8.x86_64.rpm" + }, + "sha256:860676d4231afa3e6b23933d8dd65e5f7f5823910791e6481d2440ae4ec64c53": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtevent-0.10.2-2.el8.x86_64.rpm" + }, + "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libassuan-2.5.1-3.el8.x86_64.rpm" + }, + "sha256:86d305a1466a596f8b436561d674f2510f268bed9e73f56c87da1dd120f99c18": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gobject-base-3.28.3-2.el8.x86_64.rpm" + }, + "sha256:8716781f69e8f2bf3f171ed6a34a012f79dc76ce0bcfa318fa0b02d488173ee1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-ebtables-1.8.4-14.el8.x86_64.rpm" + }, + "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grubby-8.40-41.el8.x86_64.rpm" + }, + "sha256:879cb96ce1591886728a45bfb6dbd6fcf48a43757c42f5481019157037046b61": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-langpack-en-2.28-127.el8.x86_64.rpm" + }, + "sha256:8af00d4b0857240310156e05123e07795e6573da7c1fe9e7fd83b51f13971725": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-0.115-11.el8.x86_64.rpm" + }, + "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libfdisk-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pycparser-2.14-14.el8.noarch.rpm" + }, + "sha256:8d371e753071edc796d2eadb8278980290511be6279fdf46649c81b859497d6a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/prefixdevname-0.1.0-6.el8.x86_64.rpm" + }, + "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpcap-1.9.1-4.el8.x86_64.rpm" + }, + "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/unbound-libs-1.7.3-14.el8.x86_64.rpm" + }, + "sha256:8eb3370fe641e329b03838e560f45ee290b273dcccfa182d97ad2dbff59b47fd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl6050-firmware-41.28.5.1-99.el8.1.noarch.rpm" + }, + "sha256:8f00781eb679c6baf359099fa2a672ffccfc8e43b7c03c1dc635619cb25ff01d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm" + }, + "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-libs-2.9.7-12.el8.x86_64.rpm" + }, + "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm" + }, + "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libacl-2.2.53-1.el8.x86_64.rpm" + }, + "sha256:947b4e4eebec21501ca62e2a7ff9baae0e4e7c59584fbba4b6276a402cfbb45b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/vim-minimal-8.0.1763-15.el8.x86_64.rpm" + }, + "sha256:9487bff6bb16e7326c8b805751580b4593220ba19b06515c69de83fee8e3bb1f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libselinux-2.9-3.el8.x86_64.rpm" + }, + "sha256:948e61e32986303f12f8dbe40bc44674287b3906a54dadae5e3dfd2ccba88fac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kexec-tools-2.0.20-29.el8.x86_64.rpm" + }, + "sha256:950b6b41580f4c35a108345c1c8d9d3930cc95a2c4fe4b726f02bce67532151d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl6000g2a-firmware-18.168.6.1-99.el8.1.noarch.rpm" + }, + "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-0.3.0-5.el8.x86_64.rpm" + }, + "sha256:959fcb0016788a2b1ee55f0801c1490b196416579bc9ac9da9e38786e6c78ff6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl105-firmware-18.168.6.1-99.el8.1.noarch.rpm" + }, + "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-slip-dbus-0.6.4-11.el8.noarch.rpm" + }, + "sha256:97c8af6f58e3d14317036bd3ed2cbc498803c91c55b9dc0e8f0fddea7ac929e3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-modules-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chkconfig-1.13-2.el8.x86_64.rpm" + }, + "sha256:98a589d7e1cdea9d974aa43f688e55333eed11ce7cb2037d45cc2e69bce579b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/usermode-1.113-1.el8.x86_64.rpm" + }, + "sha256:995a5401cd86404d14d08c0aeafeaa8da3f540b1806f9d0e233d75dec9e45c74": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libmaxminddb-1.2.0-10.el8.x86_64.rpm" + }, + "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:99fa92b5d1e0d335fb2bb961ef39988b50968350b899e8790cead73c9a0bec65": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-rhsm-certificates-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm" + }, + "sha256:9a9ca6857f517f1249d2eb496fe904590d6203e4a9547a28e0b23f21c4cae24a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-pkla-compat-0.1-12.el8.x86_64.rpm" + }, + "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdnf-0.48.0-2.el8.x86_64.rpm" + }, + "sha256:9c5594fcac97c0f8813d7a188e2368e3b1095025fc4a0ecbd5d17e54c0c93f97": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmnl-1.0.4-6.el8.x86_64.rpm" + }, + "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-2.9.6-15.el8.x86_64.rpm" + }, + "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstdc++-8.3.1-5.1.el8.x86_64.rpm" + }, + "sha256:9d9d1bdfba4cd852f90232ebe2c4247e7b3a88c4476578c820788a91d6838e55": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rng-tools-6.8-3.el8.x86_64.rpm" + }, + "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-babel-2.5.1-5.el8.noarch.rpm" + }, + "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64.rpm" + }, + "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libelf-0.180-1.el8.x86_64.rpm" + }, + "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ply-3.9-8.el8.noarch.rpm" + }, + "sha256:a01bc8ab29f40d5e9f03929cee7a796804d63fda3c471054a67d1fd1e5577f6c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-team-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcrypt-1.8.5-4.el8.x86_64.rpm" + }, + "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-0.3.14-4.el8.x86_64.rpm" + }, + "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-glib-1.4.4-1.el8.x86_64.rpm" + }, + "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-libs-25-16.el8.x86_64.rpm" + }, + "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/os-prober-1.74-6.el8.x86_64.rpm" + }, + "sha256:a3dedf8c077b4656d3cd4ef641e696397a3fff83ee8b14f0e3fc69d7c10cebcf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lzo-2.08-14.el8.x86_64.rpm" + }, + "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm" + }, + "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libss-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librhsm-0.0.3-3.el8.x86_64.rpm" + }, + "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pysocks-1.6.8-3.el8.noarch.rpm" + }, + "sha256:a8808c053ffb7ccf826d80fdd458b6521f2cc63e55eb90d79a504fbb66c36cb0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/checkpolicy-2.9-1.el8.x86_64.rpm" + }, + "sha256:a8961c50502aa02071c043a16f93399ac6794a058a0ef42be889abe60f35985b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iputils-20180629-2.el8.x86_64.rpm" + }, + "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcomps-0.1.11-4.el8.x86_64.rpm" + }, + "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setup-2.12.2-6.el8.noarch.rpm" + }, + "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:ac2800369b7f4dc05a8fec452eabedf02f153c11e188a1e80157e35592305690": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-cli-3.5.0-1.el8.x86_64.rpm" + }, + "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rootfiles-8.1-22.el8.noarch.rpm" + }, + "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-minimal-2.02-84.el8.x86_64.rpm" + }, + "sha256:ad9b3b98ace87913e9487fceaae165faffb81e9c32400a72e08cc752cab0d037": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/authselect-1.2.1-2.el8.x86_64.rpm" + }, + "sha256:af495353f000008aab42640530c0c9005aaf60f0d4b4cf1a9b66b07bfc5b5881": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-tools-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hardlink-1.3-6.el8.x86_64.rpm" + }, + "sha256:b05032d419c29bfbe60b3495dab9b368865e2154b1b25d87b1e4f5b379226747": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnftnl-1.1.5-4.el8.x86_64.rpm" + }, + "sha256:b156691caa225f0025533a68eeb9a2cf3883062dd209ede9ec07727b358171cc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/teamd-1.29-5.el8.x86_64.rpm" + }, + "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxml2-2.9.7-8.el8.x86_64.rpm" + }, + "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtasn1-4.13-3.el8.x86_64.rpm" + }, + "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnutls-3.6.14-3.el8.x86_64.rpm" + }, + "sha256:b2dcbd3b81196b16e33054d31c0129c432cf59fb591035845cc299bbb46000c1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuser-0.62-23.el8.x86_64.rpm" + }, + "sha256:b446b1469bd535cf94e555525f40fa751b1343d89d589f3cff30ee2d7c38258e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hdparm-9.54-2.el8.x86_64.rpm" + }, + "sha256:b4e89276818abec218c909ca961db9bb2e09b1fc609ff280e6c05227143fa24d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-newt-0.52.20-11.el8.x86_64.rpm" + }, + "sha256:b55b77fb38d84685cef6638240daa54235fce156176c820a3c3b980bf414c5f4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl5000-firmware-8.83.5.1_1-99.el8.1.noarch.rpm" + }, + "sha256:b59cdea55a890a10f484d8596e244a18455ee82920c7e466991801d24c4718cd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lshw-B.02.19.2-2.el8.x86_64.rpm" + }, + "sha256:b5fc6f35798edccd0390e54fce40290936c3699227e79cc6d1a42d803358fd03": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-8.0p1-5.el8.x86_64.rpm" + }, + "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-pam-239-36.el8.x86_64.rpm" + }, + "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libreport-filesystem-2.9.5-11.el8.x86_64.rpm" + }, + "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-2.2.20-2.el8.x86_64.rpm" + }, + "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/basesystem-11-5.el8.noarch.rpm" + }, + "sha256:b9a17114d551cc8259eea6996b6871ec36675330fdb1eb16db529e6f8a9c34d5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lsscsi-0.30-1.el8.x86_64.rpm" + }, + "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/which-2.21-12.el8.x86_64.rpm" + }, + "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonpatch-1.21-2.el8.noarch.rpm" + }, + "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pigz-2.4-4.el8.x86_64.rpm" + }, + "sha256:bed436b103161f7d8f61b617c84f3a7b5509f1d00c8425900a88c222b1331b31": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:beea3f8c88b9c0a74d75622aa71467f51c457d1acf0ff557f7cd0e2ae3dfafe3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_certmap-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-libs-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd-2.9.4-2.el8.x86_64.rpm" + }, + "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsolv-0.7.11-1.el8.x86_64.rpm" + }, + "sha256:bfe5c8ea12012936cc59981a10728e95d5fdadd3e893457af7a27c464d8cb6ba": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libestr-0.1.10-1.el8.x86_64.rpm" + }, + "sha256:c0025c0b08ed82c640fa470e62743aed17a33f7948ed0cc969892d7c149206b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-nfs-idmap-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libs-0.180-1.el8.x86_64.rpm" + }, + "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-libs-1.1.1g-9.el8.x86_64.rpm" + }, + "sha256:c0bd0bfebb9188318f768c04e34dfe72ff584d8a26394fb083ba05a4d7287274": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/WALinuxAgent-2.2.46-7.el8.noarch.rpm" + }, + "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-libs-1.18-1.el8.x86_64.rpm" + }, + "sha256:c193b87ad1690e81ca35ec1f1f7dff94f179907ed13d5b7936c189ff5f8f2bae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipset-7.1-1.el8.x86_64.rpm" + }, + "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-libs-3.26.0-10.el8.x86_64.rpm" + }, + "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm" + }, + "sha256:c24a1814f0fff7edcbd5cdca29571e8a79c5584e8ef300e89aef906b35c8a67d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bind-export-libs-9.11.20-3.el8.x86_64.rpm" + }, + "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-pkcs11-0.4.10-2.el8.x86_64.rpm" + }, + "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-idna-2.5-5.el8.noarch.rpm" + }, + "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-asn1crypto-0.24.0-3.el8.noarch.rpm" + }, + "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcom_err-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:c4279ad2915f4ce1806c4121675e49d2b525bb6e977d487dc2ad138fce8c2734": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_idmap-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:c46ee71ba426e0964b2264bdf18fc4cff4d7815206c9e8a471bdf678e65c24b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libini_config-1.3.1-39.el8.x86_64.rpm" + }, + "sha256:c5098f41849af65b808baac594539440fcdffea7afce4239eb41885eccfd67e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/firewalld-0.8.2-1.el8.noarch.rpm" + }, + "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-hwdata-2.3.6-3.el8.noarch.rpm" + }, + "sha256:c5e978963bda83e9321563bb18f69f3753f2eb510dfdafdc6c4e2856dc6b6302": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugin-subscription-manager-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm" + }, + "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pam-1.3.1-11.el8.x86_64.rpm" + }, + "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:c9b3c6dcb4133c3051e3f75978f994aae4c0ad84dd1abbae7fcba497ee524603": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-firewall-0.8.2-1.el8.noarch.rpm" + }, + "sha256:cac59a5629e7229653c29c0d575bd8f8c2d3774474615eb65615109afb151981": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libbasicobjects-0.1.1-39.el8.x86_64.rpm" + }, + "sha256:cb8e7909d58206223ad7108a850218360a6b1e2147d97bc94097962dc820d0de": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setools-4.3.0-1.el8.x86_64.rpm" + }, + "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-1.1.1g-9.el8.x86_64.rpm" + }, + "sha256:cc3df9449002eacd595a73df52eb973d3b37e4c03d4669c7dce6ce7a26dabd6b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm" + }, + "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pytz-2017.2-9.el8.noarch.rpm" + }, + "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmetalink-0.1.3-7.el8.x86_64.rpm" + }, + "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/findutils-4.6.0-20.el8.x86_64.rpm" + }, + "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/acl-2.2.53-1.el8.x86_64.rpm" + }, + "sha256:cf6220736fdd005ba7c67ccb5d5d8a1d9c35718e3c13e79c80967866968d7344": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl100-firmware-39.31.5.1-99.el8.1.noarch.rpm" + }, + "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsigsegv-2.11-5.el8.x86_64.rpm" + }, + "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-unbound-1.7.3-14.el8.x86_64.rpm" + }, + "sha256:d186f806ed9c841a385f7acf194c20b78616396414da9131982e469f065619b8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_autofs-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:d2b777ea98ee644997029994136723cf4fa78e97afeaceab39f76b545b51792b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dmidecode-3.12.2-15.el8.x86_64.rpm" + }, + "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-libs-0.19.8.1-17.el8.x86_64.rpm" + }, + "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-libs-5.2.4-3.el8.x86_64.rpm" + }, + "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libs-3.6.8-30.el8.x86_64.rpm" + }, + "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-urllib3-1.24.2-4.el8.noarch.rpm" + }, + "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grep-3.1-6.el8.x86_64.rpm" + }, + "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-extra-2.02-84.el8.x86_64.rpm" + }, + "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gpgme-1.13.1-3.el8.x86_64.rpm" + }, + "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libusbx-1.0.23-3.el8.x86_64.rpm" + }, + "sha256:d80219a299035688091aa230b1c9169143c00c141c4f1ad8e75d176d22cc1cd0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:d81c180c682e6014a0da09aaa144492e8cb03c1d61022513ba6db5bd3740f921": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm" + }, + "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libaio-0.3.112-1.el8.x86_64.rpm" + }, + "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-2.9-3.el8.x86_64.rpm" + }, + "sha256:d94a39545f8570ba2d199e4892cfe05ebd5ea6e4e8322790b4f960bf92da5f09": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/numactl-libs-2.0.12-11.el8.x86_64.rpm" + }, + "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-requests-2.20.0-2.1.el8_1.noarch.rpm" + }, + "sha256:da5606af487682acce52799418a97614d0f6e6b72d15c88c4f6f2a076f384dac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pciutils-libs-3.6.4-2.el8.x86_64.rpm" + }, + "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-libs-239-36.el8.x86_64.rpm" + }, + "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libarchive-3.3.2-9.el8.x86_64.rpm" + }, + "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-tools-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shadow-utils-4.6-10.el8.x86_64.rpm" + }, + "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-2.02-84.el8.x86_64.rpm" + }, + "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-2.28-127.el8.x86_64.rpm" + }, + "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-udev-239-36.el8.x86_64.rpm" + }, + "sha256:de870435340bf30620406df41b79e43adaf7d0a277db1635a0fae710df993fc0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pyyaml-3.12-12.el8.x86_64.rpm" + }, + "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librepo-1.12.0-1.el8.x86_64.rpm" + }, + "sha256:e0cde0185535bd50f7c5e5e2c0c19b5ab086b6bfa8cea95af9d56ffc81cb26b7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-libs-4.3.6-41.el8.x86_64.rpm" + }, + "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/memstrack-0.1.8-1.el8.x86_64.rpm" + }, + "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gawk-4.2.1-1.el8.x86_64.rpm" + }, + "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmartcols-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/info-6.5-6.el8.x86_64.rpm" + }, + "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-utils-2.9-3.el8.x86_64.rpm" + }, + "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/yum-4.2.23-2.el8.noarch.rpm" + }, + "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-1.02.171-3.el8.x86_64.rpm" + }, + "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-linux-procfs-0.6.2-2.el8.noarch.rpm" + }, + "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuuid-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-policycoreutils-2.9-9.el8.noarch.rpm" + }, + "sha256:e67a1c5f02c3e6fdccaad455fddf0dfdf812069da87d841a22df910bf361cfb9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/net-tools-2.0-0.52.20160912git.el8.x86_64.rpm" + }, + "sha256:e868499743c399baa6463fa64a2534a7d32f8e1cca7b1b47ec00c60b34250bfe": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-markupsafe-0.23-19.el8.x86_64.rpm" + }, + "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-2.9-9.el8.x86_64.rpm" + }, + "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-lib-0.3.14-4.el8.x86_64.rpm" + }, + "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libffi-3.1-22.el8.x86_64.rpm" + }, + "sha256:eb5e29df2e7f803a62769aa19c60959ee7d368cd51397e00ebdbedba7d2d4768": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-common-8.30-8.el8.x86_64.rpm" + }, + "sha256:eb9b37827f1851c8a2683cd86026fda90847afe90d51ea746d7cd5f49f6f90d1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/newt-0.52.20-11.el8.x86_64.rpm" + }, + "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libutempter-1.1.6-14.el8.x86_64.rpm" + }, + "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-0.23.14-5.el8_0.x86_64.rpm" + }, + "sha256:ec26615d079ce89316352f813279f74a44871fa8c26fed8f369b9fe847aa5121": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm" + }, + "sha256:ec9adedf0d5d2d096acf4739e2eefab8095498037e13dac9b283e17a9c54259a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sudo-1.8.29-6.el8.x86_64.rpm" + }, + "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre-8.42-4.el8.x86_64.rpm" + }, + "sha256:ecd53a50b4cb20dd1597f45ab4a9cba1fd7793a6000fb2114421687779738672": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcollection-0.7.0-39.el8.x86_64.rpm" + }, + "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/readline-7.0-10.el8.x86_64.rpm" + }, + "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:efa20ae5eca5860656d0131086470cb8d5c3a1ae2819301e7d015f06bbb68a26": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/slang-2.3.2-3.el8.x86_64.rpm" + }, + "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm" + }, + "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm" + }, + "sha256:f2b58d2dfeb45318f8e9e67a96c4f02df69815149ce7b092233a02c0dea19f89": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64.rpm" + }, + "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sed-4.5-2.el8.x86_64.rpm" + }, + "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-0.9.4-2.el8.x86_64.rpm" + }, + "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gzip-1.9-9.el8.x86_64.rpm" + }, + "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-1.2.0-2.el8.x86_64.rpm" + }, + "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64.rpm" + }, + "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/diffutils-3.6-6.el8.x86_64.rpm" + }, + "sha256:f83dc47f0c2ac234e15d5687951285c23576fd2efcc615656c8585f2495456b6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-1.8.4-14.el8.x86_64.rpm" + }, + "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm" + }, + "sha256:f8c30f90610f8cc907009df99348a5e572f5598aed91280c15af604ba62687b2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl2030-firmware-18.168.6.1-99.el8.1.noarch.rpm" + }, + "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.x86_64.rpm" + }, + "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcurl-7.61.1-12.el8.x86_64.rpm" + }, + "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dosfstools-4.1-6.el8.x86_64.rpm" + }, + "sha256:fd7bc748b59a48a1ba803dc893be729c8624a4141e23fcef126a401857bbb455": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-server-8.0p1-5.el8.x86_64.rpm" + }, + "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm" + }, + "sha256:fd9e5c379cd3482d32686fb13881827a39037e7a7afa92c62d58c1f05fcb797f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mozjs60-60.9.0-4.el8.x86_64.rpm" + }, + "sha256:fdcc4180cae8fa83ca54188fc2f6796a1bc8d7eb7106163b98dd93d974b48cd1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hostname-3.20-6.el8.x86_64.rpm" + }, + "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-jwt-1.6.1-2.el8.noarch.rpm" + }, + "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libblkid-2.32.1-24.el8.x86_64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3" + }, + { + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "checksum": "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710" + }, + { + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "checksum": "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379" + }, + { + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "checksum": "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7" + }, + { + "checksum": "sha256:f2b58d2dfeb45318f8e9e67a96c4f02df69815149ce7b092233a02c0dea19f89" + }, + { + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ] + }, + "runner": "org.osbuild.rhel82" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:0027700684ce09927aded1d2c5bb84028529141a6b418897bde37d4af348f8bb" + }, + { + "checksum": "sha256:6d0dcbaa45457461dd5c4afe97689fa2baf5f95551bbe5e827a152dee545a51d" + }, + { + "checksum": "sha256:a01bc8ab29f40d5e9f03929cee7a796804d63fda3c471054a67d1fd1e5577f6c" + }, + { + "checksum": "sha256:4b8cd13404adac1a30a105e894a733f7c79bfac1a125b8cd095e6ba9c1d056f9" + }, + { + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "checksum": "sha256:cc3df9449002eacd595a73df52eb973d3b37e4c03d4669c7dce6ce7a26dabd6b" + }, + { + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "checksum": "sha256:ad9b3b98ace87913e9487fceaae165faffb81e9c32400a72e08cc752cab0d037" + }, + { + "checksum": "sha256:5bdb82a14d3604899324afc296aa7e7179a15788e2514348eea81b46934d6a3c" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "checksum": "sha256:c24a1814f0fff7edcbd5cdca29571e8a79c5584e8ef300e89aef906b35c8a67d" + }, + { + "checksum": "sha256:78926ec2c75db8bcbdd4f4fbd8c06b373f85bd7ecce0e6aac8c75dda95fcae2c" + }, + { + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "checksum": "sha256:2334cb78002aa30feeb11549d51e204aa868f5538a09957850082d7efb15b00f" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:a8808c053ffb7ccf826d80fdd458b6521f2cc63e55eb90d79a504fbb66c36cb0" + }, + { + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "checksum": "sha256:10f40567d02123b71bd878ef423dd0d5dca415e806ff041c3c69b99d114fea84" + }, + { + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "checksum": "sha256:411d65fe9e463458af055d06a4a89a1d822d26049198615c0afc9741c426c77c" + }, + { + "checksum": "sha256:2a65cec3eb67ba7645dd97cf3f3811cd5fb06eea2526d36a683d3fdaa0f2825e" + }, + { + "checksum": "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "checksum": "sha256:802263173d9c487fc3ca584cc2a5b7b7bb49ac0d12d9026b3246d50fd0888fb1" + }, + { + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "checksum": "sha256:289e2a39b2a29163a29da35936d4b484fe356d0a6d519524023e79686daf501b" + }, + { + "checksum": "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2" + }, + { + "checksum": "sha256:e0cde0185535bd50f7c5e5e2c0c19b5ab086b6bfa8cea95af9d56ffc81cb26b7" + }, + { + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "checksum": "sha256:686015c78247edec0a0f5e0d2cbbf02d9feea162e5967ed5b5be35d3951b1f3d" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:c5e978963bda83e9321563bb18f69f3753f2eb510dfdafdc6c4e2856dc6b6302" + }, + { + "checksum": "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c" + }, + { + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "checksum": "sha256:40010441888b72dd077d4d6790f837236701b93c8b31da5dbf65c700fd2571fd" + }, + { + "checksum": "sha256:1faa85c12115426d8afc51c8bed2e71bf1dd87063e25052bcf85c17dbc0d9ea4" + }, + { + "checksum": "sha256:348b7d66a20015563489babbc3850928587575d0acde7c61d55480ebf0f3820d" + }, + { + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "checksum": "sha256:0493fd81825df694be5d15685bfe4dc002de314d18f5ae47ccee769f65ea5013" + }, + { + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "checksum": "sha256:c5098f41849af65b808baac594539440fcdffea7afce4239eb41885eccfd67e2" + }, + { + "checksum": "sha256:769b1ac34ba3aa35337b734b8548dcf9e8b41476b9b2093756341bcbd5969a36" + }, + { + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "checksum": "sha256:7f7f559d65b4b29a1695a644c3d0e04f36565feaa65416f4b84b309716ecf17f" + }, + { + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "checksum": "sha256:879cb96ce1591886728a45bfb6dbd6fcf48a43757c42f5481019157037046b61" + }, + { + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "checksum": "sha256:1065049dbd53849d35db269a23be54148cbe481122381ab71b72f62e83816b26" + }, + { + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "checksum": "sha256:73c29baa2cd94f1ae6a1d1333818969a281b16dd4262f413ad284c5333719a4d" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "checksum": "sha256:b446b1469bd535cf94e555525f40fa751b1343d89d589f3cff30ee2d7c38258e" + }, + { + "checksum": "sha256:fdcc4180cae8fa83ca54188fc2f6796a1bc8d7eb7106163b98dd93d974b48cd1" + }, + { + "checksum": "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f" + }, + { + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "checksum": "sha256:350657e984b1736bb4a8c9cc01b772517a4194467d6db84110c1cc42131f1cae" + }, + { + "checksum": "sha256:206de21c82d76de550bcc1959138472640b0a950a311b753203f5dfe5b201b7b" + }, + { + "checksum": "sha256:4405d32322fd496c65f57a12b6037fd75b49957269dbf9cb0417b598162f7407" + }, + { + "checksum": "sha256:4ce17c90ad64c2ca85191caa990db8eb0aec7cde24a26a89294c5821cfd20e5f" + }, + { + "checksum": "sha256:c193b87ad1690e81ca35ec1f1f7dff94f179907ed13d5b7936c189ff5f8f2bae" + }, + { + "checksum": "sha256:3d807ee0bd43ba2cfbc5fa3678963fb706898bd41588a29330c315a9d88ab2a7" + }, + { + "checksum": "sha256:f83dc47f0c2ac234e15d5687951285c23576fd2efcc615656c8585f2495456b6" + }, + { + "checksum": "sha256:8716781f69e8f2bf3f171ed6a34a012f79dc76ce0bcfa318fa0b02d488173ee1" + }, + { + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "checksum": "sha256:a8961c50502aa02071c043a16f93399ac6794a058a0ef42be889abe60f35985b" + }, + { + "checksum": "sha256:6844197fd8ffdb16cf94ab77709aa2954cb39512435a377401ebce340d06c7de" + }, + { + "checksum": "sha256:cf6220736fdd005ba7c67ccb5d5d8a1d9c35718e3c13e79c80967866968d7344" + }, + { + "checksum": "sha256:1bc038693be7ccd59674c478176c3badce4a56f785dd0690548b087bcc7adaa1" + }, + { + "checksum": "sha256:959fcb0016788a2b1ee55f0801c1490b196416579bc9ac9da9e38786e6c78ff6" + }, + { + "checksum": "sha256:204e4dbaf357e12ff041c1c203b2527f7d178905ebae53db3c12e57d28fcbf46" + }, + { + "checksum": "sha256:72fe0e1837aa503049fada31c6e8ae73a4e550be2ddfd73303fb84e955fcc268" + }, + { + "checksum": "sha256:f8c30f90610f8cc907009df99348a5e572f5598aed91280c15af604ba62687b2" + }, + { + "checksum": "sha256:5cbe058e6d2177f88006fed866e6b1565d6024a12c311ae8eaa21008f76074b1" + }, + { + "checksum": "sha256:b55b77fb38d84685cef6638240daa54235fce156176c820a3c3b980bf414c5f4" + }, + { + "checksum": "sha256:252d46d58e0c02cbe2d2485488bd63ea7129964643787557eae832102541f84f" + }, + { + "checksum": "sha256:56cc340c88cabacd9a329f80edee141154dbf84808894e43a937247394623cf0" + }, + { + "checksum": "sha256:950b6b41580f4c35a108345c1c8d9d3930cc95a2c4fe4b726f02bce67532151d" + }, + { + "checksum": "sha256:8eb3370fe641e329b03838e560f45ee290b273dcccfa182d97ad2dbff59b47fd" + }, + { + "checksum": "sha256:1d28eaeaa59c48e4193c709dd2a6301c2f8701138164c05371a0d8f235d14c9c" + }, + { + "checksum": "sha256:39e59e9a2460e3b6fe147501e79a57042f161c217963be212359031bb8b18daa" + }, + { + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:eb5e29df2e7f803a62769aa19c60959ee7d368cd51397e00ebdbedba7d2d4768" + }, + { + "checksum": "sha256:76ca09c73360f48d4b6fe4d4ee0aa974ef53531222df8e363d8006ec469051cf" + }, + { + "checksum": "sha256:97c8af6f58e3d14317036bd3ed2cbc498803c91c55b9dc0e8f0fddea7ac929e3" + }, + { + "checksum": "sha256:af495353f000008aab42640530c0c9005aaf60f0d4b4cf1a9b66b07bfc5b5881" + }, + { + "checksum": "sha256:4882ff53265bdeabb69f1ac9c585454b28ae799ab31fa72c9eb10bdbe1f41d9a" + }, + { + "checksum": "sha256:948e61e32986303f12f8dbe40bc44674287b3906a54dadae5e3dfd2ccba88fac" + }, + { + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "checksum": "sha256:68362500ad574eb2df43a3d260ab8d0f3ce1ae5f34e66d71f2478fef8e17cb4a" + }, + { + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "checksum": "sha256:cac59a5629e7229653c29c0d575bd8f8c2d3774474615eb65615109afb151981" + }, + { + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "checksum": "sha256:ecd53a50b4cb20dd1597f45ab4a9cba1fd7793a6000fb2114421687779738672" + }, + { + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "checksum": "sha256:798420bbda79fd0b9312abac25efad6b28957c512497f37f4beddad5d67dd66a" + }, + { + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "checksum": "sha256:50c0d1828a9e8db638c09d88afb0828d98349027ce498ee7df74e7ff6052ac1d" + }, + { + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "checksum": "sha256:0391105afa53c9503b59591615bd7c98e2f7a4cd94ff4fd1451c4234522f3880" + }, + { + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "checksum": "sha256:713ec69b972a8e88622b3fcd3b84fccdbd6c333b68b6c52151c2350edad2576a" + }, + { + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "checksum": "sha256:c46ee71ba426e0964b2264bdf18fc4cff4d7815206c9e8a471bdf678e65c24b9" + }, + { + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "checksum": "sha256:231bc0eeb8fb127f0a4da5a4da1edd226067d5029a0b4fd6ef72c246ccfc31c0" + }, + { + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "checksum": "sha256:9c5594fcac97c0f8813d7a188e2368e3b1095025fc4a0ecbd5d17e54c0c93f97" + }, + { + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "checksum": "sha256:53fb6834e2e439e79225d957c4643922da74836417b5558d0c2943b546b26e57" + }, + { + "checksum": "sha256:74d05cb72dc6740be73480e68b15b209d7e7a2bf7d7d54e0d3a2dc261ce64e4b" + }, + { + "checksum": "sha256:61cf7338e12188f787c7162e2cd669c895e4e2cf4ae86c9debcd56fd3b8a8322" + }, + { + "checksum": "sha256:2eed977380b41885d4f7ad33e122abbb9ea7391c1255d182451efd457688c8b2" + }, + { + "checksum": "sha256:b05032d419c29bfbe60b3495dab9b368865e2154b1b25d87b1e4f5b379226747" + }, + { + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "checksum": "sha256:0129696c208f60326723c650295167b0600791ccb2e9c3d446c4caf9adecb3d7" + }, + { + "checksum": "sha256:ac2800369b7f4dc05a8fec452eabedf02f153c11e188a1e80157e35592305690" + }, + { + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "checksum": "sha256:2eba2dc51974271244bdeaaf17c6e8fac3c35b62914b680076bdc4a32272df01" + }, + { + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "checksum": "sha256:539abfc369a17023658486f7b4a48c8db159cc4d617b27da256ddac6e15ea687" + }, + { + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "checksum": "sha256:507442831068c749ba21b22bd96993a1a2a6c74dd53c55f34c7f81a21554c82d" + }, + { + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:d186f806ed9c841a385f7acf194c20b78616396414da9131982e469f065619b8" + }, + { + "checksum": "sha256:beea3f8c88b9c0a74d75622aa71467f51c457d1acf0ff557f7cd0e2ae3dfafe3" + }, + { + "checksum": "sha256:c4279ad2915f4ce1806c4121675e49d2b525bb6e977d487dc2ad138fce8c2734" + }, + { + "checksum": "sha256:7c292b3bb74d12d77e1e22221c55696a0c5f50304040b3a706c2164d5b6a42e4" + }, + { + "checksum": "sha256:44e81330b185085f871e9fbf8fae27c8de411600c032aca371dc6d39a3e261da" + }, + { + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "checksum": "sha256:3a1058c6ba468722090a74002a3239161771b0d8b444975bff891afd45bb672a" + }, + { + "checksum": "sha256:3b087daa7e9de69c051f22f9df1ef00867ffddd99357bc3a215ccde76a13c02f" + }, + { + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "checksum": "sha256:4ed1a6294eea09a3a7e15683267ca5d383e4c2b27fd57fe05d2666e0e6c3d26f" + }, + { + "checksum": "sha256:7c89c2d055013779252c12643e8f0b3731f4dd5e2b61d9d81233a0ee298abb36" + }, + { + "checksum": "sha256:860676d4231afa3e6b23933d8dd65e5f7f5823910791e6481d2440ae4ec64c53" + }, + { + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "checksum": "sha256:b2dcbd3b81196b16e33054d31c0129c432cf59fb591035845cc299bbb46000c1" + }, + { + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "checksum": "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9" + }, + { + "checksum": "sha256:37504d807ac0bb6c429d7be9c636f7b755464023511d856846dbb9deb8f6a76d" + }, + { + "checksum": "sha256:b59cdea55a890a10f484d8596e244a18455ee82920c7e466991801d24c4718cd" + }, + { + "checksum": "sha256:b9a17114d551cc8259eea6996b6871ec36675330fdb1eb16db529e6f8a9c34d5" + }, + { + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "checksum": "sha256:a3dedf8c077b4656d3cd4ef641e696397a3fff83ee8b14f0e3fc69d7c10cebcf" + }, + { + "checksum": "sha256:7b6856dc4dc1d88d9c3c9597fb824b5776af59f045087bdb2713d64045216a36" + }, + { + "checksum": "sha256:0e4b7687f0c62f4e336223b939f6cb169c8dac49eee23c53fd919e58d8f989df" + }, + { + "checksum": "sha256:fd9e5c379cd3482d32686fb13881827a39037e7a7afa92c62d58c1f05fcb797f" + }, + { + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "checksum": "sha256:e67a1c5f02c3e6fdccaad455fddf0dfdf812069da87d841a22df910bf361cfb9" + }, + { + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "checksum": "sha256:eb9b37827f1851c8a2683cd86026fda90847afe90d51ea746d7cd5f49f6f90d1" + }, + { + "checksum": "sha256:5ac24d7513e9daa137064985cd8a8774c94aa8a6c07e2814d0c56ddde33fcc8d" + }, + { + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "checksum": "sha256:d94a39545f8570ba2d199e4892cfe05ebd5ea6e4e8322790b4f960bf92da5f09" + }, + { + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "checksum": "sha256:b5fc6f35798edccd0390e54fce40290936c3699227e79cc6d1a42d803358fd03" + }, + { + "checksum": "sha256:3730f3f8d3332836f278250408891cb097379a5d7745fe698b1d418e9e13d335" + }, + { + "checksum": "sha256:fd7bc748b59a48a1ba803dc893be729c8624a4141e23fcef126a401857bbb455" + }, + { + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "checksum": "sha256:22585bd5d69c5e0a06fe00a6844da2e5d311512374c1d176f17f41caab7e121f" + }, + { + "checksum": "sha256:7c0b2b064dad700cba2754b46f483e3e59aaf798740470df1daad3d5239fb893" + }, + { + "checksum": "sha256:da5606af487682acce52799418a97614d0f6e6b72d15c88c4f6f2a076f384dac" + }, + { + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "checksum": "sha256:8af00d4b0857240310156e05123e07795e6573da7c1fe9e7fd83b51f13971725" + }, + { + "checksum": "sha256:441efa6f0b9a9905ef11ec987d6db89e7dba2857060020c4554e32db3e59fce5" + }, + { + "checksum": "sha256:9a9ca6857f517f1249d2eb496fe904590d6203e4a9547a28e0b23f21c4cae24a" + }, + { + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "checksum": "sha256:8d371e753071edc796d2eadb8278980290511be6279fdf46649c81b859497d6a" + }, + { + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34" + }, + { + "checksum": "sha256:8f00781eb679c6baf359099fa2a672ffccfc8e43b7c03c1dc635619cb25ff01d" + }, + { + "checksum": "sha256:13ffce0597b689dd53f55ea0d03dd6d013246634f5c6cbcef51fa549d9734b29" + }, + { + "checksum": "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786" + }, + { + "checksum": "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367" + }, + { + "checksum": "sha256:7a7a238ea529165348acef1d1a20c1d47c1ef5838d8501f3879bb130c1b73e06" + }, + { + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "checksum": "sha256:5a85222c8e9997a8b609b915a8fbae756de9b9bff732db852fb15fe0524f2d86" + }, + { + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "checksum": "sha256:d2b777ea98ee644997029994136723cf4fa78e97afeaceab39f76b545b51792b" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87" + }, + { + "checksum": "sha256:20dec130e4fd0a2146443791ca7ade6e079cea691d93711813d5f483b691c55a" + }, + { + "checksum": "sha256:c9b3c6dcb4133c3051e3f75978f994aae4c0ad84dd1abbae7fcba497ee524603" + }, + { + "checksum": "sha256:86d305a1466a596f8b436561d674f2510f268bed9e73f56c87da1dd120f99c18" + }, + { + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "checksum": "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20" + }, + { + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "checksum": "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c" + }, + { + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "checksum": "sha256:4ca553b0c0f6dc130e05e2011cdf1f52132e8f70bd93be8eee4e415b2cac0c56" + }, + { + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "checksum": "sha256:9487bff6bb16e7326c8b805751580b4593220ba19b06515c69de83fee8e3bb1f" + }, + { + "checksum": "sha256:09fc3154e76c8ee25b3982c15f3bc455017262c3df5af84075859dcbf79e4f82" + }, + { + "checksum": "sha256:4ccbefcbe75decfef38ccae5d8ff92ba6b00e8232b64ec46ae0c0be8ae20ec50" + }, + { + "checksum": "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f" + }, + { + "checksum": "sha256:08bf2e898b5775317d04266f4598eddbe06c424a3694b1534e3ceff088e2e8ca" + }, + { + "checksum": "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6" + }, + { + "checksum": "sha256:18d419718a99851370262584bec1b27d60cbd08845b50fbe97e1a56b71cd5ea2" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9" + }, + { + "checksum": "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42" + }, + { + "checksum": "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf" + }, + { + "checksum": "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280" + }, + { + "checksum": "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde" + }, + { + "checksum": "sha256:de870435340bf30620406df41b79e43adaf7d0a277db1635a0fae710df993fc0" + }, + { + "checksum": "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a" + }, + { + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "checksum": "sha256:09ca7b05e26f93d35ac299dbcd865b65ec3a3d2654e1da87d2c3c0462dbe6e4a" + }, + { + "checksum": "sha256:cb8e7909d58206223ad7108a850218360a6b1e2147d97bc94097962dc820d0de" + }, + { + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "checksum": "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb" + }, + { + "checksum": "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d" + }, + { + "checksum": "sha256:0f3b084d947bc246fe68822129b8ae1294c4187270a19f0966282baf75b34dc6" + }, + { + "checksum": "sha256:206cba480b58c70348584010d547d21bcd84c6094fd3980e22c6b640da12704c" + }, + { + "checksum": "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53" + }, + { + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "checksum": "sha256:9d9d1bdfba4cd852f90232ebe2c4247e7b3a88c4476578c820788a91d6838e55" + }, + { + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:398c1abc82097370f46e6fdf4dae63870e1f767b24d0130c79ed67ea3a67233a" + }, + { + "checksum": "sha256:671852e4f32de6278dd384d35d1dc799ab5d3e8ef718e89e516452cbcba068f0" + }, + { + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "checksum": "sha256:efa20ae5eca5860656d0131086470cb8d5c3a1ae2819301e7d015f06bbb68a26" + }, + { + "checksum": "sha256:4403330cdf4f15d75d727e2ac8c3358ff6a13209b3395dfac2131984e443eb23" + }, + { + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "checksum": "sha256:72ff3a3f6c52849a40cb24f9694115a68cc939970a00c374b4c73b1e4c5dc20c" + }, + { + "checksum": "sha256:2e90748420a7d28b3063df04de129e79ea85310a8d9cf2faf0a2e7b8430307c8" + }, + { + "checksum": "sha256:14098d36fe4be983fac73d04aeacf0ed7977d962e760907b89e3f80b4ca46f3f" + }, + { + "checksum": "sha256:1b1fe43a375a21f4c3ccf04861c122fd519d4865b9c1abc7f1973b86a0252a06" + }, + { + "checksum": "sha256:c0025c0b08ed82c640fa470e62743aed17a33f7948ed0cc969892d7c149206b3" + }, + { + "checksum": "sha256:65dc391ab1c96d1009ef2e7706eabacd5cf84f2a47ea1cc87f6f5e2c1324b178" + }, + { + "checksum": "sha256:99fa92b5d1e0d335fb2bb961ef39988b50968350b899e8790cead73c9a0bec65" + }, + { + "checksum": "sha256:ec9adedf0d5d2d096acf4739e2eefab8095498037e13dac9b283e17a9c54259a" + }, + { + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "checksum": "sha256:b156691caa225f0025533a68eeb9a2cf3883062dd209ede9ec07727b358171cc" + }, + { + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "checksum": "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:98a589d7e1cdea9d974aa43f688e55333eed11ce7cb2037d45cc2e69bce579b3" + }, + { + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "checksum": "sha256:947b4e4eebec21501ca62e2a7ff9baae0e4e7c59584fbba4b6276a402cfbb45b" + }, + { + "checksum": "sha256:2cfcc3d6163dfaf7ce76998be992bd0b70dd7cbb838430cecf2aff04cd435d24" + }, + { + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "checksum": "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4" + }, + { + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "checksum": "sha256:c0bd0bfebb9188318f768c04e34dfe72ff584d8a26394fb083ba05a4d7287274" + }, + { + "checksum": "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2" + }, + { + "checksum": "sha256:664a883f3c7042eb91e0b66fc99c309a729011b4912e4af9397f4e25e1adae90" + }, + { + "checksum": "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b" + }, + { + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "checksum": "sha256:38affe91361bf56b84490d97c7e3f815965cf8d2bbb222c6c045af4bf2dff736" + }, + { + "checksum": "sha256:bfe5c8ea12012936cc59981a10728e95d5fdadd3e893457af7a27c464d8cb6ba" + }, + { + "checksum": "sha256:474a66a4cf3d5a00286be40c15bad69ea1ac63a9424a1ff44f20a548a7686f7a" + }, + { + "checksum": "sha256:995a5401cd86404d14d08c0aeafeaa8da3f540b1806f9d0e233d75dec9e45c74" + }, + { + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "checksum": "sha256:4d54749c92887ab059c768ada265c0f64e292594846b183d1fdfa9b29fff3ac1" + }, + { + "checksum": "sha256:0f662be3013f7958961ae70400c7ed1fb4350c823881c123a16cbb2b6b8c8f6a" + }, + { + "checksum": "sha256:61498bdebac578394eae8667e16ad7393309f7144266d4331f4c17f276b15fe0" + }, + { + "checksum": "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28" + }, + { + "checksum": "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43" + }, + { + "checksum": "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362" + }, + { + "checksum": "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64" + }, + { + "checksum": "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835" + }, + { + "checksum": "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf" + }, + { + "checksum": "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b" + }, + { + "checksum": "sha256:e868499743c399baa6463fa64a2534a7d32f8e1cca7b1b47ec00c60b34250bfe" + }, + { + "checksum": "sha256:3edf7d29e530e6568416d4455e9fbaa511aba236c603da9928e689fae77b9874" + }, + { + "checksum": "sha256:b4e89276818abec218c909ca961db9bb2e09b1fc609ff280e6c05227143fa24d" + }, + { + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "checksum": "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55" + }, + { + "checksum": "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21" + }, + { + "checksum": "sha256:42b2221eb7118f2a10bbe67ba22e6876cdad05f9db6ae0e057d556041555dc7f" + }, + { + "checksum": "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414" + }, + { + "checksum": "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca" + }, + { + "checksum": "sha256:15462b748aef3c565bcf4f849c1a21c1389a8ef5e7dae94e64718865a67d46a9" + }, + { + "checksum": "sha256:bed436b103161f7d8f61b617c84f3a7b5509f1d00c8425900a88c222b1331b31" + }, + { + "checksum": "sha256:ec26615d079ce89316352f813279f74a44871fa8c26fed8f369b9fe847aa5121" + }, + { + "checksum": "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a" + }, + { + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "checksum": "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7" + }, + { + "checksum": "sha256:d81c180c682e6014a0da09aaa144492e8cb03c1d61022513ba6db5bd3740f921" + }, + { + "checksum": "sha256:d80219a299035688091aa230b1c9169143c00c141c4f1ad8e75d176d22cc1cd0" + }, + { + "checksum": "sha256:4931d78c496eaaa8e6b6bbec2b4750da52b9fc7e989ae89b7c1fa2a6f40ff7fa" + }, + { + "checksum": "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42" + }, + { + "checksum": "sha256:00cc9cd4517cbb4ad99dbce63b40b700699523550cd7f8202948af28dbe2cd9e" + }, + { + "checksum": "sha256:5ef47eb6a042a13c902764907692c1068eb0f69153b47bc85792bef74bfa852b" + }, + { + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "vfs_type": "xfs", + "path": "/", + "options": "defaults" + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "kernel_opts": "ro biosdevname=0 rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0", + "legacy": "i386-pc" + } + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "redhat": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.systemd", + "options": { + "enabled_services": [ + "sshd", + "waagent" + ], + "default_target": "multi-user.target" + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "vpc", + "filename": "disk.vhd", + "size": 4294967296, + "ptuuid": "0x14fc63d2", + "pttype": "mbr", + "partitions": [ + { + "start": 2048, + "bootable": true, + "filesystem": { + "type": "xfs", + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/acl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-4.4.19-12.el8.x86_64.rpm", + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/brotli-1.0.6-2.el8.x86_64.rpm", + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-libs-1.0.6-26.el8.x86_64.rpm", + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chkconfig-1.13-2.el8.x86_64.rpm", + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-common-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cpio-2.12-8.el8.x86_64.rpm", + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-dicts-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-libs-2.3.3-1.el8.x86_64.rpm", + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/curl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.x86_64.rpm", + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-daemon-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-libs-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-tools-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-libs-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/diffutils-3.6-6.el8.x86_64.rpm", + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dosfstools-4.1-6.el8.x86_64.rpm", + "checksum": "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libelf-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libs-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/expat-2.2.5-4.el8.x86_64.rpm", + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-libs-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/filesystem-3.8-3.el8.x86_64.rpm", + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/findutils-4.6.0-20.el8.x86_64.rpm", + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/freetype-2.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-libs-2.9.7-12.el8.x86_64.rpm", + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gawk-4.2.1-1.el8.x86_64.rpm", + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-libs-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-libs-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib2-2.56.4-8.el8.x86_64.rpm", + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-all-langpacks-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-common-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gmp-6.1.2-10.el8.x86_64.rpm", + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-smime-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnutls-3.6.14-3.el8.x86_64.rpm", + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gpgme-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grep-3.1-6.el8.x86_64.rpm", + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-modules-2.02-84.el8.noarch.rpm", + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-extra-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-minimal-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grubby-8.40-41.el8.x86_64.rpm", + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gzip-1.9-9.el8.x86_64.rpm", + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hardlink-1.3-6.el8.x86_64.rpm", + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ima-evm-utils-1.1-5.el8.x86_64.rpm", + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/info-6.5-6.el8.x86_64.rpm", + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-libs-1.8.4-14.el8.x86_64.rpm", + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-c-0.13.1-0.2.el8.x86_64.rpm", + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-glib-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-2.0.4-10.el8.x86_64.rpm", + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-libs-1.5.10-6.el8.x86_64.rpm", + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-25-16.el8.x86_64.rpm", + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-libs-25-16.el8.x86_64.rpm", + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kpartx-0.8.4-2.el8.x86_64.rpm", + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/krb5-libs-1.18.2-3.el8.x86_64.rpm", + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libacl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.112", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libaio-0.3.112-1.el8.x86_64.rpm", + "checksum": "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libarchive-3.3.2-9.el8.x86_64.rpm", + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libassuan-2.5.1-3.el8.x86_64.rpm", + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libattr-2.4.48-3.el8.x86_64.rpm", + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libblkid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-2.26-4.el8.x86_64.rpm", + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-ng-0.7.9-5.el8.x86_64.rpm", + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcom_err-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcroco-0.6.12-4.el8.x86_64.rpm", + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcurl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-utils-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libevent-2.1.8-5.el8.x86_64.rpm", + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libfdisk-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libffi-3.1-22.el8.x86_64.rpm", + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcc-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcrypt-1.8.5-4.el8.x86_64.rpm", + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgomp-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgpg-error-1.31-1.el8.x86_64.rpm", + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libidn2-2.2.0-1.el8.x86_64.rpm", + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libksba-1.3.5-7.el8.x86_64.rpm", + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmetalink-0.1.3-7.el8.x86_64.rpm", + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd-2.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmount-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.x86_64.rpm", + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64.rpm", + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpcap-1.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.34", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpng-1.6.34-5.el8.x86_64.rpm", + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpsl-0.20.2-6.el8.x86_64.rpm", + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpwquality-1.4.0-9.el8.x86_64.rpm", + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librepo-1.12.0-1.el8.x86_64.rpm", + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libreport-filesystem-2.9.5-11.el8.x86_64.rpm", + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librhsm-0.0.3-3.el8.x86_64.rpm", + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libseccomp-2.4.3-1.el8.x86_64.rpm", + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsecret-0.18.6-1.el8.x86_64.rpm", + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-utils-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsemanage-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsepol-2.9-1.el8.x86_64.rpm", + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsigsegv-2.11-5.el8.x86_64.rpm", + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmartcols-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsolv-0.7.11-1.el8.x86_64.rpm", + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libss-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-0.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstdc++-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtasn1-4.13-3.el8.x86_64.rpm", + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtirpc-1.1.4-4.el8.x86_64.rpm", + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libunistring-0.9.9-3.el8.x86_64.rpm", + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libusbx-1.0.23-3.el8.x86_64.rpm", + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libutempter-1.1.6-14.el8.x86_64.rpm", + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuuid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-0.3.0-5.el8.x86_64.rpm", + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxcrypt-4.1.1-4.el8.x86_64.rpm", + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxml2-2.9.7-8.el8.x86_64.rpm", + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libyaml-0.1.7-5.el8.x86_64.rpm", + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libzstd-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lua-libs-5.3.4-11.el8.x86_64.rpm", + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lz4-libs-1.8.3-2.el8.x86_64.rpm", + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mpfr-3.1.6-1.el8.x86_64.rpm", + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nettle-3.4.1-2.el8.x86_64.rpm", + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/npth-1.5-4.el8.x86_64.rpm", + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openldap-2.4.46-15.el8.x86_64.rpm", + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-libs-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-pkcs11-0.4.10-2.el8.x86_64.rpm", + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/os-prober-1.74-6.el8.x86_64.rpm", + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pam-1.3.1-11.el8.x86_64.rpm", + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre-8.42-4.el8.x86_64.rpm", + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre2-10.32-2.el8.x86_64.rpm", + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pigz-2.4-4.el8.x86_64.rpm", + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-2.9-9.el8.x86_64.rpm", + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/popt-1.16-14.el8.x86_64.rpm", + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/procps-ng-3.3.15-2.el8.x86_64.rpm", + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gpg-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-hawkey-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libs-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/readline-7.0-10.el8.x86_64.rpm", + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-eula-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-build-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sed-4.5-2.el8.x86_64.rpm", + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shadow-utils-4.6-10.el8.x86_64.rpm", + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shared-mime-info-1.9-3.el8.x86_64.rpm", + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-libs-3.26.0-10.el8.x86_64.rpm", + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-239-36.el8.x86_64.rpm", + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-libs-239-36.el8.x86_64.rpm", + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-pam-239-36.el8.x86_64.rpm", + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-udev-239-36.el8.x86_64.rpm", + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tar-1.30-5.el8.x86_64.rpm", + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-lib-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/util-linux-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/which-2.21-12.el8.x86_64.rpm", + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xfsprogs-5.0.0-4.el8.x86_64.rpm", + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-libs-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/zlib-1.2.11-15.el8.x86_64.rpm", + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxkbcommon-0.9.1-1.el8.x86_64.rpm", + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/memstrack-0.1.8-1.el8.x86_64.rpm", + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pinentry-1.1.0-2.el8.x86_64.rpm", + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-unbound-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "name": "python36", + "epoch": 0, + "version": "3.6.8", + "release": "2.module+el8.1.0+3334+5cb623d7", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64.rpm", + "checksum": "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7" + }, + { + "name": "qemu-img", + "epoch": 15, + "version": "4.2.0", + "release": "29.module+el8.3.0+7212+401047e6", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64.rpm", + "checksum": "sha256:f2b58d2dfeb45318f8e9e67a96c4f02df69815149ce7b092233a02c0dea19f89" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/unbound-libs-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:0027700684ce09927aded1d2c5bb84028529141a6b418897bde37d4af348f8bb" + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-libnm-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:6d0dcbaa45457461dd5c4afe97689fa2baf5f95551bbe5e827a152dee545a51d" + }, + { + "name": "NetworkManager-team", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-team-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:a01bc8ab29f40d5e9f03929cee7a796804d63fda3c471054a67d1fd1e5577f6c" + }, + { + "name": "NetworkManager-tui", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-tui-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:4b8cd13404adac1a30a105e894a733f7c79bfac1a125b8cd095e6ba9c1d056f9" + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/acl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:cc3df9449002eacd595a73df52eb973d3b37e4c03d4669c7dce6ce7a26dabd6b" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "name": "authselect", + "epoch": 0, + "version": "1.2.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/authselect-1.2.1-2.el8.x86_64.rpm", + "checksum": "sha256:ad9b3b98ace87913e9487fceaae165faffb81e9c32400a72e08cc752cab0d037" + }, + { + "name": "authselect-libs", + "epoch": 0, + "version": "1.2.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/authselect-libs-1.2.1-2.el8.x86_64.rpm", + "checksum": "sha256:5bdb82a14d3604899324afc296aa7e7179a15788e2514348eea81b46934d6a3c" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-4.4.19-12.el8.x86_64.rpm", + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "name": "bind-export-libs", + "epoch": 32, + "version": "9.11.20", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bind-export-libs-9.11.20-3.el8.x86_64.rpm", + "checksum": "sha256:c24a1814f0fff7edcbd5cdca29571e8a79c5584e8ef300e89aef906b35c8a67d" + }, + { + "name": "biosdevname", + "epoch": 0, + "version": "0.7.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/biosdevname-0.7.3-2.el8.x86_64.rpm", + "checksum": "sha256:78926ec2c75db8bcbdd4f4fbd8c06b373f85bd7ecce0e6aac8c75dda95fcae2c" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/brotli-1.0.6-2.el8.x86_64.rpm", + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-libs-1.0.6-26.el8.x86_64.rpm", + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.13.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/c-ares-1.13.0-5.el8.x86_64.rpm", + "checksum": "sha256:2334cb78002aa30feeb11549d51e204aa868f5538a09957850082d7efb15b00f" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "checkpolicy", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/checkpolicy-2.9-1.el8.x86_64.rpm", + "checksum": "sha256:a8808c053ffb7ccf826d80fdd458b6521f2cc63e55eb90d79a504fbb66c36cb0" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chkconfig-1.13-2.el8.x86_64.rpm", + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chrony-3.5-1.el8.x86_64.rpm", + "checksum": "sha256:10f40567d02123b71bd878ef423dd0d5dca415e806ff041c3c69b99d114fea84" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-common-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cpio-2.12-8.el8.x86_64.rpm", + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-dicts-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "name": "cronie", + "epoch": 0, + "version": "1.5.2", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cronie-1.5.2-4.el8.x86_64.rpm", + "checksum": "sha256:411d65fe9e463458af055d06a4a89a1d822d26049198615c0afc9741c426c77c" + }, + { + "name": "cronie-anacron", + "epoch": 0, + "version": "1.5.2", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cronie-anacron-1.5.2-4.el8.x86_64.rpm", + "checksum": "sha256:2a65cec3eb67ba7645dd97cf3f3811cd5fb06eea2526d36a683d3fdaa0f2825e" + }, + { + "name": "crontabs", + "epoch": 0, + "version": "1.11", + "release": "16.20150630git.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crontabs-1.11-16.20150630git.el8.noarch.rpm", + "checksum": "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-libs-2.3.3-1.el8.x86_64.rpm", + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/curl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.x86_64.rpm", + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-daemon-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "name": "dbus-glib", + "epoch": 0, + "version": "0.110", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-glib-0.110-2.el8.x86_64.rpm", + "checksum": "sha256:802263173d9c487fc3ca584cc2a5b7b7bb49ac0d12d9026b3246d50fd0888fb1" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-libs-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-tools-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-libs-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-client-4.3.6-41.el8.x86_64.rpm", + "checksum": "sha256:289e2a39b2a29163a29da35936d4b484fe356d0a6d519524023e79686daf501b" + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-common-4.3.6-41.el8.noarch.rpm", + "checksum": "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2" + }, + { + "name": "dhcp-libs", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-libs-4.3.6-41.el8.x86_64.rpm", + "checksum": "sha256:e0cde0185535bd50f7c5e5e2c0c19b5ab086b6bfa8cea95af9d56ffc81cb26b7" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/diffutils-3.6-6.el8.x86_64.rpm", + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "name": "dmidecode", + "epoch": 1, + "version": "3.2", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dmidecode-3.2-6.el8.x86_64.rpm", + "checksum": "sha256:686015c78247edec0a0f5e0d2cbbf02d9feea162e5967ed5b5be35d3951b1f3d" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dnf-plugin-subscription-manager", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugin-subscription-manager-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:c5e978963bda83e9321563bb18f69f3753f2eb510dfdafdc6c4e2856dc6b6302" + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugins-core-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-config-generic-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:40010441888b72dd077d4d6790f837236701b93c8b31da5dbf65c700fd2571fd" + }, + { + "name": "dracut-network", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-network-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:1faa85c12115426d8afc51c8bed2e71bf1dd87063e25052bcf85c17dbc0d9ea4" + }, + { + "name": "dracut-squash", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-squash-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:348b7d66a20015563489babbc3850928587575d0acde7c61d55480ebf0f3820d" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libelf-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libs-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "name": "ethtool", + "epoch": 2, + "version": "5.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ethtool-5.0-2.el8.x86_64.rpm", + "checksum": "sha256:0493fd81825df694be5d15685bfe4dc002de314d18f5ae47ccee769f65ea5013" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/expat-2.2.5-4.el8.x86_64.rpm", + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-libs-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/filesystem-3.8-3.el8.x86_64.rpm", + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/findutils-4.6.0-20.el8.x86_64.rpm", + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "name": "firewalld", + "epoch": 0, + "version": "0.8.2", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/firewalld-0.8.2-1.el8.noarch.rpm", + "checksum": "sha256:c5098f41849af65b808baac594539440fcdffea7afce4239eb41885eccfd67e2" + }, + { + "name": "firewalld-filesystem", + "epoch": 0, + "version": "0.8.2", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/firewalld-filesystem-0.8.2-1.el8.noarch.rpm", + "checksum": "sha256:769b1ac34ba3aa35337b734b8548dcf9e8b41476b9b2093756341bcbd5969a36" + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/freetype-2.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-libs-2.9.7-12.el8.x86_64.rpm", + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gawk-4.2.1-1.el8.x86_64.rpm", + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-libs-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "name": "gdisk", + "epoch": 0, + "version": "1.0.3", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdisk-1.0.3-6.el8.x86_64.rpm", + "checksum": "sha256:7f7f559d65b4b29a1695a644c3d0e04f36565feaa65416f4b84b309716ecf17f" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-libs-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib2-2.56.4-8.el8.x86_64.rpm", + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-common-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "name": "glibc-langpack-en", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-langpack-en-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:879cb96ce1591886728a45bfb6dbd6fcf48a43757c42f5481019157037046b61" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gmp-6.1.2-10.el8.x86_64.rpm", + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-smime-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnutls-3.6.14-3.el8.x86_64.rpm", + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.56.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gobject-introspection-1.56.1-1.el8.x86_64.rpm", + "checksum": "sha256:1065049dbd53849d35db269a23be54148cbe481122381ab71b72f62e83816b26" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gpgme-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grep-3.1-6.el8.x86_64.rpm", + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "18.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/groff-base-1.22.3-18.el8.x86_64.rpm", + "checksum": "sha256:73c29baa2cd94f1ae6a1d1333818969a281b16dd4262f413ad284c5333719a4d" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-modules-2.02-84.el8.noarch.rpm", + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-extra-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-minimal-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grubby-8.40-41.el8.x86_64.rpm", + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gzip-1.9-9.el8.x86_64.rpm", + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hardlink-1.3-6.el8.x86_64.rpm", + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "name": "hdparm", + "epoch": 0, + "version": "9.54", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hdparm-9.54-2.el8.x86_64.rpm", + "checksum": "sha256:b446b1469bd535cf94e555525f40fa751b1343d89d589f3cff30ee2d7c38258e" + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.20", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hostname-3.20-6.el8.x86_64.rpm", + "checksum": "sha256:fdcc4180cae8fa83ca54188fc2f6796a1bc8d7eb7106163b98dd93d974b48cd1" + }, + { + "name": "hwdata", + "epoch": 0, + "version": "0.314", + "release": "8.5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hwdata-0.314-8.5.el8.noarch.rpm", + "checksum": "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ima-evm-utils-1.1-5.el8.x86_64.rpm", + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/info-6.5-6.el8.x86_64.rpm", + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.00.8", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/initscripts-10.00.8-1.el8.x86_64.rpm", + "checksum": "sha256:350657e984b1736bb4a8c9cc01b772517a4194467d6db84110c1cc42131f1cae" + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.2.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipcalc-0.2.4-4.el8.x86_64.rpm", + "checksum": "sha256:206de21c82d76de550bcc1959138472640b0a950a311b753203f5dfe5b201b7b" + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.3.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iproute-5.3.0-5.el8.x86_64.rpm", + "checksum": "sha256:4405d32322fd496c65f57a12b6037fd75b49957269dbf9cb0417b598162f7407" + }, + { + "name": "iprutils", + "epoch": 0, + "version": "2.4.19", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iprutils-2.4.19-1.el8.x86_64.rpm", + "checksum": "sha256:4ce17c90ad64c2ca85191caa990db8eb0aec7cde24a26a89294c5821cfd20e5f" + }, + { + "name": "ipset", + "epoch": 0, + "version": "7.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipset-7.1-1.el8.x86_64.rpm", + "checksum": "sha256:c193b87ad1690e81ca35ec1f1f7dff94f179907ed13d5b7936c189ff5f8f2bae" + }, + { + "name": "ipset-libs", + "epoch": 0, + "version": "7.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipset-libs-7.1-1.el8.x86_64.rpm", + "checksum": "sha256:3d807ee0bd43ba2cfbc5fa3678963fb706898bd41588a29330c315a9d88ab2a7" + }, + { + "name": "iptables", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-1.8.4-14.el8.x86_64.rpm", + "checksum": "sha256:f83dc47f0c2ac234e15d5687951285c23576fd2efcc615656c8585f2495456b6" + }, + { + "name": "iptables-ebtables", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-ebtables-1.8.4-14.el8.x86_64.rpm", + "checksum": "sha256:8716781f69e8f2bf3f171ed6a34a012f79dc76ce0bcfa318fa0b02d488173ee1" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-libs-1.8.4-14.el8.x86_64.rpm", + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "name": "iputils", + "epoch": 0, + "version": "20180629", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iputils-20180629-2.el8.x86_64.rpm", + "checksum": "sha256:a8961c50502aa02071c043a16f93399ac6794a058a0ef42be889abe60f35985b" + }, + { + "name": "irqbalance", + "epoch": 2, + "version": "1.4.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/irqbalance-1.4.0-4.el8.x86_64.rpm", + "checksum": "sha256:6844197fd8ffdb16cf94ab77709aa2954cb39512435a377401ebce340d06c7de" + }, + { + "name": "iwl100-firmware", + "epoch": 0, + "version": "39.31.5.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl100-firmware-39.31.5.1-99.el8.1.noarch.rpm", + "checksum": "sha256:cf6220736fdd005ba7c67ccb5d5d8a1d9c35718e3c13e79c80967866968d7344" + }, + { + "name": "iwl1000-firmware", + "epoch": 1, + "version": "39.31.5.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl1000-firmware-39.31.5.1-99.el8.1.noarch.rpm", + "checksum": "sha256:1bc038693be7ccd59674c478176c3badce4a56f785dd0690548b087bcc7adaa1" + }, + { + "name": "iwl105-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl105-firmware-18.168.6.1-99.el8.1.noarch.rpm", + "checksum": "sha256:959fcb0016788a2b1ee55f0801c1490b196416579bc9ac9da9e38786e6c78ff6" + }, + { + "name": "iwl135-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl135-firmware-18.168.6.1-99.el8.1.noarch.rpm", + "checksum": "sha256:204e4dbaf357e12ff041c1c203b2527f7d178905ebae53db3c12e57d28fcbf46" + }, + { + "name": "iwl2000-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl2000-firmware-18.168.6.1-99.el8.1.noarch.rpm", + "checksum": "sha256:72fe0e1837aa503049fada31c6e8ae73a4e550be2ddfd73303fb84e955fcc268" + }, + { + "name": "iwl2030-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl2030-firmware-18.168.6.1-99.el8.1.noarch.rpm", + "checksum": "sha256:f8c30f90610f8cc907009df99348a5e572f5598aed91280c15af604ba62687b2" + }, + { + "name": "iwl3160-firmware", + "epoch": 1, + "version": "25.30.13.0", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl3160-firmware-25.30.13.0-99.el8.1.noarch.rpm", + "checksum": "sha256:5cbe058e6d2177f88006fed866e6b1565d6024a12c311ae8eaa21008f76074b1" + }, + { + "name": "iwl5000-firmware", + "epoch": 0, + "version": "8.83.5.1_1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl5000-firmware-8.83.5.1_1-99.el8.1.noarch.rpm", + "checksum": "sha256:b55b77fb38d84685cef6638240daa54235fce156176c820a3c3b980bf414c5f4" + }, + { + "name": "iwl5150-firmware", + "epoch": 0, + "version": "8.24.2.2", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl5150-firmware-8.24.2.2-99.el8.1.noarch.rpm", + "checksum": "sha256:252d46d58e0c02cbe2d2485488bd63ea7129964643787557eae832102541f84f" + }, + { + "name": "iwl6000-firmware", + "epoch": 0, + "version": "9.221.4.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl6000-firmware-9.221.4.1-99.el8.1.noarch.rpm", + "checksum": "sha256:56cc340c88cabacd9a329f80edee141154dbf84808894e43a937247394623cf0" + }, + { + "name": "iwl6000g2a-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl6000g2a-firmware-18.168.6.1-99.el8.1.noarch.rpm", + "checksum": "sha256:950b6b41580f4c35a108345c1c8d9d3930cc95a2c4fe4b726f02bce67532151d" + }, + { + "name": "iwl6050-firmware", + "epoch": 0, + "version": "41.28.5.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl6050-firmware-41.28.5.1-99.el8.1.noarch.rpm", + "checksum": "sha256:8eb3370fe641e329b03838e560f45ee290b273dcccfa182d97ad2dbff59b47fd" + }, + { + "name": "iwl7260-firmware", + "epoch": 1, + "version": "25.30.13.0", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl7260-firmware-25.30.13.0-99.el8.1.noarch.rpm", + "checksum": "sha256:1d28eaeaa59c48e4193c709dd2a6301c2f8701138164c05371a0d8f235d14c9c" + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.11", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/jansson-2.11-3.el8.x86_64.rpm", + "checksum": "sha256:39e59e9a2460e3b6fe147501e79a57042f161c217963be212359031bb8b18daa" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-c-0.13.1-0.2.el8.x86_64.rpm", + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-glib-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-2.0.4-10.el8.x86_64.rpm", + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "kernel", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:eb5e29df2e7f803a62769aa19c60959ee7d368cd51397e00ebdbedba7d2d4768" + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-core-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:76ca09c73360f48d4b6fe4d4ee0aa974ef53531222df8e363d8006ec469051cf" + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-modules-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:97c8af6f58e3d14317036bd3ed2cbc498803c91c55b9dc0e8f0fddea7ac929e3" + }, + { + "name": "kernel-tools", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-tools-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:af495353f000008aab42640530c0c9005aaf60f0d4b4cf1a9b66b07bfc5b5881" + }, + { + "name": "kernel-tools-libs", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-tools-libs-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:4882ff53265bdeabb69f1ac9c585454b28ae799ab31fa72c9eb10bdbe1f41d9a" + }, + { + "name": "kexec-tools", + "epoch": 0, + "version": "2.0.20", + "release": "29.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kexec-tools-2.0.20-29.el8.x86_64.rpm", + "checksum": "sha256:948e61e32986303f12f8dbe40bc44674287b3906a54dadae5e3dfd2ccba88fac" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-libs-1.5.10-6.el8.x86_64.rpm", + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-25-16.el8.x86_64.rpm", + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-libs-25-16.el8.x86_64.rpm", + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kpartx-0.8.4-2.el8.x86_64.rpm", + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/krb5-libs-1.18.2-3.el8.x86_64.rpm", + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "name": "less", + "epoch": 0, + "version": "530", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/less-530-1.el8.x86_64.rpm", + "checksum": "sha256:68362500ad574eb2df43a3d260ab8d0f3ce1ae5f34e66d71f2478fef8e17cb4a" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libacl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libarchive-3.3.2-9.el8.x86_64.rpm", + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libassuan-2.5.1-3.el8.x86_64.rpm", + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libattr-2.4.48-3.el8.x86_64.rpm", + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libbasicobjects-0.1.1-39.el8.x86_64.rpm", + "checksum": "sha256:cac59a5629e7229653c29c0d575bd8f8c2d3774474615eb65615109afb151981" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libblkid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-2.26-4.el8.x86_64.rpm", + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-ng-0.7.9-5.el8.x86_64.rpm", + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcollection-0.7.0-39.el8.x86_64.rpm", + "checksum": "sha256:ecd53a50b4cb20dd1597f45ab4a9cba1fd7793a6000fb2114421687779738672" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcom_err-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcroco-0.6.12-4.el8.x86_64.rpm", + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcurl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "name": "libdaemon", + "epoch": 0, + "version": "0.14", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdaemon-0.14-15.el8.x86_64.rpm", + "checksum": "sha256:798420bbda79fd0b9312abac25efad6b28957c512497f37f4beddad5d67dd66a" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-utils-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdhash-0.5.0-39.el8.x86_64.rpm", + "checksum": "sha256:50c0d1828a9e8db638c09d88afb0828d98349027ce498ee7df74e7ff6052ac1d" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "23.20170329cvs.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libedit-3.1-23.20170329cvs.el8.x86_64.rpm", + "checksum": "sha256:0391105afa53c9503b59591615bd7c98e2f7a4cd94ff4fd1451c4234522f3880" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libevent-2.1.8-5.el8.x86_64.rpm", + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libfdisk-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libffi-3.1-22.el8.x86_64.rpm", + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcc-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcrypt-1.8.5-4.el8.x86_64.rpm", + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgomp-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgpg-error-1.31-1.el8.x86_64.rpm", + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "name": "libgudev", + "epoch": 0, + "version": "232", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgudev-232-4.el8.x86_64.rpm", + "checksum": "sha256:713ec69b972a8e88622b3fcd3b84fccdbd6c333b68b6c52151c2350edad2576a" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libidn2-2.2.0-1.el8.x86_64.rpm", + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libini_config-1.3.1-39.el8.x86_64.rpm", + "checksum": "sha256:c46ee71ba426e0964b2264bdf18fc4cff4d7815206c9e8a471bdf678e65c24b9" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libksba-1.3.5-7.el8.x86_64.rpm", + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.1.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libldb-2.1.3-2.el8.x86_64.rpm", + "checksum": "sha256:231bc0eeb8fb127f0a4da5a4da1edd226067d5029a0b4fd6ef72c246ccfc31c0" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmetalink-0.1.3-7.el8.x86_64.rpm", + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmnl-1.0.4-6.el8.x86_64.rpm", + "checksum": "sha256:9c5594fcac97c0f8813d7a188e2368e3b1095025fc4a0ecbd5d17e54c0c93f97" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd-2.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmount-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libndp-1.7-3.el8.x86_64.rpm", + "checksum": "sha256:53fb6834e2e439e79225d957c4643922da74836417b5558d0c2943b546b26e57" + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.6", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnetfilter_conntrack-1.0.6-5.el8.x86_64.rpm", + "checksum": "sha256:74d05cb72dc6740be73480e68b15b209d7e7a2bf7d7d54e0d3a2dc261ce64e4b" + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "13.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnfnetlink-1.0.1-13.el8.x86_64.rpm", + "checksum": "sha256:61cf7338e12188f787c7162e2cd669c895e4e2cf4ae86c9debcd56fd3b8a8322" + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.3.3", + "release": "35.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnfsidmap-2.3.3-35.el8.x86_64.rpm", + "checksum": "sha256:2eed977380b41885d4f7ad33e122abbb9ea7391c1255d182451efd457688c8b2" + }, + { + "name": "libnftnl", + "epoch": 0, + "version": "1.1.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnftnl-1.1.5-4.el8.x86_64.rpm", + "checksum": "sha256:b05032d419c29bfbe60b3495dab9b368865e2154b1b25d87b1e4f5b379226747" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.x86_64.rpm", + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-3.5.0-1.el8.x86_64.rpm", + "checksum": "sha256:0129696c208f60326723c650295167b0600791ccb2e9c3d446c4caf9adecb3d7" + }, + { + "name": "libnl3-cli", + "epoch": 0, + "version": "3.5.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-cli-3.5.0-1.el8.x86_64.rpm", + "checksum": "sha256:ac2800369b7f4dc05a8fec452eabedf02f153c11e188a1e80157e35592305690" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64.rpm", + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpath_utils-0.2.1-39.el8.x86_64.rpm", + "checksum": "sha256:2eba2dc51974271244bdeaaf17c6e8fac3c35b62914b680076bdc4a32272df01" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpcap-1.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpipeline-1.5.0-2.el8.x86_64.rpm", + "checksum": "sha256:539abfc369a17023658486f7b4a48c8db159cc4d617b27da256ddac6e15ea687" + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.34", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpng-1.6.34-5.el8.x86_64.rpm", + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpsl-0.20.2-6.el8.x86_64.rpm", + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpwquality-1.4.0-9.el8.x86_64.rpm", + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libref_array-0.1.5-39.el8.x86_64.rpm", + "checksum": "sha256:507442831068c749ba21b22bd96993a1a2a6c74dd53c55f34c7f81a21554c82d" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librepo-1.12.0-1.el8.x86_64.rpm", + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libreport-filesystem-2.9.5-11.el8.x86_64.rpm", + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librhsm-0.0.3-3.el8.x86_64.rpm", + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libseccomp-2.4.3-1.el8.x86_64.rpm", + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsecret-0.18.6-1.el8.x86_64.rpm", + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-utils-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsemanage-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsepol-2.9-1.el8.x86_64.rpm", + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsigsegv-2.11-5.el8.x86_64.rpm", + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmartcols-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsolv-0.7.11-1.el8.x86_64.rpm", + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libss-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-0.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_autofs-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:d186f806ed9c841a385f7acf194c20b78616396414da9131982e469f065619b8" + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_certmap-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:beea3f8c88b9c0a74d75622aa71467f51c457d1acf0ff557f7cd0e2ae3dfafe3" + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_idmap-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:c4279ad2915f4ce1806c4121675e49d2b525bb6e977d487dc2ad138fce8c2734" + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_nss_idmap-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:7c292b3bb74d12d77e1e22221c55696a0c5f50304040b3a706c2164d5b6a42e4" + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_sudo-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:44e81330b185085f871e9fbf8fae27c8de411600c032aca371dc6d39a3e261da" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstdc++-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "name": "libsysfs", + "epoch": 0, + "version": "2.1.0", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsysfs-2.1.0-24.el8.x86_64.rpm", + "checksum": "sha256:3a1058c6ba468722090a74002a3239161771b0d8b444975bff891afd45bb672a" + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtalloc-2.3.1-2.el8.x86_64.rpm", + "checksum": "sha256:3b087daa7e9de69c051f22f9df1ef00867ffddd99357bc3a215ccde76a13c02f" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtasn1-4.13-3.el8.x86_64.rpm", + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtdb-1.4.3-1.el8.x86_64.rpm", + "checksum": "sha256:4ed1a6294eea09a3a7e15683267ca5d383e4c2b27fd57fe05d2666e0e6c3d26f" + }, + { + "name": "libteam", + "epoch": 0, + "version": "1.29", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libteam-1.29-5.el8.x86_64.rpm", + "checksum": "sha256:7c89c2d055013779252c12643e8f0b3731f4dd5e2b61d9d81233a0ee298abb36" + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.2", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtevent-0.10.2-2.el8.x86_64.rpm", + "checksum": "sha256:860676d4231afa3e6b23933d8dd65e5f7f5823910791e6481d2440ae4ec64c53" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtirpc-1.1.4-4.el8.x86_64.rpm", + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libunistring-0.9.9-3.el8.x86_64.rpm", + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libusbx-1.0.23-3.el8.x86_64.rpm", + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "23.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuser-0.62-23.el8.x86_64.rpm", + "checksum": "sha256:b2dcbd3b81196b16e33054d31c0129c432cf59fb591035845cc299bbb46000c1" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libutempter-1.1.6-14.el8.x86_64.rpm", + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuuid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-0.3.0-5.el8.x86_64.rpm", + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxcrypt-4.1.1-4.el8.x86_64.rpm", + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxml2-2.9.7-8.el8.x86_64.rpm", + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libyaml-0.1.7-5.el8.x86_64.rpm", + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libzstd-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20200619", + "release": "99.git3890db36.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/linux-firmware-20200619-99.git3890db36.el8.noarch.rpm", + "checksum": "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9" + }, + { + "name": "logrotate", + "epoch": 0, + "version": "3.14.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/logrotate-3.14.0-4.el8.x86_64.rpm", + "checksum": "sha256:37504d807ac0bb6c429d7be9c636f7b755464023511d856846dbb9deb8f6a76d" + }, + { + "name": "lshw", + "epoch": 0, + "version": "B.02.19.2", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lshw-B.02.19.2-2.el8.x86_64.rpm", + "checksum": "sha256:b59cdea55a890a10f484d8596e244a18455ee82920c7e466991801d24c4718cd" + }, + { + "name": "lsscsi", + "epoch": 0, + "version": "0.30", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lsscsi-0.30-1.el8.x86_64.rpm", + "checksum": "sha256:b9a17114d551cc8259eea6996b6871ec36675330fdb1eb16db529e6f8a9c34d5" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lua-libs-5.3.4-11.el8.x86_64.rpm", + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lz4-libs-1.8.3-2.el8.x86_64.rpm", + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "name": "lzo", + "epoch": 0, + "version": "2.08", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lzo-2.08-14.el8.x86_64.rpm", + "checksum": "sha256:a3dedf8c077b4656d3cd4ef641e696397a3fff83ee8b14f0e3fc69d7c10cebcf" + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.7.6.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/man-db-2.7.6.1-17.el8.x86_64.rpm", + "checksum": "sha256:7b6856dc4dc1d88d9c3c9597fb824b5776af59f045087bdb2713d64045216a36" + }, + { + "name": "microcode_ctl", + "epoch": 4, + "version": "20200609", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/microcode_ctl-20200609-2.el8.x86_64.rpm", + "checksum": "sha256:0e4b7687f0c62f4e336223b939f6cb169c8dac49eee23c53fd919e58d8f989df" + }, + { + "name": "mozjs60", + "epoch": 0, + "version": "60.9.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mozjs60-60.9.0-4.el8.x86_64.rpm", + "checksum": "sha256:fd9e5c379cd3482d32686fb13881827a39037e7a7afa92c62d58c1f05fcb797f" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mpfr-3.1.6-1.el8.x86_64.rpm", + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "name": "net-tools", + "epoch": 0, + "version": "2.0", + "release": "0.52.20160912git.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/net-tools-2.0-0.52.20160912git.el8.x86_64.rpm", + "checksum": "sha256:e67a1c5f02c3e6fdccaad455fddf0dfdf812069da87d841a22df910bf361cfb9" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nettle-3.4.1-2.el8.x86_64.rpm", + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "name": "newt", + "epoch": 0, + "version": "0.52.20", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/newt-0.52.20-11.el8.x86_64.rpm", + "checksum": "sha256:eb9b37827f1851c8a2683cd86026fda90847afe90d51ea746d7cd5f49f6f90d1" + }, + { + "name": "nftables", + "epoch": 1, + "version": "0.9.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nftables-0.9.3-14.el8.x86_64.rpm", + "checksum": "sha256:5ac24d7513e9daa137064985cd8a8774c94aa8a6c07e2814d0c56ddde33fcc8d" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/npth-1.5-4.el8.x86_64.rpm", + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "name": "numactl-libs", + "epoch": 0, + "version": "2.0.12", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/numactl-libs-2.0.12-11.el8.x86_64.rpm", + "checksum": "sha256:d94a39545f8570ba2d199e4892cfe05ebd5ea6e4e8322790b4f960bf92da5f09" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openldap-2.4.46-15.el8.x86_64.rpm", + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-8.0p1-5.el8.x86_64.rpm", + "checksum": "sha256:b5fc6f35798edccd0390e54fce40290936c3699227e79cc6d1a42d803358fd03" + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-clients-8.0p1-5.el8.x86_64.rpm", + "checksum": "sha256:3730f3f8d3332836f278250408891cb097379a5d7745fe698b1d418e9e13d335" + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-server-8.0p1-5.el8.x86_64.rpm", + "checksum": "sha256:fd7bc748b59a48a1ba803dc893be729c8624a4141e23fcef126a401857bbb455" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-libs-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-pkcs11-0.4.10-2.el8.x86_64.rpm", + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/os-prober-1.74-6.el8.x86_64.rpm", + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pam-1.3.1-11.el8.x86_64.rpm", + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "name": "parted", + "epoch": 0, + "version": "3.2", + "release": "38.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/parted-3.2-38.el8.x86_64.rpm", + "checksum": "sha256:22585bd5d69c5e0a06fe00a6844da2e5d311512374c1d176f17f41caab7e121f" + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/passwd-0.80-3.el8.x86_64.rpm", + "checksum": "sha256:7c0b2b064dad700cba2754b46f483e3e59aaf798740470df1daad3d5239fb893" + }, + { + "name": "pciutils-libs", + "epoch": 0, + "version": "3.6.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pciutils-libs-3.6.4-2.el8.x86_64.rpm", + "checksum": "sha256:da5606af487682acce52799418a97614d0f6e6b72d15c88c4f6f2a076f384dac" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre-8.42-4.el8.x86_64.rpm", + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre2-10.32-2.el8.x86_64.rpm", + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pigz-2.4-4.el8.x86_64.rpm", + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-2.9-9.el8.x86_64.rpm", + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "name": "polkit", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-0.115-11.el8.x86_64.rpm", + "checksum": "sha256:8af00d4b0857240310156e05123e07795e6573da7c1fe9e7fd83b51f13971725" + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-libs-0.115-11.el8.x86_64.rpm", + "checksum": "sha256:441efa6f0b9a9905ef11ec987d6db89e7dba2857060020c4554e32db3e59fce5" + }, + { + "name": "polkit-pkla-compat", + "epoch": 0, + "version": "0.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-pkla-compat-0.1-12.el8.x86_64.rpm", + "checksum": "sha256:9a9ca6857f517f1249d2eb496fe904590d6203e4a9547a28e0b23f21c4cae24a" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/popt-1.16-14.el8.x86_64.rpm", + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "name": "prefixdevname", + "epoch": 0, + "version": "0.1.0", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/prefixdevname-0.1.0-6.el8.x86_64.rpm", + "checksum": "sha256:8d371e753071edc796d2eadb8278980290511be6279fdf46649c81b859497d6a" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/procps-ng-3.3.15-2.el8.x86_64.rpm", + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-asn1crypto", + "epoch": 0, + "version": "0.24.0", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-asn1crypto-0.24.0-3.el8.noarch.rpm", + "checksum": "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34" + }, + { + "name": "python3-audit", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:8f00781eb679c6baf359099fa2a672ffccfc8e43b7c03c1dc635619cb25ff01d" + }, + { + "name": "python3-cffi", + "epoch": 0, + "version": "1.11.5", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-cffi-1.11.5-5.el8.x86_64.rpm", + "checksum": "sha256:13ffce0597b689dd53f55ea0d03dd6d013246634f5c6cbcef51fa549d9734b29" + }, + { + "name": "python3-chardet", + "epoch": 0, + "version": "3.0.4", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-chardet-3.0.4-7.el8.noarch.rpm", + "checksum": "sha256:352af964ab839022310eaf2a4d1ed3d7824eaa1ff948088d4414768ee649f786" + }, + { + "name": "python3-configobj", + "epoch": 0, + "version": "5.0.6", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-configobj-5.0.6-11.el8.noarch.rpm", + "checksum": "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367" + }, + { + "name": "python3-cryptography", + "epoch": 0, + "version": "2.3", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-cryptography-2.3-3.el8.x86_64.rpm", + "checksum": "sha256:7a7a238ea529165348acef1d1a20c1d47c1ef5838d8501f3879bb130c1b73e06" + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.6.1", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm", + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.4", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dbus-1.2.4-15.el8.x86_64.rpm", + "checksum": "sha256:5a85222c8e9997a8b609b915a8fbae756de9b9bff732db852fb15fe0524f2d86" + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.2.1", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm", + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "name": "python3-dmidecode", + "epoch": 0, + "version": "3.12.2", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dmidecode-3.12.2-15.el8.x86_64.rpm", + "checksum": "sha256:d2b777ea98ee644997029994136723cf4fa78e97afeaceab39f76b545b51792b" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-plugins-core-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87" + }, + { + "name": "python3-ethtool", + "epoch": 0, + "version": "0.14", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ethtool-0.14-3.el8.x86_64.rpm", + "checksum": "sha256:20dec130e4fd0a2146443791ca7ade6e079cea691d93711813d5f483b691c55a" + }, + { + "name": "python3-firewall", + "epoch": 0, + "version": "0.8.2", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-firewall-0.8.2-1.el8.noarch.rpm", + "checksum": "sha256:c9b3c6dcb4133c3051e3f75978f994aae4c0ad84dd1abbae7fcba497ee524603" + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.28.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gobject-base-3.28.3-2.el8.x86_64.rpm", + "checksum": "sha256:86d305a1466a596f8b436561d674f2510f268bed9e73f56c87da1dd120f99c18" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gpg-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-hawkey-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "name": "python3-idna", + "epoch": 0, + "version": "2.5", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-idna-2.5-5.el8.noarch.rpm", + "checksum": "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20" + }, + { + "name": "python3-iniparse", + "epoch": 0, + "version": "0.4", + "release": "31.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm", + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "name": "python3-inotify", + "epoch": 0, + "version": "0.9.6", + "release": "13.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm", + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "name": "python3-jwt", + "epoch": 0, + "version": "1.6.1", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-jwt-1.6.1-2.el8.noarch.rpm", + "checksum": "sha256:fe1a3e821eab7aafd11152c5d5b9f6cf57de36d8ef3b517e0e2f2315b062742c" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "name": "python3-librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-librepo-1.12.0-1.el8.x86_64.rpm", + "checksum": "sha256:4ca553b0c0f6dc130e05e2011cdf1f52132e8f70bd93be8eee4e415b2cac0c56" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libs-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libselinux-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:9487bff6bb16e7326c8b805751580b4593220ba19b06515c69de83fee8e3bb1f" + }, + { + "name": "python3-libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libsemanage-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:09fc3154e76c8ee25b3982c15f3bc455017262c3df5af84075859dcbf79e4f82" + }, + { + "name": "python3-libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libxml2-2.9.7-8.el8.x86_64.rpm", + "checksum": "sha256:4ccbefcbe75decfef38ccae5d8ff92ba6b00e8232b64ec46ae0c0be8ae20ec50" + }, + { + "name": "python3-linux-procfs", + "epoch": 0, + "version": "0.6.2", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-linux-procfs-0.6.2-2.el8.noarch.rpm", + "checksum": "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f" + }, + { + "name": "python3-nftables", + "epoch": 1, + "version": "0.9.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-nftables-0.9.3-14.el8.x86_64.rpm", + "checksum": "sha256:08bf2e898b5775317d04266f4598eddbe06c424a3694b1534e3ceff088e2e8ca" + }, + { + "name": "python3-oauthlib", + "epoch": 0, + "version": "2.1.0", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-oauthlib-2.1.0-1.el8.noarch.rpm", + "checksum": "sha256:3446bbd5d26c3a1b8cd64c077ae4bbeea8ef2ef349c590297bbe2a53e18ce9e6" + }, + { + "name": "python3-perf", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-perf-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:18d419718a99851370262584bec1b27d60cbd08845b50fbe97e1a56b71cd5ea2" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-ply", + "epoch": 0, + "version": "3.9", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ply-3.9-8.el8.noarch.rpm", + "checksum": "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9" + }, + { + "name": "python3-policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-policycoreutils-2.9-9.el8.noarch.rpm", + "checksum": "sha256:e64a9ad8cf69086aa214b2f1082021600ac89abea338727f6bc5444190ceff42" + }, + { + "name": "python3-pycparser", + "epoch": 0, + "version": "2.14", + "release": "14.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pycparser-2.14-14.el8.noarch.rpm", + "checksum": "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf" + }, + { + "name": "python3-pysocks", + "epoch": 0, + "version": "1.6.8", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pysocks-1.6.8-3.el8.noarch.rpm", + "checksum": "sha256:a7a6053537ea1476969ad10005915cfd6618a5d573fb3320547712abbb6e4280" + }, + { + "name": "python3-pyudev", + "epoch": 0, + "version": "0.21.0", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pyudev-0.21.0-7.el8.noarch.rpm", + "checksum": "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde" + }, + { + "name": "python3-pyyaml", + "epoch": 0, + "version": "3.12", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pyyaml-3.12-12.el8.x86_64.rpm", + "checksum": "sha256:de870435340bf30620406df41b79e43adaf7d0a277db1635a0fae710df993fc0" + }, + { + "name": "python3-requests", + "epoch": 0, + "version": "2.20.0", + "release": "2.1.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-requests-2.20.0-2.1.el8_1.noarch.rpm", + "checksum": "sha256:d94ea399f82d4f9537af1098a588c5cc9a80454ba7c1de9b26dd11cb5c730d8a" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "name": "python3-schedutils", + "epoch": 0, + "version": "0.6", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-schedutils-0.6-6.el8.x86_64.rpm", + "checksum": "sha256:09ca7b05e26f93d35ac299dbcd865b65ec3a3d2654e1da87d2c3c0462dbe6e4a" + }, + { + "name": "python3-setools", + "epoch": 0, + "version": "4.3.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setools-4.3.0-1.el8.x86_64.rpm", + "checksum": "sha256:cb8e7909d58206223ad7108a850218360a6b1e2147d97bc94097962dc820d0de" + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.11.0", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm", + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "name": "python3-slip", + "epoch": 0, + "version": "0.6.4", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-slip-0.6.4-11.el8.noarch.rpm", + "checksum": "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb" + }, + { + "name": "python3-slip-dbus", + "epoch": 0, + "version": "0.6.4", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-slip-dbus-0.6.4-11.el8.noarch.rpm", + "checksum": "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d" + }, + { + "name": "python3-subscription-manager-rhsm", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-subscription-manager-rhsm-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:0f3b084d947bc246fe68822129b8ae1294c4187270a19f0966282baf75b34dc6" + }, + { + "name": "python3-syspurpose", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-syspurpose-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:206cba480b58c70348584010d547d21bcd84c6094fd3980e22c6b640da12704c" + }, + { + "name": "python3-urllib3", + "epoch": 0, + "version": "1.24.2", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-urllib3-1.24.2-4.el8.noarch.rpm", + "checksum": "sha256:d4736913c9527c97b95cbd12eb3a181c3c980be9c29758fb909f2d60bf378c53" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/readline-7.0-10.el8.x86_64.rpm", + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-eula-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "name": "rng-tools", + "epoch": 0, + "version": "6.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rng-tools-6.8-3.el8.x86_64.rpm", + "checksum": "sha256:9d9d1bdfba4cd852f90232ebe2c4247e7b3a88c4476578c820788a91d6838e55" + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "22.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rootfiles-8.1-22.el8.noarch.rpm", + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-build-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sed-4.5-2.el8.x86_64.rpm", + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "sg3_utils", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sg3_utils-1.44-5.el8.x86_64.rpm", + "checksum": "sha256:398c1abc82097370f46e6fdf4dae63870e1f767b24d0130c79ed67ea3a67233a" + }, + { + "name": "sg3_utils-libs", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sg3_utils-libs-1.44-5.el8.x86_64.rpm", + "checksum": "sha256:671852e4f32de6278dd384d35d1dc799ab5d3e8ef718e89e516452cbcba068f0" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shadow-utils-4.6-10.el8.x86_64.rpm", + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shared-mime-info-1.9-3.el8.x86_64.rpm", + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "name": "slang", + "epoch": 0, + "version": "2.3.2", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/slang-2.3.2-3.el8.x86_64.rpm", + "checksum": "sha256:efa20ae5eca5860656d0131086470cb8d5c3a1ae2819301e7d015f06bbb68a26" + }, + { + "name": "snappy", + "epoch": 0, + "version": "1.1.7", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/snappy-1.1.7-5.el8.x86_64.rpm", + "checksum": "sha256:4403330cdf4f15d75d727e2ac8c3358ff6a13209b3395dfac2131984e443eb23" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-libs-3.26.0-10.el8.x86_64.rpm", + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "name": "squashfs-tools", + "epoch": 0, + "version": "4.3", + "release": "19.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/squashfs-tools-4.3-19.el8.x86_64.rpm", + "checksum": "sha256:72ff3a3f6c52849a40cb24f9694115a68cc939970a00c374b4c73b1e4c5dc20c" + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-client-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:2e90748420a7d28b3063df04de129e79ea85310a8d9cf2faf0a2e7b8430307c8" + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-common-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:14098d36fe4be983fac73d04aeacf0ed7977d962e760907b89e3f80b4ca46f3f" + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-kcm-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:1b1fe43a375a21f4c3ccf04861c122fd519d4865b9c1abc7f1973b86a0252a06" + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-nfs-idmap-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:c0025c0b08ed82c640fa470e62743aed17a33f7948ed0cc969892d7c149206b3" + }, + { + "name": "subscription-manager", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:65dc391ab1c96d1009ef2e7706eabacd5cf84f2a47ea1cc87f6f5e2c1324b178" + }, + { + "name": "subscription-manager-rhsm-certificates", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-rhsm-certificates-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:99fa92b5d1e0d335fb2bb961ef39988b50968350b899e8790cead73c9a0bec65" + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.8.29", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sudo-1.8.29-6.el8.x86_64.rpm", + "checksum": "sha256:ec9adedf0d5d2d096acf4739e2eefab8095498037e13dac9b283e17a9c54259a" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-239-36.el8.x86_64.rpm", + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-libs-239-36.el8.x86_64.rpm", + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-pam-239-36.el8.x86_64.rpm", + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-udev-239-36.el8.x86_64.rpm", + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "name": "teamd", + "epoch": 0, + "version": "1.29", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/teamd-1.29-5.el8.x86_64.rpm", + "checksum": "sha256:b156691caa225f0025533a68eeb9a2cf3883062dd209ede9ec07727b358171cc" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-lib-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "name": "tuned", + "epoch": 0, + "version": "2.14.0", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tuned-2.14.0-2.el8.noarch.rpm", + "checksum": "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "usermode", + "epoch": 0, + "version": "1.113", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/usermode-1.113-1.el8.x86_64.rpm", + "checksum": "sha256:98a589d7e1cdea9d974aa43f688e55333eed11ce7cb2037d45cc2e69bce579b3" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/util-linux-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.0.1763", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/vim-minimal-8.0.1763-15.el8.x86_64.rpm", + "checksum": "sha256:947b4e4eebec21501ca62e2a7ff9baae0e4e7c59584fbba4b6276a402cfbb45b" + }, + { + "name": "virt-what", + "epoch": 0, + "version": "1.18", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/virt-what-1.18-6.el8.x86_64.rpm", + "checksum": "sha256:2cfcc3d6163dfaf7ce76998be992bd0b70dd7cbb838430cecf2aff04cd435d24" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/which-2.21-12.el8.x86_64.rpm", + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xfsprogs-5.0.0-4.el8.x86_64.rpm", + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-libs-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/yum-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/zlib-1.2.11-15.el8.x86_64.rpm", + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "name": "WALinuxAgent", + "epoch": 0, + "version": "2.2.46", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/WALinuxAgent-2.2.46-7.el8.noarch.rpm", + "checksum": "sha256:c0bd0bfebb9188318f768c04e34dfe72ff584d8a26394fb083ba05a4d7287274" + }, + { + "name": "cloud-init", + "epoch": 0, + "version": "19.4", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cloud-init-19.4-7.el8.noarch.rpm", + "checksum": "sha256:066b1806502fdfeb6ac6ade4041c15553ebcebad0229078eddca6fef8e5e65c2" + }, + { + "name": "cloud-utils-growpart", + "epoch": 0, + "version": "0.31", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/cloud-utils-growpart-0.31-1.el8.noarch.rpm", + "checksum": "sha256:664a883f3c7042eb91e0b66fc99c309a729011b4912e4af9397f4e25e1adae90" + }, + { + "name": "dnf-plugin-spacewalk", + "epoch": 0, + "version": "2.8.5", + "release": "11.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b" + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm", + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm", + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "name": "langpacks-en", + "epoch": 0, + "version": "1.0", + "release": "12.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/langpacks-en-1.0-12.el8.noarch.rpm", + "checksum": "sha256:38affe91361bf56b84490d97c7e3f815965cf8d2bbb222c6c045af4bf2dff736" + }, + { + "name": "libestr", + "epoch": 0, + "version": "0.1.10", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libestr-0.1.10-1.el8.x86_64.rpm", + "checksum": "sha256:bfe5c8ea12012936cc59981a10728e95d5fdadd3e893457af7a27c464d8cb6ba" + }, + { + "name": "libfastjson", + "epoch": 0, + "version": "0.99.8", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libfastjson-0.99.8-2.el8.x86_64.rpm", + "checksum": "sha256:474a66a4cf3d5a00286be40c15bad69ea1ac63a9424a1ff44f20a548a7686f7a" + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.2.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libmaxminddb-1.2.0-10.el8.x86_64.rpm", + "checksum": "sha256:995a5401cd86404d14d08c0aeafeaa8da3f540b1806f9d0e233d75dec9e45c74" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxkbcommon-0.9.1-1.el8.x86_64.rpm", + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/memstrack-0.1.8-1.el8.x86_64.rpm", + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pinentry-1.1.0-2.el8.x86_64.rpm", + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "name": "plymouth", + "epoch": 0, + "version": "0.9.4", + "release": "1.20200615git1e36e30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/plymouth-0.9.4-1.20200615git1e36e30.el8.x86_64.rpm", + "checksum": "sha256:4d54749c92887ab059c768ada265c0f64e292594846b183d1fdfa9b29fff3ac1" + }, + { + "name": "plymouth-core-libs", + "epoch": 0, + "version": "0.9.4", + "release": "1.20200615git1e36e30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/plymouth-core-libs-0.9.4-1.20200615git1e36e30.el8.x86_64.rpm", + "checksum": "sha256:0f662be3013f7958961ae70400c7ed1fb4350c823881c123a16cbb2b6b8c8f6a" + }, + { + "name": "plymouth-scripts", + "epoch": 0, + "version": "0.9.4", + "release": "1.20200615git1e36e30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/plymouth-scripts-0.9.4-1.20200615git1e36e30.el8.x86_64.rpm", + "checksum": "sha256:61498bdebac578394eae8667e16ad7393309f7144266d4331f4c17f276b15fe0" + }, + { + "name": "python3-babel", + "epoch": 0, + "version": "2.5.1", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-babel-2.5.1-5.el8.noarch.rpm", + "checksum": "sha256:9e08c0338eac83abf9a0118cb05fb646d4554c1b2513ab6801e9587aede40b28" + }, + { + "name": "python3-dnf-plugin-spacewalk", + "epoch": 0, + "version": "2.8.5", + "release": "11.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43" + }, + { + "name": "python3-hwdata", + "epoch": 0, + "version": "2.3.6", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-hwdata-2.3.6-3.el8.noarch.rpm", + "checksum": "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362" + }, + { + "name": "python3-jinja2", + "epoch": 0, + "version": "2.10.1", + "release": "2.el8_0", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jinja2-2.10.1-2.el8_0.noarch.rpm", + "checksum": "sha256:0899ddc5a37434135f1f8402aafde3228db6bdbb71cb4e9401c1ed53524c3d64" + }, + { + "name": "python3-jsonpatch", + "epoch": 0, + "version": "1.21", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonpatch-1.21-2.el8.noarch.rpm", + "checksum": "sha256:bce8cbc50f5872bcee1bed9ff041bebfae10169f007cf97b268819e78b9d8835" + }, + { + "name": "python3-jsonpointer", + "epoch": 0, + "version": "1.10", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonpointer-1.10-11.el8.noarch.rpm", + "checksum": "sha256:5d9c5b3341e9b10091a5bc66c08455ce7d9c62911fac6b759b847a46749a1adf" + }, + { + "name": "python3-jsonschema", + "epoch": 0, + "version": "2.6.0", + "release": "4.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-jsonschema-2.6.0-4.el8.noarch.rpm", + "checksum": "sha256:59bf7b92f9eecb7868e960dc05c269a9df088d2dc71ce85cf77bfad68e206f0b" + }, + { + "name": "python3-markupsafe", + "epoch": 0, + "version": "0.23", + "release": "19.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-markupsafe-0.23-19.el8.x86_64.rpm", + "checksum": "sha256:e868499743c399baa6463fa64a2534a7d32f8e1cca7b1b47ec00c60b34250bfe" + }, + { + "name": "python3-netifaces", + "epoch": 0, + "version": "0.10.6", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-netifaces-0.10.6-4.el8.x86_64.rpm", + "checksum": "sha256:3edf7d29e530e6568416d4455e9fbaa511aba236c603da9928e689fae77b9874" + }, + { + "name": "python3-newt", + "epoch": 0, + "version": "0.52.20", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-newt-0.52.20-11.el8.x86_64.rpm", + "checksum": "sha256:b4e89276818abec218c909ca961db9bb2e09b1fc609ff280e6c05227143fa24d" + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "name": "python3-prettytable", + "epoch": 0, + "version": "0.7.2", + "release": "14.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-prettytable-0.7.2-14.el8.noarch.rpm", + "checksum": "sha256:076bdcf066fabe9c611ceee12665d735136ecd306ec4c1e608bb1e0a4704ae55" + }, + { + "name": "python3-pyOpenSSL", + "epoch": 0, + "version": "18.0.0", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pyOpenSSL-18.0.0-1.el8.noarch.rpm", + "checksum": "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21" + }, + { + "name": "python3-pyasn1", + "epoch": 0, + "version": "0.3.7", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pyasn1-0.3.7-6.el8.noarch.rpm", + "checksum": "sha256:42b2221eb7118f2a10bbe67ba22e6876cdad05f9db6ae0e057d556041555dc7f" + }, + { + "name": "python3-pyserial", + "epoch": 0, + "version": "3.1.1", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pyserial-3.1.1-8.el8.noarch.rpm", + "checksum": "sha256:3e9dff1e55f3d4121bb4d85839f0e26a05bb95ed652abbe15535167528226414" + }, + { + "name": "python3-pytz", + "epoch": 0, + "version": "2017.2", + "release": "9.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pytz-2017.2-9.el8.noarch.rpm", + "checksum": "sha256:ccfdbebdf0575395a80f2fa55e49c8358ca601fdbb0685f37e8c584226264eca" + }, + { + "name": "python3-rhn-check", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:15462b748aef3c565bcf4f849c1a21c1389a8ef5e7dae94e64718865a67d46a9" + }, + { + "name": "python3-rhn-client-tools", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:bed436b103161f7d8f61b617c84f3a7b5509f1d00c8425900a88c222b1331b31" + }, + { + "name": "python3-rhn-setup", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:ec26615d079ce89316352f813279f74a44871fa8c26fed8f369b9fe847aa5121" + }, + { + "name": "python3-rhnlib", + "epoch": 0, + "version": "2.8.6", + "release": "8.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-unbound-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "name": "python36", + "epoch": 0, + "version": "3.6.8", + "release": "2.module+el8.1.0+3334+5cb623d7", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64.rpm", + "checksum": "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7" + }, + { + "name": "rhn-check", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:d81c180c682e6014a0da09aaa144492e8cb03c1d61022513ba6db5bd3740f921" + }, + { + "name": "rhn-client-tools", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:d80219a299035688091aa230b1c9169143c00c141c4f1ad8e75d176d22cc1cd0" + }, + { + "name": "rhn-setup", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:4931d78c496eaaa8e6b6bbec2b4750da52b9fc7e989ae89b7c1fa2a6f40ff7fa" + }, + { + "name": "rhnlib", + "epoch": 0, + "version": "2.8.6", + "release": "8.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42" + }, + { + "name": "rhnsd", + "epoch": 0, + "version": "5.0.35", + "release": "3.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:00cc9cd4517cbb4ad99dbce63b40b700699523550cd7f8202948af28dbe2cd9e" + }, + { + "name": "rsyslog", + "epoch": 0, + "version": "8.1911.0", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rsyslog-8.1911.0-6.el8.x86_64.rpm", + "checksum": "sha256:5ef47eb6a042a13c902764907692c1068eb0f69153b47bc85792bef74bfa852b" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/unbound-libs-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "checksums": { + "0": "sha256:cc014fee6e92f8a81f152d72a43137a3270189ef229c738381b98bc0c88443f8", + "1": "sha256:2b881b017a4c721893038307bf4f0269afe55c35114a477be226f53a2f585545" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=0bd700f8-090f-4556-b797-b340297ea1bd ro biosdevname=0 rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0" + }, + "bootloader": "grub", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "id": "rhel-20200625210904-4.18.0-221.el8.x86_64", + "initrd": "/boot/initramfs-4.18.0-221.el8.x86_64.img $tuned_initrd", + "linux": "/boot/vmlinuz-4.18.0-221.el8.x86_64", + "options": "$kernelopts $tuned_params", + "title": "Red Hat Enterprise Linux (4.18.0-221.el8.x86_64) 8.3 (Ootpa)", + "version": "4.18.0-221.el8.x86_64" + } + ], + "firewall-enabled": [ + "ssh", + "dhcpv6-client", + "cockpit" + ], + "fstab": [ + [ + "UUID=0bd700f8-090f-4556-b797-b340297ea1bd", + "/", + "xfs", + "defaults", + "0", + "0" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:992:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:999:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "polkitd:x:995:", + "redhat:x:1000:", + "render:x:998:", + "rngd:x:991:", + "root:x:0:", + "ssh_keys:x:996:", + "sshd:x:74:", + "sssd:x:993:", + "sys:x:3:", + "systemd-coredump:x:997:", + "systemd-journal:x:190:", + "systemd-resolve:x:193:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:994:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "raw", + "os-release": { + "ANSI_COLOR": "0;31", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:redhat:enterprise_linux:8.3:beta", + "HOME_URL": "https://www.redhat.com/", + "ID": "rhel", + "ID_LIKE": "fedora", + "NAME": "Red Hat Enterprise Linux", + "PLATFORM_ID": "platform:el8", + "PRETTY_NAME": "Red Hat Enterprise Linux 8.3 Beta (Ootpa)", + "REDHAT_BUGZILLA_PRODUCT": "Red Hat Enterprise Linux 8", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "8.3", + "REDHAT_SUPPORT_PRODUCT": "Red Hat Enterprise Linux", + "REDHAT_SUPPORT_PRODUCT_VERSION": "8.3 Beta", + "VERSION": "8.3 (Ootpa)", + "VERSION_ID": "8.3" + }, + "packages": [ + "NetworkManager-1.26.0-0.2.el8.x86_64", + "NetworkManager-libnm-1.26.0-0.2.el8.x86_64", + "NetworkManager-team-1.26.0-0.2.el8.x86_64", + "NetworkManager-tui-1.26.0-0.2.el8.x86_64", + "WALinuxAgent-2.2.46-7.el8.noarch", + "acl-2.2.53-1.el8.x86_64", + "audit-3.0-0.17.20191104git1c2f876.el8.x86_64", + "audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64", + "authselect-1.2.1-2.el8.x86_64", + "authselect-libs-1.2.1-2.el8.x86_64", + "basesystem-11-5.el8.noarch", + "bash-4.4.19-12.el8.x86_64", + "bind-export-libs-9.11.20-3.el8.x86_64", + "biosdevname-0.7.3-2.el8.x86_64", + "brotli-1.0.6-2.el8.x86_64", + "bzip2-libs-1.0.6-26.el8.x86_64", + "c-ares-1.13.0-5.el8.x86_64", + "ca-certificates-2019.2.32-80.0.el8_1.noarch", + "checkpolicy-2.9-1.el8.x86_64", + "chkconfig-1.13-2.el8.x86_64", + "chrony-3.5-1.el8.x86_64", + "cloud-init-19.4-7.el8.noarch", + "cloud-utils-growpart-0.31-1.el8.noarch", + "coreutils-8.30-8.el8.x86_64", + "coreutils-common-8.30-8.el8.x86_64", + "cpio-2.12-8.el8.x86_64", + "cracklib-2.9.6-15.el8.x86_64", + "cracklib-dicts-2.9.6-15.el8.x86_64", + "cronie-1.5.2-4.el8.x86_64", + "cronie-anacron-1.5.2-4.el8.x86_64", + "crontabs-1.11-16.20150630git.el8.noarch", + "crypto-policies-20200610-1.git0ac8b1f.el8.noarch", + "crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch", + "cryptsetup-libs-2.3.3-1.el8.x86_64", + "curl-7.61.1-12.el8.x86_64", + "cyrus-sasl-lib-2.1.27-5.el8.x86_64", + "dbus-1.12.8-11.el8.x86_64", + "dbus-common-1.12.8-11.el8.noarch", + "dbus-daemon-1.12.8-11.el8.x86_64", + "dbus-glib-0.110-2.el8.x86_64", + "dbus-libs-1.12.8-11.el8.x86_64", + "dbus-tools-1.12.8-11.el8.x86_64", + "device-mapper-1.02.171-3.el8.x86_64", + "device-mapper-libs-1.02.171-3.el8.x86_64", + "dhcp-client-4.3.6-41.el8.x86_64", + "dhcp-common-4.3.6-41.el8.noarch", + "dhcp-libs-4.3.6-41.el8.x86_64", + "diffutils-3.6-6.el8.x86_64", + "dmidecode-3.2-6.el8.x86_64", + "dnf-4.2.23-2.el8.noarch", + "dnf-data-4.2.23-2.el8.noarch", + "dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch", + "dnf-plugin-subscription-manager-1.27.9-1.el8.x86_64", + "dnf-plugins-core-4.0.17-2.el8.noarch", + "dracut-049-89.git20200625.el8.x86_64", + "dracut-config-generic-049-89.git20200625.el8.x86_64", + "dracut-network-049-89.git20200625.el8.x86_64", + "dracut-squash-049-89.git20200625.el8.x86_64", + "e2fsprogs-1.45.6-1.el8.x86_64", + "e2fsprogs-libs-1.45.6-1.el8.x86_64", + "elfutils-debuginfod-client-0.180-1.el8.x86_64", + "elfutils-default-yama-scope-0.180-1.el8.noarch", + "elfutils-libelf-0.180-1.el8.x86_64", + "elfutils-libs-0.180-1.el8.x86_64", + "ethtool-5.0-2.el8.x86_64", + "expat-2.2.5-4.el8.x86_64", + "file-5.33-16.el8.x86_64", + "file-libs-5.33-16.el8.x86_64", + "filesystem-3.8-3.el8.x86_64", + "findutils-4.6.0-20.el8.x86_64", + "firewalld-0.8.2-1.el8.noarch", + "firewalld-filesystem-0.8.2-1.el8.noarch", + "freetype-2.9.1-4.el8.x86_64", + "fuse-libs-2.9.7-12.el8.x86_64", + "gawk-4.2.1-1.el8.x86_64", + "gdbm-1.18-1.el8.x86_64", + "gdbm-libs-1.18-1.el8.x86_64", + "gdisk-1.0.3-6.el8.x86_64", + "geolite2-city-20180605-1.el8.noarch", + "geolite2-country-20180605-1.el8.noarch", + "gettext-0.19.8.1-17.el8.x86_64", + "gettext-libs-0.19.8.1-17.el8.x86_64", + "glib2-2.56.4-8.el8.x86_64", + "glibc-2.28-127.el8.x86_64", + "glibc-common-2.28-127.el8.x86_64", + "glibc-langpack-en-2.28-127.el8.x86_64", + "gmp-6.1.2-10.el8.x86_64", + "gnupg2-2.2.20-2.el8.x86_64", + "gnupg2-smime-2.2.20-2.el8.x86_64", + "gnutls-3.6.14-3.el8.x86_64", + "gobject-introspection-1.56.1-1.el8.x86_64", + "gpg-pubkey-d4082792-5b32db75", + "gpg-pubkey-fd431d51-4ae0493b", + "gpgme-1.13.1-3.el8.x86_64", + "grep-3.1-6.el8.x86_64", + "groff-base-1.22.3-18.el8.x86_64", + "grub2-common-2.02-84.el8.noarch", + "grub2-pc-2.02-84.el8.x86_64", + "grub2-pc-modules-2.02-84.el8.noarch", + "grub2-tools-2.02-84.el8.x86_64", + "grub2-tools-extra-2.02-84.el8.x86_64", + "grub2-tools-minimal-2.02-84.el8.x86_64", + "grubby-8.40-41.el8.x86_64", + "gzip-1.9-9.el8.x86_64", + "hardlink-1.3-6.el8.x86_64", + "hdparm-9.54-2.el8.x86_64", + "hostname-3.20-6.el8.x86_64", + "hwdata-0.314-8.5.el8.noarch", + "ima-evm-utils-1.1-5.el8.x86_64", + "info-6.5-6.el8.x86_64", + "initscripts-10.00.8-1.el8.x86_64", + "ipcalc-0.2.4-4.el8.x86_64", + "iproute-5.3.0-5.el8.x86_64", + "iprutils-2.4.19-1.el8.x86_64", + "ipset-7.1-1.el8.x86_64", + "ipset-libs-7.1-1.el8.x86_64", + "iptables-1.8.4-14.el8.x86_64", + "iptables-ebtables-1.8.4-14.el8.x86_64", + "iptables-libs-1.8.4-14.el8.x86_64", + "iputils-20180629-2.el8.x86_64", + "irqbalance-1.4.0-4.el8.x86_64", + "iwl100-firmware-39.31.5.1-99.el8.1.noarch", + "iwl1000-firmware-39.31.5.1-99.el8.1.noarch", + "iwl105-firmware-18.168.6.1-99.el8.1.noarch", + "iwl135-firmware-18.168.6.1-99.el8.1.noarch", + "iwl2000-firmware-18.168.6.1-99.el8.1.noarch", + "iwl2030-firmware-18.168.6.1-99.el8.1.noarch", + "iwl3160-firmware-25.30.13.0-99.el8.1.noarch", + "iwl5000-firmware-8.83.5.1_1-99.el8.1.noarch", + "iwl5150-firmware-8.24.2.2-99.el8.1.noarch", + "iwl6000-firmware-9.221.4.1-99.el8.1.noarch", + "iwl6000g2a-firmware-18.168.6.1-99.el8.1.noarch", + "iwl6050-firmware-41.28.5.1-99.el8.1.noarch", + "iwl7260-firmware-25.30.13.0-99.el8.1.noarch", + "jansson-2.11-3.el8.x86_64", + "json-c-0.13.1-0.2.el8.x86_64", + "json-glib-1.4.4-1.el8.x86_64", + "kbd-2.0.4-10.el8.x86_64", + "kbd-legacy-2.0.4-10.el8.noarch", + "kbd-misc-2.0.4-10.el8.noarch", + "kernel-4.18.0-221.el8.x86_64", + "kernel-core-4.18.0-221.el8.x86_64", + "kernel-modules-4.18.0-221.el8.x86_64", + "kernel-tools-4.18.0-221.el8.x86_64", + "kernel-tools-libs-4.18.0-221.el8.x86_64", + "kexec-tools-2.0.20-29.el8.x86_64", + "keyutils-libs-1.5.10-6.el8.x86_64", + "kmod-25-16.el8.x86_64", + "kmod-libs-25-16.el8.x86_64", + "kpartx-0.8.4-2.el8.x86_64", + "krb5-libs-1.18.2-3.el8.x86_64", + "langpacks-en-1.0-12.el8.noarch", + "less-530-1.el8.x86_64", + "libacl-2.2.53-1.el8.x86_64", + "libarchive-3.3.2-9.el8.x86_64", + "libassuan-2.5.1-3.el8.x86_64", + "libattr-2.4.48-3.el8.x86_64", + "libbasicobjects-0.1.1-39.el8.x86_64", + "libblkid-2.32.1-24.el8.x86_64", + "libcap-2.26-4.el8.x86_64", + "libcap-ng-0.7.9-5.el8.x86_64", + "libcollection-0.7.0-39.el8.x86_64", + "libcom_err-1.45.6-1.el8.x86_64", + "libcomps-0.1.11-4.el8.x86_64", + "libcroco-0.6.12-4.el8.x86_64", + "libcurl-7.61.1-12.el8.x86_64", + "libdaemon-0.14-15.el8.x86_64", + "libdb-5.3.28-39.el8.x86_64", + "libdb-utils-5.3.28-39.el8.x86_64", + "libdhash-0.5.0-39.el8.x86_64", + "libdnf-0.48.0-2.el8.x86_64", + "libedit-3.1-23.20170329cvs.el8.x86_64", + "libestr-0.1.10-1.el8.x86_64", + "libevent-2.1.8-5.el8.x86_64", + "libfastjson-0.99.8-2.el8.x86_64", + "libfdisk-2.32.1-24.el8.x86_64", + "libffi-3.1-22.el8.x86_64", + "libgcc-8.3.1-5.1.el8.x86_64", + "libgcrypt-1.8.5-4.el8.x86_64", + "libgomp-8.3.1-5.1.el8.x86_64", + "libgpg-error-1.31-1.el8.x86_64", + "libgudev-232-4.el8.x86_64", + "libidn2-2.2.0-1.el8.x86_64", + "libini_config-1.3.1-39.el8.x86_64", + "libkcapi-1.2.0-2.el8.x86_64", + "libkcapi-hmaccalc-1.2.0-2.el8.x86_64", + "libksba-1.3.5-7.el8.x86_64", + "libldb-2.1.3-2.el8.x86_64", + "libmaxminddb-1.2.0-10.el8.x86_64", + "libmetalink-0.1.3-7.el8.x86_64", + "libmnl-1.0.4-6.el8.x86_64", + "libmodulemd-2.9.4-2.el8.x86_64", + "libmount-2.32.1-24.el8.x86_64", + "libndp-1.7-3.el8.x86_64", + "libnetfilter_conntrack-1.0.6-5.el8.x86_64", + "libnfnetlink-1.0.1-13.el8.x86_64", + "libnfsidmap-2.3.3-35.el8.x86_64", + "libnftnl-1.1.5-4.el8.x86_64", + "libnghttp2-1.33.0-3.el8_2.1.x86_64", + "libnl3-3.5.0-1.el8.x86_64", + "libnl3-cli-3.5.0-1.el8.x86_64", + "libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64", + "libpath_utils-0.2.1-39.el8.x86_64", + "libpcap-1.9.1-4.el8.x86_64", + "libpipeline-1.5.0-2.el8.x86_64", + "libpng-1.6.34-5.el8.x86_64", + "libpsl-0.20.2-6.el8.x86_64", + "libpwquality-1.4.0-9.el8.x86_64", + "libref_array-0.1.5-39.el8.x86_64", + "librepo-1.12.0-1.el8.x86_64", + "libreport-filesystem-2.9.5-11.el8.x86_64", + "librhsm-0.0.3-3.el8.x86_64", + "libseccomp-2.4.3-1.el8.x86_64", + "libsecret-0.18.6-1.el8.x86_64", + "libselinux-2.9-3.el8.x86_64", + "libselinux-utils-2.9-3.el8.x86_64", + "libsemanage-2.9-3.el8.x86_64", + "libsepol-2.9-1.el8.x86_64", + "libsigsegv-2.11-5.el8.x86_64", + "libsmartcols-2.32.1-24.el8.x86_64", + "libsolv-0.7.11-1.el8.x86_64", + "libss-1.45.6-1.el8.x86_64", + "libssh-0.9.4-2.el8.x86_64", + "libssh-config-0.9.4-2.el8.noarch", + "libsss_autofs-2.3.0-2.el8.x86_64", + "libsss_certmap-2.3.0-2.el8.x86_64", + "libsss_idmap-2.3.0-2.el8.x86_64", + "libsss_nss_idmap-2.3.0-2.el8.x86_64", + "libsss_sudo-2.3.0-2.el8.x86_64", + "libstdc++-8.3.1-5.1.el8.x86_64", + "libsysfs-2.1.0-24.el8.x86_64", + "libtalloc-2.3.1-2.el8.x86_64", + "libtasn1-4.13-3.el8.x86_64", + "libtdb-1.4.3-1.el8.x86_64", + "libteam-1.29-5.el8.x86_64", + "libtevent-0.10.2-2.el8.x86_64", + "libtirpc-1.1.4-4.el8.x86_64", + "libunistring-0.9.9-3.el8.x86_64", + "libusbx-1.0.23-3.el8.x86_64", + "libuser-0.62-23.el8.x86_64", + "libutempter-1.1.6-14.el8.x86_64", + "libuuid-2.32.1-24.el8.x86_64", + "libverto-0.3.0-5.el8.x86_64", + "libxcrypt-4.1.1-4.el8.x86_64", + "libxkbcommon-0.9.1-1.el8.x86_64", + "libxml2-2.9.7-8.el8.x86_64", + "libyaml-0.1.7-5.el8.x86_64", + "libzstd-1.4.4-1.el8.x86_64", + "linux-firmware-20200619-99.git3890db36.el8.noarch", + "logrotate-3.14.0-4.el8.x86_64", + "lshw-B.02.19.2-2.el8.x86_64", + "lsscsi-0.30-1.el8.x86_64", + "lua-libs-5.3.4-11.el8.x86_64", + "lz4-libs-1.8.3-2.el8.x86_64", + "lzo-2.08-14.el8.x86_64", + "man-db-2.7.6.1-17.el8.x86_64", + "memstrack-0.1.8-1.el8.x86_64", + "microcode_ctl-20200609-2.el8.x86_64", + "mozjs60-60.9.0-4.el8.x86_64", + "mpfr-3.1.6-1.el8.x86_64", + "ncurses-6.1-7.20180224.el8.x86_64", + "ncurses-base-6.1-7.20180224.el8.noarch", + "ncurses-libs-6.1-7.20180224.el8.x86_64", + "net-tools-2.0-0.52.20160912git.el8.x86_64", + "nettle-3.4.1-2.el8.x86_64", + "newt-0.52.20-11.el8.x86_64", + "nftables-0.9.3-14.el8.x86_64", + "npth-1.5-4.el8.x86_64", + "numactl-libs-2.0.12-11.el8.x86_64", + "openldap-2.4.46-15.el8.x86_64", + "openssh-8.0p1-5.el8.x86_64", + "openssh-clients-8.0p1-5.el8.x86_64", + "openssh-server-8.0p1-5.el8.x86_64", + "openssl-1.1.1g-9.el8.x86_64", + "openssl-libs-1.1.1g-9.el8.x86_64", + "openssl-pkcs11-0.4.10-2.el8.x86_64", + "os-prober-1.74-6.el8.x86_64", + "p11-kit-0.23.14-5.el8_0.x86_64", + "p11-kit-trust-0.23.14-5.el8_0.x86_64", + "pam-1.3.1-11.el8.x86_64", + "parted-3.2-38.el8.x86_64", + "passwd-0.80-3.el8.x86_64", + "pciutils-libs-3.6.4-2.el8.x86_64", + "pcre-8.42-4.el8.x86_64", + "pcre2-10.32-2.el8.x86_64", + "pigz-2.4-4.el8.x86_64", + "pinentry-1.1.0-2.el8.x86_64", + "platform-python-3.6.8-30.el8.x86_64", + "platform-python-pip-9.0.3-17.el8.noarch", + "platform-python-setuptools-39.2.0-6.el8.noarch", + "plymouth-0.9.4-1.20200615git1e36e30.el8.x86_64", + "plymouth-core-libs-0.9.4-1.20200615git1e36e30.el8.x86_64", + "plymouth-scripts-0.9.4-1.20200615git1e36e30.el8.x86_64", + "policycoreutils-2.9-9.el8.x86_64", + "polkit-0.115-11.el8.x86_64", + "polkit-libs-0.115-11.el8.x86_64", + "polkit-pkla-compat-0.1-12.el8.x86_64", + "popt-1.16-14.el8.x86_64", + "prefixdevname-0.1.0-6.el8.x86_64", + "procps-ng-3.3.15-2.el8.x86_64", + "publicsuffix-list-dafsa-20180723-1.el8.noarch", + "python3-asn1crypto-0.24.0-3.el8.noarch", + "python3-audit-3.0-0.17.20191104git1c2f876.el8.x86_64", + "python3-babel-2.5.1-5.el8.noarch", + "python3-cffi-1.11.5-5.el8.x86_64", + "python3-chardet-3.0.4-7.el8.noarch", + "python3-configobj-5.0.6-11.el8.noarch", + "python3-cryptography-2.3-3.el8.x86_64", + "python3-dateutil-2.6.1-6.el8.noarch", + "python3-dbus-1.2.4-15.el8.x86_64", + "python3-decorator-4.2.1-2.el8.noarch", + "python3-dmidecode-3.12.2-15.el8.x86_64", + "python3-dnf-4.2.23-2.el8.noarch", + "python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch", + "python3-dnf-plugins-core-4.0.17-2.el8.noarch", + "python3-ethtool-0.14-3.el8.x86_64", + "python3-firewall-0.8.2-1.el8.noarch", + "python3-gobject-base-3.28.3-2.el8.x86_64", + "python3-gpg-1.13.1-3.el8.x86_64", + "python3-hawkey-0.48.0-2.el8.x86_64", + "python3-hwdata-2.3.6-3.el8.noarch", + "python3-idna-2.5-5.el8.noarch", + "python3-iniparse-0.4-31.el8.noarch", + "python3-inotify-0.9.6-13.el8.noarch", + "python3-jinja2-2.10.1-2.el8_0.noarch", + "python3-jsonpatch-1.21-2.el8.noarch", + "python3-jsonpointer-1.10-11.el8.noarch", + "python3-jsonschema-2.6.0-4.el8.noarch", + "python3-jwt-1.6.1-2.el8.noarch", + "python3-libcomps-0.1.11-4.el8.x86_64", + "python3-libdnf-0.48.0-2.el8.x86_64", + "python3-librepo-1.12.0-1.el8.x86_64", + "python3-libs-3.6.8-30.el8.x86_64", + "python3-libselinux-2.9-3.el8.x86_64", + "python3-libsemanage-2.9-3.el8.x86_64", + "python3-libxml2-2.9.7-8.el8.x86_64", + "python3-linux-procfs-0.6.2-2.el8.noarch", + "python3-markupsafe-0.23-19.el8.x86_64", + "python3-netifaces-0.10.6-4.el8.x86_64", + "python3-newt-0.52.20-11.el8.x86_64", + "python3-nftables-0.9.3-14.el8.x86_64", + "python3-oauthlib-2.1.0-1.el8.noarch", + "python3-perf-4.18.0-221.el8.x86_64", + "python3-pip-9.0.3-17.el8.noarch", + "python3-pip-wheel-9.0.3-17.el8.noarch", + "python3-ply-3.9-8.el8.noarch", + "python3-policycoreutils-2.9-9.el8.noarch", + "python3-prettytable-0.7.2-14.el8.noarch", + "python3-pyOpenSSL-18.0.0-1.el8.noarch", + "python3-pyasn1-0.3.7-6.el8.noarch", + "python3-pycparser-2.14-14.el8.noarch", + "python3-pyserial-3.1.1-8.el8.noarch", + "python3-pysocks-1.6.8-3.el8.noarch", + "python3-pytz-2017.2-9.el8.noarch", + "python3-pyudev-0.21.0-7.el8.noarch", + "python3-pyyaml-3.12-12.el8.x86_64", + "python3-requests-2.20.0-2.1.el8_1.noarch", + "python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch", + "python3-rpm-4.14.3-4.el8.x86_64", + "python3-schedutils-0.6-6.el8.x86_64", + "python3-setools-4.3.0-1.el8.x86_64", + "python3-setuptools-39.2.0-6.el8.noarch", + "python3-setuptools-wheel-39.2.0-6.el8.noarch", + "python3-six-1.11.0-8.el8.noarch", + "python3-slip-0.6.4-11.el8.noarch", + "python3-slip-dbus-0.6.4-11.el8.noarch", + "python3-subscription-manager-rhsm-1.27.9-1.el8.x86_64", + "python3-syspurpose-1.27.9-1.el8.x86_64", + "python3-unbound-1.7.3-14.el8.x86_64", + "python3-urllib3-1.24.2-4.el8.noarch", + "python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64", + "readline-7.0-10.el8.x86_64", + "redhat-release-8.3-0.2.el8.x86_64", + "redhat-release-eula-8.3-0.2.el8.x86_64", + "rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch", + "rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.x86_64", + "rng-tools-6.8-3.el8.x86_64", + "rootfiles-8.1-22.el8.noarch", + "rpm-4.14.3-4.el8.x86_64", + "rpm-build-libs-4.14.3-4.el8.x86_64", + "rpm-libs-4.14.3-4.el8.x86_64", + "rpm-plugin-selinux-4.14.3-4.el8.x86_64", + "rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64", + "rsyslog-8.1911.0-6.el8.x86_64", + "sed-4.5-2.el8.x86_64", + "selinux-policy-3.14.3-48.el8.noarch", + "selinux-policy-targeted-3.14.3-48.el8.noarch", + "setup-2.12.2-6.el8.noarch", + "sg3_utils-1.44-5.el8.x86_64", + "sg3_utils-libs-1.44-5.el8.x86_64", + "shadow-utils-4.6-10.el8.x86_64", + "shared-mime-info-1.9-3.el8.x86_64", + "slang-2.3.2-3.el8.x86_64", + "snappy-1.1.7-5.el8.x86_64", + "sqlite-libs-3.26.0-10.el8.x86_64", + "squashfs-tools-4.3-19.el8.x86_64", + "sssd-client-2.3.0-2.el8.x86_64", + "sssd-common-2.3.0-2.el8.x86_64", + "sssd-kcm-2.3.0-2.el8.x86_64", + "sssd-nfs-idmap-2.3.0-2.el8.x86_64", + "subscription-manager-1.27.9-1.el8.x86_64", + "subscription-manager-rhsm-certificates-1.27.9-1.el8.x86_64", + "sudo-1.8.29-6.el8.x86_64", + "systemd-239-36.el8.x86_64", + "systemd-libs-239-36.el8.x86_64", + "systemd-pam-239-36.el8.x86_64", + "systemd-udev-239-36.el8.x86_64", + "teamd-1.29-5.el8.x86_64", + "trousers-0.3.14-4.el8.x86_64", + "trousers-lib-0.3.14-4.el8.x86_64", + "tuned-2.14.0-2.el8.noarch", + "tzdata-2020a-1.el8.noarch", + "unbound-libs-1.7.3-14.el8.x86_64", + "usermode-1.113-1.el8.x86_64", + "util-linux-2.32.1-24.el8.x86_64", + "vim-minimal-8.0.1763-15.el8.x86_64", + "virt-what-1.18-6.el8.x86_64", + "which-2.21-12.el8.x86_64", + "xfsprogs-5.0.0-4.el8.x86_64", + "xkeyboard-config-2.28-1.el8.noarch", + "xz-5.2.4-3.el8.x86_64", + "xz-libs-5.2.4-3.el8.x86_64", + "yum-4.2.23-2.el8.noarch", + "zlib-1.2.11-15.el8.x86_64" + ], + "partition-table": "dos", + "partition-table-id": "0x14fc63d2", + "partitions": [ + { + "bootable": true, + "fstype": "xfs", + "label": null, + "partuuid": "14fc63d2-01", + "size": 4293918720, + "start": 1048576, + "type": "83", + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:995:992::/var/lib/chrony:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "polkitd:x:998:995:User for polkitd:/:/sbin/nologin", + "redhat:x:1000:1000::/home/redhat:/bin/bash", + "rngd:x:994:991:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sssd:x:996:993:User for sssd:/:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/etc/machine-id": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/proc": ".M.......", + "/sys": ".M.......", + "/var/log/lastlog": ".M....G..", + "/var/spool/anacron/cron.daily": ".M.......", + "/var/spool/anacron/cron.monthly": ".M.......", + "/var/spool/anacron/cron.weekly": ".M......." + }, + "missing": [ + "/etc/systemd/system/dbus-org.freedesktop.resolve1.service" + ] + }, + "services-disabled": [ + "arp-ethers.service", + "chrony-dnssrv@.timer", + "chrony-wait.service", + "console-getty.service", + "cpupower.service", + "ctrl-alt-del.target", + "debug-shell.service", + "ebtables.service", + "exit.target", + "fstrim.timer", + "halt.target", + "iprdump.service", + "iprinit.service", + "iprupdate.service", + "iprutils.target", + "kexec.target", + "nftables.service", + "poweroff.target", + "rdisc.service", + "reboot.target", + "remote-cryptsetup.target", + "rhnsd.service", + "rhsm-facts.service", + "rhsm.service", + "rngd-wake-threshold.service", + "runlevel0.target", + "runlevel6.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-resolved.service", + "tcsd.service", + "tmp.mount" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "cloud-config.service", + "cloud-final.service", + "cloud-init-local.service", + "cloud-init.service", + "crond.service", + "dbus-org.fedoraproject.FirewallD1.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dnf-makecache.timer", + "firewalld.service", + "getty@.service", + "import-state.service", + "irqbalance.service", + "kdump.service", + "loadmodules.service", + "microcode.service", + "nis-domainname.service", + "remote-fs.target", + "rhsmcertd.service", + "rngd.service", + "rsyslog.service", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "syslog.service", + "tuned.service", + "unbound-anchor.timer", + "waagent.service" + ], + "timezone": "UTC" + } +} \ No newline at end of file diff --git a/test/cases/rhel_8-x86_64-vmdk-boot.json b/test/cases/rhel_8-x86_64-vmdk-boot.json new file mode 100644 index 0000000..a1b13a8 --- /dev/null +++ b/test/cases/rhel_8-x86_64-vmdk-boot.json @@ -0,0 +1,9565 @@ +{ + "boot": { + "type": "vmware" + }, + "compose-request": { + "distro": "rhel-8", + "arch": "x86_64", + "image-type": "vmdk", + "filename": "disk.vmdk", + "blueprint": { + "name": "vmdk-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + }, + "repositories": [ + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + }, + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + } + ] + }, + "manifest": { + "sources": { + "org.osbuild.files": { + "urls": { + "sha256:0027700684ce09927aded1d2c5bb84028529141a6b418897bde37d4af348f8bb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:00cc9cd4517cbb4ad99dbce63b40b700699523550cd7f8202948af28dbe2cd9e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:0129696c208f60326723c650295167b0600791ccb2e9c3d446c4caf9adecb3d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-3.5.0-1.el8.x86_64.rpm" + }, + "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libyaml-0.1.7-5.el8.x86_64.rpm" + }, + "sha256:0391105afa53c9503b59591615bd7c98e2f7a4cd94ff4fd1451c4234522f3880": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libedit-3.1-23.20170329cvs.el8.x86_64.rpm" + }, + "sha256:0493fd81825df694be5d15685bfe4dc002de314d18f5ae47ccee769f65ea5013": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ethtool-5.0-2.el8.x86_64.rpm" + }, + "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmount-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-daemon-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libunistring-0.9.9-3.el8.x86_64.rpm" + }, + "sha256:08bf2e898b5775317d04266f4598eddbe06c424a3694b1534e3ceff088e2e8ca": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-nftables-0.9.3-14.el8.x86_64.rpm" + }, + "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:09ca7b05e26f93d35ac299dbcd865b65ec3a3d2654e1da87d2c3c0462dbe6e4a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-schedutils-0.6-6.el8.x86_64.rpm" + }, + "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugins-core-4.0.17-2.el8.noarch.rpm" + }, + "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-239-36.el8.x86_64.rpm" + }, + "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/expat-2.2.5-4.el8.x86_64.rpm" + }, + "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-libs-2.3.3-1.el8.x86_64.rpm" + }, + "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm" + }, + "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxcrypt-4.1.1-4.el8.x86_64.rpm" + }, + "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/linux-firmware-20200619-99.git3890db36.el8.noarch.rpm" + }, + "sha256:0e4b7687f0c62f4e336223b939f6cb169c8dac49eee23c53fd919e58d8f989df": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/microcode_ctl-20200609-2.el8.x86_64.rpm" + }, + "sha256:0f3b084d947bc246fe68822129b8ae1294c4187270a19f0966282baf75b34dc6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-subscription-manager-rhsm-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:0f662be3013f7958961ae70400c7ed1fb4350c823881c123a16cbb2b6b8c8f6a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/plymouth-core-libs-0.9.4-1.20200615git1e36e30.el8.x86_64.rpm" + }, + "sha256:1065049dbd53849d35db269a23be54148cbe481122381ab71b72f62e83816b26": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gobject-introspection-1.56.1-1.el8.x86_64.rpm" + }, + "sha256:10f40567d02123b71bd878ef423dd0d5dca415e806ff041c3c69b99d114fea84": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chrony-3.5-1.el8.x86_64.rpm" + }, + "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-all-langpacks-2.28-127.el8.x86_64.rpm" + }, + "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm" + }, + "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gmp-6.1.2-10.el8.x86_64.rpm" + }, + "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcc-8.3.1-5.1.el8.x86_64.rpm" + }, + "sha256:13ffce0597b689dd53f55ea0d03dd6d013246634f5c6cbcef51fa549d9734b29": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-cffi-1.11.5-5.el8.x86_64.rpm" + }, + "sha256:14098d36fe4be983fac73d04aeacf0ed7977d962e760907b89e3f80b4ca46f3f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-common-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm" + }, + "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cpio-2.12-8.el8.x86_64.rpm" + }, + "sha256:15462b748aef3c565bcf4f849c1a21c1389a8ef5e7dae94e64718865a67d46a9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-libs-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crontabs-1.11-16.20150630git.el8.noarch.rpm" + }, + "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-smime-2.2.20-2.el8.x86_64.rpm" + }, + "sha256:18d419718a99851370262584bec1b27d60cbd08845b50fbe97e1a56b71cd5ea2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-perf-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm" + }, + "sha256:1b1fe43a375a21f4c3ccf04861c122fd519d4865b9c1abc7f1973b86a0252a06": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-kcm-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-5.2.4-3.el8.x86_64.rpm" + }, + "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.x86_64.rpm" + }, + "sha256:1bc038693be7ccd59674c478176c3badce4a56f785dd0690548b087bcc7adaa1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl1000-firmware-39.31.5.1-99.el8.1.noarch.rpm" + }, + "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-25-16.el8.x86_64.rpm" + }, + "sha256:1d28eaeaa59c48e4193c709dd2a6301c2f8701138164c05371a0d8f235d14c9c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl7260-firmware-25.30.13.0-99.el8.1.noarch.rpm" + }, + "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tzdata-2020a-1.el8.noarch.rpm" + }, + "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libksba-1.3.5-7.el8.x86_64.rpm" + }, + "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsecret-0.18.6-1.el8.x86_64.rpm" + }, + "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm" + }, + "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/krb5-libs-1.18.2-3.el8.x86_64.rpm" + }, + "sha256:1faa85c12115426d8afc51c8bed2e71bf1dd87063e25052bcf85c17dbc0d9ea4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-network-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-2.02-84.el8.x86_64.rpm" + }, + "sha256:204e4dbaf357e12ff041c1c203b2527f7d178905ebae53db3c12e57d28fcbf46": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl135-firmware-18.168.6.1-99.el8.1.noarch.rpm" + }, + "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-common-2.28-127.el8.x86_64.rpm" + }, + "sha256:206cba480b58c70348584010d547d21bcd84c6094fd3980e22c6b640da12704c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-syspurpose-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:206de21c82d76de550bcc1959138472640b0a950a311b753203f5dfe5b201b7b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipcalc-0.2.4-4.el8.x86_64.rpm" + }, + "sha256:20dec130e4fd0a2146443791ca7ade6e079cea691d93711813d5f483b691c55a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ethtool-0.14-3.el8.x86_64.rpm" + }, + "sha256:2146bf4beddd81d4ef842a99f1b52cd827713393e266a78608be56171ea79bc6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxslt-1.1.32-5.el8.x86_64.rpm" + }, + "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-5.33-16.el8.x86_64.rpm" + }, + "sha256:22585bd5d69c5e0a06fe00a6844da2e5d311512374c1d176f17f41caab7e121f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/parted-3.2-38.el8.x86_64.rpm" + }, + "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:22942af5dab657f662538619ab84a260d3c92e3498694fca2a126100ff9ab316": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pciutils-3.6.4-2.el8.x86_64.rpm" + }, + "sha256:231bc0eeb8fb127f0a4da5a4da1edd226067d5029a0b4fd6ef72c246ccfc31c0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libldb-2.1.3-2.el8.x86_64.rpm" + }, + "sha256:2334cb78002aa30feeb11549d51e204aa868f5538a09957850082d7efb15b00f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/c-ares-1.13.0-5.el8.x86_64.rpm" + }, + "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libcomps-0.1.11-4.el8.x86_64.rpm" + }, + "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-3.6.8-30.el8.x86_64.rpm" + }, + "sha256:252d46d58e0c02cbe2d2485488bd63ea7129964643787557eae832102541f84f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl5150-firmware-8.24.2.2-99.el8.1.noarch.rpm" + }, + "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tuned-2.14.0-2.el8.noarch.rpm" + }, + "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxkbcommon-0.9.1-1.el8.x86_64.rpm" + }, + "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-2.0.4-10.el8.x86_64.rpm" + }, + "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-ng-0.7.9-5.el8.x86_64.rpm" + }, + "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libattr-2.4.48-3.el8.x86_64.rpm" + }, + "sha256:289e2a39b2a29163a29da35936d4b484fe356d0a6d519524023e79686daf501b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-client-4.3.6-41.el8.x86_64.rpm" + }, + "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mpfr-3.1.6-1.el8.x86_64.rpm" + }, + "sha256:2a65cec3eb67ba7645dd97cf3f3811cd5fb06eea2526d36a683d3fdaa0f2825e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cronie-anacron-1.5.2-4.el8.x86_64.rpm" + }, + "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre2-10.32-2.el8.x86_64.rpm" + }, + "sha256:2cfcc3d6163dfaf7ce76998be992bd0b70dd7cbb838430cecf2aff04cd435d24": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/virt-what-1.18-6.el8.x86_64.rpm" + }, + "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pyOpenSSL-18.0.0-1.el8.noarch.rpm" + }, + "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.x86_64.rpm" + }, + "sha256:2e90748420a7d28b3063df04de129e79ea85310a8d9cf2faf0a2e7b8430307c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-client-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:2eba2dc51974271244bdeaaf17c6e8fac3c35b62914b680076bdc4a32272df01": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpath_utils-0.2.1-39.el8.x86_64.rpm" + }, + "sha256:2eed977380b41885d4f7ad33e122abbb9ea7391c1255d182451efd457688c8b2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnfsidmap-2.3.3-35.el8.x86_64.rpm" + }, + "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-8.30-8.el8.x86_64.rpm" + }, + "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kpartx-0.8.4-2.el8.x86_64.rpm" + }, + "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpsl-0.20.2-6.el8.x86_64.rpm" + }, + "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm" + }, + "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-dicts-2.9.6-15.el8.x86_64.rpm" + }, + "sha256:348b7d66a20015563489babbc3850928587575d0acde7c61d55480ebf0f3820d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-squash-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:350657e984b1736bb4a8c9cc01b772517a4194467d6db84110c1cc42131f1cae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/initscripts-10.00.8-1.el8.x86_64.rpm" + }, + "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/zlib-1.2.11-15.el8.x86_64.rpm" + }, + "sha256:3730f3f8d3332836f278250408891cb097379a5d7745fe698b1d418e9e13d335": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-clients-8.0p1-5.el8.x86_64.rpm" + }, + "sha256:37504d807ac0bb6c429d7be9c636f7b755464023511d856846dbb9deb8f6a76d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/logrotate-3.14.0-4.el8.x86_64.rpm" + }, + "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libseccomp-2.4.3-1.el8.x86_64.rpm" + }, + "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-2.26-4.el8.x86_64.rpm" + }, + "sha256:38affe91361bf56b84490d97c7e3f815965cf8d2bbb222c6c045af4bf2dff736": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/langpacks-en-1.0-12.el8.noarch.rpm" + }, + "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-1.18-1.el8.x86_64.rpm" + }, + "sha256:398c1abc82097370f46e6fdf4dae63870e1f767b24d0130c79ed67ea3a67233a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sg3_utils-1.44-5.el8.x86_64.rpm" + }, + "sha256:39e59e9a2460e3b6fe147501e79a57042f161c217963be212359031bb8b18daa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/jansson-2.11-3.el8.x86_64.rpm" + }, + "sha256:3a1058c6ba468722090a74002a3239161771b0d8b444975bff891afd45bb672a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsysfs-2.1.0-24.el8.x86_64.rpm" + }, + "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-configobj-5.0.6-11.el8.noarch.rpm" + }, + "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/procps-ng-3.3.15-2.el8.x86_64.rpm" + }, + "sha256:3b087daa7e9de69c051f22f9df1ef00867ffddd99357bc3a215ccde76a13c02f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtalloc-2.3.1-2.el8.x86_64.rpm" + }, + "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/filesystem-3.8-3.el8.x86_64.rpm" + }, + "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-plugins-core-4.0.17-2.el8.noarch.rpm" + }, + "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-8.3-0.2.el8.x86_64.rpm" + }, + "sha256:3d807ee0bd43ba2cfbc5fa3678963fb706898bd41588a29330c315a9d88ab2a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipset-libs-7.1-1.el8.x86_64.rpm" + }, + "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ima-evm-utils-1.1-5.el8.x86_64.rpm" + }, + "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tar-1.30-5.el8.x86_64.rpm" + }, + "sha256:3edf7d29e530e6568416d4455e9fbaa511aba236c603da9928e689fae77b9874": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-netifaces-0.10.6-4.el8.x86_64.rpm" + }, + "sha256:40010441888b72dd077d4d6790f837236701b93c8b31da5dbf65c700fd2571fd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-config-generic-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:411d65fe9e463458af055d06a4a89a1d822d26049198615c0afc9741c426c77c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cronie-1.5.2-4.el8.x86_64.rpm" + }, + "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gpg-1.13.1-3.el8.x86_64.rpm" + }, + "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-common-4.3.6-41.el8.noarch.rpm" + }, + "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/util-linux-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xfsprogs-5.0.0-4.el8.x86_64.rpm" + }, + "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:4403330cdf4f15d75d727e2ac8c3358ff6a13209b3395dfac2131984e443eb23": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/snappy-1.1.7-5.el8.x86_64.rpm" + }, + "sha256:4405d32322fd496c65f57a12b6037fd75b49957269dbf9cb0417b598162f7407": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iproute-5.3.0-5.el8.x86_64.rpm" + }, + "sha256:441efa6f0b9a9905ef11ec987d6db89e7dba2857060020c4554e32db3e59fce5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-libs-0.115-11.el8.x86_64.rpm" + }, + "sha256:44e81330b185085f871e9fbf8fae27c8de411600c032aca371dc6d39a3e261da": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_sudo-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libzstd-1.4.4-1.el8.x86_64.rpm" + }, + "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtirpc-1.1.4-4.el8.x86_64.rpm" + }, + "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm" + }, + "sha256:474a66a4cf3d5a00286be40c15bad69ea1ac63a9424a1ff44f20a548a7686f7a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libfastjson-0.99.8-2.el8.x86_64.rpm" + }, + "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm" + }, + "sha256:4882ff53265bdeabb69f1ac9c585454b28ae799ab31fa72c9eb10bdbe1f41d9a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-tools-libs-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:4931d78c496eaaa8e6b6bbec2b4750da52b9fc7e989ae89b7c1fa2a6f40ff7fa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm" + }, + "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libidn2-2.2.0-1.el8.x86_64.rpm" + }, + "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pyudev-0.21.0-7.el8.noarch.rpm" + }, + "sha256:4b8cd13404adac1a30a105e894a733f7c79bfac1a125b8cd095e6ba9c1d056f9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-tui-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-modules-2.02-84.el8.noarch.rpm" + }, + "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgpg-error-1.31-1.el8.x86_64.rpm" + }, + "sha256:4ca553b0c0f6dc130e05e2011cdf1f52132e8f70bd93be8eee4e415b2cac0c56": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-librepo-1.12.0-1.el8.x86_64.rpm" + }, + "sha256:4cb9b7259f44c8ca83c86dfb5c7a97cc33bf21898efe91769ea214458169a5c8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-common-3.2.1-12.el8.x86_64.rpm" + }, + "sha256:4ccbefcbe75decfef38ccae5d8ff92ba6b00e8232b64ec46ae0c0be8ae20ec50": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libxml2-2.9.7-8.el8.x86_64.rpm" + }, + "sha256:4ce17c90ad64c2ca85191caa990db8eb0aec7cde24a26a89294c5821cfd20e5f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iprutils-2.4.19-1.el8.x86_64.rpm" + }, + "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-libs-1.0.6-26.el8.x86_64.rpm" + }, + "sha256:4d54749c92887ab059c768ada265c0f64e292594846b183d1fdfa9b29fff3ac1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/plymouth-0.9.4-1.20200615git1e36e30.el8.x86_64.rpm" + }, + "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-libs-1.5.10-6.el8.x86_64.rpm" + }, + "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shared-mime-info-1.9-3.el8.x86_64.rpm" + }, + "sha256:4ed1a6294eea09a3a7e15683267ca5d383e4c2b27fd57fe05d2666e0e6c3d26f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtdb-1.4.3-1.el8.x86_64.rpm" + }, + "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/npth-1.5-4.el8.x86_64.rpm" + }, + "sha256:507442831068c749ba21b22bd96993a1a2a6c74dd53c55f34c7f81a21554c82d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libref_array-0.1.5-39.el8.x86_64.rpm" + }, + "sha256:50c0d1828a9e8db638c09d88afb0828d98349027ce498ee7df74e7ff6052ac1d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdhash-0.5.0-39.el8.x86_64.rpm" + }, + "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib2-2.56.4-8.el8.x86_64.rpm" + }, + "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm" + }, + "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-eula-8.3-0.2.el8.x86_64.rpm" + }, + "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-rpm-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-4.4.19-12.el8.x86_64.rpm" + }, + "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-c-0.13.1-0.2.el8.x86_64.rpm" + }, + "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:539abfc369a17023658486f7b4a48c8db159cc4d617b27da256ddac6e15ea687": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpipeline-1.5.0-2.el8.x86_64.rpm" + }, + "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpng-1.6.34-5.el8.x86_64.rpm" + }, + "sha256:53fb6834e2e439e79225d957c4643922da74836417b5558d0c2943b546b26e57": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libndp-1.7-3.el8.x86_64.rpm" + }, + "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:56cc340c88cabacd9a329f80edee141154dbf84808894e43a937247394623cf0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl6000-firmware-9.221.4.1-99.el8.1.noarch.rpm" + }, + "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-build-libs-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm" + }, + "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcroco-0.6.12-4.el8.x86_64.rpm" + }, + "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-hawkey-0.48.0-2.el8.x86_64.rpm" + }, + "sha256:5a85222c8e9997a8b609b915a8fbae756de9b9bff732db852fb15fe0524f2d86": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dbus-1.2.4-15.el8.x86_64.rpm" + }, + "sha256:5ac24d7513e9daa137064985cd8a8774c94aa8a6c07e2814d0c56ddde33fcc8d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nftables-0.9.3-14.el8.x86_64.rpm" + }, + "sha256:5bdb82a14d3604899324afc296aa7e7179a15788e2514348eea81b46934d6a3c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/authselect-libs-1.2.1-2.el8.x86_64.rpm" + }, + "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgomp-8.3.1-5.1.el8.x86_64.rpm" + }, + "sha256:5cbe058e6d2177f88006fed866e6b1565d6024a12c311ae8eaa21008f76074b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl3160-firmware-25.30.13.0-99.el8.1.noarch.rpm" + }, + "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lz4-libs-1.8.3-2.el8.x86_64.rpm" + }, + "sha256:5ef47eb6a042a13c902764907692c1068eb0f69153b47bc85792bef74bfa852b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rsyslog-8.1911.0-6.el8.x86_64.rpm" + }, + "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-libs-5.33-16.el8.x86_64.rpm" + }, + "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lua-libs-5.3.4-11.el8.x86_64.rpm" + }, + "sha256:61498bdebac578394eae8667e16ad7393309f7144266d4331f4c17f276b15fe0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/plymouth-scripts-0.9.4-1.20200615git1e36e30.el8.x86_64.rpm" + }, + "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm" + }, + "sha256:61cf7338e12188f787c7162e2cd669c895e4e2cf4ae86c9debcd56fd3b8a8322": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnfnetlink-1.0.1-13.el8.x86_64.rpm" + }, + "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-6.1-7.20180224.el8.x86_64.rpm" + }, + "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/curl-7.61.1-12.el8.x86_64.rpm" + }, + "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nettle-3.4.1-2.el8.x86_64.rpm" + }, + "sha256:65dc391ab1c96d1009ef2e7706eabacd5cf84f2a47ea1cc87f6f5e2c1324b178": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsepol-2.9-1.el8.x86_64.rpm" + }, + "sha256:671852e4f32de6278dd384d35d1dc799ab5d3e8ef718e89e516452cbcba068f0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sg3_utils-libs-1.44-5.el8.x86_64.rpm" + }, + "sha256:68362500ad574eb2df43a3d260ab8d0f3ce1ae5f34e66d71f2478fef8e17cb4a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/less-530-1.el8.x86_64.rpm" + }, + "sha256:6844197fd8ffdb16cf94ab77709aa2954cb39512435a377401ebce340d06c7de": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/irqbalance-1.4.0-4.el8.x86_64.rpm" + }, + "sha256:686015c78247edec0a0f5e0d2cbbf02d9feea162e5967ed5b5be35d3951b1f3d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dmidecode-3.2-6.el8.x86_64.rpm" + }, + "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-5.3.28-39.el8.x86_64.rpm" + }, + "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/freetype-2.9.1-4.el8.x86_64.rpm" + }, + "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpwquality-1.4.0-9.el8.x86_64.rpm" + }, + "sha256:6d0dcbaa45457461dd5c4afe97689fa2baf5f95551bbe5e827a152dee545a51d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-libnm-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-7.20180224.el8.x86_64.rpm" + }, + "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-0.19.8.1-17.el8.x86_64.rpm" + }, + "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hwdata-0.314-8.5.el8.noarch.rpm" + }, + "sha256:713ec69b972a8e88622b3fcd3b84fccdbd6c333b68b6c52151c2350edad2576a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgudev-232-4.el8.x86_64.rpm" + }, + "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openldap-2.4.46-15.el8.x86_64.rpm" + }, + "sha256:72fe0e1837aa503049fada31c6e8ae73a4e550be2ddfd73303fb84e955fcc268": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl2000-firmware-18.168.6.1-99.el8.1.noarch.rpm" + }, + "sha256:72ff3a3f6c52849a40cb24f9694115a68cc939970a00c374b4c73b1e4c5dc20c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/squashfs-tools-4.3-19.el8.x86_64.rpm" + }, + "sha256:73c29baa2cd94f1ae6a1d1333818969a281b16dd4262f413ad284c5333719a4d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/groff-base-1.22.3-18.el8.x86_64.rpm" + }, + "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libdnf-0.48.0-2.el8.x86_64.rpm" + }, + "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:74d05cb72dc6740be73480e68b15b209d7e7a2bf7d7d54e0d3a2dc261ce64e4b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnetfilter_conntrack-1.0.6-5.el8.x86_64.rpm" + }, + "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.x86_64.rpm" + }, + "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsemanage-2.9-3.el8.x86_64.rpm" + }, + "sha256:769b1ac34ba3aa35337b734b8548dcf9e8b41476b9b2093756341bcbd5969a36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/firewalld-filesystem-0.8.2-1.el8.noarch.rpm" + }, + "sha256:76ca09c73360f48d4b6fe4d4ee0aa974ef53531222df8e363d8006ec469051cf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-core-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-libs-1.02.171-3.el8.x86_64.rpm" + }, + "sha256:78926ec2c75db8bcbdd4f4fbd8c06b373f85bd7ecce0e6aac8c75dda95fcae2c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/biosdevname-0.7.3-2.el8.x86_64.rpm" + }, + "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-utils-5.3.28-39.el8.x86_64.rpm" + }, + "sha256:798420bbda79fd0b9312abac25efad6b28957c512497f37f4beddad5d67dd66a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdaemon-0.14-15.el8.x86_64.rpm" + }, + "sha256:7a7a238ea529165348acef1d1a20c1d47c1ef5838d8501f3879bb130c1b73e06": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-cryptography-2.3-3.el8.x86_64.rpm" + }, + "sha256:7b6856dc4dc1d88d9c3c9597fb824b5776af59f045087bdb2713d64045216a36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/man-db-2.7.6.1-17.el8.x86_64.rpm" + }, + "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pinentry-1.1.0-2.el8.x86_64.rpm" + }, + "sha256:7c0b2b064dad700cba2754b46f483e3e59aaf798740470df1daad3d5239fb893": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/passwd-0.80-3.el8.x86_64.rpm" + }, + "sha256:7c292b3bb74d12d77e1e22221c55696a0c5f50304040b3a706c2164d5b6a42e4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_nss_idmap-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:7c89c2d055013779252c12643e8f0b3731f4dd5e2b61d9d81233a0ee298abb36": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libteam-1.29-5.el8.x86_64.rpm" + }, + "sha256:7d07d9055f557acf574e238327f003dc1a77dd119406e2326c844d17b818417c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xmlsec1-openssl-1.2.25-4.el8.x86_64.rpm" + }, + "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/brotli-1.0.6-2.el8.x86_64.rpm" + }, + "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm" + }, + "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libevent-2.1.8-5.el8.x86_64.rpm" + }, + "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-slip-0.6.4-11.el8.noarch.rpm" + }, + "sha256:802263173d9c487fc3ca584cc2a5b7b7bb49ac0d12d9026b3246d50fd0888fb1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-glib-0.110-2.el8.x86_64.rpm" + }, + "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/popt-1.16-14.el8.x86_64.rpm" + }, + "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.x86_64.rpm" + }, + "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-libs-1.8.4-14.el8.x86_64.rpm" + }, + "sha256:831a51570e09368c7b720567827b74a46ed5a01c7c39906c185c385bc50079d9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpciaccess-0.14-1.el8.x86_64.rpm" + }, + "sha256:860676d4231afa3e6b23933d8dd65e5f7f5823910791e6481d2440ae4ec64c53": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtevent-0.10.2-2.el8.x86_64.rpm" + }, + "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libassuan-2.5.1-3.el8.x86_64.rpm" + }, + "sha256:86d305a1466a596f8b436561d674f2510f268bed9e73f56c87da1dd120f99c18": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gobject-base-3.28.3-2.el8.x86_64.rpm" + }, + "sha256:8716781f69e8f2bf3f171ed6a34a012f79dc76ce0bcfa318fa0b02d488173ee1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-ebtables-1.8.4-14.el8.x86_64.rpm" + }, + "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grubby-8.40-41.el8.x86_64.rpm" + }, + "sha256:879cb96ce1591886728a45bfb6dbd6fcf48a43757c42f5481019157037046b61": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-langpack-en-2.28-127.el8.x86_64.rpm" + }, + "sha256:8af00d4b0857240310156e05123e07795e6573da7c1fe9e7fd83b51f13971725": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-0.115-11.el8.x86_64.rpm" + }, + "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libfdisk-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pycparser-2.14-14.el8.noarch.rpm" + }, + "sha256:8d371e753071edc796d2eadb8278980290511be6279fdf46649c81b859497d6a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/prefixdevname-0.1.0-6.el8.x86_64.rpm" + }, + "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpcap-1.9.1-4.el8.x86_64.rpm" + }, + "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/unbound-libs-1.7.3-14.el8.x86_64.rpm" + }, + "sha256:8eb3370fe641e329b03838e560f45ee290b273dcccfa182d97ad2dbff59b47fd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl6050-firmware-41.28.5.1-99.el8.1.noarch.rpm" + }, + "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-libs-2.9.7-12.el8.x86_64.rpm" + }, + "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm" + }, + "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libacl-2.2.53-1.el8.x86_64.rpm" + }, + "sha256:947b4e4eebec21501ca62e2a7ff9baae0e4e7c59584fbba4b6276a402cfbb45b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/vim-minimal-8.0.1763-15.el8.x86_64.rpm" + }, + "sha256:9487bff6bb16e7326c8b805751580b4593220ba19b06515c69de83fee8e3bb1f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libselinux-2.9-3.el8.x86_64.rpm" + }, + "sha256:948e61e32986303f12f8dbe40bc44674287b3906a54dadae5e3dfd2ccba88fac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kexec-tools-2.0.20-29.el8.x86_64.rpm" + }, + "sha256:950b6b41580f4c35a108345c1c8d9d3930cc95a2c4fe4b726f02bce67532151d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl6000g2a-firmware-18.168.6.1-99.el8.1.noarch.rpm" + }, + "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-0.3.0-5.el8.x86_64.rpm" + }, + "sha256:959fcb0016788a2b1ee55f0801c1490b196416579bc9ac9da9e38786e6c78ff6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl105-firmware-18.168.6.1-99.el8.1.noarch.rpm" + }, + "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-slip-dbus-0.6.4-11.el8.noarch.rpm" + }, + "sha256:97c8af6f58e3d14317036bd3ed2cbc498803c91c55b9dc0e8f0fddea7ac929e3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-modules-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chkconfig-1.13-2.el8.x86_64.rpm" + }, + "sha256:98a589d7e1cdea9d974aa43f688e55333eed11ce7cb2037d45cc2e69bce579b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/usermode-1.113-1.el8.x86_64.rpm" + }, + "sha256:995a5401cd86404d14d08c0aeafeaa8da3f540b1806f9d0e233d75dec9e45c74": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libmaxminddb-1.2.0-10.el8.x86_64.rpm" + }, + "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:998c3e82a6bb9e040d225d8e85b5b55316d2ca92fcbb4d2ad0e6fa9e896c5cdb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libmspack-0.7-0.3.alpha.el8.4.x86_64.rpm" + }, + "sha256:99fa92b5d1e0d335fb2bb961ef39988b50968350b899e8790cead73c9a0bec65": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-rhsm-certificates-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm" + }, + "sha256:9a9ca6857f517f1249d2eb496fe904590d6203e4a9547a28e0b23f21c4cae24a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-pkla-compat-0.1-12.el8.x86_64.rpm" + }, + "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdnf-0.48.0-2.el8.x86_64.rpm" + }, + "sha256:9c5594fcac97c0f8813d7a188e2368e3b1095025fc4a0ecbd5d17e54c0c93f97": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmnl-1.0.4-6.el8.x86_64.rpm" + }, + "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-2.9.6-15.el8.x86_64.rpm" + }, + "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstdc++-8.3.1-5.1.el8.x86_64.rpm" + }, + "sha256:9d9d1bdfba4cd852f90232ebe2c4247e7b3a88c4476578c820788a91d6838e55": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rng-tools-6.8-3.el8.x86_64.rpm" + }, + "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64.rpm" + }, + "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libelf-0.180-1.el8.x86_64.rpm" + }, + "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ply-3.9-8.el8.noarch.rpm" + }, + "sha256:a01bc8ab29f40d5e9f03929cee7a796804d63fda3c471054a67d1fd1e5577f6c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-team-1.26.0-0.2.el8.x86_64.rpm" + }, + "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcrypt-1.8.5-4.el8.x86_64.rpm" + }, + "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-0.3.14-4.el8.x86_64.rpm" + }, + "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-glib-1.4.4-1.el8.x86_64.rpm" + }, + "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-libs-25-16.el8.x86_64.rpm" + }, + "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/os-prober-1.74-6.el8.x86_64.rpm" + }, + "sha256:a3dedf8c077b4656d3cd4ef641e696397a3fff83ee8b14f0e3fc69d7c10cebcf": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lzo-2.08-14.el8.x86_64.rpm" + }, + "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm" + }, + "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libss-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librhsm-0.0.3-3.el8.x86_64.rpm" + }, + "sha256:a8961c50502aa02071c043a16f93399ac6794a058a0ef42be889abe60f35985b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iputils-20180629-2.el8.x86_64.rpm" + }, + "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcomps-0.1.11-4.el8.x86_64.rpm" + }, + "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm" + }, + "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setup-2.12.2-6.el8.noarch.rpm" + }, + "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:ac2800369b7f4dc05a8fec452eabedf02f153c11e188a1e80157e35592305690": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-cli-3.5.0-1.el8.x86_64.rpm" + }, + "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rootfiles-8.1-22.el8.noarch.rpm" + }, + "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-minimal-2.02-84.el8.x86_64.rpm" + }, + "sha256:ad9b3b98ace87913e9487fceaae165faffb81e9c32400a72e08cc752cab0d037": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/authselect-1.2.1-2.el8.x86_64.rpm" + }, + "sha256:af495353f000008aab42640530c0c9005aaf60f0d4b4cf1a9b66b07bfc5b5881": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-tools-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hardlink-1.3-6.el8.x86_64.rpm" + }, + "sha256:b05032d419c29bfbe60b3495dab9b368865e2154b1b25d87b1e4f5b379226747": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnftnl-1.1.5-4.el8.x86_64.rpm" + }, + "sha256:b156691caa225f0025533a68eeb9a2cf3883062dd209ede9ec07727b358171cc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/teamd-1.29-5.el8.x86_64.rpm" + }, + "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxml2-2.9.7-8.el8.x86_64.rpm" + }, + "sha256:b169780b212062e9b9564d7c033f0895f98955c42312f1a023e02277966916e6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libdrm-2.4.101-1.el8.x86_64.rpm" + }, + "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtasn1-4.13-3.el8.x86_64.rpm" + }, + "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnutls-3.6.14-3.el8.x86_64.rpm" + }, + "sha256:b2dcbd3b81196b16e33054d31c0129c432cf59fb591035845cc299bbb46000c1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuser-0.62-23.el8.x86_64.rpm" + }, + "sha256:b446b1469bd535cf94e555525f40fa751b1343d89d589f3cff30ee2d7c38258e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hdparm-9.54-2.el8.x86_64.rpm" + }, + "sha256:b4e89276818abec218c909ca961db9bb2e09b1fc609ff280e6c05227143fa24d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-newt-0.52.20-11.el8.x86_64.rpm" + }, + "sha256:b55b77fb38d84685cef6638240daa54235fce156176c820a3c3b980bf414c5f4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl5000-firmware-8.83.5.1_1-99.el8.1.noarch.rpm" + }, + "sha256:b59cdea55a890a10f484d8596e244a18455ee82920c7e466991801d24c4718cd": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lshw-B.02.19.2-2.el8.x86_64.rpm" + }, + "sha256:b5fc6f35798edccd0390e54fce40290936c3699227e79cc6d1a42d803358fd03": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-8.0p1-5.el8.x86_64.rpm" + }, + "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-pam-239-36.el8.x86_64.rpm" + }, + "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libreport-filesystem-2.9.5-11.el8.x86_64.rpm" + }, + "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-2.2.20-2.el8.x86_64.rpm" + }, + "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/basesystem-11-5.el8.noarch.rpm" + }, + "sha256:b9a17114d551cc8259eea6996b6871ec36675330fdb1eb16db529e6f8a9c34d5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lsscsi-0.30-1.el8.x86_64.rpm" + }, + "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/which-2.21-12.el8.x86_64.rpm" + }, + "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pigz-2.4-4.el8.x86_64.rpm" + }, + "sha256:bed436b103161f7d8f61b617c84f3a7b5509f1d00c8425900a88c222b1331b31": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:beea3f8c88b9c0a74d75622aa71467f51c457d1acf0ff557f7cd0e2ae3dfafe3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_certmap-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-libs-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd-2.9.4-2.el8.x86_64.rpm" + }, + "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsolv-0.7.11-1.el8.x86_64.rpm" + }, + "sha256:bfe5c8ea12012936cc59981a10728e95d5fdadd3e893457af7a27c464d8cb6ba": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libestr-0.1.10-1.el8.x86_64.rpm" + }, + "sha256:c0025c0b08ed82c640fa470e62743aed17a33f7948ed0cc969892d7c149206b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-nfs-idmap-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libs-0.180-1.el8.x86_64.rpm" + }, + "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-libs-1.1.1g-9.el8.x86_64.rpm" + }, + "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-libs-1.18-1.el8.x86_64.rpm" + }, + "sha256:c193b87ad1690e81ca35ec1f1f7dff94f179907ed13d5b7936c189ff5f8f2bae": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipset-7.1-1.el8.x86_64.rpm" + }, + "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-libs-3.26.0-10.el8.x86_64.rpm" + }, + "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm" + }, + "sha256:c24a1814f0fff7edcbd5cdca29571e8a79c5584e8ef300e89aef906b35c8a67d": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bind-export-libs-9.11.20-3.el8.x86_64.rpm" + }, + "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-pkcs11-0.4.10-2.el8.x86_64.rpm" + }, + "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-idna-2.5-5.el8.noarch.rpm" + }, + "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-asn1crypto-0.24.0-3.el8.noarch.rpm" + }, + "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcom_err-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:c4279ad2915f4ce1806c4121675e49d2b525bb6e977d487dc2ad138fce8c2734": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_idmap-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:c46ee71ba426e0964b2264bdf18fc4cff4d7815206c9e8a471bdf678e65c24b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libini_config-1.3.1-39.el8.x86_64.rpm" + }, + "sha256:c5098f41849af65b808baac594539440fcdffea7afce4239eb41885eccfd67e2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/firewalld-0.8.2-1.el8.noarch.rpm" + }, + "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-hwdata-2.3.6-3.el8.noarch.rpm" + }, + "sha256:c5e978963bda83e9321563bb18f69f3753f2eb510dfdafdc6c4e2856dc6b6302": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugin-subscription-manager-1.27.9-1.el8.x86_64.rpm" + }, + "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm" + }, + "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pam-1.3.1-11.el8.x86_64.rpm" + }, + "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:c9b3c6dcb4133c3051e3f75978f994aae4c0ad84dd1abbae7fcba497ee524603": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-firewall-0.8.2-1.el8.noarch.rpm" + }, + "sha256:cac59a5629e7229653c29c0d575bd8f8c2d3774474615eb65615109afb151981": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libbasicobjects-0.1.1-39.el8.x86_64.rpm" + }, + "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-1.1.1g-9.el8.x86_64.rpm" + }, + "sha256:cc3df9449002eacd595a73df52eb973d3b37e4c03d4669c7dce6ce7a26dabd6b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm" + }, + "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmetalink-0.1.3-7.el8.x86_64.rpm" + }, + "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/findutils-4.6.0-20.el8.x86_64.rpm" + }, + "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/acl-2.2.53-1.el8.x86_64.rpm" + }, + "sha256:cf6220736fdd005ba7c67ccb5d5d8a1d9c35718e3c13e79c80967866968d7344": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl100-firmware-39.31.5.1-99.el8.1.noarch.rpm" + }, + "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsigsegv-2.11-5.el8.x86_64.rpm" + }, + "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-unbound-1.7.3-14.el8.x86_64.rpm" + }, + "sha256:d186f806ed9c841a385f7acf194c20b78616396414da9131982e469f065619b8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_autofs-2.3.0-2.el8.x86_64.rpm" + }, + "sha256:d2b777ea98ee644997029994136723cf4fa78e97afeaceab39f76b545b51792b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dmidecode-3.12.2-15.el8.x86_64.rpm" + }, + "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm" + }, + "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-libs-0.19.8.1-17.el8.x86_64.rpm" + }, + "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-libs-5.2.4-3.el8.x86_64.rpm" + }, + "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libs-3.6.8-30.el8.x86_64.rpm" + }, + "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm" + }, + "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grep-3.1-6.el8.x86_64.rpm" + }, + "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-extra-2.02-84.el8.x86_64.rpm" + }, + "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gpgme-1.13.1-3.el8.x86_64.rpm" + }, + "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libusbx-1.0.23-3.el8.x86_64.rpm" + }, + "sha256:d80219a299035688091aa230b1c9169143c00c141c4f1ad8e75d176d22cc1cd0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:d805c42ee9293a8ba35f49af63e3f7d813420d4a62ee4cff5ecd7391be851a9b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtool-ltdl-2.4.6-25.el8.x86_64.rpm" + }, + "sha256:d81c180c682e6014a0da09aaa144492e8cb03c1d61022513ba6db5bd3740f921": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm" + }, + "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-4.14.3-4.el8.x86_64.rpm" + }, + "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-049-89.git20200625.el8.x86_64.rpm" + }, + "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libaio-0.3.112-1.el8.x86_64.rpm" + }, + "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-2.9-3.el8.x86_64.rpm" + }, + "sha256:d94a39545f8570ba2d199e4892cfe05ebd5ea6e4e8322790b4f960bf92da5f09": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/numactl-libs-2.0.12-11.el8.x86_64.rpm" + }, + "sha256:da5606af487682acce52799418a97614d0f6e6b72d15c88c4f6f2a076f384dac": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pciutils-libs-3.6.4-2.el8.x86_64.rpm" + }, + "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-libs-239-36.el8.x86_64.rpm" + }, + "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libarchive-3.3.2-9.el8.x86_64.rpm" + }, + "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-tools-1.12.8-11.el8.x86_64.rpm" + }, + "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shadow-utils-4.6-10.el8.x86_64.rpm" + }, + "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-2.02-84.el8.x86_64.rpm" + }, + "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm" + }, + "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-2.28-127.el8.x86_64.rpm" + }, + "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-udev-239-36.el8.x86_64.rpm" + }, + "sha256:de967920d197a627545ccb251d6147c1cd6baf94195f21f6be71380beb603942": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/open-vm-tools-11.1.0-1.el8.x86_64.rpm" + }, + "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librepo-1.12.0-1.el8.x86_64.rpm" + }, + "sha256:e0cde0185535bd50f7c5e5e2c0c19b5ab086b6bfa8cea95af9d56ffc81cb26b7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-libs-4.3.6-41.el8.x86_64.rpm" + }, + "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/memstrack-0.1.8-1.el8.x86_64.rpm" + }, + "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gawk-4.2.1-1.el8.x86_64.rpm" + }, + "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmartcols-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/info-6.5-6.el8.x86_64.rpm" + }, + "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-utils-2.9-3.el8.x86_64.rpm" + }, + "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/yum-4.2.23-2.el8.noarch.rpm" + }, + "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-1.02.171-3.el8.x86_64.rpm" + }, + "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-linux-procfs-0.6.2-2.el8.noarch.rpm" + }, + "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuuid-2.32.1-24.el8.x86_64.rpm" + }, + "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-2.9-9.el8.x86_64.rpm" + }, + "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-lib-0.3.14-4.el8.x86_64.rpm" + }, + "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libffi-3.1-22.el8.x86_64.rpm" + }, + "sha256:eb5e29df2e7f803a62769aa19c60959ee7d368cd51397e00ebdbedba7d2d4768": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-4.18.0-221.el8.x86_64.rpm" + }, + "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-common-8.30-8.el8.x86_64.rpm" + }, + "sha256:eb9b37827f1851c8a2683cd86026fda90847afe90d51ea746d7cd5f49f6f90d1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/newt-0.52.20-11.el8.x86_64.rpm" + }, + "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libutempter-1.1.6-14.el8.x86_64.rpm" + }, + "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-0.23.14-5.el8_0.x86_64.rpm" + }, + "sha256:ec26615d079ce89316352f813279f74a44871fa8c26fed8f369b9fe847aa5121": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm" + }, + "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm" + }, + "sha256:ec9adedf0d5d2d096acf4739e2eefab8095498037e13dac9b283e17a9c54259a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sudo-1.8.29-6.el8.x86_64.rpm" + }, + "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre-8.42-4.el8.x86_64.rpm" + }, + "sha256:ecd53a50b4cb20dd1597f45ab4a9cba1fd7793a6000fb2114421687779738672": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcollection-0.7.0-39.el8.x86_64.rpm" + }, + "sha256:edd041a9e8d4168c5eccdc607fcb2e870a6fbfd89d305b05b2bc67f3c43f2f04": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-2.9.7-12.el8.x86_64.rpm" + }, + "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/readline-7.0-10.el8.x86_64.rpm" + }, + "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-1.45.6-1.el8.x86_64.rpm" + }, + "sha256:efa20ae5eca5860656d0131086470cb8d5c3a1ae2819301e7d015f06bbb68a26": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/slang-2.3.2-3.el8.x86_64.rpm" + }, + "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm" + }, + "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm" + }, + "sha256:f2b58d2dfeb45318f8e9e67a96c4f02df69815149ce7b092233a02c0dea19f89": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64.rpm" + }, + "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sed-4.5-2.el8.x86_64.rpm" + }, + "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-0.9.4-2.el8.x86_64.rpm" + }, + "sha256:f548f7cfa81c12e67c4896d15b9c65357eb66cba99508e74e5ad034ea92ed41a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xmlsec1-1.2.25-4.el8.x86_64.rpm" + }, + "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gzip-1.9-9.el8.x86_64.rpm" + }, + "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-1.2.0-2.el8.x86_64.rpm" + }, + "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64.rpm" + }, + "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/diffutils-3.6-6.el8.x86_64.rpm" + }, + "sha256:f83dc47f0c2ac234e15d5687951285c23576fd2efcc615656c8585f2495456b6": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-1.8.4-14.el8.x86_64.rpm" + }, + "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm" + }, + "sha256:f8c30f90610f8cc907009df99348a5e572f5598aed91280c15af604ba62687b2": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl2030-firmware-18.168.6.1-99.el8.1.noarch.rpm" + }, + "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.x86_64.rpm" + }, + "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcurl-7.61.1-12.el8.x86_64.rpm" + }, + "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dosfstools-4.1-6.el8.x86_64.rpm" + }, + "sha256:fd7bc748b59a48a1ba803dc893be729c8624a4141e23fcef126a401857bbb455": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-server-8.0p1-5.el8.x86_64.rpm" + }, + "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm" + }, + "sha256:fd9e5c379cd3482d32686fb13881827a39037e7a7afa92c62d58c1f05fcb797f": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mozjs60-60.9.0-4.el8.x86_64.rpm" + }, + "sha256:fdcc4180cae8fa83ca54188fc2f6796a1bc8d7eb7106163b98dd93d974b48cd1": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hostname-3.20-6.el8.x86_64.rpm" + }, + "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a": { + "url": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libblkid-2.32.1-24.el8.x86_64.rpm" + } + } + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3" + }, + { + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "checksum": "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710" + }, + { + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "checksum": "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379" + }, + { + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "checksum": "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7" + }, + { + "checksum": "sha256:f2b58d2dfeb45318f8e9e67a96c4f02df69815149ce7b092233a02c0dea19f89" + }, + { + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ] + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ] + }, + "runner": "org.osbuild.rhel82" + }, + "stages": [ + { + "name": "org.osbuild.rpm", + "options": { + "gpgkeys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n", + "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + ], + "packages": [ + { + "checksum": "sha256:0027700684ce09927aded1d2c5bb84028529141a6b418897bde37d4af348f8bb" + }, + { + "checksum": "sha256:6d0dcbaa45457461dd5c4afe97689fa2baf5f95551bbe5e827a152dee545a51d" + }, + { + "checksum": "sha256:a01bc8ab29f40d5e9f03929cee7a796804d63fda3c471054a67d1fd1e5577f6c" + }, + { + "checksum": "sha256:4b8cd13404adac1a30a105e894a733f7c79bfac1a125b8cd095e6ba9c1d056f9" + }, + { + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "checksum": "sha256:cc3df9449002eacd595a73df52eb973d3b37e4c03d4669c7dce6ce7a26dabd6b" + }, + { + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "checksum": "sha256:ad9b3b98ace87913e9487fceaae165faffb81e9c32400a72e08cc752cab0d037" + }, + { + "checksum": "sha256:5bdb82a14d3604899324afc296aa7e7179a15788e2514348eea81b46934d6a3c" + }, + { + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "checksum": "sha256:c24a1814f0fff7edcbd5cdca29571e8a79c5584e8ef300e89aef906b35c8a67d" + }, + { + "checksum": "sha256:78926ec2c75db8bcbdd4f4fbd8c06b373f85bd7ecce0e6aac8c75dda95fcae2c" + }, + { + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "checksum": "sha256:2334cb78002aa30feeb11549d51e204aa868f5538a09957850082d7efb15b00f" + }, + { + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "checksum": "sha256:10f40567d02123b71bd878ef423dd0d5dca415e806ff041c3c69b99d114fea84" + }, + { + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "checksum": "sha256:411d65fe9e463458af055d06a4a89a1d822d26049198615c0afc9741c426c77c" + }, + { + "checksum": "sha256:2a65cec3eb67ba7645dd97cf3f3811cd5fb06eea2526d36a683d3fdaa0f2825e" + }, + { + "checksum": "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5" + }, + { + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "checksum": "sha256:802263173d9c487fc3ca584cc2a5b7b7bb49ac0d12d9026b3246d50fd0888fb1" + }, + { + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "checksum": "sha256:289e2a39b2a29163a29da35936d4b484fe356d0a6d519524023e79686daf501b" + }, + { + "checksum": "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2" + }, + { + "checksum": "sha256:e0cde0185535bd50f7c5e5e2c0c19b5ab086b6bfa8cea95af9d56ffc81cb26b7" + }, + { + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "checksum": "sha256:686015c78247edec0a0f5e0d2cbbf02d9feea162e5967ed5b5be35d3951b1f3d" + }, + { + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "checksum": "sha256:c5e978963bda83e9321563bb18f69f3753f2eb510dfdafdc6c4e2856dc6b6302" + }, + { + "checksum": "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c" + }, + { + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "checksum": "sha256:40010441888b72dd077d4d6790f837236701b93c8b31da5dbf65c700fd2571fd" + }, + { + "checksum": "sha256:1faa85c12115426d8afc51c8bed2e71bf1dd87063e25052bcf85c17dbc0d9ea4" + }, + { + "checksum": "sha256:348b7d66a20015563489babbc3850928587575d0acde7c61d55480ebf0f3820d" + }, + { + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "checksum": "sha256:0493fd81825df694be5d15685bfe4dc002de314d18f5ae47ccee769f65ea5013" + }, + { + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "checksum": "sha256:c5098f41849af65b808baac594539440fcdffea7afce4239eb41885eccfd67e2" + }, + { + "checksum": "sha256:769b1ac34ba3aa35337b734b8548dcf9e8b41476b9b2093756341bcbd5969a36" + }, + { + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "checksum": "sha256:edd041a9e8d4168c5eccdc607fcb2e870a6fbfd89d305b05b2bc67f3c43f2f04" + }, + { + "checksum": "sha256:4cb9b7259f44c8ca83c86dfb5c7a97cc33bf21898efe91769ea214458169a5c8" + }, + { + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "checksum": "sha256:879cb96ce1591886728a45bfb6dbd6fcf48a43757c42f5481019157037046b61" + }, + { + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "checksum": "sha256:1065049dbd53849d35db269a23be54148cbe481122381ab71b72f62e83816b26" + }, + { + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "checksum": "sha256:73c29baa2cd94f1ae6a1d1333818969a281b16dd4262f413ad284c5333719a4d" + }, + { + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "checksum": "sha256:b446b1469bd535cf94e555525f40fa751b1343d89d589f3cff30ee2d7c38258e" + }, + { + "checksum": "sha256:fdcc4180cae8fa83ca54188fc2f6796a1bc8d7eb7106163b98dd93d974b48cd1" + }, + { + "checksum": "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f" + }, + { + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "checksum": "sha256:350657e984b1736bb4a8c9cc01b772517a4194467d6db84110c1cc42131f1cae" + }, + { + "checksum": "sha256:206de21c82d76de550bcc1959138472640b0a950a311b753203f5dfe5b201b7b" + }, + { + "checksum": "sha256:4405d32322fd496c65f57a12b6037fd75b49957269dbf9cb0417b598162f7407" + }, + { + "checksum": "sha256:4ce17c90ad64c2ca85191caa990db8eb0aec7cde24a26a89294c5821cfd20e5f" + }, + { + "checksum": "sha256:c193b87ad1690e81ca35ec1f1f7dff94f179907ed13d5b7936c189ff5f8f2bae" + }, + { + "checksum": "sha256:3d807ee0bd43ba2cfbc5fa3678963fb706898bd41588a29330c315a9d88ab2a7" + }, + { + "checksum": "sha256:f83dc47f0c2ac234e15d5687951285c23576fd2efcc615656c8585f2495456b6" + }, + { + "checksum": "sha256:8716781f69e8f2bf3f171ed6a34a012f79dc76ce0bcfa318fa0b02d488173ee1" + }, + { + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "checksum": "sha256:a8961c50502aa02071c043a16f93399ac6794a058a0ef42be889abe60f35985b" + }, + { + "checksum": "sha256:6844197fd8ffdb16cf94ab77709aa2954cb39512435a377401ebce340d06c7de" + }, + { + "checksum": "sha256:cf6220736fdd005ba7c67ccb5d5d8a1d9c35718e3c13e79c80967866968d7344" + }, + { + "checksum": "sha256:1bc038693be7ccd59674c478176c3badce4a56f785dd0690548b087bcc7adaa1" + }, + { + "checksum": "sha256:959fcb0016788a2b1ee55f0801c1490b196416579bc9ac9da9e38786e6c78ff6" + }, + { + "checksum": "sha256:204e4dbaf357e12ff041c1c203b2527f7d178905ebae53db3c12e57d28fcbf46" + }, + { + "checksum": "sha256:72fe0e1837aa503049fada31c6e8ae73a4e550be2ddfd73303fb84e955fcc268" + }, + { + "checksum": "sha256:f8c30f90610f8cc907009df99348a5e572f5598aed91280c15af604ba62687b2" + }, + { + "checksum": "sha256:5cbe058e6d2177f88006fed866e6b1565d6024a12c311ae8eaa21008f76074b1" + }, + { + "checksum": "sha256:b55b77fb38d84685cef6638240daa54235fce156176c820a3c3b980bf414c5f4" + }, + { + "checksum": "sha256:252d46d58e0c02cbe2d2485488bd63ea7129964643787557eae832102541f84f" + }, + { + "checksum": "sha256:56cc340c88cabacd9a329f80edee141154dbf84808894e43a937247394623cf0" + }, + { + "checksum": "sha256:950b6b41580f4c35a108345c1c8d9d3930cc95a2c4fe4b726f02bce67532151d" + }, + { + "checksum": "sha256:8eb3370fe641e329b03838e560f45ee290b273dcccfa182d97ad2dbff59b47fd" + }, + { + "checksum": "sha256:1d28eaeaa59c48e4193c709dd2a6301c2f8701138164c05371a0d8f235d14c9c" + }, + { + "checksum": "sha256:39e59e9a2460e3b6fe147501e79a57042f161c217963be212359031bb8b18daa" + }, + { + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "checksum": "sha256:eb5e29df2e7f803a62769aa19c60959ee7d368cd51397e00ebdbedba7d2d4768" + }, + { + "checksum": "sha256:76ca09c73360f48d4b6fe4d4ee0aa974ef53531222df8e363d8006ec469051cf" + }, + { + "checksum": "sha256:97c8af6f58e3d14317036bd3ed2cbc498803c91c55b9dc0e8f0fddea7ac929e3" + }, + { + "checksum": "sha256:af495353f000008aab42640530c0c9005aaf60f0d4b4cf1a9b66b07bfc5b5881" + }, + { + "checksum": "sha256:4882ff53265bdeabb69f1ac9c585454b28ae799ab31fa72c9eb10bdbe1f41d9a" + }, + { + "checksum": "sha256:948e61e32986303f12f8dbe40bc44674287b3906a54dadae5e3dfd2ccba88fac" + }, + { + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "checksum": "sha256:68362500ad574eb2df43a3d260ab8d0f3ce1ae5f34e66d71f2478fef8e17cb4a" + }, + { + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "checksum": "sha256:cac59a5629e7229653c29c0d575bd8f8c2d3774474615eb65615109afb151981" + }, + { + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "checksum": "sha256:ecd53a50b4cb20dd1597f45ab4a9cba1fd7793a6000fb2114421687779738672" + }, + { + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "checksum": "sha256:798420bbda79fd0b9312abac25efad6b28957c512497f37f4beddad5d67dd66a" + }, + { + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "checksum": "sha256:50c0d1828a9e8db638c09d88afb0828d98349027ce498ee7df74e7ff6052ac1d" + }, + { + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "checksum": "sha256:0391105afa53c9503b59591615bd7c98e2f7a4cd94ff4fd1451c4234522f3880" + }, + { + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "checksum": "sha256:713ec69b972a8e88622b3fcd3b84fccdbd6c333b68b6c52151c2350edad2576a" + }, + { + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "checksum": "sha256:c46ee71ba426e0964b2264bdf18fc4cff4d7815206c9e8a471bdf678e65c24b9" + }, + { + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "checksum": "sha256:231bc0eeb8fb127f0a4da5a4da1edd226067d5029a0b4fd6ef72c246ccfc31c0" + }, + { + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "checksum": "sha256:9c5594fcac97c0f8813d7a188e2368e3b1095025fc4a0ecbd5d17e54c0c93f97" + }, + { + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "checksum": "sha256:53fb6834e2e439e79225d957c4643922da74836417b5558d0c2943b546b26e57" + }, + { + "checksum": "sha256:74d05cb72dc6740be73480e68b15b209d7e7a2bf7d7d54e0d3a2dc261ce64e4b" + }, + { + "checksum": "sha256:61cf7338e12188f787c7162e2cd669c895e4e2cf4ae86c9debcd56fd3b8a8322" + }, + { + "checksum": "sha256:2eed977380b41885d4f7ad33e122abbb9ea7391c1255d182451efd457688c8b2" + }, + { + "checksum": "sha256:b05032d419c29bfbe60b3495dab9b368865e2154b1b25d87b1e4f5b379226747" + }, + { + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "checksum": "sha256:0129696c208f60326723c650295167b0600791ccb2e9c3d446c4caf9adecb3d7" + }, + { + "checksum": "sha256:ac2800369b7f4dc05a8fec452eabedf02f153c11e188a1e80157e35592305690" + }, + { + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "checksum": "sha256:2eba2dc51974271244bdeaaf17c6e8fac3c35b62914b680076bdc4a32272df01" + }, + { + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "checksum": "sha256:831a51570e09368c7b720567827b74a46ed5a01c7c39906c185c385bc50079d9" + }, + { + "checksum": "sha256:539abfc369a17023658486f7b4a48c8db159cc4d617b27da256ddac6e15ea687" + }, + { + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "checksum": "sha256:507442831068c749ba21b22bd96993a1a2a6c74dd53c55f34c7f81a21554c82d" + }, + { + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "checksum": "sha256:d186f806ed9c841a385f7acf194c20b78616396414da9131982e469f065619b8" + }, + { + "checksum": "sha256:beea3f8c88b9c0a74d75622aa71467f51c457d1acf0ff557f7cd0e2ae3dfafe3" + }, + { + "checksum": "sha256:c4279ad2915f4ce1806c4121675e49d2b525bb6e977d487dc2ad138fce8c2734" + }, + { + "checksum": "sha256:7c292b3bb74d12d77e1e22221c55696a0c5f50304040b3a706c2164d5b6a42e4" + }, + { + "checksum": "sha256:44e81330b185085f871e9fbf8fae27c8de411600c032aca371dc6d39a3e261da" + }, + { + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "checksum": "sha256:3a1058c6ba468722090a74002a3239161771b0d8b444975bff891afd45bb672a" + }, + { + "checksum": "sha256:3b087daa7e9de69c051f22f9df1ef00867ffddd99357bc3a215ccde76a13c02f" + }, + { + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "checksum": "sha256:4ed1a6294eea09a3a7e15683267ca5d383e4c2b27fd57fe05d2666e0e6c3d26f" + }, + { + "checksum": "sha256:7c89c2d055013779252c12643e8f0b3731f4dd5e2b61d9d81233a0ee298abb36" + }, + { + "checksum": "sha256:860676d4231afa3e6b23933d8dd65e5f7f5823910791e6481d2440ae4ec64c53" + }, + { + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "checksum": "sha256:d805c42ee9293a8ba35f49af63e3f7d813420d4a62ee4cff5ecd7391be851a9b" + }, + { + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "checksum": "sha256:b2dcbd3b81196b16e33054d31c0129c432cf59fb591035845cc299bbb46000c1" + }, + { + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "checksum": "sha256:2146bf4beddd81d4ef842a99f1b52cd827713393e266a78608be56171ea79bc6" + }, + { + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "checksum": "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9" + }, + { + "checksum": "sha256:37504d807ac0bb6c429d7be9c636f7b755464023511d856846dbb9deb8f6a76d" + }, + { + "checksum": "sha256:b59cdea55a890a10f484d8596e244a18455ee82920c7e466991801d24c4718cd" + }, + { + "checksum": "sha256:b9a17114d551cc8259eea6996b6871ec36675330fdb1eb16db529e6f8a9c34d5" + }, + { + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "checksum": "sha256:a3dedf8c077b4656d3cd4ef641e696397a3fff83ee8b14f0e3fc69d7c10cebcf" + }, + { + "checksum": "sha256:7b6856dc4dc1d88d9c3c9597fb824b5776af59f045087bdb2713d64045216a36" + }, + { + "checksum": "sha256:0e4b7687f0c62f4e336223b939f6cb169c8dac49eee23c53fd919e58d8f989df" + }, + { + "checksum": "sha256:fd9e5c379cd3482d32686fb13881827a39037e7a7afa92c62d58c1f05fcb797f" + }, + { + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "checksum": "sha256:eb9b37827f1851c8a2683cd86026fda90847afe90d51ea746d7cd5f49f6f90d1" + }, + { + "checksum": "sha256:5ac24d7513e9daa137064985cd8a8774c94aa8a6c07e2814d0c56ddde33fcc8d" + }, + { + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "checksum": "sha256:d94a39545f8570ba2d199e4892cfe05ebd5ea6e4e8322790b4f960bf92da5f09" + }, + { + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "checksum": "sha256:b5fc6f35798edccd0390e54fce40290936c3699227e79cc6d1a42d803358fd03" + }, + { + "checksum": "sha256:3730f3f8d3332836f278250408891cb097379a5d7745fe698b1d418e9e13d335" + }, + { + "checksum": "sha256:fd7bc748b59a48a1ba803dc893be729c8624a4141e23fcef126a401857bbb455" + }, + { + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "checksum": "sha256:22585bd5d69c5e0a06fe00a6844da2e5d311512374c1d176f17f41caab7e121f" + }, + { + "checksum": "sha256:7c0b2b064dad700cba2754b46f483e3e59aaf798740470df1daad3d5239fb893" + }, + { + "checksum": "sha256:22942af5dab657f662538619ab84a260d3c92e3498694fca2a126100ff9ab316" + }, + { + "checksum": "sha256:da5606af487682acce52799418a97614d0f6e6b72d15c88c4f6f2a076f384dac" + }, + { + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "checksum": "sha256:8af00d4b0857240310156e05123e07795e6573da7c1fe9e7fd83b51f13971725" + }, + { + "checksum": "sha256:441efa6f0b9a9905ef11ec987d6db89e7dba2857060020c4554e32db3e59fce5" + }, + { + "checksum": "sha256:9a9ca6857f517f1249d2eb496fe904590d6203e4a9547a28e0b23f21c4cae24a" + }, + { + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "checksum": "sha256:8d371e753071edc796d2eadb8278980290511be6279fdf46649c81b859497d6a" + }, + { + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "checksum": "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34" + }, + { + "checksum": "sha256:13ffce0597b689dd53f55ea0d03dd6d013246634f5c6cbcef51fa549d9734b29" + }, + { + "checksum": "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367" + }, + { + "checksum": "sha256:7a7a238ea529165348acef1d1a20c1d47c1ef5838d8501f3879bb130c1b73e06" + }, + { + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "checksum": "sha256:5a85222c8e9997a8b609b915a8fbae756de9b9bff732db852fb15fe0524f2d86" + }, + { + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "checksum": "sha256:d2b777ea98ee644997029994136723cf4fa78e97afeaceab39f76b545b51792b" + }, + { + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "checksum": "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87" + }, + { + "checksum": "sha256:20dec130e4fd0a2146443791ca7ade6e079cea691d93711813d5f483b691c55a" + }, + { + "checksum": "sha256:c9b3c6dcb4133c3051e3f75978f994aae4c0ad84dd1abbae7fcba497ee524603" + }, + { + "checksum": "sha256:86d305a1466a596f8b436561d674f2510f268bed9e73f56c87da1dd120f99c18" + }, + { + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "checksum": "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20" + }, + { + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "checksum": "sha256:4ca553b0c0f6dc130e05e2011cdf1f52132e8f70bd93be8eee4e415b2cac0c56" + }, + { + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "checksum": "sha256:9487bff6bb16e7326c8b805751580b4593220ba19b06515c69de83fee8e3bb1f" + }, + { + "checksum": "sha256:4ccbefcbe75decfef38ccae5d8ff92ba6b00e8232b64ec46ae0c0be8ae20ec50" + }, + { + "checksum": "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f" + }, + { + "checksum": "sha256:08bf2e898b5775317d04266f4598eddbe06c424a3694b1534e3ceff088e2e8ca" + }, + { + "checksum": "sha256:18d419718a99851370262584bec1b27d60cbd08845b50fbe97e1a56b71cd5ea2" + }, + { + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "checksum": "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9" + }, + { + "checksum": "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf" + }, + { + "checksum": "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde" + }, + { + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "checksum": "sha256:09ca7b05e26f93d35ac299dbcd865b65ec3a3d2654e1da87d2c3c0462dbe6e4a" + }, + { + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "checksum": "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb" + }, + { + "checksum": "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d" + }, + { + "checksum": "sha256:0f3b084d947bc246fe68822129b8ae1294c4187270a19f0966282baf75b34dc6" + }, + { + "checksum": "sha256:206cba480b58c70348584010d547d21bcd84c6094fd3980e22c6b640da12704c" + }, + { + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "checksum": "sha256:9d9d1bdfba4cd852f90232ebe2c4247e7b3a88c4476578c820788a91d6838e55" + }, + { + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "checksum": "sha256:398c1abc82097370f46e6fdf4dae63870e1f767b24d0130c79ed67ea3a67233a" + }, + { + "checksum": "sha256:671852e4f32de6278dd384d35d1dc799ab5d3e8ef718e89e516452cbcba068f0" + }, + { + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "checksum": "sha256:efa20ae5eca5860656d0131086470cb8d5c3a1ae2819301e7d015f06bbb68a26" + }, + { + "checksum": "sha256:4403330cdf4f15d75d727e2ac8c3358ff6a13209b3395dfac2131984e443eb23" + }, + { + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "checksum": "sha256:72ff3a3f6c52849a40cb24f9694115a68cc939970a00c374b4c73b1e4c5dc20c" + }, + { + "checksum": "sha256:2e90748420a7d28b3063df04de129e79ea85310a8d9cf2faf0a2e7b8430307c8" + }, + { + "checksum": "sha256:14098d36fe4be983fac73d04aeacf0ed7977d962e760907b89e3f80b4ca46f3f" + }, + { + "checksum": "sha256:1b1fe43a375a21f4c3ccf04861c122fd519d4865b9c1abc7f1973b86a0252a06" + }, + { + "checksum": "sha256:c0025c0b08ed82c640fa470e62743aed17a33f7948ed0cc969892d7c149206b3" + }, + { + "checksum": "sha256:65dc391ab1c96d1009ef2e7706eabacd5cf84f2a47ea1cc87f6f5e2c1324b178" + }, + { + "checksum": "sha256:99fa92b5d1e0d335fb2bb961ef39988b50968350b899e8790cead73c9a0bec65" + }, + { + "checksum": "sha256:ec9adedf0d5d2d096acf4739e2eefab8095498037e13dac9b283e17a9c54259a" + }, + { + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "checksum": "sha256:b156691caa225f0025533a68eeb9a2cf3883062dd209ede9ec07727b358171cc" + }, + { + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "checksum": "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0" + }, + { + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "checksum": "sha256:98a589d7e1cdea9d974aa43f688e55333eed11ce7cb2037d45cc2e69bce579b3" + }, + { + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "checksum": "sha256:947b4e4eebec21501ca62e2a7ff9baae0e4e7c59584fbba4b6276a402cfbb45b" + }, + { + "checksum": "sha256:2cfcc3d6163dfaf7ce76998be992bd0b70dd7cbb838430cecf2aff04cd435d24" + }, + { + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "checksum": "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4" + }, + { + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "checksum": "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b" + }, + { + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "checksum": "sha256:38affe91361bf56b84490d97c7e3f815965cf8d2bbb222c6c045af4bf2dff736" + }, + { + "checksum": "sha256:b169780b212062e9b9564d7c033f0895f98955c42312f1a023e02277966916e6" + }, + { + "checksum": "sha256:bfe5c8ea12012936cc59981a10728e95d5fdadd3e893457af7a27c464d8cb6ba" + }, + { + "checksum": "sha256:474a66a4cf3d5a00286be40c15bad69ea1ac63a9424a1ff44f20a548a7686f7a" + }, + { + "checksum": "sha256:995a5401cd86404d14d08c0aeafeaa8da3f540b1806f9d0e233d75dec9e45c74" + }, + { + "checksum": "sha256:998c3e82a6bb9e040d225d8e85b5b55316d2ca92fcbb4d2ad0e6fa9e896c5cdb" + }, + { + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "checksum": "sha256:de967920d197a627545ccb251d6147c1cd6baf94195f21f6be71380beb603942" + }, + { + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "checksum": "sha256:4d54749c92887ab059c768ada265c0f64e292594846b183d1fdfa9b29fff3ac1" + }, + { + "checksum": "sha256:0f662be3013f7958961ae70400c7ed1fb4350c823881c123a16cbb2b6b8c8f6a" + }, + { + "checksum": "sha256:61498bdebac578394eae8667e16ad7393309f7144266d4331f4c17f276b15fe0" + }, + { + "checksum": "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43" + }, + { + "checksum": "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362" + }, + { + "checksum": "sha256:3edf7d29e530e6568416d4455e9fbaa511aba236c603da9928e689fae77b9874" + }, + { + "checksum": "sha256:b4e89276818abec218c909ca961db9bb2e09b1fc609ff280e6c05227143fa24d" + }, + { + "checksum": "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21" + }, + { + "checksum": "sha256:15462b748aef3c565bcf4f849c1a21c1389a8ef5e7dae94e64718865a67d46a9" + }, + { + "checksum": "sha256:bed436b103161f7d8f61b617c84f3a7b5509f1d00c8425900a88c222b1331b31" + }, + { + "checksum": "sha256:ec26615d079ce89316352f813279f74a44871fa8c26fed8f369b9fe847aa5121" + }, + { + "checksum": "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a" + }, + { + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "checksum": "sha256:d81c180c682e6014a0da09aaa144492e8cb03c1d61022513ba6db5bd3740f921" + }, + { + "checksum": "sha256:d80219a299035688091aa230b1c9169143c00c141c4f1ad8e75d176d22cc1cd0" + }, + { + "checksum": "sha256:4931d78c496eaaa8e6b6bbec2b4750da52b9fc7e989ae89b7c1fa2a6f40ff7fa" + }, + { + "checksum": "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42" + }, + { + "checksum": "sha256:00cc9cd4517cbb4ad99dbce63b40b700699523550cd7f8202948af28dbe2cd9e" + }, + { + "checksum": "sha256:5ef47eb6a042a13c902764907692c1068eb0f69153b47bc85792bef74bfa852b" + }, + { + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + }, + { + "checksum": "sha256:f548f7cfa81c12e67c4896d15b9c65357eb66cba99508e74e5ad034ea92ed41a" + }, + { + "checksum": "sha256:7d07d9055f557acf574e238327f003dc1a77dd119406e2326c844d17b818417c" + } + ] + } + }, + { + "name": "org.osbuild.fix-bls", + "options": {} + }, + { + "name": "org.osbuild.fstab", + "options": { + "filesystems": [ + { + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "vfs_type": "xfs", + "path": "/", + "options": "defaults" + } + ] + } + }, + { + "name": "org.osbuild.grub2", + "options": { + "root_fs_uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "kernel_opts": "ro net.ifnames=0", + "legacy": "i386-pc" + } + }, + { + "name": "org.osbuild.locale", + "options": { + "language": "en_US" + } + }, + { + "name": "org.osbuild.users", + "options": { + "users": { + "redhat": { + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + } + } + }, + { + "name": "org.osbuild.selinux", + "options": { + "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts" + } + } + ], + "assembler": { + "name": "org.osbuild.qemu", + "options": { + "format": "vmdk", + "filename": "disk.vmdk", + "size": 4294967296, + "ptuuid": "0x14fc63d2", + "pttype": "mbr", + "partitions": [ + { + "start": 2048, + "bootable": true, + "filesystem": { + "type": "xfs", + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", + "mountpoint": "/" + } + } + ] + } + } + } + }, + "rpmmd": { + "build-packages": [ + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/acl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-4.4.19-12.el8.x86_64.rpm", + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/brotli-1.0.6-2.el8.x86_64.rpm", + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-libs-1.0.6-26.el8.x86_64.rpm", + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chkconfig-1.13-2.el8.x86_64.rpm", + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-common-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cpio-2.12-8.el8.x86_64.rpm", + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-dicts-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-libs-2.3.3-1.el8.x86_64.rpm", + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/curl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.x86_64.rpm", + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-daemon-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-libs-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-tools-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-libs-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/diffutils-3.6-6.el8.x86_64.rpm", + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dosfstools", + "epoch": 0, + "version": "4.1", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dosfstools-4.1-6.el8.x86_64.rpm", + "checksum": "sha256:fc6f294d87c32dd80d09ad1e31005a6c379c476539fec9cd52b51f0bbc3384e3" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libelf-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libs-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/expat-2.2.5-4.el8.x86_64.rpm", + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-libs-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/filesystem-3.8-3.el8.x86_64.rpm", + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/findutils-4.6.0-20.el8.x86_64.rpm", + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/freetype-2.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-libs-2.9.7-12.el8.x86_64.rpm", + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gawk-4.2.1-1.el8.x86_64.rpm", + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-libs-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-libs-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib2-2.56.4-8.el8.x86_64.rpm", + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "name": "glibc-all-langpacks", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-all-langpacks-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:11c9c29a2f938935c9dd7febc7194dc35c22289d6d818775c17f1a34c8047710" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-common-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gmp-6.1.2-10.el8.x86_64.rpm", + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-smime-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnutls-3.6.14-3.el8.x86_64.rpm", + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gpgme-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grep-3.1-6.el8.x86_64.rpm", + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-modules-2.02-84.el8.noarch.rpm", + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-extra-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-minimal-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grubby-8.40-41.el8.x86_64.rpm", + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gzip-1.9-9.el8.x86_64.rpm", + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hardlink-1.3-6.el8.x86_64.rpm", + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ima-evm-utils-1.1-5.el8.x86_64.rpm", + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/info-6.5-6.el8.x86_64.rpm", + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-libs-1.8.4-14.el8.x86_64.rpm", + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-c-0.13.1-0.2.el8.x86_64.rpm", + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-glib-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-2.0.4-10.el8.x86_64.rpm", + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-libs-1.5.10-6.el8.x86_64.rpm", + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-25-16.el8.x86_64.rpm", + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-libs-25-16.el8.x86_64.rpm", + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kpartx-0.8.4-2.el8.x86_64.rpm", + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/krb5-libs-1.18.2-3.el8.x86_64.rpm", + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libacl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "name": "libaio", + "epoch": 0, + "version": "0.3.112", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libaio-0.3.112-1.el8.x86_64.rpm", + "checksum": "sha256:d8f93540a6a7329a5158d3e543f77110104f30494f4d6f187427e5010d8df379" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libarchive-3.3.2-9.el8.x86_64.rpm", + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libassuan-2.5.1-3.el8.x86_64.rpm", + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libattr-2.4.48-3.el8.x86_64.rpm", + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libblkid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-2.26-4.el8.x86_64.rpm", + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-ng-0.7.9-5.el8.x86_64.rpm", + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcom_err-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcroco-0.6.12-4.el8.x86_64.rpm", + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcurl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-utils-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libevent-2.1.8-5.el8.x86_64.rpm", + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libfdisk-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libffi-3.1-22.el8.x86_64.rpm", + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcc-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcrypt-1.8.5-4.el8.x86_64.rpm", + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgomp-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgpg-error-1.31-1.el8.x86_64.rpm", + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libidn2-2.2.0-1.el8.x86_64.rpm", + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libksba-1.3.5-7.el8.x86_64.rpm", + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmetalink-0.1.3-7.el8.x86_64.rpm", + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd-2.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmount-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.x86_64.rpm", + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64.rpm", + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpcap-1.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.34", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpng-1.6.34-5.el8.x86_64.rpm", + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpsl-0.20.2-6.el8.x86_64.rpm", + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpwquality-1.4.0-9.el8.x86_64.rpm", + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librepo-1.12.0-1.el8.x86_64.rpm", + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libreport-filesystem-2.9.5-11.el8.x86_64.rpm", + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librhsm-0.0.3-3.el8.x86_64.rpm", + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libseccomp-2.4.3-1.el8.x86_64.rpm", + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsecret-0.18.6-1.el8.x86_64.rpm", + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-utils-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsemanage-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsepol-2.9-1.el8.x86_64.rpm", + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsigsegv-2.11-5.el8.x86_64.rpm", + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmartcols-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsolv-0.7.11-1.el8.x86_64.rpm", + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libss-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-0.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstdc++-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtasn1-4.13-3.el8.x86_64.rpm", + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtirpc-1.1.4-4.el8.x86_64.rpm", + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libunistring-0.9.9-3.el8.x86_64.rpm", + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libusbx-1.0.23-3.el8.x86_64.rpm", + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libutempter-1.1.6-14.el8.x86_64.rpm", + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuuid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-0.3.0-5.el8.x86_64.rpm", + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxcrypt-4.1.1-4.el8.x86_64.rpm", + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxml2-2.9.7-8.el8.x86_64.rpm", + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libyaml-0.1.7-5.el8.x86_64.rpm", + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libzstd-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lua-libs-5.3.4-11.el8.x86_64.rpm", + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lz4-libs-1.8.3-2.el8.x86_64.rpm", + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mpfr-3.1.6-1.el8.x86_64.rpm", + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nettle-3.4.1-2.el8.x86_64.rpm", + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/npth-1.5-4.el8.x86_64.rpm", + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openldap-2.4.46-15.el8.x86_64.rpm", + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-libs-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-pkcs11-0.4.10-2.el8.x86_64.rpm", + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/os-prober-1.74-6.el8.x86_64.rpm", + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pam-1.3.1-11.el8.x86_64.rpm", + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre-8.42-4.el8.x86_64.rpm", + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre2-10.32-2.el8.x86_64.rpm", + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pigz-2.4-4.el8.x86_64.rpm", + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-2.9-9.el8.x86_64.rpm", + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/popt-1.16-14.el8.x86_64.rpm", + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/procps-ng-3.3.15-2.el8.x86_64.rpm", + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gpg-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-hawkey-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libs-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "name": "python3-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:616b23d84d2c4f85463c1b72cf1fcc2c99eeac38e94ade7318a195072d139641" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/readline-7.0-10.el8.x86_64.rpm", + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-eula-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-build-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sed-4.5-2.el8.x86_64.rpm", + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shadow-utils-4.6-10.el8.x86_64.rpm", + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shared-mime-info-1.9-3.el8.x86_64.rpm", + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-libs-3.26.0-10.el8.x86_64.rpm", + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-239-36.el8.x86_64.rpm", + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-libs-239-36.el8.x86_64.rpm", + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-pam-239-36.el8.x86_64.rpm", + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-udev-239-36.el8.x86_64.rpm", + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tar-1.30-5.el8.x86_64.rpm", + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-lib-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/util-linux-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/which-2.21-12.el8.x86_64.rpm", + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xfsprogs-5.0.0-4.el8.x86_64.rpm", + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-libs-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/zlib-1.2.11-15.el8.x86_64.rpm", + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxkbcommon-0.9.1-1.el8.x86_64.rpm", + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/memstrack-0.1.8-1.el8.x86_64.rpm", + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pinentry-1.1.0-2.el8.x86_64.rpm", + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "name": "python3-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:73e9a3b342ec096cb41c28bbb4fd725cddef5f5dd9c1c866feb62923b43b38ae" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-unbound-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "name": "python36", + "epoch": 0, + "version": "3.6.8", + "release": "2.module+el8.1.0+3334+5cb623d7", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64.rpm", + "checksum": "sha256:9e70cafe666de95febf05bcee7d3be9a2c5cb9bb3d361d81b2d72bde8a5e20c7" + }, + { + "name": "qemu-img", + "epoch": 15, + "version": "4.2.0", + "release": "29.module+el8.3.0+7212+401047e6", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/qemu-img-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64.rpm", + "checksum": "sha256:f2b58d2dfeb45318f8e9e67a96c4f02df69815149ce7b092233a02c0dea19f89" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/unbound-libs-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + } + ], + "packages": [ + { + "name": "NetworkManager", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:0027700684ce09927aded1d2c5bb84028529141a6b418897bde37d4af348f8bb" + }, + { + "name": "NetworkManager-libnm", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-libnm-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:6d0dcbaa45457461dd5c4afe97689fa2baf5f95551bbe5e827a152dee545a51d" + }, + { + "name": "NetworkManager-team", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-team-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:a01bc8ab29f40d5e9f03929cee7a796804d63fda3c471054a67d1fd1e5577f6c" + }, + { + "name": "NetworkManager-tui", + "epoch": 1, + "version": "1.26.0", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/NetworkManager-tui-1.26.0-0.2.el8.x86_64.rpm", + "checksum": "sha256:4b8cd13404adac1a30a105e894a733f7c79bfac1a125b8cd095e6ba9c1d056f9" + }, + { + "name": "acl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/acl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:ce7e129103cab9de8081b9752a9990a632b5930e371988892e671bb47d42d14e" + }, + { + "name": "audit", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:cc3df9449002eacd595a73df52eb973d3b37e4c03d4669c7dce6ce7a26dabd6b" + }, + { + "name": "audit-libs", + "epoch": 0, + "version": "3.0", + "release": "0.17.20191104git1c2f876.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm", + "checksum": "sha256:d84d9c2262e0ccdff46b3f6363c1a74ef870795947f716ada3d5ccf160d7b433" + }, + { + "name": "authselect", + "epoch": 0, + "version": "1.2.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/authselect-1.2.1-2.el8.x86_64.rpm", + "checksum": "sha256:ad9b3b98ace87913e9487fceaae165faffb81e9c32400a72e08cc752cab0d037" + }, + { + "name": "authselect-libs", + "epoch": 0, + "version": "1.2.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/authselect-libs-1.2.1-2.el8.x86_64.rpm", + "checksum": "sha256:5bdb82a14d3604899324afc296aa7e7179a15788e2514348eea81b46934d6a3c" + }, + { + "name": "basesystem", + "epoch": 0, + "version": "11", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/basesystem-11-5.el8.noarch.rpm", + "checksum": "sha256:b9584e6823ffe9ccf79282bd57ee076a1e3a71c4c1020a20b5e1975141a50f14" + }, + { + "name": "bash", + "epoch": 0, + "version": "4.4.19", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bash-4.4.19-12.el8.x86_64.rpm", + "checksum": "sha256:52f1653d23bce931c446ef82e920c5381827076ad5900e9b90ada974c29b920b" + }, + { + "name": "bind-export-libs", + "epoch": 32, + "version": "9.11.20", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bind-export-libs-9.11.20-3.el8.x86_64.rpm", + "checksum": "sha256:c24a1814f0fff7edcbd5cdca29571e8a79c5584e8ef300e89aef906b35c8a67d" + }, + { + "name": "biosdevname", + "epoch": 0, + "version": "0.7.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/biosdevname-0.7.3-2.el8.x86_64.rpm", + "checksum": "sha256:78926ec2c75db8bcbdd4f4fbd8c06b373f85bd7ecce0e6aac8c75dda95fcae2c" + }, + { + "name": "brotli", + "epoch": 0, + "version": "1.0.6", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/brotli-1.0.6-2.el8.x86_64.rpm", + "checksum": "sha256:7d1d9d9906e651d81d7c07553dbeb807cde2ae4f291852c76064341090a4a281" + }, + { + "name": "bzip2-libs", + "epoch": 0, + "version": "1.0.6", + "release": "26.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/bzip2-libs-1.0.6-26.el8.x86_64.rpm", + "checksum": "sha256:4d1be1a327a1ef7f0fa6a0005f32b962d446597febebae80b21d8f8f1355a8aa" + }, + { + "name": "c-ares", + "epoch": 0, + "version": "1.13.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/c-ares-1.13.0-5.el8.x86_64.rpm", + "checksum": "sha256:2334cb78002aa30feeb11549d51e204aa868f5538a09957850082d7efb15b00f" + }, + { + "name": "ca-certificates", + "epoch": 0, + "version": "2019.2.32", + "release": "80.0.el8_1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ca-certificates-2019.2.32-80.0.el8_1.noarch.rpm", + "checksum": "sha256:f16aa7c158403d833a04f11c24be18eb3330717580ab306028b780406331672b" + }, + { + "name": "chkconfig", + "epoch": 0, + "version": "1.13", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chkconfig-1.13-2.el8.x86_64.rpm", + "checksum": "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8" + }, + { + "name": "chrony", + "epoch": 0, + "version": "3.5", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/chrony-3.5-1.el8.x86_64.rpm", + "checksum": "sha256:10f40567d02123b71bd878ef423dd0d5dca415e806ff041c3c69b99d114fea84" + }, + { + "name": "coreutils", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:2f47fe4fe818d6f4eef117287aef700380aa7f1bd50931cada45efc0be05603c" + }, + { + "name": "coreutils-common", + "epoch": 0, + "version": "8.30", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/coreutils-common-8.30-8.el8.x86_64.rpm", + "checksum": "sha256:eb68ce3ec01323a3f1d323e8b79397d244fd882dc37634729dd374974918ad1e" + }, + { + "name": "cpio", + "epoch": 0, + "version": "2.12", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cpio-2.12-8.el8.x86_64.rpm", + "checksum": "sha256:153b77f32a8dd43438eebbda76b90a33e2290ee061e29b38f73e754c364bf43c" + }, + { + "name": "cracklib", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4" + }, + { + "name": "cracklib-dicts", + "epoch": 0, + "version": "2.9.6", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cracklib-dicts-2.9.6-15.el8.x86_64.rpm", + "checksum": "sha256:3423075b5f924b1512e91fb5c8532ef2768cd2b1b9591e4a2ac3b76d99aa380d" + }, + { + "name": "cronie", + "epoch": 0, + "version": "1.5.2", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cronie-1.5.2-4.el8.x86_64.rpm", + "checksum": "sha256:411d65fe9e463458af055d06a4a89a1d822d26049198615c0afc9741c426c77c" + }, + { + "name": "cronie-anacron", + "epoch": 0, + "version": "1.5.2", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cronie-anacron-1.5.2-4.el8.x86_64.rpm", + "checksum": "sha256:2a65cec3eb67ba7645dd97cf3f3811cd5fb06eea2526d36a683d3fdaa0f2825e" + }, + { + "name": "crontabs", + "epoch": 0, + "version": "1.11", + "release": "16.20150630git.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crontabs-1.11-16.20150630git.el8.noarch.rpm", + "checksum": "sha256:167e1cdbcafec9d75664d4d2a7bcf6c9d0c1e15485b0dd45147272d8dccfb0a5" + }, + { + "name": "crypto-policies", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:a9f2e12ad03d0e6d23a08816713758c16c323a7fc93220f1d183435e20c231d7" + }, + { + "name": "crypto-policies-scripts", + "epoch": 0, + "version": "20200610", + "release": "1.git0ac8b1f.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch.rpm", + "checksum": "sha256:7e0e04593507e7d2455a666e748a6ec6ce89e653a73f4fdec943aa762f59c2a4" + }, + { + "name": "cryptsetup-libs", + "epoch": 0, + "version": "2.3.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cryptsetup-libs-2.3.3-1.el8.x86_64.rpm", + "checksum": "sha256:0c8785c8888a944da11f13745cd8a1b5d849140be0cc5a4f34b11956a92316a5" + }, + { + "name": "curl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/curl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:62d691f6ca66ff526a05bdfc258e26821d18bd55f013d00675249e6bb07692a8" + }, + { + "name": "cyrus-sasl-lib", + "epoch": 0, + "version": "2.1.27", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/cyrus-sasl-lib-2.1.27-5.el8.x86_64.rpm", + "checksum": "sha256:fa38da11fac69d66c239bdd5b723d550a570861e3f8a8187f105828fbdcca4a7" + }, + { + "name": "dbus", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:ab3e78dcbc2710d3c7d7edb33c2e1ffd8cac107ef99911fd08d09dba807e6ab8" + }, + { + "name": "dbus-common", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-common-1.12.8-11.el8.noarch.rpm", + "checksum": "sha256:514cf2433a21c04584eada4c576cc857f6128f1768751d982f9cebdb3f1ebaeb" + }, + { + "name": "dbus-daemon", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-daemon-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:0734190222b858b3ec7321b4ac170d83f04667bdb0f97c8acd394be453221278" + }, + { + "name": "dbus-glib", + "epoch": 0, + "version": "0.110", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-glib-0.110-2.el8.x86_64.rpm", + "checksum": "sha256:802263173d9c487fc3ca584cc2a5b7b7bb49ac0d12d9026b3246d50fd0888fb1" + }, + { + "name": "dbus-libs", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-libs-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:bf05c810e12f5e5b86da335e372e9775c243b72e7fbd224714ef1590ab56b3dc" + }, + { + "name": "dbus-tools", + "epoch": 1, + "version": "1.12.8", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dbus-tools-1.12.8-11.el8.x86_64.rpm", + "checksum": "sha256:daf71e788fbec2ba0c97129f87895eaea7a3eb15621294f1886b143e666b7f05" + }, + { + "name": "device-mapper", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:e4adccb3a97f89d5b012d9391878b1accd6f45e0b11d0bb74f75f03e14d148d6" + }, + { + "name": "device-mapper-libs", + "epoch": 8, + "version": "1.02.171", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/device-mapper-libs-1.02.171-3.el8.x86_64.rpm", + "checksum": "sha256:77f963de73fff1e46055283e4c97019b202e40646571d678718fe239cb399ece" + }, + { + "name": "dhcp-client", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-client-4.3.6-41.el8.x86_64.rpm", + "checksum": "sha256:289e2a39b2a29163a29da35936d4b484fe356d0a6d519524023e79686daf501b" + }, + { + "name": "dhcp-common", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-common-4.3.6-41.el8.noarch.rpm", + "checksum": "sha256:4189b7e71d3a0d756d9ac0011dca0977030ca3bdc325fe25c5113c52cc5cd1e2" + }, + { + "name": "dhcp-libs", + "epoch": 12, + "version": "4.3.6", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dhcp-libs-4.3.6-41.el8.x86_64.rpm", + "checksum": "sha256:e0cde0185535bd50f7c5e5e2c0c19b5ab086b6bfa8cea95af9d56ffc81cb26b7" + }, + { + "name": "diffutils", + "epoch": 0, + "version": "3.6", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/diffutils-3.6-6.el8.x86_64.rpm", + "checksum": "sha256:f7fc94ac5b5df2051aa2811c0cebecd7e04353ac871f1a792bc6c68f2c2aa6ce" + }, + { + "name": "dmidecode", + "epoch": 1, + "version": "3.2", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dmidecode-3.2-6.el8.x86_64.rpm", + "checksum": "sha256:686015c78247edec0a0f5e0d2cbbf02d9feea162e5967ed5b5be35d3951b1f3d" + }, + { + "name": "dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:d50c11c5e24785f1090b8e00ae2b626c37df00fafe519f5a37f785650046254c" + }, + { + "name": "dnf-data", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-data-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:fd8f2d3fae778b9523b710dc2e77a92db998fa5aca728bd9e84094e7608633a0" + }, + { + "name": "dnf-plugin-subscription-manager", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugin-subscription-manager-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:c5e978963bda83e9321563bb18f69f3753f2eb510dfdafdc6c4e2856dc6b6302" + }, + { + "name": "dnf-plugins-core", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dnf-plugins-core-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:0ac41aa6bae87e742942858dc9e2eca970adba4b4276696fb6db9d86f73ee59c" + }, + { + "name": "dracut", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:d8e1218480fdf0581c3a14bf2a72a69530158f4b6800cfd661bde3050e70a9f9" + }, + { + "name": "dracut-config-generic", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-config-generic-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:40010441888b72dd077d4d6790f837236701b93c8b31da5dbf65c700fd2571fd" + }, + { + "name": "dracut-network", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-network-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:1faa85c12115426d8afc51c8bed2e71bf1dd87063e25052bcf85c17dbc0d9ea4" + }, + { + "name": "dracut-squash", + "epoch": 0, + "version": "049", + "release": "89.git20200625.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/dracut-squash-049-89.git20200625.el8.x86_64.rpm", + "checksum": "sha256:348b7d66a20015563489babbc3850928587575d0acde7c61d55480ebf0f3820d" + }, + { + "name": "e2fsprogs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:ef8b376e982b02dea7eb7a0e5aa80eb5526c17e87e0b04eb75deae6e9c54dee5" + }, + { + "name": "e2fsprogs-libs", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/e2fsprogs-libs-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:435d017c887d981b8f485f94f1efc8342f082e76c64bfb058e7f218dcc8a69dd" + }, + { + "name": "elfutils-debuginfod-client", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-debuginfod-client-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:81d711cc603bfed3ac6a752661412acae6e9cdee8b4b54d9021e2449fe514589" + }, + { + "name": "elfutils-default-yama-scope", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-default-yama-scope-0.180-1.el8.noarch.rpm", + "checksum": "sha256:47844be3565ac30b2bc46091f81a96953945b879c88be72e53d178f6fffd6fcb" + }, + { + "name": "elfutils-libelf", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libelf-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:9f51d838927aadb8ac8c0691a9b0ecd0d453bd41c029702f7376d9de07ea2977" + }, + { + "name": "elfutils-libs", + "epoch": 0, + "version": "0.180", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/elfutils-libs-0.180-1.el8.x86_64.rpm", + "checksum": "sha256:c039aa82246bcd61753632734fe8566ca8e62fd1498ae9d6e1b2405dc6213e9d" + }, + { + "name": "ethtool", + "epoch": 2, + "version": "5.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ethtool-5.0-2.el8.x86_64.rpm", + "checksum": "sha256:0493fd81825df694be5d15685bfe4dc002de314d18f5ae47ccee769f65ea5013" + }, + { + "name": "expat", + "epoch": 0, + "version": "2.2.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/expat-2.2.5-4.el8.x86_64.rpm", + "checksum": "sha256:0b4118e4f4aec595982dbb9f4b48999284e9e51dfd45d251d930f1541d8a8020" + }, + { + "name": "file", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:21c30fdf0fdd96634100d6dcb70835d264e3c42b86627859004f83398f82993e" + }, + { + "name": "file-libs", + "epoch": 0, + "version": "5.33", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/file-libs-5.33-16.el8.x86_64.rpm", + "checksum": "sha256:6097245ab8c898db6052fbd5920f26c898610b148fcdb7c610ccc250f13eccce" + }, + { + "name": "filesystem", + "epoch": 0, + "version": "3.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/filesystem-3.8-3.el8.x86_64.rpm", + "checksum": "sha256:3b78a074b7f24acab538bb0dc3296dd465f796a54e32ae3b097668c8e15cfea2" + }, + { + "name": "findutils", + "epoch": 1, + "version": "4.6.0", + "release": "20.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/findutils-4.6.0-20.el8.x86_64.rpm", + "checksum": "sha256:ce63708391f77873a344a2ff1ff148be88a5bac39693c9d0bb458f7b3ebd63b9" + }, + { + "name": "firewalld", + "epoch": 0, + "version": "0.8.2", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/firewalld-0.8.2-1.el8.noarch.rpm", + "checksum": "sha256:c5098f41849af65b808baac594539440fcdffea7afce4239eb41885eccfd67e2" + }, + { + "name": "firewalld-filesystem", + "epoch": 0, + "version": "0.8.2", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/firewalld-filesystem-0.8.2-1.el8.noarch.rpm", + "checksum": "sha256:769b1ac34ba3aa35337b734b8548dcf9e8b41476b9b2093756341bcbd5969a36" + }, + { + "name": "freetype", + "epoch": 0, + "version": "2.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/freetype-2.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:6a17cdb4fe1de51e7e7f803ab161f0e1531ab5ef1df3838a37f1a294bb3009b1" + }, + { + "name": "fuse", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-2.9.7-12.el8.x86_64.rpm", + "checksum": "sha256:edd041a9e8d4168c5eccdc607fcb2e870a6fbfd89d305b05b2bc67f3c43f2f04" + }, + { + "name": "fuse-common", + "epoch": 0, + "version": "3.2.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-common-3.2.1-12.el8.x86_64.rpm", + "checksum": "sha256:4cb9b7259f44c8ca83c86dfb5c7a97cc33bf21898efe91769ea214458169a5c8" + }, + { + "name": "fuse-libs", + "epoch": 0, + "version": "2.9.7", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/fuse-libs-2.9.7-12.el8.x86_64.rpm", + "checksum": "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042" + }, + { + "name": "gawk", + "epoch": 0, + "version": "4.2.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gawk-4.2.1-1.el8.x86_64.rpm", + "checksum": "sha256:e1789afd56f1e6e26076eb0d4769ab350a82837de831a7a794aeb19022c6ff6e" + }, + { + "name": "gdbm", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:39598d02864dc6eb86be0ed2cb97bf6815c7b1008d24b561e919bd294063bfa8" + }, + { + "name": "gdbm-libs", + "epoch": 1, + "version": "1.18", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gdbm-libs-1.18-1.el8.x86_64.rpm", + "checksum": "sha256:c10b04c6af8c9005bb162a147cbf618a8a363712d4f32ae7400a53afd08621b9" + }, + { + "name": "gettext", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:6ef0f876469f7c290b53362dd983a556edd6b5c8aace9d5e94c10bf27f0179bd" + }, + { + "name": "gettext-libs", + "epoch": 0, + "version": "0.19.8.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gettext-libs-0.19.8.1-17.el8.x86_64.rpm", + "checksum": "sha256:d31afc5532d581167003977d88771f22255923bf3a1aec4dabb5ac98ec910234" + }, + { + "name": "glib2", + "epoch": 0, + "version": "2.56.4", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glib2-2.56.4-8.el8.x86_64.rpm", + "checksum": "sha256:51252ef99ae5e90f3bdb18529382fa3fba2e89218953aeaddacee37ff3979fcf" + }, + { + "name": "glibc", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:dcb1c39536fb4f4e6ab45946a6d4bc55a7dbea770092766f9d87cbbba8f8da1f" + }, + { + "name": "glibc-common", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-common-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:205ef271ac0ba224d0d01298ccbab3a482619f47c102c888e9f1ddd233ec1535" + }, + { + "name": "glibc-langpack-en", + "epoch": 0, + "version": "2.28", + "release": "127.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/glibc-langpack-en-2.28-127.el8.x86_64.rpm", + "checksum": "sha256:879cb96ce1591886728a45bfb6dbd6fcf48a43757c42f5481019157037046b61" + }, + { + "name": "gmp", + "epoch": 1, + "version": "6.1.2", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gmp-6.1.2-10.el8.x86_64.rpm", + "checksum": "sha256:134219ddd4f07902fcbd999c089200e0d77eb5139eec73aa9e56e0bdddb7a932" + }, + { + "name": "gnupg2", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:b92a1778cf0cbd78f528fe508fa3859c113a413fdbaead1b5a1070b2f93af164" + }, + { + "name": "gnupg2-smime", + "epoch": 0, + "version": "2.2.20", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnupg2-smime-2.2.20-2.el8.x86_64.rpm", + "checksum": "sha256:184f1319a9216616e5cd9857b69d5d661443894557528729115bf21c3f35bb03" + }, + { + "name": "gnutls", + "epoch": 0, + "version": "3.6.14", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gnutls-3.6.14-3.el8.x86_64.rpm", + "checksum": "sha256:b2028c4196fa2e27307d991b430bf74b193b454cc2962d4d87faf555f507d8f5" + }, + { + "name": "gobject-introspection", + "epoch": 0, + "version": "1.56.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gobject-introspection-1.56.1-1.el8.x86_64.rpm", + "checksum": "sha256:1065049dbd53849d35db269a23be54148cbe481122381ab71b72f62e83816b26" + }, + { + "name": "gpgme", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gpgme-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:d6e7b4f00af21f501591734feeb5697b5a56deb33f9a7488cfd6042154e25fc7" + }, + { + "name": "grep", + "epoch": 0, + "version": "3.1", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grep-3.1-6.el8.x86_64.rpm", + "checksum": "sha256:d570af0578f5b2c6225f1f2354404f65bccf91c3974e98dcbc0c7b55a61b9b46" + }, + { + "name": "groff-base", + "epoch": 0, + "version": "1.22.3", + "release": "18.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/groff-base-1.22.3-18.el8.x86_64.rpm", + "checksum": "sha256:73c29baa2cd94f1ae6a1d1333818969a281b16dd4262f413ad284c5333719a4d" + }, + { + "name": "grub2-common", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-common-2.02-84.el8.noarch.rpm", + "checksum": "sha256:14f67b2de598c4afc99c48bc15ab7a21957cfc6b8280f5334dc68884299a7049" + }, + { + "name": "grub2-pc", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:1ff36696a7461959e8f3c59a89e9f5846039d725f335bb6706d2274aa58da6a7" + }, + { + "name": "grub2-pc-modules", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-pc-modules-2.02-84.el8.noarch.rpm", + "checksum": "sha256:4bb57948d75fde0bc2af29fd8c6e932f5bcec10ceffa3000b0271b391baaa67c" + }, + { + "name": "grub2-tools", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:db86222f6cfcacfc83d4a1533a50159f29a860e1f3c2d3f421cbe1252b9284cc" + }, + { + "name": "grub2-tools-extra", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-extra-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:d5f6b4a9e7a22a676663d48e9949ac880b6b74a0238ec416380fb1b2cb2a2117" + }, + { + "name": "grub2-tools-minimal", + "epoch": 1, + "version": "2.02", + "release": "84.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grub2-tools-minimal-2.02-84.el8.x86_64.rpm", + "checksum": "sha256:ad652414d347c080fcb78dfd8e89f9926c79ce18ecf7a46af663679942186a00" + }, + { + "name": "grubby", + "epoch": 0, + "version": "8.40", + "release": "41.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/grubby-8.40-41.el8.x86_64.rpm", + "checksum": "sha256:87885574c27d397641eba5b699db87aa686283e26d40a376c548db0a5af90746" + }, + { + "name": "gzip", + "epoch": 0, + "version": "1.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/gzip-1.9-9.el8.x86_64.rpm", + "checksum": "sha256:f6cd76d9a226b75fa984b42da646869f7f2681b30d51ed17a7500db5af886a98" + }, + { + "name": "hardlink", + "epoch": 1, + "version": "1.3", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hardlink-1.3-6.el8.x86_64.rpm", + "checksum": "sha256:afb86bb3de3f8b6f8ea6be0318f95d6938749ccf91e0cabe5d95c0f197d5de1e" + }, + { + "name": "hdparm", + "epoch": 0, + "version": "9.54", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hdparm-9.54-2.el8.x86_64.rpm", + "checksum": "sha256:b446b1469bd535cf94e555525f40fa751b1343d89d589f3cff30ee2d7c38258e" + }, + { + "name": "hostname", + "epoch": 0, + "version": "3.20", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hostname-3.20-6.el8.x86_64.rpm", + "checksum": "sha256:fdcc4180cae8fa83ca54188fc2f6796a1bc8d7eb7106163b98dd93d974b48cd1" + }, + { + "name": "hwdata", + "epoch": 0, + "version": "0.314", + "release": "8.5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/hwdata-0.314-8.5.el8.noarch.rpm", + "checksum": "sha256:6fc43b0749af18bf748fa21b552fe4cd220b758178bd7f219e8049ba8001ec3f" + }, + { + "name": "ima-evm-utils", + "epoch": 0, + "version": "1.1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ima-evm-utils-1.1-5.el8.x86_64.rpm", + "checksum": "sha256:3e3825e3aa4be23e84963773af0164e2cc432060d0ce176534f821c49e0b5468" + }, + { + "name": "info", + "epoch": 0, + "version": "6.5", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/info-6.5-6.el8.x86_64.rpm", + "checksum": "sha256:e233a9ecfbf657192902180f6a67a225e5ec0194834df672eaeb2b3a50e8fb49" + }, + { + "name": "initscripts", + "epoch": 0, + "version": "10.00.8", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/initscripts-10.00.8-1.el8.x86_64.rpm", + "checksum": "sha256:350657e984b1736bb4a8c9cc01b772517a4194467d6db84110c1cc42131f1cae" + }, + { + "name": "ipcalc", + "epoch": 0, + "version": "0.2.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipcalc-0.2.4-4.el8.x86_64.rpm", + "checksum": "sha256:206de21c82d76de550bcc1959138472640b0a950a311b753203f5dfe5b201b7b" + }, + { + "name": "iproute", + "epoch": 0, + "version": "5.3.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iproute-5.3.0-5.el8.x86_64.rpm", + "checksum": "sha256:4405d32322fd496c65f57a12b6037fd75b49957269dbf9cb0417b598162f7407" + }, + { + "name": "iprutils", + "epoch": 0, + "version": "2.4.19", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iprutils-2.4.19-1.el8.x86_64.rpm", + "checksum": "sha256:4ce17c90ad64c2ca85191caa990db8eb0aec7cde24a26a89294c5821cfd20e5f" + }, + { + "name": "ipset", + "epoch": 0, + "version": "7.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipset-7.1-1.el8.x86_64.rpm", + "checksum": "sha256:c193b87ad1690e81ca35ec1f1f7dff94f179907ed13d5b7936c189ff5f8f2bae" + }, + { + "name": "ipset-libs", + "epoch": 0, + "version": "7.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ipset-libs-7.1-1.el8.x86_64.rpm", + "checksum": "sha256:3d807ee0bd43ba2cfbc5fa3678963fb706898bd41588a29330c315a9d88ab2a7" + }, + { + "name": "iptables", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-1.8.4-14.el8.x86_64.rpm", + "checksum": "sha256:f83dc47f0c2ac234e15d5687951285c23576fd2efcc615656c8585f2495456b6" + }, + { + "name": "iptables-ebtables", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-ebtables-1.8.4-14.el8.x86_64.rpm", + "checksum": "sha256:8716781f69e8f2bf3f171ed6a34a012f79dc76ce0bcfa318fa0b02d488173ee1" + }, + { + "name": "iptables-libs", + "epoch": 0, + "version": "1.8.4", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iptables-libs-1.8.4-14.el8.x86_64.rpm", + "checksum": "sha256:8295e4ccf1520821d3c68397066b6a50bb26cccdcab0092111ca1dde452c2332" + }, + { + "name": "iputils", + "epoch": 0, + "version": "20180629", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iputils-20180629-2.el8.x86_64.rpm", + "checksum": "sha256:a8961c50502aa02071c043a16f93399ac6794a058a0ef42be889abe60f35985b" + }, + { + "name": "irqbalance", + "epoch": 2, + "version": "1.4.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/irqbalance-1.4.0-4.el8.x86_64.rpm", + "checksum": "sha256:6844197fd8ffdb16cf94ab77709aa2954cb39512435a377401ebce340d06c7de" + }, + { + "name": "iwl100-firmware", + "epoch": 0, + "version": "39.31.5.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl100-firmware-39.31.5.1-99.el8.1.noarch.rpm", + "checksum": "sha256:cf6220736fdd005ba7c67ccb5d5d8a1d9c35718e3c13e79c80967866968d7344" + }, + { + "name": "iwl1000-firmware", + "epoch": 1, + "version": "39.31.5.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl1000-firmware-39.31.5.1-99.el8.1.noarch.rpm", + "checksum": "sha256:1bc038693be7ccd59674c478176c3badce4a56f785dd0690548b087bcc7adaa1" + }, + { + "name": "iwl105-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl105-firmware-18.168.6.1-99.el8.1.noarch.rpm", + "checksum": "sha256:959fcb0016788a2b1ee55f0801c1490b196416579bc9ac9da9e38786e6c78ff6" + }, + { + "name": "iwl135-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl135-firmware-18.168.6.1-99.el8.1.noarch.rpm", + "checksum": "sha256:204e4dbaf357e12ff041c1c203b2527f7d178905ebae53db3c12e57d28fcbf46" + }, + { + "name": "iwl2000-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl2000-firmware-18.168.6.1-99.el8.1.noarch.rpm", + "checksum": "sha256:72fe0e1837aa503049fada31c6e8ae73a4e550be2ddfd73303fb84e955fcc268" + }, + { + "name": "iwl2030-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl2030-firmware-18.168.6.1-99.el8.1.noarch.rpm", + "checksum": "sha256:f8c30f90610f8cc907009df99348a5e572f5598aed91280c15af604ba62687b2" + }, + { + "name": "iwl3160-firmware", + "epoch": 1, + "version": "25.30.13.0", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl3160-firmware-25.30.13.0-99.el8.1.noarch.rpm", + "checksum": "sha256:5cbe058e6d2177f88006fed866e6b1565d6024a12c311ae8eaa21008f76074b1" + }, + { + "name": "iwl5000-firmware", + "epoch": 0, + "version": "8.83.5.1_1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl5000-firmware-8.83.5.1_1-99.el8.1.noarch.rpm", + "checksum": "sha256:b55b77fb38d84685cef6638240daa54235fce156176c820a3c3b980bf414c5f4" + }, + { + "name": "iwl5150-firmware", + "epoch": 0, + "version": "8.24.2.2", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl5150-firmware-8.24.2.2-99.el8.1.noarch.rpm", + "checksum": "sha256:252d46d58e0c02cbe2d2485488bd63ea7129964643787557eae832102541f84f" + }, + { + "name": "iwl6000-firmware", + "epoch": 0, + "version": "9.221.4.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl6000-firmware-9.221.4.1-99.el8.1.noarch.rpm", + "checksum": "sha256:56cc340c88cabacd9a329f80edee141154dbf84808894e43a937247394623cf0" + }, + { + "name": "iwl6000g2a-firmware", + "epoch": 0, + "version": "18.168.6.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl6000g2a-firmware-18.168.6.1-99.el8.1.noarch.rpm", + "checksum": "sha256:950b6b41580f4c35a108345c1c8d9d3930cc95a2c4fe4b726f02bce67532151d" + }, + { + "name": "iwl6050-firmware", + "epoch": 0, + "version": "41.28.5.1", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl6050-firmware-41.28.5.1-99.el8.1.noarch.rpm", + "checksum": "sha256:8eb3370fe641e329b03838e560f45ee290b273dcccfa182d97ad2dbff59b47fd" + }, + { + "name": "iwl7260-firmware", + "epoch": 1, + "version": "25.30.13.0", + "release": "99.el8.1", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/iwl7260-firmware-25.30.13.0-99.el8.1.noarch.rpm", + "checksum": "sha256:1d28eaeaa59c48e4193c709dd2a6301c2f8701138164c05371a0d8f235d14c9c" + }, + { + "name": "jansson", + "epoch": 0, + "version": "2.11", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/jansson-2.11-3.el8.x86_64.rpm", + "checksum": "sha256:39e59e9a2460e3b6fe147501e79a57042f161c217963be212359031bb8b18daa" + }, + { + "name": "json-c", + "epoch": 0, + "version": "0.13.1", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-c-0.13.1-0.2.el8.x86_64.rpm", + "checksum": "sha256:53684acb274cb36b7064f93319f31633bef29a70290f3d2cbe8434cc122bfbe1" + }, + { + "name": "json-glib", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/json-glib-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:a1dcfb41bc9a8dc4533ebe66449f0101e4da7548b7f3d6f17e0d815025b9c437" + }, + { + "name": "kbd", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-2.0.4-10.el8.x86_64.rpm", + "checksum": "sha256:25b96d1432d32197ea5d769948649c431d7e289b18d779994d3d75d6f8d8c2a5" + }, + { + "name": "kbd-legacy", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-legacy-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:f0cb56a04fa3b27c1a3bb8896372077234123b36fe3461aca8ddc7b912030ce8" + }, + { + "name": "kbd-misc", + "epoch": 0, + "version": "2.0.4", + "release": "10.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kbd-misc-2.0.4-10.el8.noarch.rpm", + "checksum": "sha256:a41eef48b706b929464a45a4dbdca5b16201931fe56ff6ada4da0157db5e4b73" + }, + { + "name": "kernel", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:eb5e29df2e7f803a62769aa19c60959ee7d368cd51397e00ebdbedba7d2d4768" + }, + { + "name": "kernel-core", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-core-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:76ca09c73360f48d4b6fe4d4ee0aa974ef53531222df8e363d8006ec469051cf" + }, + { + "name": "kernel-modules", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-modules-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:97c8af6f58e3d14317036bd3ed2cbc498803c91c55b9dc0e8f0fddea7ac929e3" + }, + { + "name": "kernel-tools", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-tools-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:af495353f000008aab42640530c0c9005aaf60f0d4b4cf1a9b66b07bfc5b5881" + }, + { + "name": "kernel-tools-libs", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kernel-tools-libs-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:4882ff53265bdeabb69f1ac9c585454b28ae799ab31fa72c9eb10bdbe1f41d9a" + }, + { + "name": "kexec-tools", + "epoch": 0, + "version": "2.0.20", + "release": "29.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kexec-tools-2.0.20-29.el8.x86_64.rpm", + "checksum": "sha256:948e61e32986303f12f8dbe40bc44674287b3906a54dadae5e3dfd2ccba88fac" + }, + { + "name": "keyutils-libs", + "epoch": 0, + "version": "1.5.10", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/keyutils-libs-1.5.10-6.el8.x86_64.rpm", + "checksum": "sha256:4da971c6e5a8a759c919dc9cde21324ee2b309c96b46eb000b4f251a287b08b1" + }, + { + "name": "kmod", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-25-16.el8.x86_64.rpm", + "checksum": "sha256:1c00a658f084181e89eb10478845040d27903e90392c72b35b761497d5cced41" + }, + { + "name": "kmod-libs", + "epoch": 0, + "version": "25", + "release": "16.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kmod-libs-25-16.el8.x86_64.rpm", + "checksum": "sha256:a2c5362e76d88849af8379deb8bc60e294d1c227b7cd940f46e1fe4dc5a82aef" + }, + { + "name": "kpartx", + "epoch": 0, + "version": "0.8.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/kpartx-0.8.4-2.el8.x86_64.rpm", + "checksum": "sha256:2f9065135bb1e62bde15dd6844e4b326ae406bae79e9bc930055a284da2483ec" + }, + { + "name": "krb5-libs", + "epoch": 0, + "version": "1.18.2", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/krb5-libs-1.18.2-3.el8.x86_64.rpm", + "checksum": "sha256:1f90bdf8016e911b892514157ee7cbe404a275916e03aca4c2ab03f4f1898484" + }, + { + "name": "less", + "epoch": 0, + "version": "530", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/less-530-1.el8.x86_64.rpm", + "checksum": "sha256:68362500ad574eb2df43a3d260ab8d0f3ce1ae5f34e66d71f2478fef8e17cb4a" + }, + { + "name": "libacl", + "epoch": 0, + "version": "2.2.53", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libacl-2.2.53-1.el8.x86_64.rpm", + "checksum": "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178" + }, + { + "name": "libarchive", + "epoch": 0, + "version": "3.3.2", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libarchive-3.3.2-9.el8.x86_64.rpm", + "checksum": "sha256:dadbd549dfc13e2a561b15c3a785ea1282a92d67a318fb5b685559aa1dd66bc5" + }, + { + "name": "libassuan", + "epoch": 0, + "version": "2.5.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libassuan-2.5.1-3.el8.x86_64.rpm", + "checksum": "sha256:862e75a1cf6aa5be750a530c8ce8b999d0b2efe9737e20f37f9f9153a82e56fa" + }, + { + "name": "libattr", + "epoch": 0, + "version": "2.4.48", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libattr-2.4.48-3.el8.x86_64.rpm", + "checksum": "sha256:2733570f8ea94551f3381538f9c8642c88532c800b384c07b4db02f6b8896c3f" + }, + { + "name": "libbasicobjects", + "epoch": 0, + "version": "0.1.1", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libbasicobjects-0.1.1-39.el8.x86_64.rpm", + "checksum": "sha256:cac59a5629e7229653c29c0d575bd8f8c2d3774474615eb65615109afb151981" + }, + { + "name": "libblkid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libblkid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:ff3567116fa959bff97f9bc4c5b4c00f146a5fd97036f3ced389db3eb683609a" + }, + { + "name": "libcap", + "epoch": 0, + "version": "2.26", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-2.26-4.el8.x86_64.rpm", + "checksum": "sha256:382afcc614dbcd3817aa3f7e12e2a5c32b3e5ba91b27f7b86b7ef5102c7b82cb" + }, + { + "name": "libcap-ng", + "epoch": 0, + "version": "0.7.9", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcap-ng-0.7.9-5.el8.x86_64.rpm", + "checksum": "sha256:268b587d4a2db65a55e0009cfa506126022829589f049a77f70b9dc015b3ed05" + }, + { + "name": "libcollection", + "epoch": 0, + "version": "0.7.0", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcollection-0.7.0-39.el8.x86_64.rpm", + "checksum": "sha256:ecd53a50b4cb20dd1597f45ab4a9cba1fd7793a6000fb2114421687779738672" + }, + { + "name": "libcom_err", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcom_err-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:c4074dcf1be5305379967c6ce11e30ce3a1a26320f7888b5dbda7d0454304ba9" + }, + { + "name": "libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:a8edffe76202b2826531ff3601508295d01247323cb6810c4f2f097a761cef42" + }, + { + "name": "libcroco", + "epoch": 0, + "version": "0.6.12", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcroco-0.6.12-4.el8.x86_64.rpm", + "checksum": "sha256:58fc13dcab5f013639c70af7540bbafaa7dfee149434a520a2213c96dab4d2c2" + }, + { + "name": "libcurl", + "epoch": 0, + "version": "7.61.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libcurl-7.61.1-12.el8.x86_64.rpm", + "checksum": "sha256:fae13dc5f722be043342a97fbdc21ae34776ef3a94fd13b9d45319745633426a" + }, + { + "name": "libdaemon", + "epoch": 0, + "version": "0.14", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdaemon-0.14-15.el8.x86_64.rpm", + "checksum": "sha256:798420bbda79fd0b9312abac25efad6b28957c512497f37f4beddad5d67dd66a" + }, + { + "name": "libdb", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:68c34ed84de8a06fd00fcbf4dd4c6cb33618181004fb7e7c5c54905cb67763ac" + }, + { + "name": "libdb-utils", + "epoch": 0, + "version": "5.3.28", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdb-utils-5.3.28-39.el8.x86_64.rpm", + "checksum": "sha256:7935456a9435d91adb8ec92d1c341fee92d03ca48c58bd22fb18c5e997b6f0d8" + }, + { + "name": "libdhash", + "epoch": 0, + "version": "0.5.0", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdhash-0.5.0-39.el8.x86_64.rpm", + "checksum": "sha256:50c0d1828a9e8db638c09d88afb0828d98349027ce498ee7df74e7ff6052ac1d" + }, + { + "name": "libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:9bcd2b47bb7133c35148c68ce011b9dfd1b37dbf6d5daf3f52b64833bc8a8bed" + }, + { + "name": "libedit", + "epoch": 0, + "version": "3.1", + "release": "23.20170329cvs.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libedit-3.1-23.20170329cvs.el8.x86_64.rpm", + "checksum": "sha256:0391105afa53c9503b59591615bd7c98e2f7a4cd94ff4fd1451c4234522f3880" + }, + { + "name": "libevent", + "epoch": 0, + "version": "2.1.8", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libevent-2.1.8-5.el8.x86_64.rpm", + "checksum": "sha256:7e95dc277991981a081f73f4410219a196b7b0d02dbe1ad2ebfce172c215669e" + }, + { + "name": "libfdisk", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libfdisk-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:8b38dad545986bfa32a13f49415fd7fa21d8e0675e07624db7168782025972cc" + }, + { + "name": "libffi", + "epoch": 0, + "version": "3.1", + "release": "22.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libffi-3.1-22.el8.x86_64.rpm", + "checksum": "sha256:eb3732b52b805b28192463682e961408db8c6449bb27e733081cff62e77194b3" + }, + { + "name": "libgcc", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcc-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:13faf1304397445e64ae1a38554015fb3dc51ac4a7bc7edd99a9a0b9eb6222c7" + }, + { + "name": "libgcrypt", + "epoch": 0, + "version": "1.8.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgcrypt-1.8.5-4.el8.x86_64.rpm", + "checksum": "sha256:a12d7736b18b1cb21ab10e3b42c303693904e4fa03b772a9a7c9ca8be84f6894" + }, + { + "name": "libgomp", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgomp-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:5c826c677cf8205d7aaf773f1afbff12c00ed05b1b713eccbcd2f853d4e9308e" + }, + { + "name": "libgpg-error", + "epoch": 0, + "version": "1.31", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgpg-error-1.31-1.el8.x86_64.rpm", + "checksum": "sha256:4bef8c6105544198bc4c5fecd21202bcf7823dda888cbe3fee888ee936c46bd9" + }, + { + "name": "libgudev", + "epoch": 0, + "version": "232", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libgudev-232-4.el8.x86_64.rpm", + "checksum": "sha256:713ec69b972a8e88622b3fcd3b84fccdbd6c333b68b6c52151c2350edad2576a" + }, + { + "name": "libidn2", + "epoch": 0, + "version": "2.2.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libidn2-2.2.0-1.el8.x86_64.rpm", + "checksum": "sha256:4a62975251933dcaff77fdbd7704e8a12bea0ecb6eaaae5ea5e552bedd6788ec" + }, + { + "name": "libini_config", + "epoch": 0, + "version": "1.3.1", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libini_config-1.3.1-39.el8.x86_64.rpm", + "checksum": "sha256:c46ee71ba426e0964b2264bdf18fc4cff4d7815206c9e8a471bdf678e65c24b9" + }, + { + "name": "libkcapi", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:f753d133921c84b44694d63869ff20e35e47cd09db7d190eda15f2cca953033f" + }, + { + "name": "libkcapi-hmaccalc", + "epoch": 0, + "version": "1.2.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libkcapi-hmaccalc-1.2.0-2.el8.x86_64.rpm", + "checksum": "sha256:1b9c2dc9be278b1a3342dc080d55eff0c2fdce806b037682e431af83c534817e" + }, + { + "name": "libksba", + "epoch": 0, + "version": "1.3.5", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libksba-1.3.5-7.el8.x86_64.rpm", + "checksum": "sha256:1d47e465939bba5bcf9c37be2516e60d6c9449ccee70a54a6133df989ac8b1f5" + }, + { + "name": "libldb", + "epoch": 0, + "version": "2.1.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libldb-2.1.3-2.el8.x86_64.rpm", + "checksum": "sha256:231bc0eeb8fb127f0a4da5a4da1edd226067d5029a0b4fd6ef72c246ccfc31c0" + }, + { + "name": "libmetalink", + "epoch": 0, + "version": "0.1.3", + "release": "7.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmetalink-0.1.3-7.el8.x86_64.rpm", + "checksum": "sha256:cd7c30d21e7240f60f0861c229e17fda43e855ab4c78fab39f47f7ae2be5720e" + }, + { + "name": "libmnl", + "epoch": 0, + "version": "1.0.4", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmnl-1.0.4-6.el8.x86_64.rpm", + "checksum": "sha256:9c5594fcac97c0f8813d7a188e2368e3b1095025fc4a0ecbd5d17e54c0c93f97" + }, + { + "name": "libmodulemd", + "epoch": 0, + "version": "2.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmodulemd-2.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:bf3da2ba8e4cc0c1cc56a2472b963b53bbb193367eb152e5cc6716bb6c139c38" + }, + { + "name": "libmount", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libmount-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:060c654945c0ae7e831f612f3ebc5ea77a33e83d8b57a8068acc7cb8b8d0e5c5" + }, + { + "name": "libndp", + "epoch": 0, + "version": "1.7", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libndp-1.7-3.el8.x86_64.rpm", + "checksum": "sha256:53fb6834e2e439e79225d957c4643922da74836417b5558d0c2943b546b26e57" + }, + { + "name": "libnetfilter_conntrack", + "epoch": 0, + "version": "1.0.6", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnetfilter_conntrack-1.0.6-5.el8.x86_64.rpm", + "checksum": "sha256:74d05cb72dc6740be73480e68b15b209d7e7a2bf7d7d54e0d3a2dc261ce64e4b" + }, + { + "name": "libnfnetlink", + "epoch": 0, + "version": "1.0.1", + "release": "13.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnfnetlink-1.0.1-13.el8.x86_64.rpm", + "checksum": "sha256:61cf7338e12188f787c7162e2cd669c895e4e2cf4ae86c9debcd56fd3b8a8322" + }, + { + "name": "libnfsidmap", + "epoch": 1, + "version": "2.3.3", + "release": "35.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnfsidmap-2.3.3-35.el8.x86_64.rpm", + "checksum": "sha256:2eed977380b41885d4f7ad33e122abbb9ea7391c1255d182451efd457688c8b2" + }, + { + "name": "libnftnl", + "epoch": 0, + "version": "1.1.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnftnl-1.1.5-4.el8.x86_64.rpm", + "checksum": "sha256:b05032d419c29bfbe60b3495dab9b368865e2154b1b25d87b1e4f5b379226747" + }, + { + "name": "libnghttp2", + "epoch": 0, + "version": "1.33.0", + "release": "3.el8_2.1", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnghttp2-1.33.0-3.el8_2.1.x86_64.rpm", + "checksum": "sha256:2e8fd9d87a922b1441538318c401b1e4353b87a9e8000ca76b0cee681ec79c45" + }, + { + "name": "libnl3", + "epoch": 0, + "version": "3.5.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-3.5.0-1.el8.x86_64.rpm", + "checksum": "sha256:0129696c208f60326723c650295167b0600791ccb2e9c3d446c4caf9adecb3d7" + }, + { + "name": "libnl3-cli", + "epoch": 0, + "version": "3.5.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnl3-cli-3.5.0-1.el8.x86_64.rpm", + "checksum": "sha256:ac2800369b7f4dc05a8fec452eabedf02f153c11e188a1e80157e35592305690" + }, + { + "name": "libnsl2", + "epoch": 0, + "version": "1.2.0", + "release": "2.20180605git4a062cf.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64.rpm", + "checksum": "sha256:f7e60c8a5eaf056a9c67834671561196b961fba7bc763568f1c01c3ab998bb46" + }, + { + "name": "libpath_utils", + "epoch": 0, + "version": "0.2.1", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpath_utils-0.2.1-39.el8.x86_64.rpm", + "checksum": "sha256:2eba2dc51974271244bdeaaf17c6e8fac3c35b62914b680076bdc4a32272df01" + }, + { + "name": "libpcap", + "epoch": 14, + "version": "1.9.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpcap-1.9.1-4.el8.x86_64.rpm", + "checksum": "sha256:8df85b3398f7b2e26e2479076430a8f442069df2e5fa229931afe3eb06a1ffbc" + }, + { + "name": "libpciaccess", + "epoch": 0, + "version": "0.14", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpciaccess-0.14-1.el8.x86_64.rpm", + "checksum": "sha256:831a51570e09368c7b720567827b74a46ed5a01c7c39906c185c385bc50079d9" + }, + { + "name": "libpipeline", + "epoch": 0, + "version": "1.5.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpipeline-1.5.0-2.el8.x86_64.rpm", + "checksum": "sha256:539abfc369a17023658486f7b4a48c8db159cc4d617b27da256ddac6e15ea687" + }, + { + "name": "libpng", + "epoch": 2, + "version": "1.6.34", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpng-1.6.34-5.el8.x86_64.rpm", + "checksum": "sha256:53d9bb412615966acdf9a6b1c26c5899a9c2c0b76a27f360d3d6076536d2540a" + }, + { + "name": "libpsl", + "epoch": 0, + "version": "0.20.2", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpsl-0.20.2-6.el8.x86_64.rpm", + "checksum": "sha256:3384bccab530807195eb9d72547aa588bdea55567ca86d1719f32402bf1cd0c9" + }, + { + "name": "libpwquality", + "epoch": 0, + "version": "1.4.0", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libpwquality-1.4.0-9.el8.x86_64.rpm", + "checksum": "sha256:6ae60a818463325ca5c0af34d1af9322185a1b89b14d3a517c9e21c7bda31be0" + }, + { + "name": "libref_array", + "epoch": 0, + "version": "0.1.5", + "release": "39.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libref_array-0.1.5-39.el8.x86_64.rpm", + "checksum": "sha256:507442831068c749ba21b22bd96993a1a2a6c74dd53c55f34c7f81a21554c82d" + }, + { + "name": "librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librepo-1.12.0-1.el8.x86_64.rpm", + "checksum": "sha256:df33554eef8c3e23075430e885df88426e106fc73d53a50ce2708cfac8b900a3" + }, + { + "name": "libreport-filesystem", + "epoch": 0, + "version": "2.9.5", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libreport-filesystem-2.9.5-11.el8.x86_64.rpm", + "checksum": "sha256:b9092c33a502c96dbfcc1109286472bc5c199ed736a677bdcaa791771d4145a2" + }, + { + "name": "librhsm", + "epoch": 0, + "version": "0.0.3", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/librhsm-0.0.3-3.el8.x86_64.rpm", + "checksum": "sha256:a74ecbb5809bcddc7120371e2b005445b3cd9588d40b1be9e8f8030a80090cf8" + }, + { + "name": "libseccomp", + "epoch": 0, + "version": "2.4.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libseccomp-2.4.3-1.el8.x86_64.rpm", + "checksum": "sha256:37ecb157872f2178dfa1e47a6914ffb5b40c5cf0b13c66364110f80a4fe1428c" + }, + { + "name": "libsecret", + "epoch": 0, + "version": "0.18.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsecret-0.18.6-1.el8.x86_64.rpm", + "checksum": "sha256:1dc1dbd0aa4dad715b3242468d4841f2f35bf6aa60d8e1928ee692784b12da1e" + }, + { + "name": "libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:d90ee2ba975bc65ee050d7a89b8e70a66af2830e609a71e03104e1d31794d41e" + }, + { + "name": "libselinux-utils", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libselinux-utils-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:e27fbf3ffa02e0f9de777f0836c4ce2b472fe5b40ad81d00493c083c47f494b8" + }, + { + "name": "libsemanage", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsemanage-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:75f64613c3abd86bc9cc0e05f0c4bf6c890a6062eed3ee6beb220646d1fb56eb" + }, + { + "name": "libsepol", + "epoch": 0, + "version": "2.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsepol-2.9-1.el8.x86_64.rpm", + "checksum": "sha256:65e91fae1a228be051a53abf0599c6bc9057dbbd9fcb429239703e8ed336863b" + }, + { + "name": "libsigsegv", + "epoch": 0, + "version": "2.11", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsigsegv-2.11-5.el8.x86_64.rpm", + "checksum": "sha256:d0188d22323619c9069c2de6f85ebe5302c76fde5f52ebd148988e75a75110dc" + }, + { + "name": "libsmartcols", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsmartcols-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e1b2922991a12bcfd754c77baf6278f6f7c91bde603fe67dbd480ac4cf26147c" + }, + { + "name": "libsolv", + "epoch": 0, + "version": "0.7.11", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsolv-0.7.11-1.el8.x86_64.rpm", + "checksum": "sha256:bf5ea2e60897391ecb7eec0ffc50421c908352ba2286038580bf3848c93ea62a" + }, + { + "name": "libss", + "epoch": 0, + "version": "1.45.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libss-1.45.6-1.el8.x86_64.rpm", + "checksum": "sha256:a508b98dab9d1706d2dc9e331fc30c3e1544b745c8e8a2a26972e3de2e31c454" + }, + { + "name": "libssh", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-0.9.4-2.el8.x86_64.rpm", + "checksum": "sha256:f42d5927dc2a8335180a2ebeb62523155cd452c3fb4057767ecb062fdce7bdeb" + }, + { + "name": "libssh-config", + "epoch": 0, + "version": "0.9.4", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libssh-config-0.9.4-2.el8.noarch.rpm", + "checksum": "sha256:121a18cdc3ff0a1d66b8f9a879ccabffb501468b764d7d285abbcf5c25337bd0" + }, + { + "name": "libsss_autofs", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_autofs-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:d186f806ed9c841a385f7acf194c20b78616396414da9131982e469f065619b8" + }, + { + "name": "libsss_certmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_certmap-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:beea3f8c88b9c0a74d75622aa71467f51c457d1acf0ff557f7cd0e2ae3dfafe3" + }, + { + "name": "libsss_idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_idmap-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:c4279ad2915f4ce1806c4121675e49d2b525bb6e977d487dc2ad138fce8c2734" + }, + { + "name": "libsss_nss_idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_nss_idmap-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:7c292b3bb74d12d77e1e22221c55696a0c5f50304040b3a706c2164d5b6a42e4" + }, + { + "name": "libsss_sudo", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsss_sudo-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:44e81330b185085f871e9fbf8fae27c8de411600c032aca371dc6d39a3e261da" + }, + { + "name": "libstdc++", + "epoch": 0, + "version": "8.3.1", + "release": "5.1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libstdc++-8.3.1-5.1.el8.x86_64.rpm", + "checksum": "sha256:9cf4942eeeee7914e8a8dc787fa0a46b8976511eac4ae1c3de4eee32a6614444" + }, + { + "name": "libsysfs", + "epoch": 0, + "version": "2.1.0", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libsysfs-2.1.0-24.el8.x86_64.rpm", + "checksum": "sha256:3a1058c6ba468722090a74002a3239161771b0d8b444975bff891afd45bb672a" + }, + { + "name": "libtalloc", + "epoch": 0, + "version": "2.3.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtalloc-2.3.1-2.el8.x86_64.rpm", + "checksum": "sha256:3b087daa7e9de69c051f22f9df1ef00867ffddd99357bc3a215ccde76a13c02f" + }, + { + "name": "libtasn1", + "epoch": 0, + "version": "4.13", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtasn1-4.13-3.el8.x86_64.rpm", + "checksum": "sha256:b1ce343456452d02648d8a0c4ff277e25eb32113b800ed3f16fca91939193e0f" + }, + { + "name": "libtdb", + "epoch": 0, + "version": "1.4.3", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtdb-1.4.3-1.el8.x86_64.rpm", + "checksum": "sha256:4ed1a6294eea09a3a7e15683267ca5d383e4c2b27fd57fe05d2666e0e6c3d26f" + }, + { + "name": "libteam", + "epoch": 0, + "version": "1.29", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libteam-1.29-5.el8.x86_64.rpm", + "checksum": "sha256:7c89c2d055013779252c12643e8f0b3731f4dd5e2b61d9d81233a0ee298abb36" + }, + { + "name": "libtevent", + "epoch": 0, + "version": "0.10.2", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtevent-0.10.2-2.el8.x86_64.rpm", + "checksum": "sha256:860676d4231afa3e6b23933d8dd65e5f7f5823910791e6481d2440ae4ec64c53" + }, + { + "name": "libtirpc", + "epoch": 0, + "version": "1.1.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtirpc-1.1.4-4.el8.x86_64.rpm", + "checksum": "sha256:465dd96259ea719126b2f98af5d056bac30c99872e9fb9c5d951eb87174e1f6c" + }, + { + "name": "libtool-ltdl", + "epoch": 0, + "version": "2.4.6", + "release": "25.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libtool-ltdl-2.4.6-25.el8.x86_64.rpm", + "checksum": "sha256:d805c42ee9293a8ba35f49af63e3f7d813420d4a62ee4cff5ecd7391be851a9b" + }, + { + "name": "libunistring", + "epoch": 0, + "version": "0.9.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libunistring-0.9.9-3.el8.x86_64.rpm", + "checksum": "sha256:07d885ed980e09242fa1b6b4faaa5aaf3ea1f24415ac86a6a1f2f08ab5797784" + }, + { + "name": "libusbx", + "epoch": 0, + "version": "1.0.23", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libusbx-1.0.23-3.el8.x86_64.rpm", + "checksum": "sha256:d76a3546d3cd5db11e81c2fd9df6cfef74042970149a18a45db154e909d6312b" + }, + { + "name": "libuser", + "epoch": 0, + "version": "0.62", + "release": "23.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuser-0.62-23.el8.x86_64.rpm", + "checksum": "sha256:b2dcbd3b81196b16e33054d31c0129c432cf59fb591035845cc299bbb46000c1" + }, + { + "name": "libutempter", + "epoch": 0, + "version": "1.1.6", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libutempter-1.1.6-14.el8.x86_64.rpm", + "checksum": "sha256:ebc4d394a251feba7e1025d7f8ba61e619c2a6fc14229482bf28096e49cef520" + }, + { + "name": "libuuid", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libuuid-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:e56029883b8124e337f3f804e8305e6e0013f01140db8122208f4ef04a70f4eb" + }, + { + "name": "libverto", + "epoch": 0, + "version": "0.3.0", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libverto-0.3.0-5.el8.x86_64.rpm", + "checksum": "sha256:9560ff328ff89cdea202354f17e852c69fc41de1ed008e5dd1a86ffadb89c6f1" + }, + { + "name": "libxcrypt", + "epoch": 0, + "version": "4.1.1", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxcrypt-4.1.1-4.el8.x86_64.rpm", + "checksum": "sha256:0d612ef49922f8eff2d2c96e8da290f77dacf7b667f6b8a9be751bd6394fcf73" + }, + { + "name": "libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxml2-2.9.7-8.el8.x86_64.rpm", + "checksum": "sha256:b15c1bdad5fe9228ab12c44a24962417c9a15620a16077421151912fca9ec350" + }, + { + "name": "libxslt", + "epoch": 0, + "version": "1.1.32", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libxslt-1.1.32-5.el8.x86_64.rpm", + "checksum": "sha256:2146bf4beddd81d4ef842a99f1b52cd827713393e266a78608be56171ea79bc6" + }, + { + "name": "libyaml", + "epoch": 0, + "version": "0.1.7", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libyaml-0.1.7-5.el8.x86_64.rpm", + "checksum": "sha256:018409b1eda8be48a11a5b76b95e82ff1d9002569e0644291532d8424dc31edf" + }, + { + "name": "libzstd", + "epoch": 0, + "version": "1.4.4", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/libzstd-1.4.4-1.el8.x86_64.rpm", + "checksum": "sha256:45cc50a8b02f9bbbbe2c8c056f34622d15d383f695916ac07821d688fcab1c25" + }, + { + "name": "linux-firmware", + "epoch": 0, + "version": "20200619", + "release": "99.git3890db36.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/linux-firmware-20200619-99.git3890db36.el8.noarch.rpm", + "checksum": "sha256:0dc7b3a90e2e0806e398ccc929dfa873b951ae0eb770690d044a1e1529e335b9" + }, + { + "name": "logrotate", + "epoch": 0, + "version": "3.14.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/logrotate-3.14.0-4.el8.x86_64.rpm", + "checksum": "sha256:37504d807ac0bb6c429d7be9c636f7b755464023511d856846dbb9deb8f6a76d" + }, + { + "name": "lshw", + "epoch": 0, + "version": "B.02.19.2", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lshw-B.02.19.2-2.el8.x86_64.rpm", + "checksum": "sha256:b59cdea55a890a10f484d8596e244a18455ee82920c7e466991801d24c4718cd" + }, + { + "name": "lsscsi", + "epoch": 0, + "version": "0.30", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lsscsi-0.30-1.el8.x86_64.rpm", + "checksum": "sha256:b9a17114d551cc8259eea6996b6871ec36675330fdb1eb16db529e6f8a9c34d5" + }, + { + "name": "lua-libs", + "epoch": 0, + "version": "5.3.4", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lua-libs-5.3.4-11.el8.x86_64.rpm", + "checksum": "sha256:60c5b5ece7a84f1c5e320b6120b64c176ce4bc48b484b85e20a13cb52ee7db05" + }, + { + "name": "lz4-libs", + "epoch": 0, + "version": "1.8.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lz4-libs-1.8.3-2.el8.x86_64.rpm", + "checksum": "sha256:5d8dc82442f6a87b0878c74c61638c012bf50a23df151a65529b0ae75e6aff82" + }, + { + "name": "lzo", + "epoch": 0, + "version": "2.08", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/lzo-2.08-14.el8.x86_64.rpm", + "checksum": "sha256:a3dedf8c077b4656d3cd4ef641e696397a3fff83ee8b14f0e3fc69d7c10cebcf" + }, + { + "name": "man-db", + "epoch": 0, + "version": "2.7.6.1", + "release": "17.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/man-db-2.7.6.1-17.el8.x86_64.rpm", + "checksum": "sha256:7b6856dc4dc1d88d9c3c9597fb824b5776af59f045087bdb2713d64045216a36" + }, + { + "name": "microcode_ctl", + "epoch": 4, + "version": "20200609", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/microcode_ctl-20200609-2.el8.x86_64.rpm", + "checksum": "sha256:0e4b7687f0c62f4e336223b939f6cb169c8dac49eee23c53fd919e58d8f989df" + }, + { + "name": "mozjs60", + "epoch": 0, + "version": "60.9.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mozjs60-60.9.0-4.el8.x86_64.rpm", + "checksum": "sha256:fd9e5c379cd3482d32686fb13881827a39037e7a7afa92c62d58c1f05fcb797f" + }, + { + "name": "mpfr", + "epoch": 0, + "version": "3.1.6", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/mpfr-3.1.6-1.el8.x86_64.rpm", + "checksum": "sha256:28ccf9ff472c824f6c5a3c2a0c076bfa221b8e48368e43de9b3c2e83d67e8b5d" + }, + { + "name": "ncurses", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:62283915e28b9eab0490c3190ea3dc8a65bbfd2c9e172eb5eb9d589e6fb3805f" + }, + { + "name": "ncurses-base", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-base-6.1-7.20180224.el8.noarch.rpm", + "checksum": "sha256:ec84264c5a188f1e717dcac04fb190869a3e801d54b0e83769e3f42b27fd180b" + }, + { + "name": "ncurses-libs", + "epoch": 0, + "version": "6.1", + "release": "7.20180224.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-7.20180224.el8.x86_64.rpm", + "checksum": "sha256:6d2ad3959103e46354f7491ff7911759016fa262581b0149ed5b3433b24a8129" + }, + { + "name": "nettle", + "epoch": 0, + "version": "3.4.1", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nettle-3.4.1-2.el8.x86_64.rpm", + "checksum": "sha256:6431a43da4fa2af839b5cc47c462d26b6d5c60f11bdd9045d363a9ba8ea8b781" + }, + { + "name": "newt", + "epoch": 0, + "version": "0.52.20", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/newt-0.52.20-11.el8.x86_64.rpm", + "checksum": "sha256:eb9b37827f1851c8a2683cd86026fda90847afe90d51ea746d7cd5f49f6f90d1" + }, + { + "name": "nftables", + "epoch": 1, + "version": "0.9.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/nftables-0.9.3-14.el8.x86_64.rpm", + "checksum": "sha256:5ac24d7513e9daa137064985cd8a8774c94aa8a6c07e2814d0c56ddde33fcc8d" + }, + { + "name": "npth", + "epoch": 0, + "version": "1.5", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/npth-1.5-4.el8.x86_64.rpm", + "checksum": "sha256:4f3c2518a3a02e4cec426928f8e5b28d9318af2b1aeaf7fc77f9d4a313f09740" + }, + { + "name": "numactl-libs", + "epoch": 0, + "version": "2.0.12", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/numactl-libs-2.0.12-11.el8.x86_64.rpm", + "checksum": "sha256:d94a39545f8570ba2d199e4892cfe05ebd5ea6e4e8322790b4f960bf92da5f09" + }, + { + "name": "openldap", + "epoch": 0, + "version": "2.4.46", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openldap-2.4.46-15.el8.x86_64.rpm", + "checksum": "sha256:727d1c0c100982902471b5fa5025bade5da78823942453991e8f4f0fb3d07515" + }, + { + "name": "openssh", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-8.0p1-5.el8.x86_64.rpm", + "checksum": "sha256:b5fc6f35798edccd0390e54fce40290936c3699227e79cc6d1a42d803358fd03" + }, + { + "name": "openssh-clients", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-clients-8.0p1-5.el8.x86_64.rpm", + "checksum": "sha256:3730f3f8d3332836f278250408891cb097379a5d7745fe698b1d418e9e13d335" + }, + { + "name": "openssh-server", + "epoch": 0, + "version": "8.0p1", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssh-server-8.0p1-5.el8.x86_64.rpm", + "checksum": "sha256:fd7bc748b59a48a1ba803dc893be729c8624a4141e23fcef126a401857bbb455" + }, + { + "name": "openssl", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:cc33536bf590feadcad7f57f58150ff524ca13964f681e3b0e746a0b21257499" + }, + { + "name": "openssl-libs", + "epoch": 1, + "version": "1.1.1g", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-libs-1.1.1g-9.el8.x86_64.rpm", + "checksum": "sha256:c03f6a38cb03e9a2a1b36150e5c001b82aa632502097bfc0b8011fdba807db16" + }, + { + "name": "openssl-pkcs11", + "epoch": 0, + "version": "0.4.10", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/openssl-pkcs11-0.4.10-2.el8.x86_64.rpm", + "checksum": "sha256:c2ca16e84cca561fb94b13e4ef72b0c5ea2c463b8710d40aedce83a833c663e5" + }, + { + "name": "os-prober", + "epoch": 0, + "version": "1.74", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/os-prober-1.74-6.el8.x86_64.rpm", + "checksum": "sha256:a2e953d11907e1e27d55f44316322fff0ddd8de181d352e5291610b808386d70" + }, + { + "name": "p11-kit", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:ec05914d24f6708268952be70cc6dfdd02053baf2c30d28406a6f8f1a87a854f" + }, + { + "name": "p11-kit-trust", + "epoch": 0, + "version": "0.23.14", + "release": "5.el8_0", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/p11-kit-trust-0.23.14-5.el8_0.x86_64.rpm", + "checksum": "sha256:75ebd7e3597777491be927ca628750b16ad58023a986a3d5948953e50859a7b1" + }, + { + "name": "pam", + "epoch": 0, + "version": "1.3.1", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pam-1.3.1-11.el8.x86_64.rpm", + "checksum": "sha256:c73b78b28dff667ab02dad56a168bb00ee39284404e26d7bc5b74baf58d1bf6e" + }, + { + "name": "parted", + "epoch": 0, + "version": "3.2", + "release": "38.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/parted-3.2-38.el8.x86_64.rpm", + "checksum": "sha256:22585bd5d69c5e0a06fe00a6844da2e5d311512374c1d176f17f41caab7e121f" + }, + { + "name": "passwd", + "epoch": 0, + "version": "0.80", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/passwd-0.80-3.el8.x86_64.rpm", + "checksum": "sha256:7c0b2b064dad700cba2754b46f483e3e59aaf798740470df1daad3d5239fb893" + }, + { + "name": "pciutils", + "epoch": 0, + "version": "3.6.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pciutils-3.6.4-2.el8.x86_64.rpm", + "checksum": "sha256:22942af5dab657f662538619ab84a260d3c92e3498694fca2a126100ff9ab316" + }, + { + "name": "pciutils-libs", + "epoch": 0, + "version": "3.6.4", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pciutils-libs-3.6.4-2.el8.x86_64.rpm", + "checksum": "sha256:da5606af487682acce52799418a97614d0f6e6b72d15c88c4f6f2a076f384dac" + }, + { + "name": "pcre", + "epoch": 0, + "version": "8.42", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre-8.42-4.el8.x86_64.rpm", + "checksum": "sha256:ecc78698c4e19ce8bfd0a133bc5e8e437171465887437ca2bc18de02c43acf0f" + }, + { + "name": "pcre2", + "epoch": 0, + "version": "10.32", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pcre2-10.32-2.el8.x86_64.rpm", + "checksum": "sha256:2ae7eca09c469bbf5c362daa544ccb453f22d7267a85e7aec006a83cce163aa8" + }, + { + "name": "pigz", + "epoch": 0, + "version": "2.4", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/pigz-2.4-4.el8.x86_64.rpm", + "checksum": "sha256:bd9271820c03337924ca655f164e34a158a4d3b88fb03c18eb822cb6a66a083f" + }, + { + "name": "platform-python", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:25027b0c88e7bf2d86f6157174f2ed9dd5cecf9849abcbab329363abe56e1c96" + }, + { + "name": "platform-python-pip", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-pip-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:d2d5d3880afacd32febf9bed38a2fc7129bd9ba80d05743ab66fbe2134c1795e" + }, + { + "name": "platform-python-setuptools", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/platform-python-setuptools-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:226b4efe6fb8e19d17cf4ffed266a413dac4801ad804887e5e00f7fb8e6c2ef9" + }, + { + "name": "policycoreutils", + "epoch": 0, + "version": "2.9", + "release": "9.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/policycoreutils-2.9-9.el8.x86_64.rpm", + "checksum": "sha256:e8e151a145e2413f5caffde89b8abea77c85dd1becc8b12343ebf13e10e51a71" + }, + { + "name": "polkit", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-0.115-11.el8.x86_64.rpm", + "checksum": "sha256:8af00d4b0857240310156e05123e07795e6573da7c1fe9e7fd83b51f13971725" + }, + { + "name": "polkit-libs", + "epoch": 0, + "version": "0.115", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-libs-0.115-11.el8.x86_64.rpm", + "checksum": "sha256:441efa6f0b9a9905ef11ec987d6db89e7dba2857060020c4554e32db3e59fce5" + }, + { + "name": "polkit-pkla-compat", + "epoch": 0, + "version": "0.1", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/polkit-pkla-compat-0.1-12.el8.x86_64.rpm", + "checksum": "sha256:9a9ca6857f517f1249d2eb496fe904590d6203e4a9547a28e0b23f21c4cae24a" + }, + { + "name": "popt", + "epoch": 0, + "version": "1.16", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/popt-1.16-14.el8.x86_64.rpm", + "checksum": "sha256:807d8f42dea8da1b562a6c8e93d621bee21e77ff3bf8f69b20b0e42488c96ec3" + }, + { + "name": "prefixdevname", + "epoch": 0, + "version": "0.1.0", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/prefixdevname-0.1.0-6.el8.x86_64.rpm", + "checksum": "sha256:8d371e753071edc796d2eadb8278980290511be6279fdf46649c81b859497d6a" + }, + { + "name": "procps-ng", + "epoch": 0, + "version": "3.3.15", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/procps-ng-3.3.15-2.el8.x86_64.rpm", + "checksum": "sha256:3ae2e5b39c336aa80699d3b8e7daa2242a3ac56c61c1896123445062b86511e7" + }, + { + "name": "publicsuffix-list-dafsa", + "epoch": 0, + "version": "20180723", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/publicsuffix-list-dafsa-20180723-1.el8.noarch.rpm", + "checksum": "sha256:f8c191d8b952621d10a1055be960bbe07be66f557c5a9d007f8908abcde1b9af" + }, + { + "name": "python3-asn1crypto", + "epoch": 0, + "version": "0.24.0", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-asn1crypto-0.24.0-3.el8.noarch.rpm", + "checksum": "sha256:c38009320ce76f619877f7454c8e112b5d0ab36dc5086426be0a360b2bc38d34" + }, + { + "name": "python3-cffi", + "epoch": 0, + "version": "1.11.5", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-cffi-1.11.5-5.el8.x86_64.rpm", + "checksum": "sha256:13ffce0597b689dd53f55ea0d03dd6d013246634f5c6cbcef51fa549d9734b29" + }, + { + "name": "python3-configobj", + "epoch": 0, + "version": "5.0.6", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-configobj-5.0.6-11.el8.noarch.rpm", + "checksum": "sha256:3a9aede6732c73278d74c413ad9559c1ccf0c0bbdfd1b61734cf984e75d20367" + }, + { + "name": "python3-cryptography", + "epoch": 0, + "version": "2.3", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-cryptography-2.3-3.el8.x86_64.rpm", + "checksum": "sha256:7a7a238ea529165348acef1d1a20c1d47c1ef5838d8501f3879bb130c1b73e06" + }, + { + "name": "python3-dateutil", + "epoch": 1, + "version": "2.6.1", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dateutil-2.6.1-6.el8.noarch.rpm", + "checksum": "sha256:7d3931f1f8ea44964be5abed7aec8c3b803e761624809a31a427b819fa54fa37" + }, + { + "name": "python3-dbus", + "epoch": 0, + "version": "1.2.4", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dbus-1.2.4-15.el8.x86_64.rpm", + "checksum": "sha256:5a85222c8e9997a8b609b915a8fbae756de9b9bff732db852fb15fe0524f2d86" + }, + { + "name": "python3-decorator", + "epoch": 0, + "version": "4.2.1", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-decorator-4.2.1-2.el8.noarch.rpm", + "checksum": "sha256:589fa333c866d9a59bc607ec6c45b7df30c8602c80c16b2aac2c0f916ebed6e7" + }, + { + "name": "python3-dmidecode", + "epoch": 0, + "version": "3.12.2", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dmidecode-3.12.2-15.el8.x86_64.rpm", + "checksum": "sha256:d2b777ea98ee644997029994136723cf4fa78e97afeaceab39f76b545b51792b" + }, + { + "name": "python3-dnf", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:538ca0af6cc62b4517e9cfa0c0c7012b9a7dc9c6308642923620fc1dffbb06a0" + }, + { + "name": "python3-dnf-plugins-core", + "epoch": 0, + "version": "4.0.17", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-dnf-plugins-core-4.0.17-2.el8.noarch.rpm", + "checksum": "sha256:3c7c8a0a46e2b4ac660c7ef4beacda08e0047a31aaa18b3442e9de0500d7da87" + }, + { + "name": "python3-ethtool", + "epoch": 0, + "version": "0.14", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ethtool-0.14-3.el8.x86_64.rpm", + "checksum": "sha256:20dec130e4fd0a2146443791ca7ade6e079cea691d93711813d5f483b691c55a" + }, + { + "name": "python3-firewall", + "epoch": 0, + "version": "0.8.2", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-firewall-0.8.2-1.el8.noarch.rpm", + "checksum": "sha256:c9b3c6dcb4133c3051e3f75978f994aae4c0ad84dd1abbae7fcba497ee524603" + }, + { + "name": "python3-gobject-base", + "epoch": 0, + "version": "3.28.3", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gobject-base-3.28.3-2.el8.x86_64.rpm", + "checksum": "sha256:86d305a1466a596f8b436561d674f2510f268bed9e73f56c87da1dd120f99c18" + }, + { + "name": "python3-gpg", + "epoch": 0, + "version": "1.13.1", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-gpg-1.13.1-3.el8.x86_64.rpm", + "checksum": "sha256:411dbf2dcf615274949dd02602da345513a41fdd6fba93ff08b6661ece3eed36" + }, + { + "name": "python3-hawkey", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-hawkey-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:59eb7180280a6369e26919b2b5195df390982cd767d5de926b8431a51bc86b73" + }, + { + "name": "python3-idna", + "epoch": 0, + "version": "2.5", + "release": "5.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-idna-2.5-5.el8.noarch.rpm", + "checksum": "sha256:c2f85c9746f79cd848329f46d348deca481b09fb4b4bc71cd7ab42b57e1c2a20" + }, + { + "name": "python3-iniparse", + "epoch": 0, + "version": "0.4", + "release": "31.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-iniparse-0.4-31.el8.noarch.rpm", + "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419" + }, + { + "name": "python3-inotify", + "epoch": 0, + "version": "0.9.6", + "release": "13.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-inotify-0.9.6-13.el8.noarch.rpm", + "checksum": "sha256:49ea248bc51c089015b2169887bedb5faf3f97f97479077929baf3272ad18d54" + }, + { + "name": "python3-libcomps", + "epoch": 0, + "version": "0.1.11", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libcomps-0.1.11-4.el8.x86_64.rpm", + "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23" + }, + { + "name": "python3-libdnf", + "epoch": 0, + "version": "0.48.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libdnf-0.48.0-2.el8.x86_64.rpm", + "checksum": "sha256:73cbc3f24f1b1f578c6e89b669935a72f5337768555eaa460f93b7b9c40ee63d" + }, + { + "name": "python3-librepo", + "epoch": 0, + "version": "1.12.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-librepo-1.12.0-1.el8.x86_64.rpm", + "checksum": "sha256:4ca553b0c0f6dc130e05e2011cdf1f52132e8f70bd93be8eee4e415b2cac0c56" + }, + { + "name": "python3-libs", + "epoch": 0, + "version": "3.6.8", + "release": "30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libs-3.6.8-30.el8.x86_64.rpm", + "checksum": "sha256:d3e5ea804f00d098710fcfc4de9b2ea4b7387de0cd631ecf62b86a09cda4edbc" + }, + { + "name": "python3-libselinux", + "epoch": 0, + "version": "2.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libselinux-2.9-3.el8.x86_64.rpm", + "checksum": "sha256:9487bff6bb16e7326c8b805751580b4593220ba19b06515c69de83fee8e3bb1f" + }, + { + "name": "python3-libxml2", + "epoch": 0, + "version": "2.9.7", + "release": "8.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-libxml2-2.9.7-8.el8.x86_64.rpm", + "checksum": "sha256:4ccbefcbe75decfef38ccae5d8ff92ba6b00e8232b64ec46ae0c0be8ae20ec50" + }, + { + "name": "python3-linux-procfs", + "epoch": 0, + "version": "0.6.2", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-linux-procfs-0.6.2-2.el8.noarch.rpm", + "checksum": "sha256:e54b6756b827a411debe89bcc1010eeffcec6c4209eeb042b3ff03b47924d23f" + }, + { + "name": "python3-nftables", + "epoch": 1, + "version": "0.9.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-nftables-0.9.3-14.el8.x86_64.rpm", + "checksum": "sha256:08bf2e898b5775317d04266f4598eddbe06c424a3694b1534e3ceff088e2e8ca" + }, + { + "name": "python3-perf", + "epoch": 0, + "version": "4.18.0", + "release": "221.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-perf-4.18.0-221.el8.x86_64.rpm", + "checksum": "sha256:18d419718a99851370262584bec1b27d60cbd08845b50fbe97e1a56b71cd5ea2" + }, + { + "name": "python3-pip-wheel", + "epoch": 0, + "version": "9.0.3", + "release": "17.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pip-wheel-9.0.3-17.el8.noarch.rpm", + "checksum": "sha256:0ccbd632572a6ce66a71a31d5403906025983754041145c9aa513a10bda5903d" + }, + { + "name": "python3-ply", + "epoch": 0, + "version": "3.9", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-ply-3.9-8.el8.noarch.rpm", + "checksum": "sha256:9fd289f7557c4d6be1fd3eaeea22c626432fddd1a97f9e5f804b6545cc53fcb9" + }, + { + "name": "python3-pycparser", + "epoch": 0, + "version": "2.14", + "release": "14.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pycparser-2.14-14.el8.noarch.rpm", + "checksum": "sha256:8c3deaabbd79922ad6eae143a100e0d5b04c10a729d1ac01128d843039d3eebf" + }, + { + "name": "python3-pyudev", + "epoch": 0, + "version": "0.21.0", + "release": "7.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-pyudev-0.21.0-7.el8.noarch.rpm", + "checksum": "sha256:4ad66a3a1dd79384852669609567108dcc429607d40ca8adc5f1dbe6a9d6bdde" + }, + { + "name": "python3-rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:526a65d5c3860f82e02781b55e7581bac168a611aa61ba603a06007ed5b34213" + }, + { + "name": "python3-schedutils", + "epoch": 0, + "version": "0.6", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-schedutils-0.6-6.el8.x86_64.rpm", + "checksum": "sha256:09ca7b05e26f93d35ac299dbcd865b65ec3a3d2654e1da87d2c3c0462dbe6e4a" + }, + { + "name": "python3-setuptools-wheel", + "epoch": 0, + "version": "39.2.0", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm", + "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec" + }, + { + "name": "python3-six", + "epoch": 0, + "version": "1.11.0", + "release": "8.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-six-1.11.0-8.el8.noarch.rpm", + "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac" + }, + { + "name": "python3-slip", + "epoch": 0, + "version": "0.6.4", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-slip-0.6.4-11.el8.noarch.rpm", + "checksum": "sha256:7f2436df92ce3dacaf5a52d988e65b2cbfc6af8be917bdc14119940480efd7bb" + }, + { + "name": "python3-slip-dbus", + "epoch": 0, + "version": "0.6.4", + "release": "11.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-slip-dbus-0.6.4-11.el8.noarch.rpm", + "checksum": "sha256:96b090a6696ca4c8b3f701c3a7b95b91c892db389e023c4b2d500a5162e43e8d" + }, + { + "name": "python3-subscription-manager-rhsm", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-subscription-manager-rhsm-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:0f3b084d947bc246fe68822129b8ae1294c4187270a19f0966282baf75b34dc6" + }, + { + "name": "python3-syspurpose", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/python3-syspurpose-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:206cba480b58c70348584010d547d21bcd84c6094fd3980e22c6b640da12704c" + }, + { + "name": "readline", + "epoch": 0, + "version": "7.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/readline-7.0-10.el8.x86_64.rpm", + "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9" + }, + { + "name": "redhat-release", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:3d729b92a73f7247b85c716df1f72c85cc1cd441c203af21db51b474cb0c6950" + }, + { + "name": "redhat-release-eula", + "epoch": 0, + "version": "8.3", + "release": "0.2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/redhat-release-eula-8.3-0.2.el8.x86_64.rpm", + "checksum": "sha256:51606e0dbb625d519ca113deaadd613a0e44e52e130504d88d932b343630a7a1" + }, + { + "name": "rng-tools", + "epoch": 0, + "version": "6.8", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rng-tools-6.8-3.el8.x86_64.rpm", + "checksum": "sha256:9d9d1bdfba4cd852f90232ebe2c4247e7b3a88c4476578c820788a91d6838e55" + }, + { + "name": "rootfiles", + "epoch": 0, + "version": "8.1", + "release": "22.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rootfiles-8.1-22.el8.noarch.rpm", + "checksum": "sha256:ad060f60303b6764e08657436147cc24cfc4bb1ccc1431796407ba005a7bcec0" + }, + { + "name": "rpm", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:d8c6548dee8dbd053eeff29a9a7d110a7c28e3137781707c66f8ab4e03271279" + }, + { + "name": "rpm-build-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-build-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:584b39de639e9f0a25687b8c7ef05500a0084a3bc4c8afb0a2137868ab357d14" + }, + { + "name": "rpm-libs", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-libs-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:15510ab45e249c5711bb6d10d7470a009345dcd45b00d8b2dd90ca61e9206d64" + }, + { + "name": "rpm-plugin-selinux", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-selinux-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:5565b2a9f21fd81ef8005e285b273fd5b369281df4ec6369941d9f92e25c8510" + }, + { + "name": "rpm-plugin-systemd-inhibit", + "epoch": 0, + "version": "4.14.3", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64.rpm", + "checksum": "sha256:c847a91e2358602511c3001a66510c87fc49bf05161348d8f7c4abca8727c29e" + }, + { + "name": "sed", + "epoch": 0, + "version": "4.5", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sed-4.5-2.el8.x86_64.rpm", + "checksum": "sha256:f39e031ea848d9605601b3e8e9424339cec44ecb521fbd1a415915a5f373eb37" + }, + { + "name": "selinux-policy", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:46e7afe7fd775eb4cb9c111dd849b286245d1ccb3972acd02bc782ec59948a7b" + }, + { + "name": "selinux-policy-targeted", + "epoch": 0, + "version": "3.14.3", + "release": "48.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/selinux-policy-targeted-3.14.3-48.el8.noarch.rpm", + "checksum": "sha256:c2130c129ffedb1b18e5e660e229b1a7a55402dc15d75918b9e916b425c1b489" + }, + { + "name": "setup", + "epoch": 0, + "version": "2.12.2", + "release": "6.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/setup-2.12.2-6.el8.noarch.rpm", + "checksum": "sha256:aa4b8463be8bceddb296424e76ddecc80b72ffc8543b6746eadfc4972131b6e2" + }, + { + "name": "sg3_utils", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sg3_utils-1.44-5.el8.x86_64.rpm", + "checksum": "sha256:398c1abc82097370f46e6fdf4dae63870e1f767b24d0130c79ed67ea3a67233a" + }, + { + "name": "sg3_utils-libs", + "epoch": 0, + "version": "1.44", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sg3_utils-libs-1.44-5.el8.x86_64.rpm", + "checksum": "sha256:671852e4f32de6278dd384d35d1dc799ab5d3e8ef718e89e516452cbcba068f0" + }, + { + "name": "shadow-utils", + "epoch": 2, + "version": "4.6", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shadow-utils-4.6-10.el8.x86_64.rpm", + "checksum": "sha256:db4fb2e6ba31febdfd85056ba44a5af8b6b84dda09d17f9af9e293aad5a57614" + }, + { + "name": "shared-mime-info", + "epoch": 0, + "version": "1.9", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/shared-mime-info-1.9-3.el8.x86_64.rpm", + "checksum": "sha256:4e468750831505a71d52553acee82dd9091d30f6c39f6dcf717fed544714c3c3" + }, + { + "name": "slang", + "epoch": 0, + "version": "2.3.2", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/slang-2.3.2-3.el8.x86_64.rpm", + "checksum": "sha256:efa20ae5eca5860656d0131086470cb8d5c3a1ae2819301e7d015f06bbb68a26" + }, + { + "name": "snappy", + "epoch": 0, + "version": "1.1.7", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/snappy-1.1.7-5.el8.x86_64.rpm", + "checksum": "sha256:4403330cdf4f15d75d727e2ac8c3358ff6a13209b3395dfac2131984e443eb23" + }, + { + "name": "sqlite-libs", + "epoch": 0, + "version": "3.26.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sqlite-libs-3.26.0-10.el8.x86_64.rpm", + "checksum": "sha256:c1ef28331ed998b38c14fbabfc98a31d6bbabaa9c2b466e9fa07a0de6a2a76ed" + }, + { + "name": "squashfs-tools", + "epoch": 0, + "version": "4.3", + "release": "19.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/squashfs-tools-4.3-19.el8.x86_64.rpm", + "checksum": "sha256:72ff3a3f6c52849a40cb24f9694115a68cc939970a00c374b4c73b1e4c5dc20c" + }, + { + "name": "sssd-client", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-client-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:2e90748420a7d28b3063df04de129e79ea85310a8d9cf2faf0a2e7b8430307c8" + }, + { + "name": "sssd-common", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-common-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:14098d36fe4be983fac73d04aeacf0ed7977d962e760907b89e3f80b4ca46f3f" + }, + { + "name": "sssd-kcm", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-kcm-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:1b1fe43a375a21f4c3ccf04861c122fd519d4865b9c1abc7f1973b86a0252a06" + }, + { + "name": "sssd-nfs-idmap", + "epoch": 0, + "version": "2.3.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sssd-nfs-idmap-2.3.0-2.el8.x86_64.rpm", + "checksum": "sha256:c0025c0b08ed82c640fa470e62743aed17a33f7948ed0cc969892d7c149206b3" + }, + { + "name": "subscription-manager", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:65dc391ab1c96d1009ef2e7706eabacd5cf84f2a47ea1cc87f6f5e2c1324b178" + }, + { + "name": "subscription-manager-rhsm-certificates", + "epoch": 0, + "version": "1.27.9", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/subscription-manager-rhsm-certificates-1.27.9-1.el8.x86_64.rpm", + "checksum": "sha256:99fa92b5d1e0d335fb2bb961ef39988b50968350b899e8790cead73c9a0bec65" + }, + { + "name": "sudo", + "epoch": 0, + "version": "1.8.29", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/sudo-1.8.29-6.el8.x86_64.rpm", + "checksum": "sha256:ec9adedf0d5d2d096acf4739e2eefab8095498037e13dac9b283e17a9c54259a" + }, + { + "name": "systemd", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-239-36.el8.x86_64.rpm", + "checksum": "sha256:0b34242537a7de726f73543ea54f89b4d5d5c1912d12f41c33c7c7068f238394" + }, + { + "name": "systemd-libs", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-libs-239-36.el8.x86_64.rpm", + "checksum": "sha256:dad8b76bfdbfe82bbb5242dbb228add5e5985d362ef62ee254aeea152c045a76" + }, + { + "name": "systemd-pam", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-pam-239-36.el8.x86_64.rpm", + "checksum": "sha256:b81c5301201524403361912648d490a0a0dd42ae2de966a429ddb8867ce2d79c" + }, + { + "name": "systemd-udev", + "epoch": 0, + "version": "239", + "release": "36.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/systemd-udev-239-36.el8.x86_64.rpm", + "checksum": "sha256:dd5dce300a890665361611c5121bbd029923de96c841488cf0cb13fdb5d74be6" + }, + { + "name": "tar", + "epoch": 2, + "version": "1.30", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tar-1.30-5.el8.x86_64.rpm", + "checksum": "sha256:3e4ea07a068ac27709ed9ed3ddea98cffdb45c7bec92ff80252cfbaccb52797c" + }, + { + "name": "teamd", + "epoch": 0, + "version": "1.29", + "release": "5.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/teamd-1.29-5.el8.x86_64.rpm", + "checksum": "sha256:b156691caa225f0025533a68eeb9a2cf3883062dd209ede9ec07727b358171cc" + }, + { + "name": "trousers", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:a16b38fc2975ab7c8b6200fafb7e577c7434c5c0ab0683653f1f4f630e05a053" + }, + { + "name": "trousers-lib", + "epoch": 0, + "version": "0.3.14", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/trousers-lib-0.3.14-4.el8.x86_64.rpm", + "checksum": "sha256:ea9e525069def1460b4b0d19d46e54b9c073d255b1365a80da63732dbfcb8314" + }, + { + "name": "tuned", + "epoch": 0, + "version": "2.14.0", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tuned-2.14.0-2.el8.noarch.rpm", + "checksum": "sha256:2550f6a1472f3f0b816204d175ba11cf16a997aee8c7ad8b12a136f982774cf0" + }, + { + "name": "tzdata", + "epoch": 0, + "version": "2020a", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/tzdata-2020a-1.el8.noarch.rpm", + "checksum": "sha256:1d2bb8c05cb72429430d32b83b5cd38a511aaa82cdc56d87b919b383630cfca2" + }, + { + "name": "usermode", + "epoch": 0, + "version": "1.113", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/usermode-1.113-1.el8.x86_64.rpm", + "checksum": "sha256:98a589d7e1cdea9d974aa43f688e55333eed11ce7cb2037d45cc2e69bce579b3" + }, + { + "name": "util-linux", + "epoch": 0, + "version": "2.32.1", + "release": "24.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/util-linux-2.32.1-24.el8.x86_64.rpm", + "checksum": "sha256:41a988a5837965c4a0cdf8edecf59b3628ab9601b14ebc305c7cb2fe3be5fb7e" + }, + { + "name": "vim-minimal", + "epoch": 2, + "version": "8.0.1763", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/vim-minimal-8.0.1763-15.el8.x86_64.rpm", + "checksum": "sha256:947b4e4eebec21501ca62e2a7ff9baae0e4e7c59584fbba4b6276a402cfbb45b" + }, + { + "name": "virt-what", + "epoch": 0, + "version": "1.18", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/virt-what-1.18-6.el8.x86_64.rpm", + "checksum": "sha256:2cfcc3d6163dfaf7ce76998be992bd0b70dd7cbb838430cecf2aff04cd435d24" + }, + { + "name": "which", + "epoch": 0, + "version": "2.21", + "release": "12.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/which-2.21-12.el8.x86_64.rpm", + "checksum": "sha256:ba59385282b2647341121bfe54aba8384012e9d48616636872c6d5e9b4263440" + }, + { + "name": "xfsprogs", + "epoch": 0, + "version": "5.0.0", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xfsprogs-5.0.0-4.el8.x86_64.rpm", + "checksum": "sha256:42f28e82e05c0e6ecf0676a26e964922f304b051554be1ce4f45f8bc6d279043" + }, + { + "name": "xz", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:1b6fe19e2856f752a2cd8f917db539dbe9fc1b1560fff3341864b13ffb0ccae0" + }, + { + "name": "xz-libs", + "epoch": 0, + "version": "5.2.4", + "release": "3.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/xz-libs-5.2.4-3.el8.x86_64.rpm", + "checksum": "sha256:d3813d081414edc480f5ffb428f6c9b005e33ebe8dd3a6ac8bf4d13e5aa4419b" + }, + { + "name": "yum", + "epoch": 0, + "version": "4.2.23", + "release": "2.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/yum-4.2.23-2.el8.noarch.rpm", + "checksum": "sha256:e35a47c9bf05d08c57ea17c7b5db395d62cceab1856255126af094b2d474c7d4" + }, + { + "name": "zlib", + "epoch": 0, + "version": "1.2.11", + "release": "15.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os/Packages/zlib-1.2.11-15.el8.x86_64.rpm", + "checksum": "sha256:356c9fa46824f8d5b131ee72b9cbe3f6e33492501b811054bb4b481c0cbc65c8" + }, + { + "name": "dnf-plugin-spacewalk", + "epoch": 0, + "version": "2.8.5", + "release": "11.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:9965cc9389159c9a0ca4e2f6257f756ed5cc77771bde1e27ed4013bbbc20558b" + }, + { + "name": "geolite2-city", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-city-20180605-1.el8.noarch.rpm", + "checksum": "sha256:19dba7cb30c3cb598886326df0ec1114c6e195a57c9ce3a8b78b83555e9e8648" + }, + { + "name": "geolite2-country", + "epoch": 0, + "version": "20180605", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/geolite2-country-20180605-1.el8.noarch.rpm", + "checksum": "sha256:c60aede8488f68a001f3495bd6e6d894fc3a44bb488f4550b5970ab5904d0a1e" + }, + { + "name": "langpacks-en", + "epoch": 0, + "version": "1.0", + "release": "12.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/langpacks-en-1.0-12.el8.noarch.rpm", + "checksum": "sha256:38affe91361bf56b84490d97c7e3f815965cf8d2bbb222c6c045af4bf2dff736" + }, + { + "name": "libdrm", + "epoch": 0, + "version": "2.4.101", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libdrm-2.4.101-1.el8.x86_64.rpm", + "checksum": "sha256:b169780b212062e9b9564d7c033f0895f98955c42312f1a023e02277966916e6" + }, + { + "name": "libestr", + "epoch": 0, + "version": "0.1.10", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libestr-0.1.10-1.el8.x86_64.rpm", + "checksum": "sha256:bfe5c8ea12012936cc59981a10728e95d5fdadd3e893457af7a27c464d8cb6ba" + }, + { + "name": "libfastjson", + "epoch": 0, + "version": "0.99.8", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libfastjson-0.99.8-2.el8.x86_64.rpm", + "checksum": "sha256:474a66a4cf3d5a00286be40c15bad69ea1ac63a9424a1ff44f20a548a7686f7a" + }, + { + "name": "libmaxminddb", + "epoch": 0, + "version": "1.2.0", + "release": "10.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libmaxminddb-1.2.0-10.el8.x86_64.rpm", + "checksum": "sha256:995a5401cd86404d14d08c0aeafeaa8da3f540b1806f9d0e233d75dec9e45c74" + }, + { + "name": "libmspack", + "epoch": 0, + "version": "0.7", + "release": "0.3.alpha.el8.4", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libmspack-0.7-0.3.alpha.el8.4.x86_64.rpm", + "checksum": "sha256:998c3e82a6bb9e040d225d8e85b5b55316d2ca92fcbb4d2ad0e6fa9e896c5cdb" + }, + { + "name": "libxkbcommon", + "epoch": 0, + "version": "0.9.1", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/libxkbcommon-0.9.1-1.el8.x86_64.rpm", + "checksum": "sha256:25b13ea50e21233dc5fccf42da344fbf24605dde38db9b94e49739ae39faa072" + }, + { + "name": "memstrack", + "epoch": 0, + "version": "0.1.8", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/memstrack-0.1.8-1.el8.x86_64.rpm", + "checksum": "sha256:e15caaf73e38e55ffb28abe63d3b9b6caf7ff9c15eb392db307fa56185787494" + }, + { + "name": "open-vm-tools", + "epoch": 0, + "version": "11.1.0", + "release": "1.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/open-vm-tools-11.1.0-1.el8.x86_64.rpm", + "checksum": "sha256:de967920d197a627545ccb251d6147c1cd6baf94195f21f6be71380beb603942" + }, + { + "name": "pinentry", + "epoch": 0, + "version": "1.1.0", + "release": "2.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/pinentry-1.1.0-2.el8.x86_64.rpm", + "checksum": "sha256:7bb63c8b955ff7f993877c0323e8bc17c6d85c7a8e844db9e9980a9ca7a227c5" + }, + { + "name": "plymouth", + "epoch": 0, + "version": "0.9.4", + "release": "1.20200615git1e36e30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/plymouth-0.9.4-1.20200615git1e36e30.el8.x86_64.rpm", + "checksum": "sha256:4d54749c92887ab059c768ada265c0f64e292594846b183d1fdfa9b29fff3ac1" + }, + { + "name": "plymouth-core-libs", + "epoch": 0, + "version": "0.9.4", + "release": "1.20200615git1e36e30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/plymouth-core-libs-0.9.4-1.20200615git1e36e30.el8.x86_64.rpm", + "checksum": "sha256:0f662be3013f7958961ae70400c7ed1fb4350c823881c123a16cbb2b6b8c8f6a" + }, + { + "name": "plymouth-scripts", + "epoch": 0, + "version": "0.9.4", + "release": "1.20200615git1e36e30.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/plymouth-scripts-0.9.4-1.20200615git1e36e30.el8.x86_64.rpm", + "checksum": "sha256:61498bdebac578394eae8667e16ad7393309f7144266d4331f4c17f276b15fe0" + }, + { + "name": "python3-dnf-plugin-spacewalk", + "epoch": 0, + "version": "2.8.5", + "release": "11.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:dc07cc3536a601e2b7ca0e2823cd437f3a2e6d1d206a06612eee0515eee84b43" + }, + { + "name": "python3-hwdata", + "epoch": 0, + "version": "2.3.6", + "release": "3.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-hwdata-2.3.6-3.el8.noarch.rpm", + "checksum": "sha256:c5429b045d9343c672da91167a72f2e10d65dd675322accaeee0b4cc18350362" + }, + { + "name": "python3-netifaces", + "epoch": 0, + "version": "0.10.6", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-netifaces-0.10.6-4.el8.x86_64.rpm", + "checksum": "sha256:3edf7d29e530e6568416d4455e9fbaa511aba236c603da9928e689fae77b9874" + }, + { + "name": "python3-newt", + "epoch": 0, + "version": "0.52.20", + "release": "11.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-newt-0.52.20-11.el8.x86_64.rpm", + "checksum": "sha256:b4e89276818abec218c909ca961db9bb2e09b1fc609ff280e6c05227143fa24d" + }, + { + "name": "python3-pyOpenSSL", + "epoch": 0, + "version": "18.0.0", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-pyOpenSSL-18.0.0-1.el8.noarch.rpm", + "checksum": "sha256:2e1d3cb29f87138b9f9c5415bf980443ae3ea4929426e79776557dc3c82b8e21" + }, + { + "name": "python3-rhn-check", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:15462b748aef3c565bcf4f849c1a21c1389a8ef5e7dae94e64718865a67d46a9" + }, + { + "name": "python3-rhn-client-tools", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:bed436b103161f7d8f61b617c84f3a7b5509f1d00c8425900a88c222b1331b31" + }, + { + "name": "python3-rhn-setup", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:ec26615d079ce89316352f813279f74a44871fa8c26fed8f369b9fe847aa5121" + }, + { + "name": "python3-rhnlib", + "epoch": 0, + "version": "2.8.6", + "release": "8.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:a0f1dd76470a1ecde87526b1429f259033ef3cfd1d019fba0a781910d4d5b61a" + }, + { + "name": "python3-unbound", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/python3-unbound-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:d0d7acd309f3e0e9d2131a39773eb7778ecf6e79136754de12454674539ec58c" + }, + { + "name": "rhn-check", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:d81c180c682e6014a0da09aaa144492e8cb03c1d61022513ba6db5bd3740f921" + }, + { + "name": "rhn-client-tools", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:d80219a299035688091aa230b1c9169143c00c141c4f1ad8e75d176d22cc1cd0" + }, + { + "name": "rhn-setup", + "epoch": 0, + "version": "2.8.16", + "release": "13.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:4931d78c496eaaa8e6b6bbec2b4750da52b9fc7e989ae89b7c1fa2a6f40ff7fa" + }, + { + "name": "rhnlib", + "epoch": 0, + "version": "2.8.6", + "release": "8.module+el8.1.0+3455+3ddf2832", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch.rpm", + "checksum": "sha256:0955f8bb29cb76a5e38313bcea2edc1952ffc8186a65d29e0717a3bad6fd5d42" + }, + { + "name": "rhnsd", + "epoch": 0, + "version": "5.0.35", + "release": "3.module+el8.1.0+3455+3ddf2832", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.x86_64.rpm", + "checksum": "sha256:00cc9cd4517cbb4ad99dbce63b40b700699523550cd7f8202948af28dbe2cd9e" + }, + { + "name": "rsyslog", + "epoch": 0, + "version": "8.1911.0", + "release": "6.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/rsyslog-8.1911.0-6.el8.x86_64.rpm", + "checksum": "sha256:5ef47eb6a042a13c902764907692c1068eb0f69153b47bc85792bef74bfa852b" + }, + { + "name": "unbound-libs", + "epoch": 0, + "version": "1.7.3", + "release": "14.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/unbound-libs-1.7.3-14.el8.x86_64.rpm", + "checksum": "sha256:8e43ad5e50640d9230407b77a9f020ed1c93f52b6a73f76352ea98d69593ef83" + }, + { + "name": "xkeyboard-config", + "epoch": 0, + "version": "2.28", + "release": "1.el8", + "arch": "noarch", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xkeyboard-config-2.28-1.el8.noarch.rpm", + "checksum": "sha256:340b3c65becfca3d39f2afeed9659505a33ee870270c4d115d9fefe8929ff806" + }, + { + "name": "xmlsec1", + "epoch": 0, + "version": "1.2.25", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xmlsec1-1.2.25-4.el8.x86_64.rpm", + "checksum": "sha256:f548f7cfa81c12e67c4896d15b9c65357eb66cba99508e74e5ad034ea92ed41a" + }, + { + "name": "xmlsec1-openssl", + "epoch": 0, + "version": "1.2.25", + "release": "4.el8", + "arch": "x86_64", + "remote_location": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os/Packages/xmlsec1-openssl-1.2.25-4.el8.x86_64.rpm", + "checksum": "sha256:7d07d9055f557acf574e238327f003dc1a77dd119406e2326c844d17b818417c" + } + ], + "checksums": { + "0": "sha256:cc014fee6e92f8a81f152d72a43137a3270189ef229c738381b98bc0c88443f8", + "1": "sha256:2b881b017a4c721893038307bf4f0269afe55c35114a477be226f53a2f585545" + } + }, + "image-info": { + "boot-environment": { + "kernelopts": "root=UUID=0bd700f8-090f-4556-b797-b340297ea1bd ro net.ifnames=0" + }, + "bootloader": "grub", + "bootmenu": [ + { + "grub_arg": "--unrestricted", + "grub_class": "kernel", + "grub_users": "$grub_users", + "id": "rhel-20200625210904-4.18.0-221.el8.x86_64", + "initrd": "/boot/initramfs-4.18.0-221.el8.x86_64.img $tuned_initrd", + "linux": "/boot/vmlinuz-4.18.0-221.el8.x86_64", + "options": "$kernelopts $tuned_params", + "title": "Red Hat Enterprise Linux (4.18.0-221.el8.x86_64) 8.3 (Ootpa)", + "version": "4.18.0-221.el8.x86_64" + } + ], + "firewall-enabled": [ + "ssh", + "dhcpv6-client", + "cockpit" + ], + "fstab": [ + [ + "UUID=0bd700f8-090f-4556-b797-b340297ea1bd", + "/", + "xfs", + "defaults", + "0", + "0" + ] + ], + "groups": [ + "adm:x:4:", + "audio:x:63:", + "bin:x:1:", + "cdrom:x:11:", + "chrony:x:992:", + "daemon:x:2:", + "dbus:x:81:", + "dialout:x:18:", + "disk:x:6:", + "floppy:x:19:", + "ftp:x:50:", + "games:x:20:", + "input:x:999:", + "kmem:x:9:", + "kvm:x:36:", + "lock:x:54:", + "lp:x:7:", + "mail:x:12:", + "man:x:15:", + "mem:x:8:", + "nobody:x:65534:", + "polkitd:x:996:", + "redhat:x:1000:", + "render:x:998:", + "rngd:x:991:", + "root:x:0:", + "ssh_keys:x:995:", + "sshd:x:74:", + "sssd:x:993:", + "sys:x:3:", + "systemd-coredump:x:997:", + "systemd-journal:x:190:", + "systemd-resolve:x:193:", + "tape:x:33:", + "tss:x:59:", + "tty:x:5:", + "unbound:x:994:", + "users:x:100:", + "utempter:x:35:", + "utmp:x:22:", + "video:x:39:", + "wheel:x:10:" + ], + "image-format": "vmdk", + "os-release": { + "ANSI_COLOR": "0;31", + "BUG_REPORT_URL": "https://bugzilla.redhat.com/", + "CPE_NAME": "cpe:/o:redhat:enterprise_linux:8.3:beta", + "HOME_URL": "https://www.redhat.com/", + "ID": "rhel", + "ID_LIKE": "fedora", + "NAME": "Red Hat Enterprise Linux", + "PLATFORM_ID": "platform:el8", + "PRETTY_NAME": "Red Hat Enterprise Linux 8.3 Beta (Ootpa)", + "REDHAT_BUGZILLA_PRODUCT": "Red Hat Enterprise Linux 8", + "REDHAT_BUGZILLA_PRODUCT_VERSION": "8.3", + "REDHAT_SUPPORT_PRODUCT": "Red Hat Enterprise Linux", + "REDHAT_SUPPORT_PRODUCT_VERSION": "8.3 Beta", + "VERSION": "8.3 (Ootpa)", + "VERSION_ID": "8.3" + }, + "packages": [ + "NetworkManager-1.26.0-0.2.el8.x86_64", + "NetworkManager-libnm-1.26.0-0.2.el8.x86_64", + "NetworkManager-team-1.26.0-0.2.el8.x86_64", + "NetworkManager-tui-1.26.0-0.2.el8.x86_64", + "acl-2.2.53-1.el8.x86_64", + "audit-3.0-0.17.20191104git1c2f876.el8.x86_64", + "audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64", + "authselect-1.2.1-2.el8.x86_64", + "authselect-libs-1.2.1-2.el8.x86_64", + "basesystem-11-5.el8.noarch", + "bash-4.4.19-12.el8.x86_64", + "bind-export-libs-9.11.20-3.el8.x86_64", + "biosdevname-0.7.3-2.el8.x86_64", + "brotli-1.0.6-2.el8.x86_64", + "bzip2-libs-1.0.6-26.el8.x86_64", + "c-ares-1.13.0-5.el8.x86_64", + "ca-certificates-2019.2.32-80.0.el8_1.noarch", + "chkconfig-1.13-2.el8.x86_64", + "chrony-3.5-1.el8.x86_64", + "coreutils-8.30-8.el8.x86_64", + "coreutils-common-8.30-8.el8.x86_64", + "cpio-2.12-8.el8.x86_64", + "cracklib-2.9.6-15.el8.x86_64", + "cracklib-dicts-2.9.6-15.el8.x86_64", + "cronie-1.5.2-4.el8.x86_64", + "cronie-anacron-1.5.2-4.el8.x86_64", + "crontabs-1.11-16.20150630git.el8.noarch", + "crypto-policies-20200610-1.git0ac8b1f.el8.noarch", + "crypto-policies-scripts-20200610-1.git0ac8b1f.el8.noarch", + "cryptsetup-libs-2.3.3-1.el8.x86_64", + "curl-7.61.1-12.el8.x86_64", + "cyrus-sasl-lib-2.1.27-5.el8.x86_64", + "dbus-1.12.8-11.el8.x86_64", + "dbus-common-1.12.8-11.el8.noarch", + "dbus-daemon-1.12.8-11.el8.x86_64", + "dbus-glib-0.110-2.el8.x86_64", + "dbus-libs-1.12.8-11.el8.x86_64", + "dbus-tools-1.12.8-11.el8.x86_64", + "device-mapper-1.02.171-3.el8.x86_64", + "device-mapper-libs-1.02.171-3.el8.x86_64", + "dhcp-client-4.3.6-41.el8.x86_64", + "dhcp-common-4.3.6-41.el8.noarch", + "dhcp-libs-4.3.6-41.el8.x86_64", + "diffutils-3.6-6.el8.x86_64", + "dmidecode-3.2-6.el8.x86_64", + "dnf-4.2.23-2.el8.noarch", + "dnf-data-4.2.23-2.el8.noarch", + "dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch", + "dnf-plugin-subscription-manager-1.27.9-1.el8.x86_64", + "dnf-plugins-core-4.0.17-2.el8.noarch", + "dracut-049-89.git20200625.el8.x86_64", + "dracut-config-generic-049-89.git20200625.el8.x86_64", + "dracut-network-049-89.git20200625.el8.x86_64", + "dracut-squash-049-89.git20200625.el8.x86_64", + "e2fsprogs-1.45.6-1.el8.x86_64", + "e2fsprogs-libs-1.45.6-1.el8.x86_64", + "elfutils-debuginfod-client-0.180-1.el8.x86_64", + "elfutils-default-yama-scope-0.180-1.el8.noarch", + "elfutils-libelf-0.180-1.el8.x86_64", + "elfutils-libs-0.180-1.el8.x86_64", + "ethtool-5.0-2.el8.x86_64", + "expat-2.2.5-4.el8.x86_64", + "file-5.33-16.el8.x86_64", + "file-libs-5.33-16.el8.x86_64", + "filesystem-3.8-3.el8.x86_64", + "findutils-4.6.0-20.el8.x86_64", + "firewalld-0.8.2-1.el8.noarch", + "firewalld-filesystem-0.8.2-1.el8.noarch", + "freetype-2.9.1-4.el8.x86_64", + "fuse-2.9.7-12.el8.x86_64", + "fuse-common-3.2.1-12.el8.x86_64", + "fuse-libs-2.9.7-12.el8.x86_64", + "gawk-4.2.1-1.el8.x86_64", + "gdbm-1.18-1.el8.x86_64", + "gdbm-libs-1.18-1.el8.x86_64", + "geolite2-city-20180605-1.el8.noarch", + "geolite2-country-20180605-1.el8.noarch", + "gettext-0.19.8.1-17.el8.x86_64", + "gettext-libs-0.19.8.1-17.el8.x86_64", + "glib2-2.56.4-8.el8.x86_64", + "glibc-2.28-127.el8.x86_64", + "glibc-common-2.28-127.el8.x86_64", + "glibc-langpack-en-2.28-127.el8.x86_64", + "gmp-6.1.2-10.el8.x86_64", + "gnupg2-2.2.20-2.el8.x86_64", + "gnupg2-smime-2.2.20-2.el8.x86_64", + "gnutls-3.6.14-3.el8.x86_64", + "gobject-introspection-1.56.1-1.el8.x86_64", + "gpg-pubkey-d4082792-5b32db75", + "gpg-pubkey-fd431d51-4ae0493b", + "gpgme-1.13.1-3.el8.x86_64", + "grep-3.1-6.el8.x86_64", + "groff-base-1.22.3-18.el8.x86_64", + "grub2-common-2.02-84.el8.noarch", + "grub2-pc-2.02-84.el8.x86_64", + "grub2-pc-modules-2.02-84.el8.noarch", + "grub2-tools-2.02-84.el8.x86_64", + "grub2-tools-extra-2.02-84.el8.x86_64", + "grub2-tools-minimal-2.02-84.el8.x86_64", + "grubby-8.40-41.el8.x86_64", + "gzip-1.9-9.el8.x86_64", + "hardlink-1.3-6.el8.x86_64", + "hdparm-9.54-2.el8.x86_64", + "hostname-3.20-6.el8.x86_64", + "hwdata-0.314-8.5.el8.noarch", + "ima-evm-utils-1.1-5.el8.x86_64", + "info-6.5-6.el8.x86_64", + "initscripts-10.00.8-1.el8.x86_64", + "ipcalc-0.2.4-4.el8.x86_64", + "iproute-5.3.0-5.el8.x86_64", + "iprutils-2.4.19-1.el8.x86_64", + "ipset-7.1-1.el8.x86_64", + "ipset-libs-7.1-1.el8.x86_64", + "iptables-1.8.4-14.el8.x86_64", + "iptables-ebtables-1.8.4-14.el8.x86_64", + "iptables-libs-1.8.4-14.el8.x86_64", + "iputils-20180629-2.el8.x86_64", + "irqbalance-1.4.0-4.el8.x86_64", + "iwl100-firmware-39.31.5.1-99.el8.1.noarch", + "iwl1000-firmware-39.31.5.1-99.el8.1.noarch", + "iwl105-firmware-18.168.6.1-99.el8.1.noarch", + "iwl135-firmware-18.168.6.1-99.el8.1.noarch", + "iwl2000-firmware-18.168.6.1-99.el8.1.noarch", + "iwl2030-firmware-18.168.6.1-99.el8.1.noarch", + "iwl3160-firmware-25.30.13.0-99.el8.1.noarch", + "iwl5000-firmware-8.83.5.1_1-99.el8.1.noarch", + "iwl5150-firmware-8.24.2.2-99.el8.1.noarch", + "iwl6000-firmware-9.221.4.1-99.el8.1.noarch", + "iwl6000g2a-firmware-18.168.6.1-99.el8.1.noarch", + "iwl6050-firmware-41.28.5.1-99.el8.1.noarch", + "iwl7260-firmware-25.30.13.0-99.el8.1.noarch", + "jansson-2.11-3.el8.x86_64", + "json-c-0.13.1-0.2.el8.x86_64", + "json-glib-1.4.4-1.el8.x86_64", + "kbd-2.0.4-10.el8.x86_64", + "kbd-legacy-2.0.4-10.el8.noarch", + "kbd-misc-2.0.4-10.el8.noarch", + "kernel-4.18.0-221.el8.x86_64", + "kernel-core-4.18.0-221.el8.x86_64", + "kernel-modules-4.18.0-221.el8.x86_64", + "kernel-tools-4.18.0-221.el8.x86_64", + "kernel-tools-libs-4.18.0-221.el8.x86_64", + "kexec-tools-2.0.20-29.el8.x86_64", + "keyutils-libs-1.5.10-6.el8.x86_64", + "kmod-25-16.el8.x86_64", + "kmod-libs-25-16.el8.x86_64", + "kpartx-0.8.4-2.el8.x86_64", + "krb5-libs-1.18.2-3.el8.x86_64", + "langpacks-en-1.0-12.el8.noarch", + "less-530-1.el8.x86_64", + "libacl-2.2.53-1.el8.x86_64", + "libarchive-3.3.2-9.el8.x86_64", + "libassuan-2.5.1-3.el8.x86_64", + "libattr-2.4.48-3.el8.x86_64", + "libbasicobjects-0.1.1-39.el8.x86_64", + "libblkid-2.32.1-24.el8.x86_64", + "libcap-2.26-4.el8.x86_64", + "libcap-ng-0.7.9-5.el8.x86_64", + "libcollection-0.7.0-39.el8.x86_64", + "libcom_err-1.45.6-1.el8.x86_64", + "libcomps-0.1.11-4.el8.x86_64", + "libcroco-0.6.12-4.el8.x86_64", + "libcurl-7.61.1-12.el8.x86_64", + "libdaemon-0.14-15.el8.x86_64", + "libdb-5.3.28-39.el8.x86_64", + "libdb-utils-5.3.28-39.el8.x86_64", + "libdhash-0.5.0-39.el8.x86_64", + "libdnf-0.48.0-2.el8.x86_64", + "libdrm-2.4.101-1.el8.x86_64", + "libedit-3.1-23.20170329cvs.el8.x86_64", + "libestr-0.1.10-1.el8.x86_64", + "libevent-2.1.8-5.el8.x86_64", + "libfastjson-0.99.8-2.el8.x86_64", + "libfdisk-2.32.1-24.el8.x86_64", + "libffi-3.1-22.el8.x86_64", + "libgcc-8.3.1-5.1.el8.x86_64", + "libgcrypt-1.8.5-4.el8.x86_64", + "libgomp-8.3.1-5.1.el8.x86_64", + "libgpg-error-1.31-1.el8.x86_64", + "libgudev-232-4.el8.x86_64", + "libidn2-2.2.0-1.el8.x86_64", + "libini_config-1.3.1-39.el8.x86_64", + "libkcapi-1.2.0-2.el8.x86_64", + "libkcapi-hmaccalc-1.2.0-2.el8.x86_64", + "libksba-1.3.5-7.el8.x86_64", + "libldb-2.1.3-2.el8.x86_64", + "libmaxminddb-1.2.0-10.el8.x86_64", + "libmetalink-0.1.3-7.el8.x86_64", + "libmnl-1.0.4-6.el8.x86_64", + "libmodulemd-2.9.4-2.el8.x86_64", + "libmount-2.32.1-24.el8.x86_64", + "libmspack-0.7-0.3.alpha.el8.4.x86_64", + "libndp-1.7-3.el8.x86_64", + "libnetfilter_conntrack-1.0.6-5.el8.x86_64", + "libnfnetlink-1.0.1-13.el8.x86_64", + "libnfsidmap-2.3.3-35.el8.x86_64", + "libnftnl-1.1.5-4.el8.x86_64", + "libnghttp2-1.33.0-3.el8_2.1.x86_64", + "libnl3-3.5.0-1.el8.x86_64", + "libnl3-cli-3.5.0-1.el8.x86_64", + "libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64", + "libpath_utils-0.2.1-39.el8.x86_64", + "libpcap-1.9.1-4.el8.x86_64", + "libpciaccess-0.14-1.el8.x86_64", + "libpipeline-1.5.0-2.el8.x86_64", + "libpng-1.6.34-5.el8.x86_64", + "libpsl-0.20.2-6.el8.x86_64", + "libpwquality-1.4.0-9.el8.x86_64", + "libref_array-0.1.5-39.el8.x86_64", + "librepo-1.12.0-1.el8.x86_64", + "libreport-filesystem-2.9.5-11.el8.x86_64", + "librhsm-0.0.3-3.el8.x86_64", + "libseccomp-2.4.3-1.el8.x86_64", + "libsecret-0.18.6-1.el8.x86_64", + "libselinux-2.9-3.el8.x86_64", + "libselinux-utils-2.9-3.el8.x86_64", + "libsemanage-2.9-3.el8.x86_64", + "libsepol-2.9-1.el8.x86_64", + "libsigsegv-2.11-5.el8.x86_64", + "libsmartcols-2.32.1-24.el8.x86_64", + "libsolv-0.7.11-1.el8.x86_64", + "libss-1.45.6-1.el8.x86_64", + "libssh-0.9.4-2.el8.x86_64", + "libssh-config-0.9.4-2.el8.noarch", + "libsss_autofs-2.3.0-2.el8.x86_64", + "libsss_certmap-2.3.0-2.el8.x86_64", + "libsss_idmap-2.3.0-2.el8.x86_64", + "libsss_nss_idmap-2.3.0-2.el8.x86_64", + "libsss_sudo-2.3.0-2.el8.x86_64", + "libstdc++-8.3.1-5.1.el8.x86_64", + "libsysfs-2.1.0-24.el8.x86_64", + "libtalloc-2.3.1-2.el8.x86_64", + "libtasn1-4.13-3.el8.x86_64", + "libtdb-1.4.3-1.el8.x86_64", + "libteam-1.29-5.el8.x86_64", + "libtevent-0.10.2-2.el8.x86_64", + "libtirpc-1.1.4-4.el8.x86_64", + "libtool-ltdl-2.4.6-25.el8.x86_64", + "libunistring-0.9.9-3.el8.x86_64", + "libusbx-1.0.23-3.el8.x86_64", + "libuser-0.62-23.el8.x86_64", + "libutempter-1.1.6-14.el8.x86_64", + "libuuid-2.32.1-24.el8.x86_64", + "libverto-0.3.0-5.el8.x86_64", + "libxcrypt-4.1.1-4.el8.x86_64", + "libxkbcommon-0.9.1-1.el8.x86_64", + "libxml2-2.9.7-8.el8.x86_64", + "libxslt-1.1.32-5.el8.x86_64", + "libyaml-0.1.7-5.el8.x86_64", + "libzstd-1.4.4-1.el8.x86_64", + "linux-firmware-20200619-99.git3890db36.el8.noarch", + "logrotate-3.14.0-4.el8.x86_64", + "lshw-B.02.19.2-2.el8.x86_64", + "lsscsi-0.30-1.el8.x86_64", + "lua-libs-5.3.4-11.el8.x86_64", + "lz4-libs-1.8.3-2.el8.x86_64", + "lzo-2.08-14.el8.x86_64", + "man-db-2.7.6.1-17.el8.x86_64", + "memstrack-0.1.8-1.el8.x86_64", + "microcode_ctl-20200609-2.el8.x86_64", + "mozjs60-60.9.0-4.el8.x86_64", + "mpfr-3.1.6-1.el8.x86_64", + "ncurses-6.1-7.20180224.el8.x86_64", + "ncurses-base-6.1-7.20180224.el8.noarch", + "ncurses-libs-6.1-7.20180224.el8.x86_64", + "nettle-3.4.1-2.el8.x86_64", + "newt-0.52.20-11.el8.x86_64", + "nftables-0.9.3-14.el8.x86_64", + "npth-1.5-4.el8.x86_64", + "numactl-libs-2.0.12-11.el8.x86_64", + "open-vm-tools-11.1.0-1.el8.x86_64", + "openldap-2.4.46-15.el8.x86_64", + "openssh-8.0p1-5.el8.x86_64", + "openssh-clients-8.0p1-5.el8.x86_64", + "openssh-server-8.0p1-5.el8.x86_64", + "openssl-1.1.1g-9.el8.x86_64", + "openssl-libs-1.1.1g-9.el8.x86_64", + "openssl-pkcs11-0.4.10-2.el8.x86_64", + "os-prober-1.74-6.el8.x86_64", + "p11-kit-0.23.14-5.el8_0.x86_64", + "p11-kit-trust-0.23.14-5.el8_0.x86_64", + "pam-1.3.1-11.el8.x86_64", + "parted-3.2-38.el8.x86_64", + "passwd-0.80-3.el8.x86_64", + "pciutils-3.6.4-2.el8.x86_64", + "pciutils-libs-3.6.4-2.el8.x86_64", + "pcre-8.42-4.el8.x86_64", + "pcre2-10.32-2.el8.x86_64", + "pigz-2.4-4.el8.x86_64", + "pinentry-1.1.0-2.el8.x86_64", + "platform-python-3.6.8-30.el8.x86_64", + "platform-python-pip-9.0.3-17.el8.noarch", + "platform-python-setuptools-39.2.0-6.el8.noarch", + "plymouth-0.9.4-1.20200615git1e36e30.el8.x86_64", + "plymouth-core-libs-0.9.4-1.20200615git1e36e30.el8.x86_64", + "plymouth-scripts-0.9.4-1.20200615git1e36e30.el8.x86_64", + "policycoreutils-2.9-9.el8.x86_64", + "polkit-0.115-11.el8.x86_64", + "polkit-libs-0.115-11.el8.x86_64", + "polkit-pkla-compat-0.1-12.el8.x86_64", + "popt-1.16-14.el8.x86_64", + "prefixdevname-0.1.0-6.el8.x86_64", + "procps-ng-3.3.15-2.el8.x86_64", + "publicsuffix-list-dafsa-20180723-1.el8.noarch", + "python3-asn1crypto-0.24.0-3.el8.noarch", + "python3-cffi-1.11.5-5.el8.x86_64", + "python3-configobj-5.0.6-11.el8.noarch", + "python3-cryptography-2.3-3.el8.x86_64", + "python3-dateutil-2.6.1-6.el8.noarch", + "python3-dbus-1.2.4-15.el8.x86_64", + "python3-decorator-4.2.1-2.el8.noarch", + "python3-dmidecode-3.12.2-15.el8.x86_64", + "python3-dnf-4.2.23-2.el8.noarch", + "python3-dnf-plugin-spacewalk-2.8.5-11.module+el8.1.0+3455+3ddf2832.noarch", + "python3-dnf-plugins-core-4.0.17-2.el8.noarch", + "python3-ethtool-0.14-3.el8.x86_64", + "python3-firewall-0.8.2-1.el8.noarch", + "python3-gobject-base-3.28.3-2.el8.x86_64", + "python3-gpg-1.13.1-3.el8.x86_64", + "python3-hawkey-0.48.0-2.el8.x86_64", + "python3-hwdata-2.3.6-3.el8.noarch", + "python3-idna-2.5-5.el8.noarch", + "python3-iniparse-0.4-31.el8.noarch", + "python3-inotify-0.9.6-13.el8.noarch", + "python3-libcomps-0.1.11-4.el8.x86_64", + "python3-libdnf-0.48.0-2.el8.x86_64", + "python3-librepo-1.12.0-1.el8.x86_64", + "python3-libs-3.6.8-30.el8.x86_64", + "python3-libselinux-2.9-3.el8.x86_64", + "python3-libxml2-2.9.7-8.el8.x86_64", + "python3-linux-procfs-0.6.2-2.el8.noarch", + "python3-netifaces-0.10.6-4.el8.x86_64", + "python3-newt-0.52.20-11.el8.x86_64", + "python3-nftables-0.9.3-14.el8.x86_64", + "python3-perf-4.18.0-221.el8.x86_64", + "python3-pip-wheel-9.0.3-17.el8.noarch", + "python3-ply-3.9-8.el8.noarch", + "python3-pyOpenSSL-18.0.0-1.el8.noarch", + "python3-pycparser-2.14-14.el8.noarch", + "python3-pyudev-0.21.0-7.el8.noarch", + "python3-rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "python3-rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "python3-rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "python3-rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch", + "python3-rpm-4.14.3-4.el8.x86_64", + "python3-schedutils-0.6-6.el8.x86_64", + "python3-setuptools-wheel-39.2.0-6.el8.noarch", + "python3-six-1.11.0-8.el8.noarch", + "python3-slip-0.6.4-11.el8.noarch", + "python3-slip-dbus-0.6.4-11.el8.noarch", + "python3-subscription-manager-rhsm-1.27.9-1.el8.x86_64", + "python3-syspurpose-1.27.9-1.el8.x86_64", + "python3-unbound-1.7.3-14.el8.x86_64", + "readline-7.0-10.el8.x86_64", + "redhat-release-8.3-0.2.el8.x86_64", + "redhat-release-eula-8.3-0.2.el8.x86_64", + "rhn-check-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "rhn-client-tools-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "rhn-setup-2.8.16-13.module+el8.1.0+3455+3ddf2832.x86_64", + "rhnlib-2.8.6-8.module+el8.1.0+3455+3ddf2832.noarch", + "rhnsd-5.0.35-3.module+el8.1.0+3455+3ddf2832.x86_64", + "rng-tools-6.8-3.el8.x86_64", + "rootfiles-8.1-22.el8.noarch", + "rpm-4.14.3-4.el8.x86_64", + "rpm-build-libs-4.14.3-4.el8.x86_64", + "rpm-libs-4.14.3-4.el8.x86_64", + "rpm-plugin-selinux-4.14.3-4.el8.x86_64", + "rpm-plugin-systemd-inhibit-4.14.3-4.el8.x86_64", + "rsyslog-8.1911.0-6.el8.x86_64", + "sed-4.5-2.el8.x86_64", + "selinux-policy-3.14.3-48.el8.noarch", + "selinux-policy-targeted-3.14.3-48.el8.noarch", + "setup-2.12.2-6.el8.noarch", + "sg3_utils-1.44-5.el8.x86_64", + "sg3_utils-libs-1.44-5.el8.x86_64", + "shadow-utils-4.6-10.el8.x86_64", + "shared-mime-info-1.9-3.el8.x86_64", + "slang-2.3.2-3.el8.x86_64", + "snappy-1.1.7-5.el8.x86_64", + "sqlite-libs-3.26.0-10.el8.x86_64", + "squashfs-tools-4.3-19.el8.x86_64", + "sssd-client-2.3.0-2.el8.x86_64", + "sssd-common-2.3.0-2.el8.x86_64", + "sssd-kcm-2.3.0-2.el8.x86_64", + "sssd-nfs-idmap-2.3.0-2.el8.x86_64", + "subscription-manager-1.27.9-1.el8.x86_64", + "subscription-manager-rhsm-certificates-1.27.9-1.el8.x86_64", + "sudo-1.8.29-6.el8.x86_64", + "systemd-239-36.el8.x86_64", + "systemd-libs-239-36.el8.x86_64", + "systemd-pam-239-36.el8.x86_64", + "systemd-udev-239-36.el8.x86_64", + "tar-1.30-5.el8.x86_64", + "teamd-1.29-5.el8.x86_64", + "trousers-0.3.14-4.el8.x86_64", + "trousers-lib-0.3.14-4.el8.x86_64", + "tuned-2.14.0-2.el8.noarch", + "tzdata-2020a-1.el8.noarch", + "unbound-libs-1.7.3-14.el8.x86_64", + "usermode-1.113-1.el8.x86_64", + "util-linux-2.32.1-24.el8.x86_64", + "vim-minimal-8.0.1763-15.el8.x86_64", + "virt-what-1.18-6.el8.x86_64", + "which-2.21-12.el8.x86_64", + "xfsprogs-5.0.0-4.el8.x86_64", + "xkeyboard-config-2.28-1.el8.noarch", + "xmlsec1-1.2.25-4.el8.x86_64", + "xmlsec1-openssl-1.2.25-4.el8.x86_64", + "xz-5.2.4-3.el8.x86_64", + "xz-libs-5.2.4-3.el8.x86_64", + "yum-4.2.23-2.el8.noarch", + "zlib-1.2.11-15.el8.x86_64" + ], + "partition-table": "dos", + "partition-table-id": "0x14fc63d2", + "partitions": [ + { + "bootable": true, + "fstype": "xfs", + "label": null, + "partuuid": "14fc63d2-01", + "size": 4293918720, + "start": 1048576, + "type": "83", + "uuid": "0bd700f8-090f-4556-b797-b340297ea1bd" + } + ], + "passwd": [ + "adm:x:3:4:adm:/var/adm:/sbin/nologin", + "bin:x:1:1:bin:/bin:/sbin/nologin", + "chrony:x:995:992::/var/lib/chrony:/sbin/nologin", + "daemon:x:2:2:daemon:/sbin:/sbin/nologin", + "dbus:x:81:81:System message bus:/:/sbin/nologin", + "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin", + "games:x:12:100:games:/usr/games:/sbin/nologin", + "halt:x:7:0:halt:/sbin:/sbin/halt", + "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin", + "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin", + "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin", + "operator:x:11:0:operator:/root:/sbin/nologin", + "polkitd:x:998:996:User for polkitd:/:/sbin/nologin", + "redhat:x:1000:1000::/home/redhat:/bin/bash", + "rngd:x:994:991:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin", + "root:x:0:0:root:/root:/bin/bash", + "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown", + "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin", + "sssd:x:996:993:User for sssd:/:/sbin/nologin", + "sync:x:5:0:sync:/sbin:/bin/sync", + "systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin", + "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin", + "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin", + "unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin" + ], + "rpm-verify": { + "changed": { + "/etc/machine-id": ".M.......", + "/etc/udev/hwdb.bin": ".M.......", + "/proc": ".M.......", + "/sys": ".M.......", + "/var/log/lastlog": ".M....G..", + "/var/spool/anacron/cron.daily": ".M.......", + "/var/spool/anacron/cron.monthly": ".M.......", + "/var/spool/anacron/cron.weekly": ".M......." + }, + "missing": [ + "/etc/systemd/system/dbus-org.freedesktop.resolve1.service" + ] + }, + "services-disabled": [ + "chrony-dnssrv@.timer", + "chrony-wait.service", + "console-getty.service", + "cpupower.service", + "ctrl-alt-del.target", + "debug-shell.service", + "ebtables.service", + "exit.target", + "fstrim.timer", + "halt.target", + "iprdump.service", + "iprinit.service", + "iprupdate.service", + "iprutils.target", + "kexec.target", + "nftables.service", + "poweroff.target", + "rdisc.service", + "reboot.target", + "remote-cryptsetup.target", + "rhnsd.service", + "rhsm-facts.service", + "rhsm.service", + "rngd-wake-threshold.service", + "run-vmblock\\x2dfuse.mount", + "runlevel0.target", + "runlevel6.target", + "serial-getty@.service", + "sshd-keygen@.service", + "sshd.socket", + "sssd-autofs.socket", + "sssd-nss.socket", + "sssd-pac.socket", + "sssd-pam-priv.socket", + "sssd-pam.socket", + "sssd-ssh.socket", + "sssd-sudo.socket", + "systemd-resolved.service", + "tcsd.service", + "tmp.mount" + ], + "services-enabled": [ + "NetworkManager-dispatcher.service", + "NetworkManager-wait-online.service", + "NetworkManager.service", + "auditd.service", + "autovt@.service", + "chronyd.service", + "crond.service", + "dbus-org.fedoraproject.FirewallD1.service", + "dbus-org.freedesktop.nm-dispatcher.service", + "dnf-makecache.timer", + "firewalld.service", + "getty@.service", + "import-state.service", + "irqbalance.service", + "kdump.service", + "loadmodules.service", + "microcode.service", + "nis-domainname.service", + "remote-fs.target", + "rhsmcertd.service", + "rngd.service", + "rsyslog.service", + "selinux-autorelabel-mark.service", + "sshd.service", + "sssd-kcm.socket", + "sssd.service", + "syslog.service", + "tuned.service", + "unbound-anchor.timer", + "vgauthd.service", + "vmtoolsd.service" + ], + "timezone": "UTC" + } +} \ No newline at end of file diff --git a/test/cloud-init/meta-data b/test/cloud-init/meta-data new file mode 100644 index 0000000..d2e8b7c --- /dev/null +++ b/test/cloud-init/meta-data @@ -0,0 +1,2 @@ +instance-id: nocloud +local-hostname: vm diff --git a/test/cloud-init/network-config b/test/cloud-init/network-config new file mode 100644 index 0000000..399dcf8 --- /dev/null +++ b/test/cloud-init/network-config @@ -0,0 +1,14 @@ +network: + version: 2 + renderer: NetworkManager + ethernets: + eth0: + dhcpv4: false + dhcpv6: false + addresses: + - 192.168.122.50/24 + gateway4: 192.168.122.1 + nameservers: + addresses: + - 1.1.1.1 + - 8.8.8.8 \ No newline at end of file diff --git a/test/cloud-init/user-data b/test/cloud-init/user-data new file mode 100644 index 0000000..17a1d43 --- /dev/null +++ b/test/cloud-init/user-data @@ -0,0 +1,11 @@ +#cloud-config +user: redhat +ssh_authorized_keys: + - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod + +write_files: + - path: "/etc/smoke-test.txt" + content: "c21va2UtdGVzdAo=" + encoding: "b64" + owner: "root:root" + permissions: "0644" \ No newline at end of file diff --git a/test/image-tests/aws.sh b/test/image-tests/aws.sh new file mode 100755 index 0000000..804e022 --- /dev/null +++ b/test/image-tests/aws.sh @@ -0,0 +1,290 @@ +#!/bin/bash +set -euo pipefail + +source /etc/os-release + +# Fedora 31's composer-cli doesn't support doing image uploads. +if [[ $ID == fedora ]] && [[ $VERSION_ID == 31 ]]; then + echo "Fedora 31 does not support image uploads with composer-cli." + exit 0 +fi + +# Colorful output. +function greenprint { + echo -e "\033[1;32m${1}\033[0m" +} + +# Apply lorax patch to work around pytoml issues in RHEL 8.x. +# See BZ 1843704 or https://github.com/weldr/lorax/pull/1030 for more details. +if [[ $ID == rhel ]]; then + sudo sed -r -i 's#toml.load\(args\[3\]\)#toml.load(open(args[3]))#' \ + /usr/lib/python3.6/site-packages/composer/cli/compose.py + sudo rm -f /usr/lib/python3.6/site-packages/composer/cli/compose.pyc +fi + +# We need jq for parsing composer-cli output. +if ! hash jq; then + greenprint "Installing jq" + sudo dnf -qy install jq +fi + +# We need awscli to talk to AWS. +if ! hash aws; then + greenprint "Installing awscli" + sudo dnf -y install unzip + pushd /tmp + curl -Ls --retry 5 --output awscliv2.zip \ + https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip + unzip awscliv2.zip > /dev/null + sudo ./aws/install > /dev/null + aws --version + popd +fi + +TEST_UUID=$(uuidgen) +IMAGE_KEY=osbuild-composer-aws-test-${TEST_UUID} +AWS_CMD="aws --region $AWS_REGION --output json --color on" + +# Jenkins sets WORKSPACE to the job workspace, but if this script runs +# outside of Jenkins, we can set up a temporary directory instead. +if [[ ${WORKSPACE:-empty} == empty ]]; then + WORKSPACE=$(mktemp -d) +fi + +# Set up temporary files. +TEMPDIR=$(mktemp -d) +AWS_CONFIG=${TEMPDIR}/aws.toml +BLUEPRINT_FILE=${TEMPDIR}/blueprint.toml +AWS_INSTANCE_JSON=${TEMPDIR}/aws-instance.json +COMPOSE_START=${TEMPDIR}/compose-start-${IMAGE_KEY}.json +COMPOSE_INFO=${TEMPDIR}/compose-info-${IMAGE_KEY}.json +AMI_DATA=${TEMPDIR}/ami-data-${IMAGE_KEY}.json +INSTANCE_DATA=${TEMPDIR}/instance-data-${IMAGE_KEY}.json +INSTANCE_CONSOLE=${TEMPDIR}/instance-console-${IMAGE_KEY}.json + +# Check for the smoke test file on the AWS instance that we start. +smoke_test_check () { + # Ensure the ssh key has restricted permissions. + SSH_KEY=${WORKSPACE}/test/keyring/id_rsa + chmod 0600 $SSH_KEY + + SMOKE_TEST=$(ssh -i ${SSH_KEY} redhat@${1} 'cat /etc/smoke-test.txt') + if [[ $SMOKE_TEST == smoke-test ]]; then + echo 1 + else + echo 0 + fi +} + +# Get the compose log. +get_compose_log () { + COMPOSE_ID=$1 + LOG_FILE=${WORKSPACE}/osbuild-${ID}-${VERSION_ID}-aws.log + + # Download the logs. + sudo composer-cli compose log $COMPOSE_ID | tee $LOG_FILE > /dev/null +} + +# Get the compose metadata. +get_compose_metadata () { + COMPOSE_ID=$1 + METADATA_FILE=${WORKSPACE}/osbuild-${ID}-${VERSION_ID}-aws.json + + # Download the metadata. + sudo composer-cli compose metadata $COMPOSE_ID > /dev/null + + # Find the tarball and extract it. + TARBALL=$(basename $(find . -maxdepth 1 -type f -name "*-metadata.tar")) + tar -xf $TARBALL + rm -f $TARBALL + + # Move the JSON file into place. + cat ${COMPOSE_ID}.json | jq -M '.' | tee $METADATA_FILE > /dev/null +} + +# Get the console screenshot from the AWS instance. +store_instance_screenshot () { + INSTANCE_ID=${1} + LOOP_COUNTER=${2} + SCREENSHOT_FILE=${WORKSPACE}/console-screenshot-${ID}-${VERSION_ID}-${LOOP_COUNTER}.jpg + + $AWS_CMD ec2 get-console-screenshot --instance-id ${1} > $INSTANCE_CONSOLE + jq -r '.ImageData' $INSTANCE_CONSOLE | base64 -d - > $SCREENSHOT_FILE +} + +# Write an AWS TOML file +tee $AWS_CONFIG > /dev/null << EOF +provider = "aws" + +[settings] +accessKeyID = "${AWS_ACCESS_KEY_ID}" +secretAccessKey = "${AWS_SECRET_ACCESS_KEY}" +bucket = "${AWS_BUCKET}" +region = "${AWS_REGION}" +key = "${IMAGE_KEY}" +EOF + +# Write a basic blueprint for our image. +tee $BLUEPRINT_FILE > /dev/null << EOF +name = "bash" +description = "A base system with bash" +version = "0.0.1" + +[[packages]] +name = "bash" + +[customizations.services] +enabled = ["sshd", "cloud-init", "cloud-init-local", "cloud-config", "cloud-final"] +EOF + +# Prepare the blueprint for the compose. +greenprint "📋 Preparing blueprint" +sudo composer-cli blueprints push $BLUEPRINT_FILE +sudo composer-cli blueprints depsolve bash + +# Get worker unit file so we can watch the journal. +WORKER_UNIT=$(sudo systemctl list-units | egrep -o "osbuild.*worker.*\.service") +sudo journalctl -af -n 1 -u ${WORKER_UNIT} & +WORKER_JOURNAL_PID=$! + +# Start the compose and upload to AWS. +greenprint "🚀 Starting compose" +sudo composer-cli --json compose start bash ami $IMAGE_KEY $AWS_CONFIG | tee $COMPOSE_START +COMPOSE_ID=$(jq -r '.build_id' $COMPOSE_START) + +# Wait for the compose to finish. +greenprint "⏱ Waiting for compose to finish: ${COMPOSE_ID}" +while true; do + sudo composer-cli --json compose info ${COMPOSE_ID} | tee $COMPOSE_INFO > /dev/null + COMPOSE_STATUS=$(jq -r '.queue_status' $COMPOSE_INFO) + + # Is the compose finished? + if [[ $COMPOSE_STATUS != RUNNING ]] && [[ $COMPOSE_STATUS != WAITING ]]; then + break + fi + + # Wait 30 seconds and try again. + sleep 30 +done + +# Capture the compose logs from osbuild. +greenprint "💬 Getting compose log and metadata" +get_compose_log $COMPOSE_ID +get_compose_metadata $COMPOSE_ID + +# Did the compose finish with success? +if [[ $COMPOSE_STATUS != FINISHED ]]; then + echo "Something went wrong with the compose. 😢" + exit 1 +fi + +# Find the image that we made in AWS. +greenprint "🔍 Search for created AMI" +$AWS_CMD ec2 describe-images \ + --owners self \ + --filters Name=name,Values=${IMAGE_KEY} \ + | tee $AMI_DATA > /dev/null + +AMI_IMAGE_ID=$(jq -r '.Images[].ImageId' $AMI_DATA) + +# Stop watching the worker journal. +sudo kill ${WORKER_JOURNAL_PID} + +# NOTE(mhayden): Getting TagSpecifications to play along with bash's +# parsing of curly braces and square brackets is nuts, so we just write some +# json and pass it to the aws command. +tee $AWS_INSTANCE_JSON > /dev/null << EOF +{ + "TagSpecifications": [ + { + "ResourceType": "instance", + "Tags": [ + { + "Key": "Name", + "Value": "${IMAGE_KEY}" + } + ] + } + ] +} +EOF + +# Build instance in AWS with our image. +greenprint "👷🏻 Building instance in AWS" +$AWS_CMD ec2 run-instances \ + --associate-public-ip-address \ + --key-name personal_servers \ + --image-id ${AMI_IMAGE_ID} \ + --instance-type t3a.micro \ + --user-data file://${WORKSPACE}/test/cloud-init/user-data \ + --cli-input-json file://${AWS_INSTANCE_JSON} > /dev/null + +# Wait for the instance to finish building. +greenprint "⏱ Waiting for AWS instance to be marked as running" +while true; do + $AWS_CMD ec2 describe-instances \ + --filters Name=image-id,Values=${AMI_IMAGE_ID} \ + | tee $INSTANCE_DATA > /dev/null + + INSTANCE_STATUS=$(jq -r '.Reservations[].Instances[].State.Name' $INSTANCE_DATA) + + # Break the loop if our instance is running. + if [[ $INSTANCE_STATUS == running ]]; then + break + fi + + # Sleep for 10 seconds and try again. + sleep 10 + +done + +# Get data about the instance we built. +INSTANCE_ID=$(jq -r '.Reservations[].Instances[].InstanceId' $INSTANCE_DATA) +PUBLIC_IP=$(jq -r '.Reservations[].Instances[].PublicIpAddress' $INSTANCE_DATA) + +# Wait for the node to come online. +greenprint "⏱ Waiting for AWS instance to respond to ssh" +for LOOP_COUNTER in {0..30}; do + if ssh-keyscan $PUBLIC_IP 2>&1 > /dev/null; then + echo "SSH is up!" + ssh-keyscan $PUBLIC_IP >> ~/.ssh/known_hosts + break + fi + + # Get a screenshot of the instance console. + echo "Getting instance screenshot..." + store_instance_screenshot $INSTANCE_ID $LOOP_COUNTER || true + + # ssh-keyscan has a 5 second timeout by default, so the pause per loop + # is 10 seconds when you include the following `sleep`. + echo "Retrying in 5 seconds..." + sleep 5 +done + +# Check for our smoke test file. +greenprint "🛃 Checking for smoke test file" +for LOOP_COUNTER in {0..10}; do + RESULTS="$(smoke_test_check $PUBLIC_IP)" + if [[ $RESULTS == 1 ]]; then + echo "Smoke test passed! 🥳" + break + fi + sleep 5 +done + +# Clean up our mess. +greenprint "🧼 Cleaning up" +SNAPSHOT_ID=$(jq -r '.Images[].BlockDeviceMappings[].Ebs.SnapshotId' $AMI_DATA) +$AWS_CMD ec2 terminate-instances --instance-id ${INSTANCE_ID} +$AWS_CMD ec2 deregister-image --image-id ${AMI_IMAGE_ID} +$AWS_CMD ec2 delete-snapshot --snapshot-id ${SNAPSHOT_ID} + +# Use the return code of the smoke test to determine if we passed or failed. +if [[ $RESULTS == 1 ]]; then + greenprint "💚 Success" +else + greenprint "❌ Failed" + exit 1 +fi + +exit 0 \ No newline at end of file diff --git a/test/image-tests/qemu.sh b/test/image-tests/qemu.sh new file mode 100755 index 0000000..ff16d09 --- /dev/null +++ b/test/image-tests/qemu.sh @@ -0,0 +1,317 @@ +#!/bin/bash +set -euo pipefail + +# Get OS data. +source /etc/os-release +ARCH=$(uname -m) + +# Take the image type passed to the script or use qcow2 by default if nothing +# was passed. +IMAGE_TYPE=${1:-qcow2} + +# Select the file extension based on the image that we are building. +IMAGE_EXTENSION=$IMAGE_TYPE +if [[ $IMAGE_TYPE == 'openstack' ]]; then + IMAGE_EXTENSION=qcow2 +fi + +# RHEL 8 cannot boot a VMDK using libvirt. See BZ 999789. +if [[ $IMAGE_TYPE == vmdk ]]; then + echo "🤷 libvirt cannot boot stream-optimized VMDK." + exit 0 +fi + +# Apply lorax patch to work around pytoml issues in RHEL 8.x. +# See BZ 1843704 or https://github.com/weldr/lorax/pull/1030 for more details. +if [[ $ID == rhel ]]; then + sudo sed -r -i 's#toml.load\(args\[3\]\)#toml.load(open(args[3]))#' \ + /usr/lib/python3.6/site-packages/composer/cli/compose.py + sudo rm -f /usr/lib/python3.6/site-packages/composer/cli/compose.pyc +fi + +# Colorful output. +function greenprint { + echo -e "\033[1;32m${1}\033[0m" +} + +# Install required packages. +greenprint "📦 Installing required packages" +sudo dnf -y install jq libvirt-client libvirt-daemon \ + libvirt-daemon-config-network libvirt-daemon-config-nwfilter \ + libvirt-daemon-driver-interface libvirt-daemon-driver-network \ + libvirt-daemon-driver-nodedev libvirt-daemon-driver-nwfilter \ + libvirt-daemon-driver-qemu libvirt-daemon-driver-secret \ + libvirt-daemon-driver-storage libvirt-daemon-driver-storage-disk \ + libvirt-daemon-kvm qemu-img qemu-kvm virt-install + +# Start libvirtd and test it. +greenprint "🚀 Starting libvirt daemon" +sudo systemctl start libvirtd +sudo virsh list --all > /dev/null + +# Set a customized dnsmasq configuration for libvirt so we always get the +# same address on bootup. +sudo tee /tmp/integration.xml > /dev/null << EOF + + integration + 1c8fe98c-b53a-4ca4-bbdb-deb0f26b3579 + + + + + + + + + + + + + + +EOF +if ! sudo virsh net-info integration > /dev/null 2>&1; then + sudo virsh net-define /tmp/integration.xml + sudo virsh net-start integration +fi + +# Allow anyone in the wheel group to talk to libvirt. +greenprint "🚪 Allowing users in wheel group to talk to libvirt" +WHEEL_GROUP=wheel +if [[ $ID == rhel ]]; then + WHEEL_GROUP=adm +fi +sudo tee /etc/polkit-1/rules.d/50-libvirt.rules > /dev/null << EOF +polkit.addRule(function(action, subject) { + if (action.id == "org.libvirt.unix.manage" && + subject.isInGroup("${WHEEL_GROUP}")) { + return polkit.Result.YES; + } +}); +EOF + +# Set up variables. +TEST_UUID=$(uuidgen) +IMAGE_KEY=osbuild-composer-aws-test-${TEST_UUID} +INSTANCE_ADDRESS=192.168.100.50 + +# Set up temporary files. +TEMPDIR=$(mktemp -d) +BLUEPRINT_FILE=${TEMPDIR}/blueprint.toml +COMPOSE_START=${TEMPDIR}/compose-start-${IMAGE_KEY}.json +COMPOSE_INFO=${TEMPDIR}/compose-info-${IMAGE_KEY}.json + +# Check for the smoke test file on the AWS instance that we start. +smoke_test_check () { + # Ensure the ssh key has restricted permissions. + SSH_KEY=${WORKSPACE}/test/keyring/id_rsa + chmod 0600 $SSH_KEY + + SSH_OPTIONS="-o StrictHostKeyChecking=no -o ConnectTimeout=5" + SMOKE_TEST=$(ssh $SSH_OPTIONS -i ${SSH_KEY} redhat@${1} 'cat /etc/smoke-test.txt') + if [[ $SMOKE_TEST == smoke-test ]]; then + echo 1 + else + echo 0 + fi +} + +# Get the compose log. +get_compose_log () { + COMPOSE_ID=$1 + LOG_FILE=${WORKSPACE}/osbuild-${ID}-${VERSION_ID}-${IMAGE_TYPE}.log + + # Download the logs. + sudo composer-cli compose log $COMPOSE_ID | tee $LOG_FILE > /dev/null +} + +# Get the compose metadata. +get_compose_metadata () { + COMPOSE_ID=$1 + METADATA_FILE=${WORKSPACE}/osbuild-${ID}-${VERSION_ID}-${IMAGE_TYPE}.json + + # Download the metadata. + sudo composer-cli compose metadata $COMPOSE_ID > /dev/null + + # Find the tarball and extract it. + TARBALL=$(basename $(find . -maxdepth 1 -type f -name "*-metadata.tar")) + tar -xf $TARBALL + rm -f $TARBALL + + # Move the JSON file into place. + cat ${COMPOSE_ID}.json | jq -M '.' | tee $METADATA_FILE > /dev/null +} + +# Write a basic blueprint for our image. +# NOTE(mhayden): The service customization will always be required for QCOW2 +# but it is needed for OpenStack due to issue #698 in osbuild-composer. 😭 +# NOTE(mhayden): The cloud-init package isn't included in VHD/Azure images +# by default and it must be added here. +tee $BLUEPRINT_FILE > /dev/null << EOF +name = "bash" +description = "A base system with bash" +version = "0.0.1" + +[[packages]] +name = "bash" + +[[packages]] +name = "cloud-init" + +[customizations.services] +enabled = ["sshd", "cloud-init", "cloud-init-local", "cloud-config", "cloud-final"] + +[customizations.kernel] +append = "LANG=en_US.UTF-8 net.ifnames=0 biosdevname=0" +EOF + +# Prepare the blueprint for the compose. +greenprint "📋 Preparing blueprint" +sudo composer-cli blueprints push $BLUEPRINT_FILE +sudo composer-cli blueprints depsolve bash + +# Get worker unit file so we can watch the journal. +WORKER_UNIT=$(sudo systemctl list-units | egrep -o "osbuild.*worker.*\.service") +sudo journalctl -af -n 1 -u ${WORKER_UNIT} & +WORKER_JOURNAL_PID=$! + +# Start the compose +greenprint "🚀 Starting compose" +sudo composer-cli --json compose start bash $IMAGE_TYPE | tee $COMPOSE_START +COMPOSE_ID=$(jq -r '.build_id' $COMPOSE_START) + +# Wait for the compose to finish. +greenprint "⏱ Waiting for compose to finish: ${COMPOSE_ID}" +while true; do + sudo composer-cli --json compose info ${COMPOSE_ID} | tee $COMPOSE_INFO > /dev/null + COMPOSE_STATUS=$(jq -r '.queue_status' $COMPOSE_INFO) + + # Is the compose finished? + if [[ $COMPOSE_STATUS != RUNNING ]] && [[ $COMPOSE_STATUS != WAITING ]]; then + break + fi + + # Wait 30 seconds and try again. + sleep 5 +done + +# Capture the compose logs from osbuild. +greenprint "💬 Getting compose log and metadata" +get_compose_log $COMPOSE_ID +get_compose_metadata $COMPOSE_ID + +# Did the compose finish with success? +if [[ $COMPOSE_STATUS != FINISHED ]]; then + echo "Something went wrong with the compose. 😢" + exit 1 +fi + +# Stop watching the worker journal. +sudo kill ${WORKER_JOURNAL_PID} + +# Download the image. +greenprint "📥 Downloading the image" +sudo composer-cli compose image ${COMPOSE_ID} > /dev/null +IMAGE_FILENAME=$(basename $(find . -maxdepth 1 -type f -name "*.${IMAGE_EXTENSION}")) +LIBVIRT_IMAGE_PATH=/var/lib/libvirt/images/${IMAGE_KEY}.${IMAGE_EXTENSION} +sudo mv $IMAGE_FILENAME $LIBVIRT_IMAGE_PATH + +# Prepare cloud-init data. +CLOUD_INIT_DIR=$(mktemp -d) +cp ${WORKSPACE}/test/cloud-init/{meta,user}-data ${CLOUD_INIT_DIR}/ +cp ${WORKSPACE}/test/cloud-init/network-config ${CLOUD_INIT_DIR}/ + +# Set up a cloud-init ISO. +greenprint "💿 Creating a cloud-init ISO" +CLOUD_INIT_PATH=/var/lib/libvirt/images/seed.iso +rm -f $CLOUD_INIT_PATH +pushd $CLOUD_INIT_DIR + sudo genisoimage -o $CLOUD_INIT_PATH -V cidata \ + -r -J user-data meta-data network-config 2>&1 > /dev/null +popd + +# Ensure SELinux is happy with our new images. +greenprint "👿 Running restorecon on image directory" +sudo restorecon -Rv /var/lib/libvirt/images/ + +# Run virt-install to import the QCOW and boot it. +greenprint "🚀 Booting the image with libvirt" +if [[ $ARCH == 'ppc64le' ]]; then + # ppc64le has some machine quirks that must be worked around. + sudo virt-install \ + --name $IMAGE_KEY \ + --memory 2048 \ + --vcpus 2 \ + --disk path=${LIBVIRT_IMAGE_PATH} \ + --disk path=${CLOUD_INIT_PATH},device=cdrom \ + --import \ + --os-variant rhel8-unknown \ + --noautoconsole \ + --network network=integration,mac=34:49:22:B0:83:30 \ + --qemu-commandline="-machine pseries,cap-cfpc=broken,cap-sbbc=broken,cap-ibs=broken,cap-ccf-assist=off,cap-large-decr=off" +elif [[ $ARCH == 's390x' ]]; then + # Our s390x machines are highly constrained on resources. + sudo virt-install \ + --name $IMAGE_KEY \ + --memory 512 \ + --vcpus 1 \ + --disk path=${LIBVIRT_IMAGE_PATH} \ + --disk path=${CLOUD_INIT_PATH},device=cdrom \ + --import \ + --os-variant rhel8-unknown \ + --noautoconsole \ + --network network=integration,mac=34:49:22:B0:83:30 +else + sudo virt-install \ + --name $IMAGE_KEY \ + --memory 1024 \ + --vcpus 2 \ + --disk path=${LIBVIRT_IMAGE_PATH} \ + --disk path=${CLOUD_INIT_PATH},device=cdrom \ + --import \ + --os-variant rhel8-unknown \ + --noautoconsole \ + --network network=integration,mac=34:49:22:B0:83:30 +fi + +# Set a number of maximum loops to check for our smoke test file via ssh. +case $ARCH in + s390x) + # s390x needs more time to boot its VM. + MAX_LOOPS=60 + ;; + *) + MAX_LOOPS=30 + ;; +esac + +# Check for our smoke test file. +greenprint "🛃 Checking for smoke test file in VM" +for LOOP_COUNTER in `seq 0 ${MAX_LOOPS}`; do + RESULTS="$(smoke_test_check $INSTANCE_ADDRESS)" + if [[ $RESULTS == 1 ]]; then + echo "Smoke test passed! 🥳" + break + fi + sleep 10 +done + +# Clean up our mess. +greenprint "🧼 Cleaning up" +sudo virsh destroy ${IMAGE_KEY} +if [[ $ARCH == aarch64 ]]; then + sudo virsh undefine ${IMAGE_KEY} --nvram +else + sudo virsh undefine ${IMAGE_KEY} +fi +sudo rm -f $LIBVIRT_IMAGE_PATH $CLOUD_INIT_PATH + +# Use the return code of the smoke test to determine if we passed or failed. +if [[ $RESULTS == 1 ]]; then + greenprint "💚 Success" +else + greenprint "❌ Failed" + exit 1 +fi + +exit 0 diff --git a/test/keyring/id_rsa b/test/keyring/id_rsa new file mode 100644 index 0000000..baf10a7 --- /dev/null +++ b/test/keyring/id_rsa @@ -0,0 +1,27 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn +NhAAAAAwEAAQAAAQEAutcDAozkh8G1W+FX1cpebJ+Pe6luD7HUO08u2g+sAzWf0I41C5A1 +f8luVow5Q0O1KhR9Eq+78sI6g4s1AKiu8zORbFCrFF1h1sIP3oSoPI/cSnDL9dQJBaFKLo +7XwLo5yjg5JOfF0gPcIT6+6nMN7z65qIOvNKZzEs3/SwuyepF37OpZKCnwYfVZ5cbrAq8N +soNKiNXxwGQSz8e5luvpnu9UGbEurFc/L/Cl8q17Ck3ZxedBY8x3CvR1wwbUiUucAN35HE +WMpiXtKOljFjXYEkVaaEolmhx5hYHTFCWmKAn4V88pey7TW90Pkr3oPrSSuyWkVwSzFJZT +pSepZeR6HQAAA8gkYhqfJGIanwAAAAdzc2gtcnNhAAABAQC61wMCjOSHwbVb4VfVyl5sn4 +97qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsU +XWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf +9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsK +TdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzy +l7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5HodAAAAAwEAAQAAAQBbJjHNuLZ0lEfJvzF+ +lu9hxqXVCl8rQPHszUBqGWMtXafNstKmBYBUCwzNJDN7YTisgrpRt3HViHPLYMpGvAQ9mV +bEpMYRdU0Z3Cqpv8XjZbtuhYC7OOn92SW7eOxAlZlD0hHuszOKtV9ayKWS8vZFVTB1yWhc +IyfYcK6vCdHUgPWrdiUJ7ULd0/t6thSCUYZxQAIBImDAh2GIKUV3b99WzUY8uAh4X70JoG +aVF2oFI/6gbIzvwUDqaEjzrll+ZRpxBdpQ+gdpGfvcKwipJrBEffd3Ji3TTqzqy91Iv/K9 +Wm3ExbSe5JqMoimQkTf7BkTnNMViNzzFlW+yg9A2otUBAAAAgH+N7lqHL55QrDggHX3SmX +WzckNWvNP5q1rxLuy+WshivaFzXfihg7NWXpk3Jx8+Bi3AWP+6eKDjE2T6pEj+80dbeXOl +uoZOaRtFbfqMiPxa+UP+EeW8d5rb62U+gMbAVMM/0yQKCG5F6fU9tis34+ev0trR4DeWKS +n9yL/dkUQBAAAAgQDg4sL9BYI6GEz7JzBbww8Xc0zgIexf3LCFOiBPrw7Cb3uGOcjxMRnX +qf4LUeatYe/PCruhnLoCoHdaJc1JeXWjptfCefF0X0R2TeXdcLk0S9VY4vwk9FbbX9Wo6/ +QS+SYr6b1MglUbvnFQpoGEZa8FaC7aKj+Y+k/+J32NwqEObQAAAIEA1LCzckxWUo9LvA11 +7eNeK5VZLAjHabP6grsSgJugX6lQZ6hBnvB+J1w0IbXVxH5EMnl8zeVByWvK0B/XNTBSzw +S7NYXBuUG2if21fsJJB/9VW+UWXK8m8vpErnW5P+6RdichxRs9HuU41e3Y17DvxgiteQ5W +nQbQ6LErYhygDHEAAAAOcm9vdEBsb2NhbGhvc3QBAgMEBQ== +-----END OPENSSH PRIVATE KEY----- diff --git a/test/keyring/id_rsa.pub b/test/keyring/id_rsa.pub new file mode 100644 index 0000000..45330f3 --- /dev/null +++ b/test/keyring/id_rsa.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost diff --git a/tools/image-info b/tools/image-info new file mode 100755 index 0000000..8d682d3 --- /dev/null +++ b/tools/image-info @@ -0,0 +1,537 @@ +#!/usr/bin/python3 + +import argparse +import contextlib +import errno +import functools +import glob +import mimetypes +import json +import os +import platform +import subprocess +import sys +import tempfile +import xml.etree.ElementTree + +from osbuild import loop + + +def run_ostree(*args, _input=None, _check=True, **kwargs): + args = list(args) + [f'--{k}={v}' for k, v in kwargs.items()] + print("ostree " + " ".join(args), file=sys.stderr) + res = subprocess.run(["ostree"] + args, + encoding="utf-8", + stdout=subprocess.PIPE, + input=_input, + check=_check) + return res + + +@contextlib.contextmanager +def loop_create_device(ctl, fd, offset=None, sizelimit=None): + while True: + lo = loop.Loop(ctl.get_unbound()) + try: + lo.set_fd(fd) + except OSError as e: + lo.close() + if e.errno == errno.EBUSY: + continue + raise e + try: + lo.set_status(offset=offset, sizelimit=sizelimit, autoclear=True) + except BlockingIOError: + lo.clear_fd() + lo.close() + continue + break + try: + yield lo + finally: + lo.close() + + +@contextlib.contextmanager +def loop_open(ctl, image, *, offset=None, size=None): + with open(image, "rb") as f: + fd = f.fileno() + with loop_create_device(ctl, fd, offset=offset, sizelimit=size) as lo: + yield os.path.join("/dev", lo.devname) + + +@contextlib.contextmanager +def open_image(ctl, image, fmt): + with tempfile.TemporaryDirectory(dir="/var/tmp") as tmp: + if fmt != "raw": + target = os.path.join(tmp, "image.raw") + # A bug exists in qemu that causes the conversion to raw to fail + # on aarch64 systems with a LOT of CPUs. A workaround is to use + # a single coroutine to do the conversion. It doesn't slow down + # the conversion by much, but it hangs about half the time without + # the limit set. 😢 + # Bug: https://bugs.launchpad.net/qemu/+bug/1805256 + if platform.machine() == 'aarch64': + subprocess.run( + ["qemu-img", "convert", "-m", "1", "-O", "raw", image, target], + check=True + ) + else: + subprocess.run( + ["qemu-img", "convert", "-O", "raw", image, target], + check=True + ) + else: + target = image + + size = os.stat(target).st_size + + with loop_open(ctl, target, offset=0, size=size) as dev: + yield target, dev + + +@contextlib.contextmanager +def mount_at(device, mountpoint, options=[], extra=[]): + opts = ",".join(["ro"] + options) + subprocess.run(["mount", "-o", opts] + extra + [device, mountpoint], check=True) + try: + yield mountpoint + finally: + subprocess.run(["umount", "--lazy", mountpoint], check=True) + + +@contextlib.contextmanager +def mount(device): + with tempfile.TemporaryDirectory() as mountpoint: + subprocess.run(["mount", "-o", "ro", device, mountpoint], check=True) + try: + yield mountpoint + finally: + subprocess.run(["umount", "--lazy", mountpoint], check=True) + + +def parse_environment_vars(s): + r = {} + for line in s.split("\n"): + line = line.strip() + if not line: + continue + if line[0] == '#': + continue + key, value = line.split("=", 1) + r[key] = value.strip('"') + return r + + +def parse_unit_files(s, expected_state): + r = [] + for line in s.split("\n")[1:]: + try: + unit, state, *_ = line.split() + except ValueError: + pass + if state != expected_state: + continue + r.append(unit) + + # deduplicate and sort + r = list(set(r)) + r.sort() + return r + + +def subprocess_check_output(argv, parse_fn=None): + try: + output = subprocess.check_output(argv, encoding="utf-8") + except subprocess.CalledProcessError as e: + sys.stderr.write(f"--- Output from {argv}:\n") + sys.stderr.write(e.stdout) + sys.stderr.write("\n--- End of the output\n") + raise + + return parse_fn(output) if parse_fn else output + + +def read_image_format(device): + qemu = subprocess_check_output(["qemu-img", "info", "--output=json", device], json.loads) + return qemu["format"] + + +def read_partition(device, partition): + res = subprocess.run(["blkid", "--output", "export", device], + check=False, encoding="utf-8", + stdout=subprocess.PIPE) + if res.returncode == 0: + blkid = parse_environment_vars(res.stdout) + else: + blkid = {} + + partition["label"] = blkid.get("LABEL") # doesn't exist for mbr + partition["uuid"] = blkid.get("UUID") + partition["fstype"] = blkid.get("TYPE") + return partition + + +def read_partition_table(device): + partitions = [] + info = {"partition-table": None, + "partition-table-id": None, + "partitions": partitions} + try: + sfdisk = subprocess_check_output(["sfdisk", "--json", device], json.loads) + except subprocess.CalledProcessError: + partitions.append(read_partition(device, False)) + return info + + ptable = sfdisk["partitiontable"] + assert ptable["unit"] == "sectors" + is_dos = ptable["label"] == "dos" + ssize = ptable.get("sectorsize", 512) + + for i, p in enumerate(ptable["partitions"]): + + partuuid = p.get("uuid") + if not partuuid and is_dos: + # For dos/mbr partition layouts the partition uuid + # is generated. Normally this would be done by + # udev+blkid, when the partition table is scanned. + # 'sfdisk' prefixes the partition id with '0x' but + # 'blkid' does not; remove it to mimic 'blkid' + table_id = ptable['id'][2:] + partuuid = "%.33s-%02x" % (table_id, i+1) + + partitions.append({ + "bootable": p.get("bootable", False), + "type": p["type"], + "start": p["start"] * ssize, + "size": p["size"] * ssize, + "partuuid": partuuid + }) + + info["partition-table"] = ptable["label"] + info["partition-table-id"] = ptable["id"] + + return info + + +def read_bootloader_type(device): + with open(device, "rb") as f: + if b"GRUB" in f.read(512): + return "grub" + else: + return "unknown" + + +def read_boot_entries(boot_dir): + entries = [] + for conf in glob.glob(f"{boot_dir}/loader/entries/*.conf"): + with open(conf) as f: + entries.append(dict(line.strip().split(" ", 1) for line in f)) + + return sorted(entries, key=lambda e: e["title"]) + + +def rpm_verify(tree): + # cannot use `rpm --root` here, because rpm uses passwd from the host to + # verify user and group ownership: + # https://github.com/rpm-software-management/rpm/issues/882 + rpm = subprocess.Popen(["chroot", tree, "rpm", "--verify", "--all"], + stdout=subprocess.PIPE, encoding="utf-8") + + changed = {} + missing = [] + for line in rpm.stdout: + # format description in rpm(8), under `--verify` + attrs = line[:9] + if attrs == "missing ": + missing.append(line[12:].rstrip()) + else: + changed[line[13:].rstrip()] = attrs + + # ignore return value, because it returns non-zero when it found changes + rpm.wait() + + return { + "missing": sorted(missing), + "changed": changed + } + + +def rpm_packages(tree, is_ostree): + cmd = ["rpm", "--root", tree, "-qa"] + if is_ostree: + cmd += ["--dbpath", "/usr/share/rpm"] + pkgs = subprocess_check_output(cmd, str.split) + return list(sorted(pkgs)) + + +def read_services(tree, state): + return subprocess_check_output(["systemctl", f"--root={tree}", "list-unit-files"], (lambda s: parse_unit_files(s, state))) + + +def read_firewall_zone(tree): + try: + with open(f"{tree}/etc/firewalld/firewalld.conf") as f: + conf = parse_environment_vars(f.read()) + default = conf["DefaultZone"] + except FileNotFoundError: + default = "public" + + r = [] + try: + root = xml.etree.ElementTree.parse(f"{tree}/etc/firewalld/zones/{default}.xml").getroot() + except FileNotFoundError: + root = xml.etree.ElementTree.parse(f"{tree}/usr/lib/firewalld/zones/{default}.xml").getroot() + + for element in root.findall("service"): + r.append(element.get("name")) + + return r + + +def read_fstab(tree): + result = [] + with contextlib.suppress(FileNotFoundError): + with open(f"{tree}/etc/fstab") as f: + result = sorted([line.split() for line in f if line and not line.startswith("#")]) + return result + + +def append_filesystem(report, tree, *, is_ostree=False): + if os.path.exists(f"{tree}/etc/os-release"): + report["packages"] = rpm_packages(tree, is_ostree) + if not is_ostree: + report["rpm-verify"] = rpm_verify(tree) + + with open(f"{tree}/etc/os-release") as f: + report["os-release"] = parse_environment_vars(f.read()) + + report["services-enabled"] = read_services(tree, "enabled") + report["services-disabled"] = read_services(tree, "disabled") + + with contextlib.suppress(FileNotFoundError): + with open(f"{tree}/etc/hostname") as f: + report["hostname"] = f.read().strip() + + with contextlib.suppress(FileNotFoundError): + report["timezone"] = os.path.basename(os.readlink(f"{tree}/etc/localtime")) + + with contextlib.suppress(FileNotFoundError): + report["firewall-enabled"] = read_firewall_zone(tree) + + fstab = read_fstab(tree) + if fstab: + report["fstab"] = fstab + + with open(f"{tree}/etc/passwd") as f: + report["passwd"] = sorted(f.read().strip().split("\n")) + + with open(f"{tree}/etc/group") as f: + report["groups"] = sorted(f.read().strip().split("\n")) + + if is_ostree: + with open(f"{tree}/usr/lib/passwd") as f: + report["passwd-system"] = sorted(f.read().strip().split("\n")) + + with open(f"{tree}/usr/lib/group") as f: + report["groups-system"] = sorted(f.read().strip().split("\n")) + + if os.path.exists(f"{tree}/boot") and len(os.listdir(f"{tree}/boot")) > 0: + assert "bootmenu" not in report + with contextlib.suppress(FileNotFoundError): + with open(f"{tree}/boot/grub2/grubenv") as f: + report["boot-environment"] = parse_environment_vars(f.read()) + report["bootmenu"] = read_boot_entries(f"{tree}/boot") + + elif len(glob.glob(f"{tree}/vmlinuz-*")) > 0: + assert "bootmenu" not in report + with open(f"{tree}/grub2/grubenv") as f: + report["boot-environment"] = parse_environment_vars(f.read()) + report["bootmenu"] = read_boot_entries(tree) + elif len(glob.glob(f"{tree}/EFI")): + print("EFI partition", file=sys.stderr) + + +def partition_is_esp(partition): + return partition["type"] == "C12A7328-F81F-11D2-BA4B-00A0C93EC93B" + + +def find_esp(partitions): + for i, p in enumerate(partitions): + if partition_is_esp(p): + return p, i + return None, 0 + + +def append_partitions(report, device, loctl): + partitions = report["partitions"] + esp, esp_id = find_esp(partitions) + + with contextlib.ExitStack() as cm: + + devices = {} + for n, part in enumerate(partitions): + start, size = part["start"], part["size"] + dev = cm.enter_context(loop_open(loctl, device, offset=start, size=size)) + devices[n] = dev + read_partition(dev, part) + + for n, part in enumerate(partitions): + if not part["fstype"]: + continue + + with mount(devices[n]) as tree: + if esp and os.path.exists(f"{tree}/boot/efi"): + with mount_at(devices[esp_id], f"{tree}/boot/efi", options=['umask=077']): + append_filesystem(report, tree) + else: + append_filesystem(report, tree) + + +def analyse_image(image): + loctl = loop.LoopControl() + + imgfmt = read_image_format(image) + report = {"image-format": imgfmt} + + with open_image(loctl, image, imgfmt) as (_, device): + report["bootloader"] = read_bootloader_type(device) + report.update(read_partition_table(device)) + + if report["partition-table"]: + append_partitions(report, device, loctl) + else: + with mount(device) as tree: + append_filesystem(report, tree) + + return report + + +def append_directory(report, tree): + if os.path.lexists(f"{tree}/ostree"): + os.makedirs(f"{tree}/etc", exist_ok=True) + with mount_at(f"{tree}/usr/etc", f"{tree}/etc", extra=["--bind"]): + append_filesystem(report, tree, is_ostree=True) + else: + append_filesystem(report, tree) + + +def append_ostree_repo(report, repo): + ostree = functools.partial(run_ostree, repo=repo) + + r = ostree("config", "get", "core.mode") + report["ostree"] = { + "repo": { + "core.mode": r.stdout.strip() + } + } + + r = ostree("refs") + refs = r.stdout.strip().split("\n") + report["ostree"]["refs"] = refs + + resolved = {r: ostree("rev-parse", r).stdout.strip() for r in refs} + commit = resolved[refs[0]] + + refs = {r: {"inputhash": ostree("show", "--print-metadata-key=rpmostree.inputhash", resolved[r]).stdout.strip("'\n")} for r in refs} + report["ostree"]["refs"] = refs + + with tempfile.TemporaryDirectory(dir="/var/tmp") as tmpdir: + tree = os.path.join(tmpdir, "tree") + ostree("checkout", "--force-copy", commit, tree) + append_directory(report, tree) + + +def analyse_directory(path): + report = {} + + if os.path.exists(os.path.join(path, "compose.json")): + report["type"] = "ostree/commit" + repo = os.path.join(path, "repo") + append_ostree_repo(report, repo) + elif os.path.isdir(os.path.join(path, "refs")): + report["type"] = "ostree/repo" + append_ostree_repo(report, repo) + else: + append_directory(report, path) + + return report + + +def is_tarball(path): + mtype, encoding = mimetypes.guess_type(path) + return mtype == "application/x-tar" + + +def analyse_tarball(path): + with tempfile.TemporaryDirectory(dir="/var/tmp") as tmpdir: + tree = os.path.join(tmpdir, "root") + os.makedirs(tree) + command = [ + "tar", + "-x", + "--auto-compress", + "-f", path, + "-C", tree + ] + subprocess.run(command, + stdout=sys.stderr, + check=True) + return analyse_directory(tree) + + +def is_compressed(path): + _, encoding = mimetypes.guess_type(path) + return encoding in ["xz", "gzip", "bzip2"] + + +def analyse_compressed(path): + _, encoding = mimetypes.guess_type(path) + + if encoding == "xz": + command = ["unxz", "--force"] + elif encoding == "gzip": + command = ["gunzip", "--force"] + elif encoding == "bzip2": + command = ["bunzip2", "--force"] + else: + raise ValueError(f"Unsupported compression: {encoding}") + + with tempfile.TemporaryDirectory(dir="/var/tmp") as tmpdir: + subprocess.run(["cp", "--reflink=auto", "-a", path, tmpdir], + check=True) + + files = os.listdir(tmpdir) + archive = os.path.join(tmpdir, files[0]) + subprocess.run(command + [archive], check=True) + + files = os.listdir(tmpdir) + assert len(files) == 1 + image = os.path.join(tmpdir, files[0]) + return analyse_image(image) + + +def main(): + parser = argparse.ArgumentParser(description="Inspect an image") + parser.add_argument("target", metavar="TARGET", + help="The file or directory to analyse", + type=os.path.abspath) + + args = parser.parse_args() + target = args.target + + if os.path.isdir(target): + report = analyse_directory(target) + elif is_tarball(target): + report = analyse_tarball(target) + elif is_compressed(target): + report = analyse_compressed(target) + else: + report = analyse_image(target) + + json.dump(report, sys.stdout, sort_keys=True, indent=2) + + +if __name__ == "__main__": + main() + diff --git a/tools/prepare-source.sh b/tools/prepare-source.sh new file mode 100755 index 0000000..b7a8c15 --- /dev/null +++ b/tools/prepare-source.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +set -eux + +GO_VERSION=1.12.17 +GO_BINARY=$(go env GOPATH)/bin/go$GO_VERSION + +# this is the official way to get a different version of golang +# see https://golang.org/doc/install#extra_versions +go get golang.org/dl/go$GO_VERSION +$GO_BINARY download + +# prepare the sources +$GO_BINARY fmt ./... +$GO_BINARY mod tidy +$GO_BINARY mod vendor diff --git a/tools/test-case-generators/format-request-map.json b/tools/test-case-generators/format-request-map.json new file mode 100644 index 0000000..7b0f9f6 --- /dev/null +++ b/tools/test-case-generators/format-request-map.json @@ -0,0 +1,174 @@ +{ + "ami": { + "boot": { + "type": "aws" + }, + "compose-request": { + "distro": "", + "arch": "", + "image-type": "ami", + "repositories": [], + "filename": "image.raw", + "blueprint": {} + } + }, + "rhel-edge-commit": { + "compose-request": { + "distro": "", + "arch": "", + "image-type": "rhel-edge-commit", + "repositories": [], + "filename": "commit.tar", + "blueprint": {} + } + }, + "fedora-iot-commit": { + "compose-request": { + "distro": "", + "arch": "", + "image-type": "fedora-iot-commit", + "repositories": [], + "filename": "commit.tar", + "blueprint": {} + } + }, + "openstack": { + "boot": { + "type": "openstack" + }, + "compose-request": { + "distro": "", + "arch": "", + "image-type": "openstack", + "repositories": [], + "filename": "disk.qcow2", + "blueprint": { + "name": "openstack-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + } + }, + "tar": { + "boot": { + "type": "nspawn-extract" + }, + "compose-request": { + "distro": "", + "arch": "", + "image-type": "tar", + "repositories": [], + "filename": "root.tar.xz", + "blueprint": { + "name": "tar-boot-test", + "description": "Image for boot test", + "packages": [ + { + "name": "openssh-server", + "version": "*" + } + ], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + } + }, + "qcow2": { + "boot": { + "type": "qemu" + }, + "compose-request": { + "distro": "", + "arch": "", + "image-type": "qcow2", + "repositories": [], + "filename": "disk.qcow2", + "blueprint": { + "name": "qcow2-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + } + }, + "vhd": { + "boot": { + "type": "azure" + }, + "compose-request": { + "distro": "", + "arch": "", + "image-type": "vhd", + "repositories": [], + "filename": "disk.vhd", + "blueprint": { + "name": "vhd-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + } + }, + "vmdk": { + "boot": { + "type": "qemu" + }, + "compose-request": { + "distro": "", + "arch": "", + "image-type": "vmdk", + "filename": "disk.vmdk", + "blueprint": { + "name": "vmdk-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + } + } +} diff --git a/tools/test-case-generators/generate-test-cases b/tools/test-case-generators/generate-test-cases new file mode 100755 index 0000000..9cdb965 --- /dev/null +++ b/tools/test-case-generators/generate-test-cases @@ -0,0 +1,232 @@ +#!/usr/bin/python3 + +import argparse +import subprocess +import json +import os +import sys +import tempfile + + +def get_subprocess_stdout(*args, **kwargs): + sp = subprocess.run(*args, **kwargs, stdout=subprocess.PIPE) + if sp.returncode != 0: + sys.stderr.write(sp.stdout) + sys.exit(1) + + return sp.stdout + + +def run_osbuild(manifest, store, output): + with tempfile.TemporaryFile(dir="/tmp", prefix="osbuild-test-case-generator-", suffix=".log") as log: + try: + subprocess.run(["osbuild", + "--store", store, + "--output-directory", output, + "-"], + stdout=log, + stderr=subprocess.STDOUT, + check=True, + encoding="utf-8", + input=json.dumps(manifest)) + except: + log.seek(0) + print(log.read()) + raise + + +class TestCaseGenerator: + ''' + This class generates a json test case. It accepts a test_case_request as input to the constructor: + + { + "boot": { + "type": "qemu" + }, + "compose-request": { + "distro": "fedora-30", + "arch": "x86_64", + "image-type": "qcow2", + "filename": "disk.qcow2", + "blueprint": {} + } + } + + It then outputs a json test case from the get_test_case() method. + ''' + + def __init__(self, test_case_request): + self.test_case = test_case_request + + def get_test_case(self, no_image_info, store): + compose_request = json.dumps(self.test_case["compose-request"]) + + pipeline_command = ["go", "run", "./cmd/osbuild-pipeline", "-"] + self.test_case["manifest"] = json.loads(get_subprocess_stdout(pipeline_command, input=compose_request, encoding="utf-8")) + + pipeline_command = ["go", "run", "./cmd/osbuild-pipeline", "-rpmmd", "-"] + self.test_case["rpmmd"] = json.loads(get_subprocess_stdout(pipeline_command, input=compose_request, encoding="utf-8")) + + if no_image_info == False: + with tempfile.TemporaryDirectory(dir=store, prefix="test-case-output-") as output: + run_osbuild(self.test_case["manifest"], store, output) + image_file = os.path.join(output, self.test_case["compose-request"]["filename"]) + image_info = get_subprocess_stdout(["tools/image-info", image_file], encoding="utf-8") + self.test_case["image-info"] = json.loads(image_info) + + return self.test_case + + +def generate_test_case(test_type, distro, arch, output_format, test_case_request, keep_image_info, store, output): + print(f"generating test case for {output_format}") + generator = TestCaseGenerator(test_case_request) + test_case = generator.get_test_case(keep_image_info, store) + name = distro.replace("-", "_") + "-" + arch + "-" + output_format.replace("-", "_") + "-" + test_type + ".json" + file_name = output + "/" + name + if keep_image_info: + try: + with open(file_name, 'r') as case_file: + old_test_case = json.load(case_file) + image_info = old_test_case.get("image-info") + if image_info: + test_case["image-info"] = image_info + except: + pass + with open(file_name, 'w') as case_file: + json.dump(test_case, case_file, indent=2) + + +CUSTOMIZATIONS_BLUEPRINT = { + "packages": [ + { + "name": "bash", + "version": "*" + } + ], + "groups": [ + { + "name": "core" + } + ], + "customizations": { + "hosname": "my-host", + "kernel": { + "append": "debug" + }, + "sshkey": [ + { + "user": "user1", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ], + "user": [ + { + "name": "user2", + "description": "description 2", + "password": "$6$BhyxFBgrEFh0VrPJ$MllG8auiU26x2pmzL4.1maHzPHrA.4gTdCvlATFp8HJU9UPee4zCS9BVl2HOzKaUYD/zEm8r/OF05F2icWB0K/", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost", + "home": "/home/home2", + "shell": "/bin/sh", + "groups": [ + "group1" + ], + "uid": 1020, + "gid": 1050, + } + ], + "group": [ + { + "name": "group1", + "gid": 1030 + }, + { + "name": "group2", + "gid": 1050 + } + ], + "timezone": { + "timezone": "Europe/London", + "ntpservers": [ + "time.example.com" + ] + }, + "locale": { + "languages": [ + "en_US" + ], + "keyboard": "dvorak" + }, +# "firewall": { +# "ports": [ +# "25:tcp" +# ], +# "services": { +# "enabled": [ +# "cockpit" +# ], +# "disabled": [ +# "ssh" +# ] +# } +# }, + "services": { + "enabled": [ + "sshd.socket" + ], + "disabled": [ + "bluetooth.service" + ] + } + } +} + + +def main(distro, arch, image_types, keep_image_info, store, output, with_customizations): + with open("tools/test-case-generators/format-request-map.json") as format_request_json: + format_request_dict = json.load(format_request_json) + with open("tools/test-case-generators/repos.json") as repos_json: + repos_dict = json.load(repos_json) + + # Apply all customizations from the CUSTOMIZATIONS_BLUEPRINT dictionary + if with_customizations: + if len(image_types) > 1 or image_types[0] != "qcow2": + print("Customizations are only available for qcow2 image type") + sys.exit(1) + + test_case_request = { + "compose-request": { + "distro": distro, + "arch": arch, + "repositories": repos_dict[distro][arch], + "image-type": "qcow2", + "filename": "disk.qcow2", + "blueprint": CUSTOMIZATIONS_BLUEPRINT, + } + } + generate_test_case("customize", distro, arch, "qcow2", test_case_request, keep_image_info, store, output) + return + + for output_format, test_case_request in format_request_dict.items(): + if test_case_request["compose-request"]["image-type"] not in image_types: + continue + test_case_request["compose-request"]["distro"] = distro + test_case_request["compose-request"]["arch"] = arch + test_case_request["compose-request"]["repositories"] = repos_dict[distro][arch] + generate_test_case("boot", distro, arch, output_format, test_case_request, keep_image_info, store, output) + + return + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description="Generate test cases") + parser.add_argument("--distro", help="distribution for test cases", required=True) + parser.add_argument("--arch", help="architecture for test cases", required=True) + parser.add_argument("--image-types", help="image types for test cases", required=True, nargs='+') + parser.add_argument("--keep-image-info", action='store_true', help="skip image info (re)generation, but keep the one found in the existing test case") + parser.add_argument("--store", metavar="STORE_DIRECTORY", type=os.path.abspath, help="path to the osbuild store", required=True) + parser.add_argument("--output", metavar="OUTPUT_DIRECTORY", type=os.path.abspath, help="path to the output directory", required=True) + parser.add_argument("--with-customizations", action='store_true', help="apply all currently supported customizations to the image (qcow2 only)") + args = parser.parse_args() + + main(args.distro, args.arch, args.image_types, args.keep_image_info, args.store, args.output, args.with_customizations) + sys.exit() diff --git a/tools/test-case-generators/repos.json b/tools/test-case-generators/repos.json new file mode 100644 index 0000000..9c61b41 --- /dev/null +++ b/tools/test-case-generators/repos.json @@ -0,0 +1,76 @@ +{ + "fedora-31": { + "x86_64": [ + { + "baseurl": "http://mirrors.kernel.org/fedora/releases/31/Everything/x86_64/os/", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ], + "aarch64": [ + { + "baseurl": "http://mirrors.kernel.org/fedora/releases/31/Everything/aarch64/os/", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFxq3QMBEADUhGfCfP1ijiggBuVbR/pBDSWMC3TWbfC8pt7fhZkYrilzfWUM\nfTsikPymSriScONXP6DNyZ5r7tgrIVdVrJvRIqIFRO0mufp9HyfWKDO//Ctyp7OQ\nzYw6NVthO/aWpyFfJpj6s4iZsYGqf9gByV8brBB8v8jEsCtVOj1BU3bMbLkMsRI9\n+WiLjDYyvopqNBQuIe8ogxSxpYdbUz6+jxzfvhRoBzWdjITd//Gjd90kkrBOMWkO\nLTqO133OD1WMT08G5NuQ4KhjYsVvSbBpfdkTcNuP8gBP9LxCQDc+e1eAhZ95g3qk\nXLeKEK9j+F+wuG/OrEAxBsscCxXRUB38QH6CFe3UxGoSMnBi+jEhicudo+ItpFOy\n7rPaYyRh4Pmu4QHcC83bNjp8NI6zTHrBmVuPqkxMn07GMAQav9ezBXj6umqTX4cU\ndsJUavJrJ3u7rT0lhBdiGrQ9zPbL07u2Kn+OXPAC3dKSf7G8TvwNAdry9esGSpi3\n8aa1myQYVZvAlsIBkbN3fb1wvDJE5czVhzwQ77V2t66jxeg0o9/2OZVH3CozD2Zj\nv28LHuW/jnQHtsQ0fUyQYRmHxNEVkW10GGM7fQwxzpxFFS1O/2XEnfMu7yBHZsgL\nSojfUct0FhLhEN/g/IINX9ZCVrzK5/De27CNjYE1cgYD/lTmQ0SyjfKVwwARAQAB\ntDFGZWRvcmEgKDMxKSA8ZmVkb3JhLTMxLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI+BBMBAgAoAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXGrkTQUJ\nEs8P/QAKCRBQyzkLPDNZxBmDD/90IFwAfFcQq5ENl7/o2CYQ9k2adTHbV5RoIOWC\n/o9I5/btn1y8WDhPOUNmsgbUqRqz6srlVplg+LkpIj67PVLDBwpVbCJC8o1fztd2\nMryVqdvu562WVhUorII+iW7nfqD0yv55nH9b/JR1qloUa8LpeKw84JgvxF5wVfyR\nid1WjI0DBk2taFR4xCfU5Tb262fbdFj5iB9xskP7oNeS29+SfDjlnybtlFoqr9UA\nnY1uvhBPkGmj45SJkpfP+L+kGYXVaUd29M/q/Pt46X1KDvr6Z0l8bSUEk3zfcNdj\nuEhtHBqSy1UPPAikGX1Q5wGdu7R7+mv/ARqfI6OC44ipoOMNK1Aiu6+slbPYphwX\nighSz9yYuG0EdWt7akfKR0R04Kuej4LXLWcxTR4l8XDzThYgPP0g+z0XQJrAkVhi\nSrzICeC3K1GPSiUtNAxSTL+qWWgwvQyAPNoPV/OYmY+wUxUnKCZpEWPkL79lh6CM\nbJx/zlrOMzRumSzaOnKW9AOliviH4Rj89OmDifBEsQ0CewdHN9ly6g4ZFJJGYXJ5\nHTb5jdButTC3tDfvH8Z7dtXKdC4iqJCIxj698Xn8UjVefZQ2nbv5eXcZLfHtvbNB\nTTv1vvBV4G7aiHKYRSj7HmxhLBZC8Y/nmFAemOoOYDpR5eUmPmSbFayoLfRsFXmC\nHLs7cw==\n=6hRW\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ] + }, + "fedora-32": { + "x86_64": [ + { + "baseurl": "http://mirrors.kernel.org/fedora/releases/32/Everything/x86_64/os/", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ], + "aarch64": [ + { + "baseurl": "http://mirrors.kernel.org/fedora/releases/32/Everything/aarch64/os/", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBF1RVqsBEADWMBqYv/G1r4PwyiPQCfg5fXFGXV1FCZ32qMi9gLUTv1CX7rYy\nH4Inj93oic+lt1kQ0kQCkINOwQczOkm6XDkEekmMrHknJpFLwrTK4AS28bYF2RjL\nM+QJ/dGXDMPYsP0tkLvoxaHr9WTRq89A+AmONcUAQIMJg3JxXAAafBi2UszUUEPI\nU35MyufFt2ePd1k/6hVAO8S2VT72TxXSY7Ha4X2J0pGzbqQ6Dq3AVzogsnoIi09A\n7fYutYZPVVAEGRUqavl0th8LyuZShASZ38CdAHBMvWV4bVZghd/wDV5ev3LXUE0o\nitLAqNSeiDJ3grKWN6v0qdU0l3Ya60sugABd3xaE+ROe8kDCy3WmAaO51Q880ZA2\niXOTJFObqkBTP9j9+ZeQ+KNE8SBoiH1EybKtBU8HmygZvu8ZC1TKUyL5gwGUJt8v\nergy5Bw3Q7av520sNGD3cIWr4fBAVYwdBoZT8RcsnU1PP67NmOGFcwSFJ/LpiOMC\npZ1IBvjOC7KyKEZY2/63kjW73mB7OHOd18BHtGVkA3QAdVlcSule/z68VOAy6bih\nE6mdxP28D4INsts8w6yr4G+3aEIN8u0qRQq66Ri5mOXTyle+ONudtfGg3U9lgicg\nz6oVk17RT0jV9uL6K41sGZ1sH/6yTXQKagdAYr3w1ix2L46JgzC+/+6SSwARAQAB\ntDFGZWRvcmEgKDMyKSA8ZmVkb3JhLTMyLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJdUVarAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRBsEwJtEslE0LdAD/wKdAMtfzr7O2y06/sOPnrb3D39Y2DXbB8y0iEmRdBL29Bq\n5btxwmAka7JZRJVFxPsOVqZ6KARjS0/oCBmJc0jCRANFCtM4UjVHTSsxrJfuPkel\nvrlNE9tcR6OCRpuj/PZgUa39iifF/FTUfDgh4Q91xiQoLqfBxOJzravQHoK9VzrM\nNTOu6J6l4zeGzY/ocj6DpT+5fdUO/3HgGFNiNYPC6GVzeiA3AAVR0sCyGENuqqdg\nwUxV3BIht05M5Wcdvxg1U9x5I3yjkLQw+idvX4pevTiCh9/0u+4g80cT/21Cxsdx\n7+DVHaewXbF87QQIcOAing0S5QE67r2uPVxmWy/56TKUqDoyP8SNsV62lT2jutsj\nLevNxUky011g5w3bc61UeaeKrrurFdRs+RwBVkXmtqm/i6g0ZTWZyWGO6gJd+HWA\nqY1NYiq4+cMvNLatmA2sOoCsRNmE9q6jM/ESVgaH8hSp8GcLuzt9/r4PZZGl5CvU\neldOiD221u8rzuHmLs4dsgwJJ9pgLT0cUAsOpbMPI0JpGIPQ2SG6yK7LmO6HFOxb\nAkz7IGUt0gy1MzPTyBvnB+WgD1I+IQXXsJbhP5+d+d3mOnqsd6oDM/grKBzrhoUe\noNadc9uzjqKlOrmrdIR3Bz38SSiWlde5fu6xPqJdmGZRNjXtcyJlbSPVDIloxw==\n=QWRO\n-----END PGP PUBLIC KEY BLOCK-----\n", + "check_gpg": true + } + ] + }, + "rhel-8": { + "aarch64": [ + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/aarch64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + }, + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/aarch64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + } + ], + "ppc64le": [ + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/ppc64le/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + }, + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/ppc64le/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + } + ], + "s390x": [ + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/s390x/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + }, + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/s390x/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + } + ], + "x86_64": [ + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/BaseOS/x86_64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + }, + { + "baseurl": "http://download.eng.rdu.redhat.com/rel-eng/rhel-8/RHEL-8/RHEL-8.3.0-Beta-1.0/compose/AppStream/x86_64/os", + "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF\n0HtzIG58qDRybwUe89FZprB1ffuUKzdE+HcL3FbNWSSOXVjZIersdXyH3NvnLLLF\n0DNRB2ix3bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1EnUTVh1L0Of023FtPSZXX0c\nu7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh\nXGF+Ncu9XwbalnYde10OCvSWAZ5zTCpoLMTvQjWpbCdWXJzCm6G+/hx9upke546H\n5IjtYm4dTIVTnc3wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW\n9pHedOU+PoF3DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1gj\n/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83rBltFXaBDYhWAKS1\nPcXS1/7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3Bpa+X1XecWi24JY\nHVtlNX025xx1ewVzGNCTlWn1skQN2OOoQTV4C8/qFpTW6DTWYurd4+fE0OJFJZQF\nbuhfXYwmRlVOgN5i77NTIJZJQfYFj38c/Iv5vZBPokO6mffrOTv3MHWVgQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChyZWxlYXNlIGtleSAyKSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjYEEwECACAFAkrgSTsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK\nCRAZni+R/UMdUWzpD/9s5SFR/ZF3yjY5VLUFLMXIKUztNN3oc45fyLdTI3+UClKC\n2tEruzYjqNHhqAEXa2sN1fMrsuKec61Ll2NfvJjkLKDvgVIh7kM7aslNYVOP6BTf\nC/JJ7/ufz3UZmyViH/WDl+AYdgk3JqCIO5w5ryrC9IyBzYv2m0HqYbWfphY3uHw5\nun3ndLJcu8+BGP5F+ONQEGl+DRH58Il9Jp3HwbRa7dvkPgEhfFR+1hI+Btta2C7E\n0/2NKzCxZw7Lx3PBRcU92YKyaEihfy/aQKZCAuyfKiMvsmzs+4poIX7I9NQCJpyE\nIGfINoZ7VxqHwRn/d5mw2MZTJjbzSf+Um9YJyA0iEEyD6qjriWQRbuxpQXmlAJbh\n8okZ4gbVFv1F8MzK+4R8VvWJ0XxgtikSo72fHjwha7MAjqFnOq6eo6fEC/75g3NL\nGht5VdpGuHk0vbdENHMC8wS99e5qXGNDued3hlTavDMlEAHl34q2H9nakTGRF5Ki\nJUfNh3DVRGhg8cMIti21njiRh7gyFI2OccATY7bBSr79JhuNwelHuxLrCFpY7V25\nOFktl15jZJaMxuQBqYdBgSay2G0U6D1+7VsWufpzd/Abx1/c3oi9ZaJvW22kAggq\ndzdA27UUYjWvx42w9menJwh/0jeQcTecIUd0d0rFcw/c1pvgMMl/Q73yzKgKYw==\n=zbHE\n-----END PGP PUBLIC KEY BLOCK-----\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFsy23UBEACUKSphFEIEvNpy68VeW4Dt6qv+mU6am9a2AAl10JANLj1oqWX+\noYk3en1S6cVe2qehSL5DGVa3HMUZkP3dtbD4SgzXzxPodebPcr4+0QNWigkUisri\nXGL5SCEcOP30zDhZvg+4mpO2jMi7Kc1DLPzBBkgppcX91wa0L1pQzBcvYMPyV/Dh\nKbQHR75WdkP6OA2JXdfC94nxYq+2e0iPqC1hCP3Elh+YnSkOkrawDPmoB1g4+ft/\nxsiVGVy/W0ekXmgvYEHt6si6Y8NwXgnTMqxeSXQ9YUgVIbTpsxHQKGy76T5lMlWX\n4LCOmEVomBJg1SqF6yi9Vu8TeNThaDqT4/DddYInd0OO69s0kGIXalVgGYiW2HOD\nx2q5R1VGCoJxXomz+EbOXY+HpKPOHAjU0DB9MxbU3S248LQ69nIB5uxysy0PSco1\nsdZ8sxRNQ9Dw6on0Nowx5m6Thefzs5iK3dnPGBqHTT43DHbnWc2scjQFG+eZhe98\nEll/kb6vpBoY4bG9/wCG9qu7jj9Z+BceCNKeHllbezVLCU/Hswivr7h2dnaEFvPD\nO4GqiWiwOF06XaBMVgxA8p2HRw0KtXqOpZk+o+sUvdPjsBw42BB96A1yFX4jgFNA\nPyZYnEUdP6OOv9HSjnl7k/iEkvHq/jGYMMojixlvXpGXhnt5jNyc4GSUJQARAQAB\ntDNSZWQgSGF0LCBJbmMuIChhdXhpbGlhcnkga2V5KSA8c2VjdXJpdHlAcmVkaGF0\nLmNvbT6JAjkEEwECACMFAlsy23UCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX\ngAAKCRD3b2bD1AgnknqOD/9fB2ASuG2aJIiap4kK58R+RmOVM4qgclAnaG57+vjI\nnKvyfV3NH/keplGNRxwqHekfPCqvkpABwhdGEXIE8ILqnPewIMr6PZNZWNJynZ9i\neSMzVuCG7jDoGyQ5/6B0f6xeBtTeBDiRl7+Alehet1twuGL1BJUYG0QuLgcEzkaE\n/gkuumeVcazLzz7L12D22nMk66GxmgXfqS5zcbqOAuZwaA6VgSEgFdV2X2JU79zS\nBQJXv7NKc+nDXFG7M7EHjY3Rma3HXkDbkT8bzh9tJV7Z7TlpT829pStWQyoxKCVq\nsEX8WsSapTKA3P9YkYCwLShgZu4HKRFvHMaIasSIZWzLu+RZH/4yyHOhj0QB7XMY\neHQ6fGSbtJ+K6SrpHOOsKQNAJ0hVbSrnA1cr5+2SDfel1RfYt0W9FA6DoH/S5gAR\ndzT1u44QVwwp3U+eFpHphFy//uzxNMtCjjdkpzhYYhOCLNkDrlRPb+bcoL/6ePSr\n016PA7eEnuC305YU1Ml2WcCn7wQV8x90o33klJmEkWtXh3X39vYtI4nCPIvZn1eP\nVy+F+wWt4vN2b8oOdlzc2paOembbCo2B+Wapv5Y9peBvlbsDSgqtJABfK8KQq/jK\nYl3h5elIa1I3uNfczeHOnf1enLOUOlq630yeM/yHizz99G1g+z/guMh5+x/OHraW\niLkCDQRbMtt1ARAA1lNsWklhS9LoBdolTVtg65FfdFJr47pzKRGYIoGLbcJ155ND\nG+P8UrM06E/ah06EEWuvu2YyyYAz1iYGsCwHAXtbEJh+1tF0iOVx2vnZPgtIGE9V\nP95V5ZvWvB3bdke1z8HadDA+/Ve7fbwXXLa/z9QhSQgsJ8NS8KYnDDjI4EvQtv0i\nPVLY8+u8z6VyiV9RJyn8UEZEJdbFDF9AZAT8103w8SEo/cvIoUbVKZLGcXdAIjCa\ny04u6jsrMp9UGHZX7+srT+9YHDzQixei4IdmxUcqtiNR2/bFHpHCu1pzYjXj968D\n8Ng2txBXDgs16BF/9l++GWKz2dOSH0jdS6sFJ/Dmg7oYnJ2xKSJEmcnV8Z0M1n4w\nXR1t/KeKZe3aR+RXCAEVC5dQ3GbRW2+WboJ6ldgFcVcOv6iOSWP9TrLzFPOpCsIr\nnHE+cMBmPHq3dUm7KeYXQ6wWWmtXlw6widf7cBcGFeELpuU9klzqdKze8qo2oMkf\nrfxIq8zdciPxZXb/75dGWs6dLHQmDpo4MdQVskw5vvwHicMpUpGpxkX7X1XAfdQf\nyIHLGT4ZXuMLIMUPdzJE0Vwt/RtJrZ+feLSv/+0CkkpGHORYroGwIBrJ2RikgcV2\nbc98V/27Kz2ngUCEwnmlhIcrY4IGAAZzUAl0GLHSevPbAREu4fDW4Y+ztOsAEQEA\nAYkCHwQYAQIACQUCWzLbdQIbDAAKCRD3b2bD1AgnkusfD/9U4sPtZfMw6cII167A\nXRZOO195G7oiAnBUw5AW6EK0SAHVZcuW0LMMXnGe9f4UsEUgCNwo5mvLWPxzKqFq\n6/G3kEZVFwZ0qrlLoJPeHNbOcfkeZ9NgD/OhzQmdylM0IwGM9DMrm2YS4EVsmm2b\n53qKIfIyysp1yAGcTnBwBbZ85osNBl2KRDIPhMs0bnmGB7IAvwlSb+xm6vWKECkO\nlwQDO5Kg8YZ8+Z3pn/oS688t/fPXvWLZYUqwR63oWfIaPJI7Ahv2jJmgw1ofL81r\n2CE3T/OydtUeGLzqWJAB8sbUgT3ug0cjtxsHuroQBSYBND3XDb/EQh5GeVVnGKKH\ngESLFAoweoNjDSXrlIu1gFjCDHF4CqBRmNYKrNQjLmhCrSfwkytXESJwlLzFKY8P\nK1yZyTpDC9YK0G7qgrk7EHmH9JAZTQ5V65pp0vR9KvqTU5ewkQDIljD2f3FIqo2B\nSKNCQE+N6NjWaTeNlU75m+yZocKObSPg0zS8FAuSJetNtzXA7ouqk34OoIMQj4gq\nUnh/i1FcZAd4U6Dtr9aRZ6PeLlm6MJ/h582L6fJLNEu136UWDtJj5eBYEzX13l+d\nSC4PEHx7ZZRwQKptl9NkinLZGJztg175paUu8C34sAv+SQnM20c0pdOXAq9GKKhi\nvt61kpkXoRGxjTlc6h+69aidSg==\n=ls8J\n-----END PGP PUBLIC KEY BLOCK-----\n" + } + ] + } +} diff --git a/vendor/github.com/Azure/azure-pipeline-go/LICENSE b/vendor/github.com/Azure/azure-pipeline-go/LICENSE new file mode 100644 index 0000000..d1ca00f --- /dev/null +++ b/vendor/github.com/Azure/azure-pipeline-go/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE \ No newline at end of file diff --git a/vendor/github.com/Azure/azure-pipeline-go/pipeline/core.go b/vendor/github.com/Azure/azure-pipeline-go/pipeline/core.go new file mode 100644 index 0000000..d7b866c --- /dev/null +++ b/vendor/github.com/Azure/azure-pipeline-go/pipeline/core.go @@ -0,0 +1,284 @@ +package pipeline + +import ( + "context" + "github.com/mattn/go-ieproxy" + "net" + "net/http" + "os" + "time" +) + +// The Factory interface represents an object that can create its Policy object. Each HTTP request sent +// requires that this Factory create a new instance of its Policy object. +type Factory interface { + New(next Policy, po *PolicyOptions) Policy +} + +// FactoryFunc is an adapter that allows the use of an ordinary function as a Factory interface. +type FactoryFunc func(next Policy, po *PolicyOptions) PolicyFunc + +// New calls f(next,po). +func (f FactoryFunc) New(next Policy, po *PolicyOptions) Policy { + return f(next, po) +} + +// The Policy interface represents a mutable Policy object created by a Factory. The object can mutate/process +// the HTTP request and then forward it on to the next Policy object in the linked-list. The returned +// Response goes backward through the linked-list for additional processing. +// NOTE: Request is passed by value so changes do not change the caller's version of +// the request. However, Request has some fields that reference mutable objects (not strings). +// These references are copied; a deep copy is not performed. Specifically, this means that +// you should avoid modifying the objects referred to by these fields: URL, Header, Body, +// GetBody, TransferEncoding, Form, MultipartForm, Trailer, TLS, Cancel, and Response. +type Policy interface { + Do(ctx context.Context, request Request) (Response, error) +} + +// PolicyFunc is an adapter that allows the use of an ordinary function as a Policy interface. +type PolicyFunc func(ctx context.Context, request Request) (Response, error) + +// Do calls f(ctx, request). +func (f PolicyFunc) Do(ctx context.Context, request Request) (Response, error) { + return f(ctx, request) +} + +// Options configures a Pipeline's behavior. +type Options struct { + HTTPSender Factory // If sender is nil, then the pipeline's default client is used to send the HTTP requests. + Log LogOptions +} + +// LogLevel tells a logger the minimum level to log. When code reports a log entry, +// the LogLevel indicates the level of the log entry. The logger only records entries +// whose level is at least the level it was told to log. See the Log* constants. +// For example, if a logger is configured with LogError, then LogError, LogPanic, +// and LogFatal entries will be logged; lower level entries are ignored. +type LogLevel uint32 + +const ( + // LogNone tells a logger not to log any entries passed to it. + LogNone LogLevel = iota + + // LogFatal tells a logger to log all LogFatal entries passed to it. + LogFatal + + // LogPanic tells a logger to log all LogPanic and LogFatal entries passed to it. + LogPanic + + // LogError tells a logger to log all LogError, LogPanic and LogFatal entries passed to it. + LogError + + // LogWarning tells a logger to log all LogWarning, LogError, LogPanic and LogFatal entries passed to it. + LogWarning + + // LogInfo tells a logger to log all LogInfo, LogWarning, LogError, LogPanic and LogFatal entries passed to it. + LogInfo + + // LogDebug tells a logger to log all LogDebug, LogInfo, LogWarning, LogError, LogPanic and LogFatal entries passed to it. + LogDebug +) + +// LogOptions configures the pipeline's logging mechanism & level filtering. +type LogOptions struct { + Log func(level LogLevel, message string) + + // ShouldLog is called periodically allowing you to return whether the specified LogLevel should be logged or not. + // An application can return different values over the its lifetime; this allows the application to dynamically + // alter what is logged. NOTE: This method can be called by multiple goroutines simultaneously so make sure + // you implement it in a goroutine-safe way. If nil, nothing is logged (the equivalent of returning LogNone). + // Usually, the function will be implemented simply like this: return level <= LogWarning + ShouldLog func(level LogLevel) bool +} + +type pipeline struct { + factories []Factory + options Options +} + +// The Pipeline interface represents an ordered list of Factory objects and an object implementing the HTTPSender interface. +// You construct a Pipeline by calling the pipeline.NewPipeline function. To send an HTTP request, call pipeline.NewRequest +// and then call Pipeline's Do method passing a context, the request, and a method-specific Factory (or nil). Passing a +// method-specific Factory allows this one call to Do to inject a Policy into the linked-list. The policy is injected where +// the MethodFactoryMarker (see the pipeline.MethodFactoryMarker function) is in the slice of Factory objects. +// +// When Do is called, the Pipeline object asks each Factory object to construct its Policy object and adds each Policy to a linked-list. +// THen, Do sends the Context and Request through all the Policy objects. The final Policy object sends the request over the network +// (via the HTTPSender object passed to NewPipeline) and the response is returned backwards through all the Policy objects. +// Since Pipeline and Factory objects are goroutine-safe, you typically create 1 Pipeline object and reuse it to make many HTTP requests. +type Pipeline interface { + Do(ctx context.Context, methodFactory Factory, request Request) (Response, error) +} + +// NewPipeline creates a new goroutine-safe Pipeline object from the slice of Factory objects and the specified options. +func NewPipeline(factories []Factory, o Options) Pipeline { + if o.HTTPSender == nil { + o.HTTPSender = newDefaultHTTPClientFactory() + } + if o.Log.Log == nil { + o.Log.Log = func(LogLevel, string) {} // No-op logger + } + return &pipeline{factories: factories, options: o} +} + +// Do is called for each and every HTTP request. It tells each Factory to create its own (mutable) Policy object +// replacing a MethodFactoryMarker factory (if it exists) with the methodFactory passed in. Then, the Context and Request +// are sent through the pipeline of Policy objects (which can transform the Request's URL/query parameters/headers) and +// ultimately sends the transformed HTTP request over the network. +func (p *pipeline) Do(ctx context.Context, methodFactory Factory, request Request) (Response, error) { + response, err := p.newPolicies(methodFactory).Do(ctx, request) + request.close() + return response, err +} + +func (p *pipeline) newPolicies(methodFactory Factory) Policy { + // The last Policy is the one that actually sends the request over the wire and gets the response. + // It is overridable via the Options' HTTPSender field. + po := &PolicyOptions{pipeline: p} // One object shared by all policy objects + next := p.options.HTTPSender.New(nil, po) + + // Walk over the slice of Factory objects in reverse (from wire to API) + markers := 0 + for i := len(p.factories) - 1; i >= 0; i-- { + factory := p.factories[i] + if _, ok := factory.(methodFactoryMarker); ok { + markers++ + if markers > 1 { + panic("MethodFactoryMarker can only appear once in the pipeline") + } + if methodFactory != nil { + // Replace MethodFactoryMarker with passed-in methodFactory + next = methodFactory.New(next, po) + } + } else { + // Use the slice's Factory to construct its Policy + next = factory.New(next, po) + } + } + + // Each Factory has created its Policy + if markers == 0 && methodFactory != nil { + panic("Non-nil methodFactory requires MethodFactoryMarker in the pipeline") + } + return next // Return head of the Policy object linked-list +} + +// A PolicyOptions represents optional information that can be used by a node in the +// linked-list of Policy objects. A PolicyOptions is passed to the Factory's New method +// which passes it (if desired) to the Policy object it creates. Today, the Policy object +// uses the options to perform logging. But, in the future, this could be used for more. +type PolicyOptions struct { + pipeline *pipeline +} + +// ShouldLog returns true if the specified log level should be logged. +func (po *PolicyOptions) ShouldLog(level LogLevel) bool { + if po.pipeline.options.Log.ShouldLog != nil { + return po.pipeline.options.Log.ShouldLog(level) + } + return false +} + +// Log logs a string to the Pipeline's Logger. +func (po *PolicyOptions) Log(level LogLevel, msg string) { + if !po.ShouldLog(level) { + return // Short circuit message formatting if we're not logging it + } + + // We are logging it, ensure trailing newline + if len(msg) == 0 || msg[len(msg)-1] != '\n' { + msg += "\n" // Ensure trailing newline + } + po.pipeline.options.Log.Log(level, msg) + + // If logger doesn't handle fatal/panic, we'll do it here. + if level == LogFatal { + os.Exit(1) + } else if level == LogPanic { + panic(msg) + } +} + +var pipelineHTTPClient = newDefaultHTTPClient() + +func newDefaultHTTPClient() *http.Client { + // We want the Transport to have a large connection pool + return &http.Client{ + Transport: &http.Transport{ + Proxy: ieproxy.GetProxyFunc(), + // We use Dial instead of DialContext as DialContext has been reported to cause slower performance. + Dial /*Context*/ : (&net.Dialer{ + Timeout: 30 * time.Second, + KeepAlive: 30 * time.Second, + DualStack: true, + }).Dial, /*Context*/ + MaxIdleConns: 0, // No limit + MaxIdleConnsPerHost: 100, + IdleConnTimeout: 90 * time.Second, + TLSHandshakeTimeout: 10 * time.Second, + ExpectContinueTimeout: 1 * time.Second, + DisableKeepAlives: false, + DisableCompression: false, + MaxResponseHeaderBytes: 0, + //ResponseHeaderTimeout: time.Duration{}, + //ExpectContinueTimeout: time.Duration{}, + }, + } +} + +// newDefaultHTTPClientFactory creates a DefaultHTTPClientPolicyFactory object that sends HTTP requests to a Go's default http.Client. +func newDefaultHTTPClientFactory() Factory { + return FactoryFunc(func(next Policy, po *PolicyOptions) PolicyFunc { + return func(ctx context.Context, request Request) (Response, error) { + r, err := pipelineHTTPClient.Do(request.WithContext(ctx)) + if err != nil { + err = NewError(err, "HTTP request failed") + } + return NewHTTPResponse(r), err + } + }) +} + +var mfm = methodFactoryMarker{} // Singleton + +// MethodFactoryMarker returns a special marker Factory object. When Pipeline's Do method is called, any +// MethodMarkerFactory object is replaced with the specified methodFactory object. If nil is passed fro Do's +// methodFactory parameter, then the MethodFactoryMarker is ignored as the linked-list of Policy objects is created. +func MethodFactoryMarker() Factory { + return mfm +} + +type methodFactoryMarker struct { +} + +func (methodFactoryMarker) New(next Policy, po *PolicyOptions) Policy { + panic("methodFactoryMarker policy should have been replaced with a method policy") +} + +// LogSanitizer can be implemented to clean secrets from lines logged by ForceLog +// By default no implemetation is provided here, because pipeline may be used in many different +// contexts, so the correct implementation is context-dependent +type LogSanitizer interface { + SanitizeLogMessage(raw string) string +} + +var sanitizer LogSanitizer +var enableForceLog bool = true + +// SetLogSanitizer can be called to supply a custom LogSanitizer. +// There is no threadsafety or locking on the underlying variable, +// so call this function just once at startup of your application +// (Don't later try to change the sanitizer on the fly). +func SetLogSanitizer(s LogSanitizer)(){ + sanitizer = s +} + +// SetForceLogEnabled can be used to disable ForceLog +// There is no threadsafety or locking on the underlying variable, +// so call this function just once at startup of your application +// (Don't later try to change the setting on the fly). +func SetForceLogEnabled(enable bool)() { + enableForceLog = enable +} + + diff --git a/vendor/github.com/Azure/azure-pipeline-go/pipeline/defaultlog.go b/vendor/github.com/Azure/azure-pipeline-go/pipeline/defaultlog.go new file mode 100644 index 0000000..e7ce497 --- /dev/null +++ b/vendor/github.com/Azure/azure-pipeline-go/pipeline/defaultlog.go @@ -0,0 +1,14 @@ +package pipeline + + +// ForceLog should rarely be used. It forceable logs an entry to the +// Windows Event Log (on Windows) or to the SysLog (on Linux) +func ForceLog(level LogLevel, msg string) { + if !enableForceLog { + return + } + if sanitizer != nil { + msg = sanitizer.SanitizeLogMessage(msg) + } + forceLog(level, msg) +} diff --git a/vendor/github.com/Azure/azure-pipeline-go/pipeline/defaultlog_syslog.go b/vendor/github.com/Azure/azure-pipeline-go/pipeline/defaultlog_syslog.go new file mode 100644 index 0000000..819509a --- /dev/null +++ b/vendor/github.com/Azure/azure-pipeline-go/pipeline/defaultlog_syslog.go @@ -0,0 +1,33 @@ +// +build !windows,!nacl,!plan9 + +package pipeline + +import ( + "log" + "log/syslog" +) + +// forceLog should rarely be used. It forceable logs an entry to the +// Windows Event Log (on Windows) or to the SysLog (on Linux) +func forceLog(level LogLevel, msg string) { + if defaultLogger == nil { + return // Return fast if we failed to create the logger. + } + // We are logging it, ensure trailing newline + if len(msg) == 0 || msg[len(msg)-1] != '\n' { + msg += "\n" // Ensure trailing newline + } + switch level { + case LogFatal: + defaultLogger.Fatal(msg) + case LogPanic: + defaultLogger.Panic(msg) + case LogError, LogWarning, LogInfo: + defaultLogger.Print(msg) + } +} + +var defaultLogger = func() *log.Logger { + l, _ := syslog.NewLogger(syslog.LOG_USER|syslog.LOG_WARNING, log.LstdFlags) + return l +}() diff --git a/vendor/github.com/Azure/azure-pipeline-go/pipeline/defaultlog_windows.go b/vendor/github.com/Azure/azure-pipeline-go/pipeline/defaultlog_windows.go new file mode 100644 index 0000000..5fcf400 --- /dev/null +++ b/vendor/github.com/Azure/azure-pipeline-go/pipeline/defaultlog_windows.go @@ -0,0 +1,61 @@ +package pipeline + +import ( + "os" + "syscall" + "unsafe" +) + +// forceLog should rarely be used. It forceable logs an entry to the +// Windows Event Log (on Windows) or to the SysLog (on Linux) +func forceLog(level LogLevel, msg string) { + var el eventType + switch level { + case LogError, LogFatal, LogPanic: + el = elError + case LogWarning: + el = elWarning + case LogInfo: + el = elInfo + } + // We are logging it, ensure trailing newline + if len(msg) == 0 || msg[len(msg)-1] != '\n' { + msg += "\n" // Ensure trailing newline + } + reportEvent(el, 0, msg) +} + +type eventType int16 + +const ( + elSuccess eventType = 0 + elError eventType = 1 + elWarning eventType = 2 + elInfo eventType = 4 +) + +var reportEvent = func() func(eventType eventType, eventID int32, msg string) { + advAPI32 := syscall.MustLoadDLL("advapi32.dll") // lower case to tie in with Go's sysdll registration + registerEventSource := advAPI32.MustFindProc("RegisterEventSourceW") + + sourceName, _ := os.Executable() + sourceNameUTF16, _ := syscall.UTF16PtrFromString(sourceName) + handle, _, lastErr := registerEventSource.Call(uintptr(0), uintptr(unsafe.Pointer(sourceNameUTF16))) + if lastErr == nil { // On error, logging is a no-op + return func(eventType eventType, eventID int32, msg string) {} + } + reportEvent := advAPI32.MustFindProc("ReportEventW") + return func(eventType eventType, eventID int32, msg string) { + s, _ := syscall.UTF16PtrFromString(msg) + _, _, _ = reportEvent.Call( + uintptr(handle), // HANDLE hEventLog + uintptr(eventType), // WORD wType + uintptr(0), // WORD wCategory + uintptr(eventID), // DWORD dwEventID + uintptr(0), // PSID lpUserSid + uintptr(1), // WORD wNumStrings + uintptr(0), // DWORD dwDataSize + uintptr(unsafe.Pointer(&s)), // LPCTSTR *lpStrings + uintptr(0)) // LPVOID lpRawData + } +}() diff --git a/vendor/github.com/Azure/azure-pipeline-go/pipeline/doc.go b/vendor/github.com/Azure/azure-pipeline-go/pipeline/doc.go new file mode 100644 index 0000000..b5ab05f --- /dev/null +++ b/vendor/github.com/Azure/azure-pipeline-go/pipeline/doc.go @@ -0,0 +1,161 @@ +// Copyright 2017 Microsoft Corporation. All rights reserved. +// Use of this source code is governed by an MIT +// license that can be found in the LICENSE file. + +/* +Package pipeline implements an HTTP request/response middleware pipeline whose +policy objects mutate an HTTP request's URL, query parameters, and/or headers before +the request is sent over the wire. + +Not all policy objects mutate an HTTP request; some policy objects simply impact the +flow of requests/responses by performing operations such as logging, retry policies, +timeouts, failure injection, and deserialization of response payloads. + +Implementing the Policy Interface + +To implement a policy, define a struct that implements the pipeline.Policy interface's Do method. Your Do +method is called when an HTTP request wants to be sent over the network. Your Do method can perform any +operation(s) it desires. For example, it can log the outgoing request, mutate the URL, headers, and/or query +parameters, inject a failure, etc. Your Do method must then forward the HTTP request to next Policy object +in a linked-list ensuring that the remaining Policy objects perform their work. Ultimately, the last Policy +object sends the HTTP request over the network (by calling the HTTPSender's Do method). + +When an HTTP response comes back, each Policy object in the linked-list gets a chance to process the response +(in reverse order). The Policy object can log the response, retry the operation if due to a transient failure +or timeout, deserialize the response body, etc. Ultimately, the last Policy object returns the HTTP response +to the code that initiated the original HTTP request. + +Here is a template for how to define a pipeline.Policy object: + + type myPolicy struct { + node PolicyNode + // TODO: Add configuration/setting fields here (if desired)... + } + + func (p *myPolicy) Do(ctx context.Context, request pipeline.Request) (pipeline.Response, error) { + // TODO: Mutate/process the HTTP request here... + response, err := p.node.Do(ctx, request) // Forward HTTP request to next Policy & get HTTP response + // TODO: Mutate/process the HTTP response here... + return response, err // Return response/error to previous Policy + } + +Implementing the Factory Interface + +Each Policy struct definition requires a factory struct definition that implements the pipeline.Factory interface's New +method. The New method is called when application code wants to initiate a new HTTP request. Factory's New method is +passed a pipeline.PolicyNode object which contains a reference to the owning pipeline.Pipeline object (discussed later) and +a reference to the next Policy object in the linked list. The New method should create its corresponding Policy object +passing it the PolicyNode and any other configuration/settings fields appropriate for the specific Policy object. + +Here is a template for how to define a pipeline.Policy object: + + // NOTE: Once created & initialized, Factory objects should be goroutine-safe (ex: immutable); + // this allows reuse (efficient use of memory) and makes these objects usable by multiple goroutines concurrently. + type myPolicyFactory struct { + // TODO: Add any configuration/setting fields if desired... + } + + func (f *myPolicyFactory) New(node pipeline.PolicyNode) Policy { + return &myPolicy{node: node} // TODO: Also initialize any configuration/setting fields here (if desired)... + } + +Using your Factory and Policy objects via a Pipeline + +To use the Factory and Policy objects, an application constructs a slice of Factory objects and passes +this slice to the pipeline.NewPipeline function. + + func NewPipeline(factories []pipeline.Factory, sender pipeline.HTTPSender) Pipeline + +This function also requires an object implementing the HTTPSender interface. For simple scenarios, +passing nil for HTTPSender causes a standard Go http.Client object to be created and used to actually +send the HTTP response over the network. For more advanced scenarios, you can pass your own HTTPSender +object in. This allows sharing of http.Client objects or the use of custom-configured http.Client objects +or other objects that can simulate the network requests for testing purposes. + +Now that you have a pipeline.Pipeline object, you can create a pipeline.Request object (which is a simple +wrapper around Go's standard http.Request object) and pass it to Pipeline's Do method along with passing a +context.Context for cancelling the HTTP request (if desired). + + type Pipeline interface { + Do(ctx context.Context, methodFactory pipeline.Factory, request pipeline.Request) (pipeline.Response, error) + } + +Do iterates over the slice of Factory objects and tells each one to create its corresponding +Policy object. After the linked-list of Policy objects have been created, Do calls the first +Policy object passing it the Context & HTTP request parameters. These parameters now flow through +all the Policy objects giving each object a chance to look at and/or mutate the HTTP request. +The last Policy object sends the message over the network. + +When the network operation completes, the HTTP response and error return values pass +back through the same Policy objects in reverse order. Most Policy objects ignore the +response/error but some log the result, retry the operation (depending on the exact +reason the operation failed), or deserialize the response's body. Your own Policy +objects can do whatever they like when processing outgoing requests or incoming responses. + +Note that after an I/O request runs to completion, the Policy objects for that request +are garbage collected. However, Pipeline object (like Factory objects) are goroutine-safe allowing +them to be created once and reused over many I/O operations. This allows for efficient use of +memory and also makes them safely usable by multiple goroutines concurrently. + +Inserting a Method-Specific Factory into the Linked-List of Policy Objects + +While Pipeline and Factory objects can be reused over many different operations, it is +common to have special behavior for a specific operation/method. For example, a method +may need to deserialize the response's body to an instance of a specific data type. +To accommodate this, the Pipeline's Do method takes an additional method-specific +Factory object. The Do method tells this Factory to create a Policy object and +injects this method-specific Policy object into the linked-list of Policy objects. + +When creating a Pipeline object, the slice of Factory objects passed must have 1 +(and only 1) entry marking where the method-specific Factory should be injected. +The Factory marker is obtained by calling the pipeline.MethodFactoryMarker() function: + + func MethodFactoryMarker() pipeline.Factory + +Creating an HTTP Request Object + +The HTTP request object passed to Pipeline's Do method is not Go's http.Request struct. +Instead, it is a pipeline.Request struct which is a simple wrapper around Go's standard +http.Request. You create a pipeline.Request object by calling the pipeline.NewRequest function: + + func NewRequest(method string, url url.URL, options pipeline.RequestOptions) (request pipeline.Request, err error) + +To this function, you must pass a pipeline.RequestOptions that looks like this: + + type RequestOptions struct { + // The readable and seekable stream to be sent to the server as the request's body. + Body io.ReadSeeker + + // The callback method (if not nil) to be invoked to report progress as the stream is uploaded in the HTTP request. + Progress ProgressReceiver + } + +The method and struct ensure that the request's body stream is a read/seekable stream. +A seekable stream is required so that upon retry, the final Policy object can seek +the stream back to the beginning before retrying the network request and re-uploading the +body. In addition, you can associate a ProgressReceiver callback function which will be +invoked periodically to report progress while bytes are being read from the body stream +and sent over the network. + +Processing the HTTP Response + +When an HTTP response comes in from the network, a reference to Go's http.Response struct is +embedded in a struct that implements the pipeline.Response interface: + + type Response interface { + Response() *http.Response + } + +This interface is returned through all the Policy objects. Each Policy object can call the Response +interface's Response method to examine (or mutate) the embedded http.Response object. + +A Policy object can internally define another struct (implementing the pipeline.Response interface) +that embeds an http.Response and adds additional fields and return this structure to other Policy +objects. This allows a Policy object to deserialize the body to some other struct and return the +original http.Response and the additional struct back through the Policy chain. Other Policy objects +can see the Response but cannot see the additional struct with the deserialized body. After all the +Policy objects have returned, the pipeline.Response interface is returned by Pipeline's Do method. +The caller of this method can perform a type assertion attempting to get back to the struct type +really returned by the Policy object. If the type assertion is successful, the caller now has +access to both the http.Response and the deserialized struct object.*/ +package pipeline diff --git a/vendor/github.com/Azure/azure-pipeline-go/pipeline/error.go b/vendor/github.com/Azure/azure-pipeline-go/pipeline/error.go new file mode 100644 index 0000000..4aaf066 --- /dev/null +++ b/vendor/github.com/Azure/azure-pipeline-go/pipeline/error.go @@ -0,0 +1,181 @@ +package pipeline + +import ( + "fmt" + "runtime" +) + +type causer interface { + Cause() error +} + +func errorWithPC(msg string, pc uintptr) string { + s := "" + if fn := runtime.FuncForPC(pc); fn != nil { + file, line := fn.FileLine(pc) + s = fmt.Sprintf("-> %v, %v:%v\n", fn.Name(), file, line) + } + s += msg + "\n\n" + return s +} + +func getPC(callersToSkip int) uintptr { + // Get the PC of Initialize method's caller. + pc := [1]uintptr{} + _ = runtime.Callers(callersToSkip, pc[:]) + return pc[0] +} + +// ErrorNode can be an embedded field in a private error object. This field +// adds Program Counter support and a 'cause' (reference to a preceding error). +// When initializing a error type with this embedded field, initialize the +// ErrorNode field by calling ErrorNode{}.Initialize(cause). +type ErrorNode struct { + pc uintptr // Represents a Program Counter that you can get symbols for. + cause error // Refers to the preceding error (or nil) +} + +// Error returns a string with the PC's symbols or "" if the PC is invalid. +// When defining a new error type, have its Error method call this one passing +// it the string representation of the error. +func (e *ErrorNode) Error(msg string) string { + s := errorWithPC(msg, e.pc) + if e.cause != nil { + s += e.cause.Error() + "\n" + } + return s +} + +// Cause returns the error that preceded this error. +func (e *ErrorNode) Cause() error { return e.cause } + +// Temporary returns true if the error occurred due to a temporary condition. +func (e ErrorNode) Temporary() bool { + type temporary interface { + Temporary() bool + } + + for err := e.cause; err != nil; { + if t, ok := err.(temporary); ok { + return t.Temporary() + } + + if cause, ok := err.(causer); ok { + err = cause.Cause() + } else { + err = nil + } + } + return false +} + +// Timeout returns true if the error occurred due to time expiring. +func (e ErrorNode) Timeout() bool { + type timeout interface { + Timeout() bool + } + + for err := e.cause; err != nil; { + if t, ok := err.(timeout); ok { + return t.Timeout() + } + + if cause, ok := err.(causer); ok { + err = cause.Cause() + } else { + err = nil + } + } + return false +} + +// Initialize is used to initialize an embedded ErrorNode field. +// It captures the caller's program counter and saves the cause (preceding error). +// To initialize the field, use "ErrorNode{}.Initialize(cause, 3)". A callersToSkip +// value of 3 is very common; but, depending on your code nesting, you may need +// a different value. +func (ErrorNode) Initialize(cause error, callersToSkip int) ErrorNode { + pc := getPC(callersToSkip) + return ErrorNode{pc: pc, cause: cause} +} + +// Cause walks all the preceding errors and return the originating error. +func Cause(err error) error { + for err != nil { + cause, ok := err.(causer) + if !ok { + break + } + err = cause.Cause() + } + return err +} + +// ErrorNodeNoCause can be an embedded field in a private error object. This field +// adds Program Counter support. +// When initializing a error type with this embedded field, initialize the +// ErrorNodeNoCause field by calling ErrorNodeNoCause{}.Initialize(). +type ErrorNodeNoCause struct { + pc uintptr // Represents a Program Counter that you can get symbols for. +} + +// Error returns a string with the PC's symbols or "" if the PC is invalid. +// When defining a new error type, have its Error method call this one passing +// it the string representation of the error. +func (e *ErrorNodeNoCause) Error(msg string) string { + return errorWithPC(msg, e.pc) +} + +// Temporary returns true if the error occurred due to a temporary condition. +func (e ErrorNodeNoCause) Temporary() bool { + return false +} + +// Timeout returns true if the error occurred due to time expiring. +func (e ErrorNodeNoCause) Timeout() bool { + return false +} + +// Initialize is used to initialize an embedded ErrorNode field. +// It captures the caller's program counter. +// To initialize the field, use "ErrorNodeNoCause{}.Initialize(3)". A callersToSkip +// value of 3 is very common; but, depending on your code nesting, you may need +// a different value. +func (ErrorNodeNoCause) Initialize(callersToSkip int) ErrorNodeNoCause { + pc := getPC(callersToSkip) + return ErrorNodeNoCause{pc: pc} +} + +// NewError creates a simple string error (like Error.New). But, this +// error also captures the caller's Program Counter and the preceding error (if provided). +func NewError(cause error, msg string) error { + if cause != nil { + return &pcError{ + ErrorNode: ErrorNode{}.Initialize(cause, 3), + msg: msg, + } + } + return &pcErrorNoCause{ + ErrorNodeNoCause: ErrorNodeNoCause{}.Initialize(3), + msg: msg, + } +} + +// pcError is a simple string error (like error.New) with an ErrorNode (PC & cause). +type pcError struct { + ErrorNode + msg string +} + +// Error satisfies the error interface. It shows the error with Program Counter +// symbols and calls Error on the preceding error so you can see the full error chain. +func (e *pcError) Error() string { return e.ErrorNode.Error(e.msg) } + +// pcErrorNoCause is a simple string error (like error.New) with an ErrorNode (PC). +type pcErrorNoCause struct { + ErrorNodeNoCause + msg string +} + +// Error satisfies the error interface. It shows the error with Program Counter symbols. +func (e *pcErrorNoCause) Error() string { return e.ErrorNodeNoCause.Error(e.msg) } diff --git a/vendor/github.com/Azure/azure-pipeline-go/pipeline/progress.go b/vendor/github.com/Azure/azure-pipeline-go/pipeline/progress.go new file mode 100644 index 0000000..efa3c8e --- /dev/null +++ b/vendor/github.com/Azure/azure-pipeline-go/pipeline/progress.go @@ -0,0 +1,82 @@ +package pipeline + +import "io" + +// ********** The following is common between the request body AND the response body. + +// ProgressReceiver defines the signature of a callback function invoked as progress is reported. +type ProgressReceiver func(bytesTransferred int64) + +// ********** The following are specific to the request body (a ReadSeekCloser) + +// This struct is used when sending a body to the network +type requestBodyProgress struct { + requestBody io.ReadSeeker // Seeking is required to support retries + pr ProgressReceiver +} + +// NewRequestBodyProgress adds progress reporting to an HTTP request's body stream. +func NewRequestBodyProgress(requestBody io.ReadSeeker, pr ProgressReceiver) io.ReadSeeker { + if pr == nil { + panic("pr must not be nil") + } + return &requestBodyProgress{requestBody: requestBody, pr: pr} +} + +// Read reads a block of data from an inner stream and reports progress +func (rbp *requestBodyProgress) Read(p []byte) (n int, err error) { + n, err = rbp.requestBody.Read(p) + if err != nil { + return + } + // Invokes the user's callback method to report progress + position, err := rbp.requestBody.Seek(0, io.SeekCurrent) + if err != nil { + panic(err) + } + rbp.pr(position) + return +} + +func (rbp *requestBodyProgress) Seek(offset int64, whence int) (offsetFromStart int64, err error) { + return rbp.requestBody.Seek(offset, whence) +} + +// requestBodyProgress supports Close but the underlying stream may not; if it does, Close will close it. +func (rbp *requestBodyProgress) Close() error { + if c, ok := rbp.requestBody.(io.Closer); ok { + return c.Close() + } + return nil +} + +// ********** The following are specific to the response body (a ReadCloser) + +// This struct is used when sending a body to the network +type responseBodyProgress struct { + responseBody io.ReadCloser + pr ProgressReceiver + offset int64 +} + +// NewResponseBodyProgress adds progress reporting to an HTTP response's body stream. +func NewResponseBodyProgress(responseBody io.ReadCloser, pr ProgressReceiver) io.ReadCloser { + if pr == nil { + panic("pr must not be nil") + } + return &responseBodyProgress{responseBody: responseBody, pr: pr, offset: 0} +} + +// Read reads a block of data from an inner stream and reports progress +func (rbp *responseBodyProgress) Read(p []byte) (n int, err error) { + n, err = rbp.responseBody.Read(p) + rbp.offset += int64(n) + + // Invokes the user's callback method to report progress + rbp.pr(rbp.offset) + return +} + +func (rbp *responseBodyProgress) Close() error { + return rbp.responseBody.Close() +} diff --git a/vendor/github.com/Azure/azure-pipeline-go/pipeline/request.go b/vendor/github.com/Azure/azure-pipeline-go/pipeline/request.go new file mode 100644 index 0000000..1fbe72b --- /dev/null +++ b/vendor/github.com/Azure/azure-pipeline-go/pipeline/request.go @@ -0,0 +1,147 @@ +package pipeline + +import ( + "io" + "net/http" + "net/url" + "strconv" +) + +// Request is a thin wrapper over an http.Request. The wrapper provides several helper methods. +type Request struct { + *http.Request +} + +// NewRequest initializes a new HTTP request object with any desired options. +func NewRequest(method string, url url.URL, body io.ReadSeeker) (request Request, err error) { + // Note: the url is passed by value so that any pipeline operations that modify it do so on a copy. + + // This code to construct an http.Request is copied from http.NewRequest(); we intentionally omitted removeEmptyPort for now. + request.Request = &http.Request{ + Method: method, + URL: &url, + Proto: "HTTP/1.1", + ProtoMajor: 1, + ProtoMinor: 1, + Header: make(http.Header), + Host: url.Host, + } + + if body != nil { + err = request.SetBody(body) + } + return +} + +// SetBody sets the body and content length, assumes body is not nil. +func (r Request) SetBody(body io.ReadSeeker) error { + size, err := body.Seek(0, io.SeekEnd) + if err != nil { + return err + } + + body.Seek(0, io.SeekStart) + r.ContentLength = size + r.Header["Content-Length"] = []string{strconv.FormatInt(size, 10)} + + if size != 0 { + r.Body = &retryableRequestBody{body: body} + r.GetBody = func() (io.ReadCloser, error) { + _, err := body.Seek(0, io.SeekStart) + if err != nil { + return nil, err + } + return r.Body, nil + } + } else { + // in case the body is an empty stream, we need to use http.NoBody to explicitly provide no content + r.Body = http.NoBody + r.GetBody = func() (io.ReadCloser, error) { + return http.NoBody, nil + } + + // close the user-provided empty body + if c, ok := body.(io.Closer); ok { + c.Close() + } + } + + return nil +} + +// Copy makes a copy of an http.Request. Specifically, it makes a deep copy +// of its Method, URL, Host, Proto(Major/Minor), Header. ContentLength, Close, +// RemoteAddr, RequestURI. Copy makes a shallow copy of the Body, GetBody, TLS, +// Cancel, Response, and ctx fields. Copy panics if any of these fields are +// not nil: TransferEncoding, Form, PostForm, MultipartForm, or Trailer. +func (r Request) Copy() Request { + if r.TransferEncoding != nil || r.Form != nil || r.PostForm != nil || r.MultipartForm != nil || r.Trailer != nil { + panic("Can't make a deep copy of the http.Request because at least one of the following is not nil:" + + "TransferEncoding, Form, PostForm, MultipartForm, or Trailer.") + } + copy := *r.Request // Copy the request + urlCopy := *(r.Request.URL) // Copy the URL + copy.URL = &urlCopy + copy.Header = http.Header{} // Copy the header + for k, vs := range r.Header { + for _, value := range vs { + copy.Header.Add(k, value) + } + } + return Request{Request: ©} // Return the copy +} + +func (r Request) close() error { + if r.Body != nil && r.Body != http.NoBody { + c, ok := r.Body.(*retryableRequestBody) + if !ok { + panic("unexpected request body type (should be *retryableReadSeekerCloser)") + } + return c.realClose() + } + return nil +} + +// RewindBody seeks the request's Body stream back to the beginning so it can be resent when retrying an operation. +func (r Request) RewindBody() error { + if r.Body != nil && r.Body != http.NoBody { + s, ok := r.Body.(io.Seeker) + if !ok { + panic("unexpected request body type (should be io.Seeker)") + } + + // Reset the stream back to the beginning + _, err := s.Seek(0, io.SeekStart) + return err + } + return nil +} + +// ********** The following type/methods implement the retryableRequestBody (a ReadSeekCloser) + +// This struct is used when sending a body to the network +type retryableRequestBody struct { + body io.ReadSeeker // Seeking is required to support retries +} + +// Read reads a block of data from an inner stream and reports progress +func (b *retryableRequestBody) Read(p []byte) (n int, err error) { + return b.body.Read(p) +} + +func (b *retryableRequestBody) Seek(offset int64, whence int) (offsetFromStart int64, err error) { + return b.body.Seek(offset, whence) +} + +func (b *retryableRequestBody) Close() error { + // We don't want the underlying transport to close the request body on transient failures so this is a nop. + // The pipeline closes the request body upon success. + return nil +} + +func (b *retryableRequestBody) realClose() error { + if c, ok := b.body.(io.Closer); ok { + return c.Close() + } + return nil +} diff --git a/vendor/github.com/Azure/azure-pipeline-go/pipeline/response.go b/vendor/github.com/Azure/azure-pipeline-go/pipeline/response.go new file mode 100644 index 0000000..f2dc164 --- /dev/null +++ b/vendor/github.com/Azure/azure-pipeline-go/pipeline/response.go @@ -0,0 +1,74 @@ +package pipeline + +import ( + "bytes" + "fmt" + "net/http" + "sort" + "strings" +) + +// The Response interface exposes an http.Response object as it returns through the pipeline of Policy objects. +// This ensures that Policy objects have access to the HTTP response. However, the object this interface encapsulates +// might be a struct with additional fields that is created by a Policy object (typically a method-specific Factory). +// The method that injected the method-specific Factory gets this returned Response and performs a type assertion +// to the expected struct and returns the struct to its caller. +type Response interface { + Response() *http.Response +} + +// This is the default struct that has the http.Response. +// A method can replace this struct with its own struct containing an http.Response +// field and any other additional fields. +type httpResponse struct { + response *http.Response +} + +// NewHTTPResponse is typically called by a Policy object to return a Response object. +func NewHTTPResponse(response *http.Response) Response { + return &httpResponse{response: response} +} + +// This method satisfies the public Response interface's Response method +func (r httpResponse) Response() *http.Response { + return r.response +} + +// WriteRequestWithResponse appends a formatted HTTP request into a Buffer. If request and/or err are +// not nil, then these are also written into the Buffer. +func WriteRequestWithResponse(b *bytes.Buffer, request *http.Request, response *http.Response, err error) { + // Write the request into the buffer. + fmt.Fprint(b, " "+request.Method+" "+request.URL.String()+"\n") + writeHeader(b, request.Header) + if response != nil { + fmt.Fprintln(b, " --------------------------------------------------------------------------------") + fmt.Fprint(b, " RESPONSE Status: "+response.Status+"\n") + writeHeader(b, response.Header) + } + if err != nil { + fmt.Fprintln(b, " --------------------------------------------------------------------------------") + fmt.Fprint(b, " ERROR:\n"+err.Error()+"\n") + } +} + +// formatHeaders appends an HTTP request's or response's header into a Buffer. +func writeHeader(b *bytes.Buffer, header map[string][]string) { + if len(header) == 0 { + b.WriteString(" (no headers)\n") + return + } + keys := make([]string, 0, len(header)) + // Alphabetize the headers + for k := range header { + keys = append(keys, k) + } + sort.Strings(keys) + for _, k := range keys { + // Redact the value of any Authorization header to prevent security information from persisting in logs + value := interface{}("REDACTED") + if !strings.EqualFold(k, "Authorization") { + value = header[k] + } + fmt.Fprintf(b, " %s: %+v\n", k, value) + } +} diff --git a/vendor/github.com/Azure/azure-pipeline-go/pipeline/version.go b/vendor/github.com/Azure/azure-pipeline-go/pipeline/version.go new file mode 100644 index 0000000..899f996 --- /dev/null +++ b/vendor/github.com/Azure/azure-pipeline-go/pipeline/version.go @@ -0,0 +1,9 @@ +package pipeline + +const ( + // UserAgent is the string to be used in the user agent string when making requests. + UserAgent = "azure-pipeline-go/" + Version + + // Version is the semantic version (see http://semver.org) of the pipeline package. + Version = "0.2.1" +) diff --git a/vendor/github.com/Azure/azure-sdk-for-go/LICENSE b/vendor/github.com/Azure/azure-sdk-for-go/LICENSE new file mode 100644 index 0000000..047555e --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2020 Microsoft Corporation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/Azure/azure-sdk-for-go/NOTICE b/vendor/github.com/Azure/azure-sdk-for-go/NOTICE new file mode 100644 index 0000000..2d1d726 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/NOTICE @@ -0,0 +1,5 @@ +Microsoft Azure-SDK-for-Go +Copyright 2014-2017 Microsoft + +This product includes software developed at +the Microsoft Corporation (https://www.microsoft.com). diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/applicationgateways.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/applicationgateways.go new file mode 100644 index 0000000..117d03b --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/applicationgateways.go @@ -0,0 +1,1455 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// ApplicationGatewaysClient is the network Client +type ApplicationGatewaysClient struct { + BaseClient +} + +// NewApplicationGatewaysClient creates an instance of the ApplicationGatewaysClient client. +func NewApplicationGatewaysClient(subscriptionID string) ApplicationGatewaysClient { + return NewApplicationGatewaysClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewApplicationGatewaysClientWithBaseURI creates an instance of the ApplicationGatewaysClient client using a custom +// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure +// stack). +func NewApplicationGatewaysClientWithBaseURI(baseURI string, subscriptionID string) ApplicationGatewaysClient { + return ApplicationGatewaysClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// BackendHealth gets the backend health of the specified application gateway in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// applicationGatewayName - the name of the application gateway. +// expand - expands BackendAddressPool and BackendHttpSettings referenced in backend health. +func (client ApplicationGatewaysClient) BackendHealth(ctx context.Context, resourceGroupName string, applicationGatewayName string, expand string) (result ApplicationGatewaysBackendHealthFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationGatewaysClient.BackendHealth") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.BackendHealthPreparer(ctx, resourceGroupName, applicationGatewayName, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "BackendHealth", nil, "Failure preparing request") + return + } + + result, err = client.BackendHealthSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "BackendHealth", result.Response(), "Failure sending request") + return + } + + return +} + +// BackendHealthPreparer prepares the BackendHealth request. +func (client ApplicationGatewaysClient) BackendHealthPreparer(ctx context.Context, resourceGroupName string, applicationGatewayName string, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "applicationGatewayName": autorest.Encode("path", applicationGatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/backendhealth", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// BackendHealthSender sends the BackendHealth request. The method will close the +// http.Response Body if it receives an error. +func (client ApplicationGatewaysClient) BackendHealthSender(req *http.Request) (future ApplicationGatewaysBackendHealthFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// BackendHealthResponder handles the response to the BackendHealth request. The method always +// closes the http.Response Body. +func (client ApplicationGatewaysClient) BackendHealthResponder(resp *http.Response) (result ApplicationGatewayBackendHealth, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// BackendHealthOnDemand gets the backend health for given combination of backend pool and http setting of the +// specified application gateway in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// applicationGatewayName - the name of the application gateway. +// probeRequest - request body for on-demand test probe operation. +// expand - expands BackendAddressPool and BackendHttpSettings referenced in backend health. +func (client ApplicationGatewaysClient) BackendHealthOnDemand(ctx context.Context, resourceGroupName string, applicationGatewayName string, probeRequest ApplicationGatewayOnDemandProbe, expand string) (result ApplicationGatewaysBackendHealthOnDemandFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationGatewaysClient.BackendHealthOnDemand") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.BackendHealthOnDemandPreparer(ctx, resourceGroupName, applicationGatewayName, probeRequest, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "BackendHealthOnDemand", nil, "Failure preparing request") + return + } + + result, err = client.BackendHealthOnDemandSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "BackendHealthOnDemand", result.Response(), "Failure sending request") + return + } + + return +} + +// BackendHealthOnDemandPreparer prepares the BackendHealthOnDemand request. +func (client ApplicationGatewaysClient) BackendHealthOnDemandPreparer(ctx context.Context, resourceGroupName string, applicationGatewayName string, probeRequest ApplicationGatewayOnDemandProbe, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "applicationGatewayName": autorest.Encode("path", applicationGatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/getBackendHealthOnDemand", pathParameters), + autorest.WithJSON(probeRequest), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// BackendHealthOnDemandSender sends the BackendHealthOnDemand request. The method will close the +// http.Response Body if it receives an error. +func (client ApplicationGatewaysClient) BackendHealthOnDemandSender(req *http.Request) (future ApplicationGatewaysBackendHealthOnDemandFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// BackendHealthOnDemandResponder handles the response to the BackendHealthOnDemand request. The method always +// closes the http.Response Body. +func (client ApplicationGatewaysClient) BackendHealthOnDemandResponder(resp *http.Response) (result ApplicationGatewayBackendHealthOnDemand, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// CreateOrUpdate creates or updates the specified application gateway. +// Parameters: +// resourceGroupName - the name of the resource group. +// applicationGatewayName - the name of the application gateway. +// parameters - parameters supplied to the create or update application gateway operation. +func (client ApplicationGatewaysClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, applicationGatewayName string, parameters ApplicationGateway) (result ApplicationGatewaysCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationGatewaysClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.ApplicationGatewayPropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.ApplicationGatewayPropertiesFormat.WebApplicationFirewallConfiguration", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.ApplicationGatewayPropertiesFormat.WebApplicationFirewallConfiguration.Enabled", Name: validation.Null, Rule: true, Chain: nil}, + {Target: "parameters.ApplicationGatewayPropertiesFormat.WebApplicationFirewallConfiguration.RuleSetType", Name: validation.Null, Rule: true, Chain: nil}, + {Target: "parameters.ApplicationGatewayPropertiesFormat.WebApplicationFirewallConfiguration.RuleSetVersion", Name: validation.Null, Rule: true, Chain: nil}, + {Target: "parameters.ApplicationGatewayPropertiesFormat.WebApplicationFirewallConfiguration.MaxRequestBodySize", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.ApplicationGatewayPropertiesFormat.WebApplicationFirewallConfiguration.MaxRequestBodySize", Name: validation.InclusiveMaximum, Rule: int64(128), Chain: nil}, + {Target: "parameters.ApplicationGatewayPropertiesFormat.WebApplicationFirewallConfiguration.MaxRequestBodySize", Name: validation.InclusiveMinimum, Rule: int64(8), Chain: nil}, + }}, + {Target: "parameters.ApplicationGatewayPropertiesFormat.WebApplicationFirewallConfiguration.MaxRequestBodySizeInKb", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.ApplicationGatewayPropertiesFormat.WebApplicationFirewallConfiguration.MaxRequestBodySizeInKb", Name: validation.InclusiveMaximum, Rule: int64(128), Chain: nil}, + {Target: "parameters.ApplicationGatewayPropertiesFormat.WebApplicationFirewallConfiguration.MaxRequestBodySizeInKb", Name: validation.InclusiveMinimum, Rule: int64(8), Chain: nil}, + }}, + {Target: "parameters.ApplicationGatewayPropertiesFormat.WebApplicationFirewallConfiguration.FileUploadLimitInMb", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.ApplicationGatewayPropertiesFormat.WebApplicationFirewallConfiguration.FileUploadLimitInMb", Name: validation.InclusiveMinimum, Rule: int64(0), Chain: nil}}}, + }}, + {Target: "parameters.ApplicationGatewayPropertiesFormat.AutoscaleConfiguration", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.ApplicationGatewayPropertiesFormat.AutoscaleConfiguration.MinCapacity", Name: validation.Null, Rule: true, + Chain: []validation.Constraint{{Target: "parameters.ApplicationGatewayPropertiesFormat.AutoscaleConfiguration.MinCapacity", Name: validation.InclusiveMinimum, Rule: int64(0), Chain: nil}}}, + {Target: "parameters.ApplicationGatewayPropertiesFormat.AutoscaleConfiguration.MaxCapacity", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.ApplicationGatewayPropertiesFormat.AutoscaleConfiguration.MaxCapacity", Name: validation.InclusiveMinimum, Rule: int64(2), Chain: nil}}}, + }}, + }}}}}); err != nil { + return result, validation.NewError("network.ApplicationGatewaysClient", "CreateOrUpdate", err.Error()) + } + + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, applicationGatewayName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client ApplicationGatewaysClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, applicationGatewayName string, parameters ApplicationGateway) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "applicationGatewayName": autorest.Encode("path", applicationGatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client ApplicationGatewaysClient) CreateOrUpdateSender(req *http.Request) (future ApplicationGatewaysCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client ApplicationGatewaysClient) CreateOrUpdateResponder(resp *http.Response) (result ApplicationGateway, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified application gateway. +// Parameters: +// resourceGroupName - the name of the resource group. +// applicationGatewayName - the name of the application gateway. +func (client ApplicationGatewaysClient) Delete(ctx context.Context, resourceGroupName string, applicationGatewayName string) (result ApplicationGatewaysDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationGatewaysClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, applicationGatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client ApplicationGatewaysClient) DeletePreparer(ctx context.Context, resourceGroupName string, applicationGatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "applicationGatewayName": autorest.Encode("path", applicationGatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client ApplicationGatewaysClient) DeleteSender(req *http.Request) (future ApplicationGatewaysDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client ApplicationGatewaysClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified application gateway. +// Parameters: +// resourceGroupName - the name of the resource group. +// applicationGatewayName - the name of the application gateway. +func (client ApplicationGatewaysClient) Get(ctx context.Context, resourceGroupName string, applicationGatewayName string) (result ApplicationGateway, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationGatewaysClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, applicationGatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client ApplicationGatewaysClient) GetPreparer(ctx context.Context, resourceGroupName string, applicationGatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "applicationGatewayName": autorest.Encode("path", applicationGatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client ApplicationGatewaysClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client ApplicationGatewaysClient) GetResponder(resp *http.Response) (result ApplicationGateway, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetSslPredefinedPolicy gets Ssl predefined policy with the specified policy name. +// Parameters: +// predefinedPolicyName - name of Ssl predefined policy. +func (client ApplicationGatewaysClient) GetSslPredefinedPolicy(ctx context.Context, predefinedPolicyName string) (result ApplicationGatewaySslPredefinedPolicy, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationGatewaysClient.GetSslPredefinedPolicy") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetSslPredefinedPolicyPreparer(ctx, predefinedPolicyName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "GetSslPredefinedPolicy", nil, "Failure preparing request") + return + } + + resp, err := client.GetSslPredefinedPolicySender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "GetSslPredefinedPolicy", resp, "Failure sending request") + return + } + + result, err = client.GetSslPredefinedPolicyResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "GetSslPredefinedPolicy", resp, "Failure responding to request") + } + + return +} + +// GetSslPredefinedPolicyPreparer prepares the GetSslPredefinedPolicy request. +func (client ApplicationGatewaysClient) GetSslPredefinedPolicyPreparer(ctx context.Context, predefinedPolicyName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "predefinedPolicyName": autorest.Encode("path", predefinedPolicyName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default/predefinedPolicies/{predefinedPolicyName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSslPredefinedPolicySender sends the GetSslPredefinedPolicy request. The method will close the +// http.Response Body if it receives an error. +func (client ApplicationGatewaysClient) GetSslPredefinedPolicySender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetSslPredefinedPolicyResponder handles the response to the GetSslPredefinedPolicy request. The method always +// closes the http.Response Body. +func (client ApplicationGatewaysClient) GetSslPredefinedPolicyResponder(resp *http.Response) (result ApplicationGatewaySslPredefinedPolicy, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List lists all application gateways in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client ApplicationGatewaysClient) List(ctx context.Context, resourceGroupName string) (result ApplicationGatewayListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationGatewaysClient.List") + defer func() { + sc := -1 + if result.aglr.Response.Response != nil { + sc = result.aglr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.aglr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "List", resp, "Failure sending request") + return + } + + result.aglr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client ApplicationGatewaysClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client ApplicationGatewaysClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client ApplicationGatewaysClient) ListResponder(resp *http.Response) (result ApplicationGatewayListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client ApplicationGatewaysClient) listNextResults(ctx context.Context, lastResults ApplicationGatewayListResult) (result ApplicationGatewayListResult, err error) { + req, err := lastResults.applicationGatewayListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client ApplicationGatewaysClient) ListComplete(ctx context.Context, resourceGroupName string) (result ApplicationGatewayListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationGatewaysClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName) + return +} + +// ListAll gets all the application gateways in a subscription. +func (client ApplicationGatewaysClient) ListAll(ctx context.Context) (result ApplicationGatewayListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationGatewaysClient.ListAll") + defer func() { + sc := -1 + if result.aglr.Response.Response != nil { + sc = result.aglr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listAllNextResults + req, err := client.ListAllPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAll", nil, "Failure preparing request") + return + } + + resp, err := client.ListAllSender(req) + if err != nil { + result.aglr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAll", resp, "Failure sending request") + return + } + + result.aglr, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAll", resp, "Failure responding to request") + } + + return +} + +// ListAllPreparer prepares the ListAll request. +func (client ApplicationGatewaysClient) ListAllPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGateways", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAllSender sends the ListAll request. The method will close the +// http.Response Body if it receives an error. +func (client ApplicationGatewaysClient) ListAllSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAllResponder handles the response to the ListAll request. The method always +// closes the http.Response Body. +func (client ApplicationGatewaysClient) ListAllResponder(resp *http.Response) (result ApplicationGatewayListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listAllNextResults retrieves the next set of results, if any. +func (client ApplicationGatewaysClient) listAllNextResults(ctx context.Context, lastResults ApplicationGatewayListResult) (result ApplicationGatewayListResult, err error) { + req, err := lastResults.applicationGatewayListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "listAllNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListAllSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "listAllNextResults", resp, "Failure sending next results request") + } + result, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "listAllNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListAllComplete enumerates all values, automatically crossing page boundaries as required. +func (client ApplicationGatewaysClient) ListAllComplete(ctx context.Context) (result ApplicationGatewayListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationGatewaysClient.ListAll") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListAll(ctx) + return +} + +// ListAvailableRequestHeaders lists all available request headers. +func (client ApplicationGatewaysClient) ListAvailableRequestHeaders(ctx context.Context) (result ListString, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationGatewaysClient.ListAvailableRequestHeaders") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ListAvailableRequestHeadersPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAvailableRequestHeaders", nil, "Failure preparing request") + return + } + + resp, err := client.ListAvailableRequestHeadersSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAvailableRequestHeaders", resp, "Failure sending request") + return + } + + result, err = client.ListAvailableRequestHeadersResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAvailableRequestHeaders", resp, "Failure responding to request") + } + + return +} + +// ListAvailableRequestHeadersPreparer prepares the ListAvailableRequestHeaders request. +func (client ApplicationGatewaysClient) ListAvailableRequestHeadersPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableRequestHeaders", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAvailableRequestHeadersSender sends the ListAvailableRequestHeaders request. The method will close the +// http.Response Body if it receives an error. +func (client ApplicationGatewaysClient) ListAvailableRequestHeadersSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAvailableRequestHeadersResponder handles the response to the ListAvailableRequestHeaders request. The method always +// closes the http.Response Body. +func (client ApplicationGatewaysClient) ListAvailableRequestHeadersResponder(resp *http.Response) (result ListString, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result.Value), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// ListAvailableResponseHeaders lists all available response headers. +func (client ApplicationGatewaysClient) ListAvailableResponseHeaders(ctx context.Context) (result ListString, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationGatewaysClient.ListAvailableResponseHeaders") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ListAvailableResponseHeadersPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAvailableResponseHeaders", nil, "Failure preparing request") + return + } + + resp, err := client.ListAvailableResponseHeadersSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAvailableResponseHeaders", resp, "Failure sending request") + return + } + + result, err = client.ListAvailableResponseHeadersResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAvailableResponseHeaders", resp, "Failure responding to request") + } + + return +} + +// ListAvailableResponseHeadersPreparer prepares the ListAvailableResponseHeaders request. +func (client ApplicationGatewaysClient) ListAvailableResponseHeadersPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableResponseHeaders", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAvailableResponseHeadersSender sends the ListAvailableResponseHeaders request. The method will close the +// http.Response Body if it receives an error. +func (client ApplicationGatewaysClient) ListAvailableResponseHeadersSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAvailableResponseHeadersResponder handles the response to the ListAvailableResponseHeaders request. The method always +// closes the http.Response Body. +func (client ApplicationGatewaysClient) ListAvailableResponseHeadersResponder(resp *http.Response) (result ListString, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result.Value), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// ListAvailableServerVariables lists all available server variables. +func (client ApplicationGatewaysClient) ListAvailableServerVariables(ctx context.Context) (result ListString, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationGatewaysClient.ListAvailableServerVariables") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ListAvailableServerVariablesPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAvailableServerVariables", nil, "Failure preparing request") + return + } + + resp, err := client.ListAvailableServerVariablesSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAvailableServerVariables", resp, "Failure sending request") + return + } + + result, err = client.ListAvailableServerVariablesResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAvailableServerVariables", resp, "Failure responding to request") + } + + return +} + +// ListAvailableServerVariablesPreparer prepares the ListAvailableServerVariables request. +func (client ApplicationGatewaysClient) ListAvailableServerVariablesPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableServerVariables", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAvailableServerVariablesSender sends the ListAvailableServerVariables request. The method will close the +// http.Response Body if it receives an error. +func (client ApplicationGatewaysClient) ListAvailableServerVariablesSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAvailableServerVariablesResponder handles the response to the ListAvailableServerVariables request. The method always +// closes the http.Response Body. +func (client ApplicationGatewaysClient) ListAvailableServerVariablesResponder(resp *http.Response) (result ListString, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result.Value), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// ListAvailableSslOptions lists available Ssl options for configuring Ssl policy. +func (client ApplicationGatewaysClient) ListAvailableSslOptions(ctx context.Context) (result ApplicationGatewayAvailableSslOptions, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationGatewaysClient.ListAvailableSslOptions") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ListAvailableSslOptionsPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAvailableSslOptions", nil, "Failure preparing request") + return + } + + resp, err := client.ListAvailableSslOptionsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAvailableSslOptions", resp, "Failure sending request") + return + } + + result, err = client.ListAvailableSslOptionsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAvailableSslOptions", resp, "Failure responding to request") + } + + return +} + +// ListAvailableSslOptionsPreparer prepares the ListAvailableSslOptions request. +func (client ApplicationGatewaysClient) ListAvailableSslOptionsPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAvailableSslOptionsSender sends the ListAvailableSslOptions request. The method will close the +// http.Response Body if it receives an error. +func (client ApplicationGatewaysClient) ListAvailableSslOptionsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAvailableSslOptionsResponder handles the response to the ListAvailableSslOptions request. The method always +// closes the http.Response Body. +func (client ApplicationGatewaysClient) ListAvailableSslOptionsResponder(resp *http.Response) (result ApplicationGatewayAvailableSslOptions, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// ListAvailableSslPredefinedPolicies lists all SSL predefined policies for configuring Ssl policy. +func (client ApplicationGatewaysClient) ListAvailableSslPredefinedPolicies(ctx context.Context) (result ApplicationGatewayAvailableSslPredefinedPoliciesPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationGatewaysClient.ListAvailableSslPredefinedPolicies") + defer func() { + sc := -1 + if result.agaspp.Response.Response != nil { + sc = result.agaspp.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listAvailableSslPredefinedPoliciesNextResults + req, err := client.ListAvailableSslPredefinedPoliciesPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAvailableSslPredefinedPolicies", nil, "Failure preparing request") + return + } + + resp, err := client.ListAvailableSslPredefinedPoliciesSender(req) + if err != nil { + result.agaspp.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAvailableSslPredefinedPolicies", resp, "Failure sending request") + return + } + + result.agaspp, err = client.ListAvailableSslPredefinedPoliciesResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAvailableSslPredefinedPolicies", resp, "Failure responding to request") + } + + return +} + +// ListAvailableSslPredefinedPoliciesPreparer prepares the ListAvailableSslPredefinedPolicies request. +func (client ApplicationGatewaysClient) ListAvailableSslPredefinedPoliciesPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default/predefinedPolicies", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAvailableSslPredefinedPoliciesSender sends the ListAvailableSslPredefinedPolicies request. The method will close the +// http.Response Body if it receives an error. +func (client ApplicationGatewaysClient) ListAvailableSslPredefinedPoliciesSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAvailableSslPredefinedPoliciesResponder handles the response to the ListAvailableSslPredefinedPolicies request. The method always +// closes the http.Response Body. +func (client ApplicationGatewaysClient) ListAvailableSslPredefinedPoliciesResponder(resp *http.Response) (result ApplicationGatewayAvailableSslPredefinedPolicies, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listAvailableSslPredefinedPoliciesNextResults retrieves the next set of results, if any. +func (client ApplicationGatewaysClient) listAvailableSslPredefinedPoliciesNextResults(ctx context.Context, lastResults ApplicationGatewayAvailableSslPredefinedPolicies) (result ApplicationGatewayAvailableSslPredefinedPolicies, err error) { + req, err := lastResults.applicationGatewayAvailableSslPredefinedPoliciesPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "listAvailableSslPredefinedPoliciesNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListAvailableSslPredefinedPoliciesSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "listAvailableSslPredefinedPoliciesNextResults", resp, "Failure sending next results request") + } + result, err = client.ListAvailableSslPredefinedPoliciesResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "listAvailableSslPredefinedPoliciesNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListAvailableSslPredefinedPoliciesComplete enumerates all values, automatically crossing page boundaries as required. +func (client ApplicationGatewaysClient) ListAvailableSslPredefinedPoliciesComplete(ctx context.Context) (result ApplicationGatewayAvailableSslPredefinedPoliciesIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationGatewaysClient.ListAvailableSslPredefinedPolicies") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListAvailableSslPredefinedPolicies(ctx) + return +} + +// ListAvailableWafRuleSets lists all available web application firewall rule sets. +func (client ApplicationGatewaysClient) ListAvailableWafRuleSets(ctx context.Context) (result ApplicationGatewayAvailableWafRuleSetsResult, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationGatewaysClient.ListAvailableWafRuleSets") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ListAvailableWafRuleSetsPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAvailableWafRuleSets", nil, "Failure preparing request") + return + } + + resp, err := client.ListAvailableWafRuleSetsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAvailableWafRuleSets", resp, "Failure sending request") + return + } + + result, err = client.ListAvailableWafRuleSetsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAvailableWafRuleSets", resp, "Failure responding to request") + } + + return +} + +// ListAvailableWafRuleSetsPreparer prepares the ListAvailableWafRuleSets request. +func (client ApplicationGatewaysClient) ListAvailableWafRuleSetsPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableWafRuleSets", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAvailableWafRuleSetsSender sends the ListAvailableWafRuleSets request. The method will close the +// http.Response Body if it receives an error. +func (client ApplicationGatewaysClient) ListAvailableWafRuleSetsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAvailableWafRuleSetsResponder handles the response to the ListAvailableWafRuleSets request. The method always +// closes the http.Response Body. +func (client ApplicationGatewaysClient) ListAvailableWafRuleSetsResponder(resp *http.Response) (result ApplicationGatewayAvailableWafRuleSetsResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Start starts the specified application gateway. +// Parameters: +// resourceGroupName - the name of the resource group. +// applicationGatewayName - the name of the application gateway. +func (client ApplicationGatewaysClient) Start(ctx context.Context, resourceGroupName string, applicationGatewayName string) (result ApplicationGatewaysStartFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationGatewaysClient.Start") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.StartPreparer(ctx, resourceGroupName, applicationGatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Start", nil, "Failure preparing request") + return + } + + result, err = client.StartSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Start", result.Response(), "Failure sending request") + return + } + + return +} + +// StartPreparer prepares the Start request. +func (client ApplicationGatewaysClient) StartPreparer(ctx context.Context, resourceGroupName string, applicationGatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "applicationGatewayName": autorest.Encode("path", applicationGatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/start", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// StartSender sends the Start request. The method will close the +// http.Response Body if it receives an error. +func (client ApplicationGatewaysClient) StartSender(req *http.Request) (future ApplicationGatewaysStartFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// StartResponder handles the response to the Start request. The method always +// closes the http.Response Body. +func (client ApplicationGatewaysClient) StartResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByClosing()) + result.Response = resp + return +} + +// Stop stops the specified application gateway in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// applicationGatewayName - the name of the application gateway. +func (client ApplicationGatewaysClient) Stop(ctx context.Context, resourceGroupName string, applicationGatewayName string) (result ApplicationGatewaysStopFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationGatewaysClient.Stop") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.StopPreparer(ctx, resourceGroupName, applicationGatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Stop", nil, "Failure preparing request") + return + } + + result, err = client.StopSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Stop", result.Response(), "Failure sending request") + return + } + + return +} + +// StopPreparer prepares the Stop request. +func (client ApplicationGatewaysClient) StopPreparer(ctx context.Context, resourceGroupName string, applicationGatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "applicationGatewayName": autorest.Encode("path", applicationGatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/stop", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// StopSender sends the Stop request. The method will close the +// http.Response Body if it receives an error. +func (client ApplicationGatewaysClient) StopSender(req *http.Request) (future ApplicationGatewaysStopFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// StopResponder handles the response to the Stop request. The method always +// closes the http.Response Body. +func (client ApplicationGatewaysClient) StopResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByClosing()) + result.Response = resp + return +} + +// UpdateTags updates the specified application gateway tags. +// Parameters: +// resourceGroupName - the name of the resource group. +// applicationGatewayName - the name of the application gateway. +// parameters - parameters supplied to update application gateway tags. +func (client ApplicationGatewaysClient) UpdateTags(ctx context.Context, resourceGroupName string, applicationGatewayName string, parameters TagsObject) (result ApplicationGateway, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationGatewaysClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, applicationGatewayName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client ApplicationGatewaysClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, applicationGatewayName string, parameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "applicationGatewayName": autorest.Encode("path", applicationGatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client ApplicationGatewaysClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client ApplicationGatewaysClient) UpdateTagsResponder(resp *http.Response) (result ApplicationGateway, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/applicationsecuritygroups.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/applicationsecuritygroups.go new file mode 100644 index 0000000..0181f36 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/applicationsecuritygroups.go @@ -0,0 +1,574 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// ApplicationSecurityGroupsClient is the network Client +type ApplicationSecurityGroupsClient struct { + BaseClient +} + +// NewApplicationSecurityGroupsClient creates an instance of the ApplicationSecurityGroupsClient client. +func NewApplicationSecurityGroupsClient(subscriptionID string) ApplicationSecurityGroupsClient { + return NewApplicationSecurityGroupsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewApplicationSecurityGroupsClientWithBaseURI creates an instance of the ApplicationSecurityGroupsClient client +// using a custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign +// clouds, Azure stack). +func NewApplicationSecurityGroupsClientWithBaseURI(baseURI string, subscriptionID string) ApplicationSecurityGroupsClient { + return ApplicationSecurityGroupsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates an application security group. +// Parameters: +// resourceGroupName - the name of the resource group. +// applicationSecurityGroupName - the name of the application security group. +// parameters - parameters supplied to the create or update ApplicationSecurityGroup operation. +func (client ApplicationSecurityGroupsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, applicationSecurityGroupName string, parameters ApplicationSecurityGroup) (result ApplicationSecurityGroupsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationSecurityGroupsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, applicationSecurityGroupName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client ApplicationSecurityGroupsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, applicationSecurityGroupName string, parameters ApplicationSecurityGroup) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "applicationSecurityGroupName": autorest.Encode("path", applicationSecurityGroupName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client ApplicationSecurityGroupsClient) CreateOrUpdateSender(req *http.Request) (future ApplicationSecurityGroupsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client ApplicationSecurityGroupsClient) CreateOrUpdateResponder(resp *http.Response) (result ApplicationSecurityGroup, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified application security group. +// Parameters: +// resourceGroupName - the name of the resource group. +// applicationSecurityGroupName - the name of the application security group. +func (client ApplicationSecurityGroupsClient) Delete(ctx context.Context, resourceGroupName string, applicationSecurityGroupName string) (result ApplicationSecurityGroupsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationSecurityGroupsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, applicationSecurityGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client ApplicationSecurityGroupsClient) DeletePreparer(ctx context.Context, resourceGroupName string, applicationSecurityGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "applicationSecurityGroupName": autorest.Encode("path", applicationSecurityGroupName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client ApplicationSecurityGroupsClient) DeleteSender(req *http.Request) (future ApplicationSecurityGroupsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client ApplicationSecurityGroupsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets information about the specified application security group. +// Parameters: +// resourceGroupName - the name of the resource group. +// applicationSecurityGroupName - the name of the application security group. +func (client ApplicationSecurityGroupsClient) Get(ctx context.Context, resourceGroupName string, applicationSecurityGroupName string) (result ApplicationSecurityGroup, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationSecurityGroupsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, applicationSecurityGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client ApplicationSecurityGroupsClient) GetPreparer(ctx context.Context, resourceGroupName string, applicationSecurityGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "applicationSecurityGroupName": autorest.Encode("path", applicationSecurityGroupName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client ApplicationSecurityGroupsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client ApplicationSecurityGroupsClient) GetResponder(resp *http.Response) (result ApplicationSecurityGroup, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all the application security groups in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client ApplicationSecurityGroupsClient) List(ctx context.Context, resourceGroupName string) (result ApplicationSecurityGroupListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationSecurityGroupsClient.List") + defer func() { + sc := -1 + if result.asglr.Response.Response != nil { + sc = result.asglr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.asglr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "List", resp, "Failure sending request") + return + } + + result.asglr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client ApplicationSecurityGroupsClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client ApplicationSecurityGroupsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client ApplicationSecurityGroupsClient) ListResponder(resp *http.Response) (result ApplicationSecurityGroupListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client ApplicationSecurityGroupsClient) listNextResults(ctx context.Context, lastResults ApplicationSecurityGroupListResult) (result ApplicationSecurityGroupListResult, err error) { + req, err := lastResults.applicationSecurityGroupListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client ApplicationSecurityGroupsClient) ListComplete(ctx context.Context, resourceGroupName string) (result ApplicationSecurityGroupListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationSecurityGroupsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName) + return +} + +// ListAll gets all application security groups in a subscription. +func (client ApplicationSecurityGroupsClient) ListAll(ctx context.Context) (result ApplicationSecurityGroupListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationSecurityGroupsClient.ListAll") + defer func() { + sc := -1 + if result.asglr.Response.Response != nil { + sc = result.asglr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listAllNextResults + req, err := client.ListAllPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "ListAll", nil, "Failure preparing request") + return + } + + resp, err := client.ListAllSender(req) + if err != nil { + result.asglr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "ListAll", resp, "Failure sending request") + return + } + + result.asglr, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "ListAll", resp, "Failure responding to request") + } + + return +} + +// ListAllPreparer prepares the ListAll request. +func (client ApplicationSecurityGroupsClient) ListAllPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationSecurityGroups", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAllSender sends the ListAll request. The method will close the +// http.Response Body if it receives an error. +func (client ApplicationSecurityGroupsClient) ListAllSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAllResponder handles the response to the ListAll request. The method always +// closes the http.Response Body. +func (client ApplicationSecurityGroupsClient) ListAllResponder(resp *http.Response) (result ApplicationSecurityGroupListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listAllNextResults retrieves the next set of results, if any. +func (client ApplicationSecurityGroupsClient) listAllNextResults(ctx context.Context, lastResults ApplicationSecurityGroupListResult) (result ApplicationSecurityGroupListResult, err error) { + req, err := lastResults.applicationSecurityGroupListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "listAllNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListAllSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "listAllNextResults", resp, "Failure sending next results request") + } + result, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "listAllNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListAllComplete enumerates all values, automatically crossing page boundaries as required. +func (client ApplicationSecurityGroupsClient) ListAllComplete(ctx context.Context) (result ApplicationSecurityGroupListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationSecurityGroupsClient.ListAll") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListAll(ctx) + return +} + +// UpdateTags updates an application security group's tags. +// Parameters: +// resourceGroupName - the name of the resource group. +// applicationSecurityGroupName - the name of the application security group. +// parameters - parameters supplied to update application security group tags. +func (client ApplicationSecurityGroupsClient) UpdateTags(ctx context.Context, resourceGroupName string, applicationSecurityGroupName string, parameters TagsObject) (result ApplicationSecurityGroup, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationSecurityGroupsClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, applicationSecurityGroupName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client ApplicationSecurityGroupsClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, applicationSecurityGroupName string, parameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "applicationSecurityGroupName": autorest.Encode("path", applicationSecurityGroupName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client ApplicationSecurityGroupsClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client ApplicationSecurityGroupsClient) UpdateTagsResponder(resp *http.Response) (result ApplicationSecurityGroup, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/availabledelegations.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/availabledelegations.go new file mode 100644 index 0000000..d39d76b --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/availabledelegations.go @@ -0,0 +1,155 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// AvailableDelegationsClient is the network Client +type AvailableDelegationsClient struct { + BaseClient +} + +// NewAvailableDelegationsClient creates an instance of the AvailableDelegationsClient client. +func NewAvailableDelegationsClient(subscriptionID string) AvailableDelegationsClient { + return NewAvailableDelegationsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewAvailableDelegationsClientWithBaseURI creates an instance of the AvailableDelegationsClient client using a custom +// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure +// stack). +func NewAvailableDelegationsClientWithBaseURI(baseURI string, subscriptionID string) AvailableDelegationsClient { + return AvailableDelegationsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// List gets all of the available subnet delegations for this subscription in this region. +// Parameters: +// location - the location of the subnet. +func (client AvailableDelegationsClient) List(ctx context.Context, location string) (result AvailableDelegationsResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AvailableDelegationsClient.List") + defer func() { + sc := -1 + if result.adr.Response.Response != nil { + sc = result.adr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, location) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AvailableDelegationsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.adr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.AvailableDelegationsClient", "List", resp, "Failure sending request") + return + } + + result.adr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AvailableDelegationsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client AvailableDelegationsClient) ListPreparer(ctx context.Context, location string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "location": autorest.Encode("path", location), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/availableDelegations", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client AvailableDelegationsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client AvailableDelegationsClient) ListResponder(resp *http.Response) (result AvailableDelegationsResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client AvailableDelegationsClient) listNextResults(ctx context.Context, lastResults AvailableDelegationsResult) (result AvailableDelegationsResult, err error) { + req, err := lastResults.availableDelegationsResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.AvailableDelegationsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.AvailableDelegationsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AvailableDelegationsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client AvailableDelegationsClient) ListComplete(ctx context.Context, location string) (result AvailableDelegationsResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AvailableDelegationsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, location) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/availableendpointservices.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/availableendpointservices.go new file mode 100644 index 0000000..0d812bf --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/availableendpointservices.go @@ -0,0 +1,155 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// AvailableEndpointServicesClient is the network Client +type AvailableEndpointServicesClient struct { + BaseClient +} + +// NewAvailableEndpointServicesClient creates an instance of the AvailableEndpointServicesClient client. +func NewAvailableEndpointServicesClient(subscriptionID string) AvailableEndpointServicesClient { + return NewAvailableEndpointServicesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewAvailableEndpointServicesClientWithBaseURI creates an instance of the AvailableEndpointServicesClient client +// using a custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign +// clouds, Azure stack). +func NewAvailableEndpointServicesClientWithBaseURI(baseURI string, subscriptionID string) AvailableEndpointServicesClient { + return AvailableEndpointServicesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// List list what values of endpoint services are available for use. +// Parameters: +// location - the location to check available endpoint services. +func (client AvailableEndpointServicesClient) List(ctx context.Context, location string) (result EndpointServicesListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AvailableEndpointServicesClient.List") + defer func() { + sc := -1 + if result.eslr.Response.Response != nil { + sc = result.eslr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, location) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AvailableEndpointServicesClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.eslr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.AvailableEndpointServicesClient", "List", resp, "Failure sending request") + return + } + + result.eslr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AvailableEndpointServicesClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client AvailableEndpointServicesClient) ListPreparer(ctx context.Context, location string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "location": autorest.Encode("path", location), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/virtualNetworkAvailableEndpointServices", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client AvailableEndpointServicesClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client AvailableEndpointServicesClient) ListResponder(resp *http.Response) (result EndpointServicesListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client AvailableEndpointServicesClient) listNextResults(ctx context.Context, lastResults EndpointServicesListResult) (result EndpointServicesListResult, err error) { + req, err := lastResults.endpointServicesListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.AvailableEndpointServicesClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.AvailableEndpointServicesClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AvailableEndpointServicesClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client AvailableEndpointServicesClient) ListComplete(ctx context.Context, location string) (result EndpointServicesListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AvailableEndpointServicesClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, location) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/availableprivateendpointtypes.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/availableprivateendpointtypes.go new file mode 100644 index 0000000..b8f1b5e --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/availableprivateendpointtypes.go @@ -0,0 +1,270 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// AvailablePrivateEndpointTypesClient is the network Client +type AvailablePrivateEndpointTypesClient struct { + BaseClient +} + +// NewAvailablePrivateEndpointTypesClient creates an instance of the AvailablePrivateEndpointTypesClient client. +func NewAvailablePrivateEndpointTypesClient(subscriptionID string) AvailablePrivateEndpointTypesClient { + return NewAvailablePrivateEndpointTypesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewAvailablePrivateEndpointTypesClientWithBaseURI creates an instance of the AvailablePrivateEndpointTypesClient +// client using a custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI +// (sovereign clouds, Azure stack). +func NewAvailablePrivateEndpointTypesClientWithBaseURI(baseURI string, subscriptionID string) AvailablePrivateEndpointTypesClient { + return AvailablePrivateEndpointTypesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// List returns all of the resource types that can be linked to a Private Endpoint in this subscription in this region. +// Parameters: +// location - the location of the domain name. +func (client AvailablePrivateEndpointTypesClient) List(ctx context.Context, location string) (result AvailablePrivateEndpointTypesResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AvailablePrivateEndpointTypesClient.List") + defer func() { + sc := -1 + if result.apetr.Response.Response != nil { + sc = result.apetr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, location) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AvailablePrivateEndpointTypesClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.apetr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.AvailablePrivateEndpointTypesClient", "List", resp, "Failure sending request") + return + } + + result.apetr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AvailablePrivateEndpointTypesClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client AvailablePrivateEndpointTypesClient) ListPreparer(ctx context.Context, location string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "location": autorest.Encode("path", location), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/availablePrivateEndpointTypes", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client AvailablePrivateEndpointTypesClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client AvailablePrivateEndpointTypesClient) ListResponder(resp *http.Response) (result AvailablePrivateEndpointTypesResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client AvailablePrivateEndpointTypesClient) listNextResults(ctx context.Context, lastResults AvailablePrivateEndpointTypesResult) (result AvailablePrivateEndpointTypesResult, err error) { + req, err := lastResults.availablePrivateEndpointTypesResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.AvailablePrivateEndpointTypesClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.AvailablePrivateEndpointTypesClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AvailablePrivateEndpointTypesClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client AvailablePrivateEndpointTypesClient) ListComplete(ctx context.Context, location string) (result AvailablePrivateEndpointTypesResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AvailablePrivateEndpointTypesClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, location) + return +} + +// ListByResourceGroup returns all of the resource types that can be linked to a Private Endpoint in this subscription +// in this region. +// Parameters: +// location - the location of the domain name. +// resourceGroupName - the name of the resource group. +func (client AvailablePrivateEndpointTypesClient) ListByResourceGroup(ctx context.Context, location string, resourceGroupName string) (result AvailablePrivateEndpointTypesResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AvailablePrivateEndpointTypesClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.apetr.Response.Response != nil { + sc = result.apetr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listByResourceGroupNextResults + req, err := client.ListByResourceGroupPreparer(ctx, location, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AvailablePrivateEndpointTypesClient", "ListByResourceGroup", nil, "Failure preparing request") + return + } + + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.apetr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.AvailablePrivateEndpointTypesClient", "ListByResourceGroup", resp, "Failure sending request") + return + } + + result.apetr, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AvailablePrivateEndpointTypesClient", "ListByResourceGroup", resp, "Failure responding to request") + } + + return +} + +// ListByResourceGroupPreparer prepares the ListByResourceGroup request. +func (client AvailablePrivateEndpointTypesClient) ListByResourceGroupPreparer(ctx context.Context, location string, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "location": autorest.Encode("path", location), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/locations/{location}/availablePrivateEndpointTypes", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the +// http.Response Body if it receives an error. +func (client AvailablePrivateEndpointTypesClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always +// closes the http.Response Body. +func (client AvailablePrivateEndpointTypesClient) ListByResourceGroupResponder(resp *http.Response) (result AvailablePrivateEndpointTypesResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listByResourceGroupNextResults retrieves the next set of results, if any. +func (client AvailablePrivateEndpointTypesClient) listByResourceGroupNextResults(ctx context.Context, lastResults AvailablePrivateEndpointTypesResult) (result AvailablePrivateEndpointTypesResult, err error) { + req, err := lastResults.availablePrivateEndpointTypesResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.AvailablePrivateEndpointTypesClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.AvailablePrivateEndpointTypesClient", "listByResourceGroupNextResults", resp, "Failure sending next results request") + } + result, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AvailablePrivateEndpointTypesClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. +func (client AvailablePrivateEndpointTypesClient) ListByResourceGroupComplete(ctx context.Context, location string, resourceGroupName string) (result AvailablePrivateEndpointTypesResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AvailablePrivateEndpointTypesClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListByResourceGroup(ctx, location, resourceGroupName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/availableresourcegroupdelegations.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/availableresourcegroupdelegations.go new file mode 100644 index 0000000..d811282 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/availableresourcegroupdelegations.go @@ -0,0 +1,158 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// AvailableResourceGroupDelegationsClient is the network Client +type AvailableResourceGroupDelegationsClient struct { + BaseClient +} + +// NewAvailableResourceGroupDelegationsClient creates an instance of the AvailableResourceGroupDelegationsClient +// client. +func NewAvailableResourceGroupDelegationsClient(subscriptionID string) AvailableResourceGroupDelegationsClient { + return NewAvailableResourceGroupDelegationsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewAvailableResourceGroupDelegationsClientWithBaseURI creates an instance of the +// AvailableResourceGroupDelegationsClient client using a custom endpoint. Use this when interacting with an Azure +// cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewAvailableResourceGroupDelegationsClientWithBaseURI(baseURI string, subscriptionID string) AvailableResourceGroupDelegationsClient { + return AvailableResourceGroupDelegationsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// List gets all of the available subnet delegations for this resource group in this region. +// Parameters: +// location - the location of the domain name. +// resourceGroupName - the name of the resource group. +func (client AvailableResourceGroupDelegationsClient) List(ctx context.Context, location string, resourceGroupName string) (result AvailableDelegationsResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AvailableResourceGroupDelegationsClient.List") + defer func() { + sc := -1 + if result.adr.Response.Response != nil { + sc = result.adr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, location, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AvailableResourceGroupDelegationsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.adr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.AvailableResourceGroupDelegationsClient", "List", resp, "Failure sending request") + return + } + + result.adr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AvailableResourceGroupDelegationsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client AvailableResourceGroupDelegationsClient) ListPreparer(ctx context.Context, location string, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "location": autorest.Encode("path", location), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/locations/{location}/availableDelegations", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client AvailableResourceGroupDelegationsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client AvailableResourceGroupDelegationsClient) ListResponder(resp *http.Response) (result AvailableDelegationsResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client AvailableResourceGroupDelegationsClient) listNextResults(ctx context.Context, lastResults AvailableDelegationsResult) (result AvailableDelegationsResult, err error) { + req, err := lastResults.availableDelegationsResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.AvailableResourceGroupDelegationsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.AvailableResourceGroupDelegationsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AvailableResourceGroupDelegationsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client AvailableResourceGroupDelegationsClient) ListComplete(ctx context.Context, location string, resourceGroupName string) (result AvailableDelegationsResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AvailableResourceGroupDelegationsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, location, resourceGroupName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/availableservicealiases.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/availableservicealiases.go new file mode 100644 index 0000000..a074db4 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/availableservicealiases.go @@ -0,0 +1,269 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// AvailableServiceAliasesClient is the network Client +type AvailableServiceAliasesClient struct { + BaseClient +} + +// NewAvailableServiceAliasesClient creates an instance of the AvailableServiceAliasesClient client. +func NewAvailableServiceAliasesClient(subscriptionID string) AvailableServiceAliasesClient { + return NewAvailableServiceAliasesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewAvailableServiceAliasesClientWithBaseURI creates an instance of the AvailableServiceAliasesClient client using a +// custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, +// Azure stack). +func NewAvailableServiceAliasesClientWithBaseURI(baseURI string, subscriptionID string) AvailableServiceAliasesClient { + return AvailableServiceAliasesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// List gets all available service aliases for this subscription in this region. +// Parameters: +// location - the location. +func (client AvailableServiceAliasesClient) List(ctx context.Context, location string) (result AvailableServiceAliasesResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AvailableServiceAliasesClient.List") + defer func() { + sc := -1 + if result.asar.Response.Response != nil { + sc = result.asar.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, location) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AvailableServiceAliasesClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.asar.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.AvailableServiceAliasesClient", "List", resp, "Failure sending request") + return + } + + result.asar, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AvailableServiceAliasesClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client AvailableServiceAliasesClient) ListPreparer(ctx context.Context, location string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "location": autorest.Encode("path", location), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/availableServiceAliases", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client AvailableServiceAliasesClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client AvailableServiceAliasesClient) ListResponder(resp *http.Response) (result AvailableServiceAliasesResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client AvailableServiceAliasesClient) listNextResults(ctx context.Context, lastResults AvailableServiceAliasesResult) (result AvailableServiceAliasesResult, err error) { + req, err := lastResults.availableServiceAliasesResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.AvailableServiceAliasesClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.AvailableServiceAliasesClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AvailableServiceAliasesClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client AvailableServiceAliasesClient) ListComplete(ctx context.Context, location string) (result AvailableServiceAliasesResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AvailableServiceAliasesClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, location) + return +} + +// ListByResourceGroup gets all available service aliases for this resource group in this region. +// Parameters: +// resourceGroupName - the name of the resource group. +// location - the location. +func (client AvailableServiceAliasesClient) ListByResourceGroup(ctx context.Context, resourceGroupName string, location string) (result AvailableServiceAliasesResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AvailableServiceAliasesClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.asar.Response.Response != nil { + sc = result.asar.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listByResourceGroupNextResults + req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName, location) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AvailableServiceAliasesClient", "ListByResourceGroup", nil, "Failure preparing request") + return + } + + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.asar.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.AvailableServiceAliasesClient", "ListByResourceGroup", resp, "Failure sending request") + return + } + + result.asar, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AvailableServiceAliasesClient", "ListByResourceGroup", resp, "Failure responding to request") + } + + return +} + +// ListByResourceGroupPreparer prepares the ListByResourceGroup request. +func (client AvailableServiceAliasesClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string, location string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "location": autorest.Encode("path", location), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/locations/{location}/availableServiceAliases", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the +// http.Response Body if it receives an error. +func (client AvailableServiceAliasesClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always +// closes the http.Response Body. +func (client AvailableServiceAliasesClient) ListByResourceGroupResponder(resp *http.Response) (result AvailableServiceAliasesResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listByResourceGroupNextResults retrieves the next set of results, if any. +func (client AvailableServiceAliasesClient) listByResourceGroupNextResults(ctx context.Context, lastResults AvailableServiceAliasesResult) (result AvailableServiceAliasesResult, err error) { + req, err := lastResults.availableServiceAliasesResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.AvailableServiceAliasesClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.AvailableServiceAliasesClient", "listByResourceGroupNextResults", resp, "Failure sending next results request") + } + result, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AvailableServiceAliasesClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. +func (client AvailableServiceAliasesClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string, location string) (result AvailableServiceAliasesResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AvailableServiceAliasesClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListByResourceGroup(ctx, resourceGroupName, location) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/azurefirewallfqdntags.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/azurefirewallfqdntags.go new file mode 100644 index 0000000..5dd4a8b --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/azurefirewallfqdntags.go @@ -0,0 +1,152 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// AzureFirewallFqdnTagsClient is the network Client +type AzureFirewallFqdnTagsClient struct { + BaseClient +} + +// NewAzureFirewallFqdnTagsClient creates an instance of the AzureFirewallFqdnTagsClient client. +func NewAzureFirewallFqdnTagsClient(subscriptionID string) AzureFirewallFqdnTagsClient { + return NewAzureFirewallFqdnTagsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewAzureFirewallFqdnTagsClientWithBaseURI creates an instance of the AzureFirewallFqdnTagsClient client using a +// custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, +// Azure stack). +func NewAzureFirewallFqdnTagsClientWithBaseURI(baseURI string, subscriptionID string) AzureFirewallFqdnTagsClient { + return AzureFirewallFqdnTagsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// ListAll gets all the Azure Firewall FQDN Tags in a subscription. +func (client AzureFirewallFqdnTagsClient) ListAll(ctx context.Context) (result AzureFirewallFqdnTagListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AzureFirewallFqdnTagsClient.ListAll") + defer func() { + sc := -1 + if result.afftlr.Response.Response != nil { + sc = result.afftlr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listAllNextResults + req, err := client.ListAllPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AzureFirewallFqdnTagsClient", "ListAll", nil, "Failure preparing request") + return + } + + resp, err := client.ListAllSender(req) + if err != nil { + result.afftlr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.AzureFirewallFqdnTagsClient", "ListAll", resp, "Failure sending request") + return + } + + result.afftlr, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AzureFirewallFqdnTagsClient", "ListAll", resp, "Failure responding to request") + } + + return +} + +// ListAllPreparer prepares the ListAll request. +func (client AzureFirewallFqdnTagsClient) ListAllPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/azureFirewallFqdnTags", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAllSender sends the ListAll request. The method will close the +// http.Response Body if it receives an error. +func (client AzureFirewallFqdnTagsClient) ListAllSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAllResponder handles the response to the ListAll request. The method always +// closes the http.Response Body. +func (client AzureFirewallFqdnTagsClient) ListAllResponder(resp *http.Response) (result AzureFirewallFqdnTagListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listAllNextResults retrieves the next set of results, if any. +func (client AzureFirewallFqdnTagsClient) listAllNextResults(ctx context.Context, lastResults AzureFirewallFqdnTagListResult) (result AzureFirewallFqdnTagListResult, err error) { + req, err := lastResults.azureFirewallFqdnTagListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.AzureFirewallFqdnTagsClient", "listAllNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListAllSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.AzureFirewallFqdnTagsClient", "listAllNextResults", resp, "Failure sending next results request") + } + result, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AzureFirewallFqdnTagsClient", "listAllNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListAllComplete enumerates all values, automatically crossing page boundaries as required. +func (client AzureFirewallFqdnTagsClient) ListAllComplete(ctx context.Context) (result AzureFirewallFqdnTagListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AzureFirewallFqdnTagsClient.ListAll") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListAll(ctx) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/azurefirewalls.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/azurefirewalls.go new file mode 100644 index 0000000..4503508 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/azurefirewalls.go @@ -0,0 +1,573 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// AzureFirewallsClient is the network Client +type AzureFirewallsClient struct { + BaseClient +} + +// NewAzureFirewallsClient creates an instance of the AzureFirewallsClient client. +func NewAzureFirewallsClient(subscriptionID string) AzureFirewallsClient { + return NewAzureFirewallsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewAzureFirewallsClientWithBaseURI creates an instance of the AzureFirewallsClient client using a custom endpoint. +// Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewAzureFirewallsClientWithBaseURI(baseURI string, subscriptionID string) AzureFirewallsClient { + return AzureFirewallsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates the specified Azure Firewall. +// Parameters: +// resourceGroupName - the name of the resource group. +// azureFirewallName - the name of the Azure Firewall. +// parameters - parameters supplied to the create or update Azure Firewall operation. +func (client AzureFirewallsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, azureFirewallName string, parameters AzureFirewall) (result AzureFirewallsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AzureFirewallsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, azureFirewallName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AzureFirewallsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AzureFirewallsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client AzureFirewallsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, azureFirewallName string, parameters AzureFirewall) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "azureFirewallName": autorest.Encode("path", azureFirewallName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client AzureFirewallsClient) CreateOrUpdateSender(req *http.Request) (future AzureFirewallsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client AzureFirewallsClient) CreateOrUpdateResponder(resp *http.Response) (result AzureFirewall, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified Azure Firewall. +// Parameters: +// resourceGroupName - the name of the resource group. +// azureFirewallName - the name of the Azure Firewall. +func (client AzureFirewallsClient) Delete(ctx context.Context, resourceGroupName string, azureFirewallName string) (result AzureFirewallsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AzureFirewallsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, azureFirewallName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AzureFirewallsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AzureFirewallsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client AzureFirewallsClient) DeletePreparer(ctx context.Context, resourceGroupName string, azureFirewallName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "azureFirewallName": autorest.Encode("path", azureFirewallName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client AzureFirewallsClient) DeleteSender(req *http.Request) (future AzureFirewallsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client AzureFirewallsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified Azure Firewall. +// Parameters: +// resourceGroupName - the name of the resource group. +// azureFirewallName - the name of the Azure Firewall. +func (client AzureFirewallsClient) Get(ctx context.Context, resourceGroupName string, azureFirewallName string) (result AzureFirewall, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AzureFirewallsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, azureFirewallName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AzureFirewallsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.AzureFirewallsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AzureFirewallsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client AzureFirewallsClient) GetPreparer(ctx context.Context, resourceGroupName string, azureFirewallName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "azureFirewallName": autorest.Encode("path", azureFirewallName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client AzureFirewallsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client AzureFirewallsClient) GetResponder(resp *http.Response) (result AzureFirewall, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List lists all Azure Firewalls in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client AzureFirewallsClient) List(ctx context.Context, resourceGroupName string) (result AzureFirewallListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AzureFirewallsClient.List") + defer func() { + sc := -1 + if result.aflr.Response.Response != nil { + sc = result.aflr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AzureFirewallsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.aflr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.AzureFirewallsClient", "List", resp, "Failure sending request") + return + } + + result.aflr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AzureFirewallsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client AzureFirewallsClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client AzureFirewallsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client AzureFirewallsClient) ListResponder(resp *http.Response) (result AzureFirewallListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client AzureFirewallsClient) listNextResults(ctx context.Context, lastResults AzureFirewallListResult) (result AzureFirewallListResult, err error) { + req, err := lastResults.azureFirewallListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.AzureFirewallsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.AzureFirewallsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AzureFirewallsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client AzureFirewallsClient) ListComplete(ctx context.Context, resourceGroupName string) (result AzureFirewallListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AzureFirewallsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName) + return +} + +// ListAll gets all the Azure Firewalls in a subscription. +func (client AzureFirewallsClient) ListAll(ctx context.Context) (result AzureFirewallListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AzureFirewallsClient.ListAll") + defer func() { + sc := -1 + if result.aflr.Response.Response != nil { + sc = result.aflr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listAllNextResults + req, err := client.ListAllPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AzureFirewallsClient", "ListAll", nil, "Failure preparing request") + return + } + + resp, err := client.ListAllSender(req) + if err != nil { + result.aflr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.AzureFirewallsClient", "ListAll", resp, "Failure sending request") + return + } + + result.aflr, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AzureFirewallsClient", "ListAll", resp, "Failure responding to request") + } + + return +} + +// ListAllPreparer prepares the ListAll request. +func (client AzureFirewallsClient) ListAllPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/azureFirewalls", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAllSender sends the ListAll request. The method will close the +// http.Response Body if it receives an error. +func (client AzureFirewallsClient) ListAllSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAllResponder handles the response to the ListAll request. The method always +// closes the http.Response Body. +func (client AzureFirewallsClient) ListAllResponder(resp *http.Response) (result AzureFirewallListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listAllNextResults retrieves the next set of results, if any. +func (client AzureFirewallsClient) listAllNextResults(ctx context.Context, lastResults AzureFirewallListResult) (result AzureFirewallListResult, err error) { + req, err := lastResults.azureFirewallListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.AzureFirewallsClient", "listAllNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListAllSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.AzureFirewallsClient", "listAllNextResults", resp, "Failure sending next results request") + } + result, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AzureFirewallsClient", "listAllNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListAllComplete enumerates all values, automatically crossing page boundaries as required. +func (client AzureFirewallsClient) ListAllComplete(ctx context.Context) (result AzureFirewallListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AzureFirewallsClient.ListAll") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListAll(ctx) + return +} + +// UpdateTags updates tags of an Azure Firewall resource. +// Parameters: +// resourceGroupName - the name of the resource group. +// azureFirewallName - the name of the Azure Firewall. +// parameters - parameters supplied to update azure firewall tags. +func (client AzureFirewallsClient) UpdateTags(ctx context.Context, resourceGroupName string, azureFirewallName string, parameters TagsObject) (result AzureFirewallsUpdateTagsFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AzureFirewallsClient.UpdateTags") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, azureFirewallName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AzureFirewallsClient", "UpdateTags", nil, "Failure preparing request") + return + } + + result, err = client.UpdateTagsSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AzureFirewallsClient", "UpdateTags", result.Response(), "Failure sending request") + return + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client AzureFirewallsClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, azureFirewallName string, parameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "azureFirewallName": autorest.Encode("path", azureFirewallName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/azureFirewalls/{azureFirewallName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client AzureFirewallsClient) UpdateTagsSender(req *http.Request) (future AzureFirewallsUpdateTagsFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client AzureFirewallsClient) UpdateTagsResponder(resp *http.Response) (result AzureFirewall, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/bastionhosts.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/bastionhosts.go new file mode 100644 index 0000000..7f4935c --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/bastionhosts.go @@ -0,0 +1,494 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// BastionHostsClient is the network Client +type BastionHostsClient struct { + BaseClient +} + +// NewBastionHostsClient creates an instance of the BastionHostsClient client. +func NewBastionHostsClient(subscriptionID string) BastionHostsClient { + return NewBastionHostsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewBastionHostsClientWithBaseURI creates an instance of the BastionHostsClient client using a custom endpoint. Use +// this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewBastionHostsClientWithBaseURI(baseURI string, subscriptionID string) BastionHostsClient { + return BastionHostsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates the specified Bastion Host. +// Parameters: +// resourceGroupName - the name of the resource group. +// bastionHostName - the name of the Bastion Host. +// parameters - parameters supplied to the create or update Bastion Host operation. +func (client BastionHostsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, bastionHostName string, parameters BastionHost) (result BastionHostsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BastionHostsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, bastionHostName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BastionHostsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BastionHostsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client BastionHostsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, bastionHostName string, parameters BastionHost) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "bastionHostName": autorest.Encode("path", bastionHostName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client BastionHostsClient) CreateOrUpdateSender(req *http.Request) (future BastionHostsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client BastionHostsClient) CreateOrUpdateResponder(resp *http.Response) (result BastionHost, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified Bastion Host. +// Parameters: +// resourceGroupName - the name of the resource group. +// bastionHostName - the name of the Bastion Host. +func (client BastionHostsClient) Delete(ctx context.Context, resourceGroupName string, bastionHostName string) (result BastionHostsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BastionHostsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, bastionHostName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BastionHostsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BastionHostsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client BastionHostsClient) DeletePreparer(ctx context.Context, resourceGroupName string, bastionHostName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "bastionHostName": autorest.Encode("path", bastionHostName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client BastionHostsClient) DeleteSender(req *http.Request) (future BastionHostsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client BastionHostsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified Bastion Host. +// Parameters: +// resourceGroupName - the name of the resource group. +// bastionHostName - the name of the Bastion Host. +func (client BastionHostsClient) Get(ctx context.Context, resourceGroupName string, bastionHostName string) (result BastionHost, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BastionHostsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, bastionHostName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BastionHostsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.BastionHostsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BastionHostsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client BastionHostsClient) GetPreparer(ctx context.Context, resourceGroupName string, bastionHostName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "bastionHostName": autorest.Encode("path", bastionHostName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client BastionHostsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client BastionHostsClient) GetResponder(resp *http.Response) (result BastionHost, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List lists all Bastion Hosts in a subscription. +func (client BastionHostsClient) List(ctx context.Context) (result BastionHostListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BastionHostsClient.List") + defer func() { + sc := -1 + if result.bhlr.Response.Response != nil { + sc = result.bhlr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BastionHostsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.bhlr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.BastionHostsClient", "List", resp, "Failure sending request") + return + } + + result.bhlr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BastionHostsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client BastionHostsClient) ListPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/bastionHosts", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client BastionHostsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client BastionHostsClient) ListResponder(resp *http.Response) (result BastionHostListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client BastionHostsClient) listNextResults(ctx context.Context, lastResults BastionHostListResult) (result BastionHostListResult, err error) { + req, err := lastResults.bastionHostListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.BastionHostsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.BastionHostsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BastionHostsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client BastionHostsClient) ListComplete(ctx context.Context) (result BastionHostListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BastionHostsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx) + return +} + +// ListByResourceGroup lists all Bastion Hosts in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client BastionHostsClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result BastionHostListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BastionHostsClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.bhlr.Response.Response != nil { + sc = result.bhlr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listByResourceGroupNextResults + req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BastionHostsClient", "ListByResourceGroup", nil, "Failure preparing request") + return + } + + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.bhlr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.BastionHostsClient", "ListByResourceGroup", resp, "Failure sending request") + return + } + + result.bhlr, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BastionHostsClient", "ListByResourceGroup", resp, "Failure responding to request") + } + + return +} + +// ListByResourceGroupPreparer prepares the ListByResourceGroup request. +func (client BastionHostsClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the +// http.Response Body if it receives an error. +func (client BastionHostsClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always +// closes the http.Response Body. +func (client BastionHostsClient) ListByResourceGroupResponder(resp *http.Response) (result BastionHostListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listByResourceGroupNextResults retrieves the next set of results, if any. +func (client BastionHostsClient) listByResourceGroupNextResults(ctx context.Context, lastResults BastionHostListResult) (result BastionHostListResult, err error) { + req, err := lastResults.bastionHostListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.BastionHostsClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.BastionHostsClient", "listByResourceGroupNextResults", resp, "Failure sending next results request") + } + result, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BastionHostsClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. +func (client BastionHostsClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result BastionHostListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BastionHostsClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListByResourceGroup(ctx, resourceGroupName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/bgpservicecommunities.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/bgpservicecommunities.go new file mode 100644 index 0000000..0f9cae0 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/bgpservicecommunities.go @@ -0,0 +1,152 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// BgpServiceCommunitiesClient is the network Client +type BgpServiceCommunitiesClient struct { + BaseClient +} + +// NewBgpServiceCommunitiesClient creates an instance of the BgpServiceCommunitiesClient client. +func NewBgpServiceCommunitiesClient(subscriptionID string) BgpServiceCommunitiesClient { + return NewBgpServiceCommunitiesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewBgpServiceCommunitiesClientWithBaseURI creates an instance of the BgpServiceCommunitiesClient client using a +// custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, +// Azure stack). +func NewBgpServiceCommunitiesClientWithBaseURI(baseURI string, subscriptionID string) BgpServiceCommunitiesClient { + return BgpServiceCommunitiesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// List gets all the available bgp service communities. +func (client BgpServiceCommunitiesClient) List(ctx context.Context) (result BgpServiceCommunityListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BgpServiceCommunitiesClient.List") + defer func() { + sc := -1 + if result.bsclr.Response.Response != nil { + sc = result.bsclr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BgpServiceCommunitiesClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.bsclr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.BgpServiceCommunitiesClient", "List", resp, "Failure sending request") + return + } + + result.bsclr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BgpServiceCommunitiesClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client BgpServiceCommunitiesClient) ListPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/bgpServiceCommunities", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client BgpServiceCommunitiesClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client BgpServiceCommunitiesClient) ListResponder(resp *http.Response) (result BgpServiceCommunityListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client BgpServiceCommunitiesClient) listNextResults(ctx context.Context, lastResults BgpServiceCommunityListResult) (result BgpServiceCommunityListResult, err error) { + req, err := lastResults.bgpServiceCommunityListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.BgpServiceCommunitiesClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.BgpServiceCommunitiesClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BgpServiceCommunitiesClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client BgpServiceCommunitiesClient) ListComplete(ctx context.Context) (result BgpServiceCommunityListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BgpServiceCommunitiesClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/client.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/client.go new file mode 100644 index 0000000..80d5784 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/client.go @@ -0,0 +1,838 @@ +// Package network implements the Azure ARM Network service API version . +// +// Network Client +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +const ( + // DefaultBaseURI is the default URI used for the service Network + DefaultBaseURI = "https://management.azure.com" +) + +// BaseClient is the base client for Network. +type BaseClient struct { + autorest.Client + BaseURI string + SubscriptionID string +} + +// New creates an instance of the BaseClient client. +func New(subscriptionID string) BaseClient { + return NewWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewWithBaseURI creates an instance of the BaseClient client using a custom endpoint. Use this when interacting with +// an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewWithBaseURI(baseURI string, subscriptionID string) BaseClient { + return BaseClient{ + Client: autorest.NewClientWithUserAgent(UserAgent()), + BaseURI: baseURI, + SubscriptionID: subscriptionID, + } +} + +// CheckDNSNameAvailability checks whether a domain name in the cloudapp.azure.com zone is available for use. +// Parameters: +// location - the location of the domain name. +// domainNameLabel - the domain name to be verified. It must conform to the following regular expression: +// ^[a-z][a-z0-9-]{1,61}[a-z0-9]$. +func (client BaseClient) CheckDNSNameAvailability(ctx context.Context, location string, domainNameLabel string) (result DNSNameAvailabilityResult, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BaseClient.CheckDNSNameAvailability") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CheckDNSNameAvailabilityPreparer(ctx, location, domainNameLabel) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BaseClient", "CheckDNSNameAvailability", nil, "Failure preparing request") + return + } + + resp, err := client.CheckDNSNameAvailabilitySender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.BaseClient", "CheckDNSNameAvailability", resp, "Failure sending request") + return + } + + result, err = client.CheckDNSNameAvailabilityResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BaseClient", "CheckDNSNameAvailability", resp, "Failure responding to request") + } + + return +} + +// CheckDNSNameAvailabilityPreparer prepares the CheckDNSNameAvailability request. +func (client BaseClient) CheckDNSNameAvailabilityPreparer(ctx context.Context, location string, domainNameLabel string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "location": autorest.Encode("path", location), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + "domainNameLabel": autorest.Encode("query", domainNameLabel), + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/CheckDnsNameAvailability", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CheckDNSNameAvailabilitySender sends the CheckDNSNameAvailability request. The method will close the +// http.Response Body if it receives an error. +func (client BaseClient) CheckDNSNameAvailabilitySender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// CheckDNSNameAvailabilityResponder handles the response to the CheckDNSNameAvailability request. The method always +// closes the http.Response Body. +func (client BaseClient) CheckDNSNameAvailabilityResponder(resp *http.Response) (result DNSNameAvailabilityResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// DeleteBastionShareableLink deletes the Bastion Shareable Links for all the VMs specified in the request. +// Parameters: +// resourceGroupName - the name of the resource group. +// bastionHostName - the name of the Bastion Host. +// bslRequest - post request for all the Bastion Shareable Link endpoints. +func (client BaseClient) DeleteBastionShareableLink(ctx context.Context, resourceGroupName string, bastionHostName string, bslRequest BastionShareableLinkListRequest) (result DeleteBastionShareableLinkFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BaseClient.DeleteBastionShareableLink") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeleteBastionShareableLinkPreparer(ctx, resourceGroupName, bastionHostName, bslRequest) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BaseClient", "DeleteBastionShareableLink", nil, "Failure preparing request") + return + } + + result, err = client.DeleteBastionShareableLinkSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BaseClient", "DeleteBastionShareableLink", result.Response(), "Failure sending request") + return + } + + return +} + +// DeleteBastionShareableLinkPreparer prepares the DeleteBastionShareableLink request. +func (client BaseClient) DeleteBastionShareableLinkPreparer(ctx context.Context, resourceGroupName string, bastionHostName string, bslRequest BastionShareableLinkListRequest) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "bastionHostName": autorest.Encode("path", bastionHostName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/deleteShareableLinks", pathParameters), + autorest.WithJSON(bslRequest), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteBastionShareableLinkSender sends the DeleteBastionShareableLink request. The method will close the +// http.Response Body if it receives an error. +func (client BaseClient) DeleteBastionShareableLinkSender(req *http.Request) (future DeleteBastionShareableLinkFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteBastionShareableLinkResponder handles the response to the DeleteBastionShareableLink request. The method always +// closes the http.Response Body. +func (client BaseClient) DeleteBastionShareableLinkResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByClosing()) + result.Response = resp + return +} + +// DisconnectActiveSessions returns the list of currently active sessions on the Bastion. +// Parameters: +// resourceGroupName - the name of the resource group. +// bastionHostName - the name of the Bastion Host. +// sessionIds - the list of sessionids to disconnect. +func (client BaseClient) DisconnectActiveSessions(ctx context.Context, resourceGroupName string, bastionHostName string, sessionIds SessionIds) (result BastionSessionDeleteResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BaseClient.DisconnectActiveSessions") + defer func() { + sc := -1 + if result.bsdr.Response.Response != nil { + sc = result.bsdr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.disconnectActiveSessionsNextResults + req, err := client.DisconnectActiveSessionsPreparer(ctx, resourceGroupName, bastionHostName, sessionIds) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BaseClient", "DisconnectActiveSessions", nil, "Failure preparing request") + return + } + + resp, err := client.DisconnectActiveSessionsSender(req) + if err != nil { + result.bsdr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.BaseClient", "DisconnectActiveSessions", resp, "Failure sending request") + return + } + + result.bsdr, err = client.DisconnectActiveSessionsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BaseClient", "DisconnectActiveSessions", resp, "Failure responding to request") + } + + return +} + +// DisconnectActiveSessionsPreparer prepares the DisconnectActiveSessions request. +func (client BaseClient) DisconnectActiveSessionsPreparer(ctx context.Context, resourceGroupName string, bastionHostName string, sessionIds SessionIds) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "bastionHostName": autorest.Encode("path", bastionHostName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/disconnectActiveSessions", pathParameters), + autorest.WithJSON(sessionIds), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DisconnectActiveSessionsSender sends the DisconnectActiveSessions request. The method will close the +// http.Response Body if it receives an error. +func (client BaseClient) DisconnectActiveSessionsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// DisconnectActiveSessionsResponder handles the response to the DisconnectActiveSessions request. The method always +// closes the http.Response Body. +func (client BaseClient) DisconnectActiveSessionsResponder(resp *http.Response) (result BastionSessionDeleteResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// disconnectActiveSessionsNextResults retrieves the next set of results, if any. +func (client BaseClient) disconnectActiveSessionsNextResults(ctx context.Context, lastResults BastionSessionDeleteResult) (result BastionSessionDeleteResult, err error) { + req, err := lastResults.bastionSessionDeleteResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.BaseClient", "disconnectActiveSessionsNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.DisconnectActiveSessionsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.BaseClient", "disconnectActiveSessionsNextResults", resp, "Failure sending next results request") + } + result, err = client.DisconnectActiveSessionsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BaseClient", "disconnectActiveSessionsNextResults", resp, "Failure responding to next results request") + } + return +} + +// DisconnectActiveSessionsComplete enumerates all values, automatically crossing page boundaries as required. +func (client BaseClient) DisconnectActiveSessionsComplete(ctx context.Context, resourceGroupName string, bastionHostName string, sessionIds SessionIds) (result BastionSessionDeleteResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BaseClient.DisconnectActiveSessions") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.DisconnectActiveSessions(ctx, resourceGroupName, bastionHostName, sessionIds) + return +} + +// Generatevirtualwanvpnserverconfigurationvpnprofile generates a unique VPN profile for P2S clients for VirtualWan and +// associated VpnServerConfiguration combination in the specified resource group. +// Parameters: +// resourceGroupName - the resource group name. +// virtualWANName - the name of the VirtualWAN whose associated VpnServerConfigurations is needed. +// vpnClientParams - parameters supplied to the generate VirtualWan VPN profile generation operation. +func (client BaseClient) Generatevirtualwanvpnserverconfigurationvpnprofile(ctx context.Context, resourceGroupName string, virtualWANName string, vpnClientParams VirtualWanVpnProfileParameters) (result GeneratevirtualwanvpnserverconfigurationvpnprofileFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BaseClient.Generatevirtualwanvpnserverconfigurationvpnprofile") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GeneratevirtualwanvpnserverconfigurationvpnprofilePreparer(ctx, resourceGroupName, virtualWANName, vpnClientParams) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BaseClient", "Generatevirtualwanvpnserverconfigurationvpnprofile", nil, "Failure preparing request") + return + } + + result, err = client.GeneratevirtualwanvpnserverconfigurationvpnprofileSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BaseClient", "Generatevirtualwanvpnserverconfigurationvpnprofile", result.Response(), "Failure sending request") + return + } + + return +} + +// GeneratevirtualwanvpnserverconfigurationvpnprofilePreparer prepares the Generatevirtualwanvpnserverconfigurationvpnprofile request. +func (client BaseClient) GeneratevirtualwanvpnserverconfigurationvpnprofilePreparer(ctx context.Context, resourceGroupName string, virtualWANName string, vpnClientParams VirtualWanVpnProfileParameters) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualWANName": autorest.Encode("path", virtualWANName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{virtualWANName}/GenerateVpnProfile", pathParameters), + autorest.WithJSON(vpnClientParams), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GeneratevirtualwanvpnserverconfigurationvpnprofileSender sends the Generatevirtualwanvpnserverconfigurationvpnprofile request. The method will close the +// http.Response Body if it receives an error. +func (client BaseClient) GeneratevirtualwanvpnserverconfigurationvpnprofileSender(req *http.Request) (future GeneratevirtualwanvpnserverconfigurationvpnprofileFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// GeneratevirtualwanvpnserverconfigurationvpnprofileResponder handles the response to the Generatevirtualwanvpnserverconfigurationvpnprofile request. The method always +// closes the http.Response Body. +func (client BaseClient) GeneratevirtualwanvpnserverconfigurationvpnprofileResponder(resp *http.Response) (result VpnProfileResponse, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetActiveSessions returns the list of currently active sessions on the Bastion. +// Parameters: +// resourceGroupName - the name of the resource group. +// bastionHostName - the name of the Bastion Host. +func (client BaseClient) GetActiveSessions(ctx context.Context, resourceGroupName string, bastionHostName string) (result GetActiveSessionsFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BaseClient.GetActiveSessions") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetActiveSessionsPreparer(ctx, resourceGroupName, bastionHostName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BaseClient", "GetActiveSessions", nil, "Failure preparing request") + return + } + + result, err = client.GetActiveSessionsSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BaseClient", "GetActiveSessions", result.Response(), "Failure sending request") + return + } + + return +} + +// GetActiveSessionsPreparer prepares the GetActiveSessions request. +func (client BaseClient) GetActiveSessionsPreparer(ctx context.Context, resourceGroupName string, bastionHostName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "bastionHostName": autorest.Encode("path", bastionHostName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/getActiveSessions", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetActiveSessionsSender sends the GetActiveSessions request. The method will close the +// http.Response Body if it receives an error. +func (client BaseClient) GetActiveSessionsSender(req *http.Request) (future GetActiveSessionsFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// GetActiveSessionsResponder handles the response to the GetActiveSessions request. The method always +// closes the http.Response Body. +func (client BaseClient) GetActiveSessionsResponder(resp *http.Response) (result BastionActiveSessionListResultPage, err error) { + result.baslr, err = client.getActiveSessionsResponder(resp) + result.fn = client.getActiveSessionsNextResults + return +} + +func (client BaseClient) getActiveSessionsResponder(resp *http.Response) (result BastionActiveSessionListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// getActiveSessionsNextResults retrieves the next set of results, if any. +func (client BaseClient) getActiveSessionsNextResults(ctx context.Context, lastResults BastionActiveSessionListResult) (result BastionActiveSessionListResult, err error) { + req, err := lastResults.bastionActiveSessionListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.BaseClient", "getActiveSessionsNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + var resp *http.Response + resp, err = client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.BaseClient", "getActiveSessionsNextResults", resp, "Failure sending next results request") + } + return client.getActiveSessionsResponder(resp) +} + +// GetActiveSessionsComplete enumerates all values, automatically crossing page boundaries as required. +func (client BaseClient) GetActiveSessionsComplete(ctx context.Context, resourceGroupName string, bastionHostName string) (result GetActiveSessionsAllFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BaseClient.GetActiveSessions") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + var future GetActiveSessionsFuture + future, err = client.GetActiveSessions(ctx, resourceGroupName, bastionHostName) + result.Future = future.Future + return +} + +// GetBastionShareableLink return the Bastion Shareable Links for all the VMs specified in the request. +// Parameters: +// resourceGroupName - the name of the resource group. +// bastionHostName - the name of the Bastion Host. +// bslRequest - post request for all the Bastion Shareable Link endpoints. +func (client BaseClient) GetBastionShareableLink(ctx context.Context, resourceGroupName string, bastionHostName string, bslRequest BastionShareableLinkListRequest) (result BastionShareableLinkListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BaseClient.GetBastionShareableLink") + defer func() { + sc := -1 + if result.bsllr.Response.Response != nil { + sc = result.bsllr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.getBastionShareableLinkNextResults + req, err := client.GetBastionShareableLinkPreparer(ctx, resourceGroupName, bastionHostName, bslRequest) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BaseClient", "GetBastionShareableLink", nil, "Failure preparing request") + return + } + + resp, err := client.GetBastionShareableLinkSender(req) + if err != nil { + result.bsllr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.BaseClient", "GetBastionShareableLink", resp, "Failure sending request") + return + } + + result.bsllr, err = client.GetBastionShareableLinkResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BaseClient", "GetBastionShareableLink", resp, "Failure responding to request") + } + + return +} + +// GetBastionShareableLinkPreparer prepares the GetBastionShareableLink request. +func (client BaseClient) GetBastionShareableLinkPreparer(ctx context.Context, resourceGroupName string, bastionHostName string, bslRequest BastionShareableLinkListRequest) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "bastionHostName": autorest.Encode("path", bastionHostName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/getShareableLinks", pathParameters), + autorest.WithJSON(bslRequest), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetBastionShareableLinkSender sends the GetBastionShareableLink request. The method will close the +// http.Response Body if it receives an error. +func (client BaseClient) GetBastionShareableLinkSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetBastionShareableLinkResponder handles the response to the GetBastionShareableLink request. The method always +// closes the http.Response Body. +func (client BaseClient) GetBastionShareableLinkResponder(resp *http.Response) (result BastionShareableLinkListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// getBastionShareableLinkNextResults retrieves the next set of results, if any. +func (client BaseClient) getBastionShareableLinkNextResults(ctx context.Context, lastResults BastionShareableLinkListResult) (result BastionShareableLinkListResult, err error) { + req, err := lastResults.bastionShareableLinkListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.BaseClient", "getBastionShareableLinkNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.GetBastionShareableLinkSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.BaseClient", "getBastionShareableLinkNextResults", resp, "Failure sending next results request") + } + result, err = client.GetBastionShareableLinkResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BaseClient", "getBastionShareableLinkNextResults", resp, "Failure responding to next results request") + } + return +} + +// GetBastionShareableLinkComplete enumerates all values, automatically crossing page boundaries as required. +func (client BaseClient) GetBastionShareableLinkComplete(ctx context.Context, resourceGroupName string, bastionHostName string, bslRequest BastionShareableLinkListRequest) (result BastionShareableLinkListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BaseClient.GetBastionShareableLink") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.GetBastionShareableLink(ctx, resourceGroupName, bastionHostName, bslRequest) + return +} + +// PutBastionShareableLink creates a Bastion Shareable Links for all the VMs specified in the request. +// Parameters: +// resourceGroupName - the name of the resource group. +// bastionHostName - the name of the Bastion Host. +// bslRequest - post request for all the Bastion Shareable Link endpoints. +func (client BaseClient) PutBastionShareableLink(ctx context.Context, resourceGroupName string, bastionHostName string, bslRequest BastionShareableLinkListRequest) (result PutBastionShareableLinkFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BaseClient.PutBastionShareableLink") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.PutBastionShareableLinkPreparer(ctx, resourceGroupName, bastionHostName, bslRequest) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BaseClient", "PutBastionShareableLink", nil, "Failure preparing request") + return + } + + result, err = client.PutBastionShareableLinkSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BaseClient", "PutBastionShareableLink", result.Response(), "Failure sending request") + return + } + + return +} + +// PutBastionShareableLinkPreparer prepares the PutBastionShareableLink request. +func (client BaseClient) PutBastionShareableLinkPreparer(ctx context.Context, resourceGroupName string, bastionHostName string, bslRequest BastionShareableLinkListRequest) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "bastionHostName": autorest.Encode("path", bastionHostName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}/createShareableLinks", pathParameters), + autorest.WithJSON(bslRequest), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// PutBastionShareableLinkSender sends the PutBastionShareableLink request. The method will close the +// http.Response Body if it receives an error. +func (client BaseClient) PutBastionShareableLinkSender(req *http.Request) (future PutBastionShareableLinkFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// PutBastionShareableLinkResponder handles the response to the PutBastionShareableLink request. The method always +// closes the http.Response Body. +func (client BaseClient) PutBastionShareableLinkResponder(resp *http.Response) (result BastionShareableLinkListResultPage, err error) { + result.bsllr, err = client.putBastionShareableLinkResponder(resp) + result.fn = client.putBastionShareableLinkNextResults + return +} + +func (client BaseClient) putBastionShareableLinkResponder(resp *http.Response) (result BastionShareableLinkListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// putBastionShareableLinkNextResults retrieves the next set of results, if any. +func (client BaseClient) putBastionShareableLinkNextResults(ctx context.Context, lastResults BastionShareableLinkListResult) (result BastionShareableLinkListResult, err error) { + req, err := lastResults.bastionShareableLinkListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.BaseClient", "putBastionShareableLinkNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + var resp *http.Response + resp, err = client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.BaseClient", "putBastionShareableLinkNextResults", resp, "Failure sending next results request") + } + return client.putBastionShareableLinkResponder(resp) +} + +// PutBastionShareableLinkComplete enumerates all values, automatically crossing page boundaries as required. +func (client BaseClient) PutBastionShareableLinkComplete(ctx context.Context, resourceGroupName string, bastionHostName string, bslRequest BastionShareableLinkListRequest) (result PutBastionShareableLinkAllFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BaseClient.PutBastionShareableLink") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + var future PutBastionShareableLinkFuture + future, err = client.PutBastionShareableLink(ctx, resourceGroupName, bastionHostName, bslRequest) + result.Future = future.Future + return +} + +// SupportedSecurityProviders gives the supported security providers for the virtual wan. +// Parameters: +// resourceGroupName - the resource group name. +// virtualWANName - the name of the VirtualWAN for which supported security providers are needed. +func (client BaseClient) SupportedSecurityProviders(ctx context.Context, resourceGroupName string, virtualWANName string) (result VirtualWanSecurityProviders, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BaseClient.SupportedSecurityProviders") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.SupportedSecurityProvidersPreparer(ctx, resourceGroupName, virtualWANName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BaseClient", "SupportedSecurityProviders", nil, "Failure preparing request") + return + } + + resp, err := client.SupportedSecurityProvidersSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.BaseClient", "SupportedSecurityProviders", resp, "Failure sending request") + return + } + + result, err = client.SupportedSecurityProvidersResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BaseClient", "SupportedSecurityProviders", resp, "Failure responding to request") + } + + return +} + +// SupportedSecurityProvidersPreparer prepares the SupportedSecurityProviders request. +func (client BaseClient) SupportedSecurityProvidersPreparer(ctx context.Context, resourceGroupName string, virtualWANName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualWANName": autorest.Encode("path", virtualWANName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{virtualWANName}/supportedSecurityProviders", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// SupportedSecurityProvidersSender sends the SupportedSecurityProviders request. The method will close the +// http.Response Body if it receives an error. +func (client BaseClient) SupportedSecurityProvidersSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// SupportedSecurityProvidersResponder handles the response to the SupportedSecurityProviders request. The method always +// closes the http.Response Body. +func (client BaseClient) SupportedSecurityProvidersResponder(resp *http.Response) (result VirtualWanSecurityProviders, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/connectionmonitors.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/connectionmonitors.go new file mode 100644 index 0000000..86b7360 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/connectionmonitors.go @@ -0,0 +1,679 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// ConnectionMonitorsClient is the network Client +type ConnectionMonitorsClient struct { + BaseClient +} + +// NewConnectionMonitorsClient creates an instance of the ConnectionMonitorsClient client. +func NewConnectionMonitorsClient(subscriptionID string) ConnectionMonitorsClient { + return NewConnectionMonitorsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewConnectionMonitorsClientWithBaseURI creates an instance of the ConnectionMonitorsClient client using a custom +// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure +// stack). +func NewConnectionMonitorsClientWithBaseURI(baseURI string, subscriptionID string) ConnectionMonitorsClient { + return ConnectionMonitorsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate create or update a connection monitor. +// Parameters: +// resourceGroupName - the name of the resource group containing Network Watcher. +// networkWatcherName - the name of the Network Watcher resource. +// connectionMonitorName - the name of the connection monitor. +// parameters - parameters that define the operation to create a connection monitor. +func (client ConnectionMonitorsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, networkWatcherName string, connectionMonitorName string, parameters ConnectionMonitor) (result ConnectionMonitorsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ConnectionMonitorsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.ConnectionMonitorParameters", Name: validation.Null, Rule: true, + Chain: []validation.Constraint{{Target: "parameters.ConnectionMonitorParameters.Source", Name: validation.Null, Rule: true, + Chain: []validation.Constraint{{Target: "parameters.ConnectionMonitorParameters.Source.ResourceID", Name: validation.Null, Rule: true, Chain: nil}}}, + {Target: "parameters.ConnectionMonitorParameters.Destination", Name: validation.Null, Rule: true, Chain: nil}, + }}}}}); err != nil { + return result, validation.NewError("network.ConnectionMonitorsClient", "CreateOrUpdate", err.Error()) + } + + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, networkWatcherName, connectionMonitorName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client ConnectionMonitorsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, connectionMonitorName string, parameters ConnectionMonitor) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "connectionMonitorName": autorest.Encode("path", connectionMonitorName), + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-06-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client ConnectionMonitorsClient) CreateOrUpdateSender(req *http.Request) (future ConnectionMonitorsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client ConnectionMonitorsClient) CreateOrUpdateResponder(resp *http.Response) (result ConnectionMonitorResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified connection monitor. +// Parameters: +// resourceGroupName - the name of the resource group containing Network Watcher. +// networkWatcherName - the name of the Network Watcher resource. +// connectionMonitorName - the name of the connection monitor. +func (client ConnectionMonitorsClient) Delete(ctx context.Context, resourceGroupName string, networkWatcherName string, connectionMonitorName string) (result ConnectionMonitorsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ConnectionMonitorsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, networkWatcherName, connectionMonitorName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client ConnectionMonitorsClient) DeletePreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, connectionMonitorName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "connectionMonitorName": autorest.Encode("path", connectionMonitorName), + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-06-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client ConnectionMonitorsClient) DeleteSender(req *http.Request) (future ConnectionMonitorsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client ConnectionMonitorsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets a connection monitor by name. +// Parameters: +// resourceGroupName - the name of the resource group containing Network Watcher. +// networkWatcherName - the name of the Network Watcher resource. +// connectionMonitorName - the name of the connection monitor. +func (client ConnectionMonitorsClient) Get(ctx context.Context, resourceGroupName string, networkWatcherName string, connectionMonitorName string) (result ConnectionMonitorResult, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ConnectionMonitorsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, networkWatcherName, connectionMonitorName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client ConnectionMonitorsClient) GetPreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, connectionMonitorName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "connectionMonitorName": autorest.Encode("path", connectionMonitorName), + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-06-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client ConnectionMonitorsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client ConnectionMonitorsClient) GetResponder(resp *http.Response) (result ConnectionMonitorResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List lists all connection monitors for the specified Network Watcher. +// Parameters: +// resourceGroupName - the name of the resource group containing Network Watcher. +// networkWatcherName - the name of the Network Watcher resource. +func (client ConnectionMonitorsClient) List(ctx context.Context, resourceGroupName string, networkWatcherName string) (result ConnectionMonitorListResult, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ConnectionMonitorsClient.List") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ListPreparer(ctx, resourceGroupName, networkWatcherName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsClient", "List", resp, "Failure sending request") + return + } + + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client ConnectionMonitorsClient) ListPreparer(ctx context.Context, resourceGroupName string, networkWatcherName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-06-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client ConnectionMonitorsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client ConnectionMonitorsClient) ListResponder(resp *http.Response) (result ConnectionMonitorListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Query query a snapshot of the most recent connection states. +// Parameters: +// resourceGroupName - the name of the resource group containing Network Watcher. +// networkWatcherName - the name of the Network Watcher resource. +// connectionMonitorName - the name given to the connection monitor. +func (client ConnectionMonitorsClient) Query(ctx context.Context, resourceGroupName string, networkWatcherName string, connectionMonitorName string) (result ConnectionMonitorsQueryFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ConnectionMonitorsClient.Query") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.QueryPreparer(ctx, resourceGroupName, networkWatcherName, connectionMonitorName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsClient", "Query", nil, "Failure preparing request") + return + } + + result, err = client.QuerySender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsClient", "Query", result.Response(), "Failure sending request") + return + } + + return +} + +// QueryPreparer prepares the Query request. +func (client ConnectionMonitorsClient) QueryPreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, connectionMonitorName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "connectionMonitorName": autorest.Encode("path", connectionMonitorName), + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-06-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}/query", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// QuerySender sends the Query request. The method will close the +// http.Response Body if it receives an error. +func (client ConnectionMonitorsClient) QuerySender(req *http.Request) (future ConnectionMonitorsQueryFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// QueryResponder handles the response to the Query request. The method always +// closes the http.Response Body. +func (client ConnectionMonitorsClient) QueryResponder(resp *http.Response) (result ConnectionMonitorQueryResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Start starts the specified connection monitor. +// Parameters: +// resourceGroupName - the name of the resource group containing Network Watcher. +// networkWatcherName - the name of the Network Watcher resource. +// connectionMonitorName - the name of the connection monitor. +func (client ConnectionMonitorsClient) Start(ctx context.Context, resourceGroupName string, networkWatcherName string, connectionMonitorName string) (result ConnectionMonitorsStartFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ConnectionMonitorsClient.Start") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.StartPreparer(ctx, resourceGroupName, networkWatcherName, connectionMonitorName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsClient", "Start", nil, "Failure preparing request") + return + } + + result, err = client.StartSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsClient", "Start", result.Response(), "Failure sending request") + return + } + + return +} + +// StartPreparer prepares the Start request. +func (client ConnectionMonitorsClient) StartPreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, connectionMonitorName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "connectionMonitorName": autorest.Encode("path", connectionMonitorName), + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-06-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}/start", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// StartSender sends the Start request. The method will close the +// http.Response Body if it receives an error. +func (client ConnectionMonitorsClient) StartSender(req *http.Request) (future ConnectionMonitorsStartFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// StartResponder handles the response to the Start request. The method always +// closes the http.Response Body. +func (client ConnectionMonitorsClient) StartResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByClosing()) + result.Response = resp + return +} + +// Stop stops the specified connection monitor. +// Parameters: +// resourceGroupName - the name of the resource group containing Network Watcher. +// networkWatcherName - the name of the Network Watcher resource. +// connectionMonitorName - the name of the connection monitor. +func (client ConnectionMonitorsClient) Stop(ctx context.Context, resourceGroupName string, networkWatcherName string, connectionMonitorName string) (result ConnectionMonitorsStopFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ConnectionMonitorsClient.Stop") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.StopPreparer(ctx, resourceGroupName, networkWatcherName, connectionMonitorName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsClient", "Stop", nil, "Failure preparing request") + return + } + + result, err = client.StopSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsClient", "Stop", result.Response(), "Failure sending request") + return + } + + return +} + +// StopPreparer prepares the Stop request. +func (client ConnectionMonitorsClient) StopPreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, connectionMonitorName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "connectionMonitorName": autorest.Encode("path", connectionMonitorName), + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-06-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}/stop", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// StopSender sends the Stop request. The method will close the +// http.Response Body if it receives an error. +func (client ConnectionMonitorsClient) StopSender(req *http.Request) (future ConnectionMonitorsStopFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// StopResponder handles the response to the Stop request. The method always +// closes the http.Response Body. +func (client ConnectionMonitorsClient) StopResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByClosing()) + result.Response = resp + return +} + +// UpdateTags update tags of the specified connection monitor. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkWatcherName - the name of the network watcher. +// connectionMonitorName - the name of the connection monitor. +// parameters - parameters supplied to update connection monitor tags. +func (client ConnectionMonitorsClient) UpdateTags(ctx context.Context, resourceGroupName string, networkWatcherName string, connectionMonitorName string, parameters TagsObject) (result ConnectionMonitorResult, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ConnectionMonitorsClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, networkWatcherName, connectionMonitorName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client ConnectionMonitorsClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, connectionMonitorName string, parameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "connectionMonitorName": autorest.Encode("path", connectionMonitorName), + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-06-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client ConnectionMonitorsClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client ConnectionMonitorsClient) UpdateTagsResponder(resp *http.Response) (result ConnectionMonitorResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/ddoscustompolicies.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/ddoscustompolicies.go new file mode 100644 index 0000000..ac4b8ea --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/ddoscustompolicies.go @@ -0,0 +1,353 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// DdosCustomPoliciesClient is the network Client +type DdosCustomPoliciesClient struct { + BaseClient +} + +// NewDdosCustomPoliciesClient creates an instance of the DdosCustomPoliciesClient client. +func NewDdosCustomPoliciesClient(subscriptionID string) DdosCustomPoliciesClient { + return NewDdosCustomPoliciesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewDdosCustomPoliciesClientWithBaseURI creates an instance of the DdosCustomPoliciesClient client using a custom +// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure +// stack). +func NewDdosCustomPoliciesClientWithBaseURI(baseURI string, subscriptionID string) DdosCustomPoliciesClient { + return DdosCustomPoliciesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a DDoS custom policy. +// Parameters: +// resourceGroupName - the name of the resource group. +// ddosCustomPolicyName - the name of the DDoS custom policy. +// parameters - parameters supplied to the create or update operation. +func (client DdosCustomPoliciesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, ddosCustomPolicyName string, parameters DdosCustomPolicy) (result DdosCustomPoliciesCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DdosCustomPoliciesClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, ddosCustomPolicyName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosCustomPoliciesClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosCustomPoliciesClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client DdosCustomPoliciesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, ddosCustomPolicyName string, parameters DdosCustomPolicy) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "ddosCustomPolicyName": autorest.Encode("path", ddosCustomPolicyName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosCustomPolicies/{ddosCustomPolicyName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client DdosCustomPoliciesClient) CreateOrUpdateSender(req *http.Request) (future DdosCustomPoliciesCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client DdosCustomPoliciesClient) CreateOrUpdateResponder(resp *http.Response) (result DdosCustomPolicy, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified DDoS custom policy. +// Parameters: +// resourceGroupName - the name of the resource group. +// ddosCustomPolicyName - the name of the DDoS custom policy. +func (client DdosCustomPoliciesClient) Delete(ctx context.Context, resourceGroupName string, ddosCustomPolicyName string) (result DdosCustomPoliciesDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DdosCustomPoliciesClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, ddosCustomPolicyName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosCustomPoliciesClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosCustomPoliciesClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client DdosCustomPoliciesClient) DeletePreparer(ctx context.Context, resourceGroupName string, ddosCustomPolicyName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "ddosCustomPolicyName": autorest.Encode("path", ddosCustomPolicyName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosCustomPolicies/{ddosCustomPolicyName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client DdosCustomPoliciesClient) DeleteSender(req *http.Request) (future DdosCustomPoliciesDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client DdosCustomPoliciesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets information about the specified DDoS custom policy. +// Parameters: +// resourceGroupName - the name of the resource group. +// ddosCustomPolicyName - the name of the DDoS custom policy. +func (client DdosCustomPoliciesClient) Get(ctx context.Context, resourceGroupName string, ddosCustomPolicyName string) (result DdosCustomPolicy, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DdosCustomPoliciesClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, ddosCustomPolicyName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosCustomPoliciesClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.DdosCustomPoliciesClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosCustomPoliciesClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client DdosCustomPoliciesClient) GetPreparer(ctx context.Context, resourceGroupName string, ddosCustomPolicyName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "ddosCustomPolicyName": autorest.Encode("path", ddosCustomPolicyName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosCustomPolicies/{ddosCustomPolicyName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client DdosCustomPoliciesClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client DdosCustomPoliciesClient) GetResponder(resp *http.Response) (result DdosCustomPolicy, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// UpdateTags update a DDoS custom policy tags. +// Parameters: +// resourceGroupName - the name of the resource group. +// ddosCustomPolicyName - the name of the DDoS custom policy. +// parameters - parameters supplied to update DDoS custom policy resource tags. +func (client DdosCustomPoliciesClient) UpdateTags(ctx context.Context, resourceGroupName string, ddosCustomPolicyName string, parameters TagsObject) (result DdosCustomPolicy, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DdosCustomPoliciesClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, ddosCustomPolicyName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosCustomPoliciesClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.DdosCustomPoliciesClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosCustomPoliciesClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client DdosCustomPoliciesClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, ddosCustomPolicyName string, parameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "ddosCustomPolicyName": autorest.Encode("path", ddosCustomPolicyName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosCustomPolicies/{ddosCustomPolicyName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client DdosCustomPoliciesClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client DdosCustomPoliciesClient) UpdateTagsResponder(resp *http.Response) (result DdosCustomPolicy, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/ddosprotectionplans.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/ddosprotectionplans.go new file mode 100644 index 0000000..26f3f98 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/ddosprotectionplans.go @@ -0,0 +1,577 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// DdosProtectionPlansClient is the network Client +type DdosProtectionPlansClient struct { + BaseClient +} + +// NewDdosProtectionPlansClient creates an instance of the DdosProtectionPlansClient client. +func NewDdosProtectionPlansClient(subscriptionID string) DdosProtectionPlansClient { + return NewDdosProtectionPlansClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewDdosProtectionPlansClientWithBaseURI creates an instance of the DdosProtectionPlansClient client using a custom +// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure +// stack). +func NewDdosProtectionPlansClientWithBaseURI(baseURI string, subscriptionID string) DdosProtectionPlansClient { + return DdosProtectionPlansClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a DDoS protection plan. +// Parameters: +// resourceGroupName - the name of the resource group. +// ddosProtectionPlanName - the name of the DDoS protection plan. +// parameters - parameters supplied to the create or update operation. +func (client DdosProtectionPlansClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, ddosProtectionPlanName string, parameters DdosProtectionPlan) (result DdosProtectionPlansCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DdosProtectionPlansClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, ddosProtectionPlanName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosProtectionPlansClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosProtectionPlansClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client DdosProtectionPlansClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, ddosProtectionPlanName string, parameters DdosProtectionPlan) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "ddosProtectionPlanName": autorest.Encode("path", ddosProtectionPlanName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.ID = nil + parameters.Name = nil + parameters.Type = nil + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans/{ddosProtectionPlanName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client DdosProtectionPlansClient) CreateOrUpdateSender(req *http.Request) (future DdosProtectionPlansCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client DdosProtectionPlansClient) CreateOrUpdateResponder(resp *http.Response) (result DdosProtectionPlan, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified DDoS protection plan. +// Parameters: +// resourceGroupName - the name of the resource group. +// ddosProtectionPlanName - the name of the DDoS protection plan. +func (client DdosProtectionPlansClient) Delete(ctx context.Context, resourceGroupName string, ddosProtectionPlanName string) (result DdosProtectionPlansDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DdosProtectionPlansClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, ddosProtectionPlanName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosProtectionPlansClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosProtectionPlansClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client DdosProtectionPlansClient) DeletePreparer(ctx context.Context, resourceGroupName string, ddosProtectionPlanName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "ddosProtectionPlanName": autorest.Encode("path", ddosProtectionPlanName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans/{ddosProtectionPlanName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client DdosProtectionPlansClient) DeleteSender(req *http.Request) (future DdosProtectionPlansDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client DdosProtectionPlansClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets information about the specified DDoS protection plan. +// Parameters: +// resourceGroupName - the name of the resource group. +// ddosProtectionPlanName - the name of the DDoS protection plan. +func (client DdosProtectionPlansClient) Get(ctx context.Context, resourceGroupName string, ddosProtectionPlanName string) (result DdosProtectionPlan, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DdosProtectionPlansClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, ddosProtectionPlanName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosProtectionPlansClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.DdosProtectionPlansClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosProtectionPlansClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client DdosProtectionPlansClient) GetPreparer(ctx context.Context, resourceGroupName string, ddosProtectionPlanName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "ddosProtectionPlanName": autorest.Encode("path", ddosProtectionPlanName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans/{ddosProtectionPlanName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client DdosProtectionPlansClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client DdosProtectionPlansClient) GetResponder(resp *http.Response) (result DdosProtectionPlan, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all DDoS protection plans in a subscription. +func (client DdosProtectionPlansClient) List(ctx context.Context) (result DdosProtectionPlanListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DdosProtectionPlansClient.List") + defer func() { + sc := -1 + if result.dpplr.Response.Response != nil { + sc = result.dpplr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosProtectionPlansClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.dpplr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.DdosProtectionPlansClient", "List", resp, "Failure sending request") + return + } + + result.dpplr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosProtectionPlansClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client DdosProtectionPlansClient) ListPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/ddosProtectionPlans", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client DdosProtectionPlansClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client DdosProtectionPlansClient) ListResponder(resp *http.Response) (result DdosProtectionPlanListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client DdosProtectionPlansClient) listNextResults(ctx context.Context, lastResults DdosProtectionPlanListResult) (result DdosProtectionPlanListResult, err error) { + req, err := lastResults.ddosProtectionPlanListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.DdosProtectionPlansClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.DdosProtectionPlansClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosProtectionPlansClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client DdosProtectionPlansClient) ListComplete(ctx context.Context) (result DdosProtectionPlanListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DdosProtectionPlansClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx) + return +} + +// ListByResourceGroup gets all the DDoS protection plans in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client DdosProtectionPlansClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result DdosProtectionPlanListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DdosProtectionPlansClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.dpplr.Response.Response != nil { + sc = result.dpplr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listByResourceGroupNextResults + req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosProtectionPlansClient", "ListByResourceGroup", nil, "Failure preparing request") + return + } + + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.dpplr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.DdosProtectionPlansClient", "ListByResourceGroup", resp, "Failure sending request") + return + } + + result.dpplr, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosProtectionPlansClient", "ListByResourceGroup", resp, "Failure responding to request") + } + + return +} + +// ListByResourceGroupPreparer prepares the ListByResourceGroup request. +func (client DdosProtectionPlansClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the +// http.Response Body if it receives an error. +func (client DdosProtectionPlansClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always +// closes the http.Response Body. +func (client DdosProtectionPlansClient) ListByResourceGroupResponder(resp *http.Response) (result DdosProtectionPlanListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listByResourceGroupNextResults retrieves the next set of results, if any. +func (client DdosProtectionPlansClient) listByResourceGroupNextResults(ctx context.Context, lastResults DdosProtectionPlanListResult) (result DdosProtectionPlanListResult, err error) { + req, err := lastResults.ddosProtectionPlanListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.DdosProtectionPlansClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.DdosProtectionPlansClient", "listByResourceGroupNextResults", resp, "Failure sending next results request") + } + result, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosProtectionPlansClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. +func (client DdosProtectionPlansClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result DdosProtectionPlanListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DdosProtectionPlansClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListByResourceGroup(ctx, resourceGroupName) + return +} + +// UpdateTags update a DDoS protection plan tags. +// Parameters: +// resourceGroupName - the name of the resource group. +// ddosProtectionPlanName - the name of the DDoS protection plan. +// parameters - parameters supplied to the update DDoS protection plan resource tags. +func (client DdosProtectionPlansClient) UpdateTags(ctx context.Context, resourceGroupName string, ddosProtectionPlanName string, parameters TagsObject) (result DdosProtectionPlan, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DdosProtectionPlansClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, ddosProtectionPlanName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosProtectionPlansClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.DdosProtectionPlansClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosProtectionPlansClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client DdosProtectionPlansClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, ddosProtectionPlanName string, parameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "ddosProtectionPlanName": autorest.Encode("path", ddosProtectionPlanName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans/{ddosProtectionPlanName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client DdosProtectionPlansClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client DdosProtectionPlansClient) UpdateTagsResponder(resp *http.Response) (result DdosProtectionPlan, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/defaultsecurityrules.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/defaultsecurityrules.go new file mode 100644 index 0000000..751bd4b --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/defaultsecurityrules.go @@ -0,0 +1,235 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// DefaultSecurityRulesClient is the network Client +type DefaultSecurityRulesClient struct { + BaseClient +} + +// NewDefaultSecurityRulesClient creates an instance of the DefaultSecurityRulesClient client. +func NewDefaultSecurityRulesClient(subscriptionID string) DefaultSecurityRulesClient { + return NewDefaultSecurityRulesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewDefaultSecurityRulesClientWithBaseURI creates an instance of the DefaultSecurityRulesClient client using a custom +// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure +// stack). +func NewDefaultSecurityRulesClientWithBaseURI(baseURI string, subscriptionID string) DefaultSecurityRulesClient { + return DefaultSecurityRulesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// Get get the specified default network security rule. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkSecurityGroupName - the name of the network security group. +// defaultSecurityRuleName - the name of the default security rule. +func (client DefaultSecurityRulesClient) Get(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, defaultSecurityRuleName string) (result SecurityRule, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DefaultSecurityRulesClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, networkSecurityGroupName, defaultSecurityRuleName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DefaultSecurityRulesClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.DefaultSecurityRulesClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DefaultSecurityRulesClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client DefaultSecurityRulesClient) GetPreparer(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, defaultSecurityRuleName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "defaultSecurityRuleName": autorest.Encode("path", defaultSecurityRuleName), + "networkSecurityGroupName": autorest.Encode("path", networkSecurityGroupName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/defaultSecurityRules/{defaultSecurityRuleName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client DefaultSecurityRulesClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client DefaultSecurityRulesClient) GetResponder(resp *http.Response) (result SecurityRule, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all default security rules in a network security group. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkSecurityGroupName - the name of the network security group. +func (client DefaultSecurityRulesClient) List(ctx context.Context, resourceGroupName string, networkSecurityGroupName string) (result SecurityRuleListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DefaultSecurityRulesClient.List") + defer func() { + sc := -1 + if result.srlr.Response.Response != nil { + sc = result.srlr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, networkSecurityGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DefaultSecurityRulesClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.srlr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.DefaultSecurityRulesClient", "List", resp, "Failure sending request") + return + } + + result.srlr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DefaultSecurityRulesClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client DefaultSecurityRulesClient) ListPreparer(ctx context.Context, resourceGroupName string, networkSecurityGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkSecurityGroupName": autorest.Encode("path", networkSecurityGroupName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/defaultSecurityRules", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client DefaultSecurityRulesClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client DefaultSecurityRulesClient) ListResponder(resp *http.Response) (result SecurityRuleListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client DefaultSecurityRulesClient) listNextResults(ctx context.Context, lastResults SecurityRuleListResult) (result SecurityRuleListResult, err error) { + req, err := lastResults.securityRuleListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.DefaultSecurityRulesClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.DefaultSecurityRulesClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DefaultSecurityRulesClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client DefaultSecurityRulesClient) ListComplete(ctx context.Context, resourceGroupName string, networkSecurityGroupName string) (result SecurityRuleListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DefaultSecurityRulesClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, networkSecurityGroupName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressroutecircuitauthorizations.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressroutecircuitauthorizations.go new file mode 100644 index 0000000..c651ff4 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressroutecircuitauthorizations.go @@ -0,0 +1,397 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// ExpressRouteCircuitAuthorizationsClient is the network Client +type ExpressRouteCircuitAuthorizationsClient struct { + BaseClient +} + +// NewExpressRouteCircuitAuthorizationsClient creates an instance of the ExpressRouteCircuitAuthorizationsClient +// client. +func NewExpressRouteCircuitAuthorizationsClient(subscriptionID string) ExpressRouteCircuitAuthorizationsClient { + return NewExpressRouteCircuitAuthorizationsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewExpressRouteCircuitAuthorizationsClientWithBaseURI creates an instance of the +// ExpressRouteCircuitAuthorizationsClient client using a custom endpoint. Use this when interacting with an Azure +// cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewExpressRouteCircuitAuthorizationsClientWithBaseURI(baseURI string, subscriptionID string) ExpressRouteCircuitAuthorizationsClient { + return ExpressRouteCircuitAuthorizationsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates an authorization in the specified express route circuit. +// Parameters: +// resourceGroupName - the name of the resource group. +// circuitName - the name of the express route circuit. +// authorizationName - the name of the authorization. +// authorizationParameters - parameters supplied to the create or update express route circuit authorization +// operation. +func (client ExpressRouteCircuitAuthorizationsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, circuitName string, authorizationName string, authorizationParameters ExpressRouteCircuitAuthorization) (result ExpressRouteCircuitAuthorizationsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitAuthorizationsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, circuitName, authorizationName, authorizationParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client ExpressRouteCircuitAuthorizationsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, circuitName string, authorizationName string, authorizationParameters ExpressRouteCircuitAuthorization) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "authorizationName": autorest.Encode("path", authorizationName), + "circuitName": autorest.Encode("path", circuitName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + authorizationParameters.Etag = nil + authorizationParameters.Type = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations/{authorizationName}", pathParameters), + autorest.WithJSON(authorizationParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCircuitAuthorizationsClient) CreateOrUpdateSender(req *http.Request) (future ExpressRouteCircuitAuthorizationsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client ExpressRouteCircuitAuthorizationsClient) CreateOrUpdateResponder(resp *http.Response) (result ExpressRouteCircuitAuthorization, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified authorization from the specified express route circuit. +// Parameters: +// resourceGroupName - the name of the resource group. +// circuitName - the name of the express route circuit. +// authorizationName - the name of the authorization. +func (client ExpressRouteCircuitAuthorizationsClient) Delete(ctx context.Context, resourceGroupName string, circuitName string, authorizationName string) (result ExpressRouteCircuitAuthorizationsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitAuthorizationsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, circuitName, authorizationName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client ExpressRouteCircuitAuthorizationsClient) DeletePreparer(ctx context.Context, resourceGroupName string, circuitName string, authorizationName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "authorizationName": autorest.Encode("path", authorizationName), + "circuitName": autorest.Encode("path", circuitName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations/{authorizationName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCircuitAuthorizationsClient) DeleteSender(req *http.Request) (future ExpressRouteCircuitAuthorizationsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client ExpressRouteCircuitAuthorizationsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified authorization from the specified express route circuit. +// Parameters: +// resourceGroupName - the name of the resource group. +// circuitName - the name of the express route circuit. +// authorizationName - the name of the authorization. +func (client ExpressRouteCircuitAuthorizationsClient) Get(ctx context.Context, resourceGroupName string, circuitName string, authorizationName string) (result ExpressRouteCircuitAuthorization, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitAuthorizationsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, circuitName, authorizationName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client ExpressRouteCircuitAuthorizationsClient) GetPreparer(ctx context.Context, resourceGroupName string, circuitName string, authorizationName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "authorizationName": autorest.Encode("path", authorizationName), + "circuitName": autorest.Encode("path", circuitName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations/{authorizationName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCircuitAuthorizationsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client ExpressRouteCircuitAuthorizationsClient) GetResponder(resp *http.Response) (result ExpressRouteCircuitAuthorization, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all authorizations in an express route circuit. +// Parameters: +// resourceGroupName - the name of the resource group. +// circuitName - the name of the circuit. +func (client ExpressRouteCircuitAuthorizationsClient) List(ctx context.Context, resourceGroupName string, circuitName string) (result AuthorizationListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitAuthorizationsClient.List") + defer func() { + sc := -1 + if result.alr.Response.Response != nil { + sc = result.alr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, circuitName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.alr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "List", resp, "Failure sending request") + return + } + + result.alr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client ExpressRouteCircuitAuthorizationsClient) ListPreparer(ctx context.Context, resourceGroupName string, circuitName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "circuitName": autorest.Encode("path", circuitName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCircuitAuthorizationsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client ExpressRouteCircuitAuthorizationsClient) ListResponder(resp *http.Response) (result AuthorizationListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client ExpressRouteCircuitAuthorizationsClient) listNextResults(ctx context.Context, lastResults AuthorizationListResult) (result AuthorizationListResult, err error) { + req, err := lastResults.authorizationListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client ExpressRouteCircuitAuthorizationsClient) ListComplete(ctx context.Context, resourceGroupName string, circuitName string) (result AuthorizationListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitAuthorizationsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, circuitName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressroutecircuitconnections.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressroutecircuitconnections.go new file mode 100644 index 0000000..f984fc0 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressroutecircuitconnections.go @@ -0,0 +1,404 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// ExpressRouteCircuitConnectionsClient is the network Client +type ExpressRouteCircuitConnectionsClient struct { + BaseClient +} + +// NewExpressRouteCircuitConnectionsClient creates an instance of the ExpressRouteCircuitConnectionsClient client. +func NewExpressRouteCircuitConnectionsClient(subscriptionID string) ExpressRouteCircuitConnectionsClient { + return NewExpressRouteCircuitConnectionsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewExpressRouteCircuitConnectionsClientWithBaseURI creates an instance of the ExpressRouteCircuitConnectionsClient +// client using a custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI +// (sovereign clouds, Azure stack). +func NewExpressRouteCircuitConnectionsClientWithBaseURI(baseURI string, subscriptionID string) ExpressRouteCircuitConnectionsClient { + return ExpressRouteCircuitConnectionsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a Express Route Circuit Connection in the specified express route circuits. +// Parameters: +// resourceGroupName - the name of the resource group. +// circuitName - the name of the express route circuit. +// peeringName - the name of the peering. +// connectionName - the name of the express route circuit connection. +// expressRouteCircuitConnectionParameters - parameters supplied to the create or update express route circuit +// connection operation. +func (client ExpressRouteCircuitConnectionsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, circuitName string, peeringName string, connectionName string, expressRouteCircuitConnectionParameters ExpressRouteCircuitConnection) (result ExpressRouteCircuitConnectionsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitConnectionsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, circuitName, peeringName, connectionName, expressRouteCircuitConnectionParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitConnectionsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitConnectionsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client ExpressRouteCircuitConnectionsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, circuitName string, peeringName string, connectionName string, expressRouteCircuitConnectionParameters ExpressRouteCircuitConnection) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "circuitName": autorest.Encode("path", circuitName), + "connectionName": autorest.Encode("path", connectionName), + "peeringName": autorest.Encode("path", peeringName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + expressRouteCircuitConnectionParameters.Etag = nil + expressRouteCircuitConnectionParameters.Type = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/connections/{connectionName}", pathParameters), + autorest.WithJSON(expressRouteCircuitConnectionParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCircuitConnectionsClient) CreateOrUpdateSender(req *http.Request) (future ExpressRouteCircuitConnectionsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client ExpressRouteCircuitConnectionsClient) CreateOrUpdateResponder(resp *http.Response) (result ExpressRouteCircuitConnection, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified Express Route Circuit Connection from the specified express route circuit. +// Parameters: +// resourceGroupName - the name of the resource group. +// circuitName - the name of the express route circuit. +// peeringName - the name of the peering. +// connectionName - the name of the express route circuit connection. +func (client ExpressRouteCircuitConnectionsClient) Delete(ctx context.Context, resourceGroupName string, circuitName string, peeringName string, connectionName string) (result ExpressRouteCircuitConnectionsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitConnectionsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, circuitName, peeringName, connectionName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitConnectionsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitConnectionsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client ExpressRouteCircuitConnectionsClient) DeletePreparer(ctx context.Context, resourceGroupName string, circuitName string, peeringName string, connectionName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "circuitName": autorest.Encode("path", circuitName), + "connectionName": autorest.Encode("path", connectionName), + "peeringName": autorest.Encode("path", peeringName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/connections/{connectionName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCircuitConnectionsClient) DeleteSender(req *http.Request) (future ExpressRouteCircuitConnectionsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client ExpressRouteCircuitConnectionsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified Express Route Circuit Connection from the specified express route circuit. +// Parameters: +// resourceGroupName - the name of the resource group. +// circuitName - the name of the express route circuit. +// peeringName - the name of the peering. +// connectionName - the name of the express route circuit connection. +func (client ExpressRouteCircuitConnectionsClient) Get(ctx context.Context, resourceGroupName string, circuitName string, peeringName string, connectionName string) (result ExpressRouteCircuitConnection, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitConnectionsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, circuitName, peeringName, connectionName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitConnectionsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitConnectionsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitConnectionsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client ExpressRouteCircuitConnectionsClient) GetPreparer(ctx context.Context, resourceGroupName string, circuitName string, peeringName string, connectionName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "circuitName": autorest.Encode("path", circuitName), + "connectionName": autorest.Encode("path", connectionName), + "peeringName": autorest.Encode("path", peeringName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/connections/{connectionName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCircuitConnectionsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client ExpressRouteCircuitConnectionsClient) GetResponder(resp *http.Response) (result ExpressRouteCircuitConnection, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all global reach connections associated with a private peering in an express route circuit. +// Parameters: +// resourceGroupName - the name of the resource group. +// circuitName - the name of the circuit. +// peeringName - the name of the peering. +func (client ExpressRouteCircuitConnectionsClient) List(ctx context.Context, resourceGroupName string, circuitName string, peeringName string) (result ExpressRouteCircuitConnectionListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitConnectionsClient.List") + defer func() { + sc := -1 + if result.ercclr.Response.Response != nil { + sc = result.ercclr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, circuitName, peeringName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitConnectionsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.ercclr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitConnectionsClient", "List", resp, "Failure sending request") + return + } + + result.ercclr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitConnectionsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client ExpressRouteCircuitConnectionsClient) ListPreparer(ctx context.Context, resourceGroupName string, circuitName string, peeringName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "circuitName": autorest.Encode("path", circuitName), + "peeringName": autorest.Encode("path", peeringName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/connections", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCircuitConnectionsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client ExpressRouteCircuitConnectionsClient) ListResponder(resp *http.Response) (result ExpressRouteCircuitConnectionListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client ExpressRouteCircuitConnectionsClient) listNextResults(ctx context.Context, lastResults ExpressRouteCircuitConnectionListResult) (result ExpressRouteCircuitConnectionListResult, err error) { + req, err := lastResults.expressRouteCircuitConnectionListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitConnectionsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitConnectionsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitConnectionsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client ExpressRouteCircuitConnectionsClient) ListComplete(ctx context.Context, resourceGroupName string, circuitName string, peeringName string) (result ExpressRouteCircuitConnectionListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitConnectionsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, circuitName, peeringName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressroutecircuitpeerings.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressroutecircuitpeerings.go new file mode 100644 index 0000000..f5b0553 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressroutecircuitpeerings.go @@ -0,0 +1,407 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// ExpressRouteCircuitPeeringsClient is the network Client +type ExpressRouteCircuitPeeringsClient struct { + BaseClient +} + +// NewExpressRouteCircuitPeeringsClient creates an instance of the ExpressRouteCircuitPeeringsClient client. +func NewExpressRouteCircuitPeeringsClient(subscriptionID string) ExpressRouteCircuitPeeringsClient { + return NewExpressRouteCircuitPeeringsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewExpressRouteCircuitPeeringsClientWithBaseURI creates an instance of the ExpressRouteCircuitPeeringsClient client +// using a custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign +// clouds, Azure stack). +func NewExpressRouteCircuitPeeringsClientWithBaseURI(baseURI string, subscriptionID string) ExpressRouteCircuitPeeringsClient { + return ExpressRouteCircuitPeeringsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a peering in the specified express route circuits. +// Parameters: +// resourceGroupName - the name of the resource group. +// circuitName - the name of the express route circuit. +// peeringName - the name of the peering. +// peeringParameters - parameters supplied to the create or update express route circuit peering operation. +func (client ExpressRouteCircuitPeeringsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, circuitName string, peeringName string, peeringParameters ExpressRouteCircuitPeering) (result ExpressRouteCircuitPeeringsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitPeeringsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: peeringParameters, + Constraints: []validation.Constraint{{Target: "peeringParameters.ExpressRouteCircuitPeeringPropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "peeringParameters.ExpressRouteCircuitPeeringPropertiesFormat.PeerASN", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "peeringParameters.ExpressRouteCircuitPeeringPropertiesFormat.PeerASN", Name: validation.InclusiveMaximum, Rule: int64(4294967295), Chain: nil}, + {Target: "peeringParameters.ExpressRouteCircuitPeeringPropertiesFormat.PeerASN", Name: validation.InclusiveMinimum, Rule: int64(1), Chain: nil}, + }}, + }}}}}); err != nil { + return result, validation.NewError("network.ExpressRouteCircuitPeeringsClient", "CreateOrUpdate", err.Error()) + } + + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, circuitName, peeringName, peeringParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client ExpressRouteCircuitPeeringsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, circuitName string, peeringName string, peeringParameters ExpressRouteCircuitPeering) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "circuitName": autorest.Encode("path", circuitName), + "peeringName": autorest.Encode("path", peeringName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + peeringParameters.Etag = nil + peeringParameters.Type = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}", pathParameters), + autorest.WithJSON(peeringParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCircuitPeeringsClient) CreateOrUpdateSender(req *http.Request) (future ExpressRouteCircuitPeeringsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client ExpressRouteCircuitPeeringsClient) CreateOrUpdateResponder(resp *http.Response) (result ExpressRouteCircuitPeering, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified peering from the specified express route circuit. +// Parameters: +// resourceGroupName - the name of the resource group. +// circuitName - the name of the express route circuit. +// peeringName - the name of the peering. +func (client ExpressRouteCircuitPeeringsClient) Delete(ctx context.Context, resourceGroupName string, circuitName string, peeringName string) (result ExpressRouteCircuitPeeringsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitPeeringsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, circuitName, peeringName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client ExpressRouteCircuitPeeringsClient) DeletePreparer(ctx context.Context, resourceGroupName string, circuitName string, peeringName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "circuitName": autorest.Encode("path", circuitName), + "peeringName": autorest.Encode("path", peeringName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCircuitPeeringsClient) DeleteSender(req *http.Request) (future ExpressRouteCircuitPeeringsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client ExpressRouteCircuitPeeringsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified peering for the express route circuit. +// Parameters: +// resourceGroupName - the name of the resource group. +// circuitName - the name of the express route circuit. +// peeringName - the name of the peering. +func (client ExpressRouteCircuitPeeringsClient) Get(ctx context.Context, resourceGroupName string, circuitName string, peeringName string) (result ExpressRouteCircuitPeering, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitPeeringsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, circuitName, peeringName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client ExpressRouteCircuitPeeringsClient) GetPreparer(ctx context.Context, resourceGroupName string, circuitName string, peeringName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "circuitName": autorest.Encode("path", circuitName), + "peeringName": autorest.Encode("path", peeringName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCircuitPeeringsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client ExpressRouteCircuitPeeringsClient) GetResponder(resp *http.Response) (result ExpressRouteCircuitPeering, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all peerings in a specified express route circuit. +// Parameters: +// resourceGroupName - the name of the resource group. +// circuitName - the name of the express route circuit. +func (client ExpressRouteCircuitPeeringsClient) List(ctx context.Context, resourceGroupName string, circuitName string) (result ExpressRouteCircuitPeeringListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitPeeringsClient.List") + defer func() { + sc := -1 + if result.ercplr.Response.Response != nil { + sc = result.ercplr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, circuitName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.ercplr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "List", resp, "Failure sending request") + return + } + + result.ercplr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client ExpressRouteCircuitPeeringsClient) ListPreparer(ctx context.Context, resourceGroupName string, circuitName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "circuitName": autorest.Encode("path", circuitName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCircuitPeeringsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client ExpressRouteCircuitPeeringsClient) ListResponder(resp *http.Response) (result ExpressRouteCircuitPeeringListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client ExpressRouteCircuitPeeringsClient) listNextResults(ctx context.Context, lastResults ExpressRouteCircuitPeeringListResult) (result ExpressRouteCircuitPeeringListResult, err error) { + req, err := lastResults.expressRouteCircuitPeeringListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client ExpressRouteCircuitPeeringsClient) ListComplete(ctx context.Context, resourceGroupName string, circuitName string) (result ExpressRouteCircuitPeeringListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitPeeringsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, circuitName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressroutecircuits.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressroutecircuits.go new file mode 100644 index 0000000..eccacec --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressroutecircuits.go @@ -0,0 +1,970 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// ExpressRouteCircuitsClient is the network Client +type ExpressRouteCircuitsClient struct { + BaseClient +} + +// NewExpressRouteCircuitsClient creates an instance of the ExpressRouteCircuitsClient client. +func NewExpressRouteCircuitsClient(subscriptionID string) ExpressRouteCircuitsClient { + return NewExpressRouteCircuitsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewExpressRouteCircuitsClientWithBaseURI creates an instance of the ExpressRouteCircuitsClient client using a custom +// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure +// stack). +func NewExpressRouteCircuitsClientWithBaseURI(baseURI string, subscriptionID string) ExpressRouteCircuitsClient { + return ExpressRouteCircuitsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates an express route circuit. +// Parameters: +// resourceGroupName - the name of the resource group. +// circuitName - the name of the circuit. +// parameters - parameters supplied to the create or update express route circuit operation. +func (client ExpressRouteCircuitsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, circuitName string, parameters ExpressRouteCircuit) (result ExpressRouteCircuitsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, circuitName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client ExpressRouteCircuitsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, circuitName string, parameters ExpressRouteCircuit) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "circuitName": autorest.Encode("path", circuitName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCircuitsClient) CreateOrUpdateSender(req *http.Request) (future ExpressRouteCircuitsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client ExpressRouteCircuitsClient) CreateOrUpdateResponder(resp *http.Response) (result ExpressRouteCircuit, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified express route circuit. +// Parameters: +// resourceGroupName - the name of the resource group. +// circuitName - the name of the express route circuit. +func (client ExpressRouteCircuitsClient) Delete(ctx context.Context, resourceGroupName string, circuitName string) (result ExpressRouteCircuitsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, circuitName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client ExpressRouteCircuitsClient) DeletePreparer(ctx context.Context, resourceGroupName string, circuitName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "circuitName": autorest.Encode("path", circuitName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCircuitsClient) DeleteSender(req *http.Request) (future ExpressRouteCircuitsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client ExpressRouteCircuitsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets information about the specified express route circuit. +// Parameters: +// resourceGroupName - the name of the resource group. +// circuitName - the name of express route circuit. +func (client ExpressRouteCircuitsClient) Get(ctx context.Context, resourceGroupName string, circuitName string) (result ExpressRouteCircuit, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, circuitName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client ExpressRouteCircuitsClient) GetPreparer(ctx context.Context, resourceGroupName string, circuitName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "circuitName": autorest.Encode("path", circuitName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCircuitsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client ExpressRouteCircuitsClient) GetResponder(resp *http.Response) (result ExpressRouteCircuit, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetPeeringStats gets all stats from an express route circuit in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// circuitName - the name of the express route circuit. +// peeringName - the name of the peering. +func (client ExpressRouteCircuitsClient) GetPeeringStats(ctx context.Context, resourceGroupName string, circuitName string, peeringName string) (result ExpressRouteCircuitStats, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitsClient.GetPeeringStats") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPeeringStatsPreparer(ctx, resourceGroupName, circuitName, peeringName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "GetPeeringStats", nil, "Failure preparing request") + return + } + + resp, err := client.GetPeeringStatsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "GetPeeringStats", resp, "Failure sending request") + return + } + + result, err = client.GetPeeringStatsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "GetPeeringStats", resp, "Failure responding to request") + } + + return +} + +// GetPeeringStatsPreparer prepares the GetPeeringStats request. +func (client ExpressRouteCircuitsClient) GetPeeringStatsPreparer(ctx context.Context, resourceGroupName string, circuitName string, peeringName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "circuitName": autorest.Encode("path", circuitName), + "peeringName": autorest.Encode("path", peeringName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/stats", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetPeeringStatsSender sends the GetPeeringStats request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCircuitsClient) GetPeeringStatsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetPeeringStatsResponder handles the response to the GetPeeringStats request. The method always +// closes the http.Response Body. +func (client ExpressRouteCircuitsClient) GetPeeringStatsResponder(resp *http.Response) (result ExpressRouteCircuitStats, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetStats gets all the stats from an express route circuit in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// circuitName - the name of the express route circuit. +func (client ExpressRouteCircuitsClient) GetStats(ctx context.Context, resourceGroupName string, circuitName string) (result ExpressRouteCircuitStats, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitsClient.GetStats") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetStatsPreparer(ctx, resourceGroupName, circuitName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "GetStats", nil, "Failure preparing request") + return + } + + resp, err := client.GetStatsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "GetStats", resp, "Failure sending request") + return + } + + result, err = client.GetStatsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "GetStats", resp, "Failure responding to request") + } + + return +} + +// GetStatsPreparer prepares the GetStats request. +func (client ExpressRouteCircuitsClient) GetStatsPreparer(ctx context.Context, resourceGroupName string, circuitName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "circuitName": autorest.Encode("path", circuitName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/stats", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetStatsSender sends the GetStats request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCircuitsClient) GetStatsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetStatsResponder handles the response to the GetStats request. The method always +// closes the http.Response Body. +func (client ExpressRouteCircuitsClient) GetStatsResponder(resp *http.Response) (result ExpressRouteCircuitStats, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all the express route circuits in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client ExpressRouteCircuitsClient) List(ctx context.Context, resourceGroupName string) (result ExpressRouteCircuitListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitsClient.List") + defer func() { + sc := -1 + if result.erclr.Response.Response != nil { + sc = result.erclr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.erclr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "List", resp, "Failure sending request") + return + } + + result.erclr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client ExpressRouteCircuitsClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCircuitsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client ExpressRouteCircuitsClient) ListResponder(resp *http.Response) (result ExpressRouteCircuitListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client ExpressRouteCircuitsClient) listNextResults(ctx context.Context, lastResults ExpressRouteCircuitListResult) (result ExpressRouteCircuitListResult, err error) { + req, err := lastResults.expressRouteCircuitListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client ExpressRouteCircuitsClient) ListComplete(ctx context.Context, resourceGroupName string) (result ExpressRouteCircuitListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName) + return +} + +// ListAll gets all the express route circuits in a subscription. +func (client ExpressRouteCircuitsClient) ListAll(ctx context.Context) (result ExpressRouteCircuitListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitsClient.ListAll") + defer func() { + sc := -1 + if result.erclr.Response.Response != nil { + sc = result.erclr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listAllNextResults + req, err := client.ListAllPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListAll", nil, "Failure preparing request") + return + } + + resp, err := client.ListAllSender(req) + if err != nil { + result.erclr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListAll", resp, "Failure sending request") + return + } + + result.erclr, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListAll", resp, "Failure responding to request") + } + + return +} + +// ListAllPreparer prepares the ListAll request. +func (client ExpressRouteCircuitsClient) ListAllPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteCircuits", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAllSender sends the ListAll request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCircuitsClient) ListAllSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAllResponder handles the response to the ListAll request. The method always +// closes the http.Response Body. +func (client ExpressRouteCircuitsClient) ListAllResponder(resp *http.Response) (result ExpressRouteCircuitListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listAllNextResults retrieves the next set of results, if any. +func (client ExpressRouteCircuitsClient) listAllNextResults(ctx context.Context, lastResults ExpressRouteCircuitListResult) (result ExpressRouteCircuitListResult, err error) { + req, err := lastResults.expressRouteCircuitListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "listAllNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListAllSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "listAllNextResults", resp, "Failure sending next results request") + } + result, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "listAllNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListAllComplete enumerates all values, automatically crossing page boundaries as required. +func (client ExpressRouteCircuitsClient) ListAllComplete(ctx context.Context) (result ExpressRouteCircuitListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitsClient.ListAll") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListAll(ctx) + return +} + +// ListArpTable gets the currently advertised ARP table associated with the express route circuit in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// circuitName - the name of the express route circuit. +// peeringName - the name of the peering. +// devicePath - the path of the device. +func (client ExpressRouteCircuitsClient) ListArpTable(ctx context.Context, resourceGroupName string, circuitName string, peeringName string, devicePath string) (result ExpressRouteCircuitsListArpTableFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitsClient.ListArpTable") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ListArpTablePreparer(ctx, resourceGroupName, circuitName, peeringName, devicePath) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListArpTable", nil, "Failure preparing request") + return + } + + result, err = client.ListArpTableSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListArpTable", result.Response(), "Failure sending request") + return + } + + return +} + +// ListArpTablePreparer prepares the ListArpTable request. +func (client ExpressRouteCircuitsClient) ListArpTablePreparer(ctx context.Context, resourceGroupName string, circuitName string, peeringName string, devicePath string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "circuitName": autorest.Encode("path", circuitName), + "devicePath": autorest.Encode("path", devicePath), + "peeringName": autorest.Encode("path", peeringName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/arpTables/{devicePath}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListArpTableSender sends the ListArpTable request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCircuitsClient) ListArpTableSender(req *http.Request) (future ExpressRouteCircuitsListArpTableFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// ListArpTableResponder handles the response to the ListArpTable request. The method always +// closes the http.Response Body. +func (client ExpressRouteCircuitsClient) ListArpTableResponder(resp *http.Response) (result ExpressRouteCircuitsArpTableListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// ListRoutesTable gets the currently advertised routes table associated with the express route circuit in a resource +// group. +// Parameters: +// resourceGroupName - the name of the resource group. +// circuitName - the name of the express route circuit. +// peeringName - the name of the peering. +// devicePath - the path of the device. +func (client ExpressRouteCircuitsClient) ListRoutesTable(ctx context.Context, resourceGroupName string, circuitName string, peeringName string, devicePath string) (result ExpressRouteCircuitsListRoutesTableFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitsClient.ListRoutesTable") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ListRoutesTablePreparer(ctx, resourceGroupName, circuitName, peeringName, devicePath) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListRoutesTable", nil, "Failure preparing request") + return + } + + result, err = client.ListRoutesTableSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListRoutesTable", result.Response(), "Failure sending request") + return + } + + return +} + +// ListRoutesTablePreparer prepares the ListRoutesTable request. +func (client ExpressRouteCircuitsClient) ListRoutesTablePreparer(ctx context.Context, resourceGroupName string, circuitName string, peeringName string, devicePath string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "circuitName": autorest.Encode("path", circuitName), + "devicePath": autorest.Encode("path", devicePath), + "peeringName": autorest.Encode("path", peeringName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/routeTables/{devicePath}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListRoutesTableSender sends the ListRoutesTable request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCircuitsClient) ListRoutesTableSender(req *http.Request) (future ExpressRouteCircuitsListRoutesTableFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// ListRoutesTableResponder handles the response to the ListRoutesTable request. The method always +// closes the http.Response Body. +func (client ExpressRouteCircuitsClient) ListRoutesTableResponder(resp *http.Response) (result ExpressRouteCircuitsRoutesTableListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// ListRoutesTableSummary gets the currently advertised routes table summary associated with the express route circuit +// in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// circuitName - the name of the express route circuit. +// peeringName - the name of the peering. +// devicePath - the path of the device. +func (client ExpressRouteCircuitsClient) ListRoutesTableSummary(ctx context.Context, resourceGroupName string, circuitName string, peeringName string, devicePath string) (result ExpressRouteCircuitsListRoutesTableSummaryFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitsClient.ListRoutesTableSummary") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ListRoutesTableSummaryPreparer(ctx, resourceGroupName, circuitName, peeringName, devicePath) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListRoutesTableSummary", nil, "Failure preparing request") + return + } + + result, err = client.ListRoutesTableSummarySender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListRoutesTableSummary", result.Response(), "Failure sending request") + return + } + + return +} + +// ListRoutesTableSummaryPreparer prepares the ListRoutesTableSummary request. +func (client ExpressRouteCircuitsClient) ListRoutesTableSummaryPreparer(ctx context.Context, resourceGroupName string, circuitName string, peeringName string, devicePath string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "circuitName": autorest.Encode("path", circuitName), + "devicePath": autorest.Encode("path", devicePath), + "peeringName": autorest.Encode("path", peeringName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/routeTablesSummary/{devicePath}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListRoutesTableSummarySender sends the ListRoutesTableSummary request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCircuitsClient) ListRoutesTableSummarySender(req *http.Request) (future ExpressRouteCircuitsListRoutesTableSummaryFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// ListRoutesTableSummaryResponder handles the response to the ListRoutesTableSummary request. The method always +// closes the http.Response Body. +func (client ExpressRouteCircuitsClient) ListRoutesTableSummaryResponder(resp *http.Response) (result ExpressRouteCircuitsRoutesTableSummaryListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// UpdateTags updates an express route circuit tags. +// Parameters: +// resourceGroupName - the name of the resource group. +// circuitName - the name of the circuit. +// parameters - parameters supplied to update express route circuit tags. +func (client ExpressRouteCircuitsClient) UpdateTags(ctx context.Context, resourceGroupName string, circuitName string, parameters TagsObject) (result ExpressRouteCircuit, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitsClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, circuitName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client ExpressRouteCircuitsClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, circuitName string, parameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "circuitName": autorest.Encode("path", circuitName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCircuitsClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client ExpressRouteCircuitsClient) UpdateTagsResponder(resp *http.Response) (result ExpressRouteCircuit, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressrouteconnections.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressrouteconnections.go new file mode 100644 index 0000000..ece0cc0 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressrouteconnections.go @@ -0,0 +1,364 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// ExpressRouteConnectionsClient is the network Client +type ExpressRouteConnectionsClient struct { + BaseClient +} + +// NewExpressRouteConnectionsClient creates an instance of the ExpressRouteConnectionsClient client. +func NewExpressRouteConnectionsClient(subscriptionID string) ExpressRouteConnectionsClient { + return NewExpressRouteConnectionsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewExpressRouteConnectionsClientWithBaseURI creates an instance of the ExpressRouteConnectionsClient client using a +// custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, +// Azure stack). +func NewExpressRouteConnectionsClientWithBaseURI(baseURI string, subscriptionID string) ExpressRouteConnectionsClient { + return ExpressRouteConnectionsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates a connection between an ExpressRoute gateway and an ExpressRoute circuit. +// Parameters: +// resourceGroupName - the name of the resource group. +// expressRouteGatewayName - the name of the ExpressRoute gateway. +// connectionName - the name of the connection subresource. +// putExpressRouteConnectionParameters - parameters required in an ExpressRouteConnection PUT operation. +func (client ExpressRouteConnectionsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, expressRouteGatewayName string, connectionName string, putExpressRouteConnectionParameters ExpressRouteConnection) (result ExpressRouteConnectionsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteConnectionsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: putExpressRouteConnectionParameters, + Constraints: []validation.Constraint{{Target: "putExpressRouteConnectionParameters.ExpressRouteConnectionProperties", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "putExpressRouteConnectionParameters.ExpressRouteConnectionProperties.ExpressRouteCircuitPeering", Name: validation.Null, Rule: true, Chain: nil}}}, + {Target: "putExpressRouteConnectionParameters.Name", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil { + return result, validation.NewError("network.ExpressRouteConnectionsClient", "CreateOrUpdate", err.Error()) + } + + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, expressRouteGatewayName, connectionName, putExpressRouteConnectionParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteConnectionsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteConnectionsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client ExpressRouteConnectionsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, expressRouteGatewayName string, connectionName string, putExpressRouteConnectionParameters ExpressRouteConnection) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "connectionName": autorest.Encode("path", connectionName), + "expressRouteGatewayName": autorest.Encode("path", expressRouteGatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections/{connectionName}", pathParameters), + autorest.WithJSON(putExpressRouteConnectionParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteConnectionsClient) CreateOrUpdateSender(req *http.Request) (future ExpressRouteConnectionsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client ExpressRouteConnectionsClient) CreateOrUpdateResponder(resp *http.Response) (result ExpressRouteConnection, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes a connection to a ExpressRoute circuit. +// Parameters: +// resourceGroupName - the name of the resource group. +// expressRouteGatewayName - the name of the ExpressRoute gateway. +// connectionName - the name of the connection subresource. +func (client ExpressRouteConnectionsClient) Delete(ctx context.Context, resourceGroupName string, expressRouteGatewayName string, connectionName string) (result ExpressRouteConnectionsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteConnectionsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, expressRouteGatewayName, connectionName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteConnectionsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteConnectionsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client ExpressRouteConnectionsClient) DeletePreparer(ctx context.Context, resourceGroupName string, expressRouteGatewayName string, connectionName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "connectionName": autorest.Encode("path", connectionName), + "expressRouteGatewayName": autorest.Encode("path", expressRouteGatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections/{connectionName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteConnectionsClient) DeleteSender(req *http.Request) (future ExpressRouteConnectionsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client ExpressRouteConnectionsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified ExpressRouteConnection. +// Parameters: +// resourceGroupName - the name of the resource group. +// expressRouteGatewayName - the name of the ExpressRoute gateway. +// connectionName - the name of the ExpressRoute connection. +func (client ExpressRouteConnectionsClient) Get(ctx context.Context, resourceGroupName string, expressRouteGatewayName string, connectionName string) (result ExpressRouteConnection, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteConnectionsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, expressRouteGatewayName, connectionName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteConnectionsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteConnectionsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteConnectionsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client ExpressRouteConnectionsClient) GetPreparer(ctx context.Context, resourceGroupName string, expressRouteGatewayName string, connectionName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "connectionName": autorest.Encode("path", connectionName), + "expressRouteGatewayName": autorest.Encode("path", expressRouteGatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections/{connectionName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteConnectionsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client ExpressRouteConnectionsClient) GetResponder(resp *http.Response) (result ExpressRouteConnection, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List lists ExpressRouteConnections. +// Parameters: +// resourceGroupName - the name of the resource group. +// expressRouteGatewayName - the name of the ExpressRoute gateway. +func (client ExpressRouteConnectionsClient) List(ctx context.Context, resourceGroupName string, expressRouteGatewayName string) (result ExpressRouteConnectionList, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteConnectionsClient.List") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ListPreparer(ctx, resourceGroupName, expressRouteGatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteConnectionsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteConnectionsClient", "List", resp, "Failure sending request") + return + } + + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteConnectionsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client ExpressRouteConnectionsClient) ListPreparer(ctx context.Context, resourceGroupName string, expressRouteGatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "expressRouteGatewayName": autorest.Encode("path", expressRouteGatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteConnectionsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client ExpressRouteConnectionsClient) ListResponder(resp *http.Response) (result ExpressRouteConnectionList, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressroutecrossconnectionpeerings.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressroutecrossconnectionpeerings.go new file mode 100644 index 0000000..1b40ac0 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressroutecrossconnectionpeerings.go @@ -0,0 +1,408 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// ExpressRouteCrossConnectionPeeringsClient is the network Client +type ExpressRouteCrossConnectionPeeringsClient struct { + BaseClient +} + +// NewExpressRouteCrossConnectionPeeringsClient creates an instance of the ExpressRouteCrossConnectionPeeringsClient +// client. +func NewExpressRouteCrossConnectionPeeringsClient(subscriptionID string) ExpressRouteCrossConnectionPeeringsClient { + return NewExpressRouteCrossConnectionPeeringsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewExpressRouteCrossConnectionPeeringsClientWithBaseURI creates an instance of the +// ExpressRouteCrossConnectionPeeringsClient client using a custom endpoint. Use this when interacting with an Azure +// cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewExpressRouteCrossConnectionPeeringsClientWithBaseURI(baseURI string, subscriptionID string) ExpressRouteCrossConnectionPeeringsClient { + return ExpressRouteCrossConnectionPeeringsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a peering in the specified ExpressRouteCrossConnection. +// Parameters: +// resourceGroupName - the name of the resource group. +// crossConnectionName - the name of the ExpressRouteCrossConnection. +// peeringName - the name of the peering. +// peeringParameters - parameters supplied to the create or update ExpressRouteCrossConnection peering +// operation. +func (client ExpressRouteCrossConnectionPeeringsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, crossConnectionName string, peeringName string, peeringParameters ExpressRouteCrossConnectionPeering) (result ExpressRouteCrossConnectionPeeringsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCrossConnectionPeeringsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: peeringParameters, + Constraints: []validation.Constraint{{Target: "peeringParameters.ExpressRouteCrossConnectionPeeringProperties", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "peeringParameters.ExpressRouteCrossConnectionPeeringProperties.PeerASN", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "peeringParameters.ExpressRouteCrossConnectionPeeringProperties.PeerASN", Name: validation.InclusiveMaximum, Rule: int64(4294967295), Chain: nil}, + {Target: "peeringParameters.ExpressRouteCrossConnectionPeeringProperties.PeerASN", Name: validation.InclusiveMinimum, Rule: int64(1), Chain: nil}, + }}, + }}}}}); err != nil { + return result, validation.NewError("network.ExpressRouteCrossConnectionPeeringsClient", "CreateOrUpdate", err.Error()) + } + + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, crossConnectionName, peeringName, peeringParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionPeeringsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionPeeringsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client ExpressRouteCrossConnectionPeeringsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, crossConnectionName string, peeringName string, peeringParameters ExpressRouteCrossConnectionPeering) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "crossConnectionName": autorest.Encode("path", crossConnectionName), + "peeringName": autorest.Encode("path", peeringName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + peeringParameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}", pathParameters), + autorest.WithJSON(peeringParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCrossConnectionPeeringsClient) CreateOrUpdateSender(req *http.Request) (future ExpressRouteCrossConnectionPeeringsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client ExpressRouteCrossConnectionPeeringsClient) CreateOrUpdateResponder(resp *http.Response) (result ExpressRouteCrossConnectionPeering, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified peering from the ExpressRouteCrossConnection. +// Parameters: +// resourceGroupName - the name of the resource group. +// crossConnectionName - the name of the ExpressRouteCrossConnection. +// peeringName - the name of the peering. +func (client ExpressRouteCrossConnectionPeeringsClient) Delete(ctx context.Context, resourceGroupName string, crossConnectionName string, peeringName string) (result ExpressRouteCrossConnectionPeeringsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCrossConnectionPeeringsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, crossConnectionName, peeringName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionPeeringsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionPeeringsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client ExpressRouteCrossConnectionPeeringsClient) DeletePreparer(ctx context.Context, resourceGroupName string, crossConnectionName string, peeringName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "crossConnectionName": autorest.Encode("path", crossConnectionName), + "peeringName": autorest.Encode("path", peeringName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCrossConnectionPeeringsClient) DeleteSender(req *http.Request) (future ExpressRouteCrossConnectionPeeringsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client ExpressRouteCrossConnectionPeeringsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified peering for the ExpressRouteCrossConnection. +// Parameters: +// resourceGroupName - the name of the resource group. +// crossConnectionName - the name of the ExpressRouteCrossConnection. +// peeringName - the name of the peering. +func (client ExpressRouteCrossConnectionPeeringsClient) Get(ctx context.Context, resourceGroupName string, crossConnectionName string, peeringName string) (result ExpressRouteCrossConnectionPeering, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCrossConnectionPeeringsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, crossConnectionName, peeringName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionPeeringsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionPeeringsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionPeeringsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client ExpressRouteCrossConnectionPeeringsClient) GetPreparer(ctx context.Context, resourceGroupName string, crossConnectionName string, peeringName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "crossConnectionName": autorest.Encode("path", crossConnectionName), + "peeringName": autorest.Encode("path", peeringName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCrossConnectionPeeringsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client ExpressRouteCrossConnectionPeeringsClient) GetResponder(resp *http.Response) (result ExpressRouteCrossConnectionPeering, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all peerings in a specified ExpressRouteCrossConnection. +// Parameters: +// resourceGroupName - the name of the resource group. +// crossConnectionName - the name of the ExpressRouteCrossConnection. +func (client ExpressRouteCrossConnectionPeeringsClient) List(ctx context.Context, resourceGroupName string, crossConnectionName string) (result ExpressRouteCrossConnectionPeeringListPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCrossConnectionPeeringsClient.List") + defer func() { + sc := -1 + if result.erccpl.Response.Response != nil { + sc = result.erccpl.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, crossConnectionName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionPeeringsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.erccpl.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionPeeringsClient", "List", resp, "Failure sending request") + return + } + + result.erccpl, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionPeeringsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client ExpressRouteCrossConnectionPeeringsClient) ListPreparer(ctx context.Context, resourceGroupName string, crossConnectionName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "crossConnectionName": autorest.Encode("path", crossConnectionName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCrossConnectionPeeringsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client ExpressRouteCrossConnectionPeeringsClient) ListResponder(resp *http.Response) (result ExpressRouteCrossConnectionPeeringList, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client ExpressRouteCrossConnectionPeeringsClient) listNextResults(ctx context.Context, lastResults ExpressRouteCrossConnectionPeeringList) (result ExpressRouteCrossConnectionPeeringList, err error) { + req, err := lastResults.expressRouteCrossConnectionPeeringListPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionPeeringsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionPeeringsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionPeeringsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client ExpressRouteCrossConnectionPeeringsClient) ListComplete(ctx context.Context, resourceGroupName string, crossConnectionName string) (result ExpressRouteCrossConnectionPeeringListIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCrossConnectionPeeringsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, crossConnectionName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressroutecrossconnections.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressroutecrossconnections.go new file mode 100644 index 0000000..2b9770e --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressroutecrossconnections.go @@ -0,0 +1,742 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// ExpressRouteCrossConnectionsClient is the network Client +type ExpressRouteCrossConnectionsClient struct { + BaseClient +} + +// NewExpressRouteCrossConnectionsClient creates an instance of the ExpressRouteCrossConnectionsClient client. +func NewExpressRouteCrossConnectionsClient(subscriptionID string) ExpressRouteCrossConnectionsClient { + return NewExpressRouteCrossConnectionsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewExpressRouteCrossConnectionsClientWithBaseURI creates an instance of the ExpressRouteCrossConnectionsClient +// client using a custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI +// (sovereign clouds, Azure stack). +func NewExpressRouteCrossConnectionsClientWithBaseURI(baseURI string, subscriptionID string) ExpressRouteCrossConnectionsClient { + return ExpressRouteCrossConnectionsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate update the specified ExpressRouteCrossConnection. +// Parameters: +// resourceGroupName - the name of the resource group. +// crossConnectionName - the name of the ExpressRouteCrossConnection. +// parameters - parameters supplied to the update express route crossConnection operation. +func (client ExpressRouteCrossConnectionsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, crossConnectionName string, parameters ExpressRouteCrossConnection) (result ExpressRouteCrossConnectionsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCrossConnectionsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, crossConnectionName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client ExpressRouteCrossConnectionsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, crossConnectionName string, parameters ExpressRouteCrossConnection) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "crossConnectionName": autorest.Encode("path", crossConnectionName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCrossConnectionsClient) CreateOrUpdateSender(req *http.Request) (future ExpressRouteCrossConnectionsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client ExpressRouteCrossConnectionsClient) CreateOrUpdateResponder(resp *http.Response) (result ExpressRouteCrossConnection, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Get gets details about the specified ExpressRouteCrossConnection. +// Parameters: +// resourceGroupName - the name of the resource group (peering location of the circuit). +// crossConnectionName - the name of the ExpressRouteCrossConnection (service key of the circuit). +func (client ExpressRouteCrossConnectionsClient) Get(ctx context.Context, resourceGroupName string, crossConnectionName string) (result ExpressRouteCrossConnection, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCrossConnectionsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, crossConnectionName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client ExpressRouteCrossConnectionsClient) GetPreparer(ctx context.Context, resourceGroupName string, crossConnectionName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "crossConnectionName": autorest.Encode("path", crossConnectionName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCrossConnectionsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client ExpressRouteCrossConnectionsClient) GetResponder(resp *http.Response) (result ExpressRouteCrossConnection, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List retrieves all the ExpressRouteCrossConnections in a subscription. +func (client ExpressRouteCrossConnectionsClient) List(ctx context.Context) (result ExpressRouteCrossConnectionListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCrossConnectionsClient.List") + defer func() { + sc := -1 + if result.ercclr.Response.Response != nil { + sc = result.ercclr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.ercclr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "List", resp, "Failure sending request") + return + } + + result.ercclr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client ExpressRouteCrossConnectionsClient) ListPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteCrossConnections", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCrossConnectionsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client ExpressRouteCrossConnectionsClient) ListResponder(resp *http.Response) (result ExpressRouteCrossConnectionListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client ExpressRouteCrossConnectionsClient) listNextResults(ctx context.Context, lastResults ExpressRouteCrossConnectionListResult) (result ExpressRouteCrossConnectionListResult, err error) { + req, err := lastResults.expressRouteCrossConnectionListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client ExpressRouteCrossConnectionsClient) ListComplete(ctx context.Context) (result ExpressRouteCrossConnectionListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCrossConnectionsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx) + return +} + +// ListArpTable gets the currently advertised ARP table associated with the express route cross connection in a +// resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// crossConnectionName - the name of the ExpressRouteCrossConnection. +// peeringName - the name of the peering. +// devicePath - the path of the device. +func (client ExpressRouteCrossConnectionsClient) ListArpTable(ctx context.Context, resourceGroupName string, crossConnectionName string, peeringName string, devicePath string) (result ExpressRouteCrossConnectionsListArpTableFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCrossConnectionsClient.ListArpTable") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ListArpTablePreparer(ctx, resourceGroupName, crossConnectionName, peeringName, devicePath) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "ListArpTable", nil, "Failure preparing request") + return + } + + result, err = client.ListArpTableSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "ListArpTable", result.Response(), "Failure sending request") + return + } + + return +} + +// ListArpTablePreparer prepares the ListArpTable request. +func (client ExpressRouteCrossConnectionsClient) ListArpTablePreparer(ctx context.Context, resourceGroupName string, crossConnectionName string, peeringName string, devicePath string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "crossConnectionName": autorest.Encode("path", crossConnectionName), + "devicePath": autorest.Encode("path", devicePath), + "peeringName": autorest.Encode("path", peeringName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}/arpTables/{devicePath}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListArpTableSender sends the ListArpTable request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCrossConnectionsClient) ListArpTableSender(req *http.Request) (future ExpressRouteCrossConnectionsListArpTableFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// ListArpTableResponder handles the response to the ListArpTable request. The method always +// closes the http.Response Body. +func (client ExpressRouteCrossConnectionsClient) ListArpTableResponder(resp *http.Response) (result ExpressRouteCircuitsArpTableListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// ListByResourceGroup retrieves all the ExpressRouteCrossConnections in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client ExpressRouteCrossConnectionsClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result ExpressRouteCrossConnectionListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCrossConnectionsClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.ercclr.Response.Response != nil { + sc = result.ercclr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listByResourceGroupNextResults + req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "ListByResourceGroup", nil, "Failure preparing request") + return + } + + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.ercclr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "ListByResourceGroup", resp, "Failure sending request") + return + } + + result.ercclr, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "ListByResourceGroup", resp, "Failure responding to request") + } + + return +} + +// ListByResourceGroupPreparer prepares the ListByResourceGroup request. +func (client ExpressRouteCrossConnectionsClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCrossConnectionsClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always +// closes the http.Response Body. +func (client ExpressRouteCrossConnectionsClient) ListByResourceGroupResponder(resp *http.Response) (result ExpressRouteCrossConnectionListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listByResourceGroupNextResults retrieves the next set of results, if any. +func (client ExpressRouteCrossConnectionsClient) listByResourceGroupNextResults(ctx context.Context, lastResults ExpressRouteCrossConnectionListResult) (result ExpressRouteCrossConnectionListResult, err error) { + req, err := lastResults.expressRouteCrossConnectionListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "listByResourceGroupNextResults", resp, "Failure sending next results request") + } + result, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. +func (client ExpressRouteCrossConnectionsClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result ExpressRouteCrossConnectionListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCrossConnectionsClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListByResourceGroup(ctx, resourceGroupName) + return +} + +// ListRoutesTable gets the currently advertised routes table associated with the express route cross connection in a +// resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// crossConnectionName - the name of the ExpressRouteCrossConnection. +// peeringName - the name of the peering. +// devicePath - the path of the device. +func (client ExpressRouteCrossConnectionsClient) ListRoutesTable(ctx context.Context, resourceGroupName string, crossConnectionName string, peeringName string, devicePath string) (result ExpressRouteCrossConnectionsListRoutesTableFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCrossConnectionsClient.ListRoutesTable") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ListRoutesTablePreparer(ctx, resourceGroupName, crossConnectionName, peeringName, devicePath) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "ListRoutesTable", nil, "Failure preparing request") + return + } + + result, err = client.ListRoutesTableSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "ListRoutesTable", result.Response(), "Failure sending request") + return + } + + return +} + +// ListRoutesTablePreparer prepares the ListRoutesTable request. +func (client ExpressRouteCrossConnectionsClient) ListRoutesTablePreparer(ctx context.Context, resourceGroupName string, crossConnectionName string, peeringName string, devicePath string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "crossConnectionName": autorest.Encode("path", crossConnectionName), + "devicePath": autorest.Encode("path", devicePath), + "peeringName": autorest.Encode("path", peeringName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}/routeTables/{devicePath}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListRoutesTableSender sends the ListRoutesTable request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCrossConnectionsClient) ListRoutesTableSender(req *http.Request) (future ExpressRouteCrossConnectionsListRoutesTableFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// ListRoutesTableResponder handles the response to the ListRoutesTable request. The method always +// closes the http.Response Body. +func (client ExpressRouteCrossConnectionsClient) ListRoutesTableResponder(resp *http.Response) (result ExpressRouteCircuitsRoutesTableListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// ListRoutesTableSummary gets the route table summary associated with the express route cross connection in a resource +// group. +// Parameters: +// resourceGroupName - the name of the resource group. +// crossConnectionName - the name of the ExpressRouteCrossConnection. +// peeringName - the name of the peering. +// devicePath - the path of the device. +func (client ExpressRouteCrossConnectionsClient) ListRoutesTableSummary(ctx context.Context, resourceGroupName string, crossConnectionName string, peeringName string, devicePath string) (result ExpressRouteCrossConnectionsListRoutesTableSummaryFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCrossConnectionsClient.ListRoutesTableSummary") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ListRoutesTableSummaryPreparer(ctx, resourceGroupName, crossConnectionName, peeringName, devicePath) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "ListRoutesTableSummary", nil, "Failure preparing request") + return + } + + result, err = client.ListRoutesTableSummarySender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "ListRoutesTableSummary", result.Response(), "Failure sending request") + return + } + + return +} + +// ListRoutesTableSummaryPreparer prepares the ListRoutesTableSummary request. +func (client ExpressRouteCrossConnectionsClient) ListRoutesTableSummaryPreparer(ctx context.Context, resourceGroupName string, crossConnectionName string, peeringName string, devicePath string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "crossConnectionName": autorest.Encode("path", crossConnectionName), + "devicePath": autorest.Encode("path", devicePath), + "peeringName": autorest.Encode("path", peeringName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}/routeTablesSummary/{devicePath}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListRoutesTableSummarySender sends the ListRoutesTableSummary request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCrossConnectionsClient) ListRoutesTableSummarySender(req *http.Request) (future ExpressRouteCrossConnectionsListRoutesTableSummaryFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// ListRoutesTableSummaryResponder handles the response to the ListRoutesTableSummary request. The method always +// closes the http.Response Body. +func (client ExpressRouteCrossConnectionsClient) ListRoutesTableSummaryResponder(resp *http.Response) (result ExpressRouteCrossConnectionsRoutesTableSummaryListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// UpdateTags updates an express route cross connection tags. +// Parameters: +// resourceGroupName - the name of the resource group. +// crossConnectionName - the name of the cross connection. +// crossConnectionParameters - parameters supplied to update express route cross connection tags. +func (client ExpressRouteCrossConnectionsClient) UpdateTags(ctx context.Context, resourceGroupName string, crossConnectionName string, crossConnectionParameters TagsObject) (result ExpressRouteCrossConnection, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCrossConnectionsClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, crossConnectionName, crossConnectionParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client ExpressRouteCrossConnectionsClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, crossConnectionName string, crossConnectionParameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "crossConnectionName": autorest.Encode("path", crossConnectionName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}", pathParameters), + autorest.WithJSON(crossConnectionParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteCrossConnectionsClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client ExpressRouteCrossConnectionsClient) UpdateTagsResponder(resp *http.Response) (result ExpressRouteCrossConnection, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressroutegateways.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressroutegateways.go new file mode 100644 index 0000000..7c52e37 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressroutegateways.go @@ -0,0 +1,428 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// ExpressRouteGatewaysClient is the network Client +type ExpressRouteGatewaysClient struct { + BaseClient +} + +// NewExpressRouteGatewaysClient creates an instance of the ExpressRouteGatewaysClient client. +func NewExpressRouteGatewaysClient(subscriptionID string) ExpressRouteGatewaysClient { + return NewExpressRouteGatewaysClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewExpressRouteGatewaysClientWithBaseURI creates an instance of the ExpressRouteGatewaysClient client using a custom +// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure +// stack). +func NewExpressRouteGatewaysClientWithBaseURI(baseURI string, subscriptionID string) ExpressRouteGatewaysClient { + return ExpressRouteGatewaysClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a ExpressRoute gateway in a specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// expressRouteGatewayName - the name of the ExpressRoute gateway. +// putExpressRouteGatewayParameters - parameters required in an ExpressRoute gateway PUT operation. +func (client ExpressRouteGatewaysClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, expressRouteGatewayName string, putExpressRouteGatewayParameters ExpressRouteGateway) (result ExpressRouteGatewaysCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteGatewaysClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: putExpressRouteGatewayParameters, + Constraints: []validation.Constraint{{Target: "putExpressRouteGatewayParameters.ExpressRouteGatewayProperties", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "putExpressRouteGatewayParameters.ExpressRouteGatewayProperties.VirtualHub", Name: validation.Null, Rule: true, Chain: nil}}}}}}); err != nil { + return result, validation.NewError("network.ExpressRouteGatewaysClient", "CreateOrUpdate", err.Error()) + } + + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, expressRouteGatewayName, putExpressRouteGatewayParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteGatewaysClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteGatewaysClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client ExpressRouteGatewaysClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, expressRouteGatewayName string, putExpressRouteGatewayParameters ExpressRouteGateway) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "expressRouteGatewayName": autorest.Encode("path", expressRouteGatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + putExpressRouteGatewayParameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}", pathParameters), + autorest.WithJSON(putExpressRouteGatewayParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteGatewaysClient) CreateOrUpdateSender(req *http.Request) (future ExpressRouteGatewaysCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client ExpressRouteGatewaysClient) CreateOrUpdateResponder(resp *http.Response) (result ExpressRouteGateway, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified ExpressRoute gateway in a resource group. An ExpressRoute gateway resource can only be +// deleted when there are no connection subresources. +// Parameters: +// resourceGroupName - the name of the resource group. +// expressRouteGatewayName - the name of the ExpressRoute gateway. +func (client ExpressRouteGatewaysClient) Delete(ctx context.Context, resourceGroupName string, expressRouteGatewayName string) (result ExpressRouteGatewaysDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteGatewaysClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, expressRouteGatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteGatewaysClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteGatewaysClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client ExpressRouteGatewaysClient) DeletePreparer(ctx context.Context, resourceGroupName string, expressRouteGatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "expressRouteGatewayName": autorest.Encode("path", expressRouteGatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteGatewaysClient) DeleteSender(req *http.Request) (future ExpressRouteGatewaysDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client ExpressRouteGatewaysClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get fetches the details of a ExpressRoute gateway in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// expressRouteGatewayName - the name of the ExpressRoute gateway. +func (client ExpressRouteGatewaysClient) Get(ctx context.Context, resourceGroupName string, expressRouteGatewayName string) (result ExpressRouteGateway, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteGatewaysClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, expressRouteGatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteGatewaysClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteGatewaysClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteGatewaysClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client ExpressRouteGatewaysClient) GetPreparer(ctx context.Context, resourceGroupName string, expressRouteGatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "expressRouteGatewayName": autorest.Encode("path", expressRouteGatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteGatewaysClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client ExpressRouteGatewaysClient) GetResponder(resp *http.Response) (result ExpressRouteGateway, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// ListByResourceGroup lists ExpressRoute gateways in a given resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client ExpressRouteGatewaysClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result ExpressRouteGatewayList, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteGatewaysClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteGatewaysClient", "ListByResourceGroup", nil, "Failure preparing request") + return + } + + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteGatewaysClient", "ListByResourceGroup", resp, "Failure sending request") + return + } + + result, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteGatewaysClient", "ListByResourceGroup", resp, "Failure responding to request") + } + + return +} + +// ListByResourceGroupPreparer prepares the ListByResourceGroup request. +func (client ExpressRouteGatewaysClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteGatewaysClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always +// closes the http.Response Body. +func (client ExpressRouteGatewaysClient) ListByResourceGroupResponder(resp *http.Response) (result ExpressRouteGatewayList, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// ListBySubscription lists ExpressRoute gateways under a given subscription. +func (client ExpressRouteGatewaysClient) ListBySubscription(ctx context.Context) (result ExpressRouteGatewayList, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteGatewaysClient.ListBySubscription") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ListBySubscriptionPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteGatewaysClient", "ListBySubscription", nil, "Failure preparing request") + return + } + + resp, err := client.ListBySubscriptionSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteGatewaysClient", "ListBySubscription", resp, "Failure sending request") + return + } + + result, err = client.ListBySubscriptionResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteGatewaysClient", "ListBySubscription", resp, "Failure responding to request") + } + + return +} + +// ListBySubscriptionPreparer prepares the ListBySubscription request. +func (client ExpressRouteGatewaysClient) ListBySubscriptionPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteGateways", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListBySubscriptionSender sends the ListBySubscription request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteGatewaysClient) ListBySubscriptionSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListBySubscriptionResponder handles the response to the ListBySubscription request. The method always +// closes the http.Response Body. +func (client ExpressRouteGatewaysClient) ListBySubscriptionResponder(resp *http.Response) (result ExpressRouteGatewayList, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressroutelinks.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressroutelinks.go new file mode 100644 index 0000000..c34f198 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressroutelinks.go @@ -0,0 +1,235 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// ExpressRouteLinksClient is the network Client +type ExpressRouteLinksClient struct { + BaseClient +} + +// NewExpressRouteLinksClient creates an instance of the ExpressRouteLinksClient client. +func NewExpressRouteLinksClient(subscriptionID string) ExpressRouteLinksClient { + return NewExpressRouteLinksClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewExpressRouteLinksClientWithBaseURI creates an instance of the ExpressRouteLinksClient client using a custom +// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure +// stack). +func NewExpressRouteLinksClientWithBaseURI(baseURI string, subscriptionID string) ExpressRouteLinksClient { + return ExpressRouteLinksClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// Get retrieves the specified ExpressRouteLink resource. +// Parameters: +// resourceGroupName - the name of the resource group. +// expressRoutePortName - the name of the ExpressRoutePort resource. +// linkName - the name of the ExpressRouteLink resource. +func (client ExpressRouteLinksClient) Get(ctx context.Context, resourceGroupName string, expressRoutePortName string, linkName string) (result ExpressRouteLink, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteLinksClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, expressRoutePortName, linkName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteLinksClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteLinksClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteLinksClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client ExpressRouteLinksClient) GetPreparer(ctx context.Context, resourceGroupName string, expressRoutePortName string, linkName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "expressRoutePortName": autorest.Encode("path", expressRoutePortName), + "linkName": autorest.Encode("path", linkName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}/links/{linkName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteLinksClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client ExpressRouteLinksClient) GetResponder(resp *http.Response) (result ExpressRouteLink, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List retrieve the ExpressRouteLink sub-resources of the specified ExpressRoutePort resource. +// Parameters: +// resourceGroupName - the name of the resource group. +// expressRoutePortName - the name of the ExpressRoutePort resource. +func (client ExpressRouteLinksClient) List(ctx context.Context, resourceGroupName string, expressRoutePortName string) (result ExpressRouteLinkListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteLinksClient.List") + defer func() { + sc := -1 + if result.erllr.Response.Response != nil { + sc = result.erllr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, expressRoutePortName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteLinksClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.erllr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteLinksClient", "List", resp, "Failure sending request") + return + } + + result.erllr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteLinksClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client ExpressRouteLinksClient) ListPreparer(ctx context.Context, resourceGroupName string, expressRoutePortName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "expressRoutePortName": autorest.Encode("path", expressRoutePortName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}/links", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteLinksClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client ExpressRouteLinksClient) ListResponder(resp *http.Response) (result ExpressRouteLinkListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client ExpressRouteLinksClient) listNextResults(ctx context.Context, lastResults ExpressRouteLinkListResult) (result ExpressRouteLinkListResult, err error) { + req, err := lastResults.expressRouteLinkListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.ExpressRouteLinksClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.ExpressRouteLinksClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteLinksClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client ExpressRouteLinksClient) ListComplete(ctx context.Context, resourceGroupName string, expressRoutePortName string) (result ExpressRouteLinkListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteLinksClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, expressRoutePortName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressrouteports.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressrouteports.go new file mode 100644 index 0000000..12336a6 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressrouteports.go @@ -0,0 +1,574 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// ExpressRoutePortsClient is the network Client +type ExpressRoutePortsClient struct { + BaseClient +} + +// NewExpressRoutePortsClient creates an instance of the ExpressRoutePortsClient client. +func NewExpressRoutePortsClient(subscriptionID string) ExpressRoutePortsClient { + return NewExpressRoutePortsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewExpressRoutePortsClientWithBaseURI creates an instance of the ExpressRoutePortsClient client using a custom +// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure +// stack). +func NewExpressRoutePortsClientWithBaseURI(baseURI string, subscriptionID string) ExpressRoutePortsClient { + return ExpressRoutePortsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates the specified ExpressRoutePort resource. +// Parameters: +// resourceGroupName - the name of the resource group. +// expressRoutePortName - the name of the ExpressRoutePort resource. +// parameters - parameters supplied to the create ExpressRoutePort operation. +func (client ExpressRoutePortsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, expressRoutePortName string, parameters ExpressRoutePort) (result ExpressRoutePortsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRoutePortsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, expressRoutePortName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client ExpressRoutePortsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, expressRoutePortName string, parameters ExpressRoutePort) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "expressRoutePortName": autorest.Encode("path", expressRoutePortName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRoutePortsClient) CreateOrUpdateSender(req *http.Request) (future ExpressRoutePortsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client ExpressRoutePortsClient) CreateOrUpdateResponder(resp *http.Response) (result ExpressRoutePort, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified ExpressRoutePort resource. +// Parameters: +// resourceGroupName - the name of the resource group. +// expressRoutePortName - the name of the ExpressRoutePort resource. +func (client ExpressRoutePortsClient) Delete(ctx context.Context, resourceGroupName string, expressRoutePortName string) (result ExpressRoutePortsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRoutePortsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, expressRoutePortName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client ExpressRoutePortsClient) DeletePreparer(ctx context.Context, resourceGroupName string, expressRoutePortName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "expressRoutePortName": autorest.Encode("path", expressRoutePortName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRoutePortsClient) DeleteSender(req *http.Request) (future ExpressRoutePortsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client ExpressRoutePortsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get retrieves the requested ExpressRoutePort resource. +// Parameters: +// resourceGroupName - the name of the resource group. +// expressRoutePortName - the name of ExpressRoutePort. +func (client ExpressRoutePortsClient) Get(ctx context.Context, resourceGroupName string, expressRoutePortName string) (result ExpressRoutePort, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRoutePortsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, expressRoutePortName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client ExpressRoutePortsClient) GetPreparer(ctx context.Context, resourceGroupName string, expressRoutePortName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "expressRoutePortName": autorest.Encode("path", expressRoutePortName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRoutePortsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client ExpressRoutePortsClient) GetResponder(resp *http.Response) (result ExpressRoutePort, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List list all the ExpressRoutePort resources in the specified subscription. +func (client ExpressRoutePortsClient) List(ctx context.Context) (result ExpressRoutePortListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRoutePortsClient.List") + defer func() { + sc := -1 + if result.erplr.Response.Response != nil { + sc = result.erplr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.erplr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsClient", "List", resp, "Failure sending request") + return + } + + result.erplr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client ExpressRoutePortsClient) ListPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/ExpressRoutePorts", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRoutePortsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client ExpressRoutePortsClient) ListResponder(resp *http.Response) (result ExpressRoutePortListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client ExpressRoutePortsClient) listNextResults(ctx context.Context, lastResults ExpressRoutePortListResult) (result ExpressRoutePortListResult, err error) { + req, err := lastResults.expressRoutePortListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.ExpressRoutePortsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.ExpressRoutePortsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client ExpressRoutePortsClient) ListComplete(ctx context.Context) (result ExpressRoutePortListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRoutePortsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx) + return +} + +// ListByResourceGroup list all the ExpressRoutePort resources in the specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client ExpressRoutePortsClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result ExpressRoutePortListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRoutePortsClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.erplr.Response.Response != nil { + sc = result.erplr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listByResourceGroupNextResults + req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsClient", "ListByResourceGroup", nil, "Failure preparing request") + return + } + + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.erplr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsClient", "ListByResourceGroup", resp, "Failure sending request") + return + } + + result.erplr, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsClient", "ListByResourceGroup", resp, "Failure responding to request") + } + + return +} + +// ListByResourceGroupPreparer prepares the ListByResourceGroup request. +func (client ExpressRoutePortsClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRoutePortsClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always +// closes the http.Response Body. +func (client ExpressRoutePortsClient) ListByResourceGroupResponder(resp *http.Response) (result ExpressRoutePortListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listByResourceGroupNextResults retrieves the next set of results, if any. +func (client ExpressRoutePortsClient) listByResourceGroupNextResults(ctx context.Context, lastResults ExpressRoutePortListResult) (result ExpressRoutePortListResult, err error) { + req, err := lastResults.expressRoutePortListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.ExpressRoutePortsClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.ExpressRoutePortsClient", "listByResourceGroupNextResults", resp, "Failure sending next results request") + } + result, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. +func (client ExpressRoutePortsClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result ExpressRoutePortListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRoutePortsClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListByResourceGroup(ctx, resourceGroupName) + return +} + +// UpdateTags update ExpressRoutePort tags. +// Parameters: +// resourceGroupName - the name of the resource group. +// expressRoutePortName - the name of the ExpressRoutePort resource. +// parameters - parameters supplied to update ExpressRoutePort resource tags. +func (client ExpressRoutePortsClient) UpdateTags(ctx context.Context, resourceGroupName string, expressRoutePortName string, parameters TagsObject) (result ExpressRoutePort, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRoutePortsClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, expressRoutePortName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client ExpressRoutePortsClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, expressRoutePortName string, parameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "expressRoutePortName": autorest.Encode("path", expressRoutePortName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRoutePortsClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client ExpressRoutePortsClient) UpdateTagsResponder(resp *http.Response) (result ExpressRoutePort, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressrouteportslocations.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressrouteportslocations.go new file mode 100644 index 0000000..238cce2 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressrouteportslocations.go @@ -0,0 +1,228 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// ExpressRoutePortsLocationsClient is the network Client +type ExpressRoutePortsLocationsClient struct { + BaseClient +} + +// NewExpressRoutePortsLocationsClient creates an instance of the ExpressRoutePortsLocationsClient client. +func NewExpressRoutePortsLocationsClient(subscriptionID string) ExpressRoutePortsLocationsClient { + return NewExpressRoutePortsLocationsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewExpressRoutePortsLocationsClientWithBaseURI creates an instance of the ExpressRoutePortsLocationsClient client +// using a custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign +// clouds, Azure stack). +func NewExpressRoutePortsLocationsClientWithBaseURI(baseURI string, subscriptionID string) ExpressRoutePortsLocationsClient { + return ExpressRoutePortsLocationsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// Get retrieves a single ExpressRoutePort peering location, including the list of available bandwidths available at +// said peering location. +// Parameters: +// locationName - name of the requested ExpressRoutePort peering location. +func (client ExpressRoutePortsLocationsClient) Get(ctx context.Context, locationName string) (result ExpressRoutePortsLocation, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRoutePortsLocationsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, locationName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsLocationsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsLocationsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsLocationsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client ExpressRoutePortsLocationsClient) GetPreparer(ctx context.Context, locationName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "locationName": autorest.Encode("path", locationName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/ExpressRoutePortsLocations/{locationName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRoutePortsLocationsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client ExpressRoutePortsLocationsClient) GetResponder(resp *http.Response) (result ExpressRoutePortsLocation, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List retrieves all ExpressRoutePort peering locations. Does not return available bandwidths for each location. +// Available bandwidths can only be obtained when retrieving a specific peering location. +func (client ExpressRoutePortsLocationsClient) List(ctx context.Context) (result ExpressRoutePortsLocationListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRoutePortsLocationsClient.List") + defer func() { + sc := -1 + if result.erpllr.Response.Response != nil { + sc = result.erpllr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsLocationsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.erpllr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsLocationsClient", "List", resp, "Failure sending request") + return + } + + result.erpllr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsLocationsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client ExpressRoutePortsLocationsClient) ListPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/ExpressRoutePortsLocations", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRoutePortsLocationsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client ExpressRoutePortsLocationsClient) ListResponder(resp *http.Response) (result ExpressRoutePortsLocationListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client ExpressRoutePortsLocationsClient) listNextResults(ctx context.Context, lastResults ExpressRoutePortsLocationListResult) (result ExpressRoutePortsLocationListResult, err error) { + req, err := lastResults.expressRoutePortsLocationListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.ExpressRoutePortsLocationsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.ExpressRoutePortsLocationsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsLocationsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client ExpressRoutePortsLocationsClient) ListComplete(ctx context.Context) (result ExpressRoutePortsLocationListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRoutePortsLocationsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressrouteserviceproviders.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressrouteserviceproviders.go new file mode 100644 index 0000000..c0f45e5 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/expressrouteserviceproviders.go @@ -0,0 +1,152 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// ExpressRouteServiceProvidersClient is the network Client +type ExpressRouteServiceProvidersClient struct { + BaseClient +} + +// NewExpressRouteServiceProvidersClient creates an instance of the ExpressRouteServiceProvidersClient client. +func NewExpressRouteServiceProvidersClient(subscriptionID string) ExpressRouteServiceProvidersClient { + return NewExpressRouteServiceProvidersClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewExpressRouteServiceProvidersClientWithBaseURI creates an instance of the ExpressRouteServiceProvidersClient +// client using a custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI +// (sovereign clouds, Azure stack). +func NewExpressRouteServiceProvidersClientWithBaseURI(baseURI string, subscriptionID string) ExpressRouteServiceProvidersClient { + return ExpressRouteServiceProvidersClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// List gets all the available express route service providers. +func (client ExpressRouteServiceProvidersClient) List(ctx context.Context) (result ExpressRouteServiceProviderListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteServiceProvidersClient.List") + defer func() { + sc := -1 + if result.ersplr.Response.Response != nil { + sc = result.ersplr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteServiceProvidersClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.ersplr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ExpressRouteServiceProvidersClient", "List", resp, "Failure sending request") + return + } + + result.ersplr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteServiceProvidersClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client ExpressRouteServiceProvidersClient) ListPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteServiceProviders", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client ExpressRouteServiceProvidersClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client ExpressRouteServiceProvidersClient) ListResponder(resp *http.Response) (result ExpressRouteServiceProviderListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client ExpressRouteServiceProvidersClient) listNextResults(ctx context.Context, lastResults ExpressRouteServiceProviderListResult) (result ExpressRouteServiceProviderListResult, err error) { + req, err := lastResults.expressRouteServiceProviderListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.ExpressRouteServiceProvidersClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.ExpressRouteServiceProvidersClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteServiceProvidersClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client ExpressRouteServiceProvidersClient) ListComplete(ctx context.Context) (result ExpressRouteServiceProviderListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteServiceProvidersClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/firewallpolicies.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/firewallpolicies.go new file mode 100644 index 0000000..dbb0ce2 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/firewallpolicies.go @@ -0,0 +1,499 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// FirewallPoliciesClient is the network Client +type FirewallPoliciesClient struct { + BaseClient +} + +// NewFirewallPoliciesClient creates an instance of the FirewallPoliciesClient client. +func NewFirewallPoliciesClient(subscriptionID string) FirewallPoliciesClient { + return NewFirewallPoliciesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewFirewallPoliciesClientWithBaseURI creates an instance of the FirewallPoliciesClient client using a custom +// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure +// stack). +func NewFirewallPoliciesClientWithBaseURI(baseURI string, subscriptionID string) FirewallPoliciesClient { + return FirewallPoliciesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates the specified Firewall Policy. +// Parameters: +// resourceGroupName - the name of the resource group. +// firewallPolicyName - the name of the Firewall Policy. +// parameters - parameters supplied to the create or update Firewall Policy operation. +func (client FirewallPoliciesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, firewallPolicyName string, parameters FirewallPolicy) (result FirewallPoliciesCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/FirewallPoliciesClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, firewallPolicyName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPoliciesClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPoliciesClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client FirewallPoliciesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, firewallPolicyName string, parameters FirewallPolicy) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "firewallPolicyName": autorest.Encode("path", firewallPolicyName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client FirewallPoliciesClient) CreateOrUpdateSender(req *http.Request) (future FirewallPoliciesCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client FirewallPoliciesClient) CreateOrUpdateResponder(resp *http.Response) (result FirewallPolicy, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified Firewall Policy. +// Parameters: +// resourceGroupName - the name of the resource group. +// firewallPolicyName - the name of the Firewall Policy. +func (client FirewallPoliciesClient) Delete(ctx context.Context, resourceGroupName string, firewallPolicyName string) (result FirewallPoliciesDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/FirewallPoliciesClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, firewallPolicyName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPoliciesClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPoliciesClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client FirewallPoliciesClient) DeletePreparer(ctx context.Context, resourceGroupName string, firewallPolicyName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "firewallPolicyName": autorest.Encode("path", firewallPolicyName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client FirewallPoliciesClient) DeleteSender(req *http.Request) (future FirewallPoliciesDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client FirewallPoliciesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified Firewall Policy. +// Parameters: +// resourceGroupName - the name of the resource group. +// firewallPolicyName - the name of the Firewall Policy. +// expand - expands referenced resources. +func (client FirewallPoliciesClient) Get(ctx context.Context, resourceGroupName string, firewallPolicyName string, expand string) (result FirewallPolicy, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/FirewallPoliciesClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, firewallPolicyName, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPoliciesClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.FirewallPoliciesClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPoliciesClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client FirewallPoliciesClient) GetPreparer(ctx context.Context, resourceGroupName string, firewallPolicyName string, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "firewallPolicyName": autorest.Encode("path", firewallPolicyName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client FirewallPoliciesClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client FirewallPoliciesClient) GetResponder(resp *http.Response) (result FirewallPolicy, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List lists all Firewall Policies in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client FirewallPoliciesClient) List(ctx context.Context, resourceGroupName string) (result FirewallPolicyListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/FirewallPoliciesClient.List") + defer func() { + sc := -1 + if result.fplr.Response.Response != nil { + sc = result.fplr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPoliciesClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.fplr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.FirewallPoliciesClient", "List", resp, "Failure sending request") + return + } + + result.fplr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPoliciesClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client FirewallPoliciesClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client FirewallPoliciesClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client FirewallPoliciesClient) ListResponder(resp *http.Response) (result FirewallPolicyListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client FirewallPoliciesClient) listNextResults(ctx context.Context, lastResults FirewallPolicyListResult) (result FirewallPolicyListResult, err error) { + req, err := lastResults.firewallPolicyListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.FirewallPoliciesClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.FirewallPoliciesClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPoliciesClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client FirewallPoliciesClient) ListComplete(ctx context.Context, resourceGroupName string) (result FirewallPolicyListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/FirewallPoliciesClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName) + return +} + +// ListAll gets all the Firewall Policies in a subscription. +func (client FirewallPoliciesClient) ListAll(ctx context.Context) (result FirewallPolicyListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/FirewallPoliciesClient.ListAll") + defer func() { + sc := -1 + if result.fplr.Response.Response != nil { + sc = result.fplr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listAllNextResults + req, err := client.ListAllPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPoliciesClient", "ListAll", nil, "Failure preparing request") + return + } + + resp, err := client.ListAllSender(req) + if err != nil { + result.fplr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.FirewallPoliciesClient", "ListAll", resp, "Failure sending request") + return + } + + result.fplr, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPoliciesClient", "ListAll", resp, "Failure responding to request") + } + + return +} + +// ListAllPreparer prepares the ListAll request. +func (client FirewallPoliciesClient) ListAllPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/firewallPolicies", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAllSender sends the ListAll request. The method will close the +// http.Response Body if it receives an error. +func (client FirewallPoliciesClient) ListAllSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAllResponder handles the response to the ListAll request. The method always +// closes the http.Response Body. +func (client FirewallPoliciesClient) ListAllResponder(resp *http.Response) (result FirewallPolicyListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listAllNextResults retrieves the next set of results, if any. +func (client FirewallPoliciesClient) listAllNextResults(ctx context.Context, lastResults FirewallPolicyListResult) (result FirewallPolicyListResult, err error) { + req, err := lastResults.firewallPolicyListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.FirewallPoliciesClient", "listAllNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListAllSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.FirewallPoliciesClient", "listAllNextResults", resp, "Failure sending next results request") + } + result, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPoliciesClient", "listAllNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListAllComplete enumerates all values, automatically crossing page boundaries as required. +func (client FirewallPoliciesClient) ListAllComplete(ctx context.Context) (result FirewallPolicyListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/FirewallPoliciesClient.ListAll") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListAll(ctx) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/firewallpolicyrulegroups.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/firewallpolicyrulegroups.go new file mode 100644 index 0000000..a7c29e0 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/firewallpolicyrulegroups.go @@ -0,0 +1,407 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// FirewallPolicyRuleGroupsClient is the network Client +type FirewallPolicyRuleGroupsClient struct { + BaseClient +} + +// NewFirewallPolicyRuleGroupsClient creates an instance of the FirewallPolicyRuleGroupsClient client. +func NewFirewallPolicyRuleGroupsClient(subscriptionID string) FirewallPolicyRuleGroupsClient { + return NewFirewallPolicyRuleGroupsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewFirewallPolicyRuleGroupsClientWithBaseURI creates an instance of the FirewallPolicyRuleGroupsClient client using +// a custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign +// clouds, Azure stack). +func NewFirewallPolicyRuleGroupsClientWithBaseURI(baseURI string, subscriptionID string) FirewallPolicyRuleGroupsClient { + return FirewallPolicyRuleGroupsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates the specified FirewallPolicyRuleGroup. +// Parameters: +// resourceGroupName - the name of the resource group. +// firewallPolicyName - the name of the Firewall Policy. +// ruleGroupName - the name of the FirewallPolicyRuleGroup. +// parameters - parameters supplied to the create or update FirewallPolicyRuleGroup operation. +func (client FirewallPolicyRuleGroupsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, firewallPolicyName string, ruleGroupName string, parameters FirewallPolicyRuleGroup) (result FirewallPolicyRuleGroupsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/FirewallPolicyRuleGroupsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.FirewallPolicyRuleGroupProperties", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.FirewallPolicyRuleGroupProperties.Priority", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.FirewallPolicyRuleGroupProperties.Priority", Name: validation.InclusiveMaximum, Rule: int64(65000), Chain: nil}, + {Target: "parameters.FirewallPolicyRuleGroupProperties.Priority", Name: validation.InclusiveMinimum, Rule: int64(100), Chain: nil}, + }}, + }}}}}); err != nil { + return result, validation.NewError("network.FirewallPolicyRuleGroupsClient", "CreateOrUpdate", err.Error()) + } + + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, firewallPolicyName, ruleGroupName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPolicyRuleGroupsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPolicyRuleGroupsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client FirewallPolicyRuleGroupsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, firewallPolicyName string, ruleGroupName string, parameters FirewallPolicyRuleGroup) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "firewallPolicyName": autorest.Encode("path", firewallPolicyName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "ruleGroupName": autorest.Encode("path", ruleGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + parameters.Type = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/ruleGroups/{ruleGroupName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client FirewallPolicyRuleGroupsClient) CreateOrUpdateSender(req *http.Request) (future FirewallPolicyRuleGroupsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client FirewallPolicyRuleGroupsClient) CreateOrUpdateResponder(resp *http.Response) (result FirewallPolicyRuleGroup, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified FirewallPolicyRuleGroup. +// Parameters: +// resourceGroupName - the name of the resource group. +// firewallPolicyName - the name of the Firewall Policy. +// ruleGroupName - the name of the FirewallPolicyRuleGroup. +func (client FirewallPolicyRuleGroupsClient) Delete(ctx context.Context, resourceGroupName string, firewallPolicyName string, ruleGroupName string) (result FirewallPolicyRuleGroupsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/FirewallPolicyRuleGroupsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, firewallPolicyName, ruleGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPolicyRuleGroupsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPolicyRuleGroupsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client FirewallPolicyRuleGroupsClient) DeletePreparer(ctx context.Context, resourceGroupName string, firewallPolicyName string, ruleGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "firewallPolicyName": autorest.Encode("path", firewallPolicyName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "ruleGroupName": autorest.Encode("path", ruleGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/ruleGroups/{ruleGroupName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client FirewallPolicyRuleGroupsClient) DeleteSender(req *http.Request) (future FirewallPolicyRuleGroupsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client FirewallPolicyRuleGroupsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified FirewallPolicyRuleGroup. +// Parameters: +// resourceGroupName - the name of the resource group. +// firewallPolicyName - the name of the Firewall Policy. +// ruleGroupName - the name of the FirewallPolicyRuleGroup. +func (client FirewallPolicyRuleGroupsClient) Get(ctx context.Context, resourceGroupName string, firewallPolicyName string, ruleGroupName string) (result FirewallPolicyRuleGroup, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/FirewallPolicyRuleGroupsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, firewallPolicyName, ruleGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPolicyRuleGroupsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.FirewallPolicyRuleGroupsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPolicyRuleGroupsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client FirewallPolicyRuleGroupsClient) GetPreparer(ctx context.Context, resourceGroupName string, firewallPolicyName string, ruleGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "firewallPolicyName": autorest.Encode("path", firewallPolicyName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "ruleGroupName": autorest.Encode("path", ruleGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/ruleGroups/{ruleGroupName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client FirewallPolicyRuleGroupsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client FirewallPolicyRuleGroupsClient) GetResponder(resp *http.Response) (result FirewallPolicyRuleGroup, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List lists all FirewallPolicyRuleGroups in a FirewallPolicy resource. +// Parameters: +// resourceGroupName - the name of the resource group. +// firewallPolicyName - the name of the Firewall Policy. +func (client FirewallPolicyRuleGroupsClient) List(ctx context.Context, resourceGroupName string, firewallPolicyName string) (result FirewallPolicyRuleGroupListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/FirewallPolicyRuleGroupsClient.List") + defer func() { + sc := -1 + if result.fprglr.Response.Response != nil { + sc = result.fprglr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, firewallPolicyName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPolicyRuleGroupsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.fprglr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.FirewallPolicyRuleGroupsClient", "List", resp, "Failure sending request") + return + } + + result.fprglr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPolicyRuleGroupsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client FirewallPolicyRuleGroupsClient) ListPreparer(ctx context.Context, resourceGroupName string, firewallPolicyName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "firewallPolicyName": autorest.Encode("path", firewallPolicyName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/firewallPolicies/{firewallPolicyName}/ruleGroups", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client FirewallPolicyRuleGroupsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client FirewallPolicyRuleGroupsClient) ListResponder(resp *http.Response) (result FirewallPolicyRuleGroupListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client FirewallPolicyRuleGroupsClient) listNextResults(ctx context.Context, lastResults FirewallPolicyRuleGroupListResult) (result FirewallPolicyRuleGroupListResult, err error) { + req, err := lastResults.firewallPolicyRuleGroupListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.FirewallPolicyRuleGroupsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.FirewallPolicyRuleGroupsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPolicyRuleGroupsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client FirewallPolicyRuleGroupsClient) ListComplete(ctx context.Context, resourceGroupName string, firewallPolicyName string) (result FirewallPolicyRuleGroupListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/FirewallPolicyRuleGroupsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, firewallPolicyName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/hubvirtualnetworkconnections.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/hubvirtualnetworkconnections.go new file mode 100644 index 0000000..ccdd271 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/hubvirtualnetworkconnections.go @@ -0,0 +1,235 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// HubVirtualNetworkConnectionsClient is the network Client +type HubVirtualNetworkConnectionsClient struct { + BaseClient +} + +// NewHubVirtualNetworkConnectionsClient creates an instance of the HubVirtualNetworkConnectionsClient client. +func NewHubVirtualNetworkConnectionsClient(subscriptionID string) HubVirtualNetworkConnectionsClient { + return NewHubVirtualNetworkConnectionsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewHubVirtualNetworkConnectionsClientWithBaseURI creates an instance of the HubVirtualNetworkConnectionsClient +// client using a custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI +// (sovereign clouds, Azure stack). +func NewHubVirtualNetworkConnectionsClientWithBaseURI(baseURI string, subscriptionID string) HubVirtualNetworkConnectionsClient { + return HubVirtualNetworkConnectionsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// Get retrieves the details of a HubVirtualNetworkConnection. +// Parameters: +// resourceGroupName - the resource group name of the VirtualHub. +// virtualHubName - the name of the VirtualHub. +// connectionName - the name of the vpn connection. +func (client HubVirtualNetworkConnectionsClient) Get(ctx context.Context, resourceGroupName string, virtualHubName string, connectionName string) (result HubVirtualNetworkConnection, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/HubVirtualNetworkConnectionsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, virtualHubName, connectionName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.HubVirtualNetworkConnectionsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.HubVirtualNetworkConnectionsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.HubVirtualNetworkConnectionsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client HubVirtualNetworkConnectionsClient) GetPreparer(ctx context.Context, resourceGroupName string, virtualHubName string, connectionName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "connectionName": autorest.Encode("path", connectionName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualHubName": autorest.Encode("path", virtualHubName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubVirtualNetworkConnections/{connectionName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client HubVirtualNetworkConnectionsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client HubVirtualNetworkConnectionsClient) GetResponder(resp *http.Response) (result HubVirtualNetworkConnection, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List retrieves the details of all HubVirtualNetworkConnections. +// Parameters: +// resourceGroupName - the resource group name of the VirtualHub. +// virtualHubName - the name of the VirtualHub. +func (client HubVirtualNetworkConnectionsClient) List(ctx context.Context, resourceGroupName string, virtualHubName string) (result ListHubVirtualNetworkConnectionsResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/HubVirtualNetworkConnectionsClient.List") + defer func() { + sc := -1 + if result.lhvncr.Response.Response != nil { + sc = result.lhvncr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, virtualHubName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.HubVirtualNetworkConnectionsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.lhvncr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.HubVirtualNetworkConnectionsClient", "List", resp, "Failure sending request") + return + } + + result.lhvncr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.HubVirtualNetworkConnectionsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client HubVirtualNetworkConnectionsClient) ListPreparer(ctx context.Context, resourceGroupName string, virtualHubName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualHubName": autorest.Encode("path", virtualHubName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/hubVirtualNetworkConnections", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client HubVirtualNetworkConnectionsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client HubVirtualNetworkConnectionsClient) ListResponder(resp *http.Response) (result ListHubVirtualNetworkConnectionsResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client HubVirtualNetworkConnectionsClient) listNextResults(ctx context.Context, lastResults ListHubVirtualNetworkConnectionsResult) (result ListHubVirtualNetworkConnectionsResult, err error) { + req, err := lastResults.listHubVirtualNetworkConnectionsResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.HubVirtualNetworkConnectionsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.HubVirtualNetworkConnectionsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.HubVirtualNetworkConnectionsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client HubVirtualNetworkConnectionsClient) ListComplete(ctx context.Context, resourceGroupName string, virtualHubName string) (result ListHubVirtualNetworkConnectionsResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/HubVirtualNetworkConnectionsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, virtualHubName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/inboundnatrules.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/inboundnatrules.go new file mode 100644 index 0000000..b90e19e --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/inboundnatrules.go @@ -0,0 +1,418 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// InboundNatRulesClient is the network Client +type InboundNatRulesClient struct { + BaseClient +} + +// NewInboundNatRulesClient creates an instance of the InboundNatRulesClient client. +func NewInboundNatRulesClient(subscriptionID string) InboundNatRulesClient { + return NewInboundNatRulesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewInboundNatRulesClientWithBaseURI creates an instance of the InboundNatRulesClient client using a custom endpoint. +// Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewInboundNatRulesClientWithBaseURI(baseURI string, subscriptionID string) InboundNatRulesClient { + return InboundNatRulesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a load balancer inbound nat rule. +// Parameters: +// resourceGroupName - the name of the resource group. +// loadBalancerName - the name of the load balancer. +// inboundNatRuleName - the name of the inbound nat rule. +// inboundNatRuleParameters - parameters supplied to the create or update inbound nat rule operation. +func (client InboundNatRulesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, loadBalancerName string, inboundNatRuleName string, inboundNatRuleParameters InboundNatRule) (result InboundNatRulesCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InboundNatRulesClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: inboundNatRuleParameters, + Constraints: []validation.Constraint{{Target: "inboundNatRuleParameters.InboundNatRulePropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "inboundNatRuleParameters.InboundNatRulePropertiesFormat.BackendIPConfiguration", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "inboundNatRuleParameters.InboundNatRulePropertiesFormat.BackendIPConfiguration.InterfaceIPConfigurationPropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "inboundNatRuleParameters.InboundNatRulePropertiesFormat.BackendIPConfiguration.InterfaceIPConfigurationPropertiesFormat.PublicIPAddress", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "inboundNatRuleParameters.InboundNatRulePropertiesFormat.BackendIPConfiguration.InterfaceIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "inboundNatRuleParameters.InboundNatRulePropertiesFormat.BackendIPConfiguration.InterfaceIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat.IPConfiguration", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "inboundNatRuleParameters.InboundNatRulePropertiesFormat.BackendIPConfiguration.InterfaceIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat.IPConfiguration.IPConfigurationPropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "inboundNatRuleParameters.InboundNatRulePropertiesFormat.BackendIPConfiguration.InterfaceIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat.IPConfiguration.IPConfigurationPropertiesFormat.PublicIPAddress", Name: validation.Null, Rule: false, Chain: nil}}}, + }}, + }}, + }}, + }}, + }}, + }}}}}); err != nil { + return result, validation.NewError("network.InboundNatRulesClient", "CreateOrUpdate", err.Error()) + } + + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, loadBalancerName, inboundNatRuleName, inboundNatRuleParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InboundNatRulesClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InboundNatRulesClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client InboundNatRulesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, loadBalancerName string, inboundNatRuleName string, inboundNatRuleParameters InboundNatRule) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "inboundNatRuleName": autorest.Encode("path", inboundNatRuleName), + "loadBalancerName": autorest.Encode("path", loadBalancerName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + inboundNatRuleParameters.Etag = nil + inboundNatRuleParameters.Type = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/inboundNatRules/{inboundNatRuleName}", pathParameters), + autorest.WithJSON(inboundNatRuleParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client InboundNatRulesClient) CreateOrUpdateSender(req *http.Request) (future InboundNatRulesCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client InboundNatRulesClient) CreateOrUpdateResponder(resp *http.Response) (result InboundNatRule, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified load balancer inbound nat rule. +// Parameters: +// resourceGroupName - the name of the resource group. +// loadBalancerName - the name of the load balancer. +// inboundNatRuleName - the name of the inbound nat rule. +func (client InboundNatRulesClient) Delete(ctx context.Context, resourceGroupName string, loadBalancerName string, inboundNatRuleName string) (result InboundNatRulesDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InboundNatRulesClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, loadBalancerName, inboundNatRuleName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InboundNatRulesClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InboundNatRulesClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client InboundNatRulesClient) DeletePreparer(ctx context.Context, resourceGroupName string, loadBalancerName string, inboundNatRuleName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "inboundNatRuleName": autorest.Encode("path", inboundNatRuleName), + "loadBalancerName": autorest.Encode("path", loadBalancerName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/inboundNatRules/{inboundNatRuleName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client InboundNatRulesClient) DeleteSender(req *http.Request) (future InboundNatRulesDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client InboundNatRulesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified load balancer inbound nat rule. +// Parameters: +// resourceGroupName - the name of the resource group. +// loadBalancerName - the name of the load balancer. +// inboundNatRuleName - the name of the inbound nat rule. +// expand - expands referenced resources. +func (client InboundNatRulesClient) Get(ctx context.Context, resourceGroupName string, loadBalancerName string, inboundNatRuleName string, expand string) (result InboundNatRule, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InboundNatRulesClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, loadBalancerName, inboundNatRuleName, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InboundNatRulesClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.InboundNatRulesClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InboundNatRulesClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client InboundNatRulesClient) GetPreparer(ctx context.Context, resourceGroupName string, loadBalancerName string, inboundNatRuleName string, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "inboundNatRuleName": autorest.Encode("path", inboundNatRuleName), + "loadBalancerName": autorest.Encode("path", loadBalancerName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/inboundNatRules/{inboundNatRuleName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client InboundNatRulesClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client InboundNatRulesClient) GetResponder(resp *http.Response) (result InboundNatRule, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all the inbound nat rules in a load balancer. +// Parameters: +// resourceGroupName - the name of the resource group. +// loadBalancerName - the name of the load balancer. +func (client InboundNatRulesClient) List(ctx context.Context, resourceGroupName string, loadBalancerName string) (result InboundNatRuleListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InboundNatRulesClient.List") + defer func() { + sc := -1 + if result.inrlr.Response.Response != nil { + sc = result.inrlr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, loadBalancerName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InboundNatRulesClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.inrlr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.InboundNatRulesClient", "List", resp, "Failure sending request") + return + } + + result.inrlr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InboundNatRulesClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client InboundNatRulesClient) ListPreparer(ctx context.Context, resourceGroupName string, loadBalancerName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "loadBalancerName": autorest.Encode("path", loadBalancerName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/inboundNatRules", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client InboundNatRulesClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client InboundNatRulesClient) ListResponder(resp *http.Response) (result InboundNatRuleListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client InboundNatRulesClient) listNextResults(ctx context.Context, lastResults InboundNatRuleListResult) (result InboundNatRuleListResult, err error) { + req, err := lastResults.inboundNatRuleListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.InboundNatRulesClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.InboundNatRulesClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InboundNatRulesClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client InboundNatRulesClient) ListComplete(ctx context.Context, resourceGroupName string, loadBalancerName string) (result InboundNatRuleListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InboundNatRulesClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, loadBalancerName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/interfaceipconfigurations.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/interfaceipconfigurations.go new file mode 100644 index 0000000..766c94c --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/interfaceipconfigurations.go @@ -0,0 +1,235 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// InterfaceIPConfigurationsClient is the network Client +type InterfaceIPConfigurationsClient struct { + BaseClient +} + +// NewInterfaceIPConfigurationsClient creates an instance of the InterfaceIPConfigurationsClient client. +func NewInterfaceIPConfigurationsClient(subscriptionID string) InterfaceIPConfigurationsClient { + return NewInterfaceIPConfigurationsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewInterfaceIPConfigurationsClientWithBaseURI creates an instance of the InterfaceIPConfigurationsClient client +// using a custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign +// clouds, Azure stack). +func NewInterfaceIPConfigurationsClientWithBaseURI(baseURI string, subscriptionID string) InterfaceIPConfigurationsClient { + return InterfaceIPConfigurationsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// Get gets the specified network interface ip configuration. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkInterfaceName - the name of the network interface. +// IPConfigurationName - the name of the ip configuration name. +func (client InterfaceIPConfigurationsClient) Get(ctx context.Context, resourceGroupName string, networkInterfaceName string, IPConfigurationName string) (result InterfaceIPConfiguration, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfaceIPConfigurationsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, networkInterfaceName, IPConfigurationName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfaceIPConfigurationsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.InterfaceIPConfigurationsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfaceIPConfigurationsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client InterfaceIPConfigurationsClient) GetPreparer(ctx context.Context, resourceGroupName string, networkInterfaceName string, IPConfigurationName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "ipConfigurationName": autorest.Encode("path", IPConfigurationName), + "networkInterfaceName": autorest.Encode("path", networkInterfaceName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/ipConfigurations/{ipConfigurationName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client InterfaceIPConfigurationsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client InterfaceIPConfigurationsClient) GetResponder(resp *http.Response) (result InterfaceIPConfiguration, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List get all ip configurations in a network interface. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkInterfaceName - the name of the network interface. +func (client InterfaceIPConfigurationsClient) List(ctx context.Context, resourceGroupName string, networkInterfaceName string) (result InterfaceIPConfigurationListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfaceIPConfigurationsClient.List") + defer func() { + sc := -1 + if result.iiclr.Response.Response != nil { + sc = result.iiclr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, networkInterfaceName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfaceIPConfigurationsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.iiclr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.InterfaceIPConfigurationsClient", "List", resp, "Failure sending request") + return + } + + result.iiclr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfaceIPConfigurationsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client InterfaceIPConfigurationsClient) ListPreparer(ctx context.Context, resourceGroupName string, networkInterfaceName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkInterfaceName": autorest.Encode("path", networkInterfaceName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/ipConfigurations", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client InterfaceIPConfigurationsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client InterfaceIPConfigurationsClient) ListResponder(resp *http.Response) (result InterfaceIPConfigurationListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client InterfaceIPConfigurationsClient) listNextResults(ctx context.Context, lastResults InterfaceIPConfigurationListResult) (result InterfaceIPConfigurationListResult, err error) { + req, err := lastResults.interfaceIPConfigurationListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.InterfaceIPConfigurationsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.InterfaceIPConfigurationsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfaceIPConfigurationsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client InterfaceIPConfigurationsClient) ListComplete(ctx context.Context, resourceGroupName string, networkInterfaceName string) (result InterfaceIPConfigurationListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfaceIPConfigurationsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, networkInterfaceName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/interfaceloadbalancers.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/interfaceloadbalancers.go new file mode 100644 index 0000000..f4b09d0 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/interfaceloadbalancers.go @@ -0,0 +1,157 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// InterfaceLoadBalancersClient is the network Client +type InterfaceLoadBalancersClient struct { + BaseClient +} + +// NewInterfaceLoadBalancersClient creates an instance of the InterfaceLoadBalancersClient client. +func NewInterfaceLoadBalancersClient(subscriptionID string) InterfaceLoadBalancersClient { + return NewInterfaceLoadBalancersClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewInterfaceLoadBalancersClientWithBaseURI creates an instance of the InterfaceLoadBalancersClient client using a +// custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, +// Azure stack). +func NewInterfaceLoadBalancersClientWithBaseURI(baseURI string, subscriptionID string) InterfaceLoadBalancersClient { + return InterfaceLoadBalancersClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// List list all load balancers in a network interface. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkInterfaceName - the name of the network interface. +func (client InterfaceLoadBalancersClient) List(ctx context.Context, resourceGroupName string, networkInterfaceName string) (result InterfaceLoadBalancerListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfaceLoadBalancersClient.List") + defer func() { + sc := -1 + if result.ilblr.Response.Response != nil { + sc = result.ilblr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, networkInterfaceName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfaceLoadBalancersClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.ilblr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.InterfaceLoadBalancersClient", "List", resp, "Failure sending request") + return + } + + result.ilblr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfaceLoadBalancersClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client InterfaceLoadBalancersClient) ListPreparer(ctx context.Context, resourceGroupName string, networkInterfaceName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkInterfaceName": autorest.Encode("path", networkInterfaceName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/loadBalancers", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client InterfaceLoadBalancersClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client InterfaceLoadBalancersClient) ListResponder(resp *http.Response) (result InterfaceLoadBalancerListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client InterfaceLoadBalancersClient) listNextResults(ctx context.Context, lastResults InterfaceLoadBalancerListResult) (result InterfaceLoadBalancerListResult, err error) { + req, err := lastResults.interfaceLoadBalancerListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.InterfaceLoadBalancersClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.InterfaceLoadBalancersClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfaceLoadBalancersClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client InterfaceLoadBalancersClient) ListComplete(ctx context.Context, resourceGroupName string, networkInterfaceName string) (result InterfaceLoadBalancerListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfaceLoadBalancersClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, networkInterfaceName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/interfacesgroup.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/interfacesgroup.go new file mode 100644 index 0000000..9397887 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/interfacesgroup.go @@ -0,0 +1,1254 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// InterfacesClient is the network Client +type InterfacesClient struct { + BaseClient +} + +// NewInterfacesClient creates an instance of the InterfacesClient client. +func NewInterfacesClient(subscriptionID string) InterfacesClient { + return NewInterfacesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewInterfacesClientWithBaseURI creates an instance of the InterfacesClient client using a custom endpoint. Use this +// when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewInterfacesClientWithBaseURI(baseURI string, subscriptionID string) InterfacesClient { + return InterfacesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a network interface. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkInterfaceName - the name of the network interface. +// parameters - parameters supplied to the create or update network interface operation. +func (client InterfacesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, networkInterfaceName string, parameters Interface) (result InterfacesCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, networkInterfaceName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client InterfacesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, networkInterfaceName string, parameters Interface) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkInterfaceName": autorest.Encode("path", networkInterfaceName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client InterfacesClient) CreateOrUpdateSender(req *http.Request) (future InterfacesCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client InterfacesClient) CreateOrUpdateResponder(resp *http.Response) (result Interface, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified network interface. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkInterfaceName - the name of the network interface. +func (client InterfacesClient) Delete(ctx context.Context, resourceGroupName string, networkInterfaceName string) (result InterfacesDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, networkInterfaceName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client InterfacesClient) DeletePreparer(ctx context.Context, resourceGroupName string, networkInterfaceName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkInterfaceName": autorest.Encode("path", networkInterfaceName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client InterfacesClient) DeleteSender(req *http.Request) (future InterfacesDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client InterfacesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets information about the specified network interface. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkInterfaceName - the name of the network interface. +// expand - expands referenced resources. +func (client InterfacesClient) Get(ctx context.Context, resourceGroupName string, networkInterfaceName string, expand string) (result Interface, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, networkInterfaceName, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client InterfacesClient) GetPreparer(ctx context.Context, resourceGroupName string, networkInterfaceName string, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkInterfaceName": autorest.Encode("path", networkInterfaceName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client InterfacesClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client InterfacesClient) GetResponder(resp *http.Response) (result Interface, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetEffectiveRouteTable gets all route tables applied to a network interface. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkInterfaceName - the name of the network interface. +func (client InterfacesClient) GetEffectiveRouteTable(ctx context.Context, resourceGroupName string, networkInterfaceName string) (result InterfacesGetEffectiveRouteTableFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.GetEffectiveRouteTable") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetEffectiveRouteTablePreparer(ctx, resourceGroupName, networkInterfaceName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "GetEffectiveRouteTable", nil, "Failure preparing request") + return + } + + result, err = client.GetEffectiveRouteTableSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "GetEffectiveRouteTable", result.Response(), "Failure sending request") + return + } + + return +} + +// GetEffectiveRouteTablePreparer prepares the GetEffectiveRouteTable request. +func (client InterfacesClient) GetEffectiveRouteTablePreparer(ctx context.Context, resourceGroupName string, networkInterfaceName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkInterfaceName": autorest.Encode("path", networkInterfaceName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/effectiveRouteTable", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetEffectiveRouteTableSender sends the GetEffectiveRouteTable request. The method will close the +// http.Response Body if it receives an error. +func (client InterfacesClient) GetEffectiveRouteTableSender(req *http.Request) (future InterfacesGetEffectiveRouteTableFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// GetEffectiveRouteTableResponder handles the response to the GetEffectiveRouteTable request. The method always +// closes the http.Response Body. +func (client InterfacesClient) GetEffectiveRouteTableResponder(resp *http.Response) (result EffectiveRouteListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetVirtualMachineScaleSetIPConfiguration get the specified network interface ip configuration in a virtual machine +// scale set. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualMachineScaleSetName - the name of the virtual machine scale set. +// virtualmachineIndex - the virtual machine index. +// networkInterfaceName - the name of the network interface. +// IPConfigurationName - the name of the ip configuration. +// expand - expands referenced resources. +func (client InterfacesClient) GetVirtualMachineScaleSetIPConfiguration(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string, networkInterfaceName string, IPConfigurationName string, expand string) (result InterfaceIPConfiguration, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.GetVirtualMachineScaleSetIPConfiguration") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetVirtualMachineScaleSetIPConfigurationPreparer(ctx, resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex, networkInterfaceName, IPConfigurationName, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "GetVirtualMachineScaleSetIPConfiguration", nil, "Failure preparing request") + return + } + + resp, err := client.GetVirtualMachineScaleSetIPConfigurationSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "GetVirtualMachineScaleSetIPConfiguration", resp, "Failure sending request") + return + } + + result, err = client.GetVirtualMachineScaleSetIPConfigurationResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "GetVirtualMachineScaleSetIPConfiguration", resp, "Failure responding to request") + } + + return +} + +// GetVirtualMachineScaleSetIPConfigurationPreparer prepares the GetVirtualMachineScaleSetIPConfiguration request. +func (client InterfacesClient) GetVirtualMachineScaleSetIPConfigurationPreparer(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string, networkInterfaceName string, IPConfigurationName string, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "ipConfigurationName": autorest.Encode("path", IPConfigurationName), + "networkInterfaceName": autorest.Encode("path", networkInterfaceName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualmachineIndex": autorest.Encode("path", virtualmachineIndex), + "virtualMachineScaleSetName": autorest.Encode("path", virtualMachineScaleSetName), + } + + const APIVersion = "2018-10-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}/ipConfigurations/{ipConfigurationName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetVirtualMachineScaleSetIPConfigurationSender sends the GetVirtualMachineScaleSetIPConfiguration request. The method will close the +// http.Response Body if it receives an error. +func (client InterfacesClient) GetVirtualMachineScaleSetIPConfigurationSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetVirtualMachineScaleSetIPConfigurationResponder handles the response to the GetVirtualMachineScaleSetIPConfiguration request. The method always +// closes the http.Response Body. +func (client InterfacesClient) GetVirtualMachineScaleSetIPConfigurationResponder(resp *http.Response) (result InterfaceIPConfiguration, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetVirtualMachineScaleSetNetworkInterface get the specified network interface in a virtual machine scale set. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualMachineScaleSetName - the name of the virtual machine scale set. +// virtualmachineIndex - the virtual machine index. +// networkInterfaceName - the name of the network interface. +// expand - expands referenced resources. +func (client InterfacesClient) GetVirtualMachineScaleSetNetworkInterface(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string, networkInterfaceName string, expand string) (result Interface, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.GetVirtualMachineScaleSetNetworkInterface") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetVirtualMachineScaleSetNetworkInterfacePreparer(ctx, resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex, networkInterfaceName, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "GetVirtualMachineScaleSetNetworkInterface", nil, "Failure preparing request") + return + } + + resp, err := client.GetVirtualMachineScaleSetNetworkInterfaceSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "GetVirtualMachineScaleSetNetworkInterface", resp, "Failure sending request") + return + } + + result, err = client.GetVirtualMachineScaleSetNetworkInterfaceResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "GetVirtualMachineScaleSetNetworkInterface", resp, "Failure responding to request") + } + + return +} + +// GetVirtualMachineScaleSetNetworkInterfacePreparer prepares the GetVirtualMachineScaleSetNetworkInterface request. +func (client InterfacesClient) GetVirtualMachineScaleSetNetworkInterfacePreparer(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string, networkInterfaceName string, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkInterfaceName": autorest.Encode("path", networkInterfaceName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualmachineIndex": autorest.Encode("path", virtualmachineIndex), + "virtualMachineScaleSetName": autorest.Encode("path", virtualMachineScaleSetName), + } + + const APIVersion = "2018-10-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetVirtualMachineScaleSetNetworkInterfaceSender sends the GetVirtualMachineScaleSetNetworkInterface request. The method will close the +// http.Response Body if it receives an error. +func (client InterfacesClient) GetVirtualMachineScaleSetNetworkInterfaceSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetVirtualMachineScaleSetNetworkInterfaceResponder handles the response to the GetVirtualMachineScaleSetNetworkInterface request. The method always +// closes the http.Response Body. +func (client InterfacesClient) GetVirtualMachineScaleSetNetworkInterfaceResponder(resp *http.Response) (result Interface, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all network interfaces in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client InterfacesClient) List(ctx context.Context, resourceGroupName string) (result InterfaceListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.List") + defer func() { + sc := -1 + if result.ilr.Response.Response != nil { + sc = result.ilr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.ilr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "List", resp, "Failure sending request") + return + } + + result.ilr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client InterfacesClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client InterfacesClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client InterfacesClient) ListResponder(resp *http.Response) (result InterfaceListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client InterfacesClient) listNextResults(ctx context.Context, lastResults InterfaceListResult) (result InterfaceListResult, err error) { + req, err := lastResults.interfaceListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client InterfacesClient) ListComplete(ctx context.Context, resourceGroupName string) (result InterfaceListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName) + return +} + +// ListAll gets all network interfaces in a subscription. +func (client InterfacesClient) ListAll(ctx context.Context) (result InterfaceListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.ListAll") + defer func() { + sc := -1 + if result.ilr.Response.Response != nil { + sc = result.ilr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listAllNextResults + req, err := client.ListAllPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListAll", nil, "Failure preparing request") + return + } + + resp, err := client.ListAllSender(req) + if err != nil { + result.ilr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListAll", resp, "Failure sending request") + return + } + + result.ilr, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListAll", resp, "Failure responding to request") + } + + return +} + +// ListAllPreparer prepares the ListAll request. +func (client InterfacesClient) ListAllPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkInterfaces", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAllSender sends the ListAll request. The method will close the +// http.Response Body if it receives an error. +func (client InterfacesClient) ListAllSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAllResponder handles the response to the ListAll request. The method always +// closes the http.Response Body. +func (client InterfacesClient) ListAllResponder(resp *http.Response) (result InterfaceListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listAllNextResults retrieves the next set of results, if any. +func (client InterfacesClient) listAllNextResults(ctx context.Context, lastResults InterfaceListResult) (result InterfaceListResult, err error) { + req, err := lastResults.interfaceListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listAllNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListAllSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listAllNextResults", resp, "Failure sending next results request") + } + result, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "listAllNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListAllComplete enumerates all values, automatically crossing page boundaries as required. +func (client InterfacesClient) ListAllComplete(ctx context.Context) (result InterfaceListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.ListAll") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListAll(ctx) + return +} + +// ListEffectiveNetworkSecurityGroups gets all network security groups applied to a network interface. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkInterfaceName - the name of the network interface. +func (client InterfacesClient) ListEffectiveNetworkSecurityGroups(ctx context.Context, resourceGroupName string, networkInterfaceName string) (result InterfacesListEffectiveNetworkSecurityGroupsFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.ListEffectiveNetworkSecurityGroups") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ListEffectiveNetworkSecurityGroupsPreparer(ctx, resourceGroupName, networkInterfaceName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListEffectiveNetworkSecurityGroups", nil, "Failure preparing request") + return + } + + result, err = client.ListEffectiveNetworkSecurityGroupsSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListEffectiveNetworkSecurityGroups", result.Response(), "Failure sending request") + return + } + + return +} + +// ListEffectiveNetworkSecurityGroupsPreparer prepares the ListEffectiveNetworkSecurityGroups request. +func (client InterfacesClient) ListEffectiveNetworkSecurityGroupsPreparer(ctx context.Context, resourceGroupName string, networkInterfaceName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkInterfaceName": autorest.Encode("path", networkInterfaceName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/effectiveNetworkSecurityGroups", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListEffectiveNetworkSecurityGroupsSender sends the ListEffectiveNetworkSecurityGroups request. The method will close the +// http.Response Body if it receives an error. +func (client InterfacesClient) ListEffectiveNetworkSecurityGroupsSender(req *http.Request) (future InterfacesListEffectiveNetworkSecurityGroupsFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// ListEffectiveNetworkSecurityGroupsResponder handles the response to the ListEffectiveNetworkSecurityGroups request. The method always +// closes the http.Response Body. +func (client InterfacesClient) ListEffectiveNetworkSecurityGroupsResponder(resp *http.Response) (result EffectiveNetworkSecurityGroupListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// ListVirtualMachineScaleSetIPConfigurations get the specified network interface ip configuration in a virtual machine +// scale set. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualMachineScaleSetName - the name of the virtual machine scale set. +// virtualmachineIndex - the virtual machine index. +// networkInterfaceName - the name of the network interface. +// expand - expands referenced resources. +func (client InterfacesClient) ListVirtualMachineScaleSetIPConfigurations(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string, networkInterfaceName string, expand string) (result InterfaceIPConfigurationListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.ListVirtualMachineScaleSetIPConfigurations") + defer func() { + sc := -1 + if result.iiclr.Response.Response != nil { + sc = result.iiclr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listVirtualMachineScaleSetIPConfigurationsNextResults + req, err := client.ListVirtualMachineScaleSetIPConfigurationsPreparer(ctx, resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex, networkInterfaceName, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetIPConfigurations", nil, "Failure preparing request") + return + } + + resp, err := client.ListVirtualMachineScaleSetIPConfigurationsSender(req) + if err != nil { + result.iiclr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetIPConfigurations", resp, "Failure sending request") + return + } + + result.iiclr, err = client.ListVirtualMachineScaleSetIPConfigurationsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetIPConfigurations", resp, "Failure responding to request") + } + + return +} + +// ListVirtualMachineScaleSetIPConfigurationsPreparer prepares the ListVirtualMachineScaleSetIPConfigurations request. +func (client InterfacesClient) ListVirtualMachineScaleSetIPConfigurationsPreparer(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string, networkInterfaceName string, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkInterfaceName": autorest.Encode("path", networkInterfaceName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualmachineIndex": autorest.Encode("path", virtualmachineIndex), + "virtualMachineScaleSetName": autorest.Encode("path", virtualMachineScaleSetName), + } + + const APIVersion = "2018-10-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}/ipConfigurations", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListVirtualMachineScaleSetIPConfigurationsSender sends the ListVirtualMachineScaleSetIPConfigurations request. The method will close the +// http.Response Body if it receives an error. +func (client InterfacesClient) ListVirtualMachineScaleSetIPConfigurationsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListVirtualMachineScaleSetIPConfigurationsResponder handles the response to the ListVirtualMachineScaleSetIPConfigurations request. The method always +// closes the http.Response Body. +func (client InterfacesClient) ListVirtualMachineScaleSetIPConfigurationsResponder(resp *http.Response) (result InterfaceIPConfigurationListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listVirtualMachineScaleSetIPConfigurationsNextResults retrieves the next set of results, if any. +func (client InterfacesClient) listVirtualMachineScaleSetIPConfigurationsNextResults(ctx context.Context, lastResults InterfaceIPConfigurationListResult) (result InterfaceIPConfigurationListResult, err error) { + req, err := lastResults.interfaceIPConfigurationListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listVirtualMachineScaleSetIPConfigurationsNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListVirtualMachineScaleSetIPConfigurationsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listVirtualMachineScaleSetIPConfigurationsNextResults", resp, "Failure sending next results request") + } + result, err = client.ListVirtualMachineScaleSetIPConfigurationsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "listVirtualMachineScaleSetIPConfigurationsNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListVirtualMachineScaleSetIPConfigurationsComplete enumerates all values, automatically crossing page boundaries as required. +func (client InterfacesClient) ListVirtualMachineScaleSetIPConfigurationsComplete(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string, networkInterfaceName string, expand string) (result InterfaceIPConfigurationListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.ListVirtualMachineScaleSetIPConfigurations") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListVirtualMachineScaleSetIPConfigurations(ctx, resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex, networkInterfaceName, expand) + return +} + +// ListVirtualMachineScaleSetNetworkInterfaces gets all network interfaces in a virtual machine scale set. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualMachineScaleSetName - the name of the virtual machine scale set. +func (client InterfacesClient) ListVirtualMachineScaleSetNetworkInterfaces(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string) (result InterfaceListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.ListVirtualMachineScaleSetNetworkInterfaces") + defer func() { + sc := -1 + if result.ilr.Response.Response != nil { + sc = result.ilr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listVirtualMachineScaleSetNetworkInterfacesNextResults + req, err := client.ListVirtualMachineScaleSetNetworkInterfacesPreparer(ctx, resourceGroupName, virtualMachineScaleSetName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetNetworkInterfaces", nil, "Failure preparing request") + return + } + + resp, err := client.ListVirtualMachineScaleSetNetworkInterfacesSender(req) + if err != nil { + result.ilr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetNetworkInterfaces", resp, "Failure sending request") + return + } + + result.ilr, err = client.ListVirtualMachineScaleSetNetworkInterfacesResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetNetworkInterfaces", resp, "Failure responding to request") + } + + return +} + +// ListVirtualMachineScaleSetNetworkInterfacesPreparer prepares the ListVirtualMachineScaleSetNetworkInterfaces request. +func (client InterfacesClient) ListVirtualMachineScaleSetNetworkInterfacesPreparer(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualMachineScaleSetName": autorest.Encode("path", virtualMachineScaleSetName), + } + + const APIVersion = "2018-10-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/networkInterfaces", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListVirtualMachineScaleSetNetworkInterfacesSender sends the ListVirtualMachineScaleSetNetworkInterfaces request. The method will close the +// http.Response Body if it receives an error. +func (client InterfacesClient) ListVirtualMachineScaleSetNetworkInterfacesSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListVirtualMachineScaleSetNetworkInterfacesResponder handles the response to the ListVirtualMachineScaleSetNetworkInterfaces request. The method always +// closes the http.Response Body. +func (client InterfacesClient) ListVirtualMachineScaleSetNetworkInterfacesResponder(resp *http.Response) (result InterfaceListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listVirtualMachineScaleSetNetworkInterfacesNextResults retrieves the next set of results, if any. +func (client InterfacesClient) listVirtualMachineScaleSetNetworkInterfacesNextResults(ctx context.Context, lastResults InterfaceListResult) (result InterfaceListResult, err error) { + req, err := lastResults.interfaceListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listVirtualMachineScaleSetNetworkInterfacesNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListVirtualMachineScaleSetNetworkInterfacesSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listVirtualMachineScaleSetNetworkInterfacesNextResults", resp, "Failure sending next results request") + } + result, err = client.ListVirtualMachineScaleSetNetworkInterfacesResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "listVirtualMachineScaleSetNetworkInterfacesNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListVirtualMachineScaleSetNetworkInterfacesComplete enumerates all values, automatically crossing page boundaries as required. +func (client InterfacesClient) ListVirtualMachineScaleSetNetworkInterfacesComplete(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string) (result InterfaceListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.ListVirtualMachineScaleSetNetworkInterfaces") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListVirtualMachineScaleSetNetworkInterfaces(ctx, resourceGroupName, virtualMachineScaleSetName) + return +} + +// ListVirtualMachineScaleSetVMNetworkInterfaces gets information about all network interfaces in a virtual machine in +// a virtual machine scale set. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualMachineScaleSetName - the name of the virtual machine scale set. +// virtualmachineIndex - the virtual machine index. +func (client InterfacesClient) ListVirtualMachineScaleSetVMNetworkInterfaces(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string) (result InterfaceListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.ListVirtualMachineScaleSetVMNetworkInterfaces") + defer func() { + sc := -1 + if result.ilr.Response.Response != nil { + sc = result.ilr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listVirtualMachineScaleSetVMNetworkInterfacesNextResults + req, err := client.ListVirtualMachineScaleSetVMNetworkInterfacesPreparer(ctx, resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetVMNetworkInterfaces", nil, "Failure preparing request") + return + } + + resp, err := client.ListVirtualMachineScaleSetVMNetworkInterfacesSender(req) + if err != nil { + result.ilr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetVMNetworkInterfaces", resp, "Failure sending request") + return + } + + result.ilr, err = client.ListVirtualMachineScaleSetVMNetworkInterfacesResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetVMNetworkInterfaces", resp, "Failure responding to request") + } + + return +} + +// ListVirtualMachineScaleSetVMNetworkInterfacesPreparer prepares the ListVirtualMachineScaleSetVMNetworkInterfaces request. +func (client InterfacesClient) ListVirtualMachineScaleSetVMNetworkInterfacesPreparer(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualmachineIndex": autorest.Encode("path", virtualmachineIndex), + "virtualMachineScaleSetName": autorest.Encode("path", virtualMachineScaleSetName), + } + + const APIVersion = "2018-10-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListVirtualMachineScaleSetVMNetworkInterfacesSender sends the ListVirtualMachineScaleSetVMNetworkInterfaces request. The method will close the +// http.Response Body if it receives an error. +func (client InterfacesClient) ListVirtualMachineScaleSetVMNetworkInterfacesSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListVirtualMachineScaleSetVMNetworkInterfacesResponder handles the response to the ListVirtualMachineScaleSetVMNetworkInterfaces request. The method always +// closes the http.Response Body. +func (client InterfacesClient) ListVirtualMachineScaleSetVMNetworkInterfacesResponder(resp *http.Response) (result InterfaceListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listVirtualMachineScaleSetVMNetworkInterfacesNextResults retrieves the next set of results, if any. +func (client InterfacesClient) listVirtualMachineScaleSetVMNetworkInterfacesNextResults(ctx context.Context, lastResults InterfaceListResult) (result InterfaceListResult, err error) { + req, err := lastResults.interfaceListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listVirtualMachineScaleSetVMNetworkInterfacesNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListVirtualMachineScaleSetVMNetworkInterfacesSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listVirtualMachineScaleSetVMNetworkInterfacesNextResults", resp, "Failure sending next results request") + } + result, err = client.ListVirtualMachineScaleSetVMNetworkInterfacesResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "listVirtualMachineScaleSetVMNetworkInterfacesNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListVirtualMachineScaleSetVMNetworkInterfacesComplete enumerates all values, automatically crossing page boundaries as required. +func (client InterfacesClient) ListVirtualMachineScaleSetVMNetworkInterfacesComplete(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string) (result InterfaceListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.ListVirtualMachineScaleSetVMNetworkInterfaces") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListVirtualMachineScaleSetVMNetworkInterfaces(ctx, resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex) + return +} + +// UpdateTags updates a network interface tags. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkInterfaceName - the name of the network interface. +// parameters - parameters supplied to update network interface tags. +func (client InterfacesClient) UpdateTags(ctx context.Context, resourceGroupName string, networkInterfaceName string, parameters TagsObject) (result Interface, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfacesClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, networkInterfaceName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client InterfacesClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, networkInterfaceName string, parameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkInterfaceName": autorest.Encode("path", networkInterfaceName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client InterfacesClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client InterfacesClient) UpdateTagsResponder(resp *http.Response) (result Interface, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/interfacetapconfigurations.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/interfacetapconfigurations.go new file mode 100644 index 0000000..d2ba214 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/interfacetapconfigurations.go @@ -0,0 +1,431 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// InterfaceTapConfigurationsClient is the network Client +type InterfaceTapConfigurationsClient struct { + BaseClient +} + +// NewInterfaceTapConfigurationsClient creates an instance of the InterfaceTapConfigurationsClient client. +func NewInterfaceTapConfigurationsClient(subscriptionID string) InterfaceTapConfigurationsClient { + return NewInterfaceTapConfigurationsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewInterfaceTapConfigurationsClientWithBaseURI creates an instance of the InterfaceTapConfigurationsClient client +// using a custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign +// clouds, Azure stack). +func NewInterfaceTapConfigurationsClientWithBaseURI(baseURI string, subscriptionID string) InterfaceTapConfigurationsClient { + return InterfaceTapConfigurationsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a Tap configuration in the specified NetworkInterface. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkInterfaceName - the name of the network interface. +// tapConfigurationName - the name of the tap configuration. +// tapConfigurationParameters - parameters supplied to the create or update tap configuration operation. +func (client InterfaceTapConfigurationsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, networkInterfaceName string, tapConfigurationName string, tapConfigurationParameters InterfaceTapConfiguration) (result InterfaceTapConfigurationsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfaceTapConfigurationsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: tapConfigurationParameters, + Constraints: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationNetworkInterfaceIPConfiguration", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationNetworkInterfaceIPConfiguration.InterfaceIPConfigurationPropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationNetworkInterfaceIPConfiguration.InterfaceIPConfigurationPropertiesFormat.PublicIPAddress", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationNetworkInterfaceIPConfiguration.InterfaceIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationNetworkInterfaceIPConfiguration.InterfaceIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat.IPConfiguration", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationNetworkInterfaceIPConfiguration.InterfaceIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat.IPConfiguration.IPConfigurationPropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationNetworkInterfaceIPConfiguration.InterfaceIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat.IPConfiguration.IPConfigurationPropertiesFormat.PublicIPAddress", Name: validation.Null, Rule: false, Chain: nil}}}, + }}, + }}, + }}, + }}, + }}, + {Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationLoadBalancerFrontEndIPConfiguration", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationLoadBalancerFrontEndIPConfiguration.FrontendIPConfigurationPropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationLoadBalancerFrontEndIPConfiguration.FrontendIPConfigurationPropertiesFormat.PublicIPAddress", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationLoadBalancerFrontEndIPConfiguration.FrontendIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationLoadBalancerFrontEndIPConfiguration.FrontendIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat.IPConfiguration", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationLoadBalancerFrontEndIPConfiguration.FrontendIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat.IPConfiguration.IPConfigurationPropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "tapConfigurationParameters.InterfaceTapConfigurationPropertiesFormat.VirtualNetworkTap.VirtualNetworkTapPropertiesFormat.DestinationLoadBalancerFrontEndIPConfiguration.FrontendIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat.IPConfiguration.IPConfigurationPropertiesFormat.PublicIPAddress", Name: validation.Null, Rule: false, Chain: nil}}}, + }}, + }}, + }}, + }}, + }}, + }}, + }}, + }}}}}); err != nil { + return result, validation.NewError("network.InterfaceTapConfigurationsClient", "CreateOrUpdate", err.Error()) + } + + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, networkInterfaceName, tapConfigurationName, tapConfigurationParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client InterfaceTapConfigurationsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, networkInterfaceName string, tapConfigurationName string, tapConfigurationParameters InterfaceTapConfiguration) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkInterfaceName": autorest.Encode("path", networkInterfaceName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "tapConfigurationName": autorest.Encode("path", tapConfigurationName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + tapConfigurationParameters.Etag = nil + tapConfigurationParameters.Type = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/tapConfigurations/{tapConfigurationName}", pathParameters), + autorest.WithJSON(tapConfigurationParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client InterfaceTapConfigurationsClient) CreateOrUpdateSender(req *http.Request) (future InterfaceTapConfigurationsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client InterfaceTapConfigurationsClient) CreateOrUpdateResponder(resp *http.Response) (result InterfaceTapConfiguration, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified tap configuration from the NetworkInterface. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkInterfaceName - the name of the network interface. +// tapConfigurationName - the name of the tap configuration. +func (client InterfaceTapConfigurationsClient) Delete(ctx context.Context, resourceGroupName string, networkInterfaceName string, tapConfigurationName string) (result InterfaceTapConfigurationsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfaceTapConfigurationsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, networkInterfaceName, tapConfigurationName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client InterfaceTapConfigurationsClient) DeletePreparer(ctx context.Context, resourceGroupName string, networkInterfaceName string, tapConfigurationName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkInterfaceName": autorest.Encode("path", networkInterfaceName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "tapConfigurationName": autorest.Encode("path", tapConfigurationName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/tapConfigurations/{tapConfigurationName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client InterfaceTapConfigurationsClient) DeleteSender(req *http.Request) (future InterfaceTapConfigurationsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client InterfaceTapConfigurationsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get get the specified tap configuration on a network interface. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkInterfaceName - the name of the network interface. +// tapConfigurationName - the name of the tap configuration. +func (client InterfaceTapConfigurationsClient) Get(ctx context.Context, resourceGroupName string, networkInterfaceName string, tapConfigurationName string) (result InterfaceTapConfiguration, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfaceTapConfigurationsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, networkInterfaceName, tapConfigurationName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client InterfaceTapConfigurationsClient) GetPreparer(ctx context.Context, resourceGroupName string, networkInterfaceName string, tapConfigurationName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkInterfaceName": autorest.Encode("path", networkInterfaceName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "tapConfigurationName": autorest.Encode("path", tapConfigurationName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/tapConfigurations/{tapConfigurationName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client InterfaceTapConfigurationsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client InterfaceTapConfigurationsClient) GetResponder(resp *http.Response) (result InterfaceTapConfiguration, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List get all Tap configurations in a network interface. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkInterfaceName - the name of the network interface. +func (client InterfaceTapConfigurationsClient) List(ctx context.Context, resourceGroupName string, networkInterfaceName string) (result InterfaceTapConfigurationListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfaceTapConfigurationsClient.List") + defer func() { + sc := -1 + if result.itclr.Response.Response != nil { + sc = result.itclr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, networkInterfaceName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.itclr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "List", resp, "Failure sending request") + return + } + + result.itclr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client InterfaceTapConfigurationsClient) ListPreparer(ctx context.Context, resourceGroupName string, networkInterfaceName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkInterfaceName": autorest.Encode("path", networkInterfaceName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/tapConfigurations", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client InterfaceTapConfigurationsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client InterfaceTapConfigurationsClient) ListResponder(resp *http.Response) (result InterfaceTapConfigurationListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client InterfaceTapConfigurationsClient) listNextResults(ctx context.Context, lastResults InterfaceTapConfigurationListResult) (result InterfaceTapConfigurationListResult, err error) { + req, err := lastResults.interfaceTapConfigurationListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client InterfaceTapConfigurationsClient) ListComplete(ctx context.Context, resourceGroupName string, networkInterfaceName string) (result InterfaceTapConfigurationListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfaceTapConfigurationsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, networkInterfaceName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/ipgroups.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/ipgroups.go new file mode 100644 index 0000000..5ce3e01 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/ipgroups.go @@ -0,0 +1,578 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// IPGroupsClient is the network Client +type IPGroupsClient struct { + BaseClient +} + +// NewIPGroupsClient creates an instance of the IPGroupsClient client. +func NewIPGroupsClient(subscriptionID string) IPGroupsClient { + return NewIPGroupsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewIPGroupsClientWithBaseURI creates an instance of the IPGroupsClient client using a custom endpoint. Use this +// when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewIPGroupsClientWithBaseURI(baseURI string, subscriptionID string) IPGroupsClient { + return IPGroupsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates an ipGroups in a specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// IPGroupsName - the name of the ipGroups. +// parameters - parameters supplied to the create or update IpGroups operation. +func (client IPGroupsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, IPGroupsName string, parameters IPGroup) (result IPGroupsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/IPGroupsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, IPGroupsName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.IPGroupsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.IPGroupsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client IPGroupsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, IPGroupsName string, parameters IPGroup) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "ipGroupsName": autorest.Encode("path", IPGroupsName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ipGroups/{ipGroupsName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client IPGroupsClient) CreateOrUpdateSender(req *http.Request) (future IPGroupsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client IPGroupsClient) CreateOrUpdateResponder(resp *http.Response) (result IPGroup, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified ipGroups. +// Parameters: +// resourceGroupName - the name of the resource group. +// IPGroupsName - the name of the ipGroups. +func (client IPGroupsClient) Delete(ctx context.Context, resourceGroupName string, IPGroupsName string) (result IPGroupsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/IPGroupsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, IPGroupsName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.IPGroupsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.IPGroupsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client IPGroupsClient) DeletePreparer(ctx context.Context, resourceGroupName string, IPGroupsName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "ipGroupsName": autorest.Encode("path", IPGroupsName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ipGroups/{ipGroupsName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client IPGroupsClient) DeleteSender(req *http.Request) (future IPGroupsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client IPGroupsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified ipGroups. +// Parameters: +// resourceGroupName - the name of the resource group. +// IPGroupsName - the name of the ipGroups. +// expand - expands resourceIds (of Firewalls/Network Security Groups etc.) back referenced by the IpGroups +// resource. +func (client IPGroupsClient) Get(ctx context.Context, resourceGroupName string, IPGroupsName string, expand string) (result IPGroup, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/IPGroupsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, IPGroupsName, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "network.IPGroupsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.IPGroupsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.IPGroupsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client IPGroupsClient) GetPreparer(ctx context.Context, resourceGroupName string, IPGroupsName string, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "ipGroupsName": autorest.Encode("path", IPGroupsName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ipGroups/{ipGroupsName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client IPGroupsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client IPGroupsClient) GetResponder(resp *http.Response) (result IPGroup, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all IpGroups in a subscription. +func (client IPGroupsClient) List(ctx context.Context) (result IPGroupListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/IPGroupsClient.List") + defer func() { + sc := -1 + if result.iglr.Response.Response != nil { + sc = result.iglr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.IPGroupsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.iglr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.IPGroupsClient", "List", resp, "Failure sending request") + return + } + + result.iglr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.IPGroupsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client IPGroupsClient) ListPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/ipGroups", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client IPGroupsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client IPGroupsClient) ListResponder(resp *http.Response) (result IPGroupListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client IPGroupsClient) listNextResults(ctx context.Context, lastResults IPGroupListResult) (result IPGroupListResult, err error) { + req, err := lastResults.iPGroupListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.IPGroupsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.IPGroupsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.IPGroupsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client IPGroupsClient) ListComplete(ctx context.Context) (result IPGroupListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/IPGroupsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx) + return +} + +// ListByResourceGroup gets all IpGroups in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client IPGroupsClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result IPGroupListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/IPGroupsClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.iglr.Response.Response != nil { + sc = result.iglr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listByResourceGroupNextResults + req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.IPGroupsClient", "ListByResourceGroup", nil, "Failure preparing request") + return + } + + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.iglr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.IPGroupsClient", "ListByResourceGroup", resp, "Failure sending request") + return + } + + result.iglr, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.IPGroupsClient", "ListByResourceGroup", resp, "Failure responding to request") + } + + return +} + +// ListByResourceGroupPreparer prepares the ListByResourceGroup request. +func (client IPGroupsClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ipGroups", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the +// http.Response Body if it receives an error. +func (client IPGroupsClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always +// closes the http.Response Body. +func (client IPGroupsClient) ListByResourceGroupResponder(resp *http.Response) (result IPGroupListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listByResourceGroupNextResults retrieves the next set of results, if any. +func (client IPGroupsClient) listByResourceGroupNextResults(ctx context.Context, lastResults IPGroupListResult) (result IPGroupListResult, err error) { + req, err := lastResults.iPGroupListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.IPGroupsClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.IPGroupsClient", "listByResourceGroupNextResults", resp, "Failure sending next results request") + } + result, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.IPGroupsClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. +func (client IPGroupsClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result IPGroupListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/IPGroupsClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListByResourceGroup(ctx, resourceGroupName) + return +} + +// UpdateGroups updates tags of an IpGroups resource. +// Parameters: +// resourceGroupName - the name of the resource group. +// IPGroupsName - the name of the ipGroups. +// parameters - parameters supplied to the update ipGroups operation. +func (client IPGroupsClient) UpdateGroups(ctx context.Context, resourceGroupName string, IPGroupsName string, parameters TagsObject) (result IPGroup, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/IPGroupsClient.UpdateGroups") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateGroupsPreparer(ctx, resourceGroupName, IPGroupsName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.IPGroupsClient", "UpdateGroups", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateGroupsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.IPGroupsClient", "UpdateGroups", resp, "Failure sending request") + return + } + + result, err = client.UpdateGroupsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.IPGroupsClient", "UpdateGroups", resp, "Failure responding to request") + } + + return +} + +// UpdateGroupsPreparer prepares the UpdateGroups request. +func (client IPGroupsClient) UpdateGroupsPreparer(ctx context.Context, resourceGroupName string, IPGroupsName string, parameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "ipGroupsName": autorest.Encode("path", IPGroupsName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ipGroups/{ipGroupsName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateGroupsSender sends the UpdateGroups request. The method will close the +// http.Response Body if it receives an error. +func (client IPGroupsClient) UpdateGroupsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateGroupsResponder handles the response to the UpdateGroups request. The method always +// closes the http.Response Body. +func (client IPGroupsClient) UpdateGroupsResponder(resp *http.Response) (result IPGroup, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/loadbalancerbackendaddresspools.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/loadbalancerbackendaddresspools.go new file mode 100644 index 0000000..a7e4918 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/loadbalancerbackendaddresspools.go @@ -0,0 +1,235 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// LoadBalancerBackendAddressPoolsClient is the network Client +type LoadBalancerBackendAddressPoolsClient struct { + BaseClient +} + +// NewLoadBalancerBackendAddressPoolsClient creates an instance of the LoadBalancerBackendAddressPoolsClient client. +func NewLoadBalancerBackendAddressPoolsClient(subscriptionID string) LoadBalancerBackendAddressPoolsClient { + return NewLoadBalancerBackendAddressPoolsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewLoadBalancerBackendAddressPoolsClientWithBaseURI creates an instance of the LoadBalancerBackendAddressPoolsClient +// client using a custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI +// (sovereign clouds, Azure stack). +func NewLoadBalancerBackendAddressPoolsClientWithBaseURI(baseURI string, subscriptionID string) LoadBalancerBackendAddressPoolsClient { + return LoadBalancerBackendAddressPoolsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// Get gets load balancer backend address pool. +// Parameters: +// resourceGroupName - the name of the resource group. +// loadBalancerName - the name of the load balancer. +// backendAddressPoolName - the name of the backend address pool. +func (client LoadBalancerBackendAddressPoolsClient) Get(ctx context.Context, resourceGroupName string, loadBalancerName string, backendAddressPoolName string) (result BackendAddressPool, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerBackendAddressPoolsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, loadBalancerName, backendAddressPoolName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerBackendAddressPoolsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.LoadBalancerBackendAddressPoolsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerBackendAddressPoolsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client LoadBalancerBackendAddressPoolsClient) GetPreparer(ctx context.Context, resourceGroupName string, loadBalancerName string, backendAddressPoolName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "backendAddressPoolName": autorest.Encode("path", backendAddressPoolName), + "loadBalancerName": autorest.Encode("path", loadBalancerName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools/{backendAddressPoolName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client LoadBalancerBackendAddressPoolsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client LoadBalancerBackendAddressPoolsClient) GetResponder(resp *http.Response) (result BackendAddressPool, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all the load balancer backed address pools. +// Parameters: +// resourceGroupName - the name of the resource group. +// loadBalancerName - the name of the load balancer. +func (client LoadBalancerBackendAddressPoolsClient) List(ctx context.Context, resourceGroupName string, loadBalancerName string) (result LoadBalancerBackendAddressPoolListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerBackendAddressPoolsClient.List") + defer func() { + sc := -1 + if result.lbbaplr.Response.Response != nil { + sc = result.lbbaplr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, loadBalancerName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerBackendAddressPoolsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.lbbaplr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.LoadBalancerBackendAddressPoolsClient", "List", resp, "Failure sending request") + return + } + + result.lbbaplr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerBackendAddressPoolsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client LoadBalancerBackendAddressPoolsClient) ListPreparer(ctx context.Context, resourceGroupName string, loadBalancerName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "loadBalancerName": autorest.Encode("path", loadBalancerName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client LoadBalancerBackendAddressPoolsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client LoadBalancerBackendAddressPoolsClient) ListResponder(resp *http.Response) (result LoadBalancerBackendAddressPoolListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client LoadBalancerBackendAddressPoolsClient) listNextResults(ctx context.Context, lastResults LoadBalancerBackendAddressPoolListResult) (result LoadBalancerBackendAddressPoolListResult, err error) { + req, err := lastResults.loadBalancerBackendAddressPoolListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.LoadBalancerBackendAddressPoolsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.LoadBalancerBackendAddressPoolsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerBackendAddressPoolsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client LoadBalancerBackendAddressPoolsClient) ListComplete(ctx context.Context, resourceGroupName string, loadBalancerName string) (result LoadBalancerBackendAddressPoolListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerBackendAddressPoolsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, loadBalancerName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/loadbalancerfrontendipconfigurations.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/loadbalancerfrontendipconfigurations.go new file mode 100644 index 0000000..08f5f70 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/loadbalancerfrontendipconfigurations.go @@ -0,0 +1,236 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// LoadBalancerFrontendIPConfigurationsClient is the network Client +type LoadBalancerFrontendIPConfigurationsClient struct { + BaseClient +} + +// NewLoadBalancerFrontendIPConfigurationsClient creates an instance of the LoadBalancerFrontendIPConfigurationsClient +// client. +func NewLoadBalancerFrontendIPConfigurationsClient(subscriptionID string) LoadBalancerFrontendIPConfigurationsClient { + return NewLoadBalancerFrontendIPConfigurationsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewLoadBalancerFrontendIPConfigurationsClientWithBaseURI creates an instance of the +// LoadBalancerFrontendIPConfigurationsClient client using a custom endpoint. Use this when interacting with an Azure +// cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewLoadBalancerFrontendIPConfigurationsClientWithBaseURI(baseURI string, subscriptionID string) LoadBalancerFrontendIPConfigurationsClient { + return LoadBalancerFrontendIPConfigurationsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// Get gets load balancer frontend IP configuration. +// Parameters: +// resourceGroupName - the name of the resource group. +// loadBalancerName - the name of the load balancer. +// frontendIPConfigurationName - the name of the frontend IP configuration. +func (client LoadBalancerFrontendIPConfigurationsClient) Get(ctx context.Context, resourceGroupName string, loadBalancerName string, frontendIPConfigurationName string) (result FrontendIPConfiguration, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerFrontendIPConfigurationsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, loadBalancerName, frontendIPConfigurationName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerFrontendIPConfigurationsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.LoadBalancerFrontendIPConfigurationsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerFrontendIPConfigurationsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client LoadBalancerFrontendIPConfigurationsClient) GetPreparer(ctx context.Context, resourceGroupName string, loadBalancerName string, frontendIPConfigurationName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "frontendIPConfigurationName": autorest.Encode("path", frontendIPConfigurationName), + "loadBalancerName": autorest.Encode("path", loadBalancerName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/frontendIPConfigurations/{frontendIPConfigurationName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client LoadBalancerFrontendIPConfigurationsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client LoadBalancerFrontendIPConfigurationsClient) GetResponder(resp *http.Response) (result FrontendIPConfiguration, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all the load balancer frontend IP configurations. +// Parameters: +// resourceGroupName - the name of the resource group. +// loadBalancerName - the name of the load balancer. +func (client LoadBalancerFrontendIPConfigurationsClient) List(ctx context.Context, resourceGroupName string, loadBalancerName string) (result LoadBalancerFrontendIPConfigurationListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerFrontendIPConfigurationsClient.List") + defer func() { + sc := -1 + if result.lbficlr.Response.Response != nil { + sc = result.lbficlr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, loadBalancerName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerFrontendIPConfigurationsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.lbficlr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.LoadBalancerFrontendIPConfigurationsClient", "List", resp, "Failure sending request") + return + } + + result.lbficlr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerFrontendIPConfigurationsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client LoadBalancerFrontendIPConfigurationsClient) ListPreparer(ctx context.Context, resourceGroupName string, loadBalancerName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "loadBalancerName": autorest.Encode("path", loadBalancerName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/frontendIPConfigurations", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client LoadBalancerFrontendIPConfigurationsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client LoadBalancerFrontendIPConfigurationsClient) ListResponder(resp *http.Response) (result LoadBalancerFrontendIPConfigurationListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client LoadBalancerFrontendIPConfigurationsClient) listNextResults(ctx context.Context, lastResults LoadBalancerFrontendIPConfigurationListResult) (result LoadBalancerFrontendIPConfigurationListResult, err error) { + req, err := lastResults.loadBalancerFrontendIPConfigurationListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.LoadBalancerFrontendIPConfigurationsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.LoadBalancerFrontendIPConfigurationsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerFrontendIPConfigurationsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client LoadBalancerFrontendIPConfigurationsClient) ListComplete(ctx context.Context, resourceGroupName string, loadBalancerName string) (result LoadBalancerFrontendIPConfigurationListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerFrontendIPConfigurationsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, loadBalancerName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/loadbalancerloadbalancingrules.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/loadbalancerloadbalancingrules.go new file mode 100644 index 0000000..6ee0231 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/loadbalancerloadbalancingrules.go @@ -0,0 +1,235 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// LoadBalancerLoadBalancingRulesClient is the network Client +type LoadBalancerLoadBalancingRulesClient struct { + BaseClient +} + +// NewLoadBalancerLoadBalancingRulesClient creates an instance of the LoadBalancerLoadBalancingRulesClient client. +func NewLoadBalancerLoadBalancingRulesClient(subscriptionID string) LoadBalancerLoadBalancingRulesClient { + return NewLoadBalancerLoadBalancingRulesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewLoadBalancerLoadBalancingRulesClientWithBaseURI creates an instance of the LoadBalancerLoadBalancingRulesClient +// client using a custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI +// (sovereign clouds, Azure stack). +func NewLoadBalancerLoadBalancingRulesClientWithBaseURI(baseURI string, subscriptionID string) LoadBalancerLoadBalancingRulesClient { + return LoadBalancerLoadBalancingRulesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// Get gets the specified load balancer load balancing rule. +// Parameters: +// resourceGroupName - the name of the resource group. +// loadBalancerName - the name of the load balancer. +// loadBalancingRuleName - the name of the load balancing rule. +func (client LoadBalancerLoadBalancingRulesClient) Get(ctx context.Context, resourceGroupName string, loadBalancerName string, loadBalancingRuleName string) (result LoadBalancingRule, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerLoadBalancingRulesClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, loadBalancerName, loadBalancingRuleName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerLoadBalancingRulesClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.LoadBalancerLoadBalancingRulesClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerLoadBalancingRulesClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client LoadBalancerLoadBalancingRulesClient) GetPreparer(ctx context.Context, resourceGroupName string, loadBalancerName string, loadBalancingRuleName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "loadBalancerName": autorest.Encode("path", loadBalancerName), + "loadBalancingRuleName": autorest.Encode("path", loadBalancingRuleName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/loadBalancingRules/{loadBalancingRuleName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client LoadBalancerLoadBalancingRulesClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client LoadBalancerLoadBalancingRulesClient) GetResponder(resp *http.Response) (result LoadBalancingRule, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all the load balancing rules in a load balancer. +// Parameters: +// resourceGroupName - the name of the resource group. +// loadBalancerName - the name of the load balancer. +func (client LoadBalancerLoadBalancingRulesClient) List(ctx context.Context, resourceGroupName string, loadBalancerName string) (result LoadBalancerLoadBalancingRuleListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerLoadBalancingRulesClient.List") + defer func() { + sc := -1 + if result.lblbrlr.Response.Response != nil { + sc = result.lblbrlr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, loadBalancerName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerLoadBalancingRulesClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.lblbrlr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.LoadBalancerLoadBalancingRulesClient", "List", resp, "Failure sending request") + return + } + + result.lblbrlr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerLoadBalancingRulesClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client LoadBalancerLoadBalancingRulesClient) ListPreparer(ctx context.Context, resourceGroupName string, loadBalancerName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "loadBalancerName": autorest.Encode("path", loadBalancerName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/loadBalancingRules", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client LoadBalancerLoadBalancingRulesClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client LoadBalancerLoadBalancingRulesClient) ListResponder(resp *http.Response) (result LoadBalancerLoadBalancingRuleListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client LoadBalancerLoadBalancingRulesClient) listNextResults(ctx context.Context, lastResults LoadBalancerLoadBalancingRuleListResult) (result LoadBalancerLoadBalancingRuleListResult, err error) { + req, err := lastResults.loadBalancerLoadBalancingRuleListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.LoadBalancerLoadBalancingRulesClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.LoadBalancerLoadBalancingRulesClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerLoadBalancingRulesClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client LoadBalancerLoadBalancingRulesClient) ListComplete(ctx context.Context, resourceGroupName string, loadBalancerName string) (result LoadBalancerLoadBalancingRuleListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerLoadBalancingRulesClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, loadBalancerName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/loadbalancernetworkinterfaces.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/loadbalancernetworkinterfaces.go new file mode 100644 index 0000000..84a4438 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/loadbalancernetworkinterfaces.go @@ -0,0 +1,157 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// LoadBalancerNetworkInterfacesClient is the network Client +type LoadBalancerNetworkInterfacesClient struct { + BaseClient +} + +// NewLoadBalancerNetworkInterfacesClient creates an instance of the LoadBalancerNetworkInterfacesClient client. +func NewLoadBalancerNetworkInterfacesClient(subscriptionID string) LoadBalancerNetworkInterfacesClient { + return NewLoadBalancerNetworkInterfacesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewLoadBalancerNetworkInterfacesClientWithBaseURI creates an instance of the LoadBalancerNetworkInterfacesClient +// client using a custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI +// (sovereign clouds, Azure stack). +func NewLoadBalancerNetworkInterfacesClientWithBaseURI(baseURI string, subscriptionID string) LoadBalancerNetworkInterfacesClient { + return LoadBalancerNetworkInterfacesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// List gets associated load balancer network interfaces. +// Parameters: +// resourceGroupName - the name of the resource group. +// loadBalancerName - the name of the load balancer. +func (client LoadBalancerNetworkInterfacesClient) List(ctx context.Context, resourceGroupName string, loadBalancerName string) (result InterfaceListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerNetworkInterfacesClient.List") + defer func() { + sc := -1 + if result.ilr.Response.Response != nil { + sc = result.ilr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, loadBalancerName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerNetworkInterfacesClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.ilr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.LoadBalancerNetworkInterfacesClient", "List", resp, "Failure sending request") + return + } + + result.ilr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerNetworkInterfacesClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client LoadBalancerNetworkInterfacesClient) ListPreparer(ctx context.Context, resourceGroupName string, loadBalancerName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "loadBalancerName": autorest.Encode("path", loadBalancerName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/networkInterfaces", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client LoadBalancerNetworkInterfacesClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client LoadBalancerNetworkInterfacesClient) ListResponder(resp *http.Response) (result InterfaceListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client LoadBalancerNetworkInterfacesClient) listNextResults(ctx context.Context, lastResults InterfaceListResult) (result InterfaceListResult, err error) { + req, err := lastResults.interfaceListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.LoadBalancerNetworkInterfacesClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.LoadBalancerNetworkInterfacesClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerNetworkInterfacesClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client LoadBalancerNetworkInterfacesClient) ListComplete(ctx context.Context, resourceGroupName string, loadBalancerName string) (result InterfaceListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerNetworkInterfacesClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, loadBalancerName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/loadbalanceroutboundrules.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/loadbalanceroutboundrules.go new file mode 100644 index 0000000..10c6c39 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/loadbalanceroutboundrules.go @@ -0,0 +1,235 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// LoadBalancerOutboundRulesClient is the network Client +type LoadBalancerOutboundRulesClient struct { + BaseClient +} + +// NewLoadBalancerOutboundRulesClient creates an instance of the LoadBalancerOutboundRulesClient client. +func NewLoadBalancerOutboundRulesClient(subscriptionID string) LoadBalancerOutboundRulesClient { + return NewLoadBalancerOutboundRulesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewLoadBalancerOutboundRulesClientWithBaseURI creates an instance of the LoadBalancerOutboundRulesClient client +// using a custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign +// clouds, Azure stack). +func NewLoadBalancerOutboundRulesClientWithBaseURI(baseURI string, subscriptionID string) LoadBalancerOutboundRulesClient { + return LoadBalancerOutboundRulesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// Get gets the specified load balancer outbound rule. +// Parameters: +// resourceGroupName - the name of the resource group. +// loadBalancerName - the name of the load balancer. +// outboundRuleName - the name of the outbound rule. +func (client LoadBalancerOutboundRulesClient) Get(ctx context.Context, resourceGroupName string, loadBalancerName string, outboundRuleName string) (result OutboundRule, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerOutboundRulesClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, loadBalancerName, outboundRuleName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerOutboundRulesClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.LoadBalancerOutboundRulesClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerOutboundRulesClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client LoadBalancerOutboundRulesClient) GetPreparer(ctx context.Context, resourceGroupName string, loadBalancerName string, outboundRuleName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "loadBalancerName": autorest.Encode("path", loadBalancerName), + "outboundRuleName": autorest.Encode("path", outboundRuleName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/outboundRules/{outboundRuleName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client LoadBalancerOutboundRulesClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client LoadBalancerOutboundRulesClient) GetResponder(resp *http.Response) (result OutboundRule, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all the outbound rules in a load balancer. +// Parameters: +// resourceGroupName - the name of the resource group. +// loadBalancerName - the name of the load balancer. +func (client LoadBalancerOutboundRulesClient) List(ctx context.Context, resourceGroupName string, loadBalancerName string) (result LoadBalancerOutboundRuleListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerOutboundRulesClient.List") + defer func() { + sc := -1 + if result.lborlr.Response.Response != nil { + sc = result.lborlr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, loadBalancerName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerOutboundRulesClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.lborlr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.LoadBalancerOutboundRulesClient", "List", resp, "Failure sending request") + return + } + + result.lborlr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerOutboundRulesClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client LoadBalancerOutboundRulesClient) ListPreparer(ctx context.Context, resourceGroupName string, loadBalancerName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "loadBalancerName": autorest.Encode("path", loadBalancerName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/outboundRules", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client LoadBalancerOutboundRulesClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client LoadBalancerOutboundRulesClient) ListResponder(resp *http.Response) (result LoadBalancerOutboundRuleListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client LoadBalancerOutboundRulesClient) listNextResults(ctx context.Context, lastResults LoadBalancerOutboundRuleListResult) (result LoadBalancerOutboundRuleListResult, err error) { + req, err := lastResults.loadBalancerOutboundRuleListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.LoadBalancerOutboundRulesClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.LoadBalancerOutboundRulesClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerOutboundRulesClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client LoadBalancerOutboundRulesClient) ListComplete(ctx context.Context, resourceGroupName string, loadBalancerName string) (result LoadBalancerOutboundRuleListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerOutboundRulesClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, loadBalancerName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/loadbalancerprobes.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/loadbalancerprobes.go new file mode 100644 index 0000000..af05530 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/loadbalancerprobes.go @@ -0,0 +1,235 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// LoadBalancerProbesClient is the network Client +type LoadBalancerProbesClient struct { + BaseClient +} + +// NewLoadBalancerProbesClient creates an instance of the LoadBalancerProbesClient client. +func NewLoadBalancerProbesClient(subscriptionID string) LoadBalancerProbesClient { + return NewLoadBalancerProbesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewLoadBalancerProbesClientWithBaseURI creates an instance of the LoadBalancerProbesClient client using a custom +// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure +// stack). +func NewLoadBalancerProbesClientWithBaseURI(baseURI string, subscriptionID string) LoadBalancerProbesClient { + return LoadBalancerProbesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// Get gets load balancer probe. +// Parameters: +// resourceGroupName - the name of the resource group. +// loadBalancerName - the name of the load balancer. +// probeName - the name of the probe. +func (client LoadBalancerProbesClient) Get(ctx context.Context, resourceGroupName string, loadBalancerName string, probeName string) (result Probe, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerProbesClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, loadBalancerName, probeName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerProbesClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.LoadBalancerProbesClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerProbesClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client LoadBalancerProbesClient) GetPreparer(ctx context.Context, resourceGroupName string, loadBalancerName string, probeName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "loadBalancerName": autorest.Encode("path", loadBalancerName), + "probeName": autorest.Encode("path", probeName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/probes/{probeName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client LoadBalancerProbesClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client LoadBalancerProbesClient) GetResponder(resp *http.Response) (result Probe, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all the load balancer probes. +// Parameters: +// resourceGroupName - the name of the resource group. +// loadBalancerName - the name of the load balancer. +func (client LoadBalancerProbesClient) List(ctx context.Context, resourceGroupName string, loadBalancerName string) (result LoadBalancerProbeListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerProbesClient.List") + defer func() { + sc := -1 + if result.lbplr.Response.Response != nil { + sc = result.lbplr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, loadBalancerName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerProbesClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.lbplr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.LoadBalancerProbesClient", "List", resp, "Failure sending request") + return + } + + result.lbplr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerProbesClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client LoadBalancerProbesClient) ListPreparer(ctx context.Context, resourceGroupName string, loadBalancerName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "loadBalancerName": autorest.Encode("path", loadBalancerName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/probes", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client LoadBalancerProbesClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client LoadBalancerProbesClient) ListResponder(resp *http.Response) (result LoadBalancerProbeListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client LoadBalancerProbesClient) listNextResults(ctx context.Context, lastResults LoadBalancerProbeListResult) (result LoadBalancerProbeListResult, err error) { + req, err := lastResults.loadBalancerProbeListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.LoadBalancerProbesClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.LoadBalancerProbesClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancerProbesClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client LoadBalancerProbesClient) ListComplete(ctx context.Context, resourceGroupName string, loadBalancerName string) (result LoadBalancerProbeListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerProbesClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, loadBalancerName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/loadbalancers.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/loadbalancers.go new file mode 100644 index 0000000..eae235e --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/loadbalancers.go @@ -0,0 +1,577 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// LoadBalancersClient is the network Client +type LoadBalancersClient struct { + BaseClient +} + +// NewLoadBalancersClient creates an instance of the LoadBalancersClient client. +func NewLoadBalancersClient(subscriptionID string) LoadBalancersClient { + return NewLoadBalancersClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewLoadBalancersClientWithBaseURI creates an instance of the LoadBalancersClient client using a custom endpoint. +// Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewLoadBalancersClientWithBaseURI(baseURI string, subscriptionID string) LoadBalancersClient { + return LoadBalancersClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a load balancer. +// Parameters: +// resourceGroupName - the name of the resource group. +// loadBalancerName - the name of the load balancer. +// parameters - parameters supplied to the create or update load balancer operation. +func (client LoadBalancersClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, loadBalancerName string, parameters LoadBalancer) (result LoadBalancersCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancersClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, loadBalancerName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client LoadBalancersClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, loadBalancerName string, parameters LoadBalancer) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "loadBalancerName": autorest.Encode("path", loadBalancerName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client LoadBalancersClient) CreateOrUpdateSender(req *http.Request) (future LoadBalancersCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client LoadBalancersClient) CreateOrUpdateResponder(resp *http.Response) (result LoadBalancer, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified load balancer. +// Parameters: +// resourceGroupName - the name of the resource group. +// loadBalancerName - the name of the load balancer. +func (client LoadBalancersClient) Delete(ctx context.Context, resourceGroupName string, loadBalancerName string) (result LoadBalancersDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancersClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, loadBalancerName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client LoadBalancersClient) DeletePreparer(ctx context.Context, resourceGroupName string, loadBalancerName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "loadBalancerName": autorest.Encode("path", loadBalancerName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client LoadBalancersClient) DeleteSender(req *http.Request) (future LoadBalancersDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client LoadBalancersClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified load balancer. +// Parameters: +// resourceGroupName - the name of the resource group. +// loadBalancerName - the name of the load balancer. +// expand - expands referenced resources. +func (client LoadBalancersClient) Get(ctx context.Context, resourceGroupName string, loadBalancerName string, expand string) (result LoadBalancer, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancersClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, loadBalancerName, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client LoadBalancersClient) GetPreparer(ctx context.Context, resourceGroupName string, loadBalancerName string, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "loadBalancerName": autorest.Encode("path", loadBalancerName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client LoadBalancersClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client LoadBalancersClient) GetResponder(resp *http.Response) (result LoadBalancer, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all the load balancers in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client LoadBalancersClient) List(ctx context.Context, resourceGroupName string) (result LoadBalancerListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancersClient.List") + defer func() { + sc := -1 + if result.lblr.Response.Response != nil { + sc = result.lblr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.lblr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "List", resp, "Failure sending request") + return + } + + result.lblr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client LoadBalancersClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client LoadBalancersClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client LoadBalancersClient) ListResponder(resp *http.Response) (result LoadBalancerListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client LoadBalancersClient) listNextResults(ctx context.Context, lastResults LoadBalancerListResult) (result LoadBalancerListResult, err error) { + req, err := lastResults.loadBalancerListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client LoadBalancersClient) ListComplete(ctx context.Context, resourceGroupName string) (result LoadBalancerListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancersClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName) + return +} + +// ListAll gets all the load balancers in a subscription. +func (client LoadBalancersClient) ListAll(ctx context.Context) (result LoadBalancerListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancersClient.ListAll") + defer func() { + sc := -1 + if result.lblr.Response.Response != nil { + sc = result.lblr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listAllNextResults + req, err := client.ListAllPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "ListAll", nil, "Failure preparing request") + return + } + + resp, err := client.ListAllSender(req) + if err != nil { + result.lblr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "ListAll", resp, "Failure sending request") + return + } + + result.lblr, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "ListAll", resp, "Failure responding to request") + } + + return +} + +// ListAllPreparer prepares the ListAll request. +func (client LoadBalancersClient) ListAllPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/loadBalancers", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAllSender sends the ListAll request. The method will close the +// http.Response Body if it receives an error. +func (client LoadBalancersClient) ListAllSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAllResponder handles the response to the ListAll request. The method always +// closes the http.Response Body. +func (client LoadBalancersClient) ListAllResponder(resp *http.Response) (result LoadBalancerListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listAllNextResults retrieves the next set of results, if any. +func (client LoadBalancersClient) listAllNextResults(ctx context.Context, lastResults LoadBalancerListResult) (result LoadBalancerListResult, err error) { + req, err := lastResults.loadBalancerListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "listAllNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListAllSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "listAllNextResults", resp, "Failure sending next results request") + } + result, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "listAllNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListAllComplete enumerates all values, automatically crossing page boundaries as required. +func (client LoadBalancersClient) ListAllComplete(ctx context.Context) (result LoadBalancerListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancersClient.ListAll") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListAll(ctx) + return +} + +// UpdateTags updates a load balancer tags. +// Parameters: +// resourceGroupName - the name of the resource group. +// loadBalancerName - the name of the load balancer. +// parameters - parameters supplied to update load balancer tags. +func (client LoadBalancersClient) UpdateTags(ctx context.Context, resourceGroupName string, loadBalancerName string, parameters TagsObject) (result LoadBalancer, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancersClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, loadBalancerName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client LoadBalancersClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, loadBalancerName string, parameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "loadBalancerName": autorest.Encode("path", loadBalancerName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client LoadBalancersClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client LoadBalancersClient) UpdateTagsResponder(resp *http.Response) (result LoadBalancer, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/localnetworkgateways.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/localnetworkgateways.go new file mode 100644 index 0000000..601eb68 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/localnetworkgateways.go @@ -0,0 +1,492 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// LocalNetworkGatewaysClient is the network Client +type LocalNetworkGatewaysClient struct { + BaseClient +} + +// NewLocalNetworkGatewaysClient creates an instance of the LocalNetworkGatewaysClient client. +func NewLocalNetworkGatewaysClient(subscriptionID string) LocalNetworkGatewaysClient { + return NewLocalNetworkGatewaysClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewLocalNetworkGatewaysClientWithBaseURI creates an instance of the LocalNetworkGatewaysClient client using a custom +// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure +// stack). +func NewLocalNetworkGatewaysClientWithBaseURI(baseURI string, subscriptionID string) LocalNetworkGatewaysClient { + return LocalNetworkGatewaysClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a local network gateway in the specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// localNetworkGatewayName - the name of the local network gateway. +// parameters - parameters supplied to the create or update local network gateway operation. +func (client LocalNetworkGatewaysClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, localNetworkGatewayName string, parameters LocalNetworkGateway) (result LocalNetworkGatewaysCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LocalNetworkGatewaysClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: localNetworkGatewayName, + Constraints: []validation.Constraint{{Target: "localNetworkGatewayName", Name: validation.MinLength, Rule: 1, Chain: nil}}}, + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.LocalNetworkGatewayPropertiesFormat", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil { + return result, validation.NewError("network.LocalNetworkGatewaysClient", "CreateOrUpdate", err.Error()) + } + + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, localNetworkGatewayName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client LocalNetworkGatewaysClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, localNetworkGatewayName string, parameters LocalNetworkGateway) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "localNetworkGatewayName": autorest.Encode("path", localNetworkGatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client LocalNetworkGatewaysClient) CreateOrUpdateSender(req *http.Request) (future LocalNetworkGatewaysCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client LocalNetworkGatewaysClient) CreateOrUpdateResponder(resp *http.Response) (result LocalNetworkGateway, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified local network gateway. +// Parameters: +// resourceGroupName - the name of the resource group. +// localNetworkGatewayName - the name of the local network gateway. +func (client LocalNetworkGatewaysClient) Delete(ctx context.Context, resourceGroupName string, localNetworkGatewayName string) (result LocalNetworkGatewaysDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LocalNetworkGatewaysClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: localNetworkGatewayName, + Constraints: []validation.Constraint{{Target: "localNetworkGatewayName", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil { + return result, validation.NewError("network.LocalNetworkGatewaysClient", "Delete", err.Error()) + } + + req, err := client.DeletePreparer(ctx, resourceGroupName, localNetworkGatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client LocalNetworkGatewaysClient) DeletePreparer(ctx context.Context, resourceGroupName string, localNetworkGatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "localNetworkGatewayName": autorest.Encode("path", localNetworkGatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client LocalNetworkGatewaysClient) DeleteSender(req *http.Request) (future LocalNetworkGatewaysDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client LocalNetworkGatewaysClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified local network gateway in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// localNetworkGatewayName - the name of the local network gateway. +func (client LocalNetworkGatewaysClient) Get(ctx context.Context, resourceGroupName string, localNetworkGatewayName string) (result LocalNetworkGateway, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LocalNetworkGatewaysClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: localNetworkGatewayName, + Constraints: []validation.Constraint{{Target: "localNetworkGatewayName", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil { + return result, validation.NewError("network.LocalNetworkGatewaysClient", "Get", err.Error()) + } + + req, err := client.GetPreparer(ctx, resourceGroupName, localNetworkGatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client LocalNetworkGatewaysClient) GetPreparer(ctx context.Context, resourceGroupName string, localNetworkGatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "localNetworkGatewayName": autorest.Encode("path", localNetworkGatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client LocalNetworkGatewaysClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client LocalNetworkGatewaysClient) GetResponder(resp *http.Response) (result LocalNetworkGateway, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all the local network gateways in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client LocalNetworkGatewaysClient) List(ctx context.Context, resourceGroupName string) (result LocalNetworkGatewayListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LocalNetworkGatewaysClient.List") + defer func() { + sc := -1 + if result.lnglr.Response.Response != nil { + sc = result.lnglr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.lnglr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "List", resp, "Failure sending request") + return + } + + result.lnglr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client LocalNetworkGatewaysClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client LocalNetworkGatewaysClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client LocalNetworkGatewaysClient) ListResponder(resp *http.Response) (result LocalNetworkGatewayListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client LocalNetworkGatewaysClient) listNextResults(ctx context.Context, lastResults LocalNetworkGatewayListResult) (result LocalNetworkGatewayListResult, err error) { + req, err := lastResults.localNetworkGatewayListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client LocalNetworkGatewaysClient) ListComplete(ctx context.Context, resourceGroupName string) (result LocalNetworkGatewayListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LocalNetworkGatewaysClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName) + return +} + +// UpdateTags updates a local network gateway tags. +// Parameters: +// resourceGroupName - the name of the resource group. +// localNetworkGatewayName - the name of the local network gateway. +// parameters - parameters supplied to update local network gateway tags. +func (client LocalNetworkGatewaysClient) UpdateTags(ctx context.Context, resourceGroupName string, localNetworkGatewayName string, parameters TagsObject) (result LocalNetworkGateway, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LocalNetworkGatewaysClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: localNetworkGatewayName, + Constraints: []validation.Constraint{{Target: "localNetworkGatewayName", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil { + return result, validation.NewError("network.LocalNetworkGatewaysClient", "UpdateTags", err.Error()) + } + + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, localNetworkGatewayName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client LocalNetworkGatewaysClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, localNetworkGatewayName string, parameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "localNetworkGatewayName": autorest.Encode("path", localNetworkGatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client LocalNetworkGatewaysClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client LocalNetworkGatewaysClient) UpdateTagsResponder(resp *http.Response) (result LocalNetworkGateway, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/models.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/models.go new file mode 100644 index 0000000..d803d1f --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/models.go @@ -0,0 +1,35574 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "encoding/json" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/date" + "github.com/Azure/go-autorest/autorest/to" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// The package's fully qualified name. +const fqdn = "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network" + +// Access enumerates the values for access. +type Access string + +const ( + // Allow ... + Allow Access = "Allow" + // Deny ... + Deny Access = "Deny" +) + +// PossibleAccessValues returns an array of possible values for the Access const type. +func PossibleAccessValues() []Access { + return []Access{Allow, Deny} +} + +// ApplicationGatewayBackendHealthServerHealth enumerates the values for application gateway backend health +// server health. +type ApplicationGatewayBackendHealthServerHealth string + +const ( + // Down ... + Down ApplicationGatewayBackendHealthServerHealth = "Down" + // Draining ... + Draining ApplicationGatewayBackendHealthServerHealth = "Draining" + // Partial ... + Partial ApplicationGatewayBackendHealthServerHealth = "Partial" + // Unknown ... + Unknown ApplicationGatewayBackendHealthServerHealth = "Unknown" + // Up ... + Up ApplicationGatewayBackendHealthServerHealth = "Up" +) + +// PossibleApplicationGatewayBackendHealthServerHealthValues returns an array of possible values for the ApplicationGatewayBackendHealthServerHealth const type. +func PossibleApplicationGatewayBackendHealthServerHealthValues() []ApplicationGatewayBackendHealthServerHealth { + return []ApplicationGatewayBackendHealthServerHealth{Down, Draining, Partial, Unknown, Up} +} + +// ApplicationGatewayCookieBasedAffinity enumerates the values for application gateway cookie based affinity. +type ApplicationGatewayCookieBasedAffinity string + +const ( + // Disabled ... + Disabled ApplicationGatewayCookieBasedAffinity = "Disabled" + // Enabled ... + Enabled ApplicationGatewayCookieBasedAffinity = "Enabled" +) + +// PossibleApplicationGatewayCookieBasedAffinityValues returns an array of possible values for the ApplicationGatewayCookieBasedAffinity const type. +func PossibleApplicationGatewayCookieBasedAffinityValues() []ApplicationGatewayCookieBasedAffinity { + return []ApplicationGatewayCookieBasedAffinity{Disabled, Enabled} +} + +// ApplicationGatewayCustomErrorStatusCode enumerates the values for application gateway custom error status +// code. +type ApplicationGatewayCustomErrorStatusCode string + +const ( + // HTTPStatus403 ... + HTTPStatus403 ApplicationGatewayCustomErrorStatusCode = "HttpStatus403" + // HTTPStatus502 ... + HTTPStatus502 ApplicationGatewayCustomErrorStatusCode = "HttpStatus502" +) + +// PossibleApplicationGatewayCustomErrorStatusCodeValues returns an array of possible values for the ApplicationGatewayCustomErrorStatusCode const type. +func PossibleApplicationGatewayCustomErrorStatusCodeValues() []ApplicationGatewayCustomErrorStatusCode { + return []ApplicationGatewayCustomErrorStatusCode{HTTPStatus403, HTTPStatus502} +} + +// ApplicationGatewayFirewallMode enumerates the values for application gateway firewall mode. +type ApplicationGatewayFirewallMode string + +const ( + // Detection ... + Detection ApplicationGatewayFirewallMode = "Detection" + // Prevention ... + Prevention ApplicationGatewayFirewallMode = "Prevention" +) + +// PossibleApplicationGatewayFirewallModeValues returns an array of possible values for the ApplicationGatewayFirewallMode const type. +func PossibleApplicationGatewayFirewallModeValues() []ApplicationGatewayFirewallMode { + return []ApplicationGatewayFirewallMode{Detection, Prevention} +} + +// ApplicationGatewayOperationalState enumerates the values for application gateway operational state. +type ApplicationGatewayOperationalState string + +const ( + // Running ... + Running ApplicationGatewayOperationalState = "Running" + // Starting ... + Starting ApplicationGatewayOperationalState = "Starting" + // Stopped ... + Stopped ApplicationGatewayOperationalState = "Stopped" + // Stopping ... + Stopping ApplicationGatewayOperationalState = "Stopping" +) + +// PossibleApplicationGatewayOperationalStateValues returns an array of possible values for the ApplicationGatewayOperationalState const type. +func PossibleApplicationGatewayOperationalStateValues() []ApplicationGatewayOperationalState { + return []ApplicationGatewayOperationalState{Running, Starting, Stopped, Stopping} +} + +// ApplicationGatewayProtocol enumerates the values for application gateway protocol. +type ApplicationGatewayProtocol string + +const ( + // HTTP ... + HTTP ApplicationGatewayProtocol = "Http" + // HTTPS ... + HTTPS ApplicationGatewayProtocol = "Https" +) + +// PossibleApplicationGatewayProtocolValues returns an array of possible values for the ApplicationGatewayProtocol const type. +func PossibleApplicationGatewayProtocolValues() []ApplicationGatewayProtocol { + return []ApplicationGatewayProtocol{HTTP, HTTPS} +} + +// ApplicationGatewayRedirectType enumerates the values for application gateway redirect type. +type ApplicationGatewayRedirectType string + +const ( + // Found ... + Found ApplicationGatewayRedirectType = "Found" + // Permanent ... + Permanent ApplicationGatewayRedirectType = "Permanent" + // SeeOther ... + SeeOther ApplicationGatewayRedirectType = "SeeOther" + // Temporary ... + Temporary ApplicationGatewayRedirectType = "Temporary" +) + +// PossibleApplicationGatewayRedirectTypeValues returns an array of possible values for the ApplicationGatewayRedirectType const type. +func PossibleApplicationGatewayRedirectTypeValues() []ApplicationGatewayRedirectType { + return []ApplicationGatewayRedirectType{Found, Permanent, SeeOther, Temporary} +} + +// ApplicationGatewayRequestRoutingRuleType enumerates the values for application gateway request routing rule +// type. +type ApplicationGatewayRequestRoutingRuleType string + +const ( + // Basic ... + Basic ApplicationGatewayRequestRoutingRuleType = "Basic" + // PathBasedRouting ... + PathBasedRouting ApplicationGatewayRequestRoutingRuleType = "PathBasedRouting" +) + +// PossibleApplicationGatewayRequestRoutingRuleTypeValues returns an array of possible values for the ApplicationGatewayRequestRoutingRuleType const type. +func PossibleApplicationGatewayRequestRoutingRuleTypeValues() []ApplicationGatewayRequestRoutingRuleType { + return []ApplicationGatewayRequestRoutingRuleType{Basic, PathBasedRouting} +} + +// ApplicationGatewaySkuName enumerates the values for application gateway sku name. +type ApplicationGatewaySkuName string + +const ( + // StandardLarge ... + StandardLarge ApplicationGatewaySkuName = "Standard_Large" + // StandardMedium ... + StandardMedium ApplicationGatewaySkuName = "Standard_Medium" + // StandardSmall ... + StandardSmall ApplicationGatewaySkuName = "Standard_Small" + // StandardV2 ... + StandardV2 ApplicationGatewaySkuName = "Standard_v2" + // WAFLarge ... + WAFLarge ApplicationGatewaySkuName = "WAF_Large" + // WAFMedium ... + WAFMedium ApplicationGatewaySkuName = "WAF_Medium" + // WAFV2 ... + WAFV2 ApplicationGatewaySkuName = "WAF_v2" +) + +// PossibleApplicationGatewaySkuNameValues returns an array of possible values for the ApplicationGatewaySkuName const type. +func PossibleApplicationGatewaySkuNameValues() []ApplicationGatewaySkuName { + return []ApplicationGatewaySkuName{StandardLarge, StandardMedium, StandardSmall, StandardV2, WAFLarge, WAFMedium, WAFV2} +} + +// ApplicationGatewaySslCipherSuite enumerates the values for application gateway ssl cipher suite. +type ApplicationGatewaySslCipherSuite string + +const ( + // TLSDHEDSSWITH3DESEDECBCSHA ... + TLSDHEDSSWITH3DESEDECBCSHA ApplicationGatewaySslCipherSuite = "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA" + // TLSDHEDSSWITHAES128CBCSHA ... + TLSDHEDSSWITHAES128CBCSHA ApplicationGatewaySslCipherSuite = "TLS_DHE_DSS_WITH_AES_128_CBC_SHA" + // TLSDHEDSSWITHAES128CBCSHA256 ... + TLSDHEDSSWITHAES128CBCSHA256 ApplicationGatewaySslCipherSuite = "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256" + // TLSDHEDSSWITHAES256CBCSHA ... + TLSDHEDSSWITHAES256CBCSHA ApplicationGatewaySslCipherSuite = "TLS_DHE_DSS_WITH_AES_256_CBC_SHA" + // TLSDHEDSSWITHAES256CBCSHA256 ... + TLSDHEDSSWITHAES256CBCSHA256 ApplicationGatewaySslCipherSuite = "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256" + // TLSDHERSAWITHAES128CBCSHA ... + TLSDHERSAWITHAES128CBCSHA ApplicationGatewaySslCipherSuite = "TLS_DHE_RSA_WITH_AES_128_CBC_SHA" + // TLSDHERSAWITHAES128GCMSHA256 ... + TLSDHERSAWITHAES128GCMSHA256 ApplicationGatewaySslCipherSuite = "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256" + // TLSDHERSAWITHAES256CBCSHA ... + TLSDHERSAWITHAES256CBCSHA ApplicationGatewaySslCipherSuite = "TLS_DHE_RSA_WITH_AES_256_CBC_SHA" + // TLSDHERSAWITHAES256GCMSHA384 ... + TLSDHERSAWITHAES256GCMSHA384 ApplicationGatewaySslCipherSuite = "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384" + // TLSECDHEECDSAWITHAES128CBCSHA ... + TLSECDHEECDSAWITHAES128CBCSHA ApplicationGatewaySslCipherSuite = "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA" + // TLSECDHEECDSAWITHAES128CBCSHA256 ... + TLSECDHEECDSAWITHAES128CBCSHA256 ApplicationGatewaySslCipherSuite = "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256" + // TLSECDHEECDSAWITHAES128GCMSHA256 ... + TLSECDHEECDSAWITHAES128GCMSHA256 ApplicationGatewaySslCipherSuite = "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256" + // TLSECDHEECDSAWITHAES256CBCSHA ... + TLSECDHEECDSAWITHAES256CBCSHA ApplicationGatewaySslCipherSuite = "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA" + // TLSECDHEECDSAWITHAES256CBCSHA384 ... + TLSECDHEECDSAWITHAES256CBCSHA384 ApplicationGatewaySslCipherSuite = "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384" + // TLSECDHEECDSAWITHAES256GCMSHA384 ... + TLSECDHEECDSAWITHAES256GCMSHA384 ApplicationGatewaySslCipherSuite = "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384" + // TLSECDHERSAWITHAES128CBCSHA ... + TLSECDHERSAWITHAES128CBCSHA ApplicationGatewaySslCipherSuite = "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA" + // TLSECDHERSAWITHAES128CBCSHA256 ... + TLSECDHERSAWITHAES128CBCSHA256 ApplicationGatewaySslCipherSuite = "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256" + // TLSECDHERSAWITHAES128GCMSHA256 ... + TLSECDHERSAWITHAES128GCMSHA256 ApplicationGatewaySslCipherSuite = "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" + // TLSECDHERSAWITHAES256CBCSHA ... + TLSECDHERSAWITHAES256CBCSHA ApplicationGatewaySslCipherSuite = "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA" + // TLSECDHERSAWITHAES256CBCSHA384 ... + TLSECDHERSAWITHAES256CBCSHA384 ApplicationGatewaySslCipherSuite = "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384" + // TLSECDHERSAWITHAES256GCMSHA384 ... + TLSECDHERSAWITHAES256GCMSHA384 ApplicationGatewaySslCipherSuite = "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384" + // TLSRSAWITH3DESEDECBCSHA ... + TLSRSAWITH3DESEDECBCSHA ApplicationGatewaySslCipherSuite = "TLS_RSA_WITH_3DES_EDE_CBC_SHA" + // TLSRSAWITHAES128CBCSHA ... + TLSRSAWITHAES128CBCSHA ApplicationGatewaySslCipherSuite = "TLS_RSA_WITH_AES_128_CBC_SHA" + // TLSRSAWITHAES128CBCSHA256 ... + TLSRSAWITHAES128CBCSHA256 ApplicationGatewaySslCipherSuite = "TLS_RSA_WITH_AES_128_CBC_SHA256" + // TLSRSAWITHAES128GCMSHA256 ... + TLSRSAWITHAES128GCMSHA256 ApplicationGatewaySslCipherSuite = "TLS_RSA_WITH_AES_128_GCM_SHA256" + // TLSRSAWITHAES256CBCSHA ... + TLSRSAWITHAES256CBCSHA ApplicationGatewaySslCipherSuite = "TLS_RSA_WITH_AES_256_CBC_SHA" + // TLSRSAWITHAES256CBCSHA256 ... + TLSRSAWITHAES256CBCSHA256 ApplicationGatewaySslCipherSuite = "TLS_RSA_WITH_AES_256_CBC_SHA256" + // TLSRSAWITHAES256GCMSHA384 ... + TLSRSAWITHAES256GCMSHA384 ApplicationGatewaySslCipherSuite = "TLS_RSA_WITH_AES_256_GCM_SHA384" +) + +// PossibleApplicationGatewaySslCipherSuiteValues returns an array of possible values for the ApplicationGatewaySslCipherSuite const type. +func PossibleApplicationGatewaySslCipherSuiteValues() []ApplicationGatewaySslCipherSuite { + return []ApplicationGatewaySslCipherSuite{TLSDHEDSSWITH3DESEDECBCSHA, TLSDHEDSSWITHAES128CBCSHA, TLSDHEDSSWITHAES128CBCSHA256, TLSDHEDSSWITHAES256CBCSHA, TLSDHEDSSWITHAES256CBCSHA256, TLSDHERSAWITHAES128CBCSHA, TLSDHERSAWITHAES128GCMSHA256, TLSDHERSAWITHAES256CBCSHA, TLSDHERSAWITHAES256GCMSHA384, TLSECDHEECDSAWITHAES128CBCSHA, TLSECDHEECDSAWITHAES128CBCSHA256, TLSECDHEECDSAWITHAES128GCMSHA256, TLSECDHEECDSAWITHAES256CBCSHA, TLSECDHEECDSAWITHAES256CBCSHA384, TLSECDHEECDSAWITHAES256GCMSHA384, TLSECDHERSAWITHAES128CBCSHA, TLSECDHERSAWITHAES128CBCSHA256, TLSECDHERSAWITHAES128GCMSHA256, TLSECDHERSAWITHAES256CBCSHA, TLSECDHERSAWITHAES256CBCSHA384, TLSECDHERSAWITHAES256GCMSHA384, TLSRSAWITH3DESEDECBCSHA, TLSRSAWITHAES128CBCSHA, TLSRSAWITHAES128CBCSHA256, TLSRSAWITHAES128GCMSHA256, TLSRSAWITHAES256CBCSHA, TLSRSAWITHAES256CBCSHA256, TLSRSAWITHAES256GCMSHA384} +} + +// ApplicationGatewaySslPolicyName enumerates the values for application gateway ssl policy name. +type ApplicationGatewaySslPolicyName string + +const ( + // AppGwSslPolicy20150501 ... + AppGwSslPolicy20150501 ApplicationGatewaySslPolicyName = "AppGwSslPolicy20150501" + // AppGwSslPolicy20170401 ... + AppGwSslPolicy20170401 ApplicationGatewaySslPolicyName = "AppGwSslPolicy20170401" + // AppGwSslPolicy20170401S ... + AppGwSslPolicy20170401S ApplicationGatewaySslPolicyName = "AppGwSslPolicy20170401S" +) + +// PossibleApplicationGatewaySslPolicyNameValues returns an array of possible values for the ApplicationGatewaySslPolicyName const type. +func PossibleApplicationGatewaySslPolicyNameValues() []ApplicationGatewaySslPolicyName { + return []ApplicationGatewaySslPolicyName{AppGwSslPolicy20150501, AppGwSslPolicy20170401, AppGwSslPolicy20170401S} +} + +// ApplicationGatewaySslPolicyType enumerates the values for application gateway ssl policy type. +type ApplicationGatewaySslPolicyType string + +const ( + // Custom ... + Custom ApplicationGatewaySslPolicyType = "Custom" + // Predefined ... + Predefined ApplicationGatewaySslPolicyType = "Predefined" +) + +// PossibleApplicationGatewaySslPolicyTypeValues returns an array of possible values for the ApplicationGatewaySslPolicyType const type. +func PossibleApplicationGatewaySslPolicyTypeValues() []ApplicationGatewaySslPolicyType { + return []ApplicationGatewaySslPolicyType{Custom, Predefined} +} + +// ApplicationGatewaySslProtocol enumerates the values for application gateway ssl protocol. +type ApplicationGatewaySslProtocol string + +const ( + // TLSv10 ... + TLSv10 ApplicationGatewaySslProtocol = "TLSv1_0" + // TLSv11 ... + TLSv11 ApplicationGatewaySslProtocol = "TLSv1_1" + // TLSv12 ... + TLSv12 ApplicationGatewaySslProtocol = "TLSv1_2" +) + +// PossibleApplicationGatewaySslProtocolValues returns an array of possible values for the ApplicationGatewaySslProtocol const type. +func PossibleApplicationGatewaySslProtocolValues() []ApplicationGatewaySslProtocol { + return []ApplicationGatewaySslProtocol{TLSv10, TLSv11, TLSv12} +} + +// ApplicationGatewayTier enumerates the values for application gateway tier. +type ApplicationGatewayTier string + +const ( + // ApplicationGatewayTierStandard ... + ApplicationGatewayTierStandard ApplicationGatewayTier = "Standard" + // ApplicationGatewayTierStandardV2 ... + ApplicationGatewayTierStandardV2 ApplicationGatewayTier = "Standard_v2" + // ApplicationGatewayTierWAF ... + ApplicationGatewayTierWAF ApplicationGatewayTier = "WAF" + // ApplicationGatewayTierWAFV2 ... + ApplicationGatewayTierWAFV2 ApplicationGatewayTier = "WAF_v2" +) + +// PossibleApplicationGatewayTierValues returns an array of possible values for the ApplicationGatewayTier const type. +func PossibleApplicationGatewayTierValues() []ApplicationGatewayTier { + return []ApplicationGatewayTier{ApplicationGatewayTierStandard, ApplicationGatewayTierStandardV2, ApplicationGatewayTierWAF, ApplicationGatewayTierWAFV2} +} + +// AssociationType enumerates the values for association type. +type AssociationType string + +const ( + // Associated ... + Associated AssociationType = "Associated" + // Contains ... + Contains AssociationType = "Contains" +) + +// PossibleAssociationTypeValues returns an array of possible values for the AssociationType const type. +func PossibleAssociationTypeValues() []AssociationType { + return []AssociationType{Associated, Contains} +} + +// AuthenticationMethod enumerates the values for authentication method. +type AuthenticationMethod string + +const ( + // EAPMSCHAPv2 ... + EAPMSCHAPv2 AuthenticationMethod = "EAPMSCHAPv2" + // EAPTLS ... + EAPTLS AuthenticationMethod = "EAPTLS" +) + +// PossibleAuthenticationMethodValues returns an array of possible values for the AuthenticationMethod const type. +func PossibleAuthenticationMethodValues() []AuthenticationMethod { + return []AuthenticationMethod{EAPMSCHAPv2, EAPTLS} +} + +// AuthorizationUseStatus enumerates the values for authorization use status. +type AuthorizationUseStatus string + +const ( + // Available ... + Available AuthorizationUseStatus = "Available" + // InUse ... + InUse AuthorizationUseStatus = "InUse" +) + +// PossibleAuthorizationUseStatusValues returns an array of possible values for the AuthorizationUseStatus const type. +func PossibleAuthorizationUseStatusValues() []AuthorizationUseStatus { + return []AuthorizationUseStatus{Available, InUse} +} + +// AzureFirewallApplicationRuleProtocolType enumerates the values for azure firewall application rule protocol +// type. +type AzureFirewallApplicationRuleProtocolType string + +const ( + // AzureFirewallApplicationRuleProtocolTypeHTTP ... + AzureFirewallApplicationRuleProtocolTypeHTTP AzureFirewallApplicationRuleProtocolType = "Http" + // AzureFirewallApplicationRuleProtocolTypeHTTPS ... + AzureFirewallApplicationRuleProtocolTypeHTTPS AzureFirewallApplicationRuleProtocolType = "Https" + // AzureFirewallApplicationRuleProtocolTypeMssql ... + AzureFirewallApplicationRuleProtocolTypeMssql AzureFirewallApplicationRuleProtocolType = "Mssql" +) + +// PossibleAzureFirewallApplicationRuleProtocolTypeValues returns an array of possible values for the AzureFirewallApplicationRuleProtocolType const type. +func PossibleAzureFirewallApplicationRuleProtocolTypeValues() []AzureFirewallApplicationRuleProtocolType { + return []AzureFirewallApplicationRuleProtocolType{AzureFirewallApplicationRuleProtocolTypeHTTP, AzureFirewallApplicationRuleProtocolTypeHTTPS, AzureFirewallApplicationRuleProtocolTypeMssql} +} + +// AzureFirewallNatRCActionType enumerates the values for azure firewall nat rc action type. +type AzureFirewallNatRCActionType string + +const ( + // Dnat ... + Dnat AzureFirewallNatRCActionType = "Dnat" + // Snat ... + Snat AzureFirewallNatRCActionType = "Snat" +) + +// PossibleAzureFirewallNatRCActionTypeValues returns an array of possible values for the AzureFirewallNatRCActionType const type. +func PossibleAzureFirewallNatRCActionTypeValues() []AzureFirewallNatRCActionType { + return []AzureFirewallNatRCActionType{Dnat, Snat} +} + +// AzureFirewallNetworkRuleProtocol enumerates the values for azure firewall network rule protocol. +type AzureFirewallNetworkRuleProtocol string + +const ( + // Any ... + Any AzureFirewallNetworkRuleProtocol = "Any" + // ICMP ... + ICMP AzureFirewallNetworkRuleProtocol = "ICMP" + // TCP ... + TCP AzureFirewallNetworkRuleProtocol = "TCP" + // UDP ... + UDP AzureFirewallNetworkRuleProtocol = "UDP" +) + +// PossibleAzureFirewallNetworkRuleProtocolValues returns an array of possible values for the AzureFirewallNetworkRuleProtocol const type. +func PossibleAzureFirewallNetworkRuleProtocolValues() []AzureFirewallNetworkRuleProtocol { + return []AzureFirewallNetworkRuleProtocol{Any, ICMP, TCP, UDP} +} + +// AzureFirewallRCActionType enumerates the values for azure firewall rc action type. +type AzureFirewallRCActionType string + +const ( + // AzureFirewallRCActionTypeAllow ... + AzureFirewallRCActionTypeAllow AzureFirewallRCActionType = "Allow" + // AzureFirewallRCActionTypeDeny ... + AzureFirewallRCActionTypeDeny AzureFirewallRCActionType = "Deny" +) + +// PossibleAzureFirewallRCActionTypeValues returns an array of possible values for the AzureFirewallRCActionType const type. +func PossibleAzureFirewallRCActionTypeValues() []AzureFirewallRCActionType { + return []AzureFirewallRCActionType{AzureFirewallRCActionTypeAllow, AzureFirewallRCActionTypeDeny} +} + +// AzureFirewallSkuName enumerates the values for azure firewall sku name. +type AzureFirewallSkuName string + +const ( + // AZFWHub ... + AZFWHub AzureFirewallSkuName = "AZFW_Hub" + // AZFWVNet ... + AZFWVNet AzureFirewallSkuName = "AZFW_VNet" +) + +// PossibleAzureFirewallSkuNameValues returns an array of possible values for the AzureFirewallSkuName const type. +func PossibleAzureFirewallSkuNameValues() []AzureFirewallSkuName { + return []AzureFirewallSkuName{AZFWHub, AZFWVNet} +} + +// AzureFirewallSkuTier enumerates the values for azure firewall sku tier. +type AzureFirewallSkuTier string + +const ( + // Standard ... + Standard AzureFirewallSkuTier = "Standard" +) + +// PossibleAzureFirewallSkuTierValues returns an array of possible values for the AzureFirewallSkuTier const type. +func PossibleAzureFirewallSkuTierValues() []AzureFirewallSkuTier { + return []AzureFirewallSkuTier{Standard} +} + +// AzureFirewallThreatIntelMode enumerates the values for azure firewall threat intel mode. +type AzureFirewallThreatIntelMode string + +const ( + // AzureFirewallThreatIntelModeAlert ... + AzureFirewallThreatIntelModeAlert AzureFirewallThreatIntelMode = "Alert" + // AzureFirewallThreatIntelModeDeny ... + AzureFirewallThreatIntelModeDeny AzureFirewallThreatIntelMode = "Deny" + // AzureFirewallThreatIntelModeOff ... + AzureFirewallThreatIntelModeOff AzureFirewallThreatIntelMode = "Off" +) + +// PossibleAzureFirewallThreatIntelModeValues returns an array of possible values for the AzureFirewallThreatIntelMode const type. +func PossibleAzureFirewallThreatIntelModeValues() []AzureFirewallThreatIntelMode { + return []AzureFirewallThreatIntelMode{AzureFirewallThreatIntelModeAlert, AzureFirewallThreatIntelModeDeny, AzureFirewallThreatIntelModeOff} +} + +// BastionConnectProtocol enumerates the values for bastion connect protocol. +type BastionConnectProtocol string + +const ( + // RDP ... + RDP BastionConnectProtocol = "RDP" + // SSH ... + SSH BastionConnectProtocol = "SSH" +) + +// PossibleBastionConnectProtocolValues returns an array of possible values for the BastionConnectProtocol const type. +func PossibleBastionConnectProtocolValues() []BastionConnectProtocol { + return []BastionConnectProtocol{RDP, SSH} +} + +// BgpPeerState enumerates the values for bgp peer state. +type BgpPeerState string + +const ( + // BgpPeerStateConnected ... + BgpPeerStateConnected BgpPeerState = "Connected" + // BgpPeerStateConnecting ... + BgpPeerStateConnecting BgpPeerState = "Connecting" + // BgpPeerStateIdle ... + BgpPeerStateIdle BgpPeerState = "Idle" + // BgpPeerStateStopped ... + BgpPeerStateStopped BgpPeerState = "Stopped" + // BgpPeerStateUnknown ... + BgpPeerStateUnknown BgpPeerState = "Unknown" +) + +// PossibleBgpPeerStateValues returns an array of possible values for the BgpPeerState const type. +func PossibleBgpPeerStateValues() []BgpPeerState { + return []BgpPeerState{BgpPeerStateConnected, BgpPeerStateConnecting, BgpPeerStateIdle, BgpPeerStateStopped, BgpPeerStateUnknown} +} + +// CircuitConnectionStatus enumerates the values for circuit connection status. +type CircuitConnectionStatus string + +const ( + // Connected ... + Connected CircuitConnectionStatus = "Connected" + // Connecting ... + Connecting CircuitConnectionStatus = "Connecting" + // Disconnected ... + Disconnected CircuitConnectionStatus = "Disconnected" +) + +// PossibleCircuitConnectionStatusValues returns an array of possible values for the CircuitConnectionStatus const type. +func PossibleCircuitConnectionStatusValues() []CircuitConnectionStatus { + return []CircuitConnectionStatus{Connected, Connecting, Disconnected} +} + +// ConnectionMonitorSourceStatus enumerates the values for connection monitor source status. +type ConnectionMonitorSourceStatus string + +const ( + // ConnectionMonitorSourceStatusActive ... + ConnectionMonitorSourceStatusActive ConnectionMonitorSourceStatus = "Active" + // ConnectionMonitorSourceStatusInactive ... + ConnectionMonitorSourceStatusInactive ConnectionMonitorSourceStatus = "Inactive" + // ConnectionMonitorSourceStatusUnknown ... + ConnectionMonitorSourceStatusUnknown ConnectionMonitorSourceStatus = "Unknown" +) + +// PossibleConnectionMonitorSourceStatusValues returns an array of possible values for the ConnectionMonitorSourceStatus const type. +func PossibleConnectionMonitorSourceStatusValues() []ConnectionMonitorSourceStatus { + return []ConnectionMonitorSourceStatus{ConnectionMonitorSourceStatusActive, ConnectionMonitorSourceStatusInactive, ConnectionMonitorSourceStatusUnknown} +} + +// ConnectionState enumerates the values for connection state. +type ConnectionState string + +const ( + // ConnectionStateReachable ... + ConnectionStateReachable ConnectionState = "Reachable" + // ConnectionStateUnknown ... + ConnectionStateUnknown ConnectionState = "Unknown" + // ConnectionStateUnreachable ... + ConnectionStateUnreachable ConnectionState = "Unreachable" +) + +// PossibleConnectionStateValues returns an array of possible values for the ConnectionState const type. +func PossibleConnectionStateValues() []ConnectionState { + return []ConnectionState{ConnectionStateReachable, ConnectionStateUnknown, ConnectionStateUnreachable} +} + +// ConnectionStatus enumerates the values for connection status. +type ConnectionStatus string + +const ( + // ConnectionStatusConnected ... + ConnectionStatusConnected ConnectionStatus = "Connected" + // ConnectionStatusDegraded ... + ConnectionStatusDegraded ConnectionStatus = "Degraded" + // ConnectionStatusDisconnected ... + ConnectionStatusDisconnected ConnectionStatus = "Disconnected" + // ConnectionStatusUnknown ... + ConnectionStatusUnknown ConnectionStatus = "Unknown" +) + +// PossibleConnectionStatusValues returns an array of possible values for the ConnectionStatus const type. +func PossibleConnectionStatusValues() []ConnectionStatus { + return []ConnectionStatus{ConnectionStatusConnected, ConnectionStatusDegraded, ConnectionStatusDisconnected, ConnectionStatusUnknown} +} + +// DdosCustomPolicyProtocol enumerates the values for ddos custom policy protocol. +type DdosCustomPolicyProtocol string + +const ( + // DdosCustomPolicyProtocolSyn ... + DdosCustomPolicyProtocolSyn DdosCustomPolicyProtocol = "Syn" + // DdosCustomPolicyProtocolTCP ... + DdosCustomPolicyProtocolTCP DdosCustomPolicyProtocol = "Tcp" + // DdosCustomPolicyProtocolUDP ... + DdosCustomPolicyProtocolUDP DdosCustomPolicyProtocol = "Udp" +) + +// PossibleDdosCustomPolicyProtocolValues returns an array of possible values for the DdosCustomPolicyProtocol const type. +func PossibleDdosCustomPolicyProtocolValues() []DdosCustomPolicyProtocol { + return []DdosCustomPolicyProtocol{DdosCustomPolicyProtocolSyn, DdosCustomPolicyProtocolTCP, DdosCustomPolicyProtocolUDP} +} + +// DdosCustomPolicyTriggerSensitivityOverride enumerates the values for ddos custom policy trigger sensitivity +// override. +type DdosCustomPolicyTriggerSensitivityOverride string + +const ( + // Default ... + Default DdosCustomPolicyTriggerSensitivityOverride = "Default" + // High ... + High DdosCustomPolicyTriggerSensitivityOverride = "High" + // Low ... + Low DdosCustomPolicyTriggerSensitivityOverride = "Low" + // Relaxed ... + Relaxed DdosCustomPolicyTriggerSensitivityOverride = "Relaxed" +) + +// PossibleDdosCustomPolicyTriggerSensitivityOverrideValues returns an array of possible values for the DdosCustomPolicyTriggerSensitivityOverride const type. +func PossibleDdosCustomPolicyTriggerSensitivityOverrideValues() []DdosCustomPolicyTriggerSensitivityOverride { + return []DdosCustomPolicyTriggerSensitivityOverride{Default, High, Low, Relaxed} +} + +// DdosSettingsProtectionCoverage enumerates the values for ddos settings protection coverage. +type DdosSettingsProtectionCoverage string + +const ( + // DdosSettingsProtectionCoverageBasic ... + DdosSettingsProtectionCoverageBasic DdosSettingsProtectionCoverage = "Basic" + // DdosSettingsProtectionCoverageStandard ... + DdosSettingsProtectionCoverageStandard DdosSettingsProtectionCoverage = "Standard" +) + +// PossibleDdosSettingsProtectionCoverageValues returns an array of possible values for the DdosSettingsProtectionCoverage const type. +func PossibleDdosSettingsProtectionCoverageValues() []DdosSettingsProtectionCoverage { + return []DdosSettingsProtectionCoverage{DdosSettingsProtectionCoverageBasic, DdosSettingsProtectionCoverageStandard} +} + +// DhGroup enumerates the values for dh group. +type DhGroup string + +const ( + // DHGroup1 ... + DHGroup1 DhGroup = "DHGroup1" + // DHGroup14 ... + DHGroup14 DhGroup = "DHGroup14" + // DHGroup2 ... + DHGroup2 DhGroup = "DHGroup2" + // DHGroup2048 ... + DHGroup2048 DhGroup = "DHGroup2048" + // DHGroup24 ... + DHGroup24 DhGroup = "DHGroup24" + // ECP256 ... + ECP256 DhGroup = "ECP256" + // ECP384 ... + ECP384 DhGroup = "ECP384" + // None ... + None DhGroup = "None" +) + +// PossibleDhGroupValues returns an array of possible values for the DhGroup const type. +func PossibleDhGroupValues() []DhGroup { + return []DhGroup{DHGroup1, DHGroup14, DHGroup2, DHGroup2048, DHGroup24, ECP256, ECP384, None} +} + +// Direction enumerates the values for direction. +type Direction string + +const ( + // Inbound ... + Inbound Direction = "Inbound" + // Outbound ... + Outbound Direction = "Outbound" +) + +// PossibleDirectionValues returns an array of possible values for the Direction const type. +func PossibleDirectionValues() []Direction { + return []Direction{Inbound, Outbound} +} + +// EffectiveRouteSource enumerates the values for effective route source. +type EffectiveRouteSource string + +const ( + // EffectiveRouteSourceDefault ... + EffectiveRouteSourceDefault EffectiveRouteSource = "Default" + // EffectiveRouteSourceUnknown ... + EffectiveRouteSourceUnknown EffectiveRouteSource = "Unknown" + // EffectiveRouteSourceUser ... + EffectiveRouteSourceUser EffectiveRouteSource = "User" + // EffectiveRouteSourceVirtualNetworkGateway ... + EffectiveRouteSourceVirtualNetworkGateway EffectiveRouteSource = "VirtualNetworkGateway" +) + +// PossibleEffectiveRouteSourceValues returns an array of possible values for the EffectiveRouteSource const type. +func PossibleEffectiveRouteSourceValues() []EffectiveRouteSource { + return []EffectiveRouteSource{EffectiveRouteSourceDefault, EffectiveRouteSourceUnknown, EffectiveRouteSourceUser, EffectiveRouteSourceVirtualNetworkGateway} +} + +// EffectiveRouteState enumerates the values for effective route state. +type EffectiveRouteState string + +const ( + // Active ... + Active EffectiveRouteState = "Active" + // Invalid ... + Invalid EffectiveRouteState = "Invalid" +) + +// PossibleEffectiveRouteStateValues returns an array of possible values for the EffectiveRouteState const type. +func PossibleEffectiveRouteStateValues() []EffectiveRouteState { + return []EffectiveRouteState{Active, Invalid} +} + +// EffectiveSecurityRuleProtocol enumerates the values for effective security rule protocol. +type EffectiveSecurityRuleProtocol string + +const ( + // EffectiveSecurityRuleProtocolAll ... + EffectiveSecurityRuleProtocolAll EffectiveSecurityRuleProtocol = "All" + // EffectiveSecurityRuleProtocolTCP ... + EffectiveSecurityRuleProtocolTCP EffectiveSecurityRuleProtocol = "Tcp" + // EffectiveSecurityRuleProtocolUDP ... + EffectiveSecurityRuleProtocolUDP EffectiveSecurityRuleProtocol = "Udp" +) + +// PossibleEffectiveSecurityRuleProtocolValues returns an array of possible values for the EffectiveSecurityRuleProtocol const type. +func PossibleEffectiveSecurityRuleProtocolValues() []EffectiveSecurityRuleProtocol { + return []EffectiveSecurityRuleProtocol{EffectiveSecurityRuleProtocolAll, EffectiveSecurityRuleProtocolTCP, EffectiveSecurityRuleProtocolUDP} +} + +// EvaluationState enumerates the values for evaluation state. +type EvaluationState string + +const ( + // Completed ... + Completed EvaluationState = "Completed" + // InProgress ... + InProgress EvaluationState = "InProgress" + // NotStarted ... + NotStarted EvaluationState = "NotStarted" +) + +// PossibleEvaluationStateValues returns an array of possible values for the EvaluationState const type. +func PossibleEvaluationStateValues() []EvaluationState { + return []EvaluationState{Completed, InProgress, NotStarted} +} + +// ExpressRouteCircuitPeeringAdvertisedPublicPrefixState enumerates the values for express route circuit +// peering advertised public prefix state. +type ExpressRouteCircuitPeeringAdvertisedPublicPrefixState string + +const ( + // Configured ... + Configured ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "Configured" + // Configuring ... + Configuring ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "Configuring" + // NotConfigured ... + NotConfigured ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "NotConfigured" + // ValidationNeeded ... + ValidationNeeded ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "ValidationNeeded" +) + +// PossibleExpressRouteCircuitPeeringAdvertisedPublicPrefixStateValues returns an array of possible values for the ExpressRouteCircuitPeeringAdvertisedPublicPrefixState const type. +func PossibleExpressRouteCircuitPeeringAdvertisedPublicPrefixStateValues() []ExpressRouteCircuitPeeringAdvertisedPublicPrefixState { + return []ExpressRouteCircuitPeeringAdvertisedPublicPrefixState{Configured, Configuring, NotConfigured, ValidationNeeded} +} + +// ExpressRouteCircuitPeeringState enumerates the values for express route circuit peering state. +type ExpressRouteCircuitPeeringState string + +const ( + // ExpressRouteCircuitPeeringStateDisabled ... + ExpressRouteCircuitPeeringStateDisabled ExpressRouteCircuitPeeringState = "Disabled" + // ExpressRouteCircuitPeeringStateEnabled ... + ExpressRouteCircuitPeeringStateEnabled ExpressRouteCircuitPeeringState = "Enabled" +) + +// PossibleExpressRouteCircuitPeeringStateValues returns an array of possible values for the ExpressRouteCircuitPeeringState const type. +func PossibleExpressRouteCircuitPeeringStateValues() []ExpressRouteCircuitPeeringState { + return []ExpressRouteCircuitPeeringState{ExpressRouteCircuitPeeringStateDisabled, ExpressRouteCircuitPeeringStateEnabled} +} + +// ExpressRouteCircuitSkuFamily enumerates the values for express route circuit sku family. +type ExpressRouteCircuitSkuFamily string + +const ( + // MeteredData ... + MeteredData ExpressRouteCircuitSkuFamily = "MeteredData" + // UnlimitedData ... + UnlimitedData ExpressRouteCircuitSkuFamily = "UnlimitedData" +) + +// PossibleExpressRouteCircuitSkuFamilyValues returns an array of possible values for the ExpressRouteCircuitSkuFamily const type. +func PossibleExpressRouteCircuitSkuFamilyValues() []ExpressRouteCircuitSkuFamily { + return []ExpressRouteCircuitSkuFamily{MeteredData, UnlimitedData} +} + +// ExpressRouteCircuitSkuTier enumerates the values for express route circuit sku tier. +type ExpressRouteCircuitSkuTier string + +const ( + // ExpressRouteCircuitSkuTierBasic ... + ExpressRouteCircuitSkuTierBasic ExpressRouteCircuitSkuTier = "Basic" + // ExpressRouteCircuitSkuTierLocal ... + ExpressRouteCircuitSkuTierLocal ExpressRouteCircuitSkuTier = "Local" + // ExpressRouteCircuitSkuTierPremium ... + ExpressRouteCircuitSkuTierPremium ExpressRouteCircuitSkuTier = "Premium" + // ExpressRouteCircuitSkuTierStandard ... + ExpressRouteCircuitSkuTierStandard ExpressRouteCircuitSkuTier = "Standard" +) + +// PossibleExpressRouteCircuitSkuTierValues returns an array of possible values for the ExpressRouteCircuitSkuTier const type. +func PossibleExpressRouteCircuitSkuTierValues() []ExpressRouteCircuitSkuTier { + return []ExpressRouteCircuitSkuTier{ExpressRouteCircuitSkuTierBasic, ExpressRouteCircuitSkuTierLocal, ExpressRouteCircuitSkuTierPremium, ExpressRouteCircuitSkuTierStandard} +} + +// ExpressRouteLinkAdminState enumerates the values for express route link admin state. +type ExpressRouteLinkAdminState string + +const ( + // ExpressRouteLinkAdminStateDisabled ... + ExpressRouteLinkAdminStateDisabled ExpressRouteLinkAdminState = "Disabled" + // ExpressRouteLinkAdminStateEnabled ... + ExpressRouteLinkAdminStateEnabled ExpressRouteLinkAdminState = "Enabled" +) + +// PossibleExpressRouteLinkAdminStateValues returns an array of possible values for the ExpressRouteLinkAdminState const type. +func PossibleExpressRouteLinkAdminStateValues() []ExpressRouteLinkAdminState { + return []ExpressRouteLinkAdminState{ExpressRouteLinkAdminStateDisabled, ExpressRouteLinkAdminStateEnabled} +} + +// ExpressRouteLinkConnectorType enumerates the values for express route link connector type. +type ExpressRouteLinkConnectorType string + +const ( + // LC ... + LC ExpressRouteLinkConnectorType = "LC" + // SC ... + SC ExpressRouteLinkConnectorType = "SC" +) + +// PossibleExpressRouteLinkConnectorTypeValues returns an array of possible values for the ExpressRouteLinkConnectorType const type. +func PossibleExpressRouteLinkConnectorTypeValues() []ExpressRouteLinkConnectorType { + return []ExpressRouteLinkConnectorType{LC, SC} +} + +// ExpressRouteLinkMacSecCipher enumerates the values for express route link mac sec cipher. +type ExpressRouteLinkMacSecCipher string + +const ( + // GcmAes128 ... + GcmAes128 ExpressRouteLinkMacSecCipher = "gcm-aes-128" + // GcmAes256 ... + GcmAes256 ExpressRouteLinkMacSecCipher = "gcm-aes-256" +) + +// PossibleExpressRouteLinkMacSecCipherValues returns an array of possible values for the ExpressRouteLinkMacSecCipher const type. +func PossibleExpressRouteLinkMacSecCipherValues() []ExpressRouteLinkMacSecCipher { + return []ExpressRouteLinkMacSecCipher{GcmAes128, GcmAes256} +} + +// ExpressRoutePeeringState enumerates the values for express route peering state. +type ExpressRoutePeeringState string + +const ( + // ExpressRoutePeeringStateDisabled ... + ExpressRoutePeeringStateDisabled ExpressRoutePeeringState = "Disabled" + // ExpressRoutePeeringStateEnabled ... + ExpressRoutePeeringStateEnabled ExpressRoutePeeringState = "Enabled" +) + +// PossibleExpressRoutePeeringStateValues returns an array of possible values for the ExpressRoutePeeringState const type. +func PossibleExpressRoutePeeringStateValues() []ExpressRoutePeeringState { + return []ExpressRoutePeeringState{ExpressRoutePeeringStateDisabled, ExpressRoutePeeringStateEnabled} +} + +// ExpressRoutePeeringType enumerates the values for express route peering type. +type ExpressRoutePeeringType string + +const ( + // AzurePrivatePeering ... + AzurePrivatePeering ExpressRoutePeeringType = "AzurePrivatePeering" + // AzurePublicPeering ... + AzurePublicPeering ExpressRoutePeeringType = "AzurePublicPeering" + // MicrosoftPeering ... + MicrosoftPeering ExpressRoutePeeringType = "MicrosoftPeering" +) + +// PossibleExpressRoutePeeringTypeValues returns an array of possible values for the ExpressRoutePeeringType const type. +func PossibleExpressRoutePeeringTypeValues() []ExpressRoutePeeringType { + return []ExpressRoutePeeringType{AzurePrivatePeering, AzurePublicPeering, MicrosoftPeering} +} + +// ExpressRoutePortsEncapsulation enumerates the values for express route ports encapsulation. +type ExpressRoutePortsEncapsulation string + +const ( + // Dot1Q ... + Dot1Q ExpressRoutePortsEncapsulation = "Dot1Q" + // QinQ ... + QinQ ExpressRoutePortsEncapsulation = "QinQ" +) + +// PossibleExpressRoutePortsEncapsulationValues returns an array of possible values for the ExpressRoutePortsEncapsulation const type. +func PossibleExpressRoutePortsEncapsulationValues() []ExpressRoutePortsEncapsulation { + return []ExpressRoutePortsEncapsulation{Dot1Q, QinQ} +} + +// FirewallPolicyFilterRuleActionType enumerates the values for firewall policy filter rule action type. +type FirewallPolicyFilterRuleActionType string + +const ( + // FirewallPolicyFilterRuleActionTypeAllow ... + FirewallPolicyFilterRuleActionTypeAllow FirewallPolicyFilterRuleActionType = "Allow" + // FirewallPolicyFilterRuleActionTypeDeny ... + FirewallPolicyFilterRuleActionTypeDeny FirewallPolicyFilterRuleActionType = "Deny" +) + +// PossibleFirewallPolicyFilterRuleActionTypeValues returns an array of possible values for the FirewallPolicyFilterRuleActionType const type. +func PossibleFirewallPolicyFilterRuleActionTypeValues() []FirewallPolicyFilterRuleActionType { + return []FirewallPolicyFilterRuleActionType{FirewallPolicyFilterRuleActionTypeAllow, FirewallPolicyFilterRuleActionTypeDeny} +} + +// FirewallPolicyNatRuleActionType enumerates the values for firewall policy nat rule action type. +type FirewallPolicyNatRuleActionType string + +const ( + // DNAT ... + DNAT FirewallPolicyNatRuleActionType = "DNAT" +) + +// PossibleFirewallPolicyNatRuleActionTypeValues returns an array of possible values for the FirewallPolicyNatRuleActionType const type. +func PossibleFirewallPolicyNatRuleActionTypeValues() []FirewallPolicyNatRuleActionType { + return []FirewallPolicyNatRuleActionType{DNAT} +} + +// FirewallPolicyRuleConditionApplicationProtocolType enumerates the values for firewall policy rule condition +// application protocol type. +type FirewallPolicyRuleConditionApplicationProtocolType string + +const ( + // FirewallPolicyRuleConditionApplicationProtocolTypeHTTP ... + FirewallPolicyRuleConditionApplicationProtocolTypeHTTP FirewallPolicyRuleConditionApplicationProtocolType = "Http" + // FirewallPolicyRuleConditionApplicationProtocolTypeHTTPS ... + FirewallPolicyRuleConditionApplicationProtocolTypeHTTPS FirewallPolicyRuleConditionApplicationProtocolType = "Https" +) + +// PossibleFirewallPolicyRuleConditionApplicationProtocolTypeValues returns an array of possible values for the FirewallPolicyRuleConditionApplicationProtocolType const type. +func PossibleFirewallPolicyRuleConditionApplicationProtocolTypeValues() []FirewallPolicyRuleConditionApplicationProtocolType { + return []FirewallPolicyRuleConditionApplicationProtocolType{FirewallPolicyRuleConditionApplicationProtocolTypeHTTP, FirewallPolicyRuleConditionApplicationProtocolTypeHTTPS} +} + +// FirewallPolicyRuleConditionNetworkProtocol enumerates the values for firewall policy rule condition network +// protocol. +type FirewallPolicyRuleConditionNetworkProtocol string + +const ( + // FirewallPolicyRuleConditionNetworkProtocolAny ... + FirewallPolicyRuleConditionNetworkProtocolAny FirewallPolicyRuleConditionNetworkProtocol = "Any" + // FirewallPolicyRuleConditionNetworkProtocolICMP ... + FirewallPolicyRuleConditionNetworkProtocolICMP FirewallPolicyRuleConditionNetworkProtocol = "ICMP" + // FirewallPolicyRuleConditionNetworkProtocolTCP ... + FirewallPolicyRuleConditionNetworkProtocolTCP FirewallPolicyRuleConditionNetworkProtocol = "TCP" + // FirewallPolicyRuleConditionNetworkProtocolUDP ... + FirewallPolicyRuleConditionNetworkProtocolUDP FirewallPolicyRuleConditionNetworkProtocol = "UDP" +) + +// PossibleFirewallPolicyRuleConditionNetworkProtocolValues returns an array of possible values for the FirewallPolicyRuleConditionNetworkProtocol const type. +func PossibleFirewallPolicyRuleConditionNetworkProtocolValues() []FirewallPolicyRuleConditionNetworkProtocol { + return []FirewallPolicyRuleConditionNetworkProtocol{FirewallPolicyRuleConditionNetworkProtocolAny, FirewallPolicyRuleConditionNetworkProtocolICMP, FirewallPolicyRuleConditionNetworkProtocolTCP, FirewallPolicyRuleConditionNetworkProtocolUDP} +} + +// FlowLogFormatType enumerates the values for flow log format type. +type FlowLogFormatType string + +const ( + // JSON ... + JSON FlowLogFormatType = "JSON" +) + +// PossibleFlowLogFormatTypeValues returns an array of possible values for the FlowLogFormatType const type. +func PossibleFlowLogFormatTypeValues() []FlowLogFormatType { + return []FlowLogFormatType{JSON} +} + +// HTTPMethod enumerates the values for http method. +type HTTPMethod string + +const ( + // Get ... + Get HTTPMethod = "Get" +) + +// PossibleHTTPMethodValues returns an array of possible values for the HTTPMethod const type. +func PossibleHTTPMethodValues() []HTTPMethod { + return []HTTPMethod{Get} +} + +// HubVirtualNetworkConnectionStatus enumerates the values for hub virtual network connection status. +type HubVirtualNetworkConnectionStatus string + +const ( + // HubVirtualNetworkConnectionStatusConnected ... + HubVirtualNetworkConnectionStatusConnected HubVirtualNetworkConnectionStatus = "Connected" + // HubVirtualNetworkConnectionStatusConnecting ... + HubVirtualNetworkConnectionStatusConnecting HubVirtualNetworkConnectionStatus = "Connecting" + // HubVirtualNetworkConnectionStatusNotConnected ... + HubVirtualNetworkConnectionStatusNotConnected HubVirtualNetworkConnectionStatus = "NotConnected" + // HubVirtualNetworkConnectionStatusUnknown ... + HubVirtualNetworkConnectionStatusUnknown HubVirtualNetworkConnectionStatus = "Unknown" +) + +// PossibleHubVirtualNetworkConnectionStatusValues returns an array of possible values for the HubVirtualNetworkConnectionStatus const type. +func PossibleHubVirtualNetworkConnectionStatusValues() []HubVirtualNetworkConnectionStatus { + return []HubVirtualNetworkConnectionStatus{HubVirtualNetworkConnectionStatusConnected, HubVirtualNetworkConnectionStatusConnecting, HubVirtualNetworkConnectionStatusNotConnected, HubVirtualNetworkConnectionStatusUnknown} +} + +// IkeEncryption enumerates the values for ike encryption. +type IkeEncryption string + +const ( + // AES128 ... + AES128 IkeEncryption = "AES128" + // AES192 ... + AES192 IkeEncryption = "AES192" + // AES256 ... + AES256 IkeEncryption = "AES256" + // DES ... + DES IkeEncryption = "DES" + // DES3 ... + DES3 IkeEncryption = "DES3" + // GCMAES128 ... + GCMAES128 IkeEncryption = "GCMAES128" + // GCMAES256 ... + GCMAES256 IkeEncryption = "GCMAES256" +) + +// PossibleIkeEncryptionValues returns an array of possible values for the IkeEncryption const type. +func PossibleIkeEncryptionValues() []IkeEncryption { + return []IkeEncryption{AES128, AES192, AES256, DES, DES3, GCMAES128, GCMAES256} +} + +// IkeIntegrity enumerates the values for ike integrity. +type IkeIntegrity string + +const ( + // IkeIntegrityGCMAES128 ... + IkeIntegrityGCMAES128 IkeIntegrity = "GCMAES128" + // IkeIntegrityGCMAES256 ... + IkeIntegrityGCMAES256 IkeIntegrity = "GCMAES256" + // IkeIntegrityMD5 ... + IkeIntegrityMD5 IkeIntegrity = "MD5" + // IkeIntegritySHA1 ... + IkeIntegritySHA1 IkeIntegrity = "SHA1" + // IkeIntegritySHA256 ... + IkeIntegritySHA256 IkeIntegrity = "SHA256" + // IkeIntegritySHA384 ... + IkeIntegritySHA384 IkeIntegrity = "SHA384" +) + +// PossibleIkeIntegrityValues returns an array of possible values for the IkeIntegrity const type. +func PossibleIkeIntegrityValues() []IkeIntegrity { + return []IkeIntegrity{IkeIntegrityGCMAES128, IkeIntegrityGCMAES256, IkeIntegrityMD5, IkeIntegritySHA1, IkeIntegritySHA256, IkeIntegritySHA384} +} + +// IPAllocationMethod enumerates the values for ip allocation method. +type IPAllocationMethod string + +const ( + // Dynamic ... + Dynamic IPAllocationMethod = "Dynamic" + // Static ... + Static IPAllocationMethod = "Static" +) + +// PossibleIPAllocationMethodValues returns an array of possible values for the IPAllocationMethod const type. +func PossibleIPAllocationMethodValues() []IPAllocationMethod { + return []IPAllocationMethod{Dynamic, Static} +} + +// IPFlowProtocol enumerates the values for ip flow protocol. +type IPFlowProtocol string + +const ( + // IPFlowProtocolTCP ... + IPFlowProtocolTCP IPFlowProtocol = "TCP" + // IPFlowProtocolUDP ... + IPFlowProtocolUDP IPFlowProtocol = "UDP" +) + +// PossibleIPFlowProtocolValues returns an array of possible values for the IPFlowProtocol const type. +func PossibleIPFlowProtocolValues() []IPFlowProtocol { + return []IPFlowProtocol{IPFlowProtocolTCP, IPFlowProtocolUDP} +} + +// IpsecEncryption enumerates the values for ipsec encryption. +type IpsecEncryption string + +const ( + // IpsecEncryptionAES128 ... + IpsecEncryptionAES128 IpsecEncryption = "AES128" + // IpsecEncryptionAES192 ... + IpsecEncryptionAES192 IpsecEncryption = "AES192" + // IpsecEncryptionAES256 ... + IpsecEncryptionAES256 IpsecEncryption = "AES256" + // IpsecEncryptionDES ... + IpsecEncryptionDES IpsecEncryption = "DES" + // IpsecEncryptionDES3 ... + IpsecEncryptionDES3 IpsecEncryption = "DES3" + // IpsecEncryptionGCMAES128 ... + IpsecEncryptionGCMAES128 IpsecEncryption = "GCMAES128" + // IpsecEncryptionGCMAES192 ... + IpsecEncryptionGCMAES192 IpsecEncryption = "GCMAES192" + // IpsecEncryptionGCMAES256 ... + IpsecEncryptionGCMAES256 IpsecEncryption = "GCMAES256" + // IpsecEncryptionNone ... + IpsecEncryptionNone IpsecEncryption = "None" +) + +// PossibleIpsecEncryptionValues returns an array of possible values for the IpsecEncryption const type. +func PossibleIpsecEncryptionValues() []IpsecEncryption { + return []IpsecEncryption{IpsecEncryptionAES128, IpsecEncryptionAES192, IpsecEncryptionAES256, IpsecEncryptionDES, IpsecEncryptionDES3, IpsecEncryptionGCMAES128, IpsecEncryptionGCMAES192, IpsecEncryptionGCMAES256, IpsecEncryptionNone} +} + +// IpsecIntegrity enumerates the values for ipsec integrity. +type IpsecIntegrity string + +const ( + // IpsecIntegrityGCMAES128 ... + IpsecIntegrityGCMAES128 IpsecIntegrity = "GCMAES128" + // IpsecIntegrityGCMAES192 ... + IpsecIntegrityGCMAES192 IpsecIntegrity = "GCMAES192" + // IpsecIntegrityGCMAES256 ... + IpsecIntegrityGCMAES256 IpsecIntegrity = "GCMAES256" + // IpsecIntegrityMD5 ... + IpsecIntegrityMD5 IpsecIntegrity = "MD5" + // IpsecIntegritySHA1 ... + IpsecIntegritySHA1 IpsecIntegrity = "SHA1" + // IpsecIntegritySHA256 ... + IpsecIntegritySHA256 IpsecIntegrity = "SHA256" +) + +// PossibleIpsecIntegrityValues returns an array of possible values for the IpsecIntegrity const type. +func PossibleIpsecIntegrityValues() []IpsecIntegrity { + return []IpsecIntegrity{IpsecIntegrityGCMAES128, IpsecIntegrityGCMAES192, IpsecIntegrityGCMAES256, IpsecIntegrityMD5, IpsecIntegritySHA1, IpsecIntegritySHA256} +} + +// IPVersion enumerates the values for ip version. +type IPVersion string + +const ( + // IPv4 ... + IPv4 IPVersion = "IPv4" + // IPv6 ... + IPv6 IPVersion = "IPv6" +) + +// PossibleIPVersionValues returns an array of possible values for the IPVersion const type. +func PossibleIPVersionValues() []IPVersion { + return []IPVersion{IPv4, IPv6} +} + +// IssueType enumerates the values for issue type. +type IssueType string + +const ( + // IssueTypeAgentStopped ... + IssueTypeAgentStopped IssueType = "AgentStopped" + // IssueTypeDNSResolution ... + IssueTypeDNSResolution IssueType = "DnsResolution" + // IssueTypeGuestFirewall ... + IssueTypeGuestFirewall IssueType = "GuestFirewall" + // IssueTypeNetworkSecurityRule ... + IssueTypeNetworkSecurityRule IssueType = "NetworkSecurityRule" + // IssueTypePlatform ... + IssueTypePlatform IssueType = "Platform" + // IssueTypePortThrottled ... + IssueTypePortThrottled IssueType = "PortThrottled" + // IssueTypeSocketBind ... + IssueTypeSocketBind IssueType = "SocketBind" + // IssueTypeUnknown ... + IssueTypeUnknown IssueType = "Unknown" + // IssueTypeUserDefinedRoute ... + IssueTypeUserDefinedRoute IssueType = "UserDefinedRoute" +) + +// PossibleIssueTypeValues returns an array of possible values for the IssueType const type. +func PossibleIssueTypeValues() []IssueType { + return []IssueType{IssueTypeAgentStopped, IssueTypeDNSResolution, IssueTypeGuestFirewall, IssueTypeNetworkSecurityRule, IssueTypePlatform, IssueTypePortThrottled, IssueTypeSocketBind, IssueTypeUnknown, IssueTypeUserDefinedRoute} +} + +// LoadBalancerOutboundRuleProtocol enumerates the values for load balancer outbound rule protocol. +type LoadBalancerOutboundRuleProtocol string + +const ( + // LoadBalancerOutboundRuleProtocolAll ... + LoadBalancerOutboundRuleProtocolAll LoadBalancerOutboundRuleProtocol = "All" + // LoadBalancerOutboundRuleProtocolTCP ... + LoadBalancerOutboundRuleProtocolTCP LoadBalancerOutboundRuleProtocol = "Tcp" + // LoadBalancerOutboundRuleProtocolUDP ... + LoadBalancerOutboundRuleProtocolUDP LoadBalancerOutboundRuleProtocol = "Udp" +) + +// PossibleLoadBalancerOutboundRuleProtocolValues returns an array of possible values for the LoadBalancerOutboundRuleProtocol const type. +func PossibleLoadBalancerOutboundRuleProtocolValues() []LoadBalancerOutboundRuleProtocol { + return []LoadBalancerOutboundRuleProtocol{LoadBalancerOutboundRuleProtocolAll, LoadBalancerOutboundRuleProtocolTCP, LoadBalancerOutboundRuleProtocolUDP} +} + +// LoadBalancerSkuName enumerates the values for load balancer sku name. +type LoadBalancerSkuName string + +const ( + // LoadBalancerSkuNameBasic ... + LoadBalancerSkuNameBasic LoadBalancerSkuName = "Basic" + // LoadBalancerSkuNameStandard ... + LoadBalancerSkuNameStandard LoadBalancerSkuName = "Standard" +) + +// PossibleLoadBalancerSkuNameValues returns an array of possible values for the LoadBalancerSkuName const type. +func PossibleLoadBalancerSkuNameValues() []LoadBalancerSkuName { + return []LoadBalancerSkuName{LoadBalancerSkuNameBasic, LoadBalancerSkuNameStandard} +} + +// LoadDistribution enumerates the values for load distribution. +type LoadDistribution string + +const ( + // LoadDistributionDefault ... + LoadDistributionDefault LoadDistribution = "Default" + // LoadDistributionSourceIP ... + LoadDistributionSourceIP LoadDistribution = "SourceIP" + // LoadDistributionSourceIPProtocol ... + LoadDistributionSourceIPProtocol LoadDistribution = "SourceIPProtocol" +) + +// PossibleLoadDistributionValues returns an array of possible values for the LoadDistribution const type. +func PossibleLoadDistributionValues() []LoadDistribution { + return []LoadDistribution{LoadDistributionDefault, LoadDistributionSourceIP, LoadDistributionSourceIPProtocol} +} + +// ManagedRuleEnabledState enumerates the values for managed rule enabled state. +type ManagedRuleEnabledState string + +const ( + // ManagedRuleEnabledStateDisabled ... + ManagedRuleEnabledStateDisabled ManagedRuleEnabledState = "Disabled" +) + +// PossibleManagedRuleEnabledStateValues returns an array of possible values for the ManagedRuleEnabledState const type. +func PossibleManagedRuleEnabledStateValues() []ManagedRuleEnabledState { + return []ManagedRuleEnabledState{ManagedRuleEnabledStateDisabled} +} + +// NatGatewaySkuName enumerates the values for nat gateway sku name. +type NatGatewaySkuName string + +const ( + // NatGatewaySkuNameStandard ... + NatGatewaySkuNameStandard NatGatewaySkuName = "Standard" +) + +// PossibleNatGatewaySkuNameValues returns an array of possible values for the NatGatewaySkuName const type. +func PossibleNatGatewaySkuNameValues() []NatGatewaySkuName { + return []NatGatewaySkuName{NatGatewaySkuNameStandard} +} + +// NextHopType enumerates the values for next hop type. +type NextHopType string + +const ( + // NextHopTypeHyperNetGateway ... + NextHopTypeHyperNetGateway NextHopType = "HyperNetGateway" + // NextHopTypeInternet ... + NextHopTypeInternet NextHopType = "Internet" + // NextHopTypeNone ... + NextHopTypeNone NextHopType = "None" + // NextHopTypeVirtualAppliance ... + NextHopTypeVirtualAppliance NextHopType = "VirtualAppliance" + // NextHopTypeVirtualNetworkGateway ... + NextHopTypeVirtualNetworkGateway NextHopType = "VirtualNetworkGateway" + // NextHopTypeVnetLocal ... + NextHopTypeVnetLocal NextHopType = "VnetLocal" +) + +// PossibleNextHopTypeValues returns an array of possible values for the NextHopType const type. +func PossibleNextHopTypeValues() []NextHopType { + return []NextHopType{NextHopTypeHyperNetGateway, NextHopTypeInternet, NextHopTypeNone, NextHopTypeVirtualAppliance, NextHopTypeVirtualNetworkGateway, NextHopTypeVnetLocal} +} + +// OfficeTrafficCategory enumerates the values for office traffic category. +type OfficeTrafficCategory string + +const ( + // OfficeTrafficCategoryAll ... + OfficeTrafficCategoryAll OfficeTrafficCategory = "All" + // OfficeTrafficCategoryNone ... + OfficeTrafficCategoryNone OfficeTrafficCategory = "None" + // OfficeTrafficCategoryOptimize ... + OfficeTrafficCategoryOptimize OfficeTrafficCategory = "Optimize" + // OfficeTrafficCategoryOptimizeAndAllow ... + OfficeTrafficCategoryOptimizeAndAllow OfficeTrafficCategory = "OptimizeAndAllow" +) + +// PossibleOfficeTrafficCategoryValues returns an array of possible values for the OfficeTrafficCategory const type. +func PossibleOfficeTrafficCategoryValues() []OfficeTrafficCategory { + return []OfficeTrafficCategory{OfficeTrafficCategoryAll, OfficeTrafficCategoryNone, OfficeTrafficCategoryOptimize, OfficeTrafficCategoryOptimizeAndAllow} +} + +// OperationStatus enumerates the values for operation status. +type OperationStatus string + +const ( + // OperationStatusFailed ... + OperationStatusFailed OperationStatus = "Failed" + // OperationStatusInProgress ... + OperationStatusInProgress OperationStatus = "InProgress" + // OperationStatusSucceeded ... + OperationStatusSucceeded OperationStatus = "Succeeded" +) + +// PossibleOperationStatusValues returns an array of possible values for the OperationStatus const type. +func PossibleOperationStatusValues() []OperationStatus { + return []OperationStatus{OperationStatusFailed, OperationStatusInProgress, OperationStatusSucceeded} +} + +// Origin enumerates the values for origin. +type Origin string + +const ( + // OriginInbound ... + OriginInbound Origin = "Inbound" + // OriginLocal ... + OriginLocal Origin = "Local" + // OriginOutbound ... + OriginOutbound Origin = "Outbound" +) + +// PossibleOriginValues returns an array of possible values for the Origin const type. +func PossibleOriginValues() []Origin { + return []Origin{OriginInbound, OriginLocal, OriginOutbound} +} + +// OwaspCrsExclusionEntryMatchVariable enumerates the values for owasp crs exclusion entry match variable. +type OwaspCrsExclusionEntryMatchVariable string + +const ( + // RequestArgNames ... + RequestArgNames OwaspCrsExclusionEntryMatchVariable = "RequestArgNames" + // RequestCookieNames ... + RequestCookieNames OwaspCrsExclusionEntryMatchVariable = "RequestCookieNames" + // RequestHeaderNames ... + RequestHeaderNames OwaspCrsExclusionEntryMatchVariable = "RequestHeaderNames" +) + +// PossibleOwaspCrsExclusionEntryMatchVariableValues returns an array of possible values for the OwaspCrsExclusionEntryMatchVariable const type. +func PossibleOwaspCrsExclusionEntryMatchVariableValues() []OwaspCrsExclusionEntryMatchVariable { + return []OwaspCrsExclusionEntryMatchVariable{RequestArgNames, RequestCookieNames, RequestHeaderNames} +} + +// OwaspCrsExclusionEntrySelectorMatchOperator enumerates the values for owasp crs exclusion entry selector +// match operator. +type OwaspCrsExclusionEntrySelectorMatchOperator string + +const ( + // OwaspCrsExclusionEntrySelectorMatchOperatorContains ... + OwaspCrsExclusionEntrySelectorMatchOperatorContains OwaspCrsExclusionEntrySelectorMatchOperator = "Contains" + // OwaspCrsExclusionEntrySelectorMatchOperatorEndsWith ... + OwaspCrsExclusionEntrySelectorMatchOperatorEndsWith OwaspCrsExclusionEntrySelectorMatchOperator = "EndsWith" + // OwaspCrsExclusionEntrySelectorMatchOperatorEquals ... + OwaspCrsExclusionEntrySelectorMatchOperatorEquals OwaspCrsExclusionEntrySelectorMatchOperator = "Equals" + // OwaspCrsExclusionEntrySelectorMatchOperatorEqualsAny ... + OwaspCrsExclusionEntrySelectorMatchOperatorEqualsAny OwaspCrsExclusionEntrySelectorMatchOperator = "EqualsAny" + // OwaspCrsExclusionEntrySelectorMatchOperatorStartsWith ... + OwaspCrsExclusionEntrySelectorMatchOperatorStartsWith OwaspCrsExclusionEntrySelectorMatchOperator = "StartsWith" +) + +// PossibleOwaspCrsExclusionEntrySelectorMatchOperatorValues returns an array of possible values for the OwaspCrsExclusionEntrySelectorMatchOperator const type. +func PossibleOwaspCrsExclusionEntrySelectorMatchOperatorValues() []OwaspCrsExclusionEntrySelectorMatchOperator { + return []OwaspCrsExclusionEntrySelectorMatchOperator{OwaspCrsExclusionEntrySelectorMatchOperatorContains, OwaspCrsExclusionEntrySelectorMatchOperatorEndsWith, OwaspCrsExclusionEntrySelectorMatchOperatorEquals, OwaspCrsExclusionEntrySelectorMatchOperatorEqualsAny, OwaspCrsExclusionEntrySelectorMatchOperatorStartsWith} +} + +// PcError enumerates the values for pc error. +type PcError string + +const ( + // AgentStopped ... + AgentStopped PcError = "AgentStopped" + // CaptureFailed ... + CaptureFailed PcError = "CaptureFailed" + // InternalError ... + InternalError PcError = "InternalError" + // LocalFileFailed ... + LocalFileFailed PcError = "LocalFileFailed" + // StorageFailed ... + StorageFailed PcError = "StorageFailed" +) + +// PossiblePcErrorValues returns an array of possible values for the PcError const type. +func PossiblePcErrorValues() []PcError { + return []PcError{AgentStopped, CaptureFailed, InternalError, LocalFileFailed, StorageFailed} +} + +// PcProtocol enumerates the values for pc protocol. +type PcProtocol string + +const ( + // PcProtocolAny ... + PcProtocolAny PcProtocol = "Any" + // PcProtocolTCP ... + PcProtocolTCP PcProtocol = "TCP" + // PcProtocolUDP ... + PcProtocolUDP PcProtocol = "UDP" +) + +// PossiblePcProtocolValues returns an array of possible values for the PcProtocol const type. +func PossiblePcProtocolValues() []PcProtocol { + return []PcProtocol{PcProtocolAny, PcProtocolTCP, PcProtocolUDP} +} + +// PcStatus enumerates the values for pc status. +type PcStatus string + +const ( + // PcStatusError ... + PcStatusError PcStatus = "Error" + // PcStatusNotStarted ... + PcStatusNotStarted PcStatus = "NotStarted" + // PcStatusRunning ... + PcStatusRunning PcStatus = "Running" + // PcStatusStopped ... + PcStatusStopped PcStatus = "Stopped" + // PcStatusUnknown ... + PcStatusUnknown PcStatus = "Unknown" +) + +// PossiblePcStatusValues returns an array of possible values for the PcStatus const type. +func PossiblePcStatusValues() []PcStatus { + return []PcStatus{PcStatusError, PcStatusNotStarted, PcStatusRunning, PcStatusStopped, PcStatusUnknown} +} + +// PfsGroup enumerates the values for pfs group. +type PfsGroup string + +const ( + // PfsGroupECP256 ... + PfsGroupECP256 PfsGroup = "ECP256" + // PfsGroupECP384 ... + PfsGroupECP384 PfsGroup = "ECP384" + // PfsGroupNone ... + PfsGroupNone PfsGroup = "None" + // PfsGroupPFS1 ... + PfsGroupPFS1 PfsGroup = "PFS1" + // PfsGroupPFS14 ... + PfsGroupPFS14 PfsGroup = "PFS14" + // PfsGroupPFS2 ... + PfsGroupPFS2 PfsGroup = "PFS2" + // PfsGroupPFS2048 ... + PfsGroupPFS2048 PfsGroup = "PFS2048" + // PfsGroupPFS24 ... + PfsGroupPFS24 PfsGroup = "PFS24" + // PfsGroupPFSMM ... + PfsGroupPFSMM PfsGroup = "PFSMM" +) + +// PossiblePfsGroupValues returns an array of possible values for the PfsGroup const type. +func PossiblePfsGroupValues() []PfsGroup { + return []PfsGroup{PfsGroupECP256, PfsGroupECP384, PfsGroupNone, PfsGroupPFS1, PfsGroupPFS14, PfsGroupPFS2, PfsGroupPFS2048, PfsGroupPFS24, PfsGroupPFSMM} +} + +// ProbeProtocol enumerates the values for probe protocol. +type ProbeProtocol string + +const ( + // ProbeProtocolHTTP ... + ProbeProtocolHTTP ProbeProtocol = "Http" + // ProbeProtocolHTTPS ... + ProbeProtocolHTTPS ProbeProtocol = "Https" + // ProbeProtocolTCP ... + ProbeProtocolTCP ProbeProtocol = "Tcp" +) + +// PossibleProbeProtocolValues returns an array of possible values for the ProbeProtocol const type. +func PossibleProbeProtocolValues() []ProbeProtocol { + return []ProbeProtocol{ProbeProtocolHTTP, ProbeProtocolHTTPS, ProbeProtocolTCP} +} + +// ProcessorArchitecture enumerates the values for processor architecture. +type ProcessorArchitecture string + +const ( + // Amd64 ... + Amd64 ProcessorArchitecture = "Amd64" + // X86 ... + X86 ProcessorArchitecture = "X86" +) + +// PossibleProcessorArchitectureValues returns an array of possible values for the ProcessorArchitecture const type. +func PossibleProcessorArchitectureValues() []ProcessorArchitecture { + return []ProcessorArchitecture{Amd64, X86} +} + +// Protocol enumerates the values for protocol. +type Protocol string + +const ( + // ProtocolHTTP ... + ProtocolHTTP Protocol = "Http" + // ProtocolHTTPS ... + ProtocolHTTPS Protocol = "Https" + // ProtocolIcmp ... + ProtocolIcmp Protocol = "Icmp" + // ProtocolTCP ... + ProtocolTCP Protocol = "Tcp" +) + +// PossibleProtocolValues returns an array of possible values for the Protocol const type. +func PossibleProtocolValues() []Protocol { + return []Protocol{ProtocolHTTP, ProtocolHTTPS, ProtocolIcmp, ProtocolTCP} +} + +// ProvisioningState enumerates the values for provisioning state. +type ProvisioningState string + +const ( + // Deleting ... + Deleting ProvisioningState = "Deleting" + // Failed ... + Failed ProvisioningState = "Failed" + // Succeeded ... + Succeeded ProvisioningState = "Succeeded" + // Updating ... + Updating ProvisioningState = "Updating" +) + +// PossibleProvisioningStateValues returns an array of possible values for the ProvisioningState const type. +func PossibleProvisioningStateValues() []ProvisioningState { + return []ProvisioningState{Deleting, Failed, Succeeded, Updating} +} + +// PublicIPAddressSkuName enumerates the values for public ip address sku name. +type PublicIPAddressSkuName string + +const ( + // PublicIPAddressSkuNameBasic ... + PublicIPAddressSkuNameBasic PublicIPAddressSkuName = "Basic" + // PublicIPAddressSkuNameStandard ... + PublicIPAddressSkuNameStandard PublicIPAddressSkuName = "Standard" +) + +// PossiblePublicIPAddressSkuNameValues returns an array of possible values for the PublicIPAddressSkuName const type. +func PossiblePublicIPAddressSkuNameValues() []PublicIPAddressSkuName { + return []PublicIPAddressSkuName{PublicIPAddressSkuNameBasic, PublicIPAddressSkuNameStandard} +} + +// PublicIPPrefixSkuName enumerates the values for public ip prefix sku name. +type PublicIPPrefixSkuName string + +const ( + // PublicIPPrefixSkuNameStandard ... + PublicIPPrefixSkuNameStandard PublicIPPrefixSkuName = "Standard" +) + +// PossiblePublicIPPrefixSkuNameValues returns an array of possible values for the PublicIPPrefixSkuName const type. +func PossiblePublicIPPrefixSkuNameValues() []PublicIPPrefixSkuName { + return []PublicIPPrefixSkuName{PublicIPPrefixSkuNameStandard} +} + +// ResourceIdentityType enumerates the values for resource identity type. +type ResourceIdentityType string + +const ( + // ResourceIdentityTypeNone ... + ResourceIdentityTypeNone ResourceIdentityType = "None" + // ResourceIdentityTypeSystemAssigned ... + ResourceIdentityTypeSystemAssigned ResourceIdentityType = "SystemAssigned" + // ResourceIdentityTypeSystemAssignedUserAssigned ... + ResourceIdentityTypeSystemAssignedUserAssigned ResourceIdentityType = "SystemAssigned, UserAssigned" + // ResourceIdentityTypeUserAssigned ... + ResourceIdentityTypeUserAssigned ResourceIdentityType = "UserAssigned" +) + +// PossibleResourceIdentityTypeValues returns an array of possible values for the ResourceIdentityType const type. +func PossibleResourceIdentityTypeValues() []ResourceIdentityType { + return []ResourceIdentityType{ResourceIdentityTypeNone, ResourceIdentityTypeSystemAssigned, ResourceIdentityTypeSystemAssignedUserAssigned, ResourceIdentityTypeUserAssigned} +} + +// RouteNextHopType enumerates the values for route next hop type. +type RouteNextHopType string + +const ( + // RouteNextHopTypeInternet ... + RouteNextHopTypeInternet RouteNextHopType = "Internet" + // RouteNextHopTypeNone ... + RouteNextHopTypeNone RouteNextHopType = "None" + // RouteNextHopTypeVirtualAppliance ... + RouteNextHopTypeVirtualAppliance RouteNextHopType = "VirtualAppliance" + // RouteNextHopTypeVirtualNetworkGateway ... + RouteNextHopTypeVirtualNetworkGateway RouteNextHopType = "VirtualNetworkGateway" + // RouteNextHopTypeVnetLocal ... + RouteNextHopTypeVnetLocal RouteNextHopType = "VnetLocal" +) + +// PossibleRouteNextHopTypeValues returns an array of possible values for the RouteNextHopType const type. +func PossibleRouteNextHopTypeValues() []RouteNextHopType { + return []RouteNextHopType{RouteNextHopTypeInternet, RouteNextHopTypeNone, RouteNextHopTypeVirtualAppliance, RouteNextHopTypeVirtualNetworkGateway, RouteNextHopTypeVnetLocal} +} + +// RuleConditionType enumerates the values for rule condition type. +type RuleConditionType string + +const ( + // RuleConditionTypeApplicationRuleCondition ... + RuleConditionTypeApplicationRuleCondition RuleConditionType = "ApplicationRuleCondition" + // RuleConditionTypeFirewallPolicyRuleCondition ... + RuleConditionTypeFirewallPolicyRuleCondition RuleConditionType = "FirewallPolicyRuleCondition" + // RuleConditionTypeNetworkRuleCondition ... + RuleConditionTypeNetworkRuleCondition RuleConditionType = "NetworkRuleCondition" +) + +// PossibleRuleConditionTypeValues returns an array of possible values for the RuleConditionType const type. +func PossibleRuleConditionTypeValues() []RuleConditionType { + return []RuleConditionType{RuleConditionTypeApplicationRuleCondition, RuleConditionTypeFirewallPolicyRuleCondition, RuleConditionTypeNetworkRuleCondition} +} + +// RuleType enumerates the values for rule type. +type RuleType string + +const ( + // RuleTypeFirewallPolicyFilterRule ... + RuleTypeFirewallPolicyFilterRule RuleType = "FirewallPolicyFilterRule" + // RuleTypeFirewallPolicyNatRule ... + RuleTypeFirewallPolicyNatRule RuleType = "FirewallPolicyNatRule" + // RuleTypeFirewallPolicyRule ... + RuleTypeFirewallPolicyRule RuleType = "FirewallPolicyRule" +) + +// PossibleRuleTypeValues returns an array of possible values for the RuleType const type. +func PossibleRuleTypeValues() []RuleType { + return []RuleType{RuleTypeFirewallPolicyFilterRule, RuleTypeFirewallPolicyNatRule, RuleTypeFirewallPolicyRule} +} + +// SecurityRuleAccess enumerates the values for security rule access. +type SecurityRuleAccess string + +const ( + // SecurityRuleAccessAllow ... + SecurityRuleAccessAllow SecurityRuleAccess = "Allow" + // SecurityRuleAccessDeny ... + SecurityRuleAccessDeny SecurityRuleAccess = "Deny" +) + +// PossibleSecurityRuleAccessValues returns an array of possible values for the SecurityRuleAccess const type. +func PossibleSecurityRuleAccessValues() []SecurityRuleAccess { + return []SecurityRuleAccess{SecurityRuleAccessAllow, SecurityRuleAccessDeny} +} + +// SecurityRuleDirection enumerates the values for security rule direction. +type SecurityRuleDirection string + +const ( + // SecurityRuleDirectionInbound ... + SecurityRuleDirectionInbound SecurityRuleDirection = "Inbound" + // SecurityRuleDirectionOutbound ... + SecurityRuleDirectionOutbound SecurityRuleDirection = "Outbound" +) + +// PossibleSecurityRuleDirectionValues returns an array of possible values for the SecurityRuleDirection const type. +func PossibleSecurityRuleDirectionValues() []SecurityRuleDirection { + return []SecurityRuleDirection{SecurityRuleDirectionInbound, SecurityRuleDirectionOutbound} +} + +// SecurityRuleProtocol enumerates the values for security rule protocol. +type SecurityRuleProtocol string + +const ( + // SecurityRuleProtocolAh ... + SecurityRuleProtocolAh SecurityRuleProtocol = "Ah" + // SecurityRuleProtocolAsterisk ... + SecurityRuleProtocolAsterisk SecurityRuleProtocol = "*" + // SecurityRuleProtocolEsp ... + SecurityRuleProtocolEsp SecurityRuleProtocol = "Esp" + // SecurityRuleProtocolIcmp ... + SecurityRuleProtocolIcmp SecurityRuleProtocol = "Icmp" + // SecurityRuleProtocolTCP ... + SecurityRuleProtocolTCP SecurityRuleProtocol = "Tcp" + // SecurityRuleProtocolUDP ... + SecurityRuleProtocolUDP SecurityRuleProtocol = "Udp" +) + +// PossibleSecurityRuleProtocolValues returns an array of possible values for the SecurityRuleProtocol const type. +func PossibleSecurityRuleProtocolValues() []SecurityRuleProtocol { + return []SecurityRuleProtocol{SecurityRuleProtocolAh, SecurityRuleProtocolAsterisk, SecurityRuleProtocolEsp, SecurityRuleProtocolIcmp, SecurityRuleProtocolTCP, SecurityRuleProtocolUDP} +} + +// ServiceProviderProvisioningState enumerates the values for service provider provisioning state. +type ServiceProviderProvisioningState string + +const ( + // Deprovisioning ... + Deprovisioning ServiceProviderProvisioningState = "Deprovisioning" + // NotProvisioned ... + NotProvisioned ServiceProviderProvisioningState = "NotProvisioned" + // Provisioned ... + Provisioned ServiceProviderProvisioningState = "Provisioned" + // Provisioning ... + Provisioning ServiceProviderProvisioningState = "Provisioning" +) + +// PossibleServiceProviderProvisioningStateValues returns an array of possible values for the ServiceProviderProvisioningState const type. +func PossibleServiceProviderProvisioningStateValues() []ServiceProviderProvisioningState { + return []ServiceProviderProvisioningState{Deprovisioning, NotProvisioned, Provisioned, Provisioning} +} + +// Severity enumerates the values for severity. +type Severity string + +const ( + // SeverityError ... + SeverityError Severity = "Error" + // SeverityWarning ... + SeverityWarning Severity = "Warning" +) + +// PossibleSeverityValues returns an array of possible values for the Severity const type. +func PossibleSeverityValues() []Severity { + return []Severity{SeverityError, SeverityWarning} +} + +// TransportProtocol enumerates the values for transport protocol. +type TransportProtocol string + +const ( + // TransportProtocolAll ... + TransportProtocolAll TransportProtocol = "All" + // TransportProtocolTCP ... + TransportProtocolTCP TransportProtocol = "Tcp" + // TransportProtocolUDP ... + TransportProtocolUDP TransportProtocol = "Udp" +) + +// PossibleTransportProtocolValues returns an array of possible values for the TransportProtocol const type. +func PossibleTransportProtocolValues() []TransportProtocol { + return []TransportProtocol{TransportProtocolAll, TransportProtocolTCP, TransportProtocolUDP} +} + +// TunnelConnectionStatus enumerates the values for tunnel connection status. +type TunnelConnectionStatus string + +const ( + // TunnelConnectionStatusConnected ... + TunnelConnectionStatusConnected TunnelConnectionStatus = "Connected" + // TunnelConnectionStatusConnecting ... + TunnelConnectionStatusConnecting TunnelConnectionStatus = "Connecting" + // TunnelConnectionStatusNotConnected ... + TunnelConnectionStatusNotConnected TunnelConnectionStatus = "NotConnected" + // TunnelConnectionStatusUnknown ... + TunnelConnectionStatusUnknown TunnelConnectionStatus = "Unknown" +) + +// PossibleTunnelConnectionStatusValues returns an array of possible values for the TunnelConnectionStatus const type. +func PossibleTunnelConnectionStatusValues() []TunnelConnectionStatus { + return []TunnelConnectionStatus{TunnelConnectionStatusConnected, TunnelConnectionStatusConnecting, TunnelConnectionStatusNotConnected, TunnelConnectionStatusUnknown} +} + +// VerbosityLevel enumerates the values for verbosity level. +type VerbosityLevel string + +const ( + // Full ... + Full VerbosityLevel = "Full" + // Minimum ... + Minimum VerbosityLevel = "Minimum" + // Normal ... + Normal VerbosityLevel = "Normal" +) + +// PossibleVerbosityLevelValues returns an array of possible values for the VerbosityLevel const type. +func PossibleVerbosityLevelValues() []VerbosityLevel { + return []VerbosityLevel{Full, Minimum, Normal} +} + +// VirtualNetworkGatewayConnectionProtocol enumerates the values for virtual network gateway connection +// protocol. +type VirtualNetworkGatewayConnectionProtocol string + +const ( + // IKEv1 ... + IKEv1 VirtualNetworkGatewayConnectionProtocol = "IKEv1" + // IKEv2 ... + IKEv2 VirtualNetworkGatewayConnectionProtocol = "IKEv2" +) + +// PossibleVirtualNetworkGatewayConnectionProtocolValues returns an array of possible values for the VirtualNetworkGatewayConnectionProtocol const type. +func PossibleVirtualNetworkGatewayConnectionProtocolValues() []VirtualNetworkGatewayConnectionProtocol { + return []VirtualNetworkGatewayConnectionProtocol{IKEv1, IKEv2} +} + +// VirtualNetworkGatewayConnectionStatus enumerates the values for virtual network gateway connection status. +type VirtualNetworkGatewayConnectionStatus string + +const ( + // VirtualNetworkGatewayConnectionStatusConnected ... + VirtualNetworkGatewayConnectionStatusConnected VirtualNetworkGatewayConnectionStatus = "Connected" + // VirtualNetworkGatewayConnectionStatusConnecting ... + VirtualNetworkGatewayConnectionStatusConnecting VirtualNetworkGatewayConnectionStatus = "Connecting" + // VirtualNetworkGatewayConnectionStatusNotConnected ... + VirtualNetworkGatewayConnectionStatusNotConnected VirtualNetworkGatewayConnectionStatus = "NotConnected" + // VirtualNetworkGatewayConnectionStatusUnknown ... + VirtualNetworkGatewayConnectionStatusUnknown VirtualNetworkGatewayConnectionStatus = "Unknown" +) + +// PossibleVirtualNetworkGatewayConnectionStatusValues returns an array of possible values for the VirtualNetworkGatewayConnectionStatus const type. +func PossibleVirtualNetworkGatewayConnectionStatusValues() []VirtualNetworkGatewayConnectionStatus { + return []VirtualNetworkGatewayConnectionStatus{VirtualNetworkGatewayConnectionStatusConnected, VirtualNetworkGatewayConnectionStatusConnecting, VirtualNetworkGatewayConnectionStatusNotConnected, VirtualNetworkGatewayConnectionStatusUnknown} +} + +// VirtualNetworkGatewayConnectionType enumerates the values for virtual network gateway connection type. +type VirtualNetworkGatewayConnectionType string + +const ( + // ExpressRoute ... + ExpressRoute VirtualNetworkGatewayConnectionType = "ExpressRoute" + // IPsec ... + IPsec VirtualNetworkGatewayConnectionType = "IPsec" + // Vnet2Vnet ... + Vnet2Vnet VirtualNetworkGatewayConnectionType = "Vnet2Vnet" + // VPNClient ... + VPNClient VirtualNetworkGatewayConnectionType = "VPNClient" +) + +// PossibleVirtualNetworkGatewayConnectionTypeValues returns an array of possible values for the VirtualNetworkGatewayConnectionType const type. +func PossibleVirtualNetworkGatewayConnectionTypeValues() []VirtualNetworkGatewayConnectionType { + return []VirtualNetworkGatewayConnectionType{ExpressRoute, IPsec, Vnet2Vnet, VPNClient} +} + +// VirtualNetworkGatewaySkuName enumerates the values for virtual network gateway sku name. +type VirtualNetworkGatewaySkuName string + +const ( + // VirtualNetworkGatewaySkuNameBasic ... + VirtualNetworkGatewaySkuNameBasic VirtualNetworkGatewaySkuName = "Basic" + // VirtualNetworkGatewaySkuNameErGw1AZ ... + VirtualNetworkGatewaySkuNameErGw1AZ VirtualNetworkGatewaySkuName = "ErGw1AZ" + // VirtualNetworkGatewaySkuNameErGw2AZ ... + VirtualNetworkGatewaySkuNameErGw2AZ VirtualNetworkGatewaySkuName = "ErGw2AZ" + // VirtualNetworkGatewaySkuNameErGw3AZ ... + VirtualNetworkGatewaySkuNameErGw3AZ VirtualNetworkGatewaySkuName = "ErGw3AZ" + // VirtualNetworkGatewaySkuNameHighPerformance ... + VirtualNetworkGatewaySkuNameHighPerformance VirtualNetworkGatewaySkuName = "HighPerformance" + // VirtualNetworkGatewaySkuNameStandard ... + VirtualNetworkGatewaySkuNameStandard VirtualNetworkGatewaySkuName = "Standard" + // VirtualNetworkGatewaySkuNameUltraPerformance ... + VirtualNetworkGatewaySkuNameUltraPerformance VirtualNetworkGatewaySkuName = "UltraPerformance" + // VirtualNetworkGatewaySkuNameVpnGw1 ... + VirtualNetworkGatewaySkuNameVpnGw1 VirtualNetworkGatewaySkuName = "VpnGw1" + // VirtualNetworkGatewaySkuNameVpnGw1AZ ... + VirtualNetworkGatewaySkuNameVpnGw1AZ VirtualNetworkGatewaySkuName = "VpnGw1AZ" + // VirtualNetworkGatewaySkuNameVpnGw2 ... + VirtualNetworkGatewaySkuNameVpnGw2 VirtualNetworkGatewaySkuName = "VpnGw2" + // VirtualNetworkGatewaySkuNameVpnGw2AZ ... + VirtualNetworkGatewaySkuNameVpnGw2AZ VirtualNetworkGatewaySkuName = "VpnGw2AZ" + // VirtualNetworkGatewaySkuNameVpnGw3 ... + VirtualNetworkGatewaySkuNameVpnGw3 VirtualNetworkGatewaySkuName = "VpnGw3" + // VirtualNetworkGatewaySkuNameVpnGw3AZ ... + VirtualNetworkGatewaySkuNameVpnGw3AZ VirtualNetworkGatewaySkuName = "VpnGw3AZ" + // VirtualNetworkGatewaySkuNameVpnGw4 ... + VirtualNetworkGatewaySkuNameVpnGw4 VirtualNetworkGatewaySkuName = "VpnGw4" + // VirtualNetworkGatewaySkuNameVpnGw4AZ ... + VirtualNetworkGatewaySkuNameVpnGw4AZ VirtualNetworkGatewaySkuName = "VpnGw4AZ" + // VirtualNetworkGatewaySkuNameVpnGw5 ... + VirtualNetworkGatewaySkuNameVpnGw5 VirtualNetworkGatewaySkuName = "VpnGw5" + // VirtualNetworkGatewaySkuNameVpnGw5AZ ... + VirtualNetworkGatewaySkuNameVpnGw5AZ VirtualNetworkGatewaySkuName = "VpnGw5AZ" +) + +// PossibleVirtualNetworkGatewaySkuNameValues returns an array of possible values for the VirtualNetworkGatewaySkuName const type. +func PossibleVirtualNetworkGatewaySkuNameValues() []VirtualNetworkGatewaySkuName { + return []VirtualNetworkGatewaySkuName{VirtualNetworkGatewaySkuNameBasic, VirtualNetworkGatewaySkuNameErGw1AZ, VirtualNetworkGatewaySkuNameErGw2AZ, VirtualNetworkGatewaySkuNameErGw3AZ, VirtualNetworkGatewaySkuNameHighPerformance, VirtualNetworkGatewaySkuNameStandard, VirtualNetworkGatewaySkuNameUltraPerformance, VirtualNetworkGatewaySkuNameVpnGw1, VirtualNetworkGatewaySkuNameVpnGw1AZ, VirtualNetworkGatewaySkuNameVpnGw2, VirtualNetworkGatewaySkuNameVpnGw2AZ, VirtualNetworkGatewaySkuNameVpnGw3, VirtualNetworkGatewaySkuNameVpnGw3AZ, VirtualNetworkGatewaySkuNameVpnGw4, VirtualNetworkGatewaySkuNameVpnGw4AZ, VirtualNetworkGatewaySkuNameVpnGw5, VirtualNetworkGatewaySkuNameVpnGw5AZ} +} + +// VirtualNetworkGatewaySkuTier enumerates the values for virtual network gateway sku tier. +type VirtualNetworkGatewaySkuTier string + +const ( + // VirtualNetworkGatewaySkuTierBasic ... + VirtualNetworkGatewaySkuTierBasic VirtualNetworkGatewaySkuTier = "Basic" + // VirtualNetworkGatewaySkuTierErGw1AZ ... + VirtualNetworkGatewaySkuTierErGw1AZ VirtualNetworkGatewaySkuTier = "ErGw1AZ" + // VirtualNetworkGatewaySkuTierErGw2AZ ... + VirtualNetworkGatewaySkuTierErGw2AZ VirtualNetworkGatewaySkuTier = "ErGw2AZ" + // VirtualNetworkGatewaySkuTierErGw3AZ ... + VirtualNetworkGatewaySkuTierErGw3AZ VirtualNetworkGatewaySkuTier = "ErGw3AZ" + // VirtualNetworkGatewaySkuTierHighPerformance ... + VirtualNetworkGatewaySkuTierHighPerformance VirtualNetworkGatewaySkuTier = "HighPerformance" + // VirtualNetworkGatewaySkuTierStandard ... + VirtualNetworkGatewaySkuTierStandard VirtualNetworkGatewaySkuTier = "Standard" + // VirtualNetworkGatewaySkuTierUltraPerformance ... + VirtualNetworkGatewaySkuTierUltraPerformance VirtualNetworkGatewaySkuTier = "UltraPerformance" + // VirtualNetworkGatewaySkuTierVpnGw1 ... + VirtualNetworkGatewaySkuTierVpnGw1 VirtualNetworkGatewaySkuTier = "VpnGw1" + // VirtualNetworkGatewaySkuTierVpnGw1AZ ... + VirtualNetworkGatewaySkuTierVpnGw1AZ VirtualNetworkGatewaySkuTier = "VpnGw1AZ" + // VirtualNetworkGatewaySkuTierVpnGw2 ... + VirtualNetworkGatewaySkuTierVpnGw2 VirtualNetworkGatewaySkuTier = "VpnGw2" + // VirtualNetworkGatewaySkuTierVpnGw2AZ ... + VirtualNetworkGatewaySkuTierVpnGw2AZ VirtualNetworkGatewaySkuTier = "VpnGw2AZ" + // VirtualNetworkGatewaySkuTierVpnGw3 ... + VirtualNetworkGatewaySkuTierVpnGw3 VirtualNetworkGatewaySkuTier = "VpnGw3" + // VirtualNetworkGatewaySkuTierVpnGw3AZ ... + VirtualNetworkGatewaySkuTierVpnGw3AZ VirtualNetworkGatewaySkuTier = "VpnGw3AZ" + // VirtualNetworkGatewaySkuTierVpnGw4 ... + VirtualNetworkGatewaySkuTierVpnGw4 VirtualNetworkGatewaySkuTier = "VpnGw4" + // VirtualNetworkGatewaySkuTierVpnGw4AZ ... + VirtualNetworkGatewaySkuTierVpnGw4AZ VirtualNetworkGatewaySkuTier = "VpnGw4AZ" + // VirtualNetworkGatewaySkuTierVpnGw5 ... + VirtualNetworkGatewaySkuTierVpnGw5 VirtualNetworkGatewaySkuTier = "VpnGw5" + // VirtualNetworkGatewaySkuTierVpnGw5AZ ... + VirtualNetworkGatewaySkuTierVpnGw5AZ VirtualNetworkGatewaySkuTier = "VpnGw5AZ" +) + +// PossibleVirtualNetworkGatewaySkuTierValues returns an array of possible values for the VirtualNetworkGatewaySkuTier const type. +func PossibleVirtualNetworkGatewaySkuTierValues() []VirtualNetworkGatewaySkuTier { + return []VirtualNetworkGatewaySkuTier{VirtualNetworkGatewaySkuTierBasic, VirtualNetworkGatewaySkuTierErGw1AZ, VirtualNetworkGatewaySkuTierErGw2AZ, VirtualNetworkGatewaySkuTierErGw3AZ, VirtualNetworkGatewaySkuTierHighPerformance, VirtualNetworkGatewaySkuTierStandard, VirtualNetworkGatewaySkuTierUltraPerformance, VirtualNetworkGatewaySkuTierVpnGw1, VirtualNetworkGatewaySkuTierVpnGw1AZ, VirtualNetworkGatewaySkuTierVpnGw2, VirtualNetworkGatewaySkuTierVpnGw2AZ, VirtualNetworkGatewaySkuTierVpnGw3, VirtualNetworkGatewaySkuTierVpnGw3AZ, VirtualNetworkGatewaySkuTierVpnGw4, VirtualNetworkGatewaySkuTierVpnGw4AZ, VirtualNetworkGatewaySkuTierVpnGw5, VirtualNetworkGatewaySkuTierVpnGw5AZ} +} + +// VirtualNetworkGatewayType enumerates the values for virtual network gateway type. +type VirtualNetworkGatewayType string + +const ( + // VirtualNetworkGatewayTypeExpressRoute ... + VirtualNetworkGatewayTypeExpressRoute VirtualNetworkGatewayType = "ExpressRoute" + // VirtualNetworkGatewayTypeVpn ... + VirtualNetworkGatewayTypeVpn VirtualNetworkGatewayType = "Vpn" +) + +// PossibleVirtualNetworkGatewayTypeValues returns an array of possible values for the VirtualNetworkGatewayType const type. +func PossibleVirtualNetworkGatewayTypeValues() []VirtualNetworkGatewayType { + return []VirtualNetworkGatewayType{VirtualNetworkGatewayTypeExpressRoute, VirtualNetworkGatewayTypeVpn} +} + +// VirtualNetworkPeeringState enumerates the values for virtual network peering state. +type VirtualNetworkPeeringState string + +const ( + // VirtualNetworkPeeringStateConnected ... + VirtualNetworkPeeringStateConnected VirtualNetworkPeeringState = "Connected" + // VirtualNetworkPeeringStateDisconnected ... + VirtualNetworkPeeringStateDisconnected VirtualNetworkPeeringState = "Disconnected" + // VirtualNetworkPeeringStateInitiated ... + VirtualNetworkPeeringStateInitiated VirtualNetworkPeeringState = "Initiated" +) + +// PossibleVirtualNetworkPeeringStateValues returns an array of possible values for the VirtualNetworkPeeringState const type. +func PossibleVirtualNetworkPeeringStateValues() []VirtualNetworkPeeringState { + return []VirtualNetworkPeeringState{VirtualNetworkPeeringStateConnected, VirtualNetworkPeeringStateDisconnected, VirtualNetworkPeeringStateInitiated} +} + +// VirtualWanSecurityProviderType enumerates the values for virtual wan security provider type. +type VirtualWanSecurityProviderType string + +const ( + // External ... + External VirtualWanSecurityProviderType = "External" + // Native ... + Native VirtualWanSecurityProviderType = "Native" +) + +// PossibleVirtualWanSecurityProviderTypeValues returns an array of possible values for the VirtualWanSecurityProviderType const type. +func PossibleVirtualWanSecurityProviderTypeValues() []VirtualWanSecurityProviderType { + return []VirtualWanSecurityProviderType{External, Native} +} + +// VpnAuthenticationType enumerates the values for vpn authentication type. +type VpnAuthenticationType string + +const ( + // AAD ... + AAD VpnAuthenticationType = "AAD" + // Certificate ... + Certificate VpnAuthenticationType = "Certificate" + // Radius ... + Radius VpnAuthenticationType = "Radius" +) + +// PossibleVpnAuthenticationTypeValues returns an array of possible values for the VpnAuthenticationType const type. +func PossibleVpnAuthenticationTypeValues() []VpnAuthenticationType { + return []VpnAuthenticationType{AAD, Certificate, Radius} +} + +// VpnClientProtocol enumerates the values for vpn client protocol. +type VpnClientProtocol string + +const ( + // IkeV2 ... + IkeV2 VpnClientProtocol = "IkeV2" + // OpenVPN ... + OpenVPN VpnClientProtocol = "OpenVPN" + // SSTP ... + SSTP VpnClientProtocol = "SSTP" +) + +// PossibleVpnClientProtocolValues returns an array of possible values for the VpnClientProtocol const type. +func PossibleVpnClientProtocolValues() []VpnClientProtocol { + return []VpnClientProtocol{IkeV2, OpenVPN, SSTP} +} + +// VpnConnectionStatus enumerates the values for vpn connection status. +type VpnConnectionStatus string + +const ( + // VpnConnectionStatusConnected ... + VpnConnectionStatusConnected VpnConnectionStatus = "Connected" + // VpnConnectionStatusConnecting ... + VpnConnectionStatusConnecting VpnConnectionStatus = "Connecting" + // VpnConnectionStatusNotConnected ... + VpnConnectionStatusNotConnected VpnConnectionStatus = "NotConnected" + // VpnConnectionStatusUnknown ... + VpnConnectionStatusUnknown VpnConnectionStatus = "Unknown" +) + +// PossibleVpnConnectionStatusValues returns an array of possible values for the VpnConnectionStatus const type. +func PossibleVpnConnectionStatusValues() []VpnConnectionStatus { + return []VpnConnectionStatus{VpnConnectionStatusConnected, VpnConnectionStatusConnecting, VpnConnectionStatusNotConnected, VpnConnectionStatusUnknown} +} + +// VpnGatewayGeneration enumerates the values for vpn gateway generation. +type VpnGatewayGeneration string + +const ( + // VpnGatewayGenerationGeneration1 ... + VpnGatewayGenerationGeneration1 VpnGatewayGeneration = "Generation1" + // VpnGatewayGenerationGeneration2 ... + VpnGatewayGenerationGeneration2 VpnGatewayGeneration = "Generation2" + // VpnGatewayGenerationNone ... + VpnGatewayGenerationNone VpnGatewayGeneration = "None" +) + +// PossibleVpnGatewayGenerationValues returns an array of possible values for the VpnGatewayGeneration const type. +func PossibleVpnGatewayGenerationValues() []VpnGatewayGeneration { + return []VpnGatewayGeneration{VpnGatewayGenerationGeneration1, VpnGatewayGenerationGeneration2, VpnGatewayGenerationNone} +} + +// VpnGatewayTunnelingProtocol enumerates the values for vpn gateway tunneling protocol. +type VpnGatewayTunnelingProtocol string + +const ( + // VpnGatewayTunnelingProtocolIkeV2 ... + VpnGatewayTunnelingProtocolIkeV2 VpnGatewayTunnelingProtocol = "IkeV2" + // VpnGatewayTunnelingProtocolOpenVPN ... + VpnGatewayTunnelingProtocolOpenVPN VpnGatewayTunnelingProtocol = "OpenVPN" +) + +// PossibleVpnGatewayTunnelingProtocolValues returns an array of possible values for the VpnGatewayTunnelingProtocol const type. +func PossibleVpnGatewayTunnelingProtocolValues() []VpnGatewayTunnelingProtocol { + return []VpnGatewayTunnelingProtocol{VpnGatewayTunnelingProtocolIkeV2, VpnGatewayTunnelingProtocolOpenVPN} +} + +// VpnType enumerates the values for vpn type. +type VpnType string + +const ( + // PolicyBased ... + PolicyBased VpnType = "PolicyBased" + // RouteBased ... + RouteBased VpnType = "RouteBased" +) + +// PossibleVpnTypeValues returns an array of possible values for the VpnType const type. +func PossibleVpnTypeValues() []VpnType { + return []VpnType{PolicyBased, RouteBased} +} + +// WebApplicationFirewallAction enumerates the values for web application firewall action. +type WebApplicationFirewallAction string + +const ( + // WebApplicationFirewallActionAllow ... + WebApplicationFirewallActionAllow WebApplicationFirewallAction = "Allow" + // WebApplicationFirewallActionBlock ... + WebApplicationFirewallActionBlock WebApplicationFirewallAction = "Block" + // WebApplicationFirewallActionLog ... + WebApplicationFirewallActionLog WebApplicationFirewallAction = "Log" +) + +// PossibleWebApplicationFirewallActionValues returns an array of possible values for the WebApplicationFirewallAction const type. +func PossibleWebApplicationFirewallActionValues() []WebApplicationFirewallAction { + return []WebApplicationFirewallAction{WebApplicationFirewallActionAllow, WebApplicationFirewallActionBlock, WebApplicationFirewallActionLog} +} + +// WebApplicationFirewallEnabledState enumerates the values for web application firewall enabled state. +type WebApplicationFirewallEnabledState string + +const ( + // WebApplicationFirewallEnabledStateDisabled ... + WebApplicationFirewallEnabledStateDisabled WebApplicationFirewallEnabledState = "Disabled" + // WebApplicationFirewallEnabledStateEnabled ... + WebApplicationFirewallEnabledStateEnabled WebApplicationFirewallEnabledState = "Enabled" +) + +// PossibleWebApplicationFirewallEnabledStateValues returns an array of possible values for the WebApplicationFirewallEnabledState const type. +func PossibleWebApplicationFirewallEnabledStateValues() []WebApplicationFirewallEnabledState { + return []WebApplicationFirewallEnabledState{WebApplicationFirewallEnabledStateDisabled, WebApplicationFirewallEnabledStateEnabled} +} + +// WebApplicationFirewallMatchVariable enumerates the values for web application firewall match variable. +type WebApplicationFirewallMatchVariable string + +const ( + // PostArgs ... + PostArgs WebApplicationFirewallMatchVariable = "PostArgs" + // QueryString ... + QueryString WebApplicationFirewallMatchVariable = "QueryString" + // RemoteAddr ... + RemoteAddr WebApplicationFirewallMatchVariable = "RemoteAddr" + // RequestBody ... + RequestBody WebApplicationFirewallMatchVariable = "RequestBody" + // RequestCookies ... + RequestCookies WebApplicationFirewallMatchVariable = "RequestCookies" + // RequestHeaders ... + RequestHeaders WebApplicationFirewallMatchVariable = "RequestHeaders" + // RequestMethod ... + RequestMethod WebApplicationFirewallMatchVariable = "RequestMethod" + // RequestURI ... + RequestURI WebApplicationFirewallMatchVariable = "RequestUri" +) + +// PossibleWebApplicationFirewallMatchVariableValues returns an array of possible values for the WebApplicationFirewallMatchVariable const type. +func PossibleWebApplicationFirewallMatchVariableValues() []WebApplicationFirewallMatchVariable { + return []WebApplicationFirewallMatchVariable{PostArgs, QueryString, RemoteAddr, RequestBody, RequestCookies, RequestHeaders, RequestMethod, RequestURI} +} + +// WebApplicationFirewallMode enumerates the values for web application firewall mode. +type WebApplicationFirewallMode string + +const ( + // WebApplicationFirewallModeDetection ... + WebApplicationFirewallModeDetection WebApplicationFirewallMode = "Detection" + // WebApplicationFirewallModePrevention ... + WebApplicationFirewallModePrevention WebApplicationFirewallMode = "Prevention" +) + +// PossibleWebApplicationFirewallModeValues returns an array of possible values for the WebApplicationFirewallMode const type. +func PossibleWebApplicationFirewallModeValues() []WebApplicationFirewallMode { + return []WebApplicationFirewallMode{WebApplicationFirewallModeDetection, WebApplicationFirewallModePrevention} +} + +// WebApplicationFirewallOperator enumerates the values for web application firewall operator. +type WebApplicationFirewallOperator string + +const ( + // WebApplicationFirewallOperatorBeginsWith ... + WebApplicationFirewallOperatorBeginsWith WebApplicationFirewallOperator = "BeginsWith" + // WebApplicationFirewallOperatorContains ... + WebApplicationFirewallOperatorContains WebApplicationFirewallOperator = "Contains" + // WebApplicationFirewallOperatorEndsWith ... + WebApplicationFirewallOperatorEndsWith WebApplicationFirewallOperator = "EndsWith" + // WebApplicationFirewallOperatorEqual ... + WebApplicationFirewallOperatorEqual WebApplicationFirewallOperator = "Equal" + // WebApplicationFirewallOperatorGeoMatch ... + WebApplicationFirewallOperatorGeoMatch WebApplicationFirewallOperator = "GeoMatch" + // WebApplicationFirewallOperatorGreaterThan ... + WebApplicationFirewallOperatorGreaterThan WebApplicationFirewallOperator = "GreaterThan" + // WebApplicationFirewallOperatorGreaterThanOrEqual ... + WebApplicationFirewallOperatorGreaterThanOrEqual WebApplicationFirewallOperator = "GreaterThanOrEqual" + // WebApplicationFirewallOperatorIPMatch ... + WebApplicationFirewallOperatorIPMatch WebApplicationFirewallOperator = "IPMatch" + // WebApplicationFirewallOperatorLessThan ... + WebApplicationFirewallOperatorLessThan WebApplicationFirewallOperator = "LessThan" + // WebApplicationFirewallOperatorLessThanOrEqual ... + WebApplicationFirewallOperatorLessThanOrEqual WebApplicationFirewallOperator = "LessThanOrEqual" + // WebApplicationFirewallOperatorRegex ... + WebApplicationFirewallOperatorRegex WebApplicationFirewallOperator = "Regex" +) + +// PossibleWebApplicationFirewallOperatorValues returns an array of possible values for the WebApplicationFirewallOperator const type. +func PossibleWebApplicationFirewallOperatorValues() []WebApplicationFirewallOperator { + return []WebApplicationFirewallOperator{WebApplicationFirewallOperatorBeginsWith, WebApplicationFirewallOperatorContains, WebApplicationFirewallOperatorEndsWith, WebApplicationFirewallOperatorEqual, WebApplicationFirewallOperatorGeoMatch, WebApplicationFirewallOperatorGreaterThan, WebApplicationFirewallOperatorGreaterThanOrEqual, WebApplicationFirewallOperatorIPMatch, WebApplicationFirewallOperatorLessThan, WebApplicationFirewallOperatorLessThanOrEqual, WebApplicationFirewallOperatorRegex} +} + +// WebApplicationFirewallPolicyResourceState enumerates the values for web application firewall policy resource +// state. +type WebApplicationFirewallPolicyResourceState string + +const ( + // WebApplicationFirewallPolicyResourceStateCreating ... + WebApplicationFirewallPolicyResourceStateCreating WebApplicationFirewallPolicyResourceState = "Creating" + // WebApplicationFirewallPolicyResourceStateDeleting ... + WebApplicationFirewallPolicyResourceStateDeleting WebApplicationFirewallPolicyResourceState = "Deleting" + // WebApplicationFirewallPolicyResourceStateDisabled ... + WebApplicationFirewallPolicyResourceStateDisabled WebApplicationFirewallPolicyResourceState = "Disabled" + // WebApplicationFirewallPolicyResourceStateDisabling ... + WebApplicationFirewallPolicyResourceStateDisabling WebApplicationFirewallPolicyResourceState = "Disabling" + // WebApplicationFirewallPolicyResourceStateEnabled ... + WebApplicationFirewallPolicyResourceStateEnabled WebApplicationFirewallPolicyResourceState = "Enabled" + // WebApplicationFirewallPolicyResourceStateEnabling ... + WebApplicationFirewallPolicyResourceStateEnabling WebApplicationFirewallPolicyResourceState = "Enabling" +) + +// PossibleWebApplicationFirewallPolicyResourceStateValues returns an array of possible values for the WebApplicationFirewallPolicyResourceState const type. +func PossibleWebApplicationFirewallPolicyResourceStateValues() []WebApplicationFirewallPolicyResourceState { + return []WebApplicationFirewallPolicyResourceState{WebApplicationFirewallPolicyResourceStateCreating, WebApplicationFirewallPolicyResourceStateDeleting, WebApplicationFirewallPolicyResourceStateDisabled, WebApplicationFirewallPolicyResourceStateDisabling, WebApplicationFirewallPolicyResourceStateEnabled, WebApplicationFirewallPolicyResourceStateEnabling} +} + +// WebApplicationFirewallRuleType enumerates the values for web application firewall rule type. +type WebApplicationFirewallRuleType string + +const ( + // WebApplicationFirewallRuleTypeInvalid ... + WebApplicationFirewallRuleTypeInvalid WebApplicationFirewallRuleType = "Invalid" + // WebApplicationFirewallRuleTypeMatchRule ... + WebApplicationFirewallRuleTypeMatchRule WebApplicationFirewallRuleType = "MatchRule" +) + +// PossibleWebApplicationFirewallRuleTypeValues returns an array of possible values for the WebApplicationFirewallRuleType const type. +func PossibleWebApplicationFirewallRuleTypeValues() []WebApplicationFirewallRuleType { + return []WebApplicationFirewallRuleType{WebApplicationFirewallRuleTypeInvalid, WebApplicationFirewallRuleTypeMatchRule} +} + +// WebApplicationFirewallTransform enumerates the values for web application firewall transform. +type WebApplicationFirewallTransform string + +const ( + // HTMLEntityDecode ... + HTMLEntityDecode WebApplicationFirewallTransform = "HtmlEntityDecode" + // Lowercase ... + Lowercase WebApplicationFirewallTransform = "Lowercase" + // RemoveNulls ... + RemoveNulls WebApplicationFirewallTransform = "RemoveNulls" + // Trim ... + Trim WebApplicationFirewallTransform = "Trim" + // URLDecode ... + URLDecode WebApplicationFirewallTransform = "UrlDecode" + // URLEncode ... + URLEncode WebApplicationFirewallTransform = "UrlEncode" +) + +// PossibleWebApplicationFirewallTransformValues returns an array of possible values for the WebApplicationFirewallTransform const type. +func PossibleWebApplicationFirewallTransformValues() []WebApplicationFirewallTransform { + return []WebApplicationFirewallTransform{HTMLEntityDecode, Lowercase, RemoveNulls, Trim, URLDecode, URLEncode} +} + +// AadAuthenticationParameters AAD Vpn authentication type related parameters. +type AadAuthenticationParameters struct { + // AadTenant - AAD Vpn authentication parameter AAD tenant. + AadTenant *string `json:"aadTenant,omitempty"` + // AadAudience - AAD Vpn authentication parameter AAD audience. + AadAudience *string `json:"aadAudience,omitempty"` + // AadIssuer - AAD Vpn authentication parameter AAD issuer. + AadIssuer *string `json:"aadIssuer,omitempty"` +} + +// AddressSpace addressSpace contains an array of IP address ranges that can be used by subnets of the +// virtual network. +type AddressSpace struct { + // AddressPrefixes - A list of address blocks reserved for this virtual network in CIDR notation. + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` +} + +// ApplicationGateway application gateway resource. +type ApplicationGateway struct { + autorest.Response `json:"-"` + // ApplicationGatewayPropertiesFormat - Properties of the application gateway. + *ApplicationGatewayPropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Zones - A list of availability zones denoting where the resource needs to come from. + Zones *[]string `json:"zones,omitempty"` + // Identity - The identity of the application gateway, if configured. + Identity *ManagedServiceIdentity `json:"identity,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for ApplicationGateway. +func (ag ApplicationGateway) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if ag.ApplicationGatewayPropertiesFormat != nil { + objectMap["properties"] = ag.ApplicationGatewayPropertiesFormat + } + if ag.Zones != nil { + objectMap["zones"] = ag.Zones + } + if ag.Identity != nil { + objectMap["identity"] = ag.Identity + } + if ag.ID != nil { + objectMap["id"] = ag.ID + } + if ag.Location != nil { + objectMap["location"] = ag.Location + } + if ag.Tags != nil { + objectMap["tags"] = ag.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ApplicationGateway struct. +func (ag *ApplicationGateway) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var applicationGatewayPropertiesFormat ApplicationGatewayPropertiesFormat + err = json.Unmarshal(*v, &applicationGatewayPropertiesFormat) + if err != nil { + return err + } + ag.ApplicationGatewayPropertiesFormat = &applicationGatewayPropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + ag.Etag = &etag + } + case "zones": + if v != nil { + var zones []string + err = json.Unmarshal(*v, &zones) + if err != nil { + return err + } + ag.Zones = &zones + } + case "identity": + if v != nil { + var identity ManagedServiceIdentity + err = json.Unmarshal(*v, &identity) + if err != nil { + return err + } + ag.Identity = &identity + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + ag.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + ag.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + ag.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + ag.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + ag.Tags = tags + } + } + } + + return nil +} + +// ApplicationGatewayAuthenticationCertificate authentication certificates of an application gateway. +type ApplicationGatewayAuthenticationCertificate struct { + // ApplicationGatewayAuthenticationCertificatePropertiesFormat - Properties of the application gateway authentication certificate. + *ApplicationGatewayAuthenticationCertificatePropertiesFormat `json:"properties,omitempty"` + // Name - Name of the authentication certificate that is unique within an Application Gateway. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Type of the resource. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ApplicationGatewayAuthenticationCertificate. +func (agac ApplicationGatewayAuthenticationCertificate) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if agac.ApplicationGatewayAuthenticationCertificatePropertiesFormat != nil { + objectMap["properties"] = agac.ApplicationGatewayAuthenticationCertificatePropertiesFormat + } + if agac.Name != nil { + objectMap["name"] = agac.Name + } + if agac.ID != nil { + objectMap["id"] = agac.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ApplicationGatewayAuthenticationCertificate struct. +func (agac *ApplicationGatewayAuthenticationCertificate) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var applicationGatewayAuthenticationCertificatePropertiesFormat ApplicationGatewayAuthenticationCertificatePropertiesFormat + err = json.Unmarshal(*v, &applicationGatewayAuthenticationCertificatePropertiesFormat) + if err != nil { + return err + } + agac.ApplicationGatewayAuthenticationCertificatePropertiesFormat = &applicationGatewayAuthenticationCertificatePropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + agac.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + agac.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + agac.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + agac.ID = &ID + } + } + } + + return nil +} + +// ApplicationGatewayAuthenticationCertificatePropertiesFormat authentication certificates properties of an +// application gateway. +type ApplicationGatewayAuthenticationCertificatePropertiesFormat struct { + // Data - Certificate public data. + Data *string `json:"data,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the authentication certificate resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// ApplicationGatewayAutoscaleConfiguration application Gateway autoscale configuration. +type ApplicationGatewayAutoscaleConfiguration struct { + // MinCapacity - Lower bound on number of Application Gateway capacity. + MinCapacity *int32 `json:"minCapacity,omitempty"` + // MaxCapacity - Upper bound on number of Application Gateway capacity. + MaxCapacity *int32 `json:"maxCapacity,omitempty"` +} + +// ApplicationGatewayAvailableSslOptions response for ApplicationGatewayAvailableSslOptions API service +// call. +type ApplicationGatewayAvailableSslOptions struct { + autorest.Response `json:"-"` + // ApplicationGatewayAvailableSslOptionsPropertiesFormat - Properties of the application gateway available SSL options. + *ApplicationGatewayAvailableSslOptionsPropertiesFormat `json:"properties,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for ApplicationGatewayAvailableSslOptions. +func (agaso ApplicationGatewayAvailableSslOptions) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if agaso.ApplicationGatewayAvailableSslOptionsPropertiesFormat != nil { + objectMap["properties"] = agaso.ApplicationGatewayAvailableSslOptionsPropertiesFormat + } + if agaso.ID != nil { + objectMap["id"] = agaso.ID + } + if agaso.Location != nil { + objectMap["location"] = agaso.Location + } + if agaso.Tags != nil { + objectMap["tags"] = agaso.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ApplicationGatewayAvailableSslOptions struct. +func (agaso *ApplicationGatewayAvailableSslOptions) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var applicationGatewayAvailableSslOptionsPropertiesFormat ApplicationGatewayAvailableSslOptionsPropertiesFormat + err = json.Unmarshal(*v, &applicationGatewayAvailableSslOptionsPropertiesFormat) + if err != nil { + return err + } + agaso.ApplicationGatewayAvailableSslOptionsPropertiesFormat = &applicationGatewayAvailableSslOptionsPropertiesFormat + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + agaso.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + agaso.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + agaso.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + agaso.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + agaso.Tags = tags + } + } + } + + return nil +} + +// ApplicationGatewayAvailableSslOptionsPropertiesFormat properties of +// ApplicationGatewayAvailableSslOptions. +type ApplicationGatewayAvailableSslOptionsPropertiesFormat struct { + // PredefinedPolicies - List of available Ssl predefined policy. + PredefinedPolicies *[]SubResource `json:"predefinedPolicies,omitempty"` + // DefaultPolicy - Name of the Ssl predefined policy applied by default to application gateway. Possible values include: 'AppGwSslPolicy20150501', 'AppGwSslPolicy20170401', 'AppGwSslPolicy20170401S' + DefaultPolicy ApplicationGatewaySslPolicyName `json:"defaultPolicy,omitempty"` + // AvailableCipherSuites - List of available Ssl cipher suites. + AvailableCipherSuites *[]ApplicationGatewaySslCipherSuite `json:"availableCipherSuites,omitempty"` + // AvailableProtocols - List of available Ssl protocols. + AvailableProtocols *[]ApplicationGatewaySslProtocol `json:"availableProtocols,omitempty"` +} + +// ApplicationGatewayAvailableSslPredefinedPolicies response for ApplicationGatewayAvailableSslOptions API +// service call. +type ApplicationGatewayAvailableSslPredefinedPolicies struct { + autorest.Response `json:"-"` + // Value - List of available Ssl predefined policy. + Value *[]ApplicationGatewaySslPredefinedPolicy `json:"value,omitempty"` + // NextLink - URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// ApplicationGatewayAvailableSslPredefinedPoliciesIterator provides access to a complete listing of +// ApplicationGatewaySslPredefinedPolicy values. +type ApplicationGatewayAvailableSslPredefinedPoliciesIterator struct { + i int + page ApplicationGatewayAvailableSslPredefinedPoliciesPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ApplicationGatewayAvailableSslPredefinedPoliciesIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationGatewayAvailableSslPredefinedPoliciesIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ApplicationGatewayAvailableSslPredefinedPoliciesIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ApplicationGatewayAvailableSslPredefinedPoliciesIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ApplicationGatewayAvailableSslPredefinedPoliciesIterator) Response() ApplicationGatewayAvailableSslPredefinedPolicies { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ApplicationGatewayAvailableSslPredefinedPoliciesIterator) Value() ApplicationGatewaySslPredefinedPolicy { + if !iter.page.NotDone() { + return ApplicationGatewaySslPredefinedPolicy{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ApplicationGatewayAvailableSslPredefinedPoliciesIterator type. +func NewApplicationGatewayAvailableSslPredefinedPoliciesIterator(page ApplicationGatewayAvailableSslPredefinedPoliciesPage) ApplicationGatewayAvailableSslPredefinedPoliciesIterator { + return ApplicationGatewayAvailableSslPredefinedPoliciesIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (agaspp ApplicationGatewayAvailableSslPredefinedPolicies) IsEmpty() bool { + return agaspp.Value == nil || len(*agaspp.Value) == 0 +} + +// applicationGatewayAvailableSslPredefinedPoliciesPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (agaspp ApplicationGatewayAvailableSslPredefinedPolicies) applicationGatewayAvailableSslPredefinedPoliciesPreparer(ctx context.Context) (*http.Request, error) { + if agaspp.NextLink == nil || len(to.String(agaspp.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(agaspp.NextLink))) +} + +// ApplicationGatewayAvailableSslPredefinedPoliciesPage contains a page of +// ApplicationGatewaySslPredefinedPolicy values. +type ApplicationGatewayAvailableSslPredefinedPoliciesPage struct { + fn func(context.Context, ApplicationGatewayAvailableSslPredefinedPolicies) (ApplicationGatewayAvailableSslPredefinedPolicies, error) + agaspp ApplicationGatewayAvailableSslPredefinedPolicies +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ApplicationGatewayAvailableSslPredefinedPoliciesPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationGatewayAvailableSslPredefinedPoliciesPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.agaspp) + if err != nil { + return err + } + page.agaspp = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ApplicationGatewayAvailableSslPredefinedPoliciesPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ApplicationGatewayAvailableSslPredefinedPoliciesPage) NotDone() bool { + return !page.agaspp.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ApplicationGatewayAvailableSslPredefinedPoliciesPage) Response() ApplicationGatewayAvailableSslPredefinedPolicies { + return page.agaspp +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ApplicationGatewayAvailableSslPredefinedPoliciesPage) Values() []ApplicationGatewaySslPredefinedPolicy { + if page.agaspp.IsEmpty() { + return nil + } + return *page.agaspp.Value +} + +// Creates a new instance of the ApplicationGatewayAvailableSslPredefinedPoliciesPage type. +func NewApplicationGatewayAvailableSslPredefinedPoliciesPage(getNextPage func(context.Context, ApplicationGatewayAvailableSslPredefinedPolicies) (ApplicationGatewayAvailableSslPredefinedPolicies, error)) ApplicationGatewayAvailableSslPredefinedPoliciesPage { + return ApplicationGatewayAvailableSslPredefinedPoliciesPage{fn: getNextPage} +} + +// ApplicationGatewayAvailableWafRuleSetsResult response for ApplicationGatewayAvailableWafRuleSets API +// service call. +type ApplicationGatewayAvailableWafRuleSetsResult struct { + autorest.Response `json:"-"` + // Value - The list of application gateway rule sets. + Value *[]ApplicationGatewayFirewallRuleSet `json:"value,omitempty"` +} + +// ApplicationGatewayBackendAddress backend address of an application gateway. +type ApplicationGatewayBackendAddress struct { + // Fqdn - Fully qualified domain name (FQDN). + Fqdn *string `json:"fqdn,omitempty"` + // IPAddress - IP address. + IPAddress *string `json:"ipAddress,omitempty"` +} + +// ApplicationGatewayBackendAddressPool backend Address Pool of an application gateway. +type ApplicationGatewayBackendAddressPool struct { + // ApplicationGatewayBackendAddressPoolPropertiesFormat - Properties of the application gateway backend address pool. + *ApplicationGatewayBackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + // Name - Name of the backend address pool that is unique within an Application Gateway. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Type of the resource. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ApplicationGatewayBackendAddressPool. +func (agbap ApplicationGatewayBackendAddressPool) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if agbap.ApplicationGatewayBackendAddressPoolPropertiesFormat != nil { + objectMap["properties"] = agbap.ApplicationGatewayBackendAddressPoolPropertiesFormat + } + if agbap.Name != nil { + objectMap["name"] = agbap.Name + } + if agbap.ID != nil { + objectMap["id"] = agbap.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ApplicationGatewayBackendAddressPool struct. +func (agbap *ApplicationGatewayBackendAddressPool) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var applicationGatewayBackendAddressPoolPropertiesFormat ApplicationGatewayBackendAddressPoolPropertiesFormat + err = json.Unmarshal(*v, &applicationGatewayBackendAddressPoolPropertiesFormat) + if err != nil { + return err + } + agbap.ApplicationGatewayBackendAddressPoolPropertiesFormat = &applicationGatewayBackendAddressPoolPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + agbap.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + agbap.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + agbap.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + agbap.ID = &ID + } + } + } + + return nil +} + +// ApplicationGatewayBackendAddressPoolPropertiesFormat properties of Backend Address Pool of an +// application gateway. +type ApplicationGatewayBackendAddressPoolPropertiesFormat struct { + // BackendIPConfigurations - READ-ONLY; Collection of references to IPs defined in network interfaces. + BackendIPConfigurations *[]InterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + // BackendAddresses - Backend addresses. + BackendAddresses *[]ApplicationGatewayBackendAddress `json:"backendAddresses,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the backend address pool resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// ApplicationGatewayBackendHealth response for ApplicationGatewayBackendHealth API service call. +type ApplicationGatewayBackendHealth struct { + autorest.Response `json:"-"` + // BackendAddressPools - A list of ApplicationGatewayBackendHealthPool resources. + BackendAddressPools *[]ApplicationGatewayBackendHealthPool `json:"backendAddressPools,omitempty"` +} + +// ApplicationGatewayBackendHealthHTTPSettings application gateway BackendHealthHttp settings. +type ApplicationGatewayBackendHealthHTTPSettings struct { + // BackendHTTPSettings - Reference of an ApplicationGatewayBackendHttpSettings resource. + BackendHTTPSettings *ApplicationGatewayBackendHTTPSettings `json:"backendHttpSettings,omitempty"` + // Servers - List of ApplicationGatewayBackendHealthServer resources. + Servers *[]ApplicationGatewayBackendHealthServer `json:"servers,omitempty"` +} + +// ApplicationGatewayBackendHealthOnDemand result of on demand test probe. +type ApplicationGatewayBackendHealthOnDemand struct { + autorest.Response `json:"-"` + // BackendAddressPool - Reference of an ApplicationGatewayBackendAddressPool resource. + BackendAddressPool *ApplicationGatewayBackendAddressPool `json:"backendAddressPool,omitempty"` + // BackendHealthHTTPSettings - Application gateway BackendHealthHttp settings. + BackendHealthHTTPSettings *ApplicationGatewayBackendHealthHTTPSettings `json:"backendHealthHttpSettings,omitempty"` +} + +// ApplicationGatewayBackendHealthPool application gateway BackendHealth pool. +type ApplicationGatewayBackendHealthPool struct { + // BackendAddressPool - Reference of an ApplicationGatewayBackendAddressPool resource. + BackendAddressPool *ApplicationGatewayBackendAddressPool `json:"backendAddressPool,omitempty"` + // BackendHTTPSettingsCollection - List of ApplicationGatewayBackendHealthHttpSettings resources. + BackendHTTPSettingsCollection *[]ApplicationGatewayBackendHealthHTTPSettings `json:"backendHttpSettingsCollection,omitempty"` +} + +// ApplicationGatewayBackendHealthServer application gateway backendhealth http settings. +type ApplicationGatewayBackendHealthServer struct { + // Address - IP address or FQDN of backend server. + Address *string `json:"address,omitempty"` + // IPConfiguration - Reference of IP configuration of backend server. + IPConfiguration *InterfaceIPConfiguration `json:"ipConfiguration,omitempty"` + // Health - Health of backend server. Possible values include: 'Unknown', 'Up', 'Down', 'Partial', 'Draining' + Health ApplicationGatewayBackendHealthServerHealth `json:"health,omitempty"` + // HealthProbeLog - Health Probe Log. + HealthProbeLog *string `json:"healthProbeLog,omitempty"` +} + +// ApplicationGatewayBackendHTTPSettings backend address pool settings of an application gateway. +type ApplicationGatewayBackendHTTPSettings struct { + // ApplicationGatewayBackendHTTPSettingsPropertiesFormat - Properties of the application gateway backend HTTP settings. + *ApplicationGatewayBackendHTTPSettingsPropertiesFormat `json:"properties,omitempty"` + // Name - Name of the backend http settings that is unique within an Application Gateway. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Type of the resource. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ApplicationGatewayBackendHTTPSettings. +func (agbhs ApplicationGatewayBackendHTTPSettings) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if agbhs.ApplicationGatewayBackendHTTPSettingsPropertiesFormat != nil { + objectMap["properties"] = agbhs.ApplicationGatewayBackendHTTPSettingsPropertiesFormat + } + if agbhs.Name != nil { + objectMap["name"] = agbhs.Name + } + if agbhs.ID != nil { + objectMap["id"] = agbhs.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ApplicationGatewayBackendHTTPSettings struct. +func (agbhs *ApplicationGatewayBackendHTTPSettings) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var applicationGatewayBackendHTTPSettingsPropertiesFormat ApplicationGatewayBackendHTTPSettingsPropertiesFormat + err = json.Unmarshal(*v, &applicationGatewayBackendHTTPSettingsPropertiesFormat) + if err != nil { + return err + } + agbhs.ApplicationGatewayBackendHTTPSettingsPropertiesFormat = &applicationGatewayBackendHTTPSettingsPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + agbhs.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + agbhs.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + agbhs.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + agbhs.ID = &ID + } + } + } + + return nil +} + +// ApplicationGatewayBackendHTTPSettingsPropertiesFormat properties of Backend address pool settings of an +// application gateway. +type ApplicationGatewayBackendHTTPSettingsPropertiesFormat struct { + // Port - The destination port on the backend. + Port *int32 `json:"port,omitempty"` + // Protocol - The protocol used to communicate with the backend. Possible values include: 'HTTP', 'HTTPS' + Protocol ApplicationGatewayProtocol `json:"protocol,omitempty"` + // CookieBasedAffinity - Cookie based affinity. Possible values include: 'Enabled', 'Disabled' + CookieBasedAffinity ApplicationGatewayCookieBasedAffinity `json:"cookieBasedAffinity,omitempty"` + // RequestTimeout - Request timeout in seconds. Application Gateway will fail the request if response is not received within RequestTimeout. Acceptable values are from 1 second to 86400 seconds. + RequestTimeout *int32 `json:"requestTimeout,omitempty"` + // Probe - Probe resource of an application gateway. + Probe *SubResource `json:"probe,omitempty"` + // AuthenticationCertificates - Array of references to application gateway authentication certificates. + AuthenticationCertificates *[]SubResource `json:"authenticationCertificates,omitempty"` + // TrustedRootCertificates - Array of references to application gateway trusted root certificates. + TrustedRootCertificates *[]SubResource `json:"trustedRootCertificates,omitempty"` + // ConnectionDraining - Connection draining of the backend http settings resource. + ConnectionDraining *ApplicationGatewayConnectionDraining `json:"connectionDraining,omitempty"` + // HostName - Host header to be sent to the backend servers. + HostName *string `json:"hostName,omitempty"` + // PickHostNameFromBackendAddress - Whether to pick host header should be picked from the host name of the backend server. Default value is false. + PickHostNameFromBackendAddress *bool `json:"pickHostNameFromBackendAddress,omitempty"` + // AffinityCookieName - Cookie name to use for the affinity cookie. + AffinityCookieName *string `json:"affinityCookieName,omitempty"` + // ProbeEnabled - Whether the probe is enabled. Default value is false. + ProbeEnabled *bool `json:"probeEnabled,omitempty"` + // Path - Path which should be used as a prefix for all HTTP requests. Null means no path will be prefixed. Default value is null. + Path *string `json:"path,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the backend HTTP settings resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// ApplicationGatewayConnectionDraining connection draining allows open connections to a backend server to +// be active for a specified time after the backend server got removed from the configuration. +type ApplicationGatewayConnectionDraining struct { + // Enabled - Whether connection draining is enabled or not. + Enabled *bool `json:"enabled,omitempty"` + // DrainTimeoutInSec - The number of seconds connection draining is active. Acceptable values are from 1 second to 3600 seconds. + DrainTimeoutInSec *int32 `json:"drainTimeoutInSec,omitempty"` +} + +// ApplicationGatewayCustomError customer error of an application gateway. +type ApplicationGatewayCustomError struct { + // StatusCode - Status code of the application gateway customer error. Possible values include: 'HTTPStatus403', 'HTTPStatus502' + StatusCode ApplicationGatewayCustomErrorStatusCode `json:"statusCode,omitempty"` + // CustomErrorPageURL - Error page URL of the application gateway customer error. + CustomErrorPageURL *string `json:"customErrorPageUrl,omitempty"` +} + +// ApplicationGatewayFirewallDisabledRuleGroup allows to disable rules within a rule group or an entire +// rule group. +type ApplicationGatewayFirewallDisabledRuleGroup struct { + // RuleGroupName - The name of the rule group that will be disabled. + RuleGroupName *string `json:"ruleGroupName,omitempty"` + // Rules - The list of rules that will be disabled. If null, all rules of the rule group will be disabled. + Rules *[]int32 `json:"rules,omitempty"` +} + +// ApplicationGatewayFirewallExclusion allow to exclude some variable satisfy the condition for the WAF +// check. +type ApplicationGatewayFirewallExclusion struct { + // MatchVariable - The variable to be excluded. + MatchVariable *string `json:"matchVariable,omitempty"` + // SelectorMatchOperator - When matchVariable is a collection, operate on the selector to specify which elements in the collection this exclusion applies to. + SelectorMatchOperator *string `json:"selectorMatchOperator,omitempty"` + // Selector - When matchVariable is a collection, operator used to specify which elements in the collection this exclusion applies to. + Selector *string `json:"selector,omitempty"` +} + +// ApplicationGatewayFirewallRule a web application firewall rule. +type ApplicationGatewayFirewallRule struct { + // RuleID - The identifier of the web application firewall rule. + RuleID *int32 `json:"ruleId,omitempty"` + // Description - The description of the web application firewall rule. + Description *string `json:"description,omitempty"` +} + +// ApplicationGatewayFirewallRuleGroup a web application firewall rule group. +type ApplicationGatewayFirewallRuleGroup struct { + // RuleGroupName - The name of the web application firewall rule group. + RuleGroupName *string `json:"ruleGroupName,omitempty"` + // Description - The description of the web application firewall rule group. + Description *string `json:"description,omitempty"` + // Rules - The rules of the web application firewall rule group. + Rules *[]ApplicationGatewayFirewallRule `json:"rules,omitempty"` +} + +// ApplicationGatewayFirewallRuleSet a web application firewall rule set. +type ApplicationGatewayFirewallRuleSet struct { + // ApplicationGatewayFirewallRuleSetPropertiesFormat - Properties of the application gateway firewall rule set. + *ApplicationGatewayFirewallRuleSetPropertiesFormat `json:"properties,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for ApplicationGatewayFirewallRuleSet. +func (agfrs ApplicationGatewayFirewallRuleSet) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if agfrs.ApplicationGatewayFirewallRuleSetPropertiesFormat != nil { + objectMap["properties"] = agfrs.ApplicationGatewayFirewallRuleSetPropertiesFormat + } + if agfrs.ID != nil { + objectMap["id"] = agfrs.ID + } + if agfrs.Location != nil { + objectMap["location"] = agfrs.Location + } + if agfrs.Tags != nil { + objectMap["tags"] = agfrs.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ApplicationGatewayFirewallRuleSet struct. +func (agfrs *ApplicationGatewayFirewallRuleSet) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var applicationGatewayFirewallRuleSetPropertiesFormat ApplicationGatewayFirewallRuleSetPropertiesFormat + err = json.Unmarshal(*v, &applicationGatewayFirewallRuleSetPropertiesFormat) + if err != nil { + return err + } + agfrs.ApplicationGatewayFirewallRuleSetPropertiesFormat = &applicationGatewayFirewallRuleSetPropertiesFormat + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + agfrs.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + agfrs.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + agfrs.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + agfrs.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + agfrs.Tags = tags + } + } + } + + return nil +} + +// ApplicationGatewayFirewallRuleSetPropertiesFormat properties of the web application firewall rule set. +type ApplicationGatewayFirewallRuleSetPropertiesFormat struct { + // ProvisioningState - READ-ONLY; The provisioning state of the web application firewall rule set. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // RuleSetType - The type of the web application firewall rule set. + RuleSetType *string `json:"ruleSetType,omitempty"` + // RuleSetVersion - The version of the web application firewall rule set type. + RuleSetVersion *string `json:"ruleSetVersion,omitempty"` + // RuleGroups - The rule groups of the web application firewall rule set. + RuleGroups *[]ApplicationGatewayFirewallRuleGroup `json:"ruleGroups,omitempty"` +} + +// ApplicationGatewayFrontendIPConfiguration frontend IP configuration of an application gateway. +type ApplicationGatewayFrontendIPConfiguration struct { + // ApplicationGatewayFrontendIPConfigurationPropertiesFormat - Properties of the application gateway frontend IP configuration. + *ApplicationGatewayFrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` + // Name - Name of the frontend IP configuration that is unique within an Application Gateway. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Type of the resource. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ApplicationGatewayFrontendIPConfiguration. +func (agfic ApplicationGatewayFrontendIPConfiguration) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if agfic.ApplicationGatewayFrontendIPConfigurationPropertiesFormat != nil { + objectMap["properties"] = agfic.ApplicationGatewayFrontendIPConfigurationPropertiesFormat + } + if agfic.Name != nil { + objectMap["name"] = agfic.Name + } + if agfic.ID != nil { + objectMap["id"] = agfic.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ApplicationGatewayFrontendIPConfiguration struct. +func (agfic *ApplicationGatewayFrontendIPConfiguration) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var applicationGatewayFrontendIPConfigurationPropertiesFormat ApplicationGatewayFrontendIPConfigurationPropertiesFormat + err = json.Unmarshal(*v, &applicationGatewayFrontendIPConfigurationPropertiesFormat) + if err != nil { + return err + } + agfic.ApplicationGatewayFrontendIPConfigurationPropertiesFormat = &applicationGatewayFrontendIPConfigurationPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + agfic.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + agfic.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + agfic.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + agfic.ID = &ID + } + } + } + + return nil +} + +// ApplicationGatewayFrontendIPConfigurationPropertiesFormat properties of Frontend IP configuration of an +// application gateway. +type ApplicationGatewayFrontendIPConfigurationPropertiesFormat struct { + // PrivateIPAddress - PrivateIPAddress of the network interface IP Configuration. + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + // PrivateIPAllocationMethod - The private IP address allocation method. Possible values include: 'Static', 'Dynamic' + PrivateIPAllocationMethod IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + // Subnet - Reference of the subnet resource. + Subnet *SubResource `json:"subnet,omitempty"` + // PublicIPAddress - Reference of the PublicIP resource. + PublicIPAddress *SubResource `json:"publicIPAddress,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the frontend IP configuration resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// ApplicationGatewayFrontendPort frontend port of an application gateway. +type ApplicationGatewayFrontendPort struct { + // ApplicationGatewayFrontendPortPropertiesFormat - Properties of the application gateway frontend port. + *ApplicationGatewayFrontendPortPropertiesFormat `json:"properties,omitempty"` + // Name - Name of the frontend port that is unique within an Application Gateway. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Type of the resource. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ApplicationGatewayFrontendPort. +func (agfp ApplicationGatewayFrontendPort) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if agfp.ApplicationGatewayFrontendPortPropertiesFormat != nil { + objectMap["properties"] = agfp.ApplicationGatewayFrontendPortPropertiesFormat + } + if agfp.Name != nil { + objectMap["name"] = agfp.Name + } + if agfp.ID != nil { + objectMap["id"] = agfp.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ApplicationGatewayFrontendPort struct. +func (agfp *ApplicationGatewayFrontendPort) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var applicationGatewayFrontendPortPropertiesFormat ApplicationGatewayFrontendPortPropertiesFormat + err = json.Unmarshal(*v, &applicationGatewayFrontendPortPropertiesFormat) + if err != nil { + return err + } + agfp.ApplicationGatewayFrontendPortPropertiesFormat = &applicationGatewayFrontendPortPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + agfp.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + agfp.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + agfp.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + agfp.ID = &ID + } + } + } + + return nil +} + +// ApplicationGatewayFrontendPortPropertiesFormat properties of Frontend port of an application gateway. +type ApplicationGatewayFrontendPortPropertiesFormat struct { + // Port - Frontend port. + Port *int32 `json:"port,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the frontend port resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// ApplicationGatewayHeaderConfiguration header configuration of the Actions set in Application Gateway. +type ApplicationGatewayHeaderConfiguration struct { + // HeaderName - Header name of the header configuration. + HeaderName *string `json:"headerName,omitempty"` + // HeaderValue - Header value of the header configuration. + HeaderValue *string `json:"headerValue,omitempty"` +} + +// ApplicationGatewayHTTPListener http listener of an application gateway. +type ApplicationGatewayHTTPListener struct { + // ApplicationGatewayHTTPListenerPropertiesFormat - Properties of the application gateway HTTP listener. + *ApplicationGatewayHTTPListenerPropertiesFormat `json:"properties,omitempty"` + // Name - Name of the HTTP listener that is unique within an Application Gateway. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Type of the resource. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ApplicationGatewayHTTPListener. +func (aghl ApplicationGatewayHTTPListener) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if aghl.ApplicationGatewayHTTPListenerPropertiesFormat != nil { + objectMap["properties"] = aghl.ApplicationGatewayHTTPListenerPropertiesFormat + } + if aghl.Name != nil { + objectMap["name"] = aghl.Name + } + if aghl.ID != nil { + objectMap["id"] = aghl.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ApplicationGatewayHTTPListener struct. +func (aghl *ApplicationGatewayHTTPListener) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var applicationGatewayHTTPListenerPropertiesFormat ApplicationGatewayHTTPListenerPropertiesFormat + err = json.Unmarshal(*v, &applicationGatewayHTTPListenerPropertiesFormat) + if err != nil { + return err + } + aghl.ApplicationGatewayHTTPListenerPropertiesFormat = &applicationGatewayHTTPListenerPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + aghl.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + aghl.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + aghl.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + aghl.ID = &ID + } + } + } + + return nil +} + +// ApplicationGatewayHTTPListenerPropertiesFormat properties of HTTP listener of an application gateway. +type ApplicationGatewayHTTPListenerPropertiesFormat struct { + // FrontendIPConfiguration - Frontend IP configuration resource of an application gateway. + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + // FrontendPort - Frontend port resource of an application gateway. + FrontendPort *SubResource `json:"frontendPort,omitempty"` + // Protocol - Protocol of the HTTP listener. Possible values include: 'HTTP', 'HTTPS' + Protocol ApplicationGatewayProtocol `json:"protocol,omitempty"` + // HostName - Host name of HTTP listener. + HostName *string `json:"hostName,omitempty"` + // SslCertificate - SSL certificate resource of an application gateway. + SslCertificate *SubResource `json:"sslCertificate,omitempty"` + // RequireServerNameIndication - Applicable only if protocol is https. Enables SNI for multi-hosting. + RequireServerNameIndication *bool `json:"requireServerNameIndication,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the HTTP listener resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // CustomErrorConfigurations - Custom error configurations of the HTTP listener. + CustomErrorConfigurations *[]ApplicationGatewayCustomError `json:"customErrorConfigurations,omitempty"` + // FirewallPolicy - Reference to the FirewallPolicy resource. + FirewallPolicy *SubResource `json:"firewallPolicy,omitempty"` + // Hostnames - List of Host names for HTTP Listener that allows special wildcard characters as well. + Hostnames *[]string `json:"hostnames,omitempty"` +} + +// ApplicationGatewayIPConfiguration IP configuration of an application gateway. Currently 1 public and 1 +// private IP configuration is allowed. +type ApplicationGatewayIPConfiguration struct { + // ApplicationGatewayIPConfigurationPropertiesFormat - Properties of the application gateway IP configuration. + *ApplicationGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` + // Name - Name of the IP configuration that is unique within an Application Gateway. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Type of the resource. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ApplicationGatewayIPConfiguration. +func (agic ApplicationGatewayIPConfiguration) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if agic.ApplicationGatewayIPConfigurationPropertiesFormat != nil { + objectMap["properties"] = agic.ApplicationGatewayIPConfigurationPropertiesFormat + } + if agic.Name != nil { + objectMap["name"] = agic.Name + } + if agic.ID != nil { + objectMap["id"] = agic.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ApplicationGatewayIPConfiguration struct. +func (agic *ApplicationGatewayIPConfiguration) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var applicationGatewayIPConfigurationPropertiesFormat ApplicationGatewayIPConfigurationPropertiesFormat + err = json.Unmarshal(*v, &applicationGatewayIPConfigurationPropertiesFormat) + if err != nil { + return err + } + agic.ApplicationGatewayIPConfigurationPropertiesFormat = &applicationGatewayIPConfigurationPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + agic.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + agic.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + agic.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + agic.ID = &ID + } + } + } + + return nil +} + +// ApplicationGatewayIPConfigurationPropertiesFormat properties of IP configuration of an application +// gateway. +type ApplicationGatewayIPConfigurationPropertiesFormat struct { + // Subnet - Reference of the subnet resource. A subnet from where application gateway gets its private address. + Subnet *SubResource `json:"subnet,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the application gateway IP configuration resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// ApplicationGatewayListResult response for ListApplicationGateways API service call. +type ApplicationGatewayListResult struct { + autorest.Response `json:"-"` + // Value - List of an application gateways in a resource group. + Value *[]ApplicationGateway `json:"value,omitempty"` + // NextLink - URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// ApplicationGatewayListResultIterator provides access to a complete listing of ApplicationGateway values. +type ApplicationGatewayListResultIterator struct { + i int + page ApplicationGatewayListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ApplicationGatewayListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationGatewayListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ApplicationGatewayListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ApplicationGatewayListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ApplicationGatewayListResultIterator) Response() ApplicationGatewayListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ApplicationGatewayListResultIterator) Value() ApplicationGateway { + if !iter.page.NotDone() { + return ApplicationGateway{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ApplicationGatewayListResultIterator type. +func NewApplicationGatewayListResultIterator(page ApplicationGatewayListResultPage) ApplicationGatewayListResultIterator { + return ApplicationGatewayListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (aglr ApplicationGatewayListResult) IsEmpty() bool { + return aglr.Value == nil || len(*aglr.Value) == 0 +} + +// applicationGatewayListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (aglr ApplicationGatewayListResult) applicationGatewayListResultPreparer(ctx context.Context) (*http.Request, error) { + if aglr.NextLink == nil || len(to.String(aglr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(aglr.NextLink))) +} + +// ApplicationGatewayListResultPage contains a page of ApplicationGateway values. +type ApplicationGatewayListResultPage struct { + fn func(context.Context, ApplicationGatewayListResult) (ApplicationGatewayListResult, error) + aglr ApplicationGatewayListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ApplicationGatewayListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationGatewayListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.aglr) + if err != nil { + return err + } + page.aglr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ApplicationGatewayListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ApplicationGatewayListResultPage) NotDone() bool { + return !page.aglr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ApplicationGatewayListResultPage) Response() ApplicationGatewayListResult { + return page.aglr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ApplicationGatewayListResultPage) Values() []ApplicationGateway { + if page.aglr.IsEmpty() { + return nil + } + return *page.aglr.Value +} + +// Creates a new instance of the ApplicationGatewayListResultPage type. +func NewApplicationGatewayListResultPage(getNextPage func(context.Context, ApplicationGatewayListResult) (ApplicationGatewayListResult, error)) ApplicationGatewayListResultPage { + return ApplicationGatewayListResultPage{fn: getNextPage} +} + +// ApplicationGatewayOnDemandProbe details of on demand test probe request. +type ApplicationGatewayOnDemandProbe struct { + // Protocol - The protocol used for the probe. Possible values include: 'HTTP', 'HTTPS' + Protocol ApplicationGatewayProtocol `json:"protocol,omitempty"` + // Host - Host name to send the probe to. + Host *string `json:"host,omitempty"` + // Path - Relative path of probe. Valid path starts from '/'. Probe is sent to ://:. + Path *string `json:"path,omitempty"` + // Timeout - The probe timeout in seconds. Probe marked as failed if valid response is not received with this timeout period. Acceptable values are from 1 second to 86400 seconds. + Timeout *int32 `json:"timeout,omitempty"` + // PickHostNameFromBackendHTTPSettings - Whether the host header should be picked from the backend http settings. Default value is false. + PickHostNameFromBackendHTTPSettings *bool `json:"pickHostNameFromBackendHttpSettings,omitempty"` + // Match - Criterion for classifying a healthy probe response. + Match *ApplicationGatewayProbeHealthResponseMatch `json:"match,omitempty"` + // BackendAddressPool - Reference of backend pool of application gateway to which probe request will be sent. + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + // BackendHTTPSettings - Reference of backend http setting of application gateway to be used for test probe. + BackendHTTPSettings *SubResource `json:"backendHttpSettings,omitempty"` +} + +// ApplicationGatewayPathRule path rule of URL path map of an application gateway. +type ApplicationGatewayPathRule struct { + // ApplicationGatewayPathRulePropertiesFormat - Properties of the application gateway path rule. + *ApplicationGatewayPathRulePropertiesFormat `json:"properties,omitempty"` + // Name - Name of the path rule that is unique within an Application Gateway. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Type of the resource. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ApplicationGatewayPathRule. +func (agpr ApplicationGatewayPathRule) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if agpr.ApplicationGatewayPathRulePropertiesFormat != nil { + objectMap["properties"] = agpr.ApplicationGatewayPathRulePropertiesFormat + } + if agpr.Name != nil { + objectMap["name"] = agpr.Name + } + if agpr.ID != nil { + objectMap["id"] = agpr.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ApplicationGatewayPathRule struct. +func (agpr *ApplicationGatewayPathRule) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var applicationGatewayPathRulePropertiesFormat ApplicationGatewayPathRulePropertiesFormat + err = json.Unmarshal(*v, &applicationGatewayPathRulePropertiesFormat) + if err != nil { + return err + } + agpr.ApplicationGatewayPathRulePropertiesFormat = &applicationGatewayPathRulePropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + agpr.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + agpr.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + agpr.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + agpr.ID = &ID + } + } + } + + return nil +} + +// ApplicationGatewayPathRulePropertiesFormat properties of path rule of an application gateway. +type ApplicationGatewayPathRulePropertiesFormat struct { + // Paths - Path rules of URL path map. + Paths *[]string `json:"paths,omitempty"` + // BackendAddressPool - Backend address pool resource of URL path map path rule. + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + // BackendHTTPSettings - Backend http settings resource of URL path map path rule. + BackendHTTPSettings *SubResource `json:"backendHttpSettings,omitempty"` + // RedirectConfiguration - Redirect configuration resource of URL path map path rule. + RedirectConfiguration *SubResource `json:"redirectConfiguration,omitempty"` + // RewriteRuleSet - Rewrite rule set resource of URL path map path rule. + RewriteRuleSet *SubResource `json:"rewriteRuleSet,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the path rule resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // FirewallPolicy - Reference to the FirewallPolicy resource. + FirewallPolicy *SubResource `json:"firewallPolicy,omitempty"` +} + +// ApplicationGatewayProbe probe of the application gateway. +type ApplicationGatewayProbe struct { + // ApplicationGatewayProbePropertiesFormat - Properties of the application gateway probe. + *ApplicationGatewayProbePropertiesFormat `json:"properties,omitempty"` + // Name - Name of the probe that is unique within an Application Gateway. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Type of the resource. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ApplicationGatewayProbe. +func (agp ApplicationGatewayProbe) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if agp.ApplicationGatewayProbePropertiesFormat != nil { + objectMap["properties"] = agp.ApplicationGatewayProbePropertiesFormat + } + if agp.Name != nil { + objectMap["name"] = agp.Name + } + if agp.ID != nil { + objectMap["id"] = agp.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ApplicationGatewayProbe struct. +func (agp *ApplicationGatewayProbe) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var applicationGatewayProbePropertiesFormat ApplicationGatewayProbePropertiesFormat + err = json.Unmarshal(*v, &applicationGatewayProbePropertiesFormat) + if err != nil { + return err + } + agp.ApplicationGatewayProbePropertiesFormat = &applicationGatewayProbePropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + agp.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + agp.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + agp.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + agp.ID = &ID + } + } + } + + return nil +} + +// ApplicationGatewayProbeHealthResponseMatch application gateway probe health response match. +type ApplicationGatewayProbeHealthResponseMatch struct { + // Body - Body that must be contained in the health response. Default value is empty. + Body *string `json:"body,omitempty"` + // StatusCodes - Allowed ranges of healthy status codes. Default range of healthy status codes is 200-399. + StatusCodes *[]string `json:"statusCodes,omitempty"` +} + +// ApplicationGatewayProbePropertiesFormat properties of probe of an application gateway. +type ApplicationGatewayProbePropertiesFormat struct { + // Protocol - The protocol used for the probe. Possible values include: 'HTTP', 'HTTPS' + Protocol ApplicationGatewayProtocol `json:"protocol,omitempty"` + // Host - Host name to send the probe to. + Host *string `json:"host,omitempty"` + // Path - Relative path of probe. Valid path starts from '/'. Probe is sent to ://:. + Path *string `json:"path,omitempty"` + // Interval - The probing interval in seconds. This is the time interval between two consecutive probes. Acceptable values are from 1 second to 86400 seconds. + Interval *int32 `json:"interval,omitempty"` + // Timeout - The probe timeout in seconds. Probe marked as failed if valid response is not received with this timeout period. Acceptable values are from 1 second to 86400 seconds. + Timeout *int32 `json:"timeout,omitempty"` + // UnhealthyThreshold - The probe retry count. Backend server is marked down after consecutive probe failure count reaches UnhealthyThreshold. Acceptable values are from 1 second to 20. + UnhealthyThreshold *int32 `json:"unhealthyThreshold,omitempty"` + // PickHostNameFromBackendHTTPSettings - Whether the host header should be picked from the backend http settings. Default value is false. + PickHostNameFromBackendHTTPSettings *bool `json:"pickHostNameFromBackendHttpSettings,omitempty"` + // MinServers - Minimum number of servers that are always marked healthy. Default value is 0. + MinServers *int32 `json:"minServers,omitempty"` + // Match - Criterion for classifying a healthy probe response. + Match *ApplicationGatewayProbeHealthResponseMatch `json:"match,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the probe resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // Port - Custom port which will be used for probing the backend servers. The valid value ranges from 1 to 65535. In case not set, port from http settings will be used. This property is valid for Standard_v2 and WAF_v2 only. + Port *int32 `json:"port,omitempty"` +} + +// ApplicationGatewayPropertiesFormat properties of the application gateway. +type ApplicationGatewayPropertiesFormat struct { + // Sku - SKU of the application gateway resource. + Sku *ApplicationGatewaySku `json:"sku,omitempty"` + // SslPolicy - SSL policy of the application gateway resource. + SslPolicy *ApplicationGatewaySslPolicy `json:"sslPolicy,omitempty"` + // OperationalState - READ-ONLY; Operational state of the application gateway resource. Possible values include: 'Stopped', 'Starting', 'Running', 'Stopping' + OperationalState ApplicationGatewayOperationalState `json:"operationalState,omitempty"` + // GatewayIPConfigurations - Subnets of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits). + GatewayIPConfigurations *[]ApplicationGatewayIPConfiguration `json:"gatewayIPConfigurations,omitempty"` + // AuthenticationCertificates - Authentication certificates of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits). + AuthenticationCertificates *[]ApplicationGatewayAuthenticationCertificate `json:"authenticationCertificates,omitempty"` + // TrustedRootCertificates - Trusted Root certificates of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits). + TrustedRootCertificates *[]ApplicationGatewayTrustedRootCertificate `json:"trustedRootCertificates,omitempty"` + // SslCertificates - SSL certificates of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits). + SslCertificates *[]ApplicationGatewaySslCertificate `json:"sslCertificates,omitempty"` + // FrontendIPConfigurations - Frontend IP addresses of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits). + FrontendIPConfigurations *[]ApplicationGatewayFrontendIPConfiguration `json:"frontendIPConfigurations,omitempty"` + // FrontendPorts - Frontend ports of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits). + FrontendPorts *[]ApplicationGatewayFrontendPort `json:"frontendPorts,omitempty"` + // Probes - Probes of the application gateway resource. + Probes *[]ApplicationGatewayProbe `json:"probes,omitempty"` + // BackendAddressPools - Backend address pool of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits). + BackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"backendAddressPools,omitempty"` + // BackendHTTPSettingsCollection - Backend http settings of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits). + BackendHTTPSettingsCollection *[]ApplicationGatewayBackendHTTPSettings `json:"backendHttpSettingsCollection,omitempty"` + // HTTPListeners - Http listeners of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits). + HTTPListeners *[]ApplicationGatewayHTTPListener `json:"httpListeners,omitempty"` + // URLPathMaps - URL path map of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits). + URLPathMaps *[]ApplicationGatewayURLPathMap `json:"urlPathMaps,omitempty"` + // RequestRoutingRules - Request routing rules of the application gateway resource. + RequestRoutingRules *[]ApplicationGatewayRequestRoutingRule `json:"requestRoutingRules,omitempty"` + // RewriteRuleSets - Rewrite rules for the application gateway resource. + RewriteRuleSets *[]ApplicationGatewayRewriteRuleSet `json:"rewriteRuleSets,omitempty"` + // RedirectConfigurations - Redirect configurations of the application gateway resource. For default limits, see [Application Gateway limits](https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits). + RedirectConfigurations *[]ApplicationGatewayRedirectConfiguration `json:"redirectConfigurations,omitempty"` + // WebApplicationFirewallConfiguration - Web application firewall configuration. + WebApplicationFirewallConfiguration *ApplicationGatewayWebApplicationFirewallConfiguration `json:"webApplicationFirewallConfiguration,omitempty"` + // FirewallPolicy - Reference of the FirewallPolicy resource. + FirewallPolicy *SubResource `json:"firewallPolicy,omitempty"` + // EnableHTTP2 - Whether HTTP2 is enabled on the application gateway resource. + EnableHTTP2 *bool `json:"enableHttp2,omitempty"` + // EnableFips - Whether FIPS is enabled on the application gateway resource. + EnableFips *bool `json:"enableFips,omitempty"` + // AutoscaleConfiguration - Autoscale Configuration. + AutoscaleConfiguration *ApplicationGatewayAutoscaleConfiguration `json:"autoscaleConfiguration,omitempty"` + // ResourceGUID - READ-ONLY; The resource GUID property of the application gateway resource. + ResourceGUID *string `json:"resourceGuid,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the application gateway resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // CustomErrorConfigurations - Custom error configurations of the application gateway resource. + CustomErrorConfigurations *[]ApplicationGatewayCustomError `json:"customErrorConfigurations,omitempty"` +} + +// ApplicationGatewayRedirectConfiguration redirect configuration of an application gateway. +type ApplicationGatewayRedirectConfiguration struct { + // ApplicationGatewayRedirectConfigurationPropertiesFormat - Properties of the application gateway redirect configuration. + *ApplicationGatewayRedirectConfigurationPropertiesFormat `json:"properties,omitempty"` + // Name - Name of the redirect configuration that is unique within an Application Gateway. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Type of the resource. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ApplicationGatewayRedirectConfiguration. +func (agrc ApplicationGatewayRedirectConfiguration) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if agrc.ApplicationGatewayRedirectConfigurationPropertiesFormat != nil { + objectMap["properties"] = agrc.ApplicationGatewayRedirectConfigurationPropertiesFormat + } + if agrc.Name != nil { + objectMap["name"] = agrc.Name + } + if agrc.ID != nil { + objectMap["id"] = agrc.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ApplicationGatewayRedirectConfiguration struct. +func (agrc *ApplicationGatewayRedirectConfiguration) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var applicationGatewayRedirectConfigurationPropertiesFormat ApplicationGatewayRedirectConfigurationPropertiesFormat + err = json.Unmarshal(*v, &applicationGatewayRedirectConfigurationPropertiesFormat) + if err != nil { + return err + } + agrc.ApplicationGatewayRedirectConfigurationPropertiesFormat = &applicationGatewayRedirectConfigurationPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + agrc.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + agrc.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + agrc.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + agrc.ID = &ID + } + } + } + + return nil +} + +// ApplicationGatewayRedirectConfigurationPropertiesFormat properties of redirect configuration of the +// application gateway. +type ApplicationGatewayRedirectConfigurationPropertiesFormat struct { + // RedirectType - HTTP redirection type. Possible values include: 'Permanent', 'Found', 'SeeOther', 'Temporary' + RedirectType ApplicationGatewayRedirectType `json:"redirectType,omitempty"` + // TargetListener - Reference to a listener to redirect the request to. + TargetListener *SubResource `json:"targetListener,omitempty"` + // TargetURL - Url to redirect the request to. + TargetURL *string `json:"targetUrl,omitempty"` + // IncludePath - Include path in the redirected url. + IncludePath *bool `json:"includePath,omitempty"` + // IncludeQueryString - Include query string in the redirected url. + IncludeQueryString *bool `json:"includeQueryString,omitempty"` + // RequestRoutingRules - Request routing specifying redirect configuration. + RequestRoutingRules *[]SubResource `json:"requestRoutingRules,omitempty"` + // URLPathMaps - Url path maps specifying default redirect configuration. + URLPathMaps *[]SubResource `json:"urlPathMaps,omitempty"` + // PathRules - Path rules specifying redirect configuration. + PathRules *[]SubResource `json:"pathRules,omitempty"` +} + +// ApplicationGatewayRequestRoutingRule request routing rule of an application gateway. +type ApplicationGatewayRequestRoutingRule struct { + // ApplicationGatewayRequestRoutingRulePropertiesFormat - Properties of the application gateway request routing rule. + *ApplicationGatewayRequestRoutingRulePropertiesFormat `json:"properties,omitempty"` + // Name - Name of the request routing rule that is unique within an Application Gateway. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Type of the resource. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ApplicationGatewayRequestRoutingRule. +func (agrrr ApplicationGatewayRequestRoutingRule) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if agrrr.ApplicationGatewayRequestRoutingRulePropertiesFormat != nil { + objectMap["properties"] = agrrr.ApplicationGatewayRequestRoutingRulePropertiesFormat + } + if agrrr.Name != nil { + objectMap["name"] = agrrr.Name + } + if agrrr.ID != nil { + objectMap["id"] = agrrr.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ApplicationGatewayRequestRoutingRule struct. +func (agrrr *ApplicationGatewayRequestRoutingRule) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var applicationGatewayRequestRoutingRulePropertiesFormat ApplicationGatewayRequestRoutingRulePropertiesFormat + err = json.Unmarshal(*v, &applicationGatewayRequestRoutingRulePropertiesFormat) + if err != nil { + return err + } + agrrr.ApplicationGatewayRequestRoutingRulePropertiesFormat = &applicationGatewayRequestRoutingRulePropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + agrrr.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + agrrr.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + agrrr.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + agrrr.ID = &ID + } + } + } + + return nil +} + +// ApplicationGatewayRequestRoutingRulePropertiesFormat properties of request routing rule of the +// application gateway. +type ApplicationGatewayRequestRoutingRulePropertiesFormat struct { + // RuleType - Rule type. Possible values include: 'Basic', 'PathBasedRouting' + RuleType ApplicationGatewayRequestRoutingRuleType `json:"ruleType,omitempty"` + // Priority - Priority of the request routing rule. + Priority *int32 `json:"priority,omitempty"` + // BackendAddressPool - Backend address pool resource of the application gateway. + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + // BackendHTTPSettings - Backend http settings resource of the application gateway. + BackendHTTPSettings *SubResource `json:"backendHttpSettings,omitempty"` + // HTTPListener - Http listener resource of the application gateway. + HTTPListener *SubResource `json:"httpListener,omitempty"` + // URLPathMap - URL path map resource of the application gateway. + URLPathMap *SubResource `json:"urlPathMap,omitempty"` + // RewriteRuleSet - Rewrite Rule Set resource in Basic rule of the application gateway. + RewriteRuleSet *SubResource `json:"rewriteRuleSet,omitempty"` + // RedirectConfiguration - Redirect configuration resource of the application gateway. + RedirectConfiguration *SubResource `json:"redirectConfiguration,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the request routing rule resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// ApplicationGatewayRewriteRule rewrite rule of an application gateway. +type ApplicationGatewayRewriteRule struct { + // Name - Name of the rewrite rule that is unique within an Application Gateway. + Name *string `json:"name,omitempty"` + // RuleSequence - Rule Sequence of the rewrite rule that determines the order of execution of a particular rule in a RewriteRuleSet. + RuleSequence *int32 `json:"ruleSequence,omitempty"` + // Conditions - Conditions based on which the action set execution will be evaluated. + Conditions *[]ApplicationGatewayRewriteRuleCondition `json:"conditions,omitempty"` + // ActionSet - Set of actions to be done as part of the rewrite Rule. + ActionSet *ApplicationGatewayRewriteRuleActionSet `json:"actionSet,omitempty"` +} + +// ApplicationGatewayRewriteRuleActionSet set of actions in the Rewrite Rule in Application Gateway. +type ApplicationGatewayRewriteRuleActionSet struct { + // RequestHeaderConfigurations - Request Header Actions in the Action Set. + RequestHeaderConfigurations *[]ApplicationGatewayHeaderConfiguration `json:"requestHeaderConfigurations,omitempty"` + // ResponseHeaderConfigurations - Response Header Actions in the Action Set. + ResponseHeaderConfigurations *[]ApplicationGatewayHeaderConfiguration `json:"responseHeaderConfigurations,omitempty"` +} + +// ApplicationGatewayRewriteRuleCondition set of conditions in the Rewrite Rule in Application Gateway. +type ApplicationGatewayRewriteRuleCondition struct { + // Variable - The condition parameter of the RewriteRuleCondition. + Variable *string `json:"variable,omitempty"` + // Pattern - The pattern, either fixed string or regular expression, that evaluates the truthfulness of the condition. + Pattern *string `json:"pattern,omitempty"` + // IgnoreCase - Setting this paramter to truth value with force the pattern to do a case in-sensitive comparison. + IgnoreCase *bool `json:"ignoreCase,omitempty"` + // Negate - Setting this value as truth will force to check the negation of the condition given by the user. + Negate *bool `json:"negate,omitempty"` +} + +// ApplicationGatewayRewriteRuleSet rewrite rule set of an application gateway. +type ApplicationGatewayRewriteRuleSet struct { + // ApplicationGatewayRewriteRuleSetPropertiesFormat - Properties of the application gateway rewrite rule set. + *ApplicationGatewayRewriteRuleSetPropertiesFormat `json:"properties,omitempty"` + // Name - Name of the rewrite rule set that is unique within an Application Gateway. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ApplicationGatewayRewriteRuleSet. +func (agrrs ApplicationGatewayRewriteRuleSet) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if agrrs.ApplicationGatewayRewriteRuleSetPropertiesFormat != nil { + objectMap["properties"] = agrrs.ApplicationGatewayRewriteRuleSetPropertiesFormat + } + if agrrs.Name != nil { + objectMap["name"] = agrrs.Name + } + if agrrs.ID != nil { + objectMap["id"] = agrrs.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ApplicationGatewayRewriteRuleSet struct. +func (agrrs *ApplicationGatewayRewriteRuleSet) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var applicationGatewayRewriteRuleSetPropertiesFormat ApplicationGatewayRewriteRuleSetPropertiesFormat + err = json.Unmarshal(*v, &applicationGatewayRewriteRuleSetPropertiesFormat) + if err != nil { + return err + } + agrrs.ApplicationGatewayRewriteRuleSetPropertiesFormat = &applicationGatewayRewriteRuleSetPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + agrrs.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + agrrs.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + agrrs.ID = &ID + } + } + } + + return nil +} + +// ApplicationGatewayRewriteRuleSetPropertiesFormat properties of rewrite rule set of the application +// gateway. +type ApplicationGatewayRewriteRuleSetPropertiesFormat struct { + // RewriteRules - Rewrite rules in the rewrite rule set. + RewriteRules *[]ApplicationGatewayRewriteRule `json:"rewriteRules,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the rewrite rule set resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// ApplicationGatewaysBackendHealthFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type ApplicationGatewaysBackendHealthFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ApplicationGatewaysBackendHealthFuture) Result(client ApplicationGatewaysClient) (agbh ApplicationGatewayBackendHealth, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysBackendHealthFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ApplicationGatewaysBackendHealthFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if agbh.Response.Response, err = future.GetResult(sender); err == nil && agbh.Response.Response.StatusCode != http.StatusNoContent { + agbh, err = client.BackendHealthResponder(agbh.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysBackendHealthFuture", "Result", agbh.Response.Response, "Failure responding to request") + } + } + return +} + +// ApplicationGatewaysBackendHealthOnDemandFuture an abstraction for monitoring and retrieving the results +// of a long-running operation. +type ApplicationGatewaysBackendHealthOnDemandFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ApplicationGatewaysBackendHealthOnDemandFuture) Result(client ApplicationGatewaysClient) (agbhod ApplicationGatewayBackendHealthOnDemand, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysBackendHealthOnDemandFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ApplicationGatewaysBackendHealthOnDemandFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if agbhod.Response.Response, err = future.GetResult(sender); err == nil && agbhod.Response.Response.StatusCode != http.StatusNoContent { + agbhod, err = client.BackendHealthOnDemandResponder(agbhod.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysBackendHealthOnDemandFuture", "Result", agbhod.Response.Response, "Failure responding to request") + } + } + return +} + +// ApplicationGatewaysCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type ApplicationGatewaysCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ApplicationGatewaysCreateOrUpdateFuture) Result(client ApplicationGatewaysClient) (ag ApplicationGateway, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ApplicationGatewaysCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if ag.Response.Response, err = future.GetResult(sender); err == nil && ag.Response.Response.StatusCode != http.StatusNoContent { + ag, err = client.CreateOrUpdateResponder(ag.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysCreateOrUpdateFuture", "Result", ag.Response.Response, "Failure responding to request") + } + } + return +} + +// ApplicationGatewaysDeleteFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type ApplicationGatewaysDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ApplicationGatewaysDeleteFuture) Result(client ApplicationGatewaysClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ApplicationGatewaysDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// ApplicationGatewaySku SKU of an application gateway. +type ApplicationGatewaySku struct { + // Name - Name of an application gateway SKU. Possible values include: 'StandardSmall', 'StandardMedium', 'StandardLarge', 'WAFMedium', 'WAFLarge', 'StandardV2', 'WAFV2' + Name ApplicationGatewaySkuName `json:"name,omitempty"` + // Tier - Tier of an application gateway. Possible values include: 'ApplicationGatewayTierStandard', 'ApplicationGatewayTierWAF', 'ApplicationGatewayTierStandardV2', 'ApplicationGatewayTierWAFV2' + Tier ApplicationGatewayTier `json:"tier,omitempty"` + // Capacity - Capacity (instance count) of an application gateway. + Capacity *int32 `json:"capacity,omitempty"` +} + +// ApplicationGatewaySslCertificate SSL certificates of an application gateway. +type ApplicationGatewaySslCertificate struct { + // ApplicationGatewaySslCertificatePropertiesFormat - Properties of the application gateway SSL certificate. + *ApplicationGatewaySslCertificatePropertiesFormat `json:"properties,omitempty"` + // Name - Name of the SSL certificate that is unique within an Application Gateway. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Type of the resource. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ApplicationGatewaySslCertificate. +func (agsc ApplicationGatewaySslCertificate) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if agsc.ApplicationGatewaySslCertificatePropertiesFormat != nil { + objectMap["properties"] = agsc.ApplicationGatewaySslCertificatePropertiesFormat + } + if agsc.Name != nil { + objectMap["name"] = agsc.Name + } + if agsc.ID != nil { + objectMap["id"] = agsc.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ApplicationGatewaySslCertificate struct. +func (agsc *ApplicationGatewaySslCertificate) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var applicationGatewaySslCertificatePropertiesFormat ApplicationGatewaySslCertificatePropertiesFormat + err = json.Unmarshal(*v, &applicationGatewaySslCertificatePropertiesFormat) + if err != nil { + return err + } + agsc.ApplicationGatewaySslCertificatePropertiesFormat = &applicationGatewaySslCertificatePropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + agsc.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + agsc.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + agsc.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + agsc.ID = &ID + } + } + } + + return nil +} + +// ApplicationGatewaySslCertificatePropertiesFormat properties of SSL certificates of an application +// gateway. +type ApplicationGatewaySslCertificatePropertiesFormat struct { + // Data - Base-64 encoded pfx certificate. Only applicable in PUT Request. + Data *string `json:"data,omitempty"` + // Password - Password for the pfx file specified in data. Only applicable in PUT request. + Password *string `json:"password,omitempty"` + // PublicCertData - READ-ONLY; Base-64 encoded Public cert data corresponding to pfx specified in data. Only applicable in GET request. + PublicCertData *string `json:"publicCertData,omitempty"` + // KeyVaultSecretID - Secret Id of (base-64 encoded unencrypted pfx) 'Secret' or 'Certificate' object stored in KeyVault. + KeyVaultSecretID *string `json:"keyVaultSecretId,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the SSL certificate resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// ApplicationGatewaySslPolicy application Gateway Ssl policy. +type ApplicationGatewaySslPolicy struct { + // DisabledSslProtocols - Ssl protocols to be disabled on application gateway. + DisabledSslProtocols *[]ApplicationGatewaySslProtocol `json:"disabledSslProtocols,omitempty"` + // PolicyType - Type of Ssl Policy. Possible values include: 'Predefined', 'Custom' + PolicyType ApplicationGatewaySslPolicyType `json:"policyType,omitempty"` + // PolicyName - Name of Ssl predefined policy. Possible values include: 'AppGwSslPolicy20150501', 'AppGwSslPolicy20170401', 'AppGwSslPolicy20170401S' + PolicyName ApplicationGatewaySslPolicyName `json:"policyName,omitempty"` + // CipherSuites - Ssl cipher suites to be enabled in the specified order to application gateway. + CipherSuites *[]ApplicationGatewaySslCipherSuite `json:"cipherSuites,omitempty"` + // MinProtocolVersion - Minimum version of Ssl protocol to be supported on application gateway. Possible values include: 'TLSv10', 'TLSv11', 'TLSv12' + MinProtocolVersion ApplicationGatewaySslProtocol `json:"minProtocolVersion,omitempty"` +} + +// ApplicationGatewaySslPredefinedPolicy an Ssl predefined policy. +type ApplicationGatewaySslPredefinedPolicy struct { + autorest.Response `json:"-"` + // Name - Name of the Ssl predefined policy. + Name *string `json:"name,omitempty"` + // ApplicationGatewaySslPredefinedPolicyPropertiesFormat - Properties of the application gateway SSL predefined policy. + *ApplicationGatewaySslPredefinedPolicyPropertiesFormat `json:"properties,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ApplicationGatewaySslPredefinedPolicy. +func (agspp ApplicationGatewaySslPredefinedPolicy) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if agspp.Name != nil { + objectMap["name"] = agspp.Name + } + if agspp.ApplicationGatewaySslPredefinedPolicyPropertiesFormat != nil { + objectMap["properties"] = agspp.ApplicationGatewaySslPredefinedPolicyPropertiesFormat + } + if agspp.ID != nil { + objectMap["id"] = agspp.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ApplicationGatewaySslPredefinedPolicy struct. +func (agspp *ApplicationGatewaySslPredefinedPolicy) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + agspp.Name = &name + } + case "properties": + if v != nil { + var applicationGatewaySslPredefinedPolicyPropertiesFormat ApplicationGatewaySslPredefinedPolicyPropertiesFormat + err = json.Unmarshal(*v, &applicationGatewaySslPredefinedPolicyPropertiesFormat) + if err != nil { + return err + } + agspp.ApplicationGatewaySslPredefinedPolicyPropertiesFormat = &applicationGatewaySslPredefinedPolicyPropertiesFormat + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + agspp.ID = &ID + } + } + } + + return nil +} + +// ApplicationGatewaySslPredefinedPolicyPropertiesFormat properties of +// ApplicationGatewaySslPredefinedPolicy. +type ApplicationGatewaySslPredefinedPolicyPropertiesFormat struct { + // CipherSuites - Ssl cipher suites to be enabled in the specified order for application gateway. + CipherSuites *[]ApplicationGatewaySslCipherSuite `json:"cipherSuites,omitempty"` + // MinProtocolVersion - Minimum version of Ssl protocol to be supported on application gateway. Possible values include: 'TLSv10', 'TLSv11', 'TLSv12' + MinProtocolVersion ApplicationGatewaySslProtocol `json:"minProtocolVersion,omitempty"` +} + +// ApplicationGatewaysStartFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type ApplicationGatewaysStartFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ApplicationGatewaysStartFuture) Result(client ApplicationGatewaysClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysStartFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ApplicationGatewaysStartFuture") + return + } + ar.Response = future.Response() + return +} + +// ApplicationGatewaysStopFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type ApplicationGatewaysStopFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ApplicationGatewaysStopFuture) Result(client ApplicationGatewaysClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysStopFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ApplicationGatewaysStopFuture") + return + } + ar.Response = future.Response() + return +} + +// ApplicationGatewayTrustedRootCertificate trusted Root certificates of an application gateway. +type ApplicationGatewayTrustedRootCertificate struct { + // ApplicationGatewayTrustedRootCertificatePropertiesFormat - Properties of the application gateway trusted root certificate. + *ApplicationGatewayTrustedRootCertificatePropertiesFormat `json:"properties,omitempty"` + // Name - Name of the trusted root certificate that is unique within an Application Gateway. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Type of the resource. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ApplicationGatewayTrustedRootCertificate. +func (agtrc ApplicationGatewayTrustedRootCertificate) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if agtrc.ApplicationGatewayTrustedRootCertificatePropertiesFormat != nil { + objectMap["properties"] = agtrc.ApplicationGatewayTrustedRootCertificatePropertiesFormat + } + if agtrc.Name != nil { + objectMap["name"] = agtrc.Name + } + if agtrc.ID != nil { + objectMap["id"] = agtrc.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ApplicationGatewayTrustedRootCertificate struct. +func (agtrc *ApplicationGatewayTrustedRootCertificate) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var applicationGatewayTrustedRootCertificatePropertiesFormat ApplicationGatewayTrustedRootCertificatePropertiesFormat + err = json.Unmarshal(*v, &applicationGatewayTrustedRootCertificatePropertiesFormat) + if err != nil { + return err + } + agtrc.ApplicationGatewayTrustedRootCertificatePropertiesFormat = &applicationGatewayTrustedRootCertificatePropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + agtrc.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + agtrc.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + agtrc.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + agtrc.ID = &ID + } + } + } + + return nil +} + +// ApplicationGatewayTrustedRootCertificatePropertiesFormat trusted Root certificates properties of an +// application gateway. +type ApplicationGatewayTrustedRootCertificatePropertiesFormat struct { + // Data - Certificate public data. + Data *string `json:"data,omitempty"` + // KeyVaultSecretID - Secret Id of (base-64 encoded unencrypted pfx) 'Secret' or 'Certificate' object stored in KeyVault. + KeyVaultSecretID *string `json:"keyVaultSecretId,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the trusted root certificate resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// ApplicationGatewayURLPathMap urlPathMaps give a url path to the backend mapping information for +// PathBasedRouting. +type ApplicationGatewayURLPathMap struct { + // ApplicationGatewayURLPathMapPropertiesFormat - Properties of the application gateway URL path map. + *ApplicationGatewayURLPathMapPropertiesFormat `json:"properties,omitempty"` + // Name - Name of the URL path map that is unique within an Application Gateway. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Type of the resource. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ApplicationGatewayURLPathMap. +func (agupm ApplicationGatewayURLPathMap) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if agupm.ApplicationGatewayURLPathMapPropertiesFormat != nil { + objectMap["properties"] = agupm.ApplicationGatewayURLPathMapPropertiesFormat + } + if agupm.Name != nil { + objectMap["name"] = agupm.Name + } + if agupm.ID != nil { + objectMap["id"] = agupm.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ApplicationGatewayURLPathMap struct. +func (agupm *ApplicationGatewayURLPathMap) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var applicationGatewayURLPathMapPropertiesFormat ApplicationGatewayURLPathMapPropertiesFormat + err = json.Unmarshal(*v, &applicationGatewayURLPathMapPropertiesFormat) + if err != nil { + return err + } + agupm.ApplicationGatewayURLPathMapPropertiesFormat = &applicationGatewayURLPathMapPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + agupm.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + agupm.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + agupm.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + agupm.ID = &ID + } + } + } + + return nil +} + +// ApplicationGatewayURLPathMapPropertiesFormat properties of UrlPathMap of the application gateway. +type ApplicationGatewayURLPathMapPropertiesFormat struct { + // DefaultBackendAddressPool - Default backend address pool resource of URL path map. + DefaultBackendAddressPool *SubResource `json:"defaultBackendAddressPool,omitempty"` + // DefaultBackendHTTPSettings - Default backend http settings resource of URL path map. + DefaultBackendHTTPSettings *SubResource `json:"defaultBackendHttpSettings,omitempty"` + // DefaultRewriteRuleSet - Default Rewrite rule set resource of URL path map. + DefaultRewriteRuleSet *SubResource `json:"defaultRewriteRuleSet,omitempty"` + // DefaultRedirectConfiguration - Default redirect configuration resource of URL path map. + DefaultRedirectConfiguration *SubResource `json:"defaultRedirectConfiguration,omitempty"` + // PathRules - Path rule of URL path map resource. + PathRules *[]ApplicationGatewayPathRule `json:"pathRules,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the URL path map resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// ApplicationGatewayWebApplicationFirewallConfiguration application gateway web application firewall +// configuration. +type ApplicationGatewayWebApplicationFirewallConfiguration struct { + // Enabled - Whether the web application firewall is enabled or not. + Enabled *bool `json:"enabled,omitempty"` + // FirewallMode - Web application firewall mode. Possible values include: 'Detection', 'Prevention' + FirewallMode ApplicationGatewayFirewallMode `json:"firewallMode,omitempty"` + // RuleSetType - The type of the web application firewall rule set. Possible values are: 'OWASP'. + RuleSetType *string `json:"ruleSetType,omitempty"` + // RuleSetVersion - The version of the rule set type. + RuleSetVersion *string `json:"ruleSetVersion,omitempty"` + // DisabledRuleGroups - The disabled rule groups. + DisabledRuleGroups *[]ApplicationGatewayFirewallDisabledRuleGroup `json:"disabledRuleGroups,omitempty"` + // RequestBodyCheck - Whether allow WAF to check request Body. + RequestBodyCheck *bool `json:"requestBodyCheck,omitempty"` + // MaxRequestBodySize - Maximum request body size for WAF. + MaxRequestBodySize *int32 `json:"maxRequestBodySize,omitempty"` + // MaxRequestBodySizeInKb - Maximum request body size in Kb for WAF. + MaxRequestBodySizeInKb *int32 `json:"maxRequestBodySizeInKb,omitempty"` + // FileUploadLimitInMb - Maximum file upload size in Mb for WAF. + FileUploadLimitInMb *int32 `json:"fileUploadLimitInMb,omitempty"` + // Exclusions - The exclusion list. + Exclusions *[]ApplicationGatewayFirewallExclusion `json:"exclusions,omitempty"` +} + +// ApplicationRuleCondition rule condition of type application. +type ApplicationRuleCondition struct { + // SourceAddresses - List of source IP addresses for this rule. + SourceAddresses *[]string `json:"sourceAddresses,omitempty"` + // DestinationAddresses - List of destination IP addresses or Service Tags. + DestinationAddresses *[]string `json:"destinationAddresses,omitempty"` + // Protocols - Array of Application Protocols. + Protocols *[]FirewallPolicyRuleConditionApplicationProtocol `json:"protocols,omitempty"` + // TargetFqdns - List of FQDNs for this rule condition. + TargetFqdns *[]string `json:"targetFqdns,omitempty"` + // FqdnTags - List of FQDN Tags for this rule condition. + FqdnTags *[]string `json:"fqdnTags,omitempty"` + // Name - Name of the rule condition. + Name *string `json:"name,omitempty"` + // Description - Description of the rule condition. + Description *string `json:"description,omitempty"` + // RuleConditionType - Possible values include: 'RuleConditionTypeFirewallPolicyRuleCondition', 'RuleConditionTypeApplicationRuleCondition', 'RuleConditionTypeNetworkRuleCondition' + RuleConditionType RuleConditionType `json:"ruleConditionType,omitempty"` +} + +// MarshalJSON is the custom marshaler for ApplicationRuleCondition. +func (arc ApplicationRuleCondition) MarshalJSON() ([]byte, error) { + arc.RuleConditionType = RuleConditionTypeApplicationRuleCondition + objectMap := make(map[string]interface{}) + if arc.SourceAddresses != nil { + objectMap["sourceAddresses"] = arc.SourceAddresses + } + if arc.DestinationAddresses != nil { + objectMap["destinationAddresses"] = arc.DestinationAddresses + } + if arc.Protocols != nil { + objectMap["protocols"] = arc.Protocols + } + if arc.TargetFqdns != nil { + objectMap["targetFqdns"] = arc.TargetFqdns + } + if arc.FqdnTags != nil { + objectMap["fqdnTags"] = arc.FqdnTags + } + if arc.Name != nil { + objectMap["name"] = arc.Name + } + if arc.Description != nil { + objectMap["description"] = arc.Description + } + if arc.RuleConditionType != "" { + objectMap["ruleConditionType"] = arc.RuleConditionType + } + return json.Marshal(objectMap) +} + +// AsApplicationRuleCondition is the BasicFirewallPolicyRuleCondition implementation for ApplicationRuleCondition. +func (arc ApplicationRuleCondition) AsApplicationRuleCondition() (*ApplicationRuleCondition, bool) { + return &arc, true +} + +// AsRuleCondition is the BasicFirewallPolicyRuleCondition implementation for ApplicationRuleCondition. +func (arc ApplicationRuleCondition) AsRuleCondition() (*RuleCondition, bool) { + return nil, false +} + +// AsFirewallPolicyRuleCondition is the BasicFirewallPolicyRuleCondition implementation for ApplicationRuleCondition. +func (arc ApplicationRuleCondition) AsFirewallPolicyRuleCondition() (*FirewallPolicyRuleCondition, bool) { + return nil, false +} + +// AsBasicFirewallPolicyRuleCondition is the BasicFirewallPolicyRuleCondition implementation for ApplicationRuleCondition. +func (arc ApplicationRuleCondition) AsBasicFirewallPolicyRuleCondition() (BasicFirewallPolicyRuleCondition, bool) { + return &arc, true +} + +// ApplicationSecurityGroup an application security group in a resource group. +type ApplicationSecurityGroup struct { + autorest.Response `json:"-"` + // ApplicationSecurityGroupPropertiesFormat - Properties of the application security group. + *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for ApplicationSecurityGroup. +func (asg ApplicationSecurityGroup) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if asg.ApplicationSecurityGroupPropertiesFormat != nil { + objectMap["properties"] = asg.ApplicationSecurityGroupPropertiesFormat + } + if asg.ID != nil { + objectMap["id"] = asg.ID + } + if asg.Location != nil { + objectMap["location"] = asg.Location + } + if asg.Tags != nil { + objectMap["tags"] = asg.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ApplicationSecurityGroup struct. +func (asg *ApplicationSecurityGroup) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var applicationSecurityGroupPropertiesFormat ApplicationSecurityGroupPropertiesFormat + err = json.Unmarshal(*v, &applicationSecurityGroupPropertiesFormat) + if err != nil { + return err + } + asg.ApplicationSecurityGroupPropertiesFormat = &applicationSecurityGroupPropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + asg.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + asg.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + asg.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + asg.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + asg.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + asg.Tags = tags + } + } + } + + return nil +} + +// ApplicationSecurityGroupListResult a list of application security groups. +type ApplicationSecurityGroupListResult struct { + autorest.Response `json:"-"` + // Value - A list of application security groups. + Value *[]ApplicationSecurityGroup `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// ApplicationSecurityGroupListResultIterator provides access to a complete listing of +// ApplicationSecurityGroup values. +type ApplicationSecurityGroupListResultIterator struct { + i int + page ApplicationSecurityGroupListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ApplicationSecurityGroupListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationSecurityGroupListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ApplicationSecurityGroupListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ApplicationSecurityGroupListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ApplicationSecurityGroupListResultIterator) Response() ApplicationSecurityGroupListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ApplicationSecurityGroupListResultIterator) Value() ApplicationSecurityGroup { + if !iter.page.NotDone() { + return ApplicationSecurityGroup{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ApplicationSecurityGroupListResultIterator type. +func NewApplicationSecurityGroupListResultIterator(page ApplicationSecurityGroupListResultPage) ApplicationSecurityGroupListResultIterator { + return ApplicationSecurityGroupListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (asglr ApplicationSecurityGroupListResult) IsEmpty() bool { + return asglr.Value == nil || len(*asglr.Value) == 0 +} + +// applicationSecurityGroupListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (asglr ApplicationSecurityGroupListResult) applicationSecurityGroupListResultPreparer(ctx context.Context) (*http.Request, error) { + if asglr.NextLink == nil || len(to.String(asglr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(asglr.NextLink))) +} + +// ApplicationSecurityGroupListResultPage contains a page of ApplicationSecurityGroup values. +type ApplicationSecurityGroupListResultPage struct { + fn func(context.Context, ApplicationSecurityGroupListResult) (ApplicationSecurityGroupListResult, error) + asglr ApplicationSecurityGroupListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ApplicationSecurityGroupListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationSecurityGroupListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.asglr) + if err != nil { + return err + } + page.asglr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ApplicationSecurityGroupListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ApplicationSecurityGroupListResultPage) NotDone() bool { + return !page.asglr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ApplicationSecurityGroupListResultPage) Response() ApplicationSecurityGroupListResult { + return page.asglr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ApplicationSecurityGroupListResultPage) Values() []ApplicationSecurityGroup { + if page.asglr.IsEmpty() { + return nil + } + return *page.asglr.Value +} + +// Creates a new instance of the ApplicationSecurityGroupListResultPage type. +func NewApplicationSecurityGroupListResultPage(getNextPage func(context.Context, ApplicationSecurityGroupListResult) (ApplicationSecurityGroupListResult, error)) ApplicationSecurityGroupListResultPage { + return ApplicationSecurityGroupListResultPage{fn: getNextPage} +} + +// ApplicationSecurityGroupPropertiesFormat application security group properties. +type ApplicationSecurityGroupPropertiesFormat struct { + // ResourceGUID - READ-ONLY; The resource GUID property of the application security group resource. It uniquely identifies a resource, even if the user changes its name or migrate the resource across subscriptions or resource groups. + ResourceGUID *string `json:"resourceGuid,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the application security group resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// ApplicationSecurityGroupsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results +// of a long-running operation. +type ApplicationSecurityGroupsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ApplicationSecurityGroupsCreateOrUpdateFuture) Result(client ApplicationSecurityGroupsClient) (asg ApplicationSecurityGroup, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ApplicationSecurityGroupsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if asg.Response.Response, err = future.GetResult(sender); err == nil && asg.Response.Response.StatusCode != http.StatusNoContent { + asg, err = client.CreateOrUpdateResponder(asg.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsCreateOrUpdateFuture", "Result", asg.Response.Response, "Failure responding to request") + } + } + return +} + +// ApplicationSecurityGroupsDeleteFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type ApplicationSecurityGroupsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ApplicationSecurityGroupsDeleteFuture) Result(client ApplicationSecurityGroupsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ApplicationSecurityGroupsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ApplicationSecurityGroupsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// AuthorizationListResult response for ListAuthorizations API service call retrieves all authorizations +// that belongs to an ExpressRouteCircuit. +type AuthorizationListResult struct { + autorest.Response `json:"-"` + // Value - The authorizations in an ExpressRoute Circuit. + Value *[]ExpressRouteCircuitAuthorization `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// AuthorizationListResultIterator provides access to a complete listing of +// ExpressRouteCircuitAuthorization values. +type AuthorizationListResultIterator struct { + i int + page AuthorizationListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *AuthorizationListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AuthorizationListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *AuthorizationListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter AuthorizationListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter AuthorizationListResultIterator) Response() AuthorizationListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter AuthorizationListResultIterator) Value() ExpressRouteCircuitAuthorization { + if !iter.page.NotDone() { + return ExpressRouteCircuitAuthorization{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the AuthorizationListResultIterator type. +func NewAuthorizationListResultIterator(page AuthorizationListResultPage) AuthorizationListResultIterator { + return AuthorizationListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (alr AuthorizationListResult) IsEmpty() bool { + return alr.Value == nil || len(*alr.Value) == 0 +} + +// authorizationListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (alr AuthorizationListResult) authorizationListResultPreparer(ctx context.Context) (*http.Request, error) { + if alr.NextLink == nil || len(to.String(alr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(alr.NextLink))) +} + +// AuthorizationListResultPage contains a page of ExpressRouteCircuitAuthorization values. +type AuthorizationListResultPage struct { + fn func(context.Context, AuthorizationListResult) (AuthorizationListResult, error) + alr AuthorizationListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *AuthorizationListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AuthorizationListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.alr) + if err != nil { + return err + } + page.alr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *AuthorizationListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page AuthorizationListResultPage) NotDone() bool { + return !page.alr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page AuthorizationListResultPage) Response() AuthorizationListResult { + return page.alr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page AuthorizationListResultPage) Values() []ExpressRouteCircuitAuthorization { + if page.alr.IsEmpty() { + return nil + } + return *page.alr.Value +} + +// Creates a new instance of the AuthorizationListResultPage type. +func NewAuthorizationListResultPage(getNextPage func(context.Context, AuthorizationListResult) (AuthorizationListResult, error)) AuthorizationListResultPage { + return AuthorizationListResultPage{fn: getNextPage} +} + +// AuthorizationPropertiesFormat properties of ExpressRouteCircuitAuthorization. +type AuthorizationPropertiesFormat struct { + // AuthorizationKey - The authorization key. + AuthorizationKey *string `json:"authorizationKey,omitempty"` + // AuthorizationUseStatus - The authorization use status. Possible values include: 'Available', 'InUse' + AuthorizationUseStatus AuthorizationUseStatus `json:"authorizationUseStatus,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the authorization resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// AutoApprovedPrivateLinkService the information of an AutoApprovedPrivateLinkService. +type AutoApprovedPrivateLinkService struct { + // PrivateLinkService - The id of the private link service resource. + PrivateLinkService *string `json:"privateLinkService,omitempty"` +} + +// AutoApprovedPrivateLinkServicesResult an array of private link service id that can be linked to a +// private end point with auto approved. +type AutoApprovedPrivateLinkServicesResult struct { + autorest.Response `json:"-"` + // Value - An array of auto approved private link service. + Value *[]AutoApprovedPrivateLinkService `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// AutoApprovedPrivateLinkServicesResultIterator provides access to a complete listing of +// AutoApprovedPrivateLinkService values. +type AutoApprovedPrivateLinkServicesResultIterator struct { + i int + page AutoApprovedPrivateLinkServicesResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *AutoApprovedPrivateLinkServicesResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AutoApprovedPrivateLinkServicesResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *AutoApprovedPrivateLinkServicesResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter AutoApprovedPrivateLinkServicesResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter AutoApprovedPrivateLinkServicesResultIterator) Response() AutoApprovedPrivateLinkServicesResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter AutoApprovedPrivateLinkServicesResultIterator) Value() AutoApprovedPrivateLinkService { + if !iter.page.NotDone() { + return AutoApprovedPrivateLinkService{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the AutoApprovedPrivateLinkServicesResultIterator type. +func NewAutoApprovedPrivateLinkServicesResultIterator(page AutoApprovedPrivateLinkServicesResultPage) AutoApprovedPrivateLinkServicesResultIterator { + return AutoApprovedPrivateLinkServicesResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (aaplsr AutoApprovedPrivateLinkServicesResult) IsEmpty() bool { + return aaplsr.Value == nil || len(*aaplsr.Value) == 0 +} + +// autoApprovedPrivateLinkServicesResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (aaplsr AutoApprovedPrivateLinkServicesResult) autoApprovedPrivateLinkServicesResultPreparer(ctx context.Context) (*http.Request, error) { + if aaplsr.NextLink == nil || len(to.String(aaplsr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(aaplsr.NextLink))) +} + +// AutoApprovedPrivateLinkServicesResultPage contains a page of AutoApprovedPrivateLinkService values. +type AutoApprovedPrivateLinkServicesResultPage struct { + fn func(context.Context, AutoApprovedPrivateLinkServicesResult) (AutoApprovedPrivateLinkServicesResult, error) + aaplsr AutoApprovedPrivateLinkServicesResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *AutoApprovedPrivateLinkServicesResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AutoApprovedPrivateLinkServicesResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.aaplsr) + if err != nil { + return err + } + page.aaplsr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *AutoApprovedPrivateLinkServicesResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page AutoApprovedPrivateLinkServicesResultPage) NotDone() bool { + return !page.aaplsr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page AutoApprovedPrivateLinkServicesResultPage) Response() AutoApprovedPrivateLinkServicesResult { + return page.aaplsr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page AutoApprovedPrivateLinkServicesResultPage) Values() []AutoApprovedPrivateLinkService { + if page.aaplsr.IsEmpty() { + return nil + } + return *page.aaplsr.Value +} + +// Creates a new instance of the AutoApprovedPrivateLinkServicesResultPage type. +func NewAutoApprovedPrivateLinkServicesResultPage(getNextPage func(context.Context, AutoApprovedPrivateLinkServicesResult) (AutoApprovedPrivateLinkServicesResult, error)) AutoApprovedPrivateLinkServicesResultPage { + return AutoApprovedPrivateLinkServicesResultPage{fn: getNextPage} +} + +// Availability availability of the metric. +type Availability struct { + // TimeGrain - The time grain of the availability. + TimeGrain *string `json:"timeGrain,omitempty"` + // Retention - The retention of the availability. + Retention *string `json:"retention,omitempty"` + // BlobDuration - Duration of the availability blob. + BlobDuration *string `json:"blobDuration,omitempty"` +} + +// AvailableDelegation the serviceName of an AvailableDelegation indicates a possible delegation for a +// subnet. +type AvailableDelegation struct { + // Name - The name of the AvailableDelegation resource. + Name *string `json:"name,omitempty"` + // ID - A unique identifier of the AvailableDelegation resource. + ID *string `json:"id,omitempty"` + // Type - Resource type. + Type *string `json:"type,omitempty"` + // ServiceName - The name of the service and resource. + ServiceName *string `json:"serviceName,omitempty"` + // Actions - Describes the actions permitted to the service upon delegation. + Actions *[]string `json:"actions,omitempty"` +} + +// AvailableDelegationsResult an array of available delegations. +type AvailableDelegationsResult struct { + autorest.Response `json:"-"` + // Value - An array of available delegations. + Value *[]AvailableDelegation `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// AvailableDelegationsResultIterator provides access to a complete listing of AvailableDelegation values. +type AvailableDelegationsResultIterator struct { + i int + page AvailableDelegationsResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *AvailableDelegationsResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AvailableDelegationsResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *AvailableDelegationsResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter AvailableDelegationsResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter AvailableDelegationsResultIterator) Response() AvailableDelegationsResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter AvailableDelegationsResultIterator) Value() AvailableDelegation { + if !iter.page.NotDone() { + return AvailableDelegation{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the AvailableDelegationsResultIterator type. +func NewAvailableDelegationsResultIterator(page AvailableDelegationsResultPage) AvailableDelegationsResultIterator { + return AvailableDelegationsResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (adr AvailableDelegationsResult) IsEmpty() bool { + return adr.Value == nil || len(*adr.Value) == 0 +} + +// availableDelegationsResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (adr AvailableDelegationsResult) availableDelegationsResultPreparer(ctx context.Context) (*http.Request, error) { + if adr.NextLink == nil || len(to.String(adr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(adr.NextLink))) +} + +// AvailableDelegationsResultPage contains a page of AvailableDelegation values. +type AvailableDelegationsResultPage struct { + fn func(context.Context, AvailableDelegationsResult) (AvailableDelegationsResult, error) + adr AvailableDelegationsResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *AvailableDelegationsResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AvailableDelegationsResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.adr) + if err != nil { + return err + } + page.adr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *AvailableDelegationsResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page AvailableDelegationsResultPage) NotDone() bool { + return !page.adr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page AvailableDelegationsResultPage) Response() AvailableDelegationsResult { + return page.adr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page AvailableDelegationsResultPage) Values() []AvailableDelegation { + if page.adr.IsEmpty() { + return nil + } + return *page.adr.Value +} + +// Creates a new instance of the AvailableDelegationsResultPage type. +func NewAvailableDelegationsResultPage(getNextPage func(context.Context, AvailableDelegationsResult) (AvailableDelegationsResult, error)) AvailableDelegationsResultPage { + return AvailableDelegationsResultPage{fn: getNextPage} +} + +// AvailablePrivateEndpointType the information of an AvailablePrivateEndpointType. +type AvailablePrivateEndpointType struct { + // Name - The name of the service and resource. + Name *string `json:"name,omitempty"` + // ID - A unique identifier of the AvailablePrivateEndpoint Type resource. + ID *string `json:"id,omitempty"` + // Type - Resource type. + Type *string `json:"type,omitempty"` + // ResourceName - The name of the service and resource. + ResourceName *string `json:"resourceName,omitempty"` +} + +// AvailablePrivateEndpointTypesResult an array of available PrivateEndpoint types. +type AvailablePrivateEndpointTypesResult struct { + autorest.Response `json:"-"` + // Value - An array of available privateEndpoint type. + Value *[]AvailablePrivateEndpointType `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// AvailablePrivateEndpointTypesResultIterator provides access to a complete listing of +// AvailablePrivateEndpointType values. +type AvailablePrivateEndpointTypesResultIterator struct { + i int + page AvailablePrivateEndpointTypesResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *AvailablePrivateEndpointTypesResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AvailablePrivateEndpointTypesResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *AvailablePrivateEndpointTypesResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter AvailablePrivateEndpointTypesResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter AvailablePrivateEndpointTypesResultIterator) Response() AvailablePrivateEndpointTypesResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter AvailablePrivateEndpointTypesResultIterator) Value() AvailablePrivateEndpointType { + if !iter.page.NotDone() { + return AvailablePrivateEndpointType{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the AvailablePrivateEndpointTypesResultIterator type. +func NewAvailablePrivateEndpointTypesResultIterator(page AvailablePrivateEndpointTypesResultPage) AvailablePrivateEndpointTypesResultIterator { + return AvailablePrivateEndpointTypesResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (apetr AvailablePrivateEndpointTypesResult) IsEmpty() bool { + return apetr.Value == nil || len(*apetr.Value) == 0 +} + +// availablePrivateEndpointTypesResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (apetr AvailablePrivateEndpointTypesResult) availablePrivateEndpointTypesResultPreparer(ctx context.Context) (*http.Request, error) { + if apetr.NextLink == nil || len(to.String(apetr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(apetr.NextLink))) +} + +// AvailablePrivateEndpointTypesResultPage contains a page of AvailablePrivateEndpointType values. +type AvailablePrivateEndpointTypesResultPage struct { + fn func(context.Context, AvailablePrivateEndpointTypesResult) (AvailablePrivateEndpointTypesResult, error) + apetr AvailablePrivateEndpointTypesResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *AvailablePrivateEndpointTypesResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AvailablePrivateEndpointTypesResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.apetr) + if err != nil { + return err + } + page.apetr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *AvailablePrivateEndpointTypesResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page AvailablePrivateEndpointTypesResultPage) NotDone() bool { + return !page.apetr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page AvailablePrivateEndpointTypesResultPage) Response() AvailablePrivateEndpointTypesResult { + return page.apetr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page AvailablePrivateEndpointTypesResultPage) Values() []AvailablePrivateEndpointType { + if page.apetr.IsEmpty() { + return nil + } + return *page.apetr.Value +} + +// Creates a new instance of the AvailablePrivateEndpointTypesResultPage type. +func NewAvailablePrivateEndpointTypesResultPage(getNextPage func(context.Context, AvailablePrivateEndpointTypesResult) (AvailablePrivateEndpointTypesResult, error)) AvailablePrivateEndpointTypesResultPage { + return AvailablePrivateEndpointTypesResultPage{fn: getNextPage} +} + +// AvailableProvidersList list of available countries with details. +type AvailableProvidersList struct { + autorest.Response `json:"-"` + // Countries - List of available countries. + Countries *[]AvailableProvidersListCountry `json:"countries,omitempty"` +} + +// AvailableProvidersListCity city or town details. +type AvailableProvidersListCity struct { + // CityName - The city or town name. + CityName *string `json:"cityName,omitempty"` + // Providers - A list of Internet service providers. + Providers *[]string `json:"providers,omitempty"` +} + +// AvailableProvidersListCountry country details. +type AvailableProvidersListCountry struct { + // CountryName - The country name. + CountryName *string `json:"countryName,omitempty"` + // Providers - A list of Internet service providers. + Providers *[]string `json:"providers,omitempty"` + // States - List of available states in the country. + States *[]AvailableProvidersListState `json:"states,omitempty"` +} + +// AvailableProvidersListParameters constraints that determine the list of available Internet service +// providers. +type AvailableProvidersListParameters struct { + // AzureLocations - A list of Azure regions. + AzureLocations *[]string `json:"azureLocations,omitempty"` + // Country - The country for available providers list. + Country *string `json:"country,omitempty"` + // State - The state for available providers list. + State *string `json:"state,omitempty"` + // City - The city or town for available providers list. + City *string `json:"city,omitempty"` +} + +// AvailableProvidersListState state details. +type AvailableProvidersListState struct { + // StateName - The state name. + StateName *string `json:"stateName,omitempty"` + // Providers - A list of Internet service providers. + Providers *[]string `json:"providers,omitempty"` + // Cities - List of available cities or towns in the state. + Cities *[]AvailableProvidersListCity `json:"cities,omitempty"` +} + +// AvailableServiceAlias the available service alias. +type AvailableServiceAlias struct { + // Name - The name of the service alias. + Name *string `json:"name,omitempty"` + // ID - The ID of the service alias. + ID *string `json:"id,omitempty"` + // Type - The type of the resource. + Type *string `json:"type,omitempty"` + // ResourceName - The resource name of the service alias. + ResourceName *string `json:"resourceName,omitempty"` +} + +// AvailableServiceAliasesResult an array of available service aliases. +type AvailableServiceAliasesResult struct { + autorest.Response `json:"-"` + // Value - An array of available service aliases. + Value *[]AvailableServiceAlias `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// AvailableServiceAliasesResultIterator provides access to a complete listing of AvailableServiceAlias +// values. +type AvailableServiceAliasesResultIterator struct { + i int + page AvailableServiceAliasesResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *AvailableServiceAliasesResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AvailableServiceAliasesResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *AvailableServiceAliasesResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter AvailableServiceAliasesResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter AvailableServiceAliasesResultIterator) Response() AvailableServiceAliasesResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter AvailableServiceAliasesResultIterator) Value() AvailableServiceAlias { + if !iter.page.NotDone() { + return AvailableServiceAlias{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the AvailableServiceAliasesResultIterator type. +func NewAvailableServiceAliasesResultIterator(page AvailableServiceAliasesResultPage) AvailableServiceAliasesResultIterator { + return AvailableServiceAliasesResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (asar AvailableServiceAliasesResult) IsEmpty() bool { + return asar.Value == nil || len(*asar.Value) == 0 +} + +// availableServiceAliasesResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (asar AvailableServiceAliasesResult) availableServiceAliasesResultPreparer(ctx context.Context) (*http.Request, error) { + if asar.NextLink == nil || len(to.String(asar.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(asar.NextLink))) +} + +// AvailableServiceAliasesResultPage contains a page of AvailableServiceAlias values. +type AvailableServiceAliasesResultPage struct { + fn func(context.Context, AvailableServiceAliasesResult) (AvailableServiceAliasesResult, error) + asar AvailableServiceAliasesResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *AvailableServiceAliasesResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AvailableServiceAliasesResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.asar) + if err != nil { + return err + } + page.asar = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *AvailableServiceAliasesResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page AvailableServiceAliasesResultPage) NotDone() bool { + return !page.asar.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page AvailableServiceAliasesResultPage) Response() AvailableServiceAliasesResult { + return page.asar +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page AvailableServiceAliasesResultPage) Values() []AvailableServiceAlias { + if page.asar.IsEmpty() { + return nil + } + return *page.asar.Value +} + +// Creates a new instance of the AvailableServiceAliasesResultPage type. +func NewAvailableServiceAliasesResultPage(getNextPage func(context.Context, AvailableServiceAliasesResult) (AvailableServiceAliasesResult, error)) AvailableServiceAliasesResultPage { + return AvailableServiceAliasesResultPage{fn: getNextPage} +} + +// AzureAsyncOperationResult the response body contains the status of the specified asynchronous operation, +// indicating whether it has succeeded, is in progress, or has failed. Note that this status is distinct +// from the HTTP status code returned for the Get Operation Status operation itself. If the asynchronous +// operation succeeded, the response body includes the HTTP status code for the successful request. If the +// asynchronous operation failed, the response body includes the HTTP status code for the failed request +// and error information regarding the failure. +type AzureAsyncOperationResult struct { + // Status - Status of the Azure async operation. Possible values include: 'OperationStatusInProgress', 'OperationStatusSucceeded', 'OperationStatusFailed' + Status OperationStatus `json:"status,omitempty"` + // Error - Details of the error occurred during specified asynchronous operation. + Error *Error `json:"error,omitempty"` +} + +// AzureFirewall azure Firewall resource. +type AzureFirewall struct { + autorest.Response `json:"-"` + // AzureFirewallPropertiesFormat - Properties of the azure firewall. + *AzureFirewallPropertiesFormat `json:"properties,omitempty"` + // Zones - A list of availability zones denoting where the resource needs to come from. + Zones *[]string `json:"zones,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for AzureFirewall. +func (af AzureFirewall) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if af.AzureFirewallPropertiesFormat != nil { + objectMap["properties"] = af.AzureFirewallPropertiesFormat + } + if af.Zones != nil { + objectMap["zones"] = af.Zones + } + if af.ID != nil { + objectMap["id"] = af.ID + } + if af.Location != nil { + objectMap["location"] = af.Location + } + if af.Tags != nil { + objectMap["tags"] = af.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for AzureFirewall struct. +func (af *AzureFirewall) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var azureFirewallPropertiesFormat AzureFirewallPropertiesFormat + err = json.Unmarshal(*v, &azureFirewallPropertiesFormat) + if err != nil { + return err + } + af.AzureFirewallPropertiesFormat = &azureFirewallPropertiesFormat + } + case "zones": + if v != nil { + var zones []string + err = json.Unmarshal(*v, &zones) + if err != nil { + return err + } + af.Zones = &zones + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + af.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + af.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + af.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + af.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + af.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + af.Tags = tags + } + } + } + + return nil +} + +// AzureFirewallApplicationRule properties of an application rule. +type AzureFirewallApplicationRule struct { + // Name - Name of the application rule. + Name *string `json:"name,omitempty"` + // Description - Description of the rule. + Description *string `json:"description,omitempty"` + // SourceAddresses - List of source IP addresses for this rule. + SourceAddresses *[]string `json:"sourceAddresses,omitempty"` + // Protocols - Array of ApplicationRuleProtocols. + Protocols *[]AzureFirewallApplicationRuleProtocol `json:"protocols,omitempty"` + // TargetFqdns - List of FQDNs for this rule. + TargetFqdns *[]string `json:"targetFqdns,omitempty"` + // FqdnTags - List of FQDN Tags for this rule. + FqdnTags *[]string `json:"fqdnTags,omitempty"` + // SourceIPGroups - List of source IpGroups for this rule. + SourceIPGroups *[]string `json:"sourceIpGroups,omitempty"` +} + +// AzureFirewallApplicationRuleCollection application rule collection resource. +type AzureFirewallApplicationRuleCollection struct { + // AzureFirewallApplicationRuleCollectionPropertiesFormat - Properties of the azure firewall application rule collection. + *AzureFirewallApplicationRuleCollectionPropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within the Azure firewall. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for AzureFirewallApplicationRuleCollection. +func (afarc AzureFirewallApplicationRuleCollection) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if afarc.AzureFirewallApplicationRuleCollectionPropertiesFormat != nil { + objectMap["properties"] = afarc.AzureFirewallApplicationRuleCollectionPropertiesFormat + } + if afarc.Name != nil { + objectMap["name"] = afarc.Name + } + if afarc.ID != nil { + objectMap["id"] = afarc.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for AzureFirewallApplicationRuleCollection struct. +func (afarc *AzureFirewallApplicationRuleCollection) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var azureFirewallApplicationRuleCollectionPropertiesFormat AzureFirewallApplicationRuleCollectionPropertiesFormat + err = json.Unmarshal(*v, &azureFirewallApplicationRuleCollectionPropertiesFormat) + if err != nil { + return err + } + afarc.AzureFirewallApplicationRuleCollectionPropertiesFormat = &azureFirewallApplicationRuleCollectionPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + afarc.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + afarc.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + afarc.ID = &ID + } + } + } + + return nil +} + +// AzureFirewallApplicationRuleCollectionPropertiesFormat properties of the application rule collection. +type AzureFirewallApplicationRuleCollectionPropertiesFormat struct { + // Priority - Priority of the application rule collection resource. + Priority *int32 `json:"priority,omitempty"` + // Action - The action type of a rule collection. + Action *AzureFirewallRCAction `json:"action,omitempty"` + // Rules - Collection of rules used by a application rule collection. + Rules *[]AzureFirewallApplicationRule `json:"rules,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the application rule collection resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// AzureFirewallApplicationRuleProtocol properties of the application rule protocol. +type AzureFirewallApplicationRuleProtocol struct { + // ProtocolType - Protocol type. Possible values include: 'AzureFirewallApplicationRuleProtocolTypeHTTP', 'AzureFirewallApplicationRuleProtocolTypeHTTPS', 'AzureFirewallApplicationRuleProtocolTypeMssql' + ProtocolType AzureFirewallApplicationRuleProtocolType `json:"protocolType,omitempty"` + // Port - Port number for the protocol, cannot be greater than 64000. This field is optional. + Port *int32 `json:"port,omitempty"` +} + +// AzureFirewallFqdnTag azure Firewall FQDN Tag Resource. +type AzureFirewallFqdnTag struct { + // AzureFirewallFqdnTagPropertiesFormat - Properties of the azure firewall FQDN tag. + *AzureFirewallFqdnTagPropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for AzureFirewallFqdnTag. +func (afft AzureFirewallFqdnTag) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if afft.AzureFirewallFqdnTagPropertiesFormat != nil { + objectMap["properties"] = afft.AzureFirewallFqdnTagPropertiesFormat + } + if afft.ID != nil { + objectMap["id"] = afft.ID + } + if afft.Location != nil { + objectMap["location"] = afft.Location + } + if afft.Tags != nil { + objectMap["tags"] = afft.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for AzureFirewallFqdnTag struct. +func (afft *AzureFirewallFqdnTag) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var azureFirewallFqdnTagPropertiesFormat AzureFirewallFqdnTagPropertiesFormat + err = json.Unmarshal(*v, &azureFirewallFqdnTagPropertiesFormat) + if err != nil { + return err + } + afft.AzureFirewallFqdnTagPropertiesFormat = &azureFirewallFqdnTagPropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + afft.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + afft.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + afft.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + afft.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + afft.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + afft.Tags = tags + } + } + } + + return nil +} + +// AzureFirewallFqdnTagListResult response for ListAzureFirewallFqdnTags API service call. +type AzureFirewallFqdnTagListResult struct { + autorest.Response `json:"-"` + // Value - List of Azure Firewall FQDN Tags in a resource group. + Value *[]AzureFirewallFqdnTag `json:"value,omitempty"` + // NextLink - URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// AzureFirewallFqdnTagListResultIterator provides access to a complete listing of AzureFirewallFqdnTag +// values. +type AzureFirewallFqdnTagListResultIterator struct { + i int + page AzureFirewallFqdnTagListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *AzureFirewallFqdnTagListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AzureFirewallFqdnTagListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *AzureFirewallFqdnTagListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter AzureFirewallFqdnTagListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter AzureFirewallFqdnTagListResultIterator) Response() AzureFirewallFqdnTagListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter AzureFirewallFqdnTagListResultIterator) Value() AzureFirewallFqdnTag { + if !iter.page.NotDone() { + return AzureFirewallFqdnTag{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the AzureFirewallFqdnTagListResultIterator type. +func NewAzureFirewallFqdnTagListResultIterator(page AzureFirewallFqdnTagListResultPage) AzureFirewallFqdnTagListResultIterator { + return AzureFirewallFqdnTagListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (afftlr AzureFirewallFqdnTagListResult) IsEmpty() bool { + return afftlr.Value == nil || len(*afftlr.Value) == 0 +} + +// azureFirewallFqdnTagListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (afftlr AzureFirewallFqdnTagListResult) azureFirewallFqdnTagListResultPreparer(ctx context.Context) (*http.Request, error) { + if afftlr.NextLink == nil || len(to.String(afftlr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(afftlr.NextLink))) +} + +// AzureFirewallFqdnTagListResultPage contains a page of AzureFirewallFqdnTag values. +type AzureFirewallFqdnTagListResultPage struct { + fn func(context.Context, AzureFirewallFqdnTagListResult) (AzureFirewallFqdnTagListResult, error) + afftlr AzureFirewallFqdnTagListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *AzureFirewallFqdnTagListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AzureFirewallFqdnTagListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.afftlr) + if err != nil { + return err + } + page.afftlr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *AzureFirewallFqdnTagListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page AzureFirewallFqdnTagListResultPage) NotDone() bool { + return !page.afftlr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page AzureFirewallFqdnTagListResultPage) Response() AzureFirewallFqdnTagListResult { + return page.afftlr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page AzureFirewallFqdnTagListResultPage) Values() []AzureFirewallFqdnTag { + if page.afftlr.IsEmpty() { + return nil + } + return *page.afftlr.Value +} + +// Creates a new instance of the AzureFirewallFqdnTagListResultPage type. +func NewAzureFirewallFqdnTagListResultPage(getNextPage func(context.Context, AzureFirewallFqdnTagListResult) (AzureFirewallFqdnTagListResult, error)) AzureFirewallFqdnTagListResultPage { + return AzureFirewallFqdnTagListResultPage{fn: getNextPage} +} + +// AzureFirewallFqdnTagPropertiesFormat azure Firewall FQDN Tag Properties. +type AzureFirewallFqdnTagPropertiesFormat struct { + // ProvisioningState - READ-ONLY; The provisioning state of the Azure firewall FQDN tag resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // FqdnTagName - READ-ONLY; The name of this FQDN Tag. + FqdnTagName *string `json:"fqdnTagName,omitempty"` +} + +// AzureFirewallIPConfiguration IP configuration of an Azure Firewall. +type AzureFirewallIPConfiguration struct { + // AzureFirewallIPConfigurationPropertiesFormat - Properties of the azure firewall IP configuration. + *AzureFirewallIPConfigurationPropertiesFormat `json:"properties,omitempty"` + // Name - Name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for AzureFirewallIPConfiguration. +func (afic AzureFirewallIPConfiguration) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if afic.AzureFirewallIPConfigurationPropertiesFormat != nil { + objectMap["properties"] = afic.AzureFirewallIPConfigurationPropertiesFormat + } + if afic.Name != nil { + objectMap["name"] = afic.Name + } + if afic.ID != nil { + objectMap["id"] = afic.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for AzureFirewallIPConfiguration struct. +func (afic *AzureFirewallIPConfiguration) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var azureFirewallIPConfigurationPropertiesFormat AzureFirewallIPConfigurationPropertiesFormat + err = json.Unmarshal(*v, &azureFirewallIPConfigurationPropertiesFormat) + if err != nil { + return err + } + afic.AzureFirewallIPConfigurationPropertiesFormat = &azureFirewallIPConfigurationPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + afic.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + afic.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + afic.ID = &ID + } + } + } + + return nil +} + +// AzureFirewallIPConfigurationPropertiesFormat properties of IP configuration of an Azure Firewall. +type AzureFirewallIPConfigurationPropertiesFormat struct { + // PrivateIPAddress - READ-ONLY; The Firewall Internal Load Balancer IP to be used as the next hop in User Defined Routes. + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + // Subnet - Reference of the subnet resource. This resource must be named 'AzureFirewallSubnet'. + Subnet *SubResource `json:"subnet,omitempty"` + // PublicIPAddress - Reference of the PublicIP resource. This field is a mandatory input if subnet is not null. + PublicIPAddress *SubResource `json:"publicIPAddress,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the Azure firewall IP configuration resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// AzureFirewallListResult response for ListAzureFirewalls API service call. +type AzureFirewallListResult struct { + autorest.Response `json:"-"` + // Value - List of Azure Firewalls in a resource group. + Value *[]AzureFirewall `json:"value,omitempty"` + // NextLink - URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// AzureFirewallListResultIterator provides access to a complete listing of AzureFirewall values. +type AzureFirewallListResultIterator struct { + i int + page AzureFirewallListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *AzureFirewallListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AzureFirewallListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *AzureFirewallListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter AzureFirewallListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter AzureFirewallListResultIterator) Response() AzureFirewallListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter AzureFirewallListResultIterator) Value() AzureFirewall { + if !iter.page.NotDone() { + return AzureFirewall{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the AzureFirewallListResultIterator type. +func NewAzureFirewallListResultIterator(page AzureFirewallListResultPage) AzureFirewallListResultIterator { + return AzureFirewallListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (aflr AzureFirewallListResult) IsEmpty() bool { + return aflr.Value == nil || len(*aflr.Value) == 0 +} + +// azureFirewallListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (aflr AzureFirewallListResult) azureFirewallListResultPreparer(ctx context.Context) (*http.Request, error) { + if aflr.NextLink == nil || len(to.String(aflr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(aflr.NextLink))) +} + +// AzureFirewallListResultPage contains a page of AzureFirewall values. +type AzureFirewallListResultPage struct { + fn func(context.Context, AzureFirewallListResult) (AzureFirewallListResult, error) + aflr AzureFirewallListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *AzureFirewallListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AzureFirewallListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.aflr) + if err != nil { + return err + } + page.aflr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *AzureFirewallListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page AzureFirewallListResultPage) NotDone() bool { + return !page.aflr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page AzureFirewallListResultPage) Response() AzureFirewallListResult { + return page.aflr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page AzureFirewallListResultPage) Values() []AzureFirewall { + if page.aflr.IsEmpty() { + return nil + } + return *page.aflr.Value +} + +// Creates a new instance of the AzureFirewallListResultPage type. +func NewAzureFirewallListResultPage(getNextPage func(context.Context, AzureFirewallListResult) (AzureFirewallListResult, error)) AzureFirewallListResultPage { + return AzureFirewallListResultPage{fn: getNextPage} +} + +// AzureFirewallNatRCAction azureFirewall NAT Rule Collection Action. +type AzureFirewallNatRCAction struct { + // Type - The type of action. Possible values include: 'Snat', 'Dnat' + Type AzureFirewallNatRCActionType `json:"type,omitempty"` +} + +// AzureFirewallNatRule properties of a NAT rule. +type AzureFirewallNatRule struct { + // Name - Name of the NAT rule. + Name *string `json:"name,omitempty"` + // Description - Description of the rule. + Description *string `json:"description,omitempty"` + // SourceAddresses - List of source IP addresses for this rule. + SourceAddresses *[]string `json:"sourceAddresses,omitempty"` + // DestinationAddresses - List of destination IP addresses for this rule. Supports IP ranges, prefixes, and service tags. + DestinationAddresses *[]string `json:"destinationAddresses,omitempty"` + // DestinationPorts - List of destination ports. + DestinationPorts *[]string `json:"destinationPorts,omitempty"` + // Protocols - Array of AzureFirewallNetworkRuleProtocols applicable to this NAT rule. + Protocols *[]AzureFirewallNetworkRuleProtocol `json:"protocols,omitempty"` + // TranslatedAddress - The translated address for this NAT rule. + TranslatedAddress *string `json:"translatedAddress,omitempty"` + // TranslatedPort - The translated port for this NAT rule. + TranslatedPort *string `json:"translatedPort,omitempty"` + // TranslatedFqdn - The translated FQDN for this NAT rule. + TranslatedFqdn *string `json:"translatedFqdn,omitempty"` + // SourceIPGroups - List of source IpGroups for this rule. + SourceIPGroups *[]string `json:"sourceIpGroups,omitempty"` +} + +// AzureFirewallNatRuleCollection NAT rule collection resource. +type AzureFirewallNatRuleCollection struct { + // AzureFirewallNatRuleCollectionProperties - Properties of the azure firewall NAT rule collection. + *AzureFirewallNatRuleCollectionProperties `json:"properties,omitempty"` + // Name - The name of the resource that is unique within the Azure firewall. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for AzureFirewallNatRuleCollection. +func (afnrc AzureFirewallNatRuleCollection) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if afnrc.AzureFirewallNatRuleCollectionProperties != nil { + objectMap["properties"] = afnrc.AzureFirewallNatRuleCollectionProperties + } + if afnrc.Name != nil { + objectMap["name"] = afnrc.Name + } + if afnrc.ID != nil { + objectMap["id"] = afnrc.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for AzureFirewallNatRuleCollection struct. +func (afnrc *AzureFirewallNatRuleCollection) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var azureFirewallNatRuleCollectionProperties AzureFirewallNatRuleCollectionProperties + err = json.Unmarshal(*v, &azureFirewallNatRuleCollectionProperties) + if err != nil { + return err + } + afnrc.AzureFirewallNatRuleCollectionProperties = &azureFirewallNatRuleCollectionProperties + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + afnrc.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + afnrc.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + afnrc.ID = &ID + } + } + } + + return nil +} + +// AzureFirewallNatRuleCollectionProperties properties of the NAT rule collection. +type AzureFirewallNatRuleCollectionProperties struct { + // Priority - Priority of the NAT rule collection resource. + Priority *int32 `json:"priority,omitempty"` + // Action - The action type of a NAT rule collection. + Action *AzureFirewallNatRCAction `json:"action,omitempty"` + // Rules - Collection of rules used by a NAT rule collection. + Rules *[]AzureFirewallNatRule `json:"rules,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the NAT rule collection resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// AzureFirewallNetworkRule properties of the network rule. +type AzureFirewallNetworkRule struct { + // Name - Name of the network rule. + Name *string `json:"name,omitempty"` + // Description - Description of the rule. + Description *string `json:"description,omitempty"` + // Protocols - Array of AzureFirewallNetworkRuleProtocols. + Protocols *[]AzureFirewallNetworkRuleProtocol `json:"protocols,omitempty"` + // SourceAddresses - List of source IP addresses for this rule. + SourceAddresses *[]string `json:"sourceAddresses,omitempty"` + // DestinationAddresses - List of destination IP addresses. + DestinationAddresses *[]string `json:"destinationAddresses,omitempty"` + // DestinationPorts - List of destination ports. + DestinationPorts *[]string `json:"destinationPorts,omitempty"` + // DestinationFqdns - List of destination FQDNs. + DestinationFqdns *[]string `json:"destinationFqdns,omitempty"` + // SourceIPGroups - List of source IpGroups for this rule. + SourceIPGroups *[]string `json:"sourceIpGroups,omitempty"` + // DestinationIPGroups - List of destination IpGroups for this rule. + DestinationIPGroups *[]string `json:"destinationIpGroups,omitempty"` +} + +// AzureFirewallNetworkRuleCollection network rule collection resource. +type AzureFirewallNetworkRuleCollection struct { + // AzureFirewallNetworkRuleCollectionPropertiesFormat - Properties of the azure firewall network rule collection. + *AzureFirewallNetworkRuleCollectionPropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within the Azure firewall. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for AzureFirewallNetworkRuleCollection. +func (afnrc AzureFirewallNetworkRuleCollection) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if afnrc.AzureFirewallNetworkRuleCollectionPropertiesFormat != nil { + objectMap["properties"] = afnrc.AzureFirewallNetworkRuleCollectionPropertiesFormat + } + if afnrc.Name != nil { + objectMap["name"] = afnrc.Name + } + if afnrc.ID != nil { + objectMap["id"] = afnrc.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for AzureFirewallNetworkRuleCollection struct. +func (afnrc *AzureFirewallNetworkRuleCollection) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var azureFirewallNetworkRuleCollectionPropertiesFormat AzureFirewallNetworkRuleCollectionPropertiesFormat + err = json.Unmarshal(*v, &azureFirewallNetworkRuleCollectionPropertiesFormat) + if err != nil { + return err + } + afnrc.AzureFirewallNetworkRuleCollectionPropertiesFormat = &azureFirewallNetworkRuleCollectionPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + afnrc.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + afnrc.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + afnrc.ID = &ID + } + } + } + + return nil +} + +// AzureFirewallNetworkRuleCollectionPropertiesFormat properties of the network rule collection. +type AzureFirewallNetworkRuleCollectionPropertiesFormat struct { + // Priority - Priority of the network rule collection resource. + Priority *int32 `json:"priority,omitempty"` + // Action - The action type of a rule collection. + Action *AzureFirewallRCAction `json:"action,omitempty"` + // Rules - Collection of rules used by a network rule collection. + Rules *[]AzureFirewallNetworkRule `json:"rules,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the network rule collection resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// AzureFirewallPropertiesFormat properties of the Azure Firewall. +type AzureFirewallPropertiesFormat struct { + // ApplicationRuleCollections - Collection of application rule collections used by Azure Firewall. + ApplicationRuleCollections *[]AzureFirewallApplicationRuleCollection `json:"applicationRuleCollections,omitempty"` + // NatRuleCollections - Collection of NAT rule collections used by Azure Firewall. + NatRuleCollections *[]AzureFirewallNatRuleCollection `json:"natRuleCollections,omitempty"` + // NetworkRuleCollections - Collection of network rule collections used by Azure Firewall. + NetworkRuleCollections *[]AzureFirewallNetworkRuleCollection `json:"networkRuleCollections,omitempty"` + // IPConfigurations - IP configuration of the Azure Firewall resource. + IPConfigurations *[]AzureFirewallIPConfiguration `json:"ipConfigurations,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the Azure firewall resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // ThreatIntelMode - The operation mode for Threat Intelligence. Possible values include: 'AzureFirewallThreatIntelModeAlert', 'AzureFirewallThreatIntelModeDeny', 'AzureFirewallThreatIntelModeOff' + ThreatIntelMode AzureFirewallThreatIntelMode `json:"threatIntelMode,omitempty"` + // VirtualHub - The virtualHub to which the firewall belongs. + VirtualHub *SubResource `json:"virtualHub,omitempty"` + // FirewallPolicy - The firewallPolicy associated with this azure firewall. + FirewallPolicy *SubResource `json:"firewallPolicy,omitempty"` + // HubIPAddresses - READ-ONLY; IP addresses associated with AzureFirewall. + HubIPAddresses *HubIPAddresses `json:"hubIpAddresses,omitempty"` + // Sku - The Azure Firewall Resource SKU. + Sku *AzureFirewallSku `json:"sku,omitempty"` + // AdditionalProperties - The additional properties used to further config this azure firewall. + AdditionalProperties map[string]*string `json:"additionalProperties"` +} + +// MarshalJSON is the custom marshaler for AzureFirewallPropertiesFormat. +func (afpf AzureFirewallPropertiesFormat) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if afpf.ApplicationRuleCollections != nil { + objectMap["applicationRuleCollections"] = afpf.ApplicationRuleCollections + } + if afpf.NatRuleCollections != nil { + objectMap["natRuleCollections"] = afpf.NatRuleCollections + } + if afpf.NetworkRuleCollections != nil { + objectMap["networkRuleCollections"] = afpf.NetworkRuleCollections + } + if afpf.IPConfigurations != nil { + objectMap["ipConfigurations"] = afpf.IPConfigurations + } + if afpf.ThreatIntelMode != "" { + objectMap["threatIntelMode"] = afpf.ThreatIntelMode + } + if afpf.VirtualHub != nil { + objectMap["virtualHub"] = afpf.VirtualHub + } + if afpf.FirewallPolicy != nil { + objectMap["firewallPolicy"] = afpf.FirewallPolicy + } + if afpf.Sku != nil { + objectMap["sku"] = afpf.Sku + } + if afpf.AdditionalProperties != nil { + objectMap["additionalProperties"] = afpf.AdditionalProperties + } + return json.Marshal(objectMap) +} + +// AzureFirewallPublicIPAddress public IP Address associated with azure firewall. +type AzureFirewallPublicIPAddress struct { + // Address - Public IP Address value. + Address *string `json:"address,omitempty"` +} + +// AzureFirewallRCAction properties of the AzureFirewallRCAction. +type AzureFirewallRCAction struct { + // Type - The type of action. Possible values include: 'AzureFirewallRCActionTypeAllow', 'AzureFirewallRCActionTypeDeny' + Type AzureFirewallRCActionType `json:"type,omitempty"` +} + +// AzureFirewallsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type AzureFirewallsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *AzureFirewallsCreateOrUpdateFuture) Result(client AzureFirewallsClient) (af AzureFirewall, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AzureFirewallsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.AzureFirewallsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if af.Response.Response, err = future.GetResult(sender); err == nil && af.Response.Response.StatusCode != http.StatusNoContent { + af, err = client.CreateOrUpdateResponder(af.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AzureFirewallsCreateOrUpdateFuture", "Result", af.Response.Response, "Failure responding to request") + } + } + return +} + +// AzureFirewallsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type AzureFirewallsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *AzureFirewallsDeleteFuture) Result(client AzureFirewallsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AzureFirewallsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.AzureFirewallsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// AzureFirewallSku SKU of an Azure Firewall. +type AzureFirewallSku struct { + // Name - Name of an Azure Firewall SKU. Possible values include: 'AZFWVNet', 'AZFWHub' + Name AzureFirewallSkuName `json:"name,omitempty"` + // Tier - Tier of an Azure Firewall. Possible values include: 'Standard' + Tier AzureFirewallSkuTier `json:"tier,omitempty"` +} + +// AzureFirewallsUpdateTagsFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type AzureFirewallsUpdateTagsFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *AzureFirewallsUpdateTagsFuture) Result(client AzureFirewallsClient) (af AzureFirewall, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AzureFirewallsUpdateTagsFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.AzureFirewallsUpdateTagsFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if af.Response.Response, err = future.GetResult(sender); err == nil && af.Response.Response.StatusCode != http.StatusNoContent { + af, err = client.UpdateTagsResponder(af.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.AzureFirewallsUpdateTagsFuture", "Result", af.Response.Response, "Failure responding to request") + } + } + return +} + +// AzureReachabilityReport azure reachability report details. +type AzureReachabilityReport struct { + autorest.Response `json:"-"` + // AggregationLevel - The aggregation level of Azure reachability report. Can be Country, State or City. + AggregationLevel *string `json:"aggregationLevel,omitempty"` + // ProviderLocation - Parameters that define a geographic location. + ProviderLocation *AzureReachabilityReportLocation `json:"providerLocation,omitempty"` + // ReachabilityReport - List of Azure reachability report items. + ReachabilityReport *[]AzureReachabilityReportItem `json:"reachabilityReport,omitempty"` +} + +// AzureReachabilityReportItem azure reachability report details for a given provider location. +type AzureReachabilityReportItem struct { + // Provider - The Internet service provider. + Provider *string `json:"provider,omitempty"` + // AzureLocation - The Azure region. + AzureLocation *string `json:"azureLocation,omitempty"` + // Latencies - List of latency details for each of the time series. + Latencies *[]AzureReachabilityReportLatencyInfo `json:"latencies,omitempty"` +} + +// AzureReachabilityReportLatencyInfo details on latency for a time series. +type AzureReachabilityReportLatencyInfo struct { + // TimeStamp - The time stamp. + TimeStamp *date.Time `json:"timeStamp,omitempty"` + // Score - The relative latency score between 1 and 100, higher values indicating a faster connection. + Score *int32 `json:"score,omitempty"` +} + +// AzureReachabilityReportLocation parameters that define a geographic location. +type AzureReachabilityReportLocation struct { + // Country - The name of the country. + Country *string `json:"country,omitempty"` + // State - The name of the state. + State *string `json:"state,omitempty"` + // City - The name of the city or town. + City *string `json:"city,omitempty"` +} + +// AzureReachabilityReportParameters geographic and time constraints for Azure reachability report. +type AzureReachabilityReportParameters struct { + // ProviderLocation - Parameters that define a geographic location. + ProviderLocation *AzureReachabilityReportLocation `json:"providerLocation,omitempty"` + // Providers - List of Internet service providers. + Providers *[]string `json:"providers,omitempty"` + // AzureLocations - Optional Azure regions to scope the query to. + AzureLocations *[]string `json:"azureLocations,omitempty"` + // StartTime - The start time for the Azure reachability report. + StartTime *date.Time `json:"startTime,omitempty"` + // EndTime - The end time for the Azure reachability report. + EndTime *date.Time `json:"endTime,omitempty"` +} + +// BackendAddressPool pool of backend IP addresses. +type BackendAddressPool struct { + autorest.Response `json:"-"` + // BackendAddressPoolPropertiesFormat - Properties of load balancer backend address pool. + *BackendAddressPoolPropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within the set of backend address pools used by the load balancer. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Type of the resource. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for BackendAddressPool. +func (bap BackendAddressPool) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if bap.BackendAddressPoolPropertiesFormat != nil { + objectMap["properties"] = bap.BackendAddressPoolPropertiesFormat + } + if bap.Name != nil { + objectMap["name"] = bap.Name + } + if bap.ID != nil { + objectMap["id"] = bap.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for BackendAddressPool struct. +func (bap *BackendAddressPool) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var backendAddressPoolPropertiesFormat BackendAddressPoolPropertiesFormat + err = json.Unmarshal(*v, &backendAddressPoolPropertiesFormat) + if err != nil { + return err + } + bap.BackendAddressPoolPropertiesFormat = &backendAddressPoolPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + bap.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + bap.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + bap.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + bap.ID = &ID + } + } + } + + return nil +} + +// BackendAddressPoolPropertiesFormat properties of the backend address pool. +type BackendAddressPoolPropertiesFormat struct { + // BackendIPConfigurations - READ-ONLY; An array of references to IP addresses defined in network interfaces. + BackendIPConfigurations *[]InterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` + // LoadBalancingRules - READ-ONLY; An array of references to load balancing rules that use this backend address pool. + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + // OutboundRule - READ-ONLY; A reference to an outbound rule that uses this backend address pool. + OutboundRule *SubResource `json:"outboundRule,omitempty"` + // OutboundRules - READ-ONLY; An array of references to outbound rules that use this backend address pool. + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the backend address pool resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// BastionActiveSession the session detail for a target. +type BastionActiveSession struct { + // SessionID - READ-ONLY; A unique id for the session. + SessionID *string `json:"sessionId,omitempty"` + // StartTime - READ-ONLY; The time when the session started. + StartTime interface{} `json:"startTime,omitempty"` + // TargetSubscriptionID - READ-ONLY; The subscription id for the target virtual machine. + TargetSubscriptionID *string `json:"targetSubscriptionId,omitempty"` + // ResourceType - READ-ONLY; The type of the resource. + ResourceType *string `json:"resourceType,omitempty"` + // TargetHostName - READ-ONLY; The host name of the target. + TargetHostName *string `json:"targetHostName,omitempty"` + // TargetResourceGroup - READ-ONLY; The resource group of the target. + TargetResourceGroup *string `json:"targetResourceGroup,omitempty"` + // UserName - READ-ONLY; The user name who is active on this session. + UserName *string `json:"userName,omitempty"` + // TargetIPAddress - READ-ONLY; The IP Address of the target. + TargetIPAddress *string `json:"targetIpAddress,omitempty"` + // Protocol - READ-ONLY; The protocol used to connect to the target. Possible values include: 'SSH', 'RDP' + Protocol BastionConnectProtocol `json:"protocol,omitempty"` + // TargetResourceID - READ-ONLY; The resource id of the target. + TargetResourceID *string `json:"targetResourceId,omitempty"` + // SessionDurationInMins - READ-ONLY; Duration in mins the session has been active. + SessionDurationInMins *float64 `json:"sessionDurationInMins,omitempty"` +} + +// BastionActiveSessionListResult response for GetActiveSessions. +type BastionActiveSessionListResult struct { + autorest.Response `json:"-"` + // Value - List of active sessions on the bastion. + Value *[]BastionActiveSession `json:"value,omitempty"` + // NextLink - Gets or sets the URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// BastionActiveSessionListResultIterator provides access to a complete listing of BastionActiveSession +// values. +type BastionActiveSessionListResultIterator struct { + i int + page BastionActiveSessionListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *BastionActiveSessionListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BastionActiveSessionListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *BastionActiveSessionListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter BastionActiveSessionListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter BastionActiveSessionListResultIterator) Response() BastionActiveSessionListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter BastionActiveSessionListResultIterator) Value() BastionActiveSession { + if !iter.page.NotDone() { + return BastionActiveSession{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the BastionActiveSessionListResultIterator type. +func NewBastionActiveSessionListResultIterator(page BastionActiveSessionListResultPage) BastionActiveSessionListResultIterator { + return BastionActiveSessionListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (baslr BastionActiveSessionListResult) IsEmpty() bool { + return baslr.Value == nil || len(*baslr.Value) == 0 +} + +// bastionActiveSessionListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (baslr BastionActiveSessionListResult) bastionActiveSessionListResultPreparer(ctx context.Context) (*http.Request, error) { + if baslr.NextLink == nil || len(to.String(baslr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(baslr.NextLink))) +} + +// BastionActiveSessionListResultPage contains a page of BastionActiveSession values. +type BastionActiveSessionListResultPage struct { + fn func(context.Context, BastionActiveSessionListResult) (BastionActiveSessionListResult, error) + baslr BastionActiveSessionListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *BastionActiveSessionListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BastionActiveSessionListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.baslr) + if err != nil { + return err + } + page.baslr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *BastionActiveSessionListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page BastionActiveSessionListResultPage) NotDone() bool { + return !page.baslr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page BastionActiveSessionListResultPage) Response() BastionActiveSessionListResult { + return page.baslr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page BastionActiveSessionListResultPage) Values() []BastionActiveSession { + if page.baslr.IsEmpty() { + return nil + } + return *page.baslr.Value +} + +// Creates a new instance of the BastionActiveSessionListResultPage type. +func NewBastionActiveSessionListResultPage(getNextPage func(context.Context, BastionActiveSessionListResult) (BastionActiveSessionListResult, error)) BastionActiveSessionListResultPage { + return BastionActiveSessionListResultPage{fn: getNextPage} +} + +// BastionHost bastion Host resource. +type BastionHost struct { + autorest.Response `json:"-"` + // BastionHostPropertiesFormat - Represents the bastion host resource. + *BastionHostPropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for BastionHost. +func (bh BastionHost) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if bh.BastionHostPropertiesFormat != nil { + objectMap["properties"] = bh.BastionHostPropertiesFormat + } + if bh.ID != nil { + objectMap["id"] = bh.ID + } + if bh.Location != nil { + objectMap["location"] = bh.Location + } + if bh.Tags != nil { + objectMap["tags"] = bh.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for BastionHost struct. +func (bh *BastionHost) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var bastionHostPropertiesFormat BastionHostPropertiesFormat + err = json.Unmarshal(*v, &bastionHostPropertiesFormat) + if err != nil { + return err + } + bh.BastionHostPropertiesFormat = &bastionHostPropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + bh.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + bh.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + bh.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + bh.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + bh.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + bh.Tags = tags + } + } + } + + return nil +} + +// BastionHostIPConfiguration IP configuration of an Bastion Host. +type BastionHostIPConfiguration struct { + // BastionHostIPConfigurationPropertiesFormat - Represents the ip configuration associated with the resource. + *BastionHostIPConfigurationPropertiesFormat `json:"properties,omitempty"` + // Name - Name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Ip configuration type. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for BastionHostIPConfiguration. +func (bhic BastionHostIPConfiguration) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if bhic.BastionHostIPConfigurationPropertiesFormat != nil { + objectMap["properties"] = bhic.BastionHostIPConfigurationPropertiesFormat + } + if bhic.Name != nil { + objectMap["name"] = bhic.Name + } + if bhic.ID != nil { + objectMap["id"] = bhic.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for BastionHostIPConfiguration struct. +func (bhic *BastionHostIPConfiguration) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var bastionHostIPConfigurationPropertiesFormat BastionHostIPConfigurationPropertiesFormat + err = json.Unmarshal(*v, &bastionHostIPConfigurationPropertiesFormat) + if err != nil { + return err + } + bhic.BastionHostIPConfigurationPropertiesFormat = &bastionHostIPConfigurationPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + bhic.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + bhic.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + bhic.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + bhic.ID = &ID + } + } + } + + return nil +} + +// BastionHostIPConfigurationPropertiesFormat properties of IP configuration of an Bastion Host. +type BastionHostIPConfigurationPropertiesFormat struct { + // Subnet - Reference of the subnet resource. + Subnet *SubResource `json:"subnet,omitempty"` + // PublicIPAddress - Reference of the PublicIP resource. + PublicIPAddress *SubResource `json:"publicIPAddress,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the bastion host IP configuration resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // PrivateIPAllocationMethod - Private IP allocation method. Possible values include: 'Static', 'Dynamic' + PrivateIPAllocationMethod IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` +} + +// BastionHostListResult response for ListBastionHosts API service call. +type BastionHostListResult struct { + autorest.Response `json:"-"` + // Value - List of Bastion Hosts in a resource group. + Value *[]BastionHost `json:"value,omitempty"` + // NextLink - URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// BastionHostListResultIterator provides access to a complete listing of BastionHost values. +type BastionHostListResultIterator struct { + i int + page BastionHostListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *BastionHostListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BastionHostListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *BastionHostListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter BastionHostListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter BastionHostListResultIterator) Response() BastionHostListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter BastionHostListResultIterator) Value() BastionHost { + if !iter.page.NotDone() { + return BastionHost{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the BastionHostListResultIterator type. +func NewBastionHostListResultIterator(page BastionHostListResultPage) BastionHostListResultIterator { + return BastionHostListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (bhlr BastionHostListResult) IsEmpty() bool { + return bhlr.Value == nil || len(*bhlr.Value) == 0 +} + +// bastionHostListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (bhlr BastionHostListResult) bastionHostListResultPreparer(ctx context.Context) (*http.Request, error) { + if bhlr.NextLink == nil || len(to.String(bhlr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(bhlr.NextLink))) +} + +// BastionHostListResultPage contains a page of BastionHost values. +type BastionHostListResultPage struct { + fn func(context.Context, BastionHostListResult) (BastionHostListResult, error) + bhlr BastionHostListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *BastionHostListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BastionHostListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.bhlr) + if err != nil { + return err + } + page.bhlr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *BastionHostListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page BastionHostListResultPage) NotDone() bool { + return !page.bhlr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page BastionHostListResultPage) Response() BastionHostListResult { + return page.bhlr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page BastionHostListResultPage) Values() []BastionHost { + if page.bhlr.IsEmpty() { + return nil + } + return *page.bhlr.Value +} + +// Creates a new instance of the BastionHostListResultPage type. +func NewBastionHostListResultPage(getNextPage func(context.Context, BastionHostListResult) (BastionHostListResult, error)) BastionHostListResultPage { + return BastionHostListResultPage{fn: getNextPage} +} + +// BastionHostPropertiesFormat properties of the Bastion Host. +type BastionHostPropertiesFormat struct { + // IPConfigurations - IP configuration of the Bastion Host resource. + IPConfigurations *[]BastionHostIPConfiguration `json:"ipConfigurations,omitempty"` + // DNSName - FQDN for the endpoint on which bastion host is accessible. + DNSName *string `json:"dnsName,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the bastion host resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// BastionHostsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type BastionHostsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *BastionHostsCreateOrUpdateFuture) Result(client BastionHostsClient) (bh BastionHost, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BastionHostsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.BastionHostsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if bh.Response.Response, err = future.GetResult(sender); err == nil && bh.Response.Response.StatusCode != http.StatusNoContent { + bh, err = client.CreateOrUpdateResponder(bh.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BastionHostsCreateOrUpdateFuture", "Result", bh.Response.Response, "Failure responding to request") + } + } + return +} + +// BastionHostsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type BastionHostsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *BastionHostsDeleteFuture) Result(client BastionHostsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.BastionHostsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.BastionHostsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// BastionSessionDeleteResult response for DisconnectActiveSessions. +type BastionSessionDeleteResult struct { + autorest.Response `json:"-"` + // Value - List of sessions with their corresponding state. + Value *[]BastionSessionState `json:"value,omitempty"` + // NextLink - Gets or sets the URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// BastionSessionDeleteResultIterator provides access to a complete listing of BastionSessionState values. +type BastionSessionDeleteResultIterator struct { + i int + page BastionSessionDeleteResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *BastionSessionDeleteResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BastionSessionDeleteResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *BastionSessionDeleteResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter BastionSessionDeleteResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter BastionSessionDeleteResultIterator) Response() BastionSessionDeleteResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter BastionSessionDeleteResultIterator) Value() BastionSessionState { + if !iter.page.NotDone() { + return BastionSessionState{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the BastionSessionDeleteResultIterator type. +func NewBastionSessionDeleteResultIterator(page BastionSessionDeleteResultPage) BastionSessionDeleteResultIterator { + return BastionSessionDeleteResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (bsdr BastionSessionDeleteResult) IsEmpty() bool { + return bsdr.Value == nil || len(*bsdr.Value) == 0 +} + +// bastionSessionDeleteResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (bsdr BastionSessionDeleteResult) bastionSessionDeleteResultPreparer(ctx context.Context) (*http.Request, error) { + if bsdr.NextLink == nil || len(to.String(bsdr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(bsdr.NextLink))) +} + +// BastionSessionDeleteResultPage contains a page of BastionSessionState values. +type BastionSessionDeleteResultPage struct { + fn func(context.Context, BastionSessionDeleteResult) (BastionSessionDeleteResult, error) + bsdr BastionSessionDeleteResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *BastionSessionDeleteResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BastionSessionDeleteResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.bsdr) + if err != nil { + return err + } + page.bsdr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *BastionSessionDeleteResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page BastionSessionDeleteResultPage) NotDone() bool { + return !page.bsdr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page BastionSessionDeleteResultPage) Response() BastionSessionDeleteResult { + return page.bsdr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page BastionSessionDeleteResultPage) Values() []BastionSessionState { + if page.bsdr.IsEmpty() { + return nil + } + return *page.bsdr.Value +} + +// Creates a new instance of the BastionSessionDeleteResultPage type. +func NewBastionSessionDeleteResultPage(getNextPage func(context.Context, BastionSessionDeleteResult) (BastionSessionDeleteResult, error)) BastionSessionDeleteResultPage { + return BastionSessionDeleteResultPage{fn: getNextPage} +} + +// BastionSessionState the session state detail for a target. +type BastionSessionState struct { + // SessionID - READ-ONLY; A unique id for the session. + SessionID *string `json:"sessionId,omitempty"` + // Message - READ-ONLY; Used for extra information. + Message *string `json:"message,omitempty"` + // State - READ-ONLY; The state of the session. Disconnected/Failed/NotFound. + State *string `json:"state,omitempty"` +} + +// BastionShareableLink bastion Shareable Link. +type BastionShareableLink struct { + // VM - Reference of the virtual machine resource. + VM *VM `json:"vm,omitempty"` + // Bsl - READ-ONLY; The unique Bastion Shareable Link to the virtual machine. + Bsl *string `json:"bsl,omitempty"` + // CreatedAt - READ-ONLY; The time when the link was created. + CreatedAt *string `json:"createdAt,omitempty"` + // Message - READ-ONLY; Optional field indicating the warning or error message related to the vm in case of partial failure + Message *string `json:"message,omitempty"` +} + +// BastionShareableLinkListRequest post request for all the Bastion Shareable Link endpoints. +type BastionShareableLinkListRequest struct { + // Vms - List of VM references. + Vms *[]BastionShareableLink `json:"vms,omitempty"` +} + +// BastionShareableLinkListResult response for all the Bastion Shareable Link endpoints. +type BastionShareableLinkListResult struct { + autorest.Response `json:"-"` + // Value - List of Bastion Shareable Links for the request. + Value *[]BastionShareableLink `json:"value,omitempty"` + // NextLink - Gets or sets the URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// BastionShareableLinkListResultIterator provides access to a complete listing of BastionShareableLink +// values. +type BastionShareableLinkListResultIterator struct { + i int + page BastionShareableLinkListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *BastionShareableLinkListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BastionShareableLinkListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *BastionShareableLinkListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter BastionShareableLinkListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter BastionShareableLinkListResultIterator) Response() BastionShareableLinkListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter BastionShareableLinkListResultIterator) Value() BastionShareableLink { + if !iter.page.NotDone() { + return BastionShareableLink{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the BastionShareableLinkListResultIterator type. +func NewBastionShareableLinkListResultIterator(page BastionShareableLinkListResultPage) BastionShareableLinkListResultIterator { + return BastionShareableLinkListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (bsllr BastionShareableLinkListResult) IsEmpty() bool { + return bsllr.Value == nil || len(*bsllr.Value) == 0 +} + +// bastionShareableLinkListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (bsllr BastionShareableLinkListResult) bastionShareableLinkListResultPreparer(ctx context.Context) (*http.Request, error) { + if bsllr.NextLink == nil || len(to.String(bsllr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(bsllr.NextLink))) +} + +// BastionShareableLinkListResultPage contains a page of BastionShareableLink values. +type BastionShareableLinkListResultPage struct { + fn func(context.Context, BastionShareableLinkListResult) (BastionShareableLinkListResult, error) + bsllr BastionShareableLinkListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *BastionShareableLinkListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BastionShareableLinkListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.bsllr) + if err != nil { + return err + } + page.bsllr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *BastionShareableLinkListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page BastionShareableLinkListResultPage) NotDone() bool { + return !page.bsllr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page BastionShareableLinkListResultPage) Response() BastionShareableLinkListResult { + return page.bsllr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page BastionShareableLinkListResultPage) Values() []BastionShareableLink { + if page.bsllr.IsEmpty() { + return nil + } + return *page.bsllr.Value +} + +// Creates a new instance of the BastionShareableLinkListResultPage type. +func NewBastionShareableLinkListResultPage(getNextPage func(context.Context, BastionShareableLinkListResult) (BastionShareableLinkListResult, error)) BastionShareableLinkListResultPage { + return BastionShareableLinkListResultPage{fn: getNextPage} +} + +// BGPCommunity contains bgp community information offered in Service Community resources. +type BGPCommunity struct { + // ServiceSupportedRegion - The region which the service support. e.g. For O365, region is Global. + ServiceSupportedRegion *string `json:"serviceSupportedRegion,omitempty"` + // CommunityName - The name of the bgp community. e.g. Skype. + CommunityName *string `json:"communityName,omitempty"` + // CommunityValue - The value of the bgp community. For more information: https://docs.microsoft.com/en-us/azure/expressroute/expressroute-routing. + CommunityValue *string `json:"communityValue,omitempty"` + // CommunityPrefixes - The prefixes that the bgp community contains. + CommunityPrefixes *[]string `json:"communityPrefixes,omitempty"` + // IsAuthorizedToUse - Customer is authorized to use bgp community or not. + IsAuthorizedToUse *bool `json:"isAuthorizedToUse,omitempty"` + // ServiceGroup - The service group of the bgp community contains. + ServiceGroup *string `json:"serviceGroup,omitempty"` +} + +// BgpPeerStatus BGP peer status details. +type BgpPeerStatus struct { + // LocalAddress - READ-ONLY; The virtual network gateway's local address. + LocalAddress *string `json:"localAddress,omitempty"` + // Neighbor - READ-ONLY; The remote BGP peer. + Neighbor *string `json:"neighbor,omitempty"` + // Asn - READ-ONLY; The autonomous system number of the remote BGP peer. + Asn *int32 `json:"asn,omitempty"` + // State - READ-ONLY; The BGP peer state. Possible values include: 'BgpPeerStateUnknown', 'BgpPeerStateStopped', 'BgpPeerStateIdle', 'BgpPeerStateConnecting', 'BgpPeerStateConnected' + State BgpPeerState `json:"state,omitempty"` + // ConnectedDuration - READ-ONLY; For how long the peering has been up. + ConnectedDuration *string `json:"connectedDuration,omitempty"` + // RoutesReceived - READ-ONLY; The number of routes learned from this peer. + RoutesReceived *int64 `json:"routesReceived,omitempty"` + // MessagesSent - READ-ONLY; The number of BGP messages sent. + MessagesSent *int64 `json:"messagesSent,omitempty"` + // MessagesReceived - READ-ONLY; The number of BGP messages received. + MessagesReceived *int64 `json:"messagesReceived,omitempty"` +} + +// BgpPeerStatusListResult response for list BGP peer status API service call. +type BgpPeerStatusListResult struct { + autorest.Response `json:"-"` + // Value - List of BGP peers. + Value *[]BgpPeerStatus `json:"value,omitempty"` +} + +// BgpServiceCommunity service Community Properties. +type BgpServiceCommunity struct { + // BgpServiceCommunityPropertiesFormat - Properties of the BGP service community. + *BgpServiceCommunityPropertiesFormat `json:"properties,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for BgpServiceCommunity. +func (bsc BgpServiceCommunity) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if bsc.BgpServiceCommunityPropertiesFormat != nil { + objectMap["properties"] = bsc.BgpServiceCommunityPropertiesFormat + } + if bsc.ID != nil { + objectMap["id"] = bsc.ID + } + if bsc.Location != nil { + objectMap["location"] = bsc.Location + } + if bsc.Tags != nil { + objectMap["tags"] = bsc.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for BgpServiceCommunity struct. +func (bsc *BgpServiceCommunity) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var bgpServiceCommunityPropertiesFormat BgpServiceCommunityPropertiesFormat + err = json.Unmarshal(*v, &bgpServiceCommunityPropertiesFormat) + if err != nil { + return err + } + bsc.BgpServiceCommunityPropertiesFormat = &bgpServiceCommunityPropertiesFormat + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + bsc.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + bsc.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + bsc.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + bsc.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + bsc.Tags = tags + } + } + } + + return nil +} + +// BgpServiceCommunityListResult response for the ListServiceCommunity API service call. +type BgpServiceCommunityListResult struct { + autorest.Response `json:"-"` + // Value - A list of service community resources. + Value *[]BgpServiceCommunity `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// BgpServiceCommunityListResultIterator provides access to a complete listing of BgpServiceCommunity +// values. +type BgpServiceCommunityListResultIterator struct { + i int + page BgpServiceCommunityListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *BgpServiceCommunityListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BgpServiceCommunityListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *BgpServiceCommunityListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter BgpServiceCommunityListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter BgpServiceCommunityListResultIterator) Response() BgpServiceCommunityListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter BgpServiceCommunityListResultIterator) Value() BgpServiceCommunity { + if !iter.page.NotDone() { + return BgpServiceCommunity{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the BgpServiceCommunityListResultIterator type. +func NewBgpServiceCommunityListResultIterator(page BgpServiceCommunityListResultPage) BgpServiceCommunityListResultIterator { + return BgpServiceCommunityListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (bsclr BgpServiceCommunityListResult) IsEmpty() bool { + return bsclr.Value == nil || len(*bsclr.Value) == 0 +} + +// bgpServiceCommunityListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (bsclr BgpServiceCommunityListResult) bgpServiceCommunityListResultPreparer(ctx context.Context) (*http.Request, error) { + if bsclr.NextLink == nil || len(to.String(bsclr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(bsclr.NextLink))) +} + +// BgpServiceCommunityListResultPage contains a page of BgpServiceCommunity values. +type BgpServiceCommunityListResultPage struct { + fn func(context.Context, BgpServiceCommunityListResult) (BgpServiceCommunityListResult, error) + bsclr BgpServiceCommunityListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *BgpServiceCommunityListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/BgpServiceCommunityListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.bsclr) + if err != nil { + return err + } + page.bsclr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *BgpServiceCommunityListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page BgpServiceCommunityListResultPage) NotDone() bool { + return !page.bsclr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page BgpServiceCommunityListResultPage) Response() BgpServiceCommunityListResult { + return page.bsclr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page BgpServiceCommunityListResultPage) Values() []BgpServiceCommunity { + if page.bsclr.IsEmpty() { + return nil + } + return *page.bsclr.Value +} + +// Creates a new instance of the BgpServiceCommunityListResultPage type. +func NewBgpServiceCommunityListResultPage(getNextPage func(context.Context, BgpServiceCommunityListResult) (BgpServiceCommunityListResult, error)) BgpServiceCommunityListResultPage { + return BgpServiceCommunityListResultPage{fn: getNextPage} +} + +// BgpServiceCommunityPropertiesFormat properties of Service Community. +type BgpServiceCommunityPropertiesFormat struct { + // ServiceName - The name of the bgp community. e.g. Skype. + ServiceName *string `json:"serviceName,omitempty"` + // BgpCommunities - A list of bgp communities. + BgpCommunities *[]BGPCommunity `json:"bgpCommunities,omitempty"` +} + +// BgpSettings BGP settings details. +type BgpSettings struct { + // Asn - The BGP speaker's ASN. + Asn *int64 `json:"asn,omitempty"` + // BgpPeeringAddress - The BGP peering address and BGP identifier of this BGP speaker. + BgpPeeringAddress *string `json:"bgpPeeringAddress,omitempty"` + // PeerWeight - The weight added to routes learned from this BGP speaker. + PeerWeight *int32 `json:"peerWeight,omitempty"` +} + +// CheckPrivateLinkServiceVisibilityRequest request body of the CheckPrivateLinkServiceVisibility API +// service call. +type CheckPrivateLinkServiceVisibilityRequest struct { + // PrivateLinkServiceAlias - The alias of the private link service. + PrivateLinkServiceAlias *string `json:"privateLinkServiceAlias,omitempty"` +} + +// CloudError an error response from the service. +type CloudError struct { + // Error - Cloud error body. + Error *CloudErrorBody `json:"error,omitempty"` +} + +// CloudErrorBody an error response from the service. +type CloudErrorBody struct { + // Code - An identifier for the error. Codes are invariant and are intended to be consumed programmatically. + Code *string `json:"code,omitempty"` + // Message - A message describing the error, intended to be suitable for display in a user interface. + Message *string `json:"message,omitempty"` + // Target - The target of the particular error. For example, the name of the property in error. + Target *string `json:"target,omitempty"` + // Details - A list of additional details about the error. + Details *[]CloudErrorBody `json:"details,omitempty"` +} + +// ConfigurationDiagnosticParameters parameters to get network configuration diagnostic. +type ConfigurationDiagnosticParameters struct { + // TargetResourceID - The ID of the target resource to perform network configuration diagnostic. Valid options are VM, NetworkInterface, VMSS/NetworkInterface and Application Gateway. + TargetResourceID *string `json:"targetResourceId,omitempty"` + // VerbosityLevel - Verbosity level. Possible values include: 'Normal', 'Minimum', 'Full' + VerbosityLevel VerbosityLevel `json:"verbosityLevel,omitempty"` + // Profiles - List of network configuration diagnostic profiles. + Profiles *[]ConfigurationDiagnosticProfile `json:"profiles,omitempty"` +} + +// ConfigurationDiagnosticProfile parameters to compare with network configuration. +type ConfigurationDiagnosticProfile struct { + // Direction - The direction of the traffic. Possible values include: 'Inbound', 'Outbound' + Direction Direction `json:"direction,omitempty"` + // Protocol - Protocol to be verified on. Accepted values are '*', TCP, UDP. + Protocol *string `json:"protocol,omitempty"` + // Source - Traffic source. Accepted values are '*', IP Address/CIDR, Service Tag. + Source *string `json:"source,omitempty"` + // Destination - Traffic destination. Accepted values are: '*', IP Address/CIDR, Service Tag. + Destination *string `json:"destination,omitempty"` + // DestinationPort - Traffic destination port. Accepted values are '*' and a single port in the range (0 - 65535). + DestinationPort *string `json:"destinationPort,omitempty"` +} + +// ConfigurationDiagnosticResponse results of network configuration diagnostic on the target resource. +type ConfigurationDiagnosticResponse struct { + autorest.Response `json:"-"` + // Results - READ-ONLY; List of network configuration diagnostic results. + Results *[]ConfigurationDiagnosticResult `json:"results,omitempty"` +} + +// ConfigurationDiagnosticResult network configuration diagnostic result corresponded to provided traffic +// query. +type ConfigurationDiagnosticResult struct { + // Profile - Network configuration diagnostic profile. + Profile *ConfigurationDiagnosticProfile `json:"profile,omitempty"` + // NetworkSecurityGroupResult - Network security group result. + NetworkSecurityGroupResult *SecurityGroupResult `json:"networkSecurityGroupResult,omitempty"` +} + +// ConnectionMonitor parameters that define the operation to create a connection monitor. +type ConnectionMonitor struct { + // Location - Connection monitor location. + Location *string `json:"location,omitempty"` + // Tags - Connection monitor tags. + Tags map[string]*string `json:"tags"` + // ConnectionMonitorParameters - Properties of the connection monitor. + *ConnectionMonitorParameters `json:"properties,omitempty"` +} + +// MarshalJSON is the custom marshaler for ConnectionMonitor. +func (cm ConnectionMonitor) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if cm.Location != nil { + objectMap["location"] = cm.Location + } + if cm.Tags != nil { + objectMap["tags"] = cm.Tags + } + if cm.ConnectionMonitorParameters != nil { + objectMap["properties"] = cm.ConnectionMonitorParameters + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ConnectionMonitor struct. +func (cm *ConnectionMonitor) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + cm.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + cm.Tags = tags + } + case "properties": + if v != nil { + var connectionMonitorParameters ConnectionMonitorParameters + err = json.Unmarshal(*v, &connectionMonitorParameters) + if err != nil { + return err + } + cm.ConnectionMonitorParameters = &connectionMonitorParameters + } + } + } + + return nil +} + +// ConnectionMonitorDestination describes the destination of connection monitor. +type ConnectionMonitorDestination struct { + // ResourceID - The ID of the resource used as the destination by connection monitor. + ResourceID *string `json:"resourceId,omitempty"` + // Address - Address of the connection monitor destination (IP or domain name). + Address *string `json:"address,omitempty"` + // Port - The destination port used by connection monitor. + Port *int32 `json:"port,omitempty"` +} + +// ConnectionMonitorListResult list of connection monitors. +type ConnectionMonitorListResult struct { + autorest.Response `json:"-"` + // Value - Information about connection monitors. + Value *[]ConnectionMonitorResult `json:"value,omitempty"` +} + +// ConnectionMonitorParameters parameters that define the operation to create a connection monitor. +type ConnectionMonitorParameters struct { + // Source - Describes the source of connection monitor. + Source *ConnectionMonitorSource `json:"source,omitempty"` + // Destination - Describes the destination of connection monitor. + Destination *ConnectionMonitorDestination `json:"destination,omitempty"` + // AutoStart - Determines if the connection monitor will start automatically once created. + AutoStart *bool `json:"autoStart,omitempty"` + // MonitoringIntervalInSeconds - Monitoring interval in seconds. + MonitoringIntervalInSeconds *int32 `json:"monitoringIntervalInSeconds,omitempty"` +} + +// ConnectionMonitorQueryResult list of connection states snapshots. +type ConnectionMonitorQueryResult struct { + autorest.Response `json:"-"` + // SourceStatus - Status of connection monitor source. Possible values include: 'ConnectionMonitorSourceStatusUnknown', 'ConnectionMonitorSourceStatusActive', 'ConnectionMonitorSourceStatusInactive' + SourceStatus ConnectionMonitorSourceStatus `json:"sourceStatus,omitempty"` + // States - Information about connection states. + States *[]ConnectionStateSnapshot `json:"states,omitempty"` +} + +// ConnectionMonitorResult information about the connection monitor. +type ConnectionMonitorResult struct { + autorest.Response `json:"-"` + // Name - READ-ONLY; Name of the connection monitor. + Name *string `json:"name,omitempty"` + // ID - READ-ONLY; ID of the connection monitor. + ID *string `json:"id,omitempty"` + // Etag - A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Connection monitor type. + Type *string `json:"type,omitempty"` + // Location - Connection monitor location. + Location *string `json:"location,omitempty"` + // Tags - Connection monitor tags. + Tags map[string]*string `json:"tags"` + // ConnectionMonitorResultProperties - Properties of the connection monitor result. + *ConnectionMonitorResultProperties `json:"properties,omitempty"` +} + +// MarshalJSON is the custom marshaler for ConnectionMonitorResult. +func (cmr ConnectionMonitorResult) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if cmr.Etag != nil { + objectMap["etag"] = cmr.Etag + } + if cmr.Location != nil { + objectMap["location"] = cmr.Location + } + if cmr.Tags != nil { + objectMap["tags"] = cmr.Tags + } + if cmr.ConnectionMonitorResultProperties != nil { + objectMap["properties"] = cmr.ConnectionMonitorResultProperties + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ConnectionMonitorResult struct. +func (cmr *ConnectionMonitorResult) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + cmr.Name = &name + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + cmr.ID = &ID + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + cmr.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + cmr.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + cmr.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + cmr.Tags = tags + } + case "properties": + if v != nil { + var connectionMonitorResultProperties ConnectionMonitorResultProperties + err = json.Unmarshal(*v, &connectionMonitorResultProperties) + if err != nil { + return err + } + cmr.ConnectionMonitorResultProperties = &connectionMonitorResultProperties + } + } + } + + return nil +} + +// ConnectionMonitorResultProperties describes the properties of a connection monitor. +type ConnectionMonitorResultProperties struct { + // ProvisioningState - The provisioning state of the connection monitor. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // StartTime - The date and time when the connection monitor was started. + StartTime *date.Time `json:"startTime,omitempty"` + // MonitoringStatus - The monitoring status of the connection monitor. + MonitoringStatus *string `json:"monitoringStatus,omitempty"` + // Source - Describes the source of connection monitor. + Source *ConnectionMonitorSource `json:"source,omitempty"` + // Destination - Describes the destination of connection monitor. + Destination *ConnectionMonitorDestination `json:"destination,omitempty"` + // AutoStart - Determines if the connection monitor will start automatically once created. + AutoStart *bool `json:"autoStart,omitempty"` + // MonitoringIntervalInSeconds - Monitoring interval in seconds. + MonitoringIntervalInSeconds *int32 `json:"monitoringIntervalInSeconds,omitempty"` +} + +// ConnectionMonitorsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type ConnectionMonitorsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ConnectionMonitorsCreateOrUpdateFuture) Result(client ConnectionMonitorsClient) (cmr ConnectionMonitorResult, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ConnectionMonitorsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if cmr.Response.Response, err = future.GetResult(sender); err == nil && cmr.Response.Response.StatusCode != http.StatusNoContent { + cmr, err = client.CreateOrUpdateResponder(cmr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsCreateOrUpdateFuture", "Result", cmr.Response.Response, "Failure responding to request") + } + } + return +} + +// ConnectionMonitorsDeleteFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type ConnectionMonitorsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ConnectionMonitorsDeleteFuture) Result(client ConnectionMonitorsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ConnectionMonitorsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// ConnectionMonitorSource describes the source of connection monitor. +type ConnectionMonitorSource struct { + // ResourceID - The ID of the resource used as the source by connection monitor. + ResourceID *string `json:"resourceId,omitempty"` + // Port - The source port used by connection monitor. + Port *int32 `json:"port,omitempty"` +} + +// ConnectionMonitorsQueryFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type ConnectionMonitorsQueryFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ConnectionMonitorsQueryFuture) Result(client ConnectionMonitorsClient) (cmqr ConnectionMonitorQueryResult, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsQueryFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ConnectionMonitorsQueryFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if cmqr.Response.Response, err = future.GetResult(sender); err == nil && cmqr.Response.Response.StatusCode != http.StatusNoContent { + cmqr, err = client.QueryResponder(cmqr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsQueryFuture", "Result", cmqr.Response.Response, "Failure responding to request") + } + } + return +} + +// ConnectionMonitorsStartFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type ConnectionMonitorsStartFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ConnectionMonitorsStartFuture) Result(client ConnectionMonitorsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsStartFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ConnectionMonitorsStartFuture") + return + } + ar.Response = future.Response() + return +} + +// ConnectionMonitorsStopFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type ConnectionMonitorsStopFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ConnectionMonitorsStopFuture) Result(client ConnectionMonitorsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ConnectionMonitorsStopFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ConnectionMonitorsStopFuture") + return + } + ar.Response = future.Response() + return +} + +// ConnectionResetSharedKey the virtual network connection reset shared key. +type ConnectionResetSharedKey struct { + autorest.Response `json:"-"` + // KeyLength - The virtual network connection reset shared key length, should between 1 and 128. + KeyLength *int32 `json:"keyLength,omitempty"` +} + +// ConnectionSharedKey response for GetConnectionSharedKey API service call. +type ConnectionSharedKey struct { + autorest.Response `json:"-"` + // Value - The virtual network connection shared key value. + Value *string `json:"value,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// ConnectionStateSnapshot connection state snapshot. +type ConnectionStateSnapshot struct { + // ConnectionState - The connection state. Possible values include: 'ConnectionStateReachable', 'ConnectionStateUnreachable', 'ConnectionStateUnknown' + ConnectionState ConnectionState `json:"connectionState,omitempty"` + // StartTime - The start time of the connection snapshot. + StartTime *date.Time `json:"startTime,omitempty"` + // EndTime - The end time of the connection snapshot. + EndTime *date.Time `json:"endTime,omitempty"` + // EvaluationState - Connectivity analysis evaluation state. Possible values include: 'NotStarted', 'InProgress', 'Completed' + EvaluationState EvaluationState `json:"evaluationState,omitempty"` + // AvgLatencyInMs - Average latency in ms. + AvgLatencyInMs *int32 `json:"avgLatencyInMs,omitempty"` + // MinLatencyInMs - Minimum latency in ms. + MinLatencyInMs *int32 `json:"minLatencyInMs,omitempty"` + // MaxLatencyInMs - Maximum latency in ms. + MaxLatencyInMs *int32 `json:"maxLatencyInMs,omitempty"` + // ProbesSent - The number of sent probes. + ProbesSent *int32 `json:"probesSent,omitempty"` + // ProbesFailed - The number of failed probes. + ProbesFailed *int32 `json:"probesFailed,omitempty"` + // Hops - READ-ONLY; List of hops between the source and the destination. + Hops *[]ConnectivityHop `json:"hops,omitempty"` +} + +// ConnectivityDestination parameters that define destination of connection. +type ConnectivityDestination struct { + // ResourceID - The ID of the resource to which a connection attempt will be made. + ResourceID *string `json:"resourceId,omitempty"` + // Address - The IP address or URI the resource to which a connection attempt will be made. + Address *string `json:"address,omitempty"` + // Port - Port on which check connectivity will be performed. + Port *int32 `json:"port,omitempty"` +} + +// ConnectivityHop information about a hop between the source and the destination. +type ConnectivityHop struct { + // Type - READ-ONLY; The type of the hop. + Type *string `json:"type,omitempty"` + // ID - READ-ONLY; The ID of the hop. + ID *string `json:"id,omitempty"` + // Address - READ-ONLY; The IP address of the hop. + Address *string `json:"address,omitempty"` + // ResourceID - READ-ONLY; The ID of the resource corresponding to this hop. + ResourceID *string `json:"resourceId,omitempty"` + // NextHopIds - READ-ONLY; List of next hop identifiers. + NextHopIds *[]string `json:"nextHopIds,omitempty"` + // Issues - READ-ONLY; List of issues. + Issues *[]ConnectivityIssue `json:"issues,omitempty"` +} + +// ConnectivityInformation information on the connectivity status. +type ConnectivityInformation struct { + autorest.Response `json:"-"` + // Hops - READ-ONLY; List of hops between the source and the destination. + Hops *[]ConnectivityHop `json:"hops,omitempty"` + // ConnectionStatus - READ-ONLY; The connection status. Possible values include: 'ConnectionStatusUnknown', 'ConnectionStatusConnected', 'ConnectionStatusDisconnected', 'ConnectionStatusDegraded' + ConnectionStatus ConnectionStatus `json:"connectionStatus,omitempty"` + // AvgLatencyInMs - READ-ONLY; Average latency in milliseconds. + AvgLatencyInMs *int32 `json:"avgLatencyInMs,omitempty"` + // MinLatencyInMs - READ-ONLY; Minimum latency in milliseconds. + MinLatencyInMs *int32 `json:"minLatencyInMs,omitempty"` + // MaxLatencyInMs - READ-ONLY; Maximum latency in milliseconds. + MaxLatencyInMs *int32 `json:"maxLatencyInMs,omitempty"` + // ProbesSent - READ-ONLY; Total number of probes sent. + ProbesSent *int32 `json:"probesSent,omitempty"` + // ProbesFailed - READ-ONLY; Number of failed probes. + ProbesFailed *int32 `json:"probesFailed,omitempty"` +} + +// ConnectivityIssue information about an issue encountered in the process of checking for connectivity. +type ConnectivityIssue struct { + // Origin - READ-ONLY; The origin of the issue. Possible values include: 'OriginLocal', 'OriginInbound', 'OriginOutbound' + Origin Origin `json:"origin,omitempty"` + // Severity - READ-ONLY; The severity of the issue. Possible values include: 'SeverityError', 'SeverityWarning' + Severity Severity `json:"severity,omitempty"` + // Type - READ-ONLY; The type of issue. Possible values include: 'IssueTypeUnknown', 'IssueTypeAgentStopped', 'IssueTypeGuestFirewall', 'IssueTypeDNSResolution', 'IssueTypeSocketBind', 'IssueTypeNetworkSecurityRule', 'IssueTypeUserDefinedRoute', 'IssueTypePortThrottled', 'IssueTypePlatform' + Type IssueType `json:"type,omitempty"` + // Context - READ-ONLY; Provides additional context on the issue. + Context *[]map[string]*string `json:"context,omitempty"` +} + +// ConnectivityParameters parameters that determine how the connectivity check will be performed. +type ConnectivityParameters struct { + // Source - Describes the source of the connection. + Source *ConnectivitySource `json:"source,omitempty"` + // Destination - Describes the destination of connection. + Destination *ConnectivityDestination `json:"destination,omitempty"` + // Protocol - Network protocol. Possible values include: 'ProtocolTCP', 'ProtocolHTTP', 'ProtocolHTTPS', 'ProtocolIcmp' + Protocol Protocol `json:"protocol,omitempty"` + // ProtocolConfiguration - Configuration of the protocol. + ProtocolConfiguration *ProtocolConfiguration `json:"protocolConfiguration,omitempty"` + // PreferredIPVersion - Preferred IP version of the connection. Possible values include: 'IPv4', 'IPv6' + PreferredIPVersion IPVersion `json:"preferredIPVersion,omitempty"` +} + +// ConnectivitySource parameters that define the source of the connection. +type ConnectivitySource struct { + // ResourceID - The ID of the resource from which a connectivity check will be initiated. + ResourceID *string `json:"resourceId,omitempty"` + // Port - The source port from which a connectivity check will be performed. + Port *int32 `json:"port,omitempty"` +} + +// Container reference to container resource in remote resource provider. +type Container struct { + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// ContainerNetworkInterface container network interface child resource. +type ContainerNetworkInterface struct { + // ContainerNetworkInterfacePropertiesFormat - Container network interface properties. + *ContainerNetworkInterfacePropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Sub Resource type. + Type *string `json:"type,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ContainerNetworkInterface. +func (cni ContainerNetworkInterface) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if cni.ContainerNetworkInterfacePropertiesFormat != nil { + objectMap["properties"] = cni.ContainerNetworkInterfacePropertiesFormat + } + if cni.Name != nil { + objectMap["name"] = cni.Name + } + if cni.ID != nil { + objectMap["id"] = cni.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ContainerNetworkInterface struct. +func (cni *ContainerNetworkInterface) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var containerNetworkInterfacePropertiesFormat ContainerNetworkInterfacePropertiesFormat + err = json.Unmarshal(*v, &containerNetworkInterfacePropertiesFormat) + if err != nil { + return err + } + cni.ContainerNetworkInterfacePropertiesFormat = &containerNetworkInterfacePropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + cni.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + cni.Type = &typeVar + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + cni.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + cni.ID = &ID + } + } + } + + return nil +} + +// ContainerNetworkInterfaceConfiguration container network interface configuration child resource. +type ContainerNetworkInterfaceConfiguration struct { + // ContainerNetworkInterfaceConfigurationPropertiesFormat - Container network interface configuration properties. + *ContainerNetworkInterfaceConfigurationPropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Sub Resource type. + Type *string `json:"type,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ContainerNetworkInterfaceConfiguration. +func (cnic ContainerNetworkInterfaceConfiguration) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if cnic.ContainerNetworkInterfaceConfigurationPropertiesFormat != nil { + objectMap["properties"] = cnic.ContainerNetworkInterfaceConfigurationPropertiesFormat + } + if cnic.Name != nil { + objectMap["name"] = cnic.Name + } + if cnic.ID != nil { + objectMap["id"] = cnic.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ContainerNetworkInterfaceConfiguration struct. +func (cnic *ContainerNetworkInterfaceConfiguration) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var containerNetworkInterfaceConfigurationPropertiesFormat ContainerNetworkInterfaceConfigurationPropertiesFormat + err = json.Unmarshal(*v, &containerNetworkInterfaceConfigurationPropertiesFormat) + if err != nil { + return err + } + cnic.ContainerNetworkInterfaceConfigurationPropertiesFormat = &containerNetworkInterfaceConfigurationPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + cnic.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + cnic.Type = &typeVar + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + cnic.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + cnic.ID = &ID + } + } + } + + return nil +} + +// ContainerNetworkInterfaceConfigurationPropertiesFormat container network interface configuration +// properties. +type ContainerNetworkInterfaceConfigurationPropertiesFormat struct { + // IPConfigurations - A list of ip configurations of the container network interface configuration. + IPConfigurations *[]IPConfigurationProfile `json:"ipConfigurations,omitempty"` + // ContainerNetworkInterfaces - A list of container network interfaces created from this container network interface configuration. + ContainerNetworkInterfaces *[]SubResource `json:"containerNetworkInterfaces,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the container network interface configuration resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// ContainerNetworkInterfaceIPConfiguration the ip configuration for a container network interface. +type ContainerNetworkInterfaceIPConfiguration struct { + // ContainerNetworkInterfaceIPConfigurationPropertiesFormat - Properties of the container network interface IP configuration. + *ContainerNetworkInterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Sub Resource type. + Type *string `json:"type,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` +} + +// MarshalJSON is the custom marshaler for ContainerNetworkInterfaceIPConfiguration. +func (cniic ContainerNetworkInterfaceIPConfiguration) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if cniic.ContainerNetworkInterfaceIPConfigurationPropertiesFormat != nil { + objectMap["properties"] = cniic.ContainerNetworkInterfaceIPConfigurationPropertiesFormat + } + if cniic.Name != nil { + objectMap["name"] = cniic.Name + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ContainerNetworkInterfaceIPConfiguration struct. +func (cniic *ContainerNetworkInterfaceIPConfiguration) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var containerNetworkInterfaceIPConfigurationPropertiesFormat ContainerNetworkInterfaceIPConfigurationPropertiesFormat + err = json.Unmarshal(*v, &containerNetworkInterfaceIPConfigurationPropertiesFormat) + if err != nil { + return err + } + cniic.ContainerNetworkInterfaceIPConfigurationPropertiesFormat = &containerNetworkInterfaceIPConfigurationPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + cniic.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + cniic.Type = &typeVar + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + cniic.Etag = &etag + } + } + } + + return nil +} + +// ContainerNetworkInterfaceIPConfigurationPropertiesFormat properties of the container network interface +// IP configuration. +type ContainerNetworkInterfaceIPConfigurationPropertiesFormat struct { + // ProvisioningState - READ-ONLY; The provisioning state of the container network interface IP configuration resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// ContainerNetworkInterfacePropertiesFormat properties of container network interface. +type ContainerNetworkInterfacePropertiesFormat struct { + // ContainerNetworkInterfaceConfiguration - READ-ONLY; Container network interface configuration from which this container network interface is created. + ContainerNetworkInterfaceConfiguration *ContainerNetworkInterfaceConfiguration `json:"containerNetworkInterfaceConfiguration,omitempty"` + // Container - Reference to the container to which this container network interface is attached. + Container *Container `json:"container,omitempty"` + // IPConfigurations - READ-ONLY; Reference to the ip configuration on this container nic. + IPConfigurations *[]ContainerNetworkInterfaceIPConfiguration `json:"ipConfigurations,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the container network interface resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// DdosCustomPoliciesCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type DdosCustomPoliciesCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *DdosCustomPoliciesCreateOrUpdateFuture) Result(client DdosCustomPoliciesClient) (dcp DdosCustomPolicy, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosCustomPoliciesCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.DdosCustomPoliciesCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if dcp.Response.Response, err = future.GetResult(sender); err == nil && dcp.Response.Response.StatusCode != http.StatusNoContent { + dcp, err = client.CreateOrUpdateResponder(dcp.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosCustomPoliciesCreateOrUpdateFuture", "Result", dcp.Response.Response, "Failure responding to request") + } + } + return +} + +// DdosCustomPoliciesDeleteFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type DdosCustomPoliciesDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *DdosCustomPoliciesDeleteFuture) Result(client DdosCustomPoliciesClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosCustomPoliciesDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.DdosCustomPoliciesDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// DdosCustomPolicy a DDoS custom policy in a resource group. +type DdosCustomPolicy struct { + autorest.Response `json:"-"` + // DdosCustomPolicyPropertiesFormat - Properties of the DDoS custom policy. + *DdosCustomPolicyPropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for DdosCustomPolicy. +func (dcp DdosCustomPolicy) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if dcp.DdosCustomPolicyPropertiesFormat != nil { + objectMap["properties"] = dcp.DdosCustomPolicyPropertiesFormat + } + if dcp.ID != nil { + objectMap["id"] = dcp.ID + } + if dcp.Location != nil { + objectMap["location"] = dcp.Location + } + if dcp.Tags != nil { + objectMap["tags"] = dcp.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for DdosCustomPolicy struct. +func (dcp *DdosCustomPolicy) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var ddosCustomPolicyPropertiesFormat DdosCustomPolicyPropertiesFormat + err = json.Unmarshal(*v, &ddosCustomPolicyPropertiesFormat) + if err != nil { + return err + } + dcp.DdosCustomPolicyPropertiesFormat = &ddosCustomPolicyPropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + dcp.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + dcp.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + dcp.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + dcp.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + dcp.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + dcp.Tags = tags + } + } + } + + return nil +} + +// DdosCustomPolicyPropertiesFormat dDoS custom policy properties. +type DdosCustomPolicyPropertiesFormat struct { + // ResourceGUID - READ-ONLY; The resource GUID property of the DDoS custom policy resource. It uniquely identifies the resource, even if the user changes its name or migrate the resource across subscriptions or resource groups. + ResourceGUID *string `json:"resourceGuid,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the DDoS custom policy resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // PublicIPAddresses - READ-ONLY; The list of public IPs associated with the DDoS custom policy resource. This list is read-only. + PublicIPAddresses *[]SubResource `json:"publicIPAddresses,omitempty"` + // ProtocolCustomSettings - The protocol-specific DDoS policy customization parameters. + ProtocolCustomSettings *[]ProtocolCustomSettingsFormat `json:"protocolCustomSettings,omitempty"` +} + +// DdosProtectionPlan a DDoS protection plan in a resource group. +type DdosProtectionPlan struct { + autorest.Response `json:"-"` + // ID - READ-ONLY; Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` + // DdosProtectionPlanPropertiesFormat - Properties of the DDoS protection plan. + *DdosProtectionPlanPropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` +} + +// MarshalJSON is the custom marshaler for DdosProtectionPlan. +func (dpp DdosProtectionPlan) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if dpp.Location != nil { + objectMap["location"] = dpp.Location + } + if dpp.Tags != nil { + objectMap["tags"] = dpp.Tags + } + if dpp.DdosProtectionPlanPropertiesFormat != nil { + objectMap["properties"] = dpp.DdosProtectionPlanPropertiesFormat + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for DdosProtectionPlan struct. +func (dpp *DdosProtectionPlan) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + dpp.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + dpp.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + dpp.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + dpp.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + dpp.Tags = tags + } + case "properties": + if v != nil { + var ddosProtectionPlanPropertiesFormat DdosProtectionPlanPropertiesFormat + err = json.Unmarshal(*v, &ddosProtectionPlanPropertiesFormat) + if err != nil { + return err + } + dpp.DdosProtectionPlanPropertiesFormat = &ddosProtectionPlanPropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + dpp.Etag = &etag + } + } + } + + return nil +} + +// DdosProtectionPlanListResult a list of DDoS protection plans. +type DdosProtectionPlanListResult struct { + autorest.Response `json:"-"` + // Value - A list of DDoS protection plans. + Value *[]DdosProtectionPlan `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// DdosProtectionPlanListResultIterator provides access to a complete listing of DdosProtectionPlan values. +type DdosProtectionPlanListResultIterator struct { + i int + page DdosProtectionPlanListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *DdosProtectionPlanListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DdosProtectionPlanListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *DdosProtectionPlanListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter DdosProtectionPlanListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter DdosProtectionPlanListResultIterator) Response() DdosProtectionPlanListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter DdosProtectionPlanListResultIterator) Value() DdosProtectionPlan { + if !iter.page.NotDone() { + return DdosProtectionPlan{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the DdosProtectionPlanListResultIterator type. +func NewDdosProtectionPlanListResultIterator(page DdosProtectionPlanListResultPage) DdosProtectionPlanListResultIterator { + return DdosProtectionPlanListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (dpplr DdosProtectionPlanListResult) IsEmpty() bool { + return dpplr.Value == nil || len(*dpplr.Value) == 0 +} + +// ddosProtectionPlanListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (dpplr DdosProtectionPlanListResult) ddosProtectionPlanListResultPreparer(ctx context.Context) (*http.Request, error) { + if dpplr.NextLink == nil || len(to.String(dpplr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(dpplr.NextLink))) +} + +// DdosProtectionPlanListResultPage contains a page of DdosProtectionPlan values. +type DdosProtectionPlanListResultPage struct { + fn func(context.Context, DdosProtectionPlanListResult) (DdosProtectionPlanListResult, error) + dpplr DdosProtectionPlanListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *DdosProtectionPlanListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DdosProtectionPlanListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.dpplr) + if err != nil { + return err + } + page.dpplr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *DdosProtectionPlanListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page DdosProtectionPlanListResultPage) NotDone() bool { + return !page.dpplr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page DdosProtectionPlanListResultPage) Response() DdosProtectionPlanListResult { + return page.dpplr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page DdosProtectionPlanListResultPage) Values() []DdosProtectionPlan { + if page.dpplr.IsEmpty() { + return nil + } + return *page.dpplr.Value +} + +// Creates a new instance of the DdosProtectionPlanListResultPage type. +func NewDdosProtectionPlanListResultPage(getNextPage func(context.Context, DdosProtectionPlanListResult) (DdosProtectionPlanListResult, error)) DdosProtectionPlanListResultPage { + return DdosProtectionPlanListResultPage{fn: getNextPage} +} + +// DdosProtectionPlanPropertiesFormat dDoS protection plan properties. +type DdosProtectionPlanPropertiesFormat struct { + // ResourceGUID - READ-ONLY; The resource GUID property of the DDoS protection plan resource. It uniquely identifies the resource, even if the user changes its name or migrate the resource across subscriptions or resource groups. + ResourceGUID *string `json:"resourceGuid,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the DDoS protection plan resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // VirtualNetworks - READ-ONLY; The list of virtual networks associated with the DDoS protection plan resource. This list is read-only. + VirtualNetworks *[]SubResource `json:"virtualNetworks,omitempty"` +} + +// DdosProtectionPlansCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type DdosProtectionPlansCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *DdosProtectionPlansCreateOrUpdateFuture) Result(client DdosProtectionPlansClient) (dpp DdosProtectionPlan, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosProtectionPlansCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.DdosProtectionPlansCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if dpp.Response.Response, err = future.GetResult(sender); err == nil && dpp.Response.Response.StatusCode != http.StatusNoContent { + dpp, err = client.CreateOrUpdateResponder(dpp.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosProtectionPlansCreateOrUpdateFuture", "Result", dpp.Response.Response, "Failure responding to request") + } + } + return +} + +// DdosProtectionPlansDeleteFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type DdosProtectionPlansDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *DdosProtectionPlansDeleteFuture) Result(client DdosProtectionPlansClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DdosProtectionPlansDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.DdosProtectionPlansDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// DdosSettings contains the DDoS protection settings of the public IP. +type DdosSettings struct { + // DdosCustomPolicy - The DDoS custom policy associated with the public IP. + DdosCustomPolicy *SubResource `json:"ddosCustomPolicy,omitempty"` + // ProtectionCoverage - The DDoS protection policy customizability of the public IP. Only standard coverage will have the ability to be customized. Possible values include: 'DdosSettingsProtectionCoverageBasic', 'DdosSettingsProtectionCoverageStandard' + ProtectionCoverage DdosSettingsProtectionCoverage `json:"protectionCoverage,omitempty"` +} + +// Delegation details the service to which the subnet is delegated. +type Delegation struct { + // ServiceDelegationPropertiesFormat - Properties of the subnet. + *ServiceDelegationPropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a subnet. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for Delegation. +func (d Delegation) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if d.ServiceDelegationPropertiesFormat != nil { + objectMap["properties"] = d.ServiceDelegationPropertiesFormat + } + if d.Name != nil { + objectMap["name"] = d.Name + } + if d.ID != nil { + objectMap["id"] = d.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for Delegation struct. +func (d *Delegation) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var serviceDelegationPropertiesFormat ServiceDelegationPropertiesFormat + err = json.Unmarshal(*v, &serviceDelegationPropertiesFormat) + if err != nil { + return err + } + d.ServiceDelegationPropertiesFormat = &serviceDelegationPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + d.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + d.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + d.ID = &ID + } + } + } + + return nil +} + +// DeleteBastionShareableLinkFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type DeleteBastionShareableLinkFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *DeleteBastionShareableLinkFuture) Result(client BaseClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.DeleteBastionShareableLinkFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.DeleteBastionShareableLinkFuture") + return + } + ar.Response = future.Response() + return +} + +// DeviceProperties list of properties of the device. +type DeviceProperties struct { + // DeviceVendor - Name of the device Vendor. + DeviceVendor *string `json:"deviceVendor,omitempty"` + // DeviceModel - Model of the device. + DeviceModel *string `json:"deviceModel,omitempty"` + // LinkSpeedInMbps - Link speed. + LinkSpeedInMbps *int32 `json:"linkSpeedInMbps,omitempty"` +} + +// DhcpOptions dhcpOptions contains an array of DNS servers available to VMs deployed in the virtual +// network. Standard DHCP option for a subnet overrides VNET DHCP options. +type DhcpOptions struct { + // DNSServers - The list of DNS servers IP addresses. + DNSServers *[]string `json:"dnsServers,omitempty"` +} + +// Dimension dimension of the metric. +type Dimension struct { + // Name - The name of the dimension. + Name *string `json:"name,omitempty"` + // DisplayName - The display name of the dimension. + DisplayName *string `json:"displayName,omitempty"` + // InternalName - The internal name of the dimension. + InternalName *string `json:"internalName,omitempty"` +} + +// DNSNameAvailabilityResult response for the CheckDnsNameAvailability API service call. +type DNSNameAvailabilityResult struct { + autorest.Response `json:"-"` + // Available - Domain availability (True/False). + Available *bool `json:"available,omitempty"` +} + +// EffectiveNetworkSecurityGroup effective network security group. +type EffectiveNetworkSecurityGroup struct { + // NetworkSecurityGroup - The ID of network security group that is applied. + NetworkSecurityGroup *SubResource `json:"networkSecurityGroup,omitempty"` + // Association - Associated resources. + Association *EffectiveNetworkSecurityGroupAssociation `json:"association,omitempty"` + // EffectiveSecurityRules - A collection of effective security rules. + EffectiveSecurityRules *[]EffectiveNetworkSecurityRule `json:"effectiveSecurityRules,omitempty"` + // TagMap - Mapping of tags to list of IP Addresses included within the tag. + TagMap map[string][]string `json:"tagMap"` +} + +// MarshalJSON is the custom marshaler for EffectiveNetworkSecurityGroup. +func (ensg EffectiveNetworkSecurityGroup) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if ensg.NetworkSecurityGroup != nil { + objectMap["networkSecurityGroup"] = ensg.NetworkSecurityGroup + } + if ensg.Association != nil { + objectMap["association"] = ensg.Association + } + if ensg.EffectiveSecurityRules != nil { + objectMap["effectiveSecurityRules"] = ensg.EffectiveSecurityRules + } + if ensg.TagMap != nil { + objectMap["tagMap"] = ensg.TagMap + } + return json.Marshal(objectMap) +} + +// EffectiveNetworkSecurityGroupAssociation the effective network security group association. +type EffectiveNetworkSecurityGroupAssociation struct { + // Subnet - The ID of the subnet if assigned. + Subnet *SubResource `json:"subnet,omitempty"` + // NetworkInterface - The ID of the network interface if assigned. + NetworkInterface *SubResource `json:"networkInterface,omitempty"` +} + +// EffectiveNetworkSecurityGroupListResult response for list effective network security groups API service +// call. +type EffectiveNetworkSecurityGroupListResult struct { + autorest.Response `json:"-"` + // Value - A list of effective network security groups. + Value *[]EffectiveNetworkSecurityGroup `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// EffectiveNetworkSecurityRule effective network security rules. +type EffectiveNetworkSecurityRule struct { + // Name - The name of the security rule specified by the user (if created by the user). + Name *string `json:"name,omitempty"` + // Protocol - The network protocol this rule applies to. Possible values include: 'EffectiveSecurityRuleProtocolTCP', 'EffectiveSecurityRuleProtocolUDP', 'EffectiveSecurityRuleProtocolAll' + Protocol EffectiveSecurityRuleProtocol `json:"protocol,omitempty"` + // SourcePortRange - The source port or range. + SourcePortRange *string `json:"sourcePortRange,omitempty"` + // DestinationPortRange - The destination port or range. + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + // SourcePortRanges - The source port ranges. Expected values include a single integer between 0 and 65535, a range using '-' as separator (e.g. 100-400), or an asterisk (*). + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` + // DestinationPortRanges - The destination port ranges. Expected values include a single integer between 0 and 65535, a range using '-' as separator (e.g. 100-400), or an asterisk (*). + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + // SourceAddressPrefix - The source address prefix. + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + // DestinationAddressPrefix - The destination address prefix. + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + // SourceAddressPrefixes - The source address prefixes. Expected values include CIDR IP ranges, Default Tags (VirtualNetwork, AzureLoadBalancer, Internet), System Tags, and the asterisk (*). + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + // DestinationAddressPrefixes - The destination address prefixes. Expected values include CIDR IP ranges, Default Tags (VirtualNetwork, AzureLoadBalancer, Internet), System Tags, and the asterisk (*). + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + // ExpandedSourceAddressPrefix - The expanded source address prefix. + ExpandedSourceAddressPrefix *[]string `json:"expandedSourceAddressPrefix,omitempty"` + // ExpandedDestinationAddressPrefix - Expanded destination address prefix. + ExpandedDestinationAddressPrefix *[]string `json:"expandedDestinationAddressPrefix,omitempty"` + // Access - Whether network traffic is allowed or denied. Possible values include: 'SecurityRuleAccessAllow', 'SecurityRuleAccessDeny' + Access SecurityRuleAccess `json:"access,omitempty"` + // Priority - The priority of the rule. + Priority *int32 `json:"priority,omitempty"` + // Direction - The direction of the rule. Possible values include: 'SecurityRuleDirectionInbound', 'SecurityRuleDirectionOutbound' + Direction SecurityRuleDirection `json:"direction,omitempty"` +} + +// EffectiveRoute effective Route. +type EffectiveRoute struct { + // Name - The name of the user defined route. This is optional. + Name *string `json:"name,omitempty"` + // DisableBgpRoutePropagation - If true, on-premises routes are not propagated to the network interfaces in the subnet. + DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"` + // Source - Who created the route. Possible values include: 'EffectiveRouteSourceUnknown', 'EffectiveRouteSourceUser', 'EffectiveRouteSourceVirtualNetworkGateway', 'EffectiveRouteSourceDefault' + Source EffectiveRouteSource `json:"source,omitempty"` + // State - The value of effective route. Possible values include: 'Active', 'Invalid' + State EffectiveRouteState `json:"state,omitempty"` + // AddressPrefix - The address prefixes of the effective routes in CIDR notation. + AddressPrefix *[]string `json:"addressPrefix,omitempty"` + // NextHopIPAddress - The IP address of the next hop of the effective route. + NextHopIPAddress *[]string `json:"nextHopIpAddress,omitempty"` + // NextHopType - The type of Azure hop the packet should be sent to. Possible values include: 'RouteNextHopTypeVirtualNetworkGateway', 'RouteNextHopTypeVnetLocal', 'RouteNextHopTypeInternet', 'RouteNextHopTypeVirtualAppliance', 'RouteNextHopTypeNone' + NextHopType RouteNextHopType `json:"nextHopType,omitempty"` +} + +// EffectiveRouteListResult response for list effective route API service call. +type EffectiveRouteListResult struct { + autorest.Response `json:"-"` + // Value - A list of effective routes. + Value *[]EffectiveRoute `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// EndpointServiceResult endpoint service. +type EndpointServiceResult struct { + // Name - READ-ONLY; Name of the endpoint service. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Type of the endpoint service. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// EndpointServicesListResult response for the ListAvailableEndpointServices API service call. +type EndpointServicesListResult struct { + autorest.Response `json:"-"` + // Value - List of available endpoint services in a region. + Value *[]EndpointServiceResult `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// EndpointServicesListResultIterator provides access to a complete listing of EndpointServiceResult +// values. +type EndpointServicesListResultIterator struct { + i int + page EndpointServicesListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *EndpointServicesListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/EndpointServicesListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *EndpointServicesListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter EndpointServicesListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter EndpointServicesListResultIterator) Response() EndpointServicesListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter EndpointServicesListResultIterator) Value() EndpointServiceResult { + if !iter.page.NotDone() { + return EndpointServiceResult{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the EndpointServicesListResultIterator type. +func NewEndpointServicesListResultIterator(page EndpointServicesListResultPage) EndpointServicesListResultIterator { + return EndpointServicesListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (eslr EndpointServicesListResult) IsEmpty() bool { + return eslr.Value == nil || len(*eslr.Value) == 0 +} + +// endpointServicesListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (eslr EndpointServicesListResult) endpointServicesListResultPreparer(ctx context.Context) (*http.Request, error) { + if eslr.NextLink == nil || len(to.String(eslr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(eslr.NextLink))) +} + +// EndpointServicesListResultPage contains a page of EndpointServiceResult values. +type EndpointServicesListResultPage struct { + fn func(context.Context, EndpointServicesListResult) (EndpointServicesListResult, error) + eslr EndpointServicesListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *EndpointServicesListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/EndpointServicesListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.eslr) + if err != nil { + return err + } + page.eslr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *EndpointServicesListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page EndpointServicesListResultPage) NotDone() bool { + return !page.eslr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page EndpointServicesListResultPage) Response() EndpointServicesListResult { + return page.eslr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page EndpointServicesListResultPage) Values() []EndpointServiceResult { + if page.eslr.IsEmpty() { + return nil + } + return *page.eslr.Value +} + +// Creates a new instance of the EndpointServicesListResultPage type. +func NewEndpointServicesListResultPage(getNextPage func(context.Context, EndpointServicesListResult) (EndpointServicesListResult, error)) EndpointServicesListResultPage { + return EndpointServicesListResultPage{fn: getNextPage} +} + +// Error common error representation. +type Error struct { + // Code - Error code. + Code *string `json:"code,omitempty"` + // Message - Error message. + Message *string `json:"message,omitempty"` + // Target - Error target. + Target *string `json:"target,omitempty"` + // Details - Error details. + Details *[]ErrorDetails `json:"details,omitempty"` + // InnerError - Inner error message. + InnerError *string `json:"innerError,omitempty"` +} + +// ErrorDetails common error details representation. +type ErrorDetails struct { + // Code - Error code. + Code *string `json:"code,omitempty"` + // Target - Error target. + Target *string `json:"target,omitempty"` + // Message - Error message. + Message *string `json:"message,omitempty"` +} + +// ErrorResponse the error object. +type ErrorResponse struct { + // Error - The error details object. + Error *ErrorDetails `json:"error,omitempty"` +} + +// EvaluatedNetworkSecurityGroup results of network security group evaluation. +type EvaluatedNetworkSecurityGroup struct { + // NetworkSecurityGroupID - Network security group ID. + NetworkSecurityGroupID *string `json:"networkSecurityGroupId,omitempty"` + // AppliedTo - Resource ID of nic or subnet to which network security group is applied. + AppliedTo *string `json:"appliedTo,omitempty"` + // MatchedRule - Matched network security rule. + MatchedRule *MatchedRule `json:"matchedRule,omitempty"` + // RulesEvaluationResult - READ-ONLY; List of network security rules evaluation results. + RulesEvaluationResult *[]SecurityRulesEvaluationResult `json:"rulesEvaluationResult,omitempty"` +} + +// ExpressRouteCircuit expressRouteCircuit resource. +type ExpressRouteCircuit struct { + autorest.Response `json:"-"` + // Sku - The SKU. + Sku *ExpressRouteCircuitSku `json:"sku,omitempty"` + // ExpressRouteCircuitPropertiesFormat - Properties of the express route circuit. + *ExpressRouteCircuitPropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for ExpressRouteCircuit. +func (erc ExpressRouteCircuit) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if erc.Sku != nil { + objectMap["sku"] = erc.Sku + } + if erc.ExpressRouteCircuitPropertiesFormat != nil { + objectMap["properties"] = erc.ExpressRouteCircuitPropertiesFormat + } + if erc.ID != nil { + objectMap["id"] = erc.ID + } + if erc.Location != nil { + objectMap["location"] = erc.Location + } + if erc.Tags != nil { + objectMap["tags"] = erc.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ExpressRouteCircuit struct. +func (erc *ExpressRouteCircuit) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "sku": + if v != nil { + var sku ExpressRouteCircuitSku + err = json.Unmarshal(*v, &sku) + if err != nil { + return err + } + erc.Sku = &sku + } + case "properties": + if v != nil { + var expressRouteCircuitPropertiesFormat ExpressRouteCircuitPropertiesFormat + err = json.Unmarshal(*v, &expressRouteCircuitPropertiesFormat) + if err != nil { + return err + } + erc.ExpressRouteCircuitPropertiesFormat = &expressRouteCircuitPropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + erc.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + erc.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + erc.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + erc.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + erc.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + erc.Tags = tags + } + } + } + + return nil +} + +// ExpressRouteCircuitArpTable the ARP table associated with the ExpressRouteCircuit. +type ExpressRouteCircuitArpTable struct { + // Age - Entry age in minutes. + Age *int32 `json:"age,omitempty"` + // Interface - Interface address. + Interface *string `json:"interface,omitempty"` + // IPAddress - The IP address. + IPAddress *string `json:"ipAddress,omitempty"` + // MacAddress - The MAC address. + MacAddress *string `json:"macAddress,omitempty"` +} + +// ExpressRouteCircuitAuthorization authorization in an ExpressRouteCircuit resource. +type ExpressRouteCircuitAuthorization struct { + autorest.Response `json:"-"` + // AuthorizationPropertiesFormat - Properties of the express route circuit authorization. + *AuthorizationPropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Type of the resource. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ExpressRouteCircuitAuthorization. +func (erca ExpressRouteCircuitAuthorization) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if erca.AuthorizationPropertiesFormat != nil { + objectMap["properties"] = erca.AuthorizationPropertiesFormat + } + if erca.Name != nil { + objectMap["name"] = erca.Name + } + if erca.ID != nil { + objectMap["id"] = erca.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ExpressRouteCircuitAuthorization struct. +func (erca *ExpressRouteCircuitAuthorization) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var authorizationPropertiesFormat AuthorizationPropertiesFormat + err = json.Unmarshal(*v, &authorizationPropertiesFormat) + if err != nil { + return err + } + erca.AuthorizationPropertiesFormat = &authorizationPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + erca.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + erca.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + erca.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + erca.ID = &ID + } + } + } + + return nil +} + +// ExpressRouteCircuitAuthorizationsCreateOrUpdateFuture an abstraction for monitoring and retrieving the +// results of a long-running operation. +type ExpressRouteCircuitAuthorizationsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ExpressRouteCircuitAuthorizationsCreateOrUpdateFuture) Result(client ExpressRouteCircuitAuthorizationsClient) (erca ExpressRouteCircuitAuthorization, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ExpressRouteCircuitAuthorizationsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if erca.Response.Response, err = future.GetResult(sender); err == nil && erca.Response.Response.StatusCode != http.StatusNoContent { + erca, err = client.CreateOrUpdateResponder(erca.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsCreateOrUpdateFuture", "Result", erca.Response.Response, "Failure responding to request") + } + } + return +} + +// ExpressRouteCircuitAuthorizationsDeleteFuture an abstraction for monitoring and retrieving the results +// of a long-running operation. +type ExpressRouteCircuitAuthorizationsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ExpressRouteCircuitAuthorizationsDeleteFuture) Result(client ExpressRouteCircuitAuthorizationsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ExpressRouteCircuitAuthorizationsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// ExpressRouteCircuitConnection express Route Circuit Connection in an ExpressRouteCircuitPeering +// resource. +type ExpressRouteCircuitConnection struct { + autorest.Response `json:"-"` + // ExpressRouteCircuitConnectionPropertiesFormat - Properties of the express route circuit connection. + *ExpressRouteCircuitConnectionPropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Type of the resource. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ExpressRouteCircuitConnection. +func (ercc ExpressRouteCircuitConnection) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if ercc.ExpressRouteCircuitConnectionPropertiesFormat != nil { + objectMap["properties"] = ercc.ExpressRouteCircuitConnectionPropertiesFormat + } + if ercc.Name != nil { + objectMap["name"] = ercc.Name + } + if ercc.ID != nil { + objectMap["id"] = ercc.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ExpressRouteCircuitConnection struct. +func (ercc *ExpressRouteCircuitConnection) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var expressRouteCircuitConnectionPropertiesFormat ExpressRouteCircuitConnectionPropertiesFormat + err = json.Unmarshal(*v, &expressRouteCircuitConnectionPropertiesFormat) + if err != nil { + return err + } + ercc.ExpressRouteCircuitConnectionPropertiesFormat = &expressRouteCircuitConnectionPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + ercc.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + ercc.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + ercc.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + ercc.ID = &ID + } + } + } + + return nil +} + +// ExpressRouteCircuitConnectionListResult response for ListConnections API service call retrieves all +// global reach connections that belongs to a Private Peering for an ExpressRouteCircuit. +type ExpressRouteCircuitConnectionListResult struct { + autorest.Response `json:"-"` + // Value - The global reach connection associated with Private Peering in an ExpressRoute Circuit. + Value *[]ExpressRouteCircuitConnection `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// ExpressRouteCircuitConnectionListResultIterator provides access to a complete listing of +// ExpressRouteCircuitConnection values. +type ExpressRouteCircuitConnectionListResultIterator struct { + i int + page ExpressRouteCircuitConnectionListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ExpressRouteCircuitConnectionListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitConnectionListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ExpressRouteCircuitConnectionListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ExpressRouteCircuitConnectionListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ExpressRouteCircuitConnectionListResultIterator) Response() ExpressRouteCircuitConnectionListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ExpressRouteCircuitConnectionListResultIterator) Value() ExpressRouteCircuitConnection { + if !iter.page.NotDone() { + return ExpressRouteCircuitConnection{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ExpressRouteCircuitConnectionListResultIterator type. +func NewExpressRouteCircuitConnectionListResultIterator(page ExpressRouteCircuitConnectionListResultPage) ExpressRouteCircuitConnectionListResultIterator { + return ExpressRouteCircuitConnectionListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (ercclr ExpressRouteCircuitConnectionListResult) IsEmpty() bool { + return ercclr.Value == nil || len(*ercclr.Value) == 0 +} + +// expressRouteCircuitConnectionListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (ercclr ExpressRouteCircuitConnectionListResult) expressRouteCircuitConnectionListResultPreparer(ctx context.Context) (*http.Request, error) { + if ercclr.NextLink == nil || len(to.String(ercclr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(ercclr.NextLink))) +} + +// ExpressRouteCircuitConnectionListResultPage contains a page of ExpressRouteCircuitConnection values. +type ExpressRouteCircuitConnectionListResultPage struct { + fn func(context.Context, ExpressRouteCircuitConnectionListResult) (ExpressRouteCircuitConnectionListResult, error) + ercclr ExpressRouteCircuitConnectionListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ExpressRouteCircuitConnectionListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitConnectionListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.ercclr) + if err != nil { + return err + } + page.ercclr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ExpressRouteCircuitConnectionListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ExpressRouteCircuitConnectionListResultPage) NotDone() bool { + return !page.ercclr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ExpressRouteCircuitConnectionListResultPage) Response() ExpressRouteCircuitConnectionListResult { + return page.ercclr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ExpressRouteCircuitConnectionListResultPage) Values() []ExpressRouteCircuitConnection { + if page.ercclr.IsEmpty() { + return nil + } + return *page.ercclr.Value +} + +// Creates a new instance of the ExpressRouteCircuitConnectionListResultPage type. +func NewExpressRouteCircuitConnectionListResultPage(getNextPage func(context.Context, ExpressRouteCircuitConnectionListResult) (ExpressRouteCircuitConnectionListResult, error)) ExpressRouteCircuitConnectionListResultPage { + return ExpressRouteCircuitConnectionListResultPage{fn: getNextPage} +} + +// ExpressRouteCircuitConnectionPropertiesFormat properties of the express route circuit connection. +type ExpressRouteCircuitConnectionPropertiesFormat struct { + // ExpressRouteCircuitPeering - Reference to Express Route Circuit Private Peering Resource of the circuit initiating connection. + ExpressRouteCircuitPeering *SubResource `json:"expressRouteCircuitPeering,omitempty"` + // PeerExpressRouteCircuitPeering - Reference to Express Route Circuit Private Peering Resource of the peered circuit. + PeerExpressRouteCircuitPeering *SubResource `json:"peerExpressRouteCircuitPeering,omitempty"` + // AddressPrefix - /29 IP address space to carve out Customer addresses for tunnels. + AddressPrefix *string `json:"addressPrefix,omitempty"` + // AuthorizationKey - The authorization key. + AuthorizationKey *string `json:"authorizationKey,omitempty"` + // CircuitConnectionStatus - Express Route Circuit connection state. Possible values include: 'Connected', 'Connecting', 'Disconnected' + CircuitConnectionStatus CircuitConnectionStatus `json:"circuitConnectionStatus,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the express route circuit connection resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// ExpressRouteCircuitConnectionsCreateOrUpdateFuture an abstraction for monitoring and retrieving the +// results of a long-running operation. +type ExpressRouteCircuitConnectionsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ExpressRouteCircuitConnectionsCreateOrUpdateFuture) Result(client ExpressRouteCircuitConnectionsClient) (ercc ExpressRouteCircuitConnection, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitConnectionsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ExpressRouteCircuitConnectionsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if ercc.Response.Response, err = future.GetResult(sender); err == nil && ercc.Response.Response.StatusCode != http.StatusNoContent { + ercc, err = client.CreateOrUpdateResponder(ercc.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitConnectionsCreateOrUpdateFuture", "Result", ercc.Response.Response, "Failure responding to request") + } + } + return +} + +// ExpressRouteCircuitConnectionsDeleteFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type ExpressRouteCircuitConnectionsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ExpressRouteCircuitConnectionsDeleteFuture) Result(client ExpressRouteCircuitConnectionsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitConnectionsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ExpressRouteCircuitConnectionsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// ExpressRouteCircuitListResult response for ListExpressRouteCircuit API service call. +type ExpressRouteCircuitListResult struct { + autorest.Response `json:"-"` + // Value - A list of ExpressRouteCircuits in a resource group. + Value *[]ExpressRouteCircuit `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// ExpressRouteCircuitListResultIterator provides access to a complete listing of ExpressRouteCircuit +// values. +type ExpressRouteCircuitListResultIterator struct { + i int + page ExpressRouteCircuitListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ExpressRouteCircuitListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ExpressRouteCircuitListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ExpressRouteCircuitListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ExpressRouteCircuitListResultIterator) Response() ExpressRouteCircuitListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ExpressRouteCircuitListResultIterator) Value() ExpressRouteCircuit { + if !iter.page.NotDone() { + return ExpressRouteCircuit{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ExpressRouteCircuitListResultIterator type. +func NewExpressRouteCircuitListResultIterator(page ExpressRouteCircuitListResultPage) ExpressRouteCircuitListResultIterator { + return ExpressRouteCircuitListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (erclr ExpressRouteCircuitListResult) IsEmpty() bool { + return erclr.Value == nil || len(*erclr.Value) == 0 +} + +// expressRouteCircuitListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (erclr ExpressRouteCircuitListResult) expressRouteCircuitListResultPreparer(ctx context.Context) (*http.Request, error) { + if erclr.NextLink == nil || len(to.String(erclr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(erclr.NextLink))) +} + +// ExpressRouteCircuitListResultPage contains a page of ExpressRouteCircuit values. +type ExpressRouteCircuitListResultPage struct { + fn func(context.Context, ExpressRouteCircuitListResult) (ExpressRouteCircuitListResult, error) + erclr ExpressRouteCircuitListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ExpressRouteCircuitListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.erclr) + if err != nil { + return err + } + page.erclr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ExpressRouteCircuitListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ExpressRouteCircuitListResultPage) NotDone() bool { + return !page.erclr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ExpressRouteCircuitListResultPage) Response() ExpressRouteCircuitListResult { + return page.erclr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ExpressRouteCircuitListResultPage) Values() []ExpressRouteCircuit { + if page.erclr.IsEmpty() { + return nil + } + return *page.erclr.Value +} + +// Creates a new instance of the ExpressRouteCircuitListResultPage type. +func NewExpressRouteCircuitListResultPage(getNextPage func(context.Context, ExpressRouteCircuitListResult) (ExpressRouteCircuitListResult, error)) ExpressRouteCircuitListResultPage { + return ExpressRouteCircuitListResultPage{fn: getNextPage} +} + +// ExpressRouteCircuitPeering peering in an ExpressRouteCircuit resource. +type ExpressRouteCircuitPeering struct { + autorest.Response `json:"-"` + // ExpressRouteCircuitPeeringPropertiesFormat - Properties of the express route circuit peering. + *ExpressRouteCircuitPeeringPropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Type of the resource. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ExpressRouteCircuitPeering. +func (ercp ExpressRouteCircuitPeering) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if ercp.ExpressRouteCircuitPeeringPropertiesFormat != nil { + objectMap["properties"] = ercp.ExpressRouteCircuitPeeringPropertiesFormat + } + if ercp.Name != nil { + objectMap["name"] = ercp.Name + } + if ercp.ID != nil { + objectMap["id"] = ercp.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ExpressRouteCircuitPeering struct. +func (ercp *ExpressRouteCircuitPeering) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var expressRouteCircuitPeeringPropertiesFormat ExpressRouteCircuitPeeringPropertiesFormat + err = json.Unmarshal(*v, &expressRouteCircuitPeeringPropertiesFormat) + if err != nil { + return err + } + ercp.ExpressRouteCircuitPeeringPropertiesFormat = &expressRouteCircuitPeeringPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + ercp.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + ercp.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + ercp.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + ercp.ID = &ID + } + } + } + + return nil +} + +// ExpressRouteCircuitPeeringConfig specifies the peering configuration. +type ExpressRouteCircuitPeeringConfig struct { + // AdvertisedPublicPrefixes - The reference of AdvertisedPublicPrefixes. + AdvertisedPublicPrefixes *[]string `json:"advertisedPublicPrefixes,omitempty"` + // AdvertisedCommunities - The communities of bgp peering. Specified for microsoft peering. + AdvertisedCommunities *[]string `json:"advertisedCommunities,omitempty"` + // AdvertisedPublicPrefixesState - READ-ONLY; The advertised public prefix state of the Peering resource. Possible values include: 'NotConfigured', 'Configuring', 'Configured', 'ValidationNeeded' + AdvertisedPublicPrefixesState ExpressRouteCircuitPeeringAdvertisedPublicPrefixState `json:"advertisedPublicPrefixesState,omitempty"` + // LegacyMode - The legacy mode of the peering. + LegacyMode *int32 `json:"legacyMode,omitempty"` + // CustomerASN - The CustomerASN of the peering. + CustomerASN *int32 `json:"customerASN,omitempty"` + // RoutingRegistryName - The RoutingRegistryName of the configuration. + RoutingRegistryName *string `json:"routingRegistryName,omitempty"` +} + +// ExpressRouteCircuitPeeringID expressRoute circuit peering identifier. +type ExpressRouteCircuitPeeringID struct { + // ID - The ID of the ExpressRoute circuit peering. + ID *string `json:"id,omitempty"` +} + +// ExpressRouteCircuitPeeringListResult response for ListPeering API service call retrieves all peerings +// that belong to an ExpressRouteCircuit. +type ExpressRouteCircuitPeeringListResult struct { + autorest.Response `json:"-"` + // Value - The peerings in an express route circuit. + Value *[]ExpressRouteCircuitPeering `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// ExpressRouteCircuitPeeringListResultIterator provides access to a complete listing of +// ExpressRouteCircuitPeering values. +type ExpressRouteCircuitPeeringListResultIterator struct { + i int + page ExpressRouteCircuitPeeringListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ExpressRouteCircuitPeeringListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitPeeringListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ExpressRouteCircuitPeeringListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ExpressRouteCircuitPeeringListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ExpressRouteCircuitPeeringListResultIterator) Response() ExpressRouteCircuitPeeringListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ExpressRouteCircuitPeeringListResultIterator) Value() ExpressRouteCircuitPeering { + if !iter.page.NotDone() { + return ExpressRouteCircuitPeering{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ExpressRouteCircuitPeeringListResultIterator type. +func NewExpressRouteCircuitPeeringListResultIterator(page ExpressRouteCircuitPeeringListResultPage) ExpressRouteCircuitPeeringListResultIterator { + return ExpressRouteCircuitPeeringListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (ercplr ExpressRouteCircuitPeeringListResult) IsEmpty() bool { + return ercplr.Value == nil || len(*ercplr.Value) == 0 +} + +// expressRouteCircuitPeeringListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (ercplr ExpressRouteCircuitPeeringListResult) expressRouteCircuitPeeringListResultPreparer(ctx context.Context) (*http.Request, error) { + if ercplr.NextLink == nil || len(to.String(ercplr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(ercplr.NextLink))) +} + +// ExpressRouteCircuitPeeringListResultPage contains a page of ExpressRouteCircuitPeering values. +type ExpressRouteCircuitPeeringListResultPage struct { + fn func(context.Context, ExpressRouteCircuitPeeringListResult) (ExpressRouteCircuitPeeringListResult, error) + ercplr ExpressRouteCircuitPeeringListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ExpressRouteCircuitPeeringListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCircuitPeeringListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.ercplr) + if err != nil { + return err + } + page.ercplr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ExpressRouteCircuitPeeringListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ExpressRouteCircuitPeeringListResultPage) NotDone() bool { + return !page.ercplr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ExpressRouteCircuitPeeringListResultPage) Response() ExpressRouteCircuitPeeringListResult { + return page.ercplr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ExpressRouteCircuitPeeringListResultPage) Values() []ExpressRouteCircuitPeering { + if page.ercplr.IsEmpty() { + return nil + } + return *page.ercplr.Value +} + +// Creates a new instance of the ExpressRouteCircuitPeeringListResultPage type. +func NewExpressRouteCircuitPeeringListResultPage(getNextPage func(context.Context, ExpressRouteCircuitPeeringListResult) (ExpressRouteCircuitPeeringListResult, error)) ExpressRouteCircuitPeeringListResultPage { + return ExpressRouteCircuitPeeringListResultPage{fn: getNextPage} +} + +// ExpressRouteCircuitPeeringPropertiesFormat properties of the express route circuit peering. +type ExpressRouteCircuitPeeringPropertiesFormat struct { + // PeeringType - The peering type. Possible values include: 'AzurePublicPeering', 'AzurePrivatePeering', 'MicrosoftPeering' + PeeringType ExpressRoutePeeringType `json:"peeringType,omitempty"` + // State - The peering state. Possible values include: 'ExpressRoutePeeringStateDisabled', 'ExpressRoutePeeringStateEnabled' + State ExpressRoutePeeringState `json:"state,omitempty"` + // AzureASN - The Azure ASN. + AzureASN *int32 `json:"azureASN,omitempty"` + // PeerASN - The peer ASN. + PeerASN *int64 `json:"peerASN,omitempty"` + // PrimaryPeerAddressPrefix - The primary address prefix. + PrimaryPeerAddressPrefix *string `json:"primaryPeerAddressPrefix,omitempty"` + // SecondaryPeerAddressPrefix - The secondary address prefix. + SecondaryPeerAddressPrefix *string `json:"secondaryPeerAddressPrefix,omitempty"` + // PrimaryAzurePort - The primary port. + PrimaryAzurePort *string `json:"primaryAzurePort,omitempty"` + // SecondaryAzurePort - The secondary port. + SecondaryAzurePort *string `json:"secondaryAzurePort,omitempty"` + // SharedKey - The shared key. + SharedKey *string `json:"sharedKey,omitempty"` + // VlanID - The VLAN ID. + VlanID *int32 `json:"vlanId,omitempty"` + // MicrosoftPeeringConfig - The Microsoft peering configuration. + MicrosoftPeeringConfig *ExpressRouteCircuitPeeringConfig `json:"microsoftPeeringConfig,omitempty"` + // Stats - The peering stats of express route circuit. + Stats *ExpressRouteCircuitStats `json:"stats,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the express route circuit peering resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // GatewayManagerEtag - The GatewayManager Etag. + GatewayManagerEtag *string `json:"gatewayManagerEtag,omitempty"` + // LastModifiedBy - READ-ONLY; Who was the last to modify the peering. + LastModifiedBy *string `json:"lastModifiedBy,omitempty"` + // RouteFilter - The reference of the RouteFilter resource. + RouteFilter *SubResource `json:"routeFilter,omitempty"` + // Ipv6PeeringConfig - The IPv6 peering configuration. + Ipv6PeeringConfig *Ipv6ExpressRouteCircuitPeeringConfig `json:"ipv6PeeringConfig,omitempty"` + // ExpressRouteConnection - The ExpressRoute connection. + ExpressRouteConnection *ExpressRouteConnectionID `json:"expressRouteConnection,omitempty"` + // Connections - The list of circuit connections associated with Azure Private Peering for this circuit. + Connections *[]ExpressRouteCircuitConnection `json:"connections,omitempty"` + // PeeredConnections - READ-ONLY; The list of peered circuit connections associated with Azure Private Peering for this circuit. + PeeredConnections *[]PeerExpressRouteCircuitConnection `json:"peeredConnections,omitempty"` +} + +// ExpressRouteCircuitPeeringsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results +// of a long-running operation. +type ExpressRouteCircuitPeeringsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ExpressRouteCircuitPeeringsCreateOrUpdateFuture) Result(client ExpressRouteCircuitPeeringsClient) (ercp ExpressRouteCircuitPeering, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ExpressRouteCircuitPeeringsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if ercp.Response.Response, err = future.GetResult(sender); err == nil && ercp.Response.Response.StatusCode != http.StatusNoContent { + ercp, err = client.CreateOrUpdateResponder(ercp.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsCreateOrUpdateFuture", "Result", ercp.Response.Response, "Failure responding to request") + } + } + return +} + +// ExpressRouteCircuitPeeringsDeleteFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type ExpressRouteCircuitPeeringsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ExpressRouteCircuitPeeringsDeleteFuture) Result(client ExpressRouteCircuitPeeringsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ExpressRouteCircuitPeeringsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// ExpressRouteCircuitPropertiesFormat properties of ExpressRouteCircuit. +type ExpressRouteCircuitPropertiesFormat struct { + // AllowClassicOperations - Allow classic operations. + AllowClassicOperations *bool `json:"allowClassicOperations,omitempty"` + // CircuitProvisioningState - The CircuitProvisioningState state of the resource. + CircuitProvisioningState *string `json:"circuitProvisioningState,omitempty"` + // ServiceProviderProvisioningState - The ServiceProviderProvisioningState state of the resource. Possible values include: 'NotProvisioned', 'Provisioning', 'Provisioned', 'Deprovisioning' + ServiceProviderProvisioningState ServiceProviderProvisioningState `json:"serviceProviderProvisioningState,omitempty"` + // Authorizations - The list of authorizations. + Authorizations *[]ExpressRouteCircuitAuthorization `json:"authorizations,omitempty"` + // Peerings - The list of peerings. + Peerings *[]ExpressRouteCircuitPeering `json:"peerings,omitempty"` + // ServiceKey - The ServiceKey. + ServiceKey *string `json:"serviceKey,omitempty"` + // ServiceProviderNotes - The ServiceProviderNotes. + ServiceProviderNotes *string `json:"serviceProviderNotes,omitempty"` + // ServiceProviderProperties - The ServiceProviderProperties. + ServiceProviderProperties *ExpressRouteCircuitServiceProviderProperties `json:"serviceProviderProperties,omitempty"` + // ExpressRoutePort - The reference to the ExpressRoutePort resource when the circuit is provisioned on an ExpressRoutePort resource. + ExpressRoutePort *SubResource `json:"expressRoutePort,omitempty"` + // BandwidthInGbps - The bandwidth of the circuit when the circuit is provisioned on an ExpressRoutePort resource. + BandwidthInGbps *float64 `json:"bandwidthInGbps,omitempty"` + // Stag - READ-ONLY; The identifier of the circuit traffic. Outer tag for QinQ encapsulation. + Stag *int32 `json:"stag,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the express route circuit resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // GatewayManagerEtag - The GatewayManager Etag. + GatewayManagerEtag *string `json:"gatewayManagerEtag,omitempty"` + // GlobalReachEnabled - Flag denoting Global reach status. + GlobalReachEnabled *bool `json:"globalReachEnabled,omitempty"` +} + +// ExpressRouteCircuitReference reference to an express route circuit. +type ExpressRouteCircuitReference struct { + // ID - Corresponding Express Route Circuit Id. + ID *string `json:"id,omitempty"` +} + +// ExpressRouteCircuitRoutesTable the routes table associated with the ExpressRouteCircuit. +type ExpressRouteCircuitRoutesTable struct { + // NetworkProperty - IP address of a network entity. + NetworkProperty *string `json:"network,omitempty"` + // NextHop - NextHop address. + NextHop *string `json:"nextHop,omitempty"` + // LocPrf - Local preference value as set with the set local-preference route-map configuration command. + LocPrf *string `json:"locPrf,omitempty"` + // Weight - Route Weight. + Weight *int32 `json:"weight,omitempty"` + // Path - Autonomous system paths to the destination network. + Path *string `json:"path,omitempty"` +} + +// ExpressRouteCircuitRoutesTableSummary the routes table associated with the ExpressRouteCircuit. +type ExpressRouteCircuitRoutesTableSummary struct { + // Neighbor - IP address of the neighbor. + Neighbor *string `json:"neighbor,omitempty"` + // V - BGP version number spoken to the neighbor. + V *int32 `json:"v,omitempty"` + // As - Autonomous system number. + As *int32 `json:"as,omitempty"` + // UpDown - The length of time that the BGP session has been in the Established state, or the current status if not in the Established state. + UpDown *string `json:"upDown,omitempty"` + // StatePfxRcd - Current state of the BGP session, and the number of prefixes that have been received from a neighbor or peer group. + StatePfxRcd *string `json:"statePfxRcd,omitempty"` +} + +// ExpressRouteCircuitsArpTableListResult response for ListArpTable associated with the Express Route +// Circuits API. +type ExpressRouteCircuitsArpTableListResult struct { + autorest.Response `json:"-"` + // Value - A list of the ARP tables. + Value *[]ExpressRouteCircuitArpTable `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// ExpressRouteCircuitsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type ExpressRouteCircuitsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ExpressRouteCircuitsCreateOrUpdateFuture) Result(client ExpressRouteCircuitsClient) (erc ExpressRouteCircuit, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ExpressRouteCircuitsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if erc.Response.Response, err = future.GetResult(sender); err == nil && erc.Response.Response.StatusCode != http.StatusNoContent { + erc, err = client.CreateOrUpdateResponder(erc.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsCreateOrUpdateFuture", "Result", erc.Response.Response, "Failure responding to request") + } + } + return +} + +// ExpressRouteCircuitsDeleteFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type ExpressRouteCircuitsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ExpressRouteCircuitsDeleteFuture) Result(client ExpressRouteCircuitsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ExpressRouteCircuitsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// ExpressRouteCircuitServiceProviderProperties contains ServiceProviderProperties in an +// ExpressRouteCircuit. +type ExpressRouteCircuitServiceProviderProperties struct { + // ServiceProviderName - The serviceProviderName. + ServiceProviderName *string `json:"serviceProviderName,omitempty"` + // PeeringLocation - The peering location. + PeeringLocation *string `json:"peeringLocation,omitempty"` + // BandwidthInMbps - The BandwidthInMbps. + BandwidthInMbps *int32 `json:"bandwidthInMbps,omitempty"` +} + +// ExpressRouteCircuitSku contains SKU in an ExpressRouteCircuit. +type ExpressRouteCircuitSku struct { + // Name - The name of the SKU. + Name *string `json:"name,omitempty"` + // Tier - The tier of the SKU. Possible values include: 'ExpressRouteCircuitSkuTierStandard', 'ExpressRouteCircuitSkuTierPremium', 'ExpressRouteCircuitSkuTierBasic', 'ExpressRouteCircuitSkuTierLocal' + Tier ExpressRouteCircuitSkuTier `json:"tier,omitempty"` + // Family - The family of the SKU. Possible values include: 'UnlimitedData', 'MeteredData' + Family ExpressRouteCircuitSkuFamily `json:"family,omitempty"` +} + +// ExpressRouteCircuitsListArpTableFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type ExpressRouteCircuitsListArpTableFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ExpressRouteCircuitsListArpTableFuture) Result(client ExpressRouteCircuitsClient) (ercatlr ExpressRouteCircuitsArpTableListResult, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsListArpTableFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ExpressRouteCircuitsListArpTableFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if ercatlr.Response.Response, err = future.GetResult(sender); err == nil && ercatlr.Response.Response.StatusCode != http.StatusNoContent { + ercatlr, err = client.ListArpTableResponder(ercatlr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsListArpTableFuture", "Result", ercatlr.Response.Response, "Failure responding to request") + } + } + return +} + +// ExpressRouteCircuitsListRoutesTableFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type ExpressRouteCircuitsListRoutesTableFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ExpressRouteCircuitsListRoutesTableFuture) Result(client ExpressRouteCircuitsClient) (ercrtlr ExpressRouteCircuitsRoutesTableListResult, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsListRoutesTableFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ExpressRouteCircuitsListRoutesTableFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if ercrtlr.Response.Response, err = future.GetResult(sender); err == nil && ercrtlr.Response.Response.StatusCode != http.StatusNoContent { + ercrtlr, err = client.ListRoutesTableResponder(ercrtlr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsListRoutesTableFuture", "Result", ercrtlr.Response.Response, "Failure responding to request") + } + } + return +} + +// ExpressRouteCircuitsListRoutesTableSummaryFuture an abstraction for monitoring and retrieving the +// results of a long-running operation. +type ExpressRouteCircuitsListRoutesTableSummaryFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ExpressRouteCircuitsListRoutesTableSummaryFuture) Result(client ExpressRouteCircuitsClient) (ercrtslr ExpressRouteCircuitsRoutesTableSummaryListResult, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsListRoutesTableSummaryFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ExpressRouteCircuitsListRoutesTableSummaryFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if ercrtslr.Response.Response, err = future.GetResult(sender); err == nil && ercrtslr.Response.Response.StatusCode != http.StatusNoContent { + ercrtslr, err = client.ListRoutesTableSummaryResponder(ercrtslr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsListRoutesTableSummaryFuture", "Result", ercrtslr.Response.Response, "Failure responding to request") + } + } + return +} + +// ExpressRouteCircuitsRoutesTableListResult response for ListRoutesTable associated with the Express Route +// Circuits API. +type ExpressRouteCircuitsRoutesTableListResult struct { + autorest.Response `json:"-"` + // Value - The list of routes table. + Value *[]ExpressRouteCircuitRoutesTable `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// ExpressRouteCircuitsRoutesTableSummaryListResult response for ListRoutesTable associated with the +// Express Route Circuits API. +type ExpressRouteCircuitsRoutesTableSummaryListResult struct { + autorest.Response `json:"-"` + // Value - A list of the routes table. + Value *[]ExpressRouteCircuitRoutesTableSummary `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// ExpressRouteCircuitStats contains stats associated with the peering. +type ExpressRouteCircuitStats struct { + autorest.Response `json:"-"` + // PrimarybytesIn - The Primary BytesIn of the peering. + PrimarybytesIn *int64 `json:"primarybytesIn,omitempty"` + // PrimarybytesOut - The primary BytesOut of the peering. + PrimarybytesOut *int64 `json:"primarybytesOut,omitempty"` + // SecondarybytesIn - The secondary BytesIn of the peering. + SecondarybytesIn *int64 `json:"secondarybytesIn,omitempty"` + // SecondarybytesOut - The secondary BytesOut of the peering. + SecondarybytesOut *int64 `json:"secondarybytesOut,omitempty"` +} + +// ExpressRouteConnection expressRouteConnection resource. +type ExpressRouteConnection struct { + autorest.Response `json:"-"` + // ExpressRouteConnectionProperties - Properties of the express route connection. + *ExpressRouteConnectionProperties `json:"properties,omitempty"` + // Name - The name of the resource. + Name *string `json:"name,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ExpressRouteConnection. +func (erc ExpressRouteConnection) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if erc.ExpressRouteConnectionProperties != nil { + objectMap["properties"] = erc.ExpressRouteConnectionProperties + } + if erc.Name != nil { + objectMap["name"] = erc.Name + } + if erc.ID != nil { + objectMap["id"] = erc.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ExpressRouteConnection struct. +func (erc *ExpressRouteConnection) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var expressRouteConnectionProperties ExpressRouteConnectionProperties + err = json.Unmarshal(*v, &expressRouteConnectionProperties) + if err != nil { + return err + } + erc.ExpressRouteConnectionProperties = &expressRouteConnectionProperties + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + erc.Name = &name + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + erc.ID = &ID + } + } + } + + return nil +} + +// ExpressRouteConnectionID the ID of the ExpressRouteConnection. +type ExpressRouteConnectionID struct { + // ID - READ-ONLY; The ID of the ExpressRouteConnection. + ID *string `json:"id,omitempty"` +} + +// ExpressRouteConnectionList expressRouteConnection list. +type ExpressRouteConnectionList struct { + autorest.Response `json:"-"` + // Value - The list of ExpressRoute connections. + Value *[]ExpressRouteConnection `json:"value,omitempty"` +} + +// ExpressRouteConnectionProperties properties of the ExpressRouteConnection subresource. +type ExpressRouteConnectionProperties struct { + // ProvisioningState - READ-ONLY; The provisioning state of the express route connection resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // ExpressRouteCircuitPeering - The ExpressRoute circuit peering. + ExpressRouteCircuitPeering *ExpressRouteCircuitPeeringID `json:"expressRouteCircuitPeering,omitempty"` + // AuthorizationKey - Authorization key to establish the connection. + AuthorizationKey *string `json:"authorizationKey,omitempty"` + // RoutingWeight - The routing weight associated to the connection. + RoutingWeight *int32 `json:"routingWeight,omitempty"` + // EnableInternetSecurity - Enable internet security. + EnableInternetSecurity *bool `json:"enableInternetSecurity,omitempty"` +} + +// ExpressRouteConnectionsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of +// a long-running operation. +type ExpressRouteConnectionsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ExpressRouteConnectionsCreateOrUpdateFuture) Result(client ExpressRouteConnectionsClient) (erc ExpressRouteConnection, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteConnectionsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ExpressRouteConnectionsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if erc.Response.Response, err = future.GetResult(sender); err == nil && erc.Response.Response.StatusCode != http.StatusNoContent { + erc, err = client.CreateOrUpdateResponder(erc.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteConnectionsCreateOrUpdateFuture", "Result", erc.Response.Response, "Failure responding to request") + } + } + return +} + +// ExpressRouteConnectionsDeleteFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type ExpressRouteConnectionsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ExpressRouteConnectionsDeleteFuture) Result(client ExpressRouteConnectionsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteConnectionsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ExpressRouteConnectionsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// ExpressRouteCrossConnection expressRouteCrossConnection resource. +type ExpressRouteCrossConnection struct { + autorest.Response `json:"-"` + // ExpressRouteCrossConnectionProperties - Properties of the express route cross connection. + *ExpressRouteCrossConnectionProperties `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for ExpressRouteCrossConnection. +func (ercc ExpressRouteCrossConnection) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if ercc.ExpressRouteCrossConnectionProperties != nil { + objectMap["properties"] = ercc.ExpressRouteCrossConnectionProperties + } + if ercc.ID != nil { + objectMap["id"] = ercc.ID + } + if ercc.Location != nil { + objectMap["location"] = ercc.Location + } + if ercc.Tags != nil { + objectMap["tags"] = ercc.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ExpressRouteCrossConnection struct. +func (ercc *ExpressRouteCrossConnection) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var expressRouteCrossConnectionProperties ExpressRouteCrossConnectionProperties + err = json.Unmarshal(*v, &expressRouteCrossConnectionProperties) + if err != nil { + return err + } + ercc.ExpressRouteCrossConnectionProperties = &expressRouteCrossConnectionProperties + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + ercc.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + ercc.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + ercc.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + ercc.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + ercc.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + ercc.Tags = tags + } + } + } + + return nil +} + +// ExpressRouteCrossConnectionListResult response for ListExpressRouteCrossConnection API service call. +type ExpressRouteCrossConnectionListResult struct { + autorest.Response `json:"-"` + // Value - A list of ExpressRouteCrossConnection resources. + Value *[]ExpressRouteCrossConnection `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// ExpressRouteCrossConnectionListResultIterator provides access to a complete listing of +// ExpressRouteCrossConnection values. +type ExpressRouteCrossConnectionListResultIterator struct { + i int + page ExpressRouteCrossConnectionListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ExpressRouteCrossConnectionListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCrossConnectionListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ExpressRouteCrossConnectionListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ExpressRouteCrossConnectionListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ExpressRouteCrossConnectionListResultIterator) Response() ExpressRouteCrossConnectionListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ExpressRouteCrossConnectionListResultIterator) Value() ExpressRouteCrossConnection { + if !iter.page.NotDone() { + return ExpressRouteCrossConnection{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ExpressRouteCrossConnectionListResultIterator type. +func NewExpressRouteCrossConnectionListResultIterator(page ExpressRouteCrossConnectionListResultPage) ExpressRouteCrossConnectionListResultIterator { + return ExpressRouteCrossConnectionListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (ercclr ExpressRouteCrossConnectionListResult) IsEmpty() bool { + return ercclr.Value == nil || len(*ercclr.Value) == 0 +} + +// expressRouteCrossConnectionListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (ercclr ExpressRouteCrossConnectionListResult) expressRouteCrossConnectionListResultPreparer(ctx context.Context) (*http.Request, error) { + if ercclr.NextLink == nil || len(to.String(ercclr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(ercclr.NextLink))) +} + +// ExpressRouteCrossConnectionListResultPage contains a page of ExpressRouteCrossConnection values. +type ExpressRouteCrossConnectionListResultPage struct { + fn func(context.Context, ExpressRouteCrossConnectionListResult) (ExpressRouteCrossConnectionListResult, error) + ercclr ExpressRouteCrossConnectionListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ExpressRouteCrossConnectionListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCrossConnectionListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.ercclr) + if err != nil { + return err + } + page.ercclr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ExpressRouteCrossConnectionListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ExpressRouteCrossConnectionListResultPage) NotDone() bool { + return !page.ercclr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ExpressRouteCrossConnectionListResultPage) Response() ExpressRouteCrossConnectionListResult { + return page.ercclr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ExpressRouteCrossConnectionListResultPage) Values() []ExpressRouteCrossConnection { + if page.ercclr.IsEmpty() { + return nil + } + return *page.ercclr.Value +} + +// Creates a new instance of the ExpressRouteCrossConnectionListResultPage type. +func NewExpressRouteCrossConnectionListResultPage(getNextPage func(context.Context, ExpressRouteCrossConnectionListResult) (ExpressRouteCrossConnectionListResult, error)) ExpressRouteCrossConnectionListResultPage { + return ExpressRouteCrossConnectionListResultPage{fn: getNextPage} +} + +// ExpressRouteCrossConnectionPeering peering in an ExpressRoute Cross Connection resource. +type ExpressRouteCrossConnectionPeering struct { + autorest.Response `json:"-"` + // ExpressRouteCrossConnectionPeeringProperties - Properties of the express route cross connection peering. + *ExpressRouteCrossConnectionPeeringProperties `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ExpressRouteCrossConnectionPeering. +func (erccp ExpressRouteCrossConnectionPeering) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if erccp.ExpressRouteCrossConnectionPeeringProperties != nil { + objectMap["properties"] = erccp.ExpressRouteCrossConnectionPeeringProperties + } + if erccp.Name != nil { + objectMap["name"] = erccp.Name + } + if erccp.ID != nil { + objectMap["id"] = erccp.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ExpressRouteCrossConnectionPeering struct. +func (erccp *ExpressRouteCrossConnectionPeering) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var expressRouteCrossConnectionPeeringProperties ExpressRouteCrossConnectionPeeringProperties + err = json.Unmarshal(*v, &expressRouteCrossConnectionPeeringProperties) + if err != nil { + return err + } + erccp.ExpressRouteCrossConnectionPeeringProperties = &expressRouteCrossConnectionPeeringProperties + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + erccp.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + erccp.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + erccp.ID = &ID + } + } + } + + return nil +} + +// ExpressRouteCrossConnectionPeeringList response for ListPeering API service call retrieves all peerings +// that belong to an ExpressRouteCrossConnection. +type ExpressRouteCrossConnectionPeeringList struct { + autorest.Response `json:"-"` + // Value - The peerings in an express route cross connection. + Value *[]ExpressRouteCrossConnectionPeering `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// ExpressRouteCrossConnectionPeeringListIterator provides access to a complete listing of +// ExpressRouteCrossConnectionPeering values. +type ExpressRouteCrossConnectionPeeringListIterator struct { + i int + page ExpressRouteCrossConnectionPeeringListPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ExpressRouteCrossConnectionPeeringListIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCrossConnectionPeeringListIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ExpressRouteCrossConnectionPeeringListIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ExpressRouteCrossConnectionPeeringListIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ExpressRouteCrossConnectionPeeringListIterator) Response() ExpressRouteCrossConnectionPeeringList { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ExpressRouteCrossConnectionPeeringListIterator) Value() ExpressRouteCrossConnectionPeering { + if !iter.page.NotDone() { + return ExpressRouteCrossConnectionPeering{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ExpressRouteCrossConnectionPeeringListIterator type. +func NewExpressRouteCrossConnectionPeeringListIterator(page ExpressRouteCrossConnectionPeeringListPage) ExpressRouteCrossConnectionPeeringListIterator { + return ExpressRouteCrossConnectionPeeringListIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (erccpl ExpressRouteCrossConnectionPeeringList) IsEmpty() bool { + return erccpl.Value == nil || len(*erccpl.Value) == 0 +} + +// expressRouteCrossConnectionPeeringListPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (erccpl ExpressRouteCrossConnectionPeeringList) expressRouteCrossConnectionPeeringListPreparer(ctx context.Context) (*http.Request, error) { + if erccpl.NextLink == nil || len(to.String(erccpl.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(erccpl.NextLink))) +} + +// ExpressRouteCrossConnectionPeeringListPage contains a page of ExpressRouteCrossConnectionPeering values. +type ExpressRouteCrossConnectionPeeringListPage struct { + fn func(context.Context, ExpressRouteCrossConnectionPeeringList) (ExpressRouteCrossConnectionPeeringList, error) + erccpl ExpressRouteCrossConnectionPeeringList +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ExpressRouteCrossConnectionPeeringListPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteCrossConnectionPeeringListPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.erccpl) + if err != nil { + return err + } + page.erccpl = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ExpressRouteCrossConnectionPeeringListPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ExpressRouteCrossConnectionPeeringListPage) NotDone() bool { + return !page.erccpl.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ExpressRouteCrossConnectionPeeringListPage) Response() ExpressRouteCrossConnectionPeeringList { + return page.erccpl +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ExpressRouteCrossConnectionPeeringListPage) Values() []ExpressRouteCrossConnectionPeering { + if page.erccpl.IsEmpty() { + return nil + } + return *page.erccpl.Value +} + +// Creates a new instance of the ExpressRouteCrossConnectionPeeringListPage type. +func NewExpressRouteCrossConnectionPeeringListPage(getNextPage func(context.Context, ExpressRouteCrossConnectionPeeringList) (ExpressRouteCrossConnectionPeeringList, error)) ExpressRouteCrossConnectionPeeringListPage { + return ExpressRouteCrossConnectionPeeringListPage{fn: getNextPage} +} + +// ExpressRouteCrossConnectionPeeringProperties properties of express route cross connection peering. +type ExpressRouteCrossConnectionPeeringProperties struct { + // PeeringType - The peering type. Possible values include: 'AzurePublicPeering', 'AzurePrivatePeering', 'MicrosoftPeering' + PeeringType ExpressRoutePeeringType `json:"peeringType,omitempty"` + // State - The peering state. Possible values include: 'ExpressRoutePeeringStateDisabled', 'ExpressRoutePeeringStateEnabled' + State ExpressRoutePeeringState `json:"state,omitempty"` + // AzureASN - READ-ONLY; The Azure ASN. + AzureASN *int32 `json:"azureASN,omitempty"` + // PeerASN - The peer ASN. + PeerASN *int64 `json:"peerASN,omitempty"` + // PrimaryPeerAddressPrefix - The primary address prefix. + PrimaryPeerAddressPrefix *string `json:"primaryPeerAddressPrefix,omitempty"` + // SecondaryPeerAddressPrefix - The secondary address prefix. + SecondaryPeerAddressPrefix *string `json:"secondaryPeerAddressPrefix,omitempty"` + // PrimaryAzurePort - READ-ONLY; The primary port. + PrimaryAzurePort *string `json:"primaryAzurePort,omitempty"` + // SecondaryAzurePort - READ-ONLY; The secondary port. + SecondaryAzurePort *string `json:"secondaryAzurePort,omitempty"` + // SharedKey - The shared key. + SharedKey *string `json:"sharedKey,omitempty"` + // VlanID - The VLAN ID. + VlanID *int32 `json:"vlanId,omitempty"` + // MicrosoftPeeringConfig - The Microsoft peering configuration. + MicrosoftPeeringConfig *ExpressRouteCircuitPeeringConfig `json:"microsoftPeeringConfig,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the express route cross connection peering resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // GatewayManagerEtag - The GatewayManager Etag. + GatewayManagerEtag *string `json:"gatewayManagerEtag,omitempty"` + // LastModifiedBy - READ-ONLY; Who was the last to modify the peering. + LastModifiedBy *string `json:"lastModifiedBy,omitempty"` + // Ipv6PeeringConfig - The IPv6 peering configuration. + Ipv6PeeringConfig *Ipv6ExpressRouteCircuitPeeringConfig `json:"ipv6PeeringConfig,omitempty"` +} + +// ExpressRouteCrossConnectionPeeringsCreateOrUpdateFuture an abstraction for monitoring and retrieving the +// results of a long-running operation. +type ExpressRouteCrossConnectionPeeringsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ExpressRouteCrossConnectionPeeringsCreateOrUpdateFuture) Result(client ExpressRouteCrossConnectionPeeringsClient) (erccp ExpressRouteCrossConnectionPeering, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionPeeringsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ExpressRouteCrossConnectionPeeringsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if erccp.Response.Response, err = future.GetResult(sender); err == nil && erccp.Response.Response.StatusCode != http.StatusNoContent { + erccp, err = client.CreateOrUpdateResponder(erccp.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionPeeringsCreateOrUpdateFuture", "Result", erccp.Response.Response, "Failure responding to request") + } + } + return +} + +// ExpressRouteCrossConnectionPeeringsDeleteFuture an abstraction for monitoring and retrieving the results +// of a long-running operation. +type ExpressRouteCrossConnectionPeeringsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ExpressRouteCrossConnectionPeeringsDeleteFuture) Result(client ExpressRouteCrossConnectionPeeringsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionPeeringsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ExpressRouteCrossConnectionPeeringsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// ExpressRouteCrossConnectionProperties properties of ExpressRouteCrossConnection. +type ExpressRouteCrossConnectionProperties struct { + // PrimaryAzurePort - READ-ONLY; The name of the primary port. + PrimaryAzurePort *string `json:"primaryAzurePort,omitempty"` + // SecondaryAzurePort - READ-ONLY; The name of the secondary port. + SecondaryAzurePort *string `json:"secondaryAzurePort,omitempty"` + // STag - READ-ONLY; The identifier of the circuit traffic. + STag *int32 `json:"sTag,omitempty"` + // PeeringLocation - The peering location of the ExpressRoute circuit. + PeeringLocation *string `json:"peeringLocation,omitempty"` + // BandwidthInMbps - The circuit bandwidth In Mbps. + BandwidthInMbps *int32 `json:"bandwidthInMbps,omitempty"` + // ExpressRouteCircuit - The ExpressRouteCircuit. + ExpressRouteCircuit *ExpressRouteCircuitReference `json:"expressRouteCircuit,omitempty"` + // ServiceProviderProvisioningState - The provisioning state of the circuit in the connectivity provider system. Possible values include: 'NotProvisioned', 'Provisioning', 'Provisioned', 'Deprovisioning' + ServiceProviderProvisioningState ServiceProviderProvisioningState `json:"serviceProviderProvisioningState,omitempty"` + // ServiceProviderNotes - Additional read only notes set by the connectivity provider. + ServiceProviderNotes *string `json:"serviceProviderNotes,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the express route cross connection resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // Peerings - The list of peerings. + Peerings *[]ExpressRouteCrossConnectionPeering `json:"peerings,omitempty"` +} + +// ExpressRouteCrossConnectionRoutesTableSummary the routes table associated with the ExpressRouteCircuit. +type ExpressRouteCrossConnectionRoutesTableSummary struct { + // Neighbor - IP address of Neighbor router. + Neighbor *string `json:"neighbor,omitempty"` + // Asn - Autonomous system number. + Asn *int32 `json:"asn,omitempty"` + // UpDown - The length of time that the BGP session has been in the Established state, or the current status if not in the Established state. + UpDown *string `json:"upDown,omitempty"` + // StateOrPrefixesReceived - Current state of the BGP session, and the number of prefixes that have been received from a neighbor or peer group. + StateOrPrefixesReceived *string `json:"stateOrPrefixesReceived,omitempty"` +} + +// ExpressRouteCrossConnectionsCreateOrUpdateFuture an abstraction for monitoring and retrieving the +// results of a long-running operation. +type ExpressRouteCrossConnectionsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ExpressRouteCrossConnectionsCreateOrUpdateFuture) Result(client ExpressRouteCrossConnectionsClient) (ercc ExpressRouteCrossConnection, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ExpressRouteCrossConnectionsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if ercc.Response.Response, err = future.GetResult(sender); err == nil && ercc.Response.Response.StatusCode != http.StatusNoContent { + ercc, err = client.CreateOrUpdateResponder(ercc.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsCreateOrUpdateFuture", "Result", ercc.Response.Response, "Failure responding to request") + } + } + return +} + +// ExpressRouteCrossConnectionsListArpTableFuture an abstraction for monitoring and retrieving the results +// of a long-running operation. +type ExpressRouteCrossConnectionsListArpTableFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ExpressRouteCrossConnectionsListArpTableFuture) Result(client ExpressRouteCrossConnectionsClient) (ercatlr ExpressRouteCircuitsArpTableListResult, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsListArpTableFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ExpressRouteCrossConnectionsListArpTableFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if ercatlr.Response.Response, err = future.GetResult(sender); err == nil && ercatlr.Response.Response.StatusCode != http.StatusNoContent { + ercatlr, err = client.ListArpTableResponder(ercatlr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsListArpTableFuture", "Result", ercatlr.Response.Response, "Failure responding to request") + } + } + return +} + +// ExpressRouteCrossConnectionsListRoutesTableFuture an abstraction for monitoring and retrieving the +// results of a long-running operation. +type ExpressRouteCrossConnectionsListRoutesTableFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ExpressRouteCrossConnectionsListRoutesTableFuture) Result(client ExpressRouteCrossConnectionsClient) (ercrtlr ExpressRouteCircuitsRoutesTableListResult, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsListRoutesTableFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ExpressRouteCrossConnectionsListRoutesTableFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if ercrtlr.Response.Response, err = future.GetResult(sender); err == nil && ercrtlr.Response.Response.StatusCode != http.StatusNoContent { + ercrtlr, err = client.ListRoutesTableResponder(ercrtlr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsListRoutesTableFuture", "Result", ercrtlr.Response.Response, "Failure responding to request") + } + } + return +} + +// ExpressRouteCrossConnectionsListRoutesTableSummaryFuture an abstraction for monitoring and retrieving +// the results of a long-running operation. +type ExpressRouteCrossConnectionsListRoutesTableSummaryFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ExpressRouteCrossConnectionsListRoutesTableSummaryFuture) Result(client ExpressRouteCrossConnectionsClient) (erccrtslr ExpressRouteCrossConnectionsRoutesTableSummaryListResult, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsListRoutesTableSummaryFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ExpressRouteCrossConnectionsListRoutesTableSummaryFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if erccrtslr.Response.Response, err = future.GetResult(sender); err == nil && erccrtslr.Response.Response.StatusCode != http.StatusNoContent { + erccrtslr, err = client.ListRoutesTableSummaryResponder(erccrtslr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteCrossConnectionsListRoutesTableSummaryFuture", "Result", erccrtslr.Response.Response, "Failure responding to request") + } + } + return +} + +// ExpressRouteCrossConnectionsRoutesTableSummaryListResult response for ListRoutesTable associated with +// the Express Route Cross Connections. +type ExpressRouteCrossConnectionsRoutesTableSummaryListResult struct { + autorest.Response `json:"-"` + // Value - A list of the routes table. + Value *[]ExpressRouteCrossConnectionRoutesTableSummary `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// ExpressRouteGateway expressRoute gateway resource. +type ExpressRouteGateway struct { + autorest.Response `json:"-"` + // ExpressRouteGatewayProperties - Properties of the express route gateway. + *ExpressRouteGatewayProperties `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for ExpressRouteGateway. +func (erg ExpressRouteGateway) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if erg.ExpressRouteGatewayProperties != nil { + objectMap["properties"] = erg.ExpressRouteGatewayProperties + } + if erg.ID != nil { + objectMap["id"] = erg.ID + } + if erg.Location != nil { + objectMap["location"] = erg.Location + } + if erg.Tags != nil { + objectMap["tags"] = erg.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ExpressRouteGateway struct. +func (erg *ExpressRouteGateway) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var expressRouteGatewayProperties ExpressRouteGatewayProperties + err = json.Unmarshal(*v, &expressRouteGatewayProperties) + if err != nil { + return err + } + erg.ExpressRouteGatewayProperties = &expressRouteGatewayProperties + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + erg.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + erg.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + erg.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + erg.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + erg.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + erg.Tags = tags + } + } + } + + return nil +} + +// ExpressRouteGatewayList list of ExpressRoute gateways. +type ExpressRouteGatewayList struct { + autorest.Response `json:"-"` + // Value - List of ExpressRoute gateways. + Value *[]ExpressRouteGateway `json:"value,omitempty"` +} + +// ExpressRouteGatewayProperties expressRoute gateway resource properties. +type ExpressRouteGatewayProperties struct { + // AutoScaleConfiguration - Configuration for auto scaling. + AutoScaleConfiguration *ExpressRouteGatewayPropertiesAutoScaleConfiguration `json:"autoScaleConfiguration,omitempty"` + // ExpressRouteConnections - READ-ONLY; List of ExpressRoute connections to the ExpressRoute gateway. + ExpressRouteConnections *[]ExpressRouteConnection `json:"expressRouteConnections,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the express route gateway resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // VirtualHub - The Virtual Hub where the ExpressRoute gateway is or will be deployed. + VirtualHub *VirtualHubID `json:"virtualHub,omitempty"` +} + +// ExpressRouteGatewayPropertiesAutoScaleConfiguration configuration for auto scaling. +type ExpressRouteGatewayPropertiesAutoScaleConfiguration struct { + // Bounds - Minimum and maximum number of scale units to deploy. + Bounds *ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds `json:"bounds,omitempty"` +} + +// ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds minimum and maximum number of scale units to +// deploy. +type ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds struct { + // Min - Minimum number of scale units deployed for ExpressRoute gateway. + Min *int32 `json:"min,omitempty"` + // Max - Maximum number of scale units deployed for ExpressRoute gateway. + Max *int32 `json:"max,omitempty"` +} + +// ExpressRouteGatewaysCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type ExpressRouteGatewaysCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ExpressRouteGatewaysCreateOrUpdateFuture) Result(client ExpressRouteGatewaysClient) (erg ExpressRouteGateway, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteGatewaysCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ExpressRouteGatewaysCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if erg.Response.Response, err = future.GetResult(sender); err == nil && erg.Response.Response.StatusCode != http.StatusNoContent { + erg, err = client.CreateOrUpdateResponder(erg.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteGatewaysCreateOrUpdateFuture", "Result", erg.Response.Response, "Failure responding to request") + } + } + return +} + +// ExpressRouteGatewaysDeleteFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type ExpressRouteGatewaysDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ExpressRouteGatewaysDeleteFuture) Result(client ExpressRouteGatewaysClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRouteGatewaysDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ExpressRouteGatewaysDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// ExpressRouteLink expressRouteLink child resource definition. +type ExpressRouteLink struct { + autorest.Response `json:"-"` + // ExpressRouteLinkPropertiesFormat - ExpressRouteLink properties. + *ExpressRouteLinkPropertiesFormat `json:"properties,omitempty"` + // Name - Name of child port resource that is unique among child port resources of the parent. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ExpressRouteLink. +func (erl ExpressRouteLink) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if erl.ExpressRouteLinkPropertiesFormat != nil { + objectMap["properties"] = erl.ExpressRouteLinkPropertiesFormat + } + if erl.Name != nil { + objectMap["name"] = erl.Name + } + if erl.ID != nil { + objectMap["id"] = erl.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ExpressRouteLink struct. +func (erl *ExpressRouteLink) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var expressRouteLinkPropertiesFormat ExpressRouteLinkPropertiesFormat + err = json.Unmarshal(*v, &expressRouteLinkPropertiesFormat) + if err != nil { + return err + } + erl.ExpressRouteLinkPropertiesFormat = &expressRouteLinkPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + erl.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + erl.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + erl.ID = &ID + } + } + } + + return nil +} + +// ExpressRouteLinkListResult response for ListExpressRouteLinks API service call. +type ExpressRouteLinkListResult struct { + autorest.Response `json:"-"` + // Value - The list of ExpressRouteLink sub-resources. + Value *[]ExpressRouteLink `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// ExpressRouteLinkListResultIterator provides access to a complete listing of ExpressRouteLink values. +type ExpressRouteLinkListResultIterator struct { + i int + page ExpressRouteLinkListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ExpressRouteLinkListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteLinkListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ExpressRouteLinkListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ExpressRouteLinkListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ExpressRouteLinkListResultIterator) Response() ExpressRouteLinkListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ExpressRouteLinkListResultIterator) Value() ExpressRouteLink { + if !iter.page.NotDone() { + return ExpressRouteLink{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ExpressRouteLinkListResultIterator type. +func NewExpressRouteLinkListResultIterator(page ExpressRouteLinkListResultPage) ExpressRouteLinkListResultIterator { + return ExpressRouteLinkListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (erllr ExpressRouteLinkListResult) IsEmpty() bool { + return erllr.Value == nil || len(*erllr.Value) == 0 +} + +// expressRouteLinkListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (erllr ExpressRouteLinkListResult) expressRouteLinkListResultPreparer(ctx context.Context) (*http.Request, error) { + if erllr.NextLink == nil || len(to.String(erllr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(erllr.NextLink))) +} + +// ExpressRouteLinkListResultPage contains a page of ExpressRouteLink values. +type ExpressRouteLinkListResultPage struct { + fn func(context.Context, ExpressRouteLinkListResult) (ExpressRouteLinkListResult, error) + erllr ExpressRouteLinkListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ExpressRouteLinkListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteLinkListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.erllr) + if err != nil { + return err + } + page.erllr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ExpressRouteLinkListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ExpressRouteLinkListResultPage) NotDone() bool { + return !page.erllr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ExpressRouteLinkListResultPage) Response() ExpressRouteLinkListResult { + return page.erllr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ExpressRouteLinkListResultPage) Values() []ExpressRouteLink { + if page.erllr.IsEmpty() { + return nil + } + return *page.erllr.Value +} + +// Creates a new instance of the ExpressRouteLinkListResultPage type. +func NewExpressRouteLinkListResultPage(getNextPage func(context.Context, ExpressRouteLinkListResult) (ExpressRouteLinkListResult, error)) ExpressRouteLinkListResultPage { + return ExpressRouteLinkListResultPage{fn: getNextPage} +} + +// ExpressRouteLinkMacSecConfig expressRouteLink Mac Security Configuration. +type ExpressRouteLinkMacSecConfig struct { + // CknSecretIdentifier - Keyvault Secret Identifier URL containing Mac security CKN key. + CknSecretIdentifier *string `json:"cknSecretIdentifier,omitempty"` + // CakSecretIdentifier - Keyvault Secret Identifier URL containing Mac security CAK key. + CakSecretIdentifier *string `json:"cakSecretIdentifier,omitempty"` + // Cipher - Mac security cipher. Possible values include: 'GcmAes128', 'GcmAes256' + Cipher ExpressRouteLinkMacSecCipher `json:"cipher,omitempty"` +} + +// ExpressRouteLinkPropertiesFormat properties specific to ExpressRouteLink resources. +type ExpressRouteLinkPropertiesFormat struct { + // RouterName - READ-ONLY; Name of Azure router associated with physical port. + RouterName *string `json:"routerName,omitempty"` + // InterfaceName - READ-ONLY; Name of Azure router interface. + InterfaceName *string `json:"interfaceName,omitempty"` + // PatchPanelID - READ-ONLY; Mapping between physical port to patch panel port. + PatchPanelID *string `json:"patchPanelId,omitempty"` + // RackID - READ-ONLY; Mapping of physical patch panel to rack. + RackID *string `json:"rackId,omitempty"` + // ConnectorType - READ-ONLY; Physical fiber port type. Possible values include: 'LC', 'SC' + ConnectorType ExpressRouteLinkConnectorType `json:"connectorType,omitempty"` + // AdminState - Administrative state of the physical port. Possible values include: 'ExpressRouteLinkAdminStateEnabled', 'ExpressRouteLinkAdminStateDisabled' + AdminState ExpressRouteLinkAdminState `json:"adminState,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the express route link resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // MacSecConfig - MacSec configuration. + MacSecConfig *ExpressRouteLinkMacSecConfig `json:"macSecConfig,omitempty"` +} + +// ExpressRoutePort expressRoutePort resource definition. +type ExpressRoutePort struct { + autorest.Response `json:"-"` + // ExpressRoutePortPropertiesFormat - ExpressRoutePort properties. + *ExpressRoutePortPropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Identity - The identity of ExpressRoutePort, if configured. + Identity *ManagedServiceIdentity `json:"identity,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for ExpressRoutePort. +func (erp ExpressRoutePort) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if erp.ExpressRoutePortPropertiesFormat != nil { + objectMap["properties"] = erp.ExpressRoutePortPropertiesFormat + } + if erp.Identity != nil { + objectMap["identity"] = erp.Identity + } + if erp.ID != nil { + objectMap["id"] = erp.ID + } + if erp.Location != nil { + objectMap["location"] = erp.Location + } + if erp.Tags != nil { + objectMap["tags"] = erp.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ExpressRoutePort struct. +func (erp *ExpressRoutePort) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var expressRoutePortPropertiesFormat ExpressRoutePortPropertiesFormat + err = json.Unmarshal(*v, &expressRoutePortPropertiesFormat) + if err != nil { + return err + } + erp.ExpressRoutePortPropertiesFormat = &expressRoutePortPropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + erp.Etag = &etag + } + case "identity": + if v != nil { + var identity ManagedServiceIdentity + err = json.Unmarshal(*v, &identity) + if err != nil { + return err + } + erp.Identity = &identity + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + erp.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + erp.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + erp.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + erp.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + erp.Tags = tags + } + } + } + + return nil +} + +// ExpressRoutePortListResult response for ListExpressRoutePorts API service call. +type ExpressRoutePortListResult struct { + autorest.Response `json:"-"` + // Value - A list of ExpressRoutePort resources. + Value *[]ExpressRoutePort `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// ExpressRoutePortListResultIterator provides access to a complete listing of ExpressRoutePort values. +type ExpressRoutePortListResultIterator struct { + i int + page ExpressRoutePortListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ExpressRoutePortListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRoutePortListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ExpressRoutePortListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ExpressRoutePortListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ExpressRoutePortListResultIterator) Response() ExpressRoutePortListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ExpressRoutePortListResultIterator) Value() ExpressRoutePort { + if !iter.page.NotDone() { + return ExpressRoutePort{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ExpressRoutePortListResultIterator type. +func NewExpressRoutePortListResultIterator(page ExpressRoutePortListResultPage) ExpressRoutePortListResultIterator { + return ExpressRoutePortListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (erplr ExpressRoutePortListResult) IsEmpty() bool { + return erplr.Value == nil || len(*erplr.Value) == 0 +} + +// expressRoutePortListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (erplr ExpressRoutePortListResult) expressRoutePortListResultPreparer(ctx context.Context) (*http.Request, error) { + if erplr.NextLink == nil || len(to.String(erplr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(erplr.NextLink))) +} + +// ExpressRoutePortListResultPage contains a page of ExpressRoutePort values. +type ExpressRoutePortListResultPage struct { + fn func(context.Context, ExpressRoutePortListResult) (ExpressRoutePortListResult, error) + erplr ExpressRoutePortListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ExpressRoutePortListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRoutePortListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.erplr) + if err != nil { + return err + } + page.erplr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ExpressRoutePortListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ExpressRoutePortListResultPage) NotDone() bool { + return !page.erplr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ExpressRoutePortListResultPage) Response() ExpressRoutePortListResult { + return page.erplr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ExpressRoutePortListResultPage) Values() []ExpressRoutePort { + if page.erplr.IsEmpty() { + return nil + } + return *page.erplr.Value +} + +// Creates a new instance of the ExpressRoutePortListResultPage type. +func NewExpressRoutePortListResultPage(getNextPage func(context.Context, ExpressRoutePortListResult) (ExpressRoutePortListResult, error)) ExpressRoutePortListResultPage { + return ExpressRoutePortListResultPage{fn: getNextPage} +} + +// ExpressRoutePortPropertiesFormat properties specific to ExpressRoutePort resources. +type ExpressRoutePortPropertiesFormat struct { + // PeeringLocation - The name of the peering location that the ExpressRoutePort is mapped to physically. + PeeringLocation *string `json:"peeringLocation,omitempty"` + // BandwidthInGbps - Bandwidth of procured ports in Gbps. + BandwidthInGbps *int32 `json:"bandwidthInGbps,omitempty"` + // ProvisionedBandwidthInGbps - READ-ONLY; Aggregate Gbps of associated circuit bandwidths. + ProvisionedBandwidthInGbps *float64 `json:"provisionedBandwidthInGbps,omitempty"` + // Mtu - READ-ONLY; Maximum transmission unit of the physical port pair(s). + Mtu *string `json:"mtu,omitempty"` + // Encapsulation - Encapsulation method on physical ports. Possible values include: 'Dot1Q', 'QinQ' + Encapsulation ExpressRoutePortsEncapsulation `json:"encapsulation,omitempty"` + // EtherType - READ-ONLY; Ether type of the physical port. + EtherType *string `json:"etherType,omitempty"` + // AllocationDate - READ-ONLY; Date of the physical port allocation to be used in Letter of Authorization. + AllocationDate *string `json:"allocationDate,omitempty"` + // Links - The set of physical links of the ExpressRoutePort resource. + Links *[]ExpressRouteLink `json:"links,omitempty"` + // Circuits - READ-ONLY; Reference the ExpressRoute circuit(s) that are provisioned on this ExpressRoutePort resource. + Circuits *[]SubResource `json:"circuits,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the express route port resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // ResourceGUID - READ-ONLY; The resource GUID property of the express route port resource. + ResourceGUID *string `json:"resourceGuid,omitempty"` +} + +// ExpressRoutePortsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type ExpressRoutePortsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ExpressRoutePortsCreateOrUpdateFuture) Result(client ExpressRoutePortsClient) (erp ExpressRoutePort, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ExpressRoutePortsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if erp.Response.Response, err = future.GetResult(sender); err == nil && erp.Response.Response.StatusCode != http.StatusNoContent { + erp, err = client.CreateOrUpdateResponder(erp.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsCreateOrUpdateFuture", "Result", erp.Response.Response, "Failure responding to request") + } + } + return +} + +// ExpressRoutePortsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type ExpressRoutePortsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ExpressRoutePortsDeleteFuture) Result(client ExpressRoutePortsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ExpressRoutePortsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ExpressRoutePortsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// ExpressRoutePortsLocation definition of the ExpressRoutePorts peering location resource. +type ExpressRoutePortsLocation struct { + autorest.Response `json:"-"` + // ExpressRoutePortsLocationPropertiesFormat - ExpressRoutePort peering location properties. + *ExpressRoutePortsLocationPropertiesFormat `json:"properties,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for ExpressRoutePortsLocation. +func (erpl ExpressRoutePortsLocation) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if erpl.ExpressRoutePortsLocationPropertiesFormat != nil { + objectMap["properties"] = erpl.ExpressRoutePortsLocationPropertiesFormat + } + if erpl.ID != nil { + objectMap["id"] = erpl.ID + } + if erpl.Location != nil { + objectMap["location"] = erpl.Location + } + if erpl.Tags != nil { + objectMap["tags"] = erpl.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ExpressRoutePortsLocation struct. +func (erpl *ExpressRoutePortsLocation) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var expressRoutePortsLocationPropertiesFormat ExpressRoutePortsLocationPropertiesFormat + err = json.Unmarshal(*v, &expressRoutePortsLocationPropertiesFormat) + if err != nil { + return err + } + erpl.ExpressRoutePortsLocationPropertiesFormat = &expressRoutePortsLocationPropertiesFormat + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + erpl.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + erpl.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + erpl.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + erpl.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + erpl.Tags = tags + } + } + } + + return nil +} + +// ExpressRoutePortsLocationBandwidths real-time inventory of available ExpressRoute port bandwidths. +type ExpressRoutePortsLocationBandwidths struct { + // OfferName - READ-ONLY; Bandwidth descriptive name. + OfferName *string `json:"offerName,omitempty"` + // ValueInGbps - READ-ONLY; Bandwidth value in Gbps. + ValueInGbps *int32 `json:"valueInGbps,omitempty"` +} + +// ExpressRoutePortsLocationListResult response for ListExpressRoutePortsLocations API service call. +type ExpressRoutePortsLocationListResult struct { + autorest.Response `json:"-"` + // Value - The list of all ExpressRoutePort peering locations. + Value *[]ExpressRoutePortsLocation `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// ExpressRoutePortsLocationListResultIterator provides access to a complete listing of +// ExpressRoutePortsLocation values. +type ExpressRoutePortsLocationListResultIterator struct { + i int + page ExpressRoutePortsLocationListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ExpressRoutePortsLocationListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRoutePortsLocationListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ExpressRoutePortsLocationListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ExpressRoutePortsLocationListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ExpressRoutePortsLocationListResultIterator) Response() ExpressRoutePortsLocationListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ExpressRoutePortsLocationListResultIterator) Value() ExpressRoutePortsLocation { + if !iter.page.NotDone() { + return ExpressRoutePortsLocation{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ExpressRoutePortsLocationListResultIterator type. +func NewExpressRoutePortsLocationListResultIterator(page ExpressRoutePortsLocationListResultPage) ExpressRoutePortsLocationListResultIterator { + return ExpressRoutePortsLocationListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (erpllr ExpressRoutePortsLocationListResult) IsEmpty() bool { + return erpllr.Value == nil || len(*erpllr.Value) == 0 +} + +// expressRoutePortsLocationListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (erpllr ExpressRoutePortsLocationListResult) expressRoutePortsLocationListResultPreparer(ctx context.Context) (*http.Request, error) { + if erpllr.NextLink == nil || len(to.String(erpllr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(erpllr.NextLink))) +} + +// ExpressRoutePortsLocationListResultPage contains a page of ExpressRoutePortsLocation values. +type ExpressRoutePortsLocationListResultPage struct { + fn func(context.Context, ExpressRoutePortsLocationListResult) (ExpressRoutePortsLocationListResult, error) + erpllr ExpressRoutePortsLocationListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ExpressRoutePortsLocationListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRoutePortsLocationListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.erpllr) + if err != nil { + return err + } + page.erpllr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ExpressRoutePortsLocationListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ExpressRoutePortsLocationListResultPage) NotDone() bool { + return !page.erpllr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ExpressRoutePortsLocationListResultPage) Response() ExpressRoutePortsLocationListResult { + return page.erpllr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ExpressRoutePortsLocationListResultPage) Values() []ExpressRoutePortsLocation { + if page.erpllr.IsEmpty() { + return nil + } + return *page.erpllr.Value +} + +// Creates a new instance of the ExpressRoutePortsLocationListResultPage type. +func NewExpressRoutePortsLocationListResultPage(getNextPage func(context.Context, ExpressRoutePortsLocationListResult) (ExpressRoutePortsLocationListResult, error)) ExpressRoutePortsLocationListResultPage { + return ExpressRoutePortsLocationListResultPage{fn: getNextPage} +} + +// ExpressRoutePortsLocationPropertiesFormat properties specific to ExpressRoutePorts peering location +// resources. +type ExpressRoutePortsLocationPropertiesFormat struct { + // Address - READ-ONLY; Address of peering location. + Address *string `json:"address,omitempty"` + // Contact - READ-ONLY; Contact details of peering locations. + Contact *string `json:"contact,omitempty"` + // AvailableBandwidths - The inventory of available ExpressRoutePort bandwidths. + AvailableBandwidths *[]ExpressRoutePortsLocationBandwidths `json:"availableBandwidths,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the express route port location resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// ExpressRouteServiceProvider a ExpressRouteResourceProvider object. +type ExpressRouteServiceProvider struct { + // ExpressRouteServiceProviderPropertiesFormat - Properties of the express route service provider. + *ExpressRouteServiceProviderPropertiesFormat `json:"properties,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for ExpressRouteServiceProvider. +func (ersp ExpressRouteServiceProvider) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if ersp.ExpressRouteServiceProviderPropertiesFormat != nil { + objectMap["properties"] = ersp.ExpressRouteServiceProviderPropertiesFormat + } + if ersp.ID != nil { + objectMap["id"] = ersp.ID + } + if ersp.Location != nil { + objectMap["location"] = ersp.Location + } + if ersp.Tags != nil { + objectMap["tags"] = ersp.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ExpressRouteServiceProvider struct. +func (ersp *ExpressRouteServiceProvider) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var expressRouteServiceProviderPropertiesFormat ExpressRouteServiceProviderPropertiesFormat + err = json.Unmarshal(*v, &expressRouteServiceProviderPropertiesFormat) + if err != nil { + return err + } + ersp.ExpressRouteServiceProviderPropertiesFormat = &expressRouteServiceProviderPropertiesFormat + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + ersp.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + ersp.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + ersp.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + ersp.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + ersp.Tags = tags + } + } + } + + return nil +} + +// ExpressRouteServiceProviderBandwidthsOffered contains bandwidths offered in ExpressRouteServiceProvider +// resources. +type ExpressRouteServiceProviderBandwidthsOffered struct { + // OfferName - The OfferName. + OfferName *string `json:"offerName,omitempty"` + // ValueInMbps - The ValueInMbps. + ValueInMbps *int32 `json:"valueInMbps,omitempty"` +} + +// ExpressRouteServiceProviderListResult response for the ListExpressRouteServiceProvider API service call. +type ExpressRouteServiceProviderListResult struct { + autorest.Response `json:"-"` + // Value - A list of ExpressRouteResourceProvider resources. + Value *[]ExpressRouteServiceProvider `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// ExpressRouteServiceProviderListResultIterator provides access to a complete listing of +// ExpressRouteServiceProvider values. +type ExpressRouteServiceProviderListResultIterator struct { + i int + page ExpressRouteServiceProviderListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ExpressRouteServiceProviderListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteServiceProviderListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ExpressRouteServiceProviderListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ExpressRouteServiceProviderListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ExpressRouteServiceProviderListResultIterator) Response() ExpressRouteServiceProviderListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ExpressRouteServiceProviderListResultIterator) Value() ExpressRouteServiceProvider { + if !iter.page.NotDone() { + return ExpressRouteServiceProvider{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ExpressRouteServiceProviderListResultIterator type. +func NewExpressRouteServiceProviderListResultIterator(page ExpressRouteServiceProviderListResultPage) ExpressRouteServiceProviderListResultIterator { + return ExpressRouteServiceProviderListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (ersplr ExpressRouteServiceProviderListResult) IsEmpty() bool { + return ersplr.Value == nil || len(*ersplr.Value) == 0 +} + +// expressRouteServiceProviderListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (ersplr ExpressRouteServiceProviderListResult) expressRouteServiceProviderListResultPreparer(ctx context.Context) (*http.Request, error) { + if ersplr.NextLink == nil || len(to.String(ersplr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(ersplr.NextLink))) +} + +// ExpressRouteServiceProviderListResultPage contains a page of ExpressRouteServiceProvider values. +type ExpressRouteServiceProviderListResultPage struct { + fn func(context.Context, ExpressRouteServiceProviderListResult) (ExpressRouteServiceProviderListResult, error) + ersplr ExpressRouteServiceProviderListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ExpressRouteServiceProviderListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExpressRouteServiceProviderListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.ersplr) + if err != nil { + return err + } + page.ersplr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ExpressRouteServiceProviderListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ExpressRouteServiceProviderListResultPage) NotDone() bool { + return !page.ersplr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ExpressRouteServiceProviderListResultPage) Response() ExpressRouteServiceProviderListResult { + return page.ersplr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ExpressRouteServiceProviderListResultPage) Values() []ExpressRouteServiceProvider { + if page.ersplr.IsEmpty() { + return nil + } + return *page.ersplr.Value +} + +// Creates a new instance of the ExpressRouteServiceProviderListResultPage type. +func NewExpressRouteServiceProviderListResultPage(getNextPage func(context.Context, ExpressRouteServiceProviderListResult) (ExpressRouteServiceProviderListResult, error)) ExpressRouteServiceProviderListResultPage { + return ExpressRouteServiceProviderListResultPage{fn: getNextPage} +} + +// ExpressRouteServiceProviderPropertiesFormat properties of ExpressRouteServiceProvider. +type ExpressRouteServiceProviderPropertiesFormat struct { + // PeeringLocations - A list of peering locations. + PeeringLocations *[]string `json:"peeringLocations,omitempty"` + // BandwidthsOffered - A list of bandwidths offered. + BandwidthsOffered *[]ExpressRouteServiceProviderBandwidthsOffered `json:"bandwidthsOffered,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the express route service provider resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// FirewallPoliciesCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type FirewallPoliciesCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *FirewallPoliciesCreateOrUpdateFuture) Result(client FirewallPoliciesClient) (fp FirewallPolicy, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPoliciesCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.FirewallPoliciesCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if fp.Response.Response, err = future.GetResult(sender); err == nil && fp.Response.Response.StatusCode != http.StatusNoContent { + fp, err = client.CreateOrUpdateResponder(fp.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPoliciesCreateOrUpdateFuture", "Result", fp.Response.Response, "Failure responding to request") + } + } + return +} + +// FirewallPoliciesDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type FirewallPoliciesDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *FirewallPoliciesDeleteFuture) Result(client FirewallPoliciesClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPoliciesDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.FirewallPoliciesDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// FirewallPolicy firewallPolicy Resource. +type FirewallPolicy struct { + autorest.Response `json:"-"` + // FirewallPolicyPropertiesFormat - Properties of the firewall policy. + *FirewallPolicyPropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for FirewallPolicy. +func (fp FirewallPolicy) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if fp.FirewallPolicyPropertiesFormat != nil { + objectMap["properties"] = fp.FirewallPolicyPropertiesFormat + } + if fp.ID != nil { + objectMap["id"] = fp.ID + } + if fp.Location != nil { + objectMap["location"] = fp.Location + } + if fp.Tags != nil { + objectMap["tags"] = fp.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for FirewallPolicy struct. +func (fp *FirewallPolicy) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var firewallPolicyPropertiesFormat FirewallPolicyPropertiesFormat + err = json.Unmarshal(*v, &firewallPolicyPropertiesFormat) + if err != nil { + return err + } + fp.FirewallPolicyPropertiesFormat = &firewallPolicyPropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + fp.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + fp.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + fp.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + fp.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + fp.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + fp.Tags = tags + } + } + } + + return nil +} + +// FirewallPolicyFilterRule firewall Policy Filter Rule. +type FirewallPolicyFilterRule struct { + // Action - The action type of a Filter rule. + Action *FirewallPolicyFilterRuleAction `json:"action,omitempty"` + // RuleConditions - Collection of rule conditions used by a rule. + RuleConditions *[]BasicFirewallPolicyRuleCondition `json:"ruleConditions,omitempty"` + // Name - The name of the rule. + Name *string `json:"name,omitempty"` + // Priority - Priority of the Firewall Policy Rule resource. + Priority *int32 `json:"priority,omitempty"` + // RuleType - Possible values include: 'RuleTypeFirewallPolicyRule', 'RuleTypeFirewallPolicyNatRule', 'RuleTypeFirewallPolicyFilterRule' + RuleType RuleType `json:"ruleType,omitempty"` +} + +// MarshalJSON is the custom marshaler for FirewallPolicyFilterRule. +func (fpfr FirewallPolicyFilterRule) MarshalJSON() ([]byte, error) { + fpfr.RuleType = RuleTypeFirewallPolicyFilterRule + objectMap := make(map[string]interface{}) + if fpfr.Action != nil { + objectMap["action"] = fpfr.Action + } + if fpfr.RuleConditions != nil { + objectMap["ruleConditions"] = fpfr.RuleConditions + } + if fpfr.Name != nil { + objectMap["name"] = fpfr.Name + } + if fpfr.Priority != nil { + objectMap["priority"] = fpfr.Priority + } + if fpfr.RuleType != "" { + objectMap["ruleType"] = fpfr.RuleType + } + return json.Marshal(objectMap) +} + +// AsFirewallPolicyNatRule is the BasicFirewallPolicyRule implementation for FirewallPolicyFilterRule. +func (fpfr FirewallPolicyFilterRule) AsFirewallPolicyNatRule() (*FirewallPolicyNatRule, bool) { + return nil, false +} + +// AsFirewallPolicyFilterRule is the BasicFirewallPolicyRule implementation for FirewallPolicyFilterRule. +func (fpfr FirewallPolicyFilterRule) AsFirewallPolicyFilterRule() (*FirewallPolicyFilterRule, bool) { + return &fpfr, true +} + +// AsFirewallPolicyRule is the BasicFirewallPolicyRule implementation for FirewallPolicyFilterRule. +func (fpfr FirewallPolicyFilterRule) AsFirewallPolicyRule() (*FirewallPolicyRule, bool) { + return nil, false +} + +// AsBasicFirewallPolicyRule is the BasicFirewallPolicyRule implementation for FirewallPolicyFilterRule. +func (fpfr FirewallPolicyFilterRule) AsBasicFirewallPolicyRule() (BasicFirewallPolicyRule, bool) { + return &fpfr, true +} + +// UnmarshalJSON is the custom unmarshaler for FirewallPolicyFilterRule struct. +func (fpfr *FirewallPolicyFilterRule) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "action": + if v != nil { + var action FirewallPolicyFilterRuleAction + err = json.Unmarshal(*v, &action) + if err != nil { + return err + } + fpfr.Action = &action + } + case "ruleConditions": + if v != nil { + ruleConditions, err := unmarshalBasicFirewallPolicyRuleConditionArray(*v) + if err != nil { + return err + } + fpfr.RuleConditions = &ruleConditions + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + fpfr.Name = &name + } + case "priority": + if v != nil { + var priority int32 + err = json.Unmarshal(*v, &priority) + if err != nil { + return err + } + fpfr.Priority = &priority + } + case "ruleType": + if v != nil { + var ruleType RuleType + err = json.Unmarshal(*v, &ruleType) + if err != nil { + return err + } + fpfr.RuleType = ruleType + } + } + } + + return nil +} + +// FirewallPolicyFilterRuleAction properties of the FirewallPolicyFilterRuleAction. +type FirewallPolicyFilterRuleAction struct { + // Type - The type of action. Possible values include: 'FirewallPolicyFilterRuleActionTypeAllow', 'FirewallPolicyFilterRuleActionTypeDeny' + Type FirewallPolicyFilterRuleActionType `json:"type,omitempty"` +} + +// FirewallPolicyListResult response for ListFirewallPolicies API service call. +type FirewallPolicyListResult struct { + autorest.Response `json:"-"` + // Value - List of Firewall Policies in a resource group. + Value *[]FirewallPolicy `json:"value,omitempty"` + // NextLink - URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// FirewallPolicyListResultIterator provides access to a complete listing of FirewallPolicy values. +type FirewallPolicyListResultIterator struct { + i int + page FirewallPolicyListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *FirewallPolicyListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/FirewallPolicyListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *FirewallPolicyListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter FirewallPolicyListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter FirewallPolicyListResultIterator) Response() FirewallPolicyListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter FirewallPolicyListResultIterator) Value() FirewallPolicy { + if !iter.page.NotDone() { + return FirewallPolicy{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the FirewallPolicyListResultIterator type. +func NewFirewallPolicyListResultIterator(page FirewallPolicyListResultPage) FirewallPolicyListResultIterator { + return FirewallPolicyListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (fplr FirewallPolicyListResult) IsEmpty() bool { + return fplr.Value == nil || len(*fplr.Value) == 0 +} + +// firewallPolicyListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (fplr FirewallPolicyListResult) firewallPolicyListResultPreparer(ctx context.Context) (*http.Request, error) { + if fplr.NextLink == nil || len(to.String(fplr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(fplr.NextLink))) +} + +// FirewallPolicyListResultPage contains a page of FirewallPolicy values. +type FirewallPolicyListResultPage struct { + fn func(context.Context, FirewallPolicyListResult) (FirewallPolicyListResult, error) + fplr FirewallPolicyListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *FirewallPolicyListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/FirewallPolicyListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.fplr) + if err != nil { + return err + } + page.fplr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *FirewallPolicyListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page FirewallPolicyListResultPage) NotDone() bool { + return !page.fplr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page FirewallPolicyListResultPage) Response() FirewallPolicyListResult { + return page.fplr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page FirewallPolicyListResultPage) Values() []FirewallPolicy { + if page.fplr.IsEmpty() { + return nil + } + return *page.fplr.Value +} + +// Creates a new instance of the FirewallPolicyListResultPage type. +func NewFirewallPolicyListResultPage(getNextPage func(context.Context, FirewallPolicyListResult) (FirewallPolicyListResult, error)) FirewallPolicyListResultPage { + return FirewallPolicyListResultPage{fn: getNextPage} +} + +// FirewallPolicyNatRule firewall Policy NAT Rule. +type FirewallPolicyNatRule struct { + // Action - The action type of a Nat rule. + Action *FirewallPolicyNatRuleAction `json:"action,omitempty"` + // TranslatedAddress - The translated address for this NAT rule. + TranslatedAddress *string `json:"translatedAddress,omitempty"` + // TranslatedPort - The translated port for this NAT rule. + TranslatedPort *string `json:"translatedPort,omitempty"` + // RuleCondition - The match conditions for incoming traffic. + RuleCondition BasicFirewallPolicyRuleCondition `json:"ruleCondition,omitempty"` + // Name - The name of the rule. + Name *string `json:"name,omitempty"` + // Priority - Priority of the Firewall Policy Rule resource. + Priority *int32 `json:"priority,omitempty"` + // RuleType - Possible values include: 'RuleTypeFirewallPolicyRule', 'RuleTypeFirewallPolicyNatRule', 'RuleTypeFirewallPolicyFilterRule' + RuleType RuleType `json:"ruleType,omitempty"` +} + +// MarshalJSON is the custom marshaler for FirewallPolicyNatRule. +func (fpnr FirewallPolicyNatRule) MarshalJSON() ([]byte, error) { + fpnr.RuleType = RuleTypeFirewallPolicyNatRule + objectMap := make(map[string]interface{}) + if fpnr.Action != nil { + objectMap["action"] = fpnr.Action + } + if fpnr.TranslatedAddress != nil { + objectMap["translatedAddress"] = fpnr.TranslatedAddress + } + if fpnr.TranslatedPort != nil { + objectMap["translatedPort"] = fpnr.TranslatedPort + } + objectMap["ruleCondition"] = fpnr.RuleCondition + if fpnr.Name != nil { + objectMap["name"] = fpnr.Name + } + if fpnr.Priority != nil { + objectMap["priority"] = fpnr.Priority + } + if fpnr.RuleType != "" { + objectMap["ruleType"] = fpnr.RuleType + } + return json.Marshal(objectMap) +} + +// AsFirewallPolicyNatRule is the BasicFirewallPolicyRule implementation for FirewallPolicyNatRule. +func (fpnr FirewallPolicyNatRule) AsFirewallPolicyNatRule() (*FirewallPolicyNatRule, bool) { + return &fpnr, true +} + +// AsFirewallPolicyFilterRule is the BasicFirewallPolicyRule implementation for FirewallPolicyNatRule. +func (fpnr FirewallPolicyNatRule) AsFirewallPolicyFilterRule() (*FirewallPolicyFilterRule, bool) { + return nil, false +} + +// AsFirewallPolicyRule is the BasicFirewallPolicyRule implementation for FirewallPolicyNatRule. +func (fpnr FirewallPolicyNatRule) AsFirewallPolicyRule() (*FirewallPolicyRule, bool) { + return nil, false +} + +// AsBasicFirewallPolicyRule is the BasicFirewallPolicyRule implementation for FirewallPolicyNatRule. +func (fpnr FirewallPolicyNatRule) AsBasicFirewallPolicyRule() (BasicFirewallPolicyRule, bool) { + return &fpnr, true +} + +// UnmarshalJSON is the custom unmarshaler for FirewallPolicyNatRule struct. +func (fpnr *FirewallPolicyNatRule) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "action": + if v != nil { + var action FirewallPolicyNatRuleAction + err = json.Unmarshal(*v, &action) + if err != nil { + return err + } + fpnr.Action = &action + } + case "translatedAddress": + if v != nil { + var translatedAddress string + err = json.Unmarshal(*v, &translatedAddress) + if err != nil { + return err + } + fpnr.TranslatedAddress = &translatedAddress + } + case "translatedPort": + if v != nil { + var translatedPort string + err = json.Unmarshal(*v, &translatedPort) + if err != nil { + return err + } + fpnr.TranslatedPort = &translatedPort + } + case "ruleCondition": + if v != nil { + ruleCondition, err := unmarshalBasicFirewallPolicyRuleCondition(*v) + if err != nil { + return err + } + fpnr.RuleCondition = ruleCondition + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + fpnr.Name = &name + } + case "priority": + if v != nil { + var priority int32 + err = json.Unmarshal(*v, &priority) + if err != nil { + return err + } + fpnr.Priority = &priority + } + case "ruleType": + if v != nil { + var ruleType RuleType + err = json.Unmarshal(*v, &ruleType) + if err != nil { + return err + } + fpnr.RuleType = ruleType + } + } + } + + return nil +} + +// FirewallPolicyNatRuleAction properties of the FirewallPolicyNatRuleAction. +type FirewallPolicyNatRuleAction struct { + // Type - The type of action. Possible values include: 'DNAT' + Type FirewallPolicyNatRuleActionType `json:"type,omitempty"` +} + +// FirewallPolicyPropertiesFormat firewall Policy definition. +type FirewallPolicyPropertiesFormat struct { + // RuleGroups - READ-ONLY; List of references to FirewallPolicyRuleGroups. + RuleGroups *[]SubResource `json:"ruleGroups,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the firewall policy resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // BasePolicy - The parent firewall policy from which rules are inherited. + BasePolicy *SubResource `json:"basePolicy,omitempty"` + // Firewalls - READ-ONLY; List of references to Azure Firewalls that this Firewall Policy is associated with. + Firewalls *[]SubResource `json:"firewalls,omitempty"` + // ChildPolicies - READ-ONLY; List of references to Child Firewall Policies. + ChildPolicies *[]SubResource `json:"childPolicies,omitempty"` + // ThreatIntelMode - The operation mode for Threat Intelligence. Possible values include: 'AzureFirewallThreatIntelModeAlert', 'AzureFirewallThreatIntelModeDeny', 'AzureFirewallThreatIntelModeOff' + ThreatIntelMode AzureFirewallThreatIntelMode `json:"threatIntelMode,omitempty"` +} + +// BasicFirewallPolicyRule properties of the rule. +type BasicFirewallPolicyRule interface { + AsFirewallPolicyNatRule() (*FirewallPolicyNatRule, bool) + AsFirewallPolicyFilterRule() (*FirewallPolicyFilterRule, bool) + AsFirewallPolicyRule() (*FirewallPolicyRule, bool) +} + +// FirewallPolicyRule properties of the rule. +type FirewallPolicyRule struct { + // Name - The name of the rule. + Name *string `json:"name,omitempty"` + // Priority - Priority of the Firewall Policy Rule resource. + Priority *int32 `json:"priority,omitempty"` + // RuleType - Possible values include: 'RuleTypeFirewallPolicyRule', 'RuleTypeFirewallPolicyNatRule', 'RuleTypeFirewallPolicyFilterRule' + RuleType RuleType `json:"ruleType,omitempty"` +} + +func unmarshalBasicFirewallPolicyRule(body []byte) (BasicFirewallPolicyRule, error) { + var m map[string]interface{} + err := json.Unmarshal(body, &m) + if err != nil { + return nil, err + } + + switch m["ruleType"] { + case string(RuleTypeFirewallPolicyNatRule): + var fpnr FirewallPolicyNatRule + err := json.Unmarshal(body, &fpnr) + return fpnr, err + case string(RuleTypeFirewallPolicyFilterRule): + var fpfr FirewallPolicyFilterRule + err := json.Unmarshal(body, &fpfr) + return fpfr, err + default: + var fpr FirewallPolicyRule + err := json.Unmarshal(body, &fpr) + return fpr, err + } +} +func unmarshalBasicFirewallPolicyRuleArray(body []byte) ([]BasicFirewallPolicyRule, error) { + var rawMessages []*json.RawMessage + err := json.Unmarshal(body, &rawMessages) + if err != nil { + return nil, err + } + + fprArray := make([]BasicFirewallPolicyRule, len(rawMessages)) + + for index, rawMessage := range rawMessages { + fpr, err := unmarshalBasicFirewallPolicyRule(*rawMessage) + if err != nil { + return nil, err + } + fprArray[index] = fpr + } + return fprArray, nil +} + +// MarshalJSON is the custom marshaler for FirewallPolicyRule. +func (fpr FirewallPolicyRule) MarshalJSON() ([]byte, error) { + fpr.RuleType = RuleTypeFirewallPolicyRule + objectMap := make(map[string]interface{}) + if fpr.Name != nil { + objectMap["name"] = fpr.Name + } + if fpr.Priority != nil { + objectMap["priority"] = fpr.Priority + } + if fpr.RuleType != "" { + objectMap["ruleType"] = fpr.RuleType + } + return json.Marshal(objectMap) +} + +// AsFirewallPolicyNatRule is the BasicFirewallPolicyRule implementation for FirewallPolicyRule. +func (fpr FirewallPolicyRule) AsFirewallPolicyNatRule() (*FirewallPolicyNatRule, bool) { + return nil, false +} + +// AsFirewallPolicyFilterRule is the BasicFirewallPolicyRule implementation for FirewallPolicyRule. +func (fpr FirewallPolicyRule) AsFirewallPolicyFilterRule() (*FirewallPolicyFilterRule, bool) { + return nil, false +} + +// AsFirewallPolicyRule is the BasicFirewallPolicyRule implementation for FirewallPolicyRule. +func (fpr FirewallPolicyRule) AsFirewallPolicyRule() (*FirewallPolicyRule, bool) { + return &fpr, true +} + +// AsBasicFirewallPolicyRule is the BasicFirewallPolicyRule implementation for FirewallPolicyRule. +func (fpr FirewallPolicyRule) AsBasicFirewallPolicyRule() (BasicFirewallPolicyRule, bool) { + return &fpr, true +} + +// BasicFirewallPolicyRuleCondition properties of a rule. +type BasicFirewallPolicyRuleCondition interface { + AsApplicationRuleCondition() (*ApplicationRuleCondition, bool) + AsRuleCondition() (*RuleCondition, bool) + AsFirewallPolicyRuleCondition() (*FirewallPolicyRuleCondition, bool) +} + +// FirewallPolicyRuleCondition properties of a rule. +type FirewallPolicyRuleCondition struct { + // Name - Name of the rule condition. + Name *string `json:"name,omitempty"` + // Description - Description of the rule condition. + Description *string `json:"description,omitempty"` + // RuleConditionType - Possible values include: 'RuleConditionTypeFirewallPolicyRuleCondition', 'RuleConditionTypeApplicationRuleCondition', 'RuleConditionTypeNetworkRuleCondition' + RuleConditionType RuleConditionType `json:"ruleConditionType,omitempty"` +} + +func unmarshalBasicFirewallPolicyRuleCondition(body []byte) (BasicFirewallPolicyRuleCondition, error) { + var m map[string]interface{} + err := json.Unmarshal(body, &m) + if err != nil { + return nil, err + } + + switch m["ruleConditionType"] { + case string(RuleConditionTypeApplicationRuleCondition): + var arc ApplicationRuleCondition + err := json.Unmarshal(body, &arc) + return arc, err + case string(RuleConditionTypeNetworkRuleCondition): + var rc RuleCondition + err := json.Unmarshal(body, &rc) + return rc, err + default: + var fprc FirewallPolicyRuleCondition + err := json.Unmarshal(body, &fprc) + return fprc, err + } +} +func unmarshalBasicFirewallPolicyRuleConditionArray(body []byte) ([]BasicFirewallPolicyRuleCondition, error) { + var rawMessages []*json.RawMessage + err := json.Unmarshal(body, &rawMessages) + if err != nil { + return nil, err + } + + fprcArray := make([]BasicFirewallPolicyRuleCondition, len(rawMessages)) + + for index, rawMessage := range rawMessages { + fprc, err := unmarshalBasicFirewallPolicyRuleCondition(*rawMessage) + if err != nil { + return nil, err + } + fprcArray[index] = fprc + } + return fprcArray, nil +} + +// MarshalJSON is the custom marshaler for FirewallPolicyRuleCondition. +func (fprc FirewallPolicyRuleCondition) MarshalJSON() ([]byte, error) { + fprc.RuleConditionType = RuleConditionTypeFirewallPolicyRuleCondition + objectMap := make(map[string]interface{}) + if fprc.Name != nil { + objectMap["name"] = fprc.Name + } + if fprc.Description != nil { + objectMap["description"] = fprc.Description + } + if fprc.RuleConditionType != "" { + objectMap["ruleConditionType"] = fprc.RuleConditionType + } + return json.Marshal(objectMap) +} + +// AsApplicationRuleCondition is the BasicFirewallPolicyRuleCondition implementation for FirewallPolicyRuleCondition. +func (fprc FirewallPolicyRuleCondition) AsApplicationRuleCondition() (*ApplicationRuleCondition, bool) { + return nil, false +} + +// AsRuleCondition is the BasicFirewallPolicyRuleCondition implementation for FirewallPolicyRuleCondition. +func (fprc FirewallPolicyRuleCondition) AsRuleCondition() (*RuleCondition, bool) { + return nil, false +} + +// AsFirewallPolicyRuleCondition is the BasicFirewallPolicyRuleCondition implementation for FirewallPolicyRuleCondition. +func (fprc FirewallPolicyRuleCondition) AsFirewallPolicyRuleCondition() (*FirewallPolicyRuleCondition, bool) { + return &fprc, true +} + +// AsBasicFirewallPolicyRuleCondition is the BasicFirewallPolicyRuleCondition implementation for FirewallPolicyRuleCondition. +func (fprc FirewallPolicyRuleCondition) AsBasicFirewallPolicyRuleCondition() (BasicFirewallPolicyRuleCondition, bool) { + return &fprc, true +} + +// FirewallPolicyRuleConditionApplicationProtocol properties of the application rule protocol. +type FirewallPolicyRuleConditionApplicationProtocol struct { + // ProtocolType - Protocol type. Possible values include: 'FirewallPolicyRuleConditionApplicationProtocolTypeHTTP', 'FirewallPolicyRuleConditionApplicationProtocolTypeHTTPS' + ProtocolType FirewallPolicyRuleConditionApplicationProtocolType `json:"protocolType,omitempty"` + // Port - Port number for the protocol, cannot be greater than 64000. + Port *int32 `json:"port,omitempty"` +} + +// FirewallPolicyRuleGroup rule Group resource. +type FirewallPolicyRuleGroup struct { + autorest.Response `json:"-"` + // FirewallPolicyRuleGroupProperties - The properties of the firewall policy rule group. + *FirewallPolicyRuleGroupProperties `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Rule Group type. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for FirewallPolicyRuleGroup. +func (fprg FirewallPolicyRuleGroup) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if fprg.FirewallPolicyRuleGroupProperties != nil { + objectMap["properties"] = fprg.FirewallPolicyRuleGroupProperties + } + if fprg.Name != nil { + objectMap["name"] = fprg.Name + } + if fprg.ID != nil { + objectMap["id"] = fprg.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for FirewallPolicyRuleGroup struct. +func (fprg *FirewallPolicyRuleGroup) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var firewallPolicyRuleGroupProperties FirewallPolicyRuleGroupProperties + err = json.Unmarshal(*v, &firewallPolicyRuleGroupProperties) + if err != nil { + return err + } + fprg.FirewallPolicyRuleGroupProperties = &firewallPolicyRuleGroupProperties + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + fprg.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + fprg.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + fprg.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + fprg.ID = &ID + } + } + } + + return nil +} + +// FirewallPolicyRuleGroupListResult response for ListFirewallPolicyRuleGroups API service call. +type FirewallPolicyRuleGroupListResult struct { + autorest.Response `json:"-"` + // Value - List of FirewallPolicyRuleGroups in a FirewallPolicy. + Value *[]FirewallPolicyRuleGroup `json:"value,omitempty"` + // NextLink - URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// FirewallPolicyRuleGroupListResultIterator provides access to a complete listing of +// FirewallPolicyRuleGroup values. +type FirewallPolicyRuleGroupListResultIterator struct { + i int + page FirewallPolicyRuleGroupListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *FirewallPolicyRuleGroupListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/FirewallPolicyRuleGroupListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *FirewallPolicyRuleGroupListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter FirewallPolicyRuleGroupListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter FirewallPolicyRuleGroupListResultIterator) Response() FirewallPolicyRuleGroupListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter FirewallPolicyRuleGroupListResultIterator) Value() FirewallPolicyRuleGroup { + if !iter.page.NotDone() { + return FirewallPolicyRuleGroup{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the FirewallPolicyRuleGroupListResultIterator type. +func NewFirewallPolicyRuleGroupListResultIterator(page FirewallPolicyRuleGroupListResultPage) FirewallPolicyRuleGroupListResultIterator { + return FirewallPolicyRuleGroupListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (fprglr FirewallPolicyRuleGroupListResult) IsEmpty() bool { + return fprglr.Value == nil || len(*fprglr.Value) == 0 +} + +// firewallPolicyRuleGroupListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (fprglr FirewallPolicyRuleGroupListResult) firewallPolicyRuleGroupListResultPreparer(ctx context.Context) (*http.Request, error) { + if fprglr.NextLink == nil || len(to.String(fprglr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(fprglr.NextLink))) +} + +// FirewallPolicyRuleGroupListResultPage contains a page of FirewallPolicyRuleGroup values. +type FirewallPolicyRuleGroupListResultPage struct { + fn func(context.Context, FirewallPolicyRuleGroupListResult) (FirewallPolicyRuleGroupListResult, error) + fprglr FirewallPolicyRuleGroupListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *FirewallPolicyRuleGroupListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/FirewallPolicyRuleGroupListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.fprglr) + if err != nil { + return err + } + page.fprglr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *FirewallPolicyRuleGroupListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page FirewallPolicyRuleGroupListResultPage) NotDone() bool { + return !page.fprglr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page FirewallPolicyRuleGroupListResultPage) Response() FirewallPolicyRuleGroupListResult { + return page.fprglr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page FirewallPolicyRuleGroupListResultPage) Values() []FirewallPolicyRuleGroup { + if page.fprglr.IsEmpty() { + return nil + } + return *page.fprglr.Value +} + +// Creates a new instance of the FirewallPolicyRuleGroupListResultPage type. +func NewFirewallPolicyRuleGroupListResultPage(getNextPage func(context.Context, FirewallPolicyRuleGroupListResult) (FirewallPolicyRuleGroupListResult, error)) FirewallPolicyRuleGroupListResultPage { + return FirewallPolicyRuleGroupListResultPage{fn: getNextPage} +} + +// FirewallPolicyRuleGroupProperties properties of the rule group. +type FirewallPolicyRuleGroupProperties struct { + // Priority - Priority of the Firewall Policy Rule Group resource. + Priority *int32 `json:"priority,omitempty"` + // Rules - Group of Firewall Policy rules. + Rules *[]BasicFirewallPolicyRule `json:"rules,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the firewall policy rule group resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// UnmarshalJSON is the custom unmarshaler for FirewallPolicyRuleGroupProperties struct. +func (fprgp *FirewallPolicyRuleGroupProperties) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "priority": + if v != nil { + var priority int32 + err = json.Unmarshal(*v, &priority) + if err != nil { + return err + } + fprgp.Priority = &priority + } + case "rules": + if v != nil { + rules, err := unmarshalBasicFirewallPolicyRuleArray(*v) + if err != nil { + return err + } + fprgp.Rules = &rules + } + case "provisioningState": + if v != nil { + var provisioningState ProvisioningState + err = json.Unmarshal(*v, &provisioningState) + if err != nil { + return err + } + fprgp.ProvisioningState = provisioningState + } + } + } + + return nil +} + +// FirewallPolicyRuleGroupsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of +// a long-running operation. +type FirewallPolicyRuleGroupsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *FirewallPolicyRuleGroupsCreateOrUpdateFuture) Result(client FirewallPolicyRuleGroupsClient) (fprg FirewallPolicyRuleGroup, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPolicyRuleGroupsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.FirewallPolicyRuleGroupsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if fprg.Response.Response, err = future.GetResult(sender); err == nil && fprg.Response.Response.StatusCode != http.StatusNoContent { + fprg, err = client.CreateOrUpdateResponder(fprg.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPolicyRuleGroupsCreateOrUpdateFuture", "Result", fprg.Response.Response, "Failure responding to request") + } + } + return +} + +// FirewallPolicyRuleGroupsDeleteFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type FirewallPolicyRuleGroupsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *FirewallPolicyRuleGroupsDeleteFuture) Result(client FirewallPolicyRuleGroupsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.FirewallPolicyRuleGroupsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.FirewallPolicyRuleGroupsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// FlowLogFormatParameters parameters that define the flow log format. +type FlowLogFormatParameters struct { + // Type - The file type of flow log. Possible values include: 'JSON' + Type FlowLogFormatType `json:"type,omitempty"` + // Version - The version (revision) of the flow log. + Version *int32 `json:"version,omitempty"` +} + +// FlowLogInformation information on the configuration of flow log and traffic analytics (optional) . +type FlowLogInformation struct { + autorest.Response `json:"-"` + // TargetResourceID - The ID of the resource to configure for flow log and traffic analytics (optional) . + TargetResourceID *string `json:"targetResourceId,omitempty"` + // FlowLogProperties - Properties of the flow log. + *FlowLogProperties `json:"properties,omitempty"` + // FlowAnalyticsConfiguration - Parameters that define the configuration of traffic analytics. + FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"` +} + +// MarshalJSON is the custom marshaler for FlowLogInformation. +func (fli FlowLogInformation) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if fli.TargetResourceID != nil { + objectMap["targetResourceId"] = fli.TargetResourceID + } + if fli.FlowLogProperties != nil { + objectMap["properties"] = fli.FlowLogProperties + } + if fli.FlowAnalyticsConfiguration != nil { + objectMap["flowAnalyticsConfiguration"] = fli.FlowAnalyticsConfiguration + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for FlowLogInformation struct. +func (fli *FlowLogInformation) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "targetResourceId": + if v != nil { + var targetResourceID string + err = json.Unmarshal(*v, &targetResourceID) + if err != nil { + return err + } + fli.TargetResourceID = &targetResourceID + } + case "properties": + if v != nil { + var flowLogProperties FlowLogProperties + err = json.Unmarshal(*v, &flowLogProperties) + if err != nil { + return err + } + fli.FlowLogProperties = &flowLogProperties + } + case "flowAnalyticsConfiguration": + if v != nil { + var flowAnalyticsConfiguration TrafficAnalyticsProperties + err = json.Unmarshal(*v, &flowAnalyticsConfiguration) + if err != nil { + return err + } + fli.FlowAnalyticsConfiguration = &flowAnalyticsConfiguration + } + } + } + + return nil +} + +// FlowLogProperties parameters that define the configuration of flow log. +type FlowLogProperties struct { + // StorageID - ID of the storage account which is used to store the flow log. + StorageID *string `json:"storageId,omitempty"` + // Enabled - Flag to enable/disable flow logging. + Enabled *bool `json:"enabled,omitempty"` + // RetentionPolicy - Parameters that define the retention policy for flow log. + RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"` + // Format - Parameters that define the flow log format. + Format *FlowLogFormatParameters `json:"format,omitempty"` +} + +// FlowLogStatusParameters parameters that define a resource to query flow log and traffic analytics +// (optional) status. +type FlowLogStatusParameters struct { + // TargetResourceID - The target resource where getting the flow log and traffic analytics (optional) status. + TargetResourceID *string `json:"targetResourceId,omitempty"` +} + +// FrontendIPConfiguration frontend IP address of the load balancer. +type FrontendIPConfiguration struct { + autorest.Response `json:"-"` + // FrontendIPConfigurationPropertiesFormat - Properties of the load balancer probe. + *FrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within the set of frontend IP configurations used by the load balancer. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Type of the resource. + Type *string `json:"type,omitempty"` + // Zones - A list of availability zones denoting the IP allocated for the resource needs to come from. + Zones *[]string `json:"zones,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for FrontendIPConfiguration. +func (fic FrontendIPConfiguration) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if fic.FrontendIPConfigurationPropertiesFormat != nil { + objectMap["properties"] = fic.FrontendIPConfigurationPropertiesFormat + } + if fic.Name != nil { + objectMap["name"] = fic.Name + } + if fic.Zones != nil { + objectMap["zones"] = fic.Zones + } + if fic.ID != nil { + objectMap["id"] = fic.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for FrontendIPConfiguration struct. +func (fic *FrontendIPConfiguration) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var frontendIPConfigurationPropertiesFormat FrontendIPConfigurationPropertiesFormat + err = json.Unmarshal(*v, &frontendIPConfigurationPropertiesFormat) + if err != nil { + return err + } + fic.FrontendIPConfigurationPropertiesFormat = &frontendIPConfigurationPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + fic.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + fic.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + fic.Type = &typeVar + } + case "zones": + if v != nil { + var zones []string + err = json.Unmarshal(*v, &zones) + if err != nil { + return err + } + fic.Zones = &zones + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + fic.ID = &ID + } + } + } + + return nil +} + +// FrontendIPConfigurationPropertiesFormat properties of Frontend IP Configuration of the load balancer. +type FrontendIPConfigurationPropertiesFormat struct { + // InboundNatRules - READ-ONLY; An array of references to inbound rules that use this frontend IP. + InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` + // InboundNatPools - READ-ONLY; An array of references to inbound pools that use this frontend IP. + InboundNatPools *[]SubResource `json:"inboundNatPools,omitempty"` + // OutboundRules - READ-ONLY; An array of references to outbound rules that use this frontend IP. + OutboundRules *[]SubResource `json:"outboundRules,omitempty"` + // LoadBalancingRules - READ-ONLY; An array of references to load balancing rules that use this frontend IP. + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + // PrivateIPAddress - The private IP address of the IP configuration. + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + // PrivateIPAllocationMethod - The Private IP allocation method. Possible values include: 'Static', 'Dynamic' + PrivateIPAllocationMethod IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + // PrivateIPAddressVersion - Whether the specific ipconfiguration is IPv4 or IPv6. Default is taken as IPv4. Possible values include: 'IPv4', 'IPv6' + PrivateIPAddressVersion IPVersion `json:"privateIPAddressVersion,omitempty"` + // Subnet - The reference of the subnet resource. + Subnet *Subnet `json:"subnet,omitempty"` + // PublicIPAddress - The reference of the Public IP resource. + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + // PublicIPPrefix - The reference of the Public IP Prefix resource. + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the frontend IP configuration resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// GatewayRoute gateway routing details. +type GatewayRoute struct { + // LocalAddress - READ-ONLY; The gateway's local address. + LocalAddress *string `json:"localAddress,omitempty"` + // NetworkProperty - READ-ONLY; The route's network prefix. + NetworkProperty *string `json:"network,omitempty"` + // NextHop - READ-ONLY; The route's next hop. + NextHop *string `json:"nextHop,omitempty"` + // SourcePeer - READ-ONLY; The peer this route was learned from. + SourcePeer *string `json:"sourcePeer,omitempty"` + // Origin - READ-ONLY; The source this route was learned from. + Origin *string `json:"origin,omitempty"` + // AsPath - READ-ONLY; The route's AS path sequence. + AsPath *string `json:"asPath,omitempty"` + // Weight - READ-ONLY; The route's weight. + Weight *int32 `json:"weight,omitempty"` +} + +// GatewayRouteListResult list of virtual network gateway routes. +type GatewayRouteListResult struct { + autorest.Response `json:"-"` + // Value - List of gateway routes. + Value *[]GatewayRoute `json:"value,omitempty"` +} + +// GeneratevirtualwanvpnserverconfigurationvpnprofileFuture an abstraction for monitoring and retrieving +// the results of a long-running operation. +type GeneratevirtualwanvpnserverconfigurationvpnprofileFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *GeneratevirtualwanvpnserverconfigurationvpnprofileFuture) Result(client BaseClient) (vpr VpnProfileResponse, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.GeneratevirtualwanvpnserverconfigurationvpnprofileFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.GeneratevirtualwanvpnserverconfigurationvpnprofileFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if vpr.Response.Response, err = future.GetResult(sender); err == nil && vpr.Response.Response.StatusCode != http.StatusNoContent { + vpr, err = client.GeneratevirtualwanvpnserverconfigurationvpnprofileResponder(vpr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.GeneratevirtualwanvpnserverconfigurationvpnprofileFuture", "Result", vpr.Response.Response, "Failure responding to request") + } + } + return +} + +// GetActiveSessionsAllFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type GetActiveSessionsAllFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *GetActiveSessionsAllFuture) Result(client BaseClient) (baslrp BastionActiveSessionListResultPage, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.GetActiveSessionsAllFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.GetActiveSessionsAllFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if baslrp.baslr.Response.Response, err = future.GetResult(sender); err == nil && baslrp.baslr.Response.Response.StatusCode != http.StatusNoContent { + baslrp, err = client.GetActiveSessionsResponder(baslrp.baslr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.GetActiveSessionsAllFuture", "Result", baslrp.baslr.Response.Response, "Failure responding to request") + } + } + return +} + +// GetActiveSessionsFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type GetActiveSessionsFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *GetActiveSessionsFuture) Result(client BaseClient) (baslrp BastionActiveSessionListResultPage, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.GetActiveSessionsFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.GetActiveSessionsFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if baslrp.baslr.Response.Response, err = future.GetResult(sender); err == nil && baslrp.baslr.Response.Response.StatusCode != http.StatusNoContent { + baslrp, err = client.GetActiveSessionsResponder(baslrp.baslr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.GetActiveSessionsFuture", "Result", baslrp.baslr.Response.Response, "Failure responding to request") + } + } + return +} + +// GetVpnSitesConfigurationRequest list of Vpn-Sites. +type GetVpnSitesConfigurationRequest struct { + // VpnSites - List of resource-ids of the vpn-sites for which config is to be downloaded. + VpnSites *[]string `json:"vpnSites,omitempty"` + // OutputBlobSasURL - The sas-url to download the configurations for vpn-sites. + OutputBlobSasURL *string `json:"outputBlobSasUrl,omitempty"` +} + +// HTTPConfiguration HTTP configuration of the connectivity check. +type HTTPConfiguration struct { + // Method - HTTP method. Possible values include: 'Get' + Method HTTPMethod `json:"method,omitempty"` + // Headers - List of HTTP headers. + Headers *[]HTTPHeader `json:"headers,omitempty"` + // ValidStatusCodes - Valid status codes. + ValidStatusCodes *[]int32 `json:"validStatusCodes,omitempty"` +} + +// HTTPHeader describes the HTTP header. +type HTTPHeader struct { + // Name - The name in HTTP header. + Name *string `json:"name,omitempty"` + // Value - The value in HTTP header. + Value *string `json:"value,omitempty"` +} + +// HubIPAddresses IP addresses associated with azure firewall. +type HubIPAddresses struct { + // PublicIPAddresses - List of Public IP addresses associated with azure firewall. + PublicIPAddresses *[]AzureFirewallPublicIPAddress `json:"publicIPAddresses,omitempty"` + // PrivateIPAddress - Private IP Address associated with azure firewall. + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` +} + +// HubVirtualNetworkConnection hubVirtualNetworkConnection Resource. +type HubVirtualNetworkConnection struct { + autorest.Response `json:"-"` + // HubVirtualNetworkConnectionProperties - Properties of the hub virtual network connection. + *HubVirtualNetworkConnectionProperties `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for HubVirtualNetworkConnection. +func (hvnc HubVirtualNetworkConnection) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if hvnc.HubVirtualNetworkConnectionProperties != nil { + objectMap["properties"] = hvnc.HubVirtualNetworkConnectionProperties + } + if hvnc.Name != nil { + objectMap["name"] = hvnc.Name + } + if hvnc.ID != nil { + objectMap["id"] = hvnc.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for HubVirtualNetworkConnection struct. +func (hvnc *HubVirtualNetworkConnection) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var hubVirtualNetworkConnectionProperties HubVirtualNetworkConnectionProperties + err = json.Unmarshal(*v, &hubVirtualNetworkConnectionProperties) + if err != nil { + return err + } + hvnc.HubVirtualNetworkConnectionProperties = &hubVirtualNetworkConnectionProperties + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + hvnc.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + hvnc.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + hvnc.ID = &ID + } + } + } + + return nil +} + +// HubVirtualNetworkConnectionProperties parameters for HubVirtualNetworkConnection. +type HubVirtualNetworkConnectionProperties struct { + // RemoteVirtualNetwork - Reference to the remote virtual network. + RemoteVirtualNetwork *SubResource `json:"remoteVirtualNetwork,omitempty"` + // AllowHubToRemoteVnetTransit - VirtualHub to RemoteVnet transit to enabled or not. + AllowHubToRemoteVnetTransit *bool `json:"allowHubToRemoteVnetTransit,omitempty"` + // AllowRemoteVnetToUseHubVnetGateways - Allow RemoteVnet to use Virtual Hub's gateways. + AllowRemoteVnetToUseHubVnetGateways *bool `json:"allowRemoteVnetToUseHubVnetGateways,omitempty"` + // EnableInternetSecurity - Enable internet security. + EnableInternetSecurity *bool `json:"enableInternetSecurity,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the hub virtual network connection resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// InboundNatPool inbound NAT pool of the load balancer. +type InboundNatPool struct { + // InboundNatPoolPropertiesFormat - Properties of load balancer inbound nat pool. + *InboundNatPoolPropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within the set of inbound NAT pools used by the load balancer. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Type of the resource. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for InboundNatPool. +func (inp InboundNatPool) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if inp.InboundNatPoolPropertiesFormat != nil { + objectMap["properties"] = inp.InboundNatPoolPropertiesFormat + } + if inp.Name != nil { + objectMap["name"] = inp.Name + } + if inp.ID != nil { + objectMap["id"] = inp.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for InboundNatPool struct. +func (inp *InboundNatPool) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var inboundNatPoolPropertiesFormat InboundNatPoolPropertiesFormat + err = json.Unmarshal(*v, &inboundNatPoolPropertiesFormat) + if err != nil { + return err + } + inp.InboundNatPoolPropertiesFormat = &inboundNatPoolPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + inp.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + inp.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + inp.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + inp.ID = &ID + } + } + } + + return nil +} + +// InboundNatPoolPropertiesFormat properties of Inbound NAT pool. +type InboundNatPoolPropertiesFormat struct { + // FrontendIPConfiguration - A reference to frontend IP addresses. + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + // Protocol - The reference to the transport protocol used by the inbound NAT pool. Possible values include: 'TransportProtocolUDP', 'TransportProtocolTCP', 'TransportProtocolAll' + Protocol TransportProtocol `json:"protocol,omitempty"` + // FrontendPortRangeStart - The first port number in the range of external ports that will be used to provide Inbound Nat to NICs associated with a load balancer. Acceptable values range between 1 and 65534. + FrontendPortRangeStart *int32 `json:"frontendPortRangeStart,omitempty"` + // FrontendPortRangeEnd - The last port number in the range of external ports that will be used to provide Inbound Nat to NICs associated with a load balancer. Acceptable values range between 1 and 65535. + FrontendPortRangeEnd *int32 `json:"frontendPortRangeEnd,omitempty"` + // BackendPort - The port used for internal connections on the endpoint. Acceptable values are between 1 and 65535. + BackendPort *int32 `json:"backendPort,omitempty"` + // IdleTimeoutInMinutes - The timeout for the TCP idle connection. The value can be set between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the protocol is set to TCP. + IdleTimeoutInMinutes *int32 `json:"idleTimeoutInMinutes,omitempty"` + // EnableFloatingIP - Configures a virtual machine's endpoint for the floating IP capability required to configure a SQL AlwaysOn Availability Group. This setting is required when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed after you create the endpoint. + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + // EnableTCPReset - Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected connection termination. This element is only used when the protocol is set to TCP. + EnableTCPReset *bool `json:"enableTcpReset,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the inbound NAT pool resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// InboundNatRule inbound NAT rule of the load balancer. +type InboundNatRule struct { + autorest.Response `json:"-"` + // InboundNatRulePropertiesFormat - Properties of load balancer inbound nat rule. + *InboundNatRulePropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within the set of inbound NAT rules used by the load balancer. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Type of the resource. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for InboundNatRule. +func (inr InboundNatRule) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if inr.InboundNatRulePropertiesFormat != nil { + objectMap["properties"] = inr.InboundNatRulePropertiesFormat + } + if inr.Name != nil { + objectMap["name"] = inr.Name + } + if inr.ID != nil { + objectMap["id"] = inr.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for InboundNatRule struct. +func (inr *InboundNatRule) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var inboundNatRulePropertiesFormat InboundNatRulePropertiesFormat + err = json.Unmarshal(*v, &inboundNatRulePropertiesFormat) + if err != nil { + return err + } + inr.InboundNatRulePropertiesFormat = &inboundNatRulePropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + inr.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + inr.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + inr.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + inr.ID = &ID + } + } + } + + return nil +} + +// InboundNatRuleListResult response for ListInboundNatRule API service call. +type InboundNatRuleListResult struct { + autorest.Response `json:"-"` + // Value - A list of inbound nat rules in a load balancer. + Value *[]InboundNatRule `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// InboundNatRuleListResultIterator provides access to a complete listing of InboundNatRule values. +type InboundNatRuleListResultIterator struct { + i int + page InboundNatRuleListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *InboundNatRuleListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InboundNatRuleListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *InboundNatRuleListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter InboundNatRuleListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter InboundNatRuleListResultIterator) Response() InboundNatRuleListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter InboundNatRuleListResultIterator) Value() InboundNatRule { + if !iter.page.NotDone() { + return InboundNatRule{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the InboundNatRuleListResultIterator type. +func NewInboundNatRuleListResultIterator(page InboundNatRuleListResultPage) InboundNatRuleListResultIterator { + return InboundNatRuleListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (inrlr InboundNatRuleListResult) IsEmpty() bool { + return inrlr.Value == nil || len(*inrlr.Value) == 0 +} + +// inboundNatRuleListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (inrlr InboundNatRuleListResult) inboundNatRuleListResultPreparer(ctx context.Context) (*http.Request, error) { + if inrlr.NextLink == nil || len(to.String(inrlr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(inrlr.NextLink))) +} + +// InboundNatRuleListResultPage contains a page of InboundNatRule values. +type InboundNatRuleListResultPage struct { + fn func(context.Context, InboundNatRuleListResult) (InboundNatRuleListResult, error) + inrlr InboundNatRuleListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *InboundNatRuleListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InboundNatRuleListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.inrlr) + if err != nil { + return err + } + page.inrlr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *InboundNatRuleListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page InboundNatRuleListResultPage) NotDone() bool { + return !page.inrlr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page InboundNatRuleListResultPage) Response() InboundNatRuleListResult { + return page.inrlr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page InboundNatRuleListResultPage) Values() []InboundNatRule { + if page.inrlr.IsEmpty() { + return nil + } + return *page.inrlr.Value +} + +// Creates a new instance of the InboundNatRuleListResultPage type. +func NewInboundNatRuleListResultPage(getNextPage func(context.Context, InboundNatRuleListResult) (InboundNatRuleListResult, error)) InboundNatRuleListResultPage { + return InboundNatRuleListResultPage{fn: getNextPage} +} + +// InboundNatRulePropertiesFormat properties of the inbound NAT rule. +type InboundNatRulePropertiesFormat struct { + // FrontendIPConfiguration - A reference to frontend IP addresses. + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + // BackendIPConfiguration - READ-ONLY; A reference to a private IP address defined on a network interface of a VM. Traffic sent to the frontend port of each of the frontend IP configurations is forwarded to the backend IP. + BackendIPConfiguration *InterfaceIPConfiguration `json:"backendIPConfiguration,omitempty"` + // Protocol - The reference to the transport protocol used by the load balancing rule. Possible values include: 'TransportProtocolUDP', 'TransportProtocolTCP', 'TransportProtocolAll' + Protocol TransportProtocol `json:"protocol,omitempty"` + // FrontendPort - The port for the external endpoint. Port numbers for each rule must be unique within the Load Balancer. Acceptable values range from 1 to 65534. + FrontendPort *int32 `json:"frontendPort,omitempty"` + // BackendPort - The port used for the internal endpoint. Acceptable values range from 1 to 65535. + BackendPort *int32 `json:"backendPort,omitempty"` + // IdleTimeoutInMinutes - The timeout for the TCP idle connection. The value can be set between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the protocol is set to TCP. + IdleTimeoutInMinutes *int32 `json:"idleTimeoutInMinutes,omitempty"` + // EnableFloatingIP - Configures a virtual machine's endpoint for the floating IP capability required to configure a SQL AlwaysOn Availability Group. This setting is required when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed after you create the endpoint. + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + // EnableTCPReset - Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected connection termination. This element is only used when the protocol is set to TCP. + EnableTCPReset *bool `json:"enableTcpReset,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the inbound NAT rule resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// InboundNatRulesCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type InboundNatRulesCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *InboundNatRulesCreateOrUpdateFuture) Result(client InboundNatRulesClient) (inr InboundNatRule, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InboundNatRulesCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.InboundNatRulesCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if inr.Response.Response, err = future.GetResult(sender); err == nil && inr.Response.Response.StatusCode != http.StatusNoContent { + inr, err = client.CreateOrUpdateResponder(inr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InboundNatRulesCreateOrUpdateFuture", "Result", inr.Response.Response, "Failure responding to request") + } + } + return +} + +// InboundNatRulesDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type InboundNatRulesDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *InboundNatRulesDeleteFuture) Result(client InboundNatRulesClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InboundNatRulesDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.InboundNatRulesDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// IntentPolicy network Intent Policy resource. +type IntentPolicy struct { + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for IntentPolicy. +func (IP IntentPolicy) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if IP.ID != nil { + objectMap["id"] = IP.ID + } + if IP.Location != nil { + objectMap["location"] = IP.Location + } + if IP.Tags != nil { + objectMap["tags"] = IP.Tags + } + return json.Marshal(objectMap) +} + +// IntentPolicyConfiguration details of NetworkIntentPolicyConfiguration for PrepareNetworkPoliciesRequest. +type IntentPolicyConfiguration struct { + // NetworkIntentPolicyName - The name of the Network Intent Policy for storing in target subscription. + NetworkIntentPolicyName *string `json:"networkIntentPolicyName,omitempty"` + // SourceNetworkIntentPolicy - Source network intent policy. + SourceNetworkIntentPolicy *IntentPolicy `json:"sourceNetworkIntentPolicy,omitempty"` +} + +// Interface a network interface in a resource group. +type Interface struct { + autorest.Response `json:"-"` + // InterfacePropertiesFormat - Properties of the network interface. + *InterfacePropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for Interface. +func (i Interface) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if i.InterfacePropertiesFormat != nil { + objectMap["properties"] = i.InterfacePropertiesFormat + } + if i.ID != nil { + objectMap["id"] = i.ID + } + if i.Location != nil { + objectMap["location"] = i.Location + } + if i.Tags != nil { + objectMap["tags"] = i.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for Interface struct. +func (i *Interface) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var interfacePropertiesFormat InterfacePropertiesFormat + err = json.Unmarshal(*v, &interfacePropertiesFormat) + if err != nil { + return err + } + i.InterfacePropertiesFormat = &interfacePropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + i.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + i.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + i.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + i.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + i.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + i.Tags = tags + } + } + } + + return nil +} + +// InterfaceAssociation network interface and its custom security rules. +type InterfaceAssociation struct { + // ID - READ-ONLY; Network interface ID. + ID *string `json:"id,omitempty"` + // SecurityRules - Collection of custom security rules. + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` +} + +// InterfaceDNSSettings DNS settings of a network interface. +type InterfaceDNSSettings struct { + // DNSServers - List of DNS servers IP addresses. Use 'AzureProvidedDNS' to switch to azure provided DNS resolution. 'AzureProvidedDNS' value cannot be combined with other IPs, it must be the only value in dnsServers collection. + DNSServers *[]string `json:"dnsServers,omitempty"` + // AppliedDNSServers - READ-ONLY; If the VM that uses this NIC is part of an Availability Set, then this list will have the union of all DNS servers from all NICs that are part of the Availability Set. This property is what is configured on each of those VMs. + AppliedDNSServers *[]string `json:"appliedDnsServers,omitempty"` + // InternalDNSNameLabel - Relative DNS name for this NIC used for internal communications between VMs in the same virtual network. + InternalDNSNameLabel *string `json:"internalDnsNameLabel,omitempty"` + // InternalFqdn - READ-ONLY; Fully qualified DNS name supporting internal communications between VMs in the same virtual network. + InternalFqdn *string `json:"internalFqdn,omitempty"` + // InternalDomainNameSuffix - READ-ONLY; Even if internalDnsNameLabel is not specified, a DNS entry is created for the primary NIC of the VM. This DNS name can be constructed by concatenating the VM name with the value of internalDomainNameSuffix. + InternalDomainNameSuffix *string `json:"internalDomainNameSuffix,omitempty"` +} + +// InterfaceIPConfiguration iPConfiguration in a network interface. +type InterfaceIPConfiguration struct { + autorest.Response `json:"-"` + // InterfaceIPConfigurationPropertiesFormat - Network interface IP configuration properties. + *InterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for InterfaceIPConfiguration. +func (iic InterfaceIPConfiguration) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if iic.InterfaceIPConfigurationPropertiesFormat != nil { + objectMap["properties"] = iic.InterfaceIPConfigurationPropertiesFormat + } + if iic.Name != nil { + objectMap["name"] = iic.Name + } + if iic.ID != nil { + objectMap["id"] = iic.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for InterfaceIPConfiguration struct. +func (iic *InterfaceIPConfiguration) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var interfaceIPConfigurationPropertiesFormat InterfaceIPConfigurationPropertiesFormat + err = json.Unmarshal(*v, &interfaceIPConfigurationPropertiesFormat) + if err != nil { + return err + } + iic.InterfaceIPConfigurationPropertiesFormat = &interfaceIPConfigurationPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + iic.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + iic.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + iic.ID = &ID + } + } + } + + return nil +} + +// InterfaceIPConfigurationListResult response for list ip configurations API service call. +type InterfaceIPConfigurationListResult struct { + autorest.Response `json:"-"` + // Value - A list of ip configurations. + Value *[]InterfaceIPConfiguration `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// InterfaceIPConfigurationListResultIterator provides access to a complete listing of +// InterfaceIPConfiguration values. +type InterfaceIPConfigurationListResultIterator struct { + i int + page InterfaceIPConfigurationListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *InterfaceIPConfigurationListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfaceIPConfigurationListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *InterfaceIPConfigurationListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter InterfaceIPConfigurationListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter InterfaceIPConfigurationListResultIterator) Response() InterfaceIPConfigurationListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter InterfaceIPConfigurationListResultIterator) Value() InterfaceIPConfiguration { + if !iter.page.NotDone() { + return InterfaceIPConfiguration{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the InterfaceIPConfigurationListResultIterator type. +func NewInterfaceIPConfigurationListResultIterator(page InterfaceIPConfigurationListResultPage) InterfaceIPConfigurationListResultIterator { + return InterfaceIPConfigurationListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (iiclr InterfaceIPConfigurationListResult) IsEmpty() bool { + return iiclr.Value == nil || len(*iiclr.Value) == 0 +} + +// interfaceIPConfigurationListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (iiclr InterfaceIPConfigurationListResult) interfaceIPConfigurationListResultPreparer(ctx context.Context) (*http.Request, error) { + if iiclr.NextLink == nil || len(to.String(iiclr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(iiclr.NextLink))) +} + +// InterfaceIPConfigurationListResultPage contains a page of InterfaceIPConfiguration values. +type InterfaceIPConfigurationListResultPage struct { + fn func(context.Context, InterfaceIPConfigurationListResult) (InterfaceIPConfigurationListResult, error) + iiclr InterfaceIPConfigurationListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *InterfaceIPConfigurationListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfaceIPConfigurationListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.iiclr) + if err != nil { + return err + } + page.iiclr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *InterfaceIPConfigurationListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page InterfaceIPConfigurationListResultPage) NotDone() bool { + return !page.iiclr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page InterfaceIPConfigurationListResultPage) Response() InterfaceIPConfigurationListResult { + return page.iiclr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page InterfaceIPConfigurationListResultPage) Values() []InterfaceIPConfiguration { + if page.iiclr.IsEmpty() { + return nil + } + return *page.iiclr.Value +} + +// Creates a new instance of the InterfaceIPConfigurationListResultPage type. +func NewInterfaceIPConfigurationListResultPage(getNextPage func(context.Context, InterfaceIPConfigurationListResult) (InterfaceIPConfigurationListResult, error)) InterfaceIPConfigurationListResultPage { + return InterfaceIPConfigurationListResultPage{fn: getNextPage} +} + +// InterfaceIPConfigurationPrivateLinkConnectionProperties privateLinkConnection properties for the network +// interface. +type InterfaceIPConfigurationPrivateLinkConnectionProperties struct { + // GroupID - READ-ONLY; The group ID for current private link connection. + GroupID *string `json:"groupId,omitempty"` + // RequiredMemberName - READ-ONLY; The required member name for current private link connection. + RequiredMemberName *string `json:"requiredMemberName,omitempty"` + // Fqdns - READ-ONLY; List of FQDNs for current private link connection. + Fqdns *[]string `json:"fqdns,omitempty"` +} + +// InterfaceIPConfigurationPropertiesFormat properties of IP configuration. +type InterfaceIPConfigurationPropertiesFormat struct { + // VirtualNetworkTaps - The reference to Virtual Network Taps. + VirtualNetworkTaps *[]VirtualNetworkTap `json:"virtualNetworkTaps,omitempty"` + // ApplicationGatewayBackendAddressPools - The reference of ApplicationGatewayBackendAddressPool resource. + ApplicationGatewayBackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"applicationGatewayBackendAddressPools,omitempty"` + // LoadBalancerBackendAddressPools - The reference of LoadBalancerBackendAddressPool resource. + LoadBalancerBackendAddressPools *[]BackendAddressPool `json:"loadBalancerBackendAddressPools,omitempty"` + // LoadBalancerInboundNatRules - A list of references of LoadBalancerInboundNatRules. + LoadBalancerInboundNatRules *[]InboundNatRule `json:"loadBalancerInboundNatRules,omitempty"` + // PrivateIPAddress - Private IP address of the IP configuration. + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + // PrivateIPAllocationMethod - The private IP address allocation method. Possible values include: 'Static', 'Dynamic' + PrivateIPAllocationMethod IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + // PrivateIPAddressVersion - Whether the specific IP configuration is IPv4 or IPv6. Default is IPv4. Possible values include: 'IPv4', 'IPv6' + PrivateIPAddressVersion IPVersion `json:"privateIPAddressVersion,omitempty"` + // Subnet - Subnet bound to the IP configuration. + Subnet *Subnet `json:"subnet,omitempty"` + // Primary - Whether this is a primary customer address on the network interface. + Primary *bool `json:"primary,omitempty"` + // PublicIPAddress - Public IP address bound to the IP configuration. + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + // ApplicationSecurityGroups - Application security groups in which the IP configuration is included. + ApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the network interface IP configuration. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // PrivateLinkConnectionProperties - READ-ONLY; PrivateLinkConnection properties for the network interface. + PrivateLinkConnectionProperties *InterfaceIPConfigurationPrivateLinkConnectionProperties `json:"privateLinkConnectionProperties,omitempty"` +} + +// InterfaceListResult response for the ListNetworkInterface API service call. +type InterfaceListResult struct { + autorest.Response `json:"-"` + // Value - A list of network interfaces in a resource group. + Value *[]Interface `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// InterfaceListResultIterator provides access to a complete listing of Interface values. +type InterfaceListResultIterator struct { + i int + page InterfaceListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *InterfaceListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfaceListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *InterfaceListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter InterfaceListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter InterfaceListResultIterator) Response() InterfaceListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter InterfaceListResultIterator) Value() Interface { + if !iter.page.NotDone() { + return Interface{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the InterfaceListResultIterator type. +func NewInterfaceListResultIterator(page InterfaceListResultPage) InterfaceListResultIterator { + return InterfaceListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (ilr InterfaceListResult) IsEmpty() bool { + return ilr.Value == nil || len(*ilr.Value) == 0 +} + +// interfaceListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (ilr InterfaceListResult) interfaceListResultPreparer(ctx context.Context) (*http.Request, error) { + if ilr.NextLink == nil || len(to.String(ilr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(ilr.NextLink))) +} + +// InterfaceListResultPage contains a page of Interface values. +type InterfaceListResultPage struct { + fn func(context.Context, InterfaceListResult) (InterfaceListResult, error) + ilr InterfaceListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *InterfaceListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfaceListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.ilr) + if err != nil { + return err + } + page.ilr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *InterfaceListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page InterfaceListResultPage) NotDone() bool { + return !page.ilr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page InterfaceListResultPage) Response() InterfaceListResult { + return page.ilr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page InterfaceListResultPage) Values() []Interface { + if page.ilr.IsEmpty() { + return nil + } + return *page.ilr.Value +} + +// Creates a new instance of the InterfaceListResultPage type. +func NewInterfaceListResultPage(getNextPage func(context.Context, InterfaceListResult) (InterfaceListResult, error)) InterfaceListResultPage { + return InterfaceListResultPage{fn: getNextPage} +} + +// InterfaceLoadBalancerListResult response for list ip configurations API service call. +type InterfaceLoadBalancerListResult struct { + autorest.Response `json:"-"` + // Value - A list of load balancers. + Value *[]LoadBalancer `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// InterfaceLoadBalancerListResultIterator provides access to a complete listing of LoadBalancer values. +type InterfaceLoadBalancerListResultIterator struct { + i int + page InterfaceLoadBalancerListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *InterfaceLoadBalancerListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfaceLoadBalancerListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *InterfaceLoadBalancerListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter InterfaceLoadBalancerListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter InterfaceLoadBalancerListResultIterator) Response() InterfaceLoadBalancerListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter InterfaceLoadBalancerListResultIterator) Value() LoadBalancer { + if !iter.page.NotDone() { + return LoadBalancer{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the InterfaceLoadBalancerListResultIterator type. +func NewInterfaceLoadBalancerListResultIterator(page InterfaceLoadBalancerListResultPage) InterfaceLoadBalancerListResultIterator { + return InterfaceLoadBalancerListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (ilblr InterfaceLoadBalancerListResult) IsEmpty() bool { + return ilblr.Value == nil || len(*ilblr.Value) == 0 +} + +// interfaceLoadBalancerListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (ilblr InterfaceLoadBalancerListResult) interfaceLoadBalancerListResultPreparer(ctx context.Context) (*http.Request, error) { + if ilblr.NextLink == nil || len(to.String(ilblr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(ilblr.NextLink))) +} + +// InterfaceLoadBalancerListResultPage contains a page of LoadBalancer values. +type InterfaceLoadBalancerListResultPage struct { + fn func(context.Context, InterfaceLoadBalancerListResult) (InterfaceLoadBalancerListResult, error) + ilblr InterfaceLoadBalancerListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *InterfaceLoadBalancerListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfaceLoadBalancerListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.ilblr) + if err != nil { + return err + } + page.ilblr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *InterfaceLoadBalancerListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page InterfaceLoadBalancerListResultPage) NotDone() bool { + return !page.ilblr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page InterfaceLoadBalancerListResultPage) Response() InterfaceLoadBalancerListResult { + return page.ilblr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page InterfaceLoadBalancerListResultPage) Values() []LoadBalancer { + if page.ilblr.IsEmpty() { + return nil + } + return *page.ilblr.Value +} + +// Creates a new instance of the InterfaceLoadBalancerListResultPage type. +func NewInterfaceLoadBalancerListResultPage(getNextPage func(context.Context, InterfaceLoadBalancerListResult) (InterfaceLoadBalancerListResult, error)) InterfaceLoadBalancerListResultPage { + return InterfaceLoadBalancerListResultPage{fn: getNextPage} +} + +// InterfacePropertiesFormat networkInterface properties. +type InterfacePropertiesFormat struct { + // VirtualMachine - READ-ONLY; The reference of a virtual machine. + VirtualMachine *SubResource `json:"virtualMachine,omitempty"` + // NetworkSecurityGroup - The reference of the NetworkSecurityGroup resource. + NetworkSecurityGroup *SecurityGroup `json:"networkSecurityGroup,omitempty"` + // PrivateEndpoint - READ-ONLY; A reference to the private endpoint to which the network interface is linked. + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + // IPConfigurations - A list of IPConfigurations of the network interface. + IPConfigurations *[]InterfaceIPConfiguration `json:"ipConfigurations,omitempty"` + // TapConfigurations - READ-ONLY; A list of TapConfigurations of the network interface. + TapConfigurations *[]InterfaceTapConfiguration `json:"tapConfigurations,omitempty"` + // DNSSettings - The DNS settings in network interface. + DNSSettings *InterfaceDNSSettings `json:"dnsSettings,omitempty"` + // MacAddress - READ-ONLY; The MAC address of the network interface. + MacAddress *string `json:"macAddress,omitempty"` + // Primary - READ-ONLY; Whether this is a primary network interface on a virtual machine. + Primary *bool `json:"primary,omitempty"` + // EnableAcceleratedNetworking - If the network interface is accelerated networking enabled. + EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"` + // EnableIPForwarding - Indicates whether IP forwarding is enabled on this network interface. + EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"` + // HostedWorkloads - READ-ONLY; A list of references to linked BareMetal resources. + HostedWorkloads *[]string `json:"hostedWorkloads,omitempty"` + // ResourceGUID - READ-ONLY; The resource GUID property of the network interface resource. + ResourceGUID *string `json:"resourceGuid,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the network interface resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// InterfacesCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type InterfacesCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *InterfacesCreateOrUpdateFuture) Result(client InterfacesClient) (i Interface, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.InterfacesCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if i.Response.Response, err = future.GetResult(sender); err == nil && i.Response.Response.StatusCode != http.StatusNoContent { + i, err = client.CreateOrUpdateResponder(i.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesCreateOrUpdateFuture", "Result", i.Response.Response, "Failure responding to request") + } + } + return +} + +// InterfacesDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type InterfacesDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *InterfacesDeleteFuture) Result(client InterfacesClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.InterfacesDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// InterfacesGetEffectiveRouteTableFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type InterfacesGetEffectiveRouteTableFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *InterfacesGetEffectiveRouteTableFuture) Result(client InterfacesClient) (erlr EffectiveRouteListResult, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesGetEffectiveRouteTableFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.InterfacesGetEffectiveRouteTableFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if erlr.Response.Response, err = future.GetResult(sender); err == nil && erlr.Response.Response.StatusCode != http.StatusNoContent { + erlr, err = client.GetEffectiveRouteTableResponder(erlr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesGetEffectiveRouteTableFuture", "Result", erlr.Response.Response, "Failure responding to request") + } + } + return +} + +// InterfacesListEffectiveNetworkSecurityGroupsFuture an abstraction for monitoring and retrieving the +// results of a long-running operation. +type InterfacesListEffectiveNetworkSecurityGroupsFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *InterfacesListEffectiveNetworkSecurityGroupsFuture) Result(client InterfacesClient) (ensglr EffectiveNetworkSecurityGroupListResult, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesListEffectiveNetworkSecurityGroupsFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.InterfacesListEffectiveNetworkSecurityGroupsFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if ensglr.Response.Response, err = future.GetResult(sender); err == nil && ensglr.Response.Response.StatusCode != http.StatusNoContent { + ensglr, err = client.ListEffectiveNetworkSecurityGroupsResponder(ensglr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfacesListEffectiveNetworkSecurityGroupsFuture", "Result", ensglr.Response.Response, "Failure responding to request") + } + } + return +} + +// InterfaceTapConfiguration tap configuration in a Network Interface. +type InterfaceTapConfiguration struct { + autorest.Response `json:"-"` + // InterfaceTapConfigurationPropertiesFormat - Properties of the Virtual Network Tap configuration. + *InterfaceTapConfigurationPropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Sub Resource type. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for InterfaceTapConfiguration. +func (itc InterfaceTapConfiguration) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if itc.InterfaceTapConfigurationPropertiesFormat != nil { + objectMap["properties"] = itc.InterfaceTapConfigurationPropertiesFormat + } + if itc.Name != nil { + objectMap["name"] = itc.Name + } + if itc.ID != nil { + objectMap["id"] = itc.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for InterfaceTapConfiguration struct. +func (itc *InterfaceTapConfiguration) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var interfaceTapConfigurationPropertiesFormat InterfaceTapConfigurationPropertiesFormat + err = json.Unmarshal(*v, &interfaceTapConfigurationPropertiesFormat) + if err != nil { + return err + } + itc.InterfaceTapConfigurationPropertiesFormat = &interfaceTapConfigurationPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + itc.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + itc.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + itc.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + itc.ID = &ID + } + } + } + + return nil +} + +// InterfaceTapConfigurationListResult response for list tap configurations API service call. +type InterfaceTapConfigurationListResult struct { + autorest.Response `json:"-"` + // Value - A list of tap configurations. + Value *[]InterfaceTapConfiguration `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// InterfaceTapConfigurationListResultIterator provides access to a complete listing of +// InterfaceTapConfiguration values. +type InterfaceTapConfigurationListResultIterator struct { + i int + page InterfaceTapConfigurationListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *InterfaceTapConfigurationListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfaceTapConfigurationListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *InterfaceTapConfigurationListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter InterfaceTapConfigurationListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter InterfaceTapConfigurationListResultIterator) Response() InterfaceTapConfigurationListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter InterfaceTapConfigurationListResultIterator) Value() InterfaceTapConfiguration { + if !iter.page.NotDone() { + return InterfaceTapConfiguration{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the InterfaceTapConfigurationListResultIterator type. +func NewInterfaceTapConfigurationListResultIterator(page InterfaceTapConfigurationListResultPage) InterfaceTapConfigurationListResultIterator { + return InterfaceTapConfigurationListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (itclr InterfaceTapConfigurationListResult) IsEmpty() bool { + return itclr.Value == nil || len(*itclr.Value) == 0 +} + +// interfaceTapConfigurationListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (itclr InterfaceTapConfigurationListResult) interfaceTapConfigurationListResultPreparer(ctx context.Context) (*http.Request, error) { + if itclr.NextLink == nil || len(to.String(itclr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(itclr.NextLink))) +} + +// InterfaceTapConfigurationListResultPage contains a page of InterfaceTapConfiguration values. +type InterfaceTapConfigurationListResultPage struct { + fn func(context.Context, InterfaceTapConfigurationListResult) (InterfaceTapConfigurationListResult, error) + itclr InterfaceTapConfigurationListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *InterfaceTapConfigurationListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/InterfaceTapConfigurationListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.itclr) + if err != nil { + return err + } + page.itclr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *InterfaceTapConfigurationListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page InterfaceTapConfigurationListResultPage) NotDone() bool { + return !page.itclr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page InterfaceTapConfigurationListResultPage) Response() InterfaceTapConfigurationListResult { + return page.itclr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page InterfaceTapConfigurationListResultPage) Values() []InterfaceTapConfiguration { + if page.itclr.IsEmpty() { + return nil + } + return *page.itclr.Value +} + +// Creates a new instance of the InterfaceTapConfigurationListResultPage type. +func NewInterfaceTapConfigurationListResultPage(getNextPage func(context.Context, InterfaceTapConfigurationListResult) (InterfaceTapConfigurationListResult, error)) InterfaceTapConfigurationListResultPage { + return InterfaceTapConfigurationListResultPage{fn: getNextPage} +} + +// InterfaceTapConfigurationPropertiesFormat properties of Virtual Network Tap configuration. +type InterfaceTapConfigurationPropertiesFormat struct { + // VirtualNetworkTap - The reference of the Virtual Network Tap resource. + VirtualNetworkTap *VirtualNetworkTap `json:"virtualNetworkTap,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the network interface tap configuration resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// InterfaceTapConfigurationsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results +// of a long-running operation. +type InterfaceTapConfigurationsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *InterfaceTapConfigurationsCreateOrUpdateFuture) Result(client InterfaceTapConfigurationsClient) (itc InterfaceTapConfiguration, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.InterfaceTapConfigurationsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if itc.Response.Response, err = future.GetResult(sender); err == nil && itc.Response.Response.StatusCode != http.StatusNoContent { + itc, err = client.CreateOrUpdateResponder(itc.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsCreateOrUpdateFuture", "Result", itc.Response.Response, "Failure responding to request") + } + } + return +} + +// InterfaceTapConfigurationsDeleteFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type InterfaceTapConfigurationsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *InterfaceTapConfigurationsDeleteFuture) Result(client InterfaceTapConfigurationsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.InterfaceTapConfigurationsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.InterfaceTapConfigurationsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// IPAddressAvailabilityResult response for CheckIPAddressAvailability API service call. +type IPAddressAvailabilityResult struct { + autorest.Response `json:"-"` + // Available - Private IP address availability. + Available *bool `json:"available,omitempty"` + // AvailableIPAddresses - Contains other available private IP addresses if the asked for address is taken. + AvailableIPAddresses *[]string `json:"availableIPAddresses,omitempty"` +} + +// IPConfiguration IP configuration. +type IPConfiguration struct { + // IPConfigurationPropertiesFormat - Properties of the IP configuration. + *IPConfigurationPropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for IPConfiguration. +func (ic IPConfiguration) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if ic.IPConfigurationPropertiesFormat != nil { + objectMap["properties"] = ic.IPConfigurationPropertiesFormat + } + if ic.Name != nil { + objectMap["name"] = ic.Name + } + if ic.ID != nil { + objectMap["id"] = ic.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for IPConfiguration struct. +func (ic *IPConfiguration) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var IPConfigurationPropertiesFormat IPConfigurationPropertiesFormat + err = json.Unmarshal(*v, &IPConfigurationPropertiesFormat) + if err != nil { + return err + } + ic.IPConfigurationPropertiesFormat = &IPConfigurationPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + ic.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + ic.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + ic.ID = &ID + } + } + } + + return nil +} + +// IPConfigurationProfile IP configuration profile child resource. +type IPConfigurationProfile struct { + // IPConfigurationProfilePropertiesFormat - Properties of the IP configuration profile. + *IPConfigurationProfilePropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Sub Resource type. + Type *string `json:"type,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for IPConfigurationProfile. +func (icp IPConfigurationProfile) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if icp.IPConfigurationProfilePropertiesFormat != nil { + objectMap["properties"] = icp.IPConfigurationProfilePropertiesFormat + } + if icp.Name != nil { + objectMap["name"] = icp.Name + } + if icp.ID != nil { + objectMap["id"] = icp.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for IPConfigurationProfile struct. +func (icp *IPConfigurationProfile) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var IPConfigurationProfilePropertiesFormat IPConfigurationProfilePropertiesFormat + err = json.Unmarshal(*v, &IPConfigurationProfilePropertiesFormat) + if err != nil { + return err + } + icp.IPConfigurationProfilePropertiesFormat = &IPConfigurationProfilePropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + icp.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + icp.Type = &typeVar + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + icp.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + icp.ID = &ID + } + } + } + + return nil +} + +// IPConfigurationProfilePropertiesFormat IP configuration profile properties. +type IPConfigurationProfilePropertiesFormat struct { + // Subnet - The reference of the subnet resource to create a container network interface ip configuration. + Subnet *Subnet `json:"subnet,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the IP configuration profile resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// IPConfigurationPropertiesFormat properties of IP configuration. +type IPConfigurationPropertiesFormat struct { + // PrivateIPAddress - The private IP address of the IP configuration. + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + // PrivateIPAllocationMethod - The private IP address allocation method. Possible values include: 'Static', 'Dynamic' + PrivateIPAllocationMethod IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + // Subnet - The reference of the subnet resource. + Subnet *Subnet `json:"subnet,omitempty"` + // PublicIPAddress - The reference of the public IP resource. + PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the IP configuration resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// IPGroup the IpGroups resource information. +type IPGroup struct { + autorest.Response `json:"-"` + // IPGroupPropertiesFormat - Properties of the IpGroups. + *IPGroupPropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for IPGroup. +func (ig IPGroup) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if ig.IPGroupPropertiesFormat != nil { + objectMap["properties"] = ig.IPGroupPropertiesFormat + } + if ig.ID != nil { + objectMap["id"] = ig.ID + } + if ig.Location != nil { + objectMap["location"] = ig.Location + } + if ig.Tags != nil { + objectMap["tags"] = ig.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for IPGroup struct. +func (ig *IPGroup) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var IPGroupPropertiesFormat IPGroupPropertiesFormat + err = json.Unmarshal(*v, &IPGroupPropertiesFormat) + if err != nil { + return err + } + ig.IPGroupPropertiesFormat = &IPGroupPropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + ig.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + ig.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + ig.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + ig.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + ig.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + ig.Tags = tags + } + } + } + + return nil +} + +// IPGroupListResult response for the ListIpGroups API service call. +type IPGroupListResult struct { + autorest.Response `json:"-"` + // Value - The list of IpGroups information resources. + Value *[]IPGroup `json:"value,omitempty"` + // NextLink - URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// IPGroupListResultIterator provides access to a complete listing of IPGroup values. +type IPGroupListResultIterator struct { + i int + page IPGroupListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *IPGroupListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/IPGroupListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *IPGroupListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter IPGroupListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter IPGroupListResultIterator) Response() IPGroupListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter IPGroupListResultIterator) Value() IPGroup { + if !iter.page.NotDone() { + return IPGroup{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the IPGroupListResultIterator type. +func NewIPGroupListResultIterator(page IPGroupListResultPage) IPGroupListResultIterator { + return IPGroupListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (iglr IPGroupListResult) IsEmpty() bool { + return iglr.Value == nil || len(*iglr.Value) == 0 +} + +// iPGroupListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (iglr IPGroupListResult) iPGroupListResultPreparer(ctx context.Context) (*http.Request, error) { + if iglr.NextLink == nil || len(to.String(iglr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(iglr.NextLink))) +} + +// IPGroupListResultPage contains a page of IPGroup values. +type IPGroupListResultPage struct { + fn func(context.Context, IPGroupListResult) (IPGroupListResult, error) + iglr IPGroupListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *IPGroupListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/IPGroupListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.iglr) + if err != nil { + return err + } + page.iglr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *IPGroupListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page IPGroupListResultPage) NotDone() bool { + return !page.iglr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page IPGroupListResultPage) Response() IPGroupListResult { + return page.iglr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page IPGroupListResultPage) Values() []IPGroup { + if page.iglr.IsEmpty() { + return nil + } + return *page.iglr.Value +} + +// Creates a new instance of the IPGroupListResultPage type. +func NewIPGroupListResultPage(getNextPage func(context.Context, IPGroupListResult) (IPGroupListResult, error)) IPGroupListResultPage { + return IPGroupListResultPage{fn: getNextPage} +} + +// IPGroupPropertiesFormat the IpGroups property information. +type IPGroupPropertiesFormat struct { + // ProvisioningState - READ-ONLY; The provisioning state of the IpGroups resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // IPAddresses - IpAddresses/IpAddressPrefixes in the IpGroups resource. + IPAddresses *[]string `json:"ipAddresses,omitempty"` + // Firewalls - READ-ONLY; List of references to Azure resources that this IpGroups is associated with. + Firewalls *[]SubResource `json:"firewalls,omitempty"` +} + +// IPGroupsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type IPGroupsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *IPGroupsCreateOrUpdateFuture) Result(client IPGroupsClient) (ig IPGroup, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.IPGroupsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.IPGroupsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if ig.Response.Response, err = future.GetResult(sender); err == nil && ig.Response.Response.StatusCode != http.StatusNoContent { + ig, err = client.CreateOrUpdateResponder(ig.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.IPGroupsCreateOrUpdateFuture", "Result", ig.Response.Response, "Failure responding to request") + } + } + return +} + +// IPGroupsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type IPGroupsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *IPGroupsDeleteFuture) Result(client IPGroupsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.IPGroupsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.IPGroupsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// IpsecPolicy an IPSec Policy configuration for a virtual network gateway connection. +type IpsecPolicy struct { + // SaLifeTimeSeconds - The IPSec Security Association (also called Quick Mode or Phase 2 SA) lifetime in seconds for a site to site VPN tunnel. + SaLifeTimeSeconds *int32 `json:"saLifeTimeSeconds,omitempty"` + // SaDataSizeKilobytes - The IPSec Security Association (also called Quick Mode or Phase 2 SA) payload size in KB for a site to site VPN tunnel. + SaDataSizeKilobytes *int32 `json:"saDataSizeKilobytes,omitempty"` + // IpsecEncryption - The IPSec encryption algorithm (IKE phase 1). Possible values include: 'IpsecEncryptionNone', 'IpsecEncryptionDES', 'IpsecEncryptionDES3', 'IpsecEncryptionAES128', 'IpsecEncryptionAES192', 'IpsecEncryptionAES256', 'IpsecEncryptionGCMAES128', 'IpsecEncryptionGCMAES192', 'IpsecEncryptionGCMAES256' + IpsecEncryption IpsecEncryption `json:"ipsecEncryption,omitempty"` + // IpsecIntegrity - The IPSec integrity algorithm (IKE phase 1). Possible values include: 'IpsecIntegrityMD5', 'IpsecIntegritySHA1', 'IpsecIntegritySHA256', 'IpsecIntegrityGCMAES128', 'IpsecIntegrityGCMAES192', 'IpsecIntegrityGCMAES256' + IpsecIntegrity IpsecIntegrity `json:"ipsecIntegrity,omitempty"` + // IkeEncryption - The IKE encryption algorithm (IKE phase 2). Possible values include: 'DES', 'DES3', 'AES128', 'AES192', 'AES256', 'GCMAES256', 'GCMAES128' + IkeEncryption IkeEncryption `json:"ikeEncryption,omitempty"` + // IkeIntegrity - The IKE integrity algorithm (IKE phase 2). Possible values include: 'IkeIntegrityMD5', 'IkeIntegritySHA1', 'IkeIntegritySHA256', 'IkeIntegritySHA384', 'IkeIntegrityGCMAES256', 'IkeIntegrityGCMAES128' + IkeIntegrity IkeIntegrity `json:"ikeIntegrity,omitempty"` + // DhGroup - The DH Group used in IKE Phase 1 for initial SA. Possible values include: 'None', 'DHGroup1', 'DHGroup2', 'DHGroup14', 'DHGroup2048', 'ECP256', 'ECP384', 'DHGroup24' + DhGroup DhGroup `json:"dhGroup,omitempty"` + // PfsGroup - The Pfs Group used in IKE Phase 2 for new child SA. Possible values include: 'PfsGroupNone', 'PfsGroupPFS1', 'PfsGroupPFS2', 'PfsGroupPFS2048', 'PfsGroupECP256', 'PfsGroupECP384', 'PfsGroupPFS24', 'PfsGroupPFS14', 'PfsGroupPFSMM' + PfsGroup PfsGroup `json:"pfsGroup,omitempty"` +} + +// IPTag contains the IpTag associated with the object. +type IPTag struct { + // IPTagType - The IP tag type. Example: FirstPartyUsage. + IPTagType *string `json:"ipTagType,omitempty"` + // Tag - The value of the IP tag associated with the public IP. Example: SQL. + Tag *string `json:"tag,omitempty"` +} + +// Ipv6ExpressRouteCircuitPeeringConfig contains IPv6 peering config. +type Ipv6ExpressRouteCircuitPeeringConfig struct { + // PrimaryPeerAddressPrefix - The primary address prefix. + PrimaryPeerAddressPrefix *string `json:"primaryPeerAddressPrefix,omitempty"` + // SecondaryPeerAddressPrefix - The secondary address prefix. + SecondaryPeerAddressPrefix *string `json:"secondaryPeerAddressPrefix,omitempty"` + // MicrosoftPeeringConfig - The Microsoft peering configuration. + MicrosoftPeeringConfig *ExpressRouteCircuitPeeringConfig `json:"microsoftPeeringConfig,omitempty"` + // RouteFilter - The reference of the RouteFilter resource. + RouteFilter *SubResource `json:"routeFilter,omitempty"` + // State - The state of peering. Possible values include: 'ExpressRouteCircuitPeeringStateDisabled', 'ExpressRouteCircuitPeeringStateEnabled' + State ExpressRouteCircuitPeeringState `json:"state,omitempty"` +} + +// ListHubVirtualNetworkConnectionsResult list of HubVirtualNetworkConnections and a URL nextLink to get +// the next set of results. +type ListHubVirtualNetworkConnectionsResult struct { + autorest.Response `json:"-"` + // Value - List of HubVirtualNetworkConnections. + Value *[]HubVirtualNetworkConnection `json:"value,omitempty"` + // NextLink - URL to get the next set of operation list results if there are any. + NextLink *string `json:"nextLink,omitempty"` +} + +// ListHubVirtualNetworkConnectionsResultIterator provides access to a complete listing of +// HubVirtualNetworkConnection values. +type ListHubVirtualNetworkConnectionsResultIterator struct { + i int + page ListHubVirtualNetworkConnectionsResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ListHubVirtualNetworkConnectionsResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ListHubVirtualNetworkConnectionsResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ListHubVirtualNetworkConnectionsResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ListHubVirtualNetworkConnectionsResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ListHubVirtualNetworkConnectionsResultIterator) Response() ListHubVirtualNetworkConnectionsResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ListHubVirtualNetworkConnectionsResultIterator) Value() HubVirtualNetworkConnection { + if !iter.page.NotDone() { + return HubVirtualNetworkConnection{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ListHubVirtualNetworkConnectionsResultIterator type. +func NewListHubVirtualNetworkConnectionsResultIterator(page ListHubVirtualNetworkConnectionsResultPage) ListHubVirtualNetworkConnectionsResultIterator { + return ListHubVirtualNetworkConnectionsResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (lhvncr ListHubVirtualNetworkConnectionsResult) IsEmpty() bool { + return lhvncr.Value == nil || len(*lhvncr.Value) == 0 +} + +// listHubVirtualNetworkConnectionsResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (lhvncr ListHubVirtualNetworkConnectionsResult) listHubVirtualNetworkConnectionsResultPreparer(ctx context.Context) (*http.Request, error) { + if lhvncr.NextLink == nil || len(to.String(lhvncr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(lhvncr.NextLink))) +} + +// ListHubVirtualNetworkConnectionsResultPage contains a page of HubVirtualNetworkConnection values. +type ListHubVirtualNetworkConnectionsResultPage struct { + fn func(context.Context, ListHubVirtualNetworkConnectionsResult) (ListHubVirtualNetworkConnectionsResult, error) + lhvncr ListHubVirtualNetworkConnectionsResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ListHubVirtualNetworkConnectionsResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ListHubVirtualNetworkConnectionsResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.lhvncr) + if err != nil { + return err + } + page.lhvncr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ListHubVirtualNetworkConnectionsResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ListHubVirtualNetworkConnectionsResultPage) NotDone() bool { + return !page.lhvncr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ListHubVirtualNetworkConnectionsResultPage) Response() ListHubVirtualNetworkConnectionsResult { + return page.lhvncr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ListHubVirtualNetworkConnectionsResultPage) Values() []HubVirtualNetworkConnection { + if page.lhvncr.IsEmpty() { + return nil + } + return *page.lhvncr.Value +} + +// Creates a new instance of the ListHubVirtualNetworkConnectionsResultPage type. +func NewListHubVirtualNetworkConnectionsResultPage(getNextPage func(context.Context, ListHubVirtualNetworkConnectionsResult) (ListHubVirtualNetworkConnectionsResult, error)) ListHubVirtualNetworkConnectionsResultPage { + return ListHubVirtualNetworkConnectionsResultPage{fn: getNextPage} +} + +// ListP2SVpnGatewaysResult result of the request to list P2SVpnGateways. It contains a list of +// P2SVpnGateways and a URL nextLink to get the next set of results. +type ListP2SVpnGatewaysResult struct { + autorest.Response `json:"-"` + // Value - List of P2SVpnGateways. + Value *[]P2SVpnGateway `json:"value,omitempty"` + // NextLink - URL to get the next set of operation list results if there are any. + NextLink *string `json:"nextLink,omitempty"` +} + +// ListP2SVpnGatewaysResultIterator provides access to a complete listing of P2SVpnGateway values. +type ListP2SVpnGatewaysResultIterator struct { + i int + page ListP2SVpnGatewaysResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ListP2SVpnGatewaysResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ListP2SVpnGatewaysResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ListP2SVpnGatewaysResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ListP2SVpnGatewaysResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ListP2SVpnGatewaysResultIterator) Response() ListP2SVpnGatewaysResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ListP2SVpnGatewaysResultIterator) Value() P2SVpnGateway { + if !iter.page.NotDone() { + return P2SVpnGateway{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ListP2SVpnGatewaysResultIterator type. +func NewListP2SVpnGatewaysResultIterator(page ListP2SVpnGatewaysResultPage) ListP2SVpnGatewaysResultIterator { + return ListP2SVpnGatewaysResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (lpvgr ListP2SVpnGatewaysResult) IsEmpty() bool { + return lpvgr.Value == nil || len(*lpvgr.Value) == 0 +} + +// listP2SVpnGatewaysResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (lpvgr ListP2SVpnGatewaysResult) listP2SVpnGatewaysResultPreparer(ctx context.Context) (*http.Request, error) { + if lpvgr.NextLink == nil || len(to.String(lpvgr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(lpvgr.NextLink))) +} + +// ListP2SVpnGatewaysResultPage contains a page of P2SVpnGateway values. +type ListP2SVpnGatewaysResultPage struct { + fn func(context.Context, ListP2SVpnGatewaysResult) (ListP2SVpnGatewaysResult, error) + lpvgr ListP2SVpnGatewaysResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ListP2SVpnGatewaysResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ListP2SVpnGatewaysResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.lpvgr) + if err != nil { + return err + } + page.lpvgr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ListP2SVpnGatewaysResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ListP2SVpnGatewaysResultPage) NotDone() bool { + return !page.lpvgr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ListP2SVpnGatewaysResultPage) Response() ListP2SVpnGatewaysResult { + return page.lpvgr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ListP2SVpnGatewaysResultPage) Values() []P2SVpnGateway { + if page.lpvgr.IsEmpty() { + return nil + } + return *page.lpvgr.Value +} + +// Creates a new instance of the ListP2SVpnGatewaysResultPage type. +func NewListP2SVpnGatewaysResultPage(getNextPage func(context.Context, ListP2SVpnGatewaysResult) (ListP2SVpnGatewaysResult, error)) ListP2SVpnGatewaysResultPage { + return ListP2SVpnGatewaysResultPage{fn: getNextPage} +} + +// ListString ... +type ListString struct { + autorest.Response `json:"-"` + Value *[]string `json:"value,omitempty"` +} + +// ListVirtualHubRouteTableV2sResult list of VirtualHubRouteTableV2s and a URL nextLink to get the next set +// of results. +type ListVirtualHubRouteTableV2sResult struct { + autorest.Response `json:"-"` + // Value - List of VirtualHubRouteTableV2s. + Value *[]VirtualHubRouteTableV2 `json:"value,omitempty"` + // NextLink - URL to get the next set of operation list results if there are any. + NextLink *string `json:"nextLink,omitempty"` +} + +// ListVirtualHubRouteTableV2sResultIterator provides access to a complete listing of +// VirtualHubRouteTableV2 values. +type ListVirtualHubRouteTableV2sResultIterator struct { + i int + page ListVirtualHubRouteTableV2sResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ListVirtualHubRouteTableV2sResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ListVirtualHubRouteTableV2sResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ListVirtualHubRouteTableV2sResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ListVirtualHubRouteTableV2sResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ListVirtualHubRouteTableV2sResultIterator) Response() ListVirtualHubRouteTableV2sResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ListVirtualHubRouteTableV2sResultIterator) Value() VirtualHubRouteTableV2 { + if !iter.page.NotDone() { + return VirtualHubRouteTableV2{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ListVirtualHubRouteTableV2sResultIterator type. +func NewListVirtualHubRouteTableV2sResultIterator(page ListVirtualHubRouteTableV2sResultPage) ListVirtualHubRouteTableV2sResultIterator { + return ListVirtualHubRouteTableV2sResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (lvhrtvr ListVirtualHubRouteTableV2sResult) IsEmpty() bool { + return lvhrtvr.Value == nil || len(*lvhrtvr.Value) == 0 +} + +// listVirtualHubRouteTableV2sResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (lvhrtvr ListVirtualHubRouteTableV2sResult) listVirtualHubRouteTableV2sResultPreparer(ctx context.Context) (*http.Request, error) { + if lvhrtvr.NextLink == nil || len(to.String(lvhrtvr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(lvhrtvr.NextLink))) +} + +// ListVirtualHubRouteTableV2sResultPage contains a page of VirtualHubRouteTableV2 values. +type ListVirtualHubRouteTableV2sResultPage struct { + fn func(context.Context, ListVirtualHubRouteTableV2sResult) (ListVirtualHubRouteTableV2sResult, error) + lvhrtvr ListVirtualHubRouteTableV2sResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ListVirtualHubRouteTableV2sResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ListVirtualHubRouteTableV2sResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.lvhrtvr) + if err != nil { + return err + } + page.lvhrtvr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ListVirtualHubRouteTableV2sResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ListVirtualHubRouteTableV2sResultPage) NotDone() bool { + return !page.lvhrtvr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ListVirtualHubRouteTableV2sResultPage) Response() ListVirtualHubRouteTableV2sResult { + return page.lvhrtvr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ListVirtualHubRouteTableV2sResultPage) Values() []VirtualHubRouteTableV2 { + if page.lvhrtvr.IsEmpty() { + return nil + } + return *page.lvhrtvr.Value +} + +// Creates a new instance of the ListVirtualHubRouteTableV2sResultPage type. +func NewListVirtualHubRouteTableV2sResultPage(getNextPage func(context.Context, ListVirtualHubRouteTableV2sResult) (ListVirtualHubRouteTableV2sResult, error)) ListVirtualHubRouteTableV2sResultPage { + return ListVirtualHubRouteTableV2sResultPage{fn: getNextPage} +} + +// ListVirtualHubsResult result of the request to list VirtualHubs. It contains a list of VirtualHubs and a +// URL nextLink to get the next set of results. +type ListVirtualHubsResult struct { + autorest.Response `json:"-"` + // Value - List of VirtualHubs. + Value *[]VirtualHub `json:"value,omitempty"` + // NextLink - URL to get the next set of operation list results if there are any. + NextLink *string `json:"nextLink,omitempty"` +} + +// ListVirtualHubsResultIterator provides access to a complete listing of VirtualHub values. +type ListVirtualHubsResultIterator struct { + i int + page ListVirtualHubsResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ListVirtualHubsResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ListVirtualHubsResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ListVirtualHubsResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ListVirtualHubsResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ListVirtualHubsResultIterator) Response() ListVirtualHubsResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ListVirtualHubsResultIterator) Value() VirtualHub { + if !iter.page.NotDone() { + return VirtualHub{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ListVirtualHubsResultIterator type. +func NewListVirtualHubsResultIterator(page ListVirtualHubsResultPage) ListVirtualHubsResultIterator { + return ListVirtualHubsResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (lvhr ListVirtualHubsResult) IsEmpty() bool { + return lvhr.Value == nil || len(*lvhr.Value) == 0 +} + +// listVirtualHubsResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (lvhr ListVirtualHubsResult) listVirtualHubsResultPreparer(ctx context.Context) (*http.Request, error) { + if lvhr.NextLink == nil || len(to.String(lvhr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(lvhr.NextLink))) +} + +// ListVirtualHubsResultPage contains a page of VirtualHub values. +type ListVirtualHubsResultPage struct { + fn func(context.Context, ListVirtualHubsResult) (ListVirtualHubsResult, error) + lvhr ListVirtualHubsResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ListVirtualHubsResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ListVirtualHubsResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.lvhr) + if err != nil { + return err + } + page.lvhr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ListVirtualHubsResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ListVirtualHubsResultPage) NotDone() bool { + return !page.lvhr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ListVirtualHubsResultPage) Response() ListVirtualHubsResult { + return page.lvhr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ListVirtualHubsResultPage) Values() []VirtualHub { + if page.lvhr.IsEmpty() { + return nil + } + return *page.lvhr.Value +} + +// Creates a new instance of the ListVirtualHubsResultPage type. +func NewListVirtualHubsResultPage(getNextPage func(context.Context, ListVirtualHubsResult) (ListVirtualHubsResult, error)) ListVirtualHubsResultPage { + return ListVirtualHubsResultPage{fn: getNextPage} +} + +// ListVirtualWANsResult result of the request to list VirtualWANs. It contains a list of VirtualWANs and a +// URL nextLink to get the next set of results. +type ListVirtualWANsResult struct { + autorest.Response `json:"-"` + // Value - List of VirtualWANs. + Value *[]VirtualWAN `json:"value,omitempty"` + // NextLink - URL to get the next set of operation list results if there are any. + NextLink *string `json:"nextLink,omitempty"` +} + +// ListVirtualWANsResultIterator provides access to a complete listing of VirtualWAN values. +type ListVirtualWANsResultIterator struct { + i int + page ListVirtualWANsResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ListVirtualWANsResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ListVirtualWANsResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ListVirtualWANsResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ListVirtualWANsResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ListVirtualWANsResultIterator) Response() ListVirtualWANsResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ListVirtualWANsResultIterator) Value() VirtualWAN { + if !iter.page.NotDone() { + return VirtualWAN{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ListVirtualWANsResultIterator type. +func NewListVirtualWANsResultIterator(page ListVirtualWANsResultPage) ListVirtualWANsResultIterator { + return ListVirtualWANsResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (lvwnr ListVirtualWANsResult) IsEmpty() bool { + return lvwnr.Value == nil || len(*lvwnr.Value) == 0 +} + +// listVirtualWANsResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (lvwnr ListVirtualWANsResult) listVirtualWANsResultPreparer(ctx context.Context) (*http.Request, error) { + if lvwnr.NextLink == nil || len(to.String(lvwnr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(lvwnr.NextLink))) +} + +// ListVirtualWANsResultPage contains a page of VirtualWAN values. +type ListVirtualWANsResultPage struct { + fn func(context.Context, ListVirtualWANsResult) (ListVirtualWANsResult, error) + lvwnr ListVirtualWANsResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ListVirtualWANsResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ListVirtualWANsResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.lvwnr) + if err != nil { + return err + } + page.lvwnr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ListVirtualWANsResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ListVirtualWANsResultPage) NotDone() bool { + return !page.lvwnr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ListVirtualWANsResultPage) Response() ListVirtualWANsResult { + return page.lvwnr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ListVirtualWANsResultPage) Values() []VirtualWAN { + if page.lvwnr.IsEmpty() { + return nil + } + return *page.lvwnr.Value +} + +// Creates a new instance of the ListVirtualWANsResultPage type. +func NewListVirtualWANsResultPage(getNextPage func(context.Context, ListVirtualWANsResult) (ListVirtualWANsResult, error)) ListVirtualWANsResultPage { + return ListVirtualWANsResultPage{fn: getNextPage} +} + +// ListVpnConnectionsResult result of the request to list all vpn connections to a virtual wan vpn gateway. +// It contains a list of Vpn Connections and a URL nextLink to get the next set of results. +type ListVpnConnectionsResult struct { + autorest.Response `json:"-"` + // Value - List of Vpn Connections. + Value *[]VpnConnection `json:"value,omitempty"` + // NextLink - URL to get the next set of operation list results if there are any. + NextLink *string `json:"nextLink,omitempty"` +} + +// ListVpnConnectionsResultIterator provides access to a complete listing of VpnConnection values. +type ListVpnConnectionsResultIterator struct { + i int + page ListVpnConnectionsResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ListVpnConnectionsResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ListVpnConnectionsResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ListVpnConnectionsResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ListVpnConnectionsResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ListVpnConnectionsResultIterator) Response() ListVpnConnectionsResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ListVpnConnectionsResultIterator) Value() VpnConnection { + if !iter.page.NotDone() { + return VpnConnection{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ListVpnConnectionsResultIterator type. +func NewListVpnConnectionsResultIterator(page ListVpnConnectionsResultPage) ListVpnConnectionsResultIterator { + return ListVpnConnectionsResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (lvcr ListVpnConnectionsResult) IsEmpty() bool { + return lvcr.Value == nil || len(*lvcr.Value) == 0 +} + +// listVpnConnectionsResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (lvcr ListVpnConnectionsResult) listVpnConnectionsResultPreparer(ctx context.Context) (*http.Request, error) { + if lvcr.NextLink == nil || len(to.String(lvcr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(lvcr.NextLink))) +} + +// ListVpnConnectionsResultPage contains a page of VpnConnection values. +type ListVpnConnectionsResultPage struct { + fn func(context.Context, ListVpnConnectionsResult) (ListVpnConnectionsResult, error) + lvcr ListVpnConnectionsResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ListVpnConnectionsResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ListVpnConnectionsResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.lvcr) + if err != nil { + return err + } + page.lvcr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ListVpnConnectionsResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ListVpnConnectionsResultPage) NotDone() bool { + return !page.lvcr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ListVpnConnectionsResultPage) Response() ListVpnConnectionsResult { + return page.lvcr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ListVpnConnectionsResultPage) Values() []VpnConnection { + if page.lvcr.IsEmpty() { + return nil + } + return *page.lvcr.Value +} + +// Creates a new instance of the ListVpnConnectionsResultPage type. +func NewListVpnConnectionsResultPage(getNextPage func(context.Context, ListVpnConnectionsResult) (ListVpnConnectionsResult, error)) ListVpnConnectionsResultPage { + return ListVpnConnectionsResultPage{fn: getNextPage} +} + +// ListVpnGatewaysResult result of the request to list VpnGateways. It contains a list of VpnGateways and a +// URL nextLink to get the next set of results. +type ListVpnGatewaysResult struct { + autorest.Response `json:"-"` + // Value - List of VpnGateways. + Value *[]VpnGateway `json:"value,omitempty"` + // NextLink - URL to get the next set of operation list results if there are any. + NextLink *string `json:"nextLink,omitempty"` +} + +// ListVpnGatewaysResultIterator provides access to a complete listing of VpnGateway values. +type ListVpnGatewaysResultIterator struct { + i int + page ListVpnGatewaysResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ListVpnGatewaysResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ListVpnGatewaysResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ListVpnGatewaysResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ListVpnGatewaysResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ListVpnGatewaysResultIterator) Response() ListVpnGatewaysResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ListVpnGatewaysResultIterator) Value() VpnGateway { + if !iter.page.NotDone() { + return VpnGateway{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ListVpnGatewaysResultIterator type. +func NewListVpnGatewaysResultIterator(page ListVpnGatewaysResultPage) ListVpnGatewaysResultIterator { + return ListVpnGatewaysResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (lvgr ListVpnGatewaysResult) IsEmpty() bool { + return lvgr.Value == nil || len(*lvgr.Value) == 0 +} + +// listVpnGatewaysResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (lvgr ListVpnGatewaysResult) listVpnGatewaysResultPreparer(ctx context.Context) (*http.Request, error) { + if lvgr.NextLink == nil || len(to.String(lvgr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(lvgr.NextLink))) +} + +// ListVpnGatewaysResultPage contains a page of VpnGateway values. +type ListVpnGatewaysResultPage struct { + fn func(context.Context, ListVpnGatewaysResult) (ListVpnGatewaysResult, error) + lvgr ListVpnGatewaysResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ListVpnGatewaysResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ListVpnGatewaysResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.lvgr) + if err != nil { + return err + } + page.lvgr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ListVpnGatewaysResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ListVpnGatewaysResultPage) NotDone() bool { + return !page.lvgr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ListVpnGatewaysResultPage) Response() ListVpnGatewaysResult { + return page.lvgr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ListVpnGatewaysResultPage) Values() []VpnGateway { + if page.lvgr.IsEmpty() { + return nil + } + return *page.lvgr.Value +} + +// Creates a new instance of the ListVpnGatewaysResultPage type. +func NewListVpnGatewaysResultPage(getNextPage func(context.Context, ListVpnGatewaysResult) (ListVpnGatewaysResult, error)) ListVpnGatewaysResultPage { + return ListVpnGatewaysResultPage{fn: getNextPage} +} + +// ListVpnServerConfigurationsResult result of the request to list all VpnServerConfigurations. It contains +// a list of VpnServerConfigurations and a URL nextLink to get the next set of results. +type ListVpnServerConfigurationsResult struct { + autorest.Response `json:"-"` + // Value - List of VpnServerConfigurations. + Value *[]VpnServerConfiguration `json:"value,omitempty"` + // NextLink - URL to get the next set of operation list results if there are any. + NextLink *string `json:"nextLink,omitempty"` +} + +// ListVpnServerConfigurationsResultIterator provides access to a complete listing of +// VpnServerConfiguration values. +type ListVpnServerConfigurationsResultIterator struct { + i int + page ListVpnServerConfigurationsResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ListVpnServerConfigurationsResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ListVpnServerConfigurationsResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ListVpnServerConfigurationsResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ListVpnServerConfigurationsResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ListVpnServerConfigurationsResultIterator) Response() ListVpnServerConfigurationsResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ListVpnServerConfigurationsResultIterator) Value() VpnServerConfiguration { + if !iter.page.NotDone() { + return VpnServerConfiguration{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ListVpnServerConfigurationsResultIterator type. +func NewListVpnServerConfigurationsResultIterator(page ListVpnServerConfigurationsResultPage) ListVpnServerConfigurationsResultIterator { + return ListVpnServerConfigurationsResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (lvscr ListVpnServerConfigurationsResult) IsEmpty() bool { + return lvscr.Value == nil || len(*lvscr.Value) == 0 +} + +// listVpnServerConfigurationsResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (lvscr ListVpnServerConfigurationsResult) listVpnServerConfigurationsResultPreparer(ctx context.Context) (*http.Request, error) { + if lvscr.NextLink == nil || len(to.String(lvscr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(lvscr.NextLink))) +} + +// ListVpnServerConfigurationsResultPage contains a page of VpnServerConfiguration values. +type ListVpnServerConfigurationsResultPage struct { + fn func(context.Context, ListVpnServerConfigurationsResult) (ListVpnServerConfigurationsResult, error) + lvscr ListVpnServerConfigurationsResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ListVpnServerConfigurationsResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ListVpnServerConfigurationsResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.lvscr) + if err != nil { + return err + } + page.lvscr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ListVpnServerConfigurationsResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ListVpnServerConfigurationsResultPage) NotDone() bool { + return !page.lvscr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ListVpnServerConfigurationsResultPage) Response() ListVpnServerConfigurationsResult { + return page.lvscr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ListVpnServerConfigurationsResultPage) Values() []VpnServerConfiguration { + if page.lvscr.IsEmpty() { + return nil + } + return *page.lvscr.Value +} + +// Creates a new instance of the ListVpnServerConfigurationsResultPage type. +func NewListVpnServerConfigurationsResultPage(getNextPage func(context.Context, ListVpnServerConfigurationsResult) (ListVpnServerConfigurationsResult, error)) ListVpnServerConfigurationsResultPage { + return ListVpnServerConfigurationsResultPage{fn: getNextPage} +} + +// ListVpnSiteLinkConnectionsResult result of the request to list all vpn connections to a virtual wan vpn +// gateway. It contains a list of Vpn Connections and a URL nextLink to get the next set of results. +type ListVpnSiteLinkConnectionsResult struct { + autorest.Response `json:"-"` + // Value - List of VpnSiteLinkConnections. + Value *[]VpnSiteLinkConnection `json:"value,omitempty"` + // NextLink - URL to get the next set of operation list results if there are any. + NextLink *string `json:"nextLink,omitempty"` +} + +// ListVpnSiteLinkConnectionsResultIterator provides access to a complete listing of VpnSiteLinkConnection +// values. +type ListVpnSiteLinkConnectionsResultIterator struct { + i int + page ListVpnSiteLinkConnectionsResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ListVpnSiteLinkConnectionsResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ListVpnSiteLinkConnectionsResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ListVpnSiteLinkConnectionsResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ListVpnSiteLinkConnectionsResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ListVpnSiteLinkConnectionsResultIterator) Response() ListVpnSiteLinkConnectionsResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ListVpnSiteLinkConnectionsResultIterator) Value() VpnSiteLinkConnection { + if !iter.page.NotDone() { + return VpnSiteLinkConnection{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ListVpnSiteLinkConnectionsResultIterator type. +func NewListVpnSiteLinkConnectionsResultIterator(page ListVpnSiteLinkConnectionsResultPage) ListVpnSiteLinkConnectionsResultIterator { + return ListVpnSiteLinkConnectionsResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (lvslcr ListVpnSiteLinkConnectionsResult) IsEmpty() bool { + return lvslcr.Value == nil || len(*lvslcr.Value) == 0 +} + +// listVpnSiteLinkConnectionsResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (lvslcr ListVpnSiteLinkConnectionsResult) listVpnSiteLinkConnectionsResultPreparer(ctx context.Context) (*http.Request, error) { + if lvslcr.NextLink == nil || len(to.String(lvslcr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(lvslcr.NextLink))) +} + +// ListVpnSiteLinkConnectionsResultPage contains a page of VpnSiteLinkConnection values. +type ListVpnSiteLinkConnectionsResultPage struct { + fn func(context.Context, ListVpnSiteLinkConnectionsResult) (ListVpnSiteLinkConnectionsResult, error) + lvslcr ListVpnSiteLinkConnectionsResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ListVpnSiteLinkConnectionsResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ListVpnSiteLinkConnectionsResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.lvslcr) + if err != nil { + return err + } + page.lvslcr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ListVpnSiteLinkConnectionsResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ListVpnSiteLinkConnectionsResultPage) NotDone() bool { + return !page.lvslcr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ListVpnSiteLinkConnectionsResultPage) Response() ListVpnSiteLinkConnectionsResult { + return page.lvslcr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ListVpnSiteLinkConnectionsResultPage) Values() []VpnSiteLinkConnection { + if page.lvslcr.IsEmpty() { + return nil + } + return *page.lvslcr.Value +} + +// Creates a new instance of the ListVpnSiteLinkConnectionsResultPage type. +func NewListVpnSiteLinkConnectionsResultPage(getNextPage func(context.Context, ListVpnSiteLinkConnectionsResult) (ListVpnSiteLinkConnectionsResult, error)) ListVpnSiteLinkConnectionsResultPage { + return ListVpnSiteLinkConnectionsResultPage{fn: getNextPage} +} + +// ListVpnSiteLinksResult result of the request to list VpnSiteLinks. It contains a list of VpnSiteLinks +// and a URL nextLink to get the next set of results. +type ListVpnSiteLinksResult struct { + autorest.Response `json:"-"` + // Value - List of VpnSitesLinks. + Value *[]VpnSiteLink `json:"value,omitempty"` + // NextLink - URL to get the next set of operation list results if there are any. + NextLink *string `json:"nextLink,omitempty"` +} + +// ListVpnSiteLinksResultIterator provides access to a complete listing of VpnSiteLink values. +type ListVpnSiteLinksResultIterator struct { + i int + page ListVpnSiteLinksResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ListVpnSiteLinksResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ListVpnSiteLinksResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ListVpnSiteLinksResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ListVpnSiteLinksResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ListVpnSiteLinksResultIterator) Response() ListVpnSiteLinksResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ListVpnSiteLinksResultIterator) Value() VpnSiteLink { + if !iter.page.NotDone() { + return VpnSiteLink{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ListVpnSiteLinksResultIterator type. +func NewListVpnSiteLinksResultIterator(page ListVpnSiteLinksResultPage) ListVpnSiteLinksResultIterator { + return ListVpnSiteLinksResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (lvslr ListVpnSiteLinksResult) IsEmpty() bool { + return lvslr.Value == nil || len(*lvslr.Value) == 0 +} + +// listVpnSiteLinksResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (lvslr ListVpnSiteLinksResult) listVpnSiteLinksResultPreparer(ctx context.Context) (*http.Request, error) { + if lvslr.NextLink == nil || len(to.String(lvslr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(lvslr.NextLink))) +} + +// ListVpnSiteLinksResultPage contains a page of VpnSiteLink values. +type ListVpnSiteLinksResultPage struct { + fn func(context.Context, ListVpnSiteLinksResult) (ListVpnSiteLinksResult, error) + lvslr ListVpnSiteLinksResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ListVpnSiteLinksResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ListVpnSiteLinksResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.lvslr) + if err != nil { + return err + } + page.lvslr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ListVpnSiteLinksResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ListVpnSiteLinksResultPage) NotDone() bool { + return !page.lvslr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ListVpnSiteLinksResultPage) Response() ListVpnSiteLinksResult { + return page.lvslr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ListVpnSiteLinksResultPage) Values() []VpnSiteLink { + if page.lvslr.IsEmpty() { + return nil + } + return *page.lvslr.Value +} + +// Creates a new instance of the ListVpnSiteLinksResultPage type. +func NewListVpnSiteLinksResultPage(getNextPage func(context.Context, ListVpnSiteLinksResult) (ListVpnSiteLinksResult, error)) ListVpnSiteLinksResultPage { + return ListVpnSiteLinksResultPage{fn: getNextPage} +} + +// ListVpnSitesResult result of the request to list VpnSites. It contains a list of VpnSites and a URL +// nextLink to get the next set of results. +type ListVpnSitesResult struct { + autorest.Response `json:"-"` + // Value - List of VpnSites. + Value *[]VpnSite `json:"value,omitempty"` + // NextLink - URL to get the next set of operation list results if there are any. + NextLink *string `json:"nextLink,omitempty"` +} + +// ListVpnSitesResultIterator provides access to a complete listing of VpnSite values. +type ListVpnSitesResultIterator struct { + i int + page ListVpnSitesResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ListVpnSitesResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ListVpnSitesResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ListVpnSitesResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ListVpnSitesResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ListVpnSitesResultIterator) Response() ListVpnSitesResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ListVpnSitesResultIterator) Value() VpnSite { + if !iter.page.NotDone() { + return VpnSite{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ListVpnSitesResultIterator type. +func NewListVpnSitesResultIterator(page ListVpnSitesResultPage) ListVpnSitesResultIterator { + return ListVpnSitesResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (lvsr ListVpnSitesResult) IsEmpty() bool { + return lvsr.Value == nil || len(*lvsr.Value) == 0 +} + +// listVpnSitesResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (lvsr ListVpnSitesResult) listVpnSitesResultPreparer(ctx context.Context) (*http.Request, error) { + if lvsr.NextLink == nil || len(to.String(lvsr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(lvsr.NextLink))) +} + +// ListVpnSitesResultPage contains a page of VpnSite values. +type ListVpnSitesResultPage struct { + fn func(context.Context, ListVpnSitesResult) (ListVpnSitesResult, error) + lvsr ListVpnSitesResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ListVpnSitesResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ListVpnSitesResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.lvsr) + if err != nil { + return err + } + page.lvsr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ListVpnSitesResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ListVpnSitesResultPage) NotDone() bool { + return !page.lvsr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ListVpnSitesResultPage) Response() ListVpnSitesResult { + return page.lvsr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ListVpnSitesResultPage) Values() []VpnSite { + if page.lvsr.IsEmpty() { + return nil + } + return *page.lvsr.Value +} + +// Creates a new instance of the ListVpnSitesResultPage type. +func NewListVpnSitesResultPage(getNextPage func(context.Context, ListVpnSitesResult) (ListVpnSitesResult, error)) ListVpnSitesResultPage { + return ListVpnSitesResultPage{fn: getNextPage} +} + +// LoadBalancer loadBalancer resource. +type LoadBalancer struct { + autorest.Response `json:"-"` + // Sku - The load balancer SKU. + Sku *LoadBalancerSku `json:"sku,omitempty"` + // LoadBalancerPropertiesFormat - Properties of load balancer. + *LoadBalancerPropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for LoadBalancer. +func (lb LoadBalancer) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if lb.Sku != nil { + objectMap["sku"] = lb.Sku + } + if lb.LoadBalancerPropertiesFormat != nil { + objectMap["properties"] = lb.LoadBalancerPropertiesFormat + } + if lb.ID != nil { + objectMap["id"] = lb.ID + } + if lb.Location != nil { + objectMap["location"] = lb.Location + } + if lb.Tags != nil { + objectMap["tags"] = lb.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for LoadBalancer struct. +func (lb *LoadBalancer) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "sku": + if v != nil { + var sku LoadBalancerSku + err = json.Unmarshal(*v, &sku) + if err != nil { + return err + } + lb.Sku = &sku + } + case "properties": + if v != nil { + var loadBalancerPropertiesFormat LoadBalancerPropertiesFormat + err = json.Unmarshal(*v, &loadBalancerPropertiesFormat) + if err != nil { + return err + } + lb.LoadBalancerPropertiesFormat = &loadBalancerPropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + lb.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + lb.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + lb.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + lb.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + lb.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + lb.Tags = tags + } + } + } + + return nil +} + +// LoadBalancerBackendAddressPoolListResult response for ListBackendAddressPool API service call. +type LoadBalancerBackendAddressPoolListResult struct { + autorest.Response `json:"-"` + // Value - A list of backend address pools in a load balancer. + Value *[]BackendAddressPool `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// LoadBalancerBackendAddressPoolListResultIterator provides access to a complete listing of +// BackendAddressPool values. +type LoadBalancerBackendAddressPoolListResultIterator struct { + i int + page LoadBalancerBackendAddressPoolListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *LoadBalancerBackendAddressPoolListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerBackendAddressPoolListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *LoadBalancerBackendAddressPoolListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter LoadBalancerBackendAddressPoolListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter LoadBalancerBackendAddressPoolListResultIterator) Response() LoadBalancerBackendAddressPoolListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter LoadBalancerBackendAddressPoolListResultIterator) Value() BackendAddressPool { + if !iter.page.NotDone() { + return BackendAddressPool{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the LoadBalancerBackendAddressPoolListResultIterator type. +func NewLoadBalancerBackendAddressPoolListResultIterator(page LoadBalancerBackendAddressPoolListResultPage) LoadBalancerBackendAddressPoolListResultIterator { + return LoadBalancerBackendAddressPoolListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (lbbaplr LoadBalancerBackendAddressPoolListResult) IsEmpty() bool { + return lbbaplr.Value == nil || len(*lbbaplr.Value) == 0 +} + +// loadBalancerBackendAddressPoolListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (lbbaplr LoadBalancerBackendAddressPoolListResult) loadBalancerBackendAddressPoolListResultPreparer(ctx context.Context) (*http.Request, error) { + if lbbaplr.NextLink == nil || len(to.String(lbbaplr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(lbbaplr.NextLink))) +} + +// LoadBalancerBackendAddressPoolListResultPage contains a page of BackendAddressPool values. +type LoadBalancerBackendAddressPoolListResultPage struct { + fn func(context.Context, LoadBalancerBackendAddressPoolListResult) (LoadBalancerBackendAddressPoolListResult, error) + lbbaplr LoadBalancerBackendAddressPoolListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *LoadBalancerBackendAddressPoolListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerBackendAddressPoolListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.lbbaplr) + if err != nil { + return err + } + page.lbbaplr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *LoadBalancerBackendAddressPoolListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page LoadBalancerBackendAddressPoolListResultPage) NotDone() bool { + return !page.lbbaplr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page LoadBalancerBackendAddressPoolListResultPage) Response() LoadBalancerBackendAddressPoolListResult { + return page.lbbaplr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page LoadBalancerBackendAddressPoolListResultPage) Values() []BackendAddressPool { + if page.lbbaplr.IsEmpty() { + return nil + } + return *page.lbbaplr.Value +} + +// Creates a new instance of the LoadBalancerBackendAddressPoolListResultPage type. +func NewLoadBalancerBackendAddressPoolListResultPage(getNextPage func(context.Context, LoadBalancerBackendAddressPoolListResult) (LoadBalancerBackendAddressPoolListResult, error)) LoadBalancerBackendAddressPoolListResultPage { + return LoadBalancerBackendAddressPoolListResultPage{fn: getNextPage} +} + +// LoadBalancerFrontendIPConfigurationListResult response for ListFrontendIPConfiguration API service call. +type LoadBalancerFrontendIPConfigurationListResult struct { + autorest.Response `json:"-"` + // Value - A list of frontend IP configurations in a load balancer. + Value *[]FrontendIPConfiguration `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// LoadBalancerFrontendIPConfigurationListResultIterator provides access to a complete listing of +// FrontendIPConfiguration values. +type LoadBalancerFrontendIPConfigurationListResultIterator struct { + i int + page LoadBalancerFrontendIPConfigurationListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *LoadBalancerFrontendIPConfigurationListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerFrontendIPConfigurationListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *LoadBalancerFrontendIPConfigurationListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter LoadBalancerFrontendIPConfigurationListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter LoadBalancerFrontendIPConfigurationListResultIterator) Response() LoadBalancerFrontendIPConfigurationListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter LoadBalancerFrontendIPConfigurationListResultIterator) Value() FrontendIPConfiguration { + if !iter.page.NotDone() { + return FrontendIPConfiguration{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the LoadBalancerFrontendIPConfigurationListResultIterator type. +func NewLoadBalancerFrontendIPConfigurationListResultIterator(page LoadBalancerFrontendIPConfigurationListResultPage) LoadBalancerFrontendIPConfigurationListResultIterator { + return LoadBalancerFrontendIPConfigurationListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (lbficlr LoadBalancerFrontendIPConfigurationListResult) IsEmpty() bool { + return lbficlr.Value == nil || len(*lbficlr.Value) == 0 +} + +// loadBalancerFrontendIPConfigurationListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (lbficlr LoadBalancerFrontendIPConfigurationListResult) loadBalancerFrontendIPConfigurationListResultPreparer(ctx context.Context) (*http.Request, error) { + if lbficlr.NextLink == nil || len(to.String(lbficlr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(lbficlr.NextLink))) +} + +// LoadBalancerFrontendIPConfigurationListResultPage contains a page of FrontendIPConfiguration values. +type LoadBalancerFrontendIPConfigurationListResultPage struct { + fn func(context.Context, LoadBalancerFrontendIPConfigurationListResult) (LoadBalancerFrontendIPConfigurationListResult, error) + lbficlr LoadBalancerFrontendIPConfigurationListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *LoadBalancerFrontendIPConfigurationListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerFrontendIPConfigurationListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.lbficlr) + if err != nil { + return err + } + page.lbficlr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *LoadBalancerFrontendIPConfigurationListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page LoadBalancerFrontendIPConfigurationListResultPage) NotDone() bool { + return !page.lbficlr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page LoadBalancerFrontendIPConfigurationListResultPage) Response() LoadBalancerFrontendIPConfigurationListResult { + return page.lbficlr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page LoadBalancerFrontendIPConfigurationListResultPage) Values() []FrontendIPConfiguration { + if page.lbficlr.IsEmpty() { + return nil + } + return *page.lbficlr.Value +} + +// Creates a new instance of the LoadBalancerFrontendIPConfigurationListResultPage type. +func NewLoadBalancerFrontendIPConfigurationListResultPage(getNextPage func(context.Context, LoadBalancerFrontendIPConfigurationListResult) (LoadBalancerFrontendIPConfigurationListResult, error)) LoadBalancerFrontendIPConfigurationListResultPage { + return LoadBalancerFrontendIPConfigurationListResultPage{fn: getNextPage} +} + +// LoadBalancerListResult response for ListLoadBalancers API service call. +type LoadBalancerListResult struct { + autorest.Response `json:"-"` + // Value - A list of load balancers in a resource group. + Value *[]LoadBalancer `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// LoadBalancerListResultIterator provides access to a complete listing of LoadBalancer values. +type LoadBalancerListResultIterator struct { + i int + page LoadBalancerListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *LoadBalancerListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *LoadBalancerListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter LoadBalancerListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter LoadBalancerListResultIterator) Response() LoadBalancerListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter LoadBalancerListResultIterator) Value() LoadBalancer { + if !iter.page.NotDone() { + return LoadBalancer{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the LoadBalancerListResultIterator type. +func NewLoadBalancerListResultIterator(page LoadBalancerListResultPage) LoadBalancerListResultIterator { + return LoadBalancerListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (lblr LoadBalancerListResult) IsEmpty() bool { + return lblr.Value == nil || len(*lblr.Value) == 0 +} + +// loadBalancerListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (lblr LoadBalancerListResult) loadBalancerListResultPreparer(ctx context.Context) (*http.Request, error) { + if lblr.NextLink == nil || len(to.String(lblr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(lblr.NextLink))) +} + +// LoadBalancerListResultPage contains a page of LoadBalancer values. +type LoadBalancerListResultPage struct { + fn func(context.Context, LoadBalancerListResult) (LoadBalancerListResult, error) + lblr LoadBalancerListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *LoadBalancerListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.lblr) + if err != nil { + return err + } + page.lblr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *LoadBalancerListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page LoadBalancerListResultPage) NotDone() bool { + return !page.lblr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page LoadBalancerListResultPage) Response() LoadBalancerListResult { + return page.lblr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page LoadBalancerListResultPage) Values() []LoadBalancer { + if page.lblr.IsEmpty() { + return nil + } + return *page.lblr.Value +} + +// Creates a new instance of the LoadBalancerListResultPage type. +func NewLoadBalancerListResultPage(getNextPage func(context.Context, LoadBalancerListResult) (LoadBalancerListResult, error)) LoadBalancerListResultPage { + return LoadBalancerListResultPage{fn: getNextPage} +} + +// LoadBalancerLoadBalancingRuleListResult response for ListLoadBalancingRule API service call. +type LoadBalancerLoadBalancingRuleListResult struct { + autorest.Response `json:"-"` + // Value - A list of load balancing rules in a load balancer. + Value *[]LoadBalancingRule `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// LoadBalancerLoadBalancingRuleListResultIterator provides access to a complete listing of +// LoadBalancingRule values. +type LoadBalancerLoadBalancingRuleListResultIterator struct { + i int + page LoadBalancerLoadBalancingRuleListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *LoadBalancerLoadBalancingRuleListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerLoadBalancingRuleListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *LoadBalancerLoadBalancingRuleListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter LoadBalancerLoadBalancingRuleListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter LoadBalancerLoadBalancingRuleListResultIterator) Response() LoadBalancerLoadBalancingRuleListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter LoadBalancerLoadBalancingRuleListResultIterator) Value() LoadBalancingRule { + if !iter.page.NotDone() { + return LoadBalancingRule{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the LoadBalancerLoadBalancingRuleListResultIterator type. +func NewLoadBalancerLoadBalancingRuleListResultIterator(page LoadBalancerLoadBalancingRuleListResultPage) LoadBalancerLoadBalancingRuleListResultIterator { + return LoadBalancerLoadBalancingRuleListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (lblbrlr LoadBalancerLoadBalancingRuleListResult) IsEmpty() bool { + return lblbrlr.Value == nil || len(*lblbrlr.Value) == 0 +} + +// loadBalancerLoadBalancingRuleListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (lblbrlr LoadBalancerLoadBalancingRuleListResult) loadBalancerLoadBalancingRuleListResultPreparer(ctx context.Context) (*http.Request, error) { + if lblbrlr.NextLink == nil || len(to.String(lblbrlr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(lblbrlr.NextLink))) +} + +// LoadBalancerLoadBalancingRuleListResultPage contains a page of LoadBalancingRule values. +type LoadBalancerLoadBalancingRuleListResultPage struct { + fn func(context.Context, LoadBalancerLoadBalancingRuleListResult) (LoadBalancerLoadBalancingRuleListResult, error) + lblbrlr LoadBalancerLoadBalancingRuleListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *LoadBalancerLoadBalancingRuleListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerLoadBalancingRuleListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.lblbrlr) + if err != nil { + return err + } + page.lblbrlr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *LoadBalancerLoadBalancingRuleListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page LoadBalancerLoadBalancingRuleListResultPage) NotDone() bool { + return !page.lblbrlr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page LoadBalancerLoadBalancingRuleListResultPage) Response() LoadBalancerLoadBalancingRuleListResult { + return page.lblbrlr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page LoadBalancerLoadBalancingRuleListResultPage) Values() []LoadBalancingRule { + if page.lblbrlr.IsEmpty() { + return nil + } + return *page.lblbrlr.Value +} + +// Creates a new instance of the LoadBalancerLoadBalancingRuleListResultPage type. +func NewLoadBalancerLoadBalancingRuleListResultPage(getNextPage func(context.Context, LoadBalancerLoadBalancingRuleListResult) (LoadBalancerLoadBalancingRuleListResult, error)) LoadBalancerLoadBalancingRuleListResultPage { + return LoadBalancerLoadBalancingRuleListResultPage{fn: getNextPage} +} + +// LoadBalancerOutboundRuleListResult response for ListOutboundRule API service call. +type LoadBalancerOutboundRuleListResult struct { + autorest.Response `json:"-"` + // Value - A list of outbound rules in a load balancer. + Value *[]OutboundRule `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// LoadBalancerOutboundRuleListResultIterator provides access to a complete listing of OutboundRule values. +type LoadBalancerOutboundRuleListResultIterator struct { + i int + page LoadBalancerOutboundRuleListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *LoadBalancerOutboundRuleListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerOutboundRuleListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *LoadBalancerOutboundRuleListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter LoadBalancerOutboundRuleListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter LoadBalancerOutboundRuleListResultIterator) Response() LoadBalancerOutboundRuleListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter LoadBalancerOutboundRuleListResultIterator) Value() OutboundRule { + if !iter.page.NotDone() { + return OutboundRule{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the LoadBalancerOutboundRuleListResultIterator type. +func NewLoadBalancerOutboundRuleListResultIterator(page LoadBalancerOutboundRuleListResultPage) LoadBalancerOutboundRuleListResultIterator { + return LoadBalancerOutboundRuleListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (lborlr LoadBalancerOutboundRuleListResult) IsEmpty() bool { + return lborlr.Value == nil || len(*lborlr.Value) == 0 +} + +// loadBalancerOutboundRuleListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (lborlr LoadBalancerOutboundRuleListResult) loadBalancerOutboundRuleListResultPreparer(ctx context.Context) (*http.Request, error) { + if lborlr.NextLink == nil || len(to.String(lborlr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(lborlr.NextLink))) +} + +// LoadBalancerOutboundRuleListResultPage contains a page of OutboundRule values. +type LoadBalancerOutboundRuleListResultPage struct { + fn func(context.Context, LoadBalancerOutboundRuleListResult) (LoadBalancerOutboundRuleListResult, error) + lborlr LoadBalancerOutboundRuleListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *LoadBalancerOutboundRuleListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerOutboundRuleListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.lborlr) + if err != nil { + return err + } + page.lborlr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *LoadBalancerOutboundRuleListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page LoadBalancerOutboundRuleListResultPage) NotDone() bool { + return !page.lborlr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page LoadBalancerOutboundRuleListResultPage) Response() LoadBalancerOutboundRuleListResult { + return page.lborlr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page LoadBalancerOutboundRuleListResultPage) Values() []OutboundRule { + if page.lborlr.IsEmpty() { + return nil + } + return *page.lborlr.Value +} + +// Creates a new instance of the LoadBalancerOutboundRuleListResultPage type. +func NewLoadBalancerOutboundRuleListResultPage(getNextPage func(context.Context, LoadBalancerOutboundRuleListResult) (LoadBalancerOutboundRuleListResult, error)) LoadBalancerOutboundRuleListResultPage { + return LoadBalancerOutboundRuleListResultPage{fn: getNextPage} +} + +// LoadBalancerProbeListResult response for ListProbe API service call. +type LoadBalancerProbeListResult struct { + autorest.Response `json:"-"` + // Value - A list of probes in a load balancer. + Value *[]Probe `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// LoadBalancerProbeListResultIterator provides access to a complete listing of Probe values. +type LoadBalancerProbeListResultIterator struct { + i int + page LoadBalancerProbeListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *LoadBalancerProbeListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerProbeListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *LoadBalancerProbeListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter LoadBalancerProbeListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter LoadBalancerProbeListResultIterator) Response() LoadBalancerProbeListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter LoadBalancerProbeListResultIterator) Value() Probe { + if !iter.page.NotDone() { + return Probe{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the LoadBalancerProbeListResultIterator type. +func NewLoadBalancerProbeListResultIterator(page LoadBalancerProbeListResultPage) LoadBalancerProbeListResultIterator { + return LoadBalancerProbeListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (lbplr LoadBalancerProbeListResult) IsEmpty() bool { + return lbplr.Value == nil || len(*lbplr.Value) == 0 +} + +// loadBalancerProbeListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (lbplr LoadBalancerProbeListResult) loadBalancerProbeListResultPreparer(ctx context.Context) (*http.Request, error) { + if lbplr.NextLink == nil || len(to.String(lbplr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(lbplr.NextLink))) +} + +// LoadBalancerProbeListResultPage contains a page of Probe values. +type LoadBalancerProbeListResultPage struct { + fn func(context.Context, LoadBalancerProbeListResult) (LoadBalancerProbeListResult, error) + lbplr LoadBalancerProbeListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *LoadBalancerProbeListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LoadBalancerProbeListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.lbplr) + if err != nil { + return err + } + page.lbplr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *LoadBalancerProbeListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page LoadBalancerProbeListResultPage) NotDone() bool { + return !page.lbplr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page LoadBalancerProbeListResultPage) Response() LoadBalancerProbeListResult { + return page.lbplr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page LoadBalancerProbeListResultPage) Values() []Probe { + if page.lbplr.IsEmpty() { + return nil + } + return *page.lbplr.Value +} + +// Creates a new instance of the LoadBalancerProbeListResultPage type. +func NewLoadBalancerProbeListResultPage(getNextPage func(context.Context, LoadBalancerProbeListResult) (LoadBalancerProbeListResult, error)) LoadBalancerProbeListResultPage { + return LoadBalancerProbeListResultPage{fn: getNextPage} +} + +// LoadBalancerPropertiesFormat properties of the load balancer. +type LoadBalancerPropertiesFormat struct { + // FrontendIPConfigurations - Object representing the frontend IPs to be used for the load balancer. + FrontendIPConfigurations *[]FrontendIPConfiguration `json:"frontendIPConfigurations,omitempty"` + // BackendAddressPools - Collection of backend address pools used by a load balancer. + BackendAddressPools *[]BackendAddressPool `json:"backendAddressPools,omitempty"` + // LoadBalancingRules - Object collection representing the load balancing rules Gets the provisioning. + LoadBalancingRules *[]LoadBalancingRule `json:"loadBalancingRules,omitempty"` + // Probes - Collection of probe objects used in the load balancer. + Probes *[]Probe `json:"probes,omitempty"` + // InboundNatRules - Collection of inbound NAT Rules used by a load balancer. Defining inbound NAT rules on your load balancer is mutually exclusive with defining an inbound NAT pool. Inbound NAT pools are referenced from virtual machine scale sets. NICs that are associated with individual virtual machines cannot reference an Inbound NAT pool. They have to reference individual inbound NAT rules. + InboundNatRules *[]InboundNatRule `json:"inboundNatRules,omitempty"` + // InboundNatPools - Defines an external port range for inbound NAT to a single backend port on NICs associated with a load balancer. Inbound NAT rules are created automatically for each NIC associated with the Load Balancer using an external port from this range. Defining an Inbound NAT pool on your Load Balancer is mutually exclusive with defining inbound Nat rules. Inbound NAT pools are referenced from virtual machine scale sets. NICs that are associated with individual virtual machines cannot reference an inbound NAT pool. They have to reference individual inbound NAT rules. + InboundNatPools *[]InboundNatPool `json:"inboundNatPools,omitempty"` + // OutboundRules - The outbound rules. + OutboundRules *[]OutboundRule `json:"outboundRules,omitempty"` + // ResourceGUID - READ-ONLY; The resource GUID property of the load balancer resource. + ResourceGUID *string `json:"resourceGuid,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the load balancer resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// LoadBalancersCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type LoadBalancersCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *LoadBalancersCreateOrUpdateFuture) Result(client LoadBalancersClient) (lb LoadBalancer, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancersCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.LoadBalancersCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if lb.Response.Response, err = future.GetResult(sender); err == nil && lb.Response.Response.StatusCode != http.StatusNoContent { + lb, err = client.CreateOrUpdateResponder(lb.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancersCreateOrUpdateFuture", "Result", lb.Response.Response, "Failure responding to request") + } + } + return +} + +// LoadBalancersDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type LoadBalancersDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *LoadBalancersDeleteFuture) Result(client LoadBalancersClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LoadBalancersDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.LoadBalancersDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// LoadBalancerSku SKU of a load balancer. +type LoadBalancerSku struct { + // Name - Name of a load balancer SKU. Possible values include: 'LoadBalancerSkuNameBasic', 'LoadBalancerSkuNameStandard' + Name LoadBalancerSkuName `json:"name,omitempty"` +} + +// LoadBalancingRule a load balancing rule for a load balancer. +type LoadBalancingRule struct { + autorest.Response `json:"-"` + // LoadBalancingRulePropertiesFormat - Properties of load balancer load balancing rule. + *LoadBalancingRulePropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within the set of load balancing rules used by the load balancer. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Type of the resource. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for LoadBalancingRule. +func (lbr LoadBalancingRule) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if lbr.LoadBalancingRulePropertiesFormat != nil { + objectMap["properties"] = lbr.LoadBalancingRulePropertiesFormat + } + if lbr.Name != nil { + objectMap["name"] = lbr.Name + } + if lbr.ID != nil { + objectMap["id"] = lbr.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for LoadBalancingRule struct. +func (lbr *LoadBalancingRule) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var loadBalancingRulePropertiesFormat LoadBalancingRulePropertiesFormat + err = json.Unmarshal(*v, &loadBalancingRulePropertiesFormat) + if err != nil { + return err + } + lbr.LoadBalancingRulePropertiesFormat = &loadBalancingRulePropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + lbr.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + lbr.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + lbr.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + lbr.ID = &ID + } + } + } + + return nil +} + +// LoadBalancingRulePropertiesFormat properties of the load balancer. +type LoadBalancingRulePropertiesFormat struct { + // FrontendIPConfiguration - A reference to frontend IP addresses. + FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` + // BackendAddressPool - A reference to a pool of DIPs. Inbound traffic is randomly load balanced across IPs in the backend IPs. + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + // Probe - The reference of the load balancer probe used by the load balancing rule. + Probe *SubResource `json:"probe,omitempty"` + // Protocol - The reference to the transport protocol used by the load balancing rule. Possible values include: 'TransportProtocolUDP', 'TransportProtocolTCP', 'TransportProtocolAll' + Protocol TransportProtocol `json:"protocol,omitempty"` + // LoadDistribution - The load distribution policy for this rule. Possible values include: 'LoadDistributionDefault', 'LoadDistributionSourceIP', 'LoadDistributionSourceIPProtocol' + LoadDistribution LoadDistribution `json:"loadDistribution,omitempty"` + // FrontendPort - The port for the external endpoint. Port numbers for each rule must be unique within the Load Balancer. Acceptable values are between 0 and 65534. Note that value 0 enables "Any Port". + FrontendPort *int32 `json:"frontendPort,omitempty"` + // BackendPort - The port used for internal connections on the endpoint. Acceptable values are between 0 and 65535. Note that value 0 enables "Any Port". + BackendPort *int32 `json:"backendPort,omitempty"` + // IdleTimeoutInMinutes - The timeout for the TCP idle connection. The value can be set between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the protocol is set to TCP. + IdleTimeoutInMinutes *int32 `json:"idleTimeoutInMinutes,omitempty"` + // EnableFloatingIP - Configures a virtual machine's endpoint for the floating IP capability required to configure a SQL AlwaysOn Availability Group. This setting is required when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed after you create the endpoint. + EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` + // EnableTCPReset - Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected connection termination. This element is only used when the protocol is set to TCP. + EnableTCPReset *bool `json:"enableTcpReset,omitempty"` + // DisableOutboundSnat - Configures SNAT for the VMs in the backend pool to use the publicIP address specified in the frontend of the load balancing rule. + DisableOutboundSnat *bool `json:"disableOutboundSnat,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the load balancing rule resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// LocalNetworkGateway a common class for general resource information. +type LocalNetworkGateway struct { + autorest.Response `json:"-"` + // LocalNetworkGatewayPropertiesFormat - Properties of the local network gateway. + *LocalNetworkGatewayPropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for LocalNetworkGateway. +func (lng LocalNetworkGateway) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if lng.LocalNetworkGatewayPropertiesFormat != nil { + objectMap["properties"] = lng.LocalNetworkGatewayPropertiesFormat + } + if lng.ID != nil { + objectMap["id"] = lng.ID + } + if lng.Location != nil { + objectMap["location"] = lng.Location + } + if lng.Tags != nil { + objectMap["tags"] = lng.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for LocalNetworkGateway struct. +func (lng *LocalNetworkGateway) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var localNetworkGatewayPropertiesFormat LocalNetworkGatewayPropertiesFormat + err = json.Unmarshal(*v, &localNetworkGatewayPropertiesFormat) + if err != nil { + return err + } + lng.LocalNetworkGatewayPropertiesFormat = &localNetworkGatewayPropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + lng.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + lng.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + lng.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + lng.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + lng.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + lng.Tags = tags + } + } + } + + return nil +} + +// LocalNetworkGatewayListResult response for ListLocalNetworkGateways API service call. +type LocalNetworkGatewayListResult struct { + autorest.Response `json:"-"` + // Value - A list of local network gateways that exists in a resource group. + Value *[]LocalNetworkGateway `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// LocalNetworkGatewayListResultIterator provides access to a complete listing of LocalNetworkGateway +// values. +type LocalNetworkGatewayListResultIterator struct { + i int + page LocalNetworkGatewayListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *LocalNetworkGatewayListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LocalNetworkGatewayListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *LocalNetworkGatewayListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter LocalNetworkGatewayListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter LocalNetworkGatewayListResultIterator) Response() LocalNetworkGatewayListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter LocalNetworkGatewayListResultIterator) Value() LocalNetworkGateway { + if !iter.page.NotDone() { + return LocalNetworkGateway{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the LocalNetworkGatewayListResultIterator type. +func NewLocalNetworkGatewayListResultIterator(page LocalNetworkGatewayListResultPage) LocalNetworkGatewayListResultIterator { + return LocalNetworkGatewayListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (lnglr LocalNetworkGatewayListResult) IsEmpty() bool { + return lnglr.Value == nil || len(*lnglr.Value) == 0 +} + +// localNetworkGatewayListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (lnglr LocalNetworkGatewayListResult) localNetworkGatewayListResultPreparer(ctx context.Context) (*http.Request, error) { + if lnglr.NextLink == nil || len(to.String(lnglr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(lnglr.NextLink))) +} + +// LocalNetworkGatewayListResultPage contains a page of LocalNetworkGateway values. +type LocalNetworkGatewayListResultPage struct { + fn func(context.Context, LocalNetworkGatewayListResult) (LocalNetworkGatewayListResult, error) + lnglr LocalNetworkGatewayListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *LocalNetworkGatewayListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/LocalNetworkGatewayListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.lnglr) + if err != nil { + return err + } + page.lnglr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *LocalNetworkGatewayListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page LocalNetworkGatewayListResultPage) NotDone() bool { + return !page.lnglr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page LocalNetworkGatewayListResultPage) Response() LocalNetworkGatewayListResult { + return page.lnglr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page LocalNetworkGatewayListResultPage) Values() []LocalNetworkGateway { + if page.lnglr.IsEmpty() { + return nil + } + return *page.lnglr.Value +} + +// Creates a new instance of the LocalNetworkGatewayListResultPage type. +func NewLocalNetworkGatewayListResultPage(getNextPage func(context.Context, LocalNetworkGatewayListResult) (LocalNetworkGatewayListResult, error)) LocalNetworkGatewayListResultPage { + return LocalNetworkGatewayListResultPage{fn: getNextPage} +} + +// LocalNetworkGatewayPropertiesFormat localNetworkGateway properties. +type LocalNetworkGatewayPropertiesFormat struct { + // LocalNetworkAddressSpace - Local network site address space. + LocalNetworkAddressSpace *AddressSpace `json:"localNetworkAddressSpace,omitempty"` + // GatewayIPAddress - IP address of local network gateway. + GatewayIPAddress *string `json:"gatewayIpAddress,omitempty"` + // BgpSettings - Local network gateway's BGP speaker settings. + BgpSettings *BgpSettings `json:"bgpSettings,omitempty"` + // ResourceGUID - READ-ONLY; The resource GUID property of the local network gateway resource. + ResourceGUID *string `json:"resourceGuid,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the local network gateway resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// LocalNetworkGatewaysCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type LocalNetworkGatewaysCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *LocalNetworkGatewaysCreateOrUpdateFuture) Result(client LocalNetworkGatewaysClient) (lng LocalNetworkGateway, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.LocalNetworkGatewaysCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if lng.Response.Response, err = future.GetResult(sender); err == nil && lng.Response.Response.StatusCode != http.StatusNoContent { + lng, err = client.CreateOrUpdateResponder(lng.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysCreateOrUpdateFuture", "Result", lng.Response.Response, "Failure responding to request") + } + } + return +} + +// LocalNetworkGatewaysDeleteFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type LocalNetworkGatewaysDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *LocalNetworkGatewaysDeleteFuture) Result(client LocalNetworkGatewaysClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.LocalNetworkGatewaysDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// LogSpecification description of logging specification. +type LogSpecification struct { + // Name - The name of the specification. + Name *string `json:"name,omitempty"` + // DisplayName - The display name of the specification. + DisplayName *string `json:"displayName,omitempty"` + // BlobDuration - Duration of the blob. + BlobDuration *string `json:"blobDuration,omitempty"` +} + +// ManagedRuleGroupOverride defines a managed rule group override setting. +type ManagedRuleGroupOverride struct { + // RuleGroupName - Describes the managed rule group to override. + RuleGroupName *string `json:"ruleGroupName,omitempty"` + // Rules - List of rules that will be disabled. If none specified, all rules in the group will be disabled. + Rules *[]ManagedRuleOverride `json:"rules,omitempty"` +} + +// ManagedRuleOverride defines a managed rule group override setting. +type ManagedRuleOverride struct { + // RuleID - Identifier for the managed rule. + RuleID *string `json:"ruleId,omitempty"` + // State - Describes the state of the managed rule. Defaults to Disabled if not specified. Possible values include: 'ManagedRuleEnabledStateDisabled' + State ManagedRuleEnabledState `json:"state,omitempty"` +} + +// ManagedRulesDefinition allow to exclude some variable satisfy the condition for the WAF check. +type ManagedRulesDefinition struct { + // Exclusions - Describes the Exclusions that are applied on the policy. + Exclusions *[]OwaspCrsExclusionEntry `json:"exclusions,omitempty"` + // ManagedRuleSets - Describes the ruleSets that are associated with the policy. + ManagedRuleSets *[]ManagedRuleSet `json:"managedRuleSets,omitempty"` +} + +// ManagedRuleSet defines a managed rule set. +type ManagedRuleSet struct { + // RuleSetType - Defines the rule set type to use. + RuleSetType *string `json:"ruleSetType,omitempty"` + // RuleSetVersion - Defines the version of the rule set to use. + RuleSetVersion *string `json:"ruleSetVersion,omitempty"` + // RuleGroupOverrides - Defines the rule group overrides to apply to the rule set. + RuleGroupOverrides *[]ManagedRuleGroupOverride `json:"ruleGroupOverrides,omitempty"` +} + +// ManagedServiceIdentity identity for the resource. +type ManagedServiceIdentity struct { + // PrincipalID - READ-ONLY; The principal id of the system assigned identity. This property will only be provided for a system assigned identity. + PrincipalID *string `json:"principalId,omitempty"` + // TenantID - READ-ONLY; The tenant id of the system assigned identity. This property will only be provided for a system assigned identity. + TenantID *string `json:"tenantId,omitempty"` + // Type - The type of identity used for the resource. The type 'SystemAssigned, UserAssigned' includes both an implicitly created identity and a set of user assigned identities. The type 'None' will remove any identities from the virtual machine. Possible values include: 'ResourceIdentityTypeSystemAssigned', 'ResourceIdentityTypeUserAssigned', 'ResourceIdentityTypeSystemAssignedUserAssigned', 'ResourceIdentityTypeNone' + Type ResourceIdentityType `json:"type,omitempty"` + // UserAssignedIdentities - The list of user identities associated with resource. The user identity dictionary key references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'. + UserAssignedIdentities map[string]*ManagedServiceIdentityUserAssignedIdentitiesValue `json:"userAssignedIdentities"` +} + +// MarshalJSON is the custom marshaler for ManagedServiceIdentity. +func (msi ManagedServiceIdentity) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if msi.Type != "" { + objectMap["type"] = msi.Type + } + if msi.UserAssignedIdentities != nil { + objectMap["userAssignedIdentities"] = msi.UserAssignedIdentities + } + return json.Marshal(objectMap) +} + +// ManagedServiceIdentityUserAssignedIdentitiesValue ... +type ManagedServiceIdentityUserAssignedIdentitiesValue struct { + // PrincipalID - READ-ONLY; The principal id of user assigned identity. + PrincipalID *string `json:"principalId,omitempty"` + // ClientID - READ-ONLY; The client id of user assigned identity. + ClientID *string `json:"clientId,omitempty"` +} + +// MatchCondition define match conditions. +type MatchCondition struct { + // MatchVariables - List of match variables. + MatchVariables *[]MatchVariable `json:"matchVariables,omitempty"` + // Operator - Describes operator to be matched. Possible values include: 'WebApplicationFirewallOperatorIPMatch', 'WebApplicationFirewallOperatorEqual', 'WebApplicationFirewallOperatorContains', 'WebApplicationFirewallOperatorLessThan', 'WebApplicationFirewallOperatorGreaterThan', 'WebApplicationFirewallOperatorLessThanOrEqual', 'WebApplicationFirewallOperatorGreaterThanOrEqual', 'WebApplicationFirewallOperatorBeginsWith', 'WebApplicationFirewallOperatorEndsWith', 'WebApplicationFirewallOperatorRegex', 'WebApplicationFirewallOperatorGeoMatch' + Operator WebApplicationFirewallOperator `json:"operator,omitempty"` + // NegationConditon - Describes if this is negate condition or not. + NegationConditon *bool `json:"negationConditon,omitempty"` + // MatchValues - Match value. + MatchValues *[]string `json:"matchValues,omitempty"` + // Transforms - List of transforms. + Transforms *[]WebApplicationFirewallTransform `json:"transforms,omitempty"` +} + +// MatchedRule matched rule. +type MatchedRule struct { + // RuleName - Name of the matched network security rule. + RuleName *string `json:"ruleName,omitempty"` + // Action - The network traffic is allowed or denied. Possible values are 'Allow' and 'Deny'. + Action *string `json:"action,omitempty"` +} + +// MatchVariable define match variables. +type MatchVariable struct { + // VariableName - Match Variable. Possible values include: 'RemoteAddr', 'RequestMethod', 'QueryString', 'PostArgs', 'RequestURI', 'RequestHeaders', 'RequestBody', 'RequestCookies' + VariableName WebApplicationFirewallMatchVariable `json:"variableName,omitempty"` + // Selector - Describes field of the matchVariable collection. + Selector *string `json:"selector,omitempty"` +} + +// MetricSpecification description of metrics specification. +type MetricSpecification struct { + // Name - The name of the metric. + Name *string `json:"name,omitempty"` + // DisplayName - The display name of the metric. + DisplayName *string `json:"displayName,omitempty"` + // DisplayDescription - The description of the metric. + DisplayDescription *string `json:"displayDescription,omitempty"` + // Unit - Units the metric to be displayed in. + Unit *string `json:"unit,omitempty"` + // AggregationType - The aggregation type. + AggregationType *string `json:"aggregationType,omitempty"` + // Availabilities - List of availability. + Availabilities *[]Availability `json:"availabilities,omitempty"` + // EnableRegionalMdmAccount - Whether regional MDM account enabled. + EnableRegionalMdmAccount *bool `json:"enableRegionalMdmAccount,omitempty"` + // FillGapWithZero - Whether gaps would be filled with zeros. + FillGapWithZero *bool `json:"fillGapWithZero,omitempty"` + // MetricFilterPattern - Pattern for the filter of the metric. + MetricFilterPattern *string `json:"metricFilterPattern,omitempty"` + // Dimensions - List of dimensions. + Dimensions *[]Dimension `json:"dimensions,omitempty"` + // IsInternal - Whether the metric is internal. + IsInternal *bool `json:"isInternal,omitempty"` + // SourceMdmAccount - The source MDM account. + SourceMdmAccount *string `json:"sourceMdmAccount,omitempty"` + // SourceMdmNamespace - The source MDM namespace. + SourceMdmNamespace *string `json:"sourceMdmNamespace,omitempty"` + // ResourceIDDimensionNameOverride - The resource Id dimension name override. + ResourceIDDimensionNameOverride *string `json:"resourceIdDimensionNameOverride,omitempty"` +} + +// NatGateway nat Gateway resource. +type NatGateway struct { + autorest.Response `json:"-"` + // Sku - The nat gateway SKU. + Sku *NatGatewaySku `json:"sku,omitempty"` + // NatGatewayPropertiesFormat - Nat Gateway properties. + *NatGatewayPropertiesFormat `json:"properties,omitempty"` + // Zones - A list of availability zones denoting the zone in which Nat Gateway should be deployed. + Zones *[]string `json:"zones,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for NatGateway. +func (ng NatGateway) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if ng.Sku != nil { + objectMap["sku"] = ng.Sku + } + if ng.NatGatewayPropertiesFormat != nil { + objectMap["properties"] = ng.NatGatewayPropertiesFormat + } + if ng.Zones != nil { + objectMap["zones"] = ng.Zones + } + if ng.ID != nil { + objectMap["id"] = ng.ID + } + if ng.Location != nil { + objectMap["location"] = ng.Location + } + if ng.Tags != nil { + objectMap["tags"] = ng.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for NatGateway struct. +func (ng *NatGateway) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "sku": + if v != nil { + var sku NatGatewaySku + err = json.Unmarshal(*v, &sku) + if err != nil { + return err + } + ng.Sku = &sku + } + case "properties": + if v != nil { + var natGatewayPropertiesFormat NatGatewayPropertiesFormat + err = json.Unmarshal(*v, &natGatewayPropertiesFormat) + if err != nil { + return err + } + ng.NatGatewayPropertiesFormat = &natGatewayPropertiesFormat + } + case "zones": + if v != nil { + var zones []string + err = json.Unmarshal(*v, &zones) + if err != nil { + return err + } + ng.Zones = &zones + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + ng.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + ng.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + ng.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + ng.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + ng.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + ng.Tags = tags + } + } + } + + return nil +} + +// NatGatewayListResult response for ListNatGateways API service call. +type NatGatewayListResult struct { + autorest.Response `json:"-"` + // Value - A list of Nat Gateways that exists in a resource group. + Value *[]NatGateway `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// NatGatewayListResultIterator provides access to a complete listing of NatGateway values. +type NatGatewayListResultIterator struct { + i int + page NatGatewayListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *NatGatewayListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/NatGatewayListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *NatGatewayListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter NatGatewayListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter NatGatewayListResultIterator) Response() NatGatewayListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter NatGatewayListResultIterator) Value() NatGateway { + if !iter.page.NotDone() { + return NatGateway{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the NatGatewayListResultIterator type. +func NewNatGatewayListResultIterator(page NatGatewayListResultPage) NatGatewayListResultIterator { + return NatGatewayListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (nglr NatGatewayListResult) IsEmpty() bool { + return nglr.Value == nil || len(*nglr.Value) == 0 +} + +// natGatewayListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (nglr NatGatewayListResult) natGatewayListResultPreparer(ctx context.Context) (*http.Request, error) { + if nglr.NextLink == nil || len(to.String(nglr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(nglr.NextLink))) +} + +// NatGatewayListResultPage contains a page of NatGateway values. +type NatGatewayListResultPage struct { + fn func(context.Context, NatGatewayListResult) (NatGatewayListResult, error) + nglr NatGatewayListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *NatGatewayListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/NatGatewayListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.nglr) + if err != nil { + return err + } + page.nglr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *NatGatewayListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page NatGatewayListResultPage) NotDone() bool { + return !page.nglr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page NatGatewayListResultPage) Response() NatGatewayListResult { + return page.nglr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page NatGatewayListResultPage) Values() []NatGateway { + if page.nglr.IsEmpty() { + return nil + } + return *page.nglr.Value +} + +// Creates a new instance of the NatGatewayListResultPage type. +func NewNatGatewayListResultPage(getNextPage func(context.Context, NatGatewayListResult) (NatGatewayListResult, error)) NatGatewayListResultPage { + return NatGatewayListResultPage{fn: getNextPage} +} + +// NatGatewayPropertiesFormat nat Gateway properties. +type NatGatewayPropertiesFormat struct { + // IdleTimeoutInMinutes - The idle timeout of the nat gateway. + IdleTimeoutInMinutes *int32 `json:"idleTimeoutInMinutes,omitempty"` + // PublicIPAddresses - An array of public ip addresses associated with the nat gateway resource. + PublicIPAddresses *[]SubResource `json:"publicIpAddresses,omitempty"` + // PublicIPPrefixes - An array of public ip prefixes associated with the nat gateway resource. + PublicIPPrefixes *[]SubResource `json:"publicIpPrefixes,omitempty"` + // Subnets - READ-ONLY; An array of references to the subnets using this nat gateway resource. + Subnets *[]SubResource `json:"subnets,omitempty"` + // ResourceGUID - READ-ONLY; The resource GUID property of the NAT gateway resource. + ResourceGUID *string `json:"resourceGuid,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the NAT gateway resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// NatGatewaysCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type NatGatewaysCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *NatGatewaysCreateOrUpdateFuture) Result(client NatGatewaysClient) (ng NatGateway, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.NatGatewaysCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.NatGatewaysCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if ng.Response.Response, err = future.GetResult(sender); err == nil && ng.Response.Response.StatusCode != http.StatusNoContent { + ng, err = client.CreateOrUpdateResponder(ng.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.NatGatewaysCreateOrUpdateFuture", "Result", ng.Response.Response, "Failure responding to request") + } + } + return +} + +// NatGatewaysDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type NatGatewaysDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *NatGatewaysDeleteFuture) Result(client NatGatewaysClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.NatGatewaysDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.NatGatewaysDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// NatGatewaySku SKU of nat gateway. +type NatGatewaySku struct { + // Name - Name of Nat Gateway SKU. Possible values include: 'NatGatewaySkuNameStandard' + Name NatGatewaySkuName `json:"name,omitempty"` +} + +// NextHopParameters parameters that define the source and destination endpoint. +type NextHopParameters struct { + // TargetResourceID - The resource identifier of the target resource against which the action is to be performed. + TargetResourceID *string `json:"targetResourceId,omitempty"` + // SourceIPAddress - The source IP address. + SourceIPAddress *string `json:"sourceIPAddress,omitempty"` + // DestinationIPAddress - The destination IP address. + DestinationIPAddress *string `json:"destinationIPAddress,omitempty"` + // TargetNicResourceID - The NIC ID. (If VM has multiple NICs and IP forwarding is enabled on any of the nics, then this parameter must be specified. Otherwise optional). + TargetNicResourceID *string `json:"targetNicResourceId,omitempty"` +} + +// NextHopResult the information about next hop from the specified VM. +type NextHopResult struct { + autorest.Response `json:"-"` + // NextHopType - Next hop type. Possible values include: 'NextHopTypeInternet', 'NextHopTypeVirtualAppliance', 'NextHopTypeVirtualNetworkGateway', 'NextHopTypeVnetLocal', 'NextHopTypeHyperNetGateway', 'NextHopTypeNone' + NextHopType NextHopType `json:"nextHopType,omitempty"` + // NextHopIPAddress - Next hop IP Address. + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` + // RouteTableID - The resource identifier for the route table associated with the route being returned. If the route being returned does not correspond to any user created routes then this field will be the string 'System Route'. + RouteTableID *string `json:"routeTableId,omitempty"` +} + +// Operation network REST API operation definition. +type Operation struct { + // Name - Operation name: {provider}/{resource}/{operation}. + Name *string `json:"name,omitempty"` + // Display - Display metadata associated with the operation. + Display *OperationDisplay `json:"display,omitempty"` + // Origin - Origin of the operation. + Origin *string `json:"origin,omitempty"` + // OperationPropertiesFormat - Operation properties format. + *OperationPropertiesFormat `json:"properties,omitempty"` +} + +// MarshalJSON is the custom marshaler for Operation. +func (o Operation) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if o.Name != nil { + objectMap["name"] = o.Name + } + if o.Display != nil { + objectMap["display"] = o.Display + } + if o.Origin != nil { + objectMap["origin"] = o.Origin + } + if o.OperationPropertiesFormat != nil { + objectMap["properties"] = o.OperationPropertiesFormat + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for Operation struct. +func (o *Operation) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + o.Name = &name + } + case "display": + if v != nil { + var display OperationDisplay + err = json.Unmarshal(*v, &display) + if err != nil { + return err + } + o.Display = &display + } + case "origin": + if v != nil { + var origin string + err = json.Unmarshal(*v, &origin) + if err != nil { + return err + } + o.Origin = &origin + } + case "properties": + if v != nil { + var operationPropertiesFormat OperationPropertiesFormat + err = json.Unmarshal(*v, &operationPropertiesFormat) + if err != nil { + return err + } + o.OperationPropertiesFormat = &operationPropertiesFormat + } + } + } + + return nil +} + +// OperationDisplay display metadata associated with the operation. +type OperationDisplay struct { + // Provider - Service provider: Microsoft Network. + Provider *string `json:"provider,omitempty"` + // Resource - Resource on which the operation is performed. + Resource *string `json:"resource,omitempty"` + // Operation - Type of the operation: get, read, delete, etc. + Operation *string `json:"operation,omitempty"` + // Description - Description of the operation. + Description *string `json:"description,omitempty"` +} + +// OperationListResult result of the request to list Network operations. It contains a list of operations +// and a URL link to get the next set of results. +type OperationListResult struct { + autorest.Response `json:"-"` + // Value - List of Network operations supported by the Network resource provider. + Value *[]Operation `json:"value,omitempty"` + // NextLink - URL to get the next set of operation list results if there are any. + NextLink *string `json:"nextLink,omitempty"` +} + +// OperationListResultIterator provides access to a complete listing of Operation values. +type OperationListResultIterator struct { + i int + page OperationListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *OperationListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/OperationListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *OperationListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter OperationListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter OperationListResultIterator) Response() OperationListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter OperationListResultIterator) Value() Operation { + if !iter.page.NotDone() { + return Operation{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the OperationListResultIterator type. +func NewOperationListResultIterator(page OperationListResultPage) OperationListResultIterator { + return OperationListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (olr OperationListResult) IsEmpty() bool { + return olr.Value == nil || len(*olr.Value) == 0 +} + +// operationListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (olr OperationListResult) operationListResultPreparer(ctx context.Context) (*http.Request, error) { + if olr.NextLink == nil || len(to.String(olr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(olr.NextLink))) +} + +// OperationListResultPage contains a page of Operation values. +type OperationListResultPage struct { + fn func(context.Context, OperationListResult) (OperationListResult, error) + olr OperationListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *OperationListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/OperationListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.olr) + if err != nil { + return err + } + page.olr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *OperationListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page OperationListResultPage) NotDone() bool { + return !page.olr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page OperationListResultPage) Response() OperationListResult { + return page.olr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page OperationListResultPage) Values() []Operation { + if page.olr.IsEmpty() { + return nil + } + return *page.olr.Value +} + +// Creates a new instance of the OperationListResultPage type. +func NewOperationListResultPage(getNextPage func(context.Context, OperationListResult) (OperationListResult, error)) OperationListResultPage { + return OperationListResultPage{fn: getNextPage} +} + +// OperationPropertiesFormat description of operation properties format. +type OperationPropertiesFormat struct { + // ServiceSpecification - Specification of the service. + ServiceSpecification *OperationPropertiesFormatServiceSpecification `json:"serviceSpecification,omitempty"` +} + +// OperationPropertiesFormatServiceSpecification specification of the service. +type OperationPropertiesFormatServiceSpecification struct { + // MetricSpecifications - Operation service specification. + MetricSpecifications *[]MetricSpecification `json:"metricSpecifications,omitempty"` + // LogSpecifications - Operation log specification. + LogSpecifications *[]LogSpecification `json:"logSpecifications,omitempty"` +} + +// OutboundRule outbound rule of the load balancer. +type OutboundRule struct { + autorest.Response `json:"-"` + // OutboundRulePropertiesFormat - Properties of load balancer outbound rule. + *OutboundRulePropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within the set of outbound rules used by the load balancer. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Type of the resource. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for OutboundRule. +func (or OutboundRule) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if or.OutboundRulePropertiesFormat != nil { + objectMap["properties"] = or.OutboundRulePropertiesFormat + } + if or.Name != nil { + objectMap["name"] = or.Name + } + if or.ID != nil { + objectMap["id"] = or.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for OutboundRule struct. +func (or *OutboundRule) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var outboundRulePropertiesFormat OutboundRulePropertiesFormat + err = json.Unmarshal(*v, &outboundRulePropertiesFormat) + if err != nil { + return err + } + or.OutboundRulePropertiesFormat = &outboundRulePropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + or.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + or.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + or.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + or.ID = &ID + } + } + } + + return nil +} + +// OutboundRulePropertiesFormat outbound rule of the load balancer. +type OutboundRulePropertiesFormat struct { + // AllocatedOutboundPorts - The number of outbound ports to be used for NAT. + AllocatedOutboundPorts *int32 `json:"allocatedOutboundPorts,omitempty"` + // FrontendIPConfigurations - The Frontend IP addresses of the load balancer. + FrontendIPConfigurations *[]SubResource `json:"frontendIPConfigurations,omitempty"` + // BackendAddressPool - A reference to a pool of DIPs. Outbound traffic is randomly load balanced across IPs in the backend IPs. + BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the outbound rule resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // Protocol - The protocol for the outbound rule in load balancer. Possible values include: 'LoadBalancerOutboundRuleProtocolTCP', 'LoadBalancerOutboundRuleProtocolUDP', 'LoadBalancerOutboundRuleProtocolAll' + Protocol LoadBalancerOutboundRuleProtocol `json:"protocol,omitempty"` + // EnableTCPReset - Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected connection termination. This element is only used when the protocol is set to TCP. + EnableTCPReset *bool `json:"enableTcpReset,omitempty"` + // IdleTimeoutInMinutes - The timeout for the TCP idle connection. + IdleTimeoutInMinutes *int32 `json:"idleTimeoutInMinutes,omitempty"` +} + +// OwaspCrsExclusionEntry allow to exclude some variable satisfy the condition for the WAF check. +type OwaspCrsExclusionEntry struct { + // MatchVariable - The variable to be excluded. Possible values include: 'RequestHeaderNames', 'RequestCookieNames', 'RequestArgNames' + MatchVariable OwaspCrsExclusionEntryMatchVariable `json:"matchVariable,omitempty"` + // SelectorMatchOperator - When matchVariable is a collection, operate on the selector to specify which elements in the collection this exclusion applies to. Possible values include: 'OwaspCrsExclusionEntrySelectorMatchOperatorEquals', 'OwaspCrsExclusionEntrySelectorMatchOperatorContains', 'OwaspCrsExclusionEntrySelectorMatchOperatorStartsWith', 'OwaspCrsExclusionEntrySelectorMatchOperatorEndsWith', 'OwaspCrsExclusionEntrySelectorMatchOperatorEqualsAny' + SelectorMatchOperator OwaspCrsExclusionEntrySelectorMatchOperator `json:"selectorMatchOperator,omitempty"` + // Selector - When matchVariable is a collection, operator used to specify which elements in the collection this exclusion applies to. + Selector *string `json:"selector,omitempty"` +} + +// P2SConnectionConfiguration p2SConnectionConfiguration Resource. +type P2SConnectionConfiguration struct { + // P2SConnectionConfigurationProperties - Properties of the P2S connection configuration. + *P2SConnectionConfigurationProperties `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for P2SConnectionConfiguration. +func (pcc P2SConnectionConfiguration) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if pcc.P2SConnectionConfigurationProperties != nil { + objectMap["properties"] = pcc.P2SConnectionConfigurationProperties + } + if pcc.Name != nil { + objectMap["name"] = pcc.Name + } + if pcc.ID != nil { + objectMap["id"] = pcc.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for P2SConnectionConfiguration struct. +func (pcc *P2SConnectionConfiguration) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var p2SConnectionConfigurationProperties P2SConnectionConfigurationProperties + err = json.Unmarshal(*v, &p2SConnectionConfigurationProperties) + if err != nil { + return err + } + pcc.P2SConnectionConfigurationProperties = &p2SConnectionConfigurationProperties + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + pcc.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + pcc.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + pcc.ID = &ID + } + } + } + + return nil +} + +// P2SConnectionConfigurationProperties parameters for P2SConnectionConfiguration. +type P2SConnectionConfigurationProperties struct { + // VpnClientAddressPool - The reference of the address space resource which represents Address space for P2S VpnClient. + VpnClientAddressPool *AddressSpace `json:"vpnClientAddressPool,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the P2SConnectionConfiguration resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// P2SVpnConnectionHealth p2S Vpn connection detailed health written to sas url. +type P2SVpnConnectionHealth struct { + autorest.Response `json:"-"` + // SasURL - Returned sas url of the blob to which the p2s vpn connection detailed health will be written. + SasURL *string `json:"sasUrl,omitempty"` +} + +// P2SVpnConnectionHealthRequest list of P2S Vpn connection health request. +type P2SVpnConnectionHealthRequest struct { + // VpnUserNamesFilter - The list of p2s vpn user names whose p2s vpn connection detailed health to retrieve for. + VpnUserNamesFilter *[]string `json:"vpnUserNamesFilter,omitempty"` + // OutputBlobSasURL - The sas-url to download the P2S Vpn connection health detail. + OutputBlobSasURL *string `json:"outputBlobSasUrl,omitempty"` +} + +// P2SVpnGateway p2SVpnGateway Resource. +type P2SVpnGateway struct { + autorest.Response `json:"-"` + // P2SVpnGatewayProperties - Properties of the P2SVpnGateway. + *P2SVpnGatewayProperties `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for P2SVpnGateway. +func (pvg P2SVpnGateway) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if pvg.P2SVpnGatewayProperties != nil { + objectMap["properties"] = pvg.P2SVpnGatewayProperties + } + if pvg.ID != nil { + objectMap["id"] = pvg.ID + } + if pvg.Location != nil { + objectMap["location"] = pvg.Location + } + if pvg.Tags != nil { + objectMap["tags"] = pvg.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for P2SVpnGateway struct. +func (pvg *P2SVpnGateway) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var p2SVpnGatewayProperties P2SVpnGatewayProperties + err = json.Unmarshal(*v, &p2SVpnGatewayProperties) + if err != nil { + return err + } + pvg.P2SVpnGatewayProperties = &p2SVpnGatewayProperties + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + pvg.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + pvg.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + pvg.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + pvg.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + pvg.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + pvg.Tags = tags + } + } + } + + return nil +} + +// P2SVpnGatewayProperties parameters for P2SVpnGateway. +type P2SVpnGatewayProperties struct { + // VirtualHub - The VirtualHub to which the gateway belongs. + VirtualHub *SubResource `json:"virtualHub,omitempty"` + // P2SConnectionConfigurations - List of all p2s connection configurations of the gateway. + P2SConnectionConfigurations *[]P2SConnectionConfiguration `json:"p2SConnectionConfigurations,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the P2S VPN gateway resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // VpnGatewayScaleUnit - The scale unit for this p2s vpn gateway. + VpnGatewayScaleUnit *int32 `json:"vpnGatewayScaleUnit,omitempty"` + // VpnServerConfiguration - The VpnServerConfiguration to which the p2sVpnGateway is attached to. + VpnServerConfiguration *SubResource `json:"vpnServerConfiguration,omitempty"` + // VpnClientConnectionHealth - READ-ONLY; All P2S VPN clients' connection health status. + VpnClientConnectionHealth *VpnClientConnectionHealth `json:"vpnClientConnectionHealth,omitempty"` +} + +// P2sVpnGatewaysCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type P2sVpnGatewaysCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *P2sVpnGatewaysCreateOrUpdateFuture) Result(client P2sVpnGatewaysClient) (pvg P2SVpnGateway, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.P2sVpnGatewaysCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if pvg.Response.Response, err = future.GetResult(sender); err == nil && pvg.Response.Response.StatusCode != http.StatusNoContent { + pvg, err = client.CreateOrUpdateResponder(pvg.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysCreateOrUpdateFuture", "Result", pvg.Response.Response, "Failure responding to request") + } + } + return +} + +// P2sVpnGatewaysDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type P2sVpnGatewaysDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *P2sVpnGatewaysDeleteFuture) Result(client P2sVpnGatewaysClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.P2sVpnGatewaysDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// P2sVpnGatewaysGenerateVpnProfileFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type P2sVpnGatewaysGenerateVpnProfileFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *P2sVpnGatewaysGenerateVpnProfileFuture) Result(client P2sVpnGatewaysClient) (vpr VpnProfileResponse, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysGenerateVpnProfileFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.P2sVpnGatewaysGenerateVpnProfileFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if vpr.Response.Response, err = future.GetResult(sender); err == nil && vpr.Response.Response.StatusCode != http.StatusNoContent { + vpr, err = client.GenerateVpnProfileResponder(vpr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysGenerateVpnProfileFuture", "Result", vpr.Response.Response, "Failure responding to request") + } + } + return +} + +// P2sVpnGatewaysGetP2sVpnConnectionHealthDetailedFuture an abstraction for monitoring and retrieving the +// results of a long-running operation. +type P2sVpnGatewaysGetP2sVpnConnectionHealthDetailedFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *P2sVpnGatewaysGetP2sVpnConnectionHealthDetailedFuture) Result(client P2sVpnGatewaysClient) (pvch P2SVpnConnectionHealth, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysGetP2sVpnConnectionHealthDetailedFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.P2sVpnGatewaysGetP2sVpnConnectionHealthDetailedFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if pvch.Response.Response, err = future.GetResult(sender); err == nil && pvch.Response.Response.StatusCode != http.StatusNoContent { + pvch, err = client.GetP2sVpnConnectionHealthDetailedResponder(pvch.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysGetP2sVpnConnectionHealthDetailedFuture", "Result", pvch.Response.Response, "Failure responding to request") + } + } + return +} + +// P2sVpnGatewaysGetP2sVpnConnectionHealthFuture an abstraction for monitoring and retrieving the results +// of a long-running operation. +type P2sVpnGatewaysGetP2sVpnConnectionHealthFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *P2sVpnGatewaysGetP2sVpnConnectionHealthFuture) Result(client P2sVpnGatewaysClient) (pvg P2SVpnGateway, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysGetP2sVpnConnectionHealthFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.P2sVpnGatewaysGetP2sVpnConnectionHealthFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if pvg.Response.Response, err = future.GetResult(sender); err == nil && pvg.Response.Response.StatusCode != http.StatusNoContent { + pvg, err = client.GetP2sVpnConnectionHealthResponder(pvg.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysGetP2sVpnConnectionHealthFuture", "Result", pvg.Response.Response, "Failure responding to request") + } + } + return +} + +// P2SVpnProfileParameters vpn Client Parameters for package generation. +type P2SVpnProfileParameters struct { + // AuthenticationMethod - VPN client authentication method. Possible values include: 'EAPTLS', 'EAPMSCHAPv2' + AuthenticationMethod AuthenticationMethod `json:"authenticationMethod,omitempty"` +} + +// PacketCapture parameters that define the create packet capture operation. +type PacketCapture struct { + // PacketCaptureParameters - Properties of the packet capture. + *PacketCaptureParameters `json:"properties,omitempty"` +} + +// MarshalJSON is the custom marshaler for PacketCapture. +func (pc PacketCapture) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if pc.PacketCaptureParameters != nil { + objectMap["properties"] = pc.PacketCaptureParameters + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for PacketCapture struct. +func (pc *PacketCapture) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var packetCaptureParameters PacketCaptureParameters + err = json.Unmarshal(*v, &packetCaptureParameters) + if err != nil { + return err + } + pc.PacketCaptureParameters = &packetCaptureParameters + } + } + } + + return nil +} + +// PacketCaptureFilter filter that is applied to packet capture request. Multiple filters can be applied. +type PacketCaptureFilter struct { + // Protocol - Protocol to be filtered on. Possible values include: 'PcProtocolTCP', 'PcProtocolUDP', 'PcProtocolAny' + Protocol PcProtocol `json:"protocol,omitempty"` + // LocalIPAddress - Local IP Address to be filtered on. Notation: "127.0.0.1" for single address entry. "127.0.0.1-127.0.0.255" for range. "127.0.0.1;127.0.0.5"? for multiple entries. Multiple ranges not currently supported. Mixing ranges with multiple entries not currently supported. Default = null. + LocalIPAddress *string `json:"localIPAddress,omitempty"` + // RemoteIPAddress - Local IP Address to be filtered on. Notation: "127.0.0.1" for single address entry. "127.0.0.1-127.0.0.255" for range. "127.0.0.1;127.0.0.5;" for multiple entries. Multiple ranges not currently supported. Mixing ranges with multiple entries not currently supported. Default = null. + RemoteIPAddress *string `json:"remoteIPAddress,omitempty"` + // LocalPort - Local port to be filtered on. Notation: "80" for single port entry."80-85" for range. "80;443;" for multiple entries. Multiple ranges not currently supported. Mixing ranges with multiple entries not currently supported. Default = null. + LocalPort *string `json:"localPort,omitempty"` + // RemotePort - Remote port to be filtered on. Notation: "80" for single port entry."80-85" for range. "80;443;" for multiple entries. Multiple ranges not currently supported. Mixing ranges with multiple entries not currently supported. Default = null. + RemotePort *string `json:"remotePort,omitempty"` +} + +// PacketCaptureListResult list of packet capture sessions. +type PacketCaptureListResult struct { + autorest.Response `json:"-"` + // Value - Information about packet capture sessions. + Value *[]PacketCaptureResult `json:"value,omitempty"` +} + +// PacketCaptureParameters parameters that define the create packet capture operation. +type PacketCaptureParameters struct { + // Target - The ID of the targeted resource, only VM is currently supported. + Target *string `json:"target,omitempty"` + // BytesToCapturePerPacket - Number of bytes captured per packet, the remaining bytes are truncated. + BytesToCapturePerPacket *int32 `json:"bytesToCapturePerPacket,omitempty"` + // TotalBytesPerSession - Maximum size of the capture output. + TotalBytesPerSession *int32 `json:"totalBytesPerSession,omitempty"` + // TimeLimitInSeconds - Maximum duration of the capture session in seconds. + TimeLimitInSeconds *int32 `json:"timeLimitInSeconds,omitempty"` + // StorageLocation - Describes the storage location for a packet capture session. + StorageLocation *PacketCaptureStorageLocation `json:"storageLocation,omitempty"` + // Filters - A list of packet capture filters. + Filters *[]PacketCaptureFilter `json:"filters,omitempty"` +} + +// PacketCaptureQueryStatusResult status of packet capture session. +type PacketCaptureQueryStatusResult struct { + autorest.Response `json:"-"` + // Name - The name of the packet capture resource. + Name *string `json:"name,omitempty"` + // ID - The ID of the packet capture resource. + ID *string `json:"id,omitempty"` + // CaptureStartTime - The start time of the packet capture session. + CaptureStartTime *date.Time `json:"captureStartTime,omitempty"` + // PacketCaptureStatus - The status of the packet capture session. Possible values include: 'PcStatusNotStarted', 'PcStatusRunning', 'PcStatusStopped', 'PcStatusError', 'PcStatusUnknown' + PacketCaptureStatus PcStatus `json:"packetCaptureStatus,omitempty"` + // StopReason - The reason the current packet capture session was stopped. + StopReason *string `json:"stopReason,omitempty"` + // PacketCaptureError - List of errors of packet capture session. + PacketCaptureError *[]PcError `json:"packetCaptureError,omitempty"` +} + +// PacketCaptureResult information about packet capture session. +type PacketCaptureResult struct { + autorest.Response `json:"-"` + // Name - READ-ONLY; Name of the packet capture session. + Name *string `json:"name,omitempty"` + // ID - READ-ONLY; ID of the packet capture operation. + ID *string `json:"id,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // PacketCaptureResultProperties - Properties of the packet capture result. + *PacketCaptureResultProperties `json:"properties,omitempty"` +} + +// MarshalJSON is the custom marshaler for PacketCaptureResult. +func (pcr PacketCaptureResult) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if pcr.PacketCaptureResultProperties != nil { + objectMap["properties"] = pcr.PacketCaptureResultProperties + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for PacketCaptureResult struct. +func (pcr *PacketCaptureResult) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + pcr.Name = &name + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + pcr.ID = &ID + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + pcr.Etag = &etag + } + case "properties": + if v != nil { + var packetCaptureResultProperties PacketCaptureResultProperties + err = json.Unmarshal(*v, &packetCaptureResultProperties) + if err != nil { + return err + } + pcr.PacketCaptureResultProperties = &packetCaptureResultProperties + } + } + } + + return nil +} + +// PacketCaptureResultProperties describes the properties of a packet capture session. +type PacketCaptureResultProperties struct { + // ProvisioningState - READ-ONLY; The provisioning state of the packet capture session. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // Target - The ID of the targeted resource, only VM is currently supported. + Target *string `json:"target,omitempty"` + // BytesToCapturePerPacket - Number of bytes captured per packet, the remaining bytes are truncated. + BytesToCapturePerPacket *int32 `json:"bytesToCapturePerPacket,omitempty"` + // TotalBytesPerSession - Maximum size of the capture output. + TotalBytesPerSession *int32 `json:"totalBytesPerSession,omitempty"` + // TimeLimitInSeconds - Maximum duration of the capture session in seconds. + TimeLimitInSeconds *int32 `json:"timeLimitInSeconds,omitempty"` + // StorageLocation - Describes the storage location for a packet capture session. + StorageLocation *PacketCaptureStorageLocation `json:"storageLocation,omitempty"` + // Filters - A list of packet capture filters. + Filters *[]PacketCaptureFilter `json:"filters,omitempty"` +} + +// PacketCapturesCreateFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type PacketCapturesCreateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *PacketCapturesCreateFuture) Result(client PacketCapturesClient) (pcr PacketCaptureResult, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PacketCapturesCreateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.PacketCapturesCreateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if pcr.Response.Response, err = future.GetResult(sender); err == nil && pcr.Response.Response.StatusCode != http.StatusNoContent { + pcr, err = client.CreateResponder(pcr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PacketCapturesCreateFuture", "Result", pcr.Response.Response, "Failure responding to request") + } + } + return +} + +// PacketCapturesDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type PacketCapturesDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *PacketCapturesDeleteFuture) Result(client PacketCapturesClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PacketCapturesDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.PacketCapturesDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// PacketCapturesGetStatusFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type PacketCapturesGetStatusFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *PacketCapturesGetStatusFuture) Result(client PacketCapturesClient) (pcqsr PacketCaptureQueryStatusResult, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PacketCapturesGetStatusFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.PacketCapturesGetStatusFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if pcqsr.Response.Response, err = future.GetResult(sender); err == nil && pcqsr.Response.Response.StatusCode != http.StatusNoContent { + pcqsr, err = client.GetStatusResponder(pcqsr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PacketCapturesGetStatusFuture", "Result", pcqsr.Response.Response, "Failure responding to request") + } + } + return +} + +// PacketCapturesStopFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type PacketCapturesStopFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *PacketCapturesStopFuture) Result(client PacketCapturesClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PacketCapturesStopFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.PacketCapturesStopFuture") + return + } + ar.Response = future.Response() + return +} + +// PacketCaptureStorageLocation describes the storage location for a packet capture session. +type PacketCaptureStorageLocation struct { + // StorageID - The ID of the storage account to save the packet capture session. Required if no local file path is provided. + StorageID *string `json:"storageId,omitempty"` + // StoragePath - The URI of the storage path to save the packet capture. Must be a well-formed URI describing the location to save the packet capture. + StoragePath *string `json:"storagePath,omitempty"` + // FilePath - A valid local path on the targeting VM. Must include the name of the capture file (*.cap). For linux virtual machine it must start with /var/captures. Required if no storage ID is provided, otherwise optional. + FilePath *string `json:"filePath,omitempty"` +} + +// PatchRouteFilter route Filter Resource. +type PatchRouteFilter struct { + // RouteFilterPropertiesFormat - Properties of the route filter. + *RouteFilterPropertiesFormat `json:"properties,omitempty"` + // Name - READ-ONLY; The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for PatchRouteFilter. +func (prf PatchRouteFilter) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if prf.RouteFilterPropertiesFormat != nil { + objectMap["properties"] = prf.RouteFilterPropertiesFormat + } + if prf.Tags != nil { + objectMap["tags"] = prf.Tags + } + if prf.ID != nil { + objectMap["id"] = prf.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for PatchRouteFilter struct. +func (prf *PatchRouteFilter) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var routeFilterPropertiesFormat RouteFilterPropertiesFormat + err = json.Unmarshal(*v, &routeFilterPropertiesFormat) + if err != nil { + return err + } + prf.RouteFilterPropertiesFormat = &routeFilterPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + prf.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + prf.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + prf.Type = &typeVar + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + prf.Tags = tags + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + prf.ID = &ID + } + } + } + + return nil +} + +// PatchRouteFilterRule route Filter Rule Resource. +type PatchRouteFilterRule struct { + // RouteFilterRulePropertiesFormat - Properties of the route filter rule. + *RouteFilterRulePropertiesFormat `json:"properties,omitempty"` + // Name - READ-ONLY; The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for PatchRouteFilterRule. +func (prfr PatchRouteFilterRule) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if prfr.RouteFilterRulePropertiesFormat != nil { + objectMap["properties"] = prfr.RouteFilterRulePropertiesFormat + } + if prfr.ID != nil { + objectMap["id"] = prfr.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for PatchRouteFilterRule struct. +func (prfr *PatchRouteFilterRule) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var routeFilterRulePropertiesFormat RouteFilterRulePropertiesFormat + err = json.Unmarshal(*v, &routeFilterRulePropertiesFormat) + if err != nil { + return err + } + prfr.RouteFilterRulePropertiesFormat = &routeFilterRulePropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + prfr.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + prfr.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + prfr.ID = &ID + } + } + } + + return nil +} + +// PeerExpressRouteCircuitConnection peer Express Route Circuit Connection in an ExpressRouteCircuitPeering +// resource. +type PeerExpressRouteCircuitConnection struct { + autorest.Response `json:"-"` + // PeerExpressRouteCircuitConnectionPropertiesFormat - Properties of the peer express route circuit connection. + *PeerExpressRouteCircuitConnectionPropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Type of the resource. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for PeerExpressRouteCircuitConnection. +func (percc PeerExpressRouteCircuitConnection) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if percc.PeerExpressRouteCircuitConnectionPropertiesFormat != nil { + objectMap["properties"] = percc.PeerExpressRouteCircuitConnectionPropertiesFormat + } + if percc.Name != nil { + objectMap["name"] = percc.Name + } + if percc.ID != nil { + objectMap["id"] = percc.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for PeerExpressRouteCircuitConnection struct. +func (percc *PeerExpressRouteCircuitConnection) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var peerExpressRouteCircuitConnectionPropertiesFormat PeerExpressRouteCircuitConnectionPropertiesFormat + err = json.Unmarshal(*v, &peerExpressRouteCircuitConnectionPropertiesFormat) + if err != nil { + return err + } + percc.PeerExpressRouteCircuitConnectionPropertiesFormat = &peerExpressRouteCircuitConnectionPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + percc.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + percc.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + percc.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + percc.ID = &ID + } + } + } + + return nil +} + +// PeerExpressRouteCircuitConnectionListResult response for ListPeeredConnections API service call +// retrieves all global reach peer circuit connections that belongs to a Private Peering for an +// ExpressRouteCircuit. +type PeerExpressRouteCircuitConnectionListResult struct { + autorest.Response `json:"-"` + // Value - The global reach peer circuit connection associated with Private Peering in an ExpressRoute Circuit. + Value *[]PeerExpressRouteCircuitConnection `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// PeerExpressRouteCircuitConnectionListResultIterator provides access to a complete listing of +// PeerExpressRouteCircuitConnection values. +type PeerExpressRouteCircuitConnectionListResultIterator struct { + i int + page PeerExpressRouteCircuitConnectionListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *PeerExpressRouteCircuitConnectionListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PeerExpressRouteCircuitConnectionListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *PeerExpressRouteCircuitConnectionListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter PeerExpressRouteCircuitConnectionListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter PeerExpressRouteCircuitConnectionListResultIterator) Response() PeerExpressRouteCircuitConnectionListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter PeerExpressRouteCircuitConnectionListResultIterator) Value() PeerExpressRouteCircuitConnection { + if !iter.page.NotDone() { + return PeerExpressRouteCircuitConnection{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the PeerExpressRouteCircuitConnectionListResultIterator type. +func NewPeerExpressRouteCircuitConnectionListResultIterator(page PeerExpressRouteCircuitConnectionListResultPage) PeerExpressRouteCircuitConnectionListResultIterator { + return PeerExpressRouteCircuitConnectionListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (percclr PeerExpressRouteCircuitConnectionListResult) IsEmpty() bool { + return percclr.Value == nil || len(*percclr.Value) == 0 +} + +// peerExpressRouteCircuitConnectionListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (percclr PeerExpressRouteCircuitConnectionListResult) peerExpressRouteCircuitConnectionListResultPreparer(ctx context.Context) (*http.Request, error) { + if percclr.NextLink == nil || len(to.String(percclr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(percclr.NextLink))) +} + +// PeerExpressRouteCircuitConnectionListResultPage contains a page of PeerExpressRouteCircuitConnection +// values. +type PeerExpressRouteCircuitConnectionListResultPage struct { + fn func(context.Context, PeerExpressRouteCircuitConnectionListResult) (PeerExpressRouteCircuitConnectionListResult, error) + percclr PeerExpressRouteCircuitConnectionListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *PeerExpressRouteCircuitConnectionListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PeerExpressRouteCircuitConnectionListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.percclr) + if err != nil { + return err + } + page.percclr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *PeerExpressRouteCircuitConnectionListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page PeerExpressRouteCircuitConnectionListResultPage) NotDone() bool { + return !page.percclr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page PeerExpressRouteCircuitConnectionListResultPage) Response() PeerExpressRouteCircuitConnectionListResult { + return page.percclr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page PeerExpressRouteCircuitConnectionListResultPage) Values() []PeerExpressRouteCircuitConnection { + if page.percclr.IsEmpty() { + return nil + } + return *page.percclr.Value +} + +// Creates a new instance of the PeerExpressRouteCircuitConnectionListResultPage type. +func NewPeerExpressRouteCircuitConnectionListResultPage(getNextPage func(context.Context, PeerExpressRouteCircuitConnectionListResult) (PeerExpressRouteCircuitConnectionListResult, error)) PeerExpressRouteCircuitConnectionListResultPage { + return PeerExpressRouteCircuitConnectionListResultPage{fn: getNextPage} +} + +// PeerExpressRouteCircuitConnectionPropertiesFormat properties of the peer express route circuit +// connection. +type PeerExpressRouteCircuitConnectionPropertiesFormat struct { + // ExpressRouteCircuitPeering - Reference to Express Route Circuit Private Peering Resource of the circuit. + ExpressRouteCircuitPeering *SubResource `json:"expressRouteCircuitPeering,omitempty"` + // PeerExpressRouteCircuitPeering - Reference to Express Route Circuit Private Peering Resource of the peered circuit. + PeerExpressRouteCircuitPeering *SubResource `json:"peerExpressRouteCircuitPeering,omitempty"` + // AddressPrefix - /29 IP address space to carve out Customer addresses for tunnels. + AddressPrefix *string `json:"addressPrefix,omitempty"` + // CircuitConnectionStatus - Express Route Circuit connection state. Possible values include: 'Connected', 'Connecting', 'Disconnected' + CircuitConnectionStatus CircuitConnectionStatus `json:"circuitConnectionStatus,omitempty"` + // ConnectionName - The name of the express route circuit connection resource. + ConnectionName *string `json:"connectionName,omitempty"` + // AuthResourceGUID - The resource guid of the authorization used for the express route circuit connection. + AuthResourceGUID *string `json:"authResourceGuid,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the peer express route circuit connection resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// PolicySettings defines contents of a web application firewall global configuration. +type PolicySettings struct { + // State - Describes if the policy is in enabled state or disabled state. Possible values include: 'WebApplicationFirewallEnabledStateDisabled', 'WebApplicationFirewallEnabledStateEnabled' + State WebApplicationFirewallEnabledState `json:"state,omitempty"` + // Mode - Describes if it is in detection mode or prevention mode at policy level. Possible values include: 'WebApplicationFirewallModePrevention', 'WebApplicationFirewallModeDetection' + Mode WebApplicationFirewallMode `json:"mode,omitempty"` + // RequestBodyCheck - Whether to allow WAF to check request Body. + RequestBodyCheck *bool `json:"requestBodyCheck,omitempty"` + // MaxRequestBodySizeInKb - Maximum request body size in Kb for WAF. + MaxRequestBodySizeInKb *int32 `json:"maxRequestBodySizeInKb,omitempty"` + // FileUploadLimitInMb - Maximum file upload size in Mb for WAF. + FileUploadLimitInMb *int32 `json:"fileUploadLimitInMb,omitempty"` +} + +// PrepareNetworkPoliciesRequest details of PrepareNetworkPolicies for Subnet. +type PrepareNetworkPoliciesRequest struct { + // ServiceName - The name of the service for which subnet is being prepared for. + ServiceName *string `json:"serviceName,omitempty"` + // NetworkIntentPolicyConfigurations - A list of NetworkIntentPolicyConfiguration. + NetworkIntentPolicyConfigurations *[]IntentPolicyConfiguration `json:"networkIntentPolicyConfigurations,omitempty"` +} + +// PrivateEndpoint private endpoint resource. +type PrivateEndpoint struct { + autorest.Response `json:"-"` + // PrivateEndpointProperties - Properties of the private endpoint. + *PrivateEndpointProperties `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for PrivateEndpoint. +func (peVar PrivateEndpoint) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if peVar.PrivateEndpointProperties != nil { + objectMap["properties"] = peVar.PrivateEndpointProperties + } + if peVar.ID != nil { + objectMap["id"] = peVar.ID + } + if peVar.Location != nil { + objectMap["location"] = peVar.Location + } + if peVar.Tags != nil { + objectMap["tags"] = peVar.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for PrivateEndpoint struct. +func (peVar *PrivateEndpoint) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var privateEndpointProperties PrivateEndpointProperties + err = json.Unmarshal(*v, &privateEndpointProperties) + if err != nil { + return err + } + peVar.PrivateEndpointProperties = &privateEndpointProperties + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + peVar.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + peVar.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + peVar.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + peVar.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + peVar.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + peVar.Tags = tags + } + } + } + + return nil +} + +// PrivateEndpointConnection privateEndpointConnection resource. +type PrivateEndpointConnection struct { + autorest.Response `json:"-"` + // PrivateEndpointConnectionProperties - Properties of the private end point connection. + *PrivateEndpointConnectionProperties `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; The resource type. + Type *string `json:"type,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for PrivateEndpointConnection. +func (pec PrivateEndpointConnection) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if pec.PrivateEndpointConnectionProperties != nil { + objectMap["properties"] = pec.PrivateEndpointConnectionProperties + } + if pec.Name != nil { + objectMap["name"] = pec.Name + } + if pec.ID != nil { + objectMap["id"] = pec.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for PrivateEndpointConnection struct. +func (pec *PrivateEndpointConnection) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var privateEndpointConnectionProperties PrivateEndpointConnectionProperties + err = json.Unmarshal(*v, &privateEndpointConnectionProperties) + if err != nil { + return err + } + pec.PrivateEndpointConnectionProperties = &privateEndpointConnectionProperties + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + pec.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + pec.Type = &typeVar + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + pec.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + pec.ID = &ID + } + } + } + + return nil +} + +// PrivateEndpointConnectionListResult response for the ListPrivateEndpointConnection API service call. +type PrivateEndpointConnectionListResult struct { + autorest.Response `json:"-"` + // Value - A list of PrivateEndpointConnection resources for a specific private link service. + Value *[]PrivateEndpointConnection `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// PrivateEndpointConnectionListResultIterator provides access to a complete listing of +// PrivateEndpointConnection values. +type PrivateEndpointConnectionListResultIterator struct { + i int + page PrivateEndpointConnectionListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *PrivateEndpointConnectionListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateEndpointConnectionListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *PrivateEndpointConnectionListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter PrivateEndpointConnectionListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter PrivateEndpointConnectionListResultIterator) Response() PrivateEndpointConnectionListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter PrivateEndpointConnectionListResultIterator) Value() PrivateEndpointConnection { + if !iter.page.NotDone() { + return PrivateEndpointConnection{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the PrivateEndpointConnectionListResultIterator type. +func NewPrivateEndpointConnectionListResultIterator(page PrivateEndpointConnectionListResultPage) PrivateEndpointConnectionListResultIterator { + return PrivateEndpointConnectionListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (peclr PrivateEndpointConnectionListResult) IsEmpty() bool { + return peclr.Value == nil || len(*peclr.Value) == 0 +} + +// privateEndpointConnectionListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (peclr PrivateEndpointConnectionListResult) privateEndpointConnectionListResultPreparer(ctx context.Context) (*http.Request, error) { + if peclr.NextLink == nil || len(to.String(peclr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(peclr.NextLink))) +} + +// PrivateEndpointConnectionListResultPage contains a page of PrivateEndpointConnection values. +type PrivateEndpointConnectionListResultPage struct { + fn func(context.Context, PrivateEndpointConnectionListResult) (PrivateEndpointConnectionListResult, error) + peclr PrivateEndpointConnectionListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *PrivateEndpointConnectionListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateEndpointConnectionListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.peclr) + if err != nil { + return err + } + page.peclr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *PrivateEndpointConnectionListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page PrivateEndpointConnectionListResultPage) NotDone() bool { + return !page.peclr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page PrivateEndpointConnectionListResultPage) Response() PrivateEndpointConnectionListResult { + return page.peclr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page PrivateEndpointConnectionListResultPage) Values() []PrivateEndpointConnection { + if page.peclr.IsEmpty() { + return nil + } + return *page.peclr.Value +} + +// Creates a new instance of the PrivateEndpointConnectionListResultPage type. +func NewPrivateEndpointConnectionListResultPage(getNextPage func(context.Context, PrivateEndpointConnectionListResult) (PrivateEndpointConnectionListResult, error)) PrivateEndpointConnectionListResultPage { + return PrivateEndpointConnectionListResultPage{fn: getNextPage} +} + +// PrivateEndpointConnectionProperties properties of the PrivateEndpointConnectProperties. +type PrivateEndpointConnectionProperties struct { + // PrivateEndpoint - READ-ONLY; The resource of private end point. + PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` + // PrivateLinkServiceConnectionState - A collection of information about the state of the connection between service consumer and provider. + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the private endpoint connection resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // LinkIdentifier - READ-ONLY; The consumer link id. + LinkIdentifier *string `json:"linkIdentifier,omitempty"` +} + +// PrivateEndpointListResult response for the ListPrivateEndpoints API service call. +type PrivateEndpointListResult struct { + autorest.Response `json:"-"` + // Value - A list of private endpoint resources in a resource group. + Value *[]PrivateEndpoint `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// PrivateEndpointListResultIterator provides access to a complete listing of PrivateEndpoint values. +type PrivateEndpointListResultIterator struct { + i int + page PrivateEndpointListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *PrivateEndpointListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateEndpointListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *PrivateEndpointListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter PrivateEndpointListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter PrivateEndpointListResultIterator) Response() PrivateEndpointListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter PrivateEndpointListResultIterator) Value() PrivateEndpoint { + if !iter.page.NotDone() { + return PrivateEndpoint{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the PrivateEndpointListResultIterator type. +func NewPrivateEndpointListResultIterator(page PrivateEndpointListResultPage) PrivateEndpointListResultIterator { + return PrivateEndpointListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (pelr PrivateEndpointListResult) IsEmpty() bool { + return pelr.Value == nil || len(*pelr.Value) == 0 +} + +// privateEndpointListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (pelr PrivateEndpointListResult) privateEndpointListResultPreparer(ctx context.Context) (*http.Request, error) { + if pelr.NextLink == nil || len(to.String(pelr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(pelr.NextLink))) +} + +// PrivateEndpointListResultPage contains a page of PrivateEndpoint values. +type PrivateEndpointListResultPage struct { + fn func(context.Context, PrivateEndpointListResult) (PrivateEndpointListResult, error) + pelr PrivateEndpointListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *PrivateEndpointListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateEndpointListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.pelr) + if err != nil { + return err + } + page.pelr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *PrivateEndpointListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page PrivateEndpointListResultPage) NotDone() bool { + return !page.pelr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page PrivateEndpointListResultPage) Response() PrivateEndpointListResult { + return page.pelr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page PrivateEndpointListResultPage) Values() []PrivateEndpoint { + if page.pelr.IsEmpty() { + return nil + } + return *page.pelr.Value +} + +// Creates a new instance of the PrivateEndpointListResultPage type. +func NewPrivateEndpointListResultPage(getNextPage func(context.Context, PrivateEndpointListResult) (PrivateEndpointListResult, error)) PrivateEndpointListResultPage { + return PrivateEndpointListResultPage{fn: getNextPage} +} + +// PrivateEndpointProperties properties of the private endpoint. +type PrivateEndpointProperties struct { + // Subnet - The ID of the subnet from which the private IP will be allocated. + Subnet *Subnet `json:"subnet,omitempty"` + // NetworkInterfaces - READ-ONLY; An array of references to the network interfaces created for this private endpoint. + NetworkInterfaces *[]Interface `json:"networkInterfaces,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the private endpoint resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // PrivateLinkServiceConnections - A grouping of information about the connection to the remote resource. + PrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"privateLinkServiceConnections,omitempty"` + // ManualPrivateLinkServiceConnections - A grouping of information about the connection to the remote resource. Used when the network admin does not have access to approve connections to the remote resource. + ManualPrivateLinkServiceConnections *[]PrivateLinkServiceConnection `json:"manualPrivateLinkServiceConnections,omitempty"` +} + +// PrivateEndpointsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type PrivateEndpointsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *PrivateEndpointsCreateOrUpdateFuture) Result(client PrivateEndpointsClient) (peVar PrivateEndpoint, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateEndpointsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.PrivateEndpointsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if peVar.Response.Response, err = future.GetResult(sender); err == nil && peVar.Response.Response.StatusCode != http.StatusNoContent { + peVar, err = client.CreateOrUpdateResponder(peVar.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateEndpointsCreateOrUpdateFuture", "Result", peVar.Response.Response, "Failure responding to request") + } + } + return +} + +// PrivateEndpointsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type PrivateEndpointsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *PrivateEndpointsDeleteFuture) Result(client PrivateEndpointsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateEndpointsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.PrivateEndpointsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// PrivateLinkService private link service resource. +type PrivateLinkService struct { + autorest.Response `json:"-"` + // PrivateLinkServiceProperties - Properties of the private link service. + *PrivateLinkServiceProperties `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for PrivateLinkService. +func (pls PrivateLinkService) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if pls.PrivateLinkServiceProperties != nil { + objectMap["properties"] = pls.PrivateLinkServiceProperties + } + if pls.ID != nil { + objectMap["id"] = pls.ID + } + if pls.Location != nil { + objectMap["location"] = pls.Location + } + if pls.Tags != nil { + objectMap["tags"] = pls.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for PrivateLinkService struct. +func (pls *PrivateLinkService) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var privateLinkServiceProperties PrivateLinkServiceProperties + err = json.Unmarshal(*v, &privateLinkServiceProperties) + if err != nil { + return err + } + pls.PrivateLinkServiceProperties = &privateLinkServiceProperties + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + pls.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + pls.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + pls.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + pls.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + pls.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + pls.Tags = tags + } + } + } + + return nil +} + +// PrivateLinkServiceConnection privateLinkServiceConnection resource. +type PrivateLinkServiceConnection struct { + // PrivateLinkServiceConnectionProperties - Properties of the private link service connection. + *PrivateLinkServiceConnectionProperties `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; The resource type. + Type *string `json:"type,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for PrivateLinkServiceConnection. +func (plsc PrivateLinkServiceConnection) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if plsc.PrivateLinkServiceConnectionProperties != nil { + objectMap["properties"] = plsc.PrivateLinkServiceConnectionProperties + } + if plsc.Name != nil { + objectMap["name"] = plsc.Name + } + if plsc.ID != nil { + objectMap["id"] = plsc.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for PrivateLinkServiceConnection struct. +func (plsc *PrivateLinkServiceConnection) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var privateLinkServiceConnectionProperties PrivateLinkServiceConnectionProperties + err = json.Unmarshal(*v, &privateLinkServiceConnectionProperties) + if err != nil { + return err + } + plsc.PrivateLinkServiceConnectionProperties = &privateLinkServiceConnectionProperties + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + plsc.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + plsc.Type = &typeVar + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + plsc.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + plsc.ID = &ID + } + } + } + + return nil +} + +// PrivateLinkServiceConnectionProperties properties of the PrivateLinkServiceConnection. +type PrivateLinkServiceConnectionProperties struct { + // ProvisioningState - READ-ONLY; The provisioning state of the private link service connection resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // PrivateLinkServiceID - The resource id of private link service. + PrivateLinkServiceID *string `json:"privateLinkServiceId,omitempty"` + // GroupIds - The ID(s) of the group(s) obtained from the remote resource that this private endpoint should connect to. + GroupIds *[]string `json:"groupIds,omitempty"` + // RequestMessage - A message passed to the owner of the remote resource with this connection request. Restricted to 140 chars. + RequestMessage *string `json:"requestMessage,omitempty"` + // PrivateLinkServiceConnectionState - A collection of read-only information about the state of the connection to the remote resource. + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` +} + +// PrivateLinkServiceConnectionState a collection of information about the state of the connection between +// service consumer and provider. +type PrivateLinkServiceConnectionState struct { + // Status - Indicates whether the connection has been Approved/Rejected/Removed by the owner of the service. + Status *string `json:"status,omitempty"` + // Description - The reason for approval/rejection of the connection. + Description *string `json:"description,omitempty"` + // ActionsRequired - A message indicating if changes on the service provider require any updates on the consumer. + ActionsRequired *string `json:"actionsRequired,omitempty"` +} + +// PrivateLinkServiceIPConfiguration the private link service ip configuration. +type PrivateLinkServiceIPConfiguration struct { + // PrivateLinkServiceIPConfigurationProperties - Properties of the private link service ip configuration. + *PrivateLinkServiceIPConfigurationProperties `json:"properties,omitempty"` + // Name - The name of private link service ip configuration. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; The resource type. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for PrivateLinkServiceIPConfiguration. +func (plsic PrivateLinkServiceIPConfiguration) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if plsic.PrivateLinkServiceIPConfigurationProperties != nil { + objectMap["properties"] = plsic.PrivateLinkServiceIPConfigurationProperties + } + if plsic.Name != nil { + objectMap["name"] = plsic.Name + } + if plsic.ID != nil { + objectMap["id"] = plsic.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for PrivateLinkServiceIPConfiguration struct. +func (plsic *PrivateLinkServiceIPConfiguration) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var privateLinkServiceIPConfigurationProperties PrivateLinkServiceIPConfigurationProperties + err = json.Unmarshal(*v, &privateLinkServiceIPConfigurationProperties) + if err != nil { + return err + } + plsic.PrivateLinkServiceIPConfigurationProperties = &privateLinkServiceIPConfigurationProperties + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + plsic.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + plsic.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + plsic.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + plsic.ID = &ID + } + } + } + + return nil +} + +// PrivateLinkServiceIPConfigurationProperties properties of private link service IP configuration. +type PrivateLinkServiceIPConfigurationProperties struct { + // PrivateIPAddress - The private IP address of the IP configuration. + PrivateIPAddress *string `json:"privateIPAddress,omitempty"` + // PrivateIPAllocationMethod - The private IP address allocation method. Possible values include: 'Static', 'Dynamic' + PrivateIPAllocationMethod IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + // Subnet - The reference to the subnet resource. + Subnet *Subnet `json:"subnet,omitempty"` + // Primary - Whether the ip configuration is primary or not. + Primary *bool `json:"primary,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the private link service IP configuration resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // PrivateIPAddressVersion - Whether the specific IP configuration is IPv4 or IPv6. Default is IPv4. Possible values include: 'IPv4', 'IPv6' + PrivateIPAddressVersion IPVersion `json:"privateIPAddressVersion,omitempty"` +} + +// PrivateLinkServiceListResult response for the ListPrivateLinkService API service call. +type PrivateLinkServiceListResult struct { + autorest.Response `json:"-"` + // Value - A list of PrivateLinkService resources in a resource group. + Value *[]PrivateLinkService `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// PrivateLinkServiceListResultIterator provides access to a complete listing of PrivateLinkService values. +type PrivateLinkServiceListResultIterator struct { + i int + page PrivateLinkServiceListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *PrivateLinkServiceListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateLinkServiceListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *PrivateLinkServiceListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter PrivateLinkServiceListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter PrivateLinkServiceListResultIterator) Response() PrivateLinkServiceListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter PrivateLinkServiceListResultIterator) Value() PrivateLinkService { + if !iter.page.NotDone() { + return PrivateLinkService{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the PrivateLinkServiceListResultIterator type. +func NewPrivateLinkServiceListResultIterator(page PrivateLinkServiceListResultPage) PrivateLinkServiceListResultIterator { + return PrivateLinkServiceListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (plslr PrivateLinkServiceListResult) IsEmpty() bool { + return plslr.Value == nil || len(*plslr.Value) == 0 +} + +// privateLinkServiceListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (plslr PrivateLinkServiceListResult) privateLinkServiceListResultPreparer(ctx context.Context) (*http.Request, error) { + if plslr.NextLink == nil || len(to.String(plslr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(plslr.NextLink))) +} + +// PrivateLinkServiceListResultPage contains a page of PrivateLinkService values. +type PrivateLinkServiceListResultPage struct { + fn func(context.Context, PrivateLinkServiceListResult) (PrivateLinkServiceListResult, error) + plslr PrivateLinkServiceListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *PrivateLinkServiceListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateLinkServiceListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.plslr) + if err != nil { + return err + } + page.plslr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *PrivateLinkServiceListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page PrivateLinkServiceListResultPage) NotDone() bool { + return !page.plslr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page PrivateLinkServiceListResultPage) Response() PrivateLinkServiceListResult { + return page.plslr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page PrivateLinkServiceListResultPage) Values() []PrivateLinkService { + if page.plslr.IsEmpty() { + return nil + } + return *page.plslr.Value +} + +// Creates a new instance of the PrivateLinkServiceListResultPage type. +func NewPrivateLinkServiceListResultPage(getNextPage func(context.Context, PrivateLinkServiceListResult) (PrivateLinkServiceListResult, error)) PrivateLinkServiceListResultPage { + return PrivateLinkServiceListResultPage{fn: getNextPage} +} + +// PrivateLinkServiceProperties properties of the private link service. +type PrivateLinkServiceProperties struct { + // LoadBalancerFrontendIPConfigurations - An array of references to the load balancer IP configurations. + LoadBalancerFrontendIPConfigurations *[]FrontendIPConfiguration `json:"loadBalancerFrontendIpConfigurations,omitempty"` + // IPConfigurations - An array of private link service IP configurations. + IPConfigurations *[]PrivateLinkServiceIPConfiguration `json:"ipConfigurations,omitempty"` + // NetworkInterfaces - READ-ONLY; An array of references to the network interfaces created for this private link service. + NetworkInterfaces *[]Interface `json:"networkInterfaces,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the private link service resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // PrivateEndpointConnections - READ-ONLY; An array of list about connections to the private endpoint. + PrivateEndpointConnections *[]PrivateEndpointConnection `json:"privateEndpointConnections,omitempty"` + // Visibility - The visibility list of the private link service. + Visibility *PrivateLinkServicePropertiesVisibility `json:"visibility,omitempty"` + // AutoApproval - The auto-approval list of the private link service. + AutoApproval *PrivateLinkServicePropertiesAutoApproval `json:"autoApproval,omitempty"` + // Fqdns - The list of Fqdn. + Fqdns *[]string `json:"fqdns,omitempty"` + // Alias - READ-ONLY; The alias of the private link service. + Alias *string `json:"alias,omitempty"` + // EnableProxyProtocol - Whether the private link service is enabled for proxy protocol or not. + EnableProxyProtocol *bool `json:"enableProxyProtocol,omitempty"` +} + +// PrivateLinkServicePropertiesAutoApproval the auto-approval list of the private link service. +type PrivateLinkServicePropertiesAutoApproval struct { + // Subscriptions - The list of subscriptions. + Subscriptions *[]string `json:"subscriptions,omitempty"` +} + +// PrivateLinkServicePropertiesVisibility the visibility list of the private link service. +type PrivateLinkServicePropertiesVisibility struct { + // Subscriptions - The list of subscriptions. + Subscriptions *[]string `json:"subscriptions,omitempty"` +} + +// PrivateLinkServicesCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type PrivateLinkServicesCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *PrivateLinkServicesCreateOrUpdateFuture) Result(client PrivateLinkServicesClient) (pls PrivateLinkService, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.PrivateLinkServicesCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if pls.Response.Response, err = future.GetResult(sender); err == nil && pls.Response.Response.StatusCode != http.StatusNoContent { + pls, err = client.CreateOrUpdateResponder(pls.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesCreateOrUpdateFuture", "Result", pls.Response.Response, "Failure responding to request") + } + } + return +} + +// PrivateLinkServicesDeleteFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type PrivateLinkServicesDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *PrivateLinkServicesDeleteFuture) Result(client PrivateLinkServicesClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.PrivateLinkServicesDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// PrivateLinkServicesDeletePrivateEndpointConnectionFuture an abstraction for monitoring and retrieving +// the results of a long-running operation. +type PrivateLinkServicesDeletePrivateEndpointConnectionFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *PrivateLinkServicesDeletePrivateEndpointConnectionFuture) Result(client PrivateLinkServicesClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesDeletePrivateEndpointConnectionFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.PrivateLinkServicesDeletePrivateEndpointConnectionFuture") + return + } + ar.Response = future.Response() + return +} + +// PrivateLinkServiceVisibility response for the CheckPrivateLinkServiceVisibility API service call. +type PrivateLinkServiceVisibility struct { + autorest.Response `json:"-"` + // Visible - Private Link Service Visibility (True/False). + Visible *bool `json:"visible,omitempty"` +} + +// Probe a load balancer probe. +type Probe struct { + autorest.Response `json:"-"` + // ProbePropertiesFormat - Properties of load balancer probe. + *ProbePropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within the set of probes used by the load balancer. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Type of the resource. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for Probe. +func (p Probe) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if p.ProbePropertiesFormat != nil { + objectMap["properties"] = p.ProbePropertiesFormat + } + if p.Name != nil { + objectMap["name"] = p.Name + } + if p.ID != nil { + objectMap["id"] = p.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for Probe struct. +func (p *Probe) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var probePropertiesFormat ProbePropertiesFormat + err = json.Unmarshal(*v, &probePropertiesFormat) + if err != nil { + return err + } + p.ProbePropertiesFormat = &probePropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + p.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + p.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + p.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + p.ID = &ID + } + } + } + + return nil +} + +// ProbePropertiesFormat load balancer probe resource. +type ProbePropertiesFormat struct { + // LoadBalancingRules - READ-ONLY; The load balancer rules that use this probe. + LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` + // Protocol - The protocol of the end point. If 'Tcp' is specified, a received ACK is required for the probe to be successful. If 'Http' or 'Https' is specified, a 200 OK response from the specifies URI is required for the probe to be successful. Possible values include: 'ProbeProtocolHTTP', 'ProbeProtocolTCP', 'ProbeProtocolHTTPS' + Protocol ProbeProtocol `json:"protocol,omitempty"` + // Port - The port for communicating the probe. Possible values range from 1 to 65535, inclusive. + Port *int32 `json:"port,omitempty"` + // IntervalInSeconds - The interval, in seconds, for how frequently to probe the endpoint for health status. Typically, the interval is slightly less than half the allocated timeout period (in seconds) which allows two full probes before taking the instance out of rotation. The default value is 15, the minimum value is 5. + IntervalInSeconds *int32 `json:"intervalInSeconds,omitempty"` + // NumberOfProbes - The number of probes where if no response, will result in stopping further traffic from being delivered to the endpoint. This values allows endpoints to be taken out of rotation faster or slower than the typical times used in Azure. + NumberOfProbes *int32 `json:"numberOfProbes,omitempty"` + // RequestPath - The URI used for requesting health status from the VM. Path is required if a protocol is set to http. Otherwise, it is not allowed. There is no default value. + RequestPath *string `json:"requestPath,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the probe resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// Profile network profile resource. +type Profile struct { + autorest.Response `json:"-"` + // ProfilePropertiesFormat - Network profile properties. + *ProfilePropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for Profile. +func (p Profile) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if p.ProfilePropertiesFormat != nil { + objectMap["properties"] = p.ProfilePropertiesFormat + } + if p.ID != nil { + objectMap["id"] = p.ID + } + if p.Location != nil { + objectMap["location"] = p.Location + } + if p.Tags != nil { + objectMap["tags"] = p.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for Profile struct. +func (p *Profile) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var profilePropertiesFormat ProfilePropertiesFormat + err = json.Unmarshal(*v, &profilePropertiesFormat) + if err != nil { + return err + } + p.ProfilePropertiesFormat = &profilePropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + p.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + p.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + p.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + p.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + p.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + p.Tags = tags + } + } + } + + return nil +} + +// ProfileListResult response for ListNetworkProfiles API service call. +type ProfileListResult struct { + autorest.Response `json:"-"` + // Value - A list of network profiles that exist in a resource group. + Value *[]Profile `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// ProfileListResultIterator provides access to a complete listing of Profile values. +type ProfileListResultIterator struct { + i int + page ProfileListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ProfileListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ProfileListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ProfileListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ProfileListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ProfileListResultIterator) Response() ProfileListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ProfileListResultIterator) Value() Profile { + if !iter.page.NotDone() { + return Profile{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ProfileListResultIterator type. +func NewProfileListResultIterator(page ProfileListResultPage) ProfileListResultIterator { + return ProfileListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (plr ProfileListResult) IsEmpty() bool { + return plr.Value == nil || len(*plr.Value) == 0 +} + +// profileListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (plr ProfileListResult) profileListResultPreparer(ctx context.Context) (*http.Request, error) { + if plr.NextLink == nil || len(to.String(plr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(plr.NextLink))) +} + +// ProfileListResultPage contains a page of Profile values. +type ProfileListResultPage struct { + fn func(context.Context, ProfileListResult) (ProfileListResult, error) + plr ProfileListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ProfileListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ProfileListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.plr) + if err != nil { + return err + } + page.plr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ProfileListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ProfileListResultPage) NotDone() bool { + return !page.plr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ProfileListResultPage) Response() ProfileListResult { + return page.plr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ProfileListResultPage) Values() []Profile { + if page.plr.IsEmpty() { + return nil + } + return *page.plr.Value +} + +// Creates a new instance of the ProfileListResultPage type. +func NewProfileListResultPage(getNextPage func(context.Context, ProfileListResult) (ProfileListResult, error)) ProfileListResultPage { + return ProfileListResultPage{fn: getNextPage} +} + +// ProfilePropertiesFormat network profile properties. +type ProfilePropertiesFormat struct { + // ContainerNetworkInterfaces - READ-ONLY; List of child container network interfaces. + ContainerNetworkInterfaces *[]ContainerNetworkInterface `json:"containerNetworkInterfaces,omitempty"` + // ContainerNetworkInterfaceConfigurations - List of chid container network interface configurations. + ContainerNetworkInterfaceConfigurations *[]ContainerNetworkInterfaceConfiguration `json:"containerNetworkInterfaceConfigurations,omitempty"` + // ResourceGUID - READ-ONLY; The resource GUID property of the network profile resource. + ResourceGUID *string `json:"resourceGuid,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the network profile resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// ProfilesDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type ProfilesDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ProfilesDeleteFuture) Result(client ProfilesClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ProfilesDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ProfilesDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// ProtocolConfiguration configuration of the protocol. +type ProtocolConfiguration struct { + // HTTPConfiguration - HTTP configuration of the connectivity check. + HTTPConfiguration *HTTPConfiguration `json:"HTTPConfiguration,omitempty"` +} + +// ProtocolCustomSettingsFormat dDoS custom policy properties. +type ProtocolCustomSettingsFormat struct { + // Protocol - The protocol for which the DDoS protection policy is being customized. Possible values include: 'DdosCustomPolicyProtocolTCP', 'DdosCustomPolicyProtocolUDP', 'DdosCustomPolicyProtocolSyn' + Protocol DdosCustomPolicyProtocol `json:"protocol,omitempty"` + // TriggerRateOverride - The customized DDoS protection trigger rate. + TriggerRateOverride *string `json:"triggerRateOverride,omitempty"` + // SourceRateOverride - The customized DDoS protection source rate. + SourceRateOverride *string `json:"sourceRateOverride,omitempty"` + // TriggerSensitivityOverride - The customized DDoS protection trigger rate sensitivity degrees. High: Trigger rate set with most sensitivity w.r.t. normal traffic. Default: Trigger rate set with moderate sensitivity w.r.t. normal traffic. Low: Trigger rate set with less sensitivity w.r.t. normal traffic. Relaxed: Trigger rate set with least sensitivity w.r.t. normal traffic. Possible values include: 'Relaxed', 'Low', 'Default', 'High' + TriggerSensitivityOverride DdosCustomPolicyTriggerSensitivityOverride `json:"triggerSensitivityOverride,omitempty"` +} + +// PublicIPAddress public IP address resource. +type PublicIPAddress struct { + autorest.Response `json:"-"` + // Sku - The public IP address SKU. + Sku *PublicIPAddressSku `json:"sku,omitempty"` + // PublicIPAddressPropertiesFormat - Public IP address properties. + *PublicIPAddressPropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Zones - A list of availability zones denoting the IP allocated for the resource needs to come from. + Zones *[]string `json:"zones,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for PublicIPAddress. +func (pia PublicIPAddress) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if pia.Sku != nil { + objectMap["sku"] = pia.Sku + } + if pia.PublicIPAddressPropertiesFormat != nil { + objectMap["properties"] = pia.PublicIPAddressPropertiesFormat + } + if pia.Zones != nil { + objectMap["zones"] = pia.Zones + } + if pia.ID != nil { + objectMap["id"] = pia.ID + } + if pia.Location != nil { + objectMap["location"] = pia.Location + } + if pia.Tags != nil { + objectMap["tags"] = pia.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for PublicIPAddress struct. +func (pia *PublicIPAddress) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "sku": + if v != nil { + var sku PublicIPAddressSku + err = json.Unmarshal(*v, &sku) + if err != nil { + return err + } + pia.Sku = &sku + } + case "properties": + if v != nil { + var publicIPAddressPropertiesFormat PublicIPAddressPropertiesFormat + err = json.Unmarshal(*v, &publicIPAddressPropertiesFormat) + if err != nil { + return err + } + pia.PublicIPAddressPropertiesFormat = &publicIPAddressPropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + pia.Etag = &etag + } + case "zones": + if v != nil { + var zones []string + err = json.Unmarshal(*v, &zones) + if err != nil { + return err + } + pia.Zones = &zones + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + pia.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + pia.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + pia.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + pia.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + pia.Tags = tags + } + } + } + + return nil +} + +// PublicIPAddressDNSSettings contains FQDN of the DNS record associated with the public IP address. +type PublicIPAddressDNSSettings struct { + // DomainNameLabel - The domain name label. The concatenation of the domain name label and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address. If a domain name label is specified, an A DNS record is created for the public IP in the Microsoft Azure DNS system. + DomainNameLabel *string `json:"domainNameLabel,omitempty"` + // Fqdn - The Fully Qualified Domain Name of the A DNS record associated with the public IP. This is the concatenation of the domainNameLabel and the regionalized DNS zone. + Fqdn *string `json:"fqdn,omitempty"` + // ReverseFqdn - The reverse FQDN. A user-visible, fully qualified domain name that resolves to this public IP address. If the reverseFqdn is specified, then a PTR DNS record is created pointing from the IP address in the in-addr.arpa domain to the reverse FQDN. + ReverseFqdn *string `json:"reverseFqdn,omitempty"` +} + +// PublicIPAddressesCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type PublicIPAddressesCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *PublicIPAddressesCreateOrUpdateFuture) Result(client PublicIPAddressesClient) (pia PublicIPAddress, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.PublicIPAddressesCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if pia.Response.Response, err = future.GetResult(sender); err == nil && pia.Response.Response.StatusCode != http.StatusNoContent { + pia, err = client.CreateOrUpdateResponder(pia.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesCreateOrUpdateFuture", "Result", pia.Response.Response, "Failure responding to request") + } + } + return +} + +// PublicIPAddressesDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type PublicIPAddressesDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *PublicIPAddressesDeleteFuture) Result(client PublicIPAddressesClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.PublicIPAddressesDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// PublicIPAddressListResult response for ListPublicIpAddresses API service call. +type PublicIPAddressListResult struct { + autorest.Response `json:"-"` + // Value - A list of public IP addresses that exists in a resource group. + Value *[]PublicIPAddress `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// PublicIPAddressListResultIterator provides access to a complete listing of PublicIPAddress values. +type PublicIPAddressListResultIterator struct { + i int + page PublicIPAddressListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *PublicIPAddressListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PublicIPAddressListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *PublicIPAddressListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter PublicIPAddressListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter PublicIPAddressListResultIterator) Response() PublicIPAddressListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter PublicIPAddressListResultIterator) Value() PublicIPAddress { + if !iter.page.NotDone() { + return PublicIPAddress{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the PublicIPAddressListResultIterator type. +func NewPublicIPAddressListResultIterator(page PublicIPAddressListResultPage) PublicIPAddressListResultIterator { + return PublicIPAddressListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (pialr PublicIPAddressListResult) IsEmpty() bool { + return pialr.Value == nil || len(*pialr.Value) == 0 +} + +// publicIPAddressListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (pialr PublicIPAddressListResult) publicIPAddressListResultPreparer(ctx context.Context) (*http.Request, error) { + if pialr.NextLink == nil || len(to.String(pialr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(pialr.NextLink))) +} + +// PublicIPAddressListResultPage contains a page of PublicIPAddress values. +type PublicIPAddressListResultPage struct { + fn func(context.Context, PublicIPAddressListResult) (PublicIPAddressListResult, error) + pialr PublicIPAddressListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *PublicIPAddressListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PublicIPAddressListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.pialr) + if err != nil { + return err + } + page.pialr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *PublicIPAddressListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page PublicIPAddressListResultPage) NotDone() bool { + return !page.pialr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page PublicIPAddressListResultPage) Response() PublicIPAddressListResult { + return page.pialr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page PublicIPAddressListResultPage) Values() []PublicIPAddress { + if page.pialr.IsEmpty() { + return nil + } + return *page.pialr.Value +} + +// Creates a new instance of the PublicIPAddressListResultPage type. +func NewPublicIPAddressListResultPage(getNextPage func(context.Context, PublicIPAddressListResult) (PublicIPAddressListResult, error)) PublicIPAddressListResultPage { + return PublicIPAddressListResultPage{fn: getNextPage} +} + +// PublicIPAddressPropertiesFormat public IP address properties. +type PublicIPAddressPropertiesFormat struct { + // PublicIPAllocationMethod - The public IP address allocation method. Possible values include: 'Static', 'Dynamic' + PublicIPAllocationMethod IPAllocationMethod `json:"publicIPAllocationMethod,omitempty"` + // PublicIPAddressVersion - The public IP address version. Possible values include: 'IPv4', 'IPv6' + PublicIPAddressVersion IPVersion `json:"publicIPAddressVersion,omitempty"` + // IPConfiguration - READ-ONLY; The IP configuration associated with the public IP address. + IPConfiguration *IPConfiguration `json:"ipConfiguration,omitempty"` + // DNSSettings - The FQDN of the DNS record associated with the public IP address. + DNSSettings *PublicIPAddressDNSSettings `json:"dnsSettings,omitempty"` + // DdosSettings - The DDoS protection custom policy associated with the public IP address. + DdosSettings *DdosSettings `json:"ddosSettings,omitempty"` + // IPTags - The list of tags associated with the public IP address. + IPTags *[]IPTag `json:"ipTags,omitempty"` + // IPAddress - The IP address associated with the public IP address resource. + IPAddress *string `json:"ipAddress,omitempty"` + // PublicIPPrefix - The Public IP Prefix this Public IP Address should be allocated from. + PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"` + // IdleTimeoutInMinutes - The idle timeout of the public IP address. + IdleTimeoutInMinutes *int32 `json:"idleTimeoutInMinutes,omitempty"` + // ResourceGUID - READ-ONLY; The resource GUID property of the public IP address resource. + ResourceGUID *string `json:"resourceGuid,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the public IP address resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// PublicIPAddressSku SKU of a public IP address. +type PublicIPAddressSku struct { + // Name - Name of a public IP address SKU. Possible values include: 'PublicIPAddressSkuNameBasic', 'PublicIPAddressSkuNameStandard' + Name PublicIPAddressSkuName `json:"name,omitempty"` +} + +// PublicIPPrefix public IP prefix resource. +type PublicIPPrefix struct { + autorest.Response `json:"-"` + // Sku - The public IP prefix SKU. + Sku *PublicIPPrefixSku `json:"sku,omitempty"` + // PublicIPPrefixPropertiesFormat - Public IP prefix properties. + *PublicIPPrefixPropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Zones - A list of availability zones denoting the IP allocated for the resource needs to come from. + Zones *[]string `json:"zones,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for PublicIPPrefix. +func (pip PublicIPPrefix) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if pip.Sku != nil { + objectMap["sku"] = pip.Sku + } + if pip.PublicIPPrefixPropertiesFormat != nil { + objectMap["properties"] = pip.PublicIPPrefixPropertiesFormat + } + if pip.Zones != nil { + objectMap["zones"] = pip.Zones + } + if pip.ID != nil { + objectMap["id"] = pip.ID + } + if pip.Location != nil { + objectMap["location"] = pip.Location + } + if pip.Tags != nil { + objectMap["tags"] = pip.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for PublicIPPrefix struct. +func (pip *PublicIPPrefix) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "sku": + if v != nil { + var sku PublicIPPrefixSku + err = json.Unmarshal(*v, &sku) + if err != nil { + return err + } + pip.Sku = &sku + } + case "properties": + if v != nil { + var publicIPPrefixPropertiesFormat PublicIPPrefixPropertiesFormat + err = json.Unmarshal(*v, &publicIPPrefixPropertiesFormat) + if err != nil { + return err + } + pip.PublicIPPrefixPropertiesFormat = &publicIPPrefixPropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + pip.Etag = &etag + } + case "zones": + if v != nil { + var zones []string + err = json.Unmarshal(*v, &zones) + if err != nil { + return err + } + pip.Zones = &zones + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + pip.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + pip.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + pip.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + pip.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + pip.Tags = tags + } + } + } + + return nil +} + +// PublicIPPrefixesCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type PublicIPPrefixesCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *PublicIPPrefixesCreateOrUpdateFuture) Result(client PublicIPPrefixesClient) (pip PublicIPPrefix, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPPrefixesCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.PublicIPPrefixesCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if pip.Response.Response, err = future.GetResult(sender); err == nil && pip.Response.Response.StatusCode != http.StatusNoContent { + pip, err = client.CreateOrUpdateResponder(pip.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPPrefixesCreateOrUpdateFuture", "Result", pip.Response.Response, "Failure responding to request") + } + } + return +} + +// PublicIPPrefixesDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type PublicIPPrefixesDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *PublicIPPrefixesDeleteFuture) Result(client PublicIPPrefixesClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPPrefixesDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.PublicIPPrefixesDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// PublicIPPrefixListResult response for ListPublicIpPrefixes API service call. +type PublicIPPrefixListResult struct { + autorest.Response `json:"-"` + // Value - A list of public IP prefixes that exists in a resource group. + Value *[]PublicIPPrefix `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// PublicIPPrefixListResultIterator provides access to a complete listing of PublicIPPrefix values. +type PublicIPPrefixListResultIterator struct { + i int + page PublicIPPrefixListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *PublicIPPrefixListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PublicIPPrefixListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *PublicIPPrefixListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter PublicIPPrefixListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter PublicIPPrefixListResultIterator) Response() PublicIPPrefixListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter PublicIPPrefixListResultIterator) Value() PublicIPPrefix { + if !iter.page.NotDone() { + return PublicIPPrefix{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the PublicIPPrefixListResultIterator type. +func NewPublicIPPrefixListResultIterator(page PublicIPPrefixListResultPage) PublicIPPrefixListResultIterator { + return PublicIPPrefixListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (piplr PublicIPPrefixListResult) IsEmpty() bool { + return piplr.Value == nil || len(*piplr.Value) == 0 +} + +// publicIPPrefixListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (piplr PublicIPPrefixListResult) publicIPPrefixListResultPreparer(ctx context.Context) (*http.Request, error) { + if piplr.NextLink == nil || len(to.String(piplr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(piplr.NextLink))) +} + +// PublicIPPrefixListResultPage contains a page of PublicIPPrefix values. +type PublicIPPrefixListResultPage struct { + fn func(context.Context, PublicIPPrefixListResult) (PublicIPPrefixListResult, error) + piplr PublicIPPrefixListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *PublicIPPrefixListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PublicIPPrefixListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.piplr) + if err != nil { + return err + } + page.piplr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *PublicIPPrefixListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page PublicIPPrefixListResultPage) NotDone() bool { + return !page.piplr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page PublicIPPrefixListResultPage) Response() PublicIPPrefixListResult { + return page.piplr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page PublicIPPrefixListResultPage) Values() []PublicIPPrefix { + if page.piplr.IsEmpty() { + return nil + } + return *page.piplr.Value +} + +// Creates a new instance of the PublicIPPrefixListResultPage type. +func NewPublicIPPrefixListResultPage(getNextPage func(context.Context, PublicIPPrefixListResult) (PublicIPPrefixListResult, error)) PublicIPPrefixListResultPage { + return PublicIPPrefixListResultPage{fn: getNextPage} +} + +// PublicIPPrefixPropertiesFormat public IP prefix properties. +type PublicIPPrefixPropertiesFormat struct { + // PublicIPAddressVersion - The public IP address version. Possible values include: 'IPv4', 'IPv6' + PublicIPAddressVersion IPVersion `json:"publicIPAddressVersion,omitempty"` + // IPTags - The list of tags associated with the public IP prefix. + IPTags *[]IPTag `json:"ipTags,omitempty"` + // PrefixLength - The Length of the Public IP Prefix. + PrefixLength *int32 `json:"prefixLength,omitempty"` + // IPPrefix - READ-ONLY; The allocated Prefix. + IPPrefix *string `json:"ipPrefix,omitempty"` + // PublicIPAddresses - READ-ONLY; The list of all referenced PublicIPAddresses. + PublicIPAddresses *[]ReferencedPublicIPAddress `json:"publicIPAddresses,omitempty"` + // LoadBalancerFrontendIPConfiguration - READ-ONLY; The reference to load balancer frontend IP configuration associated with the public IP prefix. + LoadBalancerFrontendIPConfiguration *SubResource `json:"loadBalancerFrontendIpConfiguration,omitempty"` + // ResourceGUID - READ-ONLY; The resource GUID property of the public IP prefix resource. + ResourceGUID *string `json:"resourceGuid,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the public IP prefix resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// PublicIPPrefixSku SKU of a public IP prefix. +type PublicIPPrefixSku struct { + // Name - Name of a public IP prefix SKU. Possible values include: 'PublicIPPrefixSkuNameStandard' + Name PublicIPPrefixSkuName `json:"name,omitempty"` +} + +// PutBastionShareableLinkAllFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type PutBastionShareableLinkAllFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *PutBastionShareableLinkAllFuture) Result(client BaseClient) (bsllrp BastionShareableLinkListResultPage, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PutBastionShareableLinkAllFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.PutBastionShareableLinkAllFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if bsllrp.bsllr.Response.Response, err = future.GetResult(sender); err == nil && bsllrp.bsllr.Response.Response.StatusCode != http.StatusNoContent { + bsllrp, err = client.PutBastionShareableLinkResponder(bsllrp.bsllr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PutBastionShareableLinkAllFuture", "Result", bsllrp.bsllr.Response.Response, "Failure responding to request") + } + } + return +} + +// PutBastionShareableLinkFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type PutBastionShareableLinkFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *PutBastionShareableLinkFuture) Result(client BaseClient) (bsllrp BastionShareableLinkListResultPage, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PutBastionShareableLinkFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.PutBastionShareableLinkFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if bsllrp.bsllr.Response.Response, err = future.GetResult(sender); err == nil && bsllrp.bsllr.Response.Response.StatusCode != http.StatusNoContent { + bsllrp, err = client.PutBastionShareableLinkResponder(bsllrp.bsllr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PutBastionShareableLinkFuture", "Result", bsllrp.bsllr.Response.Response, "Failure responding to request") + } + } + return +} + +// QueryTroubleshootingParameters parameters that define the resource to query the troubleshooting result. +type QueryTroubleshootingParameters struct { + // TargetResourceID - The target resource ID to query the troubleshooting result. + TargetResourceID *string `json:"targetResourceId,omitempty"` +} + +// ReferencedPublicIPAddress reference to a public IP address. +type ReferencedPublicIPAddress struct { + // ID - The PublicIPAddress Reference. + ID *string `json:"id,omitempty"` +} + +// Resource common resource representation. +type Resource struct { + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for Resource. +func (r Resource) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if r.ID != nil { + objectMap["id"] = r.ID + } + if r.Location != nil { + objectMap["location"] = r.Location + } + if r.Tags != nil { + objectMap["tags"] = r.Tags + } + return json.Marshal(objectMap) +} + +// ResourceNavigationLink resourceNavigationLink resource. +type ResourceNavigationLink struct { + // ResourceNavigationLinkFormat - Resource navigation link properties format. + *ResourceNavigationLinkFormat `json:"properties,omitempty"` + // Name - Name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ResourceNavigationLink. +func (rnl ResourceNavigationLink) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if rnl.ResourceNavigationLinkFormat != nil { + objectMap["properties"] = rnl.ResourceNavigationLinkFormat + } + if rnl.Name != nil { + objectMap["name"] = rnl.Name + } + if rnl.ID != nil { + objectMap["id"] = rnl.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ResourceNavigationLink struct. +func (rnl *ResourceNavigationLink) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var resourceNavigationLinkFormat ResourceNavigationLinkFormat + err = json.Unmarshal(*v, &resourceNavigationLinkFormat) + if err != nil { + return err + } + rnl.ResourceNavigationLinkFormat = &resourceNavigationLinkFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + rnl.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + rnl.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + rnl.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + rnl.ID = &ID + } + } + } + + return nil +} + +// ResourceNavigationLinkFormat properties of ResourceNavigationLink. +type ResourceNavigationLinkFormat struct { + // LinkedResourceType - Resource type of the linked resource. + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + // Link - Link to the external resource. + Link *string `json:"link,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the resource navigation link resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// ResourceNavigationLinksListResult response for ResourceNavigationLinks_List operation. +type ResourceNavigationLinksListResult struct { + autorest.Response `json:"-"` + // Value - The resource navigation links in a subnet. + Value *[]ResourceNavigationLink `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// ResourceSet the base resource set for visibility and auto-approval. +type ResourceSet struct { + // Subscriptions - The list of subscriptions. + Subscriptions *[]string `json:"subscriptions,omitempty"` +} + +// RetentionPolicyParameters parameters that define the retention policy for flow log. +type RetentionPolicyParameters struct { + // Days - Number of days to retain flow log records. + Days *int32 `json:"days,omitempty"` + // Enabled - Flag to enable/disable retention. + Enabled *bool `json:"enabled,omitempty"` +} + +// Route route resource. +type Route struct { + autorest.Response `json:"-"` + // RoutePropertiesFormat - Properties of the route. + *RoutePropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for Route. +func (r Route) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if r.RoutePropertiesFormat != nil { + objectMap["properties"] = r.RoutePropertiesFormat + } + if r.Name != nil { + objectMap["name"] = r.Name + } + if r.ID != nil { + objectMap["id"] = r.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for Route struct. +func (r *Route) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var routePropertiesFormat RoutePropertiesFormat + err = json.Unmarshal(*v, &routePropertiesFormat) + if err != nil { + return err + } + r.RoutePropertiesFormat = &routePropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + r.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + r.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + r.ID = &ID + } + } + } + + return nil +} + +// RouteFilter route Filter Resource. +type RouteFilter struct { + autorest.Response `json:"-"` + // RouteFilterPropertiesFormat - Properties of the route filter. + *RouteFilterPropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for RouteFilter. +func (rf RouteFilter) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if rf.RouteFilterPropertiesFormat != nil { + objectMap["properties"] = rf.RouteFilterPropertiesFormat + } + if rf.ID != nil { + objectMap["id"] = rf.ID + } + if rf.Location != nil { + objectMap["location"] = rf.Location + } + if rf.Tags != nil { + objectMap["tags"] = rf.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for RouteFilter struct. +func (rf *RouteFilter) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var routeFilterPropertiesFormat RouteFilterPropertiesFormat + err = json.Unmarshal(*v, &routeFilterPropertiesFormat) + if err != nil { + return err + } + rf.RouteFilterPropertiesFormat = &routeFilterPropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + rf.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + rf.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + rf.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + rf.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + rf.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + rf.Tags = tags + } + } + } + + return nil +} + +// RouteFilterListResult response for the ListRouteFilters API service call. +type RouteFilterListResult struct { + autorest.Response `json:"-"` + // Value - A list of route filters in a resource group. + Value *[]RouteFilter `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// RouteFilterListResultIterator provides access to a complete listing of RouteFilter values. +type RouteFilterListResultIterator struct { + i int + page RouteFilterListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *RouteFilterListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteFilterListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *RouteFilterListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter RouteFilterListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter RouteFilterListResultIterator) Response() RouteFilterListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter RouteFilterListResultIterator) Value() RouteFilter { + if !iter.page.NotDone() { + return RouteFilter{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the RouteFilterListResultIterator type. +func NewRouteFilterListResultIterator(page RouteFilterListResultPage) RouteFilterListResultIterator { + return RouteFilterListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (rflr RouteFilterListResult) IsEmpty() bool { + return rflr.Value == nil || len(*rflr.Value) == 0 +} + +// routeFilterListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (rflr RouteFilterListResult) routeFilterListResultPreparer(ctx context.Context) (*http.Request, error) { + if rflr.NextLink == nil || len(to.String(rflr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(rflr.NextLink))) +} + +// RouteFilterListResultPage contains a page of RouteFilter values. +type RouteFilterListResultPage struct { + fn func(context.Context, RouteFilterListResult) (RouteFilterListResult, error) + rflr RouteFilterListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *RouteFilterListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteFilterListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.rflr) + if err != nil { + return err + } + page.rflr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *RouteFilterListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page RouteFilterListResultPage) NotDone() bool { + return !page.rflr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page RouteFilterListResultPage) Response() RouteFilterListResult { + return page.rflr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page RouteFilterListResultPage) Values() []RouteFilter { + if page.rflr.IsEmpty() { + return nil + } + return *page.rflr.Value +} + +// Creates a new instance of the RouteFilterListResultPage type. +func NewRouteFilterListResultPage(getNextPage func(context.Context, RouteFilterListResult) (RouteFilterListResult, error)) RouteFilterListResultPage { + return RouteFilterListResultPage{fn: getNextPage} +} + +// RouteFilterPropertiesFormat route Filter Resource. +type RouteFilterPropertiesFormat struct { + // Rules - Collection of RouteFilterRules contained within a route filter. + Rules *[]RouteFilterRule `json:"rules,omitempty"` + // Peerings - READ-ONLY; A collection of references to express route circuit peerings. + Peerings *[]ExpressRouteCircuitPeering `json:"peerings,omitempty"` + // Ipv6Peerings - READ-ONLY; A collection of references to express route circuit ipv6 peerings. + Ipv6Peerings *[]ExpressRouteCircuitPeering `json:"ipv6Peerings,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the route filter resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// RouteFilterRule route Filter Rule Resource. +type RouteFilterRule struct { + autorest.Response `json:"-"` + // RouteFilterRulePropertiesFormat - Properties of the route filter rule. + *RouteFilterRulePropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for RouteFilterRule. +func (rfr RouteFilterRule) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if rfr.RouteFilterRulePropertiesFormat != nil { + objectMap["properties"] = rfr.RouteFilterRulePropertiesFormat + } + if rfr.Name != nil { + objectMap["name"] = rfr.Name + } + if rfr.Location != nil { + objectMap["location"] = rfr.Location + } + if rfr.ID != nil { + objectMap["id"] = rfr.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for RouteFilterRule struct. +func (rfr *RouteFilterRule) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var routeFilterRulePropertiesFormat RouteFilterRulePropertiesFormat + err = json.Unmarshal(*v, &routeFilterRulePropertiesFormat) + if err != nil { + return err + } + rfr.RouteFilterRulePropertiesFormat = &routeFilterRulePropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + rfr.Name = &name + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + rfr.Location = &location + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + rfr.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + rfr.ID = &ID + } + } + } + + return nil +} + +// RouteFilterRuleListResult response for the ListRouteFilterRules API service call. +type RouteFilterRuleListResult struct { + autorest.Response `json:"-"` + // Value - A list of RouteFilterRules in a resource group. + Value *[]RouteFilterRule `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// RouteFilterRuleListResultIterator provides access to a complete listing of RouteFilterRule values. +type RouteFilterRuleListResultIterator struct { + i int + page RouteFilterRuleListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *RouteFilterRuleListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteFilterRuleListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *RouteFilterRuleListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter RouteFilterRuleListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter RouteFilterRuleListResultIterator) Response() RouteFilterRuleListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter RouteFilterRuleListResultIterator) Value() RouteFilterRule { + if !iter.page.NotDone() { + return RouteFilterRule{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the RouteFilterRuleListResultIterator type. +func NewRouteFilterRuleListResultIterator(page RouteFilterRuleListResultPage) RouteFilterRuleListResultIterator { + return RouteFilterRuleListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (rfrlr RouteFilterRuleListResult) IsEmpty() bool { + return rfrlr.Value == nil || len(*rfrlr.Value) == 0 +} + +// routeFilterRuleListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (rfrlr RouteFilterRuleListResult) routeFilterRuleListResultPreparer(ctx context.Context) (*http.Request, error) { + if rfrlr.NextLink == nil || len(to.String(rfrlr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(rfrlr.NextLink))) +} + +// RouteFilterRuleListResultPage contains a page of RouteFilterRule values. +type RouteFilterRuleListResultPage struct { + fn func(context.Context, RouteFilterRuleListResult) (RouteFilterRuleListResult, error) + rfrlr RouteFilterRuleListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *RouteFilterRuleListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteFilterRuleListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.rfrlr) + if err != nil { + return err + } + page.rfrlr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *RouteFilterRuleListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page RouteFilterRuleListResultPage) NotDone() bool { + return !page.rfrlr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page RouteFilterRuleListResultPage) Response() RouteFilterRuleListResult { + return page.rfrlr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page RouteFilterRuleListResultPage) Values() []RouteFilterRule { + if page.rfrlr.IsEmpty() { + return nil + } + return *page.rfrlr.Value +} + +// Creates a new instance of the RouteFilterRuleListResultPage type. +func NewRouteFilterRuleListResultPage(getNextPage func(context.Context, RouteFilterRuleListResult) (RouteFilterRuleListResult, error)) RouteFilterRuleListResultPage { + return RouteFilterRuleListResultPage{fn: getNextPage} +} + +// RouteFilterRulePropertiesFormat route Filter Rule Resource. +type RouteFilterRulePropertiesFormat struct { + // Access - The access type of the rule. Possible values include: 'Allow', 'Deny' + Access Access `json:"access,omitempty"` + // RouteFilterRuleType - The rule type of the rule. + RouteFilterRuleType *string `json:"routeFilterRuleType,omitempty"` + // Communities - The collection for bgp community values to filter on. e.g. ['12076:5010','12076:5020']. + Communities *[]string `json:"communities,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the route filter rule resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// RouteFilterRulesCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type RouteFilterRulesCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *RouteFilterRulesCreateOrUpdateFuture) Result(client RouteFilterRulesClient) (rfr RouteFilterRule, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFilterRulesCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.RouteFilterRulesCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if rfr.Response.Response, err = future.GetResult(sender); err == nil && rfr.Response.Response.StatusCode != http.StatusNoContent { + rfr, err = client.CreateOrUpdateResponder(rfr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFilterRulesCreateOrUpdateFuture", "Result", rfr.Response.Response, "Failure responding to request") + } + } + return +} + +// RouteFilterRulesDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type RouteFilterRulesDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *RouteFilterRulesDeleteFuture) Result(client RouteFilterRulesClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFilterRulesDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.RouteFilterRulesDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// RouteFiltersCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type RouteFiltersCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *RouteFiltersCreateOrUpdateFuture) Result(client RouteFiltersClient) (rf RouteFilter, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFiltersCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.RouteFiltersCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if rf.Response.Response, err = future.GetResult(sender); err == nil && rf.Response.Response.StatusCode != http.StatusNoContent { + rf, err = client.CreateOrUpdateResponder(rf.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFiltersCreateOrUpdateFuture", "Result", rf.Response.Response, "Failure responding to request") + } + } + return +} + +// RouteFiltersDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type RouteFiltersDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *RouteFiltersDeleteFuture) Result(client RouteFiltersClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFiltersDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.RouteFiltersDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// RouteListResult response for the ListRoute API service call. +type RouteListResult struct { + autorest.Response `json:"-"` + // Value - A list of routes in a resource group. + Value *[]Route `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// RouteListResultIterator provides access to a complete listing of Route values. +type RouteListResultIterator struct { + i int + page RouteListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *RouteListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *RouteListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter RouteListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter RouteListResultIterator) Response() RouteListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter RouteListResultIterator) Value() Route { + if !iter.page.NotDone() { + return Route{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the RouteListResultIterator type. +func NewRouteListResultIterator(page RouteListResultPage) RouteListResultIterator { + return RouteListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (rlr RouteListResult) IsEmpty() bool { + return rlr.Value == nil || len(*rlr.Value) == 0 +} + +// routeListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (rlr RouteListResult) routeListResultPreparer(ctx context.Context) (*http.Request, error) { + if rlr.NextLink == nil || len(to.String(rlr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(rlr.NextLink))) +} + +// RouteListResultPage contains a page of Route values. +type RouteListResultPage struct { + fn func(context.Context, RouteListResult) (RouteListResult, error) + rlr RouteListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *RouteListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.rlr) + if err != nil { + return err + } + page.rlr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *RouteListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page RouteListResultPage) NotDone() bool { + return !page.rlr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page RouteListResultPage) Response() RouteListResult { + return page.rlr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page RouteListResultPage) Values() []Route { + if page.rlr.IsEmpty() { + return nil + } + return *page.rlr.Value +} + +// Creates a new instance of the RouteListResultPage type. +func NewRouteListResultPage(getNextPage func(context.Context, RouteListResult) (RouteListResult, error)) RouteListResultPage { + return RouteListResultPage{fn: getNextPage} +} + +// RoutePropertiesFormat route resource. +type RoutePropertiesFormat struct { + // AddressPrefix - The destination CIDR to which the route applies. + AddressPrefix *string `json:"addressPrefix,omitempty"` + // NextHopType - The type of Azure hop the packet should be sent to. Possible values include: 'RouteNextHopTypeVirtualNetworkGateway', 'RouteNextHopTypeVnetLocal', 'RouteNextHopTypeInternet', 'RouteNextHopTypeVirtualAppliance', 'RouteNextHopTypeNone' + NextHopType RouteNextHopType `json:"nextHopType,omitempty"` + // NextHopIPAddress - The IP address packets should be forwarded to. Next hop values are only allowed in routes where the next hop type is VirtualAppliance. + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the route resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// RoutesCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type RoutesCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *RoutesCreateOrUpdateFuture) Result(client RoutesClient) (r Route, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RoutesCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.RoutesCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if r.Response.Response, err = future.GetResult(sender); err == nil && r.Response.Response.StatusCode != http.StatusNoContent { + r, err = client.CreateOrUpdateResponder(r.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RoutesCreateOrUpdateFuture", "Result", r.Response.Response, "Failure responding to request") + } + } + return +} + +// RoutesDeleteFuture an abstraction for monitoring and retrieving the results of a long-running operation. +type RoutesDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *RoutesDeleteFuture) Result(client RoutesClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RoutesDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.RoutesDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// RouteTable route table resource. +type RouteTable struct { + autorest.Response `json:"-"` + // RouteTablePropertiesFormat - Properties of the route table. + *RouteTablePropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for RouteTable. +func (rt RouteTable) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if rt.RouteTablePropertiesFormat != nil { + objectMap["properties"] = rt.RouteTablePropertiesFormat + } + if rt.ID != nil { + objectMap["id"] = rt.ID + } + if rt.Location != nil { + objectMap["location"] = rt.Location + } + if rt.Tags != nil { + objectMap["tags"] = rt.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for RouteTable struct. +func (rt *RouteTable) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var routeTablePropertiesFormat RouteTablePropertiesFormat + err = json.Unmarshal(*v, &routeTablePropertiesFormat) + if err != nil { + return err + } + rt.RouteTablePropertiesFormat = &routeTablePropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + rt.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + rt.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + rt.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + rt.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + rt.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + rt.Tags = tags + } + } + } + + return nil +} + +// RouteTableListResult response for the ListRouteTable API service call. +type RouteTableListResult struct { + autorest.Response `json:"-"` + // Value - A list of route tables in a resource group. + Value *[]RouteTable `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// RouteTableListResultIterator provides access to a complete listing of RouteTable values. +type RouteTableListResultIterator struct { + i int + page RouteTableListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *RouteTableListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteTableListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *RouteTableListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter RouteTableListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter RouteTableListResultIterator) Response() RouteTableListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter RouteTableListResultIterator) Value() RouteTable { + if !iter.page.NotDone() { + return RouteTable{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the RouteTableListResultIterator type. +func NewRouteTableListResultIterator(page RouteTableListResultPage) RouteTableListResultIterator { + return RouteTableListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (rtlr RouteTableListResult) IsEmpty() bool { + return rtlr.Value == nil || len(*rtlr.Value) == 0 +} + +// routeTableListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (rtlr RouteTableListResult) routeTableListResultPreparer(ctx context.Context) (*http.Request, error) { + if rtlr.NextLink == nil || len(to.String(rtlr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(rtlr.NextLink))) +} + +// RouteTableListResultPage contains a page of RouteTable values. +type RouteTableListResultPage struct { + fn func(context.Context, RouteTableListResult) (RouteTableListResult, error) + rtlr RouteTableListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *RouteTableListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteTableListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.rtlr) + if err != nil { + return err + } + page.rtlr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *RouteTableListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page RouteTableListResultPage) NotDone() bool { + return !page.rtlr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page RouteTableListResultPage) Response() RouteTableListResult { + return page.rtlr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page RouteTableListResultPage) Values() []RouteTable { + if page.rtlr.IsEmpty() { + return nil + } + return *page.rtlr.Value +} + +// Creates a new instance of the RouteTableListResultPage type. +func NewRouteTableListResultPage(getNextPage func(context.Context, RouteTableListResult) (RouteTableListResult, error)) RouteTableListResultPage { + return RouteTableListResultPage{fn: getNextPage} +} + +// RouteTablePropertiesFormat route Table resource. +type RouteTablePropertiesFormat struct { + // Routes - Collection of routes contained within a route table. + Routes *[]Route `json:"routes,omitempty"` + // Subnets - READ-ONLY; A collection of references to subnets. + Subnets *[]Subnet `json:"subnets,omitempty"` + // DisableBgpRoutePropagation - Whether to disable the routes learned by BGP on that route table. True means disable. + DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the route table resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// RouteTablesCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type RouteTablesCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *RouteTablesCreateOrUpdateFuture) Result(client RouteTablesClient) (rt RouteTable, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteTablesCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.RouteTablesCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if rt.Response.Response, err = future.GetResult(sender); err == nil && rt.Response.Response.StatusCode != http.StatusNoContent { + rt, err = client.CreateOrUpdateResponder(rt.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteTablesCreateOrUpdateFuture", "Result", rt.Response.Response, "Failure responding to request") + } + } + return +} + +// RouteTablesDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type RouteTablesDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *RouteTablesDeleteFuture) Result(client RouteTablesClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteTablesDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.RouteTablesDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// RuleCondition rule condition of type network. +type RuleCondition struct { + // IPProtocols - Array of FirewallPolicyRuleConditionNetworkProtocols. + IPProtocols *[]FirewallPolicyRuleConditionNetworkProtocol `json:"ipProtocols,omitempty"` + // SourceAddresses - List of source IP addresses for this rule. + SourceAddresses *[]string `json:"sourceAddresses,omitempty"` + // DestinationAddresses - List of destination IP addresses or Service Tags. + DestinationAddresses *[]string `json:"destinationAddresses,omitempty"` + // DestinationPorts - List of destination ports. + DestinationPorts *[]string `json:"destinationPorts,omitempty"` + // Name - Name of the rule condition. + Name *string `json:"name,omitempty"` + // Description - Description of the rule condition. + Description *string `json:"description,omitempty"` + // RuleConditionType - Possible values include: 'RuleConditionTypeFirewallPolicyRuleCondition', 'RuleConditionTypeApplicationRuleCondition', 'RuleConditionTypeNetworkRuleCondition' + RuleConditionType RuleConditionType `json:"ruleConditionType,omitempty"` +} + +// MarshalJSON is the custom marshaler for RuleCondition. +func (rc RuleCondition) MarshalJSON() ([]byte, error) { + rc.RuleConditionType = RuleConditionTypeNetworkRuleCondition + objectMap := make(map[string]interface{}) + if rc.IPProtocols != nil { + objectMap["ipProtocols"] = rc.IPProtocols + } + if rc.SourceAddresses != nil { + objectMap["sourceAddresses"] = rc.SourceAddresses + } + if rc.DestinationAddresses != nil { + objectMap["destinationAddresses"] = rc.DestinationAddresses + } + if rc.DestinationPorts != nil { + objectMap["destinationPorts"] = rc.DestinationPorts + } + if rc.Name != nil { + objectMap["name"] = rc.Name + } + if rc.Description != nil { + objectMap["description"] = rc.Description + } + if rc.RuleConditionType != "" { + objectMap["ruleConditionType"] = rc.RuleConditionType + } + return json.Marshal(objectMap) +} + +// AsApplicationRuleCondition is the BasicFirewallPolicyRuleCondition implementation for RuleCondition. +func (rc RuleCondition) AsApplicationRuleCondition() (*ApplicationRuleCondition, bool) { + return nil, false +} + +// AsRuleCondition is the BasicFirewallPolicyRuleCondition implementation for RuleCondition. +func (rc RuleCondition) AsRuleCondition() (*RuleCondition, bool) { + return &rc, true +} + +// AsFirewallPolicyRuleCondition is the BasicFirewallPolicyRuleCondition implementation for RuleCondition. +func (rc RuleCondition) AsFirewallPolicyRuleCondition() (*FirewallPolicyRuleCondition, bool) { + return nil, false +} + +// AsBasicFirewallPolicyRuleCondition is the BasicFirewallPolicyRuleCondition implementation for RuleCondition. +func (rc RuleCondition) AsBasicFirewallPolicyRuleCondition() (BasicFirewallPolicyRuleCondition, bool) { + return &rc, true +} + +// SecurityGroup networkSecurityGroup resource. +type SecurityGroup struct { + autorest.Response `json:"-"` + // SecurityGroupPropertiesFormat - Properties of the network security group. + *SecurityGroupPropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for SecurityGroup. +func (sg SecurityGroup) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if sg.SecurityGroupPropertiesFormat != nil { + objectMap["properties"] = sg.SecurityGroupPropertiesFormat + } + if sg.ID != nil { + objectMap["id"] = sg.ID + } + if sg.Location != nil { + objectMap["location"] = sg.Location + } + if sg.Tags != nil { + objectMap["tags"] = sg.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for SecurityGroup struct. +func (sg *SecurityGroup) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var securityGroupPropertiesFormat SecurityGroupPropertiesFormat + err = json.Unmarshal(*v, &securityGroupPropertiesFormat) + if err != nil { + return err + } + sg.SecurityGroupPropertiesFormat = &securityGroupPropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + sg.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + sg.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + sg.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + sg.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + sg.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + sg.Tags = tags + } + } + } + + return nil +} + +// SecurityGroupListResult response for ListNetworkSecurityGroups API service call. +type SecurityGroupListResult struct { + autorest.Response `json:"-"` + // Value - A list of NetworkSecurityGroup resources. + Value *[]SecurityGroup `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// SecurityGroupListResultIterator provides access to a complete listing of SecurityGroup values. +type SecurityGroupListResultIterator struct { + i int + page SecurityGroupListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *SecurityGroupListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SecurityGroupListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *SecurityGroupListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter SecurityGroupListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter SecurityGroupListResultIterator) Response() SecurityGroupListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter SecurityGroupListResultIterator) Value() SecurityGroup { + if !iter.page.NotDone() { + return SecurityGroup{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the SecurityGroupListResultIterator type. +func NewSecurityGroupListResultIterator(page SecurityGroupListResultPage) SecurityGroupListResultIterator { + return SecurityGroupListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (sglr SecurityGroupListResult) IsEmpty() bool { + return sglr.Value == nil || len(*sglr.Value) == 0 +} + +// securityGroupListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (sglr SecurityGroupListResult) securityGroupListResultPreparer(ctx context.Context) (*http.Request, error) { + if sglr.NextLink == nil || len(to.String(sglr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(sglr.NextLink))) +} + +// SecurityGroupListResultPage contains a page of SecurityGroup values. +type SecurityGroupListResultPage struct { + fn func(context.Context, SecurityGroupListResult) (SecurityGroupListResult, error) + sglr SecurityGroupListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *SecurityGroupListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SecurityGroupListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.sglr) + if err != nil { + return err + } + page.sglr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *SecurityGroupListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page SecurityGroupListResultPage) NotDone() bool { + return !page.sglr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page SecurityGroupListResultPage) Response() SecurityGroupListResult { + return page.sglr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page SecurityGroupListResultPage) Values() []SecurityGroup { + if page.sglr.IsEmpty() { + return nil + } + return *page.sglr.Value +} + +// Creates a new instance of the SecurityGroupListResultPage type. +func NewSecurityGroupListResultPage(getNextPage func(context.Context, SecurityGroupListResult) (SecurityGroupListResult, error)) SecurityGroupListResultPage { + return SecurityGroupListResultPage{fn: getNextPage} +} + +// SecurityGroupNetworkInterface network interface and all its associated security rules. +type SecurityGroupNetworkInterface struct { + // ID - ID of the network interface. + ID *string `json:"id,omitempty"` + // SecurityRuleAssociations - All security rules associated with the network interface. + SecurityRuleAssociations *SecurityRuleAssociations `json:"securityRuleAssociations,omitempty"` +} + +// SecurityGroupPropertiesFormat network Security Group resource. +type SecurityGroupPropertiesFormat struct { + // SecurityRules - A collection of security rules of the network security group. + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` + // DefaultSecurityRules - READ-ONLY; The default security rules of network security group. + DefaultSecurityRules *[]SecurityRule `json:"defaultSecurityRules,omitempty"` + // NetworkInterfaces - READ-ONLY; A collection of references to network interfaces. + NetworkInterfaces *[]Interface `json:"networkInterfaces,omitempty"` + // Subnets - READ-ONLY; A collection of references to subnets. + Subnets *[]Subnet `json:"subnets,omitempty"` + // ResourceGUID - READ-ONLY; The resource GUID property of the network security group resource. + ResourceGUID *string `json:"resourceGuid,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the network security group resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// SecurityGroupResult network configuration diagnostic result corresponded provided traffic query. +type SecurityGroupResult struct { + // SecurityRuleAccessResult - The network traffic is allowed or denied. Possible values include: 'SecurityRuleAccessAllow', 'SecurityRuleAccessDeny' + SecurityRuleAccessResult SecurityRuleAccess `json:"securityRuleAccessResult,omitempty"` + // EvaluatedNetworkSecurityGroups - READ-ONLY; List of results network security groups diagnostic. + EvaluatedNetworkSecurityGroups *[]EvaluatedNetworkSecurityGroup `json:"evaluatedNetworkSecurityGroups,omitempty"` +} + +// SecurityGroupsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type SecurityGroupsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *SecurityGroupsCreateOrUpdateFuture) Result(client SecurityGroupsClient) (sg SecurityGroup, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityGroupsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.SecurityGroupsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if sg.Response.Response, err = future.GetResult(sender); err == nil && sg.Response.Response.StatusCode != http.StatusNoContent { + sg, err = client.CreateOrUpdateResponder(sg.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityGroupsCreateOrUpdateFuture", "Result", sg.Response.Response, "Failure responding to request") + } + } + return +} + +// SecurityGroupsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type SecurityGroupsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *SecurityGroupsDeleteFuture) Result(client SecurityGroupsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityGroupsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.SecurityGroupsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// SecurityGroupViewParameters parameters that define the VM to check security groups for. +type SecurityGroupViewParameters struct { + // TargetResourceID - ID of the target VM. + TargetResourceID *string `json:"targetResourceId,omitempty"` +} + +// SecurityGroupViewResult the information about security rules applied to the specified VM. +type SecurityGroupViewResult struct { + autorest.Response `json:"-"` + // NetworkInterfaces - List of network interfaces on the specified VM. + NetworkInterfaces *[]SecurityGroupNetworkInterface `json:"networkInterfaces,omitempty"` +} + +// SecurityRule network security rule. +type SecurityRule struct { + autorest.Response `json:"-"` + // SecurityRulePropertiesFormat - Properties of the security rule. + *SecurityRulePropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for SecurityRule. +func (sr SecurityRule) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if sr.SecurityRulePropertiesFormat != nil { + objectMap["properties"] = sr.SecurityRulePropertiesFormat + } + if sr.Name != nil { + objectMap["name"] = sr.Name + } + if sr.ID != nil { + objectMap["id"] = sr.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for SecurityRule struct. +func (sr *SecurityRule) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var securityRulePropertiesFormat SecurityRulePropertiesFormat + err = json.Unmarshal(*v, &securityRulePropertiesFormat) + if err != nil { + return err + } + sr.SecurityRulePropertiesFormat = &securityRulePropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + sr.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + sr.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + sr.ID = &ID + } + } + } + + return nil +} + +// SecurityRuleAssociations all security rules associated with the network interface. +type SecurityRuleAssociations struct { + // NetworkInterfaceAssociation - Network interface and it's custom security rules. + NetworkInterfaceAssociation *InterfaceAssociation `json:"networkInterfaceAssociation,omitempty"` + // SubnetAssociation - Subnet and it's custom security rules. + SubnetAssociation *SubnetAssociation `json:"subnetAssociation,omitempty"` + // DefaultSecurityRules - Collection of default security rules of the network security group. + DefaultSecurityRules *[]SecurityRule `json:"defaultSecurityRules,omitempty"` + // EffectiveSecurityRules - Collection of effective security rules. + EffectiveSecurityRules *[]EffectiveNetworkSecurityRule `json:"effectiveSecurityRules,omitempty"` +} + +// SecurityRuleListResult response for ListSecurityRule API service call. Retrieves all security rules that +// belongs to a network security group. +type SecurityRuleListResult struct { + autorest.Response `json:"-"` + // Value - The security rules in a network security group. + Value *[]SecurityRule `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// SecurityRuleListResultIterator provides access to a complete listing of SecurityRule values. +type SecurityRuleListResultIterator struct { + i int + page SecurityRuleListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *SecurityRuleListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SecurityRuleListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *SecurityRuleListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter SecurityRuleListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter SecurityRuleListResultIterator) Response() SecurityRuleListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter SecurityRuleListResultIterator) Value() SecurityRule { + if !iter.page.NotDone() { + return SecurityRule{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the SecurityRuleListResultIterator type. +func NewSecurityRuleListResultIterator(page SecurityRuleListResultPage) SecurityRuleListResultIterator { + return SecurityRuleListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (srlr SecurityRuleListResult) IsEmpty() bool { + return srlr.Value == nil || len(*srlr.Value) == 0 +} + +// securityRuleListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (srlr SecurityRuleListResult) securityRuleListResultPreparer(ctx context.Context) (*http.Request, error) { + if srlr.NextLink == nil || len(to.String(srlr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(srlr.NextLink))) +} + +// SecurityRuleListResultPage contains a page of SecurityRule values. +type SecurityRuleListResultPage struct { + fn func(context.Context, SecurityRuleListResult) (SecurityRuleListResult, error) + srlr SecurityRuleListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *SecurityRuleListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SecurityRuleListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.srlr) + if err != nil { + return err + } + page.srlr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *SecurityRuleListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page SecurityRuleListResultPage) NotDone() bool { + return !page.srlr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page SecurityRuleListResultPage) Response() SecurityRuleListResult { + return page.srlr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page SecurityRuleListResultPage) Values() []SecurityRule { + if page.srlr.IsEmpty() { + return nil + } + return *page.srlr.Value +} + +// Creates a new instance of the SecurityRuleListResultPage type. +func NewSecurityRuleListResultPage(getNextPage func(context.Context, SecurityRuleListResult) (SecurityRuleListResult, error)) SecurityRuleListResultPage { + return SecurityRuleListResultPage{fn: getNextPage} +} + +// SecurityRulePropertiesFormat security rule resource. +type SecurityRulePropertiesFormat struct { + // Description - A description for this rule. Restricted to 140 chars. + Description *string `json:"description,omitempty"` + // Protocol - Network protocol this rule applies to. Possible values include: 'SecurityRuleProtocolTCP', 'SecurityRuleProtocolUDP', 'SecurityRuleProtocolIcmp', 'SecurityRuleProtocolEsp', 'SecurityRuleProtocolAsterisk', 'SecurityRuleProtocolAh' + Protocol SecurityRuleProtocol `json:"protocol,omitempty"` + // SourcePortRange - The source port or range. Integer or range between 0 and 65535. Asterisk '*' can also be used to match all ports. + SourcePortRange *string `json:"sourcePortRange,omitempty"` + // DestinationPortRange - The destination port or range. Integer or range between 0 and 65535. Asterisk '*' can also be used to match all ports. + DestinationPortRange *string `json:"destinationPortRange,omitempty"` + // SourceAddressPrefix - The CIDR or source IP range. Asterisk '*' can also be used to match all source IPs. Default tags such as 'VirtualNetwork', 'AzureLoadBalancer' and 'Internet' can also be used. If this is an ingress rule, specifies where network traffic originates from. + SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` + // SourceAddressPrefixes - The CIDR or source IP ranges. + SourceAddressPrefixes *[]string `json:"sourceAddressPrefixes,omitempty"` + // SourceApplicationSecurityGroups - The application security group specified as source. + SourceApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"sourceApplicationSecurityGroups,omitempty"` + // DestinationAddressPrefix - The destination address prefix. CIDR or destination IP range. Asterisk '*' can also be used to match all source IPs. Default tags such as 'VirtualNetwork', 'AzureLoadBalancer' and 'Internet' can also be used. + DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` + // DestinationAddressPrefixes - The destination address prefixes. CIDR or destination IP ranges. + DestinationAddressPrefixes *[]string `json:"destinationAddressPrefixes,omitempty"` + // DestinationApplicationSecurityGroups - The application security group specified as destination. + DestinationApplicationSecurityGroups *[]ApplicationSecurityGroup `json:"destinationApplicationSecurityGroups,omitempty"` + // SourcePortRanges - The source port ranges. + SourcePortRanges *[]string `json:"sourcePortRanges,omitempty"` + // DestinationPortRanges - The destination port ranges. + DestinationPortRanges *[]string `json:"destinationPortRanges,omitempty"` + // Access - The network traffic is allowed or denied. Possible values include: 'SecurityRuleAccessAllow', 'SecurityRuleAccessDeny' + Access SecurityRuleAccess `json:"access,omitempty"` + // Priority - The priority of the rule. The value can be between 100 and 4096. The priority number must be unique for each rule in the collection. The lower the priority number, the higher the priority of the rule. + Priority *int32 `json:"priority,omitempty"` + // Direction - The direction of the rule. The direction specifies if rule will be evaluated on incoming or outgoing traffic. Possible values include: 'SecurityRuleDirectionInbound', 'SecurityRuleDirectionOutbound' + Direction SecurityRuleDirection `json:"direction,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the security rule resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// SecurityRulesCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type SecurityRulesCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *SecurityRulesCreateOrUpdateFuture) Result(client SecurityRulesClient) (sr SecurityRule, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityRulesCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.SecurityRulesCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if sr.Response.Response, err = future.GetResult(sender); err == nil && sr.Response.Response.StatusCode != http.StatusNoContent { + sr, err = client.CreateOrUpdateResponder(sr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityRulesCreateOrUpdateFuture", "Result", sr.Response.Response, "Failure responding to request") + } + } + return +} + +// SecurityRulesDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type SecurityRulesDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *SecurityRulesDeleteFuture) Result(client SecurityRulesClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityRulesDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.SecurityRulesDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// SecurityRulesEvaluationResult network security rules evaluation result. +type SecurityRulesEvaluationResult struct { + // Name - Name of the network security rule. + Name *string `json:"name,omitempty"` + // ProtocolMatched - Value indicating whether protocol is matched. + ProtocolMatched *bool `json:"protocolMatched,omitempty"` + // SourceMatched - Value indicating whether source is matched. + SourceMatched *bool `json:"sourceMatched,omitempty"` + // SourcePortMatched - Value indicating whether source port is matched. + SourcePortMatched *bool `json:"sourcePortMatched,omitempty"` + // DestinationMatched - Value indicating whether destination is matched. + DestinationMatched *bool `json:"destinationMatched,omitempty"` + // DestinationPortMatched - Value indicating whether destination port is matched. + DestinationPortMatched *bool `json:"destinationPortMatched,omitempty"` +} + +// ServiceAssociationLink serviceAssociationLink resource. +type ServiceAssociationLink struct { + // ServiceAssociationLinkPropertiesFormat - Resource navigation link properties format. + *ServiceAssociationLinkPropertiesFormat `json:"properties,omitempty"` + // Name - Name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ServiceAssociationLink. +func (sal ServiceAssociationLink) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if sal.ServiceAssociationLinkPropertiesFormat != nil { + objectMap["properties"] = sal.ServiceAssociationLinkPropertiesFormat + } + if sal.Name != nil { + objectMap["name"] = sal.Name + } + if sal.ID != nil { + objectMap["id"] = sal.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ServiceAssociationLink struct. +func (sal *ServiceAssociationLink) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var serviceAssociationLinkPropertiesFormat ServiceAssociationLinkPropertiesFormat + err = json.Unmarshal(*v, &serviceAssociationLinkPropertiesFormat) + if err != nil { + return err + } + sal.ServiceAssociationLinkPropertiesFormat = &serviceAssociationLinkPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + sal.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + sal.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + sal.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + sal.ID = &ID + } + } + } + + return nil +} + +// ServiceAssociationLinkPropertiesFormat properties of ServiceAssociationLink. +type ServiceAssociationLinkPropertiesFormat struct { + // LinkedResourceType - Resource type of the linked resource. + LinkedResourceType *string `json:"linkedResourceType,omitempty"` + // Link - Link to the external resource. + Link *string `json:"link,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the service association link resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // AllowDelete - If true, the resource can be deleted. + AllowDelete *bool `json:"allowDelete,omitempty"` + // Locations - A list of locations. + Locations *[]string `json:"locations,omitempty"` +} + +// ServiceAssociationLinksListResult response for ServiceAssociationLinks_List operation. +type ServiceAssociationLinksListResult struct { + autorest.Response `json:"-"` + // Value - The service association links in a subnet. + Value *[]ServiceAssociationLink `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// ServiceDelegationPropertiesFormat properties of a service delegation. +type ServiceDelegationPropertiesFormat struct { + // ServiceName - The name of the service to whom the subnet should be delegated (e.g. Microsoft.Sql/servers). + ServiceName *string `json:"serviceName,omitempty"` + // Actions - READ-ONLY; Describes the actions permitted to the service upon delegation. + Actions *[]string `json:"actions,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the service delegation resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// ServiceEndpointPoliciesCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of +// a long-running operation. +type ServiceEndpointPoliciesCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ServiceEndpointPoliciesCreateOrUpdateFuture) Result(client ServiceEndpointPoliciesClient) (sep ServiceEndpointPolicy, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPoliciesCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ServiceEndpointPoliciesCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if sep.Response.Response, err = future.GetResult(sender); err == nil && sep.Response.Response.StatusCode != http.StatusNoContent { + sep, err = client.CreateOrUpdateResponder(sep.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPoliciesCreateOrUpdateFuture", "Result", sep.Response.Response, "Failure responding to request") + } + } + return +} + +// ServiceEndpointPoliciesDeleteFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type ServiceEndpointPoliciesDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ServiceEndpointPoliciesDeleteFuture) Result(client ServiceEndpointPoliciesClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPoliciesDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ServiceEndpointPoliciesDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// ServiceEndpointPolicy service End point policy resource. +type ServiceEndpointPolicy struct { + autorest.Response `json:"-"` + // ServiceEndpointPolicyPropertiesFormat - Properties of the service end point policy. + *ServiceEndpointPolicyPropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for ServiceEndpointPolicy. +func (sep ServiceEndpointPolicy) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if sep.ServiceEndpointPolicyPropertiesFormat != nil { + objectMap["properties"] = sep.ServiceEndpointPolicyPropertiesFormat + } + if sep.ID != nil { + objectMap["id"] = sep.ID + } + if sep.Location != nil { + objectMap["location"] = sep.Location + } + if sep.Tags != nil { + objectMap["tags"] = sep.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ServiceEndpointPolicy struct. +func (sep *ServiceEndpointPolicy) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var serviceEndpointPolicyPropertiesFormat ServiceEndpointPolicyPropertiesFormat + err = json.Unmarshal(*v, &serviceEndpointPolicyPropertiesFormat) + if err != nil { + return err + } + sep.ServiceEndpointPolicyPropertiesFormat = &serviceEndpointPolicyPropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + sep.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + sep.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + sep.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + sep.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + sep.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + sep.Tags = tags + } + } + } + + return nil +} + +// ServiceEndpointPolicyDefinition service Endpoint policy definitions. +type ServiceEndpointPolicyDefinition struct { + autorest.Response `json:"-"` + // ServiceEndpointPolicyDefinitionPropertiesFormat - Properties of the service endpoint policy definition. + *ServiceEndpointPolicyDefinitionPropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for ServiceEndpointPolicyDefinition. +func (sepd ServiceEndpointPolicyDefinition) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if sepd.ServiceEndpointPolicyDefinitionPropertiesFormat != nil { + objectMap["properties"] = sepd.ServiceEndpointPolicyDefinitionPropertiesFormat + } + if sepd.Name != nil { + objectMap["name"] = sepd.Name + } + if sepd.ID != nil { + objectMap["id"] = sepd.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ServiceEndpointPolicyDefinition struct. +func (sepd *ServiceEndpointPolicyDefinition) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var serviceEndpointPolicyDefinitionPropertiesFormat ServiceEndpointPolicyDefinitionPropertiesFormat + err = json.Unmarshal(*v, &serviceEndpointPolicyDefinitionPropertiesFormat) + if err != nil { + return err + } + sepd.ServiceEndpointPolicyDefinitionPropertiesFormat = &serviceEndpointPolicyDefinitionPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + sepd.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + sepd.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + sepd.ID = &ID + } + } + } + + return nil +} + +// ServiceEndpointPolicyDefinitionListResult response for ListServiceEndpointPolicyDefinition API service +// call. Retrieves all service endpoint policy definition that belongs to a service endpoint policy. +type ServiceEndpointPolicyDefinitionListResult struct { + autorest.Response `json:"-"` + // Value - The service endpoint policy definition in a service endpoint policy. + Value *[]ServiceEndpointPolicyDefinition `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// ServiceEndpointPolicyDefinitionListResultIterator provides access to a complete listing of +// ServiceEndpointPolicyDefinition values. +type ServiceEndpointPolicyDefinitionListResultIterator struct { + i int + page ServiceEndpointPolicyDefinitionListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ServiceEndpointPolicyDefinitionListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ServiceEndpointPolicyDefinitionListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ServiceEndpointPolicyDefinitionListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ServiceEndpointPolicyDefinitionListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ServiceEndpointPolicyDefinitionListResultIterator) Response() ServiceEndpointPolicyDefinitionListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ServiceEndpointPolicyDefinitionListResultIterator) Value() ServiceEndpointPolicyDefinition { + if !iter.page.NotDone() { + return ServiceEndpointPolicyDefinition{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ServiceEndpointPolicyDefinitionListResultIterator type. +func NewServiceEndpointPolicyDefinitionListResultIterator(page ServiceEndpointPolicyDefinitionListResultPage) ServiceEndpointPolicyDefinitionListResultIterator { + return ServiceEndpointPolicyDefinitionListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (sepdlr ServiceEndpointPolicyDefinitionListResult) IsEmpty() bool { + return sepdlr.Value == nil || len(*sepdlr.Value) == 0 +} + +// serviceEndpointPolicyDefinitionListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (sepdlr ServiceEndpointPolicyDefinitionListResult) serviceEndpointPolicyDefinitionListResultPreparer(ctx context.Context) (*http.Request, error) { + if sepdlr.NextLink == nil || len(to.String(sepdlr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(sepdlr.NextLink))) +} + +// ServiceEndpointPolicyDefinitionListResultPage contains a page of ServiceEndpointPolicyDefinition values. +type ServiceEndpointPolicyDefinitionListResultPage struct { + fn func(context.Context, ServiceEndpointPolicyDefinitionListResult) (ServiceEndpointPolicyDefinitionListResult, error) + sepdlr ServiceEndpointPolicyDefinitionListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ServiceEndpointPolicyDefinitionListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ServiceEndpointPolicyDefinitionListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.sepdlr) + if err != nil { + return err + } + page.sepdlr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ServiceEndpointPolicyDefinitionListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ServiceEndpointPolicyDefinitionListResultPage) NotDone() bool { + return !page.sepdlr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ServiceEndpointPolicyDefinitionListResultPage) Response() ServiceEndpointPolicyDefinitionListResult { + return page.sepdlr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ServiceEndpointPolicyDefinitionListResultPage) Values() []ServiceEndpointPolicyDefinition { + if page.sepdlr.IsEmpty() { + return nil + } + return *page.sepdlr.Value +} + +// Creates a new instance of the ServiceEndpointPolicyDefinitionListResultPage type. +func NewServiceEndpointPolicyDefinitionListResultPage(getNextPage func(context.Context, ServiceEndpointPolicyDefinitionListResult) (ServiceEndpointPolicyDefinitionListResult, error)) ServiceEndpointPolicyDefinitionListResultPage { + return ServiceEndpointPolicyDefinitionListResultPage{fn: getNextPage} +} + +// ServiceEndpointPolicyDefinitionPropertiesFormat service Endpoint policy definition resource. +type ServiceEndpointPolicyDefinitionPropertiesFormat struct { + // Description - A description for this rule. Restricted to 140 chars. + Description *string `json:"description,omitempty"` + // Service - Service endpoint name. + Service *string `json:"service,omitempty"` + // ServiceResources - A list of service resources. + ServiceResources *[]string `json:"serviceResources,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the service endpoint policy definition resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// ServiceEndpointPolicyDefinitionsCreateOrUpdateFuture an abstraction for monitoring and retrieving the +// results of a long-running operation. +type ServiceEndpointPolicyDefinitionsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ServiceEndpointPolicyDefinitionsCreateOrUpdateFuture) Result(client ServiceEndpointPolicyDefinitionsClient) (sepd ServiceEndpointPolicyDefinition, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPolicyDefinitionsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ServiceEndpointPolicyDefinitionsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if sepd.Response.Response, err = future.GetResult(sender); err == nil && sepd.Response.Response.StatusCode != http.StatusNoContent { + sepd, err = client.CreateOrUpdateResponder(sepd.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPolicyDefinitionsCreateOrUpdateFuture", "Result", sepd.Response.Response, "Failure responding to request") + } + } + return +} + +// ServiceEndpointPolicyDefinitionsDeleteFuture an abstraction for monitoring and retrieving the results of +// a long-running operation. +type ServiceEndpointPolicyDefinitionsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ServiceEndpointPolicyDefinitionsDeleteFuture) Result(client ServiceEndpointPolicyDefinitionsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPolicyDefinitionsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.ServiceEndpointPolicyDefinitionsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// ServiceEndpointPolicyListResult response for ListServiceEndpointPolicies API service call. +type ServiceEndpointPolicyListResult struct { + autorest.Response `json:"-"` + // Value - A list of ServiceEndpointPolicy resources. + Value *[]ServiceEndpointPolicy `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// ServiceEndpointPolicyListResultIterator provides access to a complete listing of ServiceEndpointPolicy +// values. +type ServiceEndpointPolicyListResultIterator struct { + i int + page ServiceEndpointPolicyListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ServiceEndpointPolicyListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ServiceEndpointPolicyListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ServiceEndpointPolicyListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ServiceEndpointPolicyListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ServiceEndpointPolicyListResultIterator) Response() ServiceEndpointPolicyListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ServiceEndpointPolicyListResultIterator) Value() ServiceEndpointPolicy { + if !iter.page.NotDone() { + return ServiceEndpointPolicy{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ServiceEndpointPolicyListResultIterator type. +func NewServiceEndpointPolicyListResultIterator(page ServiceEndpointPolicyListResultPage) ServiceEndpointPolicyListResultIterator { + return ServiceEndpointPolicyListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (seplr ServiceEndpointPolicyListResult) IsEmpty() bool { + return seplr.Value == nil || len(*seplr.Value) == 0 +} + +// serviceEndpointPolicyListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (seplr ServiceEndpointPolicyListResult) serviceEndpointPolicyListResultPreparer(ctx context.Context) (*http.Request, error) { + if seplr.NextLink == nil || len(to.String(seplr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(seplr.NextLink))) +} + +// ServiceEndpointPolicyListResultPage contains a page of ServiceEndpointPolicy values. +type ServiceEndpointPolicyListResultPage struct { + fn func(context.Context, ServiceEndpointPolicyListResult) (ServiceEndpointPolicyListResult, error) + seplr ServiceEndpointPolicyListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ServiceEndpointPolicyListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ServiceEndpointPolicyListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.seplr) + if err != nil { + return err + } + page.seplr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ServiceEndpointPolicyListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ServiceEndpointPolicyListResultPage) NotDone() bool { + return !page.seplr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ServiceEndpointPolicyListResultPage) Response() ServiceEndpointPolicyListResult { + return page.seplr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ServiceEndpointPolicyListResultPage) Values() []ServiceEndpointPolicy { + if page.seplr.IsEmpty() { + return nil + } + return *page.seplr.Value +} + +// Creates a new instance of the ServiceEndpointPolicyListResultPage type. +func NewServiceEndpointPolicyListResultPage(getNextPage func(context.Context, ServiceEndpointPolicyListResult) (ServiceEndpointPolicyListResult, error)) ServiceEndpointPolicyListResultPage { + return ServiceEndpointPolicyListResultPage{fn: getNextPage} +} + +// ServiceEndpointPolicyPropertiesFormat service Endpoint Policy resource. +type ServiceEndpointPolicyPropertiesFormat struct { + // ServiceEndpointPolicyDefinitions - A collection of service endpoint policy definitions of the service endpoint policy. + ServiceEndpointPolicyDefinitions *[]ServiceEndpointPolicyDefinition `json:"serviceEndpointPolicyDefinitions,omitempty"` + // Subnets - READ-ONLY; A collection of references to subnets. + Subnets *[]Subnet `json:"subnets,omitempty"` + // ResourceGUID - READ-ONLY; The resource GUID property of the service endpoint policy resource. + ResourceGUID *string `json:"resourceGuid,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the service endpoint policy resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// ServiceEndpointPropertiesFormat the service endpoint properties. +type ServiceEndpointPropertiesFormat struct { + // Service - The type of the endpoint service. + Service *string `json:"service,omitempty"` + // Locations - A list of locations. + Locations *[]string `json:"locations,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the service endpoint resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// ServiceTagInformation the service tag information. +type ServiceTagInformation struct { + // Properties - READ-ONLY; Properties of the service tag information. + Properties *ServiceTagInformationPropertiesFormat `json:"properties,omitempty"` + // Name - READ-ONLY; The name of service tag. + Name *string `json:"name,omitempty"` + // ID - READ-ONLY; The ID of service tag. + ID *string `json:"id,omitempty"` +} + +// ServiceTagInformationPropertiesFormat properties of the service tag information. +type ServiceTagInformationPropertiesFormat struct { + // ChangeNumber - READ-ONLY; The iteration number of service tag. + ChangeNumber *string `json:"changeNumber,omitempty"` + // Region - READ-ONLY; The region of service tag. + Region *string `json:"region,omitempty"` + // SystemService - READ-ONLY; The name of system service. + SystemService *string `json:"systemService,omitempty"` + // AddressPrefixes - READ-ONLY; The list of IP address prefixes. + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` +} + +// ServiceTagsListResult response for the ListServiceTags API service call. +type ServiceTagsListResult struct { + autorest.Response `json:"-"` + // Name - READ-ONLY; The name of the cloud. + Name *string `json:"name,omitempty"` + // ID - READ-ONLY; The ID of the cloud. + ID *string `json:"id,omitempty"` + // Type - READ-ONLY; The azure resource type. + Type *string `json:"type,omitempty"` + // ChangeNumber - READ-ONLY; The iteration number. + ChangeNumber *string `json:"changeNumber,omitempty"` + // Cloud - READ-ONLY; The name of the cloud. + Cloud *string `json:"cloud,omitempty"` + // Values - READ-ONLY; The list of service tag information resources. + Values *[]ServiceTagInformation `json:"values,omitempty"` +} + +// SessionIds list of session ids. +type SessionIds struct { + // SessionIds - List of session ids + SessionIds *[]string `json:"sessionIds,omitempty"` +} + +// String ... +type String struct { + autorest.Response `json:"-"` + Value *string `json:"value,omitempty"` +} + +// Subnet subnet in a virtual network resource. +type Subnet struct { + autorest.Response `json:"-"` + // SubnetPropertiesFormat - Properties of the subnet. + *SubnetPropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for Subnet. +func (s Subnet) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if s.SubnetPropertiesFormat != nil { + objectMap["properties"] = s.SubnetPropertiesFormat + } + if s.Name != nil { + objectMap["name"] = s.Name + } + if s.ID != nil { + objectMap["id"] = s.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for Subnet struct. +func (s *Subnet) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var subnetPropertiesFormat SubnetPropertiesFormat + err = json.Unmarshal(*v, &subnetPropertiesFormat) + if err != nil { + return err + } + s.SubnetPropertiesFormat = &subnetPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + s.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + s.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + s.ID = &ID + } + } + } + + return nil +} + +// SubnetAssociation subnet and it's custom security rules. +type SubnetAssociation struct { + // ID - READ-ONLY; Subnet ID. + ID *string `json:"id,omitempty"` + // SecurityRules - Collection of custom security rules. + SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` +} + +// SubnetListResult response for ListSubnets API service callRetrieves all subnet that belongs to a virtual +// network. +type SubnetListResult struct { + autorest.Response `json:"-"` + // Value - The subnets in a virtual network. + Value *[]Subnet `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// SubnetListResultIterator provides access to a complete listing of Subnet values. +type SubnetListResultIterator struct { + i int + page SubnetListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *SubnetListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SubnetListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *SubnetListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter SubnetListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter SubnetListResultIterator) Response() SubnetListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter SubnetListResultIterator) Value() Subnet { + if !iter.page.NotDone() { + return Subnet{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the SubnetListResultIterator type. +func NewSubnetListResultIterator(page SubnetListResultPage) SubnetListResultIterator { + return SubnetListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (slr SubnetListResult) IsEmpty() bool { + return slr.Value == nil || len(*slr.Value) == 0 +} + +// subnetListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (slr SubnetListResult) subnetListResultPreparer(ctx context.Context) (*http.Request, error) { + if slr.NextLink == nil || len(to.String(slr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(slr.NextLink))) +} + +// SubnetListResultPage contains a page of Subnet values. +type SubnetListResultPage struct { + fn func(context.Context, SubnetListResult) (SubnetListResult, error) + slr SubnetListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *SubnetListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SubnetListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.slr) + if err != nil { + return err + } + page.slr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *SubnetListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page SubnetListResultPage) NotDone() bool { + return !page.slr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page SubnetListResultPage) Response() SubnetListResult { + return page.slr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page SubnetListResultPage) Values() []Subnet { + if page.slr.IsEmpty() { + return nil + } + return *page.slr.Value +} + +// Creates a new instance of the SubnetListResultPage type. +func NewSubnetListResultPage(getNextPage func(context.Context, SubnetListResult) (SubnetListResult, error)) SubnetListResultPage { + return SubnetListResultPage{fn: getNextPage} +} + +// SubnetPropertiesFormat properties of the subnet. +type SubnetPropertiesFormat struct { + // AddressPrefix - The address prefix for the subnet. + AddressPrefix *string `json:"addressPrefix,omitempty"` + // AddressPrefixes - List of address prefixes for the subnet. + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + // NetworkSecurityGroup - The reference of the NetworkSecurityGroup resource. + NetworkSecurityGroup *SecurityGroup `json:"networkSecurityGroup,omitempty"` + // RouteTable - The reference of the RouteTable resource. + RouteTable *RouteTable `json:"routeTable,omitempty"` + // NatGateway - Nat gateway associated with this subnet. + NatGateway *SubResource `json:"natGateway,omitempty"` + // ServiceEndpoints - An array of service endpoints. + ServiceEndpoints *[]ServiceEndpointPropertiesFormat `json:"serviceEndpoints,omitempty"` + // ServiceEndpointPolicies - An array of service endpoint policies. + ServiceEndpointPolicies *[]ServiceEndpointPolicy `json:"serviceEndpointPolicies,omitempty"` + // PrivateEndpoints - READ-ONLY; An array of references to private endpoints. + PrivateEndpoints *[]PrivateEndpoint `json:"privateEndpoints,omitempty"` + // IPConfigurations - READ-ONLY; An array of references to the network interface IP configurations using subnet. + IPConfigurations *[]IPConfiguration `json:"ipConfigurations,omitempty"` + // IPConfigurationProfiles - READ-ONLY; Array of IP configuration profiles which reference this subnet. + IPConfigurationProfiles *[]IPConfigurationProfile `json:"ipConfigurationProfiles,omitempty"` + // ResourceNavigationLinks - READ-ONLY; An array of references to the external resources using subnet. + ResourceNavigationLinks *[]ResourceNavigationLink `json:"resourceNavigationLinks,omitempty"` + // ServiceAssociationLinks - READ-ONLY; An array of references to services injecting into this subnet. + ServiceAssociationLinks *[]ServiceAssociationLink `json:"serviceAssociationLinks,omitempty"` + // Delegations - An array of references to the delegations on the subnet. + Delegations *[]Delegation `json:"delegations,omitempty"` + // Purpose - READ-ONLY; A read-only string identifying the intention of use for this subnet based on delegations and other user-defined properties. + Purpose *string `json:"purpose,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the subnet resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // PrivateEndpointNetworkPolicies - Enable or Disable apply network policies on private end point in the subnet. + PrivateEndpointNetworkPolicies *string `json:"privateEndpointNetworkPolicies,omitempty"` + // PrivateLinkServiceNetworkPolicies - Enable or Disable apply network policies on private link service in the subnet. + PrivateLinkServiceNetworkPolicies *string `json:"privateLinkServiceNetworkPolicies,omitempty"` +} + +// SubnetsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type SubnetsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *SubnetsCreateOrUpdateFuture) Result(client SubnetsClient) (s Subnet, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SubnetsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.SubnetsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent { + s, err = client.CreateOrUpdateResponder(s.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SubnetsCreateOrUpdateFuture", "Result", s.Response.Response, "Failure responding to request") + } + } + return +} + +// SubnetsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type SubnetsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *SubnetsDeleteFuture) Result(client SubnetsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SubnetsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.SubnetsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// SubnetsPrepareNetworkPoliciesFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type SubnetsPrepareNetworkPoliciesFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *SubnetsPrepareNetworkPoliciesFuture) Result(client SubnetsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SubnetsPrepareNetworkPoliciesFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.SubnetsPrepareNetworkPoliciesFuture") + return + } + ar.Response = future.Response() + return +} + +// SubnetsUnprepareNetworkPoliciesFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type SubnetsUnprepareNetworkPoliciesFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *SubnetsUnprepareNetworkPoliciesFuture) Result(client SubnetsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SubnetsUnprepareNetworkPoliciesFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.SubnetsUnprepareNetworkPoliciesFuture") + return + } + ar.Response = future.Response() + return +} + +// SubResource reference to another subresource. +type SubResource struct { + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// TagsObject tags object for patch operations. +type TagsObject struct { + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for TagsObject. +func (toVar TagsObject) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if toVar.Tags != nil { + objectMap["tags"] = toVar.Tags + } + return json.Marshal(objectMap) +} + +// Topology topology of the specified resource group. +type Topology struct { + autorest.Response `json:"-"` + // ID - READ-ONLY; GUID representing the operation id. + ID *string `json:"id,omitempty"` + // CreatedDateTime - READ-ONLY; The datetime when the topology was initially created for the resource group. + CreatedDateTime *date.Time `json:"createdDateTime,omitempty"` + // LastModified - READ-ONLY; The datetime when the topology was last modified. + LastModified *date.Time `json:"lastModified,omitempty"` + // Resources - A list of topology resources. + Resources *[]TopologyResource `json:"resources,omitempty"` +} + +// TopologyAssociation resources that have an association with the parent resource. +type TopologyAssociation struct { + // Name - The name of the resource that is associated with the parent resource. + Name *string `json:"name,omitempty"` + // ResourceID - The ID of the resource that is associated with the parent resource. + ResourceID *string `json:"resourceId,omitempty"` + // AssociationType - The association type of the child resource to the parent resource. Possible values include: 'Associated', 'Contains' + AssociationType AssociationType `json:"associationType,omitempty"` +} + +// TopologyParameters parameters that define the representation of topology. +type TopologyParameters struct { + // TargetResourceGroupName - The name of the target resource group to perform topology on. + TargetResourceGroupName *string `json:"targetResourceGroupName,omitempty"` + // TargetVirtualNetwork - The reference of the Virtual Network resource. + TargetVirtualNetwork *SubResource `json:"targetVirtualNetwork,omitempty"` + // TargetSubnet - The reference of the Subnet resource. + TargetSubnet *SubResource `json:"targetSubnet,omitempty"` +} + +// TopologyResource the network resource topology information for the given resource group. +type TopologyResource struct { + // Name - Name of the resource. + Name *string `json:"name,omitempty"` + // ID - ID of the resource. + ID *string `json:"id,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Associations - Holds the associations the resource has with other resources in the resource group. + Associations *[]TopologyAssociation `json:"associations,omitempty"` +} + +// TrafficAnalyticsConfigurationProperties parameters that define the configuration of traffic analytics. +type TrafficAnalyticsConfigurationProperties struct { + // Enabled - Flag to enable/disable traffic analytics. + Enabled *bool `json:"enabled,omitempty"` + // WorkspaceID - The resource guid of the attached workspace. + WorkspaceID *string `json:"workspaceId,omitempty"` + // WorkspaceRegion - The location of the attached workspace. + WorkspaceRegion *string `json:"workspaceRegion,omitempty"` + // WorkspaceResourceID - Resource Id of the attached workspace. + WorkspaceResourceID *string `json:"workspaceResourceId,omitempty"` + // TrafficAnalyticsInterval - The interval in minutes which would decide how frequently TA service should do flow analytics. + TrafficAnalyticsInterval *int32 `json:"trafficAnalyticsInterval,omitempty"` +} + +// TrafficAnalyticsProperties parameters that define the configuration of traffic analytics. +type TrafficAnalyticsProperties struct { + // NetworkWatcherFlowAnalyticsConfiguration - Parameters that define the configuration of traffic analytics. + NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"` +} + +// TrafficSelectorPolicy an traffic selector policy for a virtual network gateway connection. +type TrafficSelectorPolicy struct { + // LocalAddressRanges - A collection of local address spaces in CIDR format. + LocalAddressRanges *[]string `json:"localAddressRanges,omitempty"` + // RemoteAddressRanges - A collection of remote address spaces in CIDR format. + RemoteAddressRanges *[]string `json:"remoteAddressRanges,omitempty"` +} + +// TroubleshootingDetails information gained from troubleshooting of specified resource. +type TroubleshootingDetails struct { + // ID - The id of the get troubleshoot operation. + ID *string `json:"id,omitempty"` + // ReasonType - Reason type of failure. + ReasonType *string `json:"reasonType,omitempty"` + // Summary - A summary of troubleshooting. + Summary *string `json:"summary,omitempty"` + // Detail - Details on troubleshooting results. + Detail *string `json:"detail,omitempty"` + // RecommendedActions - List of recommended actions. + RecommendedActions *[]TroubleshootingRecommendedActions `json:"recommendedActions,omitempty"` +} + +// TroubleshootingParameters parameters that define the resource to troubleshoot. +type TroubleshootingParameters struct { + // TargetResourceID - The target resource to troubleshoot. + TargetResourceID *string `json:"targetResourceId,omitempty"` + // TroubleshootingProperties - Properties of the troubleshooting resource. + *TroubleshootingProperties `json:"properties,omitempty"` +} + +// MarshalJSON is the custom marshaler for TroubleshootingParameters. +func (tp TroubleshootingParameters) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if tp.TargetResourceID != nil { + objectMap["targetResourceId"] = tp.TargetResourceID + } + if tp.TroubleshootingProperties != nil { + objectMap["properties"] = tp.TroubleshootingProperties + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for TroubleshootingParameters struct. +func (tp *TroubleshootingParameters) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "targetResourceId": + if v != nil { + var targetResourceID string + err = json.Unmarshal(*v, &targetResourceID) + if err != nil { + return err + } + tp.TargetResourceID = &targetResourceID + } + case "properties": + if v != nil { + var troubleshootingProperties TroubleshootingProperties + err = json.Unmarshal(*v, &troubleshootingProperties) + if err != nil { + return err + } + tp.TroubleshootingProperties = &troubleshootingProperties + } + } + } + + return nil +} + +// TroubleshootingProperties storage location provided for troubleshoot. +type TroubleshootingProperties struct { + // StorageID - The ID for the storage account to save the troubleshoot result. + StorageID *string `json:"storageId,omitempty"` + // StoragePath - The path to the blob to save the troubleshoot result in. + StoragePath *string `json:"storagePath,omitempty"` +} + +// TroubleshootingRecommendedActions recommended actions based on discovered issues. +type TroubleshootingRecommendedActions struct { + // ActionID - ID of the recommended action. + ActionID *string `json:"actionId,omitempty"` + // ActionText - Description of recommended actions. + ActionText *string `json:"actionText,omitempty"` + // ActionURI - The uri linking to a documentation for the recommended troubleshooting actions. + ActionURI *string `json:"actionUri,omitempty"` + // ActionURIText - The information from the URI for the recommended troubleshooting actions. + ActionURIText *string `json:"actionUriText,omitempty"` +} + +// TroubleshootingResult troubleshooting information gained from specified resource. +type TroubleshootingResult struct { + autorest.Response `json:"-"` + // StartTime - The start time of the troubleshooting. + StartTime *date.Time `json:"startTime,omitempty"` + // EndTime - The end time of the troubleshooting. + EndTime *date.Time `json:"endTime,omitempty"` + // Code - The result code of the troubleshooting. + Code *string `json:"code,omitempty"` + // Results - Information from troubleshooting. + Results *[]TroubleshootingDetails `json:"results,omitempty"` +} + +// TunnelConnectionHealth virtualNetworkGatewayConnection properties. +type TunnelConnectionHealth struct { + // Tunnel - READ-ONLY; Tunnel name. + Tunnel *string `json:"tunnel,omitempty"` + // ConnectionStatus - READ-ONLY; Virtual Network Gateway connection status. Possible values include: 'VirtualNetworkGatewayConnectionStatusUnknown', 'VirtualNetworkGatewayConnectionStatusConnecting', 'VirtualNetworkGatewayConnectionStatusConnected', 'VirtualNetworkGatewayConnectionStatusNotConnected' + ConnectionStatus VirtualNetworkGatewayConnectionStatus `json:"connectionStatus,omitempty"` + // IngressBytesTransferred - READ-ONLY; The Ingress Bytes Transferred in this connection. + IngressBytesTransferred *int64 `json:"ingressBytesTransferred,omitempty"` + // EgressBytesTransferred - READ-ONLY; The Egress Bytes Transferred in this connection. + EgressBytesTransferred *int64 `json:"egressBytesTransferred,omitempty"` + // LastConnectionEstablishedUtcTime - READ-ONLY; The time at which connection was established in Utc format. + LastConnectionEstablishedUtcTime *string `json:"lastConnectionEstablishedUtcTime,omitempty"` +} + +// UnprepareNetworkPoliciesRequest details of UnprepareNetworkPolicies for Subnet. +type UnprepareNetworkPoliciesRequest struct { + // ServiceName - The name of the service for which subnet is being unprepared for. + ServiceName *string `json:"serviceName,omitempty"` +} + +// Usage describes network resource usage. +type Usage struct { + // ID - READ-ONLY; Resource identifier. + ID *string `json:"id,omitempty"` + // Unit - An enum describing the unit of measurement. + Unit *string `json:"unit,omitempty"` + // CurrentValue - The current value of the usage. + CurrentValue *int64 `json:"currentValue,omitempty"` + // Limit - The limit of usage. + Limit *int64 `json:"limit,omitempty"` + // Name - The name of the type of usage. + Name *UsageName `json:"name,omitempty"` +} + +// UsageName the usage names. +type UsageName struct { + // Value - A string describing the resource name. + Value *string `json:"value,omitempty"` + // LocalizedValue - A localized string describing the resource name. + LocalizedValue *string `json:"localizedValue,omitempty"` +} + +// UsagesListResult the list usages operation response. +type UsagesListResult struct { + autorest.Response `json:"-"` + // Value - The list network resource usages. + Value *[]Usage `json:"value,omitempty"` + // NextLink - URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// UsagesListResultIterator provides access to a complete listing of Usage values. +type UsagesListResultIterator struct { + i int + page UsagesListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *UsagesListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/UsagesListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *UsagesListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter UsagesListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter UsagesListResultIterator) Response() UsagesListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter UsagesListResultIterator) Value() Usage { + if !iter.page.NotDone() { + return Usage{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the UsagesListResultIterator type. +func NewUsagesListResultIterator(page UsagesListResultPage) UsagesListResultIterator { + return UsagesListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (ulr UsagesListResult) IsEmpty() bool { + return ulr.Value == nil || len(*ulr.Value) == 0 +} + +// usagesListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (ulr UsagesListResult) usagesListResultPreparer(ctx context.Context) (*http.Request, error) { + if ulr.NextLink == nil || len(to.String(ulr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(ulr.NextLink))) +} + +// UsagesListResultPage contains a page of Usage values. +type UsagesListResultPage struct { + fn func(context.Context, UsagesListResult) (UsagesListResult, error) + ulr UsagesListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *UsagesListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/UsagesListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.ulr) + if err != nil { + return err + } + page.ulr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *UsagesListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page UsagesListResultPage) NotDone() bool { + return !page.ulr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page UsagesListResultPage) Response() UsagesListResult { + return page.ulr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page UsagesListResultPage) Values() []Usage { + if page.ulr.IsEmpty() { + return nil + } + return *page.ulr.Value +} + +// Creates a new instance of the UsagesListResultPage type. +func NewUsagesListResultPage(getNextPage func(context.Context, UsagesListResult) (UsagesListResult, error)) UsagesListResultPage { + return UsagesListResultPage{fn: getNextPage} +} + +// VerificationIPFlowParameters parameters that define the IP flow to be verified. +type VerificationIPFlowParameters struct { + // TargetResourceID - The ID of the target resource to perform next-hop on. + TargetResourceID *string `json:"targetResourceId,omitempty"` + // Direction - The direction of the packet represented as a 5-tuple. Possible values include: 'Inbound', 'Outbound' + Direction Direction `json:"direction,omitempty"` + // Protocol - Protocol to be verified on. Possible values include: 'IPFlowProtocolTCP', 'IPFlowProtocolUDP' + Protocol IPFlowProtocol `json:"protocol,omitempty"` + // LocalPort - The local port. Acceptable values are a single integer in the range (0-65535). Support for * for the source port, which depends on the direction. + LocalPort *string `json:"localPort,omitempty"` + // RemotePort - The remote port. Acceptable values are a single integer in the range (0-65535). Support for * for the source port, which depends on the direction. + RemotePort *string `json:"remotePort,omitempty"` + // LocalIPAddress - The local IP address. Acceptable values are valid IPv4 addresses. + LocalIPAddress *string `json:"localIPAddress,omitempty"` + // RemoteIPAddress - The remote IP address. Acceptable values are valid IPv4 addresses. + RemoteIPAddress *string `json:"remoteIPAddress,omitempty"` + // TargetNicResourceID - The NIC ID. (If VM has multiple NICs and IP forwarding is enabled on any of them, then this parameter must be specified. Otherwise optional). + TargetNicResourceID *string `json:"targetNicResourceId,omitempty"` +} + +// VerificationIPFlowResult results of IP flow verification on the target resource. +type VerificationIPFlowResult struct { + autorest.Response `json:"-"` + // Access - Indicates whether the traffic is allowed or denied. Possible values include: 'Allow', 'Deny' + Access Access `json:"access,omitempty"` + // RuleName - Name of the rule. If input is not matched against any security rule, it is not displayed. + RuleName *string `json:"ruleName,omitempty"` +} + +// VirtualHub virtualHub Resource. +type VirtualHub struct { + autorest.Response `json:"-"` + // VirtualHubProperties - Properties of the virtual hub. + *VirtualHubProperties `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for VirtualHub. +func (vh VirtualHub) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if vh.VirtualHubProperties != nil { + objectMap["properties"] = vh.VirtualHubProperties + } + if vh.ID != nil { + objectMap["id"] = vh.ID + } + if vh.Location != nil { + objectMap["location"] = vh.Location + } + if vh.Tags != nil { + objectMap["tags"] = vh.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for VirtualHub struct. +func (vh *VirtualHub) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var virtualHubProperties VirtualHubProperties + err = json.Unmarshal(*v, &virtualHubProperties) + if err != nil { + return err + } + vh.VirtualHubProperties = &virtualHubProperties + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + vh.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + vh.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + vh.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + vh.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + vh.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + vh.Tags = tags + } + } + } + + return nil +} + +// VirtualHubID virtual Hub identifier. +type VirtualHubID struct { + // ID - The resource URI for the Virtual Hub where the ExpressRoute gateway is or will be deployed. The Virtual Hub resource and the ExpressRoute gateway resource reside in the same subscription. + ID *string `json:"id,omitempty"` +} + +// VirtualHubProperties parameters for VirtualHub. +type VirtualHubProperties struct { + // VirtualWan - The VirtualWAN to which the VirtualHub belongs. + VirtualWan *SubResource `json:"virtualWan,omitempty"` + // VpnGateway - The VpnGateway associated with this VirtualHub. + VpnGateway *SubResource `json:"vpnGateway,omitempty"` + // P2SVpnGateway - The P2SVpnGateway associated with this VirtualHub. + P2SVpnGateway *SubResource `json:"p2SVpnGateway,omitempty"` + // ExpressRouteGateway - The expressRouteGateway associated with this VirtualHub. + ExpressRouteGateway *SubResource `json:"expressRouteGateway,omitempty"` + // AzureFirewall - The azureFirewall associated with this VirtualHub. + AzureFirewall *SubResource `json:"azureFirewall,omitempty"` + // VirtualNetworkConnections - List of all vnet connections with this VirtualHub. + VirtualNetworkConnections *[]HubVirtualNetworkConnection `json:"virtualNetworkConnections,omitempty"` + // AddressPrefix - Address-prefix for this VirtualHub. + AddressPrefix *string `json:"addressPrefix,omitempty"` + // RouteTable - The routeTable associated with this virtual hub. + RouteTable *VirtualHubRouteTable `json:"routeTable,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the virtual hub resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // SecurityProviderName - The Security Provider name. + SecurityProviderName *string `json:"securityProviderName,omitempty"` + // VirtualHubRouteTableV2s - List of all virtual hub route table v2s associated with this VirtualHub. + VirtualHubRouteTableV2s *[]VirtualHubRouteTableV2 `json:"virtualHubRouteTableV2s,omitempty"` + // Sku - The sku of this VirtualHub. + Sku *string `json:"sku,omitempty"` +} + +// VirtualHubRoute virtualHub route. +type VirtualHubRoute struct { + // AddressPrefixes - List of all addressPrefixes. + AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` + // NextHopIPAddress - NextHop ip address. + NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` +} + +// VirtualHubRouteTable virtualHub route table. +type VirtualHubRouteTable struct { + // Routes - List of all routes. + Routes *[]VirtualHubRoute `json:"routes,omitempty"` +} + +// VirtualHubRouteTableV2 virtualHubRouteTableV2 Resource. +type VirtualHubRouteTableV2 struct { + autorest.Response `json:"-"` + // VirtualHubRouteTableV2Properties - Properties of the virtual hub route table v2. + *VirtualHubRouteTableV2Properties `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for VirtualHubRouteTableV2. +func (vhrtv VirtualHubRouteTableV2) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if vhrtv.VirtualHubRouteTableV2Properties != nil { + objectMap["properties"] = vhrtv.VirtualHubRouteTableV2Properties + } + if vhrtv.Name != nil { + objectMap["name"] = vhrtv.Name + } + if vhrtv.ID != nil { + objectMap["id"] = vhrtv.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for VirtualHubRouteTableV2 struct. +func (vhrtv *VirtualHubRouteTableV2) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var virtualHubRouteTableV2Properties VirtualHubRouteTableV2Properties + err = json.Unmarshal(*v, &virtualHubRouteTableV2Properties) + if err != nil { + return err + } + vhrtv.VirtualHubRouteTableV2Properties = &virtualHubRouteTableV2Properties + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + vhrtv.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + vhrtv.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + vhrtv.ID = &ID + } + } + } + + return nil +} + +// VirtualHubRouteTableV2Properties parameters for VirtualHubRouteTableV2. +type VirtualHubRouteTableV2Properties struct { + // Routes - List of all routes. + Routes *[]VirtualHubRouteV2 `json:"routes,omitempty"` + // AttachedConnections - List of all connections attached to this route table v2. + AttachedConnections *[]string `json:"attachedConnections,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the virtual hub route table v2 resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// VirtualHubRouteTableV2sCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of +// a long-running operation. +type VirtualHubRouteTableV2sCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualHubRouteTableV2sCreateOrUpdateFuture) Result(client VirtualHubRouteTableV2sClient) (vhrtv VirtualHubRouteTableV2, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubRouteTableV2sCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualHubRouteTableV2sCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if vhrtv.Response.Response, err = future.GetResult(sender); err == nil && vhrtv.Response.Response.StatusCode != http.StatusNoContent { + vhrtv, err = client.CreateOrUpdateResponder(vhrtv.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubRouteTableV2sCreateOrUpdateFuture", "Result", vhrtv.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualHubRouteTableV2sDeleteFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type VirtualHubRouteTableV2sDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualHubRouteTableV2sDeleteFuture) Result(client VirtualHubRouteTableV2sClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubRouteTableV2sDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualHubRouteTableV2sDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// VirtualHubRouteV2 virtualHubRouteTableV2 route. +type VirtualHubRouteV2 struct { + // DestinationType - The type of destinations. + DestinationType *string `json:"destinationType,omitempty"` + // Destinations - List of all destinations. + Destinations *[]string `json:"destinations,omitempty"` + // NextHopType - The type of next hops. + NextHopType *string `json:"nextHopType,omitempty"` + // NextHops - NextHops ip address. + NextHops *[]string `json:"nextHops,omitempty"` +} + +// VirtualHubsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type VirtualHubsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualHubsCreateOrUpdateFuture) Result(client VirtualHubsClient) (vh VirtualHub, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualHubsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if vh.Response.Response, err = future.GetResult(sender); err == nil && vh.Response.Response.StatusCode != http.StatusNoContent { + vh, err = client.CreateOrUpdateResponder(vh.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubsCreateOrUpdateFuture", "Result", vh.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualHubsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type VirtualHubsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualHubsDeleteFuture) Result(client VirtualHubsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualHubsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// VirtualNetwork virtual Network resource. +type VirtualNetwork struct { + autorest.Response `json:"-"` + // VirtualNetworkPropertiesFormat - Properties of the virtual network. + *VirtualNetworkPropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for VirtualNetwork. +func (vn VirtualNetwork) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if vn.VirtualNetworkPropertiesFormat != nil { + objectMap["properties"] = vn.VirtualNetworkPropertiesFormat + } + if vn.ID != nil { + objectMap["id"] = vn.ID + } + if vn.Location != nil { + objectMap["location"] = vn.Location + } + if vn.Tags != nil { + objectMap["tags"] = vn.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for VirtualNetwork struct. +func (vn *VirtualNetwork) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var virtualNetworkPropertiesFormat VirtualNetworkPropertiesFormat + err = json.Unmarshal(*v, &virtualNetworkPropertiesFormat) + if err != nil { + return err + } + vn.VirtualNetworkPropertiesFormat = &virtualNetworkPropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + vn.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + vn.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + vn.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + vn.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + vn.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + vn.Tags = tags + } + } + } + + return nil +} + +// VirtualNetworkBgpCommunities bgp Communities sent over ExpressRoute with each route corresponding to a +// prefix in this VNET. +type VirtualNetworkBgpCommunities struct { + // VirtualNetworkCommunity - The BGP community associated with the virtual network. + VirtualNetworkCommunity *string `json:"virtualNetworkCommunity,omitempty"` + // RegionalCommunity - READ-ONLY; The BGP community associated with the region of the virtual network. + RegionalCommunity *string `json:"regionalCommunity,omitempty"` +} + +// VirtualNetworkConnectionGatewayReference a reference to VirtualNetworkGateway or LocalNetworkGateway +// resource. +type VirtualNetworkConnectionGatewayReference struct { + // ID - The ID of VirtualNetworkGateway or LocalNetworkGateway resource. + ID *string `json:"id,omitempty"` +} + +// VirtualNetworkGateway a common class for general resource information. +type VirtualNetworkGateway struct { + autorest.Response `json:"-"` + // VirtualNetworkGatewayPropertiesFormat - Properties of the virtual network gateway. + *VirtualNetworkGatewayPropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for VirtualNetworkGateway. +func (vng VirtualNetworkGateway) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if vng.VirtualNetworkGatewayPropertiesFormat != nil { + objectMap["properties"] = vng.VirtualNetworkGatewayPropertiesFormat + } + if vng.ID != nil { + objectMap["id"] = vng.ID + } + if vng.Location != nil { + objectMap["location"] = vng.Location + } + if vng.Tags != nil { + objectMap["tags"] = vng.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for VirtualNetworkGateway struct. +func (vng *VirtualNetworkGateway) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var virtualNetworkGatewayPropertiesFormat VirtualNetworkGatewayPropertiesFormat + err = json.Unmarshal(*v, &virtualNetworkGatewayPropertiesFormat) + if err != nil { + return err + } + vng.VirtualNetworkGatewayPropertiesFormat = &virtualNetworkGatewayPropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + vng.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + vng.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + vng.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + vng.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + vng.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + vng.Tags = tags + } + } + } + + return nil +} + +// VirtualNetworkGatewayConnection a common class for general resource information. +type VirtualNetworkGatewayConnection struct { + autorest.Response `json:"-"` + // VirtualNetworkGatewayConnectionPropertiesFormat - Properties of the virtual network gateway connection. + *VirtualNetworkGatewayConnectionPropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for VirtualNetworkGatewayConnection. +func (vngc VirtualNetworkGatewayConnection) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if vngc.VirtualNetworkGatewayConnectionPropertiesFormat != nil { + objectMap["properties"] = vngc.VirtualNetworkGatewayConnectionPropertiesFormat + } + if vngc.ID != nil { + objectMap["id"] = vngc.ID + } + if vngc.Location != nil { + objectMap["location"] = vngc.Location + } + if vngc.Tags != nil { + objectMap["tags"] = vngc.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for VirtualNetworkGatewayConnection struct. +func (vngc *VirtualNetworkGatewayConnection) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var virtualNetworkGatewayConnectionPropertiesFormat VirtualNetworkGatewayConnectionPropertiesFormat + err = json.Unmarshal(*v, &virtualNetworkGatewayConnectionPropertiesFormat) + if err != nil { + return err + } + vngc.VirtualNetworkGatewayConnectionPropertiesFormat = &virtualNetworkGatewayConnectionPropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + vngc.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + vngc.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + vngc.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + vngc.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + vngc.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + vngc.Tags = tags + } + } + } + + return nil +} + +// VirtualNetworkGatewayConnectionListEntity a common class for general resource information. +type VirtualNetworkGatewayConnectionListEntity struct { + // VirtualNetworkGatewayConnectionListEntityPropertiesFormat - Properties of the virtual network gateway connection. + *VirtualNetworkGatewayConnectionListEntityPropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for VirtualNetworkGatewayConnectionListEntity. +func (vngcle VirtualNetworkGatewayConnectionListEntity) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if vngcle.VirtualNetworkGatewayConnectionListEntityPropertiesFormat != nil { + objectMap["properties"] = vngcle.VirtualNetworkGatewayConnectionListEntityPropertiesFormat + } + if vngcle.ID != nil { + objectMap["id"] = vngcle.ID + } + if vngcle.Location != nil { + objectMap["location"] = vngcle.Location + } + if vngcle.Tags != nil { + objectMap["tags"] = vngcle.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for VirtualNetworkGatewayConnectionListEntity struct. +func (vngcle *VirtualNetworkGatewayConnectionListEntity) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var virtualNetworkGatewayConnectionListEntityPropertiesFormat VirtualNetworkGatewayConnectionListEntityPropertiesFormat + err = json.Unmarshal(*v, &virtualNetworkGatewayConnectionListEntityPropertiesFormat) + if err != nil { + return err + } + vngcle.VirtualNetworkGatewayConnectionListEntityPropertiesFormat = &virtualNetworkGatewayConnectionListEntityPropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + vngcle.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + vngcle.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + vngcle.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + vngcle.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + vngcle.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + vngcle.Tags = tags + } + } + } + + return nil +} + +// VirtualNetworkGatewayConnectionListEntityPropertiesFormat virtualNetworkGatewayConnection properties. +type VirtualNetworkGatewayConnectionListEntityPropertiesFormat struct { + // AuthorizationKey - The authorizationKey. + AuthorizationKey *string `json:"authorizationKey,omitempty"` + // VirtualNetworkGateway1 - The reference to virtual network gateway resource. + VirtualNetworkGateway1 *VirtualNetworkConnectionGatewayReference `json:"virtualNetworkGateway1,omitempty"` + // VirtualNetworkGateway2 - The reference to virtual network gateway resource. + VirtualNetworkGateway2 *VirtualNetworkConnectionGatewayReference `json:"virtualNetworkGateway2,omitempty"` + // LocalNetworkGateway2 - The reference to local network gateway resource. + LocalNetworkGateway2 *VirtualNetworkConnectionGatewayReference `json:"localNetworkGateway2,omitempty"` + // ConnectionType - Gateway connection type. Possible values include: 'IPsec', 'Vnet2Vnet', 'ExpressRoute', 'VPNClient' + ConnectionType VirtualNetworkGatewayConnectionType `json:"connectionType,omitempty"` + // ConnectionProtocol - Connection protocol used for this connection. Possible values include: 'IKEv2', 'IKEv1' + ConnectionProtocol VirtualNetworkGatewayConnectionProtocol `json:"connectionProtocol,omitempty"` + // RoutingWeight - The routing weight. + RoutingWeight *int32 `json:"routingWeight,omitempty"` + // SharedKey - The IPSec shared key. + SharedKey *string `json:"sharedKey,omitempty"` + // ConnectionStatus - READ-ONLY; Virtual Network Gateway connection status. Possible values include: 'VirtualNetworkGatewayConnectionStatusUnknown', 'VirtualNetworkGatewayConnectionStatusConnecting', 'VirtualNetworkGatewayConnectionStatusConnected', 'VirtualNetworkGatewayConnectionStatusNotConnected' + ConnectionStatus VirtualNetworkGatewayConnectionStatus `json:"connectionStatus,omitempty"` + // TunnelConnectionStatus - READ-ONLY; Collection of all tunnels' connection health status. + TunnelConnectionStatus *[]TunnelConnectionHealth `json:"tunnelConnectionStatus,omitempty"` + // EgressBytesTransferred - READ-ONLY; The egress bytes transferred in this connection. + EgressBytesTransferred *int64 `json:"egressBytesTransferred,omitempty"` + // IngressBytesTransferred - READ-ONLY; The ingress bytes transferred in this connection. + IngressBytesTransferred *int64 `json:"ingressBytesTransferred,omitempty"` + // Peer - The reference to peerings resource. + Peer *SubResource `json:"peer,omitempty"` + // EnableBgp - EnableBgp flag. + EnableBgp *bool `json:"enableBgp,omitempty"` + // UsePolicyBasedTrafficSelectors - Enable policy-based traffic selectors. + UsePolicyBasedTrafficSelectors *bool `json:"usePolicyBasedTrafficSelectors,omitempty"` + // IpsecPolicies - The IPSec Policies to be considered by this connection. + IpsecPolicies *[]IpsecPolicy `json:"ipsecPolicies,omitempty"` + // TrafficSelectorPolicies - The Traffic Selector Policies to be considered by this connection. + TrafficSelectorPolicies *[]TrafficSelectorPolicy `json:"trafficSelectorPolicies,omitempty"` + // ResourceGUID - READ-ONLY; The resource GUID property of the virtual network gateway connection resource. + ResourceGUID *string `json:"resourceGuid,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the virtual network gateway connection resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // ExpressRouteGatewayBypass - Bypass ExpressRoute Gateway for data forwarding. + ExpressRouteGatewayBypass *bool `json:"expressRouteGatewayBypass,omitempty"` +} + +// VirtualNetworkGatewayConnectionListResult response for the ListVirtualNetworkGatewayConnections API +// service call. +type VirtualNetworkGatewayConnectionListResult struct { + autorest.Response `json:"-"` + // Value - A list of VirtualNetworkGatewayConnection resources that exists in a resource group. + Value *[]VirtualNetworkGatewayConnection `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// VirtualNetworkGatewayConnectionListResultIterator provides access to a complete listing of +// VirtualNetworkGatewayConnection values. +type VirtualNetworkGatewayConnectionListResultIterator struct { + i int + page VirtualNetworkGatewayConnectionListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *VirtualNetworkGatewayConnectionListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewayConnectionListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *VirtualNetworkGatewayConnectionListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter VirtualNetworkGatewayConnectionListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter VirtualNetworkGatewayConnectionListResultIterator) Response() VirtualNetworkGatewayConnectionListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter VirtualNetworkGatewayConnectionListResultIterator) Value() VirtualNetworkGatewayConnection { + if !iter.page.NotDone() { + return VirtualNetworkGatewayConnection{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the VirtualNetworkGatewayConnectionListResultIterator type. +func NewVirtualNetworkGatewayConnectionListResultIterator(page VirtualNetworkGatewayConnectionListResultPage) VirtualNetworkGatewayConnectionListResultIterator { + return VirtualNetworkGatewayConnectionListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (vngclr VirtualNetworkGatewayConnectionListResult) IsEmpty() bool { + return vngclr.Value == nil || len(*vngclr.Value) == 0 +} + +// virtualNetworkGatewayConnectionListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (vngclr VirtualNetworkGatewayConnectionListResult) virtualNetworkGatewayConnectionListResultPreparer(ctx context.Context) (*http.Request, error) { + if vngclr.NextLink == nil || len(to.String(vngclr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(vngclr.NextLink))) +} + +// VirtualNetworkGatewayConnectionListResultPage contains a page of VirtualNetworkGatewayConnection values. +type VirtualNetworkGatewayConnectionListResultPage struct { + fn func(context.Context, VirtualNetworkGatewayConnectionListResult) (VirtualNetworkGatewayConnectionListResult, error) + vngclr VirtualNetworkGatewayConnectionListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *VirtualNetworkGatewayConnectionListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewayConnectionListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.vngclr) + if err != nil { + return err + } + page.vngclr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *VirtualNetworkGatewayConnectionListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page VirtualNetworkGatewayConnectionListResultPage) NotDone() bool { + return !page.vngclr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page VirtualNetworkGatewayConnectionListResultPage) Response() VirtualNetworkGatewayConnectionListResult { + return page.vngclr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page VirtualNetworkGatewayConnectionListResultPage) Values() []VirtualNetworkGatewayConnection { + if page.vngclr.IsEmpty() { + return nil + } + return *page.vngclr.Value +} + +// Creates a new instance of the VirtualNetworkGatewayConnectionListResultPage type. +func NewVirtualNetworkGatewayConnectionListResultPage(getNextPage func(context.Context, VirtualNetworkGatewayConnectionListResult) (VirtualNetworkGatewayConnectionListResult, error)) VirtualNetworkGatewayConnectionListResultPage { + return VirtualNetworkGatewayConnectionListResultPage{fn: getNextPage} +} + +// VirtualNetworkGatewayConnectionPropertiesFormat virtualNetworkGatewayConnection properties. +type VirtualNetworkGatewayConnectionPropertiesFormat struct { + // AuthorizationKey - The authorizationKey. + AuthorizationKey *string `json:"authorizationKey,omitempty"` + // VirtualNetworkGateway1 - The reference to virtual network gateway resource. + VirtualNetworkGateway1 *VirtualNetworkGateway `json:"virtualNetworkGateway1,omitempty"` + // VirtualNetworkGateway2 - The reference to virtual network gateway resource. + VirtualNetworkGateway2 *VirtualNetworkGateway `json:"virtualNetworkGateway2,omitempty"` + // LocalNetworkGateway2 - The reference to local network gateway resource. + LocalNetworkGateway2 *LocalNetworkGateway `json:"localNetworkGateway2,omitempty"` + // ConnectionType - Gateway connection type. Possible values include: 'IPsec', 'Vnet2Vnet', 'ExpressRoute', 'VPNClient' + ConnectionType VirtualNetworkGatewayConnectionType `json:"connectionType,omitempty"` + // ConnectionProtocol - Connection protocol used for this connection. Possible values include: 'IKEv2', 'IKEv1' + ConnectionProtocol VirtualNetworkGatewayConnectionProtocol `json:"connectionProtocol,omitempty"` + // RoutingWeight - The routing weight. + RoutingWeight *int32 `json:"routingWeight,omitempty"` + // SharedKey - The IPSec shared key. + SharedKey *string `json:"sharedKey,omitempty"` + // ConnectionStatus - READ-ONLY; Virtual Network Gateway connection status. Possible values include: 'VirtualNetworkGatewayConnectionStatusUnknown', 'VirtualNetworkGatewayConnectionStatusConnecting', 'VirtualNetworkGatewayConnectionStatusConnected', 'VirtualNetworkGatewayConnectionStatusNotConnected' + ConnectionStatus VirtualNetworkGatewayConnectionStatus `json:"connectionStatus,omitempty"` + // TunnelConnectionStatus - READ-ONLY; Collection of all tunnels' connection health status. + TunnelConnectionStatus *[]TunnelConnectionHealth `json:"tunnelConnectionStatus,omitempty"` + // EgressBytesTransferred - READ-ONLY; The egress bytes transferred in this connection. + EgressBytesTransferred *int64 `json:"egressBytesTransferred,omitempty"` + // IngressBytesTransferred - READ-ONLY; The ingress bytes transferred in this connection. + IngressBytesTransferred *int64 `json:"ingressBytesTransferred,omitempty"` + // Peer - The reference to peerings resource. + Peer *SubResource `json:"peer,omitempty"` + // EnableBgp - EnableBgp flag. + EnableBgp *bool `json:"enableBgp,omitempty"` + // UsePolicyBasedTrafficSelectors - Enable policy-based traffic selectors. + UsePolicyBasedTrafficSelectors *bool `json:"usePolicyBasedTrafficSelectors,omitempty"` + // IpsecPolicies - The IPSec Policies to be considered by this connection. + IpsecPolicies *[]IpsecPolicy `json:"ipsecPolicies,omitempty"` + // TrafficSelectorPolicies - The Traffic Selector Policies to be considered by this connection. + TrafficSelectorPolicies *[]TrafficSelectorPolicy `json:"trafficSelectorPolicies,omitempty"` + // ResourceGUID - READ-ONLY; The resource GUID property of the virtual network gateway connection resource. + ResourceGUID *string `json:"resourceGuid,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the virtual network gateway connection resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // ExpressRouteGatewayBypass - Bypass ExpressRoute Gateway for data forwarding. + ExpressRouteGatewayBypass *bool `json:"expressRouteGatewayBypass,omitempty"` +} + +// VirtualNetworkGatewayConnectionsCreateOrUpdateFuture an abstraction for monitoring and retrieving the +// results of a long-running operation. +type VirtualNetworkGatewayConnectionsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkGatewayConnectionsCreateOrUpdateFuture) Result(client VirtualNetworkGatewayConnectionsClient) (vngc VirtualNetworkGatewayConnection, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkGatewayConnectionsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if vngc.Response.Response, err = future.GetResult(sender); err == nil && vngc.Response.Response.StatusCode != http.StatusNoContent { + vngc, err = client.CreateOrUpdateResponder(vngc.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsCreateOrUpdateFuture", "Result", vngc.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualNetworkGatewayConnectionsDeleteFuture an abstraction for monitoring and retrieving the results of +// a long-running operation. +type VirtualNetworkGatewayConnectionsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkGatewayConnectionsDeleteFuture) Result(client VirtualNetworkGatewayConnectionsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkGatewayConnectionsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// VirtualNetworkGatewayConnectionsResetSharedKeyFuture an abstraction for monitoring and retrieving the +// results of a long-running operation. +type VirtualNetworkGatewayConnectionsResetSharedKeyFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkGatewayConnectionsResetSharedKeyFuture) Result(client VirtualNetworkGatewayConnectionsClient) (crsk ConnectionResetSharedKey, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsResetSharedKeyFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkGatewayConnectionsResetSharedKeyFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if crsk.Response.Response, err = future.GetResult(sender); err == nil && crsk.Response.Response.StatusCode != http.StatusNoContent { + crsk, err = client.ResetSharedKeyResponder(crsk.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsResetSharedKeyFuture", "Result", crsk.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualNetworkGatewayConnectionsSetSharedKeyFuture an abstraction for monitoring and retrieving the +// results of a long-running operation. +type VirtualNetworkGatewayConnectionsSetSharedKeyFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkGatewayConnectionsSetSharedKeyFuture) Result(client VirtualNetworkGatewayConnectionsClient) (csk ConnectionSharedKey, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsSetSharedKeyFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkGatewayConnectionsSetSharedKeyFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if csk.Response.Response, err = future.GetResult(sender); err == nil && csk.Response.Response.StatusCode != http.StatusNoContent { + csk, err = client.SetSharedKeyResponder(csk.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsSetSharedKeyFuture", "Result", csk.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualNetworkGatewayConnectionsStartPacketCaptureFuture an abstraction for monitoring and retrieving +// the results of a long-running operation. +type VirtualNetworkGatewayConnectionsStartPacketCaptureFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkGatewayConnectionsStartPacketCaptureFuture) Result(client VirtualNetworkGatewayConnectionsClient) (s String, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsStartPacketCaptureFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkGatewayConnectionsStartPacketCaptureFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent { + s, err = client.StartPacketCaptureResponder(s.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsStartPacketCaptureFuture", "Result", s.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualNetworkGatewayConnectionsStopPacketCaptureFuture an abstraction for monitoring and retrieving the +// results of a long-running operation. +type VirtualNetworkGatewayConnectionsStopPacketCaptureFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkGatewayConnectionsStopPacketCaptureFuture) Result(client VirtualNetworkGatewayConnectionsClient) (s String, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsStopPacketCaptureFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkGatewayConnectionsStopPacketCaptureFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent { + s, err = client.StopPacketCaptureResponder(s.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsStopPacketCaptureFuture", "Result", s.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualNetworkGatewayConnectionsUpdateTagsFuture an abstraction for monitoring and retrieving the +// results of a long-running operation. +type VirtualNetworkGatewayConnectionsUpdateTagsFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkGatewayConnectionsUpdateTagsFuture) Result(client VirtualNetworkGatewayConnectionsClient) (vngc VirtualNetworkGatewayConnection, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsUpdateTagsFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkGatewayConnectionsUpdateTagsFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if vngc.Response.Response, err = future.GetResult(sender); err == nil && vngc.Response.Response.StatusCode != http.StatusNoContent { + vngc, err = client.UpdateTagsResponder(vngc.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsUpdateTagsFuture", "Result", vngc.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualNetworkGatewayIPConfiguration IP configuration for virtual network gateway. +type VirtualNetworkGatewayIPConfiguration struct { + // VirtualNetworkGatewayIPConfigurationPropertiesFormat - Properties of the virtual network gateway ip configuration. + *VirtualNetworkGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for VirtualNetworkGatewayIPConfiguration. +func (vngic VirtualNetworkGatewayIPConfiguration) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if vngic.VirtualNetworkGatewayIPConfigurationPropertiesFormat != nil { + objectMap["properties"] = vngic.VirtualNetworkGatewayIPConfigurationPropertiesFormat + } + if vngic.Name != nil { + objectMap["name"] = vngic.Name + } + if vngic.ID != nil { + objectMap["id"] = vngic.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for VirtualNetworkGatewayIPConfiguration struct. +func (vngic *VirtualNetworkGatewayIPConfiguration) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var virtualNetworkGatewayIPConfigurationPropertiesFormat VirtualNetworkGatewayIPConfigurationPropertiesFormat + err = json.Unmarshal(*v, &virtualNetworkGatewayIPConfigurationPropertiesFormat) + if err != nil { + return err + } + vngic.VirtualNetworkGatewayIPConfigurationPropertiesFormat = &virtualNetworkGatewayIPConfigurationPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + vngic.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + vngic.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + vngic.ID = &ID + } + } + } + + return nil +} + +// VirtualNetworkGatewayIPConfigurationPropertiesFormat properties of VirtualNetworkGatewayIPConfiguration. +type VirtualNetworkGatewayIPConfigurationPropertiesFormat struct { + // PrivateIPAllocationMethod - The private IP address allocation method. Possible values include: 'Static', 'Dynamic' + PrivateIPAllocationMethod IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` + // Subnet - The reference of the subnet resource. + Subnet *SubResource `json:"subnet,omitempty"` + // PublicIPAddress - The reference of the public IP resource. + PublicIPAddress *SubResource `json:"publicIPAddress,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the virtual network gateway IP configuration resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// VirtualNetworkGatewayListConnectionsResult response for the VirtualNetworkGatewayListConnections API +// service call. +type VirtualNetworkGatewayListConnectionsResult struct { + autorest.Response `json:"-"` + // Value - A list of VirtualNetworkGatewayConnection resources that exists in a resource group. + Value *[]VirtualNetworkGatewayConnectionListEntity `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// VirtualNetworkGatewayListConnectionsResultIterator provides access to a complete listing of +// VirtualNetworkGatewayConnectionListEntity values. +type VirtualNetworkGatewayListConnectionsResultIterator struct { + i int + page VirtualNetworkGatewayListConnectionsResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *VirtualNetworkGatewayListConnectionsResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewayListConnectionsResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *VirtualNetworkGatewayListConnectionsResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter VirtualNetworkGatewayListConnectionsResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter VirtualNetworkGatewayListConnectionsResultIterator) Response() VirtualNetworkGatewayListConnectionsResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter VirtualNetworkGatewayListConnectionsResultIterator) Value() VirtualNetworkGatewayConnectionListEntity { + if !iter.page.NotDone() { + return VirtualNetworkGatewayConnectionListEntity{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the VirtualNetworkGatewayListConnectionsResultIterator type. +func NewVirtualNetworkGatewayListConnectionsResultIterator(page VirtualNetworkGatewayListConnectionsResultPage) VirtualNetworkGatewayListConnectionsResultIterator { + return VirtualNetworkGatewayListConnectionsResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (vnglcr VirtualNetworkGatewayListConnectionsResult) IsEmpty() bool { + return vnglcr.Value == nil || len(*vnglcr.Value) == 0 +} + +// virtualNetworkGatewayListConnectionsResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (vnglcr VirtualNetworkGatewayListConnectionsResult) virtualNetworkGatewayListConnectionsResultPreparer(ctx context.Context) (*http.Request, error) { + if vnglcr.NextLink == nil || len(to.String(vnglcr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(vnglcr.NextLink))) +} + +// VirtualNetworkGatewayListConnectionsResultPage contains a page of +// VirtualNetworkGatewayConnectionListEntity values. +type VirtualNetworkGatewayListConnectionsResultPage struct { + fn func(context.Context, VirtualNetworkGatewayListConnectionsResult) (VirtualNetworkGatewayListConnectionsResult, error) + vnglcr VirtualNetworkGatewayListConnectionsResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *VirtualNetworkGatewayListConnectionsResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewayListConnectionsResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.vnglcr) + if err != nil { + return err + } + page.vnglcr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *VirtualNetworkGatewayListConnectionsResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page VirtualNetworkGatewayListConnectionsResultPage) NotDone() bool { + return !page.vnglcr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page VirtualNetworkGatewayListConnectionsResultPage) Response() VirtualNetworkGatewayListConnectionsResult { + return page.vnglcr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page VirtualNetworkGatewayListConnectionsResultPage) Values() []VirtualNetworkGatewayConnectionListEntity { + if page.vnglcr.IsEmpty() { + return nil + } + return *page.vnglcr.Value +} + +// Creates a new instance of the VirtualNetworkGatewayListConnectionsResultPage type. +func NewVirtualNetworkGatewayListConnectionsResultPage(getNextPage func(context.Context, VirtualNetworkGatewayListConnectionsResult) (VirtualNetworkGatewayListConnectionsResult, error)) VirtualNetworkGatewayListConnectionsResultPage { + return VirtualNetworkGatewayListConnectionsResultPage{fn: getNextPage} +} + +// VirtualNetworkGatewayListResult response for the ListVirtualNetworkGateways API service call. +type VirtualNetworkGatewayListResult struct { + autorest.Response `json:"-"` + // Value - A list of VirtualNetworkGateway resources that exists in a resource group. + Value *[]VirtualNetworkGateway `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// VirtualNetworkGatewayListResultIterator provides access to a complete listing of VirtualNetworkGateway +// values. +type VirtualNetworkGatewayListResultIterator struct { + i int + page VirtualNetworkGatewayListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *VirtualNetworkGatewayListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewayListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *VirtualNetworkGatewayListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter VirtualNetworkGatewayListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter VirtualNetworkGatewayListResultIterator) Response() VirtualNetworkGatewayListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter VirtualNetworkGatewayListResultIterator) Value() VirtualNetworkGateway { + if !iter.page.NotDone() { + return VirtualNetworkGateway{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the VirtualNetworkGatewayListResultIterator type. +func NewVirtualNetworkGatewayListResultIterator(page VirtualNetworkGatewayListResultPage) VirtualNetworkGatewayListResultIterator { + return VirtualNetworkGatewayListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (vnglr VirtualNetworkGatewayListResult) IsEmpty() bool { + return vnglr.Value == nil || len(*vnglr.Value) == 0 +} + +// virtualNetworkGatewayListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (vnglr VirtualNetworkGatewayListResult) virtualNetworkGatewayListResultPreparer(ctx context.Context) (*http.Request, error) { + if vnglr.NextLink == nil || len(to.String(vnglr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(vnglr.NextLink))) +} + +// VirtualNetworkGatewayListResultPage contains a page of VirtualNetworkGateway values. +type VirtualNetworkGatewayListResultPage struct { + fn func(context.Context, VirtualNetworkGatewayListResult) (VirtualNetworkGatewayListResult, error) + vnglr VirtualNetworkGatewayListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *VirtualNetworkGatewayListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewayListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.vnglr) + if err != nil { + return err + } + page.vnglr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *VirtualNetworkGatewayListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page VirtualNetworkGatewayListResultPage) NotDone() bool { + return !page.vnglr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page VirtualNetworkGatewayListResultPage) Response() VirtualNetworkGatewayListResult { + return page.vnglr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page VirtualNetworkGatewayListResultPage) Values() []VirtualNetworkGateway { + if page.vnglr.IsEmpty() { + return nil + } + return *page.vnglr.Value +} + +// Creates a new instance of the VirtualNetworkGatewayListResultPage type. +func NewVirtualNetworkGatewayListResultPage(getNextPage func(context.Context, VirtualNetworkGatewayListResult) (VirtualNetworkGatewayListResult, error)) VirtualNetworkGatewayListResultPage { + return VirtualNetworkGatewayListResultPage{fn: getNextPage} +} + +// VirtualNetworkGatewayPropertiesFormat virtualNetworkGateway properties. +type VirtualNetworkGatewayPropertiesFormat struct { + // IPConfigurations - IP configurations for virtual network gateway. + IPConfigurations *[]VirtualNetworkGatewayIPConfiguration `json:"ipConfigurations,omitempty"` + // GatewayType - The type of this virtual network gateway. Possible values include: 'VirtualNetworkGatewayTypeVpn', 'VirtualNetworkGatewayTypeExpressRoute' + GatewayType VirtualNetworkGatewayType `json:"gatewayType,omitempty"` + // VpnType - The type of this virtual network gateway. Possible values include: 'PolicyBased', 'RouteBased' + VpnType VpnType `json:"vpnType,omitempty"` + // VpnGatewayGeneration - The generation for this VirtualNetworkGateway. Must be None if gatewayType is not VPN. Possible values include: 'VpnGatewayGenerationNone', 'VpnGatewayGenerationGeneration1', 'VpnGatewayGenerationGeneration2' + VpnGatewayGeneration VpnGatewayGeneration `json:"vpnGatewayGeneration,omitempty"` + // EnableBgp - Whether BGP is enabled for this virtual network gateway or not. + EnableBgp *bool `json:"enableBgp,omitempty"` + // ActiveActive - ActiveActive flag. + ActiveActive *bool `json:"activeActive,omitempty"` + // GatewayDefaultSite - The reference of the LocalNetworkGateway resource which represents local network site having default routes. Assign Null value in case of removing existing default site setting. + GatewayDefaultSite *SubResource `json:"gatewayDefaultSite,omitempty"` + // Sku - The reference of the VirtualNetworkGatewaySku resource which represents the SKU selected for Virtual network gateway. + Sku *VirtualNetworkGatewaySku `json:"sku,omitempty"` + // VpnClientConfiguration - The reference of the VpnClientConfiguration resource which represents the P2S VpnClient configurations. + VpnClientConfiguration *VpnClientConfiguration `json:"vpnClientConfiguration,omitempty"` + // BgpSettings - Virtual network gateway's BGP speaker settings. + BgpSettings *BgpSettings `json:"bgpSettings,omitempty"` + // CustomRoutes - The reference of the address space resource which represents the custom routes address space specified by the customer for virtual network gateway and VpnClient. + CustomRoutes *AddressSpace `json:"customRoutes,omitempty"` + // ResourceGUID - READ-ONLY; The resource GUID property of the virtual network gateway resource. + ResourceGUID *string `json:"resourceGuid,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the virtual network gateway resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // EnableDNSForwarding - Whether dns forwarding is enabled or not. + EnableDNSForwarding *bool `json:"enableDnsForwarding,omitempty"` + // InboundDNSForwardingEndpoint - READ-ONLY; The IP address allocated by the gateway to which dns requests can be sent. + InboundDNSForwardingEndpoint *string `json:"inboundDnsForwardingEndpoint,omitempty"` +} + +// VirtualNetworkGatewaysCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type VirtualNetworkGatewaysCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkGatewaysCreateOrUpdateFuture) Result(client VirtualNetworkGatewaysClient) (vng VirtualNetworkGateway, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkGatewaysCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if vng.Response.Response, err = future.GetResult(sender); err == nil && vng.Response.Response.StatusCode != http.StatusNoContent { + vng, err = client.CreateOrUpdateResponder(vng.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysCreateOrUpdateFuture", "Result", vng.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualNetworkGatewaysDeleteFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type VirtualNetworkGatewaysDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkGatewaysDeleteFuture) Result(client VirtualNetworkGatewaysClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkGatewaysDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// VirtualNetworkGatewaysGeneratevpnclientpackageFuture an abstraction for monitoring and retrieving the +// results of a long-running operation. +type VirtualNetworkGatewaysGeneratevpnclientpackageFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkGatewaysGeneratevpnclientpackageFuture) Result(client VirtualNetworkGatewaysClient) (s String, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysGeneratevpnclientpackageFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkGatewaysGeneratevpnclientpackageFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent { + s, err = client.GeneratevpnclientpackageResponder(s.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysGeneratevpnclientpackageFuture", "Result", s.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualNetworkGatewaysGenerateVpnProfileFuture an abstraction for monitoring and retrieving the results +// of a long-running operation. +type VirtualNetworkGatewaysGenerateVpnProfileFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkGatewaysGenerateVpnProfileFuture) Result(client VirtualNetworkGatewaysClient) (s String, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysGenerateVpnProfileFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkGatewaysGenerateVpnProfileFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent { + s, err = client.GenerateVpnProfileResponder(s.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysGenerateVpnProfileFuture", "Result", s.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualNetworkGatewaysGetAdvertisedRoutesFuture an abstraction for monitoring and retrieving the results +// of a long-running operation. +type VirtualNetworkGatewaysGetAdvertisedRoutesFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkGatewaysGetAdvertisedRoutesFuture) Result(client VirtualNetworkGatewaysClient) (grlr GatewayRouteListResult, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysGetAdvertisedRoutesFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkGatewaysGetAdvertisedRoutesFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if grlr.Response.Response, err = future.GetResult(sender); err == nil && grlr.Response.Response.StatusCode != http.StatusNoContent { + grlr, err = client.GetAdvertisedRoutesResponder(grlr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysGetAdvertisedRoutesFuture", "Result", grlr.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualNetworkGatewaysGetBgpPeerStatusFuture an abstraction for monitoring and retrieving the results of +// a long-running operation. +type VirtualNetworkGatewaysGetBgpPeerStatusFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkGatewaysGetBgpPeerStatusFuture) Result(client VirtualNetworkGatewaysClient) (bpslr BgpPeerStatusListResult, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysGetBgpPeerStatusFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkGatewaysGetBgpPeerStatusFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if bpslr.Response.Response, err = future.GetResult(sender); err == nil && bpslr.Response.Response.StatusCode != http.StatusNoContent { + bpslr, err = client.GetBgpPeerStatusResponder(bpslr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysGetBgpPeerStatusFuture", "Result", bpslr.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualNetworkGatewaysGetLearnedRoutesFuture an abstraction for monitoring and retrieving the results of +// a long-running operation. +type VirtualNetworkGatewaysGetLearnedRoutesFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkGatewaysGetLearnedRoutesFuture) Result(client VirtualNetworkGatewaysClient) (grlr GatewayRouteListResult, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysGetLearnedRoutesFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkGatewaysGetLearnedRoutesFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if grlr.Response.Response, err = future.GetResult(sender); err == nil && grlr.Response.Response.StatusCode != http.StatusNoContent { + grlr, err = client.GetLearnedRoutesResponder(grlr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysGetLearnedRoutesFuture", "Result", grlr.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualNetworkGatewaysGetVpnclientConnectionHealthFuture an abstraction for monitoring and retrieving +// the results of a long-running operation. +type VirtualNetworkGatewaysGetVpnclientConnectionHealthFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkGatewaysGetVpnclientConnectionHealthFuture) Result(client VirtualNetworkGatewaysClient) (vcchdlr VpnClientConnectionHealthDetailListResult, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysGetVpnclientConnectionHealthFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkGatewaysGetVpnclientConnectionHealthFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if vcchdlr.Response.Response, err = future.GetResult(sender); err == nil && vcchdlr.Response.Response.StatusCode != http.StatusNoContent { + vcchdlr, err = client.GetVpnclientConnectionHealthResponder(vcchdlr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysGetVpnclientConnectionHealthFuture", "Result", vcchdlr.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualNetworkGatewaysGetVpnclientIpsecParametersFuture an abstraction for monitoring and retrieving the +// results of a long-running operation. +type VirtualNetworkGatewaysGetVpnclientIpsecParametersFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkGatewaysGetVpnclientIpsecParametersFuture) Result(client VirtualNetworkGatewaysClient) (vcipp VpnClientIPsecParameters, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysGetVpnclientIpsecParametersFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkGatewaysGetVpnclientIpsecParametersFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if vcipp.Response.Response, err = future.GetResult(sender); err == nil && vcipp.Response.Response.StatusCode != http.StatusNoContent { + vcipp, err = client.GetVpnclientIpsecParametersResponder(vcipp.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysGetVpnclientIpsecParametersFuture", "Result", vcipp.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualNetworkGatewaysGetVpnProfilePackageURLFuture an abstraction for monitoring and retrieving the +// results of a long-running operation. +type VirtualNetworkGatewaysGetVpnProfilePackageURLFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkGatewaysGetVpnProfilePackageURLFuture) Result(client VirtualNetworkGatewaysClient) (s String, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysGetVpnProfilePackageURLFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkGatewaysGetVpnProfilePackageURLFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent { + s, err = client.GetVpnProfilePackageURLResponder(s.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysGetVpnProfilePackageURLFuture", "Result", s.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualNetworkGatewaySku virtualNetworkGatewaySku details. +type VirtualNetworkGatewaySku struct { + // Name - Gateway SKU name. Possible values include: 'VirtualNetworkGatewaySkuNameBasic', 'VirtualNetworkGatewaySkuNameHighPerformance', 'VirtualNetworkGatewaySkuNameStandard', 'VirtualNetworkGatewaySkuNameUltraPerformance', 'VirtualNetworkGatewaySkuNameVpnGw1', 'VirtualNetworkGatewaySkuNameVpnGw2', 'VirtualNetworkGatewaySkuNameVpnGw3', 'VirtualNetworkGatewaySkuNameVpnGw4', 'VirtualNetworkGatewaySkuNameVpnGw5', 'VirtualNetworkGatewaySkuNameVpnGw1AZ', 'VirtualNetworkGatewaySkuNameVpnGw2AZ', 'VirtualNetworkGatewaySkuNameVpnGw3AZ', 'VirtualNetworkGatewaySkuNameVpnGw4AZ', 'VirtualNetworkGatewaySkuNameVpnGw5AZ', 'VirtualNetworkGatewaySkuNameErGw1AZ', 'VirtualNetworkGatewaySkuNameErGw2AZ', 'VirtualNetworkGatewaySkuNameErGw3AZ' + Name VirtualNetworkGatewaySkuName `json:"name,omitempty"` + // Tier - Gateway SKU tier. Possible values include: 'VirtualNetworkGatewaySkuTierBasic', 'VirtualNetworkGatewaySkuTierHighPerformance', 'VirtualNetworkGatewaySkuTierStandard', 'VirtualNetworkGatewaySkuTierUltraPerformance', 'VirtualNetworkGatewaySkuTierVpnGw1', 'VirtualNetworkGatewaySkuTierVpnGw2', 'VirtualNetworkGatewaySkuTierVpnGw3', 'VirtualNetworkGatewaySkuTierVpnGw4', 'VirtualNetworkGatewaySkuTierVpnGw5', 'VirtualNetworkGatewaySkuTierVpnGw1AZ', 'VirtualNetworkGatewaySkuTierVpnGw2AZ', 'VirtualNetworkGatewaySkuTierVpnGw3AZ', 'VirtualNetworkGatewaySkuTierVpnGw4AZ', 'VirtualNetworkGatewaySkuTierVpnGw5AZ', 'VirtualNetworkGatewaySkuTierErGw1AZ', 'VirtualNetworkGatewaySkuTierErGw2AZ', 'VirtualNetworkGatewaySkuTierErGw3AZ' + Tier VirtualNetworkGatewaySkuTier `json:"tier,omitempty"` + // Capacity - READ-ONLY; The capacity. + Capacity *int32 `json:"capacity,omitempty"` +} + +// VirtualNetworkGatewaysResetFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type VirtualNetworkGatewaysResetFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkGatewaysResetFuture) Result(client VirtualNetworkGatewaysClient) (vng VirtualNetworkGateway, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysResetFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkGatewaysResetFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if vng.Response.Response, err = future.GetResult(sender); err == nil && vng.Response.Response.StatusCode != http.StatusNoContent { + vng, err = client.ResetResponder(vng.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysResetFuture", "Result", vng.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualNetworkGatewaysResetVpnClientSharedKeyFuture an abstraction for monitoring and retrieving the +// results of a long-running operation. +type VirtualNetworkGatewaysResetVpnClientSharedKeyFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkGatewaysResetVpnClientSharedKeyFuture) Result(client VirtualNetworkGatewaysClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysResetVpnClientSharedKeyFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkGatewaysResetVpnClientSharedKeyFuture") + return + } + ar.Response = future.Response() + return +} + +// VirtualNetworkGatewaysSetVpnclientIpsecParametersFuture an abstraction for monitoring and retrieving the +// results of a long-running operation. +type VirtualNetworkGatewaysSetVpnclientIpsecParametersFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkGatewaysSetVpnclientIpsecParametersFuture) Result(client VirtualNetworkGatewaysClient) (vcipp VpnClientIPsecParameters, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysSetVpnclientIpsecParametersFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkGatewaysSetVpnclientIpsecParametersFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if vcipp.Response.Response, err = future.GetResult(sender); err == nil && vcipp.Response.Response.StatusCode != http.StatusNoContent { + vcipp, err = client.SetVpnclientIpsecParametersResponder(vcipp.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysSetVpnclientIpsecParametersFuture", "Result", vcipp.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualNetworkGatewaysStartPacketCaptureFuture an abstraction for monitoring and retrieving the results +// of a long-running operation. +type VirtualNetworkGatewaysStartPacketCaptureFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkGatewaysStartPacketCaptureFuture) Result(client VirtualNetworkGatewaysClient) (s String, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysStartPacketCaptureFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkGatewaysStartPacketCaptureFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent { + s, err = client.StartPacketCaptureResponder(s.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysStartPacketCaptureFuture", "Result", s.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualNetworkGatewaysStopPacketCaptureFuture an abstraction for monitoring and retrieving the results +// of a long-running operation. +type VirtualNetworkGatewaysStopPacketCaptureFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkGatewaysStopPacketCaptureFuture) Result(client VirtualNetworkGatewaysClient) (s String, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysStopPacketCaptureFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkGatewaysStopPacketCaptureFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent { + s, err = client.StopPacketCaptureResponder(s.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysStopPacketCaptureFuture", "Result", s.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualNetworkGatewaysUpdateTagsFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type VirtualNetworkGatewaysUpdateTagsFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkGatewaysUpdateTagsFuture) Result(client VirtualNetworkGatewaysClient) (vng VirtualNetworkGateway, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysUpdateTagsFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkGatewaysUpdateTagsFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if vng.Response.Response, err = future.GetResult(sender); err == nil && vng.Response.Response.StatusCode != http.StatusNoContent { + vng, err = client.UpdateTagsResponder(vng.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysUpdateTagsFuture", "Result", vng.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualNetworkListResult response for the ListVirtualNetworks API service call. +type VirtualNetworkListResult struct { + autorest.Response `json:"-"` + // Value - A list of VirtualNetwork resources in a resource group. + Value *[]VirtualNetwork `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// VirtualNetworkListResultIterator provides access to a complete listing of VirtualNetwork values. +type VirtualNetworkListResultIterator struct { + i int + page VirtualNetworkListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *VirtualNetworkListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *VirtualNetworkListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter VirtualNetworkListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter VirtualNetworkListResultIterator) Response() VirtualNetworkListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter VirtualNetworkListResultIterator) Value() VirtualNetwork { + if !iter.page.NotDone() { + return VirtualNetwork{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the VirtualNetworkListResultIterator type. +func NewVirtualNetworkListResultIterator(page VirtualNetworkListResultPage) VirtualNetworkListResultIterator { + return VirtualNetworkListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (vnlr VirtualNetworkListResult) IsEmpty() bool { + return vnlr.Value == nil || len(*vnlr.Value) == 0 +} + +// virtualNetworkListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (vnlr VirtualNetworkListResult) virtualNetworkListResultPreparer(ctx context.Context) (*http.Request, error) { + if vnlr.NextLink == nil || len(to.String(vnlr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(vnlr.NextLink))) +} + +// VirtualNetworkListResultPage contains a page of VirtualNetwork values. +type VirtualNetworkListResultPage struct { + fn func(context.Context, VirtualNetworkListResult) (VirtualNetworkListResult, error) + vnlr VirtualNetworkListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *VirtualNetworkListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.vnlr) + if err != nil { + return err + } + page.vnlr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *VirtualNetworkListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page VirtualNetworkListResultPage) NotDone() bool { + return !page.vnlr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page VirtualNetworkListResultPage) Response() VirtualNetworkListResult { + return page.vnlr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page VirtualNetworkListResultPage) Values() []VirtualNetwork { + if page.vnlr.IsEmpty() { + return nil + } + return *page.vnlr.Value +} + +// Creates a new instance of the VirtualNetworkListResultPage type. +func NewVirtualNetworkListResultPage(getNextPage func(context.Context, VirtualNetworkListResult) (VirtualNetworkListResult, error)) VirtualNetworkListResultPage { + return VirtualNetworkListResultPage{fn: getNextPage} +} + +// VirtualNetworkListUsageResult response for the virtual networks GetUsage API service call. +type VirtualNetworkListUsageResult struct { + autorest.Response `json:"-"` + // Value - READ-ONLY; VirtualNetwork usage stats. + Value *[]VirtualNetworkUsage `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// VirtualNetworkListUsageResultIterator provides access to a complete listing of VirtualNetworkUsage +// values. +type VirtualNetworkListUsageResultIterator struct { + i int + page VirtualNetworkListUsageResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *VirtualNetworkListUsageResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkListUsageResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *VirtualNetworkListUsageResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter VirtualNetworkListUsageResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter VirtualNetworkListUsageResultIterator) Response() VirtualNetworkListUsageResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter VirtualNetworkListUsageResultIterator) Value() VirtualNetworkUsage { + if !iter.page.NotDone() { + return VirtualNetworkUsage{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the VirtualNetworkListUsageResultIterator type. +func NewVirtualNetworkListUsageResultIterator(page VirtualNetworkListUsageResultPage) VirtualNetworkListUsageResultIterator { + return VirtualNetworkListUsageResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (vnlur VirtualNetworkListUsageResult) IsEmpty() bool { + return vnlur.Value == nil || len(*vnlur.Value) == 0 +} + +// virtualNetworkListUsageResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (vnlur VirtualNetworkListUsageResult) virtualNetworkListUsageResultPreparer(ctx context.Context) (*http.Request, error) { + if vnlur.NextLink == nil || len(to.String(vnlur.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(vnlur.NextLink))) +} + +// VirtualNetworkListUsageResultPage contains a page of VirtualNetworkUsage values. +type VirtualNetworkListUsageResultPage struct { + fn func(context.Context, VirtualNetworkListUsageResult) (VirtualNetworkListUsageResult, error) + vnlur VirtualNetworkListUsageResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *VirtualNetworkListUsageResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkListUsageResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.vnlur) + if err != nil { + return err + } + page.vnlur = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *VirtualNetworkListUsageResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page VirtualNetworkListUsageResultPage) NotDone() bool { + return !page.vnlur.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page VirtualNetworkListUsageResultPage) Response() VirtualNetworkListUsageResult { + return page.vnlur +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page VirtualNetworkListUsageResultPage) Values() []VirtualNetworkUsage { + if page.vnlur.IsEmpty() { + return nil + } + return *page.vnlur.Value +} + +// Creates a new instance of the VirtualNetworkListUsageResultPage type. +func NewVirtualNetworkListUsageResultPage(getNextPage func(context.Context, VirtualNetworkListUsageResult) (VirtualNetworkListUsageResult, error)) VirtualNetworkListUsageResultPage { + return VirtualNetworkListUsageResultPage{fn: getNextPage} +} + +// VirtualNetworkPeering peerings in a virtual network resource. +type VirtualNetworkPeering struct { + autorest.Response `json:"-"` + // VirtualNetworkPeeringPropertiesFormat - Properties of the virtual network peering. + *VirtualNetworkPeeringPropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for VirtualNetworkPeering. +func (vnp VirtualNetworkPeering) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if vnp.VirtualNetworkPeeringPropertiesFormat != nil { + objectMap["properties"] = vnp.VirtualNetworkPeeringPropertiesFormat + } + if vnp.Name != nil { + objectMap["name"] = vnp.Name + } + if vnp.ID != nil { + objectMap["id"] = vnp.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for VirtualNetworkPeering struct. +func (vnp *VirtualNetworkPeering) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var virtualNetworkPeeringPropertiesFormat VirtualNetworkPeeringPropertiesFormat + err = json.Unmarshal(*v, &virtualNetworkPeeringPropertiesFormat) + if err != nil { + return err + } + vnp.VirtualNetworkPeeringPropertiesFormat = &virtualNetworkPeeringPropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + vnp.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + vnp.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + vnp.ID = &ID + } + } + } + + return nil +} + +// VirtualNetworkPeeringListResult response for ListSubnets API service call. Retrieves all subnets that +// belong to a virtual network. +type VirtualNetworkPeeringListResult struct { + autorest.Response `json:"-"` + // Value - The peerings in a virtual network. + Value *[]VirtualNetworkPeering `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// VirtualNetworkPeeringListResultIterator provides access to a complete listing of VirtualNetworkPeering +// values. +type VirtualNetworkPeeringListResultIterator struct { + i int + page VirtualNetworkPeeringListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *VirtualNetworkPeeringListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkPeeringListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *VirtualNetworkPeeringListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter VirtualNetworkPeeringListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter VirtualNetworkPeeringListResultIterator) Response() VirtualNetworkPeeringListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter VirtualNetworkPeeringListResultIterator) Value() VirtualNetworkPeering { + if !iter.page.NotDone() { + return VirtualNetworkPeering{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the VirtualNetworkPeeringListResultIterator type. +func NewVirtualNetworkPeeringListResultIterator(page VirtualNetworkPeeringListResultPage) VirtualNetworkPeeringListResultIterator { + return VirtualNetworkPeeringListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (vnplr VirtualNetworkPeeringListResult) IsEmpty() bool { + return vnplr.Value == nil || len(*vnplr.Value) == 0 +} + +// virtualNetworkPeeringListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (vnplr VirtualNetworkPeeringListResult) virtualNetworkPeeringListResultPreparer(ctx context.Context) (*http.Request, error) { + if vnplr.NextLink == nil || len(to.String(vnplr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(vnplr.NextLink))) +} + +// VirtualNetworkPeeringListResultPage contains a page of VirtualNetworkPeering values. +type VirtualNetworkPeeringListResultPage struct { + fn func(context.Context, VirtualNetworkPeeringListResult) (VirtualNetworkPeeringListResult, error) + vnplr VirtualNetworkPeeringListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *VirtualNetworkPeeringListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkPeeringListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.vnplr) + if err != nil { + return err + } + page.vnplr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *VirtualNetworkPeeringListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page VirtualNetworkPeeringListResultPage) NotDone() bool { + return !page.vnplr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page VirtualNetworkPeeringListResultPage) Response() VirtualNetworkPeeringListResult { + return page.vnplr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page VirtualNetworkPeeringListResultPage) Values() []VirtualNetworkPeering { + if page.vnplr.IsEmpty() { + return nil + } + return *page.vnplr.Value +} + +// Creates a new instance of the VirtualNetworkPeeringListResultPage type. +func NewVirtualNetworkPeeringListResultPage(getNextPage func(context.Context, VirtualNetworkPeeringListResult) (VirtualNetworkPeeringListResult, error)) VirtualNetworkPeeringListResultPage { + return VirtualNetworkPeeringListResultPage{fn: getNextPage} +} + +// VirtualNetworkPeeringPropertiesFormat properties of the virtual network peering. +type VirtualNetworkPeeringPropertiesFormat struct { + // AllowVirtualNetworkAccess - Whether the VMs in the local virtual network space would be able to access the VMs in remote virtual network space. + AllowVirtualNetworkAccess *bool `json:"allowVirtualNetworkAccess,omitempty"` + // AllowForwardedTraffic - Whether the forwarded traffic from the VMs in the local virtual network will be allowed/disallowed in remote virtual network. + AllowForwardedTraffic *bool `json:"allowForwardedTraffic,omitempty"` + // AllowGatewayTransit - If gateway links can be used in remote virtual networking to link to this virtual network. + AllowGatewayTransit *bool `json:"allowGatewayTransit,omitempty"` + // UseRemoteGateways - If remote gateways can be used on this virtual network. If the flag is set to true, and allowGatewayTransit on remote peering is also true, virtual network will use gateways of remote virtual network for transit. Only one peering can have this flag set to true. This flag cannot be set if virtual network already has a gateway. + UseRemoteGateways *bool `json:"useRemoteGateways,omitempty"` + // RemoteVirtualNetwork - The reference of the remote virtual network. The remote virtual network can be in the same or different region (preview). See here to register for the preview and learn more (https://docs.microsoft.com/en-us/azure/virtual-network/virtual-network-create-peering). + RemoteVirtualNetwork *SubResource `json:"remoteVirtualNetwork,omitempty"` + // RemoteAddressSpace - The reference of the remote virtual network address space. + RemoteAddressSpace *AddressSpace `json:"remoteAddressSpace,omitempty"` + // PeeringState - The status of the virtual network peering. Possible values include: 'VirtualNetworkPeeringStateInitiated', 'VirtualNetworkPeeringStateConnected', 'VirtualNetworkPeeringStateDisconnected' + PeeringState VirtualNetworkPeeringState `json:"peeringState,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the virtual network peering resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// VirtualNetworkPeeringsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type VirtualNetworkPeeringsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkPeeringsCreateOrUpdateFuture) Result(client VirtualNetworkPeeringsClient) (vnp VirtualNetworkPeering, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkPeeringsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkPeeringsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if vnp.Response.Response, err = future.GetResult(sender); err == nil && vnp.Response.Response.StatusCode != http.StatusNoContent { + vnp, err = client.CreateOrUpdateResponder(vnp.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkPeeringsCreateOrUpdateFuture", "Result", vnp.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualNetworkPeeringsDeleteFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type VirtualNetworkPeeringsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkPeeringsDeleteFuture) Result(client VirtualNetworkPeeringsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkPeeringsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkPeeringsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// VirtualNetworkPropertiesFormat properties of the virtual network. +type VirtualNetworkPropertiesFormat struct { + // AddressSpace - The AddressSpace that contains an array of IP address ranges that can be used by subnets. + AddressSpace *AddressSpace `json:"addressSpace,omitempty"` + // DhcpOptions - The dhcpOptions that contains an array of DNS servers available to VMs deployed in the virtual network. + DhcpOptions *DhcpOptions `json:"dhcpOptions,omitempty"` + // Subnets - A list of subnets in a Virtual Network. + Subnets *[]Subnet `json:"subnets,omitempty"` + // VirtualNetworkPeerings - A list of peerings in a Virtual Network. + VirtualNetworkPeerings *[]VirtualNetworkPeering `json:"virtualNetworkPeerings,omitempty"` + // ResourceGUID - READ-ONLY; The resourceGuid property of the Virtual Network resource. + ResourceGUID *string `json:"resourceGuid,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the virtual network resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // EnableDdosProtection - Indicates if DDoS protection is enabled for all the protected resources in the virtual network. It requires a DDoS protection plan associated with the resource. + EnableDdosProtection *bool `json:"enableDdosProtection,omitempty"` + // EnableVMProtection - Indicates if VM protection is enabled for all the subnets in the virtual network. + EnableVMProtection *bool `json:"enableVmProtection,omitempty"` + // DdosProtectionPlan - The DDoS protection plan associated with the virtual network. + DdosProtectionPlan *SubResource `json:"ddosProtectionPlan,omitempty"` + // BgpCommunities - Bgp Communities sent over ExpressRoute with each route corresponding to a prefix in this VNET. + BgpCommunities *VirtualNetworkBgpCommunities `json:"bgpCommunities,omitempty"` +} + +// VirtualNetworksCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type VirtualNetworksCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworksCreateOrUpdateFuture) Result(client VirtualNetworksClient) (vn VirtualNetwork, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworksCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworksCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if vn.Response.Response, err = future.GetResult(sender); err == nil && vn.Response.Response.StatusCode != http.StatusNoContent { + vn, err = client.CreateOrUpdateResponder(vn.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworksCreateOrUpdateFuture", "Result", vn.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualNetworksDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type VirtualNetworksDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworksDeleteFuture) Result(client VirtualNetworksClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworksDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworksDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// VirtualNetworkTap virtual Network Tap resource. +type VirtualNetworkTap struct { + autorest.Response `json:"-"` + // VirtualNetworkTapPropertiesFormat - Virtual Network Tap Properties. + *VirtualNetworkTapPropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for VirtualNetworkTap. +func (vnt VirtualNetworkTap) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if vnt.VirtualNetworkTapPropertiesFormat != nil { + objectMap["properties"] = vnt.VirtualNetworkTapPropertiesFormat + } + if vnt.ID != nil { + objectMap["id"] = vnt.ID + } + if vnt.Location != nil { + objectMap["location"] = vnt.Location + } + if vnt.Tags != nil { + objectMap["tags"] = vnt.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for VirtualNetworkTap struct. +func (vnt *VirtualNetworkTap) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var virtualNetworkTapPropertiesFormat VirtualNetworkTapPropertiesFormat + err = json.Unmarshal(*v, &virtualNetworkTapPropertiesFormat) + if err != nil { + return err + } + vnt.VirtualNetworkTapPropertiesFormat = &virtualNetworkTapPropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + vnt.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + vnt.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + vnt.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + vnt.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + vnt.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + vnt.Tags = tags + } + } + } + + return nil +} + +// VirtualNetworkTapListResult response for ListVirtualNetworkTap API service call. +type VirtualNetworkTapListResult struct { + autorest.Response `json:"-"` + // Value - A list of VirtualNetworkTaps in a resource group. + Value *[]VirtualNetworkTap `json:"value,omitempty"` + // NextLink - The URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// VirtualNetworkTapListResultIterator provides access to a complete listing of VirtualNetworkTap values. +type VirtualNetworkTapListResultIterator struct { + i int + page VirtualNetworkTapListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *VirtualNetworkTapListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkTapListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *VirtualNetworkTapListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter VirtualNetworkTapListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter VirtualNetworkTapListResultIterator) Response() VirtualNetworkTapListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter VirtualNetworkTapListResultIterator) Value() VirtualNetworkTap { + if !iter.page.NotDone() { + return VirtualNetworkTap{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the VirtualNetworkTapListResultIterator type. +func NewVirtualNetworkTapListResultIterator(page VirtualNetworkTapListResultPage) VirtualNetworkTapListResultIterator { + return VirtualNetworkTapListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (vntlr VirtualNetworkTapListResult) IsEmpty() bool { + return vntlr.Value == nil || len(*vntlr.Value) == 0 +} + +// virtualNetworkTapListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (vntlr VirtualNetworkTapListResult) virtualNetworkTapListResultPreparer(ctx context.Context) (*http.Request, error) { + if vntlr.NextLink == nil || len(to.String(vntlr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(vntlr.NextLink))) +} + +// VirtualNetworkTapListResultPage contains a page of VirtualNetworkTap values. +type VirtualNetworkTapListResultPage struct { + fn func(context.Context, VirtualNetworkTapListResult) (VirtualNetworkTapListResult, error) + vntlr VirtualNetworkTapListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *VirtualNetworkTapListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkTapListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.vntlr) + if err != nil { + return err + } + page.vntlr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *VirtualNetworkTapListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page VirtualNetworkTapListResultPage) NotDone() bool { + return !page.vntlr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page VirtualNetworkTapListResultPage) Response() VirtualNetworkTapListResult { + return page.vntlr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page VirtualNetworkTapListResultPage) Values() []VirtualNetworkTap { + if page.vntlr.IsEmpty() { + return nil + } + return *page.vntlr.Value +} + +// Creates a new instance of the VirtualNetworkTapListResultPage type. +func NewVirtualNetworkTapListResultPage(getNextPage func(context.Context, VirtualNetworkTapListResult) (VirtualNetworkTapListResult, error)) VirtualNetworkTapListResultPage { + return VirtualNetworkTapListResultPage{fn: getNextPage} +} + +// VirtualNetworkTapPropertiesFormat virtual Network Tap properties. +type VirtualNetworkTapPropertiesFormat struct { + // NetworkInterfaceTapConfigurations - READ-ONLY; Specifies the list of resource IDs for the network interface IP configuration that needs to be tapped. + NetworkInterfaceTapConfigurations *[]InterfaceTapConfiguration `json:"networkInterfaceTapConfigurations,omitempty"` + // ResourceGUID - READ-ONLY; The resource GUID property of the virtual network tap resource. + ResourceGUID *string `json:"resourceGuid,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the virtual network tap resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // DestinationNetworkInterfaceIPConfiguration - The reference to the private IP Address of the collector nic that will receive the tap. + DestinationNetworkInterfaceIPConfiguration *InterfaceIPConfiguration `json:"destinationNetworkInterfaceIPConfiguration,omitempty"` + // DestinationLoadBalancerFrontEndIPConfiguration - The reference to the private IP address on the internal Load Balancer that will receive the tap. + DestinationLoadBalancerFrontEndIPConfiguration *FrontendIPConfiguration `json:"destinationLoadBalancerFrontEndIPConfiguration,omitempty"` + // DestinationPort - The VXLAN destination port that will receive the tapped traffic. + DestinationPort *int32 `json:"destinationPort,omitempty"` +} + +// VirtualNetworkTapsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type VirtualNetworkTapsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkTapsCreateOrUpdateFuture) Result(client VirtualNetworkTapsClient) (vnt VirtualNetworkTap, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkTapsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkTapsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if vnt.Response.Response, err = future.GetResult(sender); err == nil && vnt.Response.Response.StatusCode != http.StatusNoContent { + vnt, err = client.CreateOrUpdateResponder(vnt.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkTapsCreateOrUpdateFuture", "Result", vnt.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualNetworkTapsDeleteFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type VirtualNetworkTapsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualNetworkTapsDeleteFuture) Result(client VirtualNetworkTapsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkTapsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualNetworkTapsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// VirtualNetworkUsage usage details for subnet. +type VirtualNetworkUsage struct { + // CurrentValue - READ-ONLY; Indicates number of IPs used from the Subnet. + CurrentValue *float64 `json:"currentValue,omitempty"` + // ID - READ-ONLY; Subnet identifier. + ID *string `json:"id,omitempty"` + // Limit - READ-ONLY; Indicates the size of the subnet. + Limit *float64 `json:"limit,omitempty"` + // Name - READ-ONLY; The name containing common and localized value for usage. + Name *VirtualNetworkUsageName `json:"name,omitempty"` + // Unit - READ-ONLY; Usage units. Returns 'Count'. + Unit *string `json:"unit,omitempty"` +} + +// VirtualNetworkUsageName usage strings container. +type VirtualNetworkUsageName struct { + // LocalizedValue - READ-ONLY; Localized subnet size and usage string. + LocalizedValue *string `json:"localizedValue,omitempty"` + // Value - READ-ONLY; Subnet size and usage string. + Value *string `json:"value,omitempty"` +} + +// VirtualRouter virtualRouter Resource. +type VirtualRouter struct { + autorest.Response `json:"-"` + // VirtualRouterPropertiesFormat - Properties of the Virtual Router. + *VirtualRouterPropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for VirtualRouter. +func (vr VirtualRouter) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if vr.VirtualRouterPropertiesFormat != nil { + objectMap["properties"] = vr.VirtualRouterPropertiesFormat + } + if vr.ID != nil { + objectMap["id"] = vr.ID + } + if vr.Location != nil { + objectMap["location"] = vr.Location + } + if vr.Tags != nil { + objectMap["tags"] = vr.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for VirtualRouter struct. +func (vr *VirtualRouter) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var virtualRouterPropertiesFormat VirtualRouterPropertiesFormat + err = json.Unmarshal(*v, &virtualRouterPropertiesFormat) + if err != nil { + return err + } + vr.VirtualRouterPropertiesFormat = &virtualRouterPropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + vr.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + vr.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + vr.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + vr.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + vr.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + vr.Tags = tags + } + } + } + + return nil +} + +// VirtualRouterListResult response for ListVirtualRouters API service call. +type VirtualRouterListResult struct { + autorest.Response `json:"-"` + // Value - List of Virtual Routers. + Value *[]VirtualRouter `json:"value,omitempty"` + // NextLink - URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// VirtualRouterListResultIterator provides access to a complete listing of VirtualRouter values. +type VirtualRouterListResultIterator struct { + i int + page VirtualRouterListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *VirtualRouterListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualRouterListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *VirtualRouterListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter VirtualRouterListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter VirtualRouterListResultIterator) Response() VirtualRouterListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter VirtualRouterListResultIterator) Value() VirtualRouter { + if !iter.page.NotDone() { + return VirtualRouter{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the VirtualRouterListResultIterator type. +func NewVirtualRouterListResultIterator(page VirtualRouterListResultPage) VirtualRouterListResultIterator { + return VirtualRouterListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (vrlr VirtualRouterListResult) IsEmpty() bool { + return vrlr.Value == nil || len(*vrlr.Value) == 0 +} + +// virtualRouterListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (vrlr VirtualRouterListResult) virtualRouterListResultPreparer(ctx context.Context) (*http.Request, error) { + if vrlr.NextLink == nil || len(to.String(vrlr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(vrlr.NextLink))) +} + +// VirtualRouterListResultPage contains a page of VirtualRouter values. +type VirtualRouterListResultPage struct { + fn func(context.Context, VirtualRouterListResult) (VirtualRouterListResult, error) + vrlr VirtualRouterListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *VirtualRouterListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualRouterListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.vrlr) + if err != nil { + return err + } + page.vrlr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *VirtualRouterListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page VirtualRouterListResultPage) NotDone() bool { + return !page.vrlr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page VirtualRouterListResultPage) Response() VirtualRouterListResult { + return page.vrlr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page VirtualRouterListResultPage) Values() []VirtualRouter { + if page.vrlr.IsEmpty() { + return nil + } + return *page.vrlr.Value +} + +// Creates a new instance of the VirtualRouterListResultPage type. +func NewVirtualRouterListResultPage(getNextPage func(context.Context, VirtualRouterListResult) (VirtualRouterListResult, error)) VirtualRouterListResultPage { + return VirtualRouterListResultPage{fn: getNextPage} +} + +// VirtualRouterPeering virtual Router Peering resource. +type VirtualRouterPeering struct { + autorest.Response `json:"-"` + // VirtualRouterPeeringProperties - The properties of the Virtual Router Peering. + *VirtualRouterPeeringProperties `json:"properties,omitempty"` + // Name - Name of the virtual router peering that is unique within a virtual router. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Peering type. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for VirtualRouterPeering. +func (vrp VirtualRouterPeering) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if vrp.VirtualRouterPeeringProperties != nil { + objectMap["properties"] = vrp.VirtualRouterPeeringProperties + } + if vrp.Name != nil { + objectMap["name"] = vrp.Name + } + if vrp.ID != nil { + objectMap["id"] = vrp.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for VirtualRouterPeering struct. +func (vrp *VirtualRouterPeering) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var virtualRouterPeeringProperties VirtualRouterPeeringProperties + err = json.Unmarshal(*v, &virtualRouterPeeringProperties) + if err != nil { + return err + } + vrp.VirtualRouterPeeringProperties = &virtualRouterPeeringProperties + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + vrp.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + vrp.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + vrp.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + vrp.ID = &ID + } + } + } + + return nil +} + +// VirtualRouterPeeringListResult response for ListVirtualRouterPeerings API service call. +type VirtualRouterPeeringListResult struct { + autorest.Response `json:"-"` + // Value - List of VirtualRouterPeerings in a VirtualRouter. + Value *[]VirtualRouterPeering `json:"value,omitempty"` + // NextLink - URL to get the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// VirtualRouterPeeringListResultIterator provides access to a complete listing of VirtualRouterPeering +// values. +type VirtualRouterPeeringListResultIterator struct { + i int + page VirtualRouterPeeringListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *VirtualRouterPeeringListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualRouterPeeringListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *VirtualRouterPeeringListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter VirtualRouterPeeringListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter VirtualRouterPeeringListResultIterator) Response() VirtualRouterPeeringListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter VirtualRouterPeeringListResultIterator) Value() VirtualRouterPeering { + if !iter.page.NotDone() { + return VirtualRouterPeering{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the VirtualRouterPeeringListResultIterator type. +func NewVirtualRouterPeeringListResultIterator(page VirtualRouterPeeringListResultPage) VirtualRouterPeeringListResultIterator { + return VirtualRouterPeeringListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (vrplr VirtualRouterPeeringListResult) IsEmpty() bool { + return vrplr.Value == nil || len(*vrplr.Value) == 0 +} + +// virtualRouterPeeringListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (vrplr VirtualRouterPeeringListResult) virtualRouterPeeringListResultPreparer(ctx context.Context) (*http.Request, error) { + if vrplr.NextLink == nil || len(to.String(vrplr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(vrplr.NextLink))) +} + +// VirtualRouterPeeringListResultPage contains a page of VirtualRouterPeering values. +type VirtualRouterPeeringListResultPage struct { + fn func(context.Context, VirtualRouterPeeringListResult) (VirtualRouterPeeringListResult, error) + vrplr VirtualRouterPeeringListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *VirtualRouterPeeringListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualRouterPeeringListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.vrplr) + if err != nil { + return err + } + page.vrplr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *VirtualRouterPeeringListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page VirtualRouterPeeringListResultPage) NotDone() bool { + return !page.vrplr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page VirtualRouterPeeringListResultPage) Response() VirtualRouterPeeringListResult { + return page.vrplr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page VirtualRouterPeeringListResultPage) Values() []VirtualRouterPeering { + if page.vrplr.IsEmpty() { + return nil + } + return *page.vrplr.Value +} + +// Creates a new instance of the VirtualRouterPeeringListResultPage type. +func NewVirtualRouterPeeringListResultPage(getNextPage func(context.Context, VirtualRouterPeeringListResult) (VirtualRouterPeeringListResult, error)) VirtualRouterPeeringListResultPage { + return VirtualRouterPeeringListResultPage{fn: getNextPage} +} + +// VirtualRouterPeeringProperties properties of the rule group. +type VirtualRouterPeeringProperties struct { + // PeerAsn - Peer ASN. + PeerAsn *int64 `json:"peerAsn,omitempty"` + // PeerIP - Peer IP. + PeerIP *string `json:"peerIp,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// VirtualRouterPeeringsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type VirtualRouterPeeringsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualRouterPeeringsCreateOrUpdateFuture) Result(client VirtualRouterPeeringsClient) (vrp VirtualRouterPeering, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRouterPeeringsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualRouterPeeringsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if vrp.Response.Response, err = future.GetResult(sender); err == nil && vrp.Response.Response.StatusCode != http.StatusNoContent { + vrp, err = client.CreateOrUpdateResponder(vrp.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRouterPeeringsCreateOrUpdateFuture", "Result", vrp.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualRouterPeeringsDeleteFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type VirtualRouterPeeringsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualRouterPeeringsDeleteFuture) Result(client VirtualRouterPeeringsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRouterPeeringsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualRouterPeeringsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// VirtualRouterPropertiesFormat virtual Router definition. +type VirtualRouterPropertiesFormat struct { + // VirtualRouterAsn - VirtualRouter ASN. + VirtualRouterAsn *int64 `json:"virtualRouterAsn,omitempty"` + // VirtualRouterIps - VirtualRouter IPs. + VirtualRouterIps *[]string `json:"virtualRouterIps,omitempty"` + // HostedSubnet - The Subnet on which VirtualRouter is hosted. + HostedSubnet *SubResource `json:"hostedSubnet,omitempty"` + // HostedGateway - The Gateway on which VirtualRouter is hosted. + HostedGateway *SubResource `json:"hostedGateway,omitempty"` + // Peerings - READ-ONLY; List of references to VirtualRouterPeerings. + Peerings *[]SubResource `json:"peerings,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// VirtualRoutersCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type VirtualRoutersCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualRoutersCreateOrUpdateFuture) Result(client VirtualRoutersClient) (vr VirtualRouter, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRoutersCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualRoutersCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if vr.Response.Response, err = future.GetResult(sender); err == nil && vr.Response.Response.StatusCode != http.StatusNoContent { + vr, err = client.CreateOrUpdateResponder(vr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRoutersCreateOrUpdateFuture", "Result", vr.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualRoutersDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type VirtualRoutersDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualRoutersDeleteFuture) Result(client VirtualRoutersClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRoutersDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualRoutersDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// VirtualWAN virtualWAN Resource. +type VirtualWAN struct { + autorest.Response `json:"-"` + // VirtualWanProperties - Properties of the virtual WAN. + *VirtualWanProperties `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for VirtualWAN. +func (vw VirtualWAN) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if vw.VirtualWanProperties != nil { + objectMap["properties"] = vw.VirtualWanProperties + } + if vw.ID != nil { + objectMap["id"] = vw.ID + } + if vw.Location != nil { + objectMap["location"] = vw.Location + } + if vw.Tags != nil { + objectMap["tags"] = vw.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for VirtualWAN struct. +func (vw *VirtualWAN) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var virtualWanProperties VirtualWanProperties + err = json.Unmarshal(*v, &virtualWanProperties) + if err != nil { + return err + } + vw.VirtualWanProperties = &virtualWanProperties + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + vw.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + vw.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + vw.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + vw.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + vw.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + vw.Tags = tags + } + } + } + + return nil +} + +// VirtualWanProperties parameters for VirtualWAN. +type VirtualWanProperties struct { + // DisableVpnEncryption - Vpn encryption to be disabled or not. + DisableVpnEncryption *bool `json:"disableVpnEncryption,omitempty"` + // VirtualHubs - READ-ONLY; List of VirtualHubs in the VirtualWAN. + VirtualHubs *[]SubResource `json:"virtualHubs,omitempty"` + // VpnSites - READ-ONLY; List of VpnSites in the VirtualWAN. + VpnSites *[]SubResource `json:"vpnSites,omitempty"` + // AllowBranchToBranchTraffic - True if branch to branch traffic is allowed. + AllowBranchToBranchTraffic *bool `json:"allowBranchToBranchTraffic,omitempty"` + // AllowVnetToVnetTraffic - True if Vnet to Vnet traffic is allowed. + AllowVnetToVnetTraffic *bool `json:"allowVnetToVnetTraffic,omitempty"` + // Office365LocalBreakoutCategory - The office local breakout category. Possible values include: 'OfficeTrafficCategoryOptimize', 'OfficeTrafficCategoryOptimizeAndAllow', 'OfficeTrafficCategoryAll', 'OfficeTrafficCategoryNone' + Office365LocalBreakoutCategory OfficeTrafficCategory `json:"office365LocalBreakoutCategory,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the virtual WAN resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // Type - The type of the VirtualWAN. + Type *string `json:"type,omitempty"` +} + +// VirtualWansCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type VirtualWansCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualWansCreateOrUpdateFuture) Result(client VirtualWansClient) (vw VirtualWAN, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualWansCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualWansCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if vw.Response.Response, err = future.GetResult(sender); err == nil && vw.Response.Response.StatusCode != http.StatusNoContent { + vw, err = client.CreateOrUpdateResponder(vw.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualWansCreateOrUpdateFuture", "Result", vw.Response.Response, "Failure responding to request") + } + } + return +} + +// VirtualWansDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type VirtualWansDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VirtualWansDeleteFuture) Result(client VirtualWansClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualWansDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VirtualWansDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// VirtualWanSecurityProvider collection of SecurityProviders. +type VirtualWanSecurityProvider struct { + // Name - Name of the security provider. + Name *string `json:"name,omitempty"` + // URL - Url of the security provider. + URL *string `json:"url,omitempty"` + // Type - Name of the security provider. Possible values include: 'External', 'Native' + Type VirtualWanSecurityProviderType `json:"type,omitempty"` +} + +// VirtualWanSecurityProviders collection of SecurityProviders. +type VirtualWanSecurityProviders struct { + autorest.Response `json:"-"` + // SupportedProviders - List of VirtualWAN security providers. + SupportedProviders *[]VirtualWanSecurityProvider `json:"supportedProviders,omitempty"` +} + +// VirtualWanVpnProfileParameters virtual Wan Vpn profile parameters Vpn profile generation. +type VirtualWanVpnProfileParameters struct { + // VpnServerConfigurationResourceID - VpnServerConfiguration partial resource uri with which VirtualWan is associated to. + VpnServerConfigurationResourceID *string `json:"vpnServerConfigurationResourceId,omitempty"` + // AuthenticationMethod - VPN client authentication method. Possible values include: 'EAPTLS', 'EAPMSCHAPv2' + AuthenticationMethod AuthenticationMethod `json:"authenticationMethod,omitempty"` +} + +// VM describes a Virtual Machine. +type VM struct { + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for VM. +func (vVar VM) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if vVar.ID != nil { + objectMap["id"] = vVar.ID + } + if vVar.Location != nil { + objectMap["location"] = vVar.Location + } + if vVar.Tags != nil { + objectMap["tags"] = vVar.Tags + } + return json.Marshal(objectMap) +} + +// VpnClientConfiguration vpnClientConfiguration for P2S client. +type VpnClientConfiguration struct { + // VpnClientAddressPool - The reference of the address space resource which represents Address space for P2S VpnClient. + VpnClientAddressPool *AddressSpace `json:"vpnClientAddressPool,omitempty"` + // VpnClientRootCertificates - VpnClientRootCertificate for virtual network gateway. + VpnClientRootCertificates *[]VpnClientRootCertificate `json:"vpnClientRootCertificates,omitempty"` + // VpnClientRevokedCertificates - VpnClientRevokedCertificate for Virtual network gateway. + VpnClientRevokedCertificates *[]VpnClientRevokedCertificate `json:"vpnClientRevokedCertificates,omitempty"` + // VpnClientProtocols - VpnClientProtocols for Virtual network gateway. + VpnClientProtocols *[]VpnClientProtocol `json:"vpnClientProtocols,omitempty"` + // VpnClientIpsecPolicies - VpnClientIpsecPolicies for virtual network gateway P2S client. + VpnClientIpsecPolicies *[]IpsecPolicy `json:"vpnClientIpsecPolicies,omitempty"` + // RadiusServerAddress - The radius server address property of the VirtualNetworkGateway resource for vpn client connection. + RadiusServerAddress *string `json:"radiusServerAddress,omitempty"` + // RadiusServerSecret - The radius secret property of the VirtualNetworkGateway resource for vpn client connection. + RadiusServerSecret *string `json:"radiusServerSecret,omitempty"` + // AadTenant - The AADTenant property of the VirtualNetworkGateway resource for vpn client connection used for AAD authentication. + AadTenant *string `json:"aadTenant,omitempty"` + // AadAudience - The AADAudience property of the VirtualNetworkGateway resource for vpn client connection used for AAD authentication. + AadAudience *string `json:"aadAudience,omitempty"` + // AadIssuer - The AADIssuer property of the VirtualNetworkGateway resource for vpn client connection used for AAD authentication. + AadIssuer *string `json:"aadIssuer,omitempty"` +} + +// VpnClientConnectionHealth vpnClientConnectionHealth properties. +type VpnClientConnectionHealth struct { + // TotalIngressBytesTransferred - READ-ONLY; Total of the Ingress Bytes Transferred in this P2S Vpn connection. + TotalIngressBytesTransferred *int64 `json:"totalIngressBytesTransferred,omitempty"` + // TotalEgressBytesTransferred - READ-ONLY; Total of the Egress Bytes Transferred in this connection. + TotalEgressBytesTransferred *int64 `json:"totalEgressBytesTransferred,omitempty"` + // VpnClientConnectionsCount - The total of p2s vpn clients connected at this time to this P2SVpnGateway. + VpnClientConnectionsCount *int32 `json:"vpnClientConnectionsCount,omitempty"` + // AllocatedIPAddresses - List of allocated ip addresses to the connected p2s vpn clients. + AllocatedIPAddresses *[]string `json:"allocatedIpAddresses,omitempty"` +} + +// VpnClientConnectionHealthDetail VPN client connection health detail. +type VpnClientConnectionHealthDetail struct { + // VpnConnectionID - READ-ONLY; The vpn client Id. + VpnConnectionID *string `json:"vpnConnectionId,omitempty"` + // VpnConnectionDuration - READ-ONLY; The duration time of a connected vpn client. + VpnConnectionDuration *int64 `json:"vpnConnectionDuration,omitempty"` + // VpnConnectionTime - READ-ONLY; The start time of a connected vpn client. + VpnConnectionTime *string `json:"vpnConnectionTime,omitempty"` + // PublicIPAddress - READ-ONLY; The public Ip of a connected vpn client. + PublicIPAddress *string `json:"publicIpAddress,omitempty"` + // PrivateIPAddress - READ-ONLY; The assigned private Ip of a connected vpn client. + PrivateIPAddress *string `json:"privateIpAddress,omitempty"` + // VpnUserName - READ-ONLY; The user name of a connected vpn client. + VpnUserName *string `json:"vpnUserName,omitempty"` + // MaxBandwidth - READ-ONLY; The max band width. + MaxBandwidth *int64 `json:"maxBandwidth,omitempty"` + // EgressPacketsTransferred - READ-ONLY; The egress packets per second. + EgressPacketsTransferred *int64 `json:"egressPacketsTransferred,omitempty"` + // EgressBytesTransferred - READ-ONLY; The egress bytes per second. + EgressBytesTransferred *int64 `json:"egressBytesTransferred,omitempty"` + // IngressPacketsTransferred - READ-ONLY; The ingress packets per second. + IngressPacketsTransferred *int64 `json:"ingressPacketsTransferred,omitempty"` + // IngressBytesTransferred - READ-ONLY; The ingress bytes per second. + IngressBytesTransferred *int64 `json:"ingressBytesTransferred,omitempty"` + // MaxPacketsPerSecond - READ-ONLY; The max packets transferred per second. + MaxPacketsPerSecond *int64 `json:"maxPacketsPerSecond,omitempty"` +} + +// VpnClientConnectionHealthDetailListResult list of virtual network gateway vpn client connection health. +type VpnClientConnectionHealthDetailListResult struct { + autorest.Response `json:"-"` + // Value - List of vpn client connection health. + Value *[]VpnClientConnectionHealthDetail `json:"value,omitempty"` +} + +// VpnClientIPsecParameters an IPSec parameters for a virtual network gateway P2S connection. +type VpnClientIPsecParameters struct { + autorest.Response `json:"-"` + // SaLifeTimeSeconds - The IPSec Security Association (also called Quick Mode or Phase 2 SA) lifetime in seconds for P2S client. + SaLifeTimeSeconds *int32 `json:"saLifeTimeSeconds,omitempty"` + // SaDataSizeKilobytes - The IPSec Security Association (also called Quick Mode or Phase 2 SA) payload size in KB for P2S client.. + SaDataSizeKilobytes *int32 `json:"saDataSizeKilobytes,omitempty"` + // IpsecEncryption - The IPSec encryption algorithm (IKE phase 1). Possible values include: 'IpsecEncryptionNone', 'IpsecEncryptionDES', 'IpsecEncryptionDES3', 'IpsecEncryptionAES128', 'IpsecEncryptionAES192', 'IpsecEncryptionAES256', 'IpsecEncryptionGCMAES128', 'IpsecEncryptionGCMAES192', 'IpsecEncryptionGCMAES256' + IpsecEncryption IpsecEncryption `json:"ipsecEncryption,omitempty"` + // IpsecIntegrity - The IPSec integrity algorithm (IKE phase 1). Possible values include: 'IpsecIntegrityMD5', 'IpsecIntegritySHA1', 'IpsecIntegritySHA256', 'IpsecIntegrityGCMAES128', 'IpsecIntegrityGCMAES192', 'IpsecIntegrityGCMAES256' + IpsecIntegrity IpsecIntegrity `json:"ipsecIntegrity,omitempty"` + // IkeEncryption - The IKE encryption algorithm (IKE phase 2). Possible values include: 'DES', 'DES3', 'AES128', 'AES192', 'AES256', 'GCMAES256', 'GCMAES128' + IkeEncryption IkeEncryption `json:"ikeEncryption,omitempty"` + // IkeIntegrity - The IKE integrity algorithm (IKE phase 2). Possible values include: 'IkeIntegrityMD5', 'IkeIntegritySHA1', 'IkeIntegritySHA256', 'IkeIntegritySHA384', 'IkeIntegrityGCMAES256', 'IkeIntegrityGCMAES128' + IkeIntegrity IkeIntegrity `json:"ikeIntegrity,omitempty"` + // DhGroup - The DH Group used in IKE Phase 1 for initial SA. Possible values include: 'None', 'DHGroup1', 'DHGroup2', 'DHGroup14', 'DHGroup2048', 'ECP256', 'ECP384', 'DHGroup24' + DhGroup DhGroup `json:"dhGroup,omitempty"` + // PfsGroup - The Pfs Group used in IKE Phase 2 for new child SA. Possible values include: 'PfsGroupNone', 'PfsGroupPFS1', 'PfsGroupPFS2', 'PfsGroupPFS2048', 'PfsGroupECP256', 'PfsGroupECP384', 'PfsGroupPFS24', 'PfsGroupPFS14', 'PfsGroupPFSMM' + PfsGroup PfsGroup `json:"pfsGroup,omitempty"` +} + +// VpnClientParameters vpn Client Parameters for package generation. +type VpnClientParameters struct { + // ProcessorArchitecture - VPN client Processor Architecture. Possible values include: 'Amd64', 'X86' + ProcessorArchitecture ProcessorArchitecture `json:"processorArchitecture,omitempty"` + // AuthenticationMethod - VPN client authentication method. Possible values include: 'EAPTLS', 'EAPMSCHAPv2' + AuthenticationMethod AuthenticationMethod `json:"authenticationMethod,omitempty"` + // RadiusServerAuthCertificate - The public certificate data for the radius server authentication certificate as a Base-64 encoded string. Required only if external radius authentication has been configured with EAPTLS authentication. + RadiusServerAuthCertificate *string `json:"radiusServerAuthCertificate,omitempty"` + // ClientRootCertificates - A list of client root certificates public certificate data encoded as Base-64 strings. Optional parameter for external radius based authentication with EAPTLS. + ClientRootCertificates *[]string `json:"clientRootCertificates,omitempty"` +} + +// VpnClientRevokedCertificate VPN client revoked certificate of virtual network gateway. +type VpnClientRevokedCertificate struct { + // VpnClientRevokedCertificatePropertiesFormat - Properties of the vpn client revoked certificate. + *VpnClientRevokedCertificatePropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for VpnClientRevokedCertificate. +func (vcrc VpnClientRevokedCertificate) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if vcrc.VpnClientRevokedCertificatePropertiesFormat != nil { + objectMap["properties"] = vcrc.VpnClientRevokedCertificatePropertiesFormat + } + if vcrc.Name != nil { + objectMap["name"] = vcrc.Name + } + if vcrc.ID != nil { + objectMap["id"] = vcrc.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for VpnClientRevokedCertificate struct. +func (vcrc *VpnClientRevokedCertificate) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var vpnClientRevokedCertificatePropertiesFormat VpnClientRevokedCertificatePropertiesFormat + err = json.Unmarshal(*v, &vpnClientRevokedCertificatePropertiesFormat) + if err != nil { + return err + } + vcrc.VpnClientRevokedCertificatePropertiesFormat = &vpnClientRevokedCertificatePropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + vcrc.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + vcrc.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + vcrc.ID = &ID + } + } + } + + return nil +} + +// VpnClientRevokedCertificatePropertiesFormat properties of the revoked VPN client certificate of virtual +// network gateway. +type VpnClientRevokedCertificatePropertiesFormat struct { + // Thumbprint - The revoked VPN client certificate thumbprint. + Thumbprint *string `json:"thumbprint,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the VPN client revoked certificate resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// VpnClientRootCertificate VPN client root certificate of virtual network gateway. +type VpnClientRootCertificate struct { + // VpnClientRootCertificatePropertiesFormat - Properties of the vpn client root certificate. + *VpnClientRootCertificatePropertiesFormat `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for VpnClientRootCertificate. +func (vcrc VpnClientRootCertificate) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if vcrc.VpnClientRootCertificatePropertiesFormat != nil { + objectMap["properties"] = vcrc.VpnClientRootCertificatePropertiesFormat + } + if vcrc.Name != nil { + objectMap["name"] = vcrc.Name + } + if vcrc.ID != nil { + objectMap["id"] = vcrc.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for VpnClientRootCertificate struct. +func (vcrc *VpnClientRootCertificate) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var vpnClientRootCertificatePropertiesFormat VpnClientRootCertificatePropertiesFormat + err = json.Unmarshal(*v, &vpnClientRootCertificatePropertiesFormat) + if err != nil { + return err + } + vcrc.VpnClientRootCertificatePropertiesFormat = &vpnClientRootCertificatePropertiesFormat + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + vcrc.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + vcrc.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + vcrc.ID = &ID + } + } + } + + return nil +} + +// VpnClientRootCertificatePropertiesFormat properties of SSL certificates of application gateway. +type VpnClientRootCertificatePropertiesFormat struct { + // PublicCertData - The certificate public data. + PublicCertData *string `json:"publicCertData,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the VPN client root certificate resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// VpnConnection vpnConnection Resource. +type VpnConnection struct { + autorest.Response `json:"-"` + // VpnConnectionProperties - Properties of the VPN connection. + *VpnConnectionProperties `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for VpnConnection. +func (vc VpnConnection) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if vc.VpnConnectionProperties != nil { + objectMap["properties"] = vc.VpnConnectionProperties + } + if vc.Name != nil { + objectMap["name"] = vc.Name + } + if vc.ID != nil { + objectMap["id"] = vc.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for VpnConnection struct. +func (vc *VpnConnection) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var vpnConnectionProperties VpnConnectionProperties + err = json.Unmarshal(*v, &vpnConnectionProperties) + if err != nil { + return err + } + vc.VpnConnectionProperties = &vpnConnectionProperties + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + vc.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + vc.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + vc.ID = &ID + } + } + } + + return nil +} + +// VpnConnectionProperties parameters for VpnConnection. +type VpnConnectionProperties struct { + // RemoteVpnSite - Id of the connected vpn site. + RemoteVpnSite *SubResource `json:"remoteVpnSite,omitempty"` + // RoutingWeight - Routing weight for vpn connection. + RoutingWeight *int32 `json:"routingWeight,omitempty"` + // ConnectionStatus - The connection status. Possible values include: 'VpnConnectionStatusUnknown', 'VpnConnectionStatusConnecting', 'VpnConnectionStatusConnected', 'VpnConnectionStatusNotConnected' + ConnectionStatus VpnConnectionStatus `json:"connectionStatus,omitempty"` + // VpnConnectionProtocolType - Connection protocol used for this connection. Possible values include: 'IKEv2', 'IKEv1' + VpnConnectionProtocolType VirtualNetworkGatewayConnectionProtocol `json:"vpnConnectionProtocolType,omitempty"` + // IngressBytesTransferred - READ-ONLY; Ingress bytes transferred. + IngressBytesTransferred *int64 `json:"ingressBytesTransferred,omitempty"` + // EgressBytesTransferred - READ-ONLY; Egress bytes transferred. + EgressBytesTransferred *int64 `json:"egressBytesTransferred,omitempty"` + // ConnectionBandwidth - Expected bandwidth in MBPS. + ConnectionBandwidth *int32 `json:"connectionBandwidth,omitempty"` + // SharedKey - SharedKey for the vpn connection. + SharedKey *string `json:"sharedKey,omitempty"` + // EnableBgp - EnableBgp flag. + EnableBgp *bool `json:"enableBgp,omitempty"` + // UsePolicyBasedTrafficSelectors - Enable policy-based traffic selectors. + UsePolicyBasedTrafficSelectors *bool `json:"usePolicyBasedTrafficSelectors,omitempty"` + // IpsecPolicies - The IPSec Policies to be considered by this connection. + IpsecPolicies *[]IpsecPolicy `json:"ipsecPolicies,omitempty"` + // EnableRateLimiting - EnableBgp flag. + EnableRateLimiting *bool `json:"enableRateLimiting,omitempty"` + // EnableInternetSecurity - Enable internet security. + EnableInternetSecurity *bool `json:"enableInternetSecurity,omitempty"` + // UseLocalAzureIPAddress - Use local azure ip to initiate connection. + UseLocalAzureIPAddress *bool `json:"useLocalAzureIpAddress,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the VPN connection resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // VpnLinkConnections - List of all vpn site link connections to the gateway. + VpnLinkConnections *[]VpnSiteLinkConnection `json:"vpnLinkConnections,omitempty"` +} + +// VpnConnectionsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type VpnConnectionsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VpnConnectionsCreateOrUpdateFuture) Result(client VpnConnectionsClient) (vc VpnConnection, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnConnectionsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VpnConnectionsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if vc.Response.Response, err = future.GetResult(sender); err == nil && vc.Response.Response.StatusCode != http.StatusNoContent { + vc, err = client.CreateOrUpdateResponder(vc.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnConnectionsCreateOrUpdateFuture", "Result", vc.Response.Response, "Failure responding to request") + } + } + return +} + +// VpnConnectionsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type VpnConnectionsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VpnConnectionsDeleteFuture) Result(client VpnConnectionsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnConnectionsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VpnConnectionsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// VpnDeviceScriptParameters vpn device configuration script generation parameters. +type VpnDeviceScriptParameters struct { + // Vendor - The vendor for the vpn device. + Vendor *string `json:"vendor,omitempty"` + // DeviceFamily - The device family for the vpn device. + DeviceFamily *string `json:"deviceFamily,omitempty"` + // FirmwareVersion - The firmware version for the vpn device. + FirmwareVersion *string `json:"firmwareVersion,omitempty"` +} + +// VpnGateway vpnGateway Resource. +type VpnGateway struct { + autorest.Response `json:"-"` + // VpnGatewayProperties - Properties of the VPN gateway. + *VpnGatewayProperties `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for VpnGateway. +func (vg VpnGateway) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if vg.VpnGatewayProperties != nil { + objectMap["properties"] = vg.VpnGatewayProperties + } + if vg.ID != nil { + objectMap["id"] = vg.ID + } + if vg.Location != nil { + objectMap["location"] = vg.Location + } + if vg.Tags != nil { + objectMap["tags"] = vg.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for VpnGateway struct. +func (vg *VpnGateway) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var vpnGatewayProperties VpnGatewayProperties + err = json.Unmarshal(*v, &vpnGatewayProperties) + if err != nil { + return err + } + vg.VpnGatewayProperties = &vpnGatewayProperties + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + vg.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + vg.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + vg.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + vg.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + vg.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + vg.Tags = tags + } + } + } + + return nil +} + +// VpnGatewayProperties parameters for VpnGateway. +type VpnGatewayProperties struct { + // VirtualHub - The VirtualHub to which the gateway belongs. + VirtualHub *SubResource `json:"virtualHub,omitempty"` + // Connections - List of all vpn connections to the gateway. + Connections *[]VpnConnection `json:"connections,omitempty"` + // BgpSettings - Local network gateway's BGP speaker settings. + BgpSettings *BgpSettings `json:"bgpSettings,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the VPN gateway resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // VpnGatewayScaleUnit - The scale unit for this vpn gateway. + VpnGatewayScaleUnit *int32 `json:"vpnGatewayScaleUnit,omitempty"` +} + +// VpnGatewaysCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type VpnGatewaysCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VpnGatewaysCreateOrUpdateFuture) Result(client VpnGatewaysClient) (vg VpnGateway, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnGatewaysCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VpnGatewaysCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if vg.Response.Response, err = future.GetResult(sender); err == nil && vg.Response.Response.StatusCode != http.StatusNoContent { + vg, err = client.CreateOrUpdateResponder(vg.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnGatewaysCreateOrUpdateFuture", "Result", vg.Response.Response, "Failure responding to request") + } + } + return +} + +// VpnGatewaysDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type VpnGatewaysDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VpnGatewaysDeleteFuture) Result(client VpnGatewaysClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnGatewaysDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VpnGatewaysDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// VpnGatewaysResetFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type VpnGatewaysResetFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VpnGatewaysResetFuture) Result(client VpnGatewaysClient) (vg VpnGateway, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnGatewaysResetFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VpnGatewaysResetFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if vg.Response.Response, err = future.GetResult(sender); err == nil && vg.Response.Response.StatusCode != http.StatusNoContent { + vg, err = client.ResetResponder(vg.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnGatewaysResetFuture", "Result", vg.Response.Response, "Failure responding to request") + } + } + return +} + +// VpnLinkBgpSettings BGP settings details for a link. +type VpnLinkBgpSettings struct { + // Asn - The BGP speaker's ASN. + Asn *int64 `json:"asn,omitempty"` + // BgpPeeringAddress - The BGP peering address and BGP identifier of this BGP speaker. + BgpPeeringAddress *string `json:"bgpPeeringAddress,omitempty"` +} + +// VpnLinkProviderProperties list of properties of a link provider. +type VpnLinkProviderProperties struct { + // LinkProviderName - Name of the link provider. + LinkProviderName *string `json:"linkProviderName,omitempty"` + // LinkSpeedInMbps - Link speed. + LinkSpeedInMbps *int32 `json:"linkSpeedInMbps,omitempty"` +} + +// VpnPacketCaptureStartParameters start packet capture parameters on virtual network gateway. +type VpnPacketCaptureStartParameters struct { + // FilterData - Start Packet capture parameters. + FilterData *string `json:"filterData,omitempty"` +} + +// VpnPacketCaptureStopParameters stop packet capture parameters. +type VpnPacketCaptureStopParameters struct { + // SasURL - SAS url for packet capture on virtual network gateway. + SasURL *string `json:"sasUrl,omitempty"` +} + +// VpnProfileResponse vpn Profile Response for package generation. +type VpnProfileResponse struct { + autorest.Response `json:"-"` + // ProfileURL - URL to the VPN profile. + ProfileURL *string `json:"profileUrl,omitempty"` +} + +// VpnServerConfigRadiusClientRootCertificate properties of the Radius client root certificate of +// VpnServerConfiguration. +type VpnServerConfigRadiusClientRootCertificate struct { + // Name - The certificate name. + Name *string `json:"name,omitempty"` + // Thumbprint - The Radius client root certificate thumbprint. + Thumbprint *string `json:"thumbprint,omitempty"` +} + +// VpnServerConfigRadiusServerRootCertificate properties of Radius Server root certificate of +// VpnServerConfiguration. +type VpnServerConfigRadiusServerRootCertificate struct { + // Name - The certificate name. + Name *string `json:"name,omitempty"` + // PublicCertData - The certificate public data. + PublicCertData *string `json:"publicCertData,omitempty"` +} + +// VpnServerConfiguration vpnServerConfiguration Resource. +type VpnServerConfiguration struct { + autorest.Response `json:"-"` + // VpnServerConfigurationProperties - Properties of the P2SVpnServer configuration. + *VpnServerConfigurationProperties `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for VpnServerConfiguration. +func (vsc VpnServerConfiguration) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if vsc.VpnServerConfigurationProperties != nil { + objectMap["properties"] = vsc.VpnServerConfigurationProperties + } + if vsc.ID != nil { + objectMap["id"] = vsc.ID + } + if vsc.Location != nil { + objectMap["location"] = vsc.Location + } + if vsc.Tags != nil { + objectMap["tags"] = vsc.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for VpnServerConfiguration struct. +func (vsc *VpnServerConfiguration) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var vpnServerConfigurationProperties VpnServerConfigurationProperties + err = json.Unmarshal(*v, &vpnServerConfigurationProperties) + if err != nil { + return err + } + vsc.VpnServerConfigurationProperties = &vpnServerConfigurationProperties + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + vsc.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + vsc.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + vsc.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + vsc.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + vsc.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + vsc.Tags = tags + } + } + } + + return nil +} + +// VpnServerConfigurationProperties parameters for VpnServerConfiguration. +type VpnServerConfigurationProperties struct { + // Name - The name of the VpnServerConfiguration that is unique within a resource group. + Name *string `json:"name,omitempty"` + // VpnProtocols - VPN protocols for the VpnServerConfiguration. + VpnProtocols *[]VpnGatewayTunnelingProtocol `json:"vpnProtocols,omitempty"` + // VpnAuthenticationTypes - VPN authentication types for the VpnServerConfiguration. + VpnAuthenticationTypes *[]VpnAuthenticationType `json:"vpnAuthenticationTypes,omitempty"` + // VpnClientRootCertificates - VPN client root certificate of VpnServerConfiguration. + VpnClientRootCertificates *[]VpnServerConfigVpnClientRootCertificate `json:"vpnClientRootCertificates,omitempty"` + // VpnClientRevokedCertificates - VPN client revoked certificate of VpnServerConfiguration. + VpnClientRevokedCertificates *[]VpnServerConfigVpnClientRevokedCertificate `json:"vpnClientRevokedCertificates,omitempty"` + // RadiusServerRootCertificates - Radius Server root certificate of VpnServerConfiguration. + RadiusServerRootCertificates *[]VpnServerConfigRadiusServerRootCertificate `json:"radiusServerRootCertificates,omitempty"` + // RadiusClientRootCertificates - Radius client root certificate of VpnServerConfiguration. + RadiusClientRootCertificates *[]VpnServerConfigRadiusClientRootCertificate `json:"radiusClientRootCertificates,omitempty"` + // VpnClientIpsecPolicies - VpnClientIpsecPolicies for VpnServerConfiguration. + VpnClientIpsecPolicies *[]IpsecPolicy `json:"vpnClientIpsecPolicies,omitempty"` + // RadiusServerAddress - The radius server address property of the VpnServerConfiguration resource for point to site client connection. + RadiusServerAddress *string `json:"radiusServerAddress,omitempty"` + // RadiusServerSecret - The radius secret property of the VpnServerConfiguration resource for point to site client connection. + RadiusServerSecret *string `json:"radiusServerSecret,omitempty"` + // AadAuthenticationParameters - The set of aad vpn authentication parameters. + AadAuthenticationParameters *AadAuthenticationParameters `json:"aadAuthenticationParameters,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the VpnServerConfiguration resource. Possible values are: 'Updating', 'Deleting', and 'Failed'. + ProvisioningState *string `json:"provisioningState,omitempty"` + // P2SVpnGateways - READ-ONLY; List of references to P2SVpnGateways. + P2SVpnGateways *[]P2SVpnGateway `json:"p2SVpnGateways,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` +} + +// VpnServerConfigurationsAssociatedWithVirtualWanListFuture an abstraction for monitoring and retrieving +// the results of a long-running operation. +type VpnServerConfigurationsAssociatedWithVirtualWanListFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VpnServerConfigurationsAssociatedWithVirtualWanListFuture) Result(client VpnServerConfigurationsAssociatedWithVirtualWanClient) (vscr VpnServerConfigurationsResponse, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnServerConfigurationsAssociatedWithVirtualWanListFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VpnServerConfigurationsAssociatedWithVirtualWanListFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if vscr.Response.Response, err = future.GetResult(sender); err == nil && vscr.Response.Response.StatusCode != http.StatusNoContent { + vscr, err = client.ListResponder(vscr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnServerConfigurationsAssociatedWithVirtualWanListFuture", "Result", vscr.Response.Response, "Failure responding to request") + } + } + return +} + +// VpnServerConfigurationsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of +// a long-running operation. +type VpnServerConfigurationsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VpnServerConfigurationsCreateOrUpdateFuture) Result(client VpnServerConfigurationsClient) (vsc VpnServerConfiguration, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnServerConfigurationsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VpnServerConfigurationsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if vsc.Response.Response, err = future.GetResult(sender); err == nil && vsc.Response.Response.StatusCode != http.StatusNoContent { + vsc, err = client.CreateOrUpdateResponder(vsc.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnServerConfigurationsCreateOrUpdateFuture", "Result", vsc.Response.Response, "Failure responding to request") + } + } + return +} + +// VpnServerConfigurationsDeleteFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type VpnServerConfigurationsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VpnServerConfigurationsDeleteFuture) Result(client VpnServerConfigurationsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnServerConfigurationsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VpnServerConfigurationsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// VpnServerConfigurationsResponse vpnServerConfigurations list associated with VirtualWan Response. +type VpnServerConfigurationsResponse struct { + autorest.Response `json:"-"` + // VpnServerConfigurationResourceIds - List of VpnServerConfigurations associated with VirtualWan. + VpnServerConfigurationResourceIds *[]string `json:"vpnServerConfigurationResourceIds,omitempty"` +} + +// VpnServerConfigVpnClientRevokedCertificate properties of the revoked VPN client certificate of +// VpnServerConfiguration. +type VpnServerConfigVpnClientRevokedCertificate struct { + // Name - The certificate name. + Name *string `json:"name,omitempty"` + // Thumbprint - The revoked VPN client certificate thumbprint. + Thumbprint *string `json:"thumbprint,omitempty"` +} + +// VpnServerConfigVpnClientRootCertificate properties of VPN client root certificate of +// VpnServerConfiguration. +type VpnServerConfigVpnClientRootCertificate struct { + // Name - The certificate name. + Name *string `json:"name,omitempty"` + // PublicCertData - The certificate public data. + PublicCertData *string `json:"publicCertData,omitempty"` +} + +// VpnSite vpnSite Resource. +type VpnSite struct { + autorest.Response `json:"-"` + // VpnSiteProperties - Properties of the VPN site. + *VpnSiteProperties `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for VpnSite. +func (vs VpnSite) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if vs.VpnSiteProperties != nil { + objectMap["properties"] = vs.VpnSiteProperties + } + if vs.ID != nil { + objectMap["id"] = vs.ID + } + if vs.Location != nil { + objectMap["location"] = vs.Location + } + if vs.Tags != nil { + objectMap["tags"] = vs.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for VpnSite struct. +func (vs *VpnSite) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var vpnSiteProperties VpnSiteProperties + err = json.Unmarshal(*v, &vpnSiteProperties) + if err != nil { + return err + } + vs.VpnSiteProperties = &vpnSiteProperties + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + vs.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + vs.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + vs.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + vs.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + vs.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + vs.Tags = tags + } + } + } + + return nil +} + +// VpnSiteID vpnSite Resource. +type VpnSiteID struct { + // VpnSite - READ-ONLY; The resource-uri of the vpn-site for which config is to be fetched. + VpnSite *string `json:"vpnSite,omitempty"` +} + +// VpnSiteLink vpnSiteLink Resource. +type VpnSiteLink struct { + autorest.Response `json:"-"` + // VpnSiteLinkProperties - Properties of the VPN site link. + *VpnSiteLinkProperties `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for VpnSiteLink. +func (vsl VpnSiteLink) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if vsl.VpnSiteLinkProperties != nil { + objectMap["properties"] = vsl.VpnSiteLinkProperties + } + if vsl.Name != nil { + objectMap["name"] = vsl.Name + } + if vsl.ID != nil { + objectMap["id"] = vsl.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for VpnSiteLink struct. +func (vsl *VpnSiteLink) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var vpnSiteLinkProperties VpnSiteLinkProperties + err = json.Unmarshal(*v, &vpnSiteLinkProperties) + if err != nil { + return err + } + vsl.VpnSiteLinkProperties = &vpnSiteLinkProperties + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + vsl.Etag = &etag + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + vsl.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + vsl.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + vsl.ID = &ID + } + } + } + + return nil +} + +// VpnSiteLinkConnection vpnSiteLinkConnection Resource. +type VpnSiteLinkConnection struct { + autorest.Response `json:"-"` + // VpnSiteLinkConnectionProperties - Properties of the VPN site link connection. + *VpnSiteLinkConnectionProperties `json:"properties,omitempty"` + // Name - The name of the resource that is unique within a resource group. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` +} + +// MarshalJSON is the custom marshaler for VpnSiteLinkConnection. +func (vslc VpnSiteLinkConnection) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if vslc.VpnSiteLinkConnectionProperties != nil { + objectMap["properties"] = vslc.VpnSiteLinkConnectionProperties + } + if vslc.Name != nil { + objectMap["name"] = vslc.Name + } + if vslc.ID != nil { + objectMap["id"] = vslc.ID + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for VpnSiteLinkConnection struct. +func (vslc *VpnSiteLinkConnection) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var vpnSiteLinkConnectionProperties VpnSiteLinkConnectionProperties + err = json.Unmarshal(*v, &vpnSiteLinkConnectionProperties) + if err != nil { + return err + } + vslc.VpnSiteLinkConnectionProperties = &vpnSiteLinkConnectionProperties + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + vslc.Name = &name + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + vslc.Etag = &etag + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + vslc.Type = &typeVar + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + vslc.ID = &ID + } + } + } + + return nil +} + +// VpnSiteLinkConnectionProperties parameters for VpnConnection. +type VpnSiteLinkConnectionProperties struct { + // VpnSiteLink - Id of the connected vpn site link. + VpnSiteLink *SubResource `json:"vpnSiteLink,omitempty"` + // RoutingWeight - Routing weight for vpn connection. + RoutingWeight *int32 `json:"routingWeight,omitempty"` + // ConnectionStatus - The connection status. Possible values include: 'VpnConnectionStatusUnknown', 'VpnConnectionStatusConnecting', 'VpnConnectionStatusConnected', 'VpnConnectionStatusNotConnected' + ConnectionStatus VpnConnectionStatus `json:"connectionStatus,omitempty"` + // VpnConnectionProtocolType - Connection protocol used for this connection. Possible values include: 'IKEv2', 'IKEv1' + VpnConnectionProtocolType VirtualNetworkGatewayConnectionProtocol `json:"vpnConnectionProtocolType,omitempty"` + // IngressBytesTransferred - READ-ONLY; Ingress bytes transferred. + IngressBytesTransferred *int64 `json:"ingressBytesTransferred,omitempty"` + // EgressBytesTransferred - READ-ONLY; Egress bytes transferred. + EgressBytesTransferred *int64 `json:"egressBytesTransferred,omitempty"` + // ConnectionBandwidth - Expected bandwidth in MBPS. + ConnectionBandwidth *int32 `json:"connectionBandwidth,omitempty"` + // SharedKey - SharedKey for the vpn connection. + SharedKey *string `json:"sharedKey,omitempty"` + // EnableBgp - EnableBgp flag. + EnableBgp *bool `json:"enableBgp,omitempty"` + // UsePolicyBasedTrafficSelectors - Enable policy-based traffic selectors. + UsePolicyBasedTrafficSelectors *bool `json:"usePolicyBasedTrafficSelectors,omitempty"` + // IpsecPolicies - The IPSec Policies to be considered by this connection. + IpsecPolicies *[]IpsecPolicy `json:"ipsecPolicies,omitempty"` + // EnableRateLimiting - EnableBgp flag. + EnableRateLimiting *bool `json:"enableRateLimiting,omitempty"` + // UseLocalAzureIPAddress - Use local azure ip to initiate connection. + UseLocalAzureIPAddress *bool `json:"useLocalAzureIpAddress,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the VPN site link connection resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// VpnSiteLinkProperties parameters for VpnSite. +type VpnSiteLinkProperties struct { + // LinkProperties - The link provider properties. + LinkProperties *VpnLinkProviderProperties `json:"linkProperties,omitempty"` + // IPAddress - The ip-address for the vpn-site-link. + IPAddress *string `json:"ipAddress,omitempty"` + // BgpProperties - The set of bgp properties. + BgpProperties *VpnLinkBgpSettings `json:"bgpProperties,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the VPN site link resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// VpnSiteProperties parameters for VpnSite. +type VpnSiteProperties struct { + // VirtualWan - The VirtualWAN to which the vpnSite belongs. + VirtualWan *SubResource `json:"virtualWan,omitempty"` + // DeviceProperties - The device properties. + DeviceProperties *DeviceProperties `json:"deviceProperties,omitempty"` + // IPAddress - The ip-address for the vpn-site. + IPAddress *string `json:"ipAddress,omitempty"` + // SiteKey - The key for vpn-site that can be used for connections. + SiteKey *string `json:"siteKey,omitempty"` + // AddressSpace - The AddressSpace that contains an array of IP address ranges. + AddressSpace *AddressSpace `json:"addressSpace,omitempty"` + // BgpProperties - The set of bgp properties. + BgpProperties *BgpSettings `json:"bgpProperties,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the VPN site resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // IsSecuritySite - IsSecuritySite flag. + IsSecuritySite *bool `json:"isSecuritySite,omitempty"` + // VpnSiteLinks - List of all vpn site links. + VpnSiteLinks *[]VpnSiteLink `json:"vpnSiteLinks,omitempty"` +} + +// VpnSitesConfigurationDownloadFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type VpnSitesConfigurationDownloadFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VpnSitesConfigurationDownloadFuture) Result(client VpnSitesConfigurationClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSitesConfigurationDownloadFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VpnSitesConfigurationDownloadFuture") + return + } + ar.Response = future.Response() + return +} + +// VpnSitesCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type VpnSitesCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VpnSitesCreateOrUpdateFuture) Result(client VpnSitesClient) (vs VpnSite, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSitesCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VpnSitesCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if vs.Response.Response, err = future.GetResult(sender); err == nil && vs.Response.Response.StatusCode != http.StatusNoContent { + vs, err = client.CreateOrUpdateResponder(vs.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSitesCreateOrUpdateFuture", "Result", vs.Response.Response, "Failure responding to request") + } + } + return +} + +// VpnSitesDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type VpnSitesDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *VpnSitesDeleteFuture) Result(client VpnSitesClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSitesDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.VpnSitesDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// Watcher network watcher in a resource group. +type Watcher struct { + autorest.Response `json:"-"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // WatcherPropertiesFormat - Properties of the network watcher. + *WatcherPropertiesFormat `json:"properties,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for Watcher. +func (w Watcher) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if w.WatcherPropertiesFormat != nil { + objectMap["properties"] = w.WatcherPropertiesFormat + } + if w.ID != nil { + objectMap["id"] = w.ID + } + if w.Location != nil { + objectMap["location"] = w.Location + } + if w.Tags != nil { + objectMap["tags"] = w.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for Watcher struct. +func (w *Watcher) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + w.Etag = &etag + } + case "properties": + if v != nil { + var watcherPropertiesFormat WatcherPropertiesFormat + err = json.Unmarshal(*v, &watcherPropertiesFormat) + if err != nil { + return err + } + w.WatcherPropertiesFormat = &watcherPropertiesFormat + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + w.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + w.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + w.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + w.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + w.Tags = tags + } + } + } + + return nil +} + +// WatcherListResult response for ListNetworkWatchers API service call. +type WatcherListResult struct { + autorest.Response `json:"-"` + // Value - List of network watcher resources. + Value *[]Watcher `json:"value,omitempty"` +} + +// WatcherPropertiesFormat the network watcher properties. +type WatcherPropertiesFormat struct { + // ProvisioningState - READ-ONLY; The provisioning state of the network watcher resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` +} + +// WatchersCheckConnectivityFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type WatchersCheckConnectivityFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *WatchersCheckConnectivityFuture) Result(client WatchersClient) (ci ConnectivityInformation, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersCheckConnectivityFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.WatchersCheckConnectivityFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if ci.Response.Response, err = future.GetResult(sender); err == nil && ci.Response.Response.StatusCode != http.StatusNoContent { + ci, err = client.CheckConnectivityResponder(ci.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersCheckConnectivityFuture", "Result", ci.Response.Response, "Failure responding to request") + } + } + return +} + +// WatchersDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type WatchersDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *WatchersDeleteFuture) Result(client WatchersClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.WatchersDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// WatchersGetAzureReachabilityReportFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type WatchersGetAzureReachabilityReportFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *WatchersGetAzureReachabilityReportFuture) Result(client WatchersClient) (arr AzureReachabilityReport, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersGetAzureReachabilityReportFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.WatchersGetAzureReachabilityReportFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if arr.Response.Response, err = future.GetResult(sender); err == nil && arr.Response.Response.StatusCode != http.StatusNoContent { + arr, err = client.GetAzureReachabilityReportResponder(arr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersGetAzureReachabilityReportFuture", "Result", arr.Response.Response, "Failure responding to request") + } + } + return +} + +// WatchersGetFlowLogStatusFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type WatchersGetFlowLogStatusFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *WatchersGetFlowLogStatusFuture) Result(client WatchersClient) (fli FlowLogInformation, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersGetFlowLogStatusFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.WatchersGetFlowLogStatusFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if fli.Response.Response, err = future.GetResult(sender); err == nil && fli.Response.Response.StatusCode != http.StatusNoContent { + fli, err = client.GetFlowLogStatusResponder(fli.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersGetFlowLogStatusFuture", "Result", fli.Response.Response, "Failure responding to request") + } + } + return +} + +// WatchersGetNetworkConfigurationDiagnosticFuture an abstraction for monitoring and retrieving the results +// of a long-running operation. +type WatchersGetNetworkConfigurationDiagnosticFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *WatchersGetNetworkConfigurationDiagnosticFuture) Result(client WatchersClient) (cdr ConfigurationDiagnosticResponse, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersGetNetworkConfigurationDiagnosticFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.WatchersGetNetworkConfigurationDiagnosticFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if cdr.Response.Response, err = future.GetResult(sender); err == nil && cdr.Response.Response.StatusCode != http.StatusNoContent { + cdr, err = client.GetNetworkConfigurationDiagnosticResponder(cdr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersGetNetworkConfigurationDiagnosticFuture", "Result", cdr.Response.Response, "Failure responding to request") + } + } + return +} + +// WatchersGetNextHopFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type WatchersGetNextHopFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *WatchersGetNextHopFuture) Result(client WatchersClient) (nhr NextHopResult, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersGetNextHopFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.WatchersGetNextHopFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if nhr.Response.Response, err = future.GetResult(sender); err == nil && nhr.Response.Response.StatusCode != http.StatusNoContent { + nhr, err = client.GetNextHopResponder(nhr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersGetNextHopFuture", "Result", nhr.Response.Response, "Failure responding to request") + } + } + return +} + +// WatchersGetTroubleshootingFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type WatchersGetTroubleshootingFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *WatchersGetTroubleshootingFuture) Result(client WatchersClient) (tr TroubleshootingResult, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersGetTroubleshootingFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.WatchersGetTroubleshootingFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if tr.Response.Response, err = future.GetResult(sender); err == nil && tr.Response.Response.StatusCode != http.StatusNoContent { + tr, err = client.GetTroubleshootingResponder(tr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersGetTroubleshootingFuture", "Result", tr.Response.Response, "Failure responding to request") + } + } + return +} + +// WatchersGetTroubleshootingResultFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type WatchersGetTroubleshootingResultFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *WatchersGetTroubleshootingResultFuture) Result(client WatchersClient) (tr TroubleshootingResult, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersGetTroubleshootingResultFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.WatchersGetTroubleshootingResultFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if tr.Response.Response, err = future.GetResult(sender); err == nil && tr.Response.Response.StatusCode != http.StatusNoContent { + tr, err = client.GetTroubleshootingResultResponder(tr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersGetTroubleshootingResultFuture", "Result", tr.Response.Response, "Failure responding to request") + } + } + return +} + +// WatchersGetVMSecurityRulesFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type WatchersGetVMSecurityRulesFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *WatchersGetVMSecurityRulesFuture) Result(client WatchersClient) (sgvr SecurityGroupViewResult, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersGetVMSecurityRulesFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.WatchersGetVMSecurityRulesFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if sgvr.Response.Response, err = future.GetResult(sender); err == nil && sgvr.Response.Response.StatusCode != http.StatusNoContent { + sgvr, err = client.GetVMSecurityRulesResponder(sgvr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersGetVMSecurityRulesFuture", "Result", sgvr.Response.Response, "Failure responding to request") + } + } + return +} + +// WatchersListAvailableProvidersFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type WatchersListAvailableProvidersFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *WatchersListAvailableProvidersFuture) Result(client WatchersClient) (apl AvailableProvidersList, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersListAvailableProvidersFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.WatchersListAvailableProvidersFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if apl.Response.Response, err = future.GetResult(sender); err == nil && apl.Response.Response.StatusCode != http.StatusNoContent { + apl, err = client.ListAvailableProvidersResponder(apl.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersListAvailableProvidersFuture", "Result", apl.Response.Response, "Failure responding to request") + } + } + return +} + +// WatchersSetFlowLogConfigurationFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type WatchersSetFlowLogConfigurationFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *WatchersSetFlowLogConfigurationFuture) Result(client WatchersClient) (fli FlowLogInformation, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersSetFlowLogConfigurationFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.WatchersSetFlowLogConfigurationFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if fli.Response.Response, err = future.GetResult(sender); err == nil && fli.Response.Response.StatusCode != http.StatusNoContent { + fli, err = client.SetFlowLogConfigurationResponder(fli.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersSetFlowLogConfigurationFuture", "Result", fli.Response.Response, "Failure responding to request") + } + } + return +} + +// WatchersVerifyIPFlowFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type WatchersVerifyIPFlowFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *WatchersVerifyIPFlowFuture) Result(client WatchersClient) (vifr VerificationIPFlowResult, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersVerifyIPFlowFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.WatchersVerifyIPFlowFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if vifr.Response.Response, err = future.GetResult(sender); err == nil && vifr.Response.Response.StatusCode != http.StatusNoContent { + vifr, err = client.VerifyIPFlowResponder(vifr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersVerifyIPFlowFuture", "Result", vifr.Response.Response, "Failure responding to request") + } + } + return +} + +// WebApplicationFirewallCustomRule defines contents of a web application rule. +type WebApplicationFirewallCustomRule struct { + // Name - The name of the resource that is unique within a policy. This name can be used to access the resource. + Name *string `json:"name,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // Priority - Describes priority of the rule. Rules with a lower value will be evaluated before rules with a higher value. + Priority *int32 `json:"priority,omitempty"` + // RuleType - Describes type of rule. Possible values include: 'WebApplicationFirewallRuleTypeMatchRule', 'WebApplicationFirewallRuleTypeInvalid' + RuleType WebApplicationFirewallRuleType `json:"ruleType,omitempty"` + // MatchConditions - List of match conditions. + MatchConditions *[]MatchCondition `json:"matchConditions,omitempty"` + // Action - Type of Actions. Possible values include: 'WebApplicationFirewallActionAllow', 'WebApplicationFirewallActionBlock', 'WebApplicationFirewallActionLog' + Action WebApplicationFirewallAction `json:"action,omitempty"` +} + +// WebApplicationFirewallPoliciesDeleteFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type WebApplicationFirewallPoliciesDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *WebApplicationFirewallPoliciesDeleteFuture) Result(client WebApplicationFirewallPoliciesClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WebApplicationFirewallPoliciesDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("network.WebApplicationFirewallPoliciesDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// WebApplicationFirewallPolicy defines web application firewall policy. +type WebApplicationFirewallPolicy struct { + autorest.Response `json:"-"` + // WebApplicationFirewallPolicyPropertiesFormat - Properties of the web application firewall policy. + *WebApplicationFirewallPolicyPropertiesFormat `json:"properties,omitempty"` + // Etag - READ-ONLY; A unique read-only string that changes whenever the resource is updated. + Etag *string `json:"etag,omitempty"` + // ID - Resource ID. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type. + Type *string `json:"type,omitempty"` + // Location - Resource location. + Location *string `json:"location,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for WebApplicationFirewallPolicy. +func (wafp WebApplicationFirewallPolicy) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if wafp.WebApplicationFirewallPolicyPropertiesFormat != nil { + objectMap["properties"] = wafp.WebApplicationFirewallPolicyPropertiesFormat + } + if wafp.ID != nil { + objectMap["id"] = wafp.ID + } + if wafp.Location != nil { + objectMap["location"] = wafp.Location + } + if wafp.Tags != nil { + objectMap["tags"] = wafp.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for WebApplicationFirewallPolicy struct. +func (wafp *WebApplicationFirewallPolicy) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var webApplicationFirewallPolicyPropertiesFormat WebApplicationFirewallPolicyPropertiesFormat + err = json.Unmarshal(*v, &webApplicationFirewallPolicyPropertiesFormat) + if err != nil { + return err + } + wafp.WebApplicationFirewallPolicyPropertiesFormat = &webApplicationFirewallPolicyPropertiesFormat + } + case "etag": + if v != nil { + var etag string + err = json.Unmarshal(*v, &etag) + if err != nil { + return err + } + wafp.Etag = &etag + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + wafp.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + wafp.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + wafp.Type = &typeVar + } + case "location": + if v != nil { + var location string + err = json.Unmarshal(*v, &location) + if err != nil { + return err + } + wafp.Location = &location + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + wafp.Tags = tags + } + } + } + + return nil +} + +// WebApplicationFirewallPolicyListResult result of the request to list WebApplicationFirewallPolicies. It +// contains a list of WebApplicationFirewallPolicy objects and a URL link to get the next set of results. +type WebApplicationFirewallPolicyListResult struct { + autorest.Response `json:"-"` + // Value - READ-ONLY; List of WebApplicationFirewallPolicies within a resource group. + Value *[]WebApplicationFirewallPolicy `json:"value,omitempty"` + // NextLink - READ-ONLY; URL to get the next set of WebApplicationFirewallPolicy objects if there are any. + NextLink *string `json:"nextLink,omitempty"` +} + +// WebApplicationFirewallPolicyListResultIterator provides access to a complete listing of +// WebApplicationFirewallPolicy values. +type WebApplicationFirewallPolicyListResultIterator struct { + i int + page WebApplicationFirewallPolicyListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *WebApplicationFirewallPolicyListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WebApplicationFirewallPolicyListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *WebApplicationFirewallPolicyListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter WebApplicationFirewallPolicyListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter WebApplicationFirewallPolicyListResultIterator) Response() WebApplicationFirewallPolicyListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter WebApplicationFirewallPolicyListResultIterator) Value() WebApplicationFirewallPolicy { + if !iter.page.NotDone() { + return WebApplicationFirewallPolicy{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the WebApplicationFirewallPolicyListResultIterator type. +func NewWebApplicationFirewallPolicyListResultIterator(page WebApplicationFirewallPolicyListResultPage) WebApplicationFirewallPolicyListResultIterator { + return WebApplicationFirewallPolicyListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (wafplr WebApplicationFirewallPolicyListResult) IsEmpty() bool { + return wafplr.Value == nil || len(*wafplr.Value) == 0 +} + +// webApplicationFirewallPolicyListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (wafplr WebApplicationFirewallPolicyListResult) webApplicationFirewallPolicyListResultPreparer(ctx context.Context) (*http.Request, error) { + if wafplr.NextLink == nil || len(to.String(wafplr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(wafplr.NextLink))) +} + +// WebApplicationFirewallPolicyListResultPage contains a page of WebApplicationFirewallPolicy values. +type WebApplicationFirewallPolicyListResultPage struct { + fn func(context.Context, WebApplicationFirewallPolicyListResult) (WebApplicationFirewallPolicyListResult, error) + wafplr WebApplicationFirewallPolicyListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *WebApplicationFirewallPolicyListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WebApplicationFirewallPolicyListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.wafplr) + if err != nil { + return err + } + page.wafplr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *WebApplicationFirewallPolicyListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page WebApplicationFirewallPolicyListResultPage) NotDone() bool { + return !page.wafplr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page WebApplicationFirewallPolicyListResultPage) Response() WebApplicationFirewallPolicyListResult { + return page.wafplr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page WebApplicationFirewallPolicyListResultPage) Values() []WebApplicationFirewallPolicy { + if page.wafplr.IsEmpty() { + return nil + } + return *page.wafplr.Value +} + +// Creates a new instance of the WebApplicationFirewallPolicyListResultPage type. +func NewWebApplicationFirewallPolicyListResultPage(getNextPage func(context.Context, WebApplicationFirewallPolicyListResult) (WebApplicationFirewallPolicyListResult, error)) WebApplicationFirewallPolicyListResultPage { + return WebApplicationFirewallPolicyListResultPage{fn: getNextPage} +} + +// WebApplicationFirewallPolicyPropertiesFormat defines web application firewall policy properties. +type WebApplicationFirewallPolicyPropertiesFormat struct { + // PolicySettings - Describes policySettings for policy. + PolicySettings *PolicySettings `json:"policySettings,omitempty"` + // CustomRules - Describes custom rules inside the policy. + CustomRules *[]WebApplicationFirewallCustomRule `json:"customRules,omitempty"` + // ApplicationGateways - READ-ONLY; A collection of references to application gateways. + ApplicationGateways *[]ApplicationGateway `json:"applicationGateways,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the web application firewall policy resource. Possible values include: 'Succeeded', 'Updating', 'Deleting', 'Failed' + ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` + // ResourceState - READ-ONLY; Resource status of the policy. Possible values include: 'WebApplicationFirewallPolicyResourceStateCreating', 'WebApplicationFirewallPolicyResourceStateEnabling', 'WebApplicationFirewallPolicyResourceStateEnabled', 'WebApplicationFirewallPolicyResourceStateDisabling', 'WebApplicationFirewallPolicyResourceStateDisabled', 'WebApplicationFirewallPolicyResourceStateDeleting' + ResourceState WebApplicationFirewallPolicyResourceState `json:"resourceState,omitempty"` + // ManagedRules - Describes the managedRules structure. + ManagedRules *ManagedRulesDefinition `json:"managedRules,omitempty"` + // HTTPListeners - READ-ONLY; A collection of references to application gateway http listeners. + HTTPListeners *[]SubResource `json:"httpListeners,omitempty"` + // PathBasedRules - READ-ONLY; A collection of references to application gateway path rules. + PathBasedRules *[]SubResource `json:"pathBasedRules,omitempty"` +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/natgateways.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/natgateways.go new file mode 100644 index 0000000..61757c9 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/natgateways.go @@ -0,0 +1,577 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// NatGatewaysClient is the network Client +type NatGatewaysClient struct { + BaseClient +} + +// NewNatGatewaysClient creates an instance of the NatGatewaysClient client. +func NewNatGatewaysClient(subscriptionID string) NatGatewaysClient { + return NewNatGatewaysClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewNatGatewaysClientWithBaseURI creates an instance of the NatGatewaysClient client using a custom endpoint. Use +// this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewNatGatewaysClientWithBaseURI(baseURI string, subscriptionID string) NatGatewaysClient { + return NatGatewaysClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a nat gateway. +// Parameters: +// resourceGroupName - the name of the resource group. +// natGatewayName - the name of the nat gateway. +// parameters - parameters supplied to the create or update nat gateway operation. +func (client NatGatewaysClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, natGatewayName string, parameters NatGateway) (result NatGatewaysCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/NatGatewaysClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, natGatewayName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.NatGatewaysClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.NatGatewaysClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client NatGatewaysClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, natGatewayName string, parameters NatGateway) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "natGatewayName": autorest.Encode("path", natGatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/natGateways/{natGatewayName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client NatGatewaysClient) CreateOrUpdateSender(req *http.Request) (future NatGatewaysCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client NatGatewaysClient) CreateOrUpdateResponder(resp *http.Response) (result NatGateway, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified nat gateway. +// Parameters: +// resourceGroupName - the name of the resource group. +// natGatewayName - the name of the nat gateway. +func (client NatGatewaysClient) Delete(ctx context.Context, resourceGroupName string, natGatewayName string) (result NatGatewaysDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/NatGatewaysClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, natGatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.NatGatewaysClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.NatGatewaysClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client NatGatewaysClient) DeletePreparer(ctx context.Context, resourceGroupName string, natGatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "natGatewayName": autorest.Encode("path", natGatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/natGateways/{natGatewayName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client NatGatewaysClient) DeleteSender(req *http.Request) (future NatGatewaysDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client NatGatewaysClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified nat gateway in a specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// natGatewayName - the name of the nat gateway. +// expand - expands referenced resources. +func (client NatGatewaysClient) Get(ctx context.Context, resourceGroupName string, natGatewayName string, expand string) (result NatGateway, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/NatGatewaysClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, natGatewayName, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "network.NatGatewaysClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.NatGatewaysClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.NatGatewaysClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client NatGatewaysClient) GetPreparer(ctx context.Context, resourceGroupName string, natGatewayName string, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "natGatewayName": autorest.Encode("path", natGatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/natGateways/{natGatewayName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client NatGatewaysClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client NatGatewaysClient) GetResponder(resp *http.Response) (result NatGateway, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all nat gateways in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client NatGatewaysClient) List(ctx context.Context, resourceGroupName string) (result NatGatewayListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/NatGatewaysClient.List") + defer func() { + sc := -1 + if result.nglr.Response.Response != nil { + sc = result.nglr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.NatGatewaysClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.nglr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.NatGatewaysClient", "List", resp, "Failure sending request") + return + } + + result.nglr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.NatGatewaysClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client NatGatewaysClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/natGateways", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client NatGatewaysClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client NatGatewaysClient) ListResponder(resp *http.Response) (result NatGatewayListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client NatGatewaysClient) listNextResults(ctx context.Context, lastResults NatGatewayListResult) (result NatGatewayListResult, err error) { + req, err := lastResults.natGatewayListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.NatGatewaysClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.NatGatewaysClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.NatGatewaysClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client NatGatewaysClient) ListComplete(ctx context.Context, resourceGroupName string) (result NatGatewayListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/NatGatewaysClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName) + return +} + +// ListAll gets all the Nat Gateways in a subscription. +func (client NatGatewaysClient) ListAll(ctx context.Context) (result NatGatewayListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/NatGatewaysClient.ListAll") + defer func() { + sc := -1 + if result.nglr.Response.Response != nil { + sc = result.nglr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listAllNextResults + req, err := client.ListAllPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.NatGatewaysClient", "ListAll", nil, "Failure preparing request") + return + } + + resp, err := client.ListAllSender(req) + if err != nil { + result.nglr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.NatGatewaysClient", "ListAll", resp, "Failure sending request") + return + } + + result.nglr, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.NatGatewaysClient", "ListAll", resp, "Failure responding to request") + } + + return +} + +// ListAllPreparer prepares the ListAll request. +func (client NatGatewaysClient) ListAllPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/natGateways", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAllSender sends the ListAll request. The method will close the +// http.Response Body if it receives an error. +func (client NatGatewaysClient) ListAllSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAllResponder handles the response to the ListAll request. The method always +// closes the http.Response Body. +func (client NatGatewaysClient) ListAllResponder(resp *http.Response) (result NatGatewayListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listAllNextResults retrieves the next set of results, if any. +func (client NatGatewaysClient) listAllNextResults(ctx context.Context, lastResults NatGatewayListResult) (result NatGatewayListResult, err error) { + req, err := lastResults.natGatewayListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.NatGatewaysClient", "listAllNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListAllSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.NatGatewaysClient", "listAllNextResults", resp, "Failure sending next results request") + } + result, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.NatGatewaysClient", "listAllNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListAllComplete enumerates all values, automatically crossing page boundaries as required. +func (client NatGatewaysClient) ListAllComplete(ctx context.Context) (result NatGatewayListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/NatGatewaysClient.ListAll") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListAll(ctx) + return +} + +// UpdateTags updates nat gateway tags. +// Parameters: +// resourceGroupName - the name of the resource group. +// natGatewayName - the name of the nat gateway. +// parameters - parameters supplied to update nat gateway tags. +func (client NatGatewaysClient) UpdateTags(ctx context.Context, resourceGroupName string, natGatewayName string, parameters TagsObject) (result NatGateway, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/NatGatewaysClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, natGatewayName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.NatGatewaysClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.NatGatewaysClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.NatGatewaysClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client NatGatewaysClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, natGatewayName string, parameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "natGatewayName": autorest.Encode("path", natGatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/natGateways/{natGatewayName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client NatGatewaysClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client NatGatewaysClient) UpdateTagsResponder(resp *http.Response) (result NatGateway, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/operations.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/operations.go new file mode 100644 index 0000000..9386d3f --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/operations.go @@ -0,0 +1,147 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// OperationsClient is the network Client +type OperationsClient struct { + BaseClient +} + +// NewOperationsClient creates an instance of the OperationsClient client. +func NewOperationsClient(subscriptionID string) OperationsClient { + return NewOperationsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewOperationsClientWithBaseURI creates an instance of the OperationsClient client using a custom endpoint. Use this +// when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewOperationsClientWithBaseURI(baseURI string, subscriptionID string) OperationsClient { + return OperationsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// List lists all of the available Network Rest API operations. +func (client OperationsClient) List(ctx context.Context) (result OperationListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/OperationsClient.List") + defer func() { + sc := -1 + if result.olr.Response.Response != nil { + sc = result.olr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.OperationsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.olr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.OperationsClient", "List", resp, "Failure sending request") + return + } + + result.olr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.OperationsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client OperationsClient) ListPreparer(ctx context.Context) (*http.Request, error) { + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPath("/providers/Microsoft.Network/operations"), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client OperationsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client OperationsClient) ListResponder(resp *http.Response) (result OperationListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client OperationsClient) listNextResults(ctx context.Context, lastResults OperationListResult) (result OperationListResult, err error) { + req, err := lastResults.operationListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.OperationsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.OperationsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.OperationsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client OperationsClient) ListComplete(ctx context.Context) (result OperationListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/OperationsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/p2svpngateways.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/p2svpngateways.go new file mode 100644 index 0000000..302bc01 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/p2svpngateways.go @@ -0,0 +1,809 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// P2sVpnGatewaysClient is the network Client +type P2sVpnGatewaysClient struct { + BaseClient +} + +// NewP2sVpnGatewaysClient creates an instance of the P2sVpnGatewaysClient client. +func NewP2sVpnGatewaysClient(subscriptionID string) P2sVpnGatewaysClient { + return NewP2sVpnGatewaysClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewP2sVpnGatewaysClientWithBaseURI creates an instance of the P2sVpnGatewaysClient client using a custom endpoint. +// Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewP2sVpnGatewaysClientWithBaseURI(baseURI string, subscriptionID string) P2sVpnGatewaysClient { + return P2sVpnGatewaysClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates a virtual wan p2s vpn gateway if it doesn't exist else updates the existing gateway. +// Parameters: +// resourceGroupName - the resource group name of the P2SVpnGateway. +// gatewayName - the name of the gateway. +// p2SVpnGatewayParameters - parameters supplied to create or Update a virtual wan p2s vpn gateway. +func (client P2sVpnGatewaysClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, gatewayName string, p2SVpnGatewayParameters P2SVpnGateway) (result P2sVpnGatewaysCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/P2sVpnGatewaysClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, gatewayName, p2SVpnGatewayParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client P2sVpnGatewaysClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, gatewayName string, p2SVpnGatewayParameters P2SVpnGateway) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "gatewayName": autorest.Encode("path", gatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + p2SVpnGatewayParameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}", pathParameters), + autorest.WithJSON(p2SVpnGatewayParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client P2sVpnGatewaysClient) CreateOrUpdateSender(req *http.Request) (future P2sVpnGatewaysCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client P2sVpnGatewaysClient) CreateOrUpdateResponder(resp *http.Response) (result P2SVpnGateway, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes a virtual wan p2s vpn gateway. +// Parameters: +// resourceGroupName - the resource group name of the P2SVpnGateway. +// gatewayName - the name of the gateway. +func (client P2sVpnGatewaysClient) Delete(ctx context.Context, resourceGroupName string, gatewayName string) (result P2sVpnGatewaysDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/P2sVpnGatewaysClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, gatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client P2sVpnGatewaysClient) DeletePreparer(ctx context.Context, resourceGroupName string, gatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "gatewayName": autorest.Encode("path", gatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client P2sVpnGatewaysClient) DeleteSender(req *http.Request) (future P2sVpnGatewaysDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client P2sVpnGatewaysClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// GenerateVpnProfile generates VPN profile for P2S client of the P2SVpnGateway in the specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// gatewayName - the name of the P2SVpnGateway. +// parameters - parameters supplied to the generate P2SVpnGateway VPN client package operation. +func (client P2sVpnGatewaysClient) GenerateVpnProfile(ctx context.Context, resourceGroupName string, gatewayName string, parameters P2SVpnProfileParameters) (result P2sVpnGatewaysGenerateVpnProfileFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/P2sVpnGatewaysClient.GenerateVpnProfile") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GenerateVpnProfilePreparer(ctx, resourceGroupName, gatewayName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "GenerateVpnProfile", nil, "Failure preparing request") + return + } + + result, err = client.GenerateVpnProfileSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "GenerateVpnProfile", result.Response(), "Failure sending request") + return + } + + return +} + +// GenerateVpnProfilePreparer prepares the GenerateVpnProfile request. +func (client P2sVpnGatewaysClient) GenerateVpnProfilePreparer(ctx context.Context, resourceGroupName string, gatewayName string, parameters P2SVpnProfileParameters) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "gatewayName": autorest.Encode("path", gatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}/generatevpnprofile", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GenerateVpnProfileSender sends the GenerateVpnProfile request. The method will close the +// http.Response Body if it receives an error. +func (client P2sVpnGatewaysClient) GenerateVpnProfileSender(req *http.Request) (future P2sVpnGatewaysGenerateVpnProfileFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// GenerateVpnProfileResponder handles the response to the GenerateVpnProfile request. The method always +// closes the http.Response Body. +func (client P2sVpnGatewaysClient) GenerateVpnProfileResponder(resp *http.Response) (result VpnProfileResponse, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Get retrieves the details of a virtual wan p2s vpn gateway. +// Parameters: +// resourceGroupName - the resource group name of the P2SVpnGateway. +// gatewayName - the name of the gateway. +func (client P2sVpnGatewaysClient) Get(ctx context.Context, resourceGroupName string, gatewayName string) (result P2SVpnGateway, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/P2sVpnGatewaysClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, gatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client P2sVpnGatewaysClient) GetPreparer(ctx context.Context, resourceGroupName string, gatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "gatewayName": autorest.Encode("path", gatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client P2sVpnGatewaysClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client P2sVpnGatewaysClient) GetResponder(resp *http.Response) (result P2SVpnGateway, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetP2sVpnConnectionHealth gets the connection health of P2S clients of the virtual wan P2SVpnGateway in the +// specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// gatewayName - the name of the P2SVpnGateway. +func (client P2sVpnGatewaysClient) GetP2sVpnConnectionHealth(ctx context.Context, resourceGroupName string, gatewayName string) (result P2sVpnGatewaysGetP2sVpnConnectionHealthFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/P2sVpnGatewaysClient.GetP2sVpnConnectionHealth") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetP2sVpnConnectionHealthPreparer(ctx, resourceGroupName, gatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "GetP2sVpnConnectionHealth", nil, "Failure preparing request") + return + } + + result, err = client.GetP2sVpnConnectionHealthSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "GetP2sVpnConnectionHealth", result.Response(), "Failure sending request") + return + } + + return +} + +// GetP2sVpnConnectionHealthPreparer prepares the GetP2sVpnConnectionHealth request. +func (client P2sVpnGatewaysClient) GetP2sVpnConnectionHealthPreparer(ctx context.Context, resourceGroupName string, gatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "gatewayName": autorest.Encode("path", gatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}/getP2sVpnConnectionHealth", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetP2sVpnConnectionHealthSender sends the GetP2sVpnConnectionHealth request. The method will close the +// http.Response Body if it receives an error. +func (client P2sVpnGatewaysClient) GetP2sVpnConnectionHealthSender(req *http.Request) (future P2sVpnGatewaysGetP2sVpnConnectionHealthFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// GetP2sVpnConnectionHealthResponder handles the response to the GetP2sVpnConnectionHealth request. The method always +// closes the http.Response Body. +func (client P2sVpnGatewaysClient) GetP2sVpnConnectionHealthResponder(resp *http.Response) (result P2SVpnGateway, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetP2sVpnConnectionHealthDetailed gets the sas url to get the connection health detail of P2S clients of the virtual +// wan P2SVpnGateway in the specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// gatewayName - the name of the P2SVpnGateway. +// request - request parameters supplied to get p2s vpn connections detailed health. +func (client P2sVpnGatewaysClient) GetP2sVpnConnectionHealthDetailed(ctx context.Context, resourceGroupName string, gatewayName string, request P2SVpnConnectionHealthRequest) (result P2sVpnGatewaysGetP2sVpnConnectionHealthDetailedFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/P2sVpnGatewaysClient.GetP2sVpnConnectionHealthDetailed") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetP2sVpnConnectionHealthDetailedPreparer(ctx, resourceGroupName, gatewayName, request) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "GetP2sVpnConnectionHealthDetailed", nil, "Failure preparing request") + return + } + + result, err = client.GetP2sVpnConnectionHealthDetailedSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "GetP2sVpnConnectionHealthDetailed", result.Response(), "Failure sending request") + return + } + + return +} + +// GetP2sVpnConnectionHealthDetailedPreparer prepares the GetP2sVpnConnectionHealthDetailed request. +func (client P2sVpnGatewaysClient) GetP2sVpnConnectionHealthDetailedPreparer(ctx context.Context, resourceGroupName string, gatewayName string, request P2SVpnConnectionHealthRequest) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "gatewayName": autorest.Encode("path", gatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}/getP2sVpnConnectionHealthDetailed", pathParameters), + autorest.WithJSON(request), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetP2sVpnConnectionHealthDetailedSender sends the GetP2sVpnConnectionHealthDetailed request. The method will close the +// http.Response Body if it receives an error. +func (client P2sVpnGatewaysClient) GetP2sVpnConnectionHealthDetailedSender(req *http.Request) (future P2sVpnGatewaysGetP2sVpnConnectionHealthDetailedFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// GetP2sVpnConnectionHealthDetailedResponder handles the response to the GetP2sVpnConnectionHealthDetailed request. The method always +// closes the http.Response Body. +func (client P2sVpnGatewaysClient) GetP2sVpnConnectionHealthDetailedResponder(resp *http.Response) (result P2SVpnConnectionHealth, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List lists all the P2SVpnGateways in a subscription. +func (client P2sVpnGatewaysClient) List(ctx context.Context) (result ListP2SVpnGatewaysResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/P2sVpnGatewaysClient.List") + defer func() { + sc := -1 + if result.lpvgr.Response.Response != nil { + sc = result.lpvgr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.lpvgr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "List", resp, "Failure sending request") + return + } + + result.lpvgr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client P2sVpnGatewaysClient) ListPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/p2svpnGateways", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client P2sVpnGatewaysClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client P2sVpnGatewaysClient) ListResponder(resp *http.Response) (result ListP2SVpnGatewaysResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client P2sVpnGatewaysClient) listNextResults(ctx context.Context, lastResults ListP2SVpnGatewaysResult) (result ListP2SVpnGatewaysResult, err error) { + req, err := lastResults.listP2SVpnGatewaysResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client P2sVpnGatewaysClient) ListComplete(ctx context.Context) (result ListP2SVpnGatewaysResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/P2sVpnGatewaysClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx) + return +} + +// ListByResourceGroup lists all the P2SVpnGateways in a resource group. +// Parameters: +// resourceGroupName - the resource group name of the P2SVpnGateway. +func (client P2sVpnGatewaysClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result ListP2SVpnGatewaysResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/P2sVpnGatewaysClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.lpvgr.Response.Response != nil { + sc = result.lpvgr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listByResourceGroupNextResults + req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "ListByResourceGroup", nil, "Failure preparing request") + return + } + + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.lpvgr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "ListByResourceGroup", resp, "Failure sending request") + return + } + + result.lpvgr, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "ListByResourceGroup", resp, "Failure responding to request") + } + + return +} + +// ListByResourceGroupPreparer prepares the ListByResourceGroup request. +func (client P2sVpnGatewaysClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the +// http.Response Body if it receives an error. +func (client P2sVpnGatewaysClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always +// closes the http.Response Body. +func (client P2sVpnGatewaysClient) ListByResourceGroupResponder(resp *http.Response) (result ListP2SVpnGatewaysResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listByResourceGroupNextResults retrieves the next set of results, if any. +func (client P2sVpnGatewaysClient) listByResourceGroupNextResults(ctx context.Context, lastResults ListP2SVpnGatewaysResult) (result ListP2SVpnGatewaysResult, err error) { + req, err := lastResults.listP2SVpnGatewaysResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "listByResourceGroupNextResults", resp, "Failure sending next results request") + } + result, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. +func (client P2sVpnGatewaysClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result ListP2SVpnGatewaysResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/P2sVpnGatewaysClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListByResourceGroup(ctx, resourceGroupName) + return +} + +// UpdateTags updates virtual wan p2s vpn gateway tags. +// Parameters: +// resourceGroupName - the resource group name of the P2SVpnGateway. +// gatewayName - the name of the gateway. +// p2SVpnGatewayParameters - parameters supplied to update a virtual wan p2s vpn gateway tags. +func (client P2sVpnGatewaysClient) UpdateTags(ctx context.Context, resourceGroupName string, gatewayName string, p2SVpnGatewayParameters TagsObject) (result P2SVpnGateway, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/P2sVpnGatewaysClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, gatewayName, p2SVpnGatewayParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.P2sVpnGatewaysClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client P2sVpnGatewaysClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, gatewayName string, p2SVpnGatewayParameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "gatewayName": autorest.Encode("path", gatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/p2svpnGateways/{gatewayName}", pathParameters), + autorest.WithJSON(p2SVpnGatewayParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client P2sVpnGatewaysClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client P2sVpnGatewaysClient) UpdateTagsResponder(resp *http.Response) (result P2SVpnGateway, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/packetcaptures.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/packetcaptures.go new file mode 100644 index 0000000..21b0f8a --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/packetcaptures.go @@ -0,0 +1,519 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// PacketCapturesClient is the network Client +type PacketCapturesClient struct { + BaseClient +} + +// NewPacketCapturesClient creates an instance of the PacketCapturesClient client. +func NewPacketCapturesClient(subscriptionID string) PacketCapturesClient { + return NewPacketCapturesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewPacketCapturesClientWithBaseURI creates an instance of the PacketCapturesClient client using a custom endpoint. +// Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewPacketCapturesClientWithBaseURI(baseURI string, subscriptionID string) PacketCapturesClient { + return PacketCapturesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// Create create and start a packet capture on the specified VM. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkWatcherName - the name of the network watcher. +// packetCaptureName - the name of the packet capture session. +// parameters - parameters that define the create packet capture operation. +func (client PacketCapturesClient) Create(ctx context.Context, resourceGroupName string, networkWatcherName string, packetCaptureName string, parameters PacketCapture) (result PacketCapturesCreateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PacketCapturesClient.Create") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.PacketCaptureParameters", Name: validation.Null, Rule: true, + Chain: []validation.Constraint{{Target: "parameters.PacketCaptureParameters.Target", Name: validation.Null, Rule: true, Chain: nil}, + {Target: "parameters.PacketCaptureParameters.StorageLocation", Name: validation.Null, Rule: true, Chain: nil}, + }}}}}); err != nil { + return result, validation.NewError("network.PacketCapturesClient", "Create", err.Error()) + } + + req, err := client.CreatePreparer(ctx, resourceGroupName, networkWatcherName, packetCaptureName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PacketCapturesClient", "Create", nil, "Failure preparing request") + return + } + + result, err = client.CreateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PacketCapturesClient", "Create", result.Response(), "Failure sending request") + return + } + + return +} + +// CreatePreparer prepares the Create request. +func (client PacketCapturesClient) CreatePreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, packetCaptureName string, parameters PacketCapture) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "packetCaptureName": autorest.Encode("path", packetCaptureName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateSender sends the Create request. The method will close the +// http.Response Body if it receives an error. +func (client PacketCapturesClient) CreateSender(req *http.Request) (future PacketCapturesCreateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateResponder handles the response to the Create request. The method always +// closes the http.Response Body. +func (client PacketCapturesClient) CreateResponder(resp *http.Response) (result PacketCaptureResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified packet capture session. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkWatcherName - the name of the network watcher. +// packetCaptureName - the name of the packet capture session. +func (client PacketCapturesClient) Delete(ctx context.Context, resourceGroupName string, networkWatcherName string, packetCaptureName string) (result PacketCapturesDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PacketCapturesClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, networkWatcherName, packetCaptureName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PacketCapturesClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PacketCapturesClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client PacketCapturesClient) DeletePreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, packetCaptureName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "packetCaptureName": autorest.Encode("path", packetCaptureName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client PacketCapturesClient) DeleteSender(req *http.Request) (future PacketCapturesDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client PacketCapturesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets a packet capture session by name. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkWatcherName - the name of the network watcher. +// packetCaptureName - the name of the packet capture session. +func (client PacketCapturesClient) Get(ctx context.Context, resourceGroupName string, networkWatcherName string, packetCaptureName string) (result PacketCaptureResult, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PacketCapturesClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, networkWatcherName, packetCaptureName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PacketCapturesClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PacketCapturesClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PacketCapturesClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client PacketCapturesClient) GetPreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, packetCaptureName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "packetCaptureName": autorest.Encode("path", packetCaptureName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client PacketCapturesClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client PacketCapturesClient) GetResponder(resp *http.Response) (result PacketCaptureResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetStatus query the status of a running packet capture session. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkWatcherName - the name of the Network Watcher resource. +// packetCaptureName - the name given to the packet capture session. +func (client PacketCapturesClient) GetStatus(ctx context.Context, resourceGroupName string, networkWatcherName string, packetCaptureName string) (result PacketCapturesGetStatusFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PacketCapturesClient.GetStatus") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetStatusPreparer(ctx, resourceGroupName, networkWatcherName, packetCaptureName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PacketCapturesClient", "GetStatus", nil, "Failure preparing request") + return + } + + result, err = client.GetStatusSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PacketCapturesClient", "GetStatus", result.Response(), "Failure sending request") + return + } + + return +} + +// GetStatusPreparer prepares the GetStatus request. +func (client PacketCapturesClient) GetStatusPreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, packetCaptureName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "packetCaptureName": autorest.Encode("path", packetCaptureName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}/queryStatus", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetStatusSender sends the GetStatus request. The method will close the +// http.Response Body if it receives an error. +func (client PacketCapturesClient) GetStatusSender(req *http.Request) (future PacketCapturesGetStatusFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// GetStatusResponder handles the response to the GetStatus request. The method always +// closes the http.Response Body. +func (client PacketCapturesClient) GetStatusResponder(resp *http.Response) (result PacketCaptureQueryStatusResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List lists all packet capture sessions within the specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkWatcherName - the name of the Network Watcher resource. +func (client PacketCapturesClient) List(ctx context.Context, resourceGroupName string, networkWatcherName string) (result PacketCaptureListResult, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PacketCapturesClient.List") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ListPreparer(ctx, resourceGroupName, networkWatcherName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PacketCapturesClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PacketCapturesClient", "List", resp, "Failure sending request") + return + } + + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PacketCapturesClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client PacketCapturesClient) ListPreparer(ctx context.Context, resourceGroupName string, networkWatcherName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client PacketCapturesClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client PacketCapturesClient) ListResponder(resp *http.Response) (result PacketCaptureListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Stop stops a specified packet capture session. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkWatcherName - the name of the network watcher. +// packetCaptureName - the name of the packet capture session. +func (client PacketCapturesClient) Stop(ctx context.Context, resourceGroupName string, networkWatcherName string, packetCaptureName string) (result PacketCapturesStopFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PacketCapturesClient.Stop") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.StopPreparer(ctx, resourceGroupName, networkWatcherName, packetCaptureName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PacketCapturesClient", "Stop", nil, "Failure preparing request") + return + } + + result, err = client.StopSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PacketCapturesClient", "Stop", result.Response(), "Failure sending request") + return + } + + return +} + +// StopPreparer prepares the Stop request. +func (client PacketCapturesClient) StopPreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, packetCaptureName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "packetCaptureName": autorest.Encode("path", packetCaptureName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}/stop", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// StopSender sends the Stop request. The method will close the +// http.Response Body if it receives an error. +func (client PacketCapturesClient) StopSender(req *http.Request) (future PacketCapturesStopFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// StopResponder handles the response to the Stop request. The method always +// closes the http.Response Body. +func (client PacketCapturesClient) StopResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByClosing()) + result.Response = resp + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/peerexpressroutecircuitconnections.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/peerexpressroutecircuitconnections.go new file mode 100644 index 0000000..a912414 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/peerexpressroutecircuitconnections.go @@ -0,0 +1,240 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// PeerExpressRouteCircuitConnectionsClient is the network Client +type PeerExpressRouteCircuitConnectionsClient struct { + BaseClient +} + +// NewPeerExpressRouteCircuitConnectionsClient creates an instance of the PeerExpressRouteCircuitConnectionsClient +// client. +func NewPeerExpressRouteCircuitConnectionsClient(subscriptionID string) PeerExpressRouteCircuitConnectionsClient { + return NewPeerExpressRouteCircuitConnectionsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewPeerExpressRouteCircuitConnectionsClientWithBaseURI creates an instance of the +// PeerExpressRouteCircuitConnectionsClient client using a custom endpoint. Use this when interacting with an Azure +// cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewPeerExpressRouteCircuitConnectionsClientWithBaseURI(baseURI string, subscriptionID string) PeerExpressRouteCircuitConnectionsClient { + return PeerExpressRouteCircuitConnectionsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// Get gets the specified Peer Express Route Circuit Connection from the specified express route circuit. +// Parameters: +// resourceGroupName - the name of the resource group. +// circuitName - the name of the express route circuit. +// peeringName - the name of the peering. +// connectionName - the name of the peer express route circuit connection. +func (client PeerExpressRouteCircuitConnectionsClient) Get(ctx context.Context, resourceGroupName string, circuitName string, peeringName string, connectionName string) (result PeerExpressRouteCircuitConnection, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PeerExpressRouteCircuitConnectionsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, circuitName, peeringName, connectionName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PeerExpressRouteCircuitConnectionsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PeerExpressRouteCircuitConnectionsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PeerExpressRouteCircuitConnectionsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client PeerExpressRouteCircuitConnectionsClient) GetPreparer(ctx context.Context, resourceGroupName string, circuitName string, peeringName string, connectionName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "circuitName": autorest.Encode("path", circuitName), + "connectionName": autorest.Encode("path", connectionName), + "peeringName": autorest.Encode("path", peeringName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/peerConnections/{connectionName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client PeerExpressRouteCircuitConnectionsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client PeerExpressRouteCircuitConnectionsClient) GetResponder(resp *http.Response) (result PeerExpressRouteCircuitConnection, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all global reach peer connections associated with a private peering in an express route circuit. +// Parameters: +// resourceGroupName - the name of the resource group. +// circuitName - the name of the circuit. +// peeringName - the name of the peering. +func (client PeerExpressRouteCircuitConnectionsClient) List(ctx context.Context, resourceGroupName string, circuitName string, peeringName string) (result PeerExpressRouteCircuitConnectionListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PeerExpressRouteCircuitConnectionsClient.List") + defer func() { + sc := -1 + if result.percclr.Response.Response != nil { + sc = result.percclr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, circuitName, peeringName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PeerExpressRouteCircuitConnectionsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.percclr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PeerExpressRouteCircuitConnectionsClient", "List", resp, "Failure sending request") + return + } + + result.percclr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PeerExpressRouteCircuitConnectionsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client PeerExpressRouteCircuitConnectionsClient) ListPreparer(ctx context.Context, resourceGroupName string, circuitName string, peeringName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "circuitName": autorest.Encode("path", circuitName), + "peeringName": autorest.Encode("path", peeringName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/peerConnections", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client PeerExpressRouteCircuitConnectionsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client PeerExpressRouteCircuitConnectionsClient) ListResponder(resp *http.Response) (result PeerExpressRouteCircuitConnectionListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client PeerExpressRouteCircuitConnectionsClient) listNextResults(ctx context.Context, lastResults PeerExpressRouteCircuitConnectionListResult) (result PeerExpressRouteCircuitConnectionListResult, err error) { + req, err := lastResults.peerExpressRouteCircuitConnectionListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.PeerExpressRouteCircuitConnectionsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.PeerExpressRouteCircuitConnectionsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PeerExpressRouteCircuitConnectionsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client PeerExpressRouteCircuitConnectionsClient) ListComplete(ctx context.Context, resourceGroupName string, circuitName string, peeringName string) (result PeerExpressRouteCircuitConnectionListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PeerExpressRouteCircuitConnectionsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, circuitName, peeringName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/privateendpoints.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/privateendpoints.go new file mode 100644 index 0000000..0f353eb --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/privateendpoints.go @@ -0,0 +1,499 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// PrivateEndpointsClient is the network Client +type PrivateEndpointsClient struct { + BaseClient +} + +// NewPrivateEndpointsClient creates an instance of the PrivateEndpointsClient client. +func NewPrivateEndpointsClient(subscriptionID string) PrivateEndpointsClient { + return NewPrivateEndpointsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewPrivateEndpointsClientWithBaseURI creates an instance of the PrivateEndpointsClient client using a custom +// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure +// stack). +func NewPrivateEndpointsClientWithBaseURI(baseURI string, subscriptionID string) PrivateEndpointsClient { + return PrivateEndpointsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates an private endpoint in the specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// privateEndpointName - the name of the private endpoint. +// parameters - parameters supplied to the create or update private endpoint operation. +func (client PrivateEndpointsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, privateEndpointName string, parameters PrivateEndpoint) (result PrivateEndpointsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateEndpointsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, privateEndpointName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateEndpointsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateEndpointsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client PrivateEndpointsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, privateEndpointName string, parameters PrivateEndpoint) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "privateEndpointName": autorest.Encode("path", privateEndpointName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client PrivateEndpointsClient) CreateOrUpdateSender(req *http.Request) (future PrivateEndpointsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client PrivateEndpointsClient) CreateOrUpdateResponder(resp *http.Response) (result PrivateEndpoint, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified private endpoint. +// Parameters: +// resourceGroupName - the name of the resource group. +// privateEndpointName - the name of the private endpoint. +func (client PrivateEndpointsClient) Delete(ctx context.Context, resourceGroupName string, privateEndpointName string) (result PrivateEndpointsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateEndpointsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, privateEndpointName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateEndpointsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateEndpointsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client PrivateEndpointsClient) DeletePreparer(ctx context.Context, resourceGroupName string, privateEndpointName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "privateEndpointName": autorest.Encode("path", privateEndpointName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client PrivateEndpointsClient) DeleteSender(req *http.Request) (future PrivateEndpointsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client PrivateEndpointsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified private endpoint by resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// privateEndpointName - the name of the private endpoint. +// expand - expands referenced resources. +func (client PrivateEndpointsClient) Get(ctx context.Context, resourceGroupName string, privateEndpointName string, expand string) (result PrivateEndpoint, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateEndpointsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, privateEndpointName, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateEndpointsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PrivateEndpointsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateEndpointsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client PrivateEndpointsClient) GetPreparer(ctx context.Context, resourceGroupName string, privateEndpointName string, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "privateEndpointName": autorest.Encode("path", privateEndpointName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client PrivateEndpointsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client PrivateEndpointsClient) GetResponder(resp *http.Response) (result PrivateEndpoint, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all private endpoints in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client PrivateEndpointsClient) List(ctx context.Context, resourceGroupName string) (result PrivateEndpointListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateEndpointsClient.List") + defer func() { + sc := -1 + if result.pelr.Response.Response != nil { + sc = result.pelr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateEndpointsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.pelr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PrivateEndpointsClient", "List", resp, "Failure sending request") + return + } + + result.pelr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateEndpointsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client PrivateEndpointsClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client PrivateEndpointsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client PrivateEndpointsClient) ListResponder(resp *http.Response) (result PrivateEndpointListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client PrivateEndpointsClient) listNextResults(ctx context.Context, lastResults PrivateEndpointListResult) (result PrivateEndpointListResult, err error) { + req, err := lastResults.privateEndpointListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.PrivateEndpointsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.PrivateEndpointsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateEndpointsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client PrivateEndpointsClient) ListComplete(ctx context.Context, resourceGroupName string) (result PrivateEndpointListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateEndpointsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName) + return +} + +// ListBySubscription gets all private endpoints in a subscription. +func (client PrivateEndpointsClient) ListBySubscription(ctx context.Context) (result PrivateEndpointListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateEndpointsClient.ListBySubscription") + defer func() { + sc := -1 + if result.pelr.Response.Response != nil { + sc = result.pelr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listBySubscriptionNextResults + req, err := client.ListBySubscriptionPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateEndpointsClient", "ListBySubscription", nil, "Failure preparing request") + return + } + + resp, err := client.ListBySubscriptionSender(req) + if err != nil { + result.pelr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PrivateEndpointsClient", "ListBySubscription", resp, "Failure sending request") + return + } + + result.pelr, err = client.ListBySubscriptionResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateEndpointsClient", "ListBySubscription", resp, "Failure responding to request") + } + + return +} + +// ListBySubscriptionPreparer prepares the ListBySubscription request. +func (client PrivateEndpointsClient) ListBySubscriptionPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/privateEndpoints", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListBySubscriptionSender sends the ListBySubscription request. The method will close the +// http.Response Body if it receives an error. +func (client PrivateEndpointsClient) ListBySubscriptionSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListBySubscriptionResponder handles the response to the ListBySubscription request. The method always +// closes the http.Response Body. +func (client PrivateEndpointsClient) ListBySubscriptionResponder(resp *http.Response) (result PrivateEndpointListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listBySubscriptionNextResults retrieves the next set of results, if any. +func (client PrivateEndpointsClient) listBySubscriptionNextResults(ctx context.Context, lastResults PrivateEndpointListResult) (result PrivateEndpointListResult, err error) { + req, err := lastResults.privateEndpointListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.PrivateEndpointsClient", "listBySubscriptionNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListBySubscriptionSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.PrivateEndpointsClient", "listBySubscriptionNextResults", resp, "Failure sending next results request") + } + result, err = client.ListBySubscriptionResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateEndpointsClient", "listBySubscriptionNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListBySubscriptionComplete enumerates all values, automatically crossing page boundaries as required. +func (client PrivateEndpointsClient) ListBySubscriptionComplete(ctx context.Context) (result PrivateEndpointListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateEndpointsClient.ListBySubscription") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListBySubscription(ctx) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/privatelinkservices.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/privatelinkservices.go new file mode 100644 index 0000000..f0e01c4 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/privatelinkservices.go @@ -0,0 +1,1242 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// PrivateLinkServicesClient is the network Client +type PrivateLinkServicesClient struct { + BaseClient +} + +// NewPrivateLinkServicesClient creates an instance of the PrivateLinkServicesClient client. +func NewPrivateLinkServicesClient(subscriptionID string) PrivateLinkServicesClient { + return NewPrivateLinkServicesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewPrivateLinkServicesClientWithBaseURI creates an instance of the PrivateLinkServicesClient client using a custom +// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure +// stack). +func NewPrivateLinkServicesClientWithBaseURI(baseURI string, subscriptionID string) PrivateLinkServicesClient { + return PrivateLinkServicesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CheckPrivateLinkServiceVisibility checks whether the subscription is visible to private link service. +// Parameters: +// location - the location of the domain name. +// parameters - the request body of CheckPrivateLinkService API call. +func (client PrivateLinkServicesClient) CheckPrivateLinkServiceVisibility(ctx context.Context, location string, parameters CheckPrivateLinkServiceVisibilityRequest) (result PrivateLinkServiceVisibility, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateLinkServicesClient.CheckPrivateLinkServiceVisibility") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CheckPrivateLinkServiceVisibilityPreparer(ctx, location, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "CheckPrivateLinkServiceVisibility", nil, "Failure preparing request") + return + } + + resp, err := client.CheckPrivateLinkServiceVisibilitySender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "CheckPrivateLinkServiceVisibility", resp, "Failure sending request") + return + } + + result, err = client.CheckPrivateLinkServiceVisibilityResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "CheckPrivateLinkServiceVisibility", resp, "Failure responding to request") + } + + return +} + +// CheckPrivateLinkServiceVisibilityPreparer prepares the CheckPrivateLinkServiceVisibility request. +func (client PrivateLinkServicesClient) CheckPrivateLinkServiceVisibilityPreparer(ctx context.Context, location string, parameters CheckPrivateLinkServiceVisibilityRequest) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "location": autorest.Encode("path", location), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/checkPrivateLinkServiceVisibility", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CheckPrivateLinkServiceVisibilitySender sends the CheckPrivateLinkServiceVisibility request. The method will close the +// http.Response Body if it receives an error. +func (client PrivateLinkServicesClient) CheckPrivateLinkServiceVisibilitySender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// CheckPrivateLinkServiceVisibilityResponder handles the response to the CheckPrivateLinkServiceVisibility request. The method always +// closes the http.Response Body. +func (client PrivateLinkServicesClient) CheckPrivateLinkServiceVisibilityResponder(resp *http.Response) (result PrivateLinkServiceVisibility, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// CheckPrivateLinkServiceVisibilityByResourceGroup checks whether the subscription is visible to private link service +// in the specified resource group. +// Parameters: +// location - the location of the domain name. +// resourceGroupName - the name of the resource group. +// parameters - the request body of CheckPrivateLinkService API call. +func (client PrivateLinkServicesClient) CheckPrivateLinkServiceVisibilityByResourceGroup(ctx context.Context, location string, resourceGroupName string, parameters CheckPrivateLinkServiceVisibilityRequest) (result PrivateLinkServiceVisibility, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateLinkServicesClient.CheckPrivateLinkServiceVisibilityByResourceGroup") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CheckPrivateLinkServiceVisibilityByResourceGroupPreparer(ctx, location, resourceGroupName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "CheckPrivateLinkServiceVisibilityByResourceGroup", nil, "Failure preparing request") + return + } + + resp, err := client.CheckPrivateLinkServiceVisibilityByResourceGroupSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "CheckPrivateLinkServiceVisibilityByResourceGroup", resp, "Failure sending request") + return + } + + result, err = client.CheckPrivateLinkServiceVisibilityByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "CheckPrivateLinkServiceVisibilityByResourceGroup", resp, "Failure responding to request") + } + + return +} + +// CheckPrivateLinkServiceVisibilityByResourceGroupPreparer prepares the CheckPrivateLinkServiceVisibilityByResourceGroup request. +func (client PrivateLinkServicesClient) CheckPrivateLinkServiceVisibilityByResourceGroupPreparer(ctx context.Context, location string, resourceGroupName string, parameters CheckPrivateLinkServiceVisibilityRequest) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "location": autorest.Encode("path", location), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/locations/{location}/checkPrivateLinkServiceVisibility", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CheckPrivateLinkServiceVisibilityByResourceGroupSender sends the CheckPrivateLinkServiceVisibilityByResourceGroup request. The method will close the +// http.Response Body if it receives an error. +func (client PrivateLinkServicesClient) CheckPrivateLinkServiceVisibilityByResourceGroupSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// CheckPrivateLinkServiceVisibilityByResourceGroupResponder handles the response to the CheckPrivateLinkServiceVisibilityByResourceGroup request. The method always +// closes the http.Response Body. +func (client PrivateLinkServicesClient) CheckPrivateLinkServiceVisibilityByResourceGroupResponder(resp *http.Response) (result PrivateLinkServiceVisibility, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// CreateOrUpdate creates or updates an private link service in the specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// serviceName - the name of the private link service. +// parameters - parameters supplied to the create or update private link service operation. +func (client PrivateLinkServicesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, serviceName string, parameters PrivateLinkService) (result PrivateLinkServicesCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateLinkServicesClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, serviceName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client PrivateLinkServicesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, serviceName string, parameters PrivateLinkService) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "serviceName": autorest.Encode("path", serviceName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client PrivateLinkServicesClient) CreateOrUpdateSender(req *http.Request) (future PrivateLinkServicesCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client PrivateLinkServicesClient) CreateOrUpdateResponder(resp *http.Response) (result PrivateLinkService, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified private link service. +// Parameters: +// resourceGroupName - the name of the resource group. +// serviceName - the name of the private link service. +func (client PrivateLinkServicesClient) Delete(ctx context.Context, resourceGroupName string, serviceName string) (result PrivateLinkServicesDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateLinkServicesClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, serviceName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client PrivateLinkServicesClient) DeletePreparer(ctx context.Context, resourceGroupName string, serviceName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "serviceName": autorest.Encode("path", serviceName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client PrivateLinkServicesClient) DeleteSender(req *http.Request) (future PrivateLinkServicesDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client PrivateLinkServicesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// DeletePrivateEndpointConnection delete private end point connection for a private link service in a subscription. +// Parameters: +// resourceGroupName - the name of the resource group. +// serviceName - the name of the private link service. +// peConnectionName - the name of the private end point connection. +func (client PrivateLinkServicesClient) DeletePrivateEndpointConnection(ctx context.Context, resourceGroupName string, serviceName string, peConnectionName string) (result PrivateLinkServicesDeletePrivateEndpointConnectionFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateLinkServicesClient.DeletePrivateEndpointConnection") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePrivateEndpointConnectionPreparer(ctx, resourceGroupName, serviceName, peConnectionName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "DeletePrivateEndpointConnection", nil, "Failure preparing request") + return + } + + result, err = client.DeletePrivateEndpointConnectionSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "DeletePrivateEndpointConnection", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePrivateEndpointConnectionPreparer prepares the DeletePrivateEndpointConnection request. +func (client PrivateLinkServicesClient) DeletePrivateEndpointConnectionPreparer(ctx context.Context, resourceGroupName string, serviceName string, peConnectionName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "peConnectionName": autorest.Encode("path", peConnectionName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "serviceName": autorest.Encode("path", serviceName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}/privateEndpointConnections/{peConnectionName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeletePrivateEndpointConnectionSender sends the DeletePrivateEndpointConnection request. The method will close the +// http.Response Body if it receives an error. +func (client PrivateLinkServicesClient) DeletePrivateEndpointConnectionSender(req *http.Request) (future PrivateLinkServicesDeletePrivateEndpointConnectionFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeletePrivateEndpointConnectionResponder handles the response to the DeletePrivateEndpointConnection request. The method always +// closes the http.Response Body. +func (client PrivateLinkServicesClient) DeletePrivateEndpointConnectionResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified private link service by resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// serviceName - the name of the private link service. +// expand - expands referenced resources. +func (client PrivateLinkServicesClient) Get(ctx context.Context, resourceGroupName string, serviceName string, expand string) (result PrivateLinkService, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateLinkServicesClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, serviceName, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client PrivateLinkServicesClient) GetPreparer(ctx context.Context, resourceGroupName string, serviceName string, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "serviceName": autorest.Encode("path", serviceName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client PrivateLinkServicesClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client PrivateLinkServicesClient) GetResponder(resp *http.Response) (result PrivateLinkService, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetPrivateEndpointConnection get the specific private end point connection by specific private link service in the +// resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// serviceName - the name of the private link service. +// peConnectionName - the name of the private end point connection. +// expand - expands referenced resources. +func (client PrivateLinkServicesClient) GetPrivateEndpointConnection(ctx context.Context, resourceGroupName string, serviceName string, peConnectionName string, expand string) (result PrivateEndpointConnection, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateLinkServicesClient.GetPrivateEndpointConnection") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPrivateEndpointConnectionPreparer(ctx, resourceGroupName, serviceName, peConnectionName, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "GetPrivateEndpointConnection", nil, "Failure preparing request") + return + } + + resp, err := client.GetPrivateEndpointConnectionSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "GetPrivateEndpointConnection", resp, "Failure sending request") + return + } + + result, err = client.GetPrivateEndpointConnectionResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "GetPrivateEndpointConnection", resp, "Failure responding to request") + } + + return +} + +// GetPrivateEndpointConnectionPreparer prepares the GetPrivateEndpointConnection request. +func (client PrivateLinkServicesClient) GetPrivateEndpointConnectionPreparer(ctx context.Context, resourceGroupName string, serviceName string, peConnectionName string, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "peConnectionName": autorest.Encode("path", peConnectionName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "serviceName": autorest.Encode("path", serviceName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}/privateEndpointConnections/{peConnectionName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetPrivateEndpointConnectionSender sends the GetPrivateEndpointConnection request. The method will close the +// http.Response Body if it receives an error. +func (client PrivateLinkServicesClient) GetPrivateEndpointConnectionSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetPrivateEndpointConnectionResponder handles the response to the GetPrivateEndpointConnection request. The method always +// closes the http.Response Body. +func (client PrivateLinkServicesClient) GetPrivateEndpointConnectionResponder(resp *http.Response) (result PrivateEndpointConnection, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all private link services in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client PrivateLinkServicesClient) List(ctx context.Context, resourceGroupName string) (result PrivateLinkServiceListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateLinkServicesClient.List") + defer func() { + sc := -1 + if result.plslr.Response.Response != nil { + sc = result.plslr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.plslr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "List", resp, "Failure sending request") + return + } + + result.plslr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client PrivateLinkServicesClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client PrivateLinkServicesClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client PrivateLinkServicesClient) ListResponder(resp *http.Response) (result PrivateLinkServiceListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client PrivateLinkServicesClient) listNextResults(ctx context.Context, lastResults PrivateLinkServiceListResult) (result PrivateLinkServiceListResult, err error) { + req, err := lastResults.privateLinkServiceListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client PrivateLinkServicesClient) ListComplete(ctx context.Context, resourceGroupName string) (result PrivateLinkServiceListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateLinkServicesClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName) + return +} + +// ListAutoApprovedPrivateLinkServices returns all of the private link service ids that can be linked to a Private +// Endpoint with auto approved in this subscription in this region. +// Parameters: +// location - the location of the domain name. +func (client PrivateLinkServicesClient) ListAutoApprovedPrivateLinkServices(ctx context.Context, location string) (result AutoApprovedPrivateLinkServicesResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateLinkServicesClient.ListAutoApprovedPrivateLinkServices") + defer func() { + sc := -1 + if result.aaplsr.Response.Response != nil { + sc = result.aaplsr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listAutoApprovedPrivateLinkServicesNextResults + req, err := client.ListAutoApprovedPrivateLinkServicesPreparer(ctx, location) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "ListAutoApprovedPrivateLinkServices", nil, "Failure preparing request") + return + } + + resp, err := client.ListAutoApprovedPrivateLinkServicesSender(req) + if err != nil { + result.aaplsr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "ListAutoApprovedPrivateLinkServices", resp, "Failure sending request") + return + } + + result.aaplsr, err = client.ListAutoApprovedPrivateLinkServicesResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "ListAutoApprovedPrivateLinkServices", resp, "Failure responding to request") + } + + return +} + +// ListAutoApprovedPrivateLinkServicesPreparer prepares the ListAutoApprovedPrivateLinkServices request. +func (client PrivateLinkServicesClient) ListAutoApprovedPrivateLinkServicesPreparer(ctx context.Context, location string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "location": autorest.Encode("path", location), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/autoApprovedPrivateLinkServices", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAutoApprovedPrivateLinkServicesSender sends the ListAutoApprovedPrivateLinkServices request. The method will close the +// http.Response Body if it receives an error. +func (client PrivateLinkServicesClient) ListAutoApprovedPrivateLinkServicesSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAutoApprovedPrivateLinkServicesResponder handles the response to the ListAutoApprovedPrivateLinkServices request. The method always +// closes the http.Response Body. +func (client PrivateLinkServicesClient) ListAutoApprovedPrivateLinkServicesResponder(resp *http.Response) (result AutoApprovedPrivateLinkServicesResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listAutoApprovedPrivateLinkServicesNextResults retrieves the next set of results, if any. +func (client PrivateLinkServicesClient) listAutoApprovedPrivateLinkServicesNextResults(ctx context.Context, lastResults AutoApprovedPrivateLinkServicesResult) (result AutoApprovedPrivateLinkServicesResult, err error) { + req, err := lastResults.autoApprovedPrivateLinkServicesResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "listAutoApprovedPrivateLinkServicesNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListAutoApprovedPrivateLinkServicesSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "listAutoApprovedPrivateLinkServicesNextResults", resp, "Failure sending next results request") + } + result, err = client.ListAutoApprovedPrivateLinkServicesResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "listAutoApprovedPrivateLinkServicesNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListAutoApprovedPrivateLinkServicesComplete enumerates all values, automatically crossing page boundaries as required. +func (client PrivateLinkServicesClient) ListAutoApprovedPrivateLinkServicesComplete(ctx context.Context, location string) (result AutoApprovedPrivateLinkServicesResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateLinkServicesClient.ListAutoApprovedPrivateLinkServices") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListAutoApprovedPrivateLinkServices(ctx, location) + return +} + +// ListAutoApprovedPrivateLinkServicesByResourceGroup returns all of the private link service ids that can be linked to +// a Private Endpoint with auto approved in this subscription in this region. +// Parameters: +// location - the location of the domain name. +// resourceGroupName - the name of the resource group. +func (client PrivateLinkServicesClient) ListAutoApprovedPrivateLinkServicesByResourceGroup(ctx context.Context, location string, resourceGroupName string) (result AutoApprovedPrivateLinkServicesResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateLinkServicesClient.ListAutoApprovedPrivateLinkServicesByResourceGroup") + defer func() { + sc := -1 + if result.aaplsr.Response.Response != nil { + sc = result.aaplsr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listAutoApprovedPrivateLinkServicesByResourceGroupNextResults + req, err := client.ListAutoApprovedPrivateLinkServicesByResourceGroupPreparer(ctx, location, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "ListAutoApprovedPrivateLinkServicesByResourceGroup", nil, "Failure preparing request") + return + } + + resp, err := client.ListAutoApprovedPrivateLinkServicesByResourceGroupSender(req) + if err != nil { + result.aaplsr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "ListAutoApprovedPrivateLinkServicesByResourceGroup", resp, "Failure sending request") + return + } + + result.aaplsr, err = client.ListAutoApprovedPrivateLinkServicesByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "ListAutoApprovedPrivateLinkServicesByResourceGroup", resp, "Failure responding to request") + } + + return +} + +// ListAutoApprovedPrivateLinkServicesByResourceGroupPreparer prepares the ListAutoApprovedPrivateLinkServicesByResourceGroup request. +func (client PrivateLinkServicesClient) ListAutoApprovedPrivateLinkServicesByResourceGroupPreparer(ctx context.Context, location string, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "location": autorest.Encode("path", location), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/locations/{location}/autoApprovedPrivateLinkServices", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAutoApprovedPrivateLinkServicesByResourceGroupSender sends the ListAutoApprovedPrivateLinkServicesByResourceGroup request. The method will close the +// http.Response Body if it receives an error. +func (client PrivateLinkServicesClient) ListAutoApprovedPrivateLinkServicesByResourceGroupSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAutoApprovedPrivateLinkServicesByResourceGroupResponder handles the response to the ListAutoApprovedPrivateLinkServicesByResourceGroup request. The method always +// closes the http.Response Body. +func (client PrivateLinkServicesClient) ListAutoApprovedPrivateLinkServicesByResourceGroupResponder(resp *http.Response) (result AutoApprovedPrivateLinkServicesResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listAutoApprovedPrivateLinkServicesByResourceGroupNextResults retrieves the next set of results, if any. +func (client PrivateLinkServicesClient) listAutoApprovedPrivateLinkServicesByResourceGroupNextResults(ctx context.Context, lastResults AutoApprovedPrivateLinkServicesResult) (result AutoApprovedPrivateLinkServicesResult, err error) { + req, err := lastResults.autoApprovedPrivateLinkServicesResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "listAutoApprovedPrivateLinkServicesByResourceGroupNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListAutoApprovedPrivateLinkServicesByResourceGroupSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "listAutoApprovedPrivateLinkServicesByResourceGroupNextResults", resp, "Failure sending next results request") + } + result, err = client.ListAutoApprovedPrivateLinkServicesByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "listAutoApprovedPrivateLinkServicesByResourceGroupNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListAutoApprovedPrivateLinkServicesByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. +func (client PrivateLinkServicesClient) ListAutoApprovedPrivateLinkServicesByResourceGroupComplete(ctx context.Context, location string, resourceGroupName string) (result AutoApprovedPrivateLinkServicesResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateLinkServicesClient.ListAutoApprovedPrivateLinkServicesByResourceGroup") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListAutoApprovedPrivateLinkServicesByResourceGroup(ctx, location, resourceGroupName) + return +} + +// ListBySubscription gets all private link service in a subscription. +func (client PrivateLinkServicesClient) ListBySubscription(ctx context.Context) (result PrivateLinkServiceListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateLinkServicesClient.ListBySubscription") + defer func() { + sc := -1 + if result.plslr.Response.Response != nil { + sc = result.plslr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listBySubscriptionNextResults + req, err := client.ListBySubscriptionPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "ListBySubscription", nil, "Failure preparing request") + return + } + + resp, err := client.ListBySubscriptionSender(req) + if err != nil { + result.plslr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "ListBySubscription", resp, "Failure sending request") + return + } + + result.plslr, err = client.ListBySubscriptionResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "ListBySubscription", resp, "Failure responding to request") + } + + return +} + +// ListBySubscriptionPreparer prepares the ListBySubscription request. +func (client PrivateLinkServicesClient) ListBySubscriptionPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/privateLinkServices", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListBySubscriptionSender sends the ListBySubscription request. The method will close the +// http.Response Body if it receives an error. +func (client PrivateLinkServicesClient) ListBySubscriptionSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListBySubscriptionResponder handles the response to the ListBySubscription request. The method always +// closes the http.Response Body. +func (client PrivateLinkServicesClient) ListBySubscriptionResponder(resp *http.Response) (result PrivateLinkServiceListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listBySubscriptionNextResults retrieves the next set of results, if any. +func (client PrivateLinkServicesClient) listBySubscriptionNextResults(ctx context.Context, lastResults PrivateLinkServiceListResult) (result PrivateLinkServiceListResult, err error) { + req, err := lastResults.privateLinkServiceListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "listBySubscriptionNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListBySubscriptionSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "listBySubscriptionNextResults", resp, "Failure sending next results request") + } + result, err = client.ListBySubscriptionResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "listBySubscriptionNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListBySubscriptionComplete enumerates all values, automatically crossing page boundaries as required. +func (client PrivateLinkServicesClient) ListBySubscriptionComplete(ctx context.Context) (result PrivateLinkServiceListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateLinkServicesClient.ListBySubscription") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListBySubscription(ctx) + return +} + +// ListPrivateEndpointConnections gets all private end point connections for a specific private link service. +// Parameters: +// resourceGroupName - the name of the resource group. +// serviceName - the name of the private link service. +func (client PrivateLinkServicesClient) ListPrivateEndpointConnections(ctx context.Context, resourceGroupName string, serviceName string) (result PrivateEndpointConnectionListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateLinkServicesClient.ListPrivateEndpointConnections") + defer func() { + sc := -1 + if result.peclr.Response.Response != nil { + sc = result.peclr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listPrivateEndpointConnectionsNextResults + req, err := client.ListPrivateEndpointConnectionsPreparer(ctx, resourceGroupName, serviceName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "ListPrivateEndpointConnections", nil, "Failure preparing request") + return + } + + resp, err := client.ListPrivateEndpointConnectionsSender(req) + if err != nil { + result.peclr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "ListPrivateEndpointConnections", resp, "Failure sending request") + return + } + + result.peclr, err = client.ListPrivateEndpointConnectionsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "ListPrivateEndpointConnections", resp, "Failure responding to request") + } + + return +} + +// ListPrivateEndpointConnectionsPreparer prepares the ListPrivateEndpointConnections request. +func (client PrivateLinkServicesClient) ListPrivateEndpointConnectionsPreparer(ctx context.Context, resourceGroupName string, serviceName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "serviceName": autorest.Encode("path", serviceName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}/privateEndpointConnections", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListPrivateEndpointConnectionsSender sends the ListPrivateEndpointConnections request. The method will close the +// http.Response Body if it receives an error. +func (client PrivateLinkServicesClient) ListPrivateEndpointConnectionsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListPrivateEndpointConnectionsResponder handles the response to the ListPrivateEndpointConnections request. The method always +// closes the http.Response Body. +func (client PrivateLinkServicesClient) ListPrivateEndpointConnectionsResponder(resp *http.Response) (result PrivateEndpointConnectionListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listPrivateEndpointConnectionsNextResults retrieves the next set of results, if any. +func (client PrivateLinkServicesClient) listPrivateEndpointConnectionsNextResults(ctx context.Context, lastResults PrivateEndpointConnectionListResult) (result PrivateEndpointConnectionListResult, err error) { + req, err := lastResults.privateEndpointConnectionListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "listPrivateEndpointConnectionsNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListPrivateEndpointConnectionsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "listPrivateEndpointConnectionsNextResults", resp, "Failure sending next results request") + } + result, err = client.ListPrivateEndpointConnectionsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "listPrivateEndpointConnectionsNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListPrivateEndpointConnectionsComplete enumerates all values, automatically crossing page boundaries as required. +func (client PrivateLinkServicesClient) ListPrivateEndpointConnectionsComplete(ctx context.Context, resourceGroupName string, serviceName string) (result PrivateEndpointConnectionListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateLinkServicesClient.ListPrivateEndpointConnections") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListPrivateEndpointConnections(ctx, resourceGroupName, serviceName) + return +} + +// UpdatePrivateEndpointConnection approve or reject private end point connection for a private link service in a +// subscription. +// Parameters: +// resourceGroupName - the name of the resource group. +// serviceName - the name of the private link service. +// peConnectionName - the name of the private end point connection. +// parameters - parameters supplied to approve or reject the private end point connection. +func (client PrivateLinkServicesClient) UpdatePrivateEndpointConnection(ctx context.Context, resourceGroupName string, serviceName string, peConnectionName string, parameters PrivateEndpointConnection) (result PrivateEndpointConnection, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PrivateLinkServicesClient.UpdatePrivateEndpointConnection") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdatePrivateEndpointConnectionPreparer(ctx, resourceGroupName, serviceName, peConnectionName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "UpdatePrivateEndpointConnection", nil, "Failure preparing request") + return + } + + resp, err := client.UpdatePrivateEndpointConnectionSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "UpdatePrivateEndpointConnection", resp, "Failure sending request") + return + } + + result, err = client.UpdatePrivateEndpointConnectionResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PrivateLinkServicesClient", "UpdatePrivateEndpointConnection", resp, "Failure responding to request") + } + + return +} + +// UpdatePrivateEndpointConnectionPreparer prepares the UpdatePrivateEndpointConnection request. +func (client PrivateLinkServicesClient) UpdatePrivateEndpointConnectionPreparer(ctx context.Context, resourceGroupName string, serviceName string, peConnectionName string, parameters PrivateEndpointConnection) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "peConnectionName": autorest.Encode("path", peConnectionName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "serviceName": autorest.Encode("path", serviceName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Type = nil + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateLinkServices/{serviceName}/privateEndpointConnections/{peConnectionName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdatePrivateEndpointConnectionSender sends the UpdatePrivateEndpointConnection request. The method will close the +// http.Response Body if it receives an error. +func (client PrivateLinkServicesClient) UpdatePrivateEndpointConnectionSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdatePrivateEndpointConnectionResponder handles the response to the UpdatePrivateEndpointConnection request. The method always +// closes the http.Response Body. +func (client PrivateLinkServicesClient) UpdatePrivateEndpointConnectionResponder(resp *http.Response) (result PrivateEndpointConnection, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/profiles.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/profiles.go new file mode 100644 index 0000000..e8d686f --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/profiles.go @@ -0,0 +1,577 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// ProfilesClient is the network Client +type ProfilesClient struct { + BaseClient +} + +// NewProfilesClient creates an instance of the ProfilesClient client. +func NewProfilesClient(subscriptionID string) ProfilesClient { + return NewProfilesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewProfilesClientWithBaseURI creates an instance of the ProfilesClient client using a custom endpoint. Use this +// when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewProfilesClientWithBaseURI(baseURI string, subscriptionID string) ProfilesClient { + return ProfilesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a network profile. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkProfileName - the name of the network profile. +// parameters - parameters supplied to the create or update network profile operation. +func (client ProfilesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, networkProfileName string, parameters Profile) (result Profile, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ProfilesClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, networkProfileName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ProfilesClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + resp, err := client.CreateOrUpdateSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ProfilesClient", "CreateOrUpdate", resp, "Failure sending request") + return + } + + result, err = client.CreateOrUpdateResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ProfilesClient", "CreateOrUpdate", resp, "Failure responding to request") + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client ProfilesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, networkProfileName string, parameters Profile) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkProfileName": autorest.Encode("path", networkProfileName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkProfiles/{networkProfileName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client ProfilesClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client ProfilesClient) CreateOrUpdateResponder(resp *http.Response) (result Profile, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified network profile. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkProfileName - the name of the NetworkProfile. +func (client ProfilesClient) Delete(ctx context.Context, resourceGroupName string, networkProfileName string) (result ProfilesDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ProfilesClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, networkProfileName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ProfilesClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ProfilesClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client ProfilesClient) DeletePreparer(ctx context.Context, resourceGroupName string, networkProfileName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkProfileName": autorest.Encode("path", networkProfileName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkProfiles/{networkProfileName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client ProfilesClient) DeleteSender(req *http.Request) (future ProfilesDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client ProfilesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified network profile in a specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkProfileName - the name of the public IP prefix. +// expand - expands referenced resources. +func (client ProfilesClient) Get(ctx context.Context, resourceGroupName string, networkProfileName string, expand string) (result Profile, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ProfilesClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, networkProfileName, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ProfilesClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ProfilesClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ProfilesClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client ProfilesClient) GetPreparer(ctx context.Context, resourceGroupName string, networkProfileName string, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkProfileName": autorest.Encode("path", networkProfileName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkProfiles/{networkProfileName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client ProfilesClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client ProfilesClient) GetResponder(resp *http.Response) (result Profile, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all network profiles in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client ProfilesClient) List(ctx context.Context, resourceGroupName string) (result ProfileListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ProfilesClient.List") + defer func() { + sc := -1 + if result.plr.Response.Response != nil { + sc = result.plr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ProfilesClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.plr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ProfilesClient", "List", resp, "Failure sending request") + return + } + + result.plr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ProfilesClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client ProfilesClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkProfiles", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client ProfilesClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client ProfilesClient) ListResponder(resp *http.Response) (result ProfileListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client ProfilesClient) listNextResults(ctx context.Context, lastResults ProfileListResult) (result ProfileListResult, err error) { + req, err := lastResults.profileListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.ProfilesClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.ProfilesClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ProfilesClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client ProfilesClient) ListComplete(ctx context.Context, resourceGroupName string) (result ProfileListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ProfilesClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName) + return +} + +// ListAll gets all the network profiles in a subscription. +func (client ProfilesClient) ListAll(ctx context.Context) (result ProfileListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ProfilesClient.ListAll") + defer func() { + sc := -1 + if result.plr.Response.Response != nil { + sc = result.plr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listAllNextResults + req, err := client.ListAllPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ProfilesClient", "ListAll", nil, "Failure preparing request") + return + } + + resp, err := client.ListAllSender(req) + if err != nil { + result.plr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ProfilesClient", "ListAll", resp, "Failure sending request") + return + } + + result.plr, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ProfilesClient", "ListAll", resp, "Failure responding to request") + } + + return +} + +// ListAllPreparer prepares the ListAll request. +func (client ProfilesClient) ListAllPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkProfiles", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAllSender sends the ListAll request. The method will close the +// http.Response Body if it receives an error. +func (client ProfilesClient) ListAllSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAllResponder handles the response to the ListAll request. The method always +// closes the http.Response Body. +func (client ProfilesClient) ListAllResponder(resp *http.Response) (result ProfileListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listAllNextResults retrieves the next set of results, if any. +func (client ProfilesClient) listAllNextResults(ctx context.Context, lastResults ProfileListResult) (result ProfileListResult, err error) { + req, err := lastResults.profileListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.ProfilesClient", "listAllNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListAllSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.ProfilesClient", "listAllNextResults", resp, "Failure sending next results request") + } + result, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ProfilesClient", "listAllNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListAllComplete enumerates all values, automatically crossing page boundaries as required. +func (client ProfilesClient) ListAllComplete(ctx context.Context) (result ProfileListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ProfilesClient.ListAll") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListAll(ctx) + return +} + +// UpdateTags updates network profile tags. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkProfileName - the name of the network profile. +// parameters - parameters supplied to update network profile tags. +func (client ProfilesClient) UpdateTags(ctx context.Context, resourceGroupName string, networkProfileName string, parameters TagsObject) (result Profile, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ProfilesClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, networkProfileName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ProfilesClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ProfilesClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ProfilesClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client ProfilesClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, networkProfileName string, parameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkProfileName": autorest.Encode("path", networkProfileName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkProfiles/{networkProfileName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client ProfilesClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client ProfilesClient) UpdateTagsResponder(resp *http.Response) (result Profile, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/publicipaddresses.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/publicipaddresses.go new file mode 100644 index 0000000..f3113d3 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/publicipaddresses.go @@ -0,0 +1,914 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// PublicIPAddressesClient is the network Client +type PublicIPAddressesClient struct { + BaseClient +} + +// NewPublicIPAddressesClient creates an instance of the PublicIPAddressesClient client. +func NewPublicIPAddressesClient(subscriptionID string) PublicIPAddressesClient { + return NewPublicIPAddressesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewPublicIPAddressesClientWithBaseURI creates an instance of the PublicIPAddressesClient client using a custom +// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure +// stack). +func NewPublicIPAddressesClientWithBaseURI(baseURI string, subscriptionID string) PublicIPAddressesClient { + return PublicIPAddressesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a static or dynamic public IP address. +// Parameters: +// resourceGroupName - the name of the resource group. +// publicIPAddressName - the name of the public IP address. +// parameters - parameters supplied to the create or update public IP address operation. +func (client PublicIPAddressesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, publicIPAddressName string, parameters PublicIPAddress) (result PublicIPAddressesCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PublicIPAddressesClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.PublicIPAddressPropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.PublicIPAddressPropertiesFormat.IPConfiguration", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.PublicIPAddressPropertiesFormat.IPConfiguration.IPConfigurationPropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.PublicIPAddressPropertiesFormat.IPConfiguration.IPConfigurationPropertiesFormat.PublicIPAddress", Name: validation.Null, Rule: false, Chain: nil}}}, + }}, + }}}}}); err != nil { + return result, validation.NewError("network.PublicIPAddressesClient", "CreateOrUpdate", err.Error()) + } + + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, publicIPAddressName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client PublicIPAddressesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, publicIPAddressName string, parameters PublicIPAddress) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "publicIpAddressName": autorest.Encode("path", publicIPAddressName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client PublicIPAddressesClient) CreateOrUpdateSender(req *http.Request) (future PublicIPAddressesCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client PublicIPAddressesClient) CreateOrUpdateResponder(resp *http.Response) (result PublicIPAddress, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified public IP address. +// Parameters: +// resourceGroupName - the name of the resource group. +// publicIPAddressName - the name of the subnet. +func (client PublicIPAddressesClient) Delete(ctx context.Context, resourceGroupName string, publicIPAddressName string) (result PublicIPAddressesDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PublicIPAddressesClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, publicIPAddressName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client PublicIPAddressesClient) DeletePreparer(ctx context.Context, resourceGroupName string, publicIPAddressName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "publicIpAddressName": autorest.Encode("path", publicIPAddressName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client PublicIPAddressesClient) DeleteSender(req *http.Request) (future PublicIPAddressesDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client PublicIPAddressesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified public IP address in a specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// publicIPAddressName - the name of the subnet. +// expand - expands referenced resources. +func (client PublicIPAddressesClient) Get(ctx context.Context, resourceGroupName string, publicIPAddressName string, expand string) (result PublicIPAddress, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PublicIPAddressesClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, publicIPAddressName, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client PublicIPAddressesClient) GetPreparer(ctx context.Context, resourceGroupName string, publicIPAddressName string, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "publicIpAddressName": autorest.Encode("path", publicIPAddressName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client PublicIPAddressesClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client PublicIPAddressesClient) GetResponder(resp *http.Response) (result PublicIPAddress, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetVirtualMachineScaleSetPublicIPAddress get the specified public IP address in a virtual machine scale set. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualMachineScaleSetName - the name of the virtual machine scale set. +// virtualmachineIndex - the virtual machine index. +// networkInterfaceName - the name of the network interface. +// IPConfigurationName - the name of the IP configuration. +// publicIPAddressName - the name of the public IP Address. +// expand - expands referenced resources. +func (client PublicIPAddressesClient) GetVirtualMachineScaleSetPublicIPAddress(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string, networkInterfaceName string, IPConfigurationName string, publicIPAddressName string, expand string) (result PublicIPAddress, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PublicIPAddressesClient.GetVirtualMachineScaleSetPublicIPAddress") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetVirtualMachineScaleSetPublicIPAddressPreparer(ctx, resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex, networkInterfaceName, IPConfigurationName, publicIPAddressName, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "GetVirtualMachineScaleSetPublicIPAddress", nil, "Failure preparing request") + return + } + + resp, err := client.GetVirtualMachineScaleSetPublicIPAddressSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "GetVirtualMachineScaleSetPublicIPAddress", resp, "Failure sending request") + return + } + + result, err = client.GetVirtualMachineScaleSetPublicIPAddressResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "GetVirtualMachineScaleSetPublicIPAddress", resp, "Failure responding to request") + } + + return +} + +// GetVirtualMachineScaleSetPublicIPAddressPreparer prepares the GetVirtualMachineScaleSetPublicIPAddress request. +func (client PublicIPAddressesClient) GetVirtualMachineScaleSetPublicIPAddressPreparer(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string, networkInterfaceName string, IPConfigurationName string, publicIPAddressName string, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "ipConfigurationName": autorest.Encode("path", IPConfigurationName), + "networkInterfaceName": autorest.Encode("path", networkInterfaceName), + "publicIpAddressName": autorest.Encode("path", publicIPAddressName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualmachineIndex": autorest.Encode("path", virtualmachineIndex), + "virtualMachineScaleSetName": autorest.Encode("path", virtualMachineScaleSetName), + } + + const APIVersion = "2018-10-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}/ipconfigurations/{ipConfigurationName}/publicipaddresses/{publicIpAddressName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetVirtualMachineScaleSetPublicIPAddressSender sends the GetVirtualMachineScaleSetPublicIPAddress request. The method will close the +// http.Response Body if it receives an error. +func (client PublicIPAddressesClient) GetVirtualMachineScaleSetPublicIPAddressSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetVirtualMachineScaleSetPublicIPAddressResponder handles the response to the GetVirtualMachineScaleSetPublicIPAddress request. The method always +// closes the http.Response Body. +func (client PublicIPAddressesClient) GetVirtualMachineScaleSetPublicIPAddressResponder(resp *http.Response) (result PublicIPAddress, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all public IP addresses in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client PublicIPAddressesClient) List(ctx context.Context, resourceGroupName string) (result PublicIPAddressListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PublicIPAddressesClient.List") + defer func() { + sc := -1 + if result.pialr.Response.Response != nil { + sc = result.pialr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.pialr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "List", resp, "Failure sending request") + return + } + + result.pialr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client PublicIPAddressesClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client PublicIPAddressesClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client PublicIPAddressesClient) ListResponder(resp *http.Response) (result PublicIPAddressListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client PublicIPAddressesClient) listNextResults(ctx context.Context, lastResults PublicIPAddressListResult) (result PublicIPAddressListResult, err error) { + req, err := lastResults.publicIPAddressListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client PublicIPAddressesClient) ListComplete(ctx context.Context, resourceGroupName string) (result PublicIPAddressListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PublicIPAddressesClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName) + return +} + +// ListAll gets all the public IP addresses in a subscription. +func (client PublicIPAddressesClient) ListAll(ctx context.Context) (result PublicIPAddressListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PublicIPAddressesClient.ListAll") + defer func() { + sc := -1 + if result.pialr.Response.Response != nil { + sc = result.pialr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listAllNextResults + req, err := client.ListAllPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "ListAll", nil, "Failure preparing request") + return + } + + resp, err := client.ListAllSender(req) + if err != nil { + result.pialr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "ListAll", resp, "Failure sending request") + return + } + + result.pialr, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "ListAll", resp, "Failure responding to request") + } + + return +} + +// ListAllPreparer prepares the ListAll request. +func (client PublicIPAddressesClient) ListAllPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/publicIPAddresses", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAllSender sends the ListAll request. The method will close the +// http.Response Body if it receives an error. +func (client PublicIPAddressesClient) ListAllSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAllResponder handles the response to the ListAll request. The method always +// closes the http.Response Body. +func (client PublicIPAddressesClient) ListAllResponder(resp *http.Response) (result PublicIPAddressListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listAllNextResults retrieves the next set of results, if any. +func (client PublicIPAddressesClient) listAllNextResults(ctx context.Context, lastResults PublicIPAddressListResult) (result PublicIPAddressListResult, err error) { + req, err := lastResults.publicIPAddressListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "listAllNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListAllSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "listAllNextResults", resp, "Failure sending next results request") + } + result, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "listAllNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListAllComplete enumerates all values, automatically crossing page boundaries as required. +func (client PublicIPAddressesClient) ListAllComplete(ctx context.Context) (result PublicIPAddressListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PublicIPAddressesClient.ListAll") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListAll(ctx) + return +} + +// ListVirtualMachineScaleSetPublicIPAddresses gets information about all public IP addresses on a virtual machine +// scale set level. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualMachineScaleSetName - the name of the virtual machine scale set. +func (client PublicIPAddressesClient) ListVirtualMachineScaleSetPublicIPAddresses(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string) (result PublicIPAddressListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PublicIPAddressesClient.ListVirtualMachineScaleSetPublicIPAddresses") + defer func() { + sc := -1 + if result.pialr.Response.Response != nil { + sc = result.pialr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listVirtualMachineScaleSetPublicIPAddressesNextResults + req, err := client.ListVirtualMachineScaleSetPublicIPAddressesPreparer(ctx, resourceGroupName, virtualMachineScaleSetName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "ListVirtualMachineScaleSetPublicIPAddresses", nil, "Failure preparing request") + return + } + + resp, err := client.ListVirtualMachineScaleSetPublicIPAddressesSender(req) + if err != nil { + result.pialr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "ListVirtualMachineScaleSetPublicIPAddresses", resp, "Failure sending request") + return + } + + result.pialr, err = client.ListVirtualMachineScaleSetPublicIPAddressesResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "ListVirtualMachineScaleSetPublicIPAddresses", resp, "Failure responding to request") + } + + return +} + +// ListVirtualMachineScaleSetPublicIPAddressesPreparer prepares the ListVirtualMachineScaleSetPublicIPAddresses request. +func (client PublicIPAddressesClient) ListVirtualMachineScaleSetPublicIPAddressesPreparer(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualMachineScaleSetName": autorest.Encode("path", virtualMachineScaleSetName), + } + + const APIVersion = "2018-10-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/publicipaddresses", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListVirtualMachineScaleSetPublicIPAddressesSender sends the ListVirtualMachineScaleSetPublicIPAddresses request. The method will close the +// http.Response Body if it receives an error. +func (client PublicIPAddressesClient) ListVirtualMachineScaleSetPublicIPAddressesSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListVirtualMachineScaleSetPublicIPAddressesResponder handles the response to the ListVirtualMachineScaleSetPublicIPAddresses request. The method always +// closes the http.Response Body. +func (client PublicIPAddressesClient) ListVirtualMachineScaleSetPublicIPAddressesResponder(resp *http.Response) (result PublicIPAddressListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listVirtualMachineScaleSetPublicIPAddressesNextResults retrieves the next set of results, if any. +func (client PublicIPAddressesClient) listVirtualMachineScaleSetPublicIPAddressesNextResults(ctx context.Context, lastResults PublicIPAddressListResult) (result PublicIPAddressListResult, err error) { + req, err := lastResults.publicIPAddressListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "listVirtualMachineScaleSetPublicIPAddressesNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListVirtualMachineScaleSetPublicIPAddressesSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "listVirtualMachineScaleSetPublicIPAddressesNextResults", resp, "Failure sending next results request") + } + result, err = client.ListVirtualMachineScaleSetPublicIPAddressesResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "listVirtualMachineScaleSetPublicIPAddressesNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListVirtualMachineScaleSetPublicIPAddressesComplete enumerates all values, automatically crossing page boundaries as required. +func (client PublicIPAddressesClient) ListVirtualMachineScaleSetPublicIPAddressesComplete(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string) (result PublicIPAddressListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PublicIPAddressesClient.ListVirtualMachineScaleSetPublicIPAddresses") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListVirtualMachineScaleSetPublicIPAddresses(ctx, resourceGroupName, virtualMachineScaleSetName) + return +} + +// ListVirtualMachineScaleSetVMPublicIPAddresses gets information about all public IP addresses in a virtual machine IP +// configuration in a virtual machine scale set. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualMachineScaleSetName - the name of the virtual machine scale set. +// virtualmachineIndex - the virtual machine index. +// networkInterfaceName - the network interface name. +// IPConfigurationName - the IP configuration name. +func (client PublicIPAddressesClient) ListVirtualMachineScaleSetVMPublicIPAddresses(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string, networkInterfaceName string, IPConfigurationName string) (result PublicIPAddressListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PublicIPAddressesClient.ListVirtualMachineScaleSetVMPublicIPAddresses") + defer func() { + sc := -1 + if result.pialr.Response.Response != nil { + sc = result.pialr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listVirtualMachineScaleSetVMPublicIPAddressesNextResults + req, err := client.ListVirtualMachineScaleSetVMPublicIPAddressesPreparer(ctx, resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex, networkInterfaceName, IPConfigurationName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "ListVirtualMachineScaleSetVMPublicIPAddresses", nil, "Failure preparing request") + return + } + + resp, err := client.ListVirtualMachineScaleSetVMPublicIPAddressesSender(req) + if err != nil { + result.pialr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "ListVirtualMachineScaleSetVMPublicIPAddresses", resp, "Failure sending request") + return + } + + result.pialr, err = client.ListVirtualMachineScaleSetVMPublicIPAddressesResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "ListVirtualMachineScaleSetVMPublicIPAddresses", resp, "Failure responding to request") + } + + return +} + +// ListVirtualMachineScaleSetVMPublicIPAddressesPreparer prepares the ListVirtualMachineScaleSetVMPublicIPAddresses request. +func (client PublicIPAddressesClient) ListVirtualMachineScaleSetVMPublicIPAddressesPreparer(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string, networkInterfaceName string, IPConfigurationName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "ipConfigurationName": autorest.Encode("path", IPConfigurationName), + "networkInterfaceName": autorest.Encode("path", networkInterfaceName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualmachineIndex": autorest.Encode("path", virtualmachineIndex), + "virtualMachineScaleSetName": autorest.Encode("path", virtualMachineScaleSetName), + } + + const APIVersion = "2018-10-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}/ipconfigurations/{ipConfigurationName}/publicipaddresses", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListVirtualMachineScaleSetVMPublicIPAddressesSender sends the ListVirtualMachineScaleSetVMPublicIPAddresses request. The method will close the +// http.Response Body if it receives an error. +func (client PublicIPAddressesClient) ListVirtualMachineScaleSetVMPublicIPAddressesSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListVirtualMachineScaleSetVMPublicIPAddressesResponder handles the response to the ListVirtualMachineScaleSetVMPublicIPAddresses request. The method always +// closes the http.Response Body. +func (client PublicIPAddressesClient) ListVirtualMachineScaleSetVMPublicIPAddressesResponder(resp *http.Response) (result PublicIPAddressListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listVirtualMachineScaleSetVMPublicIPAddressesNextResults retrieves the next set of results, if any. +func (client PublicIPAddressesClient) listVirtualMachineScaleSetVMPublicIPAddressesNextResults(ctx context.Context, lastResults PublicIPAddressListResult) (result PublicIPAddressListResult, err error) { + req, err := lastResults.publicIPAddressListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "listVirtualMachineScaleSetVMPublicIPAddressesNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListVirtualMachineScaleSetVMPublicIPAddressesSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "listVirtualMachineScaleSetVMPublicIPAddressesNextResults", resp, "Failure sending next results request") + } + result, err = client.ListVirtualMachineScaleSetVMPublicIPAddressesResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "listVirtualMachineScaleSetVMPublicIPAddressesNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListVirtualMachineScaleSetVMPublicIPAddressesComplete enumerates all values, automatically crossing page boundaries as required. +func (client PublicIPAddressesClient) ListVirtualMachineScaleSetVMPublicIPAddressesComplete(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string, networkInterfaceName string, IPConfigurationName string) (result PublicIPAddressListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PublicIPAddressesClient.ListVirtualMachineScaleSetVMPublicIPAddresses") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListVirtualMachineScaleSetVMPublicIPAddresses(ctx, resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex, networkInterfaceName, IPConfigurationName) + return +} + +// UpdateTags updates public IP address tags. +// Parameters: +// resourceGroupName - the name of the resource group. +// publicIPAddressName - the name of the public IP address. +// parameters - parameters supplied to update public IP address tags. +func (client PublicIPAddressesClient) UpdateTags(ctx context.Context, resourceGroupName string, publicIPAddressName string, parameters TagsObject) (result PublicIPAddress, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PublicIPAddressesClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, publicIPAddressName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client PublicIPAddressesClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, publicIPAddressName string, parameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "publicIpAddressName": autorest.Encode("path", publicIPAddressName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client PublicIPAddressesClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client PublicIPAddressesClient) UpdateTagsResponder(resp *http.Response) (result PublicIPAddress, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/publicipprefixes.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/publicipprefixes.go new file mode 100644 index 0000000..c598017 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/publicipprefixes.go @@ -0,0 +1,578 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// PublicIPPrefixesClient is the network Client +type PublicIPPrefixesClient struct { + BaseClient +} + +// NewPublicIPPrefixesClient creates an instance of the PublicIPPrefixesClient client. +func NewPublicIPPrefixesClient(subscriptionID string) PublicIPPrefixesClient { + return NewPublicIPPrefixesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewPublicIPPrefixesClientWithBaseURI creates an instance of the PublicIPPrefixesClient client using a custom +// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure +// stack). +func NewPublicIPPrefixesClientWithBaseURI(baseURI string, subscriptionID string) PublicIPPrefixesClient { + return PublicIPPrefixesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a static or dynamic public IP prefix. +// Parameters: +// resourceGroupName - the name of the resource group. +// publicIPPrefixName - the name of the public IP prefix. +// parameters - parameters supplied to the create or update public IP prefix operation. +func (client PublicIPPrefixesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, publicIPPrefixName string, parameters PublicIPPrefix) (result PublicIPPrefixesCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PublicIPPrefixesClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, publicIPPrefixName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPPrefixesClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPPrefixesClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client PublicIPPrefixesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, publicIPPrefixName string, parameters PublicIPPrefix) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "publicIpPrefixName": autorest.Encode("path", publicIPPrefixName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes/{publicIpPrefixName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client PublicIPPrefixesClient) CreateOrUpdateSender(req *http.Request) (future PublicIPPrefixesCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client PublicIPPrefixesClient) CreateOrUpdateResponder(resp *http.Response) (result PublicIPPrefix, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified public IP prefix. +// Parameters: +// resourceGroupName - the name of the resource group. +// publicIPPrefixName - the name of the PublicIpPrefix. +func (client PublicIPPrefixesClient) Delete(ctx context.Context, resourceGroupName string, publicIPPrefixName string) (result PublicIPPrefixesDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PublicIPPrefixesClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, publicIPPrefixName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPPrefixesClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPPrefixesClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client PublicIPPrefixesClient) DeletePreparer(ctx context.Context, resourceGroupName string, publicIPPrefixName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "publicIpPrefixName": autorest.Encode("path", publicIPPrefixName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes/{publicIpPrefixName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client PublicIPPrefixesClient) DeleteSender(req *http.Request) (future PublicIPPrefixesDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client PublicIPPrefixesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified public IP prefix in a specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// publicIPPrefixName - the name of the public IP prefix. +// expand - expands referenced resources. +func (client PublicIPPrefixesClient) Get(ctx context.Context, resourceGroupName string, publicIPPrefixName string, expand string) (result PublicIPPrefix, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PublicIPPrefixesClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, publicIPPrefixName, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPPrefixesClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PublicIPPrefixesClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPPrefixesClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client PublicIPPrefixesClient) GetPreparer(ctx context.Context, resourceGroupName string, publicIPPrefixName string, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "publicIpPrefixName": autorest.Encode("path", publicIPPrefixName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes/{publicIpPrefixName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client PublicIPPrefixesClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client PublicIPPrefixesClient) GetResponder(resp *http.Response) (result PublicIPPrefix, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all public IP prefixes in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client PublicIPPrefixesClient) List(ctx context.Context, resourceGroupName string) (result PublicIPPrefixListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PublicIPPrefixesClient.List") + defer func() { + sc := -1 + if result.piplr.Response.Response != nil { + sc = result.piplr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPPrefixesClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.piplr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PublicIPPrefixesClient", "List", resp, "Failure sending request") + return + } + + result.piplr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPPrefixesClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client PublicIPPrefixesClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client PublicIPPrefixesClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client PublicIPPrefixesClient) ListResponder(resp *http.Response) (result PublicIPPrefixListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client PublicIPPrefixesClient) listNextResults(ctx context.Context, lastResults PublicIPPrefixListResult) (result PublicIPPrefixListResult, err error) { + req, err := lastResults.publicIPPrefixListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.PublicIPPrefixesClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.PublicIPPrefixesClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPPrefixesClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client PublicIPPrefixesClient) ListComplete(ctx context.Context, resourceGroupName string) (result PublicIPPrefixListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PublicIPPrefixesClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName) + return +} + +// ListAll gets all the public IP prefixes in a subscription. +func (client PublicIPPrefixesClient) ListAll(ctx context.Context) (result PublicIPPrefixListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PublicIPPrefixesClient.ListAll") + defer func() { + sc := -1 + if result.piplr.Response.Response != nil { + sc = result.piplr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listAllNextResults + req, err := client.ListAllPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPPrefixesClient", "ListAll", nil, "Failure preparing request") + return + } + + resp, err := client.ListAllSender(req) + if err != nil { + result.piplr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PublicIPPrefixesClient", "ListAll", resp, "Failure sending request") + return + } + + result.piplr, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPPrefixesClient", "ListAll", resp, "Failure responding to request") + } + + return +} + +// ListAllPreparer prepares the ListAll request. +func (client PublicIPPrefixesClient) ListAllPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/publicIPPrefixes", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAllSender sends the ListAll request. The method will close the +// http.Response Body if it receives an error. +func (client PublicIPPrefixesClient) ListAllSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAllResponder handles the response to the ListAll request. The method always +// closes the http.Response Body. +func (client PublicIPPrefixesClient) ListAllResponder(resp *http.Response) (result PublicIPPrefixListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listAllNextResults retrieves the next set of results, if any. +func (client PublicIPPrefixesClient) listAllNextResults(ctx context.Context, lastResults PublicIPPrefixListResult) (result PublicIPPrefixListResult, err error) { + req, err := lastResults.publicIPPrefixListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.PublicIPPrefixesClient", "listAllNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListAllSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.PublicIPPrefixesClient", "listAllNextResults", resp, "Failure sending next results request") + } + result, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPPrefixesClient", "listAllNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListAllComplete enumerates all values, automatically crossing page boundaries as required. +func (client PublicIPPrefixesClient) ListAllComplete(ctx context.Context) (result PublicIPPrefixListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PublicIPPrefixesClient.ListAll") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListAll(ctx) + return +} + +// UpdateTags updates public IP prefix tags. +// Parameters: +// resourceGroupName - the name of the resource group. +// publicIPPrefixName - the name of the public IP prefix. +// parameters - parameters supplied to update public IP prefix tags. +func (client PublicIPPrefixesClient) UpdateTags(ctx context.Context, resourceGroupName string, publicIPPrefixName string, parameters TagsObject) (result PublicIPPrefix, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/PublicIPPrefixesClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, publicIPPrefixName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPPrefixesClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.PublicIPPrefixesClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.PublicIPPrefixesClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client PublicIPPrefixesClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, publicIPPrefixName string, parameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "publicIpPrefixName": autorest.Encode("path", publicIPPrefixName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes/{publicIpPrefixName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client PublicIPPrefixesClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client PublicIPPrefixesClient) UpdateTagsResponder(resp *http.Response) (result PublicIPPrefix, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/resourcenavigationlinks.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/resourcenavigationlinks.go new file mode 100644 index 0000000..ca9fb43 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/resourcenavigationlinks.go @@ -0,0 +1,121 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// ResourceNavigationLinksClient is the network Client +type ResourceNavigationLinksClient struct { + BaseClient +} + +// NewResourceNavigationLinksClient creates an instance of the ResourceNavigationLinksClient client. +func NewResourceNavigationLinksClient(subscriptionID string) ResourceNavigationLinksClient { + return NewResourceNavigationLinksClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewResourceNavigationLinksClientWithBaseURI creates an instance of the ResourceNavigationLinksClient client using a +// custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, +// Azure stack). +func NewResourceNavigationLinksClientWithBaseURI(baseURI string, subscriptionID string) ResourceNavigationLinksClient { + return ResourceNavigationLinksClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// List gets a list of resource navigation links for a subnet. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkName - the name of the virtual network. +// subnetName - the name of the subnet. +func (client ResourceNavigationLinksClient) List(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string) (result ResourceNavigationLinksListResult, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ResourceNavigationLinksClient.List") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ListPreparer(ctx, resourceGroupName, virtualNetworkName, subnetName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ResourceNavigationLinksClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ResourceNavigationLinksClient", "List", resp, "Failure sending request") + return + } + + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ResourceNavigationLinksClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client ResourceNavigationLinksClient) ListPreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subnetName": autorest.Encode("path", subnetName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkName": autorest.Encode("path", virtualNetworkName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}/ResourceNavigationLinks", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client ResourceNavigationLinksClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client ResourceNavigationLinksClient) ListResponder(resp *http.Response) (result ResourceNavigationLinksListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/routefilterrules.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/routefilterrules.go new file mode 100644 index 0000000..00473c4 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/routefilterrules.go @@ -0,0 +1,404 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// RouteFilterRulesClient is the network Client +type RouteFilterRulesClient struct { + BaseClient +} + +// NewRouteFilterRulesClient creates an instance of the RouteFilterRulesClient client. +func NewRouteFilterRulesClient(subscriptionID string) RouteFilterRulesClient { + return NewRouteFilterRulesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewRouteFilterRulesClientWithBaseURI creates an instance of the RouteFilterRulesClient client using a custom +// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure +// stack). +func NewRouteFilterRulesClientWithBaseURI(baseURI string, subscriptionID string) RouteFilterRulesClient { + return RouteFilterRulesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a route in the specified route filter. +// Parameters: +// resourceGroupName - the name of the resource group. +// routeFilterName - the name of the route filter. +// ruleName - the name of the route filter rule. +// routeFilterRuleParameters - parameters supplied to the create or update route filter rule operation. +func (client RouteFilterRulesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, routeFilterName string, ruleName string, routeFilterRuleParameters RouteFilterRule) (result RouteFilterRulesCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteFilterRulesClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: routeFilterRuleParameters, + Constraints: []validation.Constraint{{Target: "routeFilterRuleParameters.RouteFilterRulePropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "routeFilterRuleParameters.RouteFilterRulePropertiesFormat.RouteFilterRuleType", Name: validation.Null, Rule: true, Chain: nil}, + {Target: "routeFilterRuleParameters.RouteFilterRulePropertiesFormat.Communities", Name: validation.Null, Rule: true, Chain: nil}, + }}}}}); err != nil { + return result, validation.NewError("network.RouteFilterRulesClient", "CreateOrUpdate", err.Error()) + } + + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, routeFilterName, ruleName, routeFilterRuleParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFilterRulesClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFilterRulesClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client RouteFilterRulesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, routeFilterName string, ruleName string, routeFilterRuleParameters RouteFilterRule) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "routeFilterName": autorest.Encode("path", routeFilterName), + "ruleName": autorest.Encode("path", ruleName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + routeFilterRuleParameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}/routeFilterRules/{ruleName}", pathParameters), + autorest.WithJSON(routeFilterRuleParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client RouteFilterRulesClient) CreateOrUpdateSender(req *http.Request) (future RouteFilterRulesCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client RouteFilterRulesClient) CreateOrUpdateResponder(resp *http.Response) (result RouteFilterRule, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified rule from a route filter. +// Parameters: +// resourceGroupName - the name of the resource group. +// routeFilterName - the name of the route filter. +// ruleName - the name of the rule. +func (client RouteFilterRulesClient) Delete(ctx context.Context, resourceGroupName string, routeFilterName string, ruleName string) (result RouteFilterRulesDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteFilterRulesClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, routeFilterName, ruleName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFilterRulesClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFilterRulesClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client RouteFilterRulesClient) DeletePreparer(ctx context.Context, resourceGroupName string, routeFilterName string, ruleName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "routeFilterName": autorest.Encode("path", routeFilterName), + "ruleName": autorest.Encode("path", ruleName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}/routeFilterRules/{ruleName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client RouteFilterRulesClient) DeleteSender(req *http.Request) (future RouteFilterRulesDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client RouteFilterRulesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified rule from a route filter. +// Parameters: +// resourceGroupName - the name of the resource group. +// routeFilterName - the name of the route filter. +// ruleName - the name of the rule. +func (client RouteFilterRulesClient) Get(ctx context.Context, resourceGroupName string, routeFilterName string, ruleName string) (result RouteFilterRule, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteFilterRulesClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, routeFilterName, ruleName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFilterRulesClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.RouteFilterRulesClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFilterRulesClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client RouteFilterRulesClient) GetPreparer(ctx context.Context, resourceGroupName string, routeFilterName string, ruleName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "routeFilterName": autorest.Encode("path", routeFilterName), + "ruleName": autorest.Encode("path", ruleName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}/routeFilterRules/{ruleName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client RouteFilterRulesClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client RouteFilterRulesClient) GetResponder(resp *http.Response) (result RouteFilterRule, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// ListByRouteFilter gets all RouteFilterRules in a route filter. +// Parameters: +// resourceGroupName - the name of the resource group. +// routeFilterName - the name of the route filter. +func (client RouteFilterRulesClient) ListByRouteFilter(ctx context.Context, resourceGroupName string, routeFilterName string) (result RouteFilterRuleListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteFilterRulesClient.ListByRouteFilter") + defer func() { + sc := -1 + if result.rfrlr.Response.Response != nil { + sc = result.rfrlr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listByRouteFilterNextResults + req, err := client.ListByRouteFilterPreparer(ctx, resourceGroupName, routeFilterName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFilterRulesClient", "ListByRouteFilter", nil, "Failure preparing request") + return + } + + resp, err := client.ListByRouteFilterSender(req) + if err != nil { + result.rfrlr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.RouteFilterRulesClient", "ListByRouteFilter", resp, "Failure sending request") + return + } + + result.rfrlr, err = client.ListByRouteFilterResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFilterRulesClient", "ListByRouteFilter", resp, "Failure responding to request") + } + + return +} + +// ListByRouteFilterPreparer prepares the ListByRouteFilter request. +func (client RouteFilterRulesClient) ListByRouteFilterPreparer(ctx context.Context, resourceGroupName string, routeFilterName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "routeFilterName": autorest.Encode("path", routeFilterName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}/routeFilterRules", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListByRouteFilterSender sends the ListByRouteFilter request. The method will close the +// http.Response Body if it receives an error. +func (client RouteFilterRulesClient) ListByRouteFilterSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListByRouteFilterResponder handles the response to the ListByRouteFilter request. The method always +// closes the http.Response Body. +func (client RouteFilterRulesClient) ListByRouteFilterResponder(resp *http.Response) (result RouteFilterRuleListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listByRouteFilterNextResults retrieves the next set of results, if any. +func (client RouteFilterRulesClient) listByRouteFilterNextResults(ctx context.Context, lastResults RouteFilterRuleListResult) (result RouteFilterRuleListResult, err error) { + req, err := lastResults.routeFilterRuleListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.RouteFilterRulesClient", "listByRouteFilterNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListByRouteFilterSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.RouteFilterRulesClient", "listByRouteFilterNextResults", resp, "Failure sending next results request") + } + result, err = client.ListByRouteFilterResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFilterRulesClient", "listByRouteFilterNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListByRouteFilterComplete enumerates all values, automatically crossing page boundaries as required. +func (client RouteFilterRulesClient) ListByRouteFilterComplete(ctx context.Context, resourceGroupName string, routeFilterName string) (result RouteFilterRuleListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteFilterRulesClient.ListByRouteFilter") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListByRouteFilter(ctx, resourceGroupName, routeFilterName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/routefilters.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/routefilters.go new file mode 100644 index 0000000..48b0b1f --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/routefilters.go @@ -0,0 +1,577 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// RouteFiltersClient is the network Client +type RouteFiltersClient struct { + BaseClient +} + +// NewRouteFiltersClient creates an instance of the RouteFiltersClient client. +func NewRouteFiltersClient(subscriptionID string) RouteFiltersClient { + return NewRouteFiltersClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewRouteFiltersClientWithBaseURI creates an instance of the RouteFiltersClient client using a custom endpoint. Use +// this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewRouteFiltersClientWithBaseURI(baseURI string, subscriptionID string) RouteFiltersClient { + return RouteFiltersClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a route filter in a specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// routeFilterName - the name of the route filter. +// routeFilterParameters - parameters supplied to the create or update route filter operation. +func (client RouteFiltersClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, routeFilterName string, routeFilterParameters RouteFilter) (result RouteFiltersCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteFiltersClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, routeFilterName, routeFilterParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFiltersClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFiltersClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client RouteFiltersClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, routeFilterName string, routeFilterParameters RouteFilter) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "routeFilterName": autorest.Encode("path", routeFilterName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + routeFilterParameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}", pathParameters), + autorest.WithJSON(routeFilterParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client RouteFiltersClient) CreateOrUpdateSender(req *http.Request) (future RouteFiltersCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client RouteFiltersClient) CreateOrUpdateResponder(resp *http.Response) (result RouteFilter, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified route filter. +// Parameters: +// resourceGroupName - the name of the resource group. +// routeFilterName - the name of the route filter. +func (client RouteFiltersClient) Delete(ctx context.Context, resourceGroupName string, routeFilterName string) (result RouteFiltersDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteFiltersClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, routeFilterName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFiltersClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFiltersClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client RouteFiltersClient) DeletePreparer(ctx context.Context, resourceGroupName string, routeFilterName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "routeFilterName": autorest.Encode("path", routeFilterName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client RouteFiltersClient) DeleteSender(req *http.Request) (future RouteFiltersDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client RouteFiltersClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified route filter. +// Parameters: +// resourceGroupName - the name of the resource group. +// routeFilterName - the name of the route filter. +// expand - expands referenced express route bgp peering resources. +func (client RouteFiltersClient) Get(ctx context.Context, resourceGroupName string, routeFilterName string, expand string) (result RouteFilter, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteFiltersClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, routeFilterName, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFiltersClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.RouteFiltersClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFiltersClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client RouteFiltersClient) GetPreparer(ctx context.Context, resourceGroupName string, routeFilterName string, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "routeFilterName": autorest.Encode("path", routeFilterName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client RouteFiltersClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client RouteFiltersClient) GetResponder(resp *http.Response) (result RouteFilter, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all route filters in a subscription. +func (client RouteFiltersClient) List(ctx context.Context) (result RouteFilterListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteFiltersClient.List") + defer func() { + sc := -1 + if result.rflr.Response.Response != nil { + sc = result.rflr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFiltersClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.rflr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.RouteFiltersClient", "List", resp, "Failure sending request") + return + } + + result.rflr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFiltersClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client RouteFiltersClient) ListPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/routeFilters", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client RouteFiltersClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client RouteFiltersClient) ListResponder(resp *http.Response) (result RouteFilterListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client RouteFiltersClient) listNextResults(ctx context.Context, lastResults RouteFilterListResult) (result RouteFilterListResult, err error) { + req, err := lastResults.routeFilterListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.RouteFiltersClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.RouteFiltersClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFiltersClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client RouteFiltersClient) ListComplete(ctx context.Context) (result RouteFilterListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteFiltersClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx) + return +} + +// ListByResourceGroup gets all route filters in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client RouteFiltersClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result RouteFilterListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteFiltersClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.rflr.Response.Response != nil { + sc = result.rflr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listByResourceGroupNextResults + req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFiltersClient", "ListByResourceGroup", nil, "Failure preparing request") + return + } + + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.rflr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.RouteFiltersClient", "ListByResourceGroup", resp, "Failure sending request") + return + } + + result.rflr, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFiltersClient", "ListByResourceGroup", resp, "Failure responding to request") + } + + return +} + +// ListByResourceGroupPreparer prepares the ListByResourceGroup request. +func (client RouteFiltersClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the +// http.Response Body if it receives an error. +func (client RouteFiltersClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always +// closes the http.Response Body. +func (client RouteFiltersClient) ListByResourceGroupResponder(resp *http.Response) (result RouteFilterListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listByResourceGroupNextResults retrieves the next set of results, if any. +func (client RouteFiltersClient) listByResourceGroupNextResults(ctx context.Context, lastResults RouteFilterListResult) (result RouteFilterListResult, err error) { + req, err := lastResults.routeFilterListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.RouteFiltersClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.RouteFiltersClient", "listByResourceGroupNextResults", resp, "Failure sending next results request") + } + result, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFiltersClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. +func (client RouteFiltersClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result RouteFilterListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteFiltersClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListByResourceGroup(ctx, resourceGroupName) + return +} + +// UpdateTags updates tags of a route filter. +// Parameters: +// resourceGroupName - the name of the resource group. +// routeFilterName - the name of the route filter. +// parameters - parameters supplied to update route filter tags. +func (client RouteFiltersClient) UpdateTags(ctx context.Context, resourceGroupName string, routeFilterName string, parameters TagsObject) (result RouteFilter, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteFiltersClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, routeFilterName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFiltersClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.RouteFiltersClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteFiltersClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client RouteFiltersClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, routeFilterName string, parameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "routeFilterName": autorest.Encode("path", routeFilterName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client RouteFiltersClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client RouteFiltersClient) UpdateTagsResponder(resp *http.Response) (result RouteFilter, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/routes.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/routes.go new file mode 100644 index 0000000..53d9df1 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/routes.go @@ -0,0 +1,393 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// RoutesClient is the network Client +type RoutesClient struct { + BaseClient +} + +// NewRoutesClient creates an instance of the RoutesClient client. +func NewRoutesClient(subscriptionID string) RoutesClient { + return NewRoutesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewRoutesClientWithBaseURI creates an instance of the RoutesClient client using a custom endpoint. Use this when +// interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewRoutesClientWithBaseURI(baseURI string, subscriptionID string) RoutesClient { + return RoutesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a route in the specified route table. +// Parameters: +// resourceGroupName - the name of the resource group. +// routeTableName - the name of the route table. +// routeName - the name of the route. +// routeParameters - parameters supplied to the create or update route operation. +func (client RoutesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, routeTableName string, routeName string, routeParameters Route) (result RoutesCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RoutesClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, routeTableName, routeName, routeParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RoutesClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RoutesClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client RoutesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, routeTableName string, routeName string, routeParameters Route) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "routeName": autorest.Encode("path", routeName), + "routeTableName": autorest.Encode("path", routeTableName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + routeParameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}", pathParameters), + autorest.WithJSON(routeParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client RoutesClient) CreateOrUpdateSender(req *http.Request) (future RoutesCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client RoutesClient) CreateOrUpdateResponder(resp *http.Response) (result Route, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified route from a route table. +// Parameters: +// resourceGroupName - the name of the resource group. +// routeTableName - the name of the route table. +// routeName - the name of the route. +func (client RoutesClient) Delete(ctx context.Context, resourceGroupName string, routeTableName string, routeName string) (result RoutesDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RoutesClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, routeTableName, routeName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RoutesClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RoutesClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client RoutesClient) DeletePreparer(ctx context.Context, resourceGroupName string, routeTableName string, routeName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "routeName": autorest.Encode("path", routeName), + "routeTableName": autorest.Encode("path", routeTableName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client RoutesClient) DeleteSender(req *http.Request) (future RoutesDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client RoutesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified route from a route table. +// Parameters: +// resourceGroupName - the name of the resource group. +// routeTableName - the name of the route table. +// routeName - the name of the route. +func (client RoutesClient) Get(ctx context.Context, resourceGroupName string, routeTableName string, routeName string) (result Route, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RoutesClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, routeTableName, routeName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RoutesClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.RoutesClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RoutesClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client RoutesClient) GetPreparer(ctx context.Context, resourceGroupName string, routeTableName string, routeName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "routeName": autorest.Encode("path", routeName), + "routeTableName": autorest.Encode("path", routeTableName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client RoutesClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client RoutesClient) GetResponder(resp *http.Response) (result Route, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all routes in a route table. +// Parameters: +// resourceGroupName - the name of the resource group. +// routeTableName - the name of the route table. +func (client RoutesClient) List(ctx context.Context, resourceGroupName string, routeTableName string) (result RouteListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RoutesClient.List") + defer func() { + sc := -1 + if result.rlr.Response.Response != nil { + sc = result.rlr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, routeTableName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RoutesClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.rlr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.RoutesClient", "List", resp, "Failure sending request") + return + } + + result.rlr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RoutesClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client RoutesClient) ListPreparer(ctx context.Context, resourceGroupName string, routeTableName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "routeTableName": autorest.Encode("path", routeTableName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client RoutesClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client RoutesClient) ListResponder(resp *http.Response) (result RouteListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client RoutesClient) listNextResults(ctx context.Context, lastResults RouteListResult) (result RouteListResult, err error) { + req, err := lastResults.routeListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.RoutesClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.RoutesClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RoutesClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client RoutesClient) ListComplete(ctx context.Context, resourceGroupName string, routeTableName string) (result RouteListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RoutesClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, routeTableName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/routetables.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/routetables.go new file mode 100644 index 0000000..ec2578b --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/routetables.go @@ -0,0 +1,577 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// RouteTablesClient is the network Client +type RouteTablesClient struct { + BaseClient +} + +// NewRouteTablesClient creates an instance of the RouteTablesClient client. +func NewRouteTablesClient(subscriptionID string) RouteTablesClient { + return NewRouteTablesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewRouteTablesClientWithBaseURI creates an instance of the RouteTablesClient client using a custom endpoint. Use +// this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewRouteTablesClientWithBaseURI(baseURI string, subscriptionID string) RouteTablesClient { + return RouteTablesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate create or updates a route table in a specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// routeTableName - the name of the route table. +// parameters - parameters supplied to the create or update route table operation. +func (client RouteTablesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, routeTableName string, parameters RouteTable) (result RouteTablesCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteTablesClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, routeTableName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client RouteTablesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, routeTableName string, parameters RouteTable) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "routeTableName": autorest.Encode("path", routeTableName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client RouteTablesClient) CreateOrUpdateSender(req *http.Request) (future RouteTablesCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client RouteTablesClient) CreateOrUpdateResponder(resp *http.Response) (result RouteTable, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified route table. +// Parameters: +// resourceGroupName - the name of the resource group. +// routeTableName - the name of the route table. +func (client RouteTablesClient) Delete(ctx context.Context, resourceGroupName string, routeTableName string) (result RouteTablesDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteTablesClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, routeTableName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client RouteTablesClient) DeletePreparer(ctx context.Context, resourceGroupName string, routeTableName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "routeTableName": autorest.Encode("path", routeTableName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client RouteTablesClient) DeleteSender(req *http.Request) (future RouteTablesDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client RouteTablesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified route table. +// Parameters: +// resourceGroupName - the name of the resource group. +// routeTableName - the name of the route table. +// expand - expands referenced resources. +func (client RouteTablesClient) Get(ctx context.Context, resourceGroupName string, routeTableName string, expand string) (result RouteTable, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteTablesClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, routeTableName, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client RouteTablesClient) GetPreparer(ctx context.Context, resourceGroupName string, routeTableName string, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "routeTableName": autorest.Encode("path", routeTableName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client RouteTablesClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client RouteTablesClient) GetResponder(resp *http.Response) (result RouteTable, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all route tables in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client RouteTablesClient) List(ctx context.Context, resourceGroupName string) (result RouteTableListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteTablesClient.List") + defer func() { + sc := -1 + if result.rtlr.Response.Response != nil { + sc = result.rtlr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.rtlr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "List", resp, "Failure sending request") + return + } + + result.rtlr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client RouteTablesClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client RouteTablesClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client RouteTablesClient) ListResponder(resp *http.Response) (result RouteTableListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client RouteTablesClient) listNextResults(ctx context.Context, lastResults RouteTableListResult) (result RouteTableListResult, err error) { + req, err := lastResults.routeTableListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.RouteTablesClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.RouteTablesClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client RouteTablesClient) ListComplete(ctx context.Context, resourceGroupName string) (result RouteTableListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteTablesClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName) + return +} + +// ListAll gets all route tables in a subscription. +func (client RouteTablesClient) ListAll(ctx context.Context) (result RouteTableListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteTablesClient.ListAll") + defer func() { + sc := -1 + if result.rtlr.Response.Response != nil { + sc = result.rtlr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listAllNextResults + req, err := client.ListAllPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "ListAll", nil, "Failure preparing request") + return + } + + resp, err := client.ListAllSender(req) + if err != nil { + result.rtlr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "ListAll", resp, "Failure sending request") + return + } + + result.rtlr, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "ListAll", resp, "Failure responding to request") + } + + return +} + +// ListAllPreparer prepares the ListAll request. +func (client RouteTablesClient) ListAllPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/routeTables", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAllSender sends the ListAll request. The method will close the +// http.Response Body if it receives an error. +func (client RouteTablesClient) ListAllSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAllResponder handles the response to the ListAll request. The method always +// closes the http.Response Body. +func (client RouteTablesClient) ListAllResponder(resp *http.Response) (result RouteTableListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listAllNextResults retrieves the next set of results, if any. +func (client RouteTablesClient) listAllNextResults(ctx context.Context, lastResults RouteTableListResult) (result RouteTableListResult, err error) { + req, err := lastResults.routeTableListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.RouteTablesClient", "listAllNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListAllSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.RouteTablesClient", "listAllNextResults", resp, "Failure sending next results request") + } + result, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "listAllNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListAllComplete enumerates all values, automatically crossing page boundaries as required. +func (client RouteTablesClient) ListAllComplete(ctx context.Context) (result RouteTableListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteTablesClient.ListAll") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListAll(ctx) + return +} + +// UpdateTags updates a route table tags. +// Parameters: +// resourceGroupName - the name of the resource group. +// routeTableName - the name of the route table. +// parameters - parameters supplied to update route table tags. +func (client RouteTablesClient) UpdateTags(ctx context.Context, resourceGroupName string, routeTableName string, parameters TagsObject) (result RouteTable, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/RouteTablesClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, routeTableName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client RouteTablesClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, routeTableName string, parameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "routeTableName": autorest.Encode("path", routeTableName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client RouteTablesClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client RouteTablesClient) UpdateTagsResponder(resp *http.Response) (result RouteTable, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/securitygroups.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/securitygroups.go new file mode 100644 index 0000000..dd8cc43 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/securitygroups.go @@ -0,0 +1,577 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// SecurityGroupsClient is the network Client +type SecurityGroupsClient struct { + BaseClient +} + +// NewSecurityGroupsClient creates an instance of the SecurityGroupsClient client. +func NewSecurityGroupsClient(subscriptionID string) SecurityGroupsClient { + return NewSecurityGroupsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewSecurityGroupsClientWithBaseURI creates an instance of the SecurityGroupsClient client using a custom endpoint. +// Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewSecurityGroupsClientWithBaseURI(baseURI string, subscriptionID string) SecurityGroupsClient { + return SecurityGroupsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a network security group in the specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkSecurityGroupName - the name of the network security group. +// parameters - parameters supplied to the create or update network security group operation. +func (client SecurityGroupsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, parameters SecurityGroup) (result SecurityGroupsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SecurityGroupsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, networkSecurityGroupName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client SecurityGroupsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, parameters SecurityGroup) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkSecurityGroupName": autorest.Encode("path", networkSecurityGroupName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client SecurityGroupsClient) CreateOrUpdateSender(req *http.Request) (future SecurityGroupsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client SecurityGroupsClient) CreateOrUpdateResponder(resp *http.Response) (result SecurityGroup, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified network security group. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkSecurityGroupName - the name of the network security group. +func (client SecurityGroupsClient) Delete(ctx context.Context, resourceGroupName string, networkSecurityGroupName string) (result SecurityGroupsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SecurityGroupsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, networkSecurityGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client SecurityGroupsClient) DeletePreparer(ctx context.Context, resourceGroupName string, networkSecurityGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkSecurityGroupName": autorest.Encode("path", networkSecurityGroupName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client SecurityGroupsClient) DeleteSender(req *http.Request) (future SecurityGroupsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client SecurityGroupsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified network security group. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkSecurityGroupName - the name of the network security group. +// expand - expands referenced resources. +func (client SecurityGroupsClient) Get(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, expand string) (result SecurityGroup, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SecurityGroupsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, networkSecurityGroupName, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client SecurityGroupsClient) GetPreparer(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkSecurityGroupName": autorest.Encode("path", networkSecurityGroupName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client SecurityGroupsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client SecurityGroupsClient) GetResponder(resp *http.Response) (result SecurityGroup, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all network security groups in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client SecurityGroupsClient) List(ctx context.Context, resourceGroupName string) (result SecurityGroupListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SecurityGroupsClient.List") + defer func() { + sc := -1 + if result.sglr.Response.Response != nil { + sc = result.sglr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.sglr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "List", resp, "Failure sending request") + return + } + + result.sglr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client SecurityGroupsClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client SecurityGroupsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client SecurityGroupsClient) ListResponder(resp *http.Response) (result SecurityGroupListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client SecurityGroupsClient) listNextResults(ctx context.Context, lastResults SecurityGroupListResult) (result SecurityGroupListResult, err error) { + req, err := lastResults.securityGroupListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client SecurityGroupsClient) ListComplete(ctx context.Context, resourceGroupName string) (result SecurityGroupListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SecurityGroupsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName) + return +} + +// ListAll gets all network security groups in a subscription. +func (client SecurityGroupsClient) ListAll(ctx context.Context) (result SecurityGroupListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SecurityGroupsClient.ListAll") + defer func() { + sc := -1 + if result.sglr.Response.Response != nil { + sc = result.sglr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listAllNextResults + req, err := client.ListAllPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "ListAll", nil, "Failure preparing request") + return + } + + resp, err := client.ListAllSender(req) + if err != nil { + result.sglr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "ListAll", resp, "Failure sending request") + return + } + + result.sglr, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "ListAll", resp, "Failure responding to request") + } + + return +} + +// ListAllPreparer prepares the ListAll request. +func (client SecurityGroupsClient) ListAllPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkSecurityGroups", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAllSender sends the ListAll request. The method will close the +// http.Response Body if it receives an error. +func (client SecurityGroupsClient) ListAllSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAllResponder handles the response to the ListAll request. The method always +// closes the http.Response Body. +func (client SecurityGroupsClient) ListAllResponder(resp *http.Response) (result SecurityGroupListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listAllNextResults retrieves the next set of results, if any. +func (client SecurityGroupsClient) listAllNextResults(ctx context.Context, lastResults SecurityGroupListResult) (result SecurityGroupListResult, err error) { + req, err := lastResults.securityGroupListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "listAllNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListAllSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "listAllNextResults", resp, "Failure sending next results request") + } + result, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "listAllNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListAllComplete enumerates all values, automatically crossing page boundaries as required. +func (client SecurityGroupsClient) ListAllComplete(ctx context.Context) (result SecurityGroupListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SecurityGroupsClient.ListAll") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListAll(ctx) + return +} + +// UpdateTags updates a network security group tags. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkSecurityGroupName - the name of the network security group. +// parameters - parameters supplied to update network security group tags. +func (client SecurityGroupsClient) UpdateTags(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, parameters TagsObject) (result SecurityGroup, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SecurityGroupsClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, networkSecurityGroupName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client SecurityGroupsClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, parameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkSecurityGroupName": autorest.Encode("path", networkSecurityGroupName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client SecurityGroupsClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client SecurityGroupsClient) UpdateTagsResponder(resp *http.Response) (result SecurityGroup, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/securityrules.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/securityrules.go new file mode 100644 index 0000000..d71af60 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/securityrules.go @@ -0,0 +1,393 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// SecurityRulesClient is the network Client +type SecurityRulesClient struct { + BaseClient +} + +// NewSecurityRulesClient creates an instance of the SecurityRulesClient client. +func NewSecurityRulesClient(subscriptionID string) SecurityRulesClient { + return NewSecurityRulesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewSecurityRulesClientWithBaseURI creates an instance of the SecurityRulesClient client using a custom endpoint. +// Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewSecurityRulesClientWithBaseURI(baseURI string, subscriptionID string) SecurityRulesClient { + return SecurityRulesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a security rule in the specified network security group. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkSecurityGroupName - the name of the network security group. +// securityRuleName - the name of the security rule. +// securityRuleParameters - parameters supplied to the create or update network security rule operation. +func (client SecurityRulesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, securityRuleName string, securityRuleParameters SecurityRule) (result SecurityRulesCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SecurityRulesClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, networkSecurityGroupName, securityRuleName, securityRuleParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client SecurityRulesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, securityRuleName string, securityRuleParameters SecurityRule) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkSecurityGroupName": autorest.Encode("path", networkSecurityGroupName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "securityRuleName": autorest.Encode("path", securityRuleName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + securityRuleParameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules/{securityRuleName}", pathParameters), + autorest.WithJSON(securityRuleParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client SecurityRulesClient) CreateOrUpdateSender(req *http.Request) (future SecurityRulesCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client SecurityRulesClient) CreateOrUpdateResponder(resp *http.Response) (result SecurityRule, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified network security rule. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkSecurityGroupName - the name of the network security group. +// securityRuleName - the name of the security rule. +func (client SecurityRulesClient) Delete(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, securityRuleName string) (result SecurityRulesDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SecurityRulesClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, networkSecurityGroupName, securityRuleName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client SecurityRulesClient) DeletePreparer(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, securityRuleName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkSecurityGroupName": autorest.Encode("path", networkSecurityGroupName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "securityRuleName": autorest.Encode("path", securityRuleName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules/{securityRuleName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client SecurityRulesClient) DeleteSender(req *http.Request) (future SecurityRulesDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client SecurityRulesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get get the specified network security rule. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkSecurityGroupName - the name of the network security group. +// securityRuleName - the name of the security rule. +func (client SecurityRulesClient) Get(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, securityRuleName string) (result SecurityRule, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SecurityRulesClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, networkSecurityGroupName, securityRuleName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client SecurityRulesClient) GetPreparer(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, securityRuleName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkSecurityGroupName": autorest.Encode("path", networkSecurityGroupName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "securityRuleName": autorest.Encode("path", securityRuleName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules/{securityRuleName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client SecurityRulesClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client SecurityRulesClient) GetResponder(resp *http.Response) (result SecurityRule, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all security rules in a network security group. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkSecurityGroupName - the name of the network security group. +func (client SecurityRulesClient) List(ctx context.Context, resourceGroupName string, networkSecurityGroupName string) (result SecurityRuleListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SecurityRulesClient.List") + defer func() { + sc := -1 + if result.srlr.Response.Response != nil { + sc = result.srlr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, networkSecurityGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.srlr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "List", resp, "Failure sending request") + return + } + + result.srlr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client SecurityRulesClient) ListPreparer(ctx context.Context, resourceGroupName string, networkSecurityGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkSecurityGroupName": autorest.Encode("path", networkSecurityGroupName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client SecurityRulesClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client SecurityRulesClient) ListResponder(resp *http.Response) (result SecurityRuleListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client SecurityRulesClient) listNextResults(ctx context.Context, lastResults SecurityRuleListResult) (result SecurityRuleListResult, err error) { + req, err := lastResults.securityRuleListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.SecurityRulesClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.SecurityRulesClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client SecurityRulesClient) ListComplete(ctx context.Context, resourceGroupName string, networkSecurityGroupName string) (result SecurityRuleListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SecurityRulesClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, networkSecurityGroupName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/serviceassociationlinks.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/serviceassociationlinks.go new file mode 100644 index 0000000..cf3926d --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/serviceassociationlinks.go @@ -0,0 +1,121 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// ServiceAssociationLinksClient is the network Client +type ServiceAssociationLinksClient struct { + BaseClient +} + +// NewServiceAssociationLinksClient creates an instance of the ServiceAssociationLinksClient client. +func NewServiceAssociationLinksClient(subscriptionID string) ServiceAssociationLinksClient { + return NewServiceAssociationLinksClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewServiceAssociationLinksClientWithBaseURI creates an instance of the ServiceAssociationLinksClient client using a +// custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, +// Azure stack). +func NewServiceAssociationLinksClientWithBaseURI(baseURI string, subscriptionID string) ServiceAssociationLinksClient { + return ServiceAssociationLinksClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// List gets a list of service association links for a subnet. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkName - the name of the virtual network. +// subnetName - the name of the subnet. +func (client ServiceAssociationLinksClient) List(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string) (result ServiceAssociationLinksListResult, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ServiceAssociationLinksClient.List") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ListPreparer(ctx, resourceGroupName, virtualNetworkName, subnetName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceAssociationLinksClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ServiceAssociationLinksClient", "List", resp, "Failure sending request") + return + } + + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceAssociationLinksClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client ServiceAssociationLinksClient) ListPreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subnetName": autorest.Encode("path", subnetName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkName": autorest.Encode("path", virtualNetworkName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}/ServiceAssociationLinks", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client ServiceAssociationLinksClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client ServiceAssociationLinksClient) ListResponder(resp *http.Response) (result ServiceAssociationLinksListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/serviceendpointpolicies.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/serviceendpointpolicies.go new file mode 100644 index 0000000..fdea138 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/serviceendpointpolicies.go @@ -0,0 +1,578 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// ServiceEndpointPoliciesClient is the network Client +type ServiceEndpointPoliciesClient struct { + BaseClient +} + +// NewServiceEndpointPoliciesClient creates an instance of the ServiceEndpointPoliciesClient client. +func NewServiceEndpointPoliciesClient(subscriptionID string) ServiceEndpointPoliciesClient { + return NewServiceEndpointPoliciesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewServiceEndpointPoliciesClientWithBaseURI creates an instance of the ServiceEndpointPoliciesClient client using a +// custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, +// Azure stack). +func NewServiceEndpointPoliciesClientWithBaseURI(baseURI string, subscriptionID string) ServiceEndpointPoliciesClient { + return ServiceEndpointPoliciesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a service Endpoint Policies. +// Parameters: +// resourceGroupName - the name of the resource group. +// serviceEndpointPolicyName - the name of the service endpoint policy. +// parameters - parameters supplied to the create or update service endpoint policy operation. +func (client ServiceEndpointPoliciesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, serviceEndpointPolicyName string, parameters ServiceEndpointPolicy) (result ServiceEndpointPoliciesCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ServiceEndpointPoliciesClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, serviceEndpointPolicyName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPoliciesClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPoliciesClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client ServiceEndpointPoliciesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, serviceEndpointPolicyName string, parameters ServiceEndpointPolicy) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "serviceEndpointPolicyName": autorest.Encode("path", serviceEndpointPolicyName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client ServiceEndpointPoliciesClient) CreateOrUpdateSender(req *http.Request) (future ServiceEndpointPoliciesCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client ServiceEndpointPoliciesClient) CreateOrUpdateResponder(resp *http.Response) (result ServiceEndpointPolicy, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified service endpoint policy. +// Parameters: +// resourceGroupName - the name of the resource group. +// serviceEndpointPolicyName - the name of the service endpoint policy. +func (client ServiceEndpointPoliciesClient) Delete(ctx context.Context, resourceGroupName string, serviceEndpointPolicyName string) (result ServiceEndpointPoliciesDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ServiceEndpointPoliciesClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, serviceEndpointPolicyName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPoliciesClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPoliciesClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client ServiceEndpointPoliciesClient) DeletePreparer(ctx context.Context, resourceGroupName string, serviceEndpointPolicyName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "serviceEndpointPolicyName": autorest.Encode("path", serviceEndpointPolicyName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client ServiceEndpointPoliciesClient) DeleteSender(req *http.Request) (future ServiceEndpointPoliciesDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client ServiceEndpointPoliciesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified service Endpoint Policies in a specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// serviceEndpointPolicyName - the name of the service endpoint policy. +// expand - expands referenced resources. +func (client ServiceEndpointPoliciesClient) Get(ctx context.Context, resourceGroupName string, serviceEndpointPolicyName string, expand string) (result ServiceEndpointPolicy, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ServiceEndpointPoliciesClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, serviceEndpointPolicyName, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPoliciesClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPoliciesClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPoliciesClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client ServiceEndpointPoliciesClient) GetPreparer(ctx context.Context, resourceGroupName string, serviceEndpointPolicyName string, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "serviceEndpointPolicyName": autorest.Encode("path", serviceEndpointPolicyName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client ServiceEndpointPoliciesClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client ServiceEndpointPoliciesClient) GetResponder(resp *http.Response) (result ServiceEndpointPolicy, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all the service endpoint policies in a subscription. +func (client ServiceEndpointPoliciesClient) List(ctx context.Context) (result ServiceEndpointPolicyListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ServiceEndpointPoliciesClient.List") + defer func() { + sc := -1 + if result.seplr.Response.Response != nil { + sc = result.seplr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPoliciesClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.seplr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPoliciesClient", "List", resp, "Failure sending request") + return + } + + result.seplr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPoliciesClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client ServiceEndpointPoliciesClient) ListPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/ServiceEndpointPolicies", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client ServiceEndpointPoliciesClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client ServiceEndpointPoliciesClient) ListResponder(resp *http.Response) (result ServiceEndpointPolicyListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client ServiceEndpointPoliciesClient) listNextResults(ctx context.Context, lastResults ServiceEndpointPolicyListResult) (result ServiceEndpointPolicyListResult, err error) { + req, err := lastResults.serviceEndpointPolicyListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.ServiceEndpointPoliciesClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.ServiceEndpointPoliciesClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPoliciesClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client ServiceEndpointPoliciesClient) ListComplete(ctx context.Context) (result ServiceEndpointPolicyListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ServiceEndpointPoliciesClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx) + return +} + +// ListByResourceGroup gets all service endpoint Policies in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client ServiceEndpointPoliciesClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result ServiceEndpointPolicyListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ServiceEndpointPoliciesClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.seplr.Response.Response != nil { + sc = result.seplr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listByResourceGroupNextResults + req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPoliciesClient", "ListByResourceGroup", nil, "Failure preparing request") + return + } + + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.seplr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPoliciesClient", "ListByResourceGroup", resp, "Failure sending request") + return + } + + result.seplr, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPoliciesClient", "ListByResourceGroup", resp, "Failure responding to request") + } + + return +} + +// ListByResourceGroupPreparer prepares the ListByResourceGroup request. +func (client ServiceEndpointPoliciesClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the +// http.Response Body if it receives an error. +func (client ServiceEndpointPoliciesClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always +// closes the http.Response Body. +func (client ServiceEndpointPoliciesClient) ListByResourceGroupResponder(resp *http.Response) (result ServiceEndpointPolicyListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listByResourceGroupNextResults retrieves the next set of results, if any. +func (client ServiceEndpointPoliciesClient) listByResourceGroupNextResults(ctx context.Context, lastResults ServiceEndpointPolicyListResult) (result ServiceEndpointPolicyListResult, err error) { + req, err := lastResults.serviceEndpointPolicyListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.ServiceEndpointPoliciesClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.ServiceEndpointPoliciesClient", "listByResourceGroupNextResults", resp, "Failure sending next results request") + } + result, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPoliciesClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. +func (client ServiceEndpointPoliciesClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result ServiceEndpointPolicyListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ServiceEndpointPoliciesClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListByResourceGroup(ctx, resourceGroupName) + return +} + +// UpdateTags updates tags of a service endpoint policy. +// Parameters: +// resourceGroupName - the name of the resource group. +// serviceEndpointPolicyName - the name of the service endpoint policy. +// parameters - parameters supplied to update service endpoint policy tags. +func (client ServiceEndpointPoliciesClient) UpdateTags(ctx context.Context, resourceGroupName string, serviceEndpointPolicyName string, parameters TagsObject) (result ServiceEndpointPolicy, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ServiceEndpointPoliciesClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, serviceEndpointPolicyName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPoliciesClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPoliciesClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPoliciesClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client ServiceEndpointPoliciesClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, serviceEndpointPolicyName string, parameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "serviceEndpointPolicyName": autorest.Encode("path", serviceEndpointPolicyName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client ServiceEndpointPoliciesClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client ServiceEndpointPoliciesClient) UpdateTagsResponder(resp *http.Response) (result ServiceEndpointPolicy, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/serviceendpointpolicydefinitions.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/serviceendpointpolicydefinitions.go new file mode 100644 index 0000000..20d3532 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/serviceendpointpolicydefinitions.go @@ -0,0 +1,395 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// ServiceEndpointPolicyDefinitionsClient is the network Client +type ServiceEndpointPolicyDefinitionsClient struct { + BaseClient +} + +// NewServiceEndpointPolicyDefinitionsClient creates an instance of the ServiceEndpointPolicyDefinitionsClient client. +func NewServiceEndpointPolicyDefinitionsClient(subscriptionID string) ServiceEndpointPolicyDefinitionsClient { + return NewServiceEndpointPolicyDefinitionsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewServiceEndpointPolicyDefinitionsClientWithBaseURI creates an instance of the +// ServiceEndpointPolicyDefinitionsClient client using a custom endpoint. Use this when interacting with an Azure +// cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewServiceEndpointPolicyDefinitionsClientWithBaseURI(baseURI string, subscriptionID string) ServiceEndpointPolicyDefinitionsClient { + return ServiceEndpointPolicyDefinitionsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a service endpoint policy definition in the specified service endpoint policy. +// Parameters: +// resourceGroupName - the name of the resource group. +// serviceEndpointPolicyName - the name of the service endpoint policy. +// serviceEndpointPolicyDefinitionName - the name of the service endpoint policy definition name. +// serviceEndpointPolicyDefinitions - parameters supplied to the create or update service endpoint policy +// operation. +func (client ServiceEndpointPolicyDefinitionsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, serviceEndpointPolicyName string, serviceEndpointPolicyDefinitionName string, serviceEndpointPolicyDefinitions ServiceEndpointPolicyDefinition) (result ServiceEndpointPolicyDefinitionsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ServiceEndpointPolicyDefinitionsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, serviceEndpointPolicyName, serviceEndpointPolicyDefinitionName, serviceEndpointPolicyDefinitions) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPolicyDefinitionsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPolicyDefinitionsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client ServiceEndpointPolicyDefinitionsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, serviceEndpointPolicyName string, serviceEndpointPolicyDefinitionName string, serviceEndpointPolicyDefinitions ServiceEndpointPolicyDefinition) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "serviceEndpointPolicyDefinitionName": autorest.Encode("path", serviceEndpointPolicyDefinitionName), + "serviceEndpointPolicyName": autorest.Encode("path", serviceEndpointPolicyName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + serviceEndpointPolicyDefinitions.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}/serviceEndpointPolicyDefinitions/{serviceEndpointPolicyDefinitionName}", pathParameters), + autorest.WithJSON(serviceEndpointPolicyDefinitions), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client ServiceEndpointPolicyDefinitionsClient) CreateOrUpdateSender(req *http.Request) (future ServiceEndpointPolicyDefinitionsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client ServiceEndpointPolicyDefinitionsClient) CreateOrUpdateResponder(resp *http.Response) (result ServiceEndpointPolicyDefinition, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified ServiceEndpoint policy definitions. +// Parameters: +// resourceGroupName - the name of the resource group. +// serviceEndpointPolicyName - the name of the Service Endpoint Policy. +// serviceEndpointPolicyDefinitionName - the name of the service endpoint policy definition. +func (client ServiceEndpointPolicyDefinitionsClient) Delete(ctx context.Context, resourceGroupName string, serviceEndpointPolicyName string, serviceEndpointPolicyDefinitionName string) (result ServiceEndpointPolicyDefinitionsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ServiceEndpointPolicyDefinitionsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, serviceEndpointPolicyName, serviceEndpointPolicyDefinitionName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPolicyDefinitionsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPolicyDefinitionsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client ServiceEndpointPolicyDefinitionsClient) DeletePreparer(ctx context.Context, resourceGroupName string, serviceEndpointPolicyName string, serviceEndpointPolicyDefinitionName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "serviceEndpointPolicyDefinitionName": autorest.Encode("path", serviceEndpointPolicyDefinitionName), + "serviceEndpointPolicyName": autorest.Encode("path", serviceEndpointPolicyName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}/serviceEndpointPolicyDefinitions/{serviceEndpointPolicyDefinitionName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client ServiceEndpointPolicyDefinitionsClient) DeleteSender(req *http.Request) (future ServiceEndpointPolicyDefinitionsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client ServiceEndpointPolicyDefinitionsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get get the specified service endpoint policy definitions from service endpoint policy. +// Parameters: +// resourceGroupName - the name of the resource group. +// serviceEndpointPolicyName - the name of the service endpoint policy name. +// serviceEndpointPolicyDefinitionName - the name of the service endpoint policy definition name. +func (client ServiceEndpointPolicyDefinitionsClient) Get(ctx context.Context, resourceGroupName string, serviceEndpointPolicyName string, serviceEndpointPolicyDefinitionName string) (result ServiceEndpointPolicyDefinition, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ServiceEndpointPolicyDefinitionsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, serviceEndpointPolicyName, serviceEndpointPolicyDefinitionName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPolicyDefinitionsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPolicyDefinitionsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPolicyDefinitionsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client ServiceEndpointPolicyDefinitionsClient) GetPreparer(ctx context.Context, resourceGroupName string, serviceEndpointPolicyName string, serviceEndpointPolicyDefinitionName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "serviceEndpointPolicyDefinitionName": autorest.Encode("path", serviceEndpointPolicyDefinitionName), + "serviceEndpointPolicyName": autorest.Encode("path", serviceEndpointPolicyName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}/serviceEndpointPolicyDefinitions/{serviceEndpointPolicyDefinitionName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client ServiceEndpointPolicyDefinitionsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client ServiceEndpointPolicyDefinitionsClient) GetResponder(resp *http.Response) (result ServiceEndpointPolicyDefinition, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// ListByResourceGroup gets all service endpoint policy definitions in a service end point policy. +// Parameters: +// resourceGroupName - the name of the resource group. +// serviceEndpointPolicyName - the name of the service endpoint policy name. +func (client ServiceEndpointPolicyDefinitionsClient) ListByResourceGroup(ctx context.Context, resourceGroupName string, serviceEndpointPolicyName string) (result ServiceEndpointPolicyDefinitionListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ServiceEndpointPolicyDefinitionsClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.sepdlr.Response.Response != nil { + sc = result.sepdlr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listByResourceGroupNextResults + req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName, serviceEndpointPolicyName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPolicyDefinitionsClient", "ListByResourceGroup", nil, "Failure preparing request") + return + } + + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.sepdlr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPolicyDefinitionsClient", "ListByResourceGroup", resp, "Failure sending request") + return + } + + result.sepdlr, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPolicyDefinitionsClient", "ListByResourceGroup", resp, "Failure responding to request") + } + + return +} + +// ListByResourceGroupPreparer prepares the ListByResourceGroup request. +func (client ServiceEndpointPolicyDefinitionsClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string, serviceEndpointPolicyName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "serviceEndpointPolicyName": autorest.Encode("path", serviceEndpointPolicyName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/serviceEndpointPolicies/{serviceEndpointPolicyName}/serviceEndpointPolicyDefinitions", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the +// http.Response Body if it receives an error. +func (client ServiceEndpointPolicyDefinitionsClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always +// closes the http.Response Body. +func (client ServiceEndpointPolicyDefinitionsClient) ListByResourceGroupResponder(resp *http.Response) (result ServiceEndpointPolicyDefinitionListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listByResourceGroupNextResults retrieves the next set of results, if any. +func (client ServiceEndpointPolicyDefinitionsClient) listByResourceGroupNextResults(ctx context.Context, lastResults ServiceEndpointPolicyDefinitionListResult) (result ServiceEndpointPolicyDefinitionListResult, err error) { + req, err := lastResults.serviceEndpointPolicyDefinitionListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.ServiceEndpointPolicyDefinitionsClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.ServiceEndpointPolicyDefinitionsClient", "listByResourceGroupNextResults", resp, "Failure sending next results request") + } + result, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceEndpointPolicyDefinitionsClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. +func (client ServiceEndpointPolicyDefinitionsClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string, serviceEndpointPolicyName string) (result ServiceEndpointPolicyDefinitionListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ServiceEndpointPolicyDefinitionsClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListByResourceGroup(ctx, resourceGroupName, serviceEndpointPolicyName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/servicetags.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/servicetags.go new file mode 100644 index 0000000..d3a4fa0 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/servicetags.go @@ -0,0 +1,118 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// ServiceTagsClient is the network Client +type ServiceTagsClient struct { + BaseClient +} + +// NewServiceTagsClient creates an instance of the ServiceTagsClient client. +func NewServiceTagsClient(subscriptionID string) ServiceTagsClient { + return NewServiceTagsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewServiceTagsClientWithBaseURI creates an instance of the ServiceTagsClient client using a custom endpoint. Use +// this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewServiceTagsClientWithBaseURI(baseURI string, subscriptionID string) ServiceTagsClient { + return ServiceTagsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// List gets a list of service tag information resources. +// Parameters: +// location - the location that will be used as a reference for version (not as a filter based on location, you +// will get the list of service tags with prefix details across all regions but limited to the cloud that your +// subscription belongs to). +func (client ServiceTagsClient) List(ctx context.Context, location string) (result ServiceTagsListResult, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ServiceTagsClient.List") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ListPreparer(ctx, location) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceTagsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.ServiceTagsClient", "List", resp, "Failure sending request") + return + } + + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.ServiceTagsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client ServiceTagsClient) ListPreparer(ctx context.Context, location string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "location": autorest.Encode("path", location), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/serviceTags", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client ServiceTagsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client ServiceTagsClient) ListResponder(resp *http.Response) (result ServiceTagsListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/subnets.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/subnets.go new file mode 100644 index 0000000..af4c98a --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/subnets.go @@ -0,0 +1,559 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// SubnetsClient is the network Client +type SubnetsClient struct { + BaseClient +} + +// NewSubnetsClient creates an instance of the SubnetsClient client. +func NewSubnetsClient(subscriptionID string) SubnetsClient { + return NewSubnetsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewSubnetsClientWithBaseURI creates an instance of the SubnetsClient client using a custom endpoint. Use this when +// interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewSubnetsClientWithBaseURI(baseURI string, subscriptionID string) SubnetsClient { + return SubnetsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a subnet in the specified virtual network. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkName - the name of the virtual network. +// subnetName - the name of the subnet. +// subnetParameters - parameters supplied to the create or update subnet operation. +func (client SubnetsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string, subnetParameters Subnet) (result SubnetsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SubnetsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, virtualNetworkName, subnetName, subnetParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SubnetsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SubnetsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client SubnetsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string, subnetParameters Subnet) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subnetName": autorest.Encode("path", subnetName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkName": autorest.Encode("path", virtualNetworkName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + subnetParameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}", pathParameters), + autorest.WithJSON(subnetParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client SubnetsClient) CreateOrUpdateSender(req *http.Request) (future SubnetsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client SubnetsClient) CreateOrUpdateResponder(resp *http.Response) (result Subnet, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified subnet. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkName - the name of the virtual network. +// subnetName - the name of the subnet. +func (client SubnetsClient) Delete(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string) (result SubnetsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SubnetsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, virtualNetworkName, subnetName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SubnetsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SubnetsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client SubnetsClient) DeletePreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subnetName": autorest.Encode("path", subnetName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkName": autorest.Encode("path", virtualNetworkName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client SubnetsClient) DeleteSender(req *http.Request) (future SubnetsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client SubnetsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified subnet by virtual network and resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkName - the name of the virtual network. +// subnetName - the name of the subnet. +// expand - expands referenced resources. +func (client SubnetsClient) Get(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string, expand string) (result Subnet, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SubnetsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, virtualNetworkName, subnetName, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SubnetsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.SubnetsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SubnetsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client SubnetsClient) GetPreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subnetName": autorest.Encode("path", subnetName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkName": autorest.Encode("path", virtualNetworkName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client SubnetsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client SubnetsClient) GetResponder(resp *http.Response) (result Subnet, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all subnets in a virtual network. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkName - the name of the virtual network. +func (client SubnetsClient) List(ctx context.Context, resourceGroupName string, virtualNetworkName string) (result SubnetListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SubnetsClient.List") + defer func() { + sc := -1 + if result.slr.Response.Response != nil { + sc = result.slr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, virtualNetworkName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SubnetsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.slr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.SubnetsClient", "List", resp, "Failure sending request") + return + } + + result.slr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SubnetsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client SubnetsClient) ListPreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkName": autorest.Encode("path", virtualNetworkName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client SubnetsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client SubnetsClient) ListResponder(resp *http.Response) (result SubnetListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client SubnetsClient) listNextResults(ctx context.Context, lastResults SubnetListResult) (result SubnetListResult, err error) { + req, err := lastResults.subnetListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.SubnetsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.SubnetsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SubnetsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client SubnetsClient) ListComplete(ctx context.Context, resourceGroupName string, virtualNetworkName string) (result SubnetListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SubnetsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, virtualNetworkName) + return +} + +// PrepareNetworkPolicies prepares a subnet by applying network intent policies. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkName - the name of the virtual network. +// subnetName - the name of the subnet. +// prepareNetworkPoliciesRequestParameters - parameters supplied to prepare subnet by applying network intent +// policies. +func (client SubnetsClient) PrepareNetworkPolicies(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string, prepareNetworkPoliciesRequestParameters PrepareNetworkPoliciesRequest) (result SubnetsPrepareNetworkPoliciesFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SubnetsClient.PrepareNetworkPolicies") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.PrepareNetworkPoliciesPreparer(ctx, resourceGroupName, virtualNetworkName, subnetName, prepareNetworkPoliciesRequestParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SubnetsClient", "PrepareNetworkPolicies", nil, "Failure preparing request") + return + } + + result, err = client.PrepareNetworkPoliciesSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SubnetsClient", "PrepareNetworkPolicies", result.Response(), "Failure sending request") + return + } + + return +} + +// PrepareNetworkPoliciesPreparer prepares the PrepareNetworkPolicies request. +func (client SubnetsClient) PrepareNetworkPoliciesPreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string, prepareNetworkPoliciesRequestParameters PrepareNetworkPoliciesRequest) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subnetName": autorest.Encode("path", subnetName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkName": autorest.Encode("path", virtualNetworkName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}/PrepareNetworkPolicies", pathParameters), + autorest.WithJSON(prepareNetworkPoliciesRequestParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// PrepareNetworkPoliciesSender sends the PrepareNetworkPolicies request. The method will close the +// http.Response Body if it receives an error. +func (client SubnetsClient) PrepareNetworkPoliciesSender(req *http.Request) (future SubnetsPrepareNetworkPoliciesFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// PrepareNetworkPoliciesResponder handles the response to the PrepareNetworkPolicies request. The method always +// closes the http.Response Body. +func (client SubnetsClient) PrepareNetworkPoliciesResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByClosing()) + result.Response = resp + return +} + +// UnprepareNetworkPolicies unprepares a subnet by removing network intent policies. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkName - the name of the virtual network. +// subnetName - the name of the subnet. +// unprepareNetworkPoliciesRequestParameters - parameters supplied to unprepare subnet to remove network intent +// policies. +func (client SubnetsClient) UnprepareNetworkPolicies(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string, unprepareNetworkPoliciesRequestParameters UnprepareNetworkPoliciesRequest) (result SubnetsUnprepareNetworkPoliciesFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/SubnetsClient.UnprepareNetworkPolicies") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UnprepareNetworkPoliciesPreparer(ctx, resourceGroupName, virtualNetworkName, subnetName, unprepareNetworkPoliciesRequestParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SubnetsClient", "UnprepareNetworkPolicies", nil, "Failure preparing request") + return + } + + result, err = client.UnprepareNetworkPoliciesSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.SubnetsClient", "UnprepareNetworkPolicies", result.Response(), "Failure sending request") + return + } + + return +} + +// UnprepareNetworkPoliciesPreparer prepares the UnprepareNetworkPolicies request. +func (client SubnetsClient) UnprepareNetworkPoliciesPreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string, unprepareNetworkPoliciesRequestParameters UnprepareNetworkPoliciesRequest) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subnetName": autorest.Encode("path", subnetName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkName": autorest.Encode("path", virtualNetworkName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}/UnprepareNetworkPolicies", pathParameters), + autorest.WithJSON(unprepareNetworkPoliciesRequestParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UnprepareNetworkPoliciesSender sends the UnprepareNetworkPolicies request. The method will close the +// http.Response Body if it receives an error. +func (client SubnetsClient) UnprepareNetworkPoliciesSender(req *http.Request) (future SubnetsUnprepareNetworkPoliciesFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// UnprepareNetworkPoliciesResponder handles the response to the UnprepareNetworkPolicies request. The method always +// closes the http.Response Body. +func (client SubnetsClient) UnprepareNetworkPoliciesResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByClosing()) + result.Response = resp + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/usages.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/usages.go new file mode 100644 index 0000000..b4b1467 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/usages.go @@ -0,0 +1,161 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// UsagesClient is the network Client +type UsagesClient struct { + BaseClient +} + +// NewUsagesClient creates an instance of the UsagesClient client. +func NewUsagesClient(subscriptionID string) UsagesClient { + return NewUsagesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewUsagesClientWithBaseURI creates an instance of the UsagesClient client using a custom endpoint. Use this when +// interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewUsagesClientWithBaseURI(baseURI string, subscriptionID string) UsagesClient { + return UsagesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// List list network usages for a subscription. +// Parameters: +// location - the location where resource usage is queried. +func (client UsagesClient) List(ctx context.Context, location string) (result UsagesListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/UsagesClient.List") + defer func() { + sc := -1 + if result.ulr.Response.Response != nil { + sc = result.ulr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: location, + Constraints: []validation.Constraint{{Target: "location", Name: validation.Pattern, Rule: `^[-\w\._ ]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("network.UsagesClient", "List", err.Error()) + } + + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, location) + if err != nil { + err = autorest.NewErrorWithError(err, "network.UsagesClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.ulr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.UsagesClient", "List", resp, "Failure sending request") + return + } + + result.ulr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.UsagesClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client UsagesClient) ListPreparer(ctx context.Context, location string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "location": autorest.Encode("path", location), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/usages", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client UsagesClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client UsagesClient) ListResponder(resp *http.Response) (result UsagesListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client UsagesClient) listNextResults(ctx context.Context, lastResults UsagesListResult) (result UsagesListResult, err error) { + req, err := lastResults.usagesListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.UsagesClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.UsagesClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.UsagesClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client UsagesClient) ListComplete(ctx context.Context, location string) (result UsagesListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/UsagesClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, location) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/version.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/version.go new file mode 100644 index 0000000..5fab600 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/version.go @@ -0,0 +1,30 @@ +package network + +import "github.com/Azure/azure-sdk-for-go/version" + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +// UserAgent returns the UserAgent string to use when sending http.Requests. +func UserAgent() string { + return "Azure-SDK-For-Go/" + version.Number + " network/2019-09-01" +} + +// Version returns the semantic version (see http://semver.org) of the client. +func Version() string { + return version.Number +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualhubroutetablev2s.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualhubroutetablev2s.go new file mode 100644 index 0000000..52cbf2c --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualhubroutetablev2s.go @@ -0,0 +1,395 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// VirtualHubRouteTableV2sClient is the network Client +type VirtualHubRouteTableV2sClient struct { + BaseClient +} + +// NewVirtualHubRouteTableV2sClient creates an instance of the VirtualHubRouteTableV2sClient client. +func NewVirtualHubRouteTableV2sClient(subscriptionID string) VirtualHubRouteTableV2sClient { + return NewVirtualHubRouteTableV2sClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewVirtualHubRouteTableV2sClientWithBaseURI creates an instance of the VirtualHubRouteTableV2sClient client using a +// custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, +// Azure stack). +func NewVirtualHubRouteTableV2sClientWithBaseURI(baseURI string, subscriptionID string) VirtualHubRouteTableV2sClient { + return VirtualHubRouteTableV2sClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates a VirtualHubRouteTableV2 resource if it doesn't exist else updates the existing +// VirtualHubRouteTableV2. +// Parameters: +// resourceGroupName - the resource group name of the VirtualHub. +// virtualHubName - the name of the VirtualHub. +// routeTableName - the name of the VirtualHubRouteTableV2. +// virtualHubRouteTableV2Parameters - parameters supplied to create or update VirtualHubRouteTableV2. +func (client VirtualHubRouteTableV2sClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, virtualHubName string, routeTableName string, virtualHubRouteTableV2Parameters VirtualHubRouteTableV2) (result VirtualHubRouteTableV2sCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualHubRouteTableV2sClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, virtualHubName, routeTableName, virtualHubRouteTableV2Parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubRouteTableV2sClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubRouteTableV2sClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client VirtualHubRouteTableV2sClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, virtualHubName string, routeTableName string, virtualHubRouteTableV2Parameters VirtualHubRouteTableV2) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "routeTableName": autorest.Encode("path", routeTableName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualHubName": autorest.Encode("path", virtualHubName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + virtualHubRouteTableV2Parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routeTables/{routeTableName}", pathParameters), + autorest.WithJSON(virtualHubRouteTableV2Parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualHubRouteTableV2sClient) CreateOrUpdateSender(req *http.Request) (future VirtualHubRouteTableV2sCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client VirtualHubRouteTableV2sClient) CreateOrUpdateResponder(resp *http.Response) (result VirtualHubRouteTableV2, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes a VirtualHubRouteTableV2. +// Parameters: +// resourceGroupName - the resource group name of the VirtualHubRouteTableV2. +// virtualHubName - the name of the VirtualHub. +// routeTableName - the name of the VirtualHubRouteTableV2. +func (client VirtualHubRouteTableV2sClient) Delete(ctx context.Context, resourceGroupName string, virtualHubName string, routeTableName string) (result VirtualHubRouteTableV2sDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualHubRouteTableV2sClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, virtualHubName, routeTableName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubRouteTableV2sClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubRouteTableV2sClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client VirtualHubRouteTableV2sClient) DeletePreparer(ctx context.Context, resourceGroupName string, virtualHubName string, routeTableName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "routeTableName": autorest.Encode("path", routeTableName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualHubName": autorest.Encode("path", virtualHubName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routeTables/{routeTableName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualHubRouteTableV2sClient) DeleteSender(req *http.Request) (future VirtualHubRouteTableV2sDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client VirtualHubRouteTableV2sClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get retrieves the details of a VirtualHubRouteTableV2. +// Parameters: +// resourceGroupName - the resource group name of the VirtualHubRouteTableV2. +// virtualHubName - the name of the VirtualHub. +// routeTableName - the name of the VirtualHubRouteTableV2. +func (client VirtualHubRouteTableV2sClient) Get(ctx context.Context, resourceGroupName string, virtualHubName string, routeTableName string) (result VirtualHubRouteTableV2, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualHubRouteTableV2sClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, virtualHubName, routeTableName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubRouteTableV2sClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualHubRouteTableV2sClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubRouteTableV2sClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client VirtualHubRouteTableV2sClient) GetPreparer(ctx context.Context, resourceGroupName string, virtualHubName string, routeTableName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "routeTableName": autorest.Encode("path", routeTableName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualHubName": autorest.Encode("path", virtualHubName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routeTables/{routeTableName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualHubRouteTableV2sClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client VirtualHubRouteTableV2sClient) GetResponder(resp *http.Response) (result VirtualHubRouteTableV2, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List retrieves the details of all VirtualHubRouteTableV2s. +// Parameters: +// resourceGroupName - the resource group name of the VirtualHub. +// virtualHubName - the name of the VirtualHub. +func (client VirtualHubRouteTableV2sClient) List(ctx context.Context, resourceGroupName string, virtualHubName string) (result ListVirtualHubRouteTableV2sResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualHubRouteTableV2sClient.List") + defer func() { + sc := -1 + if result.lvhrtvr.Response.Response != nil { + sc = result.lvhrtvr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, virtualHubName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubRouteTableV2sClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.lvhrtvr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualHubRouteTableV2sClient", "List", resp, "Failure sending request") + return + } + + result.lvhrtvr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubRouteTableV2sClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client VirtualHubRouteTableV2sClient) ListPreparer(ctx context.Context, resourceGroupName string, virtualHubName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualHubName": autorest.Encode("path", virtualHubName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}/routeTables", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualHubRouteTableV2sClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client VirtualHubRouteTableV2sClient) ListResponder(resp *http.Response) (result ListVirtualHubRouteTableV2sResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client VirtualHubRouteTableV2sClient) listNextResults(ctx context.Context, lastResults ListVirtualHubRouteTableV2sResult) (result ListVirtualHubRouteTableV2sResult, err error) { + req, err := lastResults.listVirtualHubRouteTableV2sResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VirtualHubRouteTableV2sClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VirtualHubRouteTableV2sClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubRouteTableV2sClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client VirtualHubRouteTableV2sClient) ListComplete(ctx context.Context, resourceGroupName string, virtualHubName string) (result ListVirtualHubRouteTableV2sResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualHubRouteTableV2sClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, virtualHubName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualhubs.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualhubs.go new file mode 100644 index 0000000..ed46cd6 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualhubs.go @@ -0,0 +1,573 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// VirtualHubsClient is the network Client +type VirtualHubsClient struct { + BaseClient +} + +// NewVirtualHubsClient creates an instance of the VirtualHubsClient client. +func NewVirtualHubsClient(subscriptionID string) VirtualHubsClient { + return NewVirtualHubsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewVirtualHubsClientWithBaseURI creates an instance of the VirtualHubsClient client using a custom endpoint. Use +// this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewVirtualHubsClientWithBaseURI(baseURI string, subscriptionID string) VirtualHubsClient { + return VirtualHubsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates a VirtualHub resource if it doesn't exist else updates the existing VirtualHub. +// Parameters: +// resourceGroupName - the resource group name of the VirtualHub. +// virtualHubName - the name of the VirtualHub. +// virtualHubParameters - parameters supplied to create or update VirtualHub. +func (client VirtualHubsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, virtualHubName string, virtualHubParameters VirtualHub) (result VirtualHubsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualHubsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, virtualHubName, virtualHubParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client VirtualHubsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, virtualHubName string, virtualHubParameters VirtualHub) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualHubName": autorest.Encode("path", virtualHubName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + virtualHubParameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}", pathParameters), + autorest.WithJSON(virtualHubParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualHubsClient) CreateOrUpdateSender(req *http.Request) (future VirtualHubsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client VirtualHubsClient) CreateOrUpdateResponder(resp *http.Response) (result VirtualHub, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes a VirtualHub. +// Parameters: +// resourceGroupName - the resource group name of the VirtualHub. +// virtualHubName - the name of the VirtualHub. +func (client VirtualHubsClient) Delete(ctx context.Context, resourceGroupName string, virtualHubName string) (result VirtualHubsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualHubsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, virtualHubName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client VirtualHubsClient) DeletePreparer(ctx context.Context, resourceGroupName string, virtualHubName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualHubName": autorest.Encode("path", virtualHubName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualHubsClient) DeleteSender(req *http.Request) (future VirtualHubsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client VirtualHubsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get retrieves the details of a VirtualHub. +// Parameters: +// resourceGroupName - the resource group name of the VirtualHub. +// virtualHubName - the name of the VirtualHub. +func (client VirtualHubsClient) Get(ctx context.Context, resourceGroupName string, virtualHubName string) (result VirtualHub, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualHubsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, virtualHubName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualHubsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client VirtualHubsClient) GetPreparer(ctx context.Context, resourceGroupName string, virtualHubName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualHubName": autorest.Encode("path", virtualHubName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualHubsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client VirtualHubsClient) GetResponder(resp *http.Response) (result VirtualHub, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List lists all the VirtualHubs in a subscription. +func (client VirtualHubsClient) List(ctx context.Context) (result ListVirtualHubsResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualHubsClient.List") + defer func() { + sc := -1 + if result.lvhr.Response.Response != nil { + sc = result.lvhr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.lvhr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualHubsClient", "List", resp, "Failure sending request") + return + } + + result.lvhr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client VirtualHubsClient) ListPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualHubs", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualHubsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client VirtualHubsClient) ListResponder(resp *http.Response) (result ListVirtualHubsResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client VirtualHubsClient) listNextResults(ctx context.Context, lastResults ListVirtualHubsResult) (result ListVirtualHubsResult, err error) { + req, err := lastResults.listVirtualHubsResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VirtualHubsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VirtualHubsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client VirtualHubsClient) ListComplete(ctx context.Context) (result ListVirtualHubsResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualHubsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx) + return +} + +// ListByResourceGroup lists all the VirtualHubs in a resource group. +// Parameters: +// resourceGroupName - the resource group name of the VirtualHub. +func (client VirtualHubsClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result ListVirtualHubsResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualHubsClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.lvhr.Response.Response != nil { + sc = result.lvhr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listByResourceGroupNextResults + req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubsClient", "ListByResourceGroup", nil, "Failure preparing request") + return + } + + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.lvhr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualHubsClient", "ListByResourceGroup", resp, "Failure sending request") + return + } + + result.lvhr, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubsClient", "ListByResourceGroup", resp, "Failure responding to request") + } + + return +} + +// ListByResourceGroupPreparer prepares the ListByResourceGroup request. +func (client VirtualHubsClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualHubsClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always +// closes the http.Response Body. +func (client VirtualHubsClient) ListByResourceGroupResponder(resp *http.Response) (result ListVirtualHubsResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listByResourceGroupNextResults retrieves the next set of results, if any. +func (client VirtualHubsClient) listByResourceGroupNextResults(ctx context.Context, lastResults ListVirtualHubsResult) (result ListVirtualHubsResult, err error) { + req, err := lastResults.listVirtualHubsResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VirtualHubsClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VirtualHubsClient", "listByResourceGroupNextResults", resp, "Failure sending next results request") + } + result, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubsClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. +func (client VirtualHubsClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result ListVirtualHubsResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualHubsClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListByResourceGroup(ctx, resourceGroupName) + return +} + +// UpdateTags updates VirtualHub tags. +// Parameters: +// resourceGroupName - the resource group name of the VirtualHub. +// virtualHubName - the name of the VirtualHub. +// virtualHubParameters - parameters supplied to update VirtualHub tags. +func (client VirtualHubsClient) UpdateTags(ctx context.Context, resourceGroupName string, virtualHubName string, virtualHubParameters TagsObject) (result VirtualHub, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualHubsClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, virtualHubName, virtualHubParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubsClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualHubsClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualHubsClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client VirtualHubsClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, virtualHubName string, virtualHubParameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualHubName": autorest.Encode("path", virtualHubName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualHubs/{virtualHubName}", pathParameters), + autorest.WithJSON(virtualHubParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualHubsClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client VirtualHubsClient) UpdateTagsResponder(resp *http.Response) (result VirtualHub, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualnetworkgatewayconnections.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualnetworkgatewayconnections.go new file mode 100644 index 0000000..b396ca6 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualnetworkgatewayconnections.go @@ -0,0 +1,899 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// VirtualNetworkGatewayConnectionsClient is the network Client +type VirtualNetworkGatewayConnectionsClient struct { + BaseClient +} + +// NewVirtualNetworkGatewayConnectionsClient creates an instance of the VirtualNetworkGatewayConnectionsClient client. +func NewVirtualNetworkGatewayConnectionsClient(subscriptionID string) VirtualNetworkGatewayConnectionsClient { + return NewVirtualNetworkGatewayConnectionsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewVirtualNetworkGatewayConnectionsClientWithBaseURI creates an instance of the +// VirtualNetworkGatewayConnectionsClient client using a custom endpoint. Use this when interacting with an Azure +// cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewVirtualNetworkGatewayConnectionsClientWithBaseURI(baseURI string, subscriptionID string) VirtualNetworkGatewayConnectionsClient { + return VirtualNetworkGatewayConnectionsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a virtual network gateway connection in the specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayConnectionName - the name of the virtual network gateway connection. +// parameters - parameters supplied to the create or update virtual network gateway connection operation. +func (client VirtualNetworkGatewayConnectionsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters VirtualNetworkGatewayConnection) (result VirtualNetworkGatewayConnectionsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewayConnectionsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.VirtualNetworkGatewayConnectionPropertiesFormat", Name: validation.Null, Rule: true, + Chain: []validation.Constraint{{Target: "parameters.VirtualNetworkGatewayConnectionPropertiesFormat.VirtualNetworkGateway1", Name: validation.Null, Rule: true, + Chain: []validation.Constraint{{Target: "parameters.VirtualNetworkGatewayConnectionPropertiesFormat.VirtualNetworkGateway1.VirtualNetworkGatewayPropertiesFormat", Name: validation.Null, Rule: true, Chain: nil}}}, + {Target: "parameters.VirtualNetworkGatewayConnectionPropertiesFormat.VirtualNetworkGateway2", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.VirtualNetworkGatewayConnectionPropertiesFormat.VirtualNetworkGateway2.VirtualNetworkGatewayPropertiesFormat", Name: validation.Null, Rule: true, Chain: nil}}}, + {Target: "parameters.VirtualNetworkGatewayConnectionPropertiesFormat.LocalNetworkGateway2", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.VirtualNetworkGatewayConnectionPropertiesFormat.LocalNetworkGateway2.LocalNetworkGatewayPropertiesFormat", Name: validation.Null, Rule: true, Chain: nil}}}, + }}}}}); err != nil { + return result, validation.NewError("network.VirtualNetworkGatewayConnectionsClient", "CreateOrUpdate", err.Error()) + } + + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client VirtualNetworkGatewayConnectionsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters VirtualNetworkGatewayConnection) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayConnectionName": autorest.Encode("path", virtualNetworkGatewayConnectionName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewayConnectionsClient) CreateOrUpdateSender(req *http.Request) (future VirtualNetworkGatewayConnectionsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewayConnectionsClient) CreateOrUpdateResponder(resp *http.Response) (result VirtualNetworkGatewayConnection, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified virtual network Gateway connection. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayConnectionName - the name of the virtual network gateway connection. +func (client VirtualNetworkGatewayConnectionsClient) Delete(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string) (result VirtualNetworkGatewayConnectionsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewayConnectionsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, virtualNetworkGatewayConnectionName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client VirtualNetworkGatewayConnectionsClient) DeletePreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayConnectionName": autorest.Encode("path", virtualNetworkGatewayConnectionName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewayConnectionsClient) DeleteSender(req *http.Request) (future VirtualNetworkGatewayConnectionsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewayConnectionsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified virtual network gateway connection by resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayConnectionName - the name of the virtual network gateway connection. +func (client VirtualNetworkGatewayConnectionsClient) Get(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string) (result VirtualNetworkGatewayConnection, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewayConnectionsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, virtualNetworkGatewayConnectionName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client VirtualNetworkGatewayConnectionsClient) GetPreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayConnectionName": autorest.Encode("path", virtualNetworkGatewayConnectionName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewayConnectionsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewayConnectionsClient) GetResponder(resp *http.Response) (result VirtualNetworkGatewayConnection, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetSharedKey the Get VirtualNetworkGatewayConnectionSharedKey operation retrieves information about the specified +// virtual network gateway connection shared key through Network resource provider. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayConnectionName - the virtual network gateway connection shared key name. +func (client VirtualNetworkGatewayConnectionsClient) GetSharedKey(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string) (result ConnectionSharedKey, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewayConnectionsClient.GetSharedKey") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetSharedKeyPreparer(ctx, resourceGroupName, virtualNetworkGatewayConnectionName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "GetSharedKey", nil, "Failure preparing request") + return + } + + resp, err := client.GetSharedKeySender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "GetSharedKey", resp, "Failure sending request") + return + } + + result, err = client.GetSharedKeyResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "GetSharedKey", resp, "Failure responding to request") + } + + return +} + +// GetSharedKeyPreparer prepares the GetSharedKey request. +func (client VirtualNetworkGatewayConnectionsClient) GetSharedKeyPreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayConnectionName": autorest.Encode("path", virtualNetworkGatewayConnectionName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSharedKeySender sends the GetSharedKey request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewayConnectionsClient) GetSharedKeySender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetSharedKeyResponder handles the response to the GetSharedKey request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewayConnectionsClient) GetSharedKeyResponder(resp *http.Response) (result ConnectionSharedKey, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List the List VirtualNetworkGatewayConnections operation retrieves all the virtual network gateways connections +// created. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client VirtualNetworkGatewayConnectionsClient) List(ctx context.Context, resourceGroupName string) (result VirtualNetworkGatewayConnectionListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewayConnectionsClient.List") + defer func() { + sc := -1 + if result.vngclr.Response.Response != nil { + sc = result.vngclr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.vngclr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "List", resp, "Failure sending request") + return + } + + result.vngclr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client VirtualNetworkGatewayConnectionsClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewayConnectionsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewayConnectionsClient) ListResponder(resp *http.Response) (result VirtualNetworkGatewayConnectionListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client VirtualNetworkGatewayConnectionsClient) listNextResults(ctx context.Context, lastResults VirtualNetworkGatewayConnectionListResult) (result VirtualNetworkGatewayConnectionListResult, err error) { + req, err := lastResults.virtualNetworkGatewayConnectionListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client VirtualNetworkGatewayConnectionsClient) ListComplete(ctx context.Context, resourceGroupName string) (result VirtualNetworkGatewayConnectionListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewayConnectionsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName) + return +} + +// ResetSharedKey the VirtualNetworkGatewayConnectionResetSharedKey operation resets the virtual network gateway +// connection shared key for passed virtual network gateway connection in the specified resource group through Network +// resource provider. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayConnectionName - the virtual network gateway connection reset shared key Name. +// parameters - parameters supplied to the begin reset virtual network gateway connection shared key operation +// through network resource provider. +func (client VirtualNetworkGatewayConnectionsClient) ResetSharedKey(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters ConnectionResetSharedKey) (result VirtualNetworkGatewayConnectionsResetSharedKeyFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewayConnectionsClient.ResetSharedKey") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.KeyLength", Name: validation.Null, Rule: true, + Chain: []validation.Constraint{{Target: "parameters.KeyLength", Name: validation.InclusiveMaximum, Rule: int64(128), Chain: nil}, + {Target: "parameters.KeyLength", Name: validation.InclusiveMinimum, Rule: int64(1), Chain: nil}, + }}}}}); err != nil { + return result, validation.NewError("network.VirtualNetworkGatewayConnectionsClient", "ResetSharedKey", err.Error()) + } + + req, err := client.ResetSharedKeyPreparer(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "ResetSharedKey", nil, "Failure preparing request") + return + } + + result, err = client.ResetSharedKeySender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "ResetSharedKey", result.Response(), "Failure sending request") + return + } + + return +} + +// ResetSharedKeyPreparer prepares the ResetSharedKey request. +func (client VirtualNetworkGatewayConnectionsClient) ResetSharedKeyPreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters ConnectionResetSharedKey) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayConnectionName": autorest.Encode("path", virtualNetworkGatewayConnectionName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey/reset", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ResetSharedKeySender sends the ResetSharedKey request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewayConnectionsClient) ResetSharedKeySender(req *http.Request) (future VirtualNetworkGatewayConnectionsResetSharedKeyFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// ResetSharedKeyResponder handles the response to the ResetSharedKey request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewayConnectionsClient) ResetSharedKeyResponder(resp *http.Response) (result ConnectionResetSharedKey, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// SetSharedKey the Put VirtualNetworkGatewayConnectionSharedKey operation sets the virtual network gateway connection +// shared key for passed virtual network gateway connection in the specified resource group through Network resource +// provider. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayConnectionName - the virtual network gateway connection name. +// parameters - parameters supplied to the Begin Set Virtual Network Gateway connection Shared key operation +// throughNetwork resource provider. +func (client VirtualNetworkGatewayConnectionsClient) SetSharedKey(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters ConnectionSharedKey) (result VirtualNetworkGatewayConnectionsSetSharedKeyFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewayConnectionsClient.SetSharedKey") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.Value", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil { + return result, validation.NewError("network.VirtualNetworkGatewayConnectionsClient", "SetSharedKey", err.Error()) + } + + req, err := client.SetSharedKeyPreparer(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "SetSharedKey", nil, "Failure preparing request") + return + } + + result, err = client.SetSharedKeySender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "SetSharedKey", result.Response(), "Failure sending request") + return + } + + return +} + +// SetSharedKeyPreparer prepares the SetSharedKey request. +func (client VirtualNetworkGatewayConnectionsClient) SetSharedKeyPreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters ConnectionSharedKey) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayConnectionName": autorest.Encode("path", virtualNetworkGatewayConnectionName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// SetSharedKeySender sends the SetSharedKey request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewayConnectionsClient) SetSharedKeySender(req *http.Request) (future VirtualNetworkGatewayConnectionsSetSharedKeyFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// SetSharedKeyResponder handles the response to the SetSharedKey request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewayConnectionsClient) SetSharedKeyResponder(resp *http.Response) (result ConnectionSharedKey, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// StartPacketCapture starts packet capture on virtual network gateway connection in the specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayConnectionName - the name of the virtual network gateway connection. +// parameters - virtual network gateway packet capture parameters supplied to start packet capture on gateway +// connection. +func (client VirtualNetworkGatewayConnectionsClient) StartPacketCapture(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters *VpnPacketCaptureStartParameters) (result VirtualNetworkGatewayConnectionsStartPacketCaptureFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewayConnectionsClient.StartPacketCapture") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.StartPacketCapturePreparer(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "StartPacketCapture", nil, "Failure preparing request") + return + } + + result, err = client.StartPacketCaptureSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "StartPacketCapture", result.Response(), "Failure sending request") + return + } + + return +} + +// StartPacketCapturePreparer prepares the StartPacketCapture request. +func (client VirtualNetworkGatewayConnectionsClient) StartPacketCapturePreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters *VpnPacketCaptureStartParameters) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayConnectionName": autorest.Encode("path", virtualNetworkGatewayConnectionName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/startPacketCapture", pathParameters), + autorest.WithQueryParameters(queryParameters)) + if parameters != nil { + preparer = autorest.DecoratePreparer(preparer, + autorest.WithJSON(parameters)) + } + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// StartPacketCaptureSender sends the StartPacketCapture request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewayConnectionsClient) StartPacketCaptureSender(req *http.Request) (future VirtualNetworkGatewayConnectionsStartPacketCaptureFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// StartPacketCaptureResponder handles the response to the StartPacketCapture request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewayConnectionsClient) StartPacketCaptureResponder(resp *http.Response) (result String, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// StopPacketCapture stops packet capture on virtual network gateway connection in the specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayConnectionName - the name of the virtual network gateway Connection. +// parameters - virtual network gateway packet capture parameters supplied to stop packet capture on gateway +// connection. +func (client VirtualNetworkGatewayConnectionsClient) StopPacketCapture(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters VpnPacketCaptureStopParameters) (result VirtualNetworkGatewayConnectionsStopPacketCaptureFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewayConnectionsClient.StopPacketCapture") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.StopPacketCapturePreparer(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "StopPacketCapture", nil, "Failure preparing request") + return + } + + result, err = client.StopPacketCaptureSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "StopPacketCapture", result.Response(), "Failure sending request") + return + } + + return +} + +// StopPacketCapturePreparer prepares the StopPacketCapture request. +func (client VirtualNetworkGatewayConnectionsClient) StopPacketCapturePreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters VpnPacketCaptureStopParameters) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayConnectionName": autorest.Encode("path", virtualNetworkGatewayConnectionName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/stopPacketCapture", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// StopPacketCaptureSender sends the StopPacketCapture request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewayConnectionsClient) StopPacketCaptureSender(req *http.Request) (future VirtualNetworkGatewayConnectionsStopPacketCaptureFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// StopPacketCaptureResponder handles the response to the StopPacketCapture request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewayConnectionsClient) StopPacketCaptureResponder(resp *http.Response) (result String, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// UpdateTags updates a virtual network gateway connection tags. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayConnectionName - the name of the virtual network gateway connection. +// parameters - parameters supplied to update virtual network gateway connection tags. +func (client VirtualNetworkGatewayConnectionsClient) UpdateTags(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters TagsObject) (result VirtualNetworkGatewayConnectionsUpdateTagsFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewayConnectionsClient.UpdateTags") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "UpdateTags", nil, "Failure preparing request") + return + } + + result, err = client.UpdateTagsSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "UpdateTags", result.Response(), "Failure sending request") + return + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client VirtualNetworkGatewayConnectionsClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayConnectionName": autorest.Encode("path", virtualNetworkGatewayConnectionName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewayConnectionsClient) UpdateTagsSender(req *http.Request) (future VirtualNetworkGatewayConnectionsUpdateTagsFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewayConnectionsClient) UpdateTagsResponder(resp *http.Response) (result VirtualNetworkGatewayConnection, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualnetworkgateways.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualnetworkgateways.go new file mode 100644 index 0000000..a1d51a4 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualnetworkgateways.go @@ -0,0 +1,1776 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// VirtualNetworkGatewaysClient is the network Client +type VirtualNetworkGatewaysClient struct { + BaseClient +} + +// NewVirtualNetworkGatewaysClient creates an instance of the VirtualNetworkGatewaysClient client. +func NewVirtualNetworkGatewaysClient(subscriptionID string) VirtualNetworkGatewaysClient { + return NewVirtualNetworkGatewaysClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewVirtualNetworkGatewaysClientWithBaseURI creates an instance of the VirtualNetworkGatewaysClient client using a +// custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, +// Azure stack). +func NewVirtualNetworkGatewaysClientWithBaseURI(baseURI string, subscriptionID string) VirtualNetworkGatewaysClient { + return VirtualNetworkGatewaysClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a virtual network gateway in the specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayName - the name of the virtual network gateway. +// parameters - parameters supplied to create or update virtual network gateway operation. +func (client VirtualNetworkGatewaysClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, parameters VirtualNetworkGateway) (result VirtualNetworkGatewaysCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewaysClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.VirtualNetworkGatewayPropertiesFormat", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil { + return result, validation.NewError("network.VirtualNetworkGatewaysClient", "CreateOrUpdate", err.Error()) + } + + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, virtualNetworkGatewayName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client VirtualNetworkGatewaysClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, parameters VirtualNetworkGateway) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayName": autorest.Encode("path", virtualNetworkGatewayName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewaysClient) CreateOrUpdateSender(req *http.Request) (future VirtualNetworkGatewaysCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewaysClient) CreateOrUpdateResponder(resp *http.Response) (result VirtualNetworkGateway, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified virtual network gateway. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayName - the name of the virtual network gateway. +func (client VirtualNetworkGatewaysClient) Delete(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string) (result VirtualNetworkGatewaysDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewaysClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, virtualNetworkGatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client VirtualNetworkGatewaysClient) DeletePreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayName": autorest.Encode("path", virtualNetworkGatewayName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewaysClient) DeleteSender(req *http.Request) (future VirtualNetworkGatewaysDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewaysClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Generatevpnclientpackage generates VPN client package for P2S client of the virtual network gateway in the specified +// resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayName - the name of the virtual network gateway. +// parameters - parameters supplied to the generate virtual network gateway VPN client package operation. +func (client VirtualNetworkGatewaysClient) Generatevpnclientpackage(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, parameters VpnClientParameters) (result VirtualNetworkGatewaysGeneratevpnclientpackageFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewaysClient.Generatevpnclientpackage") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GeneratevpnclientpackagePreparer(ctx, resourceGroupName, virtualNetworkGatewayName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Generatevpnclientpackage", nil, "Failure preparing request") + return + } + + result, err = client.GeneratevpnclientpackageSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Generatevpnclientpackage", result.Response(), "Failure sending request") + return + } + + return +} + +// GeneratevpnclientpackagePreparer prepares the Generatevpnclientpackage request. +func (client VirtualNetworkGatewaysClient) GeneratevpnclientpackagePreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, parameters VpnClientParameters) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayName": autorest.Encode("path", virtualNetworkGatewayName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/generatevpnclientpackage", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GeneratevpnclientpackageSender sends the Generatevpnclientpackage request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewaysClient) GeneratevpnclientpackageSender(req *http.Request) (future VirtualNetworkGatewaysGeneratevpnclientpackageFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// GeneratevpnclientpackageResponder handles the response to the Generatevpnclientpackage request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewaysClient) GeneratevpnclientpackageResponder(resp *http.Response) (result String, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GenerateVpnProfile generates VPN profile for P2S client of the virtual network gateway in the specified resource +// group. Used for IKEV2 and radius based authentication. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayName - the name of the virtual network gateway. +// parameters - parameters supplied to the generate virtual network gateway VPN client package operation. +func (client VirtualNetworkGatewaysClient) GenerateVpnProfile(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, parameters VpnClientParameters) (result VirtualNetworkGatewaysGenerateVpnProfileFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewaysClient.GenerateVpnProfile") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GenerateVpnProfilePreparer(ctx, resourceGroupName, virtualNetworkGatewayName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "GenerateVpnProfile", nil, "Failure preparing request") + return + } + + result, err = client.GenerateVpnProfileSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "GenerateVpnProfile", result.Response(), "Failure sending request") + return + } + + return +} + +// GenerateVpnProfilePreparer prepares the GenerateVpnProfile request. +func (client VirtualNetworkGatewaysClient) GenerateVpnProfilePreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, parameters VpnClientParameters) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayName": autorest.Encode("path", virtualNetworkGatewayName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/generatevpnprofile", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GenerateVpnProfileSender sends the GenerateVpnProfile request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewaysClient) GenerateVpnProfileSender(req *http.Request) (future VirtualNetworkGatewaysGenerateVpnProfileFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// GenerateVpnProfileResponder handles the response to the GenerateVpnProfile request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewaysClient) GenerateVpnProfileResponder(resp *http.Response) (result String, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Get gets the specified virtual network gateway by resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayName - the name of the virtual network gateway. +func (client VirtualNetworkGatewaysClient) Get(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string) (result VirtualNetworkGateway, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewaysClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, virtualNetworkGatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client VirtualNetworkGatewaysClient) GetPreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayName": autorest.Encode("path", virtualNetworkGatewayName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewaysClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewaysClient) GetResponder(resp *http.Response) (result VirtualNetworkGateway, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetAdvertisedRoutes this operation retrieves a list of routes the virtual network gateway is advertising to the +// specified peer. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayName - the name of the virtual network gateway. +// peer - the IP address of the peer. +func (client VirtualNetworkGatewaysClient) GetAdvertisedRoutes(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, peer string) (result VirtualNetworkGatewaysGetAdvertisedRoutesFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewaysClient.GetAdvertisedRoutes") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetAdvertisedRoutesPreparer(ctx, resourceGroupName, virtualNetworkGatewayName, peer) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "GetAdvertisedRoutes", nil, "Failure preparing request") + return + } + + result, err = client.GetAdvertisedRoutesSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "GetAdvertisedRoutes", result.Response(), "Failure sending request") + return + } + + return +} + +// GetAdvertisedRoutesPreparer prepares the GetAdvertisedRoutes request. +func (client VirtualNetworkGatewaysClient) GetAdvertisedRoutesPreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, peer string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayName": autorest.Encode("path", virtualNetworkGatewayName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + "peer": autorest.Encode("query", peer), + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getAdvertisedRoutes", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetAdvertisedRoutesSender sends the GetAdvertisedRoutes request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewaysClient) GetAdvertisedRoutesSender(req *http.Request) (future VirtualNetworkGatewaysGetAdvertisedRoutesFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// GetAdvertisedRoutesResponder handles the response to the GetAdvertisedRoutes request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewaysClient) GetAdvertisedRoutesResponder(resp *http.Response) (result GatewayRouteListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetBgpPeerStatus the GetBgpPeerStatus operation retrieves the status of all BGP peers. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayName - the name of the virtual network gateway. +// peer - the IP address of the peer to retrieve the status of. +func (client VirtualNetworkGatewaysClient) GetBgpPeerStatus(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, peer string) (result VirtualNetworkGatewaysGetBgpPeerStatusFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewaysClient.GetBgpPeerStatus") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetBgpPeerStatusPreparer(ctx, resourceGroupName, virtualNetworkGatewayName, peer) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "GetBgpPeerStatus", nil, "Failure preparing request") + return + } + + result, err = client.GetBgpPeerStatusSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "GetBgpPeerStatus", result.Response(), "Failure sending request") + return + } + + return +} + +// GetBgpPeerStatusPreparer prepares the GetBgpPeerStatus request. +func (client VirtualNetworkGatewaysClient) GetBgpPeerStatusPreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, peer string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayName": autorest.Encode("path", virtualNetworkGatewayName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(peer) > 0 { + queryParameters["peer"] = autorest.Encode("query", peer) + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getBgpPeerStatus", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetBgpPeerStatusSender sends the GetBgpPeerStatus request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewaysClient) GetBgpPeerStatusSender(req *http.Request) (future VirtualNetworkGatewaysGetBgpPeerStatusFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// GetBgpPeerStatusResponder handles the response to the GetBgpPeerStatus request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewaysClient) GetBgpPeerStatusResponder(resp *http.Response) (result BgpPeerStatusListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetLearnedRoutes this operation retrieves a list of routes the virtual network gateway has learned, including routes +// learned from BGP peers. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayName - the name of the virtual network gateway. +func (client VirtualNetworkGatewaysClient) GetLearnedRoutes(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string) (result VirtualNetworkGatewaysGetLearnedRoutesFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewaysClient.GetLearnedRoutes") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetLearnedRoutesPreparer(ctx, resourceGroupName, virtualNetworkGatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "GetLearnedRoutes", nil, "Failure preparing request") + return + } + + result, err = client.GetLearnedRoutesSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "GetLearnedRoutes", result.Response(), "Failure sending request") + return + } + + return +} + +// GetLearnedRoutesPreparer prepares the GetLearnedRoutes request. +func (client VirtualNetworkGatewaysClient) GetLearnedRoutesPreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayName": autorest.Encode("path", virtualNetworkGatewayName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getLearnedRoutes", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetLearnedRoutesSender sends the GetLearnedRoutes request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewaysClient) GetLearnedRoutesSender(req *http.Request) (future VirtualNetworkGatewaysGetLearnedRoutesFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// GetLearnedRoutesResponder handles the response to the GetLearnedRoutes request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewaysClient) GetLearnedRoutesResponder(resp *http.Response) (result GatewayRouteListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetVpnclientConnectionHealth get VPN client connection health detail per P2S client connection of the virtual +// network gateway in the specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayName - the name of the virtual network gateway. +func (client VirtualNetworkGatewaysClient) GetVpnclientConnectionHealth(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string) (result VirtualNetworkGatewaysGetVpnclientConnectionHealthFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewaysClient.GetVpnclientConnectionHealth") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetVpnclientConnectionHealthPreparer(ctx, resourceGroupName, virtualNetworkGatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "GetVpnclientConnectionHealth", nil, "Failure preparing request") + return + } + + result, err = client.GetVpnclientConnectionHealthSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "GetVpnclientConnectionHealth", result.Response(), "Failure sending request") + return + } + + return +} + +// GetVpnclientConnectionHealthPreparer prepares the GetVpnclientConnectionHealth request. +func (client VirtualNetworkGatewaysClient) GetVpnclientConnectionHealthPreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayName": autorest.Encode("path", virtualNetworkGatewayName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getVpnClientConnectionHealth", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetVpnclientConnectionHealthSender sends the GetVpnclientConnectionHealth request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewaysClient) GetVpnclientConnectionHealthSender(req *http.Request) (future VirtualNetworkGatewaysGetVpnclientConnectionHealthFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// GetVpnclientConnectionHealthResponder handles the response to the GetVpnclientConnectionHealth request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewaysClient) GetVpnclientConnectionHealthResponder(resp *http.Response) (result VpnClientConnectionHealthDetailListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetVpnclientIpsecParameters the Get VpnclientIpsecParameters operation retrieves information about the vpnclient +// ipsec policy for P2S client of virtual network gateway in the specified resource group through Network resource +// provider. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayName - the virtual network gateway name. +func (client VirtualNetworkGatewaysClient) GetVpnclientIpsecParameters(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string) (result VirtualNetworkGatewaysGetVpnclientIpsecParametersFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewaysClient.GetVpnclientIpsecParameters") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetVpnclientIpsecParametersPreparer(ctx, resourceGroupName, virtualNetworkGatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "GetVpnclientIpsecParameters", nil, "Failure preparing request") + return + } + + result, err = client.GetVpnclientIpsecParametersSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "GetVpnclientIpsecParameters", result.Response(), "Failure sending request") + return + } + + return +} + +// GetVpnclientIpsecParametersPreparer prepares the GetVpnclientIpsecParameters request. +func (client VirtualNetworkGatewaysClient) GetVpnclientIpsecParametersPreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayName": autorest.Encode("path", virtualNetworkGatewayName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getvpnclientipsecparameters", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetVpnclientIpsecParametersSender sends the GetVpnclientIpsecParameters request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewaysClient) GetVpnclientIpsecParametersSender(req *http.Request) (future VirtualNetworkGatewaysGetVpnclientIpsecParametersFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// GetVpnclientIpsecParametersResponder handles the response to the GetVpnclientIpsecParameters request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewaysClient) GetVpnclientIpsecParametersResponder(resp *http.Response) (result VpnClientIPsecParameters, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetVpnProfilePackageURL gets pre-generated VPN profile for P2S client of the virtual network gateway in the +// specified resource group. The profile needs to be generated first using generateVpnProfile. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayName - the name of the virtual network gateway. +func (client VirtualNetworkGatewaysClient) GetVpnProfilePackageURL(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string) (result VirtualNetworkGatewaysGetVpnProfilePackageURLFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewaysClient.GetVpnProfilePackageURL") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetVpnProfilePackageURLPreparer(ctx, resourceGroupName, virtualNetworkGatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "GetVpnProfilePackageURL", nil, "Failure preparing request") + return + } + + result, err = client.GetVpnProfilePackageURLSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "GetVpnProfilePackageURL", result.Response(), "Failure sending request") + return + } + + return +} + +// GetVpnProfilePackageURLPreparer prepares the GetVpnProfilePackageURL request. +func (client VirtualNetworkGatewaysClient) GetVpnProfilePackageURLPreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayName": autorest.Encode("path", virtualNetworkGatewayName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getvpnprofilepackageurl", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetVpnProfilePackageURLSender sends the GetVpnProfilePackageURL request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewaysClient) GetVpnProfilePackageURLSender(req *http.Request) (future VirtualNetworkGatewaysGetVpnProfilePackageURLFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// GetVpnProfilePackageURLResponder handles the response to the GetVpnProfilePackageURL request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewaysClient) GetVpnProfilePackageURLResponder(resp *http.Response) (result String, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all virtual network gateways by resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client VirtualNetworkGatewaysClient) List(ctx context.Context, resourceGroupName string) (result VirtualNetworkGatewayListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewaysClient.List") + defer func() { + sc := -1 + if result.vnglr.Response.Response != nil { + sc = result.vnglr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.vnglr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "List", resp, "Failure sending request") + return + } + + result.vnglr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client VirtualNetworkGatewaysClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewaysClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewaysClient) ListResponder(resp *http.Response) (result VirtualNetworkGatewayListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client VirtualNetworkGatewaysClient) listNextResults(ctx context.Context, lastResults VirtualNetworkGatewayListResult) (result VirtualNetworkGatewayListResult, err error) { + req, err := lastResults.virtualNetworkGatewayListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client VirtualNetworkGatewaysClient) ListComplete(ctx context.Context, resourceGroupName string) (result VirtualNetworkGatewayListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewaysClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName) + return +} + +// ListConnections gets all the connections in a virtual network gateway. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayName - the name of the virtual network gateway. +func (client VirtualNetworkGatewaysClient) ListConnections(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string) (result VirtualNetworkGatewayListConnectionsResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewaysClient.ListConnections") + defer func() { + sc := -1 + if result.vnglcr.Response.Response != nil { + sc = result.vnglcr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listConnectionsNextResults + req, err := client.ListConnectionsPreparer(ctx, resourceGroupName, virtualNetworkGatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "ListConnections", nil, "Failure preparing request") + return + } + + resp, err := client.ListConnectionsSender(req) + if err != nil { + result.vnglcr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "ListConnections", resp, "Failure sending request") + return + } + + result.vnglcr, err = client.ListConnectionsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "ListConnections", resp, "Failure responding to request") + } + + return +} + +// ListConnectionsPreparer prepares the ListConnections request. +func (client VirtualNetworkGatewaysClient) ListConnectionsPreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayName": autorest.Encode("path", virtualNetworkGatewayName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/connections", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListConnectionsSender sends the ListConnections request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewaysClient) ListConnectionsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListConnectionsResponder handles the response to the ListConnections request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewaysClient) ListConnectionsResponder(resp *http.Response) (result VirtualNetworkGatewayListConnectionsResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listConnectionsNextResults retrieves the next set of results, if any. +func (client VirtualNetworkGatewaysClient) listConnectionsNextResults(ctx context.Context, lastResults VirtualNetworkGatewayListConnectionsResult) (result VirtualNetworkGatewayListConnectionsResult, err error) { + req, err := lastResults.virtualNetworkGatewayListConnectionsResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "listConnectionsNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListConnectionsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "listConnectionsNextResults", resp, "Failure sending next results request") + } + result, err = client.ListConnectionsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "listConnectionsNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListConnectionsComplete enumerates all values, automatically crossing page boundaries as required. +func (client VirtualNetworkGatewaysClient) ListConnectionsComplete(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string) (result VirtualNetworkGatewayListConnectionsResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewaysClient.ListConnections") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListConnections(ctx, resourceGroupName, virtualNetworkGatewayName) + return +} + +// Reset resets the primary of the virtual network gateway in the specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayName - the name of the virtual network gateway. +// gatewayVip - virtual network gateway vip address supplied to the begin reset of the active-active feature +// enabled gateway. +func (client VirtualNetworkGatewaysClient) Reset(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, gatewayVip string) (result VirtualNetworkGatewaysResetFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewaysClient.Reset") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ResetPreparer(ctx, resourceGroupName, virtualNetworkGatewayName, gatewayVip) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Reset", nil, "Failure preparing request") + return + } + + result, err = client.ResetSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Reset", result.Response(), "Failure sending request") + return + } + + return +} + +// ResetPreparer prepares the Reset request. +func (client VirtualNetworkGatewaysClient) ResetPreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, gatewayVip string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayName": autorest.Encode("path", virtualNetworkGatewayName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(gatewayVip) > 0 { + queryParameters["gatewayVip"] = autorest.Encode("query", gatewayVip) + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/reset", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ResetSender sends the Reset request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewaysClient) ResetSender(req *http.Request) (future VirtualNetworkGatewaysResetFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// ResetResponder handles the response to the Reset request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewaysClient) ResetResponder(resp *http.Response) (result VirtualNetworkGateway, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// ResetVpnClientSharedKey resets the VPN client shared key of the virtual network gateway in the specified resource +// group. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayName - the name of the virtual network gateway. +func (client VirtualNetworkGatewaysClient) ResetVpnClientSharedKey(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string) (result VirtualNetworkGatewaysResetVpnClientSharedKeyFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewaysClient.ResetVpnClientSharedKey") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ResetVpnClientSharedKeyPreparer(ctx, resourceGroupName, virtualNetworkGatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "ResetVpnClientSharedKey", nil, "Failure preparing request") + return + } + + result, err = client.ResetVpnClientSharedKeySender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "ResetVpnClientSharedKey", result.Response(), "Failure sending request") + return + } + + return +} + +// ResetVpnClientSharedKeyPreparer prepares the ResetVpnClientSharedKey request. +func (client VirtualNetworkGatewaysClient) ResetVpnClientSharedKeyPreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayName": autorest.Encode("path", virtualNetworkGatewayName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/resetvpnclientsharedkey", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ResetVpnClientSharedKeySender sends the ResetVpnClientSharedKey request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewaysClient) ResetVpnClientSharedKeySender(req *http.Request) (future VirtualNetworkGatewaysResetVpnClientSharedKeyFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// ResetVpnClientSharedKeyResponder handles the response to the ResetVpnClientSharedKey request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewaysClient) ResetVpnClientSharedKeyResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByClosing()) + result.Response = resp + return +} + +// SetVpnclientIpsecParameters the Set VpnclientIpsecParameters operation sets the vpnclient ipsec policy for P2S +// client of virtual network gateway in the specified resource group through Network resource provider. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayName - the name of the virtual network gateway. +// vpnclientIpsecParams - parameters supplied to the Begin Set vpnclient ipsec parameters of Virtual Network +// Gateway P2S client operation through Network resource provider. +func (client VirtualNetworkGatewaysClient) SetVpnclientIpsecParameters(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, vpnclientIpsecParams VpnClientIPsecParameters) (result VirtualNetworkGatewaysSetVpnclientIpsecParametersFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewaysClient.SetVpnclientIpsecParameters") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: vpnclientIpsecParams, + Constraints: []validation.Constraint{{Target: "vpnclientIpsecParams.SaLifeTimeSeconds", Name: validation.Null, Rule: true, Chain: nil}, + {Target: "vpnclientIpsecParams.SaDataSizeKilobytes", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil { + return result, validation.NewError("network.VirtualNetworkGatewaysClient", "SetVpnclientIpsecParameters", err.Error()) + } + + req, err := client.SetVpnclientIpsecParametersPreparer(ctx, resourceGroupName, virtualNetworkGatewayName, vpnclientIpsecParams) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "SetVpnclientIpsecParameters", nil, "Failure preparing request") + return + } + + result, err = client.SetVpnclientIpsecParametersSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "SetVpnclientIpsecParameters", result.Response(), "Failure sending request") + return + } + + return +} + +// SetVpnclientIpsecParametersPreparer prepares the SetVpnclientIpsecParameters request. +func (client VirtualNetworkGatewaysClient) SetVpnclientIpsecParametersPreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, vpnclientIpsecParams VpnClientIPsecParameters) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayName": autorest.Encode("path", virtualNetworkGatewayName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/setvpnclientipsecparameters", pathParameters), + autorest.WithJSON(vpnclientIpsecParams), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// SetVpnclientIpsecParametersSender sends the SetVpnclientIpsecParameters request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewaysClient) SetVpnclientIpsecParametersSender(req *http.Request) (future VirtualNetworkGatewaysSetVpnclientIpsecParametersFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// SetVpnclientIpsecParametersResponder handles the response to the SetVpnclientIpsecParameters request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewaysClient) SetVpnclientIpsecParametersResponder(resp *http.Response) (result VpnClientIPsecParameters, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// StartPacketCapture starts packet capture on virtual network gateway in the specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayName - the name of the virtual network gateway. +// parameters - virtual network gateway packet capture parameters supplied to start packet capture on gateway. +func (client VirtualNetworkGatewaysClient) StartPacketCapture(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, parameters *VpnPacketCaptureStartParameters) (result VirtualNetworkGatewaysStartPacketCaptureFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewaysClient.StartPacketCapture") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.StartPacketCapturePreparer(ctx, resourceGroupName, virtualNetworkGatewayName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "StartPacketCapture", nil, "Failure preparing request") + return + } + + result, err = client.StartPacketCaptureSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "StartPacketCapture", result.Response(), "Failure sending request") + return + } + + return +} + +// StartPacketCapturePreparer prepares the StartPacketCapture request. +func (client VirtualNetworkGatewaysClient) StartPacketCapturePreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, parameters *VpnPacketCaptureStartParameters) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayName": autorest.Encode("path", virtualNetworkGatewayName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/startPacketCapture", pathParameters), + autorest.WithQueryParameters(queryParameters)) + if parameters != nil { + preparer = autorest.DecoratePreparer(preparer, + autorest.WithJSON(parameters)) + } + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// StartPacketCaptureSender sends the StartPacketCapture request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewaysClient) StartPacketCaptureSender(req *http.Request) (future VirtualNetworkGatewaysStartPacketCaptureFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// StartPacketCaptureResponder handles the response to the StartPacketCapture request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewaysClient) StartPacketCaptureResponder(resp *http.Response) (result String, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// StopPacketCapture stops packet capture on virtual network gateway in the specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayName - the name of the virtual network gateway. +// parameters - virtual network gateway packet capture parameters supplied to stop packet capture on gateway. +func (client VirtualNetworkGatewaysClient) StopPacketCapture(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, parameters VpnPacketCaptureStopParameters) (result VirtualNetworkGatewaysStopPacketCaptureFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewaysClient.StopPacketCapture") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.StopPacketCapturePreparer(ctx, resourceGroupName, virtualNetworkGatewayName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "StopPacketCapture", nil, "Failure preparing request") + return + } + + result, err = client.StopPacketCaptureSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "StopPacketCapture", result.Response(), "Failure sending request") + return + } + + return +} + +// StopPacketCapturePreparer prepares the StopPacketCapture request. +func (client VirtualNetworkGatewaysClient) StopPacketCapturePreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, parameters VpnPacketCaptureStopParameters) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayName": autorest.Encode("path", virtualNetworkGatewayName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/stopPacketCapture", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// StopPacketCaptureSender sends the StopPacketCapture request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewaysClient) StopPacketCaptureSender(req *http.Request) (future VirtualNetworkGatewaysStopPacketCaptureFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// StopPacketCaptureResponder handles the response to the StopPacketCapture request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewaysClient) StopPacketCaptureResponder(resp *http.Response) (result String, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// SupportedVpnDevices gets a xml format representation for supported vpn devices. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayName - the name of the virtual network gateway. +func (client VirtualNetworkGatewaysClient) SupportedVpnDevices(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string) (result String, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewaysClient.SupportedVpnDevices") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.SupportedVpnDevicesPreparer(ctx, resourceGroupName, virtualNetworkGatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "SupportedVpnDevices", nil, "Failure preparing request") + return + } + + resp, err := client.SupportedVpnDevicesSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "SupportedVpnDevices", resp, "Failure sending request") + return + } + + result, err = client.SupportedVpnDevicesResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "SupportedVpnDevices", resp, "Failure responding to request") + } + + return +} + +// SupportedVpnDevicesPreparer prepares the SupportedVpnDevices request. +func (client VirtualNetworkGatewaysClient) SupportedVpnDevicesPreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayName": autorest.Encode("path", virtualNetworkGatewayName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/supportedvpndevices", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// SupportedVpnDevicesSender sends the SupportedVpnDevices request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewaysClient) SupportedVpnDevicesSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// SupportedVpnDevicesResponder handles the response to the SupportedVpnDevices request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewaysClient) SupportedVpnDevicesResponder(resp *http.Response) (result String, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result.Value), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// UpdateTags updates a virtual network gateway tags. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayName - the name of the virtual network gateway. +// parameters - parameters supplied to update virtual network gateway tags. +func (client VirtualNetworkGatewaysClient) UpdateTags(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, parameters TagsObject) (result VirtualNetworkGatewaysUpdateTagsFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewaysClient.UpdateTags") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, virtualNetworkGatewayName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "UpdateTags", nil, "Failure preparing request") + return + } + + result, err = client.UpdateTagsSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "UpdateTags", result.Response(), "Failure sending request") + return + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client VirtualNetworkGatewaysClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, parameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayName": autorest.Encode("path", virtualNetworkGatewayName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewaysClient) UpdateTagsSender(req *http.Request) (future VirtualNetworkGatewaysUpdateTagsFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewaysClient) UpdateTagsResponder(resp *http.Response) (result VirtualNetworkGateway, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// VpnDeviceConfigurationScript gets a xml format representation for vpn device configuration script. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkGatewayConnectionName - the name of the virtual network gateway connection for which the +// configuration script is generated. +// parameters - parameters supplied to the generate vpn device script operation. +func (client VirtualNetworkGatewaysClient) VpnDeviceConfigurationScript(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters VpnDeviceScriptParameters) (result String, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkGatewaysClient.VpnDeviceConfigurationScript") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.VpnDeviceConfigurationScriptPreparer(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "VpnDeviceConfigurationScript", nil, "Failure preparing request") + return + } + + resp, err := client.VpnDeviceConfigurationScriptSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "VpnDeviceConfigurationScript", resp, "Failure sending request") + return + } + + result, err = client.VpnDeviceConfigurationScriptResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "VpnDeviceConfigurationScript", resp, "Failure responding to request") + } + + return +} + +// VpnDeviceConfigurationScriptPreparer prepares the VpnDeviceConfigurationScript request. +func (client VirtualNetworkGatewaysClient) VpnDeviceConfigurationScriptPreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters VpnDeviceScriptParameters) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkGatewayConnectionName": autorest.Encode("path", virtualNetworkGatewayConnectionName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/vpndeviceconfigurationscript", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// VpnDeviceConfigurationScriptSender sends the VpnDeviceConfigurationScript request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkGatewaysClient) VpnDeviceConfigurationScriptSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// VpnDeviceConfigurationScriptResponder handles the response to the VpnDeviceConfigurationScript request. The method always +// closes the http.Response Body. +func (client VirtualNetworkGatewaysClient) VpnDeviceConfigurationScriptResponder(resp *http.Response) (result String, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result.Value), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualnetworkpeerings.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualnetworkpeerings.go new file mode 100644 index 0000000..bd658a1 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualnetworkpeerings.go @@ -0,0 +1,395 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// VirtualNetworkPeeringsClient is the network Client +type VirtualNetworkPeeringsClient struct { + BaseClient +} + +// NewVirtualNetworkPeeringsClient creates an instance of the VirtualNetworkPeeringsClient client. +func NewVirtualNetworkPeeringsClient(subscriptionID string) VirtualNetworkPeeringsClient { + return NewVirtualNetworkPeeringsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewVirtualNetworkPeeringsClientWithBaseURI creates an instance of the VirtualNetworkPeeringsClient client using a +// custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, +// Azure stack). +func NewVirtualNetworkPeeringsClientWithBaseURI(baseURI string, subscriptionID string) VirtualNetworkPeeringsClient { + return VirtualNetworkPeeringsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a peering in the specified virtual network. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkName - the name of the virtual network. +// virtualNetworkPeeringName - the name of the peering. +// virtualNetworkPeeringParameters - parameters supplied to the create or update virtual network peering +// operation. +func (client VirtualNetworkPeeringsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, virtualNetworkName string, virtualNetworkPeeringName string, virtualNetworkPeeringParameters VirtualNetworkPeering) (result VirtualNetworkPeeringsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkPeeringsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, virtualNetworkName, virtualNetworkPeeringName, virtualNetworkPeeringParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkPeeringsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkPeeringsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client VirtualNetworkPeeringsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, virtualNetworkPeeringName string, virtualNetworkPeeringParameters VirtualNetworkPeering) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkName": autorest.Encode("path", virtualNetworkName), + "virtualNetworkPeeringName": autorest.Encode("path", virtualNetworkPeeringName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + virtualNetworkPeeringParameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/virtualNetworkPeerings/{virtualNetworkPeeringName}", pathParameters), + autorest.WithJSON(virtualNetworkPeeringParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkPeeringsClient) CreateOrUpdateSender(req *http.Request) (future VirtualNetworkPeeringsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client VirtualNetworkPeeringsClient) CreateOrUpdateResponder(resp *http.Response) (result VirtualNetworkPeering, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified virtual network peering. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkName - the name of the virtual network. +// virtualNetworkPeeringName - the name of the virtual network peering. +func (client VirtualNetworkPeeringsClient) Delete(ctx context.Context, resourceGroupName string, virtualNetworkName string, virtualNetworkPeeringName string) (result VirtualNetworkPeeringsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkPeeringsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, virtualNetworkName, virtualNetworkPeeringName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkPeeringsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkPeeringsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client VirtualNetworkPeeringsClient) DeletePreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, virtualNetworkPeeringName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkName": autorest.Encode("path", virtualNetworkName), + "virtualNetworkPeeringName": autorest.Encode("path", virtualNetworkPeeringName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/virtualNetworkPeerings/{virtualNetworkPeeringName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkPeeringsClient) DeleteSender(req *http.Request) (future VirtualNetworkPeeringsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client VirtualNetworkPeeringsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified virtual network peering. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkName - the name of the virtual network. +// virtualNetworkPeeringName - the name of the virtual network peering. +func (client VirtualNetworkPeeringsClient) Get(ctx context.Context, resourceGroupName string, virtualNetworkName string, virtualNetworkPeeringName string) (result VirtualNetworkPeering, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkPeeringsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, virtualNetworkName, virtualNetworkPeeringName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkPeeringsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualNetworkPeeringsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkPeeringsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client VirtualNetworkPeeringsClient) GetPreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, virtualNetworkPeeringName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkName": autorest.Encode("path", virtualNetworkName), + "virtualNetworkPeeringName": autorest.Encode("path", virtualNetworkPeeringName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/virtualNetworkPeerings/{virtualNetworkPeeringName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkPeeringsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client VirtualNetworkPeeringsClient) GetResponder(resp *http.Response) (result VirtualNetworkPeering, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all virtual network peerings in a virtual network. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkName - the name of the virtual network. +func (client VirtualNetworkPeeringsClient) List(ctx context.Context, resourceGroupName string, virtualNetworkName string) (result VirtualNetworkPeeringListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkPeeringsClient.List") + defer func() { + sc := -1 + if result.vnplr.Response.Response != nil { + sc = result.vnplr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, virtualNetworkName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkPeeringsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.vnplr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualNetworkPeeringsClient", "List", resp, "Failure sending request") + return + } + + result.vnplr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkPeeringsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client VirtualNetworkPeeringsClient) ListPreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkName": autorest.Encode("path", virtualNetworkName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/virtualNetworkPeerings", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkPeeringsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client VirtualNetworkPeeringsClient) ListResponder(resp *http.Response) (result VirtualNetworkPeeringListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client VirtualNetworkPeeringsClient) listNextResults(ctx context.Context, lastResults VirtualNetworkPeeringListResult) (result VirtualNetworkPeeringListResult, err error) { + req, err := lastResults.virtualNetworkPeeringListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VirtualNetworkPeeringsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VirtualNetworkPeeringsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkPeeringsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client VirtualNetworkPeeringsClient) ListComplete(ctx context.Context, resourceGroupName string, virtualNetworkName string) (result VirtualNetworkPeeringListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkPeeringsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, virtualNetworkName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualnetworks.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualnetworks.go new file mode 100644 index 0000000..73c8fbe --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualnetworks.go @@ -0,0 +1,779 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// VirtualNetworksClient is the network Client +type VirtualNetworksClient struct { + BaseClient +} + +// NewVirtualNetworksClient creates an instance of the VirtualNetworksClient client. +func NewVirtualNetworksClient(subscriptionID string) VirtualNetworksClient { + return NewVirtualNetworksClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewVirtualNetworksClientWithBaseURI creates an instance of the VirtualNetworksClient client using a custom endpoint. +// Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewVirtualNetworksClientWithBaseURI(baseURI string, subscriptionID string) VirtualNetworksClient { + return VirtualNetworksClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CheckIPAddressAvailability checks whether a private IP address is available for use. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkName - the name of the virtual network. +// IPAddress - the private IP address to be verified. +func (client VirtualNetworksClient) CheckIPAddressAvailability(ctx context.Context, resourceGroupName string, virtualNetworkName string, IPAddress string) (result IPAddressAvailabilityResult, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworksClient.CheckIPAddressAvailability") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CheckIPAddressAvailabilityPreparer(ctx, resourceGroupName, virtualNetworkName, IPAddress) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "CheckIPAddressAvailability", nil, "Failure preparing request") + return + } + + resp, err := client.CheckIPAddressAvailabilitySender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "CheckIPAddressAvailability", resp, "Failure sending request") + return + } + + result, err = client.CheckIPAddressAvailabilityResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "CheckIPAddressAvailability", resp, "Failure responding to request") + } + + return +} + +// CheckIPAddressAvailabilityPreparer prepares the CheckIPAddressAvailability request. +func (client VirtualNetworksClient) CheckIPAddressAvailabilityPreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, IPAddress string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkName": autorest.Encode("path", virtualNetworkName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + "ipAddress": autorest.Encode("query", IPAddress), + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/CheckIPAddressAvailability", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CheckIPAddressAvailabilitySender sends the CheckIPAddressAvailability request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworksClient) CheckIPAddressAvailabilitySender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// CheckIPAddressAvailabilityResponder handles the response to the CheckIPAddressAvailability request. The method always +// closes the http.Response Body. +func (client VirtualNetworksClient) CheckIPAddressAvailabilityResponder(resp *http.Response) (result IPAddressAvailabilityResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// CreateOrUpdate creates or updates a virtual network in the specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkName - the name of the virtual network. +// parameters - parameters supplied to the create or update virtual network operation. +func (client VirtualNetworksClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, virtualNetworkName string, parameters VirtualNetwork) (result VirtualNetworksCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworksClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.VirtualNetworkPropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.VirtualNetworkPropertiesFormat.BgpCommunities", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.VirtualNetworkPropertiesFormat.BgpCommunities.VirtualNetworkCommunity", Name: validation.Null, Rule: true, Chain: nil}}}, + }}}}}); err != nil { + return result, validation.NewError("network.VirtualNetworksClient", "CreateOrUpdate", err.Error()) + } + + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, virtualNetworkName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client VirtualNetworksClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, parameters VirtualNetwork) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkName": autorest.Encode("path", virtualNetworkName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworksClient) CreateOrUpdateSender(req *http.Request) (future VirtualNetworksCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client VirtualNetworksClient) CreateOrUpdateResponder(resp *http.Response) (result VirtualNetwork, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified virtual network. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkName - the name of the virtual network. +func (client VirtualNetworksClient) Delete(ctx context.Context, resourceGroupName string, virtualNetworkName string) (result VirtualNetworksDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworksClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, virtualNetworkName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client VirtualNetworksClient) DeletePreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkName": autorest.Encode("path", virtualNetworkName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworksClient) DeleteSender(req *http.Request) (future VirtualNetworksDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client VirtualNetworksClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified virtual network by resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkName - the name of the virtual network. +// expand - expands referenced resources. +func (client VirtualNetworksClient) Get(ctx context.Context, resourceGroupName string, virtualNetworkName string, expand string) (result VirtualNetwork, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworksClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, virtualNetworkName, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client VirtualNetworksClient) GetPreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkName": autorest.Encode("path", virtualNetworkName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworksClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client VirtualNetworksClient) GetResponder(resp *http.Response) (result VirtualNetwork, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all virtual networks in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client VirtualNetworksClient) List(ctx context.Context, resourceGroupName string) (result VirtualNetworkListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworksClient.List") + defer func() { + sc := -1 + if result.vnlr.Response.Response != nil { + sc = result.vnlr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.vnlr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "List", resp, "Failure sending request") + return + } + + result.vnlr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client VirtualNetworksClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworksClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client VirtualNetworksClient) ListResponder(resp *http.Response) (result VirtualNetworkListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client VirtualNetworksClient) listNextResults(ctx context.Context, lastResults VirtualNetworkListResult) (result VirtualNetworkListResult, err error) { + req, err := lastResults.virtualNetworkListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client VirtualNetworksClient) ListComplete(ctx context.Context, resourceGroupName string) (result VirtualNetworkListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworksClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName) + return +} + +// ListAll gets all virtual networks in a subscription. +func (client VirtualNetworksClient) ListAll(ctx context.Context) (result VirtualNetworkListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworksClient.ListAll") + defer func() { + sc := -1 + if result.vnlr.Response.Response != nil { + sc = result.vnlr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listAllNextResults + req, err := client.ListAllPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListAll", nil, "Failure preparing request") + return + } + + resp, err := client.ListAllSender(req) + if err != nil { + result.vnlr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListAll", resp, "Failure sending request") + return + } + + result.vnlr, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListAll", resp, "Failure responding to request") + } + + return +} + +// ListAllPreparer prepares the ListAll request. +func (client VirtualNetworksClient) ListAllPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualNetworks", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAllSender sends the ListAll request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworksClient) ListAllSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAllResponder handles the response to the ListAll request. The method always +// closes the http.Response Body. +func (client VirtualNetworksClient) ListAllResponder(resp *http.Response) (result VirtualNetworkListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listAllNextResults retrieves the next set of results, if any. +func (client VirtualNetworksClient) listAllNextResults(ctx context.Context, lastResults VirtualNetworkListResult) (result VirtualNetworkListResult, err error) { + req, err := lastResults.virtualNetworkListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listAllNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListAllSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listAllNextResults", resp, "Failure sending next results request") + } + result, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listAllNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListAllComplete enumerates all values, automatically crossing page boundaries as required. +func (client VirtualNetworksClient) ListAllComplete(ctx context.Context) (result VirtualNetworkListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworksClient.ListAll") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListAll(ctx) + return +} + +// ListUsage lists usage stats. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkName - the name of the virtual network. +func (client VirtualNetworksClient) ListUsage(ctx context.Context, resourceGroupName string, virtualNetworkName string) (result VirtualNetworkListUsageResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworksClient.ListUsage") + defer func() { + sc := -1 + if result.vnlur.Response.Response != nil { + sc = result.vnlur.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listUsageNextResults + req, err := client.ListUsagePreparer(ctx, resourceGroupName, virtualNetworkName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListUsage", nil, "Failure preparing request") + return + } + + resp, err := client.ListUsageSender(req) + if err != nil { + result.vnlur.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListUsage", resp, "Failure sending request") + return + } + + result.vnlur, err = client.ListUsageResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListUsage", resp, "Failure responding to request") + } + + return +} + +// ListUsagePreparer prepares the ListUsage request. +func (client VirtualNetworksClient) ListUsagePreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkName": autorest.Encode("path", virtualNetworkName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/usages", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListUsageSender sends the ListUsage request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworksClient) ListUsageSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListUsageResponder handles the response to the ListUsage request. The method always +// closes the http.Response Body. +func (client VirtualNetworksClient) ListUsageResponder(resp *http.Response) (result VirtualNetworkListUsageResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listUsageNextResults retrieves the next set of results, if any. +func (client VirtualNetworksClient) listUsageNextResults(ctx context.Context, lastResults VirtualNetworkListUsageResult) (result VirtualNetworkListUsageResult, err error) { + req, err := lastResults.virtualNetworkListUsageResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listUsageNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListUsageSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listUsageNextResults", resp, "Failure sending next results request") + } + result, err = client.ListUsageResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listUsageNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListUsageComplete enumerates all values, automatically crossing page boundaries as required. +func (client VirtualNetworksClient) ListUsageComplete(ctx context.Context, resourceGroupName string, virtualNetworkName string) (result VirtualNetworkListUsageResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworksClient.ListUsage") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListUsage(ctx, resourceGroupName, virtualNetworkName) + return +} + +// UpdateTags updates a virtual network tags. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualNetworkName - the name of the virtual network. +// parameters - parameters supplied to update virtual network tags. +func (client VirtualNetworksClient) UpdateTags(ctx context.Context, resourceGroupName string, virtualNetworkName string, parameters TagsObject) (result VirtualNetwork, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworksClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, virtualNetworkName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client VirtualNetworksClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, parameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualNetworkName": autorest.Encode("path", virtualNetworkName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworksClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client VirtualNetworksClient) UpdateTagsResponder(resp *http.Response) (result VirtualNetwork, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualnetworktaps.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualnetworktaps.go new file mode 100644 index 0000000..87cdbcb --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualnetworktaps.go @@ -0,0 +1,606 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// VirtualNetworkTapsClient is the network Client +type VirtualNetworkTapsClient struct { + BaseClient +} + +// NewVirtualNetworkTapsClient creates an instance of the VirtualNetworkTapsClient client. +func NewVirtualNetworkTapsClient(subscriptionID string) VirtualNetworkTapsClient { + return NewVirtualNetworkTapsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewVirtualNetworkTapsClientWithBaseURI creates an instance of the VirtualNetworkTapsClient client using a custom +// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure +// stack). +func NewVirtualNetworkTapsClientWithBaseURI(baseURI string, subscriptionID string) VirtualNetworkTapsClient { + return VirtualNetworkTapsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates a Virtual Network Tap. +// Parameters: +// resourceGroupName - the name of the resource group. +// tapName - the name of the virtual network tap. +// parameters - parameters supplied to the create or update virtual network tap operation. +func (client VirtualNetworkTapsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, tapName string, parameters VirtualNetworkTap) (result VirtualNetworkTapsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkTapsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.VirtualNetworkTapPropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.VirtualNetworkTapPropertiesFormat.DestinationNetworkInterfaceIPConfiguration", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.VirtualNetworkTapPropertiesFormat.DestinationNetworkInterfaceIPConfiguration.InterfaceIPConfigurationPropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.VirtualNetworkTapPropertiesFormat.DestinationNetworkInterfaceIPConfiguration.InterfaceIPConfigurationPropertiesFormat.PublicIPAddress", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.VirtualNetworkTapPropertiesFormat.DestinationNetworkInterfaceIPConfiguration.InterfaceIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.VirtualNetworkTapPropertiesFormat.DestinationNetworkInterfaceIPConfiguration.InterfaceIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat.IPConfiguration", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.VirtualNetworkTapPropertiesFormat.DestinationNetworkInterfaceIPConfiguration.InterfaceIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat.IPConfiguration.IPConfigurationPropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.VirtualNetworkTapPropertiesFormat.DestinationNetworkInterfaceIPConfiguration.InterfaceIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat.IPConfiguration.IPConfigurationPropertiesFormat.PublicIPAddress", Name: validation.Null, Rule: false, Chain: nil}}}, + }}, + }}, + }}, + }}, + }}, + {Target: "parameters.VirtualNetworkTapPropertiesFormat.DestinationLoadBalancerFrontEndIPConfiguration", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.VirtualNetworkTapPropertiesFormat.DestinationLoadBalancerFrontEndIPConfiguration.FrontendIPConfigurationPropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.VirtualNetworkTapPropertiesFormat.DestinationLoadBalancerFrontEndIPConfiguration.FrontendIPConfigurationPropertiesFormat.PublicIPAddress", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.VirtualNetworkTapPropertiesFormat.DestinationLoadBalancerFrontEndIPConfiguration.FrontendIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.VirtualNetworkTapPropertiesFormat.DestinationLoadBalancerFrontEndIPConfiguration.FrontendIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat.IPConfiguration", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.VirtualNetworkTapPropertiesFormat.DestinationLoadBalancerFrontEndIPConfiguration.FrontendIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat.IPConfiguration.IPConfigurationPropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.VirtualNetworkTapPropertiesFormat.DestinationLoadBalancerFrontEndIPConfiguration.FrontendIPConfigurationPropertiesFormat.PublicIPAddress.PublicIPAddressPropertiesFormat.IPConfiguration.IPConfigurationPropertiesFormat.PublicIPAddress", Name: validation.Null, Rule: false, Chain: nil}}}, + }}, + }}, + }}, + }}, + }}, + }}}}}); err != nil { + return result, validation.NewError("network.VirtualNetworkTapsClient", "CreateOrUpdate", err.Error()) + } + + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, tapName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkTapsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkTapsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client VirtualNetworkTapsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, tapName string, parameters VirtualNetworkTap) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "tapName": autorest.Encode("path", tapName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkTaps/{tapName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkTapsClient) CreateOrUpdateSender(req *http.Request) (future VirtualNetworkTapsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client VirtualNetworkTapsClient) CreateOrUpdateResponder(resp *http.Response) (result VirtualNetworkTap, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified virtual network tap. +// Parameters: +// resourceGroupName - the name of the resource group. +// tapName - the name of the virtual network tap. +func (client VirtualNetworkTapsClient) Delete(ctx context.Context, resourceGroupName string, tapName string) (result VirtualNetworkTapsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkTapsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, tapName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkTapsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkTapsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client VirtualNetworkTapsClient) DeletePreparer(ctx context.Context, resourceGroupName string, tapName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "tapName": autorest.Encode("path", tapName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkTaps/{tapName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkTapsClient) DeleteSender(req *http.Request) (future VirtualNetworkTapsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client VirtualNetworkTapsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets information about the specified virtual network tap. +// Parameters: +// resourceGroupName - the name of the resource group. +// tapName - the name of virtual network tap. +func (client VirtualNetworkTapsClient) Get(ctx context.Context, resourceGroupName string, tapName string) (result VirtualNetworkTap, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkTapsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, tapName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkTapsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualNetworkTapsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkTapsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client VirtualNetworkTapsClient) GetPreparer(ctx context.Context, resourceGroupName string, tapName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "tapName": autorest.Encode("path", tapName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkTaps/{tapName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkTapsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client VirtualNetworkTapsClient) GetResponder(resp *http.Response) (result VirtualNetworkTap, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// ListAll gets all the VirtualNetworkTaps in a subscription. +func (client VirtualNetworkTapsClient) ListAll(ctx context.Context) (result VirtualNetworkTapListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkTapsClient.ListAll") + defer func() { + sc := -1 + if result.vntlr.Response.Response != nil { + sc = result.vntlr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listAllNextResults + req, err := client.ListAllPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkTapsClient", "ListAll", nil, "Failure preparing request") + return + } + + resp, err := client.ListAllSender(req) + if err != nil { + result.vntlr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualNetworkTapsClient", "ListAll", resp, "Failure sending request") + return + } + + result.vntlr, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkTapsClient", "ListAll", resp, "Failure responding to request") + } + + return +} + +// ListAllPreparer prepares the ListAll request. +func (client VirtualNetworkTapsClient) ListAllPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualNetworkTaps", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAllSender sends the ListAll request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkTapsClient) ListAllSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAllResponder handles the response to the ListAll request. The method always +// closes the http.Response Body. +func (client VirtualNetworkTapsClient) ListAllResponder(resp *http.Response) (result VirtualNetworkTapListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listAllNextResults retrieves the next set of results, if any. +func (client VirtualNetworkTapsClient) listAllNextResults(ctx context.Context, lastResults VirtualNetworkTapListResult) (result VirtualNetworkTapListResult, err error) { + req, err := lastResults.virtualNetworkTapListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VirtualNetworkTapsClient", "listAllNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListAllSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VirtualNetworkTapsClient", "listAllNextResults", resp, "Failure sending next results request") + } + result, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkTapsClient", "listAllNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListAllComplete enumerates all values, automatically crossing page boundaries as required. +func (client VirtualNetworkTapsClient) ListAllComplete(ctx context.Context) (result VirtualNetworkTapListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkTapsClient.ListAll") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListAll(ctx) + return +} + +// ListByResourceGroup gets all the VirtualNetworkTaps in a subscription. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client VirtualNetworkTapsClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result VirtualNetworkTapListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkTapsClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.vntlr.Response.Response != nil { + sc = result.vntlr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listByResourceGroupNextResults + req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkTapsClient", "ListByResourceGroup", nil, "Failure preparing request") + return + } + + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.vntlr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualNetworkTapsClient", "ListByResourceGroup", resp, "Failure sending request") + return + } + + result.vntlr, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkTapsClient", "ListByResourceGroup", resp, "Failure responding to request") + } + + return +} + +// ListByResourceGroupPreparer prepares the ListByResourceGroup request. +func (client VirtualNetworkTapsClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkTaps", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkTapsClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always +// closes the http.Response Body. +func (client VirtualNetworkTapsClient) ListByResourceGroupResponder(resp *http.Response) (result VirtualNetworkTapListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listByResourceGroupNextResults retrieves the next set of results, if any. +func (client VirtualNetworkTapsClient) listByResourceGroupNextResults(ctx context.Context, lastResults VirtualNetworkTapListResult) (result VirtualNetworkTapListResult, err error) { + req, err := lastResults.virtualNetworkTapListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VirtualNetworkTapsClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VirtualNetworkTapsClient", "listByResourceGroupNextResults", resp, "Failure sending next results request") + } + result, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkTapsClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. +func (client VirtualNetworkTapsClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result VirtualNetworkTapListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkTapsClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListByResourceGroup(ctx, resourceGroupName) + return +} + +// UpdateTags updates an VirtualNetworkTap tags. +// Parameters: +// resourceGroupName - the name of the resource group. +// tapName - the name of the tap. +// tapParameters - parameters supplied to update VirtualNetworkTap tags. +func (client VirtualNetworkTapsClient) UpdateTags(ctx context.Context, resourceGroupName string, tapName string, tapParameters TagsObject) (result VirtualNetworkTap, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualNetworkTapsClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, tapName, tapParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkTapsClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualNetworkTapsClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualNetworkTapsClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client VirtualNetworkTapsClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, tapName string, tapParameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "tapName": autorest.Encode("path", tapName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkTaps/{tapName}", pathParameters), + autorest.WithJSON(tapParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualNetworkTapsClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client VirtualNetworkTapsClient) UpdateTagsResponder(resp *http.Response) (result VirtualNetworkTap, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualrouterpeerings.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualrouterpeerings.go new file mode 100644 index 0000000..ad2d837 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualrouterpeerings.go @@ -0,0 +1,407 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// VirtualRouterPeeringsClient is the network Client +type VirtualRouterPeeringsClient struct { + BaseClient +} + +// NewVirtualRouterPeeringsClient creates an instance of the VirtualRouterPeeringsClient client. +func NewVirtualRouterPeeringsClient(subscriptionID string) VirtualRouterPeeringsClient { + return NewVirtualRouterPeeringsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewVirtualRouterPeeringsClientWithBaseURI creates an instance of the VirtualRouterPeeringsClient client using a +// custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, +// Azure stack). +func NewVirtualRouterPeeringsClientWithBaseURI(baseURI string, subscriptionID string) VirtualRouterPeeringsClient { + return VirtualRouterPeeringsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates the specified Virtual Router Peering. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualRouterName - the name of the Virtual Router. +// peeringName - the name of the Virtual Router Peering. +// parameters - parameters supplied to the create or update Virtual Router Peering operation. +func (client VirtualRouterPeeringsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, virtualRouterName string, peeringName string, parameters VirtualRouterPeering) (result VirtualRouterPeeringsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualRouterPeeringsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.VirtualRouterPeeringProperties", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.VirtualRouterPeeringProperties.PeerAsn", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.VirtualRouterPeeringProperties.PeerAsn", Name: validation.InclusiveMaximum, Rule: int64(4294967295), Chain: nil}, + {Target: "parameters.VirtualRouterPeeringProperties.PeerAsn", Name: validation.InclusiveMinimum, Rule: int64(0), Chain: nil}, + }}, + }}}}}); err != nil { + return result, validation.NewError("network.VirtualRouterPeeringsClient", "CreateOrUpdate", err.Error()) + } + + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, virtualRouterName, peeringName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRouterPeeringsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRouterPeeringsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client VirtualRouterPeeringsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, virtualRouterName string, peeringName string, parameters VirtualRouterPeering) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "peeringName": autorest.Encode("path", peeringName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualRouterName": autorest.Encode("path", virtualRouterName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + parameters.Type = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}/peerings/{peeringName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualRouterPeeringsClient) CreateOrUpdateSender(req *http.Request) (future VirtualRouterPeeringsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client VirtualRouterPeeringsClient) CreateOrUpdateResponder(resp *http.Response) (result VirtualRouterPeering, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified peering from a Virtual Router. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualRouterName - the name of the Virtual Router. +// peeringName - the name of the peering. +func (client VirtualRouterPeeringsClient) Delete(ctx context.Context, resourceGroupName string, virtualRouterName string, peeringName string) (result VirtualRouterPeeringsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualRouterPeeringsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, virtualRouterName, peeringName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRouterPeeringsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRouterPeeringsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client VirtualRouterPeeringsClient) DeletePreparer(ctx context.Context, resourceGroupName string, virtualRouterName string, peeringName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "peeringName": autorest.Encode("path", peeringName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualRouterName": autorest.Encode("path", virtualRouterName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}/peerings/{peeringName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualRouterPeeringsClient) DeleteSender(req *http.Request) (future VirtualRouterPeeringsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client VirtualRouterPeeringsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified Virtual Router Peering. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualRouterName - the name of the Virtual Router. +// peeringName - the name of the Virtual Router Peering. +func (client VirtualRouterPeeringsClient) Get(ctx context.Context, resourceGroupName string, virtualRouterName string, peeringName string) (result VirtualRouterPeering, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualRouterPeeringsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, virtualRouterName, peeringName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRouterPeeringsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualRouterPeeringsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRouterPeeringsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client VirtualRouterPeeringsClient) GetPreparer(ctx context.Context, resourceGroupName string, virtualRouterName string, peeringName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "peeringName": autorest.Encode("path", peeringName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualRouterName": autorest.Encode("path", virtualRouterName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}/peerings/{peeringName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualRouterPeeringsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client VirtualRouterPeeringsClient) GetResponder(resp *http.Response) (result VirtualRouterPeering, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List lists all Virtual Router Peerings in a Virtual Router resource. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualRouterName - the name of the Virtual Router. +func (client VirtualRouterPeeringsClient) List(ctx context.Context, resourceGroupName string, virtualRouterName string) (result VirtualRouterPeeringListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualRouterPeeringsClient.List") + defer func() { + sc := -1 + if result.vrplr.Response.Response != nil { + sc = result.vrplr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, virtualRouterName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRouterPeeringsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.vrplr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualRouterPeeringsClient", "List", resp, "Failure sending request") + return + } + + result.vrplr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRouterPeeringsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client VirtualRouterPeeringsClient) ListPreparer(ctx context.Context, resourceGroupName string, virtualRouterName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualRouterName": autorest.Encode("path", virtualRouterName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}/peerings", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualRouterPeeringsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client VirtualRouterPeeringsClient) ListResponder(resp *http.Response) (result VirtualRouterPeeringListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client VirtualRouterPeeringsClient) listNextResults(ctx context.Context, lastResults VirtualRouterPeeringListResult) (result VirtualRouterPeeringListResult, err error) { + req, err := lastResults.virtualRouterPeeringListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VirtualRouterPeeringsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VirtualRouterPeeringsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRouterPeeringsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client VirtualRouterPeeringsClient) ListComplete(ctx context.Context, resourceGroupName string, virtualRouterName string) (result VirtualRouterPeeringListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualRouterPeeringsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, virtualRouterName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualrouters.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualrouters.go new file mode 100644 index 0000000..ac19e02 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualrouters.go @@ -0,0 +1,510 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// VirtualRoutersClient is the network Client +type VirtualRoutersClient struct { + BaseClient +} + +// NewVirtualRoutersClient creates an instance of the VirtualRoutersClient client. +func NewVirtualRoutersClient(subscriptionID string) VirtualRoutersClient { + return NewVirtualRoutersClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewVirtualRoutersClientWithBaseURI creates an instance of the VirtualRoutersClient client using a custom endpoint. +// Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewVirtualRoutersClientWithBaseURI(baseURI string, subscriptionID string) VirtualRoutersClient { + return VirtualRoutersClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or updates the specified Virtual Router. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualRouterName - the name of the Virtual Router. +// parameters - parameters supplied to the create or update Virtual Router. +func (client VirtualRoutersClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, virtualRouterName string, parameters VirtualRouter) (result VirtualRoutersCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualRoutersClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.VirtualRouterPropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.VirtualRouterPropertiesFormat.VirtualRouterAsn", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.VirtualRouterPropertiesFormat.VirtualRouterAsn", Name: validation.InclusiveMaximum, Rule: int64(4294967295), Chain: nil}, + {Target: "parameters.VirtualRouterPropertiesFormat.VirtualRouterAsn", Name: validation.InclusiveMinimum, Rule: int64(0), Chain: nil}, + }}, + }}}}}); err != nil { + return result, validation.NewError("network.VirtualRoutersClient", "CreateOrUpdate", err.Error()) + } + + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, virtualRouterName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRoutersClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRoutersClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client VirtualRoutersClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, virtualRouterName string, parameters VirtualRouter) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualRouterName": autorest.Encode("path", virtualRouterName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualRoutersClient) CreateOrUpdateSender(req *http.Request) (future VirtualRoutersCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client VirtualRoutersClient) CreateOrUpdateResponder(resp *http.Response) (result VirtualRouter, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified Virtual Router. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualRouterName - the name of the Virtual Router. +func (client VirtualRoutersClient) Delete(ctx context.Context, resourceGroupName string, virtualRouterName string) (result VirtualRoutersDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualRoutersClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, virtualRouterName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRoutersClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRoutersClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client VirtualRoutersClient) DeletePreparer(ctx context.Context, resourceGroupName string, virtualRouterName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualRouterName": autorest.Encode("path", virtualRouterName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualRoutersClient) DeleteSender(req *http.Request) (future VirtualRoutersDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client VirtualRoutersClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified Virtual Router. +// Parameters: +// resourceGroupName - the name of the resource group. +// virtualRouterName - the name of the Virtual Router. +// expand - expands referenced resources. +func (client VirtualRoutersClient) Get(ctx context.Context, resourceGroupName string, virtualRouterName string, expand string) (result VirtualRouter, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualRoutersClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, virtualRouterName, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRoutersClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualRoutersClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRoutersClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client VirtualRoutersClient) GetPreparer(ctx context.Context, resourceGroupName string, virtualRouterName string, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualRouterName": autorest.Encode("path", virtualRouterName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters/{virtualRouterName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualRoutersClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client VirtualRoutersClient) GetResponder(resp *http.Response) (result VirtualRouter, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all the Virtual Routers in a subscription. +func (client VirtualRoutersClient) List(ctx context.Context) (result VirtualRouterListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualRoutersClient.List") + defer func() { + sc := -1 + if result.vrlr.Response.Response != nil { + sc = result.vrlr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRoutersClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.vrlr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualRoutersClient", "List", resp, "Failure sending request") + return + } + + result.vrlr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRoutersClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client VirtualRoutersClient) ListPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualRouters", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualRoutersClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client VirtualRoutersClient) ListResponder(resp *http.Response) (result VirtualRouterListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client VirtualRoutersClient) listNextResults(ctx context.Context, lastResults VirtualRouterListResult) (result VirtualRouterListResult, err error) { + req, err := lastResults.virtualRouterListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VirtualRoutersClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VirtualRoutersClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRoutersClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client VirtualRoutersClient) ListComplete(ctx context.Context) (result VirtualRouterListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualRoutersClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx) + return +} + +// ListByResourceGroup lists all Virtual Routers in a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client VirtualRoutersClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result VirtualRouterListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualRoutersClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.vrlr.Response.Response != nil { + sc = result.vrlr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listByResourceGroupNextResults + req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRoutersClient", "ListByResourceGroup", nil, "Failure preparing request") + return + } + + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.vrlr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualRoutersClient", "ListByResourceGroup", resp, "Failure sending request") + return + } + + result.vrlr, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRoutersClient", "ListByResourceGroup", resp, "Failure responding to request") + } + + return +} + +// ListByResourceGroupPreparer prepares the ListByResourceGroup request. +func (client VirtualRoutersClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualRouters", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualRoutersClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always +// closes the http.Response Body. +func (client VirtualRoutersClient) ListByResourceGroupResponder(resp *http.Response) (result VirtualRouterListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listByResourceGroupNextResults retrieves the next set of results, if any. +func (client VirtualRoutersClient) listByResourceGroupNextResults(ctx context.Context, lastResults VirtualRouterListResult) (result VirtualRouterListResult, err error) { + req, err := lastResults.virtualRouterListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VirtualRoutersClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VirtualRoutersClient", "listByResourceGroupNextResults", resp, "Failure sending next results request") + } + result, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualRoutersClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. +func (client VirtualRoutersClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result VirtualRouterListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualRoutersClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListByResourceGroup(ctx, resourceGroupName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualwans.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualwans.go new file mode 100644 index 0000000..84e4bd9 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/virtualwans.go @@ -0,0 +1,573 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// VirtualWansClient is the network Client +type VirtualWansClient struct { + BaseClient +} + +// NewVirtualWansClient creates an instance of the VirtualWansClient client. +func NewVirtualWansClient(subscriptionID string) VirtualWansClient { + return NewVirtualWansClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewVirtualWansClientWithBaseURI creates an instance of the VirtualWansClient client using a custom endpoint. Use +// this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewVirtualWansClientWithBaseURI(baseURI string, subscriptionID string) VirtualWansClient { + return VirtualWansClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates a VirtualWAN resource if it doesn't exist else updates the existing VirtualWAN. +// Parameters: +// resourceGroupName - the resource group name of the VirtualWan. +// virtualWANName - the name of the VirtualWAN being created or updated. +// wANParameters - parameters supplied to create or update VirtualWAN. +func (client VirtualWansClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, virtualWANName string, wANParameters VirtualWAN) (result VirtualWansCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualWansClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, virtualWANName, wANParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualWansClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualWansClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client VirtualWansClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, virtualWANName string, wANParameters VirtualWAN) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "VirtualWANName": autorest.Encode("path", virtualWANName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + wANParameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{VirtualWANName}", pathParameters), + autorest.WithJSON(wANParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualWansClient) CreateOrUpdateSender(req *http.Request) (future VirtualWansCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client VirtualWansClient) CreateOrUpdateResponder(resp *http.Response) (result VirtualWAN, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes a VirtualWAN. +// Parameters: +// resourceGroupName - the resource group name of the VirtualWan. +// virtualWANName - the name of the VirtualWAN being deleted. +func (client VirtualWansClient) Delete(ctx context.Context, resourceGroupName string, virtualWANName string) (result VirtualWansDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualWansClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, virtualWANName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualWansClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualWansClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client VirtualWansClient) DeletePreparer(ctx context.Context, resourceGroupName string, virtualWANName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "VirtualWANName": autorest.Encode("path", virtualWANName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{VirtualWANName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualWansClient) DeleteSender(req *http.Request) (future VirtualWansDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client VirtualWansClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get retrieves the details of a VirtualWAN. +// Parameters: +// resourceGroupName - the resource group name of the VirtualWan. +// virtualWANName - the name of the VirtualWAN being retrieved. +func (client VirtualWansClient) Get(ctx context.Context, resourceGroupName string, virtualWANName string) (result VirtualWAN, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualWansClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, virtualWANName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualWansClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualWansClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualWansClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client VirtualWansClient) GetPreparer(ctx context.Context, resourceGroupName string, virtualWANName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "VirtualWANName": autorest.Encode("path", virtualWANName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{VirtualWANName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualWansClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client VirtualWansClient) GetResponder(resp *http.Response) (result VirtualWAN, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List lists all the VirtualWANs in a subscription. +func (client VirtualWansClient) List(ctx context.Context) (result ListVirtualWANsResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualWansClient.List") + defer func() { + sc := -1 + if result.lvwnr.Response.Response != nil { + sc = result.lvwnr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualWansClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.lvwnr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualWansClient", "List", resp, "Failure sending request") + return + } + + result.lvwnr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualWansClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client VirtualWansClient) ListPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualWans", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualWansClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client VirtualWansClient) ListResponder(resp *http.Response) (result ListVirtualWANsResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client VirtualWansClient) listNextResults(ctx context.Context, lastResults ListVirtualWANsResult) (result ListVirtualWANsResult, err error) { + req, err := lastResults.listVirtualWANsResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VirtualWansClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VirtualWansClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualWansClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client VirtualWansClient) ListComplete(ctx context.Context) (result ListVirtualWANsResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualWansClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx) + return +} + +// ListByResourceGroup lists all the VirtualWANs in a resource group. +// Parameters: +// resourceGroupName - the resource group name of the VirtualWan. +func (client VirtualWansClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result ListVirtualWANsResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualWansClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.lvwnr.Response.Response != nil { + sc = result.lvwnr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listByResourceGroupNextResults + req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualWansClient", "ListByResourceGroup", nil, "Failure preparing request") + return + } + + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.lvwnr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualWansClient", "ListByResourceGroup", resp, "Failure sending request") + return + } + + result.lvwnr, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualWansClient", "ListByResourceGroup", resp, "Failure responding to request") + } + + return +} + +// ListByResourceGroupPreparer prepares the ListByResourceGroup request. +func (client VirtualWansClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualWansClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always +// closes the http.Response Body. +func (client VirtualWansClient) ListByResourceGroupResponder(resp *http.Response) (result ListVirtualWANsResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listByResourceGroupNextResults retrieves the next set of results, if any. +func (client VirtualWansClient) listByResourceGroupNextResults(ctx context.Context, lastResults ListVirtualWANsResult) (result ListVirtualWANsResult, err error) { + req, err := lastResults.listVirtualWANsResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VirtualWansClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VirtualWansClient", "listByResourceGroupNextResults", resp, "Failure sending next results request") + } + result, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualWansClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. +func (client VirtualWansClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result ListVirtualWANsResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualWansClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListByResourceGroup(ctx, resourceGroupName) + return +} + +// UpdateTags updates a VirtualWAN tags. +// Parameters: +// resourceGroupName - the resource group name of the VirtualWan. +// virtualWANName - the name of the VirtualWAN being updated. +// wANParameters - parameters supplied to Update VirtualWAN tags. +func (client VirtualWansClient) UpdateTags(ctx context.Context, resourceGroupName string, virtualWANName string, wANParameters TagsObject) (result VirtualWAN, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VirtualWansClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, virtualWANName, wANParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualWansClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VirtualWansClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VirtualWansClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client VirtualWansClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, virtualWANName string, wANParameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "VirtualWANName": autorest.Encode("path", virtualWANName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{VirtualWANName}", pathParameters), + autorest.WithJSON(wANParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client VirtualWansClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client VirtualWansClient) UpdateTagsResponder(resp *http.Response) (result VirtualWAN, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpnconnections.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpnconnections.go new file mode 100644 index 0000000..d87934b --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpnconnections.go @@ -0,0 +1,394 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// VpnConnectionsClient is the network Client +type VpnConnectionsClient struct { + BaseClient +} + +// NewVpnConnectionsClient creates an instance of the VpnConnectionsClient client. +func NewVpnConnectionsClient(subscriptionID string) VpnConnectionsClient { + return NewVpnConnectionsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewVpnConnectionsClientWithBaseURI creates an instance of the VpnConnectionsClient client using a custom endpoint. +// Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewVpnConnectionsClientWithBaseURI(baseURI string, subscriptionID string) VpnConnectionsClient { + return VpnConnectionsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates a vpn connection to a scalable vpn gateway if it doesn't exist else updates the existing +// connection. +// Parameters: +// resourceGroupName - the resource group name of the VpnGateway. +// gatewayName - the name of the gateway. +// connectionName - the name of the connection. +// vpnConnectionParameters - parameters supplied to create or Update a VPN Connection. +func (client VpnConnectionsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, gatewayName string, connectionName string, vpnConnectionParameters VpnConnection) (result VpnConnectionsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnConnectionsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, gatewayName, connectionName, vpnConnectionParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnConnectionsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnConnectionsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client VpnConnectionsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, gatewayName string, connectionName string, vpnConnectionParameters VpnConnection) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "connectionName": autorest.Encode("path", connectionName), + "gatewayName": autorest.Encode("path", gatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + vpnConnectionParameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}", pathParameters), + autorest.WithJSON(vpnConnectionParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client VpnConnectionsClient) CreateOrUpdateSender(req *http.Request) (future VpnConnectionsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client VpnConnectionsClient) CreateOrUpdateResponder(resp *http.Response) (result VpnConnection, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes a vpn connection. +// Parameters: +// resourceGroupName - the resource group name of the VpnGateway. +// gatewayName - the name of the gateway. +// connectionName - the name of the connection. +func (client VpnConnectionsClient) Delete(ctx context.Context, resourceGroupName string, gatewayName string, connectionName string) (result VpnConnectionsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnConnectionsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, gatewayName, connectionName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnConnectionsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnConnectionsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client VpnConnectionsClient) DeletePreparer(ctx context.Context, resourceGroupName string, gatewayName string, connectionName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "connectionName": autorest.Encode("path", connectionName), + "gatewayName": autorest.Encode("path", gatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client VpnConnectionsClient) DeleteSender(req *http.Request) (future VpnConnectionsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client VpnConnectionsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get retrieves the details of a vpn connection. +// Parameters: +// resourceGroupName - the resource group name of the VpnGateway. +// gatewayName - the name of the gateway. +// connectionName - the name of the vpn connection. +func (client VpnConnectionsClient) Get(ctx context.Context, resourceGroupName string, gatewayName string, connectionName string) (result VpnConnection, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnConnectionsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, gatewayName, connectionName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnConnectionsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VpnConnectionsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnConnectionsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client VpnConnectionsClient) GetPreparer(ctx context.Context, resourceGroupName string, gatewayName string, connectionName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "connectionName": autorest.Encode("path", connectionName), + "gatewayName": autorest.Encode("path", gatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client VpnConnectionsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client VpnConnectionsClient) GetResponder(resp *http.Response) (result VpnConnection, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// ListByVpnGateway retrieves all vpn connections for a particular virtual wan vpn gateway. +// Parameters: +// resourceGroupName - the resource group name of the VpnGateway. +// gatewayName - the name of the gateway. +func (client VpnConnectionsClient) ListByVpnGateway(ctx context.Context, resourceGroupName string, gatewayName string) (result ListVpnConnectionsResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnConnectionsClient.ListByVpnGateway") + defer func() { + sc := -1 + if result.lvcr.Response.Response != nil { + sc = result.lvcr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listByVpnGatewayNextResults + req, err := client.ListByVpnGatewayPreparer(ctx, resourceGroupName, gatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnConnectionsClient", "ListByVpnGateway", nil, "Failure preparing request") + return + } + + resp, err := client.ListByVpnGatewaySender(req) + if err != nil { + result.lvcr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VpnConnectionsClient", "ListByVpnGateway", resp, "Failure sending request") + return + } + + result.lvcr, err = client.ListByVpnGatewayResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnConnectionsClient", "ListByVpnGateway", resp, "Failure responding to request") + } + + return +} + +// ListByVpnGatewayPreparer prepares the ListByVpnGateway request. +func (client VpnConnectionsClient) ListByVpnGatewayPreparer(ctx context.Context, resourceGroupName string, gatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "gatewayName": autorest.Encode("path", gatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListByVpnGatewaySender sends the ListByVpnGateway request. The method will close the +// http.Response Body if it receives an error. +func (client VpnConnectionsClient) ListByVpnGatewaySender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListByVpnGatewayResponder handles the response to the ListByVpnGateway request. The method always +// closes the http.Response Body. +func (client VpnConnectionsClient) ListByVpnGatewayResponder(resp *http.Response) (result ListVpnConnectionsResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listByVpnGatewayNextResults retrieves the next set of results, if any. +func (client VpnConnectionsClient) listByVpnGatewayNextResults(ctx context.Context, lastResults ListVpnConnectionsResult) (result ListVpnConnectionsResult, err error) { + req, err := lastResults.listVpnConnectionsResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VpnConnectionsClient", "listByVpnGatewayNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListByVpnGatewaySender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VpnConnectionsClient", "listByVpnGatewayNextResults", resp, "Failure sending next results request") + } + result, err = client.ListByVpnGatewayResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnConnectionsClient", "listByVpnGatewayNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListByVpnGatewayComplete enumerates all values, automatically crossing page boundaries as required. +func (client VpnConnectionsClient) ListByVpnGatewayComplete(ctx context.Context, resourceGroupName string, gatewayName string) (result ListVpnConnectionsResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnConnectionsClient.ListByVpnGateway") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListByVpnGateway(ctx, resourceGroupName, gatewayName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpngateways.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpngateways.go new file mode 100644 index 0000000..3bb8733 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpngateways.go @@ -0,0 +1,649 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// VpnGatewaysClient is the network Client +type VpnGatewaysClient struct { + BaseClient +} + +// NewVpnGatewaysClient creates an instance of the VpnGatewaysClient client. +func NewVpnGatewaysClient(subscriptionID string) VpnGatewaysClient { + return NewVpnGatewaysClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewVpnGatewaysClientWithBaseURI creates an instance of the VpnGatewaysClient client using a custom endpoint. Use +// this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewVpnGatewaysClientWithBaseURI(baseURI string, subscriptionID string) VpnGatewaysClient { + return VpnGatewaysClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates a virtual wan vpn gateway if it doesn't exist else updates the existing gateway. +// Parameters: +// resourceGroupName - the resource group name of the VpnGateway. +// gatewayName - the name of the gateway. +// vpnGatewayParameters - parameters supplied to create or Update a virtual wan vpn gateway. +func (client VpnGatewaysClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, gatewayName string, vpnGatewayParameters VpnGateway) (result VpnGatewaysCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnGatewaysClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, gatewayName, vpnGatewayParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnGatewaysClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnGatewaysClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client VpnGatewaysClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, gatewayName string, vpnGatewayParameters VpnGateway) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "gatewayName": autorest.Encode("path", gatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + vpnGatewayParameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}", pathParameters), + autorest.WithJSON(vpnGatewayParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client VpnGatewaysClient) CreateOrUpdateSender(req *http.Request) (future VpnGatewaysCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client VpnGatewaysClient) CreateOrUpdateResponder(resp *http.Response) (result VpnGateway, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes a virtual wan vpn gateway. +// Parameters: +// resourceGroupName - the resource group name of the VpnGateway. +// gatewayName - the name of the gateway. +func (client VpnGatewaysClient) Delete(ctx context.Context, resourceGroupName string, gatewayName string) (result VpnGatewaysDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnGatewaysClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, gatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnGatewaysClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnGatewaysClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client VpnGatewaysClient) DeletePreparer(ctx context.Context, resourceGroupName string, gatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "gatewayName": autorest.Encode("path", gatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client VpnGatewaysClient) DeleteSender(req *http.Request) (future VpnGatewaysDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client VpnGatewaysClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get retrieves the details of a virtual wan vpn gateway. +// Parameters: +// resourceGroupName - the resource group name of the VpnGateway. +// gatewayName - the name of the gateway. +func (client VpnGatewaysClient) Get(ctx context.Context, resourceGroupName string, gatewayName string) (result VpnGateway, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnGatewaysClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, gatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnGatewaysClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VpnGatewaysClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnGatewaysClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client VpnGatewaysClient) GetPreparer(ctx context.Context, resourceGroupName string, gatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "gatewayName": autorest.Encode("path", gatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client VpnGatewaysClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client VpnGatewaysClient) GetResponder(resp *http.Response) (result VpnGateway, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List lists all the VpnGateways in a subscription. +func (client VpnGatewaysClient) List(ctx context.Context) (result ListVpnGatewaysResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnGatewaysClient.List") + defer func() { + sc := -1 + if result.lvgr.Response.Response != nil { + sc = result.lvgr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnGatewaysClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.lvgr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VpnGatewaysClient", "List", resp, "Failure sending request") + return + } + + result.lvgr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnGatewaysClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client VpnGatewaysClient) ListPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/vpnGateways", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client VpnGatewaysClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client VpnGatewaysClient) ListResponder(resp *http.Response) (result ListVpnGatewaysResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client VpnGatewaysClient) listNextResults(ctx context.Context, lastResults ListVpnGatewaysResult) (result ListVpnGatewaysResult, err error) { + req, err := lastResults.listVpnGatewaysResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VpnGatewaysClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VpnGatewaysClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnGatewaysClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client VpnGatewaysClient) ListComplete(ctx context.Context) (result ListVpnGatewaysResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnGatewaysClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx) + return +} + +// ListByResourceGroup lists all the VpnGateways in a resource group. +// Parameters: +// resourceGroupName - the resource group name of the VpnGateway. +func (client VpnGatewaysClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result ListVpnGatewaysResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnGatewaysClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.lvgr.Response.Response != nil { + sc = result.lvgr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listByResourceGroupNextResults + req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnGatewaysClient", "ListByResourceGroup", nil, "Failure preparing request") + return + } + + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.lvgr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VpnGatewaysClient", "ListByResourceGroup", resp, "Failure sending request") + return + } + + result.lvgr, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnGatewaysClient", "ListByResourceGroup", resp, "Failure responding to request") + } + + return +} + +// ListByResourceGroupPreparer prepares the ListByResourceGroup request. +func (client VpnGatewaysClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the +// http.Response Body if it receives an error. +func (client VpnGatewaysClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always +// closes the http.Response Body. +func (client VpnGatewaysClient) ListByResourceGroupResponder(resp *http.Response) (result ListVpnGatewaysResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listByResourceGroupNextResults retrieves the next set of results, if any. +func (client VpnGatewaysClient) listByResourceGroupNextResults(ctx context.Context, lastResults ListVpnGatewaysResult) (result ListVpnGatewaysResult, err error) { + req, err := lastResults.listVpnGatewaysResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VpnGatewaysClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VpnGatewaysClient", "listByResourceGroupNextResults", resp, "Failure sending next results request") + } + result, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnGatewaysClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. +func (client VpnGatewaysClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result ListVpnGatewaysResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnGatewaysClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListByResourceGroup(ctx, resourceGroupName) + return +} + +// Reset resets the primary of the vpn gateway in the specified resource group. +// Parameters: +// resourceGroupName - the resource group name of the VpnGateway. +// gatewayName - the name of the gateway. +func (client VpnGatewaysClient) Reset(ctx context.Context, resourceGroupName string, gatewayName string) (result VpnGatewaysResetFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnGatewaysClient.Reset") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ResetPreparer(ctx, resourceGroupName, gatewayName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnGatewaysClient", "Reset", nil, "Failure preparing request") + return + } + + result, err = client.ResetSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnGatewaysClient", "Reset", result.Response(), "Failure sending request") + return + } + + return +} + +// ResetPreparer prepares the Reset request. +func (client VpnGatewaysClient) ResetPreparer(ctx context.Context, resourceGroupName string, gatewayName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "gatewayName": autorest.Encode("path", gatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/reset", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ResetSender sends the Reset request. The method will close the +// http.Response Body if it receives an error. +func (client VpnGatewaysClient) ResetSender(req *http.Request) (future VpnGatewaysResetFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// ResetResponder handles the response to the Reset request. The method always +// closes the http.Response Body. +func (client VpnGatewaysClient) ResetResponder(resp *http.Response) (result VpnGateway, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// UpdateTags updates virtual wan vpn gateway tags. +// Parameters: +// resourceGroupName - the resource group name of the VpnGateway. +// gatewayName - the name of the gateway. +// vpnGatewayParameters - parameters supplied to update a virtual wan vpn gateway tags. +func (client VpnGatewaysClient) UpdateTags(ctx context.Context, resourceGroupName string, gatewayName string, vpnGatewayParameters TagsObject) (result VpnGateway, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnGatewaysClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, gatewayName, vpnGatewayParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnGatewaysClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VpnGatewaysClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnGatewaysClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client VpnGatewaysClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, gatewayName string, vpnGatewayParameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "gatewayName": autorest.Encode("path", gatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}", pathParameters), + autorest.WithJSON(vpnGatewayParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client VpnGatewaysClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client VpnGatewaysClient) UpdateTagsResponder(resp *http.Response) (result VpnGateway, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpnlinkconnections.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpnlinkconnections.go new file mode 100644 index 0000000..77be151 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpnlinkconnections.go @@ -0,0 +1,159 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// VpnLinkConnectionsClient is the network Client +type VpnLinkConnectionsClient struct { + BaseClient +} + +// NewVpnLinkConnectionsClient creates an instance of the VpnLinkConnectionsClient client. +func NewVpnLinkConnectionsClient(subscriptionID string) VpnLinkConnectionsClient { + return NewVpnLinkConnectionsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewVpnLinkConnectionsClientWithBaseURI creates an instance of the VpnLinkConnectionsClient client using a custom +// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure +// stack). +func NewVpnLinkConnectionsClientWithBaseURI(baseURI string, subscriptionID string) VpnLinkConnectionsClient { + return VpnLinkConnectionsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// ListByVpnConnection retrieves all vpn site link connections for a particular virtual wan vpn gateway vpn connection. +// Parameters: +// resourceGroupName - the resource group name of the VpnGateway. +// gatewayName - the name of the gateway. +// connectionName - the name of the vpn connection. +func (client VpnLinkConnectionsClient) ListByVpnConnection(ctx context.Context, resourceGroupName string, gatewayName string, connectionName string) (result ListVpnSiteLinkConnectionsResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnLinkConnectionsClient.ListByVpnConnection") + defer func() { + sc := -1 + if result.lvslcr.Response.Response != nil { + sc = result.lvslcr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listByVpnConnectionNextResults + req, err := client.ListByVpnConnectionPreparer(ctx, resourceGroupName, gatewayName, connectionName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnLinkConnectionsClient", "ListByVpnConnection", nil, "Failure preparing request") + return + } + + resp, err := client.ListByVpnConnectionSender(req) + if err != nil { + result.lvslcr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VpnLinkConnectionsClient", "ListByVpnConnection", resp, "Failure sending request") + return + } + + result.lvslcr, err = client.ListByVpnConnectionResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnLinkConnectionsClient", "ListByVpnConnection", resp, "Failure responding to request") + } + + return +} + +// ListByVpnConnectionPreparer prepares the ListByVpnConnection request. +func (client VpnLinkConnectionsClient) ListByVpnConnectionPreparer(ctx context.Context, resourceGroupName string, gatewayName string, connectionName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "connectionName": autorest.Encode("path", connectionName), + "gatewayName": autorest.Encode("path", gatewayName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}/vpnLinkConnections", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListByVpnConnectionSender sends the ListByVpnConnection request. The method will close the +// http.Response Body if it receives an error. +func (client VpnLinkConnectionsClient) ListByVpnConnectionSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListByVpnConnectionResponder handles the response to the ListByVpnConnection request. The method always +// closes the http.Response Body. +func (client VpnLinkConnectionsClient) ListByVpnConnectionResponder(resp *http.Response) (result ListVpnSiteLinkConnectionsResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listByVpnConnectionNextResults retrieves the next set of results, if any. +func (client VpnLinkConnectionsClient) listByVpnConnectionNextResults(ctx context.Context, lastResults ListVpnSiteLinkConnectionsResult) (result ListVpnSiteLinkConnectionsResult, err error) { + req, err := lastResults.listVpnSiteLinkConnectionsResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VpnLinkConnectionsClient", "listByVpnConnectionNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListByVpnConnectionSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VpnLinkConnectionsClient", "listByVpnConnectionNextResults", resp, "Failure sending next results request") + } + result, err = client.ListByVpnConnectionResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnLinkConnectionsClient", "listByVpnConnectionNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListByVpnConnectionComplete enumerates all values, automatically crossing page boundaries as required. +func (client VpnLinkConnectionsClient) ListByVpnConnectionComplete(ctx context.Context, resourceGroupName string, gatewayName string, connectionName string) (result ListVpnSiteLinkConnectionsResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnLinkConnectionsClient.ListByVpnConnection") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListByVpnConnection(ctx, resourceGroupName, gatewayName, connectionName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpnserverconfigurations.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpnserverconfigurations.go new file mode 100644 index 0000000..4a23272 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpnserverconfigurations.go @@ -0,0 +1,575 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// VpnServerConfigurationsClient is the network Client +type VpnServerConfigurationsClient struct { + BaseClient +} + +// NewVpnServerConfigurationsClient creates an instance of the VpnServerConfigurationsClient client. +func NewVpnServerConfigurationsClient(subscriptionID string) VpnServerConfigurationsClient { + return NewVpnServerConfigurationsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewVpnServerConfigurationsClientWithBaseURI creates an instance of the VpnServerConfigurationsClient client using a +// custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, +// Azure stack). +func NewVpnServerConfigurationsClientWithBaseURI(baseURI string, subscriptionID string) VpnServerConfigurationsClient { + return VpnServerConfigurationsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates a VpnServerConfiguration resource if it doesn't exist else updates the existing +// VpnServerConfiguration. +// Parameters: +// resourceGroupName - the resource group name of the VpnServerConfiguration. +// vpnServerConfigurationName - the name of the VpnServerConfiguration being created or updated. +// vpnServerConfigurationParameters - parameters supplied to create or update VpnServerConfiguration. +func (client VpnServerConfigurationsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, vpnServerConfigurationName string, vpnServerConfigurationParameters VpnServerConfiguration) (result VpnServerConfigurationsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnServerConfigurationsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, vpnServerConfigurationName, vpnServerConfigurationParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnServerConfigurationsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnServerConfigurationsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client VpnServerConfigurationsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, vpnServerConfigurationName string, vpnServerConfigurationParameters VpnServerConfiguration) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "vpnServerConfigurationName": autorest.Encode("path", vpnServerConfigurationName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + vpnServerConfigurationParameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}", pathParameters), + autorest.WithJSON(vpnServerConfigurationParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client VpnServerConfigurationsClient) CreateOrUpdateSender(req *http.Request) (future VpnServerConfigurationsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client VpnServerConfigurationsClient) CreateOrUpdateResponder(resp *http.Response) (result VpnServerConfiguration, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes a VpnServerConfiguration. +// Parameters: +// resourceGroupName - the resource group name of the VpnServerConfiguration. +// vpnServerConfigurationName - the name of the VpnServerConfiguration being deleted. +func (client VpnServerConfigurationsClient) Delete(ctx context.Context, resourceGroupName string, vpnServerConfigurationName string) (result VpnServerConfigurationsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnServerConfigurationsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, vpnServerConfigurationName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnServerConfigurationsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnServerConfigurationsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client VpnServerConfigurationsClient) DeletePreparer(ctx context.Context, resourceGroupName string, vpnServerConfigurationName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "vpnServerConfigurationName": autorest.Encode("path", vpnServerConfigurationName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client VpnServerConfigurationsClient) DeleteSender(req *http.Request) (future VpnServerConfigurationsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client VpnServerConfigurationsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get retrieves the details of a VpnServerConfiguration. +// Parameters: +// resourceGroupName - the resource group name of the VpnServerConfiguration. +// vpnServerConfigurationName - the name of the VpnServerConfiguration being retrieved. +func (client VpnServerConfigurationsClient) Get(ctx context.Context, resourceGroupName string, vpnServerConfigurationName string) (result VpnServerConfiguration, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnServerConfigurationsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, vpnServerConfigurationName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnServerConfigurationsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VpnServerConfigurationsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnServerConfigurationsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client VpnServerConfigurationsClient) GetPreparer(ctx context.Context, resourceGroupName string, vpnServerConfigurationName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "vpnServerConfigurationName": autorest.Encode("path", vpnServerConfigurationName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client VpnServerConfigurationsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client VpnServerConfigurationsClient) GetResponder(resp *http.Response) (result VpnServerConfiguration, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List lists all the VpnServerConfigurations in a subscription. +func (client VpnServerConfigurationsClient) List(ctx context.Context) (result ListVpnServerConfigurationsResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnServerConfigurationsClient.List") + defer func() { + sc := -1 + if result.lvscr.Response.Response != nil { + sc = result.lvscr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnServerConfigurationsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.lvscr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VpnServerConfigurationsClient", "List", resp, "Failure sending request") + return + } + + result.lvscr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnServerConfigurationsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client VpnServerConfigurationsClient) ListPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/vpnServerConfigurations", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client VpnServerConfigurationsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client VpnServerConfigurationsClient) ListResponder(resp *http.Response) (result ListVpnServerConfigurationsResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client VpnServerConfigurationsClient) listNextResults(ctx context.Context, lastResults ListVpnServerConfigurationsResult) (result ListVpnServerConfigurationsResult, err error) { + req, err := lastResults.listVpnServerConfigurationsResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VpnServerConfigurationsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VpnServerConfigurationsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnServerConfigurationsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client VpnServerConfigurationsClient) ListComplete(ctx context.Context) (result ListVpnServerConfigurationsResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnServerConfigurationsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx) + return +} + +// ListByResourceGroup lists all the vpnServerConfigurations in a resource group. +// Parameters: +// resourceGroupName - the resource group name of the VpnServerConfiguration. +func (client VpnServerConfigurationsClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result ListVpnServerConfigurationsResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnServerConfigurationsClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.lvscr.Response.Response != nil { + sc = result.lvscr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listByResourceGroupNextResults + req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnServerConfigurationsClient", "ListByResourceGroup", nil, "Failure preparing request") + return + } + + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.lvscr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VpnServerConfigurationsClient", "ListByResourceGroup", resp, "Failure sending request") + return + } + + result.lvscr, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnServerConfigurationsClient", "ListByResourceGroup", resp, "Failure responding to request") + } + + return +} + +// ListByResourceGroupPreparer prepares the ListByResourceGroup request. +func (client VpnServerConfigurationsClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the +// http.Response Body if it receives an error. +func (client VpnServerConfigurationsClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always +// closes the http.Response Body. +func (client VpnServerConfigurationsClient) ListByResourceGroupResponder(resp *http.Response) (result ListVpnServerConfigurationsResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listByResourceGroupNextResults retrieves the next set of results, if any. +func (client VpnServerConfigurationsClient) listByResourceGroupNextResults(ctx context.Context, lastResults ListVpnServerConfigurationsResult) (result ListVpnServerConfigurationsResult, err error) { + req, err := lastResults.listVpnServerConfigurationsResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VpnServerConfigurationsClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VpnServerConfigurationsClient", "listByResourceGroupNextResults", resp, "Failure sending next results request") + } + result, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnServerConfigurationsClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. +func (client VpnServerConfigurationsClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result ListVpnServerConfigurationsResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnServerConfigurationsClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListByResourceGroup(ctx, resourceGroupName) + return +} + +// UpdateTags updates VpnServerConfiguration tags. +// Parameters: +// resourceGroupName - the resource group name of the VpnServerConfiguration. +// vpnServerConfigurationName - the name of the VpnServerConfiguration being updated. +// vpnServerConfigurationParameters - parameters supplied to update VpnServerConfiguration tags. +func (client VpnServerConfigurationsClient) UpdateTags(ctx context.Context, resourceGroupName string, vpnServerConfigurationName string, vpnServerConfigurationParameters TagsObject) (result VpnServerConfiguration, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnServerConfigurationsClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, vpnServerConfigurationName, vpnServerConfigurationParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnServerConfigurationsClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VpnServerConfigurationsClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnServerConfigurationsClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client VpnServerConfigurationsClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, vpnServerConfigurationName string, vpnServerConfigurationParameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "vpnServerConfigurationName": autorest.Encode("path", vpnServerConfigurationName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnServerConfigurations/{vpnServerConfigurationName}", pathParameters), + autorest.WithJSON(vpnServerConfigurationParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client VpnServerConfigurationsClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client VpnServerConfigurationsClient) UpdateTagsResponder(resp *http.Response) (result VpnServerConfiguration, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpnserverconfigurationsassociatedwithvirtualwan.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpnserverconfigurationsassociatedwithvirtualwan.go new file mode 100644 index 0000000..f49c9e0 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpnserverconfigurationsassociatedwithvirtualwan.go @@ -0,0 +1,120 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// VpnServerConfigurationsAssociatedWithVirtualWanClient is the network Client +type VpnServerConfigurationsAssociatedWithVirtualWanClient struct { + BaseClient +} + +// NewVpnServerConfigurationsAssociatedWithVirtualWanClient creates an instance of the +// VpnServerConfigurationsAssociatedWithVirtualWanClient client. +func NewVpnServerConfigurationsAssociatedWithVirtualWanClient(subscriptionID string) VpnServerConfigurationsAssociatedWithVirtualWanClient { + return NewVpnServerConfigurationsAssociatedWithVirtualWanClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewVpnServerConfigurationsAssociatedWithVirtualWanClientWithBaseURI creates an instance of the +// VpnServerConfigurationsAssociatedWithVirtualWanClient client using a custom endpoint. Use this when interacting +// with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewVpnServerConfigurationsAssociatedWithVirtualWanClientWithBaseURI(baseURI string, subscriptionID string) VpnServerConfigurationsAssociatedWithVirtualWanClient { + return VpnServerConfigurationsAssociatedWithVirtualWanClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// List gives the list of VpnServerConfigurations associated with Virtual Wan in a resource group. +// Parameters: +// resourceGroupName - the resource group name. +// virtualWANName - the name of the VirtualWAN whose associated VpnServerConfigurations is needed. +func (client VpnServerConfigurationsAssociatedWithVirtualWanClient) List(ctx context.Context, resourceGroupName string, virtualWANName string) (result VpnServerConfigurationsAssociatedWithVirtualWanListFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnServerConfigurationsAssociatedWithVirtualWanClient.List") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ListPreparer(ctx, resourceGroupName, virtualWANName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnServerConfigurationsAssociatedWithVirtualWanClient", "List", nil, "Failure preparing request") + return + } + + result, err = client.ListSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnServerConfigurationsAssociatedWithVirtualWanClient", "List", result.Response(), "Failure sending request") + return + } + + return +} + +// ListPreparer prepares the List request. +func (client VpnServerConfigurationsAssociatedWithVirtualWanClient) ListPreparer(ctx context.Context, resourceGroupName string, virtualWANName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualWANName": autorest.Encode("path", virtualWANName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{virtualWANName}/vpnServerConfigurations", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client VpnServerConfigurationsAssociatedWithVirtualWanClient) ListSender(req *http.Request) (future VpnServerConfigurationsAssociatedWithVirtualWanListFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client VpnServerConfigurationsAssociatedWithVirtualWanClient) ListResponder(resp *http.Response) (result VpnServerConfigurationsResponse, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpnsitelinkconnections.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpnsitelinkconnections.go new file mode 100644 index 0000000..abebfa3 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpnsitelinkconnections.go @@ -0,0 +1,123 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// VpnSiteLinkConnectionsClient is the network Client +type VpnSiteLinkConnectionsClient struct { + BaseClient +} + +// NewVpnSiteLinkConnectionsClient creates an instance of the VpnSiteLinkConnectionsClient client. +func NewVpnSiteLinkConnectionsClient(subscriptionID string) VpnSiteLinkConnectionsClient { + return NewVpnSiteLinkConnectionsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewVpnSiteLinkConnectionsClientWithBaseURI creates an instance of the VpnSiteLinkConnectionsClient client using a +// custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, +// Azure stack). +func NewVpnSiteLinkConnectionsClientWithBaseURI(baseURI string, subscriptionID string) VpnSiteLinkConnectionsClient { + return VpnSiteLinkConnectionsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// Get retrieves the details of a vpn site link connection. +// Parameters: +// resourceGroupName - the resource group name of the VpnGateway. +// gatewayName - the name of the gateway. +// connectionName - the name of the vpn connection. +// linkConnectionName - the name of the vpn connection. +func (client VpnSiteLinkConnectionsClient) Get(ctx context.Context, resourceGroupName string, gatewayName string, connectionName string, linkConnectionName string) (result VpnSiteLinkConnection, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnSiteLinkConnectionsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, gatewayName, connectionName, linkConnectionName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSiteLinkConnectionsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VpnSiteLinkConnectionsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSiteLinkConnectionsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client VpnSiteLinkConnectionsClient) GetPreparer(ctx context.Context, resourceGroupName string, gatewayName string, connectionName string, linkConnectionName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "connectionName": autorest.Encode("path", connectionName), + "gatewayName": autorest.Encode("path", gatewayName), + "linkConnectionName": autorest.Encode("path", linkConnectionName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnGateways/{gatewayName}/vpnConnections/{connectionName}/vpnLinkConnections/{linkConnectionName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client VpnSiteLinkConnectionsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client VpnSiteLinkConnectionsClient) GetResponder(resp *http.Response) (result VpnSiteLinkConnection, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpnsitelinks.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpnsitelinks.go new file mode 100644 index 0000000..417b6c7 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpnsitelinks.go @@ -0,0 +1,234 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// VpnSiteLinksClient is the network Client +type VpnSiteLinksClient struct { + BaseClient +} + +// NewVpnSiteLinksClient creates an instance of the VpnSiteLinksClient client. +func NewVpnSiteLinksClient(subscriptionID string) VpnSiteLinksClient { + return NewVpnSiteLinksClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewVpnSiteLinksClientWithBaseURI creates an instance of the VpnSiteLinksClient client using a custom endpoint. Use +// this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewVpnSiteLinksClientWithBaseURI(baseURI string, subscriptionID string) VpnSiteLinksClient { + return VpnSiteLinksClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// Get retrieves the details of a VPN site link. +// Parameters: +// resourceGroupName - the resource group name of the VpnSite. +// vpnSiteName - the name of the VpnSite. +// vpnSiteLinkName - the name of the VpnSiteLink being retrieved. +func (client VpnSiteLinksClient) Get(ctx context.Context, resourceGroupName string, vpnSiteName string, vpnSiteLinkName string) (result VpnSiteLink, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnSiteLinksClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, vpnSiteName, vpnSiteLinkName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSiteLinksClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VpnSiteLinksClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSiteLinksClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client VpnSiteLinksClient) GetPreparer(ctx context.Context, resourceGroupName string, vpnSiteName string, vpnSiteLinkName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "vpnSiteLinkName": autorest.Encode("path", vpnSiteLinkName), + "vpnSiteName": autorest.Encode("path", vpnSiteName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}/vpnSiteLinks/{vpnSiteLinkName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client VpnSiteLinksClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client VpnSiteLinksClient) GetResponder(resp *http.Response) (result VpnSiteLink, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// ListByVpnSite lists all the vpnSiteLinks in a resource group for a vpn site. +// Parameters: +// resourceGroupName - the resource group name of the VpnSite. +// vpnSiteName - the name of the VpnSite. +func (client VpnSiteLinksClient) ListByVpnSite(ctx context.Context, resourceGroupName string, vpnSiteName string) (result ListVpnSiteLinksResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnSiteLinksClient.ListByVpnSite") + defer func() { + sc := -1 + if result.lvslr.Response.Response != nil { + sc = result.lvslr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listByVpnSiteNextResults + req, err := client.ListByVpnSitePreparer(ctx, resourceGroupName, vpnSiteName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSiteLinksClient", "ListByVpnSite", nil, "Failure preparing request") + return + } + + resp, err := client.ListByVpnSiteSender(req) + if err != nil { + result.lvslr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VpnSiteLinksClient", "ListByVpnSite", resp, "Failure sending request") + return + } + + result.lvslr, err = client.ListByVpnSiteResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSiteLinksClient", "ListByVpnSite", resp, "Failure responding to request") + } + + return +} + +// ListByVpnSitePreparer prepares the ListByVpnSite request. +func (client VpnSiteLinksClient) ListByVpnSitePreparer(ctx context.Context, resourceGroupName string, vpnSiteName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "vpnSiteName": autorest.Encode("path", vpnSiteName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}/vpnSiteLinks", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListByVpnSiteSender sends the ListByVpnSite request. The method will close the +// http.Response Body if it receives an error. +func (client VpnSiteLinksClient) ListByVpnSiteSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListByVpnSiteResponder handles the response to the ListByVpnSite request. The method always +// closes the http.Response Body. +func (client VpnSiteLinksClient) ListByVpnSiteResponder(resp *http.Response) (result ListVpnSiteLinksResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listByVpnSiteNextResults retrieves the next set of results, if any. +func (client VpnSiteLinksClient) listByVpnSiteNextResults(ctx context.Context, lastResults ListVpnSiteLinksResult) (result ListVpnSiteLinksResult, err error) { + req, err := lastResults.listVpnSiteLinksResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VpnSiteLinksClient", "listByVpnSiteNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListByVpnSiteSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VpnSiteLinksClient", "listByVpnSiteNextResults", resp, "Failure sending next results request") + } + result, err = client.ListByVpnSiteResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSiteLinksClient", "listByVpnSiteNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListByVpnSiteComplete enumerates all values, automatically crossing page boundaries as required. +func (client VpnSiteLinksClient) ListByVpnSiteComplete(ctx context.Context, resourceGroupName string, vpnSiteName string) (result ListVpnSiteLinksResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnSiteLinksClient.ListByVpnSite") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListByVpnSite(ctx, resourceGroupName, vpnSiteName) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpnsites.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpnsites.go new file mode 100644 index 0000000..ff52af1 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpnsites.go @@ -0,0 +1,573 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// VpnSitesClient is the network Client +type VpnSitesClient struct { + BaseClient +} + +// NewVpnSitesClient creates an instance of the VpnSitesClient client. +func NewVpnSitesClient(subscriptionID string) VpnSitesClient { + return NewVpnSitesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewVpnSitesClientWithBaseURI creates an instance of the VpnSitesClient client using a custom endpoint. Use this +// when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewVpnSitesClientWithBaseURI(baseURI string, subscriptionID string) VpnSitesClient { + return VpnSitesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates a VpnSite resource if it doesn't exist else updates the existing VpnSite. +// Parameters: +// resourceGroupName - the resource group name of the VpnSite. +// vpnSiteName - the name of the VpnSite being created or updated. +// vpnSiteParameters - parameters supplied to create or update VpnSite. +func (client VpnSitesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, vpnSiteName string, vpnSiteParameters VpnSite) (result VpnSitesCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnSitesClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, vpnSiteName, vpnSiteParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSitesClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSitesClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client VpnSitesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, vpnSiteName string, vpnSiteParameters VpnSite) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "vpnSiteName": autorest.Encode("path", vpnSiteName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + vpnSiteParameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}", pathParameters), + autorest.WithJSON(vpnSiteParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client VpnSitesClient) CreateOrUpdateSender(req *http.Request) (future VpnSitesCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client VpnSitesClient) CreateOrUpdateResponder(resp *http.Response) (result VpnSite, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes a VpnSite. +// Parameters: +// resourceGroupName - the resource group name of the VpnSite. +// vpnSiteName - the name of the VpnSite being deleted. +func (client VpnSitesClient) Delete(ctx context.Context, resourceGroupName string, vpnSiteName string) (result VpnSitesDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnSitesClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, vpnSiteName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSitesClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSitesClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client VpnSitesClient) DeletePreparer(ctx context.Context, resourceGroupName string, vpnSiteName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "vpnSiteName": autorest.Encode("path", vpnSiteName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client VpnSitesClient) DeleteSender(req *http.Request) (future VpnSitesDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client VpnSitesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get retrieves the details of a VPN site. +// Parameters: +// resourceGroupName - the resource group name of the VpnSite. +// vpnSiteName - the name of the VpnSite being retrieved. +func (client VpnSitesClient) Get(ctx context.Context, resourceGroupName string, vpnSiteName string) (result VpnSite, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnSitesClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, vpnSiteName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSitesClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VpnSitesClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSitesClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client VpnSitesClient) GetPreparer(ctx context.Context, resourceGroupName string, vpnSiteName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "vpnSiteName": autorest.Encode("path", vpnSiteName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client VpnSitesClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client VpnSitesClient) GetResponder(resp *http.Response) (result VpnSite, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List lists all the VpnSites in a subscription. +func (client VpnSitesClient) List(ctx context.Context) (result ListVpnSitesResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnSitesClient.List") + defer func() { + sc := -1 + if result.lvsr.Response.Response != nil { + sc = result.lvsr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSitesClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.lvsr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VpnSitesClient", "List", resp, "Failure sending request") + return + } + + result.lvsr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSitesClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client VpnSitesClient) ListPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/vpnSites", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client VpnSitesClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client VpnSitesClient) ListResponder(resp *http.Response) (result ListVpnSitesResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client VpnSitesClient) listNextResults(ctx context.Context, lastResults ListVpnSitesResult) (result ListVpnSitesResult, err error) { + req, err := lastResults.listVpnSitesResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VpnSitesClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VpnSitesClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSitesClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client VpnSitesClient) ListComplete(ctx context.Context) (result ListVpnSitesResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnSitesClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx) + return +} + +// ListByResourceGroup lists all the vpnSites in a resource group. +// Parameters: +// resourceGroupName - the resource group name of the VpnSite. +func (client VpnSitesClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result ListVpnSitesResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnSitesClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.lvsr.Response.Response != nil { + sc = result.lvsr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listByResourceGroupNextResults + req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSitesClient", "ListByResourceGroup", nil, "Failure preparing request") + return + } + + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.lvsr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VpnSitesClient", "ListByResourceGroup", resp, "Failure sending request") + return + } + + result.lvsr, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSitesClient", "ListByResourceGroup", resp, "Failure responding to request") + } + + return +} + +// ListByResourceGroupPreparer prepares the ListByResourceGroup request. +func (client VpnSitesClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the +// http.Response Body if it receives an error. +func (client VpnSitesClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always +// closes the http.Response Body. +func (client VpnSitesClient) ListByResourceGroupResponder(resp *http.Response) (result ListVpnSitesResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listByResourceGroupNextResults retrieves the next set of results, if any. +func (client VpnSitesClient) listByResourceGroupNextResults(ctx context.Context, lastResults ListVpnSitesResult) (result ListVpnSitesResult, err error) { + req, err := lastResults.listVpnSitesResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.VpnSitesClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.VpnSitesClient", "listByResourceGroupNextResults", resp, "Failure sending next results request") + } + result, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSitesClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. +func (client VpnSitesClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result ListVpnSitesResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnSitesClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListByResourceGroup(ctx, resourceGroupName) + return +} + +// UpdateTags updates VpnSite tags. +// Parameters: +// resourceGroupName - the resource group name of the VpnSite. +// vpnSiteName - the name of the VpnSite being updated. +// vpnSiteParameters - parameters supplied to update VpnSite tags. +func (client VpnSitesClient) UpdateTags(ctx context.Context, resourceGroupName string, vpnSiteName string, vpnSiteParameters TagsObject) (result VpnSite, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnSitesClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, vpnSiteName, vpnSiteParameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSitesClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.VpnSitesClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSitesClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client VpnSitesClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, vpnSiteName string, vpnSiteParameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "vpnSiteName": autorest.Encode("path", vpnSiteName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/vpnSites/{vpnSiteName}", pathParameters), + autorest.WithJSON(vpnSiteParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client VpnSitesClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client VpnSitesClient) UpdateTagsResponder(resp *http.Response) (result VpnSite, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpnsitesconfiguration.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpnsitesconfiguration.go new file mode 100644 index 0000000..b824255 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/vpnsitesconfiguration.go @@ -0,0 +1,128 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// VpnSitesConfigurationClient is the network Client +type VpnSitesConfigurationClient struct { + BaseClient +} + +// NewVpnSitesConfigurationClient creates an instance of the VpnSitesConfigurationClient client. +func NewVpnSitesConfigurationClient(subscriptionID string) VpnSitesConfigurationClient { + return NewVpnSitesConfigurationClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewVpnSitesConfigurationClientWithBaseURI creates an instance of the VpnSitesConfigurationClient client using a +// custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, +// Azure stack). +func NewVpnSitesConfigurationClientWithBaseURI(baseURI string, subscriptionID string) VpnSitesConfigurationClient { + return VpnSitesConfigurationClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// Download gives the sas-url to download the configurations for vpn-sites in a resource group. +// Parameters: +// resourceGroupName - the resource group name. +// virtualWANName - the name of the VirtualWAN for which configuration of all vpn-sites is needed. +// request - parameters supplied to download vpn-sites configuration. +func (client VpnSitesConfigurationClient) Download(ctx context.Context, resourceGroupName string, virtualWANName string, request GetVpnSitesConfigurationRequest) (result VpnSitesConfigurationDownloadFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/VpnSitesConfigurationClient.Download") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: request, + Constraints: []validation.Constraint{{Target: "request.OutputBlobSasURL", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil { + return result, validation.NewError("network.VpnSitesConfigurationClient", "Download", err.Error()) + } + + req, err := client.DownloadPreparer(ctx, resourceGroupName, virtualWANName, request) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSitesConfigurationClient", "Download", nil, "Failure preparing request") + return + } + + result, err = client.DownloadSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.VpnSitesConfigurationClient", "Download", result.Response(), "Failure sending request") + return + } + + return +} + +// DownloadPreparer prepares the Download request. +func (client VpnSitesConfigurationClient) DownloadPreparer(ctx context.Context, resourceGroupName string, virtualWANName string, request GetVpnSitesConfigurationRequest) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "virtualWANName": autorest.Encode("path", virtualWANName), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualWans/{virtualWANName}/vpnConfiguration", pathParameters), + autorest.WithJSON(request), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DownloadSender sends the Download request. The method will close the +// http.Response Body if it receives an error. +func (client VpnSitesConfigurationClient) DownloadSender(req *http.Request) (future VpnSitesConfigurationDownloadFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DownloadResponder handles the response to the Download request. The method always +// closes the http.Response Body. +func (client VpnSitesConfigurationClient) DownloadResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByClosing()) + result.Response = resp + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/watchers.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/watchers.go new file mode 100644 index 0000000..a332a2c --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/watchers.go @@ -0,0 +1,1536 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// WatchersClient is the network Client +type WatchersClient struct { + BaseClient +} + +// NewWatchersClient creates an instance of the WatchersClient client. +func NewWatchersClient(subscriptionID string) WatchersClient { + return NewWatchersClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewWatchersClientWithBaseURI creates an instance of the WatchersClient client using a custom endpoint. Use this +// when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewWatchersClientWithBaseURI(baseURI string, subscriptionID string) WatchersClient { + return WatchersClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CheckConnectivity verifies the possibility of establishing a direct TCP connection from a virtual machine to a given +// endpoint including another VM or an arbitrary remote server. +// Parameters: +// resourceGroupName - the name of the network watcher resource group. +// networkWatcherName - the name of the network watcher resource. +// parameters - parameters that determine how the connectivity check will be performed. +func (client WatchersClient) CheckConnectivity(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters ConnectivityParameters) (result WatchersCheckConnectivityFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WatchersClient.CheckConnectivity") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.Source", Name: validation.Null, Rule: true, + Chain: []validation.Constraint{{Target: "parameters.Source.ResourceID", Name: validation.Null, Rule: true, Chain: nil}}}, + {Target: "parameters.Destination", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil { + return result, validation.NewError("network.WatchersClient", "CheckConnectivity", err.Error()) + } + + req, err := client.CheckConnectivityPreparer(ctx, resourceGroupName, networkWatcherName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "CheckConnectivity", nil, "Failure preparing request") + return + } + + result, err = client.CheckConnectivitySender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "CheckConnectivity", result.Response(), "Failure sending request") + return + } + + return +} + +// CheckConnectivityPreparer prepares the CheckConnectivity request. +func (client WatchersClient) CheckConnectivityPreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters ConnectivityParameters) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectivityCheck", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CheckConnectivitySender sends the CheckConnectivity request. The method will close the +// http.Response Body if it receives an error. +func (client WatchersClient) CheckConnectivitySender(req *http.Request) (future WatchersCheckConnectivityFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CheckConnectivityResponder handles the response to the CheckConnectivity request. The method always +// closes the http.Response Body. +func (client WatchersClient) CheckConnectivityResponder(resp *http.Response) (result ConnectivityInformation, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// CreateOrUpdate creates or updates a network watcher in the specified resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkWatcherName - the name of the network watcher. +// parameters - parameters that define the network watcher resource. +func (client WatchersClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters Watcher) (result Watcher, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WatchersClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, networkWatcherName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + resp, err := client.CreateOrUpdateSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.WatchersClient", "CreateOrUpdate", resp, "Failure sending request") + return + } + + result, err = client.CreateOrUpdateResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "CreateOrUpdate", resp, "Failure responding to request") + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client WatchersClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters Watcher) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client WatchersClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client WatchersClient) CreateOrUpdateResponder(resp *http.Response) (result Watcher, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes the specified network watcher resource. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkWatcherName - the name of the network watcher. +func (client WatchersClient) Delete(ctx context.Context, resourceGroupName string, networkWatcherName string) (result WatchersDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WatchersClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, resourceGroupName, networkWatcherName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client WatchersClient) DeletePreparer(ctx context.Context, resourceGroupName string, networkWatcherName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client WatchersClient) DeleteSender(req *http.Request) (future WatchersDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client WatchersClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the specified network watcher by resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkWatcherName - the name of the network watcher. +func (client WatchersClient) Get(ctx context.Context, resourceGroupName string, networkWatcherName string) (result Watcher, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WatchersClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceGroupName, networkWatcherName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.WatchersClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client WatchersClient) GetPreparer(ctx context.Context, resourceGroupName string, networkWatcherName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client WatchersClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client WatchersClient) GetResponder(resp *http.Response) (result Watcher, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetAzureReachabilityReport gets the relative latency score for internet service providers from a specified location +// to Azure regions. +// Parameters: +// resourceGroupName - the name of the network watcher resource group. +// networkWatcherName - the name of the network watcher resource. +// parameters - parameters that determine Azure reachability report configuration. +func (client WatchersClient) GetAzureReachabilityReport(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters AzureReachabilityReportParameters) (result WatchersGetAzureReachabilityReportFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WatchersClient.GetAzureReachabilityReport") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.ProviderLocation", Name: validation.Null, Rule: true, + Chain: []validation.Constraint{{Target: "parameters.ProviderLocation.Country", Name: validation.Null, Rule: true, Chain: nil}}}, + {Target: "parameters.StartTime", Name: validation.Null, Rule: true, Chain: nil}, + {Target: "parameters.EndTime", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil { + return result, validation.NewError("network.WatchersClient", "GetAzureReachabilityReport", err.Error()) + } + + req, err := client.GetAzureReachabilityReportPreparer(ctx, resourceGroupName, networkWatcherName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "GetAzureReachabilityReport", nil, "Failure preparing request") + return + } + + result, err = client.GetAzureReachabilityReportSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "GetAzureReachabilityReport", result.Response(), "Failure sending request") + return + } + + return +} + +// GetAzureReachabilityReportPreparer prepares the GetAzureReachabilityReport request. +func (client WatchersClient) GetAzureReachabilityReportPreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters AzureReachabilityReportParameters) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/azureReachabilityReport", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetAzureReachabilityReportSender sends the GetAzureReachabilityReport request. The method will close the +// http.Response Body if it receives an error. +func (client WatchersClient) GetAzureReachabilityReportSender(req *http.Request) (future WatchersGetAzureReachabilityReportFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// GetAzureReachabilityReportResponder handles the response to the GetAzureReachabilityReport request. The method always +// closes the http.Response Body. +func (client WatchersClient) GetAzureReachabilityReportResponder(resp *http.Response) (result AzureReachabilityReport, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetFlowLogStatus queries status of flow log and traffic analytics (optional) on a specified resource. +// Parameters: +// resourceGroupName - the name of the network watcher resource group. +// networkWatcherName - the name of the network watcher resource. +// parameters - parameters that define a resource to query flow log and traffic analytics (optional) status. +func (client WatchersClient) GetFlowLogStatus(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters FlowLogStatusParameters) (result WatchersGetFlowLogStatusFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WatchersClient.GetFlowLogStatus") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.TargetResourceID", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil { + return result, validation.NewError("network.WatchersClient", "GetFlowLogStatus", err.Error()) + } + + req, err := client.GetFlowLogStatusPreparer(ctx, resourceGroupName, networkWatcherName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "GetFlowLogStatus", nil, "Failure preparing request") + return + } + + result, err = client.GetFlowLogStatusSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "GetFlowLogStatus", result.Response(), "Failure sending request") + return + } + + return +} + +// GetFlowLogStatusPreparer prepares the GetFlowLogStatus request. +func (client WatchersClient) GetFlowLogStatusPreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters FlowLogStatusParameters) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/queryFlowLogStatus", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetFlowLogStatusSender sends the GetFlowLogStatus request. The method will close the +// http.Response Body if it receives an error. +func (client WatchersClient) GetFlowLogStatusSender(req *http.Request) (future WatchersGetFlowLogStatusFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// GetFlowLogStatusResponder handles the response to the GetFlowLogStatus request. The method always +// closes the http.Response Body. +func (client WatchersClient) GetFlowLogStatusResponder(resp *http.Response) (result FlowLogInformation, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetNetworkConfigurationDiagnostic gets Network Configuration Diagnostic data to help customers understand and debug +// network behavior. It provides detailed information on what security rules were applied to a specified traffic flow +// and the result of evaluating these rules. Customers must provide details of a flow like source, destination, +// protocol, etc. The API returns whether traffic was allowed or denied, the rules evaluated for the specified flow and +// the evaluation results. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkWatcherName - the name of the network watcher. +// parameters - parameters to get network configuration diagnostic. +func (client WatchersClient) GetNetworkConfigurationDiagnostic(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters ConfigurationDiagnosticParameters) (result WatchersGetNetworkConfigurationDiagnosticFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WatchersClient.GetNetworkConfigurationDiagnostic") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.TargetResourceID", Name: validation.Null, Rule: true, Chain: nil}, + {Target: "parameters.Profiles", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil { + return result, validation.NewError("network.WatchersClient", "GetNetworkConfigurationDiagnostic", err.Error()) + } + + req, err := client.GetNetworkConfigurationDiagnosticPreparer(ctx, resourceGroupName, networkWatcherName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "GetNetworkConfigurationDiagnostic", nil, "Failure preparing request") + return + } + + result, err = client.GetNetworkConfigurationDiagnosticSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "GetNetworkConfigurationDiagnostic", result.Response(), "Failure sending request") + return + } + + return +} + +// GetNetworkConfigurationDiagnosticPreparer prepares the GetNetworkConfigurationDiagnostic request. +func (client WatchersClient) GetNetworkConfigurationDiagnosticPreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters ConfigurationDiagnosticParameters) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/networkConfigurationDiagnostic", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetNetworkConfigurationDiagnosticSender sends the GetNetworkConfigurationDiagnostic request. The method will close the +// http.Response Body if it receives an error. +func (client WatchersClient) GetNetworkConfigurationDiagnosticSender(req *http.Request) (future WatchersGetNetworkConfigurationDiagnosticFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// GetNetworkConfigurationDiagnosticResponder handles the response to the GetNetworkConfigurationDiagnostic request. The method always +// closes the http.Response Body. +func (client WatchersClient) GetNetworkConfigurationDiagnosticResponder(resp *http.Response) (result ConfigurationDiagnosticResponse, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetNextHop gets the next hop from the specified VM. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkWatcherName - the name of the network watcher. +// parameters - parameters that define the source and destination endpoint. +func (client WatchersClient) GetNextHop(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters NextHopParameters) (result WatchersGetNextHopFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WatchersClient.GetNextHop") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.TargetResourceID", Name: validation.Null, Rule: true, Chain: nil}, + {Target: "parameters.SourceIPAddress", Name: validation.Null, Rule: true, Chain: nil}, + {Target: "parameters.DestinationIPAddress", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil { + return result, validation.NewError("network.WatchersClient", "GetNextHop", err.Error()) + } + + req, err := client.GetNextHopPreparer(ctx, resourceGroupName, networkWatcherName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "GetNextHop", nil, "Failure preparing request") + return + } + + result, err = client.GetNextHopSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "GetNextHop", result.Response(), "Failure sending request") + return + } + + return +} + +// GetNextHopPreparer prepares the GetNextHop request. +func (client WatchersClient) GetNextHopPreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters NextHopParameters) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/nextHop", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetNextHopSender sends the GetNextHop request. The method will close the +// http.Response Body if it receives an error. +func (client WatchersClient) GetNextHopSender(req *http.Request) (future WatchersGetNextHopFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// GetNextHopResponder handles the response to the GetNextHop request. The method always +// closes the http.Response Body. +func (client WatchersClient) GetNextHopResponder(resp *http.Response) (result NextHopResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetTopology gets the current network topology by resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkWatcherName - the name of the network watcher. +// parameters - parameters that define the representation of topology. +func (client WatchersClient) GetTopology(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters TopologyParameters) (result Topology, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WatchersClient.GetTopology") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetTopologyPreparer(ctx, resourceGroupName, networkWatcherName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "GetTopology", nil, "Failure preparing request") + return + } + + resp, err := client.GetTopologySender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.WatchersClient", "GetTopology", resp, "Failure sending request") + return + } + + result, err = client.GetTopologyResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "GetTopology", resp, "Failure responding to request") + } + + return +} + +// GetTopologyPreparer prepares the GetTopology request. +func (client WatchersClient) GetTopologyPreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters TopologyParameters) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/topology", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetTopologySender sends the GetTopology request. The method will close the +// http.Response Body if it receives an error. +func (client WatchersClient) GetTopologySender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetTopologyResponder handles the response to the GetTopology request. The method always +// closes the http.Response Body. +func (client WatchersClient) GetTopologyResponder(resp *http.Response) (result Topology, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetTroubleshooting initiate troubleshooting on a specified resource. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkWatcherName - the name of the network watcher resource. +// parameters - parameters that define the resource to troubleshoot. +func (client WatchersClient) GetTroubleshooting(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters TroubleshootingParameters) (result WatchersGetTroubleshootingFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WatchersClient.GetTroubleshooting") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.TargetResourceID", Name: validation.Null, Rule: true, Chain: nil}, + {Target: "parameters.TroubleshootingProperties", Name: validation.Null, Rule: true, + Chain: []validation.Constraint{{Target: "parameters.TroubleshootingProperties.StorageID", Name: validation.Null, Rule: true, Chain: nil}, + {Target: "parameters.TroubleshootingProperties.StoragePath", Name: validation.Null, Rule: true, Chain: nil}, + }}}}}); err != nil { + return result, validation.NewError("network.WatchersClient", "GetTroubleshooting", err.Error()) + } + + req, err := client.GetTroubleshootingPreparer(ctx, resourceGroupName, networkWatcherName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "GetTroubleshooting", nil, "Failure preparing request") + return + } + + result, err = client.GetTroubleshootingSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "GetTroubleshooting", result.Response(), "Failure sending request") + return + } + + return +} + +// GetTroubleshootingPreparer prepares the GetTroubleshooting request. +func (client WatchersClient) GetTroubleshootingPreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters TroubleshootingParameters) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/troubleshoot", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetTroubleshootingSender sends the GetTroubleshooting request. The method will close the +// http.Response Body if it receives an error. +func (client WatchersClient) GetTroubleshootingSender(req *http.Request) (future WatchersGetTroubleshootingFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// GetTroubleshootingResponder handles the response to the GetTroubleshooting request. The method always +// closes the http.Response Body. +func (client WatchersClient) GetTroubleshootingResponder(resp *http.Response) (result TroubleshootingResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetTroubleshootingResult get the last completed troubleshooting result on a specified resource. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkWatcherName - the name of the network watcher resource. +// parameters - parameters that define the resource to query the troubleshooting result. +func (client WatchersClient) GetTroubleshootingResult(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters QueryTroubleshootingParameters) (result WatchersGetTroubleshootingResultFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WatchersClient.GetTroubleshootingResult") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.TargetResourceID", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil { + return result, validation.NewError("network.WatchersClient", "GetTroubleshootingResult", err.Error()) + } + + req, err := client.GetTroubleshootingResultPreparer(ctx, resourceGroupName, networkWatcherName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "GetTroubleshootingResult", nil, "Failure preparing request") + return + } + + result, err = client.GetTroubleshootingResultSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "GetTroubleshootingResult", result.Response(), "Failure sending request") + return + } + + return +} + +// GetTroubleshootingResultPreparer prepares the GetTroubleshootingResult request. +func (client WatchersClient) GetTroubleshootingResultPreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters QueryTroubleshootingParameters) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/queryTroubleshootResult", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetTroubleshootingResultSender sends the GetTroubleshootingResult request. The method will close the +// http.Response Body if it receives an error. +func (client WatchersClient) GetTroubleshootingResultSender(req *http.Request) (future WatchersGetTroubleshootingResultFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// GetTroubleshootingResultResponder handles the response to the GetTroubleshootingResult request. The method always +// closes the http.Response Body. +func (client WatchersClient) GetTroubleshootingResultResponder(resp *http.Response) (result TroubleshootingResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetVMSecurityRules gets the configured and effective security group rules on the specified VM. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkWatcherName - the name of the network watcher. +// parameters - parameters that define the VM to check security groups for. +func (client WatchersClient) GetVMSecurityRules(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters SecurityGroupViewParameters) (result WatchersGetVMSecurityRulesFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WatchersClient.GetVMSecurityRules") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.TargetResourceID", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil { + return result, validation.NewError("network.WatchersClient", "GetVMSecurityRules", err.Error()) + } + + req, err := client.GetVMSecurityRulesPreparer(ctx, resourceGroupName, networkWatcherName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "GetVMSecurityRules", nil, "Failure preparing request") + return + } + + result, err = client.GetVMSecurityRulesSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "GetVMSecurityRules", result.Response(), "Failure sending request") + return + } + + return +} + +// GetVMSecurityRulesPreparer prepares the GetVMSecurityRules request. +func (client WatchersClient) GetVMSecurityRulesPreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters SecurityGroupViewParameters) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/securityGroupView", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetVMSecurityRulesSender sends the GetVMSecurityRules request. The method will close the +// http.Response Body if it receives an error. +func (client WatchersClient) GetVMSecurityRulesSender(req *http.Request) (future WatchersGetVMSecurityRulesFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// GetVMSecurityRulesResponder handles the response to the GetVMSecurityRules request. The method always +// closes the http.Response Body. +func (client WatchersClient) GetVMSecurityRulesResponder(resp *http.Response) (result SecurityGroupViewResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all network watchers by resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client WatchersClient) List(ctx context.Context, resourceGroupName string) (result WatcherListResult, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WatchersClient.List") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ListPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.WatchersClient", "List", resp, "Failure sending request") + return + } + + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client WatchersClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client WatchersClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client WatchersClient) ListResponder(resp *http.Response) (result WatcherListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// ListAll gets all network watchers by subscription. +func (client WatchersClient) ListAll(ctx context.Context) (result WatcherListResult, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WatchersClient.ListAll") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ListAllPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "ListAll", nil, "Failure preparing request") + return + } + + resp, err := client.ListAllSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.WatchersClient", "ListAll", resp, "Failure sending request") + return + } + + result, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "ListAll", resp, "Failure responding to request") + } + + return +} + +// ListAllPreparer prepares the ListAll request. +func (client WatchersClient) ListAllPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkWatchers", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAllSender sends the ListAll request. The method will close the +// http.Response Body if it receives an error. +func (client WatchersClient) ListAllSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAllResponder handles the response to the ListAll request. The method always +// closes the http.Response Body. +func (client WatchersClient) ListAllResponder(resp *http.Response) (result WatcherListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// ListAvailableProviders lists all available internet service providers for a specified Azure region. +// Parameters: +// resourceGroupName - the name of the network watcher resource group. +// networkWatcherName - the name of the network watcher resource. +// parameters - parameters that scope the list of available providers. +func (client WatchersClient) ListAvailableProviders(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters AvailableProvidersListParameters) (result WatchersListAvailableProvidersFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WatchersClient.ListAvailableProviders") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ListAvailableProvidersPreparer(ctx, resourceGroupName, networkWatcherName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "ListAvailableProviders", nil, "Failure preparing request") + return + } + + result, err = client.ListAvailableProvidersSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "ListAvailableProviders", result.Response(), "Failure sending request") + return + } + + return +} + +// ListAvailableProvidersPreparer prepares the ListAvailableProviders request. +func (client WatchersClient) ListAvailableProvidersPreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters AvailableProvidersListParameters) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/availableProvidersList", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAvailableProvidersSender sends the ListAvailableProviders request. The method will close the +// http.Response Body if it receives an error. +func (client WatchersClient) ListAvailableProvidersSender(req *http.Request) (future WatchersListAvailableProvidersFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// ListAvailableProvidersResponder handles the response to the ListAvailableProviders request. The method always +// closes the http.Response Body. +func (client WatchersClient) ListAvailableProvidersResponder(resp *http.Response) (result AvailableProvidersList, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// SetFlowLogConfiguration configures flow log and traffic analytics (optional) on a specified resource. +// Parameters: +// resourceGroupName - the name of the network watcher resource group. +// networkWatcherName - the name of the network watcher resource. +// parameters - parameters that define the configuration of flow log. +func (client WatchersClient) SetFlowLogConfiguration(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters FlowLogInformation) (result WatchersSetFlowLogConfigurationFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WatchersClient.SetFlowLogConfiguration") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.TargetResourceID", Name: validation.Null, Rule: true, Chain: nil}, + {Target: "parameters.FlowLogProperties", Name: validation.Null, Rule: true, + Chain: []validation.Constraint{{Target: "parameters.FlowLogProperties.StorageID", Name: validation.Null, Rule: true, Chain: nil}, + {Target: "parameters.FlowLogProperties.Enabled", Name: validation.Null, Rule: true, Chain: nil}, + }}, + {Target: "parameters.FlowAnalyticsConfiguration", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.FlowAnalyticsConfiguration.NetworkWatcherFlowAnalyticsConfiguration", Name: validation.Null, Rule: true, + Chain: []validation.Constraint{{Target: "parameters.FlowAnalyticsConfiguration.NetworkWatcherFlowAnalyticsConfiguration.Enabled", Name: validation.Null, Rule: true, Chain: nil}}}, + }}}}}); err != nil { + return result, validation.NewError("network.WatchersClient", "SetFlowLogConfiguration", err.Error()) + } + + req, err := client.SetFlowLogConfigurationPreparer(ctx, resourceGroupName, networkWatcherName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "SetFlowLogConfiguration", nil, "Failure preparing request") + return + } + + result, err = client.SetFlowLogConfigurationSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "SetFlowLogConfiguration", result.Response(), "Failure sending request") + return + } + + return +} + +// SetFlowLogConfigurationPreparer prepares the SetFlowLogConfiguration request. +func (client WatchersClient) SetFlowLogConfigurationPreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters FlowLogInformation) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/configureFlowLog", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// SetFlowLogConfigurationSender sends the SetFlowLogConfiguration request. The method will close the +// http.Response Body if it receives an error. +func (client WatchersClient) SetFlowLogConfigurationSender(req *http.Request) (future WatchersSetFlowLogConfigurationFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// SetFlowLogConfigurationResponder handles the response to the SetFlowLogConfiguration request. The method always +// closes the http.Response Body. +func (client WatchersClient) SetFlowLogConfigurationResponder(resp *http.Response) (result FlowLogInformation, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// UpdateTags updates a network watcher tags. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkWatcherName - the name of the network watcher. +// parameters - parameters supplied to update network watcher tags. +func (client WatchersClient) UpdateTags(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters TagsObject) (result Watcher, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WatchersClient.UpdateTags") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, networkWatcherName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "UpdateTags", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateTagsSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.WatchersClient", "UpdateTags", resp, "Failure sending request") + return + } + + result, err = client.UpdateTagsResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "UpdateTags", resp, "Failure responding to request") + } + + return +} + +// UpdateTagsPreparer prepares the UpdateTags request. +func (client WatchersClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters TagsObject) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateTagsSender sends the UpdateTags request. The method will close the +// http.Response Body if it receives an error. +func (client WatchersClient) UpdateTagsSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateTagsResponder handles the response to the UpdateTags request. The method always +// closes the http.Response Body. +func (client WatchersClient) UpdateTagsResponder(resp *http.Response) (result Watcher, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// VerifyIPFlow verify IP flow from the specified VM to a location given the currently configured NSG rules. +// Parameters: +// resourceGroupName - the name of the resource group. +// networkWatcherName - the name of the network watcher. +// parameters - parameters that define the IP flow to be verified. +func (client WatchersClient) VerifyIPFlow(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters VerificationIPFlowParameters) (result WatchersVerifyIPFlowFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WatchersClient.VerifyIPFlow") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.TargetResourceID", Name: validation.Null, Rule: true, Chain: nil}, + {Target: "parameters.LocalPort", Name: validation.Null, Rule: true, Chain: nil}, + {Target: "parameters.RemotePort", Name: validation.Null, Rule: true, Chain: nil}, + {Target: "parameters.LocalIPAddress", Name: validation.Null, Rule: true, Chain: nil}, + {Target: "parameters.RemoteIPAddress", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil { + return result, validation.NewError("network.WatchersClient", "VerifyIPFlow", err.Error()) + } + + req, err := client.VerifyIPFlowPreparer(ctx, resourceGroupName, networkWatcherName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "VerifyIPFlow", nil, "Failure preparing request") + return + } + + result, err = client.VerifyIPFlowSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WatchersClient", "VerifyIPFlow", result.Response(), "Failure sending request") + return + } + + return +} + +// VerifyIPFlowPreparer prepares the VerifyIPFlow request. +func (client WatchersClient) VerifyIPFlowPreparer(ctx context.Context, resourceGroupName string, networkWatcherName string, parameters VerificationIPFlowParameters) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "networkWatcherName": autorest.Encode("path", networkWatcherName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/ipFlowVerify", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// VerifyIPFlowSender sends the VerifyIPFlow request. The method will close the +// http.Response Body if it receives an error. +func (client WatchersClient) VerifyIPFlowSender(req *http.Request) (future WatchersVerifyIPFlowFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// VerifyIPFlowResponder handles the response to the VerifyIPFlow request. The method always +// closes the http.Response Body. +func (client WatchersClient) VerifyIPFlowResponder(resp *http.Response) (result VerificationIPFlowResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/webapplicationfirewallpolicies.go b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/webapplicationfirewallpolicies.go new file mode 100644 index 0000000..efeed4b --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network/webapplicationfirewallpolicies.go @@ -0,0 +1,527 @@ +package network + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// WebApplicationFirewallPoliciesClient is the network Client +type WebApplicationFirewallPoliciesClient struct { + BaseClient +} + +// NewWebApplicationFirewallPoliciesClient creates an instance of the WebApplicationFirewallPoliciesClient client. +func NewWebApplicationFirewallPoliciesClient(subscriptionID string) WebApplicationFirewallPoliciesClient { + return NewWebApplicationFirewallPoliciesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewWebApplicationFirewallPoliciesClientWithBaseURI creates an instance of the WebApplicationFirewallPoliciesClient +// client using a custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI +// (sovereign clouds, Azure stack). +func NewWebApplicationFirewallPoliciesClientWithBaseURI(baseURI string, subscriptionID string) WebApplicationFirewallPoliciesClient { + return WebApplicationFirewallPoliciesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate creates or update policy with specified rule set name within a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// policyName - the name of the policy. +// parameters - policy to be created. +func (client WebApplicationFirewallPoliciesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, policyName string, parameters WebApplicationFirewallPolicy) (result WebApplicationFirewallPolicy, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WebApplicationFirewallPoliciesClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: policyName, + Constraints: []validation.Constraint{{Target: "policyName", Name: validation.MaxLength, Rule: 128, Chain: nil}}}, + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.WebApplicationFirewallPolicyPropertiesFormat", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.WebApplicationFirewallPolicyPropertiesFormat.PolicySettings", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.WebApplicationFirewallPolicyPropertiesFormat.PolicySettings.MaxRequestBodySizeInKb", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.WebApplicationFirewallPolicyPropertiesFormat.PolicySettings.MaxRequestBodySizeInKb", Name: validation.InclusiveMaximum, Rule: int64(128), Chain: nil}, + {Target: "parameters.WebApplicationFirewallPolicyPropertiesFormat.PolicySettings.MaxRequestBodySizeInKb", Name: validation.InclusiveMinimum, Rule: int64(8), Chain: nil}, + }}, + {Target: "parameters.WebApplicationFirewallPolicyPropertiesFormat.PolicySettings.FileUploadLimitInMb", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.WebApplicationFirewallPolicyPropertiesFormat.PolicySettings.FileUploadLimitInMb", Name: validation.InclusiveMinimum, Rule: int64(0), Chain: nil}}}, + }}, + {Target: "parameters.WebApplicationFirewallPolicyPropertiesFormat.ManagedRules", Name: validation.Null, Rule: true, + Chain: []validation.Constraint{{Target: "parameters.WebApplicationFirewallPolicyPropertiesFormat.ManagedRules.ManagedRuleSets", Name: validation.Null, Rule: true, Chain: nil}}}, + }}}}}); err != nil { + return result, validation.NewError("network.WebApplicationFirewallPoliciesClient", "CreateOrUpdate", err.Error()) + } + + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, policyName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WebApplicationFirewallPoliciesClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + resp, err := client.CreateOrUpdateSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.WebApplicationFirewallPoliciesClient", "CreateOrUpdate", resp, "Failure sending request") + return + } + + result, err = client.CreateOrUpdateResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WebApplicationFirewallPoliciesClient", "CreateOrUpdate", resp, "Failure responding to request") + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client WebApplicationFirewallPoliciesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, policyName string, parameters WebApplicationFirewallPolicy) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "policyName": autorest.Encode("path", policyName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.Etag = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/{policyName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client WebApplicationFirewallPoliciesClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client WebApplicationFirewallPoliciesClient) CreateOrUpdateResponder(resp *http.Response) (result WebApplicationFirewallPolicy, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes Policy. +// Parameters: +// resourceGroupName - the name of the resource group. +// policyName - the name of the policy. +func (client WebApplicationFirewallPoliciesClient) Delete(ctx context.Context, resourceGroupName string, policyName string) (result WebApplicationFirewallPoliciesDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WebApplicationFirewallPoliciesClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: policyName, + Constraints: []validation.Constraint{{Target: "policyName", Name: validation.MaxLength, Rule: 128, Chain: nil}}}}); err != nil { + return result, validation.NewError("network.WebApplicationFirewallPoliciesClient", "Delete", err.Error()) + } + + req, err := client.DeletePreparer(ctx, resourceGroupName, policyName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WebApplicationFirewallPoliciesClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WebApplicationFirewallPoliciesClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client WebApplicationFirewallPoliciesClient) DeletePreparer(ctx context.Context, resourceGroupName string, policyName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "policyName": autorest.Encode("path", policyName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/{policyName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client WebApplicationFirewallPoliciesClient) DeleteSender(req *http.Request) (future WebApplicationFirewallPoliciesDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client WebApplicationFirewallPoliciesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get retrieve protection policy with specified name within a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +// policyName - the name of the policy. +func (client WebApplicationFirewallPoliciesClient) Get(ctx context.Context, resourceGroupName string, policyName string) (result WebApplicationFirewallPolicy, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WebApplicationFirewallPoliciesClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: policyName, + Constraints: []validation.Constraint{{Target: "policyName", Name: validation.MaxLength, Rule: 128, Chain: nil}}}}); err != nil { + return result, validation.NewError("network.WebApplicationFirewallPoliciesClient", "Get", err.Error()) + } + + req, err := client.GetPreparer(ctx, resourceGroupName, policyName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WebApplicationFirewallPoliciesClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.WebApplicationFirewallPoliciesClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WebApplicationFirewallPoliciesClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client WebApplicationFirewallPoliciesClient) GetPreparer(ctx context.Context, resourceGroupName string, policyName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "policyName": autorest.Encode("path", policyName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/{policyName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client WebApplicationFirewallPoliciesClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client WebApplicationFirewallPoliciesClient) GetResponder(resp *http.Response) (result WebApplicationFirewallPolicy, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List lists all of the protection policies within a resource group. +// Parameters: +// resourceGroupName - the name of the resource group. +func (client WebApplicationFirewallPoliciesClient) List(ctx context.Context, resourceGroupName string) (result WebApplicationFirewallPolicyListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WebApplicationFirewallPoliciesClient.List") + defer func() { + sc := -1 + if result.wafplr.Response.Response != nil { + sc = result.wafplr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WebApplicationFirewallPoliciesClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.wafplr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.WebApplicationFirewallPoliciesClient", "List", resp, "Failure sending request") + return + } + + result.wafplr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WebApplicationFirewallPoliciesClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client WebApplicationFirewallPoliciesClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client WebApplicationFirewallPoliciesClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client WebApplicationFirewallPoliciesClient) ListResponder(resp *http.Response) (result WebApplicationFirewallPolicyListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client WebApplicationFirewallPoliciesClient) listNextResults(ctx context.Context, lastResults WebApplicationFirewallPolicyListResult) (result WebApplicationFirewallPolicyListResult, err error) { + req, err := lastResults.webApplicationFirewallPolicyListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.WebApplicationFirewallPoliciesClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.WebApplicationFirewallPoliciesClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WebApplicationFirewallPoliciesClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client WebApplicationFirewallPoliciesClient) ListComplete(ctx context.Context, resourceGroupName string) (result WebApplicationFirewallPolicyListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WebApplicationFirewallPoliciesClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName) + return +} + +// ListAll gets all the WAF policies in a subscription. +func (client WebApplicationFirewallPoliciesClient) ListAll(ctx context.Context) (result WebApplicationFirewallPolicyListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WebApplicationFirewallPoliciesClient.ListAll") + defer func() { + sc := -1 + if result.wafplr.Response.Response != nil { + sc = result.wafplr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listAllNextResults + req, err := client.ListAllPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WebApplicationFirewallPoliciesClient", "ListAll", nil, "Failure preparing request") + return + } + + resp, err := client.ListAllSender(req) + if err != nil { + result.wafplr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "network.WebApplicationFirewallPoliciesClient", "ListAll", resp, "Failure sending request") + return + } + + result.wafplr, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WebApplicationFirewallPoliciesClient", "ListAll", resp, "Failure responding to request") + } + + return +} + +// ListAllPreparer prepares the ListAll request. +func (client WebApplicationFirewallPoliciesClient) ListAllPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAllSender sends the ListAll request. The method will close the +// http.Response Body if it receives an error. +func (client WebApplicationFirewallPoliciesClient) ListAllSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAllResponder handles the response to the ListAll request. The method always +// closes the http.Response Body. +func (client WebApplicationFirewallPoliciesClient) ListAllResponder(resp *http.Response) (result WebApplicationFirewallPolicyListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listAllNextResults retrieves the next set of results, if any. +func (client WebApplicationFirewallPoliciesClient) listAllNextResults(ctx context.Context, lastResults WebApplicationFirewallPolicyListResult) (result WebApplicationFirewallPolicyListResult, err error) { + req, err := lastResults.webApplicationFirewallPolicyListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "network.WebApplicationFirewallPoliciesClient", "listAllNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListAllSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "network.WebApplicationFirewallPoliciesClient", "listAllNextResults", resp, "Failure sending next results request") + } + result, err = client.ListAllResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "network.WebApplicationFirewallPoliciesClient", "listAllNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListAllComplete enumerates all values, automatically crossing page boundaries as required. +func (client WebApplicationFirewallPoliciesClient) ListAllComplete(ctx context.Context) (result WebApplicationFirewallPolicyListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/WebApplicationFirewallPoliciesClient.ListAll") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListAll(ctx) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/client.go b/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/client.go new file mode 100644 index 0000000..ab582ee --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/client.go @@ -0,0 +1,52 @@ +// Package resources implements the Azure ARM Resources service API version 2019-05-01. +// +// Provides operations for working with resources and resource groups. +package resources + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "github.com/Azure/go-autorest/autorest" +) + +const ( + // DefaultBaseURI is the default URI used for the service Resources + DefaultBaseURI = "https://management.azure.com" +) + +// BaseClient is the base client for Resources. +type BaseClient struct { + autorest.Client + BaseURI string + SubscriptionID string +} + +// New creates an instance of the BaseClient client. +func New(subscriptionID string) BaseClient { + return NewWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewWithBaseURI creates an instance of the BaseClient client using a custom endpoint. Use this when interacting with +// an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewWithBaseURI(baseURI string, subscriptionID string) BaseClient { + return BaseClient{ + Client: autorest.NewClientWithUserAgent(UserAgent()), + BaseURI: baseURI, + SubscriptionID: subscriptionID, + } +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/deploymentoperations.go b/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/deploymentoperations.go new file mode 100644 index 0000000..9fde745 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/deploymentoperations.go @@ -0,0 +1,688 @@ +package resources + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// DeploymentOperationsClient is the provides operations for working with resources and resource groups. +type DeploymentOperationsClient struct { + BaseClient +} + +// NewDeploymentOperationsClient creates an instance of the DeploymentOperationsClient client. +func NewDeploymentOperationsClient(subscriptionID string) DeploymentOperationsClient { + return NewDeploymentOperationsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewDeploymentOperationsClientWithBaseURI creates an instance of the DeploymentOperationsClient client using a custom +// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure +// stack). +func NewDeploymentOperationsClientWithBaseURI(baseURI string, subscriptionID string) DeploymentOperationsClient { + return DeploymentOperationsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// Get gets a deployments operation. +// Parameters: +// resourceGroupName - the name of the resource group. The name is case insensitive. +// deploymentName - the name of the deployment. +// operationID - the ID of the operation to get. +func (client DeploymentOperationsClient) Get(ctx context.Context, resourceGroupName string, deploymentName string, operationID string) (result DeploymentOperation, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentOperationsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: resourceGroupName, + Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}, + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.DeploymentOperationsClient", "Get", err.Error()) + } + + req, err := client.GetPreparer(ctx, resourceGroupName, deploymentName, operationID) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client DeploymentOperationsClient) GetPreparer(ctx context.Context, resourceGroupName string, deploymentName string, operationID string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "operationId": autorest.Encode("path", operationID), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/deployments/{deploymentName}/operations/{operationId}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentOperationsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client DeploymentOperationsClient) GetResponder(resp *http.Response) (result DeploymentOperation, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetAtManagementGroupScope gets a deployments operation. +// Parameters: +// groupID - the management group ID. +// deploymentName - the name of the deployment. +// operationID - the ID of the operation to get. +func (client DeploymentOperationsClient) GetAtManagementGroupScope(ctx context.Context, groupID string, deploymentName string, operationID string) (result DeploymentOperation, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentOperationsClient.GetAtManagementGroupScope") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: groupID, + Constraints: []validation.Constraint{{Target: "groupID", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "groupID", Name: validation.MinLength, Rule: 1, Chain: nil}}}, + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.DeploymentOperationsClient", "GetAtManagementGroupScope", err.Error()) + } + + req, err := client.GetAtManagementGroupScopePreparer(ctx, groupID, deploymentName, operationID) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "GetAtManagementGroupScope", nil, "Failure preparing request") + return + } + + resp, err := client.GetAtManagementGroupScopeSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "GetAtManagementGroupScope", resp, "Failure sending request") + return + } + + result, err = client.GetAtManagementGroupScopeResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "GetAtManagementGroupScope", resp, "Failure responding to request") + } + + return +} + +// GetAtManagementGroupScopePreparer prepares the GetAtManagementGroupScope request. +func (client DeploymentOperationsClient) GetAtManagementGroupScopePreparer(ctx context.Context, groupID string, deploymentName string, operationID string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "groupId": autorest.Encode("path", groupID), + "operationId": autorest.Encode("path", operationID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetAtManagementGroupScopeSender sends the GetAtManagementGroupScope request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentOperationsClient) GetAtManagementGroupScopeSender(req *http.Request) (*http.Response, error) { + return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) +} + +// GetAtManagementGroupScopeResponder handles the response to the GetAtManagementGroupScope request. The method always +// closes the http.Response Body. +func (client DeploymentOperationsClient) GetAtManagementGroupScopeResponder(resp *http.Response) (result DeploymentOperation, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetAtSubscriptionScope gets a deployments operation. +// Parameters: +// deploymentName - the name of the deployment. +// operationID - the ID of the operation to get. +func (client DeploymentOperationsClient) GetAtSubscriptionScope(ctx context.Context, deploymentName string, operationID string) (result DeploymentOperation, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentOperationsClient.GetAtSubscriptionScope") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.DeploymentOperationsClient", "GetAtSubscriptionScope", err.Error()) + } + + req, err := client.GetAtSubscriptionScopePreparer(ctx, deploymentName, operationID) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "GetAtSubscriptionScope", nil, "Failure preparing request") + return + } + + resp, err := client.GetAtSubscriptionScopeSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "GetAtSubscriptionScope", resp, "Failure sending request") + return + } + + result, err = client.GetAtSubscriptionScopeResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "GetAtSubscriptionScope", resp, "Failure responding to request") + } + + return +} + +// GetAtSubscriptionScopePreparer prepares the GetAtSubscriptionScope request. +func (client DeploymentOperationsClient) GetAtSubscriptionScopePreparer(ctx context.Context, deploymentName string, operationID string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "operationId": autorest.Encode("path", operationID), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetAtSubscriptionScopeSender sends the GetAtSubscriptionScope request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentOperationsClient) GetAtSubscriptionScopeSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetAtSubscriptionScopeResponder handles the response to the GetAtSubscriptionScope request. The method always +// closes the http.Response Body. +func (client DeploymentOperationsClient) GetAtSubscriptionScopeResponder(resp *http.Response) (result DeploymentOperation, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all deployments operations for a deployment. +// Parameters: +// resourceGroupName - the name of the resource group. The name is case insensitive. +// deploymentName - the name of the deployment. +// top - the number of results to return. +func (client DeploymentOperationsClient) List(ctx context.Context, resourceGroupName string, deploymentName string, top *int32) (result DeploymentOperationsListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentOperationsClient.List") + defer func() { + sc := -1 + if result.dolr.Response.Response != nil { + sc = result.dolr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: resourceGroupName, + Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}, + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.DeploymentOperationsClient", "List", err.Error()) + } + + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, resourceGroupName, deploymentName, top) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.dolr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "List", resp, "Failure sending request") + return + } + + result.dolr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client DeploymentOperationsClient) ListPreparer(ctx context.Context, resourceGroupName string, deploymentName string, top *int32) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if top != nil { + queryParameters["$top"] = autorest.Encode("query", *top) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/deployments/{deploymentName}/operations", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentOperationsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client DeploymentOperationsClient) ListResponder(resp *http.Response) (result DeploymentOperationsListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client DeploymentOperationsClient) listNextResults(ctx context.Context, lastResults DeploymentOperationsListResult) (result DeploymentOperationsListResult, err error) { + req, err := lastResults.deploymentOperationsListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client DeploymentOperationsClient) ListComplete(ctx context.Context, resourceGroupName string, deploymentName string, top *int32) (result DeploymentOperationsListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentOperationsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, resourceGroupName, deploymentName, top) + return +} + +// ListAtManagementGroupScope gets all deployments operations for a deployment. +// Parameters: +// groupID - the management group ID. +// deploymentName - the name of the deployment. +// top - the number of results to return. +func (client DeploymentOperationsClient) ListAtManagementGroupScope(ctx context.Context, groupID string, deploymentName string, top *int32) (result DeploymentOperationsListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentOperationsClient.ListAtManagementGroupScope") + defer func() { + sc := -1 + if result.dolr.Response.Response != nil { + sc = result.dolr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: groupID, + Constraints: []validation.Constraint{{Target: "groupID", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "groupID", Name: validation.MinLength, Rule: 1, Chain: nil}}}, + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.DeploymentOperationsClient", "ListAtManagementGroupScope", err.Error()) + } + + result.fn = client.listAtManagementGroupScopeNextResults + req, err := client.ListAtManagementGroupScopePreparer(ctx, groupID, deploymentName, top) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "ListAtManagementGroupScope", nil, "Failure preparing request") + return + } + + resp, err := client.ListAtManagementGroupScopeSender(req) + if err != nil { + result.dolr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "ListAtManagementGroupScope", resp, "Failure sending request") + return + } + + result.dolr, err = client.ListAtManagementGroupScopeResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "ListAtManagementGroupScope", resp, "Failure responding to request") + } + + return +} + +// ListAtManagementGroupScopePreparer prepares the ListAtManagementGroupScope request. +func (client DeploymentOperationsClient) ListAtManagementGroupScopePreparer(ctx context.Context, groupID string, deploymentName string, top *int32) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "groupId": autorest.Encode("path", groupID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if top != nil { + queryParameters["$top"] = autorest.Encode("query", *top) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAtManagementGroupScopeSender sends the ListAtManagementGroupScope request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentOperationsClient) ListAtManagementGroupScopeSender(req *http.Request) (*http.Response, error) { + return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) +} + +// ListAtManagementGroupScopeResponder handles the response to the ListAtManagementGroupScope request. The method always +// closes the http.Response Body. +func (client DeploymentOperationsClient) ListAtManagementGroupScopeResponder(resp *http.Response) (result DeploymentOperationsListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listAtManagementGroupScopeNextResults retrieves the next set of results, if any. +func (client DeploymentOperationsClient) listAtManagementGroupScopeNextResults(ctx context.Context, lastResults DeploymentOperationsListResult) (result DeploymentOperationsListResult, err error) { + req, err := lastResults.deploymentOperationsListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "listAtManagementGroupScopeNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListAtManagementGroupScopeSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "listAtManagementGroupScopeNextResults", resp, "Failure sending next results request") + } + result, err = client.ListAtManagementGroupScopeResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "listAtManagementGroupScopeNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListAtManagementGroupScopeComplete enumerates all values, automatically crossing page boundaries as required. +func (client DeploymentOperationsClient) ListAtManagementGroupScopeComplete(ctx context.Context, groupID string, deploymentName string, top *int32) (result DeploymentOperationsListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentOperationsClient.ListAtManagementGroupScope") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListAtManagementGroupScope(ctx, groupID, deploymentName, top) + return +} + +// ListAtSubscriptionScope gets all deployments operations for a deployment. +// Parameters: +// deploymentName - the name of the deployment. +// top - the number of results to return. +func (client DeploymentOperationsClient) ListAtSubscriptionScope(ctx context.Context, deploymentName string, top *int32) (result DeploymentOperationsListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentOperationsClient.ListAtSubscriptionScope") + defer func() { + sc := -1 + if result.dolr.Response.Response != nil { + sc = result.dolr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.DeploymentOperationsClient", "ListAtSubscriptionScope", err.Error()) + } + + result.fn = client.listAtSubscriptionScopeNextResults + req, err := client.ListAtSubscriptionScopePreparer(ctx, deploymentName, top) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "ListAtSubscriptionScope", nil, "Failure preparing request") + return + } + + resp, err := client.ListAtSubscriptionScopeSender(req) + if err != nil { + result.dolr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "ListAtSubscriptionScope", resp, "Failure sending request") + return + } + + result.dolr, err = client.ListAtSubscriptionScopeResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "ListAtSubscriptionScope", resp, "Failure responding to request") + } + + return +} + +// ListAtSubscriptionScopePreparer prepares the ListAtSubscriptionScope request. +func (client DeploymentOperationsClient) ListAtSubscriptionScopePreparer(ctx context.Context, deploymentName string, top *int32) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if top != nil { + queryParameters["$top"] = autorest.Encode("query", *top) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAtSubscriptionScopeSender sends the ListAtSubscriptionScope request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentOperationsClient) ListAtSubscriptionScopeSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAtSubscriptionScopeResponder handles the response to the ListAtSubscriptionScope request. The method always +// closes the http.Response Body. +func (client DeploymentOperationsClient) ListAtSubscriptionScopeResponder(resp *http.Response) (result DeploymentOperationsListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listAtSubscriptionScopeNextResults retrieves the next set of results, if any. +func (client DeploymentOperationsClient) listAtSubscriptionScopeNextResults(ctx context.Context, lastResults DeploymentOperationsListResult) (result DeploymentOperationsListResult, err error) { + req, err := lastResults.deploymentOperationsListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "listAtSubscriptionScopeNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListAtSubscriptionScopeSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "listAtSubscriptionScopeNextResults", resp, "Failure sending next results request") + } + result, err = client.ListAtSubscriptionScopeResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "listAtSubscriptionScopeNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListAtSubscriptionScopeComplete enumerates all values, automatically crossing page boundaries as required. +func (client DeploymentOperationsClient) ListAtSubscriptionScopeComplete(ctx context.Context, deploymentName string, top *int32) (result DeploymentOperationsListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentOperationsClient.ListAtSubscriptionScope") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListAtSubscriptionScope(ctx, deploymentName, top) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/deployments.go b/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/deployments.go new file mode 100644 index 0000000..caf1fc7 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/deployments.go @@ -0,0 +1,2364 @@ +package resources + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// DeploymentsClient is the provides operations for working with resources and resource groups. +type DeploymentsClient struct { + BaseClient +} + +// NewDeploymentsClient creates an instance of the DeploymentsClient client. +func NewDeploymentsClient(subscriptionID string) DeploymentsClient { + return NewDeploymentsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewDeploymentsClientWithBaseURI creates an instance of the DeploymentsClient client using a custom endpoint. Use +// this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewDeploymentsClientWithBaseURI(baseURI string, subscriptionID string) DeploymentsClient { + return DeploymentsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CalculateTemplateHash calculate the hash of the given template. +// Parameters: +// templateParameter - the template provided to calculate hash. +func (client DeploymentsClient) CalculateTemplateHash(ctx context.Context, templateParameter interface{}) (result TemplateHashResult, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.CalculateTemplateHash") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CalculateTemplateHashPreparer(ctx, templateParameter) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CalculateTemplateHash", nil, "Failure preparing request") + return + } + + resp, err := client.CalculateTemplateHashSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CalculateTemplateHash", resp, "Failure sending request") + return + } + + result, err = client.CalculateTemplateHashResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CalculateTemplateHash", resp, "Failure responding to request") + } + + return +} + +// CalculateTemplateHashPreparer prepares the CalculateTemplateHash request. +func (client DeploymentsClient) CalculateTemplateHashPreparer(ctx context.Context, templateParameter interface{}) (*http.Request, error) { + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPath("/providers/Microsoft.Resources/calculateTemplateHash"), + autorest.WithJSON(templateParameter), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CalculateTemplateHashSender sends the CalculateTemplateHash request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentsClient) CalculateTemplateHashSender(req *http.Request) (*http.Response, error) { + return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) +} + +// CalculateTemplateHashResponder handles the response to the CalculateTemplateHash request. The method always +// closes the http.Response Body. +func (client DeploymentsClient) CalculateTemplateHashResponder(resp *http.Response) (result TemplateHashResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Cancel you can cancel a deployment only if the provisioningState is Accepted or Running. After the deployment is +// canceled, the provisioningState is set to Canceled. Canceling a template deployment stops the currently running +// template deployment and leaves the resource group partially deployed. +// Parameters: +// resourceGroupName - the name of the resource group. The name is case insensitive. +// deploymentName - the name of the deployment. +func (client DeploymentsClient) Cancel(ctx context.Context, resourceGroupName string, deploymentName string) (result autorest.Response, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.Cancel") + defer func() { + sc := -1 + if result.Response != nil { + sc = result.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: resourceGroupName, + Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}, + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.DeploymentsClient", "Cancel", err.Error()) + } + + req, err := client.CancelPreparer(ctx, resourceGroupName, deploymentName) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Cancel", nil, "Failure preparing request") + return + } + + resp, err := client.CancelSender(req) + if err != nil { + result.Response = resp + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Cancel", resp, "Failure sending request") + return + } + + result, err = client.CancelResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Cancel", resp, "Failure responding to request") + } + + return +} + +// CancelPreparer prepares the Cancel request. +func (client DeploymentsClient) CancelPreparer(ctx context.Context, resourceGroupName string, deploymentName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CancelSender sends the Cancel request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentsClient) CancelSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// CancelResponder handles the response to the Cancel request. The method always +// closes the http.Response Body. +func (client DeploymentsClient) CancelResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// CancelAtManagementGroupScope you can cancel a deployment only if the provisioningState is Accepted or Running. After +// the deployment is canceled, the provisioningState is set to Canceled. Canceling a template deployment stops the +// currently running template deployment and leaves the resources partially deployed. +// Parameters: +// groupID - the management group ID. +// deploymentName - the name of the deployment. +func (client DeploymentsClient) CancelAtManagementGroupScope(ctx context.Context, groupID string, deploymentName string) (result autorest.Response, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.CancelAtManagementGroupScope") + defer func() { + sc := -1 + if result.Response != nil { + sc = result.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: groupID, + Constraints: []validation.Constraint{{Target: "groupID", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "groupID", Name: validation.MinLength, Rule: 1, Chain: nil}}}, + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.DeploymentsClient", "CancelAtManagementGroupScope", err.Error()) + } + + req, err := client.CancelAtManagementGroupScopePreparer(ctx, groupID, deploymentName) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CancelAtManagementGroupScope", nil, "Failure preparing request") + return + } + + resp, err := client.CancelAtManagementGroupScopeSender(req) + if err != nil { + result.Response = resp + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CancelAtManagementGroupScope", resp, "Failure sending request") + return + } + + result, err = client.CancelAtManagementGroupScopeResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CancelAtManagementGroupScope", resp, "Failure responding to request") + } + + return +} + +// CancelAtManagementGroupScopePreparer prepares the CancelAtManagementGroupScope request. +func (client DeploymentsClient) CancelAtManagementGroupScopePreparer(ctx context.Context, groupID string, deploymentName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "groupId": autorest.Encode("path", groupID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CancelAtManagementGroupScopeSender sends the CancelAtManagementGroupScope request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentsClient) CancelAtManagementGroupScopeSender(req *http.Request) (*http.Response, error) { + return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) +} + +// CancelAtManagementGroupScopeResponder handles the response to the CancelAtManagementGroupScope request. The method always +// closes the http.Response Body. +func (client DeploymentsClient) CancelAtManagementGroupScopeResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// CancelAtSubscriptionScope you can cancel a deployment only if the provisioningState is Accepted or Running. After +// the deployment is canceled, the provisioningState is set to Canceled. Canceling a template deployment stops the +// currently running template deployment and leaves the resources partially deployed. +// Parameters: +// deploymentName - the name of the deployment. +func (client DeploymentsClient) CancelAtSubscriptionScope(ctx context.Context, deploymentName string) (result autorest.Response, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.CancelAtSubscriptionScope") + defer func() { + sc := -1 + if result.Response != nil { + sc = result.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.DeploymentsClient", "CancelAtSubscriptionScope", err.Error()) + } + + req, err := client.CancelAtSubscriptionScopePreparer(ctx, deploymentName) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CancelAtSubscriptionScope", nil, "Failure preparing request") + return + } + + resp, err := client.CancelAtSubscriptionScopeSender(req) + if err != nil { + result.Response = resp + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CancelAtSubscriptionScope", resp, "Failure sending request") + return + } + + result, err = client.CancelAtSubscriptionScopeResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CancelAtSubscriptionScope", resp, "Failure responding to request") + } + + return +} + +// CancelAtSubscriptionScopePreparer prepares the CancelAtSubscriptionScope request. +func (client DeploymentsClient) CancelAtSubscriptionScopePreparer(ctx context.Context, deploymentName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CancelAtSubscriptionScopeSender sends the CancelAtSubscriptionScope request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentsClient) CancelAtSubscriptionScopeSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// CancelAtSubscriptionScopeResponder handles the response to the CancelAtSubscriptionScope request. The method always +// closes the http.Response Body. +func (client DeploymentsClient) CancelAtSubscriptionScopeResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// CheckExistence checks whether the deployment exists. +// Parameters: +// resourceGroupName - the name of the resource group with the deployment to check. The name is case +// insensitive. +// deploymentName - the name of the deployment. +func (client DeploymentsClient) CheckExistence(ctx context.Context, resourceGroupName string, deploymentName string) (result autorest.Response, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.CheckExistence") + defer func() { + sc := -1 + if result.Response != nil { + sc = result.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: resourceGroupName, + Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}, + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.DeploymentsClient", "CheckExistence", err.Error()) + } + + req, err := client.CheckExistencePreparer(ctx, resourceGroupName, deploymentName) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CheckExistence", nil, "Failure preparing request") + return + } + + resp, err := client.CheckExistenceSender(req) + if err != nil { + result.Response = resp + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CheckExistence", resp, "Failure sending request") + return + } + + result, err = client.CheckExistenceResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CheckExistence", resp, "Failure responding to request") + } + + return +} + +// CheckExistencePreparer prepares the CheckExistence request. +func (client DeploymentsClient) CheckExistencePreparer(ctx context.Context, resourceGroupName string, deploymentName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsHead(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CheckExistenceSender sends the CheckExistence request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentsClient) CheckExistenceSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// CheckExistenceResponder handles the response to the CheckExistence request. The method always +// closes the http.Response Body. +func (client DeploymentsClient) CheckExistenceResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent, http.StatusNotFound), + autorest.ByClosing()) + result.Response = resp + return +} + +// CheckExistenceAtManagementGroupScope checks whether the deployment exists. +// Parameters: +// groupID - the management group ID. +// deploymentName - the name of the deployment. +func (client DeploymentsClient) CheckExistenceAtManagementGroupScope(ctx context.Context, groupID string, deploymentName string) (result autorest.Response, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.CheckExistenceAtManagementGroupScope") + defer func() { + sc := -1 + if result.Response != nil { + sc = result.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: groupID, + Constraints: []validation.Constraint{{Target: "groupID", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "groupID", Name: validation.MinLength, Rule: 1, Chain: nil}}}, + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.DeploymentsClient", "CheckExistenceAtManagementGroupScope", err.Error()) + } + + req, err := client.CheckExistenceAtManagementGroupScopePreparer(ctx, groupID, deploymentName) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CheckExistenceAtManagementGroupScope", nil, "Failure preparing request") + return + } + + resp, err := client.CheckExistenceAtManagementGroupScopeSender(req) + if err != nil { + result.Response = resp + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CheckExistenceAtManagementGroupScope", resp, "Failure sending request") + return + } + + result, err = client.CheckExistenceAtManagementGroupScopeResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CheckExistenceAtManagementGroupScope", resp, "Failure responding to request") + } + + return +} + +// CheckExistenceAtManagementGroupScopePreparer prepares the CheckExistenceAtManagementGroupScope request. +func (client DeploymentsClient) CheckExistenceAtManagementGroupScopePreparer(ctx context.Context, groupID string, deploymentName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "groupId": autorest.Encode("path", groupID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsHead(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CheckExistenceAtManagementGroupScopeSender sends the CheckExistenceAtManagementGroupScope request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentsClient) CheckExistenceAtManagementGroupScopeSender(req *http.Request) (*http.Response, error) { + return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) +} + +// CheckExistenceAtManagementGroupScopeResponder handles the response to the CheckExistenceAtManagementGroupScope request. The method always +// closes the http.Response Body. +func (client DeploymentsClient) CheckExistenceAtManagementGroupScopeResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent, http.StatusNotFound), + autorest.ByClosing()) + result.Response = resp + return +} + +// CheckExistenceAtSubscriptionScope checks whether the deployment exists. +// Parameters: +// deploymentName - the name of the deployment. +func (client DeploymentsClient) CheckExistenceAtSubscriptionScope(ctx context.Context, deploymentName string) (result autorest.Response, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.CheckExistenceAtSubscriptionScope") + defer func() { + sc := -1 + if result.Response != nil { + sc = result.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.DeploymentsClient", "CheckExistenceAtSubscriptionScope", err.Error()) + } + + req, err := client.CheckExistenceAtSubscriptionScopePreparer(ctx, deploymentName) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CheckExistenceAtSubscriptionScope", nil, "Failure preparing request") + return + } + + resp, err := client.CheckExistenceAtSubscriptionScopeSender(req) + if err != nil { + result.Response = resp + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CheckExistenceAtSubscriptionScope", resp, "Failure sending request") + return + } + + result, err = client.CheckExistenceAtSubscriptionScopeResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CheckExistenceAtSubscriptionScope", resp, "Failure responding to request") + } + + return +} + +// CheckExistenceAtSubscriptionScopePreparer prepares the CheckExistenceAtSubscriptionScope request. +func (client DeploymentsClient) CheckExistenceAtSubscriptionScopePreparer(ctx context.Context, deploymentName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsHead(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CheckExistenceAtSubscriptionScopeSender sends the CheckExistenceAtSubscriptionScope request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentsClient) CheckExistenceAtSubscriptionScopeSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// CheckExistenceAtSubscriptionScopeResponder handles the response to the CheckExistenceAtSubscriptionScope request. The method always +// closes the http.Response Body. +func (client DeploymentsClient) CheckExistenceAtSubscriptionScopeResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent, http.StatusNotFound), + autorest.ByClosing()) + result.Response = resp + return +} + +// CreateOrUpdate you can provide the template and parameters directly in the request or link to JSON files. +// Parameters: +// resourceGroupName - the name of the resource group to deploy the resources to. The name is case insensitive. +// The resource group must already exist. +// deploymentName - the name of the deployment. +// parameters - additional parameters supplied to the operation. +func (client DeploymentsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, deploymentName string, parameters Deployment) (result DeploymentsCreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: resourceGroupName, + Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}, + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}, + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.Properties", Name: validation.Null, Rule: true, + Chain: []validation.Constraint{{Target: "parameters.Properties.TemplateLink", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.Properties.TemplateLink.URI", Name: validation.Null, Rule: true, Chain: nil}}}, + {Target: "parameters.Properties.ParametersLink", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.Properties.ParametersLink.URI", Name: validation.Null, Rule: true, Chain: nil}}}, + }}}}}); err != nil { + return result, validation.NewError("resources.DeploymentsClient", "CreateOrUpdate", err.Error()) + } + + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, deploymentName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client DeploymentsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, deploymentName string, parameters Deployment) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentsClient) CreateOrUpdateSender(req *http.Request) (future DeploymentsCreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client DeploymentsClient) CreateOrUpdateResponder(resp *http.Response) (result DeploymentExtended, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// CreateOrUpdateAtManagementGroupScope you can provide the template and parameters directly in the request or link to +// JSON files. +// Parameters: +// groupID - the management group ID. +// deploymentName - the name of the deployment. +// parameters - additional parameters supplied to the operation. +func (client DeploymentsClient) CreateOrUpdateAtManagementGroupScope(ctx context.Context, groupID string, deploymentName string, parameters Deployment) (result DeploymentsCreateOrUpdateAtManagementGroupScopeFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.CreateOrUpdateAtManagementGroupScope") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: groupID, + Constraints: []validation.Constraint{{Target: "groupID", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "groupID", Name: validation.MinLength, Rule: 1, Chain: nil}}}, + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}, + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.Properties", Name: validation.Null, Rule: true, + Chain: []validation.Constraint{{Target: "parameters.Properties.TemplateLink", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.Properties.TemplateLink.URI", Name: validation.Null, Rule: true, Chain: nil}}}, + {Target: "parameters.Properties.ParametersLink", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.Properties.ParametersLink.URI", Name: validation.Null, Rule: true, Chain: nil}}}, + }}}}}); err != nil { + return result, validation.NewError("resources.DeploymentsClient", "CreateOrUpdateAtManagementGroupScope", err.Error()) + } + + req, err := client.CreateOrUpdateAtManagementGroupScopePreparer(ctx, groupID, deploymentName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CreateOrUpdateAtManagementGroupScope", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateAtManagementGroupScopeSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CreateOrUpdateAtManagementGroupScope", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdateAtManagementGroupScopePreparer prepares the CreateOrUpdateAtManagementGroupScope request. +func (client DeploymentsClient) CreateOrUpdateAtManagementGroupScopePreparer(ctx context.Context, groupID string, deploymentName string, parameters Deployment) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "groupId": autorest.Encode("path", groupID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateAtManagementGroupScopeSender sends the CreateOrUpdateAtManagementGroupScope request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentsClient) CreateOrUpdateAtManagementGroupScopeSender(req *http.Request) (future DeploymentsCreateOrUpdateAtManagementGroupScopeFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateAtManagementGroupScopeResponder handles the response to the CreateOrUpdateAtManagementGroupScope request. The method always +// closes the http.Response Body. +func (client DeploymentsClient) CreateOrUpdateAtManagementGroupScopeResponder(resp *http.Response) (result DeploymentExtended, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// CreateOrUpdateAtSubscriptionScope you can provide the template and parameters directly in the request or link to +// JSON files. +// Parameters: +// deploymentName - the name of the deployment. +// parameters - additional parameters supplied to the operation. +func (client DeploymentsClient) CreateOrUpdateAtSubscriptionScope(ctx context.Context, deploymentName string, parameters Deployment) (result DeploymentsCreateOrUpdateAtSubscriptionScopeFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.CreateOrUpdateAtSubscriptionScope") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}, + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.Properties", Name: validation.Null, Rule: true, + Chain: []validation.Constraint{{Target: "parameters.Properties.TemplateLink", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.Properties.TemplateLink.URI", Name: validation.Null, Rule: true, Chain: nil}}}, + {Target: "parameters.Properties.ParametersLink", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.Properties.ParametersLink.URI", Name: validation.Null, Rule: true, Chain: nil}}}, + }}}}}); err != nil { + return result, validation.NewError("resources.DeploymentsClient", "CreateOrUpdateAtSubscriptionScope", err.Error()) + } + + req, err := client.CreateOrUpdateAtSubscriptionScopePreparer(ctx, deploymentName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CreateOrUpdateAtSubscriptionScope", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateAtSubscriptionScopeSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CreateOrUpdateAtSubscriptionScope", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdateAtSubscriptionScopePreparer prepares the CreateOrUpdateAtSubscriptionScope request. +func (client DeploymentsClient) CreateOrUpdateAtSubscriptionScopePreparer(ctx context.Context, deploymentName string, parameters Deployment) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateAtSubscriptionScopeSender sends the CreateOrUpdateAtSubscriptionScope request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentsClient) CreateOrUpdateAtSubscriptionScopeSender(req *http.Request) (future DeploymentsCreateOrUpdateAtSubscriptionScopeFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateAtSubscriptionScopeResponder handles the response to the CreateOrUpdateAtSubscriptionScope request. The method always +// closes the http.Response Body. +func (client DeploymentsClient) CreateOrUpdateAtSubscriptionScopeResponder(resp *http.Response) (result DeploymentExtended, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete a template deployment that is currently running cannot be deleted. Deleting a template deployment removes the +// associated deployment operations. Deleting a template deployment does not affect the state of the resource group. +// This is an asynchronous operation that returns a status of 202 until the template deployment is successfully +// deleted. The Location response header contains the URI that is used to obtain the status of the process. While the +// process is running, a call to the URI in the Location header returns a status of 202. When the process finishes, the +// URI in the Location header returns a status of 204 on success. If the asynchronous request failed, the URI in the +// Location header returns an error-level status code. +// Parameters: +// resourceGroupName - the name of the resource group with the deployment to delete. The name is case +// insensitive. +// deploymentName - the name of the deployment. +func (client DeploymentsClient) Delete(ctx context.Context, resourceGroupName string, deploymentName string) (result DeploymentsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: resourceGroupName, + Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}, + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.DeploymentsClient", "Delete", err.Error()) + } + + req, err := client.DeletePreparer(ctx, resourceGroupName, deploymentName) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client DeploymentsClient) DeletePreparer(ctx context.Context, resourceGroupName string, deploymentName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentsClient) DeleteSender(req *http.Request) (future DeploymentsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client DeploymentsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// DeleteAtManagementGroupScope a template deployment that is currently running cannot be deleted. Deleting a template +// deployment removes the associated deployment operations. This is an asynchronous operation that returns a status of +// 202 until the template deployment is successfully deleted. The Location response header contains the URI that is +// used to obtain the status of the process. While the process is running, a call to the URI in the Location header +// returns a status of 202. When the process finishes, the URI in the Location header returns a status of 204 on +// success. If the asynchronous request failed, the URI in the Location header returns an error-level status code. +// Parameters: +// groupID - the management group ID. +// deploymentName - the name of the deployment. +func (client DeploymentsClient) DeleteAtManagementGroupScope(ctx context.Context, groupID string, deploymentName string) (result DeploymentsDeleteAtManagementGroupScopeFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.DeleteAtManagementGroupScope") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: groupID, + Constraints: []validation.Constraint{{Target: "groupID", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "groupID", Name: validation.MinLength, Rule: 1, Chain: nil}}}, + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.DeploymentsClient", "DeleteAtManagementGroupScope", err.Error()) + } + + req, err := client.DeleteAtManagementGroupScopePreparer(ctx, groupID, deploymentName) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "DeleteAtManagementGroupScope", nil, "Failure preparing request") + return + } + + result, err = client.DeleteAtManagementGroupScopeSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "DeleteAtManagementGroupScope", result.Response(), "Failure sending request") + return + } + + return +} + +// DeleteAtManagementGroupScopePreparer prepares the DeleteAtManagementGroupScope request. +func (client DeploymentsClient) DeleteAtManagementGroupScopePreparer(ctx context.Context, groupID string, deploymentName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "groupId": autorest.Encode("path", groupID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteAtManagementGroupScopeSender sends the DeleteAtManagementGroupScope request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentsClient) DeleteAtManagementGroupScopeSender(req *http.Request) (future DeploymentsDeleteAtManagementGroupScopeFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteAtManagementGroupScopeResponder handles the response to the DeleteAtManagementGroupScope request. The method always +// closes the http.Response Body. +func (client DeploymentsClient) DeleteAtManagementGroupScopeResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// DeleteAtSubscriptionScope a template deployment that is currently running cannot be deleted. Deleting a template +// deployment removes the associated deployment operations. This is an asynchronous operation that returns a status of +// 202 until the template deployment is successfully deleted. The Location response header contains the URI that is +// used to obtain the status of the process. While the process is running, a call to the URI in the Location header +// returns a status of 202. When the process finishes, the URI in the Location header returns a status of 204 on +// success. If the asynchronous request failed, the URI in the Location header returns an error-level status code. +// Parameters: +// deploymentName - the name of the deployment. +func (client DeploymentsClient) DeleteAtSubscriptionScope(ctx context.Context, deploymentName string) (result DeploymentsDeleteAtSubscriptionScopeFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.DeleteAtSubscriptionScope") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.DeploymentsClient", "DeleteAtSubscriptionScope", err.Error()) + } + + req, err := client.DeleteAtSubscriptionScopePreparer(ctx, deploymentName) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "DeleteAtSubscriptionScope", nil, "Failure preparing request") + return + } + + result, err = client.DeleteAtSubscriptionScopeSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "DeleteAtSubscriptionScope", result.Response(), "Failure sending request") + return + } + + return +} + +// DeleteAtSubscriptionScopePreparer prepares the DeleteAtSubscriptionScope request. +func (client DeploymentsClient) DeleteAtSubscriptionScopePreparer(ctx context.Context, deploymentName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteAtSubscriptionScopeSender sends the DeleteAtSubscriptionScope request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentsClient) DeleteAtSubscriptionScopeSender(req *http.Request) (future DeploymentsDeleteAtSubscriptionScopeFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteAtSubscriptionScopeResponder handles the response to the DeleteAtSubscriptionScope request. The method always +// closes the http.Response Body. +func (client DeploymentsClient) DeleteAtSubscriptionScopeResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// ExportTemplate exports the template used for specified deployment. +// Parameters: +// resourceGroupName - the name of the resource group. The name is case insensitive. +// deploymentName - the name of the deployment. +func (client DeploymentsClient) ExportTemplate(ctx context.Context, resourceGroupName string, deploymentName string) (result DeploymentExportResult, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.ExportTemplate") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: resourceGroupName, + Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}, + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.DeploymentsClient", "ExportTemplate", err.Error()) + } + + req, err := client.ExportTemplatePreparer(ctx, resourceGroupName, deploymentName) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ExportTemplate", nil, "Failure preparing request") + return + } + + resp, err := client.ExportTemplateSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ExportTemplate", resp, "Failure sending request") + return + } + + result, err = client.ExportTemplateResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ExportTemplate", resp, "Failure responding to request") + } + + return +} + +// ExportTemplatePreparer prepares the ExportTemplate request. +func (client DeploymentsClient) ExportTemplatePreparer(ctx context.Context, resourceGroupName string, deploymentName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ExportTemplateSender sends the ExportTemplate request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentsClient) ExportTemplateSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ExportTemplateResponder handles the response to the ExportTemplate request. The method always +// closes the http.Response Body. +func (client DeploymentsClient) ExportTemplateResponder(resp *http.Response) (result DeploymentExportResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// ExportTemplateAtManagementGroupScope exports the template used for specified deployment. +// Parameters: +// groupID - the management group ID. +// deploymentName - the name of the deployment. +func (client DeploymentsClient) ExportTemplateAtManagementGroupScope(ctx context.Context, groupID string, deploymentName string) (result DeploymentExportResult, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.ExportTemplateAtManagementGroupScope") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: groupID, + Constraints: []validation.Constraint{{Target: "groupID", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "groupID", Name: validation.MinLength, Rule: 1, Chain: nil}}}, + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.DeploymentsClient", "ExportTemplateAtManagementGroupScope", err.Error()) + } + + req, err := client.ExportTemplateAtManagementGroupScopePreparer(ctx, groupID, deploymentName) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ExportTemplateAtManagementGroupScope", nil, "Failure preparing request") + return + } + + resp, err := client.ExportTemplateAtManagementGroupScopeSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ExportTemplateAtManagementGroupScope", resp, "Failure sending request") + return + } + + result, err = client.ExportTemplateAtManagementGroupScopeResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ExportTemplateAtManagementGroupScope", resp, "Failure responding to request") + } + + return +} + +// ExportTemplateAtManagementGroupScopePreparer prepares the ExportTemplateAtManagementGroupScope request. +func (client DeploymentsClient) ExportTemplateAtManagementGroupScopePreparer(ctx context.Context, groupID string, deploymentName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "groupId": autorest.Encode("path", groupID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ExportTemplateAtManagementGroupScopeSender sends the ExportTemplateAtManagementGroupScope request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentsClient) ExportTemplateAtManagementGroupScopeSender(req *http.Request) (*http.Response, error) { + return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) +} + +// ExportTemplateAtManagementGroupScopeResponder handles the response to the ExportTemplateAtManagementGroupScope request. The method always +// closes the http.Response Body. +func (client DeploymentsClient) ExportTemplateAtManagementGroupScopeResponder(resp *http.Response) (result DeploymentExportResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// ExportTemplateAtSubscriptionScope exports the template used for specified deployment. +// Parameters: +// deploymentName - the name of the deployment. +func (client DeploymentsClient) ExportTemplateAtSubscriptionScope(ctx context.Context, deploymentName string) (result DeploymentExportResult, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.ExportTemplateAtSubscriptionScope") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.DeploymentsClient", "ExportTemplateAtSubscriptionScope", err.Error()) + } + + req, err := client.ExportTemplateAtSubscriptionScopePreparer(ctx, deploymentName) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ExportTemplateAtSubscriptionScope", nil, "Failure preparing request") + return + } + + resp, err := client.ExportTemplateAtSubscriptionScopeSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ExportTemplateAtSubscriptionScope", resp, "Failure sending request") + return + } + + result, err = client.ExportTemplateAtSubscriptionScopeResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ExportTemplateAtSubscriptionScope", resp, "Failure responding to request") + } + + return +} + +// ExportTemplateAtSubscriptionScopePreparer prepares the ExportTemplateAtSubscriptionScope request. +func (client DeploymentsClient) ExportTemplateAtSubscriptionScopePreparer(ctx context.Context, deploymentName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ExportTemplateAtSubscriptionScopeSender sends the ExportTemplateAtSubscriptionScope request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentsClient) ExportTemplateAtSubscriptionScopeSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ExportTemplateAtSubscriptionScopeResponder handles the response to the ExportTemplateAtSubscriptionScope request. The method always +// closes the http.Response Body. +func (client DeploymentsClient) ExportTemplateAtSubscriptionScopeResponder(resp *http.Response) (result DeploymentExportResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Get gets a deployment. +// Parameters: +// resourceGroupName - the name of the resource group. The name is case insensitive. +// deploymentName - the name of the deployment. +func (client DeploymentsClient) Get(ctx context.Context, resourceGroupName string, deploymentName string) (result DeploymentExtended, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: resourceGroupName, + Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}, + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.DeploymentsClient", "Get", err.Error()) + } + + req, err := client.GetPreparer(ctx, resourceGroupName, deploymentName) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client DeploymentsClient) GetPreparer(ctx context.Context, resourceGroupName string, deploymentName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client DeploymentsClient) GetResponder(resp *http.Response) (result DeploymentExtended, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetAtManagementGroupScope gets a deployment. +// Parameters: +// groupID - the management group ID. +// deploymentName - the name of the deployment. +func (client DeploymentsClient) GetAtManagementGroupScope(ctx context.Context, groupID string, deploymentName string) (result DeploymentExtended, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.GetAtManagementGroupScope") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: groupID, + Constraints: []validation.Constraint{{Target: "groupID", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "groupID", Name: validation.MinLength, Rule: 1, Chain: nil}}}, + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.DeploymentsClient", "GetAtManagementGroupScope", err.Error()) + } + + req, err := client.GetAtManagementGroupScopePreparer(ctx, groupID, deploymentName) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "GetAtManagementGroupScope", nil, "Failure preparing request") + return + } + + resp, err := client.GetAtManagementGroupScopeSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "GetAtManagementGroupScope", resp, "Failure sending request") + return + } + + result, err = client.GetAtManagementGroupScopeResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "GetAtManagementGroupScope", resp, "Failure responding to request") + } + + return +} + +// GetAtManagementGroupScopePreparer prepares the GetAtManagementGroupScope request. +func (client DeploymentsClient) GetAtManagementGroupScopePreparer(ctx context.Context, groupID string, deploymentName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "groupId": autorest.Encode("path", groupID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetAtManagementGroupScopeSender sends the GetAtManagementGroupScope request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentsClient) GetAtManagementGroupScopeSender(req *http.Request) (*http.Response, error) { + return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) +} + +// GetAtManagementGroupScopeResponder handles the response to the GetAtManagementGroupScope request. The method always +// closes the http.Response Body. +func (client DeploymentsClient) GetAtManagementGroupScopeResponder(resp *http.Response) (result DeploymentExtended, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetAtSubscriptionScope gets a deployment. +// Parameters: +// deploymentName - the name of the deployment. +func (client DeploymentsClient) GetAtSubscriptionScope(ctx context.Context, deploymentName string) (result DeploymentExtended, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.GetAtSubscriptionScope") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.DeploymentsClient", "GetAtSubscriptionScope", err.Error()) + } + + req, err := client.GetAtSubscriptionScopePreparer(ctx, deploymentName) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "GetAtSubscriptionScope", nil, "Failure preparing request") + return + } + + resp, err := client.GetAtSubscriptionScopeSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "GetAtSubscriptionScope", resp, "Failure sending request") + return + } + + result, err = client.GetAtSubscriptionScopeResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "GetAtSubscriptionScope", resp, "Failure responding to request") + } + + return +} + +// GetAtSubscriptionScopePreparer prepares the GetAtSubscriptionScope request. +func (client DeploymentsClient) GetAtSubscriptionScopePreparer(ctx context.Context, deploymentName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetAtSubscriptionScopeSender sends the GetAtSubscriptionScope request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentsClient) GetAtSubscriptionScopeSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetAtSubscriptionScopeResponder handles the response to the GetAtSubscriptionScope request. The method always +// closes the http.Response Body. +func (client DeploymentsClient) GetAtSubscriptionScopeResponder(resp *http.Response) (result DeploymentExtended, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// ListAtManagementGroupScope get all the deployments for a management group. +// Parameters: +// groupID - the management group ID. +// filter - the filter to apply on the operation. For example, you can use $filter=provisioningState eq +// '{state}'. +// top - the number of results to get. If null is passed, returns all deployments. +func (client DeploymentsClient) ListAtManagementGroupScope(ctx context.Context, groupID string, filter string, top *int32) (result DeploymentListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.ListAtManagementGroupScope") + defer func() { + sc := -1 + if result.dlr.Response.Response != nil { + sc = result.dlr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: groupID, + Constraints: []validation.Constraint{{Target: "groupID", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "groupID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.DeploymentsClient", "ListAtManagementGroupScope", err.Error()) + } + + result.fn = client.listAtManagementGroupScopeNextResults + req, err := client.ListAtManagementGroupScopePreparer(ctx, groupID, filter, top) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ListAtManagementGroupScope", nil, "Failure preparing request") + return + } + + resp, err := client.ListAtManagementGroupScopeSender(req) + if err != nil { + result.dlr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ListAtManagementGroupScope", resp, "Failure sending request") + return + } + + result.dlr, err = client.ListAtManagementGroupScopeResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ListAtManagementGroupScope", resp, "Failure responding to request") + } + + return +} + +// ListAtManagementGroupScopePreparer prepares the ListAtManagementGroupScope request. +func (client DeploymentsClient) ListAtManagementGroupScopePreparer(ctx context.Context, groupID string, filter string, top *int32) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "groupId": autorest.Encode("path", groupID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(filter) > 0 { + queryParameters["$filter"] = autorest.Encode("query", filter) + } + if top != nil { + queryParameters["$top"] = autorest.Encode("query", *top) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAtManagementGroupScopeSender sends the ListAtManagementGroupScope request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentsClient) ListAtManagementGroupScopeSender(req *http.Request) (*http.Response, error) { + return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) +} + +// ListAtManagementGroupScopeResponder handles the response to the ListAtManagementGroupScope request. The method always +// closes the http.Response Body. +func (client DeploymentsClient) ListAtManagementGroupScopeResponder(resp *http.Response) (result DeploymentListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listAtManagementGroupScopeNextResults retrieves the next set of results, if any. +func (client DeploymentsClient) listAtManagementGroupScopeNextResults(ctx context.Context, lastResults DeploymentListResult) (result DeploymentListResult, err error) { + req, err := lastResults.deploymentListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "resources.DeploymentsClient", "listAtManagementGroupScopeNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListAtManagementGroupScopeSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "resources.DeploymentsClient", "listAtManagementGroupScopeNextResults", resp, "Failure sending next results request") + } + result, err = client.ListAtManagementGroupScopeResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "listAtManagementGroupScopeNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListAtManagementGroupScopeComplete enumerates all values, automatically crossing page boundaries as required. +func (client DeploymentsClient) ListAtManagementGroupScopeComplete(ctx context.Context, groupID string, filter string, top *int32) (result DeploymentListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.ListAtManagementGroupScope") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListAtManagementGroupScope(ctx, groupID, filter, top) + return +} + +// ListAtSubscriptionScope get all the deployments for a subscription. +// Parameters: +// filter - the filter to apply on the operation. For example, you can use $filter=provisioningState eq +// '{state}'. +// top - the number of results to get. If null is passed, returns all deployments. +func (client DeploymentsClient) ListAtSubscriptionScope(ctx context.Context, filter string, top *int32) (result DeploymentListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.ListAtSubscriptionScope") + defer func() { + sc := -1 + if result.dlr.Response.Response != nil { + sc = result.dlr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listAtSubscriptionScopeNextResults + req, err := client.ListAtSubscriptionScopePreparer(ctx, filter, top) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ListAtSubscriptionScope", nil, "Failure preparing request") + return + } + + resp, err := client.ListAtSubscriptionScopeSender(req) + if err != nil { + result.dlr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ListAtSubscriptionScope", resp, "Failure sending request") + return + } + + result.dlr, err = client.ListAtSubscriptionScopeResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ListAtSubscriptionScope", resp, "Failure responding to request") + } + + return +} + +// ListAtSubscriptionScopePreparer prepares the ListAtSubscriptionScope request. +func (client DeploymentsClient) ListAtSubscriptionScopePreparer(ctx context.Context, filter string, top *int32) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(filter) > 0 { + queryParameters["$filter"] = autorest.Encode("query", filter) + } + if top != nil { + queryParameters["$top"] = autorest.Encode("query", *top) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListAtSubscriptionScopeSender sends the ListAtSubscriptionScope request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentsClient) ListAtSubscriptionScopeSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListAtSubscriptionScopeResponder handles the response to the ListAtSubscriptionScope request. The method always +// closes the http.Response Body. +func (client DeploymentsClient) ListAtSubscriptionScopeResponder(resp *http.Response) (result DeploymentListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listAtSubscriptionScopeNextResults retrieves the next set of results, if any. +func (client DeploymentsClient) listAtSubscriptionScopeNextResults(ctx context.Context, lastResults DeploymentListResult) (result DeploymentListResult, err error) { + req, err := lastResults.deploymentListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "resources.DeploymentsClient", "listAtSubscriptionScopeNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListAtSubscriptionScopeSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "resources.DeploymentsClient", "listAtSubscriptionScopeNextResults", resp, "Failure sending next results request") + } + result, err = client.ListAtSubscriptionScopeResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "listAtSubscriptionScopeNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListAtSubscriptionScopeComplete enumerates all values, automatically crossing page boundaries as required. +func (client DeploymentsClient) ListAtSubscriptionScopeComplete(ctx context.Context, filter string, top *int32) (result DeploymentListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.ListAtSubscriptionScope") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListAtSubscriptionScope(ctx, filter, top) + return +} + +// ListByResourceGroup get all the deployments for a resource group. +// Parameters: +// resourceGroupName - the name of the resource group with the deployments to get. The name is case +// insensitive. +// filter - the filter to apply on the operation. For example, you can use $filter=provisioningState eq +// '{state}'. +// top - the number of results to get. If null is passed, returns all deployments. +func (client DeploymentsClient) ListByResourceGroup(ctx context.Context, resourceGroupName string, filter string, top *int32) (result DeploymentListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.dlr.Response.Response != nil { + sc = result.dlr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: resourceGroupName, + Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.DeploymentsClient", "ListByResourceGroup", err.Error()) + } + + result.fn = client.listByResourceGroupNextResults + req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName, filter, top) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ListByResourceGroup", nil, "Failure preparing request") + return + } + + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.dlr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ListByResourceGroup", resp, "Failure sending request") + return + } + + result.dlr, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ListByResourceGroup", resp, "Failure responding to request") + } + + return +} + +// ListByResourceGroupPreparer prepares the ListByResourceGroup request. +func (client DeploymentsClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string, filter string, top *int32) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(filter) > 0 { + queryParameters["$filter"] = autorest.Encode("query", filter) + } + if top != nil { + queryParameters["$top"] = autorest.Encode("query", *top) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentsClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always +// closes the http.Response Body. +func (client DeploymentsClient) ListByResourceGroupResponder(resp *http.Response) (result DeploymentListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listByResourceGroupNextResults retrieves the next set of results, if any. +func (client DeploymentsClient) listByResourceGroupNextResults(ctx context.Context, lastResults DeploymentListResult) (result DeploymentListResult, err error) { + req, err := lastResults.deploymentListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "resources.DeploymentsClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "resources.DeploymentsClient", "listByResourceGroupNextResults", resp, "Failure sending next results request") + } + result, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. +func (client DeploymentsClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string, filter string, top *int32) (result DeploymentListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.ListByResourceGroup") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListByResourceGroup(ctx, resourceGroupName, filter, top) + return +} + +// Validate validates whether the specified template is syntactically correct and will be accepted by Azure Resource +// Manager.. +// Parameters: +// resourceGroupName - the name of the resource group the template will be deployed to. The name is case +// insensitive. +// deploymentName - the name of the deployment. +// parameters - parameters to validate. +func (client DeploymentsClient) Validate(ctx context.Context, resourceGroupName string, deploymentName string, parameters Deployment) (result DeploymentValidateResult, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.Validate") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: resourceGroupName, + Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}, + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}, + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.Properties", Name: validation.Null, Rule: true, + Chain: []validation.Constraint{{Target: "parameters.Properties.TemplateLink", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.Properties.TemplateLink.URI", Name: validation.Null, Rule: true, Chain: nil}}}, + {Target: "parameters.Properties.ParametersLink", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.Properties.ParametersLink.URI", Name: validation.Null, Rule: true, Chain: nil}}}, + }}}}}); err != nil { + return result, validation.NewError("resources.DeploymentsClient", "Validate", err.Error()) + } + + req, err := client.ValidatePreparer(ctx, resourceGroupName, deploymentName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Validate", nil, "Failure preparing request") + return + } + + resp, err := client.ValidateSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Validate", resp, "Failure sending request") + return + } + + result, err = client.ValidateResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Validate", resp, "Failure responding to request") + } + + return +} + +// ValidatePreparer prepares the Validate request. +func (client DeploymentsClient) ValidatePreparer(ctx context.Context, resourceGroupName string, deploymentName string, parameters Deployment) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/validate", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ValidateSender sends the Validate request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentsClient) ValidateSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ValidateResponder handles the response to the Validate request. The method always +// closes the http.Response Body. +func (client DeploymentsClient) ValidateResponder(resp *http.Response) (result DeploymentValidateResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusBadRequest), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// ValidateAtManagementGroupScope validates whether the specified template is syntactically correct and will be +// accepted by Azure Resource Manager.. +// Parameters: +// groupID - the management group ID. +// deploymentName - the name of the deployment. +// parameters - parameters to validate. +func (client DeploymentsClient) ValidateAtManagementGroupScope(ctx context.Context, groupID string, deploymentName string, parameters Deployment) (result DeploymentValidateResult, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.ValidateAtManagementGroupScope") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: groupID, + Constraints: []validation.Constraint{{Target: "groupID", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "groupID", Name: validation.MinLength, Rule: 1, Chain: nil}}}, + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}, + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.Properties", Name: validation.Null, Rule: true, + Chain: []validation.Constraint{{Target: "parameters.Properties.TemplateLink", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.Properties.TemplateLink.URI", Name: validation.Null, Rule: true, Chain: nil}}}, + {Target: "parameters.Properties.ParametersLink", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.Properties.ParametersLink.URI", Name: validation.Null, Rule: true, Chain: nil}}}, + }}}}}); err != nil { + return result, validation.NewError("resources.DeploymentsClient", "ValidateAtManagementGroupScope", err.Error()) + } + + req, err := client.ValidateAtManagementGroupScopePreparer(ctx, groupID, deploymentName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ValidateAtManagementGroupScope", nil, "Failure preparing request") + return + } + + resp, err := client.ValidateAtManagementGroupScopeSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ValidateAtManagementGroupScope", resp, "Failure sending request") + return + } + + result, err = client.ValidateAtManagementGroupScopeResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ValidateAtManagementGroupScope", resp, "Failure responding to request") + } + + return +} + +// ValidateAtManagementGroupScopePreparer prepares the ValidateAtManagementGroupScope request. +func (client DeploymentsClient) ValidateAtManagementGroupScopePreparer(ctx context.Context, groupID string, deploymentName string, parameters Deployment) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "groupId": autorest.Encode("path", groupID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/validate", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ValidateAtManagementGroupScopeSender sends the ValidateAtManagementGroupScope request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentsClient) ValidateAtManagementGroupScopeSender(req *http.Request) (*http.Response, error) { + return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) +} + +// ValidateAtManagementGroupScopeResponder handles the response to the ValidateAtManagementGroupScope request. The method always +// closes the http.Response Body. +func (client DeploymentsClient) ValidateAtManagementGroupScopeResponder(resp *http.Response) (result DeploymentValidateResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusBadRequest), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// ValidateAtSubscriptionScope validates whether the specified template is syntactically correct and will be accepted +// by Azure Resource Manager.. +// Parameters: +// deploymentName - the name of the deployment. +// parameters - parameters to validate. +func (client DeploymentsClient) ValidateAtSubscriptionScope(ctx context.Context, deploymentName string, parameters Deployment) (result DeploymentValidateResult, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.ValidateAtSubscriptionScope") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: deploymentName, + Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil}, + {Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}, + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.Properties", Name: validation.Null, Rule: true, + Chain: []validation.Constraint{{Target: "parameters.Properties.TemplateLink", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.Properties.TemplateLink.URI", Name: validation.Null, Rule: true, Chain: nil}}}, + {Target: "parameters.Properties.ParametersLink", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.Properties.ParametersLink.URI", Name: validation.Null, Rule: true, Chain: nil}}}, + }}}}}); err != nil { + return result, validation.NewError("resources.DeploymentsClient", "ValidateAtSubscriptionScope", err.Error()) + } + + req, err := client.ValidateAtSubscriptionScopePreparer(ctx, deploymentName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ValidateAtSubscriptionScope", nil, "Failure preparing request") + return + } + + resp, err := client.ValidateAtSubscriptionScopeSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ValidateAtSubscriptionScope", resp, "Failure sending request") + return + } + + result, err = client.ValidateAtSubscriptionScopeResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ValidateAtSubscriptionScope", resp, "Failure responding to request") + } + + return +} + +// ValidateAtSubscriptionScopePreparer prepares the ValidateAtSubscriptionScope request. +func (client DeploymentsClient) ValidateAtSubscriptionScopePreparer(ctx context.Context, deploymentName string, parameters Deployment) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "deploymentName": autorest.Encode("path", deploymentName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/validate", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ValidateAtSubscriptionScopeSender sends the ValidateAtSubscriptionScope request. The method will close the +// http.Response Body if it receives an error. +func (client DeploymentsClient) ValidateAtSubscriptionScopeSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ValidateAtSubscriptionScopeResponder handles the response to the ValidateAtSubscriptionScope request. The method always +// closes the http.Response Body. +func (client DeploymentsClient) ValidateAtSubscriptionScopeResponder(resp *http.Response) (result DeploymentValidateResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusBadRequest), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/groups.go b/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/groups.go new file mode 100644 index 0000000..f2f44fd --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/groups.go @@ -0,0 +1,670 @@ +package resources + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// GroupsClient is the provides operations for working with resources and resource groups. +type GroupsClient struct { + BaseClient +} + +// NewGroupsClient creates an instance of the GroupsClient client. +func NewGroupsClient(subscriptionID string) GroupsClient { + return NewGroupsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewGroupsClientWithBaseURI creates an instance of the GroupsClient client using a custom endpoint. Use this when +// interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewGroupsClientWithBaseURI(baseURI string, subscriptionID string) GroupsClient { + return GroupsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CheckExistence checks whether a resource group exists. +// Parameters: +// resourceGroupName - the name of the resource group to check. The name is case insensitive. +func (client GroupsClient) CheckExistence(ctx context.Context, resourceGroupName string) (result autorest.Response, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/GroupsClient.CheckExistence") + defer func() { + sc := -1 + if result.Response != nil { + sc = result.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: resourceGroupName, + Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.GroupsClient", "CheckExistence", err.Error()) + } + + req, err := client.CheckExistencePreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.GroupsClient", "CheckExistence", nil, "Failure preparing request") + return + } + + resp, err := client.CheckExistenceSender(req) + if err != nil { + result.Response = resp + err = autorest.NewErrorWithError(err, "resources.GroupsClient", "CheckExistence", resp, "Failure sending request") + return + } + + result, err = client.CheckExistenceResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.GroupsClient", "CheckExistence", resp, "Failure responding to request") + } + + return +} + +// CheckExistencePreparer prepares the CheckExistence request. +func (client GroupsClient) CheckExistencePreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsHead(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CheckExistenceSender sends the CheckExistence request. The method will close the +// http.Response Body if it receives an error. +func (client GroupsClient) CheckExistenceSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// CheckExistenceResponder handles the response to the CheckExistence request. The method always +// closes the http.Response Body. +func (client GroupsClient) CheckExistenceResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent, http.StatusNotFound), + autorest.ByClosing()) + result.Response = resp + return +} + +// CreateOrUpdate creates or updates a resource group. +// Parameters: +// resourceGroupName - the name of the resource group to create or update. Can include alphanumeric, +// underscore, parentheses, hyphen, period (except at end), and Unicode characters that match the allowed +// characters. +// parameters - parameters supplied to the create or update a resource group. +func (client GroupsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, parameters Group) (result Group, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/GroupsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: resourceGroupName, + Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}, + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.Location", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.GroupsClient", "CreateOrUpdate", err.Error()) + } + + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.GroupsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + resp, err := client.CreateOrUpdateSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.GroupsClient", "CreateOrUpdate", resp, "Failure sending request") + return + } + + result, err = client.CreateOrUpdateResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.GroupsClient", "CreateOrUpdate", resp, "Failure responding to request") + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client GroupsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, parameters Group) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + parameters.ID = nil + parameters.Name = nil + parameters.Type = nil + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client GroupsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client GroupsClient) CreateOrUpdateResponder(resp *http.Response) (result Group, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete when you delete a resource group, all of its resources are also deleted. Deleting a resource group deletes +// all of its template deployments and currently stored operations. +// Parameters: +// resourceGroupName - the name of the resource group to delete. The name is case insensitive. +func (client GroupsClient) Delete(ctx context.Context, resourceGroupName string) (result GroupsDeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/GroupsClient.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: resourceGroupName, + Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.GroupsClient", "Delete", err.Error()) + } + + req, err := client.DeletePreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.GroupsClient", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.GroupsClient", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client GroupsClient) DeletePreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client GroupsClient) DeleteSender(req *http.Request) (future GroupsDeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client GroupsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByClosing()) + result.Response = resp + return +} + +// ExportTemplate captures the specified resource group as a template. +// Parameters: +// resourceGroupName - the name of the resource group to export as a template. +// parameters - parameters for exporting the template. +func (client GroupsClient) ExportTemplate(ctx context.Context, resourceGroupName string, parameters ExportTemplateRequest) (result GroupExportResult, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/GroupsClient.ExportTemplate") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: resourceGroupName, + Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.GroupsClient", "ExportTemplate", err.Error()) + } + + req, err := client.ExportTemplatePreparer(ctx, resourceGroupName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.GroupsClient", "ExportTemplate", nil, "Failure preparing request") + return + } + + resp, err := client.ExportTemplateSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.GroupsClient", "ExportTemplate", resp, "Failure sending request") + return + } + + result, err = client.ExportTemplateResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.GroupsClient", "ExportTemplate", resp, "Failure responding to request") + } + + return +} + +// ExportTemplatePreparer prepares the ExportTemplate request. +func (client GroupsClient) ExportTemplatePreparer(ctx context.Context, resourceGroupName string, parameters ExportTemplateRequest) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/exportTemplate", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ExportTemplateSender sends the ExportTemplate request. The method will close the +// http.Response Body if it receives an error. +func (client GroupsClient) ExportTemplateSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ExportTemplateResponder handles the response to the ExportTemplate request. The method always +// closes the http.Response Body. +func (client GroupsClient) ExportTemplateResponder(resp *http.Response) (result GroupExportResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Get gets a resource group. +// Parameters: +// resourceGroupName - the name of the resource group to get. The name is case insensitive. +func (client GroupsClient) Get(ctx context.Context, resourceGroupName string) (result Group, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/GroupsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: resourceGroupName, + Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.GroupsClient", "Get", err.Error()) + } + + req, err := client.GetPreparer(ctx, resourceGroupName) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.GroupsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.GroupsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.GroupsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client GroupsClient) GetPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client GroupsClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client GroupsClient) GetResponder(resp *http.Response) (result Group, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all the resource groups for a subscription. +// Parameters: +// filter - the filter to apply on the operation.

You can filter by tag names and values. For example, +// to filter for a tag name and value, use $filter=tagName eq 'tag1' and tagValue eq 'Value1' +// top - the number of results to return. If null is passed, returns all resource groups. +func (client GroupsClient) List(ctx context.Context, filter string, top *int32) (result GroupListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/GroupsClient.List") + defer func() { + sc := -1 + if result.glr.Response.Response != nil { + sc = result.glr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, filter, top) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.GroupsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.glr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.GroupsClient", "List", resp, "Failure sending request") + return + } + + result.glr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.GroupsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client GroupsClient) ListPreparer(ctx context.Context, filter string, top *int32) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(filter) > 0 { + queryParameters["$filter"] = autorest.Encode("query", filter) + } + if top != nil { + queryParameters["$top"] = autorest.Encode("query", *top) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client GroupsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client GroupsClient) ListResponder(resp *http.Response) (result GroupListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client GroupsClient) listNextResults(ctx context.Context, lastResults GroupListResult) (result GroupListResult, err error) { + req, err := lastResults.groupListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "resources.GroupsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "resources.GroupsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.GroupsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client GroupsClient) ListComplete(ctx context.Context, filter string, top *int32) (result GroupListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/GroupsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, filter, top) + return +} + +// Update resource groups can be updated through a simple PATCH operation to a group address. The format of the request +// is the same as that for creating a resource group. If a field is unspecified, the current value is retained. +// Parameters: +// resourceGroupName - the name of the resource group to update. The name is case insensitive. +// parameters - parameters supplied to update a resource group. +func (client GroupsClient) Update(ctx context.Context, resourceGroupName string, parameters GroupPatchable) (result Group, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/GroupsClient.Update") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: resourceGroupName, + Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.GroupsClient", "Update", err.Error()) + } + + req, err := client.UpdatePreparer(ctx, resourceGroupName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.GroupsClient", "Update", nil, "Failure preparing request") + return + } + + resp, err := client.UpdateSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.GroupsClient", "Update", resp, "Failure sending request") + return + } + + result, err = client.UpdateResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.GroupsClient", "Update", resp, "Failure responding to request") + } + + return +} + +// UpdatePreparer prepares the Update request. +func (client GroupsClient) UpdatePreparer(ctx context.Context, resourceGroupName string, parameters GroupPatchable) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateSender sends the Update request. The method will close the +// http.Response Body if it receives an error. +func (client GroupsClient) UpdateSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UpdateResponder handles the response to the Update request. The method always +// closes the http.Response Body. +func (client GroupsClient) UpdateResponder(resp *http.Response) (result Group, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/models.go b/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/models.go new file mode 100644 index 0000000..06ed987 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/models.go @@ -0,0 +1,2208 @@ +package resources + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "encoding/json" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/date" + "github.com/Azure/go-autorest/autorest/to" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// The package's fully qualified name. +const fqdn = "github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources" + +// DeploymentMode enumerates the values for deployment mode. +type DeploymentMode string + +const ( + // Complete ... + Complete DeploymentMode = "Complete" + // Incremental ... + Incremental DeploymentMode = "Incremental" +) + +// PossibleDeploymentModeValues returns an array of possible values for the DeploymentMode const type. +func PossibleDeploymentModeValues() []DeploymentMode { + return []DeploymentMode{Complete, Incremental} +} + +// OnErrorDeploymentType enumerates the values for on error deployment type. +type OnErrorDeploymentType string + +const ( + // LastSuccessful ... + LastSuccessful OnErrorDeploymentType = "LastSuccessful" + // SpecificDeployment ... + SpecificDeployment OnErrorDeploymentType = "SpecificDeployment" +) + +// PossibleOnErrorDeploymentTypeValues returns an array of possible values for the OnErrorDeploymentType const type. +func PossibleOnErrorDeploymentTypeValues() []OnErrorDeploymentType { + return []OnErrorDeploymentType{LastSuccessful, SpecificDeployment} +} + +// ResourceIdentityType enumerates the values for resource identity type. +type ResourceIdentityType string + +const ( + // None ... + None ResourceIdentityType = "None" + // SystemAssigned ... + SystemAssigned ResourceIdentityType = "SystemAssigned" + // SystemAssignedUserAssigned ... + SystemAssignedUserAssigned ResourceIdentityType = "SystemAssigned, UserAssigned" + // UserAssigned ... + UserAssigned ResourceIdentityType = "UserAssigned" +) + +// PossibleResourceIdentityTypeValues returns an array of possible values for the ResourceIdentityType const type. +func PossibleResourceIdentityTypeValues() []ResourceIdentityType { + return []ResourceIdentityType{None, SystemAssigned, SystemAssignedUserAssigned, UserAssigned} +} + +// AliasPathType the type of the paths for alias. +type AliasPathType struct { + // Path - The path of an alias. + Path *string `json:"path,omitempty"` + // APIVersions - The API versions. + APIVersions *[]string `json:"apiVersions,omitempty"` +} + +// AliasType the alias type. +type AliasType struct { + // Name - The alias name. + Name *string `json:"name,omitempty"` + // Paths - The paths for an alias. + Paths *[]AliasPathType `json:"paths,omitempty"` +} + +// BasicDependency deployment dependency information. +type BasicDependency struct { + // ID - The ID of the dependency. + ID *string `json:"id,omitempty"` + // ResourceType - The dependency resource type. + ResourceType *string `json:"resourceType,omitempty"` + // ResourceName - The dependency resource name. + ResourceName *string `json:"resourceName,omitempty"` +} + +// CloudError an error response for a resource management request. +type CloudError struct { + Error *ErrorResponse `json:"error,omitempty"` +} + +// CreateOrUpdateByIDFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type CreateOrUpdateByIDFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *CreateOrUpdateByIDFuture) Result(client Client) (gr GenericResource, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.CreateOrUpdateByIDFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("resources.CreateOrUpdateByIDFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if gr.Response.Response, err = future.GetResult(sender); err == nil && gr.Response.Response.StatusCode != http.StatusNoContent { + gr, err = client.CreateOrUpdateByIDResponder(gr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.CreateOrUpdateByIDFuture", "Result", gr.Response.Response, "Failure responding to request") + } + } + return +} + +// CreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type CreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *CreateOrUpdateFuture) Result(client Client) (gr GenericResource, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.CreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("resources.CreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if gr.Response.Response, err = future.GetResult(sender); err == nil && gr.Response.Response.StatusCode != http.StatusNoContent { + gr, err = client.CreateOrUpdateResponder(gr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.CreateOrUpdateFuture", "Result", gr.Response.Response, "Failure responding to request") + } + } + return +} + +// DebugSetting the debug setting. +type DebugSetting struct { + // DetailLevel - Specifies the type of information to log for debugging. The permitted values are none, requestContent, responseContent, or both requestContent and responseContent separated by a comma. The default is none. When setting this value, carefully consider the type of information you are passing in during deployment. By logging information about the request or response, you could potentially expose sensitive data that is retrieved through the deployment operations. + DetailLevel *string `json:"detailLevel,omitempty"` +} + +// DeleteByIDFuture an abstraction for monitoring and retrieving the results of a long-running operation. +type DeleteByIDFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *DeleteByIDFuture) Result(client Client) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeleteByIDFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("resources.DeleteByIDFuture") + return + } + ar.Response = future.Response() + return +} + +// DeleteFuture an abstraction for monitoring and retrieving the results of a long-running operation. +type DeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *DeleteFuture) Result(client Client) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("resources.DeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// Dependency deployment dependency information. +type Dependency struct { + // DependsOn - The list of dependencies. + DependsOn *[]BasicDependency `json:"dependsOn,omitempty"` + // ID - The ID of the dependency. + ID *string `json:"id,omitempty"` + // ResourceType - The dependency resource type. + ResourceType *string `json:"resourceType,omitempty"` + // ResourceName - The dependency resource name. + ResourceName *string `json:"resourceName,omitempty"` +} + +// Deployment deployment operation parameters. +type Deployment struct { + // Location - The location to store the deployment data. + Location *string `json:"location,omitempty"` + // Properties - The deployment properties. + Properties *DeploymentProperties `json:"properties,omitempty"` +} + +// DeploymentExportResult the deployment export result. +type DeploymentExportResult struct { + autorest.Response `json:"-"` + // Template - The template content. + Template interface{} `json:"template,omitempty"` +} + +// DeploymentExtended deployment information. +type DeploymentExtended struct { + autorest.Response `json:"-"` + // ID - READ-ONLY; The ID of the deployment. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; The name of the deployment. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; The type of the deployment. + Type *string `json:"type,omitempty"` + // Location - the location of the deployment. + Location *string `json:"location,omitempty"` + // Properties - Deployment properties. + Properties *DeploymentPropertiesExtended `json:"properties,omitempty"` +} + +// DeploymentExtendedFilter deployment filter. +type DeploymentExtendedFilter struct { + // ProvisioningState - The provisioning state. + ProvisioningState *string `json:"provisioningState,omitempty"` +} + +// DeploymentListResult list of deployments. +type DeploymentListResult struct { + autorest.Response `json:"-"` + // Value - An array of deployments. + Value *[]DeploymentExtended `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to use for getting the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// DeploymentListResultIterator provides access to a complete listing of DeploymentExtended values. +type DeploymentListResultIterator struct { + i int + page DeploymentListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *DeploymentListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *DeploymentListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter DeploymentListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter DeploymentListResultIterator) Response() DeploymentListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter DeploymentListResultIterator) Value() DeploymentExtended { + if !iter.page.NotDone() { + return DeploymentExtended{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the DeploymentListResultIterator type. +func NewDeploymentListResultIterator(page DeploymentListResultPage) DeploymentListResultIterator { + return DeploymentListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (dlr DeploymentListResult) IsEmpty() bool { + return dlr.Value == nil || len(*dlr.Value) == 0 +} + +// deploymentListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (dlr DeploymentListResult) deploymentListResultPreparer(ctx context.Context) (*http.Request, error) { + if dlr.NextLink == nil || len(to.String(dlr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(dlr.NextLink))) +} + +// DeploymentListResultPage contains a page of DeploymentExtended values. +type DeploymentListResultPage struct { + fn func(context.Context, DeploymentListResult) (DeploymentListResult, error) + dlr DeploymentListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *DeploymentListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.dlr) + if err != nil { + return err + } + page.dlr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *DeploymentListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page DeploymentListResultPage) NotDone() bool { + return !page.dlr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page DeploymentListResultPage) Response() DeploymentListResult { + return page.dlr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page DeploymentListResultPage) Values() []DeploymentExtended { + if page.dlr.IsEmpty() { + return nil + } + return *page.dlr.Value +} + +// Creates a new instance of the DeploymentListResultPage type. +func NewDeploymentListResultPage(getNextPage func(context.Context, DeploymentListResult) (DeploymentListResult, error)) DeploymentListResultPage { + return DeploymentListResultPage{fn: getNextPage} +} + +// DeploymentOperation deployment operation information. +type DeploymentOperation struct { + autorest.Response `json:"-"` + // ID - READ-ONLY; Full deployment operation ID. + ID *string `json:"id,omitempty"` + // OperationID - READ-ONLY; Deployment operation ID. + OperationID *string `json:"operationId,omitempty"` + // Properties - Deployment properties. + Properties *DeploymentOperationProperties `json:"properties,omitempty"` +} + +// DeploymentOperationProperties deployment operation properties. +type DeploymentOperationProperties struct { + // ProvisioningState - READ-ONLY; The state of the provisioning. + ProvisioningState *string `json:"provisioningState,omitempty"` + // Timestamp - READ-ONLY; The date and time of the operation. + Timestamp *date.Time `json:"timestamp,omitempty"` + // Duration - READ-ONLY; The duration of the operation. + Duration *string `json:"duration,omitempty"` + // ServiceRequestID - READ-ONLY; Deployment operation service request id. + ServiceRequestID *string `json:"serviceRequestId,omitempty"` + // StatusCode - READ-ONLY; Operation status code. + StatusCode *string `json:"statusCode,omitempty"` + // StatusMessage - READ-ONLY; Operation status message. + StatusMessage interface{} `json:"statusMessage,omitempty"` + // TargetResource - READ-ONLY; The target resource. + TargetResource *TargetResource `json:"targetResource,omitempty"` + // Request - READ-ONLY; The HTTP request message. + Request *HTTPMessage `json:"request,omitempty"` + // Response - READ-ONLY; The HTTP response message. + Response *HTTPMessage `json:"response,omitempty"` +} + +// DeploymentOperationsListResult list of deployment operations. +type DeploymentOperationsListResult struct { + autorest.Response `json:"-"` + // Value - An array of deployment operations. + Value *[]DeploymentOperation `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to use for getting the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// DeploymentOperationsListResultIterator provides access to a complete listing of DeploymentOperation +// values. +type DeploymentOperationsListResultIterator struct { + i int + page DeploymentOperationsListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *DeploymentOperationsListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentOperationsListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *DeploymentOperationsListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter DeploymentOperationsListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter DeploymentOperationsListResultIterator) Response() DeploymentOperationsListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter DeploymentOperationsListResultIterator) Value() DeploymentOperation { + if !iter.page.NotDone() { + return DeploymentOperation{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the DeploymentOperationsListResultIterator type. +func NewDeploymentOperationsListResultIterator(page DeploymentOperationsListResultPage) DeploymentOperationsListResultIterator { + return DeploymentOperationsListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (dolr DeploymentOperationsListResult) IsEmpty() bool { + return dolr.Value == nil || len(*dolr.Value) == 0 +} + +// deploymentOperationsListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (dolr DeploymentOperationsListResult) deploymentOperationsListResultPreparer(ctx context.Context) (*http.Request, error) { + if dolr.NextLink == nil || len(to.String(dolr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(dolr.NextLink))) +} + +// DeploymentOperationsListResultPage contains a page of DeploymentOperation values. +type DeploymentOperationsListResultPage struct { + fn func(context.Context, DeploymentOperationsListResult) (DeploymentOperationsListResult, error) + dolr DeploymentOperationsListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *DeploymentOperationsListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentOperationsListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.dolr) + if err != nil { + return err + } + page.dolr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *DeploymentOperationsListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page DeploymentOperationsListResultPage) NotDone() bool { + return !page.dolr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page DeploymentOperationsListResultPage) Response() DeploymentOperationsListResult { + return page.dolr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page DeploymentOperationsListResultPage) Values() []DeploymentOperation { + if page.dolr.IsEmpty() { + return nil + } + return *page.dolr.Value +} + +// Creates a new instance of the DeploymentOperationsListResultPage type. +func NewDeploymentOperationsListResultPage(getNextPage func(context.Context, DeploymentOperationsListResult) (DeploymentOperationsListResult, error)) DeploymentOperationsListResultPage { + return DeploymentOperationsListResultPage{fn: getNextPage} +} + +// DeploymentProperties deployment properties. +type DeploymentProperties struct { + // Template - The template content. You use this element when you want to pass the template syntax directly in the request rather than link to an existing template. It can be a JObject or well-formed JSON string. Use either the templateLink property or the template property, but not both. + Template interface{} `json:"template,omitempty"` + // TemplateLink - The URI of the template. Use either the templateLink property or the template property, but not both. + TemplateLink *TemplateLink `json:"templateLink,omitempty"` + // Parameters - Name and value pairs that define the deployment parameters for the template. You use this element when you want to provide the parameter values directly in the request rather than link to an existing parameter file. Use either the parametersLink property or the parameters property, but not both. It can be a JObject or a well formed JSON string. + Parameters interface{} `json:"parameters,omitempty"` + // ParametersLink - The URI of parameters file. You use this element to link to an existing parameters file. Use either the parametersLink property or the parameters property, but not both. + ParametersLink *ParametersLink `json:"parametersLink,omitempty"` + // Mode - The mode that is used to deploy resources. This value can be either Incremental or Complete. In Incremental mode, resources are deployed without deleting existing resources that are not included in the template. In Complete mode, resources are deployed and existing resources in the resource group that are not included in the template are deleted. Be careful when using Complete mode as you may unintentionally delete resources. Possible values include: 'Incremental', 'Complete' + Mode DeploymentMode `json:"mode,omitempty"` + // DebugSetting - The debug setting of the deployment. + DebugSetting *DebugSetting `json:"debugSetting,omitempty"` + // OnErrorDeployment - The deployment on error behavior. + OnErrorDeployment *OnErrorDeployment `json:"onErrorDeployment,omitempty"` +} + +// DeploymentPropertiesExtended deployment properties with additional details. +type DeploymentPropertiesExtended struct { + // ProvisioningState - READ-ONLY; The state of the provisioning. + ProvisioningState *string `json:"provisioningState,omitempty"` + // CorrelationID - READ-ONLY; The correlation ID of the deployment. + CorrelationID *string `json:"correlationId,omitempty"` + // Timestamp - READ-ONLY; The timestamp of the template deployment. + Timestamp *date.Time `json:"timestamp,omitempty"` + // Duration - READ-ONLY; The duration of the template deployment. + Duration *string `json:"duration,omitempty"` + // Outputs - Key/value pairs that represent deployment output. + Outputs interface{} `json:"outputs,omitempty"` + // Providers - The list of resource providers needed for the deployment. + Providers *[]Provider `json:"providers,omitempty"` + // Dependencies - The list of deployment dependencies. + Dependencies *[]Dependency `json:"dependencies,omitempty"` + // Template - The template content. Use only one of Template or TemplateLink. + Template interface{} `json:"template,omitempty"` + // TemplateLink - The URI referencing the template. Use only one of Template or TemplateLink. + TemplateLink *TemplateLink `json:"templateLink,omitempty"` + // Parameters - Deployment parameters. Use only one of Parameters or ParametersLink. + Parameters interface{} `json:"parameters,omitempty"` + // ParametersLink - The URI referencing the parameters. Use only one of Parameters or ParametersLink. + ParametersLink *ParametersLink `json:"parametersLink,omitempty"` + // Mode - The deployment mode. Possible values are Incremental and Complete. Possible values include: 'Incremental', 'Complete' + Mode DeploymentMode `json:"mode,omitempty"` + // DebugSetting - The debug setting of the deployment. + DebugSetting *DebugSetting `json:"debugSetting,omitempty"` + // OnErrorDeployment - The deployment on error behavior. + OnErrorDeployment *OnErrorDeploymentExtended `json:"onErrorDeployment,omitempty"` +} + +// DeploymentsCreateOrUpdateAtManagementGroupScopeFuture an abstraction for monitoring and retrieving the +// results of a long-running operation. +type DeploymentsCreateOrUpdateAtManagementGroupScopeFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *DeploymentsCreateOrUpdateAtManagementGroupScopeFuture) Result(client DeploymentsClient) (de DeploymentExtended, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsCreateOrUpdateAtManagementGroupScopeFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("resources.DeploymentsCreateOrUpdateAtManagementGroupScopeFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if de.Response.Response, err = future.GetResult(sender); err == nil && de.Response.Response.StatusCode != http.StatusNoContent { + de, err = client.CreateOrUpdateAtManagementGroupScopeResponder(de.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsCreateOrUpdateAtManagementGroupScopeFuture", "Result", de.Response.Response, "Failure responding to request") + } + } + return +} + +// DeploymentsCreateOrUpdateAtSubscriptionScopeFuture an abstraction for monitoring and retrieving the +// results of a long-running operation. +type DeploymentsCreateOrUpdateAtSubscriptionScopeFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *DeploymentsCreateOrUpdateAtSubscriptionScopeFuture) Result(client DeploymentsClient) (de DeploymentExtended, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsCreateOrUpdateAtSubscriptionScopeFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("resources.DeploymentsCreateOrUpdateAtSubscriptionScopeFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if de.Response.Response, err = future.GetResult(sender); err == nil && de.Response.Response.StatusCode != http.StatusNoContent { + de, err = client.CreateOrUpdateAtSubscriptionScopeResponder(de.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsCreateOrUpdateAtSubscriptionScopeFuture", "Result", de.Response.Response, "Failure responding to request") + } + } + return +} + +// DeploymentsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type DeploymentsCreateOrUpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *DeploymentsCreateOrUpdateFuture) Result(client DeploymentsClient) (de DeploymentExtended, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("resources.DeploymentsCreateOrUpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if de.Response.Response, err = future.GetResult(sender); err == nil && de.Response.Response.StatusCode != http.StatusNoContent { + de, err = client.CreateOrUpdateResponder(de.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsCreateOrUpdateFuture", "Result", de.Response.Response, "Failure responding to request") + } + } + return +} + +// DeploymentsDeleteAtManagementGroupScopeFuture an abstraction for monitoring and retrieving the results +// of a long-running operation. +type DeploymentsDeleteAtManagementGroupScopeFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *DeploymentsDeleteAtManagementGroupScopeFuture) Result(client DeploymentsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsDeleteAtManagementGroupScopeFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("resources.DeploymentsDeleteAtManagementGroupScopeFuture") + return + } + ar.Response = future.Response() + return +} + +// DeploymentsDeleteAtSubscriptionScopeFuture an abstraction for monitoring and retrieving the results of a +// long-running operation. +type DeploymentsDeleteAtSubscriptionScopeFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *DeploymentsDeleteAtSubscriptionScopeFuture) Result(client DeploymentsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsDeleteAtSubscriptionScopeFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("resources.DeploymentsDeleteAtSubscriptionScopeFuture") + return + } + ar.Response = future.Response() + return +} + +// DeploymentsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type DeploymentsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *DeploymentsDeleteFuture) Result(client DeploymentsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.DeploymentsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("resources.DeploymentsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// DeploymentValidateResult information from validate template deployment response. +type DeploymentValidateResult struct { + autorest.Response `json:"-"` + // Error - Validation error. + Error *ManagementErrorWithDetails `json:"error,omitempty"` + // Properties - The template deployment properties. + Properties *DeploymentPropertiesExtended `json:"properties,omitempty"` +} + +// ErrorAdditionalInfo the resource management error additional info. +type ErrorAdditionalInfo struct { + // Type - READ-ONLY; The additional info type. + Type *string `json:"type,omitempty"` + // Info - READ-ONLY; The additional info. + Info interface{} `json:"info,omitempty"` +} + +// ErrorResponse the resource management error response. +type ErrorResponse struct { + // Code - READ-ONLY; The error code. + Code *string `json:"code,omitempty"` + // Message - READ-ONLY; The error message. + Message *string `json:"message,omitempty"` + // Target - READ-ONLY; The error target. + Target *string `json:"target,omitempty"` + // Details - READ-ONLY; The error details. + Details *[]ErrorResponse `json:"details,omitempty"` + // AdditionalInfo - READ-ONLY; The error additional info. + AdditionalInfo *[]ErrorAdditionalInfo `json:"additionalInfo,omitempty"` +} + +// ExportTemplateRequest export resource group template request parameters. +type ExportTemplateRequest struct { + // ResourcesProperty - The IDs of the resources to filter the export by. To export all resources, supply an array with single entry '*'. + ResourcesProperty *[]string `json:"resources,omitempty"` + // Options - The export template options. A CSV-formatted list containing zero or more of the following: 'IncludeParameterDefaultValue', 'IncludeComments', 'SkipResourceNameParameterization', 'SkipAllParameterization' + Options *string `json:"options,omitempty"` +} + +// GenericResource resource information. +type GenericResource struct { + autorest.Response `json:"-"` + // Plan - The plan of the resource. + Plan *Plan `json:"plan,omitempty"` + // Properties - The resource properties. + Properties interface{} `json:"properties,omitempty"` + // Kind - The kind of the resource. + Kind *string `json:"kind,omitempty"` + // ManagedBy - ID of the resource that manages this resource. + ManagedBy *string `json:"managedBy,omitempty"` + // Sku - The SKU of the resource. + Sku *Sku `json:"sku,omitempty"` + // Identity - The identity of the resource. + Identity *Identity `json:"identity,omitempty"` + // ID - READ-ONLY; Resource ID + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type + Type *string `json:"type,omitempty"` + // Location - Resource location + Location *string `json:"location,omitempty"` + // Tags - Resource tags + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for GenericResource. +func (gr GenericResource) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if gr.Plan != nil { + objectMap["plan"] = gr.Plan + } + if gr.Properties != nil { + objectMap["properties"] = gr.Properties + } + if gr.Kind != nil { + objectMap["kind"] = gr.Kind + } + if gr.ManagedBy != nil { + objectMap["managedBy"] = gr.ManagedBy + } + if gr.Sku != nil { + objectMap["sku"] = gr.Sku + } + if gr.Identity != nil { + objectMap["identity"] = gr.Identity + } + if gr.Location != nil { + objectMap["location"] = gr.Location + } + if gr.Tags != nil { + objectMap["tags"] = gr.Tags + } + return json.Marshal(objectMap) +} + +// GenericResourceExpanded resource information. +type GenericResourceExpanded struct { + // CreatedTime - READ-ONLY; The created time of the resource. This is only present if requested via the $expand query parameter. + CreatedTime *date.Time `json:"createdTime,omitempty"` + // ChangedTime - READ-ONLY; The changed time of the resource. This is only present if requested via the $expand query parameter. + ChangedTime *date.Time `json:"changedTime,omitempty"` + // ProvisioningState - READ-ONLY; The provisioning state of the resource. This is only present if requested via the $expand query parameter. + ProvisioningState *string `json:"provisioningState,omitempty"` + // Plan - The plan of the resource. + Plan *Plan `json:"plan,omitempty"` + // Properties - The resource properties. + Properties interface{} `json:"properties,omitempty"` + // Kind - The kind of the resource. + Kind *string `json:"kind,omitempty"` + // ManagedBy - ID of the resource that manages this resource. + ManagedBy *string `json:"managedBy,omitempty"` + // Sku - The SKU of the resource. + Sku *Sku `json:"sku,omitempty"` + // Identity - The identity of the resource. + Identity *Identity `json:"identity,omitempty"` + // ID - READ-ONLY; Resource ID + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type + Type *string `json:"type,omitempty"` + // Location - Resource location + Location *string `json:"location,omitempty"` + // Tags - Resource tags + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for GenericResourceExpanded. +func (gre GenericResourceExpanded) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if gre.Plan != nil { + objectMap["plan"] = gre.Plan + } + if gre.Properties != nil { + objectMap["properties"] = gre.Properties + } + if gre.Kind != nil { + objectMap["kind"] = gre.Kind + } + if gre.ManagedBy != nil { + objectMap["managedBy"] = gre.ManagedBy + } + if gre.Sku != nil { + objectMap["sku"] = gre.Sku + } + if gre.Identity != nil { + objectMap["identity"] = gre.Identity + } + if gre.Location != nil { + objectMap["location"] = gre.Location + } + if gre.Tags != nil { + objectMap["tags"] = gre.Tags + } + return json.Marshal(objectMap) +} + +// GenericResourceFilter resource filter. +type GenericResourceFilter struct { + // ResourceType - The resource type. + ResourceType *string `json:"resourceType,omitempty"` + // Tagname - The tag name. + Tagname *string `json:"tagname,omitempty"` + // Tagvalue - The tag value. + Tagvalue *string `json:"tagvalue,omitempty"` +} + +// Group resource group information. +type Group struct { + autorest.Response `json:"-"` + // ID - READ-ONLY; The ID of the resource group. + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; The name of the resource group. + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; The type of the resource group. + Type *string `json:"type,omitempty"` + // Properties - The resource group properties. + Properties *GroupProperties `json:"properties,omitempty"` + // Location - The location of the resource group. It cannot be changed after the resource group has been created. It must be one of the supported Azure locations. + Location *string `json:"location,omitempty"` + // ManagedBy - The ID of the resource that manages this resource group. + ManagedBy *string `json:"managedBy,omitempty"` + // Tags - The tags attached to the resource group. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for Group. +func (g Group) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if g.Properties != nil { + objectMap["properties"] = g.Properties + } + if g.Location != nil { + objectMap["location"] = g.Location + } + if g.ManagedBy != nil { + objectMap["managedBy"] = g.ManagedBy + } + if g.Tags != nil { + objectMap["tags"] = g.Tags + } + return json.Marshal(objectMap) +} + +// GroupExportResult resource group export result. +type GroupExportResult struct { + autorest.Response `json:"-"` + // Template - The template content. + Template interface{} `json:"template,omitempty"` + // Error - The error. + Error *ManagementErrorWithDetails `json:"error,omitempty"` +} + +// GroupFilter resource group filter. +type GroupFilter struct { + // TagName - The tag name. + TagName *string `json:"tagName,omitempty"` + // TagValue - The tag value. + TagValue *string `json:"tagValue,omitempty"` +} + +// GroupListResult list of resource groups. +type GroupListResult struct { + autorest.Response `json:"-"` + // Value - An array of resource groups. + Value *[]Group `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to use for getting the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// GroupListResultIterator provides access to a complete listing of Group values. +type GroupListResultIterator struct { + i int + page GroupListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *GroupListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/GroupListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *GroupListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter GroupListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter GroupListResultIterator) Response() GroupListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter GroupListResultIterator) Value() Group { + if !iter.page.NotDone() { + return Group{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the GroupListResultIterator type. +func NewGroupListResultIterator(page GroupListResultPage) GroupListResultIterator { + return GroupListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (glr GroupListResult) IsEmpty() bool { + return glr.Value == nil || len(*glr.Value) == 0 +} + +// groupListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (glr GroupListResult) groupListResultPreparer(ctx context.Context) (*http.Request, error) { + if glr.NextLink == nil || len(to.String(glr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(glr.NextLink))) +} + +// GroupListResultPage contains a page of Group values. +type GroupListResultPage struct { + fn func(context.Context, GroupListResult) (GroupListResult, error) + glr GroupListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *GroupListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/GroupListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.glr) + if err != nil { + return err + } + page.glr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *GroupListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page GroupListResultPage) NotDone() bool { + return !page.glr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page GroupListResultPage) Response() GroupListResult { + return page.glr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page GroupListResultPage) Values() []Group { + if page.glr.IsEmpty() { + return nil + } + return *page.glr.Value +} + +// Creates a new instance of the GroupListResultPage type. +func NewGroupListResultPage(getNextPage func(context.Context, GroupListResult) (GroupListResult, error)) GroupListResultPage { + return GroupListResultPage{fn: getNextPage} +} + +// GroupPatchable resource group information. +type GroupPatchable struct { + // Name - The name of the resource group. + Name *string `json:"name,omitempty"` + // Properties - The resource group properties. + Properties *GroupProperties `json:"properties,omitempty"` + // ManagedBy - The ID of the resource that manages this resource group. + ManagedBy *string `json:"managedBy,omitempty"` + // Tags - The tags attached to the resource group. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for GroupPatchable. +func (gp GroupPatchable) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if gp.Name != nil { + objectMap["name"] = gp.Name + } + if gp.Properties != nil { + objectMap["properties"] = gp.Properties + } + if gp.ManagedBy != nil { + objectMap["managedBy"] = gp.ManagedBy + } + if gp.Tags != nil { + objectMap["tags"] = gp.Tags + } + return json.Marshal(objectMap) +} + +// GroupProperties the resource group properties. +type GroupProperties struct { + // ProvisioningState - READ-ONLY; The provisioning state. + ProvisioningState *string `json:"provisioningState,omitempty"` +} + +// GroupsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running operation. +type GroupsDeleteFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *GroupsDeleteFuture) Result(client GroupsClient) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.GroupsDeleteFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("resources.GroupsDeleteFuture") + return + } + ar.Response = future.Response() + return +} + +// HTTPMessage HTTP message. +type HTTPMessage struct { + // Content - HTTP message content. + Content interface{} `json:"content,omitempty"` +} + +// Identity identity for the resource. +type Identity struct { + // PrincipalID - READ-ONLY; The principal ID of resource identity. + PrincipalID *string `json:"principalId,omitempty"` + // TenantID - READ-ONLY; The tenant ID of resource. + TenantID *string `json:"tenantId,omitempty"` + // Type - The identity type. Possible values include: 'SystemAssigned', 'UserAssigned', 'SystemAssignedUserAssigned', 'None' + Type ResourceIdentityType `json:"type,omitempty"` + // UserAssignedIdentities - The list of user identities associated with the resource. The user identity dictionary key references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'. + UserAssignedIdentities map[string]*IdentityUserAssignedIdentitiesValue `json:"userAssignedIdentities"` +} + +// MarshalJSON is the custom marshaler for Identity. +func (i Identity) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if i.Type != "" { + objectMap["type"] = i.Type + } + if i.UserAssignedIdentities != nil { + objectMap["userAssignedIdentities"] = i.UserAssignedIdentities + } + return json.Marshal(objectMap) +} + +// IdentityUserAssignedIdentitiesValue ... +type IdentityUserAssignedIdentitiesValue struct { + // PrincipalID - READ-ONLY; The principal id of user assigned identity. + PrincipalID *string `json:"principalId,omitempty"` + // ClientID - READ-ONLY; The client id of user assigned identity. + ClientID *string `json:"clientId,omitempty"` +} + +// ListResult list of resource groups. +type ListResult struct { + autorest.Response `json:"-"` + // Value - An array of resources. + Value *[]GenericResourceExpanded `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to use for getting the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// ListResultIterator provides access to a complete listing of GenericResourceExpanded values. +type ListResultIterator struct { + i int + page ListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ListResultIterator) Response() ListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ListResultIterator) Value() GenericResourceExpanded { + if !iter.page.NotDone() { + return GenericResourceExpanded{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ListResultIterator type. +func NewListResultIterator(page ListResultPage) ListResultIterator { + return ListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (lr ListResult) IsEmpty() bool { + return lr.Value == nil || len(*lr.Value) == 0 +} + +// listResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (lr ListResult) listResultPreparer(ctx context.Context) (*http.Request, error) { + if lr.NextLink == nil || len(to.String(lr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(lr.NextLink))) +} + +// ListResultPage contains a page of GenericResourceExpanded values. +type ListResultPage struct { + fn func(context.Context, ListResult) (ListResult, error) + lr ListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.lr) + if err != nil { + return err + } + page.lr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ListResultPage) NotDone() bool { + return !page.lr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ListResultPage) Response() ListResult { + return page.lr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ListResultPage) Values() []GenericResourceExpanded { + if page.lr.IsEmpty() { + return nil + } + return *page.lr.Value +} + +// Creates a new instance of the ListResultPage type. +func NewListResultPage(getNextPage func(context.Context, ListResult) (ListResult, error)) ListResultPage { + return ListResultPage{fn: getNextPage} +} + +// ManagementErrorWithDetails the detailed error message of resource management. +type ManagementErrorWithDetails struct { + // Code - READ-ONLY; The error code returned when exporting the template. + Code *string `json:"code,omitempty"` + // Message - READ-ONLY; The error message describing the export error. + Message *string `json:"message,omitempty"` + // Target - READ-ONLY; The target of the error. + Target *string `json:"target,omitempty"` + // Details - READ-ONLY; Validation error. + Details *[]ManagementErrorWithDetails `json:"details,omitempty"` +} + +// MoveInfo parameters of move resources. +type MoveInfo struct { + // ResourcesProperty - The IDs of the resources. + ResourcesProperty *[]string `json:"resources,omitempty"` + // TargetResourceGroup - The target resource group. + TargetResourceGroup *string `json:"targetResourceGroup,omitempty"` +} + +// MoveResourcesFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type MoveResourcesFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *MoveResourcesFuture) Result(client Client) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.MoveResourcesFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("resources.MoveResourcesFuture") + return + } + ar.Response = future.Response() + return +} + +// OnErrorDeployment deployment on error behavior. +type OnErrorDeployment struct { + // Type - The deployment on error behavior type. Possible values are LastSuccessful and SpecificDeployment. Possible values include: 'LastSuccessful', 'SpecificDeployment' + Type OnErrorDeploymentType `json:"type,omitempty"` + // DeploymentName - The deployment to be used on error case. + DeploymentName *string `json:"deploymentName,omitempty"` +} + +// OnErrorDeploymentExtended deployment on error behavior with additional details. +type OnErrorDeploymentExtended struct { + // ProvisioningState - READ-ONLY; The state of the provisioning for the on error deployment. + ProvisioningState *string `json:"provisioningState,omitempty"` + // Type - The deployment on error behavior type. Possible values are LastSuccessful and SpecificDeployment. Possible values include: 'LastSuccessful', 'SpecificDeployment' + Type OnErrorDeploymentType `json:"type,omitempty"` + // DeploymentName - The deployment to be used on error case. + DeploymentName *string `json:"deploymentName,omitempty"` +} + +// Operation microsoft.Resources operation +type Operation struct { + // Name - Operation name: {provider}/{resource}/{operation} + Name *string `json:"name,omitempty"` + // Display - The object that represents the operation. + Display *OperationDisplay `json:"display,omitempty"` +} + +// OperationDisplay the object that represents the operation. +type OperationDisplay struct { + // Provider - Service provider: Microsoft.Resources + Provider *string `json:"provider,omitempty"` + // Resource - Resource on which the operation is performed: Profile, endpoint, etc. + Resource *string `json:"resource,omitempty"` + // Operation - Operation type: Read, write, delete, etc. + Operation *string `json:"operation,omitempty"` + // Description - Description of the operation. + Description *string `json:"description,omitempty"` +} + +// OperationListResult result of the request to list Microsoft.Resources operations. It contains a list of +// operations and a URL link to get the next set of results. +type OperationListResult struct { + autorest.Response `json:"-"` + // Value - List of Microsoft.Resources operations. + Value *[]Operation `json:"value,omitempty"` + // NextLink - URL to get the next set of operation list results if there are any. + NextLink *string `json:"nextLink,omitempty"` +} + +// OperationListResultIterator provides access to a complete listing of Operation values. +type OperationListResultIterator struct { + i int + page OperationListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *OperationListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/OperationListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *OperationListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter OperationListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter OperationListResultIterator) Response() OperationListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter OperationListResultIterator) Value() Operation { + if !iter.page.NotDone() { + return Operation{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the OperationListResultIterator type. +func NewOperationListResultIterator(page OperationListResultPage) OperationListResultIterator { + return OperationListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (olr OperationListResult) IsEmpty() bool { + return olr.Value == nil || len(*olr.Value) == 0 +} + +// operationListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (olr OperationListResult) operationListResultPreparer(ctx context.Context) (*http.Request, error) { + if olr.NextLink == nil || len(to.String(olr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(olr.NextLink))) +} + +// OperationListResultPage contains a page of Operation values. +type OperationListResultPage struct { + fn func(context.Context, OperationListResult) (OperationListResult, error) + olr OperationListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *OperationListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/OperationListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.olr) + if err != nil { + return err + } + page.olr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *OperationListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page OperationListResultPage) NotDone() bool { + return !page.olr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page OperationListResultPage) Response() OperationListResult { + return page.olr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page OperationListResultPage) Values() []Operation { + if page.olr.IsEmpty() { + return nil + } + return *page.olr.Value +} + +// Creates a new instance of the OperationListResultPage type. +func NewOperationListResultPage(getNextPage func(context.Context, OperationListResult) (OperationListResult, error)) OperationListResultPage { + return OperationListResultPage{fn: getNextPage} +} + +// ParametersLink entity representing the reference to the deployment parameters. +type ParametersLink struct { + // URI - The URI of the parameters file. + URI *string `json:"uri,omitempty"` + // ContentVersion - If included, must match the ContentVersion in the template. + ContentVersion *string `json:"contentVersion,omitempty"` +} + +// Plan plan for the resource. +type Plan struct { + // Name - The plan ID. + Name *string `json:"name,omitempty"` + // Publisher - The publisher ID. + Publisher *string `json:"publisher,omitempty"` + // Product - The offer ID. + Product *string `json:"product,omitempty"` + // PromotionCode - The promotion code. + PromotionCode *string `json:"promotionCode,omitempty"` + // Version - The plan's version. + Version *string `json:"version,omitempty"` +} + +// Provider resource provider information. +type Provider struct { + autorest.Response `json:"-"` + // ID - READ-ONLY; The provider ID. + ID *string `json:"id,omitempty"` + // Namespace - The namespace of the resource provider. + Namespace *string `json:"namespace,omitempty"` + // RegistrationState - READ-ONLY; The registration state of the resource provider. + RegistrationState *string `json:"registrationState,omitempty"` + // RegistrationPolicy - READ-ONLY; The registration policy of the resource provider. + RegistrationPolicy *string `json:"registrationPolicy,omitempty"` + // ResourceTypes - READ-ONLY; The collection of provider resource types. + ResourceTypes *[]ProviderResourceType `json:"resourceTypes,omitempty"` +} + +// ProviderListResult list of resource providers. +type ProviderListResult struct { + autorest.Response `json:"-"` + // Value - An array of resource providers. + Value *[]Provider `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to use for getting the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// ProviderListResultIterator provides access to a complete listing of Provider values. +type ProviderListResultIterator struct { + i int + page ProviderListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *ProviderListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ProviderListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *ProviderListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter ProviderListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter ProviderListResultIterator) Response() ProviderListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter ProviderListResultIterator) Value() Provider { + if !iter.page.NotDone() { + return Provider{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the ProviderListResultIterator type. +func NewProviderListResultIterator(page ProviderListResultPage) ProviderListResultIterator { + return ProviderListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (plr ProviderListResult) IsEmpty() bool { + return plr.Value == nil || len(*plr.Value) == 0 +} + +// providerListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (plr ProviderListResult) providerListResultPreparer(ctx context.Context) (*http.Request, error) { + if plr.NextLink == nil || len(to.String(plr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(plr.NextLink))) +} + +// ProviderListResultPage contains a page of Provider values. +type ProviderListResultPage struct { + fn func(context.Context, ProviderListResult) (ProviderListResult, error) + plr ProviderListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *ProviderListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ProviderListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.plr) + if err != nil { + return err + } + page.plr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *ProviderListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page ProviderListResultPage) NotDone() bool { + return !page.plr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page ProviderListResultPage) Response() ProviderListResult { + return page.plr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page ProviderListResultPage) Values() []Provider { + if page.plr.IsEmpty() { + return nil + } + return *page.plr.Value +} + +// Creates a new instance of the ProviderListResultPage type. +func NewProviderListResultPage(getNextPage func(context.Context, ProviderListResult) (ProviderListResult, error)) ProviderListResultPage { + return ProviderListResultPage{fn: getNextPage} +} + +// ProviderOperationDisplayProperties resource provider operation's display properties. +type ProviderOperationDisplayProperties struct { + // Publisher - Operation description. + Publisher *string `json:"publisher,omitempty"` + // Provider - Operation provider. + Provider *string `json:"provider,omitempty"` + // Resource - Operation resource. + Resource *string `json:"resource,omitempty"` + // Operation - Resource provider operation. + Operation *string `json:"operation,omitempty"` + // Description - Operation description. + Description *string `json:"description,omitempty"` +} + +// ProviderResourceType resource type managed by the resource provider. +type ProviderResourceType struct { + // ResourceType - The resource type. + ResourceType *string `json:"resourceType,omitempty"` + // Locations - The collection of locations where this resource type can be created. + Locations *[]string `json:"locations,omitempty"` + // Aliases - The aliases that are supported by this resource type. + Aliases *[]AliasType `json:"aliases,omitempty"` + // APIVersions - The API version. + APIVersions *[]string `json:"apiVersions,omitempty"` + // Capabilities - The additional capabilities offered by this resource type. + Capabilities *string `json:"capabilities,omitempty"` + // Properties - The properties. + Properties map[string]*string `json:"properties"` +} + +// MarshalJSON is the custom marshaler for ProviderResourceType. +func (prt ProviderResourceType) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if prt.ResourceType != nil { + objectMap["resourceType"] = prt.ResourceType + } + if prt.Locations != nil { + objectMap["locations"] = prt.Locations + } + if prt.Aliases != nil { + objectMap["aliases"] = prt.Aliases + } + if prt.APIVersions != nil { + objectMap["apiVersions"] = prt.APIVersions + } + if prt.Capabilities != nil { + objectMap["capabilities"] = prt.Capabilities + } + if prt.Properties != nil { + objectMap["properties"] = prt.Properties + } + return json.Marshal(objectMap) +} + +// Resource specified resource. +type Resource struct { + // ID - READ-ONLY; Resource ID + ID *string `json:"id,omitempty"` + // Name - READ-ONLY; Resource name + Name *string `json:"name,omitempty"` + // Type - READ-ONLY; Resource type + Type *string `json:"type,omitempty"` + // Location - Resource location + Location *string `json:"location,omitempty"` + // Tags - Resource tags + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for Resource. +func (r Resource) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if r.Location != nil { + objectMap["location"] = r.Location + } + if r.Tags != nil { + objectMap["tags"] = r.Tags + } + return json.Marshal(objectMap) +} + +// Sku SKU for the resource. +type Sku struct { + // Name - The SKU name. + Name *string `json:"name,omitempty"` + // Tier - The SKU tier. + Tier *string `json:"tier,omitempty"` + // Size - The SKU size. + Size *string `json:"size,omitempty"` + // Family - The SKU family. + Family *string `json:"family,omitempty"` + // Model - The SKU model. + Model *string `json:"model,omitempty"` + // Capacity - The SKU capacity. + Capacity *int32 `json:"capacity,omitempty"` +} + +// SubResource sub-resource. +type SubResource struct { + // ID - Resource ID + ID *string `json:"id,omitempty"` +} + +// TagCount tag count. +type TagCount struct { + // Type - Type of count. + Type *string `json:"type,omitempty"` + // Value - Value of count. + Value *int32 `json:"value,omitempty"` +} + +// TagDetails tag details. +type TagDetails struct { + autorest.Response `json:"-"` + // ID - READ-ONLY; The tag ID. + ID *string `json:"id,omitempty"` + // TagName - The tag name. + TagName *string `json:"tagName,omitempty"` + // Count - The total number of resources that use the resource tag. When a tag is initially created and has no associated resources, the value is 0. + Count *TagCount `json:"count,omitempty"` + // Values - The list of tag values. + Values *[]TagValue `json:"values,omitempty"` +} + +// TagsListResult list of subscription tags. +type TagsListResult struct { + autorest.Response `json:"-"` + // Value - An array of tags. + Value *[]TagDetails `json:"value,omitempty"` + // NextLink - READ-ONLY; The URL to use for getting the next set of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// TagsListResultIterator provides access to a complete listing of TagDetails values. +type TagsListResultIterator struct { + i int + page TagsListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *TagsListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/TagsListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *TagsListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter TagsListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter TagsListResultIterator) Response() TagsListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter TagsListResultIterator) Value() TagDetails { + if !iter.page.NotDone() { + return TagDetails{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the TagsListResultIterator type. +func NewTagsListResultIterator(page TagsListResultPage) TagsListResultIterator { + return TagsListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (tlr TagsListResult) IsEmpty() bool { + return tlr.Value == nil || len(*tlr.Value) == 0 +} + +// tagsListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (tlr TagsListResult) tagsListResultPreparer(ctx context.Context) (*http.Request, error) { + if tlr.NextLink == nil || len(to.String(tlr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(tlr.NextLink))) +} + +// TagsListResultPage contains a page of TagDetails values. +type TagsListResultPage struct { + fn func(context.Context, TagsListResult) (TagsListResult, error) + tlr TagsListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *TagsListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/TagsListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.tlr) + if err != nil { + return err + } + page.tlr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *TagsListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page TagsListResultPage) NotDone() bool { + return !page.tlr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page TagsListResultPage) Response() TagsListResult { + return page.tlr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page TagsListResultPage) Values() []TagDetails { + if page.tlr.IsEmpty() { + return nil + } + return *page.tlr.Value +} + +// Creates a new instance of the TagsListResultPage type. +func NewTagsListResultPage(getNextPage func(context.Context, TagsListResult) (TagsListResult, error)) TagsListResultPage { + return TagsListResultPage{fn: getNextPage} +} + +// TagValue tag information. +type TagValue struct { + autorest.Response `json:"-"` + // ID - READ-ONLY; The tag ID. + ID *string `json:"id,omitempty"` + // TagValue - The tag value. + TagValue *string `json:"tagValue,omitempty"` + // Count - The tag value count. + Count *TagCount `json:"count,omitempty"` +} + +// TargetResource target resource. +type TargetResource struct { + // ID - The ID of the resource. + ID *string `json:"id,omitempty"` + // ResourceName - The name of the resource. + ResourceName *string `json:"resourceName,omitempty"` + // ResourceType - The type of the resource. + ResourceType *string `json:"resourceType,omitempty"` +} + +// TemplateHashResult result of the request to calculate template hash. It contains a string of minified +// template and its hash. +type TemplateHashResult struct { + autorest.Response `json:"-"` + // MinifiedTemplate - The minified template string. + MinifiedTemplate *string `json:"minifiedTemplate,omitempty"` + // TemplateHash - The template hash. + TemplateHash *string `json:"templateHash,omitempty"` +} + +// TemplateLink entity representing the reference to the template. +type TemplateLink struct { + // URI - The URI of the template to deploy. + URI *string `json:"uri,omitempty"` + // ContentVersion - If included, must match the ContentVersion in the template. + ContentVersion *string `json:"contentVersion,omitempty"` +} + +// UpdateByIDFuture an abstraction for monitoring and retrieving the results of a long-running operation. +type UpdateByIDFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *UpdateByIDFuture) Result(client Client) (gr GenericResource, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.UpdateByIDFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("resources.UpdateByIDFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if gr.Response.Response, err = future.GetResult(sender); err == nil && gr.Response.Response.StatusCode != http.StatusNoContent { + gr, err = client.UpdateByIDResponder(gr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.UpdateByIDFuture", "Result", gr.Response.Response, "Failure responding to request") + } + } + return +} + +// UpdateFuture an abstraction for monitoring and retrieving the results of a long-running operation. +type UpdateFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *UpdateFuture) Result(client Client) (gr GenericResource, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.UpdateFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("resources.UpdateFuture") + return + } + sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if gr.Response.Response, err = future.GetResult(sender); err == nil && gr.Response.Response.StatusCode != http.StatusNoContent { + gr, err = client.UpdateResponder(gr.Response.Response) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.UpdateFuture", "Result", gr.Response.Response, "Failure responding to request") + } + } + return +} + +// ValidateMoveResourcesFuture an abstraction for monitoring and retrieving the results of a long-running +// operation. +type ValidateMoveResourcesFuture struct { + azure.Future +} + +// Result returns the result of the asynchronous operation. +// If the operation has not completed it will return an error. +func (future *ValidateMoveResourcesFuture) Result(client Client) (ar autorest.Response, err error) { + var done bool + done, err = future.DoneWithContext(context.Background(), client) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.ValidateMoveResourcesFuture", "Result", future.Response(), "Polling failure") + return + } + if !done { + err = azure.NewAsyncOpIncompleteError("resources.ValidateMoveResourcesFuture") + return + } + ar.Response = future.Response() + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/operations.go b/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/operations.go new file mode 100644 index 0000000..9f4e03f --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/operations.go @@ -0,0 +1,147 @@ +package resources + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// OperationsClient is the provides operations for working with resources and resource groups. +type OperationsClient struct { + BaseClient +} + +// NewOperationsClient creates an instance of the OperationsClient client. +func NewOperationsClient(subscriptionID string) OperationsClient { + return NewOperationsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewOperationsClientWithBaseURI creates an instance of the OperationsClient client using a custom endpoint. Use this +// when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewOperationsClientWithBaseURI(baseURI string, subscriptionID string) OperationsClient { + return OperationsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// List lists all of the available Microsoft.Resources REST API operations. +func (client OperationsClient) List(ctx context.Context) (result OperationListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/OperationsClient.List") + defer func() { + sc := -1 + if result.olr.Response.Response != nil { + sc = result.olr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.OperationsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.olr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.OperationsClient", "List", resp, "Failure sending request") + return + } + + result.olr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.OperationsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client OperationsClient) ListPreparer(ctx context.Context) (*http.Request, error) { + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPath("/providers/Microsoft.Resources/operations"), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client OperationsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client OperationsClient) ListResponder(resp *http.Response) (result OperationListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client OperationsClient) listNextResults(ctx context.Context, lastResults OperationListResult) (result OperationListResult, err error) { + req, err := lastResults.operationListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "resources.OperationsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "resources.OperationsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.OperationsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client OperationsClient) ListComplete(ctx context.Context) (result OperationListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/OperationsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/providers.go b/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/providers.go new file mode 100644 index 0000000..66a08a1 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/providers.go @@ -0,0 +1,389 @@ +package resources + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// ProvidersClient is the provides operations for working with resources and resource groups. +type ProvidersClient struct { + BaseClient +} + +// NewProvidersClient creates an instance of the ProvidersClient client. +func NewProvidersClient(subscriptionID string) ProvidersClient { + return NewProvidersClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewProvidersClientWithBaseURI creates an instance of the ProvidersClient client using a custom endpoint. Use this +// when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewProvidersClientWithBaseURI(baseURI string, subscriptionID string) ProvidersClient { + return ProvidersClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// Get gets the specified resource provider. +// Parameters: +// resourceProviderNamespace - the namespace of the resource provider. +// expand - the $expand query parameter. For example, to include property aliases in response, use +// $expand=resourceTypes/aliases. +func (client ProvidersClient) Get(ctx context.Context, resourceProviderNamespace string, expand string) (result Provider, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ProvidersClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, resourceProviderNamespace, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client ProvidersClient) GetPreparer(ctx context.Context, resourceProviderNamespace string, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceProviderNamespace": autorest.Encode("path", resourceProviderNamespace), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client ProvidersClient) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client ProvidersClient) GetResponder(resp *http.Response) (result Provider, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List gets all resource providers for a subscription. +// Parameters: +// top - the number of results to return. If null is passed returns all deployments. +// expand - the properties to include in the results. For example, use &$expand=metadata in the query string to +// retrieve resource provider metadata. To include property aliases in response, use +// $expand=resourceTypes/aliases. +func (client ProvidersClient) List(ctx context.Context, top *int32, expand string) (result ProviderListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ProvidersClient.List") + defer func() { + sc := -1 + if result.plr.Response.Response != nil { + sc = result.plr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, top, expand) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.plr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "List", resp, "Failure sending request") + return + } + + result.plr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client ProvidersClient) ListPreparer(ctx context.Context, top *int32, expand string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if top != nil { + queryParameters["$top"] = autorest.Encode("query", *top) + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client ProvidersClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client ProvidersClient) ListResponder(resp *http.Response) (result ProviderListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client ProvidersClient) listNextResults(ctx context.Context, lastResults ProviderListResult) (result ProviderListResult, err error) { + req, err := lastResults.providerListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "resources.ProvidersClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "resources.ProvidersClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client ProvidersClient) ListComplete(ctx context.Context, top *int32, expand string) (result ProviderListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ProvidersClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, top, expand) + return +} + +// Register registers a subscription with a resource provider. +// Parameters: +// resourceProviderNamespace - the namespace of the resource provider to register. +func (client ProvidersClient) Register(ctx context.Context, resourceProviderNamespace string) (result Provider, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ProvidersClient.Register") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.RegisterPreparer(ctx, resourceProviderNamespace) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "Register", nil, "Failure preparing request") + return + } + + resp, err := client.RegisterSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "Register", resp, "Failure sending request") + return + } + + result, err = client.RegisterResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "Register", resp, "Failure responding to request") + } + + return +} + +// RegisterPreparer prepares the Register request. +func (client ProvidersClient) RegisterPreparer(ctx context.Context, resourceProviderNamespace string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceProviderNamespace": autorest.Encode("path", resourceProviderNamespace), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/register", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// RegisterSender sends the Register request. The method will close the +// http.Response Body if it receives an error. +func (client ProvidersClient) RegisterSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// RegisterResponder handles the response to the Register request. The method always +// closes the http.Response Body. +func (client ProvidersClient) RegisterResponder(resp *http.Response) (result Provider, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Unregister unregisters a subscription from a resource provider. +// Parameters: +// resourceProviderNamespace - the namespace of the resource provider to unregister. +func (client ProvidersClient) Unregister(ctx context.Context, resourceProviderNamespace string) (result Provider, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ProvidersClient.Unregister") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UnregisterPreparer(ctx, resourceProviderNamespace) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "Unregister", nil, "Failure preparing request") + return + } + + resp, err := client.UnregisterSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "Unregister", resp, "Failure sending request") + return + } + + result, err = client.UnregisterResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "Unregister", resp, "Failure responding to request") + } + + return +} + +// UnregisterPreparer prepares the Unregister request. +func (client ProvidersClient) UnregisterPreparer(ctx context.Context, resourceProviderNamespace string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceProviderNamespace": autorest.Encode("path", resourceProviderNamespace), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/unregister", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UnregisterSender sends the Unregister request. The method will close the +// http.Response Body if it receives an error. +func (client ProvidersClient) UnregisterSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// UnregisterResponder handles the response to the Unregister request. The method always +// closes the http.Response Body. +func (client ProvidersClient) UnregisterResponder(resp *http.Response) (result Provider, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/resources.go b/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/resources.go new file mode 100644 index 0000000..222f3ef --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/resources.go @@ -0,0 +1,1339 @@ +package resources + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// Client is the provides operations for working with resources and resource groups. +type Client struct { + BaseClient +} + +// NewClient creates an instance of the Client client. +func NewClient(subscriptionID string) Client { + return NewClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewClientWithBaseURI creates an instance of the Client client using a custom endpoint. Use this when interacting +// with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewClientWithBaseURI(baseURI string, subscriptionID string) Client { + return Client{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CheckExistence checks whether a resource exists. +// Parameters: +// resourceGroupName - the name of the resource group containing the resource to check. The name is case +// insensitive. +// resourceProviderNamespace - the resource provider of the resource to check. +// parentResourcePath - the parent resource identity. +// resourceType - the resource type. +// resourceName - the name of the resource to check whether it exists. +// APIVersion - the API version to use for the operation. +func (client Client) CheckExistence(ctx context.Context, resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, APIVersion string) (result autorest.Response, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/Client.CheckExistence") + defer func() { + sc := -1 + if result.Response != nil { + sc = result.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: resourceGroupName, + Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.Client", "CheckExistence", err.Error()) + } + + req, err := client.CheckExistencePreparer(ctx, resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, APIVersion) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "CheckExistence", nil, "Failure preparing request") + return + } + + resp, err := client.CheckExistenceSender(req) + if err != nil { + result.Response = resp + err = autorest.NewErrorWithError(err, "resources.Client", "CheckExistence", resp, "Failure sending request") + return + } + + result, err = client.CheckExistenceResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "CheckExistence", resp, "Failure responding to request") + } + + return +} + +// CheckExistencePreparer prepares the CheckExistence request. +func (client Client) CheckExistencePreparer(ctx context.Context, resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, APIVersion string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "parentResourcePath": parentResourcePath, + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "resourceName": autorest.Encode("path", resourceName), + "resourceProviderNamespace": autorest.Encode("path", resourceProviderNamespace), + "resourceType": resourceType, + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsHead(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CheckExistenceSender sends the CheckExistence request. The method will close the +// http.Response Body if it receives an error. +func (client Client) CheckExistenceSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// CheckExistenceResponder handles the response to the CheckExistence request. The method always +// closes the http.Response Body. +func (client Client) CheckExistenceResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent, http.StatusNotFound), + autorest.ByClosing()) + result.Response = resp + return +} + +// CheckExistenceByID checks by ID whether a resource exists. +// Parameters: +// resourceID - the fully qualified ID of the resource, including the resource name and resource type. Use the +// format, +// /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name} +// APIVersion - the API version to use for the operation. +func (client Client) CheckExistenceByID(ctx context.Context, resourceID string, APIVersion string) (result autorest.Response, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/Client.CheckExistenceByID") + defer func() { + sc := -1 + if result.Response != nil { + sc = result.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CheckExistenceByIDPreparer(ctx, resourceID, APIVersion) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "CheckExistenceByID", nil, "Failure preparing request") + return + } + + resp, err := client.CheckExistenceByIDSender(req) + if err != nil { + result.Response = resp + err = autorest.NewErrorWithError(err, "resources.Client", "CheckExistenceByID", resp, "Failure sending request") + return + } + + result, err = client.CheckExistenceByIDResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "CheckExistenceByID", resp, "Failure responding to request") + } + + return +} + +// CheckExistenceByIDPreparer prepares the CheckExistenceByID request. +func (client Client) CheckExistenceByIDPreparer(ctx context.Context, resourceID string, APIVersion string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceId": resourceID, + } + + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsHead(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/{resourceId}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CheckExistenceByIDSender sends the CheckExistenceByID request. The method will close the +// http.Response Body if it receives an error. +func (client Client) CheckExistenceByIDSender(req *http.Request) (*http.Response, error) { + return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) +} + +// CheckExistenceByIDResponder handles the response to the CheckExistenceByID request. The method always +// closes the http.Response Body. +func (client Client) CheckExistenceByIDResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent, http.StatusNotFound), + autorest.ByClosing()) + result.Response = resp + return +} + +// CreateOrUpdate creates a resource. +// Parameters: +// resourceGroupName - the name of the resource group for the resource. The name is case insensitive. +// resourceProviderNamespace - the namespace of the resource provider. +// parentResourcePath - the parent resource identity. +// resourceType - the resource type of the resource to create. +// resourceName - the name of the resource to create. +// APIVersion - the API version to use for the operation. +// parameters - parameters for creating or updating the resource. +func (client Client) CreateOrUpdate(ctx context.Context, resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, APIVersion string, parameters GenericResource) (result CreateOrUpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/Client.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: resourceGroupName, + Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}, + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.Kind", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.Kind", Name: validation.Pattern, Rule: `^[-\w\._,\(\)]+$`, Chain: nil}}}}}}); err != nil { + return result, validation.NewError("resources.Client", "CreateOrUpdate", err.Error()) + } + + req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, APIVersion, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "CreateOrUpdate", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client Client) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, APIVersion string, parameters GenericResource) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "parentResourcePath": parentResourcePath, + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "resourceName": autorest.Encode("path", resourceName), + "resourceProviderNamespace": autorest.Encode("path", resourceProviderNamespace), + "resourceType": resourceType, + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client Client) CreateOrUpdateSender(req *http.Request) (future CreateOrUpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client Client) CreateOrUpdateResponder(resp *http.Response) (result GenericResource, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// CreateOrUpdateByID create a resource by ID. +// Parameters: +// resourceID - the fully qualified ID of the resource, including the resource name and resource type. Use the +// format, +// /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name} +// APIVersion - the API version to use for the operation. +// parameters - create or update resource parameters. +func (client Client) CreateOrUpdateByID(ctx context.Context, resourceID string, APIVersion string, parameters GenericResource) (result CreateOrUpdateByIDFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/Client.CreateOrUpdateByID") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.Kind", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.Kind", Name: validation.Pattern, Rule: `^[-\w\._,\(\)]+$`, Chain: nil}}}}}}); err != nil { + return result, validation.NewError("resources.Client", "CreateOrUpdateByID", err.Error()) + } + + req, err := client.CreateOrUpdateByIDPreparer(ctx, resourceID, APIVersion, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "CreateOrUpdateByID", nil, "Failure preparing request") + return + } + + result, err = client.CreateOrUpdateByIDSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "CreateOrUpdateByID", result.Response(), "Failure sending request") + return + } + + return +} + +// CreateOrUpdateByIDPreparer prepares the CreateOrUpdateByID request. +func (client Client) CreateOrUpdateByIDPreparer(ctx context.Context, resourceID string, APIVersion string, parameters GenericResource) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceId": resourceID, + } + + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/{resourceId}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateByIDSender sends the CreateOrUpdateByID request. The method will close the +// http.Response Body if it receives an error. +func (client Client) CreateOrUpdateByIDSender(req *http.Request) (future CreateOrUpdateByIDFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// CreateOrUpdateByIDResponder handles the response to the CreateOrUpdateByID request. The method always +// closes the http.Response Body. +func (client Client) CreateOrUpdateByIDResponder(resp *http.Response) (result GenericResource, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete deletes a resource. +// Parameters: +// resourceGroupName - the name of the resource group that contains the resource to delete. The name is case +// insensitive. +// resourceProviderNamespace - the namespace of the resource provider. +// parentResourcePath - the parent resource identity. +// resourceType - the resource type. +// resourceName - the name of the resource to delete. +// APIVersion - the API version to use for the operation. +func (client Client) Delete(ctx context.Context, resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, APIVersion string) (result DeleteFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/Client.Delete") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: resourceGroupName, + Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.Client", "Delete", err.Error()) + } + + req, err := client.DeletePreparer(ctx, resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, APIVersion) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "Delete", nil, "Failure preparing request") + return + } + + result, err = client.DeleteSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "Delete", result.Response(), "Failure sending request") + return + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client Client) DeletePreparer(ctx context.Context, resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, APIVersion string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "parentResourcePath": parentResourcePath, + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "resourceName": autorest.Encode("path", resourceName), + "resourceProviderNamespace": autorest.Encode("path", resourceProviderNamespace), + "resourceType": resourceType, + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client Client) DeleteSender(req *http.Request) (future DeleteFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client Client) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// DeleteByID deletes a resource by ID. +// Parameters: +// resourceID - the fully qualified ID of the resource, including the resource name and resource type. Use the +// format, +// /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name} +// APIVersion - the API version to use for the operation. +func (client Client) DeleteByID(ctx context.Context, resourceID string, APIVersion string) (result DeleteByIDFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/Client.DeleteByID") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeleteByIDPreparer(ctx, resourceID, APIVersion) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "DeleteByID", nil, "Failure preparing request") + return + } + + result, err = client.DeleteByIDSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "DeleteByID", result.Response(), "Failure sending request") + return + } + + return +} + +// DeleteByIDPreparer prepares the DeleteByID request. +func (client Client) DeleteByIDPreparer(ctx context.Context, resourceID string, APIVersion string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceId": resourceID, + } + + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/{resourceId}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteByIDSender sends the DeleteByID request. The method will close the +// http.Response Body if it receives an error. +func (client Client) DeleteByIDSender(req *http.Request) (future DeleteByIDFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// DeleteByIDResponder handles the response to the DeleteByID request. The method always +// closes the http.Response Body. +func (client Client) DeleteByIDResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets a resource. +// Parameters: +// resourceGroupName - the name of the resource group containing the resource to get. The name is case +// insensitive. +// resourceProviderNamespace - the namespace of the resource provider. +// parentResourcePath - the parent resource identity. +// resourceType - the resource type of the resource. +// resourceName - the name of the resource to get. +// APIVersion - the API version to use for the operation. +func (client Client) Get(ctx context.Context, resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, APIVersion string) (result GenericResource, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/Client.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: resourceGroupName, + Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.Client", "Get", err.Error()) + } + + req, err := client.GetPreparer(ctx, resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, APIVersion) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.Client", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client Client) GetPreparer(ctx context.Context, resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, APIVersion string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "parentResourcePath": parentResourcePath, + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "resourceName": autorest.Encode("path", resourceName), + "resourceProviderNamespace": autorest.Encode("path", resourceProviderNamespace), + "resourceType": resourceType, + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client Client) GetSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client Client) GetResponder(resp *http.Response) (result GenericResource, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetByID gets a resource by ID. +// Parameters: +// resourceID - the fully qualified ID of the resource, including the resource name and resource type. Use the +// format, +// /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name} +// APIVersion - the API version to use for the operation. +func (client Client) GetByID(ctx context.Context, resourceID string, APIVersion string) (result GenericResource, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/Client.GetByID") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetByIDPreparer(ctx, resourceID, APIVersion) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "GetByID", nil, "Failure preparing request") + return + } + + resp, err := client.GetByIDSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.Client", "GetByID", resp, "Failure sending request") + return + } + + result, err = client.GetByIDResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "GetByID", resp, "Failure responding to request") + } + + return +} + +// GetByIDPreparer prepares the GetByID request. +func (client Client) GetByIDPreparer(ctx context.Context, resourceID string, APIVersion string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceId": resourceID, + } + + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/{resourceId}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetByIDSender sends the GetByID request. The method will close the +// http.Response Body if it receives an error. +func (client Client) GetByIDSender(req *http.Request) (*http.Response, error) { + return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) +} + +// GetByIDResponder handles the response to the GetByID request. The method always +// closes the http.Response Body. +func (client Client) GetByIDResponder(resp *http.Response) (result GenericResource, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List get all the resources in a subscription. +// Parameters: +// filter - the filter to apply on the operation.

The properties you can use for eq (equals) or ne (not +// equals) are: location, resourceType, name, resourceGroup, identity, identity/principalId, plan, +// plan/publisher, plan/product, plan/name, plan/version, and plan/promotionCode.

For example, to filter +// by a resource type, use: $filter=resourceType eq 'Microsoft.Network/virtualNetworks'

You can use +// substringof(value, property) in the filter. The properties you can use for substring are: name and +// resourceGroup.

For example, to get all resources with 'demo' anywhere in the name, use: +// $filter=substringof('demo', name)

You can link more than one substringof together by adding and/or +// operators.

You can filter by tag names and values. For example, to filter for a tag name and value, +// use $filter=tagName eq 'tag1' and tagValue eq 'Value1'

You can use some properties together when +// filtering. The combinations you can use are: substringof and/or resourceType, plan and plan/publisher and +// plan/name, identity and identity/principalId. +// expand - comma-separated list of additional properties to be included in the response. Valid values include +// `createdTime`, `changedTime` and `provisioningState`. For example, `$expand=createdTime,changedTime`. +// top - the number of results to return. If null is passed, returns all resource groups. +func (client Client) List(ctx context.Context, filter string, expand string, top *int32) (result ListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/Client.List") + defer func() { + sc := -1 + if result.lr.Response.Response != nil { + sc = result.lr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, filter, expand, top) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.lr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.Client", "List", resp, "Failure sending request") + return + } + + result.lr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client Client) ListPreparer(ctx context.Context, filter string, expand string, top *int32) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(filter) > 0 { + queryParameters["$filter"] = autorest.Encode("query", filter) + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + if top != nil { + queryParameters["$top"] = autorest.Encode("query", *top) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resources", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client Client) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client Client) ListResponder(resp *http.Response) (result ListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client Client) listNextResults(ctx context.Context, lastResults ListResult) (result ListResult, err error) { + req, err := lastResults.listResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "resources.Client", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "resources.Client", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client Client) ListComplete(ctx context.Context, filter string, expand string, top *int32) (result ListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/Client.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx, filter, expand, top) + return +} + +// ListByResourceGroup get all the resources for a resource group. +// Parameters: +// resourceGroupName - the resource group with the resources to get. +// filter - the filter to apply on the operation.

The properties you can use for eq (equals) or ne (not +// equals) are: location, resourceType, name, resourceGroup, identity, identity/principalId, plan, +// plan/publisher, plan/product, plan/name, plan/version, and plan/promotionCode.

For example, to filter +// by a resource type, use: $filter=resourceType eq 'Microsoft.Network/virtualNetworks'

You can use +// substringof(value, property) in the filter. The properties you can use for substring are: name and +// resourceGroup.

For example, to get all resources with 'demo' anywhere in the name, use: +// $filter=substringof('demo', name)

You can link more than one substringof together by adding and/or +// operators.

You can filter by tag names and values. For example, to filter for a tag name and value, +// use $filter=tagName eq 'tag1' and tagValue eq 'Value1'

You can use some properties together when +// filtering. The combinations you can use are: substringof and/or resourceType, plan and plan/publisher and +// plan/name, identity and identity/principalId. +// expand - comma-separated list of additional properties to be included in the response. Valid values include +// `createdTime`, `changedTime` and `provisioningState`. For example, `$expand=createdTime,changedTime`. +// top - the number of results to return. If null is passed, returns all resources. +func (client Client) ListByResourceGroup(ctx context.Context, resourceGroupName string, filter string, expand string, top *int32) (result ListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/Client.ListByResourceGroup") + defer func() { + sc := -1 + if result.lr.Response.Response != nil { + sc = result.lr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: resourceGroupName, + Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.Client", "ListByResourceGroup", err.Error()) + } + + result.fn = client.listByResourceGroupNextResults + req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName, filter, expand, top) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "ListByResourceGroup", nil, "Failure preparing request") + return + } + + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.lr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.Client", "ListByResourceGroup", resp, "Failure sending request") + return + } + + result.lr, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "ListByResourceGroup", resp, "Failure responding to request") + } + + return +} + +// ListByResourceGroupPreparer prepares the ListByResourceGroup request. +func (client Client) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string, filter string, expand string, top *int32) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(filter) > 0 { + queryParameters["$filter"] = autorest.Encode("query", filter) + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + if top != nil { + queryParameters["$top"] = autorest.Encode("query", *top) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/resources", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the +// http.Response Body if it receives an error. +func (client Client) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always +// closes the http.Response Body. +func (client Client) ListByResourceGroupResponder(resp *http.Response) (result ListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listByResourceGroupNextResults retrieves the next set of results, if any. +func (client Client) listByResourceGroupNextResults(ctx context.Context, lastResults ListResult) (result ListResult, err error) { + req, err := lastResults.listResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "resources.Client", "listByResourceGroupNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListByResourceGroupSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "resources.Client", "listByResourceGroupNextResults", resp, "Failure sending next results request") + } + result, err = client.ListByResourceGroupResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "listByResourceGroupNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. +func (client Client) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string, filter string, expand string, top *int32) (result ListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/Client.ListByResourceGroup") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.ListByResourceGroup(ctx, resourceGroupName, filter, expand, top) + return +} + +// MoveResources the resources to move must be in the same source resource group. The target resource group may be in a +// different subscription. When moving resources, both the source group and the target group are locked for the +// duration of the operation. Write and delete operations are blocked on the groups until the move completes. +// Parameters: +// sourceResourceGroupName - the name of the resource group containing the resources to move. +// parameters - parameters for moving resources. +func (client Client) MoveResources(ctx context.Context, sourceResourceGroupName string, parameters MoveInfo) (result MoveResourcesFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/Client.MoveResources") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: sourceResourceGroupName, + Constraints: []validation.Constraint{{Target: "sourceResourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "sourceResourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "sourceResourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.Client", "MoveResources", err.Error()) + } + + req, err := client.MoveResourcesPreparer(ctx, sourceResourceGroupName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "MoveResources", nil, "Failure preparing request") + return + } + + result, err = client.MoveResourcesSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "MoveResources", result.Response(), "Failure sending request") + return + } + + return +} + +// MoveResourcesPreparer prepares the MoveResources request. +func (client Client) MoveResourcesPreparer(ctx context.Context, sourceResourceGroupName string, parameters MoveInfo) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "sourceResourceGroupName": autorest.Encode("path", sourceResourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/moveResources", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// MoveResourcesSender sends the MoveResources request. The method will close the +// http.Response Body if it receives an error. +func (client Client) MoveResourcesSender(req *http.Request) (future MoveResourcesFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// MoveResourcesResponder handles the response to the MoveResources request. The method always +// closes the http.Response Body. +func (client Client) MoveResourcesResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// Update updates a resource. +// Parameters: +// resourceGroupName - the name of the resource group for the resource. The name is case insensitive. +// resourceProviderNamespace - the namespace of the resource provider. +// parentResourcePath - the parent resource identity. +// resourceType - the resource type of the resource to update. +// resourceName - the name of the resource to update. +// APIVersion - the API version to use for the operation. +// parameters - parameters for updating the resource. +func (client Client) Update(ctx context.Context, resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, APIVersion string, parameters GenericResource) (result UpdateFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/Client.Update") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: resourceGroupName, + Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.Client", "Update", err.Error()) + } + + req, err := client.UpdatePreparer(ctx, resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, APIVersion, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "Update", nil, "Failure preparing request") + return + } + + result, err = client.UpdateSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "Update", result.Response(), "Failure sending request") + return + } + + return +} + +// UpdatePreparer prepares the Update request. +func (client Client) UpdatePreparer(ctx context.Context, resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, APIVersion string, parameters GenericResource) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "parentResourcePath": parentResourcePath, + "resourceGroupName": autorest.Encode("path", resourceGroupName), + "resourceName": autorest.Encode("path", resourceName), + "resourceProviderNamespace": autorest.Encode("path", resourceProviderNamespace), + "resourceType": resourceType, + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateSender sends the Update request. The method will close the +// http.Response Body if it receives an error. +func (client Client) UpdateSender(req *http.Request) (future UpdateFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// UpdateResponder handles the response to the Update request. The method always +// closes the http.Response Body. +func (client Client) UpdateResponder(resp *http.Response) (result GenericResource, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// UpdateByID updates a resource by ID. +// Parameters: +// resourceID - the fully qualified ID of the resource, including the resource name and resource type. Use the +// format, +// /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name} +// APIVersion - the API version to use for the operation. +// parameters - update resource parameters. +func (client Client) UpdateByID(ctx context.Context, resourceID string, APIVersion string, parameters GenericResource) (result UpdateByIDFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/Client.UpdateByID") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.UpdateByIDPreparer(ctx, resourceID, APIVersion, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "UpdateByID", nil, "Failure preparing request") + return + } + + result, err = client.UpdateByIDSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "UpdateByID", result.Response(), "Failure sending request") + return + } + + return +} + +// UpdateByIDPreparer prepares the UpdateByID request. +func (client Client) UpdateByIDPreparer(ctx context.Context, resourceID string, APIVersion string, parameters GenericResource) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "resourceId": resourceID, + } + + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPatch(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/{resourceId}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UpdateByIDSender sends the UpdateByID request. The method will close the +// http.Response Body if it receives an error. +func (client Client) UpdateByIDSender(req *http.Request) (future UpdateByIDFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// UpdateByIDResponder handles the response to the UpdateByID request. The method always +// closes the http.Response Body. +func (client Client) UpdateByIDResponder(resp *http.Response) (result GenericResource, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// ValidateMoveResources this operation checks whether the specified resources can be moved to the target. The +// resources to move must be in the same source resource group. The target resource group may be in a different +// subscription. If validation succeeds, it returns HTTP response code 204 (no content). If validation fails, it +// returns HTTP response code 409 (Conflict) with an error message. Retrieve the URL in the Location header value to +// check the result of the long-running operation. +// Parameters: +// sourceResourceGroupName - the name of the resource group containing the resources to validate for move. +// parameters - parameters for moving resources. +func (client Client) ValidateMoveResources(ctx context.Context, sourceResourceGroupName string, parameters MoveInfo) (result ValidateMoveResourcesFuture, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/Client.ValidateMoveResources") + defer func() { + sc := -1 + if result.Response() != nil { + sc = result.Response().StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: sourceResourceGroupName, + Constraints: []validation.Constraint{{Target: "sourceResourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, + {Target: "sourceResourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, + {Target: "sourceResourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}}); err != nil { + return result, validation.NewError("resources.Client", "ValidateMoveResources", err.Error()) + } + + req, err := client.ValidateMoveResourcesPreparer(ctx, sourceResourceGroupName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "ValidateMoveResources", nil, "Failure preparing request") + return + } + + result, err = client.ValidateMoveResourcesSender(req) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.Client", "ValidateMoveResources", result.Response(), "Failure sending request") + return + } + + return +} + +// ValidateMoveResourcesPreparer prepares the ValidateMoveResources request. +func (client Client) ValidateMoveResourcesPreparer(ctx context.Context, sourceResourceGroupName string, parameters MoveInfo) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "sourceResourceGroupName": autorest.Encode("path", sourceResourceGroupName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/validateMoveResources", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ValidateMoveResourcesSender sends the ValidateMoveResources request. The method will close the +// http.Response Body if it receives an error. +func (client Client) ValidateMoveResourcesSender(req *http.Request) (future ValidateMoveResourcesFuture, err error) { + var resp *http.Response + resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) + if err != nil { + return + } + future.Future, err = azure.NewFutureFromResponse(resp) + return +} + +// ValidateMoveResourcesResponder handles the response to the ValidateMoveResources request. The method always +// closes the http.Response Body. +func (client Client) ValidateMoveResourcesResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent, http.StatusConflict), + autorest.ByClosing()) + result.Response = resp + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/tags.go b/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/tags.go new file mode 100644 index 0000000..b7cda5d --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/tags.go @@ -0,0 +1,450 @@ +package resources + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// TagsClient is the provides operations for working with resources and resource groups. +type TagsClient struct { + BaseClient +} + +// NewTagsClient creates an instance of the TagsClient client. +func NewTagsClient(subscriptionID string) TagsClient { + return NewTagsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewTagsClientWithBaseURI creates an instance of the TagsClient client using a custom endpoint. Use this when +// interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). +func NewTagsClientWithBaseURI(baseURI string, subscriptionID string) TagsClient { + return TagsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate the tag name can have a maximum of 512 characters and is case insensitive. Tag names created by Azure +// have prefixes of microsoft, azure, or windows. You cannot create tags with one of these prefixes. +// Parameters: +// tagName - the name of the tag to create. +func (client TagsClient) CreateOrUpdate(ctx context.Context, tagName string) (result TagDetails, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/TagsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdatePreparer(ctx, tagName) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.TagsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + resp, err := client.CreateOrUpdateSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.TagsClient", "CreateOrUpdate", resp, "Failure sending request") + return + } + + result, err = client.CreateOrUpdateResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.TagsClient", "CreateOrUpdate", resp, "Failure responding to request") + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client TagsClient) CreateOrUpdatePreparer(ctx context.Context, tagName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "tagName": autorest.Encode("path", tagName), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/tagNames/{tagName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client TagsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client TagsClient) CreateOrUpdateResponder(resp *http.Response) (result TagDetails, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// CreateOrUpdateValue creates a tag value. The name of the tag must already exist. +// Parameters: +// tagName - the name of the tag. +// tagValue - the value of the tag to create. +func (client TagsClient) CreateOrUpdateValue(ctx context.Context, tagName string, tagValue string) (result TagValue, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/TagsClient.CreateOrUpdateValue") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.CreateOrUpdateValuePreparer(ctx, tagName, tagValue) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.TagsClient", "CreateOrUpdateValue", nil, "Failure preparing request") + return + } + + resp, err := client.CreateOrUpdateValueSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.TagsClient", "CreateOrUpdateValue", resp, "Failure sending request") + return + } + + result, err = client.CreateOrUpdateValueResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.TagsClient", "CreateOrUpdateValue", resp, "Failure responding to request") + } + + return +} + +// CreateOrUpdateValuePreparer prepares the CreateOrUpdateValue request. +func (client TagsClient) CreateOrUpdateValuePreparer(ctx context.Context, tagName string, tagValue string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "tagName": autorest.Encode("path", tagName), + "tagValue": autorest.Encode("path", tagValue), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateValueSender sends the CreateOrUpdateValue request. The method will close the +// http.Response Body if it receives an error. +func (client TagsClient) CreateOrUpdateValueSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// CreateOrUpdateValueResponder handles the response to the CreateOrUpdateValue request. The method always +// closes the http.Response Body. +func (client TagsClient) CreateOrUpdateValueResponder(resp *http.Response) (result TagValue, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete you must remove all values from a resource tag before you can delete it. +// Parameters: +// tagName - the name of the tag. +func (client TagsClient) Delete(ctx context.Context, tagName string) (result autorest.Response, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/TagsClient.Delete") + defer func() { + sc := -1 + if result.Response != nil { + sc = result.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, tagName) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.TagsClient", "Delete", nil, "Failure preparing request") + return + } + + resp, err := client.DeleteSender(req) + if err != nil { + result.Response = resp + err = autorest.NewErrorWithError(err, "resources.TagsClient", "Delete", resp, "Failure sending request") + return + } + + result, err = client.DeleteResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.TagsClient", "Delete", resp, "Failure responding to request") + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client TagsClient) DeletePreparer(ctx context.Context, tagName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "tagName": autorest.Encode("path", tagName), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/tagNames/{tagName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client TagsClient) DeleteSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client TagsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// DeleteValue deletes a tag value. +// Parameters: +// tagName - the name of the tag. +// tagValue - the value of the tag to delete. +func (client TagsClient) DeleteValue(ctx context.Context, tagName string, tagValue string) (result autorest.Response, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/TagsClient.DeleteValue") + defer func() { + sc := -1 + if result.Response != nil { + sc = result.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeleteValuePreparer(ctx, tagName, tagValue) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.TagsClient", "DeleteValue", nil, "Failure preparing request") + return + } + + resp, err := client.DeleteValueSender(req) + if err != nil { + result.Response = resp + err = autorest.NewErrorWithError(err, "resources.TagsClient", "DeleteValue", resp, "Failure sending request") + return + } + + result, err = client.DeleteValueResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.TagsClient", "DeleteValue", resp, "Failure responding to request") + } + + return +} + +// DeleteValuePreparer prepares the DeleteValue request. +func (client TagsClient) DeleteValuePreparer(ctx context.Context, tagName string, tagValue string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + "tagName": autorest.Encode("path", tagName), + "tagValue": autorest.Encode("path", tagValue), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteValueSender sends the DeleteValue request. The method will close the +// http.Response Body if it receives an error. +func (client TagsClient) DeleteValueSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// DeleteValueResponder handles the response to the DeleteValue request. The method always +// closes the http.Response Body. +func (client TagsClient) DeleteValueResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent), + autorest.ByClosing()) + result.Response = resp + return +} + +// List gets the names and values of all resource tags that are defined in a subscription. +func (client TagsClient) List(ctx context.Context) (result TagsListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/TagsClient.List") + defer func() { + sc := -1 + if result.tlr.Response.Response != nil { + sc = result.tlr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.TagsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.tlr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "resources.TagsClient", "List", resp, "Failure sending request") + return + } + + result.tlr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.TagsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client TagsClient) ListPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2019-05-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/tagNames", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client TagsClient) ListSender(req *http.Request) (*http.Response, error) { + return client.Send(req, azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client TagsClient) ListResponder(resp *http.Response) (result TagsListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client TagsClient) listNextResults(ctx context.Context, lastResults TagsListResult) (result TagsListResult, err error) { + req, err := lastResults.tagsListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "resources.TagsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "resources.TagsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "resources.TagsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client TagsClient) ListComplete(ctx context.Context) (result TagsListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/TagsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx) + return +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/version.go b/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/version.go new file mode 100644 index 0000000..5ce8890 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources/version.go @@ -0,0 +1,30 @@ +package resources + +import "github.com/Azure/azure-sdk-for-go/version" + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +// UserAgent returns the UserAgent string to use when sending http.Requests. +func UserAgent() string { + return "Azure-SDK-For-Go/" + version.Number + " resources/2019-05-01" +} + +// Version returns the semantic version (see http://semver.org) of the client. +func Version() string { + return version.Number +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/version/version.go b/vendor/github.com/Azure/azure-sdk-for-go/version/version.go new file mode 100644 index 0000000..9e4612e --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/version/version.go @@ -0,0 +1,21 @@ +package version + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +// Number contains the semantic version of this SDK. +const Number = "v41.3.0" diff --git a/vendor/github.com/Azure/azure-storage-blob-go/LICENSE b/vendor/github.com/Azure/azure-storage-blob-go/LICENSE new file mode 100644 index 0000000..d1ca00f --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE \ No newline at end of file diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/access_conditions.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/access_conditions.go new file mode 100644 index 0000000..25fe684 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/access_conditions.go @@ -0,0 +1,65 @@ +package azblob + +import ( + "time" +) + +// ModifiedAccessConditions identifies standard HTTP access conditions which you optionally set. +type ModifiedAccessConditions struct { + IfModifiedSince time.Time + IfUnmodifiedSince time.Time + IfMatch ETag + IfNoneMatch ETag +} + +// pointers is for internal infrastructure. It returns the fields as pointers. +func (ac ModifiedAccessConditions) pointers() (ims *time.Time, ius *time.Time, ime *ETag, inme *ETag) { + if !ac.IfModifiedSince.IsZero() { + ims = &ac.IfModifiedSince + } + if !ac.IfUnmodifiedSince.IsZero() { + ius = &ac.IfUnmodifiedSince + } + if ac.IfMatch != ETagNone { + ime = &ac.IfMatch + } + if ac.IfNoneMatch != ETagNone { + inme = &ac.IfNoneMatch + } + return +} + +// ContainerAccessConditions identifies container-specific access conditions which you optionally set. +type ContainerAccessConditions struct { + ModifiedAccessConditions + LeaseAccessConditions +} + +// BlobAccessConditions identifies blob-specific access conditions which you optionally set. +type BlobAccessConditions struct { + ModifiedAccessConditions + LeaseAccessConditions +} + +// LeaseAccessConditions identifies lease access conditions for a container or blob which you optionally set. +type LeaseAccessConditions struct { + LeaseID string +} + +// pointers is for internal infrastructure. It returns the fields as pointers. +func (ac LeaseAccessConditions) pointers() (leaseID *string) { + if ac.LeaseID != "" { + leaseID = &ac.LeaseID + } + return +} + +/* +// getInt32 is for internal infrastructure. It is used with access condition values where +// 0 (the default setting) is meaningful. The library interprets 0 as do not send the header +// and the privately-storage field in the access condition object is stored as +1 higher than desired. +// THis method returns true, if the value is > 0 (explicitly set) and the stored value - 1 (the set desired value). +func getInt32(value int32) (bool, int32) { + return value > 0, value - 1 +} +*/ diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/atomicmorph.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/atomicmorph.go new file mode 100644 index 0000000..9e18a79 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/atomicmorph.go @@ -0,0 +1,69 @@ +package azblob + +import "sync/atomic" + +// AtomicMorpherInt32 identifies a method passed to and invoked by the AtomicMorphInt32 function. +// The AtomicMorpher callback is passed a startValue and based on this value it returns +// what the new value should be and the result that AtomicMorph should return to its caller. +type atomicMorpherInt32 func(startVal int32) (val int32, morphResult interface{}) + +const targetAndMorpherMustNotBeNil = "target and morpher must not be nil" + +// AtomicMorph atomically morphs target in to new value (and result) as indicated bythe AtomicMorpher callback function. +func atomicMorphInt32(target *int32, morpher atomicMorpherInt32) interface{} { + for { + currentVal := atomic.LoadInt32(target) + desiredVal, morphResult := morpher(currentVal) + if atomic.CompareAndSwapInt32(target, currentVal, desiredVal) { + return morphResult + } + } +} + +// AtomicMorpherUint32 identifies a method passed to and invoked by the AtomicMorph function. +// The AtomicMorpher callback is passed a startValue and based on this value it returns +// what the new value should be and the result that AtomicMorph should return to its caller. +type atomicMorpherUint32 func(startVal uint32) (val uint32, morphResult interface{}) + +// AtomicMorph atomically morphs target in to new value (and result) as indicated bythe AtomicMorpher callback function. +func atomicMorphUint32(target *uint32, morpher atomicMorpherUint32) interface{} { + for { + currentVal := atomic.LoadUint32(target) + desiredVal, morphResult := morpher(currentVal) + if atomic.CompareAndSwapUint32(target, currentVal, desiredVal) { + return morphResult + } + } +} + +// AtomicMorpherUint64 identifies a method passed to and invoked by the AtomicMorphUint64 function. +// The AtomicMorpher callback is passed a startValue and based on this value it returns +// what the new value should be and the result that AtomicMorph should return to its caller. +type atomicMorpherInt64 func(startVal int64) (val int64, morphResult interface{}) + +// AtomicMorph atomically morphs target in to new value (and result) as indicated bythe AtomicMorpher callback function. +func atomicMorphInt64(target *int64, morpher atomicMorpherInt64) interface{} { + for { + currentVal := atomic.LoadInt64(target) + desiredVal, morphResult := morpher(currentVal) + if atomic.CompareAndSwapInt64(target, currentVal, desiredVal) { + return morphResult + } + } +} + +// AtomicMorpherUint64 identifies a method passed to and invoked by the AtomicMorphUint64 function. +// The AtomicMorpher callback is passed a startValue and based on this value it returns +// what the new value should be and the result that AtomicMorph should return to its caller. +type atomicMorpherUint64 func(startVal uint64) (val uint64, morphResult interface{}) + +// AtomicMorph atomically morphs target in to new value (and result) as indicated bythe AtomicMorpher callback function. +func atomicMorphUint64(target *uint64, morpher atomicMorpherUint64) interface{} { + for { + currentVal := atomic.LoadUint64(target) + desiredVal, morphResult := morpher(currentVal) + if atomic.CompareAndSwapUint64(target, currentVal, desiredVal) { + return morphResult + } + } +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/blob.json b/vendor/github.com/Azure/azure-storage-blob-go/azblob/blob.json new file mode 100644 index 0000000..09addf0 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/blob.json @@ -0,0 +1,8009 @@ +{ + "swagger": "2.0", + "info": { + "title": "Azure Blob Storage", + "version": "2018-11-09", + "x-ms-code-generation-settings": { + "header": "MIT", + "strictSpecAdherence": false + } + }, + "x-ms-parameterized-host": { + "hostTemplate": "{url}", + "useSchemePrefix": false, + "positionInOperation": "first", + "parameters": [ + { + "$ref": "#/parameters/Url" + } + ] + }, + "securityDefinitions": { + "blob_shared_key": { + "type": "apiKey", + "name": "Authorization", + "in": "header" + } + }, + "schemes": [ + "https" + ], + "consumes": [ + "application/xml" + ], + "produces": [ + "application/xml" + ], + "paths": {}, + "x-ms-paths": { + "/?restype=service&comp=properties": { + "put": { + "tags": [ + "service" + ], + "operationId": "Service_SetProperties", + "description": "Sets properties for a storage account's Blob service endpoint, including properties for Storage Analytics and CORS (Cross-Origin Resource Sharing) rules", + "parameters": [ + { + "$ref": "#/parameters/StorageServiceProperties" + }, + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "202": { + "description": "Success (Accepted)", + "headers": { + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "get": { + "tags": [ + "service" + ], + "operationId": "Service_GetProperties", + "description": "gets the properties of a storage account's Blob service, including properties for Storage Analytics and CORS (Cross-Origin Resource Sharing) rules.", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "Success.", + "headers": { + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + } + }, + "schema": { + "$ref": "#/definitions/StorageServiceProperties" + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "restype", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "service" + ] + }, + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "properties" + ] + } + ] + }, + "/?restype=service&comp=stats": { + "get": { + "tags": [ + "service" + ], + "operationId": "Service_GetStatistics", + "description": "Retrieves statistics related to replication for the Blob service. It is only available on the secondary location endpoint when read-access geo-redundant replication is enabled for the storage account.", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "Success.", + "headers": { + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + }, + "schema": { + "$ref": "#/definitions/StorageServiceStats" + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "restype", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "service" + ] + }, + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "stats" + ] + } + ] + }, + "/?comp=list": { + "get": { + "tags": [ + "service" + ], + "operationId": "Service_ListContainersSegment", + "description": "The List Containers Segment operation returns a list of the containers under the specified account", + "parameters": [ + { + "$ref": "#/parameters/Prefix" + }, + { + "$ref": "#/parameters/Marker" + }, + { + "$ref": "#/parameters/MaxResults" + }, + { + "$ref": "#/parameters/ListContainersInclude" + }, + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "Success.", + "headers": { + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + } + }, + "schema": { + "$ref": "#/definitions/ListContainersSegmentResponse" + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "NextMarker" + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "list" + ] + } + ] + }, + "/?restype=service&comp=userdelegationkey": { + "post": { + "tags": [ + "service" + ], + "operationId": "Service_GetUserDelegationKey", + "description": "Retrieves a user delgation key for the Blob service. This is only a valid operation when using bearer token authentication.", + "parameters": [ + { + "$ref": "#/parameters/KeyInfo" + }, + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "Success.", + "headers": { + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + }, + "schema": { + "$ref": "#/definitions/UserDelegationKey" + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "restype", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "service" + ] + }, + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "userdelegationkey" + ] + } + ] + }, + "/?restype=account&comp=properties": { + "get": { + "tags": [ + "service" + ], + "operationId": "Service_GetAccountInfo", + "description": "Returns the sku name and account kind ", + "parameters": [ + { + "$ref": "#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Success (OK)", + "headers": { + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + }, + "x-ms-sku-name": { + "x-ms-client-name": "SkuName", + "type": "string", + "enum": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS", + "Standard_ZRS", + "Premium_LRS" + ], + "x-ms-enum": { + "name": "SkuName", + "modelAsString": false + }, + "description": "Identifies the sku name of the account" + }, + "x-ms-account-kind": { + "x-ms-client-name": "AccountKind", + "type": "string", + "enum": [ + "Storage", + "BlobStorage", + "StorageV2" + ], + "x-ms-enum": { + "name": "AccountKind", + "modelAsString": false + }, + "description": "Identifies the account kind" + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "restype", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "account" + ] + }, + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "properties" + ] + } + ] + }, + "/{containerName}?restype=container": { + "put": { + "tags": [ + "container" + ], + "operationId": "Container_Create", + "description": "creates a new container under the specified account. If the container with the same name already exists, the operation fails", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/Metadata" + }, + { + "$ref": "#/parameters/BlobPublicAccess" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "201": { + "description": "Success, Container created.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "get": { + "tags": [ + "container" + ], + "operationId": "Container_GetProperties", + "description": "returns all user-defined metadata and system properties for the specified container. The data returned does not include the container's list of blobs", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "Success", + "headers": { + "x-ms-meta": { + "type": "string", + "x-ms-client-name": "Metadata", + "x-ms-header-collection-prefix": "x-ms-meta-" + }, + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-lease-duration": { + "x-ms-client-name": "LeaseDuration", + "description": "When a blob is leased, specifies whether the lease is of infinite or fixed duration.", + "type": "string", + "enum": [ + "infinite", + "fixed" + ], + "x-ms-enum": { + "name": "LeaseDurationType", + "modelAsString": false + } + }, + "x-ms-lease-state": { + "x-ms-client-name": "LeaseState", + "description": "Lease state of the blob.", + "type": "string", + "enum": [ + "available", + "leased", + "expired", + "breaking", + "broken" + ], + "x-ms-enum": { + "name": "LeaseStateType", + "modelAsString": false + } + }, + "x-ms-lease-status": { + "x-ms-client-name": "LeaseStatus", + "description": "The current lease status of the blob.", + "type": "string", + "enum": [ + "locked", + "unlocked" + ], + "x-ms-enum": { + "name": "LeaseStatusType", + "modelAsString": false + } + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + }, + "x-ms-blob-public-access": { + "x-ms-client-name": "BlobPublicAccess", + "description": "Indicated whether data in the container may be accessed publicly and the level of access", + "type": "string", + "enum": [ + "container", + "blob" + ], + "x-ms-enum": { + "name": "PublicAccessType", + "modelAsString": true + } + }, + "x-ms-has-immutability-policy": { + "x-ms-client-name": "HasImmutabilityPolicy", + "description": "Indicates whether the container has an immutability policy set on it.", + "type": "boolean" + }, + "x-ms-has-legal-hold": { + "x-ms-client-name": "HasLegalHold", + "description": "Indicates whether the container has a legal hold.", + "type": "boolean" + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "delete": { + "tags": [ + "container" + ], + "operationId": "Container_Delete", + "description": "operation marks the specified container for deletion. The container and any blobs contained within it are later deleted during garbage collection", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "202": { + "description": "Accepted", + "headers": { + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "restype", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "container" + ] + } + ] + }, + "/{containerName}?restype=container&comp=metadata": { + "put": { + "tags": [ + "container" + ], + "operationId": "Container_SetMetadata", + "description": "operation sets one or more user-defined name-value pairs for the specified container.", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/Metadata" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "Success", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "restype", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "container" + ] + }, + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "metadata" + ] + } + ] + }, + "/{containerName}?restype=container&comp=acl": { + "get": { + "tags": [ + "container" + ], + "operationId": "Container_GetAccessPolicy", + "description": "gets the permissions for the specified container. The permissions indicate whether container data may be accessed publicly.", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "Success", + "headers": { + "x-ms-blob-public-access": { + "x-ms-client-name": "BlobPublicAccess", + "description": "Indicated whether data in the container may be accessed publicly and the level of access", + "type": "string", + "enum": [ + "container", + "blob" + ], + "x-ms-enum": { + "name": "PublicAccessType", + "modelAsString": true + } + }, + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + }, + "schema": { + "$ref": "#/definitions/SignedIdentifiers" + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "put": { + "tags": [ + "container" + ], + "operationId": "Container_SetAccessPolicy", + "description": "sets the permissions for the specified container. The permissions indicate whether blobs in a container may be accessed publicly.", + "parameters": [ + { + "$ref": "#/parameters/ContainerAcl" + }, + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/BlobPublicAccess" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "Success.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "restype", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "container" + ] + }, + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "acl" + ] + } + ] + }, + "/{containerName}?comp=lease&restype=container&acquire": { + "put": { + "tags": [ + "container" + ], + "operationId": "Container_AcquireLease", + "description": "[Update] establishes and manages a lock on a container for delete operations. The lock duration can be 15 to 60 seconds, or can be infinite", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/LeaseDuration" + }, + { + "$ref": "#/parameters/ProposedLeaseIdOptional" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "201": { + "description": "The Acquire operation completed successfully.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-lease-id": { + "x-ms-client-name": "LeaseId", + "type": "string", + "description": "Uniquely identifies a container's lease" + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "lease" + ] + }, + { + "name": "restype", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "container" + ] + }, + { + "name": "x-ms-lease-action", + "x-ms-client-name": "action", + "in": "header", + "required": true, + "type": "string", + "enum": [ + "acquire" + ], + "x-ms-enum": { + "name": "LeaseAction", + "modelAsString": false + }, + "x-ms-parameter-location": "method", + "description": "Describes what lease action to take." + } + ] + }, + "/{containerName}?comp=lease&restype=container&release": { + "put": { + "tags": [ + "container" + ], + "operationId": "Container_ReleaseLease", + "description": "[Update] establishes and manages a lock on a container for delete operations. The lock duration can be 15 to 60 seconds, or can be infinite", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/LeaseIdRequired" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "The Release operation completed successfully.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "lease" + ] + }, + { + "name": "restype", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "container" + ] + }, + { + "name": "x-ms-lease-action", + "x-ms-client-name": "action", + "in": "header", + "required": true, + "type": "string", + "enum": [ + "release" + ], + "x-ms-enum": { + "name": "LeaseAction", + "modelAsString": false + }, + "x-ms-parameter-location": "method", + "description": "Describes what lease action to take." + } + ] + }, + "/{containerName}?comp=lease&restype=container&renew": { + "put": { + "tags": [ + "container" + ], + "operationId": "Container_RenewLease", + "description": "[Update] establishes and manages a lock on a container for delete operations. The lock duration can be 15 to 60 seconds, or can be infinite", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/LeaseIdRequired" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "The Renew operation completed successfully.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-lease-id": { + "x-ms-client-name": "LeaseId", + "type": "string", + "description": "Uniquely identifies a container's lease" + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "lease" + ] + }, + { + "name": "restype", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "container" + ] + }, + { + "name": "x-ms-lease-action", + "x-ms-client-name": "action", + "in": "header", + "required": true, + "type": "string", + "enum": [ + "renew" + ], + "x-ms-enum": { + "name": "LeaseAction", + "modelAsString": false + }, + "x-ms-parameter-location": "method", + "description": "Describes what lease action to take." + } + ] + }, + "/{containerName}?comp=lease&restype=container&break": { + "put": { + "tags": [ + "container" + ], + "operationId": "Container_BreakLease", + "description": "[Update] establishes and manages a lock on a container for delete operations. The lock duration can be 15 to 60 seconds, or can be infinite", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/LeaseBreakPeriod" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "202": { + "description": "The Break operation completed successfully.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-lease-time": { + "x-ms-client-name": "LeaseTime", + "type": "integer", + "description": "Approximate time remaining in the lease period, in seconds." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "lease" + ] + }, + { + "name": "restype", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "container" + ] + }, + { + "name": "x-ms-lease-action", + "x-ms-client-name": "action", + "in": "header", + "required": true, + "type": "string", + "enum": [ + "break" + ], + "x-ms-enum": { + "name": "LeaseAction", + "modelAsString": false + }, + "x-ms-parameter-location": "method", + "description": "Describes what lease action to take." + } + ] + }, + "/{containerName}?comp=lease&restype=container&change": { + "put": { + "tags": [ + "container" + ], + "operationId": "Container_ChangeLease", + "description": "[Update] establishes and manages a lock on a container for delete operations. The lock duration can be 15 to 60 seconds, or can be infinite", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/LeaseIdRequired" + }, + { + "$ref": "#/parameters/ProposedLeaseIdRequired" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "The Change operation completed successfully.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-lease-id": { + "x-ms-client-name": "LeaseId", + "type": "string", + "description": "Uniquely identifies a container's lease" + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "lease" + ] + }, + { + "name": "restype", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "container" + ] + }, + { + "name": "x-ms-lease-action", + "x-ms-client-name": "action", + "in": "header", + "required": true, + "type": "string", + "enum": [ + "change" + ], + "x-ms-enum": { + "name": "LeaseAction", + "modelAsString": false + }, + "x-ms-parameter-location": "method", + "description": "Describes what lease action to take." + } + ] + }, + "/{containerName}?restype=container&comp=list&flat": { + "get": { + "tags": [ + "containers" + ], + "operationId": "Container_ListBlobFlatSegment", + "description": "[Update] The List Blobs operation returns a list of the blobs under the specified container", + "parameters": [ + { + "$ref": "#/parameters/Prefix" + }, + { + "$ref": "#/parameters/Marker" + }, + { + "$ref": "#/parameters/MaxResults" + }, + { + "$ref": "#/parameters/ListBlobsInclude" + }, + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "Success.", + "headers": { + "Content-Type": { + "type": "string", + "description": "The media type of the body of the response. For List Blobs this is 'application/xml'" + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + }, + "schema": { + "$ref": "#/definitions/ListBlobsFlatSegmentResponse" + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "NextMarker" + } + }, + "parameters": [ + { + "name": "restype", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "container" + ] + }, + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "list" + ] + } + ] + }, + "/{containerName}?restype=container&comp=list&hierarchy": { + "get": { + "tags": [ + "containers" + ], + "operationId": "Container_ListBlobHierarchySegment", + "description": "[Update] The List Blobs operation returns a list of the blobs under the specified container", + "parameters": [ + { + "$ref": "#/parameters/Prefix" + }, + { + "$ref": "#/parameters/Delimiter" + }, + { + "$ref": "#/parameters/Marker" + }, + { + "$ref": "#/parameters/MaxResults" + }, + { + "$ref": "#/parameters/ListBlobsInclude" + }, + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "Success.", + "headers": { + "Content-Type": { + "type": "string", + "description": "The media type of the body of the response. For List Blobs this is 'application/xml'" + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + }, + "schema": { + "$ref": "#/definitions/ListBlobsHierarchySegmentResponse" + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "NextMarker" + } + }, + "parameters": [ + { + "name": "restype", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "container" + ] + }, + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "list" + ] + } + ] + }, + "/{containerName}?restype=account&comp=properties": { + "get": { + "tags": [ + "container" + ], + "operationId": "Container_GetAccountInfo", + "description": "Returns the sku name and account kind ", + "parameters": [ + { + "$ref": "#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Success (OK)", + "headers": { + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + }, + "x-ms-sku-name": { + "x-ms-client-name": "SkuName", + "type": "string", + "enum": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS", + "Standard_ZRS", + "Premium_LRS" + ], + "x-ms-enum": { + "name": "SkuName", + "modelAsString": false + }, + "description": "Identifies the sku name of the account" + }, + "x-ms-account-kind": { + "x-ms-client-name": "AccountKind", + "type": "string", + "enum": [ + "Storage", + "BlobStorage", + "StorageV2" + ], + "x-ms-enum": { + "name": "AccountKind", + "modelAsString": false + }, + "description": "Identifies the account kind" + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "restype", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "account" + ] + }, + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "properties" + ] + } + ] + }, + "/{containerName}/{blob}": { + "get": { + "tags": [ + "blob" + ], + "operationId": "Blob_Download", + "description": "The Download operation reads or downloads a blob from the system, including its metadata and properties. You can also call Download to read a snapshot.", + "parameters": [ + { + "$ref": "#/parameters/Snapshot" + }, + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/Range" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/GetRangeContentMD5" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "Returns the content of the entire blob.", + "headers": { + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-meta": { + "type": "string", + "x-ms-client-name": "Metadata", + "x-ms-header-collection-prefix": "x-ms-meta-" + }, + "Content-Length": { + "type": "integer", + "format": "int64", + "description": "The number of bytes present in the response body." + }, + "Content-Type": { + "type": "string", + "description": "The media type of the body of the response. For Download Blob this is 'application/octet-stream'" + }, + "Content-Range": { + "type": "string", + "description": "Indicates the range of bytes returned in the event that the client requested a subset of the blob by setting the 'Range' request header." + }, + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Content-MD5": { + "type": "string", + "format": "byte", + "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity." + }, + "Content-Encoding": { + "type": "string", + "description": "This header returns the value that was specified for the Content-Encoding request header" + }, + "Cache-Control": { + "type": "string", + "description": "This header is returned if it was previously specified for the blob." + }, + "Content-Disposition": { + "type": "string", + "description": "This header returns the value that was specified for the 'x-ms-blob-content-disposition' header. The Content-Disposition response header field conveys additional information about how to process the response payload, and also can be used to attach additional metadata. For example, if set to attachment, it indicates that the user-agent should not display the response, but instead show a Save As dialog with a filename other than the blob name specified." + }, + "Content-Language": { + "type": "string", + "description": "This header returns the value that was specified for the Content-Language request header." + }, + "x-ms-blob-sequence-number": { + "x-ms-client-name": "BlobSequenceNumber", + "type": "integer", + "format": "int64", + "description": "The current sequence number for a page blob. This header is not returned for block blobs or append blobs" + }, + "x-ms-blob-type": { + "x-ms-client-name": "BlobType", + "description": "The blob's type.", + "type": "string", + "enum": [ + "BlockBlob", + "PageBlob", + "AppendBlob" + ], + "x-ms-enum": { + "name": "BlobType", + "modelAsString": false + } + }, + "x-ms-copy-completion-time": { + "x-ms-client-name": "CopyCompletionTime", + "type": "string", + "format": "date-time-rfc1123", + "description": "Conclusion time of the last attempted Copy Blob operation where this blob was the destination blob. This value can specify the time of a completed, aborted, or failed copy attempt. This header does not appear if a copy is pending, if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List." + }, + "x-ms-copy-status-description": { + "x-ms-client-name": "CopyStatusDescription", + "type": "string", + "description": "Only appears when x-ms-copy-status is failed or pending. Describes the cause of the last fatal or non-fatal copy operation failure. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List" + }, + "x-ms-copy-id": { + "x-ms-client-name": "CopyId", + "type": "string", + "description": "String identifier for this copy operation. Use with Get Blob Properties to check the status of this copy operation, or pass to Abort Copy Blob to abort a pending copy." + }, + "x-ms-copy-progress": { + "x-ms-client-name": "CopyProgress", + "type": "string", + "description": "Contains the number of bytes copied and the total bytes in the source in the last attempted Copy Blob operation where this blob was the destination blob. Can show between 0 and Content-Length bytes copied. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List" + }, + "x-ms-copy-source": { + "x-ms-client-name": "CopySource", + "type": "string", + "description": "URL up to 2 KB in length that specifies the source blob or file used in the last attempted Copy Blob operation where this blob was the destination blob. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List." + }, + "x-ms-copy-status": { + "x-ms-client-name": "CopyStatus", + "description": "State of the copy operation identified by x-ms-copy-id.", + "type": "string", + "enum": [ + "pending", + "success", + "aborted", + "failed" + ], + "x-ms-enum": { + "name": "CopyStatusType", + "modelAsString": false + } + }, + "x-ms-lease-duration": { + "x-ms-client-name": "LeaseDuration", + "description": "When a blob is leased, specifies whether the lease is of infinite or fixed duration.", + "type": "string", + "enum": [ + "infinite", + "fixed" + ], + "x-ms-enum": { + "name": "LeaseDurationType", + "modelAsString": false + } + }, + "x-ms-lease-state": { + "x-ms-client-name": "LeaseState", + "description": "Lease state of the blob.", + "type": "string", + "enum": [ + "available", + "leased", + "expired", + "breaking", + "broken" + ], + "x-ms-enum": { + "name": "LeaseStateType", + "modelAsString": false + } + }, + "x-ms-lease-status": { + "x-ms-client-name": "LeaseStatus", + "description": "The current lease status of the blob.", + "type": "string", + "enum": [ + "locked", + "unlocked" + ], + "x-ms-enum": { + "name": "LeaseStatusType", + "modelAsString": false + } + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Accept-Ranges": { + "type": "string", + "description": "Indicates that the service supports requests for partial blob content." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + }, + "x-ms-blob-committed-block-count": { + "x-ms-client-name": "BlobCommittedBlockCount", + "type": "integer", + "description": "The number of committed blocks present in the blob. This header is returned only for append blobs." + }, + "x-ms-server-encrypted": { + "x-ms-client-name": "IsServerEncrypted", + "type": "boolean", + "description": "The value of this header is set to true if the blob data and application metadata are completely encrypted using the specified algorithm. Otherwise, the value is set to false (when the blob is unencrypted, or if only parts of the blob/application metadata are encrypted)." + }, + "x-ms-blob-content-md5": { + "x-ms-client-name": "BlobContentMD5", + "type": "string", + "format": "byte", + "description": "If the blob has a MD5 hash, and if request contains range header (Range or x-ms-range), this response header is returned with the value of the whole blob's MD5 value. This value may or may not be equal to the value returned in Content-MD5 header, with the latter calculated from the requested range" + } + }, + "schema": { + "type": "object", + "format": "file" + } + }, + "206": { + "description": "Returns the content of a specified range of the blob.", + "headers": { + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-meta": { + "type": "string", + "x-ms-client-name": "Metadata", + "x-ms-header-collection-prefix": "x-ms-meta-" + }, + "Content-Length": { + "type": "integer", + "format": "int64", + "description": "The number of bytes present in the response body." + }, + "Content-Type": { + "type": "string", + "description": "The media type of the body of the response. For Download Blob this is 'application/octet-stream'" + }, + "Content-Range": { + "type": "string", + "description": "Indicates the range of bytes returned in the event that the client requested a subset of the blob by setting the 'Range' request header." + }, + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Content-MD5": { + "type": "string", + "format": "byte", + "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity." + }, + "Content-Encoding": { + "type": "string", + "description": "This header returns the value that was specified for the Content-Encoding request header" + }, + "Cache-Control": { + "type": "string", + "description": "This header is returned if it was previously specified for the blob." + }, + "Content-Disposition": { + "type": "string", + "description": "This header returns the value that was specified for the 'x-ms-blob-content-disposition' header. The Content-Disposition response header field conveys additional information about how to process the response payload, and also can be used to attach additional metadata. For example, if set to attachment, it indicates that the user-agent should not display the response, but instead show a Save As dialog with a filename other than the blob name specified." + }, + "Content-Language": { + "type": "string", + "description": "This header returns the value that was specified for the Content-Language request header." + }, + "x-ms-blob-sequence-number": { + "x-ms-client-name": "BlobSequenceNumber", + "type": "integer", + "format": "int64", + "description": "The current sequence number for a page blob. This header is not returned for block blobs or append blobs" + }, + "x-ms-blob-type": { + "x-ms-client-name": "BlobType", + "description": "The blob's type.", + "type": "string", + "enum": [ + "BlockBlob", + "PageBlob", + "AppendBlob" + ], + "x-ms-enum": { + "name": "BlobType", + "modelAsString": false + } + }, + "x-ms-copy-completion-time": { + "x-ms-client-name": "CopyCompletionTime", + "type": "string", + "format": "date-time-rfc1123", + "description": "Conclusion time of the last attempted Copy Blob operation where this blob was the destination blob. This value can specify the time of a completed, aborted, or failed copy attempt. This header does not appear if a copy is pending, if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List." + }, + "x-ms-copy-status-description": { + "x-ms-client-name": "CopyStatusDescription", + "type": "string", + "description": "Only appears when x-ms-copy-status is failed or pending. Describes the cause of the last fatal or non-fatal copy operation failure. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List" + }, + "x-ms-copy-id": { + "x-ms-client-name": "CopyId", + "type": "string", + "description": "String identifier for this copy operation. Use with Get Blob Properties to check the status of this copy operation, or pass to Abort Copy Blob to abort a pending copy." + }, + "x-ms-copy-progress": { + "x-ms-client-name": "CopyProgress", + "type": "string", + "description": "Contains the number of bytes copied and the total bytes in the source in the last attempted Copy Blob operation where this blob was the destination blob. Can show between 0 and Content-Length bytes copied. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List" + }, + "x-ms-copy-source": { + "x-ms-client-name": "CopySource", + "type": "string", + "description": "URL up to 2 KB in length that specifies the source blob or file used in the last attempted Copy Blob operation where this blob was the destination blob. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List." + }, + "x-ms-copy-status": { + "x-ms-client-name": "CopyStatus", + "description": "State of the copy operation identified by x-ms-copy-id.", + "type": "string", + "enum": [ + "pending", + "success", + "aborted", + "failed" + ], + "x-ms-enum": { + "name": "CopyStatusType", + "modelAsString": false + } + }, + "x-ms-lease-duration": { + "x-ms-client-name": "LeaseDuration", + "description": "When a blob is leased, specifies whether the lease is of infinite or fixed duration.", + "type": "string", + "enum": [ + "infinite", + "fixed" + ], + "x-ms-enum": { + "name": "LeaseDurationType", + "modelAsString": false + } + }, + "x-ms-lease-state": { + "x-ms-client-name": "LeaseState", + "description": "Lease state of the blob.", + "type": "string", + "enum": [ + "available", + "leased", + "expired", + "breaking", + "broken" + ], + "x-ms-enum": { + "name": "LeaseStateType", + "modelAsString": false + } + }, + "x-ms-lease-status": { + "x-ms-client-name": "LeaseStatus", + "description": "The current lease status of the blob.", + "type": "string", + "enum": [ + "locked", + "unlocked" + ], + "x-ms-enum": { + "name": "LeaseStatusType", + "modelAsString": false + } + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Accept-Ranges": { + "type": "string", + "description": "Indicates that the service supports requests for partial blob content." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + }, + "x-ms-blob-committed-block-count": { + "x-ms-client-name": "BlobCommittedBlockCount", + "type": "integer", + "description": "The number of committed blocks present in the blob. This header is returned only for append blobs." + }, + "x-ms-server-encrypted": { + "x-ms-client-name": "IsServerEncrypted", + "type": "boolean", + "description": "The value of this header is set to true if the blob data and application metadata are completely encrypted using the specified algorithm. Otherwise, the value is set to false (when the blob is unencrypted, or if only parts of the blob/application metadata are encrypted)." + }, + "x-ms-blob-content-md5": { + "x-ms-client-name": "BlobContentMD5", + "type": "string", + "format": "byte", + "description": "If the blob has a MD5 hash, and if request contains range header (Range or x-ms-range), this response header is returned with the value of the whole blob's MD5 value. This value may or may not be equal to the value returned in Content-MD5 header, with the latter calculated from the requested range" + } + }, + "schema": { + "type": "object", + "format": "file" + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "head": { + "tags": [ + "blob" + ], + "operationId": "Blob_GetProperties", + "description": "The Get Properties operation returns all user-defined metadata, standard HTTP properties, and system properties for the blob. It does not return the content of the blob.", + "parameters": [ + { + "$ref": "#/parameters/Snapshot" + }, + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "Returns the properties of the blob.", + "headers": { + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the blob was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-creation-time": { + "x-ms-client-name": "CreationTime", + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the blob was created." + }, + "x-ms-meta": { + "type": "string", + "x-ms-client-name": "Metadata", + "x-ms-header-collection-prefix": "x-ms-meta-" + }, + "x-ms-blob-type": { + "x-ms-client-name": "BlobType", + "description": "The blob's type.", + "type": "string", + "enum": [ + "BlockBlob", + "PageBlob", + "AppendBlob" + ], + "x-ms-enum": { + "name": "BlobType", + "modelAsString": false + } + }, + "x-ms-copy-completion-time": { + "x-ms-client-name": "CopyCompletionTime", + "type": "string", + "format": "date-time-rfc1123", + "description": "Conclusion time of the last attempted Copy Blob operation where this blob was the destination blob. This value can specify the time of a completed, aborted, or failed copy attempt. This header does not appear if a copy is pending, if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List." + }, + "x-ms-copy-status-description": { + "x-ms-client-name": "CopyStatusDescription", + "type": "string", + "description": "Only appears when x-ms-copy-status is failed or pending. Describes the cause of the last fatal or non-fatal copy operation failure. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List" + }, + "x-ms-copy-id": { + "x-ms-client-name": "CopyId", + "type": "string", + "description": "String identifier for this copy operation. Use with Get Blob Properties to check the status of this copy operation, or pass to Abort Copy Blob to abort a pending copy." + }, + "x-ms-copy-progress": { + "x-ms-client-name": "CopyProgress", + "type": "string", + "description": "Contains the number of bytes copied and the total bytes in the source in the last attempted Copy Blob operation where this blob was the destination blob. Can show between 0 and Content-Length bytes copied. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List" + }, + "x-ms-copy-source": { + "x-ms-client-name": "CopySource", + "type": "string", + "description": "URL up to 2 KB in length that specifies the source blob or file used in the last attempted Copy Blob operation where this blob was the destination blob. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List." + }, + "x-ms-copy-status": { + "x-ms-client-name": "CopyStatus", + "description": "State of the copy operation identified by x-ms-copy-id.", + "type": "string", + "enum": [ + "pending", + "success", + "aborted", + "failed" + ], + "x-ms-enum": { + "name": "CopyStatusType", + "modelAsString": false + } + }, + "x-ms-incremental-copy": { + "x-ms-client-name": "IsIncrementalCopy", + "type": "boolean", + "description": "Included if the blob is incremental copy blob." + }, + "x-ms-copy-destination-snapshot": { + "x-ms-client-name": "DestinationSnapshot", + "type": "string", + "description": "Included if the blob is incremental copy blob or incremental copy snapshot, if x-ms-copy-status is success. Snapshot time of the last successful incremental copy snapshot for this blob." + }, + "x-ms-lease-duration": { + "x-ms-client-name": "LeaseDuration", + "description": "When a blob is leased, specifies whether the lease is of infinite or fixed duration.", + "type": "string", + "enum": [ + "infinite", + "fixed" + ], + "x-ms-enum": { + "name": "LeaseDurationType", + "modelAsString": false + } + }, + "x-ms-lease-state": { + "x-ms-client-name": "LeaseState", + "description": "Lease state of the blob.", + "type": "string", + "enum": [ + "available", + "leased", + "expired", + "breaking", + "broken" + ], + "x-ms-enum": { + "name": "LeaseStateType", + "modelAsString": false + } + }, + "x-ms-lease-status": { + "x-ms-client-name": "LeaseStatus", + "description": "The current lease status of the blob.", + "type": "string", + "enum": [ + "locked", + "unlocked" + ], + "x-ms-enum": { + "name": "LeaseStatusType", + "modelAsString": false + } + }, + "Content-Length": { + "type": "integer", + "format": "int64", + "description": "The number of bytes present in the response body." + }, + "Content-Type": { + "type": "string", + "description": "The content type specified for the blob. The default content type is 'application/octet-stream'" + }, + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Content-MD5": { + "type": "string", + "format": "byte", + "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity." + }, + "Content-Encoding": { + "type": "string", + "description": "This header returns the value that was specified for the Content-Encoding request header" + }, + "Content-Disposition": { + "type": "string", + "description": "This header returns the value that was specified for the 'x-ms-blob-content-disposition' header. The Content-Disposition response header field conveys additional information about how to process the response payload, and also can be used to attach additional metadata. For example, if set to attachment, it indicates that the user-agent should not display the response, but instead show a Save As dialog with a filename other than the blob name specified." + }, + "Content-Language": { + "type": "string", + "description": "This header returns the value that was specified for the Content-Language request header." + }, + "Cache-Control": { + "type": "string", + "description": "This header is returned if it was previously specified for the blob." + }, + "x-ms-blob-sequence-number": { + "x-ms-client-name": "BlobSequenceNumber", + "type": "integer", + "format": "int64", + "description": "The current sequence number for a page blob. This header is not returned for block blobs or append blobs" + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + }, + "Accept-Ranges": { + "type": "string", + "description": "Indicates that the service supports requests for partial blob content." + }, + "x-ms-blob-committed-block-count": { + "x-ms-client-name": "BlobCommittedBlockCount", + "type": "integer", + "description": "The number of committed blocks present in the blob. This header is returned only for append blobs." + }, + "x-ms-server-encrypted": { + "x-ms-client-name": "IsServerEncrypted", + "type": "boolean", + "description": "The value of this header is set to true if the blob data and application metadata are completely encrypted using the specified algorithm. Otherwise, the value is set to false (when the blob is unencrypted, or if only parts of the blob/application metadata are encrypted)." + }, + "x-ms-access-tier": { + "x-ms-client-name": "AccessTier", + "type": "string", + "description": "The tier of page blob on a premium storage account or tier of block blob on blob storage LRS accounts. For a list of allowed premium page blob tiers, see https://docs.microsoft.com/en-us/azure/virtual-machines/windows/premium-storage#features. For blob storage LRS accounts, valid values are Hot/Cool/Archive." + }, + "x-ms-access-tier-inferred": { + "x-ms-client-name": "AccessTierInferred", + "type": "boolean", + "description": "For page blobs on a premium storage account only. If the access tier is not explicitly set on the blob, the tier is inferred based on its content length and this header will be returned with true value." + }, + "x-ms-archive-status": { + "x-ms-client-name": "ArchiveStatus", + "type": "string", + "description": "For blob storage LRS accounts, valid values are rehydrate-pending-to-hot/rehydrate-pending-to-cool. If the blob is being rehydrated and is not complete then this header is returned indicating that rehydrate is pending and also tells the destination tier." + }, + "x-ms-access-tier-change-time": { + "x-ms-client-name": "AccessTierChangeTime", + "type": "string", + "format": "date-time-rfc1123", + "description": "The time the tier was changed on the object. This is only returned if the tier on the block blob was ever set." + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "delete": { + "tags": [ + "blob" + ], + "operationId": "Blob_Delete", + "description": "If the storage account's soft delete feature is disabled then, when a blob is deleted, it is permanently removed from the storage account. If the storage account's soft delete feature is enabled, then, when a blob is deleted, it is marked for deletion and becomes inaccessible immediately. However, the blob service retains the blob or snapshot for the number of days specified by the DeleteRetentionPolicy section of [Storage service properties] (Set-Blob-Service-Properties.md). After the specified number of days has passed, the blob's data is permanently removed from the storage account. Note that you continue to be charged for the soft-deleted blob's storage until it is permanently removed. Use the List Blobs API and specify the \"include=deleted\" query parameter to discover which blobs and snapshots have been soft deleted. You can then use the Undelete Blob API to restore a soft-deleted blob. All other operations on a soft-deleted blob or snapshot causes the service to return an HTTP status code of 404 (ResourceNotFound).", + "parameters": [ + { + "$ref": "#/parameters/Snapshot" + }, + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/DeleteSnapshots" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "202": { + "description": "The delete request was accepted and the blob will be deleted.", + "headers": { + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + } + }, + "/{containerName}/{blob}?PageBlob": { + "put": { + "tags": [ + "blob" + ], + "operationId": "PageBlob_Create", + "description": "The Create operation creates a new page blob.", + "consumes": [ + "application/octet-stream" + ], + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/ContentLength" + }, + { + "$ref": "#/parameters/BlobContentType" + }, + { + "$ref": "#/parameters/BlobContentEncoding" + }, + { + "$ref": "#/parameters/BlobContentLanguage" + }, + { + "$ref": "#/parameters/BlobContentMD5" + }, + { + "$ref": "#/parameters/BlobCacheControl" + }, + { + "$ref": "#/parameters/Metadata" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/BlobContentDisposition" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/BlobContentLengthRequired" + }, + { + "$ref": "#/parameters/BlobSequenceNumber" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "201": { + "description": "The blob was created.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "Content-MD5": { + "type": "string", + "format": "byte", + "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + }, + "x-ms-request-server-encrypted": { + "x-ms-client-name": "IsServerEncrypted", + "type": "boolean", + "description": "The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise." + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "x-ms-blob-type", + "x-ms-client-name": "blobType", + "in": "header", + "required": true, + "x-ms-parameter-location": "method", + "description": "Specifies the type of blob to create: block blob, page blob, or append blob.", + "type": "string", + "enum": [ + "PageBlob" + ], + "x-ms-enum": { + "name": "BlobType", + "modelAsString": false + } + } + ] + }, + "/{containerName}/{blob}?AppendBlob": { + "put": { + "tags": [ + "blob" + ], + "operationId": "AppendBlob_Create", + "description": "The Create Append Blob operation creates a new append blob.", + "consumes": [ + "application/octet-stream" + ], + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/ContentLength" + }, + { + "$ref": "#/parameters/BlobContentType" + }, + { + "$ref": "#/parameters/BlobContentEncoding" + }, + { + "$ref": "#/parameters/BlobContentLanguage" + }, + { + "$ref": "#/parameters/BlobContentMD5" + }, + { + "$ref": "#/parameters/BlobCacheControl" + }, + { + "$ref": "#/parameters/Metadata" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/BlobContentDisposition" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "201": { + "description": "The blob was created.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "Content-MD5": { + "type": "string", + "format": "byte", + "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + }, + "x-ms-request-server-encrypted": { + "x-ms-client-name": "IsServerEncrypted", + "type": "boolean", + "description": "The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise." + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "x-ms-blob-type", + "x-ms-client-name": "blobType", + "in": "header", + "required": true, + "x-ms-parameter-location": "method", + "description": "Specifies the type of blob to create: block blob, page blob, or append blob.", + "type": "string", + "enum": [ + "AppendBlob" + ], + "x-ms-enum": { + "name": "BlobType", + "modelAsString": false + } + } + ] + }, + "/{containerName}/{blob}?BlockBlob": { + "put": { + "tags": [ + "blob" + ], + "operationId": "BlockBlob_Upload", + "description": "The Upload Block Blob operation updates the content of an existing block blob. Updating an existing block blob overwrites any existing metadata on the blob. Partial updates are not supported with Put Blob; the content of the existing blob is overwritten with the content of the new blob. To perform a partial update of the content of a block blob, use the Put Block List operation.", + "consumes": [ + "application/octet-stream" + ], + "parameters": [ + { + "$ref": "#/parameters/Body" + }, + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/ContentLength" + }, + { + "$ref": "#/parameters/BlobContentType" + }, + { + "$ref": "#/parameters/BlobContentEncoding" + }, + { + "$ref": "#/parameters/BlobContentLanguage" + }, + { + "$ref": "#/parameters/BlobContentMD5" + }, + { + "$ref": "#/parameters/BlobCacheControl" + }, + { + "$ref": "#/parameters/Metadata" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/BlobContentDisposition" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "201": { + "description": "The blob was updated.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "Content-MD5": { + "type": "string", + "format": "byte", + "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + }, + "x-ms-request-server-encrypted": { + "x-ms-client-name": "IsServerEncrypted", + "type": "boolean", + "description": "The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise." + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "x-ms-blob-type", + "x-ms-client-name": "blobType", + "in": "header", + "required": true, + "x-ms-parameter-location": "method", + "description": "Specifies the type of blob to create: block blob, page blob, or append blob.", + "type": "string", + "enum": [ + "BlockBlob" + ], + "x-ms-enum": { + "name": "BlobType", + "modelAsString": false + } + } + ] + }, + "/{containerName}/{blob}?comp=undelete": { + "put": { + "tags": [ + "blob" + ], + "operationId": "Blob_Undelete", + "description": "Undelete a blob that was previously soft deleted", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "The blob was undeleted successfully.", + "headers": { + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated." + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "undelete" + ] + } + ] + }, + "/{containerName}/{blob}?comp=properties&SetHTTPHeaders": { + "put": { + "tags": [ + "blob" + ], + "operationId": "Blob_SetHTTPHeaders", + "description": "The Set HTTP Headers operation sets system properties on the blob", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/BlobCacheControl" + }, + { + "$ref": "#/parameters/BlobContentType" + }, + { + "$ref": "#/parameters/BlobContentMD5" + }, + { + "$ref": "#/parameters/BlobContentEncoding" + }, + { + "$ref": "#/parameters/BlobContentLanguage" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/BlobContentDisposition" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "The properties were set successfully.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-blob-sequence-number": { + "x-ms-client-name": "BlobSequenceNumber", + "type": "integer", + "format": "int64", + "description": "The current sequence number for a page blob. This header is not returned for block blobs or append blobs" + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "properties" + ] + } + ] + }, + "/{containerName}/{blob}?comp=metadata": { + "put": { + "tags": [ + "blob" + ], + "operationId": "Blob_SetMetadata", + "description": "The Set Blob Metadata operation sets user-defined metadata for the specified blob as one or more name-value pairs", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/Metadata" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "The metadata was set successfully.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + }, + "x-ms-request-server-encrypted": { + "x-ms-client-name": "IsServerEncrypted", + "type": "boolean", + "description": "The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise." + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "metadata" + ] + } + ] + }, + "/{containerName}/{blob}?comp=lease&acquire": { + "put": { + "tags": [ + "blob" + ], + "operationId": "Blob_AcquireLease", + "description": "[Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete operations", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/LeaseDuration" + }, + { + "$ref": "#/parameters/ProposedLeaseIdOptional" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "201": { + "description": "The Acquire operation completed successfully.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the blob was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-lease-id": { + "x-ms-client-name": "LeaseId", + "type": "string", + "description": "Uniquely identifies a blobs's lease" + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "lease" + ] + }, + { + "name": "x-ms-lease-action", + "x-ms-client-name": "action", + "in": "header", + "required": true, + "type": "string", + "enum": [ + "acquire" + ], + "x-ms-enum": { + "name": "LeaseAction", + "modelAsString": false + }, + "x-ms-parameter-location": "method", + "description": "Describes what lease action to take." + } + ] + }, + "/{containerName}/{blob}?comp=lease&release": { + "put": { + "tags": [ + "blob" + ], + "operationId": "Blob_ReleaseLease", + "description": "[Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete operations", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/LeaseIdRequired" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "The Release operation completed successfully.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the blob was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "lease" + ] + }, + { + "name": "x-ms-lease-action", + "x-ms-client-name": "action", + "in": "header", + "required": true, + "type": "string", + "enum": [ + "release" + ], + "x-ms-enum": { + "name": "LeaseAction", + "modelAsString": false + }, + "x-ms-parameter-location": "method", + "description": "Describes what lease action to take." + } + ] + }, + "/{containerName}/{blob}?comp=lease&renew": { + "put": { + "tags": [ + "blob" + ], + "operationId": "Blob_RenewLease", + "description": "[Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete operations", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/LeaseIdRequired" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "The Renew operation completed successfully.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the blob was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-lease-id": { + "x-ms-client-name": "LeaseId", + "type": "string", + "description": "Uniquely identifies a blobs's lease" + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "lease" + ] + }, + { + "name": "x-ms-lease-action", + "x-ms-client-name": "action", + "in": "header", + "required": true, + "type": "string", + "enum": [ + "renew" + ], + "x-ms-enum": { + "name": "LeaseAction", + "modelAsString": false + }, + "x-ms-parameter-location": "method", + "description": "Describes what lease action to take." + } + ] + }, + "/{containerName}/{blob}?comp=lease&change": { + "put": { + "tags": [ + "blob" + ], + "operationId": "Blob_ChangeLease", + "description": "[Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete operations", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/LeaseIdRequired" + }, + { + "$ref": "#/parameters/ProposedLeaseIdRequired" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "The Change operation completed successfully.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the blob was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-lease-id": { + "x-ms-client-name": "LeaseId", + "type": "string", + "description": "Uniquely identifies a blobs's lease" + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "lease" + ] + }, + { + "name": "x-ms-lease-action", + "x-ms-client-name": "action", + "in": "header", + "required": true, + "type": "string", + "enum": [ + "change" + ], + "x-ms-enum": { + "name": "LeaseAction", + "modelAsString": false + }, + "x-ms-parameter-location": "method", + "description": "Describes what lease action to take." + } + ] + }, + "/{containerName}/{blob}?comp=lease&break": { + "put": { + "tags": [ + "blob" + ], + "operationId": "Blob_BreakLease", + "description": "[Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete operations", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/LeaseBreakPeriod" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "202": { + "description": "The Break operation completed successfully.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the blob was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-lease-time": { + "x-ms-client-name": "LeaseTime", + "type": "integer", + "description": "Approximate time remaining in the lease period, in seconds." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "lease" + ] + }, + { + "name": "x-ms-lease-action", + "x-ms-client-name": "action", + "in": "header", + "required": true, + "type": "string", + "enum": [ + "break" + ], + "x-ms-enum": { + "name": "LeaseAction", + "modelAsString": false + }, + "x-ms-parameter-location": "method", + "description": "Describes what lease action to take." + } + ] + }, + "/{containerName}/{blob}?comp=snapshot": { + "put": { + "tags": [ + "blob" + ], + "operationId": "Blob_CreateSnapshot", + "description": "The Create Snapshot operation creates a read-only snapshot of a blob", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/Metadata" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "201": { + "description": "The snaptshot was taken successfully.", + "headers": { + "x-ms-snapshot": { + "x-ms-client-name": "Snapshot", + "type": "string", + "description": "Uniquely identifies the snapshot and indicates the snapshot version. It may be used in subsequent requests to access the snapshot" + }, + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "snapshot" + ] + } + ] + }, + "/{containerName}/{blob}?comp=copy": { + "put": { + "tags": [ + "blob" + ], + "operationId": "Blob_StartCopyFromURL", + "description": "The Start Copy From URL operation copies a blob or an internet resource to a new blob.", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/Metadata" + }, + { + "$ref": "#/parameters/SourceIfModifiedSince" + }, + { + "$ref": "#/parameters/SourceIfUnmodifiedSince" + }, + { + "$ref": "#/parameters/SourceIfMatch" + }, + { + "$ref": "#/parameters/SourceIfNoneMatch" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/CopySource" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "202": { + "description": "The copy blob has been accepted with the specified copy status.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + }, + "x-ms-copy-id": { + "x-ms-client-name": "CopyId", + "type": "string", + "description": "String identifier for this copy operation. Use with Get Blob Properties to check the status of this copy operation, or pass to Abort Copy Blob to abort a pending copy." + }, + "x-ms-copy-status": { + "x-ms-client-name": "CopyStatus", + "description": "State of the copy operation identified by x-ms-copy-id.", + "type": "string", + "enum": [ + "pending", + "success", + "aborted", + "failed" + ], + "x-ms-enum": { + "name": "CopyStatusType", + "modelAsString": false + } + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [] + }, + "/{containerName}/{blob}?comp=copy&sync": { + "put": { + "tags": [ + "blob" + ], + "operationId": "Blob_CopyFromURL", + "description": "The Copy From URL operation copies a blob or an internet resource to a new blob. It will not return a response until the copy is complete.", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/Metadata" + }, + { + "$ref": "#/parameters/SourceIfModifiedSince" + }, + { + "$ref": "#/parameters/SourceIfUnmodifiedSince" + }, + { + "$ref": "#/parameters/SourceIfMatch" + }, + { + "$ref": "#/parameters/SourceIfNoneMatch" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/CopySource" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "202": { + "description": "The copy has completed.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + }, + "x-ms-copy-id": { + "x-ms-client-name": "CopyId", + "type": "string", + "description": "String identifier for this copy operation." + }, + "x-ms-copy-status": { + "x-ms-client-name": "CopyStatus", + "description": "State of the copy operation identified by x-ms-copy-id.", + "type": "string", + "enum": [ + "success" + ], + "x-ms-enum": { + "name": "SyncCopyStatusType", + "modelAsString": false + } + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "x-ms-requires-sync", + "in": "header", + "required": true, + "type": "string", + "enum": [ + "true" + ] + } + ] + }, + "/{containerName}/{blob}?comp=copy©id={CopyId}": { + "put": { + "tags": [ + "blob" + ], + "operationId": "Blob_AbortCopyFromURL", + "description": "The Abort Copy From URL operation aborts a pending Copy From URL operation, and leaves a destination blob with zero length and full metadata.", + "parameters": [ + { + "$ref": "#/parameters/CopyId" + }, + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "204": { + "description": "The delete request was accepted and the blob will be deleted.", + "headers": { + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "copy" + ] + }, + { + "name": "x-ms-copy-action", + "x-ms-client-name": "copyActionAbortConstant", + "in": "header", + "required": true, + "type": "string", + "enum": [ + "abort" + ], + "x-ms-parameter-location": "method" + } + ] + }, + "/{containerName}/{blob}?comp=tier": { + "put": { + "tags": [ + "blobs" + ], + "operationId": "Blob_SetTier", + "description": "The Set Tier operation sets the tier on a blob. The operation is allowed on a page blob in a premium storage account and on a block blob in a blob storage account (locally redundant storage only). A premium page blob's tier determines the allowed size, IOPS, and bandwidth of the blob. A block blob's tier determines Hot/Cool/Archive storage type. This operation does not update the blob's ETag.", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/AccessTier" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + } + ], + "responses": { + "200": { + "description": "The new tier will take effect immediately.", + "headers": { + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and newer." + } + } + }, + "202": { + "description": "The transition to the new tier is pending.", + "headers": { + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and newer." + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "tier" + ] + } + ] + }, + "/{containerName}/{blob}?restype=account&comp=properties": { + "get": { + "tags": [ + "blob" + ], + "operationId": "Blob_GetAccountInfo", + "description": "Returns the sku name and account kind ", + "parameters": [ + { + "$ref": "#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Success (OK)", + "headers": { + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + }, + "x-ms-sku-name": { + "x-ms-client-name": "SkuName", + "type": "string", + "enum": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS", + "Standard_ZRS", + "Premium_LRS" + ], + "x-ms-enum": { + "name": "SkuName", + "modelAsString": false + }, + "description": "Identifies the sku name of the account" + }, + "x-ms-account-kind": { + "x-ms-client-name": "AccountKind", + "type": "string", + "enum": [ + "Storage", + "BlobStorage", + "StorageV2" + ], + "x-ms-enum": { + "name": "AccountKind", + "modelAsString": false + }, + "description": "Identifies the account kind" + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "restype", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "account" + ] + }, + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "properties" + ] + } + ] + }, + "/{containerName}/{blob}?comp=block": { + "put": { + "tags": [ + "blockblob" + ], + "operationId": "BlockBlob_StageBlock", + "description": "The Stage Block operation creates a new block to be committed as part of a blob", + "consumes": [ + "application/octet-stream" + ], + "parameters": [ + { + "$ref": "#/parameters/BlockId" + }, + { + "$ref": "#/parameters/ContentLength" + }, + { + "$ref": "#/parameters/ContentMD5" + }, + { + "$ref": "#/parameters/Body" + }, + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "201": { + "description": "The block was created.", + "headers": { + "Content-MD5": { + "type": "string", + "format": "byte", + "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + }, + "x-ms-request-server-encrypted": { + "x-ms-client-name": "IsServerEncrypted", + "type": "boolean", + "description": "The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise." + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "block" + ] + } + ] + }, + "/{containerName}/{blob}?comp=block&fromURL": { + "put": { + "tags": [ + "blockblob" + ], + "operationId": "BlockBlob_StageBlockFromURL", + "description": "The Stage Block operation creates a new block to be committed as part of a blob where the contents are read from a URL.", + "parameters": [ + { + "$ref": "#/parameters/BlockId" + }, + { + "$ref": "#/parameters/ContentLength" + }, + { + "$ref": "#/parameters/SourceUrl" + }, + { + "$ref": "#/parameters/SourceRange" + }, + { + "$ref": "#/parameters/SourceContentMD5" + }, + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/SourceIfModifiedSince" + }, + { + "$ref": "#/parameters/SourceIfUnmodifiedSince" + }, + { + "$ref": "#/parameters/SourceIfMatch" + }, + { + "$ref": "#/parameters/SourceIfNoneMatch" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "201": { + "description": "The block was created.", + "headers": { + "Content-MD5": { + "type": "string", + "format": "byte", + "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + }, + "x-ms-request-server-encrypted": { + "x-ms-client-name": "IsServerEncrypted", + "type": "boolean", + "description": "The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise." + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "block" + ] + } + ] + }, + "/{containerName}/{blob}?comp=blocklist": { + "put": { + "tags": [ + "blockblob" + ], + "operationId": "BlockBlob_CommitBlockList", + "description": "The Commit Block List operation writes a blob by specifying the list of block IDs that make up the blob. In order to be written as part of a blob, a block must have been successfully written to the server in a prior Put Block operation. You can call Put Block List to update a blob by uploading only those blocks that have changed, then committing the new and existing blocks together. You can do this by specifying whether to commit a block from the committed block list or from the uncommitted block list, or to commit the most recently uploaded version of the block, whichever list it may belong to.", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/BlobCacheControl" + }, + { + "$ref": "#/parameters/BlobContentType" + }, + { + "$ref": "#/parameters/BlobContentEncoding" + }, + { + "$ref": "#/parameters/BlobContentLanguage" + }, + { + "$ref": "#/parameters/BlobContentMD5" + }, + { + "$ref": "#/parameters/Metadata" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/BlobContentDisposition" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "name": "blocks", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/BlockLookupList" + } + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "201": { + "description": "The block list was recorded.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "Content-MD5": { + "type": "string", + "format": "byte", + "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + }, + "x-ms-request-server-encrypted": { + "x-ms-client-name": "IsServerEncrypted", + "type": "boolean", + "description": "The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise." + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "get": { + "tags": [ + "blockblob" + ], + "operationId": "BlockBlob_GetBlockList", + "description": "The Get Block List operation retrieves the list of blocks that have been uploaded as part of a block blob", + "parameters": [ + { + "$ref": "#/parameters/Snapshot" + }, + { + "$ref": "#/parameters/BlockListType" + }, + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "The page range was written.", + "headers": { + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Content-Type": { + "type": "string", + "description": "The media type of the body of the response. For Get Block List this is 'application/xml'" + }, + "x-ms-blob-content-length": { + "x-ms-client-name": "BlobContentLength", + "type": "integer", + "format": "int64", + "description": "The size of the blob in bytes." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + }, + "schema": { + "$ref": "#/definitions/BlockList" + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "blocklist" + ] + } + ] + }, + "/{containerName}/{blob}?comp=page&update": { + "put": { + "tags": [ + "pageblob" + ], + "operationId": "PageBlob_UploadPages", + "description": "The Upload Pages operation writes a range of pages to a page blob", + "consumes": [ + "application/octet-stream" + ], + "parameters": [ + { + "$ref": "#/parameters/Body" + }, + { + "$ref": "#/parameters/ContentLength" + }, + { + "$ref": "#/parameters/ContentMD5" + }, + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/Range" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/IfSequenceNumberLessThanOrEqualTo" + }, + { + "$ref": "#/parameters/IfSequenceNumberLessThan" + }, + { + "$ref": "#/parameters/IfSequenceNumberEqualTo" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "201": { + "description": "The page range was written.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "Content-MD5": { + "type": "string", + "format": "byte", + "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity." + }, + "x-ms-blob-sequence-number": { + "x-ms-client-name": "BlobSequenceNumber", + "type": "integer", + "format": "int64", + "description": "The current sequence number for the page blob." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + }, + "x-ms-request-server-encrypted": { + "x-ms-client-name": "IsServerEncrypted", + "type": "boolean", + "description": "The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise." + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "page" + ] + }, + { + "name": "x-ms-page-write", + "x-ms-client-name": "pageWrite", + "in": "header", + "required": true, + "x-ms-parameter-location": "method", + "description": "Required. You may specify one of the following options:\n - Update: Writes the bytes specified by the request body into the specified range. The Range and Content-Length headers must match to perform the update.\n - Clear: Clears the specified range and releases the space used in storage for that range. To clear a range, set the Content-Length header to zero, and the Range header to a value that indicates the range to clear, up to maximum blob size.", + "type": "string", + "enum": [ + "update" + ], + "x-ms-enum": { + "name": "PageWriteType", + "modelAsString": false + } + } + ] + }, + "/{containerName}/{blob}?comp=page&clear": { + "put": { + "tags": [ + "pageblob" + ], + "operationId": "PageBlob_ClearPages", + "description": "The Clear Pages operation clears a set of pages from a page blob", + "consumes": [ + "application/octet-stream" + ], + "parameters": [ + { + "$ref": "#/parameters/ContentLength" + }, + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/Range" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/IfSequenceNumberLessThanOrEqualTo" + }, + { + "$ref": "#/parameters/IfSequenceNumberLessThan" + }, + { + "$ref": "#/parameters/IfSequenceNumberEqualTo" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "201": { + "description": "The page range was cleared.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "Content-MD5": { + "type": "string", + "format": "byte", + "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity." + }, + "x-ms-blob-sequence-number": { + "x-ms-client-name": "BlobSequenceNumber", + "type": "integer", + "format": "int64", + "description": "The current sequence number for the page blob." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "page" + ] + }, + { + "name": "x-ms-page-write", + "x-ms-client-name": "pageWrite", + "in": "header", + "required": true, + "x-ms-parameter-location": "method", + "description": "Required. You may specify one of the following options:\n - Update: Writes the bytes specified by the request body into the specified range. The Range and Content-Length headers must match to perform the update.\n - Clear: Clears the specified range and releases the space used in storage for that range. To clear a range, set the Content-Length header to zero, and the Range header to a value that indicates the range to clear, up to maximum blob size.", + "type": "string", + "enum": [ + "clear" + ], + "x-ms-enum": { + "name": "PageWriteType", + "modelAsString": false + } + } + ] + }, + "/{containerName}/{blob}?comp=page&update&fromUrl": { + "put": { + "tags": [ + "pageblob" + ], + "operationId": "PageBlob_UploadPagesFromURL", + "description": "The Upload Pages operation writes a range of pages to a page blob where the contents are read from a URL", + "consumes": [ + "application/octet-stream" + ], + "parameters": [ + { + "$ref": "#/parameters/SourceUrl" + }, + { + "$ref": "#/parameters/SourceRangeRequiredPutPageFromUrl" + }, + { + "$ref": "#/parameters/SourceContentMD5" + }, + { + "$ref": "#/parameters/ContentLength" + }, + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/RangeRequiredPutPageFromUrl" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/IfSequenceNumberLessThanOrEqualTo" + }, + { + "$ref": "#/parameters/IfSequenceNumberLessThan" + }, + { + "$ref": "#/parameters/IfSequenceNumberEqualTo" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/SourceIfModifiedSince" + }, + { + "$ref": "#/parameters/SourceIfUnmodifiedSince" + }, + { + "$ref": "#/parameters/SourceIfMatch" + }, + { + "$ref": "#/parameters/SourceIfNoneMatch" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "201": { + "description": "The page range was written.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "Content-MD5": { + "type": "string", + "format": "byte", + "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity." + }, + "x-ms-blob-sequence-number": { + "x-ms-client-name": "BlobSequenceNumber", + "type": "integer", + "format": "int64", + "description": "The current sequence number for the page blob." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + }, + "x-ms-request-server-encrypted": { + "x-ms-client-name": "IsServerEncrypted", + "type": "boolean", + "description": "The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise." + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "page" + ] + }, + { + "name": "x-ms-page-write", + "x-ms-client-name": "pageWrite", + "in": "header", + "required": true, + "x-ms-parameter-location": "method", + "description": "Required. You may specify one of the following options:\n - Update: Writes the bytes specified by the request body into the specified range. The Range and Content-Length headers must match to perform the update.\n - Clear: Clears the specified range and releases the space used in storage for that range. To clear a range, set the Content-Length header to zero, and the Range header to a value that indicates the range to clear, up to maximum blob size.", + "type": "string", + "enum": [ + "update" + ], + "x-ms-enum": { + "name": "PageWriteType", + "modelAsString": false + } + } + ] + }, + "/{containerName}/{blob}?comp=pagelist": { + "get": { + "tags": [ + "pageblob" + ], + "operationId": "PageBlob_GetPageRanges", + "description": "The Get Page Ranges operation returns the list of valid page ranges for a page blob or snapshot of a page blob", + "parameters": [ + { + "$ref": "#/parameters/Snapshot" + }, + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/Range" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "Information on the page blob was found.", + "headers": { + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "x-ms-blob-content-length": { + "x-ms-client-name": "BlobContentLength", + "type": "integer", + "format": "int64", + "description": "The size of the blob in bytes." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + }, + "schema": { + "$ref": "#/definitions/PageList" + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "pagelist" + ] + } + ] + }, + "/{containerName}/{blob}?comp=pagelist&diff": { + "get": { + "tags": [ + "pageblob" + ], + "operationId": "PageBlob_GetPageRangesDiff", + "description": "The Get Page Ranges Diff operation returns the list of valid page ranges for a page blob that were changed between target blob and previous snapshot.", + "parameters": [ + { + "$ref": "#/parameters/Snapshot" + }, + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/PrevSnapshot" + }, + { + "$ref": "#/parameters/Range" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "Information on the page blob was found.", + "headers": { + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "x-ms-blob-content-length": { + "x-ms-client-name": "BlobContentLength", + "type": "integer", + "format": "int64", + "description": "The size of the blob in bytes." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + }, + "schema": { + "$ref": "#/definitions/PageList" + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "pagelist" + ] + } + ] + }, + "/{containerName}/{blob}?comp=properties&Resize": { + "put": { + "tags": [ + "pageblob" + ], + "operationId": "PageBlob_Resize", + "description": "Resize the Blob", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/BlobContentLengthRequired" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "The Blob was resized successfully", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-blob-sequence-number": { + "x-ms-client-name": "BlobSequenceNumber", + "type": "integer", + "format": "int64", + "description": "The current sequence number for a page blob. This header is not returned for block blobs or append blobs" + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "properties" + ] + } + ] + }, + "/{containerName}/{blob}?comp=properties&UpdateSequenceNumber": { + "put": { + "tags": [ + "pageblob" + ], + "operationId": "PageBlob_UpdateSequenceNumber", + "description": "Update the sequence number of the blob", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/SequenceNumberAction" + }, + { + "$ref": "#/parameters/BlobSequenceNumber" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "200": { + "description": "The sequence numbers were updated successfully.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-blob-sequence-number": { + "x-ms-client-name": "BlobSequenceNumber", + "type": "integer", + "format": "int64", + "description": "The current sequence number for a page blob. This header is not returned for block blobs or append blobs" + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "properties" + ] + } + ] + }, + "/{containerName}/{blob}?comp=incrementalcopy": { + "put": { + "tags": [ + "pageblob" + ], + "operationId": "PageBlob_CopyIncremental", + "description": "The Copy Incremental operation copies a snapshot of the source page blob to a destination page blob. The snapshot is copied such that only the differential changes between the previously copied snapshot are transferred to the destination. The copied snapshots are complete copies of the original snapshot and can be read or copied from as usual. This API is supported since REST version 2016-05-31.", + "parameters": [ + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/CopySource" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "202": { + "description": "The blob was copied.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + }, + "x-ms-copy-id": { + "x-ms-client-name": "CopyId", + "type": "string", + "description": "String identifier for this copy operation. Use with Get Blob Properties to check the status of this copy operation, or pass to Abort Copy Blob to abort a pending copy." + }, + "x-ms-copy-status": { + "x-ms-client-name": "CopyStatus", + "description": "State of the copy operation identified by x-ms-copy-id.", + "type": "string", + "enum": [ + "pending", + "success", + "aborted", + "failed" + ], + "x-ms-enum": { + "name": "CopyStatusType", + "modelAsString": false + } + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "incrementalcopy" + ] + } + ] + }, + "/{containerName}/{blob}?comp=appendblock": { + "put": { + "tags": [ + "appendblob" + ], + "consumes": [ + "application/octet-stream" + ], + "operationId": "AppendBlob_AppendBlock", + "description": "The Append Block operation commits a new block of data to the end of an existing append blob. The Append Block operation is permitted only if the blob was created with x-ms-blob-type set to AppendBlob. Append Block is supported only on version 2015-02-21 version or later.", + "parameters": [ + { + "$ref": "#/parameters/Body" + }, + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/ContentLength" + }, + { + "$ref": "#/parameters/ContentMD5" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/BlobConditionMaxSize" + }, + { + "$ref": "#/parameters/BlobConditionAppendPos" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "201": { + "description": "The block was created.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "Content-MD5": { + "type": "string", + "format": "byte", + "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + }, + "x-ms-blob-append-offset": { + "x-ms-client-name": "BlobAppendOffset", + "type": "string", + "description": "This response header is returned only for append operations. It returns the offset at which the block was committed, in bytes." + }, + "x-ms-blob-committed-block-count": { + "x-ms-client-name": "BlobCommittedBlockCount", + "type": "integer", + "description": "The number of committed blocks present in the blob. This header is returned only for append blobs." + }, + "x-ms-request-server-encrypted": { + "x-ms-client-name": "IsServerEncrypted", + "type": "boolean", + "description": "The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise." + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "appendblock" + ] + } + ] + }, + "/{containerName}/{blob}?comp=appendblock&fromUrl": { + "put": { + "tags": [ + "appendblob" + ], + "operationId": "AppendBlob_AppendBlockFromUrl", + "description": "The Append Block operation commits a new block of data to the end of an existing append blob where the contents are read from a source url. The Append Block operation is permitted only if the blob was created with x-ms-blob-type set to AppendBlob. Append Block is supported only on version 2015-02-21 version or later.", + "parameters": [ + { + "$ref": "#/parameters/SourceUrl" + }, + { + "$ref": "#/parameters/SourceRange" + }, + { + "$ref": "#/parameters/SourceContentMD5" + }, + { + "$ref": "#/parameters/Timeout" + }, + { + "$ref": "#/parameters/ContentLength" + }, + { + "$ref": "#/parameters/LeaseIdOptional" + }, + { + "$ref": "#/parameters/BlobConditionMaxSize" + }, + { + "$ref": "#/parameters/BlobConditionAppendPos" + }, + { + "$ref": "#/parameters/IfModifiedSince" + }, + { + "$ref": "#/parameters/IfUnmodifiedSince" + }, + { + "$ref": "#/parameters/IfMatch" + }, + { + "$ref": "#/parameters/IfNoneMatch" + }, + { + "$ref": "#/parameters/SourceIfModifiedSince" + }, + { + "$ref": "#/parameters/SourceIfUnmodifiedSince" + }, + { + "$ref": "#/parameters/SourceIfMatch" + }, + { + "$ref": "#/parameters/SourceIfNoneMatch" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ClientRequestId" + } + ], + "responses": { + "201": { + "description": "The block was created.", + "headers": { + "ETag": { + "type": "string", + "format": "etag", + "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes." + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123", + "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob." + }, + "Content-MD5": { + "type": "string", + "format": "byte", + "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity." + }, + "x-ms-request-id": { + "x-ms-client-name": "RequestId", + "type": "string", + "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request." + }, + "x-ms-version": { + "x-ms-client-name": "Version", + "type": "string", + "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above." + }, + "Date": { + "type": "string", + "format": "date-time-rfc1123", + "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated" + }, + "x-ms-blob-append-offset": { + "x-ms-client-name": "BlobAppendOffset", + "type": "string", + "description": "This response header is returned only for append operations. It returns the offset at which the block was committed, in bytes." + }, + "x-ms-blob-committed-block-count": { + "x-ms-client-name": "BlobCommittedBlockCount", + "type": "integer", + "description": "The number of committed blocks present in the blob. This header is returned only for append blobs." + } + } + }, + "default": { + "description": "Failure", + "headers": { + "x-ms-error-code": { + "x-ms-client-name": "ErrorCode", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/StorageError" + } + } + } + }, + "parameters": [ + { + "name": "comp", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "appendblock" + ] + } + ] + } + }, + "definitions": { + "KeyInfo": { + "type": "object", + "required": [ + "Start", + "Expiry" + ], + "description": "Key information", + "properties": { + "Start": { + "description": "The date-time the key is active in ISO 8601 UTC time", + "type": "string" + }, + "Expiry": { + "description": "The date-time the key expires in ISO 8601 UTC time", + "type": "string" + } + } + }, + "UserDelegationKey": { + "type": "object", + "required": [ + "SignedOid", + "SignedTid", + "SignedStart", + "SignedExpiry", + "SignedService", + "SignedVersion", + "Value" + ], + "description": "A user delegation key", + "properties": { + "SignedOid": { + "description": "The Azure Active Directory object ID in GUID format.", + "type": "string" + }, + "SignedTid": { + "description": "The Azure Active Directory tenant ID in GUID format", + "type": "string" + }, + "SignedStart": { + "description": "The date-time the key is active", + "type": "string", + "format": "date-time" + }, + "SignedExpiry": { + "description": "The date-time the key expires", + "type": "string", + "format": "date-time" + }, + "SignedService": { + "description": "Abbreviation of the Azure Storage service that accepts the key", + "type": "string" + }, + "SignedVersion": { + "description": "The service version that created the key", + "type": "string" + }, + "Value": { + "description": "The key as a base64 string", + "type": "string" + } + } + }, + "PublicAccessType": { + "type": "string", + "enum": [ + "container", + "blob" + ], + "x-ms-enum": { + "name": "PublicAccessType", + "modelAsString": true + } + }, + "CopyStatus": { + "type": "string", + "enum": [ + "pending", + "success", + "aborted", + "failed" + ], + "x-ms-enum": { + "name": "CopyStatusType", + "modelAsString": false + } + }, + "LeaseDuration": { + "type": "string", + "enum": [ + "infinite", + "fixed" + ], + "x-ms-enum": { + "name": "LeaseDurationType", + "modelAsString": false + } + }, + "LeaseState": { + "type": "string", + "enum": [ + "available", + "leased", + "expired", + "breaking", + "broken" + ], + "x-ms-enum": { + "name": "LeaseStateType", + "modelAsString": false + } + }, + "LeaseStatus": { + "type": "string", + "enum": [ + "locked", + "unlocked" + ], + "x-ms-enum": { + "name": "LeaseStatusType", + "modelAsString": false + } + }, + "StorageError": { + "type": "object", + "properties": { + "Code": { + "type": "string" + }, + "Message": { + "type": "string" + } + } + }, + "AccessPolicy": { + "type": "object", + "required": [ + "Start", + "Expiry", + "Permission" + ], + "description": "An Access policy", + "properties": { + "Start": { + "description": "the date-time the policy is active", + "type": "string", + "format": "date-time" + }, + "Expiry": { + "description": "the date-time the policy expires", + "type": "string", + "format": "date-time" + }, + "Permission": { + "description": "the permissions for the acl policy", + "type": "string" + } + } + }, + "AccessTier": { + "type": "string", + "enum": [ + "P4", + "P6", + "P10", + "P20", + "P30", + "P40", + "P50", + "Hot", + "Cool", + "Archive" + ], + "x-ms-enum": { + "name": "AccessTier", + "modelAsString": true + } + }, + "ArchiveStatus": { + "type": "string", + "enum": [ + "rehydrate-pending-to-hot", + "rehydrate-pending-to-cool" + ], + "x-ms-enum": { + "name": "ArchiveStatus", + "modelAsString": true + } + }, + "BlobItem": { + "xml": { + "name": "Blob" + }, + "description": "An Azure Storage blob", + "type": "object", + "required": [ + "Name", + "Deleted", + "Snapshot", + "Properties" + ], + "properties": { + "Name": { + "type": "string" + }, + "Deleted": { + "type": "boolean" + }, + "Snapshot": { + "type": "string" + }, + "Properties": { + "$ref": "#/definitions/BlobProperties" + }, + "Metadata": { + "$ref": "#/definitions/Metadata" + } + } + }, + "BlobProperties": { + "xml": { + "name": "Properties" + }, + "description": "Properties of a blob", + "type": "object", + "required": [ + "Etag", + "Last-Modified" + ], + "properties": { + "Creation-Time": { + "type": "string", + "format": "date-time-rfc1123" + }, + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123" + }, + "Etag": { + "type": "string", + "format": "etag" + }, + "Content-Length": { + "type": "integer", + "format": "int64", + "description": "Size in bytes" + }, + "Content-Type": { + "type": "string" + }, + "Content-Encoding": { + "type": "string" + }, + "Content-Language": { + "type": "string" + }, + "Content-MD5": { + "type": "string", + "format": "byte" + }, + "Content-Disposition": { + "type": "string" + }, + "Cache-Control": { + "type": "string" + }, + "x-ms-blob-sequence-number": { + "x-ms-client-name": "blobSequenceNumber", + "type": "integer", + "format": "int64" + }, + "BlobType": { + "type": "string", + "enum": [ + "BlockBlob", + "PageBlob", + "AppendBlob" + ], + "x-ms-enum": { + "name": "BlobType", + "modelAsString": false + } + }, + "LeaseStatus": { + "$ref": "#/definitions/LeaseStatus" + }, + "LeaseState": { + "$ref": "#/definitions/LeaseState" + }, + "LeaseDuration": { + "$ref": "#/definitions/LeaseDuration" + }, + "CopyId": { + "type": "string" + }, + "CopyStatus": { + "$ref": "#/definitions/CopyStatus" + }, + "CopySource": { + "type": "string" + }, + "CopyProgress": { + "type": "string" + }, + "CopyCompletionTime": { + "type": "string", + "format": "date-time-rfc1123" + }, + "CopyStatusDescription": { + "type": "string" + }, + "ServerEncrypted": { + "type": "boolean" + }, + "IncrementalCopy": { + "type": "boolean" + }, + "DestinationSnapshot": { + "type": "string" + }, + "DeletedTime": { + "type": "string", + "format": "date-time-rfc1123" + }, + "RemainingRetentionDays": { + "type": "integer" + }, + "AccessTier": { + "$ref": "#/definitions/AccessTier" + }, + "AccessTierInferred": { + "type": "boolean" + }, + "ArchiveStatus": { + "$ref": "#/definitions/ArchiveStatus" + }, + "AccessTierChangeTime": { + "type": "string", + "format": "date-time-rfc1123" + } + } + }, + "ListBlobsFlatSegmentResponse": { + "xml": { + "name": "EnumerationResults" + }, + "description": "An enumeration of blobs", + "type": "object", + "required": [ + "ServiceEndpoint", + "ContainerName", + "Segment" + ], + "properties": { + "ServiceEndpoint": { + "type": "string", + "xml": { + "attribute": true + } + }, + "ContainerName": { + "type": "string", + "xml": { + "attribute": true + } + }, + "Prefix": { + "type": "string" + }, + "Marker": { + "type": "string" + }, + "MaxResults": { + "type": "integer" + }, + "Delimiter": { + "type": "string" + }, + "Segment": { + "$ref": "#/definitions/BlobFlatListSegment" + }, + "NextMarker": { + "type": "string" + } + } + }, + "ListBlobsHierarchySegmentResponse": { + "xml": { + "name": "EnumerationResults" + }, + "description": "An enumeration of blobs", + "type": "object", + "required": [ + "ServiceEndpoint", + "ContainerName", + "Segment" + ], + "properties": { + "ServiceEndpoint": { + "type": "string", + "xml": { + "attribute": true + } + }, + "ContainerName": { + "type": "string", + "xml": { + "attribute": true + } + }, + "Prefix": { + "type": "string" + }, + "Marker": { + "type": "string" + }, + "MaxResults": { + "type": "integer" + }, + "Delimiter": { + "type": "string" + }, + "Segment": { + "$ref": "#/definitions/BlobHierarchyListSegment" + }, + "NextMarker": { + "type": "string" + } + } + }, + "BlobFlatListSegment": { + "xml": { + "name": "Blobs" + }, + "required": [ + "BlobItems" + ], + "type": "object", + "properties": { + "BlobItems": { + "type": "array", + "items": { + "$ref": "#/definitions/BlobItem" + } + } + } + }, + "BlobHierarchyListSegment": { + "xml": { + "name": "Blobs" + }, + "type": "object", + "required": [ + "BlobItems" + ], + "properties": { + "BlobPrefixes": { + "type": "array", + "items": { + "$ref": "#/definitions/BlobPrefix" + } + }, + "BlobItems": { + "type": "array", + "items": { + "$ref": "#/definitions/BlobItem" + } + } + } + }, + "BlobPrefix": { + "type": "object", + "required": [ + "Name" + ], + "properties": { + "Name": { + "type": "string" + } + } + }, + "Block": { + "type": "object", + "required": [ + "Name", + "Size" + ], + "description": "Represents a single block in a block blob. It describes the block's ID and size.", + "properties": { + "Name": { + "description": "The base64 encoded block ID.", + "type": "string" + }, + "Size": { + "description": "The block size in bytes.", + "type": "integer" + } + } + }, + "BlockList": { + "type": "object", + "properties": { + "CommittedBlocks": { + "xml": { + "wrapped": true + }, + "type": "array", + "items": { + "$ref": "#/definitions/Block" + } + }, + "UncommittedBlocks": { + "xml": { + "wrapped": true + }, + "type": "array", + "items": { + "$ref": "#/definitions/Block" + } + } + } + }, + "BlockLookupList": { + "type": "object", + "properties": { + "Committed": { + "type": "array", + "items": { + "type": "string", + "xml": { + "name": "Committed" + } + } + }, + "Uncommitted": { + "type": "array", + "items": { + "type": "string", + "xml": { + "name": "Uncommitted" + } + } + }, + "Latest": { + "type": "array", + "items": { + "type": "string", + "xml": { + "name": "Latest" + } + } + } + }, + "xml": { + "name": "BlockList" + } + }, + "ContainerItem": { + "xml": { + "name": "Container" + }, + "type": "object", + "required": [ + "Name", + "Properties" + ], + "description": "An Azure Storage container", + "properties": { + "Name": { + "type": "string" + }, + "Properties": { + "$ref": "#/definitions/ContainerProperties" + }, + "Metadata": { + "$ref": "#/definitions/Metadata" + } + } + }, + "ContainerProperties": { + "type": "object", + "required": [ + "Last-Modified", + "Etag" + ], + "description": "Properties of a container", + "properties": { + "Last-Modified": { + "type": "string", + "format": "date-time-rfc1123" + }, + "Etag": { + "type": "string", + "format": "etag" + }, + "LeaseStatus": { + "$ref": "#/definitions/LeaseStatus" + }, + "LeaseState": { + "$ref": "#/definitions/LeaseState" + }, + "LeaseDuration": { + "$ref": "#/definitions/LeaseDuration" + }, + "PublicAccess": { + "$ref": "#/definitions/PublicAccessType" + }, + "HasImmutabilityPolicy": { + "type": "boolean" + }, + "HasLegalHold": { + "type": "boolean" + } + } + }, + "ListContainersSegmentResponse": { + "xml": { + "name": "EnumerationResults" + }, + "description": "An enumeration of containers", + "type": "object", + "required": [ + "ServiceEndpoint", + "ContainerItems" + ], + "properties": { + "ServiceEndpoint": { + "type": "string", + "xml": { + "attribute": true + } + }, + "Prefix": { + "type": "string" + }, + "Marker": { + "type": "string" + }, + "MaxResults": { + "type": "integer" + }, + "ContainerItems": { + "xml": { + "wrapped": true, + "name": "Containers" + }, + "type": "array", + "items": { + "$ref": "#/definitions/ContainerItem" + } + }, + "NextMarker": { + "type": "string" + } + } + }, + "CorsRule": { + "description": "CORS is an HTTP feature that enables a web application running under one domain to access resources in another domain. Web browsers implement a security restriction known as same-origin policy that prevents a web page from calling APIs in a different domain; CORS provides a secure way to allow one domain (the origin domain) to call APIs in another domain", + "type": "object", + "required": [ + "AllowedOrigins", + "AllowedMethods", + "AllowedHeaders", + "ExposedHeaders", + "MaxAgeInSeconds" + ], + "properties": { + "AllowedOrigins": { + "description": "The origin domains that are permitted to make a request against the storage service via CORS. The origin domain is the domain from which the request originates. Note that the origin must be an exact case-sensitive match with the origin that the user age sends to the service. You can also use the wildcard character '*' to allow all origin domains to make requests via CORS.", + "type": "string" + }, + "AllowedMethods": { + "description": "The methods (HTTP request verbs) that the origin domain may use for a CORS request. (comma separated)", + "type": "string" + }, + "AllowedHeaders": { + "description": "the request headers that the origin domain may specify on the CORS request.", + "type": "string" + }, + "ExposedHeaders": { + "description": "The response headers that may be sent in the response to the CORS request and exposed by the browser to the request issuer", + "type": "string" + }, + "MaxAgeInSeconds": { + "description": "The maximum amount time that a browser should cache the preflight OPTIONS request.", + "type": "integer", + "minimum": 0 + } + } + }, + "ErrorCode": { + "description": "Error codes returned by the service", + "type": "string", + "enum": [ + "AccountAlreadyExists", + "AccountBeingCreated", + "AccountIsDisabled", + "AuthenticationFailed", + "AuthorizationFailure", + "ConditionHeadersNotSupported", + "ConditionNotMet", + "EmptyMetadataKey", + "InsufficientAccountPermissions", + "InternalError", + "InvalidAuthenticationInfo", + "InvalidHeaderValue", + "InvalidHttpVerb", + "InvalidInput", + "InvalidMd5", + "InvalidMetadata", + "InvalidQueryParameterValue", + "InvalidRange", + "InvalidResourceName", + "InvalidUri", + "InvalidXmlDocument", + "InvalidXmlNodeValue", + "Md5Mismatch", + "MetadataTooLarge", + "MissingContentLengthHeader", + "MissingRequiredQueryParameter", + "MissingRequiredHeader", + "MissingRequiredXmlNode", + "MultipleConditionHeadersNotSupported", + "OperationTimedOut", + "OutOfRangeInput", + "OutOfRangeQueryParameterValue", + "RequestBodyTooLarge", + "ResourceTypeMismatch", + "RequestUrlFailedToParse", + "ResourceAlreadyExists", + "ResourceNotFound", + "ServerBusy", + "UnsupportedHeader", + "UnsupportedXmlNode", + "UnsupportedQueryParameter", + "UnsupportedHttpVerb", + "AppendPositionConditionNotMet", + "BlobAlreadyExists", + "BlobNotFound", + "BlobOverwritten", + "BlobTierInadequateForContentLength", + "BlockCountExceedsLimit", + "BlockListTooLong", + "CannotChangeToLowerTier", + "CannotVerifyCopySource", + "ContainerAlreadyExists", + "ContainerBeingDeleted", + "ContainerDisabled", + "ContainerNotFound", + "ContentLengthLargerThanTierLimit", + "CopyAcrossAccountsNotSupported", + "CopyIdMismatch", + "FeatureVersionMismatch", + "IncrementalCopyBlobMismatch", + "IncrementalCopyOfEralierVersionSnapshotNotAllowed", + "IncrementalCopySourceMustBeSnapshot", + "InfiniteLeaseDurationRequired", + "InvalidBlobOrBlock", + "InvalidBlobTier", + "InvalidBlobType", + "InvalidBlockId", + "InvalidBlockList", + "InvalidOperation", + "InvalidPageRange", + "InvalidSourceBlobType", + "InvalidSourceBlobUrl", + "InvalidVersionForPageBlobOperation", + "LeaseAlreadyPresent", + "LeaseAlreadyBroken", + "LeaseIdMismatchWithBlobOperation", + "LeaseIdMismatchWithContainerOperation", + "LeaseIdMismatchWithLeaseOperation", + "LeaseIdMissing", + "LeaseIsBreakingAndCannotBeAcquired", + "LeaseIsBreakingAndCannotBeChanged", + "LeaseIsBrokenAndCannotBeRenewed", + "LeaseLost", + "LeaseNotPresentWithBlobOperation", + "LeaseNotPresentWithContainerOperation", + "LeaseNotPresentWithLeaseOperation", + "MaxBlobSizeConditionNotMet", + "NoPendingCopyOperation", + "OperationNotAllowedOnIncrementalCopyBlob", + "PendingCopyOperation", + "PreviousSnapshotCannotBeNewer", + "PreviousSnapshotNotFound", + "PreviousSnapshotOperationNotSupported", + "SequenceNumberConditionNotMet", + "SequenceNumberIncrementTooLarge", + "SnapshotCountExceeded", + "SnaphotOperationRateExceeded", + "SnapshotsPresent", + "SourceConditionNotMet", + "SystemInUse", + "TargetConditionNotMet", + "UnauthorizedBlobOverwrite", + "BlobBeingRehydrated", + "BlobArchived", + "BlobNotArchived" + ], + "x-ms-enum": { + "name": "StorageErrorCode", + "modelAsString": true + } + }, + "GeoReplication": { + "description": "Geo-Replication information for the Secondary Storage Service", + "type": "object", + "required": [ + "Status", + "LastSyncTime" + ], + "properties": { + "Status": { + "description": "The status of the secondary location", + "type": "string", + "enum": [ + "live", + "bootstrap", + "unavailable" + ], + "x-ms-enum": { + "name": "GeoReplicationStatusType", + "modelAsString": true + } + }, + "LastSyncTime": { + "description": "A GMT date/time value, to the second. All primary writes preceding this value are guaranteed to be available for read operations at the secondary. Primary writes after this point in time may or may not be available for reads.", + "type": "string", + "format": "date-time-rfc1123" + } + } + }, + "Logging": { + "description": "Azure Analytics Logging settings.", + "type": "object", + "required": [ + "Version", + "Delete", + "Read", + "Write", + "RetentionPolicy" + ], + "properties": { + "Version": { + "description": "The version of Storage Analytics to configure.", + "type": "string" + }, + "Delete": { + "description": "Indicates whether all delete requests should be logged.", + "type": "boolean" + }, + "Read": { + "description": "Indicates whether all read requests should be logged.", + "type": "boolean" + }, + "Write": { + "description": "Indicates whether all write requests should be logged.", + "type": "boolean" + }, + "RetentionPolicy": { + "$ref": "#/definitions/RetentionPolicy" + } + } + }, + "Metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "Metrics": { + "description": "a summary of request statistics grouped by API in hour or minute aggregates for blobs", + "required": [ + "Enabled" + ], + "properties": { + "Version": { + "description": "The version of Storage Analytics to configure.", + "type": "string" + }, + "Enabled": { + "description": "Indicates whether metrics are enabled for the Blob service.", + "type": "boolean" + }, + "IncludeAPIs": { + "description": "Indicates whether metrics should generate summary statistics for called API operations.", + "type": "boolean" + }, + "RetentionPolicy": { + "$ref": "#/definitions/RetentionPolicy" + } + } + }, + "PageList": { + "description": "the list of pages", + "type": "object", + "properties": { + "PageRange": { + "type": "array", + "items": { + "$ref": "#/definitions/PageRange" + } + }, + "ClearRange": { + "type": "array", + "items": { + "$ref": "#/definitions/ClearRange" + } + } + } + }, + "PageRange": { + "type": "object", + "required": [ + "Start", + "End" + ], + "properties": { + "Start": { + "type": "integer", + "format": "int64", + "xml": { + "name": "Start" + } + }, + "End": { + "type": "integer", + "format": "int64", + "xml": { + "name": "End" + } + } + }, + "xml": { + "name": "PageRange" + } + }, + "ClearRange": { + "type": "object", + "required": [ + "Start", + "End" + ], + "properties": { + "Start": { + "type": "integer", + "format": "int64", + "xml": { + "name": "Start" + } + }, + "End": { + "type": "integer", + "format": "int64", + "xml": { + "name": "End" + } + } + }, + "xml": { + "name": "ClearRange" + } + }, + "RetentionPolicy": { + "description": "the retention policy which determines how long the associated data should persist", + "type": "object", + "required": [ + "Enabled" + ], + "properties": { + "Enabled": { + "description": "Indicates whether a retention policy is enabled for the storage service", + "type": "boolean" + }, + "Days": { + "description": "Indicates the number of days that metrics or logging or soft-deleted data should be retained. All data older than this value will be deleted", + "type": "integer", + "minimum": 1 + } + } + }, + "SignedIdentifier": { + "xml": { + "name": "SignedIdentifier" + }, + "description": "signed identifier", + "type": "object", + "required": [ + "Id", + "AccessPolicy" + ], + "properties": { + "Id": { + "type": "string", + "description": "a unique id" + }, + "AccessPolicy": { + "$ref": "#/definitions/AccessPolicy" + } + } + }, + "SignedIdentifiers": { + "description": "a collection of signed identifiers", + "type": "array", + "items": { + "$ref": "#/definitions/SignedIdentifier" + }, + "xml": { + "wrapped": true, + "name": "SignedIdentifiers" + } + }, + "StaticWebsite": { + "description": "The properties that enable an account to host a static website", + "type": "object", + "required": [ + "Enabled" + ], + "properties": { + "Enabled": { + "description": "Indicates whether this account is hosting a static website", + "type": "boolean" + }, + "IndexDocument": { + "description": "The default name of the index page under each directory", + "type": "string" + }, + "ErrorDocument404Path": { + "description": "The absolute path of the custom 404 page", + "type": "string" + } + } + }, + "StorageServiceProperties": { + "description": "Storage Service Properties.", + "type": "object", + "properties": { + "Logging": { + "$ref": "#/definitions/Logging" + }, + "HourMetrics": { + "$ref": "#/definitions/Metrics" + }, + "MinuteMetrics": { + "$ref": "#/definitions/Metrics" + }, + "Cors": { + "description": "The set of CORS rules.", + "type": "array", + "items": { + "$ref": "#/definitions/CorsRule" + }, + "xml": { + "wrapped": true + } + }, + "DefaultServiceVersion": { + "description": "The default version to use for requests to the Blob service if an incoming request's version is not specified. Possible values include version 2008-10-27 and all more recent versions", + "type": "string" + }, + "DeleteRetentionPolicy": { + "$ref": "#/definitions/RetentionPolicy" + }, + "StaticWebsite": { + "$ref": "#/definitions/StaticWebsite" + } + } + }, + "StorageServiceStats": { + "description": "Stats for the storage service.", + "type": "object", + "properties": { + "GeoReplication": { + "$ref": "#/definitions/GeoReplication" + } + } + } + }, + "parameters": { + "Url": { + "name": "url", + "description": "The URL of the service account, container, or blob that is the targe of the desired operation.", + "required": true, + "type": "string", + "in": "path", + "x-ms-skip-url-encoding": true + }, + "ApiVersionParameter": { + "name": "x-ms-version", + "x-ms-client-name": "version", + "in": "header", + "required": true, + "type": "string", + "description": "Specifies the version of the operation to use for this request.", + "enum": [ + "2018-11-09" + ] + }, + "Blob": { + "name": "blob", + "in": "path", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9]+(?:/[a-zA-Z0-9]+)*(?:\\.[a-zA-Z0-9]+){0,1}$", + "minLength": 1, + "maxLength": 1024, + "x-ms-parameter-location": "method", + "description": "The blob name." + }, + "BlobCacheControl": { + "name": "x-ms-blob-cache-control", + "x-ms-client-name": "blobCacheControl", + "in": "header", + "required": false, + "type": "string", + "x-ms-parameter-location": "method", + "x-ms-parameter-grouping": { + "name": "blob-HTTP-headers" + }, + "description": "Optional. Sets the blob's cache control. If specified, this property is stored with the blob and returned with a read request." + }, + "BlobConditionAppendPos": { + "name": "x-ms-blob-condition-appendpos", + "x-ms-client-name": "appendPosition", + "in": "header", + "required": false, + "type": "integer", + "format": "int64", + "x-ms-parameter-location": "method", + "x-ms-parameter-grouping": { + "name": "append-position-access-conditions" + }, + "description": "Optional conditional header, used only for the Append Block operation. A number indicating the byte offset to compare. Append Block will succeed only if the append position is equal to this number. If it is not, the request will fail with the AppendPositionConditionNotMet error (HTTP status code 412 - Precondition Failed)." + }, + "BlobConditionMaxSize": { + "name": "x-ms-blob-condition-maxsize", + "x-ms-client-name": "maxSize", + "in": "header", + "required": false, + "type": "integer", + "format": "int64", + "x-ms-parameter-location": "method", + "x-ms-parameter-grouping": { + "name": "append-position-access-conditions" + }, + "description": "Optional conditional header. The max length in bytes permitted for the append blob. If the Append Block operation would cause the blob to exceed that limit or if the blob size is already greater than the value specified in this header, the request will fail with MaxBlobSizeConditionNotMet error (HTTP status code 412 - Precondition Failed)." + }, + "BlobPublicAccess": { + "name": "x-ms-blob-public-access", + "x-ms-client-name": "access", + "in": "header", + "required": false, + "x-ms-parameter-location": "method", + "description": "Specifies whether data in the container may be accessed publicly and the level of access", + "type": "string", + "enum": [ + "container", + "blob" + ], + "x-ms-enum": { + "name": "PublicAccessType", + "modelAsString": true + } + }, + "AccessTier": { + "name": "x-ms-access-tier", + "x-ms-client-name": "tier", + "in": "header", + "required": true, + "type": "string", + "enum": [ + "P4", + "P6", + "P10", + "P20", + "P30", + "P40", + "P50", + "Hot", + "Cool", + "Archive" + ], + "x-ms-enum": { + "name": "AccessTier", + "modelAsString": true + }, + "x-ms-parameter-location": "method", + "description": "Indicates the tier to be set on the blob." + }, + "BlobContentDisposition": { + "name": "x-ms-blob-content-disposition", + "x-ms-client-name": "blobContentDisposition", + "in": "header", + "required": false, + "type": "string", + "x-ms-parameter-location": "method", + "x-ms-parameter-grouping": { + "name": "blob-HTTP-headers" + }, + "description": "Optional. Sets the blob's Content-Disposition header." + }, + "BlobContentEncoding": { + "name": "x-ms-blob-content-encoding", + "x-ms-client-name": "blobContentEncoding", + "in": "header", + "required": false, + "type": "string", + "x-ms-parameter-location": "method", + "x-ms-parameter-grouping": { + "name": "blob-HTTP-headers" + }, + "description": "Optional. Sets the blob's content encoding. If specified, this property is stored with the blob and returned with a read request." + }, + "BlobContentLanguage": { + "name": "x-ms-blob-content-language", + "x-ms-client-name": "blobContentLanguage", + "in": "header", + "required": false, + "type": "string", + "x-ms-parameter-location": "method", + "x-ms-parameter-grouping": { + "name": "blob-HTTP-headers" + }, + "description": "Optional. Set the blob's content language. If specified, this property is stored with the blob and returned with a read request." + }, + "BlobContentLengthOptional": { + "name": "x-ms-blob-content-length", + "x-ms-client-name": "blobContentLength", + "in": "header", + "required": false, + "type": "integer", + "format": "int64", + "x-ms-parameter-location": "method", + "description": "This header specifies the maximum size for the page blob, up to 1 TB. The page blob size must be aligned to a 512-byte boundary." + }, + "BlobContentLengthRequired": { + "name": "x-ms-blob-content-length", + "x-ms-client-name": "blobContentLength", + "in": "header", + "required": true, + "type": "integer", + "format": "int64", + "x-ms-parameter-location": "method", + "description": "This header specifies the maximum size for the page blob, up to 1 TB. The page blob size must be aligned to a 512-byte boundary." + }, + "BlobContentMD5": { + "name": "x-ms-blob-content-md5", + "x-ms-client-name": "blobContentMD5", + "in": "header", + "required": false, + "type": "string", + "format": "byte", + "x-ms-parameter-location": "method", + "x-ms-parameter-grouping": { + "name": "blob-HTTP-headers" + }, + "description": "Optional. An MD5 hash of the blob content. Note that this hash is not validated, as the hashes for the individual blocks were validated when each was uploaded." + }, + "BlobContentType": { + "name": "x-ms-blob-content-type", + "x-ms-client-name": "blobContentType", + "in": "header", + "required": false, + "type": "string", + "x-ms-parameter-location": "method", + "x-ms-parameter-grouping": { + "name": "blob-HTTP-headers" + }, + "description": "Optional. Sets the blob's content type. If specified, this property is stored with the blob and returned with a read request." + }, + "BlobSequenceNumber": { + "name": "x-ms-blob-sequence-number", + "x-ms-client-name": "blobSequenceNumber", + "in": "header", + "required": false, + "type": "integer", + "format": "int64", + "default": 0, + "x-ms-parameter-location": "method", + "description": "Set for page blobs only. The sequence number is a user-controlled value that you can use to track requests. The value of the sequence number must be between 0 and 2^63 - 1." + }, + "BlockId": { + "name": "blockid", + "x-ms-client-name": "blockId", + "in": "query", + "type": "string", + "required": true, + "x-ms-parameter-location": "method", + "description": "A valid Base64 string value that identifies the block. Prior to encoding, the string must be less than or equal to 64 bytes in size. For a given blob, the length of the value specified for the blockid parameter must be the same size for each block." + }, + "BlockListType": { + "name": "blocklisttype", + "x-ms-client-name": "listType", + "in": "query", + "required": true, + "default": "committed", + "x-ms-parameter-location": "method", + "description": "Specifies whether to return the list of committed blocks, the list of uncommitted blocks, or both lists together.", + "type": "string", + "enum": [ + "committed", + "uncommitted", + "all" + ], + "x-ms-enum": { + "name": "BlockListType", + "modelAsString": false + } + }, + "Body": { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "format": "file" + }, + "x-ms-parameter-location": "method", + "description": "Initial data" + }, + "ContainerAcl": { + "name": "containerAcl", + "in": "body", + "schema": { + "$ref": "#/definitions/SignedIdentifiers" + }, + "x-ms-parameter-location": "method", + "description": "the acls for the container" + }, + "CopyId": { + "name": "copyid", + "x-ms-client-name": "copyId", + "in": "query", + "required": true, + "type": "string", + "x-ms-parameter-location": "method", + "description": "The copy identifier provided in the x-ms-copy-id header of the original Copy Blob operation." + }, + "ClientRequestId": { + "name": "x-ms-client-request-id", + "x-ms-client-name": "requestId", + "in": "header", + "required": false, + "type": "string", + "x-ms-parameter-location": "method", + "description": "Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled." + }, + "ContainerName": { + "name": "containerName", + "in": "path", + "required": true, + "type": "string", + "x-ms-parameter-location": "method", + "description": "The container name." + }, + + "ContentLength": { + "name": "Content-Length", + "in": "header", + "required": true, + "type": "integer", + "format": "int64", + "x-ms-parameter-location": "method", + "description": "The length of the request." + }, + "ContentMD5": { + "name": "Content-MD5", + "x-ms-client-name": "transactionalContentMD5", + "in": "header", + "required": false, + "type": "string", + "format": "byte", + "x-ms-parameter-location": "method", + "description": "Specify the transactional md5 for the body, to be validated by the service." + }, + "CopySource": { + "name": "x-ms-copy-source", + "x-ms-client-name": "copySource", + "in": "header", + "required": true, + "type": "string", + "format": "url", + "x-ms-parameter-location": "method", + "description": "Specifies the name of the source page blob snapshot. This value is a URL of up to 2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would appear in a request URI. The source blob must either be public or must be authenticated via a shared access signature." + }, + "DeleteSnapshots": { + "name": "x-ms-delete-snapshots", + "x-ms-client-name": "deleteSnapshots", + "description": "Required if the blob has associated snapshots. Specify one of the following two options: include: Delete the base blob and all of its snapshots. only: Delete only the blob's snapshots and not the blob itself", + "x-ms-parameter-location": "method", + "in": "header", + "required": false, + "type": "string", + "enum": [ + "include", + "only" + ], + "x-ms-enum": { + "name": "DeleteSnapshotsOptionType", + "modelAsString": false + } + }, + "Delimiter": { + "name": "delimiter", + "description": "When the request includes this parameter, the operation returns a BlobPrefix element in the response body that acts as a placeholder for all blobs whose names begin with the same substring up to the appearance of the delimiter character. The delimiter may be a single character or a string.", + "type": "string", + "x-ms-parameter-location": "method", + "in": "query", + "required": true + }, + "GetRangeContentMD5": { + "name": "x-ms-range-get-content-md5", + "x-ms-client-name": "rangeGetContentMD5", + "in": "header", + "required": false, + "type": "boolean", + "x-ms-parameter-location": "method", + "description": "When set to true and specified together with the Range, the service returns the MD5 hash for the range, as long as the range is less than or equal to 4 MB in size." + }, + "IfMatch": { + "name": "If-Match", + "x-ms-client-name": "ifMatch", + "in": "header", + "required": false, + "type": "string", + "format": "etag", + "x-ms-parameter-location": "method", + "x-ms-parameter-grouping": { + "name": "modified-access-conditions" + }, + "description": "Specify an ETag value to operate only on blobs with a matching value." + }, + "IfModifiedSince": { + "name": "If-Modified-Since", + "x-ms-client-name": "ifModifiedSince", + "in": "header", + "required": false, + "type": "string", + "format": "date-time-rfc1123", + "x-ms-parameter-location": "method", + "x-ms-parameter-grouping": { + "name": "modified-access-conditions" + }, + "description": "Specify this header value to operate only on a blob if it has been modified since the specified date/time." + }, + "IfNoneMatch": { + "name": "If-None-Match", + "x-ms-client-name": "ifNoneMatch", + "in": "header", + "required": false, + "type": "string", + "format": "etag", + "x-ms-parameter-location": "method", + "x-ms-parameter-grouping": { + "name": "modified-access-conditions" + }, + "description": "Specify an ETag value to operate only on blobs without a matching value." + }, + "IfUnmodifiedSince": { + "name": "If-Unmodified-Since", + "x-ms-client-name": "ifUnmodifiedSince", + "in": "header", + "required": false, + "type": "string", + "format": "date-time-rfc1123", + "x-ms-parameter-location": "method", + "x-ms-parameter-grouping": { + "name": "modified-access-conditions" + }, + "description": "Specify this header value to operate only on a blob if it has not been modified since the specified date/time." + }, + "IfSequenceNumberEqualTo": { + "name": "x-ms-if-sequence-number-eq", + "x-ms-client-name": "ifSequenceNumberEqualTo", + "in": "header", + "required": false, + "type": "integer", + "format": "int64", + "x-ms-parameter-location": "method", + "x-ms-parameter-grouping": { + "name": "sequence-number-access-conditions" + }, + "description": "Specify this header value to operate only on a blob if it has the specified sequence number." + }, + "IfSequenceNumberLessThan": { + "name": "x-ms-if-sequence-number-lt", + "x-ms-client-name": "ifSequenceNumberLessThan", + "in": "header", + "required": false, + "type": "integer", + "format": "int64", + "x-ms-parameter-location": "method", + "x-ms-parameter-grouping": { + "name": "sequence-number-access-conditions" + }, + "description": "Specify this header value to operate only on a blob if it has a sequence number less than the specified." + }, + "IfSequenceNumberLessThanOrEqualTo": { + "name": "x-ms-if-sequence-number-le", + "x-ms-client-name": "ifSequenceNumberLessThanOrEqualTo", + "in": "header", + "required": false, + "type": "integer", + "format": "int64", + "x-ms-parameter-location": "method", + "x-ms-parameter-grouping": { + "name": "sequence-number-access-conditions" + }, + "description": "Specify this header value to operate only on a blob if it has a sequence number less than or equal to the specified." + }, + "KeyInfo": { + "name": "KeyInfo", + "in": "body", + "x-ms-parameter-location": "method", + "required": true, + "schema": { + "$ref": "#/definitions/KeyInfo" + } + }, + "ListBlobsInclude": { + "name": "include", + "in": "query", + "required": false, + "type": "array", + "collectionFormat": "csv", + "items": { + "type": "string", + "enum": [ + "copy", + "deleted", + "metadata", + "snapshots", + "uncommittedblobs" + ], + "x-ms-enum": { + "name": "ListBlobsIncludeItem", + "modelAsString": false + } + }, + "x-ms-parameter-location": "method", + "description": "Include this parameter to specify one or more datasets to include in the response." + }, + "ListContainersInclude": { + "name": "include", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "metadata" + ], + "x-ms-enum": { + "name": "ListContainersIncludeType", + "modelAsString": false + }, + "x-ms-parameter-location": "method", + "description": "Include this parameter to specify that the container's metadata be returned as part of the response body." + }, + "LeaseBreakPeriod": { + "name": "x-ms-lease-break-period", + "x-ms-client-name": "breakPeriod", + "in": "header", + "required": false, + "type": "integer", + "x-ms-parameter-location": "method", + "description": "For a break operation, proposed duration the lease should continue before it is broken, in seconds, between 0 and 60. This break period is only used if it is shorter than the time remaining on the lease. If longer, the time remaining on the lease is used. A new lease will not be available before the break period has expired, but the lease may be held for longer than the break period. If this header does not appear with a break operation, a fixed-duration lease breaks after the remaining lease period elapses, and an infinite lease breaks immediately." + }, + "LeaseDuration": { + "name": "x-ms-lease-duration", + "x-ms-client-name": "duration", + "in": "header", + "required": false, + "type": "integer", + "x-ms-parameter-location": "method", + "description": "Specifies the duration of the lease, in seconds, or negative one (-1) for a lease that never expires. A non-infinite lease can be between 15 and 60 seconds. A lease duration cannot be changed using renew or change." + }, + "LeaseIdOptional": { + "name": "x-ms-lease-id", + "x-ms-client-name": "leaseId", + "in": "header", + "required": false, + "type": "string", + "x-ms-parameter-location": "method", + "x-ms-parameter-grouping": { + "name": "lease-access-conditions" + }, + "description": "If specified, the operation only succeeds if the resource's lease is active and matches this ID." + }, + "LeaseIdRequired": { + "name": "x-ms-lease-id", + "x-ms-client-name": "leaseId", + "in": "header", + "required": true, + "type": "string", + "x-ms-parameter-location": "method", + "description": "Specifies the current lease ID on the resource." + }, + "Marker": { + "name": "marker", + "in": "query", + "required": false, + "type": "string", + "description": "A string value that identifies the portion of the list of containers to be returned with the next listing operation. The operation returns the NextMarker value within the response body if the listing operation did not return all containers remaining to be listed with the current page. The NextMarker value can be used as the value for the marker parameter in a subsequent call to request the next page of list items. The marker value is opaque to the client.", + "x-ms-parameter-location": "method" + }, + "MaxResults": { + "name": "maxresults", + "in": "query", + "required": false, + "type": "integer", + "minimum": 1, + "x-ms-parameter-location": "method", + "description": "Specifies the maximum number of containers to return. If the request does not specify maxresults, or specifies a value greater than 5000, the server will return up to 5000 items. Note that if the listing operation crosses a partition boundary, then the service will return a continuation token for retrieving the remainder of the results. For this reason, it is possible that the service will return fewer results than specified by maxresults, or than the default of 5000." + }, + "Metadata": { + "name": "x-ms-meta", + "x-ms-client-name": "metadata", + "in": "header", + "required": false, + "type": "string", + "x-ms-parameter-location": "method", + "description": "Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information.", + "x-ms-header-collection-prefix": "x-ms-meta-" + }, + "Prefix": { + "name": "prefix", + "in": "query", + "required": false, + "type": "string", + "description": "Filters the results to return only containers whose name begins with the specified prefix.", + "x-ms-parameter-location": "method" + }, + "PrevSnapshot": { + "name": "prevsnapshot", + "in": "query", + "required": false, + "type": "string", + "x-ms-parameter-location": "method", + "description": "Optional in version 2015-07-08 and newer. The prevsnapshot parameter is a DateTime value that specifies that the response will contain only pages that were changed between target blob and previous snapshot. Changed pages include both updated and cleared pages. The target blob may be a snapshot, as long as the snapshot specified by prevsnapshot is the older of the two. Note that incremental snapshots are currently supported only for blobs created on or after January 1, 2016." + }, + "ProposedLeaseIdOptional": { + "name": "x-ms-proposed-lease-id", + "x-ms-client-name": "proposedLeaseId", + "in": "header", + "required": false, + "type": "string", + "x-ms-parameter-location": "method", + "description": "Proposed lease ID, in a GUID string format. The Blob service returns 400 (Invalid request) if the proposed lease ID is not in the correct format. See Guid Constructor (String) for a list of valid GUID string formats." + }, + "ProposedLeaseIdRequired": { + "name": "x-ms-proposed-lease-id", + "x-ms-client-name": "proposedLeaseId", + "in": "header", + "required": true, + "type": "string", + "x-ms-parameter-location": "method", + "description": "Proposed lease ID, in a GUID string format. The Blob service returns 400 (Invalid request) if the proposed lease ID is not in the correct format. See Guid Constructor (String) for a list of valid GUID string formats." + }, + "Range": { + "name": "x-ms-range", + "x-ms-client-name": "range", + "in": "header", + "required": false, + "type": "string", + "x-ms-parameter-location": "method", + "description": "Return only the bytes of the blob in the specified range." + }, + "RangeRequiredPutPageFromUrl": { + "name": "x-ms-range", + "x-ms-client-name": "range", + "in": "header", + "required": true, + "type": "string", + "x-ms-parameter-location": "method", + "description": "The range of bytes to which the source range would be written. The range should be 512 aligned and range-end is required." + }, + "SequenceNumberAction": { + "name": "x-ms-sequence-number-action", + "x-ms-client-name": "sequenceNumberAction", + "in": "header", + "required": true, + "x-ms-parameter-location": "method", + "description": "Required if the x-ms-blob-sequence-number header is set for the request. This property applies to page blobs only. This property indicates how the service should modify the blob's sequence number", + "type": "string", + "enum": [ + "max", + "update", + "increment" + ], + "x-ms-enum": { + "name": "SequenceNumberActionType", + "modelAsString": false + } + }, + "Snapshot": { + "name": "snapshot", + "in": "query", + "required": false, + "type": "string", + "x-ms-parameter-location": "method", + "description": "The snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to retrieve. For more information on working with blob snapshots, see Creating a Snapshot of a Blob." + }, + "SourceContentMD5": { + "name": "x-ms-source-content-md5", + "x-ms-client-name": "sourceContentMD5", + "in": "header", + "required": false, + "type": "string", + "format": "byte", + "x-ms-parameter-location": "method", + "description": "Specify the md5 calculated for the range of bytes that must be read from the copy source." + }, + "SourceRange": { + "name": "x-ms-source-range", + "x-ms-client-name": "sourceRange", + "in": "header", + "required": false, + "type": "string", + "x-ms-parameter-location": "method", + "description": "Bytes of source data in the specified range." + }, + "SourceRangeRequiredPutPageFromUrl": { + "name": "x-ms-source-range", + "x-ms-client-name": "sourceRange", + "in": "header", + "required": true, + "type": "string", + "x-ms-parameter-location": "method", + "description": "Bytes of source data in the specified range. The length of this range should match the ContentLength header and x-ms-range/Range destination range header." + }, + "SourceIfMatch": { + "name": "x-ms-source-if-match", + "x-ms-client-name": "sourceIfMatch", + "in": "header", + "required": false, + "type": "string", + "format": "etag", + "x-ms-parameter-location": "method", + "x-ms-parameter-grouping": { + "name": "source-modified-access-conditions" + }, + "description": "Specify an ETag value to operate only on blobs with a matching value." + }, + "SourceIfModifiedSince": { + "name": "x-ms-source-if-modified-since", + "x-ms-client-name": "sourceIfModifiedSince", + "in": "header", + "required": false, + "type": "string", + "format": "date-time-rfc1123", + "x-ms-parameter-location": "method", + "x-ms-parameter-grouping": { + "name": "source-modified-access-conditions" + }, + "description": "Specify this header value to operate only on a blob if it has been modified since the specified date/time." + }, + "SourceIfNoneMatch": { + "name": "x-ms-source-if-none-match", + "x-ms-client-name": "sourceIfNoneMatch", + "in": "header", + "required": false, + "type": "string", + "format": "etag", + "x-ms-parameter-location": "method", + "x-ms-parameter-grouping": { + "name": "source-modified-access-conditions" + }, + "description": "Specify an ETag value to operate only on blobs without a matching value." + }, + "SourceIfUnmodifiedSince": { + "name": "x-ms-source-if-unmodified-since", + "x-ms-client-name": "sourceIfUnmodifiedSince", + "in": "header", + "required": false, + "type": "string", + "format": "date-time-rfc1123", + "x-ms-parameter-location": "method", + "x-ms-parameter-grouping": { + "name": "source-modified-access-conditions" + }, + "description": "Specify this header value to operate only on a blob if it has not been modified since the specified date/time." + }, + "SourceLeaseId": { + "name": "x-ms-source-lease-id", + "x-ms-client-name": "sourceLeaseId", + "in": "header", + "required": false, + "type": "string", + "x-ms-parameter-location": "method", + "description": "A lease ID for the source path. If specified, the source path must have an active lease and the leaase ID must match." + }, + "SourceUrl": { + "name": "x-ms-copy-source", + "x-ms-client-name": "sourceUrl", + "in": "header", + "required": true, + "type": "string", + "format": "url", + "x-ms-parameter-location": "method", + "description": "Specify a URL to the copy source." + }, + "StorageServiceProperties": { + "name": "StorageServiceProperties", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/StorageServiceProperties" + }, + "x-ms-parameter-location": "method", + "description": "The StorageService properties." + }, + "Timeout": { + "name": "timeout", + "in": "query", + "required": false, + "type": "integer", + "minimum": 0, + "x-ms-parameter-location": "method", + "description": "The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations." + } + } +} \ No newline at end of file diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/highlevel.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/highlevel.go new file mode 100644 index 0000000..af09443 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/highlevel.go @@ -0,0 +1,543 @@ +package azblob + +import ( + "context" + "encoding/base64" + "io" + "net/http" + + "bytes" + "os" + "sync" + "time" + + "errors" + + "github.com/Azure/azure-pipeline-go/pipeline" +) + +// CommonResponse returns the headers common to all blob REST API responses. +type CommonResponse interface { + // ETag returns the value for header ETag. + ETag() ETag + + // LastModified returns the value for header Last-Modified. + LastModified() time.Time + + // RequestID returns the value for header x-ms-request-id. + RequestID() string + + // Date returns the value for header Date. + Date() time.Time + + // Version returns the value for header x-ms-version. + Version() string + + // Response returns the raw HTTP response object. + Response() *http.Response +} + +// UploadToBlockBlobOptions identifies options used by the UploadBufferToBlockBlob and UploadFileToBlockBlob functions. +type UploadToBlockBlobOptions struct { + // BlockSize specifies the block size to use; the default (and maximum size) is BlockBlobMaxStageBlockBytes. + BlockSize int64 + + // Progress is a function that is invoked periodically as bytes are sent to the BlockBlobURL. + // Note that the progress reporting is not always increasing; it can go down when retrying a request. + Progress pipeline.ProgressReceiver + + // BlobHTTPHeaders indicates the HTTP headers to be associated with the blob. + BlobHTTPHeaders BlobHTTPHeaders + + // Metadata indicates the metadata to be associated with the blob when PutBlockList is called. + Metadata Metadata + + // AccessConditions indicates the access conditions for the block blob. + AccessConditions BlobAccessConditions + + // Parallelism indicates the maximum number of blocks to upload in parallel (0=default) + Parallelism uint16 +} + +// UploadBufferToBlockBlob uploads a buffer in blocks to a block blob. +func UploadBufferToBlockBlob(ctx context.Context, b []byte, + blockBlobURL BlockBlobURL, o UploadToBlockBlobOptions) (CommonResponse, error) { + bufferSize := int64(len(b)) + if o.BlockSize == 0 { + // If bufferSize > (BlockBlobMaxStageBlockBytes * BlockBlobMaxBlocks), then error + if bufferSize > BlockBlobMaxStageBlockBytes*BlockBlobMaxBlocks { + return nil, errors.New("buffer is too large to upload to a block blob") + } + // If bufferSize <= BlockBlobMaxUploadBlobBytes, then Upload should be used with just 1 I/O request + if bufferSize <= BlockBlobMaxUploadBlobBytes { + o.BlockSize = BlockBlobMaxUploadBlobBytes // Default if unspecified + } else { + o.BlockSize = bufferSize / BlockBlobMaxBlocks // buffer / max blocks = block size to use all 50,000 blocks + if o.BlockSize < BlobDefaultDownloadBlockSize { // If the block size is smaller than 4MB, round up to 4MB + o.BlockSize = BlobDefaultDownloadBlockSize + } + // StageBlock will be called with blockSize blocks and a Parallelism of (BufferSize / BlockSize). + } + } + + if bufferSize <= BlockBlobMaxUploadBlobBytes { + // If the size can fit in 1 Upload call, do it this way + var body io.ReadSeeker = bytes.NewReader(b) + if o.Progress != nil { + body = pipeline.NewRequestBodyProgress(body, o.Progress) + } + return blockBlobURL.Upload(ctx, body, o.BlobHTTPHeaders, o.Metadata, o.AccessConditions) + } + + var numBlocks = uint16(((bufferSize - 1) / o.BlockSize) + 1) + + blockIDList := make([]string, numBlocks) // Base-64 encoded block IDs + progress := int64(0) + progressLock := &sync.Mutex{} + + err := DoBatchTransfer(ctx, BatchTransferOptions{ + OperationName: "UploadBufferToBlockBlob", + TransferSize: bufferSize, + ChunkSize: o.BlockSize, + Parallelism: o.Parallelism, + Operation: func(offset int64, count int64, ctx context.Context) error { + // This function is called once per block. + // It is passed this block's offset within the buffer and its count of bytes + // Prepare to read the proper block/section of the buffer + var body io.ReadSeeker = bytes.NewReader(b[offset : offset+count]) + blockNum := offset / o.BlockSize + if o.Progress != nil { + blockProgress := int64(0) + body = pipeline.NewRequestBodyProgress(body, + func(bytesTransferred int64) { + diff := bytesTransferred - blockProgress + blockProgress = bytesTransferred + progressLock.Lock() // 1 goroutine at a time gets a progress report + progress += diff + o.Progress(progress) + progressLock.Unlock() + }) + } + + // Block IDs are unique values to avoid issue if 2+ clients are uploading blocks + // at the same time causing PutBlockList to get a mix of blocks from all the clients. + blockIDList[blockNum] = base64.StdEncoding.EncodeToString(newUUID().bytes()) + _, err := blockBlobURL.StageBlock(ctx, blockIDList[blockNum], body, o.AccessConditions.LeaseAccessConditions, nil) + return err + }, + }) + if err != nil { + return nil, err + } + // All put blocks were successful, call Put Block List to finalize the blob + return blockBlobURL.CommitBlockList(ctx, blockIDList, o.BlobHTTPHeaders, o.Metadata, o.AccessConditions) +} + +// UploadFileToBlockBlob uploads a file in blocks to a block blob. +func UploadFileToBlockBlob(ctx context.Context, file *os.File, + blockBlobURL BlockBlobURL, o UploadToBlockBlobOptions) (CommonResponse, error) { + + stat, err := file.Stat() + if err != nil { + return nil, err + } + m := mmf{} // Default to an empty slice; used for 0-size file + if stat.Size() != 0 { + m, err = newMMF(file, false, 0, int(stat.Size())) + if err != nil { + return nil, err + } + defer m.unmap() + } + return UploadBufferToBlockBlob(ctx, m, blockBlobURL, o) +} + +/////////////////////////////////////////////////////////////////////////////// + +const BlobDefaultDownloadBlockSize = int64(4 * 1024 * 1024) // 4MB + +// DownloadFromBlobOptions identifies options used by the DownloadBlobToBuffer and DownloadBlobToFile functions. +type DownloadFromBlobOptions struct { + // BlockSize specifies the block size to use for each parallel download; the default size is BlobDefaultDownloadBlockSize. + BlockSize int64 + + // Progress is a function that is invoked periodically as bytes are received. + Progress pipeline.ProgressReceiver + + // AccessConditions indicates the access conditions used when making HTTP GET requests against the blob. + AccessConditions BlobAccessConditions + + // Parallelism indicates the maximum number of blocks to download in parallel (0=default) + Parallelism uint16 + + // RetryReaderOptionsPerBlock is used when downloading each block. + RetryReaderOptionsPerBlock RetryReaderOptions +} + +// downloadBlobToBuffer downloads an Azure blob to a buffer with parallel. +func downloadBlobToBuffer(ctx context.Context, blobURL BlobURL, offset int64, count int64, + b []byte, o DownloadFromBlobOptions, initialDownloadResponse *DownloadResponse) error { + if o.BlockSize == 0 { + o.BlockSize = BlobDefaultDownloadBlockSize + } + + if count == CountToEnd { // If size not specified, calculate it + if initialDownloadResponse != nil { + count = initialDownloadResponse.ContentLength() - offset // if we have the length, use it + } else { + // If we don't have the length at all, get it + dr, err := blobURL.Download(ctx, 0, CountToEnd, o.AccessConditions, false) + if err != nil { + return err + } + count = dr.ContentLength() - offset + } + } + + // Prepare and do parallel download. + progress := int64(0) + progressLock := &sync.Mutex{} + + err := DoBatchTransfer(ctx, BatchTransferOptions{ + OperationName: "downloadBlobToBuffer", + TransferSize: count, + ChunkSize: o.BlockSize, + Parallelism: o.Parallelism, + Operation: func(chunkStart int64, count int64, ctx context.Context) error { + dr, err := blobURL.Download(ctx, chunkStart+offset, count, o.AccessConditions, false) + if err != nil { + return err + } + body := dr.Body(o.RetryReaderOptionsPerBlock) + if o.Progress != nil { + rangeProgress := int64(0) + body = pipeline.NewResponseBodyProgress( + body, + func(bytesTransferred int64) { + diff := bytesTransferred - rangeProgress + rangeProgress = bytesTransferred + progressLock.Lock() + progress += diff + o.Progress(progress) + progressLock.Unlock() + }) + } + _, err = io.ReadFull(body, b[chunkStart:chunkStart+count]) + body.Close() + return err + }, + }) + if err != nil { + return err + } + return nil +} + +// DownloadBlobToBuffer downloads an Azure blob to a buffer with parallel. +// Offset and count are optional, pass 0 for both to download the entire blob. +func DownloadBlobToBuffer(ctx context.Context, blobURL BlobURL, offset int64, count int64, + b []byte, o DownloadFromBlobOptions) error { + return downloadBlobToBuffer(ctx, blobURL, offset, count, b, o, nil) +} + +// DownloadBlobToFile downloads an Azure blob to a local file. +// The file would be truncated if the size doesn't match. +// Offset and count are optional, pass 0 for both to download the entire blob. +func DownloadBlobToFile(ctx context.Context, blobURL BlobURL, offset int64, count int64, + file *os.File, o DownloadFromBlobOptions) error { + // 1. Calculate the size of the destination file + var size int64 + + if count == CountToEnd { + // Try to get Azure blob's size + props, err := blobURL.GetProperties(ctx, o.AccessConditions) + if err != nil { + return err + } + size = props.ContentLength() - offset + } else { + size = count + } + + // 2. Compare and try to resize local file's size if it doesn't match Azure blob's size. + stat, err := file.Stat() + if err != nil { + return err + } + if stat.Size() != size { + if err = file.Truncate(size); err != nil { + return err + } + } + + if size > 0 { + // 3. Set mmap and call downloadBlobToBuffer. + m, err := newMMF(file, true, 0, int(size)) + if err != nil { + return err + } + defer m.unmap() + return downloadBlobToBuffer(ctx, blobURL, offset, size, m, o, nil) + } else { // if the blob's size is 0, there is no need in downloading it + return nil + } +} + +/////////////////////////////////////////////////////////////////////////////// + +// BatchTransferOptions identifies options used by DoBatchTransfer. +type BatchTransferOptions struct { + TransferSize int64 + ChunkSize int64 + Parallelism uint16 + Operation func(offset int64, chunkSize int64, ctx context.Context) error + OperationName string +} + +// DoBatchTransfer helps to execute operations in a batch manner. +// Can be used by users to customize batch works (for other scenarios that the SDK does not provide) +func DoBatchTransfer(ctx context.Context, o BatchTransferOptions) error { + if o.ChunkSize == 0 { + return errors.New("ChunkSize cannot be 0") + } + + // Prepare and do parallel operations. + numChunks := uint16(((o.TransferSize - 1) / o.ChunkSize) + 1) + operationChannel := make(chan func() error, o.Parallelism) // Create the channel that release 'Parallelism' goroutines concurrently + operationResponseChannel := make(chan error, numChunks) // Holds each response + ctx, cancel := context.WithCancel(ctx) + defer cancel() + + // Create the goroutines that process each operation (in parallel). + if o.Parallelism == 0 { + o.Parallelism = 5 // default Parallelism + } + for g := uint16(0); g < o.Parallelism; g++ { + //grIndex := g + go func() { + for f := range operationChannel { + err := f() + operationResponseChannel <- err + } + }() + } + + // Add each chunk's operation to the channel. + for chunkNum := uint16(0); chunkNum < numChunks; chunkNum++ { + curChunkSize := o.ChunkSize + + if chunkNum == numChunks-1 { // Last chunk + curChunkSize = o.TransferSize - (int64(chunkNum) * o.ChunkSize) // Remove size of all transferred chunks from total + } + offset := int64(chunkNum) * o.ChunkSize + + operationChannel <- func() error { + return o.Operation(offset, curChunkSize, ctx) + } + } + close(operationChannel) + + // Wait for the operations to complete. + var firstErr error = nil + for chunkNum := uint16(0); chunkNum < numChunks; chunkNum++ { + responseError := <-operationResponseChannel + // record the first error (the original error which should cause the other chunks to fail with canceled context) + if responseError != nil && firstErr == nil { + cancel() // As soon as any operation fails, cancel all remaining operation calls + firstErr = responseError + } + } + return firstErr +} + +//////////////////////////////////////////////////////////////////////////////////////////////// + +type UploadStreamToBlockBlobOptions struct { + BufferSize int + MaxBuffers int + BlobHTTPHeaders BlobHTTPHeaders + Metadata Metadata + AccessConditions BlobAccessConditions +} + +func UploadStreamToBlockBlob(ctx context.Context, reader io.Reader, blockBlobURL BlockBlobURL, + o UploadStreamToBlockBlobOptions) (CommonResponse, error) { + result, err := uploadStream(ctx, reader, + UploadStreamOptions{BufferSize: o.BufferSize, MaxBuffers: o.MaxBuffers}, + &uploadStreamToBlockBlobOptions{b: blockBlobURL, o: o, blockIDPrefix: newUUID()}) + if err != nil { + return nil, err + } + return result.(CommonResponse), nil +} + +type uploadStreamToBlockBlobOptions struct { + b BlockBlobURL + o UploadStreamToBlockBlobOptions + blockIDPrefix uuid // UUID used with all blockIDs + maxBlockNum uint32 // defaults to 0 + firstBlock []byte // Used only if maxBlockNum is 0 +} + +func (t *uploadStreamToBlockBlobOptions) start(ctx context.Context) (interface{}, error) { + return nil, nil +} + +func (t *uploadStreamToBlockBlobOptions) chunk(ctx context.Context, num uint32, buffer []byte) error { + if num == 0 { + t.firstBlock = buffer + + // If whole payload fits in 1 block, don't stage it; End will upload it with 1 I/O operation + // If the payload is exactly the same size as the buffer, there may be more content coming in. + if len(buffer) < t.o.BufferSize { + return nil + } + } + // Else, upload a staged block... + atomicMorphUint32(&t.maxBlockNum, func(startVal uint32) (val uint32, morphResult interface{}) { + // Atomically remember (in t.numBlocks) the maximum block num we've ever seen + if startVal < num { + return num, nil + } + return startVal, nil + }) + blockID := newUuidBlockID(t.blockIDPrefix).WithBlockNumber(num).ToBase64() + _, err := t.b.StageBlock(ctx, blockID, bytes.NewReader(buffer), LeaseAccessConditions{}, nil) + return err +} + +func (t *uploadStreamToBlockBlobOptions) end(ctx context.Context) (interface{}, error) { + // If the first block had the exact same size as the buffer + // we would have staged it as a block thinking that there might be more data coming + if t.maxBlockNum == 0 && len(t.firstBlock) != t.o.BufferSize { + // If whole payload fits in 1 block (block #0), upload it with 1 I/O operation + return t.b.Upload(ctx, bytes.NewReader(t.firstBlock), + t.o.BlobHTTPHeaders, t.o.Metadata, t.o.AccessConditions) + } + // Multiple blocks staged, commit them all now + blockID := newUuidBlockID(t.blockIDPrefix) + blockIDs := make([]string, t.maxBlockNum+1) + for bn := uint32(0); bn <= t.maxBlockNum; bn++ { + blockIDs[bn] = blockID.WithBlockNumber(bn).ToBase64() + } + return t.b.CommitBlockList(ctx, blockIDs, t.o.BlobHTTPHeaders, t.o.Metadata, t.o.AccessConditions) +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +type iTransfer interface { + start(ctx context.Context) (interface{}, error) + chunk(ctx context.Context, num uint32, buffer []byte) error + end(ctx context.Context) (interface{}, error) +} + +type UploadStreamOptions struct { + MaxBuffers int + BufferSize int +} + +type firstErr struct { + lock sync.Mutex + finalError error +} + +func (fe *firstErr) set(err error) { + fe.lock.Lock() + if fe.finalError == nil { + fe.finalError = err + } + fe.lock.Unlock() +} + +func (fe *firstErr) get() (err error) { + fe.lock.Lock() + err = fe.finalError + fe.lock.Unlock() + return +} + +func uploadStream(ctx context.Context, reader io.Reader, o UploadStreamOptions, t iTransfer) (interface{}, error) { + firstErr := firstErr{} + ctx, cancel := context.WithCancel(ctx) // New context so that any failure cancels everything + defer cancel() + wg := sync.WaitGroup{} // Used to know when all outgoing messages have finished processing + type OutgoingMsg struct { + chunkNum uint32 + buffer []byte + } + + // Create a channel to hold the buffers usable for incoming datsa + incoming := make(chan []byte, o.MaxBuffers) + outgoing := make(chan OutgoingMsg, o.MaxBuffers) // Channel holding outgoing buffers + if result, err := t.start(ctx); err != nil { + return result, err + } + + numBuffers := 0 // The number of buffers & out going goroutines created so far + injectBuffer := func() { + // For each Buffer, create it and a goroutine to upload it + incoming <- make([]byte, o.BufferSize) // Add the new buffer to the incoming channel so this goroutine can from the reader into it + numBuffers++ + go func() { + for outgoingMsg := range outgoing { + // Upload the outgoing buffer + err := t.chunk(ctx, outgoingMsg.chunkNum, outgoingMsg.buffer) + wg.Done() // Indicate this buffer was sent + if nil != err { + // NOTE: finalErr could be assigned to multiple times here which is OK, + // some error will be returned. + firstErr.set(err) + cancel() + } + incoming <- outgoingMsg.buffer // The goroutine reading from the stream can reuse this buffer now + } + }() + } + injectBuffer() // Create our 1st buffer & outgoing goroutine + + // This goroutine grabs a buffer, reads from the stream into the buffer, + // and inserts the buffer into the outgoing channel to be uploaded + for c := uint32(0); true; c++ { // Iterate once per chunk + var buffer []byte + if numBuffers < o.MaxBuffers { + select { + // We're not at max buffers, see if a previously-created buffer is available + case buffer = <-incoming: + break + default: + // No buffer available; inject a new buffer & go routine to process it + injectBuffer() + buffer = <-incoming // Grab the just-injected buffer + } + } else { + // We are at max buffers, block until we get to reuse one + buffer = <-incoming + } + n, err := io.ReadFull(reader, buffer) + if err != nil { // Less than len(buffer) bytes were read + buffer = buffer[:n] // Make slice match the # of read bytes + } + if len(buffer) > 0 { + // Buffer not empty, upload it + wg.Add(1) // We're posting a buffer to be sent + outgoing <- OutgoingMsg{chunkNum: c, buffer: buffer} + } + if err != nil { // The reader is done, no more outgoing buffers + if err == io.EOF || err == io.ErrUnexpectedEOF { + err = nil // This function does NOT return an error if io.ReadFull returns io.EOF or io.ErrUnexpectedEOF + } else { + firstErr.set(err) + } + break + } + } + // NOTE: Don't close the incoming channel because the outgoing goroutines post buffers into it when they are done + close(outgoing) // Make all the outgoing goroutines terminate when this channel is empty + wg.Wait() // Wait for all pending outgoing messages to complete + err := firstErr.get() + if err == nil { + // If no error, after all blocks uploaded, commit them to the blob & return the result + return t.end(ctx) + } + return nil, err +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/parsing_urls.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/parsing_urls.go new file mode 100644 index 0000000..067939b --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/parsing_urls.go @@ -0,0 +1,153 @@ +package azblob + +import ( + "net" + "net/url" + "strings" +) + +const ( + snapshot = "snapshot" + SnapshotTimeFormat = "2006-01-02T15:04:05.0000000Z07:00" +) + +// A BlobURLParts object represents the components that make up an Azure Storage Container/Blob URL. You parse an +// existing URL into its parts by calling NewBlobURLParts(). You construct a URL from parts by calling URL(). +// NOTE: Changing any SAS-related field requires computing a new SAS signature. +type BlobURLParts struct { + Scheme string // Ex: "https://" + Host string // Ex: "account.blob.core.windows.net", "10.132.141.33", "10.132.141.33:80" + IPEndpointStyleInfo IPEndpointStyleInfo + ContainerName string // "" if no container + BlobName string // "" if no blob + Snapshot string // "" if not a snapshot + SAS SASQueryParameters + UnparsedParams string +} + +// IPEndpointStyleInfo is used for IP endpoint style URL when working with Azure storage emulator. +// Ex: "https://10.132.141.33/accountname/containername" +type IPEndpointStyleInfo struct { + AccountName string // "" if not using IP endpoint style +} + +// isIPEndpointStyle checkes if URL's host is IP, in this case the storage account endpoint will be composed as: +// http(s)://IP(:port)/storageaccount/container/... +// As url's Host property, host could be both host or host:port +func isIPEndpointStyle(host string) bool { + if host == "" { + return false + } + if h, _, err := net.SplitHostPort(host); err == nil { + host = h + } + // For IPv6, there could be case where SplitHostPort fails for cannot finding port. + // In this case, eliminate the '[' and ']' in the URL. + // For details about IPv6 URL, please refer to https://tools.ietf.org/html/rfc2732 + if host[0] == '[' && host[len(host)-1] == ']' { + host = host[1 : len(host)-1] + } + return net.ParseIP(host) != nil +} + +// NewBlobURLParts parses a URL initializing BlobURLParts' fields including any SAS-related & snapshot query parameters. Any other +// query parameters remain in the UnparsedParams field. This method overwrites all fields in the BlobURLParts object. +func NewBlobURLParts(u url.URL) BlobURLParts { + up := BlobURLParts{ + Scheme: u.Scheme, + Host: u.Host, + } + + // Find the container & blob names (if any) + if u.Path != "" { + path := u.Path + if path[0] == '/' { + path = path[1:] // If path starts with a slash, remove it + } + if isIPEndpointStyle(up.Host) { + if accountEndIndex := strings.Index(path, "/"); accountEndIndex == -1 { // Slash not found; path has account name & no container name or blob + up.IPEndpointStyleInfo.AccountName = path + } else { + up.IPEndpointStyleInfo.AccountName = path[:accountEndIndex] // The account name is the part between the slashes + path = path[accountEndIndex+1:] // path refers to portion after the account name now (container & blob names) + } + } + + containerEndIndex := strings.Index(path, "/") // Find the next slash (if it exists) + if containerEndIndex == -1 { // Slash not found; path has container name & no blob name + up.ContainerName = path + } else { + up.ContainerName = path[:containerEndIndex] // The container name is the part between the slashes + up.BlobName = path[containerEndIndex+1:] // The blob name is after the container slash + } + } + + // Convert the query parameters to a case-sensitive map & trim whitespace + paramsMap := u.Query() + + up.Snapshot = "" // Assume no snapshot + if snapshotStr, ok := caseInsensitiveValues(paramsMap).Get(snapshot); ok { + up.Snapshot = snapshotStr[0] + // If we recognized the query parameter, remove it from the map + delete(paramsMap, snapshot) + } + up.SAS = newSASQueryParameters(paramsMap, true) + up.UnparsedParams = paramsMap.Encode() + return up +} + +type caseInsensitiveValues url.Values // map[string][]string +func (values caseInsensitiveValues) Get(key string) ([]string, bool) { + key = strings.ToLower(key) + for k, v := range values { + if strings.ToLower(k) == key { + return v, true + } + } + return []string{}, false +} + +// URL returns a URL object whose fields are initialized from the BlobURLParts fields. The URL's RawQuery +// field contains the SAS, snapshot, and unparsed query parameters. +func (up BlobURLParts) URL() url.URL { + path := "" + if isIPEndpointStyle(up.Host) && up.IPEndpointStyleInfo.AccountName != "" { + path += "/" + up.IPEndpointStyleInfo.AccountName + } + // Concatenate container & blob names (if they exist) + if up.ContainerName != "" { + path += "/" + up.ContainerName + if up.BlobName != "" { + path += "/" + up.BlobName + } + } + + rawQuery := up.UnparsedParams + + //If no snapshot is initially provided, fill it in from the SAS query properties to help the user + if up.Snapshot == "" && !up.SAS.snapshotTime.IsZero() { + up.Snapshot = up.SAS.snapshotTime.Format(SnapshotTimeFormat) + } + + // Concatenate blob snapshot query parameter (if it exists) + if up.Snapshot != "" { + if len(rawQuery) > 0 { + rawQuery += "&" + } + rawQuery += snapshot + "=" + up.Snapshot + } + sas := up.SAS.Encode() + if sas != "" { + if len(rawQuery) > 0 { + rawQuery += "&" + } + rawQuery += sas + } + u := url.URL{ + Scheme: up.Scheme, + Host: up.Host, + Path: path, + RawQuery: rawQuery, + } + return u +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/sas_service.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/sas_service.go new file mode 100644 index 0000000..4d45d3e --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/sas_service.go @@ -0,0 +1,256 @@ +package azblob + +import ( + "bytes" + "fmt" + "strings" + "time" +) + +// BlobSASSignatureValues is used to generate a Shared Access Signature (SAS) for an Azure Storage container or blob. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/constructing-a-service-sas +type BlobSASSignatureValues struct { + Version string `param:"sv"` // If not specified, this defaults to SASVersion + Protocol SASProtocol `param:"spr"` // See the SASProtocol* constants + StartTime time.Time `param:"st"` // Not specified if IsZero + ExpiryTime time.Time `param:"se"` // Not specified if IsZero + SnapshotTime time.Time + Permissions string `param:"sp"` // Create by initializing a ContainerSASPermissions or BlobSASPermissions and then call String() + IPRange IPRange `param:"sip"` + Identifier string `param:"si"` + ContainerName string + BlobName string // Use "" to create a Container SAS + CacheControl string // rscc + ContentDisposition string // rscd + ContentEncoding string // rsce + ContentLanguage string // rscl + ContentType string // rsct +} + +// NewSASQueryParameters uses an account's StorageAccountCredential to sign this signature values to produce +// the proper SAS query parameters. +// See: StorageAccountCredential. Compatible with both UserDelegationCredential and SharedKeyCredential +func (v BlobSASSignatureValues) NewSASQueryParameters(credential StorageAccountCredential) (SASQueryParameters, error) { + resource := "c" + if credential == nil { + return SASQueryParameters{}, fmt.Errorf("cannot sign SAS query without StorageAccountCredential") + } + + if !v.SnapshotTime.IsZero() { + resource = "bs" + //Make sure the permission characters are in the correct order + perms := &BlobSASPermissions{} + if err := perms.Parse(v.Permissions); err != nil { + return SASQueryParameters{}, err + } + v.Permissions = perms.String() + } else if v.BlobName == "" { + // Make sure the permission characters are in the correct order + perms := &ContainerSASPermissions{} + if err := perms.Parse(v.Permissions); err != nil { + return SASQueryParameters{}, err + } + v.Permissions = perms.String() + } else { + resource = "b" + // Make sure the permission characters are in the correct order + perms := &BlobSASPermissions{} + if err := perms.Parse(v.Permissions); err != nil { + return SASQueryParameters{}, err + } + v.Permissions = perms.String() + } + if v.Version == "" { + v.Version = SASVersion + } + startTime, expiryTime, snapshotTime := FormatTimesForSASSigning(v.StartTime, v.ExpiryTime, v.SnapshotTime) + + signedIdentifier := v.Identifier + + udk := credential.getUDKParams() + + if udk != nil { + udkStart, udkExpiry, _ := FormatTimesForSASSigning(udk.SignedStart, udk.SignedExpiry, time.Time{}) + //I don't like this answer to combining the functions + //But because signedIdentifier and the user delegation key strings share a place, this is an _OK_ way to do it. + signedIdentifier = strings.Join([]string{ + udk.SignedOid, + udk.SignedTid, + udkStart, + udkExpiry, + udk.SignedService, + udk.SignedVersion, + }, "\n") + } + + // String to sign: http://msdn.microsoft.com/en-us/library/azure/dn140255.aspx + stringToSign := strings.Join([]string{ + v.Permissions, + startTime, + expiryTime, + getCanonicalName(credential.AccountName(), v.ContainerName, v.BlobName), + signedIdentifier, + v.IPRange.String(), + string(v.Protocol), + v.Version, + resource, + snapshotTime, // signed timestamp + v.CacheControl, // rscc + v.ContentDisposition, // rscd + v.ContentEncoding, // rsce + v.ContentLanguage, // rscl + v.ContentType}, // rsct + "\n") + + signature := "" + signature = credential.ComputeHMACSHA256(stringToSign) + + p := SASQueryParameters{ + // Common SAS parameters + version: v.Version, + protocol: v.Protocol, + startTime: v.StartTime, + expiryTime: v.ExpiryTime, + permissions: v.Permissions, + ipRange: v.IPRange, + + // Container/Blob-specific SAS parameters + resource: resource, + identifier: v.Identifier, + cacheControl: v.CacheControl, + contentDisposition: v.ContentDisposition, + contentEncoding: v.ContentEncoding, + contentLanguage: v.ContentLanguage, + contentType: v.ContentType, + snapshotTime: v.SnapshotTime, + + // Calculated SAS signature + signature: signature, + } + + //User delegation SAS specific parameters + if udk != nil { + p.signedOid = udk.SignedOid + p.signedTid = udk.SignedTid + p.signedStart = udk.SignedStart + p.signedExpiry = udk.SignedExpiry + p.signedService = udk.SignedService + p.signedVersion = udk.SignedVersion + } + + return p, nil +} + +// getCanonicalName computes the canonical name for a container or blob resource for SAS signing. +func getCanonicalName(account string, containerName string, blobName string) string { + // Container: "/blob/account/containername" + // Blob: "/blob/account/containername/blobname" + elements := []string{"/blob/", account, "/", containerName} + if blobName != "" { + elements = append(elements, "/", strings.Replace(blobName, "\\", "/", -1)) + } + return strings.Join(elements, "") +} + +// The ContainerSASPermissions type simplifies creating the permissions string for an Azure Storage container SAS. +// Initialize an instance of this type and then call its String method to set BlobSASSignatureValues's Permissions field. +type ContainerSASPermissions struct { + Read, Add, Create, Write, Delete, List bool +} + +// String produces the SAS permissions string for an Azure Storage container. +// Call this method to set BlobSASSignatureValues's Permissions field. +func (p ContainerSASPermissions) String() string { + var b bytes.Buffer + if p.Read { + b.WriteRune('r') + } + if p.Add { + b.WriteRune('a') + } + if p.Create { + b.WriteRune('c') + } + if p.Write { + b.WriteRune('w') + } + if p.Delete { + b.WriteRune('d') + } + if p.List { + b.WriteRune('l') + } + return b.String() +} + +// Parse initializes the ContainerSASPermissions's fields from a string. +func (p *ContainerSASPermissions) Parse(s string) error { + *p = ContainerSASPermissions{} // Clear the flags + for _, r := range s { + switch r { + case 'r': + p.Read = true + case 'a': + p.Add = true + case 'c': + p.Create = true + case 'w': + p.Write = true + case 'd': + p.Delete = true + case 'l': + p.List = true + default: + return fmt.Errorf("Invalid permission: '%v'", r) + } + } + return nil +} + +// The BlobSASPermissions type simplifies creating the permissions string for an Azure Storage blob SAS. +// Initialize an instance of this type and then call its String method to set BlobSASSignatureValues's Permissions field. +type BlobSASPermissions struct{ Read, Add, Create, Write, Delete bool } + +// String produces the SAS permissions string for an Azure Storage blob. +// Call this method to set BlobSASSignatureValues's Permissions field. +func (p BlobSASPermissions) String() string { + var b bytes.Buffer + if p.Read { + b.WriteRune('r') + } + if p.Add { + b.WriteRune('a') + } + if p.Create { + b.WriteRune('c') + } + if p.Write { + b.WriteRune('w') + } + if p.Delete { + b.WriteRune('d') + } + return b.String() +} + +// Parse initializes the BlobSASPermissions's fields from a string. +func (p *BlobSASPermissions) Parse(s string) error { + *p = BlobSASPermissions{} // Clear the flags + for _, r := range s { + switch r { + case 'r': + p.Read = true + case 'a': + p.Add = true + case 'c': + p.Create = true + case 'w': + p.Write = true + case 'd': + p.Delete = true + default: + return fmt.Errorf("Invalid permission: '%v'", r) + } + } + return nil +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/service_codes_blob.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/service_codes_blob.go new file mode 100644 index 0000000..d260f8a --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/service_codes_blob.go @@ -0,0 +1,195 @@ +package azblob + +// https://docs.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes + +// ServiceCode values indicate a service failure. +const ( + // ServiceCodeAppendPositionConditionNotMet means the append position condition specified was not met. + ServiceCodeAppendPositionConditionNotMet ServiceCodeType = "AppendPositionConditionNotMet" + + // ServiceCodeBlobAlreadyExists means the specified blob already exists. + ServiceCodeBlobAlreadyExists ServiceCodeType = "BlobAlreadyExists" + + // ServiceCodeBlobNotFound means the specified blob does not exist. + ServiceCodeBlobNotFound ServiceCodeType = "BlobNotFound" + + // ServiceCodeBlobOverwritten means the blob has been recreated since the previous snapshot was taken. + ServiceCodeBlobOverwritten ServiceCodeType = "BlobOverwritten" + + // ServiceCodeBlobTierInadequateForContentLength means the specified blob tier size limit cannot be less than content length. + ServiceCodeBlobTierInadequateForContentLength ServiceCodeType = "BlobTierInadequateForContentLength" + + // ServiceCodeBlockCountExceedsLimit means the committed block count cannot exceed the maximum limit of 50,000 blocks + // or that the uncommitted block count cannot exceed the maximum limit of 100,000 blocks. + ServiceCodeBlockCountExceedsLimit ServiceCodeType = "BlockCountExceedsLimit" + + // ServiceCodeBlockListTooLong means the block list may not contain more than 50,000 blocks. + ServiceCodeBlockListTooLong ServiceCodeType = "BlockListTooLong" + + // ServiceCodeCannotChangeToLowerTier means that a higher blob tier has already been explicitly set. + ServiceCodeCannotChangeToLowerTier ServiceCodeType = "CannotChangeToLowerTier" + + // ServiceCodeCannotVerifyCopySource means that the service could not verify the copy source within the specified time. + // Examine the HTTP status code and message for more information about the failure. + ServiceCodeCannotVerifyCopySource ServiceCodeType = "CannotVerifyCopySource" + + // ServiceCodeContainerAlreadyExists means the specified container already exists. + ServiceCodeContainerAlreadyExists ServiceCodeType = "ContainerAlreadyExists" + + // ServiceCodeContainerBeingDeleted means the specified container is being deleted. + ServiceCodeContainerBeingDeleted ServiceCodeType = "ContainerBeingDeleted" + + // ServiceCodeContainerDisabled means the specified container has been disabled by the administrator. + ServiceCodeContainerDisabled ServiceCodeType = "ContainerDisabled" + + // ServiceCodeContainerNotFound means the specified container does not exist. + ServiceCodeContainerNotFound ServiceCodeType = "ContainerNotFound" + + // ServiceCodeContentLengthLargerThanTierLimit means the blob's content length cannot exceed its tier limit. + ServiceCodeContentLengthLargerThanTierLimit ServiceCodeType = "ContentLengthLargerThanTierLimit" + + // ServiceCodeCopyAcrossAccountsNotSupported means the copy source account and destination account must be the same. + ServiceCodeCopyAcrossAccountsNotSupported ServiceCodeType = "CopyAcrossAccountsNotSupported" + + // ServiceCodeCopyIDMismatch means the specified copy ID did not match the copy ID for the pending copy operation. + ServiceCodeCopyIDMismatch ServiceCodeType = "CopyIdMismatch" + + // ServiceCodeFeatureVersionMismatch means the type of blob in the container is unrecognized by this version or + // that the operation for AppendBlob requires at least version 2015-02-21. + ServiceCodeFeatureVersionMismatch ServiceCodeType = "FeatureVersionMismatch" + + // ServiceCodeIncrementalCopyBlobMismatch means the specified source blob is different than the copy source of the existing incremental copy blob. + ServiceCodeIncrementalCopyBlobMismatch ServiceCodeType = "IncrementalCopyBlobMismatch" + + // ServiceCodeIncrementalCopyOfEralierVersionSnapshotNotAllowed means the specified snapshot is earlier than the last snapshot copied into the incremental copy blob. + ServiceCodeIncrementalCopyOfEralierVersionSnapshotNotAllowed ServiceCodeType = "IncrementalCopyOfEralierVersionSnapshotNotAllowed" + + // ServiceCodeIncrementalCopySourceMustBeSnapshot means the source for incremental copy request must be a snapshot. + ServiceCodeIncrementalCopySourceMustBeSnapshot ServiceCodeType = "IncrementalCopySourceMustBeSnapshot" + + // ServiceCodeInfiniteLeaseDurationRequired means the lease ID matched, but the specified lease must be an infinite-duration lease. + ServiceCodeInfiniteLeaseDurationRequired ServiceCodeType = "InfiniteLeaseDurationRequired" + + // ServiceCodeInvalidBlobOrBlock means the specified blob or block content is invalid. + ServiceCodeInvalidBlobOrBlock ServiceCodeType = "InvalidBlobOrBlock" + + // ServiceCodeInvalidBlobType means the blob type is invalid for this operation. + ServiceCodeInvalidBlobType ServiceCodeType = "InvalidBlobType" + + // ServiceCodeInvalidBlockID means the specified block ID is invalid. The block ID must be Base64-encoded. + ServiceCodeInvalidBlockID ServiceCodeType = "InvalidBlockId" + + // ServiceCodeInvalidBlockList means the specified block list is invalid. + ServiceCodeInvalidBlockList ServiceCodeType = "InvalidBlockList" + + // ServiceCodeInvalidOperation means an invalid operation against a blob snapshot. + ServiceCodeInvalidOperation ServiceCodeType = "InvalidOperation" + + // ServiceCodeInvalidPageRange means the page range specified is invalid. + ServiceCodeInvalidPageRange ServiceCodeType = "InvalidPageRange" + + // ServiceCodeInvalidSourceBlobType means the copy source blob type is invalid for this operation. + ServiceCodeInvalidSourceBlobType ServiceCodeType = "InvalidSourceBlobType" + + // ServiceCodeInvalidSourceBlobURL means the source URL for incremental copy request must be valid Azure Storage blob URL. + ServiceCodeInvalidSourceBlobURL ServiceCodeType = "InvalidSourceBlobUrl" + + // ServiceCodeInvalidVersionForPageBlobOperation means that all operations on page blobs require at least version 2009-09-19. + ServiceCodeInvalidVersionForPageBlobOperation ServiceCodeType = "InvalidVersionForPageBlobOperation" + + // ServiceCodeLeaseAlreadyPresent means there is already a lease present. + ServiceCodeLeaseAlreadyPresent ServiceCodeType = "LeaseAlreadyPresent" + + // ServiceCodeLeaseAlreadyBroken means the lease has already been broken and cannot be broken again. + ServiceCodeLeaseAlreadyBroken ServiceCodeType = "LeaseAlreadyBroken" + + // ServiceCodeLeaseIDMismatchWithBlobOperation means the lease ID specified did not match the lease ID for the blob. + ServiceCodeLeaseIDMismatchWithBlobOperation ServiceCodeType = "LeaseIdMismatchWithBlobOperation" + + // ServiceCodeLeaseIDMismatchWithContainerOperation means the lease ID specified did not match the lease ID for the container. + ServiceCodeLeaseIDMismatchWithContainerOperation ServiceCodeType = "LeaseIdMismatchWithContainerOperation" + + // ServiceCodeLeaseIDMismatchWithLeaseOperation means the lease ID specified did not match the lease ID for the blob/container. + ServiceCodeLeaseIDMismatchWithLeaseOperation ServiceCodeType = "LeaseIdMismatchWithLeaseOperation" + + // ServiceCodeLeaseIDMissing means there is currently a lease on the blob/container and no lease ID was specified in the request. + ServiceCodeLeaseIDMissing ServiceCodeType = "LeaseIdMissing" + + // ServiceCodeLeaseIsBreakingAndCannotBeAcquired means the lease ID matched, but the lease is currently in breaking state and cannot be acquired until it is broken. + ServiceCodeLeaseIsBreakingAndCannotBeAcquired ServiceCodeType = "LeaseIsBreakingAndCannotBeAcquired" + + // ServiceCodeLeaseIsBreakingAndCannotBeChanged means the lease ID matched, but the lease is currently in breaking state and cannot be changed. + ServiceCodeLeaseIsBreakingAndCannotBeChanged ServiceCodeType = "LeaseIsBreakingAndCannotBeChanged" + + // ServiceCodeLeaseIsBrokenAndCannotBeRenewed means the lease ID matched, but the lease has been broken explicitly and cannot be renewed. + ServiceCodeLeaseIsBrokenAndCannotBeRenewed ServiceCodeType = "LeaseIsBrokenAndCannotBeRenewed" + + // ServiceCodeLeaseLost means a lease ID was specified, but the lease for the blob/container has expired. + ServiceCodeLeaseLost ServiceCodeType = "LeaseLost" + + // ServiceCodeLeaseNotPresentWithBlobOperation means there is currently no lease on the blob. + ServiceCodeLeaseNotPresentWithBlobOperation ServiceCodeType = "LeaseNotPresentWithBlobOperation" + + // ServiceCodeLeaseNotPresentWithContainerOperation means there is currently no lease on the container. + ServiceCodeLeaseNotPresentWithContainerOperation ServiceCodeType = "LeaseNotPresentWithContainerOperation" + + // ServiceCodeLeaseNotPresentWithLeaseOperation means there is currently no lease on the blob/container. + ServiceCodeLeaseNotPresentWithLeaseOperation ServiceCodeType = "LeaseNotPresentWithLeaseOperation" + + // ServiceCodeMaxBlobSizeConditionNotMet means the max blob size condition specified was not met. + ServiceCodeMaxBlobSizeConditionNotMet ServiceCodeType = "MaxBlobSizeConditionNotMet" + + // ServiceCodeNoPendingCopyOperation means there is currently no pending copy operation. + ServiceCodeNoPendingCopyOperation ServiceCodeType = "NoPendingCopyOperation" + + // ServiceCodeOperationNotAllowedOnIncrementalCopyBlob means the specified operation is not allowed on an incremental copy blob. + ServiceCodeOperationNotAllowedOnIncrementalCopyBlob ServiceCodeType = "OperationNotAllowedOnIncrementalCopyBlob" + + // ServiceCodePendingCopyOperation means there is currently a pending copy operation. + ServiceCodePendingCopyOperation ServiceCodeType = "PendingCopyOperation" + + // ServiceCodePreviousSnapshotCannotBeNewer means the prevsnapshot query parameter value cannot be newer than snapshot query parameter value. + ServiceCodePreviousSnapshotCannotBeNewer ServiceCodeType = "PreviousSnapshotCannotBeNewer" + + // ServiceCodePreviousSnapshotNotFound means the previous snapshot is not found. + ServiceCodePreviousSnapshotNotFound ServiceCodeType = "PreviousSnapshotNotFound" + + // ServiceCodePreviousSnapshotOperationNotSupported means that differential Get Page Ranges is not supported on the previous snapshot. + ServiceCodePreviousSnapshotOperationNotSupported ServiceCodeType = "PreviousSnapshotOperationNotSupported" + + // ServiceCodeSequenceNumberConditionNotMet means the sequence number condition specified was not met. + ServiceCodeSequenceNumberConditionNotMet ServiceCodeType = "SequenceNumberConditionNotMet" + + // ServiceCodeSequenceNumberIncrementTooLarge means the sequence number increment cannot be performed because it would result in overflow of the sequence number. + ServiceCodeSequenceNumberIncrementTooLarge ServiceCodeType = "SequenceNumberIncrementTooLarge" + + // ServiceCodeSnapshotCountExceeded means the snapshot count against this blob has been exceeded. + ServiceCodeSnapshotCountExceeded ServiceCodeType = "SnapshotCountExceeded" + + // ServiceCodeSnaphotOperationRateExceeded means the rate of snapshot operations against this blob has been exceeded. + ServiceCodeSnaphotOperationRateExceeded ServiceCodeType = "SnaphotOperationRateExceeded" + + // ServiceCodeSnapshotsPresent means this operation is not permitted while the blob has snapshots. + ServiceCodeSnapshotsPresent ServiceCodeType = "SnapshotsPresent" + + // ServiceCodeSourceConditionNotMet means the source condition specified using HTTP conditional header(s) is not met. + ServiceCodeSourceConditionNotMet ServiceCodeType = "SourceConditionNotMet" + + // ServiceCodeSystemInUse means this blob is in use by the system. + ServiceCodeSystemInUse ServiceCodeType = "SystemInUse" + + // ServiceCodeTargetConditionNotMet means the target condition specified using HTTP conditional header(s) is not met. + ServiceCodeTargetConditionNotMet ServiceCodeType = "TargetConditionNotMet" + + // ServiceCodeUnauthorizedBlobOverwrite means this request is not authorized to perform blob overwrites. + ServiceCodeUnauthorizedBlobOverwrite ServiceCodeType = "UnauthorizedBlobOverwrite" + + // ServiceCodeBlobBeingRehydrated means this operation is not permitted because the blob is being rehydrated. + ServiceCodeBlobBeingRehydrated ServiceCodeType = "BlobBeingRehydrated" + + // ServiceCodeBlobArchived means this operation is not permitted on an archived blob. + ServiceCodeBlobArchived ServiceCodeType = "BlobArchived" + + // ServiceCodeBlobNotArchived means this blob is currently not in the archived state. + ServiceCodeBlobNotArchived ServiceCodeType = "BlobNotArchived" +) diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/storage_account_credential.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/storage_account_credential.go new file mode 100644 index 0000000..b89b18b --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/storage_account_credential.go @@ -0,0 +1,8 @@ +package azblob + +// StorageAccountCredential is a wrapper interface for SharedKeyCredential and UserDelegationCredential +type StorageAccountCredential interface { + AccountName() string + ComputeHMACSHA256(message string) (base64String string) + getUDKParams() *UserDelegationKey +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_append_blob.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_append_blob.go new file mode 100644 index 0000000..b6bd6af --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_append_blob.go @@ -0,0 +1,128 @@ +package azblob + +import ( + "context" + "io" + "net/url" + + "github.com/Azure/azure-pipeline-go/pipeline" +) + +const ( + // AppendBlobMaxAppendBlockBytes indicates the maximum number of bytes that can be sent in a call to AppendBlock. + AppendBlobMaxAppendBlockBytes = 4 * 1024 * 1024 // 4MB + + // AppendBlobMaxBlocks indicates the maximum number of blocks allowed in an append blob. + AppendBlobMaxBlocks = 50000 +) + +// AppendBlobURL defines a set of operations applicable to append blobs. +type AppendBlobURL struct { + BlobURL + abClient appendBlobClient +} + +// NewAppendBlobURL creates an AppendBlobURL object using the specified URL and request policy pipeline. +func NewAppendBlobURL(url url.URL, p pipeline.Pipeline) AppendBlobURL { + blobClient := newBlobClient(url, p) + abClient := newAppendBlobClient(url, p) + return AppendBlobURL{BlobURL: BlobURL{blobClient: blobClient}, abClient: abClient} +} + +// WithPipeline creates a new AppendBlobURL object identical to the source but with the specific request policy pipeline. +func (ab AppendBlobURL) WithPipeline(p pipeline.Pipeline) AppendBlobURL { + return NewAppendBlobURL(ab.blobClient.URL(), p) +} + +// WithSnapshot creates a new AppendBlobURL object identical to the source but with the specified snapshot timestamp. +// Pass "" to remove the snapshot returning a URL to the base blob. +func (ab AppendBlobURL) WithSnapshot(snapshot string) AppendBlobURL { + p := NewBlobURLParts(ab.URL()) + p.Snapshot = snapshot + return NewAppendBlobURL(p.URL(), ab.blobClient.Pipeline()) +} + +// Create creates a 0-length append blob. Call AppendBlock to append data to an append blob. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/put-blob. +func (ab AppendBlobURL) Create(ctx context.Context, h BlobHTTPHeaders, metadata Metadata, ac BlobAccessConditions) (*AppendBlobCreateResponse, error) { + ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch := ac.ModifiedAccessConditions.pointers() + return ab.abClient.Create(ctx, 0, nil, + &h.ContentType, &h.ContentEncoding, &h.ContentLanguage, h.ContentMD5, + &h.CacheControl, metadata, ac.LeaseAccessConditions.pointers(), &h.ContentDisposition, + ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, nil) +} + +// AppendBlock writes a stream to a new block of data to the end of the existing append blob. +// This method panics if the stream is not at position 0. +// Note that the http client closes the body stream after the request is sent to the service. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/append-block. +func (ab AppendBlobURL) AppendBlock(ctx context.Context, body io.ReadSeeker, ac AppendBlobAccessConditions, transactionalMD5 []byte) (*AppendBlobAppendBlockResponse, error) { + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers() + ifAppendPositionEqual, ifMaxSizeLessThanOrEqual := ac.AppendPositionAccessConditions.pointers() + count, err := validateSeekableStreamAt0AndGetCount(body) + if err != nil { + return nil, err + } + return ab.abClient.AppendBlock(ctx, body, count, nil, + transactionalMD5, ac.LeaseAccessConditions.pointers(), + ifMaxSizeLessThanOrEqual, ifAppendPositionEqual, + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil) +} + +// AppendBlockFromURL copies a new block of data from source URL to the end of the existing append blob. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/append-block-from-url. +func (ab AppendBlobURL) AppendBlockFromURL(ctx context.Context, sourceURL url.URL, offset int64, count int64, destinationAccessConditions AppendBlobAccessConditions, sourceAccessConditions ModifiedAccessConditions, transactionalMD5 []byte) (*AppendBlobAppendBlockFromURLResponse, error) { + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := destinationAccessConditions.ModifiedAccessConditions.pointers() + sourceIfModifiedSince, sourceIfUnmodifiedSince, sourceIfMatchETag, sourceIfNoneMatchETag := sourceAccessConditions.pointers() + ifAppendPositionEqual, ifMaxSizeLessThanOrEqual := destinationAccessConditions.AppendPositionAccessConditions.pointers() + return ab.abClient.AppendBlockFromURL(ctx, sourceURL.String(), 0, httpRange{offset: offset, count: count}.pointers(), + transactionalMD5, nil, destinationAccessConditions.LeaseAccessConditions.pointers(), + ifMaxSizeLessThanOrEqual, ifAppendPositionEqual, + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, sourceIfModifiedSince, sourceIfUnmodifiedSince, sourceIfMatchETag, sourceIfNoneMatchETag, nil) +} + +type AppendBlobAccessConditions struct { + ModifiedAccessConditions + LeaseAccessConditions + AppendPositionAccessConditions +} + +// AppendPositionAccessConditions identifies append blob-specific access conditions which you optionally set. +type AppendPositionAccessConditions struct { + // IfAppendPositionEqual ensures that the AppendBlock operation succeeds + // only if the append position is equal to a value. + // IfAppendPositionEqual=0 means no 'IfAppendPositionEqual' header specified. + // IfAppendPositionEqual>0 means 'IfAppendPositionEqual' header specified with its value + // IfAppendPositionEqual==-1 means IfAppendPositionEqual' header specified with a value of 0 + IfAppendPositionEqual int64 + + // IfMaxSizeLessThanOrEqual ensures that the AppendBlock operation succeeds + // only if the append blob's size is less than or equal to a value. + // IfMaxSizeLessThanOrEqual=0 means no 'IfMaxSizeLessThanOrEqual' header specified. + // IfMaxSizeLessThanOrEqual>0 means 'IfMaxSizeLessThanOrEqual' header specified with its value + // IfMaxSizeLessThanOrEqual==-1 means 'IfMaxSizeLessThanOrEqual' header specified with a value of 0 + IfMaxSizeLessThanOrEqual int64 +} + +// pointers is for internal infrastructure. It returns the fields as pointers. +func (ac AppendPositionAccessConditions) pointers() (iape *int64, imsltoe *int64) { + var zero int64 // defaults to 0 + switch ac.IfAppendPositionEqual { + case -1: + iape = &zero + case 0: + iape = nil + default: + iape = &ac.IfAppendPositionEqual + } + + switch ac.IfMaxSizeLessThanOrEqual { + case -1: + imsltoe = &zero + case 0: + imsltoe = nil + default: + imsltoe = &ac.IfMaxSizeLessThanOrEqual + } + return +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_blob.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_blob.go new file mode 100644 index 0000000..41d1340 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_blob.go @@ -0,0 +1,216 @@ +package azblob + +import ( + "context" + "net/url" + + "github.com/Azure/azure-pipeline-go/pipeline" +) + +// A BlobURL represents a URL to an Azure Storage blob; the blob may be a block blob, append blob, or page blob. +type BlobURL struct { + blobClient blobClient +} + +// NewBlobURL creates a BlobURL object using the specified URL and request policy pipeline. +func NewBlobURL(url url.URL, p pipeline.Pipeline) BlobURL { + blobClient := newBlobClient(url, p) + return BlobURL{blobClient: blobClient} +} + +// URL returns the URL endpoint used by the BlobURL object. +func (b BlobURL) URL() url.URL { + return b.blobClient.URL() +} + +// String returns the URL as a string. +func (b BlobURL) String() string { + u := b.URL() + return u.String() +} + +// WithPipeline creates a new BlobURL object identical to the source but with the specified request policy pipeline. +func (b BlobURL) WithPipeline(p pipeline.Pipeline) BlobURL { + return NewBlobURL(b.blobClient.URL(), p) +} + +// WithSnapshot creates a new BlobURL object identical to the source but with the specified snapshot timestamp. +// Pass "" to remove the snapshot returning a URL to the base blob. +func (b BlobURL) WithSnapshot(snapshot string) BlobURL { + p := NewBlobURLParts(b.URL()) + p.Snapshot = snapshot + return NewBlobURL(p.URL(), b.blobClient.Pipeline()) +} + +// ToAppendBlobURL creates an AppendBlobURL using the source's URL and pipeline. +func (b BlobURL) ToAppendBlobURL() AppendBlobURL { + return NewAppendBlobURL(b.URL(), b.blobClient.Pipeline()) +} + +// ToBlockBlobURL creates a BlockBlobURL using the source's URL and pipeline. +func (b BlobURL) ToBlockBlobURL() BlockBlobURL { + return NewBlockBlobURL(b.URL(), b.blobClient.Pipeline()) +} + +// ToPageBlobURL creates a PageBlobURL using the source's URL and pipeline. +func (b BlobURL) ToPageBlobURL() PageBlobURL { + return NewPageBlobURL(b.URL(), b.blobClient.Pipeline()) +} + +// DownloadBlob reads a range of bytes from a blob. The response also includes the blob's properties and metadata. +// Passing azblob.CountToEnd (0) for count will download the blob from the offset to the end. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/get-blob. +func (b BlobURL) Download(ctx context.Context, offset int64, count int64, ac BlobAccessConditions, rangeGetContentMD5 bool) (*DownloadResponse, error) { + var xRangeGetContentMD5 *bool + if rangeGetContentMD5 { + xRangeGetContentMD5 = &rangeGetContentMD5 + } + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers() + dr, err := b.blobClient.Download(ctx, nil, nil, + httpRange{offset: offset, count: count}.pointers(), + ac.LeaseAccessConditions.pointers(), xRangeGetContentMD5, + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil) + if err != nil { + return nil, err + } + return &DownloadResponse{ + b: b, + r: dr, + ctx: ctx, + getInfo: HTTPGetterInfo{Offset: offset, Count: count, ETag: dr.ETag()}, + }, err +} + +// DeleteBlob marks the specified blob or snapshot for deletion. The blob is later deleted during garbage collection. +// Note that deleting a blob also deletes all its snapshots. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/delete-blob. +func (b BlobURL) Delete(ctx context.Context, deleteOptions DeleteSnapshotsOptionType, ac BlobAccessConditions) (*BlobDeleteResponse, error) { + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers() + return b.blobClient.Delete(ctx, nil, nil, ac.LeaseAccessConditions.pointers(), deleteOptions, + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil) +} + +// Undelete restores the contents and metadata of a soft-deleted blob and any associated soft-deleted snapshots. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/undelete-blob. +func (b BlobURL) Undelete(ctx context.Context) (*BlobUndeleteResponse, error) { + return b.blobClient.Undelete(ctx, nil, nil) +} + +// SetTier operation sets the tier on a blob. The operation is allowed on a page +// blob in a premium storage account and on a block blob in a blob storage account (locally +// redundant storage only). A premium page blob's tier determines the allowed size, IOPS, and +// bandwidth of the blob. A block blob's tier determines Hot/Cool/Archive storage type. This operation +// does not update the blob's ETag. +// For detailed information about block blob level tiering see https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-storage-tiers. +func (b BlobURL) SetTier(ctx context.Context, tier AccessTierType, lac LeaseAccessConditions) (*BlobSetTierResponse, error) { + return b.blobClient.SetTier(ctx, tier, nil, nil, lac.pointers()) +} + +// GetBlobProperties returns the blob's properties. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/get-blob-properties. +func (b BlobURL) GetProperties(ctx context.Context, ac BlobAccessConditions) (*BlobGetPropertiesResponse, error) { + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers() + return b.blobClient.GetProperties(ctx, nil, nil, ac.LeaseAccessConditions.pointers(), + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil) +} + +// SetBlobHTTPHeaders changes a blob's HTTP headers. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/set-blob-properties. +func (b BlobURL) SetHTTPHeaders(ctx context.Context, h BlobHTTPHeaders, ac BlobAccessConditions) (*BlobSetHTTPHeadersResponse, error) { + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers() + return b.blobClient.SetHTTPHeaders(ctx, nil, + &h.CacheControl, &h.ContentType, h.ContentMD5, &h.ContentEncoding, &h.ContentLanguage, + ac.LeaseAccessConditions.pointers(), ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, + &h.ContentDisposition, nil) +} + +// SetBlobMetadata changes a blob's metadata. +// https://docs.microsoft.com/rest/api/storageservices/set-blob-metadata. +func (b BlobURL) SetMetadata(ctx context.Context, metadata Metadata, ac BlobAccessConditions) (*BlobSetMetadataResponse, error) { + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers() + return b.blobClient.SetMetadata(ctx, nil, metadata, ac.LeaseAccessConditions.pointers(), + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil) +} + +// CreateSnapshot creates a read-only snapshot of a blob. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/snapshot-blob. +func (b BlobURL) CreateSnapshot(ctx context.Context, metadata Metadata, ac BlobAccessConditions) (*BlobCreateSnapshotResponse, error) { + // CreateSnapshot does NOT panic if the user tries to create a snapshot using a URL that already has a snapshot query parameter + // because checking this would be a performance hit for a VERY unusual path and I don't think the common case should suffer this + // performance hit. + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers() + return b.blobClient.CreateSnapshot(ctx, nil, metadata, ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, ac.LeaseAccessConditions.pointers(), nil) +} + +// AcquireLease acquires a lease on the blob for write and delete operations. The lease duration must be between +// 15 to 60 seconds, or infinite (-1). +// For more information, see https://docs.microsoft.com/rest/api/storageservices/lease-blob. +func (b BlobURL) AcquireLease(ctx context.Context, proposedID string, duration int32, ac ModifiedAccessConditions) (*BlobAcquireLeaseResponse, error) { + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.pointers() + return b.blobClient.AcquireLease(ctx, nil, &duration, &proposedID, + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil) +} + +// RenewLease renews the blob's previously-acquired lease. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/lease-blob. +func (b BlobURL) RenewLease(ctx context.Context, leaseID string, ac ModifiedAccessConditions) (*BlobRenewLeaseResponse, error) { + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.pointers() + return b.blobClient.RenewLease(ctx, leaseID, nil, + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil) +} + +// ReleaseLease releases the blob's previously-acquired lease. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/lease-blob. +func (b BlobURL) ReleaseLease(ctx context.Context, leaseID string, ac ModifiedAccessConditions) (*BlobReleaseLeaseResponse, error) { + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.pointers() + return b.blobClient.ReleaseLease(ctx, leaseID, nil, + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil) +} + +// BreakLease breaks the blob's previously-acquired lease (if it exists). Pass the LeaseBreakDefault (-1) +// constant to break a fixed-duration lease when it expires or an infinite lease immediately. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/lease-blob. +func (b BlobURL) BreakLease(ctx context.Context, breakPeriodInSeconds int32, ac ModifiedAccessConditions) (*BlobBreakLeaseResponse, error) { + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.pointers() + return b.blobClient.BreakLease(ctx, nil, leasePeriodPointer(breakPeriodInSeconds), + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil) +} + +// ChangeLease changes the blob's lease ID. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/lease-blob. +func (b BlobURL) ChangeLease(ctx context.Context, leaseID string, proposedID string, ac ModifiedAccessConditions) (*BlobChangeLeaseResponse, error) { + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.pointers() + return b.blobClient.ChangeLease(ctx, leaseID, proposedID, + nil, ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil) +} + +// LeaseBreakNaturally tells ContainerURL's or BlobURL's BreakLease method to break the lease using service semantics. +const LeaseBreakNaturally = -1 + +func leasePeriodPointer(period int32) (p *int32) { + if period != LeaseBreakNaturally { + p = &period + } + return nil +} + +// StartCopyFromURL copies the data at the source URL to a blob. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/copy-blob. +func (b BlobURL) StartCopyFromURL(ctx context.Context, source url.URL, metadata Metadata, srcac ModifiedAccessConditions, dstac BlobAccessConditions) (*BlobStartCopyFromURLResponse, error) { + srcIfModifiedSince, srcIfUnmodifiedSince, srcIfMatchETag, srcIfNoneMatchETag := srcac.pointers() + dstIfModifiedSince, dstIfUnmodifiedSince, dstIfMatchETag, dstIfNoneMatchETag := dstac.ModifiedAccessConditions.pointers() + dstLeaseID := dstac.LeaseAccessConditions.pointers() + + return b.blobClient.StartCopyFromURL(ctx, source.String(), nil, metadata, + srcIfModifiedSince, srcIfUnmodifiedSince, + srcIfMatchETag, srcIfNoneMatchETag, + dstIfModifiedSince, dstIfUnmodifiedSince, + dstIfMatchETag, dstIfNoneMatchETag, + dstLeaseID, nil) +} + +// AbortCopyFromURL stops a pending copy that was previously started and leaves a destination blob with 0 length and metadata. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/abort-copy-blob. +func (b BlobURL) AbortCopyFromURL(ctx context.Context, copyID string, ac LeaseAccessConditions) (*BlobAbortCopyFromURLResponse, error) { + return b.blobClient.AbortCopyFromURL(ctx, copyID, nil, ac.pointers(), nil) +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_block_blob.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_block_blob.go new file mode 100644 index 0000000..25a9b32 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_block_blob.go @@ -0,0 +1,162 @@ +package azblob + +import ( + "context" + "io" + "net/url" + + "encoding/base64" + "encoding/binary" + + "github.com/Azure/azure-pipeline-go/pipeline" +) + +const ( + // BlockBlobMaxUploadBlobBytes indicates the maximum number of bytes that can be sent in a call to Upload. + BlockBlobMaxUploadBlobBytes = 256 * 1024 * 1024 // 256MB + + // BlockBlobMaxStageBlockBytes indicates the maximum number of bytes that can be sent in a call to StageBlock. + BlockBlobMaxStageBlockBytes = 100 * 1024 * 1024 // 100MB + + // BlockBlobMaxBlocks indicates the maximum number of blocks allowed in a block blob. + BlockBlobMaxBlocks = 50000 +) + +// BlockBlobURL defines a set of operations applicable to block blobs. +type BlockBlobURL struct { + BlobURL + bbClient blockBlobClient +} + +// NewBlockBlobURL creates a BlockBlobURL object using the specified URL and request policy pipeline. +func NewBlockBlobURL(url url.URL, p pipeline.Pipeline) BlockBlobURL { + blobClient := newBlobClient(url, p) + bbClient := newBlockBlobClient(url, p) + return BlockBlobURL{BlobURL: BlobURL{blobClient: blobClient}, bbClient: bbClient} +} + +// WithPipeline creates a new BlockBlobURL object identical to the source but with the specific request policy pipeline. +func (bb BlockBlobURL) WithPipeline(p pipeline.Pipeline) BlockBlobURL { + return NewBlockBlobURL(bb.blobClient.URL(), p) +} + +// WithSnapshot creates a new BlockBlobURL object identical to the source but with the specified snapshot timestamp. +// Pass "" to remove the snapshot returning a URL to the base blob. +func (bb BlockBlobURL) WithSnapshot(snapshot string) BlockBlobURL { + p := NewBlobURLParts(bb.URL()) + p.Snapshot = snapshot + return NewBlockBlobURL(p.URL(), bb.blobClient.Pipeline()) +} + +// Upload creates a new block blob or overwrites an existing block blob. +// Updating an existing block blob overwrites any existing metadata on the blob. Partial updates are not +// supported with Upload; the content of the existing blob is overwritten with the new content. To +// perform a partial update of a block blob, use StageBlock and CommitBlockList. +// This method panics if the stream is not at position 0. +// Note that the http client closes the body stream after the request is sent to the service. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/put-blob. +func (bb BlockBlobURL) Upload(ctx context.Context, body io.ReadSeeker, h BlobHTTPHeaders, metadata Metadata, ac BlobAccessConditions) (*BlockBlobUploadResponse, error) { + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers() + count, err := validateSeekableStreamAt0AndGetCount(body) + if err != nil { + return nil, err + } + return bb.bbClient.Upload(ctx, body, count, nil, + &h.ContentType, &h.ContentEncoding, &h.ContentLanguage, h.ContentMD5, + &h.CacheControl, metadata, ac.LeaseAccessConditions.pointers(), + &h.ContentDisposition, ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, + nil) +} + +// StageBlock uploads the specified block to the block blob's "staging area" to be later committed by a call to CommitBlockList. +// Note that the http client closes the body stream after the request is sent to the service. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/put-block. +func (bb BlockBlobURL) StageBlock(ctx context.Context, base64BlockID string, body io.ReadSeeker, ac LeaseAccessConditions, transactionalMD5 []byte) (*BlockBlobStageBlockResponse, error) { + count, err := validateSeekableStreamAt0AndGetCount(body) + if err != nil { + return nil, err + } + return bb.bbClient.StageBlock(ctx, base64BlockID, count, body, transactionalMD5, nil, ac.pointers(), nil) +} + +// StageBlockFromURL copies the specified block from a source URL to the block blob's "staging area" to be later committed by a call to CommitBlockList. +// If count is CountToEnd (0), then data is read from specified offset to the end. +// For more information, see https://docs.microsoft.com/en-us/rest/api/storageservices/put-block-from-url. +func (bb BlockBlobURL) StageBlockFromURL(ctx context.Context, base64BlockID string, sourceURL url.URL, offset int64, count int64, destinationAccessConditions LeaseAccessConditions, sourceAccessConditions ModifiedAccessConditions) (*BlockBlobStageBlockFromURLResponse, error) { + sourceIfModifiedSince, sourceIfUnmodifiedSince, sourceIfMatchETag, sourceIfNoneMatchETag := sourceAccessConditions.pointers() + return bb.bbClient.StageBlockFromURL(ctx, base64BlockID, 0, sourceURL.String(), httpRange{offset: offset, count: count}.pointers(), nil, nil, destinationAccessConditions.pointers(), sourceIfModifiedSince, sourceIfUnmodifiedSince, sourceIfMatchETag, sourceIfNoneMatchETag, nil) +} + +// CommitBlockList writes a blob by specifying the list of block IDs that make up the blob. +// In order to be written as part of a blob, a block must have been successfully written +// to the server in a prior PutBlock operation. You can call PutBlockList to update a blob +// by uploading only those blocks that have changed, then committing the new and existing +// blocks together. Any blocks not specified in the block list and permanently deleted. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/put-block-list. +func (bb BlockBlobURL) CommitBlockList(ctx context.Context, base64BlockIDs []string, h BlobHTTPHeaders, + metadata Metadata, ac BlobAccessConditions) (*BlockBlobCommitBlockListResponse, error) { + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers() + return bb.bbClient.CommitBlockList(ctx, BlockLookupList{Latest: base64BlockIDs}, nil, + &h.CacheControl, &h.ContentType, &h.ContentEncoding, &h.ContentLanguage, h.ContentMD5, + metadata, ac.LeaseAccessConditions.pointers(), &h.ContentDisposition, + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil) +} + +// GetBlockList returns the list of blocks that have been uploaded as part of a block blob using the specified block list filter. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/get-block-list. +func (bb BlockBlobURL) GetBlockList(ctx context.Context, listType BlockListType, ac LeaseAccessConditions) (*BlockList, error) { + return bb.bbClient.GetBlockList(ctx, listType, nil, nil, ac.pointers(), nil) +} + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +type BlockID [64]byte + +func (blockID BlockID) ToBase64() string { + return base64.StdEncoding.EncodeToString(blockID[:]) +} + +func (blockID *BlockID) FromBase64(s string) error { + *blockID = BlockID{} // Zero out the block ID + _, err := base64.StdEncoding.Decode(blockID[:], ([]byte)(s)) + return err +} + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +type uuidBlockID BlockID + +func (ubi uuidBlockID) UUID() uuid { + u := uuid{} + copy(u[:], ubi[:len(u)]) + return u +} + +func (ubi uuidBlockID) Number() uint32 { + return binary.BigEndian.Uint32(ubi[len(uuid{}):]) +} + +func newUuidBlockID(u uuid) uuidBlockID { + ubi := uuidBlockID{} // Create a new uuidBlockID + copy(ubi[:len(u)], u[:]) // Copy the specified UUID into it + // Block number defaults to 0 + return ubi +} + +func (ubi *uuidBlockID) SetUUID(u uuid) *uuidBlockID { + copy(ubi[:len(u)], u[:]) + return ubi +} + +func (ubi uuidBlockID) WithBlockNumber(blockNumber uint32) uuidBlockID { + binary.BigEndian.PutUint32(ubi[len(uuid{}):], blockNumber) // Put block number after UUID + return ubi // Return the passed-in copy +} + +func (ubi uuidBlockID) ToBase64() string { + return BlockID(ubi).ToBase64() +} + +func (ubi *uuidBlockID) FromBase64(s string) error { + return (*BlockID)(ubi).FromBase64(s) +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_container.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_container.go new file mode 100644 index 0000000..48adf08 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_container.go @@ -0,0 +1,295 @@ +package azblob + +import ( + "bytes" + "context" + "errors" + "fmt" + "net/url" + + "github.com/Azure/azure-pipeline-go/pipeline" +) + +// A ContainerURL represents a URL to the Azure Storage container allowing you to manipulate its blobs. +type ContainerURL struct { + client containerClient +} + +// NewContainerURL creates a ContainerURL object using the specified URL and request policy pipeline. +func NewContainerURL(url url.URL, p pipeline.Pipeline) ContainerURL { + client := newContainerClient(url, p) + return ContainerURL{client: client} +} + +// URL returns the URL endpoint used by the ContainerURL object. +func (c ContainerURL) URL() url.URL { + return c.client.URL() +} + +// String returns the URL as a string. +func (c ContainerURL) String() string { + u := c.URL() + return u.String() +} + +// WithPipeline creates a new ContainerURL object identical to the source but with the specified request policy pipeline. +func (c ContainerURL) WithPipeline(p pipeline.Pipeline) ContainerURL { + return NewContainerURL(c.URL(), p) +} + +// NewBlobURL creates a new BlobURL object by concatenating blobName to the end of +// ContainerURL's URL. The new BlobURL uses the same request policy pipeline as the ContainerURL. +// To change the pipeline, create the BlobURL and then call its WithPipeline method passing in the +// desired pipeline object. Or, call this package's NewBlobURL instead of calling this object's +// NewBlobURL method. +func (c ContainerURL) NewBlobURL(blobName string) BlobURL { + blobURL := appendToURLPath(c.URL(), blobName) + return NewBlobURL(blobURL, c.client.Pipeline()) +} + +// NewAppendBlobURL creates a new AppendBlobURL object by concatenating blobName to the end of +// ContainerURL's URL. The new AppendBlobURL uses the same request policy pipeline as the ContainerURL. +// To change the pipeline, create the AppendBlobURL and then call its WithPipeline method passing in the +// desired pipeline object. Or, call this package's NewAppendBlobURL instead of calling this object's +// NewAppendBlobURL method. +func (c ContainerURL) NewAppendBlobURL(blobName string) AppendBlobURL { + blobURL := appendToURLPath(c.URL(), blobName) + return NewAppendBlobURL(blobURL, c.client.Pipeline()) +} + +// NewBlockBlobURL creates a new BlockBlobURL object by concatenating blobName to the end of +// ContainerURL's URL. The new BlockBlobURL uses the same request policy pipeline as the ContainerURL. +// To change the pipeline, create the BlockBlobURL and then call its WithPipeline method passing in the +// desired pipeline object. Or, call this package's NewBlockBlobURL instead of calling this object's +// NewBlockBlobURL method. +func (c ContainerURL) NewBlockBlobURL(blobName string) BlockBlobURL { + blobURL := appendToURLPath(c.URL(), blobName) + return NewBlockBlobURL(blobURL, c.client.Pipeline()) +} + +// NewPageBlobURL creates a new PageBlobURL object by concatenating blobName to the end of +// ContainerURL's URL. The new PageBlobURL uses the same request policy pipeline as the ContainerURL. +// To change the pipeline, create the PageBlobURL and then call its WithPipeline method passing in the +// desired pipeline object. Or, call this package's NewPageBlobURL instead of calling this object's +// NewPageBlobURL method. +func (c ContainerURL) NewPageBlobURL(blobName string) PageBlobURL { + blobURL := appendToURLPath(c.URL(), blobName) + return NewPageBlobURL(blobURL, c.client.Pipeline()) +} + +// Create creates a new container within a storage account. If a container with the same name already exists, the operation fails. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/create-container. +func (c ContainerURL) Create(ctx context.Context, metadata Metadata, publicAccessType PublicAccessType) (*ContainerCreateResponse, error) { + return c.client.Create(ctx, nil, metadata, publicAccessType, nil) +} + +// Delete marks the specified container for deletion. The container and any blobs contained within it are later deleted during garbage collection. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/delete-container. +func (c ContainerURL) Delete(ctx context.Context, ac ContainerAccessConditions) (*ContainerDeleteResponse, error) { + if ac.IfMatch != ETagNone || ac.IfNoneMatch != ETagNone { + return nil, errors.New("the IfMatch and IfNoneMatch access conditions must have their default values because they are ignored by the service") + } + + ifModifiedSince, ifUnmodifiedSince, _, _ := ac.ModifiedAccessConditions.pointers() + return c.client.Delete(ctx, nil, ac.LeaseAccessConditions.pointers(), + ifModifiedSince, ifUnmodifiedSince, nil) +} + +// GetProperties returns the container's properties. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/get-container-metadata. +func (c ContainerURL) GetProperties(ctx context.Context, ac LeaseAccessConditions) (*ContainerGetPropertiesResponse, error) { + // NOTE: GetMetadata actually calls GetProperties internally because GetProperties returns the metadata AND the properties. + // This allows us to not expose a GetProperties method at all simplifying the API. + return c.client.GetProperties(ctx, nil, ac.pointers(), nil) +} + +// SetMetadata sets the container's metadata. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/set-container-metadata. +func (c ContainerURL) SetMetadata(ctx context.Context, metadata Metadata, ac ContainerAccessConditions) (*ContainerSetMetadataResponse, error) { + if !ac.IfUnmodifiedSince.IsZero() || ac.IfMatch != ETagNone || ac.IfNoneMatch != ETagNone { + return nil, errors.New("the IfUnmodifiedSince, IfMatch, and IfNoneMatch must have their default values because they are ignored by the blob service") + } + ifModifiedSince, _, _, _ := ac.ModifiedAccessConditions.pointers() + return c.client.SetMetadata(ctx, nil, ac.LeaseAccessConditions.pointers(), metadata, ifModifiedSince, nil) +} + +// GetAccessPolicy returns the container's access policy. The access policy indicates whether container's blobs may be accessed publicly. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/get-container-acl. +func (c ContainerURL) GetAccessPolicy(ctx context.Context, ac LeaseAccessConditions) (*SignedIdentifiers, error) { + return c.client.GetAccessPolicy(ctx, nil, ac.pointers(), nil) +} + +// The AccessPolicyPermission type simplifies creating the permissions string for a container's access policy. +// Initialize an instance of this type and then call its String method to set AccessPolicy's Permission field. +type AccessPolicyPermission struct { + Read, Add, Create, Write, Delete, List bool +} + +// String produces the access policy permission string for an Azure Storage container. +// Call this method to set AccessPolicy's Permission field. +func (p AccessPolicyPermission) String() string { + var b bytes.Buffer + if p.Read { + b.WriteRune('r') + } + if p.Add { + b.WriteRune('a') + } + if p.Create { + b.WriteRune('c') + } + if p.Write { + b.WriteRune('w') + } + if p.Delete { + b.WriteRune('d') + } + if p.List { + b.WriteRune('l') + } + return b.String() +} + +// Parse initializes the AccessPolicyPermission's fields from a string. +func (p *AccessPolicyPermission) Parse(s string) error { + *p = AccessPolicyPermission{} // Clear the flags + for _, r := range s { + switch r { + case 'r': + p.Read = true + case 'a': + p.Add = true + case 'c': + p.Create = true + case 'w': + p.Write = true + case 'd': + p.Delete = true + case 'l': + p.List = true + default: + return fmt.Errorf("invalid permission: '%v'", r) + } + } + return nil +} + +// SetAccessPolicy sets the container's permissions. The access policy indicates whether blobs in a container may be accessed publicly. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/set-container-acl. +func (c ContainerURL) SetAccessPolicy(ctx context.Context, accessType PublicAccessType, si []SignedIdentifier, + ac ContainerAccessConditions) (*ContainerSetAccessPolicyResponse, error) { + if ac.IfMatch != ETagNone || ac.IfNoneMatch != ETagNone { + return nil, errors.New("the IfMatch and IfNoneMatch access conditions must have their default values because they are ignored by the service") + } + ifModifiedSince, ifUnmodifiedSince, _, _ := ac.ModifiedAccessConditions.pointers() + return c.client.SetAccessPolicy(ctx, si, nil, ac.LeaseAccessConditions.pointers(), + accessType, ifModifiedSince, ifUnmodifiedSince, nil) +} + +// AcquireLease acquires a lease on the container for delete operations. The lease duration must be between 15 to 60 seconds, or infinite (-1). +// For more information, see https://docs.microsoft.com/rest/api/storageservices/lease-container. +func (c ContainerURL) AcquireLease(ctx context.Context, proposedID string, duration int32, ac ModifiedAccessConditions) (*ContainerAcquireLeaseResponse, error) { + ifModifiedSince, ifUnmodifiedSince, _, _ := ac.pointers() + return c.client.AcquireLease(ctx, nil, &duration, &proposedID, + ifModifiedSince, ifUnmodifiedSince, nil) +} + +// RenewLease renews the container's previously-acquired lease. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/lease-container. +func (c ContainerURL) RenewLease(ctx context.Context, leaseID string, ac ModifiedAccessConditions) (*ContainerRenewLeaseResponse, error) { + ifModifiedSince, ifUnmodifiedSince, _, _ := ac.pointers() + return c.client.RenewLease(ctx, leaseID, nil, ifModifiedSince, ifUnmodifiedSince, nil) +} + +// ReleaseLease releases the container's previously-acquired lease. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/lease-container. +func (c ContainerURL) ReleaseLease(ctx context.Context, leaseID string, ac ModifiedAccessConditions) (*ContainerReleaseLeaseResponse, error) { + ifModifiedSince, ifUnmodifiedSince, _, _ := ac.pointers() + return c.client.ReleaseLease(ctx, leaseID, nil, ifModifiedSince, ifUnmodifiedSince, nil) +} + +// BreakLease breaks the container's previously-acquired lease (if it exists). +// For more information, see https://docs.microsoft.com/rest/api/storageservices/lease-container. +func (c ContainerURL) BreakLease(ctx context.Context, period int32, ac ModifiedAccessConditions) (*ContainerBreakLeaseResponse, error) { + ifModifiedSince, ifUnmodifiedSince, _, _ := ac.pointers() + return c.client.BreakLease(ctx, nil, leasePeriodPointer(period), ifModifiedSince, ifUnmodifiedSince, nil) +} + +// ChangeLease changes the container's lease ID. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/lease-container. +func (c ContainerURL) ChangeLease(ctx context.Context, leaseID string, proposedID string, ac ModifiedAccessConditions) (*ContainerChangeLeaseResponse, error) { + ifModifiedSince, ifUnmodifiedSince, _, _ := ac.pointers() + return c.client.ChangeLease(ctx, leaseID, proposedID, nil, ifModifiedSince, ifUnmodifiedSince, nil) +} + +// ListBlobsFlatSegment returns a single segment of blobs starting from the specified Marker. Use an empty +// Marker to start enumeration from the beginning. Blob names are returned in lexicographic order. +// After getting a segment, process it, and then call ListBlobsFlatSegment again (passing the the +// previously-returned Marker) to get the next segment. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/list-blobs. +func (c ContainerURL) ListBlobsFlatSegment(ctx context.Context, marker Marker, o ListBlobsSegmentOptions) (*ListBlobsFlatSegmentResponse, error) { + prefix, include, maxResults := o.pointers() + return c.client.ListBlobFlatSegment(ctx, prefix, marker.Val, maxResults, include, nil, nil) +} + +// ListBlobsHierarchySegment returns a single segment of blobs starting from the specified Marker. Use an empty +// Marker to start enumeration from the beginning. Blob names are returned in lexicographic order. +// After getting a segment, process it, and then call ListBlobsHierarchicalSegment again (passing the the +// previously-returned Marker) to get the next segment. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/list-blobs. +func (c ContainerURL) ListBlobsHierarchySegment(ctx context.Context, marker Marker, delimiter string, o ListBlobsSegmentOptions) (*ListBlobsHierarchySegmentResponse, error) { + if o.Details.Snapshots { + return nil, errors.New("snapshots are not supported in this listing operation") + } + prefix, include, maxResults := o.pointers() + return c.client.ListBlobHierarchySegment(ctx, delimiter, prefix, marker.Val, maxResults, include, nil, nil) +} + +// ListBlobsSegmentOptions defines options available when calling ListBlobs. +type ListBlobsSegmentOptions struct { + Details BlobListingDetails // No IncludeType header is produced if "" + Prefix string // No Prefix header is produced if "" + + // SetMaxResults sets the maximum desired results you want the service to return. Note, the + // service may return fewer results than requested. + // MaxResults=0 means no 'MaxResults' header specified. + MaxResults int32 +} + +func (o *ListBlobsSegmentOptions) pointers() (prefix *string, include []ListBlobsIncludeItemType, maxResults *int32) { + if o.Prefix != "" { + prefix = &o.Prefix + } + include = o.Details.slice() + if o.MaxResults != 0 { + maxResults = &o.MaxResults + } + return +} + +// BlobListingDetails indicates what additional information the service should return with each blob. +type BlobListingDetails struct { + Copy, Metadata, Snapshots, UncommittedBlobs, Deleted bool +} + +// string produces the Include query parameter's value. +func (d *BlobListingDetails) slice() []ListBlobsIncludeItemType { + items := []ListBlobsIncludeItemType{} + // NOTE: Multiple strings MUST be appended in alphabetic order or signing the string for authentication fails! + if d.Copy { + items = append(items, ListBlobsIncludeItemCopy) + } + if d.Deleted { + items = append(items, ListBlobsIncludeItemDeleted) + } + if d.Metadata { + items = append(items, ListBlobsIncludeItemMetadata) + } + if d.Snapshots { + items = append(items, ListBlobsIncludeItemSnapshots) + } + if d.UncommittedBlobs { + items = append(items, ListBlobsIncludeItemUncommittedblobs) + } + return items +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_page_blob.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_page_blob.go new file mode 100644 index 0000000..8ee34c0 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_page_blob.go @@ -0,0 +1,223 @@ +package azblob + +import ( + "context" + "fmt" + "io" + "net/url" + "strconv" + + "github.com/Azure/azure-pipeline-go/pipeline" +) + +const ( + // PageBlobPageBytes indicates the number of bytes in a page (512). + PageBlobPageBytes = 512 + + // PageBlobMaxPutPagesBytes indicates the maximum number of bytes that can be sent in a call to PutPage. + PageBlobMaxUploadPagesBytes = 4 * 1024 * 1024 // 4MB +) + +// PageBlobURL defines a set of operations applicable to page blobs. +type PageBlobURL struct { + BlobURL + pbClient pageBlobClient +} + +// NewPageBlobURL creates a PageBlobURL object using the specified URL and request policy pipeline. +func NewPageBlobURL(url url.URL, p pipeline.Pipeline) PageBlobURL { + blobClient := newBlobClient(url, p) + pbClient := newPageBlobClient(url, p) + return PageBlobURL{BlobURL: BlobURL{blobClient: blobClient}, pbClient: pbClient} +} + +// WithPipeline creates a new PageBlobURL object identical to the source but with the specific request policy pipeline. +func (pb PageBlobURL) WithPipeline(p pipeline.Pipeline) PageBlobURL { + return NewPageBlobURL(pb.blobClient.URL(), p) +} + +// WithSnapshot creates a new PageBlobURL object identical to the source but with the specified snapshot timestamp. +// Pass "" to remove the snapshot returning a URL to the base blob. +func (pb PageBlobURL) WithSnapshot(snapshot string) PageBlobURL { + p := NewBlobURLParts(pb.URL()) + p.Snapshot = snapshot + return NewPageBlobURL(p.URL(), pb.blobClient.Pipeline()) +} + +// Create creates a page blob of the specified length. Call PutPage to upload data data to a page blob. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/put-blob. +func (pb PageBlobURL) Create(ctx context.Context, size int64, sequenceNumber int64, h BlobHTTPHeaders, metadata Metadata, ac BlobAccessConditions) (*PageBlobCreateResponse, error) { + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers() + return pb.pbClient.Create(ctx, 0, size, nil, + &h.ContentType, &h.ContentEncoding, &h.ContentLanguage, h.ContentMD5, &h.CacheControl, + metadata, ac.LeaseAccessConditions.pointers(), + &h.ContentDisposition, ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, &sequenceNumber, nil) +} + +// UploadPages writes 1 or more pages to the page blob. The start offset and the stream size must be a multiple of 512 bytes. +// This method panics if the stream is not at position 0. +// Note that the http client closes the body stream after the request is sent to the service. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/put-page. +func (pb PageBlobURL) UploadPages(ctx context.Context, offset int64, body io.ReadSeeker, ac PageBlobAccessConditions, transactionalMD5 []byte) (*PageBlobUploadPagesResponse, error) { + count, err := validateSeekableStreamAt0AndGetCount(body) + if err != nil { + return nil, err + } + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers() + ifSequenceNumberLessThanOrEqual, ifSequenceNumberLessThan, ifSequenceNumberEqual := ac.SequenceNumberAccessConditions.pointers() + return pb.pbClient.UploadPages(ctx, body, count, transactionalMD5, nil, + PageRange{Start: offset, End: offset + count - 1}.pointers(), + ac.LeaseAccessConditions.pointers(), + ifSequenceNumberLessThanOrEqual, ifSequenceNumberLessThan, ifSequenceNumberEqual, + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil) +} + +// UploadPagesFromURL copies 1 or more pages from a source URL to the page blob. +// The sourceOffset specifies the start offset of source data to copy from. +// The destOffset specifies the start offset of data in page blob will be written to. +// The count must be a multiple of 512 bytes. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/put-page-from-url. +func (pb PageBlobURL) UploadPagesFromURL(ctx context.Context, sourceURL url.URL, sourceOffset int64, destOffset int64, count int64, transactionalMD5 []byte, destinationAccessConditions PageBlobAccessConditions, sourceAccessConditions ModifiedAccessConditions) (*PageBlobUploadPagesFromURLResponse, error) { + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := destinationAccessConditions.ModifiedAccessConditions.pointers() + sourceIfModifiedSince, sourceIfUnmodifiedSince, sourceIfMatchETag, sourceIfNoneMatchETag := sourceAccessConditions.pointers() + ifSequenceNumberLessThanOrEqual, ifSequenceNumberLessThan, ifSequenceNumberEqual := destinationAccessConditions.SequenceNumberAccessConditions.pointers() + return pb.pbClient.UploadPagesFromURL(ctx, sourceURL.String(), *PageRange{Start: sourceOffset, End: sourceOffset + count - 1}.pointers(), 0, + *PageRange{Start: destOffset, End: destOffset + count - 1}.pointers(), transactionalMD5, nil, destinationAccessConditions.LeaseAccessConditions.pointers(), + ifSequenceNumberLessThanOrEqual, ifSequenceNumberLessThan, ifSequenceNumberEqual, + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, sourceIfModifiedSince, sourceIfUnmodifiedSince, sourceIfMatchETag, sourceIfNoneMatchETag, nil) +} + +// ClearPages frees the specified pages from the page blob. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/put-page. +func (pb PageBlobURL) ClearPages(ctx context.Context, offset int64, count int64, ac PageBlobAccessConditions) (*PageBlobClearPagesResponse, error) { + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers() + ifSequenceNumberLessThanOrEqual, ifSequenceNumberLessThan, ifSequenceNumberEqual := ac.SequenceNumberAccessConditions.pointers() + return pb.pbClient.ClearPages(ctx, 0, nil, + PageRange{Start: offset, End: offset + count - 1}.pointers(), + ac.LeaseAccessConditions.pointers(), + ifSequenceNumberLessThanOrEqual, ifSequenceNumberLessThan, + ifSequenceNumberEqual, ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil) +} + +// GetPageRanges returns the list of valid page ranges for a page blob or snapshot of a page blob. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges. +func (pb PageBlobURL) GetPageRanges(ctx context.Context, offset int64, count int64, ac BlobAccessConditions) (*PageList, error) { + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers() + return pb.pbClient.GetPageRanges(ctx, nil, nil, + httpRange{offset: offset, count: count}.pointers(), + ac.LeaseAccessConditions.pointers(), + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil) +} + +// GetPageRangesDiff gets the collection of page ranges that differ between a specified snapshot and this page blob. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges. +func (pb PageBlobURL) GetPageRangesDiff(ctx context.Context, offset int64, count int64, prevSnapshot string, ac BlobAccessConditions) (*PageList, error) { + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers() + return pb.pbClient.GetPageRangesDiff(ctx, nil, nil, &prevSnapshot, + httpRange{offset: offset, count: count}.pointers(), + ac.LeaseAccessConditions.pointers(), + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, + nil) +} + +// Resize resizes the page blob to the specified size (which must be a multiple of 512). +// For more information, see https://docs.microsoft.com/rest/api/storageservices/set-blob-properties. +func (pb PageBlobURL) Resize(ctx context.Context, size int64, ac BlobAccessConditions) (*PageBlobResizeResponse, error) { + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers() + return pb.pbClient.Resize(ctx, size, nil, ac.LeaseAccessConditions.pointers(), + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil) +} + +// SetSequenceNumber sets the page blob's sequence number. +func (pb PageBlobURL) UpdateSequenceNumber(ctx context.Context, action SequenceNumberActionType, sequenceNumber int64, + ac BlobAccessConditions) (*PageBlobUpdateSequenceNumberResponse, error) { + sn := &sequenceNumber + if action == SequenceNumberActionIncrement { + sn = nil + } + ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch := ac.ModifiedAccessConditions.pointers() + return pb.pbClient.UpdateSequenceNumber(ctx, action, nil, + ac.LeaseAccessConditions.pointers(), ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, + sn, nil) +} + +// StartIncrementalCopy begins an operation to start an incremental copy from one page blob's snapshot to this page blob. +// The snapshot is copied such that only the differential changes between the previously copied snapshot are transferred to the destination. +// The copied snapshots are complete copies of the original snapshot and can be read or copied from as usual. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/incremental-copy-blob and +// https://docs.microsoft.com/en-us/azure/virtual-machines/windows/incremental-snapshots. +func (pb PageBlobURL) StartCopyIncremental(ctx context.Context, source url.URL, snapshot string, ac BlobAccessConditions) (*PageBlobCopyIncrementalResponse, error) { + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag := ac.ModifiedAccessConditions.pointers() + qp := source.Query() + qp.Set("snapshot", snapshot) + source.RawQuery = qp.Encode() + return pb.pbClient.CopyIncremental(ctx, source.String(), nil, + ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil) +} + +func (pr PageRange) pointers() *string { + endOffset := strconv.FormatInt(int64(pr.End), 10) + asString := fmt.Sprintf("bytes=%v-%s", pr.Start, endOffset) + return &asString +} + +type PageBlobAccessConditions struct { + ModifiedAccessConditions + LeaseAccessConditions + SequenceNumberAccessConditions +} + +// SequenceNumberAccessConditions identifies page blob-specific access conditions which you optionally set. +type SequenceNumberAccessConditions struct { + // IfSequenceNumberLessThan ensures that the page blob operation succeeds + // only if the blob's sequence number is less than a value. + // IfSequenceNumberLessThan=0 means no 'IfSequenceNumberLessThan' header specified. + // IfSequenceNumberLessThan>0 means 'IfSequenceNumberLessThan' header specified with its value + // IfSequenceNumberLessThan==-1 means 'IfSequenceNumberLessThan' header specified with a value of 0 + IfSequenceNumberLessThan int64 + + // IfSequenceNumberLessThanOrEqual ensures that the page blob operation succeeds + // only if the blob's sequence number is less than or equal to a value. + // IfSequenceNumberLessThanOrEqual=0 means no 'IfSequenceNumberLessThanOrEqual' header specified. + // IfSequenceNumberLessThanOrEqual>0 means 'IfSequenceNumberLessThanOrEqual' header specified with its value + // IfSequenceNumberLessThanOrEqual=-1 means 'IfSequenceNumberLessThanOrEqual' header specified with a value of 0 + IfSequenceNumberLessThanOrEqual int64 + + // IfSequenceNumberEqual ensures that the page blob operation succeeds + // only if the blob's sequence number is equal to a value. + // IfSequenceNumberEqual=0 means no 'IfSequenceNumberEqual' header specified. + // IfSequenceNumberEqual>0 means 'IfSequenceNumberEqual' header specified with its value + // IfSequenceNumberEqual=-1 means 'IfSequenceNumberEqual' header specified with a value of 0 + IfSequenceNumberEqual int64 +} + +// pointers is for internal infrastructure. It returns the fields as pointers. +func (ac SequenceNumberAccessConditions) pointers() (snltoe *int64, snlt *int64, sne *int64) { + var zero int64 // Defaults to 0 + switch ac.IfSequenceNumberLessThan { + case -1: + snlt = &zero + case 0: + snlt = nil + default: + snlt = &ac.IfSequenceNumberLessThan + } + + switch ac.IfSequenceNumberLessThanOrEqual { + case -1: + snltoe = &zero + case 0: + snltoe = nil + default: + snltoe = &ac.IfSequenceNumberLessThanOrEqual + } + switch ac.IfSequenceNumberEqual { + case -1: + sne = &zero + case 0: + sne = nil + default: + sne = &ac.IfSequenceNumberEqual + } + return +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_service.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_service.go new file mode 100644 index 0000000..5974bc3 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/url_service.go @@ -0,0 +1,145 @@ +package azblob + +import ( + "context" + "net/url" + "strings" + + "github.com/Azure/azure-pipeline-go/pipeline" +) + +const ( + // ContainerNameRoot is the special Azure Storage name used to identify a storage account's root container. + ContainerNameRoot = "$root" + + // ContainerNameLogs is the special Azure Storage name used to identify a storage account's logs container. + ContainerNameLogs = "$logs" +) + +// A ServiceURL represents a URL to the Azure Storage Blob service allowing you to manipulate blob containers. +type ServiceURL struct { + client serviceClient +} + +// NewServiceURL creates a ServiceURL object using the specified URL and request policy pipeline. +func NewServiceURL(primaryURL url.URL, p pipeline.Pipeline) ServiceURL { + client := newServiceClient(primaryURL, p) + return ServiceURL{client: client} +} + +//GetUserDelegationCredential obtains a UserDelegationKey object using the base ServiceURL object. +//OAuth is required for this call, as well as any role that can delegate access to the storage account. +func (s ServiceURL) GetUserDelegationCredential(ctx context.Context, info KeyInfo, timeout *int32, requestID *string) (UserDelegationCredential, error) { + sc := newServiceClient(s.client.url, s.client.p) + udk, err := sc.GetUserDelegationKey(ctx, info, timeout, requestID) + if err != nil { + return UserDelegationCredential{}, err + } + return NewUserDelegationCredential(strings.Split(s.client.url.Host, ".")[0], *udk), nil +} + +// URL returns the URL endpoint used by the ServiceURL object. +func (s ServiceURL) URL() url.URL { + return s.client.URL() +} + +// String returns the URL as a string. +func (s ServiceURL) String() string { + u := s.URL() + return u.String() +} + +// WithPipeline creates a new ServiceURL object identical to the source but with the specified request policy pipeline. +func (s ServiceURL) WithPipeline(p pipeline.Pipeline) ServiceURL { + return NewServiceURL(s.URL(), p) +} + +// NewContainerURL creates a new ContainerURL object by concatenating containerName to the end of +// ServiceURL's URL. The new ContainerURL uses the same request policy pipeline as the ServiceURL. +// To change the pipeline, create the ContainerURL and then call its WithPipeline method passing in the +// desired pipeline object. Or, call this package's NewContainerURL instead of calling this object's +// NewContainerURL method. +func (s ServiceURL) NewContainerURL(containerName string) ContainerURL { + containerURL := appendToURLPath(s.URL(), containerName) + return NewContainerURL(containerURL, s.client.Pipeline()) +} + +// appendToURLPath appends a string to the end of a URL's path (prefixing the string with a '/' if required) +func appendToURLPath(u url.URL, name string) url.URL { + // e.g. "https://ms.com/a/b/?k1=v1&k2=v2#f" + // When you call url.Parse() this is what you'll get: + // Scheme: "https" + // Opaque: "" + // User: nil + // Host: "ms.com" + // Path: "/a/b/" This should start with a / and it might or might not have a trailing slash + // RawPath: "" + // ForceQuery: false + // RawQuery: "k1=v1&k2=v2" + // Fragment: "f" + if len(u.Path) == 0 || u.Path[len(u.Path)-1] != '/' { + u.Path += "/" // Append "/" to end before appending name + } + u.Path += name + return u +} + +// ListContainersFlatSegment returns a single segment of containers starting from the specified Marker. Use an empty +// Marker to start enumeration from the beginning. Container names are returned in lexicographic order. +// After getting a segment, process it, and then call ListContainersFlatSegment again (passing the the +// previously-returned Marker) to get the next segment. For more information, see +// https://docs.microsoft.com/rest/api/storageservices/list-containers2. +func (s ServiceURL) ListContainersSegment(ctx context.Context, marker Marker, o ListContainersSegmentOptions) (*ListContainersSegmentResponse, error) { + prefix, include, maxResults := o.pointers() + return s.client.ListContainersSegment(ctx, prefix, marker.Val, maxResults, include, nil, nil) +} + +// ListContainersOptions defines options available when calling ListContainers. +type ListContainersSegmentOptions struct { + Detail ListContainersDetail // No IncludeType header is produced if "" + Prefix string // No Prefix header is produced if "" + MaxResults int32 // 0 means unspecified + // TODO: update swagger to generate this type? +} + +func (o *ListContainersSegmentOptions) pointers() (prefix *string, include ListContainersIncludeType, maxResults *int32) { + if o.Prefix != "" { + prefix = &o.Prefix + } + if o.MaxResults != 0 { + maxResults = &o.MaxResults + } + include = ListContainersIncludeType(o.Detail.string()) + return +} + +// ListContainersFlatDetail indicates what additional information the service should return with each container. +type ListContainersDetail struct { + // Tells the service whether to return metadata for each container. + Metadata bool +} + +// string produces the Include query parameter's value. +func (d *ListContainersDetail) string() string { + items := make([]string, 0, 1) + // NOTE: Multiple strings MUST be appended in alphabetic order or signing the string for authentication fails! + if d.Metadata { + items = append(items, string(ListContainersIncludeMetadata)) + } + if len(items) > 0 { + return strings.Join(items, ",") + } + return string(ListContainersIncludeNone) +} + +func (bsu ServiceURL) GetProperties(ctx context.Context) (*StorageServiceProperties, error) { + return bsu.client.GetProperties(ctx, nil, nil) +} + +func (bsu ServiceURL) SetProperties(ctx context.Context, properties StorageServiceProperties) (*ServiceSetPropertiesResponse, error) { + return bsu.client.SetProperties(ctx, properties, nil, nil) +} + +func (bsu ServiceURL) GetStatistics(ctx context.Context) (*StorageServiceStats, error) { + return bsu.client.GetStatistics(ctx, nil, nil) +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/user_delegation_credential.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/user_delegation_credential.go new file mode 100644 index 0000000..9fcbbc4 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/user_delegation_credential.go @@ -0,0 +1,38 @@ +package azblob + +import ( + "crypto/hmac" + "crypto/sha256" + "encoding/base64" +) + +// NewUserDelegationCredential creates a new UserDelegationCredential using a Storage account's name and a user delegation key from it +func NewUserDelegationCredential(accountName string, key UserDelegationKey) UserDelegationCredential { + return UserDelegationCredential{ + accountName: accountName, + accountKey: key, + } +} + +type UserDelegationCredential struct { + accountName string + accountKey UserDelegationKey +} + +// AccountName returns the Storage account's name +func (f UserDelegationCredential) AccountName() string { + return f.accountName +} + +// ComputeHMAC +func (f UserDelegationCredential) ComputeHMACSHA256(message string) (base64String string) { + bytes, _ := base64.StdEncoding.DecodeString(f.accountKey.Value) + h := hmac.New(sha256.New, bytes) + h.Write([]byte(message)) + return base64.StdEncoding.EncodeToString(h.Sum(nil)) +} + +// Private method to return important parameters for NewSASQueryParameters +func (f UserDelegationCredential) getUDKParams() *UserDelegationKey { + return &f.accountKey +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/version.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/version.go new file mode 100644 index 0000000..bcc7b95 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/version.go @@ -0,0 +1,3 @@ +package azblob + +const serviceLibVersion = "0.7" diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_credential_anonymous.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_credential_anonymous.go new file mode 100644 index 0000000..a81987d --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_credential_anonymous.go @@ -0,0 +1,55 @@ +package azblob + +import ( + "context" + + "github.com/Azure/azure-pipeline-go/pipeline" +) + +// Credential represent any credential type; it is used to create a credential policy Factory. +type Credential interface { + pipeline.Factory + credentialMarker() +} + +type credentialFunc pipeline.FactoryFunc + +func (f credentialFunc) New(next pipeline.Policy, po *pipeline.PolicyOptions) pipeline.Policy { + return f(next, po) +} + +// credentialMarker is a package-internal method that exists just to satisfy the Credential interface. +func (credentialFunc) credentialMarker() {} + +////////////////////////////// + +// NewAnonymousCredential creates an anonymous credential for use with HTTP(S) requests that read public resource +// or for use with Shared Access Signatures (SAS). +func NewAnonymousCredential() Credential { + return anonymousCredentialFactory +} + +var anonymousCredentialFactory Credential = &anonymousCredentialPolicyFactory{} // Singleton + +// anonymousCredentialPolicyFactory is the credential's policy factory. +type anonymousCredentialPolicyFactory struct { +} + +// New creates a credential policy object. +func (f *anonymousCredentialPolicyFactory) New(next pipeline.Policy, po *pipeline.PolicyOptions) pipeline.Policy { + return &anonymousCredentialPolicy{next: next} +} + +// credentialMarker is a package-internal method that exists just to satisfy the Credential interface. +func (*anonymousCredentialPolicyFactory) credentialMarker() {} + +// anonymousCredentialPolicy is the credential's policy object. +type anonymousCredentialPolicy struct { + next pipeline.Policy +} + +// Do implements the credential's policy interface. +func (p anonymousCredentialPolicy) Do(ctx context.Context, request pipeline.Request) (pipeline.Response, error) { + // For anonymous credentials, this is effectively a no-op + return p.next.Do(ctx, request) +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_credential_shared_key.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_credential_shared_key.go new file mode 100644 index 0000000..3e27552 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_credential_shared_key.go @@ -0,0 +1,205 @@ +package azblob + +import ( + "bytes" + "context" + "crypto/hmac" + "crypto/sha256" + "encoding/base64" + "errors" + "net/http" + "net/url" + "sort" + "strings" + "time" + + "github.com/Azure/azure-pipeline-go/pipeline" +) + +// NewSharedKeyCredential creates an immutable SharedKeyCredential containing the +// storage account's name and either its primary or secondary key. +func NewSharedKeyCredential(accountName, accountKey string) (*SharedKeyCredential, error) { + bytes, err := base64.StdEncoding.DecodeString(accountKey) + if err != nil { + return &SharedKeyCredential{}, err + } + return &SharedKeyCredential{accountName: accountName, accountKey: bytes}, nil +} + +// SharedKeyCredential contains an account's name and its primary or secondary key. +// It is immutable making it shareable and goroutine-safe. +type SharedKeyCredential struct { + // Only the NewSharedKeyCredential method should set these; all other methods should treat them as read-only + accountName string + accountKey []byte +} + +// AccountName returns the Storage account's name. +func (f SharedKeyCredential) AccountName() string { + return f.accountName +} + +func (f SharedKeyCredential) getAccountKey() []byte { + return f.accountKey +} + +// noop function to satisfy StorageAccountCredential interface +func (f SharedKeyCredential) getUDKParams() *UserDelegationKey { + return nil +} + +// New creates a credential policy object. +func (f *SharedKeyCredential) New(next pipeline.Policy, po *pipeline.PolicyOptions) pipeline.Policy { + return pipeline.PolicyFunc(func(ctx context.Context, request pipeline.Request) (pipeline.Response, error) { + // Add a x-ms-date header if it doesn't already exist + if d := request.Header.Get(headerXmsDate); d == "" { + request.Header[headerXmsDate] = []string{time.Now().UTC().Format(http.TimeFormat)} + } + stringToSign, err := f.buildStringToSign(request) + if err != nil { + return nil, err + } + signature := f.ComputeHMACSHA256(stringToSign) + authHeader := strings.Join([]string{"SharedKey ", f.accountName, ":", signature}, "") + request.Header[headerAuthorization] = []string{authHeader} + + response, err := next.Do(ctx, request) + if err != nil && response != nil && response.Response() != nil && response.Response().StatusCode == http.StatusForbidden { + // Service failed to authenticate request, log it + po.Log(pipeline.LogError, "===== HTTP Forbidden status, String-to-Sign:\n"+stringToSign+"\n===============================\n") + } + return response, err + }) +} + +// credentialMarker is a package-internal method that exists just to satisfy the Credential interface. +func (*SharedKeyCredential) credentialMarker() {} + +// Constants ensuring that header names are correctly spelled and consistently cased. +const ( + headerAuthorization = "Authorization" + headerCacheControl = "Cache-Control" + headerContentEncoding = "Content-Encoding" + headerContentDisposition = "Content-Disposition" + headerContentLanguage = "Content-Language" + headerContentLength = "Content-Length" + headerContentMD5 = "Content-MD5" + headerContentType = "Content-Type" + headerDate = "Date" + headerIfMatch = "If-Match" + headerIfModifiedSince = "If-Modified-Since" + headerIfNoneMatch = "If-None-Match" + headerIfUnmodifiedSince = "If-Unmodified-Since" + headerRange = "Range" + headerUserAgent = "User-Agent" + headerXmsDate = "x-ms-date" + headerXmsVersion = "x-ms-version" +) + +// ComputeHMACSHA256 generates a hash signature for an HTTP request or for a SAS. +func (f SharedKeyCredential) ComputeHMACSHA256(message string) (base64String string) { + h := hmac.New(sha256.New, f.accountKey) + h.Write([]byte(message)) + return base64.StdEncoding.EncodeToString(h.Sum(nil)) +} + +func (f *SharedKeyCredential) buildStringToSign(request pipeline.Request) (string, error) { + // https://docs.microsoft.com/en-us/rest/api/storageservices/authentication-for-the-azure-storage-services + headers := request.Header + contentLength := headers.Get(headerContentLength) + if contentLength == "0" { + contentLength = "" + } + + canonicalizedResource, err := f.buildCanonicalizedResource(request.URL) + if err != nil { + return "", err + } + + stringToSign := strings.Join([]string{ + request.Method, + headers.Get(headerContentEncoding), + headers.Get(headerContentLanguage), + contentLength, + headers.Get(headerContentMD5), + headers.Get(headerContentType), + "", // Empty date because x-ms-date is expected (as per web page above) + headers.Get(headerIfModifiedSince), + headers.Get(headerIfMatch), + headers.Get(headerIfNoneMatch), + headers.Get(headerIfUnmodifiedSince), + headers.Get(headerRange), + buildCanonicalizedHeader(headers), + canonicalizedResource, + }, "\n") + return stringToSign, nil +} + +func buildCanonicalizedHeader(headers http.Header) string { + cm := map[string][]string{} + for k, v := range headers { + headerName := strings.TrimSpace(strings.ToLower(k)) + if strings.HasPrefix(headerName, "x-ms-") { + cm[headerName] = v // NOTE: the value must not have any whitespace around it. + } + } + if len(cm) == 0 { + return "" + } + + keys := make([]string, 0, len(cm)) + for key := range cm { + keys = append(keys, key) + } + sort.Strings(keys) + ch := bytes.NewBufferString("") + for i, key := range keys { + if i > 0 { + ch.WriteRune('\n') + } + ch.WriteString(key) + ch.WriteRune(':') + ch.WriteString(strings.Join(cm[key], ",")) + } + return string(ch.Bytes()) +} + +func (f *SharedKeyCredential) buildCanonicalizedResource(u *url.URL) (string, error) { + // https://docs.microsoft.com/en-us/rest/api/storageservices/authentication-for-the-azure-storage-services + cr := bytes.NewBufferString("/") + cr.WriteString(f.accountName) + + if len(u.Path) > 0 { + // Any portion of the CanonicalizedResource string that is derived from + // the resource's URI should be encoded exactly as it is in the URI. + // -- https://msdn.microsoft.com/en-gb/library/azure/dd179428.aspx + cr.WriteString(u.EscapedPath()) + } else { + // a slash is required to indicate the root path + cr.WriteString("/") + } + + // params is a map[string][]string; param name is key; params values is []string + params, err := url.ParseQuery(u.RawQuery) // Returns URL decoded values + if err != nil { + return "", errors.New("parsing query parameters must succeed, otherwise there might be serious problems in the SDK/generated code") + } + + if len(params) > 0 { // There is at least 1 query parameter + paramNames := []string{} // We use this to sort the parameter key names + for paramName := range params { + paramNames = append(paramNames, paramName) // paramNames must be lowercase + } + sort.Strings(paramNames) + + for _, paramName := range paramNames { + paramValues := params[paramName] + sort.Strings(paramValues) + + // Join the sorted key values separated by ',' + // Then prepend "keyName:"; then add this string to the buffer + cr.WriteString("\n" + paramName + ":" + strings.Join(paramValues, ",")) + } + } + return string(cr.Bytes()), nil +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_credential_token.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_credential_token.go new file mode 100644 index 0000000..7e78d25 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_credential_token.go @@ -0,0 +1,137 @@ +package azblob + +import ( + "context" + "errors" + "sync/atomic" + + "runtime" + "sync" + "time" + + "github.com/Azure/azure-pipeline-go/pipeline" +) + +// TokenRefresher represents a callback method that you write; this method is called periodically +// so you can refresh the token credential's value. +type TokenRefresher func(credential TokenCredential) time.Duration + +// TokenCredential represents a token credential (which is also a pipeline.Factory). +type TokenCredential interface { + Credential + Token() string + SetToken(newToken string) +} + +// NewTokenCredential creates a token credential for use with role-based access control (RBAC) access to Azure Storage +// resources. You initialize the TokenCredential with an initial token value. If you pass a non-nil value for +// tokenRefresher, then the function you pass will be called immediately so it can refresh and change the +// TokenCredential's token value by calling SetToken. Your tokenRefresher function must return a time.Duration +// indicating how long the TokenCredential object should wait before calling your tokenRefresher function again. +// If your tokenRefresher callback fails to refresh the token, you can return a duration of 0 to stop your +// TokenCredential object from ever invoking tokenRefresher again. Also, oen way to deal with failing to refresh a +// token is to cancel a context.Context object used by requests that have the TokenCredential object in their pipeline. +func NewTokenCredential(initialToken string, tokenRefresher TokenRefresher) TokenCredential { + tc := &tokenCredential{} + tc.SetToken(initialToken) // We don't set it above to guarantee atomicity + if tokenRefresher == nil { + return tc // If no callback specified, return the simple tokenCredential + } + + tcwr := &tokenCredentialWithRefresh{token: tc} + tcwr.token.startRefresh(tokenRefresher) + runtime.SetFinalizer(tcwr, func(deadTC *tokenCredentialWithRefresh) { + deadTC.token.stopRefresh() + deadTC.token = nil // Sanity (not really required) + }) + return tcwr +} + +// tokenCredentialWithRefresh is a wrapper over a token credential. +// When this wrapper object gets GC'd, it stops the tokenCredential's timer +// which allows the tokenCredential object to also be GC'd. +type tokenCredentialWithRefresh struct { + token *tokenCredential +} + +// credentialMarker is a package-internal method that exists just to satisfy the Credential interface. +func (*tokenCredentialWithRefresh) credentialMarker() {} + +// Token returns the current token value +func (f *tokenCredentialWithRefresh) Token() string { return f.token.Token() } + +// SetToken changes the current token value +func (f *tokenCredentialWithRefresh) SetToken(token string) { f.token.SetToken(token) } + +// New satisfies pipeline.Factory's New method creating a pipeline policy object. +func (f *tokenCredentialWithRefresh) New(next pipeline.Policy, po *pipeline.PolicyOptions) pipeline.Policy { + return f.token.New(next, po) +} + +/////////////////////////////////////////////////////////////////////////////// + +// tokenCredential is a pipeline.Factory is the credential's policy factory. +type tokenCredential struct { + token atomic.Value + + // The members below are only used if the user specified a tokenRefresher callback function. + timer *time.Timer + tokenRefresher TokenRefresher + lock sync.Mutex + stopped bool +} + +// credentialMarker is a package-internal method that exists just to satisfy the Credential interface. +func (*tokenCredential) credentialMarker() {} + +// Token returns the current token value +func (f *tokenCredential) Token() string { return f.token.Load().(string) } + +// SetToken changes the current token value +func (f *tokenCredential) SetToken(token string) { f.token.Store(token) } + +// startRefresh calls refresh which immediately calls tokenRefresher +// and then starts a timer to call tokenRefresher in the future. +func (f *tokenCredential) startRefresh(tokenRefresher TokenRefresher) { + f.tokenRefresher = tokenRefresher + f.stopped = false // In case user calls StartRefresh, StopRefresh, & then StartRefresh again + f.refresh() +} + +// refresh calls the user's tokenRefresher so they can refresh the token (by +// calling SetToken) and then starts another time (based on the returned duration) +// in order to refresh the token again in the future. +func (f *tokenCredential) refresh() { + d := f.tokenRefresher(f) // Invoke the user's refresh callback outside of the lock + if d > 0 { // If duration is 0 or negative, refresher wants to not be called again + f.lock.Lock() + if !f.stopped { + f.timer = time.AfterFunc(d, f.refresh) + } + f.lock.Unlock() + } +} + +// stopRefresh stops any pending timer and sets stopped field to true to prevent +// any new timer from starting. +// NOTE: Stopping the timer allows the GC to destroy the tokenCredential object. +func (f *tokenCredential) stopRefresh() { + f.lock.Lock() + f.stopped = true + if f.timer != nil { + f.timer.Stop() + } + f.lock.Unlock() +} + +// New satisfies pipeline.Factory's New method creating a pipeline policy object. +func (f *tokenCredential) New(next pipeline.Policy, po *pipeline.PolicyOptions) pipeline.Policy { + return pipeline.PolicyFunc(func(ctx context.Context, request pipeline.Request) (pipeline.Response, error) { + if request.URL.Scheme != "https" { + // HTTPS must be used, otherwise the tokens are at the risk of being exposed + return nil, errors.New("token credentials require a URL using the https protocol scheme") + } + request.Header[headerAuthorization] = []string{"Bearer " + f.Token()} + return next.Do(ctx, request) + }) +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_mmf_unix.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_mmf_unix.go new file mode 100644 index 0000000..3e8c7cb --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_mmf_unix.go @@ -0,0 +1,27 @@ +// +build linux darwin freebsd openbsd netbsd dragonfly + +package azblob + +import ( + "os" + "syscall" +) + +type mmf []byte + +func newMMF(file *os.File, writable bool, offset int64, length int) (mmf, error) { + prot, flags := syscall.PROT_READ, syscall.MAP_SHARED // Assume read-only + if writable { + prot, flags = syscall.PROT_READ|syscall.PROT_WRITE, syscall.MAP_SHARED + } + addr, err := syscall.Mmap(int(file.Fd()), offset, length, prot, flags) + return mmf(addr), err +} + +func (m *mmf) unmap() { + err := syscall.Munmap(*m) + *m = nil + if err != nil { + panic("if we are unable to unmap the memory-mapped file, there is serious concern for memory corruption") + } +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_mmf_windows.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_mmf_windows.go new file mode 100644 index 0000000..2743644 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_mmf_windows.go @@ -0,0 +1,38 @@ +package azblob + +import ( + "os" + "reflect" + "syscall" + "unsafe" +) + +type mmf []byte + +func newMMF(file *os.File, writable bool, offset int64, length int) (mmf, error) { + prot, access := uint32(syscall.PAGE_READONLY), uint32(syscall.FILE_MAP_READ) // Assume read-only + if writable { + prot, access = uint32(syscall.PAGE_READWRITE), uint32(syscall.FILE_MAP_WRITE) + } + hMMF, errno := syscall.CreateFileMapping(syscall.Handle(file.Fd()), nil, prot, uint32(int64(length)>>32), uint32(int64(length)&0xffffffff), nil) + if hMMF == 0 { + return nil, os.NewSyscallError("CreateFileMapping", errno) + } + defer syscall.CloseHandle(hMMF) + addr, errno := syscall.MapViewOfFile(hMMF, access, uint32(offset>>32), uint32(offset&0xffffffff), uintptr(length)) + m := mmf{} + h := (*reflect.SliceHeader)(unsafe.Pointer(&m)) + h.Data = addr + h.Len = length + h.Cap = h.Len + return m, nil +} + +func (m *mmf) unmap() { + addr := uintptr(unsafe.Pointer(&(([]byte)(*m)[0]))) + *m = mmf{} + err := syscall.UnmapViewOfFile(addr) + if err != nil { + panic("if we are unable to unmap the memory-mapped file, there is serious concern for memory corruption") + } +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_pipeline.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_pipeline.go new file mode 100644 index 0000000..7c249a2 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_pipeline.go @@ -0,0 +1,46 @@ +package azblob + +import ( + "github.com/Azure/azure-pipeline-go/pipeline" +) + +// PipelineOptions is used to configure a request policy pipeline's retry policy and logging. +type PipelineOptions struct { + // Log configures the pipeline's logging infrastructure indicating what information is logged and where. + Log pipeline.LogOptions + + // Retry configures the built-in retry policy behavior. + Retry RetryOptions + + // RequestLog configures the built-in request logging policy. + RequestLog RequestLogOptions + + // Telemetry configures the built-in telemetry policy behavior. + Telemetry TelemetryOptions + + // HTTPSender configures the sender of HTTP requests + HTTPSender pipeline.Factory +} + +// NewPipeline creates a Pipeline using the specified credentials and options. +func NewPipeline(c Credential, o PipelineOptions) pipeline.Pipeline { + // Closest to API goes first; closest to the wire goes last + f := []pipeline.Factory{ + NewTelemetryPolicyFactory(o.Telemetry), + NewUniqueRequestIDPolicyFactory(), + NewRetryPolicyFactory(o.Retry), + } + + if _, ok := c.(*anonymousCredentialPolicyFactory); !ok { + // For AnonymousCredential, we optimize out the policy factory since it doesn't do anything + // NOTE: The credential's policy factory must appear close to the wire so it can sign any + // changes made by other factories (like UniqueRequestIDPolicyFactory) + f = append(f, c) + } + f = append(f, + NewRequestLogPolicyFactory(o.RequestLog), + pipeline.MethodFactoryMarker()) // indicates at what stage in the pipeline the method factory is invoked + + + return pipeline.NewPipeline(f, pipeline.Options{HTTPSender: o.HTTPSender, Log: o.Log}) +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_request_log.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_request_log.go new file mode 100644 index 0000000..0a362ea --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_request_log.go @@ -0,0 +1,182 @@ +package azblob + +import ( + "bytes" + "context" + "fmt" + "net/http" + "net/url" + "runtime" + "strings" + "time" + + "github.com/Azure/azure-pipeline-go/pipeline" +) + +// RequestLogOptions configures the retry policy's behavior. +type RequestLogOptions struct { + // LogWarningIfTryOverThreshold logs a warning if a tried operation takes longer than the specified + // duration (-1=no logging; 0=default threshold). + LogWarningIfTryOverThreshold time.Duration +} + +func (o RequestLogOptions) defaults() RequestLogOptions { + if o.LogWarningIfTryOverThreshold == 0 { + // It would be good to relate this to https://azure.microsoft.com/en-us/support/legal/sla/storage/v1_2/ + // But this monitors the time to get the HTTP response; NOT the time to download the response body. + o.LogWarningIfTryOverThreshold = 3 * time.Second // Default to 3 seconds + } + return o +} + +// NewRequestLogPolicyFactory creates a RequestLogPolicyFactory object configured using the specified options. +func NewRequestLogPolicyFactory(o RequestLogOptions) pipeline.Factory { + o = o.defaults() // Force defaults to be calculated + return pipeline.FactoryFunc(func(next pipeline.Policy, po *pipeline.PolicyOptions) pipeline.PolicyFunc { + // These variables are per-policy; shared by multiple calls to Do + var try int32 + operationStart := time.Now() // If this is the 1st try, record the operation state time + return func(ctx context.Context, request pipeline.Request) (response pipeline.Response, err error) { + try++ // The first try is #1 (not #0) + + // Log the outgoing request as informational + if po.ShouldLog(pipeline.LogInfo) { + b := &bytes.Buffer{} + fmt.Fprintf(b, "==> OUTGOING REQUEST (Try=%d)\n", try) + pipeline.WriteRequestWithResponse(b, prepareRequestForLogging(request), nil, nil) + po.Log(pipeline.LogInfo, b.String()) + } + + // Set the time for this particular retry operation and then Do the operation. + tryStart := time.Now() + response, err = next.Do(ctx, request) // Make the request + tryEnd := time.Now() + tryDuration := tryEnd.Sub(tryStart) + opDuration := tryEnd.Sub(operationStart) + + logLevel, forceLog := pipeline.LogInfo, false // Default logging information + + // If the response took too long, we'll upgrade to warning. + if o.LogWarningIfTryOverThreshold > 0 && tryDuration > o.LogWarningIfTryOverThreshold { + // Log a warning if the try duration exceeded the specified threshold + logLevel, forceLog = pipeline.LogWarning, true + } + + if err == nil { // We got a response from the service + sc := response.Response().StatusCode + if ((sc >= 400 && sc <= 499) && sc != http.StatusNotFound && sc != http.StatusConflict && sc != http.StatusPreconditionFailed && sc != http.StatusRequestedRangeNotSatisfiable) || (sc >= 500 && sc <= 599) { + logLevel, forceLog = pipeline.LogError, true // Promote to Error any 4xx (except those listed is an error) or any 5xx + } else { + // For other status codes, we leave the level as is. + } + } else { // This error did not get an HTTP response from the service; upgrade the severity to Error + logLevel, forceLog = pipeline.LogError, true + } + + if shouldLog := po.ShouldLog(logLevel); forceLog || shouldLog { + // We're going to log this; build the string to log + b := &bytes.Buffer{} + slow := "" + if o.LogWarningIfTryOverThreshold > 0 && tryDuration > o.LogWarningIfTryOverThreshold { + slow = fmt.Sprintf("[SLOW >%v]", o.LogWarningIfTryOverThreshold) + } + fmt.Fprintf(b, "==> REQUEST/RESPONSE (Try=%d/%v%s, OpTime=%v) -- ", try, tryDuration, slow, opDuration) + if err != nil { // This HTTP request did not get a response from the service + fmt.Fprint(b, "REQUEST ERROR\n") + } else { + if logLevel == pipeline.LogError { + fmt.Fprint(b, "RESPONSE STATUS CODE ERROR\n") + } else { + fmt.Fprint(b, "RESPONSE SUCCESSFULLY RECEIVED\n") + } + } + + pipeline.WriteRequestWithResponse(b, prepareRequestForLogging(request), response.Response(), err) + if logLevel <= pipeline.LogError { + b.Write(stack()) // For errors (or lower levels), we append the stack trace (an expensive operation) + } + msg := b.String() + + if forceLog { + pipeline.ForceLog(logLevel, msg) + } + if shouldLog { + po.Log(logLevel, msg) + } + } + return response, err + } + }) +} + +// RedactSigQueryParam redacts the 'sig' query parameter in URL's raw query to protect secret. +func RedactSigQueryParam(rawQuery string) (bool, string) { + rawQuery = strings.ToLower(rawQuery) // lowercase the string so we can look for ?sig= and &sig= + sigFound := strings.Contains(rawQuery, "?sig=") + if !sigFound { + sigFound = strings.Contains(rawQuery, "&sig=") + if !sigFound { + return sigFound, rawQuery // [?|&]sig= not found; return same rawQuery passed in (no memory allocation) + } + } + // [?|&]sig= found, redact its value + values, _ := url.ParseQuery(rawQuery) + for name := range values { + if strings.EqualFold(name, "sig") { + values[name] = []string{"REDACTED"} + } + } + return sigFound, values.Encode() +} + +func prepareRequestForLogging(request pipeline.Request) *http.Request { + req := request + if sigFound, rawQuery := RedactSigQueryParam(req.URL.RawQuery); sigFound { + // Make copy so we don't destroy the query parameters we actually need to send in the request + req = request.Copy() + req.Request.URL.RawQuery = rawQuery + } + + return prepareRequestForServiceLogging(req) +} + +func stack() []byte { + buf := make([]byte, 1024) + for { + n := runtime.Stack(buf, false) + if n < len(buf) { + return buf[:n] + } + buf = make([]byte, 2*len(buf)) + } +} + +/////////////////////////////////////////////////////////////////////////////////////// +// Redact phase useful for blob and file service only. For other services, +// this method can directly return request.Request. +/////////////////////////////////////////////////////////////////////////////////////// +func prepareRequestForServiceLogging(request pipeline.Request) *http.Request { + req := request + if exist, key := doesHeaderExistCaseInsensitive(req.Header, xMsCopySourceHeader); exist { + req = request.Copy() + url, err := url.Parse(req.Header.Get(key)) + if err == nil { + if sigFound, rawQuery := RedactSigQueryParam(url.RawQuery); sigFound { + url.RawQuery = rawQuery + req.Header.Set(xMsCopySourceHeader, url.String()) + } + } + } + return req.Request +} + +const xMsCopySourceHeader = "x-ms-copy-source" + +func doesHeaderExistCaseInsensitive(header http.Header, key string) (bool, string) { + for keyInHeader := range header { + if strings.EqualFold(keyInHeader, key) { + return true, keyInHeader + } + } + return false, "" +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_retry.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_retry.go new file mode 100644 index 0000000..00531fe --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_retry.go @@ -0,0 +1,412 @@ +package azblob + +import ( + "context" + "errors" + "io" + "io/ioutil" + "math/rand" + "net" + "net/http" + "strconv" + "strings" + "time" + + "github.com/Azure/azure-pipeline-go/pipeline" +) + +// RetryPolicy tells the pipeline what kind of retry policy to use. See the RetryPolicy* constants. +type RetryPolicy int32 + +const ( + // RetryPolicyExponential tells the pipeline to use an exponential back-off retry policy + RetryPolicyExponential RetryPolicy = 0 + + // RetryPolicyFixed tells the pipeline to use a fixed back-off retry policy + RetryPolicyFixed RetryPolicy = 1 +) + +// RetryOptions configures the retry policy's behavior. +type RetryOptions struct { + // Policy tells the pipeline what kind of retry policy to use. See the RetryPolicy* constants.\ + // A value of zero means that you accept our default policy. + Policy RetryPolicy + + // MaxTries specifies the maximum number of attempts an operation will be tried before producing an error (0=default). + // A value of zero means that you accept our default policy. A value of 1 means 1 try and no retries. + MaxTries int32 + + // TryTimeout indicates the maximum time allowed for any single try of an HTTP request. + // A value of zero means that you accept our default timeout. NOTE: When transferring large amounts + // of data, the default TryTimeout will probably not be sufficient. You should override this value + // based on the bandwidth available to the host machine and proximity to the Storage service. A good + // starting point may be something like (60 seconds per MB of anticipated-payload-size). + TryTimeout time.Duration + + // RetryDelay specifies the amount of delay to use before retrying an operation (0=default). + // When RetryPolicy is specified as RetryPolicyExponential, the delay increases exponentially + // with each retry up to a maximum specified by MaxRetryDelay. + // If you specify 0, then you must also specify 0 for MaxRetryDelay. + // If you specify RetryDelay, then you must also specify MaxRetryDelay, and MaxRetryDelay should be + // equal to or greater than RetryDelay. + RetryDelay time.Duration + + // MaxRetryDelay specifies the maximum delay allowed before retrying an operation (0=default). + // If you specify 0, then you must also specify 0 for RetryDelay. + MaxRetryDelay time.Duration + + // RetryReadsFromSecondaryHost specifies whether the retry policy should retry a read operation against another host. + // If RetryReadsFromSecondaryHost is "" (the default) then operations are not retried against another host. + // NOTE: Before setting this field, make sure you understand the issues around reading stale & potentially-inconsistent + // data at this webpage: https://docs.microsoft.com/en-us/azure/storage/common/storage-designing-ha-apps-with-ragrs + RetryReadsFromSecondaryHost string // Comment this our for non-Blob SDKs +} + +func (o RetryOptions) retryReadsFromSecondaryHost() string { + return o.RetryReadsFromSecondaryHost // This is for the Blob SDK only + //return "" // This is for non-blob SDKs +} + +func (o RetryOptions) defaults() RetryOptions { + // We assume the following: + // 1. o.Policy should either be RetryPolicyExponential or RetryPolicyFixed + // 2. o.MaxTries >= 0 + // 3. o.TryTimeout, o.RetryDelay, and o.MaxRetryDelay >=0 + // 4. o.RetryDelay <= o.MaxRetryDelay + // 5. Both o.RetryDelay and o.MaxRetryDelay must be 0 or neither can be 0 + + IfDefault := func(current *time.Duration, desired time.Duration) { + if *current == time.Duration(0) { + *current = desired + } + } + + // Set defaults if unspecified + if o.MaxTries == 0 { + o.MaxTries = 4 + } + switch o.Policy { + case RetryPolicyExponential: + IfDefault(&o.TryTimeout, 1*time.Minute) + IfDefault(&o.RetryDelay, 4*time.Second) + IfDefault(&o.MaxRetryDelay, 120*time.Second) + + case RetryPolicyFixed: + IfDefault(&o.TryTimeout, 1*time.Minute) + IfDefault(&o.RetryDelay, 30*time.Second) + IfDefault(&o.MaxRetryDelay, 120*time.Second) + } + return o +} + +func (o RetryOptions) calcDelay(try int32) time.Duration { // try is >=1; never 0 + pow := func(number int64, exponent int32) int64 { // pow is nested helper function + var result int64 = 1 + for n := int32(0); n < exponent; n++ { + result *= number + } + return result + } + + delay := time.Duration(0) + switch o.Policy { + case RetryPolicyExponential: + delay = time.Duration(pow(2, try-1)-1) * o.RetryDelay + + case RetryPolicyFixed: + if try > 1 { // Any try after the 1st uses the fixed delay + delay = o.RetryDelay + } + } + + // Introduce some jitter: [0.0, 1.0) / 2 = [0.0, 0.5) + 0.8 = [0.8, 1.3) + // For casts and rounding - be careful, as per https://github.com/golang/go/issues/20757 + delay = time.Duration(float32(delay) * (rand.Float32()/2 + 0.8)) // NOTE: We want math/rand; not crypto/rand + if delay > o.MaxRetryDelay { + delay = o.MaxRetryDelay + } + return delay +} + +// NewRetryPolicyFactory creates a RetryPolicyFactory object configured using the specified options. +func NewRetryPolicyFactory(o RetryOptions) pipeline.Factory { + o = o.defaults() // Force defaults to be calculated + return pipeline.FactoryFunc(func(next pipeline.Policy, po *pipeline.PolicyOptions) pipeline.PolicyFunc { + return func(ctx context.Context, request pipeline.Request) (response pipeline.Response, err error) { + // Before each try, we'll select either the primary or secondary URL. + primaryTry := int32(0) // This indicates how many tries we've attempted against the primary DC + + // We only consider retrying against a secondary if we have a read request (GET/HEAD) AND this policy has a Secondary URL it can use + considerSecondary := (request.Method == http.MethodGet || request.Method == http.MethodHead) && o.retryReadsFromSecondaryHost() != "" + + // Exponential retry algorithm: ((2 ^ attempt) - 1) * delay * random(0.8, 1.2) + // When to retry: connection failure or temporary/timeout. NOTE: StorageError considers HTTP 500/503 as temporary & is therefore retryable + // If using a secondary: + // Even tries go against primary; odd tries go against the secondary + // For a primary wait ((2 ^ primaryTries - 1) * delay * random(0.8, 1.2) + // If secondary gets a 404, don't fail, retry but future retries are only against the primary + // When retrying against a secondary, ignore the retry count and wait (.1 second * random(0.8, 1.2)) + for try := int32(1); try <= o.MaxTries; try++ { + logf("\n=====> Try=%d\n", try) + + // Determine which endpoint to try. It's primary if there is no secondary or if it is an add # attempt. + tryingPrimary := !considerSecondary || (try%2 == 1) + // Select the correct host and delay + if tryingPrimary { + primaryTry++ + delay := o.calcDelay(primaryTry) + logf("Primary try=%d, Delay=%v\n", primaryTry, delay) + time.Sleep(delay) // The 1st try returns 0 delay + } else { + // For casts and rounding - be careful, as per https://github.com/golang/go/issues/20757 + delay := time.Duration(float32(time.Second) * (rand.Float32()/2 + 0.8)) + logf("Secondary try=%d, Delay=%v\n", try-primaryTry, delay) + time.Sleep(delay) // Delay with some jitter before trying secondary + } + + // Clone the original request to ensure that each try starts with the original (unmutated) request. + requestCopy := request.Copy() + + // For each try, seek to the beginning of the Body stream. We do this even for the 1st try because + // the stream may not be at offset 0 when we first get it and we want the same behavior for the + // 1st try as for additional tries. + err = requestCopy.RewindBody() + if err != nil { + return nil, errors.New("we must be able to seek on the Body Stream, otherwise retries would cause data corruption") + } + + if !tryingPrimary { + requestCopy.URL.Host = o.retryReadsFromSecondaryHost() + requestCopy.Host = o.retryReadsFromSecondaryHost() + } + + // Set the server-side timeout query parameter "timeout=[seconds]" + timeout := int32(o.TryTimeout.Seconds()) // Max seconds per try + if deadline, ok := ctx.Deadline(); ok { // If user's ctx has a deadline, make the timeout the smaller of the two + t := int32(deadline.Sub(time.Now()).Seconds()) // Duration from now until user's ctx reaches its deadline + logf("MaxTryTimeout=%d secs, TimeTilDeadline=%d sec\n", timeout, t) + if t < timeout { + timeout = t + } + if timeout < 0 { + timeout = 0 // If timeout ever goes negative, set it to zero; this happen while debugging + } + logf("TryTimeout adjusted to=%d sec\n", timeout) + } + q := requestCopy.Request.URL.Query() + q.Set("timeout", strconv.Itoa(int(timeout+1))) // Add 1 to "round up" + requestCopy.Request.URL.RawQuery = q.Encode() + logf("Url=%s\n", requestCopy.Request.URL.String()) + + // Set the time for this particular retry operation and then Do the operation. + tryCtx, tryCancel := context.WithTimeout(ctx, time.Second*time.Duration(timeout)) + //requestCopy.Body = &deadlineExceededReadCloser{r: requestCopy.Request.Body} + response, err = next.Do(tryCtx, requestCopy) // Make the request + /*err = improveDeadlineExceeded(err) + if err == nil { + response.Response().Body = &deadlineExceededReadCloser{r: response.Response().Body} + }*/ + logf("Err=%v, response=%v\n", err, response) + + action := "" // This MUST get changed within the switch code below + switch { + case ctx.Err() != nil: + action = "NoRetry: Op timeout" + case !tryingPrimary && response != nil && response.Response() != nil && response.Response().StatusCode == http.StatusNotFound: + // If attempt was against the secondary & it returned a StatusNotFound (404), then + // the resource was not found. This may be due to replication delay. So, in this + // case, we'll never try the secondary again for this operation. + considerSecondary = false + action = "Retry: Secondary URL returned 404" + case err != nil: + // NOTE: Protocol Responder returns non-nil if REST API returns invalid status code for the invoked operation. + // Use ServiceCode to verify if the error is related to storage service-side, + // ServiceCode is set only when error related to storage service happened. + if stErr, ok := err.(StorageError); ok { + if stErr.Temporary() { + action = "Retry: StorageError with error service code and Temporary()" + } else if stErr.Response() != nil && isSuccessStatusCode(stErr.Response()) { // TODO: This is a temporarily work around, remove this after protocol layer fix the issue that net.Error is wrapped as storageError + action = "Retry: StorageError with success status code" + } else { + action = "NoRetry: StorageError not Temporary() and without retriable status code" + } + } else if netErr, ok := err.(net.Error); ok { + // Use non-retriable net.Error list, but not retriable list. + // As there are errors without Temporary() implementation, + // while need be retried, like 'connection reset by peer', 'transport connection broken' and etc. + // So the SDK do retry for most of the case, unless the error should not be retried for sure. + if !isNotRetriable(netErr) { + action = "Retry: net.Error and not in the non-retriable list" + } else { + action = "NoRetry: net.Error and in the non-retriable list" + } + } else { + action = "NoRetry: unrecognized error" + } + default: + action = "NoRetry: successful HTTP request" // no error + } + + logf("Action=%s\n", action) + // fmt.Println(action + "\n") // This is where we could log the retry operation; action is why we're retrying + if action[0] != 'R' { // Retry only if action starts with 'R' + if err != nil { + tryCancel() // If we're returning an error, cancel this current/last per-retry timeout context + } else { + // We wrap the last per-try context in a body and overwrite the Response's Body field with our wrapper. + // So, when the user closes the Body, the our per-try context gets closed too. + // Another option, is that the Last Policy do this wrapping for a per-retry context (not for the user's context) + if response == nil || response.Response() == nil { + // We do panic in the case response or response.Response() is nil, + // as for client, the response should not be nil if request is sent and the operations is executed successfully. + // Another option, is that execute the cancel function when response or response.Response() is nil, + // as in this case, current per-try has nothing to do in future. + return nil, errors.New("invalid state, response should not be nil when the operation is executed successfully") + } + response.Response().Body = &contextCancelReadCloser{cf: tryCancel, body: response.Response().Body} + } + break // Don't retry + } + if response != nil && response.Response() != nil && response.Response().Body != nil { + // If we're going to retry and we got a previous response, then flush its body to avoid leaking its TCP connection + body := response.Response().Body + io.Copy(ioutil.Discard, body) + body.Close() + } + // If retrying, cancel the current per-try timeout context + tryCancel() + } + return response, err // Not retryable or too many retries; return the last response/error + } + }) +} + +// contextCancelReadCloser helps to invoke context's cancelFunc properly when the ReadCloser is closed. +type contextCancelReadCloser struct { + cf context.CancelFunc + body io.ReadCloser +} + +func (rc *contextCancelReadCloser) Read(p []byte) (n int, err error) { + return rc.body.Read(p) +} + +func (rc *contextCancelReadCloser) Close() error { + err := rc.body.Close() + if rc.cf != nil { + rc.cf() + } + return err +} + +// isNotRetriable checks if the provided net.Error isn't retriable. +func isNotRetriable(errToParse net.Error) bool { + // No error, so this is NOT retriable. + if errToParse == nil { + return true + } + + // The error is either temporary or a timeout so it IS retriable (not not retriable). + if errToParse.Temporary() || errToParse.Timeout() { + return false + } + + genericErr := error(errToParse) + + // From here all the error are neither Temporary() nor Timeout(). + switch err := errToParse.(type) { + case *net.OpError: + // The net.Error is also a net.OpError but the inner error is nil, so this is not retriable. + if err.Err == nil { + return true + } + genericErr = err.Err + } + + switch genericErr.(type) { + case *net.AddrError, net.UnknownNetworkError, *net.DNSError, net.InvalidAddrError, *net.ParseError, *net.DNSConfigError: + // If the error is one of the ones listed, then it is NOT retriable. + return true + } + + // If it's invalid header field name/value error thrown by http module, then it is NOT retriable. + // This could happen when metadata's key or value is invalid. (RoundTrip in transport.go) + if strings.Contains(genericErr.Error(), "invalid header field") { + return true + } + + // Assume the error is retriable. + return false +} + +var successStatusCodes = []int{http.StatusOK, http.StatusCreated, http.StatusAccepted, http.StatusNoContent, http.StatusPartialContent} + +func isSuccessStatusCode(resp *http.Response) bool { + if resp == nil { + return false + } + for _, i := range successStatusCodes { + if i == resp.StatusCode { + return true + } + } + return false +} + +// According to https://github.com/golang/go/wiki/CompilerOptimizations, the compiler will inline this method and hopefully optimize all calls to it away +var logf = func(format string, a ...interface{}) {} + +// Use this version to see the retry method's code path (import "fmt") +//var logf = fmt.Printf + +/* +type deadlineExceededReadCloser struct { + r io.ReadCloser +} + +func (r *deadlineExceededReadCloser) Read(p []byte) (int, error) { + n, err := 0, io.EOF + if r.r != nil { + n, err = r.r.Read(p) + } + return n, improveDeadlineExceeded(err) +} +func (r *deadlineExceededReadCloser) Seek(offset int64, whence int) (int64, error) { + // For an HTTP request, the ReadCloser MUST also implement seek + // For an HTTP response, Seek MUST not be called (or this will panic) + o, err := r.r.(io.Seeker).Seek(offset, whence) + return o, improveDeadlineExceeded(err) +} +func (r *deadlineExceededReadCloser) Close() error { + if c, ok := r.r.(io.Closer); ok { + c.Close() + } + return nil +} + +// timeoutError is the internal struct that implements our richer timeout error. +type deadlineExceeded struct { + responseError +} + +var _ net.Error = (*deadlineExceeded)(nil) // Ensure deadlineExceeded implements the net.Error interface at compile time + +// improveDeadlineExceeded creates a timeoutError object that implements the error interface IF cause is a context.DeadlineExceeded error. +func improveDeadlineExceeded(cause error) error { + // If cause is not DeadlineExceeded, return the same error passed in. + if cause != context.DeadlineExceeded { + return cause + } + // Else, convert DeadlineExceeded to our timeoutError which gives a richer string message + return &deadlineExceeded{ + responseError: responseError{ + ErrorNode: pipeline.ErrorNode{}.Initialize(cause, 3), + }, + } +} + +// Error implements the error interface's Error method to return a string representation of the error. +func (e *deadlineExceeded) Error() string { + return e.ErrorNode.Error("context deadline exceeded; when creating a pipeline, consider increasing RetryOptions' TryTimeout field") +} +*/ diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_telemetry.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_telemetry.go new file mode 100644 index 0000000..608e105 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_telemetry.go @@ -0,0 +1,51 @@ +package azblob + +import ( + "bytes" + "context" + "fmt" + "os" + "runtime" + + "github.com/Azure/azure-pipeline-go/pipeline" +) + +// TelemetryOptions configures the telemetry policy's behavior. +type TelemetryOptions struct { + // Value is a string prepended to each request's User-Agent and sent to the service. + // The service records the user-agent in logs for diagnostics and tracking of client requests. + Value string +} + +// NewTelemetryPolicyFactory creates a factory that can create telemetry policy objects +// which add telemetry information to outgoing HTTP requests. +func NewTelemetryPolicyFactory(o TelemetryOptions) pipeline.Factory { + b := &bytes.Buffer{} + b.WriteString(o.Value) + if b.Len() > 0 { + b.WriteRune(' ') + } + fmt.Fprintf(b, "Azure-Storage/%s %s", serviceLibVersion, platformInfo) + telemetryValue := b.String() + + return pipeline.FactoryFunc(func(next pipeline.Policy, po *pipeline.PolicyOptions) pipeline.PolicyFunc { + return func(ctx context.Context, request pipeline.Request) (pipeline.Response, error) { + request.Header.Set("User-Agent", telemetryValue) + return next.Do(ctx, request) + } + }) +} + +// NOTE: the ONLY function that should write to this variable is this func +var platformInfo = func() string { + // Azure-Storage/version (runtime; os type and version)” + // Azure-Storage/1.4.0 (NODE-VERSION v4.5.0; Windows_NT 10.0.14393)' + operatingSystem := runtime.GOOS // Default OS string + switch operatingSystem { + case "windows": + operatingSystem = os.Getenv("OS") // Get more specific OS information + case "linux": // accept default OS info + case "freebsd": // accept default OS info + } + return fmt.Sprintf("(%s; %s)", runtime.Version(), operatingSystem) +}() diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_unique_request_id.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_unique_request_id.go new file mode 100644 index 0000000..a75c7d1 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_unique_request_id.go @@ -0,0 +1,24 @@ +package azblob + +import ( + "context" + + "github.com/Azure/azure-pipeline-go/pipeline" +) + +// NewUniqueRequestIDPolicyFactory creates a UniqueRequestIDPolicyFactory object +// that sets the request's x-ms-client-request-id header if it doesn't already exist. +func NewUniqueRequestIDPolicyFactory() pipeline.Factory { + return pipeline.FactoryFunc(func(next pipeline.Policy, po *pipeline.PolicyOptions) pipeline.PolicyFunc { + // This is Policy's Do method: + return func(ctx context.Context, request pipeline.Request) (pipeline.Response, error) { + id := request.Header.Get(xMsClientRequestID) + if id == "" { // Add a unique request ID if the caller didn't specify one already + request.Header.Set(xMsClientRequestID, newUUID().String()) + } + return next.Do(ctx, request) + } + }) +} + +const xMsClientRequestID = "x-ms-client-request-id" diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_retry_reader.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_retry_reader.go new file mode 100644 index 0000000..3247aca --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_retry_reader.go @@ -0,0 +1,178 @@ +package azblob + +import ( + "context" + "io" + "net" + "net/http" + "strings" + "sync" +) + +const CountToEnd = 0 + +// HTTPGetter is a function type that refers to a method that performs an HTTP GET operation. +type HTTPGetter func(ctx context.Context, i HTTPGetterInfo) (*http.Response, error) + +// HTTPGetterInfo is passed to an HTTPGetter function passing it parameters +// that should be used to make an HTTP GET request. +type HTTPGetterInfo struct { + // Offset specifies the start offset that should be used when + // creating the HTTP GET request's Range header + Offset int64 + + // Count specifies the count of bytes that should be used to calculate + // the end offset when creating the HTTP GET request's Range header + Count int64 + + // ETag specifies the resource's etag that should be used when creating + // the HTTP GET request's If-Match header + ETag ETag +} + +// FailedReadNotifier is a function type that represents the notification function called when a read fails +type FailedReadNotifier func(failureCount int, lastError error, offset int64, count int64, willRetry bool) + +// RetryReaderOptions contains properties which can help to decide when to do retry. +type RetryReaderOptions struct { + // MaxRetryRequests specifies the maximum number of HTTP GET requests that will be made + // while reading from a RetryReader. A value of zero means that no additional HTTP + // GET requests will be made. + MaxRetryRequests int + doInjectError bool + doInjectErrorRound int + + // NotifyFailedRead is called, if non-nil, after any failure to read. Expected usage is diagnostic logging. + NotifyFailedRead FailedReadNotifier + + // TreatEarlyCloseAsError can be set to true to prevent retries after "read on closed response body". By default, + // retryReader has the following special behaviour: closing the response body before it is all read is treated as a + // retryable error. This is to allow callers to force a retry by closing the body from another goroutine (e.g. if the = + // read is too slow, caller may want to force a retry in the hope that the retry will be quicker). If + // TreatEarlyCloseAsError is true, then retryReader's special behaviour is suppressed, and "read on closed body" is instead + // treated as a fatal (non-retryable) error. + // Note that setting TreatEarlyCloseAsError only guarantees that Closing will produce a fatal error if the Close happens + // from the same "thread" (goroutine) as Read. Concurrent Close calls from other goroutines may instead produce network errors + // which will be retried. + TreatEarlyCloseAsError bool +} + +// retryReader implements io.ReaderCloser methods. +// retryReader tries to read from response, and if there is retriable network error +// returned during reading, it will retry according to retry reader option through executing +// user defined action with provided data to get a new response, and continue the overall reading process +// through reading from the new response. +type retryReader struct { + ctx context.Context + info HTTPGetterInfo + countWasBounded bool + o RetryReaderOptions + getter HTTPGetter + + // we support Close-ing during Reads (from other goroutines), so we protect the shared state, which is response + responseMu *sync.Mutex + response *http.Response +} + +// NewRetryReader creates a retry reader. +func NewRetryReader(ctx context.Context, initialResponse *http.Response, + info HTTPGetterInfo, o RetryReaderOptions, getter HTTPGetter) io.ReadCloser { + return &retryReader{ + ctx: ctx, + getter: getter, + info: info, + countWasBounded: info.Count != CountToEnd, + response: initialResponse, + responseMu: &sync.Mutex{}, + o: o} +} + +func (s *retryReader) setResponse(r *http.Response) { + s.responseMu.Lock() + defer s.responseMu.Unlock() + s.response = r +} + +func (s *retryReader) Read(p []byte) (n int, err error) { + for try := 0; ; try++ { + //fmt.Println(try) // Comment out for debugging. + if s.countWasBounded && s.info.Count == CountToEnd { + // User specified an original count and the remaining bytes are 0, return 0, EOF + return 0, io.EOF + } + + s.responseMu.Lock() + resp := s.response + s.responseMu.Unlock() + if resp == nil { // We don't have a response stream to read from, try to get one. + newResponse, err := s.getter(s.ctx, s.info) + if err != nil { + return 0, err + } + // Successful GET; this is the network stream we'll read from. + s.setResponse(newResponse) + resp = newResponse + } + n, err := resp.Body.Read(p) // Read from the stream (this will return non-nil err if forceRetry is called, from another goroutine, while it is running) + + // Injection mechanism for testing. + if s.o.doInjectError && try == s.o.doInjectErrorRound { + err = &net.DNSError{IsTemporary: true} + } + + // We successfully read data or end EOF. + if err == nil || err == io.EOF { + s.info.Offset += int64(n) // Increments the start offset in case we need to make a new HTTP request in the future + if s.info.Count != CountToEnd { + s.info.Count -= int64(n) // Decrement the count in case we need to make a new HTTP request in the future + } + return n, err // Return the return to the caller + } + s.Close() // Error, close stream + s.setResponse(nil) // Our stream is no longer good + + // Check the retry count and error code, and decide whether to retry. + retriesExhausted := try >= s.o.MaxRetryRequests + _, isNetError := err.(net.Error) + willRetry := (isNetError || s.wasRetryableEarlyClose(err)) && !retriesExhausted + + // Notify, for logging purposes, of any failures + if s.o.NotifyFailedRead != nil { + failureCount := try + 1 // because try is zero-based + s.o.NotifyFailedRead(failureCount, err, s.info.Offset, s.info.Count, willRetry) + } + + if willRetry { + continue + // Loop around and try to get and read from new stream. + } + return n, err // Not retryable, or retries exhausted, so just return + } +} + +// By default, we allow early Closing, from another concurrent goroutine, to be used to force a retry +// Is this safe, to close early from another goroutine? Early close ultimately ends up calling +// net.Conn.Close, and that is documented as "Any blocked Read or Write operations will be unblocked and return errors" +// which is exactly the behaviour we want. +// NOTE: that if caller has forced an early Close from a separate goroutine (separate from the Read) +// then there are two different types of error that may happen - either the one one we check for here, +// or a net.Error (due to closure of connection). Which one happens depends on timing. We only need this routine +// to check for one, since the other is a net.Error, which our main Read retry loop is already handing. +func (s *retryReader) wasRetryableEarlyClose(err error) bool { + if s.o.TreatEarlyCloseAsError { + return false // user wants all early closes to be errors, and so not retryable + } + // unfortunately, http.errReadOnClosedResBody is private, so the best we can do here is to check for its text + return strings.HasSuffix(err.Error(), ReadOnClosedBodyMessage) +} + +const ReadOnClosedBodyMessage = "read on closed response body" + +func (s *retryReader) Close() error { + s.responseMu.Lock() + defer s.responseMu.Unlock() + if s.response != nil && s.response.Body != nil { + return s.response.Body.Close() + } + return nil +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_sas_account.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_sas_account.go new file mode 100644 index 0000000..c000c48 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_sas_account.go @@ -0,0 +1,219 @@ +package azblob + +import ( + "bytes" + "errors" + "fmt" + "strings" + "time" +) + +// AccountSASSignatureValues is used to generate a Shared Access Signature (SAS) for an Azure Storage account. +// For more information, see https://docs.microsoft.com/rest/api/storageservices/constructing-an-account-sas +type AccountSASSignatureValues struct { + Version string `param:"sv"` // If not specified, this defaults to SASVersion + Protocol SASProtocol `param:"spr"` // See the SASProtocol* constants + StartTime time.Time `param:"st"` // Not specified if IsZero + ExpiryTime time.Time `param:"se"` // Not specified if IsZero + Permissions string `param:"sp"` // Create by initializing a AccountSASPermissions and then call String() + IPRange IPRange `param:"sip"` + Services string `param:"ss"` // Create by initializing AccountSASServices and then call String() + ResourceTypes string `param:"srt"` // Create by initializing AccountSASResourceTypes and then call String() +} + +// NewSASQueryParameters uses an account's shared key credential to sign this signature values to produce +// the proper SAS query parameters. +func (v AccountSASSignatureValues) NewSASQueryParameters(sharedKeyCredential *SharedKeyCredential) (SASQueryParameters, error) { + // https://docs.microsoft.com/en-us/rest/api/storageservices/Constructing-an-Account-SAS + if v.ExpiryTime.IsZero() || v.Permissions == "" || v.ResourceTypes == "" || v.Services == "" { + return SASQueryParameters{}, errors.New("account SAS is missing at least one of these: ExpiryTime, Permissions, Service, or ResourceType") + } + if v.Version == "" { + v.Version = SASVersion + } + perms := &AccountSASPermissions{} + if err := perms.Parse(v.Permissions); err != nil { + return SASQueryParameters{}, err + } + v.Permissions = perms.String() + + startTime, expiryTime, _ := FormatTimesForSASSigning(v.StartTime, v.ExpiryTime, time.Time{}) + + stringToSign := strings.Join([]string{ + sharedKeyCredential.AccountName(), + v.Permissions, + v.Services, + v.ResourceTypes, + startTime, + expiryTime, + v.IPRange.String(), + string(v.Protocol), + v.Version, + ""}, // That right, the account SAS requires a terminating extra newline + "\n") + + signature := sharedKeyCredential.ComputeHMACSHA256(stringToSign) + p := SASQueryParameters{ + // Common SAS parameters + version: v.Version, + protocol: v.Protocol, + startTime: v.StartTime, + expiryTime: v.ExpiryTime, + permissions: v.Permissions, + ipRange: v.IPRange, + + // Account-specific SAS parameters + services: v.Services, + resourceTypes: v.ResourceTypes, + + // Calculated SAS signature + signature: signature, + } + + return p, nil +} + +// The AccountSASPermissions type simplifies creating the permissions string for an Azure Storage Account SAS. +// Initialize an instance of this type and then call its String method to set AccountSASSignatureValues's Permissions field. +type AccountSASPermissions struct { + Read, Write, Delete, List, Add, Create, Update, Process bool +} + +// String produces the SAS permissions string for an Azure Storage account. +// Call this method to set AccountSASSignatureValues's Permissions field. +func (p AccountSASPermissions) String() string { + var buffer bytes.Buffer + if p.Read { + buffer.WriteRune('r') + } + if p.Write { + buffer.WriteRune('w') + } + if p.Delete { + buffer.WriteRune('d') + } + if p.List { + buffer.WriteRune('l') + } + if p.Add { + buffer.WriteRune('a') + } + if p.Create { + buffer.WriteRune('c') + } + if p.Update { + buffer.WriteRune('u') + } + if p.Process { + buffer.WriteRune('p') + } + return buffer.String() +} + +// Parse initializes the AccountSASPermissions's fields from a string. +func (p *AccountSASPermissions) Parse(s string) error { + *p = AccountSASPermissions{} // Clear out the flags + for _, r := range s { + switch r { + case 'r': + p.Read = true + case 'w': + p.Write = true + case 'd': + p.Delete = true + case 'l': + p.List = true + case 'a': + p.Add = true + case 'c': + p.Create = true + case 'u': + p.Update = true + case 'p': + p.Process = true + default: + return fmt.Errorf("Invalid permission character: '%v'", r) + } + } + return nil +} + +// The AccountSASServices type simplifies creating the services string for an Azure Storage Account SAS. +// Initialize an instance of this type and then call its String method to set AccountSASSignatureValues's Services field. +type AccountSASServices struct { + Blob, Queue, File bool +} + +// String produces the SAS services string for an Azure Storage account. +// Call this method to set AccountSASSignatureValues's Services field. +func (s AccountSASServices) String() string { + var buffer bytes.Buffer + if s.Blob { + buffer.WriteRune('b') + } + if s.Queue { + buffer.WriteRune('q') + } + if s.File { + buffer.WriteRune('f') + } + return buffer.String() +} + +// Parse initializes the AccountSASServices' fields from a string. +func (a *AccountSASServices) Parse(s string) error { + *a = AccountSASServices{} // Clear out the flags + for _, r := range s { + switch r { + case 'b': + a.Blob = true + case 'q': + a.Queue = true + case 'f': + a.File = true + default: + return fmt.Errorf("Invalid service character: '%v'", r) + } + } + return nil +} + +// The AccountSASResourceTypes type simplifies creating the resource types string for an Azure Storage Account SAS. +// Initialize an instance of this type and then call its String method to set AccountSASSignatureValues's ResourceTypes field. +type AccountSASResourceTypes struct { + Service, Container, Object bool +} + +// String produces the SAS resource types string for an Azure Storage account. +// Call this method to set AccountSASSignatureValues's ResourceTypes field. +func (rt AccountSASResourceTypes) String() string { + var buffer bytes.Buffer + if rt.Service { + buffer.WriteRune('s') + } + if rt.Container { + buffer.WriteRune('c') + } + if rt.Object { + buffer.WriteRune('o') + } + return buffer.String() +} + +// Parse initializes the AccountSASResourceType's fields from a string. +func (rt *AccountSASResourceTypes) Parse(s string) error { + *rt = AccountSASResourceTypes{} // Clear out the flags + for _, r := range s { + switch r { + case 's': + rt.Service = true + case 'c': + rt.Container = true + case 'o': + rt.Object = true + default: + return fmt.Errorf("Invalid resource type: '%v'", r) + } + } + return nil +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_sas_query_params.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_sas_query_params.go new file mode 100644 index 0000000..11b1b2b --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_sas_query_params.go @@ -0,0 +1,322 @@ +package azblob + +import ( + "net" + "net/url" + "strings" + "time" +) + +// SASVersion indicates the SAS version. +const SASVersion = ServiceVersion + +type SASProtocol string + +const ( + // SASProtocolHTTPS can be specified for a SAS protocol + SASProtocolHTTPS SASProtocol = "https" + + // SASProtocolHTTPSandHTTP can be specified for a SAS protocol + SASProtocolHTTPSandHTTP SASProtocol = "https,http" +) + +// FormatTimesForSASSigning converts a time.Time to a snapshotTimeFormat string suitable for a +// SASField's StartTime or ExpiryTime fields. Returns "" if value.IsZero(). +func FormatTimesForSASSigning(startTime, expiryTime, snapshotTime time.Time) (string, string, string) { + ss := "" + if !startTime.IsZero() { + ss = startTime.Format(SASTimeFormat) // "yyyy-MM-ddTHH:mm:ssZ" + } + se := "" + if !expiryTime.IsZero() { + se = expiryTime.Format(SASTimeFormat) // "yyyy-MM-ddTHH:mm:ssZ" + } + sh := "" + if !snapshotTime.IsZero() { + sh = snapshotTime.Format(SnapshotTimeFormat) + } + return ss, se, sh +} + +// SASTimeFormat represents the format of a SAS start or expiry time. Use it when formatting/parsing a time.Time. +const SASTimeFormat = "2006-01-02T15:04:05Z" //"2017-07-27T00:00:00Z" // ISO 8601 + +// https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas + +// A SASQueryParameters object represents the components that make up an Azure Storage SAS' query parameters. +// You parse a map of query parameters into its fields by calling NewSASQueryParameters(). You add the components +// to a query parameter map by calling AddToValues(). +// NOTE: Changing any field requires computing a new SAS signature using a XxxSASSignatureValues type. +// +// This type defines the components used by all Azure Storage resources (Containers, Blobs, Files, & Queues). +type SASQueryParameters struct { + // All members are immutable or values so copies of this struct are goroutine-safe. + version string `param:"sv"` + services string `param:"ss"` + resourceTypes string `param:"srt"` + protocol SASProtocol `param:"spr"` + startTime time.Time `param:"st"` + expiryTime time.Time `param:"se"` + snapshotTime time.Time `param:"snapshot"` + ipRange IPRange `param:"sip"` + identifier string `param:"si"` + resource string `param:"sr"` + permissions string `param:"sp"` + signature string `param:"sig"` + cacheControl string `param:"rscc"` + contentDisposition string `param:"rscd"` + contentEncoding string `param:"rsce"` + contentLanguage string `param:"rscl"` + contentType string `param:"rsct"` + signedOid string `param:"skoid"` + signedTid string `param:"sktid"` + signedStart time.Time `param:"skt"` + signedExpiry time.Time `param:"ske"` + signedService string `param:"sks"` + signedVersion string `param:"skv"` +} + +func (p *SASQueryParameters) SignedOid() string { + return p.signedOid +} + +func (p *SASQueryParameters) SignedTid() string { + return p.signedTid +} + +func (p *SASQueryParameters) SignedStart() time.Time { + return p.signedStart +} + +func (p *SASQueryParameters) SignedExpiry() time.Time { + return p.signedExpiry +} + +func (p *SASQueryParameters) SignedService() string { + return p.signedService +} + +func (p *SASQueryParameters) SignedVersion() string { + return p.signedVersion +} + +func (p *SASQueryParameters) SnapshotTime() time.Time { + return p.snapshotTime +} + +func (p *SASQueryParameters) Version() string { + return p.version +} + +func (p *SASQueryParameters) Services() string { + return p.services +} +func (p *SASQueryParameters) ResourceTypes() string { + return p.resourceTypes +} +func (p *SASQueryParameters) Protocol() SASProtocol { + return p.protocol +} +func (p *SASQueryParameters) StartTime() time.Time { + return p.startTime +} +func (p *SASQueryParameters) ExpiryTime() time.Time { + return p.expiryTime +} + +func (p *SASQueryParameters) IPRange() IPRange { + return p.ipRange +} + +func (p *SASQueryParameters) Identifier() string { + return p.identifier +} + +func (p *SASQueryParameters) Resource() string { + return p.resource +} +func (p *SASQueryParameters) Permissions() string { + return p.permissions +} + +func (p *SASQueryParameters) Signature() string { + return p.signature +} + +func (p *SASQueryParameters) CacheControl() string { + return p.cacheControl +} + +func (p *SASQueryParameters) ContentDisposition() string { + return p.contentDisposition +} + +func (p *SASQueryParameters) ContentEncoding() string { + return p.contentEncoding +} + +func (p *SASQueryParameters) ContentLanguage() string { + return p.contentLanguage +} + +func (p *SASQueryParameters) ContentType() string { + return p.contentType +} + +// IPRange represents a SAS IP range's start IP and (optionally) end IP. +type IPRange struct { + Start net.IP // Not specified if length = 0 + End net.IP // Not specified if length = 0 +} + +// String returns a string representation of an IPRange. +func (ipr *IPRange) String() string { + if len(ipr.Start) == 0 { + return "" + } + start := ipr.Start.String() + if len(ipr.End) == 0 { + return start + } + return start + "-" + ipr.End.String() +} + +// NewSASQueryParameters creates and initializes a SASQueryParameters object based on the +// query parameter map's passed-in values. If deleteSASParametersFromValues is true, +// all SAS-related query parameters are removed from the passed-in map. If +// deleteSASParametersFromValues is false, the map passed-in map is unaltered. +func newSASQueryParameters(values url.Values, deleteSASParametersFromValues bool) SASQueryParameters { + p := SASQueryParameters{} + for k, v := range values { + val := v[0] + isSASKey := true + switch strings.ToLower(k) { + case "sv": + p.version = val + case "ss": + p.services = val + case "srt": + p.resourceTypes = val + case "spr": + p.protocol = SASProtocol(val) + case "snapshot": + p.snapshotTime, _ = time.Parse(SnapshotTimeFormat, val) + case "st": + p.startTime, _ = time.Parse(SASTimeFormat, val) + case "se": + p.expiryTime, _ = time.Parse(SASTimeFormat, val) + case "sip": + dashIndex := strings.Index(val, "-") + if dashIndex == -1 { + p.ipRange.Start = net.ParseIP(val) + } else { + p.ipRange.Start = net.ParseIP(val[:dashIndex]) + p.ipRange.End = net.ParseIP(val[dashIndex+1:]) + } + case "si": + p.identifier = val + case "sr": + p.resource = val + case "sp": + p.permissions = val + case "sig": + p.signature = val + case "rscc": + p.cacheControl = val + case "rscd": + p.contentDisposition = val + case "rsce": + p.contentEncoding = val + case "rscl": + p.contentLanguage = val + case "rsct": + p.contentType = val + case "skoid": + p.signedOid = val + case "sktid": + p.signedTid = val + case "skt": + p.signedStart, _ = time.Parse(SASTimeFormat, val) + case "ske": + p.signedExpiry, _ = time.Parse(SASTimeFormat, val) + case "sks": + p.signedService = val + case "skv": + p.signedVersion = val + default: + isSASKey = false // We didn't recognize the query parameter + } + if isSASKey && deleteSASParametersFromValues { + delete(values, k) + } + } + return p +} + +// AddToValues adds the SAS components to the specified query parameters map. +func (p *SASQueryParameters) addToValues(v url.Values) url.Values { + if p.version != "" { + v.Add("sv", p.version) + } + if p.services != "" { + v.Add("ss", p.services) + } + if p.resourceTypes != "" { + v.Add("srt", p.resourceTypes) + } + if p.protocol != "" { + v.Add("spr", string(p.protocol)) + } + if !p.startTime.IsZero() { + v.Add("st", p.startTime.Format(SASTimeFormat)) + } + if !p.expiryTime.IsZero() { + v.Add("se", p.expiryTime.Format(SASTimeFormat)) + } + if len(p.ipRange.Start) > 0 { + v.Add("sip", p.ipRange.String()) + } + if p.identifier != "" { + v.Add("si", p.identifier) + } + if p.resource != "" { + v.Add("sr", p.resource) + } + if p.permissions != "" { + v.Add("sp", p.permissions) + } + if p.signedOid != "" { + v.Add("skoid", p.signedOid) + v.Add("sktid", p.signedTid) + v.Add("skt", p.signedStart.Format(SASTimeFormat)) + v.Add("ske", p.signedExpiry.Format(SASTimeFormat)) + v.Add("sks", p.signedService) + v.Add("skv", p.signedVersion) + } + if p.signature != "" { + v.Add("sig", p.signature) + } + if p.cacheControl != "" { + v.Add("rscc", p.cacheControl) + } + if p.contentDisposition != "" { + v.Add("rscd", p.contentDisposition) + } + if p.contentEncoding != "" { + v.Add("rsce", p.contentEncoding) + } + if p.contentLanguage != "" { + v.Add("rscl", p.contentLanguage) + } + if p.contentType != "" { + v.Add("rsct", p.contentType) + } + return v +} + +// Encode encodes the SAS query parameters into URL encoded form sorted by key. +func (p *SASQueryParameters) Encode() string { + v := url.Values{} + p.addToValues(v) + return v.Encode() +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_service_codes_common.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_service_codes_common.go new file mode 100644 index 0000000..765beb2 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_service_codes_common.go @@ -0,0 +1,131 @@ +package azblob + +// https://docs.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes + +const ( + // ServiceCodeNone is the default value. It indicates that the error was related to the service or that the service didn't return a code. + ServiceCodeNone ServiceCodeType = "" + + // ServiceCodeAccountAlreadyExists means the specified account already exists. + ServiceCodeAccountAlreadyExists ServiceCodeType = "AccountAlreadyExists" + + // ServiceCodeAccountBeingCreated means the specified account is in the process of being created (403). + ServiceCodeAccountBeingCreated ServiceCodeType = "AccountBeingCreated" + + // ServiceCodeAccountIsDisabled means the specified account is disabled (403). + ServiceCodeAccountIsDisabled ServiceCodeType = "AccountIsDisabled" + + // ServiceCodeAuthenticationFailed means the server failed to authenticate the request. Make sure the value of the Authorization header is formed correctly including the signature (403). + ServiceCodeAuthenticationFailed ServiceCodeType = "AuthenticationFailed" + + // ServiceCodeConditionHeadersNotSupported means the condition headers are not supported (400). + ServiceCodeConditionHeadersNotSupported ServiceCodeType = "ConditionHeadersNotSupported" + + // ServiceCodeConditionNotMet means the condition specified in the conditional header(s) was not met for a read/write operation (304/412). + ServiceCodeConditionNotMet ServiceCodeType = "ConditionNotMet" + + // ServiceCodeEmptyMetadataKey means the key for one of the metadata key-value pairs is empty (400). + ServiceCodeEmptyMetadataKey ServiceCodeType = "EmptyMetadataKey" + + // ServiceCodeInsufficientAccountPermissions means read operations are currently disabled or Write operations are not allowed or The account being accessed does not have sufficient permissions to execute this operation (403). + ServiceCodeInsufficientAccountPermissions ServiceCodeType = "InsufficientAccountPermissions" + + // ServiceCodeInternalError means the server encountered an internal error. Please retry the request (500). + ServiceCodeInternalError ServiceCodeType = "InternalError" + + // ServiceCodeInvalidAuthenticationInfo means the authentication information was not provided in the correct format. Verify the value of Authorization header (400). + ServiceCodeInvalidAuthenticationInfo ServiceCodeType = "InvalidAuthenticationInfo" + + // ServiceCodeInvalidHeaderValue means the value provided for one of the HTTP headers was not in the correct format (400). + ServiceCodeInvalidHeaderValue ServiceCodeType = "InvalidHeaderValue" + + // ServiceCodeInvalidHTTPVerb means the HTTP verb specified was not recognized by the server (400). + ServiceCodeInvalidHTTPVerb ServiceCodeType = "InvalidHttpVerb" + + // ServiceCodeInvalidInput means one of the request inputs is not valid (400). + ServiceCodeInvalidInput ServiceCodeType = "InvalidInput" + + // ServiceCodeInvalidMd5 means the MD5 value specified in the request is invalid. The MD5 value must be 128 bits and Base64-encoded (400). + ServiceCodeInvalidMd5 ServiceCodeType = "InvalidMd5" + + // ServiceCodeInvalidMetadata means the specified metadata is invalid. It includes characters that are not permitted (400). + ServiceCodeInvalidMetadata ServiceCodeType = "InvalidMetadata" + + // ServiceCodeInvalidQueryParameterValue means an invalid value was specified for one of the query parameters in the request URI (400). + ServiceCodeInvalidQueryParameterValue ServiceCodeType = "InvalidQueryParameterValue" + + // ServiceCodeInvalidRange means the range specified is invalid for the current size of the resource (416). + ServiceCodeInvalidRange ServiceCodeType = "InvalidRange" + + // ServiceCodeInvalidResourceName means the specified resource name contains invalid characters (400). + ServiceCodeInvalidResourceName ServiceCodeType = "InvalidResourceName" + + // ServiceCodeInvalidURI means the requested URI does not represent any resource on the server (400). + ServiceCodeInvalidURI ServiceCodeType = "InvalidUri" + + // ServiceCodeInvalidXMLDocument means the specified XML is not syntactically valid (400). + ServiceCodeInvalidXMLDocument ServiceCodeType = "InvalidXmlDocument" + + // ServiceCodeInvalidXMLNodeValue means the value provided for one of the XML nodes in the request body was not in the correct format (400). + ServiceCodeInvalidXMLNodeValue ServiceCodeType = "InvalidXmlNodeValue" + + // ServiceCodeMd5Mismatch means the MD5 value specified in the request did not match the MD5 value calculated by the server (400). + ServiceCodeMd5Mismatch ServiceCodeType = "Md5Mismatch" + + // ServiceCodeMetadataTooLarge means the size of the specified metadata exceeds the maximum size permitted (400). + ServiceCodeMetadataTooLarge ServiceCodeType = "MetadataTooLarge" + + // ServiceCodeMissingContentLengthHeader means the Content-Length header was not specified (411). + ServiceCodeMissingContentLengthHeader ServiceCodeType = "MissingContentLengthHeader" + + // ServiceCodeMissingRequiredQueryParameter means a required query parameter was not specified for this request (400). + ServiceCodeMissingRequiredQueryParameter ServiceCodeType = "MissingRequiredQueryParameter" + + // ServiceCodeMissingRequiredHeader means a required HTTP header was not specified (400). + ServiceCodeMissingRequiredHeader ServiceCodeType = "MissingRequiredHeader" + + // ServiceCodeMissingRequiredXMLNode means a required XML node was not specified in the request body (400). + ServiceCodeMissingRequiredXMLNode ServiceCodeType = "MissingRequiredXmlNode" + + // ServiceCodeMultipleConditionHeadersNotSupported means multiple condition headers are not supported (400). + ServiceCodeMultipleConditionHeadersNotSupported ServiceCodeType = "MultipleConditionHeadersNotSupported" + + // ServiceCodeOperationTimedOut means the operation could not be completed within the permitted time (500). + ServiceCodeOperationTimedOut ServiceCodeType = "OperationTimedOut" + + // ServiceCodeOutOfRangeInput means one of the request inputs is out of range (400). + ServiceCodeOutOfRangeInput ServiceCodeType = "OutOfRangeInput" + + // ServiceCodeOutOfRangeQueryParameterValue means a query parameter specified in the request URI is outside the permissible range (400). + ServiceCodeOutOfRangeQueryParameterValue ServiceCodeType = "OutOfRangeQueryParameterValue" + + // ServiceCodeRequestBodyTooLarge means the size of the request body exceeds the maximum size permitted (413). + ServiceCodeRequestBodyTooLarge ServiceCodeType = "RequestBodyTooLarge" + + // ServiceCodeResourceTypeMismatch means the specified resource type does not match the type of the existing resource (409). + ServiceCodeResourceTypeMismatch ServiceCodeType = "ResourceTypeMismatch" + + // ServiceCodeRequestURLFailedToParse means the url in the request could not be parsed (400). + ServiceCodeRequestURLFailedToParse ServiceCodeType = "RequestUrlFailedToParse" + + // ServiceCodeResourceAlreadyExists means the specified resource already exists (409). + ServiceCodeResourceAlreadyExists ServiceCodeType = "ResourceAlreadyExists" + + // ServiceCodeResourceNotFound means the specified resource does not exist (404). + ServiceCodeResourceNotFound ServiceCodeType = "ResourceNotFound" + + // ServiceCodeServerBusy means the server is currently unable to receive requests. Please retry your request or Ingress/egress is over the account limit or operations per second is over the account limit (503). + ServiceCodeServerBusy ServiceCodeType = "ServerBusy" + + // ServiceCodeUnsupportedHeader means one of the HTTP headers specified in the request is not supported (400). + ServiceCodeUnsupportedHeader ServiceCodeType = "UnsupportedHeader" + + // ServiceCodeUnsupportedXMLNode means one of the XML nodes specified in the request body is not supported (400). + ServiceCodeUnsupportedXMLNode ServiceCodeType = "UnsupportedXmlNode" + + // ServiceCodeUnsupportedQueryParameter means one of the query parameters specified in the request URI is not supported (400). + ServiceCodeUnsupportedQueryParameter ServiceCodeType = "UnsupportedQueryParameter" + + // ServiceCodeUnsupportedHTTPVerb means the resource doesn't support the specified HTTP verb (405). + ServiceCodeUnsupportedHTTPVerb ServiceCodeType = "UnsupportedHttpVerb" +) diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_storage_error.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_storage_error.go new file mode 100644 index 0000000..e7872a8 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_storage_error.go @@ -0,0 +1,111 @@ +package azblob + +import ( + "bytes" + "encoding/xml" + "fmt" + "net/http" + "sort" + + "github.com/Azure/azure-pipeline-go/pipeline" +) + +func init() { + // wire up our custom error handling constructor + responseErrorFactory = newStorageError +} + +// ServiceCodeType is a string identifying a storage service error. +// For more information, see https://docs.microsoft.com/en-us/rest/api/storageservices/status-and-error-codes2 +type ServiceCodeType string + +// StorageError identifies a responder-generated network or response parsing error. +type StorageError interface { + // ResponseError implements error's Error(), net.Error's Temporary() and Timeout() methods & Response(). + ResponseError + + // ServiceCode returns a service error code. Your code can use this to make error recovery decisions. + ServiceCode() ServiceCodeType +} + +// storageError is the internal struct that implements the public StorageError interface. +type storageError struct { + responseError + serviceCode ServiceCodeType + details map[string]string +} + +// newStorageError creates an error object that implements the error interface. +func newStorageError(cause error, response *http.Response, description string) error { + return &storageError{ + responseError: responseError{ + ErrorNode: pipeline.ErrorNode{}.Initialize(cause, 3), + response: response, + description: description, + }, + serviceCode: ServiceCodeType(response.Header.Get("x-ms-error-code")), + } +} + +// ServiceCode returns service-error information. The caller may examine these values but should not modify any of them. +func (e *storageError) ServiceCode() ServiceCodeType { + return e.serviceCode +} + +// Error implements the error interface's Error method to return a string representation of the error. +func (e *storageError) Error() string { + b := &bytes.Buffer{} + fmt.Fprintf(b, "===== RESPONSE ERROR (ServiceCode=%s) =====\n", e.serviceCode) + fmt.Fprintf(b, "Description=%s, Details: ", e.description) + if len(e.details) == 0 { + b.WriteString("(none)\n") + } else { + b.WriteRune('\n') + keys := make([]string, 0, len(e.details)) + // Alphabetize the details + for k := range e.details { + keys = append(keys, k) + } + sort.Strings(keys) + for _, k := range keys { + fmt.Fprintf(b, " %s: %+v\n", k, e.details[k]) + } + } + req := pipeline.Request{Request: e.response.Request}.Copy() // Make a copy of the response's request + pipeline.WriteRequestWithResponse(b, prepareRequestForLogging(req), e.response, nil) + return e.ErrorNode.Error(b.String()) +} + +// Temporary returns true if the error occurred due to a temporary condition (including an HTTP status of 500 or 503). +func (e *storageError) Temporary() bool { + if e.response != nil { + if (e.response.StatusCode == http.StatusInternalServerError) || (e.response.StatusCode == http.StatusServiceUnavailable) { + return true + } + } + return e.ErrorNode.Temporary() +} + +// UnmarshalXML performs custom unmarshalling of XML-formatted Azure storage request errors. +func (e *storageError) UnmarshalXML(d *xml.Decoder, start xml.StartElement) (err error) { + tokName := "" + var t xml.Token + for t, err = d.Token(); err == nil; t, err = d.Token() { + switch tt := t.(type) { + case xml.StartElement: + tokName = tt.Name.Local + break + case xml.CharData: + switch tokName { + case "Message": + e.description = string(tt) + default: + if e.details == nil { + e.details = map[string]string{} + } + e.details[tokName] = string(tt) + } + } + } + return nil +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_util_validate.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_util_validate.go new file mode 100644 index 0000000..d7b2507 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_util_validate.go @@ -0,0 +1,64 @@ +package azblob + +import ( + "errors" + "fmt" + "io" + "strconv" +) + +// httpRange defines a range of bytes within an HTTP resource, starting at offset and +// ending at offset+count. A zero-value httpRange indicates the entire resource. An httpRange +// which has an offset but na zero value count indicates from the offset to the resource's end. +type httpRange struct { + offset int64 + count int64 +} + +func (r httpRange) pointers() *string { + if r.offset == 0 && r.count == CountToEnd { // Do common case first for performance + return nil // No specified range + } + endOffset := "" // if count == CountToEnd (0) + if r.count > 0 { + endOffset = strconv.FormatInt((r.offset+r.count)-1, 10) + } + dataRange := fmt.Sprintf("bytes=%v-%s", r.offset, endOffset) + return &dataRange +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +func validateSeekableStreamAt0AndGetCount(body io.ReadSeeker) (int64, error) { + if body == nil { // nil body's are "logically" seekable to 0 and are 0 bytes long + return 0, nil + } + + err := validateSeekableStreamAt0(body) + if err != nil { + return 0, err + } + + count, err := body.Seek(0, io.SeekEnd) + if err != nil { + return 0, errors.New("body stream must be seekable") + } + + body.Seek(0, io.SeekStart) + return count, nil +} + +// return an error if body is not a valid seekable stream at 0 +func validateSeekableStreamAt0(body io.ReadSeeker) error { + if body == nil { // nil body's are "logically" seekable to 0 + return nil + } + if pos, err := body.Seek(0, io.SeekCurrent); pos != 0 || err != nil { + // Help detect programmer error + if err != nil { + return errors.New("body stream must be seekable") + } + return errors.New("body stream must be set to position 0") + } + return nil +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_uuid.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_uuid.go new file mode 100644 index 0000000..66799f9 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_uuid.go @@ -0,0 +1,77 @@ +package azblob + +import ( + "crypto/rand" + "fmt" + "strconv" +) + +// The UUID reserved variants. +const ( + reservedNCS byte = 0x80 + reservedRFC4122 byte = 0x40 + reservedMicrosoft byte = 0x20 + reservedFuture byte = 0x00 +) + +// A UUID representation compliant with specification in RFC 4122 document. +type uuid [16]byte + +// NewUUID returns a new uuid using RFC 4122 algorithm. +func newUUID() (u uuid) { + u = uuid{} + // Set all bits to randomly (or pseudo-randomly) chosen values. + rand.Read(u[:]) + u[8] = (u[8] | reservedRFC4122) & 0x7F // u.setVariant(ReservedRFC4122) + + var version byte = 4 + u[6] = (u[6] & 0xF) | (version << 4) // u.setVersion(4) + return +} + +// String returns an unparsed version of the generated UUID sequence. +func (u uuid) String() string { + return fmt.Sprintf("%x-%x-%x-%x-%x", u[0:4], u[4:6], u[6:8], u[8:10], u[10:]) +} + +// ParseUUID parses a string formatted as "003020100-0504-0706-0809-0a0b0c0d0e0f" +// or "{03020100-0504-0706-0809-0a0b0c0d0e0f}" into a UUID. +func parseUUID(uuidStr string) uuid { + char := func(hexString string) byte { + i, _ := strconv.ParseUint(hexString, 16, 8) + return byte(i) + } + if uuidStr[0] == '{' { + uuidStr = uuidStr[1:] // Skip over the '{' + } + // 03020100 - 05 04 - 07 06 - 08 09 - 0a 0b 0c 0d 0e 0f + // 1 11 1 11 11 1 12 22 2 22 22 22 33 33 33 + // 01234567 8 90 12 3 45 67 8 90 12 3 45 67 89 01 23 45 + uuidVal := uuid{ + char(uuidStr[0:2]), + char(uuidStr[2:4]), + char(uuidStr[4:6]), + char(uuidStr[6:8]), + + char(uuidStr[9:11]), + char(uuidStr[11:13]), + + char(uuidStr[14:16]), + char(uuidStr[16:18]), + + char(uuidStr[19:21]), + char(uuidStr[21:23]), + + char(uuidStr[24:26]), + char(uuidStr[26:28]), + char(uuidStr[28:30]), + char(uuidStr[30:32]), + char(uuidStr[32:34]), + char(uuidStr[34:36]), + } + return uuidVal +} + +func (u uuid) bytes() []byte { + return u[:] +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zt_doc.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zt_doc.go new file mode 100644 index 0000000..6b3779c --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zt_doc.go @@ -0,0 +1,89 @@ +// Copyright 2017 Microsoft Corporation. All rights reserved. +// Use of this source code is governed by an MIT +// license that can be found in the LICENSE file. + +/* +Package azblob allows you to manipulate Azure Storage containers and blobs objects. + +URL Types + +The most common types you'll work with are the XxxURL types. The methods of these types make requests +against the Azure Storage Service. + + - ServiceURL's methods perform operations on a storage account. + - ContainerURL's methods perform operations on an account's container. + - BlockBlobURL's methods perform operations on a container's block blob. + - AppendBlobURL's methods perform operations on a container's append blob. + - PageBlobURL's methods perform operations on a container's page blob. + - BlobURL's methods perform operations on a container's blob regardless of the blob's type. + +Internally, each XxxURL object contains a URL and a request pipeline. The URL indicates the endpoint where each HTTP +request is sent and the pipeline indicates how the outgoing HTTP request and incoming HTTP response is processed. +The pipeline specifies things like retry policies, logging, deserialization of HTTP response payloads, and more. + +Pipelines are threadsafe and may be shared by multiple XxxURL objects. When you create a ServiceURL, you pass +an initial pipeline. When you call ServiceURL's NewContainerURL method, the new ContainerURL object has its own +URL but it shares the same pipeline as the parent ServiceURL object. + +To work with a blob, call one of ContainerURL's 4 NewXxxBlobURL methods depending on how you want to treat the blob. +To treat the blob as a block blob, append blob, or page blob, call NewBlockBlobURL, NewAppendBlobURL, or NewPageBlobURL +respectively. These three types are all identical except for the methods they expose; each type exposes the methods +relevant to the type of blob represented. If you're not sure how you want to treat a blob, you can call NewBlobURL; +this returns an object whose methods are relevant to any kind of blob. When you call ContainerURL's NewXxxBlobURL, +the new XxxBlobURL object has its own URL but it shares the same pipeline as the parent ContainerURL object. You +can easily switch between blob types (method sets) by calling a ToXxxBlobURL method. + +If you'd like to use a different pipeline with a ServiceURL, ContainerURL, or XxxBlobURL object, then call the XxxURL +object's WithPipeline method passing in the desired pipeline. The WithPipeline methods create a new XxxURL object +with the same URL as the original but with the specified pipeline. + +Note that XxxURL objects use little memory, are goroutine-safe, and many objects share the same pipeline. This means that +XxxURL objects share a lot of system resources making them very efficient. + +All of XxxURL's methods that make HTTP requests return rich error handling information so you can discern network failures, +transient failures, timeout failures, service failures, etc. See the StorageError interface for more information and an +example of how to do deal with errors. + +URL and Shared Access Signature Manipulation + +The library includes a BlobURLParts type for deconstructing and reconstructing URLs. And you can use the following types +for generating and parsing Shared Access Signature (SAS) + - Use the AccountSASSignatureValues type to create a SAS for a storage account. + - Use the BlobSASSignatureValues type to create a SAS for a container or blob. + - Use the SASQueryParameters type to turn signature values in to query parameres or to parse query parameters. + +To generate a SAS, you must use the SharedKeyCredential type. + +Credentials + +When creating a request pipeline, you must specify one of this package's credential types. + - Call the NewAnonymousCredential function for requests that contain a Shared Access Signature (SAS). + - Call the NewSharedKeyCredential function (with an account name & key) to access any account resources. You must also use this + to generate Shared Access Signatures. + +HTTP Request Policy Factories + +This package defines several request policy factories for use with the pipeline package. +Most applications will not use these factories directly; instead, the NewPipeline +function creates these factories, initializes them (via the PipelineOptions type) +and returns a pipeline object for use by the XxxURL objects. + +However, for advanced scenarios, developers can access these policy factories directly +and even create their own and then construct their own pipeline in order to affect HTTP +requests and responses performed by the XxxURL objects. For example, developers can +introduce their own logging, random failures, request recording & playback for fast +testing, HTTP request pacing, alternate retry mechanisms, metering, metrics, etc. The +possibilities are endless! + +Below are the request pipeline policy factory functions that are provided with this +package: + - NewRetryPolicyFactory Enables rich retry semantics for failed HTTP requests. + - NewRequestLogPolicyFactory Enables rich logging support for HTTP requests/responses & failures. + - NewTelemetryPolicyFactory Enables simple modification of the HTTP request's User-Agent header so each request reports the SDK version & language/runtime making the requests. + - NewUniqueRequestIDPolicyFactory Adds a x-ms-client-request-id header with a unique UUID value to an HTTP request to help with diagnosing failures. + +Also, note that all the NewXxxCredential functions return request policy factory objects which get injected into the pipeline. +*/ +package azblob + +// TokenCredential Use this to access resources using Role-Based Access Control (RBAC). diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_append_blob.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_append_blob.go new file mode 100644 index 0000000..719bcb6 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_append_blob.go @@ -0,0 +1,349 @@ +package azblob + +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "encoding/base64" + "github.com/Azure/azure-pipeline-go/pipeline" + "io" + "io/ioutil" + "net/http" + "net/url" + "strconv" + "time" +) + +// appendBlobClient is the client for the AppendBlob methods of the Azblob service. +type appendBlobClient struct { + managementClient +} + +// newAppendBlobClient creates an instance of the appendBlobClient client. +func newAppendBlobClient(url url.URL, p pipeline.Pipeline) appendBlobClient { + return appendBlobClient{newManagementClient(url, p)} +} + +// AppendBlock the Append Block operation commits a new block of data to the end of an existing append blob. The Append +// Block operation is permitted only if the blob was created with x-ms-blob-type set to AppendBlob. Append Block is +// supported only on version 2015-02-21 version or later. +// +// body is initial data body will be closed upon successful return. Callers should ensure closure when receiving an +// error.contentLength is the length of the request. timeout is the timeout parameter is expressed in seconds. For more +// information, see Setting +// Timeouts for Blob Service Operations. transactionalContentMD5 is specify the transactional md5 for the body, to +// be validated by the service. leaseID is if specified, the operation only succeeds if the resource's lease is active +// and matches this ID. maxSize is optional conditional header. The max length in bytes permitted for the append blob. +// If the Append Block operation would cause the blob to exceed that limit or if the blob size is already greater than +// the value specified in this header, the request will fail with MaxBlobSizeConditionNotMet error (HTTP status code +// 412 - Precondition Failed). appendPosition is optional conditional header, used only for the Append Block operation. +// A number indicating the byte offset to compare. Append Block will succeed only if the append position is equal to +// this number. If it is not, the request will fail with the AppendPositionConditionNotMet error (HTTP status code 412 +// - Precondition Failed). ifModifiedSince is specify this header value to operate only on a blob if it has been +// modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only on a blob if +// it has not been modified since the specified date/time. ifMatch is specify an ETag value to operate only on blobs +// with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a matching value. +// requestID is provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics +// logs when storage analytics logging is enabled. +func (client appendBlobClient) AppendBlock(ctx context.Context, body io.ReadSeeker, contentLength int64, timeout *int32, transactionalContentMD5 []byte, leaseID *string, maxSize *int64, appendPosition *int64, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*AppendBlobAppendBlockResponse, error) { + if err := validate([]validation{ + {targetValue: body, + constraints: []constraint{{target: "body", name: null, rule: true, chain: nil}}}, + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.appendBlockPreparer(body, contentLength, timeout, transactionalContentMD5, leaseID, maxSize, appendPosition, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.appendBlockResponder}, req) + if err != nil { + return nil, err + } + return resp.(*AppendBlobAppendBlockResponse), err +} + +// appendBlockPreparer prepares the AppendBlock request. +func (client appendBlobClient) appendBlockPreparer(body io.ReadSeeker, contentLength int64, timeout *int32, transactionalContentMD5 []byte, leaseID *string, maxSize *int64, appendPosition *int64, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, body) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "appendblock") + req.URL.RawQuery = params.Encode() + req.Header.Set("Content-Length", strconv.FormatInt(contentLength, 10)) + if transactionalContentMD5 != nil { + req.Header.Set("Content-MD5", base64.StdEncoding.EncodeToString(transactionalContentMD5)) + } + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + if maxSize != nil { + req.Header.Set("x-ms-blob-condition-maxsize", strconv.FormatInt(*maxSize, 10)) + } + if appendPosition != nil { + req.Header.Set("x-ms-blob-condition-appendpos", strconv.FormatInt(*appendPosition, 10)) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// appendBlockResponder handles the response to the AppendBlock request. +func (client appendBlobClient) appendBlockResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusCreated) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &AppendBlobAppendBlockResponse{rawResponse: resp.Response()}, err +} + +// AppendBlockFromURL the Append Block operation commits a new block of data to the end of an existing append blob +// where the contents are read from a source url. The Append Block operation is permitted only if the blob was created +// with x-ms-blob-type set to AppendBlob. Append Block is supported only on version 2015-02-21 version or later. +// +// sourceURL is specify a URL to the copy source. contentLength is the length of the request. sourceRange is bytes of +// source data in the specified range. sourceContentMD5 is specify the md5 calculated for the range of bytes that must +// be read from the copy source. timeout is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's +// lease is active and matches this ID. maxSize is optional conditional header. The max length in bytes permitted for +// the append blob. If the Append Block operation would cause the blob to exceed that limit or if the blob size is +// already greater than the value specified in this header, the request will fail with MaxBlobSizeConditionNotMet error +// (HTTP status code 412 - Precondition Failed). appendPosition is optional conditional header, used only for the +// Append Block operation. A number indicating the byte offset to compare. Append Block will succeed only if the append +// position is equal to this number. If it is not, the request will fail with the AppendPositionConditionNotMet error +// (HTTP status code 412 - Precondition Failed). ifModifiedSince is specify this header value to operate only on a blob +// if it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate +// only on a blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value to +// operate only on blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a +// matching value. sourceIfModifiedSince is specify this header value to operate only on a blob if it has been modified +// since the specified date/time. sourceIfUnmodifiedSince is specify this header value to operate only on a blob if it +// has not been modified since the specified date/time. sourceIfMatch is specify an ETag value to operate only on blobs +// with a matching value. sourceIfNoneMatch is specify an ETag value to operate only on blobs without a matching value. +// requestID is provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics +// logs when storage analytics logging is enabled. +func (client appendBlobClient) AppendBlockFromURL(ctx context.Context, sourceURL string, contentLength int64, sourceRange *string, sourceContentMD5 []byte, timeout *int32, leaseID *string, maxSize *int64, appendPosition *int64, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, sourceIfModifiedSince *time.Time, sourceIfUnmodifiedSince *time.Time, sourceIfMatch *ETag, sourceIfNoneMatch *ETag, requestID *string) (*AppendBlobAppendBlockFromURLResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.appendBlockFromURLPreparer(sourceURL, contentLength, sourceRange, sourceContentMD5, timeout, leaseID, maxSize, appendPosition, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, sourceIfModifiedSince, sourceIfUnmodifiedSince, sourceIfMatch, sourceIfNoneMatch, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.appendBlockFromURLResponder}, req) + if err != nil { + return nil, err + } + return resp.(*AppendBlobAppendBlockFromURLResponse), err +} + +// appendBlockFromURLPreparer prepares the AppendBlockFromURL request. +func (client appendBlobClient) appendBlockFromURLPreparer(sourceURL string, contentLength int64, sourceRange *string, sourceContentMD5 []byte, timeout *int32, leaseID *string, maxSize *int64, appendPosition *int64, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, sourceIfModifiedSince *time.Time, sourceIfUnmodifiedSince *time.Time, sourceIfMatch *ETag, sourceIfNoneMatch *ETag, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "appendblock") + req.URL.RawQuery = params.Encode() + req.Header.Set("x-ms-copy-source", sourceURL) + if sourceRange != nil { + req.Header.Set("x-ms-source-range", *sourceRange) + } + if sourceContentMD5 != nil { + req.Header.Set("x-ms-source-content-md5", base64.StdEncoding.EncodeToString(sourceContentMD5)) + } + req.Header.Set("Content-Length", strconv.FormatInt(contentLength, 10)) + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + if maxSize != nil { + req.Header.Set("x-ms-blob-condition-maxsize", strconv.FormatInt(*maxSize, 10)) + } + if appendPosition != nil { + req.Header.Set("x-ms-blob-condition-appendpos", strconv.FormatInt(*appendPosition, 10)) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + if sourceIfModifiedSince != nil { + req.Header.Set("x-ms-source-if-modified-since", (*sourceIfModifiedSince).In(gmt).Format(time.RFC1123)) + } + if sourceIfUnmodifiedSince != nil { + req.Header.Set("x-ms-source-if-unmodified-since", (*sourceIfUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if sourceIfMatch != nil { + req.Header.Set("x-ms-source-if-match", string(*sourceIfMatch)) + } + if sourceIfNoneMatch != nil { + req.Header.Set("x-ms-source-if-none-match", string(*sourceIfNoneMatch)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// appendBlockFromURLResponder handles the response to the AppendBlockFromURL request. +func (client appendBlobClient) appendBlockFromURLResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusCreated) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &AppendBlobAppendBlockFromURLResponse{rawResponse: resp.Response()}, err +} + +// Create the Create Append Blob operation creates a new append blob. +// +// contentLength is the length of the request. timeout is the timeout parameter is expressed in seconds. For more +// information, see Setting +// Timeouts for Blob Service Operations. blobContentType is optional. Sets the blob's content type. If specified, +// this property is stored with the blob and returned with a read request. blobContentEncoding is optional. Sets the +// blob's content encoding. If specified, this property is stored with the blob and returned with a read request. +// blobContentLanguage is optional. Set the blob's content language. If specified, this property is stored with the +// blob and returned with a read request. blobContentMD5 is optional. An MD5 hash of the blob content. Note that this +// hash is not validated, as the hashes for the individual blocks were validated when each was uploaded. +// blobCacheControl is optional. Sets the blob's cache control. If specified, this property is stored with the blob and +// returned with a read request. metadata is optional. Specifies a user-defined name-value pair associated with the +// blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the +// destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified +// metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, +// metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and +// Metadata for more information. leaseID is if specified, the operation only succeeds if the resource's lease is +// active and matches this ID. blobContentDisposition is optional. Sets the blob's Content-Disposition header. +// ifModifiedSince is specify this header value to operate only on a blob if it has been modified since the specified +// date/time. ifUnmodifiedSince is specify this header value to operate only on a blob if it has not been modified +// since the specified date/time. ifMatch is specify an ETag value to operate only on blobs with a matching value. +// ifNoneMatch is specify an ETag value to operate only on blobs without a matching value. requestID is provides a +// client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage +// analytics logging is enabled. +func (client appendBlobClient) Create(ctx context.Context, contentLength int64, timeout *int32, blobContentType *string, blobContentEncoding *string, blobContentLanguage *string, blobContentMD5 []byte, blobCacheControl *string, metadata map[string]string, leaseID *string, blobContentDisposition *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*AppendBlobCreateResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.createPreparer(contentLength, timeout, blobContentType, blobContentEncoding, blobContentLanguage, blobContentMD5, blobCacheControl, metadata, leaseID, blobContentDisposition, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.createResponder}, req) + if err != nil { + return nil, err + } + return resp.(*AppendBlobCreateResponse), err +} + +// createPreparer prepares the Create request. +func (client appendBlobClient) createPreparer(contentLength int64, timeout *int32, blobContentType *string, blobContentEncoding *string, blobContentLanguage *string, blobContentMD5 []byte, blobCacheControl *string, metadata map[string]string, leaseID *string, blobContentDisposition *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + req.URL.RawQuery = params.Encode() + req.Header.Set("Content-Length", strconv.FormatInt(contentLength, 10)) + if blobContentType != nil { + req.Header.Set("x-ms-blob-content-type", *blobContentType) + } + if blobContentEncoding != nil { + req.Header.Set("x-ms-blob-content-encoding", *blobContentEncoding) + } + if blobContentLanguage != nil { + req.Header.Set("x-ms-blob-content-language", *blobContentLanguage) + } + if blobContentMD5 != nil { + req.Header.Set("x-ms-blob-content-md5", base64.StdEncoding.EncodeToString(blobContentMD5)) + } + if blobCacheControl != nil { + req.Header.Set("x-ms-blob-cache-control", *blobCacheControl) + } + if metadata != nil { + for k, v := range metadata { + req.Header.Set("x-ms-meta-"+k, v) + } + } + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + if blobContentDisposition != nil { + req.Header.Set("x-ms-blob-content-disposition", *blobContentDisposition) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + req.Header.Set("x-ms-blob-type", "AppendBlob") + return req, nil +} + +// createResponder handles the response to the Create request. +func (client appendBlobClient) createResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusCreated) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &AppendBlobCreateResponse{rawResponse: resp.Response()}, err +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_blob.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_blob.go new file mode 100644 index 0000000..5e30263 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_blob.go @@ -0,0 +1,1365 @@ +package azblob + +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "encoding/base64" + "github.com/Azure/azure-pipeline-go/pipeline" + "io" + "io/ioutil" + "net/http" + "net/url" + "strconv" + "time" +) + +// blobClient is the client for the Blob methods of the Azblob service. +type blobClient struct { + managementClient +} + +// newBlobClient creates an instance of the blobClient client. +func newBlobClient(url url.URL, p pipeline.Pipeline) blobClient { + return blobClient{newManagementClient(url, p)} +} + +// AbortCopyFromURL the Abort Copy From URL operation aborts a pending Copy From URL operation, and leaves a +// destination blob with zero length and full metadata. +// +// copyID is the copy identifier provided in the x-ms-copy-id header of the original Copy Blob operation. timeout is +// the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's +// lease is active and matches this ID. requestID is provides a client-generated, opaque value with a 1 KB character +// limit that is recorded in the analytics logs when storage analytics logging is enabled. +func (client blobClient) AbortCopyFromURL(ctx context.Context, copyID string, timeout *int32, leaseID *string, requestID *string) (*BlobAbortCopyFromURLResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.abortCopyFromURLPreparer(copyID, timeout, leaseID, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.abortCopyFromURLResponder}, req) + if err != nil { + return nil, err + } + return resp.(*BlobAbortCopyFromURLResponse), err +} + +// abortCopyFromURLPreparer prepares the AbortCopyFromURL request. +func (client blobClient) abortCopyFromURLPreparer(copyID string, timeout *int32, leaseID *string, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + params.Set("copyid", copyID) + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "copy") + req.URL.RawQuery = params.Encode() + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + req.Header.Set("x-ms-copy-action", "abort") + return req, nil +} + +// abortCopyFromURLResponder handles the response to the AbortCopyFromURL request. +func (client blobClient) abortCopyFromURLResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusNoContent) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &BlobAbortCopyFromURLResponse{rawResponse: resp.Response()}, err +} + +// AcquireLease [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete +// operations +// +// timeout is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. duration is specifies the duration of the lease, in seconds, or negative +// one (-1) for a lease that never expires. A non-infinite lease can be between 15 and 60 seconds. A lease duration +// cannot be changed using renew or change. proposedLeaseID is proposed lease ID, in a GUID string format. The Blob +// service returns 400 (Invalid request) if the proposed lease ID is not in the correct format. See Guid Constructor +// (String) for a list of valid GUID string formats. ifModifiedSince is specify this header value to operate only on a +// blob if it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to +// operate only on a blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value +// to operate only on blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs +// without a matching value. requestID is provides a client-generated, opaque value with a 1 KB character limit that is +// recorded in the analytics logs when storage analytics logging is enabled. +func (client blobClient) AcquireLease(ctx context.Context, timeout *int32, duration *int32, proposedLeaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*BlobAcquireLeaseResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.acquireLeasePreparer(timeout, duration, proposedLeaseID, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.acquireLeaseResponder}, req) + if err != nil { + return nil, err + } + return resp.(*BlobAcquireLeaseResponse), err +} + +// acquireLeasePreparer prepares the AcquireLease request. +func (client blobClient) acquireLeasePreparer(timeout *int32, duration *int32, proposedLeaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "lease") + req.URL.RawQuery = params.Encode() + if duration != nil { + req.Header.Set("x-ms-lease-duration", strconv.FormatInt(int64(*duration), 10)) + } + if proposedLeaseID != nil { + req.Header.Set("x-ms-proposed-lease-id", *proposedLeaseID) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + req.Header.Set("x-ms-lease-action", "acquire") + return req, nil +} + +// acquireLeaseResponder handles the response to the AcquireLease request. +func (client blobClient) acquireLeaseResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusCreated) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &BlobAcquireLeaseResponse{rawResponse: resp.Response()}, err +} + +// BreakLease [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete +// operations +// +// timeout is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. breakPeriod is for a break operation, proposed duration the lease should +// continue before it is broken, in seconds, between 0 and 60. This break period is only used if it is shorter than the +// time remaining on the lease. If longer, the time remaining on the lease is used. A new lease will not be available +// before the break period has expired, but the lease may be held for longer than the break period. If this header does +// not appear with a break operation, a fixed-duration lease breaks after the remaining lease period elapses, and an +// infinite lease breaks immediately. ifModifiedSince is specify this header value to operate only on a blob if it has +// been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only on a +// blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value to operate only on +// blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a matching value. +// requestID is provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics +// logs when storage analytics logging is enabled. +func (client blobClient) BreakLease(ctx context.Context, timeout *int32, breakPeriod *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*BlobBreakLeaseResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.breakLeasePreparer(timeout, breakPeriod, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.breakLeaseResponder}, req) + if err != nil { + return nil, err + } + return resp.(*BlobBreakLeaseResponse), err +} + +// breakLeasePreparer prepares the BreakLease request. +func (client blobClient) breakLeasePreparer(timeout *int32, breakPeriod *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "lease") + req.URL.RawQuery = params.Encode() + if breakPeriod != nil { + req.Header.Set("x-ms-lease-break-period", strconv.FormatInt(int64(*breakPeriod), 10)) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + req.Header.Set("x-ms-lease-action", "break") + return req, nil +} + +// breakLeaseResponder handles the response to the BreakLease request. +func (client blobClient) breakLeaseResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusAccepted) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &BlobBreakLeaseResponse{rawResponse: resp.Response()}, err +} + +// ChangeLease [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete +// operations +// +// leaseID is specifies the current lease ID on the resource. proposedLeaseID is proposed lease ID, in a GUID string +// format. The Blob service returns 400 (Invalid request) if the proposed lease ID is not in the correct format. See +// Guid Constructor (String) for a list of valid GUID string formats. timeout is the timeout parameter is expressed in +// seconds. For more information, see Setting +// Timeouts for Blob Service Operations. ifModifiedSince is specify this header value to operate only on a blob if +// it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only +// on a blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value to operate +// only on blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a +// matching value. requestID is provides a client-generated, opaque value with a 1 KB character limit that is recorded +// in the analytics logs when storage analytics logging is enabled. +func (client blobClient) ChangeLease(ctx context.Context, leaseID string, proposedLeaseID string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*BlobChangeLeaseResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.changeLeasePreparer(leaseID, proposedLeaseID, timeout, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.changeLeaseResponder}, req) + if err != nil { + return nil, err + } + return resp.(*BlobChangeLeaseResponse), err +} + +// changeLeasePreparer prepares the ChangeLease request. +func (client blobClient) changeLeasePreparer(leaseID string, proposedLeaseID string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "lease") + req.URL.RawQuery = params.Encode() + req.Header.Set("x-ms-lease-id", leaseID) + req.Header.Set("x-ms-proposed-lease-id", proposedLeaseID) + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + req.Header.Set("x-ms-lease-action", "change") + return req, nil +} + +// changeLeaseResponder handles the response to the ChangeLease request. +func (client blobClient) changeLeaseResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &BlobChangeLeaseResponse{rawResponse: resp.Response()}, err +} + +// CopyFromURL the Copy From URL operation copies a blob or an internet resource to a new blob. It will not return a +// response until the copy is complete. +// +// copySource is specifies the name of the source page blob snapshot. This value is a URL of up to 2 KB in length that +// specifies a page blob snapshot. The value should be URL-encoded as it would appear in a request URI. The source blob +// must either be public or must be authenticated via a shared access signature. timeout is the timeout parameter is +// expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. metadata is optional. Specifies a user-defined name-value pair associated +// with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or +// file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with +// the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version +// 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing +// Containers, Blobs, and Metadata for more information. sourceIfModifiedSince is specify this header value to operate +// only on a blob if it has been modified since the specified date/time. sourceIfUnmodifiedSince is specify this header +// value to operate only on a blob if it has not been modified since the specified date/time. sourceIfMatch is specify +// an ETag value to operate only on blobs with a matching value. sourceIfNoneMatch is specify an ETag value to operate +// only on blobs without a matching value. ifModifiedSince is specify this header value to operate only on a blob if it +// has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only on a +// blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value to operate only on +// blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a matching value. +// leaseID is if specified, the operation only succeeds if the resource's lease is active and matches this ID. +// requestID is provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics +// logs when storage analytics logging is enabled. +func (client blobClient) CopyFromURL(ctx context.Context, copySource string, timeout *int32, metadata map[string]string, sourceIfModifiedSince *time.Time, sourceIfUnmodifiedSince *time.Time, sourceIfMatch *ETag, sourceIfNoneMatch *ETag, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, leaseID *string, requestID *string) (*BlobCopyFromURLResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.copyFromURLPreparer(copySource, timeout, metadata, sourceIfModifiedSince, sourceIfUnmodifiedSince, sourceIfMatch, sourceIfNoneMatch, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, leaseID, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.copyFromURLResponder}, req) + if err != nil { + return nil, err + } + return resp.(*BlobCopyFromURLResponse), err +} + +// copyFromURLPreparer prepares the CopyFromURL request. +func (client blobClient) copyFromURLPreparer(copySource string, timeout *int32, metadata map[string]string, sourceIfModifiedSince *time.Time, sourceIfUnmodifiedSince *time.Time, sourceIfMatch *ETag, sourceIfNoneMatch *ETag, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, leaseID *string, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + req.URL.RawQuery = params.Encode() + if metadata != nil { + for k, v := range metadata { + req.Header.Set("x-ms-meta-"+k, v) + } + } + if sourceIfModifiedSince != nil { + req.Header.Set("x-ms-source-if-modified-since", (*sourceIfModifiedSince).In(gmt).Format(time.RFC1123)) + } + if sourceIfUnmodifiedSince != nil { + req.Header.Set("x-ms-source-if-unmodified-since", (*sourceIfUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if sourceIfMatch != nil { + req.Header.Set("x-ms-source-if-match", string(*sourceIfMatch)) + } + if sourceIfNoneMatch != nil { + req.Header.Set("x-ms-source-if-none-match", string(*sourceIfNoneMatch)) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + req.Header.Set("x-ms-copy-source", copySource) + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + req.Header.Set("x-ms-requires-sync", "true") + return req, nil +} + +// copyFromURLResponder handles the response to the CopyFromURL request. +func (client blobClient) copyFromURLResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusAccepted) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &BlobCopyFromURLResponse{rawResponse: resp.Response()}, err +} + +// CreateSnapshot the Create Snapshot operation creates a read-only snapshot of a blob +// +// timeout is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. metadata is optional. Specifies a user-defined name-value pair associated +// with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or +// file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with +// the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version +// 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing +// Containers, Blobs, and Metadata for more information. ifModifiedSince is specify this header value to operate only +// on a blob if it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to +// operate only on a blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value +// to operate only on blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs +// without a matching value. leaseID is if specified, the operation only succeeds if the resource's lease is active and +// matches this ID. requestID is provides a client-generated, opaque value with a 1 KB character limit that is recorded +// in the analytics logs when storage analytics logging is enabled. +func (client blobClient) CreateSnapshot(ctx context.Context, timeout *int32, metadata map[string]string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, leaseID *string, requestID *string) (*BlobCreateSnapshotResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.createSnapshotPreparer(timeout, metadata, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, leaseID, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.createSnapshotResponder}, req) + if err != nil { + return nil, err + } + return resp.(*BlobCreateSnapshotResponse), err +} + +// createSnapshotPreparer prepares the CreateSnapshot request. +func (client blobClient) createSnapshotPreparer(timeout *int32, metadata map[string]string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, leaseID *string, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "snapshot") + req.URL.RawQuery = params.Encode() + if metadata != nil { + for k, v := range metadata { + req.Header.Set("x-ms-meta-"+k, v) + } + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// createSnapshotResponder handles the response to the CreateSnapshot request. +func (client blobClient) createSnapshotResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusCreated) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &BlobCreateSnapshotResponse{rawResponse: resp.Response()}, err +} + +// Delete if the storage account's soft delete feature is disabled then, when a blob is deleted, it is permanently +// removed from the storage account. If the storage account's soft delete feature is enabled, then, when a blob is +// deleted, it is marked for deletion and becomes inaccessible immediately. However, the blob service retains the blob +// or snapshot for the number of days specified by the DeleteRetentionPolicy section of [Storage service properties] +// (Set-Blob-Service-Properties.md). After the specified number of days has passed, the blob's data is permanently +// removed from the storage account. Note that you continue to be charged for the soft-deleted blob's storage until it +// is permanently removed. Use the List Blobs API and specify the "include=deleted" query parameter to discover which +// blobs and snapshots have been soft deleted. You can then use the Undelete Blob API to restore a soft-deleted blob. +// All other operations on a soft-deleted blob or snapshot causes the service to return an HTTP status code of 404 +// (ResourceNotFound). +// +// snapshot is the snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to +// retrieve. For more information on working with blob snapshots, see Creating +// a Snapshot of a Blob. timeout is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's +// lease is active and matches this ID. deleteSnapshots is required if the blob has associated snapshots. Specify one +// of the following two options: include: Delete the base blob and all of its snapshots. only: Delete only the blob's +// snapshots and not the blob itself ifModifiedSince is specify this header value to operate only on a blob if it has +// been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only on a +// blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value to operate only on +// blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a matching value. +// requestID is provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics +// logs when storage analytics logging is enabled. +func (client blobClient) Delete(ctx context.Context, snapshot *string, timeout *int32, leaseID *string, deleteSnapshots DeleteSnapshotsOptionType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*BlobDeleteResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.deletePreparer(snapshot, timeout, leaseID, deleteSnapshots, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.deleteResponder}, req) + if err != nil { + return nil, err + } + return resp.(*BlobDeleteResponse), err +} + +// deletePreparer prepares the Delete request. +func (client blobClient) deletePreparer(snapshot *string, timeout *int32, leaseID *string, deleteSnapshots DeleteSnapshotsOptionType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("DELETE", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if snapshot != nil && len(*snapshot) > 0 { + params.Set("snapshot", *snapshot) + } + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + req.URL.RawQuery = params.Encode() + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + if deleteSnapshots != DeleteSnapshotsOptionNone { + req.Header.Set("x-ms-delete-snapshots", string(deleteSnapshots)) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// deleteResponder handles the response to the Delete request. +func (client blobClient) deleteResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusAccepted) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &BlobDeleteResponse{rawResponse: resp.Response()}, err +} + +// Download the Download operation reads or downloads a blob from the system, including its metadata and properties. +// You can also call Download to read a snapshot. +// +// snapshot is the snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to +// retrieve. For more information on working with blob snapshots, see Creating +// a Snapshot of a Blob. timeout is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. rangeParameter is return only the bytes of the blob in the specified +// range. leaseID is if specified, the operation only succeeds if the resource's lease is active and matches this ID. +// rangeGetContentMD5 is when set to true and specified together with the Range, the service returns the MD5 hash for +// the range, as long as the range is less than or equal to 4 MB in size. ifModifiedSince is specify this header value +// to operate only on a blob if it has been modified since the specified date/time. ifUnmodifiedSince is specify this +// header value to operate only on a blob if it has not been modified since the specified date/time. ifMatch is specify +// an ETag value to operate only on blobs with a matching value. ifNoneMatch is specify an ETag value to operate only +// on blobs without a matching value. requestID is provides a client-generated, opaque value with a 1 KB character +// limit that is recorded in the analytics logs when storage analytics logging is enabled. +func (client blobClient) Download(ctx context.Context, snapshot *string, timeout *int32, rangeParameter *string, leaseID *string, rangeGetContentMD5 *bool, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*downloadResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.downloadPreparer(snapshot, timeout, rangeParameter, leaseID, rangeGetContentMD5, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.downloadResponder}, req) + if err != nil { + return nil, err + } + return resp.(*downloadResponse), err +} + +// downloadPreparer prepares the Download request. +func (client blobClient) downloadPreparer(snapshot *string, timeout *int32, rangeParameter *string, leaseID *string, rangeGetContentMD5 *bool, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("GET", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if snapshot != nil && len(*snapshot) > 0 { + params.Set("snapshot", *snapshot) + } + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + req.URL.RawQuery = params.Encode() + if rangeParameter != nil { + req.Header.Set("x-ms-range", *rangeParameter) + } + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + if rangeGetContentMD5 != nil { + req.Header.Set("x-ms-range-get-content-md5", strconv.FormatBool(*rangeGetContentMD5)) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// downloadResponder handles the response to the Download request. +func (client blobClient) downloadResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusPartialContent) + if resp == nil { + return nil, err + } + return &downloadResponse{rawResponse: resp.Response()}, err +} + +// GetAccountInfo returns the sku name and account kind +func (client blobClient) GetAccountInfo(ctx context.Context) (*BlobGetAccountInfoResponse, error) { + req, err := client.getAccountInfoPreparer() + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getAccountInfoResponder}, req) + if err != nil { + return nil, err + } + return resp.(*BlobGetAccountInfoResponse), err +} + +// getAccountInfoPreparer prepares the GetAccountInfo request. +func (client blobClient) getAccountInfoPreparer() (pipeline.Request, error) { + req, err := pipeline.NewRequest("GET", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + params.Set("restype", "account") + params.Set("comp", "properties") + req.URL.RawQuery = params.Encode() + req.Header.Set("x-ms-version", ServiceVersion) + return req, nil +} + +// getAccountInfoResponder handles the response to the GetAccountInfo request. +func (client blobClient) getAccountInfoResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &BlobGetAccountInfoResponse{rawResponse: resp.Response()}, err +} + +// GetProperties the Get Properties operation returns all user-defined metadata, standard HTTP properties, and system +// properties for the blob. It does not return the content of the blob. +// +// snapshot is the snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to +// retrieve. For more information on working with blob snapshots, see Creating +// a Snapshot of a Blob. timeout is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's +// lease is active and matches this ID. ifModifiedSince is specify this header value to operate only on a blob if it +// has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only on a +// blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value to operate only on +// blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a matching value. +// requestID is provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics +// logs when storage analytics logging is enabled. +func (client blobClient) GetProperties(ctx context.Context, snapshot *string, timeout *int32, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*BlobGetPropertiesResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.getPropertiesPreparer(snapshot, timeout, leaseID, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getPropertiesResponder}, req) + if err != nil { + return nil, err + } + return resp.(*BlobGetPropertiesResponse), err +} + +// getPropertiesPreparer prepares the GetProperties request. +func (client blobClient) getPropertiesPreparer(snapshot *string, timeout *int32, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("HEAD", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if snapshot != nil && len(*snapshot) > 0 { + params.Set("snapshot", *snapshot) + } + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + req.URL.RawQuery = params.Encode() + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// getPropertiesResponder handles the response to the GetProperties request. +func (client blobClient) getPropertiesResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &BlobGetPropertiesResponse{rawResponse: resp.Response()}, err +} + +// ReleaseLease [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete +// operations +// +// leaseID is specifies the current lease ID on the resource. timeout is the timeout parameter is expressed in seconds. +// For more information, see Setting +// Timeouts for Blob Service Operations. ifModifiedSince is specify this header value to operate only on a blob if +// it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only +// on a blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value to operate +// only on blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a +// matching value. requestID is provides a client-generated, opaque value with a 1 KB character limit that is recorded +// in the analytics logs when storage analytics logging is enabled. +func (client blobClient) ReleaseLease(ctx context.Context, leaseID string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*BlobReleaseLeaseResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.releaseLeasePreparer(leaseID, timeout, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.releaseLeaseResponder}, req) + if err != nil { + return nil, err + } + return resp.(*BlobReleaseLeaseResponse), err +} + +// releaseLeasePreparer prepares the ReleaseLease request. +func (client blobClient) releaseLeasePreparer(leaseID string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "lease") + req.URL.RawQuery = params.Encode() + req.Header.Set("x-ms-lease-id", leaseID) + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + req.Header.Set("x-ms-lease-action", "release") + return req, nil +} + +// releaseLeaseResponder handles the response to the ReleaseLease request. +func (client blobClient) releaseLeaseResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &BlobReleaseLeaseResponse{rawResponse: resp.Response()}, err +} + +// RenewLease [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete +// operations +// +// leaseID is specifies the current lease ID on the resource. timeout is the timeout parameter is expressed in seconds. +// For more information, see Setting +// Timeouts for Blob Service Operations. ifModifiedSince is specify this header value to operate only on a blob if +// it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only +// on a blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value to operate +// only on blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a +// matching value. requestID is provides a client-generated, opaque value with a 1 KB character limit that is recorded +// in the analytics logs when storage analytics logging is enabled. +func (client blobClient) RenewLease(ctx context.Context, leaseID string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*BlobRenewLeaseResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.renewLeasePreparer(leaseID, timeout, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.renewLeaseResponder}, req) + if err != nil { + return nil, err + } + return resp.(*BlobRenewLeaseResponse), err +} + +// renewLeasePreparer prepares the RenewLease request. +func (client blobClient) renewLeasePreparer(leaseID string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "lease") + req.URL.RawQuery = params.Encode() + req.Header.Set("x-ms-lease-id", leaseID) + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + req.Header.Set("x-ms-lease-action", "renew") + return req, nil +} + +// renewLeaseResponder handles the response to the RenewLease request. +func (client blobClient) renewLeaseResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &BlobRenewLeaseResponse{rawResponse: resp.Response()}, err +} + +// SetHTTPHeaders the Set HTTP Headers operation sets system properties on the blob +// +// timeout is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. blobCacheControl is optional. Sets the blob's cache control. If specified, +// this property is stored with the blob and returned with a read request. blobContentType is optional. Sets the blob's +// content type. If specified, this property is stored with the blob and returned with a read request. blobContentMD5 +// is optional. An MD5 hash of the blob content. Note that this hash is not validated, as the hashes for the individual +// blocks were validated when each was uploaded. blobContentEncoding is optional. Sets the blob's content encoding. If +// specified, this property is stored with the blob and returned with a read request. blobContentLanguage is optional. +// Set the blob's content language. If specified, this property is stored with the blob and returned with a read +// request. leaseID is if specified, the operation only succeeds if the resource's lease is active and matches this ID. +// ifModifiedSince is specify this header value to operate only on a blob if it has been modified since the specified +// date/time. ifUnmodifiedSince is specify this header value to operate only on a blob if it has not been modified +// since the specified date/time. ifMatch is specify an ETag value to operate only on blobs with a matching value. +// ifNoneMatch is specify an ETag value to operate only on blobs without a matching value. blobContentDisposition is +// optional. Sets the blob's Content-Disposition header. requestID is provides a client-generated, opaque value with a +// 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled. +func (client blobClient) SetHTTPHeaders(ctx context.Context, timeout *int32, blobCacheControl *string, blobContentType *string, blobContentMD5 []byte, blobContentEncoding *string, blobContentLanguage *string, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, blobContentDisposition *string, requestID *string) (*BlobSetHTTPHeadersResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.setHTTPHeadersPreparer(timeout, blobCacheControl, blobContentType, blobContentMD5, blobContentEncoding, blobContentLanguage, leaseID, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, blobContentDisposition, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.setHTTPHeadersResponder}, req) + if err != nil { + return nil, err + } + return resp.(*BlobSetHTTPHeadersResponse), err +} + +// setHTTPHeadersPreparer prepares the SetHTTPHeaders request. +func (client blobClient) setHTTPHeadersPreparer(timeout *int32, blobCacheControl *string, blobContentType *string, blobContentMD5 []byte, blobContentEncoding *string, blobContentLanguage *string, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, blobContentDisposition *string, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "properties") + req.URL.RawQuery = params.Encode() + if blobCacheControl != nil { + req.Header.Set("x-ms-blob-cache-control", *blobCacheControl) + } + if blobContentType != nil { + req.Header.Set("x-ms-blob-content-type", *blobContentType) + } + if blobContentMD5 != nil { + req.Header.Set("x-ms-blob-content-md5", base64.StdEncoding.EncodeToString(blobContentMD5)) + } + if blobContentEncoding != nil { + req.Header.Set("x-ms-blob-content-encoding", *blobContentEncoding) + } + if blobContentLanguage != nil { + req.Header.Set("x-ms-blob-content-language", *blobContentLanguage) + } + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + if blobContentDisposition != nil { + req.Header.Set("x-ms-blob-content-disposition", *blobContentDisposition) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// setHTTPHeadersResponder handles the response to the SetHTTPHeaders request. +func (client blobClient) setHTTPHeadersResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &BlobSetHTTPHeadersResponse{rawResponse: resp.Response()}, err +} + +// SetMetadata the Set Blob Metadata operation sets user-defined metadata for the specified blob as one or more +// name-value pairs +// +// timeout is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. metadata is optional. Specifies a user-defined name-value pair associated +// with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or +// file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with +// the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version +// 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing +// Containers, Blobs, and Metadata for more information. leaseID is if specified, the operation only succeeds if the +// resource's lease is active and matches this ID. ifModifiedSince is specify this header value to operate only on a +// blob if it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to +// operate only on a blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value +// to operate only on blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs +// without a matching value. requestID is provides a client-generated, opaque value with a 1 KB character limit that is +// recorded in the analytics logs when storage analytics logging is enabled. +func (client blobClient) SetMetadata(ctx context.Context, timeout *int32, metadata map[string]string, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*BlobSetMetadataResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.setMetadataPreparer(timeout, metadata, leaseID, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.setMetadataResponder}, req) + if err != nil { + return nil, err + } + return resp.(*BlobSetMetadataResponse), err +} + +// setMetadataPreparer prepares the SetMetadata request. +func (client blobClient) setMetadataPreparer(timeout *int32, metadata map[string]string, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "metadata") + req.URL.RawQuery = params.Encode() + if metadata != nil { + for k, v := range metadata { + req.Header.Set("x-ms-meta-"+k, v) + } + } + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// setMetadataResponder handles the response to the SetMetadata request. +func (client blobClient) setMetadataResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &BlobSetMetadataResponse{rawResponse: resp.Response()}, err +} + +// SetTier the Set Tier operation sets the tier on a blob. The operation is allowed on a page blob in a premium storage +// account and on a block blob in a blob storage account (locally redundant storage only). A premium page blob's tier +// determines the allowed size, IOPS, and bandwidth of the blob. A block blob's tier determines Hot/Cool/Archive +// storage type. This operation does not update the blob's ETag. +// +// tier is indicates the tier to be set on the blob. timeout is the timeout parameter is expressed in seconds. For more +// information, see Setting +// Timeouts for Blob Service Operations. requestID is provides a client-generated, opaque value with a 1 KB +// character limit that is recorded in the analytics logs when storage analytics logging is enabled. leaseID is if +// specified, the operation only succeeds if the resource's lease is active and matches this ID. +func (client blobClient) SetTier(ctx context.Context, tier AccessTierType, timeout *int32, requestID *string, leaseID *string) (*BlobSetTierResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.setTierPreparer(tier, timeout, requestID, leaseID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.setTierResponder}, req) + if err != nil { + return nil, err + } + return resp.(*BlobSetTierResponse), err +} + +// setTierPreparer prepares the SetTier request. +func (client blobClient) setTierPreparer(tier AccessTierType, timeout *int32, requestID *string, leaseID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "tier") + req.URL.RawQuery = params.Encode() + req.Header.Set("x-ms-access-tier", string(tier)) + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + return req, nil +} + +// setTierResponder handles the response to the SetTier request. +func (client blobClient) setTierResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusAccepted) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &BlobSetTierResponse{rawResponse: resp.Response()}, err +} + +// StartCopyFromURL the Start Copy From URL operation copies a blob or an internet resource to a new blob. +// +// copySource is specifies the name of the source page blob snapshot. This value is a URL of up to 2 KB in length that +// specifies a page blob snapshot. The value should be URL-encoded as it would appear in a request URI. The source blob +// must either be public or must be authenticated via a shared access signature. timeout is the timeout parameter is +// expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. metadata is optional. Specifies a user-defined name-value pair associated +// with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or +// file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with +// the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version +// 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing +// Containers, Blobs, and Metadata for more information. sourceIfModifiedSince is specify this header value to operate +// only on a blob if it has been modified since the specified date/time. sourceIfUnmodifiedSince is specify this header +// value to operate only on a blob if it has not been modified since the specified date/time. sourceIfMatch is specify +// an ETag value to operate only on blobs with a matching value. sourceIfNoneMatch is specify an ETag value to operate +// only on blobs without a matching value. ifModifiedSince is specify this header value to operate only on a blob if it +// has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only on a +// blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value to operate only on +// blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a matching value. +// leaseID is if specified, the operation only succeeds if the resource's lease is active and matches this ID. +// requestID is provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics +// logs when storage analytics logging is enabled. +func (client blobClient) StartCopyFromURL(ctx context.Context, copySource string, timeout *int32, metadata map[string]string, sourceIfModifiedSince *time.Time, sourceIfUnmodifiedSince *time.Time, sourceIfMatch *ETag, sourceIfNoneMatch *ETag, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, leaseID *string, requestID *string) (*BlobStartCopyFromURLResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.startCopyFromURLPreparer(copySource, timeout, metadata, sourceIfModifiedSince, sourceIfUnmodifiedSince, sourceIfMatch, sourceIfNoneMatch, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, leaseID, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.startCopyFromURLResponder}, req) + if err != nil { + return nil, err + } + return resp.(*BlobStartCopyFromURLResponse), err +} + +// startCopyFromURLPreparer prepares the StartCopyFromURL request. +func (client blobClient) startCopyFromURLPreparer(copySource string, timeout *int32, metadata map[string]string, sourceIfModifiedSince *time.Time, sourceIfUnmodifiedSince *time.Time, sourceIfMatch *ETag, sourceIfNoneMatch *ETag, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, leaseID *string, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + req.URL.RawQuery = params.Encode() + if metadata != nil { + for k, v := range metadata { + req.Header.Set("x-ms-meta-"+k, v) + } + } + if sourceIfModifiedSince != nil { + req.Header.Set("x-ms-source-if-modified-since", (*sourceIfModifiedSince).In(gmt).Format(time.RFC1123)) + } + if sourceIfUnmodifiedSince != nil { + req.Header.Set("x-ms-source-if-unmodified-since", (*sourceIfUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if sourceIfMatch != nil { + req.Header.Set("x-ms-source-if-match", string(*sourceIfMatch)) + } + if sourceIfNoneMatch != nil { + req.Header.Set("x-ms-source-if-none-match", string(*sourceIfNoneMatch)) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + req.Header.Set("x-ms-copy-source", copySource) + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// startCopyFromURLResponder handles the response to the StartCopyFromURL request. +func (client blobClient) startCopyFromURLResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusAccepted) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &BlobStartCopyFromURLResponse{rawResponse: resp.Response()}, err +} + +// Undelete undelete a blob that was previously soft deleted +// +// timeout is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. requestID is provides a client-generated, opaque value with a 1 KB +// character limit that is recorded in the analytics logs when storage analytics logging is enabled. +func (client blobClient) Undelete(ctx context.Context, timeout *int32, requestID *string) (*BlobUndeleteResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.undeletePreparer(timeout, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.undeleteResponder}, req) + if err != nil { + return nil, err + } + return resp.(*BlobUndeleteResponse), err +} + +// undeletePreparer prepares the Undelete request. +func (client blobClient) undeletePreparer(timeout *int32, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "undelete") + req.URL.RawQuery = params.Encode() + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// undeleteResponder handles the response to the Undelete request. +func (client blobClient) undeleteResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &BlobUndeleteResponse{rawResponse: resp.Response()}, err +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_block_blob.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_block_blob.go new file mode 100644 index 0000000..955f7d1 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_block_blob.go @@ -0,0 +1,510 @@ +package azblob + +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "bytes" + "context" + "encoding/base64" + "encoding/xml" + "github.com/Azure/azure-pipeline-go/pipeline" + "io" + "io/ioutil" + "net/http" + "net/url" + "strconv" + "time" +) + +// blockBlobClient is the client for the BlockBlob methods of the Azblob service. +type blockBlobClient struct { + managementClient +} + +// newBlockBlobClient creates an instance of the blockBlobClient client. +func newBlockBlobClient(url url.URL, p pipeline.Pipeline) blockBlobClient { + return blockBlobClient{newManagementClient(url, p)} +} + +// CommitBlockList the Commit Block List operation writes a blob by specifying the list of block IDs that make up the +// blob. In order to be written as part of a blob, a block must have been successfully written to the server in a prior +// Put Block operation. You can call Put Block List to update a blob by uploading only those blocks that have changed, +// then committing the new and existing blocks together. You can do this by specifying whether to commit a block from +// the committed block list or from the uncommitted block list, or to commit the most recently uploaded version of the +// block, whichever list it may belong to. +// +// timeout is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. blobCacheControl is optional. Sets the blob's cache control. If specified, +// this property is stored with the blob and returned with a read request. blobContentType is optional. Sets the blob's +// content type. If specified, this property is stored with the blob and returned with a read request. +// blobContentEncoding is optional. Sets the blob's content encoding. If specified, this property is stored with the +// blob and returned with a read request. blobContentLanguage is optional. Set the blob's content language. If +// specified, this property is stored with the blob and returned with a read request. blobContentMD5 is optional. An +// MD5 hash of the blob content. Note that this hash is not validated, as the hashes for the individual blocks were +// validated when each was uploaded. metadata is optional. Specifies a user-defined name-value pair associated with the +// blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the +// destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified +// metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, +// metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and +// Metadata for more information. leaseID is if specified, the operation only succeeds if the resource's lease is +// active and matches this ID. blobContentDisposition is optional. Sets the blob's Content-Disposition header. +// ifModifiedSince is specify this header value to operate only on a blob if it has been modified since the specified +// date/time. ifUnmodifiedSince is specify this header value to operate only on a blob if it has not been modified +// since the specified date/time. ifMatch is specify an ETag value to operate only on blobs with a matching value. +// ifNoneMatch is specify an ETag value to operate only on blobs without a matching value. requestID is provides a +// client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage +// analytics logging is enabled. +func (client blockBlobClient) CommitBlockList(ctx context.Context, blocks BlockLookupList, timeout *int32, blobCacheControl *string, blobContentType *string, blobContentEncoding *string, blobContentLanguage *string, blobContentMD5 []byte, metadata map[string]string, leaseID *string, blobContentDisposition *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*BlockBlobCommitBlockListResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.commitBlockListPreparer(blocks, timeout, blobCacheControl, blobContentType, blobContentEncoding, blobContentLanguage, blobContentMD5, metadata, leaseID, blobContentDisposition, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.commitBlockListResponder}, req) + if err != nil { + return nil, err + } + return resp.(*BlockBlobCommitBlockListResponse), err +} + +// commitBlockListPreparer prepares the CommitBlockList request. +func (client blockBlobClient) commitBlockListPreparer(blocks BlockLookupList, timeout *int32, blobCacheControl *string, blobContentType *string, blobContentEncoding *string, blobContentLanguage *string, blobContentMD5 []byte, metadata map[string]string, leaseID *string, blobContentDisposition *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "blocklist") + req.URL.RawQuery = params.Encode() + if blobCacheControl != nil { + req.Header.Set("x-ms-blob-cache-control", *blobCacheControl) + } + if blobContentType != nil { + req.Header.Set("x-ms-blob-content-type", *blobContentType) + } + if blobContentEncoding != nil { + req.Header.Set("x-ms-blob-content-encoding", *blobContentEncoding) + } + if blobContentLanguage != nil { + req.Header.Set("x-ms-blob-content-language", *blobContentLanguage) + } + if blobContentMD5 != nil { + req.Header.Set("x-ms-blob-content-md5", base64.StdEncoding.EncodeToString(blobContentMD5)) + } + if metadata != nil { + for k, v := range metadata { + req.Header.Set("x-ms-meta-"+k, v) + } + } + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + if blobContentDisposition != nil { + req.Header.Set("x-ms-blob-content-disposition", *blobContentDisposition) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + b, err := xml.Marshal(blocks) + if err != nil { + return req, pipeline.NewError(err, "failed to marshal request body") + } + req.Header.Set("Content-Type", "application/xml") + err = req.SetBody(bytes.NewReader(b)) + if err != nil { + return req, pipeline.NewError(err, "failed to set request body") + } + return req, nil +} + +// commitBlockListResponder handles the response to the CommitBlockList request. +func (client blockBlobClient) commitBlockListResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusCreated) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &BlockBlobCommitBlockListResponse{rawResponse: resp.Response()}, err +} + +// GetBlockList the Get Block List operation retrieves the list of blocks that have been uploaded as part of a block +// blob +// +// listType is specifies whether to return the list of committed blocks, the list of uncommitted blocks, or both lists +// together. snapshot is the snapshot parameter is an opaque DateTime value that, when present, specifies the blob +// snapshot to retrieve. For more information on working with blob snapshots, see Creating +// a Snapshot of a Blob. timeout is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's +// lease is active and matches this ID. requestID is provides a client-generated, opaque value with a 1 KB character +// limit that is recorded in the analytics logs when storage analytics logging is enabled. +func (client blockBlobClient) GetBlockList(ctx context.Context, listType BlockListType, snapshot *string, timeout *int32, leaseID *string, requestID *string) (*BlockList, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.getBlockListPreparer(listType, snapshot, timeout, leaseID, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getBlockListResponder}, req) + if err != nil { + return nil, err + } + return resp.(*BlockList), err +} + +// getBlockListPreparer prepares the GetBlockList request. +func (client blockBlobClient) getBlockListPreparer(listType BlockListType, snapshot *string, timeout *int32, leaseID *string, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("GET", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if snapshot != nil && len(*snapshot) > 0 { + params.Set("snapshot", *snapshot) + } + params.Set("blocklisttype", string(listType)) + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "blocklist") + req.URL.RawQuery = params.Encode() + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// getBlockListResponder handles the response to the GetBlockList request. +func (client blockBlobClient) getBlockListResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + result := &BlockList{rawResponse: resp.Response()} + if err != nil { + return result, err + } + defer resp.Response().Body.Close() + b, err := ioutil.ReadAll(resp.Response().Body) + if err != nil { + return result, err + } + if len(b) > 0 { + b = removeBOM(b) + err = xml.Unmarshal(b, result) + if err != nil { + return result, NewResponseError(err, resp.Response(), "failed to unmarshal response body") + } + } + return result, nil +} + +// StageBlock the Stage Block operation creates a new block to be committed as part of a blob +// +// blockID is a valid Base64 string value that identifies the block. Prior to encoding, the string must be less than or +// equal to 64 bytes in size. For a given blob, the length of the value specified for the blockid parameter must be the +// same size for each block. contentLength is the length of the request. body is initial data body will be closed upon +// successful return. Callers should ensure closure when receiving an error.transactionalContentMD5 is specify the +// transactional md5 for the body, to be validated by the service. timeout is the timeout parameter is expressed in +// seconds. For more information, see Setting +// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's +// lease is active and matches this ID. requestID is provides a client-generated, opaque value with a 1 KB character +// limit that is recorded in the analytics logs when storage analytics logging is enabled. +func (client blockBlobClient) StageBlock(ctx context.Context, blockID string, contentLength int64, body io.ReadSeeker, transactionalContentMD5 []byte, timeout *int32, leaseID *string, requestID *string) (*BlockBlobStageBlockResponse, error) { + if err := validate([]validation{ + {targetValue: body, + constraints: []constraint{{target: "body", name: null, rule: true, chain: nil}}}, + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.stageBlockPreparer(blockID, contentLength, body, transactionalContentMD5, timeout, leaseID, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.stageBlockResponder}, req) + if err != nil { + return nil, err + } + return resp.(*BlockBlobStageBlockResponse), err +} + +// stageBlockPreparer prepares the StageBlock request. +func (client blockBlobClient) stageBlockPreparer(blockID string, contentLength int64, body io.ReadSeeker, transactionalContentMD5 []byte, timeout *int32, leaseID *string, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, body) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + params.Set("blockid", blockID) + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "block") + req.URL.RawQuery = params.Encode() + req.Header.Set("Content-Length", strconv.FormatInt(contentLength, 10)) + if transactionalContentMD5 != nil { + req.Header.Set("Content-MD5", base64.StdEncoding.EncodeToString(transactionalContentMD5)) + } + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// stageBlockResponder handles the response to the StageBlock request. +func (client blockBlobClient) stageBlockResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusCreated) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &BlockBlobStageBlockResponse{rawResponse: resp.Response()}, err +} + +// StageBlockFromURL the Stage Block operation creates a new block to be committed as part of a blob where the contents +// are read from a URL. +// +// blockID is a valid Base64 string value that identifies the block. Prior to encoding, the string must be less than or +// equal to 64 bytes in size. For a given blob, the length of the value specified for the blockid parameter must be the +// same size for each block. contentLength is the length of the request. sourceURL is specify a URL to the copy source. +// sourceRange is bytes of source data in the specified range. sourceContentMD5 is specify the md5 calculated for the +// range of bytes that must be read from the copy source. timeout is the timeout parameter is expressed in seconds. For +// more information, see Setting +// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's +// lease is active and matches this ID. sourceIfModifiedSince is specify this header value to operate only on a blob if +// it has been modified since the specified date/time. sourceIfUnmodifiedSince is specify this header value to operate +// only on a blob if it has not been modified since the specified date/time. sourceIfMatch is specify an ETag value to +// operate only on blobs with a matching value. sourceIfNoneMatch is specify an ETag value to operate only on blobs +// without a matching value. requestID is provides a client-generated, opaque value with a 1 KB character limit that is +// recorded in the analytics logs when storage analytics logging is enabled. +func (client blockBlobClient) StageBlockFromURL(ctx context.Context, blockID string, contentLength int64, sourceURL string, sourceRange *string, sourceContentMD5 []byte, timeout *int32, leaseID *string, sourceIfModifiedSince *time.Time, sourceIfUnmodifiedSince *time.Time, sourceIfMatch *ETag, sourceIfNoneMatch *ETag, requestID *string) (*BlockBlobStageBlockFromURLResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.stageBlockFromURLPreparer(blockID, contentLength, sourceURL, sourceRange, sourceContentMD5, timeout, leaseID, sourceIfModifiedSince, sourceIfUnmodifiedSince, sourceIfMatch, sourceIfNoneMatch, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.stageBlockFromURLResponder}, req) + if err != nil { + return nil, err + } + return resp.(*BlockBlobStageBlockFromURLResponse), err +} + +// stageBlockFromURLPreparer prepares the StageBlockFromURL request. +func (client blockBlobClient) stageBlockFromURLPreparer(blockID string, contentLength int64, sourceURL string, sourceRange *string, sourceContentMD5 []byte, timeout *int32, leaseID *string, sourceIfModifiedSince *time.Time, sourceIfUnmodifiedSince *time.Time, sourceIfMatch *ETag, sourceIfNoneMatch *ETag, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + params.Set("blockid", blockID) + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "block") + req.URL.RawQuery = params.Encode() + req.Header.Set("Content-Length", strconv.FormatInt(contentLength, 10)) + req.Header.Set("x-ms-copy-source", sourceURL) + if sourceRange != nil { + req.Header.Set("x-ms-source-range", *sourceRange) + } + if sourceContentMD5 != nil { + req.Header.Set("x-ms-source-content-md5", base64.StdEncoding.EncodeToString(sourceContentMD5)) + } + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + if sourceIfModifiedSince != nil { + req.Header.Set("x-ms-source-if-modified-since", (*sourceIfModifiedSince).In(gmt).Format(time.RFC1123)) + } + if sourceIfUnmodifiedSince != nil { + req.Header.Set("x-ms-source-if-unmodified-since", (*sourceIfUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if sourceIfMatch != nil { + req.Header.Set("x-ms-source-if-match", string(*sourceIfMatch)) + } + if sourceIfNoneMatch != nil { + req.Header.Set("x-ms-source-if-none-match", string(*sourceIfNoneMatch)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// stageBlockFromURLResponder handles the response to the StageBlockFromURL request. +func (client blockBlobClient) stageBlockFromURLResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusCreated) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &BlockBlobStageBlockFromURLResponse{rawResponse: resp.Response()}, err +} + +// Upload the Upload Block Blob operation updates the content of an existing block blob. Updating an existing block +// blob overwrites any existing metadata on the blob. Partial updates are not supported with Put Blob; the content of +// the existing blob is overwritten with the content of the new blob. To perform a partial update of the content of a +// block blob, use the Put Block List operation. +// +// body is initial data body will be closed upon successful return. Callers should ensure closure when receiving an +// error.contentLength is the length of the request. timeout is the timeout parameter is expressed in seconds. For more +// information, see Setting +// Timeouts for Blob Service Operations. blobContentType is optional. Sets the blob's content type. If specified, +// this property is stored with the blob and returned with a read request. blobContentEncoding is optional. Sets the +// blob's content encoding. If specified, this property is stored with the blob and returned with a read request. +// blobContentLanguage is optional. Set the blob's content language. If specified, this property is stored with the +// blob and returned with a read request. blobContentMD5 is optional. An MD5 hash of the blob content. Note that this +// hash is not validated, as the hashes for the individual blocks were validated when each was uploaded. +// blobCacheControl is optional. Sets the blob's cache control. If specified, this property is stored with the blob and +// returned with a read request. metadata is optional. Specifies a user-defined name-value pair associated with the +// blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the +// destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified +// metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, +// metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and +// Metadata for more information. leaseID is if specified, the operation only succeeds if the resource's lease is +// active and matches this ID. blobContentDisposition is optional. Sets the blob's Content-Disposition header. +// ifModifiedSince is specify this header value to operate only on a blob if it has been modified since the specified +// date/time. ifUnmodifiedSince is specify this header value to operate only on a blob if it has not been modified +// since the specified date/time. ifMatch is specify an ETag value to operate only on blobs with a matching value. +// ifNoneMatch is specify an ETag value to operate only on blobs without a matching value. requestID is provides a +// client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage +// analytics logging is enabled. +func (client blockBlobClient) Upload(ctx context.Context, body io.ReadSeeker, contentLength int64, timeout *int32, blobContentType *string, blobContentEncoding *string, blobContentLanguage *string, blobContentMD5 []byte, blobCacheControl *string, metadata map[string]string, leaseID *string, blobContentDisposition *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*BlockBlobUploadResponse, error) { + if err := validate([]validation{ + {targetValue: body, + constraints: []constraint{{target: "body", name: null, rule: true, chain: nil}}}, + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.uploadPreparer(body, contentLength, timeout, blobContentType, blobContentEncoding, blobContentLanguage, blobContentMD5, blobCacheControl, metadata, leaseID, blobContentDisposition, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.uploadResponder}, req) + if err != nil { + return nil, err + } + return resp.(*BlockBlobUploadResponse), err +} + +// uploadPreparer prepares the Upload request. +func (client blockBlobClient) uploadPreparer(body io.ReadSeeker, contentLength int64, timeout *int32, blobContentType *string, blobContentEncoding *string, blobContentLanguage *string, blobContentMD5 []byte, blobCacheControl *string, metadata map[string]string, leaseID *string, blobContentDisposition *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, body) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + req.URL.RawQuery = params.Encode() + req.Header.Set("Content-Length", strconv.FormatInt(contentLength, 10)) + if blobContentType != nil { + req.Header.Set("x-ms-blob-content-type", *blobContentType) + } + if blobContentEncoding != nil { + req.Header.Set("x-ms-blob-content-encoding", *blobContentEncoding) + } + if blobContentLanguage != nil { + req.Header.Set("x-ms-blob-content-language", *blobContentLanguage) + } + if blobContentMD5 != nil { + req.Header.Set("x-ms-blob-content-md5", base64.StdEncoding.EncodeToString(blobContentMD5)) + } + if blobCacheControl != nil { + req.Header.Set("x-ms-blob-cache-control", *blobCacheControl) + } + if metadata != nil { + for k, v := range metadata { + req.Header.Set("x-ms-meta-"+k, v) + } + } + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + if blobContentDisposition != nil { + req.Header.Set("x-ms-blob-content-disposition", *blobContentDisposition) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + req.Header.Set("x-ms-blob-type", "BlockBlob") + return req, nil +} + +// uploadResponder handles the response to the Upload request. +func (client blockBlobClient) uploadResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusCreated) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &BlockBlobUploadResponse{rawResponse: resp.Response()}, err +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_client.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_client.go new file mode 100644 index 0000000..1b3ea2e --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_client.go @@ -0,0 +1,38 @@ +package azblob + +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "github.com/Azure/azure-pipeline-go/pipeline" + "net/url" +) + +const ( + // ServiceVersion specifies the version of the operations used in this package. + ServiceVersion = "2018-11-09" +) + +// managementClient is the base client for Azblob. +type managementClient struct { + url url.URL + p pipeline.Pipeline +} + +// newManagementClient creates an instance of the managementClient client. +func newManagementClient(url url.URL, p pipeline.Pipeline) managementClient { + return managementClient{ + url: url, + p: p, + } +} + +// URL returns a copy of the URL for this client. +func (mc managementClient) URL() url.URL { + return mc.url +} + +// Pipeline returns the pipeline for this client. +func (mc managementClient) Pipeline() pipeline.Pipeline { + return mc.p +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_container.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_container.go new file mode 100644 index 0000000..599e811 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_container.go @@ -0,0 +1,1037 @@ +package azblob + +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "bytes" + "context" + "encoding/xml" + "github.com/Azure/azure-pipeline-go/pipeline" + "io" + "io/ioutil" + "net/http" + "net/url" + "strconv" + "time" +) + +// containerClient is the client for the Container methods of the Azblob service. +type containerClient struct { + managementClient +} + +// newContainerClient creates an instance of the containerClient client. +func newContainerClient(url url.URL, p pipeline.Pipeline) containerClient { + return containerClient{newManagementClient(url, p)} +} + +// AcquireLease [Update] establishes and manages a lock on a container for delete operations. The lock duration can be +// 15 to 60 seconds, or can be infinite +// +// timeout is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. duration is specifies the duration of the lease, in seconds, or negative +// one (-1) for a lease that never expires. A non-infinite lease can be between 15 and 60 seconds. A lease duration +// cannot be changed using renew or change. proposedLeaseID is proposed lease ID, in a GUID string format. The Blob +// service returns 400 (Invalid request) if the proposed lease ID is not in the correct format. See Guid Constructor +// (String) for a list of valid GUID string formats. ifModifiedSince is specify this header value to operate only on a +// blob if it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to +// operate only on a blob if it has not been modified since the specified date/time. requestID is provides a +// client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage +// analytics logging is enabled. +func (client containerClient) AcquireLease(ctx context.Context, timeout *int32, duration *int32, proposedLeaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (*ContainerAcquireLeaseResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.acquireLeasePreparer(timeout, duration, proposedLeaseID, ifModifiedSince, ifUnmodifiedSince, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.acquireLeaseResponder}, req) + if err != nil { + return nil, err + } + return resp.(*ContainerAcquireLeaseResponse), err +} + +// acquireLeasePreparer prepares the AcquireLease request. +func (client containerClient) acquireLeasePreparer(timeout *int32, duration *int32, proposedLeaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "lease") + params.Set("restype", "container") + req.URL.RawQuery = params.Encode() + if duration != nil { + req.Header.Set("x-ms-lease-duration", strconv.FormatInt(int64(*duration), 10)) + } + if proposedLeaseID != nil { + req.Header.Set("x-ms-proposed-lease-id", *proposedLeaseID) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + req.Header.Set("x-ms-lease-action", "acquire") + return req, nil +} + +// acquireLeaseResponder handles the response to the AcquireLease request. +func (client containerClient) acquireLeaseResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusCreated) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &ContainerAcquireLeaseResponse{rawResponse: resp.Response()}, err +} + +// BreakLease [Update] establishes and manages a lock on a container for delete operations. The lock duration can be 15 +// to 60 seconds, or can be infinite +// +// timeout is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. breakPeriod is for a break operation, proposed duration the lease should +// continue before it is broken, in seconds, between 0 and 60. This break period is only used if it is shorter than the +// time remaining on the lease. If longer, the time remaining on the lease is used. A new lease will not be available +// before the break period has expired, but the lease may be held for longer than the break period. If this header does +// not appear with a break operation, a fixed-duration lease breaks after the remaining lease period elapses, and an +// infinite lease breaks immediately. ifModifiedSince is specify this header value to operate only on a blob if it has +// been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only on a +// blob if it has not been modified since the specified date/time. requestID is provides a client-generated, opaque +// value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled. +func (client containerClient) BreakLease(ctx context.Context, timeout *int32, breakPeriod *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (*ContainerBreakLeaseResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.breakLeasePreparer(timeout, breakPeriod, ifModifiedSince, ifUnmodifiedSince, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.breakLeaseResponder}, req) + if err != nil { + return nil, err + } + return resp.(*ContainerBreakLeaseResponse), err +} + +// breakLeasePreparer prepares the BreakLease request. +func (client containerClient) breakLeasePreparer(timeout *int32, breakPeriod *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "lease") + params.Set("restype", "container") + req.URL.RawQuery = params.Encode() + if breakPeriod != nil { + req.Header.Set("x-ms-lease-break-period", strconv.FormatInt(int64(*breakPeriod), 10)) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + req.Header.Set("x-ms-lease-action", "break") + return req, nil +} + +// breakLeaseResponder handles the response to the BreakLease request. +func (client containerClient) breakLeaseResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusAccepted) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &ContainerBreakLeaseResponse{rawResponse: resp.Response()}, err +} + +// ChangeLease [Update] establishes and manages a lock on a container for delete operations. The lock duration can be +// 15 to 60 seconds, or can be infinite +// +// leaseID is specifies the current lease ID on the resource. proposedLeaseID is proposed lease ID, in a GUID string +// format. The Blob service returns 400 (Invalid request) if the proposed lease ID is not in the correct format. See +// Guid Constructor (String) for a list of valid GUID string formats. timeout is the timeout parameter is expressed in +// seconds. For more information, see Setting +// Timeouts for Blob Service Operations. ifModifiedSince is specify this header value to operate only on a blob if +// it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only +// on a blob if it has not been modified since the specified date/time. requestID is provides a client-generated, +// opaque value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is +// enabled. +func (client containerClient) ChangeLease(ctx context.Context, leaseID string, proposedLeaseID string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (*ContainerChangeLeaseResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.changeLeasePreparer(leaseID, proposedLeaseID, timeout, ifModifiedSince, ifUnmodifiedSince, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.changeLeaseResponder}, req) + if err != nil { + return nil, err + } + return resp.(*ContainerChangeLeaseResponse), err +} + +// changeLeasePreparer prepares the ChangeLease request. +func (client containerClient) changeLeasePreparer(leaseID string, proposedLeaseID string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "lease") + params.Set("restype", "container") + req.URL.RawQuery = params.Encode() + req.Header.Set("x-ms-lease-id", leaseID) + req.Header.Set("x-ms-proposed-lease-id", proposedLeaseID) + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + req.Header.Set("x-ms-lease-action", "change") + return req, nil +} + +// changeLeaseResponder handles the response to the ChangeLease request. +func (client containerClient) changeLeaseResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &ContainerChangeLeaseResponse{rawResponse: resp.Response()}, err +} + +// Create creates a new container under the specified account. If the container with the same name already exists, the +// operation fails +// +// timeout is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. metadata is optional. Specifies a user-defined name-value pair associated +// with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or +// file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with +// the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version +// 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing +// Containers, Blobs, and Metadata for more information. access is specifies whether data in the container may be +// accessed publicly and the level of access requestID is provides a client-generated, opaque value with a 1 KB +// character limit that is recorded in the analytics logs when storage analytics logging is enabled. +func (client containerClient) Create(ctx context.Context, timeout *int32, metadata map[string]string, access PublicAccessType, requestID *string) (*ContainerCreateResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.createPreparer(timeout, metadata, access, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.createResponder}, req) + if err != nil { + return nil, err + } + return resp.(*ContainerCreateResponse), err +} + +// createPreparer prepares the Create request. +func (client containerClient) createPreparer(timeout *int32, metadata map[string]string, access PublicAccessType, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("restype", "container") + req.URL.RawQuery = params.Encode() + if metadata != nil { + for k, v := range metadata { + req.Header.Set("x-ms-meta-"+k, v) + } + } + if access != PublicAccessNone { + req.Header.Set("x-ms-blob-public-access", string(access)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// createResponder handles the response to the Create request. +func (client containerClient) createResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusCreated) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &ContainerCreateResponse{rawResponse: resp.Response()}, err +} + +// Delete operation marks the specified container for deletion. The container and any blobs contained within it are +// later deleted during garbage collection +// +// timeout is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's +// lease is active and matches this ID. ifModifiedSince is specify this header value to operate only on a blob if it +// has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only on a +// blob if it has not been modified since the specified date/time. requestID is provides a client-generated, opaque +// value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled. +func (client containerClient) Delete(ctx context.Context, timeout *int32, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (*ContainerDeleteResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.deletePreparer(timeout, leaseID, ifModifiedSince, ifUnmodifiedSince, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.deleteResponder}, req) + if err != nil { + return nil, err + } + return resp.(*ContainerDeleteResponse), err +} + +// deletePreparer prepares the Delete request. +func (client containerClient) deletePreparer(timeout *int32, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("DELETE", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("restype", "container") + req.URL.RawQuery = params.Encode() + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// deleteResponder handles the response to the Delete request. +func (client containerClient) deleteResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusAccepted) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &ContainerDeleteResponse{rawResponse: resp.Response()}, err +} + +// GetAccessPolicy gets the permissions for the specified container. The permissions indicate whether container data +// may be accessed publicly. +// +// timeout is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's +// lease is active and matches this ID. requestID is provides a client-generated, opaque value with a 1 KB character +// limit that is recorded in the analytics logs when storage analytics logging is enabled. +func (client containerClient) GetAccessPolicy(ctx context.Context, timeout *int32, leaseID *string, requestID *string) (*SignedIdentifiers, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.getAccessPolicyPreparer(timeout, leaseID, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getAccessPolicyResponder}, req) + if err != nil { + return nil, err + } + return resp.(*SignedIdentifiers), err +} + +// getAccessPolicyPreparer prepares the GetAccessPolicy request. +func (client containerClient) getAccessPolicyPreparer(timeout *int32, leaseID *string, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("GET", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("restype", "container") + params.Set("comp", "acl") + req.URL.RawQuery = params.Encode() + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// getAccessPolicyResponder handles the response to the GetAccessPolicy request. +func (client containerClient) getAccessPolicyResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + result := &SignedIdentifiers{rawResponse: resp.Response()} + if err != nil { + return result, err + } + defer resp.Response().Body.Close() + b, err := ioutil.ReadAll(resp.Response().Body) + if err != nil { + return result, err + } + if len(b) > 0 { + b = removeBOM(b) + err = xml.Unmarshal(b, result) + if err != nil { + return result, NewResponseError(err, resp.Response(), "failed to unmarshal response body") + } + } + return result, nil +} + +// GetAccountInfo returns the sku name and account kind +func (client containerClient) GetAccountInfo(ctx context.Context) (*ContainerGetAccountInfoResponse, error) { + req, err := client.getAccountInfoPreparer() + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getAccountInfoResponder}, req) + if err != nil { + return nil, err + } + return resp.(*ContainerGetAccountInfoResponse), err +} + +// getAccountInfoPreparer prepares the GetAccountInfo request. +func (client containerClient) getAccountInfoPreparer() (pipeline.Request, error) { + req, err := pipeline.NewRequest("GET", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + params.Set("restype", "account") + params.Set("comp", "properties") + req.URL.RawQuery = params.Encode() + req.Header.Set("x-ms-version", ServiceVersion) + return req, nil +} + +// getAccountInfoResponder handles the response to the GetAccountInfo request. +func (client containerClient) getAccountInfoResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &ContainerGetAccountInfoResponse{rawResponse: resp.Response()}, err +} + +// GetProperties returns all user-defined metadata and system properties for the specified container. The data returned +// does not include the container's list of blobs +// +// timeout is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's +// lease is active and matches this ID. requestID is provides a client-generated, opaque value with a 1 KB character +// limit that is recorded in the analytics logs when storage analytics logging is enabled. +func (client containerClient) GetProperties(ctx context.Context, timeout *int32, leaseID *string, requestID *string) (*ContainerGetPropertiesResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.getPropertiesPreparer(timeout, leaseID, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getPropertiesResponder}, req) + if err != nil { + return nil, err + } + return resp.(*ContainerGetPropertiesResponse), err +} + +// getPropertiesPreparer prepares the GetProperties request. +func (client containerClient) getPropertiesPreparer(timeout *int32, leaseID *string, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("GET", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("restype", "container") + req.URL.RawQuery = params.Encode() + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// getPropertiesResponder handles the response to the GetProperties request. +func (client containerClient) getPropertiesResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &ContainerGetPropertiesResponse{rawResponse: resp.Response()}, err +} + +// ListBlobFlatSegment [Update] The List Blobs operation returns a list of the blobs under the specified container +// +// prefix is filters the results to return only containers whose name begins with the specified prefix. marker is a +// string value that identifies the portion of the list of containers to be returned with the next listing operation. +// The operation returns the NextMarker value within the response body if the listing operation did not return all +// containers remaining to be listed with the current page. The NextMarker value can be used as the value for the +// marker parameter in a subsequent call to request the next page of list items. The marker value is opaque to the +// client. maxresults is specifies the maximum number of containers to return. If the request does not specify +// maxresults, or specifies a value greater than 5000, the server will return up to 5000 items. Note that if the +// listing operation crosses a partition boundary, then the service will return a continuation token for retrieving the +// remainder of the results. For this reason, it is possible that the service will return fewer results than specified +// by maxresults, or than the default of 5000. include is include this parameter to specify one or more datasets to +// include in the response. timeout is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. requestID is provides a client-generated, opaque value with a 1 KB +// character limit that is recorded in the analytics logs when storage analytics logging is enabled. +func (client containerClient) ListBlobFlatSegment(ctx context.Context, prefix *string, marker *string, maxresults *int32, include []ListBlobsIncludeItemType, timeout *int32, requestID *string) (*ListBlobsFlatSegmentResponse, error) { + if err := validate([]validation{ + {targetValue: maxresults, + constraints: []constraint{{target: "maxresults", name: null, rule: false, + chain: []constraint{{target: "maxresults", name: inclusiveMinimum, rule: 1, chain: nil}}}}}, + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.listBlobFlatSegmentPreparer(prefix, marker, maxresults, include, timeout, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.listBlobFlatSegmentResponder}, req) + if err != nil { + return nil, err + } + return resp.(*ListBlobsFlatSegmentResponse), err +} + +// listBlobFlatSegmentPreparer prepares the ListBlobFlatSegment request. +func (client containerClient) listBlobFlatSegmentPreparer(prefix *string, marker *string, maxresults *int32, include []ListBlobsIncludeItemType, timeout *int32, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("GET", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if prefix != nil && len(*prefix) > 0 { + params.Set("prefix", *prefix) + } + if marker != nil && len(*marker) > 0 { + params.Set("marker", *marker) + } + if maxresults != nil { + params.Set("maxresults", strconv.FormatInt(int64(*maxresults), 10)) + } + if include != nil && len(include) > 0 { + params.Set("include", joinConst(include, ",")) + } + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("restype", "container") + params.Set("comp", "list") + req.URL.RawQuery = params.Encode() + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// listBlobFlatSegmentResponder handles the response to the ListBlobFlatSegment request. +func (client containerClient) listBlobFlatSegmentResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + result := &ListBlobsFlatSegmentResponse{rawResponse: resp.Response()} + if err != nil { + return result, err + } + defer resp.Response().Body.Close() + b, err := ioutil.ReadAll(resp.Response().Body) + if err != nil { + return result, err + } + if len(b) > 0 { + b = removeBOM(b) + err = xml.Unmarshal(b, result) + if err != nil { + return result, NewResponseError(err, resp.Response(), "failed to unmarshal response body") + } + } + return result, nil +} + +// ListBlobHierarchySegment [Update] The List Blobs operation returns a list of the blobs under the specified container +// +// delimiter is when the request includes this parameter, the operation returns a BlobPrefix element in the response +// body that acts as a placeholder for all blobs whose names begin with the same substring up to the appearance of the +// delimiter character. The delimiter may be a single character or a string. prefix is filters the results to return +// only containers whose name begins with the specified prefix. marker is a string value that identifies the portion of +// the list of containers to be returned with the next listing operation. The operation returns the NextMarker value +// within the response body if the listing operation did not return all containers remaining to be listed with the +// current page. The NextMarker value can be used as the value for the marker parameter in a subsequent call to request +// the next page of list items. The marker value is opaque to the client. maxresults is specifies the maximum number of +// containers to return. If the request does not specify maxresults, or specifies a value greater than 5000, the server +// will return up to 5000 items. Note that if the listing operation crosses a partition boundary, then the service will +// return a continuation token for retrieving the remainder of the results. For this reason, it is possible that the +// service will return fewer results than specified by maxresults, or than the default of 5000. include is include this +// parameter to specify one or more datasets to include in the response. timeout is the timeout parameter is expressed +// in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. requestID is provides a client-generated, opaque value with a 1 KB +// character limit that is recorded in the analytics logs when storage analytics logging is enabled. +func (client containerClient) ListBlobHierarchySegment(ctx context.Context, delimiter string, prefix *string, marker *string, maxresults *int32, include []ListBlobsIncludeItemType, timeout *int32, requestID *string) (*ListBlobsHierarchySegmentResponse, error) { + if err := validate([]validation{ + {targetValue: maxresults, + constraints: []constraint{{target: "maxresults", name: null, rule: false, + chain: []constraint{{target: "maxresults", name: inclusiveMinimum, rule: 1, chain: nil}}}}}, + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.listBlobHierarchySegmentPreparer(delimiter, prefix, marker, maxresults, include, timeout, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.listBlobHierarchySegmentResponder}, req) + if err != nil { + return nil, err + } + return resp.(*ListBlobsHierarchySegmentResponse), err +} + +// listBlobHierarchySegmentPreparer prepares the ListBlobHierarchySegment request. +func (client containerClient) listBlobHierarchySegmentPreparer(delimiter string, prefix *string, marker *string, maxresults *int32, include []ListBlobsIncludeItemType, timeout *int32, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("GET", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if prefix != nil && len(*prefix) > 0 { + params.Set("prefix", *prefix) + } + params.Set("delimiter", delimiter) + if marker != nil && len(*marker) > 0 { + params.Set("marker", *marker) + } + if maxresults != nil { + params.Set("maxresults", strconv.FormatInt(int64(*maxresults), 10)) + } + if include != nil && len(include) > 0 { + params.Set("include", joinConst(include, ",")) + } + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("restype", "container") + params.Set("comp", "list") + req.URL.RawQuery = params.Encode() + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// listBlobHierarchySegmentResponder handles the response to the ListBlobHierarchySegment request. +func (client containerClient) listBlobHierarchySegmentResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + result := &ListBlobsHierarchySegmentResponse{rawResponse: resp.Response()} + if err != nil { + return result, err + } + defer resp.Response().Body.Close() + b, err := ioutil.ReadAll(resp.Response().Body) + if err != nil { + return result, err + } + if len(b) > 0 { + b = removeBOM(b) + err = xml.Unmarshal(b, result) + if err != nil { + return result, NewResponseError(err, resp.Response(), "failed to unmarshal response body") + } + } + return result, nil +} + +// ReleaseLease [Update] establishes and manages a lock on a container for delete operations. The lock duration can be +// 15 to 60 seconds, or can be infinite +// +// leaseID is specifies the current lease ID on the resource. timeout is the timeout parameter is expressed in seconds. +// For more information, see Setting +// Timeouts for Blob Service Operations. ifModifiedSince is specify this header value to operate only on a blob if +// it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only +// on a blob if it has not been modified since the specified date/time. requestID is provides a client-generated, +// opaque value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is +// enabled. +func (client containerClient) ReleaseLease(ctx context.Context, leaseID string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (*ContainerReleaseLeaseResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.releaseLeasePreparer(leaseID, timeout, ifModifiedSince, ifUnmodifiedSince, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.releaseLeaseResponder}, req) + if err != nil { + return nil, err + } + return resp.(*ContainerReleaseLeaseResponse), err +} + +// releaseLeasePreparer prepares the ReleaseLease request. +func (client containerClient) releaseLeasePreparer(leaseID string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "lease") + params.Set("restype", "container") + req.URL.RawQuery = params.Encode() + req.Header.Set("x-ms-lease-id", leaseID) + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + req.Header.Set("x-ms-lease-action", "release") + return req, nil +} + +// releaseLeaseResponder handles the response to the ReleaseLease request. +func (client containerClient) releaseLeaseResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &ContainerReleaseLeaseResponse{rawResponse: resp.Response()}, err +} + +// RenewLease [Update] establishes and manages a lock on a container for delete operations. The lock duration can be 15 +// to 60 seconds, or can be infinite +// +// leaseID is specifies the current lease ID on the resource. timeout is the timeout parameter is expressed in seconds. +// For more information, see Setting +// Timeouts for Blob Service Operations. ifModifiedSince is specify this header value to operate only on a blob if +// it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only +// on a blob if it has not been modified since the specified date/time. requestID is provides a client-generated, +// opaque value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is +// enabled. +func (client containerClient) RenewLease(ctx context.Context, leaseID string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (*ContainerRenewLeaseResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.renewLeasePreparer(leaseID, timeout, ifModifiedSince, ifUnmodifiedSince, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.renewLeaseResponder}, req) + if err != nil { + return nil, err + } + return resp.(*ContainerRenewLeaseResponse), err +} + +// renewLeasePreparer prepares the RenewLease request. +func (client containerClient) renewLeasePreparer(leaseID string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "lease") + params.Set("restype", "container") + req.URL.RawQuery = params.Encode() + req.Header.Set("x-ms-lease-id", leaseID) + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + req.Header.Set("x-ms-lease-action", "renew") + return req, nil +} + +// renewLeaseResponder handles the response to the RenewLease request. +func (client containerClient) renewLeaseResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &ContainerRenewLeaseResponse{rawResponse: resp.Response()}, err +} + +// SetAccessPolicy sets the permissions for the specified container. The permissions indicate whether blobs in a +// container may be accessed publicly. +// +// containerACL is the acls for the container timeout is the timeout parameter is expressed in seconds. For more +// information, see Setting +// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's +// lease is active and matches this ID. access is specifies whether data in the container may be accessed publicly and +// the level of access ifModifiedSince is specify this header value to operate only on a blob if it has been modified +// since the specified date/time. ifUnmodifiedSince is specify this header value to operate only on a blob if it has +// not been modified since the specified date/time. requestID is provides a client-generated, opaque value with a 1 KB +// character limit that is recorded in the analytics logs when storage analytics logging is enabled. +func (client containerClient) SetAccessPolicy(ctx context.Context, containerACL []SignedIdentifier, timeout *int32, leaseID *string, access PublicAccessType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (*ContainerSetAccessPolicyResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.setAccessPolicyPreparer(containerACL, timeout, leaseID, access, ifModifiedSince, ifUnmodifiedSince, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.setAccessPolicyResponder}, req) + if err != nil { + return nil, err + } + return resp.(*ContainerSetAccessPolicyResponse), err +} + +// setAccessPolicyPreparer prepares the SetAccessPolicy request. +func (client containerClient) setAccessPolicyPreparer(containerACL []SignedIdentifier, timeout *int32, leaseID *string, access PublicAccessType, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("restype", "container") + params.Set("comp", "acl") + req.URL.RawQuery = params.Encode() + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + if access != PublicAccessNone { + req.Header.Set("x-ms-blob-public-access", string(access)) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + b, err := xml.Marshal(SignedIdentifiers{Items: containerACL}) + if err != nil { + return req, pipeline.NewError(err, "failed to marshal request body") + } + req.Header.Set("Content-Type", "application/xml") + err = req.SetBody(bytes.NewReader(b)) + if err != nil { + return req, pipeline.NewError(err, "failed to set request body") + } + return req, nil +} + +// setAccessPolicyResponder handles the response to the SetAccessPolicy request. +func (client containerClient) setAccessPolicyResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &ContainerSetAccessPolicyResponse{rawResponse: resp.Response()}, err +} + +// SetMetadata operation sets one or more user-defined name-value pairs for the specified container. +// +// timeout is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's +// lease is active and matches this ID. metadata is optional. Specifies a user-defined name-value pair associated with +// the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to +// the destination blob. If one or more name-value pairs are specified, the destination blob is created with the +// specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version +// 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing +// Containers, Blobs, and Metadata for more information. ifModifiedSince is specify this header value to operate only +// on a blob if it has been modified since the specified date/time. requestID is provides a client-generated, opaque +// value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled. +func (client containerClient) SetMetadata(ctx context.Context, timeout *int32, leaseID *string, metadata map[string]string, ifModifiedSince *time.Time, requestID *string) (*ContainerSetMetadataResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.setMetadataPreparer(timeout, leaseID, metadata, ifModifiedSince, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.setMetadataResponder}, req) + if err != nil { + return nil, err + } + return resp.(*ContainerSetMetadataResponse), err +} + +// setMetadataPreparer prepares the SetMetadata request. +func (client containerClient) setMetadataPreparer(timeout *int32, leaseID *string, metadata map[string]string, ifModifiedSince *time.Time, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("restype", "container") + params.Set("comp", "metadata") + req.URL.RawQuery = params.Encode() + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + if metadata != nil { + for k, v := range metadata { + req.Header.Set("x-ms-meta-"+k, v) + } + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// setMetadataResponder handles the response to the SetMetadata request. +func (client containerClient) setMetadataResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &ContainerSetMetadataResponse{rawResponse: resp.Response()}, err +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_models.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_models.go new file mode 100644 index 0000000..3915849 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_models.go @@ -0,0 +1,5202 @@ +package azblob + +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "crypto/hmac" + "crypto/sha256" + "encoding/base64" + "encoding/xml" + "errors" + "io" + "net/http" + "reflect" + "strconv" + "strings" + "time" + "unsafe" +) + +// ETag is an entity tag. +type ETag string + +const ( + // ETagNone represents an empty entity tag. + ETagNone ETag = "" + + // ETagAny matches any entity tag. + ETagAny ETag = "*" +) + +// Metadata contains metadata key/value pairs. +type Metadata map[string]string + +const mdPrefix = "x-ms-meta-" + +const mdPrefixLen = len(mdPrefix) + +// UnmarshalXML implements the xml.Unmarshaler interface for Metadata. +func (md *Metadata) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { + tokName := "" + for t, err := d.Token(); err == nil; t, err = d.Token() { + switch tt := t.(type) { + case xml.StartElement: + tokName = strings.ToLower(tt.Name.Local) + break + case xml.CharData: + if *md == nil { + *md = Metadata{} + } + (*md)[tokName] = string(tt) + break + } + } + return nil +} + +// Marker represents an opaque value used in paged responses. +type Marker struct { + Val *string +} + +// NotDone returns true if the list enumeration should be started or is not yet complete. Specifically, NotDone returns true +// for a just-initialized (zero value) Marker indicating that you should make an initial request to get a result portion from +// the service. NotDone also returns true whenever the service returns an interim result portion. NotDone returns false only +// after the service has returned the final result portion. +func (m Marker) NotDone() bool { + return m.Val == nil || *m.Val != "" +} + +// UnmarshalXML implements the xml.Unmarshaler interface for Marker. +func (m *Marker) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { + var out string + err := d.DecodeElement(&out, &start) + m.Val = &out + return err +} + +// concatenates a slice of const values with the specified separator between each item +func joinConst(s interface{}, sep string) string { + v := reflect.ValueOf(s) + if v.Kind() != reflect.Slice && v.Kind() != reflect.Array { + panic("s wasn't a slice or array") + } + ss := make([]string, 0, v.Len()) + for i := 0; i < v.Len(); i++ { + ss = append(ss, v.Index(i).String()) + } + return strings.Join(ss, sep) +} + +func validateError(err error) { + if err != nil { + panic(err) + } +} + +// AccessTierType enumerates the values for access tier type. +type AccessTierType string + +const ( + // AccessTierArchive ... + AccessTierArchive AccessTierType = "Archive" + // AccessTierCool ... + AccessTierCool AccessTierType = "Cool" + // AccessTierHot ... + AccessTierHot AccessTierType = "Hot" + // AccessTierNone represents an empty AccessTierType. + AccessTierNone AccessTierType = "" + // AccessTierP10 ... + AccessTierP10 AccessTierType = "P10" + // AccessTierP20 ... + AccessTierP20 AccessTierType = "P20" + // AccessTierP30 ... + AccessTierP30 AccessTierType = "P30" + // AccessTierP4 ... + AccessTierP4 AccessTierType = "P4" + // AccessTierP40 ... + AccessTierP40 AccessTierType = "P40" + // AccessTierP50 ... + AccessTierP50 AccessTierType = "P50" + // AccessTierP6 ... + AccessTierP6 AccessTierType = "P6" +) + +// PossibleAccessTierTypeValues returns an array of possible values for the AccessTierType const type. +func PossibleAccessTierTypeValues() []AccessTierType { + return []AccessTierType{AccessTierArchive, AccessTierCool, AccessTierHot, AccessTierNone, AccessTierP10, AccessTierP20, AccessTierP30, AccessTierP4, AccessTierP40, AccessTierP50, AccessTierP6} +} + +// AccountKindType enumerates the values for account kind type. +type AccountKindType string + +const ( + // AccountKindBlobStorage ... + AccountKindBlobStorage AccountKindType = "BlobStorage" + // AccountKindNone represents an empty AccountKindType. + AccountKindNone AccountKindType = "" + // AccountKindStorage ... + AccountKindStorage AccountKindType = "Storage" + // AccountKindStorageV2 ... + AccountKindStorageV2 AccountKindType = "StorageV2" +) + +// PossibleAccountKindTypeValues returns an array of possible values for the AccountKindType const type. +func PossibleAccountKindTypeValues() []AccountKindType { + return []AccountKindType{AccountKindBlobStorage, AccountKindNone, AccountKindStorage, AccountKindStorageV2} +} + +// ArchiveStatusType enumerates the values for archive status type. +type ArchiveStatusType string + +const ( + // ArchiveStatusNone represents an empty ArchiveStatusType. + ArchiveStatusNone ArchiveStatusType = "" + // ArchiveStatusRehydratePendingToCool ... + ArchiveStatusRehydratePendingToCool ArchiveStatusType = "rehydrate-pending-to-cool" + // ArchiveStatusRehydratePendingToHot ... + ArchiveStatusRehydratePendingToHot ArchiveStatusType = "rehydrate-pending-to-hot" +) + +// PossibleArchiveStatusTypeValues returns an array of possible values for the ArchiveStatusType const type. +func PossibleArchiveStatusTypeValues() []ArchiveStatusType { + return []ArchiveStatusType{ArchiveStatusNone, ArchiveStatusRehydratePendingToCool, ArchiveStatusRehydratePendingToHot} +} + +// BlobType enumerates the values for blob type. +type BlobType string + +const ( + // BlobAppendBlob ... + BlobAppendBlob BlobType = "AppendBlob" + // BlobBlockBlob ... + BlobBlockBlob BlobType = "BlockBlob" + // BlobNone represents an empty BlobType. + BlobNone BlobType = "" + // BlobPageBlob ... + BlobPageBlob BlobType = "PageBlob" +) + +// PossibleBlobTypeValues returns an array of possible values for the BlobType const type. +func PossibleBlobTypeValues() []BlobType { + return []BlobType{BlobAppendBlob, BlobBlockBlob, BlobNone, BlobPageBlob} +} + +// BlockListType enumerates the values for block list type. +type BlockListType string + +const ( + // BlockListAll ... + BlockListAll BlockListType = "all" + // BlockListCommitted ... + BlockListCommitted BlockListType = "committed" + // BlockListNone represents an empty BlockListType. + BlockListNone BlockListType = "" + // BlockListUncommitted ... + BlockListUncommitted BlockListType = "uncommitted" +) + +// PossibleBlockListTypeValues returns an array of possible values for the BlockListType const type. +func PossibleBlockListTypeValues() []BlockListType { + return []BlockListType{BlockListAll, BlockListCommitted, BlockListNone, BlockListUncommitted} +} + +// CopyStatusType enumerates the values for copy status type. +type CopyStatusType string + +const ( + // CopyStatusAborted ... + CopyStatusAborted CopyStatusType = "aborted" + // CopyStatusFailed ... + CopyStatusFailed CopyStatusType = "failed" + // CopyStatusNone represents an empty CopyStatusType. + CopyStatusNone CopyStatusType = "" + // CopyStatusPending ... + CopyStatusPending CopyStatusType = "pending" + // CopyStatusSuccess ... + CopyStatusSuccess CopyStatusType = "success" +) + +// PossibleCopyStatusTypeValues returns an array of possible values for the CopyStatusType const type. +func PossibleCopyStatusTypeValues() []CopyStatusType { + return []CopyStatusType{CopyStatusAborted, CopyStatusFailed, CopyStatusNone, CopyStatusPending, CopyStatusSuccess} +} + +// DeleteSnapshotsOptionType enumerates the values for delete snapshots option type. +type DeleteSnapshotsOptionType string + +const ( + // DeleteSnapshotsOptionInclude ... + DeleteSnapshotsOptionInclude DeleteSnapshotsOptionType = "include" + // DeleteSnapshotsOptionNone represents an empty DeleteSnapshotsOptionType. + DeleteSnapshotsOptionNone DeleteSnapshotsOptionType = "" + // DeleteSnapshotsOptionOnly ... + DeleteSnapshotsOptionOnly DeleteSnapshotsOptionType = "only" +) + +// PossibleDeleteSnapshotsOptionTypeValues returns an array of possible values for the DeleteSnapshotsOptionType const type. +func PossibleDeleteSnapshotsOptionTypeValues() []DeleteSnapshotsOptionType { + return []DeleteSnapshotsOptionType{DeleteSnapshotsOptionInclude, DeleteSnapshotsOptionNone, DeleteSnapshotsOptionOnly} +} + +// GeoReplicationStatusType enumerates the values for geo replication status type. +type GeoReplicationStatusType string + +const ( + // GeoReplicationStatusBootstrap ... + GeoReplicationStatusBootstrap GeoReplicationStatusType = "bootstrap" + // GeoReplicationStatusLive ... + GeoReplicationStatusLive GeoReplicationStatusType = "live" + // GeoReplicationStatusNone represents an empty GeoReplicationStatusType. + GeoReplicationStatusNone GeoReplicationStatusType = "" + // GeoReplicationStatusUnavailable ... + GeoReplicationStatusUnavailable GeoReplicationStatusType = "unavailable" +) + +// PossibleGeoReplicationStatusTypeValues returns an array of possible values for the GeoReplicationStatusType const type. +func PossibleGeoReplicationStatusTypeValues() []GeoReplicationStatusType { + return []GeoReplicationStatusType{GeoReplicationStatusBootstrap, GeoReplicationStatusLive, GeoReplicationStatusNone, GeoReplicationStatusUnavailable} +} + +// LeaseDurationType enumerates the values for lease duration type. +type LeaseDurationType string + +const ( + // LeaseDurationFixed ... + LeaseDurationFixed LeaseDurationType = "fixed" + // LeaseDurationInfinite ... + LeaseDurationInfinite LeaseDurationType = "infinite" + // LeaseDurationNone represents an empty LeaseDurationType. + LeaseDurationNone LeaseDurationType = "" +) + +// PossibleLeaseDurationTypeValues returns an array of possible values for the LeaseDurationType const type. +func PossibleLeaseDurationTypeValues() []LeaseDurationType { + return []LeaseDurationType{LeaseDurationFixed, LeaseDurationInfinite, LeaseDurationNone} +} + +// LeaseStateType enumerates the values for lease state type. +type LeaseStateType string + +const ( + // LeaseStateAvailable ... + LeaseStateAvailable LeaseStateType = "available" + // LeaseStateBreaking ... + LeaseStateBreaking LeaseStateType = "breaking" + // LeaseStateBroken ... + LeaseStateBroken LeaseStateType = "broken" + // LeaseStateExpired ... + LeaseStateExpired LeaseStateType = "expired" + // LeaseStateLeased ... + LeaseStateLeased LeaseStateType = "leased" + // LeaseStateNone represents an empty LeaseStateType. + LeaseStateNone LeaseStateType = "" +) + +// PossibleLeaseStateTypeValues returns an array of possible values for the LeaseStateType const type. +func PossibleLeaseStateTypeValues() []LeaseStateType { + return []LeaseStateType{LeaseStateAvailable, LeaseStateBreaking, LeaseStateBroken, LeaseStateExpired, LeaseStateLeased, LeaseStateNone} +} + +// LeaseStatusType enumerates the values for lease status type. +type LeaseStatusType string + +const ( + // LeaseStatusLocked ... + LeaseStatusLocked LeaseStatusType = "locked" + // LeaseStatusNone represents an empty LeaseStatusType. + LeaseStatusNone LeaseStatusType = "" + // LeaseStatusUnlocked ... + LeaseStatusUnlocked LeaseStatusType = "unlocked" +) + +// PossibleLeaseStatusTypeValues returns an array of possible values for the LeaseStatusType const type. +func PossibleLeaseStatusTypeValues() []LeaseStatusType { + return []LeaseStatusType{LeaseStatusLocked, LeaseStatusNone, LeaseStatusUnlocked} +} + +// ListBlobsIncludeItemType enumerates the values for list blobs include item type. +type ListBlobsIncludeItemType string + +const ( + // ListBlobsIncludeItemCopy ... + ListBlobsIncludeItemCopy ListBlobsIncludeItemType = "copy" + // ListBlobsIncludeItemDeleted ... + ListBlobsIncludeItemDeleted ListBlobsIncludeItemType = "deleted" + // ListBlobsIncludeItemMetadata ... + ListBlobsIncludeItemMetadata ListBlobsIncludeItemType = "metadata" + // ListBlobsIncludeItemNone represents an empty ListBlobsIncludeItemType. + ListBlobsIncludeItemNone ListBlobsIncludeItemType = "" + // ListBlobsIncludeItemSnapshots ... + ListBlobsIncludeItemSnapshots ListBlobsIncludeItemType = "snapshots" + // ListBlobsIncludeItemUncommittedblobs ... + ListBlobsIncludeItemUncommittedblobs ListBlobsIncludeItemType = "uncommittedblobs" +) + +// PossibleListBlobsIncludeItemTypeValues returns an array of possible values for the ListBlobsIncludeItemType const type. +func PossibleListBlobsIncludeItemTypeValues() []ListBlobsIncludeItemType { + return []ListBlobsIncludeItemType{ListBlobsIncludeItemCopy, ListBlobsIncludeItemDeleted, ListBlobsIncludeItemMetadata, ListBlobsIncludeItemNone, ListBlobsIncludeItemSnapshots, ListBlobsIncludeItemUncommittedblobs} +} + +// ListContainersIncludeType enumerates the values for list containers include type. +type ListContainersIncludeType string + +const ( + // ListContainersIncludeMetadata ... + ListContainersIncludeMetadata ListContainersIncludeType = "metadata" + // ListContainersIncludeNone represents an empty ListContainersIncludeType. + ListContainersIncludeNone ListContainersIncludeType = "" +) + +// PossibleListContainersIncludeTypeValues returns an array of possible values for the ListContainersIncludeType const type. +func PossibleListContainersIncludeTypeValues() []ListContainersIncludeType { + return []ListContainersIncludeType{ListContainersIncludeMetadata, ListContainersIncludeNone} +} + +// PublicAccessType enumerates the values for public access type. +type PublicAccessType string + +const ( + // PublicAccessBlob ... + PublicAccessBlob PublicAccessType = "blob" + // PublicAccessContainer ... + PublicAccessContainer PublicAccessType = "container" + // PublicAccessNone represents an empty PublicAccessType. + PublicAccessNone PublicAccessType = "" +) + +// PossiblePublicAccessTypeValues returns an array of possible values for the PublicAccessType const type. +func PossiblePublicAccessTypeValues() []PublicAccessType { + return []PublicAccessType{PublicAccessBlob, PublicAccessContainer, PublicAccessNone} +} + +// SequenceNumberActionType enumerates the values for sequence number action type. +type SequenceNumberActionType string + +const ( + // SequenceNumberActionIncrement ... + SequenceNumberActionIncrement SequenceNumberActionType = "increment" + // SequenceNumberActionMax ... + SequenceNumberActionMax SequenceNumberActionType = "max" + // SequenceNumberActionNone represents an empty SequenceNumberActionType. + SequenceNumberActionNone SequenceNumberActionType = "" + // SequenceNumberActionUpdate ... + SequenceNumberActionUpdate SequenceNumberActionType = "update" +) + +// PossibleSequenceNumberActionTypeValues returns an array of possible values for the SequenceNumberActionType const type. +func PossibleSequenceNumberActionTypeValues() []SequenceNumberActionType { + return []SequenceNumberActionType{SequenceNumberActionIncrement, SequenceNumberActionMax, SequenceNumberActionNone, SequenceNumberActionUpdate} +} + +// SkuNameType enumerates the values for sku name type. +type SkuNameType string + +const ( + // SkuNameNone represents an empty SkuNameType. + SkuNameNone SkuNameType = "" + // SkuNamePremiumLRS ... + SkuNamePremiumLRS SkuNameType = "Premium_LRS" + // SkuNameStandardGRS ... + SkuNameStandardGRS SkuNameType = "Standard_GRS" + // SkuNameStandardLRS ... + SkuNameStandardLRS SkuNameType = "Standard_LRS" + // SkuNameStandardRAGRS ... + SkuNameStandardRAGRS SkuNameType = "Standard_RAGRS" + // SkuNameStandardZRS ... + SkuNameStandardZRS SkuNameType = "Standard_ZRS" +) + +// PossibleSkuNameTypeValues returns an array of possible values for the SkuNameType const type. +func PossibleSkuNameTypeValues() []SkuNameType { + return []SkuNameType{SkuNameNone, SkuNamePremiumLRS, SkuNameStandardGRS, SkuNameStandardLRS, SkuNameStandardRAGRS, SkuNameStandardZRS} +} + +// StorageErrorCodeType enumerates the values for storage error code type. +type StorageErrorCodeType string + +const ( + // StorageErrorCodeAccountAlreadyExists ... + StorageErrorCodeAccountAlreadyExists StorageErrorCodeType = "AccountAlreadyExists" + // StorageErrorCodeAccountBeingCreated ... + StorageErrorCodeAccountBeingCreated StorageErrorCodeType = "AccountBeingCreated" + // StorageErrorCodeAccountIsDisabled ... + StorageErrorCodeAccountIsDisabled StorageErrorCodeType = "AccountIsDisabled" + // StorageErrorCodeAppendPositionConditionNotMet ... + StorageErrorCodeAppendPositionConditionNotMet StorageErrorCodeType = "AppendPositionConditionNotMet" + // StorageErrorCodeAuthenticationFailed ... + StorageErrorCodeAuthenticationFailed StorageErrorCodeType = "AuthenticationFailed" + // StorageErrorCodeAuthorizationFailure ... + StorageErrorCodeAuthorizationFailure StorageErrorCodeType = "AuthorizationFailure" + // StorageErrorCodeBlobAlreadyExists ... + StorageErrorCodeBlobAlreadyExists StorageErrorCodeType = "BlobAlreadyExists" + // StorageErrorCodeBlobArchived ... + StorageErrorCodeBlobArchived StorageErrorCodeType = "BlobArchived" + // StorageErrorCodeBlobBeingRehydrated ... + StorageErrorCodeBlobBeingRehydrated StorageErrorCodeType = "BlobBeingRehydrated" + // StorageErrorCodeBlobNotArchived ... + StorageErrorCodeBlobNotArchived StorageErrorCodeType = "BlobNotArchived" + // StorageErrorCodeBlobNotFound ... + StorageErrorCodeBlobNotFound StorageErrorCodeType = "BlobNotFound" + // StorageErrorCodeBlobOverwritten ... + StorageErrorCodeBlobOverwritten StorageErrorCodeType = "BlobOverwritten" + // StorageErrorCodeBlobTierInadequateForContentLength ... + StorageErrorCodeBlobTierInadequateForContentLength StorageErrorCodeType = "BlobTierInadequateForContentLength" + // StorageErrorCodeBlockCountExceedsLimit ... + StorageErrorCodeBlockCountExceedsLimit StorageErrorCodeType = "BlockCountExceedsLimit" + // StorageErrorCodeBlockListTooLong ... + StorageErrorCodeBlockListTooLong StorageErrorCodeType = "BlockListTooLong" + // StorageErrorCodeCannotChangeToLowerTier ... + StorageErrorCodeCannotChangeToLowerTier StorageErrorCodeType = "CannotChangeToLowerTier" + // StorageErrorCodeCannotVerifyCopySource ... + StorageErrorCodeCannotVerifyCopySource StorageErrorCodeType = "CannotVerifyCopySource" + // StorageErrorCodeConditionHeadersNotSupported ... + StorageErrorCodeConditionHeadersNotSupported StorageErrorCodeType = "ConditionHeadersNotSupported" + // StorageErrorCodeConditionNotMet ... + StorageErrorCodeConditionNotMet StorageErrorCodeType = "ConditionNotMet" + // StorageErrorCodeContainerAlreadyExists ... + StorageErrorCodeContainerAlreadyExists StorageErrorCodeType = "ContainerAlreadyExists" + // StorageErrorCodeContainerBeingDeleted ... + StorageErrorCodeContainerBeingDeleted StorageErrorCodeType = "ContainerBeingDeleted" + // StorageErrorCodeContainerDisabled ... + StorageErrorCodeContainerDisabled StorageErrorCodeType = "ContainerDisabled" + // StorageErrorCodeContainerNotFound ... + StorageErrorCodeContainerNotFound StorageErrorCodeType = "ContainerNotFound" + // StorageErrorCodeContentLengthLargerThanTierLimit ... + StorageErrorCodeContentLengthLargerThanTierLimit StorageErrorCodeType = "ContentLengthLargerThanTierLimit" + // StorageErrorCodeCopyAcrossAccountsNotSupported ... + StorageErrorCodeCopyAcrossAccountsNotSupported StorageErrorCodeType = "CopyAcrossAccountsNotSupported" + // StorageErrorCodeCopyIDMismatch ... + StorageErrorCodeCopyIDMismatch StorageErrorCodeType = "CopyIdMismatch" + // StorageErrorCodeEmptyMetadataKey ... + StorageErrorCodeEmptyMetadataKey StorageErrorCodeType = "EmptyMetadataKey" + // StorageErrorCodeFeatureVersionMismatch ... + StorageErrorCodeFeatureVersionMismatch StorageErrorCodeType = "FeatureVersionMismatch" + // StorageErrorCodeIncrementalCopyBlobMismatch ... + StorageErrorCodeIncrementalCopyBlobMismatch StorageErrorCodeType = "IncrementalCopyBlobMismatch" + // StorageErrorCodeIncrementalCopyOfEralierVersionSnapshotNotAllowed ... + StorageErrorCodeIncrementalCopyOfEralierVersionSnapshotNotAllowed StorageErrorCodeType = "IncrementalCopyOfEralierVersionSnapshotNotAllowed" + // StorageErrorCodeIncrementalCopySourceMustBeSnapshot ... + StorageErrorCodeIncrementalCopySourceMustBeSnapshot StorageErrorCodeType = "IncrementalCopySourceMustBeSnapshot" + // StorageErrorCodeInfiniteLeaseDurationRequired ... + StorageErrorCodeInfiniteLeaseDurationRequired StorageErrorCodeType = "InfiniteLeaseDurationRequired" + // StorageErrorCodeInsufficientAccountPermissions ... + StorageErrorCodeInsufficientAccountPermissions StorageErrorCodeType = "InsufficientAccountPermissions" + // StorageErrorCodeInternalError ... + StorageErrorCodeInternalError StorageErrorCodeType = "InternalError" + // StorageErrorCodeInvalidAuthenticationInfo ... + StorageErrorCodeInvalidAuthenticationInfo StorageErrorCodeType = "InvalidAuthenticationInfo" + // StorageErrorCodeInvalidBlobOrBlock ... + StorageErrorCodeInvalidBlobOrBlock StorageErrorCodeType = "InvalidBlobOrBlock" + // StorageErrorCodeInvalidBlobTier ... + StorageErrorCodeInvalidBlobTier StorageErrorCodeType = "InvalidBlobTier" + // StorageErrorCodeInvalidBlobType ... + StorageErrorCodeInvalidBlobType StorageErrorCodeType = "InvalidBlobType" + // StorageErrorCodeInvalidBlockID ... + StorageErrorCodeInvalidBlockID StorageErrorCodeType = "InvalidBlockId" + // StorageErrorCodeInvalidBlockList ... + StorageErrorCodeInvalidBlockList StorageErrorCodeType = "InvalidBlockList" + // StorageErrorCodeInvalidHeaderValue ... + StorageErrorCodeInvalidHeaderValue StorageErrorCodeType = "InvalidHeaderValue" + // StorageErrorCodeInvalidHTTPVerb ... + StorageErrorCodeInvalidHTTPVerb StorageErrorCodeType = "InvalidHttpVerb" + // StorageErrorCodeInvalidInput ... + StorageErrorCodeInvalidInput StorageErrorCodeType = "InvalidInput" + // StorageErrorCodeInvalidMd5 ... + StorageErrorCodeInvalidMd5 StorageErrorCodeType = "InvalidMd5" + // StorageErrorCodeInvalidMetadata ... + StorageErrorCodeInvalidMetadata StorageErrorCodeType = "InvalidMetadata" + // StorageErrorCodeInvalidOperation ... + StorageErrorCodeInvalidOperation StorageErrorCodeType = "InvalidOperation" + // StorageErrorCodeInvalidPageRange ... + StorageErrorCodeInvalidPageRange StorageErrorCodeType = "InvalidPageRange" + // StorageErrorCodeInvalidQueryParameterValue ... + StorageErrorCodeInvalidQueryParameterValue StorageErrorCodeType = "InvalidQueryParameterValue" + // StorageErrorCodeInvalidRange ... + StorageErrorCodeInvalidRange StorageErrorCodeType = "InvalidRange" + // StorageErrorCodeInvalidResourceName ... + StorageErrorCodeInvalidResourceName StorageErrorCodeType = "InvalidResourceName" + // StorageErrorCodeInvalidSourceBlobType ... + StorageErrorCodeInvalidSourceBlobType StorageErrorCodeType = "InvalidSourceBlobType" + // StorageErrorCodeInvalidSourceBlobURL ... + StorageErrorCodeInvalidSourceBlobURL StorageErrorCodeType = "InvalidSourceBlobUrl" + // StorageErrorCodeInvalidURI ... + StorageErrorCodeInvalidURI StorageErrorCodeType = "InvalidUri" + // StorageErrorCodeInvalidVersionForPageBlobOperation ... + StorageErrorCodeInvalidVersionForPageBlobOperation StorageErrorCodeType = "InvalidVersionForPageBlobOperation" + // StorageErrorCodeInvalidXMLDocument ... + StorageErrorCodeInvalidXMLDocument StorageErrorCodeType = "InvalidXmlDocument" + // StorageErrorCodeInvalidXMLNodeValue ... + StorageErrorCodeInvalidXMLNodeValue StorageErrorCodeType = "InvalidXmlNodeValue" + // StorageErrorCodeLeaseAlreadyBroken ... + StorageErrorCodeLeaseAlreadyBroken StorageErrorCodeType = "LeaseAlreadyBroken" + // StorageErrorCodeLeaseAlreadyPresent ... + StorageErrorCodeLeaseAlreadyPresent StorageErrorCodeType = "LeaseAlreadyPresent" + // StorageErrorCodeLeaseIDMismatchWithBlobOperation ... + StorageErrorCodeLeaseIDMismatchWithBlobOperation StorageErrorCodeType = "LeaseIdMismatchWithBlobOperation" + // StorageErrorCodeLeaseIDMismatchWithContainerOperation ... + StorageErrorCodeLeaseIDMismatchWithContainerOperation StorageErrorCodeType = "LeaseIdMismatchWithContainerOperation" + // StorageErrorCodeLeaseIDMismatchWithLeaseOperation ... + StorageErrorCodeLeaseIDMismatchWithLeaseOperation StorageErrorCodeType = "LeaseIdMismatchWithLeaseOperation" + // StorageErrorCodeLeaseIDMissing ... + StorageErrorCodeLeaseIDMissing StorageErrorCodeType = "LeaseIdMissing" + // StorageErrorCodeLeaseIsBreakingAndCannotBeAcquired ... + StorageErrorCodeLeaseIsBreakingAndCannotBeAcquired StorageErrorCodeType = "LeaseIsBreakingAndCannotBeAcquired" + // StorageErrorCodeLeaseIsBreakingAndCannotBeChanged ... + StorageErrorCodeLeaseIsBreakingAndCannotBeChanged StorageErrorCodeType = "LeaseIsBreakingAndCannotBeChanged" + // StorageErrorCodeLeaseIsBrokenAndCannotBeRenewed ... + StorageErrorCodeLeaseIsBrokenAndCannotBeRenewed StorageErrorCodeType = "LeaseIsBrokenAndCannotBeRenewed" + // StorageErrorCodeLeaseLost ... + StorageErrorCodeLeaseLost StorageErrorCodeType = "LeaseLost" + // StorageErrorCodeLeaseNotPresentWithBlobOperation ... + StorageErrorCodeLeaseNotPresentWithBlobOperation StorageErrorCodeType = "LeaseNotPresentWithBlobOperation" + // StorageErrorCodeLeaseNotPresentWithContainerOperation ... + StorageErrorCodeLeaseNotPresentWithContainerOperation StorageErrorCodeType = "LeaseNotPresentWithContainerOperation" + // StorageErrorCodeLeaseNotPresentWithLeaseOperation ... + StorageErrorCodeLeaseNotPresentWithLeaseOperation StorageErrorCodeType = "LeaseNotPresentWithLeaseOperation" + // StorageErrorCodeMaxBlobSizeConditionNotMet ... + StorageErrorCodeMaxBlobSizeConditionNotMet StorageErrorCodeType = "MaxBlobSizeConditionNotMet" + // StorageErrorCodeMd5Mismatch ... + StorageErrorCodeMd5Mismatch StorageErrorCodeType = "Md5Mismatch" + // StorageErrorCodeMetadataTooLarge ... + StorageErrorCodeMetadataTooLarge StorageErrorCodeType = "MetadataTooLarge" + // StorageErrorCodeMissingContentLengthHeader ... + StorageErrorCodeMissingContentLengthHeader StorageErrorCodeType = "MissingContentLengthHeader" + // StorageErrorCodeMissingRequiredHeader ... + StorageErrorCodeMissingRequiredHeader StorageErrorCodeType = "MissingRequiredHeader" + // StorageErrorCodeMissingRequiredQueryParameter ... + StorageErrorCodeMissingRequiredQueryParameter StorageErrorCodeType = "MissingRequiredQueryParameter" + // StorageErrorCodeMissingRequiredXMLNode ... + StorageErrorCodeMissingRequiredXMLNode StorageErrorCodeType = "MissingRequiredXmlNode" + // StorageErrorCodeMultipleConditionHeadersNotSupported ... + StorageErrorCodeMultipleConditionHeadersNotSupported StorageErrorCodeType = "MultipleConditionHeadersNotSupported" + // StorageErrorCodeNone represents an empty StorageErrorCodeType. + StorageErrorCodeNone StorageErrorCodeType = "" + // StorageErrorCodeNoPendingCopyOperation ... + StorageErrorCodeNoPendingCopyOperation StorageErrorCodeType = "NoPendingCopyOperation" + // StorageErrorCodeOperationNotAllowedOnIncrementalCopyBlob ... + StorageErrorCodeOperationNotAllowedOnIncrementalCopyBlob StorageErrorCodeType = "OperationNotAllowedOnIncrementalCopyBlob" + // StorageErrorCodeOperationTimedOut ... + StorageErrorCodeOperationTimedOut StorageErrorCodeType = "OperationTimedOut" + // StorageErrorCodeOutOfRangeInput ... + StorageErrorCodeOutOfRangeInput StorageErrorCodeType = "OutOfRangeInput" + // StorageErrorCodeOutOfRangeQueryParameterValue ... + StorageErrorCodeOutOfRangeQueryParameterValue StorageErrorCodeType = "OutOfRangeQueryParameterValue" + // StorageErrorCodePendingCopyOperation ... + StorageErrorCodePendingCopyOperation StorageErrorCodeType = "PendingCopyOperation" + // StorageErrorCodePreviousSnapshotCannotBeNewer ... + StorageErrorCodePreviousSnapshotCannotBeNewer StorageErrorCodeType = "PreviousSnapshotCannotBeNewer" + // StorageErrorCodePreviousSnapshotNotFound ... + StorageErrorCodePreviousSnapshotNotFound StorageErrorCodeType = "PreviousSnapshotNotFound" + // StorageErrorCodePreviousSnapshotOperationNotSupported ... + StorageErrorCodePreviousSnapshotOperationNotSupported StorageErrorCodeType = "PreviousSnapshotOperationNotSupported" + // StorageErrorCodeRequestBodyTooLarge ... + StorageErrorCodeRequestBodyTooLarge StorageErrorCodeType = "RequestBodyTooLarge" + // StorageErrorCodeRequestURLFailedToParse ... + StorageErrorCodeRequestURLFailedToParse StorageErrorCodeType = "RequestUrlFailedToParse" + // StorageErrorCodeResourceAlreadyExists ... + StorageErrorCodeResourceAlreadyExists StorageErrorCodeType = "ResourceAlreadyExists" + // StorageErrorCodeResourceNotFound ... + StorageErrorCodeResourceNotFound StorageErrorCodeType = "ResourceNotFound" + // StorageErrorCodeResourceTypeMismatch ... + StorageErrorCodeResourceTypeMismatch StorageErrorCodeType = "ResourceTypeMismatch" + // StorageErrorCodeSequenceNumberConditionNotMet ... + StorageErrorCodeSequenceNumberConditionNotMet StorageErrorCodeType = "SequenceNumberConditionNotMet" + // StorageErrorCodeSequenceNumberIncrementTooLarge ... + StorageErrorCodeSequenceNumberIncrementTooLarge StorageErrorCodeType = "SequenceNumberIncrementTooLarge" + // StorageErrorCodeServerBusy ... + StorageErrorCodeServerBusy StorageErrorCodeType = "ServerBusy" + // StorageErrorCodeSnaphotOperationRateExceeded ... + StorageErrorCodeSnaphotOperationRateExceeded StorageErrorCodeType = "SnaphotOperationRateExceeded" + // StorageErrorCodeSnapshotCountExceeded ... + StorageErrorCodeSnapshotCountExceeded StorageErrorCodeType = "SnapshotCountExceeded" + // StorageErrorCodeSnapshotsPresent ... + StorageErrorCodeSnapshotsPresent StorageErrorCodeType = "SnapshotsPresent" + // StorageErrorCodeSourceConditionNotMet ... + StorageErrorCodeSourceConditionNotMet StorageErrorCodeType = "SourceConditionNotMet" + // StorageErrorCodeSystemInUse ... + StorageErrorCodeSystemInUse StorageErrorCodeType = "SystemInUse" + // StorageErrorCodeTargetConditionNotMet ... + StorageErrorCodeTargetConditionNotMet StorageErrorCodeType = "TargetConditionNotMet" + // StorageErrorCodeUnauthorizedBlobOverwrite ... + StorageErrorCodeUnauthorizedBlobOverwrite StorageErrorCodeType = "UnauthorizedBlobOverwrite" + // StorageErrorCodeUnsupportedHeader ... + StorageErrorCodeUnsupportedHeader StorageErrorCodeType = "UnsupportedHeader" + // StorageErrorCodeUnsupportedHTTPVerb ... + StorageErrorCodeUnsupportedHTTPVerb StorageErrorCodeType = "UnsupportedHttpVerb" + // StorageErrorCodeUnsupportedQueryParameter ... + StorageErrorCodeUnsupportedQueryParameter StorageErrorCodeType = "UnsupportedQueryParameter" + // StorageErrorCodeUnsupportedXMLNode ... + StorageErrorCodeUnsupportedXMLNode StorageErrorCodeType = "UnsupportedXmlNode" +) + +// PossibleStorageErrorCodeTypeValues returns an array of possible values for the StorageErrorCodeType const type. +func PossibleStorageErrorCodeTypeValues() []StorageErrorCodeType { + return []StorageErrorCodeType{StorageErrorCodeAccountAlreadyExists, StorageErrorCodeAccountBeingCreated, StorageErrorCodeAccountIsDisabled, StorageErrorCodeAppendPositionConditionNotMet, StorageErrorCodeAuthenticationFailed, StorageErrorCodeAuthorizationFailure, StorageErrorCodeBlobAlreadyExists, StorageErrorCodeBlobArchived, StorageErrorCodeBlobBeingRehydrated, StorageErrorCodeBlobNotArchived, StorageErrorCodeBlobNotFound, StorageErrorCodeBlobOverwritten, StorageErrorCodeBlobTierInadequateForContentLength, StorageErrorCodeBlockCountExceedsLimit, StorageErrorCodeBlockListTooLong, StorageErrorCodeCannotChangeToLowerTier, StorageErrorCodeCannotVerifyCopySource, StorageErrorCodeConditionHeadersNotSupported, StorageErrorCodeConditionNotMet, StorageErrorCodeContainerAlreadyExists, StorageErrorCodeContainerBeingDeleted, StorageErrorCodeContainerDisabled, StorageErrorCodeContainerNotFound, StorageErrorCodeContentLengthLargerThanTierLimit, StorageErrorCodeCopyAcrossAccountsNotSupported, StorageErrorCodeCopyIDMismatch, StorageErrorCodeEmptyMetadataKey, StorageErrorCodeFeatureVersionMismatch, StorageErrorCodeIncrementalCopyBlobMismatch, StorageErrorCodeIncrementalCopyOfEralierVersionSnapshotNotAllowed, StorageErrorCodeIncrementalCopySourceMustBeSnapshot, StorageErrorCodeInfiniteLeaseDurationRequired, StorageErrorCodeInsufficientAccountPermissions, StorageErrorCodeInternalError, StorageErrorCodeInvalidAuthenticationInfo, StorageErrorCodeInvalidBlobOrBlock, StorageErrorCodeInvalidBlobTier, StorageErrorCodeInvalidBlobType, StorageErrorCodeInvalidBlockID, StorageErrorCodeInvalidBlockList, StorageErrorCodeInvalidHeaderValue, StorageErrorCodeInvalidHTTPVerb, StorageErrorCodeInvalidInput, StorageErrorCodeInvalidMd5, StorageErrorCodeInvalidMetadata, StorageErrorCodeInvalidOperation, StorageErrorCodeInvalidPageRange, StorageErrorCodeInvalidQueryParameterValue, StorageErrorCodeInvalidRange, StorageErrorCodeInvalidResourceName, StorageErrorCodeInvalidSourceBlobType, StorageErrorCodeInvalidSourceBlobURL, StorageErrorCodeInvalidURI, StorageErrorCodeInvalidVersionForPageBlobOperation, StorageErrorCodeInvalidXMLDocument, StorageErrorCodeInvalidXMLNodeValue, StorageErrorCodeLeaseAlreadyBroken, StorageErrorCodeLeaseAlreadyPresent, StorageErrorCodeLeaseIDMismatchWithBlobOperation, StorageErrorCodeLeaseIDMismatchWithContainerOperation, StorageErrorCodeLeaseIDMismatchWithLeaseOperation, StorageErrorCodeLeaseIDMissing, StorageErrorCodeLeaseIsBreakingAndCannotBeAcquired, StorageErrorCodeLeaseIsBreakingAndCannotBeChanged, StorageErrorCodeLeaseIsBrokenAndCannotBeRenewed, StorageErrorCodeLeaseLost, StorageErrorCodeLeaseNotPresentWithBlobOperation, StorageErrorCodeLeaseNotPresentWithContainerOperation, StorageErrorCodeLeaseNotPresentWithLeaseOperation, StorageErrorCodeMaxBlobSizeConditionNotMet, StorageErrorCodeMd5Mismatch, StorageErrorCodeMetadataTooLarge, StorageErrorCodeMissingContentLengthHeader, StorageErrorCodeMissingRequiredHeader, StorageErrorCodeMissingRequiredQueryParameter, StorageErrorCodeMissingRequiredXMLNode, StorageErrorCodeMultipleConditionHeadersNotSupported, StorageErrorCodeNone, StorageErrorCodeNoPendingCopyOperation, StorageErrorCodeOperationNotAllowedOnIncrementalCopyBlob, StorageErrorCodeOperationTimedOut, StorageErrorCodeOutOfRangeInput, StorageErrorCodeOutOfRangeQueryParameterValue, StorageErrorCodePendingCopyOperation, StorageErrorCodePreviousSnapshotCannotBeNewer, StorageErrorCodePreviousSnapshotNotFound, StorageErrorCodePreviousSnapshotOperationNotSupported, StorageErrorCodeRequestBodyTooLarge, StorageErrorCodeRequestURLFailedToParse, StorageErrorCodeResourceAlreadyExists, StorageErrorCodeResourceNotFound, StorageErrorCodeResourceTypeMismatch, StorageErrorCodeSequenceNumberConditionNotMet, StorageErrorCodeSequenceNumberIncrementTooLarge, StorageErrorCodeServerBusy, StorageErrorCodeSnaphotOperationRateExceeded, StorageErrorCodeSnapshotCountExceeded, StorageErrorCodeSnapshotsPresent, StorageErrorCodeSourceConditionNotMet, StorageErrorCodeSystemInUse, StorageErrorCodeTargetConditionNotMet, StorageErrorCodeUnauthorizedBlobOverwrite, StorageErrorCodeUnsupportedHeader, StorageErrorCodeUnsupportedHTTPVerb, StorageErrorCodeUnsupportedQueryParameter, StorageErrorCodeUnsupportedXMLNode} +} + +// SyncCopyStatusType enumerates the values for sync copy status type. +type SyncCopyStatusType string + +const ( + // SyncCopyStatusNone represents an empty SyncCopyStatusType. + SyncCopyStatusNone SyncCopyStatusType = "" + // SyncCopyStatusSuccess ... + SyncCopyStatusSuccess SyncCopyStatusType = "success" +) + +// PossibleSyncCopyStatusTypeValues returns an array of possible values for the SyncCopyStatusType const type. +func PossibleSyncCopyStatusTypeValues() []SyncCopyStatusType { + return []SyncCopyStatusType{SyncCopyStatusNone, SyncCopyStatusSuccess} +} + +// AccessPolicy - An Access policy +type AccessPolicy struct { + // Start - the date-time the policy is active + Start time.Time `xml:"Start"` + // Expiry - the date-time the policy expires + Expiry time.Time `xml:"Expiry"` + // Permission - the permissions for the acl policy + Permission string `xml:"Permission"` +} + +// MarshalXML implements the xml.Marshaler interface for AccessPolicy. +func (ap AccessPolicy) MarshalXML(e *xml.Encoder, start xml.StartElement) error { + ap2 := (*accessPolicy)(unsafe.Pointer(&ap)) + return e.EncodeElement(*ap2, start) +} + +// UnmarshalXML implements the xml.Unmarshaler interface for AccessPolicy. +func (ap *AccessPolicy) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { + ap2 := (*accessPolicy)(unsafe.Pointer(ap)) + return d.DecodeElement(ap2, &start) +} + +// AppendBlobAppendBlockFromURLResponse ... +type AppendBlobAppendBlockFromURLResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (ababfur AppendBlobAppendBlockFromURLResponse) Response() *http.Response { + return ababfur.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (ababfur AppendBlobAppendBlockFromURLResponse) StatusCode() int { + return ababfur.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (ababfur AppendBlobAppendBlockFromURLResponse) Status() string { + return ababfur.rawResponse.Status +} + +// BlobAppendOffset returns the value for header x-ms-blob-append-offset. +func (ababfur AppendBlobAppendBlockFromURLResponse) BlobAppendOffset() string { + return ababfur.rawResponse.Header.Get("x-ms-blob-append-offset") +} + +// BlobCommittedBlockCount returns the value for header x-ms-blob-committed-block-count. +func (ababfur AppendBlobAppendBlockFromURLResponse) BlobCommittedBlockCount() int32 { + s := ababfur.rawResponse.Header.Get("x-ms-blob-committed-block-count") + if s == "" { + return -1 + } + i, err := strconv.ParseInt(s, 10, 32) + if err != nil { + i = 0 + } + return int32(i) +} + +// ContentMD5 returns the value for header Content-MD5. +func (ababfur AppendBlobAppendBlockFromURLResponse) ContentMD5() []byte { + s := ababfur.rawResponse.Header.Get("Content-MD5") + if s == "" { + return nil + } + b, err := base64.StdEncoding.DecodeString(s) + if err != nil { + b = nil + } + return b +} + +// Date returns the value for header Date. +func (ababfur AppendBlobAppendBlockFromURLResponse) Date() time.Time { + s := ababfur.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (ababfur AppendBlobAppendBlockFromURLResponse) ErrorCode() string { + return ababfur.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (ababfur AppendBlobAppendBlockFromURLResponse) ETag() ETag { + return ETag(ababfur.rawResponse.Header.Get("ETag")) +} + +// LastModified returns the value for header Last-Modified. +func (ababfur AppendBlobAppendBlockFromURLResponse) LastModified() time.Time { + s := ababfur.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// RequestID returns the value for header x-ms-request-id. +func (ababfur AppendBlobAppendBlockFromURLResponse) RequestID() string { + return ababfur.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (ababfur AppendBlobAppendBlockFromURLResponse) Version() string { + return ababfur.rawResponse.Header.Get("x-ms-version") +} + +// AppendBlobAppendBlockResponse ... +type AppendBlobAppendBlockResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (ababr AppendBlobAppendBlockResponse) Response() *http.Response { + return ababr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (ababr AppendBlobAppendBlockResponse) StatusCode() int { + return ababr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (ababr AppendBlobAppendBlockResponse) Status() string { + return ababr.rawResponse.Status +} + +// BlobAppendOffset returns the value for header x-ms-blob-append-offset. +func (ababr AppendBlobAppendBlockResponse) BlobAppendOffset() string { + return ababr.rawResponse.Header.Get("x-ms-blob-append-offset") +} + +// BlobCommittedBlockCount returns the value for header x-ms-blob-committed-block-count. +func (ababr AppendBlobAppendBlockResponse) BlobCommittedBlockCount() int32 { + s := ababr.rawResponse.Header.Get("x-ms-blob-committed-block-count") + if s == "" { + return -1 + } + i, err := strconv.ParseInt(s, 10, 32) + if err != nil { + i = 0 + } + return int32(i) +} + +// ContentMD5 returns the value for header Content-MD5. +func (ababr AppendBlobAppendBlockResponse) ContentMD5() []byte { + s := ababr.rawResponse.Header.Get("Content-MD5") + if s == "" { + return nil + } + b, err := base64.StdEncoding.DecodeString(s) + if err != nil { + b = nil + } + return b +} + +// Date returns the value for header Date. +func (ababr AppendBlobAppendBlockResponse) Date() time.Time { + s := ababr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (ababr AppendBlobAppendBlockResponse) ErrorCode() string { + return ababr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (ababr AppendBlobAppendBlockResponse) ETag() ETag { + return ETag(ababr.rawResponse.Header.Get("ETag")) +} + +// IsServerEncrypted returns the value for header x-ms-request-server-encrypted. +func (ababr AppendBlobAppendBlockResponse) IsServerEncrypted() string { + return ababr.rawResponse.Header.Get("x-ms-request-server-encrypted") +} + +// LastModified returns the value for header Last-Modified. +func (ababr AppendBlobAppendBlockResponse) LastModified() time.Time { + s := ababr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// RequestID returns the value for header x-ms-request-id. +func (ababr AppendBlobAppendBlockResponse) RequestID() string { + return ababr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (ababr AppendBlobAppendBlockResponse) Version() string { + return ababr.rawResponse.Header.Get("x-ms-version") +} + +// AppendBlobCreateResponse ... +type AppendBlobCreateResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (abcr AppendBlobCreateResponse) Response() *http.Response { + return abcr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (abcr AppendBlobCreateResponse) StatusCode() int { + return abcr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (abcr AppendBlobCreateResponse) Status() string { + return abcr.rawResponse.Status +} + +// ContentMD5 returns the value for header Content-MD5. +func (abcr AppendBlobCreateResponse) ContentMD5() []byte { + s := abcr.rawResponse.Header.Get("Content-MD5") + if s == "" { + return nil + } + b, err := base64.StdEncoding.DecodeString(s) + if err != nil { + b = nil + } + return b +} + +// Date returns the value for header Date. +func (abcr AppendBlobCreateResponse) Date() time.Time { + s := abcr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (abcr AppendBlobCreateResponse) ErrorCode() string { + return abcr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (abcr AppendBlobCreateResponse) ETag() ETag { + return ETag(abcr.rawResponse.Header.Get("ETag")) +} + +// IsServerEncrypted returns the value for header x-ms-request-server-encrypted. +func (abcr AppendBlobCreateResponse) IsServerEncrypted() string { + return abcr.rawResponse.Header.Get("x-ms-request-server-encrypted") +} + +// LastModified returns the value for header Last-Modified. +func (abcr AppendBlobCreateResponse) LastModified() time.Time { + s := abcr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// RequestID returns the value for header x-ms-request-id. +func (abcr AppendBlobCreateResponse) RequestID() string { + return abcr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (abcr AppendBlobCreateResponse) Version() string { + return abcr.rawResponse.Header.Get("x-ms-version") +} + +// BlobAbortCopyFromURLResponse ... +type BlobAbortCopyFromURLResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (bacfur BlobAbortCopyFromURLResponse) Response() *http.Response { + return bacfur.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (bacfur BlobAbortCopyFromURLResponse) StatusCode() int { + return bacfur.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (bacfur BlobAbortCopyFromURLResponse) Status() string { + return bacfur.rawResponse.Status +} + +// Date returns the value for header Date. +func (bacfur BlobAbortCopyFromURLResponse) Date() time.Time { + s := bacfur.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (bacfur BlobAbortCopyFromURLResponse) ErrorCode() string { + return bacfur.rawResponse.Header.Get("x-ms-error-code") +} + +// RequestID returns the value for header x-ms-request-id. +func (bacfur BlobAbortCopyFromURLResponse) RequestID() string { + return bacfur.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (bacfur BlobAbortCopyFromURLResponse) Version() string { + return bacfur.rawResponse.Header.Get("x-ms-version") +} + +// BlobAcquireLeaseResponse ... +type BlobAcquireLeaseResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (balr BlobAcquireLeaseResponse) Response() *http.Response { + return balr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (balr BlobAcquireLeaseResponse) StatusCode() int { + return balr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (balr BlobAcquireLeaseResponse) Status() string { + return balr.rawResponse.Status +} + +// Date returns the value for header Date. +func (balr BlobAcquireLeaseResponse) Date() time.Time { + s := balr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (balr BlobAcquireLeaseResponse) ErrorCode() string { + return balr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (balr BlobAcquireLeaseResponse) ETag() ETag { + return ETag(balr.rawResponse.Header.Get("ETag")) +} + +// LastModified returns the value for header Last-Modified. +func (balr BlobAcquireLeaseResponse) LastModified() time.Time { + s := balr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// LeaseID returns the value for header x-ms-lease-id. +func (balr BlobAcquireLeaseResponse) LeaseID() string { + return balr.rawResponse.Header.Get("x-ms-lease-id") +} + +// RequestID returns the value for header x-ms-request-id. +func (balr BlobAcquireLeaseResponse) RequestID() string { + return balr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (balr BlobAcquireLeaseResponse) Version() string { + return balr.rawResponse.Header.Get("x-ms-version") +} + +// BlobBreakLeaseResponse ... +type BlobBreakLeaseResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (bblr BlobBreakLeaseResponse) Response() *http.Response { + return bblr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (bblr BlobBreakLeaseResponse) StatusCode() int { + return bblr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (bblr BlobBreakLeaseResponse) Status() string { + return bblr.rawResponse.Status +} + +// Date returns the value for header Date. +func (bblr BlobBreakLeaseResponse) Date() time.Time { + s := bblr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (bblr BlobBreakLeaseResponse) ErrorCode() string { + return bblr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (bblr BlobBreakLeaseResponse) ETag() ETag { + return ETag(bblr.rawResponse.Header.Get("ETag")) +} + +// LastModified returns the value for header Last-Modified. +func (bblr BlobBreakLeaseResponse) LastModified() time.Time { + s := bblr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// LeaseTime returns the value for header x-ms-lease-time. +func (bblr BlobBreakLeaseResponse) LeaseTime() int32 { + s := bblr.rawResponse.Header.Get("x-ms-lease-time") + if s == "" { + return -1 + } + i, err := strconv.ParseInt(s, 10, 32) + if err != nil { + i = 0 + } + return int32(i) +} + +// RequestID returns the value for header x-ms-request-id. +func (bblr BlobBreakLeaseResponse) RequestID() string { + return bblr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (bblr BlobBreakLeaseResponse) Version() string { + return bblr.rawResponse.Header.Get("x-ms-version") +} + +// BlobChangeLeaseResponse ... +type BlobChangeLeaseResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (bclr BlobChangeLeaseResponse) Response() *http.Response { + return bclr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (bclr BlobChangeLeaseResponse) StatusCode() int { + return bclr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (bclr BlobChangeLeaseResponse) Status() string { + return bclr.rawResponse.Status +} + +// Date returns the value for header Date. +func (bclr BlobChangeLeaseResponse) Date() time.Time { + s := bclr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (bclr BlobChangeLeaseResponse) ErrorCode() string { + return bclr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (bclr BlobChangeLeaseResponse) ETag() ETag { + return ETag(bclr.rawResponse.Header.Get("ETag")) +} + +// LastModified returns the value for header Last-Modified. +func (bclr BlobChangeLeaseResponse) LastModified() time.Time { + s := bclr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// LeaseID returns the value for header x-ms-lease-id. +func (bclr BlobChangeLeaseResponse) LeaseID() string { + return bclr.rawResponse.Header.Get("x-ms-lease-id") +} + +// RequestID returns the value for header x-ms-request-id. +func (bclr BlobChangeLeaseResponse) RequestID() string { + return bclr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (bclr BlobChangeLeaseResponse) Version() string { + return bclr.rawResponse.Header.Get("x-ms-version") +} + +// BlobCopyFromURLResponse ... +type BlobCopyFromURLResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (bcfur BlobCopyFromURLResponse) Response() *http.Response { + return bcfur.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (bcfur BlobCopyFromURLResponse) StatusCode() int { + return bcfur.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (bcfur BlobCopyFromURLResponse) Status() string { + return bcfur.rawResponse.Status +} + +// CopyID returns the value for header x-ms-copy-id. +func (bcfur BlobCopyFromURLResponse) CopyID() string { + return bcfur.rawResponse.Header.Get("x-ms-copy-id") +} + +// CopyStatus returns the value for header x-ms-copy-status. +func (bcfur BlobCopyFromURLResponse) CopyStatus() SyncCopyStatusType { + return SyncCopyStatusType(bcfur.rawResponse.Header.Get("x-ms-copy-status")) +} + +// Date returns the value for header Date. +func (bcfur BlobCopyFromURLResponse) Date() time.Time { + s := bcfur.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (bcfur BlobCopyFromURLResponse) ErrorCode() string { + return bcfur.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (bcfur BlobCopyFromURLResponse) ETag() ETag { + return ETag(bcfur.rawResponse.Header.Get("ETag")) +} + +// LastModified returns the value for header Last-Modified. +func (bcfur BlobCopyFromURLResponse) LastModified() time.Time { + s := bcfur.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// RequestID returns the value for header x-ms-request-id. +func (bcfur BlobCopyFromURLResponse) RequestID() string { + return bcfur.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (bcfur BlobCopyFromURLResponse) Version() string { + return bcfur.rawResponse.Header.Get("x-ms-version") +} + +// BlobCreateSnapshotResponse ... +type BlobCreateSnapshotResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (bcsr BlobCreateSnapshotResponse) Response() *http.Response { + return bcsr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (bcsr BlobCreateSnapshotResponse) StatusCode() int { + return bcsr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (bcsr BlobCreateSnapshotResponse) Status() string { + return bcsr.rawResponse.Status +} + +// Date returns the value for header Date. +func (bcsr BlobCreateSnapshotResponse) Date() time.Time { + s := bcsr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (bcsr BlobCreateSnapshotResponse) ErrorCode() string { + return bcsr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (bcsr BlobCreateSnapshotResponse) ETag() ETag { + return ETag(bcsr.rawResponse.Header.Get("ETag")) +} + +// LastModified returns the value for header Last-Modified. +func (bcsr BlobCreateSnapshotResponse) LastModified() time.Time { + s := bcsr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// RequestID returns the value for header x-ms-request-id. +func (bcsr BlobCreateSnapshotResponse) RequestID() string { + return bcsr.rawResponse.Header.Get("x-ms-request-id") +} + +// Snapshot returns the value for header x-ms-snapshot. +func (bcsr BlobCreateSnapshotResponse) Snapshot() string { + return bcsr.rawResponse.Header.Get("x-ms-snapshot") +} + +// Version returns the value for header x-ms-version. +func (bcsr BlobCreateSnapshotResponse) Version() string { + return bcsr.rawResponse.Header.Get("x-ms-version") +} + +// BlobDeleteResponse ... +type BlobDeleteResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (bdr BlobDeleteResponse) Response() *http.Response { + return bdr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (bdr BlobDeleteResponse) StatusCode() int { + return bdr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (bdr BlobDeleteResponse) Status() string { + return bdr.rawResponse.Status +} + +// Date returns the value for header Date. +func (bdr BlobDeleteResponse) Date() time.Time { + s := bdr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (bdr BlobDeleteResponse) ErrorCode() string { + return bdr.rawResponse.Header.Get("x-ms-error-code") +} + +// RequestID returns the value for header x-ms-request-id. +func (bdr BlobDeleteResponse) RequestID() string { + return bdr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (bdr BlobDeleteResponse) Version() string { + return bdr.rawResponse.Header.Get("x-ms-version") +} + +// BlobFlatListSegment ... +type BlobFlatListSegment struct { + // XMLName is used for marshalling and is subject to removal in a future release. + XMLName xml.Name `xml:"Blobs"` + BlobItems []BlobItem `xml:"Blob"` +} + +// BlobGetAccountInfoResponse ... +type BlobGetAccountInfoResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (bgair BlobGetAccountInfoResponse) Response() *http.Response { + return bgair.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (bgair BlobGetAccountInfoResponse) StatusCode() int { + return bgair.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (bgair BlobGetAccountInfoResponse) Status() string { + return bgair.rawResponse.Status +} + +// AccountKind returns the value for header x-ms-account-kind. +func (bgair BlobGetAccountInfoResponse) AccountKind() AccountKindType { + return AccountKindType(bgair.rawResponse.Header.Get("x-ms-account-kind")) +} + +// Date returns the value for header Date. +func (bgair BlobGetAccountInfoResponse) Date() time.Time { + s := bgair.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (bgair BlobGetAccountInfoResponse) ErrorCode() string { + return bgair.rawResponse.Header.Get("x-ms-error-code") +} + +// RequestID returns the value for header x-ms-request-id. +func (bgair BlobGetAccountInfoResponse) RequestID() string { + return bgair.rawResponse.Header.Get("x-ms-request-id") +} + +// SkuName returns the value for header x-ms-sku-name. +func (bgair BlobGetAccountInfoResponse) SkuName() SkuNameType { + return SkuNameType(bgair.rawResponse.Header.Get("x-ms-sku-name")) +} + +// Version returns the value for header x-ms-version. +func (bgair BlobGetAccountInfoResponse) Version() string { + return bgair.rawResponse.Header.Get("x-ms-version") +} + +// BlobGetPropertiesResponse ... +type BlobGetPropertiesResponse struct { + rawResponse *http.Response +} + +// NewMetadata returns user-defined key/value pairs. +func (bgpr BlobGetPropertiesResponse) NewMetadata() Metadata { + md := Metadata{} + for k, v := range bgpr.rawResponse.Header { + if len(k) > mdPrefixLen { + if prefix := k[0:mdPrefixLen]; strings.EqualFold(prefix, mdPrefix) { + md[strings.ToLower(k[mdPrefixLen:])] = v[0] + } + } + } + return md +} + +// Response returns the raw HTTP response object. +func (bgpr BlobGetPropertiesResponse) Response() *http.Response { + return bgpr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (bgpr BlobGetPropertiesResponse) StatusCode() int { + return bgpr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (bgpr BlobGetPropertiesResponse) Status() string { + return bgpr.rawResponse.Status +} + +// AcceptRanges returns the value for header Accept-Ranges. +func (bgpr BlobGetPropertiesResponse) AcceptRanges() string { + return bgpr.rawResponse.Header.Get("Accept-Ranges") +} + +// AccessTier returns the value for header x-ms-access-tier. +func (bgpr BlobGetPropertiesResponse) AccessTier() string { + return bgpr.rawResponse.Header.Get("x-ms-access-tier") +} + +// AccessTierChangeTime returns the value for header x-ms-access-tier-change-time. +func (bgpr BlobGetPropertiesResponse) AccessTierChangeTime() time.Time { + s := bgpr.rawResponse.Header.Get("x-ms-access-tier-change-time") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// AccessTierInferred returns the value for header x-ms-access-tier-inferred. +func (bgpr BlobGetPropertiesResponse) AccessTierInferred() string { + return bgpr.rawResponse.Header.Get("x-ms-access-tier-inferred") +} + +// ArchiveStatus returns the value for header x-ms-archive-status. +func (bgpr BlobGetPropertiesResponse) ArchiveStatus() string { + return bgpr.rawResponse.Header.Get("x-ms-archive-status") +} + +// BlobCommittedBlockCount returns the value for header x-ms-blob-committed-block-count. +func (bgpr BlobGetPropertiesResponse) BlobCommittedBlockCount() int32 { + s := bgpr.rawResponse.Header.Get("x-ms-blob-committed-block-count") + if s == "" { + return -1 + } + i, err := strconv.ParseInt(s, 10, 32) + if err != nil { + i = 0 + } + return int32(i) +} + +// BlobSequenceNumber returns the value for header x-ms-blob-sequence-number. +func (bgpr BlobGetPropertiesResponse) BlobSequenceNumber() int64 { + s := bgpr.rawResponse.Header.Get("x-ms-blob-sequence-number") + if s == "" { + return -1 + } + i, err := strconv.ParseInt(s, 10, 64) + if err != nil { + i = 0 + } + return i +} + +// BlobType returns the value for header x-ms-blob-type. +func (bgpr BlobGetPropertiesResponse) BlobType() BlobType { + return BlobType(bgpr.rawResponse.Header.Get("x-ms-blob-type")) +} + +// CacheControl returns the value for header Cache-Control. +func (bgpr BlobGetPropertiesResponse) CacheControl() string { + return bgpr.rawResponse.Header.Get("Cache-Control") +} + +// ContentDisposition returns the value for header Content-Disposition. +func (bgpr BlobGetPropertiesResponse) ContentDisposition() string { + return bgpr.rawResponse.Header.Get("Content-Disposition") +} + +// ContentEncoding returns the value for header Content-Encoding. +func (bgpr BlobGetPropertiesResponse) ContentEncoding() string { + return bgpr.rawResponse.Header.Get("Content-Encoding") +} + +// ContentLanguage returns the value for header Content-Language. +func (bgpr BlobGetPropertiesResponse) ContentLanguage() string { + return bgpr.rawResponse.Header.Get("Content-Language") +} + +// ContentLength returns the value for header Content-Length. +func (bgpr BlobGetPropertiesResponse) ContentLength() int64 { + s := bgpr.rawResponse.Header.Get("Content-Length") + if s == "" { + return -1 + } + i, err := strconv.ParseInt(s, 10, 64) + if err != nil { + i = 0 + } + return i +} + +// ContentMD5 returns the value for header Content-MD5. +func (bgpr BlobGetPropertiesResponse) ContentMD5() []byte { + s := bgpr.rawResponse.Header.Get("Content-MD5") + if s == "" { + return nil + } + b, err := base64.StdEncoding.DecodeString(s) + if err != nil { + b = nil + } + return b +} + +// ContentType returns the value for header Content-Type. +func (bgpr BlobGetPropertiesResponse) ContentType() string { + return bgpr.rawResponse.Header.Get("Content-Type") +} + +// CopyCompletionTime returns the value for header x-ms-copy-completion-time. +func (bgpr BlobGetPropertiesResponse) CopyCompletionTime() time.Time { + s := bgpr.rawResponse.Header.Get("x-ms-copy-completion-time") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// CopyID returns the value for header x-ms-copy-id. +func (bgpr BlobGetPropertiesResponse) CopyID() string { + return bgpr.rawResponse.Header.Get("x-ms-copy-id") +} + +// CopyProgress returns the value for header x-ms-copy-progress. +func (bgpr BlobGetPropertiesResponse) CopyProgress() string { + return bgpr.rawResponse.Header.Get("x-ms-copy-progress") +} + +// CopySource returns the value for header x-ms-copy-source. +func (bgpr BlobGetPropertiesResponse) CopySource() string { + return bgpr.rawResponse.Header.Get("x-ms-copy-source") +} + +// CopyStatus returns the value for header x-ms-copy-status. +func (bgpr BlobGetPropertiesResponse) CopyStatus() CopyStatusType { + return CopyStatusType(bgpr.rawResponse.Header.Get("x-ms-copy-status")) +} + +// CopyStatusDescription returns the value for header x-ms-copy-status-description. +func (bgpr BlobGetPropertiesResponse) CopyStatusDescription() string { + return bgpr.rawResponse.Header.Get("x-ms-copy-status-description") +} + +// CreationTime returns the value for header x-ms-creation-time. +func (bgpr BlobGetPropertiesResponse) CreationTime() time.Time { + s := bgpr.rawResponse.Header.Get("x-ms-creation-time") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// Date returns the value for header Date. +func (bgpr BlobGetPropertiesResponse) Date() time.Time { + s := bgpr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// DestinationSnapshot returns the value for header x-ms-copy-destination-snapshot. +func (bgpr BlobGetPropertiesResponse) DestinationSnapshot() string { + return bgpr.rawResponse.Header.Get("x-ms-copy-destination-snapshot") +} + +// ErrorCode returns the value for header x-ms-error-code. +func (bgpr BlobGetPropertiesResponse) ErrorCode() string { + return bgpr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (bgpr BlobGetPropertiesResponse) ETag() ETag { + return ETag(bgpr.rawResponse.Header.Get("ETag")) +} + +// IsIncrementalCopy returns the value for header x-ms-incremental-copy. +func (bgpr BlobGetPropertiesResponse) IsIncrementalCopy() string { + return bgpr.rawResponse.Header.Get("x-ms-incremental-copy") +} + +// IsServerEncrypted returns the value for header x-ms-server-encrypted. +func (bgpr BlobGetPropertiesResponse) IsServerEncrypted() string { + return bgpr.rawResponse.Header.Get("x-ms-server-encrypted") +} + +// LastModified returns the value for header Last-Modified. +func (bgpr BlobGetPropertiesResponse) LastModified() time.Time { + s := bgpr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// LeaseDuration returns the value for header x-ms-lease-duration. +func (bgpr BlobGetPropertiesResponse) LeaseDuration() LeaseDurationType { + return LeaseDurationType(bgpr.rawResponse.Header.Get("x-ms-lease-duration")) +} + +// LeaseState returns the value for header x-ms-lease-state. +func (bgpr BlobGetPropertiesResponse) LeaseState() LeaseStateType { + return LeaseStateType(bgpr.rawResponse.Header.Get("x-ms-lease-state")) +} + +// LeaseStatus returns the value for header x-ms-lease-status. +func (bgpr BlobGetPropertiesResponse) LeaseStatus() LeaseStatusType { + return LeaseStatusType(bgpr.rawResponse.Header.Get("x-ms-lease-status")) +} + +// RequestID returns the value for header x-ms-request-id. +func (bgpr BlobGetPropertiesResponse) RequestID() string { + return bgpr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (bgpr BlobGetPropertiesResponse) Version() string { + return bgpr.rawResponse.Header.Get("x-ms-version") +} + +// BlobHierarchyListSegment ... +type BlobHierarchyListSegment struct { + // XMLName is used for marshalling and is subject to removal in a future release. + XMLName xml.Name `xml:"Blobs"` + BlobPrefixes []BlobPrefix `xml:"BlobPrefix"` + BlobItems []BlobItem `xml:"Blob"` +} + +// BlobItem - An Azure Storage blob +type BlobItem struct { + // XMLName is used for marshalling and is subject to removal in a future release. + XMLName xml.Name `xml:"Blob"` + Name string `xml:"Name"` + Deleted bool `xml:"Deleted"` + Snapshot string `xml:"Snapshot"` + Properties BlobProperties `xml:"Properties"` + Metadata Metadata `xml:"Metadata"` +} + +// BlobPrefix ... +type BlobPrefix struct { + Name string `xml:"Name"` +} + +// BlobProperties - Properties of a blob +type BlobProperties struct { + // XMLName is used for marshalling and is subject to removal in a future release. + XMLName xml.Name `xml:"Properties"` + CreationTime *time.Time `xml:"Creation-Time"` + LastModified time.Time `xml:"Last-Modified"` + Etag ETag `xml:"Etag"` + // ContentLength - Size in bytes + ContentLength *int64 `xml:"Content-Length"` + ContentType *string `xml:"Content-Type"` + ContentEncoding *string `xml:"Content-Encoding"` + ContentLanguage *string `xml:"Content-Language"` + ContentMD5 []byte `xml:"Content-MD5"` + ContentDisposition *string `xml:"Content-Disposition"` + CacheControl *string `xml:"Cache-Control"` + BlobSequenceNumber *int64 `xml:"x-ms-blob-sequence-number"` + // BlobType - Possible values include: 'BlobBlockBlob', 'BlobPageBlob', 'BlobAppendBlob', 'BlobNone' + BlobType BlobType `xml:"BlobType"` + // LeaseStatus - Possible values include: 'LeaseStatusLocked', 'LeaseStatusUnlocked', 'LeaseStatusNone' + LeaseStatus LeaseStatusType `xml:"LeaseStatus"` + // LeaseState - Possible values include: 'LeaseStateAvailable', 'LeaseStateLeased', 'LeaseStateExpired', 'LeaseStateBreaking', 'LeaseStateBroken', 'LeaseStateNone' + LeaseState LeaseStateType `xml:"LeaseState"` + // LeaseDuration - Possible values include: 'LeaseDurationInfinite', 'LeaseDurationFixed', 'LeaseDurationNone' + LeaseDuration LeaseDurationType `xml:"LeaseDuration"` + CopyID *string `xml:"CopyId"` + // CopyStatus - Possible values include: 'CopyStatusPending', 'CopyStatusSuccess', 'CopyStatusAborted', 'CopyStatusFailed', 'CopyStatusNone' + CopyStatus CopyStatusType `xml:"CopyStatus"` + CopySource *string `xml:"CopySource"` + CopyProgress *string `xml:"CopyProgress"` + CopyCompletionTime *time.Time `xml:"CopyCompletionTime"` + CopyStatusDescription *string `xml:"CopyStatusDescription"` + ServerEncrypted *bool `xml:"ServerEncrypted"` + IncrementalCopy *bool `xml:"IncrementalCopy"` + DestinationSnapshot *string `xml:"DestinationSnapshot"` + DeletedTime *time.Time `xml:"DeletedTime"` + RemainingRetentionDays *int32 `xml:"RemainingRetentionDays"` + // AccessTier - Possible values include: 'AccessTierP4', 'AccessTierP6', 'AccessTierP10', 'AccessTierP20', 'AccessTierP30', 'AccessTierP40', 'AccessTierP50', 'AccessTierHot', 'AccessTierCool', 'AccessTierArchive', 'AccessTierNone' + AccessTier AccessTierType `xml:"AccessTier"` + AccessTierInferred *bool `xml:"AccessTierInferred"` + // ArchiveStatus - Possible values include: 'ArchiveStatusRehydratePendingToHot', 'ArchiveStatusRehydratePendingToCool', 'ArchiveStatusNone' + ArchiveStatus ArchiveStatusType `xml:"ArchiveStatus"` + AccessTierChangeTime *time.Time `xml:"AccessTierChangeTime"` +} + +// MarshalXML implements the xml.Marshaler interface for BlobProperties. +func (bp BlobProperties) MarshalXML(e *xml.Encoder, start xml.StartElement) error { + bp2 := (*blobProperties)(unsafe.Pointer(&bp)) + return e.EncodeElement(*bp2, start) +} + +// UnmarshalXML implements the xml.Unmarshaler interface for BlobProperties. +func (bp *BlobProperties) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { + bp2 := (*blobProperties)(unsafe.Pointer(bp)) + return d.DecodeElement(bp2, &start) +} + +// BlobReleaseLeaseResponse ... +type BlobReleaseLeaseResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (brlr BlobReleaseLeaseResponse) Response() *http.Response { + return brlr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (brlr BlobReleaseLeaseResponse) StatusCode() int { + return brlr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (brlr BlobReleaseLeaseResponse) Status() string { + return brlr.rawResponse.Status +} + +// Date returns the value for header Date. +func (brlr BlobReleaseLeaseResponse) Date() time.Time { + s := brlr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (brlr BlobReleaseLeaseResponse) ErrorCode() string { + return brlr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (brlr BlobReleaseLeaseResponse) ETag() ETag { + return ETag(brlr.rawResponse.Header.Get("ETag")) +} + +// LastModified returns the value for header Last-Modified. +func (brlr BlobReleaseLeaseResponse) LastModified() time.Time { + s := brlr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// RequestID returns the value for header x-ms-request-id. +func (brlr BlobReleaseLeaseResponse) RequestID() string { + return brlr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (brlr BlobReleaseLeaseResponse) Version() string { + return brlr.rawResponse.Header.Get("x-ms-version") +} + +// BlobRenewLeaseResponse ... +type BlobRenewLeaseResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (brlr BlobRenewLeaseResponse) Response() *http.Response { + return brlr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (brlr BlobRenewLeaseResponse) StatusCode() int { + return brlr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (brlr BlobRenewLeaseResponse) Status() string { + return brlr.rawResponse.Status +} + +// Date returns the value for header Date. +func (brlr BlobRenewLeaseResponse) Date() time.Time { + s := brlr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (brlr BlobRenewLeaseResponse) ErrorCode() string { + return brlr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (brlr BlobRenewLeaseResponse) ETag() ETag { + return ETag(brlr.rawResponse.Header.Get("ETag")) +} + +// LastModified returns the value for header Last-Modified. +func (brlr BlobRenewLeaseResponse) LastModified() time.Time { + s := brlr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// LeaseID returns the value for header x-ms-lease-id. +func (brlr BlobRenewLeaseResponse) LeaseID() string { + return brlr.rawResponse.Header.Get("x-ms-lease-id") +} + +// RequestID returns the value for header x-ms-request-id. +func (brlr BlobRenewLeaseResponse) RequestID() string { + return brlr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (brlr BlobRenewLeaseResponse) Version() string { + return brlr.rawResponse.Header.Get("x-ms-version") +} + +// BlobSetHTTPHeadersResponse ... +type BlobSetHTTPHeadersResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (bshhr BlobSetHTTPHeadersResponse) Response() *http.Response { + return bshhr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (bshhr BlobSetHTTPHeadersResponse) StatusCode() int { + return bshhr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (bshhr BlobSetHTTPHeadersResponse) Status() string { + return bshhr.rawResponse.Status +} + +// BlobSequenceNumber returns the value for header x-ms-blob-sequence-number. +func (bshhr BlobSetHTTPHeadersResponse) BlobSequenceNumber() int64 { + s := bshhr.rawResponse.Header.Get("x-ms-blob-sequence-number") + if s == "" { + return -1 + } + i, err := strconv.ParseInt(s, 10, 64) + if err != nil { + i = 0 + } + return i +} + +// Date returns the value for header Date. +func (bshhr BlobSetHTTPHeadersResponse) Date() time.Time { + s := bshhr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (bshhr BlobSetHTTPHeadersResponse) ErrorCode() string { + return bshhr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (bshhr BlobSetHTTPHeadersResponse) ETag() ETag { + return ETag(bshhr.rawResponse.Header.Get("ETag")) +} + +// LastModified returns the value for header Last-Modified. +func (bshhr BlobSetHTTPHeadersResponse) LastModified() time.Time { + s := bshhr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// RequestID returns the value for header x-ms-request-id. +func (bshhr BlobSetHTTPHeadersResponse) RequestID() string { + return bshhr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (bshhr BlobSetHTTPHeadersResponse) Version() string { + return bshhr.rawResponse.Header.Get("x-ms-version") +} + +// BlobSetMetadataResponse ... +type BlobSetMetadataResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (bsmr BlobSetMetadataResponse) Response() *http.Response { + return bsmr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (bsmr BlobSetMetadataResponse) StatusCode() int { + return bsmr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (bsmr BlobSetMetadataResponse) Status() string { + return bsmr.rawResponse.Status +} + +// Date returns the value for header Date. +func (bsmr BlobSetMetadataResponse) Date() time.Time { + s := bsmr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (bsmr BlobSetMetadataResponse) ErrorCode() string { + return bsmr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (bsmr BlobSetMetadataResponse) ETag() ETag { + return ETag(bsmr.rawResponse.Header.Get("ETag")) +} + +// IsServerEncrypted returns the value for header x-ms-request-server-encrypted. +func (bsmr BlobSetMetadataResponse) IsServerEncrypted() string { + return bsmr.rawResponse.Header.Get("x-ms-request-server-encrypted") +} + +// LastModified returns the value for header Last-Modified. +func (bsmr BlobSetMetadataResponse) LastModified() time.Time { + s := bsmr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// RequestID returns the value for header x-ms-request-id. +func (bsmr BlobSetMetadataResponse) RequestID() string { + return bsmr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (bsmr BlobSetMetadataResponse) Version() string { + return bsmr.rawResponse.Header.Get("x-ms-version") +} + +// BlobSetTierResponse ... +type BlobSetTierResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (bstr BlobSetTierResponse) Response() *http.Response { + return bstr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (bstr BlobSetTierResponse) StatusCode() int { + return bstr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (bstr BlobSetTierResponse) Status() string { + return bstr.rawResponse.Status +} + +// ErrorCode returns the value for header x-ms-error-code. +func (bstr BlobSetTierResponse) ErrorCode() string { + return bstr.rawResponse.Header.Get("x-ms-error-code") +} + +// RequestID returns the value for header x-ms-request-id. +func (bstr BlobSetTierResponse) RequestID() string { + return bstr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (bstr BlobSetTierResponse) Version() string { + return bstr.rawResponse.Header.Get("x-ms-version") +} + +// BlobStartCopyFromURLResponse ... +type BlobStartCopyFromURLResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (bscfur BlobStartCopyFromURLResponse) Response() *http.Response { + return bscfur.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (bscfur BlobStartCopyFromURLResponse) StatusCode() int { + return bscfur.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (bscfur BlobStartCopyFromURLResponse) Status() string { + return bscfur.rawResponse.Status +} + +// CopyID returns the value for header x-ms-copy-id. +func (bscfur BlobStartCopyFromURLResponse) CopyID() string { + return bscfur.rawResponse.Header.Get("x-ms-copy-id") +} + +// CopyStatus returns the value for header x-ms-copy-status. +func (bscfur BlobStartCopyFromURLResponse) CopyStatus() CopyStatusType { + return CopyStatusType(bscfur.rawResponse.Header.Get("x-ms-copy-status")) +} + +// Date returns the value for header Date. +func (bscfur BlobStartCopyFromURLResponse) Date() time.Time { + s := bscfur.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (bscfur BlobStartCopyFromURLResponse) ErrorCode() string { + return bscfur.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (bscfur BlobStartCopyFromURLResponse) ETag() ETag { + return ETag(bscfur.rawResponse.Header.Get("ETag")) +} + +// LastModified returns the value for header Last-Modified. +func (bscfur BlobStartCopyFromURLResponse) LastModified() time.Time { + s := bscfur.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// RequestID returns the value for header x-ms-request-id. +func (bscfur BlobStartCopyFromURLResponse) RequestID() string { + return bscfur.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (bscfur BlobStartCopyFromURLResponse) Version() string { + return bscfur.rawResponse.Header.Get("x-ms-version") +} + +// BlobUndeleteResponse ... +type BlobUndeleteResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (bur BlobUndeleteResponse) Response() *http.Response { + return bur.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (bur BlobUndeleteResponse) StatusCode() int { + return bur.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (bur BlobUndeleteResponse) Status() string { + return bur.rawResponse.Status +} + +// Date returns the value for header Date. +func (bur BlobUndeleteResponse) Date() time.Time { + s := bur.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (bur BlobUndeleteResponse) ErrorCode() string { + return bur.rawResponse.Header.Get("x-ms-error-code") +} + +// RequestID returns the value for header x-ms-request-id. +func (bur BlobUndeleteResponse) RequestID() string { + return bur.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (bur BlobUndeleteResponse) Version() string { + return bur.rawResponse.Header.Get("x-ms-version") +} + +// Block - Represents a single block in a block blob. It describes the block's ID and size. +type Block struct { + // Name - The base64 encoded block ID. + Name string `xml:"Name"` + // Size - The block size in bytes. + Size int32 `xml:"Size"` +} + +// BlockBlobCommitBlockListResponse ... +type BlockBlobCommitBlockListResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (bbcblr BlockBlobCommitBlockListResponse) Response() *http.Response { + return bbcblr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (bbcblr BlockBlobCommitBlockListResponse) StatusCode() int { + return bbcblr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (bbcblr BlockBlobCommitBlockListResponse) Status() string { + return bbcblr.rawResponse.Status +} + +// ContentMD5 returns the value for header Content-MD5. +func (bbcblr BlockBlobCommitBlockListResponse) ContentMD5() []byte { + s := bbcblr.rawResponse.Header.Get("Content-MD5") + if s == "" { + return nil + } + b, err := base64.StdEncoding.DecodeString(s) + if err != nil { + b = nil + } + return b +} + +// Date returns the value for header Date. +func (bbcblr BlockBlobCommitBlockListResponse) Date() time.Time { + s := bbcblr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (bbcblr BlockBlobCommitBlockListResponse) ErrorCode() string { + return bbcblr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (bbcblr BlockBlobCommitBlockListResponse) ETag() ETag { + return ETag(bbcblr.rawResponse.Header.Get("ETag")) +} + +// IsServerEncrypted returns the value for header x-ms-request-server-encrypted. +func (bbcblr BlockBlobCommitBlockListResponse) IsServerEncrypted() string { + return bbcblr.rawResponse.Header.Get("x-ms-request-server-encrypted") +} + +// LastModified returns the value for header Last-Modified. +func (bbcblr BlockBlobCommitBlockListResponse) LastModified() time.Time { + s := bbcblr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// RequestID returns the value for header x-ms-request-id. +func (bbcblr BlockBlobCommitBlockListResponse) RequestID() string { + return bbcblr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (bbcblr BlockBlobCommitBlockListResponse) Version() string { + return bbcblr.rawResponse.Header.Get("x-ms-version") +} + +// BlockBlobStageBlockFromURLResponse ... +type BlockBlobStageBlockFromURLResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (bbsbfur BlockBlobStageBlockFromURLResponse) Response() *http.Response { + return bbsbfur.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (bbsbfur BlockBlobStageBlockFromURLResponse) StatusCode() int { + return bbsbfur.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (bbsbfur BlockBlobStageBlockFromURLResponse) Status() string { + return bbsbfur.rawResponse.Status +} + +// ContentMD5 returns the value for header Content-MD5. +func (bbsbfur BlockBlobStageBlockFromURLResponse) ContentMD5() []byte { + s := bbsbfur.rawResponse.Header.Get("Content-MD5") + if s == "" { + return nil + } + b, err := base64.StdEncoding.DecodeString(s) + if err != nil { + b = nil + } + return b +} + +// Date returns the value for header Date. +func (bbsbfur BlockBlobStageBlockFromURLResponse) Date() time.Time { + s := bbsbfur.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (bbsbfur BlockBlobStageBlockFromURLResponse) ErrorCode() string { + return bbsbfur.rawResponse.Header.Get("x-ms-error-code") +} + +// IsServerEncrypted returns the value for header x-ms-request-server-encrypted. +func (bbsbfur BlockBlobStageBlockFromURLResponse) IsServerEncrypted() string { + return bbsbfur.rawResponse.Header.Get("x-ms-request-server-encrypted") +} + +// RequestID returns the value for header x-ms-request-id. +func (bbsbfur BlockBlobStageBlockFromURLResponse) RequestID() string { + return bbsbfur.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (bbsbfur BlockBlobStageBlockFromURLResponse) Version() string { + return bbsbfur.rawResponse.Header.Get("x-ms-version") +} + +// BlockBlobStageBlockResponse ... +type BlockBlobStageBlockResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (bbsbr BlockBlobStageBlockResponse) Response() *http.Response { + return bbsbr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (bbsbr BlockBlobStageBlockResponse) StatusCode() int { + return bbsbr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (bbsbr BlockBlobStageBlockResponse) Status() string { + return bbsbr.rawResponse.Status +} + +// ContentMD5 returns the value for header Content-MD5. +func (bbsbr BlockBlobStageBlockResponse) ContentMD5() []byte { + s := bbsbr.rawResponse.Header.Get("Content-MD5") + if s == "" { + return nil + } + b, err := base64.StdEncoding.DecodeString(s) + if err != nil { + b = nil + } + return b +} + +// Date returns the value for header Date. +func (bbsbr BlockBlobStageBlockResponse) Date() time.Time { + s := bbsbr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (bbsbr BlockBlobStageBlockResponse) ErrorCode() string { + return bbsbr.rawResponse.Header.Get("x-ms-error-code") +} + +// IsServerEncrypted returns the value for header x-ms-request-server-encrypted. +func (bbsbr BlockBlobStageBlockResponse) IsServerEncrypted() string { + return bbsbr.rawResponse.Header.Get("x-ms-request-server-encrypted") +} + +// RequestID returns the value for header x-ms-request-id. +func (bbsbr BlockBlobStageBlockResponse) RequestID() string { + return bbsbr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (bbsbr BlockBlobStageBlockResponse) Version() string { + return bbsbr.rawResponse.Header.Get("x-ms-version") +} + +// BlockBlobUploadResponse ... +type BlockBlobUploadResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (bbur BlockBlobUploadResponse) Response() *http.Response { + return bbur.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (bbur BlockBlobUploadResponse) StatusCode() int { + return bbur.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (bbur BlockBlobUploadResponse) Status() string { + return bbur.rawResponse.Status +} + +// ContentMD5 returns the value for header Content-MD5. +func (bbur BlockBlobUploadResponse) ContentMD5() []byte { + s := bbur.rawResponse.Header.Get("Content-MD5") + if s == "" { + return nil + } + b, err := base64.StdEncoding.DecodeString(s) + if err != nil { + b = nil + } + return b +} + +// Date returns the value for header Date. +func (bbur BlockBlobUploadResponse) Date() time.Time { + s := bbur.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (bbur BlockBlobUploadResponse) ErrorCode() string { + return bbur.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (bbur BlockBlobUploadResponse) ETag() ETag { + return ETag(bbur.rawResponse.Header.Get("ETag")) +} + +// IsServerEncrypted returns the value for header x-ms-request-server-encrypted. +func (bbur BlockBlobUploadResponse) IsServerEncrypted() string { + return bbur.rawResponse.Header.Get("x-ms-request-server-encrypted") +} + +// LastModified returns the value for header Last-Modified. +func (bbur BlockBlobUploadResponse) LastModified() time.Time { + s := bbur.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// RequestID returns the value for header x-ms-request-id. +func (bbur BlockBlobUploadResponse) RequestID() string { + return bbur.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (bbur BlockBlobUploadResponse) Version() string { + return bbur.rawResponse.Header.Get("x-ms-version") +} + +// BlockList ... +type BlockList struct { + rawResponse *http.Response + CommittedBlocks []Block `xml:"CommittedBlocks>Block"` + UncommittedBlocks []Block `xml:"UncommittedBlocks>Block"` +} + +// Response returns the raw HTTP response object. +func (bl BlockList) Response() *http.Response { + return bl.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (bl BlockList) StatusCode() int { + return bl.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (bl BlockList) Status() string { + return bl.rawResponse.Status +} + +// BlobContentLength returns the value for header x-ms-blob-content-length. +func (bl BlockList) BlobContentLength() int64 { + s := bl.rawResponse.Header.Get("x-ms-blob-content-length") + if s == "" { + return -1 + } + i, err := strconv.ParseInt(s, 10, 64) + if err != nil { + i = 0 + } + return i +} + +// ContentType returns the value for header Content-Type. +func (bl BlockList) ContentType() string { + return bl.rawResponse.Header.Get("Content-Type") +} + +// Date returns the value for header Date. +func (bl BlockList) Date() time.Time { + s := bl.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (bl BlockList) ErrorCode() string { + return bl.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (bl BlockList) ETag() ETag { + return ETag(bl.rawResponse.Header.Get("ETag")) +} + +// LastModified returns the value for header Last-Modified. +func (bl BlockList) LastModified() time.Time { + s := bl.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// RequestID returns the value for header x-ms-request-id. +func (bl BlockList) RequestID() string { + return bl.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (bl BlockList) Version() string { + return bl.rawResponse.Header.Get("x-ms-version") +} + +// BlockLookupList ... +type BlockLookupList struct { + // XMLName is used for marshalling and is subject to removal in a future release. + XMLName xml.Name `xml:"BlockList"` + Committed []string `xml:"Committed"` + Uncommitted []string `xml:"Uncommitted"` + Latest []string `xml:"Latest"` +} + +// ClearRange ... +type ClearRange struct { + Start int64 `xml:"Start"` + End int64 `xml:"End"` +} + +// ContainerAcquireLeaseResponse ... +type ContainerAcquireLeaseResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (calr ContainerAcquireLeaseResponse) Response() *http.Response { + return calr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (calr ContainerAcquireLeaseResponse) StatusCode() int { + return calr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (calr ContainerAcquireLeaseResponse) Status() string { + return calr.rawResponse.Status +} + +// Date returns the value for header Date. +func (calr ContainerAcquireLeaseResponse) Date() time.Time { + s := calr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (calr ContainerAcquireLeaseResponse) ErrorCode() string { + return calr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (calr ContainerAcquireLeaseResponse) ETag() ETag { + return ETag(calr.rawResponse.Header.Get("ETag")) +} + +// LastModified returns the value for header Last-Modified. +func (calr ContainerAcquireLeaseResponse) LastModified() time.Time { + s := calr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// LeaseID returns the value for header x-ms-lease-id. +func (calr ContainerAcquireLeaseResponse) LeaseID() string { + return calr.rawResponse.Header.Get("x-ms-lease-id") +} + +// RequestID returns the value for header x-ms-request-id. +func (calr ContainerAcquireLeaseResponse) RequestID() string { + return calr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (calr ContainerAcquireLeaseResponse) Version() string { + return calr.rawResponse.Header.Get("x-ms-version") +} + +// ContainerBreakLeaseResponse ... +type ContainerBreakLeaseResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (cblr ContainerBreakLeaseResponse) Response() *http.Response { + return cblr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (cblr ContainerBreakLeaseResponse) StatusCode() int { + return cblr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (cblr ContainerBreakLeaseResponse) Status() string { + return cblr.rawResponse.Status +} + +// Date returns the value for header Date. +func (cblr ContainerBreakLeaseResponse) Date() time.Time { + s := cblr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (cblr ContainerBreakLeaseResponse) ErrorCode() string { + return cblr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (cblr ContainerBreakLeaseResponse) ETag() ETag { + return ETag(cblr.rawResponse.Header.Get("ETag")) +} + +// LastModified returns the value for header Last-Modified. +func (cblr ContainerBreakLeaseResponse) LastModified() time.Time { + s := cblr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// LeaseTime returns the value for header x-ms-lease-time. +func (cblr ContainerBreakLeaseResponse) LeaseTime() int32 { + s := cblr.rawResponse.Header.Get("x-ms-lease-time") + if s == "" { + return -1 + } + i, err := strconv.ParseInt(s, 10, 32) + if err != nil { + i = 0 + } + return int32(i) +} + +// RequestID returns the value for header x-ms-request-id. +func (cblr ContainerBreakLeaseResponse) RequestID() string { + return cblr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (cblr ContainerBreakLeaseResponse) Version() string { + return cblr.rawResponse.Header.Get("x-ms-version") +} + +// ContainerChangeLeaseResponse ... +type ContainerChangeLeaseResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (cclr ContainerChangeLeaseResponse) Response() *http.Response { + return cclr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (cclr ContainerChangeLeaseResponse) StatusCode() int { + return cclr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (cclr ContainerChangeLeaseResponse) Status() string { + return cclr.rawResponse.Status +} + +// Date returns the value for header Date. +func (cclr ContainerChangeLeaseResponse) Date() time.Time { + s := cclr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (cclr ContainerChangeLeaseResponse) ErrorCode() string { + return cclr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (cclr ContainerChangeLeaseResponse) ETag() ETag { + return ETag(cclr.rawResponse.Header.Get("ETag")) +} + +// LastModified returns the value for header Last-Modified. +func (cclr ContainerChangeLeaseResponse) LastModified() time.Time { + s := cclr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// LeaseID returns the value for header x-ms-lease-id. +func (cclr ContainerChangeLeaseResponse) LeaseID() string { + return cclr.rawResponse.Header.Get("x-ms-lease-id") +} + +// RequestID returns the value for header x-ms-request-id. +func (cclr ContainerChangeLeaseResponse) RequestID() string { + return cclr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (cclr ContainerChangeLeaseResponse) Version() string { + return cclr.rawResponse.Header.Get("x-ms-version") +} + +// ContainerCreateResponse ... +type ContainerCreateResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (ccr ContainerCreateResponse) Response() *http.Response { + return ccr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (ccr ContainerCreateResponse) StatusCode() int { + return ccr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (ccr ContainerCreateResponse) Status() string { + return ccr.rawResponse.Status +} + +// Date returns the value for header Date. +func (ccr ContainerCreateResponse) Date() time.Time { + s := ccr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (ccr ContainerCreateResponse) ErrorCode() string { + return ccr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (ccr ContainerCreateResponse) ETag() ETag { + return ETag(ccr.rawResponse.Header.Get("ETag")) +} + +// LastModified returns the value for header Last-Modified. +func (ccr ContainerCreateResponse) LastModified() time.Time { + s := ccr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// RequestID returns the value for header x-ms-request-id. +func (ccr ContainerCreateResponse) RequestID() string { + return ccr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (ccr ContainerCreateResponse) Version() string { + return ccr.rawResponse.Header.Get("x-ms-version") +} + +// ContainerDeleteResponse ... +type ContainerDeleteResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (cdr ContainerDeleteResponse) Response() *http.Response { + return cdr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (cdr ContainerDeleteResponse) StatusCode() int { + return cdr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (cdr ContainerDeleteResponse) Status() string { + return cdr.rawResponse.Status +} + +// Date returns the value for header Date. +func (cdr ContainerDeleteResponse) Date() time.Time { + s := cdr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (cdr ContainerDeleteResponse) ErrorCode() string { + return cdr.rawResponse.Header.Get("x-ms-error-code") +} + +// RequestID returns the value for header x-ms-request-id. +func (cdr ContainerDeleteResponse) RequestID() string { + return cdr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (cdr ContainerDeleteResponse) Version() string { + return cdr.rawResponse.Header.Get("x-ms-version") +} + +// ContainerGetAccountInfoResponse ... +type ContainerGetAccountInfoResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (cgair ContainerGetAccountInfoResponse) Response() *http.Response { + return cgair.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (cgair ContainerGetAccountInfoResponse) StatusCode() int { + return cgair.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (cgair ContainerGetAccountInfoResponse) Status() string { + return cgair.rawResponse.Status +} + +// AccountKind returns the value for header x-ms-account-kind. +func (cgair ContainerGetAccountInfoResponse) AccountKind() AccountKindType { + return AccountKindType(cgair.rawResponse.Header.Get("x-ms-account-kind")) +} + +// Date returns the value for header Date. +func (cgair ContainerGetAccountInfoResponse) Date() time.Time { + s := cgair.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (cgair ContainerGetAccountInfoResponse) ErrorCode() string { + return cgair.rawResponse.Header.Get("x-ms-error-code") +} + +// RequestID returns the value for header x-ms-request-id. +func (cgair ContainerGetAccountInfoResponse) RequestID() string { + return cgair.rawResponse.Header.Get("x-ms-request-id") +} + +// SkuName returns the value for header x-ms-sku-name. +func (cgair ContainerGetAccountInfoResponse) SkuName() SkuNameType { + return SkuNameType(cgair.rawResponse.Header.Get("x-ms-sku-name")) +} + +// Version returns the value for header x-ms-version. +func (cgair ContainerGetAccountInfoResponse) Version() string { + return cgair.rawResponse.Header.Get("x-ms-version") +} + +// ContainerGetPropertiesResponse ... +type ContainerGetPropertiesResponse struct { + rawResponse *http.Response +} + +// NewMetadata returns user-defined key/value pairs. +func (cgpr ContainerGetPropertiesResponse) NewMetadata() Metadata { + md := Metadata{} + for k, v := range cgpr.rawResponse.Header { + if len(k) > mdPrefixLen { + if prefix := k[0:mdPrefixLen]; strings.EqualFold(prefix, mdPrefix) { + md[strings.ToLower(k[mdPrefixLen:])] = v[0] + } + } + } + return md +} + +// Response returns the raw HTTP response object. +func (cgpr ContainerGetPropertiesResponse) Response() *http.Response { + return cgpr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (cgpr ContainerGetPropertiesResponse) StatusCode() int { + return cgpr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (cgpr ContainerGetPropertiesResponse) Status() string { + return cgpr.rawResponse.Status +} + +// BlobPublicAccess returns the value for header x-ms-blob-public-access. +func (cgpr ContainerGetPropertiesResponse) BlobPublicAccess() PublicAccessType { + return PublicAccessType(cgpr.rawResponse.Header.Get("x-ms-blob-public-access")) +} + +// Date returns the value for header Date. +func (cgpr ContainerGetPropertiesResponse) Date() time.Time { + s := cgpr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (cgpr ContainerGetPropertiesResponse) ErrorCode() string { + return cgpr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (cgpr ContainerGetPropertiesResponse) ETag() ETag { + return ETag(cgpr.rawResponse.Header.Get("ETag")) +} + +// HasImmutabilityPolicy returns the value for header x-ms-has-immutability-policy. +func (cgpr ContainerGetPropertiesResponse) HasImmutabilityPolicy() string { + return cgpr.rawResponse.Header.Get("x-ms-has-immutability-policy") +} + +// HasLegalHold returns the value for header x-ms-has-legal-hold. +func (cgpr ContainerGetPropertiesResponse) HasLegalHold() string { + return cgpr.rawResponse.Header.Get("x-ms-has-legal-hold") +} + +// LastModified returns the value for header Last-Modified. +func (cgpr ContainerGetPropertiesResponse) LastModified() time.Time { + s := cgpr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// LeaseDuration returns the value for header x-ms-lease-duration. +func (cgpr ContainerGetPropertiesResponse) LeaseDuration() LeaseDurationType { + return LeaseDurationType(cgpr.rawResponse.Header.Get("x-ms-lease-duration")) +} + +// LeaseState returns the value for header x-ms-lease-state. +func (cgpr ContainerGetPropertiesResponse) LeaseState() LeaseStateType { + return LeaseStateType(cgpr.rawResponse.Header.Get("x-ms-lease-state")) +} + +// LeaseStatus returns the value for header x-ms-lease-status. +func (cgpr ContainerGetPropertiesResponse) LeaseStatus() LeaseStatusType { + return LeaseStatusType(cgpr.rawResponse.Header.Get("x-ms-lease-status")) +} + +// RequestID returns the value for header x-ms-request-id. +func (cgpr ContainerGetPropertiesResponse) RequestID() string { + return cgpr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (cgpr ContainerGetPropertiesResponse) Version() string { + return cgpr.rawResponse.Header.Get("x-ms-version") +} + +// ContainerItem - An Azure Storage container +type ContainerItem struct { + // XMLName is used for marshalling and is subject to removal in a future release. + XMLName xml.Name `xml:"Container"` + Name string `xml:"Name"` + Properties ContainerProperties `xml:"Properties"` + Metadata Metadata `xml:"Metadata"` +} + +// ContainerProperties - Properties of a container +type ContainerProperties struct { + LastModified time.Time `xml:"Last-Modified"` + Etag ETag `xml:"Etag"` + // LeaseStatus - Possible values include: 'LeaseStatusLocked', 'LeaseStatusUnlocked', 'LeaseStatusNone' + LeaseStatus LeaseStatusType `xml:"LeaseStatus"` + // LeaseState - Possible values include: 'LeaseStateAvailable', 'LeaseStateLeased', 'LeaseStateExpired', 'LeaseStateBreaking', 'LeaseStateBroken', 'LeaseStateNone' + LeaseState LeaseStateType `xml:"LeaseState"` + // LeaseDuration - Possible values include: 'LeaseDurationInfinite', 'LeaseDurationFixed', 'LeaseDurationNone' + LeaseDuration LeaseDurationType `xml:"LeaseDuration"` + // PublicAccess - Possible values include: 'PublicAccessContainer', 'PublicAccessBlob', 'PublicAccessNone' + PublicAccess PublicAccessType `xml:"PublicAccess"` + HasImmutabilityPolicy *bool `xml:"HasImmutabilityPolicy"` + HasLegalHold *bool `xml:"HasLegalHold"` +} + +// MarshalXML implements the xml.Marshaler interface for ContainerProperties. +func (cp ContainerProperties) MarshalXML(e *xml.Encoder, start xml.StartElement) error { + cp2 := (*containerProperties)(unsafe.Pointer(&cp)) + return e.EncodeElement(*cp2, start) +} + +// UnmarshalXML implements the xml.Unmarshaler interface for ContainerProperties. +func (cp *ContainerProperties) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { + cp2 := (*containerProperties)(unsafe.Pointer(cp)) + return d.DecodeElement(cp2, &start) +} + +// ContainerReleaseLeaseResponse ... +type ContainerReleaseLeaseResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (crlr ContainerReleaseLeaseResponse) Response() *http.Response { + return crlr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (crlr ContainerReleaseLeaseResponse) StatusCode() int { + return crlr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (crlr ContainerReleaseLeaseResponse) Status() string { + return crlr.rawResponse.Status +} + +// Date returns the value for header Date. +func (crlr ContainerReleaseLeaseResponse) Date() time.Time { + s := crlr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (crlr ContainerReleaseLeaseResponse) ErrorCode() string { + return crlr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (crlr ContainerReleaseLeaseResponse) ETag() ETag { + return ETag(crlr.rawResponse.Header.Get("ETag")) +} + +// LastModified returns the value for header Last-Modified. +func (crlr ContainerReleaseLeaseResponse) LastModified() time.Time { + s := crlr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// RequestID returns the value for header x-ms-request-id. +func (crlr ContainerReleaseLeaseResponse) RequestID() string { + return crlr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (crlr ContainerReleaseLeaseResponse) Version() string { + return crlr.rawResponse.Header.Get("x-ms-version") +} + +// ContainerRenewLeaseResponse ... +type ContainerRenewLeaseResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (crlr ContainerRenewLeaseResponse) Response() *http.Response { + return crlr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (crlr ContainerRenewLeaseResponse) StatusCode() int { + return crlr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (crlr ContainerRenewLeaseResponse) Status() string { + return crlr.rawResponse.Status +} + +// Date returns the value for header Date. +func (crlr ContainerRenewLeaseResponse) Date() time.Time { + s := crlr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (crlr ContainerRenewLeaseResponse) ErrorCode() string { + return crlr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (crlr ContainerRenewLeaseResponse) ETag() ETag { + return ETag(crlr.rawResponse.Header.Get("ETag")) +} + +// LastModified returns the value for header Last-Modified. +func (crlr ContainerRenewLeaseResponse) LastModified() time.Time { + s := crlr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// LeaseID returns the value for header x-ms-lease-id. +func (crlr ContainerRenewLeaseResponse) LeaseID() string { + return crlr.rawResponse.Header.Get("x-ms-lease-id") +} + +// RequestID returns the value for header x-ms-request-id. +func (crlr ContainerRenewLeaseResponse) RequestID() string { + return crlr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (crlr ContainerRenewLeaseResponse) Version() string { + return crlr.rawResponse.Header.Get("x-ms-version") +} + +// ContainerSetAccessPolicyResponse ... +type ContainerSetAccessPolicyResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (csapr ContainerSetAccessPolicyResponse) Response() *http.Response { + return csapr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (csapr ContainerSetAccessPolicyResponse) StatusCode() int { + return csapr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (csapr ContainerSetAccessPolicyResponse) Status() string { + return csapr.rawResponse.Status +} + +// Date returns the value for header Date. +func (csapr ContainerSetAccessPolicyResponse) Date() time.Time { + s := csapr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (csapr ContainerSetAccessPolicyResponse) ErrorCode() string { + return csapr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (csapr ContainerSetAccessPolicyResponse) ETag() ETag { + return ETag(csapr.rawResponse.Header.Get("ETag")) +} + +// LastModified returns the value for header Last-Modified. +func (csapr ContainerSetAccessPolicyResponse) LastModified() time.Time { + s := csapr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// RequestID returns the value for header x-ms-request-id. +func (csapr ContainerSetAccessPolicyResponse) RequestID() string { + return csapr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (csapr ContainerSetAccessPolicyResponse) Version() string { + return csapr.rawResponse.Header.Get("x-ms-version") +} + +// ContainerSetMetadataResponse ... +type ContainerSetMetadataResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (csmr ContainerSetMetadataResponse) Response() *http.Response { + return csmr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (csmr ContainerSetMetadataResponse) StatusCode() int { + return csmr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (csmr ContainerSetMetadataResponse) Status() string { + return csmr.rawResponse.Status +} + +// Date returns the value for header Date. +func (csmr ContainerSetMetadataResponse) Date() time.Time { + s := csmr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (csmr ContainerSetMetadataResponse) ErrorCode() string { + return csmr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (csmr ContainerSetMetadataResponse) ETag() ETag { + return ETag(csmr.rawResponse.Header.Get("ETag")) +} + +// LastModified returns the value for header Last-Modified. +func (csmr ContainerSetMetadataResponse) LastModified() time.Time { + s := csmr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// RequestID returns the value for header x-ms-request-id. +func (csmr ContainerSetMetadataResponse) RequestID() string { + return csmr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (csmr ContainerSetMetadataResponse) Version() string { + return csmr.rawResponse.Header.Get("x-ms-version") +} + +// CorsRule - CORS is an HTTP feature that enables a web application running under one domain to access +// resources in another domain. Web browsers implement a security restriction known as same-origin policy that +// prevents a web page from calling APIs in a different domain; CORS provides a secure way to allow one domain +// (the origin domain) to call APIs in another domain +type CorsRule struct { + // AllowedOrigins - The origin domains that are permitted to make a request against the storage service via CORS. The origin domain is the domain from which the request originates. Note that the origin must be an exact case-sensitive match with the origin that the user age sends to the service. You can also use the wildcard character '*' to allow all origin domains to make requests via CORS. + AllowedOrigins string `xml:"AllowedOrigins"` + // AllowedMethods - The methods (HTTP request verbs) that the origin domain may use for a CORS request. (comma separated) + AllowedMethods string `xml:"AllowedMethods"` + // AllowedHeaders - the request headers that the origin domain may specify on the CORS request. + AllowedHeaders string `xml:"AllowedHeaders"` + // ExposedHeaders - The response headers that may be sent in the response to the CORS request and exposed by the browser to the request issuer + ExposedHeaders string `xml:"ExposedHeaders"` + // MaxAgeInSeconds - The maximum amount time that a browser should cache the preflight OPTIONS request. + MaxAgeInSeconds int32 `xml:"MaxAgeInSeconds"` +} + +// downloadResponse - Wraps the response from the blobClient.Download method. +type downloadResponse struct { + rawResponse *http.Response +} + +// NewMetadata returns user-defined key/value pairs. +func (dr downloadResponse) NewMetadata() Metadata { + md := Metadata{} + for k, v := range dr.rawResponse.Header { + if len(k) > mdPrefixLen { + if prefix := k[0:mdPrefixLen]; strings.EqualFold(prefix, mdPrefix) { + md[strings.ToLower(k[mdPrefixLen:])] = v[0] + } + } + } + return md +} + +// Response returns the raw HTTP response object. +func (dr downloadResponse) Response() *http.Response { + return dr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (dr downloadResponse) StatusCode() int { + return dr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (dr downloadResponse) Status() string { + return dr.rawResponse.Status +} + +// Body returns the raw HTTP response object's Body. +func (dr downloadResponse) Body() io.ReadCloser { + return dr.rawResponse.Body +} + +// AcceptRanges returns the value for header Accept-Ranges. +func (dr downloadResponse) AcceptRanges() string { + return dr.rawResponse.Header.Get("Accept-Ranges") +} + +// BlobCommittedBlockCount returns the value for header x-ms-blob-committed-block-count. +func (dr downloadResponse) BlobCommittedBlockCount() int32 { + s := dr.rawResponse.Header.Get("x-ms-blob-committed-block-count") + if s == "" { + return -1 + } + i, err := strconv.ParseInt(s, 10, 32) + if err != nil { + i = 0 + } + return int32(i) +} + +// BlobContentMD5 returns the value for header x-ms-blob-content-md5. +func (dr downloadResponse) BlobContentMD5() []byte { + s := dr.rawResponse.Header.Get("x-ms-blob-content-md5") + if s == "" { + return nil + } + b, err := base64.StdEncoding.DecodeString(s) + if err != nil { + b = nil + } + return b +} + +// BlobSequenceNumber returns the value for header x-ms-blob-sequence-number. +func (dr downloadResponse) BlobSequenceNumber() int64 { + s := dr.rawResponse.Header.Get("x-ms-blob-sequence-number") + if s == "" { + return -1 + } + i, err := strconv.ParseInt(s, 10, 64) + if err != nil { + i = 0 + } + return i +} + +// BlobType returns the value for header x-ms-blob-type. +func (dr downloadResponse) BlobType() BlobType { + return BlobType(dr.rawResponse.Header.Get("x-ms-blob-type")) +} + +// CacheControl returns the value for header Cache-Control. +func (dr downloadResponse) CacheControl() string { + return dr.rawResponse.Header.Get("Cache-Control") +} + +// ContentDisposition returns the value for header Content-Disposition. +func (dr downloadResponse) ContentDisposition() string { + return dr.rawResponse.Header.Get("Content-Disposition") +} + +// ContentEncoding returns the value for header Content-Encoding. +func (dr downloadResponse) ContentEncoding() string { + return dr.rawResponse.Header.Get("Content-Encoding") +} + +// ContentLanguage returns the value for header Content-Language. +func (dr downloadResponse) ContentLanguage() string { + return dr.rawResponse.Header.Get("Content-Language") +} + +// ContentLength returns the value for header Content-Length. +func (dr downloadResponse) ContentLength() int64 { + s := dr.rawResponse.Header.Get("Content-Length") + if s == "" { + return -1 + } + i, err := strconv.ParseInt(s, 10, 64) + if err != nil { + i = 0 + } + return i +} + +// ContentMD5 returns the value for header Content-MD5. +func (dr downloadResponse) ContentMD5() []byte { + s := dr.rawResponse.Header.Get("Content-MD5") + if s == "" { + return nil + } + b, err := base64.StdEncoding.DecodeString(s) + if err != nil { + b = nil + } + return b +} + +// ContentRange returns the value for header Content-Range. +func (dr downloadResponse) ContentRange() string { + return dr.rawResponse.Header.Get("Content-Range") +} + +// ContentType returns the value for header Content-Type. +func (dr downloadResponse) ContentType() string { + return dr.rawResponse.Header.Get("Content-Type") +} + +// CopyCompletionTime returns the value for header x-ms-copy-completion-time. +func (dr downloadResponse) CopyCompletionTime() time.Time { + s := dr.rawResponse.Header.Get("x-ms-copy-completion-time") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// CopyID returns the value for header x-ms-copy-id. +func (dr downloadResponse) CopyID() string { + return dr.rawResponse.Header.Get("x-ms-copy-id") +} + +// CopyProgress returns the value for header x-ms-copy-progress. +func (dr downloadResponse) CopyProgress() string { + return dr.rawResponse.Header.Get("x-ms-copy-progress") +} + +// CopySource returns the value for header x-ms-copy-source. +func (dr downloadResponse) CopySource() string { + return dr.rawResponse.Header.Get("x-ms-copy-source") +} + +// CopyStatus returns the value for header x-ms-copy-status. +func (dr downloadResponse) CopyStatus() CopyStatusType { + return CopyStatusType(dr.rawResponse.Header.Get("x-ms-copy-status")) +} + +// CopyStatusDescription returns the value for header x-ms-copy-status-description. +func (dr downloadResponse) CopyStatusDescription() string { + return dr.rawResponse.Header.Get("x-ms-copy-status-description") +} + +// Date returns the value for header Date. +func (dr downloadResponse) Date() time.Time { + s := dr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (dr downloadResponse) ErrorCode() string { + return dr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (dr downloadResponse) ETag() ETag { + return ETag(dr.rawResponse.Header.Get("ETag")) +} + +// IsServerEncrypted returns the value for header x-ms-server-encrypted. +func (dr downloadResponse) IsServerEncrypted() string { + return dr.rawResponse.Header.Get("x-ms-server-encrypted") +} + +// LastModified returns the value for header Last-Modified. +func (dr downloadResponse) LastModified() time.Time { + s := dr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// LeaseDuration returns the value for header x-ms-lease-duration. +func (dr downloadResponse) LeaseDuration() LeaseDurationType { + return LeaseDurationType(dr.rawResponse.Header.Get("x-ms-lease-duration")) +} + +// LeaseState returns the value for header x-ms-lease-state. +func (dr downloadResponse) LeaseState() LeaseStateType { + return LeaseStateType(dr.rawResponse.Header.Get("x-ms-lease-state")) +} + +// LeaseStatus returns the value for header x-ms-lease-status. +func (dr downloadResponse) LeaseStatus() LeaseStatusType { + return LeaseStatusType(dr.rawResponse.Header.Get("x-ms-lease-status")) +} + +// RequestID returns the value for header x-ms-request-id. +func (dr downloadResponse) RequestID() string { + return dr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (dr downloadResponse) Version() string { + return dr.rawResponse.Header.Get("x-ms-version") +} + +// GeoReplication - Geo-Replication information for the Secondary Storage Service +type GeoReplication struct { + // Status - The status of the secondary location. Possible values include: 'GeoReplicationStatusLive', 'GeoReplicationStatusBootstrap', 'GeoReplicationStatusUnavailable', 'GeoReplicationStatusNone' + Status GeoReplicationStatusType `xml:"Status"` + // LastSyncTime - A GMT date/time value, to the second. All primary writes preceding this value are guaranteed to be available for read operations at the secondary. Primary writes after this point in time may or may not be available for reads. + LastSyncTime time.Time `xml:"LastSyncTime"` +} + +// MarshalXML implements the xml.Marshaler interface for GeoReplication. +func (gr GeoReplication) MarshalXML(e *xml.Encoder, start xml.StartElement) error { + gr2 := (*geoReplication)(unsafe.Pointer(&gr)) + return e.EncodeElement(*gr2, start) +} + +// UnmarshalXML implements the xml.Unmarshaler interface for GeoReplication. +func (gr *GeoReplication) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { + gr2 := (*geoReplication)(unsafe.Pointer(gr)) + return d.DecodeElement(gr2, &start) +} + +// KeyInfo - Key information +type KeyInfo struct { + // Start - The date-time the key is active in ISO 8601 UTC time + Start string `xml:"Start"` + // Expiry - The date-time the key expires in ISO 8601 UTC time + Expiry string `xml:"Expiry"` +} + +//NewKeyInfo creates a new KeyInfo struct with the correct time formatting & conversion +func NewKeyInfo(Start, Expiry time.Time) KeyInfo { + return KeyInfo{ + Start: Start.UTC().Format(SASTimeFormat), + Expiry: Expiry.UTC().Format(SASTimeFormat), + } +} + +// ListBlobsFlatSegmentResponse - An enumeration of blobs +type ListBlobsFlatSegmentResponse struct { + rawResponse *http.Response + // XMLName is used for marshalling and is subject to removal in a future release. + XMLName xml.Name `xml:"EnumerationResults"` + ServiceEndpoint string `xml:"ServiceEndpoint,attr"` + ContainerName string `xml:"ContainerName,attr"` + Prefix *string `xml:"Prefix"` + Marker *string `xml:"Marker"` + MaxResults *int32 `xml:"MaxResults"` + Delimiter *string `xml:"Delimiter"` + Segment BlobFlatListSegment `xml:"Blobs"` + NextMarker Marker `xml:"NextMarker"` +} + +// Response returns the raw HTTP response object. +func (lbfsr ListBlobsFlatSegmentResponse) Response() *http.Response { + return lbfsr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (lbfsr ListBlobsFlatSegmentResponse) StatusCode() int { + return lbfsr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (lbfsr ListBlobsFlatSegmentResponse) Status() string { + return lbfsr.rawResponse.Status +} + +// ContentType returns the value for header Content-Type. +func (lbfsr ListBlobsFlatSegmentResponse) ContentType() string { + return lbfsr.rawResponse.Header.Get("Content-Type") +} + +// Date returns the value for header Date. +func (lbfsr ListBlobsFlatSegmentResponse) Date() time.Time { + s := lbfsr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (lbfsr ListBlobsFlatSegmentResponse) ErrorCode() string { + return lbfsr.rawResponse.Header.Get("x-ms-error-code") +} + +// RequestID returns the value for header x-ms-request-id. +func (lbfsr ListBlobsFlatSegmentResponse) RequestID() string { + return lbfsr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (lbfsr ListBlobsFlatSegmentResponse) Version() string { + return lbfsr.rawResponse.Header.Get("x-ms-version") +} + +// ListBlobsHierarchySegmentResponse - An enumeration of blobs +type ListBlobsHierarchySegmentResponse struct { + rawResponse *http.Response + // XMLName is used for marshalling and is subject to removal in a future release. + XMLName xml.Name `xml:"EnumerationResults"` + ServiceEndpoint string `xml:"ServiceEndpoint,attr"` + ContainerName string `xml:"ContainerName,attr"` + Prefix *string `xml:"Prefix"` + Marker *string `xml:"Marker"` + MaxResults *int32 `xml:"MaxResults"` + Delimiter *string `xml:"Delimiter"` + Segment BlobHierarchyListSegment `xml:"Blobs"` + NextMarker Marker `xml:"NextMarker"` +} + +// Response returns the raw HTTP response object. +func (lbhsr ListBlobsHierarchySegmentResponse) Response() *http.Response { + return lbhsr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (lbhsr ListBlobsHierarchySegmentResponse) StatusCode() int { + return lbhsr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (lbhsr ListBlobsHierarchySegmentResponse) Status() string { + return lbhsr.rawResponse.Status +} + +// ContentType returns the value for header Content-Type. +func (lbhsr ListBlobsHierarchySegmentResponse) ContentType() string { + return lbhsr.rawResponse.Header.Get("Content-Type") +} + +// Date returns the value for header Date. +func (lbhsr ListBlobsHierarchySegmentResponse) Date() time.Time { + s := lbhsr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (lbhsr ListBlobsHierarchySegmentResponse) ErrorCode() string { + return lbhsr.rawResponse.Header.Get("x-ms-error-code") +} + +// RequestID returns the value for header x-ms-request-id. +func (lbhsr ListBlobsHierarchySegmentResponse) RequestID() string { + return lbhsr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (lbhsr ListBlobsHierarchySegmentResponse) Version() string { + return lbhsr.rawResponse.Header.Get("x-ms-version") +} + +// ListContainersSegmentResponse - An enumeration of containers +type ListContainersSegmentResponse struct { + rawResponse *http.Response + // XMLName is used for marshalling and is subject to removal in a future release. + XMLName xml.Name `xml:"EnumerationResults"` + ServiceEndpoint string `xml:"ServiceEndpoint,attr"` + Prefix *string `xml:"Prefix"` + Marker *string `xml:"Marker"` + MaxResults *int32 `xml:"MaxResults"` + ContainerItems []ContainerItem `xml:"Containers>Container"` + NextMarker Marker `xml:"NextMarker"` +} + +// Response returns the raw HTTP response object. +func (lcsr ListContainersSegmentResponse) Response() *http.Response { + return lcsr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (lcsr ListContainersSegmentResponse) StatusCode() int { + return lcsr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (lcsr ListContainersSegmentResponse) Status() string { + return lcsr.rawResponse.Status +} + +// ErrorCode returns the value for header x-ms-error-code. +func (lcsr ListContainersSegmentResponse) ErrorCode() string { + return lcsr.rawResponse.Header.Get("x-ms-error-code") +} + +// RequestID returns the value for header x-ms-request-id. +func (lcsr ListContainersSegmentResponse) RequestID() string { + return lcsr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (lcsr ListContainersSegmentResponse) Version() string { + return lcsr.rawResponse.Header.Get("x-ms-version") +} + +// Logging - Azure Analytics Logging settings. +type Logging struct { + // Version - The version of Storage Analytics to configure. + Version string `xml:"Version"` + // Delete - Indicates whether all delete requests should be logged. + Delete bool `xml:"Delete"` + // Read - Indicates whether all read requests should be logged. + Read bool `xml:"Read"` + // Write - Indicates whether all write requests should be logged. + Write bool `xml:"Write"` + RetentionPolicy RetentionPolicy `xml:"RetentionPolicy"` +} + +// Metrics - a summary of request statistics grouped by API in hour or minute aggregates for blobs +type Metrics struct { + // Version - The version of Storage Analytics to configure. + Version *string `xml:"Version"` + // Enabled - Indicates whether metrics are enabled for the Blob service. + Enabled bool `xml:"Enabled"` + // IncludeAPIs - Indicates whether metrics should generate summary statistics for called API operations. + IncludeAPIs *bool `xml:"IncludeAPIs"` + RetentionPolicy *RetentionPolicy `xml:"RetentionPolicy"` +} + +// PageBlobClearPagesResponse ... +type PageBlobClearPagesResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (pbcpr PageBlobClearPagesResponse) Response() *http.Response { + return pbcpr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (pbcpr PageBlobClearPagesResponse) StatusCode() int { + return pbcpr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (pbcpr PageBlobClearPagesResponse) Status() string { + return pbcpr.rawResponse.Status +} + +// BlobSequenceNumber returns the value for header x-ms-blob-sequence-number. +func (pbcpr PageBlobClearPagesResponse) BlobSequenceNumber() int64 { + s := pbcpr.rawResponse.Header.Get("x-ms-blob-sequence-number") + if s == "" { + return -1 + } + i, err := strconv.ParseInt(s, 10, 64) + if err != nil { + i = 0 + } + return i +} + +// ContentMD5 returns the value for header Content-MD5. +func (pbcpr PageBlobClearPagesResponse) ContentMD5() []byte { + s := pbcpr.rawResponse.Header.Get("Content-MD5") + if s == "" { + return nil + } + b, err := base64.StdEncoding.DecodeString(s) + if err != nil { + b = nil + } + return b +} + +// Date returns the value for header Date. +func (pbcpr PageBlobClearPagesResponse) Date() time.Time { + s := pbcpr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (pbcpr PageBlobClearPagesResponse) ErrorCode() string { + return pbcpr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (pbcpr PageBlobClearPagesResponse) ETag() ETag { + return ETag(pbcpr.rawResponse.Header.Get("ETag")) +} + +// LastModified returns the value for header Last-Modified. +func (pbcpr PageBlobClearPagesResponse) LastModified() time.Time { + s := pbcpr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// RequestID returns the value for header x-ms-request-id. +func (pbcpr PageBlobClearPagesResponse) RequestID() string { + return pbcpr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (pbcpr PageBlobClearPagesResponse) Version() string { + return pbcpr.rawResponse.Header.Get("x-ms-version") +} + +// PageBlobCopyIncrementalResponse ... +type PageBlobCopyIncrementalResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (pbcir PageBlobCopyIncrementalResponse) Response() *http.Response { + return pbcir.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (pbcir PageBlobCopyIncrementalResponse) StatusCode() int { + return pbcir.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (pbcir PageBlobCopyIncrementalResponse) Status() string { + return pbcir.rawResponse.Status +} + +// CopyID returns the value for header x-ms-copy-id. +func (pbcir PageBlobCopyIncrementalResponse) CopyID() string { + return pbcir.rawResponse.Header.Get("x-ms-copy-id") +} + +// CopyStatus returns the value for header x-ms-copy-status. +func (pbcir PageBlobCopyIncrementalResponse) CopyStatus() CopyStatusType { + return CopyStatusType(pbcir.rawResponse.Header.Get("x-ms-copy-status")) +} + +// Date returns the value for header Date. +func (pbcir PageBlobCopyIncrementalResponse) Date() time.Time { + s := pbcir.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (pbcir PageBlobCopyIncrementalResponse) ErrorCode() string { + return pbcir.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (pbcir PageBlobCopyIncrementalResponse) ETag() ETag { + return ETag(pbcir.rawResponse.Header.Get("ETag")) +} + +// LastModified returns the value for header Last-Modified. +func (pbcir PageBlobCopyIncrementalResponse) LastModified() time.Time { + s := pbcir.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// RequestID returns the value for header x-ms-request-id. +func (pbcir PageBlobCopyIncrementalResponse) RequestID() string { + return pbcir.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (pbcir PageBlobCopyIncrementalResponse) Version() string { + return pbcir.rawResponse.Header.Get("x-ms-version") +} + +// PageBlobCreateResponse ... +type PageBlobCreateResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (pbcr PageBlobCreateResponse) Response() *http.Response { + return pbcr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (pbcr PageBlobCreateResponse) StatusCode() int { + return pbcr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (pbcr PageBlobCreateResponse) Status() string { + return pbcr.rawResponse.Status +} + +// ContentMD5 returns the value for header Content-MD5. +func (pbcr PageBlobCreateResponse) ContentMD5() []byte { + s := pbcr.rawResponse.Header.Get("Content-MD5") + if s == "" { + return nil + } + b, err := base64.StdEncoding.DecodeString(s) + if err != nil { + b = nil + } + return b +} + +// Date returns the value for header Date. +func (pbcr PageBlobCreateResponse) Date() time.Time { + s := pbcr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (pbcr PageBlobCreateResponse) ErrorCode() string { + return pbcr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (pbcr PageBlobCreateResponse) ETag() ETag { + return ETag(pbcr.rawResponse.Header.Get("ETag")) +} + +// IsServerEncrypted returns the value for header x-ms-request-server-encrypted. +func (pbcr PageBlobCreateResponse) IsServerEncrypted() string { + return pbcr.rawResponse.Header.Get("x-ms-request-server-encrypted") +} + +// LastModified returns the value for header Last-Modified. +func (pbcr PageBlobCreateResponse) LastModified() time.Time { + s := pbcr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// RequestID returns the value for header x-ms-request-id. +func (pbcr PageBlobCreateResponse) RequestID() string { + return pbcr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (pbcr PageBlobCreateResponse) Version() string { + return pbcr.rawResponse.Header.Get("x-ms-version") +} + +// PageBlobResizeResponse ... +type PageBlobResizeResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (pbrr PageBlobResizeResponse) Response() *http.Response { + return pbrr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (pbrr PageBlobResizeResponse) StatusCode() int { + return pbrr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (pbrr PageBlobResizeResponse) Status() string { + return pbrr.rawResponse.Status +} + +// BlobSequenceNumber returns the value for header x-ms-blob-sequence-number. +func (pbrr PageBlobResizeResponse) BlobSequenceNumber() int64 { + s := pbrr.rawResponse.Header.Get("x-ms-blob-sequence-number") + if s == "" { + return -1 + } + i, err := strconv.ParseInt(s, 10, 64) + if err != nil { + i = 0 + } + return i +} + +// Date returns the value for header Date. +func (pbrr PageBlobResizeResponse) Date() time.Time { + s := pbrr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (pbrr PageBlobResizeResponse) ErrorCode() string { + return pbrr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (pbrr PageBlobResizeResponse) ETag() ETag { + return ETag(pbrr.rawResponse.Header.Get("ETag")) +} + +// LastModified returns the value for header Last-Modified. +func (pbrr PageBlobResizeResponse) LastModified() time.Time { + s := pbrr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// RequestID returns the value for header x-ms-request-id. +func (pbrr PageBlobResizeResponse) RequestID() string { + return pbrr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (pbrr PageBlobResizeResponse) Version() string { + return pbrr.rawResponse.Header.Get("x-ms-version") +} + +// PageBlobUpdateSequenceNumberResponse ... +type PageBlobUpdateSequenceNumberResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (pbusnr PageBlobUpdateSequenceNumberResponse) Response() *http.Response { + return pbusnr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (pbusnr PageBlobUpdateSequenceNumberResponse) StatusCode() int { + return pbusnr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (pbusnr PageBlobUpdateSequenceNumberResponse) Status() string { + return pbusnr.rawResponse.Status +} + +// BlobSequenceNumber returns the value for header x-ms-blob-sequence-number. +func (pbusnr PageBlobUpdateSequenceNumberResponse) BlobSequenceNumber() int64 { + s := pbusnr.rawResponse.Header.Get("x-ms-blob-sequence-number") + if s == "" { + return -1 + } + i, err := strconv.ParseInt(s, 10, 64) + if err != nil { + i = 0 + } + return i +} + +// Date returns the value for header Date. +func (pbusnr PageBlobUpdateSequenceNumberResponse) Date() time.Time { + s := pbusnr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (pbusnr PageBlobUpdateSequenceNumberResponse) ErrorCode() string { + return pbusnr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (pbusnr PageBlobUpdateSequenceNumberResponse) ETag() ETag { + return ETag(pbusnr.rawResponse.Header.Get("ETag")) +} + +// LastModified returns the value for header Last-Modified. +func (pbusnr PageBlobUpdateSequenceNumberResponse) LastModified() time.Time { + s := pbusnr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// RequestID returns the value for header x-ms-request-id. +func (pbusnr PageBlobUpdateSequenceNumberResponse) RequestID() string { + return pbusnr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (pbusnr PageBlobUpdateSequenceNumberResponse) Version() string { + return pbusnr.rawResponse.Header.Get("x-ms-version") +} + +// PageBlobUploadPagesFromURLResponse ... +type PageBlobUploadPagesFromURLResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (pbupfur PageBlobUploadPagesFromURLResponse) Response() *http.Response { + return pbupfur.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (pbupfur PageBlobUploadPagesFromURLResponse) StatusCode() int { + return pbupfur.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (pbupfur PageBlobUploadPagesFromURLResponse) Status() string { + return pbupfur.rawResponse.Status +} + +// BlobSequenceNumber returns the value for header x-ms-blob-sequence-number. +func (pbupfur PageBlobUploadPagesFromURLResponse) BlobSequenceNumber() int64 { + s := pbupfur.rawResponse.Header.Get("x-ms-blob-sequence-number") + if s == "" { + return -1 + } + i, err := strconv.ParseInt(s, 10, 64) + if err != nil { + i = 0 + } + return i +} + +// ContentMD5 returns the value for header Content-MD5. +func (pbupfur PageBlobUploadPagesFromURLResponse) ContentMD5() []byte { + s := pbupfur.rawResponse.Header.Get("Content-MD5") + if s == "" { + return nil + } + b, err := base64.StdEncoding.DecodeString(s) + if err != nil { + b = nil + } + return b +} + +// Date returns the value for header Date. +func (pbupfur PageBlobUploadPagesFromURLResponse) Date() time.Time { + s := pbupfur.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (pbupfur PageBlobUploadPagesFromURLResponse) ErrorCode() string { + return pbupfur.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (pbupfur PageBlobUploadPagesFromURLResponse) ETag() ETag { + return ETag(pbupfur.rawResponse.Header.Get("ETag")) +} + +// IsServerEncrypted returns the value for header x-ms-request-server-encrypted. +func (pbupfur PageBlobUploadPagesFromURLResponse) IsServerEncrypted() string { + return pbupfur.rawResponse.Header.Get("x-ms-request-server-encrypted") +} + +// LastModified returns the value for header Last-Modified. +func (pbupfur PageBlobUploadPagesFromURLResponse) LastModified() time.Time { + s := pbupfur.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// RequestID returns the value for header x-ms-request-id. +func (pbupfur PageBlobUploadPagesFromURLResponse) RequestID() string { + return pbupfur.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (pbupfur PageBlobUploadPagesFromURLResponse) Version() string { + return pbupfur.rawResponse.Header.Get("x-ms-version") +} + +// PageBlobUploadPagesResponse ... +type PageBlobUploadPagesResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (pbupr PageBlobUploadPagesResponse) Response() *http.Response { + return pbupr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (pbupr PageBlobUploadPagesResponse) StatusCode() int { + return pbupr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (pbupr PageBlobUploadPagesResponse) Status() string { + return pbupr.rawResponse.Status +} + +// BlobSequenceNumber returns the value for header x-ms-blob-sequence-number. +func (pbupr PageBlobUploadPagesResponse) BlobSequenceNumber() int64 { + s := pbupr.rawResponse.Header.Get("x-ms-blob-sequence-number") + if s == "" { + return -1 + } + i, err := strconv.ParseInt(s, 10, 64) + if err != nil { + i = 0 + } + return i +} + +// ContentMD5 returns the value for header Content-MD5. +func (pbupr PageBlobUploadPagesResponse) ContentMD5() []byte { + s := pbupr.rawResponse.Header.Get("Content-MD5") + if s == "" { + return nil + } + b, err := base64.StdEncoding.DecodeString(s) + if err != nil { + b = nil + } + return b +} + +// Date returns the value for header Date. +func (pbupr PageBlobUploadPagesResponse) Date() time.Time { + s := pbupr.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (pbupr PageBlobUploadPagesResponse) ErrorCode() string { + return pbupr.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (pbupr PageBlobUploadPagesResponse) ETag() ETag { + return ETag(pbupr.rawResponse.Header.Get("ETag")) +} + +// IsServerEncrypted returns the value for header x-ms-request-server-encrypted. +func (pbupr PageBlobUploadPagesResponse) IsServerEncrypted() string { + return pbupr.rawResponse.Header.Get("x-ms-request-server-encrypted") +} + +// LastModified returns the value for header Last-Modified. +func (pbupr PageBlobUploadPagesResponse) LastModified() time.Time { + s := pbupr.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// RequestID returns the value for header x-ms-request-id. +func (pbupr PageBlobUploadPagesResponse) RequestID() string { + return pbupr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (pbupr PageBlobUploadPagesResponse) Version() string { + return pbupr.rawResponse.Header.Get("x-ms-version") +} + +// PageList - the list of pages +type PageList struct { + rawResponse *http.Response + PageRange []PageRange `xml:"PageRange"` + ClearRange []ClearRange `xml:"ClearRange"` +} + +// Response returns the raw HTTP response object. +func (pl PageList) Response() *http.Response { + return pl.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (pl PageList) StatusCode() int { + return pl.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (pl PageList) Status() string { + return pl.rawResponse.Status +} + +// BlobContentLength returns the value for header x-ms-blob-content-length. +func (pl PageList) BlobContentLength() int64 { + s := pl.rawResponse.Header.Get("x-ms-blob-content-length") + if s == "" { + return -1 + } + i, err := strconv.ParseInt(s, 10, 64) + if err != nil { + i = 0 + } + return i +} + +// Date returns the value for header Date. +func (pl PageList) Date() time.Time { + s := pl.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (pl PageList) ErrorCode() string { + return pl.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (pl PageList) ETag() ETag { + return ETag(pl.rawResponse.Header.Get("ETag")) +} + +// LastModified returns the value for header Last-Modified. +func (pl PageList) LastModified() time.Time { + s := pl.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// RequestID returns the value for header x-ms-request-id. +func (pl PageList) RequestID() string { + return pl.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (pl PageList) Version() string { + return pl.rawResponse.Header.Get("x-ms-version") +} + +// PageRange ... +type PageRange struct { + Start int64 `xml:"Start"` + End int64 `xml:"End"` +} + +// RetentionPolicy - the retention policy which determines how long the associated data should persist +type RetentionPolicy struct { + // Enabled - Indicates whether a retention policy is enabled for the storage service + Enabled bool `xml:"Enabled"` + // Days - Indicates the number of days that metrics or logging or soft-deleted data should be retained. All data older than this value will be deleted + Days *int32 `xml:"Days"` +} + +// ServiceGetAccountInfoResponse ... +type ServiceGetAccountInfoResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (sgair ServiceGetAccountInfoResponse) Response() *http.Response { + return sgair.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (sgair ServiceGetAccountInfoResponse) StatusCode() int { + return sgair.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (sgair ServiceGetAccountInfoResponse) Status() string { + return sgair.rawResponse.Status +} + +// AccountKind returns the value for header x-ms-account-kind. +func (sgair ServiceGetAccountInfoResponse) AccountKind() AccountKindType { + return AccountKindType(sgair.rawResponse.Header.Get("x-ms-account-kind")) +} + +// Date returns the value for header Date. +func (sgair ServiceGetAccountInfoResponse) Date() time.Time { + s := sgair.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (sgair ServiceGetAccountInfoResponse) ErrorCode() string { + return sgair.rawResponse.Header.Get("x-ms-error-code") +} + +// RequestID returns the value for header x-ms-request-id. +func (sgair ServiceGetAccountInfoResponse) RequestID() string { + return sgair.rawResponse.Header.Get("x-ms-request-id") +} + +// SkuName returns the value for header x-ms-sku-name. +func (sgair ServiceGetAccountInfoResponse) SkuName() SkuNameType { + return SkuNameType(sgair.rawResponse.Header.Get("x-ms-sku-name")) +} + +// Version returns the value for header x-ms-version. +func (sgair ServiceGetAccountInfoResponse) Version() string { + return sgair.rawResponse.Header.Get("x-ms-version") +} + +// ServiceSetPropertiesResponse ... +type ServiceSetPropertiesResponse struct { + rawResponse *http.Response +} + +// Response returns the raw HTTP response object. +func (sspr ServiceSetPropertiesResponse) Response() *http.Response { + return sspr.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (sspr ServiceSetPropertiesResponse) StatusCode() int { + return sspr.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (sspr ServiceSetPropertiesResponse) Status() string { + return sspr.rawResponse.Status +} + +// ErrorCode returns the value for header x-ms-error-code. +func (sspr ServiceSetPropertiesResponse) ErrorCode() string { + return sspr.rawResponse.Header.Get("x-ms-error-code") +} + +// RequestID returns the value for header x-ms-request-id. +func (sspr ServiceSetPropertiesResponse) RequestID() string { + return sspr.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (sspr ServiceSetPropertiesResponse) Version() string { + return sspr.rawResponse.Header.Get("x-ms-version") +} + +// SignedIdentifier - signed identifier +type SignedIdentifier struct { + // ID - a unique id + ID string `xml:"Id"` + AccessPolicy AccessPolicy `xml:"AccessPolicy"` +} + +// SignedIdentifiers - Wraps the response from the containerClient.GetAccessPolicy method. +type SignedIdentifiers struct { + rawResponse *http.Response + Items []SignedIdentifier `xml:"SignedIdentifier"` +} + +// Response returns the raw HTTP response object. +func (si SignedIdentifiers) Response() *http.Response { + return si.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (si SignedIdentifiers) StatusCode() int { + return si.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (si SignedIdentifiers) Status() string { + return si.rawResponse.Status +} + +// BlobPublicAccess returns the value for header x-ms-blob-public-access. +func (si SignedIdentifiers) BlobPublicAccess() PublicAccessType { + return PublicAccessType(si.rawResponse.Header.Get("x-ms-blob-public-access")) +} + +// Date returns the value for header Date. +func (si SignedIdentifiers) Date() time.Time { + s := si.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (si SignedIdentifiers) ErrorCode() string { + return si.rawResponse.Header.Get("x-ms-error-code") +} + +// ETag returns the value for header ETag. +func (si SignedIdentifiers) ETag() ETag { + return ETag(si.rawResponse.Header.Get("ETag")) +} + +// LastModified returns the value for header Last-Modified. +func (si SignedIdentifiers) LastModified() time.Time { + s := si.rawResponse.Header.Get("Last-Modified") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// RequestID returns the value for header x-ms-request-id. +func (si SignedIdentifiers) RequestID() string { + return si.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (si SignedIdentifiers) Version() string { + return si.rawResponse.Header.Get("x-ms-version") +} + +// StaticWebsite - The properties that enable an account to host a static website +type StaticWebsite struct { + // Enabled - Indicates whether this account is hosting a static website + Enabled bool `xml:"Enabled"` + // IndexDocument - The default name of the index page under each directory + IndexDocument *string `xml:"IndexDocument"` + // ErrorDocument404Path - The absolute path of the custom 404 page + ErrorDocument404Path *string `xml:"ErrorDocument404Path"` +} + +// StorageServiceProperties - Storage Service Properties. +type StorageServiceProperties struct { + rawResponse *http.Response + Logging *Logging `xml:"Logging"` + HourMetrics *Metrics `xml:"HourMetrics"` + MinuteMetrics *Metrics `xml:"MinuteMetrics"` + // Cors - The set of CORS rules. + Cors []CorsRule `xml:"Cors>CorsRule"` + // DefaultServiceVersion - The default version to use for requests to the Blob service if an incoming request's version is not specified. Possible values include version 2008-10-27 and all more recent versions + DefaultServiceVersion *string `xml:"DefaultServiceVersion"` + DeleteRetentionPolicy *RetentionPolicy `xml:"DeleteRetentionPolicy"` + StaticWebsite *StaticWebsite `xml:"StaticWebsite"` +} + +// Response returns the raw HTTP response object. +func (ssp StorageServiceProperties) Response() *http.Response { + return ssp.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (ssp StorageServiceProperties) StatusCode() int { + return ssp.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (ssp StorageServiceProperties) Status() string { + return ssp.rawResponse.Status +} + +// ErrorCode returns the value for header x-ms-error-code. +func (ssp StorageServiceProperties) ErrorCode() string { + return ssp.rawResponse.Header.Get("x-ms-error-code") +} + +// RequestID returns the value for header x-ms-request-id. +func (ssp StorageServiceProperties) RequestID() string { + return ssp.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (ssp StorageServiceProperties) Version() string { + return ssp.rawResponse.Header.Get("x-ms-version") +} + +// StorageServiceStats - Stats for the storage service. +type StorageServiceStats struct { + rawResponse *http.Response + GeoReplication *GeoReplication `xml:"GeoReplication"` +} + +// Response returns the raw HTTP response object. +func (sss StorageServiceStats) Response() *http.Response { + return sss.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (sss StorageServiceStats) StatusCode() int { + return sss.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (sss StorageServiceStats) Status() string { + return sss.rawResponse.Status +} + +// Date returns the value for header Date. +func (sss StorageServiceStats) Date() time.Time { + s := sss.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (sss StorageServiceStats) ErrorCode() string { + return sss.rawResponse.Header.Get("x-ms-error-code") +} + +// RequestID returns the value for header x-ms-request-id. +func (sss StorageServiceStats) RequestID() string { + return sss.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (sss StorageServiceStats) Version() string { + return sss.rawResponse.Header.Get("x-ms-version") +} + +// UserDelegationKey - A user delegation key +type UserDelegationKey struct { + rawResponse *http.Response + // SignedOid - The Azure Active Directory object ID in GUID format. + SignedOid string `xml:"SignedOid"` + // SignedTid - The Azure Active Directory tenant ID in GUID format + SignedTid string `xml:"SignedTid"` + // SignedStart - The date-time the key is active + SignedStart time.Time `xml:"SignedStart"` + // SignedExpiry - The date-time the key expires + SignedExpiry time.Time `xml:"SignedExpiry"` + // SignedService - Abbreviation of the Azure Storage service that accepts the key + SignedService string `xml:"SignedService"` + // SignedVersion - The service version that created the key + SignedVersion string `xml:"SignedVersion"` + // Value - The key as a base64 string + Value string `xml:"Value"` +} + +func (udk UserDelegationKey) ComputeHMACSHA256(message string) (base64String string) { + bytes, _ := base64.StdEncoding.DecodeString(udk.Value) + h := hmac.New(sha256.New, bytes) + h.Write([]byte(message)) + return base64.StdEncoding.EncodeToString(h.Sum(nil)) +} + +// MarshalXML implements the xml.Marshaler interface for UserDelegationKey. +func (udk UserDelegationKey) MarshalXML(e *xml.Encoder, start xml.StartElement) error { + udk2 := (*userDelegationKey)(unsafe.Pointer(&udk)) + return e.EncodeElement(*udk2, start) +} + +// UnmarshalXML implements the xml.Unmarshaler interface for UserDelegationKey. +func (udk *UserDelegationKey) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { + udk2 := (*userDelegationKey)(unsafe.Pointer(udk)) + return d.DecodeElement(udk2, &start) +} + +// Response returns the raw HTTP response object. +func (udk UserDelegationKey) Response() *http.Response { + return udk.rawResponse +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (udk UserDelegationKey) StatusCode() int { + return udk.rawResponse.StatusCode +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (udk UserDelegationKey) Status() string { + return udk.rawResponse.Status +} + +// Date returns the value for header Date. +func (udk UserDelegationKey) Date() time.Time { + s := udk.rawResponse.Header.Get("Date") + if s == "" { + return time.Time{} + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + t = time.Time{} + } + return t +} + +// ErrorCode returns the value for header x-ms-error-code. +func (udk UserDelegationKey) ErrorCode() string { + return udk.rawResponse.Header.Get("x-ms-error-code") +} + +// RequestID returns the value for header x-ms-request-id. +func (udk UserDelegationKey) RequestID() string { + return udk.rawResponse.Header.Get("x-ms-request-id") +} + +// Version returns the value for header x-ms-version. +func (udk UserDelegationKey) Version() string { + return udk.rawResponse.Header.Get("x-ms-version") +} + +func init() { + if reflect.TypeOf((*UserDelegationKey)(nil)).Elem().Size() != reflect.TypeOf((*userDelegationKey)(nil)).Elem().Size() { + validateError(errors.New("size mismatch between UserDelegationKey and userDelegationKey")) + } + if reflect.TypeOf((*AccessPolicy)(nil)).Elem().Size() != reflect.TypeOf((*accessPolicy)(nil)).Elem().Size() { + validateError(errors.New("size mismatch between AccessPolicy and accessPolicy")) + } + if reflect.TypeOf((*BlobProperties)(nil)).Elem().Size() != reflect.TypeOf((*blobProperties)(nil)).Elem().Size() { + validateError(errors.New("size mismatch between BlobProperties and blobProperties")) + } + if reflect.TypeOf((*ContainerProperties)(nil)).Elem().Size() != reflect.TypeOf((*containerProperties)(nil)).Elem().Size() { + validateError(errors.New("size mismatch between ContainerProperties and containerProperties")) + } + if reflect.TypeOf((*GeoReplication)(nil)).Elem().Size() != reflect.TypeOf((*geoReplication)(nil)).Elem().Size() { + validateError(errors.New("size mismatch between GeoReplication and geoReplication")) + } +} + +const ( + rfc3339Format = "2006-01-02T15:04:05Z" //This was wrong in the generated code, FYI +) + +// used to convert times from UTC to GMT before sending across the wire +var gmt = time.FixedZone("GMT", 0) + +// internal type used for marshalling time in RFC1123 format +type timeRFC1123 struct { + time.Time +} + +// MarshalText implements the encoding.TextMarshaler interface for timeRFC1123. +func (t timeRFC1123) MarshalText() ([]byte, error) { + return []byte(t.Format(time.RFC1123)), nil +} + +// UnmarshalText implements the encoding.TextUnmarshaler interface for timeRFC1123. +func (t *timeRFC1123) UnmarshalText(data []byte) (err error) { + t.Time, err = time.Parse(time.RFC1123, string(data)) + return +} + +// internal type used for marshalling time in RFC3339 format +type timeRFC3339 struct { + time.Time +} + +// MarshalText implements the encoding.TextMarshaler interface for timeRFC3339. +func (t timeRFC3339) MarshalText() ([]byte, error) { + return []byte(t.Format(rfc3339Format)), nil +} + +// UnmarshalText implements the encoding.TextUnmarshaler interface for timeRFC3339. +func (t *timeRFC3339) UnmarshalText(data []byte) (err error) { + t.Time, err = time.Parse(rfc3339Format, string(data)) + return +} + +// internal type used for marshalling base64 encoded strings +type base64Encoded struct { + b []byte +} + +// MarshalText implements the encoding.TextMarshaler interface for base64Encoded. +func (c base64Encoded) MarshalText() ([]byte, error) { + return []byte(base64.StdEncoding.EncodeToString(c.b)), nil +} + +// UnmarshalText implements the encoding.TextUnmarshaler interface for base64Encoded. +func (c *base64Encoded) UnmarshalText(data []byte) error { + b, err := base64.StdEncoding.DecodeString(string(data)) + if err != nil { + return err + } + c.b = b + return nil +} + +// internal type used for marshalling +type userDelegationKey struct { + rawResponse *http.Response + SignedOid string `xml:"SignedOid"` + SignedTid string `xml:"SignedTid"` + SignedStart timeRFC3339 `xml:"SignedStart"` + SignedExpiry timeRFC3339 `xml:"SignedExpiry"` + SignedService string `xml:"SignedService"` + SignedVersion string `xml:"SignedVersion"` + Value string `xml:"Value"` +} + +// internal type used for marshalling +type accessPolicy struct { + Start timeRFC3339 `xml:"Start"` + Expiry timeRFC3339 `xml:"Expiry"` + Permission string `xml:"Permission"` +} + +// internal type used for marshalling +type blobProperties struct { + // XMLName is used for marshalling and is subject to removal in a future release. + XMLName xml.Name `xml:"Properties"` + CreationTime *timeRFC1123 `xml:"Creation-Time"` + LastModified timeRFC1123 `xml:"Last-Modified"` + Etag ETag `xml:"Etag"` + ContentLength *int64 `xml:"Content-Length"` + ContentType *string `xml:"Content-Type"` + ContentEncoding *string `xml:"Content-Encoding"` + ContentLanguage *string `xml:"Content-Language"` + ContentMD5 base64Encoded `xml:"Content-MD5"` + ContentDisposition *string `xml:"Content-Disposition"` + CacheControl *string `xml:"Cache-Control"` + BlobSequenceNumber *int64 `xml:"x-ms-blob-sequence-number"` + BlobType BlobType `xml:"BlobType"` + LeaseStatus LeaseStatusType `xml:"LeaseStatus"` + LeaseState LeaseStateType `xml:"LeaseState"` + LeaseDuration LeaseDurationType `xml:"LeaseDuration"` + CopyID *string `xml:"CopyId"` + CopyStatus CopyStatusType `xml:"CopyStatus"` + CopySource *string `xml:"CopySource"` + CopyProgress *string `xml:"CopyProgress"` + CopyCompletionTime *timeRFC1123 `xml:"CopyCompletionTime"` + CopyStatusDescription *string `xml:"CopyStatusDescription"` + ServerEncrypted *bool `xml:"ServerEncrypted"` + IncrementalCopy *bool `xml:"IncrementalCopy"` + DestinationSnapshot *string `xml:"DestinationSnapshot"` + DeletedTime *timeRFC1123 `xml:"DeletedTime"` + RemainingRetentionDays *int32 `xml:"RemainingRetentionDays"` + AccessTier AccessTierType `xml:"AccessTier"` + AccessTierInferred *bool `xml:"AccessTierInferred"` + ArchiveStatus ArchiveStatusType `xml:"ArchiveStatus"` + AccessTierChangeTime *timeRFC1123 `xml:"AccessTierChangeTime"` +} + +// internal type used for marshalling +type containerProperties struct { + LastModified timeRFC1123 `xml:"Last-Modified"` + Etag ETag `xml:"Etag"` + LeaseStatus LeaseStatusType `xml:"LeaseStatus"` + LeaseState LeaseStateType `xml:"LeaseState"` + LeaseDuration LeaseDurationType `xml:"LeaseDuration"` + PublicAccess PublicAccessType `xml:"PublicAccess"` + HasImmutabilityPolicy *bool `xml:"HasImmutabilityPolicy"` + HasLegalHold *bool `xml:"HasLegalHold"` +} + +// internal type used for marshalling +type geoReplication struct { + Status GeoReplicationStatusType `xml:"Status"` + LastSyncTime timeRFC1123 `xml:"LastSyncTime"` +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_page_blob.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_page_blob.go new file mode 100644 index 0000000..42e27da --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_page_blob.go @@ -0,0 +1,896 @@ +package azblob + +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "encoding/base64" + "encoding/xml" + "github.com/Azure/azure-pipeline-go/pipeline" + "io" + "io/ioutil" + "net/http" + "net/url" + "strconv" + "time" +) + +// pageBlobClient is the client for the PageBlob methods of the Azblob service. +type pageBlobClient struct { + managementClient +} + +// newPageBlobClient creates an instance of the pageBlobClient client. +func newPageBlobClient(url url.URL, p pipeline.Pipeline) pageBlobClient { + return pageBlobClient{newManagementClient(url, p)} +} + +// ClearPages the Clear Pages operation clears a set of pages from a page blob +// +// contentLength is the length of the request. timeout is the timeout parameter is expressed in seconds. For more +// information, see Setting +// Timeouts for Blob Service Operations. rangeParameter is return only the bytes of the blob in the specified +// range. leaseID is if specified, the operation only succeeds if the resource's lease is active and matches this ID. +// ifSequenceNumberLessThanOrEqualTo is specify this header value to operate only on a blob if it has a sequence number +// less than or equal to the specified. ifSequenceNumberLessThan is specify this header value to operate only on a blob +// if it has a sequence number less than the specified. ifSequenceNumberEqualTo is specify this header value to operate +// only on a blob if it has the specified sequence number. ifModifiedSince is specify this header value to operate only +// on a blob if it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to +// operate only on a blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value +// to operate only on blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs +// without a matching value. requestID is provides a client-generated, opaque value with a 1 KB character limit that is +// recorded in the analytics logs when storage analytics logging is enabled. +func (client pageBlobClient) ClearPages(ctx context.Context, contentLength int64, timeout *int32, rangeParameter *string, leaseID *string, ifSequenceNumberLessThanOrEqualTo *int64, ifSequenceNumberLessThan *int64, ifSequenceNumberEqualTo *int64, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*PageBlobClearPagesResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.clearPagesPreparer(contentLength, timeout, rangeParameter, leaseID, ifSequenceNumberLessThanOrEqualTo, ifSequenceNumberLessThan, ifSequenceNumberEqualTo, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.clearPagesResponder}, req) + if err != nil { + return nil, err + } + return resp.(*PageBlobClearPagesResponse), err +} + +// clearPagesPreparer prepares the ClearPages request. +func (client pageBlobClient) clearPagesPreparer(contentLength int64, timeout *int32, rangeParameter *string, leaseID *string, ifSequenceNumberLessThanOrEqualTo *int64, ifSequenceNumberLessThan *int64, ifSequenceNumberEqualTo *int64, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "page") + req.URL.RawQuery = params.Encode() + req.Header.Set("Content-Length", strconv.FormatInt(contentLength, 10)) + if rangeParameter != nil { + req.Header.Set("x-ms-range", *rangeParameter) + } + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + if ifSequenceNumberLessThanOrEqualTo != nil { + req.Header.Set("x-ms-if-sequence-number-le", strconv.FormatInt(*ifSequenceNumberLessThanOrEqualTo, 10)) + } + if ifSequenceNumberLessThan != nil { + req.Header.Set("x-ms-if-sequence-number-lt", strconv.FormatInt(*ifSequenceNumberLessThan, 10)) + } + if ifSequenceNumberEqualTo != nil { + req.Header.Set("x-ms-if-sequence-number-eq", strconv.FormatInt(*ifSequenceNumberEqualTo, 10)) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + req.Header.Set("x-ms-page-write", "clear") + return req, nil +} + +// clearPagesResponder handles the response to the ClearPages request. +func (client pageBlobClient) clearPagesResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusCreated) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &PageBlobClearPagesResponse{rawResponse: resp.Response()}, err +} + +// CopyIncremental the Copy Incremental operation copies a snapshot of the source page blob to a destination page blob. +// The snapshot is copied such that only the differential changes between the previously copied snapshot are +// transferred to the destination. The copied snapshots are complete copies of the original snapshot and can be read or +// copied from as usual. This API is supported since REST version 2016-05-31. +// +// copySource is specifies the name of the source page blob snapshot. This value is a URL of up to 2 KB in length that +// specifies a page blob snapshot. The value should be URL-encoded as it would appear in a request URI. The source blob +// must either be public or must be authenticated via a shared access signature. timeout is the timeout parameter is +// expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. ifModifiedSince is specify this header value to operate only on a blob if +// it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only +// on a blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value to operate +// only on blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a +// matching value. requestID is provides a client-generated, opaque value with a 1 KB character limit that is recorded +// in the analytics logs when storage analytics logging is enabled. +func (client pageBlobClient) CopyIncremental(ctx context.Context, copySource string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*PageBlobCopyIncrementalResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.copyIncrementalPreparer(copySource, timeout, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.copyIncrementalResponder}, req) + if err != nil { + return nil, err + } + return resp.(*PageBlobCopyIncrementalResponse), err +} + +// copyIncrementalPreparer prepares the CopyIncremental request. +func (client pageBlobClient) copyIncrementalPreparer(copySource string, timeout *int32, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "incrementalcopy") + req.URL.RawQuery = params.Encode() + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + req.Header.Set("x-ms-copy-source", copySource) + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// copyIncrementalResponder handles the response to the CopyIncremental request. +func (client pageBlobClient) copyIncrementalResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusAccepted) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &PageBlobCopyIncrementalResponse{rawResponse: resp.Response()}, err +} + +// Create the Create operation creates a new page blob. +// +// contentLength is the length of the request. blobContentLength is this header specifies the maximum size for the page +// blob, up to 1 TB. The page blob size must be aligned to a 512-byte boundary. timeout is the timeout parameter is +// expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. blobContentType is optional. Sets the blob's content type. If specified, +// this property is stored with the blob and returned with a read request. blobContentEncoding is optional. Sets the +// blob's content encoding. If specified, this property is stored with the blob and returned with a read request. +// blobContentLanguage is optional. Set the blob's content language. If specified, this property is stored with the +// blob and returned with a read request. blobContentMD5 is optional. An MD5 hash of the blob content. Note that this +// hash is not validated, as the hashes for the individual blocks were validated when each was uploaded. +// blobCacheControl is optional. Sets the blob's cache control. If specified, this property is stored with the blob and +// returned with a read request. metadata is optional. Specifies a user-defined name-value pair associated with the +// blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the +// destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified +// metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, +// metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and +// Metadata for more information. leaseID is if specified, the operation only succeeds if the resource's lease is +// active and matches this ID. blobContentDisposition is optional. Sets the blob's Content-Disposition header. +// ifModifiedSince is specify this header value to operate only on a blob if it has been modified since the specified +// date/time. ifUnmodifiedSince is specify this header value to operate only on a blob if it has not been modified +// since the specified date/time. ifMatch is specify an ETag value to operate only on blobs with a matching value. +// ifNoneMatch is specify an ETag value to operate only on blobs without a matching value. blobSequenceNumber is set +// for page blobs only. The sequence number is a user-controlled value that you can use to track requests. The value of +// the sequence number must be between 0 and 2^63 - 1. requestID is provides a client-generated, opaque value with a 1 +// KB character limit that is recorded in the analytics logs when storage analytics logging is enabled. +func (client pageBlobClient) Create(ctx context.Context, contentLength int64, blobContentLength int64, timeout *int32, blobContentType *string, blobContentEncoding *string, blobContentLanguage *string, blobContentMD5 []byte, blobCacheControl *string, metadata map[string]string, leaseID *string, blobContentDisposition *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, blobSequenceNumber *int64, requestID *string) (*PageBlobCreateResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.createPreparer(contentLength, blobContentLength, timeout, blobContentType, blobContentEncoding, blobContentLanguage, blobContentMD5, blobCacheControl, metadata, leaseID, blobContentDisposition, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, blobSequenceNumber, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.createResponder}, req) + if err != nil { + return nil, err + } + return resp.(*PageBlobCreateResponse), err +} + +// createPreparer prepares the Create request. +func (client pageBlobClient) createPreparer(contentLength int64, blobContentLength int64, timeout *int32, blobContentType *string, blobContentEncoding *string, blobContentLanguage *string, blobContentMD5 []byte, blobCacheControl *string, metadata map[string]string, leaseID *string, blobContentDisposition *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, blobSequenceNumber *int64, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + req.URL.RawQuery = params.Encode() + req.Header.Set("Content-Length", strconv.FormatInt(contentLength, 10)) + if blobContentType != nil { + req.Header.Set("x-ms-blob-content-type", *blobContentType) + } + if blobContentEncoding != nil { + req.Header.Set("x-ms-blob-content-encoding", *blobContentEncoding) + } + if blobContentLanguage != nil { + req.Header.Set("x-ms-blob-content-language", *blobContentLanguage) + } + if blobContentMD5 != nil { + req.Header.Set("x-ms-blob-content-md5", base64.StdEncoding.EncodeToString(blobContentMD5)) + } + if blobCacheControl != nil { + req.Header.Set("x-ms-blob-cache-control", *blobCacheControl) + } + if metadata != nil { + for k, v := range metadata { + req.Header.Set("x-ms-meta-"+k, v) + } + } + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + if blobContentDisposition != nil { + req.Header.Set("x-ms-blob-content-disposition", *blobContentDisposition) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + req.Header.Set("x-ms-blob-content-length", strconv.FormatInt(blobContentLength, 10)) + if blobSequenceNumber != nil { + req.Header.Set("x-ms-blob-sequence-number", strconv.FormatInt(*blobSequenceNumber, 10)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + req.Header.Set("x-ms-blob-type", "PageBlob") + return req, nil +} + +// createResponder handles the response to the Create request. +func (client pageBlobClient) createResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusCreated) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &PageBlobCreateResponse{rawResponse: resp.Response()}, err +} + +// GetPageRanges the Get Page Ranges operation returns the list of valid page ranges for a page blob or snapshot of a +// page blob +// +// snapshot is the snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to +// retrieve. For more information on working with blob snapshots, see Creating +// a Snapshot of a Blob. timeout is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. rangeParameter is return only the bytes of the blob in the specified +// range. leaseID is if specified, the operation only succeeds if the resource's lease is active and matches this ID. +// ifModifiedSince is specify this header value to operate only on a blob if it has been modified since the specified +// date/time. ifUnmodifiedSince is specify this header value to operate only on a blob if it has not been modified +// since the specified date/time. ifMatch is specify an ETag value to operate only on blobs with a matching value. +// ifNoneMatch is specify an ETag value to operate only on blobs without a matching value. requestID is provides a +// client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage +// analytics logging is enabled. +func (client pageBlobClient) GetPageRanges(ctx context.Context, snapshot *string, timeout *int32, rangeParameter *string, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*PageList, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.getPageRangesPreparer(snapshot, timeout, rangeParameter, leaseID, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getPageRangesResponder}, req) + if err != nil { + return nil, err + } + return resp.(*PageList), err +} + +// getPageRangesPreparer prepares the GetPageRanges request. +func (client pageBlobClient) getPageRangesPreparer(snapshot *string, timeout *int32, rangeParameter *string, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("GET", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if snapshot != nil && len(*snapshot) > 0 { + params.Set("snapshot", *snapshot) + } + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "pagelist") + req.URL.RawQuery = params.Encode() + if rangeParameter != nil { + req.Header.Set("x-ms-range", *rangeParameter) + } + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// getPageRangesResponder handles the response to the GetPageRanges request. +func (client pageBlobClient) getPageRangesResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + result := &PageList{rawResponse: resp.Response()} + if err != nil { + return result, err + } + defer resp.Response().Body.Close() + b, err := ioutil.ReadAll(resp.Response().Body) + if err != nil { + return result, err + } + if len(b) > 0 { + b = removeBOM(b) + err = xml.Unmarshal(b, result) + if err != nil { + return result, NewResponseError(err, resp.Response(), "failed to unmarshal response body") + } + } + return result, nil +} + +// GetPageRangesDiff the Get Page Ranges Diff operation returns the list of valid page ranges for a page blob that were +// changed between target blob and previous snapshot. +// +// snapshot is the snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to +// retrieve. For more information on working with blob snapshots, see Creating +// a Snapshot of a Blob. timeout is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. prevsnapshot is optional in version 2015-07-08 and newer. The prevsnapshot +// parameter is a DateTime value that specifies that the response will contain only pages that were changed between +// target blob and previous snapshot. Changed pages include both updated and cleared pages. The target blob may be a +// snapshot, as long as the snapshot specified by prevsnapshot is the older of the two. Note that incremental snapshots +// are currently supported only for blobs created on or after January 1, 2016. rangeParameter is return only the bytes +// of the blob in the specified range. leaseID is if specified, the operation only succeeds if the resource's lease is +// active and matches this ID. ifModifiedSince is specify this header value to operate only on a blob if it has been +// modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only on a blob if +// it has not been modified since the specified date/time. ifMatch is specify an ETag value to operate only on blobs +// with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a matching value. +// requestID is provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics +// logs when storage analytics logging is enabled. +func (client pageBlobClient) GetPageRangesDiff(ctx context.Context, snapshot *string, timeout *int32, prevsnapshot *string, rangeParameter *string, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*PageList, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.getPageRangesDiffPreparer(snapshot, timeout, prevsnapshot, rangeParameter, leaseID, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getPageRangesDiffResponder}, req) + if err != nil { + return nil, err + } + return resp.(*PageList), err +} + +// getPageRangesDiffPreparer prepares the GetPageRangesDiff request. +func (client pageBlobClient) getPageRangesDiffPreparer(snapshot *string, timeout *int32, prevsnapshot *string, rangeParameter *string, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("GET", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if snapshot != nil && len(*snapshot) > 0 { + params.Set("snapshot", *snapshot) + } + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + if prevsnapshot != nil && len(*prevsnapshot) > 0 { + params.Set("prevsnapshot", *prevsnapshot) + } + params.Set("comp", "pagelist") + req.URL.RawQuery = params.Encode() + if rangeParameter != nil { + req.Header.Set("x-ms-range", *rangeParameter) + } + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// getPageRangesDiffResponder handles the response to the GetPageRangesDiff request. +func (client pageBlobClient) getPageRangesDiffResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + result := &PageList{rawResponse: resp.Response()} + if err != nil { + return result, err + } + defer resp.Response().Body.Close() + b, err := ioutil.ReadAll(resp.Response().Body) + if err != nil { + return result, err + } + if len(b) > 0 { + b = removeBOM(b) + err = xml.Unmarshal(b, result) + if err != nil { + return result, NewResponseError(err, resp.Response(), "failed to unmarshal response body") + } + } + return result, nil +} + +// Resize resize the Blob +// +// blobContentLength is this header specifies the maximum size for the page blob, up to 1 TB. The page blob size must +// be aligned to a 512-byte boundary. timeout is the timeout parameter is expressed in seconds. For more information, +// see Setting +// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's +// lease is active and matches this ID. ifModifiedSince is specify this header value to operate only on a blob if it +// has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only on a +// blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value to operate only on +// blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a matching value. +// requestID is provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics +// logs when storage analytics logging is enabled. +func (client pageBlobClient) Resize(ctx context.Context, blobContentLength int64, timeout *int32, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*PageBlobResizeResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.resizePreparer(blobContentLength, timeout, leaseID, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.resizeResponder}, req) + if err != nil { + return nil, err + } + return resp.(*PageBlobResizeResponse), err +} + +// resizePreparer prepares the Resize request. +func (client pageBlobClient) resizePreparer(blobContentLength int64, timeout *int32, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "properties") + req.URL.RawQuery = params.Encode() + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + req.Header.Set("x-ms-blob-content-length", strconv.FormatInt(blobContentLength, 10)) + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// resizeResponder handles the response to the Resize request. +func (client pageBlobClient) resizeResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &PageBlobResizeResponse{rawResponse: resp.Response()}, err +} + +// UpdateSequenceNumber update the sequence number of the blob +// +// sequenceNumberAction is required if the x-ms-blob-sequence-number header is set for the request. This property +// applies to page blobs only. This property indicates how the service should modify the blob's sequence number timeout +// is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's +// lease is active and matches this ID. ifModifiedSince is specify this header value to operate only on a blob if it +// has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to operate only on a +// blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value to operate only on +// blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs without a matching value. +// blobSequenceNumber is set for page blobs only. The sequence number is a user-controlled value that you can use to +// track requests. The value of the sequence number must be between 0 and 2^63 - 1. requestID is provides a +// client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage +// analytics logging is enabled. +func (client pageBlobClient) UpdateSequenceNumber(ctx context.Context, sequenceNumberAction SequenceNumberActionType, timeout *int32, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, blobSequenceNumber *int64, requestID *string) (*PageBlobUpdateSequenceNumberResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.updateSequenceNumberPreparer(sequenceNumberAction, timeout, leaseID, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, blobSequenceNumber, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.updateSequenceNumberResponder}, req) + if err != nil { + return nil, err + } + return resp.(*PageBlobUpdateSequenceNumberResponse), err +} + +// updateSequenceNumberPreparer prepares the UpdateSequenceNumber request. +func (client pageBlobClient) updateSequenceNumberPreparer(sequenceNumberAction SequenceNumberActionType, timeout *int32, leaseID *string, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, blobSequenceNumber *int64, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "properties") + req.URL.RawQuery = params.Encode() + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + req.Header.Set("x-ms-sequence-number-action", string(sequenceNumberAction)) + if blobSequenceNumber != nil { + req.Header.Set("x-ms-blob-sequence-number", strconv.FormatInt(*blobSequenceNumber, 10)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// updateSequenceNumberResponder handles the response to the UpdateSequenceNumber request. +func (client pageBlobClient) updateSequenceNumberResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &PageBlobUpdateSequenceNumberResponse{rawResponse: resp.Response()}, err +} + +// UploadPages the Upload Pages operation writes a range of pages to a page blob +// +// body is initial data body will be closed upon successful return. Callers should ensure closure when receiving an +// error.contentLength is the length of the request. transactionalContentMD5 is specify the transactional md5 for the +// body, to be validated by the service. timeout is the timeout parameter is expressed in seconds. For more +// information, see Setting +// Timeouts for Blob Service Operations. rangeParameter is return only the bytes of the blob in the specified +// range. leaseID is if specified, the operation only succeeds if the resource's lease is active and matches this ID. +// ifSequenceNumberLessThanOrEqualTo is specify this header value to operate only on a blob if it has a sequence number +// less than or equal to the specified. ifSequenceNumberLessThan is specify this header value to operate only on a blob +// if it has a sequence number less than the specified. ifSequenceNumberEqualTo is specify this header value to operate +// only on a blob if it has the specified sequence number. ifModifiedSince is specify this header value to operate only +// on a blob if it has been modified since the specified date/time. ifUnmodifiedSince is specify this header value to +// operate only on a blob if it has not been modified since the specified date/time. ifMatch is specify an ETag value +// to operate only on blobs with a matching value. ifNoneMatch is specify an ETag value to operate only on blobs +// without a matching value. requestID is provides a client-generated, opaque value with a 1 KB character limit that is +// recorded in the analytics logs when storage analytics logging is enabled. +func (client pageBlobClient) UploadPages(ctx context.Context, body io.ReadSeeker, contentLength int64, transactionalContentMD5 []byte, timeout *int32, rangeParameter *string, leaseID *string, ifSequenceNumberLessThanOrEqualTo *int64, ifSequenceNumberLessThan *int64, ifSequenceNumberEqualTo *int64, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (*PageBlobUploadPagesResponse, error) { + if err := validate([]validation{ + {targetValue: body, + constraints: []constraint{{target: "body", name: null, rule: true, chain: nil}}}, + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.uploadPagesPreparer(body, contentLength, transactionalContentMD5, timeout, rangeParameter, leaseID, ifSequenceNumberLessThanOrEqualTo, ifSequenceNumberLessThan, ifSequenceNumberEqualTo, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.uploadPagesResponder}, req) + if err != nil { + return nil, err + } + return resp.(*PageBlobUploadPagesResponse), err +} + +// uploadPagesPreparer prepares the UploadPages request. +func (client pageBlobClient) uploadPagesPreparer(body io.ReadSeeker, contentLength int64, transactionalContentMD5 []byte, timeout *int32, rangeParameter *string, leaseID *string, ifSequenceNumberLessThanOrEqualTo *int64, ifSequenceNumberLessThan *int64, ifSequenceNumberEqualTo *int64, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, body) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "page") + req.URL.RawQuery = params.Encode() + req.Header.Set("Content-Length", strconv.FormatInt(contentLength, 10)) + if transactionalContentMD5 != nil { + req.Header.Set("Content-MD5", base64.StdEncoding.EncodeToString(transactionalContentMD5)) + } + if rangeParameter != nil { + req.Header.Set("x-ms-range", *rangeParameter) + } + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + if ifSequenceNumberLessThanOrEqualTo != nil { + req.Header.Set("x-ms-if-sequence-number-le", strconv.FormatInt(*ifSequenceNumberLessThanOrEqualTo, 10)) + } + if ifSequenceNumberLessThan != nil { + req.Header.Set("x-ms-if-sequence-number-lt", strconv.FormatInt(*ifSequenceNumberLessThan, 10)) + } + if ifSequenceNumberEqualTo != nil { + req.Header.Set("x-ms-if-sequence-number-eq", strconv.FormatInt(*ifSequenceNumberEqualTo, 10)) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + req.Header.Set("x-ms-page-write", "update") + return req, nil +} + +// uploadPagesResponder handles the response to the UploadPages request. +func (client pageBlobClient) uploadPagesResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusCreated) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &PageBlobUploadPagesResponse{rawResponse: resp.Response()}, err +} + +// UploadPagesFromURL the Upload Pages operation writes a range of pages to a page blob where the contents are read +// from a URL +// +// sourceURL is specify a URL to the copy source. sourceRange is bytes of source data in the specified range. The +// length of this range should match the ContentLength header and x-ms-range/Range destination range header. +// contentLength is the length of the request. rangeParameter is the range of bytes to which the source range would be +// written. The range should be 512 aligned and range-end is required. sourceContentMD5 is specify the md5 calculated +// for the range of bytes that must be read from the copy source. timeout is the timeout parameter is expressed in +// seconds. For more information, see Setting +// Timeouts for Blob Service Operations. leaseID is if specified, the operation only succeeds if the resource's +// lease is active and matches this ID. ifSequenceNumberLessThanOrEqualTo is specify this header value to operate only +// on a blob if it has a sequence number less than or equal to the specified. ifSequenceNumberLessThan is specify this +// header value to operate only on a blob if it has a sequence number less than the specified. ifSequenceNumberEqualTo +// is specify this header value to operate only on a blob if it has the specified sequence number. ifModifiedSince is +// specify this header value to operate only on a blob if it has been modified since the specified date/time. +// ifUnmodifiedSince is specify this header value to operate only on a blob if it has not been modified since the +// specified date/time. ifMatch is specify an ETag value to operate only on blobs with a matching value. ifNoneMatch is +// specify an ETag value to operate only on blobs without a matching value. sourceIfModifiedSince is specify this +// header value to operate only on a blob if it has been modified since the specified date/time. +// sourceIfUnmodifiedSince is specify this header value to operate only on a blob if it has not been modified since the +// specified date/time. sourceIfMatch is specify an ETag value to operate only on blobs with a matching value. +// sourceIfNoneMatch is specify an ETag value to operate only on blobs without a matching value. requestID is provides +// a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage +// analytics logging is enabled. +func (client pageBlobClient) UploadPagesFromURL(ctx context.Context, sourceURL string, sourceRange string, contentLength int64, rangeParameter string, sourceContentMD5 []byte, timeout *int32, leaseID *string, ifSequenceNumberLessThanOrEqualTo *int64, ifSequenceNumberLessThan *int64, ifSequenceNumberEqualTo *int64, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, sourceIfModifiedSince *time.Time, sourceIfUnmodifiedSince *time.Time, sourceIfMatch *ETag, sourceIfNoneMatch *ETag, requestID *string) (*PageBlobUploadPagesFromURLResponse, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.uploadPagesFromURLPreparer(sourceURL, sourceRange, contentLength, rangeParameter, sourceContentMD5, timeout, leaseID, ifSequenceNumberLessThanOrEqualTo, ifSequenceNumberLessThan, ifSequenceNumberEqualTo, ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch, sourceIfModifiedSince, sourceIfUnmodifiedSince, sourceIfMatch, sourceIfNoneMatch, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.uploadPagesFromURLResponder}, req) + if err != nil { + return nil, err + } + return resp.(*PageBlobUploadPagesFromURLResponse), err +} + +// uploadPagesFromURLPreparer prepares the UploadPagesFromURL request. +func (client pageBlobClient) uploadPagesFromURLPreparer(sourceURL string, sourceRange string, contentLength int64, rangeParameter string, sourceContentMD5 []byte, timeout *int32, leaseID *string, ifSequenceNumberLessThanOrEqualTo *int64, ifSequenceNumberLessThan *int64, ifSequenceNumberEqualTo *int64, ifModifiedSince *time.Time, ifUnmodifiedSince *time.Time, ifMatch *ETag, ifNoneMatch *ETag, sourceIfModifiedSince *time.Time, sourceIfUnmodifiedSince *time.Time, sourceIfMatch *ETag, sourceIfNoneMatch *ETag, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "page") + req.URL.RawQuery = params.Encode() + req.Header.Set("x-ms-copy-source", sourceURL) + req.Header.Set("x-ms-source-range", sourceRange) + if sourceContentMD5 != nil { + req.Header.Set("x-ms-source-content-md5", base64.StdEncoding.EncodeToString(sourceContentMD5)) + } + req.Header.Set("Content-Length", strconv.FormatInt(contentLength, 10)) + req.Header.Set("x-ms-range", rangeParameter) + if leaseID != nil { + req.Header.Set("x-ms-lease-id", *leaseID) + } + if ifSequenceNumberLessThanOrEqualTo != nil { + req.Header.Set("x-ms-if-sequence-number-le", strconv.FormatInt(*ifSequenceNumberLessThanOrEqualTo, 10)) + } + if ifSequenceNumberLessThan != nil { + req.Header.Set("x-ms-if-sequence-number-lt", strconv.FormatInt(*ifSequenceNumberLessThan, 10)) + } + if ifSequenceNumberEqualTo != nil { + req.Header.Set("x-ms-if-sequence-number-eq", strconv.FormatInt(*ifSequenceNumberEqualTo, 10)) + } + if ifModifiedSince != nil { + req.Header.Set("If-Modified-Since", (*ifModifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifUnmodifiedSince != nil { + req.Header.Set("If-Unmodified-Since", (*ifUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if ifMatch != nil { + req.Header.Set("If-Match", string(*ifMatch)) + } + if ifNoneMatch != nil { + req.Header.Set("If-None-Match", string(*ifNoneMatch)) + } + if sourceIfModifiedSince != nil { + req.Header.Set("x-ms-source-if-modified-since", (*sourceIfModifiedSince).In(gmt).Format(time.RFC1123)) + } + if sourceIfUnmodifiedSince != nil { + req.Header.Set("x-ms-source-if-unmodified-since", (*sourceIfUnmodifiedSince).In(gmt).Format(time.RFC1123)) + } + if sourceIfMatch != nil { + req.Header.Set("x-ms-source-if-match", string(*sourceIfMatch)) + } + if sourceIfNoneMatch != nil { + req.Header.Set("x-ms-source-if-none-match", string(*sourceIfNoneMatch)) + } + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + req.Header.Set("x-ms-page-write", "update") + return req, nil +} + +// uploadPagesFromURLResponder handles the response to the UploadPagesFromURL request. +func (client pageBlobClient) uploadPagesFromURLResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusCreated) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &PageBlobUploadPagesFromURLResponse{rawResponse: resp.Response()}, err +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_responder_policy.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_responder_policy.go new file mode 100644 index 0000000..8a023d0 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_responder_policy.go @@ -0,0 +1,74 @@ +package azblob + +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "bytes" + "context" + "encoding/xml" + "github.com/Azure/azure-pipeline-go/pipeline" + "io/ioutil" +) + +type responder func(resp pipeline.Response) (result pipeline.Response, err error) + +// ResponderPolicyFactory is a Factory capable of creating a responder pipeline. +type responderPolicyFactory struct { + responder responder +} + +// New creates a responder policy factory. +func (arpf responderPolicyFactory) New(next pipeline.Policy, po *pipeline.PolicyOptions) pipeline.Policy { + return responderPolicy{next: next, responder: arpf.responder} +} + +type responderPolicy struct { + next pipeline.Policy + responder responder +} + +// Do sends the request to the service and validates/deserializes the HTTP response. +func (arp responderPolicy) Do(ctx context.Context, request pipeline.Request) (pipeline.Response, error) { + resp, err := arp.next.Do(ctx, request) + if err != nil { + return resp, err + } + return arp.responder(resp) +} + +// validateResponse checks an HTTP response's status code against a legal set of codes. +// If the response code is not legal, then validateResponse reads all of the response's body +// (containing error information) and returns a response error. +func validateResponse(resp pipeline.Response, successStatusCodes ...int) error { + if resp == nil { + return NewResponseError(nil, nil, "nil response") + } + responseCode := resp.Response().StatusCode + for _, i := range successStatusCodes { + if i == responseCode { + return nil + } + } + // only close the body in the failure case. in the + // success case responders will close the body as required. + defer resp.Response().Body.Close() + b, err := ioutil.ReadAll(resp.Response().Body) + if err != nil { + return err + } + // the service code, description and details will be populated during unmarshalling + responseError := NewResponseError(nil, resp.Response(), resp.Response().Status) + if len(b) > 0 { + if err = xml.Unmarshal(b, &responseError); err != nil { + return NewResponseError(err, resp.Response(), "failed to unmarshal response body") + } + } + return responseError +} + +// removes any BOM from the byte slice +func removeBOM(b []byte) []byte { + // UTF8 + return bytes.TrimPrefix(b, []byte("\xef\xbb\xbf")) +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_response_error.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_response_error.go new file mode 100644 index 0000000..3dcc75b --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_response_error.go @@ -0,0 +1,95 @@ +package azblob + +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "bytes" + "fmt" + "github.com/Azure/azure-pipeline-go/pipeline" + "net" + "net/http" +) + +// if you want to provide custom error handling set this variable to your constructor function +var responseErrorFactory func(cause error, response *http.Response, description string) error + +// ResponseError identifies a responder-generated network or response parsing error. +type ResponseError interface { + // Error exposes the Error(), Temporary() and Timeout() methods. + net.Error // Includes the Go error interface + // Response returns the HTTP response. You may examine this but you should not modify it. + Response() *http.Response +} + +// NewResponseError creates an error object that implements the error interface. +func NewResponseError(cause error, response *http.Response, description string) error { + if responseErrorFactory != nil { + return responseErrorFactory(cause, response, description) + } + return &responseError{ + ErrorNode: pipeline.ErrorNode{}.Initialize(cause, 3), + response: response, + description: description, + } +} + +// responseError is the internal struct that implements the public ResponseError interface. +type responseError struct { + pipeline.ErrorNode // This is embedded so that responseError "inherits" Error, Temporary, Timeout, and Cause + response *http.Response + description string +} + +// Error implements the error interface's Error method to return a string representation of the error. +func (e *responseError) Error() string { + b := &bytes.Buffer{} + fmt.Fprintf(b, "===== RESPONSE ERROR (Code=%v) =====\n", e.response.StatusCode) + fmt.Fprintf(b, "Status=%s, Description: %s\n", e.response.Status, e.description) + s := b.String() + return e.ErrorNode.Error(s) +} + +// Response implements the ResponseError interface's method to return the HTTP response. +func (e *responseError) Response() *http.Response { + return e.response +} + +// RFC7807 PROBLEM ------------------------------------------------------------------------------------ +// RFC7807Problem ... This type can be publicly embedded in another type that wants to add additional members. +/*type RFC7807Problem struct { + // Mandatory: A (relative) URI reference identifying the problem type (it MAY refer to human-readable documentation). + typeURI string // Should default to "about:blank" + // Optional: Short, human-readable summary (maybe localized). + title string + // Optional: HTTP status code generated by the origin server + status int + // Optional: Human-readable explanation for this problem occurance. + // Should help client correct the problem. Clients should NOT parse this string. + detail string + // Optional: A (relative) URI identifying this specific problem occurence (it may or may not be dereferenced). + instance string +} +// NewRFC7807Problem ... +func NewRFC7807Problem(typeURI string, status int, titleFormat string, a ...interface{}) error { + return &RFC7807Problem{ + typeURI: typeURI, + status: status, + title: fmt.Sprintf(titleFormat, a...), + } +} +// Error returns the error information as a string. +func (e *RFC7807Problem) Error() string { + return e.title +} +// TypeURI ... +func (e *RFC7807Problem) TypeURI() string { + if e.typeURI == "" { + e.typeURI = "about:blank" + } + return e.typeURI +} +// Members ... +func (e *RFC7807Problem) Members() (status int, title, detail, instance string) { + return e.status, e.title, e.detail, e.instance +}*/ diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_service.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_service.go new file mode 100644 index 0000000..6c896b7 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_service.go @@ -0,0 +1,467 @@ +package azblob + +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "bytes" + "context" + "encoding/xml" + "github.com/Azure/azure-pipeline-go/pipeline" + "io" + "io/ioutil" + "net/http" + "net/url" + "strconv" +) + +// serviceClient is the client for the Service methods of the Azblob service. +type serviceClient struct { + managementClient +} + +// newServiceClient creates an instance of the serviceClient client. +func newServiceClient(url url.URL, p pipeline.Pipeline) serviceClient { + return serviceClient{newManagementClient(url, p)} +} + +// GetAccountInfo returns the sku name and account kind +func (client serviceClient) GetAccountInfo(ctx context.Context) (*ServiceGetAccountInfoResponse, error) { + req, err := client.getAccountInfoPreparer() + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getAccountInfoResponder}, req) + if err != nil { + return nil, err + } + return resp.(*ServiceGetAccountInfoResponse), err +} + +// getAccountInfoPreparer prepares the GetAccountInfo request. +func (client serviceClient) getAccountInfoPreparer() (pipeline.Request, error) { + req, err := pipeline.NewRequest("GET", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + params.Set("restype", "account") + params.Set("comp", "properties") + req.URL.RawQuery = params.Encode() + req.Header.Set("x-ms-version", ServiceVersion) + return req, nil +} + +// getAccountInfoResponder handles the response to the GetAccountInfo request. +func (client serviceClient) getAccountInfoResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &ServiceGetAccountInfoResponse{rawResponse: resp.Response()}, err +} + +// GetProperties gets the properties of a storage account's Blob service, including properties for Storage Analytics +// and CORS (Cross-Origin Resource Sharing) rules. +// +// timeout is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. requestID is provides a client-generated, opaque value with a 1 KB +// character limit that is recorded in the analytics logs when storage analytics logging is enabled. +func (client serviceClient) GetProperties(ctx context.Context, timeout *int32, requestID *string) (*StorageServiceProperties, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.getPropertiesPreparer(timeout, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getPropertiesResponder}, req) + if err != nil { + return nil, err + } + return resp.(*StorageServiceProperties), err +} + +// getPropertiesPreparer prepares the GetProperties request. +func (client serviceClient) getPropertiesPreparer(timeout *int32, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("GET", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("restype", "service") + params.Set("comp", "properties") + req.URL.RawQuery = params.Encode() + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// getPropertiesResponder handles the response to the GetProperties request. +func (client serviceClient) getPropertiesResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + result := &StorageServiceProperties{rawResponse: resp.Response()} + if err != nil { + return result, err + } + defer resp.Response().Body.Close() + b, err := ioutil.ReadAll(resp.Response().Body) + if err != nil { + return result, err + } + if len(b) > 0 { + b = removeBOM(b) + err = xml.Unmarshal(b, result) + if err != nil { + return result, NewResponseError(err, resp.Response(), "failed to unmarshal response body") + } + } + return result, nil +} + +// GetStatistics retrieves statistics related to replication for the Blob service. It is only available on the +// secondary location endpoint when read-access geo-redundant replication is enabled for the storage account. +// +// timeout is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. requestID is provides a client-generated, opaque value with a 1 KB +// character limit that is recorded in the analytics logs when storage analytics logging is enabled. +func (client serviceClient) GetStatistics(ctx context.Context, timeout *int32, requestID *string) (*StorageServiceStats, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.getStatisticsPreparer(timeout, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getStatisticsResponder}, req) + if err != nil { + return nil, err + } + return resp.(*StorageServiceStats), err +} + +// getStatisticsPreparer prepares the GetStatistics request. +func (client serviceClient) getStatisticsPreparer(timeout *int32, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("GET", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("restype", "service") + params.Set("comp", "stats") + req.URL.RawQuery = params.Encode() + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// getStatisticsResponder handles the response to the GetStatistics request. +func (client serviceClient) getStatisticsResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + result := &StorageServiceStats{rawResponse: resp.Response()} + if err != nil { + return result, err + } + defer resp.Response().Body.Close() + b, err := ioutil.ReadAll(resp.Response().Body) + if err != nil { + return result, err + } + if len(b) > 0 { + b = removeBOM(b) + err = xml.Unmarshal(b, result) + if err != nil { + return result, NewResponseError(err, resp.Response(), "failed to unmarshal response body") + } + } + return result, nil +} + +// GetUserDelegationKey retrieves a user delgation key for the Blob service. This is only a valid operation when using +// bearer token authentication. +// +// timeout is the timeout parameter is expressed in seconds. For more information, see Setting +// Timeouts for Blob Service Operations. requestID is provides a client-generated, opaque value with a 1 KB +// character limit that is recorded in the analytics logs when storage analytics logging is enabled. +func (client serviceClient) GetUserDelegationKey(ctx context.Context, keyInfo KeyInfo, timeout *int32, requestID *string) (*UserDelegationKey, error) { + if err := validate([]validation{ + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.getUserDelegationKeyPreparer(keyInfo, timeout, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.getUserDelegationKeyResponder}, req) + if err != nil { + return nil, err + } + return resp.(*UserDelegationKey), err +} + +// getUserDelegationKeyPreparer prepares the GetUserDelegationKey request. +func (client serviceClient) getUserDelegationKeyPreparer(keyInfo KeyInfo, timeout *int32, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("POST", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("restype", "service") + params.Set("comp", "userdelegationkey") + req.URL.RawQuery = params.Encode() + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + b, err := xml.Marshal(keyInfo) + if err != nil { + return req, pipeline.NewError(err, "failed to marshal request body") + } + req.Header.Set("Content-Type", "application/xml") + err = req.SetBody(bytes.NewReader(b)) + if err != nil { + return req, pipeline.NewError(err, "failed to set request body") + } + return req, nil +} + +// getUserDelegationKeyResponder handles the response to the GetUserDelegationKey request. +func (client serviceClient) getUserDelegationKeyResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + result := &UserDelegationKey{rawResponse: resp.Response()} + if err != nil { + return result, err + } + defer resp.Response().Body.Close() + b, err := ioutil.ReadAll(resp.Response().Body) + if err != nil { + return result, err + } + if len(b) > 0 { + b = removeBOM(b) + err = xml.Unmarshal(b, result) + if err != nil { + return result, NewResponseError(err, resp.Response(), "failed to unmarshal response body") + } + } + return result, nil +} + +// ListContainersSegment the List Containers Segment operation returns a list of the containers under the specified +// account +// +// prefix is filters the results to return only containers whose name begins with the specified prefix. marker is a +// string value that identifies the portion of the list of containers to be returned with the next listing operation. +// The operation returns the NextMarker value within the response body if the listing operation did not return all +// containers remaining to be listed with the current page. The NextMarker value can be used as the value for the +// marker parameter in a subsequent call to request the next page of list items. The marker value is opaque to the +// client. maxresults is specifies the maximum number of containers to return. If the request does not specify +// maxresults, or specifies a value greater than 5000, the server will return up to 5000 items. Note that if the +// listing operation crosses a partition boundary, then the service will return a continuation token for retrieving the +// remainder of the results. For this reason, it is possible that the service will return fewer results than specified +// by maxresults, or than the default of 5000. include is include this parameter to specify that the container's +// metadata be returned as part of the response body. timeout is the timeout parameter is expressed in seconds. For +// more information, see Setting +// Timeouts for Blob Service Operations. requestID is provides a client-generated, opaque value with a 1 KB +// character limit that is recorded in the analytics logs when storage analytics logging is enabled. +func (client serviceClient) ListContainersSegment(ctx context.Context, prefix *string, marker *string, maxresults *int32, include ListContainersIncludeType, timeout *int32, requestID *string) (*ListContainersSegmentResponse, error) { + if err := validate([]validation{ + {targetValue: maxresults, + constraints: []constraint{{target: "maxresults", name: null, rule: false, + chain: []constraint{{target: "maxresults", name: inclusiveMinimum, rule: 1, chain: nil}}}}}, + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.listContainersSegmentPreparer(prefix, marker, maxresults, include, timeout, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.listContainersSegmentResponder}, req) + if err != nil { + return nil, err + } + return resp.(*ListContainersSegmentResponse), err +} + +// listContainersSegmentPreparer prepares the ListContainersSegment request. +func (client serviceClient) listContainersSegmentPreparer(prefix *string, marker *string, maxresults *int32, include ListContainersIncludeType, timeout *int32, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("GET", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if prefix != nil && len(*prefix) > 0 { + params.Set("prefix", *prefix) + } + if marker != nil && len(*marker) > 0 { + params.Set("marker", *marker) + } + if maxresults != nil { + params.Set("maxresults", strconv.FormatInt(int64(*maxresults), 10)) + } + if include != ListContainersIncludeNone { + params.Set("include", string(include)) + } + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("comp", "list") + req.URL.RawQuery = params.Encode() + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + return req, nil +} + +// listContainersSegmentResponder handles the response to the ListContainersSegment request. +func (client serviceClient) listContainersSegmentResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK) + if resp == nil { + return nil, err + } + result := &ListContainersSegmentResponse{rawResponse: resp.Response()} + if err != nil { + return result, err + } + defer resp.Response().Body.Close() + b, err := ioutil.ReadAll(resp.Response().Body) + if err != nil { + return result, err + } + if len(b) > 0 { + b = removeBOM(b) + err = xml.Unmarshal(b, result) + if err != nil { + return result, NewResponseError(err, resp.Response(), "failed to unmarshal response body") + } + } + return result, nil +} + +// SetProperties sets properties for a storage account's Blob service endpoint, including properties for Storage +// Analytics and CORS (Cross-Origin Resource Sharing) rules +// +// storageServiceProperties is the StorageService properties. timeout is the timeout parameter is expressed in seconds. +// For more information, see Setting +// Timeouts for Blob Service Operations. requestID is provides a client-generated, opaque value with a 1 KB +// character limit that is recorded in the analytics logs when storage analytics logging is enabled. +func (client serviceClient) SetProperties(ctx context.Context, storageServiceProperties StorageServiceProperties, timeout *int32, requestID *string) (*ServiceSetPropertiesResponse, error) { + if err := validate([]validation{ + {targetValue: storageServiceProperties, + constraints: []constraint{{target: "storageServiceProperties.Logging", name: null, rule: false, + chain: []constraint{{target: "storageServiceProperties.Logging.RetentionPolicy", name: null, rule: true, + chain: []constraint{{target: "storageServiceProperties.Logging.RetentionPolicy.Days", name: null, rule: false, + chain: []constraint{{target: "storageServiceProperties.Logging.RetentionPolicy.Days", name: inclusiveMinimum, rule: 1, chain: nil}}}, + }}, + }}, + {target: "storageServiceProperties.HourMetrics", name: null, rule: false, + chain: []constraint{{target: "storageServiceProperties.HourMetrics.RetentionPolicy", name: null, rule: false, + chain: []constraint{{target: "storageServiceProperties.HourMetrics.RetentionPolicy.Days", name: null, rule: false, + chain: []constraint{{target: "storageServiceProperties.HourMetrics.RetentionPolicy.Days", name: inclusiveMinimum, rule: 1, chain: nil}}}, + }}, + }}, + {target: "storageServiceProperties.MinuteMetrics", name: null, rule: false, + chain: []constraint{{target: "storageServiceProperties.MinuteMetrics.RetentionPolicy", name: null, rule: false, + chain: []constraint{{target: "storageServiceProperties.MinuteMetrics.RetentionPolicy.Days", name: null, rule: false, + chain: []constraint{{target: "storageServiceProperties.MinuteMetrics.RetentionPolicy.Days", name: inclusiveMinimum, rule: 1, chain: nil}}}, + }}, + }}, + {target: "storageServiceProperties.DeleteRetentionPolicy", name: null, rule: false, + chain: []constraint{{target: "storageServiceProperties.DeleteRetentionPolicy.Days", name: null, rule: false, + chain: []constraint{{target: "storageServiceProperties.DeleteRetentionPolicy.Days", name: inclusiveMinimum, rule: 1, chain: nil}}}, + }}}}, + {targetValue: timeout, + constraints: []constraint{{target: "timeout", name: null, rule: false, + chain: []constraint{{target: "timeout", name: inclusiveMinimum, rule: 0, chain: nil}}}}}}); err != nil { + return nil, err + } + req, err := client.setPropertiesPreparer(storageServiceProperties, timeout, requestID) + if err != nil { + return nil, err + } + resp, err := client.Pipeline().Do(ctx, responderPolicyFactory{responder: client.setPropertiesResponder}, req) + if err != nil { + return nil, err + } + return resp.(*ServiceSetPropertiesResponse), err +} + +// setPropertiesPreparer prepares the SetProperties request. +func (client serviceClient) setPropertiesPreparer(storageServiceProperties StorageServiceProperties, timeout *int32, requestID *string) (pipeline.Request, error) { + req, err := pipeline.NewRequest("PUT", client.url, nil) + if err != nil { + return req, pipeline.NewError(err, "failed to create request") + } + params := req.URL.Query() + if timeout != nil { + params.Set("timeout", strconv.FormatInt(int64(*timeout), 10)) + } + params.Set("restype", "service") + params.Set("comp", "properties") + req.URL.RawQuery = params.Encode() + req.Header.Set("x-ms-version", ServiceVersion) + if requestID != nil { + req.Header.Set("x-ms-client-request-id", *requestID) + } + b, err := xml.Marshal(storageServiceProperties) + if err != nil { + return req, pipeline.NewError(err, "failed to marshal request body") + } + req.Header.Set("Content-Type", "application/xml") + err = req.SetBody(bytes.NewReader(b)) + if err != nil { + return req, pipeline.NewError(err, "failed to set request body") + } + return req, nil +} + +// setPropertiesResponder handles the response to the SetProperties request. +func (client serviceClient) setPropertiesResponder(resp pipeline.Response) (pipeline.Response, error) { + err := validateResponse(resp, http.StatusOK, http.StatusAccepted) + if resp == nil { + return nil, err + } + io.Copy(ioutil.Discard, resp.Response().Body) + resp.Response().Body.Close() + return &ServiceSetPropertiesResponse{rawResponse: resp.Response()}, err +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_validation.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_validation.go new file mode 100644 index 0000000..98a2614 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_validation.go @@ -0,0 +1,367 @@ +package azblob + +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "fmt" + "github.com/Azure/azure-pipeline-go/pipeline" + "reflect" + "regexp" + "strings" +) + +// Constraint stores constraint name, target field name +// Rule and chain validations. +type constraint struct { + // Target field name for validation. + target string + + // Constraint name e.g. minLength, MaxLength, Pattern, etc. + name string + + // Rule for constraint e.g. greater than 10, less than 5 etc. + rule interface{} + + // Chain validations for struct type + chain []constraint +} + +// Validation stores parameter-wise validation. +type validation struct { + targetValue interface{} + constraints []constraint +} + +// Constraint list +const ( + empty = "Empty" + null = "Null" + readOnly = "ReadOnly" + pattern = "Pattern" + maxLength = "MaxLength" + minLength = "MinLength" + maxItems = "MaxItems" + minItems = "MinItems" + multipleOf = "MultipleOf" + uniqueItems = "UniqueItems" + inclusiveMaximum = "InclusiveMaximum" + exclusiveMaximum = "ExclusiveMaximum" + exclusiveMinimum = "ExclusiveMinimum" + inclusiveMinimum = "InclusiveMinimum" +) + +// Validate method validates constraints on parameter +// passed in validation array. +func validate(m []validation) error { + for _, item := range m { + v := reflect.ValueOf(item.targetValue) + for _, constraint := range item.constraints { + var err error + switch v.Kind() { + case reflect.Ptr: + err = validatePtr(v, constraint) + case reflect.String: + err = validateString(v, constraint) + case reflect.Struct: + err = validateStruct(v, constraint) + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + err = validateInt(v, constraint) + case reflect.Float32, reflect.Float64: + err = validateFloat(v, constraint) + case reflect.Array, reflect.Slice, reflect.Map: + err = validateArrayMap(v, constraint) + default: + err = createError(v, constraint, fmt.Sprintf("unknown type %v", v.Kind())) + } + if err != nil { + return err + } + } + } + return nil +} + +func validateStruct(x reflect.Value, v constraint, name ...string) error { + //Get field name from target name which is in format a.b.c + s := strings.Split(v.target, ".") + f := x.FieldByName(s[len(s)-1]) + if isZero(f) { + return createError(x, v, fmt.Sprintf("field %q doesn't exist", v.target)) + } + err := validate([]validation{ + { + targetValue: getInterfaceValue(f), + constraints: []constraint{v}, + }, + }) + return err +} + +func validatePtr(x reflect.Value, v constraint) error { + if v.name == readOnly { + if !x.IsNil() { + return createError(x.Elem(), v, "readonly parameter; must send as nil or empty in request") + } + return nil + } + if x.IsNil() { + return checkNil(x, v) + } + if v.chain != nil { + return validate([]validation{ + { + targetValue: getInterfaceValue(x.Elem()), + constraints: v.chain, + }, + }) + } + return nil +} + +func validateInt(x reflect.Value, v constraint) error { + i := x.Int() + r, ok := v.rule.(int) + if !ok { + return createError(x, v, fmt.Sprintf("rule must be integer value for %v constraint; got: %v", v.name, v.rule)) + } + switch v.name { + case multipleOf: + if i%int64(r) != 0 { + return createError(x, v, fmt.Sprintf("value must be a multiple of %v", r)) + } + case exclusiveMinimum: + if i <= int64(r) { + return createError(x, v, fmt.Sprintf("value must be greater than %v", r)) + } + case exclusiveMaximum: + if i >= int64(r) { + return createError(x, v, fmt.Sprintf("value must be less than %v", r)) + } + case inclusiveMinimum: + if i < int64(r) { + return createError(x, v, fmt.Sprintf("value must be greater than or equal to %v", r)) + } + case inclusiveMaximum: + if i > int64(r) { + return createError(x, v, fmt.Sprintf("value must be less than or equal to %v", r)) + } + default: + return createError(x, v, fmt.Sprintf("constraint %v is not applicable for type integer", v.name)) + } + return nil +} + +func validateFloat(x reflect.Value, v constraint) error { + f := x.Float() + r, ok := v.rule.(float64) + if !ok { + return createError(x, v, fmt.Sprintf("rule must be float value for %v constraint; got: %v", v.name, v.rule)) + } + switch v.name { + case exclusiveMinimum: + if f <= r { + return createError(x, v, fmt.Sprintf("value must be greater than %v", r)) + } + case exclusiveMaximum: + if f >= r { + return createError(x, v, fmt.Sprintf("value must be less than %v", r)) + } + case inclusiveMinimum: + if f < r { + return createError(x, v, fmt.Sprintf("value must be greater than or equal to %v", r)) + } + case inclusiveMaximum: + if f > r { + return createError(x, v, fmt.Sprintf("value must be less than or equal to %v", r)) + } + default: + return createError(x, v, fmt.Sprintf("constraint %s is not applicable for type float", v.name)) + } + return nil +} + +func validateString(x reflect.Value, v constraint) error { + s := x.String() + switch v.name { + case empty: + if len(s) == 0 { + return checkEmpty(x, v) + } + case pattern: + reg, err := regexp.Compile(v.rule.(string)) + if err != nil { + return createError(x, v, err.Error()) + } + if !reg.MatchString(s) { + return createError(x, v, fmt.Sprintf("value doesn't match pattern %v", v.rule)) + } + case maxLength: + if _, ok := v.rule.(int); !ok { + return createError(x, v, fmt.Sprintf("rule must be integer value for %v constraint; got: %v", v.name, v.rule)) + } + if len(s) > v.rule.(int) { + return createError(x, v, fmt.Sprintf("value length must be less than %v", v.rule)) + } + case minLength: + if _, ok := v.rule.(int); !ok { + return createError(x, v, fmt.Sprintf("rule must be integer value for %v constraint; got: %v", v.name, v.rule)) + } + if len(s) < v.rule.(int) { + return createError(x, v, fmt.Sprintf("value length must be greater than %v", v.rule)) + } + case readOnly: + if len(s) > 0 { + return createError(reflect.ValueOf(s), v, "readonly parameter; must send as nil or empty in request") + } + default: + return createError(x, v, fmt.Sprintf("constraint %s is not applicable to string type", v.name)) + } + if v.chain != nil { + return validate([]validation{ + { + targetValue: getInterfaceValue(x), + constraints: v.chain, + }, + }) + } + return nil +} + +func validateArrayMap(x reflect.Value, v constraint) error { + switch v.name { + case null: + if x.IsNil() { + return checkNil(x, v) + } + case empty: + if x.IsNil() || x.Len() == 0 { + return checkEmpty(x, v) + } + case maxItems: + if _, ok := v.rule.(int); !ok { + return createError(x, v, fmt.Sprintf("rule must be integer for %v constraint; got: %v", v.name, v.rule)) + } + if x.Len() > v.rule.(int) { + return createError(x, v, fmt.Sprintf("maximum item limit is %v; got: %v", v.rule, x.Len())) + } + case minItems: + if _, ok := v.rule.(int); !ok { + return createError(x, v, fmt.Sprintf("rule must be integer for %v constraint; got: %v", v.name, v.rule)) + } + if x.Len() < v.rule.(int) { + return createError(x, v, fmt.Sprintf("minimum item limit is %v; got: %v", v.rule, x.Len())) + } + case uniqueItems: + if x.Kind() == reflect.Array || x.Kind() == reflect.Slice { + if !checkForUniqueInArray(x) { + return createError(x, v, fmt.Sprintf("all items in parameter %q must be unique; got:%v", v.target, x)) + } + } else if x.Kind() == reflect.Map { + if !checkForUniqueInMap(x) { + return createError(x, v, fmt.Sprintf("all items in parameter %q must be unique; got:%v", v.target, x)) + } + } else { + return createError(x, v, fmt.Sprintf("type must be array, slice or map for constraint %v; got: %v", v.name, x.Kind())) + } + case readOnly: + if x.Len() != 0 { + return createError(x, v, "readonly parameter; must send as nil or empty in request") + } + case pattern: + reg, err := regexp.Compile(v.rule.(string)) + if err != nil { + return createError(x, v, err.Error()) + } + keys := x.MapKeys() + for _, k := range keys { + if !reg.MatchString(k.String()) { + return createError(k, v, fmt.Sprintf("map key doesn't match pattern %v", v.rule)) + } + } + default: + return createError(x, v, fmt.Sprintf("constraint %v is not applicable to array, slice and map type", v.name)) + } + if v.chain != nil { + return validate([]validation{ + { + targetValue: getInterfaceValue(x), + constraints: v.chain, + }, + }) + } + return nil +} + +func checkNil(x reflect.Value, v constraint) error { + if _, ok := v.rule.(bool); !ok { + return createError(x, v, fmt.Sprintf("rule must be bool value for %v constraint; got: %v", v.name, v.rule)) + } + if v.rule.(bool) { + return createError(x, v, "value can not be null; required parameter") + } + return nil +} + +func checkEmpty(x reflect.Value, v constraint) error { + if _, ok := v.rule.(bool); !ok { + return createError(x, v, fmt.Sprintf("rule must be bool value for %v constraint; got: %v", v.name, v.rule)) + } + if v.rule.(bool) { + return createError(x, v, "value can not be null or empty; required parameter") + } + return nil +} + +func checkForUniqueInArray(x reflect.Value) bool { + if x == reflect.Zero(reflect.TypeOf(x)) || x.Len() == 0 { + return false + } + arrOfInterface := make([]interface{}, x.Len()) + for i := 0; i < x.Len(); i++ { + arrOfInterface[i] = x.Index(i).Interface() + } + m := make(map[interface{}]bool) + for _, val := range arrOfInterface { + if m[val] { + return false + } + m[val] = true + } + return true +} + +func checkForUniqueInMap(x reflect.Value) bool { + if x == reflect.Zero(reflect.TypeOf(x)) || x.Len() == 0 { + return false + } + mapOfInterface := make(map[interface{}]interface{}, x.Len()) + keys := x.MapKeys() + for _, k := range keys { + mapOfInterface[k.Interface()] = x.MapIndex(k).Interface() + } + m := make(map[interface{}]bool) + for _, val := range mapOfInterface { + if m[val] { + return false + } + m[val] = true + } + return true +} + +func getInterfaceValue(x reflect.Value) interface{} { + if x.Kind() == reflect.Invalid { + return nil + } + return x.Interface() +} + +func isZero(x interface{}) bool { + return x == reflect.Zero(reflect.TypeOf(x)).Interface() +} + +func createError(x reflect.Value, v constraint, message string) error { + return pipeline.NewError(nil, fmt.Sprintf("validation failed: parameter=%s constraint=%s value=%#v details: %s", + v.target, v.name, getInterfaceValue(x), message)) +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_version.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_version.go new file mode 100644 index 0000000..4b49c18 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_version.go @@ -0,0 +1,14 @@ +package azblob + +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +// UserAgent returns the UserAgent string to use when sending http.Requests. +func UserAgent() string { + return "Azure-SDK-For-Go/0.0.0 azblob/2018-11-09" +} + +// Version returns the semantic version (see http://semver.org) of the client. +func Version() string { + return "0.0.0" +} diff --git a/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_response_helpers.go b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_response_helpers.go new file mode 100644 index 0000000..8c7f594 --- /dev/null +++ b/vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_response_helpers.go @@ -0,0 +1,242 @@ +package azblob + +import ( + "context" + "io" + "net/http" + "time" +) + +// BlobHTTPHeaders contains read/writeable blob properties. +type BlobHTTPHeaders struct { + ContentType string + ContentMD5 []byte + ContentEncoding string + ContentLanguage string + ContentDisposition string + CacheControl string +} + +// NewHTTPHeaders returns the user-modifiable properties for this blob. +func (bgpr BlobGetPropertiesResponse) NewHTTPHeaders() BlobHTTPHeaders { + return BlobHTTPHeaders{ + ContentType: bgpr.ContentType(), + ContentEncoding: bgpr.ContentEncoding(), + ContentLanguage: bgpr.ContentLanguage(), + ContentDisposition: bgpr.ContentDisposition(), + CacheControl: bgpr.CacheControl(), + ContentMD5: bgpr.ContentMD5(), + } +} + +/////////////////////////////////////////////////////////////////////////////// + +// NewHTTPHeaders returns the user-modifiable properties for this blob. +func (dr downloadResponse) NewHTTPHeaders() BlobHTTPHeaders { + return BlobHTTPHeaders{ + ContentType: dr.ContentType(), + ContentEncoding: dr.ContentEncoding(), + ContentLanguage: dr.ContentLanguage(), + ContentDisposition: dr.ContentDisposition(), + CacheControl: dr.CacheControl(), + ContentMD5: dr.ContentMD5(), + } +} + +/////////////////////////////////////////////////////////////////////////////// + +// DownloadResponse wraps AutoRest generated downloadResponse and helps to provide info for retry. +type DownloadResponse struct { + r *downloadResponse + ctx context.Context + b BlobURL + getInfo HTTPGetterInfo +} + +// Body constructs new RetryReader stream for reading data. If a connection failes +// while reading, it will make additional requests to reestablish a connection and +// continue reading. Specifying a RetryReaderOption's with MaxRetryRequests set to 0 +// (the default), returns the original response body and no retries will be performed. +func (r *DownloadResponse) Body(o RetryReaderOptions) io.ReadCloser { + if o.MaxRetryRequests == 0 { // No additional retries + return r.Response().Body + } + return NewRetryReader(r.ctx, r.Response(), r.getInfo, o, + func(ctx context.Context, getInfo HTTPGetterInfo) (*http.Response, error) { + resp, err := r.b.Download(ctx, getInfo.Offset, getInfo.Count, + BlobAccessConditions{ + ModifiedAccessConditions: ModifiedAccessConditions{IfMatch: getInfo.ETag}, + }, + false) + if err != nil { + return nil, err + } + return resp.Response(), err + }, + ) +} + +// Response returns the raw HTTP response object. +func (r DownloadResponse) Response() *http.Response { + return r.r.Response() +} + +// NewHTTPHeaders returns the user-modifiable properties for this blob. +func (r DownloadResponse) NewHTTPHeaders() BlobHTTPHeaders { + return r.r.NewHTTPHeaders() +} + +// BlobContentMD5 returns the value for header x-ms-blob-content-md5. +func (r DownloadResponse) BlobContentMD5() []byte { + return r.r.BlobContentMD5() +} + +// ContentMD5 returns the value for header Content-MD5. +func (r DownloadResponse) ContentMD5() []byte { + return r.r.ContentMD5() +} + +// StatusCode returns the HTTP status code of the response, e.g. 200. +func (r DownloadResponse) StatusCode() int { + return r.r.StatusCode() +} + +// Status returns the HTTP status message of the response, e.g. "200 OK". +func (r DownloadResponse) Status() string { + return r.r.Status() +} + +// AcceptRanges returns the value for header Accept-Ranges. +func (r DownloadResponse) AcceptRanges() string { + return r.r.AcceptRanges() +} + +// BlobCommittedBlockCount returns the value for header x-ms-blob-committed-block-count. +func (r DownloadResponse) BlobCommittedBlockCount() int32 { + return r.r.BlobCommittedBlockCount() +} + +// BlobSequenceNumber returns the value for header x-ms-blob-sequence-number. +func (r DownloadResponse) BlobSequenceNumber() int64 { + return r.r.BlobSequenceNumber() +} + +// BlobType returns the value for header x-ms-blob-type. +func (r DownloadResponse) BlobType() BlobType { + return r.r.BlobType() +} + +// CacheControl returns the value for header Cache-Control. +func (r DownloadResponse) CacheControl() string { + return r.r.CacheControl() +} + +// ContentDisposition returns the value for header Content-Disposition. +func (r DownloadResponse) ContentDisposition() string { + return r.r.ContentDisposition() +} + +// ContentEncoding returns the value for header Content-Encoding. +func (r DownloadResponse) ContentEncoding() string { + return r.r.ContentEncoding() +} + +// ContentLanguage returns the value for header Content-Language. +func (r DownloadResponse) ContentLanguage() string { + return r.r.ContentLanguage() +} + +// ContentLength returns the value for header Content-Length. +func (r DownloadResponse) ContentLength() int64 { + return r.r.ContentLength() +} + +// ContentRange returns the value for header Content-Range. +func (r DownloadResponse) ContentRange() string { + return r.r.ContentRange() +} + +// ContentType returns the value for header Content-Type. +func (r DownloadResponse) ContentType() string { + return r.r.ContentType() +} + +// CopyCompletionTime returns the value for header x-ms-copy-completion-time. +func (r DownloadResponse) CopyCompletionTime() time.Time { + return r.r.CopyCompletionTime() +} + +// CopyID returns the value for header x-ms-copy-id. +func (r DownloadResponse) CopyID() string { + return r.r.CopyID() +} + +// CopyProgress returns the value for header x-ms-copy-progress. +func (r DownloadResponse) CopyProgress() string { + return r.r.CopyProgress() +} + +// CopySource returns the value for header x-ms-copy-source. +func (r DownloadResponse) CopySource() string { + return r.r.CopySource() +} + +// CopyStatus returns the value for header x-ms-copy-status. +func (r DownloadResponse) CopyStatus() CopyStatusType { + return r.r.CopyStatus() +} + +// CopyStatusDescription returns the value for header x-ms-copy-status-description. +func (r DownloadResponse) CopyStatusDescription() string { + return r.r.CopyStatusDescription() +} + +// Date returns the value for header Date. +func (r DownloadResponse) Date() time.Time { + return r.r.Date() +} + +// ETag returns the value for header ETag. +func (r DownloadResponse) ETag() ETag { + return r.r.ETag() +} + +// IsServerEncrypted returns the value for header x-ms-server-encrypted. +func (r DownloadResponse) IsServerEncrypted() string { + return r.r.IsServerEncrypted() +} + +// LastModified returns the value for header Last-Modified. +func (r DownloadResponse) LastModified() time.Time { + return r.r.LastModified() +} + +// LeaseDuration returns the value for header x-ms-lease-duration. +func (r DownloadResponse) LeaseDuration() LeaseDurationType { + return r.r.LeaseDuration() +} + +// LeaseState returns the value for header x-ms-lease-state. +func (r DownloadResponse) LeaseState() LeaseStateType { + return r.r.LeaseState() +} + +// LeaseStatus returns the value for header x-ms-lease-status. +func (r DownloadResponse) LeaseStatus() LeaseStatusType { + return r.r.LeaseStatus() +} + +// RequestID returns the value for header x-ms-request-id. +func (r DownloadResponse) RequestID() string { + return r.r.RequestID() +} + +// Version returns the value for header x-ms-version. +func (r DownloadResponse) Version() string { + return r.r.Version() +} + +// NewMetadata returns user-defined key/value pairs. +func (r DownloadResponse) NewMetadata() Metadata { + return r.r.NewMetadata() +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/LICENSE b/vendor/github.com/Azure/go-autorest/autorest/LICENSE new file mode 100644 index 0000000..b9d6a27 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/LICENSE @@ -0,0 +1,191 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2015 Microsoft Corporation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/Azure/go-autorest/autorest/adal/LICENSE b/vendor/github.com/Azure/go-autorest/autorest/adal/LICENSE new file mode 100644 index 0000000..b9d6a27 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/adal/LICENSE @@ -0,0 +1,191 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2015 Microsoft Corporation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/Azure/go-autorest/autorest/adal/README.md b/vendor/github.com/Azure/go-autorest/autorest/adal/README.md new file mode 100644 index 0000000..fec416a --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/adal/README.md @@ -0,0 +1,292 @@ +# Azure Active Directory authentication for Go + +This is a standalone package for authenticating with Azure Active +Directory from other Go libraries and applications, in particular the [Azure SDK +for Go](https://github.com/Azure/azure-sdk-for-go). + +Note: Despite the package's name it is not related to other "ADAL" libraries +maintained in the [github.com/AzureAD](https://github.com/AzureAD) org. Issues +should be opened in [this repo's](https://github.com/Azure/go-autorest/issues) +or [the SDK's](https://github.com/Azure/azure-sdk-for-go/issues) issue +trackers. + +## Install + +```bash +go get -u github.com/Azure/go-autorest/autorest/adal +``` + +## Usage + +An Active Directory application is required in order to use this library. An application can be registered in the [Azure Portal](https://portal.azure.com/) by following these [guidelines](https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-integrating-applications) or using the [Azure CLI](https://github.com/Azure/azure-cli). + +### Register an Azure AD Application with secret + + +1. Register a new application with a `secret` credential + + ``` + az ad app create \ + --display-name example-app \ + --homepage https://example-app/home \ + --identifier-uris https://example-app/app \ + --password secret + ``` + +2. Create a service principal using the `Application ID` from previous step + + ``` + az ad sp create --id "Application ID" + ``` + + * Replace `Application ID` with `appId` from step 1. + +### Register an Azure AD Application with certificate + +1. Create a private key + + ``` + openssl genrsa -out "example-app.key" 2048 + ``` + +2. Create the certificate + + ``` + openssl req -new -key "example-app.key" -subj "/CN=example-app" -out "example-app.csr" + openssl x509 -req -in "example-app.csr" -signkey "example-app.key" -out "example-app.crt" -days 10000 + ``` + +3. Create the PKCS12 version of the certificate containing also the private key + + ``` + openssl pkcs12 -export -out "example-app.pfx" -inkey "example-app.key" -in "example-app.crt" -passout pass: + + ``` + +4. Register a new application with the certificate content form `example-app.crt` + + ``` + certificateContents="$(tail -n+2 "example-app.crt" | head -n-1)" + + az ad app create \ + --display-name example-app \ + --homepage https://example-app/home \ + --identifier-uris https://example-app/app \ + --key-usage Verify --end-date 2018-01-01 \ + --key-value "${certificateContents}" + ``` + +5. Create a service principal using the `Application ID` from previous step + + ``` + az ad sp create --id "APPLICATION_ID" + ``` + + * Replace `APPLICATION_ID` with `appId` from step 4. + + +### Grant the necessary permissions + +Azure relies on a Role-Based Access Control (RBAC) model to manage the access to resources at a fine-grained +level. There is a set of [pre-defined roles](https://docs.microsoft.com/en-us/azure/active-directory/role-based-access-built-in-roles) +which can be assigned to a service principal of an Azure AD application depending of your needs. + +``` +az role assignment create --assigner "SERVICE_PRINCIPAL_ID" --role "ROLE_NAME" +``` + +* Replace the `SERVICE_PRINCIPAL_ID` with the `appId` from previous step. +* Replace the `ROLE_NAME` with a role name of your choice. + +It is also possible to define custom role definitions. + +``` +az role definition create --role-definition role-definition.json +``` + +* Check [custom roles](https://docs.microsoft.com/en-us/azure/active-directory/role-based-access-control-custom-roles) for more details regarding the content of `role-definition.json` file. + + +### Acquire Access Token + +The common configuration used by all flows: + +```Go +const activeDirectoryEndpoint = "https://login.microsoftonline.com/" +tenantID := "TENANT_ID" +oauthConfig, err := adal.NewOAuthConfig(activeDirectoryEndpoint, tenantID) + +applicationID := "APPLICATION_ID" + +callback := func(token adal.Token) error { + // This is called after the token is acquired +} + +// The resource for which the token is acquired +resource := "https://management.core.windows.net/" +``` + +* Replace the `TENANT_ID` with your tenant ID. +* Replace the `APPLICATION_ID` with the value from previous section. + +#### Client Credentials + +```Go +applicationSecret := "APPLICATION_SECRET" + +spt, err := adal.NewServicePrincipalToken( + *oauthConfig, + appliationID, + applicationSecret, + resource, + callbacks...) +if err != nil { + return nil, err +} + +// Acquire a new access token +err = spt.Refresh() +if (err == nil) { + token := spt.Token +} +``` + +* Replace the `APPLICATION_SECRET` with the `password` value from previous section. + +#### Client Certificate + +```Go +certificatePath := "./example-app.pfx" + +certData, err := ioutil.ReadFile(certificatePath) +if err != nil { + return nil, fmt.Errorf("failed to read the certificate file (%s): %v", certificatePath, err) +} + +// Get the certificate and private key from pfx file +certificate, rsaPrivateKey, err := decodePkcs12(certData, "") +if err != nil { + return nil, fmt.Errorf("failed to decode pkcs12 certificate while creating spt: %v", err) +} + +spt, err := adal.NewServicePrincipalTokenFromCertificate( + *oauthConfig, + applicationID, + certificate, + rsaPrivateKey, + resource, + callbacks...) + +// Acquire a new access token +err = spt.Refresh() +if (err == nil) { + token := spt.Token +} +``` + +* Update the certificate path to point to the example-app.pfx file which was created in previous section. + + +#### Device Code + +```Go +oauthClient := &http.Client{} + +// Acquire the device code +deviceCode, err := adal.InitiateDeviceAuth( + oauthClient, + *oauthConfig, + applicationID, + resource) +if err != nil { + return nil, fmt.Errorf("Failed to start device auth flow: %s", err) +} + +// Display the authentication message +fmt.Println(*deviceCode.Message) + +// Wait here until the user is authenticated +token, err := adal.WaitForUserCompletion(oauthClient, deviceCode) +if err != nil { + return nil, fmt.Errorf("Failed to finish device auth flow: %s", err) +} + +spt, err := adal.NewServicePrincipalTokenFromManualToken( + *oauthConfig, + applicationID, + resource, + *token, + callbacks...) + +if (err == nil) { + token := spt.Token +} +``` + +#### Username password authenticate + +```Go +spt, err := adal.NewServicePrincipalTokenFromUsernamePassword( + *oauthConfig, + applicationID, + username, + password, + resource, + callbacks...) + +if (err == nil) { + token := spt.Token +} +``` + +#### Authorization code authenticate + +``` Go +spt, err := adal.NewServicePrincipalTokenFromAuthorizationCode( + *oauthConfig, + applicationID, + clientSecret, + authorizationCode, + redirectURI, + resource, + callbacks...) + +err = spt.Refresh() +if (err == nil) { + token := spt.Token +} +``` + +### Command Line Tool + +A command line tool is available in `cmd/adal.go` that can acquire a token for a given resource. It supports all flows mentioned above. + +``` +adal -h + +Usage of ./adal: + -applicationId string + application id + -certificatePath string + path to pk12/PFC application certificate + -mode string + authentication mode (device, secret, cert, refresh) (default "device") + -resource string + resource for which the token is requested + -secret string + application secret + -tenantId string + tenant id + -tokenCachePath string + location of oath token cache (default "/home/cgc/.adal/accessToken.json") +``` + +Example acquire a token for `https://management.core.windows.net/` using device code flow: + +``` +adal -mode device \ + -applicationId "APPLICATION_ID" \ + -tenantId "TENANT_ID" \ + -resource https://management.core.windows.net/ + +``` diff --git a/vendor/github.com/Azure/go-autorest/autorest/adal/config.go b/vendor/github.com/Azure/go-autorest/autorest/adal/config.go new file mode 100644 index 0000000..fa59647 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/adal/config.go @@ -0,0 +1,151 @@ +package adal + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "errors" + "fmt" + "net/url" +) + +const ( + activeDirectoryEndpointTemplate = "%s/oauth2/%s%s" +) + +// OAuthConfig represents the endpoints needed +// in OAuth operations +type OAuthConfig struct { + AuthorityEndpoint url.URL `json:"authorityEndpoint"` + AuthorizeEndpoint url.URL `json:"authorizeEndpoint"` + TokenEndpoint url.URL `json:"tokenEndpoint"` + DeviceCodeEndpoint url.URL `json:"deviceCodeEndpoint"` +} + +// IsZero returns true if the OAuthConfig object is zero-initialized. +func (oac OAuthConfig) IsZero() bool { + return oac == OAuthConfig{} +} + +func validateStringParam(param, name string) error { + if len(param) == 0 { + return fmt.Errorf("parameter '" + name + "' cannot be empty") + } + return nil +} + +// NewOAuthConfig returns an OAuthConfig with tenant specific urls +func NewOAuthConfig(activeDirectoryEndpoint, tenantID string) (*OAuthConfig, error) { + apiVer := "1.0" + return NewOAuthConfigWithAPIVersion(activeDirectoryEndpoint, tenantID, &apiVer) +} + +// NewOAuthConfigWithAPIVersion returns an OAuthConfig with tenant specific urls. +// If apiVersion is not nil the "api-version" query parameter will be appended to the endpoint URLs with the specified value. +func NewOAuthConfigWithAPIVersion(activeDirectoryEndpoint, tenantID string, apiVersion *string) (*OAuthConfig, error) { + if err := validateStringParam(activeDirectoryEndpoint, "activeDirectoryEndpoint"); err != nil { + return nil, err + } + api := "" + // it's legal for tenantID to be empty so don't validate it + if apiVersion != nil { + if err := validateStringParam(*apiVersion, "apiVersion"); err != nil { + return nil, err + } + api = fmt.Sprintf("?api-version=%s", *apiVersion) + } + u, err := url.Parse(activeDirectoryEndpoint) + if err != nil { + return nil, err + } + authorityURL, err := u.Parse(tenantID) + if err != nil { + return nil, err + } + authorizeURL, err := u.Parse(fmt.Sprintf(activeDirectoryEndpointTemplate, tenantID, "authorize", api)) + if err != nil { + return nil, err + } + tokenURL, err := u.Parse(fmt.Sprintf(activeDirectoryEndpointTemplate, tenantID, "token", api)) + if err != nil { + return nil, err + } + deviceCodeURL, err := u.Parse(fmt.Sprintf(activeDirectoryEndpointTemplate, tenantID, "devicecode", api)) + if err != nil { + return nil, err + } + + return &OAuthConfig{ + AuthorityEndpoint: *authorityURL, + AuthorizeEndpoint: *authorizeURL, + TokenEndpoint: *tokenURL, + DeviceCodeEndpoint: *deviceCodeURL, + }, nil +} + +// MultiTenantOAuthConfig provides endpoints for primary and aulixiary tenant IDs. +type MultiTenantOAuthConfig interface { + PrimaryTenant() *OAuthConfig + AuxiliaryTenants() []*OAuthConfig +} + +// OAuthOptions contains optional OAuthConfig creation arguments. +type OAuthOptions struct { + APIVersion string +} + +func (c OAuthOptions) apiVersion() string { + if c.APIVersion != "" { + return fmt.Sprintf("?api-version=%s", c.APIVersion) + } + return "1.0" +} + +// NewMultiTenantOAuthConfig creates an object that support multitenant OAuth configuration. +// See https://docs.microsoft.com/en-us/azure/azure-resource-manager/authenticate-multi-tenant for more information. +func NewMultiTenantOAuthConfig(activeDirectoryEndpoint, primaryTenantID string, auxiliaryTenantIDs []string, options OAuthOptions) (MultiTenantOAuthConfig, error) { + if len(auxiliaryTenantIDs) == 0 || len(auxiliaryTenantIDs) > 3 { + return nil, errors.New("must specify one to three auxiliary tenants") + } + mtCfg := multiTenantOAuthConfig{ + cfgs: make([]*OAuthConfig, len(auxiliaryTenantIDs)+1), + } + apiVer := options.apiVersion() + pri, err := NewOAuthConfigWithAPIVersion(activeDirectoryEndpoint, primaryTenantID, &apiVer) + if err != nil { + return nil, fmt.Errorf("failed to create OAuthConfig for primary tenant: %v", err) + } + mtCfg.cfgs[0] = pri + for i := range auxiliaryTenantIDs { + aux, err := NewOAuthConfig(activeDirectoryEndpoint, auxiliaryTenantIDs[i]) + if err != nil { + return nil, fmt.Errorf("failed to create OAuthConfig for tenant '%s': %v", auxiliaryTenantIDs[i], err) + } + mtCfg.cfgs[i+1] = aux + } + return mtCfg, nil +} + +type multiTenantOAuthConfig struct { + // first config in the slice is the primary tenant + cfgs []*OAuthConfig +} + +func (m multiTenantOAuthConfig) PrimaryTenant() *OAuthConfig { + return m.cfgs[0] +} + +func (m multiTenantOAuthConfig) AuxiliaryTenants() []*OAuthConfig { + return m.cfgs[1:] +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/adal/devicetoken.go b/vendor/github.com/Azure/go-autorest/autorest/adal/devicetoken.go new file mode 100644 index 0000000..914f8af --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/adal/devicetoken.go @@ -0,0 +1,269 @@ +package adal + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/* + This file is largely based on rjw57/oauth2device's code, with the follow differences: + * scope -> resource, and only allow a single one + * receive "Message" in the DeviceCode struct and show it to users as the prompt + * azure-xplat-cli has the following behavior that this emulates: + - does not send client_secret during the token exchange + - sends resource again in the token exchange request +*/ + +import ( + "context" + "encoding/json" + "fmt" + "io/ioutil" + "net/http" + "net/url" + "strings" + "time" +) + +const ( + logPrefix = "autorest/adal/devicetoken:" +) + +var ( + // ErrDeviceGeneric represents an unknown error from the token endpoint when using device flow + ErrDeviceGeneric = fmt.Errorf("%s Error while retrieving OAuth token: Unknown Error", logPrefix) + + // ErrDeviceAccessDenied represents an access denied error from the token endpoint when using device flow + ErrDeviceAccessDenied = fmt.Errorf("%s Error while retrieving OAuth token: Access Denied", logPrefix) + + // ErrDeviceAuthorizationPending represents the server waiting on the user to complete the device flow + ErrDeviceAuthorizationPending = fmt.Errorf("%s Error while retrieving OAuth token: Authorization Pending", logPrefix) + + // ErrDeviceCodeExpired represents the server timing out and expiring the code during device flow + ErrDeviceCodeExpired = fmt.Errorf("%s Error while retrieving OAuth token: Code Expired", logPrefix) + + // ErrDeviceSlowDown represents the service telling us we're polling too often during device flow + ErrDeviceSlowDown = fmt.Errorf("%s Error while retrieving OAuth token: Slow Down", logPrefix) + + // ErrDeviceCodeEmpty represents an empty device code from the device endpoint while using device flow + ErrDeviceCodeEmpty = fmt.Errorf("%s Error while retrieving device code: Device Code Empty", logPrefix) + + // ErrOAuthTokenEmpty represents an empty OAuth token from the token endpoint when using device flow + ErrOAuthTokenEmpty = fmt.Errorf("%s Error while retrieving OAuth token: Token Empty", logPrefix) + + errCodeSendingFails = "Error occurred while sending request for Device Authorization Code" + errCodeHandlingFails = "Error occurred while handling response from the Device Endpoint" + errTokenSendingFails = "Error occurred while sending request with device code for a token" + errTokenHandlingFails = "Error occurred while handling response from the Token Endpoint (during device flow)" + errStatusNotOK = "Error HTTP status != 200" +) + +// DeviceCode is the object returned by the device auth endpoint +// It contains information to instruct the user to complete the auth flow +type DeviceCode struct { + DeviceCode *string `json:"device_code,omitempty"` + UserCode *string `json:"user_code,omitempty"` + VerificationURL *string `json:"verification_url,omitempty"` + ExpiresIn *int64 `json:"expires_in,string,omitempty"` + Interval *int64 `json:"interval,string,omitempty"` + + Message *string `json:"message"` // Azure specific + Resource string // store the following, stored when initiating, used when exchanging + OAuthConfig OAuthConfig + ClientID string +} + +// TokenError is the object returned by the token exchange endpoint +// when something is amiss +type TokenError struct { + Error *string `json:"error,omitempty"` + ErrorCodes []int `json:"error_codes,omitempty"` + ErrorDescription *string `json:"error_description,omitempty"` + Timestamp *string `json:"timestamp,omitempty"` + TraceID *string `json:"trace_id,omitempty"` +} + +// DeviceToken is the object return by the token exchange endpoint +// It can either look like a Token or an ErrorToken, so put both here +// and check for presence of "Error" to know if we are in error state +type deviceToken struct { + Token + TokenError +} + +// InitiateDeviceAuth initiates a device auth flow. It returns a DeviceCode +// that can be used with CheckForUserCompletion or WaitForUserCompletion. +// Deprecated: use InitiateDeviceAuthWithContext() instead. +func InitiateDeviceAuth(sender Sender, oauthConfig OAuthConfig, clientID, resource string) (*DeviceCode, error) { + return InitiateDeviceAuthWithContext(context.Background(), sender, oauthConfig, clientID, resource) +} + +// InitiateDeviceAuthWithContext initiates a device auth flow. It returns a DeviceCode +// that can be used with CheckForUserCompletion or WaitForUserCompletion. +func InitiateDeviceAuthWithContext(ctx context.Context, sender Sender, oauthConfig OAuthConfig, clientID, resource string) (*DeviceCode, error) { + v := url.Values{ + "client_id": []string{clientID}, + "resource": []string{resource}, + } + + s := v.Encode() + body := ioutil.NopCloser(strings.NewReader(s)) + + req, err := http.NewRequest(http.MethodPost, oauthConfig.DeviceCodeEndpoint.String(), body) + if err != nil { + return nil, fmt.Errorf("%s %s: %s", logPrefix, errCodeSendingFails, err.Error()) + } + + req.ContentLength = int64(len(s)) + req.Header.Set(contentType, mimeTypeFormPost) + resp, err := sender.Do(req.WithContext(ctx)) + if err != nil { + return nil, fmt.Errorf("%s %s: %s", logPrefix, errCodeSendingFails, err.Error()) + } + defer resp.Body.Close() + + rb, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, fmt.Errorf("%s %s: %s", logPrefix, errCodeHandlingFails, err.Error()) + } + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("%s %s: %s", logPrefix, errCodeHandlingFails, errStatusNotOK) + } + + if len(strings.Trim(string(rb), " ")) == 0 { + return nil, ErrDeviceCodeEmpty + } + + var code DeviceCode + err = json.Unmarshal(rb, &code) + if err != nil { + return nil, fmt.Errorf("%s %s: %s", logPrefix, errCodeHandlingFails, err.Error()) + } + + code.ClientID = clientID + code.Resource = resource + code.OAuthConfig = oauthConfig + + return &code, nil +} + +// CheckForUserCompletion takes a DeviceCode and checks with the Azure AD OAuth endpoint +// to see if the device flow has: been completed, timed out, or otherwise failed +// Deprecated: use CheckForUserCompletionWithContext() instead. +func CheckForUserCompletion(sender Sender, code *DeviceCode) (*Token, error) { + return CheckForUserCompletionWithContext(context.Background(), sender, code) +} + +// CheckForUserCompletionWithContext takes a DeviceCode and checks with the Azure AD OAuth endpoint +// to see if the device flow has: been completed, timed out, or otherwise failed +func CheckForUserCompletionWithContext(ctx context.Context, sender Sender, code *DeviceCode) (*Token, error) { + v := url.Values{ + "client_id": []string{code.ClientID}, + "code": []string{*code.DeviceCode}, + "grant_type": []string{OAuthGrantTypeDeviceCode}, + "resource": []string{code.Resource}, + } + + s := v.Encode() + body := ioutil.NopCloser(strings.NewReader(s)) + + req, err := http.NewRequest(http.MethodPost, code.OAuthConfig.TokenEndpoint.String(), body) + if err != nil { + return nil, fmt.Errorf("%s %s: %s", logPrefix, errTokenSendingFails, err.Error()) + } + + req.ContentLength = int64(len(s)) + req.Header.Set(contentType, mimeTypeFormPost) + resp, err := sender.Do(req.WithContext(ctx)) + if err != nil { + return nil, fmt.Errorf("%s %s: %s", logPrefix, errTokenSendingFails, err.Error()) + } + defer resp.Body.Close() + + rb, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, fmt.Errorf("%s %s: %s", logPrefix, errTokenHandlingFails, err.Error()) + } + + if resp.StatusCode != http.StatusOK && len(strings.Trim(string(rb), " ")) == 0 { + return nil, fmt.Errorf("%s %s: %s", logPrefix, errTokenHandlingFails, errStatusNotOK) + } + if len(strings.Trim(string(rb), " ")) == 0 { + return nil, ErrOAuthTokenEmpty + } + + var token deviceToken + err = json.Unmarshal(rb, &token) + if err != nil { + return nil, fmt.Errorf("%s %s: %s", logPrefix, errTokenHandlingFails, err.Error()) + } + + if token.Error == nil { + return &token.Token, nil + } + + switch *token.Error { + case "authorization_pending": + return nil, ErrDeviceAuthorizationPending + case "slow_down": + return nil, ErrDeviceSlowDown + case "access_denied": + return nil, ErrDeviceAccessDenied + case "code_expired": + return nil, ErrDeviceCodeExpired + default: + return nil, ErrDeviceGeneric + } +} + +// WaitForUserCompletion calls CheckForUserCompletion repeatedly until a token is granted or an error state occurs. +// This prevents the user from looping and checking against 'ErrDeviceAuthorizationPending'. +// Deprecated: use WaitForUserCompletionWithContext() instead. +func WaitForUserCompletion(sender Sender, code *DeviceCode) (*Token, error) { + return WaitForUserCompletionWithContext(context.Background(), sender, code) +} + +// WaitForUserCompletionWithContext calls CheckForUserCompletion repeatedly until a token is granted or an error +// state occurs. This prevents the user from looping and checking against 'ErrDeviceAuthorizationPending'. +func WaitForUserCompletionWithContext(ctx context.Context, sender Sender, code *DeviceCode) (*Token, error) { + intervalDuration := time.Duration(*code.Interval) * time.Second + waitDuration := intervalDuration + + for { + token, err := CheckForUserCompletionWithContext(ctx, sender, code) + + if err == nil { + return token, nil + } + + switch err { + case ErrDeviceSlowDown: + waitDuration += waitDuration + case ErrDeviceAuthorizationPending: + // noop + default: // everything else is "fatal" to us + return nil, err + } + + if waitDuration > (intervalDuration * 3) { + return nil, fmt.Errorf("%s Error waiting for user to complete device flow. Server told us to slow_down too much", logPrefix) + } + + select { + case <-time.After(waitDuration): + // noop + case <-ctx.Done(): + return nil, ctx.Err() + } + } +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/adal/go.mod b/vendor/github.com/Azure/go-autorest/autorest/adal/go.mod new file mode 100644 index 0000000..a030eb4 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/adal/go.mod @@ -0,0 +1,12 @@ +module github.com/Azure/go-autorest/autorest/adal + +go 1.12 + +require ( + github.com/Azure/go-autorest/autorest v0.9.0 + github.com/Azure/go-autorest/autorest/date v0.2.0 + github.com/Azure/go-autorest/autorest/mocks v0.3.0 + github.com/Azure/go-autorest/tracing v0.5.0 + github.com/dgrijalva/jwt-go v3.2.0+incompatible + golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413 +) diff --git a/vendor/github.com/Azure/go-autorest/autorest/adal/go.sum b/vendor/github.com/Azure/go-autorest/autorest/adal/go.sum new file mode 100644 index 0000000..e43cf64 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/adal/go.sum @@ -0,0 +1,28 @@ +github.com/Azure/go-autorest/autorest v0.9.0 h1:MRvx8gncNaXJqOoLmhNjUAKh33JJF8LyxPhomEtOsjs= +github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/date v0.1.0 h1:YGrhWfrgtFs84+h0o46rJrlmsZtyZRg470CqAXTZaGM= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/date v0.2.0 h1:yW+Zlqf26583pE43KhfnhFcdmSWlm5Ew6bxipnr/tbM= +github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= +github.com/Azure/go-autorest/autorest/mocks v0.1.0 h1:Kx+AUU2Te+A3JIyYn6Dfs+cFgx5XorQKuIXrZGoq/SI= +github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0 h1:Ww5g4zThfD/6cLb4z6xxgeyDa7QDkizMkJKe0ysZXp0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.3.0 h1:qJumjCaCudz+OcqE9/XtEPfvtOjOmKaui4EOpFI6zZc= +github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= +github.com/Azure/go-autorest/logger v0.1.0 h1:ruG4BSDXONFRrZZJ2GUXDiUyVpayPmb1GnWeHDdaNKY= +github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/tracing v0.5.0 h1:TRn4WjSnkcSy5AEG3pnbtFSwNtwzjr4VYyQflFE619k= +github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413 h1:ULYEB3JvPRE/IfO+9uO7vKV/xzVTO7XPAwm8xbf4w2g= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/vendor/github.com/Azure/go-autorest/autorest/adal/go_mod_tidy_hack.go b/vendor/github.com/Azure/go-autorest/autorest/adal/go_mod_tidy_hack.go new file mode 100644 index 0000000..28a4bfc --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/adal/go_mod_tidy_hack.go @@ -0,0 +1,24 @@ +// +build modhack + +package adal + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This file, and the github.com/Azure/go-autorest/autorest import, won't actually become part of +// the resultant binary. + +// Necessary for safely adding multi-module repo. +// See: https://github.com/golang/go/wiki/Modules#is-it-possible-to-add-a-module-to-a-multi-module-repository +import _ "github.com/Azure/go-autorest/autorest" diff --git a/vendor/github.com/Azure/go-autorest/autorest/adal/persist.go b/vendor/github.com/Azure/go-autorest/autorest/adal/persist.go new file mode 100644 index 0000000..9e15f27 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/adal/persist.go @@ -0,0 +1,73 @@ +package adal + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "os" + "path/filepath" +) + +// LoadToken restores a Token object from a file located at 'path'. +func LoadToken(path string) (*Token, error) { + file, err := os.Open(path) + if err != nil { + return nil, fmt.Errorf("failed to open file (%s) while loading token: %v", path, err) + } + defer file.Close() + + var token Token + + dec := json.NewDecoder(file) + if err = dec.Decode(&token); err != nil { + return nil, fmt.Errorf("failed to decode contents of file (%s) into Token representation: %v", path, err) + } + return &token, nil +} + +// SaveToken persists an oauth token at the given location on disk. +// It moves the new file into place so it can safely be used to replace an existing file +// that maybe accessed by multiple processes. +func SaveToken(path string, mode os.FileMode, token Token) error { + dir := filepath.Dir(path) + err := os.MkdirAll(dir, os.ModePerm) + if err != nil { + return fmt.Errorf("failed to create directory (%s) to store token in: %v", dir, err) + } + + newFile, err := ioutil.TempFile(dir, "token") + if err != nil { + return fmt.Errorf("failed to create the temp file to write the token: %v", err) + } + tempPath := newFile.Name() + + if err := json.NewEncoder(newFile).Encode(token); err != nil { + return fmt.Errorf("failed to encode token to file (%s) while saving token: %v", tempPath, err) + } + if err := newFile.Close(); err != nil { + return fmt.Errorf("failed to close temp file %s: %v", tempPath, err) + } + + // Atomic replace to avoid multi-writer file corruptions + if err := os.Rename(tempPath, path); err != nil { + return fmt.Errorf("failed to move temporary token to desired output location. src=%s dst=%s: %v", tempPath, path, err) + } + if err := os.Chmod(path, mode); err != nil { + return fmt.Errorf("failed to chmod the token file %s: %v", path, err) + } + return nil +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/adal/sender.go b/vendor/github.com/Azure/go-autorest/autorest/adal/sender.go new file mode 100644 index 0000000..d7e4372 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/adal/sender.go @@ -0,0 +1,95 @@ +package adal + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "crypto/tls" + "net/http" + "net/http/cookiejar" + "sync" + + "github.com/Azure/go-autorest/tracing" +) + +const ( + contentType = "Content-Type" + mimeTypeFormPost = "application/x-www-form-urlencoded" +) + +var defaultSender Sender +var defaultSenderInit = &sync.Once{} + +// Sender is the interface that wraps the Do method to send HTTP requests. +// +// The standard http.Client conforms to this interface. +type Sender interface { + Do(*http.Request) (*http.Response, error) +} + +// SenderFunc is a method that implements the Sender interface. +type SenderFunc func(*http.Request) (*http.Response, error) + +// Do implements the Sender interface on SenderFunc. +func (sf SenderFunc) Do(r *http.Request) (*http.Response, error) { + return sf(r) +} + +// SendDecorator takes and possibly decorates, by wrapping, a Sender. Decorators may affect the +// http.Request and pass it along or, first, pass the http.Request along then react to the +// http.Response result. +type SendDecorator func(Sender) Sender + +// CreateSender creates, decorates, and returns, as a Sender, the default http.Client. +func CreateSender(decorators ...SendDecorator) Sender { + return DecorateSender(sender(), decorators...) +} + +// DecorateSender accepts a Sender and a, possibly empty, set of SendDecorators, which is applies to +// the Sender. Decorators are applied in the order received, but their affect upon the request +// depends on whether they are a pre-decorator (change the http.Request and then pass it along) or a +// post-decorator (pass the http.Request along and react to the results in http.Response). +func DecorateSender(s Sender, decorators ...SendDecorator) Sender { + for _, decorate := range decorators { + s = decorate(s) + } + return s +} + +func sender() Sender { + // note that we can't init defaultSender in init() since it will + // execute before calling code has had a chance to enable tracing + defaultSenderInit.Do(func() { + // Use behaviour compatible with DefaultTransport, but require TLS minimum version. + defaultTransport := http.DefaultTransport.(*http.Transport) + transport := &http.Transport{ + Proxy: defaultTransport.Proxy, + DialContext: defaultTransport.DialContext, + MaxIdleConns: defaultTransport.MaxIdleConns, + IdleConnTimeout: defaultTransport.IdleConnTimeout, + TLSHandshakeTimeout: defaultTransport.TLSHandshakeTimeout, + ExpectContinueTimeout: defaultTransport.ExpectContinueTimeout, + TLSClientConfig: &tls.Config{ + MinVersion: tls.VersionTLS12, + }, + } + var roundTripper http.RoundTripper = transport + if tracing.IsEnabled() { + roundTripper = tracing.NewTransport(transport) + } + j, _ := cookiejar.New(nil) + defaultSender = &http.Client{Jar: j, Transport: roundTripper} + }) + return defaultSender +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/adal/token.go b/vendor/github.com/Azure/go-autorest/autorest/adal/token.go new file mode 100644 index 0000000..b65b2c8 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/adal/token.go @@ -0,0 +1,1135 @@ +package adal + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "context" + "crypto/rand" + "crypto/rsa" + "crypto/sha1" + "crypto/x509" + "encoding/base64" + "encoding/json" + "errors" + "fmt" + "io" + "io/ioutil" + "math" + "net/http" + "net/url" + "os" + "strings" + "sync" + "time" + + "github.com/Azure/go-autorest/autorest/date" + "github.com/dgrijalva/jwt-go" +) + +const ( + defaultRefresh = 5 * time.Minute + + // OAuthGrantTypeDeviceCode is the "grant_type" identifier used in device flow + OAuthGrantTypeDeviceCode = "device_code" + + // OAuthGrantTypeClientCredentials is the "grant_type" identifier used in credential flows + OAuthGrantTypeClientCredentials = "client_credentials" + + // OAuthGrantTypeUserPass is the "grant_type" identifier used in username and password auth flows + OAuthGrantTypeUserPass = "password" + + // OAuthGrantTypeRefreshToken is the "grant_type" identifier used in refresh token flows + OAuthGrantTypeRefreshToken = "refresh_token" + + // OAuthGrantTypeAuthorizationCode is the "grant_type" identifier used in authorization code flows + OAuthGrantTypeAuthorizationCode = "authorization_code" + + // metadataHeader is the header required by MSI extension + metadataHeader = "Metadata" + + // msiEndpoint is the well known endpoint for getting MSI authentications tokens + msiEndpoint = "http://169.254.169.254/metadata/identity/oauth2/token" + + // the default number of attempts to refresh an MSI authentication token + defaultMaxMSIRefreshAttempts = 5 + + // asMSIEndpointEnv is the environment variable used to store the endpoint on App Service and Functions + asMSIEndpointEnv = "MSI_ENDPOINT" + + // asMSISecretEnv is the environment variable used to store the request secret on App Service and Functions + asMSISecretEnv = "MSI_SECRET" +) + +// OAuthTokenProvider is an interface which should be implemented by an access token retriever +type OAuthTokenProvider interface { + OAuthToken() string +} + +// MultitenantOAuthTokenProvider provides tokens used for multi-tenant authorization. +type MultitenantOAuthTokenProvider interface { + PrimaryOAuthToken() string + AuxiliaryOAuthTokens() []string +} + +// TokenRefreshError is an interface used by errors returned during token refresh. +type TokenRefreshError interface { + error + Response() *http.Response +} + +// Refresher is an interface for token refresh functionality +type Refresher interface { + Refresh() error + RefreshExchange(resource string) error + EnsureFresh() error +} + +// RefresherWithContext is an interface for token refresh functionality +type RefresherWithContext interface { + RefreshWithContext(ctx context.Context) error + RefreshExchangeWithContext(ctx context.Context, resource string) error + EnsureFreshWithContext(ctx context.Context) error +} + +// TokenRefreshCallback is the type representing callbacks that will be called after +// a successful token refresh +type TokenRefreshCallback func(Token) error + +// TokenRefresh is a type representing a custom callback to refresh a token +type TokenRefresh func(ctx context.Context, resource string) (*Token, error) + +// Token encapsulates the access token used to authorize Azure requests. +// https://docs.microsoft.com/en-us/azure/active-directory/develop/v1-oauth2-client-creds-grant-flow#service-to-service-access-token-response +type Token struct { + AccessToken string `json:"access_token"` + RefreshToken string `json:"refresh_token"` + + ExpiresIn json.Number `json:"expires_in"` + ExpiresOn json.Number `json:"expires_on"` + NotBefore json.Number `json:"not_before"` + + Resource string `json:"resource"` + Type string `json:"token_type"` +} + +func newToken() Token { + return Token{ + ExpiresIn: "0", + ExpiresOn: "0", + NotBefore: "0", + } +} + +// IsZero returns true if the token object is zero-initialized. +func (t Token) IsZero() bool { + return t == Token{} +} + +// Expires returns the time.Time when the Token expires. +func (t Token) Expires() time.Time { + s, err := t.ExpiresOn.Float64() + if err != nil { + s = -3600 + } + + expiration := date.NewUnixTimeFromSeconds(s) + + return time.Time(expiration).UTC() +} + +// IsExpired returns true if the Token is expired, false otherwise. +func (t Token) IsExpired() bool { + return t.WillExpireIn(0) +} + +// WillExpireIn returns true if the Token will expire after the passed time.Duration interval +// from now, false otherwise. +func (t Token) WillExpireIn(d time.Duration) bool { + return !t.Expires().After(time.Now().Add(d)) +} + +//OAuthToken return the current access token +func (t *Token) OAuthToken() string { + return t.AccessToken +} + +// ServicePrincipalSecret is an interface that allows various secret mechanism to fill the form +// that is submitted when acquiring an oAuth token. +type ServicePrincipalSecret interface { + SetAuthenticationValues(spt *ServicePrincipalToken, values *url.Values) error +} + +// ServicePrincipalNoSecret represents a secret type that contains no secret +// meaning it is not valid for fetching a fresh token. This is used by Manual +type ServicePrincipalNoSecret struct { +} + +// SetAuthenticationValues is a method of the interface ServicePrincipalSecret +// It only returns an error for the ServicePrincipalNoSecret type +func (noSecret *ServicePrincipalNoSecret) SetAuthenticationValues(spt *ServicePrincipalToken, v *url.Values) error { + return fmt.Errorf("Manually created ServicePrincipalToken does not contain secret material to retrieve a new access token") +} + +// MarshalJSON implements the json.Marshaler interface. +func (noSecret ServicePrincipalNoSecret) MarshalJSON() ([]byte, error) { + type tokenType struct { + Type string `json:"type"` + } + return json.Marshal(tokenType{ + Type: "ServicePrincipalNoSecret", + }) +} + +// ServicePrincipalTokenSecret implements ServicePrincipalSecret for client_secret type authorization. +type ServicePrincipalTokenSecret struct { + ClientSecret string `json:"value"` +} + +// SetAuthenticationValues is a method of the interface ServicePrincipalSecret. +// It will populate the form submitted during oAuth Token Acquisition using the client_secret. +func (tokenSecret *ServicePrincipalTokenSecret) SetAuthenticationValues(spt *ServicePrincipalToken, v *url.Values) error { + v.Set("client_secret", tokenSecret.ClientSecret) + return nil +} + +// MarshalJSON implements the json.Marshaler interface. +func (tokenSecret ServicePrincipalTokenSecret) MarshalJSON() ([]byte, error) { + type tokenType struct { + Type string `json:"type"` + Value string `json:"value"` + } + return json.Marshal(tokenType{ + Type: "ServicePrincipalTokenSecret", + Value: tokenSecret.ClientSecret, + }) +} + +// ServicePrincipalCertificateSecret implements ServicePrincipalSecret for generic RSA cert auth with signed JWTs. +type ServicePrincipalCertificateSecret struct { + Certificate *x509.Certificate + PrivateKey *rsa.PrivateKey +} + +// SignJwt returns the JWT signed with the certificate's private key. +func (secret *ServicePrincipalCertificateSecret) SignJwt(spt *ServicePrincipalToken) (string, error) { + hasher := sha1.New() + _, err := hasher.Write(secret.Certificate.Raw) + if err != nil { + return "", err + } + + thumbprint := base64.URLEncoding.EncodeToString(hasher.Sum(nil)) + + // The jti (JWT ID) claim provides a unique identifier for the JWT. + jti := make([]byte, 20) + _, err = rand.Read(jti) + if err != nil { + return "", err + } + + token := jwt.New(jwt.SigningMethodRS256) + token.Header["x5t"] = thumbprint + x5c := []string{base64.StdEncoding.EncodeToString(secret.Certificate.Raw)} + token.Header["x5c"] = x5c + token.Claims = jwt.MapClaims{ + "aud": spt.inner.OauthConfig.TokenEndpoint.String(), + "iss": spt.inner.ClientID, + "sub": spt.inner.ClientID, + "jti": base64.URLEncoding.EncodeToString(jti), + "nbf": time.Now().Unix(), + "exp": time.Now().Add(24 * time.Hour).Unix(), + } + + signedString, err := token.SignedString(secret.PrivateKey) + return signedString, err +} + +// SetAuthenticationValues is a method of the interface ServicePrincipalSecret. +// It will populate the form submitted during oAuth Token Acquisition using a JWT signed with a certificate. +func (secret *ServicePrincipalCertificateSecret) SetAuthenticationValues(spt *ServicePrincipalToken, v *url.Values) error { + jwt, err := secret.SignJwt(spt) + if err != nil { + return err + } + + v.Set("client_assertion", jwt) + v.Set("client_assertion_type", "urn:ietf:params:oauth:client-assertion-type:jwt-bearer") + return nil +} + +// MarshalJSON implements the json.Marshaler interface. +func (secret ServicePrincipalCertificateSecret) MarshalJSON() ([]byte, error) { + return nil, errors.New("marshalling ServicePrincipalCertificateSecret is not supported") +} + +// ServicePrincipalMSISecret implements ServicePrincipalSecret for machines running the MSI Extension. +type ServicePrincipalMSISecret struct { +} + +// SetAuthenticationValues is a method of the interface ServicePrincipalSecret. +func (msiSecret *ServicePrincipalMSISecret) SetAuthenticationValues(spt *ServicePrincipalToken, v *url.Values) error { + return nil +} + +// MarshalJSON implements the json.Marshaler interface. +func (msiSecret ServicePrincipalMSISecret) MarshalJSON() ([]byte, error) { + return nil, errors.New("marshalling ServicePrincipalMSISecret is not supported") +} + +// ServicePrincipalUsernamePasswordSecret implements ServicePrincipalSecret for username and password auth. +type ServicePrincipalUsernamePasswordSecret struct { + Username string `json:"username"` + Password string `json:"password"` +} + +// SetAuthenticationValues is a method of the interface ServicePrincipalSecret. +func (secret *ServicePrincipalUsernamePasswordSecret) SetAuthenticationValues(spt *ServicePrincipalToken, v *url.Values) error { + v.Set("username", secret.Username) + v.Set("password", secret.Password) + return nil +} + +// MarshalJSON implements the json.Marshaler interface. +func (secret ServicePrincipalUsernamePasswordSecret) MarshalJSON() ([]byte, error) { + type tokenType struct { + Type string `json:"type"` + Username string `json:"username"` + Password string `json:"password"` + } + return json.Marshal(tokenType{ + Type: "ServicePrincipalUsernamePasswordSecret", + Username: secret.Username, + Password: secret.Password, + }) +} + +// ServicePrincipalAuthorizationCodeSecret implements ServicePrincipalSecret for authorization code auth. +type ServicePrincipalAuthorizationCodeSecret struct { + ClientSecret string `json:"value"` + AuthorizationCode string `json:"authCode"` + RedirectURI string `json:"redirect"` +} + +// SetAuthenticationValues is a method of the interface ServicePrincipalSecret. +func (secret *ServicePrincipalAuthorizationCodeSecret) SetAuthenticationValues(spt *ServicePrincipalToken, v *url.Values) error { + v.Set("code", secret.AuthorizationCode) + v.Set("client_secret", secret.ClientSecret) + v.Set("redirect_uri", secret.RedirectURI) + return nil +} + +// MarshalJSON implements the json.Marshaler interface. +func (secret ServicePrincipalAuthorizationCodeSecret) MarshalJSON() ([]byte, error) { + type tokenType struct { + Type string `json:"type"` + Value string `json:"value"` + AuthCode string `json:"authCode"` + Redirect string `json:"redirect"` + } + return json.Marshal(tokenType{ + Type: "ServicePrincipalAuthorizationCodeSecret", + Value: secret.ClientSecret, + AuthCode: secret.AuthorizationCode, + Redirect: secret.RedirectURI, + }) +} + +// ServicePrincipalToken encapsulates a Token created for a Service Principal. +type ServicePrincipalToken struct { + inner servicePrincipalToken + refreshLock *sync.RWMutex + sender Sender + customRefreshFunc TokenRefresh + refreshCallbacks []TokenRefreshCallback + // MaxMSIRefreshAttempts is the maximum number of attempts to refresh an MSI token. + MaxMSIRefreshAttempts int +} + +// MarshalTokenJSON returns the marshalled inner token. +func (spt ServicePrincipalToken) MarshalTokenJSON() ([]byte, error) { + return json.Marshal(spt.inner.Token) +} + +// SetRefreshCallbacks replaces any existing refresh callbacks with the specified callbacks. +func (spt *ServicePrincipalToken) SetRefreshCallbacks(callbacks []TokenRefreshCallback) { + spt.refreshCallbacks = callbacks +} + +// SetCustomRefreshFunc sets a custom refresh function used to refresh the token. +func (spt *ServicePrincipalToken) SetCustomRefreshFunc(customRefreshFunc TokenRefresh) { + spt.customRefreshFunc = customRefreshFunc +} + +// MarshalJSON implements the json.Marshaler interface. +func (spt ServicePrincipalToken) MarshalJSON() ([]byte, error) { + return json.Marshal(spt.inner) +} + +// UnmarshalJSON implements the json.Unmarshaler interface. +func (spt *ServicePrincipalToken) UnmarshalJSON(data []byte) error { + // need to determine the token type + raw := map[string]interface{}{} + err := json.Unmarshal(data, &raw) + if err != nil { + return err + } + secret := raw["secret"].(map[string]interface{}) + switch secret["type"] { + case "ServicePrincipalNoSecret": + spt.inner.Secret = &ServicePrincipalNoSecret{} + case "ServicePrincipalTokenSecret": + spt.inner.Secret = &ServicePrincipalTokenSecret{} + case "ServicePrincipalCertificateSecret": + return errors.New("unmarshalling ServicePrincipalCertificateSecret is not supported") + case "ServicePrincipalMSISecret": + return errors.New("unmarshalling ServicePrincipalMSISecret is not supported") + case "ServicePrincipalUsernamePasswordSecret": + spt.inner.Secret = &ServicePrincipalUsernamePasswordSecret{} + case "ServicePrincipalAuthorizationCodeSecret": + spt.inner.Secret = &ServicePrincipalAuthorizationCodeSecret{} + default: + return fmt.Errorf("unrecognized token type '%s'", secret["type"]) + } + err = json.Unmarshal(data, &spt.inner) + if err != nil { + return err + } + // Don't override the refreshLock or the sender if those have been already set. + if spt.refreshLock == nil { + spt.refreshLock = &sync.RWMutex{} + } + if spt.sender == nil { + spt.sender = sender() + } + return nil +} + +// internal type used for marshalling/unmarshalling +type servicePrincipalToken struct { + Token Token `json:"token"` + Secret ServicePrincipalSecret `json:"secret"` + OauthConfig OAuthConfig `json:"oauth"` + ClientID string `json:"clientID"` + Resource string `json:"resource"` + AutoRefresh bool `json:"autoRefresh"` + RefreshWithin time.Duration `json:"refreshWithin"` +} + +func validateOAuthConfig(oac OAuthConfig) error { + if oac.IsZero() { + return fmt.Errorf("parameter 'oauthConfig' cannot be zero-initialized") + } + return nil +} + +// NewServicePrincipalTokenWithSecret create a ServicePrincipalToken using the supplied ServicePrincipalSecret implementation. +func NewServicePrincipalTokenWithSecret(oauthConfig OAuthConfig, id string, resource string, secret ServicePrincipalSecret, callbacks ...TokenRefreshCallback) (*ServicePrincipalToken, error) { + if err := validateOAuthConfig(oauthConfig); err != nil { + return nil, err + } + if err := validateStringParam(id, "id"); err != nil { + return nil, err + } + if err := validateStringParam(resource, "resource"); err != nil { + return nil, err + } + if secret == nil { + return nil, fmt.Errorf("parameter 'secret' cannot be nil") + } + spt := &ServicePrincipalToken{ + inner: servicePrincipalToken{ + Token: newToken(), + OauthConfig: oauthConfig, + Secret: secret, + ClientID: id, + Resource: resource, + AutoRefresh: true, + RefreshWithin: defaultRefresh, + }, + refreshLock: &sync.RWMutex{}, + sender: sender(), + refreshCallbacks: callbacks, + } + return spt, nil +} + +// NewServicePrincipalTokenFromManualToken creates a ServicePrincipalToken using the supplied token +func NewServicePrincipalTokenFromManualToken(oauthConfig OAuthConfig, clientID string, resource string, token Token, callbacks ...TokenRefreshCallback) (*ServicePrincipalToken, error) { + if err := validateOAuthConfig(oauthConfig); err != nil { + return nil, err + } + if err := validateStringParam(clientID, "clientID"); err != nil { + return nil, err + } + if err := validateStringParam(resource, "resource"); err != nil { + return nil, err + } + if token.IsZero() { + return nil, fmt.Errorf("parameter 'token' cannot be zero-initialized") + } + spt, err := NewServicePrincipalTokenWithSecret( + oauthConfig, + clientID, + resource, + &ServicePrincipalNoSecret{}, + callbacks...) + if err != nil { + return nil, err + } + + spt.inner.Token = token + + return spt, nil +} + +// NewServicePrincipalTokenFromManualTokenSecret creates a ServicePrincipalToken using the supplied token and secret +func NewServicePrincipalTokenFromManualTokenSecret(oauthConfig OAuthConfig, clientID string, resource string, token Token, secret ServicePrincipalSecret, callbacks ...TokenRefreshCallback) (*ServicePrincipalToken, error) { + if err := validateOAuthConfig(oauthConfig); err != nil { + return nil, err + } + if err := validateStringParam(clientID, "clientID"); err != nil { + return nil, err + } + if err := validateStringParam(resource, "resource"); err != nil { + return nil, err + } + if secret == nil { + return nil, fmt.Errorf("parameter 'secret' cannot be nil") + } + if token.IsZero() { + return nil, fmt.Errorf("parameter 'token' cannot be zero-initialized") + } + spt, err := NewServicePrincipalTokenWithSecret( + oauthConfig, + clientID, + resource, + secret, + callbacks...) + if err != nil { + return nil, err + } + + spt.inner.Token = token + + return spt, nil +} + +// NewServicePrincipalToken creates a ServicePrincipalToken from the supplied Service Principal +// credentials scoped to the named resource. +func NewServicePrincipalToken(oauthConfig OAuthConfig, clientID string, secret string, resource string, callbacks ...TokenRefreshCallback) (*ServicePrincipalToken, error) { + if err := validateOAuthConfig(oauthConfig); err != nil { + return nil, err + } + if err := validateStringParam(clientID, "clientID"); err != nil { + return nil, err + } + if err := validateStringParam(secret, "secret"); err != nil { + return nil, err + } + if err := validateStringParam(resource, "resource"); err != nil { + return nil, err + } + return NewServicePrincipalTokenWithSecret( + oauthConfig, + clientID, + resource, + &ServicePrincipalTokenSecret{ + ClientSecret: secret, + }, + callbacks..., + ) +} + +// NewServicePrincipalTokenFromCertificate creates a ServicePrincipalToken from the supplied pkcs12 bytes. +func NewServicePrincipalTokenFromCertificate(oauthConfig OAuthConfig, clientID string, certificate *x509.Certificate, privateKey *rsa.PrivateKey, resource string, callbacks ...TokenRefreshCallback) (*ServicePrincipalToken, error) { + if err := validateOAuthConfig(oauthConfig); err != nil { + return nil, err + } + if err := validateStringParam(clientID, "clientID"); err != nil { + return nil, err + } + if err := validateStringParam(resource, "resource"); err != nil { + return nil, err + } + if certificate == nil { + return nil, fmt.Errorf("parameter 'certificate' cannot be nil") + } + if privateKey == nil { + return nil, fmt.Errorf("parameter 'privateKey' cannot be nil") + } + return NewServicePrincipalTokenWithSecret( + oauthConfig, + clientID, + resource, + &ServicePrincipalCertificateSecret{ + PrivateKey: privateKey, + Certificate: certificate, + }, + callbacks..., + ) +} + +// NewServicePrincipalTokenFromUsernamePassword creates a ServicePrincipalToken from the username and password. +func NewServicePrincipalTokenFromUsernamePassword(oauthConfig OAuthConfig, clientID string, username string, password string, resource string, callbacks ...TokenRefreshCallback) (*ServicePrincipalToken, error) { + if err := validateOAuthConfig(oauthConfig); err != nil { + return nil, err + } + if err := validateStringParam(clientID, "clientID"); err != nil { + return nil, err + } + if err := validateStringParam(username, "username"); err != nil { + return nil, err + } + if err := validateStringParam(password, "password"); err != nil { + return nil, err + } + if err := validateStringParam(resource, "resource"); err != nil { + return nil, err + } + return NewServicePrincipalTokenWithSecret( + oauthConfig, + clientID, + resource, + &ServicePrincipalUsernamePasswordSecret{ + Username: username, + Password: password, + }, + callbacks..., + ) +} + +// NewServicePrincipalTokenFromAuthorizationCode creates a ServicePrincipalToken from the +func NewServicePrincipalTokenFromAuthorizationCode(oauthConfig OAuthConfig, clientID string, clientSecret string, authorizationCode string, redirectURI string, resource string, callbacks ...TokenRefreshCallback) (*ServicePrincipalToken, error) { + + if err := validateOAuthConfig(oauthConfig); err != nil { + return nil, err + } + if err := validateStringParam(clientID, "clientID"); err != nil { + return nil, err + } + if err := validateStringParam(clientSecret, "clientSecret"); err != nil { + return nil, err + } + if err := validateStringParam(authorizationCode, "authorizationCode"); err != nil { + return nil, err + } + if err := validateStringParam(redirectURI, "redirectURI"); err != nil { + return nil, err + } + if err := validateStringParam(resource, "resource"); err != nil { + return nil, err + } + + return NewServicePrincipalTokenWithSecret( + oauthConfig, + clientID, + resource, + &ServicePrincipalAuthorizationCodeSecret{ + ClientSecret: clientSecret, + AuthorizationCode: authorizationCode, + RedirectURI: redirectURI, + }, + callbacks..., + ) +} + +// GetMSIVMEndpoint gets the MSI endpoint on Virtual Machines. +func GetMSIVMEndpoint() (string, error) { + return msiEndpoint, nil +} + +func isAppService() bool { + _, asMSIEndpointEnvExists := os.LookupEnv(asMSIEndpointEnv) + _, asMSISecretEnvExists := os.LookupEnv(asMSISecretEnv) + + return asMSIEndpointEnvExists && asMSISecretEnvExists +} + +// GetMSIAppServiceEndpoint get the MSI endpoint for App Service and Functions +func GetMSIAppServiceEndpoint() (string, error) { + asMSIEndpoint, asMSIEndpointEnvExists := os.LookupEnv(asMSIEndpointEnv) + + if asMSIEndpointEnvExists { + return asMSIEndpoint, nil + } + return "", errors.New("MSI endpoint not found") +} + +// GetMSIEndpoint get the appropriate MSI endpoint depending on the runtime environment +func GetMSIEndpoint() (string, error) { + if isAppService() { + return GetMSIAppServiceEndpoint() + } + return GetMSIVMEndpoint() +} + +// NewServicePrincipalTokenFromMSI creates a ServicePrincipalToken via the MSI VM Extension. +// It will use the system assigned identity when creating the token. +func NewServicePrincipalTokenFromMSI(msiEndpoint, resource string, callbacks ...TokenRefreshCallback) (*ServicePrincipalToken, error) { + return newServicePrincipalTokenFromMSI(msiEndpoint, resource, nil, callbacks...) +} + +// NewServicePrincipalTokenFromMSIWithUserAssignedID creates a ServicePrincipalToken via the MSI VM Extension. +// It will use the specified user assigned identity when creating the token. +func NewServicePrincipalTokenFromMSIWithUserAssignedID(msiEndpoint, resource string, userAssignedID string, callbacks ...TokenRefreshCallback) (*ServicePrincipalToken, error) { + return newServicePrincipalTokenFromMSI(msiEndpoint, resource, &userAssignedID, callbacks...) +} + +func newServicePrincipalTokenFromMSI(msiEndpoint, resource string, userAssignedID *string, callbacks ...TokenRefreshCallback) (*ServicePrincipalToken, error) { + if err := validateStringParam(msiEndpoint, "msiEndpoint"); err != nil { + return nil, err + } + if err := validateStringParam(resource, "resource"); err != nil { + return nil, err + } + if userAssignedID != nil { + if err := validateStringParam(*userAssignedID, "userAssignedID"); err != nil { + return nil, err + } + } + // We set the oauth config token endpoint to be MSI's endpoint + msiEndpointURL, err := url.Parse(msiEndpoint) + if err != nil { + return nil, err + } + + v := url.Values{} + v.Set("resource", resource) + // App Service MSI currently only supports token API version 2017-09-01 + if isAppService() { + v.Set("api-version", "2017-09-01") + } else { + v.Set("api-version", "2018-02-01") + } + if userAssignedID != nil { + v.Set("client_id", *userAssignedID) + } + msiEndpointURL.RawQuery = v.Encode() + + spt := &ServicePrincipalToken{ + inner: servicePrincipalToken{ + Token: newToken(), + OauthConfig: OAuthConfig{ + TokenEndpoint: *msiEndpointURL, + }, + Secret: &ServicePrincipalMSISecret{}, + Resource: resource, + AutoRefresh: true, + RefreshWithin: defaultRefresh, + }, + refreshLock: &sync.RWMutex{}, + sender: sender(), + refreshCallbacks: callbacks, + MaxMSIRefreshAttempts: defaultMaxMSIRefreshAttempts, + } + + if userAssignedID != nil { + spt.inner.ClientID = *userAssignedID + } + + return spt, nil +} + +// internal type that implements TokenRefreshError +type tokenRefreshError struct { + message string + resp *http.Response +} + +// Error implements the error interface which is part of the TokenRefreshError interface. +func (tre tokenRefreshError) Error() string { + return tre.message +} + +// Response implements the TokenRefreshError interface, it returns the raw HTTP response from the refresh operation. +func (tre tokenRefreshError) Response() *http.Response { + return tre.resp +} + +func newTokenRefreshError(message string, resp *http.Response) TokenRefreshError { + return tokenRefreshError{message: message, resp: resp} +} + +// EnsureFresh will refresh the token if it will expire within the refresh window (as set by +// RefreshWithin) and autoRefresh flag is on. This method is safe for concurrent use. +func (spt *ServicePrincipalToken) EnsureFresh() error { + return spt.EnsureFreshWithContext(context.Background()) +} + +// EnsureFreshWithContext will refresh the token if it will expire within the refresh window (as set by +// RefreshWithin) and autoRefresh flag is on. This method is safe for concurrent use. +func (spt *ServicePrincipalToken) EnsureFreshWithContext(ctx context.Context) error { + if spt.inner.AutoRefresh && spt.inner.Token.WillExpireIn(spt.inner.RefreshWithin) { + // take the write lock then check to see if the token was already refreshed + spt.refreshLock.Lock() + defer spt.refreshLock.Unlock() + if spt.inner.Token.WillExpireIn(spt.inner.RefreshWithin) { + return spt.refreshInternal(ctx, spt.inner.Resource) + } + } + return nil +} + +// InvokeRefreshCallbacks calls any TokenRefreshCallbacks that were added to the SPT during initialization +func (spt *ServicePrincipalToken) InvokeRefreshCallbacks(token Token) error { + if spt.refreshCallbacks != nil { + for _, callback := range spt.refreshCallbacks { + err := callback(spt.inner.Token) + if err != nil { + return fmt.Errorf("adal: TokenRefreshCallback handler failed. Error = '%v'", err) + } + } + } + return nil +} + +// Refresh obtains a fresh token for the Service Principal. +// This method is safe for concurrent use. +func (spt *ServicePrincipalToken) Refresh() error { + return spt.RefreshWithContext(context.Background()) +} + +// RefreshWithContext obtains a fresh token for the Service Principal. +// This method is safe for concurrent use. +func (spt *ServicePrincipalToken) RefreshWithContext(ctx context.Context) error { + spt.refreshLock.Lock() + defer spt.refreshLock.Unlock() + return spt.refreshInternal(ctx, spt.inner.Resource) +} + +// RefreshExchange refreshes the token, but for a different resource. +// This method is safe for concurrent use. +func (spt *ServicePrincipalToken) RefreshExchange(resource string) error { + return spt.RefreshExchangeWithContext(context.Background(), resource) +} + +// RefreshExchangeWithContext refreshes the token, but for a different resource. +// This method is safe for concurrent use. +func (spt *ServicePrincipalToken) RefreshExchangeWithContext(ctx context.Context, resource string) error { + spt.refreshLock.Lock() + defer spt.refreshLock.Unlock() + return spt.refreshInternal(ctx, resource) +} + +func (spt *ServicePrincipalToken) getGrantType() string { + switch spt.inner.Secret.(type) { + case *ServicePrincipalUsernamePasswordSecret: + return OAuthGrantTypeUserPass + case *ServicePrincipalAuthorizationCodeSecret: + return OAuthGrantTypeAuthorizationCode + default: + return OAuthGrantTypeClientCredentials + } +} + +func isIMDS(u url.URL) bool { + imds, err := url.Parse(msiEndpoint) + if err != nil { + return false + } + return (u.Host == imds.Host && u.Path == imds.Path) || isAppService() +} + +func (spt *ServicePrincipalToken) refreshInternal(ctx context.Context, resource string) error { + if spt.customRefreshFunc != nil { + token, err := spt.customRefreshFunc(ctx, resource) + if err != nil { + return err + } + spt.inner.Token = *token + return spt.InvokeRefreshCallbacks(spt.inner.Token) + } + + req, err := http.NewRequest(http.MethodPost, spt.inner.OauthConfig.TokenEndpoint.String(), nil) + if err != nil { + return fmt.Errorf("adal: Failed to build the refresh request. Error = '%v'", err) + } + req.Header.Add("User-Agent", UserAgent()) + // Add header when runtime is on App Service or Functions + if isAppService() { + asMSISecret, _ := os.LookupEnv(asMSISecretEnv) + req.Header.Add("Secret", asMSISecret) + } + req = req.WithContext(ctx) + if !isIMDS(spt.inner.OauthConfig.TokenEndpoint) { + v := url.Values{} + v.Set("client_id", spt.inner.ClientID) + v.Set("resource", resource) + + if spt.inner.Token.RefreshToken != "" { + v.Set("grant_type", OAuthGrantTypeRefreshToken) + v.Set("refresh_token", spt.inner.Token.RefreshToken) + // web apps must specify client_secret when refreshing tokens + // see https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-code#refreshing-the-access-tokens + if spt.getGrantType() == OAuthGrantTypeAuthorizationCode { + err := spt.inner.Secret.SetAuthenticationValues(spt, &v) + if err != nil { + return err + } + } + } else { + v.Set("grant_type", spt.getGrantType()) + err := spt.inner.Secret.SetAuthenticationValues(spt, &v) + if err != nil { + return err + } + } + + s := v.Encode() + body := ioutil.NopCloser(strings.NewReader(s)) + req.ContentLength = int64(len(s)) + req.Header.Set(contentType, mimeTypeFormPost) + req.Body = body + } + + if _, ok := spt.inner.Secret.(*ServicePrincipalMSISecret); ok { + req.Method = http.MethodGet + req.Header.Set(metadataHeader, "true") + } + + var resp *http.Response + if isIMDS(spt.inner.OauthConfig.TokenEndpoint) { + resp, err = retryForIMDS(spt.sender, req, spt.MaxMSIRefreshAttempts) + } else { + resp, err = spt.sender.Do(req) + } + if err != nil { + // don't return a TokenRefreshError here; this will allow retry logic to apply + return fmt.Errorf("adal: Failed to execute the refresh request. Error = '%v'", err) + } + + defer resp.Body.Close() + rb, err := ioutil.ReadAll(resp.Body) + + if resp.StatusCode != http.StatusOK { + if err != nil { + return newTokenRefreshError(fmt.Sprintf("adal: Refresh request failed. Status Code = '%d'. Failed reading response body: %v", resp.StatusCode, err), resp) + } + return newTokenRefreshError(fmt.Sprintf("adal: Refresh request failed. Status Code = '%d'. Response body: %s", resp.StatusCode, string(rb)), resp) + } + + // for the following error cases don't return a TokenRefreshError. the operation succeeded + // but some transient failure happened during deserialization. by returning a generic error + // the retry logic will kick in (we don't retry on TokenRefreshError). + + if err != nil { + return fmt.Errorf("adal: Failed to read a new service principal token during refresh. Error = '%v'", err) + } + if len(strings.Trim(string(rb), " ")) == 0 { + return fmt.Errorf("adal: Empty service principal token received during refresh") + } + var token Token + err = json.Unmarshal(rb, &token) + if err != nil { + return fmt.Errorf("adal: Failed to unmarshal the service principal token during refresh. Error = '%v' JSON = '%s'", err, string(rb)) + } + + spt.inner.Token = token + + return spt.InvokeRefreshCallbacks(token) +} + +// retry logic specific to retrieving a token from the IMDS endpoint +func retryForIMDS(sender Sender, req *http.Request, maxAttempts int) (resp *http.Response, err error) { + // copied from client.go due to circular dependency + retries := []int{ + http.StatusRequestTimeout, // 408 + http.StatusTooManyRequests, // 429 + http.StatusInternalServerError, // 500 + http.StatusBadGateway, // 502 + http.StatusServiceUnavailable, // 503 + http.StatusGatewayTimeout, // 504 + } + // extra retry status codes specific to IMDS + retries = append(retries, + http.StatusNotFound, + http.StatusGone, + // all remaining 5xx + http.StatusNotImplemented, + http.StatusHTTPVersionNotSupported, + http.StatusVariantAlsoNegotiates, + http.StatusInsufficientStorage, + http.StatusLoopDetected, + http.StatusNotExtended, + http.StatusNetworkAuthenticationRequired) + + // see https://docs.microsoft.com/en-us/azure/active-directory/managed-service-identity/how-to-use-vm-token#retry-guidance + + const maxDelay time.Duration = 60 * time.Second + + attempt := 0 + delay := time.Duration(0) + + for attempt < maxAttempts { + if resp != nil && resp.Body != nil { + io.Copy(ioutil.Discard, resp.Body) + resp.Body.Close() + } + resp, err = sender.Do(req) + // we want to retry if err is not nil or the status code is in the list of retry codes + if err == nil && !responseHasStatusCode(resp, retries...) { + return + } + + // perform exponential backoff with a cap. + // must increment attempt before calculating delay. + attempt++ + // the base value of 2 is the "delta backoff" as specified in the guidance doc + delay += (time.Duration(math.Pow(2, float64(attempt))) * time.Second) + if delay > maxDelay { + delay = maxDelay + } + + select { + case <-time.After(delay): + // intentionally left blank + case <-req.Context().Done(): + err = req.Context().Err() + return + } + } + return +} + +func responseHasStatusCode(resp *http.Response, codes ...int) bool { + if resp != nil { + for _, i := range codes { + if i == resp.StatusCode { + return true + } + } + } + return false +} + +// SetAutoRefresh enables or disables automatic refreshing of stale tokens. +func (spt *ServicePrincipalToken) SetAutoRefresh(autoRefresh bool) { + spt.inner.AutoRefresh = autoRefresh +} + +// SetRefreshWithin sets the interval within which if the token will expire, EnsureFresh will +// refresh the token. +func (spt *ServicePrincipalToken) SetRefreshWithin(d time.Duration) { + spt.inner.RefreshWithin = d + return +} + +// SetSender sets the http.Client used when obtaining the Service Principal token. An +// undecorated http.Client is used by default. +func (spt *ServicePrincipalToken) SetSender(s Sender) { spt.sender = s } + +// OAuthToken implements the OAuthTokenProvider interface. It returns the current access token. +func (spt *ServicePrincipalToken) OAuthToken() string { + spt.refreshLock.RLock() + defer spt.refreshLock.RUnlock() + return spt.inner.Token.OAuthToken() +} + +// Token returns a copy of the current token. +func (spt *ServicePrincipalToken) Token() Token { + spt.refreshLock.RLock() + defer spt.refreshLock.RUnlock() + return spt.inner.Token +} + +// MultiTenantServicePrincipalToken contains tokens for multi-tenant authorization. +type MultiTenantServicePrincipalToken struct { + PrimaryToken *ServicePrincipalToken + AuxiliaryTokens []*ServicePrincipalToken +} + +// PrimaryOAuthToken returns the primary authorization token. +func (mt *MultiTenantServicePrincipalToken) PrimaryOAuthToken() string { + return mt.PrimaryToken.OAuthToken() +} + +// AuxiliaryOAuthTokens returns one to three auxiliary authorization tokens. +func (mt *MultiTenantServicePrincipalToken) AuxiliaryOAuthTokens() []string { + tokens := make([]string, len(mt.AuxiliaryTokens)) + for i := range mt.AuxiliaryTokens { + tokens[i] = mt.AuxiliaryTokens[i].OAuthToken() + } + return tokens +} + +// EnsureFreshWithContext will refresh the token if it will expire within the refresh window (as set by +// RefreshWithin) and autoRefresh flag is on. This method is safe for concurrent use. +func (mt *MultiTenantServicePrincipalToken) EnsureFreshWithContext(ctx context.Context) error { + if err := mt.PrimaryToken.EnsureFreshWithContext(ctx); err != nil { + return fmt.Errorf("failed to refresh primary token: %v", err) + } + for _, aux := range mt.AuxiliaryTokens { + if err := aux.EnsureFreshWithContext(ctx); err != nil { + return fmt.Errorf("failed to refresh auxiliary token: %v", err) + } + } + return nil +} + +// RefreshWithContext obtains a fresh token for the Service Principal. +func (mt *MultiTenantServicePrincipalToken) RefreshWithContext(ctx context.Context) error { + if err := mt.PrimaryToken.RefreshWithContext(ctx); err != nil { + return fmt.Errorf("failed to refresh primary token: %v", err) + } + for _, aux := range mt.AuxiliaryTokens { + if err := aux.RefreshWithContext(ctx); err != nil { + return fmt.Errorf("failed to refresh auxiliary token: %v", err) + } + } + return nil +} + +// RefreshExchangeWithContext refreshes the token, but for a different resource. +func (mt *MultiTenantServicePrincipalToken) RefreshExchangeWithContext(ctx context.Context, resource string) error { + if err := mt.PrimaryToken.RefreshExchangeWithContext(ctx, resource); err != nil { + return fmt.Errorf("failed to refresh primary token: %v", err) + } + for _, aux := range mt.AuxiliaryTokens { + if err := aux.RefreshExchangeWithContext(ctx, resource); err != nil { + return fmt.Errorf("failed to refresh auxiliary token: %v", err) + } + } + return nil +} + +// NewMultiTenantServicePrincipalToken creates a new MultiTenantServicePrincipalToken with the specified credentials and resource. +func NewMultiTenantServicePrincipalToken(multiTenantCfg MultiTenantOAuthConfig, clientID string, secret string, resource string) (*MultiTenantServicePrincipalToken, error) { + if err := validateStringParam(clientID, "clientID"); err != nil { + return nil, err + } + if err := validateStringParam(secret, "secret"); err != nil { + return nil, err + } + if err := validateStringParam(resource, "resource"); err != nil { + return nil, err + } + auxTenants := multiTenantCfg.AuxiliaryTenants() + m := MultiTenantServicePrincipalToken{ + AuxiliaryTokens: make([]*ServicePrincipalToken, len(auxTenants)), + } + primary, err := NewServicePrincipalToken(*multiTenantCfg.PrimaryTenant(), clientID, secret, resource) + if err != nil { + return nil, fmt.Errorf("failed to create SPT for primary tenant: %v", err) + } + m.PrimaryToken = primary + for i := range auxTenants { + aux, err := NewServicePrincipalToken(*auxTenants[i], clientID, secret, resource) + if err != nil { + return nil, fmt.Errorf("failed to create SPT for auxiliary tenant: %v", err) + } + m.AuxiliaryTokens[i] = aux + } + return &m, nil +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/adal/version.go b/vendor/github.com/Azure/go-autorest/autorest/adal/version.go new file mode 100644 index 0000000..c867b34 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/adal/version.go @@ -0,0 +1,45 @@ +package adal + +import ( + "fmt" + "runtime" +) + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +const number = "v1.0.0" + +var ( + ua = fmt.Sprintf("Go/%s (%s-%s) go-autorest/adal/%s", + runtime.Version(), + runtime.GOARCH, + runtime.GOOS, + number, + ) +) + +// UserAgent returns a string containing the Go version, system architecture and OS, and the adal version. +func UserAgent() string { + return ua +} + +// AddToUserAgent adds an extension to the current user agent +func AddToUserAgent(extension string) error { + if extension != "" { + ua = fmt.Sprintf("%s %s", ua, extension) + return nil + } + return fmt.Errorf("Extension was empty, User Agent remained as '%s'", ua) +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/authorization.go b/vendor/github.com/Azure/go-autorest/autorest/authorization.go new file mode 100644 index 0000000..f43e1a6 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/authorization.go @@ -0,0 +1,337 @@ +package autorest + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "crypto/tls" + "encoding/base64" + "fmt" + "net/http" + "net/url" + "strings" + + "github.com/Azure/go-autorest/autorest/adal" +) + +const ( + bearerChallengeHeader = "Www-Authenticate" + bearer = "Bearer" + tenantID = "tenantID" + apiKeyAuthorizerHeader = "Ocp-Apim-Subscription-Key" + bingAPISdkHeader = "X-BingApis-SDK-Client" + golangBingAPISdkHeaderValue = "Go-SDK" + authorization = "Authorization" + basic = "Basic" +) + +// Authorizer is the interface that provides a PrepareDecorator used to supply request +// authorization. Most often, the Authorizer decorator runs last so it has access to the full +// state of the formed HTTP request. +type Authorizer interface { + WithAuthorization() PrepareDecorator +} + +// NullAuthorizer implements a default, "do nothing" Authorizer. +type NullAuthorizer struct{} + +// WithAuthorization returns a PrepareDecorator that does nothing. +func (na NullAuthorizer) WithAuthorization() PrepareDecorator { + return WithNothing() +} + +// APIKeyAuthorizer implements API Key authorization. +type APIKeyAuthorizer struct { + headers map[string]interface{} + queryParameters map[string]interface{} +} + +// NewAPIKeyAuthorizerWithHeaders creates an ApiKeyAuthorizer with headers. +func NewAPIKeyAuthorizerWithHeaders(headers map[string]interface{}) *APIKeyAuthorizer { + return NewAPIKeyAuthorizer(headers, nil) +} + +// NewAPIKeyAuthorizerWithQueryParameters creates an ApiKeyAuthorizer with query parameters. +func NewAPIKeyAuthorizerWithQueryParameters(queryParameters map[string]interface{}) *APIKeyAuthorizer { + return NewAPIKeyAuthorizer(nil, queryParameters) +} + +// NewAPIKeyAuthorizer creates an ApiKeyAuthorizer with headers. +func NewAPIKeyAuthorizer(headers map[string]interface{}, queryParameters map[string]interface{}) *APIKeyAuthorizer { + return &APIKeyAuthorizer{headers: headers, queryParameters: queryParameters} +} + +// WithAuthorization returns a PrepareDecorator that adds an HTTP headers and Query Parameters. +func (aka *APIKeyAuthorizer) WithAuthorization() PrepareDecorator { + return func(p Preparer) Preparer { + return DecoratePreparer(p, WithHeaders(aka.headers), WithQueryParameters(aka.queryParameters)) + } +} + +// CognitiveServicesAuthorizer implements authorization for Cognitive Services. +type CognitiveServicesAuthorizer struct { + subscriptionKey string +} + +// NewCognitiveServicesAuthorizer is +func NewCognitiveServicesAuthorizer(subscriptionKey string) *CognitiveServicesAuthorizer { + return &CognitiveServicesAuthorizer{subscriptionKey: subscriptionKey} +} + +// WithAuthorization is +func (csa *CognitiveServicesAuthorizer) WithAuthorization() PrepareDecorator { + headers := make(map[string]interface{}) + headers[apiKeyAuthorizerHeader] = csa.subscriptionKey + headers[bingAPISdkHeader] = golangBingAPISdkHeaderValue + + return NewAPIKeyAuthorizerWithHeaders(headers).WithAuthorization() +} + +// BearerAuthorizer implements the bearer authorization +type BearerAuthorizer struct { + tokenProvider adal.OAuthTokenProvider +} + +// NewBearerAuthorizer crates a BearerAuthorizer using the given token provider +func NewBearerAuthorizer(tp adal.OAuthTokenProvider) *BearerAuthorizer { + return &BearerAuthorizer{tokenProvider: tp} +} + +// WithAuthorization returns a PrepareDecorator that adds an HTTP Authorization header whose +// value is "Bearer " followed by the token. +// +// By default, the token will be automatically refreshed through the Refresher interface. +func (ba *BearerAuthorizer) WithAuthorization() PrepareDecorator { + return func(p Preparer) Preparer { + return PreparerFunc(func(r *http.Request) (*http.Request, error) { + r, err := p.Prepare(r) + if err == nil { + // the ordering is important here, prefer RefresherWithContext if available + if refresher, ok := ba.tokenProvider.(adal.RefresherWithContext); ok { + err = refresher.EnsureFreshWithContext(r.Context()) + } else if refresher, ok := ba.tokenProvider.(adal.Refresher); ok { + err = refresher.EnsureFresh() + } + if err != nil { + var resp *http.Response + if tokError, ok := err.(adal.TokenRefreshError); ok { + resp = tokError.Response() + } + return r, NewErrorWithError(err, "azure.BearerAuthorizer", "WithAuthorization", resp, + "Failed to refresh the Token for request to %s", r.URL) + } + return Prepare(r, WithHeader(headerAuthorization, fmt.Sprintf("Bearer %s", ba.tokenProvider.OAuthToken()))) + } + return r, err + }) + } +} + +// BearerAuthorizerCallbackFunc is the authentication callback signature. +type BearerAuthorizerCallbackFunc func(tenantID, resource string) (*BearerAuthorizer, error) + +// BearerAuthorizerCallback implements bearer authorization via a callback. +type BearerAuthorizerCallback struct { + sender Sender + callback BearerAuthorizerCallbackFunc +} + +// NewBearerAuthorizerCallback creates a bearer authorization callback. The callback +// is invoked when the HTTP request is submitted. +func NewBearerAuthorizerCallback(s Sender, callback BearerAuthorizerCallbackFunc) *BearerAuthorizerCallback { + if s == nil { + s = sender(tls.RenegotiateNever) + } + return &BearerAuthorizerCallback{sender: s, callback: callback} +} + +// WithAuthorization returns a PrepareDecorator that adds an HTTP Authorization header whose value +// is "Bearer " followed by the token. The BearerAuthorizer is obtained via a user-supplied callback. +// +// By default, the token will be automatically refreshed through the Refresher interface. +func (bacb *BearerAuthorizerCallback) WithAuthorization() PrepareDecorator { + return func(p Preparer) Preparer { + return PreparerFunc(func(r *http.Request) (*http.Request, error) { + r, err := p.Prepare(r) + if err == nil { + // make a copy of the request and remove the body as it's not + // required and avoids us having to create a copy of it. + rCopy := *r + removeRequestBody(&rCopy) + + resp, err := bacb.sender.Do(&rCopy) + if err != nil { + return r, err + } + DrainResponseBody(resp) + if resp.StatusCode == 401 && hasBearerChallenge(resp.Header) { + bc, err := newBearerChallenge(resp.Header) + if err != nil { + return r, err + } + if bacb.callback != nil { + ba, err := bacb.callback(bc.values[tenantID], bc.values["resource"]) + if err != nil { + return r, err + } + return Prepare(r, ba.WithAuthorization()) + } + } + } + return r, err + }) + } +} + +// returns true if the HTTP response contains a bearer challenge +func hasBearerChallenge(header http.Header) bool { + authHeader := header.Get(bearerChallengeHeader) + if len(authHeader) == 0 || strings.Index(authHeader, bearer) < 0 { + return false + } + return true +} + +type bearerChallenge struct { + values map[string]string +} + +func newBearerChallenge(header http.Header) (bc bearerChallenge, err error) { + challenge := strings.TrimSpace(header.Get(bearerChallengeHeader)) + trimmedChallenge := challenge[len(bearer)+1:] + + // challenge is a set of key=value pairs that are comma delimited + pairs := strings.Split(trimmedChallenge, ",") + if len(pairs) < 1 { + err = fmt.Errorf("challenge '%s' contains no pairs", challenge) + return bc, err + } + + bc.values = make(map[string]string) + for i := range pairs { + trimmedPair := strings.TrimSpace(pairs[i]) + pair := strings.Split(trimmedPair, "=") + if len(pair) == 2 { + // remove the enclosing quotes + key := strings.Trim(pair[0], "\"") + value := strings.Trim(pair[1], "\"") + + switch key { + case "authorization", "authorization_uri": + // strip the tenant ID from the authorization URL + asURL, err := url.Parse(value) + if err != nil { + return bc, err + } + bc.values[tenantID] = asURL.Path[1:] + default: + bc.values[key] = value + } + } + } + + return bc, err +} + +// EventGridKeyAuthorizer implements authorization for event grid using key authentication. +type EventGridKeyAuthorizer struct { + topicKey string +} + +// NewEventGridKeyAuthorizer creates a new EventGridKeyAuthorizer +// with the specified topic key. +func NewEventGridKeyAuthorizer(topicKey string) EventGridKeyAuthorizer { + return EventGridKeyAuthorizer{topicKey: topicKey} +} + +// WithAuthorization returns a PrepareDecorator that adds the aeg-sas-key authentication header. +func (egta EventGridKeyAuthorizer) WithAuthorization() PrepareDecorator { + headers := map[string]interface{}{ + "aeg-sas-key": egta.topicKey, + } + return NewAPIKeyAuthorizerWithHeaders(headers).WithAuthorization() +} + +// BasicAuthorizer implements basic HTTP authorization by adding the Authorization HTTP header +// with the value "Basic " where is a base64-encoded username:password tuple. +type BasicAuthorizer struct { + userName string + password string +} + +// NewBasicAuthorizer creates a new BasicAuthorizer with the specified username and password. +func NewBasicAuthorizer(userName, password string) *BasicAuthorizer { + return &BasicAuthorizer{ + userName: userName, + password: password, + } +} + +// WithAuthorization returns a PrepareDecorator that adds an HTTP Authorization header whose +// value is "Basic " followed by the base64-encoded username:password tuple. +func (ba *BasicAuthorizer) WithAuthorization() PrepareDecorator { + headers := make(map[string]interface{}) + headers[authorization] = basic + " " + base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf("%s:%s", ba.userName, ba.password))) + + return NewAPIKeyAuthorizerWithHeaders(headers).WithAuthorization() +} + +// MultiTenantServicePrincipalTokenAuthorizer provides authentication across tenants. +type MultiTenantServicePrincipalTokenAuthorizer interface { + WithAuthorization() PrepareDecorator +} + +// NewMultiTenantServicePrincipalTokenAuthorizer crates a BearerAuthorizer using the given token provider +func NewMultiTenantServicePrincipalTokenAuthorizer(tp adal.MultitenantOAuthTokenProvider) MultiTenantServicePrincipalTokenAuthorizer { + return &multiTenantSPTAuthorizer{tp: tp} +} + +type multiTenantSPTAuthorizer struct { + tp adal.MultitenantOAuthTokenProvider +} + +// WithAuthorization returns a PrepareDecorator that adds an HTTP Authorization header using the +// primary token along with the auxiliary authorization header using the auxiliary tokens. +// +// By default, the token will be automatically refreshed through the Refresher interface. +func (mt multiTenantSPTAuthorizer) WithAuthorization() PrepareDecorator { + return func(p Preparer) Preparer { + return PreparerFunc(func(r *http.Request) (*http.Request, error) { + r, err := p.Prepare(r) + if err != nil { + return r, err + } + if refresher, ok := mt.tp.(adal.RefresherWithContext); ok { + err = refresher.EnsureFreshWithContext(r.Context()) + if err != nil { + var resp *http.Response + if tokError, ok := err.(adal.TokenRefreshError); ok { + resp = tokError.Response() + } + return r, NewErrorWithError(err, "azure.multiTenantSPTAuthorizer", "WithAuthorization", resp, + "Failed to refresh one or more Tokens for request to %s", r.URL) + } + } + r, err = Prepare(r, WithHeader(headerAuthorization, fmt.Sprintf("Bearer %s", mt.tp.PrimaryOAuthToken()))) + if err != nil { + return r, err + } + auxTokens := mt.tp.AuxiliaryOAuthTokens() + for i := range auxTokens { + auxTokens[i] = fmt.Sprintf("Bearer %s", auxTokens[i]) + } + return Prepare(r, WithHeader(headerAuxAuthorization, strings.Join(auxTokens, "; "))) + }) + } +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/authorization_sas.go b/vendor/github.com/Azure/go-autorest/autorest/authorization_sas.go new file mode 100644 index 0000000..89a659c --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/authorization_sas.go @@ -0,0 +1,67 @@ +package autorest + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "fmt" + "net/http" + "strings" +) + +// SASTokenAuthorizer implements an authorization for SAS Token Authentication +// this can be used for interaction with Blob Storage Endpoints +type SASTokenAuthorizer struct { + sasToken string +} + +// NewSASTokenAuthorizer creates a SASTokenAuthorizer using the given credentials +func NewSASTokenAuthorizer(sasToken string) (*SASTokenAuthorizer, error) { + if strings.TrimSpace(sasToken) == "" { + return nil, fmt.Errorf("sasToken cannot be empty") + } + + token := sasToken + if strings.HasPrefix(sasToken, "?") { + token = strings.TrimPrefix(sasToken, "?") + } + + return &SASTokenAuthorizer{ + sasToken: token, + }, nil +} + +// WithAuthorization returns a PrepareDecorator that adds a shared access signature token to the +// URI's query parameters. This can be used for the Blob, Queue, and File Services. +// +// See https://docs.microsoft.com/en-us/rest/api/storageservices/delegate-access-with-shared-access-signature +func (sas *SASTokenAuthorizer) WithAuthorization() PrepareDecorator { + return func(p Preparer) Preparer { + return PreparerFunc(func(r *http.Request) (*http.Request, error) { + r, err := p.Prepare(r) + if err != nil { + return r, err + } + + if r.URL.RawQuery != "" { + r.URL.RawQuery = fmt.Sprintf("%s&%s", r.URL.RawQuery, sas.sasToken) + } else { + r.URL.RawQuery = sas.sasToken + } + + r.RequestURI = r.URL.String() + return Prepare(r) + }) + } +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/authorization_storage.go b/vendor/github.com/Azure/go-autorest/autorest/authorization_storage.go new file mode 100644 index 0000000..b844a3d --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/authorization_storage.go @@ -0,0 +1,304 @@ +package autorest + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "bytes" + "crypto/hmac" + "crypto/sha256" + "encoding/base64" + "fmt" + "net/http" + "net/url" + "sort" + "strings" + "time" +) + +// SharedKeyType defines the enumeration for the various shared key types. +// See https://docs.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key for details on the shared key types. +type SharedKeyType string + +const ( + // SharedKey is used to authorize against blobs, files and queues services. + SharedKey SharedKeyType = "sharedKey" + + // SharedKeyForTable is used to authorize against the table service. + SharedKeyForTable SharedKeyType = "sharedKeyTable" + + // SharedKeyLite is used to authorize against blobs, files and queues services. It's provided for + // backwards compatibility with API versions before 2009-09-19. Prefer SharedKey instead. + SharedKeyLite SharedKeyType = "sharedKeyLite" + + // SharedKeyLiteForTable is used to authorize against the table service. It's provided for + // backwards compatibility with older table API versions. Prefer SharedKeyForTable instead. + SharedKeyLiteForTable SharedKeyType = "sharedKeyLiteTable" +) + +const ( + headerAccept = "Accept" + headerAcceptCharset = "Accept-Charset" + headerContentEncoding = "Content-Encoding" + headerContentLength = "Content-Length" + headerContentMD5 = "Content-MD5" + headerContentLanguage = "Content-Language" + headerIfModifiedSince = "If-Modified-Since" + headerIfMatch = "If-Match" + headerIfNoneMatch = "If-None-Match" + headerIfUnmodifiedSince = "If-Unmodified-Since" + headerDate = "Date" + headerXMSDate = "X-Ms-Date" + headerXMSVersion = "x-ms-version" + headerRange = "Range" +) + +const storageEmulatorAccountName = "devstoreaccount1" + +// SharedKeyAuthorizer implements an authorization for Shared Key +// this can be used for interaction with Blob, File and Queue Storage Endpoints +type SharedKeyAuthorizer struct { + accountName string + accountKey []byte + keyType SharedKeyType +} + +// NewSharedKeyAuthorizer creates a SharedKeyAuthorizer using the provided credentials and shared key type. +func NewSharedKeyAuthorizer(accountName, accountKey string, keyType SharedKeyType) (*SharedKeyAuthorizer, error) { + key, err := base64.StdEncoding.DecodeString(accountKey) + if err != nil { + return nil, fmt.Errorf("malformed storage account key: %v", err) + } + return &SharedKeyAuthorizer{ + accountName: accountName, + accountKey: key, + keyType: keyType, + }, nil +} + +// WithAuthorization returns a PrepareDecorator that adds an HTTP Authorization header whose +// value is " " followed by the computed key. +// This can be used for the Blob, Queue, and File Services +// +// from: https://docs.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key +// You may use Shared Key authorization to authorize a request made against the +// 2009-09-19 version and later of the Blob and Queue services, +// and version 2014-02-14 and later of the File services. +func (sk *SharedKeyAuthorizer) WithAuthorization() PrepareDecorator { + return func(p Preparer) Preparer { + return PreparerFunc(func(r *http.Request) (*http.Request, error) { + r, err := p.Prepare(r) + if err != nil { + return r, err + } + + sk, err := buildSharedKey(sk.accountName, sk.accountKey, r, sk.keyType) + if err != nil { + return r, err + } + return Prepare(r, WithHeader(headerAuthorization, sk)) + }) + } +} + +func buildSharedKey(accName string, accKey []byte, req *http.Request, keyType SharedKeyType) (string, error) { + canRes, err := buildCanonicalizedResource(accName, req.URL.String(), keyType) + if err != nil { + return "", err + } + + if req.Header == nil { + req.Header = http.Header{} + } + + // ensure date is set + if req.Header.Get(headerDate) == "" && req.Header.Get(headerXMSDate) == "" { + date := time.Now().UTC().Format(http.TimeFormat) + req.Header.Set(headerXMSDate, date) + } + canString, err := buildCanonicalizedString(req.Method, req.Header, canRes, keyType) + if err != nil { + return "", err + } + return createAuthorizationHeader(accName, accKey, canString, keyType), nil +} + +func buildCanonicalizedResource(accountName, uri string, keyType SharedKeyType) (string, error) { + errMsg := "buildCanonicalizedResource error: %s" + u, err := url.Parse(uri) + if err != nil { + return "", fmt.Errorf(errMsg, err.Error()) + } + + cr := bytes.NewBufferString("") + if accountName != storageEmulatorAccountName { + cr.WriteString("/") + cr.WriteString(getCanonicalizedAccountName(accountName)) + } + + if len(u.Path) > 0 { + // Any portion of the CanonicalizedResource string that is derived from + // the resource's URI should be encoded exactly as it is in the URI. + // -- https://msdn.microsoft.com/en-gb/library/azure/dd179428.aspx + cr.WriteString(u.EscapedPath()) + } + + params, err := url.ParseQuery(u.RawQuery) + if err != nil { + return "", fmt.Errorf(errMsg, err.Error()) + } + + // See https://github.com/Azure/azure-storage-net/blob/master/Lib/Common/Core/Util/AuthenticationUtility.cs#L277 + if keyType == SharedKey { + if len(params) > 0 { + cr.WriteString("\n") + + keys := []string{} + for key := range params { + keys = append(keys, key) + } + sort.Strings(keys) + + completeParams := []string{} + for _, key := range keys { + if len(params[key]) > 1 { + sort.Strings(params[key]) + } + + completeParams = append(completeParams, fmt.Sprintf("%s:%s", key, strings.Join(params[key], ","))) + } + cr.WriteString(strings.Join(completeParams, "\n")) + } + } else { + // search for "comp" parameter, if exists then add it to canonicalizedresource + if v, ok := params["comp"]; ok { + cr.WriteString("?comp=" + v[0]) + } + } + + return string(cr.Bytes()), nil +} + +func getCanonicalizedAccountName(accountName string) string { + // since we may be trying to access a secondary storage account, we need to + // remove the -secondary part of the storage name + return strings.TrimSuffix(accountName, "-secondary") +} + +func buildCanonicalizedString(verb string, headers http.Header, canonicalizedResource string, keyType SharedKeyType) (string, error) { + contentLength := headers.Get(headerContentLength) + if contentLength == "0" { + contentLength = "" + } + date := headers.Get(headerDate) + if v := headers.Get(headerXMSDate); v != "" { + if keyType == SharedKey || keyType == SharedKeyLite { + date = "" + } else { + date = v + } + } + var canString string + switch keyType { + case SharedKey: + canString = strings.Join([]string{ + verb, + headers.Get(headerContentEncoding), + headers.Get(headerContentLanguage), + contentLength, + headers.Get(headerContentMD5), + headers.Get(headerContentType), + date, + headers.Get(headerIfModifiedSince), + headers.Get(headerIfMatch), + headers.Get(headerIfNoneMatch), + headers.Get(headerIfUnmodifiedSince), + headers.Get(headerRange), + buildCanonicalizedHeader(headers), + canonicalizedResource, + }, "\n") + case SharedKeyForTable: + canString = strings.Join([]string{ + verb, + headers.Get(headerContentMD5), + headers.Get(headerContentType), + date, + canonicalizedResource, + }, "\n") + case SharedKeyLite: + canString = strings.Join([]string{ + verb, + headers.Get(headerContentMD5), + headers.Get(headerContentType), + date, + buildCanonicalizedHeader(headers), + canonicalizedResource, + }, "\n") + case SharedKeyLiteForTable: + canString = strings.Join([]string{ + date, + canonicalizedResource, + }, "\n") + default: + return "", fmt.Errorf("key type '%s' is not supported", keyType) + } + return canString, nil +} + +func buildCanonicalizedHeader(headers http.Header) string { + cm := make(map[string]string) + + for k := range headers { + headerName := strings.TrimSpace(strings.ToLower(k)) + if strings.HasPrefix(headerName, "x-ms-") { + cm[headerName] = headers.Get(k) + } + } + + if len(cm) == 0 { + return "" + } + + keys := []string{} + for key := range cm { + keys = append(keys, key) + } + + sort.Strings(keys) + + ch := bytes.NewBufferString("") + + for _, key := range keys { + ch.WriteString(key) + ch.WriteRune(':') + ch.WriteString(cm[key]) + ch.WriteRune('\n') + } + + return strings.TrimSuffix(string(ch.Bytes()), "\n") +} + +func createAuthorizationHeader(accountName string, accountKey []byte, canonicalizedString string, keyType SharedKeyType) string { + h := hmac.New(sha256.New, accountKey) + h.Write([]byte(canonicalizedString)) + signature := base64.StdEncoding.EncodeToString(h.Sum(nil)) + var key string + switch keyType { + case SharedKey, SharedKeyForTable: + key = "SharedKey" + case SharedKeyLite, SharedKeyLiteForTable: + key = "SharedKeyLite" + } + return fmt.Sprintf("%s %s:%s", key, getCanonicalizedAccountName(accountName), signature) +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/autorest.go b/vendor/github.com/Azure/go-autorest/autorest/autorest.go new file mode 100644 index 0000000..aafdf02 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/autorest.go @@ -0,0 +1,150 @@ +/* +Package autorest implements an HTTP request pipeline suitable for use across multiple go-routines +and provides the shared routines relied on by AutoRest (see https://github.com/Azure/autorest/) +generated Go code. + +The package breaks sending and responding to HTTP requests into three phases: Preparing, Sending, +and Responding. A typical pattern is: + + req, err := Prepare(&http.Request{}, + token.WithAuthorization()) + + resp, err := Send(req, + WithLogging(logger), + DoErrorIfStatusCode(http.StatusInternalServerError), + DoCloseIfError(), + DoRetryForAttempts(5, time.Second)) + + err = Respond(resp, + ByDiscardingBody(), + ByClosing()) + +Each phase relies on decorators to modify and / or manage processing. Decorators may first modify +and then pass the data along, pass the data first and then modify the result, or wrap themselves +around passing the data (such as a logger might do). Decorators run in the order provided. For +example, the following: + + req, err := Prepare(&http.Request{}, + WithBaseURL("https://microsoft.com/"), + WithPath("a"), + WithPath("b"), + WithPath("c")) + +will set the URL to: + + https://microsoft.com/a/b/c + +Preparers and Responders may be shared and re-used (assuming the underlying decorators support +sharing and re-use). Performant use is obtained by creating one or more Preparers and Responders +shared among multiple go-routines, and a single Sender shared among multiple sending go-routines, +all bound together by means of input / output channels. + +Decorators hold their passed state within a closure (such as the path components in the example +above). Be careful to share Preparers and Responders only in a context where such held state +applies. For example, it may not make sense to share a Preparer that applies a query string from a +fixed set of values. Similarly, sharing a Responder that reads the response body into a passed +struct (e.g., ByUnmarshallingJson) is likely incorrect. + +Lastly, the Swagger specification (https://swagger.io) that drives AutoRest +(https://github.com/Azure/autorest/) precisely defines two date forms: date and date-time. The +github.com/Azure/go-autorest/autorest/date package provides time.Time derivations to ensure +correct parsing and formatting. + +Errors raised by autorest objects and methods will conform to the autorest.Error interface. + +See the included examples for more detail. For details on the suggested use of this package by +generated clients, see the Client described below. +*/ +package autorest + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "context" + "net/http" + "time" +) + +const ( + // HeaderLocation specifies the HTTP Location header. + HeaderLocation = "Location" + + // HeaderRetryAfter specifies the HTTP Retry-After header. + HeaderRetryAfter = "Retry-After" +) + +// ResponseHasStatusCode returns true if the status code in the HTTP Response is in the passed set +// and false otherwise. +func ResponseHasStatusCode(resp *http.Response, codes ...int) bool { + if resp == nil { + return false + } + return containsInt(codes, resp.StatusCode) +} + +// GetLocation retrieves the URL from the Location header of the passed response. +func GetLocation(resp *http.Response) string { + return resp.Header.Get(HeaderLocation) +} + +// GetRetryAfter extracts the retry delay from the Retry-After header of the passed response. If +// the header is absent or is malformed, it will return the supplied default delay time.Duration. +func GetRetryAfter(resp *http.Response, defaultDelay time.Duration) time.Duration { + retry := resp.Header.Get(HeaderRetryAfter) + if retry == "" { + return defaultDelay + } + + d, err := time.ParseDuration(retry + "s") + if err != nil { + return defaultDelay + } + + return d +} + +// NewPollingRequest allocates and returns a new http.Request to poll for the passed response. +func NewPollingRequest(resp *http.Response, cancel <-chan struct{}) (*http.Request, error) { + location := GetLocation(resp) + if location == "" { + return nil, NewErrorWithResponse("autorest", "NewPollingRequest", resp, "Location header missing from response that requires polling") + } + + req, err := Prepare(&http.Request{Cancel: cancel}, + AsGet(), + WithBaseURL(location)) + if err != nil { + return nil, NewErrorWithError(err, "autorest", "NewPollingRequest", nil, "Failure creating poll request to %s", location) + } + + return req, nil +} + +// NewPollingRequestWithContext allocates and returns a new http.Request with the specified context to poll for the passed response. +func NewPollingRequestWithContext(ctx context.Context, resp *http.Response) (*http.Request, error) { + location := GetLocation(resp) + if location == "" { + return nil, NewErrorWithResponse("autorest", "NewPollingRequestWithContext", resp, "Location header missing from response that requires polling") + } + + req, err := Prepare((&http.Request{}).WithContext(ctx), + AsGet(), + WithBaseURL(location)) + if err != nil { + return nil, NewErrorWithError(err, "autorest", "NewPollingRequestWithContext", nil, "Failure creating poll request to %s", location) + } + + return req, nil +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/azure/async.go b/vendor/github.com/Azure/go-autorest/autorest/azure/async.go new file mode 100644 index 0000000..c5fc511 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/azure/async.go @@ -0,0 +1,934 @@ +package azure + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "io/ioutil" + "net/http" + "net/url" + "strings" + "time" + + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/tracing" +) + +const ( + headerAsyncOperation = "Azure-AsyncOperation" +) + +const ( + operationInProgress string = "InProgress" + operationCanceled string = "Canceled" + operationFailed string = "Failed" + operationSucceeded string = "Succeeded" +) + +var pollingCodes = [...]int{http.StatusNoContent, http.StatusAccepted, http.StatusCreated, http.StatusOK} + +// Future provides a mechanism to access the status and results of an asynchronous request. +// Since futures are stateful they should be passed by value to avoid race conditions. +type Future struct { + pt pollingTracker +} + +// NewFutureFromResponse returns a new Future object initialized +// with the initial response from an asynchronous operation. +func NewFutureFromResponse(resp *http.Response) (Future, error) { + pt, err := createPollingTracker(resp) + return Future{pt: pt}, err +} + +// Response returns the last HTTP response. +func (f Future) Response() *http.Response { + if f.pt == nil { + return nil + } + return f.pt.latestResponse() +} + +// Status returns the last status message of the operation. +func (f Future) Status() string { + if f.pt == nil { + return "" + } + return f.pt.pollingStatus() +} + +// PollingMethod returns the method used to monitor the status of the asynchronous operation. +func (f Future) PollingMethod() PollingMethodType { + if f.pt == nil { + return PollingUnknown + } + return f.pt.pollingMethod() +} + +// DoneWithContext queries the service to see if the operation has completed. +func (f *Future) DoneWithContext(ctx context.Context, sender autorest.Sender) (done bool, err error) { + ctx = tracing.StartSpan(ctx, "github.com/Azure/go-autorest/autorest/azure/async.DoneWithContext") + defer func() { + sc := -1 + resp := f.Response() + if resp != nil { + sc = resp.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + + if f.pt == nil { + return false, autorest.NewError("Future", "Done", "future is not initialized") + } + if f.pt.hasTerminated() { + return true, f.pt.pollingError() + } + if err := f.pt.pollForStatus(ctx, sender); err != nil { + return false, err + } + if err := f.pt.checkForErrors(); err != nil { + return f.pt.hasTerminated(), err + } + if err := f.pt.updatePollingState(f.pt.provisioningStateApplicable()); err != nil { + return false, err + } + if err := f.pt.initPollingMethod(); err != nil { + return false, err + } + if err := f.pt.updatePollingMethod(); err != nil { + return false, err + } + return f.pt.hasTerminated(), f.pt.pollingError() +} + +// GetPollingDelay returns a duration the application should wait before checking +// the status of the asynchronous request and true; this value is returned from +// the service via the Retry-After response header. If the header wasn't returned +// then the function returns the zero-value time.Duration and false. +func (f Future) GetPollingDelay() (time.Duration, bool) { + if f.pt == nil { + return 0, false + } + resp := f.pt.latestResponse() + if resp == nil { + return 0, false + } + + retry := resp.Header.Get(autorest.HeaderRetryAfter) + if retry == "" { + return 0, false + } + + d, err := time.ParseDuration(retry + "s") + if err != nil { + panic(err) + } + + return d, true +} + +// WaitForCompletionRef will return when one of the following conditions is met: the long +// running operation has completed, the provided context is cancelled, or the client's +// polling duration has been exceeded. It will retry failed polling attempts based on +// the retry value defined in the client up to the maximum retry attempts. +// If no deadline is specified in the context then the client.PollingDuration will be +// used to determine if a default deadline should be used. +// If PollingDuration is greater than zero the value will be used as the context's timeout. +// If PollingDuration is zero then no default deadline will be used. +func (f *Future) WaitForCompletionRef(ctx context.Context, client autorest.Client) (err error) { + ctx = tracing.StartSpan(ctx, "github.com/Azure/go-autorest/autorest/azure/async.WaitForCompletionRef") + defer func() { + sc := -1 + resp := f.Response() + if resp != nil { + sc = resp.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + cancelCtx := ctx + // if the provided context already has a deadline don't override it + _, hasDeadline := ctx.Deadline() + if d := client.PollingDuration; !hasDeadline && d != 0 { + var cancel context.CancelFunc + cancelCtx, cancel = context.WithTimeout(ctx, d) + defer cancel() + } + + done, err := f.DoneWithContext(ctx, client) + for attempts := 0; !done; done, err = f.DoneWithContext(ctx, client) { + if attempts >= client.RetryAttempts { + return autorest.NewErrorWithError(err, "Future", "WaitForCompletion", f.pt.latestResponse(), "the number of retries has been exceeded") + } + // we want delayAttempt to be zero in the non-error case so + // that DelayForBackoff doesn't perform exponential back-off + var delayAttempt int + var delay time.Duration + if err == nil { + // check for Retry-After delay, if not present use the client's polling delay + var ok bool + delay, ok = f.GetPollingDelay() + if !ok { + delay = client.PollingDelay + } + } else { + // there was an error polling for status so perform exponential + // back-off based on the number of attempts using the client's retry + // duration. update attempts after delayAttempt to avoid off-by-one. + delayAttempt = attempts + delay = client.RetryDuration + attempts++ + } + // wait until the delay elapses or the context is cancelled + delayElapsed := autorest.DelayForBackoff(delay, delayAttempt, cancelCtx.Done()) + if !delayElapsed { + return autorest.NewErrorWithError(cancelCtx.Err(), "Future", "WaitForCompletion", f.pt.latestResponse(), "context has been cancelled") + } + } + return +} + +// MarshalJSON implements the json.Marshaler interface. +func (f Future) MarshalJSON() ([]byte, error) { + return json.Marshal(f.pt) +} + +// UnmarshalJSON implements the json.Unmarshaler interface. +func (f *Future) UnmarshalJSON(data []byte) error { + // unmarshal into JSON object to determine the tracker type + obj := map[string]interface{}{} + err := json.Unmarshal(data, &obj) + if err != nil { + return err + } + if obj["method"] == nil { + return autorest.NewError("Future", "UnmarshalJSON", "missing 'method' property") + } + method := obj["method"].(string) + switch strings.ToUpper(method) { + case http.MethodDelete: + f.pt = &pollingTrackerDelete{} + case http.MethodPatch: + f.pt = &pollingTrackerPatch{} + case http.MethodPost: + f.pt = &pollingTrackerPost{} + case http.MethodPut: + f.pt = &pollingTrackerPut{} + default: + return autorest.NewError("Future", "UnmarshalJSON", "unsupoorted method '%s'", method) + } + // now unmarshal into the tracker + return json.Unmarshal(data, &f.pt) +} + +// PollingURL returns the URL used for retrieving the status of the long-running operation. +func (f Future) PollingURL() string { + if f.pt == nil { + return "" + } + return f.pt.pollingURL() +} + +// GetResult should be called once polling has completed successfully. +// It makes the final GET call to retrieve the resultant payload. +func (f Future) GetResult(sender autorest.Sender) (*http.Response, error) { + if f.pt.finalGetURL() == "" { + // we can end up in this situation if the async operation returns a 200 + // with no polling URLs. in that case return the response which should + // contain the JSON payload (only do this for successful terminal cases). + if lr := f.pt.latestResponse(); lr != nil && f.pt.hasSucceeded() { + return lr, nil + } + return nil, autorest.NewError("Future", "GetResult", "missing URL for retrieving result") + } + req, err := http.NewRequest(http.MethodGet, f.pt.finalGetURL(), nil) + if err != nil { + return nil, err + } + resp, err := sender.Do(req) + if err == nil && resp.Body != nil { + // copy the body and close it so callers don't have to + defer resp.Body.Close() + b, err := ioutil.ReadAll(resp.Body) + if err != nil { + return resp, err + } + resp.Body = ioutil.NopCloser(bytes.NewReader(b)) + } + return resp, err +} + +type pollingTracker interface { + // these methods can differ per tracker + + // checks the response headers and status code to determine the polling mechanism + updatePollingMethod() error + + // checks the response for tracker-specific error conditions + checkForErrors() error + + // returns true if provisioning state should be checked + provisioningStateApplicable() bool + + // methods common to all trackers + + // initializes a tracker's polling URL and method, called for each iteration. + // these values can be overridden by each polling tracker as required. + initPollingMethod() error + + // initializes the tracker's internal state, call this when the tracker is created + initializeState() error + + // makes an HTTP request to check the status of the LRO + pollForStatus(ctx context.Context, sender autorest.Sender) error + + // updates internal tracker state, call this after each call to pollForStatus + updatePollingState(provStateApl bool) error + + // returns the error response from the service, can be nil + pollingError() error + + // returns the polling method being used + pollingMethod() PollingMethodType + + // returns the state of the LRO as returned from the service + pollingStatus() string + + // returns the URL used for polling status + pollingURL() string + + // returns the URL used for the final GET to retrieve the resource + finalGetURL() string + + // returns true if the LRO is in a terminal state + hasTerminated() bool + + // returns true if the LRO is in a failed terminal state + hasFailed() bool + + // returns true if the LRO is in a successful terminal state + hasSucceeded() bool + + // returns the cached HTTP response after a call to pollForStatus(), can be nil + latestResponse() *http.Response +} + +type pollingTrackerBase struct { + // resp is the last response, either from the submission of the LRO or from polling + resp *http.Response + + // method is the HTTP verb, this is needed for deserialization + Method string `json:"method"` + + // rawBody is the raw JSON response body + rawBody map[string]interface{} + + // denotes if polling is using async-operation or location header + Pm PollingMethodType `json:"pollingMethod"` + + // the URL to poll for status + URI string `json:"pollingURI"` + + // the state of the LRO as returned from the service + State string `json:"lroState"` + + // the URL to GET for the final result + FinalGetURI string `json:"resultURI"` + + // used to hold an error object returned from the service + Err *ServiceError `json:"error,omitempty"` +} + +func (pt *pollingTrackerBase) initializeState() error { + // determine the initial polling state based on response body and/or HTTP status + // code. this is applicable to the initial LRO response, not polling responses! + pt.Method = pt.resp.Request.Method + if err := pt.updateRawBody(); err != nil { + return err + } + switch pt.resp.StatusCode { + case http.StatusOK: + if ps := pt.getProvisioningState(); ps != nil { + pt.State = *ps + if pt.hasFailed() { + pt.updateErrorFromResponse() + return pt.pollingError() + } + } else { + pt.State = operationSucceeded + } + case http.StatusCreated: + if ps := pt.getProvisioningState(); ps != nil { + pt.State = *ps + } else { + pt.State = operationInProgress + } + case http.StatusAccepted: + pt.State = operationInProgress + case http.StatusNoContent: + pt.State = operationSucceeded + default: + pt.State = operationFailed + pt.updateErrorFromResponse() + return pt.pollingError() + } + return pt.initPollingMethod() +} + +func (pt pollingTrackerBase) getProvisioningState() *string { + if pt.rawBody != nil && pt.rawBody["properties"] != nil { + p := pt.rawBody["properties"].(map[string]interface{}) + if ps := p["provisioningState"]; ps != nil { + s := ps.(string) + return &s + } + } + return nil +} + +func (pt *pollingTrackerBase) updateRawBody() error { + pt.rawBody = map[string]interface{}{} + if pt.resp.ContentLength != 0 { + defer pt.resp.Body.Close() + b, err := ioutil.ReadAll(pt.resp.Body) + if err != nil { + return autorest.NewErrorWithError(err, "pollingTrackerBase", "updateRawBody", nil, "failed to read response body") + } + // observed in 204 responses over HTTP/2.0; the content length is -1 but body is empty + if len(b) == 0 { + return nil + } + // put the body back so it's available to other callers + pt.resp.Body = ioutil.NopCloser(bytes.NewReader(b)) + if err = json.Unmarshal(b, &pt.rawBody); err != nil { + return autorest.NewErrorWithError(err, "pollingTrackerBase", "updateRawBody", nil, "failed to unmarshal response body") + } + } + return nil +} + +func (pt *pollingTrackerBase) pollForStatus(ctx context.Context, sender autorest.Sender) error { + req, err := http.NewRequest(http.MethodGet, pt.URI, nil) + if err != nil { + return autorest.NewErrorWithError(err, "pollingTrackerBase", "pollForStatus", nil, "failed to create HTTP request") + } + + req = req.WithContext(ctx) + preparer := autorest.CreatePreparer(autorest.GetPrepareDecorators(ctx)...) + req, err = preparer.Prepare(req) + if err != nil { + return autorest.NewErrorWithError(err, "pollingTrackerBase", "pollForStatus", nil, "failed preparing HTTP request") + } + pt.resp, err = sender.Do(req) + if err != nil { + return autorest.NewErrorWithError(err, "pollingTrackerBase", "pollForStatus", nil, "failed to send HTTP request") + } + if autorest.ResponseHasStatusCode(pt.resp, pollingCodes[:]...) { + // reset the service error on success case + pt.Err = nil + err = pt.updateRawBody() + } else { + // check response body for error content + pt.updateErrorFromResponse() + err = pt.pollingError() + } + return err +} + +// attempts to unmarshal a ServiceError type from the response body. +// if that fails then make a best attempt at creating something meaningful. +// NOTE: this assumes that the async operation has failed. +func (pt *pollingTrackerBase) updateErrorFromResponse() { + var err error + if pt.resp.ContentLength != 0 { + type respErr struct { + ServiceError *ServiceError `json:"error"` + } + re := respErr{} + defer pt.resp.Body.Close() + var b []byte + if b, err = ioutil.ReadAll(pt.resp.Body); err != nil || len(b) == 0 { + goto Default + } + if err = json.Unmarshal(b, &re); err != nil { + goto Default + } + // unmarshalling the error didn't yield anything, try unwrapped error + if re.ServiceError == nil { + err = json.Unmarshal(b, &re.ServiceError) + if err != nil { + goto Default + } + } + // the unmarshaller will ensure re.ServiceError is non-nil + // even if there was no content unmarshalled so check the code. + if re.ServiceError.Code != "" { + pt.Err = re.ServiceError + return + } + } +Default: + se := &ServiceError{ + Code: pt.pollingStatus(), + Message: "The async operation failed.", + } + if err != nil { + se.InnerError = make(map[string]interface{}) + se.InnerError["unmarshalError"] = err.Error() + } + // stick the response body into the error object in hopes + // it contains something useful to help diagnose the failure. + if len(pt.rawBody) > 0 { + se.AdditionalInfo = []map[string]interface{}{ + pt.rawBody, + } + } + pt.Err = se +} + +func (pt *pollingTrackerBase) updatePollingState(provStateApl bool) error { + if pt.Pm == PollingAsyncOperation && pt.rawBody["status"] != nil { + pt.State = pt.rawBody["status"].(string) + } else { + if pt.resp.StatusCode == http.StatusAccepted { + pt.State = operationInProgress + } else if provStateApl { + if ps := pt.getProvisioningState(); ps != nil { + pt.State = *ps + } else { + pt.State = operationSucceeded + } + } else { + return autorest.NewError("pollingTrackerBase", "updatePollingState", "the response from the async operation has an invalid status code") + } + } + // if the operation has failed update the error state + if pt.hasFailed() { + pt.updateErrorFromResponse() + } + return nil +} + +func (pt pollingTrackerBase) pollingError() error { + if pt.Err == nil { + return nil + } + return pt.Err +} + +func (pt pollingTrackerBase) pollingMethod() PollingMethodType { + return pt.Pm +} + +func (pt pollingTrackerBase) pollingStatus() string { + return pt.State +} + +func (pt pollingTrackerBase) pollingURL() string { + return pt.URI +} + +func (pt pollingTrackerBase) finalGetURL() string { + return pt.FinalGetURI +} + +func (pt pollingTrackerBase) hasTerminated() bool { + return strings.EqualFold(pt.State, operationCanceled) || strings.EqualFold(pt.State, operationFailed) || strings.EqualFold(pt.State, operationSucceeded) +} + +func (pt pollingTrackerBase) hasFailed() bool { + return strings.EqualFold(pt.State, operationCanceled) || strings.EqualFold(pt.State, operationFailed) +} + +func (pt pollingTrackerBase) hasSucceeded() bool { + return strings.EqualFold(pt.State, operationSucceeded) +} + +func (pt pollingTrackerBase) latestResponse() *http.Response { + return pt.resp +} + +// error checking common to all trackers +func (pt pollingTrackerBase) baseCheckForErrors() error { + // for Azure-AsyncOperations the response body cannot be nil or empty + if pt.Pm == PollingAsyncOperation { + if pt.resp.Body == nil || pt.resp.ContentLength == 0 { + return autorest.NewError("pollingTrackerBase", "baseCheckForErrors", "for Azure-AsyncOperation response body cannot be nil") + } + if pt.rawBody["status"] == nil { + return autorest.NewError("pollingTrackerBase", "baseCheckForErrors", "missing status property in Azure-AsyncOperation response body") + } + } + return nil +} + +// default initialization of polling URL/method. each verb tracker will update this as required. +func (pt *pollingTrackerBase) initPollingMethod() error { + if ao, err := getURLFromAsyncOpHeader(pt.resp); err != nil { + return err + } else if ao != "" { + pt.URI = ao + pt.Pm = PollingAsyncOperation + return nil + } + if lh, err := getURLFromLocationHeader(pt.resp); err != nil { + return err + } else if lh != "" { + pt.URI = lh + pt.Pm = PollingLocation + return nil + } + // it's ok if we didn't find a polling header, this will be handled elsewhere + return nil +} + +// DELETE + +type pollingTrackerDelete struct { + pollingTrackerBase +} + +func (pt *pollingTrackerDelete) updatePollingMethod() error { + // for 201 the Location header is required + if pt.resp.StatusCode == http.StatusCreated { + if lh, err := getURLFromLocationHeader(pt.resp); err != nil { + return err + } else if lh == "" { + return autorest.NewError("pollingTrackerDelete", "updateHeaders", "missing Location header in 201 response") + } else { + pt.URI = lh + } + pt.Pm = PollingLocation + pt.FinalGetURI = pt.URI + } + // for 202 prefer the Azure-AsyncOperation header but fall back to Location if necessary + if pt.resp.StatusCode == http.StatusAccepted { + ao, err := getURLFromAsyncOpHeader(pt.resp) + if err != nil { + return err + } else if ao != "" { + pt.URI = ao + pt.Pm = PollingAsyncOperation + } + // if the Location header is invalid and we already have a polling URL + // then we don't care if the Location header URL is malformed. + if lh, err := getURLFromLocationHeader(pt.resp); err != nil && pt.URI == "" { + return err + } else if lh != "" { + if ao == "" { + pt.URI = lh + pt.Pm = PollingLocation + } + // when both headers are returned we use the value in the Location header for the final GET + pt.FinalGetURI = lh + } + // make sure a polling URL was found + if pt.URI == "" { + return autorest.NewError("pollingTrackerPost", "updateHeaders", "didn't get any suitable polling URLs in 202 response") + } + } + return nil +} + +func (pt pollingTrackerDelete) checkForErrors() error { + return pt.baseCheckForErrors() +} + +func (pt pollingTrackerDelete) provisioningStateApplicable() bool { + return pt.resp.StatusCode == http.StatusOK || pt.resp.StatusCode == http.StatusNoContent +} + +// PATCH + +type pollingTrackerPatch struct { + pollingTrackerBase +} + +func (pt *pollingTrackerPatch) updatePollingMethod() error { + // by default we can use the original URL for polling and final GET + if pt.URI == "" { + pt.URI = pt.resp.Request.URL.String() + } + if pt.FinalGetURI == "" { + pt.FinalGetURI = pt.resp.Request.URL.String() + } + if pt.Pm == PollingUnknown { + pt.Pm = PollingRequestURI + } + // for 201 it's permissible for no headers to be returned + if pt.resp.StatusCode == http.StatusCreated { + if ao, err := getURLFromAsyncOpHeader(pt.resp); err != nil { + return err + } else if ao != "" { + pt.URI = ao + pt.Pm = PollingAsyncOperation + } + } + // for 202 prefer the Azure-AsyncOperation header but fall back to Location if necessary + // note the absence of the "final GET" mechanism for PATCH + if pt.resp.StatusCode == http.StatusAccepted { + ao, err := getURLFromAsyncOpHeader(pt.resp) + if err != nil { + return err + } else if ao != "" { + pt.URI = ao + pt.Pm = PollingAsyncOperation + } + if ao == "" { + if lh, err := getURLFromLocationHeader(pt.resp); err != nil { + return err + } else if lh == "" { + return autorest.NewError("pollingTrackerPatch", "updateHeaders", "didn't get any suitable polling URLs in 202 response") + } else { + pt.URI = lh + pt.Pm = PollingLocation + } + } + } + return nil +} + +func (pt pollingTrackerPatch) checkForErrors() error { + return pt.baseCheckForErrors() +} + +func (pt pollingTrackerPatch) provisioningStateApplicable() bool { + return pt.resp.StatusCode == http.StatusOK || pt.resp.StatusCode == http.StatusCreated +} + +// POST + +type pollingTrackerPost struct { + pollingTrackerBase +} + +func (pt *pollingTrackerPost) updatePollingMethod() error { + // 201 requires Location header + if pt.resp.StatusCode == http.StatusCreated { + if lh, err := getURLFromLocationHeader(pt.resp); err != nil { + return err + } else if lh == "" { + return autorest.NewError("pollingTrackerPost", "updateHeaders", "missing Location header in 201 response") + } else { + pt.URI = lh + pt.FinalGetURI = lh + pt.Pm = PollingLocation + } + } + // for 202 prefer the Azure-AsyncOperation header but fall back to Location if necessary + if pt.resp.StatusCode == http.StatusAccepted { + ao, err := getURLFromAsyncOpHeader(pt.resp) + if err != nil { + return err + } else if ao != "" { + pt.URI = ao + pt.Pm = PollingAsyncOperation + } + // if the Location header is invalid and we already have a polling URL + // then we don't care if the Location header URL is malformed. + if lh, err := getURLFromLocationHeader(pt.resp); err != nil && pt.URI == "" { + return err + } else if lh != "" { + if ao == "" { + pt.URI = lh + pt.Pm = PollingLocation + } + // when both headers are returned we use the value in the Location header for the final GET + pt.FinalGetURI = lh + } + // make sure a polling URL was found + if pt.URI == "" { + return autorest.NewError("pollingTrackerPost", "updateHeaders", "didn't get any suitable polling URLs in 202 response") + } + } + return nil +} + +func (pt pollingTrackerPost) checkForErrors() error { + return pt.baseCheckForErrors() +} + +func (pt pollingTrackerPost) provisioningStateApplicable() bool { + return pt.resp.StatusCode == http.StatusOK || pt.resp.StatusCode == http.StatusNoContent +} + +// PUT + +type pollingTrackerPut struct { + pollingTrackerBase +} + +func (pt *pollingTrackerPut) updatePollingMethod() error { + // by default we can use the original URL for polling and final GET + if pt.URI == "" { + pt.URI = pt.resp.Request.URL.String() + } + if pt.FinalGetURI == "" { + pt.FinalGetURI = pt.resp.Request.URL.String() + } + if pt.Pm == PollingUnknown { + pt.Pm = PollingRequestURI + } + // for 201 it's permissible for no headers to be returned + if pt.resp.StatusCode == http.StatusCreated { + if ao, err := getURLFromAsyncOpHeader(pt.resp); err != nil { + return err + } else if ao != "" { + pt.URI = ao + pt.Pm = PollingAsyncOperation + } + } + // for 202 prefer the Azure-AsyncOperation header but fall back to Location if necessary + if pt.resp.StatusCode == http.StatusAccepted { + ao, err := getURLFromAsyncOpHeader(pt.resp) + if err != nil { + return err + } else if ao != "" { + pt.URI = ao + pt.Pm = PollingAsyncOperation + } + // if the Location header is invalid and we already have a polling URL + // then we don't care if the Location header URL is malformed. + if lh, err := getURLFromLocationHeader(pt.resp); err != nil && pt.URI == "" { + return err + } else if lh != "" { + if ao == "" { + pt.URI = lh + pt.Pm = PollingLocation + } + } + // make sure a polling URL was found + if pt.URI == "" { + return autorest.NewError("pollingTrackerPut", "updateHeaders", "didn't get any suitable polling URLs in 202 response") + } + } + return nil +} + +func (pt pollingTrackerPut) checkForErrors() error { + err := pt.baseCheckForErrors() + if err != nil { + return err + } + // if there are no LRO headers then the body cannot be empty + ao, err := getURLFromAsyncOpHeader(pt.resp) + if err != nil { + return err + } + lh, err := getURLFromLocationHeader(pt.resp) + if err != nil { + return err + } + if ao == "" && lh == "" && len(pt.rawBody) == 0 { + return autorest.NewError("pollingTrackerPut", "checkForErrors", "the response did not contain a body") + } + return nil +} + +func (pt pollingTrackerPut) provisioningStateApplicable() bool { + return pt.resp.StatusCode == http.StatusOK || pt.resp.StatusCode == http.StatusCreated +} + +// creates a polling tracker based on the verb of the original request +func createPollingTracker(resp *http.Response) (pollingTracker, error) { + var pt pollingTracker + switch strings.ToUpper(resp.Request.Method) { + case http.MethodDelete: + pt = &pollingTrackerDelete{pollingTrackerBase: pollingTrackerBase{resp: resp}} + case http.MethodPatch: + pt = &pollingTrackerPatch{pollingTrackerBase: pollingTrackerBase{resp: resp}} + case http.MethodPost: + pt = &pollingTrackerPost{pollingTrackerBase: pollingTrackerBase{resp: resp}} + case http.MethodPut: + pt = &pollingTrackerPut{pollingTrackerBase: pollingTrackerBase{resp: resp}} + default: + return nil, autorest.NewError("azure", "createPollingTracker", "unsupported HTTP method %s", resp.Request.Method) + } + if err := pt.initializeState(); err != nil { + return pt, err + } + // this initializes the polling header values, we do this during creation in case the + // initial response send us invalid values; this way the API call will return a non-nil + // error (not doing this means the error shows up in Future.Done) + return pt, pt.updatePollingMethod() +} + +// gets the polling URL from the Azure-AsyncOperation header. +// ensures the URL is well-formed and absolute. +func getURLFromAsyncOpHeader(resp *http.Response) (string, error) { + s := resp.Header.Get(http.CanonicalHeaderKey(headerAsyncOperation)) + if s == "" { + return "", nil + } + if !isValidURL(s) { + return "", autorest.NewError("azure", "getURLFromAsyncOpHeader", "invalid polling URL '%s'", s) + } + return s, nil +} + +// gets the polling URL from the Location header. +// ensures the URL is well-formed and absolute. +func getURLFromLocationHeader(resp *http.Response) (string, error) { + s := resp.Header.Get(http.CanonicalHeaderKey(autorest.HeaderLocation)) + if s == "" { + return "", nil + } + if !isValidURL(s) { + return "", autorest.NewError("azure", "getURLFromLocationHeader", "invalid polling URL '%s'", s) + } + return s, nil +} + +// verify that the URL is valid and absolute +func isValidURL(s string) bool { + u, err := url.Parse(s) + return err == nil && u.IsAbs() +} + +// PollingMethodType defines a type used for enumerating polling mechanisms. +type PollingMethodType string + +const ( + // PollingAsyncOperation indicates the polling method uses the Azure-AsyncOperation header. + PollingAsyncOperation PollingMethodType = "AsyncOperation" + + // PollingLocation indicates the polling method uses the Location header. + PollingLocation PollingMethodType = "Location" + + // PollingRequestURI indicates the polling method uses the original request URI. + PollingRequestURI PollingMethodType = "RequestURI" + + // PollingUnknown indicates an unknown polling method and is the default value. + PollingUnknown PollingMethodType = "" +) + +// AsyncOpIncompleteError is the type that's returned from a future that has not completed. +type AsyncOpIncompleteError struct { + // FutureType is the name of the type composed of a azure.Future. + FutureType string +} + +// Error returns an error message including the originating type name of the error. +func (e AsyncOpIncompleteError) Error() string { + return fmt.Sprintf("%s: asynchronous operation has not completed", e.FutureType) +} + +// NewAsyncOpIncompleteError creates a new AsyncOpIncompleteError with the specified parameters. +func NewAsyncOpIncompleteError(futureType string) AsyncOpIncompleteError { + return AsyncOpIncompleteError{ + FutureType: futureType, + } +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/azure/auth/LICENSE b/vendor/github.com/Azure/go-autorest/autorest/azure/auth/LICENSE new file mode 100644 index 0000000..b9d6a27 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/azure/auth/LICENSE @@ -0,0 +1,191 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2015 Microsoft Corporation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/Azure/go-autorest/autorest/azure/auth/auth.go b/vendor/github.com/Azure/go-autorest/autorest/azure/auth/auth.go new file mode 100644 index 0000000..5f02026 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/azure/auth/auth.go @@ -0,0 +1,737 @@ +package auth + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "bytes" + "crypto/rsa" + "crypto/x509" + "encoding/binary" + "encoding/json" + "errors" + "fmt" + "io/ioutil" + "log" + "os" + "strings" + "unicode/utf16" + + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/adal" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/azure/cli" + "github.com/dimchansky/utfbom" + "golang.org/x/crypto/pkcs12" +) + +// The possible keys in the Values map. +const ( + SubscriptionID = "AZURE_SUBSCRIPTION_ID" + TenantID = "AZURE_TENANT_ID" + AuxiliaryTenantIDs = "AZURE_AUXILIARY_TENANT_IDS" + ClientID = "AZURE_CLIENT_ID" + ClientSecret = "AZURE_CLIENT_SECRET" + CertificatePath = "AZURE_CERTIFICATE_PATH" + CertificatePassword = "AZURE_CERTIFICATE_PASSWORD" + Username = "AZURE_USERNAME" + Password = "AZURE_PASSWORD" + EnvironmentName = "AZURE_ENVIRONMENT" + Resource = "AZURE_AD_RESOURCE" + ActiveDirectoryEndpoint = "ActiveDirectoryEndpoint" + ResourceManagerEndpoint = "ResourceManagerEndpoint" + GraphResourceID = "GraphResourceID" + SQLManagementEndpoint = "SQLManagementEndpoint" + GalleryEndpoint = "GalleryEndpoint" + ManagementEndpoint = "ManagementEndpoint" +) + +// NewAuthorizerFromEnvironment creates an Authorizer configured from environment variables in the order: +// 1. Client credentials +// 2. Client certificate +// 3. Username password +// 4. MSI +func NewAuthorizerFromEnvironment() (autorest.Authorizer, error) { + settings, err := GetSettingsFromEnvironment() + if err != nil { + return nil, err + } + return settings.GetAuthorizer() +} + +// NewAuthorizerFromEnvironmentWithResource creates an Authorizer configured from environment variables in the order: +// 1. Client credentials +// 2. Client certificate +// 3. Username password +// 4. MSI +func NewAuthorizerFromEnvironmentWithResource(resource string) (autorest.Authorizer, error) { + settings, err := GetSettingsFromEnvironment() + if err != nil { + return nil, err + } + settings.Values[Resource] = resource + return settings.GetAuthorizer() +} + +// EnvironmentSettings contains the available authentication settings. +type EnvironmentSettings struct { + Values map[string]string + Environment azure.Environment +} + +// GetSettingsFromEnvironment returns the available authentication settings from the environment. +func GetSettingsFromEnvironment() (s EnvironmentSettings, err error) { + s = EnvironmentSettings{ + Values: map[string]string{}, + } + s.setValue(SubscriptionID) + s.setValue(TenantID) + s.setValue(AuxiliaryTenantIDs) + s.setValue(ClientID) + s.setValue(ClientSecret) + s.setValue(CertificatePath) + s.setValue(CertificatePassword) + s.setValue(Username) + s.setValue(Password) + s.setValue(EnvironmentName) + s.setValue(Resource) + if v := s.Values[EnvironmentName]; v == "" { + s.Environment = azure.PublicCloud + } else { + s.Environment, err = azure.EnvironmentFromName(v) + } + if s.Values[Resource] == "" { + s.Values[Resource] = s.Environment.ResourceManagerEndpoint + } + return +} + +// GetSubscriptionID returns the available subscription ID or an empty string. +func (settings EnvironmentSettings) GetSubscriptionID() string { + return settings.Values[SubscriptionID] +} + +// adds the specified environment variable value to the Values map if it exists +func (settings EnvironmentSettings) setValue(key string) { + if v := os.Getenv(key); v != "" { + settings.Values[key] = v + } +} + +// helper to return client and tenant IDs +func (settings EnvironmentSettings) getClientAndTenant() (string, string) { + clientID := settings.Values[ClientID] + tenantID := settings.Values[TenantID] + return clientID, tenantID +} + +// GetClientCredentials creates a config object from the available client credentials. +// An error is returned if no client credentials are available. +func (settings EnvironmentSettings) GetClientCredentials() (ClientCredentialsConfig, error) { + secret := settings.Values[ClientSecret] + if secret == "" { + return ClientCredentialsConfig{}, errors.New("missing client secret") + } + clientID, tenantID := settings.getClientAndTenant() + config := NewClientCredentialsConfig(clientID, secret, tenantID) + config.AADEndpoint = settings.Environment.ActiveDirectoryEndpoint + config.Resource = settings.Values[Resource] + if auxTenants, ok := settings.Values[AuxiliaryTenantIDs]; ok { + config.AuxTenants = strings.Split(auxTenants, ";") + for i := range config.AuxTenants { + config.AuxTenants[i] = strings.TrimSpace(config.AuxTenants[i]) + } + } + return config, nil +} + +// GetClientCertificate creates a config object from the available certificate credentials. +// An error is returned if no certificate credentials are available. +func (settings EnvironmentSettings) GetClientCertificate() (ClientCertificateConfig, error) { + certPath := settings.Values[CertificatePath] + if certPath == "" { + return ClientCertificateConfig{}, errors.New("missing certificate path") + } + certPwd := settings.Values[CertificatePassword] + clientID, tenantID := settings.getClientAndTenant() + config := NewClientCertificateConfig(certPath, certPwd, clientID, tenantID) + config.AADEndpoint = settings.Environment.ActiveDirectoryEndpoint + config.Resource = settings.Values[Resource] + return config, nil +} + +// GetUsernamePassword creates a config object from the available username/password credentials. +// An error is returned if no username/password credentials are available. +func (settings EnvironmentSettings) GetUsernamePassword() (UsernamePasswordConfig, error) { + username := settings.Values[Username] + password := settings.Values[Password] + if username == "" || password == "" { + return UsernamePasswordConfig{}, errors.New("missing username/password") + } + clientID, tenantID := settings.getClientAndTenant() + config := NewUsernamePasswordConfig(username, password, clientID, tenantID) + config.AADEndpoint = settings.Environment.ActiveDirectoryEndpoint + config.Resource = settings.Values[Resource] + return config, nil +} + +// GetMSI creates a MSI config object from the available client ID. +func (settings EnvironmentSettings) GetMSI() MSIConfig { + config := NewMSIConfig() + config.Resource = settings.Values[Resource] + config.ClientID = settings.Values[ClientID] + return config +} + +// GetDeviceFlow creates a device-flow config object from the available client and tenant IDs. +func (settings EnvironmentSettings) GetDeviceFlow() DeviceFlowConfig { + clientID, tenantID := settings.getClientAndTenant() + config := NewDeviceFlowConfig(clientID, tenantID) + config.AADEndpoint = settings.Environment.ActiveDirectoryEndpoint + config.Resource = settings.Values[Resource] + return config +} + +// GetAuthorizer creates an Authorizer configured from environment variables in the order: +// 1. Client credentials +// 2. Client certificate +// 3. Username password +// 4. MSI +func (settings EnvironmentSettings) GetAuthorizer() (autorest.Authorizer, error) { + //1.Client Credentials + if c, e := settings.GetClientCredentials(); e == nil { + return c.Authorizer() + } + + //2. Client Certificate + if c, e := settings.GetClientCertificate(); e == nil { + return c.Authorizer() + } + + //3. Username Password + if c, e := settings.GetUsernamePassword(); e == nil { + return c.Authorizer() + } + + // 4. MSI + return settings.GetMSI().Authorizer() +} + +// NewAuthorizerFromFile creates an Authorizer configured from a configuration file in the following order. +// 1. Client credentials +// 2. Client certificate +func NewAuthorizerFromFile(baseURI string) (autorest.Authorizer, error) { + settings, err := GetSettingsFromFile() + if err != nil { + return nil, err + } + if a, err := settings.ClientCredentialsAuthorizer(baseURI); err == nil { + return a, err + } + if a, err := settings.ClientCertificateAuthorizer(baseURI); err == nil { + return a, err + } + return nil, errors.New("auth file missing client and certificate credentials") +} + +// NewAuthorizerFromFileWithResource creates an Authorizer configured from a configuration file in the following order. +// 1. Client credentials +// 2. Client certificate +func NewAuthorizerFromFileWithResource(resource string) (autorest.Authorizer, error) { + s, err := GetSettingsFromFile() + if err != nil { + return nil, err + } + if a, err := s.ClientCredentialsAuthorizerWithResource(resource); err == nil { + return a, err + } + if a, err := s.ClientCertificateAuthorizerWithResource(resource); err == nil { + return a, err + } + return nil, errors.New("auth file missing client and certificate credentials") +} + +// NewAuthorizerFromCLI creates an Authorizer configured from Azure CLI 2.0 for local development scenarios. +func NewAuthorizerFromCLI() (autorest.Authorizer, error) { + settings, err := GetSettingsFromEnvironment() + if err != nil { + return nil, err + } + + if settings.Values[Resource] == "" { + settings.Values[Resource] = settings.Environment.ResourceManagerEndpoint + } + + return NewAuthorizerFromCLIWithResource(settings.Values[Resource]) +} + +// NewAuthorizerFromCLIWithResource creates an Authorizer configured from Azure CLI 2.0 for local development scenarios. +func NewAuthorizerFromCLIWithResource(resource string) (autorest.Authorizer, error) { + token, err := cli.GetTokenFromCLI(resource) + if err != nil { + return nil, err + } + + adalToken, err := token.ToADALToken() + if err != nil { + return nil, err + } + + return autorest.NewBearerAuthorizer(&adalToken), nil +} + +// GetSettingsFromFile returns the available authentication settings from an Azure CLI authentication file. +func GetSettingsFromFile() (FileSettings, error) { + s := FileSettings{} + fileLocation := os.Getenv("AZURE_AUTH_LOCATION") + if fileLocation == "" { + return s, errors.New("environment variable AZURE_AUTH_LOCATION is not set") + } + + contents, err := ioutil.ReadFile(fileLocation) + if err != nil { + return s, err + } + + // Auth file might be encoded + decoded, err := decode(contents) + if err != nil { + return s, err + } + + authFile := map[string]interface{}{} + err = json.Unmarshal(decoded, &authFile) + if err != nil { + return s, err + } + + s.Values = map[string]string{} + s.setKeyValue(ClientID, authFile["clientId"]) + s.setKeyValue(ClientSecret, authFile["clientSecret"]) + s.setKeyValue(CertificatePath, authFile["clientCertificate"]) + s.setKeyValue(CertificatePassword, authFile["clientCertificatePassword"]) + s.setKeyValue(SubscriptionID, authFile["subscriptionId"]) + s.setKeyValue(TenantID, authFile["tenantId"]) + s.setKeyValue(ActiveDirectoryEndpoint, authFile["activeDirectoryEndpointUrl"]) + s.setKeyValue(ResourceManagerEndpoint, authFile["resourceManagerEndpointUrl"]) + s.setKeyValue(GraphResourceID, authFile["activeDirectoryGraphResourceId"]) + s.setKeyValue(SQLManagementEndpoint, authFile["sqlManagementEndpointUrl"]) + s.setKeyValue(GalleryEndpoint, authFile["galleryEndpointUrl"]) + s.setKeyValue(ManagementEndpoint, authFile["managementEndpointUrl"]) + return s, nil +} + +// FileSettings contains the available authentication settings. +type FileSettings struct { + Values map[string]string +} + +// GetSubscriptionID returns the available subscription ID or an empty string. +func (settings FileSettings) GetSubscriptionID() string { + return settings.Values[SubscriptionID] +} + +// adds the specified value to the Values map if it isn't nil +func (settings FileSettings) setKeyValue(key string, val interface{}) { + if val != nil { + settings.Values[key] = val.(string) + } +} + +// returns the specified AAD endpoint or the public cloud endpoint if unspecified +func (settings FileSettings) getAADEndpoint() string { + if v, ok := settings.Values[ActiveDirectoryEndpoint]; ok { + return v + } + return azure.PublicCloud.ActiveDirectoryEndpoint +} + +// ServicePrincipalTokenFromClientCredentials creates a ServicePrincipalToken from the available client credentials. +func (settings FileSettings) ServicePrincipalTokenFromClientCredentials(baseURI string) (*adal.ServicePrincipalToken, error) { + resource, err := settings.getResourceForToken(baseURI) + if err != nil { + return nil, err + } + return settings.ServicePrincipalTokenFromClientCredentialsWithResource(resource) +} + +// ClientCredentialsAuthorizer creates an authorizer from the available client credentials. +func (settings FileSettings) ClientCredentialsAuthorizer(baseURI string) (autorest.Authorizer, error) { + resource, err := settings.getResourceForToken(baseURI) + if err != nil { + return nil, err + } + return settings.ClientCredentialsAuthorizerWithResource(resource) +} + +// ServicePrincipalTokenFromClientCredentialsWithResource creates a ServicePrincipalToken +// from the available client credentials and the specified resource. +func (settings FileSettings) ServicePrincipalTokenFromClientCredentialsWithResource(resource string) (*adal.ServicePrincipalToken, error) { + if _, ok := settings.Values[ClientSecret]; !ok { + return nil, errors.New("missing client secret") + } + config, err := adal.NewOAuthConfig(settings.getAADEndpoint(), settings.Values[TenantID]) + if err != nil { + return nil, err + } + return adal.NewServicePrincipalToken(*config, settings.Values[ClientID], settings.Values[ClientSecret], resource) +} + +func (settings FileSettings) clientCertificateConfigWithResource(resource string) (ClientCertificateConfig, error) { + if _, ok := settings.Values[CertificatePath]; !ok { + return ClientCertificateConfig{}, errors.New("missing certificate path") + } + cfg := NewClientCertificateConfig(settings.Values[CertificatePath], settings.Values[CertificatePassword], settings.Values[ClientID], settings.Values[TenantID]) + cfg.AADEndpoint = settings.getAADEndpoint() + cfg.Resource = resource + return cfg, nil +} + +// ClientCredentialsAuthorizerWithResource creates an authorizer from the available client credentials and the specified resource. +func (settings FileSettings) ClientCredentialsAuthorizerWithResource(resource string) (autorest.Authorizer, error) { + spToken, err := settings.ServicePrincipalTokenFromClientCredentialsWithResource(resource) + if err != nil { + return nil, err + } + return autorest.NewBearerAuthorizer(spToken), nil +} + +// ServicePrincipalTokenFromClientCertificate creates a ServicePrincipalToken from the available certificate credentials. +func (settings FileSettings) ServicePrincipalTokenFromClientCertificate(baseURI string) (*adal.ServicePrincipalToken, error) { + resource, err := settings.getResourceForToken(baseURI) + if err != nil { + return nil, err + } + return settings.ServicePrincipalTokenFromClientCertificateWithResource(resource) +} + +// ClientCertificateAuthorizer creates an authorizer from the available certificate credentials. +func (settings FileSettings) ClientCertificateAuthorizer(baseURI string) (autorest.Authorizer, error) { + resource, err := settings.getResourceForToken(baseURI) + if err != nil { + return nil, err + } + return settings.ClientCertificateAuthorizerWithResource(resource) +} + +// ServicePrincipalTokenFromClientCertificateWithResource creates a ServicePrincipalToken from the available certificate credentials. +func (settings FileSettings) ServicePrincipalTokenFromClientCertificateWithResource(resource string) (*adal.ServicePrincipalToken, error) { + cfg, err := settings.clientCertificateConfigWithResource(resource) + if err != nil { + return nil, err + } + return cfg.ServicePrincipalToken() +} + +// ClientCertificateAuthorizerWithResource creates an authorizer from the available certificate credentials and the specified resource. +func (settings FileSettings) ClientCertificateAuthorizerWithResource(resource string) (autorest.Authorizer, error) { + cfg, err := settings.clientCertificateConfigWithResource(resource) + if err != nil { + return nil, err + } + return cfg.Authorizer() +} + +func decode(b []byte) ([]byte, error) { + reader, enc := utfbom.Skip(bytes.NewReader(b)) + + switch enc { + case utfbom.UTF16LittleEndian: + u16 := make([]uint16, (len(b)/2)-1) + err := binary.Read(reader, binary.LittleEndian, &u16) + if err != nil { + return nil, err + } + return []byte(string(utf16.Decode(u16))), nil + case utfbom.UTF16BigEndian: + u16 := make([]uint16, (len(b)/2)-1) + err := binary.Read(reader, binary.BigEndian, &u16) + if err != nil { + return nil, err + } + return []byte(string(utf16.Decode(u16))), nil + } + return ioutil.ReadAll(reader) +} + +func (settings FileSettings) getResourceForToken(baseURI string) (string, error) { + // Compare dafault base URI from the SDK to the endpoints from the public cloud + // Base URI and token resource are the same string. This func finds the authentication + // file field that matches the SDK base URI. The SDK defines the public cloud + // endpoint as its default base URI + if !strings.HasSuffix(baseURI, "/") { + baseURI += "/" + } + switch baseURI { + case azure.PublicCloud.ServiceManagementEndpoint: + return settings.Values[ManagementEndpoint], nil + case azure.PublicCloud.ResourceManagerEndpoint: + return settings.Values[ResourceManagerEndpoint], nil + case azure.PublicCloud.ActiveDirectoryEndpoint: + return settings.Values[ActiveDirectoryEndpoint], nil + case azure.PublicCloud.GalleryEndpoint: + return settings.Values[GalleryEndpoint], nil + case azure.PublicCloud.GraphEndpoint: + return settings.Values[GraphResourceID], nil + } + return "", fmt.Errorf("auth: base URI not found in endpoints") +} + +// NewClientCredentialsConfig creates an AuthorizerConfig object configured to obtain an Authorizer through Client Credentials. +// Defaults to Public Cloud and Resource Manager Endpoint. +func NewClientCredentialsConfig(clientID string, clientSecret string, tenantID string) ClientCredentialsConfig { + return ClientCredentialsConfig{ + ClientID: clientID, + ClientSecret: clientSecret, + TenantID: tenantID, + Resource: azure.PublicCloud.ResourceManagerEndpoint, + AADEndpoint: azure.PublicCloud.ActiveDirectoryEndpoint, + } +} + +// NewClientCertificateConfig creates a ClientCertificateConfig object configured to obtain an Authorizer through client certificate. +// Defaults to Public Cloud and Resource Manager Endpoint. +func NewClientCertificateConfig(certificatePath string, certificatePassword string, clientID string, tenantID string) ClientCertificateConfig { + return ClientCertificateConfig{ + CertificatePath: certificatePath, + CertificatePassword: certificatePassword, + ClientID: clientID, + TenantID: tenantID, + Resource: azure.PublicCloud.ResourceManagerEndpoint, + AADEndpoint: azure.PublicCloud.ActiveDirectoryEndpoint, + } +} + +// NewUsernamePasswordConfig creates an UsernamePasswordConfig object configured to obtain an Authorizer through username and password. +// Defaults to Public Cloud and Resource Manager Endpoint. +func NewUsernamePasswordConfig(username string, password string, clientID string, tenantID string) UsernamePasswordConfig { + return UsernamePasswordConfig{ + Username: username, + Password: password, + ClientID: clientID, + TenantID: tenantID, + Resource: azure.PublicCloud.ResourceManagerEndpoint, + AADEndpoint: azure.PublicCloud.ActiveDirectoryEndpoint, + } +} + +// NewMSIConfig creates an MSIConfig object configured to obtain an Authorizer through MSI. +func NewMSIConfig() MSIConfig { + return MSIConfig{ + Resource: azure.PublicCloud.ResourceManagerEndpoint, + } +} + +// NewDeviceFlowConfig creates a DeviceFlowConfig object configured to obtain an Authorizer through device flow. +// Defaults to Public Cloud and Resource Manager Endpoint. +func NewDeviceFlowConfig(clientID string, tenantID string) DeviceFlowConfig { + return DeviceFlowConfig{ + ClientID: clientID, + TenantID: tenantID, + Resource: azure.PublicCloud.ResourceManagerEndpoint, + AADEndpoint: azure.PublicCloud.ActiveDirectoryEndpoint, + } +} + +//AuthorizerConfig provides an authorizer from the configuration provided. +type AuthorizerConfig interface { + Authorizer() (autorest.Authorizer, error) +} + +// ClientCredentialsConfig provides the options to get a bearer authorizer from client credentials. +type ClientCredentialsConfig struct { + ClientID string + ClientSecret string + TenantID string + AuxTenants []string + AADEndpoint string + Resource string +} + +// ServicePrincipalToken creates a ServicePrincipalToken from client credentials. +func (ccc ClientCredentialsConfig) ServicePrincipalToken() (*adal.ServicePrincipalToken, error) { + oauthConfig, err := adal.NewOAuthConfig(ccc.AADEndpoint, ccc.TenantID) + if err != nil { + return nil, err + } + return adal.NewServicePrincipalToken(*oauthConfig, ccc.ClientID, ccc.ClientSecret, ccc.Resource) +} + +// MultiTenantServicePrincipalToken creates a MultiTenantServicePrincipalToken from client credentials. +func (ccc ClientCredentialsConfig) MultiTenantServicePrincipalToken() (*adal.MultiTenantServicePrincipalToken, error) { + oauthConfig, err := adal.NewMultiTenantOAuthConfig(ccc.AADEndpoint, ccc.TenantID, ccc.AuxTenants, adal.OAuthOptions{}) + if err != nil { + return nil, err + } + return adal.NewMultiTenantServicePrincipalToken(oauthConfig, ccc.ClientID, ccc.ClientSecret, ccc.Resource) +} + +// Authorizer gets the authorizer from client credentials. +func (ccc ClientCredentialsConfig) Authorizer() (autorest.Authorizer, error) { + if len(ccc.AuxTenants) == 0 { + spToken, err := ccc.ServicePrincipalToken() + if err != nil { + return nil, fmt.Errorf("failed to get SPT from client credentials: %v", err) + } + return autorest.NewBearerAuthorizer(spToken), nil + } + mtSPT, err := ccc.MultiTenantServicePrincipalToken() + if err != nil { + return nil, fmt.Errorf("failed to get multitenant SPT from client credentials: %v", err) + } + return autorest.NewMultiTenantServicePrincipalTokenAuthorizer(mtSPT), nil +} + +// ClientCertificateConfig provides the options to get a bearer authorizer from a client certificate. +type ClientCertificateConfig struct { + ClientID string + CertificatePath string + CertificatePassword string + TenantID string + AADEndpoint string + Resource string +} + +// ServicePrincipalToken creates a ServicePrincipalToken from client certificate. +func (ccc ClientCertificateConfig) ServicePrincipalToken() (*adal.ServicePrincipalToken, error) { + oauthConfig, err := adal.NewOAuthConfig(ccc.AADEndpoint, ccc.TenantID) + if err != nil { + return nil, err + } + certData, err := ioutil.ReadFile(ccc.CertificatePath) + if err != nil { + return nil, fmt.Errorf("failed to read the certificate file (%s): %v", ccc.CertificatePath, err) + } + certificate, rsaPrivateKey, err := decodePkcs12(certData, ccc.CertificatePassword) + if err != nil { + return nil, fmt.Errorf("failed to decode pkcs12 certificate while creating spt: %v", err) + } + return adal.NewServicePrincipalTokenFromCertificate(*oauthConfig, ccc.ClientID, certificate, rsaPrivateKey, ccc.Resource) +} + +// Authorizer gets an authorizer object from client certificate. +func (ccc ClientCertificateConfig) Authorizer() (autorest.Authorizer, error) { + spToken, err := ccc.ServicePrincipalToken() + if err != nil { + return nil, fmt.Errorf("failed to get oauth token from certificate auth: %v", err) + } + return autorest.NewBearerAuthorizer(spToken), nil +} + +// DeviceFlowConfig provides the options to get a bearer authorizer using device flow authentication. +type DeviceFlowConfig struct { + ClientID string + TenantID string + AADEndpoint string + Resource string +} + +// Authorizer gets the authorizer from device flow. +func (dfc DeviceFlowConfig) Authorizer() (autorest.Authorizer, error) { + spToken, err := dfc.ServicePrincipalToken() + if err != nil { + return nil, fmt.Errorf("failed to get oauth token from device flow: %v", err) + } + return autorest.NewBearerAuthorizer(spToken), nil +} + +// ServicePrincipalToken gets the service principal token from device flow. +func (dfc DeviceFlowConfig) ServicePrincipalToken() (*adal.ServicePrincipalToken, error) { + oauthConfig, err := adal.NewOAuthConfig(dfc.AADEndpoint, dfc.TenantID) + if err != nil { + return nil, err + } + oauthClient := &autorest.Client{} + deviceCode, err := adal.InitiateDeviceAuth(oauthClient, *oauthConfig, dfc.ClientID, dfc.Resource) + if err != nil { + return nil, fmt.Errorf("failed to start device auth flow: %s", err) + } + log.Println(*deviceCode.Message) + token, err := adal.WaitForUserCompletion(oauthClient, deviceCode) + if err != nil { + return nil, fmt.Errorf("failed to finish device auth flow: %s", err) + } + return adal.NewServicePrincipalTokenFromManualToken(*oauthConfig, dfc.ClientID, dfc.Resource, *token) +} + +func decodePkcs12(pkcs []byte, password string) (*x509.Certificate, *rsa.PrivateKey, error) { + privateKey, certificate, err := pkcs12.Decode(pkcs, password) + if err != nil { + return nil, nil, err + } + + rsaPrivateKey, isRsaKey := privateKey.(*rsa.PrivateKey) + if !isRsaKey { + return nil, nil, fmt.Errorf("PKCS#12 certificate must contain an RSA private key") + } + + return certificate, rsaPrivateKey, nil +} + +// UsernamePasswordConfig provides the options to get a bearer authorizer from a username and a password. +type UsernamePasswordConfig struct { + ClientID string + Username string + Password string + TenantID string + AADEndpoint string + Resource string +} + +// ServicePrincipalToken creates a ServicePrincipalToken from username and password. +func (ups UsernamePasswordConfig) ServicePrincipalToken() (*adal.ServicePrincipalToken, error) { + oauthConfig, err := adal.NewOAuthConfig(ups.AADEndpoint, ups.TenantID) + if err != nil { + return nil, err + } + return adal.NewServicePrincipalTokenFromUsernamePassword(*oauthConfig, ups.ClientID, ups.Username, ups.Password, ups.Resource) +} + +// Authorizer gets the authorizer from a username and a password. +func (ups UsernamePasswordConfig) Authorizer() (autorest.Authorizer, error) { + spToken, err := ups.ServicePrincipalToken() + if err != nil { + return nil, fmt.Errorf("failed to get oauth token from username and password auth: %v", err) + } + return autorest.NewBearerAuthorizer(spToken), nil +} + +// MSIConfig provides the options to get a bearer authorizer through MSI. +type MSIConfig struct { + Resource string + ClientID string +} + +// Authorizer gets the authorizer from MSI. +func (mc MSIConfig) Authorizer() (autorest.Authorizer, error) { + msiEndpoint, err := adal.GetMSIEndpoint() + if err != nil { + return nil, err + } + + var spToken *adal.ServicePrincipalToken + if mc.ClientID == "" { + spToken, err = adal.NewServicePrincipalTokenFromMSI(msiEndpoint, mc.Resource) + if err != nil { + return nil, fmt.Errorf("failed to get oauth token from MSI: %v", err) + } + } else { + spToken, err = adal.NewServicePrincipalTokenFromMSIWithUserAssignedID(msiEndpoint, mc.Resource, mc.ClientID) + if err != nil { + return nil, fmt.Errorf("failed to get oauth token from MSI for user assigned identity: %v", err) + } + } + + return autorest.NewBearerAuthorizer(spToken), nil +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/azure/auth/go.mod b/vendor/github.com/Azure/go-autorest/autorest/azure/auth/go.mod new file mode 100644 index 0000000..4bebbdc --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/azure/auth/go.mod @@ -0,0 +1,11 @@ +module github.com/Azure/go-autorest/autorest/azure/auth + +go 1.12 + +require ( + github.com/Azure/go-autorest/autorest v0.9.3 + github.com/Azure/go-autorest/autorest/adal v0.8.1 + github.com/Azure/go-autorest/autorest/azure/cli v0.3.1 + github.com/dimchansky/utfbom v1.1.0 + golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413 +) diff --git a/vendor/github.com/Azure/go-autorest/autorest/azure/auth/go.sum b/vendor/github.com/Azure/go-autorest/autorest/azure/auth/go.sum new file mode 100644 index 0000000..9ea3fa5 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/azure/auth/go.sum @@ -0,0 +1,39 @@ +github.com/Azure/go-autorest/autorest v0.9.0 h1:MRvx8gncNaXJqOoLmhNjUAKh33JJF8LyxPhomEtOsjs= +github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest v0.9.3 h1:OZEIaBbMdUE/Js+BQKlpO81XlISgipr6yDJ+PSwsgi4= +github.com/Azure/go-autorest/autorest v0.9.3/go.mod h1:GsRuLYvwzLjjjRoWEIyMUaYq8GNUx2nRB378IPt/1p0= +github.com/Azure/go-autorest/autorest/adal v0.5.0 h1:q2gDruN08/guU9vAjuPWff0+QIrpH6ediguzdAzXAUU= +github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/adal v0.8.0 h1:CxTzQrySOxDnKpLjFJeZAS5Qrv/qFPkgLjx5bOAi//I= +github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= +github.com/Azure/go-autorest/autorest/adal v0.8.1 h1:pZdL8o72rK+avFWl+p9nE8RWi1JInZrWJYlnpfXJwHk= +github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= +github.com/Azure/go-autorest/autorest/azure/cli v0.3.1 h1:LXl088ZQlP0SBppGFsRZonW6hSvwgL5gRByMbvUbx8U= +github.com/Azure/go-autorest/autorest/azure/cli v0.3.1/go.mod h1:ZG5p860J94/0kI9mNJVoIoLgXcirM2gF5i2kWloofxw= +github.com/Azure/go-autorest/autorest/date v0.1.0 h1:YGrhWfrgtFs84+h0o46rJrlmsZtyZRg470CqAXTZaGM= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/date v0.2.0 h1:yW+Zlqf26583pE43KhfnhFcdmSWlm5Ew6bxipnr/tbM= +github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= +github.com/Azure/go-autorest/autorest/mocks v0.1.0 h1:Kx+AUU2Te+A3JIyYn6Dfs+cFgx5XorQKuIXrZGoq/SI= +github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0 h1:Ww5g4zThfD/6cLb4z6xxgeyDa7QDkizMkJKe0ysZXp0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.3.0 h1:qJumjCaCudz+OcqE9/XtEPfvtOjOmKaui4EOpFI6zZc= +github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= +github.com/Azure/go-autorest/logger v0.1.0 h1:ruG4BSDXONFRrZZJ2GUXDiUyVpayPmb1GnWeHDdaNKY= +github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/tracing v0.5.0 h1:TRn4WjSnkcSy5AEG3pnbtFSwNtwzjr4VYyQflFE619k= +github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dimchansky/utfbom v1.1.0 h1:FcM3g+nofKgUteL8dm/UpdRXNC9KmADgTpLKsu0TRo4= +github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413 h1:ULYEB3JvPRE/IfO+9uO7vKV/xzVTO7XPAwm8xbf4w2g= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/vendor/github.com/Azure/go-autorest/autorest/azure/auth/go_mod_tidy_hack.go b/vendor/github.com/Azure/go-autorest/autorest/azure/auth/go_mod_tidy_hack.go new file mode 100644 index 0000000..2f09cd1 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/azure/auth/go_mod_tidy_hack.go @@ -0,0 +1,24 @@ +// +build modhack + +package auth + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This file, and the github.com/Azure/go-autorest/autorest import, won't actually become part of +// the resultant binary. + +// Necessary for safely adding multi-module repo. +// See: https://github.com/golang/go/wiki/Modules#is-it-possible-to-add-a-module-to-a-multi-module-repository +import _ "github.com/Azure/go-autorest/autorest" diff --git a/vendor/github.com/Azure/go-autorest/autorest/azure/azure.go b/vendor/github.com/Azure/go-autorest/autorest/azure/azure.go new file mode 100644 index 0000000..26be936 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/azure/azure.go @@ -0,0 +1,335 @@ +// Package azure provides Azure-specific implementations used with AutoRest. +// See the included examples for more detail. +package azure + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "bytes" + "encoding/json" + "fmt" + "io/ioutil" + "net/http" + "regexp" + "strconv" + "strings" + + "github.com/Azure/go-autorest/autorest" +) + +const ( + // HeaderClientID is the Azure extension header to set a user-specified request ID. + HeaderClientID = "x-ms-client-request-id" + + // HeaderReturnClientID is the Azure extension header to set if the user-specified request ID + // should be included in the response. + HeaderReturnClientID = "x-ms-return-client-request-id" + + // HeaderRequestID is the Azure extension header of the service generated request ID returned + // in the response. + HeaderRequestID = "x-ms-request-id" +) + +// ServiceError encapsulates the error response from an Azure service. +// It adhears to the OData v4 specification for error responses. +type ServiceError struct { + Code string `json:"code"` + Message string `json:"message"` + Target *string `json:"target"` + Details []map[string]interface{} `json:"details"` + InnerError map[string]interface{} `json:"innererror"` + AdditionalInfo []map[string]interface{} `json:"additionalInfo"` +} + +func (se ServiceError) Error() string { + result := fmt.Sprintf("Code=%q Message=%q", se.Code, se.Message) + + if se.Target != nil { + result += fmt.Sprintf(" Target=%q", *se.Target) + } + + if se.Details != nil { + d, err := json.Marshal(se.Details) + if err != nil { + result += fmt.Sprintf(" Details=%v", se.Details) + } + result += fmt.Sprintf(" Details=%v", string(d)) + } + + if se.InnerError != nil { + d, err := json.Marshal(se.InnerError) + if err != nil { + result += fmt.Sprintf(" InnerError=%v", se.InnerError) + } + result += fmt.Sprintf(" InnerError=%v", string(d)) + } + + if se.AdditionalInfo != nil { + d, err := json.Marshal(se.AdditionalInfo) + if err != nil { + result += fmt.Sprintf(" AdditionalInfo=%v", se.AdditionalInfo) + } + result += fmt.Sprintf(" AdditionalInfo=%v", string(d)) + } + + return result +} + +// UnmarshalJSON implements the json.Unmarshaler interface for the ServiceError type. +func (se *ServiceError) UnmarshalJSON(b []byte) error { + // per the OData v4 spec the details field must be an array of JSON objects. + // unfortunately not all services adhear to the spec and just return a single + // object instead of an array with one object. so we have to perform some + // shenanigans to accommodate both cases. + // http://docs.oasis-open.org/odata/odata-json-format/v4.0/os/odata-json-format-v4.0-os.html#_Toc372793091 + + type serviceError1 struct { + Code string `json:"code"` + Message string `json:"message"` + Target *string `json:"target"` + Details []map[string]interface{} `json:"details"` + InnerError map[string]interface{} `json:"innererror"` + AdditionalInfo []map[string]interface{} `json:"additionalInfo"` + } + + type serviceError2 struct { + Code string `json:"code"` + Message string `json:"message"` + Target *string `json:"target"` + Details map[string]interface{} `json:"details"` + InnerError map[string]interface{} `json:"innererror"` + AdditionalInfo []map[string]interface{} `json:"additionalInfo"` + } + + se1 := serviceError1{} + err := json.Unmarshal(b, &se1) + if err == nil { + se.populate(se1.Code, se1.Message, se1.Target, se1.Details, se1.InnerError, se1.AdditionalInfo) + return nil + } + + se2 := serviceError2{} + err = json.Unmarshal(b, &se2) + if err == nil { + se.populate(se2.Code, se2.Message, se2.Target, nil, se2.InnerError, se2.AdditionalInfo) + se.Details = append(se.Details, se2.Details) + return nil + } + return err +} + +func (se *ServiceError) populate(code, message string, target *string, details []map[string]interface{}, inner map[string]interface{}, additional []map[string]interface{}) { + se.Code = code + se.Message = message + se.Target = target + se.Details = details + se.InnerError = inner + se.AdditionalInfo = additional +} + +// RequestError describes an error response returned by Azure service. +type RequestError struct { + autorest.DetailedError + + // The error returned by the Azure service. + ServiceError *ServiceError `json:"error" xml:"Error"` + + // The request id (from the x-ms-request-id-header) of the request. + RequestID string +} + +// Error returns a human-friendly error message from service error. +func (e RequestError) Error() string { + return fmt.Sprintf("autorest/azure: Service returned an error. Status=%v %v", + e.StatusCode, e.ServiceError) +} + +// IsAzureError returns true if the passed error is an Azure Service error; false otherwise. +func IsAzureError(e error) bool { + _, ok := e.(*RequestError) + return ok +} + +// Resource contains details about an Azure resource. +type Resource struct { + SubscriptionID string + ResourceGroup string + Provider string + ResourceType string + ResourceName string +} + +// ParseResourceID parses a resource ID into a ResourceDetails struct. +// See https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-template-functions-resource#return-value-4. +func ParseResourceID(resourceID string) (Resource, error) { + + const resourceIDPatternText = `(?i)subscriptions/(.+)/resourceGroups/(.+)/providers/(.+?)/(.+?)/(.+)` + resourceIDPattern := regexp.MustCompile(resourceIDPatternText) + match := resourceIDPattern.FindStringSubmatch(resourceID) + + if len(match) == 0 { + return Resource{}, fmt.Errorf("parsing failed for %s. Invalid resource Id format", resourceID) + } + + v := strings.Split(match[5], "/") + resourceName := v[len(v)-1] + + result := Resource{ + SubscriptionID: match[1], + ResourceGroup: match[2], + Provider: match[3], + ResourceType: match[4], + ResourceName: resourceName, + } + + return result, nil +} + +// NewErrorWithError creates a new Error conforming object from the +// passed packageType, method, statusCode of the given resp (UndefinedStatusCode +// if resp is nil), message, and original error. message is treated as a format +// string to which the optional args apply. +func NewErrorWithError(original error, packageType string, method string, resp *http.Response, message string, args ...interface{}) RequestError { + if v, ok := original.(*RequestError); ok { + return *v + } + + statusCode := autorest.UndefinedStatusCode + if resp != nil { + statusCode = resp.StatusCode + } + return RequestError{ + DetailedError: autorest.DetailedError{ + Original: original, + PackageType: packageType, + Method: method, + StatusCode: statusCode, + Message: fmt.Sprintf(message, args...), + }, + } +} + +// WithReturningClientID returns a PrepareDecorator that adds an HTTP extension header of +// x-ms-client-request-id whose value is the passed, undecorated UUID (e.g., +// "0F39878C-5F76-4DB8-A25D-61D2C193C3CA"). It also sets the x-ms-return-client-request-id +// header to true such that UUID accompanies the http.Response. +func WithReturningClientID(uuid string) autorest.PrepareDecorator { + preparer := autorest.CreatePreparer( + WithClientID(uuid), + WithReturnClientID(true)) + + return func(p autorest.Preparer) autorest.Preparer { + return autorest.PreparerFunc(func(r *http.Request) (*http.Request, error) { + r, err := p.Prepare(r) + if err != nil { + return r, err + } + return preparer.Prepare(r) + }) + } +} + +// WithClientID returns a PrepareDecorator that adds an HTTP extension header of +// x-ms-client-request-id whose value is passed, undecorated UUID (e.g., +// "0F39878C-5F76-4DB8-A25D-61D2C193C3CA"). +func WithClientID(uuid string) autorest.PrepareDecorator { + return autorest.WithHeader(HeaderClientID, uuid) +} + +// WithReturnClientID returns a PrepareDecorator that adds an HTTP extension header of +// x-ms-return-client-request-id whose boolean value indicates if the value of the +// x-ms-client-request-id header should be included in the http.Response. +func WithReturnClientID(b bool) autorest.PrepareDecorator { + return autorest.WithHeader(HeaderReturnClientID, strconv.FormatBool(b)) +} + +// ExtractClientID extracts the client identifier from the x-ms-client-request-id header set on the +// http.Request sent to the service (and returned in the http.Response) +func ExtractClientID(resp *http.Response) string { + return autorest.ExtractHeaderValue(HeaderClientID, resp) +} + +// ExtractRequestID extracts the Azure server generated request identifier from the +// x-ms-request-id header. +func ExtractRequestID(resp *http.Response) string { + return autorest.ExtractHeaderValue(HeaderRequestID, resp) +} + +// WithErrorUnlessStatusCode returns a RespondDecorator that emits an +// azure.RequestError by reading the response body unless the response HTTP status code +// is among the set passed. +// +// If there is a chance service may return responses other than the Azure error +// format and the response cannot be parsed into an error, a decoding error will +// be returned containing the response body. In any case, the Responder will +// return an error if the status code is not satisfied. +// +// If this Responder returns an error, the response body will be replaced with +// an in-memory reader, which needs no further closing. +func WithErrorUnlessStatusCode(codes ...int) autorest.RespondDecorator { + return func(r autorest.Responder) autorest.Responder { + return autorest.ResponderFunc(func(resp *http.Response) error { + err := r.Respond(resp) + if err == nil && !autorest.ResponseHasStatusCode(resp, codes...) { + var e RequestError + defer resp.Body.Close() + + encodedAs := autorest.EncodedAsJSON + if strings.Contains(resp.Header.Get("Content-Type"), "xml") { + encodedAs = autorest.EncodedAsXML + } + + // Copy and replace the Body in case it does not contain an error object. + // This will leave the Body available to the caller. + b, decodeErr := autorest.CopyAndDecode(encodedAs, resp.Body, &e) + resp.Body = ioutil.NopCloser(&b) + if decodeErr != nil { + return fmt.Errorf("autorest/azure: error response cannot be parsed: %q error: %v", b.String(), decodeErr) + } + if e.ServiceError == nil { + // Check if error is unwrapped ServiceError + decoder := autorest.NewDecoder(encodedAs, bytes.NewReader(b.Bytes())) + if err := decoder.Decode(&e.ServiceError); err != nil { + return err + } + } + if e.ServiceError.Message == "" { + // if we're here it means the returned error wasn't OData v4 compliant. + // try to unmarshal the body in hopes of getting something. + rawBody := map[string]interface{}{} + decoder := autorest.NewDecoder(encodedAs, bytes.NewReader(b.Bytes())) + if err := decoder.Decode(&rawBody); err != nil { + return err + } + + e.ServiceError = &ServiceError{ + Code: "Unknown", + Message: "Unknown service error", + } + if len(rawBody) > 0 { + e.ServiceError.Details = []map[string]interface{}{rawBody} + } + } + e.Response = resp + e.RequestID = ExtractRequestID(resp) + if e.StatusCode == nil { + e.StatusCode = resp.StatusCode + } + err = &e + } + return err + }) + } +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/azure/cli/LICENSE b/vendor/github.com/Azure/go-autorest/autorest/azure/cli/LICENSE new file mode 100644 index 0000000..b9d6a27 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/azure/cli/LICENSE @@ -0,0 +1,191 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2015 Microsoft Corporation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/Azure/go-autorest/autorest/azure/cli/go.mod b/vendor/github.com/Azure/go-autorest/autorest/azure/cli/go.mod new file mode 100644 index 0000000..a583029 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/azure/cli/go.mod @@ -0,0 +1,11 @@ +module github.com/Azure/go-autorest/autorest/azure/cli + +go 1.12 + +require ( + github.com/Azure/go-autorest/autorest v0.9.0 + github.com/Azure/go-autorest/autorest/adal v0.8.0 + github.com/Azure/go-autorest/autorest/date v0.2.0 + github.com/dimchansky/utfbom v1.1.0 + github.com/mitchellh/go-homedir v1.1.0 +) diff --git a/vendor/github.com/Azure/go-autorest/autorest/azure/cli/go.sum b/vendor/github.com/Azure/go-autorest/autorest/azure/cli/go.sum new file mode 100644 index 0000000..542806b --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/azure/cli/go.sum @@ -0,0 +1,29 @@ +github.com/Azure/go-autorest/autorest v0.9.0 h1:MRvx8gncNaXJqOoLmhNjUAKh33JJF8LyxPhomEtOsjs= +github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest/adal v0.5.0 h1:q2gDruN08/guU9vAjuPWff0+QIrpH6ediguzdAzXAUU= +github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/adal v0.8.0 h1:CxTzQrySOxDnKpLjFJeZAS5Qrv/qFPkgLjx5bOAi//I= +github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= +github.com/Azure/go-autorest/autorest/date v0.1.0 h1:YGrhWfrgtFs84+h0o46rJrlmsZtyZRg470CqAXTZaGM= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/date v0.2.0 h1:yW+Zlqf26583pE43KhfnhFcdmSWlm5Ew6bxipnr/tbM= +github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= +github.com/Azure/go-autorest/autorest/mocks v0.1.0 h1:Kx+AUU2Te+A3JIyYn6Dfs+cFgx5XorQKuIXrZGoq/SI= +github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0 h1:Ww5g4zThfD/6cLb4z6xxgeyDa7QDkizMkJKe0ysZXp0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.3.0 h1:qJumjCaCudz+OcqE9/XtEPfvtOjOmKaui4EOpFI6zZc= +github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= +github.com/Azure/go-autorest/logger v0.1.0 h1:ruG4BSDXONFRrZZJ2GUXDiUyVpayPmb1GnWeHDdaNKY= +github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/tracing v0.5.0 h1:TRn4WjSnkcSy5AEG3pnbtFSwNtwzjr4VYyQflFE619k= +github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dimchansky/utfbom v1.1.0 h1:FcM3g+nofKgUteL8dm/UpdRXNC9KmADgTpLKsu0TRo4= +github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= diff --git a/vendor/github.com/Azure/go-autorest/autorest/azure/cli/go_mod_tidy_hack.go b/vendor/github.com/Azure/go-autorest/autorest/azure/cli/go_mod_tidy_hack.go new file mode 100644 index 0000000..618bed3 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/azure/cli/go_mod_tidy_hack.go @@ -0,0 +1,24 @@ +// +build modhack + +package cli + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This file, and the github.com/Azure/go-autorest/autorest import, won't actually become part of +// the resultant binary. + +// Necessary for safely adding multi-module repo. +// See: https://github.com/golang/go/wiki/Modules#is-it-possible-to-add-a-module-to-a-multi-module-repository +import _ "github.com/Azure/go-autorest/autorest" diff --git a/vendor/github.com/Azure/go-autorest/autorest/azure/cli/profile.go b/vendor/github.com/Azure/go-autorest/autorest/azure/cli/profile.go new file mode 100644 index 0000000..f45c3a5 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/azure/cli/profile.go @@ -0,0 +1,83 @@ +package cli + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "bytes" + "encoding/json" + "fmt" + "io/ioutil" + "os" + "path/filepath" + + "github.com/dimchansky/utfbom" + "github.com/mitchellh/go-homedir" +) + +// Profile represents a Profile from the Azure CLI +type Profile struct { + InstallationID string `json:"installationId"` + Subscriptions []Subscription `json:"subscriptions"` +} + +// Subscription represents a Subscription from the Azure CLI +type Subscription struct { + EnvironmentName string `json:"environmentName"` + ID string `json:"id"` + IsDefault bool `json:"isDefault"` + Name string `json:"name"` + State string `json:"state"` + TenantID string `json:"tenantId"` + User *User `json:"user"` +} + +// User represents a User from the Azure CLI +type User struct { + Name string `json:"name"` + Type string `json:"type"` +} + +const azureProfileJSON = "azureProfile.json" + +func configDir() string { + return os.Getenv("AZURE_CONFIG_DIR") +} + +// ProfilePath returns the path where the Azure Profile is stored from the Azure CLI +func ProfilePath() (string, error) { + if cfgDir := configDir(); cfgDir != "" { + return filepath.Join(cfgDir, azureProfileJSON), nil + } + return homedir.Expand("~/.azure/" + azureProfileJSON) +} + +// LoadProfile restores a Profile object from a file located at 'path'. +func LoadProfile(path string) (result Profile, err error) { + var contents []byte + contents, err = ioutil.ReadFile(path) + if err != nil { + err = fmt.Errorf("failed to open file (%s) while loading token: %v", path, err) + return + } + reader := utfbom.SkipOnly(bytes.NewReader(contents)) + + dec := json.NewDecoder(reader) + if err = dec.Decode(&result); err != nil { + err = fmt.Errorf("failed to decode contents of file (%s) into a Profile representation: %v", path, err) + return + } + + return +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/azure/cli/token.go b/vendor/github.com/Azure/go-autorest/autorest/azure/cli/token.go new file mode 100644 index 0000000..44ff446 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/azure/cli/token.go @@ -0,0 +1,175 @@ +package cli + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "bytes" + "encoding/json" + "fmt" + "os" + "os/exec" + "path/filepath" + "regexp" + "runtime" + "strconv" + "time" + + "github.com/Azure/go-autorest/autorest/adal" + "github.com/Azure/go-autorest/autorest/date" + "github.com/mitchellh/go-homedir" +) + +// Token represents an AccessToken from the Azure CLI +type Token struct { + AccessToken string `json:"accessToken"` + Authority string `json:"_authority"` + ClientID string `json:"_clientId"` + ExpiresOn string `json:"expiresOn"` + IdentityProvider string `json:"identityProvider"` + IsMRRT bool `json:"isMRRT"` + RefreshToken string `json:"refreshToken"` + Resource string `json:"resource"` + TokenType string `json:"tokenType"` + UserID string `json:"userId"` +} + +const accessTokensJSON = "accessTokens.json" + +// ToADALToken converts an Azure CLI `Token`` to an `adal.Token`` +func (t Token) ToADALToken() (converted adal.Token, err error) { + tokenExpirationDate, err := ParseExpirationDate(t.ExpiresOn) + if err != nil { + err = fmt.Errorf("Error parsing Token Expiration Date %q: %+v", t.ExpiresOn, err) + return + } + + difference := tokenExpirationDate.Sub(date.UnixEpoch()) + + converted = adal.Token{ + AccessToken: t.AccessToken, + Type: t.TokenType, + ExpiresIn: "3600", + ExpiresOn: json.Number(strconv.Itoa(int(difference.Seconds()))), + RefreshToken: t.RefreshToken, + Resource: t.Resource, + } + return +} + +// AccessTokensPath returns the path where access tokens are stored from the Azure CLI +// TODO(#199): add unit test. +func AccessTokensPath() (string, error) { + // Azure-CLI allows user to customize the path of access tokens through environment variable. + if accessTokenPath := os.Getenv("AZURE_ACCESS_TOKEN_FILE"); accessTokenPath != "" { + return accessTokenPath, nil + } + + // Azure-CLI allows user to customize the path to Azure config directory through environment variable. + if cfgDir := configDir(); cfgDir != "" { + return filepath.Join(cfgDir, accessTokensJSON), nil + } + + // Fallback logic to default path on non-cloud-shell environment. + // TODO(#200): remove the dependency on hard-coding path. + return homedir.Expand("~/.azure/" + accessTokensJSON) +} + +// ParseExpirationDate parses either a Azure CLI or CloudShell date into a time object +func ParseExpirationDate(input string) (*time.Time, error) { + // CloudShell (and potentially the Azure CLI in future) + expirationDate, cloudShellErr := time.Parse(time.RFC3339, input) + if cloudShellErr != nil { + // Azure CLI (Python) e.g. 2017-08-31 19:48:57.998857 (plus the local timezone) + const cliFormat = "2006-01-02 15:04:05.999999" + expirationDate, cliErr := time.ParseInLocation(cliFormat, input, time.Local) + if cliErr == nil { + return &expirationDate, nil + } + + return nil, fmt.Errorf("Error parsing expiration date %q.\n\nCloudShell Error: \n%+v\n\nCLI Error:\n%+v", input, cloudShellErr, cliErr) + } + + return &expirationDate, nil +} + +// LoadTokens restores a set of Token objects from a file located at 'path'. +func LoadTokens(path string) ([]Token, error) { + file, err := os.Open(path) + if err != nil { + return nil, fmt.Errorf("failed to open file (%s) while loading token: %v", path, err) + } + defer file.Close() + + var tokens []Token + + dec := json.NewDecoder(file) + if err = dec.Decode(&tokens); err != nil { + return nil, fmt.Errorf("failed to decode contents of file (%s) into a `cli.Token` representation: %v", path, err) + } + + return tokens, nil +} + +// GetTokenFromCLI gets a token using Azure CLI 2.0 for local development scenarios. +func GetTokenFromCLI(resource string) (*Token, error) { + // This is the path that a developer can set to tell this class what the install path for Azure CLI is. + const azureCLIPath = "AzureCLIPath" + + // The default install paths are used to find Azure CLI. This is for security, so that any path in the calling program's Path environment is not used to execute Azure CLI. + azureCLIDefaultPathWindows := fmt.Sprintf("%s\\Microsoft SDKs\\Azure\\CLI2\\wbin; %s\\Microsoft SDKs\\Azure\\CLI2\\wbin", os.Getenv("ProgramFiles(x86)"), os.Getenv("ProgramFiles")) + + // Default path for non-Windows. + const azureCLIDefaultPath = "/bin:/sbin:/usr/bin:/usr/local/bin" + + // Validate resource, since it gets sent as a command line argument to Azure CLI + const invalidResourceErrorTemplate = "Resource %s is not in expected format. Only alphanumeric characters, [dot], [colon], [hyphen], and [forward slash] are allowed." + match, err := regexp.MatchString("^[0-9a-zA-Z-.:/]+$", resource) + if err != nil { + return nil, err + } + if !match { + return nil, fmt.Errorf(invalidResourceErrorTemplate, resource) + } + + // Execute Azure CLI to get token + var cliCmd *exec.Cmd + if runtime.GOOS == "windows" { + cliCmd = exec.Command(fmt.Sprintf("%s\\system32\\cmd.exe", os.Getenv("windir"))) + cliCmd.Env = os.Environ() + cliCmd.Env = append(cliCmd.Env, fmt.Sprintf("PATH=%s;%s", os.Getenv(azureCLIPath), azureCLIDefaultPathWindows)) + cliCmd.Args = append(cliCmd.Args, "/c", "az") + } else { + cliCmd = exec.Command("az") + cliCmd.Env = os.Environ() + cliCmd.Env = append(cliCmd.Env, fmt.Sprintf("PATH=%s:%s", os.Getenv(azureCLIPath), azureCLIDefaultPath)) + } + cliCmd.Args = append(cliCmd.Args, "account", "get-access-token", "-o", "json", "--resource", resource) + + var stderr bytes.Buffer + cliCmd.Stderr = &stderr + + output, err := cliCmd.Output() + if err != nil { + return nil, fmt.Errorf("Invoking Azure CLI failed with the following error: %s", stderr.String()) + } + + tokenResponse := Token{} + err = json.Unmarshal(output, &tokenResponse) + if err != nil { + return nil, err + } + + return &tokenResponse, err +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/azure/environments.go b/vendor/github.com/Azure/go-autorest/autorest/azure/environments.go new file mode 100644 index 0000000..6c20b81 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/azure/environments.go @@ -0,0 +1,244 @@ +package azure + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "os" + "strings" +) + +const ( + // EnvironmentFilepathName captures the name of the environment variable containing the path to the file + // to be used while populating the Azure Environment. + EnvironmentFilepathName = "AZURE_ENVIRONMENT_FILEPATH" + + // NotAvailable is used for endpoints and resource IDs that are not available for a given cloud. + NotAvailable = "N/A" +) + +var environments = map[string]Environment{ + "AZURECHINACLOUD": ChinaCloud, + "AZUREGERMANCLOUD": GermanCloud, + "AZUREPUBLICCLOUD": PublicCloud, + "AZUREUSGOVERNMENTCLOUD": USGovernmentCloud, +} + +// ResourceIdentifier contains a set of Azure resource IDs. +type ResourceIdentifier struct { + Graph string `json:"graph"` + KeyVault string `json:"keyVault"` + Datalake string `json:"datalake"` + Batch string `json:"batch"` + OperationalInsights string `json:"operationalInsights"` + Storage string `json:"storage"` +} + +// Environment represents a set of endpoints for each of Azure's Clouds. +type Environment struct { + Name string `json:"name"` + ManagementPortalURL string `json:"managementPortalURL"` + PublishSettingsURL string `json:"publishSettingsURL"` + ServiceManagementEndpoint string `json:"serviceManagementEndpoint"` + ResourceManagerEndpoint string `json:"resourceManagerEndpoint"` + ActiveDirectoryEndpoint string `json:"activeDirectoryEndpoint"` + GalleryEndpoint string `json:"galleryEndpoint"` + KeyVaultEndpoint string `json:"keyVaultEndpoint"` + GraphEndpoint string `json:"graphEndpoint"` + ServiceBusEndpoint string `json:"serviceBusEndpoint"` + BatchManagementEndpoint string `json:"batchManagementEndpoint"` + StorageEndpointSuffix string `json:"storageEndpointSuffix"` + SQLDatabaseDNSSuffix string `json:"sqlDatabaseDNSSuffix"` + TrafficManagerDNSSuffix string `json:"trafficManagerDNSSuffix"` + KeyVaultDNSSuffix string `json:"keyVaultDNSSuffix"` + ServiceBusEndpointSuffix string `json:"serviceBusEndpointSuffix"` + ServiceManagementVMDNSSuffix string `json:"serviceManagementVMDNSSuffix"` + ResourceManagerVMDNSSuffix string `json:"resourceManagerVMDNSSuffix"` + ContainerRegistryDNSSuffix string `json:"containerRegistryDNSSuffix"` + CosmosDBDNSSuffix string `json:"cosmosDBDNSSuffix"` + TokenAudience string `json:"tokenAudience"` + ResourceIdentifiers ResourceIdentifier `json:"resourceIdentifiers"` +} + +var ( + // PublicCloud is the default public Azure cloud environment + PublicCloud = Environment{ + Name: "AzurePublicCloud", + ManagementPortalURL: "https://manage.windowsazure.com/", + PublishSettingsURL: "https://manage.windowsazure.com/publishsettings/index", + ServiceManagementEndpoint: "https://management.core.windows.net/", + ResourceManagerEndpoint: "https://management.azure.com/", + ActiveDirectoryEndpoint: "https://login.microsoftonline.com/", + GalleryEndpoint: "https://gallery.azure.com/", + KeyVaultEndpoint: "https://vault.azure.net/", + GraphEndpoint: "https://graph.windows.net/", + ServiceBusEndpoint: "https://servicebus.windows.net/", + BatchManagementEndpoint: "https://batch.core.windows.net/", + StorageEndpointSuffix: "core.windows.net", + SQLDatabaseDNSSuffix: "database.windows.net", + TrafficManagerDNSSuffix: "trafficmanager.net", + KeyVaultDNSSuffix: "vault.azure.net", + ServiceBusEndpointSuffix: "servicebus.windows.net", + ServiceManagementVMDNSSuffix: "cloudapp.net", + ResourceManagerVMDNSSuffix: "cloudapp.azure.com", + ContainerRegistryDNSSuffix: "azurecr.io", + CosmosDBDNSSuffix: "documents.azure.com", + TokenAudience: "https://management.azure.com/", + ResourceIdentifiers: ResourceIdentifier{ + Graph: "https://graph.windows.net/", + KeyVault: "https://vault.azure.net", + Datalake: "https://datalake.azure.net/", + Batch: "https://batch.core.windows.net/", + OperationalInsights: "https://api.loganalytics.io", + Storage: "https://storage.azure.com/", + }, + } + + // USGovernmentCloud is the cloud environment for the US Government + USGovernmentCloud = Environment{ + Name: "AzureUSGovernmentCloud", + ManagementPortalURL: "https://manage.windowsazure.us/", + PublishSettingsURL: "https://manage.windowsazure.us/publishsettings/index", + ServiceManagementEndpoint: "https://management.core.usgovcloudapi.net/", + ResourceManagerEndpoint: "https://management.usgovcloudapi.net/", + ActiveDirectoryEndpoint: "https://login.microsoftonline.us/", + GalleryEndpoint: "https://gallery.usgovcloudapi.net/", + KeyVaultEndpoint: "https://vault.usgovcloudapi.net/", + GraphEndpoint: "https://graph.windows.net/", + ServiceBusEndpoint: "https://servicebus.usgovcloudapi.net/", + BatchManagementEndpoint: "https://batch.core.usgovcloudapi.net/", + StorageEndpointSuffix: "core.usgovcloudapi.net", + SQLDatabaseDNSSuffix: "database.usgovcloudapi.net", + TrafficManagerDNSSuffix: "usgovtrafficmanager.net", + KeyVaultDNSSuffix: "vault.usgovcloudapi.net", + ServiceBusEndpointSuffix: "servicebus.usgovcloudapi.net", + ServiceManagementVMDNSSuffix: "usgovcloudapp.net", + ResourceManagerVMDNSSuffix: "cloudapp.windowsazure.us", + ContainerRegistryDNSSuffix: "azurecr.us", + CosmosDBDNSSuffix: "documents.azure.us", + TokenAudience: "https://management.usgovcloudapi.net/", + ResourceIdentifiers: ResourceIdentifier{ + Graph: "https://graph.windows.net/", + KeyVault: "https://vault.usgovcloudapi.net", + Datalake: NotAvailable, + Batch: "https://batch.core.usgovcloudapi.net/", + OperationalInsights: "https://api.loganalytics.us", + Storage: "https://storage.azure.com/", + }, + } + + // ChinaCloud is the cloud environment operated in China + ChinaCloud = Environment{ + Name: "AzureChinaCloud", + ManagementPortalURL: "https://manage.chinacloudapi.com/", + PublishSettingsURL: "https://manage.chinacloudapi.com/publishsettings/index", + ServiceManagementEndpoint: "https://management.core.chinacloudapi.cn/", + ResourceManagerEndpoint: "https://management.chinacloudapi.cn/", + ActiveDirectoryEndpoint: "https://login.chinacloudapi.cn/", + GalleryEndpoint: "https://gallery.chinacloudapi.cn/", + KeyVaultEndpoint: "https://vault.azure.cn/", + GraphEndpoint: "https://graph.chinacloudapi.cn/", + ServiceBusEndpoint: "https://servicebus.chinacloudapi.cn/", + BatchManagementEndpoint: "https://batch.chinacloudapi.cn/", + StorageEndpointSuffix: "core.chinacloudapi.cn", + SQLDatabaseDNSSuffix: "database.chinacloudapi.cn", + TrafficManagerDNSSuffix: "trafficmanager.cn", + KeyVaultDNSSuffix: "vault.azure.cn", + ServiceBusEndpointSuffix: "servicebus.chinacloudapi.cn", + ServiceManagementVMDNSSuffix: "chinacloudapp.cn", + ResourceManagerVMDNSSuffix: "cloudapp.azure.cn", + ContainerRegistryDNSSuffix: "azurecr.cn", + CosmosDBDNSSuffix: "documents.azure.cn", + TokenAudience: "https://management.chinacloudapi.cn/", + ResourceIdentifiers: ResourceIdentifier{ + Graph: "https://graph.chinacloudapi.cn/", + KeyVault: "https://vault.azure.cn", + Datalake: NotAvailable, + Batch: "https://batch.chinacloudapi.cn/", + OperationalInsights: NotAvailable, + Storage: "https://storage.azure.com/", + }, + } + + // GermanCloud is the cloud environment operated in Germany + GermanCloud = Environment{ + Name: "AzureGermanCloud", + ManagementPortalURL: "http://portal.microsoftazure.de/", + PublishSettingsURL: "https://manage.microsoftazure.de/publishsettings/index", + ServiceManagementEndpoint: "https://management.core.cloudapi.de/", + ResourceManagerEndpoint: "https://management.microsoftazure.de/", + ActiveDirectoryEndpoint: "https://login.microsoftonline.de/", + GalleryEndpoint: "https://gallery.cloudapi.de/", + KeyVaultEndpoint: "https://vault.microsoftazure.de/", + GraphEndpoint: "https://graph.cloudapi.de/", + ServiceBusEndpoint: "https://servicebus.cloudapi.de/", + BatchManagementEndpoint: "https://batch.cloudapi.de/", + StorageEndpointSuffix: "core.cloudapi.de", + SQLDatabaseDNSSuffix: "database.cloudapi.de", + TrafficManagerDNSSuffix: "azuretrafficmanager.de", + KeyVaultDNSSuffix: "vault.microsoftazure.de", + ServiceBusEndpointSuffix: "servicebus.cloudapi.de", + ServiceManagementVMDNSSuffix: "azurecloudapp.de", + ResourceManagerVMDNSSuffix: "cloudapp.microsoftazure.de", + ContainerRegistryDNSSuffix: NotAvailable, + CosmosDBDNSSuffix: "documents.microsoftazure.de", + TokenAudience: "https://management.microsoftazure.de/", + ResourceIdentifiers: ResourceIdentifier{ + Graph: "https://graph.cloudapi.de/", + KeyVault: "https://vault.microsoftazure.de", + Datalake: NotAvailable, + Batch: "https://batch.cloudapi.de/", + OperationalInsights: NotAvailable, + Storage: "https://storage.azure.com/", + }, + } +) + +// EnvironmentFromName returns an Environment based on the common name specified. +func EnvironmentFromName(name string) (Environment, error) { + // IMPORTANT + // As per @radhikagupta5: + // This is technical debt, fundamentally here because Kubernetes is not currently accepting + // contributions to the providers. Once that is an option, the provider should be updated to + // directly call `EnvironmentFromFile`. Until then, we rely on dispatching Azure Stack environment creation + // from this method based on the name that is provided to us. + if strings.EqualFold(name, "AZURESTACKCLOUD") { + return EnvironmentFromFile(os.Getenv(EnvironmentFilepathName)) + } + + name = strings.ToUpper(name) + env, ok := environments[name] + if !ok { + return env, fmt.Errorf("autorest/azure: There is no cloud environment matching the name %q", name) + } + + return env, nil +} + +// EnvironmentFromFile loads an Environment from a configuration file available on disk. +// This function is particularly useful in the Hybrid Cloud model, where one must define their own +// endpoints. +func EnvironmentFromFile(location string) (unmarshaled Environment, err error) { + fileContents, err := ioutil.ReadFile(location) + if err != nil { + return + } + + err = json.Unmarshal(fileContents, &unmarshaled) + + return +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/azure/metadata_environment.go b/vendor/github.com/Azure/go-autorest/autorest/azure/metadata_environment.go new file mode 100644 index 0000000..507f9e9 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/azure/metadata_environment.go @@ -0,0 +1,245 @@ +package azure + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "net/http" + "strings" + + "github.com/Azure/go-autorest/autorest" +) + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +type audience []string + +type authentication struct { + LoginEndpoint string `json:"loginEndpoint"` + Audiences audience `json:"audiences"` +} + +type environmentMetadataInfo struct { + GalleryEndpoint string `json:"galleryEndpoint"` + GraphEndpoint string `json:"graphEndpoint"` + PortalEndpoint string `json:"portalEndpoint"` + Authentication authentication `json:"authentication"` +} + +// EnvironmentProperty represent property names that clients can override +type EnvironmentProperty string + +const ( + // EnvironmentName ... + EnvironmentName EnvironmentProperty = "name" + // EnvironmentManagementPortalURL .. + EnvironmentManagementPortalURL EnvironmentProperty = "managementPortalURL" + // EnvironmentPublishSettingsURL ... + EnvironmentPublishSettingsURL EnvironmentProperty = "publishSettingsURL" + // EnvironmentServiceManagementEndpoint ... + EnvironmentServiceManagementEndpoint EnvironmentProperty = "serviceManagementEndpoint" + // EnvironmentResourceManagerEndpoint ... + EnvironmentResourceManagerEndpoint EnvironmentProperty = "resourceManagerEndpoint" + // EnvironmentActiveDirectoryEndpoint ... + EnvironmentActiveDirectoryEndpoint EnvironmentProperty = "activeDirectoryEndpoint" + // EnvironmentGalleryEndpoint ... + EnvironmentGalleryEndpoint EnvironmentProperty = "galleryEndpoint" + // EnvironmentKeyVaultEndpoint ... + EnvironmentKeyVaultEndpoint EnvironmentProperty = "keyVaultEndpoint" + // EnvironmentGraphEndpoint ... + EnvironmentGraphEndpoint EnvironmentProperty = "graphEndpoint" + // EnvironmentServiceBusEndpoint ... + EnvironmentServiceBusEndpoint EnvironmentProperty = "serviceBusEndpoint" + // EnvironmentBatchManagementEndpoint ... + EnvironmentBatchManagementEndpoint EnvironmentProperty = "batchManagementEndpoint" + // EnvironmentStorageEndpointSuffix ... + EnvironmentStorageEndpointSuffix EnvironmentProperty = "storageEndpointSuffix" + // EnvironmentSQLDatabaseDNSSuffix ... + EnvironmentSQLDatabaseDNSSuffix EnvironmentProperty = "sqlDatabaseDNSSuffix" + // EnvironmentTrafficManagerDNSSuffix ... + EnvironmentTrafficManagerDNSSuffix EnvironmentProperty = "trafficManagerDNSSuffix" + // EnvironmentKeyVaultDNSSuffix ... + EnvironmentKeyVaultDNSSuffix EnvironmentProperty = "keyVaultDNSSuffix" + // EnvironmentServiceBusEndpointSuffix ... + EnvironmentServiceBusEndpointSuffix EnvironmentProperty = "serviceBusEndpointSuffix" + // EnvironmentServiceManagementVMDNSSuffix ... + EnvironmentServiceManagementVMDNSSuffix EnvironmentProperty = "serviceManagementVMDNSSuffix" + // EnvironmentResourceManagerVMDNSSuffix ... + EnvironmentResourceManagerVMDNSSuffix EnvironmentProperty = "resourceManagerVMDNSSuffix" + // EnvironmentContainerRegistryDNSSuffix ... + EnvironmentContainerRegistryDNSSuffix EnvironmentProperty = "containerRegistryDNSSuffix" + // EnvironmentTokenAudience ... + EnvironmentTokenAudience EnvironmentProperty = "tokenAudience" +) + +// OverrideProperty represents property name and value that clients can override +type OverrideProperty struct { + Key EnvironmentProperty + Value string +} + +// EnvironmentFromURL loads an Environment from a URL +// This function is particularly useful in the Hybrid Cloud model, where one may define their own +// endpoints. +func EnvironmentFromURL(resourceManagerEndpoint string, properties ...OverrideProperty) (environment Environment, err error) { + var metadataEnvProperties environmentMetadataInfo + + if resourceManagerEndpoint == "" { + return environment, fmt.Errorf("Metadata resource manager endpoint is empty") + } + + if metadataEnvProperties, err = retrieveMetadataEnvironment(resourceManagerEndpoint); err != nil { + return environment, err + } + + // Give priority to user's override values + overrideProperties(&environment, properties) + + if environment.Name == "" { + environment.Name = "HybridEnvironment" + } + stampDNSSuffix := environment.StorageEndpointSuffix + if stampDNSSuffix == "" { + stampDNSSuffix = strings.TrimSuffix(strings.TrimPrefix(strings.Replace(resourceManagerEndpoint, strings.Split(resourceManagerEndpoint, ".")[0], "", 1), "."), "/") + environment.StorageEndpointSuffix = stampDNSSuffix + } + if environment.KeyVaultDNSSuffix == "" { + environment.KeyVaultDNSSuffix = fmt.Sprintf("%s.%s", "vault", stampDNSSuffix) + } + if environment.KeyVaultEndpoint == "" { + environment.KeyVaultEndpoint = fmt.Sprintf("%s%s", "https://", environment.KeyVaultDNSSuffix) + } + if environment.TokenAudience == "" { + environment.TokenAudience = metadataEnvProperties.Authentication.Audiences[0] + } + if environment.ActiveDirectoryEndpoint == "" { + environment.ActiveDirectoryEndpoint = metadataEnvProperties.Authentication.LoginEndpoint + } + if environment.ResourceManagerEndpoint == "" { + environment.ResourceManagerEndpoint = resourceManagerEndpoint + } + if environment.GalleryEndpoint == "" { + environment.GalleryEndpoint = metadataEnvProperties.GalleryEndpoint + } + if environment.GraphEndpoint == "" { + environment.GraphEndpoint = metadataEnvProperties.GraphEndpoint + } + + return environment, nil +} + +func overrideProperties(environment *Environment, properties []OverrideProperty) { + for _, property := range properties { + switch property.Key { + case EnvironmentName: + { + environment.Name = property.Value + } + case EnvironmentManagementPortalURL: + { + environment.ManagementPortalURL = property.Value + } + case EnvironmentPublishSettingsURL: + { + environment.PublishSettingsURL = property.Value + } + case EnvironmentServiceManagementEndpoint: + { + environment.ServiceManagementEndpoint = property.Value + } + case EnvironmentResourceManagerEndpoint: + { + environment.ResourceManagerEndpoint = property.Value + } + case EnvironmentActiveDirectoryEndpoint: + { + environment.ActiveDirectoryEndpoint = property.Value + } + case EnvironmentGalleryEndpoint: + { + environment.GalleryEndpoint = property.Value + } + case EnvironmentKeyVaultEndpoint: + { + environment.KeyVaultEndpoint = property.Value + } + case EnvironmentGraphEndpoint: + { + environment.GraphEndpoint = property.Value + } + case EnvironmentServiceBusEndpoint: + { + environment.ServiceBusEndpoint = property.Value + } + case EnvironmentBatchManagementEndpoint: + { + environment.BatchManagementEndpoint = property.Value + } + case EnvironmentStorageEndpointSuffix: + { + environment.StorageEndpointSuffix = property.Value + } + case EnvironmentSQLDatabaseDNSSuffix: + { + environment.SQLDatabaseDNSSuffix = property.Value + } + case EnvironmentTrafficManagerDNSSuffix: + { + environment.TrafficManagerDNSSuffix = property.Value + } + case EnvironmentKeyVaultDNSSuffix: + { + environment.KeyVaultDNSSuffix = property.Value + } + case EnvironmentServiceBusEndpointSuffix: + { + environment.ServiceBusEndpointSuffix = property.Value + } + case EnvironmentServiceManagementVMDNSSuffix: + { + environment.ServiceManagementVMDNSSuffix = property.Value + } + case EnvironmentResourceManagerVMDNSSuffix: + { + environment.ResourceManagerVMDNSSuffix = property.Value + } + case EnvironmentContainerRegistryDNSSuffix: + { + environment.ContainerRegistryDNSSuffix = property.Value + } + case EnvironmentTokenAudience: + { + environment.TokenAudience = property.Value + } + } + } +} + +func retrieveMetadataEnvironment(endpoint string) (environment environmentMetadataInfo, err error) { + client := autorest.NewClientWithUserAgent("") + managementEndpoint := fmt.Sprintf("%s%s", strings.TrimSuffix(endpoint, "/"), "/metadata/endpoints?api-version=1.0") + req, _ := http.NewRequest("GET", managementEndpoint, nil) + response, err := client.Do(req) + if err != nil { + return environment, err + } + defer response.Body.Close() + jsonResponse, err := ioutil.ReadAll(response.Body) + if err != nil { + return environment, err + } + err = json.Unmarshal(jsonResponse, &environment) + return environment, err +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/azure/rp.go b/vendor/github.com/Azure/go-autorest/autorest/azure/rp.go new file mode 100644 index 0000000..c6d39f6 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/azure/rp.go @@ -0,0 +1,204 @@ +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package azure + +import ( + "errors" + "fmt" + "net/http" + "net/url" + "strings" + "time" + + "github.com/Azure/go-autorest/autorest" +) + +// DoRetryWithRegistration tries to register the resource provider in case it is unregistered. +// It also handles request retries +func DoRetryWithRegistration(client autorest.Client) autorest.SendDecorator { + return func(s autorest.Sender) autorest.Sender { + return autorest.SenderFunc(func(r *http.Request) (resp *http.Response, err error) { + rr := autorest.NewRetriableRequest(r) + for currentAttempt := 0; currentAttempt < client.RetryAttempts; currentAttempt++ { + err = rr.Prepare() + if err != nil { + return resp, err + } + + resp, err = autorest.SendWithSender(s, rr.Request(), + autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...), + ) + if err != nil { + return resp, err + } + + if resp.StatusCode != http.StatusConflict || client.SkipResourceProviderRegistration { + return resp, err + } + + var re RequestError + if strings.Contains(r.Header.Get("Content-Type"), "xml") { + // XML errors (e.g. Storage Data Plane) only return the inner object + err = autorest.Respond(resp, autorest.ByUnmarshallingXML(&re.ServiceError)) + } else { + err = autorest.Respond(resp, autorest.ByUnmarshallingJSON(&re)) + } + + if err != nil { + return resp, err + } + err = re + + if re.ServiceError != nil && re.ServiceError.Code == "MissingSubscriptionRegistration" { + regErr := register(client, r, re) + if regErr != nil { + return resp, fmt.Errorf("failed auto registering Resource Provider: %s. Original error: %s", regErr, err) + } + } + } + return resp, err + }) + } +} + +func getProvider(re RequestError) (string, error) { + if re.ServiceError != nil && len(re.ServiceError.Details) > 0 { + return re.ServiceError.Details[0]["target"].(string), nil + } + return "", errors.New("provider was not found in the response") +} + +func register(client autorest.Client, originalReq *http.Request, re RequestError) error { + subID := getSubscription(originalReq.URL.Path) + if subID == "" { + return errors.New("missing parameter subscriptionID to register resource provider") + } + providerName, err := getProvider(re) + if err != nil { + return fmt.Errorf("missing parameter provider to register resource provider: %s", err) + } + newURL := url.URL{ + Scheme: originalReq.URL.Scheme, + Host: originalReq.URL.Host, + } + + // taken from the resources SDK + // with almost identical code, this sections are easier to mantain + // It is also not a good idea to import the SDK here + // https://github.com/Azure/azure-sdk-for-go/blob/9f366792afa3e0ddaecdc860e793ba9d75e76c27/arm/resources/resources/providers.go#L252 + pathParameters := map[string]interface{}{ + "resourceProviderNamespace": autorest.Encode("path", providerName), + "subscriptionId": autorest.Encode("path", subID), + } + + const APIVersion = "2016-09-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(newURL.String()), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/register", pathParameters), + autorest.WithQueryParameters(queryParameters), + ) + + req, err := preparer.Prepare(&http.Request{}) + if err != nil { + return err + } + req = req.WithContext(originalReq.Context()) + + resp, err := autorest.SendWithSender(client, req, + autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...), + ) + if err != nil { + return err + } + + type Provider struct { + RegistrationState *string `json:"registrationState,omitempty"` + } + var provider Provider + + err = autorest.Respond( + resp, + WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&provider), + autorest.ByClosing(), + ) + if err != nil { + return err + } + + // poll for registered provisioning state + registrationStartTime := time.Now() + for err == nil && (client.PollingDuration == 0 || (client.PollingDuration != 0 && time.Since(registrationStartTime) < client.PollingDuration)) { + // taken from the resources SDK + // https://github.com/Azure/azure-sdk-for-go/blob/9f366792afa3e0ddaecdc860e793ba9d75e76c27/arm/resources/resources/providers.go#L45 + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(newURL.String()), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}", pathParameters), + autorest.WithQueryParameters(queryParameters), + ) + req, err = preparer.Prepare(&http.Request{}) + if err != nil { + return err + } + req = req.WithContext(originalReq.Context()) + + resp, err := autorest.SendWithSender(client, req, + autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...), + ) + if err != nil { + return err + } + + err = autorest.Respond( + resp, + WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&provider), + autorest.ByClosing(), + ) + if err != nil { + return err + } + + if provider.RegistrationState != nil && + *provider.RegistrationState == "Registered" { + break + } + + delayed := autorest.DelayWithRetryAfter(resp, originalReq.Context().Done()) + if !delayed && !autorest.DelayForBackoff(client.PollingDelay, 0, originalReq.Context().Done()) { + return originalReq.Context().Err() + } + } + if client.PollingDuration != 0 && !(time.Since(registrationStartTime) < client.PollingDuration) { + return errors.New("polling for resource provider registration has exceeded the polling duration") + } + return err +} + +func getSubscription(path string) string { + parts := strings.Split(path, "/") + for i, v := range parts { + if v == "subscriptions" && (i+1) < len(parts) { + return parts[i+1] + } + } + return "" +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/client.go b/vendor/github.com/Azure/go-autorest/autorest/client.go new file mode 100644 index 0000000..e04f9fd --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/client.go @@ -0,0 +1,323 @@ +package autorest + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "bytes" + "crypto/tls" + "fmt" + "io" + "io/ioutil" + "log" + "net/http" + "strings" + "time" + + "github.com/Azure/go-autorest/logger" +) + +const ( + // DefaultPollingDelay is a reasonable delay between polling requests. + DefaultPollingDelay = 60 * time.Second + + // DefaultPollingDuration is a reasonable total polling duration. + DefaultPollingDuration = 15 * time.Minute + + // DefaultRetryAttempts is number of attempts for retry status codes (5xx). + DefaultRetryAttempts = 3 + + // DefaultRetryDuration is the duration to wait between retries. + DefaultRetryDuration = 30 * time.Second +) + +var ( + // StatusCodesForRetry are a defined group of status code for which the client will retry + StatusCodesForRetry = []int{ + http.StatusRequestTimeout, // 408 + http.StatusTooManyRequests, // 429 + http.StatusInternalServerError, // 500 + http.StatusBadGateway, // 502 + http.StatusServiceUnavailable, // 503 + http.StatusGatewayTimeout, // 504 + } +) + +const ( + requestFormat = `HTTP Request Begin =================================================== +%s +===================================================== HTTP Request End +` + responseFormat = `HTTP Response Begin =================================================== +%s +===================================================== HTTP Response End +` +) + +// Response serves as the base for all responses from generated clients. It provides access to the +// last http.Response. +type Response struct { + *http.Response `json:"-"` +} + +// IsHTTPStatus returns true if the returned HTTP status code matches the provided status code. +// If there was no response (i.e. the underlying http.Response is nil) the return value is false. +func (r Response) IsHTTPStatus(statusCode int) bool { + if r.Response == nil { + return false + } + return r.Response.StatusCode == statusCode +} + +// HasHTTPStatus returns true if the returned HTTP status code matches one of the provided status codes. +// If there was no response (i.e. the underlying http.Response is nil) or not status codes are provided +// the return value is false. +func (r Response) HasHTTPStatus(statusCodes ...int) bool { + return ResponseHasStatusCode(r.Response, statusCodes...) +} + +// LoggingInspector implements request and response inspectors that log the full request and +// response to a supplied log. +type LoggingInspector struct { + Logger *log.Logger +} + +// WithInspection returns a PrepareDecorator that emits the http.Request to the supplied logger. The +// body is restored after being emitted. +// +// Note: Since it reads the entire Body, this decorator should not be used where body streaming is +// important. It is best used to trace JSON or similar body values. +func (li LoggingInspector) WithInspection() PrepareDecorator { + return func(p Preparer) Preparer { + return PreparerFunc(func(r *http.Request) (*http.Request, error) { + var body, b bytes.Buffer + + defer r.Body.Close() + + r.Body = ioutil.NopCloser(io.TeeReader(r.Body, &body)) + if err := r.Write(&b); err != nil { + return nil, fmt.Errorf("Failed to write response: %v", err) + } + + li.Logger.Printf(requestFormat, b.String()) + + r.Body = ioutil.NopCloser(&body) + return p.Prepare(r) + }) + } +} + +// ByInspecting returns a RespondDecorator that emits the http.Response to the supplied logger. The +// body is restored after being emitted. +// +// Note: Since it reads the entire Body, this decorator should not be used where body streaming is +// important. It is best used to trace JSON or similar body values. +func (li LoggingInspector) ByInspecting() RespondDecorator { + return func(r Responder) Responder { + return ResponderFunc(func(resp *http.Response) error { + var body, b bytes.Buffer + defer resp.Body.Close() + resp.Body = ioutil.NopCloser(io.TeeReader(resp.Body, &body)) + if err := resp.Write(&b); err != nil { + return fmt.Errorf("Failed to write response: %v", err) + } + + li.Logger.Printf(responseFormat, b.String()) + + resp.Body = ioutil.NopCloser(&body) + return r.Respond(resp) + }) + } +} + +// Client is the base for autorest generated clients. It provides default, "do nothing" +// implementations of an Authorizer, RequestInspector, and ResponseInspector. It also returns the +// standard, undecorated http.Client as a default Sender. +// +// Generated clients should also use Error (see NewError and NewErrorWithError) for errors and +// return responses that compose with Response. +// +// Most customization of generated clients is best achieved by supplying a custom Authorizer, custom +// RequestInspector, and / or custom ResponseInspector. Users may log requests, implement circuit +// breakers (see https://msdn.microsoft.com/en-us/library/dn589784.aspx) or otherwise influence +// sending the request by providing a decorated Sender. +type Client struct { + Authorizer Authorizer + Sender Sender + RequestInspector PrepareDecorator + ResponseInspector RespondDecorator + + // PollingDelay sets the polling frequency used in absence of a Retry-After HTTP header + PollingDelay time.Duration + + // PollingDuration sets the maximum polling time after which an error is returned. + // Setting this to zero will use the provided context to control the duration. + PollingDuration time.Duration + + // RetryAttempts sets the default number of retry attempts for client. + RetryAttempts int + + // RetryDuration sets the delay duration for retries. + RetryDuration time.Duration + + // UserAgent, if not empty, will be set as the HTTP User-Agent header on all requests sent + // through the Do method. + UserAgent string + + Jar http.CookieJar + + // Set to true to skip attempted registration of resource providers (false by default). + SkipResourceProviderRegistration bool + + // SendDecorators can be used to override the default chain of SendDecorators. + // This can be used to specify things like a custom retry SendDecorator. + // Set this to an empty slice to use no SendDecorators. + SendDecorators []SendDecorator +} + +// NewClientWithUserAgent returns an instance of a Client with the UserAgent set to the passed +// string. +func NewClientWithUserAgent(ua string) Client { + return newClient(ua, tls.RenegotiateNever) +} + +// ClientOptions contains various Client configuration options. +type ClientOptions struct { + // UserAgent is an optional user-agent string to append to the default user agent. + UserAgent string + + // Renegotiation is an optional setting to control client-side TLS renegotiation. + Renegotiation tls.RenegotiationSupport +} + +// NewClientWithOptions returns an instance of a Client with the specified values. +func NewClientWithOptions(options ClientOptions) Client { + return newClient(options.UserAgent, options.Renegotiation) +} + +func newClient(ua string, renegotiation tls.RenegotiationSupport) Client { + c := Client{ + PollingDelay: DefaultPollingDelay, + PollingDuration: DefaultPollingDuration, + RetryAttempts: DefaultRetryAttempts, + RetryDuration: DefaultRetryDuration, + UserAgent: UserAgent(), + } + c.Sender = c.sender(renegotiation) + c.AddToUserAgent(ua) + return c +} + +// AddToUserAgent adds an extension to the current user agent +func (c *Client) AddToUserAgent(extension string) error { + if extension != "" { + c.UserAgent = fmt.Sprintf("%s %s", c.UserAgent, extension) + return nil + } + return fmt.Errorf("Extension was empty, User Agent stayed as %s", c.UserAgent) +} + +// Do implements the Sender interface by invoking the active Sender after applying authorization. +// If Sender is not set, it uses a new instance of http.Client. In both cases it will, if UserAgent +// is set, apply set the User-Agent header. +func (c Client) Do(r *http.Request) (*http.Response, error) { + if r.UserAgent() == "" { + r, _ = Prepare(r, + WithUserAgent(c.UserAgent)) + } + // NOTE: c.WithInspection() must be last in the list so that it can inspect all preceding operations + r, err := Prepare(r, + c.WithAuthorization(), + c.WithInspection()) + if err != nil { + var resp *http.Response + if detErr, ok := err.(DetailedError); ok { + // if the authorization failed (e.g. invalid credentials) there will + // be a response associated with the error, be sure to return it. + resp = detErr.Response + } + return resp, NewErrorWithError(err, "autorest/Client", "Do", nil, "Preparing request failed") + } + logger.Instance.WriteRequest(r, logger.Filter{ + Header: func(k string, v []string) (bool, []string) { + // remove the auth token from the log + if strings.EqualFold(k, "Authorization") || strings.EqualFold(k, "Ocp-Apim-Subscription-Key") { + v = []string{"**REDACTED**"} + } + return true, v + }, + }) + resp, err := SendWithSender(c.sender(tls.RenegotiateNever), r) + logger.Instance.WriteResponse(resp, logger.Filter{}) + Respond(resp, c.ByInspecting()) + return resp, err +} + +// sender returns the Sender to which to send requests. +func (c Client) sender(renengotiation tls.RenegotiationSupport) Sender { + if c.Sender == nil { + return sender(renengotiation) + } + return c.Sender +} + +// WithAuthorization is a convenience method that returns the WithAuthorization PrepareDecorator +// from the current Authorizer. If not Authorizer is set, it uses the NullAuthorizer. +func (c Client) WithAuthorization() PrepareDecorator { + return c.authorizer().WithAuthorization() +} + +// authorizer returns the Authorizer to use. +func (c Client) authorizer() Authorizer { + if c.Authorizer == nil { + return NullAuthorizer{} + } + return c.Authorizer +} + +// WithInspection is a convenience method that passes the request to the supplied RequestInspector, +// if present, or returns the WithNothing PrepareDecorator otherwise. +func (c Client) WithInspection() PrepareDecorator { + if c.RequestInspector == nil { + return WithNothing() + } + return c.RequestInspector +} + +// ByInspecting is a convenience method that passes the response to the supplied ResponseInspector, +// if present, or returns the ByIgnoring RespondDecorator otherwise. +func (c Client) ByInspecting() RespondDecorator { + if c.ResponseInspector == nil { + return ByIgnoring() + } + return c.ResponseInspector +} + +// Send sends the provided http.Request using the client's Sender or the default sender. +// It returns the http.Response and possible error. It also accepts a, possibly empty, +// default set of SendDecorators used when sending the request. +// SendDecorators have the following precedence: +// 1. In a request's context via WithSendDecorators() +// 2. Specified on the client in SendDecorators +// 3. The default values specified in this method +func (c Client) Send(req *http.Request, decorators ...SendDecorator) (*http.Response, error) { + if c.SendDecorators != nil { + decorators = c.SendDecorators + } + inCtx := req.Context().Value(ctxSendDecorators{}) + if sd, ok := inCtx.([]SendDecorator); ok { + decorators = sd + } + return SendWithSender(c, req, decorators...) +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/date/LICENSE b/vendor/github.com/Azure/go-autorest/autorest/date/LICENSE new file mode 100644 index 0000000..b9d6a27 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/date/LICENSE @@ -0,0 +1,191 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2015 Microsoft Corporation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/Azure/go-autorest/autorest/date/date.go b/vendor/github.com/Azure/go-autorest/autorest/date/date.go new file mode 100644 index 0000000..c457106 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/date/date.go @@ -0,0 +1,96 @@ +/* +Package date provides time.Time derivatives that conform to the Swagger.io (https://swagger.io/) +defined date formats: Date and DateTime. Both types may, in most cases, be used in lieu of +time.Time types. And both convert to time.Time through a ToTime method. +*/ +package date + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "fmt" + "time" +) + +const ( + fullDate = "2006-01-02" + fullDateJSON = `"2006-01-02"` + dateFormat = "%04d-%02d-%02d" + jsonFormat = `"%04d-%02d-%02d"` +) + +// Date defines a type similar to time.Time but assumes a layout of RFC3339 full-date (i.e., +// 2006-01-02). +type Date struct { + time.Time +} + +// ParseDate create a new Date from the passed string. +func ParseDate(date string) (d Date, err error) { + return parseDate(date, fullDate) +} + +func parseDate(date string, format string) (Date, error) { + d, err := time.Parse(format, date) + return Date{Time: d}, err +} + +// MarshalBinary preserves the Date as a byte array conforming to RFC3339 full-date (i.e., +// 2006-01-02). +func (d Date) MarshalBinary() ([]byte, error) { + return d.MarshalText() +} + +// UnmarshalBinary reconstitutes a Date saved as a byte array conforming to RFC3339 full-date (i.e., +// 2006-01-02). +func (d *Date) UnmarshalBinary(data []byte) error { + return d.UnmarshalText(data) +} + +// MarshalJSON preserves the Date as a JSON string conforming to RFC3339 full-date (i.e., +// 2006-01-02). +func (d Date) MarshalJSON() (json []byte, err error) { + return []byte(fmt.Sprintf(jsonFormat, d.Year(), d.Month(), d.Day())), nil +} + +// UnmarshalJSON reconstitutes the Date from a JSON string conforming to RFC3339 full-date (i.e., +// 2006-01-02). +func (d *Date) UnmarshalJSON(data []byte) (err error) { + d.Time, err = time.Parse(fullDateJSON, string(data)) + return err +} + +// MarshalText preserves the Date as a byte array conforming to RFC3339 full-date (i.e., +// 2006-01-02). +func (d Date) MarshalText() (text []byte, err error) { + return []byte(fmt.Sprintf(dateFormat, d.Year(), d.Month(), d.Day())), nil +} + +// UnmarshalText reconstitutes a Date saved as a byte array conforming to RFC3339 full-date (i.e., +// 2006-01-02). +func (d *Date) UnmarshalText(data []byte) (err error) { + d.Time, err = time.Parse(fullDate, string(data)) + return err +} + +// String returns the Date formatted as an RFC3339 full-date string (i.e., 2006-01-02). +func (d Date) String() string { + return fmt.Sprintf(dateFormat, d.Year(), d.Month(), d.Day()) +} + +// ToTime returns a Date as a time.Time +func (d Date) ToTime() time.Time { + return d.Time +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/date/go.mod b/vendor/github.com/Azure/go-autorest/autorest/date/go.mod new file mode 100644 index 0000000..3adc480 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/date/go.mod @@ -0,0 +1,5 @@ +module github.com/Azure/go-autorest/autorest/date + +go 1.12 + +require github.com/Azure/go-autorest/autorest v0.9.0 diff --git a/vendor/github.com/Azure/go-autorest/autorest/date/go.sum b/vendor/github.com/Azure/go-autorest/autorest/date/go.sum new file mode 100644 index 0000000..9e2ee7a --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/date/go.sum @@ -0,0 +1,16 @@ +github.com/Azure/go-autorest/autorest v0.9.0 h1:MRvx8gncNaXJqOoLmhNjUAKh33JJF8LyxPhomEtOsjs= +github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest/adal v0.5.0 h1:q2gDruN08/guU9vAjuPWff0+QIrpH6ediguzdAzXAUU= +github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0 h1:Ww5g4zThfD/6cLb4z6xxgeyDa7QDkizMkJKe0ysZXp0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/logger v0.1.0 h1:ruG4BSDXONFRrZZJ2GUXDiUyVpayPmb1GnWeHDdaNKY= +github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/tracing v0.5.0 h1:TRn4WjSnkcSy5AEG3pnbtFSwNtwzjr4VYyQflFE619k= +github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= diff --git a/vendor/github.com/Azure/go-autorest/autorest/date/go_mod_tidy_hack.go b/vendor/github.com/Azure/go-autorest/autorest/date/go_mod_tidy_hack.go new file mode 100644 index 0000000..55adf93 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/date/go_mod_tidy_hack.go @@ -0,0 +1,24 @@ +// +build modhack + +package date + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This file, and the github.com/Azure/go-autorest/autorest import, won't actually become part of +// the resultant binary. + +// Necessary for safely adding multi-module repo. +// See: https://github.com/golang/go/wiki/Modules#is-it-possible-to-add-a-module-to-a-multi-module-repository +import _ "github.com/Azure/go-autorest/autorest" diff --git a/vendor/github.com/Azure/go-autorest/autorest/date/time.go b/vendor/github.com/Azure/go-autorest/autorest/date/time.go new file mode 100644 index 0000000..b453fad --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/date/time.go @@ -0,0 +1,103 @@ +package date + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "regexp" + "time" +) + +// Azure reports time in UTC but it doesn't include the 'Z' time zone suffix in some cases. +const ( + azureUtcFormatJSON = `"2006-01-02T15:04:05.999999999"` + azureUtcFormat = "2006-01-02T15:04:05.999999999" + rfc3339JSON = `"` + time.RFC3339Nano + `"` + rfc3339 = time.RFC3339Nano + tzOffsetRegex = `(Z|z|\+|-)(\d+:\d+)*"*$` +) + +// Time defines a type similar to time.Time but assumes a layout of RFC3339 date-time (i.e., +// 2006-01-02T15:04:05Z). +type Time struct { + time.Time +} + +// MarshalBinary preserves the Time as a byte array conforming to RFC3339 date-time (i.e., +// 2006-01-02T15:04:05Z). +func (t Time) MarshalBinary() ([]byte, error) { + return t.Time.MarshalText() +} + +// UnmarshalBinary reconstitutes a Time saved as a byte array conforming to RFC3339 date-time +// (i.e., 2006-01-02T15:04:05Z). +func (t *Time) UnmarshalBinary(data []byte) error { + return t.UnmarshalText(data) +} + +// MarshalJSON preserves the Time as a JSON string conforming to RFC3339 date-time (i.e., +// 2006-01-02T15:04:05Z). +func (t Time) MarshalJSON() (json []byte, err error) { + return t.Time.MarshalJSON() +} + +// UnmarshalJSON reconstitutes the Time from a JSON string conforming to RFC3339 date-time +// (i.e., 2006-01-02T15:04:05Z). +func (t *Time) UnmarshalJSON(data []byte) (err error) { + timeFormat := azureUtcFormatJSON + match, err := regexp.Match(tzOffsetRegex, data) + if err != nil { + return err + } else if match { + timeFormat = rfc3339JSON + } + t.Time, err = ParseTime(timeFormat, string(data)) + return err +} + +// MarshalText preserves the Time as a byte array conforming to RFC3339 date-time (i.e., +// 2006-01-02T15:04:05Z). +func (t Time) MarshalText() (text []byte, err error) { + return t.Time.MarshalText() +} + +// UnmarshalText reconstitutes a Time saved as a byte array conforming to RFC3339 date-time +// (i.e., 2006-01-02T15:04:05Z). +func (t *Time) UnmarshalText(data []byte) (err error) { + timeFormat := azureUtcFormat + match, err := regexp.Match(tzOffsetRegex, data) + if err != nil { + return err + } else if match { + timeFormat = rfc3339 + } + t.Time, err = ParseTime(timeFormat, string(data)) + return err +} + +// String returns the Time formatted as an RFC3339 date-time string (i.e., +// 2006-01-02T15:04:05Z). +func (t Time) String() string { + // Note: time.Time.String does not return an RFC3339 compliant string, time.Time.MarshalText does. + b, err := t.MarshalText() + if err != nil { + return "" + } + return string(b) +} + +// ToTime returns a Time as a time.Time +func (t Time) ToTime() time.Time { + return t.Time +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/date/timerfc1123.go b/vendor/github.com/Azure/go-autorest/autorest/date/timerfc1123.go new file mode 100644 index 0000000..48fb39b --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/date/timerfc1123.go @@ -0,0 +1,100 @@ +package date + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "errors" + "time" +) + +const ( + rfc1123JSON = `"` + time.RFC1123 + `"` + rfc1123 = time.RFC1123 +) + +// TimeRFC1123 defines a type similar to time.Time but assumes a layout of RFC1123 date-time (i.e., +// Mon, 02 Jan 2006 15:04:05 MST). +type TimeRFC1123 struct { + time.Time +} + +// UnmarshalJSON reconstitutes the Time from a JSON string conforming to RFC1123 date-time +// (i.e., Mon, 02 Jan 2006 15:04:05 MST). +func (t *TimeRFC1123) UnmarshalJSON(data []byte) (err error) { + t.Time, err = ParseTime(rfc1123JSON, string(data)) + if err != nil { + return err + } + return nil +} + +// MarshalJSON preserves the Time as a JSON string conforming to RFC1123 date-time (i.e., +// Mon, 02 Jan 2006 15:04:05 MST). +func (t TimeRFC1123) MarshalJSON() ([]byte, error) { + if y := t.Year(); y < 0 || y >= 10000 { + return nil, errors.New("Time.MarshalJSON: year outside of range [0,9999]") + } + b := []byte(t.Format(rfc1123JSON)) + return b, nil +} + +// MarshalText preserves the Time as a byte array conforming to RFC1123 date-time (i.e., +// Mon, 02 Jan 2006 15:04:05 MST). +func (t TimeRFC1123) MarshalText() ([]byte, error) { + if y := t.Year(); y < 0 || y >= 10000 { + return nil, errors.New("Time.MarshalText: year outside of range [0,9999]") + } + + b := []byte(t.Format(rfc1123)) + return b, nil +} + +// UnmarshalText reconstitutes a Time saved as a byte array conforming to RFC1123 date-time +// (i.e., Mon, 02 Jan 2006 15:04:05 MST). +func (t *TimeRFC1123) UnmarshalText(data []byte) (err error) { + t.Time, err = ParseTime(rfc1123, string(data)) + if err != nil { + return err + } + return nil +} + +// MarshalBinary preserves the Time as a byte array conforming to RFC1123 date-time (i.e., +// Mon, 02 Jan 2006 15:04:05 MST). +func (t TimeRFC1123) MarshalBinary() ([]byte, error) { + return t.MarshalText() +} + +// UnmarshalBinary reconstitutes a Time saved as a byte array conforming to RFC1123 date-time +// (i.e., Mon, 02 Jan 2006 15:04:05 MST). +func (t *TimeRFC1123) UnmarshalBinary(data []byte) error { + return t.UnmarshalText(data) +} + +// ToTime returns a Time as a time.Time +func (t TimeRFC1123) ToTime() time.Time { + return t.Time +} + +// String returns the Time formatted as an RFC1123 date-time string (i.e., +// Mon, 02 Jan 2006 15:04:05 MST). +func (t TimeRFC1123) String() string { + // Note: time.Time.String does not return an RFC1123 compliant string, time.Time.MarshalText does. + b, err := t.MarshalText() + if err != nil { + return "" + } + return string(b) +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/date/unixtime.go b/vendor/github.com/Azure/go-autorest/autorest/date/unixtime.go new file mode 100644 index 0000000..7073959 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/date/unixtime.go @@ -0,0 +1,123 @@ +package date + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "bytes" + "encoding/binary" + "encoding/json" + "time" +) + +// unixEpoch is the moment in time that should be treated as timestamp 0. +var unixEpoch = time.Date(1970, time.January, 1, 0, 0, 0, 0, time.UTC) + +// UnixTime marshals and unmarshals a time that is represented as the number +// of seconds (ignoring skip-seconds) since the Unix Epoch. +type UnixTime time.Time + +// Duration returns the time as a Duration since the UnixEpoch. +func (t UnixTime) Duration() time.Duration { + return time.Time(t).Sub(unixEpoch) +} + +// NewUnixTimeFromSeconds creates a UnixTime as a number of seconds from the UnixEpoch. +func NewUnixTimeFromSeconds(seconds float64) UnixTime { + return NewUnixTimeFromDuration(time.Duration(seconds * float64(time.Second))) +} + +// NewUnixTimeFromNanoseconds creates a UnixTime as a number of nanoseconds from the UnixEpoch. +func NewUnixTimeFromNanoseconds(nanoseconds int64) UnixTime { + return NewUnixTimeFromDuration(time.Duration(nanoseconds)) +} + +// NewUnixTimeFromDuration creates a UnixTime as a duration of time since the UnixEpoch. +func NewUnixTimeFromDuration(dur time.Duration) UnixTime { + return UnixTime(unixEpoch.Add(dur)) +} + +// UnixEpoch retreives the moment considered the Unix Epoch. I.e. The time represented by '0' +func UnixEpoch() time.Time { + return unixEpoch +} + +// MarshalJSON preserves the UnixTime as a JSON number conforming to Unix Timestamp requirements. +// (i.e. the number of seconds since midnight January 1st, 1970 not considering leap seconds.) +func (t UnixTime) MarshalJSON() ([]byte, error) { + buffer := &bytes.Buffer{} + enc := json.NewEncoder(buffer) + err := enc.Encode(float64(time.Time(t).UnixNano()) / 1e9) + if err != nil { + return nil, err + } + return buffer.Bytes(), nil +} + +// UnmarshalJSON reconstitures a UnixTime saved as a JSON number of the number of seconds since +// midnight January 1st, 1970. +func (t *UnixTime) UnmarshalJSON(text []byte) error { + dec := json.NewDecoder(bytes.NewReader(text)) + + var secondsSinceEpoch float64 + if err := dec.Decode(&secondsSinceEpoch); err != nil { + return err + } + + *t = NewUnixTimeFromSeconds(secondsSinceEpoch) + + return nil +} + +// MarshalText stores the number of seconds since the Unix Epoch as a textual floating point number. +func (t UnixTime) MarshalText() ([]byte, error) { + cast := time.Time(t) + return cast.MarshalText() +} + +// UnmarshalText populates a UnixTime with a value stored textually as a floating point number of seconds since the Unix Epoch. +func (t *UnixTime) UnmarshalText(raw []byte) error { + var unmarshaled time.Time + + if err := unmarshaled.UnmarshalText(raw); err != nil { + return err + } + + *t = UnixTime(unmarshaled) + return nil +} + +// MarshalBinary converts a UnixTime into a binary.LittleEndian float64 of nanoseconds since the epoch. +func (t UnixTime) MarshalBinary() ([]byte, error) { + buf := &bytes.Buffer{} + + payload := int64(t.Duration()) + + if err := binary.Write(buf, binary.LittleEndian, &payload); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +// UnmarshalBinary converts a from a binary.LittleEndian float64 of nanoseconds since the epoch into a UnixTime. +func (t *UnixTime) UnmarshalBinary(raw []byte) error { + var nanosecondsSinceEpoch int64 + + if err := binary.Read(bytes.NewReader(raw), binary.LittleEndian, &nanosecondsSinceEpoch); err != nil { + return err + } + *t = NewUnixTimeFromNanoseconds(nanosecondsSinceEpoch) + return nil +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/date/utility.go b/vendor/github.com/Azure/go-autorest/autorest/date/utility.go new file mode 100644 index 0000000..12addf0 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/date/utility.go @@ -0,0 +1,25 @@ +package date + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "strings" + "time" +) + +// ParseTime to parse Time string to specified format. +func ParseTime(format string, t string) (d time.Time, err error) { + return time.Parse(format, strings.ToUpper(t)) +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/error.go b/vendor/github.com/Azure/go-autorest/autorest/error.go new file mode 100644 index 0000000..f724f33 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/error.go @@ -0,0 +1,98 @@ +package autorest + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "fmt" + "net/http" +) + +const ( + // UndefinedStatusCode is used when HTTP status code is not available for an error. + UndefinedStatusCode = 0 +) + +// DetailedError encloses a error with details of the package, method, and associated HTTP +// status code (if any). +type DetailedError struct { + Original error + + // PackageType is the package type of the object emitting the error. For types, the value + // matches that produced the the '%T' format specifier of the fmt package. For other elements, + // such as functions, it is just the package name (e.g., "autorest"). + PackageType string + + // Method is the name of the method raising the error. + Method string + + // StatusCode is the HTTP Response StatusCode (if non-zero) that led to the error. + StatusCode interface{} + + // Message is the error message. + Message string + + // Service Error is the response body of failed API in bytes + ServiceError []byte + + // Response is the response object that was returned during failure if applicable. + Response *http.Response +} + +// NewError creates a new Error conforming object from the passed packageType, method, and +// message. message is treated as a format string to which the optional args apply. +func NewError(packageType string, method string, message string, args ...interface{}) DetailedError { + return NewErrorWithError(nil, packageType, method, nil, message, args...) +} + +// NewErrorWithResponse creates a new Error conforming object from the passed +// packageType, method, statusCode of the given resp (UndefinedStatusCode if +// resp is nil), and message. message is treated as a format string to which the +// optional args apply. +func NewErrorWithResponse(packageType string, method string, resp *http.Response, message string, args ...interface{}) DetailedError { + return NewErrorWithError(nil, packageType, method, resp, message, args...) +} + +// NewErrorWithError creates a new Error conforming object from the +// passed packageType, method, statusCode of the given resp (UndefinedStatusCode +// if resp is nil), message, and original error. message is treated as a format +// string to which the optional args apply. +func NewErrorWithError(original error, packageType string, method string, resp *http.Response, message string, args ...interface{}) DetailedError { + if v, ok := original.(DetailedError); ok { + return v + } + + statusCode := UndefinedStatusCode + if resp != nil { + statusCode = resp.StatusCode + } + + return DetailedError{ + Original: original, + PackageType: packageType, + Method: method, + StatusCode: statusCode, + Message: fmt.Sprintf(message, args...), + Response: resp, + } +} + +// Error returns a formatted containing all available details (i.e., PackageType, Method, +// StatusCode, Message, and original error (if any)). +func (e DetailedError) Error() string { + if e.Original == nil { + return fmt.Sprintf("%s#%s: %s: StatusCode=%d", e.PackageType, e.Method, e.Message, e.StatusCode) + } + return fmt.Sprintf("%s#%s: %s: StatusCode=%d -- Original Error: %v", e.PackageType, e.Method, e.Message, e.StatusCode, e.Original) +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/go.mod b/vendor/github.com/Azure/go-autorest/autorest/go.mod new file mode 100644 index 0000000..499c56d --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/go.mod @@ -0,0 +1,11 @@ +module github.com/Azure/go-autorest/autorest + +go 1.12 + +require ( + github.com/Azure/go-autorest/autorest/adal v0.8.2 + github.com/Azure/go-autorest/autorest/mocks v0.3.0 + github.com/Azure/go-autorest/logger v0.1.0 + github.com/Azure/go-autorest/tracing v0.5.0 + golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413 +) diff --git a/vendor/github.com/Azure/go-autorest/autorest/go.sum b/vendor/github.com/Azure/go-autorest/autorest/go.sum new file mode 100644 index 0000000..37398d1 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/go.sum @@ -0,0 +1,30 @@ +github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest/adal v0.5.0 h1:q2gDruN08/guU9vAjuPWff0+QIrpH6ediguzdAzXAUU= +github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/adal v0.8.2 h1:O1X4oexUxnZCaEUGsvMnr8ZGj8HI37tNezwY4npRqA0= +github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= +github.com/Azure/go-autorest/autorest/date v0.1.0 h1:YGrhWfrgtFs84+h0o46rJrlmsZtyZRg470CqAXTZaGM= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/date v0.2.0 h1:yW+Zlqf26583pE43KhfnhFcdmSWlm5Ew6bxipnr/tbM= +github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= +github.com/Azure/go-autorest/autorest/mocks v0.1.0 h1:Kx+AUU2Te+A3JIyYn6Dfs+cFgx5XorQKuIXrZGoq/SI= +github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0 h1:Ww5g4zThfD/6cLb4z6xxgeyDa7QDkizMkJKe0ysZXp0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.3.0 h1:qJumjCaCudz+OcqE9/XtEPfvtOjOmKaui4EOpFI6zZc= +github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= +github.com/Azure/go-autorest/logger v0.1.0 h1:ruG4BSDXONFRrZZJ2GUXDiUyVpayPmb1GnWeHDdaNKY= +github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/tracing v0.5.0 h1:TRn4WjSnkcSy5AEG3pnbtFSwNtwzjr4VYyQflFE619k= +github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413 h1:ULYEB3JvPRE/IfO+9uO7vKV/xzVTO7XPAwm8xbf4w2g= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/vendor/github.com/Azure/go-autorest/autorest/preparer.go b/vendor/github.com/Azure/go-autorest/autorest/preparer.go new file mode 100644 index 0000000..6e8ed64 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/preparer.go @@ -0,0 +1,550 @@ +package autorest + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "bytes" + "context" + "encoding/json" + "encoding/xml" + "fmt" + "io" + "io/ioutil" + "mime/multipart" + "net/http" + "net/url" + "strings" +) + +const ( + mimeTypeJSON = "application/json" + mimeTypeOctetStream = "application/octet-stream" + mimeTypeFormPost = "application/x-www-form-urlencoded" + + headerAuthorization = "Authorization" + headerAuxAuthorization = "x-ms-authorization-auxiliary" + headerContentType = "Content-Type" + headerUserAgent = "User-Agent" +) + +// used as a key type in context.WithValue() +type ctxPrepareDecorators struct{} + +// WithPrepareDecorators adds the specified PrepareDecorators to the provided context. +// If no PrepareDecorators are provided the context is unchanged. +func WithPrepareDecorators(ctx context.Context, prepareDecorator []PrepareDecorator) context.Context { + if len(prepareDecorator) == 0 { + return ctx + } + return context.WithValue(ctx, ctxPrepareDecorators{}, prepareDecorator) +} + +// GetPrepareDecorators returns the PrepareDecorators in the provided context or the provided default PrepareDecorators. +func GetPrepareDecorators(ctx context.Context, defaultPrepareDecorators ...PrepareDecorator) []PrepareDecorator { + inCtx := ctx.Value(ctxPrepareDecorators{}) + if pd, ok := inCtx.([]PrepareDecorator); ok { + return pd + } + return defaultPrepareDecorators +} + +// Preparer is the interface that wraps the Prepare method. +// +// Prepare accepts and possibly modifies an http.Request (e.g., adding Headers). Implementations +// must ensure to not share or hold per-invocation state since Preparers may be shared and re-used. +type Preparer interface { + Prepare(*http.Request) (*http.Request, error) +} + +// PreparerFunc is a method that implements the Preparer interface. +type PreparerFunc func(*http.Request) (*http.Request, error) + +// Prepare implements the Preparer interface on PreparerFunc. +func (pf PreparerFunc) Prepare(r *http.Request) (*http.Request, error) { + return pf(r) +} + +// PrepareDecorator takes and possibly decorates, by wrapping, a Preparer. Decorators may affect the +// http.Request and pass it along or, first, pass the http.Request along then affect the result. +type PrepareDecorator func(Preparer) Preparer + +// CreatePreparer creates, decorates, and returns a Preparer. +// Without decorators, the returned Preparer returns the passed http.Request unmodified. +// Preparers are safe to share and re-use. +func CreatePreparer(decorators ...PrepareDecorator) Preparer { + return DecoratePreparer( + Preparer(PreparerFunc(func(r *http.Request) (*http.Request, error) { return r, nil })), + decorators...) +} + +// DecoratePreparer accepts a Preparer and a, possibly empty, set of PrepareDecorators, which it +// applies to the Preparer. Decorators are applied in the order received, but their affect upon the +// request depends on whether they are a pre-decorator (change the http.Request and then pass it +// along) or a post-decorator (pass the http.Request along and alter it on return). +func DecoratePreparer(p Preparer, decorators ...PrepareDecorator) Preparer { + for _, decorate := range decorators { + p = decorate(p) + } + return p +} + +// Prepare accepts an http.Request and a, possibly empty, set of PrepareDecorators. +// It creates a Preparer from the decorators which it then applies to the passed http.Request. +func Prepare(r *http.Request, decorators ...PrepareDecorator) (*http.Request, error) { + if r == nil { + return nil, NewError("autorest", "Prepare", "Invoked without an http.Request") + } + return CreatePreparer(decorators...).Prepare(r) +} + +// WithNothing returns a "do nothing" PrepareDecorator that makes no changes to the passed +// http.Request. +func WithNothing() PrepareDecorator { + return func(p Preparer) Preparer { + return PreparerFunc(func(r *http.Request) (*http.Request, error) { + return p.Prepare(r) + }) + } +} + +// WithHeader returns a PrepareDecorator that sets the specified HTTP header of the http.Request to +// the passed value. It canonicalizes the passed header name (via http.CanonicalHeaderKey) before +// adding the header. +func WithHeader(header string, value string) PrepareDecorator { + return func(p Preparer) Preparer { + return PreparerFunc(func(r *http.Request) (*http.Request, error) { + r, err := p.Prepare(r) + if err == nil { + if r.Header == nil { + r.Header = make(http.Header) + } + r.Header.Set(http.CanonicalHeaderKey(header), value) + } + return r, err + }) + } +} + +// WithHeaders returns a PrepareDecorator that sets the specified HTTP headers of the http.Request to +// the passed value. It canonicalizes the passed headers name (via http.CanonicalHeaderKey) before +// adding them. +func WithHeaders(headers map[string]interface{}) PrepareDecorator { + h := ensureValueStrings(headers) + return func(p Preparer) Preparer { + return PreparerFunc(func(r *http.Request) (*http.Request, error) { + r, err := p.Prepare(r) + if err == nil { + if r.Header == nil { + r.Header = make(http.Header) + } + + for name, value := range h { + r.Header.Set(http.CanonicalHeaderKey(name), value) + } + } + return r, err + }) + } +} + +// WithBearerAuthorization returns a PrepareDecorator that adds an HTTP Authorization header whose +// value is "Bearer " followed by the supplied token. +func WithBearerAuthorization(token string) PrepareDecorator { + return WithHeader(headerAuthorization, fmt.Sprintf("Bearer %s", token)) +} + +// AsContentType returns a PrepareDecorator that adds an HTTP Content-Type header whose value +// is the passed contentType. +func AsContentType(contentType string) PrepareDecorator { + return WithHeader(headerContentType, contentType) +} + +// WithUserAgent returns a PrepareDecorator that adds an HTTP User-Agent header whose value is the +// passed string. +func WithUserAgent(ua string) PrepareDecorator { + return WithHeader(headerUserAgent, ua) +} + +// AsFormURLEncoded returns a PrepareDecorator that adds an HTTP Content-Type header whose value is +// "application/x-www-form-urlencoded". +func AsFormURLEncoded() PrepareDecorator { + return AsContentType(mimeTypeFormPost) +} + +// AsJSON returns a PrepareDecorator that adds an HTTP Content-Type header whose value is +// "application/json". +func AsJSON() PrepareDecorator { + return AsContentType(mimeTypeJSON) +} + +// AsOctetStream returns a PrepareDecorator that adds the "application/octet-stream" Content-Type header. +func AsOctetStream() PrepareDecorator { + return AsContentType(mimeTypeOctetStream) +} + +// WithMethod returns a PrepareDecorator that sets the HTTP method of the passed request. The +// decorator does not validate that the passed method string is a known HTTP method. +func WithMethod(method string) PrepareDecorator { + return func(p Preparer) Preparer { + return PreparerFunc(func(r *http.Request) (*http.Request, error) { + r.Method = method + return p.Prepare(r) + }) + } +} + +// AsDelete returns a PrepareDecorator that sets the HTTP method to DELETE. +func AsDelete() PrepareDecorator { return WithMethod("DELETE") } + +// AsGet returns a PrepareDecorator that sets the HTTP method to GET. +func AsGet() PrepareDecorator { return WithMethod("GET") } + +// AsHead returns a PrepareDecorator that sets the HTTP method to HEAD. +func AsHead() PrepareDecorator { return WithMethod("HEAD") } + +// AsMerge returns a PrepareDecorator that sets the HTTP method to MERGE. +func AsMerge() PrepareDecorator { return WithMethod("MERGE") } + +// AsOptions returns a PrepareDecorator that sets the HTTP method to OPTIONS. +func AsOptions() PrepareDecorator { return WithMethod("OPTIONS") } + +// AsPatch returns a PrepareDecorator that sets the HTTP method to PATCH. +func AsPatch() PrepareDecorator { return WithMethod("PATCH") } + +// AsPost returns a PrepareDecorator that sets the HTTP method to POST. +func AsPost() PrepareDecorator { return WithMethod("POST") } + +// AsPut returns a PrepareDecorator that sets the HTTP method to PUT. +func AsPut() PrepareDecorator { return WithMethod("PUT") } + +// WithBaseURL returns a PrepareDecorator that populates the http.Request with a url.URL constructed +// from the supplied baseUrl. +func WithBaseURL(baseURL string) PrepareDecorator { + return func(p Preparer) Preparer { + return PreparerFunc(func(r *http.Request) (*http.Request, error) { + r, err := p.Prepare(r) + if err == nil { + var u *url.URL + if u, err = url.Parse(baseURL); err != nil { + return r, err + } + if u.Scheme == "" { + err = fmt.Errorf("autorest: No scheme detected in URL %s", baseURL) + } + if err == nil { + r.URL = u + } + } + return r, err + }) + } +} + +// WithBytes returns a PrepareDecorator that takes a list of bytes +// which passes the bytes directly to the body +func WithBytes(input *[]byte) PrepareDecorator { + return func(p Preparer) Preparer { + return PreparerFunc(func(r *http.Request) (*http.Request, error) { + r, err := p.Prepare(r) + if err == nil { + if input == nil { + return r, fmt.Errorf("Input Bytes was nil") + } + + r.ContentLength = int64(len(*input)) + r.Body = ioutil.NopCloser(bytes.NewReader(*input)) + } + return r, err + }) + } +} + +// WithCustomBaseURL returns a PrepareDecorator that replaces brace-enclosed keys within the +// request base URL (i.e., http.Request.URL) with the corresponding values from the passed map. +func WithCustomBaseURL(baseURL string, urlParameters map[string]interface{}) PrepareDecorator { + parameters := ensureValueStrings(urlParameters) + for key, value := range parameters { + baseURL = strings.Replace(baseURL, "{"+key+"}", value, -1) + } + return WithBaseURL(baseURL) +} + +// WithFormData returns a PrepareDecoratore that "URL encodes" (e.g., bar=baz&foo=quux) into the +// http.Request body. +func WithFormData(v url.Values) PrepareDecorator { + return func(p Preparer) Preparer { + return PreparerFunc(func(r *http.Request) (*http.Request, error) { + r, err := p.Prepare(r) + if err == nil { + s := v.Encode() + + if r.Header == nil { + r.Header = make(http.Header) + } + r.Header.Set(http.CanonicalHeaderKey(headerContentType), mimeTypeFormPost) + r.ContentLength = int64(len(s)) + r.Body = ioutil.NopCloser(strings.NewReader(s)) + } + return r, err + }) + } +} + +// WithMultiPartFormData returns a PrepareDecoratore that "URL encodes" (e.g., bar=baz&foo=quux) form parameters +// into the http.Request body. +func WithMultiPartFormData(formDataParameters map[string]interface{}) PrepareDecorator { + return func(p Preparer) Preparer { + return PreparerFunc(func(r *http.Request) (*http.Request, error) { + r, err := p.Prepare(r) + if err == nil { + var body bytes.Buffer + writer := multipart.NewWriter(&body) + for key, value := range formDataParameters { + if rc, ok := value.(io.ReadCloser); ok { + var fd io.Writer + if fd, err = writer.CreateFormFile(key, key); err != nil { + return r, err + } + if _, err = io.Copy(fd, rc); err != nil { + return r, err + } + } else { + if err = writer.WriteField(key, ensureValueString(value)); err != nil { + return r, err + } + } + } + if err = writer.Close(); err != nil { + return r, err + } + if r.Header == nil { + r.Header = make(http.Header) + } + r.Header.Set(http.CanonicalHeaderKey(headerContentType), writer.FormDataContentType()) + r.Body = ioutil.NopCloser(bytes.NewReader(body.Bytes())) + r.ContentLength = int64(body.Len()) + return r, err + } + return r, err + }) + } +} + +// WithFile returns a PrepareDecorator that sends file in request body. +func WithFile(f io.ReadCloser) PrepareDecorator { + return func(p Preparer) Preparer { + return PreparerFunc(func(r *http.Request) (*http.Request, error) { + r, err := p.Prepare(r) + if err == nil { + b, err := ioutil.ReadAll(f) + if err != nil { + return r, err + } + r.Body = ioutil.NopCloser(bytes.NewReader(b)) + r.ContentLength = int64(len(b)) + } + return r, err + }) + } +} + +// WithBool returns a PrepareDecorator that encodes the passed bool into the body of the request +// and sets the Content-Length header. +func WithBool(v bool) PrepareDecorator { + return WithString(fmt.Sprintf("%v", v)) +} + +// WithFloat32 returns a PrepareDecorator that encodes the passed float32 into the body of the +// request and sets the Content-Length header. +func WithFloat32(v float32) PrepareDecorator { + return WithString(fmt.Sprintf("%v", v)) +} + +// WithFloat64 returns a PrepareDecorator that encodes the passed float64 into the body of the +// request and sets the Content-Length header. +func WithFloat64(v float64) PrepareDecorator { + return WithString(fmt.Sprintf("%v", v)) +} + +// WithInt32 returns a PrepareDecorator that encodes the passed int32 into the body of the request +// and sets the Content-Length header. +func WithInt32(v int32) PrepareDecorator { + return WithString(fmt.Sprintf("%v", v)) +} + +// WithInt64 returns a PrepareDecorator that encodes the passed int64 into the body of the request +// and sets the Content-Length header. +func WithInt64(v int64) PrepareDecorator { + return WithString(fmt.Sprintf("%v", v)) +} + +// WithString returns a PrepareDecorator that encodes the passed string into the body of the request +// and sets the Content-Length header. +func WithString(v string) PrepareDecorator { + return func(p Preparer) Preparer { + return PreparerFunc(func(r *http.Request) (*http.Request, error) { + r, err := p.Prepare(r) + if err == nil { + r.ContentLength = int64(len(v)) + r.Body = ioutil.NopCloser(strings.NewReader(v)) + } + return r, err + }) + } +} + +// WithJSON returns a PrepareDecorator that encodes the data passed as JSON into the body of the +// request and sets the Content-Length header. +func WithJSON(v interface{}) PrepareDecorator { + return func(p Preparer) Preparer { + return PreparerFunc(func(r *http.Request) (*http.Request, error) { + r, err := p.Prepare(r) + if err == nil { + b, err := json.Marshal(v) + if err == nil { + r.ContentLength = int64(len(b)) + r.Body = ioutil.NopCloser(bytes.NewReader(b)) + } + } + return r, err + }) + } +} + +// WithXML returns a PrepareDecorator that encodes the data passed as XML into the body of the +// request and sets the Content-Length header. +func WithXML(v interface{}) PrepareDecorator { + return func(p Preparer) Preparer { + return PreparerFunc(func(r *http.Request) (*http.Request, error) { + r, err := p.Prepare(r) + if err == nil { + b, err := xml.Marshal(v) + if err == nil { + // we have to tack on an XML header + withHeader := xml.Header + string(b) + bytesWithHeader := []byte(withHeader) + + r.ContentLength = int64(len(bytesWithHeader)) + r.Body = ioutil.NopCloser(bytes.NewReader(bytesWithHeader)) + } + } + return r, err + }) + } +} + +// WithPath returns a PrepareDecorator that adds the supplied path to the request URL. If the path +// is absolute (that is, it begins with a "/"), it replaces the existing path. +func WithPath(path string) PrepareDecorator { + return func(p Preparer) Preparer { + return PreparerFunc(func(r *http.Request) (*http.Request, error) { + r, err := p.Prepare(r) + if err == nil { + if r.URL == nil { + return r, NewError("autorest", "WithPath", "Invoked with a nil URL") + } + if r.URL, err = parseURL(r.URL, path); err != nil { + return r, err + } + } + return r, err + }) + } +} + +// WithEscapedPathParameters returns a PrepareDecorator that replaces brace-enclosed keys within the +// request path (i.e., http.Request.URL.Path) with the corresponding values from the passed map. The +// values will be escaped (aka URL encoded) before insertion into the path. +func WithEscapedPathParameters(path string, pathParameters map[string]interface{}) PrepareDecorator { + parameters := escapeValueStrings(ensureValueStrings(pathParameters)) + return func(p Preparer) Preparer { + return PreparerFunc(func(r *http.Request) (*http.Request, error) { + r, err := p.Prepare(r) + if err == nil { + if r.URL == nil { + return r, NewError("autorest", "WithEscapedPathParameters", "Invoked with a nil URL") + } + for key, value := range parameters { + path = strings.Replace(path, "{"+key+"}", value, -1) + } + if r.URL, err = parseURL(r.URL, path); err != nil { + return r, err + } + } + return r, err + }) + } +} + +// WithPathParameters returns a PrepareDecorator that replaces brace-enclosed keys within the +// request path (i.e., http.Request.URL.Path) with the corresponding values from the passed map. +func WithPathParameters(path string, pathParameters map[string]interface{}) PrepareDecorator { + parameters := ensureValueStrings(pathParameters) + return func(p Preparer) Preparer { + return PreparerFunc(func(r *http.Request) (*http.Request, error) { + r, err := p.Prepare(r) + if err == nil { + if r.URL == nil { + return r, NewError("autorest", "WithPathParameters", "Invoked with a nil URL") + } + for key, value := range parameters { + path = strings.Replace(path, "{"+key+"}", value, -1) + } + + if r.URL, err = parseURL(r.URL, path); err != nil { + return r, err + } + } + return r, err + }) + } +} + +func parseURL(u *url.URL, path string) (*url.URL, error) { + p := strings.TrimRight(u.String(), "/") + if !strings.HasPrefix(path, "/") { + path = "/" + path + } + return url.Parse(p + path) +} + +// WithQueryParameters returns a PrepareDecorators that encodes and applies the query parameters +// given in the supplied map (i.e., key=value). +func WithQueryParameters(queryParameters map[string]interface{}) PrepareDecorator { + parameters := MapToValues(queryParameters) + return func(p Preparer) Preparer { + return PreparerFunc(func(r *http.Request) (*http.Request, error) { + r, err := p.Prepare(r) + if err == nil { + if r.URL == nil { + return r, NewError("autorest", "WithQueryParameters", "Invoked with a nil URL") + } + v := r.URL.Query() + for key, value := range parameters { + for i := range value { + d, err := url.QueryUnescape(value[i]) + if err != nil { + return r, err + } + value[i] = d + } + v[key] = value + } + r.URL.RawQuery = v.Encode() + } + return r, err + }) + } +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/responder.go b/vendor/github.com/Azure/go-autorest/autorest/responder.go new file mode 100644 index 0000000..349e196 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/responder.go @@ -0,0 +1,269 @@ +package autorest + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "bytes" + "encoding/json" + "encoding/xml" + "fmt" + "io" + "io/ioutil" + "net/http" + "strings" +) + +// Responder is the interface that wraps the Respond method. +// +// Respond accepts and reacts to an http.Response. Implementations must ensure to not share or hold +// state since Responders may be shared and re-used. +type Responder interface { + Respond(*http.Response) error +} + +// ResponderFunc is a method that implements the Responder interface. +type ResponderFunc func(*http.Response) error + +// Respond implements the Responder interface on ResponderFunc. +func (rf ResponderFunc) Respond(r *http.Response) error { + return rf(r) +} + +// RespondDecorator takes and possibly decorates, by wrapping, a Responder. Decorators may react to +// the http.Response and pass it along or, first, pass the http.Response along then react. +type RespondDecorator func(Responder) Responder + +// CreateResponder creates, decorates, and returns a Responder. Without decorators, the returned +// Responder returns the passed http.Response unmodified. Responders may or may not be safe to share +// and re-used: It depends on the applied decorators. For example, a standard decorator that closes +// the response body is fine to share whereas a decorator that reads the body into a passed struct +// is not. +// +// To prevent memory leaks, ensure that at least one Responder closes the response body. +func CreateResponder(decorators ...RespondDecorator) Responder { + return DecorateResponder( + Responder(ResponderFunc(func(r *http.Response) error { return nil })), + decorators...) +} + +// DecorateResponder accepts a Responder and a, possibly empty, set of RespondDecorators, which it +// applies to the Responder. Decorators are applied in the order received, but their affect upon the +// request depends on whether they are a pre-decorator (react to the http.Response and then pass it +// along) or a post-decorator (pass the http.Response along and then react). +func DecorateResponder(r Responder, decorators ...RespondDecorator) Responder { + for _, decorate := range decorators { + r = decorate(r) + } + return r +} + +// Respond accepts an http.Response and a, possibly empty, set of RespondDecorators. +// It creates a Responder from the decorators it then applies to the passed http.Response. +func Respond(r *http.Response, decorators ...RespondDecorator) error { + if r == nil { + return nil + } + return CreateResponder(decorators...).Respond(r) +} + +// ByIgnoring returns a RespondDecorator that ignores the passed http.Response passing it unexamined +// to the next RespondDecorator. +func ByIgnoring() RespondDecorator { + return func(r Responder) Responder { + return ResponderFunc(func(resp *http.Response) error { + return r.Respond(resp) + }) + } +} + +// ByCopying copies the contents of the http.Response Body into the passed bytes.Buffer as +// the Body is read. +func ByCopying(b *bytes.Buffer) RespondDecorator { + return func(r Responder) Responder { + return ResponderFunc(func(resp *http.Response) error { + err := r.Respond(resp) + if err == nil && resp != nil && resp.Body != nil { + resp.Body = TeeReadCloser(resp.Body, b) + } + return err + }) + } +} + +// ByDiscardingBody returns a RespondDecorator that first invokes the passed Responder after which +// it copies the remaining bytes (if any) in the response body to ioutil.Discard. Since the passed +// Responder is invoked prior to discarding the response body, the decorator may occur anywhere +// within the set. +func ByDiscardingBody() RespondDecorator { + return func(r Responder) Responder { + return ResponderFunc(func(resp *http.Response) error { + err := r.Respond(resp) + if err == nil && resp != nil && resp.Body != nil { + if _, err := io.Copy(ioutil.Discard, resp.Body); err != nil { + return fmt.Errorf("Error discarding the response body: %v", err) + } + } + return err + }) + } +} + +// ByClosing returns a RespondDecorator that first invokes the passed Responder after which it +// closes the response body. Since the passed Responder is invoked prior to closing the response +// body, the decorator may occur anywhere within the set. +func ByClosing() RespondDecorator { + return func(r Responder) Responder { + return ResponderFunc(func(resp *http.Response) error { + err := r.Respond(resp) + if resp != nil && resp.Body != nil { + if err := resp.Body.Close(); err != nil { + return fmt.Errorf("Error closing the response body: %v", err) + } + } + return err + }) + } +} + +// ByClosingIfError returns a RespondDecorator that first invokes the passed Responder after which +// it closes the response if the passed Responder returns an error and the response body exists. +func ByClosingIfError() RespondDecorator { + return func(r Responder) Responder { + return ResponderFunc(func(resp *http.Response) error { + err := r.Respond(resp) + if err != nil && resp != nil && resp.Body != nil { + if err := resp.Body.Close(); err != nil { + return fmt.Errorf("Error closing the response body: %v", err) + } + } + return err + }) + } +} + +// ByUnmarshallingBytes returns a RespondDecorator that copies the Bytes returned in the +// response Body into the value pointed to by v. +func ByUnmarshallingBytes(v *[]byte) RespondDecorator { + return func(r Responder) Responder { + return ResponderFunc(func(resp *http.Response) error { + err := r.Respond(resp) + if err == nil { + bytes, errInner := ioutil.ReadAll(resp.Body) + if errInner != nil { + err = fmt.Errorf("Error occurred reading http.Response#Body - Error = '%v'", errInner) + } else { + *v = bytes + } + } + return err + }) + } +} + +// ByUnmarshallingJSON returns a RespondDecorator that decodes a JSON document returned in the +// response Body into the value pointed to by v. +func ByUnmarshallingJSON(v interface{}) RespondDecorator { + return func(r Responder) Responder { + return ResponderFunc(func(resp *http.Response) error { + err := r.Respond(resp) + if err == nil { + b, errInner := ioutil.ReadAll(resp.Body) + // Some responses might include a BOM, remove for successful unmarshalling + b = bytes.TrimPrefix(b, []byte("\xef\xbb\xbf")) + if errInner != nil { + err = fmt.Errorf("Error occurred reading http.Response#Body - Error = '%v'", errInner) + } else if len(strings.Trim(string(b), " ")) > 0 { + errInner = json.Unmarshal(b, v) + if errInner != nil { + err = fmt.Errorf("Error occurred unmarshalling JSON - Error = '%v' JSON = '%s'", errInner, string(b)) + } + } + } + return err + }) + } +} + +// ByUnmarshallingXML returns a RespondDecorator that decodes a XML document returned in the +// response Body into the value pointed to by v. +func ByUnmarshallingXML(v interface{}) RespondDecorator { + return func(r Responder) Responder { + return ResponderFunc(func(resp *http.Response) error { + err := r.Respond(resp) + if err == nil { + b, errInner := ioutil.ReadAll(resp.Body) + if errInner != nil { + err = fmt.Errorf("Error occurred reading http.Response#Body - Error = '%v'", errInner) + } else { + errInner = xml.Unmarshal(b, v) + if errInner != nil { + err = fmt.Errorf("Error occurred unmarshalling Xml - Error = '%v' Xml = '%s'", errInner, string(b)) + } + } + } + return err + }) + } +} + +// WithErrorUnlessStatusCode returns a RespondDecorator that emits an error unless the response +// StatusCode is among the set passed. On error, response body is fully read into a buffer and +// presented in the returned error, as well as in the response body. +func WithErrorUnlessStatusCode(codes ...int) RespondDecorator { + return func(r Responder) Responder { + return ResponderFunc(func(resp *http.Response) error { + err := r.Respond(resp) + if err == nil && !ResponseHasStatusCode(resp, codes...) { + derr := NewErrorWithResponse("autorest", "WithErrorUnlessStatusCode", resp, "%v %v failed with %s", + resp.Request.Method, + resp.Request.URL, + resp.Status) + if resp.Body != nil { + defer resp.Body.Close() + b, _ := ioutil.ReadAll(resp.Body) + derr.ServiceError = b + resp.Body = ioutil.NopCloser(bytes.NewReader(b)) + } + err = derr + } + return err + }) + } +} + +// WithErrorUnlessOK returns a RespondDecorator that emits an error if the response StatusCode is +// anything other than HTTP 200. +func WithErrorUnlessOK() RespondDecorator { + return WithErrorUnlessStatusCode(http.StatusOK) +} + +// ExtractHeader extracts all values of the specified header from the http.Response. It returns an +// empty string slice if the passed http.Response is nil or the header does not exist. +func ExtractHeader(header string, resp *http.Response) []string { + if resp != nil && resp.Header != nil { + return resp.Header[http.CanonicalHeaderKey(header)] + } + return nil +} + +// ExtractHeaderValue extracts the first value of the specified header from the http.Response. It +// returns an empty string if the passed http.Response is nil or the header does not exist. +func ExtractHeaderValue(header string, resp *http.Response) string { + h := ExtractHeader(header, resp) + if len(h) > 0 { + return h[0] + } + return "" +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/retriablerequest.go b/vendor/github.com/Azure/go-autorest/autorest/retriablerequest.go new file mode 100644 index 0000000..fa11dbe --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/retriablerequest.go @@ -0,0 +1,52 @@ +package autorest + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "bytes" + "io" + "io/ioutil" + "net/http" +) + +// NewRetriableRequest returns a wrapper around an HTTP request that support retry logic. +func NewRetriableRequest(req *http.Request) *RetriableRequest { + return &RetriableRequest{req: req} +} + +// Request returns the wrapped HTTP request. +func (rr *RetriableRequest) Request() *http.Request { + return rr.req +} + +func (rr *RetriableRequest) prepareFromByteReader() (err error) { + // fall back to making a copy (only do this once) + b := []byte{} + if rr.req.ContentLength > 0 { + b = make([]byte, rr.req.ContentLength) + _, err = io.ReadFull(rr.req.Body, b) + if err != nil { + return err + } + } else { + b, err = ioutil.ReadAll(rr.req.Body) + if err != nil { + return err + } + } + rr.br = bytes.NewReader(b) + rr.req.Body = ioutil.NopCloser(rr.br) + return err +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/retriablerequest_1.7.go b/vendor/github.com/Azure/go-autorest/autorest/retriablerequest_1.7.go new file mode 100644 index 0000000..7143cc6 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/retriablerequest_1.7.go @@ -0,0 +1,54 @@ +// +build !go1.8 + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package autorest + +import ( + "bytes" + "io/ioutil" + "net/http" +) + +// RetriableRequest provides facilities for retrying an HTTP request. +type RetriableRequest struct { + req *http.Request + br *bytes.Reader +} + +// Prepare signals that the request is about to be sent. +func (rr *RetriableRequest) Prepare() (err error) { + // preserve the request body; this is to support retry logic as + // the underlying transport will always close the reqeust body + if rr.req.Body != nil { + if rr.br != nil { + _, err = rr.br.Seek(0, 0 /*io.SeekStart*/) + rr.req.Body = ioutil.NopCloser(rr.br) + } + if err != nil { + return err + } + if rr.br == nil { + // fall back to making a copy (only do this once) + err = rr.prepareFromByteReader() + } + } + return err +} + +func removeRequestBody(req *http.Request) { + req.Body = nil + req.ContentLength = 0 +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/retriablerequest_1.8.go b/vendor/github.com/Azure/go-autorest/autorest/retriablerequest_1.8.go new file mode 100644 index 0000000..ae15c6b --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/retriablerequest_1.8.go @@ -0,0 +1,66 @@ +// +build go1.8 + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package autorest + +import ( + "bytes" + "io" + "io/ioutil" + "net/http" +) + +// RetriableRequest provides facilities for retrying an HTTP request. +type RetriableRequest struct { + req *http.Request + rc io.ReadCloser + br *bytes.Reader +} + +// Prepare signals that the request is about to be sent. +func (rr *RetriableRequest) Prepare() (err error) { + // preserve the request body; this is to support retry logic as + // the underlying transport will always close the reqeust body + if rr.req.Body != nil { + if rr.rc != nil { + rr.req.Body = rr.rc + } else if rr.br != nil { + _, err = rr.br.Seek(0, io.SeekStart) + rr.req.Body = ioutil.NopCloser(rr.br) + } + if err != nil { + return err + } + if rr.req.GetBody != nil { + // this will allow us to preserve the body without having to + // make a copy. note we need to do this on each iteration + rr.rc, err = rr.req.GetBody() + if err != nil { + return err + } + } else if rr.br == nil { + // fall back to making a copy (only do this once) + err = rr.prepareFromByteReader() + } + } + return err +} + +func removeRequestBody(req *http.Request) { + req.Body = nil + req.GetBody = nil + req.ContentLength = 0 +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/sender.go b/vendor/github.com/Azure/go-autorest/autorest/sender.go new file mode 100644 index 0000000..704f3e5 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/sender.go @@ -0,0 +1,424 @@ +package autorest + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "context" + "crypto/tls" + "fmt" + "log" + "math" + "net/http" + "net/http/cookiejar" + "strconv" + "time" + + "github.com/Azure/go-autorest/tracing" +) + +// used as a key type in context.WithValue() +type ctxSendDecorators struct{} + +// WithSendDecorators adds the specified SendDecorators to the provided context. +// If no SendDecorators are provided the context is unchanged. +func WithSendDecorators(ctx context.Context, sendDecorator []SendDecorator) context.Context { + if len(sendDecorator) == 0 { + return ctx + } + return context.WithValue(ctx, ctxSendDecorators{}, sendDecorator) +} + +// GetSendDecorators returns the SendDecorators in the provided context or the provided default SendDecorators. +func GetSendDecorators(ctx context.Context, defaultSendDecorators ...SendDecorator) []SendDecorator { + inCtx := ctx.Value(ctxSendDecorators{}) + if sd, ok := inCtx.([]SendDecorator); ok { + return sd + } + return defaultSendDecorators +} + +// Sender is the interface that wraps the Do method to send HTTP requests. +// +// The standard http.Client conforms to this interface. +type Sender interface { + Do(*http.Request) (*http.Response, error) +} + +// SenderFunc is a method that implements the Sender interface. +type SenderFunc func(*http.Request) (*http.Response, error) + +// Do implements the Sender interface on SenderFunc. +func (sf SenderFunc) Do(r *http.Request) (*http.Response, error) { + return sf(r) +} + +// SendDecorator takes and possibly decorates, by wrapping, a Sender. Decorators may affect the +// http.Request and pass it along or, first, pass the http.Request along then react to the +// http.Response result. +type SendDecorator func(Sender) Sender + +// CreateSender creates, decorates, and returns, as a Sender, the default http.Client. +func CreateSender(decorators ...SendDecorator) Sender { + return DecorateSender(sender(tls.RenegotiateNever), decorators...) +} + +// DecorateSender accepts a Sender and a, possibly empty, set of SendDecorators, which is applies to +// the Sender. Decorators are applied in the order received, but their affect upon the request +// depends on whether they are a pre-decorator (change the http.Request and then pass it along) or a +// post-decorator (pass the http.Request along and react to the results in http.Response). +func DecorateSender(s Sender, decorators ...SendDecorator) Sender { + for _, decorate := range decorators { + s = decorate(s) + } + return s +} + +// Send sends, by means of the default http.Client, the passed http.Request, returning the +// http.Response and possible error. It also accepts a, possibly empty, set of SendDecorators which +// it will apply the http.Client before invoking the Do method. +// +// Send is a convenience method and not recommended for production. Advanced users should use +// SendWithSender, passing and sharing their own Sender (e.g., instance of http.Client). +// +// Send will not poll or retry requests. +func Send(r *http.Request, decorators ...SendDecorator) (*http.Response, error) { + return SendWithSender(sender(tls.RenegotiateNever), r, decorators...) +} + +// SendWithSender sends the passed http.Request, through the provided Sender, returning the +// http.Response and possible error. It also accepts a, possibly empty, set of SendDecorators which +// it will apply the http.Client before invoking the Do method. +// +// SendWithSender will not poll or retry requests. +func SendWithSender(s Sender, r *http.Request, decorators ...SendDecorator) (*http.Response, error) { + return DecorateSender(s, decorators...).Do(r) +} + +func sender(renengotiation tls.RenegotiationSupport) Sender { + // Use behaviour compatible with DefaultTransport, but require TLS minimum version. + defaultTransport := http.DefaultTransport.(*http.Transport) + transport := &http.Transport{ + Proxy: defaultTransport.Proxy, + DialContext: defaultTransport.DialContext, + MaxIdleConns: defaultTransport.MaxIdleConns, + IdleConnTimeout: defaultTransport.IdleConnTimeout, + TLSHandshakeTimeout: defaultTransport.TLSHandshakeTimeout, + ExpectContinueTimeout: defaultTransport.ExpectContinueTimeout, + TLSClientConfig: &tls.Config{ + MinVersion: tls.VersionTLS12, + Renegotiation: renengotiation, + }, + } + var roundTripper http.RoundTripper = transport + if tracing.IsEnabled() { + roundTripper = tracing.NewTransport(transport) + } + j, _ := cookiejar.New(nil) + return &http.Client{Jar: j, Transport: roundTripper} +} + +// AfterDelay returns a SendDecorator that delays for the passed time.Duration before +// invoking the Sender. The delay may be terminated by closing the optional channel on the +// http.Request. If canceled, no further Senders are invoked. +func AfterDelay(d time.Duration) SendDecorator { + return func(s Sender) Sender { + return SenderFunc(func(r *http.Request) (*http.Response, error) { + if !DelayForBackoff(d, 0, r.Context().Done()) { + return nil, fmt.Errorf("autorest: AfterDelay canceled before full delay") + } + return s.Do(r) + }) + } +} + +// AsIs returns a SendDecorator that invokes the passed Sender without modifying the http.Request. +func AsIs() SendDecorator { + return func(s Sender) Sender { + return SenderFunc(func(r *http.Request) (*http.Response, error) { + return s.Do(r) + }) + } +} + +// DoCloseIfError returns a SendDecorator that first invokes the passed Sender after which +// it closes the response if the passed Sender returns an error and the response body exists. +func DoCloseIfError() SendDecorator { + return func(s Sender) Sender { + return SenderFunc(func(r *http.Request) (*http.Response, error) { + resp, err := s.Do(r) + if err != nil { + Respond(resp, ByDiscardingBody(), ByClosing()) + } + return resp, err + }) + } +} + +// DoErrorIfStatusCode returns a SendDecorator that emits an error if the response StatusCode is +// among the set passed. Since these are artificial errors, the response body may still require +// closing. +func DoErrorIfStatusCode(codes ...int) SendDecorator { + return func(s Sender) Sender { + return SenderFunc(func(r *http.Request) (*http.Response, error) { + resp, err := s.Do(r) + if err == nil && ResponseHasStatusCode(resp, codes...) { + err = NewErrorWithResponse("autorest", "DoErrorIfStatusCode", resp, "%v %v failed with %s", + resp.Request.Method, + resp.Request.URL, + resp.Status) + } + return resp, err + }) + } +} + +// DoErrorUnlessStatusCode returns a SendDecorator that emits an error unless the response +// StatusCode is among the set passed. Since these are artificial errors, the response body +// may still require closing. +func DoErrorUnlessStatusCode(codes ...int) SendDecorator { + return func(s Sender) Sender { + return SenderFunc(func(r *http.Request) (*http.Response, error) { + resp, err := s.Do(r) + if err == nil && !ResponseHasStatusCode(resp, codes...) { + err = NewErrorWithResponse("autorest", "DoErrorUnlessStatusCode", resp, "%v %v failed with %s", + resp.Request.Method, + resp.Request.URL, + resp.Status) + } + return resp, err + }) + } +} + +// DoPollForStatusCodes returns a SendDecorator that polls if the http.Response contains one of the +// passed status codes. It expects the http.Response to contain a Location header providing the +// URL at which to poll (using GET) and will poll until the time passed is equal to or greater than +// the supplied duration. It will delay between requests for the duration specified in the +// RetryAfter header or, if the header is absent, the passed delay. Polling may be canceled by +// closing the optional channel on the http.Request. +func DoPollForStatusCodes(duration time.Duration, delay time.Duration, codes ...int) SendDecorator { + return func(s Sender) Sender { + return SenderFunc(func(r *http.Request) (resp *http.Response, err error) { + resp, err = s.Do(r) + + if err == nil && ResponseHasStatusCode(resp, codes...) { + r, err = NewPollingRequestWithContext(r.Context(), resp) + + for err == nil && ResponseHasStatusCode(resp, codes...) { + Respond(resp, + ByDiscardingBody(), + ByClosing()) + resp, err = SendWithSender(s, r, + AfterDelay(GetRetryAfter(resp, delay))) + } + } + + return resp, err + }) + } +} + +// DoRetryForAttempts returns a SendDecorator that retries a failed request for up to the specified +// number of attempts, exponentially backing off between requests using the supplied backoff +// time.Duration (which may be zero). Retrying may be canceled by closing the optional channel on +// the http.Request. +func DoRetryForAttempts(attempts int, backoff time.Duration) SendDecorator { + return func(s Sender) Sender { + return SenderFunc(func(r *http.Request) (resp *http.Response, err error) { + rr := NewRetriableRequest(r) + for attempt := 0; attempt < attempts; attempt++ { + err = rr.Prepare() + if err != nil { + return resp, err + } + DrainResponseBody(resp) + resp, err = s.Do(rr.Request()) + if err == nil { + return resp, err + } + if !DelayForBackoff(backoff, attempt, r.Context().Done()) { + return nil, r.Context().Err() + } + } + return resp, err + }) + } +} + +// Count429AsRetry indicates that a 429 response should be included as a retry attempt. +var Count429AsRetry = true + +// Max429Delay is the maximum duration to wait between retries on a 429 if no Retry-After header was received. +var Max429Delay time.Duration + +// DoRetryForStatusCodes returns a SendDecorator that retries for specified statusCodes for up to the specified +// number of attempts, exponentially backing off between requests using the supplied backoff +// time.Duration (which may be zero). Retrying may be canceled by cancelling the context on the http.Request. +// NOTE: Code http.StatusTooManyRequests (429) will *not* be counted against the number of attempts. +func DoRetryForStatusCodes(attempts int, backoff time.Duration, codes ...int) SendDecorator { + return func(s Sender) Sender { + return SenderFunc(func(r *http.Request) (*http.Response, error) { + return doRetryForStatusCodesImpl(s, r, Count429AsRetry, attempts, backoff, 0, codes...) + }) + } +} + +// DoRetryForStatusCodesWithCap returns a SendDecorator that retries for specified statusCodes for up to the +// specified number of attempts, exponentially backing off between requests using the supplied backoff +// time.Duration (which may be zero). To cap the maximum possible delay between iterations specify a value greater +// than zero for cap. Retrying may be canceled by cancelling the context on the http.Request. +func DoRetryForStatusCodesWithCap(attempts int, backoff, cap time.Duration, codes ...int) SendDecorator { + return func(s Sender) Sender { + return SenderFunc(func(r *http.Request) (*http.Response, error) { + return doRetryForStatusCodesImpl(s, r, Count429AsRetry, attempts, backoff, cap, codes...) + }) + } +} + +func doRetryForStatusCodesImpl(s Sender, r *http.Request, count429 bool, attempts int, backoff, cap time.Duration, codes ...int) (resp *http.Response, err error) { + rr := NewRetriableRequest(r) + // Increment to add the first call (attempts denotes number of retries) + for attempt, delayCount := 0, 0; attempt < attempts+1; { + err = rr.Prepare() + if err != nil { + return + } + DrainResponseBody(resp) + resp, err = s.Do(rr.Request()) + // we want to retry if err is not nil (e.g. transient network failure). note that for failed authentication + // resp and err will both have a value, so in this case we don't want to retry as it will never succeed. + if err == nil && !ResponseHasStatusCode(resp, codes...) || IsTokenRefreshError(err) { + return resp, err + } + delayed := DelayWithRetryAfter(resp, r.Context().Done()) + // if this was a 429 set the delay cap as specified. + // applicable only in the absence of a retry-after header. + if resp != nil && resp.StatusCode == http.StatusTooManyRequests { + cap = Max429Delay + } + if !delayed && !DelayForBackoffWithCap(backoff, cap, delayCount, r.Context().Done()) { + return resp, r.Context().Err() + } + // when count429 == false don't count a 429 against the number + // of attempts so that we continue to retry until it succeeds + if count429 || (resp == nil || resp.StatusCode != http.StatusTooManyRequests) { + attempt++ + } + // delay count is tracked separately from attempts to + // ensure that 429 participates in exponential back-off + delayCount++ + } + return resp, err +} + +// DelayWithRetryAfter invokes time.After for the duration specified in the "Retry-After" header. +// The value of Retry-After can be either the number of seconds or a date in RFC1123 format. +// The function returns true after successfully waiting for the specified duration. If there is +// no Retry-After header or the wait is cancelled the return value is false. +func DelayWithRetryAfter(resp *http.Response, cancel <-chan struct{}) bool { + if resp == nil { + return false + } + var dur time.Duration + ra := resp.Header.Get("Retry-After") + if retryAfter, _ := strconv.Atoi(ra); retryAfter > 0 { + dur = time.Duration(retryAfter) * time.Second + } else if t, err := time.Parse(time.RFC1123, ra); err == nil { + dur = t.Sub(time.Now()) + } + if dur > 0 { + select { + case <-time.After(dur): + return true + case <-cancel: + return false + } + } + return false +} + +// DoRetryForDuration returns a SendDecorator that retries the request until the total time is equal +// to or greater than the specified duration, exponentially backing off between requests using the +// supplied backoff time.Duration (which may be zero). Retrying may be canceled by closing the +// optional channel on the http.Request. +func DoRetryForDuration(d time.Duration, backoff time.Duration) SendDecorator { + return func(s Sender) Sender { + return SenderFunc(func(r *http.Request) (resp *http.Response, err error) { + rr := NewRetriableRequest(r) + end := time.Now().Add(d) + for attempt := 0; time.Now().Before(end); attempt++ { + err = rr.Prepare() + if err != nil { + return resp, err + } + DrainResponseBody(resp) + resp, err = s.Do(rr.Request()) + if err == nil { + return resp, err + } + if !DelayForBackoff(backoff, attempt, r.Context().Done()) { + return nil, r.Context().Err() + } + } + return resp, err + }) + } +} + +// WithLogging returns a SendDecorator that implements simple before and after logging of the +// request. +func WithLogging(logger *log.Logger) SendDecorator { + return func(s Sender) Sender { + return SenderFunc(func(r *http.Request) (*http.Response, error) { + logger.Printf("Sending %s %s", r.Method, r.URL) + resp, err := s.Do(r) + if err != nil { + logger.Printf("%s %s received error '%v'", r.Method, r.URL, err) + } else { + logger.Printf("%s %s received %s", r.Method, r.URL, resp.Status) + } + return resp, err + }) + } +} + +// DelayForBackoff invokes time.After for the supplied backoff duration raised to the power of +// passed attempt (i.e., an exponential backoff delay). Backoff duration is in seconds and can set +// to zero for no delay. The delay may be canceled by closing the passed channel. If terminated early, +// returns false. +// Note: Passing attempt 1 will result in doubling "backoff" duration. Treat this as a zero-based attempt +// count. +func DelayForBackoff(backoff time.Duration, attempt int, cancel <-chan struct{}) bool { + return DelayForBackoffWithCap(backoff, 0, attempt, cancel) +} + +// DelayForBackoffWithCap invokes time.After for the supplied backoff duration raised to the power of +// passed attempt (i.e., an exponential backoff delay). Backoff duration is in seconds and can set +// to zero for no delay. To cap the maximum possible delay specify a value greater than zero for cap. +// The delay may be canceled by closing the passed channel. If terminated early, returns false. +// Note: Passing attempt 1 will result in doubling "backoff" duration. Treat this as a zero-based attempt +// count. +func DelayForBackoffWithCap(backoff, cap time.Duration, attempt int, cancel <-chan struct{}) bool { + d := time.Duration(backoff.Seconds()*math.Pow(2, float64(attempt))) * time.Second + if cap > 0 && d > cap { + d = cap + } + select { + case <-time.After(d): + return true + case <-cancel: + return false + } +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/to/LICENSE b/vendor/github.com/Azure/go-autorest/autorest/to/LICENSE new file mode 100644 index 0000000..b9d6a27 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/to/LICENSE @@ -0,0 +1,191 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2015 Microsoft Corporation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/Azure/go-autorest/autorest/to/convert.go b/vendor/github.com/Azure/go-autorest/autorest/to/convert.go new file mode 100644 index 0000000..86694bd --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/to/convert.go @@ -0,0 +1,152 @@ +/* +Package to provides helpers to ease working with pointer values of marshalled structures. +*/ +package to + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// String returns a string value for the passed string pointer. It returns the empty string if the +// pointer is nil. +func String(s *string) string { + if s != nil { + return *s + } + return "" +} + +// StringPtr returns a pointer to the passed string. +func StringPtr(s string) *string { + return &s +} + +// StringSlice returns a string slice value for the passed string slice pointer. It returns a nil +// slice if the pointer is nil. +func StringSlice(s *[]string) []string { + if s != nil { + return *s + } + return nil +} + +// StringSlicePtr returns a pointer to the passed string slice. +func StringSlicePtr(s []string) *[]string { + return &s +} + +// StringMap returns a map of strings built from the map of string pointers. The empty string is +// used for nil pointers. +func StringMap(msp map[string]*string) map[string]string { + ms := make(map[string]string, len(msp)) + for k, sp := range msp { + if sp != nil { + ms[k] = *sp + } else { + ms[k] = "" + } + } + return ms +} + +// StringMapPtr returns a pointer to a map of string pointers built from the passed map of strings. +func StringMapPtr(ms map[string]string) *map[string]*string { + msp := make(map[string]*string, len(ms)) + for k, s := range ms { + msp[k] = StringPtr(s) + } + return &msp +} + +// Bool returns a bool value for the passed bool pointer. It returns false if the pointer is nil. +func Bool(b *bool) bool { + if b != nil { + return *b + } + return false +} + +// BoolPtr returns a pointer to the passed bool. +func BoolPtr(b bool) *bool { + return &b +} + +// Int returns an int value for the passed int pointer. It returns 0 if the pointer is nil. +func Int(i *int) int { + if i != nil { + return *i + } + return 0 +} + +// IntPtr returns a pointer to the passed int. +func IntPtr(i int) *int { + return &i +} + +// Int32 returns an int value for the passed int pointer. It returns 0 if the pointer is nil. +func Int32(i *int32) int32 { + if i != nil { + return *i + } + return 0 +} + +// Int32Ptr returns a pointer to the passed int32. +func Int32Ptr(i int32) *int32 { + return &i +} + +// Int64 returns an int value for the passed int pointer. It returns 0 if the pointer is nil. +func Int64(i *int64) int64 { + if i != nil { + return *i + } + return 0 +} + +// Int64Ptr returns a pointer to the passed int64. +func Int64Ptr(i int64) *int64 { + return &i +} + +// Float32 returns an int value for the passed int pointer. It returns 0.0 if the pointer is nil. +func Float32(i *float32) float32 { + if i != nil { + return *i + } + return 0.0 +} + +// Float32Ptr returns a pointer to the passed float32. +func Float32Ptr(i float32) *float32 { + return &i +} + +// Float64 returns an int value for the passed int pointer. It returns 0.0 if the pointer is nil. +func Float64(i *float64) float64 { + if i != nil { + return *i + } + return 0.0 +} + +// Float64Ptr returns a pointer to the passed float64. +func Float64Ptr(i float64) *float64 { + return &i +} + +// ByteSlicePtr returns a pointer to the passed byte slice. +func ByteSlicePtr(b []byte) *[]byte { + return &b +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/to/go.mod b/vendor/github.com/Azure/go-autorest/autorest/to/go.mod new file mode 100644 index 0000000..48fd8c6 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/to/go.mod @@ -0,0 +1,5 @@ +module github.com/Azure/go-autorest/autorest/to + +go 1.12 + +require github.com/Azure/go-autorest/autorest v0.9.0 diff --git a/vendor/github.com/Azure/go-autorest/autorest/to/go.sum b/vendor/github.com/Azure/go-autorest/autorest/to/go.sum new file mode 100644 index 0000000..d7ee6b4 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/to/go.sum @@ -0,0 +1,17 @@ +github.com/Azure/go-autorest/autorest v0.9.0 h1:MRvx8gncNaXJqOoLmhNjUAKh33JJF8LyxPhomEtOsjs= +github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest/adal v0.5.0 h1:q2gDruN08/guU9vAjuPWff0+QIrpH6ediguzdAzXAUU= +github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/date v0.1.0 h1:YGrhWfrgtFs84+h0o46rJrlmsZtyZRg470CqAXTZaGM= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0 h1:Ww5g4zThfD/6cLb4z6xxgeyDa7QDkizMkJKe0ysZXp0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/logger v0.1.0 h1:ruG4BSDXONFRrZZJ2GUXDiUyVpayPmb1GnWeHDdaNKY= +github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/tracing v0.5.0 h1:TRn4WjSnkcSy5AEG3pnbtFSwNtwzjr4VYyQflFE619k= +github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= diff --git a/vendor/github.com/Azure/go-autorest/autorest/to/go_mod_tidy_hack.go b/vendor/github.com/Azure/go-autorest/autorest/to/go_mod_tidy_hack.go new file mode 100644 index 0000000..8e82921 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/to/go_mod_tidy_hack.go @@ -0,0 +1,24 @@ +// +build modhack + +package to + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This file, and the github.com/Azure/go-autorest/autorest import, won't actually become part of +// the resultant binary. + +// Necessary for safely adding multi-module repo. +// See: https://github.com/golang/go/wiki/Modules#is-it-possible-to-add-a-module-to-a-multi-module-repository +import _ "github.com/Azure/go-autorest/autorest" diff --git a/vendor/github.com/Azure/go-autorest/autorest/utility.go b/vendor/github.com/Azure/go-autorest/autorest/utility.go new file mode 100644 index 0000000..67baab2 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/utility.go @@ -0,0 +1,239 @@ +package autorest + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "bytes" + "encoding/json" + "encoding/xml" + "fmt" + "io" + "io/ioutil" + "net" + "net/http" + "net/url" + "reflect" + "strings" + + "github.com/Azure/go-autorest/autorest/adal" +) + +// EncodedAs is a series of constants specifying various data encodings +type EncodedAs string + +const ( + // EncodedAsJSON states that data is encoded as JSON + EncodedAsJSON EncodedAs = "JSON" + + // EncodedAsXML states that data is encoded as Xml + EncodedAsXML EncodedAs = "XML" +) + +// Decoder defines the decoding method json.Decoder and xml.Decoder share +type Decoder interface { + Decode(v interface{}) error +} + +// NewDecoder creates a new decoder appropriate to the passed encoding. +// encodedAs specifies the type of encoding and r supplies the io.Reader containing the +// encoded data. +func NewDecoder(encodedAs EncodedAs, r io.Reader) Decoder { + if encodedAs == EncodedAsJSON { + return json.NewDecoder(r) + } else if encodedAs == EncodedAsXML { + return xml.NewDecoder(r) + } + return nil +} + +// CopyAndDecode decodes the data from the passed io.Reader while making a copy. Having a copy +// is especially useful if there is a chance the data will fail to decode. +// encodedAs specifies the expected encoding, r provides the io.Reader to the data, and v +// is the decoding destination. +func CopyAndDecode(encodedAs EncodedAs, r io.Reader, v interface{}) (bytes.Buffer, error) { + b := bytes.Buffer{} + return b, NewDecoder(encodedAs, io.TeeReader(r, &b)).Decode(v) +} + +// TeeReadCloser returns a ReadCloser that writes to w what it reads from rc. +// It utilizes io.TeeReader to copy the data read and has the same behavior when reading. +// Further, when it is closed, it ensures that rc is closed as well. +func TeeReadCloser(rc io.ReadCloser, w io.Writer) io.ReadCloser { + return &teeReadCloser{rc, io.TeeReader(rc, w)} +} + +type teeReadCloser struct { + rc io.ReadCloser + r io.Reader +} + +func (t *teeReadCloser) Read(p []byte) (int, error) { + return t.r.Read(p) +} + +func (t *teeReadCloser) Close() error { + return t.rc.Close() +} + +func containsInt(ints []int, n int) bool { + for _, i := range ints { + if i == n { + return true + } + } + return false +} + +func escapeValueStrings(m map[string]string) map[string]string { + for key, value := range m { + m[key] = url.QueryEscape(value) + } + return m +} + +func ensureValueStrings(mapOfInterface map[string]interface{}) map[string]string { + mapOfStrings := make(map[string]string) + for key, value := range mapOfInterface { + mapOfStrings[key] = ensureValueString(value) + } + return mapOfStrings +} + +func ensureValueString(value interface{}) string { + if value == nil { + return "" + } + switch v := value.(type) { + case string: + return v + case []byte: + return string(v) + default: + return fmt.Sprintf("%v", v) + } +} + +// MapToValues method converts map[string]interface{} to url.Values. +func MapToValues(m map[string]interface{}) url.Values { + v := url.Values{} + for key, value := range m { + x := reflect.ValueOf(value) + if x.Kind() == reflect.Array || x.Kind() == reflect.Slice { + for i := 0; i < x.Len(); i++ { + v.Add(key, ensureValueString(x.Index(i))) + } + } else { + v.Add(key, ensureValueString(value)) + } + } + return v +} + +// AsStringSlice method converts interface{} to []string. +// s must be of type slice or array or an error is returned. +// Each element of s will be converted to its string representation. +func AsStringSlice(s interface{}) ([]string, error) { + v := reflect.ValueOf(s) + if v.Kind() != reflect.Slice && v.Kind() != reflect.Array { + return nil, NewError("autorest", "AsStringSlice", "the value's type is not a slice or array.") + } + stringSlice := make([]string, 0, v.Len()) + + for i := 0; i < v.Len(); i++ { + stringSlice = append(stringSlice, fmt.Sprintf("%v", v.Index(i))) + } + return stringSlice, nil +} + +// String method converts interface v to string. If interface is a list, it +// joins list elements using the separator. Note that only sep[0] will be used for +// joining if any separator is specified. +func String(v interface{}, sep ...string) string { + if len(sep) == 0 { + return ensureValueString(v) + } + stringSlice, ok := v.([]string) + if ok == false { + var err error + stringSlice, err = AsStringSlice(v) + if err != nil { + panic(fmt.Sprintf("autorest: Couldn't convert value to a string %s.", err)) + } + } + return ensureValueString(strings.Join(stringSlice, sep[0])) +} + +// Encode method encodes url path and query parameters. +func Encode(location string, v interface{}, sep ...string) string { + s := String(v, sep...) + switch strings.ToLower(location) { + case "path": + return pathEscape(s) + case "query": + return queryEscape(s) + default: + return s + } +} + +func pathEscape(s string) string { + return strings.Replace(url.QueryEscape(s), "+", "%20", -1) +} + +func queryEscape(s string) string { + return url.QueryEscape(s) +} + +// ChangeToGet turns the specified http.Request into a GET (it assumes it wasn't). +// This is mainly useful for long-running operations that use the Azure-AsyncOperation +// header, so we change the initial PUT into a GET to retrieve the final result. +func ChangeToGet(req *http.Request) *http.Request { + req.Method = "GET" + req.Body = nil + req.ContentLength = 0 + req.Header.Del("Content-Length") + return req +} + +// IsTokenRefreshError returns true if the specified error implements the TokenRefreshError +// interface. If err is a DetailedError it will walk the chain of Original errors. +func IsTokenRefreshError(err error) bool { + if _, ok := err.(adal.TokenRefreshError); ok { + return true + } + if de, ok := err.(DetailedError); ok { + return IsTokenRefreshError(de.Original) + } + return false +} + +// IsTemporaryNetworkError returns true if the specified error is a temporary network error or false +// if it's not. If the error doesn't implement the net.Error interface the return value is true. +func IsTemporaryNetworkError(err error) bool { + if netErr, ok := err.(net.Error); !ok || (ok && netErr.Temporary()) { + return true + } + return false +} + +// DrainResponseBody reads the response body then closes it. +func DrainResponseBody(resp *http.Response) error { + if resp != nil && resp.Body != nil { + _, err := io.Copy(ioutil.Discard, resp.Body) + resp.Body.Close() + return err + } + return nil +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/validation/LICENSE b/vendor/github.com/Azure/go-autorest/autorest/validation/LICENSE new file mode 100644 index 0000000..b9d6a27 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/validation/LICENSE @@ -0,0 +1,191 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2015 Microsoft Corporation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/Azure/go-autorest/autorest/validation/error.go b/vendor/github.com/Azure/go-autorest/autorest/validation/error.go new file mode 100644 index 0000000..fed156d --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/validation/error.go @@ -0,0 +1,48 @@ +package validation + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "fmt" +) + +// Error is the type that's returned when the validation of an APIs arguments constraints fails. +type Error struct { + // PackageType is the package type of the object emitting the error. For types, the value + // matches that produced the the '%T' format specifier of the fmt package. For other elements, + // such as functions, it is just the package name (e.g., "autorest"). + PackageType string + + // Method is the name of the method raising the error. + Method string + + // Message is the error message. + Message string +} + +// Error returns a string containing the details of the validation failure. +func (e Error) Error() string { + return fmt.Sprintf("%s#%s: Invalid input: %s", e.PackageType, e.Method, e.Message) +} + +// NewError creates a new Error object with the specified parameters. +// message is treated as a format string to which the optional args apply. +func NewError(packageType string, method string, message string, args ...interface{}) Error { + return Error{ + PackageType: packageType, + Method: method, + Message: fmt.Sprintf(message, args...), + } +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/validation/go.mod b/vendor/github.com/Azure/go-autorest/autorest/validation/go.mod new file mode 100644 index 0000000..b3f9b6a --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/validation/go.mod @@ -0,0 +1,8 @@ +module github.com/Azure/go-autorest/autorest/validation + +go 1.12 + +require ( + github.com/Azure/go-autorest/autorest v0.9.0 + github.com/stretchr/testify v1.3.0 +) diff --git a/vendor/github.com/Azure/go-autorest/autorest/validation/go.sum b/vendor/github.com/Azure/go-autorest/autorest/validation/go.sum new file mode 100644 index 0000000..6b9010a --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/validation/go.sum @@ -0,0 +1,24 @@ +github.com/Azure/go-autorest/autorest v0.9.0 h1:MRvx8gncNaXJqOoLmhNjUAKh33JJF8LyxPhomEtOsjs= +github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest/adal v0.5.0 h1:q2gDruN08/guU9vAjuPWff0+QIrpH6ediguzdAzXAUU= +github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/date v0.1.0 h1:YGrhWfrgtFs84+h0o46rJrlmsZtyZRg470CqAXTZaGM= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0 h1:Ww5g4zThfD/6cLb4z6xxgeyDa7QDkizMkJKe0ysZXp0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/logger v0.1.0 h1:ruG4BSDXONFRrZZJ2GUXDiUyVpayPmb1GnWeHDdaNKY= +github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/tracing v0.5.0 h1:TRn4WjSnkcSy5AEG3pnbtFSwNtwzjr4VYyQflFE619k= +github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= diff --git a/vendor/github.com/Azure/go-autorest/autorest/validation/go_mod_tidy_hack.go b/vendor/github.com/Azure/go-autorest/autorest/validation/go_mod_tidy_hack.go new file mode 100644 index 0000000..2b26685 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/validation/go_mod_tidy_hack.go @@ -0,0 +1,24 @@ +// +build modhack + +package validation + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This file, and the github.com/Azure/go-autorest/autorest import, won't actually become part of +// the resultant binary. + +// Necessary for safely adding multi-module repo. +// See: https://github.com/golang/go/wiki/Modules#is-it-possible-to-add-a-module-to-a-multi-module-repository +import _ "github.com/Azure/go-autorest/autorest" diff --git a/vendor/github.com/Azure/go-autorest/autorest/validation/validation.go b/vendor/github.com/Azure/go-autorest/autorest/validation/validation.go new file mode 100644 index 0000000..65899b6 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/validation/validation.go @@ -0,0 +1,400 @@ +/* +Package validation provides methods for validating parameter value using reflection. +*/ +package validation + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "fmt" + "reflect" + "regexp" + "strings" +) + +// Constraint stores constraint name, target field name +// Rule and chain validations. +type Constraint struct { + + // Target field name for validation. + Target string + + // Constraint name e.g. minLength, MaxLength, Pattern, etc. + Name string + + // Rule for constraint e.g. greater than 10, less than 5 etc. + Rule interface{} + + // Chain Validations for struct type + Chain []Constraint +} + +// Validation stores parameter-wise validation. +type Validation struct { + TargetValue interface{} + Constraints []Constraint +} + +// Constraint list +const ( + Empty = "Empty" + Null = "Null" + ReadOnly = "ReadOnly" + Pattern = "Pattern" + MaxLength = "MaxLength" + MinLength = "MinLength" + MaxItems = "MaxItems" + MinItems = "MinItems" + MultipleOf = "MultipleOf" + UniqueItems = "UniqueItems" + InclusiveMaximum = "InclusiveMaximum" + ExclusiveMaximum = "ExclusiveMaximum" + ExclusiveMinimum = "ExclusiveMinimum" + InclusiveMinimum = "InclusiveMinimum" +) + +// Validate method validates constraints on parameter +// passed in validation array. +func Validate(m []Validation) error { + for _, item := range m { + v := reflect.ValueOf(item.TargetValue) + for _, constraint := range item.Constraints { + var err error + switch v.Kind() { + case reflect.Ptr: + err = validatePtr(v, constraint) + case reflect.String: + err = validateString(v, constraint) + case reflect.Struct: + err = validateStruct(v, constraint) + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + err = validateInt(v, constraint) + case reflect.Float32, reflect.Float64: + err = validateFloat(v, constraint) + case reflect.Array, reflect.Slice, reflect.Map: + err = validateArrayMap(v, constraint) + default: + err = createError(v, constraint, fmt.Sprintf("unknown type %v", v.Kind())) + } + + if err != nil { + return err + } + } + } + return nil +} + +func validateStruct(x reflect.Value, v Constraint, name ...string) error { + //Get field name from target name which is in format a.b.c + s := strings.Split(v.Target, ".") + f := x.FieldByName(s[len(s)-1]) + if isZero(f) { + return createError(x, v, fmt.Sprintf("field %q doesn't exist", v.Target)) + } + + return Validate([]Validation{ + { + TargetValue: getInterfaceValue(f), + Constraints: []Constraint{v}, + }, + }) +} + +func validatePtr(x reflect.Value, v Constraint) error { + if v.Name == ReadOnly { + if !x.IsNil() { + return createError(x.Elem(), v, "readonly parameter; must send as nil or empty in request") + } + return nil + } + if x.IsNil() { + return checkNil(x, v) + } + if v.Chain != nil { + return Validate([]Validation{ + { + TargetValue: getInterfaceValue(x.Elem()), + Constraints: v.Chain, + }, + }) + } + return nil +} + +func validateInt(x reflect.Value, v Constraint) error { + i := x.Int() + r, ok := toInt64(v.Rule) + if !ok { + return createError(x, v, fmt.Sprintf("rule must be integer value for %v constraint; got: %v", v.Name, v.Rule)) + } + switch v.Name { + case MultipleOf: + if i%r != 0 { + return createError(x, v, fmt.Sprintf("value must be a multiple of %v", r)) + } + case ExclusiveMinimum: + if i <= r { + return createError(x, v, fmt.Sprintf("value must be greater than %v", r)) + } + case ExclusiveMaximum: + if i >= r { + return createError(x, v, fmt.Sprintf("value must be less than %v", r)) + } + case InclusiveMinimum: + if i < r { + return createError(x, v, fmt.Sprintf("value must be greater than or equal to %v", r)) + } + case InclusiveMaximum: + if i > r { + return createError(x, v, fmt.Sprintf("value must be less than or equal to %v", r)) + } + default: + return createError(x, v, fmt.Sprintf("constraint %v is not applicable for type integer", v.Name)) + } + return nil +} + +func validateFloat(x reflect.Value, v Constraint) error { + f := x.Float() + r, ok := v.Rule.(float64) + if !ok { + return createError(x, v, fmt.Sprintf("rule must be float value for %v constraint; got: %v", v.Name, v.Rule)) + } + switch v.Name { + case ExclusiveMinimum: + if f <= r { + return createError(x, v, fmt.Sprintf("value must be greater than %v", r)) + } + case ExclusiveMaximum: + if f >= r { + return createError(x, v, fmt.Sprintf("value must be less than %v", r)) + } + case InclusiveMinimum: + if f < r { + return createError(x, v, fmt.Sprintf("value must be greater than or equal to %v", r)) + } + case InclusiveMaximum: + if f > r { + return createError(x, v, fmt.Sprintf("value must be less than or equal to %v", r)) + } + default: + return createError(x, v, fmt.Sprintf("constraint %s is not applicable for type float", v.Name)) + } + return nil +} + +func validateString(x reflect.Value, v Constraint) error { + s := x.String() + switch v.Name { + case Empty: + if len(s) == 0 { + return checkEmpty(x, v) + } + case Pattern: + reg, err := regexp.Compile(v.Rule.(string)) + if err != nil { + return createError(x, v, err.Error()) + } + if !reg.MatchString(s) { + return createError(x, v, fmt.Sprintf("value doesn't match pattern %v", v.Rule)) + } + case MaxLength: + if _, ok := v.Rule.(int); !ok { + return createError(x, v, fmt.Sprintf("rule must be integer value for %v constraint; got: %v", v.Name, v.Rule)) + } + if len(s) > v.Rule.(int) { + return createError(x, v, fmt.Sprintf("value length must be less than or equal to %v", v.Rule)) + } + case MinLength: + if _, ok := v.Rule.(int); !ok { + return createError(x, v, fmt.Sprintf("rule must be integer value for %v constraint; got: %v", v.Name, v.Rule)) + } + if len(s) < v.Rule.(int) { + return createError(x, v, fmt.Sprintf("value length must be greater than or equal to %v", v.Rule)) + } + case ReadOnly: + if len(s) > 0 { + return createError(reflect.ValueOf(s), v, "readonly parameter; must send as nil or empty in request") + } + default: + return createError(x, v, fmt.Sprintf("constraint %s is not applicable to string type", v.Name)) + } + + if v.Chain != nil { + return Validate([]Validation{ + { + TargetValue: getInterfaceValue(x), + Constraints: v.Chain, + }, + }) + } + return nil +} + +func validateArrayMap(x reflect.Value, v Constraint) error { + switch v.Name { + case Null: + if x.IsNil() { + return checkNil(x, v) + } + case Empty: + if x.IsNil() || x.Len() == 0 { + return checkEmpty(x, v) + } + case MaxItems: + if _, ok := v.Rule.(int); !ok { + return createError(x, v, fmt.Sprintf("rule must be integer for %v constraint; got: %v", v.Name, v.Rule)) + } + if x.Len() > v.Rule.(int) { + return createError(x, v, fmt.Sprintf("maximum item limit is %v; got: %v", v.Rule, x.Len())) + } + case MinItems: + if _, ok := v.Rule.(int); !ok { + return createError(x, v, fmt.Sprintf("rule must be integer for %v constraint; got: %v", v.Name, v.Rule)) + } + if x.Len() < v.Rule.(int) { + return createError(x, v, fmt.Sprintf("minimum item limit is %v; got: %v", v.Rule, x.Len())) + } + case UniqueItems: + if x.Kind() == reflect.Array || x.Kind() == reflect.Slice { + if !checkForUniqueInArray(x) { + return createError(x, v, fmt.Sprintf("all items in parameter %q must be unique; got:%v", v.Target, x)) + } + } else if x.Kind() == reflect.Map { + if !checkForUniqueInMap(x) { + return createError(x, v, fmt.Sprintf("all items in parameter %q must be unique; got:%v", v.Target, x)) + } + } else { + return createError(x, v, fmt.Sprintf("type must be array, slice or map for constraint %v; got: %v", v.Name, x.Kind())) + } + case ReadOnly: + if x.Len() != 0 { + return createError(x, v, "readonly parameter; must send as nil or empty in request") + } + case Pattern: + reg, err := regexp.Compile(v.Rule.(string)) + if err != nil { + return createError(x, v, err.Error()) + } + keys := x.MapKeys() + for _, k := range keys { + if !reg.MatchString(k.String()) { + return createError(k, v, fmt.Sprintf("map key doesn't match pattern %v", v.Rule)) + } + } + default: + return createError(x, v, fmt.Sprintf("constraint %v is not applicable to array, slice and map type", v.Name)) + } + + if v.Chain != nil { + return Validate([]Validation{ + { + TargetValue: getInterfaceValue(x), + Constraints: v.Chain, + }, + }) + } + return nil +} + +func checkNil(x reflect.Value, v Constraint) error { + if _, ok := v.Rule.(bool); !ok { + return createError(x, v, fmt.Sprintf("rule must be bool value for %v constraint; got: %v", v.Name, v.Rule)) + } + if v.Rule.(bool) { + return createError(x, v, "value can not be null; required parameter") + } + return nil +} + +func checkEmpty(x reflect.Value, v Constraint) error { + if _, ok := v.Rule.(bool); !ok { + return createError(x, v, fmt.Sprintf("rule must be bool value for %v constraint; got: %v", v.Name, v.Rule)) + } + + if v.Rule.(bool) { + return createError(x, v, "value can not be null or empty; required parameter") + } + return nil +} + +func checkForUniqueInArray(x reflect.Value) bool { + if x == reflect.Zero(reflect.TypeOf(x)) || x.Len() == 0 { + return false + } + arrOfInterface := make([]interface{}, x.Len()) + + for i := 0; i < x.Len(); i++ { + arrOfInterface[i] = x.Index(i).Interface() + } + + m := make(map[interface{}]bool) + for _, val := range arrOfInterface { + if m[val] { + return false + } + m[val] = true + } + return true +} + +func checkForUniqueInMap(x reflect.Value) bool { + if x == reflect.Zero(reflect.TypeOf(x)) || x.Len() == 0 { + return false + } + mapOfInterface := make(map[interface{}]interface{}, x.Len()) + + keys := x.MapKeys() + for _, k := range keys { + mapOfInterface[k.Interface()] = x.MapIndex(k).Interface() + } + + m := make(map[interface{}]bool) + for _, val := range mapOfInterface { + if m[val] { + return false + } + m[val] = true + } + return true +} + +func getInterfaceValue(x reflect.Value) interface{} { + if x.Kind() == reflect.Invalid { + return nil + } + return x.Interface() +} + +func isZero(x interface{}) bool { + return x == reflect.Zero(reflect.TypeOf(x)).Interface() +} + +func createError(x reflect.Value, v Constraint, err string) error { + return fmt.Errorf("autorest/validation: validation failed: parameter=%s constraint=%s value=%#v details: %s", + v.Target, v.Name, getInterfaceValue(x), err) +} + +func toInt64(v interface{}) (int64, bool) { + if i64, ok := v.(int64); ok { + return i64, true + } + // older generators emit max constants as int, so if int64 fails fall back to int + if i32, ok := v.(int); ok { + return int64(i32), true + } + return 0, false +} diff --git a/vendor/github.com/Azure/go-autorest/autorest/version.go b/vendor/github.com/Azure/go-autorest/autorest/version.go new file mode 100644 index 0000000..2bf84cc --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/autorest/version.go @@ -0,0 +1,41 @@ +package autorest + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "fmt" + "runtime" +) + +const number = "v14.0.0" + +var ( + userAgent = fmt.Sprintf("Go/%s (%s-%s) go-autorest/%s", + runtime.Version(), + runtime.GOARCH, + runtime.GOOS, + number, + ) +) + +// UserAgent returns a string containing the Go version, system architecture and OS, and the go-autorest version. +func UserAgent() string { + return userAgent +} + +// Version returns the semantic version (see http://semver.org). +func Version() string { + return number +} diff --git a/vendor/github.com/Azure/go-autorest/logger/LICENSE b/vendor/github.com/Azure/go-autorest/logger/LICENSE new file mode 100644 index 0000000..b9d6a27 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/logger/LICENSE @@ -0,0 +1,191 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2015 Microsoft Corporation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/Azure/go-autorest/logger/go.mod b/vendor/github.com/Azure/go-autorest/logger/go.mod new file mode 100644 index 0000000..f22ed56 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/logger/go.mod @@ -0,0 +1,3 @@ +module github.com/Azure/go-autorest/logger + +go 1.12 diff --git a/vendor/github.com/Azure/go-autorest/logger/logger.go b/vendor/github.com/Azure/go-autorest/logger/logger.go new file mode 100644 index 0000000..da09f39 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/logger/logger.go @@ -0,0 +1,328 @@ +package logger + +// Copyright 2017 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "bytes" + "fmt" + "io" + "io/ioutil" + "net/http" + "net/url" + "os" + "strings" + "sync" + "time" +) + +// LevelType tells a logger the minimum level to log. When code reports a log entry, +// the LogLevel indicates the level of the log entry. The logger only records entries +// whose level is at least the level it was told to log. See the Log* constants. +// For example, if a logger is configured with LogError, then LogError, LogPanic, +// and LogFatal entries will be logged; lower level entries are ignored. +type LevelType uint32 + +const ( + // LogNone tells a logger not to log any entries passed to it. + LogNone LevelType = iota + + // LogFatal tells a logger to log all LogFatal entries passed to it. + LogFatal + + // LogPanic tells a logger to log all LogPanic and LogFatal entries passed to it. + LogPanic + + // LogError tells a logger to log all LogError, LogPanic and LogFatal entries passed to it. + LogError + + // LogWarning tells a logger to log all LogWarning, LogError, LogPanic and LogFatal entries passed to it. + LogWarning + + // LogInfo tells a logger to log all LogInfo, LogWarning, LogError, LogPanic and LogFatal entries passed to it. + LogInfo + + // LogDebug tells a logger to log all LogDebug, LogInfo, LogWarning, LogError, LogPanic and LogFatal entries passed to it. + LogDebug +) + +const ( + logNone = "NONE" + logFatal = "FATAL" + logPanic = "PANIC" + logError = "ERROR" + logWarning = "WARNING" + logInfo = "INFO" + logDebug = "DEBUG" + logUnknown = "UNKNOWN" +) + +// ParseLevel converts the specified string into the corresponding LevelType. +func ParseLevel(s string) (lt LevelType, err error) { + switch strings.ToUpper(s) { + case logFatal: + lt = LogFatal + case logPanic: + lt = LogPanic + case logError: + lt = LogError + case logWarning: + lt = LogWarning + case logInfo: + lt = LogInfo + case logDebug: + lt = LogDebug + default: + err = fmt.Errorf("bad log level '%s'", s) + } + return +} + +// String implements the stringer interface for LevelType. +func (lt LevelType) String() string { + switch lt { + case LogNone: + return logNone + case LogFatal: + return logFatal + case LogPanic: + return logPanic + case LogError: + return logError + case LogWarning: + return logWarning + case LogInfo: + return logInfo + case LogDebug: + return logDebug + default: + return logUnknown + } +} + +// Filter defines functions for filtering HTTP request/response content. +type Filter struct { + // URL returns a potentially modified string representation of a request URL. + URL func(u *url.URL) string + + // Header returns a potentially modified set of values for the specified key. + // To completely exclude the header key/values return false. + Header func(key string, val []string) (bool, []string) + + // Body returns a potentially modified request/response body. + Body func(b []byte) []byte +} + +func (f Filter) processURL(u *url.URL) string { + if f.URL == nil { + return u.String() + } + return f.URL(u) +} + +func (f Filter) processHeader(k string, val []string) (bool, []string) { + if f.Header == nil { + return true, val + } + return f.Header(k, val) +} + +func (f Filter) processBody(b []byte) []byte { + if f.Body == nil { + return b + } + return f.Body(b) +} + +// Writer defines methods for writing to a logging facility. +type Writer interface { + // Writeln writes the specified message with the standard log entry header and new-line character. + Writeln(level LevelType, message string) + + // Writef writes the specified format specifier with the standard log entry header and no new-line character. + Writef(level LevelType, format string, a ...interface{}) + + // WriteRequest writes the specified HTTP request to the logger if the log level is greater than + // or equal to LogInfo. The request body, if set, is logged at level LogDebug or higher. + // Custom filters can be specified to exclude URL, header, and/or body content from the log. + // By default no request content is excluded. + WriteRequest(req *http.Request, filter Filter) + + // WriteResponse writes the specified HTTP response to the logger if the log level is greater than + // or equal to LogInfo. The response body, if set, is logged at level LogDebug or higher. + // Custom filters can be specified to exclude URL, header, and/or body content from the log. + // By default no response content is excluded. + WriteResponse(resp *http.Response, filter Filter) +} + +// Instance is the default log writer initialized during package init. +// This can be replaced with a custom implementation as required. +var Instance Writer + +// default log level +var logLevel = LogNone + +// Level returns the value specified in AZURE_GO_AUTOREST_LOG_LEVEL. +// If no value was specified the default value is LogNone. +// Custom loggers can call this to retrieve the configured log level. +func Level() LevelType { + return logLevel +} + +func init() { + // separated for testing purposes + initDefaultLogger() +} + +func initDefaultLogger() { + // init with nilLogger so callers don't have to do a nil check on Default + Instance = nilLogger{} + llStr := strings.ToLower(os.Getenv("AZURE_GO_SDK_LOG_LEVEL")) + if llStr == "" { + return + } + var err error + logLevel, err = ParseLevel(llStr) + if err != nil { + fmt.Fprintf(os.Stderr, "go-autorest: failed to parse log level: %s\n", err.Error()) + return + } + if logLevel == LogNone { + return + } + // default to stderr + dest := os.Stderr + lfStr := os.Getenv("AZURE_GO_SDK_LOG_FILE") + if strings.EqualFold(lfStr, "stdout") { + dest = os.Stdout + } else if lfStr != "" { + lf, err := os.Create(lfStr) + if err == nil { + dest = lf + } else { + fmt.Fprintf(os.Stderr, "go-autorest: failed to create log file, using stderr: %s\n", err.Error()) + } + } + Instance = fileLogger{ + logLevel: logLevel, + mu: &sync.Mutex{}, + logFile: dest, + } +} + +// the nil logger does nothing +type nilLogger struct{} + +func (nilLogger) Writeln(LevelType, string) {} + +func (nilLogger) Writef(LevelType, string, ...interface{}) {} + +func (nilLogger) WriteRequest(*http.Request, Filter) {} + +func (nilLogger) WriteResponse(*http.Response, Filter) {} + +// A File is used instead of a Logger so the stream can be flushed after every write. +type fileLogger struct { + logLevel LevelType + mu *sync.Mutex // for synchronizing writes to logFile + logFile *os.File +} + +func (fl fileLogger) Writeln(level LevelType, message string) { + fl.Writef(level, "%s\n", message) +} + +func (fl fileLogger) Writef(level LevelType, format string, a ...interface{}) { + if fl.logLevel >= level { + fl.mu.Lock() + defer fl.mu.Unlock() + fmt.Fprintf(fl.logFile, "%s %s", entryHeader(level), fmt.Sprintf(format, a...)) + fl.logFile.Sync() + } +} + +func (fl fileLogger) WriteRequest(req *http.Request, filter Filter) { + if req == nil || fl.logLevel < LogInfo { + return + } + b := &bytes.Buffer{} + fmt.Fprintf(b, "%s REQUEST: %s %s\n", entryHeader(LogInfo), req.Method, filter.processURL(req.URL)) + // dump headers + for k, v := range req.Header { + if ok, mv := filter.processHeader(k, v); ok { + fmt.Fprintf(b, "%s: %s\n", k, strings.Join(mv, ",")) + } + } + if fl.shouldLogBody(req.Header, req.Body) { + // dump body + body, err := ioutil.ReadAll(req.Body) + if err == nil { + fmt.Fprintln(b, string(filter.processBody(body))) + if nc, ok := req.Body.(io.Seeker); ok { + // rewind to the beginning + nc.Seek(0, io.SeekStart) + } else { + // recreate the body + req.Body = ioutil.NopCloser(bytes.NewReader(body)) + } + } else { + fmt.Fprintf(b, "failed to read body: %v\n", err) + } + } + fl.mu.Lock() + defer fl.mu.Unlock() + fmt.Fprint(fl.logFile, b.String()) + fl.logFile.Sync() +} + +func (fl fileLogger) WriteResponse(resp *http.Response, filter Filter) { + if resp == nil || fl.logLevel < LogInfo { + return + } + b := &bytes.Buffer{} + fmt.Fprintf(b, "%s RESPONSE: %d %s\n", entryHeader(LogInfo), resp.StatusCode, filter.processURL(resp.Request.URL)) + // dump headers + for k, v := range resp.Header { + if ok, mv := filter.processHeader(k, v); ok { + fmt.Fprintf(b, "%s: %s\n", k, strings.Join(mv, ",")) + } + } + if fl.shouldLogBody(resp.Header, resp.Body) { + // dump body + defer resp.Body.Close() + body, err := ioutil.ReadAll(resp.Body) + if err == nil { + fmt.Fprintln(b, string(filter.processBody(body))) + resp.Body = ioutil.NopCloser(bytes.NewReader(body)) + } else { + fmt.Fprintf(b, "failed to read body: %v\n", err) + } + } + fl.mu.Lock() + defer fl.mu.Unlock() + fmt.Fprint(fl.logFile, b.String()) + fl.logFile.Sync() +} + +// returns true if the provided body should be included in the log +func (fl fileLogger) shouldLogBody(header http.Header, body io.ReadCloser) bool { + ct := header.Get("Content-Type") + return fl.logLevel >= LogDebug && body != nil && !strings.Contains(ct, "application/octet-stream") +} + +// creates standard header for log entries, it contains a timestamp and the log level +func entryHeader(level LevelType) string { + // this format provides a fixed number of digits so the size of the timestamp is constant + return fmt.Sprintf("(%s) %s:", time.Now().Format("2006-01-02T15:04:05.0000000Z07:00"), level.String()) +} diff --git a/vendor/github.com/Azure/go-autorest/tracing/LICENSE b/vendor/github.com/Azure/go-autorest/tracing/LICENSE new file mode 100644 index 0000000..b9d6a27 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/tracing/LICENSE @@ -0,0 +1,191 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2015 Microsoft Corporation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/Azure/go-autorest/tracing/go.mod b/vendor/github.com/Azure/go-autorest/tracing/go.mod new file mode 100644 index 0000000..25c34c1 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/tracing/go.mod @@ -0,0 +1,3 @@ +module github.com/Azure/go-autorest/tracing + +go 1.12 diff --git a/vendor/github.com/Azure/go-autorest/tracing/tracing.go b/vendor/github.com/Azure/go-autorest/tracing/tracing.go new file mode 100644 index 0000000..0e7a6e9 --- /dev/null +++ b/vendor/github.com/Azure/go-autorest/tracing/tracing.go @@ -0,0 +1,67 @@ +package tracing + +// Copyright 2018 Microsoft Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import ( + "context" + "net/http" +) + +// Tracer represents an HTTP tracing facility. +type Tracer interface { + NewTransport(base *http.Transport) http.RoundTripper + StartSpan(ctx context.Context, name string) context.Context + EndSpan(ctx context.Context, httpStatusCode int, err error) +} + +var ( + tracer Tracer +) + +// Register will register the provided Tracer. Pass nil to unregister a Tracer. +func Register(t Tracer) { + tracer = t +} + +// IsEnabled returns true if a Tracer has been registered. +func IsEnabled() bool { + return tracer != nil +} + +// NewTransport creates a new instrumenting http.RoundTripper for the +// registered Tracer. If no Tracer has been registered it returns nil. +func NewTransport(base *http.Transport) http.RoundTripper { + if tracer != nil { + return tracer.NewTransport(base) + } + return nil +} + +// StartSpan starts a trace span with the specified name, associating it with the +// provided context. Has no effect if a Tracer has not been registered. +func StartSpan(ctx context.Context, name string) context.Context { + if tracer != nil { + return tracer.StartSpan(ctx, name) + } + return ctx +} + +// EndSpan ends a previously started span stored in the context. +// Has no effect if a Tracer has not been registered. +func EndSpan(ctx context.Context, httpStatusCode int, err error) { + if tracer != nil { + tracer.EndSpan(ctx, httpStatusCode, err) + } +} diff --git a/vendor/github.com/BurntSushi/toml/.gitignore b/vendor/github.com/BurntSushi/toml/.gitignore new file mode 100644 index 0000000..0cd3800 --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/.gitignore @@ -0,0 +1,5 @@ +TAGS +tags +.*.swp +tomlcheck/tomlcheck +toml.test diff --git a/vendor/github.com/BurntSushi/toml/.travis.yml b/vendor/github.com/BurntSushi/toml/.travis.yml new file mode 100644 index 0000000..8b8afc4 --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/.travis.yml @@ -0,0 +1,15 @@ +language: go +go: + - 1.1 + - 1.2 + - 1.3 + - 1.4 + - 1.5 + - 1.6 + - tip +install: + - go install ./... + - go get github.com/BurntSushi/toml-test +script: + - export PATH="$PATH:$HOME/gopath/bin" + - make test diff --git a/vendor/github.com/BurntSushi/toml/COMPATIBLE b/vendor/github.com/BurntSushi/toml/COMPATIBLE new file mode 100644 index 0000000..6efcfd0 --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/COMPATIBLE @@ -0,0 +1,3 @@ +Compatible with TOML version +[v0.4.0](https://github.com/toml-lang/toml/blob/v0.4.0/versions/en/toml-v0.4.0.md) + diff --git a/vendor/github.com/BurntSushi/toml/COPYING b/vendor/github.com/BurntSushi/toml/COPYING new file mode 100644 index 0000000..01b5743 --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/COPYING @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2013 TOML authors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/github.com/BurntSushi/toml/Makefile b/vendor/github.com/BurntSushi/toml/Makefile new file mode 100644 index 0000000..3600848 --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/Makefile @@ -0,0 +1,19 @@ +install: + go install ./... + +test: install + go test -v + toml-test toml-test-decoder + toml-test -encoder toml-test-encoder + +fmt: + gofmt -w *.go */*.go + colcheck *.go */*.go + +tags: + find ./ -name '*.go' -print0 | xargs -0 gotags > TAGS + +push: + git push origin master + git push github master + diff --git a/vendor/github.com/BurntSushi/toml/README.md b/vendor/github.com/BurntSushi/toml/README.md new file mode 100644 index 0000000..7c1b37e --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/README.md @@ -0,0 +1,218 @@ +## TOML parser and encoder for Go with reflection + +TOML stands for Tom's Obvious, Minimal Language. This Go package provides a +reflection interface similar to Go's standard library `json` and `xml` +packages. This package also supports the `encoding.TextUnmarshaler` and +`encoding.TextMarshaler` interfaces so that you can define custom data +representations. (There is an example of this below.) + +Spec: https://github.com/toml-lang/toml + +Compatible with TOML version +[v0.4.0](https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.4.0.md) + +Documentation: https://godoc.org/github.com/BurntSushi/toml + +Installation: + +```bash +go get github.com/BurntSushi/toml +``` + +Try the toml validator: + +```bash +go get github.com/BurntSushi/toml/cmd/tomlv +tomlv some-toml-file.toml +``` + +[![Build Status](https://travis-ci.org/BurntSushi/toml.svg?branch=master)](https://travis-ci.org/BurntSushi/toml) [![GoDoc](https://godoc.org/github.com/BurntSushi/toml?status.svg)](https://godoc.org/github.com/BurntSushi/toml) + +### Testing + +This package passes all tests in +[toml-test](https://github.com/BurntSushi/toml-test) for both the decoder +and the encoder. + +### Examples + +This package works similarly to how the Go standard library handles `XML` +and `JSON`. Namely, data is loaded into Go values via reflection. + +For the simplest example, consider some TOML file as just a list of keys +and values: + +```toml +Age = 25 +Cats = [ "Cauchy", "Plato" ] +Pi = 3.14 +Perfection = [ 6, 28, 496, 8128 ] +DOB = 1987-07-05T05:45:00Z +``` + +Which could be defined in Go as: + +```go +type Config struct { + Age int + Cats []string + Pi float64 + Perfection []int + DOB time.Time // requires `import time` +} +``` + +And then decoded with: + +```go +var conf Config +if _, err := toml.Decode(tomlData, &conf); err != nil { + // handle error +} +``` + +You can also use struct tags if your struct field name doesn't map to a TOML +key value directly: + +```toml +some_key_NAME = "wat" +``` + +```go +type TOML struct { + ObscureKey string `toml:"some_key_NAME"` +} +``` + +### Using the `encoding.TextUnmarshaler` interface + +Here's an example that automatically parses duration strings into +`time.Duration` values: + +```toml +[[song]] +name = "Thunder Road" +duration = "4m49s" + +[[song]] +name = "Stairway to Heaven" +duration = "8m03s" +``` + +Which can be decoded with: + +```go +type song struct { + Name string + Duration duration +} +type songs struct { + Song []song +} +var favorites songs +if _, err := toml.Decode(blob, &favorites); err != nil { + log.Fatal(err) +} + +for _, s := range favorites.Song { + fmt.Printf("%s (%s)\n", s.Name, s.Duration) +} +``` + +And you'll also need a `duration` type that satisfies the +`encoding.TextUnmarshaler` interface: + +```go +type duration struct { + time.Duration +} + +func (d *duration) UnmarshalText(text []byte) error { + var err error + d.Duration, err = time.ParseDuration(string(text)) + return err +} +``` + +### More complex usage + +Here's an example of how to load the example from the official spec page: + +```toml +# This is a TOML document. Boom. + +title = "TOML Example" + +[owner] +name = "Tom Preston-Werner" +organization = "GitHub" +bio = "GitHub Cofounder & CEO\nLikes tater tots and beer." +dob = 1979-05-27T07:32:00Z # First class dates? Why not? + +[database] +server = "192.168.1.1" +ports = [ 8001, 8001, 8002 ] +connection_max = 5000 +enabled = true + +[servers] + + # You can indent as you please. Tabs or spaces. TOML don't care. + [servers.alpha] + ip = "10.0.0.1" + dc = "eqdc10" + + [servers.beta] + ip = "10.0.0.2" + dc = "eqdc10" + +[clients] +data = [ ["gamma", "delta"], [1, 2] ] # just an update to make sure parsers support it + +# Line breaks are OK when inside arrays +hosts = [ + "alpha", + "omega" +] +``` + +And the corresponding Go types are: + +```go +type tomlConfig struct { + Title string + Owner ownerInfo + DB database `toml:"database"` + Servers map[string]server + Clients clients +} + +type ownerInfo struct { + Name string + Org string `toml:"organization"` + Bio string + DOB time.Time +} + +type database struct { + Server string + Ports []int + ConnMax int `toml:"connection_max"` + Enabled bool +} + +type server struct { + IP string + DC string +} + +type clients struct { + Data [][]interface{} + Hosts []string +} +``` + +Note that a case insensitive match will be tried if an exact match can't be +found. + +A working example of the above can be found in `_examples/example.{go,toml}`. diff --git a/vendor/github.com/BurntSushi/toml/decode.go b/vendor/github.com/BurntSushi/toml/decode.go new file mode 100644 index 0000000..b0fd51d --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/decode.go @@ -0,0 +1,509 @@ +package toml + +import ( + "fmt" + "io" + "io/ioutil" + "math" + "reflect" + "strings" + "time" +) + +func e(format string, args ...interface{}) error { + return fmt.Errorf("toml: "+format, args...) +} + +// Unmarshaler is the interface implemented by objects that can unmarshal a +// TOML description of themselves. +type Unmarshaler interface { + UnmarshalTOML(interface{}) error +} + +// Unmarshal decodes the contents of `p` in TOML format into a pointer `v`. +func Unmarshal(p []byte, v interface{}) error { + _, err := Decode(string(p), v) + return err +} + +// Primitive is a TOML value that hasn't been decoded into a Go value. +// When using the various `Decode*` functions, the type `Primitive` may +// be given to any value, and its decoding will be delayed. +// +// A `Primitive` value can be decoded using the `PrimitiveDecode` function. +// +// The underlying representation of a `Primitive` value is subject to change. +// Do not rely on it. +// +// N.B. Primitive values are still parsed, so using them will only avoid +// the overhead of reflection. They can be useful when you don't know the +// exact type of TOML data until run time. +type Primitive struct { + undecoded interface{} + context Key +} + +// DEPRECATED! +// +// Use MetaData.PrimitiveDecode instead. +func PrimitiveDecode(primValue Primitive, v interface{}) error { + md := MetaData{decoded: make(map[string]bool)} + return md.unify(primValue.undecoded, rvalue(v)) +} + +// PrimitiveDecode is just like the other `Decode*` functions, except it +// decodes a TOML value that has already been parsed. Valid primitive values +// can *only* be obtained from values filled by the decoder functions, +// including this method. (i.e., `v` may contain more `Primitive` +// values.) +// +// Meta data for primitive values is included in the meta data returned by +// the `Decode*` functions with one exception: keys returned by the Undecoded +// method will only reflect keys that were decoded. Namely, any keys hidden +// behind a Primitive will be considered undecoded. Executing this method will +// update the undecoded keys in the meta data. (See the example.) +func (md *MetaData) PrimitiveDecode(primValue Primitive, v interface{}) error { + md.context = primValue.context + defer func() { md.context = nil }() + return md.unify(primValue.undecoded, rvalue(v)) +} + +// Decode will decode the contents of `data` in TOML format into a pointer +// `v`. +// +// TOML hashes correspond to Go structs or maps. (Dealer's choice. They can be +// used interchangeably.) +// +// TOML arrays of tables correspond to either a slice of structs or a slice +// of maps. +// +// TOML datetimes correspond to Go `time.Time` values. +// +// All other TOML types (float, string, int, bool and array) correspond +// to the obvious Go types. +// +// An exception to the above rules is if a type implements the +// encoding.TextUnmarshaler interface. In this case, any primitive TOML value +// (floats, strings, integers, booleans and datetimes) will be converted to +// a byte string and given to the value's UnmarshalText method. See the +// Unmarshaler example for a demonstration with time duration strings. +// +// Key mapping +// +// TOML keys can map to either keys in a Go map or field names in a Go +// struct. The special `toml` struct tag may be used to map TOML keys to +// struct fields that don't match the key name exactly. (See the example.) +// A case insensitive match to struct names will be tried if an exact match +// can't be found. +// +// The mapping between TOML values and Go values is loose. That is, there +// may exist TOML values that cannot be placed into your representation, and +// there may be parts of your representation that do not correspond to +// TOML values. This loose mapping can be made stricter by using the IsDefined +// and/or Undecoded methods on the MetaData returned. +// +// This decoder will not handle cyclic types. If a cyclic type is passed, +// `Decode` will not terminate. +func Decode(data string, v interface{}) (MetaData, error) { + rv := reflect.ValueOf(v) + if rv.Kind() != reflect.Ptr { + return MetaData{}, e("Decode of non-pointer %s", reflect.TypeOf(v)) + } + if rv.IsNil() { + return MetaData{}, e("Decode of nil %s", reflect.TypeOf(v)) + } + p, err := parse(data) + if err != nil { + return MetaData{}, err + } + md := MetaData{ + p.mapping, p.types, p.ordered, + make(map[string]bool, len(p.ordered)), nil, + } + return md, md.unify(p.mapping, indirect(rv)) +} + +// DecodeFile is just like Decode, except it will automatically read the +// contents of the file at `fpath` and decode it for you. +func DecodeFile(fpath string, v interface{}) (MetaData, error) { + bs, err := ioutil.ReadFile(fpath) + if err != nil { + return MetaData{}, err + } + return Decode(string(bs), v) +} + +// DecodeReader is just like Decode, except it will consume all bytes +// from the reader and decode it for you. +func DecodeReader(r io.Reader, v interface{}) (MetaData, error) { + bs, err := ioutil.ReadAll(r) + if err != nil { + return MetaData{}, err + } + return Decode(string(bs), v) +} + +// unify performs a sort of type unification based on the structure of `rv`, +// which is the client representation. +// +// Any type mismatch produces an error. Finding a type that we don't know +// how to handle produces an unsupported type error. +func (md *MetaData) unify(data interface{}, rv reflect.Value) error { + + // Special case. Look for a `Primitive` value. + if rv.Type() == reflect.TypeOf((*Primitive)(nil)).Elem() { + // Save the undecoded data and the key context into the primitive + // value. + context := make(Key, len(md.context)) + copy(context, md.context) + rv.Set(reflect.ValueOf(Primitive{ + undecoded: data, + context: context, + })) + return nil + } + + // Special case. Unmarshaler Interface support. + if rv.CanAddr() { + if v, ok := rv.Addr().Interface().(Unmarshaler); ok { + return v.UnmarshalTOML(data) + } + } + + // Special case. Handle time.Time values specifically. + // TODO: Remove this code when we decide to drop support for Go 1.1. + // This isn't necessary in Go 1.2 because time.Time satisfies the encoding + // interfaces. + if rv.Type().AssignableTo(rvalue(time.Time{}).Type()) { + return md.unifyDatetime(data, rv) + } + + // Special case. Look for a value satisfying the TextUnmarshaler interface. + if v, ok := rv.Interface().(TextUnmarshaler); ok { + return md.unifyText(data, v) + } + // BUG(burntsushi) + // The behavior here is incorrect whenever a Go type satisfies the + // encoding.TextUnmarshaler interface but also corresponds to a TOML + // hash or array. In particular, the unmarshaler should only be applied + // to primitive TOML values. But at this point, it will be applied to + // all kinds of values and produce an incorrect error whenever those values + // are hashes or arrays (including arrays of tables). + + k := rv.Kind() + + // laziness + if k >= reflect.Int && k <= reflect.Uint64 { + return md.unifyInt(data, rv) + } + switch k { + case reflect.Ptr: + elem := reflect.New(rv.Type().Elem()) + err := md.unify(data, reflect.Indirect(elem)) + if err != nil { + return err + } + rv.Set(elem) + return nil + case reflect.Struct: + return md.unifyStruct(data, rv) + case reflect.Map: + return md.unifyMap(data, rv) + case reflect.Array: + return md.unifyArray(data, rv) + case reflect.Slice: + return md.unifySlice(data, rv) + case reflect.String: + return md.unifyString(data, rv) + case reflect.Bool: + return md.unifyBool(data, rv) + case reflect.Interface: + // we only support empty interfaces. + if rv.NumMethod() > 0 { + return e("unsupported type %s", rv.Type()) + } + return md.unifyAnything(data, rv) + case reflect.Float32: + fallthrough + case reflect.Float64: + return md.unifyFloat64(data, rv) + } + return e("unsupported type %s", rv.Kind()) +} + +func (md *MetaData) unifyStruct(mapping interface{}, rv reflect.Value) error { + tmap, ok := mapping.(map[string]interface{}) + if !ok { + if mapping == nil { + return nil + } + return e("type mismatch for %s: expected table but found %T", + rv.Type().String(), mapping) + } + + for key, datum := range tmap { + var f *field + fields := cachedTypeFields(rv.Type()) + for i := range fields { + ff := &fields[i] + if ff.name == key { + f = ff + break + } + if f == nil && strings.EqualFold(ff.name, key) { + f = ff + } + } + if f != nil { + subv := rv + for _, i := range f.index { + subv = indirect(subv.Field(i)) + } + if isUnifiable(subv) { + md.decoded[md.context.add(key).String()] = true + md.context = append(md.context, key) + if err := md.unify(datum, subv); err != nil { + return err + } + md.context = md.context[0 : len(md.context)-1] + } else if f.name != "" { + // Bad user! No soup for you! + return e("cannot write unexported field %s.%s", + rv.Type().String(), f.name) + } + } + } + return nil +} + +func (md *MetaData) unifyMap(mapping interface{}, rv reflect.Value) error { + tmap, ok := mapping.(map[string]interface{}) + if !ok { + if tmap == nil { + return nil + } + return badtype("map", mapping) + } + if rv.IsNil() { + rv.Set(reflect.MakeMap(rv.Type())) + } + for k, v := range tmap { + md.decoded[md.context.add(k).String()] = true + md.context = append(md.context, k) + + rvkey := indirect(reflect.New(rv.Type().Key())) + rvval := reflect.Indirect(reflect.New(rv.Type().Elem())) + if err := md.unify(v, rvval); err != nil { + return err + } + md.context = md.context[0 : len(md.context)-1] + + rvkey.SetString(k) + rv.SetMapIndex(rvkey, rvval) + } + return nil +} + +func (md *MetaData) unifyArray(data interface{}, rv reflect.Value) error { + datav := reflect.ValueOf(data) + if datav.Kind() != reflect.Slice { + if !datav.IsValid() { + return nil + } + return badtype("slice", data) + } + sliceLen := datav.Len() + if sliceLen != rv.Len() { + return e("expected array length %d; got TOML array of length %d", + rv.Len(), sliceLen) + } + return md.unifySliceArray(datav, rv) +} + +func (md *MetaData) unifySlice(data interface{}, rv reflect.Value) error { + datav := reflect.ValueOf(data) + if datav.Kind() != reflect.Slice { + if !datav.IsValid() { + return nil + } + return badtype("slice", data) + } + n := datav.Len() + if rv.IsNil() || rv.Cap() < n { + rv.Set(reflect.MakeSlice(rv.Type(), n, n)) + } + rv.SetLen(n) + return md.unifySliceArray(datav, rv) +} + +func (md *MetaData) unifySliceArray(data, rv reflect.Value) error { + sliceLen := data.Len() + for i := 0; i < sliceLen; i++ { + v := data.Index(i).Interface() + sliceval := indirect(rv.Index(i)) + if err := md.unify(v, sliceval); err != nil { + return err + } + } + return nil +} + +func (md *MetaData) unifyDatetime(data interface{}, rv reflect.Value) error { + if _, ok := data.(time.Time); ok { + rv.Set(reflect.ValueOf(data)) + return nil + } + return badtype("time.Time", data) +} + +func (md *MetaData) unifyString(data interface{}, rv reflect.Value) error { + if s, ok := data.(string); ok { + rv.SetString(s) + return nil + } + return badtype("string", data) +} + +func (md *MetaData) unifyFloat64(data interface{}, rv reflect.Value) error { + if num, ok := data.(float64); ok { + switch rv.Kind() { + case reflect.Float32: + fallthrough + case reflect.Float64: + rv.SetFloat(num) + default: + panic("bug") + } + return nil + } + return badtype("float", data) +} + +func (md *MetaData) unifyInt(data interface{}, rv reflect.Value) error { + if num, ok := data.(int64); ok { + if rv.Kind() >= reflect.Int && rv.Kind() <= reflect.Int64 { + switch rv.Kind() { + case reflect.Int, reflect.Int64: + // No bounds checking necessary. + case reflect.Int8: + if num < math.MinInt8 || num > math.MaxInt8 { + return e("value %d is out of range for int8", num) + } + case reflect.Int16: + if num < math.MinInt16 || num > math.MaxInt16 { + return e("value %d is out of range for int16", num) + } + case reflect.Int32: + if num < math.MinInt32 || num > math.MaxInt32 { + return e("value %d is out of range for int32", num) + } + } + rv.SetInt(num) + } else if rv.Kind() >= reflect.Uint && rv.Kind() <= reflect.Uint64 { + unum := uint64(num) + switch rv.Kind() { + case reflect.Uint, reflect.Uint64: + // No bounds checking necessary. + case reflect.Uint8: + if num < 0 || unum > math.MaxUint8 { + return e("value %d is out of range for uint8", num) + } + case reflect.Uint16: + if num < 0 || unum > math.MaxUint16 { + return e("value %d is out of range for uint16", num) + } + case reflect.Uint32: + if num < 0 || unum > math.MaxUint32 { + return e("value %d is out of range for uint32", num) + } + } + rv.SetUint(unum) + } else { + panic("unreachable") + } + return nil + } + return badtype("integer", data) +} + +func (md *MetaData) unifyBool(data interface{}, rv reflect.Value) error { + if b, ok := data.(bool); ok { + rv.SetBool(b) + return nil + } + return badtype("boolean", data) +} + +func (md *MetaData) unifyAnything(data interface{}, rv reflect.Value) error { + rv.Set(reflect.ValueOf(data)) + return nil +} + +func (md *MetaData) unifyText(data interface{}, v TextUnmarshaler) error { + var s string + switch sdata := data.(type) { + case TextMarshaler: + text, err := sdata.MarshalText() + if err != nil { + return err + } + s = string(text) + case fmt.Stringer: + s = sdata.String() + case string: + s = sdata + case bool: + s = fmt.Sprintf("%v", sdata) + case int64: + s = fmt.Sprintf("%d", sdata) + case float64: + s = fmt.Sprintf("%f", sdata) + default: + return badtype("primitive (string-like)", data) + } + if err := v.UnmarshalText([]byte(s)); err != nil { + return err + } + return nil +} + +// rvalue returns a reflect.Value of `v`. All pointers are resolved. +func rvalue(v interface{}) reflect.Value { + return indirect(reflect.ValueOf(v)) +} + +// indirect returns the value pointed to by a pointer. +// Pointers are followed until the value is not a pointer. +// New values are allocated for each nil pointer. +// +// An exception to this rule is if the value satisfies an interface of +// interest to us (like encoding.TextUnmarshaler). +func indirect(v reflect.Value) reflect.Value { + if v.Kind() != reflect.Ptr { + if v.CanSet() { + pv := v.Addr() + if _, ok := pv.Interface().(TextUnmarshaler); ok { + return pv + } + } + return v + } + if v.IsNil() { + v.Set(reflect.New(v.Type().Elem())) + } + return indirect(reflect.Indirect(v)) +} + +func isUnifiable(rv reflect.Value) bool { + if rv.CanSet() { + return true + } + if _, ok := rv.Interface().(TextUnmarshaler); ok { + return true + } + return false +} + +func badtype(expected string, data interface{}) error { + return e("cannot load TOML value of type %T into a Go %s", data, expected) +} diff --git a/vendor/github.com/BurntSushi/toml/decode_meta.go b/vendor/github.com/BurntSushi/toml/decode_meta.go new file mode 100644 index 0000000..b9914a6 --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/decode_meta.go @@ -0,0 +1,121 @@ +package toml + +import "strings" + +// MetaData allows access to meta information about TOML data that may not +// be inferrable via reflection. In particular, whether a key has been defined +// and the TOML type of a key. +type MetaData struct { + mapping map[string]interface{} + types map[string]tomlType + keys []Key + decoded map[string]bool + context Key // Used only during decoding. +} + +// IsDefined returns true if the key given exists in the TOML data. The key +// should be specified hierarchially. e.g., +// +// // access the TOML key 'a.b.c' +// IsDefined("a", "b", "c") +// +// IsDefined will return false if an empty key given. Keys are case sensitive. +func (md *MetaData) IsDefined(key ...string) bool { + if len(key) == 0 { + return false + } + + var hash map[string]interface{} + var ok bool + var hashOrVal interface{} = md.mapping + for _, k := range key { + if hash, ok = hashOrVal.(map[string]interface{}); !ok { + return false + } + if hashOrVal, ok = hash[k]; !ok { + return false + } + } + return true +} + +// Type returns a string representation of the type of the key specified. +// +// Type will return the empty string if given an empty key or a key that +// does not exist. Keys are case sensitive. +func (md *MetaData) Type(key ...string) string { + fullkey := strings.Join(key, ".") + if typ, ok := md.types[fullkey]; ok { + return typ.typeString() + } + return "" +} + +// Key is the type of any TOML key, including key groups. Use (MetaData).Keys +// to get values of this type. +type Key []string + +func (k Key) String() string { + return strings.Join(k, ".") +} + +func (k Key) maybeQuotedAll() string { + var ss []string + for i := range k { + ss = append(ss, k.maybeQuoted(i)) + } + return strings.Join(ss, ".") +} + +func (k Key) maybeQuoted(i int) string { + quote := false + for _, c := range k[i] { + if !isBareKeyChar(c) { + quote = true + break + } + } + if quote { + return "\"" + strings.Replace(k[i], "\"", "\\\"", -1) + "\"" + } + return k[i] +} + +func (k Key) add(piece string) Key { + newKey := make(Key, len(k)+1) + copy(newKey, k) + newKey[len(k)] = piece + return newKey +} + +// Keys returns a slice of every key in the TOML data, including key groups. +// Each key is itself a slice, where the first element is the top of the +// hierarchy and the last is the most specific. +// +// The list will have the same order as the keys appeared in the TOML data. +// +// All keys returned are non-empty. +func (md *MetaData) Keys() []Key { + return md.keys +} + +// Undecoded returns all keys that have not been decoded in the order in which +// they appear in the original TOML document. +// +// This includes keys that haven't been decoded because of a Primitive value. +// Once the Primitive value is decoded, the keys will be considered decoded. +// +// Also note that decoding into an empty interface will result in no decoding, +// and so no keys will be considered decoded. +// +// In this sense, the Undecoded keys correspond to keys in the TOML document +// that do not have a concrete type in your representation. +func (md *MetaData) Undecoded() []Key { + undecoded := make([]Key, 0, len(md.keys)) + for _, key := range md.keys { + if !md.decoded[key.String()] { + undecoded = append(undecoded, key) + } + } + return undecoded +} diff --git a/vendor/github.com/BurntSushi/toml/doc.go b/vendor/github.com/BurntSushi/toml/doc.go new file mode 100644 index 0000000..b371f39 --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/doc.go @@ -0,0 +1,27 @@ +/* +Package toml provides facilities for decoding and encoding TOML configuration +files via reflection. There is also support for delaying decoding with +the Primitive type, and querying the set of keys in a TOML document with the +MetaData type. + +The specification implemented: https://github.com/toml-lang/toml + +The sub-command github.com/BurntSushi/toml/cmd/tomlv can be used to verify +whether a file is a valid TOML document. It can also be used to print the +type of each key in a TOML document. + +Testing + +There are two important types of tests used for this package. The first is +contained inside '*_test.go' files and uses the standard Go unit testing +framework. These tests are primarily devoted to holistically testing the +decoder and encoder. + +The second type of testing is used to verify the implementation's adherence +to the TOML specification. These tests have been factored into their own +project: https://github.com/BurntSushi/toml-test + +The reason the tests are in a separate project is so that they can be used by +any implementation of TOML. Namely, it is language agnostic. +*/ +package toml diff --git a/vendor/github.com/BurntSushi/toml/encode.go b/vendor/github.com/BurntSushi/toml/encode.go new file mode 100644 index 0000000..d905c21 --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/encode.go @@ -0,0 +1,568 @@ +package toml + +import ( + "bufio" + "errors" + "fmt" + "io" + "reflect" + "sort" + "strconv" + "strings" + "time" +) + +type tomlEncodeError struct{ error } + +var ( + errArrayMixedElementTypes = errors.New( + "toml: cannot encode array with mixed element types") + errArrayNilElement = errors.New( + "toml: cannot encode array with nil element") + errNonString = errors.New( + "toml: cannot encode a map with non-string key type") + errAnonNonStruct = errors.New( + "toml: cannot encode an anonymous field that is not a struct") + errArrayNoTable = errors.New( + "toml: TOML array element cannot contain a table") + errNoKey = errors.New( + "toml: top-level values must be Go maps or structs") + errAnything = errors.New("") // used in testing +) + +var quotedReplacer = strings.NewReplacer( + "\t", "\\t", + "\n", "\\n", + "\r", "\\r", + "\"", "\\\"", + "\\", "\\\\", +) + +// Encoder controls the encoding of Go values to a TOML document to some +// io.Writer. +// +// The indentation level can be controlled with the Indent field. +type Encoder struct { + // A single indentation level. By default it is two spaces. + Indent string + + // hasWritten is whether we have written any output to w yet. + hasWritten bool + w *bufio.Writer +} + +// NewEncoder returns a TOML encoder that encodes Go values to the io.Writer +// given. By default, a single indentation level is 2 spaces. +func NewEncoder(w io.Writer) *Encoder { + return &Encoder{ + w: bufio.NewWriter(w), + Indent: " ", + } +} + +// Encode writes a TOML representation of the Go value to the underlying +// io.Writer. If the value given cannot be encoded to a valid TOML document, +// then an error is returned. +// +// The mapping between Go values and TOML values should be precisely the same +// as for the Decode* functions. Similarly, the TextMarshaler interface is +// supported by encoding the resulting bytes as strings. (If you want to write +// arbitrary binary data then you will need to use something like base64 since +// TOML does not have any binary types.) +// +// When encoding TOML hashes (i.e., Go maps or structs), keys without any +// sub-hashes are encoded first. +// +// If a Go map is encoded, then its keys are sorted alphabetically for +// deterministic output. More control over this behavior may be provided if +// there is demand for it. +// +// Encoding Go values without a corresponding TOML representation---like map +// types with non-string keys---will cause an error to be returned. Similarly +// for mixed arrays/slices, arrays/slices with nil elements, embedded +// non-struct types and nested slices containing maps or structs. +// (e.g., [][]map[string]string is not allowed but []map[string]string is OK +// and so is []map[string][]string.) +func (enc *Encoder) Encode(v interface{}) error { + rv := eindirect(reflect.ValueOf(v)) + if err := enc.safeEncode(Key([]string{}), rv); err != nil { + return err + } + return enc.w.Flush() +} + +func (enc *Encoder) safeEncode(key Key, rv reflect.Value) (err error) { + defer func() { + if r := recover(); r != nil { + if terr, ok := r.(tomlEncodeError); ok { + err = terr.error + return + } + panic(r) + } + }() + enc.encode(key, rv) + return nil +} + +func (enc *Encoder) encode(key Key, rv reflect.Value) { + // Special case. Time needs to be in ISO8601 format. + // Special case. If we can marshal the type to text, then we used that. + // Basically, this prevents the encoder for handling these types as + // generic structs (or whatever the underlying type of a TextMarshaler is). + switch rv.Interface().(type) { + case time.Time, TextMarshaler: + enc.keyEqElement(key, rv) + return + } + + k := rv.Kind() + switch k { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, + reflect.Int64, + reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, + reflect.Uint64, + reflect.Float32, reflect.Float64, reflect.String, reflect.Bool: + enc.keyEqElement(key, rv) + case reflect.Array, reflect.Slice: + if typeEqual(tomlArrayHash, tomlTypeOfGo(rv)) { + enc.eArrayOfTables(key, rv) + } else { + enc.keyEqElement(key, rv) + } + case reflect.Interface: + if rv.IsNil() { + return + } + enc.encode(key, rv.Elem()) + case reflect.Map: + if rv.IsNil() { + return + } + enc.eTable(key, rv) + case reflect.Ptr: + if rv.IsNil() { + return + } + enc.encode(key, rv.Elem()) + case reflect.Struct: + enc.eTable(key, rv) + default: + panic(e("unsupported type for key '%s': %s", key, k)) + } +} + +// eElement encodes any value that can be an array element (primitives and +// arrays). +func (enc *Encoder) eElement(rv reflect.Value) { + switch v := rv.Interface().(type) { + case time.Time: + // Special case time.Time as a primitive. Has to come before + // TextMarshaler below because time.Time implements + // encoding.TextMarshaler, but we need to always use UTC. + enc.wf(v.UTC().Format("2006-01-02T15:04:05Z")) + return + case TextMarshaler: + // Special case. Use text marshaler if it's available for this value. + if s, err := v.MarshalText(); err != nil { + encPanic(err) + } else { + enc.writeQuoted(string(s)) + } + return + } + switch rv.Kind() { + case reflect.Bool: + enc.wf(strconv.FormatBool(rv.Bool())) + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, + reflect.Int64: + enc.wf(strconv.FormatInt(rv.Int(), 10)) + case reflect.Uint, reflect.Uint8, reflect.Uint16, + reflect.Uint32, reflect.Uint64: + enc.wf(strconv.FormatUint(rv.Uint(), 10)) + case reflect.Float32: + enc.wf(floatAddDecimal(strconv.FormatFloat(rv.Float(), 'f', -1, 32))) + case reflect.Float64: + enc.wf(floatAddDecimal(strconv.FormatFloat(rv.Float(), 'f', -1, 64))) + case reflect.Array, reflect.Slice: + enc.eArrayOrSliceElement(rv) + case reflect.Interface: + enc.eElement(rv.Elem()) + case reflect.String: + enc.writeQuoted(rv.String()) + default: + panic(e("unexpected primitive type: %s", rv.Kind())) + } +} + +// By the TOML spec, all floats must have a decimal with at least one +// number on either side. +func floatAddDecimal(fstr string) string { + if !strings.Contains(fstr, ".") { + return fstr + ".0" + } + return fstr +} + +func (enc *Encoder) writeQuoted(s string) { + enc.wf("\"%s\"", quotedReplacer.Replace(s)) +} + +func (enc *Encoder) eArrayOrSliceElement(rv reflect.Value) { + length := rv.Len() + enc.wf("[") + for i := 0; i < length; i++ { + elem := rv.Index(i) + enc.eElement(elem) + if i != length-1 { + enc.wf(", ") + } + } + enc.wf("]") +} + +func (enc *Encoder) eArrayOfTables(key Key, rv reflect.Value) { + if len(key) == 0 { + encPanic(errNoKey) + } + for i := 0; i < rv.Len(); i++ { + trv := rv.Index(i) + if isNil(trv) { + continue + } + panicIfInvalidKey(key) + enc.newline() + enc.wf("%s[[%s]]", enc.indentStr(key), key.maybeQuotedAll()) + enc.newline() + enc.eMapOrStruct(key, trv) + } +} + +func (enc *Encoder) eTable(key Key, rv reflect.Value) { + panicIfInvalidKey(key) + if len(key) == 1 { + // Output an extra newline between top-level tables. + // (The newline isn't written if nothing else has been written though.) + enc.newline() + } + if len(key) > 0 { + enc.wf("%s[%s]", enc.indentStr(key), key.maybeQuotedAll()) + enc.newline() + } + enc.eMapOrStruct(key, rv) +} + +func (enc *Encoder) eMapOrStruct(key Key, rv reflect.Value) { + switch rv := eindirect(rv); rv.Kind() { + case reflect.Map: + enc.eMap(key, rv) + case reflect.Struct: + enc.eStruct(key, rv) + default: + panic("eTable: unhandled reflect.Value Kind: " + rv.Kind().String()) + } +} + +func (enc *Encoder) eMap(key Key, rv reflect.Value) { + rt := rv.Type() + if rt.Key().Kind() != reflect.String { + encPanic(errNonString) + } + + // Sort keys so that we have deterministic output. And write keys directly + // underneath this key first, before writing sub-structs or sub-maps. + var mapKeysDirect, mapKeysSub []string + for _, mapKey := range rv.MapKeys() { + k := mapKey.String() + if typeIsHash(tomlTypeOfGo(rv.MapIndex(mapKey))) { + mapKeysSub = append(mapKeysSub, k) + } else { + mapKeysDirect = append(mapKeysDirect, k) + } + } + + var writeMapKeys = func(mapKeys []string) { + sort.Strings(mapKeys) + for _, mapKey := range mapKeys { + mrv := rv.MapIndex(reflect.ValueOf(mapKey)) + if isNil(mrv) { + // Don't write anything for nil fields. + continue + } + enc.encode(key.add(mapKey), mrv) + } + } + writeMapKeys(mapKeysDirect) + writeMapKeys(mapKeysSub) +} + +func (enc *Encoder) eStruct(key Key, rv reflect.Value) { + // Write keys for fields directly under this key first, because if we write + // a field that creates a new table, then all keys under it will be in that + // table (not the one we're writing here). + rt := rv.Type() + var fieldsDirect, fieldsSub [][]int + var addFields func(rt reflect.Type, rv reflect.Value, start []int) + addFields = func(rt reflect.Type, rv reflect.Value, start []int) { + for i := 0; i < rt.NumField(); i++ { + f := rt.Field(i) + // skip unexported fields + if f.PkgPath != "" && !f.Anonymous { + continue + } + frv := rv.Field(i) + if f.Anonymous { + t := f.Type + switch t.Kind() { + case reflect.Struct: + // Treat anonymous struct fields with + // tag names as though they are not + // anonymous, like encoding/json does. + if getOptions(f.Tag).name == "" { + addFields(t, frv, f.Index) + continue + } + case reflect.Ptr: + if t.Elem().Kind() == reflect.Struct && + getOptions(f.Tag).name == "" { + if !frv.IsNil() { + addFields(t.Elem(), frv.Elem(), f.Index) + } + continue + } + // Fall through to the normal field encoding logic below + // for non-struct anonymous fields. + } + } + + if typeIsHash(tomlTypeOfGo(frv)) { + fieldsSub = append(fieldsSub, append(start, f.Index...)) + } else { + fieldsDirect = append(fieldsDirect, append(start, f.Index...)) + } + } + } + addFields(rt, rv, nil) + + var writeFields = func(fields [][]int) { + for _, fieldIndex := range fields { + sft := rt.FieldByIndex(fieldIndex) + sf := rv.FieldByIndex(fieldIndex) + if isNil(sf) { + // Don't write anything for nil fields. + continue + } + + opts := getOptions(sft.Tag) + if opts.skip { + continue + } + keyName := sft.Name + if opts.name != "" { + keyName = opts.name + } + if opts.omitempty && isEmpty(sf) { + continue + } + if opts.omitzero && isZero(sf) { + continue + } + + enc.encode(key.add(keyName), sf) + } + } + writeFields(fieldsDirect) + writeFields(fieldsSub) +} + +// tomlTypeName returns the TOML type name of the Go value's type. It is +// used to determine whether the types of array elements are mixed (which is +// forbidden). If the Go value is nil, then it is illegal for it to be an array +// element, and valueIsNil is returned as true. + +// Returns the TOML type of a Go value. The type may be `nil`, which means +// no concrete TOML type could be found. +func tomlTypeOfGo(rv reflect.Value) tomlType { + if isNil(rv) || !rv.IsValid() { + return nil + } + switch rv.Kind() { + case reflect.Bool: + return tomlBool + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, + reflect.Int64, + reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, + reflect.Uint64: + return tomlInteger + case reflect.Float32, reflect.Float64: + return tomlFloat + case reflect.Array, reflect.Slice: + if typeEqual(tomlHash, tomlArrayType(rv)) { + return tomlArrayHash + } + return tomlArray + case reflect.Ptr, reflect.Interface: + return tomlTypeOfGo(rv.Elem()) + case reflect.String: + return tomlString + case reflect.Map: + return tomlHash + case reflect.Struct: + switch rv.Interface().(type) { + case time.Time: + return tomlDatetime + case TextMarshaler: + return tomlString + default: + return tomlHash + } + default: + panic("unexpected reflect.Kind: " + rv.Kind().String()) + } +} + +// tomlArrayType returns the element type of a TOML array. The type returned +// may be nil if it cannot be determined (e.g., a nil slice or a zero length +// slize). This function may also panic if it finds a type that cannot be +// expressed in TOML (such as nil elements, heterogeneous arrays or directly +// nested arrays of tables). +func tomlArrayType(rv reflect.Value) tomlType { + if isNil(rv) || !rv.IsValid() || rv.Len() == 0 { + return nil + } + firstType := tomlTypeOfGo(rv.Index(0)) + if firstType == nil { + encPanic(errArrayNilElement) + } + + rvlen := rv.Len() + for i := 1; i < rvlen; i++ { + elem := rv.Index(i) + switch elemType := tomlTypeOfGo(elem); { + case elemType == nil: + encPanic(errArrayNilElement) + case !typeEqual(firstType, elemType): + encPanic(errArrayMixedElementTypes) + } + } + // If we have a nested array, then we must make sure that the nested + // array contains ONLY primitives. + // This checks arbitrarily nested arrays. + if typeEqual(firstType, tomlArray) || typeEqual(firstType, tomlArrayHash) { + nest := tomlArrayType(eindirect(rv.Index(0))) + if typeEqual(nest, tomlHash) || typeEqual(nest, tomlArrayHash) { + encPanic(errArrayNoTable) + } + } + return firstType +} + +type tagOptions struct { + skip bool // "-" + name string + omitempty bool + omitzero bool +} + +func getOptions(tag reflect.StructTag) tagOptions { + t := tag.Get("toml") + if t == "-" { + return tagOptions{skip: true} + } + var opts tagOptions + parts := strings.Split(t, ",") + opts.name = parts[0] + for _, s := range parts[1:] { + switch s { + case "omitempty": + opts.omitempty = true + case "omitzero": + opts.omitzero = true + } + } + return opts +} + +func isZero(rv reflect.Value) bool { + switch rv.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return rv.Int() == 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + return rv.Uint() == 0 + case reflect.Float32, reflect.Float64: + return rv.Float() == 0.0 + } + return false +} + +func isEmpty(rv reflect.Value) bool { + switch rv.Kind() { + case reflect.Array, reflect.Slice, reflect.Map, reflect.String: + return rv.Len() == 0 + case reflect.Bool: + return !rv.Bool() + } + return false +} + +func (enc *Encoder) newline() { + if enc.hasWritten { + enc.wf("\n") + } +} + +func (enc *Encoder) keyEqElement(key Key, val reflect.Value) { + if len(key) == 0 { + encPanic(errNoKey) + } + panicIfInvalidKey(key) + enc.wf("%s%s = ", enc.indentStr(key), key.maybeQuoted(len(key)-1)) + enc.eElement(val) + enc.newline() +} + +func (enc *Encoder) wf(format string, v ...interface{}) { + if _, err := fmt.Fprintf(enc.w, format, v...); err != nil { + encPanic(err) + } + enc.hasWritten = true +} + +func (enc *Encoder) indentStr(key Key) string { + return strings.Repeat(enc.Indent, len(key)-1) +} + +func encPanic(err error) { + panic(tomlEncodeError{err}) +} + +func eindirect(v reflect.Value) reflect.Value { + switch v.Kind() { + case reflect.Ptr, reflect.Interface: + return eindirect(v.Elem()) + default: + return v + } +} + +func isNil(rv reflect.Value) bool { + switch rv.Kind() { + case reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice: + return rv.IsNil() + default: + return false + } +} + +func panicIfInvalidKey(key Key) { + for _, k := range key { + if len(k) == 0 { + encPanic(e("Key '%s' is not a valid table name. Key names "+ + "cannot be empty.", key.maybeQuotedAll())) + } + } +} + +func isValidKeyName(s string) bool { + return len(s) != 0 +} diff --git a/vendor/github.com/BurntSushi/toml/encoding_types.go b/vendor/github.com/BurntSushi/toml/encoding_types.go new file mode 100644 index 0000000..d36e1dd --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/encoding_types.go @@ -0,0 +1,19 @@ +// +build go1.2 + +package toml + +// In order to support Go 1.1, we define our own TextMarshaler and +// TextUnmarshaler types. For Go 1.2+, we just alias them with the +// standard library interfaces. + +import ( + "encoding" +) + +// TextMarshaler is a synonym for encoding.TextMarshaler. It is defined here +// so that Go 1.1 can be supported. +type TextMarshaler encoding.TextMarshaler + +// TextUnmarshaler is a synonym for encoding.TextUnmarshaler. It is defined +// here so that Go 1.1 can be supported. +type TextUnmarshaler encoding.TextUnmarshaler diff --git a/vendor/github.com/BurntSushi/toml/encoding_types_1.1.go b/vendor/github.com/BurntSushi/toml/encoding_types_1.1.go new file mode 100644 index 0000000..e8d503d --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/encoding_types_1.1.go @@ -0,0 +1,18 @@ +// +build !go1.2 + +package toml + +// These interfaces were introduced in Go 1.2, so we add them manually when +// compiling for Go 1.1. + +// TextMarshaler is a synonym for encoding.TextMarshaler. It is defined here +// so that Go 1.1 can be supported. +type TextMarshaler interface { + MarshalText() (text []byte, err error) +} + +// TextUnmarshaler is a synonym for encoding.TextUnmarshaler. It is defined +// here so that Go 1.1 can be supported. +type TextUnmarshaler interface { + UnmarshalText(text []byte) error +} diff --git a/vendor/github.com/BurntSushi/toml/lex.go b/vendor/github.com/BurntSushi/toml/lex.go new file mode 100644 index 0000000..e0a742a --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/lex.go @@ -0,0 +1,953 @@ +package toml + +import ( + "fmt" + "strings" + "unicode" + "unicode/utf8" +) + +type itemType int + +const ( + itemError itemType = iota + itemNIL // used in the parser to indicate no type + itemEOF + itemText + itemString + itemRawString + itemMultilineString + itemRawMultilineString + itemBool + itemInteger + itemFloat + itemDatetime + itemArray // the start of an array + itemArrayEnd + itemTableStart + itemTableEnd + itemArrayTableStart + itemArrayTableEnd + itemKeyStart + itemCommentStart + itemInlineTableStart + itemInlineTableEnd +) + +const ( + eof = 0 + comma = ',' + tableStart = '[' + tableEnd = ']' + arrayTableStart = '[' + arrayTableEnd = ']' + tableSep = '.' + keySep = '=' + arrayStart = '[' + arrayEnd = ']' + commentStart = '#' + stringStart = '"' + stringEnd = '"' + rawStringStart = '\'' + rawStringEnd = '\'' + inlineTableStart = '{' + inlineTableEnd = '}' +) + +type stateFn func(lx *lexer) stateFn + +type lexer struct { + input string + start int + pos int + line int + state stateFn + items chan item + + // Allow for backing up up to three runes. + // This is necessary because TOML contains 3-rune tokens (""" and '''). + prevWidths [3]int + nprev int // how many of prevWidths are in use + // If we emit an eof, we can still back up, but it is not OK to call + // next again. + atEOF bool + + // A stack of state functions used to maintain context. + // The idea is to reuse parts of the state machine in various places. + // For example, values can appear at the top level or within arbitrarily + // nested arrays. The last state on the stack is used after a value has + // been lexed. Similarly for comments. + stack []stateFn +} + +type item struct { + typ itemType + val string + line int +} + +func (lx *lexer) nextItem() item { + for { + select { + case item := <-lx.items: + return item + default: + lx.state = lx.state(lx) + } + } +} + +func lex(input string) *lexer { + lx := &lexer{ + input: input, + state: lexTop, + line: 1, + items: make(chan item, 10), + stack: make([]stateFn, 0, 10), + } + return lx +} + +func (lx *lexer) push(state stateFn) { + lx.stack = append(lx.stack, state) +} + +func (lx *lexer) pop() stateFn { + if len(lx.stack) == 0 { + return lx.errorf("BUG in lexer: no states to pop") + } + last := lx.stack[len(lx.stack)-1] + lx.stack = lx.stack[0 : len(lx.stack)-1] + return last +} + +func (lx *lexer) current() string { + return lx.input[lx.start:lx.pos] +} + +func (lx *lexer) emit(typ itemType) { + lx.items <- item{typ, lx.current(), lx.line} + lx.start = lx.pos +} + +func (lx *lexer) emitTrim(typ itemType) { + lx.items <- item{typ, strings.TrimSpace(lx.current()), lx.line} + lx.start = lx.pos +} + +func (lx *lexer) next() (r rune) { + if lx.atEOF { + panic("next called after EOF") + } + if lx.pos >= len(lx.input) { + lx.atEOF = true + return eof + } + + if lx.input[lx.pos] == '\n' { + lx.line++ + } + lx.prevWidths[2] = lx.prevWidths[1] + lx.prevWidths[1] = lx.prevWidths[0] + if lx.nprev < 3 { + lx.nprev++ + } + r, w := utf8.DecodeRuneInString(lx.input[lx.pos:]) + lx.prevWidths[0] = w + lx.pos += w + return r +} + +// ignore skips over the pending input before this point. +func (lx *lexer) ignore() { + lx.start = lx.pos +} + +// backup steps back one rune. Can be called only twice between calls to next. +func (lx *lexer) backup() { + if lx.atEOF { + lx.atEOF = false + return + } + if lx.nprev < 1 { + panic("backed up too far") + } + w := lx.prevWidths[0] + lx.prevWidths[0] = lx.prevWidths[1] + lx.prevWidths[1] = lx.prevWidths[2] + lx.nprev-- + lx.pos -= w + if lx.pos < len(lx.input) && lx.input[lx.pos] == '\n' { + lx.line-- + } +} + +// accept consumes the next rune if it's equal to `valid`. +func (lx *lexer) accept(valid rune) bool { + if lx.next() == valid { + return true + } + lx.backup() + return false +} + +// peek returns but does not consume the next rune in the input. +func (lx *lexer) peek() rune { + r := lx.next() + lx.backup() + return r +} + +// skip ignores all input that matches the given predicate. +func (lx *lexer) skip(pred func(rune) bool) { + for { + r := lx.next() + if pred(r) { + continue + } + lx.backup() + lx.ignore() + return + } +} + +// errorf stops all lexing by emitting an error and returning `nil`. +// Note that any value that is a character is escaped if it's a special +// character (newlines, tabs, etc.). +func (lx *lexer) errorf(format string, values ...interface{}) stateFn { + lx.items <- item{ + itemError, + fmt.Sprintf(format, values...), + lx.line, + } + return nil +} + +// lexTop consumes elements at the top level of TOML data. +func lexTop(lx *lexer) stateFn { + r := lx.next() + if isWhitespace(r) || isNL(r) { + return lexSkip(lx, lexTop) + } + switch r { + case commentStart: + lx.push(lexTop) + return lexCommentStart + case tableStart: + return lexTableStart + case eof: + if lx.pos > lx.start { + return lx.errorf("unexpected EOF") + } + lx.emit(itemEOF) + return nil + } + + // At this point, the only valid item can be a key, so we back up + // and let the key lexer do the rest. + lx.backup() + lx.push(lexTopEnd) + return lexKeyStart +} + +// lexTopEnd is entered whenever a top-level item has been consumed. (A value +// or a table.) It must see only whitespace, and will turn back to lexTop +// upon a newline. If it sees EOF, it will quit the lexer successfully. +func lexTopEnd(lx *lexer) stateFn { + r := lx.next() + switch { + case r == commentStart: + // a comment will read to a newline for us. + lx.push(lexTop) + return lexCommentStart + case isWhitespace(r): + return lexTopEnd + case isNL(r): + lx.ignore() + return lexTop + case r == eof: + lx.emit(itemEOF) + return nil + } + return lx.errorf("expected a top-level item to end with a newline, "+ + "comment, or EOF, but got %q instead", r) +} + +// lexTable lexes the beginning of a table. Namely, it makes sure that +// it starts with a character other than '.' and ']'. +// It assumes that '[' has already been consumed. +// It also handles the case that this is an item in an array of tables. +// e.g., '[[name]]'. +func lexTableStart(lx *lexer) stateFn { + if lx.peek() == arrayTableStart { + lx.next() + lx.emit(itemArrayTableStart) + lx.push(lexArrayTableEnd) + } else { + lx.emit(itemTableStart) + lx.push(lexTableEnd) + } + return lexTableNameStart +} + +func lexTableEnd(lx *lexer) stateFn { + lx.emit(itemTableEnd) + return lexTopEnd +} + +func lexArrayTableEnd(lx *lexer) stateFn { + if r := lx.next(); r != arrayTableEnd { + return lx.errorf("expected end of table array name delimiter %q, "+ + "but got %q instead", arrayTableEnd, r) + } + lx.emit(itemArrayTableEnd) + return lexTopEnd +} + +func lexTableNameStart(lx *lexer) stateFn { + lx.skip(isWhitespace) + switch r := lx.peek(); { + case r == tableEnd || r == eof: + return lx.errorf("unexpected end of table name " + + "(table names cannot be empty)") + case r == tableSep: + return lx.errorf("unexpected table separator " + + "(table names cannot be empty)") + case r == stringStart || r == rawStringStart: + lx.ignore() + lx.push(lexTableNameEnd) + return lexValue // reuse string lexing + default: + return lexBareTableName + } +} + +// lexBareTableName lexes the name of a table. It assumes that at least one +// valid character for the table has already been read. +func lexBareTableName(lx *lexer) stateFn { + r := lx.next() + if isBareKeyChar(r) { + return lexBareTableName + } + lx.backup() + lx.emit(itemText) + return lexTableNameEnd +} + +// lexTableNameEnd reads the end of a piece of a table name, optionally +// consuming whitespace. +func lexTableNameEnd(lx *lexer) stateFn { + lx.skip(isWhitespace) + switch r := lx.next(); { + case isWhitespace(r): + return lexTableNameEnd + case r == tableSep: + lx.ignore() + return lexTableNameStart + case r == tableEnd: + return lx.pop() + default: + return lx.errorf("expected '.' or ']' to end table name, "+ + "but got %q instead", r) + } +} + +// lexKeyStart consumes a key name up until the first non-whitespace character. +// lexKeyStart will ignore whitespace. +func lexKeyStart(lx *lexer) stateFn { + r := lx.peek() + switch { + case r == keySep: + return lx.errorf("unexpected key separator %q", keySep) + case isWhitespace(r) || isNL(r): + lx.next() + return lexSkip(lx, lexKeyStart) + case r == stringStart || r == rawStringStart: + lx.ignore() + lx.emit(itemKeyStart) + lx.push(lexKeyEnd) + return lexValue // reuse string lexing + default: + lx.ignore() + lx.emit(itemKeyStart) + return lexBareKey + } +} + +// lexBareKey consumes the text of a bare key. Assumes that the first character +// (which is not whitespace) has not yet been consumed. +func lexBareKey(lx *lexer) stateFn { + switch r := lx.next(); { + case isBareKeyChar(r): + return lexBareKey + case isWhitespace(r): + lx.backup() + lx.emit(itemText) + return lexKeyEnd + case r == keySep: + lx.backup() + lx.emit(itemText) + return lexKeyEnd + default: + return lx.errorf("bare keys cannot contain %q", r) + } +} + +// lexKeyEnd consumes the end of a key and trims whitespace (up to the key +// separator). +func lexKeyEnd(lx *lexer) stateFn { + switch r := lx.next(); { + case r == keySep: + return lexSkip(lx, lexValue) + case isWhitespace(r): + return lexSkip(lx, lexKeyEnd) + default: + return lx.errorf("expected key separator %q, but got %q instead", + keySep, r) + } +} + +// lexValue starts the consumption of a value anywhere a value is expected. +// lexValue will ignore whitespace. +// After a value is lexed, the last state on the next is popped and returned. +func lexValue(lx *lexer) stateFn { + // We allow whitespace to precede a value, but NOT newlines. + // In array syntax, the array states are responsible for ignoring newlines. + r := lx.next() + switch { + case isWhitespace(r): + return lexSkip(lx, lexValue) + case isDigit(r): + lx.backup() // avoid an extra state and use the same as above + return lexNumberOrDateStart + } + switch r { + case arrayStart: + lx.ignore() + lx.emit(itemArray) + return lexArrayValue + case inlineTableStart: + lx.ignore() + lx.emit(itemInlineTableStart) + return lexInlineTableValue + case stringStart: + if lx.accept(stringStart) { + if lx.accept(stringStart) { + lx.ignore() // Ignore """ + return lexMultilineString + } + lx.backup() + } + lx.ignore() // ignore the '"' + return lexString + case rawStringStart: + if lx.accept(rawStringStart) { + if lx.accept(rawStringStart) { + lx.ignore() // Ignore """ + return lexMultilineRawString + } + lx.backup() + } + lx.ignore() // ignore the "'" + return lexRawString + case '+', '-': + return lexNumberStart + case '.': // special error case, be kind to users + return lx.errorf("floats must start with a digit, not '.'") + } + if unicode.IsLetter(r) { + // Be permissive here; lexBool will give a nice error if the + // user wrote something like + // x = foo + // (i.e. not 'true' or 'false' but is something else word-like.) + lx.backup() + return lexBool + } + return lx.errorf("expected value but found %q instead", r) +} + +// lexArrayValue consumes one value in an array. It assumes that '[' or ',' +// have already been consumed. All whitespace and newlines are ignored. +func lexArrayValue(lx *lexer) stateFn { + r := lx.next() + switch { + case isWhitespace(r) || isNL(r): + return lexSkip(lx, lexArrayValue) + case r == commentStart: + lx.push(lexArrayValue) + return lexCommentStart + case r == comma: + return lx.errorf("unexpected comma") + case r == arrayEnd: + // NOTE(caleb): The spec isn't clear about whether you can have + // a trailing comma or not, so we'll allow it. + return lexArrayEnd + } + + lx.backup() + lx.push(lexArrayValueEnd) + return lexValue +} + +// lexArrayValueEnd consumes everything between the end of an array value and +// the next value (or the end of the array): it ignores whitespace and newlines +// and expects either a ',' or a ']'. +func lexArrayValueEnd(lx *lexer) stateFn { + r := lx.next() + switch { + case isWhitespace(r) || isNL(r): + return lexSkip(lx, lexArrayValueEnd) + case r == commentStart: + lx.push(lexArrayValueEnd) + return lexCommentStart + case r == comma: + lx.ignore() + return lexArrayValue // move on to the next value + case r == arrayEnd: + return lexArrayEnd + } + return lx.errorf( + "expected a comma or array terminator %q, but got %q instead", + arrayEnd, r, + ) +} + +// lexArrayEnd finishes the lexing of an array. +// It assumes that a ']' has just been consumed. +func lexArrayEnd(lx *lexer) stateFn { + lx.ignore() + lx.emit(itemArrayEnd) + return lx.pop() +} + +// lexInlineTableValue consumes one key/value pair in an inline table. +// It assumes that '{' or ',' have already been consumed. Whitespace is ignored. +func lexInlineTableValue(lx *lexer) stateFn { + r := lx.next() + switch { + case isWhitespace(r): + return lexSkip(lx, lexInlineTableValue) + case isNL(r): + return lx.errorf("newlines not allowed within inline tables") + case r == commentStart: + lx.push(lexInlineTableValue) + return lexCommentStart + case r == comma: + return lx.errorf("unexpected comma") + case r == inlineTableEnd: + return lexInlineTableEnd + } + lx.backup() + lx.push(lexInlineTableValueEnd) + return lexKeyStart +} + +// lexInlineTableValueEnd consumes everything between the end of an inline table +// key/value pair and the next pair (or the end of the table): +// it ignores whitespace and expects either a ',' or a '}'. +func lexInlineTableValueEnd(lx *lexer) stateFn { + r := lx.next() + switch { + case isWhitespace(r): + return lexSkip(lx, lexInlineTableValueEnd) + case isNL(r): + return lx.errorf("newlines not allowed within inline tables") + case r == commentStart: + lx.push(lexInlineTableValueEnd) + return lexCommentStart + case r == comma: + lx.ignore() + return lexInlineTableValue + case r == inlineTableEnd: + return lexInlineTableEnd + } + return lx.errorf("expected a comma or an inline table terminator %q, "+ + "but got %q instead", inlineTableEnd, r) +} + +// lexInlineTableEnd finishes the lexing of an inline table. +// It assumes that a '}' has just been consumed. +func lexInlineTableEnd(lx *lexer) stateFn { + lx.ignore() + lx.emit(itemInlineTableEnd) + return lx.pop() +} + +// lexString consumes the inner contents of a string. It assumes that the +// beginning '"' has already been consumed and ignored. +func lexString(lx *lexer) stateFn { + r := lx.next() + switch { + case r == eof: + return lx.errorf("unexpected EOF") + case isNL(r): + return lx.errorf("strings cannot contain newlines") + case r == '\\': + lx.push(lexString) + return lexStringEscape + case r == stringEnd: + lx.backup() + lx.emit(itemString) + lx.next() + lx.ignore() + return lx.pop() + } + return lexString +} + +// lexMultilineString consumes the inner contents of a string. It assumes that +// the beginning '"""' has already been consumed and ignored. +func lexMultilineString(lx *lexer) stateFn { + switch lx.next() { + case eof: + return lx.errorf("unexpected EOF") + case '\\': + return lexMultilineStringEscape + case stringEnd: + if lx.accept(stringEnd) { + if lx.accept(stringEnd) { + lx.backup() + lx.backup() + lx.backup() + lx.emit(itemMultilineString) + lx.next() + lx.next() + lx.next() + lx.ignore() + return lx.pop() + } + lx.backup() + } + } + return lexMultilineString +} + +// lexRawString consumes a raw string. Nothing can be escaped in such a string. +// It assumes that the beginning "'" has already been consumed and ignored. +func lexRawString(lx *lexer) stateFn { + r := lx.next() + switch { + case r == eof: + return lx.errorf("unexpected EOF") + case isNL(r): + return lx.errorf("strings cannot contain newlines") + case r == rawStringEnd: + lx.backup() + lx.emit(itemRawString) + lx.next() + lx.ignore() + return lx.pop() + } + return lexRawString +} + +// lexMultilineRawString consumes a raw string. Nothing can be escaped in such +// a string. It assumes that the beginning "'''" has already been consumed and +// ignored. +func lexMultilineRawString(lx *lexer) stateFn { + switch lx.next() { + case eof: + return lx.errorf("unexpected EOF") + case rawStringEnd: + if lx.accept(rawStringEnd) { + if lx.accept(rawStringEnd) { + lx.backup() + lx.backup() + lx.backup() + lx.emit(itemRawMultilineString) + lx.next() + lx.next() + lx.next() + lx.ignore() + return lx.pop() + } + lx.backup() + } + } + return lexMultilineRawString +} + +// lexMultilineStringEscape consumes an escaped character. It assumes that the +// preceding '\\' has already been consumed. +func lexMultilineStringEscape(lx *lexer) stateFn { + // Handle the special case first: + if isNL(lx.next()) { + return lexMultilineString + } + lx.backup() + lx.push(lexMultilineString) + return lexStringEscape(lx) +} + +func lexStringEscape(lx *lexer) stateFn { + r := lx.next() + switch r { + case 'b': + fallthrough + case 't': + fallthrough + case 'n': + fallthrough + case 'f': + fallthrough + case 'r': + fallthrough + case '"': + fallthrough + case '\\': + return lx.pop() + case 'u': + return lexShortUnicodeEscape + case 'U': + return lexLongUnicodeEscape + } + return lx.errorf("invalid escape character %q; only the following "+ + "escape characters are allowed: "+ + `\b, \t, \n, \f, \r, \", \\, \uXXXX, and \UXXXXXXXX`, r) +} + +func lexShortUnicodeEscape(lx *lexer) stateFn { + var r rune + for i := 0; i < 4; i++ { + r = lx.next() + if !isHexadecimal(r) { + return lx.errorf(`expected four hexadecimal digits after '\u', `+ + "but got %q instead", lx.current()) + } + } + return lx.pop() +} + +func lexLongUnicodeEscape(lx *lexer) stateFn { + var r rune + for i := 0; i < 8; i++ { + r = lx.next() + if !isHexadecimal(r) { + return lx.errorf(`expected eight hexadecimal digits after '\U', `+ + "but got %q instead", lx.current()) + } + } + return lx.pop() +} + +// lexNumberOrDateStart consumes either an integer, a float, or datetime. +func lexNumberOrDateStart(lx *lexer) stateFn { + r := lx.next() + if isDigit(r) { + return lexNumberOrDate + } + switch r { + case '_': + return lexNumber + case 'e', 'E': + return lexFloat + case '.': + return lx.errorf("floats must start with a digit, not '.'") + } + return lx.errorf("expected a digit but got %q", r) +} + +// lexNumberOrDate consumes either an integer, float or datetime. +func lexNumberOrDate(lx *lexer) stateFn { + r := lx.next() + if isDigit(r) { + return lexNumberOrDate + } + switch r { + case '-': + return lexDatetime + case '_': + return lexNumber + case '.', 'e', 'E': + return lexFloat + } + + lx.backup() + lx.emit(itemInteger) + return lx.pop() +} + +// lexDatetime consumes a Datetime, to a first approximation. +// The parser validates that it matches one of the accepted formats. +func lexDatetime(lx *lexer) stateFn { + r := lx.next() + if isDigit(r) { + return lexDatetime + } + switch r { + case '-', 'T', ':', '.', 'Z', '+': + return lexDatetime + } + + lx.backup() + lx.emit(itemDatetime) + return lx.pop() +} + +// lexNumberStart consumes either an integer or a float. It assumes that a sign +// has already been read, but that *no* digits have been consumed. +// lexNumberStart will move to the appropriate integer or float states. +func lexNumberStart(lx *lexer) stateFn { + // We MUST see a digit. Even floats have to start with a digit. + r := lx.next() + if !isDigit(r) { + if r == '.' { + return lx.errorf("floats must start with a digit, not '.'") + } + return lx.errorf("expected a digit but got %q", r) + } + return lexNumber +} + +// lexNumber consumes an integer or a float after seeing the first digit. +func lexNumber(lx *lexer) stateFn { + r := lx.next() + if isDigit(r) { + return lexNumber + } + switch r { + case '_': + return lexNumber + case '.', 'e', 'E': + return lexFloat + } + + lx.backup() + lx.emit(itemInteger) + return lx.pop() +} + +// lexFloat consumes the elements of a float. It allows any sequence of +// float-like characters, so floats emitted by the lexer are only a first +// approximation and must be validated by the parser. +func lexFloat(lx *lexer) stateFn { + r := lx.next() + if isDigit(r) { + return lexFloat + } + switch r { + case '_', '.', '-', '+', 'e', 'E': + return lexFloat + } + + lx.backup() + lx.emit(itemFloat) + return lx.pop() +} + +// lexBool consumes a bool string: 'true' or 'false. +func lexBool(lx *lexer) stateFn { + var rs []rune + for { + r := lx.next() + if !unicode.IsLetter(r) { + lx.backup() + break + } + rs = append(rs, r) + } + s := string(rs) + switch s { + case "true", "false": + lx.emit(itemBool) + return lx.pop() + } + return lx.errorf("expected value but found %q instead", s) +} + +// lexCommentStart begins the lexing of a comment. It will emit +// itemCommentStart and consume no characters, passing control to lexComment. +func lexCommentStart(lx *lexer) stateFn { + lx.ignore() + lx.emit(itemCommentStart) + return lexComment +} + +// lexComment lexes an entire comment. It assumes that '#' has been consumed. +// It will consume *up to* the first newline character, and pass control +// back to the last state on the stack. +func lexComment(lx *lexer) stateFn { + r := lx.peek() + if isNL(r) || r == eof { + lx.emit(itemText) + return lx.pop() + } + lx.next() + return lexComment +} + +// lexSkip ignores all slurped input and moves on to the next state. +func lexSkip(lx *lexer, nextState stateFn) stateFn { + return func(lx *lexer) stateFn { + lx.ignore() + return nextState + } +} + +// isWhitespace returns true if `r` is a whitespace character according +// to the spec. +func isWhitespace(r rune) bool { + return r == '\t' || r == ' ' +} + +func isNL(r rune) bool { + return r == '\n' || r == '\r' +} + +func isDigit(r rune) bool { + return r >= '0' && r <= '9' +} + +func isHexadecimal(r rune) bool { + return (r >= '0' && r <= '9') || + (r >= 'a' && r <= 'f') || + (r >= 'A' && r <= 'F') +} + +func isBareKeyChar(r rune) bool { + return (r >= 'A' && r <= 'Z') || + (r >= 'a' && r <= 'z') || + (r >= '0' && r <= '9') || + r == '_' || + r == '-' +} + +func (itype itemType) String() string { + switch itype { + case itemError: + return "Error" + case itemNIL: + return "NIL" + case itemEOF: + return "EOF" + case itemText: + return "Text" + case itemString, itemRawString, itemMultilineString, itemRawMultilineString: + return "String" + case itemBool: + return "Bool" + case itemInteger: + return "Integer" + case itemFloat: + return "Float" + case itemDatetime: + return "DateTime" + case itemTableStart: + return "TableStart" + case itemTableEnd: + return "TableEnd" + case itemKeyStart: + return "KeyStart" + case itemArray: + return "Array" + case itemArrayEnd: + return "ArrayEnd" + case itemCommentStart: + return "CommentStart" + } + panic(fmt.Sprintf("BUG: Unknown type '%d'.", int(itype))) +} + +func (item item) String() string { + return fmt.Sprintf("(%s, %s)", item.typ.String(), item.val) +} diff --git a/vendor/github.com/BurntSushi/toml/parse.go b/vendor/github.com/BurntSushi/toml/parse.go new file mode 100644 index 0000000..50869ef --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/parse.go @@ -0,0 +1,592 @@ +package toml + +import ( + "fmt" + "strconv" + "strings" + "time" + "unicode" + "unicode/utf8" +) + +type parser struct { + mapping map[string]interface{} + types map[string]tomlType + lx *lexer + + // A list of keys in the order that they appear in the TOML data. + ordered []Key + + // the full key for the current hash in scope + context Key + + // the base key name for everything except hashes + currentKey string + + // rough approximation of line number + approxLine int + + // A map of 'key.group.names' to whether they were created implicitly. + implicits map[string]bool +} + +type parseError string + +func (pe parseError) Error() string { + return string(pe) +} + +func parse(data string) (p *parser, err error) { + defer func() { + if r := recover(); r != nil { + var ok bool + if err, ok = r.(parseError); ok { + return + } + panic(r) + } + }() + + p = &parser{ + mapping: make(map[string]interface{}), + types: make(map[string]tomlType), + lx: lex(data), + ordered: make([]Key, 0), + implicits: make(map[string]bool), + } + for { + item := p.next() + if item.typ == itemEOF { + break + } + p.topLevel(item) + } + + return p, nil +} + +func (p *parser) panicf(format string, v ...interface{}) { + msg := fmt.Sprintf("Near line %d (last key parsed '%s'): %s", + p.approxLine, p.current(), fmt.Sprintf(format, v...)) + panic(parseError(msg)) +} + +func (p *parser) next() item { + it := p.lx.nextItem() + if it.typ == itemError { + p.panicf("%s", it.val) + } + return it +} + +func (p *parser) bug(format string, v ...interface{}) { + panic(fmt.Sprintf("BUG: "+format+"\n\n", v...)) +} + +func (p *parser) expect(typ itemType) item { + it := p.next() + p.assertEqual(typ, it.typ) + return it +} + +func (p *parser) assertEqual(expected, got itemType) { + if expected != got { + p.bug("Expected '%s' but got '%s'.", expected, got) + } +} + +func (p *parser) topLevel(item item) { + switch item.typ { + case itemCommentStart: + p.approxLine = item.line + p.expect(itemText) + case itemTableStart: + kg := p.next() + p.approxLine = kg.line + + var key Key + for ; kg.typ != itemTableEnd && kg.typ != itemEOF; kg = p.next() { + key = append(key, p.keyString(kg)) + } + p.assertEqual(itemTableEnd, kg.typ) + + p.establishContext(key, false) + p.setType("", tomlHash) + p.ordered = append(p.ordered, key) + case itemArrayTableStart: + kg := p.next() + p.approxLine = kg.line + + var key Key + for ; kg.typ != itemArrayTableEnd && kg.typ != itemEOF; kg = p.next() { + key = append(key, p.keyString(kg)) + } + p.assertEqual(itemArrayTableEnd, kg.typ) + + p.establishContext(key, true) + p.setType("", tomlArrayHash) + p.ordered = append(p.ordered, key) + case itemKeyStart: + kname := p.next() + p.approxLine = kname.line + p.currentKey = p.keyString(kname) + + val, typ := p.value(p.next()) + p.setValue(p.currentKey, val) + p.setType(p.currentKey, typ) + p.ordered = append(p.ordered, p.context.add(p.currentKey)) + p.currentKey = "" + default: + p.bug("Unexpected type at top level: %s", item.typ) + } +} + +// Gets a string for a key (or part of a key in a table name). +func (p *parser) keyString(it item) string { + switch it.typ { + case itemText: + return it.val + case itemString, itemMultilineString, + itemRawString, itemRawMultilineString: + s, _ := p.value(it) + return s.(string) + default: + p.bug("Unexpected key type: %s", it.typ) + panic("unreachable") + } +} + +// value translates an expected value from the lexer into a Go value wrapped +// as an empty interface. +func (p *parser) value(it item) (interface{}, tomlType) { + switch it.typ { + case itemString: + return p.replaceEscapes(it.val), p.typeOfPrimitive(it) + case itemMultilineString: + trimmed := stripFirstNewline(stripEscapedWhitespace(it.val)) + return p.replaceEscapes(trimmed), p.typeOfPrimitive(it) + case itemRawString: + return it.val, p.typeOfPrimitive(it) + case itemRawMultilineString: + return stripFirstNewline(it.val), p.typeOfPrimitive(it) + case itemBool: + switch it.val { + case "true": + return true, p.typeOfPrimitive(it) + case "false": + return false, p.typeOfPrimitive(it) + } + p.bug("Expected boolean value, but got '%s'.", it.val) + case itemInteger: + if !numUnderscoresOK(it.val) { + p.panicf("Invalid integer %q: underscores must be surrounded by digits", + it.val) + } + val := strings.Replace(it.val, "_", "", -1) + num, err := strconv.ParseInt(val, 10, 64) + if err != nil { + // Distinguish integer values. Normally, it'd be a bug if the lexer + // provides an invalid integer, but it's possible that the number is + // out of range of valid values (which the lexer cannot determine). + // So mark the former as a bug but the latter as a legitimate user + // error. + if e, ok := err.(*strconv.NumError); ok && + e.Err == strconv.ErrRange { + + p.panicf("Integer '%s' is out of the range of 64-bit "+ + "signed integers.", it.val) + } else { + p.bug("Expected integer value, but got '%s'.", it.val) + } + } + return num, p.typeOfPrimitive(it) + case itemFloat: + parts := strings.FieldsFunc(it.val, func(r rune) bool { + switch r { + case '.', 'e', 'E': + return true + } + return false + }) + for _, part := range parts { + if !numUnderscoresOK(part) { + p.panicf("Invalid float %q: underscores must be "+ + "surrounded by digits", it.val) + } + } + if !numPeriodsOK(it.val) { + // As a special case, numbers like '123.' or '1.e2', + // which are valid as far as Go/strconv are concerned, + // must be rejected because TOML says that a fractional + // part consists of '.' followed by 1+ digits. + p.panicf("Invalid float %q: '.' must be followed "+ + "by one or more digits", it.val) + } + val := strings.Replace(it.val, "_", "", -1) + num, err := strconv.ParseFloat(val, 64) + if err != nil { + if e, ok := err.(*strconv.NumError); ok && + e.Err == strconv.ErrRange { + + p.panicf("Float '%s' is out of the range of 64-bit "+ + "IEEE-754 floating-point numbers.", it.val) + } else { + p.panicf("Invalid float value: %q", it.val) + } + } + return num, p.typeOfPrimitive(it) + case itemDatetime: + var t time.Time + var ok bool + var err error + for _, format := range []string{ + "2006-01-02T15:04:05Z07:00", + "2006-01-02T15:04:05", + "2006-01-02", + } { + t, err = time.ParseInLocation(format, it.val, time.Local) + if err == nil { + ok = true + break + } + } + if !ok { + p.panicf("Invalid TOML Datetime: %q.", it.val) + } + return t, p.typeOfPrimitive(it) + case itemArray: + array := make([]interface{}, 0) + types := make([]tomlType, 0) + + for it = p.next(); it.typ != itemArrayEnd; it = p.next() { + if it.typ == itemCommentStart { + p.expect(itemText) + continue + } + + val, typ := p.value(it) + array = append(array, val) + types = append(types, typ) + } + return array, p.typeOfArray(types) + case itemInlineTableStart: + var ( + hash = make(map[string]interface{}) + outerContext = p.context + outerKey = p.currentKey + ) + + p.context = append(p.context, p.currentKey) + p.currentKey = "" + for it := p.next(); it.typ != itemInlineTableEnd; it = p.next() { + if it.typ != itemKeyStart { + p.bug("Expected key start but instead found %q, around line %d", + it.val, p.approxLine) + } + if it.typ == itemCommentStart { + p.expect(itemText) + continue + } + + // retrieve key + k := p.next() + p.approxLine = k.line + kname := p.keyString(k) + + // retrieve value + p.currentKey = kname + val, typ := p.value(p.next()) + // make sure we keep metadata up to date + p.setType(kname, typ) + p.ordered = append(p.ordered, p.context.add(p.currentKey)) + hash[kname] = val + } + p.context = outerContext + p.currentKey = outerKey + return hash, tomlHash + } + p.bug("Unexpected value type: %s", it.typ) + panic("unreachable") +} + +// numUnderscoresOK checks whether each underscore in s is surrounded by +// characters that are not underscores. +func numUnderscoresOK(s string) bool { + accept := false + for _, r := range s { + if r == '_' { + if !accept { + return false + } + accept = false + continue + } + accept = true + } + return accept +} + +// numPeriodsOK checks whether every period in s is followed by a digit. +func numPeriodsOK(s string) bool { + period := false + for _, r := range s { + if period && !isDigit(r) { + return false + } + period = r == '.' + } + return !period +} + +// establishContext sets the current context of the parser, +// where the context is either a hash or an array of hashes. Which one is +// set depends on the value of the `array` parameter. +// +// Establishing the context also makes sure that the key isn't a duplicate, and +// will create implicit hashes automatically. +func (p *parser) establishContext(key Key, array bool) { + var ok bool + + // Always start at the top level and drill down for our context. + hashContext := p.mapping + keyContext := make(Key, 0) + + // We only need implicit hashes for key[0:-1] + for _, k := range key[0 : len(key)-1] { + _, ok = hashContext[k] + keyContext = append(keyContext, k) + + // No key? Make an implicit hash and move on. + if !ok { + p.addImplicit(keyContext) + hashContext[k] = make(map[string]interface{}) + } + + // If the hash context is actually an array of tables, then set + // the hash context to the last element in that array. + // + // Otherwise, it better be a table, since this MUST be a key group (by + // virtue of it not being the last element in a key). + switch t := hashContext[k].(type) { + case []map[string]interface{}: + hashContext = t[len(t)-1] + case map[string]interface{}: + hashContext = t + default: + p.panicf("Key '%s' was already created as a hash.", keyContext) + } + } + + p.context = keyContext + if array { + // If this is the first element for this array, then allocate a new + // list of tables for it. + k := key[len(key)-1] + if _, ok := hashContext[k]; !ok { + hashContext[k] = make([]map[string]interface{}, 0, 5) + } + + // Add a new table. But make sure the key hasn't already been used + // for something else. + if hash, ok := hashContext[k].([]map[string]interface{}); ok { + hashContext[k] = append(hash, make(map[string]interface{})) + } else { + p.panicf("Key '%s' was already created and cannot be used as "+ + "an array.", keyContext) + } + } else { + p.setValue(key[len(key)-1], make(map[string]interface{})) + } + p.context = append(p.context, key[len(key)-1]) +} + +// setValue sets the given key to the given value in the current context. +// It will make sure that the key hasn't already been defined, account for +// implicit key groups. +func (p *parser) setValue(key string, value interface{}) { + var tmpHash interface{} + var ok bool + + hash := p.mapping + keyContext := make(Key, 0) + for _, k := range p.context { + keyContext = append(keyContext, k) + if tmpHash, ok = hash[k]; !ok { + p.bug("Context for key '%s' has not been established.", keyContext) + } + switch t := tmpHash.(type) { + case []map[string]interface{}: + // The context is a table of hashes. Pick the most recent table + // defined as the current hash. + hash = t[len(t)-1] + case map[string]interface{}: + hash = t + default: + p.bug("Expected hash to have type 'map[string]interface{}', but "+ + "it has '%T' instead.", tmpHash) + } + } + keyContext = append(keyContext, key) + + if _, ok := hash[key]; ok { + // Typically, if the given key has already been set, then we have + // to raise an error since duplicate keys are disallowed. However, + // it's possible that a key was previously defined implicitly. In this + // case, it is allowed to be redefined concretely. (See the + // `tests/valid/implicit-and-explicit-after.toml` test in `toml-test`.) + // + // But we have to make sure to stop marking it as an implicit. (So that + // another redefinition provokes an error.) + // + // Note that since it has already been defined (as a hash), we don't + // want to overwrite it. So our business is done. + if p.isImplicit(keyContext) { + p.removeImplicit(keyContext) + return + } + + // Otherwise, we have a concrete key trying to override a previous + // key, which is *always* wrong. + p.panicf("Key '%s' has already been defined.", keyContext) + } + hash[key] = value +} + +// setType sets the type of a particular value at a given key. +// It should be called immediately AFTER setValue. +// +// Note that if `key` is empty, then the type given will be applied to the +// current context (which is either a table or an array of tables). +func (p *parser) setType(key string, typ tomlType) { + keyContext := make(Key, 0, len(p.context)+1) + for _, k := range p.context { + keyContext = append(keyContext, k) + } + if len(key) > 0 { // allow type setting for hashes + keyContext = append(keyContext, key) + } + p.types[keyContext.String()] = typ +} + +// addImplicit sets the given Key as having been created implicitly. +func (p *parser) addImplicit(key Key) { + p.implicits[key.String()] = true +} + +// removeImplicit stops tagging the given key as having been implicitly +// created. +func (p *parser) removeImplicit(key Key) { + p.implicits[key.String()] = false +} + +// isImplicit returns true if the key group pointed to by the key was created +// implicitly. +func (p *parser) isImplicit(key Key) bool { + return p.implicits[key.String()] +} + +// current returns the full key name of the current context. +func (p *parser) current() string { + if len(p.currentKey) == 0 { + return p.context.String() + } + if len(p.context) == 0 { + return p.currentKey + } + return fmt.Sprintf("%s.%s", p.context, p.currentKey) +} + +func stripFirstNewline(s string) string { + if len(s) == 0 || s[0] != '\n' { + return s + } + return s[1:] +} + +func stripEscapedWhitespace(s string) string { + esc := strings.Split(s, "\\\n") + if len(esc) > 1 { + for i := 1; i < len(esc); i++ { + esc[i] = strings.TrimLeftFunc(esc[i], unicode.IsSpace) + } + } + return strings.Join(esc, "") +} + +func (p *parser) replaceEscapes(str string) string { + var replaced []rune + s := []byte(str) + r := 0 + for r < len(s) { + if s[r] != '\\' { + c, size := utf8.DecodeRune(s[r:]) + r += size + replaced = append(replaced, c) + continue + } + r += 1 + if r >= len(s) { + p.bug("Escape sequence at end of string.") + return "" + } + switch s[r] { + default: + p.bug("Expected valid escape code after \\, but got %q.", s[r]) + return "" + case 'b': + replaced = append(replaced, rune(0x0008)) + r += 1 + case 't': + replaced = append(replaced, rune(0x0009)) + r += 1 + case 'n': + replaced = append(replaced, rune(0x000A)) + r += 1 + case 'f': + replaced = append(replaced, rune(0x000C)) + r += 1 + case 'r': + replaced = append(replaced, rune(0x000D)) + r += 1 + case '"': + replaced = append(replaced, rune(0x0022)) + r += 1 + case '\\': + replaced = append(replaced, rune(0x005C)) + r += 1 + case 'u': + // At this point, we know we have a Unicode escape of the form + // `uXXXX` at [r, r+5). (Because the lexer guarantees this + // for us.) + escaped := p.asciiEscapeToUnicode(s[r+1 : r+5]) + replaced = append(replaced, escaped) + r += 5 + case 'U': + // At this point, we know we have a Unicode escape of the form + // `uXXXX` at [r, r+9). (Because the lexer guarantees this + // for us.) + escaped := p.asciiEscapeToUnicode(s[r+1 : r+9]) + replaced = append(replaced, escaped) + r += 9 + } + } + return string(replaced) +} + +func (p *parser) asciiEscapeToUnicode(bs []byte) rune { + s := string(bs) + hex, err := strconv.ParseUint(strings.ToLower(s), 16, 32) + if err != nil { + p.bug("Could not parse '%s' as a hexadecimal number, but the "+ + "lexer claims it's OK: %s", s, err) + } + if !utf8.ValidRune(rune(hex)) { + p.panicf("Escaped character '\\u%s' is not valid UTF-8.", s) + } + return rune(hex) +} + +func isStringType(ty itemType) bool { + return ty == itemString || ty == itemMultilineString || + ty == itemRawString || ty == itemRawMultilineString +} diff --git a/vendor/github.com/BurntSushi/toml/session.vim b/vendor/github.com/BurntSushi/toml/session.vim new file mode 100644 index 0000000..562164b --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/session.vim @@ -0,0 +1 @@ +au BufWritePost *.go silent!make tags > /dev/null 2>&1 diff --git a/vendor/github.com/BurntSushi/toml/type_check.go b/vendor/github.com/BurntSushi/toml/type_check.go new file mode 100644 index 0000000..c73f8af --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/type_check.go @@ -0,0 +1,91 @@ +package toml + +// tomlType represents any Go type that corresponds to a TOML type. +// While the first draft of the TOML spec has a simplistic type system that +// probably doesn't need this level of sophistication, we seem to be militating +// toward adding real composite types. +type tomlType interface { + typeString() string +} + +// typeEqual accepts any two types and returns true if they are equal. +func typeEqual(t1, t2 tomlType) bool { + if t1 == nil || t2 == nil { + return false + } + return t1.typeString() == t2.typeString() +} + +func typeIsHash(t tomlType) bool { + return typeEqual(t, tomlHash) || typeEqual(t, tomlArrayHash) +} + +type tomlBaseType string + +func (btype tomlBaseType) typeString() string { + return string(btype) +} + +func (btype tomlBaseType) String() string { + return btype.typeString() +} + +var ( + tomlInteger tomlBaseType = "Integer" + tomlFloat tomlBaseType = "Float" + tomlDatetime tomlBaseType = "Datetime" + tomlString tomlBaseType = "String" + tomlBool tomlBaseType = "Bool" + tomlArray tomlBaseType = "Array" + tomlHash tomlBaseType = "Hash" + tomlArrayHash tomlBaseType = "ArrayHash" +) + +// typeOfPrimitive returns a tomlType of any primitive value in TOML. +// Primitive values are: Integer, Float, Datetime, String and Bool. +// +// Passing a lexer item other than the following will cause a BUG message +// to occur: itemString, itemBool, itemInteger, itemFloat, itemDatetime. +func (p *parser) typeOfPrimitive(lexItem item) tomlType { + switch lexItem.typ { + case itemInteger: + return tomlInteger + case itemFloat: + return tomlFloat + case itemDatetime: + return tomlDatetime + case itemString: + return tomlString + case itemMultilineString: + return tomlString + case itemRawString: + return tomlString + case itemRawMultilineString: + return tomlString + case itemBool: + return tomlBool + } + p.bug("Cannot infer primitive type of lex item '%s'.", lexItem) + panic("unreachable") +} + +// typeOfArray returns a tomlType for an array given a list of types of its +// values. +// +// In the current spec, if an array is homogeneous, then its type is always +// "Array". If the array is not homogeneous, an error is generated. +func (p *parser) typeOfArray(types []tomlType) tomlType { + // Empty arrays are cool. + if len(types) == 0 { + return tomlArray + } + + theType := types[0] + for _, t := range types[1:] { + if !typeEqual(theType, t) { + p.panicf("Array contains values of type '%s' and '%s', but "+ + "arrays must be homogeneous.", theType, t) + } + } + return tomlArray +} diff --git a/vendor/github.com/BurntSushi/toml/type_fields.go b/vendor/github.com/BurntSushi/toml/type_fields.go new file mode 100644 index 0000000..608997c --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/type_fields.go @@ -0,0 +1,242 @@ +package toml + +// Struct field handling is adapted from code in encoding/json: +// +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the Go distribution. + +import ( + "reflect" + "sort" + "sync" +) + +// A field represents a single field found in a struct. +type field struct { + name string // the name of the field (`toml` tag included) + tag bool // whether field has a `toml` tag + index []int // represents the depth of an anonymous field + typ reflect.Type // the type of the field +} + +// byName sorts field by name, breaking ties with depth, +// then breaking ties with "name came from toml tag", then +// breaking ties with index sequence. +type byName []field + +func (x byName) Len() int { return len(x) } + +func (x byName) Swap(i, j int) { x[i], x[j] = x[j], x[i] } + +func (x byName) Less(i, j int) bool { + if x[i].name != x[j].name { + return x[i].name < x[j].name + } + if len(x[i].index) != len(x[j].index) { + return len(x[i].index) < len(x[j].index) + } + if x[i].tag != x[j].tag { + return x[i].tag + } + return byIndex(x).Less(i, j) +} + +// byIndex sorts field by index sequence. +type byIndex []field + +func (x byIndex) Len() int { return len(x) } + +func (x byIndex) Swap(i, j int) { x[i], x[j] = x[j], x[i] } + +func (x byIndex) Less(i, j int) bool { + for k, xik := range x[i].index { + if k >= len(x[j].index) { + return false + } + if xik != x[j].index[k] { + return xik < x[j].index[k] + } + } + return len(x[i].index) < len(x[j].index) +} + +// typeFields returns a list of fields that TOML should recognize for the given +// type. The algorithm is breadth-first search over the set of structs to +// include - the top struct and then any reachable anonymous structs. +func typeFields(t reflect.Type) []field { + // Anonymous fields to explore at the current level and the next. + current := []field{} + next := []field{{typ: t}} + + // Count of queued names for current level and the next. + count := map[reflect.Type]int{} + nextCount := map[reflect.Type]int{} + + // Types already visited at an earlier level. + visited := map[reflect.Type]bool{} + + // Fields found. + var fields []field + + for len(next) > 0 { + current, next = next, current[:0] + count, nextCount = nextCount, map[reflect.Type]int{} + + for _, f := range current { + if visited[f.typ] { + continue + } + visited[f.typ] = true + + // Scan f.typ for fields to include. + for i := 0; i < f.typ.NumField(); i++ { + sf := f.typ.Field(i) + if sf.PkgPath != "" && !sf.Anonymous { // unexported + continue + } + opts := getOptions(sf.Tag) + if opts.skip { + continue + } + index := make([]int, len(f.index)+1) + copy(index, f.index) + index[len(f.index)] = i + + ft := sf.Type + if ft.Name() == "" && ft.Kind() == reflect.Ptr { + // Follow pointer. + ft = ft.Elem() + } + + // Record found field and index sequence. + if opts.name != "" || !sf.Anonymous || ft.Kind() != reflect.Struct { + tagged := opts.name != "" + name := opts.name + if name == "" { + name = sf.Name + } + fields = append(fields, field{name, tagged, index, ft}) + if count[f.typ] > 1 { + // If there were multiple instances, add a second, + // so that the annihilation code will see a duplicate. + // It only cares about the distinction between 1 or 2, + // so don't bother generating any more copies. + fields = append(fields, fields[len(fields)-1]) + } + continue + } + + // Record new anonymous struct to explore in next round. + nextCount[ft]++ + if nextCount[ft] == 1 { + f := field{name: ft.Name(), index: index, typ: ft} + next = append(next, f) + } + } + } + } + + sort.Sort(byName(fields)) + + // Delete all fields that are hidden by the Go rules for embedded fields, + // except that fields with TOML tags are promoted. + + // The fields are sorted in primary order of name, secondary order + // of field index length. Loop over names; for each name, delete + // hidden fields by choosing the one dominant field that survives. + out := fields[:0] + for advance, i := 0, 0; i < len(fields); i += advance { + // One iteration per name. + // Find the sequence of fields with the name of this first field. + fi := fields[i] + name := fi.name + for advance = 1; i+advance < len(fields); advance++ { + fj := fields[i+advance] + if fj.name != name { + break + } + } + if advance == 1 { // Only one field with this name + out = append(out, fi) + continue + } + dominant, ok := dominantField(fields[i : i+advance]) + if ok { + out = append(out, dominant) + } + } + + fields = out + sort.Sort(byIndex(fields)) + + return fields +} + +// dominantField looks through the fields, all of which are known to +// have the same name, to find the single field that dominates the +// others using Go's embedding rules, modified by the presence of +// TOML tags. If there are multiple top-level fields, the boolean +// will be false: This condition is an error in Go and we skip all +// the fields. +func dominantField(fields []field) (field, bool) { + // The fields are sorted in increasing index-length order. The winner + // must therefore be one with the shortest index length. Drop all + // longer entries, which is easy: just truncate the slice. + length := len(fields[0].index) + tagged := -1 // Index of first tagged field. + for i, f := range fields { + if len(f.index) > length { + fields = fields[:i] + break + } + if f.tag { + if tagged >= 0 { + // Multiple tagged fields at the same level: conflict. + // Return no field. + return field{}, false + } + tagged = i + } + } + if tagged >= 0 { + return fields[tagged], true + } + // All remaining fields have the same length. If there's more than one, + // we have a conflict (two fields named "X" at the same level) and we + // return no field. + if len(fields) > 1 { + return field{}, false + } + return fields[0], true +} + +var fieldCache struct { + sync.RWMutex + m map[reflect.Type][]field +} + +// cachedTypeFields is like typeFields but uses a cache to avoid repeated work. +func cachedTypeFields(t reflect.Type) []field { + fieldCache.RLock() + f := fieldCache.m[t] + fieldCache.RUnlock() + if f != nil { + return f + } + + // Compute fields without lock. + // Might duplicate effort but won't hold other computations back. + f = typeFields(t) + if f == nil { + f = []field{} + } + + fieldCache.Lock() + if fieldCache.m == nil { + fieldCache.m = map[reflect.Type][]field{} + } + fieldCache.m[t] = f + fieldCache.Unlock() + return f +} diff --git a/vendor/github.com/aws/aws-sdk-go/LICENSE.txt b/vendor/github.com/aws/aws-sdk-go/LICENSE.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/aws/aws-sdk-go/NOTICE.txt b/vendor/github.com/aws/aws-sdk-go/NOTICE.txt new file mode 100644 index 0000000..899129e --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/NOTICE.txt @@ -0,0 +1,3 @@ +AWS SDK for Go +Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. +Copyright 2014-2015 Stripe, Inc. diff --git a/vendor/github.com/aws/aws-sdk-go/aws/awserr/error.go b/vendor/github.com/aws/aws-sdk-go/aws/awserr/error.go new file mode 100644 index 0000000..99849c0 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/awserr/error.go @@ -0,0 +1,164 @@ +// Package awserr represents API error interface accessors for the SDK. +package awserr + +// An Error wraps lower level errors with code, message and an original error. +// The underlying concrete error type may also satisfy other interfaces which +// can be to used to obtain more specific information about the error. +// +// Calling Error() or String() will always include the full information about +// an error based on its underlying type. +// +// Example: +// +// output, err := s3manage.Upload(svc, input, opts) +// if err != nil { +// if awsErr, ok := err.(awserr.Error); ok { +// // Get error details +// log.Println("Error:", awsErr.Code(), awsErr.Message()) +// +// // Prints out full error message, including original error if there was one. +// log.Println("Error:", awsErr.Error()) +// +// // Get original error +// if origErr := awsErr.OrigErr(); origErr != nil { +// // operate on original error. +// } +// } else { +// fmt.Println(err.Error()) +// } +// } +// +type Error interface { + // Satisfy the generic error interface. + error + + // Returns the short phrase depicting the classification of the error. + Code() string + + // Returns the error details message. + Message() string + + // Returns the original error if one was set. Nil is returned if not set. + OrigErr() error +} + +// BatchError is a batch of errors which also wraps lower level errors with +// code, message, and original errors. Calling Error() will include all errors +// that occurred in the batch. +// +// Deprecated: Replaced with BatchedErrors. Only defined for backwards +// compatibility. +type BatchError interface { + // Satisfy the generic error interface. + error + + // Returns the short phrase depicting the classification of the error. + Code() string + + // Returns the error details message. + Message() string + + // Returns the original error if one was set. Nil is returned if not set. + OrigErrs() []error +} + +// BatchedErrors is a batch of errors which also wraps lower level errors with +// code, message, and original errors. Calling Error() will include all errors +// that occurred in the batch. +// +// Replaces BatchError +type BatchedErrors interface { + // Satisfy the base Error interface. + Error + + // Returns the original error if one was set. Nil is returned if not set. + OrigErrs() []error +} + +// New returns an Error object described by the code, message, and origErr. +// +// If origErr satisfies the Error interface it will not be wrapped within a new +// Error object and will instead be returned. +func New(code, message string, origErr error) Error { + var errs []error + if origErr != nil { + errs = append(errs, origErr) + } + return newBaseError(code, message, errs) +} + +// NewBatchError returns an BatchedErrors with a collection of errors as an +// array of errors. +func NewBatchError(code, message string, errs []error) BatchedErrors { + return newBaseError(code, message, errs) +} + +// A RequestFailure is an interface to extract request failure information from +// an Error such as the request ID of the failed request returned by a service. +// RequestFailures may not always have a requestID value if the request failed +// prior to reaching the service such as a connection error. +// +// Example: +// +// output, err := s3manage.Upload(svc, input, opts) +// if err != nil { +// if reqerr, ok := err.(RequestFailure); ok { +// log.Println("Request failed", reqerr.Code(), reqerr.Message(), reqerr.RequestID()) +// } else { +// log.Println("Error:", err.Error()) +// } +// } +// +// Combined with awserr.Error: +// +// output, err := s3manage.Upload(svc, input, opts) +// if err != nil { +// if awsErr, ok := err.(awserr.Error); ok { +// // Generic AWS Error with Code, Message, and original error (if any) +// fmt.Println(awsErr.Code(), awsErr.Message(), awsErr.OrigErr()) +// +// if reqErr, ok := err.(awserr.RequestFailure); ok { +// // A service error occurred +// fmt.Println(reqErr.StatusCode(), reqErr.RequestID()) +// } +// } else { +// fmt.Println(err.Error()) +// } +// } +// +type RequestFailure interface { + Error + + // The status code of the HTTP response. + StatusCode() int + + // The request ID returned by the service for a request failure. This will + // be empty if no request ID is available such as the request failed due + // to a connection error. + RequestID() string +} + +// NewRequestFailure returns a wrapped error with additional information for +// request status code, and service requestID. +// +// Should be used to wrap all request which involve service requests. Even if +// the request failed without a service response, but had an HTTP status code +// that may be meaningful. +func NewRequestFailure(err Error, statusCode int, reqID string) RequestFailure { + return newRequestError(err, statusCode, reqID) +} + +// UnmarshalError provides the interface for the SDK failing to unmarshal data. +type UnmarshalError interface { + awsError + Bytes() []byte +} + +// NewUnmarshalError returns an initialized UnmarshalError error wrapper adding +// the bytes that fail to unmarshal to the error. +func NewUnmarshalError(err error, msg string, bytes []byte) UnmarshalError { + return &unmarshalError{ + awsError: New("UnmarshalError", msg, err), + bytes: bytes, + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/awserr/types.go b/vendor/github.com/aws/aws-sdk-go/aws/awserr/types.go new file mode 100644 index 0000000..9cf7eaf --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/awserr/types.go @@ -0,0 +1,221 @@ +package awserr + +import ( + "encoding/hex" + "fmt" +) + +// SprintError returns a string of the formatted error code. +// +// Both extra and origErr are optional. If they are included their lines +// will be added, but if they are not included their lines will be ignored. +func SprintError(code, message, extra string, origErr error) string { + msg := fmt.Sprintf("%s: %s", code, message) + if extra != "" { + msg = fmt.Sprintf("%s\n\t%s", msg, extra) + } + if origErr != nil { + msg = fmt.Sprintf("%s\ncaused by: %s", msg, origErr.Error()) + } + return msg +} + +// A baseError wraps the code and message which defines an error. It also +// can be used to wrap an original error object. +// +// Should be used as the root for errors satisfying the awserr.Error. Also +// for any error which does not fit into a specific error wrapper type. +type baseError struct { + // Classification of error + code string + + // Detailed information about error + message string + + // Optional original error this error is based off of. Allows building + // chained errors. + errs []error +} + +// newBaseError returns an error object for the code, message, and errors. +// +// code is a short no whitespace phrase depicting the classification of +// the error that is being created. +// +// message is the free flow string containing detailed information about the +// error. +// +// origErrs is the error objects which will be nested under the new errors to +// be returned. +func newBaseError(code, message string, origErrs []error) *baseError { + b := &baseError{ + code: code, + message: message, + errs: origErrs, + } + + return b +} + +// Error returns the string representation of the error. +// +// See ErrorWithExtra for formatting. +// +// Satisfies the error interface. +func (b baseError) Error() string { + size := len(b.errs) + if size > 0 { + return SprintError(b.code, b.message, "", errorList(b.errs)) + } + + return SprintError(b.code, b.message, "", nil) +} + +// String returns the string representation of the error. +// Alias for Error to satisfy the stringer interface. +func (b baseError) String() string { + return b.Error() +} + +// Code returns the short phrase depicting the classification of the error. +func (b baseError) Code() string { + return b.code +} + +// Message returns the error details message. +func (b baseError) Message() string { + return b.message +} + +// OrigErr returns the original error if one was set. Nil is returned if no +// error was set. This only returns the first element in the list. If the full +// list is needed, use BatchedErrors. +func (b baseError) OrigErr() error { + switch len(b.errs) { + case 0: + return nil + case 1: + return b.errs[0] + default: + if err, ok := b.errs[0].(Error); ok { + return NewBatchError(err.Code(), err.Message(), b.errs[1:]) + } + return NewBatchError("BatchedErrors", + "multiple errors occurred", b.errs) + } +} + +// OrigErrs returns the original errors if one was set. An empty slice is +// returned if no error was set. +func (b baseError) OrigErrs() []error { + return b.errs +} + +// So that the Error interface type can be included as an anonymous field +// in the requestError struct and not conflict with the error.Error() method. +type awsError Error + +// A requestError wraps a request or service error. +// +// Composed of baseError for code, message, and original error. +type requestError struct { + awsError + statusCode int + requestID string + bytes []byte +} + +// newRequestError returns a wrapped error with additional information for +// request status code, and service requestID. +// +// Should be used to wrap all request which involve service requests. Even if +// the request failed without a service response, but had an HTTP status code +// that may be meaningful. +// +// Also wraps original errors via the baseError. +func newRequestError(err Error, statusCode int, requestID string) *requestError { + return &requestError{ + awsError: err, + statusCode: statusCode, + requestID: requestID, + } +} + +// Error returns the string representation of the error. +// Satisfies the error interface. +func (r requestError) Error() string { + extra := fmt.Sprintf("status code: %d, request id: %s", + r.statusCode, r.requestID) + return SprintError(r.Code(), r.Message(), extra, r.OrigErr()) +} + +// String returns the string representation of the error. +// Alias for Error to satisfy the stringer interface. +func (r requestError) String() string { + return r.Error() +} + +// StatusCode returns the wrapped status code for the error +func (r requestError) StatusCode() int { + return r.statusCode +} + +// RequestID returns the wrapped requestID +func (r requestError) RequestID() string { + return r.requestID +} + +// OrigErrs returns the original errors if one was set. An empty slice is +// returned if no error was set. +func (r requestError) OrigErrs() []error { + if b, ok := r.awsError.(BatchedErrors); ok { + return b.OrigErrs() + } + return []error{r.OrigErr()} +} + +type unmarshalError struct { + awsError + bytes []byte +} + +// Error returns the string representation of the error. +// Satisfies the error interface. +func (e unmarshalError) Error() string { + extra := hex.Dump(e.bytes) + return SprintError(e.Code(), e.Message(), extra, e.OrigErr()) +} + +// String returns the string representation of the error. +// Alias for Error to satisfy the stringer interface. +func (e unmarshalError) String() string { + return e.Error() +} + +// Bytes returns the bytes that failed to unmarshal. +func (e unmarshalError) Bytes() []byte { + return e.bytes +} + +// An error list that satisfies the golang interface +type errorList []error + +// Error returns the string representation of the error. +// +// Satisfies the error interface. +func (e errorList) Error() string { + msg := "" + // How do we want to handle the array size being zero + if size := len(e); size > 0 { + for i := 0; i < size; i++ { + msg += e[i].Error() + // We check the next index to see if it is within the slice. + // If it is, then we append a newline. We do this, because unit tests + // could be broken with the additional '\n' + if i+1 < size { + msg += "\n" + } + } + } + return msg +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/awsutil/copy.go b/vendor/github.com/aws/aws-sdk-go/aws/awsutil/copy.go new file mode 100644 index 0000000..1a3d106 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/awsutil/copy.go @@ -0,0 +1,108 @@ +package awsutil + +import ( + "io" + "reflect" + "time" +) + +// Copy deeply copies a src structure to dst. Useful for copying request and +// response structures. +// +// Can copy between structs of different type, but will only copy fields which +// are assignable, and exist in both structs. Fields which are not assignable, +// or do not exist in both structs are ignored. +func Copy(dst, src interface{}) { + dstval := reflect.ValueOf(dst) + if !dstval.IsValid() { + panic("Copy dst cannot be nil") + } + + rcopy(dstval, reflect.ValueOf(src), true) +} + +// CopyOf returns a copy of src while also allocating the memory for dst. +// src must be a pointer type or this operation will fail. +func CopyOf(src interface{}) (dst interface{}) { + dsti := reflect.New(reflect.TypeOf(src).Elem()) + dst = dsti.Interface() + rcopy(dsti, reflect.ValueOf(src), true) + return +} + +// rcopy performs a recursive copy of values from the source to destination. +// +// root is used to skip certain aspects of the copy which are not valid +// for the root node of a object. +func rcopy(dst, src reflect.Value, root bool) { + if !src.IsValid() { + return + } + + switch src.Kind() { + case reflect.Ptr: + if _, ok := src.Interface().(io.Reader); ok { + if dst.Kind() == reflect.Ptr && dst.Elem().CanSet() { + dst.Elem().Set(src) + } else if dst.CanSet() { + dst.Set(src) + } + } else { + e := src.Type().Elem() + if dst.CanSet() && !src.IsNil() { + if _, ok := src.Interface().(*time.Time); !ok { + dst.Set(reflect.New(e)) + } else { + tempValue := reflect.New(e) + tempValue.Elem().Set(src.Elem()) + // Sets time.Time's unexported values + dst.Set(tempValue) + } + } + if src.Elem().IsValid() { + // Keep the current root state since the depth hasn't changed + rcopy(dst.Elem(), src.Elem(), root) + } + } + case reflect.Struct: + t := dst.Type() + for i := 0; i < t.NumField(); i++ { + name := t.Field(i).Name + srcVal := src.FieldByName(name) + dstVal := dst.FieldByName(name) + if srcVal.IsValid() && dstVal.CanSet() { + rcopy(dstVal, srcVal, false) + } + } + case reflect.Slice: + if src.IsNil() { + break + } + + s := reflect.MakeSlice(src.Type(), src.Len(), src.Cap()) + dst.Set(s) + for i := 0; i < src.Len(); i++ { + rcopy(dst.Index(i), src.Index(i), false) + } + case reflect.Map: + if src.IsNil() { + break + } + + s := reflect.MakeMap(src.Type()) + dst.Set(s) + for _, k := range src.MapKeys() { + v := src.MapIndex(k) + v2 := reflect.New(v.Type()).Elem() + rcopy(v2, v, false) + dst.SetMapIndex(k, v2) + } + default: + // Assign the value if possible. If its not assignable, the value would + // need to be converted and the impact of that may be unexpected, or is + // not compatible with the dst type. + if src.Type().AssignableTo(dst.Type()) { + dst.Set(src) + } + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/awsutil/equal.go b/vendor/github.com/aws/aws-sdk-go/aws/awsutil/equal.go new file mode 100644 index 0000000..142a7a0 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/awsutil/equal.go @@ -0,0 +1,27 @@ +package awsutil + +import ( + "reflect" +) + +// DeepEqual returns if the two values are deeply equal like reflect.DeepEqual. +// In addition to this, this method will also dereference the input values if +// possible so the DeepEqual performed will not fail if one parameter is a +// pointer and the other is not. +// +// DeepEqual will not perform indirection of nested values of the input parameters. +func DeepEqual(a, b interface{}) bool { + ra := reflect.Indirect(reflect.ValueOf(a)) + rb := reflect.Indirect(reflect.ValueOf(b)) + + if raValid, rbValid := ra.IsValid(), rb.IsValid(); !raValid && !rbValid { + // If the elements are both nil, and of the same type they are equal + // If they are of different types they are not equal + return reflect.TypeOf(a) == reflect.TypeOf(b) + } else if raValid != rbValid { + // Both values must be valid to be equal + return false + } + + return reflect.DeepEqual(ra.Interface(), rb.Interface()) +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/awsutil/path_value.go b/vendor/github.com/aws/aws-sdk-go/aws/awsutil/path_value.go new file mode 100644 index 0000000..a4eb6a7 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/awsutil/path_value.go @@ -0,0 +1,221 @@ +package awsutil + +import ( + "reflect" + "regexp" + "strconv" + "strings" + + "github.com/jmespath/go-jmespath" +) + +var indexRe = regexp.MustCompile(`(.+)\[(-?\d+)?\]$`) + +// rValuesAtPath returns a slice of values found in value v. The values +// in v are explored recursively so all nested values are collected. +func rValuesAtPath(v interface{}, path string, createPath, caseSensitive, nilTerm bool) []reflect.Value { + pathparts := strings.Split(path, "||") + if len(pathparts) > 1 { + for _, pathpart := range pathparts { + vals := rValuesAtPath(v, pathpart, createPath, caseSensitive, nilTerm) + if len(vals) > 0 { + return vals + } + } + return nil + } + + values := []reflect.Value{reflect.Indirect(reflect.ValueOf(v))} + components := strings.Split(path, ".") + for len(values) > 0 && len(components) > 0 { + var index *int64 + var indexStar bool + c := strings.TrimSpace(components[0]) + if c == "" { // no actual component, illegal syntax + return nil + } else if caseSensitive && c != "*" && strings.ToLower(c[0:1]) == c[0:1] { + // TODO normalize case for user + return nil // don't support unexported fields + } + + // parse this component + if m := indexRe.FindStringSubmatch(c); m != nil { + c = m[1] + if m[2] == "" { + index = nil + indexStar = true + } else { + i, _ := strconv.ParseInt(m[2], 10, 32) + index = &i + indexStar = false + } + } + + nextvals := []reflect.Value{} + for _, value := range values { + // pull component name out of struct member + if value.Kind() != reflect.Struct { + continue + } + + if c == "*" { // pull all members + for i := 0; i < value.NumField(); i++ { + if f := reflect.Indirect(value.Field(i)); f.IsValid() { + nextvals = append(nextvals, f) + } + } + continue + } + + value = value.FieldByNameFunc(func(name string) bool { + if c == name { + return true + } else if !caseSensitive && strings.EqualFold(name, c) { + return true + } + return false + }) + + if nilTerm && value.Kind() == reflect.Ptr && len(components[1:]) == 0 { + if !value.IsNil() { + value.Set(reflect.Zero(value.Type())) + } + return []reflect.Value{value} + } + + if createPath && value.Kind() == reflect.Ptr && value.IsNil() { + // TODO if the value is the terminus it should not be created + // if the value to be set to its position is nil. + value.Set(reflect.New(value.Type().Elem())) + value = value.Elem() + } else { + value = reflect.Indirect(value) + } + + if value.Kind() == reflect.Slice || value.Kind() == reflect.Map { + if !createPath && value.IsNil() { + value = reflect.ValueOf(nil) + } + } + + if value.IsValid() { + nextvals = append(nextvals, value) + } + } + values = nextvals + + if indexStar || index != nil { + nextvals = []reflect.Value{} + for _, valItem := range values { + value := reflect.Indirect(valItem) + if value.Kind() != reflect.Slice { + continue + } + + if indexStar { // grab all indices + for i := 0; i < value.Len(); i++ { + idx := reflect.Indirect(value.Index(i)) + if idx.IsValid() { + nextvals = append(nextvals, idx) + } + } + continue + } + + // pull out index + i := int(*index) + if i >= value.Len() { // check out of bounds + if createPath { + // TODO resize slice + } else { + continue + } + } else if i < 0 { // support negative indexing + i = value.Len() + i + } + value = reflect.Indirect(value.Index(i)) + + if value.Kind() == reflect.Slice || value.Kind() == reflect.Map { + if !createPath && value.IsNil() { + value = reflect.ValueOf(nil) + } + } + + if value.IsValid() { + nextvals = append(nextvals, value) + } + } + values = nextvals + } + + components = components[1:] + } + return values +} + +// ValuesAtPath returns a list of values at the case insensitive lexical +// path inside of a structure. +func ValuesAtPath(i interface{}, path string) ([]interface{}, error) { + result, err := jmespath.Search(path, i) + if err != nil { + return nil, err + } + + v := reflect.ValueOf(result) + if !v.IsValid() || (v.Kind() == reflect.Ptr && v.IsNil()) { + return nil, nil + } + if s, ok := result.([]interface{}); ok { + return s, err + } + if v.Kind() == reflect.Map && v.Len() == 0 { + return nil, nil + } + if v.Kind() == reflect.Slice { + out := make([]interface{}, v.Len()) + for i := 0; i < v.Len(); i++ { + out[i] = v.Index(i).Interface() + } + return out, nil + } + + return []interface{}{result}, nil +} + +// SetValueAtPath sets a value at the case insensitive lexical path inside +// of a structure. +func SetValueAtPath(i interface{}, path string, v interface{}) { + rvals := rValuesAtPath(i, path, true, false, v == nil) + for _, rval := range rvals { + if rval.Kind() == reflect.Ptr && rval.IsNil() { + continue + } + setValue(rval, v) + } +} + +func setValue(dstVal reflect.Value, src interface{}) { + if dstVal.Kind() == reflect.Ptr { + dstVal = reflect.Indirect(dstVal) + } + srcVal := reflect.ValueOf(src) + + if !srcVal.IsValid() { // src is literal nil + if dstVal.CanAddr() { + // Convert to pointer so that pointer's value can be nil'ed + // dstVal = dstVal.Addr() + } + dstVal.Set(reflect.Zero(dstVal.Type())) + + } else if srcVal.Kind() == reflect.Ptr { + if srcVal.IsNil() { + srcVal = reflect.Zero(dstVal.Type()) + } else { + srcVal = reflect.ValueOf(src).Elem() + } + dstVal.Set(srcVal) + } else { + dstVal.Set(srcVal) + } + +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/awsutil/prettify.go b/vendor/github.com/aws/aws-sdk-go/aws/awsutil/prettify.go new file mode 100644 index 0000000..710eb43 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/awsutil/prettify.go @@ -0,0 +1,113 @@ +package awsutil + +import ( + "bytes" + "fmt" + "io" + "reflect" + "strings" +) + +// Prettify returns the string representation of a value. +func Prettify(i interface{}) string { + var buf bytes.Buffer + prettify(reflect.ValueOf(i), 0, &buf) + return buf.String() +} + +// prettify will recursively walk value v to build a textual +// representation of the value. +func prettify(v reflect.Value, indent int, buf *bytes.Buffer) { + for v.Kind() == reflect.Ptr { + v = v.Elem() + } + + switch v.Kind() { + case reflect.Struct: + strtype := v.Type().String() + if strtype == "time.Time" { + fmt.Fprintf(buf, "%s", v.Interface()) + break + } else if strings.HasPrefix(strtype, "io.") { + buf.WriteString("") + break + } + + buf.WriteString("{\n") + + names := []string{} + for i := 0; i < v.Type().NumField(); i++ { + name := v.Type().Field(i).Name + f := v.Field(i) + if name[0:1] == strings.ToLower(name[0:1]) { + continue // ignore unexported fields + } + if (f.Kind() == reflect.Ptr || f.Kind() == reflect.Slice || f.Kind() == reflect.Map) && f.IsNil() { + continue // ignore unset fields + } + names = append(names, name) + } + + for i, n := range names { + val := v.FieldByName(n) + buf.WriteString(strings.Repeat(" ", indent+2)) + buf.WriteString(n + ": ") + prettify(val, indent+2, buf) + + if i < len(names)-1 { + buf.WriteString(",\n") + } + } + + buf.WriteString("\n" + strings.Repeat(" ", indent) + "}") + case reflect.Slice: + strtype := v.Type().String() + if strtype == "[]uint8" { + fmt.Fprintf(buf, " len %d", v.Len()) + break + } + + nl, id, id2 := "", "", "" + if v.Len() > 3 { + nl, id, id2 = "\n", strings.Repeat(" ", indent), strings.Repeat(" ", indent+2) + } + buf.WriteString("[" + nl) + for i := 0; i < v.Len(); i++ { + buf.WriteString(id2) + prettify(v.Index(i), indent+2, buf) + + if i < v.Len()-1 { + buf.WriteString("," + nl) + } + } + + buf.WriteString(nl + id + "]") + case reflect.Map: + buf.WriteString("{\n") + + for i, k := range v.MapKeys() { + buf.WriteString(strings.Repeat(" ", indent+2)) + buf.WriteString(k.String() + ": ") + prettify(v.MapIndex(k), indent+2, buf) + + if i < v.Len()-1 { + buf.WriteString(",\n") + } + } + + buf.WriteString("\n" + strings.Repeat(" ", indent) + "}") + default: + if !v.IsValid() { + fmt.Fprint(buf, "") + return + } + format := "%v" + switch v.Interface().(type) { + case string: + format = "%q" + case io.ReadSeeker, io.Reader: + format = "buffer(%p)" + } + fmt.Fprintf(buf, format, v.Interface()) + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/awsutil/string_value.go b/vendor/github.com/aws/aws-sdk-go/aws/awsutil/string_value.go new file mode 100644 index 0000000..645df24 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/awsutil/string_value.go @@ -0,0 +1,88 @@ +package awsutil + +import ( + "bytes" + "fmt" + "reflect" + "strings" +) + +// StringValue returns the string representation of a value. +func StringValue(i interface{}) string { + var buf bytes.Buffer + stringValue(reflect.ValueOf(i), 0, &buf) + return buf.String() +} + +func stringValue(v reflect.Value, indent int, buf *bytes.Buffer) { + for v.Kind() == reflect.Ptr { + v = v.Elem() + } + + switch v.Kind() { + case reflect.Struct: + buf.WriteString("{\n") + + for i := 0; i < v.Type().NumField(); i++ { + ft := v.Type().Field(i) + fv := v.Field(i) + + if ft.Name[0:1] == strings.ToLower(ft.Name[0:1]) { + continue // ignore unexported fields + } + if (fv.Kind() == reflect.Ptr || fv.Kind() == reflect.Slice) && fv.IsNil() { + continue // ignore unset fields + } + + buf.WriteString(strings.Repeat(" ", indent+2)) + buf.WriteString(ft.Name + ": ") + + if tag := ft.Tag.Get("sensitive"); tag == "true" { + buf.WriteString("") + } else { + stringValue(fv, indent+2, buf) + } + + buf.WriteString(",\n") + } + + buf.WriteString("\n" + strings.Repeat(" ", indent) + "}") + case reflect.Slice: + nl, id, id2 := "", "", "" + if v.Len() > 3 { + nl, id, id2 = "\n", strings.Repeat(" ", indent), strings.Repeat(" ", indent+2) + } + buf.WriteString("[" + nl) + for i := 0; i < v.Len(); i++ { + buf.WriteString(id2) + stringValue(v.Index(i), indent+2, buf) + + if i < v.Len()-1 { + buf.WriteString("," + nl) + } + } + + buf.WriteString(nl + id + "]") + case reflect.Map: + buf.WriteString("{\n") + + for i, k := range v.MapKeys() { + buf.WriteString(strings.Repeat(" ", indent+2)) + buf.WriteString(k.String() + ": ") + stringValue(v.MapIndex(k), indent+2, buf) + + if i < v.Len()-1 { + buf.WriteString(",\n") + } + } + + buf.WriteString("\n" + strings.Repeat(" ", indent) + "}") + default: + format := "%v" + switch v.Interface().(type) { + case string: + format = "%q" + } + fmt.Fprintf(buf, format, v.Interface()) + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/client/client.go b/vendor/github.com/aws/aws-sdk-go/aws/client/client.go new file mode 100644 index 0000000..03334d6 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/client/client.go @@ -0,0 +1,97 @@ +package client + +import ( + "fmt" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/client/metadata" + "github.com/aws/aws-sdk-go/aws/request" +) + +// A Config provides configuration to a service client instance. +type Config struct { + Config *aws.Config + Handlers request.Handlers + PartitionID string + Endpoint string + SigningRegion string + SigningName string + + // States that the signing name did not come from a modeled source but + // was derived based on other data. Used by service client constructors + // to determine if the signin name can be overridden based on metadata the + // service has. + SigningNameDerived bool +} + +// ConfigProvider provides a generic way for a service client to receive +// the ClientConfig without circular dependencies. +type ConfigProvider interface { + ClientConfig(serviceName string, cfgs ...*aws.Config) Config +} + +// ConfigNoResolveEndpointProvider same as ConfigProvider except it will not +// resolve the endpoint automatically. The service client's endpoint must be +// provided via the aws.Config.Endpoint field. +type ConfigNoResolveEndpointProvider interface { + ClientConfigNoResolveEndpoint(cfgs ...*aws.Config) Config +} + +// A Client implements the base client request and response handling +// used by all service clients. +type Client struct { + request.Retryer + metadata.ClientInfo + + Config aws.Config + Handlers request.Handlers +} + +// New will return a pointer to a new initialized service client. +func New(cfg aws.Config, info metadata.ClientInfo, handlers request.Handlers, options ...func(*Client)) *Client { + svc := &Client{ + Config: cfg, + ClientInfo: info, + Handlers: handlers.Copy(), + } + + switch retryer, ok := cfg.Retryer.(request.Retryer); { + case ok: + svc.Retryer = retryer + case cfg.Retryer != nil && cfg.Logger != nil: + s := fmt.Sprintf("WARNING: %T does not implement request.Retryer; using DefaultRetryer instead", cfg.Retryer) + cfg.Logger.Log(s) + fallthrough + default: + maxRetries := aws.IntValue(cfg.MaxRetries) + if cfg.MaxRetries == nil || maxRetries == aws.UseServiceDefaultRetries { + maxRetries = DefaultRetryerMaxNumRetries + } + svc.Retryer = DefaultRetryer{NumMaxRetries: maxRetries} + } + + svc.AddDebugHandlers() + + for _, option := range options { + option(svc) + } + + return svc +} + +// NewRequest returns a new Request pointer for the service API +// operation and parameters. +func (c *Client) NewRequest(operation *request.Operation, params interface{}, data interface{}) *request.Request { + return request.New(c.Config, c.ClientInfo, c.Handlers, c.Retryer, operation, params, data) +} + +// AddDebugHandlers injects debug logging handlers into the service to log request +// debug information. +func (c *Client) AddDebugHandlers() { + if !c.Config.LogLevel.AtLeast(aws.LogDebug) { + return + } + + c.Handlers.Send.PushFrontNamed(LogHTTPRequestHandler) + c.Handlers.Send.PushBackNamed(LogHTTPResponseHandler) +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/client/default_retryer.go b/vendor/github.com/aws/aws-sdk-go/aws/client/default_retryer.go new file mode 100644 index 0000000..9f6af19 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/client/default_retryer.go @@ -0,0 +1,177 @@ +package client + +import ( + "math" + "strconv" + "time" + + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/internal/sdkrand" +) + +// DefaultRetryer implements basic retry logic using exponential backoff for +// most services. If you want to implement custom retry logic, you can implement the +// request.Retryer interface. +// +type DefaultRetryer struct { + // Num max Retries is the number of max retries that will be performed. + // By default, this is zero. + NumMaxRetries int + + // MinRetryDelay is the minimum retry delay after which retry will be performed. + // If not set, the value is 0ns. + MinRetryDelay time.Duration + + // MinThrottleRetryDelay is the minimum retry delay when throttled. + // If not set, the value is 0ns. + MinThrottleDelay time.Duration + + // MaxRetryDelay is the maximum retry delay before which retry must be performed. + // If not set, the value is 0ns. + MaxRetryDelay time.Duration + + // MaxThrottleDelay is the maximum retry delay when throttled. + // If not set, the value is 0ns. + MaxThrottleDelay time.Duration +} + +const ( + // DefaultRetryerMaxNumRetries sets maximum number of retries + DefaultRetryerMaxNumRetries = 3 + + // DefaultRetryerMinRetryDelay sets minimum retry delay + DefaultRetryerMinRetryDelay = 30 * time.Millisecond + + // DefaultRetryerMinThrottleDelay sets minimum delay when throttled + DefaultRetryerMinThrottleDelay = 500 * time.Millisecond + + // DefaultRetryerMaxRetryDelay sets maximum retry delay + DefaultRetryerMaxRetryDelay = 300 * time.Second + + // DefaultRetryerMaxThrottleDelay sets maximum delay when throttled + DefaultRetryerMaxThrottleDelay = 300 * time.Second +) + +// MaxRetries returns the number of maximum returns the service will use to make +// an individual API request. +func (d DefaultRetryer) MaxRetries() int { + return d.NumMaxRetries +} + +// setRetryerDefaults sets the default values of the retryer if not set +func (d *DefaultRetryer) setRetryerDefaults() { + if d.MinRetryDelay == 0 { + d.MinRetryDelay = DefaultRetryerMinRetryDelay + } + if d.MaxRetryDelay == 0 { + d.MaxRetryDelay = DefaultRetryerMaxRetryDelay + } + if d.MinThrottleDelay == 0 { + d.MinThrottleDelay = DefaultRetryerMinThrottleDelay + } + if d.MaxThrottleDelay == 0 { + d.MaxThrottleDelay = DefaultRetryerMaxThrottleDelay + } +} + +// RetryRules returns the delay duration before retrying this request again +func (d DefaultRetryer) RetryRules(r *request.Request) time.Duration { + + // if number of max retries is zero, no retries will be performed. + if d.NumMaxRetries == 0 { + return 0 + } + + // Sets default value for retryer members + d.setRetryerDefaults() + + // minDelay is the minimum retryer delay + minDelay := d.MinRetryDelay + + var initialDelay time.Duration + + isThrottle := r.IsErrorThrottle() + if isThrottle { + if delay, ok := getRetryAfterDelay(r); ok { + initialDelay = delay + } + minDelay = d.MinThrottleDelay + } + + retryCount := r.RetryCount + + // maxDelay the maximum retryer delay + maxDelay := d.MaxRetryDelay + + if isThrottle { + maxDelay = d.MaxThrottleDelay + } + + var delay time.Duration + + // Logic to cap the retry count based on the minDelay provided + actualRetryCount := int(math.Log2(float64(minDelay))) + 1 + if actualRetryCount < 63-retryCount { + delay = time.Duration(1< maxDelay { + delay = getJitterDelay(maxDelay / 2) + } + } else { + delay = getJitterDelay(maxDelay / 2) + } + return delay + initialDelay +} + +// getJitterDelay returns a jittered delay for retry +func getJitterDelay(duration time.Duration) time.Duration { + return time.Duration(sdkrand.SeededRand.Int63n(int64(duration)) + int64(duration)) +} + +// ShouldRetry returns true if the request should be retried. +func (d DefaultRetryer) ShouldRetry(r *request.Request) bool { + + // ShouldRetry returns false if number of max retries is 0. + if d.NumMaxRetries == 0 { + return false + } + + // If one of the other handlers already set the retry state + // we don't want to override it based on the service's state + if r.Retryable != nil { + return *r.Retryable + } + return r.IsErrorRetryable() || r.IsErrorThrottle() +} + +// This will look in the Retry-After header, RFC 7231, for how long +// it will wait before attempting another request +func getRetryAfterDelay(r *request.Request) (time.Duration, bool) { + if !canUseRetryAfterHeader(r) { + return 0, false + } + + delayStr := r.HTTPResponse.Header.Get("Retry-After") + if len(delayStr) == 0 { + return 0, false + } + + delay, err := strconv.Atoi(delayStr) + if err != nil { + return 0, false + } + + return time.Duration(delay) * time.Second, true +} + +// Will look at the status code to see if the retry header pertains to +// the status code. +func canUseRetryAfterHeader(r *request.Request) bool { + switch r.HTTPResponse.StatusCode { + case 429: + case 503: + default: + return false + } + + return true +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/client/logger.go b/vendor/github.com/aws/aws-sdk-go/aws/client/logger.go new file mode 100644 index 0000000..8958c32 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/client/logger.go @@ -0,0 +1,194 @@ +package client + +import ( + "bytes" + "fmt" + "io" + "io/ioutil" + "net/http/httputil" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/request" +) + +const logReqMsg = `DEBUG: Request %s/%s Details: +---[ REQUEST POST-SIGN ]----------------------------- +%s +-----------------------------------------------------` + +const logReqErrMsg = `DEBUG ERROR: Request %s/%s: +---[ REQUEST DUMP ERROR ]----------------------------- +%s +------------------------------------------------------` + +type logWriter struct { + // Logger is what we will use to log the payload of a response. + Logger aws.Logger + // buf stores the contents of what has been read + buf *bytes.Buffer +} + +func (logger *logWriter) Write(b []byte) (int, error) { + return logger.buf.Write(b) +} + +type teeReaderCloser struct { + // io.Reader will be a tee reader that is used during logging. + // This structure will read from a body and write the contents to a logger. + io.Reader + // Source is used just to close when we are done reading. + Source io.ReadCloser +} + +func (reader *teeReaderCloser) Close() error { + return reader.Source.Close() +} + +// LogHTTPRequestHandler is a SDK request handler to log the HTTP request sent +// to a service. Will include the HTTP request body if the LogLevel of the +// request matches LogDebugWithHTTPBody. +var LogHTTPRequestHandler = request.NamedHandler{ + Name: "awssdk.client.LogRequest", + Fn: logRequest, +} + +func logRequest(r *request.Request) { + logBody := r.Config.LogLevel.Matches(aws.LogDebugWithHTTPBody) + bodySeekable := aws.IsReaderSeekable(r.Body) + + b, err := httputil.DumpRequestOut(r.HTTPRequest, logBody) + if err != nil { + r.Config.Logger.Log(fmt.Sprintf(logReqErrMsg, + r.ClientInfo.ServiceName, r.Operation.Name, err)) + return + } + + if logBody { + if !bodySeekable { + r.SetReaderBody(aws.ReadSeekCloser(r.HTTPRequest.Body)) + } + // Reset the request body because dumpRequest will re-wrap the + // r.HTTPRequest's Body as a NoOpCloser and will not be reset after + // read by the HTTP client reader. + if err := r.Error; err != nil { + r.Config.Logger.Log(fmt.Sprintf(logReqErrMsg, + r.ClientInfo.ServiceName, r.Operation.Name, err)) + return + } + } + + r.Config.Logger.Log(fmt.Sprintf(logReqMsg, + r.ClientInfo.ServiceName, r.Operation.Name, string(b))) +} + +// LogHTTPRequestHeaderHandler is a SDK request handler to log the HTTP request sent +// to a service. Will only log the HTTP request's headers. The request payload +// will not be read. +var LogHTTPRequestHeaderHandler = request.NamedHandler{ + Name: "awssdk.client.LogRequestHeader", + Fn: logRequestHeader, +} + +func logRequestHeader(r *request.Request) { + b, err := httputil.DumpRequestOut(r.HTTPRequest, false) + if err != nil { + r.Config.Logger.Log(fmt.Sprintf(logReqErrMsg, + r.ClientInfo.ServiceName, r.Operation.Name, err)) + return + } + + r.Config.Logger.Log(fmt.Sprintf(logReqMsg, + r.ClientInfo.ServiceName, r.Operation.Name, string(b))) +} + +const logRespMsg = `DEBUG: Response %s/%s Details: +---[ RESPONSE ]-------------------------------------- +%s +-----------------------------------------------------` + +const logRespErrMsg = `DEBUG ERROR: Response %s/%s: +---[ RESPONSE DUMP ERROR ]----------------------------- +%s +-----------------------------------------------------` + +// LogHTTPResponseHandler is a SDK request handler to log the HTTP response +// received from a service. Will include the HTTP response body if the LogLevel +// of the request matches LogDebugWithHTTPBody. +var LogHTTPResponseHandler = request.NamedHandler{ + Name: "awssdk.client.LogResponse", + Fn: logResponse, +} + +func logResponse(r *request.Request) { + lw := &logWriter{r.Config.Logger, bytes.NewBuffer(nil)} + + if r.HTTPResponse == nil { + lw.Logger.Log(fmt.Sprintf(logRespErrMsg, + r.ClientInfo.ServiceName, r.Operation.Name, "request's HTTPResponse is nil")) + return + } + + logBody := r.Config.LogLevel.Matches(aws.LogDebugWithHTTPBody) + if logBody { + r.HTTPResponse.Body = &teeReaderCloser{ + Reader: io.TeeReader(r.HTTPResponse.Body, lw), + Source: r.HTTPResponse.Body, + } + } + + handlerFn := func(req *request.Request) { + b, err := httputil.DumpResponse(req.HTTPResponse, false) + if err != nil { + lw.Logger.Log(fmt.Sprintf(logRespErrMsg, + req.ClientInfo.ServiceName, req.Operation.Name, err)) + return + } + + lw.Logger.Log(fmt.Sprintf(logRespMsg, + req.ClientInfo.ServiceName, req.Operation.Name, string(b))) + + if logBody { + b, err := ioutil.ReadAll(lw.buf) + if err != nil { + lw.Logger.Log(fmt.Sprintf(logRespErrMsg, + req.ClientInfo.ServiceName, req.Operation.Name, err)) + return + } + + lw.Logger.Log(string(b)) + } + } + + const handlerName = "awsdk.client.LogResponse.ResponseBody" + + r.Handlers.Unmarshal.SetBackNamed(request.NamedHandler{ + Name: handlerName, Fn: handlerFn, + }) + r.Handlers.UnmarshalError.SetBackNamed(request.NamedHandler{ + Name: handlerName, Fn: handlerFn, + }) +} + +// LogHTTPResponseHeaderHandler is a SDK request handler to log the HTTP +// response received from a service. Will only log the HTTP response's headers. +// The response payload will not be read. +var LogHTTPResponseHeaderHandler = request.NamedHandler{ + Name: "awssdk.client.LogResponseHeader", + Fn: logResponseHeader, +} + +func logResponseHeader(r *request.Request) { + if r.Config.Logger == nil { + return + } + + b, err := httputil.DumpResponse(r.HTTPResponse, false) + if err != nil { + r.Config.Logger.Log(fmt.Sprintf(logRespErrMsg, + r.ClientInfo.ServiceName, r.Operation.Name, err)) + return + } + + r.Config.Logger.Log(fmt.Sprintf(logRespMsg, + r.ClientInfo.ServiceName, r.Operation.Name, string(b))) +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/client/metadata/client_info.go b/vendor/github.com/aws/aws-sdk-go/aws/client/metadata/client_info.go new file mode 100644 index 0000000..0c48f72 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/client/metadata/client_info.go @@ -0,0 +1,14 @@ +package metadata + +// ClientInfo wraps immutable data from the client.Client structure. +type ClientInfo struct { + ServiceName string + ServiceID string + APIVersion string + PartitionID string + Endpoint string + SigningName string + SigningRegion string + JSONVersion string + TargetPrefix string +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/client/no_op_retryer.go b/vendor/github.com/aws/aws-sdk-go/aws/client/no_op_retryer.go new file mode 100644 index 0000000..881d575 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/client/no_op_retryer.go @@ -0,0 +1,28 @@ +package client + +import ( + "time" + + "github.com/aws/aws-sdk-go/aws/request" +) + +// NoOpRetryer provides a retryer that performs no retries. +// It should be used when we do not want retries to be performed. +type NoOpRetryer struct{} + +// MaxRetries returns the number of maximum returns the service will use to make +// an individual API; For NoOpRetryer the MaxRetries will always be zero. +func (d NoOpRetryer) MaxRetries() int { + return 0 +} + +// ShouldRetry will always return false for NoOpRetryer, as it should never retry. +func (d NoOpRetryer) ShouldRetry(_ *request.Request) bool { + return false +} + +// RetryRules returns the delay duration before retrying this request again; +// since NoOpRetryer does not retry, RetryRules always returns 0. +func (d NoOpRetryer) RetryRules(_ *request.Request) time.Duration { + return 0 +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/config.go b/vendor/github.com/aws/aws-sdk-go/aws/config.go new file mode 100644 index 0000000..93ebbcc --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/config.go @@ -0,0 +1,564 @@ +package aws + +import ( + "net/http" + "time" + + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/endpoints" +) + +// UseServiceDefaultRetries instructs the config to use the service's own +// default number of retries. This will be the default action if +// Config.MaxRetries is nil also. +const UseServiceDefaultRetries = -1 + +// RequestRetryer is an alias for a type that implements the request.Retryer +// interface. +type RequestRetryer interface{} + +// A Config provides service configuration for service clients. By default, +// all clients will use the defaults.DefaultConfig structure. +// +// // Create Session with MaxRetries configuration to be shared by multiple +// // service clients. +// sess := session.Must(session.NewSession(&aws.Config{ +// MaxRetries: aws.Int(3), +// })) +// +// // Create S3 service client with a specific Region. +// svc := s3.New(sess, &aws.Config{ +// Region: aws.String("us-west-2"), +// }) +type Config struct { + // Enables verbose error printing of all credential chain errors. + // Should be used when wanting to see all errors while attempting to + // retrieve credentials. + CredentialsChainVerboseErrors *bool + + // The credentials object to use when signing requests. Defaults to a + // chain of credential providers to search for credentials in environment + // variables, shared credential file, and EC2 Instance Roles. + Credentials *credentials.Credentials + + // An optional endpoint URL (hostname only or fully qualified URI) + // that overrides the default generated endpoint for a client. Set this + // to `""` to use the default generated endpoint. + // + // Note: You must still provide a `Region` value when specifying an + // endpoint for a client. + Endpoint *string + + // The resolver to use for looking up endpoints for AWS service clients + // to use based on region. + EndpointResolver endpoints.Resolver + + // EnforceShouldRetryCheck is used in the AfterRetryHandler to always call + // ShouldRetry regardless of whether or not if request.Retryable is set. + // This will utilize ShouldRetry method of custom retryers. If EnforceShouldRetryCheck + // is not set, then ShouldRetry will only be called if request.Retryable is nil. + // Proper handling of the request.Retryable field is important when setting this field. + EnforceShouldRetryCheck *bool + + // The region to send requests to. This parameter is required and must + // be configured globally or on a per-client basis unless otherwise + // noted. A full list of regions is found in the "Regions and Endpoints" + // document. + // + // See http://docs.aws.amazon.com/general/latest/gr/rande.html for AWS + // Regions and Endpoints. + Region *string + + // Set this to `true` to disable SSL when sending requests. Defaults + // to `false`. + DisableSSL *bool + + // The HTTP client to use when sending requests. Defaults to + // `http.DefaultClient`. + HTTPClient *http.Client + + // An integer value representing the logging level. The default log level + // is zero (LogOff), which represents no logging. To enable logging set + // to a LogLevel Value. + LogLevel *LogLevelType + + // The logger writer interface to write logging messages to. Defaults to + // standard out. + Logger Logger + + // The maximum number of times that a request will be retried for failures. + // Defaults to -1, which defers the max retry setting to the service + // specific configuration. + MaxRetries *int + + // Retryer guides how HTTP requests should be retried in case of + // recoverable failures. + // + // When nil or the value does not implement the request.Retryer interface, + // the client.DefaultRetryer will be used. + // + // When both Retryer and MaxRetries are non-nil, the former is used and + // the latter ignored. + // + // To set the Retryer field in a type-safe manner and with chaining, use + // the request.WithRetryer helper function: + // + // cfg := request.WithRetryer(aws.NewConfig(), myRetryer) + // + Retryer RequestRetryer + + // Disables semantic parameter validation, which validates input for + // missing required fields and/or other semantic request input errors. + DisableParamValidation *bool + + // Disables the computation of request and response checksums, e.g., + // CRC32 checksums in Amazon DynamoDB. + DisableComputeChecksums *bool + + // Set this to `true` to force the request to use path-style addressing, + // i.e., `http://s3.amazonaws.com/BUCKET/KEY`. By default, the S3 client + // will use virtual hosted bucket addressing when possible + // (`http://BUCKET.s3.amazonaws.com/KEY`). + // + // Note: This configuration option is specific to the Amazon S3 service. + // + // See http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html + // for Amazon S3: Virtual Hosting of Buckets + S3ForcePathStyle *bool + + // Set this to `true` to disable the SDK adding the `Expect: 100-Continue` + // header to PUT requests over 2MB of content. 100-Continue instructs the + // HTTP client not to send the body until the service responds with a + // `continue` status. This is useful to prevent sending the request body + // until after the request is authenticated, and validated. + // + // http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html + // + // 100-Continue is only enabled for Go 1.6 and above. See `http.Transport`'s + // `ExpectContinueTimeout` for information on adjusting the continue wait + // timeout. https://golang.org/pkg/net/http/#Transport + // + // You should use this flag to disble 100-Continue if you experience issues + // with proxies or third party S3 compatible services. + S3Disable100Continue *bool + + // Set this to `true` to enable S3 Accelerate feature. For all operations + // compatible with S3 Accelerate will use the accelerate endpoint for + // requests. Requests not compatible will fall back to normal S3 requests. + // + // The bucket must be enable for accelerate to be used with S3 client with + // accelerate enabled. If the bucket is not enabled for accelerate an error + // will be returned. The bucket name must be DNS compatible to also work + // with accelerate. + S3UseAccelerate *bool + + // S3DisableContentMD5Validation config option is temporarily disabled, + // For S3 GetObject API calls, #1837. + // + // Set this to `true` to disable the S3 service client from automatically + // adding the ContentMD5 to S3 Object Put and Upload API calls. This option + // will also disable the SDK from performing object ContentMD5 validation + // on GetObject API calls. + S3DisableContentMD5Validation *bool + + // Set this to `true` to disable the EC2Metadata client from overriding the + // default http.Client's Timeout. This is helpful if you do not want the + // EC2Metadata client to create a new http.Client. This options is only + // meaningful if you're not already using a custom HTTP client with the + // SDK. Enabled by default. + // + // Must be set and provided to the session.NewSession() in order to disable + // the EC2Metadata overriding the timeout for default credentials chain. + // + // Example: + // sess := session.Must(session.NewSession(aws.NewConfig() + // .WithEC2MetadataDiableTimeoutOverride(true))) + // + // svc := s3.New(sess) + // + EC2MetadataDisableTimeoutOverride *bool + + // Instructs the endpoint to be generated for a service client to + // be the dual stack endpoint. The dual stack endpoint will support + // both IPv4 and IPv6 addressing. + // + // Setting this for a service which does not support dual stack will fail + // to make requets. It is not recommended to set this value on the session + // as it will apply to all service clients created with the session. Even + // services which don't support dual stack endpoints. + // + // If the Endpoint config value is also provided the UseDualStack flag + // will be ignored. + // + // Only supported with. + // + // sess := session.Must(session.NewSession()) + // + // svc := s3.New(sess, &aws.Config{ + // UseDualStack: aws.Bool(true), + // }) + UseDualStack *bool + + // SleepDelay is an override for the func the SDK will call when sleeping + // during the lifecycle of a request. Specifically this will be used for + // request delays. This value should only be used for testing. To adjust + // the delay of a request see the aws/client.DefaultRetryer and + // aws/request.Retryer. + // + // SleepDelay will prevent any Context from being used for canceling retry + // delay of an API operation. It is recommended to not use SleepDelay at all + // and specify a Retryer instead. + SleepDelay func(time.Duration) + + // DisableRestProtocolURICleaning will not clean the URL path when making rest protocol requests. + // Will default to false. This would only be used for empty directory names in s3 requests. + // + // Example: + // sess := session.Must(session.NewSession(&aws.Config{ + // DisableRestProtocolURICleaning: aws.Bool(true), + // })) + // + // svc := s3.New(sess) + // out, err := svc.GetObject(&s3.GetObjectInput { + // Bucket: aws.String("bucketname"), + // Key: aws.String("//foo//bar//moo"), + // }) + DisableRestProtocolURICleaning *bool + + // EnableEndpointDiscovery will allow for endpoint discovery on operations that + // have the definition in its model. By default, endpoint discovery is off. + // + // Example: + // sess := session.Must(session.NewSession(&aws.Config{ + // EnableEndpointDiscovery: aws.Bool(true), + // })) + // + // svc := s3.New(sess) + // out, err := svc.GetObject(&s3.GetObjectInput { + // Bucket: aws.String("bucketname"), + // Key: aws.String("/foo/bar/moo"), + // }) + EnableEndpointDiscovery *bool + + // DisableEndpointHostPrefix will disable the SDK's behavior of prefixing + // request endpoint hosts with modeled information. + // + // Disabling this feature is useful when you want to use local endpoints + // for testing that do not support the modeled host prefix pattern. + DisableEndpointHostPrefix *bool + + // STSRegionalEndpoint will enable regional or legacy endpoint resolving + STSRegionalEndpoint endpoints.STSRegionalEndpoint + + // S3UsEast1RegionalEndpoint will enable regional or legacy endpoint resolving + S3UsEast1RegionalEndpoint endpoints.S3UsEast1RegionalEndpoint +} + +// NewConfig returns a new Config pointer that can be chained with builder +// methods to set multiple configuration values inline without using pointers. +// +// // Create Session with MaxRetries configuration to be shared by multiple +// // service clients. +// sess := session.Must(session.NewSession(aws.NewConfig(). +// WithMaxRetries(3), +// )) +// +// // Create S3 service client with a specific Region. +// svc := s3.New(sess, aws.NewConfig(). +// WithRegion("us-west-2"), +// ) +func NewConfig() *Config { + return &Config{} +} + +// WithCredentialsChainVerboseErrors sets a config verbose errors boolean and returning +// a Config pointer. +func (c *Config) WithCredentialsChainVerboseErrors(verboseErrs bool) *Config { + c.CredentialsChainVerboseErrors = &verboseErrs + return c +} + +// WithCredentials sets a config Credentials value returning a Config pointer +// for chaining. +func (c *Config) WithCredentials(creds *credentials.Credentials) *Config { + c.Credentials = creds + return c +} + +// WithEndpoint sets a config Endpoint value returning a Config pointer for +// chaining. +func (c *Config) WithEndpoint(endpoint string) *Config { + c.Endpoint = &endpoint + return c +} + +// WithEndpointResolver sets a config EndpointResolver value returning a +// Config pointer for chaining. +func (c *Config) WithEndpointResolver(resolver endpoints.Resolver) *Config { + c.EndpointResolver = resolver + return c +} + +// WithRegion sets a config Region value returning a Config pointer for +// chaining. +func (c *Config) WithRegion(region string) *Config { + c.Region = ®ion + return c +} + +// WithDisableSSL sets a config DisableSSL value returning a Config pointer +// for chaining. +func (c *Config) WithDisableSSL(disable bool) *Config { + c.DisableSSL = &disable + return c +} + +// WithHTTPClient sets a config HTTPClient value returning a Config pointer +// for chaining. +func (c *Config) WithHTTPClient(client *http.Client) *Config { + c.HTTPClient = client + return c +} + +// WithMaxRetries sets a config MaxRetries value returning a Config pointer +// for chaining. +func (c *Config) WithMaxRetries(max int) *Config { + c.MaxRetries = &max + return c +} + +// WithDisableParamValidation sets a config DisableParamValidation value +// returning a Config pointer for chaining. +func (c *Config) WithDisableParamValidation(disable bool) *Config { + c.DisableParamValidation = &disable + return c +} + +// WithDisableComputeChecksums sets a config DisableComputeChecksums value +// returning a Config pointer for chaining. +func (c *Config) WithDisableComputeChecksums(disable bool) *Config { + c.DisableComputeChecksums = &disable + return c +} + +// WithLogLevel sets a config LogLevel value returning a Config pointer for +// chaining. +func (c *Config) WithLogLevel(level LogLevelType) *Config { + c.LogLevel = &level + return c +} + +// WithLogger sets a config Logger value returning a Config pointer for +// chaining. +func (c *Config) WithLogger(logger Logger) *Config { + c.Logger = logger + return c +} + +// WithS3ForcePathStyle sets a config S3ForcePathStyle value returning a Config +// pointer for chaining. +func (c *Config) WithS3ForcePathStyle(force bool) *Config { + c.S3ForcePathStyle = &force + return c +} + +// WithS3Disable100Continue sets a config S3Disable100Continue value returning +// a Config pointer for chaining. +func (c *Config) WithS3Disable100Continue(disable bool) *Config { + c.S3Disable100Continue = &disable + return c +} + +// WithS3UseAccelerate sets a config S3UseAccelerate value returning a Config +// pointer for chaining. +func (c *Config) WithS3UseAccelerate(enable bool) *Config { + c.S3UseAccelerate = &enable + return c + +} + +// WithS3DisableContentMD5Validation sets a config +// S3DisableContentMD5Validation value returning a Config pointer for chaining. +func (c *Config) WithS3DisableContentMD5Validation(enable bool) *Config { + c.S3DisableContentMD5Validation = &enable + return c + +} + +// WithUseDualStack sets a config UseDualStack value returning a Config +// pointer for chaining. +func (c *Config) WithUseDualStack(enable bool) *Config { + c.UseDualStack = &enable + return c +} + +// WithEC2MetadataDisableTimeoutOverride sets a config EC2MetadataDisableTimeoutOverride value +// returning a Config pointer for chaining. +func (c *Config) WithEC2MetadataDisableTimeoutOverride(enable bool) *Config { + c.EC2MetadataDisableTimeoutOverride = &enable + return c +} + +// WithSleepDelay overrides the function used to sleep while waiting for the +// next retry. Defaults to time.Sleep. +func (c *Config) WithSleepDelay(fn func(time.Duration)) *Config { + c.SleepDelay = fn + return c +} + +// WithEndpointDiscovery will set whether or not to use endpoint discovery. +func (c *Config) WithEndpointDiscovery(t bool) *Config { + c.EnableEndpointDiscovery = &t + return c +} + +// WithDisableEndpointHostPrefix will set whether or not to use modeled host prefix +// when making requests. +func (c *Config) WithDisableEndpointHostPrefix(t bool) *Config { + c.DisableEndpointHostPrefix = &t + return c +} + +// MergeIn merges the passed in configs into the existing config object. +func (c *Config) MergeIn(cfgs ...*Config) { + for _, other := range cfgs { + mergeInConfig(c, other) + } +} + +// WithSTSRegionalEndpoint will set whether or not to use regional endpoint flag +// when resolving the endpoint for a service +func (c *Config) WithSTSRegionalEndpoint(sre endpoints.STSRegionalEndpoint) *Config { + c.STSRegionalEndpoint = sre + return c +} + +// WithS3UsEast1RegionalEndpoint will set whether or not to use regional endpoint flag +// when resolving the endpoint for a service +func (c *Config) WithS3UsEast1RegionalEndpoint(sre endpoints.S3UsEast1RegionalEndpoint) *Config { + c.S3UsEast1RegionalEndpoint = sre + return c +} + +func mergeInConfig(dst *Config, other *Config) { + if other == nil { + return + } + + if other.CredentialsChainVerboseErrors != nil { + dst.CredentialsChainVerboseErrors = other.CredentialsChainVerboseErrors + } + + if other.Credentials != nil { + dst.Credentials = other.Credentials + } + + if other.Endpoint != nil { + dst.Endpoint = other.Endpoint + } + + if other.EndpointResolver != nil { + dst.EndpointResolver = other.EndpointResolver + } + + if other.Region != nil { + dst.Region = other.Region + } + + if other.DisableSSL != nil { + dst.DisableSSL = other.DisableSSL + } + + if other.HTTPClient != nil { + dst.HTTPClient = other.HTTPClient + } + + if other.LogLevel != nil { + dst.LogLevel = other.LogLevel + } + + if other.Logger != nil { + dst.Logger = other.Logger + } + + if other.MaxRetries != nil { + dst.MaxRetries = other.MaxRetries + } + + if other.Retryer != nil { + dst.Retryer = other.Retryer + } + + if other.DisableParamValidation != nil { + dst.DisableParamValidation = other.DisableParamValidation + } + + if other.DisableComputeChecksums != nil { + dst.DisableComputeChecksums = other.DisableComputeChecksums + } + + if other.S3ForcePathStyle != nil { + dst.S3ForcePathStyle = other.S3ForcePathStyle + } + + if other.S3Disable100Continue != nil { + dst.S3Disable100Continue = other.S3Disable100Continue + } + + if other.S3UseAccelerate != nil { + dst.S3UseAccelerate = other.S3UseAccelerate + } + + if other.S3DisableContentMD5Validation != nil { + dst.S3DisableContentMD5Validation = other.S3DisableContentMD5Validation + } + + if other.UseDualStack != nil { + dst.UseDualStack = other.UseDualStack + } + + if other.EC2MetadataDisableTimeoutOverride != nil { + dst.EC2MetadataDisableTimeoutOverride = other.EC2MetadataDisableTimeoutOverride + } + + if other.SleepDelay != nil { + dst.SleepDelay = other.SleepDelay + } + + if other.DisableRestProtocolURICleaning != nil { + dst.DisableRestProtocolURICleaning = other.DisableRestProtocolURICleaning + } + + if other.EnforceShouldRetryCheck != nil { + dst.EnforceShouldRetryCheck = other.EnforceShouldRetryCheck + } + + if other.EnableEndpointDiscovery != nil { + dst.EnableEndpointDiscovery = other.EnableEndpointDiscovery + } + + if other.DisableEndpointHostPrefix != nil { + dst.DisableEndpointHostPrefix = other.DisableEndpointHostPrefix + } + + if other.STSRegionalEndpoint != endpoints.UnsetSTSEndpoint { + dst.STSRegionalEndpoint = other.STSRegionalEndpoint + } + + if other.S3UsEast1RegionalEndpoint != endpoints.UnsetS3UsEast1Endpoint { + dst.S3UsEast1RegionalEndpoint = other.S3UsEast1RegionalEndpoint + } +} + +// Copy will return a shallow copy of the Config object. If any additional +// configurations are provided they will be merged into the new config returned. +func (c *Config) Copy(cfgs ...*Config) *Config { + dst := &Config{} + dst.MergeIn(c) + + for _, cfg := range cfgs { + dst.MergeIn(cfg) + } + + return dst +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/context_1_5.go b/vendor/github.com/aws/aws-sdk-go/aws/context_1_5.go new file mode 100644 index 0000000..2866f9a --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/context_1_5.go @@ -0,0 +1,37 @@ +// +build !go1.9 + +package aws + +import "time" + +// Context is an copy of the Go v1.7 stdlib's context.Context interface. +// It is represented as a SDK interface to enable you to use the "WithContext" +// API methods with Go v1.6 and a Context type such as golang.org/x/net/context. +// +// See https://golang.org/pkg/context on how to use contexts. +type Context interface { + // Deadline returns the time when work done on behalf of this context + // should be canceled. Deadline returns ok==false when no deadline is + // set. Successive calls to Deadline return the same results. + Deadline() (deadline time.Time, ok bool) + + // Done returns a channel that's closed when work done on behalf of this + // context should be canceled. Done may return nil if this context can + // never be canceled. Successive calls to Done return the same value. + Done() <-chan struct{} + + // Err returns a non-nil error value after Done is closed. Err returns + // Canceled if the context was canceled or DeadlineExceeded if the + // context's deadline passed. No other values for Err are defined. + // After Done is closed, successive calls to Err return the same value. + Err() error + + // Value returns the value associated with this context for key, or nil + // if no value is associated with key. Successive calls to Value with + // the same key returns the same result. + // + // Use context values only for request-scoped data that transits + // processes and API boundaries, not for passing optional parameters to + // functions. + Value(key interface{}) interface{} +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/context_1_9.go b/vendor/github.com/aws/aws-sdk-go/aws/context_1_9.go new file mode 100644 index 0000000..3718b26 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/context_1_9.go @@ -0,0 +1,11 @@ +// +build go1.9 + +package aws + +import "context" + +// Context is an alias of the Go stdlib's context.Context interface. +// It can be used within the SDK's API operation "WithContext" methods. +// +// See https://golang.org/pkg/context on how to use contexts. +type Context = context.Context diff --git a/vendor/github.com/aws/aws-sdk-go/aws/context_background_1_5.go b/vendor/github.com/aws/aws-sdk-go/aws/context_background_1_5.go new file mode 100644 index 0000000..66c5945 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/context_background_1_5.go @@ -0,0 +1,56 @@ +// +build !go1.7 + +package aws + +import "time" + +// An emptyCtx is a copy of the Go 1.7 context.emptyCtx type. This is copied to +// provide a 1.6 and 1.5 safe version of context that is compatible with Go +// 1.7's Context. +// +// An emptyCtx is never canceled, has no values, and has no deadline. It is not +// struct{}, since vars of this type must have distinct addresses. +type emptyCtx int + +func (*emptyCtx) Deadline() (deadline time.Time, ok bool) { + return +} + +func (*emptyCtx) Done() <-chan struct{} { + return nil +} + +func (*emptyCtx) Err() error { + return nil +} + +func (*emptyCtx) Value(key interface{}) interface{} { + return nil +} + +func (e *emptyCtx) String() string { + switch e { + case backgroundCtx: + return "aws.BackgroundContext" + } + return "unknown empty Context" +} + +var ( + backgroundCtx = new(emptyCtx) +) + +// BackgroundContext returns a context that will never be canceled, has no +// values, and no deadline. This context is used by the SDK to provide +// backwards compatibility with non-context API operations and functionality. +// +// Go 1.6 and before: +// This context function is equivalent to context.Background in the Go stdlib. +// +// Go 1.7 and later: +// The context returned will be the value returned by context.Background() +// +// See https://golang.org/pkg/context for more information on Contexts. +func BackgroundContext() Context { + return backgroundCtx +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/context_background_1_7.go b/vendor/github.com/aws/aws-sdk-go/aws/context_background_1_7.go new file mode 100644 index 0000000..9c29f29 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/context_background_1_7.go @@ -0,0 +1,20 @@ +// +build go1.7 + +package aws + +import "context" + +// BackgroundContext returns a context that will never be canceled, has no +// values, and no deadline. This context is used by the SDK to provide +// backwards compatibility with non-context API operations and functionality. +// +// Go 1.6 and before: +// This context function is equivalent to context.Background in the Go stdlib. +// +// Go 1.7 and later: +// The context returned will be the value returned by context.Background() +// +// See https://golang.org/pkg/context for more information on Contexts. +func BackgroundContext() Context { + return context.Background() +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/context_sleep.go b/vendor/github.com/aws/aws-sdk-go/aws/context_sleep.go new file mode 100644 index 0000000..304fd15 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/context_sleep.go @@ -0,0 +1,24 @@ +package aws + +import ( + "time" +) + +// SleepWithContext will wait for the timer duration to expire, or the context +// is canceled. Which ever happens first. If the context is canceled the Context's +// error will be returned. +// +// Expects Context to always return a non-nil error if the Done channel is closed. +func SleepWithContext(ctx Context, dur time.Duration) error { + t := time.NewTimer(dur) + defer t.Stop() + + select { + case <-t.C: + break + case <-ctx.Done(): + return ctx.Err() + } + + return nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/convert_types.go b/vendor/github.com/aws/aws-sdk-go/aws/convert_types.go new file mode 100644 index 0000000..4e076c1 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/convert_types.go @@ -0,0 +1,918 @@ +package aws + +import "time" + +// String returns a pointer to the string value passed in. +func String(v string) *string { + return &v +} + +// StringValue returns the value of the string pointer passed in or +// "" if the pointer is nil. +func StringValue(v *string) string { + if v != nil { + return *v + } + return "" +} + +// StringSlice converts a slice of string values into a slice of +// string pointers +func StringSlice(src []string) []*string { + dst := make([]*string, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + return dst +} + +// StringValueSlice converts a slice of string pointers into a slice of +// string values +func StringValueSlice(src []*string) []string { + dst := make([]string, len(src)) + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + return dst +} + +// StringMap converts a string map of string values into a string +// map of string pointers +func StringMap(src map[string]string) map[string]*string { + dst := make(map[string]*string) + for k, val := range src { + v := val + dst[k] = &v + } + return dst +} + +// StringValueMap converts a string map of string pointers into a string +// map of string values +func StringValueMap(src map[string]*string) map[string]string { + dst := make(map[string]string) + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + return dst +} + +// Bool returns a pointer to the bool value passed in. +func Bool(v bool) *bool { + return &v +} + +// BoolValue returns the value of the bool pointer passed in or +// false if the pointer is nil. +func BoolValue(v *bool) bool { + if v != nil { + return *v + } + return false +} + +// BoolSlice converts a slice of bool values into a slice of +// bool pointers +func BoolSlice(src []bool) []*bool { + dst := make([]*bool, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + return dst +} + +// BoolValueSlice converts a slice of bool pointers into a slice of +// bool values +func BoolValueSlice(src []*bool) []bool { + dst := make([]bool, len(src)) + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + return dst +} + +// BoolMap converts a string map of bool values into a string +// map of bool pointers +func BoolMap(src map[string]bool) map[string]*bool { + dst := make(map[string]*bool) + for k, val := range src { + v := val + dst[k] = &v + } + return dst +} + +// BoolValueMap converts a string map of bool pointers into a string +// map of bool values +func BoolValueMap(src map[string]*bool) map[string]bool { + dst := make(map[string]bool) + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + return dst +} + +// Int returns a pointer to the int value passed in. +func Int(v int) *int { + return &v +} + +// IntValue returns the value of the int pointer passed in or +// 0 if the pointer is nil. +func IntValue(v *int) int { + if v != nil { + return *v + } + return 0 +} + +// IntSlice converts a slice of int values into a slice of +// int pointers +func IntSlice(src []int) []*int { + dst := make([]*int, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + return dst +} + +// IntValueSlice converts a slice of int pointers into a slice of +// int values +func IntValueSlice(src []*int) []int { + dst := make([]int, len(src)) + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + return dst +} + +// IntMap converts a string map of int values into a string +// map of int pointers +func IntMap(src map[string]int) map[string]*int { + dst := make(map[string]*int) + for k, val := range src { + v := val + dst[k] = &v + } + return dst +} + +// IntValueMap converts a string map of int pointers into a string +// map of int values +func IntValueMap(src map[string]*int) map[string]int { + dst := make(map[string]int) + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + return dst +} + +// Uint returns a pointer to the uint value passed in. +func Uint(v uint) *uint { + return &v +} + +// UintValue returns the value of the uint pointer passed in or +// 0 if the pointer is nil. +func UintValue(v *uint) uint { + if v != nil { + return *v + } + return 0 +} + +// UintSlice converts a slice of uint values uinto a slice of +// uint pointers +func UintSlice(src []uint) []*uint { + dst := make([]*uint, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + return dst +} + +// UintValueSlice converts a slice of uint pointers uinto a slice of +// uint values +func UintValueSlice(src []*uint) []uint { + dst := make([]uint, len(src)) + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + return dst +} + +// UintMap converts a string map of uint values uinto a string +// map of uint pointers +func UintMap(src map[string]uint) map[string]*uint { + dst := make(map[string]*uint) + for k, val := range src { + v := val + dst[k] = &v + } + return dst +} + +// UintValueMap converts a string map of uint pointers uinto a string +// map of uint values +func UintValueMap(src map[string]*uint) map[string]uint { + dst := make(map[string]uint) + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + return dst +} + +// Int8 returns a pointer to the int8 value passed in. +func Int8(v int8) *int8 { + return &v +} + +// Int8Value returns the value of the int8 pointer passed in or +// 0 if the pointer is nil. +func Int8Value(v *int8) int8 { + if v != nil { + return *v + } + return 0 +} + +// Int8Slice converts a slice of int8 values into a slice of +// int8 pointers +func Int8Slice(src []int8) []*int8 { + dst := make([]*int8, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + return dst +} + +// Int8ValueSlice converts a slice of int8 pointers into a slice of +// int8 values +func Int8ValueSlice(src []*int8) []int8 { + dst := make([]int8, len(src)) + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + return dst +} + +// Int8Map converts a string map of int8 values into a string +// map of int8 pointers +func Int8Map(src map[string]int8) map[string]*int8 { + dst := make(map[string]*int8) + for k, val := range src { + v := val + dst[k] = &v + } + return dst +} + +// Int8ValueMap converts a string map of int8 pointers into a string +// map of int8 values +func Int8ValueMap(src map[string]*int8) map[string]int8 { + dst := make(map[string]int8) + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + return dst +} + +// Int16 returns a pointer to the int16 value passed in. +func Int16(v int16) *int16 { + return &v +} + +// Int16Value returns the value of the int16 pointer passed in or +// 0 if the pointer is nil. +func Int16Value(v *int16) int16 { + if v != nil { + return *v + } + return 0 +} + +// Int16Slice converts a slice of int16 values into a slice of +// int16 pointers +func Int16Slice(src []int16) []*int16 { + dst := make([]*int16, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + return dst +} + +// Int16ValueSlice converts a slice of int16 pointers into a slice of +// int16 values +func Int16ValueSlice(src []*int16) []int16 { + dst := make([]int16, len(src)) + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + return dst +} + +// Int16Map converts a string map of int16 values into a string +// map of int16 pointers +func Int16Map(src map[string]int16) map[string]*int16 { + dst := make(map[string]*int16) + for k, val := range src { + v := val + dst[k] = &v + } + return dst +} + +// Int16ValueMap converts a string map of int16 pointers into a string +// map of int16 values +func Int16ValueMap(src map[string]*int16) map[string]int16 { + dst := make(map[string]int16) + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + return dst +} + +// Int32 returns a pointer to the int32 value passed in. +func Int32(v int32) *int32 { + return &v +} + +// Int32Value returns the value of the int32 pointer passed in or +// 0 if the pointer is nil. +func Int32Value(v *int32) int32 { + if v != nil { + return *v + } + return 0 +} + +// Int32Slice converts a slice of int32 values into a slice of +// int32 pointers +func Int32Slice(src []int32) []*int32 { + dst := make([]*int32, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + return dst +} + +// Int32ValueSlice converts a slice of int32 pointers into a slice of +// int32 values +func Int32ValueSlice(src []*int32) []int32 { + dst := make([]int32, len(src)) + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + return dst +} + +// Int32Map converts a string map of int32 values into a string +// map of int32 pointers +func Int32Map(src map[string]int32) map[string]*int32 { + dst := make(map[string]*int32) + for k, val := range src { + v := val + dst[k] = &v + } + return dst +} + +// Int32ValueMap converts a string map of int32 pointers into a string +// map of int32 values +func Int32ValueMap(src map[string]*int32) map[string]int32 { + dst := make(map[string]int32) + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + return dst +} + +// Int64 returns a pointer to the int64 value passed in. +func Int64(v int64) *int64 { + return &v +} + +// Int64Value returns the value of the int64 pointer passed in or +// 0 if the pointer is nil. +func Int64Value(v *int64) int64 { + if v != nil { + return *v + } + return 0 +} + +// Int64Slice converts a slice of int64 values into a slice of +// int64 pointers +func Int64Slice(src []int64) []*int64 { + dst := make([]*int64, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + return dst +} + +// Int64ValueSlice converts a slice of int64 pointers into a slice of +// int64 values +func Int64ValueSlice(src []*int64) []int64 { + dst := make([]int64, len(src)) + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + return dst +} + +// Int64Map converts a string map of int64 values into a string +// map of int64 pointers +func Int64Map(src map[string]int64) map[string]*int64 { + dst := make(map[string]*int64) + for k, val := range src { + v := val + dst[k] = &v + } + return dst +} + +// Int64ValueMap converts a string map of int64 pointers into a string +// map of int64 values +func Int64ValueMap(src map[string]*int64) map[string]int64 { + dst := make(map[string]int64) + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + return dst +} + +// Uint8 returns a pointer to the uint8 value passed in. +func Uint8(v uint8) *uint8 { + return &v +} + +// Uint8Value returns the value of the uint8 pointer passed in or +// 0 if the pointer is nil. +func Uint8Value(v *uint8) uint8 { + if v != nil { + return *v + } + return 0 +} + +// Uint8Slice converts a slice of uint8 values into a slice of +// uint8 pointers +func Uint8Slice(src []uint8) []*uint8 { + dst := make([]*uint8, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + return dst +} + +// Uint8ValueSlice converts a slice of uint8 pointers into a slice of +// uint8 values +func Uint8ValueSlice(src []*uint8) []uint8 { + dst := make([]uint8, len(src)) + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + return dst +} + +// Uint8Map converts a string map of uint8 values into a string +// map of uint8 pointers +func Uint8Map(src map[string]uint8) map[string]*uint8 { + dst := make(map[string]*uint8) + for k, val := range src { + v := val + dst[k] = &v + } + return dst +} + +// Uint8ValueMap converts a string map of uint8 pointers into a string +// map of uint8 values +func Uint8ValueMap(src map[string]*uint8) map[string]uint8 { + dst := make(map[string]uint8) + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + return dst +} + +// Uint16 returns a pointer to the uint16 value passed in. +func Uint16(v uint16) *uint16 { + return &v +} + +// Uint16Value returns the value of the uint16 pointer passed in or +// 0 if the pointer is nil. +func Uint16Value(v *uint16) uint16 { + if v != nil { + return *v + } + return 0 +} + +// Uint16Slice converts a slice of uint16 values into a slice of +// uint16 pointers +func Uint16Slice(src []uint16) []*uint16 { + dst := make([]*uint16, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + return dst +} + +// Uint16ValueSlice converts a slice of uint16 pointers into a slice of +// uint16 values +func Uint16ValueSlice(src []*uint16) []uint16 { + dst := make([]uint16, len(src)) + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + return dst +} + +// Uint16Map converts a string map of uint16 values into a string +// map of uint16 pointers +func Uint16Map(src map[string]uint16) map[string]*uint16 { + dst := make(map[string]*uint16) + for k, val := range src { + v := val + dst[k] = &v + } + return dst +} + +// Uint16ValueMap converts a string map of uint16 pointers into a string +// map of uint16 values +func Uint16ValueMap(src map[string]*uint16) map[string]uint16 { + dst := make(map[string]uint16) + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + return dst +} + +// Uint32 returns a pointer to the uint32 value passed in. +func Uint32(v uint32) *uint32 { + return &v +} + +// Uint32Value returns the value of the uint32 pointer passed in or +// 0 if the pointer is nil. +func Uint32Value(v *uint32) uint32 { + if v != nil { + return *v + } + return 0 +} + +// Uint32Slice converts a slice of uint32 values into a slice of +// uint32 pointers +func Uint32Slice(src []uint32) []*uint32 { + dst := make([]*uint32, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + return dst +} + +// Uint32ValueSlice converts a slice of uint32 pointers into a slice of +// uint32 values +func Uint32ValueSlice(src []*uint32) []uint32 { + dst := make([]uint32, len(src)) + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + return dst +} + +// Uint32Map converts a string map of uint32 values into a string +// map of uint32 pointers +func Uint32Map(src map[string]uint32) map[string]*uint32 { + dst := make(map[string]*uint32) + for k, val := range src { + v := val + dst[k] = &v + } + return dst +} + +// Uint32ValueMap converts a string map of uint32 pointers into a string +// map of uint32 values +func Uint32ValueMap(src map[string]*uint32) map[string]uint32 { + dst := make(map[string]uint32) + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + return dst +} + +// Uint64 returns a pointer to the uint64 value passed in. +func Uint64(v uint64) *uint64 { + return &v +} + +// Uint64Value returns the value of the uint64 pointer passed in or +// 0 if the pointer is nil. +func Uint64Value(v *uint64) uint64 { + if v != nil { + return *v + } + return 0 +} + +// Uint64Slice converts a slice of uint64 values into a slice of +// uint64 pointers +func Uint64Slice(src []uint64) []*uint64 { + dst := make([]*uint64, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + return dst +} + +// Uint64ValueSlice converts a slice of uint64 pointers into a slice of +// uint64 values +func Uint64ValueSlice(src []*uint64) []uint64 { + dst := make([]uint64, len(src)) + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + return dst +} + +// Uint64Map converts a string map of uint64 values into a string +// map of uint64 pointers +func Uint64Map(src map[string]uint64) map[string]*uint64 { + dst := make(map[string]*uint64) + for k, val := range src { + v := val + dst[k] = &v + } + return dst +} + +// Uint64ValueMap converts a string map of uint64 pointers into a string +// map of uint64 values +func Uint64ValueMap(src map[string]*uint64) map[string]uint64 { + dst := make(map[string]uint64) + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + return dst +} + +// Float32 returns a pointer to the float32 value passed in. +func Float32(v float32) *float32 { + return &v +} + +// Float32Value returns the value of the float32 pointer passed in or +// 0 if the pointer is nil. +func Float32Value(v *float32) float32 { + if v != nil { + return *v + } + return 0 +} + +// Float32Slice converts a slice of float32 values into a slice of +// float32 pointers +func Float32Slice(src []float32) []*float32 { + dst := make([]*float32, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + return dst +} + +// Float32ValueSlice converts a slice of float32 pointers into a slice of +// float32 values +func Float32ValueSlice(src []*float32) []float32 { + dst := make([]float32, len(src)) + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + return dst +} + +// Float32Map converts a string map of float32 values into a string +// map of float32 pointers +func Float32Map(src map[string]float32) map[string]*float32 { + dst := make(map[string]*float32) + for k, val := range src { + v := val + dst[k] = &v + } + return dst +} + +// Float32ValueMap converts a string map of float32 pointers into a string +// map of float32 values +func Float32ValueMap(src map[string]*float32) map[string]float32 { + dst := make(map[string]float32) + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + return dst +} + +// Float64 returns a pointer to the float64 value passed in. +func Float64(v float64) *float64 { + return &v +} + +// Float64Value returns the value of the float64 pointer passed in or +// 0 if the pointer is nil. +func Float64Value(v *float64) float64 { + if v != nil { + return *v + } + return 0 +} + +// Float64Slice converts a slice of float64 values into a slice of +// float64 pointers +func Float64Slice(src []float64) []*float64 { + dst := make([]*float64, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + return dst +} + +// Float64ValueSlice converts a slice of float64 pointers into a slice of +// float64 values +func Float64ValueSlice(src []*float64) []float64 { + dst := make([]float64, len(src)) + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + return dst +} + +// Float64Map converts a string map of float64 values into a string +// map of float64 pointers +func Float64Map(src map[string]float64) map[string]*float64 { + dst := make(map[string]*float64) + for k, val := range src { + v := val + dst[k] = &v + } + return dst +} + +// Float64ValueMap converts a string map of float64 pointers into a string +// map of float64 values +func Float64ValueMap(src map[string]*float64) map[string]float64 { + dst := make(map[string]float64) + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + return dst +} + +// Time returns a pointer to the time.Time value passed in. +func Time(v time.Time) *time.Time { + return &v +} + +// TimeValue returns the value of the time.Time pointer passed in or +// time.Time{} if the pointer is nil. +func TimeValue(v *time.Time) time.Time { + if v != nil { + return *v + } + return time.Time{} +} + +// SecondsTimeValue converts an int64 pointer to a time.Time value +// representing seconds since Epoch or time.Time{} if the pointer is nil. +func SecondsTimeValue(v *int64) time.Time { + if v != nil { + return time.Unix((*v / 1000), 0) + } + return time.Time{} +} + +// MillisecondsTimeValue converts an int64 pointer to a time.Time value +// representing milliseconds sinch Epoch or time.Time{} if the pointer is nil. +func MillisecondsTimeValue(v *int64) time.Time { + if v != nil { + return time.Unix(0, (*v * 1000000)) + } + return time.Time{} +} + +// TimeUnixMilli returns a Unix timestamp in milliseconds from "January 1, 1970 UTC". +// The result is undefined if the Unix time cannot be represented by an int64. +// Which includes calling TimeUnixMilli on a zero Time is undefined. +// +// This utility is useful for service API's such as CloudWatch Logs which require +// their unix time values to be in milliseconds. +// +// See Go stdlib https://golang.org/pkg/time/#Time.UnixNano for more information. +func TimeUnixMilli(t time.Time) int64 { + return t.UnixNano() / int64(time.Millisecond/time.Nanosecond) +} + +// TimeSlice converts a slice of time.Time values into a slice of +// time.Time pointers +func TimeSlice(src []time.Time) []*time.Time { + dst := make([]*time.Time, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + return dst +} + +// TimeValueSlice converts a slice of time.Time pointers into a slice of +// time.Time values +func TimeValueSlice(src []*time.Time) []time.Time { + dst := make([]time.Time, len(src)) + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + return dst +} + +// TimeMap converts a string map of time.Time values into a string +// map of time.Time pointers +func TimeMap(src map[string]time.Time) map[string]*time.Time { + dst := make(map[string]*time.Time) + for k, val := range src { + v := val + dst[k] = &v + } + return dst +} + +// TimeValueMap converts a string map of time.Time pointers into a string +// map of time.Time values +func TimeValueMap(src map[string]*time.Time) map[string]time.Time { + dst := make(map[string]time.Time) + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + return dst +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go b/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go new file mode 100644 index 0000000..0c60e61 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go @@ -0,0 +1,230 @@ +package corehandlers + +import ( + "bytes" + "fmt" + "io/ioutil" + "net/http" + "net/url" + "regexp" + "strconv" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/request" +) + +// Interface for matching types which also have a Len method. +type lener interface { + Len() int +} + +// BuildContentLengthHandler builds the content length of a request based on the body, +// or will use the HTTPRequest.Header's "Content-Length" if defined. If unable +// to determine request body length and no "Content-Length" was specified it will panic. +// +// The Content-Length will only be added to the request if the length of the body +// is greater than 0. If the body is empty or the current `Content-Length` +// header is <= 0, the header will also be stripped. +var BuildContentLengthHandler = request.NamedHandler{Name: "core.BuildContentLengthHandler", Fn: func(r *request.Request) { + var length int64 + + if slength := r.HTTPRequest.Header.Get("Content-Length"); slength != "" { + length, _ = strconv.ParseInt(slength, 10, 64) + } else { + if r.Body != nil { + var err error + length, err = aws.SeekerLen(r.Body) + if err != nil { + r.Error = awserr.New(request.ErrCodeSerialization, "failed to get request body's length", err) + return + } + } + } + + if length > 0 { + r.HTTPRequest.ContentLength = length + r.HTTPRequest.Header.Set("Content-Length", fmt.Sprintf("%d", length)) + } else { + r.HTTPRequest.ContentLength = 0 + r.HTTPRequest.Header.Del("Content-Length") + } +}} + +var reStatusCode = regexp.MustCompile(`^(\d{3})`) + +// ValidateReqSigHandler is a request handler to ensure that the request's +// signature doesn't expire before it is sent. This can happen when a request +// is built and signed significantly before it is sent. Or significant delays +// occur when retrying requests that would cause the signature to expire. +var ValidateReqSigHandler = request.NamedHandler{ + Name: "core.ValidateReqSigHandler", + Fn: func(r *request.Request) { + // Unsigned requests are not signed + if r.Config.Credentials == credentials.AnonymousCredentials { + return + } + + signedTime := r.Time + if !r.LastSignedAt.IsZero() { + signedTime = r.LastSignedAt + } + + // 5 minutes to allow for some clock skew/delays in transmission. + // Would be improved with aws/aws-sdk-go#423 + if signedTime.Add(5 * time.Minute).After(time.Now()) { + return + } + + fmt.Println("request expired, resigning") + r.Sign() + }, +} + +// SendHandler is a request handler to send service request using HTTP client. +var SendHandler = request.NamedHandler{ + Name: "core.SendHandler", + Fn: func(r *request.Request) { + sender := sendFollowRedirects + if r.DisableFollowRedirects { + sender = sendWithoutFollowRedirects + } + + if request.NoBody == r.HTTPRequest.Body { + // Strip off the request body if the NoBody reader was used as a + // place holder for a request body. This prevents the SDK from + // making requests with a request body when it would be invalid + // to do so. + // + // Use a shallow copy of the http.Request to ensure the race condition + // of transport on Body will not trigger + reqOrig, reqCopy := r.HTTPRequest, *r.HTTPRequest + reqCopy.Body = nil + r.HTTPRequest = &reqCopy + defer func() { + r.HTTPRequest = reqOrig + }() + } + + var err error + r.HTTPResponse, err = sender(r) + if err != nil { + handleSendError(r, err) + } + }, +} + +func sendFollowRedirects(r *request.Request) (*http.Response, error) { + return r.Config.HTTPClient.Do(r.HTTPRequest) +} + +func sendWithoutFollowRedirects(r *request.Request) (*http.Response, error) { + transport := r.Config.HTTPClient.Transport + if transport == nil { + transport = http.DefaultTransport + } + + return transport.RoundTrip(r.HTTPRequest) +} + +func handleSendError(r *request.Request, err error) { + // Prevent leaking if an HTTPResponse was returned. Clean up + // the body. + if r.HTTPResponse != nil { + r.HTTPResponse.Body.Close() + } + // Capture the case where url.Error is returned for error processing + // response. e.g. 301 without location header comes back as string + // error and r.HTTPResponse is nil. Other URL redirect errors will + // comeback in a similar method. + if e, ok := err.(*url.Error); ok && e.Err != nil { + if s := reStatusCode.FindStringSubmatch(e.Err.Error()); s != nil { + code, _ := strconv.ParseInt(s[1], 10, 64) + r.HTTPResponse = &http.Response{ + StatusCode: int(code), + Status: http.StatusText(int(code)), + Body: ioutil.NopCloser(bytes.NewReader([]byte{})), + } + return + } + } + if r.HTTPResponse == nil { + // Add a dummy request response object to ensure the HTTPResponse + // value is consistent. + r.HTTPResponse = &http.Response{ + StatusCode: int(0), + Status: http.StatusText(int(0)), + Body: ioutil.NopCloser(bytes.NewReader([]byte{})), + } + } + // Catch all request errors, and let the default retrier determine + // if the error is retryable. + r.Error = awserr.New("RequestError", "send request failed", err) + + // Override the error with a context canceled error, if that was canceled. + ctx := r.Context() + select { + case <-ctx.Done(): + r.Error = awserr.New(request.CanceledErrorCode, + "request context canceled", ctx.Err()) + r.Retryable = aws.Bool(false) + default: + } +} + +// ValidateResponseHandler is a request handler to validate service response. +var ValidateResponseHandler = request.NamedHandler{Name: "core.ValidateResponseHandler", Fn: func(r *request.Request) { + if r.HTTPResponse.StatusCode == 0 || r.HTTPResponse.StatusCode >= 300 { + // this may be replaced by an UnmarshalError handler + r.Error = awserr.New("UnknownError", "unknown error", nil) + } +}} + +// AfterRetryHandler performs final checks to determine if the request should +// be retried and how long to delay. +var AfterRetryHandler = request.NamedHandler{ + Name: "core.AfterRetryHandler", + Fn: func(r *request.Request) { + // If one of the other handlers already set the retry state + // we don't want to override it based on the service's state + if r.Retryable == nil || aws.BoolValue(r.Config.EnforceShouldRetryCheck) { + r.Retryable = aws.Bool(r.ShouldRetry(r)) + } + + if r.WillRetry() { + r.RetryDelay = r.RetryRules(r) + + if sleepFn := r.Config.SleepDelay; sleepFn != nil { + // Support SleepDelay for backwards compatibility and testing + sleepFn(r.RetryDelay) + } else if err := aws.SleepWithContext(r.Context(), r.RetryDelay); err != nil { + r.Error = awserr.New(request.CanceledErrorCode, + "request context canceled", err) + r.Retryable = aws.Bool(false) + return + } + + // when the expired token exception occurs the credentials + // need to be expired locally so that the next request to + // get credentials will trigger a credentials refresh. + if r.IsErrorExpired() { + r.Config.Credentials.Expire() + } + + r.RetryCount++ + r.Error = nil + } + }} + +// ValidateEndpointHandler is a request handler to validate a request had the +// appropriate Region and Endpoint set. Will set r.Error if the endpoint or +// region is not valid. +var ValidateEndpointHandler = request.NamedHandler{Name: "core.ValidateEndpointHandler", Fn: func(r *request.Request) { + if r.ClientInfo.SigningRegion == "" && aws.StringValue(r.Config.Region) == "" { + r.Error = aws.ErrMissingRegion + } else if r.ClientInfo.Endpoint == "" { + r.Error = aws.ErrMissingEndpoint + } +}} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/param_validator.go b/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/param_validator.go new file mode 100644 index 0000000..7d50b15 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/param_validator.go @@ -0,0 +1,17 @@ +package corehandlers + +import "github.com/aws/aws-sdk-go/aws/request" + +// ValidateParametersHandler is a request handler to validate the input parameters. +// Validating parameters only has meaning if done prior to the request being sent. +var ValidateParametersHandler = request.NamedHandler{Name: "core.ValidateParametersHandler", Fn: func(r *request.Request) { + if !r.ParamsFilled() { + return + } + + if v, ok := r.Params.(request.Validator); ok { + if err := v.Validate(); err != nil { + r.Error = err + } + } +}} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/user_agent.go b/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/user_agent.go new file mode 100644 index 0000000..ab69c7a --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/user_agent.go @@ -0,0 +1,37 @@ +package corehandlers + +import ( + "os" + "runtime" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/request" +) + +// SDKVersionUserAgentHandler is a request handler for adding the SDK Version +// to the user agent. +var SDKVersionUserAgentHandler = request.NamedHandler{ + Name: "core.SDKVersionUserAgentHandler", + Fn: request.MakeAddToUserAgentHandler(aws.SDKName, aws.SDKVersion, + runtime.Version(), runtime.GOOS, runtime.GOARCH), +} + +const execEnvVar = `AWS_EXECUTION_ENV` +const execEnvUAKey = `exec-env` + +// AddHostExecEnvUserAgentHander is a request handler appending the SDK's +// execution environment to the user agent. +// +// If the environment variable AWS_EXECUTION_ENV is set, its value will be +// appended to the user agent string. +var AddHostExecEnvUserAgentHander = request.NamedHandler{ + Name: "core.AddHostExecEnvUserAgentHander", + Fn: func(r *request.Request) { + v := os.Getenv(execEnvVar) + if len(v) == 0 { + return + } + + request.AddToUserAgent(r, execEnvUAKey+"/"+v) + }, +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/chain_provider.go b/vendor/github.com/aws/aws-sdk-go/aws/credentials/chain_provider.go new file mode 100644 index 0000000..3ad1e79 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/chain_provider.go @@ -0,0 +1,100 @@ +package credentials + +import ( + "github.com/aws/aws-sdk-go/aws/awserr" +) + +var ( + // ErrNoValidProvidersFoundInChain Is returned when there are no valid + // providers in the ChainProvider. + // + // This has been deprecated. For verbose error messaging set + // aws.Config.CredentialsChainVerboseErrors to true. + ErrNoValidProvidersFoundInChain = awserr.New("NoCredentialProviders", + `no valid providers in chain. Deprecated. + For verbose messaging see aws.Config.CredentialsChainVerboseErrors`, + nil) +) + +// A ChainProvider will search for a provider which returns credentials +// and cache that provider until Retrieve is called again. +// +// The ChainProvider provides a way of chaining multiple providers together +// which will pick the first available using priority order of the Providers +// in the list. +// +// If none of the Providers retrieve valid credentials Value, ChainProvider's +// Retrieve() will return the error ErrNoValidProvidersFoundInChain. +// +// If a Provider is found which returns valid credentials Value ChainProvider +// will cache that Provider for all calls to IsExpired(), until Retrieve is +// called again. +// +// Example of ChainProvider to be used with an EnvProvider and EC2RoleProvider. +// In this example EnvProvider will first check if any credentials are available +// via the environment variables. If there are none ChainProvider will check +// the next Provider in the list, EC2RoleProvider in this case. If EC2RoleProvider +// does not return any credentials ChainProvider will return the error +// ErrNoValidProvidersFoundInChain +// +// creds := credentials.NewChainCredentials( +// []credentials.Provider{ +// &credentials.EnvProvider{}, +// &ec2rolecreds.EC2RoleProvider{ +// Client: ec2metadata.New(sess), +// }, +// }) +// +// // Usage of ChainCredentials with aws.Config +// svc := ec2.New(session.Must(session.NewSession(&aws.Config{ +// Credentials: creds, +// }))) +// +type ChainProvider struct { + Providers []Provider + curr Provider + VerboseErrors bool +} + +// NewChainCredentials returns a pointer to a new Credentials object +// wrapping a chain of providers. +func NewChainCredentials(providers []Provider) *Credentials { + return NewCredentials(&ChainProvider{ + Providers: append([]Provider{}, providers...), + }) +} + +// Retrieve returns the credentials value or error if no provider returned +// without error. +// +// If a provider is found it will be cached and any calls to IsExpired() +// will return the expired state of the cached provider. +func (c *ChainProvider) Retrieve() (Value, error) { + var errs []error + for _, p := range c.Providers { + creds, err := p.Retrieve() + if err == nil { + c.curr = p + return creds, nil + } + errs = append(errs, err) + } + c.curr = nil + + var err error + err = ErrNoValidProvidersFoundInChain + if c.VerboseErrors { + err = awserr.NewBatchError("NoCredentialProviders", "no valid providers in chain", errs) + } + return Value{}, err +} + +// IsExpired will returned the expired state of the currently cached provider +// if there is one. If there is no current provider, true will be returned. +func (c *ChainProvider) IsExpired() bool { + if c.curr != nil { + return c.curr.IsExpired() + } + + return true +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go b/vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go new file mode 100644 index 0000000..4af5921 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go @@ -0,0 +1,299 @@ +// Package credentials provides credential retrieval and management +// +// The Credentials is the primary method of getting access to and managing +// credentials Values. Using dependency injection retrieval of the credential +// values is handled by a object which satisfies the Provider interface. +// +// By default the Credentials.Get() will cache the successful result of a +// Provider's Retrieve() until Provider.IsExpired() returns true. At which +// point Credentials will call Provider's Retrieve() to get new credential Value. +// +// The Provider is responsible for determining when credentials Value have expired. +// It is also important to note that Credentials will always call Retrieve the +// first time Credentials.Get() is called. +// +// Example of using the environment variable credentials. +// +// creds := credentials.NewEnvCredentials() +// +// // Retrieve the credentials value +// credValue, err := creds.Get() +// if err != nil { +// // handle error +// } +// +// Example of forcing credentials to expire and be refreshed on the next Get(). +// This may be helpful to proactively expire credentials and refresh them sooner +// than they would naturally expire on their own. +// +// creds := credentials.NewCredentials(&ec2rolecreds.EC2RoleProvider{}) +// creds.Expire() +// credsValue, err := creds.Get() +// // New credentials will be retrieved instead of from cache. +// +// +// Custom Provider +// +// Each Provider built into this package also provides a helper method to generate +// a Credentials pointer setup with the provider. To use a custom Provider just +// create a type which satisfies the Provider interface and pass it to the +// NewCredentials method. +// +// type MyProvider struct{} +// func (m *MyProvider) Retrieve() (Value, error) {...} +// func (m *MyProvider) IsExpired() bool {...} +// +// creds := credentials.NewCredentials(&MyProvider{}) +// credValue, err := creds.Get() +// +package credentials + +import ( + "fmt" + "sync" + "time" + + "github.com/aws/aws-sdk-go/aws/awserr" +) + +// AnonymousCredentials is an empty Credential object that can be used as +// dummy placeholder credentials for requests that do not need signed. +// +// This Credentials can be used to configure a service to not sign requests +// when making service API calls. For example, when accessing public +// s3 buckets. +// +// svc := s3.New(session.Must(session.NewSession(&aws.Config{ +// Credentials: credentials.AnonymousCredentials, +// }))) +// // Access public S3 buckets. +var AnonymousCredentials = NewStaticCredentials("", "", "") + +// A Value is the AWS credentials value for individual credential fields. +type Value struct { + // AWS Access key ID + AccessKeyID string + + // AWS Secret Access Key + SecretAccessKey string + + // AWS Session Token + SessionToken string + + // Provider used to get credentials + ProviderName string +} + +// HasKeys returns if the credentials Value has both AccessKeyID and +// SecretAccessKey value set. +func (v Value) HasKeys() bool { + return len(v.AccessKeyID) != 0 && len(v.SecretAccessKey) != 0 +} + +// A Provider is the interface for any component which will provide credentials +// Value. A provider is required to manage its own Expired state, and what to +// be expired means. +// +// The Provider should not need to implement its own mutexes, because +// that will be managed by Credentials. +type Provider interface { + // Retrieve returns nil if it successfully retrieved the value. + // Error is returned if the value were not obtainable, or empty. + Retrieve() (Value, error) + + // IsExpired returns if the credentials are no longer valid, and need + // to be retrieved. + IsExpired() bool +} + +// An Expirer is an interface that Providers can implement to expose the expiration +// time, if known. If the Provider cannot accurately provide this info, +// it should not implement this interface. +type Expirer interface { + // The time at which the credentials are no longer valid + ExpiresAt() time.Time +} + +// An ErrorProvider is a stub credentials provider that always returns an error +// this is used by the SDK when construction a known provider is not possible +// due to an error. +type ErrorProvider struct { + // The error to be returned from Retrieve + Err error + + // The provider name to set on the Retrieved returned Value + ProviderName string +} + +// Retrieve will always return the error that the ErrorProvider was created with. +func (p ErrorProvider) Retrieve() (Value, error) { + return Value{ProviderName: p.ProviderName}, p.Err +} + +// IsExpired will always return not expired. +func (p ErrorProvider) IsExpired() bool { + return false +} + +// A Expiry provides shared expiration logic to be used by credentials +// providers to implement expiry functionality. +// +// The best method to use this struct is as an anonymous field within the +// provider's struct. +// +// Example: +// type EC2RoleProvider struct { +// Expiry +// ... +// } +type Expiry struct { + // The date/time when to expire on + expiration time.Time + + // If set will be used by IsExpired to determine the current time. + // Defaults to time.Now if CurrentTime is not set. Available for testing + // to be able to mock out the current time. + CurrentTime func() time.Time +} + +// SetExpiration sets the expiration IsExpired will check when called. +// +// If window is greater than 0 the expiration time will be reduced by the +// window value. +// +// Using a window is helpful to trigger credentials to expire sooner than +// the expiration time given to ensure no requests are made with expired +// tokens. +func (e *Expiry) SetExpiration(expiration time.Time, window time.Duration) { + e.expiration = expiration + if window > 0 { + e.expiration = e.expiration.Add(-window) + } +} + +// IsExpired returns if the credentials are expired. +func (e *Expiry) IsExpired() bool { + curTime := e.CurrentTime + if curTime == nil { + curTime = time.Now + } + return e.expiration.Before(curTime()) +} + +// ExpiresAt returns the expiration time of the credential +func (e *Expiry) ExpiresAt() time.Time { + return e.expiration +} + +// A Credentials provides concurrency safe retrieval of AWS credentials Value. +// Credentials will cache the credentials value until they expire. Once the value +// expires the next Get will attempt to retrieve valid credentials. +// +// Credentials is safe to use across multiple goroutines and will manage the +// synchronous state so the Providers do not need to implement their own +// synchronization. +// +// The first Credentials.Get() will always call Provider.Retrieve() to get the +// first instance of the credentials Value. All calls to Get() after that +// will return the cached credentials Value until IsExpired() returns true. +type Credentials struct { + creds Value + forceRefresh bool + + m sync.RWMutex + + provider Provider +} + +// NewCredentials returns a pointer to a new Credentials with the provider set. +func NewCredentials(provider Provider) *Credentials { + return &Credentials{ + provider: provider, + forceRefresh: true, + } +} + +// Get returns the credentials value, or error if the credentials Value failed +// to be retrieved. +// +// Will return the cached credentials Value if it has not expired. If the +// credentials Value has expired the Provider's Retrieve() will be called +// to refresh the credentials. +// +// If Credentials.Expire() was called the credentials Value will be force +// expired, and the next call to Get() will cause them to be refreshed. +func (c *Credentials) Get() (Value, error) { + // Check the cached credentials first with just the read lock. + c.m.RLock() + if !c.isExpired() { + creds := c.creds + c.m.RUnlock() + return creds, nil + } + c.m.RUnlock() + + // Credentials are expired need to retrieve the credentials taking the full + // lock. + c.m.Lock() + defer c.m.Unlock() + + if c.isExpired() { + creds, err := c.provider.Retrieve() + if err != nil { + return Value{}, err + } + c.creds = creds + c.forceRefresh = false + } + + return c.creds, nil +} + +// Expire expires the credentials and forces them to be retrieved on the +// next call to Get(). +// +// This will override the Provider's expired state, and force Credentials +// to call the Provider's Retrieve(). +func (c *Credentials) Expire() { + c.m.Lock() + defer c.m.Unlock() + + c.forceRefresh = true +} + +// IsExpired returns if the credentials are no longer valid, and need +// to be retrieved. +// +// If the Credentials were forced to be expired with Expire() this will +// reflect that override. +func (c *Credentials) IsExpired() bool { + c.m.RLock() + defer c.m.RUnlock() + + return c.isExpired() +} + +// isExpired helper method wrapping the definition of expired credentials. +func (c *Credentials) isExpired() bool { + return c.forceRefresh || c.provider.IsExpired() +} + +// ExpiresAt provides access to the functionality of the Expirer interface of +// the underlying Provider, if it supports that interface. Otherwise, it returns +// an error. +func (c *Credentials) ExpiresAt() (time.Time, error) { + c.m.RLock() + defer c.m.RUnlock() + + expirer, ok := c.provider.(Expirer) + if !ok { + return time.Time{}, awserr.New("ProviderNotExpirer", + fmt.Sprintf("provider %s does not support ExpiresAt()", c.creds.ProviderName), + nil) + } + if c.forceRefresh { + // set expiration time to the distant past + return time.Time{}, nil + } + return expirer.ExpiresAt(), nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds/ec2_role_provider.go b/vendor/github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds/ec2_role_provider.go new file mode 100644 index 0000000..43d4ed3 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds/ec2_role_provider.go @@ -0,0 +1,180 @@ +package ec2rolecreds + +import ( + "bufio" + "encoding/json" + "fmt" + "strings" + "time" + + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/client" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/ec2metadata" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/internal/sdkuri" +) + +// ProviderName provides a name of EC2Role provider +const ProviderName = "EC2RoleProvider" + +// A EC2RoleProvider retrieves credentials from the EC2 service, and keeps track if +// those credentials are expired. +// +// Example how to configure the EC2RoleProvider with custom http Client, Endpoint +// or ExpiryWindow +// +// p := &ec2rolecreds.EC2RoleProvider{ +// // Pass in a custom timeout to be used when requesting +// // IAM EC2 Role credentials. +// Client: ec2metadata.New(sess, aws.Config{ +// HTTPClient: &http.Client{Timeout: 10 * time.Second}, +// }), +// +// // Do not use early expiry of credentials. If a non zero value is +// // specified the credentials will be expired early +// ExpiryWindow: 0, +// } +type EC2RoleProvider struct { + credentials.Expiry + + // Required EC2Metadata client to use when connecting to EC2 metadata service. + Client *ec2metadata.EC2Metadata + + // ExpiryWindow will allow the credentials to trigger refreshing prior to + // the credentials actually expiring. This is beneficial so race conditions + // with expiring credentials do not cause request to fail unexpectedly + // due to ExpiredTokenException exceptions. + // + // So a ExpiryWindow of 10s would cause calls to IsExpired() to return true + // 10 seconds before the credentials are actually expired. + // + // If ExpiryWindow is 0 or less it will be ignored. + ExpiryWindow time.Duration +} + +// NewCredentials returns a pointer to a new Credentials object wrapping +// the EC2RoleProvider. Takes a ConfigProvider to create a EC2Metadata client. +// The ConfigProvider is satisfied by the session.Session type. +func NewCredentials(c client.ConfigProvider, options ...func(*EC2RoleProvider)) *credentials.Credentials { + p := &EC2RoleProvider{ + Client: ec2metadata.New(c), + } + + for _, option := range options { + option(p) + } + + return credentials.NewCredentials(p) +} + +// NewCredentialsWithClient returns a pointer to a new Credentials object wrapping +// the EC2RoleProvider. Takes a EC2Metadata client to use when connecting to EC2 +// metadata service. +func NewCredentialsWithClient(client *ec2metadata.EC2Metadata, options ...func(*EC2RoleProvider)) *credentials.Credentials { + p := &EC2RoleProvider{ + Client: client, + } + + for _, option := range options { + option(p) + } + + return credentials.NewCredentials(p) +} + +// Retrieve retrieves credentials from the EC2 service. +// Error will be returned if the request fails, or unable to extract +// the desired credentials. +func (m *EC2RoleProvider) Retrieve() (credentials.Value, error) { + credsList, err := requestCredList(m.Client) + if err != nil { + return credentials.Value{ProviderName: ProviderName}, err + } + + if len(credsList) == 0 { + return credentials.Value{ProviderName: ProviderName}, awserr.New("EmptyEC2RoleList", "empty EC2 Role list", nil) + } + credsName := credsList[0] + + roleCreds, err := requestCred(m.Client, credsName) + if err != nil { + return credentials.Value{ProviderName: ProviderName}, err + } + + m.SetExpiration(roleCreds.Expiration, m.ExpiryWindow) + + return credentials.Value{ + AccessKeyID: roleCreds.AccessKeyID, + SecretAccessKey: roleCreds.SecretAccessKey, + SessionToken: roleCreds.Token, + ProviderName: ProviderName, + }, nil +} + +// A ec2RoleCredRespBody provides the shape for unmarshaling credential +// request responses. +type ec2RoleCredRespBody struct { + // Success State + Expiration time.Time + AccessKeyID string + SecretAccessKey string + Token string + + // Error state + Code string + Message string +} + +const iamSecurityCredsPath = "iam/security-credentials/" + +// requestCredList requests a list of credentials from the EC2 service. +// If there are no credentials, or there is an error making or receiving the request +func requestCredList(client *ec2metadata.EC2Metadata) ([]string, error) { + resp, err := client.GetMetadata(iamSecurityCredsPath) + if err != nil { + return nil, awserr.New("EC2RoleRequestError", "no EC2 instance role found", err) + } + + credsList := []string{} + s := bufio.NewScanner(strings.NewReader(resp)) + for s.Scan() { + credsList = append(credsList, s.Text()) + } + + if err := s.Err(); err != nil { + return nil, awserr.New(request.ErrCodeSerialization, + "failed to read EC2 instance role from metadata service", err) + } + + return credsList, nil +} + +// requestCred requests the credentials for a specific credentials from the EC2 service. +// +// If the credentials cannot be found, or there is an error reading the response +// and error will be returned. +func requestCred(client *ec2metadata.EC2Metadata, credsName string) (ec2RoleCredRespBody, error) { + resp, err := client.GetMetadata(sdkuri.PathJoin(iamSecurityCredsPath, credsName)) + if err != nil { + return ec2RoleCredRespBody{}, + awserr.New("EC2RoleRequestError", + fmt.Sprintf("failed to get %s EC2 instance role credentials", credsName), + err) + } + + respCreds := ec2RoleCredRespBody{} + if err := json.NewDecoder(strings.NewReader(resp)).Decode(&respCreds); err != nil { + return ec2RoleCredRespBody{}, + awserr.New(request.ErrCodeSerialization, + fmt.Sprintf("failed to decode %s EC2 instance role credentials", credsName), + err) + } + + if respCreds.Code != "Success" { + // If an error code was returned something failed requesting the role. + return ec2RoleCredRespBody{}, awserr.New(respCreds.Code, respCreds.Message, nil) + } + + return respCreds, nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/endpointcreds/provider.go b/vendor/github.com/aws/aws-sdk-go/aws/credentials/endpointcreds/provider.go new file mode 100644 index 0000000..1a7af53 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/endpointcreds/provider.go @@ -0,0 +1,203 @@ +// Package endpointcreds provides support for retrieving credentials from an +// arbitrary HTTP endpoint. +// +// The credentials endpoint Provider can receive both static and refreshable +// credentials that will expire. Credentials are static when an "Expiration" +// value is not provided in the endpoint's response. +// +// Static credentials will never expire once they have been retrieved. The format +// of the static credentials response: +// { +// "AccessKeyId" : "MUA...", +// "SecretAccessKey" : "/7PC5om....", +// } +// +// Refreshable credentials will expire within the "ExpiryWindow" of the Expiration +// value in the response. The format of the refreshable credentials response: +// { +// "AccessKeyId" : "MUA...", +// "SecretAccessKey" : "/7PC5om....", +// "Token" : "AQoDY....=", +// "Expiration" : "2016-02-25T06:03:31Z" +// } +// +// Errors should be returned in the following format and only returned with 400 +// or 500 HTTP status codes. +// { +// "code": "ErrorCode", +// "message": "Helpful error message." +// } +package endpointcreds + +import ( + "encoding/json" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/client" + "github.com/aws/aws-sdk-go/aws/client/metadata" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/private/protocol/json/jsonutil" +) + +// ProviderName is the name of the credentials provider. +const ProviderName = `CredentialsEndpointProvider` + +// Provider satisfies the credentials.Provider interface, and is a client to +// retrieve credentials from an arbitrary endpoint. +type Provider struct { + staticCreds bool + credentials.Expiry + + // Requires a AWS Client to make HTTP requests to the endpoint with. + // the Endpoint the request will be made to is provided by the aws.Config's + // Endpoint value. + Client *client.Client + + // ExpiryWindow will allow the credentials to trigger refreshing prior to + // the credentials actually expiring. This is beneficial so race conditions + // with expiring credentials do not cause request to fail unexpectedly + // due to ExpiredTokenException exceptions. + // + // So a ExpiryWindow of 10s would cause calls to IsExpired() to return true + // 10 seconds before the credentials are actually expired. + // + // If ExpiryWindow is 0 or less it will be ignored. + ExpiryWindow time.Duration + + // Optional authorization token value if set will be used as the value of + // the Authorization header of the endpoint credential request. + AuthorizationToken string +} + +// NewProviderClient returns a credentials Provider for retrieving AWS credentials +// from arbitrary endpoint. +func NewProviderClient(cfg aws.Config, handlers request.Handlers, endpoint string, options ...func(*Provider)) credentials.Provider { + p := &Provider{ + Client: client.New( + cfg, + metadata.ClientInfo{ + ServiceName: "CredentialsEndpoint", + Endpoint: endpoint, + }, + handlers, + ), + } + + p.Client.Handlers.Unmarshal.PushBack(unmarshalHandler) + p.Client.Handlers.UnmarshalError.PushBack(unmarshalError) + p.Client.Handlers.Validate.Clear() + p.Client.Handlers.Validate.PushBack(validateEndpointHandler) + + for _, option := range options { + option(p) + } + + return p +} + +// NewCredentialsClient returns a pointer to a new Credentials object +// wrapping the endpoint credentials Provider. +func NewCredentialsClient(cfg aws.Config, handlers request.Handlers, endpoint string, options ...func(*Provider)) *credentials.Credentials { + return credentials.NewCredentials(NewProviderClient(cfg, handlers, endpoint, options...)) +} + +// IsExpired returns true if the credentials retrieved are expired, or not yet +// retrieved. +func (p *Provider) IsExpired() bool { + if p.staticCreds { + return false + } + return p.Expiry.IsExpired() +} + +// Retrieve will attempt to request the credentials from the endpoint the Provider +// was configured for. And error will be returned if the retrieval fails. +func (p *Provider) Retrieve() (credentials.Value, error) { + resp, err := p.getCredentials() + if err != nil { + return credentials.Value{ProviderName: ProviderName}, + awserr.New("CredentialsEndpointError", "failed to load credentials", err) + } + + if resp.Expiration != nil { + p.SetExpiration(*resp.Expiration, p.ExpiryWindow) + } else { + p.staticCreds = true + } + + return credentials.Value{ + AccessKeyID: resp.AccessKeyID, + SecretAccessKey: resp.SecretAccessKey, + SessionToken: resp.Token, + ProviderName: ProviderName, + }, nil +} + +type getCredentialsOutput struct { + Expiration *time.Time + AccessKeyID string + SecretAccessKey string + Token string +} + +type errorOutput struct { + Code string `json:"code"` + Message string `json:"message"` +} + +func (p *Provider) getCredentials() (*getCredentialsOutput, error) { + op := &request.Operation{ + Name: "GetCredentials", + HTTPMethod: "GET", + } + + out := &getCredentialsOutput{} + req := p.Client.NewRequest(op, nil, out) + req.HTTPRequest.Header.Set("Accept", "application/json") + if authToken := p.AuthorizationToken; len(authToken) != 0 { + req.HTTPRequest.Header.Set("Authorization", authToken) + } + + return out, req.Send() +} + +func validateEndpointHandler(r *request.Request) { + if len(r.ClientInfo.Endpoint) == 0 { + r.Error = aws.ErrMissingEndpoint + } +} + +func unmarshalHandler(r *request.Request) { + defer r.HTTPResponse.Body.Close() + + out := r.Data.(*getCredentialsOutput) + if err := json.NewDecoder(r.HTTPResponse.Body).Decode(&out); err != nil { + r.Error = awserr.New(request.ErrCodeSerialization, + "failed to decode endpoint credentials", + err, + ) + } +} + +func unmarshalError(r *request.Request) { + defer r.HTTPResponse.Body.Close() + + var errOut errorOutput + err := jsonutil.UnmarshalJSONError(&errOut, r.HTTPResponse.Body) + if err != nil { + r.Error = awserr.NewRequestFailure( + awserr.New(request.ErrCodeSerialization, + "failed to decode error message", err), + r.HTTPResponse.StatusCode, + r.RequestID, + ) + return + } + + // Response body format is not consistent between metadata endpoints. + // Grab the error message as a string and include that as the source error + r.Error = awserr.New(errOut.Code, errOut.Message, nil) +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/env_provider.go b/vendor/github.com/aws/aws-sdk-go/aws/credentials/env_provider.go new file mode 100644 index 0000000..54c5cf7 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/env_provider.go @@ -0,0 +1,74 @@ +package credentials + +import ( + "os" + + "github.com/aws/aws-sdk-go/aws/awserr" +) + +// EnvProviderName provides a name of Env provider +const EnvProviderName = "EnvProvider" + +var ( + // ErrAccessKeyIDNotFound is returned when the AWS Access Key ID can't be + // found in the process's environment. + ErrAccessKeyIDNotFound = awserr.New("EnvAccessKeyNotFound", "AWS_ACCESS_KEY_ID or AWS_ACCESS_KEY not found in environment", nil) + + // ErrSecretAccessKeyNotFound is returned when the AWS Secret Access Key + // can't be found in the process's environment. + ErrSecretAccessKeyNotFound = awserr.New("EnvSecretNotFound", "AWS_SECRET_ACCESS_KEY or AWS_SECRET_KEY not found in environment", nil) +) + +// A EnvProvider retrieves credentials from the environment variables of the +// running process. Environment credentials never expire. +// +// Environment variables used: +// +// * Access Key ID: AWS_ACCESS_KEY_ID or AWS_ACCESS_KEY +// +// * Secret Access Key: AWS_SECRET_ACCESS_KEY or AWS_SECRET_KEY +type EnvProvider struct { + retrieved bool +} + +// NewEnvCredentials returns a pointer to a new Credentials object +// wrapping the environment variable provider. +func NewEnvCredentials() *Credentials { + return NewCredentials(&EnvProvider{}) +} + +// Retrieve retrieves the keys from the environment. +func (e *EnvProvider) Retrieve() (Value, error) { + e.retrieved = false + + id := os.Getenv("AWS_ACCESS_KEY_ID") + if id == "" { + id = os.Getenv("AWS_ACCESS_KEY") + } + + secret := os.Getenv("AWS_SECRET_ACCESS_KEY") + if secret == "" { + secret = os.Getenv("AWS_SECRET_KEY") + } + + if id == "" { + return Value{ProviderName: EnvProviderName}, ErrAccessKeyIDNotFound + } + + if secret == "" { + return Value{ProviderName: EnvProviderName}, ErrSecretAccessKeyNotFound + } + + e.retrieved = true + return Value{ + AccessKeyID: id, + SecretAccessKey: secret, + SessionToken: os.Getenv("AWS_SESSION_TOKEN"), + ProviderName: EnvProviderName, + }, nil +} + +// IsExpired returns if the credentials have been retrieved. +func (e *EnvProvider) IsExpired() bool { + return !e.retrieved +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/example.ini b/vendor/github.com/aws/aws-sdk-go/aws/credentials/example.ini new file mode 100644 index 0000000..7fc91d9 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/example.ini @@ -0,0 +1,12 @@ +[default] +aws_access_key_id = accessKey +aws_secret_access_key = secret +aws_session_token = token + +[no_token] +aws_access_key_id = accessKey +aws_secret_access_key = secret + +[with_colon] +aws_access_key_id: accessKey +aws_secret_access_key: secret diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/processcreds/provider.go b/vendor/github.com/aws/aws-sdk-go/aws/credentials/processcreds/provider.go new file mode 100644 index 0000000..1980c8c --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/processcreds/provider.go @@ -0,0 +1,425 @@ +/* +Package processcreds is a credential Provider to retrieve `credential_process` +credentials. + +WARNING: The following describes a method of sourcing credentials from an external +process. This can potentially be dangerous, so proceed with caution. Other +credential providers should be preferred if at all possible. If using this +option, you should make sure that the config file is as locked down as possible +using security best practices for your operating system. + +You can use credentials from a `credential_process` in a variety of ways. + +One way is to setup your shared config file, located in the default +location, with the `credential_process` key and the command you want to be +called. You also need to set the AWS_SDK_LOAD_CONFIG environment variable +(e.g., `export AWS_SDK_LOAD_CONFIG=1`) to use the shared config file. + + [default] + credential_process = /command/to/call + +Creating a new session will use the credential process to retrieve credentials. +NOTE: If there are credentials in the profile you are using, the credential +process will not be used. + + // Initialize a session to load credentials. + sess, _ := session.NewSession(&aws.Config{ + Region: aws.String("us-east-1")}, + ) + + // Create S3 service client to use the credentials. + svc := s3.New(sess) + +Another way to use the `credential_process` method is by using +`credentials.NewCredentials()` and providing a command to be executed to +retrieve credentials: + + // Create credentials using the ProcessProvider. + creds := processcreds.NewCredentials("/path/to/command") + + // Create service client value configured for credentials. + svc := s3.New(sess, &aws.Config{Credentials: creds}) + +You can set a non-default timeout for the `credential_process` with another +constructor, `credentials.NewCredentialsTimeout()`, providing the timeout. To +set a one minute timeout: + + // Create credentials using the ProcessProvider. + creds := processcreds.NewCredentialsTimeout( + "/path/to/command", + time.Duration(500) * time.Millisecond) + +If you need more control, you can set any configurable options in the +credentials using one or more option functions. For example, you can set a two +minute timeout, a credential duration of 60 minutes, and a maximum stdout +buffer size of 2k. + + creds := processcreds.NewCredentials( + "/path/to/command", + func(opt *ProcessProvider) { + opt.Timeout = time.Duration(2) * time.Minute + opt.Duration = time.Duration(60) * time.Minute + opt.MaxBufSize = 2048 + }) + +You can also use your own `exec.Cmd`: + + // Create an exec.Cmd + myCommand := exec.Command("/path/to/command") + + // Create credentials using your exec.Cmd and custom timeout + creds := processcreds.NewCredentialsCommand( + myCommand, + func(opt *processcreds.ProcessProvider) { + opt.Timeout = time.Duration(1) * time.Second + }) +*/ +package processcreds + +import ( + "bytes" + "encoding/json" + "fmt" + "io" + "io/ioutil" + "os" + "os/exec" + "runtime" + "strings" + "time" + + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/credentials" +) + +const ( + // ProviderName is the name this credentials provider will label any + // returned credentials Value with. + ProviderName = `ProcessProvider` + + // ErrCodeProcessProviderParse error parsing process output + ErrCodeProcessProviderParse = "ProcessProviderParseError" + + // ErrCodeProcessProviderVersion version error in output + ErrCodeProcessProviderVersion = "ProcessProviderVersionError" + + // ErrCodeProcessProviderRequired required attribute missing in output + ErrCodeProcessProviderRequired = "ProcessProviderRequiredError" + + // ErrCodeProcessProviderExecution execution of command failed + ErrCodeProcessProviderExecution = "ProcessProviderExecutionError" + + // errMsgProcessProviderTimeout process took longer than allowed + errMsgProcessProviderTimeout = "credential process timed out" + + // errMsgProcessProviderProcess process error + errMsgProcessProviderProcess = "error in credential_process" + + // errMsgProcessProviderParse problem parsing output + errMsgProcessProviderParse = "parse failed of credential_process output" + + // errMsgProcessProviderVersion version error in output + errMsgProcessProviderVersion = "wrong version in process output (not 1)" + + // errMsgProcessProviderMissKey missing access key id in output + errMsgProcessProviderMissKey = "missing AccessKeyId in process output" + + // errMsgProcessProviderMissSecret missing secret acess key in output + errMsgProcessProviderMissSecret = "missing SecretAccessKey in process output" + + // errMsgProcessProviderPrepareCmd prepare of command failed + errMsgProcessProviderPrepareCmd = "failed to prepare command" + + // errMsgProcessProviderEmptyCmd command must not be empty + errMsgProcessProviderEmptyCmd = "command must not be empty" + + // errMsgProcessProviderPipe failed to initialize pipe + errMsgProcessProviderPipe = "failed to initialize pipe" + + // DefaultDuration is the default amount of time in minutes that the + // credentials will be valid for. + DefaultDuration = time.Duration(15) * time.Minute + + // DefaultBufSize limits buffer size from growing to an enormous + // amount due to a faulty process. + DefaultBufSize = 1024 + + // DefaultTimeout default limit on time a process can run. + DefaultTimeout = time.Duration(1) * time.Minute +) + +// ProcessProvider satisfies the credentials.Provider interface, and is a +// client to retrieve credentials from a process. +type ProcessProvider struct { + staticCreds bool + credentials.Expiry + originalCommand []string + + // Expiry duration of the credentials. Defaults to 15 minutes if not set. + Duration time.Duration + + // ExpiryWindow will allow the credentials to trigger refreshing prior to + // the credentials actually expiring. This is beneficial so race conditions + // with expiring credentials do not cause request to fail unexpectedly + // due to ExpiredTokenException exceptions. + // + // So a ExpiryWindow of 10s would cause calls to IsExpired() to return true + // 10 seconds before the credentials are actually expired. + // + // If ExpiryWindow is 0 or less it will be ignored. + ExpiryWindow time.Duration + + // A string representing an os command that should return a JSON with + // credential information. + command *exec.Cmd + + // MaxBufSize limits memory usage from growing to an enormous + // amount due to a faulty process. + MaxBufSize int + + // Timeout limits the time a process can run. + Timeout time.Duration +} + +// NewCredentials returns a pointer to a new Credentials object wrapping the +// ProcessProvider. The credentials will expire every 15 minutes by default. +func NewCredentials(command string, options ...func(*ProcessProvider)) *credentials.Credentials { + p := &ProcessProvider{ + command: exec.Command(command), + Duration: DefaultDuration, + Timeout: DefaultTimeout, + MaxBufSize: DefaultBufSize, + } + + for _, option := range options { + option(p) + } + + return credentials.NewCredentials(p) +} + +// NewCredentialsTimeout returns a pointer to a new Credentials object with +// the specified command and timeout, and default duration and max buffer size. +func NewCredentialsTimeout(command string, timeout time.Duration) *credentials.Credentials { + p := NewCredentials(command, func(opt *ProcessProvider) { + opt.Timeout = timeout + }) + + return p +} + +// NewCredentialsCommand returns a pointer to a new Credentials object with +// the specified command, and default timeout, duration and max buffer size. +func NewCredentialsCommand(command *exec.Cmd, options ...func(*ProcessProvider)) *credentials.Credentials { + p := &ProcessProvider{ + command: command, + Duration: DefaultDuration, + Timeout: DefaultTimeout, + MaxBufSize: DefaultBufSize, + } + + for _, option := range options { + option(p) + } + + return credentials.NewCredentials(p) +} + +type credentialProcessResponse struct { + Version int + AccessKeyID string `json:"AccessKeyId"` + SecretAccessKey string + SessionToken string + Expiration *time.Time +} + +// Retrieve executes the 'credential_process' and returns the credentials. +func (p *ProcessProvider) Retrieve() (credentials.Value, error) { + out, err := p.executeCredentialProcess() + if err != nil { + return credentials.Value{ProviderName: ProviderName}, err + } + + // Serialize and validate response + resp := &credentialProcessResponse{} + if err = json.Unmarshal(out, resp); err != nil { + return credentials.Value{ProviderName: ProviderName}, awserr.New( + ErrCodeProcessProviderParse, + fmt.Sprintf("%s: %s", errMsgProcessProviderParse, string(out)), + err) + } + + if resp.Version != 1 { + return credentials.Value{ProviderName: ProviderName}, awserr.New( + ErrCodeProcessProviderVersion, + errMsgProcessProviderVersion, + nil) + } + + if len(resp.AccessKeyID) == 0 { + return credentials.Value{ProviderName: ProviderName}, awserr.New( + ErrCodeProcessProviderRequired, + errMsgProcessProviderMissKey, + nil) + } + + if len(resp.SecretAccessKey) == 0 { + return credentials.Value{ProviderName: ProviderName}, awserr.New( + ErrCodeProcessProviderRequired, + errMsgProcessProviderMissSecret, + nil) + } + + // Handle expiration + p.staticCreds = resp.Expiration == nil + if resp.Expiration != nil { + p.SetExpiration(*resp.Expiration, p.ExpiryWindow) + } + + return credentials.Value{ + ProviderName: ProviderName, + AccessKeyID: resp.AccessKeyID, + SecretAccessKey: resp.SecretAccessKey, + SessionToken: resp.SessionToken, + }, nil +} + +// IsExpired returns true if the credentials retrieved are expired, or not yet +// retrieved. +func (p *ProcessProvider) IsExpired() bool { + if p.staticCreds { + return false + } + return p.Expiry.IsExpired() +} + +// prepareCommand prepares the command to be executed. +func (p *ProcessProvider) prepareCommand() error { + + var cmdArgs []string + if runtime.GOOS == "windows" { + cmdArgs = []string{"cmd.exe", "/C"} + } else { + cmdArgs = []string{"sh", "-c"} + } + + if len(p.originalCommand) == 0 { + p.originalCommand = make([]string, len(p.command.Args)) + copy(p.originalCommand, p.command.Args) + + // check for empty command because it succeeds + if len(strings.TrimSpace(p.originalCommand[0])) < 1 { + return awserr.New( + ErrCodeProcessProviderExecution, + fmt.Sprintf( + "%s: %s", + errMsgProcessProviderPrepareCmd, + errMsgProcessProviderEmptyCmd), + nil) + } + } + + cmdArgs = append(cmdArgs, p.originalCommand...) + p.command = exec.Command(cmdArgs[0], cmdArgs[1:]...) + p.command.Env = os.Environ() + + return nil +} + +// executeCredentialProcess starts the credential process on the OS and +// returns the results or an error. +func (p *ProcessProvider) executeCredentialProcess() ([]byte, error) { + + if err := p.prepareCommand(); err != nil { + return nil, err + } + + // Setup the pipes + outReadPipe, outWritePipe, err := os.Pipe() + if err != nil { + return nil, awserr.New( + ErrCodeProcessProviderExecution, + errMsgProcessProviderPipe, + err) + } + + p.command.Stderr = os.Stderr // display stderr on console for MFA + p.command.Stdout = outWritePipe // get creds json on process's stdout + p.command.Stdin = os.Stdin // enable stdin for MFA + + output := bytes.NewBuffer(make([]byte, 0, p.MaxBufSize)) + + stdoutCh := make(chan error, 1) + go readInput( + io.LimitReader(outReadPipe, int64(p.MaxBufSize)), + output, + stdoutCh) + + execCh := make(chan error, 1) + go executeCommand(*p.command, execCh) + + finished := false + var errors []error + for !finished { + select { + case readError := <-stdoutCh: + errors = appendError(errors, readError) + finished = true + case execError := <-execCh: + err := outWritePipe.Close() + errors = appendError(errors, err) + errors = appendError(errors, execError) + if errors != nil { + return output.Bytes(), awserr.NewBatchError( + ErrCodeProcessProviderExecution, + errMsgProcessProviderProcess, + errors) + } + case <-time.After(p.Timeout): + finished = true + return output.Bytes(), awserr.NewBatchError( + ErrCodeProcessProviderExecution, + errMsgProcessProviderTimeout, + errors) // errors can be nil + } + } + + out := output.Bytes() + + if runtime.GOOS == "windows" { + // windows adds slashes to quotes + out = []byte(strings.Replace(string(out), `\"`, `"`, -1)) + } + + return out, nil +} + +// appendError conveniently checks for nil before appending slice +func appendError(errors []error, err error) []error { + if err != nil { + return append(errors, err) + } + return errors +} + +func executeCommand(cmd exec.Cmd, exec chan error) { + // Start the command + err := cmd.Start() + if err == nil { + err = cmd.Wait() + } + + exec <- err +} + +func readInput(r io.Reader, w io.Writer, read chan error) { + tee := io.TeeReader(r, w) + + _, err := ioutil.ReadAll(tee) + + if err == io.EOF { + err = nil + } + + read <- err // will only arrive here when write end of pipe is closed +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/shared_credentials_provider.go b/vendor/github.com/aws/aws-sdk-go/aws/credentials/shared_credentials_provider.go new file mode 100644 index 0000000..e155149 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/shared_credentials_provider.go @@ -0,0 +1,150 @@ +package credentials + +import ( + "fmt" + "os" + + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/internal/ini" + "github.com/aws/aws-sdk-go/internal/shareddefaults" +) + +// SharedCredsProviderName provides a name of SharedCreds provider +const SharedCredsProviderName = "SharedCredentialsProvider" + +var ( + // ErrSharedCredentialsHomeNotFound is emitted when the user directory cannot be found. + ErrSharedCredentialsHomeNotFound = awserr.New("UserHomeNotFound", "user home directory not found.", nil) +) + +// A SharedCredentialsProvider retrieves credentials from the current user's home +// directory, and keeps track if those credentials are expired. +// +// Profile ini file example: $HOME/.aws/credentials +type SharedCredentialsProvider struct { + // Path to the shared credentials file. + // + // If empty will look for "AWS_SHARED_CREDENTIALS_FILE" env variable. If the + // env value is empty will default to current user's home directory. + // Linux/OSX: "$HOME/.aws/credentials" + // Windows: "%USERPROFILE%\.aws\credentials" + Filename string + + // AWS Profile to extract credentials from the shared credentials file. If empty + // will default to environment variable "AWS_PROFILE" or "default" if + // environment variable is also not set. + Profile string + + // retrieved states if the credentials have been successfully retrieved. + retrieved bool +} + +// NewSharedCredentials returns a pointer to a new Credentials object +// wrapping the Profile file provider. +func NewSharedCredentials(filename, profile string) *Credentials { + return NewCredentials(&SharedCredentialsProvider{ + Filename: filename, + Profile: profile, + }) +} + +// Retrieve reads and extracts the shared credentials from the current +// users home directory. +func (p *SharedCredentialsProvider) Retrieve() (Value, error) { + p.retrieved = false + + filename, err := p.filename() + if err != nil { + return Value{ProviderName: SharedCredsProviderName}, err + } + + creds, err := loadProfile(filename, p.profile()) + if err != nil { + return Value{ProviderName: SharedCredsProviderName}, err + } + + p.retrieved = true + return creds, nil +} + +// IsExpired returns if the shared credentials have expired. +func (p *SharedCredentialsProvider) IsExpired() bool { + return !p.retrieved +} + +// loadProfiles loads from the file pointed to by shared credentials filename for profile. +// The credentials retrieved from the profile will be returned or error. Error will be +// returned if it fails to read from the file, or the data is invalid. +func loadProfile(filename, profile string) (Value, error) { + config, err := ini.OpenFile(filename) + if err != nil { + return Value{ProviderName: SharedCredsProviderName}, awserr.New("SharedCredsLoad", "failed to load shared credentials file", err) + } + + iniProfile, ok := config.GetSection(profile) + if !ok { + return Value{ProviderName: SharedCredsProviderName}, awserr.New("SharedCredsLoad", "failed to get profile", nil) + } + + id := iniProfile.String("aws_access_key_id") + if len(id) == 0 { + return Value{ProviderName: SharedCredsProviderName}, awserr.New("SharedCredsAccessKey", + fmt.Sprintf("shared credentials %s in %s did not contain aws_access_key_id", profile, filename), + nil) + } + + secret := iniProfile.String("aws_secret_access_key") + if len(secret) == 0 { + return Value{ProviderName: SharedCredsProviderName}, awserr.New("SharedCredsSecret", + fmt.Sprintf("shared credentials %s in %s did not contain aws_secret_access_key", profile, filename), + nil) + } + + // Default to empty string if not found + token := iniProfile.String("aws_session_token") + + return Value{ + AccessKeyID: id, + SecretAccessKey: secret, + SessionToken: token, + ProviderName: SharedCredsProviderName, + }, nil +} + +// filename returns the filename to use to read AWS shared credentials. +// +// Will return an error if the user's home directory path cannot be found. +func (p *SharedCredentialsProvider) filename() (string, error) { + if len(p.Filename) != 0 { + return p.Filename, nil + } + + if p.Filename = os.Getenv("AWS_SHARED_CREDENTIALS_FILE"); len(p.Filename) != 0 { + return p.Filename, nil + } + + if home := shareddefaults.UserHomeDir(); len(home) == 0 { + // Backwards compatibility of home directly not found error being returned. + // This error is too verbose, failure when opening the file would of been + // a better error to return. + return "", ErrSharedCredentialsHomeNotFound + } + + p.Filename = shareddefaults.SharedCredentialsFilename() + + return p.Filename, nil +} + +// profile returns the AWS shared credentials profile. If empty will read +// environment variable "AWS_PROFILE". If that is not set profile will +// return "default". +func (p *SharedCredentialsProvider) profile() string { + if p.Profile == "" { + p.Profile = os.Getenv("AWS_PROFILE") + } + if p.Profile == "" { + p.Profile = "default" + } + + return p.Profile +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/static_provider.go b/vendor/github.com/aws/aws-sdk-go/aws/credentials/static_provider.go new file mode 100644 index 0000000..531139e --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/static_provider.go @@ -0,0 +1,55 @@ +package credentials + +import ( + "github.com/aws/aws-sdk-go/aws/awserr" +) + +// StaticProviderName provides a name of Static provider +const StaticProviderName = "StaticProvider" + +var ( + // ErrStaticCredentialsEmpty is emitted when static credentials are empty. + ErrStaticCredentialsEmpty = awserr.New("EmptyStaticCreds", "static credentials are empty", nil) +) + +// A StaticProvider is a set of credentials which are set programmatically, +// and will never expire. +type StaticProvider struct { + Value +} + +// NewStaticCredentials returns a pointer to a new Credentials object +// wrapping a static credentials value provider. +func NewStaticCredentials(id, secret, token string) *Credentials { + return NewCredentials(&StaticProvider{Value: Value{ + AccessKeyID: id, + SecretAccessKey: secret, + SessionToken: token, + }}) +} + +// NewStaticCredentialsFromCreds returns a pointer to a new Credentials object +// wrapping the static credentials value provide. Same as NewStaticCredentials +// but takes the creds Value instead of individual fields +func NewStaticCredentialsFromCreds(creds Value) *Credentials { + return NewCredentials(&StaticProvider{Value: creds}) +} + +// Retrieve returns the credentials or error if the credentials are invalid. +func (s *StaticProvider) Retrieve() (Value, error) { + if s.AccessKeyID == "" || s.SecretAccessKey == "" { + return Value{ProviderName: StaticProviderName}, ErrStaticCredentialsEmpty + } + + if len(s.Value.ProviderName) == 0 { + s.Value.ProviderName = StaticProviderName + } + return s.Value, nil +} + +// IsExpired returns if the credentials are expired. +// +// For StaticProvider, the credentials never expired. +func (s *StaticProvider) IsExpired() bool { + return false +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/assume_role_provider.go b/vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/assume_role_provider.go new file mode 100644 index 0000000..2e528d1 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/assume_role_provider.go @@ -0,0 +1,312 @@ +/* +Package stscreds are credential Providers to retrieve STS AWS credentials. + +STS provides multiple ways to retrieve credentials which can be used when making +future AWS service API operation calls. + +The SDK will ensure that per instance of credentials.Credentials all requests +to refresh the credentials will be synchronized. But, the SDK is unable to +ensure synchronous usage of the AssumeRoleProvider if the value is shared +between multiple Credentials, Sessions or service clients. + +Assume Role + +To assume an IAM role using STS with the SDK you can create a new Credentials +with the SDKs's stscreds package. + + // Initial credentials loaded from SDK's default credential chain. Such as + // the environment, shared credentials (~/.aws/credentials), or EC2 Instance + // Role. These credentials will be used to to make the STS Assume Role API. + sess := session.Must(session.NewSession()) + + // Create the credentials from AssumeRoleProvider to assume the role + // referenced by the "myRoleARN" ARN. + creds := stscreds.NewCredentials(sess, "myRoleArn") + + // Create service client value configured for credentials + // from assumed role. + svc := s3.New(sess, &aws.Config{Credentials: creds}) + +Assume Role with static MFA Token + +To assume an IAM role with a MFA token you can either specify a MFA token code +directly or provide a function to prompt the user each time the credentials +need to refresh the role's credentials. Specifying the TokenCode should be used +for short lived operations that will not need to be refreshed, and when you do +not want to have direct control over the user provides their MFA token. + +With TokenCode the AssumeRoleProvider will be not be able to refresh the role's +credentials. + + // Create the credentials from AssumeRoleProvider to assume the role + // referenced by the "myRoleARN" ARN using the MFA token code provided. + creds := stscreds.NewCredentials(sess, "myRoleArn", func(p *stscreds.AssumeRoleProvider) { + p.SerialNumber = aws.String("myTokenSerialNumber") + p.TokenCode = aws.String("00000000") + }) + + // Create service client value configured for credentials + // from assumed role. + svc := s3.New(sess, &aws.Config{Credentials: creds}) + +Assume Role with MFA Token Provider + +To assume an IAM role with MFA for longer running tasks where the credentials +may need to be refreshed setting the TokenProvider field of AssumeRoleProvider +will allow the credential provider to prompt for new MFA token code when the +role's credentials need to be refreshed. + +The StdinTokenProvider function is available to prompt on stdin to retrieve +the MFA token code from the user. You can also implement custom prompts by +satisfing the TokenProvider function signature. + +Using StdinTokenProvider with multiple AssumeRoleProviders, or Credentials will +have undesirable results as the StdinTokenProvider will not be synchronized. A +single Credentials with an AssumeRoleProvider can be shared safely. + + // Create the credentials from AssumeRoleProvider to assume the role + // referenced by the "myRoleARN" ARN. Prompting for MFA token from stdin. + creds := stscreds.NewCredentials(sess, "myRoleArn", func(p *stscreds.AssumeRoleProvider) { + p.SerialNumber = aws.String("myTokenSerialNumber") + p.TokenProvider = stscreds.StdinTokenProvider + }) + + // Create service client value configured for credentials + // from assumed role. + svc := s3.New(sess, &aws.Config{Credentials: creds}) + +*/ +package stscreds + +import ( + "fmt" + "os" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/client" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/internal/sdkrand" + "github.com/aws/aws-sdk-go/service/sts" +) + +// StdinTokenProvider will prompt on stderr and read from stdin for a string value. +// An error is returned if reading from stdin fails. +// +// Use this function go read MFA tokens from stdin. The function makes no attempt +// to make atomic prompts from stdin across multiple gorouties. +// +// Using StdinTokenProvider with multiple AssumeRoleProviders, or Credentials will +// have undesirable results as the StdinTokenProvider will not be synchronized. A +// single Credentials with an AssumeRoleProvider can be shared safely +// +// Will wait forever until something is provided on the stdin. +func StdinTokenProvider() (string, error) { + var v string + fmt.Fprintf(os.Stderr, "Assume Role MFA token code: ") + _, err := fmt.Scanln(&v) + + return v, err +} + +// ProviderName provides a name of AssumeRole provider +const ProviderName = "AssumeRoleProvider" + +// AssumeRoler represents the minimal subset of the STS client API used by this provider. +type AssumeRoler interface { + AssumeRole(input *sts.AssumeRoleInput) (*sts.AssumeRoleOutput, error) +} + +// DefaultDuration is the default amount of time in minutes that the credentials +// will be valid for. +var DefaultDuration = time.Duration(15) * time.Minute + +// AssumeRoleProvider retrieves temporary credentials from the STS service, and +// keeps track of their expiration time. +// +// This credential provider will be used by the SDKs default credential change +// when shared configuration is enabled, and the shared config or shared credentials +// file configure assume role. See Session docs for how to do this. +// +// AssumeRoleProvider does not provide any synchronization and it is not safe +// to share this value across multiple Credentials, Sessions, or service clients +// without also sharing the same Credentials instance. +type AssumeRoleProvider struct { + credentials.Expiry + + // STS client to make assume role request with. + Client AssumeRoler + + // Role to be assumed. + RoleARN string + + // Session name, if you wish to reuse the credentials elsewhere. + RoleSessionName string + + // Expiry duration of the STS credentials. Defaults to 15 minutes if not set. + Duration time.Duration + + // Optional ExternalID to pass along, defaults to nil if not set. + ExternalID *string + + // The policy plain text must be 2048 bytes or shorter. However, an internal + // conversion compresses it into a packed binary format with a separate limit. + // The PackedPolicySize response element indicates by percentage how close to + // the upper size limit the policy is, with 100% equaling the maximum allowed + // size. + Policy *string + + // The identification number of the MFA device that is associated with the user + // who is making the AssumeRole call. Specify this value if the trust policy + // of the role being assumed includes a condition that requires MFA authentication. + // The value is either the serial number for a hardware device (such as GAHT12345678) + // or an Amazon Resource Name (ARN) for a virtual device (such as arn:aws:iam::123456789012:mfa/user). + SerialNumber *string + + // The value provided by the MFA device, if the trust policy of the role being + // assumed requires MFA (that is, if the policy includes a condition that tests + // for MFA). If the role being assumed requires MFA and if the TokenCode value + // is missing or expired, the AssumeRole call returns an "access denied" error. + // + // If SerialNumber is set and neither TokenCode nor TokenProvider are also + // set an error will be returned. + TokenCode *string + + // Async method of providing MFA token code for assuming an IAM role with MFA. + // The value returned by the function will be used as the TokenCode in the Retrieve + // call. See StdinTokenProvider for a provider that prompts and reads from stdin. + // + // This token provider will be called when ever the assumed role's + // credentials need to be refreshed when SerialNumber is also set and + // TokenCode is not set. + // + // If both TokenCode and TokenProvider is set, TokenProvider will be used and + // TokenCode is ignored. + TokenProvider func() (string, error) + + // ExpiryWindow will allow the credentials to trigger refreshing prior to + // the credentials actually expiring. This is beneficial so race conditions + // with expiring credentials do not cause request to fail unexpectedly + // due to ExpiredTokenException exceptions. + // + // So a ExpiryWindow of 10s would cause calls to IsExpired() to return true + // 10 seconds before the credentials are actually expired. + // + // If ExpiryWindow is 0 or less it will be ignored. + ExpiryWindow time.Duration + + // MaxJitterFrac reduces the effective Duration of each credential requested + // by a random percentage between 0 and MaxJitterFraction. MaxJitterFrac must + // have a value between 0 and 1. Any other value may lead to expected behavior. + // With a MaxJitterFrac value of 0, default) will no jitter will be used. + // + // For example, with a Duration of 30m and a MaxJitterFrac of 0.1, the + // AssumeRole call will be made with an arbitrary Duration between 27m and + // 30m. + // + // MaxJitterFrac should not be negative. + MaxJitterFrac float64 +} + +// NewCredentials returns a pointer to a new Credentials object wrapping the +// AssumeRoleProvider. The credentials will expire every 15 minutes and the +// role will be named after a nanosecond timestamp of this operation. +// +// Takes a Config provider to create the STS client. The ConfigProvider is +// satisfied by the session.Session type. +// +// It is safe to share the returned Credentials with multiple Sessions and +// service clients. All access to the credentials and refreshing them +// will be synchronized. +func NewCredentials(c client.ConfigProvider, roleARN string, options ...func(*AssumeRoleProvider)) *credentials.Credentials { + p := &AssumeRoleProvider{ + Client: sts.New(c), + RoleARN: roleARN, + Duration: DefaultDuration, + } + + for _, option := range options { + option(p) + } + + return credentials.NewCredentials(p) +} + +// NewCredentialsWithClient returns a pointer to a new Credentials object wrapping the +// AssumeRoleProvider. The credentials will expire every 15 minutes and the +// role will be named after a nanosecond timestamp of this operation. +// +// Takes an AssumeRoler which can be satisfied by the STS client. +// +// It is safe to share the returned Credentials with multiple Sessions and +// service clients. All access to the credentials and refreshing them +// will be synchronized. +func NewCredentialsWithClient(svc AssumeRoler, roleARN string, options ...func(*AssumeRoleProvider)) *credentials.Credentials { + p := &AssumeRoleProvider{ + Client: svc, + RoleARN: roleARN, + Duration: DefaultDuration, + } + + for _, option := range options { + option(p) + } + + return credentials.NewCredentials(p) +} + +// Retrieve generates a new set of temporary credentials using STS. +func (p *AssumeRoleProvider) Retrieve() (credentials.Value, error) { + // Apply defaults where parameters are not set. + if p.RoleSessionName == "" { + // Try to work out a role name that will hopefully end up unique. + p.RoleSessionName = fmt.Sprintf("%d", time.Now().UTC().UnixNano()) + } + if p.Duration == 0 { + // Expire as often as AWS permits. + p.Duration = DefaultDuration + } + jitter := time.Duration(sdkrand.SeededRand.Float64() * p.MaxJitterFrac * float64(p.Duration)) + input := &sts.AssumeRoleInput{ + DurationSeconds: aws.Int64(int64((p.Duration - jitter) / time.Second)), + RoleArn: aws.String(p.RoleARN), + RoleSessionName: aws.String(p.RoleSessionName), + ExternalId: p.ExternalID, + } + if p.Policy != nil { + input.Policy = p.Policy + } + if p.SerialNumber != nil { + if p.TokenCode != nil { + input.SerialNumber = p.SerialNumber + input.TokenCode = p.TokenCode + } else if p.TokenProvider != nil { + input.SerialNumber = p.SerialNumber + code, err := p.TokenProvider() + if err != nil { + return credentials.Value{ProviderName: ProviderName}, err + } + input.TokenCode = aws.String(code) + } else { + return credentials.Value{ProviderName: ProviderName}, + awserr.New("AssumeRoleTokenNotAvailable", + "assume role with MFA enabled, but neither TokenCode nor TokenProvider are set", nil) + } + } + + roleOutput, err := p.Client.AssumeRole(input) + if err != nil { + return credentials.Value{ProviderName: ProviderName}, err + } + + // We will proactively generate new credentials before they expire. + p.SetExpiration(*roleOutput.Credentials.Expiration, p.ExpiryWindow) + + return credentials.Value{ + AccessKeyID: *roleOutput.Credentials.AccessKeyId, + SecretAccessKey: *roleOutput.Credentials.SecretAccessKey, + SessionToken: *roleOutput.Credentials.SessionToken, + ProviderName: ProviderName, + }, nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/web_identity_provider.go b/vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/web_identity_provider.go new file mode 100644 index 0000000..b20b633 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/web_identity_provider.go @@ -0,0 +1,100 @@ +package stscreds + +import ( + "fmt" + "io/ioutil" + "strconv" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/client" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/service/sts" + "github.com/aws/aws-sdk-go/service/sts/stsiface" +) + +const ( + // ErrCodeWebIdentity will be used as an error code when constructing + // a new error to be returned during session creation or retrieval. + ErrCodeWebIdentity = "WebIdentityErr" + + // WebIdentityProviderName is the web identity provider name + WebIdentityProviderName = "WebIdentityCredentials" +) + +// now is used to return a time.Time object representing +// the current time. This can be used to easily test and +// compare test values. +var now = time.Now + +// WebIdentityRoleProvider is used to retrieve credentials using +// an OIDC token. +type WebIdentityRoleProvider struct { + credentials.Expiry + + client stsiface.STSAPI + ExpiryWindow time.Duration + + tokenFilePath string + roleARN string + roleSessionName string +} + +// NewWebIdentityCredentials will return a new set of credentials with a given +// configuration, role arn, and token file path. +func NewWebIdentityCredentials(c client.ConfigProvider, roleARN, roleSessionName, path string) *credentials.Credentials { + svc := sts.New(c) + p := NewWebIdentityRoleProvider(svc, roleARN, roleSessionName, path) + return credentials.NewCredentials(p) +} + +// NewWebIdentityRoleProvider will return a new WebIdentityRoleProvider with the +// provided stsiface.STSAPI +func NewWebIdentityRoleProvider(svc stsiface.STSAPI, roleARN, roleSessionName, path string) *WebIdentityRoleProvider { + return &WebIdentityRoleProvider{ + client: svc, + tokenFilePath: path, + roleARN: roleARN, + roleSessionName: roleSessionName, + } +} + +// Retrieve will attempt to assume a role from a token which is located at +// 'WebIdentityTokenFilePath' specified destination and if that is empty an +// error will be returned. +func (p *WebIdentityRoleProvider) Retrieve() (credentials.Value, error) { + b, err := ioutil.ReadFile(p.tokenFilePath) + if err != nil { + errMsg := fmt.Sprintf("unable to read file at %s", p.tokenFilePath) + return credentials.Value{}, awserr.New(ErrCodeWebIdentity, errMsg, err) + } + + sessionName := p.roleSessionName + if len(sessionName) == 0 { + // session name is used to uniquely identify a session. This simply + // uses unix time in nanoseconds to uniquely identify sessions. + sessionName = strconv.FormatInt(now().UnixNano(), 10) + } + req, resp := p.client.AssumeRoleWithWebIdentityRequest(&sts.AssumeRoleWithWebIdentityInput{ + RoleArn: &p.roleARN, + RoleSessionName: &sessionName, + WebIdentityToken: aws.String(string(b)), + }) + // InvalidIdentityToken error is a temporary error that can occur + // when assuming an Role with a JWT web identity token. + req.RetryErrorCodes = append(req.RetryErrorCodes, sts.ErrCodeInvalidIdentityTokenException) + if err := req.Send(); err != nil { + return credentials.Value{}, awserr.New(ErrCodeWebIdentity, "failed to retrieve credentials", err) + } + + p.SetExpiration(aws.TimeValue(resp.Credentials.Expiration), p.ExpiryWindow) + + value := credentials.Value{ + AccessKeyID: aws.StringValue(resp.Credentials.AccessKeyId), + SecretAccessKey: aws.StringValue(resp.Credentials.SecretAccessKey), + SessionToken: aws.StringValue(resp.Credentials.SessionToken), + ProviderName: WebIdentityProviderName, + } + return value, nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/csm/doc.go b/vendor/github.com/aws/aws-sdk-go/aws/csm/doc.go new file mode 100644 index 0000000..25a66d1 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/csm/doc.go @@ -0,0 +1,69 @@ +// Package csm provides the Client Side Monitoring (CSM) client which enables +// sending metrics via UDP connection to the CSM agent. This package provides +// control options, and configuration for the CSM client. The client can be +// controlled manually, or automatically via the SDK's Session configuration. +// +// Enabling CSM client via SDK's Session configuration +// +// The CSM client can be enabled automatically via SDK's Session configuration. +// The SDK's session configuration enables the CSM client if the AWS_CSM_PORT +// environment variable is set to a non-empty value. +// +// The configuration options for the CSM client via the SDK's session +// configuration are: +// +// * AWS_CSM_PORT= +// The port number the CSM agent will receive metrics on. +// +// * AWS_CSM_HOST= +// The hostname, or IP address the CSM agent will receive metrics on. +// Without port number. +// +// Manually enabling the CSM client +// +// The CSM client can be started, paused, and resumed manually. The Start +// function will enable the CSM client to publish metrics to the CSM agent. It +// is safe to call Start concurrently, but if Start is called additional times +// with different ClientID or address it will panic. +// +// r, err := csm.Start("clientID", ":31000") +// if err != nil { +// panic(fmt.Errorf("failed starting CSM: %v", err)) +// } +// +// When controlling the CSM client manually, you must also inject its request +// handlers into the SDK's Session configuration for the SDK's API clients to +// publish metrics. +// +// sess, err := session.NewSession(&aws.Config{}) +// if err != nil { +// panic(fmt.Errorf("failed loading session: %v", err)) +// } +// +// // Add CSM client's metric publishing request handlers to the SDK's +// // Session Configuration. +// r.InjectHandlers(&sess.Handlers) +// +// Controlling CSM client +// +// Once the CSM client has been enabled the Get function will return a Reporter +// value that you can use to pause and resume the metrics published to the CSM +// agent. If Get function is called before the reporter is enabled with the +// Start function or via SDK's Session configuration nil will be returned. +// +// The Pause method can be called to stop the CSM client publishing metrics to +// the CSM agent. The Continue method will resume metric publishing. +// +// // Get the CSM client Reporter. +// r := csm.Get() +// +// // Will pause monitoring +// r.Pause() +// resp, err = client.GetObject(&s3.GetObjectInput{ +// Bucket: aws.String("bucket"), +// Key: aws.String("key"), +// }) +// +// // Resume monitoring +// r.Continue() +package csm diff --git a/vendor/github.com/aws/aws-sdk-go/aws/csm/enable.go b/vendor/github.com/aws/aws-sdk-go/aws/csm/enable.go new file mode 100644 index 0000000..4b19e28 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/csm/enable.go @@ -0,0 +1,89 @@ +package csm + +import ( + "fmt" + "strings" + "sync" +) + +var ( + lock sync.Mutex +) + +const ( + // DefaultPort is used when no port is specified. + DefaultPort = "31000" + + // DefaultHost is the host that will be used when none is specified. + DefaultHost = "127.0.0.1" +) + +// AddressWithDefaults returns a CSM address built from the host and port +// values. If the host or port is not set, default values will be used +// instead. If host is "localhost" it will be replaced with "127.0.0.1". +func AddressWithDefaults(host, port string) string { + if len(host) == 0 || strings.EqualFold(host, "localhost") { + host = DefaultHost + } + + if len(port) == 0 { + port = DefaultPort + } + + // Only IP6 host can contain a colon + if strings.Contains(host, ":") { + return "[" + host + "]:" + port + } + + return host + ":" + port +} + +// Start will start a long running go routine to capture +// client side metrics. Calling start multiple time will only +// start the metric listener once and will panic if a different +// client ID or port is passed in. +// +// r, err := csm.Start("clientID", "127.0.0.1:31000") +// if err != nil { +// panic(fmt.Errorf("expected no error, but received %v", err)) +// } +// sess := session.NewSession() +// r.InjectHandlers(sess.Handlers) +// +// svc := s3.New(sess) +// out, err := svc.GetObject(&s3.GetObjectInput{ +// Bucket: aws.String("bucket"), +// Key: aws.String("key"), +// }) +func Start(clientID string, url string) (*Reporter, error) { + lock.Lock() + defer lock.Unlock() + + if sender == nil { + sender = newReporter(clientID, url) + } else { + if sender.clientID != clientID { + panic(fmt.Errorf("inconsistent client IDs. %q was expected, but received %q", sender.clientID, clientID)) + } + + if sender.url != url { + panic(fmt.Errorf("inconsistent URLs. %q was expected, but received %q", sender.url, url)) + } + } + + if err := connect(url); err != nil { + sender = nil + return nil, err + } + + return sender, nil +} + +// Get will return a reporter if one exists, if one does not exist, nil will +// be returned. +func Get() *Reporter { + lock.Lock() + defer lock.Unlock() + + return sender +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/csm/metric.go b/vendor/github.com/aws/aws-sdk-go/aws/csm/metric.go new file mode 100644 index 0000000..5bacc79 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/csm/metric.go @@ -0,0 +1,109 @@ +package csm + +import ( + "strconv" + "time" + + "github.com/aws/aws-sdk-go/aws" +) + +type metricTime time.Time + +func (t metricTime) MarshalJSON() ([]byte, error) { + ns := time.Duration(time.Time(t).UnixNano()) + return []byte(strconv.FormatInt(int64(ns/time.Millisecond), 10)), nil +} + +type metric struct { + ClientID *string `json:"ClientId,omitempty"` + API *string `json:"Api,omitempty"` + Service *string `json:"Service,omitempty"` + Timestamp *metricTime `json:"Timestamp,omitempty"` + Type *string `json:"Type,omitempty"` + Version *int `json:"Version,omitempty"` + + AttemptCount *int `json:"AttemptCount,omitempty"` + Latency *int `json:"Latency,omitempty"` + + Fqdn *string `json:"Fqdn,omitempty"` + UserAgent *string `json:"UserAgent,omitempty"` + AttemptLatency *int `json:"AttemptLatency,omitempty"` + + SessionToken *string `json:"SessionToken,omitempty"` + Region *string `json:"Region,omitempty"` + AccessKey *string `json:"AccessKey,omitempty"` + HTTPStatusCode *int `json:"HttpStatusCode,omitempty"` + XAmzID2 *string `json:"XAmzId2,omitempty"` + XAmzRequestID *string `json:"XAmznRequestId,omitempty"` + + AWSException *string `json:"AwsException,omitempty"` + AWSExceptionMessage *string `json:"AwsExceptionMessage,omitempty"` + SDKException *string `json:"SdkException,omitempty"` + SDKExceptionMessage *string `json:"SdkExceptionMessage,omitempty"` + + FinalHTTPStatusCode *int `json:"FinalHttpStatusCode,omitempty"` + FinalAWSException *string `json:"FinalAwsException,omitempty"` + FinalAWSExceptionMessage *string `json:"FinalAwsExceptionMessage,omitempty"` + FinalSDKException *string `json:"FinalSdkException,omitempty"` + FinalSDKExceptionMessage *string `json:"FinalSdkExceptionMessage,omitempty"` + + DestinationIP *string `json:"DestinationIp,omitempty"` + ConnectionReused *int `json:"ConnectionReused,omitempty"` + + AcquireConnectionLatency *int `json:"AcquireConnectionLatency,omitempty"` + ConnectLatency *int `json:"ConnectLatency,omitempty"` + RequestLatency *int `json:"RequestLatency,omitempty"` + DNSLatency *int `json:"DnsLatency,omitempty"` + TCPLatency *int `json:"TcpLatency,omitempty"` + SSLLatency *int `json:"SslLatency,omitempty"` + + MaxRetriesExceeded *int `json:"MaxRetriesExceeded,omitempty"` +} + +func (m *metric) TruncateFields() { + m.ClientID = truncateString(m.ClientID, 255) + m.UserAgent = truncateString(m.UserAgent, 256) + + m.AWSException = truncateString(m.AWSException, 128) + m.AWSExceptionMessage = truncateString(m.AWSExceptionMessage, 512) + + m.SDKException = truncateString(m.SDKException, 128) + m.SDKExceptionMessage = truncateString(m.SDKExceptionMessage, 512) + + m.FinalAWSException = truncateString(m.FinalAWSException, 128) + m.FinalAWSExceptionMessage = truncateString(m.FinalAWSExceptionMessage, 512) + + m.FinalSDKException = truncateString(m.FinalSDKException, 128) + m.FinalSDKExceptionMessage = truncateString(m.FinalSDKExceptionMessage, 512) +} + +func truncateString(v *string, l int) *string { + if v != nil && len(*v) > l { + nv := (*v)[:l] + return &nv + } + + return v +} + +func (m *metric) SetException(e metricException) { + switch te := e.(type) { + case awsException: + m.AWSException = aws.String(te.exception) + m.AWSExceptionMessage = aws.String(te.message) + case sdkException: + m.SDKException = aws.String(te.exception) + m.SDKExceptionMessage = aws.String(te.message) + } +} + +func (m *metric) SetFinalException(e metricException) { + switch te := e.(type) { + case awsException: + m.FinalAWSException = aws.String(te.exception) + m.FinalAWSExceptionMessage = aws.String(te.message) + case sdkException: + m.FinalSDKException = aws.String(te.exception) + m.FinalSDKExceptionMessage = aws.String(te.message) + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/csm/metric_chan.go b/vendor/github.com/aws/aws-sdk-go/aws/csm/metric_chan.go new file mode 100644 index 0000000..82a3e34 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/csm/metric_chan.go @@ -0,0 +1,55 @@ +package csm + +import ( + "sync/atomic" +) + +const ( + runningEnum = iota + pausedEnum +) + +var ( + // MetricsChannelSize of metrics to hold in the channel + MetricsChannelSize = 100 +) + +type metricChan struct { + ch chan metric + paused *int64 +} + +func newMetricChan(size int) metricChan { + return metricChan{ + ch: make(chan metric, size), + paused: new(int64), + } +} + +func (ch *metricChan) Pause() { + atomic.StoreInt64(ch.paused, pausedEnum) +} + +func (ch *metricChan) Continue() { + atomic.StoreInt64(ch.paused, runningEnum) +} + +func (ch *metricChan) IsPaused() bool { + v := atomic.LoadInt64(ch.paused) + return v == pausedEnum +} + +// Push will push metrics to the metric channel if the channel +// is not paused +func (ch *metricChan) Push(m metric) bool { + if ch.IsPaused() { + return false + } + + select { + case ch.ch <- m: + return true + default: + return false + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/csm/metric_exception.go b/vendor/github.com/aws/aws-sdk-go/aws/csm/metric_exception.go new file mode 100644 index 0000000..54a9928 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/csm/metric_exception.go @@ -0,0 +1,26 @@ +package csm + +type metricException interface { + Exception() string + Message() string +} + +type requestException struct { + exception string + message string +} + +func (e requestException) Exception() string { + return e.exception +} +func (e requestException) Message() string { + return e.message +} + +type awsException struct { + requestException +} + +type sdkException struct { + requestException +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/csm/reporter.go b/vendor/github.com/aws/aws-sdk-go/aws/csm/reporter.go new file mode 100644 index 0000000..9186587 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/csm/reporter.go @@ -0,0 +1,264 @@ +package csm + +import ( + "encoding/json" + "net" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/request" +) + +// Reporter will gather metrics of API requests made and +// send those metrics to the CSM endpoint. +type Reporter struct { + clientID string + url string + conn net.Conn + metricsCh metricChan + done chan struct{} +} + +var ( + sender *Reporter +) + +func connect(url string) error { + const network = "udp" + if err := sender.connect(network, url); err != nil { + return err + } + + if sender.done == nil { + sender.done = make(chan struct{}) + go sender.start() + } + + return nil +} + +func newReporter(clientID, url string) *Reporter { + return &Reporter{ + clientID: clientID, + url: url, + metricsCh: newMetricChan(MetricsChannelSize), + } +} + +func (rep *Reporter) sendAPICallAttemptMetric(r *request.Request) { + if rep == nil { + return + } + + now := time.Now() + creds, _ := r.Config.Credentials.Get() + + m := metric{ + ClientID: aws.String(rep.clientID), + API: aws.String(r.Operation.Name), + Service: aws.String(r.ClientInfo.ServiceID), + Timestamp: (*metricTime)(&now), + UserAgent: aws.String(r.HTTPRequest.Header.Get("User-Agent")), + Region: r.Config.Region, + Type: aws.String("ApiCallAttempt"), + Version: aws.Int(1), + + XAmzRequestID: aws.String(r.RequestID), + + AttemptLatency: aws.Int(int(now.Sub(r.AttemptTime).Nanoseconds() / int64(time.Millisecond))), + AccessKey: aws.String(creds.AccessKeyID), + } + + if r.HTTPResponse != nil { + m.HTTPStatusCode = aws.Int(r.HTTPResponse.StatusCode) + } + + if r.Error != nil { + if awserr, ok := r.Error.(awserr.Error); ok { + m.SetException(getMetricException(awserr)) + } + } + + m.TruncateFields() + rep.metricsCh.Push(m) +} + +func getMetricException(err awserr.Error) metricException { + msg := err.Error() + code := err.Code() + + switch code { + case "RequestError", + request.ErrCodeSerialization, + request.CanceledErrorCode: + return sdkException{ + requestException{exception: code, message: msg}, + } + default: + return awsException{ + requestException{exception: code, message: msg}, + } + } +} + +func (rep *Reporter) sendAPICallMetric(r *request.Request) { + if rep == nil { + return + } + + now := time.Now() + m := metric{ + ClientID: aws.String(rep.clientID), + API: aws.String(r.Operation.Name), + Service: aws.String(r.ClientInfo.ServiceID), + Timestamp: (*metricTime)(&now), + UserAgent: aws.String(r.HTTPRequest.Header.Get("User-Agent")), + Type: aws.String("ApiCall"), + AttemptCount: aws.Int(r.RetryCount + 1), + Region: r.Config.Region, + Latency: aws.Int(int(time.Since(r.Time) / time.Millisecond)), + XAmzRequestID: aws.String(r.RequestID), + MaxRetriesExceeded: aws.Int(boolIntValue(r.RetryCount >= r.MaxRetries())), + } + + if r.HTTPResponse != nil { + m.FinalHTTPStatusCode = aws.Int(r.HTTPResponse.StatusCode) + } + + if r.Error != nil { + if awserr, ok := r.Error.(awserr.Error); ok { + m.SetFinalException(getMetricException(awserr)) + } + } + + m.TruncateFields() + + // TODO: Probably want to figure something out for logging dropped + // metrics + rep.metricsCh.Push(m) +} + +func (rep *Reporter) connect(network, url string) error { + if rep.conn != nil { + rep.conn.Close() + } + + conn, err := net.Dial(network, url) + if err != nil { + return awserr.New("UDPError", "Could not connect", err) + } + + rep.conn = conn + + return nil +} + +func (rep *Reporter) close() { + if rep.done != nil { + close(rep.done) + } + + rep.metricsCh.Pause() +} + +func (rep *Reporter) start() { + defer func() { + rep.metricsCh.Pause() + }() + + for { + select { + case <-rep.done: + rep.done = nil + return + case m := <-rep.metricsCh.ch: + // TODO: What to do with this error? Probably should just log + b, err := json.Marshal(m) + if err != nil { + continue + } + + rep.conn.Write(b) + } + } +} + +// Pause will pause the metric channel preventing any new metrics from being +// added. It is safe to call concurrently with other calls to Pause, but if +// called concurently with Continue can lead to unexpected state. +func (rep *Reporter) Pause() { + lock.Lock() + defer lock.Unlock() + + if rep == nil { + return + } + + rep.close() +} + +// Continue will reopen the metric channel and allow for monitoring to be +// resumed. It is safe to call concurrently with other calls to Continue, but +// if called concurently with Pause can lead to unexpected state. +func (rep *Reporter) Continue() { + lock.Lock() + defer lock.Unlock() + if rep == nil { + return + } + + if !rep.metricsCh.IsPaused() { + return + } + + rep.metricsCh.Continue() +} + +// Client side metric handler names +const ( + APICallMetricHandlerName = "awscsm.SendAPICallMetric" + APICallAttemptMetricHandlerName = "awscsm.SendAPICallAttemptMetric" +) + +// InjectHandlers will will enable client side metrics and inject the proper +// handlers to handle how metrics are sent. +// +// InjectHandlers is NOT safe to call concurrently. Calling InjectHandlers +// multiple times may lead to unexpected behavior, (e.g. duplicate metrics). +// +// // Start must be called in order to inject the correct handlers +// r, err := csm.Start("clientID", "127.0.0.1:8094") +// if err != nil { +// panic(fmt.Errorf("expected no error, but received %v", err)) +// } +// +// sess := session.NewSession() +// r.InjectHandlers(&sess.Handlers) +// +// // create a new service client with our client side metric session +// svc := s3.New(sess) +func (rep *Reporter) InjectHandlers(handlers *request.Handlers) { + if rep == nil { + return + } + + handlers.Complete.PushFrontNamed(request.NamedHandler{ + Name: APICallMetricHandlerName, + Fn: rep.sendAPICallMetric, + }) + + handlers.CompleteAttempt.PushFrontNamed(request.NamedHandler{ + Name: APICallAttemptMetricHandlerName, + Fn: rep.sendAPICallAttemptMetric, + }) +} + +// boolIntValue return 1 for true and 0 for false. +func boolIntValue(b bool) int { + if b { + return 1 + } + + return 0 +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/defaults/defaults.go b/vendor/github.com/aws/aws-sdk-go/aws/defaults/defaults.go new file mode 100644 index 0000000..23bb639 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/defaults/defaults.go @@ -0,0 +1,207 @@ +// Package defaults is a collection of helpers to retrieve the SDK's default +// configuration and handlers. +// +// Generally this package shouldn't be used directly, but session.Session +// instead. This package is useful when you need to reset the defaults +// of a session or service client to the SDK defaults before setting +// additional parameters. +package defaults + +import ( + "fmt" + "net" + "net/http" + "net/url" + "os" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/corehandlers" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds" + "github.com/aws/aws-sdk-go/aws/credentials/endpointcreds" + "github.com/aws/aws-sdk-go/aws/ec2metadata" + "github.com/aws/aws-sdk-go/aws/endpoints" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/internal/shareddefaults" +) + +// A Defaults provides a collection of default values for SDK clients. +type Defaults struct { + Config *aws.Config + Handlers request.Handlers +} + +// Get returns the SDK's default values with Config and handlers pre-configured. +func Get() Defaults { + cfg := Config() + handlers := Handlers() + cfg.Credentials = CredChain(cfg, handlers) + + return Defaults{ + Config: cfg, + Handlers: handlers, + } +} + +// Config returns the default configuration without credentials. +// To retrieve a config with credentials also included use +// `defaults.Get().Config` instead. +// +// Generally you shouldn't need to use this method directly, but +// is available if you need to reset the configuration of an +// existing service client or session. +func Config() *aws.Config { + return aws.NewConfig(). + WithCredentials(credentials.AnonymousCredentials). + WithRegion(os.Getenv("AWS_REGION")). + WithHTTPClient(http.DefaultClient). + WithMaxRetries(aws.UseServiceDefaultRetries). + WithLogger(aws.NewDefaultLogger()). + WithLogLevel(aws.LogOff). + WithEndpointResolver(endpoints.DefaultResolver()) +} + +// Handlers returns the default request handlers. +// +// Generally you shouldn't need to use this method directly, but +// is available if you need to reset the request handlers of an +// existing service client or session. +func Handlers() request.Handlers { + var handlers request.Handlers + + handlers.Validate.PushBackNamed(corehandlers.ValidateEndpointHandler) + handlers.Validate.AfterEachFn = request.HandlerListStopOnError + handlers.Build.PushBackNamed(corehandlers.SDKVersionUserAgentHandler) + handlers.Build.PushBackNamed(corehandlers.AddHostExecEnvUserAgentHander) + handlers.Build.AfterEachFn = request.HandlerListStopOnError + handlers.Sign.PushBackNamed(corehandlers.BuildContentLengthHandler) + handlers.Send.PushBackNamed(corehandlers.ValidateReqSigHandler) + handlers.Send.PushBackNamed(corehandlers.SendHandler) + handlers.AfterRetry.PushBackNamed(corehandlers.AfterRetryHandler) + handlers.ValidateResponse.PushBackNamed(corehandlers.ValidateResponseHandler) + + return handlers +} + +// CredChain returns the default credential chain. +// +// Generally you shouldn't need to use this method directly, but +// is available if you need to reset the credentials of an +// existing service client or session's Config. +func CredChain(cfg *aws.Config, handlers request.Handlers) *credentials.Credentials { + return credentials.NewCredentials(&credentials.ChainProvider{ + VerboseErrors: aws.BoolValue(cfg.CredentialsChainVerboseErrors), + Providers: CredProviders(cfg, handlers), + }) +} + +// CredProviders returns the slice of providers used in +// the default credential chain. +// +// For applications that need to use some other provider (for example use +// different environment variables for legacy reasons) but still fall back +// on the default chain of providers. This allows that default chaint to be +// automatically updated +func CredProviders(cfg *aws.Config, handlers request.Handlers) []credentials.Provider { + return []credentials.Provider{ + &credentials.EnvProvider{}, + &credentials.SharedCredentialsProvider{Filename: "", Profile: ""}, + RemoteCredProvider(*cfg, handlers), + } +} + +const ( + httpProviderAuthorizationEnvVar = "AWS_CONTAINER_AUTHORIZATION_TOKEN" + httpProviderEnvVar = "AWS_CONTAINER_CREDENTIALS_FULL_URI" +) + +// RemoteCredProvider returns a credentials provider for the default remote +// endpoints such as EC2 or ECS Roles. +func RemoteCredProvider(cfg aws.Config, handlers request.Handlers) credentials.Provider { + if u := os.Getenv(httpProviderEnvVar); len(u) > 0 { + return localHTTPCredProvider(cfg, handlers, u) + } + + if uri := os.Getenv(shareddefaults.ECSCredsProviderEnvVar); len(uri) > 0 { + u := fmt.Sprintf("%s%s", shareddefaults.ECSContainerCredentialsURI, uri) + return httpCredProvider(cfg, handlers, u) + } + + return ec2RoleProvider(cfg, handlers) +} + +var lookupHostFn = net.LookupHost + +func isLoopbackHost(host string) (bool, error) { + ip := net.ParseIP(host) + if ip != nil { + return ip.IsLoopback(), nil + } + + // Host is not an ip, perform lookup + addrs, err := lookupHostFn(host) + if err != nil { + return false, err + } + for _, addr := range addrs { + if !net.ParseIP(addr).IsLoopback() { + return false, nil + } + } + + return true, nil +} + +func localHTTPCredProvider(cfg aws.Config, handlers request.Handlers, u string) credentials.Provider { + var errMsg string + + parsed, err := url.Parse(u) + if err != nil { + errMsg = fmt.Sprintf("invalid URL, %v", err) + } else { + host := aws.URLHostname(parsed) + if len(host) == 0 { + errMsg = "unable to parse host from local HTTP cred provider URL" + } else if isLoopback, loopbackErr := isLoopbackHost(host); loopbackErr != nil { + errMsg = fmt.Sprintf("failed to resolve host %q, %v", host, loopbackErr) + } else if !isLoopback { + errMsg = fmt.Sprintf("invalid endpoint host, %q, only loopback hosts are allowed.", host) + } + } + + if len(errMsg) > 0 { + if cfg.Logger != nil { + cfg.Logger.Log("Ignoring, HTTP credential provider", errMsg, err) + } + return credentials.ErrorProvider{ + Err: awserr.New("CredentialsEndpointError", errMsg, err), + ProviderName: endpointcreds.ProviderName, + } + } + + return httpCredProvider(cfg, handlers, u) +} + +func httpCredProvider(cfg aws.Config, handlers request.Handlers, u string) credentials.Provider { + return endpointcreds.NewProviderClient(cfg, handlers, u, + func(p *endpointcreds.Provider) { + p.ExpiryWindow = 5 * time.Minute + p.AuthorizationToken = os.Getenv(httpProviderAuthorizationEnvVar) + }, + ) +} + +func ec2RoleProvider(cfg aws.Config, handlers request.Handlers) credentials.Provider { + resolver := cfg.EndpointResolver + if resolver == nil { + resolver = endpoints.DefaultResolver() + } + + e, _ := resolver.EndpointFor(endpoints.Ec2metadataServiceID, "") + return &ec2rolecreds.EC2RoleProvider{ + Client: ec2metadata.NewClient(cfg, handlers, e.URL, e.SigningRegion), + ExpiryWindow: 5 * time.Minute, + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/defaults/shared_config.go b/vendor/github.com/aws/aws-sdk-go/aws/defaults/shared_config.go new file mode 100644 index 0000000..ca0ee1d --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/defaults/shared_config.go @@ -0,0 +1,27 @@ +package defaults + +import ( + "github.com/aws/aws-sdk-go/internal/shareddefaults" +) + +// SharedCredentialsFilename returns the SDK's default file path +// for the shared credentials file. +// +// Builds the shared config file path based on the OS's platform. +// +// - Linux/Unix: $HOME/.aws/credentials +// - Windows: %USERPROFILE%\.aws\credentials +func SharedCredentialsFilename() string { + return shareddefaults.SharedCredentialsFilename() +} + +// SharedConfigFilename returns the SDK's default file path for +// the shared config file. +// +// Builds the shared config file path based on the OS's platform. +// +// - Linux/Unix: $HOME/.aws/config +// - Windows: %USERPROFILE%\.aws\config +func SharedConfigFilename() string { + return shareddefaults.SharedConfigFilename() +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/doc.go b/vendor/github.com/aws/aws-sdk-go/aws/doc.go new file mode 100644 index 0000000..4fcb616 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/doc.go @@ -0,0 +1,56 @@ +// Package aws provides the core SDK's utilities and shared types. Use this package's +// utilities to simplify setting and reading API operations parameters. +// +// Value and Pointer Conversion Utilities +// +// This package includes a helper conversion utility for each scalar type the SDK's +// API use. These utilities make getting a pointer of the scalar, and dereferencing +// a pointer easier. +// +// Each conversion utility comes in two forms. Value to Pointer and Pointer to Value. +// The Pointer to value will safely dereference the pointer and return its value. +// If the pointer was nil, the scalar's zero value will be returned. +// +// The value to pointer functions will be named after the scalar type. So get a +// *string from a string value use the "String" function. This makes it easy to +// to get pointer of a literal string value, because getting the address of a +// literal requires assigning the value to a variable first. +// +// var strPtr *string +// +// // Without the SDK's conversion functions +// str := "my string" +// strPtr = &str +// +// // With the SDK's conversion functions +// strPtr = aws.String("my string") +// +// // Convert *string to string value +// str = aws.StringValue(strPtr) +// +// In addition to scalars the aws package also includes conversion utilities for +// map and slice for commonly types used in API parameters. The map and slice +// conversion functions use similar naming pattern as the scalar conversion +// functions. +// +// var strPtrs []*string +// var strs []string = []string{"Go", "Gophers", "Go"} +// +// // Convert []string to []*string +// strPtrs = aws.StringSlice(strs) +// +// // Convert []*string to []string +// strs = aws.StringValueSlice(strPtrs) +// +// SDK Default HTTP Client +// +// The SDK will use the http.DefaultClient if a HTTP client is not provided to +// the SDK's Session, or service client constructor. This means that if the +// http.DefaultClient is modified by other components of your application the +// modifications will be picked up by the SDK as well. +// +// In some cases this might be intended, but it is a better practice to create +// a custom HTTP Client to share explicitly through your application. You can +// configure the SDK to use the custom HTTP Client by setting the HTTPClient +// value of the SDK's Config type when creating a Session or service client. +package aws diff --git a/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go b/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go new file mode 100644 index 0000000..d126764 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go @@ -0,0 +1,170 @@ +package ec2metadata + +import ( + "encoding/json" + "fmt" + "net/http" + "strings" + "time" + + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/internal/sdkuri" +) + +// GetMetadata uses the path provided to request information from the EC2 +// instance metdata service. The content will be returned as a string, or +// error if the request failed. +func (c *EC2Metadata) GetMetadata(p string) (string, error) { + op := &request.Operation{ + Name: "GetMetadata", + HTTPMethod: "GET", + HTTPPath: sdkuri.PathJoin("/meta-data", p), + } + + output := &metadataOutput{} + req := c.NewRequest(op, nil, output) + err := req.Send() + + return output.Content, err +} + +// GetUserData returns the userdata that was configured for the service. If +// there is no user-data setup for the EC2 instance a "NotFoundError" error +// code will be returned. +func (c *EC2Metadata) GetUserData() (string, error) { + op := &request.Operation{ + Name: "GetUserData", + HTTPMethod: "GET", + HTTPPath: "/user-data", + } + + output := &metadataOutput{} + req := c.NewRequest(op, nil, output) + req.Handlers.UnmarshalError.PushBack(func(r *request.Request) { + if r.HTTPResponse.StatusCode == http.StatusNotFound { + r.Error = awserr.New("NotFoundError", "user-data not found", r.Error) + } + }) + err := req.Send() + + return output.Content, err +} + +// GetDynamicData uses the path provided to request information from the EC2 +// instance metadata service for dynamic data. The content will be returned +// as a string, or error if the request failed. +func (c *EC2Metadata) GetDynamicData(p string) (string, error) { + op := &request.Operation{ + Name: "GetDynamicData", + HTTPMethod: "GET", + HTTPPath: sdkuri.PathJoin("/dynamic", p), + } + + output := &metadataOutput{} + req := c.NewRequest(op, nil, output) + err := req.Send() + + return output.Content, err +} + +// GetInstanceIdentityDocument retrieves an identity document describing an +// instance. Error is returned if the request fails or is unable to parse +// the response. +func (c *EC2Metadata) GetInstanceIdentityDocument() (EC2InstanceIdentityDocument, error) { + resp, err := c.GetDynamicData("instance-identity/document") + if err != nil { + return EC2InstanceIdentityDocument{}, + awserr.New("EC2MetadataRequestError", + "failed to get EC2 instance identity document", err) + } + + doc := EC2InstanceIdentityDocument{} + if err := json.NewDecoder(strings.NewReader(resp)).Decode(&doc); err != nil { + return EC2InstanceIdentityDocument{}, + awserr.New(request.ErrCodeSerialization, + "failed to decode EC2 instance identity document", err) + } + + return doc, nil +} + +// IAMInfo retrieves IAM info from the metadata API +func (c *EC2Metadata) IAMInfo() (EC2IAMInfo, error) { + resp, err := c.GetMetadata("iam/info") + if err != nil { + return EC2IAMInfo{}, + awserr.New("EC2MetadataRequestError", + "failed to get EC2 IAM info", err) + } + + info := EC2IAMInfo{} + if err := json.NewDecoder(strings.NewReader(resp)).Decode(&info); err != nil { + return EC2IAMInfo{}, + awserr.New(request.ErrCodeSerialization, + "failed to decode EC2 IAM info", err) + } + + if info.Code != "Success" { + errMsg := fmt.Sprintf("failed to get EC2 IAM Info (%s)", info.Code) + return EC2IAMInfo{}, + awserr.New("EC2MetadataError", errMsg, nil) + } + + return info, nil +} + +// Region returns the region the instance is running in. +func (c *EC2Metadata) Region() (string, error) { + resp, err := c.GetMetadata("placement/availability-zone") + if err != nil { + return "", err + } + + if len(resp) == 0 { + return "", awserr.New("EC2MetadataError", "invalid Region response", nil) + } + + // returns region without the suffix. Eg: us-west-2a becomes us-west-2 + return resp[:len(resp)-1], nil +} + +// Available returns if the application has access to the EC2 Metadata service. +// Can be used to determine if application is running within an EC2 Instance and +// the metadata service is available. +func (c *EC2Metadata) Available() bool { + if _, err := c.GetMetadata("instance-id"); err != nil { + return false + } + + return true +} + +// An EC2IAMInfo provides the shape for unmarshaling +// an IAM info from the metadata API +type EC2IAMInfo struct { + Code string + LastUpdated time.Time + InstanceProfileArn string + InstanceProfileID string +} + +// An EC2InstanceIdentityDocument provides the shape for unmarshaling +// an instance identity document +type EC2InstanceIdentityDocument struct { + DevpayProductCodes []string `json:"devpayProductCodes"` + MarketplaceProductCodes []string `json:"marketplaceProductCodes"` + AvailabilityZone string `json:"availabilityZone"` + PrivateIP string `json:"privateIp"` + Version string `json:"version"` + Region string `json:"region"` + InstanceID string `json:"instanceId"` + BillingProducts []string `json:"billingProducts"` + InstanceType string `json:"instanceType"` + AccountID string `json:"accountId"` + PendingTime time.Time `json:"pendingTime"` + ImageID string `json:"imageId"` + KernelID string `json:"kernelId"` + RamdiskID string `json:"ramdiskId"` + Architecture string `json:"architecture"` +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go b/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go new file mode 100644 index 0000000..4c5636e --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go @@ -0,0 +1,152 @@ +// Package ec2metadata provides the client for making API calls to the +// EC2 Metadata service. +// +// This package's client can be disabled completely by setting the environment +// variable "AWS_EC2_METADATA_DISABLED=true". This environment variable set to +// true instructs the SDK to disable the EC2 Metadata client. The client cannot +// be used while the environment variable is set to true, (case insensitive). +package ec2metadata + +import ( + "bytes" + "errors" + "io" + "net/http" + "os" + "strings" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/client" + "github.com/aws/aws-sdk-go/aws/client/metadata" + "github.com/aws/aws-sdk-go/aws/corehandlers" + "github.com/aws/aws-sdk-go/aws/request" +) + +// ServiceName is the name of the service. +const ServiceName = "ec2metadata" +const disableServiceEnvVar = "AWS_EC2_METADATA_DISABLED" + +// A EC2Metadata is an EC2 Metadata service Client. +type EC2Metadata struct { + *client.Client +} + +// New creates a new instance of the EC2Metadata client with a session. +// This client is safe to use across multiple goroutines. +// +// +// Example: +// // Create a EC2Metadata client from just a session. +// svc := ec2metadata.New(mySession) +// +// // Create a EC2Metadata client with additional configuration +// svc := ec2metadata.New(mySession, aws.NewConfig().WithLogLevel(aws.LogDebugHTTPBody)) +func New(p client.ConfigProvider, cfgs ...*aws.Config) *EC2Metadata { + c := p.ClientConfig(ServiceName, cfgs...) + return NewClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion) +} + +// NewClient returns a new EC2Metadata client. Should be used to create +// a client when not using a session. Generally using just New with a session +// is preferred. +// +// If an unmodified HTTP client is provided from the stdlib default, or no client +// the EC2RoleProvider's EC2Metadata HTTP client's timeout will be shortened. +// To disable this set Config.EC2MetadataDisableTimeoutOverride to false. Enabled by default. +func NewClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string, opts ...func(*client.Client)) *EC2Metadata { + if !aws.BoolValue(cfg.EC2MetadataDisableTimeoutOverride) && httpClientZero(cfg.HTTPClient) { + // If the http client is unmodified and this feature is not disabled + // set custom timeouts for EC2Metadata requests. + cfg.HTTPClient = &http.Client{ + // use a shorter timeout than default because the metadata + // service is local if it is running, and to fail faster + // if not running on an ec2 instance. + Timeout: 5 * time.Second, + } + } + + svc := &EC2Metadata{ + Client: client.New( + cfg, + metadata.ClientInfo{ + ServiceName: ServiceName, + ServiceID: ServiceName, + Endpoint: endpoint, + APIVersion: "latest", + }, + handlers, + ), + } + + svc.Handlers.Unmarshal.PushBack(unmarshalHandler) + svc.Handlers.UnmarshalError.PushBack(unmarshalError) + svc.Handlers.Validate.Clear() + svc.Handlers.Validate.PushBack(validateEndpointHandler) + + // Disable the EC2 Metadata service if the environment variable is set. + // This shortcirctes the service's functionality to always fail to send + // requests. + if strings.ToLower(os.Getenv(disableServiceEnvVar)) == "true" { + svc.Handlers.Send.SwapNamed(request.NamedHandler{ + Name: corehandlers.SendHandler.Name, + Fn: func(r *request.Request) { + r.HTTPResponse = &http.Response{ + Header: http.Header{}, + } + r.Error = awserr.New( + request.CanceledErrorCode, + "EC2 IMDS access disabled via "+disableServiceEnvVar+" env var", + nil) + }, + }) + } + + // Add additional options to the service config + for _, option := range opts { + option(svc.Client) + } + + return svc +} + +func httpClientZero(c *http.Client) bool { + return c == nil || (c.Transport == nil && c.CheckRedirect == nil && c.Jar == nil && c.Timeout == 0) +} + +type metadataOutput struct { + Content string +} + +func unmarshalHandler(r *request.Request) { + defer r.HTTPResponse.Body.Close() + b := &bytes.Buffer{} + if _, err := io.Copy(b, r.HTTPResponse.Body); err != nil { + r.Error = awserr.New(request.ErrCodeSerialization, "unable to unmarshal EC2 metadata response", err) + return + } + + if data, ok := r.Data.(*metadataOutput); ok { + data.Content = b.String() + } +} + +func unmarshalError(r *request.Request) { + defer r.HTTPResponse.Body.Close() + b := &bytes.Buffer{} + if _, err := io.Copy(b, r.HTTPResponse.Body); err != nil { + r.Error = awserr.New(request.ErrCodeSerialization, "unable to unmarshal EC2 metadata error response", err) + return + } + + // Response body format is not consistent between metadata endpoints. + // Grab the error message as a string and include that as the source error + r.Error = awserr.New("EC2MetadataError", "failed to make EC2Metadata request", errors.New(b.String())) +} + +func validateEndpointHandler(r *request.Request) { + if r.ClientInfo.Endpoint == "" { + r.Error = aws.ErrMissingEndpoint + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/decode.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/decode.go new file mode 100644 index 0000000..343a210 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/decode.go @@ -0,0 +1,216 @@ +package endpoints + +import ( + "encoding/json" + "fmt" + "io" + + "github.com/aws/aws-sdk-go/aws/awserr" +) + +type modelDefinition map[string]json.RawMessage + +// A DecodeModelOptions are the options for how the endpoints model definition +// are decoded. +type DecodeModelOptions struct { + SkipCustomizations bool +} + +// Set combines all of the option functions together. +func (d *DecodeModelOptions) Set(optFns ...func(*DecodeModelOptions)) { + for _, fn := range optFns { + fn(d) + } +} + +// DecodeModel unmarshals a Regions and Endpoint model definition file into +// a endpoint Resolver. If the file format is not supported, or an error occurs +// when unmarshaling the model an error will be returned. +// +// Casting the return value of this func to a EnumPartitions will +// allow you to get a list of the partitions in the order the endpoints +// will be resolved in. +// +// resolver, err := endpoints.DecodeModel(reader) +// +// partitions := resolver.(endpoints.EnumPartitions).Partitions() +// for _, p := range partitions { +// // ... inspect partitions +// } +func DecodeModel(r io.Reader, optFns ...func(*DecodeModelOptions)) (Resolver, error) { + var opts DecodeModelOptions + opts.Set(optFns...) + + // Get the version of the partition file to determine what + // unmarshaling model to use. + modelDef := modelDefinition{} + if err := json.NewDecoder(r).Decode(&modelDef); err != nil { + return nil, newDecodeModelError("failed to decode endpoints model", err) + } + + var version string + if b, ok := modelDef["version"]; ok { + version = string(b) + } else { + return nil, newDecodeModelError("endpoints version not found in model", nil) + } + + if version == "3" { + return decodeV3Endpoints(modelDef, opts) + } + + return nil, newDecodeModelError( + fmt.Sprintf("endpoints version %s, not supported", version), nil) +} + +func decodeV3Endpoints(modelDef modelDefinition, opts DecodeModelOptions) (Resolver, error) { + b, ok := modelDef["partitions"] + if !ok { + return nil, newDecodeModelError("endpoints model missing partitions", nil) + } + + ps := partitions{} + if err := json.Unmarshal(b, &ps); err != nil { + return nil, newDecodeModelError("failed to decode endpoints model", err) + } + + if opts.SkipCustomizations { + return ps, nil + } + + // Customization + for i := 0; i < len(ps); i++ { + p := &ps[i] + custAddEC2Metadata(p) + custAddS3DualStack(p) + custRegionalS3(p) + custRmIotDataService(p) + custFixAppAutoscalingChina(p) + custFixAppAutoscalingUsGov(p) + } + + return ps, nil +} + +func custAddS3DualStack(p *partition) { + if p.ID != "aws" { + return + } + + custAddDualstack(p, "s3") + custAddDualstack(p, "s3-control") +} + +func custRegionalS3(p *partition) { + if p.ID != "aws" { + return + } + + service, ok := p.Services["s3"] + if !ok { + return + } + + // If global endpoint already exists no customization needed. + if _, ok := service.Endpoints["aws-global"]; ok { + return + } + + service.PartitionEndpoint = "aws-global" + service.Endpoints["us-east-1"] = endpoint{} + service.Endpoints["aws-global"] = endpoint{ + Hostname: "s3.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + } + + p.Services["s3"] = service +} + +func custAddDualstack(p *partition, svcName string) { + s, ok := p.Services[svcName] + if !ok { + return + } + + s.Defaults.HasDualStack = boxedTrue + s.Defaults.DualStackHostname = "{service}.dualstack.{region}.{dnsSuffix}" + + p.Services[svcName] = s +} + +func custAddEC2Metadata(p *partition) { + p.Services["ec2metadata"] = service{ + IsRegionalized: boxedFalse, + PartitionEndpoint: "aws-global", + Endpoints: endpoints{ + "aws-global": endpoint{ + Hostname: "169.254.169.254/latest", + Protocols: []string{"http"}, + }, + }, + } +} + +func custRmIotDataService(p *partition) { + delete(p.Services, "data.iot") +} + +func custFixAppAutoscalingChina(p *partition) { + if p.ID != "aws-cn" { + return + } + + const serviceName = "application-autoscaling" + s, ok := p.Services[serviceName] + if !ok { + return + } + + const expectHostname = `autoscaling.{region}.amazonaws.com` + if e, a := s.Defaults.Hostname, expectHostname; e != a { + fmt.Printf("custFixAppAutoscalingChina: ignoring customization, expected %s, got %s\n", e, a) + return + } + + s.Defaults.Hostname = expectHostname + ".cn" + p.Services[serviceName] = s +} + +func custFixAppAutoscalingUsGov(p *partition) { + if p.ID != "aws-us-gov" { + return + } + + const serviceName = "application-autoscaling" + s, ok := p.Services[serviceName] + if !ok { + return + } + + if a := s.Defaults.CredentialScope.Service; a != "" { + fmt.Printf("custFixAppAutoscalingUsGov: ignoring customization, expected empty credential scope service, got %s\n", a) + return + } + + if a := s.Defaults.Hostname; a != "" { + fmt.Printf("custFixAppAutoscalingUsGov: ignoring customization, expected empty hostname, got %s\n", a) + return + } + + s.Defaults.CredentialScope.Service = "application-autoscaling" + s.Defaults.Hostname = "autoscaling.{region}.amazonaws.com" + + p.Services[serviceName] = s +} + +type decodeModelError struct { + awsError +} + +func newDecodeModelError(msg string, err error) decodeModelError { + return decodeModelError{ + awsError: awserr.New("DecodeEndpointsModelError", msg, err), + } +} 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 new file mode 100644 index 0000000..de07715 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go @@ -0,0 +1,6091 @@ +// Code generated by aws/endpoints/v3model_codegen.go. DO NOT EDIT. + +package endpoints + +import ( + "regexp" +) + +// Partition identifiers +const ( + AwsPartitionID = "aws" // AWS Standard partition. + AwsCnPartitionID = "aws-cn" // AWS China partition. + AwsUsGovPartitionID = "aws-us-gov" // AWS GovCloud (US) partition. + AwsIsoPartitionID = "aws-iso" // AWS ISO (US) partition. + AwsIsoBPartitionID = "aws-iso-b" // AWS ISOB (US) partition. +) + +// AWS Standard partition's regions. +const ( + ApEast1RegionID = "ap-east-1" // Asia Pacific (Hong Kong). + ApNortheast1RegionID = "ap-northeast-1" // Asia Pacific (Tokyo). + ApNortheast2RegionID = "ap-northeast-2" // Asia Pacific (Seoul). + ApSouth1RegionID = "ap-south-1" // Asia Pacific (Mumbai). + ApSoutheast1RegionID = "ap-southeast-1" // Asia Pacific (Singapore). + ApSoutheast2RegionID = "ap-southeast-2" // Asia Pacific (Sydney). + CaCentral1RegionID = "ca-central-1" // Canada (Central). + EuCentral1RegionID = "eu-central-1" // EU (Frankfurt). + EuNorth1RegionID = "eu-north-1" // EU (Stockholm). + EuWest1RegionID = "eu-west-1" // EU (Ireland). + EuWest2RegionID = "eu-west-2" // EU (London). + EuWest3RegionID = "eu-west-3" // EU (Paris). + MeSouth1RegionID = "me-south-1" // Middle East (Bahrain). + SaEast1RegionID = "sa-east-1" // South America (Sao Paulo). + UsEast1RegionID = "us-east-1" // US East (N. Virginia). + UsEast2RegionID = "us-east-2" // US East (Ohio). + UsWest1RegionID = "us-west-1" // US West (N. California). + UsWest2RegionID = "us-west-2" // US West (Oregon). +) + +// AWS China partition's regions. +const ( + CnNorth1RegionID = "cn-north-1" // China (Beijing). + CnNorthwest1RegionID = "cn-northwest-1" // China (Ningxia). +) + +// AWS GovCloud (US) partition's regions. +const ( + UsGovEast1RegionID = "us-gov-east-1" // AWS GovCloud (US-East). + UsGovWest1RegionID = "us-gov-west-1" // AWS GovCloud (US). +) + +// AWS ISO (US) partition's regions. +const ( + UsIsoEast1RegionID = "us-iso-east-1" // US ISO East. +) + +// AWS ISOB (US) partition's regions. +const ( + UsIsobEast1RegionID = "us-isob-east-1" // US ISOB East (Ohio). +) + +// DefaultResolver returns an Endpoint resolver that will be able +// to resolve endpoints for: AWS Standard, AWS China, AWS GovCloud (US), AWS ISO (US), and AWS ISOB (US). +// +// Use DefaultPartitions() to get the list of the default partitions. +func DefaultResolver() Resolver { + return defaultPartitions +} + +// DefaultPartitions returns a list of the partitions the SDK is bundled +// with. The available partitions are: AWS Standard, AWS China, AWS GovCloud (US), AWS ISO (US), and AWS ISOB (US). +// +// partitions := endpoints.DefaultPartitions +// for _, p := range partitions { +// // ... inspect partitions +// } +func DefaultPartitions() []Partition { + return defaultPartitions.Partitions() +} + +var defaultPartitions = partitions{ + awsPartition, + awscnPartition, + awsusgovPartition, + awsisoPartition, + awsisobPartition, +} + +// AwsPartition returns the Resolver for AWS Standard. +func AwsPartition() Partition { + return awsPartition.Partition() +} + +var awsPartition = partition{ + ID: "aws", + Name: "AWS Standard", + DNSSuffix: "amazonaws.com", + RegionRegex: regionRegex{ + Regexp: func() *regexp.Regexp { + reg, _ := regexp.Compile("^(us|eu|ap|sa|ca|me)\\-\\w+\\-\\d+$") + return reg + }(), + }, + Defaults: endpoint{ + Hostname: "{service}.{region}.{dnsSuffix}", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + Regions: regions{ + "ap-east-1": region{ + Description: "Asia Pacific (Hong Kong)", + }, + "ap-northeast-1": region{ + Description: "Asia Pacific (Tokyo)", + }, + "ap-northeast-2": region{ + Description: "Asia Pacific (Seoul)", + }, + "ap-south-1": region{ + Description: "Asia Pacific (Mumbai)", + }, + "ap-southeast-1": region{ + Description: "Asia Pacific (Singapore)", + }, + "ap-southeast-2": region{ + Description: "Asia Pacific (Sydney)", + }, + "ca-central-1": region{ + Description: "Canada (Central)", + }, + "eu-central-1": region{ + Description: "EU (Frankfurt)", + }, + "eu-north-1": region{ + Description: "EU (Stockholm)", + }, + "eu-west-1": region{ + Description: "EU (Ireland)", + }, + "eu-west-2": region{ + Description: "EU (London)", + }, + "eu-west-3": region{ + Description: "EU (Paris)", + }, + "me-south-1": region{ + Description: "Middle East (Bahrain)", + }, + "sa-east-1": region{ + Description: "South America (Sao Paulo)", + }, + "us-east-1": region{ + Description: "US East (N. Virginia)", + }, + "us-east-2": region{ + Description: "US East (Ohio)", + }, + "us-west-1": region{ + Description: "US West (N. California)", + }, + "us-west-2": region{ + Description: "US West (Oregon)", + }, + }, + Services: services{ + "a4b": service{ + + Endpoints: endpoints{ + "us-east-1": endpoint{}, + }, + }, + "acm": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "acm-pca": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "api.ecr": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{ + Hostname: "api.ecr.ap-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-east-1", + }, + }, + "ap-northeast-1": endpoint{ + Hostname: "api.ecr.ap-northeast-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-northeast-1", + }, + }, + "ap-northeast-2": endpoint{ + Hostname: "api.ecr.ap-northeast-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-northeast-2", + }, + }, + "ap-south-1": endpoint{ + Hostname: "api.ecr.ap-south-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-south-1", + }, + }, + "ap-southeast-1": endpoint{ + Hostname: "api.ecr.ap-southeast-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-southeast-1", + }, + }, + "ap-southeast-2": endpoint{ + Hostname: "api.ecr.ap-southeast-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-southeast-2", + }, + }, + "ca-central-1": endpoint{ + Hostname: "api.ecr.ca-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-central-1", + }, + }, + "eu-central-1": endpoint{ + Hostname: "api.ecr.eu-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-central-1", + }, + }, + "eu-north-1": endpoint{ + Hostname: "api.ecr.eu-north-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-north-1", + }, + }, + "eu-west-1": endpoint{ + Hostname: "api.ecr.eu-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-west-1", + }, + }, + "eu-west-2": endpoint{ + Hostname: "api.ecr.eu-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-west-2", + }, + }, + "eu-west-3": endpoint{ + Hostname: "api.ecr.eu-west-3.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-west-3", + }, + }, + "me-south-1": endpoint{ + Hostname: "api.ecr.me-south-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "me-south-1", + }, + }, + "sa-east-1": endpoint{ + Hostname: "api.ecr.sa-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "sa-east-1", + }, + }, + "us-east-1": endpoint{ + Hostname: "api.ecr.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "us-east-2": endpoint{ + Hostname: "api.ecr.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "us-west-1": endpoint{ + Hostname: "api.ecr.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + "us-west-2": endpoint{ + Hostname: "api.ecr.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + }, + }, + "api.mediatailor": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "api.pricing": service{ + Defaults: endpoint{ + CredentialScope: credentialScope{ + Service: "pricing", + }, + }, + Endpoints: endpoints{ + "ap-south-1": endpoint{}, + "us-east-1": endpoint{}, + }, + }, + "api.sagemaker": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-1-fips": endpoint{ + Hostname: "api-fips.sagemaker.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "us-east-2": endpoint{}, + "us-east-2-fips": endpoint{ + Hostname: "api-fips.sagemaker.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "us-west-1": endpoint{}, + "us-west-1-fips": endpoint{ + Hostname: "api-fips.sagemaker.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + "us-west-2": endpoint{}, + "us-west-2-fips": endpoint{ + Hostname: "api-fips.sagemaker.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + }, + }, + "apigateway": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "application-autoscaling": service{ + Defaults: endpoint{ + Hostname: "autoscaling.{region}.amazonaws.com", + Protocols: []string{"http", "https"}, + CredentialScope: credentialScope{ + Service: "application-autoscaling", + }, + }, + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "appmesh": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "appstream2": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + CredentialScope: credentialScope{ + Service: "appstream", + }, + }, + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "fips": endpoint{ + Hostname: "appstream2-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + "us-east-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "appsync": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "athena": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "autoscaling": service{ + Defaults: endpoint{ + Protocols: []string{"http", "https"}, + }, + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "autoscaling-plans": service{ + Defaults: endpoint{ + Hostname: "autoscaling.{region}.amazonaws.com", + Protocols: []string{"http", "https"}, + CredentialScope: credentialScope{ + Service: "autoscaling-plans", + }, + }, + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "backup": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "batch": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "budgets": service{ + PartitionEndpoint: "aws-global", + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "aws-global": endpoint{ + Hostname: "budgets.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + }, + }, + "ce": service{ + PartitionEndpoint: "aws-global", + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "aws-global": endpoint{ + Hostname: "ce.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + }, + }, + "chime": service{ + PartitionEndpoint: "aws-global", + IsRegionalized: boxedFalse, + Defaults: endpoint{ + SSLCommonName: "service.chime.aws.amazon.com", + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "aws-global": endpoint{ + Hostname: "service.chime.aws.amazon.com", + Protocols: []string{"https"}, + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + }, + }, + "cloud9": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "clouddirectory": service{ + + Endpoints: endpoints{ + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "cloudformation": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "cloudfront": service{ + PartitionEndpoint: "aws-global", + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "aws-global": endpoint{ + Hostname: "cloudfront.amazonaws.com", + Protocols: []string{"http", "https"}, + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + }, + }, + "cloudhsm": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "cloudhsmv2": service{ + Defaults: endpoint{ + CredentialScope: credentialScope{ + Service: "cloudhsm", + }, + }, + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "cloudsearch": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "cloudtrail": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "codebuild": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-1-fips": endpoint{ + Hostname: "codebuild-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "us-east-2": endpoint{}, + "us-east-2-fips": endpoint{ + Hostname: "codebuild-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "us-west-1": endpoint{}, + "us-west-1-fips": endpoint{ + Hostname: "codebuild-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + "us-west-2": endpoint{}, + "us-west-2-fips": endpoint{ + Hostname: "codebuild-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + }, + }, + "codecommit": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "fips": endpoint{ + Hostname: "codecommit-fips.ca-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-central-1", + }, + }, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "codedeploy": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-1-fips": endpoint{ + Hostname: "codedeploy-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "us-east-2": endpoint{}, + "us-east-2-fips": endpoint{ + Hostname: "codedeploy-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "us-west-1": endpoint{}, + "us-west-1-fips": endpoint{ + Hostname: "codedeploy-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + "us-west-2": endpoint{}, + "us-west-2-fips": endpoint{ + Hostname: "codedeploy-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + }, + }, + "codepipeline": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "codestar": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "cognito-identity": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "cognito-idp": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "cognito-sync": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "comprehend": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "comprehendmedical": service{ + + Endpoints: endpoints{ + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "config": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "connect": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "us-east-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "cur": service{ + + Endpoints: endpoints{ + "us-east-1": endpoint{}, + }, + }, + "data.mediastore": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "dataexchange": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "datapipeline": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "datasync": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "fips-us-east-1": endpoint{ + Hostname: "datasync-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "fips-us-east-2": endpoint{ + Hostname: "datasync-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "fips-us-west-1": endpoint{ + Hostname: "datasync-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + "fips-us-west-2": endpoint{ + Hostname: "datasync-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + "me-south-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "dax": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "devicefarm": service{ + + Endpoints: endpoints{ + "us-west-2": endpoint{}, + }, + }, + "directconnect": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "discovery": service{ + + Endpoints: endpoints{ + "us-west-2": endpoint{}, + }, + }, + "dms": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "docdb": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{ + Hostname: "rds.ap-northeast-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-northeast-1", + }, + }, + "ap-northeast-2": endpoint{ + Hostname: "rds.ap-northeast-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-northeast-2", + }, + }, + "ap-south-1": endpoint{ + Hostname: "rds.ap-south-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-south-1", + }, + }, + "ap-southeast-1": endpoint{ + Hostname: "rds.ap-southeast-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-southeast-1", + }, + }, + "ap-southeast-2": endpoint{ + Hostname: "rds.ap-southeast-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-southeast-2", + }, + }, + "eu-central-1": endpoint{ + Hostname: "rds.eu-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-central-1", + }, + }, + "eu-west-1": endpoint{ + Hostname: "rds.eu-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-west-1", + }, + }, + "eu-west-2": endpoint{ + Hostname: "rds.eu-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-west-2", + }, + }, + "eu-west-3": endpoint{ + Hostname: "rds.eu-west-3.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-west-3", + }, + }, + "us-east-1": endpoint{ + Hostname: "rds.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "us-east-2": endpoint{ + Hostname: "rds.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "us-west-2": endpoint{ + Hostname: "rds.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + }, + }, + "ds": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "dynamodb": service{ + Defaults: endpoint{ + Protocols: []string{"http", "https"}, + }, + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "ca-central-1-fips": endpoint{ + Hostname: "dynamodb-fips.ca-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-central-1", + }, + }, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "local": endpoint{ + Hostname: "localhost:8000", + Protocols: []string{"http"}, + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-1-fips": endpoint{ + Hostname: "dynamodb-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "us-east-2": endpoint{}, + "us-east-2-fips": endpoint{ + Hostname: "dynamodb-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "us-west-1": endpoint{}, + "us-west-1-fips": endpoint{ + Hostname: "dynamodb-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + "us-west-2": endpoint{}, + "us-west-2-fips": endpoint{ + Hostname: "dynamodb-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + }, + }, + "ec2": service{ + Defaults: endpoint{ + Protocols: []string{"http", "https"}, + }, + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "ec2metadata": service{ + PartitionEndpoint: "aws-global", + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "aws-global": endpoint{ + Hostname: "169.254.169.254/latest", + Protocols: []string{"http"}, + }, + }, + }, + "ecs": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "elasticache": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "fips": endpoint{ + Hostname: "elasticache-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "elasticbeanstalk": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "elasticfilesystem": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "elasticloadbalancing": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "elasticmapreduce": service{ + Defaults: endpoint{ + SSLCommonName: "{region}.{service}.{dnsSuffix}", + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{ + SSLCommonName: "{service}.{region}.{dnsSuffix}", + }, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{ + SSLCommonName: "{service}.{region}.{dnsSuffix}", + }, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "elastictranscoder": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "email": service{ + + Endpoints: endpoints{ + "ap-south-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "entitlement.marketplace": service{ + Defaults: endpoint{ + CredentialScope: credentialScope{ + Service: "aws-marketplace", + }, + }, + Endpoints: endpoints{ + "us-east-1": endpoint{}, + }, + }, + "es": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "fips": endpoint{ + Hostname: "es-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "events": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "firehose": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "fms": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "forecast": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "forecastquery": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "fsx": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "gamelift": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "glacier": service{ + Defaults: endpoint{ + Protocols: []string{"http", "https"}, + }, + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "glue": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "greengrass": service{ + IsRegionalized: boxedTrue, + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "groundstation": service{ + + Endpoints: endpoints{ + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "guardduty": service{ + IsRegionalized: boxedTrue, + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-1-fips": endpoint{ + Hostname: "guardduty-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "us-east-2": endpoint{}, + "us-east-2-fips": endpoint{ + Hostname: "guardduty-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "us-west-1": endpoint{}, + "us-west-1-fips": endpoint{ + Hostname: "guardduty-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + "us-west-2": endpoint{}, + "us-west-2-fips": endpoint{ + Hostname: "guardduty-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + }, + }, + "health": service{ + + Endpoints: endpoints{ + "us-east-1": endpoint{}, + }, + }, + "iam": service{ + PartitionEndpoint: "aws-global", + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "aws-global": endpoint{ + Hostname: "iam.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + }, + }, + "importexport": service{ + PartitionEndpoint: "aws-global", + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "aws-global": endpoint{ + Hostname: "importexport.amazonaws.com", + SignatureVersions: []string{"v2", "v4"}, + CredentialScope: credentialScope{ + Region: "us-east-1", + Service: "IngestionService", + }, + }, + }, + }, + "inspector": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "iot": service{ + Defaults: endpoint{ + CredentialScope: credentialScope{ + Service: "execute-api", + }, + }, + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "iotanalytics": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "iotevents": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "ioteventsdata": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{ + Hostname: "data.iotevents.ap-northeast-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-northeast-1", + }, + }, + "ap-northeast-2": endpoint{ + Hostname: "data.iotevents.ap-northeast-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-northeast-2", + }, + }, + "ap-southeast-1": endpoint{ + Hostname: "data.iotevents.ap-southeast-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-southeast-1", + }, + }, + "ap-southeast-2": endpoint{ + Hostname: "data.iotevents.ap-southeast-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-southeast-2", + }, + }, + "eu-central-1": endpoint{ + Hostname: "data.iotevents.eu-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-central-1", + }, + }, + "eu-west-1": endpoint{ + Hostname: "data.iotevents.eu-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-west-1", + }, + }, + "eu-west-2": endpoint{ + Hostname: "data.iotevents.eu-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-west-2", + }, + }, + "us-east-1": endpoint{ + Hostname: "data.iotevents.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "us-east-2": endpoint{ + Hostname: "data.iotevents.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "us-west-2": endpoint{ + Hostname: "data.iotevents.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + }, + }, + "iotthingsgraph": service{ + Defaults: endpoint{ + CredentialScope: credentialScope{ + Service: "iotthingsgraph", + }, + }, + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "kafka": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "kinesis": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "kinesisanalytics": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "kinesisvideo": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "kms": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "lakeformation": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "lambda": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "license-manager": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "lightsail": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "logs": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "machinelearning": service{ + + Endpoints: endpoints{ + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + }, + }, + "marketplacecommerceanalytics": service{ + + Endpoints: endpoints{ + "us-east-1": endpoint{}, + }, + }, + "mediaconnect": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "mediaconvert": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "medialive": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "mediapackage": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "mediastore": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "metering.marketplace": service{ + Defaults: endpoint{ + CredentialScope: credentialScope{ + Service: "aws-marketplace", + }, + }, + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "mgh": service{ + + Endpoints: endpoints{ + "us-west-2": endpoint{}, + }, + }, + "mobileanalytics": service{ + + Endpoints: endpoints{ + "us-east-1": endpoint{}, + }, + }, + "models.lex": service{ + Defaults: endpoint{ + CredentialScope: credentialScope{ + Service: "lex", + }, + }, + Endpoints: endpoints{ + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "monitoring": service{ + Defaults: endpoint{ + Protocols: []string{"http", "https"}, + }, + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "mq": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "fips-us-east-1": endpoint{ + Hostname: "mq-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "fips-us-east-2": endpoint{ + Hostname: "mq-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "fips-us-west-1": endpoint{ + Hostname: "mq-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + "fips-us-west-2": endpoint{ + Hostname: "mq-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "mturk-requester": service{ + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "sandbox": endpoint{ + Hostname: "mturk-requester-sandbox.us-east-1.amazonaws.com", + }, + "us-east-1": endpoint{}, + }, + }, + "neptune": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{ + Hostname: "rds.ap-northeast-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-northeast-1", + }, + }, + "ap-northeast-2": endpoint{ + Hostname: "rds.ap-northeast-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-northeast-2", + }, + }, + "ap-south-1": endpoint{ + Hostname: "rds.ap-south-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-south-1", + }, + }, + "ap-southeast-1": endpoint{ + Hostname: "rds.ap-southeast-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-southeast-1", + }, + }, + "ap-southeast-2": endpoint{ + Hostname: "rds.ap-southeast-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-southeast-2", + }, + }, + "ca-central-1": endpoint{ + Hostname: "rds.ca-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-central-1", + }, + }, + "eu-central-1": endpoint{ + Hostname: "rds.eu-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-central-1", + }, + }, + "eu-north-1": endpoint{ + Hostname: "rds.eu-north-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-north-1", + }, + }, + "eu-west-1": endpoint{ + Hostname: "rds.eu-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-west-1", + }, + }, + "eu-west-2": endpoint{ + Hostname: "rds.eu-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-west-2", + }, + }, + "me-south-1": endpoint{ + Hostname: "rds.me-south-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "me-south-1", + }, + }, + "us-east-1": endpoint{ + Hostname: "rds.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "us-east-2": endpoint{ + Hostname: "rds.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "us-west-2": endpoint{ + Hostname: "rds.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + }, + }, + "oidc": service{ + + Endpoints: endpoints{ + "ap-southeast-1": endpoint{ + Hostname: "oidc.ap-southeast-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-southeast-1", + }, + }, + "ap-southeast-2": endpoint{ + Hostname: "oidc.ap-southeast-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-southeast-2", + }, + }, + "ca-central-1": endpoint{ + Hostname: "oidc.ca-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-central-1", + }, + }, + "eu-central-1": endpoint{ + Hostname: "oidc.eu-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-central-1", + }, + }, + "eu-west-1": endpoint{ + Hostname: "oidc.eu-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-west-1", + }, + }, + "eu-west-2": endpoint{ + Hostname: "oidc.eu-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-west-2", + }, + }, + "us-east-1": endpoint{ + Hostname: "oidc.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "us-east-2": endpoint{ + Hostname: "oidc.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "us-west-2": endpoint{ + Hostname: "oidc.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + }, + }, + "opsworks": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "opsworks-cm": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "organizations": service{ + PartitionEndpoint: "aws-global", + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "aws-global": endpoint{ + Hostname: "organizations.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + }, + }, + "pinpoint": service{ + Defaults: endpoint{ + CredentialScope: credentialScope{ + Service: "mobiletargeting", + }, + }, + Endpoints: endpoints{ + "ap-south-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "polly": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "portal.sso": service{ + + Endpoints: endpoints{ + "ap-southeast-1": endpoint{ + Hostname: "portal.sso.ap-southeast-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-southeast-1", + }, + }, + "ap-southeast-2": endpoint{ + Hostname: "portal.sso.ap-southeast-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-southeast-2", + }, + }, + "ca-central-1": endpoint{ + Hostname: "portal.sso.ca-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-central-1", + }, + }, + "eu-central-1": endpoint{ + Hostname: "portal.sso.eu-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-central-1", + }, + }, + "eu-west-1": endpoint{ + Hostname: "portal.sso.eu-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-west-1", + }, + }, + "eu-west-2": endpoint{ + Hostname: "portal.sso.eu-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-west-2", + }, + }, + "us-east-1": endpoint{ + Hostname: "portal.sso.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "us-east-2": endpoint{ + Hostname: "portal.sso.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "us-west-2": endpoint{ + Hostname: "portal.sso.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + }, + }, + "projects.iot1click": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "qldb": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "ram": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "rds": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{ + SSLCommonName: "{service}.{dnsSuffix}", + }, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "redshift": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "rekognition": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "resource-groups": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "fips-us-east-1": endpoint{ + Hostname: "resource-groups-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "fips-us-east-2": endpoint{ + Hostname: "resource-groups-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "fips-us-west-1": endpoint{ + Hostname: "resource-groups-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + "fips-us-west-2": endpoint{ + Hostname: "resource-groups-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "robomaker": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "route53": service{ + PartitionEndpoint: "aws-global", + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "aws-global": endpoint{ + Hostname: "route53.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + }, + }, + "route53domains": service{ + + Endpoints: endpoints{ + "us-east-1": endpoint{}, + }, + }, + "route53resolver": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "runtime.lex": service{ + Defaults: endpoint{ + CredentialScope: credentialScope{ + Service: "lex", + }, + }, + Endpoints: endpoints{ + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "runtime.sagemaker": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-1-fips": endpoint{ + Hostname: "runtime-fips.sagemaker.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "us-east-2": endpoint{}, + "us-east-2-fips": endpoint{ + Hostname: "runtime-fips.sagemaker.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "us-west-1": endpoint{}, + "us-west-1-fips": endpoint{ + Hostname: "runtime-fips.sagemaker.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + "us-west-2": endpoint{}, + "us-west-2-fips": endpoint{ + Hostname: "runtime-fips.sagemaker.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + }, + }, + "s3": service{ + PartitionEndpoint: "aws-global", + IsRegionalized: boxedTrue, + Defaults: endpoint{ + Protocols: []string{"http", "https"}, + SignatureVersions: []string{"s3v4"}, + + HasDualStack: boxedTrue, + DualStackHostname: "{service}.dualstack.{region}.{dnsSuffix}", + }, + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{ + Hostname: "s3.ap-northeast-1.amazonaws.com", + SignatureVersions: []string{"s3", "s3v4"}, + }, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{ + Hostname: "s3.ap-southeast-1.amazonaws.com", + SignatureVersions: []string{"s3", "s3v4"}, + }, + "ap-southeast-2": endpoint{ + Hostname: "s3.ap-southeast-2.amazonaws.com", + SignatureVersions: []string{"s3", "s3v4"}, + }, + "aws-global": endpoint{ + Hostname: "s3.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{ + Hostname: "s3.eu-west-1.amazonaws.com", + SignatureVersions: []string{"s3", "s3v4"}, + }, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "s3-external-1": endpoint{ + Hostname: "s3-external-1.amazonaws.com", + SignatureVersions: []string{"s3", "s3v4"}, + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "sa-east-1": endpoint{ + Hostname: "s3.sa-east-1.amazonaws.com", + SignatureVersions: []string{"s3", "s3v4"}, + }, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{ + Hostname: "s3.us-west-1.amazonaws.com", + SignatureVersions: []string{"s3", "s3v4"}, + }, + "us-west-2": endpoint{ + Hostname: "s3.us-west-2.amazonaws.com", + SignatureVersions: []string{"s3", "s3v4"}, + }, + }, + }, + "s3-control": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + SignatureVersions: []string{"s3v4"}, + + HasDualStack: boxedTrue, + DualStackHostname: "{service}.dualstack.{region}.{dnsSuffix}", + }, + Endpoints: endpoints{ + "ap-northeast-1": endpoint{ + Hostname: "s3-control.ap-northeast-1.amazonaws.com", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "ap-northeast-1", + }, + }, + "ap-northeast-2": endpoint{ + Hostname: "s3-control.ap-northeast-2.amazonaws.com", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "ap-northeast-2", + }, + }, + "ap-south-1": endpoint{ + Hostname: "s3-control.ap-south-1.amazonaws.com", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "ap-south-1", + }, + }, + "ap-southeast-1": endpoint{ + Hostname: "s3-control.ap-southeast-1.amazonaws.com", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "ap-southeast-1", + }, + }, + "ap-southeast-2": endpoint{ + Hostname: "s3-control.ap-southeast-2.amazonaws.com", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "ap-southeast-2", + }, + }, + "ca-central-1": endpoint{ + Hostname: "s3-control.ca-central-1.amazonaws.com", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "ca-central-1", + }, + }, + "eu-central-1": endpoint{ + Hostname: "s3-control.eu-central-1.amazonaws.com", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "eu-central-1", + }, + }, + "eu-north-1": endpoint{ + Hostname: "s3-control.eu-north-1.amazonaws.com", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "eu-north-1", + }, + }, + "eu-west-1": endpoint{ + Hostname: "s3-control.eu-west-1.amazonaws.com", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "eu-west-1", + }, + }, + "eu-west-2": endpoint{ + Hostname: "s3-control.eu-west-2.amazonaws.com", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "eu-west-2", + }, + }, + "eu-west-3": endpoint{ + Hostname: "s3-control.eu-west-3.amazonaws.com", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "eu-west-3", + }, + }, + "sa-east-1": endpoint{ + Hostname: "s3-control.sa-east-1.amazonaws.com", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "sa-east-1", + }, + }, + "us-east-1": endpoint{ + Hostname: "s3-control.us-east-1.amazonaws.com", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "us-east-1-fips": endpoint{ + Hostname: "s3-control-fips.us-east-1.amazonaws.com", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "us-east-2": endpoint{ + Hostname: "s3-control.us-east-2.amazonaws.com", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "us-east-2-fips": endpoint{ + Hostname: "s3-control-fips.us-east-2.amazonaws.com", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "us-west-1": endpoint{ + Hostname: "s3-control.us-west-1.amazonaws.com", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + "us-west-1-fips": endpoint{ + Hostname: "s3-control-fips.us-west-1.amazonaws.com", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + "us-west-2": endpoint{ + Hostname: "s3-control.us-west-2.amazonaws.com", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + "us-west-2-fips": endpoint{ + Hostname: "s3-control-fips.us-west-2.amazonaws.com", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + }, + }, + "savingsplans": service{ + PartitionEndpoint: "aws-global", + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "aws-global": endpoint{ + Hostname: "savingsplans.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + }, + }, + "sdb": service{ + Defaults: endpoint{ + Protocols: []string{"http", "https"}, + SignatureVersions: []string{"v2"}, + }, + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-west-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{ + Hostname: "sdb.amazonaws.com", + }, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "secretsmanager": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-1-fips": endpoint{ + Hostname: "secretsmanager-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "us-east-2": endpoint{}, + "us-east-2-fips": endpoint{ + Hostname: "secretsmanager-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "us-west-1": endpoint{}, + "us-west-1-fips": endpoint{ + Hostname: "secretsmanager-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + "us-west-2": endpoint{}, + "us-west-2-fips": endpoint{ + Hostname: "secretsmanager-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + }, + }, + "securityhub": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "serverlessrepo": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "ap-east-1": endpoint{ + Protocols: []string{"https"}, + }, + "ap-northeast-1": endpoint{ + Protocols: []string{"https"}, + }, + "ap-northeast-2": endpoint{ + Protocols: []string{"https"}, + }, + "ap-south-1": endpoint{ + Protocols: []string{"https"}, + }, + "ap-southeast-1": endpoint{ + Protocols: []string{"https"}, + }, + "ap-southeast-2": endpoint{ + Protocols: []string{"https"}, + }, + "ca-central-1": endpoint{ + Protocols: []string{"https"}, + }, + "eu-central-1": endpoint{ + Protocols: []string{"https"}, + }, + "eu-north-1": endpoint{ + Protocols: []string{"https"}, + }, + "eu-west-1": endpoint{ + Protocols: []string{"https"}, + }, + "eu-west-2": endpoint{ + Protocols: []string{"https"}, + }, + "eu-west-3": endpoint{ + Protocols: []string{"https"}, + }, + "me-south-1": endpoint{ + Protocols: []string{"https"}, + }, + "sa-east-1": endpoint{ + Protocols: []string{"https"}, + }, + "us-east-1": endpoint{ + Protocols: []string{"https"}, + }, + "us-east-2": endpoint{ + Protocols: []string{"https"}, + }, + "us-west-1": endpoint{ + Protocols: []string{"https"}, + }, + "us-west-2": endpoint{ + Protocols: []string{"https"}, + }, + }, + }, + "servicecatalog": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-1-fips": endpoint{ + Hostname: "servicecatalog-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "us-east-2": endpoint{}, + "us-east-2-fips": endpoint{ + Hostname: "servicecatalog-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "us-west-1": endpoint{}, + "us-west-1-fips": endpoint{ + Hostname: "servicecatalog-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + "us-west-2": endpoint{}, + "us-west-2-fips": endpoint{ + Hostname: "servicecatalog-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + }, + }, + "servicediscovery": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "session.qldb": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "shield": service{ + IsRegionalized: boxedFalse, + Defaults: endpoint{ + SSLCommonName: "shield.us-east-1.amazonaws.com", + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "us-east-1": endpoint{}, + }, + }, + "sms": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "snowball": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "sns": service{ + Defaults: endpoint{ + Protocols: []string{"http", "https"}, + }, + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "sqs": service{ + Defaults: endpoint{ + SSLCommonName: "{region}.queue.{dnsSuffix}", + Protocols: []string{"http", "https"}, + }, + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "fips-us-east-1": endpoint{ + Hostname: "sqs-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "fips-us-east-2": endpoint{ + Hostname: "sqs-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "fips-us-west-1": endpoint{ + Hostname: "sqs-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + "fips-us-west-2": endpoint{ + Hostname: "sqs-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{ + SSLCommonName: "queue.{dnsSuffix}", + }, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "ssm": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "states": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "storagegateway": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "streams.dynamodb": service{ + Defaults: endpoint{ + Protocols: []string{"http", "https"}, + CredentialScope: credentialScope{ + Service: "dynamodb", + }, + }, + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "ca-central-1-fips": endpoint{ + Hostname: "dynamodb-fips.ca-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-central-1", + }, + }, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "local": endpoint{ + Hostname: "localhost:8000", + Protocols: []string{"http"}, + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-1-fips": endpoint{ + Hostname: "dynamodb-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "us-east-2": endpoint{}, + "us-east-2-fips": endpoint{ + Hostname: "dynamodb-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "us-west-1": endpoint{}, + "us-west-1-fips": endpoint{ + Hostname: "dynamodb-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + "us-west-2": endpoint{}, + "us-west-2-fips": endpoint{ + Hostname: "dynamodb-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + }, + }, + "sts": service{ + PartitionEndpoint: "aws-global", + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "aws-global": endpoint{ + Hostname: "sts.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-1-fips": endpoint{ + Hostname: "sts-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "us-east-2": endpoint{}, + "us-east-2-fips": endpoint{ + Hostname: "sts-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "us-west-1": endpoint{}, + "us-west-1-fips": endpoint{ + Hostname: "sts-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + "us-west-2": endpoint{}, + "us-west-2-fips": endpoint{ + Hostname: "sts-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + }, + }, + "support": service{ + PartitionEndpoint: "aws-global", + + Endpoints: endpoints{ + "aws-global": endpoint{ + Hostname: "support.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + }, + }, + "swf": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "tagging": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "transcribe": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "transcribestreaming": service{ + + Endpoints: endpoints{ + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "transfer": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "translate": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-1-fips": endpoint{ + Hostname: "translate-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "us-east-2": endpoint{}, + "us-east-2-fips": endpoint{ + Hostname: "translate-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "us-west-2": endpoint{}, + "us-west-2-fips": endpoint{ + Hostname: "translate-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + }, + }, + "waf": service{ + PartitionEndpoint: "aws-global", + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "aws-global": endpoint{ + Hostname: "waf.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + }, + }, + "waf-regional": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "workdocs": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "workmail": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "eu-west-1": endpoint{}, + "us-east-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "workspaces": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + "xray": service{ + + Endpoints: endpoints{ + "ap-east-1": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "eu-west-3": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, + }, + }, + }, +} + +// AwsCnPartition returns the Resolver for AWS China. +func AwsCnPartition() Partition { + return awscnPartition.Partition() +} + +var awscnPartition = partition{ + ID: "aws-cn", + Name: "AWS China", + DNSSuffix: "amazonaws.com.cn", + RegionRegex: regionRegex{ + Regexp: func() *regexp.Regexp { + reg, _ := regexp.Compile("^cn\\-\\w+\\-\\d+$") + return reg + }(), + }, + Defaults: endpoint{ + Hostname: "{service}.{region}.{dnsSuffix}", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + Regions: regions{ + "cn-north-1": region{ + Description: "China (Beijing)", + }, + "cn-northwest-1": region{ + Description: "China (Ningxia)", + }, + }, + Services: services{ + "api.ecr": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{ + Hostname: "api.ecr.cn-north-1.amazonaws.com.cn", + CredentialScope: credentialScope{ + Region: "cn-north-1", + }, + }, + "cn-northwest-1": endpoint{ + Hostname: "api.ecr.cn-northwest-1.amazonaws.com.cn", + CredentialScope: credentialScope{ + Region: "cn-northwest-1", + }, + }, + }, + }, + "apigateway": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "application-autoscaling": service{ + Defaults: endpoint{ + Hostname: "autoscaling.{region}.amazonaws.com.cn", + Protocols: []string{"http", "https"}, + CredentialScope: credentialScope{ + Service: "application-autoscaling", + }, + }, + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "autoscaling": service{ + Defaults: endpoint{ + Protocols: []string{"http", "https"}, + }, + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "batch": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "cloudformation": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "cloudfront": service{ + PartitionEndpoint: "aws-cn-global", + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "aws-cn-global": endpoint{ + Hostname: "cloudfront.cn-northwest-1.amazonaws.com.cn", + Protocols: []string{"http", "https"}, + CredentialScope: credentialScope{ + Region: "cn-northwest-1", + }, + }, + }, + }, + "cloudtrail": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "codebuild": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "codedeploy": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "cognito-identity": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + }, + }, + "config": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "dax": service{ + + Endpoints: endpoints{ + "cn-northwest-1": endpoint{}, + }, + }, + "directconnect": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "dms": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "ds": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "dynamodb": service{ + Defaults: endpoint{ + Protocols: []string{"http", "https"}, + }, + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "ec2": service{ + Defaults: endpoint{ + Protocols: []string{"http", "https"}, + }, + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "ec2metadata": service{ + PartitionEndpoint: "aws-global", + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "aws-global": endpoint{ + Hostname: "169.254.169.254/latest", + Protocols: []string{"http"}, + }, + }, + }, + "ecs": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "elasticache": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "elasticbeanstalk": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "elasticloadbalancing": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "elasticmapreduce": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "es": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "events": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "firehose": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "gamelift": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + }, + }, + "glacier": service{ + Defaults: endpoint{ + Protocols: []string{"http", "https"}, + }, + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "glue": service{ + + Endpoints: endpoints{ + "cn-northwest-1": endpoint{}, + }, + }, + "greengrass": service{ + IsRegionalized: boxedTrue, + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + }, + }, + "iam": service{ + PartitionEndpoint: "aws-cn-global", + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "aws-cn-global": endpoint{ + Hostname: "iam.cn-north-1.amazonaws.com.cn", + CredentialScope: credentialScope{ + Region: "cn-north-1", + }, + }, + }, + }, + "iot": service{ + Defaults: endpoint{ + CredentialScope: credentialScope{ + Service: "execute-api", + }, + }, + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "kinesis": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "kms": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "lambda": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "license-manager": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "logs": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "mediaconvert": service{ + + Endpoints: endpoints{ + "cn-northwest-1": endpoint{ + Hostname: "subscribe.mediaconvert.cn-northwest-1.amazonaws.com.cn", + CredentialScope: credentialScope{ + Region: "cn-northwest-1", + }, + }, + }, + }, + "monitoring": service{ + Defaults: endpoint{ + Protocols: []string{"http", "https"}, + }, + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "polly": service{ + + Endpoints: endpoints{ + "cn-northwest-1": endpoint{}, + }, + }, + "rds": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "redshift": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "s3": service{ + Defaults: endpoint{ + Protocols: []string{"http", "https"}, + SignatureVersions: []string{"s3v4"}, + }, + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "s3-control": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + SignatureVersions: []string{"s3v4"}, + }, + Endpoints: endpoints{ + "cn-north-1": endpoint{ + Hostname: "s3-control.cn-north-1.amazonaws.com.cn", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "cn-north-1", + }, + }, + "cn-northwest-1": endpoint{ + Hostname: "s3-control.cn-northwest-1.amazonaws.com.cn", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "cn-northwest-1", + }, + }, + }, + }, + "sms": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "snowball": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + }, + }, + "sns": service{ + Defaults: endpoint{ + Protocols: []string{"http", "https"}, + }, + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "sqs": service{ + Defaults: endpoint{ + SSLCommonName: "{region}.queue.{dnsSuffix}", + Protocols: []string{"http", "https"}, + }, + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "ssm": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "states": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "storagegateway": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + }, + }, + "streams.dynamodb": service{ + Defaults: endpoint{ + Protocols: []string{"http", "https"}, + CredentialScope: credentialScope{ + Service: "dynamodb", + }, + }, + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "sts": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "support": service{ + PartitionEndpoint: "aws-cn-global", + + Endpoints: endpoints{ + "aws-cn-global": endpoint{ + Hostname: "support.cn-north-1.amazonaws.com.cn", + CredentialScope: credentialScope{ + Region: "cn-north-1", + }, + }, + }, + }, + "swf": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "tagging": service{ + + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, + "transcribe": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "cn-north-1": endpoint{ + Hostname: "cn.transcribe.cn-north-1.amazonaws.com.cn", + CredentialScope: credentialScope{ + Region: "cn-north-1", + }, + }, + "cn-northwest-1": endpoint{ + Hostname: "cn.transcribe.cn-northwest-1.amazonaws.com.cn", + CredentialScope: credentialScope{ + Region: "cn-northwest-1", + }, + }, + }, + }, + "workspaces": service{ + + Endpoints: endpoints{ + "cn-northwest-1": endpoint{}, + }, + }, + }, +} + +// AwsUsGovPartition returns the Resolver for AWS GovCloud (US). +func AwsUsGovPartition() Partition { + return awsusgovPartition.Partition() +} + +var awsusgovPartition = partition{ + ID: "aws-us-gov", + Name: "AWS GovCloud (US)", + DNSSuffix: "amazonaws.com", + RegionRegex: regionRegex{ + Regexp: func() *regexp.Regexp { + reg, _ := regexp.Compile("^us\\-gov\\-\\w+\\-\\d+$") + return reg + }(), + }, + Defaults: endpoint{ + Hostname: "{service}.{region}.{dnsSuffix}", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + Regions: regions{ + "us-gov-east-1": region{ + Description: "AWS GovCloud (US-East)", + }, + "us-gov-west-1": region{ + Description: "AWS GovCloud (US)", + }, + }, + Services: services{ + "acm": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "acm-pca": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "api.ecr": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{ + Hostname: "api.ecr.us-gov-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-east-1", + }, + }, + "us-gov-west-1": endpoint{ + Hostname: "api.ecr.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, + }, + }, + "api.sagemaker": service{ + + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, + "apigateway": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "application-autoscaling": service{ + Defaults: endpoint{ + Hostname: "autoscaling.{region}.amazonaws.com", + CredentialScope: credentialScope{ + Service: "application-autoscaling", + }, + }, + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "appstream2": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + CredentialScope: credentialScope{ + Service: "appstream", + }, + }, + Endpoints: endpoints{ + "fips": endpoint{ + Hostname: "appstream2-fips.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, + "us-gov-west-1": endpoint{}, + }, + }, + "athena": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "autoscaling": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{ + Protocols: []string{"http", "https"}, + }, + }, + }, + "clouddirectory": service{ + + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, + "cloudformation": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "cloudhsm": service{ + + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, + "cloudhsmv2": service{ + Defaults: endpoint{ + CredentialScope: credentialScope{ + Service: "cloudhsm", + }, + }, + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "cloudtrail": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "codebuild": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "codecommit": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "codedeploy": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-east-1-fips": endpoint{ + Hostname: "codedeploy-fips.us-gov-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-east-1", + }, + }, + "us-gov-west-1": endpoint{}, + "us-gov-west-1-fips": endpoint{ + Hostname: "codedeploy-fips.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, + }, + }, + "comprehend": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, + "config": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "datasync": service{ + + Endpoints: endpoints{ + "fips-us-gov-west-1": endpoint{ + Hostname: "datasync-fips.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, + "us-gov-west-1": endpoint{}, + }, + }, + "directconnect": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "dms": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "ds": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "dynamodb": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-east-1-fips": endpoint{ + Hostname: "dynamodb.us-gov-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-east-1", + }, + }, + "us-gov-west-1": endpoint{}, + "us-gov-west-1-fips": endpoint{ + Hostname: "dynamodb.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, + }, + }, + "ec2": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "ec2metadata": service{ + PartitionEndpoint: "aws-global", + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "aws-global": endpoint{ + Hostname: "169.254.169.254/latest", + Protocols: []string{"http"}, + }, + }, + }, + "ecs": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "elasticache": service{ + + Endpoints: endpoints{ + "fips": endpoint{ + Hostname: "elasticache-fips.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "elasticbeanstalk": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "elasticfilesystem": service{ + + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, + "elasticloadbalancing": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{ + Protocols: []string{"http", "https"}, + }, + }, + }, + "elasticmapreduce": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{ + Protocols: []string{"https"}, + }, + }, + }, + "es": service{ + + Endpoints: endpoints{ + "fips": endpoint{ + Hostname: "es-fips.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "events": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "firehose": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "glacier": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{ + Protocols: []string{"http", "https"}, + }, + }, + }, + "glue": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "greengrass": service{ + IsRegionalized: boxedTrue, + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, + "guardduty": service{ + IsRegionalized: boxedTrue, + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, + "health": service{ + + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, + "iam": service{ + PartitionEndpoint: "aws-us-gov-global", + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "aws-us-gov-global": endpoint{ + Hostname: "iam.us-gov.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, + }, + }, + "inspector": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "iot": service{ + Defaults: endpoint{ + CredentialScope: credentialScope{ + Service: "execute-api", + }, + }, + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, + "kinesis": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "kms": service{ + + Endpoints: endpoints{ + "ProdFips": endpoint{ + Hostname: "kms-fips.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "lambda": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "license-manager": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "logs": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "mediaconvert": service{ + + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, + "metering.marketplace": service{ + Defaults: endpoint{ + CredentialScope: credentialScope{ + Service: "aws-marketplace", + }, + }, + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "monitoring": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "neptune": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{ + Hostname: "rds.us-gov-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-east-1", + }, + }, + "us-gov-west-1": endpoint{ + Hostname: "rds.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, + }, + }, + "organizations": service{ + PartitionEndpoint: "aws-us-gov-global", + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "aws-us-gov-global": endpoint{ + Hostname: "organizations.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, + }, + }, + "polly": service{ + + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, + "ram": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "rds": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "redshift": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "rekognition": service{ + + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, + "resource-groups": service{ + + Endpoints: endpoints{ + "fips-us-gov-east-1": endpoint{ + Hostname: "resource-groups.us-gov-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-east-1", + }, + }, + "fips-us-gov-west-1": endpoint{ + Hostname: "resource-groups.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "route53": service{ + PartitionEndpoint: "aws-us-gov-global", + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "aws-us-gov-global": endpoint{ + Hostname: "route53.us-gov.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, + }, + }, + "route53resolver": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "runtime.sagemaker": service{ + + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, + "s3": service{ + Defaults: endpoint{ + SignatureVersions: []string{"s3", "s3v4"}, + }, + Endpoints: endpoints{ + "fips-us-gov-west-1": endpoint{ + Hostname: "s3-fips-us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, + "us-gov-east-1": endpoint{ + Hostname: "s3.us-gov-east-1.amazonaws.com", + Protocols: []string{"http", "https"}, + }, + "us-gov-west-1": endpoint{ + Hostname: "s3.us-gov-west-1.amazonaws.com", + Protocols: []string{"http", "https"}, + }, + }, + }, + "s3-control": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + SignatureVersions: []string{"s3v4"}, + }, + Endpoints: endpoints{ + "us-gov-east-1": endpoint{ + Hostname: "s3-control.us-gov-east-1.amazonaws.com", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "us-gov-east-1", + }, + }, + "us-gov-east-1-fips": endpoint{ + Hostname: "s3-control-fips.us-gov-east-1.amazonaws.com", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "us-gov-east-1", + }, + }, + "us-gov-west-1": endpoint{ + Hostname: "s3-control.us-gov-west-1.amazonaws.com", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, + "us-gov-west-1-fips": endpoint{ + Hostname: "s3-control-fips.us-gov-west-1.amazonaws.com", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, + }, + }, + "secretsmanager": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-east-1-fips": endpoint{ + Hostname: "secretsmanager-fips.us-gov-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-east-1", + }, + }, + "us-gov-west-1": endpoint{}, + "us-gov-west-1-fips": endpoint{ + Hostname: "secretsmanager-fips.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, + }, + }, + "serverlessrepo": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "us-gov-east-1": endpoint{ + Protocols: []string{"https"}, + }, + "us-gov-west-1": endpoint{ + Protocols: []string{"https"}, + }, + }, + }, + "servicecatalog": service{ + + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + "us-gov-west-1-fips": endpoint{ + Hostname: "servicecatalog-fips.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, + }, + }, + "sms": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "snowball": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "sns": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{ + Protocols: []string{"http", "https"}, + }, + }, + }, + "sqs": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{ + SSLCommonName: "{region}.queue.{dnsSuffix}", + Protocols: []string{"http", "https"}, + }, + }, + }, + "ssm": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "states": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "storagegateway": service{ + + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, + "streams.dynamodb": service{ + Defaults: endpoint{ + CredentialScope: credentialScope{ + Service: "dynamodb", + }, + }, + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-east-1-fips": endpoint{ + Hostname: "dynamodb.us-gov-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-east-1", + }, + }, + "us-gov-west-1": endpoint{}, + "us-gov-west-1-fips": endpoint{ + Hostname: "dynamodb.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, + }, + }, + "sts": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "swf": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "tagging": service{ + + Endpoints: endpoints{ + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, + "transcribe": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, + "translate": service{ + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + "us-gov-west-1-fips": endpoint{ + Hostname: "translate-fips.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, + }, + }, + "waf-regional": service{ + + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, + "workspaces": service{ + + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, + }, +} + +// AwsIsoPartition returns the Resolver for AWS ISO (US). +func AwsIsoPartition() Partition { + return awsisoPartition.Partition() +} + +var awsisoPartition = partition{ + ID: "aws-iso", + Name: "AWS ISO (US)", + DNSSuffix: "c2s.ic.gov", + RegionRegex: regionRegex{ + Regexp: func() *regexp.Regexp { + reg, _ := regexp.Compile("^us\\-iso\\-\\w+\\-\\d+$") + return reg + }(), + }, + Defaults: endpoint{ + Hostname: "{service}.{region}.{dnsSuffix}", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + Regions: regions{ + "us-iso-east-1": region{ + Description: "US ISO East", + }, + }, + Services: services{ + "api.ecr": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{ + Hostname: "api.ecr.us-iso-east-1.c2s.ic.gov", + CredentialScope: credentialScope{ + Region: "us-iso-east-1", + }, + }, + }, + }, + "api.sagemaker": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "apigateway": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "application-autoscaling": service{ + Defaults: endpoint{ + Hostname: "autoscaling.{region}.amazonaws.com", + Protocols: []string{"http", "https"}, + CredentialScope: credentialScope{ + Service: "application-autoscaling", + }, + }, + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "autoscaling": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{ + Protocols: []string{"http", "https"}, + }, + }, + }, + "cloudformation": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "cloudtrail": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "codedeploy": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "config": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "datapipeline": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "directconnect": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "dms": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "ds": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "dynamodb": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{ + Protocols: []string{"http", "https"}, + }, + }, + }, + "ec2": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "ec2metadata": service{ + PartitionEndpoint: "aws-global", + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "aws-global": endpoint{ + Hostname: "169.254.169.254/latest", + Protocols: []string{"http"}, + }, + }, + }, + "ecs": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "elasticache": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "elasticloadbalancing": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{ + Protocols: []string{"http", "https"}, + }, + }, + }, + "elasticmapreduce": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{ + Protocols: []string{"https"}, + }, + }, + }, + "events": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "glacier": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{ + Protocols: []string{"http", "https"}, + }, + }, + }, + "health": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "iam": service{ + PartitionEndpoint: "aws-iso-global", + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "aws-iso-global": endpoint{ + Hostname: "iam.us-iso-east-1.c2s.ic.gov", + CredentialScope: credentialScope{ + Region: "us-iso-east-1", + }, + }, + }, + }, + "kinesis": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "kms": service{ + + Endpoints: endpoints{ + "ProdFips": endpoint{ + Hostname: "kms-fips.us-iso-east-1.c2s.ic.gov", + CredentialScope: credentialScope{ + Region: "us-iso-east-1", + }, + }, + "us-iso-east-1": endpoint{}, + }, + }, + "lambda": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "logs": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "monitoring": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "rds": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "redshift": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "route53": service{ + PartitionEndpoint: "aws-iso-global", + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "aws-iso-global": endpoint{ + Hostname: "route53.c2s.ic.gov", + CredentialScope: credentialScope{ + Region: "us-iso-east-1", + }, + }, + }, + }, + "runtime.sagemaker": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "s3": service{ + Defaults: endpoint{ + SignatureVersions: []string{"s3v4"}, + }, + Endpoints: endpoints{ + "us-iso-east-1": endpoint{ + Protocols: []string{"http", "https"}, + SignatureVersions: []string{"s3v4"}, + }, + }, + }, + "snowball": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "sns": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{ + Protocols: []string{"http", "https"}, + }, + }, + }, + "sqs": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{ + Protocols: []string{"http", "https"}, + }, + }, + }, + "states": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "streams.dynamodb": service{ + Defaults: endpoint{ + Protocols: []string{"http", "https"}, + CredentialScope: credentialScope{ + Service: "dynamodb", + }, + }, + Endpoints: endpoints{ + "us-iso-east-1": endpoint{ + Protocols: []string{"http", "https"}, + }, + }, + }, + "sts": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "support": service{ + PartitionEndpoint: "aws-iso-global", + + Endpoints: endpoints{ + "aws-iso-global": endpoint{ + Hostname: "support.us-iso-east-1.c2s.ic.gov", + CredentialScope: credentialScope{ + Region: "us-iso-east-1", + }, + }, + }, + }, + "swf": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "workspaces": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + }, +} + +// AwsIsoBPartition returns the Resolver for AWS ISOB (US). +func AwsIsoBPartition() Partition { + return awsisobPartition.Partition() +} + +var awsisobPartition = partition{ + ID: "aws-iso-b", + Name: "AWS ISOB (US)", + DNSSuffix: "sc2s.sgov.gov", + RegionRegex: regionRegex{ + Regexp: func() *regexp.Regexp { + reg, _ := regexp.Compile("^us\\-isob\\-\\w+\\-\\d+$") + return reg + }(), + }, + Defaults: endpoint{ + Hostname: "{service}.{region}.{dnsSuffix}", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + Regions: regions{ + "us-isob-east-1": region{ + Description: "US ISOB East (Ohio)", + }, + }, + Services: services{ + "application-autoscaling": service{ + Defaults: endpoint{ + Hostname: "autoscaling.{region}.amazonaws.com", + Protocols: []string{"http", "https"}, + CredentialScope: credentialScope{ + Service: "application-autoscaling", + }, + }, + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "autoscaling": service{ + Defaults: endpoint{ + Protocols: []string{"http", "https"}, + }, + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "cloudformation": service{ + + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "cloudtrail": service{ + + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "config": service{ + + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "directconnect": service{ + + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "dms": service{ + + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "dynamodb": service{ + Defaults: endpoint{ + Protocols: []string{"http", "https"}, + }, + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "ec2": service{ + Defaults: endpoint{ + Protocols: []string{"http", "https"}, + }, + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "ec2metadata": service{ + PartitionEndpoint: "aws-global", + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "aws-global": endpoint{ + Hostname: "169.254.169.254/latest", + Protocols: []string{"http"}, + }, + }, + }, + "elasticache": service{ + + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "elasticloadbalancing": service{ + + Endpoints: endpoints{ + "us-isob-east-1": endpoint{ + Protocols: []string{"https"}, + }, + }, + }, + "elasticmapreduce": service{ + + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "events": service{ + + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "glacier": service{ + + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "health": service{ + + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "iam": service{ + PartitionEndpoint: "aws-iso-b-global", + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "aws-iso-b-global": endpoint{ + Hostname: "iam.us-isob-east-1.sc2s.sgov.gov", + CredentialScope: credentialScope{ + Region: "us-isob-east-1", + }, + }, + }, + }, + "kinesis": service{ + + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "kms": service{ + + Endpoints: endpoints{ + "ProdFips": endpoint{ + Hostname: "kms-fips.us-isob-east-1.sc2s.sgov.gov", + CredentialScope: credentialScope{ + Region: "us-isob-east-1", + }, + }, + "us-isob-east-1": endpoint{}, + }, + }, + "logs": service{ + + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "monitoring": service{ + + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "rds": service{ + + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "redshift": service{ + + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "s3": service{ + Defaults: endpoint{ + Protocols: []string{"http", "https"}, + SignatureVersions: []string{"s3v4"}, + }, + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "snowball": service{ + + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "sns": service{ + Defaults: endpoint{ + Protocols: []string{"http", "https"}, + }, + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "sqs": service{ + Defaults: endpoint{ + SSLCommonName: "{region}.queue.{dnsSuffix}", + Protocols: []string{"http", "https"}, + }, + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "states": service{ + + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "streams.dynamodb": service{ + Defaults: endpoint{ + Protocols: []string{"http", "https"}, + CredentialScope: credentialScope{ + Service: "dynamodb", + }, + }, + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "sts": service{ + + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + "support": service{ + PartitionEndpoint: "aws-iso-b-global", + + Endpoints: endpoints{ + "aws-iso-b-global": endpoint{ + Hostname: "support.us-isob-east-1.sc2s.sgov.gov", + CredentialScope: credentialScope{ + Region: "us-isob-east-1", + }, + }, + }, + }, + "swf": service{ + + Endpoints: endpoints{ + "us-isob-east-1": endpoint{}, + }, + }, + }, +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/dep_service_ids.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/dep_service_ids.go new file mode 100644 index 0000000..ca8fc82 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/dep_service_ids.go @@ -0,0 +1,141 @@ +package endpoints + +// Service identifiers +// +// Deprecated: Use client package's EndpointsID value instead of these +// ServiceIDs. These IDs are not maintained, and are out of date. +const ( + A4bServiceID = "a4b" // A4b. + AcmServiceID = "acm" // Acm. + AcmPcaServiceID = "acm-pca" // AcmPca. + ApiMediatailorServiceID = "api.mediatailor" // ApiMediatailor. + ApiPricingServiceID = "api.pricing" // ApiPricing. + ApiSagemakerServiceID = "api.sagemaker" // ApiSagemaker. + ApigatewayServiceID = "apigateway" // Apigateway. + ApplicationAutoscalingServiceID = "application-autoscaling" // ApplicationAutoscaling. + Appstream2ServiceID = "appstream2" // Appstream2. + AppsyncServiceID = "appsync" // Appsync. + AthenaServiceID = "athena" // Athena. + AutoscalingServiceID = "autoscaling" // Autoscaling. + AutoscalingPlansServiceID = "autoscaling-plans" // AutoscalingPlans. + BatchServiceID = "batch" // Batch. + BudgetsServiceID = "budgets" // Budgets. + CeServiceID = "ce" // Ce. + ChimeServiceID = "chime" // Chime. + Cloud9ServiceID = "cloud9" // Cloud9. + ClouddirectoryServiceID = "clouddirectory" // Clouddirectory. + CloudformationServiceID = "cloudformation" // Cloudformation. + CloudfrontServiceID = "cloudfront" // Cloudfront. + CloudhsmServiceID = "cloudhsm" // Cloudhsm. + Cloudhsmv2ServiceID = "cloudhsmv2" // Cloudhsmv2. + CloudsearchServiceID = "cloudsearch" // Cloudsearch. + CloudtrailServiceID = "cloudtrail" // Cloudtrail. + CodebuildServiceID = "codebuild" // Codebuild. + CodecommitServiceID = "codecommit" // Codecommit. + CodedeployServiceID = "codedeploy" // Codedeploy. + CodepipelineServiceID = "codepipeline" // Codepipeline. + CodestarServiceID = "codestar" // Codestar. + CognitoIdentityServiceID = "cognito-identity" // CognitoIdentity. + CognitoIdpServiceID = "cognito-idp" // CognitoIdp. + CognitoSyncServiceID = "cognito-sync" // CognitoSync. + ComprehendServiceID = "comprehend" // Comprehend. + ConfigServiceID = "config" // Config. + CurServiceID = "cur" // Cur. + DatapipelineServiceID = "datapipeline" // Datapipeline. + DaxServiceID = "dax" // Dax. + DevicefarmServiceID = "devicefarm" // Devicefarm. + DirectconnectServiceID = "directconnect" // Directconnect. + DiscoveryServiceID = "discovery" // Discovery. + DmsServiceID = "dms" // Dms. + DsServiceID = "ds" // Ds. + DynamodbServiceID = "dynamodb" // Dynamodb. + Ec2ServiceID = "ec2" // Ec2. + Ec2metadataServiceID = "ec2metadata" // Ec2metadata. + EcrServiceID = "ecr" // Ecr. + EcsServiceID = "ecs" // Ecs. + ElasticacheServiceID = "elasticache" // Elasticache. + ElasticbeanstalkServiceID = "elasticbeanstalk" // Elasticbeanstalk. + ElasticfilesystemServiceID = "elasticfilesystem" // Elasticfilesystem. + ElasticloadbalancingServiceID = "elasticloadbalancing" // Elasticloadbalancing. + ElasticmapreduceServiceID = "elasticmapreduce" // Elasticmapreduce. + ElastictranscoderServiceID = "elastictranscoder" // Elastictranscoder. + EmailServiceID = "email" // Email. + EntitlementMarketplaceServiceID = "entitlement.marketplace" // EntitlementMarketplace. + EsServiceID = "es" // Es. + EventsServiceID = "events" // Events. + FirehoseServiceID = "firehose" // Firehose. + FmsServiceID = "fms" // Fms. + GameliftServiceID = "gamelift" // Gamelift. + GlacierServiceID = "glacier" // Glacier. + GlueServiceID = "glue" // Glue. + GreengrassServiceID = "greengrass" // Greengrass. + GuarddutyServiceID = "guardduty" // Guardduty. + HealthServiceID = "health" // Health. + IamServiceID = "iam" // Iam. + ImportexportServiceID = "importexport" // Importexport. + InspectorServiceID = "inspector" // Inspector. + IotServiceID = "iot" // Iot. + IotanalyticsServiceID = "iotanalytics" // Iotanalytics. + KinesisServiceID = "kinesis" // Kinesis. + KinesisanalyticsServiceID = "kinesisanalytics" // Kinesisanalytics. + KinesisvideoServiceID = "kinesisvideo" // Kinesisvideo. + KmsServiceID = "kms" // Kms. + LambdaServiceID = "lambda" // Lambda. + LightsailServiceID = "lightsail" // Lightsail. + LogsServiceID = "logs" // Logs. + MachinelearningServiceID = "machinelearning" // Machinelearning. + MarketplacecommerceanalyticsServiceID = "marketplacecommerceanalytics" // Marketplacecommerceanalytics. + MediaconvertServiceID = "mediaconvert" // Mediaconvert. + MedialiveServiceID = "medialive" // Medialive. + MediapackageServiceID = "mediapackage" // Mediapackage. + MediastoreServiceID = "mediastore" // Mediastore. + MeteringMarketplaceServiceID = "metering.marketplace" // MeteringMarketplace. + MghServiceID = "mgh" // Mgh. + MobileanalyticsServiceID = "mobileanalytics" // Mobileanalytics. + ModelsLexServiceID = "models.lex" // ModelsLex. + MonitoringServiceID = "monitoring" // Monitoring. + MturkRequesterServiceID = "mturk-requester" // MturkRequester. + NeptuneServiceID = "neptune" // Neptune. + OpsworksServiceID = "opsworks" // Opsworks. + OpsworksCmServiceID = "opsworks-cm" // OpsworksCm. + OrganizationsServiceID = "organizations" // Organizations. + PinpointServiceID = "pinpoint" // Pinpoint. + PollyServiceID = "polly" // Polly. + RdsServiceID = "rds" // Rds. + RedshiftServiceID = "redshift" // Redshift. + RekognitionServiceID = "rekognition" // Rekognition. + ResourceGroupsServiceID = "resource-groups" // ResourceGroups. + Route53ServiceID = "route53" // Route53. + Route53domainsServiceID = "route53domains" // Route53domains. + RuntimeLexServiceID = "runtime.lex" // RuntimeLex. + RuntimeSagemakerServiceID = "runtime.sagemaker" // RuntimeSagemaker. + S3ServiceID = "s3" // S3. + S3ControlServiceID = "s3-control" // S3Control. + SagemakerServiceID = "api.sagemaker" // Sagemaker. + SdbServiceID = "sdb" // Sdb. + SecretsmanagerServiceID = "secretsmanager" // Secretsmanager. + ServerlessrepoServiceID = "serverlessrepo" // Serverlessrepo. + ServicecatalogServiceID = "servicecatalog" // Servicecatalog. + ServicediscoveryServiceID = "servicediscovery" // Servicediscovery. + ShieldServiceID = "shield" // Shield. + SmsServiceID = "sms" // Sms. + SnowballServiceID = "snowball" // Snowball. + SnsServiceID = "sns" // Sns. + SqsServiceID = "sqs" // Sqs. + SsmServiceID = "ssm" // Ssm. + StatesServiceID = "states" // States. + StoragegatewayServiceID = "storagegateway" // Storagegateway. + StreamsDynamodbServiceID = "streams.dynamodb" // StreamsDynamodb. + StsServiceID = "sts" // Sts. + SupportServiceID = "support" // Support. + SwfServiceID = "swf" // Swf. + TaggingServiceID = "tagging" // Tagging. + TransferServiceID = "transfer" // Transfer. + TranslateServiceID = "translate" // Translate. + WafServiceID = "waf" // Waf. + WafRegionalServiceID = "waf-regional" // WafRegional. + WorkdocsServiceID = "workdocs" // Workdocs. + WorkmailServiceID = "workmail" // Workmail. + WorkspacesServiceID = "workspaces" // Workspaces. + XrayServiceID = "xray" // Xray. +) diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/doc.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/doc.go new file mode 100644 index 0000000..84316b9 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/doc.go @@ -0,0 +1,66 @@ +// Package endpoints provides the types and functionality for defining regions +// and endpoints, as well as querying those definitions. +// +// The SDK's Regions and Endpoints metadata is code generated into the endpoints +// package, and is accessible via the DefaultResolver function. This function +// returns a endpoint Resolver will search the metadata and build an associated +// endpoint if one is found. The default resolver will search all partitions +// known by the SDK. e.g AWS Standard (aws), AWS China (aws-cn), and +// AWS GovCloud (US) (aws-us-gov). +// . +// +// Enumerating Regions and Endpoint Metadata +// +// Casting the Resolver returned by DefaultResolver to a EnumPartitions interface +// will allow you to get access to the list of underlying Partitions with the +// Partitions method. This is helpful if you want to limit the SDK's endpoint +// resolving to a single partition, or enumerate regions, services, and endpoints +// in the partition. +// +// resolver := endpoints.DefaultResolver() +// partitions := resolver.(endpoints.EnumPartitions).Partitions() +// +// for _, p := range partitions { +// fmt.Println("Regions for", p.ID()) +// for id, _ := range p.Regions() { +// fmt.Println("*", id) +// } +// +// fmt.Println("Services for", p.ID()) +// for id, _ := range p.Services() { +// fmt.Println("*", id) +// } +// } +// +// Using Custom Endpoints +// +// The endpoints package also gives you the ability to use your own logic how +// endpoints are resolved. This is a great way to define a custom endpoint +// for select services, without passing that logic down through your code. +// +// If a type implements the Resolver interface it can be used to resolve +// endpoints. To use this with the SDK's Session and Config set the value +// of the type to the EndpointsResolver field of aws.Config when initializing +// the session, or service client. +// +// In addition the ResolverFunc is a wrapper for a func matching the signature +// of Resolver.EndpointFor, converting it to a type that satisfies the +// Resolver interface. +// +// +// myCustomResolver := func(service, region string, optFns ...func(*endpoints.Options)) (endpoints.ResolvedEndpoint, error) { +// if service == endpoints.S3ServiceID { +// return endpoints.ResolvedEndpoint{ +// URL: "s3.custom.endpoint.com", +// SigningRegion: "custom-signing-region", +// }, nil +// } +// +// return endpoints.DefaultResolver().EndpointFor(service, region, optFns...) +// } +// +// sess := session.Must(session.NewSession(&aws.Config{ +// Region: aws.String("us-west-2"), +// EndpointResolver: endpoints.ResolverFunc(myCustomResolver), +// })) +package endpoints diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/endpoints.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/endpoints.go new file mode 100644 index 0000000..1f53d9c --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/endpoints.go @@ -0,0 +1,564 @@ +package endpoints + +import ( + "fmt" + "regexp" + "strings" + + "github.com/aws/aws-sdk-go/aws/awserr" +) + +// Options provide the configuration needed to direct how the +// endpoints will be resolved. +type Options struct { + // DisableSSL forces the endpoint to be resolved as HTTP. + // instead of HTTPS if the service supports it. + DisableSSL bool + + // Sets the resolver to resolve the endpoint as a dualstack endpoint + // for the service. If dualstack support for a service is not known and + // StrictMatching is not enabled a dualstack endpoint for the service will + // be returned. This endpoint may not be valid. If StrictMatching is + // enabled only services that are known to support dualstack will return + // dualstack endpoints. + UseDualStack bool + + // Enables strict matching of services and regions resolved endpoints. + // If the partition doesn't enumerate the exact service and region an + // error will be returned. This option will prevent returning endpoints + // that look valid, but may not resolve to any real endpoint. + StrictMatching bool + + // Enables resolving a service endpoint based on the region provided if the + // service does not exist. The service endpoint ID will be used as the service + // domain name prefix. By default the endpoint resolver requires the service + // to be known when resolving endpoints. + // + // If resolving an endpoint on the partition list the provided region will + // be used to determine which partition's domain name pattern to the service + // endpoint ID with. If both the service and region are unknown and resolving + // the endpoint on partition list an UnknownEndpointError error will be returned. + // + // If resolving and endpoint on a partition specific resolver that partition's + // domain name pattern will be used with the service endpoint ID. If both + // region and service do not exist when resolving an endpoint on a specific + // partition the partition's domain pattern will be used to combine the + // endpoint and region together. + // + // This option is ignored if StrictMatching is enabled. + ResolveUnknownService bool + + // STS Regional Endpoint flag helps with resolving the STS endpoint + STSRegionalEndpoint STSRegionalEndpoint + + // S3 Regional Endpoint flag helps with resolving the S3 endpoint + S3UsEast1RegionalEndpoint S3UsEast1RegionalEndpoint +} + +// STSRegionalEndpoint is an enum for the states of the STS Regional Endpoint +// options. +type STSRegionalEndpoint int + +func (e STSRegionalEndpoint) String() string { + switch e { + case LegacySTSEndpoint: + return "legacy" + case RegionalSTSEndpoint: + return "regional" + case UnsetSTSEndpoint: + return "" + default: + return "unknown" + } +} + +const ( + + // UnsetSTSEndpoint represents that STS Regional Endpoint flag is not specified. + UnsetSTSEndpoint STSRegionalEndpoint = iota + + // LegacySTSEndpoint represents when STS Regional Endpoint flag is specified + // to use legacy endpoints. + LegacySTSEndpoint + + // RegionalSTSEndpoint represents when STS Regional Endpoint flag is specified + // to use regional endpoints. + RegionalSTSEndpoint +) + +// GetSTSRegionalEndpoint function returns the STSRegionalEndpointFlag based +// on the input string provided in env config or shared config by the user. +// +// `legacy`, `regional` are the only case-insensitive valid strings for +// resolving the STS regional Endpoint flag. +func GetSTSRegionalEndpoint(s string) (STSRegionalEndpoint, error) { + switch { + case strings.EqualFold(s, "legacy"): + return LegacySTSEndpoint, nil + case strings.EqualFold(s, "regional"): + return RegionalSTSEndpoint, nil + default: + return UnsetSTSEndpoint, fmt.Errorf("unable to resolve the value of STSRegionalEndpoint for %v", s) + } +} + +// S3UsEast1RegionalEndpoint is an enum for the states of the S3 us-east-1 +// Regional Endpoint options. +type S3UsEast1RegionalEndpoint int + +func (e S3UsEast1RegionalEndpoint) String() string { + switch e { + case LegacyS3UsEast1Endpoint: + return "legacy" + case RegionalS3UsEast1Endpoint: + return "regional" + case UnsetS3UsEast1Endpoint: + return "" + default: + return "unknown" + } +} + +const ( + + // UnsetS3UsEast1Endpoint represents that S3 Regional Endpoint flag is not + // specified. + UnsetS3UsEast1Endpoint S3UsEast1RegionalEndpoint = iota + + // LegacyS3UsEast1Endpoint represents when S3 Regional Endpoint flag is + // specified to use legacy endpoints. + LegacyS3UsEast1Endpoint + + // RegionalS3UsEast1Endpoint represents when S3 Regional Endpoint flag is + // specified to use regional endpoints. + RegionalS3UsEast1Endpoint +) + +// GetS3UsEast1RegionalEndpoint function returns the S3UsEast1RegionalEndpointFlag based +// on the input string provided in env config or shared config by the user. +// +// `legacy`, `regional` are the only case-insensitive valid strings for +// resolving the S3 regional Endpoint flag. +func GetS3UsEast1RegionalEndpoint(s string) (S3UsEast1RegionalEndpoint, error) { + switch { + case strings.EqualFold(s, "legacy"): + return LegacyS3UsEast1Endpoint, nil + case strings.EqualFold(s, "regional"): + return RegionalS3UsEast1Endpoint, nil + default: + return UnsetS3UsEast1Endpoint, + fmt.Errorf("unable to resolve the value of S3UsEast1RegionalEndpoint for %v", s) + } +} + +// Set combines all of the option functions together. +func (o *Options) Set(optFns ...func(*Options)) { + for _, fn := range optFns { + fn(o) + } +} + +// DisableSSLOption sets the DisableSSL options. Can be used as a functional +// option when resolving endpoints. +func DisableSSLOption(o *Options) { + o.DisableSSL = true +} + +// UseDualStackOption sets the UseDualStack option. Can be used as a functional +// option when resolving endpoints. +func UseDualStackOption(o *Options) { + o.UseDualStack = true +} + +// StrictMatchingOption sets the StrictMatching option. Can be used as a functional +// option when resolving endpoints. +func StrictMatchingOption(o *Options) { + o.StrictMatching = true +} + +// ResolveUnknownServiceOption sets the ResolveUnknownService option. Can be used +// as a functional option when resolving endpoints. +func ResolveUnknownServiceOption(o *Options) { + o.ResolveUnknownService = true +} + +// STSRegionalEndpointOption enables the STS endpoint resolver behavior to resolve +// STS endpoint to their regional endpoint, instead of the global endpoint. +func STSRegionalEndpointOption(o *Options) { + o.STSRegionalEndpoint = RegionalSTSEndpoint +} + +// A Resolver provides the interface for functionality to resolve endpoints. +// The build in Partition and DefaultResolver return value satisfy this interface. +type Resolver interface { + EndpointFor(service, region string, opts ...func(*Options)) (ResolvedEndpoint, error) +} + +// ResolverFunc is a helper utility that wraps a function so it satisfies the +// Resolver interface. This is useful when you want to add additional endpoint +// resolving logic, or stub out specific endpoints with custom values. +type ResolverFunc func(service, region string, opts ...func(*Options)) (ResolvedEndpoint, error) + +// EndpointFor wraps the ResolverFunc function to satisfy the Resolver interface. +func (fn ResolverFunc) EndpointFor(service, region string, opts ...func(*Options)) (ResolvedEndpoint, error) { + return fn(service, region, opts...) +} + +var schemeRE = regexp.MustCompile("^([^:]+)://") + +// AddScheme adds the HTTP or HTTPS schemes to a endpoint URL if there is no +// scheme. If disableSSL is true HTTP will set HTTP instead of the default HTTPS. +// +// If disableSSL is set, it will only set the URL's scheme if the URL does not +// contain a scheme. +func AddScheme(endpoint string, disableSSL bool) string { + if !schemeRE.MatchString(endpoint) { + scheme := "https" + if disableSSL { + scheme = "http" + } + endpoint = fmt.Sprintf("%s://%s", scheme, endpoint) + } + + return endpoint +} + +// EnumPartitions a provides a way to retrieve the underlying partitions that +// make up the SDK's default Resolver, or any resolver decoded from a model +// file. +// +// Use this interface with DefaultResolver and DecodeModels to get the list of +// Partitions. +type EnumPartitions interface { + Partitions() []Partition +} + +// RegionsForService returns a map of regions for the partition and service. +// If either the partition or service does not exist false will be returned +// as the second parameter. +// +// This example shows how to get the regions for DynamoDB in the AWS partition. +// rs, exists := endpoints.RegionsForService(endpoints.DefaultPartitions(), endpoints.AwsPartitionID, endpoints.DynamodbServiceID) +// +// This is equivalent to using the partition directly. +// rs := endpoints.AwsPartition().Services()[endpoints.DynamodbServiceID].Regions() +func RegionsForService(ps []Partition, partitionID, serviceID string) (map[string]Region, bool) { + for _, p := range ps { + if p.ID() != partitionID { + continue + } + if _, ok := p.p.Services[serviceID]; !ok { + break + } + + s := Service{ + id: serviceID, + p: p.p, + } + return s.Regions(), true + } + + return map[string]Region{}, false +} + +// PartitionForRegion returns the first partition which includes the region +// passed in. This includes both known regions and regions which match +// a pattern supported by the partition which may include regions that are +// not explicitly known by the partition. Use the Regions method of the +// returned Partition if explicit support is needed. +func PartitionForRegion(ps []Partition, regionID string) (Partition, bool) { + for _, p := range ps { + if _, ok := p.p.Regions[regionID]; ok || p.p.RegionRegex.MatchString(regionID) { + return p, true + } + } + + return Partition{}, false +} + +// A Partition provides the ability to enumerate the partition's regions +// and services. +type Partition struct { + id, dnsSuffix string + p *partition +} + +// DNSSuffix returns the base domain name of the partition. +func (p Partition) DNSSuffix() string { return p.dnsSuffix } + +// ID returns the identifier of the partition. +func (p Partition) ID() string { return p.id } + +// EndpointFor attempts to resolve the endpoint based on service and region. +// See Options for information on configuring how the endpoint is resolved. +// +// If the service cannot be found in the metadata the UnknownServiceError +// error will be returned. This validation will occur regardless if +// StrictMatching is enabled. To enable resolving unknown services set the +// "ResolveUnknownService" option to true. When StrictMatching is disabled +// this option allows the partition resolver to resolve a endpoint based on +// the service endpoint ID provided. +// +// When resolving endpoints you can choose to enable StrictMatching. This will +// require the provided service and region to be known by the partition. +// If the endpoint cannot be strictly resolved an error will be returned. This +// mode is useful to ensure the endpoint resolved is valid. Without +// StrictMatching enabled the endpoint returned may look valid but may not work. +// StrictMatching requires the SDK to be updated if you want to take advantage +// of new regions and services expansions. +// +// Errors that can be returned. +// * UnknownServiceError +// * UnknownEndpointError +func (p Partition) EndpointFor(service, region string, opts ...func(*Options)) (ResolvedEndpoint, error) { + return p.p.EndpointFor(service, region, opts...) +} + +// Regions returns a map of Regions indexed by their ID. This is useful for +// enumerating over the regions in a partition. +func (p Partition) Regions() map[string]Region { + rs := map[string]Region{} + for id, r := range p.p.Regions { + rs[id] = Region{ + id: id, + desc: r.Description, + p: p.p, + } + } + + return rs +} + +// Services returns a map of Service indexed by their ID. This is useful for +// enumerating over the services in a partition. +func (p Partition) Services() map[string]Service { + ss := map[string]Service{} + for id := range p.p.Services { + ss[id] = Service{ + id: id, + p: p.p, + } + } + + return ss +} + +// A Region provides information about a region, and ability to resolve an +// endpoint from the context of a region, given a service. +type Region struct { + id, desc string + p *partition +} + +// ID returns the region's identifier. +func (r Region) ID() string { return r.id } + +// Description returns the region's description. The region description +// is free text, it can be empty, and it may change between SDK releases. +func (r Region) Description() string { return r.desc } + +// ResolveEndpoint resolves an endpoint from the context of the region given +// a service. See Partition.EndpointFor for usage and errors that can be returned. +func (r Region) ResolveEndpoint(service string, opts ...func(*Options)) (ResolvedEndpoint, error) { + return r.p.EndpointFor(service, r.id, opts...) +} + +// Services returns a list of all services that are known to be in this region. +func (r Region) Services() map[string]Service { + ss := map[string]Service{} + for id, s := range r.p.Services { + if _, ok := s.Endpoints[r.id]; ok { + ss[id] = Service{ + id: id, + p: r.p, + } + } + } + + return ss +} + +// A Service provides information about a service, and ability to resolve an +// endpoint from the context of a service, given a region. +type Service struct { + id string + p *partition +} + +// ID returns the identifier for the service. +func (s Service) ID() string { return s.id } + +// ResolveEndpoint resolves an endpoint from the context of a service given +// a region. See Partition.EndpointFor for usage and errors that can be returned. +func (s Service) ResolveEndpoint(region string, opts ...func(*Options)) (ResolvedEndpoint, error) { + return s.p.EndpointFor(s.id, region, opts...) +} + +// Regions returns a map of Regions that the service is present in. +// +// A region is the AWS region the service exists in. Whereas a Endpoint is +// an URL that can be resolved to a instance of a service. +func (s Service) Regions() map[string]Region { + rs := map[string]Region{} + for id := range s.p.Services[s.id].Endpoints { + if r, ok := s.p.Regions[id]; ok { + rs[id] = Region{ + id: id, + desc: r.Description, + p: s.p, + } + } + } + + return rs +} + +// Endpoints returns a map of Endpoints indexed by their ID for all known +// endpoints for a service. +// +// A region is the AWS region the service exists in. Whereas a Endpoint is +// an URL that can be resolved to a instance of a service. +func (s Service) Endpoints() map[string]Endpoint { + es := map[string]Endpoint{} + for id := range s.p.Services[s.id].Endpoints { + es[id] = Endpoint{ + id: id, + serviceID: s.id, + p: s.p, + } + } + + return es +} + +// A Endpoint provides information about endpoints, and provides the ability +// to resolve that endpoint for the service, and the region the endpoint +// represents. +type Endpoint struct { + id string + serviceID string + p *partition +} + +// ID returns the identifier for an endpoint. +func (e Endpoint) ID() string { return e.id } + +// ServiceID returns the identifier the endpoint belongs to. +func (e Endpoint) ServiceID() string { return e.serviceID } + +// ResolveEndpoint resolves an endpoint from the context of a service and +// region the endpoint represents. See Partition.EndpointFor for usage and +// errors that can be returned. +func (e Endpoint) ResolveEndpoint(opts ...func(*Options)) (ResolvedEndpoint, error) { + return e.p.EndpointFor(e.serviceID, e.id, opts...) +} + +// A ResolvedEndpoint is an endpoint that has been resolved based on a partition +// service, and region. +type ResolvedEndpoint struct { + // The endpoint URL + URL string + + // The endpoint partition + PartitionID string + + // The region that should be used for signing requests. + SigningRegion string + + // The service name that should be used for signing requests. + SigningName string + + // States that the signing name for this endpoint was derived from metadata + // passed in, but was not explicitly modeled. + SigningNameDerived bool + + // The signing method that should be used for signing requests. + SigningMethod string +} + +// So that the Error interface type can be included as an anonymous field +// in the requestError struct and not conflict with the error.Error() method. +type awsError awserr.Error + +// A EndpointNotFoundError is returned when in StrictMatching mode, and the +// endpoint for the service and region cannot be found in any of the partitions. +type EndpointNotFoundError struct { + awsError + Partition string + Service string + Region string +} + +// A UnknownServiceError is returned when the service does not resolve to an +// endpoint. Includes a list of all known services for the partition. Returned +// when a partition does not support the service. +type UnknownServiceError struct { + awsError + Partition string + Service string + Known []string +} + +// NewUnknownServiceError builds and returns UnknownServiceError. +func NewUnknownServiceError(p, s string, known []string) UnknownServiceError { + return UnknownServiceError{ + awsError: awserr.New("UnknownServiceError", + "could not resolve endpoint for unknown service", nil), + Partition: p, + Service: s, + Known: known, + } +} + +// String returns the string representation of the error. +func (e UnknownServiceError) Error() string { + extra := fmt.Sprintf("partition: %q, service: %q", + e.Partition, e.Service) + if len(e.Known) > 0 { + extra += fmt.Sprintf(", known: %v", e.Known) + } + return awserr.SprintError(e.Code(), e.Message(), extra, e.OrigErr()) +} + +// String returns the string representation of the error. +func (e UnknownServiceError) String() string { + return e.Error() +} + +// A UnknownEndpointError is returned when in StrictMatching mode and the +// service is valid, but the region does not resolve to an endpoint. Includes +// a list of all known endpoints for the service. +type UnknownEndpointError struct { + awsError + Partition string + Service string + Region string + Known []string +} + +// NewUnknownEndpointError builds and returns UnknownEndpointError. +func NewUnknownEndpointError(p, s, r string, known []string) UnknownEndpointError { + return UnknownEndpointError{ + awsError: awserr.New("UnknownEndpointError", + "could not resolve endpoint", nil), + Partition: p, + Service: s, + Region: r, + Known: known, + } +} + +// String returns the string representation of the error. +func (e UnknownEndpointError) Error() string { + extra := fmt.Sprintf("partition: %q, service: %q, region: %q", + e.Partition, e.Service, e.Region) + if len(e.Known) > 0 { + extra += fmt.Sprintf(", known: %v", e.Known) + } + return awserr.SprintError(e.Code(), e.Message(), extra, e.OrigErr()) +} + +// String returns the string representation of the error. +func (e UnknownEndpointError) String() string { + return e.Error() +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/legacy_regions.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/legacy_regions.go new file mode 100644 index 0000000..df75e89 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/legacy_regions.go @@ -0,0 +1,24 @@ +package endpoints + +var legacyGlobalRegions = map[string]map[string]struct{}{ + "sts": { + "ap-northeast-1": {}, + "ap-south-1": {}, + "ap-southeast-1": {}, + "ap-southeast-2": {}, + "ca-central-1": {}, + "eu-central-1": {}, + "eu-north-1": {}, + "eu-west-1": {}, + "eu-west-2": {}, + "eu-west-3": {}, + "sa-east-1": {}, + "us-east-1": {}, + "us-east-2": {}, + "us-west-1": {}, + "us-west-2": {}, + }, + "s3": { + "us-east-1": {}, + }, +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model.go new file mode 100644 index 0000000..eb2ac83 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model.go @@ -0,0 +1,341 @@ +package endpoints + +import ( + "fmt" + "regexp" + "strconv" + "strings" +) + +type partitions []partition + +func (ps partitions) EndpointFor(service, region string, opts ...func(*Options)) (ResolvedEndpoint, error) { + var opt Options + opt.Set(opts...) + + for i := 0; i < len(ps); i++ { + if !ps[i].canResolveEndpoint(service, region, opt.StrictMatching) { + continue + } + + return ps[i].EndpointFor(service, region, opts...) + } + + // If loose matching fallback to first partition format to use + // when resolving the endpoint. + if !opt.StrictMatching && len(ps) > 0 { + return ps[0].EndpointFor(service, region, opts...) + } + + return ResolvedEndpoint{}, NewUnknownEndpointError("all partitions", service, region, []string{}) +} + +// Partitions satisfies the EnumPartitions interface and returns a list +// of Partitions representing each partition represented in the SDK's +// endpoints model. +func (ps partitions) Partitions() []Partition { + parts := make([]Partition, 0, len(ps)) + for i := 0; i < len(ps); i++ { + parts = append(parts, ps[i].Partition()) + } + + return parts +} + +type partition struct { + ID string `json:"partition"` + Name string `json:"partitionName"` + DNSSuffix string `json:"dnsSuffix"` + RegionRegex regionRegex `json:"regionRegex"` + Defaults endpoint `json:"defaults"` + Regions regions `json:"regions"` + Services services `json:"services"` +} + +func (p partition) Partition() Partition { + return Partition{ + dnsSuffix: p.DNSSuffix, + id: p.ID, + p: &p, + } +} + +func (p partition) canResolveEndpoint(service, region string, strictMatch bool) bool { + s, hasService := p.Services[service] + _, hasEndpoint := s.Endpoints[region] + + if hasEndpoint && hasService { + return true + } + + if strictMatch { + return false + } + + return p.RegionRegex.MatchString(region) +} + +func allowLegacyEmptyRegion(service string) bool { + legacy := map[string]struct{}{ + "budgets": {}, + "ce": {}, + "chime": {}, + "cloudfront": {}, + "ec2metadata": {}, + "iam": {}, + "importexport": {}, + "organizations": {}, + "route53": {}, + "sts": {}, + "support": {}, + "waf": {}, + } + + _, allowed := legacy[service] + return allowed +} + +func (p partition) EndpointFor(service, region string, opts ...func(*Options)) (resolved ResolvedEndpoint, err error) { + var opt Options + opt.Set(opts...) + + s, hasService := p.Services[service] + if len(service) == 0 || !(hasService || opt.ResolveUnknownService) { + // Only return error if the resolver will not fallback to creating + // endpoint based on service endpoint ID passed in. + return resolved, NewUnknownServiceError(p.ID, service, serviceList(p.Services)) + } + + if len(region) == 0 && allowLegacyEmptyRegion(service) && len(s.PartitionEndpoint) != 0 { + region = s.PartitionEndpoint + } + + if (service == "sts" && opt.STSRegionalEndpoint != RegionalSTSEndpoint) || + (service == "s3" && opt.S3UsEast1RegionalEndpoint != RegionalS3UsEast1Endpoint) { + if _, ok := legacyGlobalRegions[service][region]; ok { + region = "aws-global" + } + } + + e, hasEndpoint := s.endpointForRegion(region) + if len(region) == 0 || (!hasEndpoint && opt.StrictMatching) { + return resolved, NewUnknownEndpointError(p.ID, service, region, endpointList(s.Endpoints)) + } + + defs := []endpoint{p.Defaults, s.Defaults} + + return e.resolve(service, p.ID, region, p.DNSSuffix, defs, opt), nil +} + +func serviceList(ss services) []string { + list := make([]string, 0, len(ss)) + for k := range ss { + list = append(list, k) + } + return list +} +func endpointList(es endpoints) []string { + list := make([]string, 0, len(es)) + for k := range es { + list = append(list, k) + } + return list +} + +type regionRegex struct { + *regexp.Regexp +} + +func (rr *regionRegex) UnmarshalJSON(b []byte) (err error) { + // Strip leading and trailing quotes + regex, err := strconv.Unquote(string(b)) + if err != nil { + return fmt.Errorf("unable to strip quotes from regex, %v", err) + } + + rr.Regexp, err = regexp.Compile(regex) + if err != nil { + return fmt.Errorf("unable to unmarshal region regex, %v", err) + } + return nil +} + +type regions map[string]region + +type region struct { + Description string `json:"description"` +} + +type services map[string]service + +type service struct { + PartitionEndpoint string `json:"partitionEndpoint"` + IsRegionalized boxedBool `json:"isRegionalized,omitempty"` + Defaults endpoint `json:"defaults"` + Endpoints endpoints `json:"endpoints"` +} + +func (s *service) endpointForRegion(region string) (endpoint, bool) { + if s.IsRegionalized == boxedFalse { + return s.Endpoints[s.PartitionEndpoint], region == s.PartitionEndpoint + } + + if e, ok := s.Endpoints[region]; ok { + return e, true + } + + // Unable to find any matching endpoint, return + // blank that will be used for generic endpoint creation. + return endpoint{}, false +} + +type endpoints map[string]endpoint + +type endpoint struct { + Hostname string `json:"hostname"` + Protocols []string `json:"protocols"` + CredentialScope credentialScope `json:"credentialScope"` + + // Custom fields not modeled + HasDualStack boxedBool `json:"-"` + DualStackHostname string `json:"-"` + + // Signature Version not used + SignatureVersions []string `json:"signatureVersions"` + + // SSLCommonName not used. + SSLCommonName string `json:"sslCommonName"` +} + +const ( + defaultProtocol = "https" + defaultSigner = "v4" +) + +var ( + protocolPriority = []string{"https", "http"} + signerPriority = []string{"v4", "v2"} +) + +func getByPriority(s []string, p []string, def string) string { + if len(s) == 0 { + return def + } + + for i := 0; i < len(p); i++ { + for j := 0; j < len(s); j++ { + if s[j] == p[i] { + return s[j] + } + } + } + + return s[0] +} + +func (e endpoint) resolve(service, partitionID, region, dnsSuffix string, defs []endpoint, opts Options) ResolvedEndpoint { + var merged endpoint + for _, def := range defs { + merged.mergeIn(def) + } + merged.mergeIn(e) + e = merged + + signingRegion := e.CredentialScope.Region + if len(signingRegion) == 0 { + signingRegion = region + } + + signingName := e.CredentialScope.Service + var signingNameDerived bool + if len(signingName) == 0 { + signingName = service + signingNameDerived = true + } + + hostname := e.Hostname + // Offset the hostname for dualstack if enabled + if opts.UseDualStack && e.HasDualStack == boxedTrue { + hostname = e.DualStackHostname + region = signingRegion + } + + u := strings.Replace(hostname, "{service}", service, 1) + u = strings.Replace(u, "{region}", region, 1) + u = strings.Replace(u, "{dnsSuffix}", dnsSuffix, 1) + + scheme := getEndpointScheme(e.Protocols, opts.DisableSSL) + u = fmt.Sprintf("%s://%s", scheme, u) + + return ResolvedEndpoint{ + URL: u, + PartitionID: partitionID, + SigningRegion: signingRegion, + SigningName: signingName, + SigningNameDerived: signingNameDerived, + SigningMethod: getByPriority(e.SignatureVersions, signerPriority, defaultSigner), + } +} + +func getEndpointScheme(protocols []string, disableSSL bool) string { + if disableSSL { + return "http" + } + + return getByPriority(protocols, protocolPriority, defaultProtocol) +} + +func (e *endpoint) mergeIn(other endpoint) { + if len(other.Hostname) > 0 { + e.Hostname = other.Hostname + } + if len(other.Protocols) > 0 { + e.Protocols = other.Protocols + } + if len(other.SignatureVersions) > 0 { + e.SignatureVersions = other.SignatureVersions + } + if len(other.CredentialScope.Region) > 0 { + e.CredentialScope.Region = other.CredentialScope.Region + } + if len(other.CredentialScope.Service) > 0 { + e.CredentialScope.Service = other.CredentialScope.Service + } + if len(other.SSLCommonName) > 0 { + e.SSLCommonName = other.SSLCommonName + } + if other.HasDualStack != boxedBoolUnset { + e.HasDualStack = other.HasDualStack + } + if len(other.DualStackHostname) > 0 { + e.DualStackHostname = other.DualStackHostname + } +} + +type credentialScope struct { + Region string `json:"region"` + Service string `json:"service"` +} + +type boxedBool int + +func (b *boxedBool) UnmarshalJSON(buf []byte) error { + v, err := strconv.ParseBool(string(buf)) + if err != nil { + return err + } + + if v { + *b = boxedTrue + } else { + *b = boxedFalse + } + + return nil +} + +const ( + boxedBoolUnset boxedBool = iota + boxedFalse + boxedTrue +) diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model_codegen.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model_codegen.go new file mode 100644 index 0000000..0fdfcc5 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model_codegen.go @@ -0,0 +1,351 @@ +// +build codegen + +package endpoints + +import ( + "fmt" + "io" + "reflect" + "strings" + "text/template" + "unicode" +) + +// A CodeGenOptions are the options for code generating the endpoints into +// Go code from the endpoints model definition. +type CodeGenOptions struct { + // Options for how the model will be decoded. + DecodeModelOptions DecodeModelOptions + + // Disables code generation of the service endpoint prefix IDs defined in + // the model. + DisableGenerateServiceIDs bool +} + +// Set combines all of the option functions together +func (d *CodeGenOptions) Set(optFns ...func(*CodeGenOptions)) { + for _, fn := range optFns { + fn(d) + } +} + +// CodeGenModel given a endpoints model file will decode it and attempt to +// generate Go code from the model definition. Error will be returned if +// the code is unable to be generated, or decoded. +func CodeGenModel(modelFile io.Reader, outFile io.Writer, optFns ...func(*CodeGenOptions)) error { + var opts CodeGenOptions + opts.Set(optFns...) + + resolver, err := DecodeModel(modelFile, func(d *DecodeModelOptions) { + *d = opts.DecodeModelOptions + }) + if err != nil { + return err + } + + v := struct { + Resolver + CodeGenOptions + }{ + Resolver: resolver, + CodeGenOptions: opts, + } + + tmpl := template.Must(template.New("tmpl").Funcs(funcMap).Parse(v3Tmpl)) + if err := tmpl.ExecuteTemplate(outFile, "defaults", v); err != nil { + return fmt.Errorf("failed to execute template, %v", err) + } + + return nil +} + +func toSymbol(v string) string { + out := []rune{} + for _, c := range strings.Title(v) { + if !(unicode.IsNumber(c) || unicode.IsLetter(c)) { + continue + } + + out = append(out, c) + } + + return string(out) +} + +func quoteString(v string) string { + return fmt.Sprintf("%q", v) +} + +func regionConstName(p, r string) string { + return toSymbol(p) + toSymbol(r) +} + +func partitionGetter(id string) string { + return fmt.Sprintf("%sPartition", toSymbol(id)) +} + +func partitionVarName(id string) string { + return fmt.Sprintf("%sPartition", strings.ToLower(toSymbol(id))) +} + +func listPartitionNames(ps partitions) string { + names := []string{} + switch len(ps) { + case 1: + return ps[0].Name + case 2: + return fmt.Sprintf("%s and %s", ps[0].Name, ps[1].Name) + default: + for i, p := range ps { + if i == len(ps)-1 { + names = append(names, "and "+p.Name) + } else { + names = append(names, p.Name) + } + } + return strings.Join(names, ", ") + } +} + +func boxedBoolIfSet(msg string, v boxedBool) string { + switch v { + case boxedTrue: + return fmt.Sprintf(msg, "boxedTrue") + case boxedFalse: + return fmt.Sprintf(msg, "boxedFalse") + default: + return "" + } +} + +func stringIfSet(msg, v string) string { + if len(v) == 0 { + return "" + } + + return fmt.Sprintf(msg, v) +} + +func stringSliceIfSet(msg string, vs []string) string { + if len(vs) == 0 { + return "" + } + + names := []string{} + for _, v := range vs { + names = append(names, `"`+v+`"`) + } + + return fmt.Sprintf(msg, strings.Join(names, ",")) +} + +func endpointIsSet(v endpoint) bool { + return !reflect.DeepEqual(v, endpoint{}) +} + +func serviceSet(ps partitions) map[string]struct{} { + set := map[string]struct{}{} + for _, p := range ps { + for id := range p.Services { + set[id] = struct{}{} + } + } + + return set +} + +var funcMap = template.FuncMap{ + "ToSymbol": toSymbol, + "QuoteString": quoteString, + "RegionConst": regionConstName, + "PartitionGetter": partitionGetter, + "PartitionVarName": partitionVarName, + "ListPartitionNames": listPartitionNames, + "BoxedBoolIfSet": boxedBoolIfSet, + "StringIfSet": stringIfSet, + "StringSliceIfSet": stringSliceIfSet, + "EndpointIsSet": endpointIsSet, + "ServicesSet": serviceSet, +} + +const v3Tmpl = ` +{{ define "defaults" -}} +// Code generated by aws/endpoints/v3model_codegen.go. DO NOT EDIT. + +package endpoints + +import ( + "regexp" +) + + {{ template "partition consts" $.Resolver }} + + {{ range $_, $partition := $.Resolver }} + {{ template "partition region consts" $partition }} + {{ end }} + + {{ if not $.DisableGenerateServiceIDs -}} + {{ template "service consts" $.Resolver }} + {{- end }} + + {{ template "endpoint resolvers" $.Resolver }} +{{- end }} + +{{ define "partition consts" }} + // Partition identifiers + const ( + {{ range $_, $p := . -}} + {{ ToSymbol $p.ID }}PartitionID = {{ QuoteString $p.ID }} // {{ $p.Name }} partition. + {{ end -}} + ) +{{- end }} + +{{ define "partition region consts" }} + // {{ .Name }} partition's regions. + const ( + {{ range $id, $region := .Regions -}} + {{ ToSymbol $id }}RegionID = {{ QuoteString $id }} // {{ $region.Description }}. + {{ end -}} + ) +{{- end }} + +{{ define "service consts" }} + // Service identifiers + const ( + {{ $serviceSet := ServicesSet . -}} + {{ range $id, $_ := $serviceSet -}} + {{ ToSymbol $id }}ServiceID = {{ QuoteString $id }} // {{ ToSymbol $id }}. + {{ end -}} + ) +{{- end }} + +{{ define "endpoint resolvers" }} + // DefaultResolver returns an Endpoint resolver that will be able + // to resolve endpoints for: {{ ListPartitionNames . }}. + // + // Use DefaultPartitions() to get the list of the default partitions. + func DefaultResolver() Resolver { + return defaultPartitions + } + + // DefaultPartitions returns a list of the partitions the SDK is bundled + // with. The available partitions are: {{ ListPartitionNames . }}. + // + // partitions := endpoints.DefaultPartitions + // for _, p := range partitions { + // // ... inspect partitions + // } + func DefaultPartitions() []Partition { + return defaultPartitions.Partitions() + } + + var defaultPartitions = partitions{ + {{ range $_, $partition := . -}} + {{ PartitionVarName $partition.ID }}, + {{ end }} + } + + {{ range $_, $partition := . -}} + {{ $name := PartitionGetter $partition.ID -}} + // {{ $name }} returns the Resolver for {{ $partition.Name }}. + func {{ $name }}() Partition { + return {{ PartitionVarName $partition.ID }}.Partition() + } + var {{ PartitionVarName $partition.ID }} = {{ template "gocode Partition" $partition }} + {{ end }} +{{ end }} + +{{ define "default partitions" }} + func DefaultPartitions() []Partition { + return []partition{ + {{ range $_, $partition := . -}} + // {{ ToSymbol $partition.ID}}Partition(), + {{ end }} + } + } +{{ end }} + +{{ define "gocode Partition" -}} +partition{ + {{ StringIfSet "ID: %q,\n" .ID -}} + {{ StringIfSet "Name: %q,\n" .Name -}} + {{ StringIfSet "DNSSuffix: %q,\n" .DNSSuffix -}} + RegionRegex: {{ template "gocode RegionRegex" .RegionRegex }}, + {{ if EndpointIsSet .Defaults -}} + Defaults: {{ template "gocode Endpoint" .Defaults }}, + {{- end }} + Regions: {{ template "gocode Regions" .Regions }}, + Services: {{ template "gocode Services" .Services }}, +} +{{- end }} + +{{ define "gocode RegionRegex" -}} +regionRegex{ + Regexp: func() *regexp.Regexp{ + reg, _ := regexp.Compile({{ QuoteString .Regexp.String }}) + return reg + }(), +} +{{- end }} + +{{ define "gocode Regions" -}} +regions{ + {{ range $id, $region := . -}} + "{{ $id }}": {{ template "gocode Region" $region }}, + {{ end -}} +} +{{- end }} + +{{ define "gocode Region" -}} +region{ + {{ StringIfSet "Description: %q,\n" .Description -}} +} +{{- end }} + +{{ define "gocode Services" -}} +services{ + {{ range $id, $service := . -}} + "{{ $id }}": {{ template "gocode Service" $service }}, + {{ end }} +} +{{- end }} + +{{ define "gocode Service" -}} +service{ + {{ StringIfSet "PartitionEndpoint: %q,\n" .PartitionEndpoint -}} + {{ BoxedBoolIfSet "IsRegionalized: %s,\n" .IsRegionalized -}} + {{ if EndpointIsSet .Defaults -}} + Defaults: {{ template "gocode Endpoint" .Defaults -}}, + {{- end }} + {{ if .Endpoints -}} + Endpoints: {{ template "gocode Endpoints" .Endpoints }}, + {{- end }} +} +{{- end }} + +{{ define "gocode Endpoints" -}} +endpoints{ + {{ range $id, $endpoint := . -}} + "{{ $id }}": {{ template "gocode Endpoint" $endpoint }}, + {{ end }} +} +{{- end }} + +{{ define "gocode Endpoint" -}} +endpoint{ + {{ StringIfSet "Hostname: %q,\n" .Hostname -}} + {{ StringIfSet "SSLCommonName: %q,\n" .SSLCommonName -}} + {{ StringSliceIfSet "Protocols: []string{%s},\n" .Protocols -}} + {{ StringSliceIfSet "SignatureVersions: []string{%s},\n" .SignatureVersions -}} + {{ if or .CredentialScope.Region .CredentialScope.Service -}} + CredentialScope: credentialScope{ + {{ StringIfSet "Region: %q,\n" .CredentialScope.Region -}} + {{ StringIfSet "Service: %q,\n" .CredentialScope.Service -}} + }, + {{- end }} + {{ BoxedBoolIfSet "HasDualStack: %s,\n" .HasDualStack -}} + {{ StringIfSet "DualStackHostname: %q,\n" .DualStackHostname -}} + +} +{{- end }} +` diff --git a/vendor/github.com/aws/aws-sdk-go/aws/errors.go b/vendor/github.com/aws/aws-sdk-go/aws/errors.go new file mode 100644 index 0000000..fa06f7a --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/errors.go @@ -0,0 +1,13 @@ +package aws + +import "github.com/aws/aws-sdk-go/aws/awserr" + +var ( + // ErrMissingRegion is an error that is returned if region configuration is + // not found. + ErrMissingRegion = awserr.New("MissingRegion", "could not find region configuration", nil) + + // ErrMissingEndpoint is an error that is returned if an endpoint cannot be + // resolved for a service. + ErrMissingEndpoint = awserr.New("MissingEndpoint", "'Endpoint' configuration is required for this service", nil) +) diff --git a/vendor/github.com/aws/aws-sdk-go/aws/jsonvalue.go b/vendor/github.com/aws/aws-sdk-go/aws/jsonvalue.go new file mode 100644 index 0000000..91a6f27 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/jsonvalue.go @@ -0,0 +1,12 @@ +package aws + +// JSONValue is a representation of a grab bag type that will be marshaled +// into a json string. This type can be used just like any other map. +// +// Example: +// +// values := aws.JSONValue{ +// "Foo": "Bar", +// } +// values["Baz"] = "Qux" +type JSONValue map[string]interface{} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/logger.go b/vendor/github.com/aws/aws-sdk-go/aws/logger.go new file mode 100644 index 0000000..6ed15b2 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/logger.go @@ -0,0 +1,118 @@ +package aws + +import ( + "log" + "os" +) + +// A LogLevelType defines the level logging should be performed at. Used to instruct +// the SDK which statements should be logged. +type LogLevelType uint + +// LogLevel returns the pointer to a LogLevel. Should be used to workaround +// not being able to take the address of a non-composite literal. +func LogLevel(l LogLevelType) *LogLevelType { + return &l +} + +// Value returns the LogLevel value or the default value LogOff if the LogLevel +// is nil. Safe to use on nil value LogLevelTypes. +func (l *LogLevelType) Value() LogLevelType { + if l != nil { + return *l + } + return LogOff +} + +// Matches returns true if the v LogLevel is enabled by this LogLevel. Should be +// used with logging sub levels. Is safe to use on nil value LogLevelTypes. If +// LogLevel is nil, will default to LogOff comparison. +func (l *LogLevelType) Matches(v LogLevelType) bool { + c := l.Value() + return c&v == v +} + +// AtLeast returns true if this LogLevel is at least high enough to satisfies v. +// Is safe to use on nil value LogLevelTypes. If LogLevel is nil, will default +// to LogOff comparison. +func (l *LogLevelType) AtLeast(v LogLevelType) bool { + c := l.Value() + return c >= v +} + +const ( + // LogOff states that no logging should be performed by the SDK. This is the + // default state of the SDK, and should be use to disable all logging. + LogOff LogLevelType = iota * 0x1000 + + // LogDebug state that debug output should be logged by the SDK. This should + // be used to inspect request made and responses received. + LogDebug +) + +// Debug Logging Sub Levels +const ( + // LogDebugWithSigning states that the SDK should log request signing and + // presigning events. This should be used to log the signing details of + // requests for debugging. Will also enable LogDebug. + LogDebugWithSigning LogLevelType = LogDebug | (1 << iota) + + // LogDebugWithHTTPBody states the SDK should log HTTP request and response + // HTTP bodys in addition to the headers and path. This should be used to + // see the body content of requests and responses made while using the SDK + // Will also enable LogDebug. + LogDebugWithHTTPBody + + // LogDebugWithRequestRetries states the SDK should log when service requests will + // be retried. This should be used to log when you want to log when service + // requests are being retried. Will also enable LogDebug. + LogDebugWithRequestRetries + + // LogDebugWithRequestErrors states the SDK should log when service requests fail + // to build, send, validate, or unmarshal. + LogDebugWithRequestErrors + + // LogDebugWithEventStreamBody states the SDK should log EventStream + // request and response bodys. This should be used to log the EventStream + // wire unmarshaled message content of requests and responses made while + // using the SDK Will also enable LogDebug. + LogDebugWithEventStreamBody +) + +// A Logger is a minimalistic interface for the SDK to log messages to. Should +// be used to provide custom logging writers for the SDK to use. +type Logger interface { + Log(...interface{}) +} + +// A LoggerFunc is a convenience type to convert a function taking a variadic +// list of arguments and wrap it so the Logger interface can be used. +// +// Example: +// s3.New(sess, &aws.Config{Logger: aws.LoggerFunc(func(args ...interface{}) { +// fmt.Fprintln(os.Stdout, args...) +// })}) +type LoggerFunc func(...interface{}) + +// Log calls the wrapped function with the arguments provided +func (f LoggerFunc) Log(args ...interface{}) { + f(args...) +} + +// NewDefaultLogger returns a Logger which will write log messages to stdout, and +// use same formatting runes as the stdlib log.Logger +func NewDefaultLogger() Logger { + return &defaultLogger{ + logger: log.New(os.Stdout, "", log.LstdFlags), + } +} + +// A defaultLogger provides a minimalistic logger satisfying the Logger interface. +type defaultLogger struct { + logger *log.Logger +} + +// Log logs the parameters to the stdlib logger. See log.Println. +func (l defaultLogger) Log(args ...interface{}) { + l.logger.Println(args...) +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/request/connection_reset_error.go b/vendor/github.com/aws/aws-sdk-go/aws/request/connection_reset_error.go new file mode 100644 index 0000000..d9b37f4 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/request/connection_reset_error.go @@ -0,0 +1,18 @@ +package request + +import ( + "strings" +) + +func isErrConnectionReset(err error) bool { + if strings.Contains(err.Error(), "read: connection reset") { + return false + } + + if strings.Contains(err.Error(), "connection reset") || + strings.Contains(err.Error(), "broken pipe") { + return true + } + + return false +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/request/handlers.go b/vendor/github.com/aws/aws-sdk-go/aws/request/handlers.go new file mode 100644 index 0000000..185b073 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/request/handlers.go @@ -0,0 +1,322 @@ +package request + +import ( + "fmt" + "strings" +) + +// A Handlers provides a collection of request handlers for various +// stages of handling requests. +type Handlers struct { + Validate HandlerList + Build HandlerList + Sign HandlerList + Send HandlerList + ValidateResponse HandlerList + Unmarshal HandlerList + UnmarshalStream HandlerList + UnmarshalMeta HandlerList + UnmarshalError HandlerList + Retry HandlerList + AfterRetry HandlerList + CompleteAttempt HandlerList + Complete HandlerList +} + +// Copy returns a copy of this handler's lists. +func (h *Handlers) Copy() Handlers { + return Handlers{ + Validate: h.Validate.copy(), + Build: h.Build.copy(), + Sign: h.Sign.copy(), + Send: h.Send.copy(), + ValidateResponse: h.ValidateResponse.copy(), + Unmarshal: h.Unmarshal.copy(), + UnmarshalStream: h.UnmarshalStream.copy(), + UnmarshalError: h.UnmarshalError.copy(), + UnmarshalMeta: h.UnmarshalMeta.copy(), + Retry: h.Retry.copy(), + AfterRetry: h.AfterRetry.copy(), + CompleteAttempt: h.CompleteAttempt.copy(), + Complete: h.Complete.copy(), + } +} + +// Clear removes callback functions for all handlers. +func (h *Handlers) Clear() { + h.Validate.Clear() + h.Build.Clear() + h.Send.Clear() + h.Sign.Clear() + h.Unmarshal.Clear() + h.UnmarshalStream.Clear() + h.UnmarshalMeta.Clear() + h.UnmarshalError.Clear() + h.ValidateResponse.Clear() + h.Retry.Clear() + h.AfterRetry.Clear() + h.CompleteAttempt.Clear() + h.Complete.Clear() +} + +// IsEmpty returns if there are no handlers in any of the handlerlists. +func (h *Handlers) IsEmpty() bool { + if h.Validate.Len() != 0 { + return false + } + if h.Build.Len() != 0 { + return false + } + if h.Send.Len() != 0 { + return false + } + if h.Sign.Len() != 0 { + return false + } + if h.Unmarshal.Len() != 0 { + return false + } + if h.UnmarshalStream.Len() != 0 { + return false + } + if h.UnmarshalMeta.Len() != 0 { + return false + } + if h.UnmarshalError.Len() != 0 { + return false + } + if h.ValidateResponse.Len() != 0 { + return false + } + if h.Retry.Len() != 0 { + return false + } + if h.AfterRetry.Len() != 0 { + return false + } + if h.CompleteAttempt.Len() != 0 { + return false + } + if h.Complete.Len() != 0 { + return false + } + + return true +} + +// A HandlerListRunItem represents an entry in the HandlerList which +// is being run. +type HandlerListRunItem struct { + Index int + Handler NamedHandler + Request *Request +} + +// A HandlerList manages zero or more handlers in a list. +type HandlerList struct { + list []NamedHandler + + // Called after each request handler in the list is called. If set + // and the func returns true the HandlerList will continue to iterate + // over the request handlers. If false is returned the HandlerList + // will stop iterating. + // + // Should be used if extra logic to be performed between each handler + // in the list. This can be used to terminate a list's iteration + // based on a condition such as error like, HandlerListStopOnError. + // Or for logging like HandlerListLogItem. + AfterEachFn func(item HandlerListRunItem) bool +} + +// A NamedHandler is a struct that contains a name and function callback. +type NamedHandler struct { + Name string + Fn func(*Request) +} + +// copy creates a copy of the handler list. +func (l *HandlerList) copy() HandlerList { + n := HandlerList{ + AfterEachFn: l.AfterEachFn, + } + if len(l.list) == 0 { + return n + } + + n.list = append(make([]NamedHandler, 0, len(l.list)), l.list...) + return n +} + +// Clear clears the handler list. +func (l *HandlerList) Clear() { + l.list = l.list[0:0] +} + +// Len returns the number of handlers in the list. +func (l *HandlerList) Len() int { + return len(l.list) +} + +// PushBack pushes handler f to the back of the handler list. +func (l *HandlerList) PushBack(f func(*Request)) { + l.PushBackNamed(NamedHandler{"__anonymous", f}) +} + +// PushBackNamed pushes named handler f to the back of the handler list. +func (l *HandlerList) PushBackNamed(n NamedHandler) { + if cap(l.list) == 0 { + l.list = make([]NamedHandler, 0, 5) + } + l.list = append(l.list, n) +} + +// PushFront pushes handler f to the front of the handler list. +func (l *HandlerList) PushFront(f func(*Request)) { + l.PushFrontNamed(NamedHandler{"__anonymous", f}) +} + +// PushFrontNamed pushes named handler f to the front of the handler list. +func (l *HandlerList) PushFrontNamed(n NamedHandler) { + if cap(l.list) == len(l.list) { + // Allocating new list required + l.list = append([]NamedHandler{n}, l.list...) + } else { + // Enough room to prepend into list. + l.list = append(l.list, NamedHandler{}) + copy(l.list[1:], l.list) + l.list[0] = n + } +} + +// Remove removes a NamedHandler n +func (l *HandlerList) Remove(n NamedHandler) { + l.RemoveByName(n.Name) +} + +// RemoveByName removes a NamedHandler by name. +func (l *HandlerList) RemoveByName(name string) { + for i := 0; i < len(l.list); i++ { + m := l.list[i] + if m.Name == name { + // Shift array preventing creating new arrays + copy(l.list[i:], l.list[i+1:]) + l.list[len(l.list)-1] = NamedHandler{} + l.list = l.list[:len(l.list)-1] + + // decrement list so next check to length is correct + i-- + } + } +} + +// SwapNamed will swap out any existing handlers with the same name as the +// passed in NamedHandler returning true if handlers were swapped. False is +// returned otherwise. +func (l *HandlerList) SwapNamed(n NamedHandler) (swapped bool) { + for i := 0; i < len(l.list); i++ { + if l.list[i].Name == n.Name { + l.list[i].Fn = n.Fn + swapped = true + } + } + + return swapped +} + +// Swap will swap out all handlers matching the name passed in. The matched +// handlers will be swapped in. True is returned if the handlers were swapped. +func (l *HandlerList) Swap(name string, replace NamedHandler) bool { + var swapped bool + + for i := 0; i < len(l.list); i++ { + if l.list[i].Name == name { + l.list[i] = replace + swapped = true + } + } + + return swapped +} + +// SetBackNamed will replace the named handler if it exists in the handler list. +// If the handler does not exist the handler will be added to the end of the list. +func (l *HandlerList) SetBackNamed(n NamedHandler) { + if !l.SwapNamed(n) { + l.PushBackNamed(n) + } +} + +// SetFrontNamed will replace the named handler if it exists in the handler list. +// If the handler does not exist the handler will be added to the beginning of +// the list. +func (l *HandlerList) SetFrontNamed(n NamedHandler) { + if !l.SwapNamed(n) { + l.PushFrontNamed(n) + } +} + +// Run executes all handlers in the list with a given request object. +func (l *HandlerList) Run(r *Request) { + for i, h := range l.list { + h.Fn(r) + item := HandlerListRunItem{ + Index: i, Handler: h, Request: r, + } + if l.AfterEachFn != nil && !l.AfterEachFn(item) { + return + } + } +} + +// HandlerListLogItem logs the request handler and the state of the +// request's Error value. Always returns true to continue iterating +// request handlers in a HandlerList. +func HandlerListLogItem(item HandlerListRunItem) bool { + if item.Request.Config.Logger == nil { + return true + } + item.Request.Config.Logger.Log("DEBUG: RequestHandler", + item.Index, item.Handler.Name, item.Request.Error) + + return true +} + +// HandlerListStopOnError returns false to stop the HandlerList iterating +// over request handlers if Request.Error is not nil. True otherwise +// to continue iterating. +func HandlerListStopOnError(item HandlerListRunItem) bool { + return item.Request.Error == nil +} + +// WithAppendUserAgent will add a string to the user agent prefixed with a +// single white space. +func WithAppendUserAgent(s string) Option { + return func(r *Request) { + r.Handlers.Build.PushBack(func(r2 *Request) { + AddToUserAgent(r, s) + }) + } +} + +// MakeAddToUserAgentHandler will add the name/version pair to the User-Agent request +// header. If the extra parameters are provided they will be added as metadata to the +// name/version pair resulting in the following format. +// "name/version (extra0; extra1; ...)" +// The user agent part will be concatenated with this current request's user agent string. +func MakeAddToUserAgentHandler(name, version string, extra ...string) func(*Request) { + ua := fmt.Sprintf("%s/%s", name, version) + if len(extra) > 0 { + ua += fmt.Sprintf(" (%s)", strings.Join(extra, "; ")) + } + return func(r *Request) { + AddToUserAgent(r, ua) + } +} + +// MakeAddToUserAgentFreeFormHandler adds the input to the User-Agent request header. +// The input string will be concatenated with the current request's user agent string. +func MakeAddToUserAgentFreeFormHandler(s string) func(*Request) { + return func(r *Request) { + AddToUserAgent(r, s) + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/request/http_request.go b/vendor/github.com/aws/aws-sdk-go/aws/request/http_request.go new file mode 100644 index 0000000..79f7960 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/request/http_request.go @@ -0,0 +1,24 @@ +package request + +import ( + "io" + "net/http" + "net/url" +) + +func copyHTTPRequest(r *http.Request, body io.ReadCloser) *http.Request { + req := new(http.Request) + *req = *r + req.URL = &url.URL{} + *req.URL = *r.URL + req.Body = body + + req.Header = http.Header{} + for k, v := range r.Header { + for _, vv := range v { + req.Header.Add(k, vv) + } + } + + return req +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/request/offset_reader.go b/vendor/github.com/aws/aws-sdk-go/aws/request/offset_reader.go new file mode 100644 index 0000000..9370fa5 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/request/offset_reader.go @@ -0,0 +1,65 @@ +package request + +import ( + "io" + "sync" + + "github.com/aws/aws-sdk-go/internal/sdkio" +) + +// offsetReader is a thread-safe io.ReadCloser to prevent racing +// with retrying requests +type offsetReader struct { + buf io.ReadSeeker + lock sync.Mutex + closed bool +} + +func newOffsetReader(buf io.ReadSeeker, offset int64) (*offsetReader, error) { + reader := &offsetReader{} + _, err := buf.Seek(offset, sdkio.SeekStart) + if err != nil { + return nil, err + } + + reader.buf = buf + return reader, nil +} + +// Close will close the instance of the offset reader's access to +// the underlying io.ReadSeeker. +func (o *offsetReader) Close() error { + o.lock.Lock() + defer o.lock.Unlock() + o.closed = true + return nil +} + +// Read is a thread-safe read of the underlying io.ReadSeeker +func (o *offsetReader) Read(p []byte) (int, error) { + o.lock.Lock() + defer o.lock.Unlock() + + if o.closed { + return 0, io.EOF + } + + return o.buf.Read(p) +} + +// Seek is a thread-safe seeking operation. +func (o *offsetReader) Seek(offset int64, whence int) (int64, error) { + o.lock.Lock() + defer o.lock.Unlock() + + return o.buf.Seek(offset, whence) +} + +// CloseAndCopy will return a new offsetReader with a copy of the old buffer +// and close the old buffer. +func (o *offsetReader) CloseAndCopy(offset int64) (*offsetReader, error) { + if err := o.Close(); err != nil { + return nil, err + } + return newOffsetReader(o.buf, offset) +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/request/request.go b/vendor/github.com/aws/aws-sdk-go/aws/request/request.go new file mode 100644 index 0000000..5217814 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/request/request.go @@ -0,0 +1,678 @@ +package request + +import ( + "bytes" + "fmt" + "io" + "net/http" + "net/url" + "reflect" + "strings" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/client/metadata" + "github.com/aws/aws-sdk-go/internal/sdkio" +) + +const ( + // ErrCodeSerialization is the serialization error code that is received + // during protocol unmarshaling. + ErrCodeSerialization = "SerializationError" + + // ErrCodeRead is an error that is returned during HTTP reads. + ErrCodeRead = "ReadError" + + // ErrCodeResponseTimeout is the connection timeout error that is received + // during body reads. + ErrCodeResponseTimeout = "ResponseTimeout" + + // ErrCodeInvalidPresignExpire is returned when the expire time provided to + // presign is invalid + ErrCodeInvalidPresignExpire = "InvalidPresignExpireError" + + // CanceledErrorCode is the error code that will be returned by an + // API request that was canceled. Requests given a aws.Context may + // return this error when canceled. + CanceledErrorCode = "RequestCanceled" +) + +// A Request is the service request to be made. +type Request struct { + Config aws.Config + ClientInfo metadata.ClientInfo + Handlers Handlers + + Retryer + AttemptTime time.Time + Time time.Time + Operation *Operation + HTTPRequest *http.Request + HTTPResponse *http.Response + Body io.ReadSeeker + BodyStart int64 // offset from beginning of Body that the request body starts + Params interface{} + Error error + Data interface{} + RequestID string + RetryCount int + Retryable *bool + RetryDelay time.Duration + NotHoist bool + SignedHeaderVals http.Header + LastSignedAt time.Time + DisableFollowRedirects bool + + // Additional API error codes that should be retried. IsErrorRetryable + // will consider these codes in addition to its built in cases. + RetryErrorCodes []string + + // Additional API error codes that should be retried with throttle backoff + // delay. IsErrorThrottle will consider these codes in addition to its + // built in cases. + ThrottleErrorCodes []string + + // A value greater than 0 instructs the request to be signed as Presigned URL + // You should not set this field directly. Instead use Request's + // Presign or PresignRequest methods. + ExpireTime time.Duration + + context aws.Context + + built bool + + // Need to persist an intermediate body between the input Body and HTTP + // request body because the HTTP Client's transport can maintain a reference + // to the HTTP request's body after the client has returned. This value is + // safe to use concurrently and wrap the input Body for each HTTP request. + safeBody *offsetReader +} + +// An Operation is the service API operation to be made. +type Operation struct { + Name string + HTTPMethod string + HTTPPath string + *Paginator + + BeforePresignFn func(r *Request) error +} + +// New returns a new Request pointer for the service API operation and +// parameters. +// +// A Retryer should be provided to direct how the request is retried. If +// Retryer is nil, a default no retry value will be used. You can use +// NoOpRetryer in the Client package to disable retry behavior directly. +// +// Params is any value of input parameters to be the request payload. +// Data is pointer value to an object which the request's response +// payload will be deserialized to. +func New(cfg aws.Config, clientInfo metadata.ClientInfo, handlers Handlers, + retryer Retryer, operation *Operation, params interface{}, data interface{}) *Request { + + if retryer == nil { + retryer = noOpRetryer{} + } + + method := operation.HTTPMethod + if method == "" { + method = "POST" + } + + httpReq, _ := http.NewRequest(method, "", nil) + + var err error + httpReq.URL, err = url.Parse(clientInfo.Endpoint + operation.HTTPPath) + if err != nil { + httpReq.URL = &url.URL{} + err = awserr.New("InvalidEndpointURL", "invalid endpoint uri", err) + } + + SanitizeHostForHeader(httpReq) + + r := &Request{ + Config: cfg, + ClientInfo: clientInfo, + Handlers: handlers.Copy(), + + Retryer: retryer, + Time: time.Now(), + ExpireTime: 0, + Operation: operation, + HTTPRequest: httpReq, + Body: nil, + Params: params, + Error: err, + Data: data, + } + r.SetBufferBody([]byte{}) + + return r +} + +// A Option is a functional option that can augment or modify a request when +// using a WithContext API operation method. +type Option func(*Request) + +// WithGetResponseHeader builds a request Option which will retrieve a single +// header value from the HTTP Response. If there are multiple values for the +// header key use WithGetResponseHeaders instead to access the http.Header +// map directly. The passed in val pointer must be non-nil. +// +// This Option can be used multiple times with a single API operation. +// +// var id2, versionID string +// svc.PutObjectWithContext(ctx, params, +// request.WithGetResponseHeader("x-amz-id-2", &id2), +// request.WithGetResponseHeader("x-amz-version-id", &versionID), +// ) +func WithGetResponseHeader(key string, val *string) Option { + return func(r *Request) { + r.Handlers.Complete.PushBack(func(req *Request) { + *val = req.HTTPResponse.Header.Get(key) + }) + } +} + +// WithGetResponseHeaders builds a request Option which will retrieve the +// headers from the HTTP response and assign them to the passed in headers +// variable. The passed in headers pointer must be non-nil. +// +// var headers http.Header +// svc.PutObjectWithContext(ctx, params, request.WithGetResponseHeaders(&headers)) +func WithGetResponseHeaders(headers *http.Header) Option { + return func(r *Request) { + r.Handlers.Complete.PushBack(func(req *Request) { + *headers = req.HTTPResponse.Header + }) + } +} + +// WithLogLevel is a request option that will set the request to use a specific +// log level when the request is made. +// +// svc.PutObjectWithContext(ctx, params, request.WithLogLevel(aws.LogDebugWithHTTPBody) +func WithLogLevel(l aws.LogLevelType) Option { + return func(r *Request) { + r.Config.LogLevel = aws.LogLevel(l) + } +} + +// ApplyOptions will apply each option to the request calling them in the order +// the were provided. +func (r *Request) ApplyOptions(opts ...Option) { + for _, opt := range opts { + opt(r) + } +} + +// Context will always returns a non-nil context. If Request does not have a +// context aws.BackgroundContext will be returned. +func (r *Request) Context() aws.Context { + if r.context != nil { + return r.context + } + return aws.BackgroundContext() +} + +// SetContext adds a Context to the current request that can be used to cancel +// a in-flight request. The Context value must not be nil, or this method will +// panic. +// +// Unlike http.Request.WithContext, SetContext does not return a copy of the +// Request. It is not safe to use use a single Request value for multiple +// requests. A new Request should be created for each API operation request. +// +// Go 1.6 and below: +// The http.Request's Cancel field will be set to the Done() value of +// the context. This will overwrite the Cancel field's value. +// +// Go 1.7 and above: +// The http.Request.WithContext will be used to set the context on the underlying +// http.Request. This will create a shallow copy of the http.Request. The SDK +// may create sub contexts in the future for nested requests such as retries. +func (r *Request) SetContext(ctx aws.Context) { + if ctx == nil { + panic("context cannot be nil") + } + setRequestContext(r, ctx) +} + +// WillRetry returns if the request's can be retried. +func (r *Request) WillRetry() bool { + if !aws.IsReaderSeekable(r.Body) && r.HTTPRequest.Body != NoBody { + return false + } + return r.Error != nil && aws.BoolValue(r.Retryable) && r.RetryCount < r.MaxRetries() +} + +func fmtAttemptCount(retryCount, maxRetries int) string { + return fmt.Sprintf("attempt %v/%v", retryCount, maxRetries) +} + +// ParamsFilled returns if the request's parameters have been populated +// and the parameters are valid. False is returned if no parameters are +// provided or invalid. +func (r *Request) ParamsFilled() bool { + return r.Params != nil && reflect.ValueOf(r.Params).Elem().IsValid() +} + +// DataFilled returns true if the request's data for response deserialization +// target has been set and is a valid. False is returned if data is not +// set, or is invalid. +func (r *Request) DataFilled() bool { + return r.Data != nil && reflect.ValueOf(r.Data).Elem().IsValid() +} + +// SetBufferBody will set the request's body bytes that will be sent to +// the service API. +func (r *Request) SetBufferBody(buf []byte) { + r.SetReaderBody(bytes.NewReader(buf)) +} + +// SetStringBody sets the body of the request to be backed by a string. +func (r *Request) SetStringBody(s string) { + r.SetReaderBody(strings.NewReader(s)) +} + +// SetReaderBody will set the request's body reader. +func (r *Request) SetReaderBody(reader io.ReadSeeker) { + r.Body = reader + + if aws.IsReaderSeekable(reader) { + var err error + // Get the Bodies current offset so retries will start from the same + // initial position. + r.BodyStart, err = reader.Seek(0, sdkio.SeekCurrent) + if err != nil { + r.Error = awserr.New(ErrCodeSerialization, + "failed to determine start of request body", err) + return + } + } + r.ResetBody() +} + +// Presign returns the request's signed URL. Error will be returned +// if the signing fails. The expire parameter is only used for presigned Amazon +// S3 API requests. All other AWS services will use a fixed expiration +// time of 15 minutes. +// +// It is invalid to create a presigned URL with a expire duration 0 or less. An +// error is returned if expire duration is 0 or less. +func (r *Request) Presign(expire time.Duration) (string, error) { + r = r.copy() + + // Presign requires all headers be hoisted. There is no way to retrieve + // the signed headers not hoisted without this. Making the presigned URL + // useless. + r.NotHoist = false + + u, _, err := getPresignedURL(r, expire) + return u, err +} + +// PresignRequest behaves just like presign, with the addition of returning a +// set of headers that were signed. The expire parameter is only used for +// presigned Amazon S3 API requests. All other AWS services will use a fixed +// expiration time of 15 minutes. +// +// It is invalid to create a presigned URL with a expire duration 0 or less. An +// error is returned if expire duration is 0 or less. +// +// Returns the URL string for the API operation with signature in the query string, +// and the HTTP headers that were included in the signature. These headers must +// be included in any HTTP request made with the presigned URL. +// +// To prevent hoisting any headers to the query string set NotHoist to true on +// this Request value prior to calling PresignRequest. +func (r *Request) PresignRequest(expire time.Duration) (string, http.Header, error) { + r = r.copy() + return getPresignedURL(r, expire) +} + +// IsPresigned returns true if the request represents a presigned API url. +func (r *Request) IsPresigned() bool { + return r.ExpireTime != 0 +} + +func getPresignedURL(r *Request, expire time.Duration) (string, http.Header, error) { + if expire <= 0 { + return "", nil, awserr.New( + ErrCodeInvalidPresignExpire, + "presigned URL requires an expire duration greater than 0", + nil, + ) + } + + r.ExpireTime = expire + + if r.Operation.BeforePresignFn != nil { + if err := r.Operation.BeforePresignFn(r); err != nil { + return "", nil, err + } + } + + if err := r.Sign(); err != nil { + return "", nil, err + } + + return r.HTTPRequest.URL.String(), r.SignedHeaderVals, nil +} + +const ( + notRetrying = "not retrying" +) + +func debugLogReqError(r *Request, stage, retryStr string, err error) { + if !r.Config.LogLevel.Matches(aws.LogDebugWithRequestErrors) { + return + } + + r.Config.Logger.Log(fmt.Sprintf("DEBUG: %s %s/%s failed, %s, error %v", + stage, r.ClientInfo.ServiceName, r.Operation.Name, retryStr, err)) +} + +// Build will build the request's object so it can be signed and sent +// to the service. Build will also validate all the request's parameters. +// Any additional build Handlers set on this request will be run +// in the order they were set. +// +// The request will only be built once. Multiple calls to build will have +// no effect. +// +// If any Validate or Build errors occur the build will stop and the error +// which occurred will be returned. +func (r *Request) Build() error { + if !r.built { + r.Handlers.Validate.Run(r) + if r.Error != nil { + debugLogReqError(r, "Validate Request", notRetrying, r.Error) + return r.Error + } + r.Handlers.Build.Run(r) + if r.Error != nil { + debugLogReqError(r, "Build Request", notRetrying, r.Error) + return r.Error + } + r.built = true + } + + return r.Error +} + +// Sign will sign the request, returning error if errors are encountered. +// +// Sign will build the request prior to signing. All Sign Handlers will +// be executed in the order they were set. +func (r *Request) Sign() error { + r.Build() + if r.Error != nil { + debugLogReqError(r, "Build Request", notRetrying, r.Error) + return r.Error + } + + r.Handlers.Sign.Run(r) + return r.Error +} + +func (r *Request) getNextRequestBody() (body io.ReadCloser, err error) { + if r.safeBody != nil { + r.safeBody.Close() + } + + r.safeBody, err = newOffsetReader(r.Body, r.BodyStart) + if err != nil { + return nil, awserr.New(ErrCodeSerialization, + "failed to get next request body reader", err) + } + + // Go 1.8 tightened and clarified the rules code needs to use when building + // requests with the http package. Go 1.8 removed the automatic detection + // of if the Request.Body was empty, or actually had bytes in it. The SDK + // always sets the Request.Body even if it is empty and should not actually + // be sent. This is incorrect. + // + // Go 1.8 did add a http.NoBody value that the SDK can use to tell the http + // client that the request really should be sent without a body. The + // Request.Body cannot be set to nil, which is preferable, because the + // field is exported and could introduce nil pointer dereferences for users + // of the SDK if they used that field. + // + // Related golang/go#18257 + l, err := aws.SeekerLen(r.Body) + if err != nil { + return nil, awserr.New(ErrCodeSerialization, + "failed to compute request body size", err) + } + + if l == 0 { + body = NoBody + } else if l > 0 { + body = r.safeBody + } else { + // Hack to prevent sending bodies for methods where the body + // should be ignored by the server. Sending bodies on these + // methods without an associated ContentLength will cause the + // request to socket timeout because the server does not handle + // Transfer-Encoding: chunked bodies for these methods. + // + // This would only happen if a aws.ReaderSeekerCloser was used with + // a io.Reader that was not also an io.Seeker, or did not implement + // Len() method. + switch r.Operation.HTTPMethod { + case "GET", "HEAD", "DELETE": + body = NoBody + default: + body = r.safeBody + } + } + + return body, nil +} + +// GetBody will return an io.ReadSeeker of the Request's underlying +// input body with a concurrency safe wrapper. +func (r *Request) GetBody() io.ReadSeeker { + return r.safeBody +} + +// Send will send the request, returning error if errors are encountered. +// +// Send will sign the request prior to sending. All Send Handlers will +// be executed in the order they were set. +// +// Canceling a request is non-deterministic. If a request has been canceled, +// then the transport will choose, randomly, one of the state channels during +// reads or getting the connection. +// +// readLoop() and getConn(req *Request, cm connectMethod) +// https://github.com/golang/go/blob/master/src/net/http/transport.go +// +// Send will not close the request.Request's body. +func (r *Request) Send() error { + defer func() { + // Regardless of success or failure of the request trigger the Complete + // request handlers. + r.Handlers.Complete.Run(r) + }() + + if err := r.Error; err != nil { + return err + } + + for { + r.Error = nil + r.AttemptTime = time.Now() + + if err := r.Sign(); err != nil { + debugLogReqError(r, "Sign Request", notRetrying, err) + return err + } + + if err := r.sendRequest(); err == nil { + return nil + } + r.Handlers.Retry.Run(r) + r.Handlers.AfterRetry.Run(r) + + if r.Error != nil || !aws.BoolValue(r.Retryable) { + return r.Error + } + + if err := r.prepareRetry(); err != nil { + r.Error = err + return err + } + } +} + +func (r *Request) prepareRetry() error { + if r.Config.LogLevel.Matches(aws.LogDebugWithRequestRetries) { + r.Config.Logger.Log(fmt.Sprintf("DEBUG: Retrying Request %s/%s, attempt %d", + r.ClientInfo.ServiceName, r.Operation.Name, r.RetryCount)) + } + + // The previous http.Request will have a reference to the r.Body + // and the HTTP Client's Transport may still be reading from + // the request's body even though the Client's Do returned. + r.HTTPRequest = copyHTTPRequest(r.HTTPRequest, nil) + r.ResetBody() + if err := r.Error; err != nil { + return awserr.New(ErrCodeSerialization, + "failed to prepare body for retry", err) + + } + + // Closing response body to ensure that no response body is leaked + // between retry attempts. + if r.HTTPResponse != nil && r.HTTPResponse.Body != nil { + r.HTTPResponse.Body.Close() + } + + return nil +} + +func (r *Request) sendRequest() (sendErr error) { + defer r.Handlers.CompleteAttempt.Run(r) + + r.Retryable = nil + r.Handlers.Send.Run(r) + if r.Error != nil { + debugLogReqError(r, "Send Request", + fmtAttemptCount(r.RetryCount, r.MaxRetries()), + r.Error) + return r.Error + } + + r.Handlers.UnmarshalMeta.Run(r) + r.Handlers.ValidateResponse.Run(r) + if r.Error != nil { + r.Handlers.UnmarshalError.Run(r) + debugLogReqError(r, "Validate Response", + fmtAttemptCount(r.RetryCount, r.MaxRetries()), + r.Error) + return r.Error + } + + r.Handlers.Unmarshal.Run(r) + if r.Error != nil { + debugLogReqError(r, "Unmarshal Response", + fmtAttemptCount(r.RetryCount, r.MaxRetries()), + r.Error) + return r.Error + } + + return nil +} + +// copy will copy a request which will allow for local manipulation of the +// request. +func (r *Request) copy() *Request { + req := &Request{} + *req = *r + req.Handlers = r.Handlers.Copy() + op := *r.Operation + req.Operation = &op + return req +} + +// AddToUserAgent adds the string to the end of the request's current user agent. +func AddToUserAgent(r *Request, s string) { + curUA := r.HTTPRequest.Header.Get("User-Agent") + if len(curUA) > 0 { + s = curUA + " " + s + } + r.HTTPRequest.Header.Set("User-Agent", s) +} + +// SanitizeHostForHeader removes default port from host and updates request.Host +func SanitizeHostForHeader(r *http.Request) { + host := getHost(r) + port := portOnly(host) + if port != "" && isDefaultPort(r.URL.Scheme, port) { + r.Host = stripPort(host) + } +} + +// Returns host from request +func getHost(r *http.Request) string { + if r.Host != "" { + return r.Host + } + + return r.URL.Host +} + +// Hostname returns u.Host, without any port number. +// +// If Host is an IPv6 literal with a port number, Hostname returns the +// IPv6 literal without the square brackets. IPv6 literals may include +// a zone identifier. +// +// Copied from the Go 1.8 standard library (net/url) +func stripPort(hostport string) string { + colon := strings.IndexByte(hostport, ':') + if colon == -1 { + return hostport + } + if i := strings.IndexByte(hostport, ']'); i != -1 { + return strings.TrimPrefix(hostport[:i], "[") + } + return hostport[:colon] +} + +// Port returns the port part of u.Host, without the leading colon. +// If u.Host doesn't contain a port, Port returns an empty string. +// +// Copied from the Go 1.8 standard library (net/url) +func portOnly(hostport string) string { + colon := strings.IndexByte(hostport, ':') + if colon == -1 { + return "" + } + if i := strings.Index(hostport, "]:"); i != -1 { + return hostport[i+len("]:"):] + } + if strings.Contains(hostport, "]") { + return "" + } + return hostport[colon+len(":"):] +} + +// Returns true if the specified URI is using the standard port +// (i.e. port 80 for HTTP URIs or 443 for HTTPS URIs) +func isDefaultPort(scheme, port string) bool { + if port == "" { + return true + } + + lowerCaseScheme := strings.ToLower(scheme) + if (lowerCaseScheme == "http" && port == "80") || (lowerCaseScheme == "https" && port == "443") { + return true + } + + return false +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/request/request_1_7.go b/vendor/github.com/aws/aws-sdk-go/aws/request/request_1_7.go new file mode 100644 index 0000000..e36e468 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/request/request_1_7.go @@ -0,0 +1,39 @@ +// +build !go1.8 + +package request + +import "io" + +// NoBody is an io.ReadCloser with no bytes. Read always returns EOF +// and Close always returns nil. It can be used in an outgoing client +// request to explicitly signal that a request has zero bytes. +// An alternative, however, is to simply set Request.Body to nil. +// +// Copy of Go 1.8 NoBody type from net/http/http.go +type noBody struct{} + +func (noBody) Read([]byte) (int, error) { return 0, io.EOF } +func (noBody) Close() error { return nil } +func (noBody) WriteTo(io.Writer) (int64, error) { return 0, nil } + +// NoBody is an empty reader that will trigger the Go HTTP client to not include +// and body in the HTTP request. +var NoBody = noBody{} + +// ResetBody rewinds the request body back to its starting position, and +// sets the HTTP Request body reference. When the body is read prior +// to being sent in the HTTP request it will need to be rewound. +// +// ResetBody will automatically be called by the SDK's build handler, but if +// the request is being used directly ResetBody must be called before the request +// is Sent. SetStringBody, SetBufferBody, and SetReaderBody will automatically +// call ResetBody. +func (r *Request) ResetBody() { + body, err := r.getNextRequestBody() + if err != nil { + r.Error = err + return + } + + r.HTTPRequest.Body = body +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/request/request_1_8.go b/vendor/github.com/aws/aws-sdk-go/aws/request/request_1_8.go new file mode 100644 index 0000000..de1292f --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/request/request_1_8.go @@ -0,0 +1,36 @@ +// +build go1.8 + +package request + +import ( + "net/http" + + "github.com/aws/aws-sdk-go/aws/awserr" +) + +// NoBody is a http.NoBody reader instructing Go HTTP client to not include +// and body in the HTTP request. +var NoBody = http.NoBody + +// ResetBody rewinds the request body back to its starting position, and +// sets the HTTP Request body reference. When the body is read prior +// to being sent in the HTTP request it will need to be rewound. +// +// ResetBody will automatically be called by the SDK's build handler, but if +// the request is being used directly ResetBody must be called before the request +// is Sent. SetStringBody, SetBufferBody, and SetReaderBody will automatically +// call ResetBody. +// +// Will also set the Go 1.8's http.Request.GetBody member to allow retrying +// PUT/POST redirects. +func (r *Request) ResetBody() { + body, err := r.getNextRequestBody() + if err != nil { + r.Error = awserr.New(ErrCodeSerialization, + "failed to reset request body", err) + return + } + + r.HTTPRequest.Body = body + r.HTTPRequest.GetBody = r.getNextRequestBody +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/request/request_context.go b/vendor/github.com/aws/aws-sdk-go/aws/request/request_context.go new file mode 100644 index 0000000..a7365cd --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/request/request_context.go @@ -0,0 +1,14 @@ +// +build go1.7 + +package request + +import "github.com/aws/aws-sdk-go/aws" + +// setContext updates the Request to use the passed in context for cancellation. +// Context will also be used for request retry delay. +// +// Creates shallow copy of the http.Request with the WithContext method. +func setRequestContext(r *Request, ctx aws.Context) { + r.context = ctx + r.HTTPRequest = r.HTTPRequest.WithContext(ctx) +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/request/request_context_1_6.go b/vendor/github.com/aws/aws-sdk-go/aws/request/request_context_1_6.go new file mode 100644 index 0000000..307fa07 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/request/request_context_1_6.go @@ -0,0 +1,14 @@ +// +build !go1.7 + +package request + +import "github.com/aws/aws-sdk-go/aws" + +// setContext updates the Request to use the passed in context for cancellation. +// Context will also be used for request retry delay. +// +// Creates shallow copy of the http.Request with the WithContext method. +func setRequestContext(r *Request, ctx aws.Context) { + r.context = ctx + r.HTTPRequest.Cancel = ctx.Done() +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/request/request_pagination.go b/vendor/github.com/aws/aws-sdk-go/aws/request/request_pagination.go new file mode 100644 index 0000000..64784e1 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/request/request_pagination.go @@ -0,0 +1,266 @@ +package request + +import ( + "reflect" + "sync/atomic" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awsutil" +) + +// A Pagination provides paginating of SDK API operations which are paginatable. +// Generally you should not use this type directly, but use the "Pages" API +// operations method to automatically perform pagination for you. Such as, +// "S3.ListObjectsPages", and "S3.ListObjectsPagesWithContext" methods. +// +// Pagination differs from a Paginator type in that pagination is the type that +// does the pagination between API operations, and Paginator defines the +// configuration that will be used per page request. +// +// for p.Next() { +// data := p.Page().(*s3.ListObjectsOutput) +// // process the page's data +// // ... +// // break out of loop to stop fetching additional pages +// } +// +// return p.Err() +// +// See service client API operation Pages methods for examples how the SDK will +// use the Pagination type. +type Pagination struct { + // Function to return a Request value for each pagination request. + // Any configuration or handlers that need to be applied to the request + // prior to getting the next page should be done here before the request + // returned. + // + // NewRequest should always be built from the same API operations. It is + // undefined if different API operations are returned on subsequent calls. + NewRequest func() (*Request, error) + // EndPageOnSameToken, when enabled, will allow the paginator to stop on + // token that are the same as its previous tokens. + EndPageOnSameToken bool + + started bool + prevTokens []interface{} + nextTokens []interface{} + + err error + curPage interface{} +} + +// HasNextPage will return true if Pagination is able to determine that the API +// operation has additional pages. False will be returned if there are no more +// pages remaining. +// +// Will always return true if Next has not been called yet. +func (p *Pagination) HasNextPage() bool { + if !p.started { + return true + } + + hasNextPage := len(p.nextTokens) != 0 + if p.EndPageOnSameToken { + return hasNextPage && !awsutil.DeepEqual(p.nextTokens, p.prevTokens) + } + return hasNextPage +} + +// Err returns the error Pagination encountered when retrieving the next page. +func (p *Pagination) Err() error { + return p.err +} + +// Page returns the current page. Page should only be called after a successful +// call to Next. It is undefined what Page will return if Page is called after +// Next returns false. +func (p *Pagination) Page() interface{} { + return p.curPage +} + +// Next will attempt to retrieve the next page for the API operation. When a page +// is retrieved true will be returned. If the page cannot be retrieved, or there +// are no more pages false will be returned. +// +// Use the Page method to retrieve the current page data. The data will need +// to be cast to the API operation's output type. +// +// Use the Err method to determine if an error occurred if Page returns false. +func (p *Pagination) Next() bool { + if !p.HasNextPage() { + return false + } + + req, err := p.NewRequest() + if err != nil { + p.err = err + return false + } + + if p.started { + for i, intok := range req.Operation.InputTokens { + awsutil.SetValueAtPath(req.Params, intok, p.nextTokens[i]) + } + } + p.started = true + + err = req.Send() + if err != nil { + p.err = err + return false + } + + p.prevTokens = p.nextTokens + p.nextTokens = req.nextPageTokens() + p.curPage = req.Data + + return true +} + +// A Paginator is the configuration data that defines how an API operation +// should be paginated. This type is used by the API service models to define +// the generated pagination config for service APIs. +// +// The Pagination type is what provides iterating between pages of an API. It +// is only used to store the token metadata the SDK should use for performing +// pagination. +type Paginator struct { + InputTokens []string + OutputTokens []string + LimitToken string + TruncationToken string +} + +// nextPageTokens returns the tokens to use when asking for the next page of data. +func (r *Request) nextPageTokens() []interface{} { + if r.Operation.Paginator == nil { + return nil + } + if r.Operation.TruncationToken != "" { + tr, _ := awsutil.ValuesAtPath(r.Data, r.Operation.TruncationToken) + if len(tr) == 0 { + return nil + } + + switch v := tr[0].(type) { + case *bool: + if !aws.BoolValue(v) { + return nil + } + case bool: + if !v { + return nil + } + } + } + + tokens := []interface{}{} + tokenAdded := false + for _, outToken := range r.Operation.OutputTokens { + vs, _ := awsutil.ValuesAtPath(r.Data, outToken) + if len(vs) == 0 { + tokens = append(tokens, nil) + continue + } + v := vs[0] + + switch tv := v.(type) { + case *string: + if len(aws.StringValue(tv)) == 0 { + tokens = append(tokens, nil) + continue + } + case string: + if len(tv) == 0 { + tokens = append(tokens, nil) + continue + } + } + + tokenAdded = true + tokens = append(tokens, v) + } + if !tokenAdded { + return nil + } + + return tokens +} + +// Ensure a deprecated item is only logged once instead of each time its used. +func logDeprecatedf(logger aws.Logger, flag *int32, msg string) { + if logger == nil { + return + } + if atomic.CompareAndSwapInt32(flag, 0, 1) { + logger.Log(msg) + } +} + +var ( + logDeprecatedHasNextPage int32 + logDeprecatedNextPage int32 + logDeprecatedEachPage int32 +) + +// HasNextPage returns true if this request has more pages of data available. +// +// Deprecated Use Pagination type for configurable pagination of API operations +func (r *Request) HasNextPage() bool { + logDeprecatedf(r.Config.Logger, &logDeprecatedHasNextPage, + "Request.HasNextPage deprecated. Use Pagination type for configurable pagination of API operations") + + return len(r.nextPageTokens()) > 0 +} + +// NextPage returns a new Request that can be executed to return the next +// page of result data. Call .Send() on this request to execute it. +// +// Deprecated Use Pagination type for configurable pagination of API operations +func (r *Request) NextPage() *Request { + logDeprecatedf(r.Config.Logger, &logDeprecatedNextPage, + "Request.NextPage deprecated. Use Pagination type for configurable pagination of API operations") + + tokens := r.nextPageTokens() + if len(tokens) == 0 { + return nil + } + + data := reflect.New(reflect.TypeOf(r.Data).Elem()).Interface() + nr := New(r.Config, r.ClientInfo, r.Handlers, r.Retryer, r.Operation, awsutil.CopyOf(r.Params), data) + for i, intok := range nr.Operation.InputTokens { + awsutil.SetValueAtPath(nr.Params, intok, tokens[i]) + } + return nr +} + +// EachPage iterates over each page of a paginated request object. The fn +// parameter should be a function with the following sample signature: +// +// func(page *T, lastPage bool) bool { +// return true // return false to stop iterating +// } +// +// Where "T" is the structure type matching the output structure of the given +// operation. For example, a request object generated by +// DynamoDB.ListTablesRequest() would expect to see dynamodb.ListTablesOutput +// as the structure "T". The lastPage value represents whether the page is +// the last page of data or not. The return value of this function should +// return true to keep iterating or false to stop. +// +// Deprecated Use Pagination type for configurable pagination of API operations +func (r *Request) EachPage(fn func(data interface{}, isLastPage bool) (shouldContinue bool)) error { + logDeprecatedf(r.Config.Logger, &logDeprecatedEachPage, + "Request.EachPage deprecated. Use Pagination type for configurable pagination of API operations") + + for page := r; page != nil; page = page.NextPage() { + if err := page.Send(); err != nil { + return err + } + if getNextPage := fn(page.Data, !page.HasNextPage()); !getNextPage { + return page.Error + } + } + + return nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/request/retryer.go b/vendor/github.com/aws/aws-sdk-go/aws/request/retryer.go new file mode 100644 index 0000000..8015acc --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/request/retryer.go @@ -0,0 +1,307 @@ +package request + +import ( + "net" + "net/url" + "strings" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" +) + +// Retryer provides the interface drive the SDK's request retry behavior. The +// Retryer implementation is responsible for implementing exponential backoff, +// and determine if a request API error should be retried. +// +// client.DefaultRetryer is the SDK's default implementation of the Retryer. It +// uses the which uses the Request.IsErrorRetryable and Request.IsErrorThrottle +// methods to determine if the request is retried. +type Retryer interface { + // RetryRules return the retry delay that should be used by the SDK before + // making another request attempt for the failed request. + RetryRules(*Request) time.Duration + + // ShouldRetry returns if the failed request is retryable. + // + // Implementations may consider request attempt count when determining if a + // request is retryable, but the SDK will use MaxRetries to limit the + // number of attempts a request are made. + ShouldRetry(*Request) bool + + // MaxRetries is the number of times a request may be retried before + // failing. + MaxRetries() int +} + +// WithRetryer sets a Retryer value to the given Config returning the Config +// value for chaining. The value must not be nil. +func WithRetryer(cfg *aws.Config, retryer Retryer) *aws.Config { + if retryer == nil { + if cfg.Logger != nil { + cfg.Logger.Log("ERROR: Request.WithRetryer called with nil retryer. Replacing with retry disabled Retryer.") + } + retryer = noOpRetryer{} + } + cfg.Retryer = retryer + return cfg + +} + +// noOpRetryer is a internal no op retryer used when a request is created +// without a retryer. +// +// Provides a retryer that performs no retries. +// It should be used when we do not want retries to be performed. +type noOpRetryer struct{} + +// MaxRetries returns the number of maximum returns the service will use to make +// an individual API; For NoOpRetryer the MaxRetries will always be zero. +func (d noOpRetryer) MaxRetries() int { + return 0 +} + +// ShouldRetry will always return false for NoOpRetryer, as it should never retry. +func (d noOpRetryer) ShouldRetry(_ *Request) bool { + return false +} + +// RetryRules returns the delay duration before retrying this request again; +// since NoOpRetryer does not retry, RetryRules always returns 0. +func (d noOpRetryer) RetryRules(_ *Request) time.Duration { + return 0 +} + +// retryableCodes is a collection of service response codes which are retry-able +// without any further action. +var retryableCodes = map[string]struct{}{ + "RequestError": {}, + "RequestTimeout": {}, + ErrCodeResponseTimeout: {}, + "RequestTimeoutException": {}, // Glacier's flavor of RequestTimeout +} + +var throttleCodes = map[string]struct{}{ + "ProvisionedThroughputExceededException": {}, + "Throttling": {}, + "ThrottlingException": {}, + "RequestLimitExceeded": {}, + "RequestThrottled": {}, + "RequestThrottledException": {}, + "TooManyRequestsException": {}, // Lambda functions + "PriorRequestNotComplete": {}, // Route53 + "TransactionInProgressException": {}, +} + +// credsExpiredCodes is a collection of error codes which signify the credentials +// need to be refreshed. Expired tokens require refreshing of credentials, and +// resigning before the request can be retried. +var credsExpiredCodes = map[string]struct{}{ + "ExpiredToken": {}, + "ExpiredTokenException": {}, + "RequestExpired": {}, // EC2 Only +} + +func isCodeThrottle(code string) bool { + _, ok := throttleCodes[code] + return ok +} + +func isCodeRetryable(code string) bool { + if _, ok := retryableCodes[code]; ok { + return true + } + + return isCodeExpiredCreds(code) +} + +func isCodeExpiredCreds(code string) bool { + _, ok := credsExpiredCodes[code] + return ok +} + +var validParentCodes = map[string]struct{}{ + ErrCodeSerialization: {}, + ErrCodeRead: {}, +} + +func isNestedErrorRetryable(parentErr awserr.Error) bool { + if parentErr == nil { + return false + } + + if _, ok := validParentCodes[parentErr.Code()]; !ok { + return false + } + + err := parentErr.OrigErr() + if err == nil { + return false + } + + if aerr, ok := err.(awserr.Error); ok { + return isCodeRetryable(aerr.Code()) + } + + if t, ok := err.(temporary); ok { + return t.Temporary() || isErrConnectionReset(err) + } + + return isErrConnectionReset(err) +} + +// IsErrorRetryable returns whether the error is retryable, based on its Code. +// Returns false if error is nil. +func IsErrorRetryable(err error) bool { + if err == nil { + return false + } + return shouldRetryError(err) +} + +type temporary interface { + Temporary() bool +} + +func shouldRetryError(origErr error) bool { + switch err := origErr.(type) { + case awserr.Error: + if err.Code() == CanceledErrorCode { + return false + } + if isNestedErrorRetryable(err) { + return true + } + + origErr := err.OrigErr() + var shouldRetry bool + if origErr != nil { + shouldRetry := shouldRetryError(origErr) + if err.Code() == "RequestError" && !shouldRetry { + return false + } + } + if isCodeRetryable(err.Code()) { + return true + } + return shouldRetry + + case *url.Error: + if strings.Contains(err.Error(), "connection refused") { + // Refused connections should be retried as the service may not yet + // be running on the port. Go TCP dial considers refused + // connections as not temporary. + return true + } + // *url.Error only implements Temporary after golang 1.6 but since + // url.Error only wraps the error: + return shouldRetryError(err.Err) + + case temporary: + if netErr, ok := err.(*net.OpError); ok && netErr.Op == "dial" { + return true + } + // If the error is temporary, we want to allow continuation of the + // retry process + return err.Temporary() || isErrConnectionReset(origErr) + + case nil: + // `awserr.Error.OrigErr()` can be nil, meaning there was an error but + // because we don't know the cause, it is marked as retryable. See + // TestRequest4xxUnretryable for an example. + return true + + default: + switch err.Error() { + case "net/http: request canceled", + "net/http: request canceled while waiting for connection": + // known 1.5 error case when an http request is cancelled + return false + } + // here we don't know the error; so we allow a retry. + return true + } +} + +// IsErrorThrottle returns whether the error is to be throttled based on its code. +// Returns false if error is nil. +func IsErrorThrottle(err error) bool { + if aerr, ok := err.(awserr.Error); ok && aerr != nil { + return isCodeThrottle(aerr.Code()) + } + return false +} + +// IsErrorExpiredCreds returns whether the error code is a credential expiry +// error. Returns false if error is nil. +func IsErrorExpiredCreds(err error) bool { + if aerr, ok := err.(awserr.Error); ok && aerr != nil { + return isCodeExpiredCreds(aerr.Code()) + } + return false +} + +// IsErrorRetryable returns whether the error is retryable, based on its Code. +// Returns false if the request has no Error set. +// +// Alias for the utility function IsErrorRetryable +func (r *Request) IsErrorRetryable() bool { + if isErrCode(r.Error, r.RetryErrorCodes) { + return true + } + + // HTTP response status code 501 should not be retried. + // 501 represents Not Implemented which means the request method is not + // supported by the server and cannot be handled. + if r.HTTPResponse != nil { + // HTTP response status code 500 represents internal server error and + // should be retried without any throttle. + if r.HTTPResponse.StatusCode == 500 { + return true + } + } + return IsErrorRetryable(r.Error) +} + +// IsErrorThrottle returns whether the error is to be throttled based on its +// code. Returns false if the request has no Error set. +// +// Alias for the utility function IsErrorThrottle +func (r *Request) IsErrorThrottle() bool { + if isErrCode(r.Error, r.ThrottleErrorCodes) { + return true + } + + if r.HTTPResponse != nil { + switch r.HTTPResponse.StatusCode { + case + 429, // error caused due to too many requests + 502, // Bad Gateway error should be throttled + 503, // caused when service is unavailable + 504: // error occurred due to gateway timeout + return true + } + } + + return IsErrorThrottle(r.Error) +} + +func isErrCode(err error, codes []string) bool { + if aerr, ok := err.(awserr.Error); ok && aerr != nil { + for _, code := range codes { + if code == aerr.Code() { + return true + } + } + } + + return false +} + +// IsErrorExpired returns whether the error code is a credential expiry error. +// Returns false if the request has no Error set. +// +// Alias for the utility function IsErrorExpiredCreds +func (r *Request) IsErrorExpired() bool { + return IsErrorExpiredCreds(r.Error) +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/request/timeout_read_closer.go b/vendor/github.com/aws/aws-sdk-go/aws/request/timeout_read_closer.go new file mode 100644 index 0000000..09a44eb --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/request/timeout_read_closer.go @@ -0,0 +1,94 @@ +package request + +import ( + "io" + "time" + + "github.com/aws/aws-sdk-go/aws/awserr" +) + +var timeoutErr = awserr.New( + ErrCodeResponseTimeout, + "read on body has reached the timeout limit", + nil, +) + +type readResult struct { + n int + err error +} + +// timeoutReadCloser will handle body reads that take too long. +// We will return a ErrReadTimeout error if a timeout occurs. +type timeoutReadCloser struct { + reader io.ReadCloser + duration time.Duration +} + +// Read will spin off a goroutine to call the reader's Read method. We will +// select on the timer's channel or the read's channel. Whoever completes first +// will be returned. +func (r *timeoutReadCloser) Read(b []byte) (int, error) { + timer := time.NewTimer(r.duration) + c := make(chan readResult, 1) + + go func() { + n, err := r.reader.Read(b) + timer.Stop() + c <- readResult{n: n, err: err} + }() + + select { + case data := <-c: + return data.n, data.err + case <-timer.C: + return 0, timeoutErr + } +} + +func (r *timeoutReadCloser) Close() error { + return r.reader.Close() +} + +const ( + // HandlerResponseTimeout is what we use to signify the name of the + // response timeout handler. + HandlerResponseTimeout = "ResponseTimeoutHandler" +) + +// adaptToResponseTimeoutError is a handler that will replace any top level error +// to a ErrCodeResponseTimeout, if its child is that. +func adaptToResponseTimeoutError(req *Request) { + if err, ok := req.Error.(awserr.Error); ok { + aerr, ok := err.OrigErr().(awserr.Error) + if ok && aerr.Code() == ErrCodeResponseTimeout { + req.Error = aerr + } + } +} + +// WithResponseReadTimeout is a request option that will wrap the body in a timeout read closer. +// This will allow for per read timeouts. If a timeout occurred, we will return the +// ErrCodeResponseTimeout. +// +// svc.PutObjectWithContext(ctx, params, request.WithTimeoutReadCloser(30 * time.Second) +func WithResponseReadTimeout(duration time.Duration) Option { + return func(r *Request) { + + var timeoutHandler = NamedHandler{ + HandlerResponseTimeout, + func(req *Request) { + req.HTTPResponse.Body = &timeoutReadCloser{ + reader: req.HTTPResponse.Body, + duration: duration, + } + }} + + // remove the handler so we are not stomping over any new durations. + r.Handlers.Send.RemoveByName(HandlerResponseTimeout) + r.Handlers.Send.PushBackNamed(timeoutHandler) + + r.Handlers.Unmarshal.PushBack(adaptToResponseTimeoutError) + r.Handlers.UnmarshalError.PushBack(adaptToResponseTimeoutError) + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/request/validation.go b/vendor/github.com/aws/aws-sdk-go/aws/request/validation.go new file mode 100644 index 0000000..8630683 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/request/validation.go @@ -0,0 +1,286 @@ +package request + +import ( + "bytes" + "fmt" + + "github.com/aws/aws-sdk-go/aws/awserr" +) + +const ( + // InvalidParameterErrCode is the error code for invalid parameters errors + InvalidParameterErrCode = "InvalidParameter" + // ParamRequiredErrCode is the error code for required parameter errors + ParamRequiredErrCode = "ParamRequiredError" + // ParamMinValueErrCode is the error code for fields with too low of a + // number value. + ParamMinValueErrCode = "ParamMinValueError" + // ParamMinLenErrCode is the error code for fields without enough elements. + ParamMinLenErrCode = "ParamMinLenError" + // ParamMaxLenErrCode is the error code for value being too long. + ParamMaxLenErrCode = "ParamMaxLenError" + + // ParamFormatErrCode is the error code for a field with invalid + // format or characters. + ParamFormatErrCode = "ParamFormatInvalidError" +) + +// Validator provides a way for types to perform validation logic on their +// input values that external code can use to determine if a type's values +// are valid. +type Validator interface { + Validate() error +} + +// An ErrInvalidParams provides wrapping of invalid parameter errors found when +// validating API operation input parameters. +type ErrInvalidParams struct { + // Context is the base context of the invalid parameter group. + Context string + errs []ErrInvalidParam +} + +// Add adds a new invalid parameter error to the collection of invalid +// parameters. The context of the invalid parameter will be updated to reflect +// this collection. +func (e *ErrInvalidParams) Add(err ErrInvalidParam) { + err.SetContext(e.Context) + e.errs = append(e.errs, err) +} + +// AddNested adds the invalid parameter errors from another ErrInvalidParams +// value into this collection. The nested errors will have their nested context +// updated and base context to reflect the merging. +// +// Use for nested validations errors. +func (e *ErrInvalidParams) AddNested(nestedCtx string, nested ErrInvalidParams) { + for _, err := range nested.errs { + err.SetContext(e.Context) + err.AddNestedContext(nestedCtx) + e.errs = append(e.errs, err) + } +} + +// Len returns the number of invalid parameter errors +func (e ErrInvalidParams) Len() int { + return len(e.errs) +} + +// Code returns the code of the error +func (e ErrInvalidParams) Code() string { + return InvalidParameterErrCode +} + +// Message returns the message of the error +func (e ErrInvalidParams) Message() string { + return fmt.Sprintf("%d validation error(s) found.", len(e.errs)) +} + +// Error returns the string formatted form of the invalid parameters. +func (e ErrInvalidParams) Error() string { + w := &bytes.Buffer{} + fmt.Fprintf(w, "%s: %s\n", e.Code(), e.Message()) + + for _, err := range e.errs { + fmt.Fprintf(w, "- %s\n", err.Message()) + } + + return w.String() +} + +// OrigErr returns the invalid parameters as a awserr.BatchedErrors value +func (e ErrInvalidParams) OrigErr() error { + return awserr.NewBatchError( + InvalidParameterErrCode, e.Message(), e.OrigErrs()) +} + +// OrigErrs returns a slice of the invalid parameters +func (e ErrInvalidParams) OrigErrs() []error { + errs := make([]error, len(e.errs)) + for i := 0; i < len(errs); i++ { + errs[i] = e.errs[i] + } + + return errs +} + +// An ErrInvalidParam represents an invalid parameter error type. +type ErrInvalidParam interface { + awserr.Error + + // Field name the error occurred on. + Field() string + + // SetContext updates the context of the error. + SetContext(string) + + // AddNestedContext updates the error's context to include a nested level. + AddNestedContext(string) +} + +type errInvalidParam struct { + context string + nestedContext string + field string + code string + msg string +} + +// Code returns the error code for the type of invalid parameter. +func (e *errInvalidParam) Code() string { + return e.code +} + +// Message returns the reason the parameter was invalid, and its context. +func (e *errInvalidParam) Message() string { + return fmt.Sprintf("%s, %s.", e.msg, e.Field()) +} + +// Error returns the string version of the invalid parameter error. +func (e *errInvalidParam) Error() string { + return fmt.Sprintf("%s: %s", e.code, e.Message()) +} + +// OrigErr returns nil, Implemented for awserr.Error interface. +func (e *errInvalidParam) OrigErr() error { + return nil +} + +// Field Returns the field and context the error occurred. +func (e *errInvalidParam) Field() string { + field := e.context + if len(field) > 0 { + field += "." + } + if len(e.nestedContext) > 0 { + field += fmt.Sprintf("%s.", e.nestedContext) + } + field += e.field + + return field +} + +// SetContext updates the base context of the error. +func (e *errInvalidParam) SetContext(ctx string) { + e.context = ctx +} + +// AddNestedContext prepends a context to the field's path. +func (e *errInvalidParam) AddNestedContext(ctx string) { + if len(e.nestedContext) == 0 { + e.nestedContext = ctx + } else { + e.nestedContext = fmt.Sprintf("%s.%s", ctx, e.nestedContext) + } + +} + +// An ErrParamRequired represents an required parameter error. +type ErrParamRequired struct { + errInvalidParam +} + +// NewErrParamRequired creates a new required parameter error. +func NewErrParamRequired(field string) *ErrParamRequired { + return &ErrParamRequired{ + errInvalidParam{ + code: ParamRequiredErrCode, + field: field, + msg: fmt.Sprintf("missing required field"), + }, + } +} + +// An ErrParamMinValue represents a minimum value parameter error. +type ErrParamMinValue struct { + errInvalidParam + min float64 +} + +// NewErrParamMinValue creates a new minimum value parameter error. +func NewErrParamMinValue(field string, min float64) *ErrParamMinValue { + return &ErrParamMinValue{ + errInvalidParam: errInvalidParam{ + code: ParamMinValueErrCode, + field: field, + msg: fmt.Sprintf("minimum field value of %v", min), + }, + min: min, + } +} + +// MinValue returns the field's require minimum value. +// +// float64 is returned for both int and float min values. +func (e *ErrParamMinValue) MinValue() float64 { + return e.min +} + +// An ErrParamMinLen represents a minimum length parameter error. +type ErrParamMinLen struct { + errInvalidParam + min int +} + +// NewErrParamMinLen creates a new minimum length parameter error. +func NewErrParamMinLen(field string, min int) *ErrParamMinLen { + return &ErrParamMinLen{ + errInvalidParam: errInvalidParam{ + code: ParamMinLenErrCode, + field: field, + msg: fmt.Sprintf("minimum field size of %v", min), + }, + min: min, + } +} + +// MinLen returns the field's required minimum length. +func (e *ErrParamMinLen) MinLen() int { + return e.min +} + +// An ErrParamMaxLen represents a maximum length parameter error. +type ErrParamMaxLen struct { + errInvalidParam + max int +} + +// NewErrParamMaxLen creates a new maximum length parameter error. +func NewErrParamMaxLen(field string, max int, value string) *ErrParamMaxLen { + return &ErrParamMaxLen{ + errInvalidParam: errInvalidParam{ + code: ParamMaxLenErrCode, + field: field, + msg: fmt.Sprintf("maximum size of %v, %v", max, value), + }, + max: max, + } +} + +// MaxLen returns the field's required minimum length. +func (e *ErrParamMaxLen) MaxLen() int { + return e.max +} + +// An ErrParamFormat represents a invalid format parameter error. +type ErrParamFormat struct { + errInvalidParam + format string +} + +// NewErrParamFormat creates a new invalid format parameter error. +func NewErrParamFormat(field string, format, value string) *ErrParamFormat { + return &ErrParamFormat{ + errInvalidParam: errInvalidParam{ + code: ParamFormatErrCode, + field: field, + msg: fmt.Sprintf("format %v, %v", format, value), + }, + format: format, + } +} + +// Format returns the field's required format. +func (e *ErrParamFormat) Format() string { + return e.format +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/request/waiter.go b/vendor/github.com/aws/aws-sdk-go/aws/request/waiter.go new file mode 100644 index 0000000..4601f88 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/request/waiter.go @@ -0,0 +1,295 @@ +package request + +import ( + "fmt" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/awsutil" +) + +// WaiterResourceNotReadyErrorCode is the error code returned by a waiter when +// the waiter's max attempts have been exhausted. +const WaiterResourceNotReadyErrorCode = "ResourceNotReady" + +// A WaiterOption is a function that will update the Waiter value's fields to +// configure the waiter. +type WaiterOption func(*Waiter) + +// WithWaiterMaxAttempts returns the maximum number of times the waiter should +// attempt to check the resource for the target state. +func WithWaiterMaxAttempts(max int) WaiterOption { + return func(w *Waiter) { + w.MaxAttempts = max + } +} + +// WaiterDelay will return a delay the waiter should pause between attempts to +// check the resource state. The passed in attempt is the number of times the +// Waiter has checked the resource state. +// +// Attempt is the number of attempts the Waiter has made checking the resource +// state. +type WaiterDelay func(attempt int) time.Duration + +// ConstantWaiterDelay returns a WaiterDelay that will always return a constant +// delay the waiter should use between attempts. It ignores the number of +// attempts made. +func ConstantWaiterDelay(delay time.Duration) WaiterDelay { + return func(attempt int) time.Duration { + return delay + } +} + +// WithWaiterDelay will set the Waiter to use the WaiterDelay passed in. +func WithWaiterDelay(delayer WaiterDelay) WaiterOption { + return func(w *Waiter) { + w.Delay = delayer + } +} + +// WithWaiterLogger returns a waiter option to set the logger a waiter +// should use to log warnings and errors to. +func WithWaiterLogger(logger aws.Logger) WaiterOption { + return func(w *Waiter) { + w.Logger = logger + } +} + +// WithWaiterRequestOptions returns a waiter option setting the request +// options for each request the waiter makes. Appends to waiter's request +// options already set. +func WithWaiterRequestOptions(opts ...Option) WaiterOption { + return func(w *Waiter) { + w.RequestOptions = append(w.RequestOptions, opts...) + } +} + +// A Waiter provides the functionality to perform a blocking call which will +// wait for a resource state to be satisfied by a service. +// +// This type should not be used directly. The API operations provided in the +// service packages prefixed with "WaitUntil" should be used instead. +type Waiter struct { + Name string + Acceptors []WaiterAcceptor + Logger aws.Logger + + MaxAttempts int + Delay WaiterDelay + + RequestOptions []Option + NewRequest func([]Option) (*Request, error) + SleepWithContext func(aws.Context, time.Duration) error +} + +// ApplyOptions updates the waiter with the list of waiter options provided. +func (w *Waiter) ApplyOptions(opts ...WaiterOption) { + for _, fn := range opts { + fn(w) + } +} + +// WaiterState are states the waiter uses based on WaiterAcceptor definitions +// to identify if the resource state the waiter is waiting on has occurred. +type WaiterState int + +// String returns the string representation of the waiter state. +func (s WaiterState) String() string { + switch s { + case SuccessWaiterState: + return "success" + case FailureWaiterState: + return "failure" + case RetryWaiterState: + return "retry" + default: + return "unknown waiter state" + } +} + +// States the waiter acceptors will use to identify target resource states. +const ( + SuccessWaiterState WaiterState = iota // waiter successful + FailureWaiterState // waiter failed + RetryWaiterState // waiter needs to be retried +) + +// WaiterMatchMode is the mode that the waiter will use to match the WaiterAcceptor +// definition's Expected attribute. +type WaiterMatchMode int + +// Modes the waiter will use when inspecting API response to identify target +// resource states. +const ( + PathAllWaiterMatch WaiterMatchMode = iota // match on all paths + PathWaiterMatch // match on specific path + PathAnyWaiterMatch // match on any path + PathListWaiterMatch // match on list of paths + StatusWaiterMatch // match on status code + ErrorWaiterMatch // match on error +) + +// String returns the string representation of the waiter match mode. +func (m WaiterMatchMode) String() string { + switch m { + case PathAllWaiterMatch: + return "pathAll" + case PathWaiterMatch: + return "path" + case PathAnyWaiterMatch: + return "pathAny" + case PathListWaiterMatch: + return "pathList" + case StatusWaiterMatch: + return "status" + case ErrorWaiterMatch: + return "error" + default: + return "unknown waiter match mode" + } +} + +// WaitWithContext will make requests for the API operation using NewRequest to +// build API requests. The request's response will be compared against the +// Waiter's Acceptors to determine the successful state of the resource the +// waiter is inspecting. +// +// The passed in context must not be nil. If it is nil a panic will occur. The +// Context will be used to cancel the waiter's pending requests and retry delays. +// Use aws.BackgroundContext if no context is available. +// +// The waiter will continue until the target state defined by the Acceptors, +// or the max attempts expires. +// +// Will return the WaiterResourceNotReadyErrorCode error code if the waiter's +// retryer ShouldRetry returns false. This normally will happen when the max +// wait attempts expires. +func (w Waiter) WaitWithContext(ctx aws.Context) error { + + for attempt := 1; ; attempt++ { + req, err := w.NewRequest(w.RequestOptions) + if err != nil { + waiterLogf(w.Logger, "unable to create request %v", err) + return err + } + req.Handlers.Build.PushBack(MakeAddToUserAgentFreeFormHandler("Waiter")) + err = req.Send() + + // See if any of the acceptors match the request's response, or error + for _, a := range w.Acceptors { + if matched, matchErr := a.match(w.Name, w.Logger, req, err); matched { + return matchErr + } + } + + // The Waiter should only check the resource state MaxAttempts times + // This is here instead of in the for loop above to prevent delaying + // unnecessary when the waiter will not retry. + if attempt == w.MaxAttempts { + break + } + + // Delay to wait before inspecting the resource again + delay := w.Delay(attempt) + if sleepFn := req.Config.SleepDelay; sleepFn != nil { + // Support SleepDelay for backwards compatibility and testing + sleepFn(delay) + } else { + sleepCtxFn := w.SleepWithContext + if sleepCtxFn == nil { + sleepCtxFn = aws.SleepWithContext + } + + if err := sleepCtxFn(ctx, delay); err != nil { + return awserr.New(CanceledErrorCode, "waiter context canceled", err) + } + } + } + + return awserr.New(WaiterResourceNotReadyErrorCode, "exceeded wait attempts", nil) +} + +// A WaiterAcceptor provides the information needed to wait for an API operation +// to complete. +type WaiterAcceptor struct { + State WaiterState + Matcher WaiterMatchMode + Argument string + Expected interface{} +} + +// match returns if the acceptor found a match with the passed in request +// or error. True is returned if the acceptor made a match, error is returned +// if there was an error attempting to perform the match. +func (a *WaiterAcceptor) match(name string, l aws.Logger, req *Request, err error) (bool, error) { + result := false + var vals []interface{} + + switch a.Matcher { + case PathAllWaiterMatch, PathWaiterMatch: + // Require all matches to be equal for result to match + vals, _ = awsutil.ValuesAtPath(req.Data, a.Argument) + if len(vals) == 0 { + break + } + result = true + for _, val := range vals { + if !awsutil.DeepEqual(val, a.Expected) { + result = false + break + } + } + case PathAnyWaiterMatch: + // Only a single match needs to equal for the result to match + vals, _ = awsutil.ValuesAtPath(req.Data, a.Argument) + for _, val := range vals { + if awsutil.DeepEqual(val, a.Expected) { + result = true + break + } + } + case PathListWaiterMatch: + // ignored matcher + case StatusWaiterMatch: + s := a.Expected.(int) + result = s == req.HTTPResponse.StatusCode + case ErrorWaiterMatch: + if aerr, ok := err.(awserr.Error); ok { + result = aerr.Code() == a.Expected.(string) + } + default: + waiterLogf(l, "WARNING: Waiter %s encountered unexpected matcher: %s", + name, a.Matcher) + } + + if !result { + // If there was no matching result found there is nothing more to do + // for this response, retry the request. + return false, nil + } + + switch a.State { + case SuccessWaiterState: + // waiter completed + return true, nil + case FailureWaiterState: + // Waiter failure state triggered + return true, awserr.New(WaiterResourceNotReadyErrorCode, + "failed waiting for successful resource state", err) + case RetryWaiterState: + // clear the error and retry the operation + return false, nil + default: + waiterLogf(l, "WARNING: Waiter %s encountered unexpected state: %s", + name, a.State) + return false, nil + } +} + +func waiterLogf(logger aws.Logger, msg string, args ...interface{}) { + if logger != nil { + logger.Log(fmt.Sprintf(msg, args...)) + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/session/cabundle_transport.go b/vendor/github.com/aws/aws-sdk-go/aws/session/cabundle_transport.go new file mode 100644 index 0000000..ea9ebb6 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/session/cabundle_transport.go @@ -0,0 +1,26 @@ +// +build go1.7 + +package session + +import ( + "net" + "net/http" + "time" +) + +// Transport that should be used when a custom CA bundle is specified with the +// SDK. +func getCABundleTransport() *http.Transport { + return &http.Transport{ + Proxy: http.ProxyFromEnvironment, + DialContext: (&net.Dialer{ + Timeout: 30 * time.Second, + KeepAlive: 30 * time.Second, + DualStack: true, + }).DialContext, + MaxIdleConns: 100, + IdleConnTimeout: 90 * time.Second, + TLSHandshakeTimeout: 10 * time.Second, + ExpectContinueTimeout: 1 * time.Second, + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/session/cabundle_transport_1_5.go b/vendor/github.com/aws/aws-sdk-go/aws/session/cabundle_transport_1_5.go new file mode 100644 index 0000000..fec39df --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/session/cabundle_transport_1_5.go @@ -0,0 +1,22 @@ +// +build !go1.6,go1.5 + +package session + +import ( + "net" + "net/http" + "time" +) + +// Transport that should be used when a custom CA bundle is specified with the +// SDK. +func getCABundleTransport() *http.Transport { + return &http.Transport{ + Proxy: http.ProxyFromEnvironment, + Dial: (&net.Dialer{ + Timeout: 30 * time.Second, + KeepAlive: 30 * time.Second, + }).Dial, + TLSHandshakeTimeout: 10 * time.Second, + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/session/cabundle_transport_1_6.go b/vendor/github.com/aws/aws-sdk-go/aws/session/cabundle_transport_1_6.go new file mode 100644 index 0000000..1c5a539 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/session/cabundle_transport_1_6.go @@ -0,0 +1,23 @@ +// +build !go1.7,go1.6 + +package session + +import ( + "net" + "net/http" + "time" +) + +// Transport that should be used when a custom CA bundle is specified with the +// SDK. +func getCABundleTransport() *http.Transport { + return &http.Transport{ + Proxy: http.ProxyFromEnvironment, + Dial: (&net.Dialer{ + Timeout: 30 * time.Second, + KeepAlive: 30 * time.Second, + }).Dial, + TLSHandshakeTimeout: 10 * time.Second, + ExpectContinueTimeout: 1 * time.Second, + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/session/credentials.go b/vendor/github.com/aws/aws-sdk-go/aws/session/credentials.go new file mode 100644 index 0000000..cc64e24 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/session/credentials.go @@ -0,0 +1,259 @@ +package session + +import ( + "fmt" + "os" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/credentials/processcreds" + "github.com/aws/aws-sdk-go/aws/credentials/stscreds" + "github.com/aws/aws-sdk-go/aws/defaults" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/internal/shareddefaults" +) + +func resolveCredentials(cfg *aws.Config, + envCfg envConfig, sharedCfg sharedConfig, + handlers request.Handlers, + sessOpts Options, +) (*credentials.Credentials, error) { + + switch { + case len(sessOpts.Profile) != 0: + // User explicitly provided an Profile in the session's configuration + // so load that profile from shared config first. + // Github(aws/aws-sdk-go#2727) + return resolveCredsFromProfile(cfg, envCfg, sharedCfg, handlers, sessOpts) + + case envCfg.Creds.HasKeys(): + // Environment credentials + return credentials.NewStaticCredentialsFromCreds(envCfg.Creds), nil + + case len(envCfg.WebIdentityTokenFilePath) != 0: + // Web identity token from environment, RoleARN required to also be + // set. + return assumeWebIdentity(cfg, handlers, + envCfg.WebIdentityTokenFilePath, + envCfg.RoleARN, + envCfg.RoleSessionName, + ) + + default: + // Fallback to the "default" credential resolution chain. + return resolveCredsFromProfile(cfg, envCfg, sharedCfg, handlers, sessOpts) + } +} + +// WebIdentityEmptyRoleARNErr will occur if 'AWS_WEB_IDENTITY_TOKEN_FILE' was set but +// 'AWS_ROLE_ARN' was not set. +var WebIdentityEmptyRoleARNErr = awserr.New(stscreds.ErrCodeWebIdentity, "role ARN is not set", nil) + +// WebIdentityEmptyTokenFilePathErr will occur if 'AWS_ROLE_ARN' was set but +// 'AWS_WEB_IDENTITY_TOKEN_FILE' was not set. +var WebIdentityEmptyTokenFilePathErr = awserr.New(stscreds.ErrCodeWebIdentity, "token file path is not set", nil) + +func assumeWebIdentity(cfg *aws.Config, handlers request.Handlers, + filepath string, + roleARN, sessionName string, +) (*credentials.Credentials, error) { + + if len(filepath) == 0 { + return nil, WebIdentityEmptyTokenFilePathErr + } + + if len(roleARN) == 0 { + return nil, WebIdentityEmptyRoleARNErr + } + + creds := stscreds.NewWebIdentityCredentials( + &Session{ + Config: cfg, + Handlers: handlers.Copy(), + }, + roleARN, + sessionName, + filepath, + ) + + return creds, nil +} + +func resolveCredsFromProfile(cfg *aws.Config, + envCfg envConfig, sharedCfg sharedConfig, + handlers request.Handlers, + sessOpts Options, +) (creds *credentials.Credentials, err error) { + + switch { + case sharedCfg.SourceProfile != nil: + // Assume IAM role with credentials source from a different profile. + creds, err = resolveCredsFromProfile(cfg, envCfg, + *sharedCfg.SourceProfile, handlers, sessOpts, + ) + + case sharedCfg.Creds.HasKeys(): + // Static Credentials from Shared Config/Credentials file. + creds = credentials.NewStaticCredentialsFromCreds( + sharedCfg.Creds, + ) + + case len(sharedCfg.CredentialProcess) != 0: + // Get credentials from CredentialProcess + creds = processcreds.NewCredentials(sharedCfg.CredentialProcess) + + case len(sharedCfg.CredentialSource) != 0: + creds, err = resolveCredsFromSource(cfg, envCfg, + sharedCfg, handlers, sessOpts, + ) + + case len(sharedCfg.WebIdentityTokenFile) != 0: + // Credentials from Assume Web Identity token require an IAM Role, and + // that roll will be assumed. May be wrapped with another assume role + // via SourceProfile. + return assumeWebIdentity(cfg, handlers, + sharedCfg.WebIdentityTokenFile, + sharedCfg.RoleARN, + sharedCfg.RoleSessionName, + ) + + default: + // Fallback to default credentials provider, include mock errors for + // the credential chain so user can identify why credentials failed to + // be retrieved. + creds = credentials.NewCredentials(&credentials.ChainProvider{ + VerboseErrors: aws.BoolValue(cfg.CredentialsChainVerboseErrors), + Providers: []credentials.Provider{ + &credProviderError{ + Err: awserr.New("EnvAccessKeyNotFound", + "failed to find credentials in the environment.", nil), + }, + &credProviderError{ + Err: awserr.New("SharedCredsLoad", + fmt.Sprintf("failed to load profile, %s.", envCfg.Profile), nil), + }, + defaults.RemoteCredProvider(*cfg, handlers), + }, + }) + } + if err != nil { + return nil, err + } + + if len(sharedCfg.RoleARN) > 0 { + cfgCp := *cfg + cfgCp.Credentials = creds + return credsFromAssumeRole(cfgCp, handlers, sharedCfg, sessOpts) + } + + return creds, nil +} + +// valid credential source values +const ( + credSourceEc2Metadata = "Ec2InstanceMetadata" + credSourceEnvironment = "Environment" + credSourceECSContainer = "EcsContainer" +) + +func resolveCredsFromSource(cfg *aws.Config, + envCfg envConfig, sharedCfg sharedConfig, + handlers request.Handlers, + sessOpts Options, +) (creds *credentials.Credentials, err error) { + + switch sharedCfg.CredentialSource { + case credSourceEc2Metadata: + p := defaults.RemoteCredProvider(*cfg, handlers) + creds = credentials.NewCredentials(p) + + case credSourceEnvironment: + creds = credentials.NewStaticCredentialsFromCreds(envCfg.Creds) + + case credSourceECSContainer: + if len(os.Getenv(shareddefaults.ECSCredsProviderEnvVar)) == 0 { + return nil, ErrSharedConfigECSContainerEnvVarEmpty + } + + p := defaults.RemoteCredProvider(*cfg, handlers) + creds = credentials.NewCredentials(p) + + default: + return nil, ErrSharedConfigInvalidCredSource + } + + return creds, nil +} + +func credsFromAssumeRole(cfg aws.Config, + handlers request.Handlers, + sharedCfg sharedConfig, + sessOpts Options, +) (*credentials.Credentials, error) { + + if len(sharedCfg.MFASerial) != 0 && sessOpts.AssumeRoleTokenProvider == nil { + // AssumeRole Token provider is required if doing Assume Role + // with MFA. + return nil, AssumeRoleTokenProviderNotSetError{} + } + + return stscreds.NewCredentials( + &Session{ + Config: &cfg, + Handlers: handlers.Copy(), + }, + sharedCfg.RoleARN, + func(opt *stscreds.AssumeRoleProvider) { + opt.RoleSessionName = sharedCfg.RoleSessionName + opt.Duration = sessOpts.AssumeRoleDuration + + // Assume role with external ID + if len(sharedCfg.ExternalID) > 0 { + opt.ExternalID = aws.String(sharedCfg.ExternalID) + } + + // Assume role with MFA + if len(sharedCfg.MFASerial) > 0 { + opt.SerialNumber = aws.String(sharedCfg.MFASerial) + opt.TokenProvider = sessOpts.AssumeRoleTokenProvider + } + }, + ), nil +} + +// AssumeRoleTokenProviderNotSetError is an error returned when creating a +// session when the MFAToken option is not set when shared config is configured +// load assume a role with an MFA token. +type AssumeRoleTokenProviderNotSetError struct{} + +// Code is the short id of the error. +func (e AssumeRoleTokenProviderNotSetError) Code() string { + return "AssumeRoleTokenProviderNotSetError" +} + +// Message is the description of the error +func (e AssumeRoleTokenProviderNotSetError) Message() string { + return fmt.Sprintf("assume role with MFA enabled, but AssumeRoleTokenProvider session option not set.") +} + +// OrigErr is the underlying error that caused the failure. +func (e AssumeRoleTokenProviderNotSetError) OrigErr() error { + return nil +} + +// Error satisfies the error interface. +func (e AssumeRoleTokenProviderNotSetError) Error() string { + return awserr.SprintError(e.Code(), e.Message(), "", nil) +} + +type credProviderError struct { + Err error +} + +func (c credProviderError) Retrieve() (credentials.Value, error) { + return credentials.Value{}, c.Err +} +func (c credProviderError) IsExpired() bool { + return true +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/session/doc.go b/vendor/github.com/aws/aws-sdk-go/aws/session/doc.go new file mode 100644 index 0000000..7ec66e7 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/session/doc.go @@ -0,0 +1,245 @@ +/* +Package session provides configuration for the SDK's service clients. Sessions +can be shared across service clients that share the same base configuration. + +Sessions are safe to use concurrently as long as the Session is not being +modified. Sessions should be cached when possible, because creating a new +Session will load all configuration values from the environment, and config +files each time the Session is created. Sharing the Session value across all of +your service clients will ensure the configuration is loaded the fewest number +of times possible. + +Sessions options from Shared Config + +By default NewSession will only load credentials from the shared credentials +file (~/.aws/credentials). If the AWS_SDK_LOAD_CONFIG environment variable is +set to a truthy value the Session will be created from the configuration +values from the shared config (~/.aws/config) and shared credentials +(~/.aws/credentials) files. Using the NewSessionWithOptions with +SharedConfigState set to SharedConfigEnable will create the session as if the +AWS_SDK_LOAD_CONFIG environment variable was set. + +Credential and config loading order + +The Session will attempt to load configuration and credentials from the +environment, configuration files, and other credential sources. The order +configuration is loaded in is: + + * Environment Variables + * Shared Credentials file + * Shared Configuration file (if SharedConfig is enabled) + * EC2 Instance Metadata (credentials only) + +The Environment variables for credentials will have precedence over shared +config even if SharedConfig is enabled. To override this behavior, and use +shared config credentials instead specify the session.Options.Profile, (e.g. +when using credential_source=Environment to assume a role). + + sess, err := session.NewSessionWithOptions(session.Options{ + Profile: "myProfile", + }) + +Creating Sessions + +Creating a Session without additional options will load credentials region, and +profile loaded from the environment and shared config automatically. See, +"Environment Variables" section for information on environment variables used +by Session. + + // Create Session + sess, err := session.NewSession() + + +When creating Sessions optional aws.Config values can be passed in that will +override the default, or loaded, config values the Session is being created +with. This allows you to provide additional, or case based, configuration +as needed. + + // Create a Session with a custom region + sess, err := session.NewSession(&aws.Config{ + Region: aws.String("us-west-2"), + }) + +Use NewSessionWithOptions to provide additional configuration driving how the +Session's configuration will be loaded. Such as, specifying shared config +profile, or override the shared config state, (AWS_SDK_LOAD_CONFIG). + + // Equivalent to session.NewSession() + sess, err := session.NewSessionWithOptions(session.Options{ + // Options + }) + + sess, err := session.NewSessionWithOptions(session.Options{ + // Specify profile to load for the session's config + Profile: "profile_name", + + // Provide SDK Config options, such as Region. + Config: aws.Config{ + Region: aws.String("us-west-2"), + }, + + // Force enable Shared Config support + SharedConfigState: session.SharedConfigEnable, + }) + +Adding Handlers + +You can add handlers to a session to decorate API operation, (e.g. adding HTTP +headers). All clients that use the Session receive a copy of the Session's +handlers. For example, the following request handler added to the Session logs +every requests made. + + // Create a session, and add additional handlers for all service + // clients created with the Session to inherit. Adds logging handler. + sess := session.Must(session.NewSession()) + + sess.Handlers.Send.PushFront(func(r *request.Request) { + // Log every request made and its payload + logger.Printf("Request: %s/%s, Params: %s", + r.ClientInfo.ServiceName, r.Operation, r.Params) + }) + +Shared Config Fields + +By default the SDK will only load the shared credentials file's +(~/.aws/credentials) credentials values, and all other config is provided by +the environment variables, SDK defaults, and user provided aws.Config values. + +If the AWS_SDK_LOAD_CONFIG environment variable is set, or SharedConfigEnable +option is used to create the Session the full shared config values will be +loaded. This includes credentials, region, and support for assume role. In +addition the Session will load its configuration from both the shared config +file (~/.aws/config) and shared credentials file (~/.aws/credentials). Both +files have the same format. + +If both config files are present the configuration from both files will be +read. The Session will be created from configuration values from the shared +credentials file (~/.aws/credentials) over those in the shared config file +(~/.aws/config). + +Credentials are the values the SDK uses to authenticating requests with AWS +Services. When specified in a file, both aws_access_key_id and +aws_secret_access_key must be provided together in the same file to be +considered valid. They will be ignored if both are not present. +aws_session_token is an optional field that can be provided in addition to the +other two fields. + + aws_access_key_id = AKID + aws_secret_access_key = SECRET + aws_session_token = TOKEN + + ; region only supported if SharedConfigEnabled. + region = us-east-1 + +Assume Role configuration + +The role_arn field allows you to configure the SDK to assume an IAM role using +a set of credentials from another source. Such as when paired with static +credentials, "profile_source", "credential_process", or "credential_source" +fields. If "role_arn" is provided, a source of credentials must also be +specified, such as "source_profile", "credential_source", or +"credential_process". + + role_arn = arn:aws:iam:::role/ + source_profile = profile_with_creds + external_id = 1234 + mfa_serial = + role_session_name = session_name + + +The SDK supports assuming a role with MFA token. If "mfa_serial" is set, you +must also set the Session Option.AssumeRoleTokenProvider. The Session will fail +to load if the AssumeRoleTokenProvider is not specified. + + sess := session.Must(session.NewSessionWithOptions(session.Options{ + AssumeRoleTokenProvider: stscreds.StdinTokenProvider, + })) + +To setup Assume Role outside of a session see the stscreds.AssumeRoleProvider +documentation. + +Environment Variables + +When a Session is created several environment variables can be set to adjust +how the SDK functions, and what configuration data it loads when creating +Sessions. All environment values are optional, but some values like credentials +require multiple of the values to set or the partial values will be ignored. +All environment variable values are strings unless otherwise noted. + +Environment configuration values. If set both Access Key ID and Secret Access +Key must be provided. Session Token and optionally also be provided, but is +not required. + + # Access Key ID + AWS_ACCESS_KEY_ID=AKID + AWS_ACCESS_KEY=AKID # only read if AWS_ACCESS_KEY_ID is not set. + + # Secret Access Key + AWS_SECRET_ACCESS_KEY=SECRET + AWS_SECRET_KEY=SECRET=SECRET # only read if AWS_SECRET_ACCESS_KEY is not set. + + # Session Token + AWS_SESSION_TOKEN=TOKEN + +Region value will instruct the SDK where to make service API requests to. If is +not provided in the environment the region must be provided before a service +client request is made. + + AWS_REGION=us-east-1 + + # AWS_DEFAULT_REGION is only read if AWS_SDK_LOAD_CONFIG is also set, + # and AWS_REGION is not also set. + AWS_DEFAULT_REGION=us-east-1 + +Profile name the SDK should load use when loading shared config from the +configuration files. If not provided "default" will be used as the profile name. + + AWS_PROFILE=my_profile + + # AWS_DEFAULT_PROFILE is only read if AWS_SDK_LOAD_CONFIG is also set, + # and AWS_PROFILE is not also set. + AWS_DEFAULT_PROFILE=my_profile + +SDK load config instructs the SDK to load the shared config in addition to +shared credentials. This also expands the configuration loaded so the shared +credentials will have parity with the shared config file. This also enables +Region and Profile support for the AWS_DEFAULT_REGION and AWS_DEFAULT_PROFILE +env values as well. + + AWS_SDK_LOAD_CONFIG=1 + +Shared credentials file path can be set to instruct the SDK to use an alternative +file for the shared credentials. If not set the file will be loaded from +$HOME/.aws/credentials on Linux/Unix based systems, and +%USERPROFILE%\.aws\credentials on Windows. + + AWS_SHARED_CREDENTIALS_FILE=$HOME/my_shared_credentials + +Shared config file path can be set to instruct the SDK to use an alternative +file for the shared config. If not set the file will be loaded from +$HOME/.aws/config on Linux/Unix based systems, and +%USERPROFILE%\.aws\config on Windows. + + AWS_CONFIG_FILE=$HOME/my_shared_config + +Path to a custom Credentials Authority (CA) bundle PEM file that the SDK +will use instead of the default system's root CA bundle. Use this only +if you want to replace the CA bundle the SDK uses for TLS requests. + + AWS_CA_BUNDLE=$HOME/my_custom_ca_bundle + +Enabling this option will attempt to merge the Transport into the SDK's HTTP +client. If the client's Transport is not a http.Transport an error will be +returned. If the Transport's TLS config is set this option will cause the SDK +to overwrite the Transport's TLS config's RootCAs value. If the CA bundle file +contains multiple certificates all of them will be loaded. + +The Session option CustomCABundle is also available when creating sessions +to also enable this feature. CustomCABundle session option field has priority +over the AWS_CA_BUNDLE environment variable, and will be used if both are set. + +Setting a custom HTTPClient in the aws.Config options will override this setting. +To use this option and custom HTTP client, the HTTP client needs to be provided +when creating the session. Not the service client. +*/ +package session diff --git a/vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go b/vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go new file mode 100644 index 0000000..4092ab8 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go @@ -0,0 +1,320 @@ +package session + +import ( + "fmt" + "os" + "strconv" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/defaults" + "github.com/aws/aws-sdk-go/aws/endpoints" +) + +// EnvProviderName provides a name of the provider when config is loaded from environment. +const EnvProviderName = "EnvConfigCredentials" + +// envConfig is a collection of environment values the SDK will read +// setup config from. All environment values are optional. But some values +// such as credentials require multiple values to be complete or the values +// will be ignored. +type envConfig struct { + // Environment configuration values. If set both Access Key ID and Secret Access + // Key must be provided. Session Token and optionally also be provided, but is + // not required. + // + // # Access Key ID + // AWS_ACCESS_KEY_ID=AKID + // AWS_ACCESS_KEY=AKID # only read if AWS_ACCESS_KEY_ID is not set. + // + // # Secret Access Key + // AWS_SECRET_ACCESS_KEY=SECRET + // AWS_SECRET_KEY=SECRET=SECRET # only read if AWS_SECRET_ACCESS_KEY is not set. + // + // # Session Token + // AWS_SESSION_TOKEN=TOKEN + Creds credentials.Value + + // Region value will instruct the SDK where to make service API requests to. If is + // not provided in the environment the region must be provided before a service + // client request is made. + // + // AWS_REGION=us-east-1 + // + // # AWS_DEFAULT_REGION is only read if AWS_SDK_LOAD_CONFIG is also set, + // # and AWS_REGION is not also set. + // AWS_DEFAULT_REGION=us-east-1 + Region string + + // Profile name the SDK should load use when loading shared configuration from the + // shared configuration files. If not provided "default" will be used as the + // profile name. + // + // AWS_PROFILE=my_profile + // + // # AWS_DEFAULT_PROFILE is only read if AWS_SDK_LOAD_CONFIG is also set, + // # and AWS_PROFILE is not also set. + // AWS_DEFAULT_PROFILE=my_profile + Profile string + + // SDK load config instructs the SDK to load the shared config in addition to + // shared credentials. This also expands the configuration loaded from the shared + // credentials to have parity with the shared config file. This also enables + // Region and Profile support for the AWS_DEFAULT_REGION and AWS_DEFAULT_PROFILE + // env values as well. + // + // AWS_SDK_LOAD_CONFIG=1 + EnableSharedConfig bool + + // Shared credentials file path can be set to instruct the SDK to use an alternate + // file for the shared credentials. If not set the file will be loaded from + // $HOME/.aws/credentials on Linux/Unix based systems, and + // %USERPROFILE%\.aws\credentials on Windows. + // + // AWS_SHARED_CREDENTIALS_FILE=$HOME/my_shared_credentials + SharedCredentialsFile string + + // Shared config file path can be set to instruct the SDK to use an alternate + // file for the shared config. If not set the file will be loaded from + // $HOME/.aws/config on Linux/Unix based systems, and + // %USERPROFILE%\.aws\config on Windows. + // + // AWS_CONFIG_FILE=$HOME/my_shared_config + SharedConfigFile string + + // Sets the path to a custom Credentials Authority (CA) Bundle PEM file + // that the SDK will use instead of the system's root CA bundle. + // Only use this if you want to configure the SDK to use a custom set + // of CAs. + // + // Enabling this option will attempt to merge the Transport + // into the SDK's HTTP client. If the client's Transport is + // not a http.Transport an error will be returned. If the + // Transport's TLS config is set this option will cause the + // SDK to overwrite the Transport's TLS config's RootCAs value. + // + // Setting a custom HTTPClient in the aws.Config options will override this setting. + // To use this option and custom HTTP client, the HTTP client needs to be provided + // when creating the session. Not the service client. + // + // AWS_CA_BUNDLE=$HOME/my_custom_ca_bundle + CustomCABundle string + + csmEnabled string + CSMEnabled *bool + CSMPort string + CSMHost string + CSMClientID string + + // Enables endpoint discovery via environment variables. + // + // AWS_ENABLE_ENDPOINT_DISCOVERY=true + EnableEndpointDiscovery *bool + enableEndpointDiscovery string + + // Specifies the WebIdentity token the SDK should use to assume a role + // with. + // + // AWS_WEB_IDENTITY_TOKEN_FILE=file_path + WebIdentityTokenFilePath string + + // Specifies the IAM role arn to use when assuming an role. + // + // AWS_ROLE_ARN=role_arn + RoleARN string + + // Specifies the IAM role session name to use when assuming a role. + // + // AWS_ROLE_SESSION_NAME=session_name + RoleSessionName string + + // Specifies the STS Regional Endpoint flag for the SDK to resolve the endpoint + // for a service. + // + // AWS_STS_REGIONAL_ENDPOINTS=regional + // This can take value as `regional` or `legacy` + STSRegionalEndpoint endpoints.STSRegionalEndpoint + + // Specifies the S3 Regional Endpoint flag for the SDK to resolve the + // endpoint for a service. + // + // AWS_S3_US_EAST_1_REGIONAL_ENDPOINT=regional + // This can take value as `regional` or `legacy` + S3UsEast1RegionalEndpoint endpoints.S3UsEast1RegionalEndpoint +} + +var ( + csmEnabledEnvKey = []string{ + "AWS_CSM_ENABLED", + } + csmHostEnvKey = []string{ + "AWS_CSM_HOST", + } + csmPortEnvKey = []string{ + "AWS_CSM_PORT", + } + csmClientIDEnvKey = []string{ + "AWS_CSM_CLIENT_ID", + } + credAccessEnvKey = []string{ + "AWS_ACCESS_KEY_ID", + "AWS_ACCESS_KEY", + } + credSecretEnvKey = []string{ + "AWS_SECRET_ACCESS_KEY", + "AWS_SECRET_KEY", + } + credSessionEnvKey = []string{ + "AWS_SESSION_TOKEN", + } + + enableEndpointDiscoveryEnvKey = []string{ + "AWS_ENABLE_ENDPOINT_DISCOVERY", + } + + regionEnvKeys = []string{ + "AWS_REGION", + "AWS_DEFAULT_REGION", // Only read if AWS_SDK_LOAD_CONFIG is also set + } + profileEnvKeys = []string{ + "AWS_PROFILE", + "AWS_DEFAULT_PROFILE", // Only read if AWS_SDK_LOAD_CONFIG is also set + } + sharedCredsFileEnvKey = []string{ + "AWS_SHARED_CREDENTIALS_FILE", + } + sharedConfigFileEnvKey = []string{ + "AWS_CONFIG_FILE", + } + webIdentityTokenFilePathEnvKey = []string{ + "AWS_WEB_IDENTITY_TOKEN_FILE", + } + roleARNEnvKey = []string{ + "AWS_ROLE_ARN", + } + roleSessionNameEnvKey = []string{ + "AWS_ROLE_SESSION_NAME", + } + stsRegionalEndpointKey = []string{ + "AWS_STS_REGIONAL_ENDPOINTS", + } + s3UsEast1RegionalEndpoint = []string{ + "AWS_S3_US_EAST_1_REGIONAL_ENDPOINT", + } +) + +// loadEnvConfig retrieves the SDK's environment configuration. +// See `envConfig` for the values that will be retrieved. +// +// If the environment variable `AWS_SDK_LOAD_CONFIG` is set to a truthy value +// the shared SDK config will be loaded in addition to the SDK's specific +// configuration values. +func loadEnvConfig() (envConfig, error) { + enableSharedConfig, _ := strconv.ParseBool(os.Getenv("AWS_SDK_LOAD_CONFIG")) + return envConfigLoad(enableSharedConfig) +} + +// loadEnvSharedConfig retrieves the SDK's environment configuration, and the +// SDK shared config. See `envConfig` for the values that will be retrieved. +// +// Loads the shared configuration in addition to the SDK's specific configuration. +// This will load the same values as `loadEnvConfig` if the `AWS_SDK_LOAD_CONFIG` +// environment variable is set. +func loadSharedEnvConfig() (envConfig, error) { + return envConfigLoad(true) +} + +func envConfigLoad(enableSharedConfig bool) (envConfig, error) { + cfg := envConfig{} + + cfg.EnableSharedConfig = enableSharedConfig + + // Static environment credentials + var creds credentials.Value + setFromEnvVal(&creds.AccessKeyID, credAccessEnvKey) + setFromEnvVal(&creds.SecretAccessKey, credSecretEnvKey) + setFromEnvVal(&creds.SessionToken, credSessionEnvKey) + if creds.HasKeys() { + // Require logical grouping of credentials + creds.ProviderName = EnvProviderName + cfg.Creds = creds + } + + // Role Metadata + setFromEnvVal(&cfg.RoleARN, roleARNEnvKey) + setFromEnvVal(&cfg.RoleSessionName, roleSessionNameEnvKey) + + // Web identity environment variables + setFromEnvVal(&cfg.WebIdentityTokenFilePath, webIdentityTokenFilePathEnvKey) + + // CSM environment variables + setFromEnvVal(&cfg.csmEnabled, csmEnabledEnvKey) + setFromEnvVal(&cfg.CSMHost, csmHostEnvKey) + setFromEnvVal(&cfg.CSMPort, csmPortEnvKey) + setFromEnvVal(&cfg.CSMClientID, csmClientIDEnvKey) + + if len(cfg.csmEnabled) != 0 { + v, _ := strconv.ParseBool(cfg.csmEnabled) + cfg.CSMEnabled = &v + } + + regionKeys := regionEnvKeys + profileKeys := profileEnvKeys + if !cfg.EnableSharedConfig { + regionKeys = regionKeys[:1] + profileKeys = profileKeys[:1] + } + + setFromEnvVal(&cfg.Region, regionKeys) + setFromEnvVal(&cfg.Profile, profileKeys) + + // endpoint discovery is in reference to it being enabled. + setFromEnvVal(&cfg.enableEndpointDiscovery, enableEndpointDiscoveryEnvKey) + if len(cfg.enableEndpointDiscovery) > 0 { + cfg.EnableEndpointDiscovery = aws.Bool(cfg.enableEndpointDiscovery != "false") + } + + setFromEnvVal(&cfg.SharedCredentialsFile, sharedCredsFileEnvKey) + setFromEnvVal(&cfg.SharedConfigFile, sharedConfigFileEnvKey) + + if len(cfg.SharedCredentialsFile) == 0 { + cfg.SharedCredentialsFile = defaults.SharedCredentialsFilename() + } + if len(cfg.SharedConfigFile) == 0 { + cfg.SharedConfigFile = defaults.SharedConfigFilename() + } + + cfg.CustomCABundle = os.Getenv("AWS_CA_BUNDLE") + + var err error + // STS Regional Endpoint variable + for _, k := range stsRegionalEndpointKey { + if v := os.Getenv(k); len(v) != 0 { + cfg.STSRegionalEndpoint, err = endpoints.GetSTSRegionalEndpoint(v) + if err != nil { + return cfg, fmt.Errorf("failed to load, %v from env config, %v", k, err) + } + } + } + + // S3 Regional Endpoint variable + for _, k := range s3UsEast1RegionalEndpoint { + if v := os.Getenv(k); len(v) != 0 { + cfg.S3UsEast1RegionalEndpoint, err = endpoints.GetS3UsEast1RegionalEndpoint(v) + if err != nil { + return cfg, fmt.Errorf("failed to load, %v from env config, %v", k, err) + } + } + } + + return cfg, nil +} + +func setFromEnvVal(dst *string, keys []string) { + for _, k := range keys { + if v := os.Getenv(k); len(v) != 0 { + *dst = v + break + } + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/session/session.go b/vendor/github.com/aws/aws-sdk-go/aws/session/session.go new file mode 100644 index 0000000..ab6daac --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/session/session.go @@ -0,0 +1,719 @@ +package session + +import ( + "crypto/tls" + "crypto/x509" + "fmt" + "io" + "io/ioutil" + "net/http" + "os" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/client" + "github.com/aws/aws-sdk-go/aws/corehandlers" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/csm" + "github.com/aws/aws-sdk-go/aws/defaults" + "github.com/aws/aws-sdk-go/aws/endpoints" + "github.com/aws/aws-sdk-go/aws/request" +) + +const ( + // ErrCodeSharedConfig represents an error that occurs in the shared + // configuration logic + ErrCodeSharedConfig = "SharedConfigErr" +) + +// ErrSharedConfigSourceCollision will be returned if a section contains both +// source_profile and credential_source +var ErrSharedConfigSourceCollision = awserr.New(ErrCodeSharedConfig, "only source profile or credential source can be specified, not both", nil) + +// ErrSharedConfigECSContainerEnvVarEmpty will be returned if the environment +// variables are empty and Environment was set as the credential source +var ErrSharedConfigECSContainerEnvVarEmpty = awserr.New(ErrCodeSharedConfig, "EcsContainer was specified as the credential_source, but 'AWS_CONTAINER_CREDENTIALS_RELATIVE_URI' was not set", nil) + +// ErrSharedConfigInvalidCredSource will be returned if an invalid credential source was provided +var ErrSharedConfigInvalidCredSource = awserr.New(ErrCodeSharedConfig, "credential source values must be EcsContainer, Ec2InstanceMetadata, or Environment", nil) + +// A Session provides a central location to create service clients from and +// store configurations and request handlers for those services. +// +// Sessions are safe to create service clients concurrently, but it is not safe +// to mutate the Session concurrently. +// +// The Session satisfies the service client's client.ConfigProvider. +type Session struct { + Config *aws.Config + Handlers request.Handlers +} + +// New creates a new instance of the handlers merging in the provided configs +// on top of the SDK's default configurations. Once the Session is created it +// can be mutated to modify the Config or Handlers. The Session is safe to be +// read concurrently, but it should not be written to concurrently. +// +// If the AWS_SDK_LOAD_CONFIG environment is set to a truthy value, the New +// method could now encounter an error when loading the configuration. When +// The environment variable is set, and an error occurs, New will return a +// session that will fail all requests reporting the error that occurred while +// loading the session. Use NewSession to get the error when creating the +// session. +// +// If the AWS_SDK_LOAD_CONFIG environment variable is set to a truthy value +// the shared config file (~/.aws/config) will also be loaded, in addition to +// the shared credentials file (~/.aws/credentials). Values set in both the +// shared config, and shared credentials will be taken from the shared +// credentials file. +// +// Deprecated: Use NewSession functions to create sessions instead. NewSession +// has the same functionality as New except an error can be returned when the +// func is called instead of waiting to receive an error until a request is made. +func New(cfgs ...*aws.Config) *Session { + // load initial config from environment + envCfg, envErr := loadEnvConfig() + + if envCfg.EnableSharedConfig { + var cfg aws.Config + cfg.MergeIn(cfgs...) + s, err := NewSessionWithOptions(Options{ + Config: cfg, + SharedConfigState: SharedConfigEnable, + }) + if err != nil { + // Old session.New expected all errors to be discovered when + // a request is made, and would report the errors then. This + // needs to be replicated if an error occurs while creating + // the session. + msg := "failed to create session with AWS_SDK_LOAD_CONFIG enabled. " + + "Use session.NewSession to handle errors occurring during session creation." + + // Session creation failed, need to report the error and prevent + // any requests from succeeding. + s = &Session{Config: defaults.Config()} + s.logDeprecatedNewSessionError(msg, err, cfgs) + } + + return s + } + + s := deprecatedNewSession(cfgs...) + if envErr != nil { + msg := "failed to load env config" + s.logDeprecatedNewSessionError(msg, envErr, cfgs) + } + + if csmCfg, err := loadCSMConfig(envCfg, []string{}); err != nil { + if l := s.Config.Logger; l != nil { + l.Log(fmt.Sprintf("ERROR: failed to load CSM configuration, %v", err)) + } + } else if csmCfg.Enabled { + err := enableCSM(&s.Handlers, csmCfg, s.Config.Logger) + if err != nil { + msg := "failed to enable CSM" + s.logDeprecatedNewSessionError(msg, err, cfgs) + } + } + + return s +} + +// NewSession returns a new Session created from SDK defaults, config files, +// environment, and user provided config files. Once the Session is created +// it can be mutated to modify the Config or Handlers. The Session is safe to +// be read concurrently, but it should not be written to concurrently. +// +// If the AWS_SDK_LOAD_CONFIG environment variable is set to a truthy value +// the shared config file (~/.aws/config) will also be loaded in addition to +// the shared credentials file (~/.aws/credentials). Values set in both the +// shared config, and shared credentials will be taken from the shared +// credentials file. Enabling the Shared Config will also allow the Session +// to be built with retrieving credentials with AssumeRole set in the config. +// +// See the NewSessionWithOptions func for information on how to override or +// control through code how the Session will be created, such as specifying the +// config profile, and controlling if shared config is enabled or not. +func NewSession(cfgs ...*aws.Config) (*Session, error) { + opts := Options{} + opts.Config.MergeIn(cfgs...) + + return NewSessionWithOptions(opts) +} + +// SharedConfigState provides the ability to optionally override the state +// of the session's creation based on the shared config being enabled or +// disabled. +type SharedConfigState int + +const ( + // SharedConfigStateFromEnv does not override any state of the + // AWS_SDK_LOAD_CONFIG env var. It is the default value of the + // SharedConfigState type. + SharedConfigStateFromEnv SharedConfigState = iota + + // SharedConfigDisable overrides the AWS_SDK_LOAD_CONFIG env var value + // and disables the shared config functionality. + SharedConfigDisable + + // SharedConfigEnable overrides the AWS_SDK_LOAD_CONFIG env var value + // and enables the shared config functionality. + SharedConfigEnable +) + +// Options provides the means to control how a Session is created and what +// configuration values will be loaded. +// +type Options struct { + // Provides config values for the SDK to use when creating service clients + // and making API requests to services. Any value set in with this field + // will override the associated value provided by the SDK defaults, + // environment or config files where relevant. + // + // If not set, configuration values from from SDK defaults, environment, + // config will be used. + Config aws.Config + + // Overrides the config profile the Session should be created from. If not + // set the value of the environment variable will be loaded (AWS_PROFILE, + // or AWS_DEFAULT_PROFILE if the Shared Config is enabled). + // + // If not set and environment variables are not set the "default" + // (DefaultSharedConfigProfile) will be used as the profile to load the + // session config from. + Profile string + + // Instructs how the Session will be created based on the AWS_SDK_LOAD_CONFIG + // environment variable. By default a Session will be created using the + // value provided by the AWS_SDK_LOAD_CONFIG environment variable. + // + // Setting this value to SharedConfigEnable or SharedConfigDisable + // will allow you to override the AWS_SDK_LOAD_CONFIG environment variable + // and enable or disable the shared config functionality. + SharedConfigState SharedConfigState + + // Ordered list of files the session will load configuration from. + // It will override environment variable AWS_SHARED_CREDENTIALS_FILE, AWS_CONFIG_FILE. + SharedConfigFiles []string + + // When the SDK's shared config is configured to assume a role with MFA + // this option is required in order to provide the mechanism that will + // retrieve the MFA token. There is no default value for this field. If + // it is not set an error will be returned when creating the session. + // + // This token provider will be called when ever the assumed role's + // credentials need to be refreshed. Within the context of service clients + // all sharing the same session the SDK will ensure calls to the token + // provider are atomic. When sharing a token provider across multiple + // sessions additional synchronization logic is needed to ensure the + // token providers do not introduce race conditions. It is recommend to + // share the session where possible. + // + // stscreds.StdinTokenProvider is a basic implementation that will prompt + // from stdin for the MFA token code. + // + // This field is only used if the shared configuration is enabled, and + // the config enables assume role wit MFA via the mfa_serial field. + AssumeRoleTokenProvider func() (string, error) + + // When the SDK's shared config is configured to assume a role this option + // may be provided to set the expiry duration of the STS credentials. + // Defaults to 15 minutes if not set as documented in the + // stscreds.AssumeRoleProvider. + AssumeRoleDuration time.Duration + + // Reader for a custom Credentials Authority (CA) bundle in PEM format that + // the SDK will use instead of the default system's root CA bundle. Use this + // only if you want to replace the CA bundle the SDK uses for TLS requests. + // + // Enabling this option will attempt to merge the Transport into the SDK's HTTP + // client. If the client's Transport is not a http.Transport an error will be + // returned. If the Transport's TLS config is set this option will cause the SDK + // to overwrite the Transport's TLS config's RootCAs value. If the CA + // bundle reader contains multiple certificates all of them will be loaded. + // + // The Session option CustomCABundle is also available when creating sessions + // to also enable this feature. CustomCABundle session option field has priority + // over the AWS_CA_BUNDLE environment variable, and will be used if both are set. + CustomCABundle io.Reader + + // The handlers that the session and all API clients will be created with. + // This must be a complete set of handlers. Use the defaults.Handlers() + // function to initialize this value before changing the handlers to be + // used by the SDK. + Handlers request.Handlers +} + +// NewSessionWithOptions returns a new Session created from SDK defaults, config files, +// environment, and user provided config files. This func uses the Options +// values to configure how the Session is created. +// +// If the AWS_SDK_LOAD_CONFIG environment variable is set to a truthy value +// the shared config file (~/.aws/config) will also be loaded in addition to +// the shared credentials file (~/.aws/credentials). Values set in both the +// shared config, and shared credentials will be taken from the shared +// credentials file. Enabling the Shared Config will also allow the Session +// to be built with retrieving credentials with AssumeRole set in the config. +// +// // Equivalent to session.New +// sess := session.Must(session.NewSessionWithOptions(session.Options{})) +// +// // Specify profile to load for the session's config +// sess := session.Must(session.NewSessionWithOptions(session.Options{ +// Profile: "profile_name", +// })) +// +// // Specify profile for config and region for requests +// sess := session.Must(session.NewSessionWithOptions(session.Options{ +// Config: aws.Config{Region: aws.String("us-east-1")}, +// Profile: "profile_name", +// })) +// +// // Force enable Shared Config support +// sess := session.Must(session.NewSessionWithOptions(session.Options{ +// SharedConfigState: session.SharedConfigEnable, +// })) +func NewSessionWithOptions(opts Options) (*Session, error) { + var envCfg envConfig + var err error + if opts.SharedConfigState == SharedConfigEnable { + envCfg, err = loadSharedEnvConfig() + if err != nil { + return nil, fmt.Errorf("failed to load shared config, %v", err) + } + } else { + envCfg, err = loadEnvConfig() + if err != nil { + return nil, fmt.Errorf("failed to load environment config, %v", err) + } + } + + if len(opts.Profile) != 0 { + envCfg.Profile = opts.Profile + } + + switch opts.SharedConfigState { + case SharedConfigDisable: + envCfg.EnableSharedConfig = false + case SharedConfigEnable: + envCfg.EnableSharedConfig = true + } + + // Only use AWS_CA_BUNDLE if session option is not provided. + if len(envCfg.CustomCABundle) != 0 && opts.CustomCABundle == nil { + f, err := os.Open(envCfg.CustomCABundle) + if err != nil { + return nil, awserr.New("LoadCustomCABundleError", + "failed to open custom CA bundle PEM file", err) + } + defer f.Close() + opts.CustomCABundle = f + } + + return newSession(opts, envCfg, &opts.Config) +} + +// Must is a helper function to ensure the Session is valid and there was no +// error when calling a NewSession function. +// +// This helper is intended to be used in variable initialization to load the +// Session and configuration at startup. Such as: +// +// var sess = session.Must(session.NewSession()) +func Must(sess *Session, err error) *Session { + if err != nil { + panic(err) + } + + return sess +} + +func deprecatedNewSession(cfgs ...*aws.Config) *Session { + cfg := defaults.Config() + handlers := defaults.Handlers() + + // Apply the passed in configs so the configuration can be applied to the + // default credential chain + cfg.MergeIn(cfgs...) + if cfg.EndpointResolver == nil { + // An endpoint resolver is required for a session to be able to provide + // endpoints for service client configurations. + cfg.EndpointResolver = endpoints.DefaultResolver() + } + cfg.Credentials = defaults.CredChain(cfg, handlers) + + // Reapply any passed in configs to override credentials if set + cfg.MergeIn(cfgs...) + + s := &Session{ + Config: cfg, + Handlers: handlers, + } + + initHandlers(s) + return s +} + +func enableCSM(handlers *request.Handlers, cfg csmConfig, logger aws.Logger) error { + if logger != nil { + logger.Log("Enabling CSM") + } + + r, err := csm.Start(cfg.ClientID, csm.AddressWithDefaults(cfg.Host, cfg.Port)) + if err != nil { + return err + } + r.InjectHandlers(handlers) + + return nil +} + +func newSession(opts Options, envCfg envConfig, cfgs ...*aws.Config) (*Session, error) { + cfg := defaults.Config() + + handlers := opts.Handlers + if handlers.IsEmpty() { + handlers = defaults.Handlers() + } + + // Get a merged version of the user provided config to determine if + // credentials were. + userCfg := &aws.Config{} + userCfg.MergeIn(cfgs...) + cfg.MergeIn(userCfg) + + // Ordered config files will be loaded in with later files overwriting + // previous config file values. + var cfgFiles []string + if opts.SharedConfigFiles != nil { + cfgFiles = opts.SharedConfigFiles + } else { + cfgFiles = []string{envCfg.SharedConfigFile, envCfg.SharedCredentialsFile} + if !envCfg.EnableSharedConfig { + // The shared config file (~/.aws/config) is only loaded if instructed + // to load via the envConfig.EnableSharedConfig (AWS_SDK_LOAD_CONFIG). + cfgFiles = cfgFiles[1:] + } + } + + // Load additional config from file(s) + sharedCfg, err := loadSharedConfig(envCfg.Profile, cfgFiles, envCfg.EnableSharedConfig) + if err != nil { + if len(envCfg.Profile) == 0 && !envCfg.EnableSharedConfig && (envCfg.Creds.HasKeys() || userCfg.Credentials != nil) { + // Special case where the user has not explicitly specified an AWS_PROFILE, + // or session.Options.profile, shared config is not enabled, and the + // environment has credentials, allow the shared config file to fail to + // load since the user has already provided credentials, and nothing else + // is required to be read file. Github(aws/aws-sdk-go#2455) + } else if _, ok := err.(SharedConfigProfileNotExistsError); !ok { + return nil, err + } + } + + if err := mergeConfigSrcs(cfg, userCfg, envCfg, sharedCfg, handlers, opts); err != nil { + return nil, err + } + + s := &Session{ + Config: cfg, + Handlers: handlers, + } + + initHandlers(s) + + if csmCfg, err := loadCSMConfig(envCfg, cfgFiles); err != nil { + if l := s.Config.Logger; l != nil { + l.Log(fmt.Sprintf("ERROR: failed to load CSM configuration, %v", err)) + } + } else if csmCfg.Enabled { + err = enableCSM(&s.Handlers, csmCfg, s.Config.Logger) + if err != nil { + return nil, err + } + } + + // Setup HTTP client with custom cert bundle if enabled + if opts.CustomCABundle != nil { + if err := loadCustomCABundle(s, opts.CustomCABundle); err != nil { + return nil, err + } + } + + return s, nil +} + +type csmConfig struct { + Enabled bool + Host string + Port string + ClientID string +} + +var csmProfileName = "aws_csm" + +func loadCSMConfig(envCfg envConfig, cfgFiles []string) (csmConfig, error) { + if envCfg.CSMEnabled != nil { + if *envCfg.CSMEnabled { + return csmConfig{ + Enabled: true, + ClientID: envCfg.CSMClientID, + Host: envCfg.CSMHost, + Port: envCfg.CSMPort, + }, nil + } + return csmConfig{}, nil + } + + sharedCfg, err := loadSharedConfig(csmProfileName, cfgFiles, false) + if err != nil { + if _, ok := err.(SharedConfigProfileNotExistsError); !ok { + return csmConfig{}, err + } + } + if sharedCfg.CSMEnabled != nil && *sharedCfg.CSMEnabled == true { + return csmConfig{ + Enabled: true, + ClientID: sharedCfg.CSMClientID, + Host: sharedCfg.CSMHost, + Port: sharedCfg.CSMPort, + }, nil + } + + return csmConfig{}, nil +} + +func loadCustomCABundle(s *Session, bundle io.Reader) error { + var t *http.Transport + switch v := s.Config.HTTPClient.Transport.(type) { + case *http.Transport: + t = v + default: + if s.Config.HTTPClient.Transport != nil { + return awserr.New("LoadCustomCABundleError", + "unable to load custom CA bundle, HTTPClient's transport unsupported type", nil) + } + } + if t == nil { + // Nil transport implies `http.DefaultTransport` should be used. Since + // the SDK cannot modify, nor copy the `DefaultTransport` specifying + // the values the next closest behavior. + t = getCABundleTransport() + } + + p, err := loadCertPool(bundle) + if err != nil { + return err + } + if t.TLSClientConfig == nil { + t.TLSClientConfig = &tls.Config{} + } + t.TLSClientConfig.RootCAs = p + + s.Config.HTTPClient.Transport = t + + return nil +} + +func loadCertPool(r io.Reader) (*x509.CertPool, error) { + b, err := ioutil.ReadAll(r) + if err != nil { + return nil, awserr.New("LoadCustomCABundleError", + "failed to read custom CA bundle PEM file", err) + } + + p := x509.NewCertPool() + if !p.AppendCertsFromPEM(b) { + return nil, awserr.New("LoadCustomCABundleError", + "failed to load custom CA bundle PEM file", err) + } + + return p, nil +} + +func mergeConfigSrcs(cfg, userCfg *aws.Config, + envCfg envConfig, sharedCfg sharedConfig, + handlers request.Handlers, + sessOpts Options, +) error { + + // Region if not already set by user + if len(aws.StringValue(cfg.Region)) == 0 { + if len(envCfg.Region) > 0 { + cfg.WithRegion(envCfg.Region) + } else if envCfg.EnableSharedConfig && len(sharedCfg.Region) > 0 { + cfg.WithRegion(sharedCfg.Region) + } + } + + if cfg.EnableEndpointDiscovery == nil { + if envCfg.EnableEndpointDiscovery != nil { + cfg.WithEndpointDiscovery(*envCfg.EnableEndpointDiscovery) + } else if envCfg.EnableSharedConfig && sharedCfg.EnableEndpointDiscovery != nil { + cfg.WithEndpointDiscovery(*sharedCfg.EnableEndpointDiscovery) + } + } + + // Regional Endpoint flag for STS endpoint resolving + mergeSTSRegionalEndpointConfig(cfg, []endpoints.STSRegionalEndpoint{ + userCfg.STSRegionalEndpoint, + envCfg.STSRegionalEndpoint, + sharedCfg.STSRegionalEndpoint, + endpoints.LegacySTSEndpoint, + }) + + // Regional Endpoint flag for S3 endpoint resolving + mergeS3UsEast1RegionalEndpointConfig(cfg, []endpoints.S3UsEast1RegionalEndpoint{ + userCfg.S3UsEast1RegionalEndpoint, + envCfg.S3UsEast1RegionalEndpoint, + sharedCfg.S3UsEast1RegionalEndpoint, + endpoints.LegacyS3UsEast1Endpoint, + }) + + // Configure credentials if not already set by the user when creating the + // Session. + if cfg.Credentials == credentials.AnonymousCredentials && userCfg.Credentials == nil { + creds, err := resolveCredentials(cfg, envCfg, sharedCfg, handlers, sessOpts) + if err != nil { + return err + } + cfg.Credentials = creds + } + + return nil +} + +func mergeSTSRegionalEndpointConfig(cfg *aws.Config, values []endpoints.STSRegionalEndpoint) { + for _, v := range values { + if v != endpoints.UnsetSTSEndpoint { + cfg.STSRegionalEndpoint = v + break + } + } +} + +func mergeS3UsEast1RegionalEndpointConfig(cfg *aws.Config, values []endpoints.S3UsEast1RegionalEndpoint) { + for _, v := range values { + if v != endpoints.UnsetS3UsEast1Endpoint { + cfg.S3UsEast1RegionalEndpoint = v + break + } + } +} + +func initHandlers(s *Session) { + // Add the Validate parameter handler if it is not disabled. + s.Handlers.Validate.Remove(corehandlers.ValidateParametersHandler) + if !aws.BoolValue(s.Config.DisableParamValidation) { + s.Handlers.Validate.PushBackNamed(corehandlers.ValidateParametersHandler) + } +} + +// Copy creates and returns a copy of the current Session, copying the config +// and handlers. If any additional configs are provided they will be merged +// on top of the Session's copied config. +// +// // Create a copy of the current Session, configured for the us-west-2 region. +// sess.Copy(&aws.Config{Region: aws.String("us-west-2")}) +func (s *Session) Copy(cfgs ...*aws.Config) *Session { + newSession := &Session{ + Config: s.Config.Copy(cfgs...), + Handlers: s.Handlers.Copy(), + } + + initHandlers(newSession) + + return newSession +} + +// ClientConfig satisfies the client.ConfigProvider interface and is used to +// configure the service client instances. Passing the Session to the service +// client's constructor (New) will use this method to configure the client. +func (s *Session) ClientConfig(service string, cfgs ...*aws.Config) client.Config { + s = s.Copy(cfgs...) + + region := aws.StringValue(s.Config.Region) + resolved, err := s.resolveEndpoint(service, region, s.Config) + if err != nil && s.Config.Logger != nil { + s.Config.Logger.Log(fmt.Sprintf( + "ERROR: unable to resolve endpoint for service %q, region %q, err: %v", + service, region, err)) + } + + return client.Config{ + Config: s.Config, + Handlers: s.Handlers, + Endpoint: resolved.URL, + SigningRegion: resolved.SigningRegion, + SigningNameDerived: resolved.SigningNameDerived, + SigningName: resolved.SigningName, + } +} + +func (s *Session) resolveEndpoint(service, region string, cfg *aws.Config) (endpoints.ResolvedEndpoint, error) { + + if ep := aws.StringValue(cfg.Endpoint); len(ep) != 0 { + return endpoints.ResolvedEndpoint{ + URL: endpoints.AddScheme(ep, aws.BoolValue(cfg.DisableSSL)), + SigningRegion: region, + }, nil + } + + resolved, err := cfg.EndpointResolver.EndpointFor(service, region, + func(opt *endpoints.Options) { + opt.DisableSSL = aws.BoolValue(cfg.DisableSSL) + opt.UseDualStack = aws.BoolValue(cfg.UseDualStack) + // Support for STSRegionalEndpoint where the STSRegionalEndpoint is + // provided in envConfig or sharedConfig with envConfig getting + // precedence. + opt.STSRegionalEndpoint = cfg.STSRegionalEndpoint + + // Support for S3UsEast1RegionalEndpoint where the S3UsEast1RegionalEndpoint is + // provided in envConfig or sharedConfig with envConfig getting + // precedence. + opt.S3UsEast1RegionalEndpoint = cfg.S3UsEast1RegionalEndpoint + + // Support the condition where the service is modeled but its + // endpoint metadata is not available. + opt.ResolveUnknownService = true + }, + ) + if err != nil { + return endpoints.ResolvedEndpoint{}, err + } + + return resolved, nil +} + +// ClientConfigNoResolveEndpoint is the same as ClientConfig with the exception +// that the EndpointResolver will not be used to resolve the endpoint. The only +// endpoint set must come from the aws.Config.Endpoint field. +func (s *Session) ClientConfigNoResolveEndpoint(cfgs ...*aws.Config) client.Config { + s = s.Copy(cfgs...) + + var resolved endpoints.ResolvedEndpoint + if ep := aws.StringValue(s.Config.Endpoint); len(ep) > 0 { + resolved.URL = endpoints.AddScheme(ep, aws.BoolValue(s.Config.DisableSSL)) + resolved.SigningRegion = aws.StringValue(s.Config.Region) + } + + return client.Config{ + Config: s.Config, + Handlers: s.Handlers, + Endpoint: resolved.URL, + SigningRegion: resolved.SigningRegion, + SigningNameDerived: resolved.SigningNameDerived, + SigningName: resolved.SigningName, + } +} + +// logDeprecatedNewSessionError function enables error handling for session +func (s *Session) logDeprecatedNewSessionError(msg string, err error, cfgs []*aws.Config) { + // Session creation failed, need to report the error and prevent + // any requests from succeeding. + s.Config.MergeIn(cfgs...) + s.Config.Logger.Log("ERROR:", msg, "Error:", err) + s.Handlers.Validate.PushBack(func(r *request.Request) { + r.Error = err + }) +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/session/shared_config.go b/vendor/github.com/aws/aws-sdk-go/aws/session/shared_config.go new file mode 100644 index 0000000..1d7b049 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/session/shared_config.go @@ -0,0 +1,526 @@ +package session + +import ( + "fmt" + + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/endpoints" + "github.com/aws/aws-sdk-go/internal/ini" +) + +const ( + // Static Credentials group + accessKeyIDKey = `aws_access_key_id` // group required + secretAccessKey = `aws_secret_access_key` // group required + sessionTokenKey = `aws_session_token` // optional + + // Assume Role Credentials group + roleArnKey = `role_arn` // group required + sourceProfileKey = `source_profile` // group required (or credential_source) + credentialSourceKey = `credential_source` // group required (or source_profile) + externalIDKey = `external_id` // optional + mfaSerialKey = `mfa_serial` // optional + roleSessionNameKey = `role_session_name` // optional + + // CSM options + csmEnabledKey = `csm_enabled` + csmHostKey = `csm_host` + csmPortKey = `csm_port` + csmClientIDKey = `csm_client_id` + + // Additional Config fields + regionKey = `region` + + // endpoint discovery group + enableEndpointDiscoveryKey = `endpoint_discovery_enabled` // optional + + // External Credential Process + credentialProcessKey = `credential_process` // optional + + // Web Identity Token File + webIdentityTokenFileKey = `web_identity_token_file` // optional + + // Additional config fields for regional or legacy endpoints + stsRegionalEndpointSharedKey = `sts_regional_endpoints` + + // Additional config fields for regional or legacy endpoints + s3UsEast1RegionalSharedKey = `s3_us_east_1_regional_endpoint` + + // DefaultSharedConfigProfile is the default profile to be used when + // loading configuration from the config files if another profile name + // is not provided. + DefaultSharedConfigProfile = `default` +) + +// sharedConfig represents the configuration fields of the SDK config files. +type sharedConfig struct { + // Credentials values from the config file. Both aws_access_key_id and + // aws_secret_access_key must be provided together in the same file to be + // considered valid. The values will be ignored if not a complete group. + // aws_session_token is an optional field that can be provided if both of + // the other two fields are also provided. + // + // aws_access_key_id + // aws_secret_access_key + // aws_session_token + Creds credentials.Value + + CredentialSource string + CredentialProcess string + WebIdentityTokenFile string + + RoleARN string + RoleSessionName string + ExternalID string + MFASerial string + + SourceProfileName string + SourceProfile *sharedConfig + + // Region is the region the SDK should use for looking up AWS service + // endpoints and signing requests. + // + // region + Region string + + // EnableEndpointDiscovery can be enabled in the shared config by setting + // endpoint_discovery_enabled to true + // + // endpoint_discovery_enabled = true + EnableEndpointDiscovery *bool + // CSM Options + CSMEnabled *bool + CSMHost string + CSMPort string + CSMClientID string + + // Specifies the Regional Endpoint flag for the SDK to resolve the endpoint for a service + // + // sts_regional_endpoints = regional + // This can take value as `LegacySTSEndpoint` or `RegionalSTSEndpoint` + STSRegionalEndpoint endpoints.STSRegionalEndpoint + + // Specifies the Regional Endpoint flag for the SDK to resolve the endpoint for a service + // + // s3_us_east_1_regional_endpoint = regional + // This can take value as `LegacyS3UsEast1Endpoint` or `RegionalS3UsEast1Endpoint` + S3UsEast1RegionalEndpoint endpoints.S3UsEast1RegionalEndpoint +} + +type sharedConfigFile struct { + Filename string + IniData ini.Sections +} + +// loadSharedConfig retrieves the configuration from the list of files using +// the profile provided. The order the files are listed will determine +// precedence. Values in subsequent files will overwrite values defined in +// earlier files. +// +// For example, given two files A and B. Both define credentials. If the order +// of the files are A then B, B's credential values will be used instead of +// A's. +// +// See sharedConfig.setFromFile for information how the config files +// will be loaded. +func loadSharedConfig(profile string, filenames []string, exOpts bool) (sharedConfig, error) { + if len(profile) == 0 { + profile = DefaultSharedConfigProfile + } + + files, err := loadSharedConfigIniFiles(filenames) + if err != nil { + return sharedConfig{}, err + } + + cfg := sharedConfig{} + profiles := map[string]struct{}{} + if err = cfg.setFromIniFiles(profiles, profile, files, exOpts); err != nil { + return sharedConfig{}, err + } + + return cfg, nil +} + +func loadSharedConfigIniFiles(filenames []string) ([]sharedConfigFile, error) { + files := make([]sharedConfigFile, 0, len(filenames)) + + for _, filename := range filenames { + sections, err := ini.OpenFile(filename) + if aerr, ok := err.(awserr.Error); ok && aerr.Code() == ini.ErrCodeUnableToReadFile { + // Skip files which can't be opened and read for whatever reason + continue + } else if err != nil { + return nil, SharedConfigLoadError{Filename: filename, Err: err} + } + + files = append(files, sharedConfigFile{ + Filename: filename, IniData: sections, + }) + } + + return files, nil +} + +func (cfg *sharedConfig) setFromIniFiles(profiles map[string]struct{}, profile string, files []sharedConfigFile, exOpts bool) error { + // Trim files from the list that don't exist. + var skippedFiles int + var profileNotFoundErr error + for _, f := range files { + if err := cfg.setFromIniFile(profile, f, exOpts); err != nil { + if _, ok := err.(SharedConfigProfileNotExistsError); ok { + // Ignore profiles not defined in individual files. + profileNotFoundErr = err + skippedFiles++ + continue + } + return err + } + } + if skippedFiles == len(files) { + // If all files were skipped because the profile is not found, return + // the original profile not found error. + return profileNotFoundErr + } + + if _, ok := profiles[profile]; ok { + // if this is the second instance of the profile the Assume Role + // options must be cleared because they are only valid for the + // first reference of a profile. The self linked instance of the + // profile only have credential provider options. + cfg.clearAssumeRoleOptions() + } else { + // First time a profile has been seen, It must either be a assume role + // or credentials. Assert if the credential type requires a role ARN, + // the ARN is also set. + if err := cfg.validateCredentialsRequireARN(profile); err != nil { + return err + } + } + profiles[profile] = struct{}{} + + if err := cfg.validateCredentialType(); err != nil { + return err + } + + // Link source profiles for assume roles + if len(cfg.SourceProfileName) != 0 { + // Linked profile via source_profile ignore credential provider + // options, the source profile must provide the credentials. + cfg.clearCredentialOptions() + + srcCfg := &sharedConfig{} + err := srcCfg.setFromIniFiles(profiles, cfg.SourceProfileName, files, exOpts) + if err != nil { + // SourceProfile that doesn't exist is an error in configuration. + if _, ok := err.(SharedConfigProfileNotExistsError); ok { + err = SharedConfigAssumeRoleError{ + RoleARN: cfg.RoleARN, + SourceProfile: cfg.SourceProfileName, + } + } + return err + } + + if !srcCfg.hasCredentials() { + return SharedConfigAssumeRoleError{ + RoleARN: cfg.RoleARN, + SourceProfile: cfg.SourceProfileName, + } + } + + cfg.SourceProfile = srcCfg + } + + return nil +} + +// setFromFile loads the configuration from the file using the profile +// provided. A sharedConfig pointer type value is used so that multiple config +// file loadings can be chained. +// +// Only loads complete logically grouped values, and will not set fields in cfg +// for incomplete grouped values in the config. Such as credentials. For +// example if a config file only includes aws_access_key_id but no +// aws_secret_access_key the aws_access_key_id will be ignored. +func (cfg *sharedConfig) setFromIniFile(profile string, file sharedConfigFile, exOpts bool) error { + section, ok := file.IniData.GetSection(profile) + if !ok { + // Fallback to to alternate profile name: profile + section, ok = file.IniData.GetSection(fmt.Sprintf("profile %s", profile)) + if !ok { + return SharedConfigProfileNotExistsError{Profile: profile, Err: nil} + } + } + + if exOpts { + // Assume Role Parameters + updateString(&cfg.RoleARN, section, roleArnKey) + updateString(&cfg.ExternalID, section, externalIDKey) + updateString(&cfg.MFASerial, section, mfaSerialKey) + updateString(&cfg.RoleSessionName, section, roleSessionNameKey) + updateString(&cfg.SourceProfileName, section, sourceProfileKey) + updateString(&cfg.CredentialSource, section, credentialSourceKey) + updateString(&cfg.Region, section, regionKey) + + if v := section.String(stsRegionalEndpointSharedKey); len(v) != 0 { + sre, err := endpoints.GetSTSRegionalEndpoint(v) + if err != nil { + return fmt.Errorf("failed to load %s from shared config, %s, %v", + stsRegionalEndpointSharedKey, file.Filename, err) + } + cfg.STSRegionalEndpoint = sre + } + + if v := section.String(s3UsEast1RegionalSharedKey); len(v) != 0 { + sre, err := endpoints.GetS3UsEast1RegionalEndpoint(v) + if err != nil { + return fmt.Errorf("failed to load %s from shared config, %s, %v", + s3UsEast1RegionalSharedKey, file.Filename, err) + } + cfg.S3UsEast1RegionalEndpoint = sre + } + } + + updateString(&cfg.CredentialProcess, section, credentialProcessKey) + updateString(&cfg.WebIdentityTokenFile, section, webIdentityTokenFileKey) + + // Shared Credentials + creds := credentials.Value{ + AccessKeyID: section.String(accessKeyIDKey), + SecretAccessKey: section.String(secretAccessKey), + SessionToken: section.String(sessionTokenKey), + ProviderName: fmt.Sprintf("SharedConfigCredentials: %s", file.Filename), + } + if creds.HasKeys() { + cfg.Creds = creds + } + + // Endpoint discovery + updateBoolPtr(&cfg.EnableEndpointDiscovery, section, enableEndpointDiscoveryKey) + + // CSM options + updateBoolPtr(&cfg.CSMEnabled, section, csmEnabledKey) + updateString(&cfg.CSMHost, section, csmHostKey) + updateString(&cfg.CSMPort, section, csmPortKey) + updateString(&cfg.CSMClientID, section, csmClientIDKey) + + return nil +} + +func (cfg *sharedConfig) validateCredentialsRequireARN(profile string) error { + var credSource string + + switch { + case len(cfg.SourceProfileName) != 0: + credSource = sourceProfileKey + case len(cfg.CredentialSource) != 0: + credSource = credentialSourceKey + case len(cfg.WebIdentityTokenFile) != 0: + credSource = webIdentityTokenFileKey + } + + if len(credSource) != 0 && len(cfg.RoleARN) == 0 { + return CredentialRequiresARNError{ + Type: credSource, + Profile: profile, + } + } + + return nil +} + +func (cfg *sharedConfig) validateCredentialType() error { + // Only one or no credential type can be defined. + if !oneOrNone( + len(cfg.SourceProfileName) != 0, + len(cfg.CredentialSource) != 0, + len(cfg.CredentialProcess) != 0, + len(cfg.WebIdentityTokenFile) != 0, + ) { + return ErrSharedConfigSourceCollision + } + + return nil +} + +func (cfg *sharedConfig) hasCredentials() bool { + switch { + case len(cfg.SourceProfileName) != 0: + case len(cfg.CredentialSource) != 0: + case len(cfg.CredentialProcess) != 0: + case len(cfg.WebIdentityTokenFile) != 0: + case cfg.Creds.HasKeys(): + default: + return false + } + + return true +} + +func (cfg *sharedConfig) clearCredentialOptions() { + cfg.CredentialSource = "" + cfg.CredentialProcess = "" + cfg.WebIdentityTokenFile = "" + cfg.Creds = credentials.Value{} +} + +func (cfg *sharedConfig) clearAssumeRoleOptions() { + cfg.RoleARN = "" + cfg.ExternalID = "" + cfg.MFASerial = "" + cfg.RoleSessionName = "" + cfg.SourceProfileName = "" +} + +func oneOrNone(bs ...bool) bool { + var count int + + for _, b := range bs { + if b { + count++ + if count > 1 { + return false + } + } + } + + return true +} + +// updateString will only update the dst with the value in the section key, key +// is present in the section. +func updateString(dst *string, section ini.Section, key string) { + if !section.Has(key) { + return + } + *dst = section.String(key) +} + +// updateBoolPtr will only update the dst with the value in the section key, +// key is present in the section. +func updateBoolPtr(dst **bool, section ini.Section, key string) { + if !section.Has(key) { + return + } + *dst = new(bool) + **dst = section.Bool(key) +} + +// SharedConfigLoadError is an error for the shared config file failed to load. +type SharedConfigLoadError struct { + Filename string + Err error +} + +// Code is the short id of the error. +func (e SharedConfigLoadError) Code() string { + return "SharedConfigLoadError" +} + +// Message is the description of the error +func (e SharedConfigLoadError) Message() string { + return fmt.Sprintf("failed to load config file, %s", e.Filename) +} + +// OrigErr is the underlying error that caused the failure. +func (e SharedConfigLoadError) OrigErr() error { + return e.Err +} + +// Error satisfies the error interface. +func (e SharedConfigLoadError) Error() string { + return awserr.SprintError(e.Code(), e.Message(), "", e.Err) +} + +// SharedConfigProfileNotExistsError is an error for the shared config when +// the profile was not find in the config file. +type SharedConfigProfileNotExistsError struct { + Profile string + Err error +} + +// Code is the short id of the error. +func (e SharedConfigProfileNotExistsError) Code() string { + return "SharedConfigProfileNotExistsError" +} + +// Message is the description of the error +func (e SharedConfigProfileNotExistsError) Message() string { + return fmt.Sprintf("failed to get profile, %s", e.Profile) +} + +// OrigErr is the underlying error that caused the failure. +func (e SharedConfigProfileNotExistsError) OrigErr() error { + return e.Err +} + +// Error satisfies the error interface. +func (e SharedConfigProfileNotExistsError) Error() string { + return awserr.SprintError(e.Code(), e.Message(), "", e.Err) +} + +// SharedConfigAssumeRoleError is an error for the shared config when the +// profile contains assume role information, but that information is invalid +// or not complete. +type SharedConfigAssumeRoleError struct { + RoleARN string + SourceProfile string +} + +// Code is the short id of the error. +func (e SharedConfigAssumeRoleError) Code() string { + return "SharedConfigAssumeRoleError" +} + +// Message is the description of the error +func (e SharedConfigAssumeRoleError) Message() string { + return fmt.Sprintf( + "failed to load assume role for %s, source profile %s has no shared credentials", + e.RoleARN, e.SourceProfile, + ) +} + +// OrigErr is the underlying error that caused the failure. +func (e SharedConfigAssumeRoleError) OrigErr() error { + return nil +} + +// Error satisfies the error interface. +func (e SharedConfigAssumeRoleError) Error() string { + return awserr.SprintError(e.Code(), e.Message(), "", nil) +} + +// CredentialRequiresARNError provides the error for shared config credentials +// that are incorrectly configured in the shared config or credentials file. +type CredentialRequiresARNError struct { + // type of credentials that were configured. + Type string + + // Profile name the credentials were in. + Profile string +} + +// Code is the short id of the error. +func (e CredentialRequiresARNError) Code() string { + return "CredentialRequiresARNError" +} + +// Message is the description of the error +func (e CredentialRequiresARNError) Message() string { + return fmt.Sprintf( + "credential type %s requires role_arn, profile %s", + e.Type, e.Profile, + ) +} + +// OrigErr is the underlying error that caused the failure. +func (e CredentialRequiresARNError) OrigErr() error { + return nil +} + +// Error satisfies the error interface. +func (e CredentialRequiresARNError) Error() string { + return awserr.SprintError(e.Code(), e.Message(), "", nil) +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/header_rules.go b/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/header_rules.go new file mode 100644 index 0000000..244c86d --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/header_rules.go @@ -0,0 +1,82 @@ +package v4 + +import ( + "net/http" + "strings" +) + +// validator houses a set of rule needed for validation of a +// string value +type rules []rule + +// rule interface allows for more flexible rules and just simply +// checks whether or not a value adheres to that rule +type rule interface { + IsValid(value string) bool +} + +// IsValid will iterate through all rules and see if any rules +// apply to the value and supports nested rules +func (r rules) IsValid(value string) bool { + for _, rule := range r { + if rule.IsValid(value) { + return true + } + } + return false +} + +// mapRule generic rule for maps +type mapRule map[string]struct{} + +// IsValid for the map rule satisfies whether it exists in the map +func (m mapRule) IsValid(value string) bool { + _, ok := m[value] + return ok +} + +// whitelist is a generic rule for whitelisting +type whitelist struct { + rule +} + +// IsValid for whitelist checks if the value is within the whitelist +func (w whitelist) IsValid(value string) bool { + return w.rule.IsValid(value) +} + +// blacklist is a generic rule for blacklisting +type blacklist struct { + rule +} + +// IsValid for whitelist checks if the value is within the whitelist +func (b blacklist) IsValid(value string) bool { + return !b.rule.IsValid(value) +} + +type patterns []string + +// IsValid for patterns checks each pattern and returns if a match has +// been found +func (p patterns) IsValid(value string) bool { + for _, pattern := range p { + if strings.HasPrefix(http.CanonicalHeaderKey(value), pattern) { + return true + } + } + return false +} + +// inclusiveRules rules allow for rules to depend on one another +type inclusiveRules []rule + +// IsValid will return true if all rules are true +func (r inclusiveRules) IsValid(value string) bool { + for _, rule := range r { + if !rule.IsValid(value) { + return false + } + } + return true +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/options.go b/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/options.go new file mode 100644 index 0000000..6aa2ed2 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/options.go @@ -0,0 +1,7 @@ +package v4 + +// WithUnsignedPayload will enable and set the UnsignedPayload field to +// true of the signer. +func WithUnsignedPayload(v4 *Signer) { + v4.UnsignedPayload = true +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/uri_path.go b/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/uri_path.go new file mode 100644 index 0000000..bd082e9 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/uri_path.go @@ -0,0 +1,24 @@ +// +build go1.5 + +package v4 + +import ( + "net/url" + "strings" +) + +func getURIPath(u *url.URL) string { + var uri string + + if len(u.Opaque) > 0 { + uri = "/" + strings.Join(strings.Split(u.Opaque, "/")[3:], "/") + } else { + uri = u.EscapedPath() + } + + if len(uri) == 0 { + uri = "/" + } + + return uri +} 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 new file mode 100644 index 0000000..8104793 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go @@ -0,0 +1,806 @@ +// Package v4 implements signing for AWS V4 signer +// +// Provides request signing for request that need to be signed with +// AWS V4 Signatures. +// +// Standalone Signer +// +// Generally using the signer outside of the SDK should not require any additional +// logic when using Go v1.5 or higher. The signer does this by taking advantage +// of the URL.EscapedPath method. If your request URI requires additional escaping +// you many need to use the URL.Opaque to define what the raw URI should be sent +// to the service as. +// +// The signer will first check the URL.Opaque field, and use its value if set. +// The signer does require the URL.Opaque field to be set in the form of: +// +// "///" +// +// // e.g. +// "//example.com/some/path" +// +// The leading "//" and hostname are required or the URL.Opaque escaping will +// not work correctly. +// +// If URL.Opaque is not set the signer will fallback to the URL.EscapedPath() +// method and using the returned value. If you're using Go v1.4 you must set +// URL.Opaque if the URI path needs escaping. If URL.Opaque is not set with +// Go v1.5 the signer will fallback to URL.Path. +// +// AWS v4 signature validation requires that the canonical string's URI path +// element must be the URI escaped form of the HTTP request's path. +// http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html +// +// The Go HTTP client will perform escaping automatically on the request. Some +// of these escaping may cause signature validation errors because the HTTP +// request differs from the URI path or query that the signature was generated. +// https://golang.org/pkg/net/url/#URL.EscapedPath +// +// Because of this, it is recommended that when using the signer outside of the +// SDK that explicitly escaping the request prior to being signed is preferable, +// and will help prevent signature validation errors. This can be done by setting +// the URL.Opaque or URL.RawPath. The SDK will use URL.Opaque first and then +// call URL.EscapedPath() if Opaque is not set. +// +// If signing a request intended for HTTP2 server, and you're using Go 1.6.2 +// through 1.7.4 you should use the URL.RawPath as the pre-escaped form of the +// request URL. https://github.com/golang/go/issues/16847 points to a bug in +// Go pre 1.8 that fails to make HTTP2 requests using absolute URL in the HTTP +// message. URL.Opaque generally will force Go to make requests with absolute URL. +// URL.RawPath does not do this, but RawPath must be a valid escaping of Path +// or url.EscapedPath will ignore the RawPath escaping. +// +// Test `TestStandaloneSign` provides a complete example of using the signer +// outside of the SDK and pre-escaping the URI path. +package v4 + +import ( + "crypto/hmac" + "crypto/sha256" + "encoding/hex" + "fmt" + "io" + "io/ioutil" + "net/http" + "net/url" + "sort" + "strconv" + "strings" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/internal/sdkio" + "github.com/aws/aws-sdk-go/private/protocol/rest" +) + +const ( + authHeaderPrefix = "AWS4-HMAC-SHA256" + timeFormat = "20060102T150405Z" + shortTimeFormat = "20060102" + + // emptyStringSHA256 is a SHA256 of an empty string + emptyStringSHA256 = `e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855` +) + +var ignoredHeaders = rules{ + blacklist{ + mapRule{ + "Authorization": struct{}{}, + "User-Agent": struct{}{}, + "X-Amzn-Trace-Id": struct{}{}, + }, + }, +} + +// requiredSignedHeaders is a whitelist for build canonical headers. +var requiredSignedHeaders = rules{ + whitelist{ + mapRule{ + "Cache-Control": struct{}{}, + "Content-Disposition": struct{}{}, + "Content-Encoding": struct{}{}, + "Content-Language": struct{}{}, + "Content-Md5": struct{}{}, + "Content-Type": struct{}{}, + "Expires": struct{}{}, + "If-Match": struct{}{}, + "If-Modified-Since": struct{}{}, + "If-None-Match": struct{}{}, + "If-Unmodified-Since": struct{}{}, + "Range": struct{}{}, + "X-Amz-Acl": struct{}{}, + "X-Amz-Copy-Source": struct{}{}, + "X-Amz-Copy-Source-If-Match": struct{}{}, + "X-Amz-Copy-Source-If-Modified-Since": struct{}{}, + "X-Amz-Copy-Source-If-None-Match": struct{}{}, + "X-Amz-Copy-Source-If-Unmodified-Since": struct{}{}, + "X-Amz-Copy-Source-Range": struct{}{}, + "X-Amz-Copy-Source-Server-Side-Encryption-Customer-Algorithm": struct{}{}, + "X-Amz-Copy-Source-Server-Side-Encryption-Customer-Key": struct{}{}, + "X-Amz-Copy-Source-Server-Side-Encryption-Customer-Key-Md5": struct{}{}, + "X-Amz-Grant-Full-control": struct{}{}, + "X-Amz-Grant-Read": struct{}{}, + "X-Amz-Grant-Read-Acp": struct{}{}, + "X-Amz-Grant-Write": struct{}{}, + "X-Amz-Grant-Write-Acp": struct{}{}, + "X-Amz-Metadata-Directive": struct{}{}, + "X-Amz-Mfa": struct{}{}, + "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-Customer-Algorithm": struct{}{}, + "X-Amz-Server-Side-Encryption-Customer-Key": struct{}{}, + "X-Amz-Server-Side-Encryption-Customer-Key-Md5": struct{}{}, + "X-Amz-Storage-Class": struct{}{}, + "X-Amz-Tagging": struct{}{}, + "X-Amz-Website-Redirect-Location": struct{}{}, + "X-Amz-Content-Sha256": struct{}{}, + }, + }, + patterns{"X-Amz-Meta-"}, +} + +// allowedHoisting is a whitelist for build query headers. The boolean value +// represents whether or not it is a pattern. +var allowedQueryHoisting = inclusiveRules{ + blacklist{requiredSignedHeaders}, + patterns{"X-Amz-"}, +} + +// Signer applies AWS v4 signing to given request. Use this to sign requests +// that need to be signed with AWS V4 Signatures. +type Signer struct { + // The authentication credentials the request will be signed against. + // This value must be set to sign requests. + Credentials *credentials.Credentials + + // Sets the log level the signer should use when reporting information to + // the logger. If the logger is nil nothing will be logged. See + // aws.LogLevelType for more information on available logging levels + // + // By default nothing will be logged. + Debug aws.LogLevelType + + // The logger loging information will be written to. If there the logger + // is nil, nothing will be logged. + Logger aws.Logger + + // Disables the Signer's moving HTTP header key/value pairs from the HTTP + // request header to the request's query string. This is most commonly used + // with pre-signed requests preventing headers from being added to the + // request's query string. + DisableHeaderHoisting bool + + // Disables the automatic escaping of the URI path of the request for the + // siganture's canonical string's path. For services that do not need additional + // escaping then use this to disable the signer escaping the path. + // + // S3 is an example of a service that does not need additional escaping. + // + // http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html + DisableURIPathEscaping bool + + // Disables the automatical setting of the HTTP request's Body field with the + // io.ReadSeeker passed in to the signer. This is useful if you're using a + // custom wrapper around the body for the io.ReadSeeker and want to preserve + // the Body value on the Request.Body. + // + // This does run the risk of signing a request with a body that will not be + // sent in the request. Need to ensure that the underlying data of the Body + // values are the same. + DisableRequestBodyOverwrite bool + + // currentTimeFn returns the time value which represents the current time. + // This value should only be used for testing. If it is nil the default + // time.Now will be used. + currentTimeFn func() time.Time + + // UnsignedPayload will prevent signing of the payload. This will only + // work for services that have support for this. + UnsignedPayload bool +} + +// NewSigner returns a Signer pointer configured with the credentials and optional +// option values provided. If not options are provided the Signer will use its +// default configuration. +func NewSigner(credentials *credentials.Credentials, options ...func(*Signer)) *Signer { + v4 := &Signer{ + Credentials: credentials, + } + + for _, option := range options { + option(v4) + } + + return v4 +} + +type signingCtx struct { + ServiceName string + Region string + Request *http.Request + Body io.ReadSeeker + Query url.Values + Time time.Time + ExpireTime time.Duration + SignedHeaderVals http.Header + + DisableURIPathEscaping bool + + credValues credentials.Value + isPresign bool + formattedTime string + formattedShortTime string + unsignedPayload bool + + bodyDigest string + signedHeaders string + canonicalHeaders string + canonicalString string + credentialString string + stringToSign string + signature string + authorization string +} + +// Sign signs AWS v4 requests with the provided body, service name, region the +// request is made to, and time the request is signed at. The signTime allows +// you to specify that a request is signed for the future, and cannot be +// used until then. +// +// Returns a list of HTTP headers that were included in the signature or an +// error if signing the request failed. Generally for signed requests this value +// is not needed as the full request context will be captured by the http.Request +// value. It is included for reference though. +// +// Sign will set the request's Body to be the `body` parameter passed in. If +// the body is not already an io.ReadCloser, it will be wrapped within one. If +// a `nil` body parameter passed to Sign, the request's Body field will be +// also set to nil. Its important to note that this functionality will not +// change the request's ContentLength of the request. +// +// Sign differs from Presign in that it will sign the request using HTTP +// header values. This type of signing is intended for http.Request values that +// will not be shared, or are shared in a way the header values on the request +// will not be lost. +// +// The requests body is an io.ReadSeeker so the SHA256 of the body can be +// generated. To bypass the signer computing the hash you can set the +// "X-Amz-Content-Sha256" header with a precomputed value. The signer will +// only compute the hash if the request header value is empty. +func (v4 Signer) Sign(r *http.Request, body io.ReadSeeker, service, region string, signTime time.Time) (http.Header, error) { + return v4.signWithBody(r, body, service, region, 0, false, signTime) +} + +// Presign signs AWS v4 requests with the provided body, service name, region +// the request is made to, and time the request is signed at. The signTime +// allows you to specify that a request is signed for the future, and cannot +// be used until then. +// +// Returns a list of HTTP headers that were included in the signature or an +// error if signing the request failed. For presigned requests these headers +// and their values must be included on the HTTP request when it is made. This +// is helpful to know what header values need to be shared with the party the +// presigned request will be distributed to. +// +// Presign differs from Sign in that it will sign the request using query string +// instead of header values. This allows you to share the Presigned Request's +// URL with third parties, or distribute it throughout your system with minimal +// dependencies. +// +// Presign also takes an exp value which is the duration the +// signed request will be valid after the signing time. This is allows you to +// set when the request will expire. +// +// The requests body is an io.ReadSeeker so the SHA256 of the body can be +// generated. To bypass the signer computing the hash you can set the +// "X-Amz-Content-Sha256" header with a precomputed value. The signer will +// only compute the hash if the request header value is empty. +// +// Presigning a S3 request will not compute the body's SHA256 hash by default. +// This is done due to the general use case for S3 presigned URLs is to share +// PUT/GET capabilities. If you would like to include the body's SHA256 in the +// presigned request's signature you can set the "X-Amz-Content-Sha256" +// HTTP header and that will be included in the request's signature. +func (v4 Signer) Presign(r *http.Request, body io.ReadSeeker, service, region string, exp time.Duration, signTime time.Time) (http.Header, error) { + return v4.signWithBody(r, body, service, region, exp, true, signTime) +} + +func (v4 Signer) signWithBody(r *http.Request, body io.ReadSeeker, service, region string, exp time.Duration, isPresign bool, signTime time.Time) (http.Header, error) { + currentTimeFn := v4.currentTimeFn + if currentTimeFn == nil { + currentTimeFn = time.Now + } + + ctx := &signingCtx{ + Request: r, + Body: body, + Query: r.URL.Query(), + Time: signTime, + ExpireTime: exp, + isPresign: isPresign, + ServiceName: service, + Region: region, + DisableURIPathEscaping: v4.DisableURIPathEscaping, + unsignedPayload: v4.UnsignedPayload, + } + + for key := range ctx.Query { + sort.Strings(ctx.Query[key]) + } + + if ctx.isRequestSigned() { + ctx.Time = currentTimeFn() + ctx.handlePresignRemoval() + } + + var err error + ctx.credValues, err = v4.Credentials.Get() + if err != nil { + return http.Header{}, err + } + + ctx.sanitizeHostForHeader() + ctx.assignAmzQueryValues() + if err := ctx.build(v4.DisableHeaderHoisting); err != nil { + return nil, err + } + + // If the request is not presigned the body should be attached to it. This + // prevents the confusion of wanting to send a signed request without + // the body the request was signed for attached. + if !(v4.DisableRequestBodyOverwrite || ctx.isPresign) { + var reader io.ReadCloser + if body != nil { + var ok bool + if reader, ok = body.(io.ReadCloser); !ok { + reader = ioutil.NopCloser(body) + } + } + r.Body = reader + } + + if v4.Debug.Matches(aws.LogDebugWithSigning) { + v4.logSigningInfo(ctx) + } + + return ctx.SignedHeaderVals, nil +} + +func (ctx *signingCtx) sanitizeHostForHeader() { + request.SanitizeHostForHeader(ctx.Request) +} + +func (ctx *signingCtx) handlePresignRemoval() { + if !ctx.isPresign { + return + } + + // The credentials have expired for this request. The current signing + // is invalid, and needs to be request because the request will fail. + ctx.removePresign() + + // Update the request's query string to ensure the values stays in + // sync in the case retrieving the new credentials fails. + ctx.Request.URL.RawQuery = ctx.Query.Encode() +} + +func (ctx *signingCtx) assignAmzQueryValues() { + if ctx.isPresign { + ctx.Query.Set("X-Amz-Algorithm", authHeaderPrefix) + if ctx.credValues.SessionToken != "" { + ctx.Query.Set("X-Amz-Security-Token", ctx.credValues.SessionToken) + } else { + ctx.Query.Del("X-Amz-Security-Token") + } + + return + } + + if ctx.credValues.SessionToken != "" { + ctx.Request.Header.Set("X-Amz-Security-Token", ctx.credValues.SessionToken) + } +} + +// SignRequestHandler is a named request handler the SDK will use to sign +// service client request with using the V4 signature. +var SignRequestHandler = request.NamedHandler{ + Name: "v4.SignRequestHandler", Fn: SignSDKRequest, +} + +// SignSDKRequest signs an AWS request with the V4 signature. This +// request handler should only be used with the SDK's built in service client's +// API operation requests. +// +// This function should not be used on its on its own, but in conjunction with +// an AWS service client's API operation call. To sign a standalone request +// not created by a service client's API operation method use the "Sign" or +// "Presign" functions of the "Signer" type. +// +// If the credentials of the request's config are set to +// credentials.AnonymousCredentials the request will not be signed. +func SignSDKRequest(req *request.Request) { + SignSDKRequestWithCurrentTime(req, time.Now) +} + +// BuildNamedHandler will build a generic handler for signing. +func BuildNamedHandler(name string, opts ...func(*Signer)) request.NamedHandler { + return request.NamedHandler{ + Name: name, + Fn: func(req *request.Request) { + SignSDKRequestWithCurrentTime(req, time.Now, opts...) + }, + } +} + +// SignSDKRequestWithCurrentTime will sign the SDK's request using the time +// function passed in. Behaves the same as SignSDKRequest with the exception +// the request is signed with the value returned by the current time function. +func SignSDKRequestWithCurrentTime(req *request.Request, curTimeFn func() time.Time, opts ...func(*Signer)) { + // If the request does not need to be signed ignore the signing of the + // request if the AnonymousCredentials object is used. + if req.Config.Credentials == credentials.AnonymousCredentials { + return + } + + region := req.ClientInfo.SigningRegion + if region == "" { + region = aws.StringValue(req.Config.Region) + } + + name := req.ClientInfo.SigningName + if name == "" { + name = req.ClientInfo.ServiceName + } + + v4 := NewSigner(req.Config.Credentials, func(v4 *Signer) { + v4.Debug = req.Config.LogLevel.Value() + v4.Logger = req.Config.Logger + v4.DisableHeaderHoisting = req.NotHoist + v4.currentTimeFn = curTimeFn + if name == "s3" { + // S3 service should not have any escaping applied + v4.DisableURIPathEscaping = true + } + // Prevents setting the HTTPRequest's Body. Since the Body could be + // wrapped in a custom io.Closer that we do not want to be stompped + // on top of by the signer. + v4.DisableRequestBodyOverwrite = true + }) + + for _, opt := range opts { + opt(v4) + } + + curTime := curTimeFn() + signedHeaders, err := v4.signWithBody(req.HTTPRequest, req.GetBody(), + name, region, req.ExpireTime, req.ExpireTime > 0, curTime, + ) + if err != nil { + req.Error = err + req.SignedHeaderVals = nil + return + } + + req.SignedHeaderVals = signedHeaders + req.LastSignedAt = curTime +} + +const logSignInfoMsg = `DEBUG: Request Signature: +---[ CANONICAL STRING ]----------------------------- +%s +---[ STRING TO SIGN ]-------------------------------- +%s%s +-----------------------------------------------------` +const logSignedURLMsg = ` +---[ SIGNED URL ]------------------------------------ +%s` + +func (v4 *Signer) logSigningInfo(ctx *signingCtx) { + signedURLMsg := "" + if ctx.isPresign { + signedURLMsg = fmt.Sprintf(logSignedURLMsg, ctx.Request.URL.String()) + } + msg := fmt.Sprintf(logSignInfoMsg, ctx.canonicalString, ctx.stringToSign, signedURLMsg) + v4.Logger.Log(msg) +} + +func (ctx *signingCtx) build(disableHeaderHoisting bool) error { + ctx.buildTime() // no depends + ctx.buildCredentialString() // no depends + + if err := ctx.buildBodyDigest(); err != nil { + return err + } + + unsignedHeaders := ctx.Request.Header + if ctx.isPresign { + if !disableHeaderHoisting { + urlValues := url.Values{} + urlValues, unsignedHeaders = buildQuery(allowedQueryHoisting, unsignedHeaders) // no depends + for k := range urlValues { + ctx.Query[k] = urlValues[k] + } + } + } + + ctx.buildCanonicalHeaders(ignoredHeaders, unsignedHeaders) + ctx.buildCanonicalString() // depends on canon headers / signed headers + ctx.buildStringToSign() // depends on canon string + ctx.buildSignature() // depends on string to sign + + if ctx.isPresign { + ctx.Request.URL.RawQuery += "&X-Amz-Signature=" + ctx.signature + } else { + parts := []string{ + authHeaderPrefix + " Credential=" + ctx.credValues.AccessKeyID + "/" + ctx.credentialString, + "SignedHeaders=" + ctx.signedHeaders, + "Signature=" + ctx.signature, + } + ctx.Request.Header.Set("Authorization", strings.Join(parts, ", ")) + } + + return nil +} + +func (ctx *signingCtx) buildTime() { + ctx.formattedTime = ctx.Time.UTC().Format(timeFormat) + ctx.formattedShortTime = ctx.Time.UTC().Format(shortTimeFormat) + + if ctx.isPresign { + duration := int64(ctx.ExpireTime / time.Second) + ctx.Query.Set("X-Amz-Date", ctx.formattedTime) + ctx.Query.Set("X-Amz-Expires", strconv.FormatInt(duration, 10)) + } else { + ctx.Request.Header.Set("X-Amz-Date", ctx.formattedTime) + } +} + +func (ctx *signingCtx) buildCredentialString() { + ctx.credentialString = strings.Join([]string{ + ctx.formattedShortTime, + ctx.Region, + ctx.ServiceName, + "aws4_request", + }, "/") + + if ctx.isPresign { + ctx.Query.Set("X-Amz-Credential", ctx.credValues.AccessKeyID+"/"+ctx.credentialString) + } +} + +func buildQuery(r rule, header http.Header) (url.Values, http.Header) { + query := url.Values{} + unsignedHeaders := http.Header{} + for k, h := range header { + if r.IsValid(k) { + query[k] = h + } else { + unsignedHeaders[k] = h + } + } + + return query, unsignedHeaders +} +func (ctx *signingCtx) buildCanonicalHeaders(r rule, header http.Header) { + var headers []string + headers = append(headers, "host") + for k, v := range header { + canonicalKey := http.CanonicalHeaderKey(k) + if !r.IsValid(canonicalKey) { + continue // ignored header + } + if ctx.SignedHeaderVals == nil { + ctx.SignedHeaderVals = make(http.Header) + } + + lowerCaseKey := strings.ToLower(k) + if _, ok := ctx.SignedHeaderVals[lowerCaseKey]; ok { + // include additional values + ctx.SignedHeaderVals[lowerCaseKey] = append(ctx.SignedHeaderVals[lowerCaseKey], v...) + continue + } + + headers = append(headers, lowerCaseKey) + ctx.SignedHeaderVals[lowerCaseKey] = v + } + sort.Strings(headers) + + ctx.signedHeaders = strings.Join(headers, ";") + + if ctx.isPresign { + ctx.Query.Set("X-Amz-SignedHeaders", ctx.signedHeaders) + } + + headerValues := make([]string, len(headers)) + for i, k := range headers { + if k == "host" { + if ctx.Request.Host != "" { + headerValues[i] = "host:" + ctx.Request.Host + } else { + headerValues[i] = "host:" + ctx.Request.URL.Host + } + } else { + headerValues[i] = k + ":" + + strings.Join(ctx.SignedHeaderVals[k], ",") + } + } + stripExcessSpaces(headerValues) + ctx.canonicalHeaders = strings.Join(headerValues, "\n") +} + +func (ctx *signingCtx) buildCanonicalString() { + ctx.Request.URL.RawQuery = strings.Replace(ctx.Query.Encode(), "+", "%20", -1) + + uri := getURIPath(ctx.Request.URL) + + if !ctx.DisableURIPathEscaping { + uri = rest.EscapePath(uri, false) + } + + ctx.canonicalString = strings.Join([]string{ + ctx.Request.Method, + uri, + ctx.Request.URL.RawQuery, + ctx.canonicalHeaders + "\n", + ctx.signedHeaders, + ctx.bodyDigest, + }, "\n") +} + +func (ctx *signingCtx) buildStringToSign() { + ctx.stringToSign = strings.Join([]string{ + authHeaderPrefix, + ctx.formattedTime, + ctx.credentialString, + hex.EncodeToString(makeSha256([]byte(ctx.canonicalString))), + }, "\n") +} + +func (ctx *signingCtx) buildSignature() { + secret := ctx.credValues.SecretAccessKey + date := makeHmac([]byte("AWS4"+secret), []byte(ctx.formattedShortTime)) + region := makeHmac(date, []byte(ctx.Region)) + service := makeHmac(region, []byte(ctx.ServiceName)) + credentials := makeHmac(service, []byte("aws4_request")) + signature := makeHmac(credentials, []byte(ctx.stringToSign)) + ctx.signature = hex.EncodeToString(signature) +} + +func (ctx *signingCtx) buildBodyDigest() error { + hash := ctx.Request.Header.Get("X-Amz-Content-Sha256") + if hash == "" { + includeSHA256Header := ctx.unsignedPayload || + ctx.ServiceName == "s3" || + ctx.ServiceName == "glacier" + + s3Presign := ctx.isPresign && ctx.ServiceName == "s3" + + if ctx.unsignedPayload || s3Presign { + hash = "UNSIGNED-PAYLOAD" + includeSHA256Header = !s3Presign + } else if ctx.Body == nil { + hash = emptyStringSHA256 + } else { + if !aws.IsReaderSeekable(ctx.Body) { + return fmt.Errorf("cannot use unseekable request body %T, for signed request with body", ctx.Body) + } + hashBytes, err := makeSha256Reader(ctx.Body) + if err != nil { + return err + } + hash = hex.EncodeToString(hashBytes) + } + + if includeSHA256Header { + ctx.Request.Header.Set("X-Amz-Content-Sha256", hash) + } + } + ctx.bodyDigest = hash + + return nil +} + +// isRequestSigned returns if the request is currently signed or presigned +func (ctx *signingCtx) isRequestSigned() bool { + if ctx.isPresign && ctx.Query.Get("X-Amz-Signature") != "" { + return true + } + if ctx.Request.Header.Get("Authorization") != "" { + return true + } + + return false +} + +// unsign removes signing flags for both signed and presigned requests. +func (ctx *signingCtx) removePresign() { + ctx.Query.Del("X-Amz-Algorithm") + ctx.Query.Del("X-Amz-Signature") + ctx.Query.Del("X-Amz-Security-Token") + ctx.Query.Del("X-Amz-Date") + ctx.Query.Del("X-Amz-Expires") + ctx.Query.Del("X-Amz-Credential") + ctx.Query.Del("X-Amz-SignedHeaders") +} + +func makeHmac(key []byte, data []byte) []byte { + hash := hmac.New(sha256.New, key) + hash.Write(data) + return hash.Sum(nil) +} + +func makeSha256(data []byte) []byte { + hash := sha256.New() + hash.Write(data) + return hash.Sum(nil) +} + +func makeSha256Reader(reader io.ReadSeeker) (hashBytes []byte, err error) { + hash := sha256.New() + start, err := reader.Seek(0, sdkio.SeekCurrent) + if err != nil { + return nil, err + } + defer func() { + // ensure error is return if unable to seek back to start of payload. + _, err = reader.Seek(start, sdkio.SeekStart) + }() + + // Use CopyN to avoid allocating the 32KB buffer in io.Copy for bodies + // smaller than 32KB. Fall back to io.Copy if we fail to determine the size. + size, err := aws.SeekerLen(reader) + if err != nil { + io.Copy(hash, reader) + } else { + io.CopyN(hash, reader, size) + } + + return hash.Sum(nil), nil +} + +const doubleSpace = " " + +// stripExcessSpaces will rewrite the passed in slice's string values to not +// contain multiple side-by-side spaces. +func stripExcessSpaces(vals []string) { + var j, k, l, m, spaces int + for i, str := range vals { + // Trim trailing spaces + for j = len(str) - 1; j >= 0 && str[j] == ' '; j-- { + } + + // Trim leading spaces + for k = 0; k < j && str[k] == ' '; k++ { + } + str = str[k : j+1] + + // Strip multiple spaces. + j = strings.Index(str, doubleSpace) + if j < 0 { + vals[i] = str + continue + } + + buf := []byte(str) + for k, m, l = j, j, len(buf); k < l; k++ { + if buf[k] == ' ' { + if spaces == 0 { + // First space. + buf[m] = buf[k] + m++ + } + spaces++ + } else { + // End of multiple spaces. + spaces = 0 + buf[m] = buf[k] + m++ + } + } + + vals[i] = string(buf[:m]) + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/types.go b/vendor/github.com/aws/aws-sdk-go/aws/types.go new file mode 100644 index 0000000..4550915 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/types.go @@ -0,0 +1,207 @@ +package aws + +import ( + "io" + "sync" + + "github.com/aws/aws-sdk-go/internal/sdkio" +) + +// ReadSeekCloser wraps a io.Reader returning a ReaderSeekerCloser. Allows the +// SDK to accept an io.Reader that is not also an io.Seeker for unsigned +// streaming payload API operations. +// +// A ReadSeekCloser wrapping an nonseekable io.Reader used in an API +// operation's input will prevent that operation being retried in the case of +// network errors, and cause operation requests to fail if the operation +// requires payload signing. +// +// Note: If using With S3 PutObject to stream an object upload The SDK's S3 +// Upload manager (s3manager.Uploader) provides support for streaming with the +// ability to retry network errors. +func ReadSeekCloser(r io.Reader) ReaderSeekerCloser { + return ReaderSeekerCloser{r} +} + +// ReaderSeekerCloser represents a reader that can also delegate io.Seeker and +// io.Closer interfaces to the underlying object if they are available. +type ReaderSeekerCloser struct { + r io.Reader +} + +// IsReaderSeekable returns if the underlying reader type can be seeked. A +// io.Reader might not actually be seekable if it is the ReaderSeekerCloser +// type. +func IsReaderSeekable(r io.Reader) bool { + switch v := r.(type) { + case ReaderSeekerCloser: + return v.IsSeeker() + case *ReaderSeekerCloser: + return v.IsSeeker() + case io.ReadSeeker: + return true + default: + return false + } +} + +// Read reads from the reader up to size of p. The number of bytes read, and +// error if it occurred will be returned. +// +// If the reader is not an io.Reader zero bytes read, and nil error will be +// returned. +// +// Performs the same functionality as io.Reader Read +func (r ReaderSeekerCloser) Read(p []byte) (int, error) { + switch t := r.r.(type) { + case io.Reader: + return t.Read(p) + } + return 0, nil +} + +// Seek sets the offset for the next Read to offset, interpreted according to +// whence: 0 means relative to the origin of the file, 1 means relative to the +// current offset, and 2 means relative to the end. Seek returns the new offset +// and an error, if any. +// +// If the ReaderSeekerCloser is not an io.Seeker nothing will be done. +func (r ReaderSeekerCloser) Seek(offset int64, whence int) (int64, error) { + switch t := r.r.(type) { + case io.Seeker: + return t.Seek(offset, whence) + } + return int64(0), nil +} + +// IsSeeker returns if the underlying reader is also a seeker. +func (r ReaderSeekerCloser) IsSeeker() bool { + _, ok := r.r.(io.Seeker) + return ok +} + +// HasLen returns the length of the underlying reader if the value implements +// the Len() int method. +func (r ReaderSeekerCloser) HasLen() (int, bool) { + type lenner interface { + Len() int + } + + if lr, ok := r.r.(lenner); ok { + return lr.Len(), true + } + + return 0, false +} + +// GetLen returns the length of the bytes remaining in the underlying reader. +// Checks first for Len(), then io.Seeker to determine the size of the +// underlying reader. +// +// Will return -1 if the length cannot be determined. +func (r ReaderSeekerCloser) GetLen() (int64, error) { + if l, ok := r.HasLen(); ok { + return int64(l), nil + } + + if s, ok := r.r.(io.Seeker); ok { + return seekerLen(s) + } + + return -1, nil +} + +// SeekerLen attempts to get the number of bytes remaining at the seeker's +// current position. Returns the number of bytes remaining or error. +func SeekerLen(s io.Seeker) (int64, error) { + // Determine if the seeker is actually seekable. ReaderSeekerCloser + // hides the fact that a io.Readers might not actually be seekable. + switch v := s.(type) { + case ReaderSeekerCloser: + return v.GetLen() + case *ReaderSeekerCloser: + return v.GetLen() + } + + return seekerLen(s) +} + +func seekerLen(s io.Seeker) (int64, error) { + curOffset, err := s.Seek(0, sdkio.SeekCurrent) + if err != nil { + return 0, err + } + + endOffset, err := s.Seek(0, sdkio.SeekEnd) + if err != nil { + return 0, err + } + + _, err = s.Seek(curOffset, sdkio.SeekStart) + if err != nil { + return 0, err + } + + return endOffset - curOffset, nil +} + +// Close closes the ReaderSeekerCloser. +// +// If the ReaderSeekerCloser is not an io.Closer nothing will be done. +func (r ReaderSeekerCloser) Close() error { + switch t := r.r.(type) { + case io.Closer: + return t.Close() + } + return nil +} + +// A WriteAtBuffer provides a in memory buffer supporting the io.WriterAt interface +// Can be used with the s3manager.Downloader to download content to a buffer +// in memory. Safe to use concurrently. +type WriteAtBuffer struct { + buf []byte + m sync.Mutex + + // GrowthCoeff defines the growth rate of the internal buffer. By + // default, the growth rate is 1, where expanding the internal + // buffer will allocate only enough capacity to fit the new expected + // length. + GrowthCoeff float64 +} + +// NewWriteAtBuffer creates a WriteAtBuffer with an internal buffer +// provided by buf. +func NewWriteAtBuffer(buf []byte) *WriteAtBuffer { + return &WriteAtBuffer{buf: buf} +} + +// WriteAt writes a slice of bytes to a buffer starting at the position provided +// The number of bytes written will be returned, or error. Can overwrite previous +// written slices if the write ats overlap. +func (b *WriteAtBuffer) WriteAt(p []byte, pos int64) (n int, err error) { + pLen := len(p) + expLen := pos + int64(pLen) + b.m.Lock() + defer b.m.Unlock() + if int64(len(b.buf)) < expLen { + if int64(cap(b.buf)) < expLen { + if b.GrowthCoeff < 1 { + b.GrowthCoeff = 1 + } + newBuf := make([]byte, expLen, int64(b.GrowthCoeff*float64(expLen))) + copy(newBuf, b.buf) + b.buf = newBuf + } + b.buf = b.buf[:expLen] + } + copy(b.buf[pos:], p) + return pLen, nil +} + +// Bytes returns a slice of bytes written to the buffer. +func (b *WriteAtBuffer) Bytes() []byte { + b.m.Lock() + defer b.m.Unlock() + return b.buf +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/url.go b/vendor/github.com/aws/aws-sdk-go/aws/url.go new file mode 100644 index 0000000..6192b24 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/url.go @@ -0,0 +1,12 @@ +// +build go1.8 + +package aws + +import "net/url" + +// URLHostname will extract the Hostname without port from the URL value. +// +// Wrapper of net/url#URL.Hostname for backwards Go version compatibility. +func URLHostname(url *url.URL) string { + return url.Hostname() +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/url_1_7.go b/vendor/github.com/aws/aws-sdk-go/aws/url_1_7.go new file mode 100644 index 0000000..0210d27 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/url_1_7.go @@ -0,0 +1,29 @@ +// +build !go1.8 + +package aws + +import ( + "net/url" + "strings" +) + +// URLHostname will extract the Hostname without port from the URL value. +// +// Copy of Go 1.8's net/url#URL.Hostname functionality. +func URLHostname(url *url.URL) string { + return stripPort(url.Host) + +} + +// stripPort is copy of Go 1.8 url#URL.Hostname functionality. +// https://golang.org/src/net/url/url.go +func stripPort(hostport string) string { + colon := strings.IndexByte(hostport, ':') + if colon == -1 { + return hostport + } + if i := strings.IndexByte(hostport, ']'); i != -1 { + return strings.TrimPrefix(hostport[:i], "[") + } + return hostport[:colon] +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/version.go b/vendor/github.com/aws/aws-sdk-go/aws/version.go new file mode 100644 index 0000000..1489836 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/version.go @@ -0,0 +1,8 @@ +// Package aws provides core functionality for making requests to AWS services. +package aws + +// SDKName is the name of this AWS SDK +const SDKName = "aws-sdk-go" + +// SDKVersion is the version of this SDK +const SDKVersion = "1.25.37" diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/ast.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/ast.go new file mode 100644 index 0000000..e83a998 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/ast.go @@ -0,0 +1,120 @@ +package ini + +// ASTKind represents different states in the parse table +// and the type of AST that is being constructed +type ASTKind int + +// ASTKind* is used in the parse table to transition between +// the different states +const ( + ASTKindNone = ASTKind(iota) + ASTKindStart + ASTKindExpr + ASTKindEqualExpr + ASTKindStatement + ASTKindSkipStatement + ASTKindExprStatement + ASTKindSectionStatement + ASTKindNestedSectionStatement + ASTKindCompletedNestedSectionStatement + ASTKindCommentStatement + ASTKindCompletedSectionStatement +) + +func (k ASTKind) String() string { + switch k { + case ASTKindNone: + return "none" + case ASTKindStart: + return "start" + case ASTKindExpr: + return "expr" + case ASTKindStatement: + return "stmt" + case ASTKindSectionStatement: + return "section_stmt" + case ASTKindExprStatement: + return "expr_stmt" + case ASTKindCommentStatement: + return "comment" + case ASTKindNestedSectionStatement: + return "nested_section_stmt" + case ASTKindCompletedSectionStatement: + return "completed_stmt" + case ASTKindSkipStatement: + return "skip" + default: + return "" + } +} + +// AST interface allows us to determine what kind of node we +// are on and casting may not need to be necessary. +// +// The root is always the first node in Children +type AST struct { + Kind ASTKind + Root Token + RootToken bool + Children []AST +} + +func newAST(kind ASTKind, root AST, children ...AST) AST { + return AST{ + Kind: kind, + Children: append([]AST{root}, children...), + } +} + +func newASTWithRootToken(kind ASTKind, root Token, children ...AST) AST { + return AST{ + Kind: kind, + Root: root, + RootToken: true, + Children: children, + } +} + +// AppendChild will append to the list of children an AST has. +func (a *AST) AppendChild(child AST) { + a.Children = append(a.Children, child) +} + +// GetRoot will return the root AST which can be the first entry +// in the children list or a token. +func (a *AST) GetRoot() AST { + if a.RootToken { + return *a + } + + if len(a.Children) == 0 { + return AST{} + } + + return a.Children[0] +} + +// GetChildren will return the current AST's list of children +func (a *AST) GetChildren() []AST { + if len(a.Children) == 0 { + return []AST{} + } + + if a.RootToken { + return a.Children + } + + return a.Children[1:] +} + +// SetChildren will set and override all children of the AST. +func (a *AST) SetChildren(children []AST) { + if a.RootToken { + a.Children = children + } else { + a.Children = append(a.Children[:1], children...) + } +} + +// Start is used to indicate the starting state of the parse table. +var Start = newAST(ASTKindStart, AST{}) diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/comma_token.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/comma_token.go new file mode 100644 index 0000000..0895d53 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/comma_token.go @@ -0,0 +1,11 @@ +package ini + +var commaRunes = []rune(",") + +func isComma(b rune) bool { + return b == ',' +} + +func newCommaToken() Token { + return newToken(TokenComma, commaRunes, NoneType) +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/comment_token.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/comment_token.go new file mode 100644 index 0000000..0b76999 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/comment_token.go @@ -0,0 +1,35 @@ +package ini + +// isComment will return whether or not the next byte(s) is a +// comment. +func isComment(b []rune) bool { + if len(b) == 0 { + return false + } + + switch b[0] { + case ';': + return true + case '#': + return true + } + + return false +} + +// newCommentToken will create a comment token and +// return how many bytes were read. +func newCommentToken(b []rune) (Token, int, error) { + i := 0 + for ; i < len(b); i++ { + if b[i] == '\n' { + break + } + + if len(b)-i > 2 && b[i] == '\r' && b[i+1] == '\n' { + break + } + } + + return newToken(TokenComment, b[:i], NoneType), i, nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/doc.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/doc.go new file mode 100644 index 0000000..25ce0fe --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/doc.go @@ -0,0 +1,29 @@ +// Package ini is an LL(1) parser for configuration files. +// +// Example: +// sections, err := ini.OpenFile("/path/to/file") +// if err != nil { +// panic(err) +// } +// +// profile := "foo" +// section, ok := sections.GetSection(profile) +// if !ok { +// fmt.Printf("section %q could not be found", profile) +// } +// +// Below is the BNF that describes this parser +// Grammar: +// stmt -> value stmt' +// stmt' -> epsilon | op stmt +// value -> number | string | boolean | quoted_string +// +// section -> [ section' +// section' -> value section_close +// section_close -> ] +// +// SkipState will skip (NL WS)+ +// +// comment -> # comment' | ; comment' +// comment' -> epsilon | value +package ini diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/empty_token.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/empty_token.go new file mode 100644 index 0000000..04345a5 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/empty_token.go @@ -0,0 +1,4 @@ +package ini + +// emptyToken is used to satisfy the Token interface +var emptyToken = newToken(TokenNone, []rune{}, NoneType) diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/expression.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/expression.go new file mode 100644 index 0000000..91ba2a5 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/expression.go @@ -0,0 +1,24 @@ +package ini + +// newExpression will return an expression AST. +// Expr represents an expression +// +// grammar: +// expr -> string | number +func newExpression(tok Token) AST { + return newASTWithRootToken(ASTKindExpr, tok) +} + +func newEqualExpr(left AST, tok Token) AST { + return newASTWithRootToken(ASTKindEqualExpr, tok, left) +} + +// EqualExprKey will return a LHS value in the equal expr +func EqualExprKey(ast AST) string { + children := ast.GetChildren() + if len(children) == 0 || ast.Kind != ASTKindEqualExpr { + return "" + } + + return string(children[0].Root.Raw()) +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/fuzz.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/fuzz.go new file mode 100644 index 0000000..8d462f7 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/fuzz.go @@ -0,0 +1,17 @@ +// +build gofuzz + +package ini + +import ( + "bytes" +) + +func Fuzz(data []byte) int { + b := bytes.NewReader(data) + + if _, err := Parse(b); err != nil { + return 0 + } + + return 1 +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/ini.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/ini.go new file mode 100644 index 0000000..3b0ca7a --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/ini.go @@ -0,0 +1,51 @@ +package ini + +import ( + "io" + "os" + + "github.com/aws/aws-sdk-go/aws/awserr" +) + +// OpenFile takes a path to a given file, and will open and parse +// that file. +func OpenFile(path string) (Sections, error) { + f, err := os.Open(path) + if err != nil { + return Sections{}, awserr.New(ErrCodeUnableToReadFile, "unable to open file", err) + } + defer f.Close() + + return Parse(f) +} + +// Parse will parse the given file using the shared config +// visitor. +func Parse(f io.Reader) (Sections, error) { + tree, err := ParseAST(f) + if err != nil { + return Sections{}, err + } + + v := NewDefaultVisitor() + if err = Walk(tree, v); err != nil { + return Sections{}, err + } + + return v.Sections, nil +} + +// ParseBytes will parse the given bytes and return the parsed sections. +func ParseBytes(b []byte) (Sections, error) { + tree, err := ParseASTBytes(b) + if err != nil { + return Sections{}, err + } + + v := NewDefaultVisitor() + if err = Walk(tree, v); err != nil { + return Sections{}, err + } + + return v.Sections, nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/ini_lexer.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/ini_lexer.go new file mode 100644 index 0000000..582c024 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/ini_lexer.go @@ -0,0 +1,165 @@ +package ini + +import ( + "bytes" + "io" + "io/ioutil" + + "github.com/aws/aws-sdk-go/aws/awserr" +) + +const ( + // ErrCodeUnableToReadFile is used when a file is failed to be + // opened or read from. + ErrCodeUnableToReadFile = "FailedRead" +) + +// TokenType represents the various different tokens types +type TokenType int + +func (t TokenType) String() string { + switch t { + case TokenNone: + return "none" + case TokenLit: + return "literal" + case TokenSep: + return "sep" + case TokenOp: + return "op" + case TokenWS: + return "ws" + case TokenNL: + return "newline" + case TokenComment: + return "comment" + case TokenComma: + return "comma" + default: + return "" + } +} + +// TokenType enums +const ( + TokenNone = TokenType(iota) + TokenLit + TokenSep + TokenComma + TokenOp + TokenWS + TokenNL + TokenComment +) + +type iniLexer struct{} + +// Tokenize will return a list of tokens during lexical analysis of the +// io.Reader. +func (l *iniLexer) Tokenize(r io.Reader) ([]Token, error) { + b, err := ioutil.ReadAll(r) + if err != nil { + return nil, awserr.New(ErrCodeUnableToReadFile, "unable to read file", err) + } + + return l.tokenize(b) +} + +func (l *iniLexer) tokenize(b []byte) ([]Token, error) { + runes := bytes.Runes(b) + var err error + n := 0 + tokenAmount := countTokens(runes) + tokens := make([]Token, tokenAmount) + count := 0 + + for len(runes) > 0 && count < tokenAmount { + switch { + case isWhitespace(runes[0]): + tokens[count], n, err = newWSToken(runes) + case isComma(runes[0]): + tokens[count], n = newCommaToken(), 1 + case isComment(runes): + tokens[count], n, err = newCommentToken(runes) + case isNewline(runes): + tokens[count], n, err = newNewlineToken(runes) + case isSep(runes): + tokens[count], n, err = newSepToken(runes) + case isOp(runes): + tokens[count], n, err = newOpToken(runes) + default: + tokens[count], n, err = newLitToken(runes) + } + + if err != nil { + return nil, err + } + + count++ + + runes = runes[n:] + } + + return tokens[:count], nil +} + +func countTokens(runes []rune) int { + count, n := 0, 0 + var err error + + for len(runes) > 0 { + switch { + case isWhitespace(runes[0]): + _, n, err = newWSToken(runes) + case isComma(runes[0]): + _, n = newCommaToken(), 1 + case isComment(runes): + _, n, err = newCommentToken(runes) + case isNewline(runes): + _, n, err = newNewlineToken(runes) + case isSep(runes): + _, n, err = newSepToken(runes) + case isOp(runes): + _, n, err = newOpToken(runes) + default: + _, n, err = newLitToken(runes) + } + + if err != nil { + return 0 + } + + count++ + runes = runes[n:] + } + + return count + 1 +} + +// Token indicates a metadata about a given value. +type Token struct { + t TokenType + ValueType ValueType + base int + raw []rune +} + +var emptyValue = Value{} + +func newToken(t TokenType, raw []rune, v ValueType) Token { + return Token{ + t: t, + raw: raw, + ValueType: v, + } +} + +// Raw return the raw runes that were consumed +func (tok Token) Raw() []rune { + return tok.raw +} + +// Type returns the token type +func (tok Token) Type() TokenType { + return tok.t +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/ini_parser.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/ini_parser.go new file mode 100644 index 0000000..cf9fad8 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/ini_parser.go @@ -0,0 +1,356 @@ +package ini + +import ( + "fmt" + "io" +) + +// State enums for the parse table +const ( + InvalidState = iota + // stmt -> value stmt' + StatementState + // stmt' -> MarkComplete | op stmt + StatementPrimeState + // value -> number | string | boolean | quoted_string + ValueState + // section -> [ section' + OpenScopeState + // section' -> value section_close + SectionState + // section_close -> ] + CloseScopeState + // SkipState will skip (NL WS)+ + SkipState + // SkipTokenState will skip any token and push the previous + // state onto the stack. + SkipTokenState + // comment -> # comment' | ; comment' + // comment' -> MarkComplete | value + CommentState + // MarkComplete state will complete statements and move that + // to the completed AST list + MarkCompleteState + // TerminalState signifies that the tokens have been fully parsed + TerminalState +) + +// parseTable is a state machine to dictate the grammar above. +var parseTable = map[ASTKind]map[TokenType]int{ + ASTKindStart: map[TokenType]int{ + TokenLit: StatementState, + TokenSep: OpenScopeState, + TokenWS: SkipTokenState, + TokenNL: SkipTokenState, + TokenComment: CommentState, + TokenNone: TerminalState, + }, + ASTKindCommentStatement: map[TokenType]int{ + TokenLit: StatementState, + TokenSep: OpenScopeState, + TokenWS: SkipTokenState, + TokenNL: SkipTokenState, + TokenComment: CommentState, + TokenNone: MarkCompleteState, + }, + ASTKindExpr: map[TokenType]int{ + TokenOp: StatementPrimeState, + TokenLit: ValueState, + TokenSep: OpenScopeState, + TokenWS: ValueState, + TokenNL: SkipState, + TokenComment: CommentState, + TokenNone: MarkCompleteState, + }, + ASTKindEqualExpr: map[TokenType]int{ + TokenLit: ValueState, + TokenWS: SkipTokenState, + TokenNL: SkipState, + }, + ASTKindStatement: map[TokenType]int{ + TokenLit: SectionState, + TokenSep: CloseScopeState, + TokenWS: SkipTokenState, + TokenNL: SkipTokenState, + TokenComment: CommentState, + TokenNone: MarkCompleteState, + }, + ASTKindExprStatement: map[TokenType]int{ + TokenLit: ValueState, + TokenSep: OpenScopeState, + TokenOp: ValueState, + TokenWS: ValueState, + TokenNL: MarkCompleteState, + TokenComment: CommentState, + TokenNone: TerminalState, + TokenComma: SkipState, + }, + ASTKindSectionStatement: map[TokenType]int{ + TokenLit: SectionState, + TokenOp: SectionState, + TokenSep: CloseScopeState, + TokenWS: SectionState, + TokenNL: SkipTokenState, + }, + ASTKindCompletedSectionStatement: map[TokenType]int{ + TokenWS: SkipTokenState, + TokenNL: SkipTokenState, + TokenLit: StatementState, + TokenSep: OpenScopeState, + TokenComment: CommentState, + TokenNone: MarkCompleteState, + }, + ASTKindSkipStatement: map[TokenType]int{ + TokenLit: StatementState, + TokenSep: OpenScopeState, + TokenWS: SkipTokenState, + TokenNL: SkipTokenState, + TokenComment: CommentState, + TokenNone: TerminalState, + }, +} + +// ParseAST will parse input from an io.Reader using +// an LL(1) parser. +func ParseAST(r io.Reader) ([]AST, error) { + lexer := iniLexer{} + tokens, err := lexer.Tokenize(r) + if err != nil { + return []AST{}, err + } + + return parse(tokens) +} + +// ParseASTBytes will parse input from a byte slice using +// an LL(1) parser. +func ParseASTBytes(b []byte) ([]AST, error) { + lexer := iniLexer{} + tokens, err := lexer.tokenize(b) + if err != nil { + return []AST{}, err + } + + return parse(tokens) +} + +func parse(tokens []Token) ([]AST, error) { + start := Start + stack := newParseStack(3, len(tokens)) + + stack.Push(start) + s := newSkipper() + +loop: + for stack.Len() > 0 { + k := stack.Pop() + + var tok Token + if len(tokens) == 0 { + // this occurs when all the tokens have been processed + // but reduction of what's left on the stack needs to + // occur. + tok = emptyToken + } else { + tok = tokens[0] + } + + step := parseTable[k.Kind][tok.Type()] + if s.ShouldSkip(tok) { + // being in a skip state with no tokens will break out of + // the parse loop since there is nothing left to process. + if len(tokens) == 0 { + break loop + } + // if should skip is true, we skip the tokens until should skip is set to false. + step = SkipTokenState + } + + switch step { + case TerminalState: + // Finished parsing. Push what should be the last + // statement to the stack. If there is anything left + // on the stack, an error in parsing has occurred. + if k.Kind != ASTKindStart { + stack.MarkComplete(k) + } + break loop + case SkipTokenState: + // When skipping a token, the previous state was popped off the stack. + // To maintain the correct state, the previous state will be pushed + // onto the stack. + stack.Push(k) + case StatementState: + if k.Kind != ASTKindStart { + stack.MarkComplete(k) + } + expr := newExpression(tok) + stack.Push(expr) + case StatementPrimeState: + if tok.Type() != TokenOp { + stack.MarkComplete(k) + continue + } + + if k.Kind != ASTKindExpr { + return nil, NewParseError( + fmt.Sprintf("invalid expression: expected Expr type, but found %T type", k), + ) + } + + k = trimSpaces(k) + expr := newEqualExpr(k, tok) + stack.Push(expr) + case ValueState: + // ValueState requires the previous state to either be an equal expression + // or an expression statement. + // + // This grammar occurs when the RHS is a number, word, or quoted string. + // equal_expr -> lit op equal_expr' + // equal_expr' -> number | string | quoted_string + // quoted_string -> " quoted_string' + // quoted_string' -> string quoted_string_end + // quoted_string_end -> " + // + // otherwise + // expr_stmt -> equal_expr (expr_stmt')* + // expr_stmt' -> ws S | op S | MarkComplete + // S -> equal_expr' expr_stmt' + switch k.Kind { + case ASTKindEqualExpr: + // assigning a value to some key + k.AppendChild(newExpression(tok)) + stack.Push(newExprStatement(k)) + case ASTKindExpr: + k.Root.raw = append(k.Root.raw, tok.Raw()...) + stack.Push(k) + case ASTKindExprStatement: + root := k.GetRoot() + children := root.GetChildren() + if len(children) == 0 { + return nil, NewParseError( + fmt.Sprintf("invalid expression: AST contains no children %s", k.Kind), + ) + } + + rhs := children[len(children)-1] + + if rhs.Root.ValueType != QuotedStringType { + rhs.Root.ValueType = StringType + rhs.Root.raw = append(rhs.Root.raw, tok.Raw()...) + + } + + children[len(children)-1] = rhs + k.SetChildren(children) + + stack.Push(k) + } + case OpenScopeState: + if !runeCompare(tok.Raw(), openBrace) { + return nil, NewParseError("expected '['") + } + // If OpenScopeState is not at the start, we must mark the previous ast as complete + // + // for example: if previous ast was a skip statement; + // we should mark it as complete before we create a new statement + if k.Kind != ASTKindStart { + stack.MarkComplete(k) + } + + stmt := newStatement() + stack.Push(stmt) + case CloseScopeState: + if !runeCompare(tok.Raw(), closeBrace) { + return nil, NewParseError("expected ']'") + } + + k = trimSpaces(k) + stack.Push(newCompletedSectionStatement(k)) + case SectionState: + var stmt AST + + switch k.Kind { + case ASTKindStatement: + // If there are multiple literals inside of a scope declaration, + // then the current token's raw value will be appended to the Name. + // + // This handles cases like [ profile default ] + // + // k will represent a SectionStatement with the children representing + // the label of the section + stmt = newSectionStatement(tok) + case ASTKindSectionStatement: + k.Root.raw = append(k.Root.raw, tok.Raw()...) + stmt = k + default: + return nil, NewParseError( + fmt.Sprintf("invalid statement: expected statement: %v", k.Kind), + ) + } + + stack.Push(stmt) + case MarkCompleteState: + if k.Kind != ASTKindStart { + stack.MarkComplete(k) + } + + if stack.Len() == 0 { + stack.Push(start) + } + case SkipState: + stack.Push(newSkipStatement(k)) + s.Skip() + case CommentState: + if k.Kind == ASTKindStart { + stack.Push(k) + } else { + stack.MarkComplete(k) + } + + stmt := newCommentStatement(tok) + stack.Push(stmt) + default: + return nil, NewParseError( + fmt.Sprintf("invalid state with ASTKind %v and TokenType %v", + k, tok.Type())) + } + + if len(tokens) > 0 { + tokens = tokens[1:] + } + } + + // this occurs when a statement has not been completed + if stack.top > 1 { + return nil, NewParseError(fmt.Sprintf("incomplete ini expression")) + } + + // returns a sublist which excludes the start symbol + return stack.List(), nil +} + +// trimSpaces will trim spaces on the left and right hand side of +// the literal. +func trimSpaces(k AST) AST { + // trim left hand side of spaces + for i := 0; i < len(k.Root.raw); i++ { + if !isWhitespace(k.Root.raw[i]) { + break + } + + k.Root.raw = k.Root.raw[1:] + i-- + } + + // trim right hand side of spaces + for i := len(k.Root.raw) - 1; i >= 0; i-- { + if !isWhitespace(k.Root.raw[i]) { + break + } + + k.Root.raw = k.Root.raw[:len(k.Root.raw)-1] + } + + return k +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/literal_tokens.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/literal_tokens.go new file mode 100644 index 0000000..24df543 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/literal_tokens.go @@ -0,0 +1,324 @@ +package ini + +import ( + "fmt" + "strconv" + "strings" +) + +var ( + runesTrue = []rune("true") + runesFalse = []rune("false") +) + +var literalValues = [][]rune{ + runesTrue, + runesFalse, +} + +func isBoolValue(b []rune) bool { + for _, lv := range literalValues { + if isLitValue(lv, b) { + return true + } + } + return false +} + +func isLitValue(want, have []rune) bool { + if len(have) < len(want) { + return false + } + + for i := 0; i < len(want); i++ { + if want[i] != have[i] { + return false + } + } + + return true +} + +// isNumberValue will return whether not the leading characters in +// a byte slice is a number. A number is delimited by whitespace or +// the newline token. +// +// A number is defined to be in a binary, octal, decimal (int | float), hex format, +// or in scientific notation. +func isNumberValue(b []rune) bool { + negativeIndex := 0 + helper := numberHelper{} + needDigit := false + + for i := 0; i < len(b); i++ { + negativeIndex++ + + switch b[i] { + case '-': + if helper.IsNegative() || negativeIndex != 1 { + return false + } + helper.Determine(b[i]) + needDigit = true + continue + case 'e', 'E': + if err := helper.Determine(b[i]); err != nil { + return false + } + negativeIndex = 0 + needDigit = true + continue + case 'b': + if helper.numberFormat == hex { + break + } + fallthrough + case 'o', 'x': + needDigit = true + if i == 0 { + return false + } + + fallthrough + case '.': + if err := helper.Determine(b[i]); err != nil { + return false + } + needDigit = true + continue + } + + if i > 0 && (isNewline(b[i:]) || isWhitespace(b[i])) { + return !needDigit + } + + if !helper.CorrectByte(b[i]) { + return false + } + needDigit = false + } + + return !needDigit +} + +func isValid(b []rune) (bool, int, error) { + if len(b) == 0 { + // TODO: should probably return an error + return false, 0, nil + } + + return isValidRune(b[0]), 1, nil +} + +func isValidRune(r rune) bool { + return r != ':' && r != '=' && r != '[' && r != ']' && r != ' ' && r != '\n' +} + +// ValueType is an enum that will signify what type +// the Value is +type ValueType int + +func (v ValueType) String() string { + switch v { + case NoneType: + return "NONE" + case DecimalType: + return "FLOAT" + case IntegerType: + return "INT" + case StringType: + return "STRING" + case BoolType: + return "BOOL" + } + + return "" +} + +// ValueType enums +const ( + NoneType = ValueType(iota) + DecimalType + IntegerType + StringType + QuotedStringType + BoolType +) + +// Value is a union container +type Value struct { + Type ValueType + raw []rune + + integer int64 + decimal float64 + boolean bool + str string +} + +func newValue(t ValueType, base int, raw []rune) (Value, error) { + v := Value{ + Type: t, + raw: raw, + } + var err error + + switch t { + case DecimalType: + v.decimal, err = strconv.ParseFloat(string(raw), 64) + case IntegerType: + if base != 10 { + raw = raw[2:] + } + + v.integer, err = strconv.ParseInt(string(raw), base, 64) + case StringType: + v.str = string(raw) + case QuotedStringType: + v.str = string(raw[1 : len(raw)-1]) + case BoolType: + v.boolean = runeCompare(v.raw, runesTrue) + } + + // issue 2253 + // + // if the value trying to be parsed is too large, then we will use + // the 'StringType' and raw value instead. + if nerr, ok := err.(*strconv.NumError); ok && nerr.Err == strconv.ErrRange { + v.Type = StringType + v.str = string(raw) + err = nil + } + + return v, err +} + +// Append will append values and change the type to a string +// type. +func (v *Value) Append(tok Token) { + r := tok.Raw() + if v.Type != QuotedStringType { + v.Type = StringType + r = tok.raw[1 : len(tok.raw)-1] + } + if tok.Type() != TokenLit { + v.raw = append(v.raw, tok.Raw()...) + } else { + v.raw = append(v.raw, r...) + } +} + +func (v Value) String() string { + switch v.Type { + case DecimalType: + return fmt.Sprintf("decimal: %f", v.decimal) + case IntegerType: + return fmt.Sprintf("integer: %d", v.integer) + case StringType: + return fmt.Sprintf("string: %s", string(v.raw)) + case QuotedStringType: + return fmt.Sprintf("quoted string: %s", string(v.raw)) + case BoolType: + return fmt.Sprintf("bool: %t", v.boolean) + default: + return "union not set" + } +} + +func newLitToken(b []rune) (Token, int, error) { + n := 0 + var err error + + token := Token{} + if b[0] == '"' { + n, err = getStringValue(b) + if err != nil { + return token, n, err + } + + token = newToken(TokenLit, b[:n], QuotedStringType) + } else if isNumberValue(b) { + var base int + base, n, err = getNumericalValue(b) + if err != nil { + return token, 0, err + } + + value := b[:n] + vType := IntegerType + if contains(value, '.') || hasExponent(value) { + vType = DecimalType + } + token = newToken(TokenLit, value, vType) + token.base = base + } else if isBoolValue(b) { + n, err = getBoolValue(b) + + token = newToken(TokenLit, b[:n], BoolType) + } else { + n, err = getValue(b) + token = newToken(TokenLit, b[:n], StringType) + } + + return token, n, err +} + +// IntValue returns an integer value +func (v Value) IntValue() int64 { + return v.integer +} + +// FloatValue returns a float value +func (v Value) FloatValue() float64 { + return v.decimal +} + +// BoolValue returns a bool value +func (v Value) BoolValue() bool { + return v.boolean +} + +func isTrimmable(r rune) bool { + switch r { + case '\n', ' ': + return true + } + return false +} + +// StringValue returns the string value +func (v Value) StringValue() string { + switch v.Type { + case StringType: + return strings.TrimFunc(string(v.raw), isTrimmable) + case QuotedStringType: + // preserve all characters in the quotes + return string(removeEscapedCharacters(v.raw[1 : len(v.raw)-1])) + default: + return strings.TrimFunc(string(v.raw), isTrimmable) + } +} + +func contains(runes []rune, c rune) bool { + for i := 0; i < len(runes); i++ { + if runes[i] == c { + return true + } + } + + return false +} + +func runeCompare(v1 []rune, v2 []rune) bool { + if len(v1) != len(v2) { + return false + } + + for i := 0; i < len(v1); i++ { + if v1[i] != v2[i] { + return false + } + } + + return true +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/newline_token.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/newline_token.go new file mode 100644 index 0000000..e52ac39 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/newline_token.go @@ -0,0 +1,30 @@ +package ini + +func isNewline(b []rune) bool { + if len(b) == 0 { + return false + } + + if b[0] == '\n' { + return true + } + + if len(b) < 2 { + return false + } + + return b[0] == '\r' && b[1] == '\n' +} + +func newNewlineToken(b []rune) (Token, int, error) { + i := 1 + if b[0] == '\r' && isNewline(b[1:]) { + i++ + } + + if !isNewline([]rune(b[:i])) { + return emptyToken, 0, NewParseError("invalid new line token") + } + + return newToken(TokenNL, b[:i], NoneType), i, nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/number_helper.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/number_helper.go new file mode 100644 index 0000000..a45c0bc --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/number_helper.go @@ -0,0 +1,152 @@ +package ini + +import ( + "bytes" + "fmt" + "strconv" +) + +const ( + none = numberFormat(iota) + binary + octal + decimal + hex + exponent +) + +type numberFormat int + +// numberHelper is used to dictate what format a number is in +// and what to do for negative values. Since -1e-4 is a valid +// number, we cannot just simply check for duplicate negatives. +type numberHelper struct { + numberFormat numberFormat + + negative bool + negativeExponent bool +} + +func (b numberHelper) Exists() bool { + return b.numberFormat != none +} + +func (b numberHelper) IsNegative() bool { + return b.negative || b.negativeExponent +} + +func (b *numberHelper) Determine(c rune) error { + if b.Exists() { + return NewParseError(fmt.Sprintf("multiple number formats: 0%v", string(c))) + } + + switch c { + case 'b': + b.numberFormat = binary + case 'o': + b.numberFormat = octal + case 'x': + b.numberFormat = hex + case 'e', 'E': + b.numberFormat = exponent + case '-': + if b.numberFormat != exponent { + b.negative = true + } else { + b.negativeExponent = true + } + case '.': + b.numberFormat = decimal + default: + return NewParseError(fmt.Sprintf("invalid number character: %v", string(c))) + } + + return nil +} + +func (b numberHelper) CorrectByte(c rune) bool { + switch { + case b.numberFormat == binary: + if !isBinaryByte(c) { + return false + } + case b.numberFormat == octal: + if !isOctalByte(c) { + return false + } + case b.numberFormat == hex: + if !isHexByte(c) { + return false + } + case b.numberFormat == decimal: + if !isDigit(c) { + return false + } + case b.numberFormat == exponent: + if !isDigit(c) { + return false + } + case b.negativeExponent: + if !isDigit(c) { + return false + } + case b.negative: + if !isDigit(c) { + return false + } + default: + if !isDigit(c) { + return false + } + } + + return true +} + +func (b numberHelper) Base() int { + switch b.numberFormat { + case binary: + return 2 + case octal: + return 8 + case hex: + return 16 + default: + return 10 + } +} + +func (b numberHelper) String() string { + buf := bytes.Buffer{} + i := 0 + + switch b.numberFormat { + case binary: + i++ + buf.WriteString(strconv.Itoa(i) + ": binary format\n") + case octal: + i++ + buf.WriteString(strconv.Itoa(i) + ": octal format\n") + case hex: + i++ + buf.WriteString(strconv.Itoa(i) + ": hex format\n") + case exponent: + i++ + buf.WriteString(strconv.Itoa(i) + ": exponent format\n") + default: + i++ + buf.WriteString(strconv.Itoa(i) + ": integer format\n") + } + + if b.negative { + i++ + buf.WriteString(strconv.Itoa(i) + ": negative format\n") + } + + if b.negativeExponent { + i++ + buf.WriteString(strconv.Itoa(i) + ": negative exponent format\n") + } + + return buf.String() +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/op_tokens.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/op_tokens.go new file mode 100644 index 0000000..8a84c7c --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/op_tokens.go @@ -0,0 +1,39 @@ +package ini + +import ( + "fmt" +) + +var ( + equalOp = []rune("=") + equalColonOp = []rune(":") +) + +func isOp(b []rune) bool { + if len(b) == 0 { + return false + } + + switch b[0] { + case '=': + return true + case ':': + return true + default: + return false + } +} + +func newOpToken(b []rune) (Token, int, error) { + tok := Token{} + + switch b[0] { + case '=': + tok = newToken(TokenOp, equalOp, NoneType) + case ':': + tok = newToken(TokenOp, equalColonOp, NoneType) + default: + return tok, 0, NewParseError(fmt.Sprintf("unexpected op type, %v", b[0])) + } + return tok, 1, nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/parse_error.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/parse_error.go new file mode 100644 index 0000000..4572870 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/parse_error.go @@ -0,0 +1,43 @@ +package ini + +import "fmt" + +const ( + // ErrCodeParseError is returned when a parsing error + // has occurred. + ErrCodeParseError = "INIParseError" +) + +// ParseError is an error which is returned during any part of +// the parsing process. +type ParseError struct { + msg string +} + +// NewParseError will return a new ParseError where message +// is the description of the error. +func NewParseError(message string) *ParseError { + return &ParseError{ + msg: message, + } +} + +// Code will return the ErrCodeParseError +func (err *ParseError) Code() string { + return ErrCodeParseError +} + +// Message returns the error's message +func (err *ParseError) Message() string { + return err.msg +} + +// OrigError return nothing since there will never be any +// original error. +func (err *ParseError) OrigError() error { + return nil +} + +func (err *ParseError) Error() string { + return fmt.Sprintf("%s: %s", err.Code(), err.Message()) +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/parse_stack.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/parse_stack.go new file mode 100644 index 0000000..7f01cf7 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/parse_stack.go @@ -0,0 +1,60 @@ +package ini + +import ( + "bytes" + "fmt" +) + +// ParseStack is a stack that contains a container, the stack portion, +// and the list which is the list of ASTs that have been successfully +// parsed. +type ParseStack struct { + top int + container []AST + list []AST + index int +} + +func newParseStack(sizeContainer, sizeList int) ParseStack { + return ParseStack{ + container: make([]AST, sizeContainer), + list: make([]AST, sizeList), + } +} + +// Pop will return and truncate the last container element. +func (s *ParseStack) Pop() AST { + s.top-- + return s.container[s.top] +} + +// Push will add the new AST to the container +func (s *ParseStack) Push(ast AST) { + s.container[s.top] = ast + s.top++ +} + +// MarkComplete will append the AST to the list of completed statements +func (s *ParseStack) MarkComplete(ast AST) { + s.list[s.index] = ast + s.index++ +} + +// List will return the completed statements +func (s ParseStack) List() []AST { + return s.list[:s.index] +} + +// Len will return the length of the container +func (s *ParseStack) Len() int { + return s.top +} + +func (s ParseStack) String() string { + buf := bytes.Buffer{} + for i, node := range s.list { + buf.WriteString(fmt.Sprintf("%d: %v\n", i+1, node)) + } + + return buf.String() +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/sep_tokens.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/sep_tokens.go new file mode 100644 index 0000000..f82095b --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/sep_tokens.go @@ -0,0 +1,41 @@ +package ini + +import ( + "fmt" +) + +var ( + emptyRunes = []rune{} +) + +func isSep(b []rune) bool { + if len(b) == 0 { + return false + } + + switch b[0] { + case '[', ']': + return true + default: + return false + } +} + +var ( + openBrace = []rune("[") + closeBrace = []rune("]") +) + +func newSepToken(b []rune) (Token, int, error) { + tok := Token{} + + switch b[0] { + case '[': + tok = newToken(TokenSep, openBrace, NoneType) + case ']': + tok = newToken(TokenSep, closeBrace, NoneType) + default: + return tok, 0, NewParseError(fmt.Sprintf("unexpected sep type, %v", b[0])) + } + return tok, 1, nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/skipper.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/skipper.go new file mode 100644 index 0000000..da7a404 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/skipper.go @@ -0,0 +1,45 @@ +package ini + +// skipper is used to skip certain blocks of an ini file. +// Currently skipper is used to skip nested blocks of ini +// files. See example below +// +// [ foo ] +// nested = ; this section will be skipped +// a=b +// c=d +// bar=baz ; this will be included +type skipper struct { + shouldSkip bool + TokenSet bool + prevTok Token +} + +func newSkipper() skipper { + return skipper{ + prevTok: emptyToken, + } +} + +func (s *skipper) ShouldSkip(tok Token) bool { + // should skip state will be modified only if previous token was new line (NL); + // and the current token is not WhiteSpace (WS). + if s.shouldSkip && + s.prevTok.Type() == TokenNL && + tok.Type() != TokenWS { + s.Continue() + return false + } + s.prevTok = tok + return s.shouldSkip +} + +func (s *skipper) Skip() { + s.shouldSkip = true +} + +func (s *skipper) Continue() { + s.shouldSkip = false + // empty token is assigned as we return to default state, when should skip is false + s.prevTok = emptyToken +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/statement.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/statement.go new file mode 100644 index 0000000..18f3fe8 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/statement.go @@ -0,0 +1,35 @@ +package ini + +// Statement is an empty AST mostly used for transitioning states. +func newStatement() AST { + return newAST(ASTKindStatement, AST{}) +} + +// SectionStatement represents a section AST +func newSectionStatement(tok Token) AST { + return newASTWithRootToken(ASTKindSectionStatement, tok) +} + +// ExprStatement represents a completed expression AST +func newExprStatement(ast AST) AST { + return newAST(ASTKindExprStatement, ast) +} + +// CommentStatement represents a comment in the ini definition. +// +// grammar: +// comment -> #comment' | ;comment' +// comment' -> epsilon | value +func newCommentStatement(tok Token) AST { + return newAST(ASTKindCommentStatement, newExpression(tok)) +} + +// CompletedSectionStatement represents a completed section +func newCompletedSectionStatement(ast AST) AST { + return newAST(ASTKindCompletedSectionStatement, ast) +} + +// SkipStatement is used to skip whole statements +func newSkipStatement(ast AST) AST { + return newAST(ASTKindSkipStatement, ast) +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/value_util.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/value_util.go new file mode 100644 index 0000000..305999d --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/value_util.go @@ -0,0 +1,284 @@ +package ini + +import ( + "fmt" +) + +// getStringValue will return a quoted string and the amount +// of bytes read +// +// an error will be returned if the string is not properly formatted +func getStringValue(b []rune) (int, error) { + if b[0] != '"' { + return 0, NewParseError("strings must start with '\"'") + } + + endQuote := false + i := 1 + + for ; i < len(b) && !endQuote; i++ { + if escaped := isEscaped(b[:i], b[i]); b[i] == '"' && !escaped { + endQuote = true + break + } else if escaped { + /*c, err := getEscapedByte(b[i]) + if err != nil { + return 0, err + } + + b[i-1] = c + b = append(b[:i], b[i+1:]...) + i--*/ + + continue + } + } + + if !endQuote { + return 0, NewParseError("missing '\"' in string value") + } + + return i + 1, nil +} + +// getBoolValue will return a boolean and the amount +// of bytes read +// +// an error will be returned if the boolean is not of a correct +// value +func getBoolValue(b []rune) (int, error) { + if len(b) < 4 { + return 0, NewParseError("invalid boolean value") + } + + n := 0 + for _, lv := range literalValues { + if len(lv) > len(b) { + continue + } + + if isLitValue(lv, b) { + n = len(lv) + } + } + + if n == 0 { + return 0, NewParseError("invalid boolean value") + } + + return n, nil +} + +// getNumericalValue will return a numerical string, the amount +// of bytes read, and the base of the number +// +// an error will be returned if the number is not of a correct +// value +func getNumericalValue(b []rune) (int, int, error) { + if !isDigit(b[0]) { + return 0, 0, NewParseError("invalid digit value") + } + + i := 0 + helper := numberHelper{} + +loop: + for negativeIndex := 0; i < len(b); i++ { + negativeIndex++ + + if !isDigit(b[i]) { + switch b[i] { + case '-': + if helper.IsNegative() || negativeIndex != 1 { + return 0, 0, NewParseError("parse error '-'") + } + + n := getNegativeNumber(b[i:]) + i += (n - 1) + helper.Determine(b[i]) + continue + case '.': + if err := helper.Determine(b[i]); err != nil { + return 0, 0, err + } + case 'e', 'E': + if err := helper.Determine(b[i]); err != nil { + return 0, 0, err + } + + negativeIndex = 0 + case 'b': + if helper.numberFormat == hex { + break + } + fallthrough + case 'o', 'x': + if i == 0 && b[i] != '0' { + return 0, 0, NewParseError("incorrect base format, expected leading '0'") + } + + if i != 1 { + return 0, 0, NewParseError(fmt.Sprintf("incorrect base format found %s at %d index", string(b[i]), i)) + } + + if err := helper.Determine(b[i]); err != nil { + return 0, 0, err + } + default: + if isWhitespace(b[i]) { + break loop + } + + if isNewline(b[i:]) { + break loop + } + + if !(helper.numberFormat == hex && isHexByte(b[i])) { + if i+2 < len(b) && !isNewline(b[i:i+2]) { + return 0, 0, NewParseError("invalid numerical character") + } else if !isNewline([]rune{b[i]}) { + return 0, 0, NewParseError("invalid numerical character") + } + + break loop + } + } + } + } + + return helper.Base(), i, nil +} + +// isDigit will return whether or not something is an integer +func isDigit(b rune) bool { + return b >= '0' && b <= '9' +} + +func hasExponent(v []rune) bool { + return contains(v, 'e') || contains(v, 'E') +} + +func isBinaryByte(b rune) bool { + switch b { + case '0', '1': + return true + default: + return false + } +} + +func isOctalByte(b rune) bool { + switch b { + case '0', '1', '2', '3', '4', '5', '6', '7': + return true + default: + return false + } +} + +func isHexByte(b rune) bool { + if isDigit(b) { + return true + } + return (b >= 'A' && b <= 'F') || + (b >= 'a' && b <= 'f') +} + +func getValue(b []rune) (int, error) { + i := 0 + + for i < len(b) { + if isNewline(b[i:]) { + break + } + + if isOp(b[i:]) { + break + } + + valid, n, err := isValid(b[i:]) + if err != nil { + return 0, err + } + + if !valid { + break + } + + i += n + } + + return i, nil +} + +// getNegativeNumber will return a negative number from a +// byte slice. This will iterate through all characters until +// a non-digit has been found. +func getNegativeNumber(b []rune) int { + if b[0] != '-' { + return 0 + } + + i := 1 + for ; i < len(b); i++ { + if !isDigit(b[i]) { + return i + } + } + + return i +} + +// isEscaped will return whether or not the character is an escaped +// character. +func isEscaped(value []rune, b rune) bool { + if len(value) == 0 { + return false + } + + switch b { + case '\'': // single quote + case '"': // quote + case 'n': // newline + case 't': // tab + case '\\': // backslash + default: + return false + } + + return value[len(value)-1] == '\\' +} + +func getEscapedByte(b rune) (rune, error) { + switch b { + case '\'': // single quote + return '\'', nil + case '"': // quote + return '"', nil + case 'n': // newline + return '\n', nil + case 't': // table + return '\t', nil + case '\\': // backslash + return '\\', nil + default: + return b, NewParseError(fmt.Sprintf("invalid escaped character %c", b)) + } +} + +func removeEscapedCharacters(b []rune) []rune { + for i := 0; i < len(b); i++ { + if isEscaped(b[:i], b[i]) { + c, err := getEscapedByte(b[i]) + if err != nil { + return b + } + + b[i-1] = c + b = append(b[:i], b[i+1:]...) + i-- + } + } + + return b +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/visitor.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/visitor.go new file mode 100644 index 0000000..94841c3 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/visitor.go @@ -0,0 +1,166 @@ +package ini + +import ( + "fmt" + "sort" +) + +// Visitor is an interface used by walkers that will +// traverse an array of ASTs. +type Visitor interface { + VisitExpr(AST) error + VisitStatement(AST) error +} + +// DefaultVisitor is used to visit statements and expressions +// and ensure that they are both of the correct format. +// In addition, upon visiting this will build sections and populate +// the Sections field which can be used to retrieve profile +// configuration. +type DefaultVisitor struct { + scope string + Sections Sections +} + +// NewDefaultVisitor return a DefaultVisitor +func NewDefaultVisitor() *DefaultVisitor { + return &DefaultVisitor{ + Sections: Sections{ + container: map[string]Section{}, + }, + } +} + +// VisitExpr visits expressions... +func (v *DefaultVisitor) VisitExpr(expr AST) error { + t := v.Sections.container[v.scope] + if t.values == nil { + t.values = values{} + } + + switch expr.Kind { + case ASTKindExprStatement: + opExpr := expr.GetRoot() + switch opExpr.Kind { + case ASTKindEqualExpr: + children := opExpr.GetChildren() + if len(children) <= 1 { + return NewParseError("unexpected token type") + } + + rhs := children[1] + + if rhs.Root.Type() != TokenLit { + return NewParseError("unexpected token type") + } + + key := EqualExprKey(opExpr) + v, err := newValue(rhs.Root.ValueType, rhs.Root.base, rhs.Root.Raw()) + if err != nil { + return err + } + + t.values[key] = v + default: + return NewParseError(fmt.Sprintf("unsupported expression %v", expr)) + } + default: + return NewParseError(fmt.Sprintf("unsupported expression %v", expr)) + } + + v.Sections.container[v.scope] = t + return nil +} + +// VisitStatement visits statements... +func (v *DefaultVisitor) VisitStatement(stmt AST) error { + switch stmt.Kind { + case ASTKindCompletedSectionStatement: + child := stmt.GetRoot() + if child.Kind != ASTKindSectionStatement { + return NewParseError(fmt.Sprintf("unsupported child statement: %T", child)) + } + + name := string(child.Root.Raw()) + v.Sections.container[name] = Section{} + v.scope = name + default: + return NewParseError(fmt.Sprintf("unsupported statement: %s", stmt.Kind)) + } + + return nil +} + +// Sections is a map of Section structures that represent +// a configuration. +type Sections struct { + container map[string]Section +} + +// GetSection will return section p. If section p does not exist, +// false will be returned in the second parameter. +func (t Sections) GetSection(p string) (Section, bool) { + v, ok := t.container[p] + return v, ok +} + +// values represents a map of union values. +type values map[string]Value + +// List will return a list of all sections that were successfully +// parsed. +func (t Sections) List() []string { + keys := make([]string, len(t.container)) + i := 0 + for k := range t.container { + keys[i] = k + i++ + } + + sort.Strings(keys) + return keys +} + +// Section contains a name and values. This represent +// a sectioned entry in a configuration file. +type Section struct { + Name string + values values +} + +// Has will return whether or not an entry exists in a given section +func (t Section) Has(k string) bool { + _, ok := t.values[k] + return ok +} + +// ValueType will returned what type the union is set to. If +// k was not found, the NoneType will be returned. +func (t Section) ValueType(k string) (ValueType, bool) { + v, ok := t.values[k] + return v.Type, ok +} + +// Bool returns a bool value at k +func (t Section) Bool(k string) bool { + return t.values[k].BoolValue() +} + +// Int returns an integer value at k +func (t Section) Int(k string) int64 { + return t.values[k].IntValue() +} + +// Float64 returns a float value at k +func (t Section) Float64(k string) float64 { + return t.values[k].FloatValue() +} + +// String returns the string value at k +func (t Section) String(k string) string { + _, ok := t.values[k] + if !ok { + return "" + } + return t.values[k].StringValue() +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/walker.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/walker.go new file mode 100644 index 0000000..99915f7 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/walker.go @@ -0,0 +1,25 @@ +package ini + +// Walk will traverse the AST using the v, the Visitor. +func Walk(tree []AST, v Visitor) error { + for _, node := range tree { + switch node.Kind { + case ASTKindExpr, + ASTKindExprStatement: + + if err := v.VisitExpr(node); err != nil { + return err + } + case ASTKindStatement, + ASTKindCompletedSectionStatement, + ASTKindNestedSectionStatement, + ASTKindCompletedNestedSectionStatement: + + if err := v.VisitStatement(node); err != nil { + return err + } + } + } + + return nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/ws_token.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/ws_token.go new file mode 100644 index 0000000..7ffb4ae --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/ws_token.go @@ -0,0 +1,24 @@ +package ini + +import ( + "unicode" +) + +// isWhitespace will return whether or not the character is +// a whitespace character. +// +// Whitespace is defined as a space or tab. +func isWhitespace(c rune) bool { + return unicode.IsSpace(c) && c != '\n' && c != '\r' +} + +func newWSToken(b []rune) (Token, int, error) { + i := 0 + for ; i < len(b); i++ { + if !isWhitespace(b[i]) { + break + } + } + + return newToken(TokenWS, b[:i], NoneType), i, nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/s3err/error.go b/vendor/github.com/aws/aws-sdk-go/internal/s3err/error.go new file mode 100644 index 0000000..0b9b0df --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/s3err/error.go @@ -0,0 +1,57 @@ +package s3err + +import ( + "fmt" + + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/request" +) + +// RequestFailure provides additional S3 specific metadata for the request +// failure. +type RequestFailure struct { + awserr.RequestFailure + + hostID string +} + +// NewRequestFailure returns a request failure error decordated with S3 +// specific metadata. +func NewRequestFailure(err awserr.RequestFailure, hostID string) *RequestFailure { + return &RequestFailure{RequestFailure: err, hostID: hostID} +} + +func (r RequestFailure) Error() string { + extra := fmt.Sprintf("status code: %d, request id: %s, host id: %s", + r.StatusCode(), r.RequestID(), r.hostID) + return awserr.SprintError(r.Code(), r.Message(), extra, r.OrigErr()) +} +func (r RequestFailure) String() string { + return r.Error() +} + +// HostID returns the HostID request response value. +func (r RequestFailure) HostID() string { + return r.hostID +} + +// RequestFailureWrapperHandler returns a handler to rap an +// awserr.RequestFailure with the S3 request ID 2 from the response. +func RequestFailureWrapperHandler() request.NamedHandler { + return request.NamedHandler{ + Name: "awssdk.s3.errorHandler", + Fn: func(req *request.Request) { + reqErr, ok := req.Error.(awserr.RequestFailure) + if !ok || reqErr == nil { + return + } + + hostID := req.HTTPResponse.Header.Get("X-Amz-Id-2") + if req.Error == nil { + return + } + + req.Error = NewRequestFailure(reqErr, hostID) + }, + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/sdkio/byte.go b/vendor/github.com/aws/aws-sdk-go/internal/sdkio/byte.go new file mode 100644 index 0000000..6c44398 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/sdkio/byte.go @@ -0,0 +1,12 @@ +package sdkio + +const ( + // Byte is 8 bits + Byte int64 = 1 + // KibiByte (KiB) is 1024 Bytes + KibiByte = Byte * 1024 + // MebiByte (MiB) is 1024 KiB + MebiByte = KibiByte * 1024 + // GibiByte (GiB) is 1024 MiB + GibiByte = MebiByte * 1024 +) diff --git a/vendor/github.com/aws/aws-sdk-go/internal/sdkio/io_go1.6.go b/vendor/github.com/aws/aws-sdk-go/internal/sdkio/io_go1.6.go new file mode 100644 index 0000000..5aa9137 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/sdkio/io_go1.6.go @@ -0,0 +1,10 @@ +// +build !go1.7 + +package sdkio + +// Copy of Go 1.7 io package's Seeker constants. +const ( + SeekStart = 0 // seek relative to the origin of the file + SeekCurrent = 1 // seek relative to the current offset + SeekEnd = 2 // seek relative to the end +) diff --git a/vendor/github.com/aws/aws-sdk-go/internal/sdkio/io_go1.7.go b/vendor/github.com/aws/aws-sdk-go/internal/sdkio/io_go1.7.go new file mode 100644 index 0000000..e5f0056 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/sdkio/io_go1.7.go @@ -0,0 +1,12 @@ +// +build go1.7 + +package sdkio + +import "io" + +// Alias for Go 1.7 io package Seeker constants +const ( + SeekStart = io.SeekStart // seek relative to the origin of the file + SeekCurrent = io.SeekCurrent // seek relative to the current offset + SeekEnd = io.SeekEnd // seek relative to the end +) diff --git a/vendor/github.com/aws/aws-sdk-go/internal/sdkmath/floor.go b/vendor/github.com/aws/aws-sdk-go/internal/sdkmath/floor.go new file mode 100644 index 0000000..44898ee --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/sdkmath/floor.go @@ -0,0 +1,15 @@ +// +build go1.10 + +package sdkmath + +import "math" + +// Round returns the nearest integer, rounding half away from zero. +// +// Special cases are: +// Round(±0) = ±0 +// Round(±Inf) = ±Inf +// Round(NaN) = NaN +func Round(x float64) float64 { + return math.Round(x) +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/sdkmath/floor_go1.9.go b/vendor/github.com/aws/aws-sdk-go/internal/sdkmath/floor_go1.9.go new file mode 100644 index 0000000..810ec7f --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/sdkmath/floor_go1.9.go @@ -0,0 +1,56 @@ +// +build !go1.10 + +package sdkmath + +import "math" + +// Copied from the Go standard library's (Go 1.12) math/floor.go for use in +// Go version prior to Go 1.10. +const ( + uvone = 0x3FF0000000000000 + mask = 0x7FF + shift = 64 - 11 - 1 + bias = 1023 + signMask = 1 << 63 + fracMask = 1<= 0.5 { + // return t + Copysign(1, x) + // } + // return t + // } + bits := math.Float64bits(x) + e := uint(bits>>shift) & mask + if e < bias { + // Round abs(x) < 1 including denormals. + bits &= signMask // +-0 + if e == bias-1 { + bits |= uvone // +-1 + } + } else if e < bias+shift { + // Round any abs(x) >= 1 containing a fractional component [0,1). + // + // Numbers with larger exponents are returned unchanged since they + // must be either an integer, infinity, or NaN. + const half = 1 << (shift - 1) + e -= bias + bits += half >> e + bits &^= fracMask >> e + } + return math.Float64frombits(bits) +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/sdkrand/locked_source.go b/vendor/github.com/aws/aws-sdk-go/internal/sdkrand/locked_source.go new file mode 100644 index 0000000..0c9802d --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/sdkrand/locked_source.go @@ -0,0 +1,29 @@ +package sdkrand + +import ( + "math/rand" + "sync" + "time" +) + +// lockedSource is a thread-safe implementation of rand.Source +type lockedSource struct { + lk sync.Mutex + src rand.Source +} + +func (r *lockedSource) Int63() (n int64) { + r.lk.Lock() + n = r.src.Int63() + r.lk.Unlock() + return +} + +func (r *lockedSource) Seed(seed int64) { + r.lk.Lock() + r.src.Seed(seed) + r.lk.Unlock() +} + +// SeededRand is a new RNG using a thread safe implementation of rand.Source +var SeededRand = rand.New(&lockedSource{src: rand.NewSource(time.Now().UnixNano())}) diff --git a/vendor/github.com/aws/aws-sdk-go/internal/sdkrand/read.go b/vendor/github.com/aws/aws-sdk-go/internal/sdkrand/read.go new file mode 100644 index 0000000..f4651da --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/sdkrand/read.go @@ -0,0 +1,11 @@ +// +build go1.6 + +package sdkrand + +import "math/rand" + +// Read provides the stub for math.Rand.Read method support for go version's +// 1.6 and greater. +func Read(r *rand.Rand, p []byte) (int, error) { + return r.Read(p) +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/sdkrand/read_1_5.go b/vendor/github.com/aws/aws-sdk-go/internal/sdkrand/read_1_5.go new file mode 100644 index 0000000..b1d93a3 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/sdkrand/read_1_5.go @@ -0,0 +1,24 @@ +// +build !go1.6 + +package sdkrand + +import "math/rand" + +// Read backfills Go 1.6's math.Rand.Reader for Go 1.5 +func Read(r *rand.Rand, p []byte) (n int, err error) { + // Copy of Go standard libraries math package's read function not added to + // standard library until Go 1.6. + var pos int8 + var val int64 + for n = 0; n < len(p); n++ { + if pos == 0 { + val = r.Int63() + pos = 7 + } + p[n] = byte(val) + val >>= 8 + pos-- + } + + return n, err +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/sdkuri/path.go b/vendor/github.com/aws/aws-sdk-go/internal/sdkuri/path.go new file mode 100644 index 0000000..38ea61a --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/sdkuri/path.go @@ -0,0 +1,23 @@ +package sdkuri + +import ( + "path" + "strings" +) + +// PathJoin will join the elements of the path delimited by the "/" +// character. Similar to path.Join with the exception the trailing "/" +// character is preserved if present. +func PathJoin(elems ...string) string { + if len(elems) == 0 { + return "" + } + + hasTrailing := strings.HasSuffix(elems[len(elems)-1], "/") + str := path.Join(elems...) + if hasTrailing && str != "/" { + str += "/" + } + + return str +} diff --git a/vendor/github.com/aws/aws-sdk-go/internal/shareddefaults/ecs_container.go b/vendor/github.com/aws/aws-sdk-go/internal/shareddefaults/ecs_container.go new file mode 100644 index 0000000..7da8a49 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/shareddefaults/ecs_container.go @@ -0,0 +1,12 @@ +package shareddefaults + +const ( + // ECSCredsProviderEnvVar is an environmental variable key used to + // determine which path needs to be hit. + ECSCredsProviderEnvVar = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" +) + +// ECSContainerCredentialsURI is the endpoint to retrieve container +// credentials. This can be overridden to test to ensure the credential process +// is behaving correctly. +var ECSContainerCredentialsURI = "http://169.254.170.2" diff --git a/vendor/github.com/aws/aws-sdk-go/internal/shareddefaults/shared_config.go b/vendor/github.com/aws/aws-sdk-go/internal/shareddefaults/shared_config.go new file mode 100644 index 0000000..ebcbc2b --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/shareddefaults/shared_config.go @@ -0,0 +1,40 @@ +package shareddefaults + +import ( + "os" + "path/filepath" + "runtime" +) + +// SharedCredentialsFilename returns the SDK's default file path +// for the shared credentials file. +// +// Builds the shared config file path based on the OS's platform. +// +// - Linux/Unix: $HOME/.aws/credentials +// - Windows: %USERPROFILE%\.aws\credentials +func SharedCredentialsFilename() string { + return filepath.Join(UserHomeDir(), ".aws", "credentials") +} + +// SharedConfigFilename returns the SDK's default file path for +// the shared config file. +// +// Builds the shared config file path based on the OS's platform. +// +// - Linux/Unix: $HOME/.aws/config +// - Windows: %USERPROFILE%\.aws\config +func SharedConfigFilename() string { + return filepath.Join(UserHomeDir(), ".aws", "config") +} + +// UserHomeDir returns the home directory for the user the process is +// running under. +func UserHomeDir() string { + if runtime.GOOS == "windows" { // Windows + return os.Getenv("USERPROFILE") + } + + // *nix + return os.Getenv("HOME") +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/ec2query/build.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/ec2query/build.go new file mode 100644 index 0000000..50c5ed7 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/ec2query/build.go @@ -0,0 +1,36 @@ +// Package ec2query provides serialization of AWS EC2 requests and responses. +package ec2query + +//go:generate go run -tags codegen ../../../models/protocol_tests/generate.go ../../../models/protocol_tests/input/ec2.json build_test.go + +import ( + "net/url" + + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/private/protocol/query/queryutil" +) + +// BuildHandler is a named request handler for building ec2query protocol requests +var BuildHandler = request.NamedHandler{Name: "awssdk.ec2query.Build", Fn: Build} + +// Build builds a request for the EC2 protocol. +func Build(r *request.Request) { + body := url.Values{ + "Action": {r.Operation.Name}, + "Version": {r.ClientInfo.APIVersion}, + } + if err := queryutil.Parse(body, r.Params, true); err != nil { + r.Error = awserr.New(request.ErrCodeSerialization, + "failed encoding EC2 Query request", err) + } + + if !r.IsPresigned() { + r.HTTPRequest.Method = "POST" + r.HTTPRequest.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=utf-8") + r.SetBufferBody([]byte(body.Encode())) + } else { // This is a pre-signed request + r.HTTPRequest.Method = "GET" + r.HTTPRequest.URL.RawQuery = body.Encode() + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/ec2query/unmarshal.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/ec2query/unmarshal.go new file mode 100644 index 0000000..105d732 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/ec2query/unmarshal.go @@ -0,0 +1,77 @@ +package ec2query + +//go:generate go run -tags codegen ../../../models/protocol_tests/generate.go ../../../models/protocol_tests/output/ec2.json unmarshal_test.go + +import ( + "encoding/xml" + + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil" +) + +// UnmarshalHandler is a named request handler for unmarshaling ec2query protocol requests +var UnmarshalHandler = request.NamedHandler{Name: "awssdk.ec2query.Unmarshal", Fn: Unmarshal} + +// UnmarshalMetaHandler is a named request handler for unmarshaling ec2query protocol request metadata +var UnmarshalMetaHandler = request.NamedHandler{Name: "awssdk.ec2query.UnmarshalMeta", Fn: UnmarshalMeta} + +// UnmarshalErrorHandler is a named request handler for unmarshaling ec2query protocol request errors +var UnmarshalErrorHandler = request.NamedHandler{Name: "awssdk.ec2query.UnmarshalError", Fn: UnmarshalError} + +// Unmarshal unmarshals a response body for the EC2 protocol. +func Unmarshal(r *request.Request) { + defer r.HTTPResponse.Body.Close() + if r.DataFilled() { + decoder := xml.NewDecoder(r.HTTPResponse.Body) + err := xmlutil.UnmarshalXML(r.Data, decoder, "") + if err != nil { + r.Error = awserr.NewRequestFailure( + awserr.New(request.ErrCodeSerialization, + "failed decoding EC2 Query response", err), + r.HTTPResponse.StatusCode, + r.RequestID, + ) + return + } + } +} + +// UnmarshalMeta unmarshals response headers for the EC2 protocol. +func UnmarshalMeta(r *request.Request) { + r.RequestID = r.HTTPResponse.Header.Get("X-Amzn-Requestid") + if r.RequestID == "" { + // Alternative version of request id in the header + r.RequestID = r.HTTPResponse.Header.Get("X-Amz-Request-Id") + } +} + +type xmlErrorResponse struct { + XMLName xml.Name `xml:"Response"` + Code string `xml:"Errors>Error>Code"` + Message string `xml:"Errors>Error>Message"` + RequestID string `xml:"RequestID"` +} + +// UnmarshalError unmarshals a response error for the EC2 protocol. +func UnmarshalError(r *request.Request) { + defer r.HTTPResponse.Body.Close() + + var respErr xmlErrorResponse + err := xmlutil.UnmarshalXMLError(&respErr, r.HTTPResponse.Body) + if err != nil { + r.Error = awserr.NewRequestFailure( + awserr.New(request.ErrCodeSerialization, + "failed to unmarshal error message", err), + r.HTTPResponse.StatusCode, + r.RequestID, + ) + return + } + + r.Error = awserr.NewRequestFailure( + awserr.New(respErr.Code, respErr.Message, nil), + r.HTTPResponse.StatusCode, + respErr.RequestID, + ) +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/debug.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/debug.go new file mode 100644 index 0000000..ecc7bf8 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/debug.go @@ -0,0 +1,144 @@ +package eventstream + +import ( + "bytes" + "encoding/base64" + "encoding/json" + "fmt" + "strconv" +) + +type decodedMessage struct { + rawMessage + Headers decodedHeaders `json:"headers"` +} +type jsonMessage struct { + Length json.Number `json:"total_length"` + HeadersLen json.Number `json:"headers_length"` + PreludeCRC json.Number `json:"prelude_crc"` + Headers decodedHeaders `json:"headers"` + Payload []byte `json:"payload"` + CRC json.Number `json:"message_crc"` +} + +func (d *decodedMessage) UnmarshalJSON(b []byte) (err error) { + var jsonMsg jsonMessage + if err = json.Unmarshal(b, &jsonMsg); err != nil { + return err + } + + d.Length, err = numAsUint32(jsonMsg.Length) + if err != nil { + return err + } + d.HeadersLen, err = numAsUint32(jsonMsg.HeadersLen) + if err != nil { + return err + } + d.PreludeCRC, err = numAsUint32(jsonMsg.PreludeCRC) + if err != nil { + return err + } + d.Headers = jsonMsg.Headers + d.Payload = jsonMsg.Payload + d.CRC, err = numAsUint32(jsonMsg.CRC) + if err != nil { + return err + } + + return nil +} + +func (d *decodedMessage) MarshalJSON() ([]byte, error) { + jsonMsg := jsonMessage{ + Length: json.Number(strconv.Itoa(int(d.Length))), + HeadersLen: json.Number(strconv.Itoa(int(d.HeadersLen))), + PreludeCRC: json.Number(strconv.Itoa(int(d.PreludeCRC))), + Headers: d.Headers, + Payload: d.Payload, + CRC: json.Number(strconv.Itoa(int(d.CRC))), + } + + return json.Marshal(jsonMsg) +} + +func numAsUint32(n json.Number) (uint32, error) { + v, err := n.Int64() + if err != nil { + return 0, fmt.Errorf("failed to get int64 json number, %v", err) + } + + return uint32(v), nil +} + +func (d decodedMessage) Message() Message { + return Message{ + Headers: Headers(d.Headers), + Payload: d.Payload, + } +} + +type decodedHeaders Headers + +func (hs *decodedHeaders) UnmarshalJSON(b []byte) error { + var jsonHeaders []struct { + Name string `json:"name"` + Type valueType `json:"type"` + Value interface{} `json:"value"` + } + + decoder := json.NewDecoder(bytes.NewReader(b)) + decoder.UseNumber() + if err := decoder.Decode(&jsonHeaders); err != nil { + return err + } + + var headers Headers + for _, h := range jsonHeaders { + value, err := valueFromType(h.Type, h.Value) + if err != nil { + return err + } + headers.Set(h.Name, value) + } + (*hs) = decodedHeaders(headers) + + return nil +} + +func valueFromType(typ valueType, val interface{}) (Value, error) { + switch typ { + case trueValueType: + return BoolValue(true), nil + case falseValueType: + return BoolValue(false), nil + case int8ValueType: + v, err := val.(json.Number).Int64() + return Int8Value(int8(v)), err + case int16ValueType: + v, err := val.(json.Number).Int64() + return Int16Value(int16(v)), err + case int32ValueType: + v, err := val.(json.Number).Int64() + return Int32Value(int32(v)), err + case int64ValueType: + v, err := val.(json.Number).Int64() + return Int64Value(v), err + case bytesValueType: + v, err := base64.StdEncoding.DecodeString(val.(string)) + return BytesValue(v), err + case stringValueType: + v, err := base64.StdEncoding.DecodeString(val.(string)) + return StringValue(string(v)), err + case timestampValueType: + v, err := val.(json.Number).Int64() + return TimestampValue(timeFromEpochMilli(v)), err + case uuidValueType: + v, err := base64.StdEncoding.DecodeString(val.(string)) + var tv UUIDValue + copy(tv[:], v) + return tv, err + default: + panic(fmt.Sprintf("unknown type, %s, %T", typ.String(), val)) + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/decode.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/decode.go new file mode 100644 index 0000000..4b972b2 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/decode.go @@ -0,0 +1,199 @@ +package eventstream + +import ( + "bytes" + "encoding/binary" + "encoding/hex" + "encoding/json" + "fmt" + "hash" + "hash/crc32" + "io" + + "github.com/aws/aws-sdk-go/aws" +) + +// Decoder provides decoding of an Event Stream messages. +type Decoder struct { + r io.Reader + logger aws.Logger +} + +// NewDecoder initializes and returns a Decoder for decoding event +// stream messages from the reader provided. +func NewDecoder(r io.Reader) *Decoder { + return &Decoder{ + r: r, + } +} + +// Decode attempts to decode a single message from the event stream reader. +// Will return the event stream message, or error if Decode fails to read +// the message from the stream. +func (d *Decoder) Decode(payloadBuf []byte) (m Message, err error) { + reader := d.r + if d.logger != nil { + debugMsgBuf := bytes.NewBuffer(nil) + reader = io.TeeReader(reader, debugMsgBuf) + defer func() { + logMessageDecode(d.logger, debugMsgBuf, m, err) + }() + } + + crc := crc32.New(crc32IEEETable) + hashReader := io.TeeReader(reader, crc) + + prelude, err := decodePrelude(hashReader, crc) + if err != nil { + return Message{}, err + } + + if prelude.HeadersLen > 0 { + lr := io.LimitReader(hashReader, int64(prelude.HeadersLen)) + m.Headers, err = decodeHeaders(lr) + if err != nil { + return Message{}, err + } + } + + if payloadLen := prelude.PayloadLen(); payloadLen > 0 { + buf, err := decodePayload(payloadBuf, io.LimitReader(hashReader, int64(payloadLen))) + if err != nil { + return Message{}, err + } + m.Payload = buf + } + + msgCRC := crc.Sum32() + if err := validateCRC(reader, msgCRC); err != nil { + return Message{}, err + } + + return m, nil +} + +// UseLogger specifies the Logger that that the decoder should use to log the +// message decode to. +func (d *Decoder) UseLogger(logger aws.Logger) { + d.logger = logger +} + +func logMessageDecode(logger aws.Logger, msgBuf *bytes.Buffer, msg Message, decodeErr error) { + w := bytes.NewBuffer(nil) + defer func() { logger.Log(w.String()) }() + + fmt.Fprintf(w, "Raw message:\n%s\n", + hex.Dump(msgBuf.Bytes())) + + if decodeErr != nil { + fmt.Fprintf(w, "Decode error: %v\n", decodeErr) + return + } + + rawMsg, err := msg.rawMessage() + if err != nil { + fmt.Fprintf(w, "failed to create raw message, %v\n", err) + return + } + + decodedMsg := decodedMessage{ + rawMessage: rawMsg, + Headers: decodedHeaders(msg.Headers), + } + + fmt.Fprintf(w, "Decoded message:\n") + encoder := json.NewEncoder(w) + if err := encoder.Encode(decodedMsg); err != nil { + fmt.Fprintf(w, "failed to generate decoded message, %v\n", err) + } +} + +func decodePrelude(r io.Reader, crc hash.Hash32) (messagePrelude, error) { + var p messagePrelude + + var err error + p.Length, err = decodeUint32(r) + if err != nil { + return messagePrelude{}, err + } + + p.HeadersLen, err = decodeUint32(r) + if err != nil { + return messagePrelude{}, err + } + + if err := p.ValidateLens(); err != nil { + return messagePrelude{}, err + } + + preludeCRC := crc.Sum32() + if err := validateCRC(r, preludeCRC); err != nil { + return messagePrelude{}, err + } + + p.PreludeCRC = preludeCRC + + return p, nil +} + +func decodePayload(buf []byte, r io.Reader) ([]byte, error) { + w := bytes.NewBuffer(buf[0:0]) + + _, err := io.Copy(w, r) + return w.Bytes(), err +} + +func decodeUint8(r io.Reader) (uint8, error) { + type byteReader interface { + ReadByte() (byte, error) + } + + if br, ok := r.(byteReader); ok { + v, err := br.ReadByte() + return uint8(v), err + } + + var b [1]byte + _, err := io.ReadFull(r, b[:]) + return uint8(b[0]), err +} +func decodeUint16(r io.Reader) (uint16, error) { + var b [2]byte + bs := b[:] + _, err := io.ReadFull(r, bs) + if err != nil { + return 0, err + } + return binary.BigEndian.Uint16(bs), nil +} +func decodeUint32(r io.Reader) (uint32, error) { + var b [4]byte + bs := b[:] + _, err := io.ReadFull(r, bs) + if err != nil { + return 0, err + } + return binary.BigEndian.Uint32(bs), nil +} +func decodeUint64(r io.Reader) (uint64, error) { + var b [8]byte + bs := b[:] + _, err := io.ReadFull(r, bs) + if err != nil { + return 0, err + } + return binary.BigEndian.Uint64(bs), nil +} + +func validateCRC(r io.Reader, expect uint32) error { + msgCRC, err := decodeUint32(r) + if err != nil { + return err + } + + if msgCRC != expect { + return ChecksumError{} + } + + return nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/encode.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/encode.go new file mode 100644 index 0000000..150a609 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/encode.go @@ -0,0 +1,114 @@ +package eventstream + +import ( + "bytes" + "encoding/binary" + "hash" + "hash/crc32" + "io" +) + +// Encoder provides EventStream message encoding. +type Encoder struct { + w io.Writer + + headersBuf *bytes.Buffer +} + +// NewEncoder initializes and returns an Encoder to encode Event Stream +// messages to an io.Writer. +func NewEncoder(w io.Writer) *Encoder { + return &Encoder{ + w: w, + headersBuf: bytes.NewBuffer(nil), + } +} + +// Encode encodes a single EventStream message to the io.Writer the Encoder +// was created with. An error is returned if writing the message fails. +func (e *Encoder) Encode(msg Message) error { + e.headersBuf.Reset() + + err := encodeHeaders(e.headersBuf, msg.Headers) + if err != nil { + return err + } + + crc := crc32.New(crc32IEEETable) + hashWriter := io.MultiWriter(e.w, crc) + + headersLen := uint32(e.headersBuf.Len()) + payloadLen := uint32(len(msg.Payload)) + + if err := encodePrelude(hashWriter, crc, headersLen, payloadLen); err != nil { + return err + } + + if headersLen > 0 { + if _, err := io.Copy(hashWriter, e.headersBuf); err != nil { + return err + } + } + + if payloadLen > 0 { + if _, err := hashWriter.Write(msg.Payload); err != nil { + return err + } + } + + msgCRC := crc.Sum32() + return binary.Write(e.w, binary.BigEndian, msgCRC) +} + +func encodePrelude(w io.Writer, crc hash.Hash32, headersLen, payloadLen uint32) error { + p := messagePrelude{ + Length: minMsgLen + headersLen + payloadLen, + HeadersLen: headersLen, + } + if err := p.ValidateLens(); err != nil { + return err + } + + err := binaryWriteFields(w, binary.BigEndian, + p.Length, + p.HeadersLen, + ) + if err != nil { + return err + } + + p.PreludeCRC = crc.Sum32() + err = binary.Write(w, binary.BigEndian, p.PreludeCRC) + if err != nil { + return err + } + + return nil +} + +func encodeHeaders(w io.Writer, headers Headers) error { + for _, h := range headers { + hn := headerName{ + Len: uint8(len(h.Name)), + } + copy(hn.Name[:hn.Len], h.Name) + if err := hn.encode(w); err != nil { + return err + } + + if err := h.Value.encode(w); err != nil { + return err + } + } + + return nil +} + +func binaryWriteFields(w io.Writer, order binary.ByteOrder, vs ...interface{}) error { + for _, v := range vs { + if err := binary.Write(w, order, v); err != nil { + return err + } + } + return nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/error.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/error.go new file mode 100644 index 0000000..5481ef3 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/error.go @@ -0,0 +1,23 @@ +package eventstream + +import "fmt" + +// LengthError provides the error for items being larger than a maximum length. +type LengthError struct { + Part string + Want int + Have int + Value interface{} +} + +func (e LengthError) Error() string { + return fmt.Sprintf("%s length invalid, %d/%d, %v", + e.Part, e.Want, e.Have, e.Value) +} + +// ChecksumError provides the error for message checksum invalidation errors. +type ChecksumError struct{} + +func (e ChecksumError) Error() string { + return "message checksum mismatch" +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/api.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/api.go new file mode 100644 index 0000000..97937c8 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/api.go @@ -0,0 +1,196 @@ +package eventstreamapi + +import ( + "fmt" + "io" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/private/protocol" + "github.com/aws/aws-sdk-go/private/protocol/eventstream" +) + +// Unmarshaler provides the interface for unmarshaling a EventStream +// message into a SDK type. +type Unmarshaler interface { + UnmarshalEvent(protocol.PayloadUnmarshaler, eventstream.Message) error +} + +// EventStream headers with specific meaning to async API functionality. +const ( + MessageTypeHeader = `:message-type` // Identifies type of message. + EventMessageType = `event` + ErrorMessageType = `error` + ExceptionMessageType = `exception` + + // Message Events + EventTypeHeader = `:event-type` // Identifies message event type e.g. "Stats". + + // Message Error + ErrorCodeHeader = `:error-code` + ErrorMessageHeader = `:error-message` + + // Message Exception + ExceptionTypeHeader = `:exception-type` +) + +// EventReader provides reading from the EventStream of an reader. +type EventReader struct { + reader io.ReadCloser + decoder *eventstream.Decoder + + unmarshalerForEventType func(string) (Unmarshaler, error) + payloadUnmarshaler protocol.PayloadUnmarshaler + + payloadBuf []byte +} + +// NewEventReader returns a EventReader built from the reader and unmarshaler +// provided. Use ReadStream method to start reading from the EventStream. +func NewEventReader( + reader io.ReadCloser, + payloadUnmarshaler protocol.PayloadUnmarshaler, + unmarshalerForEventType func(string) (Unmarshaler, error), +) *EventReader { + return &EventReader{ + reader: reader, + decoder: eventstream.NewDecoder(reader), + payloadUnmarshaler: payloadUnmarshaler, + unmarshalerForEventType: unmarshalerForEventType, + payloadBuf: make([]byte, 10*1024), + } +} + +// UseLogger instructs the EventReader to use the logger and log level +// specified. +func (r *EventReader) UseLogger(logger aws.Logger, logLevel aws.LogLevelType) { + if logger != nil && logLevel.Matches(aws.LogDebugWithEventStreamBody) { + r.decoder.UseLogger(logger) + } +} + +// ReadEvent attempts to read a message from the EventStream and return the +// unmarshaled event value that the message is for. +// +// For EventStream API errors check if the returned error satisfies the +// awserr.Error interface to get the error's Code and Message components. +// +// EventUnmarshalers called with EventStream messages must take copies of the +// message's Payload. The payload will is reused between events read. +func (r *EventReader) ReadEvent() (event interface{}, err error) { + msg, err := r.decoder.Decode(r.payloadBuf) + if err != nil { + return nil, err + } + defer func() { + // Reclaim payload buffer for next message read. + r.payloadBuf = msg.Payload[0:0] + }() + + typ, err := GetHeaderString(msg, MessageTypeHeader) + if err != nil { + return nil, err + } + + switch typ { + case EventMessageType: + return r.unmarshalEventMessage(msg) + case ExceptionMessageType: + err = r.unmarshalEventException(msg) + return nil, err + case ErrorMessageType: + return nil, r.unmarshalErrorMessage(msg) + default: + return nil, fmt.Errorf("unknown eventstream message type, %v", typ) + } +} + +func (r *EventReader) unmarshalEventMessage( + msg eventstream.Message, +) (event interface{}, err error) { + eventType, err := GetHeaderString(msg, EventTypeHeader) + if err != nil { + return nil, err + } + + ev, err := r.unmarshalerForEventType(eventType) + if err != nil { + return nil, err + } + + err = ev.UnmarshalEvent(r.payloadUnmarshaler, msg) + if err != nil { + return nil, err + } + + return ev, nil +} + +func (r *EventReader) unmarshalEventException( + msg eventstream.Message, +) (err error) { + eventType, err := GetHeaderString(msg, ExceptionTypeHeader) + if err != nil { + return err + } + + ev, err := r.unmarshalerForEventType(eventType) + if err != nil { + return err + } + + err = ev.UnmarshalEvent(r.payloadUnmarshaler, msg) + if err != nil { + return err + } + + var ok bool + err, ok = ev.(error) + if !ok { + err = messageError{ + code: "SerializationError", + msg: fmt.Sprintf( + "event stream exception %s mapped to non-error %T, %v", + eventType, ev, ev, + ), + } + } + + return err +} + +func (r *EventReader) unmarshalErrorMessage(msg eventstream.Message) (err error) { + var msgErr messageError + + msgErr.code, err = GetHeaderString(msg, ErrorCodeHeader) + if err != nil { + return err + } + + msgErr.msg, err = GetHeaderString(msg, ErrorMessageHeader) + if err != nil { + return err + } + + return msgErr +} + +// Close closes the EventReader's EventStream reader. +func (r *EventReader) Close() error { + return r.reader.Close() +} + +// GetHeaderString returns the value of the header as a string. If the header +// is not set or the value is not a string an error will be returned. +func GetHeaderString(msg eventstream.Message, headerName string) (string, error) { + headerVal := msg.Headers.Get(headerName) + if headerVal == nil { + return "", fmt.Errorf("error header %s not present", headerName) + } + + v, ok := headerVal.Get().(string) + if !ok { + return "", fmt.Errorf("error header value is not a string, %T", headerVal) + } + + return v, nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/error.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/error.go new file mode 100644 index 0000000..5ea5a98 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/error.go @@ -0,0 +1,24 @@ +package eventstreamapi + +import "fmt" + +type messageError struct { + code string + msg string +} + +func (e messageError) Code() string { + return e.code +} + +func (e messageError) Message() string { + return e.msg +} + +func (e messageError) Error() string { + return fmt.Sprintf("%s: %s", e.code, e.msg) +} + +func (e messageError) OrigErr() error { + return nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/header.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/header.go new file mode 100644 index 0000000..3b44dde --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/header.go @@ -0,0 +1,166 @@ +package eventstream + +import ( + "encoding/binary" + "fmt" + "io" +) + +// Headers are a collection of EventStream header values. +type Headers []Header + +// Header is a single EventStream Key Value header pair. +type Header struct { + Name string + Value Value +} + +// Set associates the name with a value. If the header name already exists in +// the Headers the value will be replaced with the new one. +func (hs *Headers) Set(name string, value Value) { + var i int + for ; i < len(*hs); i++ { + if (*hs)[i].Name == name { + (*hs)[i].Value = value + return + } + } + + *hs = append(*hs, Header{ + Name: name, Value: value, + }) +} + +// Get returns the Value associated with the header. Nil is returned if the +// value does not exist. +func (hs Headers) Get(name string) Value { + for i := 0; i < len(hs); i++ { + if h := hs[i]; h.Name == name { + return h.Value + } + } + return nil +} + +// Del deletes the value in the Headers if it exists. +func (hs *Headers) Del(name string) { + for i := 0; i < len(*hs); i++ { + if (*hs)[i].Name == name { + copy((*hs)[i:], (*hs)[i+1:]) + (*hs) = (*hs)[:len(*hs)-1] + } + } +} + +func decodeHeaders(r io.Reader) (Headers, error) { + hs := Headers{} + + for { + name, err := decodeHeaderName(r) + if err != nil { + if err == io.EOF { + // EOF while getting header name means no more headers + break + } + return nil, err + } + + value, err := decodeHeaderValue(r) + if err != nil { + return nil, err + } + + hs.Set(name, value) + } + + return hs, nil +} + +func decodeHeaderName(r io.Reader) (string, error) { + var n headerName + + var err error + n.Len, err = decodeUint8(r) + if err != nil { + return "", err + } + + name := n.Name[:n.Len] + if _, err := io.ReadFull(r, name); err != nil { + return "", err + } + + return string(name), nil +} + +func decodeHeaderValue(r io.Reader) (Value, error) { + var raw rawValue + + typ, err := decodeUint8(r) + if err != nil { + return nil, err + } + raw.Type = valueType(typ) + + var v Value + + switch raw.Type { + case trueValueType: + v = BoolValue(true) + case falseValueType: + v = BoolValue(false) + case int8ValueType: + var tv Int8Value + err = tv.decode(r) + v = tv + case int16ValueType: + var tv Int16Value + err = tv.decode(r) + v = tv + case int32ValueType: + var tv Int32Value + err = tv.decode(r) + v = tv + case int64ValueType: + var tv Int64Value + err = tv.decode(r) + v = tv + case bytesValueType: + var tv BytesValue + err = tv.decode(r) + v = tv + case stringValueType: + var tv StringValue + err = tv.decode(r) + v = tv + case timestampValueType: + var tv TimestampValue + err = tv.decode(r) + v = tv + case uuidValueType: + var tv UUIDValue + err = tv.decode(r) + v = tv + default: + panic(fmt.Sprintf("unknown value type %d", raw.Type)) + } + + // Error could be EOF, let caller deal with it + return v, err +} + +const maxHeaderNameLen = 255 + +type headerName struct { + Len uint8 + Name [maxHeaderNameLen]byte +} + +func (v headerName) encode(w io.Writer) error { + if err := binary.Write(w, binary.BigEndian, v.Len); err != nil { + return err + } + + _, err := w.Write(v.Name[:v.Len]) + return err +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/header_value.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/header_value.go new file mode 100644 index 0000000..e3fc076 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/header_value.go @@ -0,0 +1,501 @@ +package eventstream + +import ( + "encoding/base64" + "encoding/binary" + "fmt" + "io" + "strconv" + "time" +) + +const maxHeaderValueLen = 1<<15 - 1 // 2^15-1 or 32KB - 1 + +// valueType is the EventStream header value type. +type valueType uint8 + +// Header value types +const ( + trueValueType valueType = iota + falseValueType + int8ValueType // Byte + int16ValueType // Short + int32ValueType // Integer + int64ValueType // Long + bytesValueType + stringValueType + timestampValueType + uuidValueType +) + +func (t valueType) String() string { + switch t { + case trueValueType: + return "bool" + case falseValueType: + return "bool" + case int8ValueType: + return "int8" + case int16ValueType: + return "int16" + case int32ValueType: + return "int32" + case int64ValueType: + return "int64" + case bytesValueType: + return "byte_array" + case stringValueType: + return "string" + case timestampValueType: + return "timestamp" + case uuidValueType: + return "uuid" + default: + return fmt.Sprintf("unknown value type %d", uint8(t)) + } +} + +type rawValue struct { + Type valueType + Len uint16 // Only set for variable length slices + Value []byte // byte representation of value, BigEndian encoding. +} + +func (r rawValue) encodeScalar(w io.Writer, v interface{}) error { + return binaryWriteFields(w, binary.BigEndian, + r.Type, + v, + ) +} + +func (r rawValue) encodeFixedSlice(w io.Writer, v []byte) error { + binary.Write(w, binary.BigEndian, r.Type) + + _, err := w.Write(v) + return err +} + +func (r rawValue) encodeBytes(w io.Writer, v []byte) error { + if len(v) > maxHeaderValueLen { + return LengthError{ + Part: "header value", + Want: maxHeaderValueLen, Have: len(v), + Value: v, + } + } + r.Len = uint16(len(v)) + + err := binaryWriteFields(w, binary.BigEndian, + r.Type, + r.Len, + ) + if err != nil { + return err + } + + _, err = w.Write(v) + return err +} + +func (r rawValue) encodeString(w io.Writer, v string) error { + if len(v) > maxHeaderValueLen { + return LengthError{ + Part: "header value", + Want: maxHeaderValueLen, Have: len(v), + Value: v, + } + } + r.Len = uint16(len(v)) + + type stringWriter interface { + WriteString(string) (int, error) + } + + err := binaryWriteFields(w, binary.BigEndian, + r.Type, + r.Len, + ) + if err != nil { + return err + } + + if sw, ok := w.(stringWriter); ok { + _, err = sw.WriteString(v) + } else { + _, err = w.Write([]byte(v)) + } + + return err +} + +func decodeFixedBytesValue(r io.Reader, buf []byte) error { + _, err := io.ReadFull(r, buf) + return err +} + +func decodeBytesValue(r io.Reader) ([]byte, error) { + var raw rawValue + var err error + raw.Len, err = decodeUint16(r) + if err != nil { + return nil, err + } + + buf := make([]byte, raw.Len) + _, err = io.ReadFull(r, buf) + if err != nil { + return nil, err + } + + return buf, nil +} + +func decodeStringValue(r io.Reader) (string, error) { + v, err := decodeBytesValue(r) + return string(v), err +} + +// Value represents the abstract header value. +type Value interface { + Get() interface{} + String() string + valueType() valueType + encode(io.Writer) error +} + +// An BoolValue provides eventstream encoding, and representation +// of a Go bool value. +type BoolValue bool + +// Get returns the underlying type +func (v BoolValue) Get() interface{} { + return bool(v) +} + +// valueType returns the EventStream header value type value. +func (v BoolValue) valueType() valueType { + if v { + return trueValueType + } + return falseValueType +} + +func (v BoolValue) String() string { + return strconv.FormatBool(bool(v)) +} + +// encode encodes the BoolValue into an eventstream binary value +// representation. +func (v BoolValue) encode(w io.Writer) error { + return binary.Write(w, binary.BigEndian, v.valueType()) +} + +// An Int8Value provides eventstream encoding, and representation of a Go +// int8 value. +type Int8Value int8 + +// Get returns the underlying value. +func (v Int8Value) Get() interface{} { + return int8(v) +} + +// valueType returns the EventStream header value type value. +func (Int8Value) valueType() valueType { + return int8ValueType +} + +func (v Int8Value) String() string { + return fmt.Sprintf("0x%02x", int8(v)) +} + +// encode encodes the Int8Value into an eventstream binary value +// representation. +func (v Int8Value) encode(w io.Writer) error { + raw := rawValue{ + Type: v.valueType(), + } + + return raw.encodeScalar(w, v) +} + +func (v *Int8Value) decode(r io.Reader) error { + n, err := decodeUint8(r) + if err != nil { + return err + } + + *v = Int8Value(n) + return nil +} + +// An Int16Value provides eventstream encoding, and representation of a Go +// int16 value. +type Int16Value int16 + +// Get returns the underlying value. +func (v Int16Value) Get() interface{} { + return int16(v) +} + +// valueType returns the EventStream header value type value. +func (Int16Value) valueType() valueType { + return int16ValueType +} + +func (v Int16Value) String() string { + return fmt.Sprintf("0x%04x", int16(v)) +} + +// encode encodes the Int16Value into an eventstream binary value +// representation. +func (v Int16Value) encode(w io.Writer) error { + raw := rawValue{ + Type: v.valueType(), + } + return raw.encodeScalar(w, v) +} + +func (v *Int16Value) decode(r io.Reader) error { + n, err := decodeUint16(r) + if err != nil { + return err + } + + *v = Int16Value(n) + return nil +} + +// An Int32Value provides eventstream encoding, and representation of a Go +// int32 value. +type Int32Value int32 + +// Get returns the underlying value. +func (v Int32Value) Get() interface{} { + return int32(v) +} + +// valueType returns the EventStream header value type value. +func (Int32Value) valueType() valueType { + return int32ValueType +} + +func (v Int32Value) String() string { + return fmt.Sprintf("0x%08x", int32(v)) +} + +// encode encodes the Int32Value into an eventstream binary value +// representation. +func (v Int32Value) encode(w io.Writer) error { + raw := rawValue{ + Type: v.valueType(), + } + return raw.encodeScalar(w, v) +} + +func (v *Int32Value) decode(r io.Reader) error { + n, err := decodeUint32(r) + if err != nil { + return err + } + + *v = Int32Value(n) + return nil +} + +// An Int64Value provides eventstream encoding, and representation of a Go +// int64 value. +type Int64Value int64 + +// Get returns the underlying value. +func (v Int64Value) Get() interface{} { + return int64(v) +} + +// valueType returns the EventStream header value type value. +func (Int64Value) valueType() valueType { + return int64ValueType +} + +func (v Int64Value) String() string { + return fmt.Sprintf("0x%016x", int64(v)) +} + +// encode encodes the Int64Value into an eventstream binary value +// representation. +func (v Int64Value) encode(w io.Writer) error { + raw := rawValue{ + Type: v.valueType(), + } + return raw.encodeScalar(w, v) +} + +func (v *Int64Value) decode(r io.Reader) error { + n, err := decodeUint64(r) + if err != nil { + return err + } + + *v = Int64Value(n) + return nil +} + +// An BytesValue provides eventstream encoding, and representation of a Go +// byte slice. +type BytesValue []byte + +// Get returns the underlying value. +func (v BytesValue) Get() interface{} { + return []byte(v) +} + +// valueType returns the EventStream header value type value. +func (BytesValue) valueType() valueType { + return bytesValueType +} + +func (v BytesValue) String() string { + return base64.StdEncoding.EncodeToString([]byte(v)) +} + +// encode encodes the BytesValue into an eventstream binary value +// representation. +func (v BytesValue) encode(w io.Writer) error { + raw := rawValue{ + Type: v.valueType(), + } + + return raw.encodeBytes(w, []byte(v)) +} + +func (v *BytesValue) decode(r io.Reader) error { + buf, err := decodeBytesValue(r) + if err != nil { + return err + } + + *v = BytesValue(buf) + return nil +} + +// An StringValue provides eventstream encoding, and representation of a Go +// string. +type StringValue string + +// Get returns the underlying value. +func (v StringValue) Get() interface{} { + return string(v) +} + +// valueType returns the EventStream header value type value. +func (StringValue) valueType() valueType { + return stringValueType +} + +func (v StringValue) String() string { + return string(v) +} + +// encode encodes the StringValue into an eventstream binary value +// representation. +func (v StringValue) encode(w io.Writer) error { + raw := rawValue{ + Type: v.valueType(), + } + + return raw.encodeString(w, string(v)) +} + +func (v *StringValue) decode(r io.Reader) error { + s, err := decodeStringValue(r) + if err != nil { + return err + } + + *v = StringValue(s) + return nil +} + +// An TimestampValue provides eventstream encoding, and representation of a Go +// timestamp. +type TimestampValue time.Time + +// Get returns the underlying value. +func (v TimestampValue) Get() interface{} { + return time.Time(v) +} + +// valueType returns the EventStream header value type value. +func (TimestampValue) valueType() valueType { + return timestampValueType +} + +func (v TimestampValue) epochMilli() int64 { + nano := time.Time(v).UnixNano() + msec := nano / int64(time.Millisecond) + return msec +} + +func (v TimestampValue) String() string { + msec := v.epochMilli() + return strconv.FormatInt(msec, 10) +} + +// encode encodes the TimestampValue into an eventstream binary value +// representation. +func (v TimestampValue) encode(w io.Writer) error { + raw := rawValue{ + Type: v.valueType(), + } + + msec := v.epochMilli() + return raw.encodeScalar(w, msec) +} + +func (v *TimestampValue) decode(r io.Reader) error { + n, err := decodeUint64(r) + if err != nil { + return err + } + + *v = TimestampValue(timeFromEpochMilli(int64(n))) + return nil +} + +func timeFromEpochMilli(t int64) time.Time { + secs := t / 1e3 + msec := t % 1e3 + return time.Unix(secs, msec*int64(time.Millisecond)).UTC() +} + +// An UUIDValue provides eventstream encoding, and representation of a UUID +// value. +type UUIDValue [16]byte + +// Get returns the underlying value. +func (v UUIDValue) Get() interface{} { + return v[:] +} + +// valueType returns the EventStream header value type value. +func (UUIDValue) valueType() valueType { + return uuidValueType +} + +func (v UUIDValue) String() string { + return fmt.Sprintf(`%X-%X-%X-%X-%X`, v[0:4], v[4:6], v[6:8], v[8:10], v[10:]) +} + +// encode encodes the UUIDValue into an eventstream binary value +// representation. +func (v UUIDValue) encode(w io.Writer) error { + raw := rawValue{ + Type: v.valueType(), + } + + return raw.encodeFixedSlice(w, v[:]) +} + +func (v *UUIDValue) decode(r io.Reader) error { + tv := (*v)[:] + return decodeFixedBytesValue(r, tv) +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/message.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/message.go new file mode 100644 index 0000000..2dc012a --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/message.go @@ -0,0 +1,103 @@ +package eventstream + +import ( + "bytes" + "encoding/binary" + "hash/crc32" +) + +const preludeLen = 8 +const preludeCRCLen = 4 +const msgCRCLen = 4 +const minMsgLen = preludeLen + preludeCRCLen + msgCRCLen +const maxPayloadLen = 1024 * 1024 * 16 // 16MB +const maxHeadersLen = 1024 * 128 // 128KB +const maxMsgLen = minMsgLen + maxHeadersLen + maxPayloadLen + +var crc32IEEETable = crc32.MakeTable(crc32.IEEE) + +// A Message provides the eventstream message representation. +type Message struct { + Headers Headers + Payload []byte +} + +func (m *Message) rawMessage() (rawMessage, error) { + var raw rawMessage + + if len(m.Headers) > 0 { + var headers bytes.Buffer + if err := encodeHeaders(&headers, m.Headers); err != nil { + return rawMessage{}, err + } + raw.Headers = headers.Bytes() + raw.HeadersLen = uint32(len(raw.Headers)) + } + + raw.Length = raw.HeadersLen + uint32(len(m.Payload)) + minMsgLen + + hash := crc32.New(crc32IEEETable) + binaryWriteFields(hash, binary.BigEndian, raw.Length, raw.HeadersLen) + raw.PreludeCRC = hash.Sum32() + + binaryWriteFields(hash, binary.BigEndian, raw.PreludeCRC) + + if raw.HeadersLen > 0 { + hash.Write(raw.Headers) + } + + // Read payload bytes and update hash for it as well. + if len(m.Payload) > 0 { + raw.Payload = m.Payload + hash.Write(raw.Payload) + } + + raw.CRC = hash.Sum32() + + return raw, nil +} + +type messagePrelude struct { + Length uint32 + HeadersLen uint32 + PreludeCRC uint32 +} + +func (p messagePrelude) PayloadLen() uint32 { + return p.Length - p.HeadersLen - minMsgLen +} + +func (p messagePrelude) ValidateLens() error { + if p.Length == 0 || p.Length > maxMsgLen { + return LengthError{ + Part: "message prelude", + Want: maxMsgLen, + Have: int(p.Length), + } + } + if p.HeadersLen > maxHeadersLen { + return LengthError{ + Part: "message headers", + Want: maxHeadersLen, + Have: int(p.HeadersLen), + } + } + if payloadLen := p.PayloadLen(); payloadLen > maxPayloadLen { + return LengthError{ + Part: "message payload", + Want: maxPayloadLen, + Have: int(payloadLen), + } + } + + return nil +} + +type rawMessage struct { + messagePrelude + + Headers []byte + Payload []byte + + CRC uint32 +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/host.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/host.go new file mode 100644 index 0000000..d7d42db --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/host.go @@ -0,0 +1,68 @@ +package protocol + +import ( + "strings" + + "github.com/aws/aws-sdk-go/aws/request" +) + +// ValidateEndpointHostHandler is a request handler that will validate the +// request endpoint's hosts is a valid RFC 3986 host. +var ValidateEndpointHostHandler = request.NamedHandler{ + Name: "awssdk.protocol.ValidateEndpointHostHandler", + Fn: func(r *request.Request) { + err := ValidateEndpointHost(r.Operation.Name, r.HTTPRequest.URL.Host) + if err != nil { + r.Error = err + } + }, +} + +// ValidateEndpointHost validates that the host string passed in is a valid RFC +// 3986 host. Returns error if the host is not valid. +func ValidateEndpointHost(opName, host string) error { + paramErrs := request.ErrInvalidParams{Context: opName} + labels := strings.Split(host, ".") + + for i, label := range labels { + if i == len(labels)-1 && len(label) == 0 { + // Allow trailing dot for FQDN hosts. + continue + } + + if !ValidHostLabel(label) { + paramErrs.Add(request.NewErrParamFormat( + "endpoint host label", "[a-zA-Z0-9-]{1,63}", label)) + } + } + + if len(host) > 255 { + paramErrs.Add(request.NewErrParamMaxLen( + "endpoint host", 255, host, + )) + } + + if paramErrs.Len() > 0 { + return paramErrs + } + return nil +} + +// ValidHostLabel returns if the label is a valid RFC 3986 host label. +func ValidHostLabel(label string) bool { + if l := len(label); l == 0 || l > 63 { + return false + } + for _, r := range label { + switch { + case r >= '0' && r <= '9': + case r >= 'A' && r <= 'Z': + case r >= 'a' && r <= 'z': + case r == '-': + default: + return false + } + } + + return true +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/host_prefix.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/host_prefix.go new file mode 100644 index 0000000..915b0fc --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/host_prefix.go @@ -0,0 +1,54 @@ +package protocol + +import ( + "strings" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/request" +) + +// HostPrefixHandlerName is the handler name for the host prefix request +// handler. +const HostPrefixHandlerName = "awssdk.endpoint.HostPrefixHandler" + +// NewHostPrefixHandler constructs a build handler +func NewHostPrefixHandler(prefix string, labelsFn func() map[string]string) request.NamedHandler { + builder := HostPrefixBuilder{ + Prefix: prefix, + LabelsFn: labelsFn, + } + + return request.NamedHandler{ + Name: HostPrefixHandlerName, + Fn: builder.Build, + } +} + +// HostPrefixBuilder provides the request handler to expand and prepend +// the host prefix into the operation's request endpoint host. +type HostPrefixBuilder struct { + Prefix string + LabelsFn func() map[string]string +} + +// Build updates the passed in Request with the HostPrefix template expanded. +func (h HostPrefixBuilder) Build(r *request.Request) { + if aws.BoolValue(r.Config.DisableEndpointHostPrefix) { + return + } + + var labels map[string]string + if h.LabelsFn != nil { + labels = h.LabelsFn() + } + + prefix := h.Prefix + for name, value := range labels { + prefix = strings.Replace(prefix, "{"+name+"}", value, -1) + } + + r.HTTPRequest.URL.Host = prefix + r.HTTPRequest.URL.Host + if len(r.HTTPRequest.Host) > 0 { + r.HTTPRequest.Host = prefix + r.HTTPRequest.Host + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/idempotency.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/idempotency.go new file mode 100644 index 0000000..53831df --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/idempotency.go @@ -0,0 +1,75 @@ +package protocol + +import ( + "crypto/rand" + "fmt" + "reflect" +) + +// RandReader is the random reader the protocol package will use to read +// random bytes from. This is exported for testing, and should not be used. +var RandReader = rand.Reader + +const idempotencyTokenFillTag = `idempotencyToken` + +// CanSetIdempotencyToken returns true if the struct field should be +// automatically populated with a Idempotency token. +// +// Only *string and string type fields that are tagged with idempotencyToken +// which are not already set can be auto filled. +func CanSetIdempotencyToken(v reflect.Value, f reflect.StructField) bool { + switch u := v.Interface().(type) { + // To auto fill an Idempotency token the field must be a string, + // tagged for auto fill, and have a zero value. + case *string: + return u == nil && len(f.Tag.Get(idempotencyTokenFillTag)) != 0 + case string: + return len(u) == 0 && len(f.Tag.Get(idempotencyTokenFillTag)) != 0 + } + + return false +} + +// GetIdempotencyToken returns a randomly generated idempotency token. +func GetIdempotencyToken() string { + b := make([]byte, 16) + RandReader.Read(b) + + return UUIDVersion4(b) +} + +// SetIdempotencyToken will set the value provided with a Idempotency Token. +// Given that the value can be set. Will panic if value is not setable. +func SetIdempotencyToken(v reflect.Value) { + if v.Kind() == reflect.Ptr { + if v.IsNil() && v.CanSet() { + v.Set(reflect.New(v.Type().Elem())) + } + v = v.Elem() + } + v = reflect.Indirect(v) + + if !v.CanSet() { + panic(fmt.Sprintf("unable to set idempotnecy token %v", v)) + } + + b := make([]byte, 16) + _, err := rand.Read(b) + if err != nil { + // TODO handle error + return + } + + v.Set(reflect.ValueOf(UUIDVersion4(b))) +} + +// UUIDVersion4 returns a Version 4 random UUID from the byte slice provided +func UUIDVersion4(u []byte) string { + // https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_4_.28random.29 + // 13th character is "4" + u[6] = (u[6] | 0x40) & 0x4F + // 17th character is "8", "9", "a", or "b" + u[8] = (u[8] | 0x80) & 0xBF + + return fmt.Sprintf(`%X-%X-%X-%X-%X`, u[0:4], u[4:6], u[6:8], u[8:10], u[10:]) +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/json/jsonutil/build.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/json/jsonutil/build.go new file mode 100644 index 0000000..864fb67 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/json/jsonutil/build.go @@ -0,0 +1,296 @@ +// Package jsonutil provides JSON serialization of AWS requests and responses. +package jsonutil + +import ( + "bytes" + "encoding/base64" + "encoding/json" + "fmt" + "math" + "reflect" + "sort" + "strconv" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/private/protocol" +) + +var timeType = reflect.ValueOf(time.Time{}).Type() +var byteSliceType = reflect.ValueOf([]byte{}).Type() + +// BuildJSON builds a JSON string for a given object v. +func BuildJSON(v interface{}) ([]byte, error) { + var buf bytes.Buffer + + err := buildAny(reflect.ValueOf(v), &buf, "") + return buf.Bytes(), err +} + +func buildAny(value reflect.Value, buf *bytes.Buffer, tag reflect.StructTag) error { + origVal := value + value = reflect.Indirect(value) + if !value.IsValid() { + return nil + } + + vtype := value.Type() + + t := tag.Get("type") + if t == "" { + switch vtype.Kind() { + case reflect.Struct: + // also it can't be a time object + if value.Type() != timeType { + t = "structure" + } + case reflect.Slice: + // also it can't be a byte slice + if _, ok := value.Interface().([]byte); !ok { + t = "list" + } + case reflect.Map: + // cannot be a JSONValue map + if _, ok := value.Interface().(aws.JSONValue); !ok { + t = "map" + } + } + } + + switch t { + case "structure": + if field, ok := vtype.FieldByName("_"); ok { + tag = field.Tag + } + return buildStruct(value, buf, tag) + case "list": + return buildList(value, buf, tag) + case "map": + return buildMap(value, buf, tag) + default: + return buildScalar(origVal, buf, tag) + } +} + +func buildStruct(value reflect.Value, buf *bytes.Buffer, tag reflect.StructTag) error { + if !value.IsValid() { + return nil + } + + // unwrap payloads + if payload := tag.Get("payload"); payload != "" { + field, _ := value.Type().FieldByName(payload) + tag = field.Tag + value = elemOf(value.FieldByName(payload)) + + if !value.IsValid() { + return nil + } + } + + buf.WriteByte('{') + + t := value.Type() + first := true + for i := 0; i < t.NumField(); i++ { + member := value.Field(i) + + // This allocates the most memory. + // Additionally, we cannot skip nil fields due to + // idempotency auto filling. + field := t.Field(i) + + if field.PkgPath != "" { + continue // ignore unexported fields + } + if field.Tag.Get("json") == "-" { + continue + } + if field.Tag.Get("location") != "" { + continue // ignore non-body elements + } + if field.Tag.Get("ignore") != "" { + continue + } + + if protocol.CanSetIdempotencyToken(member, field) { + token := protocol.GetIdempotencyToken() + member = reflect.ValueOf(&token) + } + + if (member.Kind() == reflect.Ptr || member.Kind() == reflect.Slice || member.Kind() == reflect.Map) && member.IsNil() { + continue // ignore unset fields + } + + if first { + first = false + } else { + buf.WriteByte(',') + } + + // figure out what this field is called + name := field.Name + if locName := field.Tag.Get("locationName"); locName != "" { + name = locName + } + + writeString(name, buf) + buf.WriteString(`:`) + + err := buildAny(member, buf, field.Tag) + if err != nil { + return err + } + + } + + buf.WriteString("}") + + return nil +} + +func buildList(value reflect.Value, buf *bytes.Buffer, tag reflect.StructTag) error { + buf.WriteString("[") + + for i := 0; i < value.Len(); i++ { + buildAny(value.Index(i), buf, "") + + if i < value.Len()-1 { + buf.WriteString(",") + } + } + + buf.WriteString("]") + + return nil +} + +type sortedValues []reflect.Value + +func (sv sortedValues) Len() int { return len(sv) } +func (sv sortedValues) Swap(i, j int) { sv[i], sv[j] = sv[j], sv[i] } +func (sv sortedValues) Less(i, j int) bool { return sv[i].String() < sv[j].String() } + +func buildMap(value reflect.Value, buf *bytes.Buffer, tag reflect.StructTag) error { + buf.WriteString("{") + + sv := sortedValues(value.MapKeys()) + sort.Sort(sv) + + for i, k := range sv { + if i > 0 { + buf.WriteByte(',') + } + + writeString(k.String(), buf) + buf.WriteString(`:`) + + buildAny(value.MapIndex(k), buf, "") + } + + buf.WriteString("}") + + return nil +} + +func buildScalar(v reflect.Value, buf *bytes.Buffer, tag reflect.StructTag) error { + // prevents allocation on the heap. + scratch := [64]byte{} + switch value := reflect.Indirect(v); value.Kind() { + case reflect.String: + writeString(value.String(), buf) + case reflect.Bool: + if value.Bool() { + buf.WriteString("true") + } else { + buf.WriteString("false") + } + case reflect.Int64: + buf.Write(strconv.AppendInt(scratch[:0], value.Int(), 10)) + case reflect.Float64: + f := value.Float() + if math.IsInf(f, 0) || math.IsNaN(f) { + return &json.UnsupportedValueError{Value: v, Str: strconv.FormatFloat(f, 'f', -1, 64)} + } + buf.Write(strconv.AppendFloat(scratch[:0], f, 'f', -1, 64)) + default: + switch converted := value.Interface().(type) { + case time.Time: + format := tag.Get("timestampFormat") + if len(format) == 0 { + format = protocol.UnixTimeFormatName + } + + ts := protocol.FormatTime(format, converted) + if format != protocol.UnixTimeFormatName { + ts = `"` + ts + `"` + } + + buf.WriteString(ts) + case []byte: + if !value.IsNil() { + buf.WriteByte('"') + if len(converted) < 1024 { + // for small buffers, using Encode directly is much faster. + dst := make([]byte, base64.StdEncoding.EncodedLen(len(converted))) + base64.StdEncoding.Encode(dst, converted) + buf.Write(dst) + } else { + // for large buffers, avoid unnecessary extra temporary + // buffer space. + enc := base64.NewEncoder(base64.StdEncoding, buf) + enc.Write(converted) + enc.Close() + } + buf.WriteByte('"') + } + case aws.JSONValue: + str, err := protocol.EncodeJSONValue(converted, protocol.QuotedEscape) + if err != nil { + return fmt.Errorf("unable to encode JSONValue, %v", err) + } + buf.WriteString(str) + default: + return fmt.Errorf("unsupported JSON value %v (%s)", value.Interface(), value.Type()) + } + } + return nil +} + +var hex = "0123456789abcdef" + +func writeString(s string, buf *bytes.Buffer) { + buf.WriteByte('"') + for i := 0; i < len(s); i++ { + if s[i] == '"' { + buf.WriteString(`\"`) + } else if s[i] == '\\' { + buf.WriteString(`\\`) + } else if s[i] == '\b' { + buf.WriteString(`\b`) + } else if s[i] == '\f' { + buf.WriteString(`\f`) + } else if s[i] == '\r' { + buf.WriteString(`\r`) + } else if s[i] == '\t' { + buf.WriteString(`\t`) + } else if s[i] == '\n' { + buf.WriteString(`\n`) + } else if s[i] < 32 { + buf.WriteString("\\u00") + buf.WriteByte(hex[s[i]>>4]) + buf.WriteByte(hex[s[i]&0xF]) + } else { + buf.WriteByte(s[i]) + } + } + buf.WriteByte('"') +} + +// Returns the reflection element of a value, if it is a pointer. +func elemOf(value reflect.Value) reflect.Value { + for value.Kind() == reflect.Ptr { + value = value.Elem() + } + return value +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/json/jsonutil/unmarshal.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/json/jsonutil/unmarshal.go new file mode 100644 index 0000000..ea0da79 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/json/jsonutil/unmarshal.go @@ -0,0 +1,250 @@ +package jsonutil + +import ( + "bytes" + "encoding/base64" + "encoding/json" + "fmt" + "io" + "reflect" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/private/protocol" +) + +// UnmarshalJSONError unmarshal's the reader's JSON document into the passed in +// type. The value to unmarshal the json document into must be a pointer to the +// type. +func UnmarshalJSONError(v interface{}, stream io.Reader) error { + var errBuf bytes.Buffer + body := io.TeeReader(stream, &errBuf) + + err := json.NewDecoder(body).Decode(v) + if err != nil { + msg := "failed decoding error message" + if err == io.EOF { + msg = "error message missing" + err = nil + } + return awserr.NewUnmarshalError(err, msg, errBuf.Bytes()) + } + + return nil +} + +// UnmarshalJSON reads a stream and unmarshals the results in object v. +func UnmarshalJSON(v interface{}, stream io.Reader) error { + var out interface{} + + err := json.NewDecoder(stream).Decode(&out) + if err == io.EOF { + return nil + } else if err != nil { + return err + } + + return unmarshalAny(reflect.ValueOf(v), out, "") +} + +func unmarshalAny(value reflect.Value, data interface{}, tag reflect.StructTag) error { + vtype := value.Type() + if vtype.Kind() == reflect.Ptr { + vtype = vtype.Elem() // check kind of actual element type + } + + t := tag.Get("type") + if t == "" { + switch vtype.Kind() { + case reflect.Struct: + // also it can't be a time object + if _, ok := value.Interface().(*time.Time); !ok { + t = "structure" + } + case reflect.Slice: + // also it can't be a byte slice + if _, ok := value.Interface().([]byte); !ok { + t = "list" + } + case reflect.Map: + // cannot be a JSONValue map + if _, ok := value.Interface().(aws.JSONValue); !ok { + t = "map" + } + } + } + + switch t { + case "structure": + if field, ok := vtype.FieldByName("_"); ok { + tag = field.Tag + } + return unmarshalStruct(value, data, tag) + case "list": + return unmarshalList(value, data, tag) + case "map": + return unmarshalMap(value, data, tag) + default: + return unmarshalScalar(value, data, tag) + } +} + +func unmarshalStruct(value reflect.Value, data interface{}, tag reflect.StructTag) error { + if data == nil { + return nil + } + mapData, ok := data.(map[string]interface{}) + if !ok { + return fmt.Errorf("JSON value is not a structure (%#v)", data) + } + + t := value.Type() + if value.Kind() == reflect.Ptr { + if value.IsNil() { // create the structure if it's nil + s := reflect.New(value.Type().Elem()) + value.Set(s) + value = s + } + + value = value.Elem() + t = t.Elem() + } + + // unwrap any payloads + if payload := tag.Get("payload"); payload != "" { + field, _ := t.FieldByName(payload) + return unmarshalAny(value.FieldByName(payload), data, field.Tag) + } + + for i := 0; i < t.NumField(); i++ { + field := t.Field(i) + if field.PkgPath != "" { + continue // ignore unexported fields + } + + // figure out what this field is called + name := field.Name + if locName := field.Tag.Get("locationName"); locName != "" { + name = locName + } + + member := value.FieldByIndex(field.Index) + err := unmarshalAny(member, mapData[name], field.Tag) + if err != nil { + return err + } + } + return nil +} + +func unmarshalList(value reflect.Value, data interface{}, tag reflect.StructTag) error { + if data == nil { + return nil + } + listData, ok := data.([]interface{}) + if !ok { + return fmt.Errorf("JSON value is not a list (%#v)", data) + } + + if value.IsNil() { + l := len(listData) + value.Set(reflect.MakeSlice(value.Type(), l, l)) + } + + for i, c := range listData { + err := unmarshalAny(value.Index(i), c, "") + if err != nil { + return err + } + } + + return nil +} + +func unmarshalMap(value reflect.Value, data interface{}, tag reflect.StructTag) error { + if data == nil { + return nil + } + mapData, ok := data.(map[string]interface{}) + if !ok { + return fmt.Errorf("JSON value is not a map (%#v)", data) + } + + if value.IsNil() { + value.Set(reflect.MakeMap(value.Type())) + } + + for k, v := range mapData { + kvalue := reflect.ValueOf(k) + vvalue := reflect.New(value.Type().Elem()).Elem() + + unmarshalAny(vvalue, v, "") + value.SetMapIndex(kvalue, vvalue) + } + + return nil +} + +func unmarshalScalar(value reflect.Value, data interface{}, tag reflect.StructTag) error { + + switch d := data.(type) { + case nil: + return nil // nothing to do here + case string: + switch value.Interface().(type) { + case *string: + value.Set(reflect.ValueOf(&d)) + case []byte: + b, err := base64.StdEncoding.DecodeString(d) + if err != nil { + return err + } + value.Set(reflect.ValueOf(b)) + case *time.Time: + format := tag.Get("timestampFormat") + if len(format) == 0 { + format = protocol.ISO8601TimeFormatName + } + + t, err := protocol.ParseTime(format, d) + if err != nil { + return err + } + value.Set(reflect.ValueOf(&t)) + case aws.JSONValue: + // No need to use escaping as the value is a non-quoted string. + v, err := protocol.DecodeJSONValue(d, protocol.NoEscape) + if err != nil { + return err + } + value.Set(reflect.ValueOf(v)) + default: + return fmt.Errorf("unsupported value: %v (%s)", value.Interface(), value.Type()) + } + case float64: + switch value.Interface().(type) { + case *int64: + di := int64(d) + value.Set(reflect.ValueOf(&di)) + case *float64: + value.Set(reflect.ValueOf(&d)) + case *time.Time: + // Time unmarshaled from a float64 can only be epoch seconds + t := time.Unix(int64(d), 0).UTC() + value.Set(reflect.ValueOf(&t)) + default: + return fmt.Errorf("unsupported value: %v (%s)", value.Interface(), value.Type()) + } + case bool: + switch value.Interface().(type) { + case *bool: + value.Set(reflect.ValueOf(&d)) + default: + return fmt.Errorf("unsupported value: %v (%s)", value.Interface(), value.Type()) + } + default: + return fmt.Errorf("unsupported JSON value (%v)", data) + } + return nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/jsonvalue.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/jsonvalue.go new file mode 100644 index 0000000..776d110 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/jsonvalue.go @@ -0,0 +1,76 @@ +package protocol + +import ( + "encoding/base64" + "encoding/json" + "fmt" + "strconv" + + "github.com/aws/aws-sdk-go/aws" +) + +// EscapeMode is the mode that should be use for escaping a value +type EscapeMode uint + +// The modes for escaping a value before it is marshaled, and unmarshaled. +const ( + NoEscape EscapeMode = iota + Base64Escape + QuotedEscape +) + +// EncodeJSONValue marshals the value into a JSON string, and optionally base64 +// encodes the string before returning it. +// +// Will panic if the escape mode is unknown. +func EncodeJSONValue(v aws.JSONValue, escape EscapeMode) (string, error) { + b, err := json.Marshal(v) + if err != nil { + return "", err + } + + switch escape { + case NoEscape: + return string(b), nil + case Base64Escape: + return base64.StdEncoding.EncodeToString(b), nil + case QuotedEscape: + return strconv.Quote(string(b)), nil + } + + panic(fmt.Sprintf("EncodeJSONValue called with unknown EscapeMode, %v", escape)) +} + +// DecodeJSONValue will attempt to decode the string input as a JSONValue. +// Optionally decoding base64 the value first before JSON unmarshaling. +// +// Will panic if the escape mode is unknown. +func DecodeJSONValue(v string, escape EscapeMode) (aws.JSONValue, error) { + var b []byte + var err error + + switch escape { + case NoEscape: + b = []byte(v) + case Base64Escape: + b, err = base64.StdEncoding.DecodeString(v) + case QuotedEscape: + var u string + u, err = strconv.Unquote(v) + b = []byte(u) + default: + panic(fmt.Sprintf("DecodeJSONValue called with unknown EscapeMode, %v", escape)) + } + + if err != nil { + return nil, err + } + + m := aws.JSONValue{} + err = json.Unmarshal(b, &m) + if err != nil { + return nil, err + } + + return m, nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/payload.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/payload.go new file mode 100644 index 0000000..e21614a --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/payload.go @@ -0,0 +1,81 @@ +package protocol + +import ( + "io" + "io/ioutil" + "net/http" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/client/metadata" + "github.com/aws/aws-sdk-go/aws/request" +) + +// PayloadUnmarshaler provides the interface for unmarshaling a payload's +// reader into a SDK shape. +type PayloadUnmarshaler interface { + UnmarshalPayload(io.Reader, interface{}) error +} + +// HandlerPayloadUnmarshal implements the PayloadUnmarshaler from a +// HandlerList. This provides the support for unmarshaling a payload reader to +// a shape without needing a SDK request first. +type HandlerPayloadUnmarshal struct { + Unmarshalers request.HandlerList +} + +// UnmarshalPayload unmarshals the io.Reader payload into the SDK shape using +// the Unmarshalers HandlerList provided. Returns an error if unable +// unmarshaling fails. +func (h HandlerPayloadUnmarshal) UnmarshalPayload(r io.Reader, v interface{}) error { + req := &request.Request{ + HTTPRequest: &http.Request{}, + HTTPResponse: &http.Response{ + StatusCode: 200, + Header: http.Header{}, + Body: ioutil.NopCloser(r), + }, + Data: v, + } + + h.Unmarshalers.Run(req) + + return req.Error +} + +// PayloadMarshaler provides the interface for marshaling a SDK shape into and +// io.Writer. +type PayloadMarshaler interface { + MarshalPayload(io.Writer, interface{}) error +} + +// HandlerPayloadMarshal implements the PayloadMarshaler from a HandlerList. +// This provides support for marshaling a SDK shape into an io.Writer without +// needing a SDK request first. +type HandlerPayloadMarshal struct { + Marshalers request.HandlerList +} + +// MarshalPayload marshals the SDK shape into the io.Writer using the +// Marshalers HandlerList provided. Returns an error if unable if marshal +// fails. +func (h HandlerPayloadMarshal) MarshalPayload(w io.Writer, v interface{}) error { + req := request.New( + aws.Config{}, + metadata.ClientInfo{}, + request.Handlers{}, + nil, + &request.Operation{HTTPMethod: "GET"}, + v, + nil, + ) + + h.Marshalers.Run(req) + + if req.Error != nil { + return req.Error + } + + io.Copy(w, req.GetBody()) + + return nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/query/build.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/query/build.go new file mode 100644 index 0000000..0cb99eb --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/query/build.go @@ -0,0 +1,36 @@ +// Package query provides serialization of AWS query requests, and responses. +package query + +//go:generate go run -tags codegen ../../../models/protocol_tests/generate.go ../../../models/protocol_tests/input/query.json build_test.go + +import ( + "net/url" + + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/private/protocol/query/queryutil" +) + +// BuildHandler is a named request handler for building query protocol requests +var BuildHandler = request.NamedHandler{Name: "awssdk.query.Build", Fn: Build} + +// Build builds a request for an AWS Query service. +func Build(r *request.Request) { + body := url.Values{ + "Action": {r.Operation.Name}, + "Version": {r.ClientInfo.APIVersion}, + } + if err := queryutil.Parse(body, r.Params, false); err != nil { + r.Error = awserr.New(request.ErrCodeSerialization, "failed encoding Query request", err) + return + } + + if !r.IsPresigned() { + r.HTTPRequest.Method = "POST" + r.HTTPRequest.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=utf-8") + r.SetBufferBody([]byte(body.Encode())) + } else { // This is a pre-signed request + r.HTTPRequest.Method = "GET" + r.HTTPRequest.URL.RawQuery = body.Encode() + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/query/queryutil/queryutil.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/query/queryutil/queryutil.go new file mode 100644 index 0000000..75866d0 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/query/queryutil/queryutil.go @@ -0,0 +1,246 @@ +package queryutil + +import ( + "encoding/base64" + "fmt" + "net/url" + "reflect" + "sort" + "strconv" + "strings" + "time" + + "github.com/aws/aws-sdk-go/private/protocol" +) + +// Parse parses an object i and fills a url.Values object. The isEC2 flag +// indicates if this is the EC2 Query sub-protocol. +func Parse(body url.Values, i interface{}, isEC2 bool) error { + q := queryParser{isEC2: isEC2} + return q.parseValue(body, reflect.ValueOf(i), "", "") +} + +func elemOf(value reflect.Value) reflect.Value { + for value.Kind() == reflect.Ptr { + value = value.Elem() + } + return value +} + +type queryParser struct { + isEC2 bool +} + +func (q *queryParser) parseValue(v url.Values, value reflect.Value, prefix string, tag reflect.StructTag) error { + value = elemOf(value) + + // no need to handle zero values + if !value.IsValid() { + return nil + } + + t := tag.Get("type") + if t == "" { + switch value.Kind() { + case reflect.Struct: + t = "structure" + case reflect.Slice: + t = "list" + case reflect.Map: + t = "map" + } + } + + switch t { + case "structure": + return q.parseStruct(v, value, prefix) + case "list": + return q.parseList(v, value, prefix, tag) + case "map": + return q.parseMap(v, value, prefix, tag) + default: + return q.parseScalar(v, value, prefix, tag) + } +} + +func (q *queryParser) parseStruct(v url.Values, value reflect.Value, prefix string) error { + if !value.IsValid() { + return nil + } + + t := value.Type() + for i := 0; i < value.NumField(); i++ { + elemValue := elemOf(value.Field(i)) + field := t.Field(i) + + if field.PkgPath != "" { + continue // ignore unexported fields + } + if field.Tag.Get("ignore") != "" { + continue + } + + if protocol.CanSetIdempotencyToken(value.Field(i), field) { + token := protocol.GetIdempotencyToken() + elemValue = reflect.ValueOf(token) + } + + var name string + if q.isEC2 { + name = field.Tag.Get("queryName") + } + if name == "" { + if field.Tag.Get("flattened") != "" && field.Tag.Get("locationNameList") != "" { + name = field.Tag.Get("locationNameList") + } else if locName := field.Tag.Get("locationName"); locName != "" { + name = locName + } + if name != "" && q.isEC2 { + name = strings.ToUpper(name[0:1]) + name[1:] + } + } + if name == "" { + name = field.Name + } + + if prefix != "" { + name = prefix + "." + name + } + + if err := q.parseValue(v, elemValue, name, field.Tag); err != nil { + return err + } + } + return nil +} + +func (q *queryParser) parseList(v url.Values, value reflect.Value, prefix string, tag reflect.StructTag) error { + // If it's empty, generate an empty value + if !value.IsNil() && value.Len() == 0 { + v.Set(prefix, "") + return nil + } + + if _, ok := value.Interface().([]byte); ok { + return q.parseScalar(v, value, prefix, tag) + } + + // check for unflattened list member + if !q.isEC2 && tag.Get("flattened") == "" { + if listName := tag.Get("locationNameList"); listName == "" { + prefix += ".member" + } else { + prefix += "." + listName + } + } + + for i := 0; i < value.Len(); i++ { + slicePrefix := prefix + if slicePrefix == "" { + slicePrefix = strconv.Itoa(i + 1) + } else { + slicePrefix = slicePrefix + "." + strconv.Itoa(i+1) + } + if err := q.parseValue(v, value.Index(i), slicePrefix, ""); err != nil { + return err + } + } + return nil +} + +func (q *queryParser) parseMap(v url.Values, value reflect.Value, prefix string, tag reflect.StructTag) error { + // If it's empty, generate an empty value + if !value.IsNil() && value.Len() == 0 { + v.Set(prefix, "") + return nil + } + + // check for unflattened list member + if !q.isEC2 && tag.Get("flattened") == "" { + prefix += ".entry" + } + + // sort keys for improved serialization consistency. + // this is not strictly necessary for protocol support. + mapKeyValues := value.MapKeys() + mapKeys := map[string]reflect.Value{} + mapKeyNames := make([]string, len(mapKeyValues)) + for i, mapKey := range mapKeyValues { + name := mapKey.String() + mapKeys[name] = mapKey + mapKeyNames[i] = name + } + sort.Strings(mapKeyNames) + + for i, mapKeyName := range mapKeyNames { + mapKey := mapKeys[mapKeyName] + mapValue := value.MapIndex(mapKey) + + kname := tag.Get("locationNameKey") + if kname == "" { + kname = "key" + } + vname := tag.Get("locationNameValue") + if vname == "" { + vname = "value" + } + + // serialize key + var keyName string + if prefix == "" { + keyName = strconv.Itoa(i+1) + "." + kname + } else { + keyName = prefix + "." + strconv.Itoa(i+1) + "." + kname + } + + if err := q.parseValue(v, mapKey, keyName, ""); err != nil { + return err + } + + // serialize value + var valueName string + if prefix == "" { + valueName = strconv.Itoa(i+1) + "." + vname + } else { + valueName = prefix + "." + strconv.Itoa(i+1) + "." + vname + } + + if err := q.parseValue(v, mapValue, valueName, ""); err != nil { + return err + } + } + + return nil +} + +func (q *queryParser) parseScalar(v url.Values, r reflect.Value, name string, tag reflect.StructTag) error { + switch value := r.Interface().(type) { + case string: + v.Set(name, value) + case []byte: + if !r.IsNil() { + v.Set(name, base64.StdEncoding.EncodeToString(value)) + } + case bool: + v.Set(name, strconv.FormatBool(value)) + case int64: + v.Set(name, strconv.FormatInt(value, 10)) + case int: + v.Set(name, strconv.Itoa(value)) + case float64: + v.Set(name, strconv.FormatFloat(value, 'f', -1, 64)) + case float32: + v.Set(name, strconv.FormatFloat(float64(value), 'f', -1, 32)) + case time.Time: + const ISO8601UTC = "2006-01-02T15:04:05Z" + format := tag.Get("timestampFormat") + if len(format) == 0 { + format = protocol.ISO8601TimeFormatName + } + + v.Set(name, protocol.FormatTime(format, value)) + default: + return fmt.Errorf("unsupported value for param %s: %v (%s)", name, r.Interface(), r.Type().Name()) + } + return nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal.go new file mode 100644 index 0000000..f69c1ef --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal.go @@ -0,0 +1,39 @@ +package query + +//go:generate go run -tags codegen ../../../models/protocol_tests/generate.go ../../../models/protocol_tests/output/query.json unmarshal_test.go + +import ( + "encoding/xml" + + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil" +) + +// UnmarshalHandler is a named request handler for unmarshaling query protocol requests +var UnmarshalHandler = request.NamedHandler{Name: "awssdk.query.Unmarshal", Fn: Unmarshal} + +// UnmarshalMetaHandler is a named request handler for unmarshaling query protocol request metadata +var UnmarshalMetaHandler = request.NamedHandler{Name: "awssdk.query.UnmarshalMeta", Fn: UnmarshalMeta} + +// Unmarshal unmarshals a response for an AWS Query service. +func Unmarshal(r *request.Request) { + defer r.HTTPResponse.Body.Close() + if r.DataFilled() { + decoder := xml.NewDecoder(r.HTTPResponse.Body) + err := xmlutil.UnmarshalXML(r.Data, decoder, r.Operation.Name+"Result") + if err != nil { + r.Error = awserr.NewRequestFailure( + awserr.New(request.ErrCodeSerialization, "failed decoding Query response", err), + r.HTTPResponse.StatusCode, + r.RequestID, + ) + return + } + } +} + +// UnmarshalMeta unmarshals header response values for an AWS Query service. +func UnmarshalMeta(r *request.Request) { + r.RequestID = r.HTTPResponse.Header.Get("X-Amzn-Requestid") +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal_error.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal_error.go new file mode 100644 index 0000000..831b011 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal_error.go @@ -0,0 +1,69 @@ +package query + +import ( + "encoding/xml" + "fmt" + + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil" +) + +// UnmarshalErrorHandler is a name request handler to unmarshal request errors +var UnmarshalErrorHandler = request.NamedHandler{Name: "awssdk.query.UnmarshalError", Fn: UnmarshalError} + +type xmlErrorResponse struct { + Code string `xml:"Error>Code"` + Message string `xml:"Error>Message"` + RequestID string `xml:"RequestId"` +} + +type xmlResponseError struct { + xmlErrorResponse +} + +func (e *xmlResponseError) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { + const svcUnavailableTagName = "ServiceUnavailableException" + const errorResponseTagName = "ErrorResponse" + + switch start.Name.Local { + case svcUnavailableTagName: + e.Code = svcUnavailableTagName + e.Message = "service is unavailable" + return d.Skip() + + case errorResponseTagName: + return d.DecodeElement(&e.xmlErrorResponse, &start) + + default: + return fmt.Errorf("unknown error response tag, %v", start) + } +} + +// UnmarshalError unmarshals an error response for an AWS Query service. +func UnmarshalError(r *request.Request) { + defer r.HTTPResponse.Body.Close() + + var respErr xmlResponseError + err := xmlutil.UnmarshalXMLError(&respErr, r.HTTPResponse.Body) + if err != nil { + r.Error = awserr.NewRequestFailure( + awserr.New(request.ErrCodeSerialization, + "failed to unmarshal error message", err), + r.HTTPResponse.StatusCode, + r.RequestID, + ) + return + } + + reqID := respErr.RequestID + if len(reqID) == 0 { + reqID = r.RequestID + } + + r.Error = awserr.NewRequestFailure( + awserr.New(respErr.Code, respErr.Message, nil), + r.HTTPResponse.StatusCode, + reqID, + ) +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go new file mode 100644 index 0000000..1301b14 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go @@ -0,0 +1,310 @@ +// Package rest provides RESTful serialization of AWS requests and responses. +package rest + +import ( + "bytes" + "encoding/base64" + "fmt" + "io" + "net/http" + "net/url" + "path" + "reflect" + "strconv" + "strings" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/private/protocol" +) + +// Whether the byte value can be sent without escaping in AWS URLs +var noEscape [256]bool + +var errValueNotSet = fmt.Errorf("value not set") + +var byteSliceType = reflect.TypeOf([]byte{}) + +func init() { + for i := 0; i < len(noEscape); i++ { + // AWS expects every character except these to be escaped + noEscape[i] = (i >= 'A' && i <= 'Z') || + (i >= 'a' && i <= 'z') || + (i >= '0' && i <= '9') || + i == '-' || + i == '.' || + i == '_' || + i == '~' + } +} + +// BuildHandler is a named request handler for building rest protocol requests +var BuildHandler = request.NamedHandler{Name: "awssdk.rest.Build", Fn: Build} + +// Build builds the REST component of a service request. +func Build(r *request.Request) { + if r.ParamsFilled() { + v := reflect.ValueOf(r.Params).Elem() + buildLocationElements(r, v, false) + buildBody(r, v) + } +} + +// BuildAsGET builds the REST component of a service request with the ability to hoist +// data from the body. +func BuildAsGET(r *request.Request) { + if r.ParamsFilled() { + v := reflect.ValueOf(r.Params).Elem() + buildLocationElements(r, v, true) + buildBody(r, v) + } +} + +func buildLocationElements(r *request.Request, v reflect.Value, buildGETQuery bool) { + query := r.HTTPRequest.URL.Query() + + // Setup the raw path to match the base path pattern. This is needed + // so that when the path is mutated a custom escaped version can be + // stored in RawPath that will be used by the Go client. + r.HTTPRequest.URL.RawPath = r.HTTPRequest.URL.Path + + for i := 0; i < v.NumField(); i++ { + m := v.Field(i) + if n := v.Type().Field(i).Name; n[0:1] == strings.ToLower(n[0:1]) { + continue + } + + if m.IsValid() { + field := v.Type().Field(i) + name := field.Tag.Get("locationName") + if name == "" { + name = field.Name + } + if kind := m.Kind(); kind == reflect.Ptr { + m = m.Elem() + } else if kind == reflect.Interface { + if !m.Elem().IsValid() { + continue + } + } + if !m.IsValid() { + continue + } + if field.Tag.Get("ignore") != "" { + continue + } + + // Support the ability to customize values to be marshaled as a + // blob even though they were modeled as a string. Required for S3 + // API operations like SSECustomerKey is modeled as stirng but + // required to be base64 encoded in request. + if field.Tag.Get("marshal-as") == "blob" { + m = m.Convert(byteSliceType) + } + + var err error + switch field.Tag.Get("location") { + case "headers": // header maps + err = buildHeaderMap(&r.HTTPRequest.Header, m, field.Tag) + case "header": + err = buildHeader(&r.HTTPRequest.Header, m, name, field.Tag) + case "uri": + err = buildURI(r.HTTPRequest.URL, m, name, field.Tag) + case "querystring": + err = buildQueryString(query, m, name, field.Tag) + default: + if buildGETQuery { + err = buildQueryString(query, m, name, field.Tag) + } + } + r.Error = err + } + if r.Error != nil { + return + } + } + + r.HTTPRequest.URL.RawQuery = query.Encode() + if !aws.BoolValue(r.Config.DisableRestProtocolURICleaning) { + cleanPath(r.HTTPRequest.URL) + } +} + +func buildBody(r *request.Request, v reflect.Value) { + if field, ok := v.Type().FieldByName("_"); ok { + if payloadName := field.Tag.Get("payload"); payloadName != "" { + pfield, _ := v.Type().FieldByName(payloadName) + if ptag := pfield.Tag.Get("type"); ptag != "" && ptag != "structure" { + payload := reflect.Indirect(v.FieldByName(payloadName)) + if payload.IsValid() && payload.Interface() != nil { + switch reader := payload.Interface().(type) { + case io.ReadSeeker: + r.SetReaderBody(reader) + case []byte: + r.SetBufferBody(reader) + case string: + r.SetStringBody(reader) + default: + r.Error = awserr.New(request.ErrCodeSerialization, + "failed to encode REST request", + fmt.Errorf("unknown payload type %s", payload.Type())) + } + } + } + } + } +} + +func buildHeader(header *http.Header, v reflect.Value, name string, tag reflect.StructTag) error { + str, err := convertType(v, tag) + if err == errValueNotSet { + return nil + } else if err != nil { + return awserr.New(request.ErrCodeSerialization, "failed to encode REST request", err) + } + + name = strings.TrimSpace(name) + str = strings.TrimSpace(str) + + header.Add(name, str) + + return nil +} + +func buildHeaderMap(header *http.Header, v reflect.Value, tag reflect.StructTag) error { + prefix := tag.Get("locationName") + for _, key := range v.MapKeys() { + str, err := convertType(v.MapIndex(key), tag) + if err == errValueNotSet { + continue + } else if err != nil { + return awserr.New(request.ErrCodeSerialization, "failed to encode REST request", err) + + } + keyStr := strings.TrimSpace(key.String()) + str = strings.TrimSpace(str) + + header.Add(prefix+keyStr, str) + } + return nil +} + +func buildURI(u *url.URL, v reflect.Value, name string, tag reflect.StructTag) error { + value, err := convertType(v, tag) + if err == errValueNotSet { + return nil + } else if err != nil { + return awserr.New(request.ErrCodeSerialization, "failed to encode REST request", err) + } + + u.Path = strings.Replace(u.Path, "{"+name+"}", value, -1) + u.Path = strings.Replace(u.Path, "{"+name+"+}", value, -1) + + u.RawPath = strings.Replace(u.RawPath, "{"+name+"}", EscapePath(value, true), -1) + u.RawPath = strings.Replace(u.RawPath, "{"+name+"+}", EscapePath(value, false), -1) + + return nil +} + +func buildQueryString(query url.Values, v reflect.Value, name string, tag reflect.StructTag) error { + switch value := v.Interface().(type) { + case []*string: + for _, item := range value { + query.Add(name, *item) + } + case map[string]*string: + for key, item := range value { + query.Add(key, *item) + } + case map[string][]*string: + for key, items := range value { + for _, item := range items { + query.Add(key, *item) + } + } + default: + str, err := convertType(v, tag) + if err == errValueNotSet { + return nil + } else if err != nil { + return awserr.New(request.ErrCodeSerialization, "failed to encode REST request", err) + } + query.Set(name, str) + } + + return nil +} + +func cleanPath(u *url.URL) { + hasSlash := strings.HasSuffix(u.Path, "/") + + // clean up path, removing duplicate `/` + u.Path = path.Clean(u.Path) + u.RawPath = path.Clean(u.RawPath) + + if hasSlash && !strings.HasSuffix(u.Path, "/") { + u.Path += "/" + u.RawPath += "/" + } +} + +// EscapePath escapes part of a URL path in Amazon style +func EscapePath(path string, encodeSep bool) string { + var buf bytes.Buffer + for i := 0; i < len(path); i++ { + c := path[i] + if noEscape[c] || (c == '/' && !encodeSep) { + buf.WriteByte(c) + } else { + fmt.Fprintf(&buf, "%%%02X", c) + } + } + return buf.String() +} + +func convertType(v reflect.Value, tag reflect.StructTag) (str string, err error) { + v = reflect.Indirect(v) + if !v.IsValid() { + return "", errValueNotSet + } + + switch value := v.Interface().(type) { + case string: + str = value + case []byte: + str = base64.StdEncoding.EncodeToString(value) + case bool: + str = strconv.FormatBool(value) + case int64: + str = strconv.FormatInt(value, 10) + case float64: + str = strconv.FormatFloat(value, 'f', -1, 64) + case time.Time: + format := tag.Get("timestampFormat") + if len(format) == 0 { + format = protocol.RFC822TimeFormatName + if tag.Get("location") == "querystring" { + format = protocol.ISO8601TimeFormatName + } + } + str = protocol.FormatTime(format, value) + case aws.JSONValue: + if len(value) == 0 { + return "", errValueNotSet + } + escaping := protocol.NoEscape + if tag.Get("location") == "header" { + escaping = protocol.Base64Escape + } + str, err = protocol.EncodeJSONValue(value, escaping) + if err != nil { + return "", fmt.Errorf("unable to encode JSONValue, %v", err) + } + default: + err := fmt.Errorf("unsupported value for param %v (%s)", v.Interface(), v.Type()) + return "", err + } + return str, nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/payload.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/payload.go new file mode 100644 index 0000000..4366de2 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/payload.go @@ -0,0 +1,45 @@ +package rest + +import "reflect" + +// PayloadMember returns the payload field member of i if there is one, or nil. +func PayloadMember(i interface{}) interface{} { + if i == nil { + return nil + } + + v := reflect.ValueOf(i).Elem() + if !v.IsValid() { + return nil + } + if field, ok := v.Type().FieldByName("_"); ok { + if payloadName := field.Tag.Get("payload"); payloadName != "" { + field, _ := v.Type().FieldByName(payloadName) + if field.Tag.Get("type") != "structure" { + return nil + } + + payload := v.FieldByName(payloadName) + if payload.IsValid() || (payload.Kind() == reflect.Ptr && !payload.IsNil()) { + return payload.Interface() + } + } + } + return nil +} + +// PayloadType returns the type of a payload field member of i if there is one, or "". +func PayloadType(i interface{}) string { + v := reflect.Indirect(reflect.ValueOf(i)) + if !v.IsValid() { + return "" + } + if field, ok := v.Type().FieldByName("_"); ok { + if payloadName := field.Tag.Get("payload"); payloadName != "" { + if member, ok := v.Type().FieldByName(payloadName); ok { + return member.Tag.Get("type") + } + } + } + return "" +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/unmarshal.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/unmarshal.go new file mode 100644 index 0000000..74e361e --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/unmarshal.go @@ -0,0 +1,237 @@ +package rest + +import ( + "bytes" + "encoding/base64" + "fmt" + "io" + "io/ioutil" + "net/http" + "reflect" + "strconv" + "strings" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/private/protocol" +) + +// UnmarshalHandler is a named request handler for unmarshaling rest protocol requests +var UnmarshalHandler = request.NamedHandler{Name: "awssdk.rest.Unmarshal", Fn: Unmarshal} + +// UnmarshalMetaHandler is a named request handler for unmarshaling rest protocol request metadata +var UnmarshalMetaHandler = request.NamedHandler{Name: "awssdk.rest.UnmarshalMeta", Fn: UnmarshalMeta} + +// Unmarshal unmarshals the REST component of a response in a REST service. +func Unmarshal(r *request.Request) { + if r.DataFilled() { + v := reflect.Indirect(reflect.ValueOf(r.Data)) + unmarshalBody(r, v) + } +} + +// UnmarshalMeta unmarshals the REST metadata of a response in a REST service +func UnmarshalMeta(r *request.Request) { + r.RequestID = r.HTTPResponse.Header.Get("X-Amzn-Requestid") + if r.RequestID == "" { + // Alternative version of request id in the header + r.RequestID = r.HTTPResponse.Header.Get("X-Amz-Request-Id") + } + if r.DataFilled() { + v := reflect.Indirect(reflect.ValueOf(r.Data)) + unmarshalLocationElements(r, v) + } +} + +func unmarshalBody(r *request.Request, v reflect.Value) { + if field, ok := v.Type().FieldByName("_"); ok { + if payloadName := field.Tag.Get("payload"); payloadName != "" { + pfield, _ := v.Type().FieldByName(payloadName) + if ptag := pfield.Tag.Get("type"); ptag != "" && ptag != "structure" { + payload := v.FieldByName(payloadName) + if payload.IsValid() { + switch payload.Interface().(type) { + case []byte: + defer r.HTTPResponse.Body.Close() + b, err := ioutil.ReadAll(r.HTTPResponse.Body) + if err != nil { + r.Error = awserr.New(request.ErrCodeSerialization, "failed to decode REST response", err) + } else { + payload.Set(reflect.ValueOf(b)) + } + case *string: + defer r.HTTPResponse.Body.Close() + b, err := ioutil.ReadAll(r.HTTPResponse.Body) + if err != nil { + r.Error = awserr.New(request.ErrCodeSerialization, "failed to decode REST response", err) + } else { + str := string(b) + payload.Set(reflect.ValueOf(&str)) + } + default: + switch payload.Type().String() { + case "io.ReadCloser": + payload.Set(reflect.ValueOf(r.HTTPResponse.Body)) + case "io.ReadSeeker": + b, err := ioutil.ReadAll(r.HTTPResponse.Body) + if err != nil { + r.Error = awserr.New(request.ErrCodeSerialization, + "failed to read response body", err) + return + } + payload.Set(reflect.ValueOf(ioutil.NopCloser(bytes.NewReader(b)))) + default: + io.Copy(ioutil.Discard, r.HTTPResponse.Body) + defer r.HTTPResponse.Body.Close() + r.Error = awserr.New(request.ErrCodeSerialization, + "failed to decode REST response", + fmt.Errorf("unknown payload type %s", payload.Type())) + } + } + } + } + } + } +} + +func unmarshalLocationElements(r *request.Request, v reflect.Value) { + for i := 0; i < v.NumField(); i++ { + m, field := v.Field(i), v.Type().Field(i) + if n := field.Name; n[0:1] == strings.ToLower(n[0:1]) { + continue + } + + if m.IsValid() { + name := field.Tag.Get("locationName") + if name == "" { + name = field.Name + } + + switch field.Tag.Get("location") { + case "statusCode": + unmarshalStatusCode(m, r.HTTPResponse.StatusCode) + case "header": + err := unmarshalHeader(m, r.HTTPResponse.Header.Get(name), field.Tag) + if err != nil { + r.Error = awserr.New(request.ErrCodeSerialization, "failed to decode REST response", err) + break + } + case "headers": + prefix := field.Tag.Get("locationName") + err := unmarshalHeaderMap(m, r.HTTPResponse.Header, prefix) + if err != nil { + r.Error = awserr.New(request.ErrCodeSerialization, "failed to decode REST response", err) + break + } + } + } + if r.Error != nil { + return + } + } +} + +func unmarshalStatusCode(v reflect.Value, statusCode int) { + if !v.IsValid() { + return + } + + switch v.Interface().(type) { + case *int64: + s := int64(statusCode) + v.Set(reflect.ValueOf(&s)) + } +} + +func unmarshalHeaderMap(r reflect.Value, headers http.Header, prefix string) error { + if len(headers) == 0 { + return nil + } + switch r.Interface().(type) { + case map[string]*string: // we only support string map value types + out := map[string]*string{} + for k, v := range headers { + k = http.CanonicalHeaderKey(k) + if strings.HasPrefix(strings.ToLower(k), strings.ToLower(prefix)) { + out[k[len(prefix):]] = &v[0] + } + } + if len(out) != 0 { + r.Set(reflect.ValueOf(out)) + } + + } + return nil +} + +func unmarshalHeader(v reflect.Value, header string, tag reflect.StructTag) error { + switch tag.Get("type") { + case "jsonvalue": + if len(header) == 0 { + return nil + } + case "blob": + if len(header) == 0 { + return nil + } + default: + if !v.IsValid() || (header == "" && v.Elem().Kind() != reflect.String) { + return nil + } + } + + switch v.Interface().(type) { + case *string: + v.Set(reflect.ValueOf(&header)) + case []byte: + b, err := base64.StdEncoding.DecodeString(header) + if err != nil { + return err + } + v.Set(reflect.ValueOf(b)) + case *bool: + b, err := strconv.ParseBool(header) + if err != nil { + return err + } + v.Set(reflect.ValueOf(&b)) + case *int64: + i, err := strconv.ParseInt(header, 10, 64) + if err != nil { + return err + } + v.Set(reflect.ValueOf(&i)) + case *float64: + f, err := strconv.ParseFloat(header, 64) + if err != nil { + return err + } + v.Set(reflect.ValueOf(&f)) + case *time.Time: + format := tag.Get("timestampFormat") + if len(format) == 0 { + format = protocol.RFC822TimeFormatName + } + t, err := protocol.ParseTime(format, header) + if err != nil { + return err + } + v.Set(reflect.ValueOf(&t)) + case aws.JSONValue: + escaping := protocol.NoEscape + if tag.Get("location") == "header" { + escaping = protocol.Base64Escape + } + m, err := protocol.DecodeJSONValue(header, escaping) + if err != nil { + return err + } + v.Set(reflect.ValueOf(m)) + default: + err := fmt.Errorf("Unsupported value for param %v (%s)", v.Interface(), v.Type()) + return err + } + return nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/restxml/restxml.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/restxml/restxml.go new file mode 100644 index 0000000..07a6187 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/restxml/restxml.go @@ -0,0 +1,79 @@ +// Package restxml provides RESTful XML serialization of AWS +// requests and responses. +package restxml + +//go:generate go run -tags codegen ../../../models/protocol_tests/generate.go ../../../models/protocol_tests/input/rest-xml.json build_test.go +//go:generate go run -tags codegen ../../../models/protocol_tests/generate.go ../../../models/protocol_tests/output/rest-xml.json unmarshal_test.go + +import ( + "bytes" + "encoding/xml" + + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/private/protocol/query" + "github.com/aws/aws-sdk-go/private/protocol/rest" + "github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil" +) + +// BuildHandler is a named request handler for building restxml protocol requests +var BuildHandler = request.NamedHandler{Name: "awssdk.restxml.Build", Fn: Build} + +// UnmarshalHandler is a named request handler for unmarshaling restxml protocol requests +var UnmarshalHandler = request.NamedHandler{Name: "awssdk.restxml.Unmarshal", Fn: Unmarshal} + +// UnmarshalMetaHandler is a named request handler for unmarshaling restxml protocol request metadata +var UnmarshalMetaHandler = request.NamedHandler{Name: "awssdk.restxml.UnmarshalMeta", Fn: UnmarshalMeta} + +// UnmarshalErrorHandler is a named request handler for unmarshaling restxml protocol request errors +var UnmarshalErrorHandler = request.NamedHandler{Name: "awssdk.restxml.UnmarshalError", Fn: UnmarshalError} + +// Build builds a request payload for the REST XML protocol. +func Build(r *request.Request) { + rest.Build(r) + + if t := rest.PayloadType(r.Params); t == "structure" || t == "" { + var buf bytes.Buffer + err := xmlutil.BuildXML(r.Params, xml.NewEncoder(&buf)) + if err != nil { + r.Error = awserr.NewRequestFailure( + awserr.New(request.ErrCodeSerialization, + "failed to encode rest XML request", err), + 0, + r.RequestID, + ) + return + } + r.SetBufferBody(buf.Bytes()) + } +} + +// Unmarshal unmarshals a payload response for the REST XML protocol. +func Unmarshal(r *request.Request) { + if t := rest.PayloadType(r.Data); t == "structure" || t == "" { + defer r.HTTPResponse.Body.Close() + decoder := xml.NewDecoder(r.HTTPResponse.Body) + err := xmlutil.UnmarshalXML(r.Data, decoder, "") + if err != nil { + r.Error = awserr.NewRequestFailure( + awserr.New(request.ErrCodeSerialization, + "failed to decode REST XML response", err), + r.HTTPResponse.StatusCode, + r.RequestID, + ) + return + } + } else { + rest.Unmarshal(r) + } +} + +// UnmarshalMeta unmarshals response headers for the REST XML protocol. +func UnmarshalMeta(r *request.Request) { + rest.UnmarshalMeta(r) +} + +// UnmarshalError unmarshals a response error for the REST XML protocol. +func UnmarshalError(r *request.Request) { + query.UnmarshalError(r) +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/timestamp.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/timestamp.go new file mode 100644 index 0000000..05d4ff5 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/timestamp.go @@ -0,0 +1,84 @@ +package protocol + +import ( + "math" + "strconv" + "time" + + "github.com/aws/aws-sdk-go/internal/sdkmath" +) + +// Names of time formats supported by the SDK +const ( + RFC822TimeFormatName = "rfc822" + ISO8601TimeFormatName = "iso8601" + UnixTimeFormatName = "unixTimestamp" +) + +// Time formats supported by the SDK +// Output time is intended to not contain decimals +const ( + // RFC 7231#section-7.1.1.1 timetamp format. e.g Tue, 29 Apr 2014 18:30:38 GMT + RFC822TimeFormat = "Mon, 2 Jan 2006 15:04:05 GMT" + + // This format is used for output time without seconds precision + RFC822OutputTimeFormat = "Mon, 02 Jan 2006 15:04:05 GMT" + + // RFC3339 a subset of the ISO8601 timestamp format. e.g 2014-04-29T18:30:38Z + ISO8601TimeFormat = "2006-01-02T15:04:05.999999999Z" + + // This format is used for output time without seconds precision + ISO8601OutputTimeFormat = "2006-01-02T15:04:05Z" +) + +// IsKnownTimestampFormat returns if the timestamp format name +// is know to the SDK's protocols. +func IsKnownTimestampFormat(name string) bool { + switch name { + case RFC822TimeFormatName: + fallthrough + case ISO8601TimeFormatName: + fallthrough + case UnixTimeFormatName: + return true + default: + return false + } +} + +// FormatTime returns a string value of the time. +func FormatTime(name string, t time.Time) string { + t = t.UTC() + + switch name { + case RFC822TimeFormatName: + return t.Format(RFC822OutputTimeFormat) + case ISO8601TimeFormatName: + return t.Format(ISO8601OutputTimeFormat) + case UnixTimeFormatName: + return strconv.FormatInt(t.Unix(), 10) + default: + panic("unknown timestamp format name, " + name) + } +} + +// ParseTime attempts to parse the time given the format. Returns +// the time if it was able to be parsed, and fails otherwise. +func ParseTime(formatName, value string) (time.Time, error) { + switch formatName { + case RFC822TimeFormatName: + return time.Parse(RFC822TimeFormat, value) + case ISO8601TimeFormatName: + return time.Parse(ISO8601TimeFormat, value) + case UnixTimeFormatName: + v, err := strconv.ParseFloat(value, 64) + _, dec := math.Modf(v) + dec = sdkmath.Round(dec*1e3) / 1e3 //Rounds 0.1229999 to 0.123 + if err != nil { + return time.Time{}, err + } + return time.Unix(int64(v), int64(dec*(1e9))), nil + default: + panic("unknown timestamp format name, " + formatName) + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/unmarshal.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/unmarshal.go new file mode 100644 index 0000000..da1a681 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/unmarshal.go @@ -0,0 +1,21 @@ +package protocol + +import ( + "io" + "io/ioutil" + + "github.com/aws/aws-sdk-go/aws/request" +) + +// UnmarshalDiscardBodyHandler is a named request handler to empty and close a response's body +var UnmarshalDiscardBodyHandler = request.NamedHandler{Name: "awssdk.shared.UnmarshalDiscardBody", Fn: UnmarshalDiscardBody} + +// UnmarshalDiscardBody is a request handler to empty a response's body and closing it. +func UnmarshalDiscardBody(r *request.Request) { + if r.HTTPResponse == nil || r.HTTPResponse.Body == nil { + return + } + + io.Copy(ioutil.Discard, r.HTTPResponse.Body) + r.HTTPResponse.Body.Close() +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go new file mode 100644 index 0000000..cf981fe --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go @@ -0,0 +1,306 @@ +// Package xmlutil provides XML serialization of AWS requests and responses. +package xmlutil + +import ( + "encoding/base64" + "encoding/xml" + "fmt" + "reflect" + "sort" + "strconv" + "time" + + "github.com/aws/aws-sdk-go/private/protocol" +) + +// BuildXML will serialize params into an xml.Encoder. Error will be returned +// if the serialization of any of the params or nested values fails. +func BuildXML(params interface{}, e *xml.Encoder) error { + return buildXML(params, e, false) +} + +func buildXML(params interface{}, e *xml.Encoder, sorted bool) error { + b := xmlBuilder{encoder: e, namespaces: map[string]string{}} + root := NewXMLElement(xml.Name{}) + if err := b.buildValue(reflect.ValueOf(params), root, ""); err != nil { + return err + } + for _, c := range root.Children { + for _, v := range c { + return StructToXML(e, v, sorted) + } + } + return nil +} + +// Returns the reflection element of a value, if it is a pointer. +func elemOf(value reflect.Value) reflect.Value { + for value.Kind() == reflect.Ptr { + value = value.Elem() + } + return value +} + +// A xmlBuilder serializes values from Go code to XML +type xmlBuilder struct { + encoder *xml.Encoder + namespaces map[string]string +} + +// buildValue generic XMLNode builder for any type. Will build value for their specific type +// struct, list, map, scalar. +// +// Also takes a "type" tag value to set what type a value should be converted to XMLNode as. If +// type is not provided reflect will be used to determine the value's type. +func (b *xmlBuilder) buildValue(value reflect.Value, current *XMLNode, tag reflect.StructTag) error { + value = elemOf(value) + if !value.IsValid() { // no need to handle zero values + return nil + } else if tag.Get("location") != "" { // don't handle non-body location values + return nil + } + + t := tag.Get("type") + if t == "" { + switch value.Kind() { + case reflect.Struct: + t = "structure" + case reflect.Slice: + t = "list" + case reflect.Map: + t = "map" + } + } + + switch t { + case "structure": + if field, ok := value.Type().FieldByName("_"); ok { + tag = tag + reflect.StructTag(" ") + field.Tag + } + return b.buildStruct(value, current, tag) + case "list": + return b.buildList(value, current, tag) + case "map": + return b.buildMap(value, current, tag) + default: + return b.buildScalar(value, current, tag) + } +} + +// buildStruct adds a struct and its fields to the current XMLNode. All fields and any nested +// types are converted to XMLNodes also. +func (b *xmlBuilder) buildStruct(value reflect.Value, current *XMLNode, tag reflect.StructTag) error { + if !value.IsValid() { + return nil + } + + // unwrap payloads + if payload := tag.Get("payload"); payload != "" { + field, _ := value.Type().FieldByName(payload) + tag = field.Tag + value = elemOf(value.FieldByName(payload)) + + if !value.IsValid() { + return nil + } + } + + child := NewXMLElement(xml.Name{Local: tag.Get("locationName")}) + + // there is an xmlNamespace associated with this struct + if prefix, uri := tag.Get("xmlPrefix"), tag.Get("xmlURI"); uri != "" { + ns := xml.Attr{ + Name: xml.Name{Local: "xmlns"}, + Value: uri, + } + if prefix != "" { + b.namespaces[prefix] = uri // register the namespace + ns.Name.Local = "xmlns:" + prefix + } + + child.Attr = append(child.Attr, ns) + } + + var payloadFields, nonPayloadFields int + + t := value.Type() + for i := 0; i < value.NumField(); i++ { + member := elemOf(value.Field(i)) + field := t.Field(i) + + if field.PkgPath != "" { + continue // ignore unexported fields + } + if field.Tag.Get("ignore") != "" { + continue + } + + mTag := field.Tag + if mTag.Get("location") != "" { // skip non-body members + nonPayloadFields++ + continue + } + payloadFields++ + + if protocol.CanSetIdempotencyToken(value.Field(i), field) { + token := protocol.GetIdempotencyToken() + member = reflect.ValueOf(token) + } + + memberName := mTag.Get("locationName") + if memberName == "" { + memberName = field.Name + mTag = reflect.StructTag(string(mTag) + ` locationName:"` + memberName + `"`) + } + if err := b.buildValue(member, child, mTag); err != nil { + return err + } + } + + // Only case where the child shape is not added is if the shape only contains + // non-payload fields, e.g headers/query. + if !(payloadFields == 0 && nonPayloadFields > 0) { + current.AddChild(child) + } + + return nil +} + +// buildList adds the value's list items to the current XMLNode as children nodes. All +// nested values in the list are converted to XMLNodes also. +func (b *xmlBuilder) buildList(value reflect.Value, current *XMLNode, tag reflect.StructTag) error { + if value.IsNil() { // don't build omitted lists + return nil + } + + // check for unflattened list member + flattened := tag.Get("flattened") != "" + + xname := xml.Name{Local: tag.Get("locationName")} + if flattened { + for i := 0; i < value.Len(); i++ { + child := NewXMLElement(xname) + current.AddChild(child) + if err := b.buildValue(value.Index(i), child, ""); err != nil { + return err + } + } + } else { + list := NewXMLElement(xname) + current.AddChild(list) + + for i := 0; i < value.Len(); i++ { + iname := tag.Get("locationNameList") + if iname == "" { + iname = "member" + } + + child := NewXMLElement(xml.Name{Local: iname}) + list.AddChild(child) + if err := b.buildValue(value.Index(i), child, ""); err != nil { + return err + } + } + } + + return nil +} + +// buildMap adds the value's key/value pairs to the current XMLNode as children nodes. All +// nested values in the map are converted to XMLNodes also. +// +// Error will be returned if it is unable to build the map's values into XMLNodes +func (b *xmlBuilder) buildMap(value reflect.Value, current *XMLNode, tag reflect.StructTag) error { + if value.IsNil() { // don't build omitted maps + return nil + } + + maproot := NewXMLElement(xml.Name{Local: tag.Get("locationName")}) + current.AddChild(maproot) + current = maproot + + kname, vname := "key", "value" + if n := tag.Get("locationNameKey"); n != "" { + kname = n + } + if n := tag.Get("locationNameValue"); n != "" { + vname = n + } + + // sorting is not required for compliance, but it makes testing easier + keys := make([]string, value.Len()) + for i, k := range value.MapKeys() { + keys[i] = k.String() + } + sort.Strings(keys) + + for _, k := range keys { + v := value.MapIndex(reflect.ValueOf(k)) + + mapcur := current + if tag.Get("flattened") == "" { // add "entry" tag to non-flat maps + child := NewXMLElement(xml.Name{Local: "entry"}) + mapcur.AddChild(child) + mapcur = child + } + + kchild := NewXMLElement(xml.Name{Local: kname}) + kchild.Text = k + vchild := NewXMLElement(xml.Name{Local: vname}) + mapcur.AddChild(kchild) + mapcur.AddChild(vchild) + + if err := b.buildValue(v, vchild, ""); err != nil { + return err + } + } + + return nil +} + +// buildScalar will convert the value into a string and append it as a attribute or child +// of the current XMLNode. +// +// The value will be added as an attribute if tag contains a "xmlAttribute" attribute value. +// +// Error will be returned if the value type is unsupported. +func (b *xmlBuilder) buildScalar(value reflect.Value, current *XMLNode, tag reflect.StructTag) error { + var str string + switch converted := value.Interface().(type) { + case string: + str = converted + case []byte: + if !value.IsNil() { + str = base64.StdEncoding.EncodeToString(converted) + } + case bool: + str = strconv.FormatBool(converted) + case int64: + str = strconv.FormatInt(converted, 10) + case int: + str = strconv.Itoa(converted) + case float64: + str = strconv.FormatFloat(converted, 'f', -1, 64) + case float32: + str = strconv.FormatFloat(float64(converted), 'f', -1, 32) + case time.Time: + format := tag.Get("timestampFormat") + if len(format) == 0 { + format = protocol.ISO8601TimeFormatName + } + + str = protocol.FormatTime(format, converted) + default: + return fmt.Errorf("unsupported value for param %s: %v (%s)", + tag.Get("locationName"), value.Interface(), value.Type().Name()) + } + + xname := xml.Name{Local: tag.Get("locationName")} + if tag.Get("xmlAttribute") != "" { // put into current node's attribute list + attr := xml.Attr{Name: xname, Value: str} + current.Attr = append(current.Attr, attr) + } else { // regular text node + current.AddChild(&XMLNode{Name: xname, Text: str}) + } + return nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/sort.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/sort.go new file mode 100644 index 0000000..c1a5118 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/sort.go @@ -0,0 +1,32 @@ +package xmlutil + +import ( + "encoding/xml" + "strings" +) + +type xmlAttrSlice []xml.Attr + +func (x xmlAttrSlice) Len() int { + return len(x) +} + +func (x xmlAttrSlice) Less(i, j int) bool { + spaceI, spaceJ := x[i].Name.Space, x[j].Name.Space + localI, localJ := x[i].Name.Local, x[j].Name.Local + valueI, valueJ := x[i].Value, x[j].Value + + spaceCmp := strings.Compare(spaceI, spaceJ) + localCmp := strings.Compare(localI, localJ) + valueCmp := strings.Compare(valueI, valueJ) + + if spaceCmp == -1 || (spaceCmp == 0 && (localCmp == -1 || (localCmp == 0 && valueCmp == -1))) { + return true + } + + return false +} + +func (x xmlAttrSlice) Swap(i, j int) { + x[i], x[j] = x[j], x[i] +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/unmarshal.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/unmarshal.go new file mode 100644 index 0000000..7108d38 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/unmarshal.go @@ -0,0 +1,291 @@ +package xmlutil + +import ( + "bytes" + "encoding/base64" + "encoding/xml" + "fmt" + "io" + "reflect" + "strconv" + "strings" + "time" + + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/private/protocol" +) + +// UnmarshalXMLError unmarshals the XML error from the stream into the value +// type specified. The value must be a pointer. If the message fails to +// unmarshal, the message content will be included in the returned error as a +// awserr.UnmarshalError. +func UnmarshalXMLError(v interface{}, stream io.Reader) error { + var errBuf bytes.Buffer + body := io.TeeReader(stream, &errBuf) + + err := xml.NewDecoder(body).Decode(v) + if err != nil && err != io.EOF { + return awserr.NewUnmarshalError(err, + "failed to unmarshal error message", errBuf.Bytes()) + } + + return nil +} + +// UnmarshalXML deserializes an xml.Decoder into the container v. V +// needs to match the shape of the XML expected to be decoded. +// If the shape doesn't match unmarshaling will fail. +func UnmarshalXML(v interface{}, d *xml.Decoder, wrapper string) error { + n, err := XMLToStruct(d, nil) + if err != nil { + return err + } + if n.Children != nil { + for _, root := range n.Children { + for _, c := range root { + if wrappedChild, ok := c.Children[wrapper]; ok { + c = wrappedChild[0] // pull out wrapped element + } + + err = parse(reflect.ValueOf(v), c, "") + if err != nil { + if err == io.EOF { + return nil + } + return err + } + } + } + return nil + } + return nil +} + +// parse deserializes any value from the XMLNode. The type tag is used to infer the type, or reflect +// will be used to determine the type from r. +func parse(r reflect.Value, node *XMLNode, tag reflect.StructTag) error { + rtype := r.Type() + if rtype.Kind() == reflect.Ptr { + rtype = rtype.Elem() // check kind of actual element type + } + + t := tag.Get("type") + if t == "" { + switch rtype.Kind() { + case reflect.Struct: + // also it can't be a time object + if _, ok := r.Interface().(*time.Time); !ok { + t = "structure" + } + case reflect.Slice: + // also it can't be a byte slice + if _, ok := r.Interface().([]byte); !ok { + t = "list" + } + case reflect.Map: + t = "map" + } + } + + switch t { + case "structure": + if field, ok := rtype.FieldByName("_"); ok { + tag = field.Tag + } + return parseStruct(r, node, tag) + case "list": + return parseList(r, node, tag) + case "map": + return parseMap(r, node, tag) + default: + return parseScalar(r, node, tag) + } +} + +// parseStruct deserializes a structure and its fields from an XMLNode. Any nested +// types in the structure will also be deserialized. +func parseStruct(r reflect.Value, node *XMLNode, tag reflect.StructTag) error { + t := r.Type() + if r.Kind() == reflect.Ptr { + if r.IsNil() { // create the structure if it's nil + s := reflect.New(r.Type().Elem()) + r.Set(s) + r = s + } + + r = r.Elem() + t = t.Elem() + } + + // unwrap any payloads + if payload := tag.Get("payload"); payload != "" { + field, _ := t.FieldByName(payload) + return parseStruct(r.FieldByName(payload), node, field.Tag) + } + + for i := 0; i < t.NumField(); i++ { + field := t.Field(i) + if c := field.Name[0:1]; strings.ToLower(c) == c { + continue // ignore unexported fields + } + + // figure out what this field is called + name := field.Name + if field.Tag.Get("flattened") != "" && field.Tag.Get("locationNameList") != "" { + name = field.Tag.Get("locationNameList") + } else if locName := field.Tag.Get("locationName"); locName != "" { + name = locName + } + + // try to find the field by name in elements + elems := node.Children[name] + + if elems == nil { // try to find the field in attributes + if val, ok := node.findElem(name); ok { + elems = []*XMLNode{{Text: val}} + } + } + + member := r.FieldByName(field.Name) + for _, elem := range elems { + err := parse(member, elem, field.Tag) + if err != nil { + return err + } + } + } + return nil +} + +// parseList deserializes a list of values from an XML node. Each list entry +// will also be deserialized. +func parseList(r reflect.Value, node *XMLNode, tag reflect.StructTag) error { + t := r.Type() + + if tag.Get("flattened") == "" { // look at all item entries + mname := "member" + if name := tag.Get("locationNameList"); name != "" { + mname = name + } + + if Children, ok := node.Children[mname]; ok { + if r.IsNil() { + r.Set(reflect.MakeSlice(t, len(Children), len(Children))) + } + + for i, c := range Children { + err := parse(r.Index(i), c, "") + if err != nil { + return err + } + } + } + } else { // flattened list means this is a single element + if r.IsNil() { + r.Set(reflect.MakeSlice(t, 0, 0)) + } + + childR := reflect.Zero(t.Elem()) + r.Set(reflect.Append(r, childR)) + err := parse(r.Index(r.Len()-1), node, "") + if err != nil { + return err + } + } + + return nil +} + +// parseMap deserializes a map from an XMLNode. The direct children of the XMLNode +// will also be deserialized as map entries. +func parseMap(r reflect.Value, node *XMLNode, tag reflect.StructTag) error { + if r.IsNil() { + r.Set(reflect.MakeMap(r.Type())) + } + + if tag.Get("flattened") == "" { // look at all child entries + for _, entry := range node.Children["entry"] { + parseMapEntry(r, entry, tag) + } + } else { // this element is itself an entry + parseMapEntry(r, node, tag) + } + + return nil +} + +// parseMapEntry deserializes a map entry from a XML node. +func parseMapEntry(r reflect.Value, node *XMLNode, tag reflect.StructTag) error { + kname, vname := "key", "value" + if n := tag.Get("locationNameKey"); n != "" { + kname = n + } + if n := tag.Get("locationNameValue"); n != "" { + vname = n + } + + keys, ok := node.Children[kname] + values := node.Children[vname] + if ok { + for i, key := range keys { + keyR := reflect.ValueOf(key.Text) + value := values[i] + valueR := reflect.New(r.Type().Elem()).Elem() + + parse(valueR, value, "") + r.SetMapIndex(keyR, valueR) + } + } + return nil +} + +// parseScaller deserializes an XMLNode value into a concrete type based on the +// interface type of r. +// +// Error is returned if the deserialization fails due to invalid type conversion, +// or unsupported interface type. +func parseScalar(r reflect.Value, node *XMLNode, tag reflect.StructTag) error { + switch r.Interface().(type) { + case *string: + r.Set(reflect.ValueOf(&node.Text)) + return nil + case []byte: + b, err := base64.StdEncoding.DecodeString(node.Text) + if err != nil { + return err + } + r.Set(reflect.ValueOf(b)) + case *bool: + v, err := strconv.ParseBool(node.Text) + if err != nil { + return err + } + r.Set(reflect.ValueOf(&v)) + case *int64: + v, err := strconv.ParseInt(node.Text, 10, 64) + if err != nil { + return err + } + r.Set(reflect.ValueOf(&v)) + case *float64: + v, err := strconv.ParseFloat(node.Text, 64) + if err != nil { + return err + } + r.Set(reflect.ValueOf(&v)) + case *time.Time: + format := tag.Get("timestampFormat") + if len(format) == 0 { + format = protocol.ISO8601TimeFormatName + } + + t, err := protocol.ParseTime(format, node.Text) + if err != nil { + return err + } + r.Set(reflect.ValueOf(&t)) + default: + return fmt.Errorf("unsupported value: %v (%s)", r.Interface(), r.Type()) + } + return nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/xml_to_struct.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/xml_to_struct.go new file mode 100644 index 0000000..42f7164 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/xml_to_struct.go @@ -0,0 +1,159 @@ +package xmlutil + +import ( + "encoding/xml" + "fmt" + "io" + "sort" +) + +// A XMLNode contains the values to be encoded or decoded. +type XMLNode struct { + Name xml.Name `json:",omitempty"` + Children map[string][]*XMLNode `json:",omitempty"` + Text string `json:",omitempty"` + Attr []xml.Attr `json:",omitempty"` + + namespaces map[string]string + parent *XMLNode +} + +// NewXMLElement returns a pointer to a new XMLNode initialized to default values. +func NewXMLElement(name xml.Name) *XMLNode { + return &XMLNode{ + Name: name, + Children: map[string][]*XMLNode{}, + Attr: []xml.Attr{}, + } +} + +// AddChild adds child to the XMLNode. +func (n *XMLNode) AddChild(child *XMLNode) { + child.parent = n + if _, ok := n.Children[child.Name.Local]; !ok { + n.Children[child.Name.Local] = []*XMLNode{} + } + n.Children[child.Name.Local] = append(n.Children[child.Name.Local], child) +} + +// XMLToStruct converts a xml.Decoder stream to XMLNode with nested values. +func XMLToStruct(d *xml.Decoder, s *xml.StartElement) (*XMLNode, error) { + out := &XMLNode{} + for { + tok, err := d.Token() + if err != nil { + if err == io.EOF { + break + } else { + return out, err + } + } + + if tok == nil { + break + } + + switch typed := tok.(type) { + case xml.CharData: + out.Text = string(typed.Copy()) + case xml.StartElement: + el := typed.Copy() + out.Attr = el.Attr + if out.Children == nil { + out.Children = map[string][]*XMLNode{} + } + + name := typed.Name.Local + slice := out.Children[name] + if slice == nil { + slice = []*XMLNode{} + } + node, e := XMLToStruct(d, &el) + out.findNamespaces() + if e != nil { + return out, e + } + node.Name = typed.Name + node.findNamespaces() + tempOut := *out + // Save into a temp variable, simply because out gets squashed during + // loop iterations + node.parent = &tempOut + slice = append(slice, node) + out.Children[name] = slice + case xml.EndElement: + if s != nil && s.Name.Local == typed.Name.Local { // matching end token + return out, nil + } + out = &XMLNode{} + } + } + return out, nil +} + +func (n *XMLNode) findNamespaces() { + ns := map[string]string{} + for _, a := range n.Attr { + if a.Name.Space == "xmlns" { + ns[a.Value] = a.Name.Local + } + } + + n.namespaces = ns +} + +func (n *XMLNode) findElem(name string) (string, bool) { + for node := n; node != nil; node = node.parent { + for _, a := range node.Attr { + namespace := a.Name.Space + if v, ok := node.namespaces[namespace]; ok { + namespace = v + } + if name == fmt.Sprintf("%s:%s", namespace, a.Name.Local) { + return a.Value, true + } + } + } + return "", false +} + +// StructToXML writes an XMLNode to a xml.Encoder as tokens. +func StructToXML(e *xml.Encoder, node *XMLNode, sorted bool) error { + // Sort Attributes + attrs := node.Attr + if sorted { + sortedAttrs := make([]xml.Attr, len(attrs)) + for _, k := range node.Attr { + sortedAttrs = append(sortedAttrs, k) + } + sort.Sort(xmlAttrSlice(sortedAttrs)) + attrs = sortedAttrs + } + + e.EncodeToken(xml.StartElement{Name: node.Name, Attr: attrs}) + + if node.Text != "" { + e.EncodeToken(xml.CharData([]byte(node.Text))) + } else if sorted { + sortedNames := []string{} + for k := range node.Children { + sortedNames = append(sortedNames, k) + } + sort.Strings(sortedNames) + + for _, k := range sortedNames { + for _, v := range node.Children[k] { + StructToXML(e, v, sorted) + } + } + } else { + for _, c := range node.Children { + for _, v := range c { + StructToXML(e, v, sorted) + } + } + } + + e.EncodeToken(xml.EndElement{Name: node.Name}) + return e.Flush() +} 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 new file mode 100644 index 0000000..5b501e8 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go @@ -0,0 +1,98631 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +package ec2 + +import ( + "fmt" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awsutil" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/private/protocol" + "github.com/aws/aws-sdk-go/private/protocol/ec2query" +) + +const opAcceptReservedInstancesExchangeQuote = "AcceptReservedInstancesExchangeQuote" + +// AcceptReservedInstancesExchangeQuoteRequest generates a "aws/request.Request" representing the +// client's request for the AcceptReservedInstancesExchangeQuote operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AcceptReservedInstancesExchangeQuote for more information on using the AcceptReservedInstancesExchangeQuote +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AcceptReservedInstancesExchangeQuoteRequest method. +// req, resp := client.AcceptReservedInstancesExchangeQuoteRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptReservedInstancesExchangeQuote +func (c *EC2) AcceptReservedInstancesExchangeQuoteRequest(input *AcceptReservedInstancesExchangeQuoteInput) (req *request.Request, output *AcceptReservedInstancesExchangeQuoteOutput) { + op := &request.Operation{ + Name: opAcceptReservedInstancesExchangeQuote, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AcceptReservedInstancesExchangeQuoteInput{} + } + + output = &AcceptReservedInstancesExchangeQuoteOutput{} + req = c.newRequest(op, input, output) + return +} + +// AcceptReservedInstancesExchangeQuote API operation for Amazon Elastic Compute Cloud. +// +// Accepts the Convertible Reserved Instance exchange quote described in the +// GetReservedInstancesExchangeQuote call. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AcceptReservedInstancesExchangeQuote for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptReservedInstancesExchangeQuote +func (c *EC2) AcceptReservedInstancesExchangeQuote(input *AcceptReservedInstancesExchangeQuoteInput) (*AcceptReservedInstancesExchangeQuoteOutput, error) { + req, out := c.AcceptReservedInstancesExchangeQuoteRequest(input) + return out, req.Send() +} + +// AcceptReservedInstancesExchangeQuoteWithContext is the same as AcceptReservedInstancesExchangeQuote with the addition of +// the ability to pass a context and additional request options. +// +// See AcceptReservedInstancesExchangeQuote for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AcceptReservedInstancesExchangeQuoteWithContext(ctx aws.Context, input *AcceptReservedInstancesExchangeQuoteInput, opts ...request.Option) (*AcceptReservedInstancesExchangeQuoteOutput, error) { + req, out := c.AcceptReservedInstancesExchangeQuoteRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAcceptTransitGatewayVpcAttachment = "AcceptTransitGatewayVpcAttachment" + +// AcceptTransitGatewayVpcAttachmentRequest generates a "aws/request.Request" representing the +// client's request for the AcceptTransitGatewayVpcAttachment operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AcceptTransitGatewayVpcAttachment for more information on using the AcceptTransitGatewayVpcAttachment +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AcceptTransitGatewayVpcAttachmentRequest method. +// req, resp := client.AcceptTransitGatewayVpcAttachmentRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptTransitGatewayVpcAttachment +func (c *EC2) AcceptTransitGatewayVpcAttachmentRequest(input *AcceptTransitGatewayVpcAttachmentInput) (req *request.Request, output *AcceptTransitGatewayVpcAttachmentOutput) { + op := &request.Operation{ + Name: opAcceptTransitGatewayVpcAttachment, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AcceptTransitGatewayVpcAttachmentInput{} + } + + output = &AcceptTransitGatewayVpcAttachmentOutput{} + req = c.newRequest(op, input, output) + return +} + +// AcceptTransitGatewayVpcAttachment API operation for Amazon Elastic Compute Cloud. +// +// Accepts a request to attach a VPC to a transit gateway. +// +// The VPC attachment must be in the pendingAcceptance state. Use DescribeTransitGatewayVpcAttachments +// to view your pending VPC attachment requests. Use RejectTransitGatewayVpcAttachment +// to reject a VPC attachment request. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AcceptTransitGatewayVpcAttachment for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptTransitGatewayVpcAttachment +func (c *EC2) AcceptTransitGatewayVpcAttachment(input *AcceptTransitGatewayVpcAttachmentInput) (*AcceptTransitGatewayVpcAttachmentOutput, error) { + req, out := c.AcceptTransitGatewayVpcAttachmentRequest(input) + return out, req.Send() +} + +// AcceptTransitGatewayVpcAttachmentWithContext is the same as AcceptTransitGatewayVpcAttachment with the addition of +// the ability to pass a context and additional request options. +// +// See AcceptTransitGatewayVpcAttachment for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AcceptTransitGatewayVpcAttachmentWithContext(ctx aws.Context, input *AcceptTransitGatewayVpcAttachmentInput, opts ...request.Option) (*AcceptTransitGatewayVpcAttachmentOutput, error) { + req, out := c.AcceptTransitGatewayVpcAttachmentRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAcceptVpcEndpointConnections = "AcceptVpcEndpointConnections" + +// AcceptVpcEndpointConnectionsRequest generates a "aws/request.Request" representing the +// client's request for the AcceptVpcEndpointConnections operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AcceptVpcEndpointConnections for more information on using the AcceptVpcEndpointConnections +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AcceptVpcEndpointConnectionsRequest method. +// req, resp := client.AcceptVpcEndpointConnectionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptVpcEndpointConnections +func (c *EC2) AcceptVpcEndpointConnectionsRequest(input *AcceptVpcEndpointConnectionsInput) (req *request.Request, output *AcceptVpcEndpointConnectionsOutput) { + op := &request.Operation{ + Name: opAcceptVpcEndpointConnections, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AcceptVpcEndpointConnectionsInput{} + } + + output = &AcceptVpcEndpointConnectionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// AcceptVpcEndpointConnections API operation for Amazon Elastic Compute Cloud. +// +// Accepts one or more interface VPC endpoint connection requests to your VPC +// endpoint service. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AcceptVpcEndpointConnections for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptVpcEndpointConnections +func (c *EC2) AcceptVpcEndpointConnections(input *AcceptVpcEndpointConnectionsInput) (*AcceptVpcEndpointConnectionsOutput, error) { + req, out := c.AcceptVpcEndpointConnectionsRequest(input) + return out, req.Send() +} + +// AcceptVpcEndpointConnectionsWithContext is the same as AcceptVpcEndpointConnections with the addition of +// the ability to pass a context and additional request options. +// +// See AcceptVpcEndpointConnections for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AcceptVpcEndpointConnectionsWithContext(ctx aws.Context, input *AcceptVpcEndpointConnectionsInput, opts ...request.Option) (*AcceptVpcEndpointConnectionsOutput, error) { + req, out := c.AcceptVpcEndpointConnectionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAcceptVpcPeeringConnection = "AcceptVpcPeeringConnection" + +// AcceptVpcPeeringConnectionRequest generates a "aws/request.Request" representing the +// client's request for the AcceptVpcPeeringConnection operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AcceptVpcPeeringConnection for more information on using the AcceptVpcPeeringConnection +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AcceptVpcPeeringConnectionRequest method. +// req, resp := client.AcceptVpcPeeringConnectionRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptVpcPeeringConnection +func (c *EC2) AcceptVpcPeeringConnectionRequest(input *AcceptVpcPeeringConnectionInput) (req *request.Request, output *AcceptVpcPeeringConnectionOutput) { + op := &request.Operation{ + Name: opAcceptVpcPeeringConnection, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AcceptVpcPeeringConnectionInput{} + } + + output = &AcceptVpcPeeringConnectionOutput{} + req = c.newRequest(op, input, output) + return +} + +// AcceptVpcPeeringConnection API operation for Amazon Elastic Compute Cloud. +// +// Accept a VPC peering connection request. To accept a request, the VPC peering +// connection must be in the pending-acceptance state, and you must be the owner +// of the peer VPC. Use DescribeVpcPeeringConnections to view your outstanding +// VPC peering connection requests. +// +// For an inter-Region VPC peering connection request, you must accept the VPC +// peering connection in the Region of the accepter VPC. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AcceptVpcPeeringConnection for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptVpcPeeringConnection +func (c *EC2) AcceptVpcPeeringConnection(input *AcceptVpcPeeringConnectionInput) (*AcceptVpcPeeringConnectionOutput, error) { + req, out := c.AcceptVpcPeeringConnectionRequest(input) + return out, req.Send() +} + +// AcceptVpcPeeringConnectionWithContext is the same as AcceptVpcPeeringConnection with the addition of +// the ability to pass a context and additional request options. +// +// See AcceptVpcPeeringConnection for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AcceptVpcPeeringConnectionWithContext(ctx aws.Context, input *AcceptVpcPeeringConnectionInput, opts ...request.Option) (*AcceptVpcPeeringConnectionOutput, error) { + req, out := c.AcceptVpcPeeringConnectionRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAdvertiseByoipCidr = "AdvertiseByoipCidr" + +// AdvertiseByoipCidrRequest generates a "aws/request.Request" representing the +// client's request for the AdvertiseByoipCidr operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AdvertiseByoipCidr for more information on using the AdvertiseByoipCidr +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AdvertiseByoipCidrRequest method. +// req, resp := client.AdvertiseByoipCidrRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AdvertiseByoipCidr +func (c *EC2) AdvertiseByoipCidrRequest(input *AdvertiseByoipCidrInput) (req *request.Request, output *AdvertiseByoipCidrOutput) { + op := &request.Operation{ + Name: opAdvertiseByoipCidr, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AdvertiseByoipCidrInput{} + } + + output = &AdvertiseByoipCidrOutput{} + req = c.newRequest(op, input, output) + return +} + +// AdvertiseByoipCidr API operation for Amazon Elastic Compute Cloud. +// +// Advertises an IPv4 address range that is provisioned for use with your AWS +// resources through bring your own IP addresses (BYOIP). +// +// You can perform this operation at most once every 10 seconds, even if you +// specify different address ranges each time. +// +// We recommend that you stop advertising the BYOIP CIDR from other locations +// when you advertise it from AWS. To minimize down time, you can configure +// your AWS resources to use an address from a BYOIP CIDR before it is advertised, +// and then simultaneously stop advertising it from the current location and +// start advertising it through AWS. +// +// It can take a few minutes before traffic to the specified addresses starts +// routing to AWS because of BGP propagation delays. +// +// To stop advertising the BYOIP CIDR, use WithdrawByoipCidr. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AdvertiseByoipCidr for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AdvertiseByoipCidr +func (c *EC2) AdvertiseByoipCidr(input *AdvertiseByoipCidrInput) (*AdvertiseByoipCidrOutput, error) { + req, out := c.AdvertiseByoipCidrRequest(input) + return out, req.Send() +} + +// AdvertiseByoipCidrWithContext is the same as AdvertiseByoipCidr with the addition of +// the ability to pass a context and additional request options. +// +// See AdvertiseByoipCidr for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AdvertiseByoipCidrWithContext(ctx aws.Context, input *AdvertiseByoipCidrInput, opts ...request.Option) (*AdvertiseByoipCidrOutput, error) { + req, out := c.AdvertiseByoipCidrRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAllocateAddress = "AllocateAddress" + +// AllocateAddressRequest generates a "aws/request.Request" representing the +// client's request for the AllocateAddress operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AllocateAddress for more information on using the AllocateAddress +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AllocateAddressRequest method. +// req, resp := client.AllocateAddressRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AllocateAddress +func (c *EC2) AllocateAddressRequest(input *AllocateAddressInput) (req *request.Request, output *AllocateAddressOutput) { + op := &request.Operation{ + Name: opAllocateAddress, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AllocateAddressInput{} + } + + output = &AllocateAddressOutput{} + req = c.newRequest(op, input, output) + return +} + +// AllocateAddress API operation for Amazon Elastic Compute Cloud. +// +// Allocates an Elastic IP address to your AWS account. After you allocate the +// Elastic IP address you can associate it with an instance or network interface. +// After you release an Elastic IP address, it is released to the IP address +// pool and can be allocated to a different AWS account. +// +// You can allocate an Elastic IP address from an address pool owned by AWS +// or from an address pool created from a public IPv4 address range that you +// have brought to AWS for use with your AWS resources using bring your own +// IP addresses (BYOIP). For more information, see Bring Your Own IP Addresses +// (BYOIP) (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// [EC2-VPC] If you release an Elastic IP address, you might be able to recover +// it. You cannot recover an Elastic IP address that you released after it is +// allocated to another AWS account. You cannot recover an Elastic IP address +// for EC2-Classic. To attempt to recover an Elastic IP address that you released, +// specify it in this operation. +// +// An Elastic IP address is for use either in the EC2-Classic platform or in +// a VPC. By default, you can allocate 5 Elastic IP addresses for EC2-Classic +// per Region and 5 Elastic IP addresses for EC2-VPC per Region. +// +// For more information, see Elastic IP Addresses (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AllocateAddress for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AllocateAddress +func (c *EC2) AllocateAddress(input *AllocateAddressInput) (*AllocateAddressOutput, error) { + req, out := c.AllocateAddressRequest(input) + return out, req.Send() +} + +// AllocateAddressWithContext is the same as AllocateAddress with the addition of +// the ability to pass a context and additional request options. +// +// See AllocateAddress for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AllocateAddressWithContext(ctx aws.Context, input *AllocateAddressInput, opts ...request.Option) (*AllocateAddressOutput, error) { + req, out := c.AllocateAddressRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAllocateHosts = "AllocateHosts" + +// AllocateHostsRequest generates a "aws/request.Request" representing the +// client's request for the AllocateHosts operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AllocateHosts for more information on using the AllocateHosts +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AllocateHostsRequest method. +// req, resp := client.AllocateHostsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AllocateHosts +func (c *EC2) AllocateHostsRequest(input *AllocateHostsInput) (req *request.Request, output *AllocateHostsOutput) { + op := &request.Operation{ + Name: opAllocateHosts, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AllocateHostsInput{} + } + + output = &AllocateHostsOutput{} + req = c.newRequest(op, input, output) + return +} + +// AllocateHosts API operation for Amazon Elastic Compute Cloud. +// +// Allocates a Dedicated Host to your account. At a minimum, specify the instance +// size type, Availability Zone, and quantity of hosts to allocate. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AllocateHosts for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AllocateHosts +func (c *EC2) AllocateHosts(input *AllocateHostsInput) (*AllocateHostsOutput, error) { + req, out := c.AllocateHostsRequest(input) + return out, req.Send() +} + +// AllocateHostsWithContext is the same as AllocateHosts with the addition of +// the ability to pass a context and additional request options. +// +// See AllocateHosts for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AllocateHostsWithContext(ctx aws.Context, input *AllocateHostsInput, opts ...request.Option) (*AllocateHostsOutput, error) { + req, out := c.AllocateHostsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opApplySecurityGroupsToClientVpnTargetNetwork = "ApplySecurityGroupsToClientVpnTargetNetwork" + +// ApplySecurityGroupsToClientVpnTargetNetworkRequest generates a "aws/request.Request" representing the +// client's request for the ApplySecurityGroupsToClientVpnTargetNetwork operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ApplySecurityGroupsToClientVpnTargetNetwork for more information on using the ApplySecurityGroupsToClientVpnTargetNetwork +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ApplySecurityGroupsToClientVpnTargetNetworkRequest method. +// req, resp := client.ApplySecurityGroupsToClientVpnTargetNetworkRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ApplySecurityGroupsToClientVpnTargetNetwork +func (c *EC2) ApplySecurityGroupsToClientVpnTargetNetworkRequest(input *ApplySecurityGroupsToClientVpnTargetNetworkInput) (req *request.Request, output *ApplySecurityGroupsToClientVpnTargetNetworkOutput) { + op := &request.Operation{ + Name: opApplySecurityGroupsToClientVpnTargetNetwork, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ApplySecurityGroupsToClientVpnTargetNetworkInput{} + } + + output = &ApplySecurityGroupsToClientVpnTargetNetworkOutput{} + req = c.newRequest(op, input, output) + return +} + +// ApplySecurityGroupsToClientVpnTargetNetwork API operation for Amazon Elastic Compute Cloud. +// +// Applies a security group to the association between the target network and +// the Client VPN endpoint. This action replaces the existing security groups +// with the specified security groups. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ApplySecurityGroupsToClientVpnTargetNetwork for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ApplySecurityGroupsToClientVpnTargetNetwork +func (c *EC2) ApplySecurityGroupsToClientVpnTargetNetwork(input *ApplySecurityGroupsToClientVpnTargetNetworkInput) (*ApplySecurityGroupsToClientVpnTargetNetworkOutput, error) { + req, out := c.ApplySecurityGroupsToClientVpnTargetNetworkRequest(input) + return out, req.Send() +} + +// ApplySecurityGroupsToClientVpnTargetNetworkWithContext is the same as ApplySecurityGroupsToClientVpnTargetNetwork with the addition of +// the ability to pass a context and additional request options. +// +// See ApplySecurityGroupsToClientVpnTargetNetwork for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ApplySecurityGroupsToClientVpnTargetNetworkWithContext(ctx aws.Context, input *ApplySecurityGroupsToClientVpnTargetNetworkInput, opts ...request.Option) (*ApplySecurityGroupsToClientVpnTargetNetworkOutput, error) { + req, out := c.ApplySecurityGroupsToClientVpnTargetNetworkRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAssignIpv6Addresses = "AssignIpv6Addresses" + +// AssignIpv6AddressesRequest generates a "aws/request.Request" representing the +// client's request for the AssignIpv6Addresses operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AssignIpv6Addresses for more information on using the AssignIpv6Addresses +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AssignIpv6AddressesRequest method. +// req, resp := client.AssignIpv6AddressesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssignIpv6Addresses +func (c *EC2) AssignIpv6AddressesRequest(input *AssignIpv6AddressesInput) (req *request.Request, output *AssignIpv6AddressesOutput) { + op := &request.Operation{ + Name: opAssignIpv6Addresses, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AssignIpv6AddressesInput{} + } + + output = &AssignIpv6AddressesOutput{} + req = c.newRequest(op, input, output) + return +} + +// AssignIpv6Addresses API operation for Amazon Elastic Compute Cloud. +// +// Assigns one or more IPv6 addresses to the specified network interface. You +// can specify one or more specific IPv6 addresses, or you can specify the number +// of IPv6 addresses to be automatically assigned from within the subnet's IPv6 +// CIDR block range. You can assign as many IPv6 addresses to a network interface +// as you can assign private IPv4 addresses, and the limit varies per instance +// type. For information, see IP Addresses Per Network Interface Per Instance +// Type (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AssignIpv6Addresses for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssignIpv6Addresses +func (c *EC2) AssignIpv6Addresses(input *AssignIpv6AddressesInput) (*AssignIpv6AddressesOutput, error) { + req, out := c.AssignIpv6AddressesRequest(input) + return out, req.Send() +} + +// AssignIpv6AddressesWithContext is the same as AssignIpv6Addresses with the addition of +// the ability to pass a context and additional request options. +// +// See AssignIpv6Addresses for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AssignIpv6AddressesWithContext(ctx aws.Context, input *AssignIpv6AddressesInput, opts ...request.Option) (*AssignIpv6AddressesOutput, error) { + req, out := c.AssignIpv6AddressesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAssignPrivateIpAddresses = "AssignPrivateIpAddresses" + +// AssignPrivateIpAddressesRequest generates a "aws/request.Request" representing the +// client's request for the AssignPrivateIpAddresses operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AssignPrivateIpAddresses for more information on using the AssignPrivateIpAddresses +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AssignPrivateIpAddressesRequest method. +// req, resp := client.AssignPrivateIpAddressesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssignPrivateIpAddresses +func (c *EC2) AssignPrivateIpAddressesRequest(input *AssignPrivateIpAddressesInput) (req *request.Request, output *AssignPrivateIpAddressesOutput) { + op := &request.Operation{ + Name: opAssignPrivateIpAddresses, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AssignPrivateIpAddressesInput{} + } + + output = &AssignPrivateIpAddressesOutput{} + req = c.newRequest(op, input, output) + return +} + +// AssignPrivateIpAddresses API operation for Amazon Elastic Compute Cloud. +// +// Assigns one or more secondary private IP addresses to the specified network +// interface. +// +// You can specify one or more specific secondary IP addresses, or you can specify +// the number of secondary IP addresses to be automatically assigned within +// the subnet's CIDR block range. The number of secondary IP addresses that +// you can assign to an instance varies by instance type. For information about +// instance types, see Instance Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) +// in the Amazon Elastic Compute Cloud User Guide. For more information about +// Elastic IP addresses, see Elastic IP Addresses (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// When you move a secondary private IP address to another network interface, +// any Elastic IP address that is associated with the IP address is also moved. +// +// Remapping an IP address is an asynchronous operation. When you move an IP +// address from one network interface to another, check network/interfaces/macs/mac/local-ipv4s +// in the instance metadata to confirm that the remapping is complete. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AssignPrivateIpAddresses for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssignPrivateIpAddresses +func (c *EC2) AssignPrivateIpAddresses(input *AssignPrivateIpAddressesInput) (*AssignPrivateIpAddressesOutput, error) { + req, out := c.AssignPrivateIpAddressesRequest(input) + return out, req.Send() +} + +// AssignPrivateIpAddressesWithContext is the same as AssignPrivateIpAddresses with the addition of +// the ability to pass a context and additional request options. +// +// See AssignPrivateIpAddresses for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AssignPrivateIpAddressesWithContext(ctx aws.Context, input *AssignPrivateIpAddressesInput, opts ...request.Option) (*AssignPrivateIpAddressesOutput, error) { + req, out := c.AssignPrivateIpAddressesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAssociateAddress = "AssociateAddress" + +// AssociateAddressRequest generates a "aws/request.Request" representing the +// client's request for the AssociateAddress operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AssociateAddress for more information on using the AssociateAddress +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AssociateAddressRequest method. +// req, resp := client.AssociateAddressRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateAddress +func (c *EC2) AssociateAddressRequest(input *AssociateAddressInput) (req *request.Request, output *AssociateAddressOutput) { + op := &request.Operation{ + Name: opAssociateAddress, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AssociateAddressInput{} + } + + output = &AssociateAddressOutput{} + req = c.newRequest(op, input, output) + return +} + +// AssociateAddress API operation for Amazon Elastic Compute Cloud. +// +// Associates an Elastic IP address with an instance or a network interface. +// Before you can use an Elastic IP address, you must allocate it to your account. +// +// An Elastic IP address is for use in either the EC2-Classic platform or in +// a VPC. For more information, see Elastic IP Addresses (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// [EC2-Classic, VPC in an EC2-VPC-only account] If the Elastic IP address is +// already associated with a different instance, it is disassociated from that +// instance and associated with the specified instance. If you associate an +// Elastic IP address with an instance that has an existing Elastic IP address, +// the existing address is disassociated from the instance, but remains allocated +// to your account. +// +// [VPC in an EC2-Classic account] If you don't specify a private IP address, +// the Elastic IP address is associated with the primary IP address. If the +// Elastic IP address is already associated with a different instance or a network +// interface, you get an error unless you allow reassociation. You cannot associate +// an Elastic IP address with an instance or network interface that has an existing +// Elastic IP address. +// +// This is an idempotent operation. If you perform the operation more than once, +// Amazon EC2 doesn't return an error, and you may be charged for each time +// the Elastic IP address is remapped to the same instance. For more information, +// see the Elastic IP Addresses section of Amazon EC2 Pricing (http://aws.amazon.com/ec2/pricing/). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AssociateAddress for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateAddress +func (c *EC2) AssociateAddress(input *AssociateAddressInput) (*AssociateAddressOutput, error) { + req, out := c.AssociateAddressRequest(input) + return out, req.Send() +} + +// AssociateAddressWithContext is the same as AssociateAddress with the addition of +// the ability to pass a context and additional request options. +// +// See AssociateAddress for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AssociateAddressWithContext(ctx aws.Context, input *AssociateAddressInput, opts ...request.Option) (*AssociateAddressOutput, error) { + req, out := c.AssociateAddressRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAssociateClientVpnTargetNetwork = "AssociateClientVpnTargetNetwork" + +// AssociateClientVpnTargetNetworkRequest generates a "aws/request.Request" representing the +// client's request for the AssociateClientVpnTargetNetwork operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AssociateClientVpnTargetNetwork for more information on using the AssociateClientVpnTargetNetwork +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AssociateClientVpnTargetNetworkRequest method. +// req, resp := client.AssociateClientVpnTargetNetworkRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateClientVpnTargetNetwork +func (c *EC2) AssociateClientVpnTargetNetworkRequest(input *AssociateClientVpnTargetNetworkInput) (req *request.Request, output *AssociateClientVpnTargetNetworkOutput) { + op := &request.Operation{ + Name: opAssociateClientVpnTargetNetwork, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AssociateClientVpnTargetNetworkInput{} + } + + output = &AssociateClientVpnTargetNetworkOutput{} + req = c.newRequest(op, input, output) + return +} + +// AssociateClientVpnTargetNetwork API operation for Amazon Elastic Compute Cloud. +// +// Associates a target network with a Client VPN endpoint. A target network +// is a subnet in a VPC. You can associate multiple subnets from the same VPC +// with a Client VPN endpoint. You can associate only one subnet in each Availability +// Zone. We recommend that you associate at least two subnets to provide Availability +// Zone redundancy. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AssociateClientVpnTargetNetwork for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateClientVpnTargetNetwork +func (c *EC2) AssociateClientVpnTargetNetwork(input *AssociateClientVpnTargetNetworkInput) (*AssociateClientVpnTargetNetworkOutput, error) { + req, out := c.AssociateClientVpnTargetNetworkRequest(input) + return out, req.Send() +} + +// AssociateClientVpnTargetNetworkWithContext is the same as AssociateClientVpnTargetNetwork with the addition of +// the ability to pass a context and additional request options. +// +// See AssociateClientVpnTargetNetwork for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AssociateClientVpnTargetNetworkWithContext(ctx aws.Context, input *AssociateClientVpnTargetNetworkInput, opts ...request.Option) (*AssociateClientVpnTargetNetworkOutput, error) { + req, out := c.AssociateClientVpnTargetNetworkRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAssociateDhcpOptions = "AssociateDhcpOptions" + +// AssociateDhcpOptionsRequest generates a "aws/request.Request" representing the +// client's request for the AssociateDhcpOptions operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AssociateDhcpOptions for more information on using the AssociateDhcpOptions +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AssociateDhcpOptionsRequest method. +// req, resp := client.AssociateDhcpOptionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateDhcpOptions +func (c *EC2) AssociateDhcpOptionsRequest(input *AssociateDhcpOptionsInput) (req *request.Request, output *AssociateDhcpOptionsOutput) { + op := &request.Operation{ + Name: opAssociateDhcpOptions, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AssociateDhcpOptionsInput{} + } + + output = &AssociateDhcpOptionsOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// AssociateDhcpOptions API operation for Amazon Elastic Compute Cloud. +// +// Associates a set of DHCP options (that you've previously created) with the +// specified VPC, or associates no DHCP options with the VPC. +// +// After you associate the options with the VPC, any existing instances and +// all new instances that you launch in that VPC use the options. You don't +// need to restart or relaunch the instances. They automatically pick up the +// changes within a few hours, depending on how frequently the instance renews +// its DHCP lease. You can explicitly renew the lease using the operating system +// on the instance. +// +// For more information, see DHCP Options Sets (https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AssociateDhcpOptions for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateDhcpOptions +func (c *EC2) AssociateDhcpOptions(input *AssociateDhcpOptionsInput) (*AssociateDhcpOptionsOutput, error) { + req, out := c.AssociateDhcpOptionsRequest(input) + return out, req.Send() +} + +// AssociateDhcpOptionsWithContext is the same as AssociateDhcpOptions with the addition of +// the ability to pass a context and additional request options. +// +// See AssociateDhcpOptions for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AssociateDhcpOptionsWithContext(ctx aws.Context, input *AssociateDhcpOptionsInput, opts ...request.Option) (*AssociateDhcpOptionsOutput, error) { + req, out := c.AssociateDhcpOptionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAssociateIamInstanceProfile = "AssociateIamInstanceProfile" + +// AssociateIamInstanceProfileRequest generates a "aws/request.Request" representing the +// client's request for the AssociateIamInstanceProfile operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AssociateIamInstanceProfile for more information on using the AssociateIamInstanceProfile +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AssociateIamInstanceProfileRequest method. +// req, resp := client.AssociateIamInstanceProfileRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateIamInstanceProfile +func (c *EC2) AssociateIamInstanceProfileRequest(input *AssociateIamInstanceProfileInput) (req *request.Request, output *AssociateIamInstanceProfileOutput) { + op := &request.Operation{ + Name: opAssociateIamInstanceProfile, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AssociateIamInstanceProfileInput{} + } + + output = &AssociateIamInstanceProfileOutput{} + req = c.newRequest(op, input, output) + return +} + +// AssociateIamInstanceProfile API operation for Amazon Elastic Compute Cloud. +// +// Associates an IAM instance profile with a running or stopped instance. You +// cannot associate more than one IAM instance profile with an instance. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AssociateIamInstanceProfile for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateIamInstanceProfile +func (c *EC2) AssociateIamInstanceProfile(input *AssociateIamInstanceProfileInput) (*AssociateIamInstanceProfileOutput, error) { + req, out := c.AssociateIamInstanceProfileRequest(input) + return out, req.Send() +} + +// AssociateIamInstanceProfileWithContext is the same as AssociateIamInstanceProfile with the addition of +// the ability to pass a context and additional request options. +// +// See AssociateIamInstanceProfile for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AssociateIamInstanceProfileWithContext(ctx aws.Context, input *AssociateIamInstanceProfileInput, opts ...request.Option) (*AssociateIamInstanceProfileOutput, error) { + req, out := c.AssociateIamInstanceProfileRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAssociateRouteTable = "AssociateRouteTable" + +// AssociateRouteTableRequest generates a "aws/request.Request" representing the +// client's request for the AssociateRouteTable operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AssociateRouteTable for more information on using the AssociateRouteTable +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AssociateRouteTableRequest method. +// req, resp := client.AssociateRouteTableRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateRouteTable +func (c *EC2) AssociateRouteTableRequest(input *AssociateRouteTableInput) (req *request.Request, output *AssociateRouteTableOutput) { + op := &request.Operation{ + Name: opAssociateRouteTable, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AssociateRouteTableInput{} + } + + output = &AssociateRouteTableOutput{} + req = c.newRequest(op, input, output) + return +} + +// AssociateRouteTable API operation for Amazon Elastic Compute Cloud. +// +// Associates a subnet with a route table. The subnet and route table must be +// in the same VPC. This association causes traffic originating from the subnet +// to be routed according to the routes in the route table. The action returns +// an association ID, which you need in order to disassociate the route table +// from the subnet later. A route table can be associated with multiple subnets. +// +// For more information, see Route Tables (https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AssociateRouteTable for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateRouteTable +func (c *EC2) AssociateRouteTable(input *AssociateRouteTableInput) (*AssociateRouteTableOutput, error) { + req, out := c.AssociateRouteTableRequest(input) + return out, req.Send() +} + +// AssociateRouteTableWithContext is the same as AssociateRouteTable with the addition of +// the ability to pass a context and additional request options. +// +// See AssociateRouteTable for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AssociateRouteTableWithContext(ctx aws.Context, input *AssociateRouteTableInput, opts ...request.Option) (*AssociateRouteTableOutput, error) { + req, out := c.AssociateRouteTableRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAssociateSubnetCidrBlock = "AssociateSubnetCidrBlock" + +// AssociateSubnetCidrBlockRequest generates a "aws/request.Request" representing the +// client's request for the AssociateSubnetCidrBlock operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AssociateSubnetCidrBlock for more information on using the AssociateSubnetCidrBlock +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AssociateSubnetCidrBlockRequest method. +// req, resp := client.AssociateSubnetCidrBlockRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateSubnetCidrBlock +func (c *EC2) AssociateSubnetCidrBlockRequest(input *AssociateSubnetCidrBlockInput) (req *request.Request, output *AssociateSubnetCidrBlockOutput) { + op := &request.Operation{ + Name: opAssociateSubnetCidrBlock, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AssociateSubnetCidrBlockInput{} + } + + output = &AssociateSubnetCidrBlockOutput{} + req = c.newRequest(op, input, output) + return +} + +// AssociateSubnetCidrBlock API operation for Amazon Elastic Compute Cloud. +// +// Associates a CIDR block with your subnet. You can only associate a single +// IPv6 CIDR block with your subnet. An IPv6 CIDR block must have a prefix length +// of /64. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AssociateSubnetCidrBlock for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateSubnetCidrBlock +func (c *EC2) AssociateSubnetCidrBlock(input *AssociateSubnetCidrBlockInput) (*AssociateSubnetCidrBlockOutput, error) { + req, out := c.AssociateSubnetCidrBlockRequest(input) + return out, req.Send() +} + +// AssociateSubnetCidrBlockWithContext is the same as AssociateSubnetCidrBlock with the addition of +// the ability to pass a context and additional request options. +// +// See AssociateSubnetCidrBlock for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AssociateSubnetCidrBlockWithContext(ctx aws.Context, input *AssociateSubnetCidrBlockInput, opts ...request.Option) (*AssociateSubnetCidrBlockOutput, error) { + req, out := c.AssociateSubnetCidrBlockRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAssociateTransitGatewayRouteTable = "AssociateTransitGatewayRouteTable" + +// AssociateTransitGatewayRouteTableRequest generates a "aws/request.Request" representing the +// client's request for the AssociateTransitGatewayRouteTable operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AssociateTransitGatewayRouteTable for more information on using the AssociateTransitGatewayRouteTable +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AssociateTransitGatewayRouteTableRequest method. +// req, resp := client.AssociateTransitGatewayRouteTableRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateTransitGatewayRouteTable +func (c *EC2) AssociateTransitGatewayRouteTableRequest(input *AssociateTransitGatewayRouteTableInput) (req *request.Request, output *AssociateTransitGatewayRouteTableOutput) { + op := &request.Operation{ + Name: opAssociateTransitGatewayRouteTable, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AssociateTransitGatewayRouteTableInput{} + } + + output = &AssociateTransitGatewayRouteTableOutput{} + req = c.newRequest(op, input, output) + return +} + +// AssociateTransitGatewayRouteTable API operation for Amazon Elastic Compute Cloud. +// +// Associates the specified attachment with the specified transit gateway route +// table. You can associate only one route table with an attachment. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AssociateTransitGatewayRouteTable for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateTransitGatewayRouteTable +func (c *EC2) AssociateTransitGatewayRouteTable(input *AssociateTransitGatewayRouteTableInput) (*AssociateTransitGatewayRouteTableOutput, error) { + req, out := c.AssociateTransitGatewayRouteTableRequest(input) + return out, req.Send() +} + +// AssociateTransitGatewayRouteTableWithContext is the same as AssociateTransitGatewayRouteTable with the addition of +// the ability to pass a context and additional request options. +// +// See AssociateTransitGatewayRouteTable for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AssociateTransitGatewayRouteTableWithContext(ctx aws.Context, input *AssociateTransitGatewayRouteTableInput, opts ...request.Option) (*AssociateTransitGatewayRouteTableOutput, error) { + req, out := c.AssociateTransitGatewayRouteTableRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAssociateVpcCidrBlock = "AssociateVpcCidrBlock" + +// AssociateVpcCidrBlockRequest generates a "aws/request.Request" representing the +// client's request for the AssociateVpcCidrBlock operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AssociateVpcCidrBlock for more information on using the AssociateVpcCidrBlock +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AssociateVpcCidrBlockRequest method. +// req, resp := client.AssociateVpcCidrBlockRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateVpcCidrBlock +func (c *EC2) AssociateVpcCidrBlockRequest(input *AssociateVpcCidrBlockInput) (req *request.Request, output *AssociateVpcCidrBlockOutput) { + op := &request.Operation{ + Name: opAssociateVpcCidrBlock, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AssociateVpcCidrBlockInput{} + } + + output = &AssociateVpcCidrBlockOutput{} + req = c.newRequest(op, input, output) + return +} + +// AssociateVpcCidrBlock API operation for Amazon Elastic Compute Cloud. +// +// Associates a CIDR block with your VPC. You can associate a secondary IPv4 +// CIDR block, or you can associate an Amazon-provided IPv6 CIDR block. The +// IPv6 CIDR block size is fixed at /56. +// +// For more information about associating CIDR blocks with your VPC and applicable +// restrictions, see VPC and Subnet Sizing (https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html#VPC_Sizing) +// in the Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AssociateVpcCidrBlock for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateVpcCidrBlock +func (c *EC2) AssociateVpcCidrBlock(input *AssociateVpcCidrBlockInput) (*AssociateVpcCidrBlockOutput, error) { + req, out := c.AssociateVpcCidrBlockRequest(input) + return out, req.Send() +} + +// AssociateVpcCidrBlockWithContext is the same as AssociateVpcCidrBlock with the addition of +// the ability to pass a context and additional request options. +// +// See AssociateVpcCidrBlock for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AssociateVpcCidrBlockWithContext(ctx aws.Context, input *AssociateVpcCidrBlockInput, opts ...request.Option) (*AssociateVpcCidrBlockOutput, error) { + req, out := c.AssociateVpcCidrBlockRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAttachClassicLinkVpc = "AttachClassicLinkVpc" + +// AttachClassicLinkVpcRequest generates a "aws/request.Request" representing the +// client's request for the AttachClassicLinkVpc operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AttachClassicLinkVpc for more information on using the AttachClassicLinkVpc +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AttachClassicLinkVpcRequest method. +// req, resp := client.AttachClassicLinkVpcRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachClassicLinkVpc +func (c *EC2) AttachClassicLinkVpcRequest(input *AttachClassicLinkVpcInput) (req *request.Request, output *AttachClassicLinkVpcOutput) { + op := &request.Operation{ + Name: opAttachClassicLinkVpc, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AttachClassicLinkVpcInput{} + } + + output = &AttachClassicLinkVpcOutput{} + req = c.newRequest(op, input, output) + return +} + +// AttachClassicLinkVpc API operation for Amazon Elastic Compute Cloud. +// +// Links an EC2-Classic instance to a ClassicLink-enabled VPC through one or +// more of the VPC's security groups. You cannot link an EC2-Classic instance +// to more than one VPC at a time. You can only link an instance that's in the +// running state. An instance is automatically unlinked from a VPC when it's +// stopped - you can link it to the VPC again when you restart it. +// +// After you've linked an instance, you cannot change the VPC security groups +// that are associated with it. To change the security groups, you must first +// unlink the instance, and then link it again. +// +// Linking your instance to a VPC is sometimes referred to as attaching your +// instance. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AttachClassicLinkVpc for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachClassicLinkVpc +func (c *EC2) AttachClassicLinkVpc(input *AttachClassicLinkVpcInput) (*AttachClassicLinkVpcOutput, error) { + req, out := c.AttachClassicLinkVpcRequest(input) + return out, req.Send() +} + +// AttachClassicLinkVpcWithContext is the same as AttachClassicLinkVpc with the addition of +// the ability to pass a context and additional request options. +// +// See AttachClassicLinkVpc for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AttachClassicLinkVpcWithContext(ctx aws.Context, input *AttachClassicLinkVpcInput, opts ...request.Option) (*AttachClassicLinkVpcOutput, error) { + req, out := c.AttachClassicLinkVpcRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAttachInternetGateway = "AttachInternetGateway" + +// AttachInternetGatewayRequest generates a "aws/request.Request" representing the +// client's request for the AttachInternetGateway operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AttachInternetGateway for more information on using the AttachInternetGateway +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AttachInternetGatewayRequest method. +// req, resp := client.AttachInternetGatewayRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachInternetGateway +func (c *EC2) AttachInternetGatewayRequest(input *AttachInternetGatewayInput) (req *request.Request, output *AttachInternetGatewayOutput) { + op := &request.Operation{ + Name: opAttachInternetGateway, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AttachInternetGatewayInput{} + } + + output = &AttachInternetGatewayOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// AttachInternetGateway API operation for Amazon Elastic Compute Cloud. +// +// Attaches an internet gateway to a VPC, enabling connectivity between the +// internet and the VPC. For more information about your VPC and internet gateway, +// see the Amazon Virtual Private Cloud User Guide (https://docs.aws.amazon.com/vpc/latest/userguide/). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AttachInternetGateway for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachInternetGateway +func (c *EC2) AttachInternetGateway(input *AttachInternetGatewayInput) (*AttachInternetGatewayOutput, error) { + req, out := c.AttachInternetGatewayRequest(input) + return out, req.Send() +} + +// AttachInternetGatewayWithContext is the same as AttachInternetGateway with the addition of +// the ability to pass a context and additional request options. +// +// See AttachInternetGateway for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AttachInternetGatewayWithContext(ctx aws.Context, input *AttachInternetGatewayInput, opts ...request.Option) (*AttachInternetGatewayOutput, error) { + req, out := c.AttachInternetGatewayRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAttachNetworkInterface = "AttachNetworkInterface" + +// AttachNetworkInterfaceRequest generates a "aws/request.Request" representing the +// client's request for the AttachNetworkInterface operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AttachNetworkInterface for more information on using the AttachNetworkInterface +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AttachNetworkInterfaceRequest method. +// req, resp := client.AttachNetworkInterfaceRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachNetworkInterface +func (c *EC2) AttachNetworkInterfaceRequest(input *AttachNetworkInterfaceInput) (req *request.Request, output *AttachNetworkInterfaceOutput) { + op := &request.Operation{ + Name: opAttachNetworkInterface, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AttachNetworkInterfaceInput{} + } + + output = &AttachNetworkInterfaceOutput{} + req = c.newRequest(op, input, output) + return +} + +// AttachNetworkInterface API operation for Amazon Elastic Compute Cloud. +// +// Attaches a network interface to an instance. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AttachNetworkInterface for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachNetworkInterface +func (c *EC2) AttachNetworkInterface(input *AttachNetworkInterfaceInput) (*AttachNetworkInterfaceOutput, error) { + req, out := c.AttachNetworkInterfaceRequest(input) + return out, req.Send() +} + +// AttachNetworkInterfaceWithContext is the same as AttachNetworkInterface with the addition of +// the ability to pass a context and additional request options. +// +// See AttachNetworkInterface for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AttachNetworkInterfaceWithContext(ctx aws.Context, input *AttachNetworkInterfaceInput, opts ...request.Option) (*AttachNetworkInterfaceOutput, error) { + req, out := c.AttachNetworkInterfaceRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAttachVolume = "AttachVolume" + +// AttachVolumeRequest generates a "aws/request.Request" representing the +// client's request for the AttachVolume operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AttachVolume for more information on using the AttachVolume +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AttachVolumeRequest method. +// req, resp := client.AttachVolumeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachVolume +func (c *EC2) AttachVolumeRequest(input *AttachVolumeInput) (req *request.Request, output *VolumeAttachment) { + op := &request.Operation{ + Name: opAttachVolume, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AttachVolumeInput{} + } + + output = &VolumeAttachment{} + req = c.newRequest(op, input, output) + return +} + +// AttachVolume API operation for Amazon Elastic Compute Cloud. +// +// Attaches an EBS volume to a running or stopped instance and exposes it to +// the instance with the specified device name. +// +// Encrypted EBS volumes must be attached to instances that support Amazon EBS +// encryption. For more information, see Amazon EBS Encryption (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// After you attach an EBS volume, you must make it available. For more information, +// see Making an EBS Volume Available For Use (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-using-volumes.html). +// +// If a volume has an AWS Marketplace product code: +// +// * The volume can be attached only to a stopped instance. +// +// * AWS Marketplace product codes are copied from the volume to the instance. +// +// * You must be subscribed to the product. +// +// * The instance type and operating system of the instance must support +// the product. For example, you can't detach a volume from a Windows instance +// and attach it to a Linux instance. +// +// For more information, see Attaching Amazon EBS Volumes (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-attaching-volume.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AttachVolume for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachVolume +func (c *EC2) AttachVolume(input *AttachVolumeInput) (*VolumeAttachment, error) { + req, out := c.AttachVolumeRequest(input) + return out, req.Send() +} + +// AttachVolumeWithContext is the same as AttachVolume with the addition of +// the ability to pass a context and additional request options. +// +// See AttachVolume for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AttachVolumeWithContext(ctx aws.Context, input *AttachVolumeInput, opts ...request.Option) (*VolumeAttachment, error) { + req, out := c.AttachVolumeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAttachVpnGateway = "AttachVpnGateway" + +// AttachVpnGatewayRequest generates a "aws/request.Request" representing the +// client's request for the AttachVpnGateway operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AttachVpnGateway for more information on using the AttachVpnGateway +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AttachVpnGatewayRequest method. +// req, resp := client.AttachVpnGatewayRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachVpnGateway +func (c *EC2) AttachVpnGatewayRequest(input *AttachVpnGatewayInput) (req *request.Request, output *AttachVpnGatewayOutput) { + op := &request.Operation{ + Name: opAttachVpnGateway, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AttachVpnGatewayInput{} + } + + output = &AttachVpnGatewayOutput{} + req = c.newRequest(op, input, output) + return +} + +// AttachVpnGateway API operation for Amazon Elastic Compute Cloud. +// +// Attaches a virtual private gateway to a VPC. You can attach one virtual private +// gateway to one VPC at a time. +// +// For more information, see AWS Site-to-Site VPN (https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) +// in the AWS Site-to-Site VPN User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AttachVpnGateway for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AttachVpnGateway +func (c *EC2) AttachVpnGateway(input *AttachVpnGatewayInput) (*AttachVpnGatewayOutput, error) { + req, out := c.AttachVpnGatewayRequest(input) + return out, req.Send() +} + +// AttachVpnGatewayWithContext is the same as AttachVpnGateway with the addition of +// the ability to pass a context and additional request options. +// +// See AttachVpnGateway for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AttachVpnGatewayWithContext(ctx aws.Context, input *AttachVpnGatewayInput, opts ...request.Option) (*AttachVpnGatewayOutput, error) { + req, out := c.AttachVpnGatewayRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAuthorizeClientVpnIngress = "AuthorizeClientVpnIngress" + +// AuthorizeClientVpnIngressRequest generates a "aws/request.Request" representing the +// client's request for the AuthorizeClientVpnIngress operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AuthorizeClientVpnIngress for more information on using the AuthorizeClientVpnIngress +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AuthorizeClientVpnIngressRequest method. +// req, resp := client.AuthorizeClientVpnIngressRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AuthorizeClientVpnIngress +func (c *EC2) AuthorizeClientVpnIngressRequest(input *AuthorizeClientVpnIngressInput) (req *request.Request, output *AuthorizeClientVpnIngressOutput) { + op := &request.Operation{ + Name: opAuthorizeClientVpnIngress, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AuthorizeClientVpnIngressInput{} + } + + output = &AuthorizeClientVpnIngressOutput{} + req = c.newRequest(op, input, output) + return +} + +// AuthorizeClientVpnIngress API operation for Amazon Elastic Compute Cloud. +// +// Adds an ingress authorization rule to a Client VPN endpoint. Ingress authorization +// rules act as firewall rules that grant access to networks. You must configure +// ingress authorization rules to enable clients to access resources in AWS +// or on-premises networks. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AuthorizeClientVpnIngress for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AuthorizeClientVpnIngress +func (c *EC2) AuthorizeClientVpnIngress(input *AuthorizeClientVpnIngressInput) (*AuthorizeClientVpnIngressOutput, error) { + req, out := c.AuthorizeClientVpnIngressRequest(input) + return out, req.Send() +} + +// AuthorizeClientVpnIngressWithContext is the same as AuthorizeClientVpnIngress with the addition of +// the ability to pass a context and additional request options. +// +// See AuthorizeClientVpnIngress for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AuthorizeClientVpnIngressWithContext(ctx aws.Context, input *AuthorizeClientVpnIngressInput, opts ...request.Option) (*AuthorizeClientVpnIngressOutput, error) { + req, out := c.AuthorizeClientVpnIngressRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAuthorizeSecurityGroupEgress = "AuthorizeSecurityGroupEgress" + +// AuthorizeSecurityGroupEgressRequest generates a "aws/request.Request" representing the +// client's request for the AuthorizeSecurityGroupEgress operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AuthorizeSecurityGroupEgress for more information on using the AuthorizeSecurityGroupEgress +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AuthorizeSecurityGroupEgressRequest method. +// req, resp := client.AuthorizeSecurityGroupEgressRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AuthorizeSecurityGroupEgress +func (c *EC2) AuthorizeSecurityGroupEgressRequest(input *AuthorizeSecurityGroupEgressInput) (req *request.Request, output *AuthorizeSecurityGroupEgressOutput) { + op := &request.Operation{ + Name: opAuthorizeSecurityGroupEgress, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AuthorizeSecurityGroupEgressInput{} + } + + output = &AuthorizeSecurityGroupEgressOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// AuthorizeSecurityGroupEgress API operation for Amazon Elastic Compute Cloud. +// +// [VPC only] Adds the specified egress rules to a security group for use with +// a VPC. +// +// An outbound rule permits instances to send traffic to the specified IPv4 +// or IPv6 CIDR address ranges, or to the instances associated with the specified +// destination security groups. +// +// You specify a protocol for each rule (for example, TCP). For the TCP and +// UDP protocols, you must also specify the destination port or port range. +// For the ICMP protocol, you must also specify the ICMP type and code. You +// can use -1 for the type or code to mean all types or all codes. +// +// Rule changes are propagated to affected instances as quickly as possible. +// However, a small delay might occur. +// +// For more information about VPC security group limits, see Amazon VPC Limits +// (https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AuthorizeSecurityGroupEgress for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AuthorizeSecurityGroupEgress +func (c *EC2) AuthorizeSecurityGroupEgress(input *AuthorizeSecurityGroupEgressInput) (*AuthorizeSecurityGroupEgressOutput, error) { + req, out := c.AuthorizeSecurityGroupEgressRequest(input) + return out, req.Send() +} + +// AuthorizeSecurityGroupEgressWithContext is the same as AuthorizeSecurityGroupEgress with the addition of +// the ability to pass a context and additional request options. +// +// See AuthorizeSecurityGroupEgress for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AuthorizeSecurityGroupEgressWithContext(ctx aws.Context, input *AuthorizeSecurityGroupEgressInput, opts ...request.Option) (*AuthorizeSecurityGroupEgressOutput, error) { + req, out := c.AuthorizeSecurityGroupEgressRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAuthorizeSecurityGroupIngress = "AuthorizeSecurityGroupIngress" + +// AuthorizeSecurityGroupIngressRequest generates a "aws/request.Request" representing the +// client's request for the AuthorizeSecurityGroupIngress operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AuthorizeSecurityGroupIngress for more information on using the AuthorizeSecurityGroupIngress +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AuthorizeSecurityGroupIngressRequest method. +// req, resp := client.AuthorizeSecurityGroupIngressRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AuthorizeSecurityGroupIngress +func (c *EC2) AuthorizeSecurityGroupIngressRequest(input *AuthorizeSecurityGroupIngressInput) (req *request.Request, output *AuthorizeSecurityGroupIngressOutput) { + op := &request.Operation{ + Name: opAuthorizeSecurityGroupIngress, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AuthorizeSecurityGroupIngressInput{} + } + + output = &AuthorizeSecurityGroupIngressOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// AuthorizeSecurityGroupIngress API operation for Amazon Elastic Compute Cloud. +// +// Adds the specified ingress rules to a security group. +// +// An inbound rule permits instances to receive traffic from the specified IPv4 +// or IPv6 CIDR address ranges, or from the instances associated with the specified +// destination security groups. +// +// You specify a protocol for each rule (for example, TCP). For TCP and UDP, +// you must also specify the destination port or port range. For ICMP/ICMPv6, +// you must also specify the ICMP/ICMPv6 type and code. You can use -1 to mean +// all types or all codes. +// +// Rule changes are propagated to instances within the security group as quickly +// as possible. However, a small delay might occur. +// +// For more information about VPC security group limits, see Amazon VPC Limits +// (https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AuthorizeSecurityGroupIngress for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AuthorizeSecurityGroupIngress +func (c *EC2) AuthorizeSecurityGroupIngress(input *AuthorizeSecurityGroupIngressInput) (*AuthorizeSecurityGroupIngressOutput, error) { + req, out := c.AuthorizeSecurityGroupIngressRequest(input) + return out, req.Send() +} + +// AuthorizeSecurityGroupIngressWithContext is the same as AuthorizeSecurityGroupIngress with the addition of +// the ability to pass a context and additional request options. +// +// See AuthorizeSecurityGroupIngress for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AuthorizeSecurityGroupIngressWithContext(ctx aws.Context, input *AuthorizeSecurityGroupIngressInput, opts ...request.Option) (*AuthorizeSecurityGroupIngressOutput, error) { + req, out := c.AuthorizeSecurityGroupIngressRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opBundleInstance = "BundleInstance" + +// BundleInstanceRequest generates a "aws/request.Request" representing the +// client's request for the BundleInstance operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See BundleInstance for more information on using the BundleInstance +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the BundleInstanceRequest method. +// req, resp := client.BundleInstanceRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/BundleInstance +func (c *EC2) BundleInstanceRequest(input *BundleInstanceInput) (req *request.Request, output *BundleInstanceOutput) { + op := &request.Operation{ + Name: opBundleInstance, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &BundleInstanceInput{} + } + + output = &BundleInstanceOutput{} + req = c.newRequest(op, input, output) + return +} + +// BundleInstance API operation for Amazon Elastic Compute Cloud. +// +// Bundles an Amazon instance store-backed Windows instance. +// +// During bundling, only the root device volume (C:\) is bundled. Data on other +// instance store volumes is not preserved. +// +// This action is not applicable for Linux/Unix instances or Windows instances +// that are backed by Amazon EBS. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation BundleInstance for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/BundleInstance +func (c *EC2) BundleInstance(input *BundleInstanceInput) (*BundleInstanceOutput, error) { + req, out := c.BundleInstanceRequest(input) + return out, req.Send() +} + +// BundleInstanceWithContext is the same as BundleInstance with the addition of +// the ability to pass a context and additional request options. +// +// See BundleInstance for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) BundleInstanceWithContext(ctx aws.Context, input *BundleInstanceInput, opts ...request.Option) (*BundleInstanceOutput, error) { + req, out := c.BundleInstanceRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCancelBundleTask = "CancelBundleTask" + +// CancelBundleTaskRequest generates a "aws/request.Request" representing the +// client's request for the CancelBundleTask operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CancelBundleTask for more information on using the CancelBundleTask +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CancelBundleTaskRequest method. +// req, resp := client.CancelBundleTaskRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelBundleTask +func (c *EC2) CancelBundleTaskRequest(input *CancelBundleTaskInput) (req *request.Request, output *CancelBundleTaskOutput) { + op := &request.Operation{ + Name: opCancelBundleTask, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CancelBundleTaskInput{} + } + + output = &CancelBundleTaskOutput{} + req = c.newRequest(op, input, output) + return +} + +// CancelBundleTask API operation for Amazon Elastic Compute Cloud. +// +// Cancels a bundling operation for an instance store-backed Windows instance. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CancelBundleTask for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelBundleTask +func (c *EC2) CancelBundleTask(input *CancelBundleTaskInput) (*CancelBundleTaskOutput, error) { + req, out := c.CancelBundleTaskRequest(input) + return out, req.Send() +} + +// CancelBundleTaskWithContext is the same as CancelBundleTask with the addition of +// the ability to pass a context and additional request options. +// +// See CancelBundleTask for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CancelBundleTaskWithContext(ctx aws.Context, input *CancelBundleTaskInput, opts ...request.Option) (*CancelBundleTaskOutput, error) { + req, out := c.CancelBundleTaskRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCancelCapacityReservation = "CancelCapacityReservation" + +// CancelCapacityReservationRequest generates a "aws/request.Request" representing the +// client's request for the CancelCapacityReservation operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CancelCapacityReservation for more information on using the CancelCapacityReservation +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CancelCapacityReservationRequest method. +// req, resp := client.CancelCapacityReservationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelCapacityReservation +func (c *EC2) CancelCapacityReservationRequest(input *CancelCapacityReservationInput) (req *request.Request, output *CancelCapacityReservationOutput) { + op := &request.Operation{ + Name: opCancelCapacityReservation, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CancelCapacityReservationInput{} + } + + output = &CancelCapacityReservationOutput{} + req = c.newRequest(op, input, output) + return +} + +// CancelCapacityReservation API operation for Amazon Elastic Compute Cloud. +// +// Cancels the specified Capacity Reservation, releases the reserved capacity, +// and changes the Capacity Reservation's state to cancelled. +// +// Instances running in the reserved capacity continue running until you stop +// them. Stopped instances that target the Capacity Reservation can no longer +// launch. Modify these instances to either target a different Capacity Reservation, +// launch On-Demand Instance capacity, or run in any open Capacity Reservation +// that has matching attributes and sufficient capacity. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CancelCapacityReservation for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelCapacityReservation +func (c *EC2) CancelCapacityReservation(input *CancelCapacityReservationInput) (*CancelCapacityReservationOutput, error) { + req, out := c.CancelCapacityReservationRequest(input) + return out, req.Send() +} + +// CancelCapacityReservationWithContext is the same as CancelCapacityReservation with the addition of +// the ability to pass a context and additional request options. +// +// See CancelCapacityReservation for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CancelCapacityReservationWithContext(ctx aws.Context, input *CancelCapacityReservationInput, opts ...request.Option) (*CancelCapacityReservationOutput, error) { + req, out := c.CancelCapacityReservationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCancelConversionTask = "CancelConversionTask" + +// CancelConversionTaskRequest generates a "aws/request.Request" representing the +// client's request for the CancelConversionTask operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CancelConversionTask for more information on using the CancelConversionTask +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CancelConversionTaskRequest method. +// req, resp := client.CancelConversionTaskRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelConversionTask +func (c *EC2) CancelConversionTaskRequest(input *CancelConversionTaskInput) (req *request.Request, output *CancelConversionTaskOutput) { + op := &request.Operation{ + Name: opCancelConversionTask, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CancelConversionTaskInput{} + } + + output = &CancelConversionTaskOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// CancelConversionTask API operation for Amazon Elastic Compute Cloud. +// +// Cancels an active conversion task. The task can be the import of an instance +// or volume. The action removes all artifacts of the conversion, including +// a partially uploaded volume or instance. If the conversion is complete or +// is in the process of transferring the final disk image, the command fails +// and returns an exception. +// +// For more information, see Importing a Virtual Machine Using the Amazon EC2 +// CLI (https://docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/ec2-cli-vmimport-export.html). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CancelConversionTask for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelConversionTask +func (c *EC2) CancelConversionTask(input *CancelConversionTaskInput) (*CancelConversionTaskOutput, error) { + req, out := c.CancelConversionTaskRequest(input) + return out, req.Send() +} + +// CancelConversionTaskWithContext is the same as CancelConversionTask with the addition of +// the ability to pass a context and additional request options. +// +// See CancelConversionTask for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CancelConversionTaskWithContext(ctx aws.Context, input *CancelConversionTaskInput, opts ...request.Option) (*CancelConversionTaskOutput, error) { + req, out := c.CancelConversionTaskRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCancelExportTask = "CancelExportTask" + +// CancelExportTaskRequest generates a "aws/request.Request" representing the +// client's request for the CancelExportTask operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CancelExportTask for more information on using the CancelExportTask +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CancelExportTaskRequest method. +// req, resp := client.CancelExportTaskRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelExportTask +func (c *EC2) CancelExportTaskRequest(input *CancelExportTaskInput) (req *request.Request, output *CancelExportTaskOutput) { + op := &request.Operation{ + Name: opCancelExportTask, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CancelExportTaskInput{} + } + + output = &CancelExportTaskOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// CancelExportTask API operation for Amazon Elastic Compute Cloud. +// +// Cancels an active export task. The request removes all artifacts of the export, +// including any partially-created Amazon S3 objects. If the export task is +// complete or is in the process of transferring the final disk image, the command +// fails and returns an error. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CancelExportTask for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelExportTask +func (c *EC2) CancelExportTask(input *CancelExportTaskInput) (*CancelExportTaskOutput, error) { + req, out := c.CancelExportTaskRequest(input) + return out, req.Send() +} + +// CancelExportTaskWithContext is the same as CancelExportTask with the addition of +// the ability to pass a context and additional request options. +// +// See CancelExportTask for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CancelExportTaskWithContext(ctx aws.Context, input *CancelExportTaskInput, opts ...request.Option) (*CancelExportTaskOutput, error) { + req, out := c.CancelExportTaskRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCancelImportTask = "CancelImportTask" + +// CancelImportTaskRequest generates a "aws/request.Request" representing the +// client's request for the CancelImportTask operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CancelImportTask for more information on using the CancelImportTask +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CancelImportTaskRequest method. +// req, resp := client.CancelImportTaskRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelImportTask +func (c *EC2) CancelImportTaskRequest(input *CancelImportTaskInput) (req *request.Request, output *CancelImportTaskOutput) { + op := &request.Operation{ + Name: opCancelImportTask, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CancelImportTaskInput{} + } + + output = &CancelImportTaskOutput{} + req = c.newRequest(op, input, output) + return +} + +// CancelImportTask API operation for Amazon Elastic Compute Cloud. +// +// Cancels an in-process import virtual machine or import snapshot task. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CancelImportTask for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelImportTask +func (c *EC2) CancelImportTask(input *CancelImportTaskInput) (*CancelImportTaskOutput, error) { + req, out := c.CancelImportTaskRequest(input) + return out, req.Send() +} + +// CancelImportTaskWithContext is the same as CancelImportTask with the addition of +// the ability to pass a context and additional request options. +// +// See CancelImportTask for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CancelImportTaskWithContext(ctx aws.Context, input *CancelImportTaskInput, opts ...request.Option) (*CancelImportTaskOutput, error) { + req, out := c.CancelImportTaskRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCancelReservedInstancesListing = "CancelReservedInstancesListing" + +// CancelReservedInstancesListingRequest generates a "aws/request.Request" representing the +// client's request for the CancelReservedInstancesListing operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CancelReservedInstancesListing for more information on using the CancelReservedInstancesListing +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CancelReservedInstancesListingRequest method. +// req, resp := client.CancelReservedInstancesListingRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelReservedInstancesListing +func (c *EC2) CancelReservedInstancesListingRequest(input *CancelReservedInstancesListingInput) (req *request.Request, output *CancelReservedInstancesListingOutput) { + op := &request.Operation{ + Name: opCancelReservedInstancesListing, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CancelReservedInstancesListingInput{} + } + + output = &CancelReservedInstancesListingOutput{} + req = c.newRequest(op, input, output) + return +} + +// CancelReservedInstancesListing API operation for Amazon Elastic Compute Cloud. +// +// Cancels the specified Reserved Instance listing in the Reserved Instance +// Marketplace. +// +// For more information, see Reserved Instance Marketplace (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CancelReservedInstancesListing for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelReservedInstancesListing +func (c *EC2) CancelReservedInstancesListing(input *CancelReservedInstancesListingInput) (*CancelReservedInstancesListingOutput, error) { + req, out := c.CancelReservedInstancesListingRequest(input) + return out, req.Send() +} + +// CancelReservedInstancesListingWithContext is the same as CancelReservedInstancesListing with the addition of +// the ability to pass a context and additional request options. +// +// See CancelReservedInstancesListing for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CancelReservedInstancesListingWithContext(ctx aws.Context, input *CancelReservedInstancesListingInput, opts ...request.Option) (*CancelReservedInstancesListingOutput, error) { + req, out := c.CancelReservedInstancesListingRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCancelSpotFleetRequests = "CancelSpotFleetRequests" + +// CancelSpotFleetRequestsRequest generates a "aws/request.Request" representing the +// client's request for the CancelSpotFleetRequests operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CancelSpotFleetRequests for more information on using the CancelSpotFleetRequests +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CancelSpotFleetRequestsRequest method. +// req, resp := client.CancelSpotFleetRequestsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelSpotFleetRequests +func (c *EC2) CancelSpotFleetRequestsRequest(input *CancelSpotFleetRequestsInput) (req *request.Request, output *CancelSpotFleetRequestsOutput) { + op := &request.Operation{ + Name: opCancelSpotFleetRequests, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CancelSpotFleetRequestsInput{} + } + + output = &CancelSpotFleetRequestsOutput{} + req = c.newRequest(op, input, output) + return +} + +// CancelSpotFleetRequests API operation for Amazon Elastic Compute Cloud. +// +// Cancels the specified Spot Fleet requests. +// +// After you cancel a Spot Fleet request, the Spot Fleet launches no new Spot +// Instances. You must specify whether the Spot Fleet should also terminate +// its Spot Instances. If you terminate the instances, the Spot Fleet request +// enters the cancelled_terminating state. Otherwise, the Spot Fleet request +// enters the cancelled_running state and the instances continue to run until +// they are interrupted or you terminate them manually. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CancelSpotFleetRequests for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelSpotFleetRequests +func (c *EC2) CancelSpotFleetRequests(input *CancelSpotFleetRequestsInput) (*CancelSpotFleetRequestsOutput, error) { + req, out := c.CancelSpotFleetRequestsRequest(input) + return out, req.Send() +} + +// CancelSpotFleetRequestsWithContext is the same as CancelSpotFleetRequests with the addition of +// the ability to pass a context and additional request options. +// +// See CancelSpotFleetRequests for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CancelSpotFleetRequestsWithContext(ctx aws.Context, input *CancelSpotFleetRequestsInput, opts ...request.Option) (*CancelSpotFleetRequestsOutput, error) { + req, out := c.CancelSpotFleetRequestsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCancelSpotInstanceRequests = "CancelSpotInstanceRequests" + +// CancelSpotInstanceRequestsRequest generates a "aws/request.Request" representing the +// client's request for the CancelSpotInstanceRequests operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CancelSpotInstanceRequests for more information on using the CancelSpotInstanceRequests +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CancelSpotInstanceRequestsRequest method. +// req, resp := client.CancelSpotInstanceRequestsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelSpotInstanceRequests +func (c *EC2) CancelSpotInstanceRequestsRequest(input *CancelSpotInstanceRequestsInput) (req *request.Request, output *CancelSpotInstanceRequestsOutput) { + op := &request.Operation{ + Name: opCancelSpotInstanceRequests, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CancelSpotInstanceRequestsInput{} + } + + output = &CancelSpotInstanceRequestsOutput{} + req = c.newRequest(op, input, output) + return +} + +// CancelSpotInstanceRequests API operation for Amazon Elastic Compute Cloud. +// +// Cancels one or more Spot Instance requests. +// +// Canceling a Spot Instance request does not terminate running Spot Instances +// associated with the request. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CancelSpotInstanceRequests for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelSpotInstanceRequests +func (c *EC2) CancelSpotInstanceRequests(input *CancelSpotInstanceRequestsInput) (*CancelSpotInstanceRequestsOutput, error) { + req, out := c.CancelSpotInstanceRequestsRequest(input) + return out, req.Send() +} + +// CancelSpotInstanceRequestsWithContext is the same as CancelSpotInstanceRequests with the addition of +// the ability to pass a context and additional request options. +// +// See CancelSpotInstanceRequests for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CancelSpotInstanceRequestsWithContext(ctx aws.Context, input *CancelSpotInstanceRequestsInput, opts ...request.Option) (*CancelSpotInstanceRequestsOutput, error) { + req, out := c.CancelSpotInstanceRequestsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opConfirmProductInstance = "ConfirmProductInstance" + +// ConfirmProductInstanceRequest generates a "aws/request.Request" representing the +// client's request for the ConfirmProductInstance operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ConfirmProductInstance for more information on using the ConfirmProductInstance +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ConfirmProductInstanceRequest method. +// req, resp := client.ConfirmProductInstanceRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ConfirmProductInstance +func (c *EC2) ConfirmProductInstanceRequest(input *ConfirmProductInstanceInput) (req *request.Request, output *ConfirmProductInstanceOutput) { + op := &request.Operation{ + Name: opConfirmProductInstance, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ConfirmProductInstanceInput{} + } + + output = &ConfirmProductInstanceOutput{} + req = c.newRequest(op, input, output) + return +} + +// ConfirmProductInstance API operation for Amazon Elastic Compute Cloud. +// +// Determines whether a product code is associated with an instance. This action +// can only be used by the owner of the product code. It is useful when a product +// code owner must verify whether another user's instance is eligible for support. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ConfirmProductInstance for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ConfirmProductInstance +func (c *EC2) ConfirmProductInstance(input *ConfirmProductInstanceInput) (*ConfirmProductInstanceOutput, error) { + req, out := c.ConfirmProductInstanceRequest(input) + return out, req.Send() +} + +// ConfirmProductInstanceWithContext is the same as ConfirmProductInstance with the addition of +// the ability to pass a context and additional request options. +// +// See ConfirmProductInstance for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ConfirmProductInstanceWithContext(ctx aws.Context, input *ConfirmProductInstanceInput, opts ...request.Option) (*ConfirmProductInstanceOutput, error) { + req, out := c.ConfirmProductInstanceRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCopyFpgaImage = "CopyFpgaImage" + +// CopyFpgaImageRequest generates a "aws/request.Request" representing the +// client's request for the CopyFpgaImage operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CopyFpgaImage for more information on using the CopyFpgaImage +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CopyFpgaImageRequest method. +// req, resp := client.CopyFpgaImageRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CopyFpgaImage +func (c *EC2) CopyFpgaImageRequest(input *CopyFpgaImageInput) (req *request.Request, output *CopyFpgaImageOutput) { + op := &request.Operation{ + Name: opCopyFpgaImage, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CopyFpgaImageInput{} + } + + output = &CopyFpgaImageOutput{} + req = c.newRequest(op, input, output) + return +} + +// CopyFpgaImage API operation for Amazon Elastic Compute Cloud. +// +// Copies the specified Amazon FPGA Image (AFI) to the current Region. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CopyFpgaImage for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CopyFpgaImage +func (c *EC2) CopyFpgaImage(input *CopyFpgaImageInput) (*CopyFpgaImageOutput, error) { + req, out := c.CopyFpgaImageRequest(input) + return out, req.Send() +} + +// CopyFpgaImageWithContext is the same as CopyFpgaImage with the addition of +// the ability to pass a context and additional request options. +// +// See CopyFpgaImage for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CopyFpgaImageWithContext(ctx aws.Context, input *CopyFpgaImageInput, opts ...request.Option) (*CopyFpgaImageOutput, error) { + req, out := c.CopyFpgaImageRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCopyImage = "CopyImage" + +// CopyImageRequest generates a "aws/request.Request" representing the +// client's request for the CopyImage operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CopyImage for more information on using the CopyImage +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CopyImageRequest method. +// req, resp := client.CopyImageRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CopyImage +func (c *EC2) CopyImageRequest(input *CopyImageInput) (req *request.Request, output *CopyImageOutput) { + op := &request.Operation{ + Name: opCopyImage, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CopyImageInput{} + } + + output = &CopyImageOutput{} + req = c.newRequest(op, input, output) + return +} + +// CopyImage API operation for Amazon Elastic Compute Cloud. +// +// Initiates the copy of an AMI from the specified source Region to the current +// Region. You specify the destination Region by using its endpoint when making +// the request. +// +// Copies of encrypted backing snapshots for the AMI are encrypted. Copies of +// unencrypted backing snapshots remain unencrypted, unless you set Encrypted +// during the copy operation. You cannot create an unencrypted copy of an encrypted +// backing snapshot. +// +// For more information about the prerequisites and limits when copying an AMI, +// see Copying an AMI (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/CopyingAMIs.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CopyImage for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CopyImage +func (c *EC2) CopyImage(input *CopyImageInput) (*CopyImageOutput, error) { + req, out := c.CopyImageRequest(input) + return out, req.Send() +} + +// CopyImageWithContext is the same as CopyImage with the addition of +// the ability to pass a context and additional request options. +// +// See CopyImage for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CopyImageWithContext(ctx aws.Context, input *CopyImageInput, opts ...request.Option) (*CopyImageOutput, error) { + req, out := c.CopyImageRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCopySnapshot = "CopySnapshot" + +// CopySnapshotRequest generates a "aws/request.Request" representing the +// client's request for the CopySnapshot operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CopySnapshot for more information on using the CopySnapshot +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CopySnapshotRequest method. +// req, resp := client.CopySnapshotRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CopySnapshot +func (c *EC2) CopySnapshotRequest(input *CopySnapshotInput) (req *request.Request, output *CopySnapshotOutput) { + op := &request.Operation{ + Name: opCopySnapshot, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CopySnapshotInput{} + } + + output = &CopySnapshotOutput{} + req = c.newRequest(op, input, output) + return +} + +// CopySnapshot API operation for Amazon Elastic Compute Cloud. +// +// Copies a point-in-time snapshot of an EBS volume and stores it in Amazon +// S3. You can copy the snapshot within the same Region or from one Region to +// another. You can use the snapshot to create EBS volumes or Amazon Machine +// Images (AMIs). +// +// Copies of encrypted EBS snapshots remain encrypted. Copies of unencrypted +// snapshots remain unencrypted, unless you enable encryption for the snapshot +// copy operation. By default, encrypted snapshot copies use the default AWS +// Key Management Service (AWS KMS) customer master key (CMK); however, you +// can specify a different CMK. +// +// To copy an encrypted snapshot that has been shared from another account, +// you must have permissions for the CMK used to encrypt the snapshot. +// +// Snapshots created by copying another snapshot have an arbitrary volume ID +// that should not be used for any purpose. +// +// For more information, see Copying an Amazon EBS Snapshot (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-copy-snapshot.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CopySnapshot for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CopySnapshot +func (c *EC2) CopySnapshot(input *CopySnapshotInput) (*CopySnapshotOutput, error) { + req, out := c.CopySnapshotRequest(input) + return out, req.Send() +} + +// CopySnapshotWithContext is the same as CopySnapshot with the addition of +// the ability to pass a context and additional request options. +// +// See CopySnapshot for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CopySnapshotWithContext(ctx aws.Context, input *CopySnapshotInput, opts ...request.Option) (*CopySnapshotOutput, error) { + req, out := c.CopySnapshotRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateCapacityReservation = "CreateCapacityReservation" + +// CreateCapacityReservationRequest generates a "aws/request.Request" representing the +// client's request for the CreateCapacityReservation operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateCapacityReservation for more information on using the CreateCapacityReservation +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateCapacityReservationRequest method. +// req, resp := client.CreateCapacityReservationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateCapacityReservation +func (c *EC2) CreateCapacityReservationRequest(input *CreateCapacityReservationInput) (req *request.Request, output *CreateCapacityReservationOutput) { + op := &request.Operation{ + Name: opCreateCapacityReservation, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateCapacityReservationInput{} + } + + output = &CreateCapacityReservationOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateCapacityReservation API operation for Amazon Elastic Compute Cloud. +// +// Creates a new Capacity Reservation with the specified attributes. +// +// Capacity Reservations enable you to reserve capacity for your Amazon EC2 +// instances in a specific Availability Zone for any duration. This gives you +// the flexibility to selectively add capacity reservations and still get the +// Regional RI discounts for that usage. By creating Capacity Reservations, +// you ensure that you always have access to Amazon EC2 capacity when you need +// it, for as long as you need it. For more information, see Capacity Reservations +// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-reservations.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Your request to create a Capacity Reservation could fail if Amazon EC2 does +// not have sufficient capacity to fulfill the request. If your request fails +// due to Amazon EC2 capacity constraints, either try again at a later time, +// try in a different Availability Zone, or request a smaller capacity reservation. +// If your application is flexible across instance types and sizes, try to create +// a Capacity Reservation with different instance attributes. +// +// Your request could also fail if the requested quantity exceeds your On-Demand +// Instance limit for the selected instance type. If your request fails due +// to limit constraints, increase your On-Demand Instance limit for the required +// instance type and try again. For more information about increasing your instance +// limits, see Amazon EC2 Service Limits (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-resource-limits.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateCapacityReservation for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateCapacityReservation +func (c *EC2) CreateCapacityReservation(input *CreateCapacityReservationInput) (*CreateCapacityReservationOutput, error) { + req, out := c.CreateCapacityReservationRequest(input) + return out, req.Send() +} + +// CreateCapacityReservationWithContext is the same as CreateCapacityReservation with the addition of +// the ability to pass a context and additional request options. +// +// See CreateCapacityReservation for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateCapacityReservationWithContext(ctx aws.Context, input *CreateCapacityReservationInput, opts ...request.Option) (*CreateCapacityReservationOutput, error) { + req, out := c.CreateCapacityReservationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateClientVpnEndpoint = "CreateClientVpnEndpoint" + +// CreateClientVpnEndpointRequest generates a "aws/request.Request" representing the +// client's request for the CreateClientVpnEndpoint operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateClientVpnEndpoint for more information on using the CreateClientVpnEndpoint +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateClientVpnEndpointRequest method. +// req, resp := client.CreateClientVpnEndpointRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateClientVpnEndpoint +func (c *EC2) CreateClientVpnEndpointRequest(input *CreateClientVpnEndpointInput) (req *request.Request, output *CreateClientVpnEndpointOutput) { + op := &request.Operation{ + Name: opCreateClientVpnEndpoint, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateClientVpnEndpointInput{} + } + + output = &CreateClientVpnEndpointOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateClientVpnEndpoint API operation for Amazon Elastic Compute Cloud. +// +// Creates a Client VPN endpoint. A Client VPN endpoint is the resource you +// create and configure to enable and manage client VPN sessions. It is the +// destination endpoint at which all client VPN sessions are terminated. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateClientVpnEndpoint for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateClientVpnEndpoint +func (c *EC2) CreateClientVpnEndpoint(input *CreateClientVpnEndpointInput) (*CreateClientVpnEndpointOutput, error) { + req, out := c.CreateClientVpnEndpointRequest(input) + return out, req.Send() +} + +// CreateClientVpnEndpointWithContext is the same as CreateClientVpnEndpoint with the addition of +// the ability to pass a context and additional request options. +// +// See CreateClientVpnEndpoint for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateClientVpnEndpointWithContext(ctx aws.Context, input *CreateClientVpnEndpointInput, opts ...request.Option) (*CreateClientVpnEndpointOutput, error) { + req, out := c.CreateClientVpnEndpointRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateClientVpnRoute = "CreateClientVpnRoute" + +// CreateClientVpnRouteRequest generates a "aws/request.Request" representing the +// client's request for the CreateClientVpnRoute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateClientVpnRoute for more information on using the CreateClientVpnRoute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateClientVpnRouteRequest method. +// req, resp := client.CreateClientVpnRouteRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateClientVpnRoute +func (c *EC2) CreateClientVpnRouteRequest(input *CreateClientVpnRouteInput) (req *request.Request, output *CreateClientVpnRouteOutput) { + op := &request.Operation{ + Name: opCreateClientVpnRoute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateClientVpnRouteInput{} + } + + output = &CreateClientVpnRouteOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateClientVpnRoute API operation for Amazon Elastic Compute Cloud. +// +// Adds a route to a network to a Client VPN endpoint. Each Client VPN endpoint +// has a route table that describes the available destination network routes. +// Each route in the route table specifies the path for traffic to specific +// resources or networks. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateClientVpnRoute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateClientVpnRoute +func (c *EC2) CreateClientVpnRoute(input *CreateClientVpnRouteInput) (*CreateClientVpnRouteOutput, error) { + req, out := c.CreateClientVpnRouteRequest(input) + return out, req.Send() +} + +// CreateClientVpnRouteWithContext is the same as CreateClientVpnRoute with the addition of +// the ability to pass a context and additional request options. +// +// See CreateClientVpnRoute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateClientVpnRouteWithContext(ctx aws.Context, input *CreateClientVpnRouteInput, opts ...request.Option) (*CreateClientVpnRouteOutput, error) { + req, out := c.CreateClientVpnRouteRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateCustomerGateway = "CreateCustomerGateway" + +// CreateCustomerGatewayRequest generates a "aws/request.Request" representing the +// client's request for the CreateCustomerGateway operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateCustomerGateway for more information on using the CreateCustomerGateway +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateCustomerGatewayRequest method. +// req, resp := client.CreateCustomerGatewayRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateCustomerGateway +func (c *EC2) CreateCustomerGatewayRequest(input *CreateCustomerGatewayInput) (req *request.Request, output *CreateCustomerGatewayOutput) { + op := &request.Operation{ + Name: opCreateCustomerGateway, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateCustomerGatewayInput{} + } + + output = &CreateCustomerGatewayOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateCustomerGateway API operation for Amazon Elastic Compute Cloud. +// +// Provides information to AWS about your VPN customer gateway device. The customer +// gateway is the appliance at your end of the VPN connection. (The device on +// the AWS side of the VPN connection is the virtual private gateway.) You must +// provide the Internet-routable IP address of the customer gateway's external +// interface. The IP address must be static and can be behind a device performing +// network address translation (NAT). +// +// For devices that use Border Gateway Protocol (BGP), you can also provide +// the device's BGP Autonomous System Number (ASN). You can use an existing +// ASN assigned to your network. If you don't have an ASN already, you can use +// a private ASN (in the 64512 - 65534 range). +// +// Amazon EC2 supports all 2-byte ASN numbers in the range of 1 - 65534, with +// the exception of 7224, which is reserved in the us-east-1 Region, and 9059, +// which is reserved in the eu-west-1 Region. +// +// For more information, see AWS Site-to-Site VPN (https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) +// in the AWS Site-to-Site VPN User Guide. +// +// You cannot create more than one customer gateway with the same VPN type, +// IP address, and BGP ASN parameter values. If you run an identical request +// more than one time, the first request creates the customer gateway, and subsequent +// requests return information about the existing customer gateway. The subsequent +// requests do not create new customer gateway resources. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateCustomerGateway for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateCustomerGateway +func (c *EC2) CreateCustomerGateway(input *CreateCustomerGatewayInput) (*CreateCustomerGatewayOutput, error) { + req, out := c.CreateCustomerGatewayRequest(input) + return out, req.Send() +} + +// CreateCustomerGatewayWithContext is the same as CreateCustomerGateway with the addition of +// the ability to pass a context and additional request options. +// +// See CreateCustomerGateway for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateCustomerGatewayWithContext(ctx aws.Context, input *CreateCustomerGatewayInput, opts ...request.Option) (*CreateCustomerGatewayOutput, error) { + req, out := c.CreateCustomerGatewayRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateDefaultSubnet = "CreateDefaultSubnet" + +// CreateDefaultSubnetRequest generates a "aws/request.Request" representing the +// client's request for the CreateDefaultSubnet operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateDefaultSubnet for more information on using the CreateDefaultSubnet +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateDefaultSubnetRequest method. +// req, resp := client.CreateDefaultSubnetRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateDefaultSubnet +func (c *EC2) CreateDefaultSubnetRequest(input *CreateDefaultSubnetInput) (req *request.Request, output *CreateDefaultSubnetOutput) { + op := &request.Operation{ + Name: opCreateDefaultSubnet, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateDefaultSubnetInput{} + } + + output = &CreateDefaultSubnetOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateDefaultSubnet API operation for Amazon Elastic Compute Cloud. +// +// Creates a default subnet with a size /20 IPv4 CIDR block in the specified +// Availability Zone in your default VPC. You can have only one default subnet +// per Availability Zone. For more information, see Creating a Default Subnet +// (https://docs.aws.amazon.com/vpc/latest/userguide/default-vpc.html#create-default-subnet) +// in the Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateDefaultSubnet for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateDefaultSubnet +func (c *EC2) CreateDefaultSubnet(input *CreateDefaultSubnetInput) (*CreateDefaultSubnetOutput, error) { + req, out := c.CreateDefaultSubnetRequest(input) + return out, req.Send() +} + +// CreateDefaultSubnetWithContext is the same as CreateDefaultSubnet with the addition of +// the ability to pass a context and additional request options. +// +// See CreateDefaultSubnet for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateDefaultSubnetWithContext(ctx aws.Context, input *CreateDefaultSubnetInput, opts ...request.Option) (*CreateDefaultSubnetOutput, error) { + req, out := c.CreateDefaultSubnetRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateDefaultVpc = "CreateDefaultVpc" + +// CreateDefaultVpcRequest generates a "aws/request.Request" representing the +// client's request for the CreateDefaultVpc operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateDefaultVpc for more information on using the CreateDefaultVpc +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateDefaultVpcRequest method. +// req, resp := client.CreateDefaultVpcRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateDefaultVpc +func (c *EC2) CreateDefaultVpcRequest(input *CreateDefaultVpcInput) (req *request.Request, output *CreateDefaultVpcOutput) { + op := &request.Operation{ + Name: opCreateDefaultVpc, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateDefaultVpcInput{} + } + + output = &CreateDefaultVpcOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateDefaultVpc API operation for Amazon Elastic Compute Cloud. +// +// Creates a default VPC with a size /16 IPv4 CIDR block and a default subnet +// in each Availability Zone. For more information about the components of a +// default VPC, see Default VPC and Default Subnets (https://docs.aws.amazon.com/vpc/latest/userguide/default-vpc.html) +// in the Amazon Virtual Private Cloud User Guide. You cannot specify the components +// of the default VPC yourself. +// +// If you deleted your previous default VPC, you can create a default VPC. You +// cannot have more than one default VPC per Region. +// +// If your account supports EC2-Classic, you cannot use this action to create +// a default VPC in a Region that supports EC2-Classic. If you want a default +// VPC in a Region that supports EC2-Classic, see "I really want a default VPC +// for my existing EC2 account. Is that possible?" in the Default VPCs FAQ (http://aws.amazon.com/vpc/faqs/#Default_VPCs). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateDefaultVpc for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateDefaultVpc +func (c *EC2) CreateDefaultVpc(input *CreateDefaultVpcInput) (*CreateDefaultVpcOutput, error) { + req, out := c.CreateDefaultVpcRequest(input) + return out, req.Send() +} + +// CreateDefaultVpcWithContext is the same as CreateDefaultVpc with the addition of +// the ability to pass a context and additional request options. +// +// See CreateDefaultVpc for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateDefaultVpcWithContext(ctx aws.Context, input *CreateDefaultVpcInput, opts ...request.Option) (*CreateDefaultVpcOutput, error) { + req, out := c.CreateDefaultVpcRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateDhcpOptions = "CreateDhcpOptions" + +// CreateDhcpOptionsRequest generates a "aws/request.Request" representing the +// client's request for the CreateDhcpOptions operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateDhcpOptions for more information on using the CreateDhcpOptions +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateDhcpOptionsRequest method. +// req, resp := client.CreateDhcpOptionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateDhcpOptions +func (c *EC2) CreateDhcpOptionsRequest(input *CreateDhcpOptionsInput) (req *request.Request, output *CreateDhcpOptionsOutput) { + op := &request.Operation{ + Name: opCreateDhcpOptions, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateDhcpOptionsInput{} + } + + output = &CreateDhcpOptionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateDhcpOptions API operation for Amazon Elastic Compute Cloud. +// +// Creates a set of DHCP options for your VPC. After creating the set, you must +// associate it with the VPC, causing all existing and new instances that you +// launch in the VPC to use this set of DHCP options. The following are the +// individual DHCP options you can specify. For more information about the options, +// see RFC 2132 (http://www.ietf.org/rfc/rfc2132.txt). +// +// * domain-name-servers - The IP addresses of up to four domain name servers, +// or AmazonProvidedDNS. The default DHCP option set specifies AmazonProvidedDNS. +// If specifying more than one domain name server, specify the IP addresses +// in a single parameter, separated by commas. To have your instance receive +// a custom DNS hostname as specified in domain-name, you must set domain-name-servers +// to a custom DNS server. +// +// * domain-name - If you're using AmazonProvidedDNS in us-east-1, specify +// ec2.internal. If you're using AmazonProvidedDNS in another Region, specify +// region.compute.internal (for example, ap-northeast-1.compute.internal). +// Otherwise, specify a domain name (for example, MyCompany.com). This value +// is used to complete unqualified DNS hostnames. Important: Some Linux operating +// systems accept multiple domain names separated by spaces. However, Windows +// and other Linux operating systems treat the value as a single domain, +// which results in unexpected behavior. If your DHCP options set is associated +// with a VPC that has instances with multiple operating systems, specify +// only one domain name. +// +// * ntp-servers - The IP addresses of up to four Network Time Protocol (NTP) +// servers. +// +// * netbios-name-servers - The IP addresses of up to four NetBIOS name servers. +// +// * netbios-node-type - The NetBIOS node type (1, 2, 4, or 8). We recommend +// that you specify 2 (broadcast and multicast are not currently supported). +// For more information about these node types, see RFC 2132 (http://www.ietf.org/rfc/rfc2132.txt). +// +// Your VPC automatically starts out with a set of DHCP options that includes +// only a DNS server that we provide (AmazonProvidedDNS). If you create a set +// of options, and if your VPC has an internet gateway, make sure to set the +// domain-name-servers option either to AmazonProvidedDNS or to a domain name +// server of your choice. For more information, see DHCP Options Sets (https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateDhcpOptions for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateDhcpOptions +func (c *EC2) CreateDhcpOptions(input *CreateDhcpOptionsInput) (*CreateDhcpOptionsOutput, error) { + req, out := c.CreateDhcpOptionsRequest(input) + return out, req.Send() +} + +// CreateDhcpOptionsWithContext is the same as CreateDhcpOptions with the addition of +// the ability to pass a context and additional request options. +// +// See CreateDhcpOptions for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateDhcpOptionsWithContext(ctx aws.Context, input *CreateDhcpOptionsInput, opts ...request.Option) (*CreateDhcpOptionsOutput, error) { + req, out := c.CreateDhcpOptionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateEgressOnlyInternetGateway = "CreateEgressOnlyInternetGateway" + +// CreateEgressOnlyInternetGatewayRequest generates a "aws/request.Request" representing the +// client's request for the CreateEgressOnlyInternetGateway operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateEgressOnlyInternetGateway for more information on using the CreateEgressOnlyInternetGateway +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateEgressOnlyInternetGatewayRequest method. +// req, resp := client.CreateEgressOnlyInternetGatewayRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateEgressOnlyInternetGateway +func (c *EC2) CreateEgressOnlyInternetGatewayRequest(input *CreateEgressOnlyInternetGatewayInput) (req *request.Request, output *CreateEgressOnlyInternetGatewayOutput) { + op := &request.Operation{ + Name: opCreateEgressOnlyInternetGateway, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateEgressOnlyInternetGatewayInput{} + } + + output = &CreateEgressOnlyInternetGatewayOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateEgressOnlyInternetGateway API operation for Amazon Elastic Compute Cloud. +// +// [IPv6 only] Creates an egress-only internet gateway for your VPC. An egress-only +// internet gateway is used to enable outbound communication over IPv6 from +// instances in your VPC to the internet, and prevents hosts outside of your +// VPC from initiating an IPv6 connection with your instance. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateEgressOnlyInternetGateway for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateEgressOnlyInternetGateway +func (c *EC2) CreateEgressOnlyInternetGateway(input *CreateEgressOnlyInternetGatewayInput) (*CreateEgressOnlyInternetGatewayOutput, error) { + req, out := c.CreateEgressOnlyInternetGatewayRequest(input) + return out, req.Send() +} + +// CreateEgressOnlyInternetGatewayWithContext is the same as CreateEgressOnlyInternetGateway with the addition of +// the ability to pass a context and additional request options. +// +// See CreateEgressOnlyInternetGateway for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateEgressOnlyInternetGatewayWithContext(ctx aws.Context, input *CreateEgressOnlyInternetGatewayInput, opts ...request.Option) (*CreateEgressOnlyInternetGatewayOutput, error) { + req, out := c.CreateEgressOnlyInternetGatewayRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateFleet = "CreateFleet" + +// CreateFleetRequest generates a "aws/request.Request" representing the +// client's request for the CreateFleet operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateFleet for more information on using the CreateFleet +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateFleetRequest method. +// req, resp := client.CreateFleetRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateFleet +func (c *EC2) CreateFleetRequest(input *CreateFleetInput) (req *request.Request, output *CreateFleetOutput) { + op := &request.Operation{ + Name: opCreateFleet, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateFleetInput{} + } + + output = &CreateFleetOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateFleet API operation for Amazon Elastic Compute Cloud. +// +// Launches an EC2 Fleet. +// +// You can create a single EC2 Fleet that includes multiple launch specifications +// that vary by instance type, AMI, Availability Zone, or subnet. +// +// For more information, see Launching an EC2 Fleet (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateFleet for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateFleet +func (c *EC2) CreateFleet(input *CreateFleetInput) (*CreateFleetOutput, error) { + req, out := c.CreateFleetRequest(input) + return out, req.Send() +} + +// CreateFleetWithContext is the same as CreateFleet with the addition of +// the ability to pass a context and additional request options. +// +// See CreateFleet for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateFleetWithContext(ctx aws.Context, input *CreateFleetInput, opts ...request.Option) (*CreateFleetOutput, error) { + req, out := c.CreateFleetRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateFlowLogs = "CreateFlowLogs" + +// CreateFlowLogsRequest generates a "aws/request.Request" representing the +// client's request for the CreateFlowLogs operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateFlowLogs for more information on using the CreateFlowLogs +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateFlowLogsRequest method. +// req, resp := client.CreateFlowLogsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateFlowLogs +func (c *EC2) CreateFlowLogsRequest(input *CreateFlowLogsInput) (req *request.Request, output *CreateFlowLogsOutput) { + op := &request.Operation{ + Name: opCreateFlowLogs, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateFlowLogsInput{} + } + + output = &CreateFlowLogsOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateFlowLogs API operation for Amazon Elastic Compute Cloud. +// +// Creates one or more flow logs to capture information about IP traffic for +// a specific network interface, subnet, or VPC. +// +// Flow log data for a monitored network interface is recorded as flow log records, +// which are log events consisting of fields that describe the traffic flow. +// For more information, see Flow Log Records (https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html#flow-log-records) +// in the Amazon Virtual Private Cloud User Guide. +// +// When publishing to CloudWatch Logs, flow log records are published to a log +// group, and each network interface has a unique log stream in the log group. +// When publishing to Amazon S3, flow log records for all of the monitored network +// interfaces are published to a single log file object that is stored in the +// specified bucket. +// +// For more information, see VPC Flow Logs (https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateFlowLogs for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateFlowLogs +func (c *EC2) CreateFlowLogs(input *CreateFlowLogsInput) (*CreateFlowLogsOutput, error) { + req, out := c.CreateFlowLogsRequest(input) + return out, req.Send() +} + +// CreateFlowLogsWithContext is the same as CreateFlowLogs with the addition of +// the ability to pass a context and additional request options. +// +// See CreateFlowLogs for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateFlowLogsWithContext(ctx aws.Context, input *CreateFlowLogsInput, opts ...request.Option) (*CreateFlowLogsOutput, error) { + req, out := c.CreateFlowLogsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateFpgaImage = "CreateFpgaImage" + +// CreateFpgaImageRequest generates a "aws/request.Request" representing the +// client's request for the CreateFpgaImage operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateFpgaImage for more information on using the CreateFpgaImage +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateFpgaImageRequest method. +// req, resp := client.CreateFpgaImageRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateFpgaImage +func (c *EC2) CreateFpgaImageRequest(input *CreateFpgaImageInput) (req *request.Request, output *CreateFpgaImageOutput) { + op := &request.Operation{ + Name: opCreateFpgaImage, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateFpgaImageInput{} + } + + output = &CreateFpgaImageOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateFpgaImage API operation for Amazon Elastic Compute Cloud. +// +// Creates an Amazon FPGA Image (AFI) from the specified design checkpoint (DCP). +// +// The create operation is asynchronous. To verify that the AFI is ready for +// use, check the output logs. +// +// An AFI contains the FPGA bitstream that is ready to download to an FPGA. +// You can securely deploy an AFI on multiple FPGA-accelerated instances. For +// more information, see the AWS FPGA Hardware Development Kit (https://github.com/aws/aws-fpga/). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateFpgaImage for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateFpgaImage +func (c *EC2) CreateFpgaImage(input *CreateFpgaImageInput) (*CreateFpgaImageOutput, error) { + req, out := c.CreateFpgaImageRequest(input) + return out, req.Send() +} + +// CreateFpgaImageWithContext is the same as CreateFpgaImage with the addition of +// the ability to pass a context and additional request options. +// +// See CreateFpgaImage for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateFpgaImageWithContext(ctx aws.Context, input *CreateFpgaImageInput, opts ...request.Option) (*CreateFpgaImageOutput, error) { + req, out := c.CreateFpgaImageRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateImage = "CreateImage" + +// CreateImageRequest generates a "aws/request.Request" representing the +// client's request for the CreateImage operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateImage for more information on using the CreateImage +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateImageRequest method. +// req, resp := client.CreateImageRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateImage +func (c *EC2) CreateImageRequest(input *CreateImageInput) (req *request.Request, output *CreateImageOutput) { + op := &request.Operation{ + Name: opCreateImage, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateImageInput{} + } + + output = &CreateImageOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateImage API operation for Amazon Elastic Compute Cloud. +// +// Creates an Amazon EBS-backed AMI from an Amazon EBS-backed instance that +// is either running or stopped. +// +// If you customized your instance with instance store volumes or EBS volumes +// in addition to the root device volume, the new AMI contains block device +// mapping information for those volumes. When you launch an instance from this +// new AMI, the instance automatically launches with those additional volumes. +// +// For more information, see Creating Amazon EBS-Backed Linux AMIs (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateImage for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateImage +func (c *EC2) CreateImage(input *CreateImageInput) (*CreateImageOutput, error) { + req, out := c.CreateImageRequest(input) + return out, req.Send() +} + +// CreateImageWithContext is the same as CreateImage with the addition of +// the ability to pass a context and additional request options. +// +// See CreateImage for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateImageWithContext(ctx aws.Context, input *CreateImageInput, opts ...request.Option) (*CreateImageOutput, error) { + req, out := c.CreateImageRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateInstanceExportTask = "CreateInstanceExportTask" + +// CreateInstanceExportTaskRequest generates a "aws/request.Request" representing the +// client's request for the CreateInstanceExportTask operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateInstanceExportTask for more information on using the CreateInstanceExportTask +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateInstanceExportTaskRequest method. +// req, resp := client.CreateInstanceExportTaskRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateInstanceExportTask +func (c *EC2) CreateInstanceExportTaskRequest(input *CreateInstanceExportTaskInput) (req *request.Request, output *CreateInstanceExportTaskOutput) { + op := &request.Operation{ + Name: opCreateInstanceExportTask, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateInstanceExportTaskInput{} + } + + output = &CreateInstanceExportTaskOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateInstanceExportTask API operation for Amazon Elastic Compute Cloud. +// +// Exports a running or stopped instance to an S3 bucket. +// +// For information about the supported operating systems, image formats, and +// known limitations for the types of instances you can export, see Exporting +// an Instance as a VM Using VM Import/Export (https://docs.aws.amazon.com/vm-import/latest/userguide/vmexport.html) +// in the VM Import/Export User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateInstanceExportTask for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateInstanceExportTask +func (c *EC2) CreateInstanceExportTask(input *CreateInstanceExportTaskInput) (*CreateInstanceExportTaskOutput, error) { + req, out := c.CreateInstanceExportTaskRequest(input) + return out, req.Send() +} + +// CreateInstanceExportTaskWithContext is the same as CreateInstanceExportTask with the addition of +// the ability to pass a context and additional request options. +// +// See CreateInstanceExportTask for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateInstanceExportTaskWithContext(ctx aws.Context, input *CreateInstanceExportTaskInput, opts ...request.Option) (*CreateInstanceExportTaskOutput, error) { + req, out := c.CreateInstanceExportTaskRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateInternetGateway = "CreateInternetGateway" + +// CreateInternetGatewayRequest generates a "aws/request.Request" representing the +// client's request for the CreateInternetGateway operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateInternetGateway for more information on using the CreateInternetGateway +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateInternetGatewayRequest method. +// req, resp := client.CreateInternetGatewayRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateInternetGateway +func (c *EC2) CreateInternetGatewayRequest(input *CreateInternetGatewayInput) (req *request.Request, output *CreateInternetGatewayOutput) { + op := &request.Operation{ + Name: opCreateInternetGateway, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateInternetGatewayInput{} + } + + output = &CreateInternetGatewayOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateInternetGateway API operation for Amazon Elastic Compute Cloud. +// +// Creates an internet gateway for use with a VPC. After creating the internet +// gateway, you attach it to a VPC using AttachInternetGateway. +// +// For more information about your VPC and internet gateway, see the Amazon +// Virtual Private Cloud User Guide (https://docs.aws.amazon.com/vpc/latest/userguide/). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateInternetGateway for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateInternetGateway +func (c *EC2) CreateInternetGateway(input *CreateInternetGatewayInput) (*CreateInternetGatewayOutput, error) { + req, out := c.CreateInternetGatewayRequest(input) + return out, req.Send() +} + +// CreateInternetGatewayWithContext is the same as CreateInternetGateway with the addition of +// the ability to pass a context and additional request options. +// +// See CreateInternetGateway for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateInternetGatewayWithContext(ctx aws.Context, input *CreateInternetGatewayInput, opts ...request.Option) (*CreateInternetGatewayOutput, error) { + req, out := c.CreateInternetGatewayRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateKeyPair = "CreateKeyPair" + +// CreateKeyPairRequest generates a "aws/request.Request" representing the +// client's request for the CreateKeyPair operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateKeyPair for more information on using the CreateKeyPair +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateKeyPairRequest method. +// req, resp := client.CreateKeyPairRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateKeyPair +func (c *EC2) CreateKeyPairRequest(input *CreateKeyPairInput) (req *request.Request, output *CreateKeyPairOutput) { + op := &request.Operation{ + Name: opCreateKeyPair, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateKeyPairInput{} + } + + output = &CreateKeyPairOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateKeyPair API operation for Amazon Elastic Compute Cloud. +// +// Creates a 2048-bit RSA key pair with the specified name. Amazon EC2 stores +// the public key and displays the private key for you to save to a file. The +// private key is returned as an unencrypted PEM encoded PKCS#1 private key. +// If a key with the specified name already exists, Amazon EC2 returns an error. +// +// You can have up to five thousand key pairs per Region. +// +// The key pair returned to you is available only in the Region in which you +// create it. If you prefer, you can create your own key pair using a third-party +// tool and upload it to any Region using ImportKeyPair. +// +// For more information, see Key Pairs (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateKeyPair for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateKeyPair +func (c *EC2) CreateKeyPair(input *CreateKeyPairInput) (*CreateKeyPairOutput, error) { + req, out := c.CreateKeyPairRequest(input) + return out, req.Send() +} + +// CreateKeyPairWithContext is the same as CreateKeyPair with the addition of +// the ability to pass a context and additional request options. +// +// See CreateKeyPair for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateKeyPairWithContext(ctx aws.Context, input *CreateKeyPairInput, opts ...request.Option) (*CreateKeyPairOutput, error) { + req, out := c.CreateKeyPairRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateLaunchTemplate = "CreateLaunchTemplate" + +// CreateLaunchTemplateRequest generates a "aws/request.Request" representing the +// client's request for the CreateLaunchTemplate operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateLaunchTemplate for more information on using the CreateLaunchTemplate +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateLaunchTemplateRequest method. +// req, resp := client.CreateLaunchTemplateRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateLaunchTemplate +func (c *EC2) CreateLaunchTemplateRequest(input *CreateLaunchTemplateInput) (req *request.Request, output *CreateLaunchTemplateOutput) { + op := &request.Operation{ + Name: opCreateLaunchTemplate, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateLaunchTemplateInput{} + } + + output = &CreateLaunchTemplateOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateLaunchTemplate API operation for Amazon Elastic Compute Cloud. +// +// Creates a launch template. A launch template contains the parameters to launch +// an instance. When you launch an instance using RunInstances, you can specify +// a launch template instead of providing the launch parameters in the request. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateLaunchTemplate for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateLaunchTemplate +func (c *EC2) CreateLaunchTemplate(input *CreateLaunchTemplateInput) (*CreateLaunchTemplateOutput, error) { + req, out := c.CreateLaunchTemplateRequest(input) + return out, req.Send() +} + +// CreateLaunchTemplateWithContext is the same as CreateLaunchTemplate with the addition of +// the ability to pass a context and additional request options. +// +// See CreateLaunchTemplate for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateLaunchTemplateWithContext(ctx aws.Context, input *CreateLaunchTemplateInput, opts ...request.Option) (*CreateLaunchTemplateOutput, error) { + req, out := c.CreateLaunchTemplateRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateLaunchTemplateVersion = "CreateLaunchTemplateVersion" + +// CreateLaunchTemplateVersionRequest generates a "aws/request.Request" representing the +// client's request for the CreateLaunchTemplateVersion operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateLaunchTemplateVersion for more information on using the CreateLaunchTemplateVersion +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateLaunchTemplateVersionRequest method. +// req, resp := client.CreateLaunchTemplateVersionRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateLaunchTemplateVersion +func (c *EC2) CreateLaunchTemplateVersionRequest(input *CreateLaunchTemplateVersionInput) (req *request.Request, output *CreateLaunchTemplateVersionOutput) { + op := &request.Operation{ + Name: opCreateLaunchTemplateVersion, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateLaunchTemplateVersionInput{} + } + + output = &CreateLaunchTemplateVersionOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateLaunchTemplateVersion API operation for Amazon Elastic Compute Cloud. +// +// Creates a new version for a launch template. You can specify an existing +// version of launch template from which to base the new version. +// +// Launch template versions are numbered in the order in which they are created. +// You cannot specify, change, or replace the numbering of launch template versions. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateLaunchTemplateVersion for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateLaunchTemplateVersion +func (c *EC2) CreateLaunchTemplateVersion(input *CreateLaunchTemplateVersionInput) (*CreateLaunchTemplateVersionOutput, error) { + req, out := c.CreateLaunchTemplateVersionRequest(input) + return out, req.Send() +} + +// CreateLaunchTemplateVersionWithContext is the same as CreateLaunchTemplateVersion with the addition of +// the ability to pass a context and additional request options. +// +// See CreateLaunchTemplateVersion for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateLaunchTemplateVersionWithContext(ctx aws.Context, input *CreateLaunchTemplateVersionInput, opts ...request.Option) (*CreateLaunchTemplateVersionOutput, error) { + req, out := c.CreateLaunchTemplateVersionRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateNatGateway = "CreateNatGateway" + +// CreateNatGatewayRequest generates a "aws/request.Request" representing the +// client's request for the CreateNatGateway operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateNatGateway for more information on using the CreateNatGateway +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateNatGatewayRequest method. +// req, resp := client.CreateNatGatewayRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNatGateway +func (c *EC2) CreateNatGatewayRequest(input *CreateNatGatewayInput) (req *request.Request, output *CreateNatGatewayOutput) { + op := &request.Operation{ + Name: opCreateNatGateway, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateNatGatewayInput{} + } + + output = &CreateNatGatewayOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateNatGateway API operation for Amazon Elastic Compute Cloud. +// +// Creates a NAT gateway in the specified public subnet. This action creates +// a network interface in the specified subnet with a private IP address from +// the IP address range of the subnet. Internet-bound traffic from a private +// subnet can be routed to the NAT gateway, therefore enabling instances in +// the private subnet to connect to the internet. For more information, see +// NAT Gateways (https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateNatGateway for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNatGateway +func (c *EC2) CreateNatGateway(input *CreateNatGatewayInput) (*CreateNatGatewayOutput, error) { + req, out := c.CreateNatGatewayRequest(input) + return out, req.Send() +} + +// CreateNatGatewayWithContext is the same as CreateNatGateway with the addition of +// the ability to pass a context and additional request options. +// +// See CreateNatGateway for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateNatGatewayWithContext(ctx aws.Context, input *CreateNatGatewayInput, opts ...request.Option) (*CreateNatGatewayOutput, error) { + req, out := c.CreateNatGatewayRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateNetworkAcl = "CreateNetworkAcl" + +// CreateNetworkAclRequest generates a "aws/request.Request" representing the +// client's request for the CreateNetworkAcl operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateNetworkAcl for more information on using the CreateNetworkAcl +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateNetworkAclRequest method. +// req, resp := client.CreateNetworkAclRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkAcl +func (c *EC2) CreateNetworkAclRequest(input *CreateNetworkAclInput) (req *request.Request, output *CreateNetworkAclOutput) { + op := &request.Operation{ + Name: opCreateNetworkAcl, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateNetworkAclInput{} + } + + output = &CreateNetworkAclOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateNetworkAcl API operation for Amazon Elastic Compute Cloud. +// +// Creates a network ACL in a VPC. Network ACLs provide an optional layer of +// security (in addition to security groups) for the instances in your VPC. +// +// For more information, see Network ACLs (https://docs.aws.amazon.com/vpc/latest/userguide/VPC_ACLs.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateNetworkAcl for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkAcl +func (c *EC2) CreateNetworkAcl(input *CreateNetworkAclInput) (*CreateNetworkAclOutput, error) { + req, out := c.CreateNetworkAclRequest(input) + return out, req.Send() +} + +// CreateNetworkAclWithContext is the same as CreateNetworkAcl with the addition of +// the ability to pass a context and additional request options. +// +// See CreateNetworkAcl for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateNetworkAclWithContext(ctx aws.Context, input *CreateNetworkAclInput, opts ...request.Option) (*CreateNetworkAclOutput, error) { + req, out := c.CreateNetworkAclRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateNetworkAclEntry = "CreateNetworkAclEntry" + +// CreateNetworkAclEntryRequest generates a "aws/request.Request" representing the +// client's request for the CreateNetworkAclEntry operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateNetworkAclEntry for more information on using the CreateNetworkAclEntry +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateNetworkAclEntryRequest method. +// req, resp := client.CreateNetworkAclEntryRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkAclEntry +func (c *EC2) CreateNetworkAclEntryRequest(input *CreateNetworkAclEntryInput) (req *request.Request, output *CreateNetworkAclEntryOutput) { + op := &request.Operation{ + Name: opCreateNetworkAclEntry, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateNetworkAclEntryInput{} + } + + output = &CreateNetworkAclEntryOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// CreateNetworkAclEntry API operation for Amazon Elastic Compute Cloud. +// +// Creates an entry (a rule) in a network ACL with the specified rule number. +// Each network ACL has a set of numbered ingress rules and a separate set of +// numbered egress rules. When determining whether a packet should be allowed +// in or out of a subnet associated with the ACL, we process the entries in +// the ACL according to the rule numbers, in ascending order. Each network ACL +// has a set of ingress rules and a separate set of egress rules. +// +// We recommend that you leave room between the rule numbers (for example, 100, +// 110, 120, ...), and not number them one right after the other (for example, +// 101, 102, 103, ...). This makes it easier to add a rule between existing +// ones without having to renumber the rules. +// +// After you add an entry, you can't modify it; you must either replace it, +// or create an entry and delete the old one. +// +// For more information about network ACLs, see Network ACLs (https://docs.aws.amazon.com/vpc/latest/userguide/VPC_ACLs.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateNetworkAclEntry for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkAclEntry +func (c *EC2) CreateNetworkAclEntry(input *CreateNetworkAclEntryInput) (*CreateNetworkAclEntryOutput, error) { + req, out := c.CreateNetworkAclEntryRequest(input) + return out, req.Send() +} + +// CreateNetworkAclEntryWithContext is the same as CreateNetworkAclEntry with the addition of +// the ability to pass a context and additional request options. +// +// See CreateNetworkAclEntry for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateNetworkAclEntryWithContext(ctx aws.Context, input *CreateNetworkAclEntryInput, opts ...request.Option) (*CreateNetworkAclEntryOutput, error) { + req, out := c.CreateNetworkAclEntryRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateNetworkInterface = "CreateNetworkInterface" + +// CreateNetworkInterfaceRequest generates a "aws/request.Request" representing the +// client's request for the CreateNetworkInterface operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateNetworkInterface for more information on using the CreateNetworkInterface +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateNetworkInterfaceRequest method. +// req, resp := client.CreateNetworkInterfaceRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkInterface +func (c *EC2) CreateNetworkInterfaceRequest(input *CreateNetworkInterfaceInput) (req *request.Request, output *CreateNetworkInterfaceOutput) { + op := &request.Operation{ + Name: opCreateNetworkInterface, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateNetworkInterfaceInput{} + } + + output = &CreateNetworkInterfaceOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateNetworkInterface API operation for Amazon Elastic Compute Cloud. +// +// Creates a network interface in the specified subnet. +// +// For more information about network interfaces, see Elastic Network Interfaces +// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html) in the +// Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateNetworkInterface for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkInterface +func (c *EC2) CreateNetworkInterface(input *CreateNetworkInterfaceInput) (*CreateNetworkInterfaceOutput, error) { + req, out := c.CreateNetworkInterfaceRequest(input) + return out, req.Send() +} + +// CreateNetworkInterfaceWithContext is the same as CreateNetworkInterface with the addition of +// the ability to pass a context and additional request options. +// +// See CreateNetworkInterface for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateNetworkInterfaceWithContext(ctx aws.Context, input *CreateNetworkInterfaceInput, opts ...request.Option) (*CreateNetworkInterfaceOutput, error) { + req, out := c.CreateNetworkInterfaceRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateNetworkInterfacePermission = "CreateNetworkInterfacePermission" + +// CreateNetworkInterfacePermissionRequest generates a "aws/request.Request" representing the +// client's request for the CreateNetworkInterfacePermission operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateNetworkInterfacePermission for more information on using the CreateNetworkInterfacePermission +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateNetworkInterfacePermissionRequest method. +// req, resp := client.CreateNetworkInterfacePermissionRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkInterfacePermission +func (c *EC2) CreateNetworkInterfacePermissionRequest(input *CreateNetworkInterfacePermissionInput) (req *request.Request, output *CreateNetworkInterfacePermissionOutput) { + op := &request.Operation{ + Name: opCreateNetworkInterfacePermission, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateNetworkInterfacePermissionInput{} + } + + output = &CreateNetworkInterfacePermissionOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateNetworkInterfacePermission API operation for Amazon Elastic Compute Cloud. +// +// Grants an AWS-authorized account permission to attach the specified network +// interface to an instance in their account. +// +// You can grant permission to a single AWS account only, and only one account +// at a time. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateNetworkInterfacePermission for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkInterfacePermission +func (c *EC2) CreateNetworkInterfacePermission(input *CreateNetworkInterfacePermissionInput) (*CreateNetworkInterfacePermissionOutput, error) { + req, out := c.CreateNetworkInterfacePermissionRequest(input) + return out, req.Send() +} + +// CreateNetworkInterfacePermissionWithContext is the same as CreateNetworkInterfacePermission with the addition of +// the ability to pass a context and additional request options. +// +// See CreateNetworkInterfacePermission for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateNetworkInterfacePermissionWithContext(ctx aws.Context, input *CreateNetworkInterfacePermissionInput, opts ...request.Option) (*CreateNetworkInterfacePermissionOutput, error) { + req, out := c.CreateNetworkInterfacePermissionRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreatePlacementGroup = "CreatePlacementGroup" + +// CreatePlacementGroupRequest generates a "aws/request.Request" representing the +// client's request for the CreatePlacementGroup operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreatePlacementGroup for more information on using the CreatePlacementGroup +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreatePlacementGroupRequest method. +// req, resp := client.CreatePlacementGroupRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreatePlacementGroup +func (c *EC2) CreatePlacementGroupRequest(input *CreatePlacementGroupInput) (req *request.Request, output *CreatePlacementGroupOutput) { + op := &request.Operation{ + Name: opCreatePlacementGroup, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreatePlacementGroupInput{} + } + + output = &CreatePlacementGroupOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// CreatePlacementGroup API operation for Amazon Elastic Compute Cloud. +// +// Creates a placement group in which to launch instances. The strategy of the +// placement group determines how the instances are organized within the group. +// +// A cluster placement group is a logical grouping of instances within a single +// Availability Zone that benefit from low network latency, high network throughput. +// A spread placement group places instances on distinct hardware. A partition +// placement group places groups of instances in different partitions, where +// instances in one partition do not share the same hardware with instances +// in another partition. +// +// For more information, see Placement Groups (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreatePlacementGroup for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreatePlacementGroup +func (c *EC2) CreatePlacementGroup(input *CreatePlacementGroupInput) (*CreatePlacementGroupOutput, error) { + req, out := c.CreatePlacementGroupRequest(input) + return out, req.Send() +} + +// CreatePlacementGroupWithContext is the same as CreatePlacementGroup with the addition of +// the ability to pass a context and additional request options. +// +// See CreatePlacementGroup for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreatePlacementGroupWithContext(ctx aws.Context, input *CreatePlacementGroupInput, opts ...request.Option) (*CreatePlacementGroupOutput, error) { + req, out := c.CreatePlacementGroupRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateReservedInstancesListing = "CreateReservedInstancesListing" + +// CreateReservedInstancesListingRequest generates a "aws/request.Request" representing the +// client's request for the CreateReservedInstancesListing operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateReservedInstancesListing for more information on using the CreateReservedInstancesListing +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateReservedInstancesListingRequest method. +// req, resp := client.CreateReservedInstancesListingRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateReservedInstancesListing +func (c *EC2) CreateReservedInstancesListingRequest(input *CreateReservedInstancesListingInput) (req *request.Request, output *CreateReservedInstancesListingOutput) { + op := &request.Operation{ + Name: opCreateReservedInstancesListing, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateReservedInstancesListingInput{} + } + + output = &CreateReservedInstancesListingOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateReservedInstancesListing API operation for Amazon Elastic Compute Cloud. +// +// Creates a listing for Amazon EC2 Standard Reserved Instances to be sold in +// the Reserved Instance Marketplace. You can submit one Standard Reserved Instance +// listing at a time. To get a list of your Standard Reserved Instances, you +// can use the DescribeReservedInstances operation. +// +// Only Standard Reserved Instances can be sold in the Reserved Instance Marketplace. +// Convertible Reserved Instances cannot be sold. +// +// The Reserved Instance Marketplace matches sellers who want to resell Standard +// Reserved Instance capacity that they no longer need with buyers who want +// to purchase additional capacity. Reserved Instances bought and sold through +// the Reserved Instance Marketplace work like any other Reserved Instances. +// +// To sell your Standard Reserved Instances, you must first register as a seller +// in the Reserved Instance Marketplace. After completing the registration process, +// you can create a Reserved Instance Marketplace listing of some or all of +// your Standard Reserved Instances, and specify the upfront price to receive +// for them. Your Standard Reserved Instance listings then become available +// for purchase. To view the details of your Standard Reserved Instance listing, +// you can use the DescribeReservedInstancesListings operation. +// +// For more information, see Reserved Instance Marketplace (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateReservedInstancesListing for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateReservedInstancesListing +func (c *EC2) CreateReservedInstancesListing(input *CreateReservedInstancesListingInput) (*CreateReservedInstancesListingOutput, error) { + req, out := c.CreateReservedInstancesListingRequest(input) + return out, req.Send() +} + +// CreateReservedInstancesListingWithContext is the same as CreateReservedInstancesListing with the addition of +// the ability to pass a context and additional request options. +// +// See CreateReservedInstancesListing for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateReservedInstancesListingWithContext(ctx aws.Context, input *CreateReservedInstancesListingInput, opts ...request.Option) (*CreateReservedInstancesListingOutput, error) { + req, out := c.CreateReservedInstancesListingRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateRoute = "CreateRoute" + +// CreateRouteRequest generates a "aws/request.Request" representing the +// client's request for the CreateRoute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateRoute for more information on using the CreateRoute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateRouteRequest method. +// req, resp := client.CreateRouteRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateRoute +func (c *EC2) CreateRouteRequest(input *CreateRouteInput) (req *request.Request, output *CreateRouteOutput) { + op := &request.Operation{ + Name: opCreateRoute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateRouteInput{} + } + + output = &CreateRouteOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateRoute API operation for Amazon Elastic Compute Cloud. +// +// Creates a route in a route table within a VPC. +// +// You must specify one of the following targets: internet gateway or virtual +// private gateway, NAT instance, NAT gateway, VPC peering connection, network +// interface, or egress-only internet gateway. +// +// When determining how to route traffic, we use the route with the most specific +// match. For example, traffic is destined for the IPv4 address 192.0.2.3, and +// the route table includes the following two IPv4 routes: +// +// * 192.0.2.0/24 (goes to some target A) +// +// * 192.0.2.0/28 (goes to some target B) +// +// Both routes apply to the traffic destined for 192.0.2.3. However, the second +// route in the list covers a smaller number of IP addresses and is therefore +// more specific, so we use that route to determine where to target the traffic. +// +// For more information about route tables, see Route Tables (https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateRoute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateRoute +func (c *EC2) CreateRoute(input *CreateRouteInput) (*CreateRouteOutput, error) { + req, out := c.CreateRouteRequest(input) + return out, req.Send() +} + +// CreateRouteWithContext is the same as CreateRoute with the addition of +// the ability to pass a context and additional request options. +// +// See CreateRoute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateRouteWithContext(ctx aws.Context, input *CreateRouteInput, opts ...request.Option) (*CreateRouteOutput, error) { + req, out := c.CreateRouteRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateRouteTable = "CreateRouteTable" + +// CreateRouteTableRequest generates a "aws/request.Request" representing the +// client's request for the CreateRouteTable operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateRouteTable for more information on using the CreateRouteTable +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateRouteTableRequest method. +// req, resp := client.CreateRouteTableRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateRouteTable +func (c *EC2) CreateRouteTableRequest(input *CreateRouteTableInput) (req *request.Request, output *CreateRouteTableOutput) { + op := &request.Operation{ + Name: opCreateRouteTable, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateRouteTableInput{} + } + + output = &CreateRouteTableOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateRouteTable API operation for Amazon Elastic Compute Cloud. +// +// Creates a route table for the specified VPC. After you create a route table, +// you can add routes and associate the table with a subnet. +// +// For more information, see Route Tables (https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateRouteTable for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateRouteTable +func (c *EC2) CreateRouteTable(input *CreateRouteTableInput) (*CreateRouteTableOutput, error) { + req, out := c.CreateRouteTableRequest(input) + return out, req.Send() +} + +// CreateRouteTableWithContext is the same as CreateRouteTable with the addition of +// the ability to pass a context and additional request options. +// +// See CreateRouteTable for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateRouteTableWithContext(ctx aws.Context, input *CreateRouteTableInput, opts ...request.Option) (*CreateRouteTableOutput, error) { + req, out := c.CreateRouteTableRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateSecurityGroup = "CreateSecurityGroup" + +// CreateSecurityGroupRequest generates a "aws/request.Request" representing the +// client's request for the CreateSecurityGroup operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateSecurityGroup for more information on using the CreateSecurityGroup +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateSecurityGroupRequest method. +// req, resp := client.CreateSecurityGroupRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSecurityGroup +func (c *EC2) CreateSecurityGroupRequest(input *CreateSecurityGroupInput) (req *request.Request, output *CreateSecurityGroupOutput) { + op := &request.Operation{ + Name: opCreateSecurityGroup, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateSecurityGroupInput{} + } + + output = &CreateSecurityGroupOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateSecurityGroup API operation for Amazon Elastic Compute Cloud. +// +// Creates a security group. +// +// A security group acts as a virtual firewall for your instance to control +// inbound and outbound traffic. For more information, see Amazon EC2 Security +// Groups (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html) +// in the Amazon Elastic Compute Cloud User Guide and Security Groups for Your +// VPC (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// When you create a security group, you specify a friendly name of your choice. +// You can have a security group for use in EC2-Classic with the same name as +// a security group for use in a VPC. However, you can't have two security groups +// for use in EC2-Classic with the same name or two security groups for use +// in a VPC with the same name. +// +// You have a default security group for use in EC2-Classic and a default security +// group for use in your VPC. If you don't specify a security group when you +// launch an instance, the instance is launched into the appropriate default +// security group. A default security group includes a default rule that grants +// instances unrestricted network access to each other. +// +// You can add or remove rules from your security groups using AuthorizeSecurityGroupIngress, +// AuthorizeSecurityGroupEgress, RevokeSecurityGroupIngress, and RevokeSecurityGroupEgress. +// +// For more information about VPC security group limits, see Amazon VPC Limits +// (https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateSecurityGroup for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSecurityGroup +func (c *EC2) CreateSecurityGroup(input *CreateSecurityGroupInput) (*CreateSecurityGroupOutput, error) { + req, out := c.CreateSecurityGroupRequest(input) + return out, req.Send() +} + +// CreateSecurityGroupWithContext is the same as CreateSecurityGroup with the addition of +// the ability to pass a context and additional request options. +// +// See CreateSecurityGroup for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateSecurityGroupWithContext(ctx aws.Context, input *CreateSecurityGroupInput, opts ...request.Option) (*CreateSecurityGroupOutput, error) { + req, out := c.CreateSecurityGroupRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateSnapshot = "CreateSnapshot" + +// CreateSnapshotRequest generates a "aws/request.Request" representing the +// client's request for the CreateSnapshot operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateSnapshot for more information on using the CreateSnapshot +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateSnapshotRequest method. +// req, resp := client.CreateSnapshotRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSnapshot +func (c *EC2) CreateSnapshotRequest(input *CreateSnapshotInput) (req *request.Request, output *Snapshot) { + op := &request.Operation{ + Name: opCreateSnapshot, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateSnapshotInput{} + } + + output = &Snapshot{} + req = c.newRequest(op, input, output) + return +} + +// CreateSnapshot API operation for Amazon Elastic Compute Cloud. +// +// Creates a snapshot of an EBS volume and stores it in Amazon S3. You can use +// snapshots for backups, to make copies of EBS volumes, and to save data before +// shutting down an instance. +// +// When a snapshot is created, any AWS Marketplace product codes that are associated +// with the source volume are propagated to the snapshot. +// +// You can take a snapshot of an attached volume that is in use. However, snapshots +// only capture data that has been written to your EBS volume at the time the +// snapshot command is issued; this may exclude any data that has been cached +// by any applications or the operating system. If you can pause any file systems +// on the volume long enough to take a snapshot, your snapshot should be complete. +// However, if you cannot pause all file writes to the volume, you should unmount +// the volume from within the instance, issue the snapshot command, and then +// remount the volume to ensure a consistent and complete snapshot. You may +// remount and use your volume while the snapshot status is pending. +// +// To create a snapshot for EBS volumes that serve as root devices, you should +// stop the instance before taking the snapshot. +// +// Snapshots that are taken from encrypted volumes are automatically encrypted. +// Volumes that are created from encrypted snapshots are also automatically +// encrypted. Your encrypted volumes and any associated snapshots always remain +// protected. +// +// You can tag your snapshots during creation. For more information, see Tagging +// Your Amazon EC2 Resources (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// For more information, see Amazon Elastic Block Store (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) +// and Amazon EBS Encryption (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateSnapshot for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSnapshot +func (c *EC2) CreateSnapshot(input *CreateSnapshotInput) (*Snapshot, error) { + req, out := c.CreateSnapshotRequest(input) + return out, req.Send() +} + +// CreateSnapshotWithContext is the same as CreateSnapshot with the addition of +// the ability to pass a context and additional request options. +// +// See CreateSnapshot for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateSnapshotWithContext(ctx aws.Context, input *CreateSnapshotInput, opts ...request.Option) (*Snapshot, error) { + req, out := c.CreateSnapshotRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateSnapshots = "CreateSnapshots" + +// CreateSnapshotsRequest generates a "aws/request.Request" representing the +// client's request for the CreateSnapshots operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateSnapshots for more information on using the CreateSnapshots +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateSnapshotsRequest method. +// req, resp := client.CreateSnapshotsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSnapshots +func (c *EC2) CreateSnapshotsRequest(input *CreateSnapshotsInput) (req *request.Request, output *CreateSnapshotsOutput) { + op := &request.Operation{ + Name: opCreateSnapshots, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateSnapshotsInput{} + } + + output = &CreateSnapshotsOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateSnapshots API operation for Amazon Elastic Compute Cloud. +// +// Creates crash-consistent snapshots of multiple EBS volumes and stores the +// data in S3. Volumes are chosen by specifying an instance. Any attached volumes +// will produce one snapshot each that is crash-consistent across the instance. +// Boot volumes can be excluded by changing the parameters. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateSnapshots for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSnapshots +func (c *EC2) CreateSnapshots(input *CreateSnapshotsInput) (*CreateSnapshotsOutput, error) { + req, out := c.CreateSnapshotsRequest(input) + return out, req.Send() +} + +// CreateSnapshotsWithContext is the same as CreateSnapshots with the addition of +// the ability to pass a context and additional request options. +// +// See CreateSnapshots for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateSnapshotsWithContext(ctx aws.Context, input *CreateSnapshotsInput, opts ...request.Option) (*CreateSnapshotsOutput, error) { + req, out := c.CreateSnapshotsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateSpotDatafeedSubscription = "CreateSpotDatafeedSubscription" + +// CreateSpotDatafeedSubscriptionRequest generates a "aws/request.Request" representing the +// client's request for the CreateSpotDatafeedSubscription operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateSpotDatafeedSubscription for more information on using the CreateSpotDatafeedSubscription +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateSpotDatafeedSubscriptionRequest method. +// req, resp := client.CreateSpotDatafeedSubscriptionRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSpotDatafeedSubscription +func (c *EC2) CreateSpotDatafeedSubscriptionRequest(input *CreateSpotDatafeedSubscriptionInput) (req *request.Request, output *CreateSpotDatafeedSubscriptionOutput) { + op := &request.Operation{ + Name: opCreateSpotDatafeedSubscription, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateSpotDatafeedSubscriptionInput{} + } + + output = &CreateSpotDatafeedSubscriptionOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateSpotDatafeedSubscription API operation for Amazon Elastic Compute Cloud. +// +// Creates a data feed for Spot Instances, enabling you to view Spot Instance +// usage logs. You can create one data feed per AWS account. For more information, +// see Spot Instance Data Feed (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-data-feeds.html) +// in the Amazon EC2 User Guide for Linux Instances. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateSpotDatafeedSubscription for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSpotDatafeedSubscription +func (c *EC2) CreateSpotDatafeedSubscription(input *CreateSpotDatafeedSubscriptionInput) (*CreateSpotDatafeedSubscriptionOutput, error) { + req, out := c.CreateSpotDatafeedSubscriptionRequest(input) + return out, req.Send() +} + +// CreateSpotDatafeedSubscriptionWithContext is the same as CreateSpotDatafeedSubscription with the addition of +// the ability to pass a context and additional request options. +// +// See CreateSpotDatafeedSubscription for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateSpotDatafeedSubscriptionWithContext(ctx aws.Context, input *CreateSpotDatafeedSubscriptionInput, opts ...request.Option) (*CreateSpotDatafeedSubscriptionOutput, error) { + req, out := c.CreateSpotDatafeedSubscriptionRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateSubnet = "CreateSubnet" + +// CreateSubnetRequest generates a "aws/request.Request" representing the +// client's request for the CreateSubnet operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateSubnet for more information on using the CreateSubnet +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateSubnetRequest method. +// req, resp := client.CreateSubnetRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSubnet +func (c *EC2) CreateSubnetRequest(input *CreateSubnetInput) (req *request.Request, output *CreateSubnetOutput) { + op := &request.Operation{ + Name: opCreateSubnet, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateSubnetInput{} + } + + output = &CreateSubnetOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateSubnet API operation for Amazon Elastic Compute Cloud. +// +// Creates a subnet in an existing VPC. +// +// When you create each subnet, you provide the VPC ID and IPv4 CIDR block for +// the subnet. After you create a subnet, you can't change its CIDR block. The +// size of the subnet's IPv4 CIDR block can be the same as a VPC's IPv4 CIDR +// block, or a subset of a VPC's IPv4 CIDR block. If you create more than one +// subnet in a VPC, the subnets' CIDR blocks must not overlap. The smallest +// IPv4 subnet (and VPC) you can create uses a /28 netmask (16 IPv4 addresses), +// and the largest uses a /16 netmask (65,536 IPv4 addresses). +// +// If you've associated an IPv6 CIDR block with your VPC, you can create a subnet +// with an IPv6 CIDR block that uses a /64 prefix length. +// +// AWS reserves both the first four and the last IPv4 address in each subnet's +// CIDR block. They're not available for use. +// +// If you add more than one subnet to a VPC, they're set up in a star topology +// with a logical router in the middle. +// +// If you launch an instance in a VPC using an Amazon EBS-backed AMI, the IP +// address doesn't change if you stop and restart the instance (unlike a similar +// instance launched outside a VPC, which gets a new IP address when restarted). +// It's therefore possible to have a subnet with no running instances (they're +// all stopped), but no remaining IP addresses available. +// +// For more information about subnets, see Your VPC and Subnets (https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateSubnet for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateSubnet +func (c *EC2) CreateSubnet(input *CreateSubnetInput) (*CreateSubnetOutput, error) { + req, out := c.CreateSubnetRequest(input) + return out, req.Send() +} + +// CreateSubnetWithContext is the same as CreateSubnet with the addition of +// the ability to pass a context and additional request options. +// +// See CreateSubnet for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateSubnetWithContext(ctx aws.Context, input *CreateSubnetInput, opts ...request.Option) (*CreateSubnetOutput, error) { + req, out := c.CreateSubnetRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateTags = "CreateTags" + +// CreateTagsRequest generates a "aws/request.Request" representing the +// client's request for the CreateTags operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateTags for more information on using the CreateTags +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateTagsRequest method. +// req, resp := client.CreateTagsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTags +func (c *EC2) CreateTagsRequest(input *CreateTagsInput) (req *request.Request, output *CreateTagsOutput) { + op := &request.Operation{ + Name: opCreateTags, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateTagsInput{} + } + + output = &CreateTagsOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// CreateTags API operation for Amazon Elastic Compute Cloud. +// +// Adds or overwrites the specified tags for the specified Amazon EC2 resource +// or resources. Each resource can have a maximum of 50 tags. Each tag consists +// of a key and optional value. Tag keys must be unique per resource. +// +// For more information about tags, see Tagging Your Resources (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html) +// in the Amazon Elastic Compute Cloud User Guide. For more information about +// creating IAM policies that control users' access to resources based on tags, +// see Supported Resource-Level Permissions for Amazon EC2 API Actions (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-iam-actions-resources.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateTags for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTags +func (c *EC2) CreateTags(input *CreateTagsInput) (*CreateTagsOutput, error) { + req, out := c.CreateTagsRequest(input) + return out, req.Send() +} + +// CreateTagsWithContext is the same as CreateTags with the addition of +// the ability to pass a context and additional request options. +// +// See CreateTags for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateTagsWithContext(ctx aws.Context, input *CreateTagsInput, opts ...request.Option) (*CreateTagsOutput, error) { + req, out := c.CreateTagsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateTrafficMirrorFilter = "CreateTrafficMirrorFilter" + +// CreateTrafficMirrorFilterRequest generates a "aws/request.Request" representing the +// client's request for the CreateTrafficMirrorFilter operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateTrafficMirrorFilter for more information on using the CreateTrafficMirrorFilter +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateTrafficMirrorFilterRequest method. +// req, resp := client.CreateTrafficMirrorFilterRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTrafficMirrorFilter +func (c *EC2) CreateTrafficMirrorFilterRequest(input *CreateTrafficMirrorFilterInput) (req *request.Request, output *CreateTrafficMirrorFilterOutput) { + op := &request.Operation{ + Name: opCreateTrafficMirrorFilter, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateTrafficMirrorFilterInput{} + } + + output = &CreateTrafficMirrorFilterOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateTrafficMirrorFilter API operation for Amazon Elastic Compute Cloud. +// +// Creates a Traffic Mirror filter. +// +// A Traffic Mirror filter is a set of rules that defines the traffic to mirror. +// +// By default, no traffic is mirrored. To mirror traffic, use CreateTrafficMirrorFilterRule +// (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTrafficMirrorFilterRule.htm) +// to add Traffic Mirror rules to the filter. The rules you add define what +// traffic gets mirrored. You can also use ModifyTrafficMirrorFilterNetworkServices +// (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyTrafficMirrorFilterNetworkServices.html) +// to mirror supported network services. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateTrafficMirrorFilter for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTrafficMirrorFilter +func (c *EC2) CreateTrafficMirrorFilter(input *CreateTrafficMirrorFilterInput) (*CreateTrafficMirrorFilterOutput, error) { + req, out := c.CreateTrafficMirrorFilterRequest(input) + return out, req.Send() +} + +// CreateTrafficMirrorFilterWithContext is the same as CreateTrafficMirrorFilter with the addition of +// the ability to pass a context and additional request options. +// +// See CreateTrafficMirrorFilter for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateTrafficMirrorFilterWithContext(ctx aws.Context, input *CreateTrafficMirrorFilterInput, opts ...request.Option) (*CreateTrafficMirrorFilterOutput, error) { + req, out := c.CreateTrafficMirrorFilterRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateTrafficMirrorFilterRule = "CreateTrafficMirrorFilterRule" + +// CreateTrafficMirrorFilterRuleRequest generates a "aws/request.Request" representing the +// client's request for the CreateTrafficMirrorFilterRule operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateTrafficMirrorFilterRule for more information on using the CreateTrafficMirrorFilterRule +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateTrafficMirrorFilterRuleRequest method. +// req, resp := client.CreateTrafficMirrorFilterRuleRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTrafficMirrorFilterRule +func (c *EC2) CreateTrafficMirrorFilterRuleRequest(input *CreateTrafficMirrorFilterRuleInput) (req *request.Request, output *CreateTrafficMirrorFilterRuleOutput) { + op := &request.Operation{ + Name: opCreateTrafficMirrorFilterRule, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateTrafficMirrorFilterRuleInput{} + } + + output = &CreateTrafficMirrorFilterRuleOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateTrafficMirrorFilterRule API operation for Amazon Elastic Compute Cloud. +// +// Creates a Traffic Mirror filter rule. +// +// A Traffic Mirror rule defines the Traffic Mirror source traffic to mirror. +// +// You need the Traffic Mirror filter ID when you create the rule. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateTrafficMirrorFilterRule for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTrafficMirrorFilterRule +func (c *EC2) CreateTrafficMirrorFilterRule(input *CreateTrafficMirrorFilterRuleInput) (*CreateTrafficMirrorFilterRuleOutput, error) { + req, out := c.CreateTrafficMirrorFilterRuleRequest(input) + return out, req.Send() +} + +// CreateTrafficMirrorFilterRuleWithContext is the same as CreateTrafficMirrorFilterRule with the addition of +// the ability to pass a context and additional request options. +// +// See CreateTrafficMirrorFilterRule for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateTrafficMirrorFilterRuleWithContext(ctx aws.Context, input *CreateTrafficMirrorFilterRuleInput, opts ...request.Option) (*CreateTrafficMirrorFilterRuleOutput, error) { + req, out := c.CreateTrafficMirrorFilterRuleRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateTrafficMirrorSession = "CreateTrafficMirrorSession" + +// CreateTrafficMirrorSessionRequest generates a "aws/request.Request" representing the +// client's request for the CreateTrafficMirrorSession operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateTrafficMirrorSession for more information on using the CreateTrafficMirrorSession +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateTrafficMirrorSessionRequest method. +// req, resp := client.CreateTrafficMirrorSessionRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTrafficMirrorSession +func (c *EC2) CreateTrafficMirrorSessionRequest(input *CreateTrafficMirrorSessionInput) (req *request.Request, output *CreateTrafficMirrorSessionOutput) { + op := &request.Operation{ + Name: opCreateTrafficMirrorSession, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateTrafficMirrorSessionInput{} + } + + output = &CreateTrafficMirrorSessionOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateTrafficMirrorSession API operation for Amazon Elastic Compute Cloud. +// +// Creates a Traffic Mirror session. +// +// A Traffic Mirror session actively copies packets from a Traffic Mirror source +// to a Traffic Mirror target. Create a filter, and then assign it to the session +// to define a subset of the traffic to mirror, for example all TCP traffic. +// +// The Traffic Mirror source and the Traffic Mirror target (monitoring appliances) +// can be in the same VPC, or in a different VPC connected via VPC peering or +// a transit gateway. +// +// By default, no traffic is mirrored. Use CreateTrafficMirrorFilter (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTrafficMirrorFilter.htm) +// to create filter rules that specify the traffic to mirror. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateTrafficMirrorSession for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTrafficMirrorSession +func (c *EC2) CreateTrafficMirrorSession(input *CreateTrafficMirrorSessionInput) (*CreateTrafficMirrorSessionOutput, error) { + req, out := c.CreateTrafficMirrorSessionRequest(input) + return out, req.Send() +} + +// CreateTrafficMirrorSessionWithContext is the same as CreateTrafficMirrorSession with the addition of +// the ability to pass a context and additional request options. +// +// See CreateTrafficMirrorSession for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateTrafficMirrorSessionWithContext(ctx aws.Context, input *CreateTrafficMirrorSessionInput, opts ...request.Option) (*CreateTrafficMirrorSessionOutput, error) { + req, out := c.CreateTrafficMirrorSessionRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateTrafficMirrorTarget = "CreateTrafficMirrorTarget" + +// CreateTrafficMirrorTargetRequest generates a "aws/request.Request" representing the +// client's request for the CreateTrafficMirrorTarget operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateTrafficMirrorTarget for more information on using the CreateTrafficMirrorTarget +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateTrafficMirrorTargetRequest method. +// req, resp := client.CreateTrafficMirrorTargetRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTrafficMirrorTarget +func (c *EC2) CreateTrafficMirrorTargetRequest(input *CreateTrafficMirrorTargetInput) (req *request.Request, output *CreateTrafficMirrorTargetOutput) { + op := &request.Operation{ + Name: opCreateTrafficMirrorTarget, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateTrafficMirrorTargetInput{} + } + + output = &CreateTrafficMirrorTargetOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateTrafficMirrorTarget API operation for Amazon Elastic Compute Cloud. +// +// Creates a target for your Traffic Mirror session. +// +// A Traffic Mirror target is the destination for mirrored traffic. The Traffic +// Mirror source and the Traffic Mirror target (monitoring appliances) can be +// in the same VPC, or in different VPCs connected via VPC peering or a transit +// gateway. +// +// A Traffic Mirror target can be a network interface, or a Network Load Balancer. +// +// To use the target in a Traffic Mirror session, use CreateTrafficMirrorSession +// (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTrafficMirrorSession.htm). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateTrafficMirrorTarget for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTrafficMirrorTarget +func (c *EC2) CreateTrafficMirrorTarget(input *CreateTrafficMirrorTargetInput) (*CreateTrafficMirrorTargetOutput, error) { + req, out := c.CreateTrafficMirrorTargetRequest(input) + return out, req.Send() +} + +// CreateTrafficMirrorTargetWithContext is the same as CreateTrafficMirrorTarget with the addition of +// the ability to pass a context and additional request options. +// +// See CreateTrafficMirrorTarget for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateTrafficMirrorTargetWithContext(ctx aws.Context, input *CreateTrafficMirrorTargetInput, opts ...request.Option) (*CreateTrafficMirrorTargetOutput, error) { + req, out := c.CreateTrafficMirrorTargetRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateTransitGateway = "CreateTransitGateway" + +// CreateTransitGatewayRequest generates a "aws/request.Request" representing the +// client's request for the CreateTransitGateway operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateTransitGateway for more information on using the CreateTransitGateway +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateTransitGatewayRequest method. +// req, resp := client.CreateTransitGatewayRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTransitGateway +func (c *EC2) CreateTransitGatewayRequest(input *CreateTransitGatewayInput) (req *request.Request, output *CreateTransitGatewayOutput) { + op := &request.Operation{ + Name: opCreateTransitGateway, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateTransitGatewayInput{} + } + + output = &CreateTransitGatewayOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateTransitGateway API operation for Amazon Elastic Compute Cloud. +// +// Creates a transit gateway. +// +// You can use a transit gateway to interconnect your virtual private clouds +// (VPC) and on-premises networks. After the transit gateway enters the available +// state, you can attach your VPCs and VPN connections to the transit gateway. +// +// To attach your VPCs, use CreateTransitGatewayVpcAttachment. +// +// To attach a VPN connection, use CreateCustomerGateway to create a customer +// gateway and specify the ID of the customer gateway and the ID of the transit +// gateway in a call to CreateVpnConnection. +// +// When you create a transit gateway, we create a default transit gateway route +// table and use it as the default association route table and the default propagation +// route table. You can use CreateTransitGatewayRouteTable to create additional +// transit gateway route tables. If you disable automatic route propagation, +// we do not create a default transit gateway route table. You can use EnableTransitGatewayRouteTablePropagation +// to propagate routes from a resource attachment to a transit gateway route +// table. If you disable automatic associations, you can use AssociateTransitGatewayRouteTable +// to associate a resource attachment with a transit gateway route table. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateTransitGateway for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTransitGateway +func (c *EC2) CreateTransitGateway(input *CreateTransitGatewayInput) (*CreateTransitGatewayOutput, error) { + req, out := c.CreateTransitGatewayRequest(input) + return out, req.Send() +} + +// CreateTransitGatewayWithContext is the same as CreateTransitGateway with the addition of +// the ability to pass a context and additional request options. +// +// See CreateTransitGateway for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateTransitGatewayWithContext(ctx aws.Context, input *CreateTransitGatewayInput, opts ...request.Option) (*CreateTransitGatewayOutput, error) { + req, out := c.CreateTransitGatewayRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateTransitGatewayRoute = "CreateTransitGatewayRoute" + +// CreateTransitGatewayRouteRequest generates a "aws/request.Request" representing the +// client's request for the CreateTransitGatewayRoute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateTransitGatewayRoute for more information on using the CreateTransitGatewayRoute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateTransitGatewayRouteRequest method. +// req, resp := client.CreateTransitGatewayRouteRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTransitGatewayRoute +func (c *EC2) CreateTransitGatewayRouteRequest(input *CreateTransitGatewayRouteInput) (req *request.Request, output *CreateTransitGatewayRouteOutput) { + op := &request.Operation{ + Name: opCreateTransitGatewayRoute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateTransitGatewayRouteInput{} + } + + output = &CreateTransitGatewayRouteOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateTransitGatewayRoute API operation for Amazon Elastic Compute Cloud. +// +// Creates a static route for the specified transit gateway route table. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateTransitGatewayRoute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTransitGatewayRoute +func (c *EC2) CreateTransitGatewayRoute(input *CreateTransitGatewayRouteInput) (*CreateTransitGatewayRouteOutput, error) { + req, out := c.CreateTransitGatewayRouteRequest(input) + return out, req.Send() +} + +// CreateTransitGatewayRouteWithContext is the same as CreateTransitGatewayRoute with the addition of +// the ability to pass a context and additional request options. +// +// See CreateTransitGatewayRoute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateTransitGatewayRouteWithContext(ctx aws.Context, input *CreateTransitGatewayRouteInput, opts ...request.Option) (*CreateTransitGatewayRouteOutput, error) { + req, out := c.CreateTransitGatewayRouteRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateTransitGatewayRouteTable = "CreateTransitGatewayRouteTable" + +// CreateTransitGatewayRouteTableRequest generates a "aws/request.Request" representing the +// client's request for the CreateTransitGatewayRouteTable operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateTransitGatewayRouteTable for more information on using the CreateTransitGatewayRouteTable +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateTransitGatewayRouteTableRequest method. +// req, resp := client.CreateTransitGatewayRouteTableRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTransitGatewayRouteTable +func (c *EC2) CreateTransitGatewayRouteTableRequest(input *CreateTransitGatewayRouteTableInput) (req *request.Request, output *CreateTransitGatewayRouteTableOutput) { + op := &request.Operation{ + Name: opCreateTransitGatewayRouteTable, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateTransitGatewayRouteTableInput{} + } + + output = &CreateTransitGatewayRouteTableOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateTransitGatewayRouteTable API operation for Amazon Elastic Compute Cloud. +// +// Creates a route table for the specified transit gateway. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateTransitGatewayRouteTable for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTransitGatewayRouteTable +func (c *EC2) CreateTransitGatewayRouteTable(input *CreateTransitGatewayRouteTableInput) (*CreateTransitGatewayRouteTableOutput, error) { + req, out := c.CreateTransitGatewayRouteTableRequest(input) + return out, req.Send() +} + +// CreateTransitGatewayRouteTableWithContext is the same as CreateTransitGatewayRouteTable with the addition of +// the ability to pass a context and additional request options. +// +// See CreateTransitGatewayRouteTable for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateTransitGatewayRouteTableWithContext(ctx aws.Context, input *CreateTransitGatewayRouteTableInput, opts ...request.Option) (*CreateTransitGatewayRouteTableOutput, error) { + req, out := c.CreateTransitGatewayRouteTableRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateTransitGatewayVpcAttachment = "CreateTransitGatewayVpcAttachment" + +// CreateTransitGatewayVpcAttachmentRequest generates a "aws/request.Request" representing the +// client's request for the CreateTransitGatewayVpcAttachment operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateTransitGatewayVpcAttachment for more information on using the CreateTransitGatewayVpcAttachment +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateTransitGatewayVpcAttachmentRequest method. +// req, resp := client.CreateTransitGatewayVpcAttachmentRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTransitGatewayVpcAttachment +func (c *EC2) CreateTransitGatewayVpcAttachmentRequest(input *CreateTransitGatewayVpcAttachmentInput) (req *request.Request, output *CreateTransitGatewayVpcAttachmentOutput) { + op := &request.Operation{ + Name: opCreateTransitGatewayVpcAttachment, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateTransitGatewayVpcAttachmentInput{} + } + + output = &CreateTransitGatewayVpcAttachmentOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateTransitGatewayVpcAttachment API operation for Amazon Elastic Compute Cloud. +// +// Attaches the specified VPC to the specified transit gateway. +// +// If you attach a VPC with a CIDR range that overlaps the CIDR range of a VPC +// that is already attached, the new VPC CIDR range is not propagated to the +// default propagation route table. +// +// To send VPC traffic to an attached transit gateway, add a route to the VPC +// route table using CreateRoute. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateTransitGatewayVpcAttachment for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTransitGatewayVpcAttachment +func (c *EC2) CreateTransitGatewayVpcAttachment(input *CreateTransitGatewayVpcAttachmentInput) (*CreateTransitGatewayVpcAttachmentOutput, error) { + req, out := c.CreateTransitGatewayVpcAttachmentRequest(input) + return out, req.Send() +} + +// CreateTransitGatewayVpcAttachmentWithContext is the same as CreateTransitGatewayVpcAttachment with the addition of +// the ability to pass a context and additional request options. +// +// See CreateTransitGatewayVpcAttachment for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateTransitGatewayVpcAttachmentWithContext(ctx aws.Context, input *CreateTransitGatewayVpcAttachmentInput, opts ...request.Option) (*CreateTransitGatewayVpcAttachmentOutput, error) { + req, out := c.CreateTransitGatewayVpcAttachmentRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateVolume = "CreateVolume" + +// CreateVolumeRequest generates a "aws/request.Request" representing the +// client's request for the CreateVolume operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateVolume for more information on using the CreateVolume +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateVolumeRequest method. +// req, resp := client.CreateVolumeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVolume +func (c *EC2) CreateVolumeRequest(input *CreateVolumeInput) (req *request.Request, output *Volume) { + op := &request.Operation{ + Name: opCreateVolume, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateVolumeInput{} + } + + output = &Volume{} + req = c.newRequest(op, input, output) + return +} + +// CreateVolume API operation for Amazon Elastic Compute Cloud. +// +// Creates an EBS volume that can be attached to an instance in the same Availability +// Zone. The volume is created in the regional endpoint that you send the HTTP +// request to. For more information see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html). +// +// You can create a new empty volume or restore a volume from an EBS snapshot. +// Any AWS Marketplace product codes from the snapshot are propagated to the +// volume. +// +// You can create encrypted volumes. Encrypted volumes must be attached to instances +// that support Amazon EBS encryption. Volumes that are created from encrypted +// snapshots are also automatically encrypted. For more information, see Amazon +// EBS Encryption (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// You can tag your volumes during creation. For more information, see Tagging +// Your Amazon EC2 Resources (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// For more information, see Creating an Amazon EBS Volume (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-creating-volume.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateVolume for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVolume +func (c *EC2) CreateVolume(input *CreateVolumeInput) (*Volume, error) { + req, out := c.CreateVolumeRequest(input) + return out, req.Send() +} + +// CreateVolumeWithContext is the same as CreateVolume with the addition of +// the ability to pass a context and additional request options. +// +// See CreateVolume for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateVolumeWithContext(ctx aws.Context, input *CreateVolumeInput, opts ...request.Option) (*Volume, error) { + req, out := c.CreateVolumeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateVpc = "CreateVpc" + +// CreateVpcRequest generates a "aws/request.Request" representing the +// client's request for the CreateVpc operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateVpc for more information on using the CreateVpc +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateVpcRequest method. +// req, resp := client.CreateVpcRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpc +func (c *EC2) CreateVpcRequest(input *CreateVpcInput) (req *request.Request, output *CreateVpcOutput) { + op := &request.Operation{ + Name: opCreateVpc, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateVpcInput{} + } + + output = &CreateVpcOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateVpc API operation for Amazon Elastic Compute Cloud. +// +// Creates a VPC with the specified IPv4 CIDR block. The smallest VPC you can +// create uses a /28 netmask (16 IPv4 addresses), and the largest uses a /16 +// netmask (65,536 IPv4 addresses). For more information about how large to +// make your VPC, see Your VPC and Subnets (https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// You can optionally request an Amazon-provided IPv6 CIDR block for the VPC. +// The IPv6 CIDR block uses a /56 prefix length, and is allocated from Amazon's +// pool of IPv6 addresses. You cannot choose the IPv6 range for your VPC. +// +// By default, each instance you launch in the VPC has the default DHCP options, +// which include only a default DNS server that we provide (AmazonProvidedDNS). +// For more information, see DHCP Options Sets (https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// You can specify the instance tenancy value for the VPC when you create it. +// You can't change this value for the VPC after you create it. For more information, +// see Dedicated Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateVpc for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpc +func (c *EC2) CreateVpc(input *CreateVpcInput) (*CreateVpcOutput, error) { + req, out := c.CreateVpcRequest(input) + return out, req.Send() +} + +// CreateVpcWithContext is the same as CreateVpc with the addition of +// the ability to pass a context and additional request options. +// +// See CreateVpc for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateVpcWithContext(ctx aws.Context, input *CreateVpcInput, opts ...request.Option) (*CreateVpcOutput, error) { + req, out := c.CreateVpcRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateVpcEndpoint = "CreateVpcEndpoint" + +// CreateVpcEndpointRequest generates a "aws/request.Request" representing the +// client's request for the CreateVpcEndpoint operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateVpcEndpoint for more information on using the CreateVpcEndpoint +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateVpcEndpointRequest method. +// req, resp := client.CreateVpcEndpointRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcEndpoint +func (c *EC2) CreateVpcEndpointRequest(input *CreateVpcEndpointInput) (req *request.Request, output *CreateVpcEndpointOutput) { + op := &request.Operation{ + Name: opCreateVpcEndpoint, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateVpcEndpointInput{} + } + + output = &CreateVpcEndpointOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateVpcEndpoint API operation for Amazon Elastic Compute Cloud. +// +// Creates a VPC endpoint for a specified service. An endpoint enables you to +// create a private connection between your VPC and the service. The service +// may be provided by AWS, an AWS Marketplace partner, or another AWS account. +// For more information, see VPC Endpoints (https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// A gateway endpoint serves as a target for a route in your route table for +// traffic destined for the AWS service. You can specify an endpoint policy +// to attach to the endpoint that will control access to the service from your +// VPC. You can also specify the VPC route tables that use the endpoint. +// +// An interface endpoint is a network interface in your subnet that serves as +// an endpoint for communicating with the specified service. You can specify +// the subnets in which to create an endpoint, and the security groups to associate +// with the endpoint network interface. +// +// Use DescribeVpcEndpointServices to get a list of supported services. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateVpcEndpoint for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcEndpoint +func (c *EC2) CreateVpcEndpoint(input *CreateVpcEndpointInput) (*CreateVpcEndpointOutput, error) { + req, out := c.CreateVpcEndpointRequest(input) + return out, req.Send() +} + +// CreateVpcEndpointWithContext is the same as CreateVpcEndpoint with the addition of +// the ability to pass a context and additional request options. +// +// See CreateVpcEndpoint for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateVpcEndpointWithContext(ctx aws.Context, input *CreateVpcEndpointInput, opts ...request.Option) (*CreateVpcEndpointOutput, error) { + req, out := c.CreateVpcEndpointRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateVpcEndpointConnectionNotification = "CreateVpcEndpointConnectionNotification" + +// CreateVpcEndpointConnectionNotificationRequest generates a "aws/request.Request" representing the +// client's request for the CreateVpcEndpointConnectionNotification operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateVpcEndpointConnectionNotification for more information on using the CreateVpcEndpointConnectionNotification +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateVpcEndpointConnectionNotificationRequest method. +// req, resp := client.CreateVpcEndpointConnectionNotificationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcEndpointConnectionNotification +func (c *EC2) CreateVpcEndpointConnectionNotificationRequest(input *CreateVpcEndpointConnectionNotificationInput) (req *request.Request, output *CreateVpcEndpointConnectionNotificationOutput) { + op := &request.Operation{ + Name: opCreateVpcEndpointConnectionNotification, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateVpcEndpointConnectionNotificationInput{} + } + + output = &CreateVpcEndpointConnectionNotificationOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateVpcEndpointConnectionNotification API operation for Amazon Elastic Compute Cloud. +// +// Creates a connection notification for a specified VPC endpoint or VPC endpoint +// service. A connection notification notifies you of specific endpoint events. +// You must create an SNS topic to receive notifications. For more information, +// see Create a Topic (https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html) +// in the Amazon Simple Notification Service Developer Guide. +// +// You can create a connection notification for interface endpoints only. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateVpcEndpointConnectionNotification for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcEndpointConnectionNotification +func (c *EC2) CreateVpcEndpointConnectionNotification(input *CreateVpcEndpointConnectionNotificationInput) (*CreateVpcEndpointConnectionNotificationOutput, error) { + req, out := c.CreateVpcEndpointConnectionNotificationRequest(input) + return out, req.Send() +} + +// CreateVpcEndpointConnectionNotificationWithContext is the same as CreateVpcEndpointConnectionNotification with the addition of +// the ability to pass a context and additional request options. +// +// See CreateVpcEndpointConnectionNotification for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateVpcEndpointConnectionNotificationWithContext(ctx aws.Context, input *CreateVpcEndpointConnectionNotificationInput, opts ...request.Option) (*CreateVpcEndpointConnectionNotificationOutput, error) { + req, out := c.CreateVpcEndpointConnectionNotificationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateVpcEndpointServiceConfiguration = "CreateVpcEndpointServiceConfiguration" + +// CreateVpcEndpointServiceConfigurationRequest generates a "aws/request.Request" representing the +// client's request for the CreateVpcEndpointServiceConfiguration operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateVpcEndpointServiceConfiguration for more information on using the CreateVpcEndpointServiceConfiguration +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateVpcEndpointServiceConfigurationRequest method. +// req, resp := client.CreateVpcEndpointServiceConfigurationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcEndpointServiceConfiguration +func (c *EC2) CreateVpcEndpointServiceConfigurationRequest(input *CreateVpcEndpointServiceConfigurationInput) (req *request.Request, output *CreateVpcEndpointServiceConfigurationOutput) { + op := &request.Operation{ + Name: opCreateVpcEndpointServiceConfiguration, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateVpcEndpointServiceConfigurationInput{} + } + + output = &CreateVpcEndpointServiceConfigurationOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateVpcEndpointServiceConfiguration API operation for Amazon Elastic Compute Cloud. +// +// Creates a VPC endpoint service configuration to which service consumers (AWS +// accounts, IAM users, and IAM roles) can connect. Service consumers can create +// an interface VPC endpoint to connect to your service. +// +// To create an endpoint service configuration, you must first create a Network +// Load Balancer for your service. For more information, see VPC Endpoint Services +// (https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-service.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateVpcEndpointServiceConfiguration for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcEndpointServiceConfiguration +func (c *EC2) CreateVpcEndpointServiceConfiguration(input *CreateVpcEndpointServiceConfigurationInput) (*CreateVpcEndpointServiceConfigurationOutput, error) { + req, out := c.CreateVpcEndpointServiceConfigurationRequest(input) + return out, req.Send() +} + +// CreateVpcEndpointServiceConfigurationWithContext is the same as CreateVpcEndpointServiceConfiguration with the addition of +// the ability to pass a context and additional request options. +// +// See CreateVpcEndpointServiceConfiguration for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateVpcEndpointServiceConfigurationWithContext(ctx aws.Context, input *CreateVpcEndpointServiceConfigurationInput, opts ...request.Option) (*CreateVpcEndpointServiceConfigurationOutput, error) { + req, out := c.CreateVpcEndpointServiceConfigurationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateVpcPeeringConnection = "CreateVpcPeeringConnection" + +// CreateVpcPeeringConnectionRequest generates a "aws/request.Request" representing the +// client's request for the CreateVpcPeeringConnection operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateVpcPeeringConnection for more information on using the CreateVpcPeeringConnection +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateVpcPeeringConnectionRequest method. +// req, resp := client.CreateVpcPeeringConnectionRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcPeeringConnection +func (c *EC2) CreateVpcPeeringConnectionRequest(input *CreateVpcPeeringConnectionInput) (req *request.Request, output *CreateVpcPeeringConnectionOutput) { + op := &request.Operation{ + Name: opCreateVpcPeeringConnection, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateVpcPeeringConnectionInput{} + } + + output = &CreateVpcPeeringConnectionOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateVpcPeeringConnection API operation for Amazon Elastic Compute Cloud. +// +// Requests a VPC peering connection between two VPCs: a requester VPC that +// you own and an accepter VPC with which to create the connection. The accepter +// VPC can belong to another AWS account and can be in a different Region to +// the requester VPC. The requester VPC and accepter VPC cannot have overlapping +// CIDR blocks. +// +// Limitations and rules apply to a VPC peering connection. For more information, +// see the limitations (https://docs.aws.amazon.com/vpc/latest/peering/vpc-peering-basics.html#vpc-peering-limitations) +// section in the VPC Peering Guide. +// +// The owner of the accepter VPC must accept the peering request to activate +// the peering connection. The VPC peering connection request expires after +// 7 days, after which it cannot be accepted or rejected. +// +// If you create a VPC peering connection request between VPCs with overlapping +// CIDR blocks, the VPC peering connection has a status of failed. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateVpcPeeringConnection for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpcPeeringConnection +func (c *EC2) CreateVpcPeeringConnection(input *CreateVpcPeeringConnectionInput) (*CreateVpcPeeringConnectionOutput, error) { + req, out := c.CreateVpcPeeringConnectionRequest(input) + return out, req.Send() +} + +// CreateVpcPeeringConnectionWithContext is the same as CreateVpcPeeringConnection with the addition of +// the ability to pass a context and additional request options. +// +// See CreateVpcPeeringConnection for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateVpcPeeringConnectionWithContext(ctx aws.Context, input *CreateVpcPeeringConnectionInput, opts ...request.Option) (*CreateVpcPeeringConnectionOutput, error) { + req, out := c.CreateVpcPeeringConnectionRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateVpnConnection = "CreateVpnConnection" + +// CreateVpnConnectionRequest generates a "aws/request.Request" representing the +// client's request for the CreateVpnConnection operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateVpnConnection for more information on using the CreateVpnConnection +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateVpnConnectionRequest method. +// req, resp := client.CreateVpnConnectionRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpnConnection +func (c *EC2) CreateVpnConnectionRequest(input *CreateVpnConnectionInput) (req *request.Request, output *CreateVpnConnectionOutput) { + op := &request.Operation{ + Name: opCreateVpnConnection, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateVpnConnectionInput{} + } + + output = &CreateVpnConnectionOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateVpnConnection API operation for Amazon Elastic Compute Cloud. +// +// Creates a VPN connection between an existing virtual private gateway and +// a VPN customer gateway. The supported connection type is ipsec.1. +// +// The response includes information that you need to give to your network administrator +// to configure your customer gateway. +// +// We strongly recommend that you use HTTPS when calling this operation because +// the response contains sensitive cryptographic information for configuring +// your customer gateway. +// +// If you decide to shut down your VPN connection for any reason and later create +// a new VPN connection, you must reconfigure your customer gateway with the +// new information returned from this call. +// +// This is an idempotent operation. If you perform the operation more than once, +// Amazon EC2 doesn't return an error. +// +// For more information, see AWS Site-to-Site VPN (https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) +// in the AWS Site-to-Site VPN User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateVpnConnection for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpnConnection +func (c *EC2) CreateVpnConnection(input *CreateVpnConnectionInput) (*CreateVpnConnectionOutput, error) { + req, out := c.CreateVpnConnectionRequest(input) + return out, req.Send() +} + +// CreateVpnConnectionWithContext is the same as CreateVpnConnection with the addition of +// the ability to pass a context and additional request options. +// +// See CreateVpnConnection for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateVpnConnectionWithContext(ctx aws.Context, input *CreateVpnConnectionInput, opts ...request.Option) (*CreateVpnConnectionOutput, error) { + req, out := c.CreateVpnConnectionRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateVpnConnectionRoute = "CreateVpnConnectionRoute" + +// CreateVpnConnectionRouteRequest generates a "aws/request.Request" representing the +// client's request for the CreateVpnConnectionRoute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateVpnConnectionRoute for more information on using the CreateVpnConnectionRoute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateVpnConnectionRouteRequest method. +// req, resp := client.CreateVpnConnectionRouteRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpnConnectionRoute +func (c *EC2) CreateVpnConnectionRouteRequest(input *CreateVpnConnectionRouteInput) (req *request.Request, output *CreateVpnConnectionRouteOutput) { + op := &request.Operation{ + Name: opCreateVpnConnectionRoute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateVpnConnectionRouteInput{} + } + + output = &CreateVpnConnectionRouteOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// CreateVpnConnectionRoute API operation for Amazon Elastic Compute Cloud. +// +// Creates a static route associated with a VPN connection between an existing +// virtual private gateway and a VPN customer gateway. The static route allows +// traffic to be routed from the virtual private gateway to the VPN customer +// gateway. +// +// For more information, see AWS Site-to-Site VPN (https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) +// in the AWS Site-to-Site VPN User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateVpnConnectionRoute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpnConnectionRoute +func (c *EC2) CreateVpnConnectionRoute(input *CreateVpnConnectionRouteInput) (*CreateVpnConnectionRouteOutput, error) { + req, out := c.CreateVpnConnectionRouteRequest(input) + return out, req.Send() +} + +// CreateVpnConnectionRouteWithContext is the same as CreateVpnConnectionRoute with the addition of +// the ability to pass a context and additional request options. +// +// See CreateVpnConnectionRoute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateVpnConnectionRouteWithContext(ctx aws.Context, input *CreateVpnConnectionRouteInput, opts ...request.Option) (*CreateVpnConnectionRouteOutput, error) { + req, out := c.CreateVpnConnectionRouteRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateVpnGateway = "CreateVpnGateway" + +// CreateVpnGatewayRequest generates a "aws/request.Request" representing the +// client's request for the CreateVpnGateway operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateVpnGateway for more information on using the CreateVpnGateway +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateVpnGatewayRequest method. +// req, resp := client.CreateVpnGatewayRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpnGateway +func (c *EC2) CreateVpnGatewayRequest(input *CreateVpnGatewayInput) (req *request.Request, output *CreateVpnGatewayOutput) { + op := &request.Operation{ + Name: opCreateVpnGateway, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateVpnGatewayInput{} + } + + output = &CreateVpnGatewayOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateVpnGateway API operation for Amazon Elastic Compute Cloud. +// +// Creates a virtual private gateway. A virtual private gateway is the endpoint +// on the VPC side of your VPN connection. You can create a virtual private +// gateway before creating the VPC itself. +// +// For more information, see AWS Site-to-Site VPN (https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) +// in the AWS Site-to-Site VPN User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateVpnGateway for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateVpnGateway +func (c *EC2) CreateVpnGateway(input *CreateVpnGatewayInput) (*CreateVpnGatewayOutput, error) { + req, out := c.CreateVpnGatewayRequest(input) + return out, req.Send() +} + +// CreateVpnGatewayWithContext is the same as CreateVpnGateway with the addition of +// the ability to pass a context and additional request options. +// +// See CreateVpnGateway for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateVpnGatewayWithContext(ctx aws.Context, input *CreateVpnGatewayInput, opts ...request.Option) (*CreateVpnGatewayOutput, error) { + req, out := c.CreateVpnGatewayRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteClientVpnEndpoint = "DeleteClientVpnEndpoint" + +// DeleteClientVpnEndpointRequest generates a "aws/request.Request" representing the +// client's request for the DeleteClientVpnEndpoint operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteClientVpnEndpoint for more information on using the DeleteClientVpnEndpoint +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteClientVpnEndpointRequest method. +// req, resp := client.DeleteClientVpnEndpointRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteClientVpnEndpoint +func (c *EC2) DeleteClientVpnEndpointRequest(input *DeleteClientVpnEndpointInput) (req *request.Request, output *DeleteClientVpnEndpointOutput) { + op := &request.Operation{ + Name: opDeleteClientVpnEndpoint, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteClientVpnEndpointInput{} + } + + output = &DeleteClientVpnEndpointOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteClientVpnEndpoint API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified Client VPN endpoint. You must disassociate all target +// networks before you can delete a Client VPN endpoint. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteClientVpnEndpoint for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteClientVpnEndpoint +func (c *EC2) DeleteClientVpnEndpoint(input *DeleteClientVpnEndpointInput) (*DeleteClientVpnEndpointOutput, error) { + req, out := c.DeleteClientVpnEndpointRequest(input) + return out, req.Send() +} + +// DeleteClientVpnEndpointWithContext is the same as DeleteClientVpnEndpoint with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteClientVpnEndpoint for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteClientVpnEndpointWithContext(ctx aws.Context, input *DeleteClientVpnEndpointInput, opts ...request.Option) (*DeleteClientVpnEndpointOutput, error) { + req, out := c.DeleteClientVpnEndpointRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteClientVpnRoute = "DeleteClientVpnRoute" + +// DeleteClientVpnRouteRequest generates a "aws/request.Request" representing the +// client's request for the DeleteClientVpnRoute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteClientVpnRoute for more information on using the DeleteClientVpnRoute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteClientVpnRouteRequest method. +// req, resp := client.DeleteClientVpnRouteRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteClientVpnRoute +func (c *EC2) DeleteClientVpnRouteRequest(input *DeleteClientVpnRouteInput) (req *request.Request, output *DeleteClientVpnRouteOutput) { + op := &request.Operation{ + Name: opDeleteClientVpnRoute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteClientVpnRouteInput{} + } + + output = &DeleteClientVpnRouteOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteClientVpnRoute API operation for Amazon Elastic Compute Cloud. +// +// Deletes a route from a Client VPN endpoint. You can only delete routes that +// you manually added using the CreateClientVpnRoute action. You cannot delete +// routes that were automatically added when associating a subnet. To remove +// routes that have been automatically added, disassociate the target subnet +// from the Client VPN endpoint. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteClientVpnRoute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteClientVpnRoute +func (c *EC2) DeleteClientVpnRoute(input *DeleteClientVpnRouteInput) (*DeleteClientVpnRouteOutput, error) { + req, out := c.DeleteClientVpnRouteRequest(input) + return out, req.Send() +} + +// DeleteClientVpnRouteWithContext is the same as DeleteClientVpnRoute with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteClientVpnRoute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteClientVpnRouteWithContext(ctx aws.Context, input *DeleteClientVpnRouteInput, opts ...request.Option) (*DeleteClientVpnRouteOutput, error) { + req, out := c.DeleteClientVpnRouteRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteCustomerGateway = "DeleteCustomerGateway" + +// DeleteCustomerGatewayRequest generates a "aws/request.Request" representing the +// client's request for the DeleteCustomerGateway operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteCustomerGateway for more information on using the DeleteCustomerGateway +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteCustomerGatewayRequest method. +// req, resp := client.DeleteCustomerGatewayRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteCustomerGateway +func (c *EC2) DeleteCustomerGatewayRequest(input *DeleteCustomerGatewayInput) (req *request.Request, output *DeleteCustomerGatewayOutput) { + op := &request.Operation{ + Name: opDeleteCustomerGateway, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteCustomerGatewayInput{} + } + + output = &DeleteCustomerGatewayOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteCustomerGateway API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified customer gateway. You must delete the VPN connection +// before you can delete the customer gateway. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteCustomerGateway for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteCustomerGateway +func (c *EC2) DeleteCustomerGateway(input *DeleteCustomerGatewayInput) (*DeleteCustomerGatewayOutput, error) { + req, out := c.DeleteCustomerGatewayRequest(input) + return out, req.Send() +} + +// DeleteCustomerGatewayWithContext is the same as DeleteCustomerGateway with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteCustomerGateway for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteCustomerGatewayWithContext(ctx aws.Context, input *DeleteCustomerGatewayInput, opts ...request.Option) (*DeleteCustomerGatewayOutput, error) { + req, out := c.DeleteCustomerGatewayRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteDhcpOptions = "DeleteDhcpOptions" + +// DeleteDhcpOptionsRequest generates a "aws/request.Request" representing the +// client's request for the DeleteDhcpOptions operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteDhcpOptions for more information on using the DeleteDhcpOptions +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteDhcpOptionsRequest method. +// req, resp := client.DeleteDhcpOptionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteDhcpOptions +func (c *EC2) DeleteDhcpOptionsRequest(input *DeleteDhcpOptionsInput) (req *request.Request, output *DeleteDhcpOptionsOutput) { + op := &request.Operation{ + Name: opDeleteDhcpOptions, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteDhcpOptionsInput{} + } + + output = &DeleteDhcpOptionsOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteDhcpOptions API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified set of DHCP options. You must disassociate the set +// of DHCP options before you can delete it. You can disassociate the set of +// DHCP options by associating either a new set of options or the default set +// of options with the VPC. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteDhcpOptions for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteDhcpOptions +func (c *EC2) DeleteDhcpOptions(input *DeleteDhcpOptionsInput) (*DeleteDhcpOptionsOutput, error) { + req, out := c.DeleteDhcpOptionsRequest(input) + return out, req.Send() +} + +// DeleteDhcpOptionsWithContext is the same as DeleteDhcpOptions with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteDhcpOptions for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteDhcpOptionsWithContext(ctx aws.Context, input *DeleteDhcpOptionsInput, opts ...request.Option) (*DeleteDhcpOptionsOutput, error) { + req, out := c.DeleteDhcpOptionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteEgressOnlyInternetGateway = "DeleteEgressOnlyInternetGateway" + +// DeleteEgressOnlyInternetGatewayRequest generates a "aws/request.Request" representing the +// client's request for the DeleteEgressOnlyInternetGateway operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteEgressOnlyInternetGateway for more information on using the DeleteEgressOnlyInternetGateway +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteEgressOnlyInternetGatewayRequest method. +// req, resp := client.DeleteEgressOnlyInternetGatewayRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteEgressOnlyInternetGateway +func (c *EC2) DeleteEgressOnlyInternetGatewayRequest(input *DeleteEgressOnlyInternetGatewayInput) (req *request.Request, output *DeleteEgressOnlyInternetGatewayOutput) { + op := &request.Operation{ + Name: opDeleteEgressOnlyInternetGateway, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteEgressOnlyInternetGatewayInput{} + } + + output = &DeleteEgressOnlyInternetGatewayOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteEgressOnlyInternetGateway API operation for Amazon Elastic Compute Cloud. +// +// Deletes an egress-only internet gateway. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteEgressOnlyInternetGateway for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteEgressOnlyInternetGateway +func (c *EC2) DeleteEgressOnlyInternetGateway(input *DeleteEgressOnlyInternetGatewayInput) (*DeleteEgressOnlyInternetGatewayOutput, error) { + req, out := c.DeleteEgressOnlyInternetGatewayRequest(input) + return out, req.Send() +} + +// DeleteEgressOnlyInternetGatewayWithContext is the same as DeleteEgressOnlyInternetGateway with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteEgressOnlyInternetGateway for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteEgressOnlyInternetGatewayWithContext(ctx aws.Context, input *DeleteEgressOnlyInternetGatewayInput, opts ...request.Option) (*DeleteEgressOnlyInternetGatewayOutput, error) { + req, out := c.DeleteEgressOnlyInternetGatewayRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteFleets = "DeleteFleets" + +// DeleteFleetsRequest generates a "aws/request.Request" representing the +// client's request for the DeleteFleets operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteFleets for more information on using the DeleteFleets +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteFleetsRequest method. +// req, resp := client.DeleteFleetsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteFleets +func (c *EC2) DeleteFleetsRequest(input *DeleteFleetsInput) (req *request.Request, output *DeleteFleetsOutput) { + op := &request.Operation{ + Name: opDeleteFleets, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteFleetsInput{} + } + + output = &DeleteFleetsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteFleets API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified EC2 Fleet. +// +// After you delete an EC2 Fleet, it launches no new instances. You must specify +// whether an EC2 Fleet should also terminate its instances. If you terminate +// the instances, the EC2 Fleet enters the deleted_terminating state. Otherwise, +// the EC2 Fleet enters the deleted_running state, and the instances continue +// to run until they are interrupted or you terminate them manually. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteFleets for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteFleets +func (c *EC2) DeleteFleets(input *DeleteFleetsInput) (*DeleteFleetsOutput, error) { + req, out := c.DeleteFleetsRequest(input) + return out, req.Send() +} + +// DeleteFleetsWithContext is the same as DeleteFleets with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteFleets for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteFleetsWithContext(ctx aws.Context, input *DeleteFleetsInput, opts ...request.Option) (*DeleteFleetsOutput, error) { + req, out := c.DeleteFleetsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteFlowLogs = "DeleteFlowLogs" + +// DeleteFlowLogsRequest generates a "aws/request.Request" representing the +// client's request for the DeleteFlowLogs operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteFlowLogs for more information on using the DeleteFlowLogs +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteFlowLogsRequest method. +// req, resp := client.DeleteFlowLogsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteFlowLogs +func (c *EC2) DeleteFlowLogsRequest(input *DeleteFlowLogsInput) (req *request.Request, output *DeleteFlowLogsOutput) { + op := &request.Operation{ + Name: opDeleteFlowLogs, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteFlowLogsInput{} + } + + output = &DeleteFlowLogsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteFlowLogs API operation for Amazon Elastic Compute Cloud. +// +// Deletes one or more flow logs. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteFlowLogs for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteFlowLogs +func (c *EC2) DeleteFlowLogs(input *DeleteFlowLogsInput) (*DeleteFlowLogsOutput, error) { + req, out := c.DeleteFlowLogsRequest(input) + return out, req.Send() +} + +// DeleteFlowLogsWithContext is the same as DeleteFlowLogs with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteFlowLogs for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteFlowLogsWithContext(ctx aws.Context, input *DeleteFlowLogsInput, opts ...request.Option) (*DeleteFlowLogsOutput, error) { + req, out := c.DeleteFlowLogsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteFpgaImage = "DeleteFpgaImage" + +// DeleteFpgaImageRequest generates a "aws/request.Request" representing the +// client's request for the DeleteFpgaImage operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteFpgaImage for more information on using the DeleteFpgaImage +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteFpgaImageRequest method. +// req, resp := client.DeleteFpgaImageRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteFpgaImage +func (c *EC2) DeleteFpgaImageRequest(input *DeleteFpgaImageInput) (req *request.Request, output *DeleteFpgaImageOutput) { + op := &request.Operation{ + Name: opDeleteFpgaImage, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteFpgaImageInput{} + } + + output = &DeleteFpgaImageOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteFpgaImage API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified Amazon FPGA Image (AFI). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteFpgaImage for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteFpgaImage +func (c *EC2) DeleteFpgaImage(input *DeleteFpgaImageInput) (*DeleteFpgaImageOutput, error) { + req, out := c.DeleteFpgaImageRequest(input) + return out, req.Send() +} + +// DeleteFpgaImageWithContext is the same as DeleteFpgaImage with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteFpgaImage for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteFpgaImageWithContext(ctx aws.Context, input *DeleteFpgaImageInput, opts ...request.Option) (*DeleteFpgaImageOutput, error) { + req, out := c.DeleteFpgaImageRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteInternetGateway = "DeleteInternetGateway" + +// DeleteInternetGatewayRequest generates a "aws/request.Request" representing the +// client's request for the DeleteInternetGateway operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteInternetGateway for more information on using the DeleteInternetGateway +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteInternetGatewayRequest method. +// req, resp := client.DeleteInternetGatewayRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteInternetGateway +func (c *EC2) DeleteInternetGatewayRequest(input *DeleteInternetGatewayInput) (req *request.Request, output *DeleteInternetGatewayOutput) { + op := &request.Operation{ + Name: opDeleteInternetGateway, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteInternetGatewayInput{} + } + + output = &DeleteInternetGatewayOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteInternetGateway API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified internet gateway. You must detach the internet gateway +// from the VPC before you can delete it. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteInternetGateway for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteInternetGateway +func (c *EC2) DeleteInternetGateway(input *DeleteInternetGatewayInput) (*DeleteInternetGatewayOutput, error) { + req, out := c.DeleteInternetGatewayRequest(input) + return out, req.Send() +} + +// DeleteInternetGatewayWithContext is the same as DeleteInternetGateway with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteInternetGateway for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteInternetGatewayWithContext(ctx aws.Context, input *DeleteInternetGatewayInput, opts ...request.Option) (*DeleteInternetGatewayOutput, error) { + req, out := c.DeleteInternetGatewayRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteKeyPair = "DeleteKeyPair" + +// DeleteKeyPairRequest generates a "aws/request.Request" representing the +// client's request for the DeleteKeyPair operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteKeyPair for more information on using the DeleteKeyPair +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteKeyPairRequest method. +// req, resp := client.DeleteKeyPairRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteKeyPair +func (c *EC2) DeleteKeyPairRequest(input *DeleteKeyPairInput) (req *request.Request, output *DeleteKeyPairOutput) { + op := &request.Operation{ + Name: opDeleteKeyPair, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteKeyPairInput{} + } + + output = &DeleteKeyPairOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteKeyPair API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified key pair, by removing the public key from Amazon EC2. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteKeyPair for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteKeyPair +func (c *EC2) DeleteKeyPair(input *DeleteKeyPairInput) (*DeleteKeyPairOutput, error) { + req, out := c.DeleteKeyPairRequest(input) + return out, req.Send() +} + +// DeleteKeyPairWithContext is the same as DeleteKeyPair with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteKeyPair for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteKeyPairWithContext(ctx aws.Context, input *DeleteKeyPairInput, opts ...request.Option) (*DeleteKeyPairOutput, error) { + req, out := c.DeleteKeyPairRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteLaunchTemplate = "DeleteLaunchTemplate" + +// DeleteLaunchTemplateRequest generates a "aws/request.Request" representing the +// client's request for the DeleteLaunchTemplate operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteLaunchTemplate for more information on using the DeleteLaunchTemplate +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteLaunchTemplateRequest method. +// req, resp := client.DeleteLaunchTemplateRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteLaunchTemplate +func (c *EC2) DeleteLaunchTemplateRequest(input *DeleteLaunchTemplateInput) (req *request.Request, output *DeleteLaunchTemplateOutput) { + op := &request.Operation{ + Name: opDeleteLaunchTemplate, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteLaunchTemplateInput{} + } + + output = &DeleteLaunchTemplateOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteLaunchTemplate API operation for Amazon Elastic Compute Cloud. +// +// Deletes a launch template. Deleting a launch template deletes all of its +// versions. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteLaunchTemplate for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteLaunchTemplate +func (c *EC2) DeleteLaunchTemplate(input *DeleteLaunchTemplateInput) (*DeleteLaunchTemplateOutput, error) { + req, out := c.DeleteLaunchTemplateRequest(input) + return out, req.Send() +} + +// DeleteLaunchTemplateWithContext is the same as DeleteLaunchTemplate with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteLaunchTemplate for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteLaunchTemplateWithContext(ctx aws.Context, input *DeleteLaunchTemplateInput, opts ...request.Option) (*DeleteLaunchTemplateOutput, error) { + req, out := c.DeleteLaunchTemplateRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteLaunchTemplateVersions = "DeleteLaunchTemplateVersions" + +// DeleteLaunchTemplateVersionsRequest generates a "aws/request.Request" representing the +// client's request for the DeleteLaunchTemplateVersions operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteLaunchTemplateVersions for more information on using the DeleteLaunchTemplateVersions +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteLaunchTemplateVersionsRequest method. +// req, resp := client.DeleteLaunchTemplateVersionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteLaunchTemplateVersions +func (c *EC2) DeleteLaunchTemplateVersionsRequest(input *DeleteLaunchTemplateVersionsInput) (req *request.Request, output *DeleteLaunchTemplateVersionsOutput) { + op := &request.Operation{ + Name: opDeleteLaunchTemplateVersions, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteLaunchTemplateVersionsInput{} + } + + output = &DeleteLaunchTemplateVersionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteLaunchTemplateVersions API operation for Amazon Elastic Compute Cloud. +// +// Deletes one or more versions of a launch template. You cannot delete the +// default version of a launch template; you must first assign a different version +// as the default. If the default version is the only version for the launch +// template, you must delete the entire launch template using DeleteLaunchTemplate. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteLaunchTemplateVersions for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteLaunchTemplateVersions +func (c *EC2) DeleteLaunchTemplateVersions(input *DeleteLaunchTemplateVersionsInput) (*DeleteLaunchTemplateVersionsOutput, error) { + req, out := c.DeleteLaunchTemplateVersionsRequest(input) + return out, req.Send() +} + +// DeleteLaunchTemplateVersionsWithContext is the same as DeleteLaunchTemplateVersions with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteLaunchTemplateVersions for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteLaunchTemplateVersionsWithContext(ctx aws.Context, input *DeleteLaunchTemplateVersionsInput, opts ...request.Option) (*DeleteLaunchTemplateVersionsOutput, error) { + req, out := c.DeleteLaunchTemplateVersionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteNatGateway = "DeleteNatGateway" + +// DeleteNatGatewayRequest generates a "aws/request.Request" representing the +// client's request for the DeleteNatGateway operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteNatGateway for more information on using the DeleteNatGateway +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteNatGatewayRequest method. +// req, resp := client.DeleteNatGatewayRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNatGateway +func (c *EC2) DeleteNatGatewayRequest(input *DeleteNatGatewayInput) (req *request.Request, output *DeleteNatGatewayOutput) { + op := &request.Operation{ + Name: opDeleteNatGateway, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteNatGatewayInput{} + } + + output = &DeleteNatGatewayOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteNatGateway API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified NAT gateway. Deleting a NAT gateway disassociates its +// Elastic IP address, but does not release the address from your account. Deleting +// a NAT gateway does not delete any NAT gateway routes in your route tables. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteNatGateway for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNatGateway +func (c *EC2) DeleteNatGateway(input *DeleteNatGatewayInput) (*DeleteNatGatewayOutput, error) { + req, out := c.DeleteNatGatewayRequest(input) + return out, req.Send() +} + +// DeleteNatGatewayWithContext is the same as DeleteNatGateway with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteNatGateway for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteNatGatewayWithContext(ctx aws.Context, input *DeleteNatGatewayInput, opts ...request.Option) (*DeleteNatGatewayOutput, error) { + req, out := c.DeleteNatGatewayRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteNetworkAcl = "DeleteNetworkAcl" + +// DeleteNetworkAclRequest generates a "aws/request.Request" representing the +// client's request for the DeleteNetworkAcl operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteNetworkAcl for more information on using the DeleteNetworkAcl +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteNetworkAclRequest method. +// req, resp := client.DeleteNetworkAclRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkAcl +func (c *EC2) DeleteNetworkAclRequest(input *DeleteNetworkAclInput) (req *request.Request, output *DeleteNetworkAclOutput) { + op := &request.Operation{ + Name: opDeleteNetworkAcl, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteNetworkAclInput{} + } + + output = &DeleteNetworkAclOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteNetworkAcl API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified network ACL. You can't delete the ACL if it's associated +// with any subnets. You can't delete the default network ACL. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteNetworkAcl for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkAcl +func (c *EC2) DeleteNetworkAcl(input *DeleteNetworkAclInput) (*DeleteNetworkAclOutput, error) { + req, out := c.DeleteNetworkAclRequest(input) + return out, req.Send() +} + +// DeleteNetworkAclWithContext is the same as DeleteNetworkAcl with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteNetworkAcl for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteNetworkAclWithContext(ctx aws.Context, input *DeleteNetworkAclInput, opts ...request.Option) (*DeleteNetworkAclOutput, error) { + req, out := c.DeleteNetworkAclRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteNetworkAclEntry = "DeleteNetworkAclEntry" + +// DeleteNetworkAclEntryRequest generates a "aws/request.Request" representing the +// client's request for the DeleteNetworkAclEntry operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteNetworkAclEntry for more information on using the DeleteNetworkAclEntry +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteNetworkAclEntryRequest method. +// req, resp := client.DeleteNetworkAclEntryRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkAclEntry +func (c *EC2) DeleteNetworkAclEntryRequest(input *DeleteNetworkAclEntryInput) (req *request.Request, output *DeleteNetworkAclEntryOutput) { + op := &request.Operation{ + Name: opDeleteNetworkAclEntry, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteNetworkAclEntryInput{} + } + + output = &DeleteNetworkAclEntryOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteNetworkAclEntry API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified ingress or egress entry (rule) from the specified network +// ACL. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteNetworkAclEntry for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkAclEntry +func (c *EC2) DeleteNetworkAclEntry(input *DeleteNetworkAclEntryInput) (*DeleteNetworkAclEntryOutput, error) { + req, out := c.DeleteNetworkAclEntryRequest(input) + return out, req.Send() +} + +// DeleteNetworkAclEntryWithContext is the same as DeleteNetworkAclEntry with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteNetworkAclEntry for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteNetworkAclEntryWithContext(ctx aws.Context, input *DeleteNetworkAclEntryInput, opts ...request.Option) (*DeleteNetworkAclEntryOutput, error) { + req, out := c.DeleteNetworkAclEntryRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteNetworkInterface = "DeleteNetworkInterface" + +// DeleteNetworkInterfaceRequest generates a "aws/request.Request" representing the +// client's request for the DeleteNetworkInterface operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteNetworkInterface for more information on using the DeleteNetworkInterface +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteNetworkInterfaceRequest method. +// req, resp := client.DeleteNetworkInterfaceRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkInterface +func (c *EC2) DeleteNetworkInterfaceRequest(input *DeleteNetworkInterfaceInput) (req *request.Request, output *DeleteNetworkInterfaceOutput) { + op := &request.Operation{ + Name: opDeleteNetworkInterface, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteNetworkInterfaceInput{} + } + + output = &DeleteNetworkInterfaceOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteNetworkInterface API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified network interface. You must detach the network interface +// before you can delete it. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteNetworkInterface for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkInterface +func (c *EC2) DeleteNetworkInterface(input *DeleteNetworkInterfaceInput) (*DeleteNetworkInterfaceOutput, error) { + req, out := c.DeleteNetworkInterfaceRequest(input) + return out, req.Send() +} + +// DeleteNetworkInterfaceWithContext is the same as DeleteNetworkInterface with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteNetworkInterface for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteNetworkInterfaceWithContext(ctx aws.Context, input *DeleteNetworkInterfaceInput, opts ...request.Option) (*DeleteNetworkInterfaceOutput, error) { + req, out := c.DeleteNetworkInterfaceRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteNetworkInterfacePermission = "DeleteNetworkInterfacePermission" + +// DeleteNetworkInterfacePermissionRequest generates a "aws/request.Request" representing the +// client's request for the DeleteNetworkInterfacePermission operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteNetworkInterfacePermission for more information on using the DeleteNetworkInterfacePermission +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteNetworkInterfacePermissionRequest method. +// req, resp := client.DeleteNetworkInterfacePermissionRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkInterfacePermission +func (c *EC2) DeleteNetworkInterfacePermissionRequest(input *DeleteNetworkInterfacePermissionInput) (req *request.Request, output *DeleteNetworkInterfacePermissionOutput) { + op := &request.Operation{ + Name: opDeleteNetworkInterfacePermission, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteNetworkInterfacePermissionInput{} + } + + output = &DeleteNetworkInterfacePermissionOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteNetworkInterfacePermission API operation for Amazon Elastic Compute Cloud. +// +// Deletes a permission for a network interface. By default, you cannot delete +// the permission if the account for which you're removing the permission has +// attached the network interface to an instance. However, you can force delete +// the permission, regardless of any attachment. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteNetworkInterfacePermission for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkInterfacePermission +func (c *EC2) DeleteNetworkInterfacePermission(input *DeleteNetworkInterfacePermissionInput) (*DeleteNetworkInterfacePermissionOutput, error) { + req, out := c.DeleteNetworkInterfacePermissionRequest(input) + return out, req.Send() +} + +// DeleteNetworkInterfacePermissionWithContext is the same as DeleteNetworkInterfacePermission with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteNetworkInterfacePermission for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteNetworkInterfacePermissionWithContext(ctx aws.Context, input *DeleteNetworkInterfacePermissionInput, opts ...request.Option) (*DeleteNetworkInterfacePermissionOutput, error) { + req, out := c.DeleteNetworkInterfacePermissionRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeletePlacementGroup = "DeletePlacementGroup" + +// DeletePlacementGroupRequest generates a "aws/request.Request" representing the +// client's request for the DeletePlacementGroup operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeletePlacementGroup for more information on using the DeletePlacementGroup +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeletePlacementGroupRequest method. +// req, resp := client.DeletePlacementGroupRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeletePlacementGroup +func (c *EC2) DeletePlacementGroupRequest(input *DeletePlacementGroupInput) (req *request.Request, output *DeletePlacementGroupOutput) { + op := &request.Operation{ + Name: opDeletePlacementGroup, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeletePlacementGroupInput{} + } + + output = &DeletePlacementGroupOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeletePlacementGroup API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified placement group. You must terminate all instances in +// the placement group before you can delete the placement group. For more information, +// see Placement Groups (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeletePlacementGroup for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeletePlacementGroup +func (c *EC2) DeletePlacementGroup(input *DeletePlacementGroupInput) (*DeletePlacementGroupOutput, error) { + req, out := c.DeletePlacementGroupRequest(input) + return out, req.Send() +} + +// DeletePlacementGroupWithContext is the same as DeletePlacementGroup with the addition of +// the ability to pass a context and additional request options. +// +// See DeletePlacementGroup for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeletePlacementGroupWithContext(ctx aws.Context, input *DeletePlacementGroupInput, opts ...request.Option) (*DeletePlacementGroupOutput, error) { + req, out := c.DeletePlacementGroupRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteQueuedReservedInstances = "DeleteQueuedReservedInstances" + +// DeleteQueuedReservedInstancesRequest generates a "aws/request.Request" representing the +// client's request for the DeleteQueuedReservedInstances operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteQueuedReservedInstances for more information on using the DeleteQueuedReservedInstances +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteQueuedReservedInstancesRequest method. +// req, resp := client.DeleteQueuedReservedInstancesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteQueuedReservedInstances +func (c *EC2) DeleteQueuedReservedInstancesRequest(input *DeleteQueuedReservedInstancesInput) (req *request.Request, output *DeleteQueuedReservedInstancesOutput) { + op := &request.Operation{ + Name: opDeleteQueuedReservedInstances, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteQueuedReservedInstancesInput{} + } + + output = &DeleteQueuedReservedInstancesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteQueuedReservedInstances API operation for Amazon Elastic Compute Cloud. +// +// Deletes the queued purchases for the specified Reserved Instances. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteQueuedReservedInstances for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteQueuedReservedInstances +func (c *EC2) DeleteQueuedReservedInstances(input *DeleteQueuedReservedInstancesInput) (*DeleteQueuedReservedInstancesOutput, error) { + req, out := c.DeleteQueuedReservedInstancesRequest(input) + return out, req.Send() +} + +// DeleteQueuedReservedInstancesWithContext is the same as DeleteQueuedReservedInstances with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteQueuedReservedInstances for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteQueuedReservedInstancesWithContext(ctx aws.Context, input *DeleteQueuedReservedInstancesInput, opts ...request.Option) (*DeleteQueuedReservedInstancesOutput, error) { + req, out := c.DeleteQueuedReservedInstancesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteRoute = "DeleteRoute" + +// DeleteRouteRequest generates a "aws/request.Request" representing the +// client's request for the DeleteRoute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteRoute for more information on using the DeleteRoute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteRouteRequest method. +// req, resp := client.DeleteRouteRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteRoute +func (c *EC2) DeleteRouteRequest(input *DeleteRouteInput) (req *request.Request, output *DeleteRouteOutput) { + op := &request.Operation{ + Name: opDeleteRoute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteRouteInput{} + } + + output = &DeleteRouteOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteRoute API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified route from the specified route table. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteRoute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteRoute +func (c *EC2) DeleteRoute(input *DeleteRouteInput) (*DeleteRouteOutput, error) { + req, out := c.DeleteRouteRequest(input) + return out, req.Send() +} + +// DeleteRouteWithContext is the same as DeleteRoute with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteRoute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteRouteWithContext(ctx aws.Context, input *DeleteRouteInput, opts ...request.Option) (*DeleteRouteOutput, error) { + req, out := c.DeleteRouteRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteRouteTable = "DeleteRouteTable" + +// DeleteRouteTableRequest generates a "aws/request.Request" representing the +// client's request for the DeleteRouteTable operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteRouteTable for more information on using the DeleteRouteTable +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteRouteTableRequest method. +// req, resp := client.DeleteRouteTableRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteRouteTable +func (c *EC2) DeleteRouteTableRequest(input *DeleteRouteTableInput) (req *request.Request, output *DeleteRouteTableOutput) { + op := &request.Operation{ + Name: opDeleteRouteTable, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteRouteTableInput{} + } + + output = &DeleteRouteTableOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteRouteTable API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified route table. You must disassociate the route table +// from any subnets before you can delete it. You can't delete the main route +// table. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteRouteTable for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteRouteTable +func (c *EC2) DeleteRouteTable(input *DeleteRouteTableInput) (*DeleteRouteTableOutput, error) { + req, out := c.DeleteRouteTableRequest(input) + return out, req.Send() +} + +// DeleteRouteTableWithContext is the same as DeleteRouteTable with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteRouteTable for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteRouteTableWithContext(ctx aws.Context, input *DeleteRouteTableInput, opts ...request.Option) (*DeleteRouteTableOutput, error) { + req, out := c.DeleteRouteTableRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteSecurityGroup = "DeleteSecurityGroup" + +// DeleteSecurityGroupRequest generates a "aws/request.Request" representing the +// client's request for the DeleteSecurityGroup operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteSecurityGroup for more information on using the DeleteSecurityGroup +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteSecurityGroupRequest method. +// req, resp := client.DeleteSecurityGroupRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSecurityGroup +func (c *EC2) DeleteSecurityGroupRequest(input *DeleteSecurityGroupInput) (req *request.Request, output *DeleteSecurityGroupOutput) { + op := &request.Operation{ + Name: opDeleteSecurityGroup, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteSecurityGroupInput{} + } + + output = &DeleteSecurityGroupOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteSecurityGroup API operation for Amazon Elastic Compute Cloud. +// +// Deletes a security group. +// +// If you attempt to delete a security group that is associated with an instance, +// or is referenced by another security group, the operation fails with InvalidGroup.InUse +// in EC2-Classic or DependencyViolation in EC2-VPC. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteSecurityGroup for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSecurityGroup +func (c *EC2) DeleteSecurityGroup(input *DeleteSecurityGroupInput) (*DeleteSecurityGroupOutput, error) { + req, out := c.DeleteSecurityGroupRequest(input) + return out, req.Send() +} + +// DeleteSecurityGroupWithContext is the same as DeleteSecurityGroup with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteSecurityGroup for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteSecurityGroupWithContext(ctx aws.Context, input *DeleteSecurityGroupInput, opts ...request.Option) (*DeleteSecurityGroupOutput, error) { + req, out := c.DeleteSecurityGroupRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteSnapshot = "DeleteSnapshot" + +// DeleteSnapshotRequest generates a "aws/request.Request" representing the +// client's request for the DeleteSnapshot operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteSnapshot for more information on using the DeleteSnapshot +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteSnapshotRequest method. +// req, resp := client.DeleteSnapshotRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSnapshot +func (c *EC2) DeleteSnapshotRequest(input *DeleteSnapshotInput) (req *request.Request, output *DeleteSnapshotOutput) { + op := &request.Operation{ + Name: opDeleteSnapshot, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteSnapshotInput{} + } + + output = &DeleteSnapshotOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteSnapshot API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified snapshot. +// +// When you make periodic snapshots of a volume, the snapshots are incremental, +// and only the blocks on the device that have changed since your last snapshot +// are saved in the new snapshot. When you delete a snapshot, only the data +// not needed for any other snapshot is removed. So regardless of which prior +// snapshots have been deleted, all active snapshots will have access to all +// the information needed to restore the volume. +// +// You cannot delete a snapshot of the root device of an EBS volume used by +// a registered AMI. You must first de-register the AMI before you can delete +// the snapshot. +// +// For more information, see Deleting an Amazon EBS Snapshot (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-deleting-snapshot.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteSnapshot for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSnapshot +func (c *EC2) DeleteSnapshot(input *DeleteSnapshotInput) (*DeleteSnapshotOutput, error) { + req, out := c.DeleteSnapshotRequest(input) + return out, req.Send() +} + +// DeleteSnapshotWithContext is the same as DeleteSnapshot with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteSnapshot for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteSnapshotWithContext(ctx aws.Context, input *DeleteSnapshotInput, opts ...request.Option) (*DeleteSnapshotOutput, error) { + req, out := c.DeleteSnapshotRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteSpotDatafeedSubscription = "DeleteSpotDatafeedSubscription" + +// DeleteSpotDatafeedSubscriptionRequest generates a "aws/request.Request" representing the +// client's request for the DeleteSpotDatafeedSubscription operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteSpotDatafeedSubscription for more information on using the DeleteSpotDatafeedSubscription +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteSpotDatafeedSubscriptionRequest method. +// req, resp := client.DeleteSpotDatafeedSubscriptionRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSpotDatafeedSubscription +func (c *EC2) DeleteSpotDatafeedSubscriptionRequest(input *DeleteSpotDatafeedSubscriptionInput) (req *request.Request, output *DeleteSpotDatafeedSubscriptionOutput) { + op := &request.Operation{ + Name: opDeleteSpotDatafeedSubscription, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteSpotDatafeedSubscriptionInput{} + } + + output = &DeleteSpotDatafeedSubscriptionOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteSpotDatafeedSubscription API operation for Amazon Elastic Compute Cloud. +// +// Deletes the data feed for Spot Instances. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteSpotDatafeedSubscription for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSpotDatafeedSubscription +func (c *EC2) DeleteSpotDatafeedSubscription(input *DeleteSpotDatafeedSubscriptionInput) (*DeleteSpotDatafeedSubscriptionOutput, error) { + req, out := c.DeleteSpotDatafeedSubscriptionRequest(input) + return out, req.Send() +} + +// DeleteSpotDatafeedSubscriptionWithContext is the same as DeleteSpotDatafeedSubscription with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteSpotDatafeedSubscription for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteSpotDatafeedSubscriptionWithContext(ctx aws.Context, input *DeleteSpotDatafeedSubscriptionInput, opts ...request.Option) (*DeleteSpotDatafeedSubscriptionOutput, error) { + req, out := c.DeleteSpotDatafeedSubscriptionRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteSubnet = "DeleteSubnet" + +// DeleteSubnetRequest generates a "aws/request.Request" representing the +// client's request for the DeleteSubnet operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteSubnet for more information on using the DeleteSubnet +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteSubnetRequest method. +// req, resp := client.DeleteSubnetRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSubnet +func (c *EC2) DeleteSubnetRequest(input *DeleteSubnetInput) (req *request.Request, output *DeleteSubnetOutput) { + op := &request.Operation{ + Name: opDeleteSubnet, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteSubnetInput{} + } + + output = &DeleteSubnetOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteSubnet API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified subnet. You must terminate all running instances in +// the subnet before you can delete the subnet. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteSubnet for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteSubnet +func (c *EC2) DeleteSubnet(input *DeleteSubnetInput) (*DeleteSubnetOutput, error) { + req, out := c.DeleteSubnetRequest(input) + return out, req.Send() +} + +// DeleteSubnetWithContext is the same as DeleteSubnet with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteSubnet for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteSubnetWithContext(ctx aws.Context, input *DeleteSubnetInput, opts ...request.Option) (*DeleteSubnetOutput, error) { + req, out := c.DeleteSubnetRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteTags = "DeleteTags" + +// DeleteTagsRequest generates a "aws/request.Request" representing the +// client's request for the DeleteTags operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteTags for more information on using the DeleteTags +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteTagsRequest method. +// req, resp := client.DeleteTagsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTags +func (c *EC2) DeleteTagsRequest(input *DeleteTagsInput) (req *request.Request, output *DeleteTagsOutput) { + op := &request.Operation{ + Name: opDeleteTags, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteTagsInput{} + } + + output = &DeleteTagsOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteTags API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified set of tags from the specified set of resources. +// +// To list the current tags, use DescribeTags. For more information about tags, +// see Tagging Your Resources (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteTags for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTags +func (c *EC2) DeleteTags(input *DeleteTagsInput) (*DeleteTagsOutput, error) { + req, out := c.DeleteTagsRequest(input) + return out, req.Send() +} + +// DeleteTagsWithContext is the same as DeleteTags with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteTags for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteTagsWithContext(ctx aws.Context, input *DeleteTagsInput, opts ...request.Option) (*DeleteTagsOutput, error) { + req, out := c.DeleteTagsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteTrafficMirrorFilter = "DeleteTrafficMirrorFilter" + +// DeleteTrafficMirrorFilterRequest generates a "aws/request.Request" representing the +// client's request for the DeleteTrafficMirrorFilter operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteTrafficMirrorFilter for more information on using the DeleteTrafficMirrorFilter +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteTrafficMirrorFilterRequest method. +// req, resp := client.DeleteTrafficMirrorFilterRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTrafficMirrorFilter +func (c *EC2) DeleteTrafficMirrorFilterRequest(input *DeleteTrafficMirrorFilterInput) (req *request.Request, output *DeleteTrafficMirrorFilterOutput) { + op := &request.Operation{ + Name: opDeleteTrafficMirrorFilter, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteTrafficMirrorFilterInput{} + } + + output = &DeleteTrafficMirrorFilterOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteTrafficMirrorFilter API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified Traffic Mirror filter. +// +// You cannot delete a Traffic Mirror filter that is in use by a Traffic Mirror +// session. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteTrafficMirrorFilter for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTrafficMirrorFilter +func (c *EC2) DeleteTrafficMirrorFilter(input *DeleteTrafficMirrorFilterInput) (*DeleteTrafficMirrorFilterOutput, error) { + req, out := c.DeleteTrafficMirrorFilterRequest(input) + return out, req.Send() +} + +// DeleteTrafficMirrorFilterWithContext is the same as DeleteTrafficMirrorFilter with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteTrafficMirrorFilter for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteTrafficMirrorFilterWithContext(ctx aws.Context, input *DeleteTrafficMirrorFilterInput, opts ...request.Option) (*DeleteTrafficMirrorFilterOutput, error) { + req, out := c.DeleteTrafficMirrorFilterRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteTrafficMirrorFilterRule = "DeleteTrafficMirrorFilterRule" + +// DeleteTrafficMirrorFilterRuleRequest generates a "aws/request.Request" representing the +// client's request for the DeleteTrafficMirrorFilterRule operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteTrafficMirrorFilterRule for more information on using the DeleteTrafficMirrorFilterRule +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteTrafficMirrorFilterRuleRequest method. +// req, resp := client.DeleteTrafficMirrorFilterRuleRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTrafficMirrorFilterRule +func (c *EC2) DeleteTrafficMirrorFilterRuleRequest(input *DeleteTrafficMirrorFilterRuleInput) (req *request.Request, output *DeleteTrafficMirrorFilterRuleOutput) { + op := &request.Operation{ + Name: opDeleteTrafficMirrorFilterRule, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteTrafficMirrorFilterRuleInput{} + } + + output = &DeleteTrafficMirrorFilterRuleOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteTrafficMirrorFilterRule API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified Traffic Mirror rule. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteTrafficMirrorFilterRule for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTrafficMirrorFilterRule +func (c *EC2) DeleteTrafficMirrorFilterRule(input *DeleteTrafficMirrorFilterRuleInput) (*DeleteTrafficMirrorFilterRuleOutput, error) { + req, out := c.DeleteTrafficMirrorFilterRuleRequest(input) + return out, req.Send() +} + +// DeleteTrafficMirrorFilterRuleWithContext is the same as DeleteTrafficMirrorFilterRule with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteTrafficMirrorFilterRule for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteTrafficMirrorFilterRuleWithContext(ctx aws.Context, input *DeleteTrafficMirrorFilterRuleInput, opts ...request.Option) (*DeleteTrafficMirrorFilterRuleOutput, error) { + req, out := c.DeleteTrafficMirrorFilterRuleRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteTrafficMirrorSession = "DeleteTrafficMirrorSession" + +// DeleteTrafficMirrorSessionRequest generates a "aws/request.Request" representing the +// client's request for the DeleteTrafficMirrorSession operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteTrafficMirrorSession for more information on using the DeleteTrafficMirrorSession +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteTrafficMirrorSessionRequest method. +// req, resp := client.DeleteTrafficMirrorSessionRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTrafficMirrorSession +func (c *EC2) DeleteTrafficMirrorSessionRequest(input *DeleteTrafficMirrorSessionInput) (req *request.Request, output *DeleteTrafficMirrorSessionOutput) { + op := &request.Operation{ + Name: opDeleteTrafficMirrorSession, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteTrafficMirrorSessionInput{} + } + + output = &DeleteTrafficMirrorSessionOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteTrafficMirrorSession API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified Traffic Mirror session. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteTrafficMirrorSession for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTrafficMirrorSession +func (c *EC2) DeleteTrafficMirrorSession(input *DeleteTrafficMirrorSessionInput) (*DeleteTrafficMirrorSessionOutput, error) { + req, out := c.DeleteTrafficMirrorSessionRequest(input) + return out, req.Send() +} + +// DeleteTrafficMirrorSessionWithContext is the same as DeleteTrafficMirrorSession with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteTrafficMirrorSession for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteTrafficMirrorSessionWithContext(ctx aws.Context, input *DeleteTrafficMirrorSessionInput, opts ...request.Option) (*DeleteTrafficMirrorSessionOutput, error) { + req, out := c.DeleteTrafficMirrorSessionRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteTrafficMirrorTarget = "DeleteTrafficMirrorTarget" + +// DeleteTrafficMirrorTargetRequest generates a "aws/request.Request" representing the +// client's request for the DeleteTrafficMirrorTarget operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteTrafficMirrorTarget for more information on using the DeleteTrafficMirrorTarget +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteTrafficMirrorTargetRequest method. +// req, resp := client.DeleteTrafficMirrorTargetRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTrafficMirrorTarget +func (c *EC2) DeleteTrafficMirrorTargetRequest(input *DeleteTrafficMirrorTargetInput) (req *request.Request, output *DeleteTrafficMirrorTargetOutput) { + op := &request.Operation{ + Name: opDeleteTrafficMirrorTarget, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteTrafficMirrorTargetInput{} + } + + output = &DeleteTrafficMirrorTargetOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteTrafficMirrorTarget API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified Traffic Mirror target. +// +// You cannot delete a Traffic Mirror target that is in use by a Traffic Mirror +// session. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteTrafficMirrorTarget for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTrafficMirrorTarget +func (c *EC2) DeleteTrafficMirrorTarget(input *DeleteTrafficMirrorTargetInput) (*DeleteTrafficMirrorTargetOutput, error) { + req, out := c.DeleteTrafficMirrorTargetRequest(input) + return out, req.Send() +} + +// DeleteTrafficMirrorTargetWithContext is the same as DeleteTrafficMirrorTarget with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteTrafficMirrorTarget for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteTrafficMirrorTargetWithContext(ctx aws.Context, input *DeleteTrafficMirrorTargetInput, opts ...request.Option) (*DeleteTrafficMirrorTargetOutput, error) { + req, out := c.DeleteTrafficMirrorTargetRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteTransitGateway = "DeleteTransitGateway" + +// DeleteTransitGatewayRequest generates a "aws/request.Request" representing the +// client's request for the DeleteTransitGateway operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteTransitGateway for more information on using the DeleteTransitGateway +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteTransitGatewayRequest method. +// req, resp := client.DeleteTransitGatewayRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTransitGateway +func (c *EC2) DeleteTransitGatewayRequest(input *DeleteTransitGatewayInput) (req *request.Request, output *DeleteTransitGatewayOutput) { + op := &request.Operation{ + Name: opDeleteTransitGateway, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteTransitGatewayInput{} + } + + output = &DeleteTransitGatewayOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteTransitGateway API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified transit gateway. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteTransitGateway for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTransitGateway +func (c *EC2) DeleteTransitGateway(input *DeleteTransitGatewayInput) (*DeleteTransitGatewayOutput, error) { + req, out := c.DeleteTransitGatewayRequest(input) + return out, req.Send() +} + +// DeleteTransitGatewayWithContext is the same as DeleteTransitGateway with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteTransitGateway for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteTransitGatewayWithContext(ctx aws.Context, input *DeleteTransitGatewayInput, opts ...request.Option) (*DeleteTransitGatewayOutput, error) { + req, out := c.DeleteTransitGatewayRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteTransitGatewayRoute = "DeleteTransitGatewayRoute" + +// DeleteTransitGatewayRouteRequest generates a "aws/request.Request" representing the +// client's request for the DeleteTransitGatewayRoute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteTransitGatewayRoute for more information on using the DeleteTransitGatewayRoute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteTransitGatewayRouteRequest method. +// req, resp := client.DeleteTransitGatewayRouteRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTransitGatewayRoute +func (c *EC2) DeleteTransitGatewayRouteRequest(input *DeleteTransitGatewayRouteInput) (req *request.Request, output *DeleteTransitGatewayRouteOutput) { + op := &request.Operation{ + Name: opDeleteTransitGatewayRoute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteTransitGatewayRouteInput{} + } + + output = &DeleteTransitGatewayRouteOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteTransitGatewayRoute API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified route from the specified transit gateway route table. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteTransitGatewayRoute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTransitGatewayRoute +func (c *EC2) DeleteTransitGatewayRoute(input *DeleteTransitGatewayRouteInput) (*DeleteTransitGatewayRouteOutput, error) { + req, out := c.DeleteTransitGatewayRouteRequest(input) + return out, req.Send() +} + +// DeleteTransitGatewayRouteWithContext is the same as DeleteTransitGatewayRoute with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteTransitGatewayRoute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteTransitGatewayRouteWithContext(ctx aws.Context, input *DeleteTransitGatewayRouteInput, opts ...request.Option) (*DeleteTransitGatewayRouteOutput, error) { + req, out := c.DeleteTransitGatewayRouteRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteTransitGatewayRouteTable = "DeleteTransitGatewayRouteTable" + +// DeleteTransitGatewayRouteTableRequest generates a "aws/request.Request" representing the +// client's request for the DeleteTransitGatewayRouteTable operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteTransitGatewayRouteTable for more information on using the DeleteTransitGatewayRouteTable +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteTransitGatewayRouteTableRequest method. +// req, resp := client.DeleteTransitGatewayRouteTableRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTransitGatewayRouteTable +func (c *EC2) DeleteTransitGatewayRouteTableRequest(input *DeleteTransitGatewayRouteTableInput) (req *request.Request, output *DeleteTransitGatewayRouteTableOutput) { + op := &request.Operation{ + Name: opDeleteTransitGatewayRouteTable, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteTransitGatewayRouteTableInput{} + } + + output = &DeleteTransitGatewayRouteTableOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteTransitGatewayRouteTable API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified transit gateway route table. You must disassociate +// the route table from any transit gateway route tables before you can delete +// it. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteTransitGatewayRouteTable for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTransitGatewayRouteTable +func (c *EC2) DeleteTransitGatewayRouteTable(input *DeleteTransitGatewayRouteTableInput) (*DeleteTransitGatewayRouteTableOutput, error) { + req, out := c.DeleteTransitGatewayRouteTableRequest(input) + return out, req.Send() +} + +// DeleteTransitGatewayRouteTableWithContext is the same as DeleteTransitGatewayRouteTable with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteTransitGatewayRouteTable for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteTransitGatewayRouteTableWithContext(ctx aws.Context, input *DeleteTransitGatewayRouteTableInput, opts ...request.Option) (*DeleteTransitGatewayRouteTableOutput, error) { + req, out := c.DeleteTransitGatewayRouteTableRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteTransitGatewayVpcAttachment = "DeleteTransitGatewayVpcAttachment" + +// DeleteTransitGatewayVpcAttachmentRequest generates a "aws/request.Request" representing the +// client's request for the DeleteTransitGatewayVpcAttachment operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteTransitGatewayVpcAttachment for more information on using the DeleteTransitGatewayVpcAttachment +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteTransitGatewayVpcAttachmentRequest method. +// req, resp := client.DeleteTransitGatewayVpcAttachmentRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTransitGatewayVpcAttachment +func (c *EC2) DeleteTransitGatewayVpcAttachmentRequest(input *DeleteTransitGatewayVpcAttachmentInput) (req *request.Request, output *DeleteTransitGatewayVpcAttachmentOutput) { + op := &request.Operation{ + Name: opDeleteTransitGatewayVpcAttachment, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteTransitGatewayVpcAttachmentInput{} + } + + output = &DeleteTransitGatewayVpcAttachmentOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteTransitGatewayVpcAttachment API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified VPC attachment. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteTransitGatewayVpcAttachment for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTransitGatewayVpcAttachment +func (c *EC2) DeleteTransitGatewayVpcAttachment(input *DeleteTransitGatewayVpcAttachmentInput) (*DeleteTransitGatewayVpcAttachmentOutput, error) { + req, out := c.DeleteTransitGatewayVpcAttachmentRequest(input) + return out, req.Send() +} + +// DeleteTransitGatewayVpcAttachmentWithContext is the same as DeleteTransitGatewayVpcAttachment with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteTransitGatewayVpcAttachment for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteTransitGatewayVpcAttachmentWithContext(ctx aws.Context, input *DeleteTransitGatewayVpcAttachmentInput, opts ...request.Option) (*DeleteTransitGatewayVpcAttachmentOutput, error) { + req, out := c.DeleteTransitGatewayVpcAttachmentRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteVolume = "DeleteVolume" + +// DeleteVolumeRequest generates a "aws/request.Request" representing the +// client's request for the DeleteVolume operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteVolume for more information on using the DeleteVolume +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteVolumeRequest method. +// req, resp := client.DeleteVolumeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVolume +func (c *EC2) DeleteVolumeRequest(input *DeleteVolumeInput) (req *request.Request, output *DeleteVolumeOutput) { + op := &request.Operation{ + Name: opDeleteVolume, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteVolumeInput{} + } + + output = &DeleteVolumeOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteVolume API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified EBS volume. The volume must be in the available state +// (not attached to an instance). +// +// The volume can remain in the deleting state for several minutes. +// +// For more information, see Deleting an Amazon EBS Volume (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-deleting-volume.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteVolume for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVolume +func (c *EC2) DeleteVolume(input *DeleteVolumeInput) (*DeleteVolumeOutput, error) { + req, out := c.DeleteVolumeRequest(input) + return out, req.Send() +} + +// DeleteVolumeWithContext is the same as DeleteVolume with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteVolume for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteVolumeWithContext(ctx aws.Context, input *DeleteVolumeInput, opts ...request.Option) (*DeleteVolumeOutput, error) { + req, out := c.DeleteVolumeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteVpc = "DeleteVpc" + +// DeleteVpcRequest generates a "aws/request.Request" representing the +// client's request for the DeleteVpc operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteVpc for more information on using the DeleteVpc +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteVpcRequest method. +// req, resp := client.DeleteVpcRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpc +func (c *EC2) DeleteVpcRequest(input *DeleteVpcInput) (req *request.Request, output *DeleteVpcOutput) { + op := &request.Operation{ + Name: opDeleteVpc, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteVpcInput{} + } + + output = &DeleteVpcOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteVpc API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified VPC. You must detach or delete all gateways and resources +// that are associated with the VPC before you can delete it. For example, you +// must terminate all instances running in the VPC, delete all security groups +// associated with the VPC (except the default one), delete all route tables +// associated with the VPC (except the default one), and so on. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteVpc for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpc +func (c *EC2) DeleteVpc(input *DeleteVpcInput) (*DeleteVpcOutput, error) { + req, out := c.DeleteVpcRequest(input) + return out, req.Send() +} + +// DeleteVpcWithContext is the same as DeleteVpc with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteVpc for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteVpcWithContext(ctx aws.Context, input *DeleteVpcInput, opts ...request.Option) (*DeleteVpcOutput, error) { + req, out := c.DeleteVpcRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteVpcEndpointConnectionNotifications = "DeleteVpcEndpointConnectionNotifications" + +// DeleteVpcEndpointConnectionNotificationsRequest generates a "aws/request.Request" representing the +// client's request for the DeleteVpcEndpointConnectionNotifications operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteVpcEndpointConnectionNotifications for more information on using the DeleteVpcEndpointConnectionNotifications +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteVpcEndpointConnectionNotificationsRequest method. +// req, resp := client.DeleteVpcEndpointConnectionNotificationsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcEndpointConnectionNotifications +func (c *EC2) DeleteVpcEndpointConnectionNotificationsRequest(input *DeleteVpcEndpointConnectionNotificationsInput) (req *request.Request, output *DeleteVpcEndpointConnectionNotificationsOutput) { + op := &request.Operation{ + Name: opDeleteVpcEndpointConnectionNotifications, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteVpcEndpointConnectionNotificationsInput{} + } + + output = &DeleteVpcEndpointConnectionNotificationsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteVpcEndpointConnectionNotifications API operation for Amazon Elastic Compute Cloud. +// +// Deletes one or more VPC endpoint connection notifications. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteVpcEndpointConnectionNotifications for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcEndpointConnectionNotifications +func (c *EC2) DeleteVpcEndpointConnectionNotifications(input *DeleteVpcEndpointConnectionNotificationsInput) (*DeleteVpcEndpointConnectionNotificationsOutput, error) { + req, out := c.DeleteVpcEndpointConnectionNotificationsRequest(input) + return out, req.Send() +} + +// DeleteVpcEndpointConnectionNotificationsWithContext is the same as DeleteVpcEndpointConnectionNotifications with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteVpcEndpointConnectionNotifications for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteVpcEndpointConnectionNotificationsWithContext(ctx aws.Context, input *DeleteVpcEndpointConnectionNotificationsInput, opts ...request.Option) (*DeleteVpcEndpointConnectionNotificationsOutput, error) { + req, out := c.DeleteVpcEndpointConnectionNotificationsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteVpcEndpointServiceConfigurations = "DeleteVpcEndpointServiceConfigurations" + +// DeleteVpcEndpointServiceConfigurationsRequest generates a "aws/request.Request" representing the +// client's request for the DeleteVpcEndpointServiceConfigurations operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteVpcEndpointServiceConfigurations for more information on using the DeleteVpcEndpointServiceConfigurations +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteVpcEndpointServiceConfigurationsRequest method. +// req, resp := client.DeleteVpcEndpointServiceConfigurationsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcEndpointServiceConfigurations +func (c *EC2) DeleteVpcEndpointServiceConfigurationsRequest(input *DeleteVpcEndpointServiceConfigurationsInput) (req *request.Request, output *DeleteVpcEndpointServiceConfigurationsOutput) { + op := &request.Operation{ + Name: opDeleteVpcEndpointServiceConfigurations, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteVpcEndpointServiceConfigurationsInput{} + } + + output = &DeleteVpcEndpointServiceConfigurationsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteVpcEndpointServiceConfigurations API operation for Amazon Elastic Compute Cloud. +// +// Deletes one or more VPC endpoint service configurations in your account. +// Before you delete the endpoint service configuration, you must reject any +// Available or PendingAcceptance interface endpoint connections that are attached +// to the service. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteVpcEndpointServiceConfigurations for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcEndpointServiceConfigurations +func (c *EC2) DeleteVpcEndpointServiceConfigurations(input *DeleteVpcEndpointServiceConfigurationsInput) (*DeleteVpcEndpointServiceConfigurationsOutput, error) { + req, out := c.DeleteVpcEndpointServiceConfigurationsRequest(input) + return out, req.Send() +} + +// DeleteVpcEndpointServiceConfigurationsWithContext is the same as DeleteVpcEndpointServiceConfigurations with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteVpcEndpointServiceConfigurations for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteVpcEndpointServiceConfigurationsWithContext(ctx aws.Context, input *DeleteVpcEndpointServiceConfigurationsInput, opts ...request.Option) (*DeleteVpcEndpointServiceConfigurationsOutput, error) { + req, out := c.DeleteVpcEndpointServiceConfigurationsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteVpcEndpoints = "DeleteVpcEndpoints" + +// DeleteVpcEndpointsRequest generates a "aws/request.Request" representing the +// client's request for the DeleteVpcEndpoints operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteVpcEndpoints for more information on using the DeleteVpcEndpoints +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteVpcEndpointsRequest method. +// req, resp := client.DeleteVpcEndpointsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcEndpoints +func (c *EC2) DeleteVpcEndpointsRequest(input *DeleteVpcEndpointsInput) (req *request.Request, output *DeleteVpcEndpointsOutput) { + op := &request.Operation{ + Name: opDeleteVpcEndpoints, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteVpcEndpointsInput{} + } + + output = &DeleteVpcEndpointsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteVpcEndpoints API operation for Amazon Elastic Compute Cloud. +// +// Deletes one or more specified VPC endpoints. Deleting a gateway endpoint +// also deletes the endpoint routes in the route tables that were associated +// with the endpoint. Deleting an interface endpoint deletes the endpoint network +// interfaces. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteVpcEndpoints for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcEndpoints +func (c *EC2) DeleteVpcEndpoints(input *DeleteVpcEndpointsInput) (*DeleteVpcEndpointsOutput, error) { + req, out := c.DeleteVpcEndpointsRequest(input) + return out, req.Send() +} + +// DeleteVpcEndpointsWithContext is the same as DeleteVpcEndpoints with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteVpcEndpoints for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteVpcEndpointsWithContext(ctx aws.Context, input *DeleteVpcEndpointsInput, opts ...request.Option) (*DeleteVpcEndpointsOutput, error) { + req, out := c.DeleteVpcEndpointsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteVpcPeeringConnection = "DeleteVpcPeeringConnection" + +// DeleteVpcPeeringConnectionRequest generates a "aws/request.Request" representing the +// client's request for the DeleteVpcPeeringConnection operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteVpcPeeringConnection for more information on using the DeleteVpcPeeringConnection +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteVpcPeeringConnectionRequest method. +// req, resp := client.DeleteVpcPeeringConnectionRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcPeeringConnection +func (c *EC2) DeleteVpcPeeringConnectionRequest(input *DeleteVpcPeeringConnectionInput) (req *request.Request, output *DeleteVpcPeeringConnectionOutput) { + op := &request.Operation{ + Name: opDeleteVpcPeeringConnection, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteVpcPeeringConnectionInput{} + } + + output = &DeleteVpcPeeringConnectionOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteVpcPeeringConnection API operation for Amazon Elastic Compute Cloud. +// +// Deletes a VPC peering connection. Either the owner of the requester VPC or +// the owner of the accepter VPC can delete the VPC peering connection if it's +// in the active state. The owner of the requester VPC can delete a VPC peering +// connection in the pending-acceptance state. You cannot delete a VPC peering +// connection that's in the failed state. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteVpcPeeringConnection for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpcPeeringConnection +func (c *EC2) DeleteVpcPeeringConnection(input *DeleteVpcPeeringConnectionInput) (*DeleteVpcPeeringConnectionOutput, error) { + req, out := c.DeleteVpcPeeringConnectionRequest(input) + return out, req.Send() +} + +// DeleteVpcPeeringConnectionWithContext is the same as DeleteVpcPeeringConnection with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteVpcPeeringConnection for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteVpcPeeringConnectionWithContext(ctx aws.Context, input *DeleteVpcPeeringConnectionInput, opts ...request.Option) (*DeleteVpcPeeringConnectionOutput, error) { + req, out := c.DeleteVpcPeeringConnectionRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteVpnConnection = "DeleteVpnConnection" + +// DeleteVpnConnectionRequest generates a "aws/request.Request" representing the +// client's request for the DeleteVpnConnection operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteVpnConnection for more information on using the DeleteVpnConnection +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteVpnConnectionRequest method. +// req, resp := client.DeleteVpnConnectionRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpnConnection +func (c *EC2) DeleteVpnConnectionRequest(input *DeleteVpnConnectionInput) (req *request.Request, output *DeleteVpnConnectionOutput) { + op := &request.Operation{ + Name: opDeleteVpnConnection, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteVpnConnectionInput{} + } + + output = &DeleteVpnConnectionOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteVpnConnection API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified VPN connection. +// +// If you're deleting the VPC and its associated components, we recommend that +// you detach the virtual private gateway from the VPC and delete the VPC before +// deleting the VPN connection. If you believe that the tunnel credentials for +// your VPN connection have been compromised, you can delete the VPN connection +// and create a new one that has new keys, without needing to delete the VPC +// or virtual private gateway. If you create a new VPN connection, you must +// reconfigure the customer gateway using the new configuration information +// returned with the new VPN connection ID. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteVpnConnection for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpnConnection +func (c *EC2) DeleteVpnConnection(input *DeleteVpnConnectionInput) (*DeleteVpnConnectionOutput, error) { + req, out := c.DeleteVpnConnectionRequest(input) + return out, req.Send() +} + +// DeleteVpnConnectionWithContext is the same as DeleteVpnConnection with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteVpnConnection for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteVpnConnectionWithContext(ctx aws.Context, input *DeleteVpnConnectionInput, opts ...request.Option) (*DeleteVpnConnectionOutput, error) { + req, out := c.DeleteVpnConnectionRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteVpnConnectionRoute = "DeleteVpnConnectionRoute" + +// DeleteVpnConnectionRouteRequest generates a "aws/request.Request" representing the +// client's request for the DeleteVpnConnectionRoute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteVpnConnectionRoute for more information on using the DeleteVpnConnectionRoute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteVpnConnectionRouteRequest method. +// req, resp := client.DeleteVpnConnectionRouteRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpnConnectionRoute +func (c *EC2) DeleteVpnConnectionRouteRequest(input *DeleteVpnConnectionRouteInput) (req *request.Request, output *DeleteVpnConnectionRouteOutput) { + op := &request.Operation{ + Name: opDeleteVpnConnectionRoute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteVpnConnectionRouteInput{} + } + + output = &DeleteVpnConnectionRouteOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteVpnConnectionRoute API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified static route associated with a VPN connection between +// an existing virtual private gateway and a VPN customer gateway. The static +// route allows traffic to be routed from the virtual private gateway to the +// VPN customer gateway. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteVpnConnectionRoute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpnConnectionRoute +func (c *EC2) DeleteVpnConnectionRoute(input *DeleteVpnConnectionRouteInput) (*DeleteVpnConnectionRouteOutput, error) { + req, out := c.DeleteVpnConnectionRouteRequest(input) + return out, req.Send() +} + +// DeleteVpnConnectionRouteWithContext is the same as DeleteVpnConnectionRoute with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteVpnConnectionRoute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteVpnConnectionRouteWithContext(ctx aws.Context, input *DeleteVpnConnectionRouteInput, opts ...request.Option) (*DeleteVpnConnectionRouteOutput, error) { + req, out := c.DeleteVpnConnectionRouteRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteVpnGateway = "DeleteVpnGateway" + +// DeleteVpnGatewayRequest generates a "aws/request.Request" representing the +// client's request for the DeleteVpnGateway operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteVpnGateway for more information on using the DeleteVpnGateway +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteVpnGatewayRequest method. +// req, resp := client.DeleteVpnGatewayRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpnGateway +func (c *EC2) DeleteVpnGatewayRequest(input *DeleteVpnGatewayInput) (req *request.Request, output *DeleteVpnGatewayOutput) { + op := &request.Operation{ + Name: opDeleteVpnGateway, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteVpnGatewayInput{} + } + + output = &DeleteVpnGatewayOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteVpnGateway API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified virtual private gateway. We recommend that before you +// delete a virtual private gateway, you detach it from the VPC and delete the +// VPN connection. Note that you don't need to delete the virtual private gateway +// if you plan to delete and recreate the VPN connection between your VPC and +// your network. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteVpnGateway for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteVpnGateway +func (c *EC2) DeleteVpnGateway(input *DeleteVpnGatewayInput) (*DeleteVpnGatewayOutput, error) { + req, out := c.DeleteVpnGatewayRequest(input) + return out, req.Send() +} + +// DeleteVpnGatewayWithContext is the same as DeleteVpnGateway with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteVpnGateway for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteVpnGatewayWithContext(ctx aws.Context, input *DeleteVpnGatewayInput, opts ...request.Option) (*DeleteVpnGatewayOutput, error) { + req, out := c.DeleteVpnGatewayRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeprovisionByoipCidr = "DeprovisionByoipCidr" + +// DeprovisionByoipCidrRequest generates a "aws/request.Request" representing the +// client's request for the DeprovisionByoipCidr operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeprovisionByoipCidr for more information on using the DeprovisionByoipCidr +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeprovisionByoipCidrRequest method. +// req, resp := client.DeprovisionByoipCidrRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeprovisionByoipCidr +func (c *EC2) DeprovisionByoipCidrRequest(input *DeprovisionByoipCidrInput) (req *request.Request, output *DeprovisionByoipCidrOutput) { + op := &request.Operation{ + Name: opDeprovisionByoipCidr, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeprovisionByoipCidrInput{} + } + + output = &DeprovisionByoipCidrOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeprovisionByoipCidr API operation for Amazon Elastic Compute Cloud. +// +// Releases the specified address range that you provisioned for use with your +// AWS resources through bring your own IP addresses (BYOIP) and deletes the +// corresponding address pool. +// +// Before you can release an address range, you must stop advertising it using +// WithdrawByoipCidr and you must not have any IP addresses allocated from its +// address range. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeprovisionByoipCidr for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeprovisionByoipCidr +func (c *EC2) DeprovisionByoipCidr(input *DeprovisionByoipCidrInput) (*DeprovisionByoipCidrOutput, error) { + req, out := c.DeprovisionByoipCidrRequest(input) + return out, req.Send() +} + +// DeprovisionByoipCidrWithContext is the same as DeprovisionByoipCidr with the addition of +// the ability to pass a context and additional request options. +// +// See DeprovisionByoipCidr for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeprovisionByoipCidrWithContext(ctx aws.Context, input *DeprovisionByoipCidrInput, opts ...request.Option) (*DeprovisionByoipCidrOutput, error) { + req, out := c.DeprovisionByoipCidrRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeregisterImage = "DeregisterImage" + +// DeregisterImageRequest generates a "aws/request.Request" representing the +// client's request for the DeregisterImage operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeregisterImage for more information on using the DeregisterImage +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeregisterImageRequest method. +// req, resp := client.DeregisterImageRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeregisterImage +func (c *EC2) DeregisterImageRequest(input *DeregisterImageInput) (req *request.Request, output *DeregisterImageOutput) { + op := &request.Operation{ + Name: opDeregisterImage, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeregisterImageInput{} + } + + output = &DeregisterImageOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeregisterImage API operation for Amazon Elastic Compute Cloud. +// +// Deregisters the specified AMI. After you deregister an AMI, it can't be used +// to launch new instances; however, it doesn't affect any instances that you've +// already launched from the AMI. You'll continue to incur usage costs for those +// instances until you terminate them. +// +// When you deregister an Amazon EBS-backed AMI, it doesn't affect the snapshot +// that was created for the root volume of the instance during the AMI creation +// process. When you deregister an instance store-backed AMI, it doesn't affect +// the files that you uploaded to Amazon S3 when you created the AMI. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeregisterImage for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeregisterImage +func (c *EC2) DeregisterImage(input *DeregisterImageInput) (*DeregisterImageOutput, error) { + req, out := c.DeregisterImageRequest(input) + return out, req.Send() +} + +// DeregisterImageWithContext is the same as DeregisterImage with the addition of +// the ability to pass a context and additional request options. +// +// See DeregisterImage for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeregisterImageWithContext(ctx aws.Context, input *DeregisterImageInput, opts ...request.Option) (*DeregisterImageOutput, error) { + req, out := c.DeregisterImageRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeAccountAttributes = "DescribeAccountAttributes" + +// DescribeAccountAttributesRequest generates a "aws/request.Request" representing the +// client's request for the DescribeAccountAttributes operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeAccountAttributes for more information on using the DescribeAccountAttributes +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeAccountAttributesRequest method. +// req, resp := client.DescribeAccountAttributesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAccountAttributes +func (c *EC2) DescribeAccountAttributesRequest(input *DescribeAccountAttributesInput) (req *request.Request, output *DescribeAccountAttributesOutput) { + op := &request.Operation{ + Name: opDescribeAccountAttributes, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeAccountAttributesInput{} + } + + output = &DescribeAccountAttributesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeAccountAttributes API operation for Amazon Elastic Compute Cloud. +// +// Describes attributes of your AWS account. The following are the supported +// account attributes: +// +// * supported-platforms: Indicates whether your account can launch instances +// into EC2-Classic and EC2-VPC, or only into EC2-VPC. +// +// * default-vpc: The ID of the default VPC for your account, or none. +// +// * max-instances: The maximum number of On-Demand Instances that you can +// run. +// +// * vpc-max-security-groups-per-interface: The maximum number of security +// groups that you can assign to a network interface. +// +// * max-elastic-ips: The maximum number of Elastic IP addresses that you +// can allocate for use with EC2-Classic. +// +// * vpc-max-elastic-ips: The maximum number of Elastic IP addresses that +// you can allocate for use with EC2-VPC. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeAccountAttributes for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAccountAttributes +func (c *EC2) DescribeAccountAttributes(input *DescribeAccountAttributesInput) (*DescribeAccountAttributesOutput, error) { + req, out := c.DescribeAccountAttributesRequest(input) + return out, req.Send() +} + +// DescribeAccountAttributesWithContext is the same as DescribeAccountAttributes with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeAccountAttributes for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeAccountAttributesWithContext(ctx aws.Context, input *DescribeAccountAttributesInput, opts ...request.Option) (*DescribeAccountAttributesOutput, error) { + req, out := c.DescribeAccountAttributesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeAddresses = "DescribeAddresses" + +// DescribeAddressesRequest generates a "aws/request.Request" representing the +// client's request for the DescribeAddresses operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeAddresses for more information on using the DescribeAddresses +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeAddressesRequest method. +// req, resp := client.DescribeAddressesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAddresses +func (c *EC2) DescribeAddressesRequest(input *DescribeAddressesInput) (req *request.Request, output *DescribeAddressesOutput) { + op := &request.Operation{ + Name: opDescribeAddresses, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeAddressesInput{} + } + + output = &DescribeAddressesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeAddresses API operation for Amazon Elastic Compute Cloud. +// +// Describes the specified Elastic IP addresses or all of your Elastic IP addresses. +// +// An Elastic IP address is for use in either the EC2-Classic platform or in +// a VPC. For more information, see Elastic IP Addresses (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeAddresses for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAddresses +func (c *EC2) DescribeAddresses(input *DescribeAddressesInput) (*DescribeAddressesOutput, error) { + req, out := c.DescribeAddressesRequest(input) + return out, req.Send() +} + +// DescribeAddressesWithContext is the same as DescribeAddresses with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeAddresses for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeAddressesWithContext(ctx aws.Context, input *DescribeAddressesInput, opts ...request.Option) (*DescribeAddressesOutput, error) { + req, out := c.DescribeAddressesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeAggregateIdFormat = "DescribeAggregateIdFormat" + +// DescribeAggregateIdFormatRequest generates a "aws/request.Request" representing the +// client's request for the DescribeAggregateIdFormat operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeAggregateIdFormat for more information on using the DescribeAggregateIdFormat +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeAggregateIdFormatRequest method. +// req, resp := client.DescribeAggregateIdFormatRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAggregateIdFormat +func (c *EC2) DescribeAggregateIdFormatRequest(input *DescribeAggregateIdFormatInput) (req *request.Request, output *DescribeAggregateIdFormatOutput) { + op := &request.Operation{ + Name: opDescribeAggregateIdFormat, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeAggregateIdFormatInput{} + } + + output = &DescribeAggregateIdFormatOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeAggregateIdFormat API operation for Amazon Elastic Compute Cloud. +// +// Describes the longer ID format settings for all resource types in a specific +// Region. This request is useful for performing a quick audit to determine +// whether a specific Region is fully opted in for longer IDs (17-character +// IDs). +// +// This request only returns information about resource types that support longer +// IDs. +// +// The following resource types support longer IDs: bundle | conversion-task +// | customer-gateway | dhcp-options | elastic-ip-allocation | elastic-ip-association +// | export-task | flow-log | image | import-task | instance | internet-gateway +// | network-acl | network-acl-association | network-interface | network-interface-attachment +// | prefix-list | reservation | route-table | route-table-association | security-group +// | snapshot | subnet | subnet-cidr-block-association | volume | vpc | vpc-cidr-block-association +// | vpc-endpoint | vpc-peering-connection | vpn-connection | vpn-gateway. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeAggregateIdFormat for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAggregateIdFormat +func (c *EC2) DescribeAggregateIdFormat(input *DescribeAggregateIdFormatInput) (*DescribeAggregateIdFormatOutput, error) { + req, out := c.DescribeAggregateIdFormatRequest(input) + return out, req.Send() +} + +// DescribeAggregateIdFormatWithContext is the same as DescribeAggregateIdFormat with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeAggregateIdFormat for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeAggregateIdFormatWithContext(ctx aws.Context, input *DescribeAggregateIdFormatInput, opts ...request.Option) (*DescribeAggregateIdFormatOutput, error) { + req, out := c.DescribeAggregateIdFormatRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeAvailabilityZones = "DescribeAvailabilityZones" + +// DescribeAvailabilityZonesRequest generates a "aws/request.Request" representing the +// client's request for the DescribeAvailabilityZones operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeAvailabilityZones for more information on using the DescribeAvailabilityZones +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeAvailabilityZonesRequest method. +// req, resp := client.DescribeAvailabilityZonesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAvailabilityZones +func (c *EC2) DescribeAvailabilityZonesRequest(input *DescribeAvailabilityZonesInput) (req *request.Request, output *DescribeAvailabilityZonesOutput) { + op := &request.Operation{ + Name: opDescribeAvailabilityZones, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeAvailabilityZonesInput{} + } + + output = &DescribeAvailabilityZonesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeAvailabilityZones API operation for Amazon Elastic Compute Cloud. +// +// Describes the Availability Zones that are available to you. The results include +// zones only for the Region you're currently using. If there is an event impacting +// an Availability Zone, you can use this request to view the state and any +// provided message for that Availability Zone. +// +// For more information, see Regions and Availability Zones (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeAvailabilityZones for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAvailabilityZones +func (c *EC2) DescribeAvailabilityZones(input *DescribeAvailabilityZonesInput) (*DescribeAvailabilityZonesOutput, error) { + req, out := c.DescribeAvailabilityZonesRequest(input) + return out, req.Send() +} + +// DescribeAvailabilityZonesWithContext is the same as DescribeAvailabilityZones with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeAvailabilityZones for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeAvailabilityZonesWithContext(ctx aws.Context, input *DescribeAvailabilityZonesInput, opts ...request.Option) (*DescribeAvailabilityZonesOutput, error) { + req, out := c.DescribeAvailabilityZonesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeBundleTasks = "DescribeBundleTasks" + +// DescribeBundleTasksRequest generates a "aws/request.Request" representing the +// client's request for the DescribeBundleTasks operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeBundleTasks for more information on using the DescribeBundleTasks +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeBundleTasksRequest method. +// req, resp := client.DescribeBundleTasksRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeBundleTasks +func (c *EC2) DescribeBundleTasksRequest(input *DescribeBundleTasksInput) (req *request.Request, output *DescribeBundleTasksOutput) { + op := &request.Operation{ + Name: opDescribeBundleTasks, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeBundleTasksInput{} + } + + output = &DescribeBundleTasksOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeBundleTasks API operation for Amazon Elastic Compute Cloud. +// +// Describes the specified bundle tasks or all of your bundle tasks. +// +// Completed bundle tasks are listed for only a limited time. If your bundle +// task is no longer in the list, you can still register an AMI from it. Just +// use RegisterImage with the Amazon S3 bucket name and image manifest name +// you provided to the bundle task. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeBundleTasks for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeBundleTasks +func (c *EC2) DescribeBundleTasks(input *DescribeBundleTasksInput) (*DescribeBundleTasksOutput, error) { + req, out := c.DescribeBundleTasksRequest(input) + return out, req.Send() +} + +// DescribeBundleTasksWithContext is the same as DescribeBundleTasks with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeBundleTasks for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeBundleTasksWithContext(ctx aws.Context, input *DescribeBundleTasksInput, opts ...request.Option) (*DescribeBundleTasksOutput, error) { + req, out := c.DescribeBundleTasksRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeByoipCidrs = "DescribeByoipCidrs" + +// DescribeByoipCidrsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeByoipCidrs operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeByoipCidrs for more information on using the DescribeByoipCidrs +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeByoipCidrsRequest method. +// req, resp := client.DescribeByoipCidrsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeByoipCidrs +func (c *EC2) DescribeByoipCidrsRequest(input *DescribeByoipCidrsInput) (req *request.Request, output *DescribeByoipCidrsOutput) { + op := &request.Operation{ + Name: opDescribeByoipCidrs, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeByoipCidrsInput{} + } + + output = &DescribeByoipCidrsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeByoipCidrs API operation for Amazon Elastic Compute Cloud. +// +// Describes the IP address ranges that were specified in calls to ProvisionByoipCidr. +// +// To describe the address pools that were created when you provisioned the +// address ranges, use DescribePublicIpv4Pools. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeByoipCidrs for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeByoipCidrs +func (c *EC2) DescribeByoipCidrs(input *DescribeByoipCidrsInput) (*DescribeByoipCidrsOutput, error) { + req, out := c.DescribeByoipCidrsRequest(input) + return out, req.Send() +} + +// DescribeByoipCidrsWithContext is the same as DescribeByoipCidrs with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeByoipCidrs for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeByoipCidrsWithContext(ctx aws.Context, input *DescribeByoipCidrsInput, opts ...request.Option) (*DescribeByoipCidrsOutput, error) { + req, out := c.DescribeByoipCidrsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeByoipCidrsPages iterates over the pages of a DescribeByoipCidrs operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeByoipCidrs method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeByoipCidrs operation. +// pageNum := 0 +// err := client.DescribeByoipCidrsPages(params, +// func(page *ec2.DescribeByoipCidrsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeByoipCidrsPages(input *DescribeByoipCidrsInput, fn func(*DescribeByoipCidrsOutput, bool) bool) error { + return c.DescribeByoipCidrsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeByoipCidrsPagesWithContext same as DescribeByoipCidrsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeByoipCidrsPagesWithContext(ctx aws.Context, input *DescribeByoipCidrsInput, fn func(*DescribeByoipCidrsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeByoipCidrsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeByoipCidrsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeByoipCidrsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeCapacityReservations = "DescribeCapacityReservations" + +// DescribeCapacityReservationsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeCapacityReservations operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeCapacityReservations for more information on using the DescribeCapacityReservations +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeCapacityReservationsRequest method. +// req, resp := client.DescribeCapacityReservationsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeCapacityReservations +func (c *EC2) DescribeCapacityReservationsRequest(input *DescribeCapacityReservationsInput) (req *request.Request, output *DescribeCapacityReservationsOutput) { + op := &request.Operation{ + Name: opDescribeCapacityReservations, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeCapacityReservationsInput{} + } + + output = &DescribeCapacityReservationsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeCapacityReservations API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more of your Capacity Reservations. The results describe +// only the Capacity Reservations in the AWS Region that you're currently using. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeCapacityReservations for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeCapacityReservations +func (c *EC2) DescribeCapacityReservations(input *DescribeCapacityReservationsInput) (*DescribeCapacityReservationsOutput, error) { + req, out := c.DescribeCapacityReservationsRequest(input) + return out, req.Send() +} + +// DescribeCapacityReservationsWithContext is the same as DescribeCapacityReservations with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeCapacityReservations for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeCapacityReservationsWithContext(ctx aws.Context, input *DescribeCapacityReservationsInput, opts ...request.Option) (*DescribeCapacityReservationsOutput, error) { + req, out := c.DescribeCapacityReservationsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeCapacityReservationsPages iterates over the pages of a DescribeCapacityReservations operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeCapacityReservations method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeCapacityReservations operation. +// pageNum := 0 +// err := client.DescribeCapacityReservationsPages(params, +// func(page *ec2.DescribeCapacityReservationsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeCapacityReservationsPages(input *DescribeCapacityReservationsInput, fn func(*DescribeCapacityReservationsOutput, bool) bool) error { + return c.DescribeCapacityReservationsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeCapacityReservationsPagesWithContext same as DescribeCapacityReservationsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeCapacityReservationsPagesWithContext(ctx aws.Context, input *DescribeCapacityReservationsInput, fn func(*DescribeCapacityReservationsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeCapacityReservationsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeCapacityReservationsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeCapacityReservationsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeClassicLinkInstances = "DescribeClassicLinkInstances" + +// DescribeClassicLinkInstancesRequest generates a "aws/request.Request" representing the +// client's request for the DescribeClassicLinkInstances operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeClassicLinkInstances for more information on using the DescribeClassicLinkInstances +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeClassicLinkInstancesRequest method. +// req, resp := client.DescribeClassicLinkInstancesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClassicLinkInstances +func (c *EC2) DescribeClassicLinkInstancesRequest(input *DescribeClassicLinkInstancesInput) (req *request.Request, output *DescribeClassicLinkInstancesOutput) { + op := &request.Operation{ + Name: opDescribeClassicLinkInstances, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeClassicLinkInstancesInput{} + } + + output = &DescribeClassicLinkInstancesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeClassicLinkInstances API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more of your linked EC2-Classic instances. This request +// only returns information about EC2-Classic instances linked to a VPC through +// ClassicLink. You cannot use this request to return information about other +// instances. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeClassicLinkInstances for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClassicLinkInstances +func (c *EC2) DescribeClassicLinkInstances(input *DescribeClassicLinkInstancesInput) (*DescribeClassicLinkInstancesOutput, error) { + req, out := c.DescribeClassicLinkInstancesRequest(input) + return out, req.Send() +} + +// DescribeClassicLinkInstancesWithContext is the same as DescribeClassicLinkInstances with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeClassicLinkInstances for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeClassicLinkInstancesWithContext(ctx aws.Context, input *DescribeClassicLinkInstancesInput, opts ...request.Option) (*DescribeClassicLinkInstancesOutput, error) { + req, out := c.DescribeClassicLinkInstancesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeClassicLinkInstancesPages iterates over the pages of a DescribeClassicLinkInstances operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeClassicLinkInstances method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeClassicLinkInstances operation. +// pageNum := 0 +// err := client.DescribeClassicLinkInstancesPages(params, +// func(page *ec2.DescribeClassicLinkInstancesOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeClassicLinkInstancesPages(input *DescribeClassicLinkInstancesInput, fn func(*DescribeClassicLinkInstancesOutput, bool) bool) error { + return c.DescribeClassicLinkInstancesPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeClassicLinkInstancesPagesWithContext same as DescribeClassicLinkInstancesPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeClassicLinkInstancesPagesWithContext(ctx aws.Context, input *DescribeClassicLinkInstancesInput, fn func(*DescribeClassicLinkInstancesOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeClassicLinkInstancesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeClassicLinkInstancesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeClassicLinkInstancesOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeClientVpnAuthorizationRules = "DescribeClientVpnAuthorizationRules" + +// DescribeClientVpnAuthorizationRulesRequest generates a "aws/request.Request" representing the +// client's request for the DescribeClientVpnAuthorizationRules operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeClientVpnAuthorizationRules for more information on using the DescribeClientVpnAuthorizationRules +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeClientVpnAuthorizationRulesRequest method. +// req, resp := client.DescribeClientVpnAuthorizationRulesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClientVpnAuthorizationRules +func (c *EC2) DescribeClientVpnAuthorizationRulesRequest(input *DescribeClientVpnAuthorizationRulesInput) (req *request.Request, output *DescribeClientVpnAuthorizationRulesOutput) { + op := &request.Operation{ + Name: opDescribeClientVpnAuthorizationRules, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeClientVpnAuthorizationRulesInput{} + } + + output = &DescribeClientVpnAuthorizationRulesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeClientVpnAuthorizationRules API operation for Amazon Elastic Compute Cloud. +// +// Describes the authorization rules for a specified Client VPN endpoint. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeClientVpnAuthorizationRules for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClientVpnAuthorizationRules +func (c *EC2) DescribeClientVpnAuthorizationRules(input *DescribeClientVpnAuthorizationRulesInput) (*DescribeClientVpnAuthorizationRulesOutput, error) { + req, out := c.DescribeClientVpnAuthorizationRulesRequest(input) + return out, req.Send() +} + +// DescribeClientVpnAuthorizationRulesWithContext is the same as DescribeClientVpnAuthorizationRules with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeClientVpnAuthorizationRules for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeClientVpnAuthorizationRulesWithContext(ctx aws.Context, input *DescribeClientVpnAuthorizationRulesInput, opts ...request.Option) (*DescribeClientVpnAuthorizationRulesOutput, error) { + req, out := c.DescribeClientVpnAuthorizationRulesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeClientVpnAuthorizationRulesPages iterates over the pages of a DescribeClientVpnAuthorizationRules operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeClientVpnAuthorizationRules method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeClientVpnAuthorizationRules operation. +// pageNum := 0 +// err := client.DescribeClientVpnAuthorizationRulesPages(params, +// func(page *ec2.DescribeClientVpnAuthorizationRulesOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeClientVpnAuthorizationRulesPages(input *DescribeClientVpnAuthorizationRulesInput, fn func(*DescribeClientVpnAuthorizationRulesOutput, bool) bool) error { + return c.DescribeClientVpnAuthorizationRulesPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeClientVpnAuthorizationRulesPagesWithContext same as DescribeClientVpnAuthorizationRulesPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeClientVpnAuthorizationRulesPagesWithContext(ctx aws.Context, input *DescribeClientVpnAuthorizationRulesInput, fn func(*DescribeClientVpnAuthorizationRulesOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeClientVpnAuthorizationRulesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeClientVpnAuthorizationRulesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeClientVpnAuthorizationRulesOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeClientVpnConnections = "DescribeClientVpnConnections" + +// DescribeClientVpnConnectionsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeClientVpnConnections operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeClientVpnConnections for more information on using the DescribeClientVpnConnections +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeClientVpnConnectionsRequest method. +// req, resp := client.DescribeClientVpnConnectionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClientVpnConnections +func (c *EC2) DescribeClientVpnConnectionsRequest(input *DescribeClientVpnConnectionsInput) (req *request.Request, output *DescribeClientVpnConnectionsOutput) { + op := &request.Operation{ + Name: opDescribeClientVpnConnections, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeClientVpnConnectionsInput{} + } + + output = &DescribeClientVpnConnectionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeClientVpnConnections API operation for Amazon Elastic Compute Cloud. +// +// Describes active client connections and connections that have been terminated +// within the last 60 minutes for the specified Client VPN endpoint. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeClientVpnConnections for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClientVpnConnections +func (c *EC2) DescribeClientVpnConnections(input *DescribeClientVpnConnectionsInput) (*DescribeClientVpnConnectionsOutput, error) { + req, out := c.DescribeClientVpnConnectionsRequest(input) + return out, req.Send() +} + +// DescribeClientVpnConnectionsWithContext is the same as DescribeClientVpnConnections with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeClientVpnConnections for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeClientVpnConnectionsWithContext(ctx aws.Context, input *DescribeClientVpnConnectionsInput, opts ...request.Option) (*DescribeClientVpnConnectionsOutput, error) { + req, out := c.DescribeClientVpnConnectionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeClientVpnConnectionsPages iterates over the pages of a DescribeClientVpnConnections operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeClientVpnConnections method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeClientVpnConnections operation. +// pageNum := 0 +// err := client.DescribeClientVpnConnectionsPages(params, +// func(page *ec2.DescribeClientVpnConnectionsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeClientVpnConnectionsPages(input *DescribeClientVpnConnectionsInput, fn func(*DescribeClientVpnConnectionsOutput, bool) bool) error { + return c.DescribeClientVpnConnectionsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeClientVpnConnectionsPagesWithContext same as DescribeClientVpnConnectionsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeClientVpnConnectionsPagesWithContext(ctx aws.Context, input *DescribeClientVpnConnectionsInput, fn func(*DescribeClientVpnConnectionsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeClientVpnConnectionsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeClientVpnConnectionsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeClientVpnConnectionsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeClientVpnEndpoints = "DescribeClientVpnEndpoints" + +// DescribeClientVpnEndpointsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeClientVpnEndpoints operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeClientVpnEndpoints for more information on using the DescribeClientVpnEndpoints +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeClientVpnEndpointsRequest method. +// req, resp := client.DescribeClientVpnEndpointsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClientVpnEndpoints +func (c *EC2) DescribeClientVpnEndpointsRequest(input *DescribeClientVpnEndpointsInput) (req *request.Request, output *DescribeClientVpnEndpointsOutput) { + op := &request.Operation{ + Name: opDescribeClientVpnEndpoints, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeClientVpnEndpointsInput{} + } + + output = &DescribeClientVpnEndpointsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeClientVpnEndpoints API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more Client VPN endpoints in the account. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeClientVpnEndpoints for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClientVpnEndpoints +func (c *EC2) DescribeClientVpnEndpoints(input *DescribeClientVpnEndpointsInput) (*DescribeClientVpnEndpointsOutput, error) { + req, out := c.DescribeClientVpnEndpointsRequest(input) + return out, req.Send() +} + +// DescribeClientVpnEndpointsWithContext is the same as DescribeClientVpnEndpoints with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeClientVpnEndpoints for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeClientVpnEndpointsWithContext(ctx aws.Context, input *DescribeClientVpnEndpointsInput, opts ...request.Option) (*DescribeClientVpnEndpointsOutput, error) { + req, out := c.DescribeClientVpnEndpointsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeClientVpnEndpointsPages iterates over the pages of a DescribeClientVpnEndpoints operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeClientVpnEndpoints method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeClientVpnEndpoints operation. +// pageNum := 0 +// err := client.DescribeClientVpnEndpointsPages(params, +// func(page *ec2.DescribeClientVpnEndpointsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeClientVpnEndpointsPages(input *DescribeClientVpnEndpointsInput, fn func(*DescribeClientVpnEndpointsOutput, bool) bool) error { + return c.DescribeClientVpnEndpointsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeClientVpnEndpointsPagesWithContext same as DescribeClientVpnEndpointsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeClientVpnEndpointsPagesWithContext(ctx aws.Context, input *DescribeClientVpnEndpointsInput, fn func(*DescribeClientVpnEndpointsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeClientVpnEndpointsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeClientVpnEndpointsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeClientVpnEndpointsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeClientVpnRoutes = "DescribeClientVpnRoutes" + +// DescribeClientVpnRoutesRequest generates a "aws/request.Request" representing the +// client's request for the DescribeClientVpnRoutes operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeClientVpnRoutes for more information on using the DescribeClientVpnRoutes +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeClientVpnRoutesRequest method. +// req, resp := client.DescribeClientVpnRoutesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClientVpnRoutes +func (c *EC2) DescribeClientVpnRoutesRequest(input *DescribeClientVpnRoutesInput) (req *request.Request, output *DescribeClientVpnRoutesOutput) { + op := &request.Operation{ + Name: opDescribeClientVpnRoutes, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeClientVpnRoutesInput{} + } + + output = &DescribeClientVpnRoutesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeClientVpnRoutes API operation for Amazon Elastic Compute Cloud. +// +// Describes the routes for the specified Client VPN endpoint. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeClientVpnRoutes for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClientVpnRoutes +func (c *EC2) DescribeClientVpnRoutes(input *DescribeClientVpnRoutesInput) (*DescribeClientVpnRoutesOutput, error) { + req, out := c.DescribeClientVpnRoutesRequest(input) + return out, req.Send() +} + +// DescribeClientVpnRoutesWithContext is the same as DescribeClientVpnRoutes with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeClientVpnRoutes for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeClientVpnRoutesWithContext(ctx aws.Context, input *DescribeClientVpnRoutesInput, opts ...request.Option) (*DescribeClientVpnRoutesOutput, error) { + req, out := c.DescribeClientVpnRoutesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeClientVpnRoutesPages iterates over the pages of a DescribeClientVpnRoutes operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeClientVpnRoutes method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeClientVpnRoutes operation. +// pageNum := 0 +// err := client.DescribeClientVpnRoutesPages(params, +// func(page *ec2.DescribeClientVpnRoutesOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeClientVpnRoutesPages(input *DescribeClientVpnRoutesInput, fn func(*DescribeClientVpnRoutesOutput, bool) bool) error { + return c.DescribeClientVpnRoutesPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeClientVpnRoutesPagesWithContext same as DescribeClientVpnRoutesPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeClientVpnRoutesPagesWithContext(ctx aws.Context, input *DescribeClientVpnRoutesInput, fn func(*DescribeClientVpnRoutesOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeClientVpnRoutesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeClientVpnRoutesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeClientVpnRoutesOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeClientVpnTargetNetworks = "DescribeClientVpnTargetNetworks" + +// DescribeClientVpnTargetNetworksRequest generates a "aws/request.Request" representing the +// client's request for the DescribeClientVpnTargetNetworks operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeClientVpnTargetNetworks for more information on using the DescribeClientVpnTargetNetworks +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeClientVpnTargetNetworksRequest method. +// req, resp := client.DescribeClientVpnTargetNetworksRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClientVpnTargetNetworks +func (c *EC2) DescribeClientVpnTargetNetworksRequest(input *DescribeClientVpnTargetNetworksInput) (req *request.Request, output *DescribeClientVpnTargetNetworksOutput) { + op := &request.Operation{ + Name: opDescribeClientVpnTargetNetworks, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeClientVpnTargetNetworksInput{} + } + + output = &DescribeClientVpnTargetNetworksOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeClientVpnTargetNetworks API operation for Amazon Elastic Compute Cloud. +// +// Describes the target networks associated with the specified Client VPN endpoint. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeClientVpnTargetNetworks for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClientVpnTargetNetworks +func (c *EC2) DescribeClientVpnTargetNetworks(input *DescribeClientVpnTargetNetworksInput) (*DescribeClientVpnTargetNetworksOutput, error) { + req, out := c.DescribeClientVpnTargetNetworksRequest(input) + return out, req.Send() +} + +// DescribeClientVpnTargetNetworksWithContext is the same as DescribeClientVpnTargetNetworks with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeClientVpnTargetNetworks for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeClientVpnTargetNetworksWithContext(ctx aws.Context, input *DescribeClientVpnTargetNetworksInput, opts ...request.Option) (*DescribeClientVpnTargetNetworksOutput, error) { + req, out := c.DescribeClientVpnTargetNetworksRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeClientVpnTargetNetworksPages iterates over the pages of a DescribeClientVpnTargetNetworks operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeClientVpnTargetNetworks method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeClientVpnTargetNetworks operation. +// pageNum := 0 +// err := client.DescribeClientVpnTargetNetworksPages(params, +// func(page *ec2.DescribeClientVpnTargetNetworksOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeClientVpnTargetNetworksPages(input *DescribeClientVpnTargetNetworksInput, fn func(*DescribeClientVpnTargetNetworksOutput, bool) bool) error { + return c.DescribeClientVpnTargetNetworksPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeClientVpnTargetNetworksPagesWithContext same as DescribeClientVpnTargetNetworksPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeClientVpnTargetNetworksPagesWithContext(ctx aws.Context, input *DescribeClientVpnTargetNetworksInput, fn func(*DescribeClientVpnTargetNetworksOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeClientVpnTargetNetworksInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeClientVpnTargetNetworksRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeClientVpnTargetNetworksOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeConversionTasks = "DescribeConversionTasks" + +// DescribeConversionTasksRequest generates a "aws/request.Request" representing the +// client's request for the DescribeConversionTasks operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeConversionTasks for more information on using the DescribeConversionTasks +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeConversionTasksRequest method. +// req, resp := client.DescribeConversionTasksRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeConversionTasks +func (c *EC2) DescribeConversionTasksRequest(input *DescribeConversionTasksInput) (req *request.Request, output *DescribeConversionTasksOutput) { + op := &request.Operation{ + Name: opDescribeConversionTasks, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeConversionTasksInput{} + } + + output = &DescribeConversionTasksOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeConversionTasks API operation for Amazon Elastic Compute Cloud. +// +// Describes the specified conversion tasks or all your conversion tasks. For +// more information, see the VM Import/Export User Guide (https://docs.aws.amazon.com/vm-import/latest/userguide/). +// +// For information about the import manifest referenced by this API action, +// see VM Import Manifest (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/manifest.html). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeConversionTasks for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeConversionTasks +func (c *EC2) DescribeConversionTasks(input *DescribeConversionTasksInput) (*DescribeConversionTasksOutput, error) { + req, out := c.DescribeConversionTasksRequest(input) + return out, req.Send() +} + +// DescribeConversionTasksWithContext is the same as DescribeConversionTasks with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeConversionTasks for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeConversionTasksWithContext(ctx aws.Context, input *DescribeConversionTasksInput, opts ...request.Option) (*DescribeConversionTasksOutput, error) { + req, out := c.DescribeConversionTasksRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeCustomerGateways = "DescribeCustomerGateways" + +// DescribeCustomerGatewaysRequest generates a "aws/request.Request" representing the +// client's request for the DescribeCustomerGateways operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeCustomerGateways for more information on using the DescribeCustomerGateways +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeCustomerGatewaysRequest method. +// req, resp := client.DescribeCustomerGatewaysRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeCustomerGateways +func (c *EC2) DescribeCustomerGatewaysRequest(input *DescribeCustomerGatewaysInput) (req *request.Request, output *DescribeCustomerGatewaysOutput) { + op := &request.Operation{ + Name: opDescribeCustomerGateways, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeCustomerGatewaysInput{} + } + + output = &DescribeCustomerGatewaysOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeCustomerGateways API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more of your VPN customer gateways. +// +// For more information, see AWS Site-to-Site VPN (https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) +// in the AWS Site-to-Site VPN User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeCustomerGateways for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeCustomerGateways +func (c *EC2) DescribeCustomerGateways(input *DescribeCustomerGatewaysInput) (*DescribeCustomerGatewaysOutput, error) { + req, out := c.DescribeCustomerGatewaysRequest(input) + return out, req.Send() +} + +// DescribeCustomerGatewaysWithContext is the same as DescribeCustomerGateways with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeCustomerGateways for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeCustomerGatewaysWithContext(ctx aws.Context, input *DescribeCustomerGatewaysInput, opts ...request.Option) (*DescribeCustomerGatewaysOutput, error) { + req, out := c.DescribeCustomerGatewaysRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeDhcpOptions = "DescribeDhcpOptions" + +// DescribeDhcpOptionsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeDhcpOptions operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeDhcpOptions for more information on using the DescribeDhcpOptions +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeDhcpOptionsRequest method. +// req, resp := client.DescribeDhcpOptionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeDhcpOptions +func (c *EC2) DescribeDhcpOptionsRequest(input *DescribeDhcpOptionsInput) (req *request.Request, output *DescribeDhcpOptionsOutput) { + op := &request.Operation{ + Name: opDescribeDhcpOptions, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeDhcpOptionsInput{} + } + + output = &DescribeDhcpOptionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeDhcpOptions API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more of your DHCP options sets. +// +// For more information, see DHCP Options Sets (https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeDhcpOptions for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeDhcpOptions +func (c *EC2) DescribeDhcpOptions(input *DescribeDhcpOptionsInput) (*DescribeDhcpOptionsOutput, error) { + req, out := c.DescribeDhcpOptionsRequest(input) + return out, req.Send() +} + +// DescribeDhcpOptionsWithContext is the same as DescribeDhcpOptions with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeDhcpOptions for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeDhcpOptionsWithContext(ctx aws.Context, input *DescribeDhcpOptionsInput, opts ...request.Option) (*DescribeDhcpOptionsOutput, error) { + req, out := c.DescribeDhcpOptionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeDhcpOptionsPages iterates over the pages of a DescribeDhcpOptions operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeDhcpOptions method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeDhcpOptions operation. +// pageNum := 0 +// err := client.DescribeDhcpOptionsPages(params, +// func(page *ec2.DescribeDhcpOptionsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeDhcpOptionsPages(input *DescribeDhcpOptionsInput, fn func(*DescribeDhcpOptionsOutput, bool) bool) error { + return c.DescribeDhcpOptionsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeDhcpOptionsPagesWithContext same as DescribeDhcpOptionsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeDhcpOptionsPagesWithContext(ctx aws.Context, input *DescribeDhcpOptionsInput, fn func(*DescribeDhcpOptionsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeDhcpOptionsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeDhcpOptionsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeDhcpOptionsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeEgressOnlyInternetGateways = "DescribeEgressOnlyInternetGateways" + +// DescribeEgressOnlyInternetGatewaysRequest generates a "aws/request.Request" representing the +// client's request for the DescribeEgressOnlyInternetGateways operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeEgressOnlyInternetGateways for more information on using the DescribeEgressOnlyInternetGateways +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeEgressOnlyInternetGatewaysRequest method. +// req, resp := client.DescribeEgressOnlyInternetGatewaysRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeEgressOnlyInternetGateways +func (c *EC2) DescribeEgressOnlyInternetGatewaysRequest(input *DescribeEgressOnlyInternetGatewaysInput) (req *request.Request, output *DescribeEgressOnlyInternetGatewaysOutput) { + op := &request.Operation{ + Name: opDescribeEgressOnlyInternetGateways, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeEgressOnlyInternetGatewaysInput{} + } + + output = &DescribeEgressOnlyInternetGatewaysOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeEgressOnlyInternetGateways API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more of your egress-only internet gateways. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeEgressOnlyInternetGateways for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeEgressOnlyInternetGateways +func (c *EC2) DescribeEgressOnlyInternetGateways(input *DescribeEgressOnlyInternetGatewaysInput) (*DescribeEgressOnlyInternetGatewaysOutput, error) { + req, out := c.DescribeEgressOnlyInternetGatewaysRequest(input) + return out, req.Send() +} + +// DescribeEgressOnlyInternetGatewaysWithContext is the same as DescribeEgressOnlyInternetGateways with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeEgressOnlyInternetGateways for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeEgressOnlyInternetGatewaysWithContext(ctx aws.Context, input *DescribeEgressOnlyInternetGatewaysInput, opts ...request.Option) (*DescribeEgressOnlyInternetGatewaysOutput, error) { + req, out := c.DescribeEgressOnlyInternetGatewaysRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeEgressOnlyInternetGatewaysPages iterates over the pages of a DescribeEgressOnlyInternetGateways operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeEgressOnlyInternetGateways method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeEgressOnlyInternetGateways operation. +// pageNum := 0 +// err := client.DescribeEgressOnlyInternetGatewaysPages(params, +// func(page *ec2.DescribeEgressOnlyInternetGatewaysOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeEgressOnlyInternetGatewaysPages(input *DescribeEgressOnlyInternetGatewaysInput, fn func(*DescribeEgressOnlyInternetGatewaysOutput, bool) bool) error { + return c.DescribeEgressOnlyInternetGatewaysPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeEgressOnlyInternetGatewaysPagesWithContext same as DescribeEgressOnlyInternetGatewaysPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeEgressOnlyInternetGatewaysPagesWithContext(ctx aws.Context, input *DescribeEgressOnlyInternetGatewaysInput, fn func(*DescribeEgressOnlyInternetGatewaysOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeEgressOnlyInternetGatewaysInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeEgressOnlyInternetGatewaysRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeEgressOnlyInternetGatewaysOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeElasticGpus = "DescribeElasticGpus" + +// DescribeElasticGpusRequest generates a "aws/request.Request" representing the +// client's request for the DescribeElasticGpus operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeElasticGpus for more information on using the DescribeElasticGpus +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeElasticGpusRequest method. +// req, resp := client.DescribeElasticGpusRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeElasticGpus +func (c *EC2) DescribeElasticGpusRequest(input *DescribeElasticGpusInput) (req *request.Request, output *DescribeElasticGpusOutput) { + op := &request.Operation{ + Name: opDescribeElasticGpus, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeElasticGpusInput{} + } + + output = &DescribeElasticGpusOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeElasticGpus API operation for Amazon Elastic Compute Cloud. +// +// Describes the Elastic Graphics accelerator associated with your instances. +// For more information about Elastic Graphics, see Amazon Elastic Graphics +// (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/elastic-graphics.html). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeElasticGpus for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeElasticGpus +func (c *EC2) DescribeElasticGpus(input *DescribeElasticGpusInput) (*DescribeElasticGpusOutput, error) { + req, out := c.DescribeElasticGpusRequest(input) + return out, req.Send() +} + +// DescribeElasticGpusWithContext is the same as DescribeElasticGpus with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeElasticGpus for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeElasticGpusWithContext(ctx aws.Context, input *DescribeElasticGpusInput, opts ...request.Option) (*DescribeElasticGpusOutput, error) { + req, out := c.DescribeElasticGpusRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeExportImageTasks = "DescribeExportImageTasks" + +// DescribeExportImageTasksRequest generates a "aws/request.Request" representing the +// client's request for the DescribeExportImageTasks operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeExportImageTasks for more information on using the DescribeExportImageTasks +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeExportImageTasksRequest method. +// req, resp := client.DescribeExportImageTasksRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeExportImageTasks +func (c *EC2) DescribeExportImageTasksRequest(input *DescribeExportImageTasksInput) (req *request.Request, output *DescribeExportImageTasksOutput) { + op := &request.Operation{ + Name: opDescribeExportImageTasks, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeExportImageTasksInput{} + } + + output = &DescribeExportImageTasksOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeExportImageTasks API operation for Amazon Elastic Compute Cloud. +// +// Describes the specified export image tasks or all your export image tasks. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeExportImageTasks for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeExportImageTasks +func (c *EC2) DescribeExportImageTasks(input *DescribeExportImageTasksInput) (*DescribeExportImageTasksOutput, error) { + req, out := c.DescribeExportImageTasksRequest(input) + return out, req.Send() +} + +// DescribeExportImageTasksWithContext is the same as DescribeExportImageTasks with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeExportImageTasks for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeExportImageTasksWithContext(ctx aws.Context, input *DescribeExportImageTasksInput, opts ...request.Option) (*DescribeExportImageTasksOutput, error) { + req, out := c.DescribeExportImageTasksRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeExportTasks = "DescribeExportTasks" + +// DescribeExportTasksRequest generates a "aws/request.Request" representing the +// client's request for the DescribeExportTasks operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeExportTasks for more information on using the DescribeExportTasks +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeExportTasksRequest method. +// req, resp := client.DescribeExportTasksRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeExportTasks +func (c *EC2) DescribeExportTasksRequest(input *DescribeExportTasksInput) (req *request.Request, output *DescribeExportTasksOutput) { + op := &request.Operation{ + Name: opDescribeExportTasks, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeExportTasksInput{} + } + + output = &DescribeExportTasksOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeExportTasks API operation for Amazon Elastic Compute Cloud. +// +// Describes the specified export instance tasks or all your export instance +// tasks. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeExportTasks for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeExportTasks +func (c *EC2) DescribeExportTasks(input *DescribeExportTasksInput) (*DescribeExportTasksOutput, error) { + req, out := c.DescribeExportTasksRequest(input) + return out, req.Send() +} + +// DescribeExportTasksWithContext is the same as DescribeExportTasks with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeExportTasks for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeExportTasksWithContext(ctx aws.Context, input *DescribeExportTasksInput, opts ...request.Option) (*DescribeExportTasksOutput, error) { + req, out := c.DescribeExportTasksRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeFleetHistory = "DescribeFleetHistory" + +// DescribeFleetHistoryRequest generates a "aws/request.Request" representing the +// client's request for the DescribeFleetHistory operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeFleetHistory for more information on using the DescribeFleetHistory +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeFleetHistoryRequest method. +// req, resp := client.DescribeFleetHistoryRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFleetHistory +func (c *EC2) DescribeFleetHistoryRequest(input *DescribeFleetHistoryInput) (req *request.Request, output *DescribeFleetHistoryOutput) { + op := &request.Operation{ + Name: opDescribeFleetHistory, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeFleetHistoryInput{} + } + + output = &DescribeFleetHistoryOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeFleetHistory API operation for Amazon Elastic Compute Cloud. +// +// Describes the events for the specified EC2 Fleet during the specified time. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeFleetHistory for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFleetHistory +func (c *EC2) DescribeFleetHistory(input *DescribeFleetHistoryInput) (*DescribeFleetHistoryOutput, error) { + req, out := c.DescribeFleetHistoryRequest(input) + return out, req.Send() +} + +// DescribeFleetHistoryWithContext is the same as DescribeFleetHistory with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeFleetHistory for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeFleetHistoryWithContext(ctx aws.Context, input *DescribeFleetHistoryInput, opts ...request.Option) (*DescribeFleetHistoryOutput, error) { + req, out := c.DescribeFleetHistoryRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeFleetInstances = "DescribeFleetInstances" + +// DescribeFleetInstancesRequest generates a "aws/request.Request" representing the +// client's request for the DescribeFleetInstances operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeFleetInstances for more information on using the DescribeFleetInstances +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeFleetInstancesRequest method. +// req, resp := client.DescribeFleetInstancesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFleetInstances +func (c *EC2) DescribeFleetInstancesRequest(input *DescribeFleetInstancesInput) (req *request.Request, output *DescribeFleetInstancesOutput) { + op := &request.Operation{ + Name: opDescribeFleetInstances, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeFleetInstancesInput{} + } + + output = &DescribeFleetInstancesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeFleetInstances API operation for Amazon Elastic Compute Cloud. +// +// Describes the running instances for the specified EC2 Fleet. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeFleetInstances for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFleetInstances +func (c *EC2) DescribeFleetInstances(input *DescribeFleetInstancesInput) (*DescribeFleetInstancesOutput, error) { + req, out := c.DescribeFleetInstancesRequest(input) + return out, req.Send() +} + +// DescribeFleetInstancesWithContext is the same as DescribeFleetInstances with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeFleetInstances for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeFleetInstancesWithContext(ctx aws.Context, input *DescribeFleetInstancesInput, opts ...request.Option) (*DescribeFleetInstancesOutput, error) { + req, out := c.DescribeFleetInstancesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeFleets = "DescribeFleets" + +// DescribeFleetsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeFleets operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeFleets for more information on using the DescribeFleets +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeFleetsRequest method. +// req, resp := client.DescribeFleetsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFleets +func (c *EC2) DescribeFleetsRequest(input *DescribeFleetsInput) (req *request.Request, output *DescribeFleetsOutput) { + op := &request.Operation{ + Name: opDescribeFleets, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeFleetsInput{} + } + + output = &DescribeFleetsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeFleets API operation for Amazon Elastic Compute Cloud. +// +// Describes the specified EC2 Fleets or all your EC2 Fleets. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeFleets for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFleets +func (c *EC2) DescribeFleets(input *DescribeFleetsInput) (*DescribeFleetsOutput, error) { + req, out := c.DescribeFleetsRequest(input) + return out, req.Send() +} + +// DescribeFleetsWithContext is the same as DescribeFleets with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeFleets for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeFleetsWithContext(ctx aws.Context, input *DescribeFleetsInput, opts ...request.Option) (*DescribeFleetsOutput, error) { + req, out := c.DescribeFleetsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeFleetsPages iterates over the pages of a DescribeFleets operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeFleets method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeFleets operation. +// pageNum := 0 +// err := client.DescribeFleetsPages(params, +// func(page *ec2.DescribeFleetsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeFleetsPages(input *DescribeFleetsInput, fn func(*DescribeFleetsOutput, bool) bool) error { + return c.DescribeFleetsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeFleetsPagesWithContext same as DescribeFleetsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeFleetsPagesWithContext(ctx aws.Context, input *DescribeFleetsInput, fn func(*DescribeFleetsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeFleetsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeFleetsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeFleetsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeFlowLogs = "DescribeFlowLogs" + +// DescribeFlowLogsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeFlowLogs operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeFlowLogs for more information on using the DescribeFlowLogs +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeFlowLogsRequest method. +// req, resp := client.DescribeFlowLogsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFlowLogs +func (c *EC2) DescribeFlowLogsRequest(input *DescribeFlowLogsInput) (req *request.Request, output *DescribeFlowLogsOutput) { + op := &request.Operation{ + Name: opDescribeFlowLogs, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeFlowLogsInput{} + } + + output = &DescribeFlowLogsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeFlowLogs API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more flow logs. To view the information in your flow logs +// (the log streams for the network interfaces), you must use the CloudWatch +// Logs console or the CloudWatch Logs API. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeFlowLogs for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFlowLogs +func (c *EC2) DescribeFlowLogs(input *DescribeFlowLogsInput) (*DescribeFlowLogsOutput, error) { + req, out := c.DescribeFlowLogsRequest(input) + return out, req.Send() +} + +// DescribeFlowLogsWithContext is the same as DescribeFlowLogs with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeFlowLogs for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeFlowLogsWithContext(ctx aws.Context, input *DescribeFlowLogsInput, opts ...request.Option) (*DescribeFlowLogsOutput, error) { + req, out := c.DescribeFlowLogsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeFlowLogsPages iterates over the pages of a DescribeFlowLogs operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeFlowLogs method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeFlowLogs operation. +// pageNum := 0 +// err := client.DescribeFlowLogsPages(params, +// func(page *ec2.DescribeFlowLogsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeFlowLogsPages(input *DescribeFlowLogsInput, fn func(*DescribeFlowLogsOutput, bool) bool) error { + return c.DescribeFlowLogsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeFlowLogsPagesWithContext same as DescribeFlowLogsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeFlowLogsPagesWithContext(ctx aws.Context, input *DescribeFlowLogsInput, fn func(*DescribeFlowLogsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeFlowLogsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeFlowLogsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeFlowLogsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeFpgaImageAttribute = "DescribeFpgaImageAttribute" + +// DescribeFpgaImageAttributeRequest generates a "aws/request.Request" representing the +// client's request for the DescribeFpgaImageAttribute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeFpgaImageAttribute for more information on using the DescribeFpgaImageAttribute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeFpgaImageAttributeRequest method. +// req, resp := client.DescribeFpgaImageAttributeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFpgaImageAttribute +func (c *EC2) DescribeFpgaImageAttributeRequest(input *DescribeFpgaImageAttributeInput) (req *request.Request, output *DescribeFpgaImageAttributeOutput) { + op := &request.Operation{ + Name: opDescribeFpgaImageAttribute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeFpgaImageAttributeInput{} + } + + output = &DescribeFpgaImageAttributeOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeFpgaImageAttribute API operation for Amazon Elastic Compute Cloud. +// +// Describes the specified attribute of the specified Amazon FPGA Image (AFI). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeFpgaImageAttribute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFpgaImageAttribute +func (c *EC2) DescribeFpgaImageAttribute(input *DescribeFpgaImageAttributeInput) (*DescribeFpgaImageAttributeOutput, error) { + req, out := c.DescribeFpgaImageAttributeRequest(input) + return out, req.Send() +} + +// DescribeFpgaImageAttributeWithContext is the same as DescribeFpgaImageAttribute with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeFpgaImageAttribute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeFpgaImageAttributeWithContext(ctx aws.Context, input *DescribeFpgaImageAttributeInput, opts ...request.Option) (*DescribeFpgaImageAttributeOutput, error) { + req, out := c.DescribeFpgaImageAttributeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeFpgaImages = "DescribeFpgaImages" + +// DescribeFpgaImagesRequest generates a "aws/request.Request" representing the +// client's request for the DescribeFpgaImages operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeFpgaImages for more information on using the DescribeFpgaImages +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeFpgaImagesRequest method. +// req, resp := client.DescribeFpgaImagesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFpgaImages +func (c *EC2) DescribeFpgaImagesRequest(input *DescribeFpgaImagesInput) (req *request.Request, output *DescribeFpgaImagesOutput) { + op := &request.Operation{ + Name: opDescribeFpgaImages, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeFpgaImagesInput{} + } + + output = &DescribeFpgaImagesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeFpgaImages API operation for Amazon Elastic Compute Cloud. +// +// Describes the Amazon FPGA Images (AFIs) available to you. These include public +// AFIs, private AFIs that you own, and AFIs owned by other AWS accounts for +// which you have load permissions. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeFpgaImages for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeFpgaImages +func (c *EC2) DescribeFpgaImages(input *DescribeFpgaImagesInput) (*DescribeFpgaImagesOutput, error) { + req, out := c.DescribeFpgaImagesRequest(input) + return out, req.Send() +} + +// DescribeFpgaImagesWithContext is the same as DescribeFpgaImages with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeFpgaImages for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeFpgaImagesWithContext(ctx aws.Context, input *DescribeFpgaImagesInput, opts ...request.Option) (*DescribeFpgaImagesOutput, error) { + req, out := c.DescribeFpgaImagesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeFpgaImagesPages iterates over the pages of a DescribeFpgaImages operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeFpgaImages method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeFpgaImages operation. +// pageNum := 0 +// err := client.DescribeFpgaImagesPages(params, +// func(page *ec2.DescribeFpgaImagesOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeFpgaImagesPages(input *DescribeFpgaImagesInput, fn func(*DescribeFpgaImagesOutput, bool) bool) error { + return c.DescribeFpgaImagesPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeFpgaImagesPagesWithContext same as DescribeFpgaImagesPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeFpgaImagesPagesWithContext(ctx aws.Context, input *DescribeFpgaImagesInput, fn func(*DescribeFpgaImagesOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeFpgaImagesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeFpgaImagesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeFpgaImagesOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeHostReservationOfferings = "DescribeHostReservationOfferings" + +// DescribeHostReservationOfferingsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeHostReservationOfferings operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeHostReservationOfferings for more information on using the DescribeHostReservationOfferings +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeHostReservationOfferingsRequest method. +// req, resp := client.DescribeHostReservationOfferingsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeHostReservationOfferings +func (c *EC2) DescribeHostReservationOfferingsRequest(input *DescribeHostReservationOfferingsInput) (req *request.Request, output *DescribeHostReservationOfferingsOutput) { + op := &request.Operation{ + Name: opDescribeHostReservationOfferings, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeHostReservationOfferingsInput{} + } + + output = &DescribeHostReservationOfferingsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeHostReservationOfferings API operation for Amazon Elastic Compute Cloud. +// +// Describes the Dedicated Host reservations that are available to purchase. +// +// The results describe all the Dedicated Host reservation offerings, including +// offerings that may not match the instance family and Region of your Dedicated +// Hosts. When purchasing an offering, ensure that the instance family and Region +// of the offering matches that of the Dedicated Hosts with which it is to be +// associated. For more information about supported instance types, see Dedicated +// Hosts Overview (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-hosts-overview.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeHostReservationOfferings for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeHostReservationOfferings +func (c *EC2) DescribeHostReservationOfferings(input *DescribeHostReservationOfferingsInput) (*DescribeHostReservationOfferingsOutput, error) { + req, out := c.DescribeHostReservationOfferingsRequest(input) + return out, req.Send() +} + +// DescribeHostReservationOfferingsWithContext is the same as DescribeHostReservationOfferings with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeHostReservationOfferings for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeHostReservationOfferingsWithContext(ctx aws.Context, input *DescribeHostReservationOfferingsInput, opts ...request.Option) (*DescribeHostReservationOfferingsOutput, error) { + req, out := c.DescribeHostReservationOfferingsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeHostReservationOfferingsPages iterates over the pages of a DescribeHostReservationOfferings operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeHostReservationOfferings method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeHostReservationOfferings operation. +// pageNum := 0 +// err := client.DescribeHostReservationOfferingsPages(params, +// func(page *ec2.DescribeHostReservationOfferingsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeHostReservationOfferingsPages(input *DescribeHostReservationOfferingsInput, fn func(*DescribeHostReservationOfferingsOutput, bool) bool) error { + return c.DescribeHostReservationOfferingsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeHostReservationOfferingsPagesWithContext same as DescribeHostReservationOfferingsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeHostReservationOfferingsPagesWithContext(ctx aws.Context, input *DescribeHostReservationOfferingsInput, fn func(*DescribeHostReservationOfferingsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeHostReservationOfferingsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeHostReservationOfferingsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeHostReservationOfferingsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeHostReservations = "DescribeHostReservations" + +// DescribeHostReservationsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeHostReservations operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeHostReservations for more information on using the DescribeHostReservations +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeHostReservationsRequest method. +// req, resp := client.DescribeHostReservationsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeHostReservations +func (c *EC2) DescribeHostReservationsRequest(input *DescribeHostReservationsInput) (req *request.Request, output *DescribeHostReservationsOutput) { + op := &request.Operation{ + Name: opDescribeHostReservations, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeHostReservationsInput{} + } + + output = &DescribeHostReservationsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeHostReservations API operation for Amazon Elastic Compute Cloud. +// +// Describes reservations that are associated with Dedicated Hosts in your account. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeHostReservations for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeHostReservations +func (c *EC2) DescribeHostReservations(input *DescribeHostReservationsInput) (*DescribeHostReservationsOutput, error) { + req, out := c.DescribeHostReservationsRequest(input) + return out, req.Send() +} + +// DescribeHostReservationsWithContext is the same as DescribeHostReservations with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeHostReservations for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeHostReservationsWithContext(ctx aws.Context, input *DescribeHostReservationsInput, opts ...request.Option) (*DescribeHostReservationsOutput, error) { + req, out := c.DescribeHostReservationsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeHostReservationsPages iterates over the pages of a DescribeHostReservations operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeHostReservations method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeHostReservations operation. +// pageNum := 0 +// err := client.DescribeHostReservationsPages(params, +// func(page *ec2.DescribeHostReservationsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeHostReservationsPages(input *DescribeHostReservationsInput, fn func(*DescribeHostReservationsOutput, bool) bool) error { + return c.DescribeHostReservationsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeHostReservationsPagesWithContext same as DescribeHostReservationsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeHostReservationsPagesWithContext(ctx aws.Context, input *DescribeHostReservationsInput, fn func(*DescribeHostReservationsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeHostReservationsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeHostReservationsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeHostReservationsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeHosts = "DescribeHosts" + +// DescribeHostsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeHosts operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeHosts for more information on using the DescribeHosts +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeHostsRequest method. +// req, resp := client.DescribeHostsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeHosts +func (c *EC2) DescribeHostsRequest(input *DescribeHostsInput) (req *request.Request, output *DescribeHostsOutput) { + op := &request.Operation{ + Name: opDescribeHosts, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeHostsInput{} + } + + output = &DescribeHostsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeHosts API operation for Amazon Elastic Compute Cloud. +// +// Describes the specified Dedicated Hosts or all your Dedicated Hosts. +// +// The results describe only the Dedicated Hosts in the Region you're currently +// using. All listed instances consume capacity on your Dedicated Host. Dedicated +// Hosts that have recently been released are listed with the state released. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeHosts for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeHosts +func (c *EC2) DescribeHosts(input *DescribeHostsInput) (*DescribeHostsOutput, error) { + req, out := c.DescribeHostsRequest(input) + return out, req.Send() +} + +// DescribeHostsWithContext is the same as DescribeHosts with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeHosts for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeHostsWithContext(ctx aws.Context, input *DescribeHostsInput, opts ...request.Option) (*DescribeHostsOutput, error) { + req, out := c.DescribeHostsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeHostsPages iterates over the pages of a DescribeHosts operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeHosts method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeHosts operation. +// pageNum := 0 +// err := client.DescribeHostsPages(params, +// func(page *ec2.DescribeHostsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeHostsPages(input *DescribeHostsInput, fn func(*DescribeHostsOutput, bool) bool) error { + return c.DescribeHostsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeHostsPagesWithContext same as DescribeHostsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeHostsPagesWithContext(ctx aws.Context, input *DescribeHostsInput, fn func(*DescribeHostsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeHostsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeHostsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeHostsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeIamInstanceProfileAssociations = "DescribeIamInstanceProfileAssociations" + +// DescribeIamInstanceProfileAssociationsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeIamInstanceProfileAssociations operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeIamInstanceProfileAssociations for more information on using the DescribeIamInstanceProfileAssociations +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeIamInstanceProfileAssociationsRequest method. +// req, resp := client.DescribeIamInstanceProfileAssociationsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeIamInstanceProfileAssociations +func (c *EC2) DescribeIamInstanceProfileAssociationsRequest(input *DescribeIamInstanceProfileAssociationsInput) (req *request.Request, output *DescribeIamInstanceProfileAssociationsOutput) { + op := &request.Operation{ + Name: opDescribeIamInstanceProfileAssociations, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeIamInstanceProfileAssociationsInput{} + } + + output = &DescribeIamInstanceProfileAssociationsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeIamInstanceProfileAssociations API operation for Amazon Elastic Compute Cloud. +// +// Describes your IAM instance profile associations. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeIamInstanceProfileAssociations for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeIamInstanceProfileAssociations +func (c *EC2) DescribeIamInstanceProfileAssociations(input *DescribeIamInstanceProfileAssociationsInput) (*DescribeIamInstanceProfileAssociationsOutput, error) { + req, out := c.DescribeIamInstanceProfileAssociationsRequest(input) + return out, req.Send() +} + +// DescribeIamInstanceProfileAssociationsWithContext is the same as DescribeIamInstanceProfileAssociations with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeIamInstanceProfileAssociations for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeIamInstanceProfileAssociationsWithContext(ctx aws.Context, input *DescribeIamInstanceProfileAssociationsInput, opts ...request.Option) (*DescribeIamInstanceProfileAssociationsOutput, error) { + req, out := c.DescribeIamInstanceProfileAssociationsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeIamInstanceProfileAssociationsPages iterates over the pages of a DescribeIamInstanceProfileAssociations operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeIamInstanceProfileAssociations method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeIamInstanceProfileAssociations operation. +// pageNum := 0 +// err := client.DescribeIamInstanceProfileAssociationsPages(params, +// func(page *ec2.DescribeIamInstanceProfileAssociationsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeIamInstanceProfileAssociationsPages(input *DescribeIamInstanceProfileAssociationsInput, fn func(*DescribeIamInstanceProfileAssociationsOutput, bool) bool) error { + return c.DescribeIamInstanceProfileAssociationsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeIamInstanceProfileAssociationsPagesWithContext same as DescribeIamInstanceProfileAssociationsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeIamInstanceProfileAssociationsPagesWithContext(ctx aws.Context, input *DescribeIamInstanceProfileAssociationsInput, fn func(*DescribeIamInstanceProfileAssociationsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeIamInstanceProfileAssociationsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeIamInstanceProfileAssociationsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeIamInstanceProfileAssociationsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeIdFormat = "DescribeIdFormat" + +// DescribeIdFormatRequest generates a "aws/request.Request" representing the +// client's request for the DescribeIdFormat operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeIdFormat for more information on using the DescribeIdFormat +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeIdFormatRequest method. +// req, resp := client.DescribeIdFormatRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeIdFormat +func (c *EC2) DescribeIdFormatRequest(input *DescribeIdFormatInput) (req *request.Request, output *DescribeIdFormatOutput) { + op := &request.Operation{ + Name: opDescribeIdFormat, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeIdFormatInput{} + } + + output = &DescribeIdFormatOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeIdFormat API operation for Amazon Elastic Compute Cloud. +// +// Describes the ID format settings for your resources on a per-Region basis, +// for example, to view which resource types are enabled for longer IDs. This +// request only returns information about resource types whose ID formats can +// be modified; it does not return information about other resource types. +// +// The following resource types support longer IDs: bundle | conversion-task +// | customer-gateway | dhcp-options | elastic-ip-allocation | elastic-ip-association +// | export-task | flow-log | image | import-task | instance | internet-gateway +// | network-acl | network-acl-association | network-interface | network-interface-attachment +// | prefix-list | reservation | route-table | route-table-association | security-group +// | snapshot | subnet | subnet-cidr-block-association | volume | vpc | vpc-cidr-block-association +// | vpc-endpoint | vpc-peering-connection | vpn-connection | vpn-gateway. +// +// These settings apply to the IAM user who makes the request; they do not apply +// to the entire AWS account. By default, an IAM user defaults to the same settings +// as the root user, unless they explicitly override the settings by running +// the ModifyIdFormat command. Resources created with longer IDs are visible +// to all IAM users, regardless of these settings and provided that they have +// permission to use the relevant Describe command for the resource type. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeIdFormat for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeIdFormat +func (c *EC2) DescribeIdFormat(input *DescribeIdFormatInput) (*DescribeIdFormatOutput, error) { + req, out := c.DescribeIdFormatRequest(input) + return out, req.Send() +} + +// DescribeIdFormatWithContext is the same as DescribeIdFormat with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeIdFormat for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeIdFormatWithContext(ctx aws.Context, input *DescribeIdFormatInput, opts ...request.Option) (*DescribeIdFormatOutput, error) { + req, out := c.DescribeIdFormatRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeIdentityIdFormat = "DescribeIdentityIdFormat" + +// DescribeIdentityIdFormatRequest generates a "aws/request.Request" representing the +// client's request for the DescribeIdentityIdFormat operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeIdentityIdFormat for more information on using the DescribeIdentityIdFormat +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeIdentityIdFormatRequest method. +// req, resp := client.DescribeIdentityIdFormatRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeIdentityIdFormat +func (c *EC2) DescribeIdentityIdFormatRequest(input *DescribeIdentityIdFormatInput) (req *request.Request, output *DescribeIdentityIdFormatOutput) { + op := &request.Operation{ + Name: opDescribeIdentityIdFormat, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeIdentityIdFormatInput{} + } + + output = &DescribeIdentityIdFormatOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeIdentityIdFormat API operation for Amazon Elastic Compute Cloud. +// +// Describes the ID format settings for resources for the specified IAM user, +// IAM role, or root user. For example, you can view the resource types that +// are enabled for longer IDs. This request only returns information about resource +// types whose ID formats can be modified; it does not return information about +// other resource types. For more information, see Resource IDs (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/resource-ids.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// The following resource types support longer IDs: bundle | conversion-task +// | customer-gateway | dhcp-options | elastic-ip-allocation | elastic-ip-association +// | export-task | flow-log | image | import-task | instance | internet-gateway +// | network-acl | network-acl-association | network-interface | network-interface-attachment +// | prefix-list | reservation | route-table | route-table-association | security-group +// | snapshot | subnet | subnet-cidr-block-association | volume | vpc | vpc-cidr-block-association +// | vpc-endpoint | vpc-peering-connection | vpn-connection | vpn-gateway. +// +// These settings apply to the principal specified in the request. They do not +// apply to the principal that makes the request. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeIdentityIdFormat for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeIdentityIdFormat +func (c *EC2) DescribeIdentityIdFormat(input *DescribeIdentityIdFormatInput) (*DescribeIdentityIdFormatOutput, error) { + req, out := c.DescribeIdentityIdFormatRequest(input) + return out, req.Send() +} + +// DescribeIdentityIdFormatWithContext is the same as DescribeIdentityIdFormat with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeIdentityIdFormat for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeIdentityIdFormatWithContext(ctx aws.Context, input *DescribeIdentityIdFormatInput, opts ...request.Option) (*DescribeIdentityIdFormatOutput, error) { + req, out := c.DescribeIdentityIdFormatRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeImageAttribute = "DescribeImageAttribute" + +// DescribeImageAttributeRequest generates a "aws/request.Request" representing the +// client's request for the DescribeImageAttribute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeImageAttribute for more information on using the DescribeImageAttribute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeImageAttributeRequest method. +// req, resp := client.DescribeImageAttributeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImageAttribute +func (c *EC2) DescribeImageAttributeRequest(input *DescribeImageAttributeInput) (req *request.Request, output *DescribeImageAttributeOutput) { + op := &request.Operation{ + Name: opDescribeImageAttribute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeImageAttributeInput{} + } + + output = &DescribeImageAttributeOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeImageAttribute API operation for Amazon Elastic Compute Cloud. +// +// Describes the specified attribute of the specified AMI. You can specify only +// one attribute at a time. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeImageAttribute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImageAttribute +func (c *EC2) DescribeImageAttribute(input *DescribeImageAttributeInput) (*DescribeImageAttributeOutput, error) { + req, out := c.DescribeImageAttributeRequest(input) + return out, req.Send() +} + +// DescribeImageAttributeWithContext is the same as DescribeImageAttribute with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeImageAttribute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeImageAttributeWithContext(ctx aws.Context, input *DescribeImageAttributeInput, opts ...request.Option) (*DescribeImageAttributeOutput, error) { + req, out := c.DescribeImageAttributeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeImages = "DescribeImages" + +// DescribeImagesRequest generates a "aws/request.Request" representing the +// client's request for the DescribeImages operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeImages for more information on using the DescribeImages +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeImagesRequest method. +// req, resp := client.DescribeImagesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImages +func (c *EC2) DescribeImagesRequest(input *DescribeImagesInput) (req *request.Request, output *DescribeImagesOutput) { + op := &request.Operation{ + Name: opDescribeImages, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeImagesInput{} + } + + output = &DescribeImagesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeImages API operation for Amazon Elastic Compute Cloud. +// +// Describes the specified images (AMIs, AKIs, and ARIs) available to you or +// all of the images available to you. +// +// The images available to you include public images, private images that you +// own, and private images owned by other AWS accounts for which you have explicit +// launch permissions. +// +// Recently deregistered images appear in the returned results for a short interval +// and then return empty results. After all instances that reference a deregistered +// AMI are terminated, specifying the ID of the image results in an error indicating +// that the AMI ID cannot be found. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeImages for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImages +func (c *EC2) DescribeImages(input *DescribeImagesInput) (*DescribeImagesOutput, error) { + req, out := c.DescribeImagesRequest(input) + return out, req.Send() +} + +// DescribeImagesWithContext is the same as DescribeImages with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeImages for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeImagesWithContext(ctx aws.Context, input *DescribeImagesInput, opts ...request.Option) (*DescribeImagesOutput, error) { + req, out := c.DescribeImagesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeImportImageTasks = "DescribeImportImageTasks" + +// DescribeImportImageTasksRequest generates a "aws/request.Request" representing the +// client's request for the DescribeImportImageTasks operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeImportImageTasks for more information on using the DescribeImportImageTasks +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeImportImageTasksRequest method. +// req, resp := client.DescribeImportImageTasksRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImportImageTasks +func (c *EC2) DescribeImportImageTasksRequest(input *DescribeImportImageTasksInput) (req *request.Request, output *DescribeImportImageTasksOutput) { + op := &request.Operation{ + Name: opDescribeImportImageTasks, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeImportImageTasksInput{} + } + + output = &DescribeImportImageTasksOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeImportImageTasks API operation for Amazon Elastic Compute Cloud. +// +// Displays details about an import virtual machine or import snapshot tasks +// that are already created. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeImportImageTasks for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImportImageTasks +func (c *EC2) DescribeImportImageTasks(input *DescribeImportImageTasksInput) (*DescribeImportImageTasksOutput, error) { + req, out := c.DescribeImportImageTasksRequest(input) + return out, req.Send() +} + +// DescribeImportImageTasksWithContext is the same as DescribeImportImageTasks with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeImportImageTasks for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeImportImageTasksWithContext(ctx aws.Context, input *DescribeImportImageTasksInput, opts ...request.Option) (*DescribeImportImageTasksOutput, error) { + req, out := c.DescribeImportImageTasksRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeImportImageTasksPages iterates over the pages of a DescribeImportImageTasks operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeImportImageTasks method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeImportImageTasks operation. +// pageNum := 0 +// err := client.DescribeImportImageTasksPages(params, +// func(page *ec2.DescribeImportImageTasksOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeImportImageTasksPages(input *DescribeImportImageTasksInput, fn func(*DescribeImportImageTasksOutput, bool) bool) error { + return c.DescribeImportImageTasksPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeImportImageTasksPagesWithContext same as DescribeImportImageTasksPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeImportImageTasksPagesWithContext(ctx aws.Context, input *DescribeImportImageTasksInput, fn func(*DescribeImportImageTasksOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeImportImageTasksInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeImportImageTasksRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeImportImageTasksOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeImportSnapshotTasks = "DescribeImportSnapshotTasks" + +// DescribeImportSnapshotTasksRequest generates a "aws/request.Request" representing the +// client's request for the DescribeImportSnapshotTasks operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeImportSnapshotTasks for more information on using the DescribeImportSnapshotTasks +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeImportSnapshotTasksRequest method. +// req, resp := client.DescribeImportSnapshotTasksRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImportSnapshotTasks +func (c *EC2) DescribeImportSnapshotTasksRequest(input *DescribeImportSnapshotTasksInput) (req *request.Request, output *DescribeImportSnapshotTasksOutput) { + op := &request.Operation{ + Name: opDescribeImportSnapshotTasks, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeImportSnapshotTasksInput{} + } + + output = &DescribeImportSnapshotTasksOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeImportSnapshotTasks API operation for Amazon Elastic Compute Cloud. +// +// Describes your import snapshot tasks. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeImportSnapshotTasks for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeImportSnapshotTasks +func (c *EC2) DescribeImportSnapshotTasks(input *DescribeImportSnapshotTasksInput) (*DescribeImportSnapshotTasksOutput, error) { + req, out := c.DescribeImportSnapshotTasksRequest(input) + return out, req.Send() +} + +// DescribeImportSnapshotTasksWithContext is the same as DescribeImportSnapshotTasks with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeImportSnapshotTasks for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeImportSnapshotTasksWithContext(ctx aws.Context, input *DescribeImportSnapshotTasksInput, opts ...request.Option) (*DescribeImportSnapshotTasksOutput, error) { + req, out := c.DescribeImportSnapshotTasksRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeImportSnapshotTasksPages iterates over the pages of a DescribeImportSnapshotTasks operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeImportSnapshotTasks method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeImportSnapshotTasks operation. +// pageNum := 0 +// err := client.DescribeImportSnapshotTasksPages(params, +// func(page *ec2.DescribeImportSnapshotTasksOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeImportSnapshotTasksPages(input *DescribeImportSnapshotTasksInput, fn func(*DescribeImportSnapshotTasksOutput, bool) bool) error { + return c.DescribeImportSnapshotTasksPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeImportSnapshotTasksPagesWithContext same as DescribeImportSnapshotTasksPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeImportSnapshotTasksPagesWithContext(ctx aws.Context, input *DescribeImportSnapshotTasksInput, fn func(*DescribeImportSnapshotTasksOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeImportSnapshotTasksInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeImportSnapshotTasksRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeImportSnapshotTasksOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeInstanceAttribute = "DescribeInstanceAttribute" + +// DescribeInstanceAttributeRequest generates a "aws/request.Request" representing the +// client's request for the DescribeInstanceAttribute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeInstanceAttribute for more information on using the DescribeInstanceAttribute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeInstanceAttributeRequest method. +// req, resp := client.DescribeInstanceAttributeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstanceAttribute +func (c *EC2) DescribeInstanceAttributeRequest(input *DescribeInstanceAttributeInput) (req *request.Request, output *DescribeInstanceAttributeOutput) { + op := &request.Operation{ + Name: opDescribeInstanceAttribute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeInstanceAttributeInput{} + } + + output = &DescribeInstanceAttributeOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeInstanceAttribute API operation for Amazon Elastic Compute Cloud. +// +// Describes the specified attribute of the specified instance. You can specify +// only one attribute at a time. Valid attribute values are: instanceType | +// kernel | ramdisk | userData | disableApiTermination | instanceInitiatedShutdownBehavior +// | rootDeviceName | blockDeviceMapping | productCodes | sourceDestCheck | +// groupSet | ebsOptimized | sriovNetSupport +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeInstanceAttribute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstanceAttribute +func (c *EC2) DescribeInstanceAttribute(input *DescribeInstanceAttributeInput) (*DescribeInstanceAttributeOutput, error) { + req, out := c.DescribeInstanceAttributeRequest(input) + return out, req.Send() +} + +// DescribeInstanceAttributeWithContext is the same as DescribeInstanceAttribute with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeInstanceAttribute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeInstanceAttributeWithContext(ctx aws.Context, input *DescribeInstanceAttributeInput, opts ...request.Option) (*DescribeInstanceAttributeOutput, error) { + req, out := c.DescribeInstanceAttributeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeInstanceCreditSpecifications = "DescribeInstanceCreditSpecifications" + +// DescribeInstanceCreditSpecificationsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeInstanceCreditSpecifications operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeInstanceCreditSpecifications for more information on using the DescribeInstanceCreditSpecifications +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeInstanceCreditSpecificationsRequest method. +// req, resp := client.DescribeInstanceCreditSpecificationsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstanceCreditSpecifications +func (c *EC2) DescribeInstanceCreditSpecificationsRequest(input *DescribeInstanceCreditSpecificationsInput) (req *request.Request, output *DescribeInstanceCreditSpecificationsOutput) { + op := &request.Operation{ + Name: opDescribeInstanceCreditSpecifications, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeInstanceCreditSpecificationsInput{} + } + + output = &DescribeInstanceCreditSpecificationsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeInstanceCreditSpecifications API operation for Amazon Elastic Compute Cloud. +// +// Describes the credit option for CPU usage of the specified T2 or T3 instances. +// The credit options are standard and unlimited. +// +// If you do not specify an instance ID, Amazon EC2 returns T2 and T3 instances +// with the unlimited credit option, as well as instances that were previously +// configured as T2 or T3 with the unlimited credit option. For example, if +// you resize a T2 instance, while it is configured as unlimited, to an M4 instance, +// Amazon EC2 returns the M4 instance. +// +// If you specify one or more instance IDs, Amazon EC2 returns the credit option +// (standard or unlimited) of those instances. If you specify an instance ID +// that is not valid, such as an instance that is not a T2 or T3 instance, an +// error is returned. +// +// Recently terminated instances might appear in the returned results. This +// interval is usually less than one hour. +// +// If an Availability Zone is experiencing a service disruption and you specify +// instance IDs in the affected zone, or do not specify any instance IDs at +// all, the call fails. If you specify only instance IDs in an unaffected zone, +// the call works normally. +// +// For more information, see Burstable Performance Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeInstanceCreditSpecifications for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstanceCreditSpecifications +func (c *EC2) DescribeInstanceCreditSpecifications(input *DescribeInstanceCreditSpecificationsInput) (*DescribeInstanceCreditSpecificationsOutput, error) { + req, out := c.DescribeInstanceCreditSpecificationsRequest(input) + return out, req.Send() +} + +// DescribeInstanceCreditSpecificationsWithContext is the same as DescribeInstanceCreditSpecifications with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeInstanceCreditSpecifications for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeInstanceCreditSpecificationsWithContext(ctx aws.Context, input *DescribeInstanceCreditSpecificationsInput, opts ...request.Option) (*DescribeInstanceCreditSpecificationsOutput, error) { + req, out := c.DescribeInstanceCreditSpecificationsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeInstanceCreditSpecificationsPages iterates over the pages of a DescribeInstanceCreditSpecifications operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeInstanceCreditSpecifications method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeInstanceCreditSpecifications operation. +// pageNum := 0 +// err := client.DescribeInstanceCreditSpecificationsPages(params, +// func(page *ec2.DescribeInstanceCreditSpecificationsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeInstanceCreditSpecificationsPages(input *DescribeInstanceCreditSpecificationsInput, fn func(*DescribeInstanceCreditSpecificationsOutput, bool) bool) error { + return c.DescribeInstanceCreditSpecificationsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeInstanceCreditSpecificationsPagesWithContext same as DescribeInstanceCreditSpecificationsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeInstanceCreditSpecificationsPagesWithContext(ctx aws.Context, input *DescribeInstanceCreditSpecificationsInput, fn func(*DescribeInstanceCreditSpecificationsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeInstanceCreditSpecificationsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeInstanceCreditSpecificationsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeInstanceCreditSpecificationsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeInstanceStatus = "DescribeInstanceStatus" + +// DescribeInstanceStatusRequest generates a "aws/request.Request" representing the +// client's request for the DescribeInstanceStatus operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeInstanceStatus for more information on using the DescribeInstanceStatus +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeInstanceStatusRequest method. +// req, resp := client.DescribeInstanceStatusRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstanceStatus +func (c *EC2) DescribeInstanceStatusRequest(input *DescribeInstanceStatusInput) (req *request.Request, output *DescribeInstanceStatusOutput) { + op := &request.Operation{ + Name: opDescribeInstanceStatus, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeInstanceStatusInput{} + } + + output = &DescribeInstanceStatusOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeInstanceStatus API operation for Amazon Elastic Compute Cloud. +// +// Describes the status of the specified instances or all of your instances. +// By default, only running instances are described, unless you specifically +// indicate to return the status of all instances. +// +// Instance status includes the following components: +// +// * Status checks - Amazon EC2 performs status checks on running EC2 instances +// to identify hardware and software issues. For more information, see Status +// Checks for Your Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-system-instance-status-check.html) +// and Troubleshooting Instances with Failed Status Checks (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstances.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// * Scheduled events - Amazon EC2 can schedule events (such as reboot, stop, +// or terminate) for your instances related to hardware issues, software +// updates, or system maintenance. For more information, see Scheduled Events +// for Your Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-instances-status-check_sched.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// * Instance state - You can manage your instances from the moment you launch +// them through their termination. For more information, see Instance Lifecycle +// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeInstanceStatus for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstanceStatus +func (c *EC2) DescribeInstanceStatus(input *DescribeInstanceStatusInput) (*DescribeInstanceStatusOutput, error) { + req, out := c.DescribeInstanceStatusRequest(input) + return out, req.Send() +} + +// DescribeInstanceStatusWithContext is the same as DescribeInstanceStatus with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeInstanceStatus for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeInstanceStatusWithContext(ctx aws.Context, input *DescribeInstanceStatusInput, opts ...request.Option) (*DescribeInstanceStatusOutput, error) { + req, out := c.DescribeInstanceStatusRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeInstanceStatusPages iterates over the pages of a DescribeInstanceStatus operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeInstanceStatus method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeInstanceStatus operation. +// pageNum := 0 +// err := client.DescribeInstanceStatusPages(params, +// func(page *ec2.DescribeInstanceStatusOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeInstanceStatusPages(input *DescribeInstanceStatusInput, fn func(*DescribeInstanceStatusOutput, bool) bool) error { + return c.DescribeInstanceStatusPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeInstanceStatusPagesWithContext same as DescribeInstanceStatusPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeInstanceStatusPagesWithContext(ctx aws.Context, input *DescribeInstanceStatusInput, fn func(*DescribeInstanceStatusOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeInstanceStatusInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeInstanceStatusRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeInstanceStatusOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeInstances = "DescribeInstances" + +// DescribeInstancesRequest generates a "aws/request.Request" representing the +// client's request for the DescribeInstances operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeInstances for more information on using the DescribeInstances +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeInstancesRequest method. +// req, resp := client.DescribeInstancesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstances +func (c *EC2) DescribeInstancesRequest(input *DescribeInstancesInput) (req *request.Request, output *DescribeInstancesOutput) { + op := &request.Operation{ + Name: opDescribeInstances, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeInstancesInput{} + } + + output = &DescribeInstancesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeInstances API operation for Amazon Elastic Compute Cloud. +// +// Describes the specified instances or all of AWS account's instances. +// +// If you specify one or more instance IDs, Amazon EC2 returns information for +// those instances. If you do not specify instance IDs, Amazon EC2 returns information +// for all relevant instances. If you specify an instance ID that is not valid, +// an error is returned. If you specify an instance that you do not own, it +// is not included in the returned results. +// +// Recently terminated instances might appear in the returned results. This +// interval is usually less than one hour. +// +// If you describe instances in the rare case where an Availability Zone is +// experiencing a service disruption and you specify instance IDs that are in +// the affected zone, or do not specify any instance IDs at all, the call fails. +// If you describe instances and specify only instance IDs that are in an unaffected +// zone, the call works normally. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeInstances for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInstances +func (c *EC2) DescribeInstances(input *DescribeInstancesInput) (*DescribeInstancesOutput, error) { + req, out := c.DescribeInstancesRequest(input) + return out, req.Send() +} + +// DescribeInstancesWithContext is the same as DescribeInstances with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeInstances for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeInstancesWithContext(ctx aws.Context, input *DescribeInstancesInput, opts ...request.Option) (*DescribeInstancesOutput, error) { + req, out := c.DescribeInstancesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeInstancesPages iterates over the pages of a DescribeInstances operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeInstances method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeInstances operation. +// pageNum := 0 +// err := client.DescribeInstancesPages(params, +// func(page *ec2.DescribeInstancesOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeInstancesPages(input *DescribeInstancesInput, fn func(*DescribeInstancesOutput, bool) bool) error { + return c.DescribeInstancesPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeInstancesPagesWithContext same as DescribeInstancesPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeInstancesPagesWithContext(ctx aws.Context, input *DescribeInstancesInput, fn func(*DescribeInstancesOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeInstancesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeInstancesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeInstancesOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeInternetGateways = "DescribeInternetGateways" + +// DescribeInternetGatewaysRequest generates a "aws/request.Request" representing the +// client's request for the DescribeInternetGateways operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeInternetGateways for more information on using the DescribeInternetGateways +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeInternetGatewaysRequest method. +// req, resp := client.DescribeInternetGatewaysRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInternetGateways +func (c *EC2) DescribeInternetGatewaysRequest(input *DescribeInternetGatewaysInput) (req *request.Request, output *DescribeInternetGatewaysOutput) { + op := &request.Operation{ + Name: opDescribeInternetGateways, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeInternetGatewaysInput{} + } + + output = &DescribeInternetGatewaysOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeInternetGateways API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more of your internet gateways. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeInternetGateways for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeInternetGateways +func (c *EC2) DescribeInternetGateways(input *DescribeInternetGatewaysInput) (*DescribeInternetGatewaysOutput, error) { + req, out := c.DescribeInternetGatewaysRequest(input) + return out, req.Send() +} + +// DescribeInternetGatewaysWithContext is the same as DescribeInternetGateways with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeInternetGateways for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeInternetGatewaysWithContext(ctx aws.Context, input *DescribeInternetGatewaysInput, opts ...request.Option) (*DescribeInternetGatewaysOutput, error) { + req, out := c.DescribeInternetGatewaysRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeInternetGatewaysPages iterates over the pages of a DescribeInternetGateways operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeInternetGateways method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeInternetGateways operation. +// pageNum := 0 +// err := client.DescribeInternetGatewaysPages(params, +// func(page *ec2.DescribeInternetGatewaysOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeInternetGatewaysPages(input *DescribeInternetGatewaysInput, fn func(*DescribeInternetGatewaysOutput, bool) bool) error { + return c.DescribeInternetGatewaysPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeInternetGatewaysPagesWithContext same as DescribeInternetGatewaysPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeInternetGatewaysPagesWithContext(ctx aws.Context, input *DescribeInternetGatewaysInput, fn func(*DescribeInternetGatewaysOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeInternetGatewaysInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeInternetGatewaysRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeInternetGatewaysOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeKeyPairs = "DescribeKeyPairs" + +// DescribeKeyPairsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeKeyPairs operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeKeyPairs for more information on using the DescribeKeyPairs +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeKeyPairsRequest method. +// req, resp := client.DescribeKeyPairsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeKeyPairs +func (c *EC2) DescribeKeyPairsRequest(input *DescribeKeyPairsInput) (req *request.Request, output *DescribeKeyPairsOutput) { + op := &request.Operation{ + Name: opDescribeKeyPairs, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeKeyPairsInput{} + } + + output = &DescribeKeyPairsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeKeyPairs API operation for Amazon Elastic Compute Cloud. +// +// Describes the specified key pairs or all of your key pairs. +// +// For more information about key pairs, see Key Pairs (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeKeyPairs for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeKeyPairs +func (c *EC2) DescribeKeyPairs(input *DescribeKeyPairsInput) (*DescribeKeyPairsOutput, error) { + req, out := c.DescribeKeyPairsRequest(input) + return out, req.Send() +} + +// DescribeKeyPairsWithContext is the same as DescribeKeyPairs with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeKeyPairs for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeKeyPairsWithContext(ctx aws.Context, input *DescribeKeyPairsInput, opts ...request.Option) (*DescribeKeyPairsOutput, error) { + req, out := c.DescribeKeyPairsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeLaunchTemplateVersions = "DescribeLaunchTemplateVersions" + +// DescribeLaunchTemplateVersionsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeLaunchTemplateVersions operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeLaunchTemplateVersions for more information on using the DescribeLaunchTemplateVersions +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeLaunchTemplateVersionsRequest method. +// req, resp := client.DescribeLaunchTemplateVersionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeLaunchTemplateVersions +func (c *EC2) DescribeLaunchTemplateVersionsRequest(input *DescribeLaunchTemplateVersionsInput) (req *request.Request, output *DescribeLaunchTemplateVersionsOutput) { + op := &request.Operation{ + Name: opDescribeLaunchTemplateVersions, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeLaunchTemplateVersionsInput{} + } + + output = &DescribeLaunchTemplateVersionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeLaunchTemplateVersions API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more versions of a specified launch template. You can describe +// all versions, individual versions, or a range of versions. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeLaunchTemplateVersions for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeLaunchTemplateVersions +func (c *EC2) DescribeLaunchTemplateVersions(input *DescribeLaunchTemplateVersionsInput) (*DescribeLaunchTemplateVersionsOutput, error) { + req, out := c.DescribeLaunchTemplateVersionsRequest(input) + return out, req.Send() +} + +// DescribeLaunchTemplateVersionsWithContext is the same as DescribeLaunchTemplateVersions with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeLaunchTemplateVersions for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeLaunchTemplateVersionsWithContext(ctx aws.Context, input *DescribeLaunchTemplateVersionsInput, opts ...request.Option) (*DescribeLaunchTemplateVersionsOutput, error) { + req, out := c.DescribeLaunchTemplateVersionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeLaunchTemplateVersionsPages iterates over the pages of a DescribeLaunchTemplateVersions operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeLaunchTemplateVersions method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeLaunchTemplateVersions operation. +// pageNum := 0 +// err := client.DescribeLaunchTemplateVersionsPages(params, +// func(page *ec2.DescribeLaunchTemplateVersionsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeLaunchTemplateVersionsPages(input *DescribeLaunchTemplateVersionsInput, fn func(*DescribeLaunchTemplateVersionsOutput, bool) bool) error { + return c.DescribeLaunchTemplateVersionsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeLaunchTemplateVersionsPagesWithContext same as DescribeLaunchTemplateVersionsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeLaunchTemplateVersionsPagesWithContext(ctx aws.Context, input *DescribeLaunchTemplateVersionsInput, fn func(*DescribeLaunchTemplateVersionsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeLaunchTemplateVersionsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeLaunchTemplateVersionsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeLaunchTemplateVersionsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeLaunchTemplates = "DescribeLaunchTemplates" + +// DescribeLaunchTemplatesRequest generates a "aws/request.Request" representing the +// client's request for the DescribeLaunchTemplates operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeLaunchTemplates for more information on using the DescribeLaunchTemplates +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeLaunchTemplatesRequest method. +// req, resp := client.DescribeLaunchTemplatesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeLaunchTemplates +func (c *EC2) DescribeLaunchTemplatesRequest(input *DescribeLaunchTemplatesInput) (req *request.Request, output *DescribeLaunchTemplatesOutput) { + op := &request.Operation{ + Name: opDescribeLaunchTemplates, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeLaunchTemplatesInput{} + } + + output = &DescribeLaunchTemplatesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeLaunchTemplates API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more launch templates. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeLaunchTemplates for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeLaunchTemplates +func (c *EC2) DescribeLaunchTemplates(input *DescribeLaunchTemplatesInput) (*DescribeLaunchTemplatesOutput, error) { + req, out := c.DescribeLaunchTemplatesRequest(input) + return out, req.Send() +} + +// DescribeLaunchTemplatesWithContext is the same as DescribeLaunchTemplates with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeLaunchTemplates for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeLaunchTemplatesWithContext(ctx aws.Context, input *DescribeLaunchTemplatesInput, opts ...request.Option) (*DescribeLaunchTemplatesOutput, error) { + req, out := c.DescribeLaunchTemplatesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeLaunchTemplatesPages iterates over the pages of a DescribeLaunchTemplates operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeLaunchTemplates method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeLaunchTemplates operation. +// pageNum := 0 +// err := client.DescribeLaunchTemplatesPages(params, +// func(page *ec2.DescribeLaunchTemplatesOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeLaunchTemplatesPages(input *DescribeLaunchTemplatesInput, fn func(*DescribeLaunchTemplatesOutput, bool) bool) error { + return c.DescribeLaunchTemplatesPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeLaunchTemplatesPagesWithContext same as DescribeLaunchTemplatesPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeLaunchTemplatesPagesWithContext(ctx aws.Context, input *DescribeLaunchTemplatesInput, fn func(*DescribeLaunchTemplatesOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeLaunchTemplatesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeLaunchTemplatesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeLaunchTemplatesOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeMovingAddresses = "DescribeMovingAddresses" + +// DescribeMovingAddressesRequest generates a "aws/request.Request" representing the +// client's request for the DescribeMovingAddresses operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeMovingAddresses for more information on using the DescribeMovingAddresses +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeMovingAddressesRequest method. +// req, resp := client.DescribeMovingAddressesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeMovingAddresses +func (c *EC2) DescribeMovingAddressesRequest(input *DescribeMovingAddressesInput) (req *request.Request, output *DescribeMovingAddressesOutput) { + op := &request.Operation{ + Name: opDescribeMovingAddresses, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeMovingAddressesInput{} + } + + output = &DescribeMovingAddressesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeMovingAddresses API operation for Amazon Elastic Compute Cloud. +// +// Describes your Elastic IP addresses that are being moved to the EC2-VPC platform, +// or that are being restored to the EC2-Classic platform. This request does +// not return information about any other Elastic IP addresses in your account. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeMovingAddresses for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeMovingAddresses +func (c *EC2) DescribeMovingAddresses(input *DescribeMovingAddressesInput) (*DescribeMovingAddressesOutput, error) { + req, out := c.DescribeMovingAddressesRequest(input) + return out, req.Send() +} + +// DescribeMovingAddressesWithContext is the same as DescribeMovingAddresses with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeMovingAddresses for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeMovingAddressesWithContext(ctx aws.Context, input *DescribeMovingAddressesInput, opts ...request.Option) (*DescribeMovingAddressesOutput, error) { + req, out := c.DescribeMovingAddressesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeMovingAddressesPages iterates over the pages of a DescribeMovingAddresses operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeMovingAddresses method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeMovingAddresses operation. +// pageNum := 0 +// err := client.DescribeMovingAddressesPages(params, +// func(page *ec2.DescribeMovingAddressesOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeMovingAddressesPages(input *DescribeMovingAddressesInput, fn func(*DescribeMovingAddressesOutput, bool) bool) error { + return c.DescribeMovingAddressesPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeMovingAddressesPagesWithContext same as DescribeMovingAddressesPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeMovingAddressesPagesWithContext(ctx aws.Context, input *DescribeMovingAddressesInput, fn func(*DescribeMovingAddressesOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeMovingAddressesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeMovingAddressesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeMovingAddressesOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeNatGateways = "DescribeNatGateways" + +// DescribeNatGatewaysRequest generates a "aws/request.Request" representing the +// client's request for the DescribeNatGateways operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeNatGateways for more information on using the DescribeNatGateways +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeNatGatewaysRequest method. +// req, resp := client.DescribeNatGatewaysRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNatGateways +func (c *EC2) DescribeNatGatewaysRequest(input *DescribeNatGatewaysInput) (req *request.Request, output *DescribeNatGatewaysOutput) { + op := &request.Operation{ + Name: opDescribeNatGateways, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeNatGatewaysInput{} + } + + output = &DescribeNatGatewaysOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeNatGateways API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more of your NAT gateways. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeNatGateways for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNatGateways +func (c *EC2) DescribeNatGateways(input *DescribeNatGatewaysInput) (*DescribeNatGatewaysOutput, error) { + req, out := c.DescribeNatGatewaysRequest(input) + return out, req.Send() +} + +// DescribeNatGatewaysWithContext is the same as DescribeNatGateways with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeNatGateways for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeNatGatewaysWithContext(ctx aws.Context, input *DescribeNatGatewaysInput, opts ...request.Option) (*DescribeNatGatewaysOutput, error) { + req, out := c.DescribeNatGatewaysRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeNatGatewaysPages iterates over the pages of a DescribeNatGateways operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeNatGateways method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeNatGateways operation. +// pageNum := 0 +// err := client.DescribeNatGatewaysPages(params, +// func(page *ec2.DescribeNatGatewaysOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeNatGatewaysPages(input *DescribeNatGatewaysInput, fn func(*DescribeNatGatewaysOutput, bool) bool) error { + return c.DescribeNatGatewaysPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeNatGatewaysPagesWithContext same as DescribeNatGatewaysPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeNatGatewaysPagesWithContext(ctx aws.Context, input *DescribeNatGatewaysInput, fn func(*DescribeNatGatewaysOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeNatGatewaysInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeNatGatewaysRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeNatGatewaysOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeNetworkAcls = "DescribeNetworkAcls" + +// DescribeNetworkAclsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeNetworkAcls operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeNetworkAcls for more information on using the DescribeNetworkAcls +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeNetworkAclsRequest method. +// req, resp := client.DescribeNetworkAclsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkAcls +func (c *EC2) DescribeNetworkAclsRequest(input *DescribeNetworkAclsInput) (req *request.Request, output *DescribeNetworkAclsOutput) { + op := &request.Operation{ + Name: opDescribeNetworkAcls, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeNetworkAclsInput{} + } + + output = &DescribeNetworkAclsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeNetworkAcls API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more of your network ACLs. +// +// For more information, see Network ACLs (https://docs.aws.amazon.com/vpc/latest/userguide/VPC_ACLs.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeNetworkAcls for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkAcls +func (c *EC2) DescribeNetworkAcls(input *DescribeNetworkAclsInput) (*DescribeNetworkAclsOutput, error) { + req, out := c.DescribeNetworkAclsRequest(input) + return out, req.Send() +} + +// DescribeNetworkAclsWithContext is the same as DescribeNetworkAcls with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeNetworkAcls for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeNetworkAclsWithContext(ctx aws.Context, input *DescribeNetworkAclsInput, opts ...request.Option) (*DescribeNetworkAclsOutput, error) { + req, out := c.DescribeNetworkAclsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeNetworkAclsPages iterates over the pages of a DescribeNetworkAcls operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeNetworkAcls method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeNetworkAcls operation. +// pageNum := 0 +// err := client.DescribeNetworkAclsPages(params, +// func(page *ec2.DescribeNetworkAclsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeNetworkAclsPages(input *DescribeNetworkAclsInput, fn func(*DescribeNetworkAclsOutput, bool) bool) error { + return c.DescribeNetworkAclsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeNetworkAclsPagesWithContext same as DescribeNetworkAclsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeNetworkAclsPagesWithContext(ctx aws.Context, input *DescribeNetworkAclsInput, fn func(*DescribeNetworkAclsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeNetworkAclsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeNetworkAclsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeNetworkAclsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeNetworkInterfaceAttribute = "DescribeNetworkInterfaceAttribute" + +// DescribeNetworkInterfaceAttributeRequest generates a "aws/request.Request" representing the +// client's request for the DescribeNetworkInterfaceAttribute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeNetworkInterfaceAttribute for more information on using the DescribeNetworkInterfaceAttribute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeNetworkInterfaceAttributeRequest method. +// req, resp := client.DescribeNetworkInterfaceAttributeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInterfaceAttribute +func (c *EC2) DescribeNetworkInterfaceAttributeRequest(input *DescribeNetworkInterfaceAttributeInput) (req *request.Request, output *DescribeNetworkInterfaceAttributeOutput) { + op := &request.Operation{ + Name: opDescribeNetworkInterfaceAttribute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeNetworkInterfaceAttributeInput{} + } + + output = &DescribeNetworkInterfaceAttributeOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeNetworkInterfaceAttribute API operation for Amazon Elastic Compute Cloud. +// +// Describes a network interface attribute. You can specify only one attribute +// at a time. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeNetworkInterfaceAttribute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInterfaceAttribute +func (c *EC2) DescribeNetworkInterfaceAttribute(input *DescribeNetworkInterfaceAttributeInput) (*DescribeNetworkInterfaceAttributeOutput, error) { + req, out := c.DescribeNetworkInterfaceAttributeRequest(input) + return out, req.Send() +} + +// DescribeNetworkInterfaceAttributeWithContext is the same as DescribeNetworkInterfaceAttribute with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeNetworkInterfaceAttribute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeNetworkInterfaceAttributeWithContext(ctx aws.Context, input *DescribeNetworkInterfaceAttributeInput, opts ...request.Option) (*DescribeNetworkInterfaceAttributeOutput, error) { + req, out := c.DescribeNetworkInterfaceAttributeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeNetworkInterfacePermissions = "DescribeNetworkInterfacePermissions" + +// DescribeNetworkInterfacePermissionsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeNetworkInterfacePermissions operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeNetworkInterfacePermissions for more information on using the DescribeNetworkInterfacePermissions +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeNetworkInterfacePermissionsRequest method. +// req, resp := client.DescribeNetworkInterfacePermissionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInterfacePermissions +func (c *EC2) DescribeNetworkInterfacePermissionsRequest(input *DescribeNetworkInterfacePermissionsInput) (req *request.Request, output *DescribeNetworkInterfacePermissionsOutput) { + op := &request.Operation{ + Name: opDescribeNetworkInterfacePermissions, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeNetworkInterfacePermissionsInput{} + } + + output = &DescribeNetworkInterfacePermissionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeNetworkInterfacePermissions API operation for Amazon Elastic Compute Cloud. +// +// Describes the permissions for your network interfaces. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeNetworkInterfacePermissions for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInterfacePermissions +func (c *EC2) DescribeNetworkInterfacePermissions(input *DescribeNetworkInterfacePermissionsInput) (*DescribeNetworkInterfacePermissionsOutput, error) { + req, out := c.DescribeNetworkInterfacePermissionsRequest(input) + return out, req.Send() +} + +// DescribeNetworkInterfacePermissionsWithContext is the same as DescribeNetworkInterfacePermissions with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeNetworkInterfacePermissions for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeNetworkInterfacePermissionsWithContext(ctx aws.Context, input *DescribeNetworkInterfacePermissionsInput, opts ...request.Option) (*DescribeNetworkInterfacePermissionsOutput, error) { + req, out := c.DescribeNetworkInterfacePermissionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeNetworkInterfacePermissionsPages iterates over the pages of a DescribeNetworkInterfacePermissions operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeNetworkInterfacePermissions method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeNetworkInterfacePermissions operation. +// pageNum := 0 +// err := client.DescribeNetworkInterfacePermissionsPages(params, +// func(page *ec2.DescribeNetworkInterfacePermissionsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeNetworkInterfacePermissionsPages(input *DescribeNetworkInterfacePermissionsInput, fn func(*DescribeNetworkInterfacePermissionsOutput, bool) bool) error { + return c.DescribeNetworkInterfacePermissionsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeNetworkInterfacePermissionsPagesWithContext same as DescribeNetworkInterfacePermissionsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeNetworkInterfacePermissionsPagesWithContext(ctx aws.Context, input *DescribeNetworkInterfacePermissionsInput, fn func(*DescribeNetworkInterfacePermissionsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeNetworkInterfacePermissionsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeNetworkInterfacePermissionsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeNetworkInterfacePermissionsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeNetworkInterfaces = "DescribeNetworkInterfaces" + +// DescribeNetworkInterfacesRequest generates a "aws/request.Request" representing the +// client's request for the DescribeNetworkInterfaces operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeNetworkInterfaces for more information on using the DescribeNetworkInterfaces +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeNetworkInterfacesRequest method. +// req, resp := client.DescribeNetworkInterfacesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInterfaces +func (c *EC2) DescribeNetworkInterfacesRequest(input *DescribeNetworkInterfacesInput) (req *request.Request, output *DescribeNetworkInterfacesOutput) { + op := &request.Operation{ + Name: opDescribeNetworkInterfaces, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeNetworkInterfacesInput{} + } + + output = &DescribeNetworkInterfacesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeNetworkInterfaces API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more of your network interfaces. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeNetworkInterfaces for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInterfaces +func (c *EC2) DescribeNetworkInterfaces(input *DescribeNetworkInterfacesInput) (*DescribeNetworkInterfacesOutput, error) { + req, out := c.DescribeNetworkInterfacesRequest(input) + return out, req.Send() +} + +// DescribeNetworkInterfacesWithContext is the same as DescribeNetworkInterfaces with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeNetworkInterfaces for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeNetworkInterfacesWithContext(ctx aws.Context, input *DescribeNetworkInterfacesInput, opts ...request.Option) (*DescribeNetworkInterfacesOutput, error) { + req, out := c.DescribeNetworkInterfacesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeNetworkInterfacesPages iterates over the pages of a DescribeNetworkInterfaces operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeNetworkInterfaces method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeNetworkInterfaces operation. +// pageNum := 0 +// err := client.DescribeNetworkInterfacesPages(params, +// func(page *ec2.DescribeNetworkInterfacesOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeNetworkInterfacesPages(input *DescribeNetworkInterfacesInput, fn func(*DescribeNetworkInterfacesOutput, bool) bool) error { + return c.DescribeNetworkInterfacesPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeNetworkInterfacesPagesWithContext same as DescribeNetworkInterfacesPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeNetworkInterfacesPagesWithContext(ctx aws.Context, input *DescribeNetworkInterfacesInput, fn func(*DescribeNetworkInterfacesOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeNetworkInterfacesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeNetworkInterfacesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeNetworkInterfacesOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribePlacementGroups = "DescribePlacementGroups" + +// DescribePlacementGroupsRequest generates a "aws/request.Request" representing the +// client's request for the DescribePlacementGroups operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribePlacementGroups for more information on using the DescribePlacementGroups +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribePlacementGroupsRequest method. +// req, resp := client.DescribePlacementGroupsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribePlacementGroups +func (c *EC2) DescribePlacementGroupsRequest(input *DescribePlacementGroupsInput) (req *request.Request, output *DescribePlacementGroupsOutput) { + op := &request.Operation{ + Name: opDescribePlacementGroups, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribePlacementGroupsInput{} + } + + output = &DescribePlacementGroupsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribePlacementGroups API operation for Amazon Elastic Compute Cloud. +// +// Describes the specified placement groups or all of your placement groups. +// For more information, see Placement Groups (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribePlacementGroups for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribePlacementGroups +func (c *EC2) DescribePlacementGroups(input *DescribePlacementGroupsInput) (*DescribePlacementGroupsOutput, error) { + req, out := c.DescribePlacementGroupsRequest(input) + return out, req.Send() +} + +// DescribePlacementGroupsWithContext is the same as DescribePlacementGroups with the addition of +// the ability to pass a context and additional request options. +// +// See DescribePlacementGroups for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribePlacementGroupsWithContext(ctx aws.Context, input *DescribePlacementGroupsInput, opts ...request.Option) (*DescribePlacementGroupsOutput, error) { + req, out := c.DescribePlacementGroupsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribePrefixLists = "DescribePrefixLists" + +// DescribePrefixListsRequest generates a "aws/request.Request" representing the +// client's request for the DescribePrefixLists operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribePrefixLists for more information on using the DescribePrefixLists +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribePrefixListsRequest method. +// req, resp := client.DescribePrefixListsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribePrefixLists +func (c *EC2) DescribePrefixListsRequest(input *DescribePrefixListsInput) (req *request.Request, output *DescribePrefixListsOutput) { + op := &request.Operation{ + Name: opDescribePrefixLists, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribePrefixListsInput{} + } + + output = &DescribePrefixListsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribePrefixLists API operation for Amazon Elastic Compute Cloud. +// +// Describes available AWS services in a prefix list format, which includes +// the prefix list name and prefix list ID of the service and the IP address +// range for the service. A prefix list ID is required for creating an outbound +// security group rule that allows traffic from a VPC to access an AWS service +// through a gateway VPC endpoint. Currently, the services that support this +// action are Amazon S3 and Amazon DynamoDB. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribePrefixLists for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribePrefixLists +func (c *EC2) DescribePrefixLists(input *DescribePrefixListsInput) (*DescribePrefixListsOutput, error) { + req, out := c.DescribePrefixListsRequest(input) + return out, req.Send() +} + +// DescribePrefixListsWithContext is the same as DescribePrefixLists with the addition of +// the ability to pass a context and additional request options. +// +// See DescribePrefixLists for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribePrefixListsWithContext(ctx aws.Context, input *DescribePrefixListsInput, opts ...request.Option) (*DescribePrefixListsOutput, error) { + req, out := c.DescribePrefixListsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribePrefixListsPages iterates over the pages of a DescribePrefixLists operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribePrefixLists method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribePrefixLists operation. +// pageNum := 0 +// err := client.DescribePrefixListsPages(params, +// func(page *ec2.DescribePrefixListsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribePrefixListsPages(input *DescribePrefixListsInput, fn func(*DescribePrefixListsOutput, bool) bool) error { + return c.DescribePrefixListsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribePrefixListsPagesWithContext same as DescribePrefixListsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribePrefixListsPagesWithContext(ctx aws.Context, input *DescribePrefixListsInput, fn func(*DescribePrefixListsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribePrefixListsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribePrefixListsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribePrefixListsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribePrincipalIdFormat = "DescribePrincipalIdFormat" + +// DescribePrincipalIdFormatRequest generates a "aws/request.Request" representing the +// client's request for the DescribePrincipalIdFormat operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribePrincipalIdFormat for more information on using the DescribePrincipalIdFormat +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribePrincipalIdFormatRequest method. +// req, resp := client.DescribePrincipalIdFormatRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribePrincipalIdFormat +func (c *EC2) DescribePrincipalIdFormatRequest(input *DescribePrincipalIdFormatInput) (req *request.Request, output *DescribePrincipalIdFormatOutput) { + op := &request.Operation{ + Name: opDescribePrincipalIdFormat, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribePrincipalIdFormatInput{} + } + + output = &DescribePrincipalIdFormatOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribePrincipalIdFormat API operation for Amazon Elastic Compute Cloud. +// +// Describes the ID format settings for the root user and all IAM roles and +// IAM users that have explicitly specified a longer ID (17-character ID) preference. +// +// By default, all IAM roles and IAM users default to the same ID settings as +// the root user, unless they explicitly override the settings. This request +// is useful for identifying those IAM users and IAM roles that have overridden +// the default ID settings. +// +// The following resource types support longer IDs: bundle | conversion-task +// | customer-gateway | dhcp-options | elastic-ip-allocation | elastic-ip-association +// | export-task | flow-log | image | import-task | instance | internet-gateway +// | network-acl | network-acl-association | network-interface | network-interface-attachment +// | prefix-list | reservation | route-table | route-table-association | security-group +// | snapshot | subnet | subnet-cidr-block-association | volume | vpc | vpc-cidr-block-association +// | vpc-endpoint | vpc-peering-connection | vpn-connection | vpn-gateway. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribePrincipalIdFormat for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribePrincipalIdFormat +func (c *EC2) DescribePrincipalIdFormat(input *DescribePrincipalIdFormatInput) (*DescribePrincipalIdFormatOutput, error) { + req, out := c.DescribePrincipalIdFormatRequest(input) + return out, req.Send() +} + +// DescribePrincipalIdFormatWithContext is the same as DescribePrincipalIdFormat with the addition of +// the ability to pass a context and additional request options. +// +// See DescribePrincipalIdFormat for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribePrincipalIdFormatWithContext(ctx aws.Context, input *DescribePrincipalIdFormatInput, opts ...request.Option) (*DescribePrincipalIdFormatOutput, error) { + req, out := c.DescribePrincipalIdFormatRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribePrincipalIdFormatPages iterates over the pages of a DescribePrincipalIdFormat operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribePrincipalIdFormat method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribePrincipalIdFormat operation. +// pageNum := 0 +// err := client.DescribePrincipalIdFormatPages(params, +// func(page *ec2.DescribePrincipalIdFormatOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribePrincipalIdFormatPages(input *DescribePrincipalIdFormatInput, fn func(*DescribePrincipalIdFormatOutput, bool) bool) error { + return c.DescribePrincipalIdFormatPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribePrincipalIdFormatPagesWithContext same as DescribePrincipalIdFormatPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribePrincipalIdFormatPagesWithContext(ctx aws.Context, input *DescribePrincipalIdFormatInput, fn func(*DescribePrincipalIdFormatOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribePrincipalIdFormatInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribePrincipalIdFormatRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribePrincipalIdFormatOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribePublicIpv4Pools = "DescribePublicIpv4Pools" + +// DescribePublicIpv4PoolsRequest generates a "aws/request.Request" representing the +// client's request for the DescribePublicIpv4Pools operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribePublicIpv4Pools for more information on using the DescribePublicIpv4Pools +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribePublicIpv4PoolsRequest method. +// req, resp := client.DescribePublicIpv4PoolsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribePublicIpv4Pools +func (c *EC2) DescribePublicIpv4PoolsRequest(input *DescribePublicIpv4PoolsInput) (req *request.Request, output *DescribePublicIpv4PoolsOutput) { + op := &request.Operation{ + Name: opDescribePublicIpv4Pools, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribePublicIpv4PoolsInput{} + } + + output = &DescribePublicIpv4PoolsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribePublicIpv4Pools API operation for Amazon Elastic Compute Cloud. +// +// Describes the specified IPv4 address pools. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribePublicIpv4Pools for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribePublicIpv4Pools +func (c *EC2) DescribePublicIpv4Pools(input *DescribePublicIpv4PoolsInput) (*DescribePublicIpv4PoolsOutput, error) { + req, out := c.DescribePublicIpv4PoolsRequest(input) + return out, req.Send() +} + +// DescribePublicIpv4PoolsWithContext is the same as DescribePublicIpv4Pools with the addition of +// the ability to pass a context and additional request options. +// +// See DescribePublicIpv4Pools for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribePublicIpv4PoolsWithContext(ctx aws.Context, input *DescribePublicIpv4PoolsInput, opts ...request.Option) (*DescribePublicIpv4PoolsOutput, error) { + req, out := c.DescribePublicIpv4PoolsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribePublicIpv4PoolsPages iterates over the pages of a DescribePublicIpv4Pools operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribePublicIpv4Pools method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribePublicIpv4Pools operation. +// pageNum := 0 +// err := client.DescribePublicIpv4PoolsPages(params, +// func(page *ec2.DescribePublicIpv4PoolsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribePublicIpv4PoolsPages(input *DescribePublicIpv4PoolsInput, fn func(*DescribePublicIpv4PoolsOutput, bool) bool) error { + return c.DescribePublicIpv4PoolsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribePublicIpv4PoolsPagesWithContext same as DescribePublicIpv4PoolsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribePublicIpv4PoolsPagesWithContext(ctx aws.Context, input *DescribePublicIpv4PoolsInput, fn func(*DescribePublicIpv4PoolsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribePublicIpv4PoolsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribePublicIpv4PoolsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribePublicIpv4PoolsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeRegions = "DescribeRegions" + +// DescribeRegionsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeRegions operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeRegions for more information on using the DescribeRegions +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeRegionsRequest method. +// req, resp := client.DescribeRegionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeRegions +func (c *EC2) DescribeRegionsRequest(input *DescribeRegionsInput) (req *request.Request, output *DescribeRegionsOutput) { + op := &request.Operation{ + Name: opDescribeRegions, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeRegionsInput{} + } + + output = &DescribeRegionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeRegions API operation for Amazon Elastic Compute Cloud. +// +// Describes the Regions that are enabled for your account, or all Regions. +// +// For a list of the Regions supported by Amazon EC2, see Regions and Endpoints +// (https://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region). +// +// For information about enabling and disabling Regions for your account, see +// Managing AWS Regions (https://docs.aws.amazon.com/general/latest/gr/rande-manage.html) +// in the AWS General Reference. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeRegions for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeRegions +func (c *EC2) DescribeRegions(input *DescribeRegionsInput) (*DescribeRegionsOutput, error) { + req, out := c.DescribeRegionsRequest(input) + return out, req.Send() +} + +// DescribeRegionsWithContext is the same as DescribeRegions with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeRegions for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeRegionsWithContext(ctx aws.Context, input *DescribeRegionsInput, opts ...request.Option) (*DescribeRegionsOutput, error) { + req, out := c.DescribeRegionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeReservedInstances = "DescribeReservedInstances" + +// DescribeReservedInstancesRequest generates a "aws/request.Request" representing the +// client's request for the DescribeReservedInstances operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeReservedInstances for more information on using the DescribeReservedInstances +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeReservedInstancesRequest method. +// req, resp := client.DescribeReservedInstancesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstances +func (c *EC2) DescribeReservedInstancesRequest(input *DescribeReservedInstancesInput) (req *request.Request, output *DescribeReservedInstancesOutput) { + op := &request.Operation{ + Name: opDescribeReservedInstances, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeReservedInstancesInput{} + } + + output = &DescribeReservedInstancesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeReservedInstances API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more of the Reserved Instances that you purchased. +// +// For more information about Reserved Instances, see Reserved Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts-on-demand-reserved-instances.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeReservedInstances for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstances +func (c *EC2) DescribeReservedInstances(input *DescribeReservedInstancesInput) (*DescribeReservedInstancesOutput, error) { + req, out := c.DescribeReservedInstancesRequest(input) + return out, req.Send() +} + +// DescribeReservedInstancesWithContext is the same as DescribeReservedInstances with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeReservedInstances for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeReservedInstancesWithContext(ctx aws.Context, input *DescribeReservedInstancesInput, opts ...request.Option) (*DescribeReservedInstancesOutput, error) { + req, out := c.DescribeReservedInstancesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeReservedInstancesListings = "DescribeReservedInstancesListings" + +// DescribeReservedInstancesListingsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeReservedInstancesListings operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeReservedInstancesListings for more information on using the DescribeReservedInstancesListings +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeReservedInstancesListingsRequest method. +// req, resp := client.DescribeReservedInstancesListingsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesListings +func (c *EC2) DescribeReservedInstancesListingsRequest(input *DescribeReservedInstancesListingsInput) (req *request.Request, output *DescribeReservedInstancesListingsOutput) { + op := &request.Operation{ + Name: opDescribeReservedInstancesListings, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeReservedInstancesListingsInput{} + } + + output = &DescribeReservedInstancesListingsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeReservedInstancesListings API operation for Amazon Elastic Compute Cloud. +// +// Describes your account's Reserved Instance listings in the Reserved Instance +// Marketplace. +// +// The Reserved Instance Marketplace matches sellers who want to resell Reserved +// Instance capacity that they no longer need with buyers who want to purchase +// additional capacity. Reserved Instances bought and sold through the Reserved +// Instance Marketplace work like any other Reserved Instances. +// +// As a seller, you choose to list some or all of your Reserved Instances, and +// you specify the upfront price to receive for them. Your Reserved Instances +// are then listed in the Reserved Instance Marketplace and are available for +// purchase. +// +// As a buyer, you specify the configuration of the Reserved Instance to purchase, +// and the Marketplace matches what you're searching for with what's available. +// The Marketplace first sells the lowest priced Reserved Instances to you, +// and continues to sell available Reserved Instance listings to you until your +// demand is met. You are charged based on the total price of all of the listings +// that you purchase. +// +// For more information, see Reserved Instance Marketplace (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeReservedInstancesListings for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesListings +func (c *EC2) DescribeReservedInstancesListings(input *DescribeReservedInstancesListingsInput) (*DescribeReservedInstancesListingsOutput, error) { + req, out := c.DescribeReservedInstancesListingsRequest(input) + return out, req.Send() +} + +// DescribeReservedInstancesListingsWithContext is the same as DescribeReservedInstancesListings with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeReservedInstancesListings for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeReservedInstancesListingsWithContext(ctx aws.Context, input *DescribeReservedInstancesListingsInput, opts ...request.Option) (*DescribeReservedInstancesListingsOutput, error) { + req, out := c.DescribeReservedInstancesListingsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeReservedInstancesModifications = "DescribeReservedInstancesModifications" + +// DescribeReservedInstancesModificationsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeReservedInstancesModifications operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeReservedInstancesModifications for more information on using the DescribeReservedInstancesModifications +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeReservedInstancesModificationsRequest method. +// req, resp := client.DescribeReservedInstancesModificationsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesModifications +func (c *EC2) DescribeReservedInstancesModificationsRequest(input *DescribeReservedInstancesModificationsInput) (req *request.Request, output *DescribeReservedInstancesModificationsOutput) { + op := &request.Operation{ + Name: opDescribeReservedInstancesModifications, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeReservedInstancesModificationsInput{} + } + + output = &DescribeReservedInstancesModificationsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeReservedInstancesModifications API operation for Amazon Elastic Compute Cloud. +// +// Describes the modifications made to your Reserved Instances. If no parameter +// is specified, information about all your Reserved Instances modification +// requests is returned. If a modification ID is specified, only information +// about the specific modification is returned. +// +// For more information, see Modifying Reserved Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-modifying.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeReservedInstancesModifications for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesModifications +func (c *EC2) DescribeReservedInstancesModifications(input *DescribeReservedInstancesModificationsInput) (*DescribeReservedInstancesModificationsOutput, error) { + req, out := c.DescribeReservedInstancesModificationsRequest(input) + return out, req.Send() +} + +// DescribeReservedInstancesModificationsWithContext is the same as DescribeReservedInstancesModifications with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeReservedInstancesModifications for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeReservedInstancesModificationsWithContext(ctx aws.Context, input *DescribeReservedInstancesModificationsInput, opts ...request.Option) (*DescribeReservedInstancesModificationsOutput, error) { + req, out := c.DescribeReservedInstancesModificationsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeReservedInstancesModificationsPages iterates over the pages of a DescribeReservedInstancesModifications operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeReservedInstancesModifications method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeReservedInstancesModifications operation. +// pageNum := 0 +// err := client.DescribeReservedInstancesModificationsPages(params, +// func(page *ec2.DescribeReservedInstancesModificationsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeReservedInstancesModificationsPages(input *DescribeReservedInstancesModificationsInput, fn func(*DescribeReservedInstancesModificationsOutput, bool) bool) error { + return c.DescribeReservedInstancesModificationsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeReservedInstancesModificationsPagesWithContext same as DescribeReservedInstancesModificationsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeReservedInstancesModificationsPagesWithContext(ctx aws.Context, input *DescribeReservedInstancesModificationsInput, fn func(*DescribeReservedInstancesModificationsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeReservedInstancesModificationsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeReservedInstancesModificationsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeReservedInstancesModificationsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeReservedInstancesOfferings = "DescribeReservedInstancesOfferings" + +// DescribeReservedInstancesOfferingsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeReservedInstancesOfferings operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeReservedInstancesOfferings for more information on using the DescribeReservedInstancesOfferings +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeReservedInstancesOfferingsRequest method. +// req, resp := client.DescribeReservedInstancesOfferingsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesOfferings +func (c *EC2) DescribeReservedInstancesOfferingsRequest(input *DescribeReservedInstancesOfferingsInput) (req *request.Request, output *DescribeReservedInstancesOfferingsOutput) { + op := &request.Operation{ + Name: opDescribeReservedInstancesOfferings, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeReservedInstancesOfferingsInput{} + } + + output = &DescribeReservedInstancesOfferingsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeReservedInstancesOfferings API operation for Amazon Elastic Compute Cloud. +// +// Describes Reserved Instance offerings that are available for purchase. With +// Reserved Instances, you purchase the right to launch instances for a period +// of time. During that time period, you do not receive insufficient capacity +// errors, and you pay a lower usage rate than the rate charged for On-Demand +// instances for the actual time used. +// +// If you have listed your own Reserved Instances for sale in the Reserved Instance +// Marketplace, they will be excluded from these results. This is to ensure +// that you do not purchase your own Reserved Instances. +// +// For more information, see Reserved Instance Marketplace (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeReservedInstancesOfferings for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeReservedInstancesOfferings +func (c *EC2) DescribeReservedInstancesOfferings(input *DescribeReservedInstancesOfferingsInput) (*DescribeReservedInstancesOfferingsOutput, error) { + req, out := c.DescribeReservedInstancesOfferingsRequest(input) + return out, req.Send() +} + +// DescribeReservedInstancesOfferingsWithContext is the same as DescribeReservedInstancesOfferings with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeReservedInstancesOfferings for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeReservedInstancesOfferingsWithContext(ctx aws.Context, input *DescribeReservedInstancesOfferingsInput, opts ...request.Option) (*DescribeReservedInstancesOfferingsOutput, error) { + req, out := c.DescribeReservedInstancesOfferingsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeReservedInstancesOfferingsPages iterates over the pages of a DescribeReservedInstancesOfferings operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeReservedInstancesOfferings method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeReservedInstancesOfferings operation. +// pageNum := 0 +// err := client.DescribeReservedInstancesOfferingsPages(params, +// func(page *ec2.DescribeReservedInstancesOfferingsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeReservedInstancesOfferingsPages(input *DescribeReservedInstancesOfferingsInput, fn func(*DescribeReservedInstancesOfferingsOutput, bool) bool) error { + return c.DescribeReservedInstancesOfferingsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeReservedInstancesOfferingsPagesWithContext same as DescribeReservedInstancesOfferingsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeReservedInstancesOfferingsPagesWithContext(ctx aws.Context, input *DescribeReservedInstancesOfferingsInput, fn func(*DescribeReservedInstancesOfferingsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeReservedInstancesOfferingsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeReservedInstancesOfferingsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeReservedInstancesOfferingsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeRouteTables = "DescribeRouteTables" + +// DescribeRouteTablesRequest generates a "aws/request.Request" representing the +// client's request for the DescribeRouteTables operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeRouteTables for more information on using the DescribeRouteTables +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeRouteTablesRequest method. +// req, resp := client.DescribeRouteTablesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeRouteTables +func (c *EC2) DescribeRouteTablesRequest(input *DescribeRouteTablesInput) (req *request.Request, output *DescribeRouteTablesOutput) { + op := &request.Operation{ + Name: opDescribeRouteTables, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeRouteTablesInput{} + } + + output = &DescribeRouteTablesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeRouteTables API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more of your route tables. +// +// Each subnet in your VPC must be associated with a route table. If a subnet +// is not explicitly associated with any route table, it is implicitly associated +// with the main route table. This command does not return the subnet ID for +// implicit associations. +// +// For more information, see Route Tables (https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeRouteTables for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeRouteTables +func (c *EC2) DescribeRouteTables(input *DescribeRouteTablesInput) (*DescribeRouteTablesOutput, error) { + req, out := c.DescribeRouteTablesRequest(input) + return out, req.Send() +} + +// DescribeRouteTablesWithContext is the same as DescribeRouteTables with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeRouteTables for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeRouteTablesWithContext(ctx aws.Context, input *DescribeRouteTablesInput, opts ...request.Option) (*DescribeRouteTablesOutput, error) { + req, out := c.DescribeRouteTablesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeRouteTablesPages iterates over the pages of a DescribeRouteTables operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeRouteTables method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeRouteTables operation. +// pageNum := 0 +// err := client.DescribeRouteTablesPages(params, +// func(page *ec2.DescribeRouteTablesOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeRouteTablesPages(input *DescribeRouteTablesInput, fn func(*DescribeRouteTablesOutput, bool) bool) error { + return c.DescribeRouteTablesPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeRouteTablesPagesWithContext same as DescribeRouteTablesPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeRouteTablesPagesWithContext(ctx aws.Context, input *DescribeRouteTablesInput, fn func(*DescribeRouteTablesOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeRouteTablesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeRouteTablesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeRouteTablesOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeScheduledInstanceAvailability = "DescribeScheduledInstanceAvailability" + +// DescribeScheduledInstanceAvailabilityRequest generates a "aws/request.Request" representing the +// client's request for the DescribeScheduledInstanceAvailability operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeScheduledInstanceAvailability for more information on using the DescribeScheduledInstanceAvailability +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeScheduledInstanceAvailabilityRequest method. +// req, resp := client.DescribeScheduledInstanceAvailabilityRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeScheduledInstanceAvailability +func (c *EC2) DescribeScheduledInstanceAvailabilityRequest(input *DescribeScheduledInstanceAvailabilityInput) (req *request.Request, output *DescribeScheduledInstanceAvailabilityOutput) { + op := &request.Operation{ + Name: opDescribeScheduledInstanceAvailability, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeScheduledInstanceAvailabilityInput{} + } + + output = &DescribeScheduledInstanceAvailabilityOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeScheduledInstanceAvailability API operation for Amazon Elastic Compute Cloud. +// +// Finds available schedules that meet the specified criteria. +// +// You can search for an available schedule no more than 3 months in advance. +// You must meet the minimum required duration of 1,200 hours per year. For +// example, the minimum daily schedule is 4 hours, the minimum weekly schedule +// is 24 hours, and the minimum monthly schedule is 100 hours. +// +// After you find a schedule that meets your needs, call PurchaseScheduledInstances +// to purchase Scheduled Instances with that schedule. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeScheduledInstanceAvailability for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeScheduledInstanceAvailability +func (c *EC2) DescribeScheduledInstanceAvailability(input *DescribeScheduledInstanceAvailabilityInput) (*DescribeScheduledInstanceAvailabilityOutput, error) { + req, out := c.DescribeScheduledInstanceAvailabilityRequest(input) + return out, req.Send() +} + +// DescribeScheduledInstanceAvailabilityWithContext is the same as DescribeScheduledInstanceAvailability with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeScheduledInstanceAvailability for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeScheduledInstanceAvailabilityWithContext(ctx aws.Context, input *DescribeScheduledInstanceAvailabilityInput, opts ...request.Option) (*DescribeScheduledInstanceAvailabilityOutput, error) { + req, out := c.DescribeScheduledInstanceAvailabilityRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeScheduledInstanceAvailabilityPages iterates over the pages of a DescribeScheduledInstanceAvailability operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeScheduledInstanceAvailability method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeScheduledInstanceAvailability operation. +// pageNum := 0 +// err := client.DescribeScheduledInstanceAvailabilityPages(params, +// func(page *ec2.DescribeScheduledInstanceAvailabilityOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeScheduledInstanceAvailabilityPages(input *DescribeScheduledInstanceAvailabilityInput, fn func(*DescribeScheduledInstanceAvailabilityOutput, bool) bool) error { + return c.DescribeScheduledInstanceAvailabilityPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeScheduledInstanceAvailabilityPagesWithContext same as DescribeScheduledInstanceAvailabilityPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeScheduledInstanceAvailabilityPagesWithContext(ctx aws.Context, input *DescribeScheduledInstanceAvailabilityInput, fn func(*DescribeScheduledInstanceAvailabilityOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeScheduledInstanceAvailabilityInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeScheduledInstanceAvailabilityRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeScheduledInstanceAvailabilityOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeScheduledInstances = "DescribeScheduledInstances" + +// DescribeScheduledInstancesRequest generates a "aws/request.Request" representing the +// client's request for the DescribeScheduledInstances operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeScheduledInstances for more information on using the DescribeScheduledInstances +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeScheduledInstancesRequest method. +// req, resp := client.DescribeScheduledInstancesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeScheduledInstances +func (c *EC2) DescribeScheduledInstancesRequest(input *DescribeScheduledInstancesInput) (req *request.Request, output *DescribeScheduledInstancesOutput) { + op := &request.Operation{ + Name: opDescribeScheduledInstances, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeScheduledInstancesInput{} + } + + output = &DescribeScheduledInstancesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeScheduledInstances API operation for Amazon Elastic Compute Cloud. +// +// Describes the specified Scheduled Instances or all your Scheduled Instances. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeScheduledInstances for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeScheduledInstances +func (c *EC2) DescribeScheduledInstances(input *DescribeScheduledInstancesInput) (*DescribeScheduledInstancesOutput, error) { + req, out := c.DescribeScheduledInstancesRequest(input) + return out, req.Send() +} + +// DescribeScheduledInstancesWithContext is the same as DescribeScheduledInstances with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeScheduledInstances for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeScheduledInstancesWithContext(ctx aws.Context, input *DescribeScheduledInstancesInput, opts ...request.Option) (*DescribeScheduledInstancesOutput, error) { + req, out := c.DescribeScheduledInstancesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeScheduledInstancesPages iterates over the pages of a DescribeScheduledInstances operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeScheduledInstances method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeScheduledInstances operation. +// pageNum := 0 +// err := client.DescribeScheduledInstancesPages(params, +// func(page *ec2.DescribeScheduledInstancesOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeScheduledInstancesPages(input *DescribeScheduledInstancesInput, fn func(*DescribeScheduledInstancesOutput, bool) bool) error { + return c.DescribeScheduledInstancesPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeScheduledInstancesPagesWithContext same as DescribeScheduledInstancesPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeScheduledInstancesPagesWithContext(ctx aws.Context, input *DescribeScheduledInstancesInput, fn func(*DescribeScheduledInstancesOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeScheduledInstancesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeScheduledInstancesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeScheduledInstancesOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeSecurityGroupReferences = "DescribeSecurityGroupReferences" + +// DescribeSecurityGroupReferencesRequest generates a "aws/request.Request" representing the +// client's request for the DescribeSecurityGroupReferences operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeSecurityGroupReferences for more information on using the DescribeSecurityGroupReferences +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeSecurityGroupReferencesRequest method. +// req, resp := client.DescribeSecurityGroupReferencesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSecurityGroupReferences +func (c *EC2) DescribeSecurityGroupReferencesRequest(input *DescribeSecurityGroupReferencesInput) (req *request.Request, output *DescribeSecurityGroupReferencesOutput) { + op := &request.Operation{ + Name: opDescribeSecurityGroupReferences, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeSecurityGroupReferencesInput{} + } + + output = &DescribeSecurityGroupReferencesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeSecurityGroupReferences API operation for Amazon Elastic Compute Cloud. +// +// [VPC only] Describes the VPCs on the other side of a VPC peering connection +// that are referencing the security groups you've specified in this request. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeSecurityGroupReferences for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSecurityGroupReferences +func (c *EC2) DescribeSecurityGroupReferences(input *DescribeSecurityGroupReferencesInput) (*DescribeSecurityGroupReferencesOutput, error) { + req, out := c.DescribeSecurityGroupReferencesRequest(input) + return out, req.Send() +} + +// DescribeSecurityGroupReferencesWithContext is the same as DescribeSecurityGroupReferences with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeSecurityGroupReferences for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeSecurityGroupReferencesWithContext(ctx aws.Context, input *DescribeSecurityGroupReferencesInput, opts ...request.Option) (*DescribeSecurityGroupReferencesOutput, error) { + req, out := c.DescribeSecurityGroupReferencesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeSecurityGroups = "DescribeSecurityGroups" + +// DescribeSecurityGroupsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeSecurityGroups operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeSecurityGroups for more information on using the DescribeSecurityGroups +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeSecurityGroupsRequest method. +// req, resp := client.DescribeSecurityGroupsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSecurityGroups +func (c *EC2) DescribeSecurityGroupsRequest(input *DescribeSecurityGroupsInput) (req *request.Request, output *DescribeSecurityGroupsOutput) { + op := &request.Operation{ + Name: opDescribeSecurityGroups, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeSecurityGroupsInput{} + } + + output = &DescribeSecurityGroupsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeSecurityGroups API operation for Amazon Elastic Compute Cloud. +// +// Describes the specified security groups or all of your security groups. +// +// A security group is for use with instances either in the EC2-Classic platform +// or in a specific VPC. For more information, see Amazon EC2 Security Groups +// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html) +// in the Amazon Elastic Compute Cloud User Guide and Security Groups for Your +// VPC (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeSecurityGroups for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSecurityGroups +func (c *EC2) DescribeSecurityGroups(input *DescribeSecurityGroupsInput) (*DescribeSecurityGroupsOutput, error) { + req, out := c.DescribeSecurityGroupsRequest(input) + return out, req.Send() +} + +// DescribeSecurityGroupsWithContext is the same as DescribeSecurityGroups with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeSecurityGroups for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeSecurityGroupsWithContext(ctx aws.Context, input *DescribeSecurityGroupsInput, opts ...request.Option) (*DescribeSecurityGroupsOutput, error) { + req, out := c.DescribeSecurityGroupsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeSecurityGroupsPages iterates over the pages of a DescribeSecurityGroups operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeSecurityGroups method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeSecurityGroups operation. +// pageNum := 0 +// err := client.DescribeSecurityGroupsPages(params, +// func(page *ec2.DescribeSecurityGroupsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeSecurityGroupsPages(input *DescribeSecurityGroupsInput, fn func(*DescribeSecurityGroupsOutput, bool) bool) error { + return c.DescribeSecurityGroupsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeSecurityGroupsPagesWithContext same as DescribeSecurityGroupsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeSecurityGroupsPagesWithContext(ctx aws.Context, input *DescribeSecurityGroupsInput, fn func(*DescribeSecurityGroupsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeSecurityGroupsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeSecurityGroupsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeSecurityGroupsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeSnapshotAttribute = "DescribeSnapshotAttribute" + +// DescribeSnapshotAttributeRequest generates a "aws/request.Request" representing the +// client's request for the DescribeSnapshotAttribute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeSnapshotAttribute for more information on using the DescribeSnapshotAttribute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeSnapshotAttributeRequest method. +// req, resp := client.DescribeSnapshotAttributeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSnapshotAttribute +func (c *EC2) DescribeSnapshotAttributeRequest(input *DescribeSnapshotAttributeInput) (req *request.Request, output *DescribeSnapshotAttributeOutput) { + op := &request.Operation{ + Name: opDescribeSnapshotAttribute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeSnapshotAttributeInput{} + } + + output = &DescribeSnapshotAttributeOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeSnapshotAttribute API operation for Amazon Elastic Compute Cloud. +// +// Describes the specified attribute of the specified snapshot. You can specify +// only one attribute at a time. +// +// For more information about EBS snapshots, see Amazon EBS Snapshots (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSSnapshots.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeSnapshotAttribute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSnapshotAttribute +func (c *EC2) DescribeSnapshotAttribute(input *DescribeSnapshotAttributeInput) (*DescribeSnapshotAttributeOutput, error) { + req, out := c.DescribeSnapshotAttributeRequest(input) + return out, req.Send() +} + +// DescribeSnapshotAttributeWithContext is the same as DescribeSnapshotAttribute with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeSnapshotAttribute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeSnapshotAttributeWithContext(ctx aws.Context, input *DescribeSnapshotAttributeInput, opts ...request.Option) (*DescribeSnapshotAttributeOutput, error) { + req, out := c.DescribeSnapshotAttributeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeSnapshots = "DescribeSnapshots" + +// DescribeSnapshotsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeSnapshots operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeSnapshots for more information on using the DescribeSnapshots +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeSnapshotsRequest method. +// req, resp := client.DescribeSnapshotsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSnapshots +func (c *EC2) DescribeSnapshotsRequest(input *DescribeSnapshotsInput) (req *request.Request, output *DescribeSnapshotsOutput) { + op := &request.Operation{ + Name: opDescribeSnapshots, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeSnapshotsInput{} + } + + output = &DescribeSnapshotsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeSnapshots API operation for Amazon Elastic Compute Cloud. +// +// Describes the specified EBS snapshots available to you or all of the EBS +// snapshots available to you. +// +// The snapshots available to you include public snapshots, private snapshots +// that you own, and private snapshots owned by other AWS accounts for which +// you have explicit create volume permissions. +// +// The create volume permissions fall into the following categories: +// +// * public: The owner of the snapshot granted create volume permissions +// for the snapshot to the all group. All AWS accounts have create volume +// permissions for these snapshots. +// +// * explicit: The owner of the snapshot granted create volume permissions +// to a specific AWS account. +// +// * implicit: An AWS account has implicit create volume permissions for +// all snapshots it owns. +// +// The list of snapshots returned can be modified by specifying snapshot IDs, +// snapshot owners, or AWS accounts with create volume permissions. If no options +// are specified, Amazon EC2 returns all snapshots for which you have create +// volume permissions. +// +// If you specify one or more snapshot IDs, only snapshots that have the specified +// IDs are returned. If you specify an invalid snapshot ID, an error is returned. +// If you specify a snapshot ID for which you do not have access, it is not +// included in the returned results. +// +// If you specify one or more snapshot owners using the OwnerIds option, only +// snapshots from the specified owners and for which you have access are returned. +// The results can include the AWS account IDs of the specified owners, amazon +// for snapshots owned by Amazon, or self for snapshots that you own. +// +// If you specify a list of restorable users, only snapshots with create snapshot +// permissions for those users are returned. You can specify AWS account IDs +// (if you own the snapshots), self for snapshots for which you own or have +// explicit permissions, or all for public snapshots. +// +// If you are describing a long list of snapshots, you can paginate the output +// to make the list more manageable. The MaxResults parameter sets the maximum +// number of results returned in a single page. If the list of results exceeds +// your MaxResults value, then that number of results is returned along with +// a NextToken value that can be passed to a subsequent DescribeSnapshots request +// to retrieve the remaining results. +// +// For more information about EBS snapshots, see Amazon EBS Snapshots (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSSnapshots.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeSnapshots for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSnapshots +func (c *EC2) DescribeSnapshots(input *DescribeSnapshotsInput) (*DescribeSnapshotsOutput, error) { + req, out := c.DescribeSnapshotsRequest(input) + return out, req.Send() +} + +// DescribeSnapshotsWithContext is the same as DescribeSnapshots with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeSnapshots for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeSnapshotsWithContext(ctx aws.Context, input *DescribeSnapshotsInput, opts ...request.Option) (*DescribeSnapshotsOutput, error) { + req, out := c.DescribeSnapshotsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeSnapshotsPages iterates over the pages of a DescribeSnapshots operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeSnapshots method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeSnapshots operation. +// pageNum := 0 +// err := client.DescribeSnapshotsPages(params, +// func(page *ec2.DescribeSnapshotsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeSnapshotsPages(input *DescribeSnapshotsInput, fn func(*DescribeSnapshotsOutput, bool) bool) error { + return c.DescribeSnapshotsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeSnapshotsPagesWithContext same as DescribeSnapshotsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeSnapshotsPagesWithContext(ctx aws.Context, input *DescribeSnapshotsInput, fn func(*DescribeSnapshotsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeSnapshotsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeSnapshotsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeSnapshotsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeSpotDatafeedSubscription = "DescribeSpotDatafeedSubscription" + +// DescribeSpotDatafeedSubscriptionRequest generates a "aws/request.Request" representing the +// client's request for the DescribeSpotDatafeedSubscription operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeSpotDatafeedSubscription for more information on using the DescribeSpotDatafeedSubscription +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeSpotDatafeedSubscriptionRequest method. +// req, resp := client.DescribeSpotDatafeedSubscriptionRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotDatafeedSubscription +func (c *EC2) DescribeSpotDatafeedSubscriptionRequest(input *DescribeSpotDatafeedSubscriptionInput) (req *request.Request, output *DescribeSpotDatafeedSubscriptionOutput) { + op := &request.Operation{ + Name: opDescribeSpotDatafeedSubscription, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeSpotDatafeedSubscriptionInput{} + } + + output = &DescribeSpotDatafeedSubscriptionOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeSpotDatafeedSubscription API operation for Amazon Elastic Compute Cloud. +// +// Describes the data feed for Spot Instances. For more information, see Spot +// Instance Data Feed (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-data-feeds.html) +// in the Amazon EC2 User Guide for Linux Instances. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeSpotDatafeedSubscription for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotDatafeedSubscription +func (c *EC2) DescribeSpotDatafeedSubscription(input *DescribeSpotDatafeedSubscriptionInput) (*DescribeSpotDatafeedSubscriptionOutput, error) { + req, out := c.DescribeSpotDatafeedSubscriptionRequest(input) + return out, req.Send() +} + +// DescribeSpotDatafeedSubscriptionWithContext is the same as DescribeSpotDatafeedSubscription with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeSpotDatafeedSubscription for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeSpotDatafeedSubscriptionWithContext(ctx aws.Context, input *DescribeSpotDatafeedSubscriptionInput, opts ...request.Option) (*DescribeSpotDatafeedSubscriptionOutput, error) { + req, out := c.DescribeSpotDatafeedSubscriptionRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeSpotFleetInstances = "DescribeSpotFleetInstances" + +// DescribeSpotFleetInstancesRequest generates a "aws/request.Request" representing the +// client's request for the DescribeSpotFleetInstances operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeSpotFleetInstances for more information on using the DescribeSpotFleetInstances +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeSpotFleetInstancesRequest method. +// req, resp := client.DescribeSpotFleetInstancesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotFleetInstances +func (c *EC2) DescribeSpotFleetInstancesRequest(input *DescribeSpotFleetInstancesInput) (req *request.Request, output *DescribeSpotFleetInstancesOutput) { + op := &request.Operation{ + Name: opDescribeSpotFleetInstances, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeSpotFleetInstancesInput{} + } + + output = &DescribeSpotFleetInstancesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeSpotFleetInstances API operation for Amazon Elastic Compute Cloud. +// +// Describes the running instances for the specified Spot Fleet. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeSpotFleetInstances for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotFleetInstances +func (c *EC2) DescribeSpotFleetInstances(input *DescribeSpotFleetInstancesInput) (*DescribeSpotFleetInstancesOutput, error) { + req, out := c.DescribeSpotFleetInstancesRequest(input) + return out, req.Send() +} + +// DescribeSpotFleetInstancesWithContext is the same as DescribeSpotFleetInstances with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeSpotFleetInstances for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeSpotFleetInstancesWithContext(ctx aws.Context, input *DescribeSpotFleetInstancesInput, opts ...request.Option) (*DescribeSpotFleetInstancesOutput, error) { + req, out := c.DescribeSpotFleetInstancesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeSpotFleetRequestHistory = "DescribeSpotFleetRequestHistory" + +// DescribeSpotFleetRequestHistoryRequest generates a "aws/request.Request" representing the +// client's request for the DescribeSpotFleetRequestHistory operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeSpotFleetRequestHistory for more information on using the DescribeSpotFleetRequestHistory +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeSpotFleetRequestHistoryRequest method. +// req, resp := client.DescribeSpotFleetRequestHistoryRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotFleetRequestHistory +func (c *EC2) DescribeSpotFleetRequestHistoryRequest(input *DescribeSpotFleetRequestHistoryInput) (req *request.Request, output *DescribeSpotFleetRequestHistoryOutput) { + op := &request.Operation{ + Name: opDescribeSpotFleetRequestHistory, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeSpotFleetRequestHistoryInput{} + } + + output = &DescribeSpotFleetRequestHistoryOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeSpotFleetRequestHistory API operation for Amazon Elastic Compute Cloud. +// +// Describes the events for the specified Spot Fleet request during the specified +// time. +// +// Spot Fleet events are delayed by up to 30 seconds before they can be described. +// This ensures that you can query by the last evaluated time and not miss a +// recorded event. Spot Fleet events are available for 48 hours. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeSpotFleetRequestHistory for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotFleetRequestHistory +func (c *EC2) DescribeSpotFleetRequestHistory(input *DescribeSpotFleetRequestHistoryInput) (*DescribeSpotFleetRequestHistoryOutput, error) { + req, out := c.DescribeSpotFleetRequestHistoryRequest(input) + return out, req.Send() +} + +// DescribeSpotFleetRequestHistoryWithContext is the same as DescribeSpotFleetRequestHistory with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeSpotFleetRequestHistory for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeSpotFleetRequestHistoryWithContext(ctx aws.Context, input *DescribeSpotFleetRequestHistoryInput, opts ...request.Option) (*DescribeSpotFleetRequestHistoryOutput, error) { + req, out := c.DescribeSpotFleetRequestHistoryRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeSpotFleetRequests = "DescribeSpotFleetRequests" + +// DescribeSpotFleetRequestsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeSpotFleetRequests operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeSpotFleetRequests for more information on using the DescribeSpotFleetRequests +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeSpotFleetRequestsRequest method. +// req, resp := client.DescribeSpotFleetRequestsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotFleetRequests +func (c *EC2) DescribeSpotFleetRequestsRequest(input *DescribeSpotFleetRequestsInput) (req *request.Request, output *DescribeSpotFleetRequestsOutput) { + op := &request.Operation{ + Name: opDescribeSpotFleetRequests, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeSpotFleetRequestsInput{} + } + + output = &DescribeSpotFleetRequestsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeSpotFleetRequests API operation for Amazon Elastic Compute Cloud. +// +// Describes your Spot Fleet requests. +// +// Spot Fleet requests are deleted 48 hours after they are canceled and their +// instances are terminated. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeSpotFleetRequests for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotFleetRequests +func (c *EC2) DescribeSpotFleetRequests(input *DescribeSpotFleetRequestsInput) (*DescribeSpotFleetRequestsOutput, error) { + req, out := c.DescribeSpotFleetRequestsRequest(input) + return out, req.Send() +} + +// DescribeSpotFleetRequestsWithContext is the same as DescribeSpotFleetRequests with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeSpotFleetRequests for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeSpotFleetRequestsWithContext(ctx aws.Context, input *DescribeSpotFleetRequestsInput, opts ...request.Option) (*DescribeSpotFleetRequestsOutput, error) { + req, out := c.DescribeSpotFleetRequestsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeSpotFleetRequestsPages iterates over the pages of a DescribeSpotFleetRequests operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeSpotFleetRequests method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeSpotFleetRequests operation. +// pageNum := 0 +// err := client.DescribeSpotFleetRequestsPages(params, +// func(page *ec2.DescribeSpotFleetRequestsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeSpotFleetRequestsPages(input *DescribeSpotFleetRequestsInput, fn func(*DescribeSpotFleetRequestsOutput, bool) bool) error { + return c.DescribeSpotFleetRequestsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeSpotFleetRequestsPagesWithContext same as DescribeSpotFleetRequestsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeSpotFleetRequestsPagesWithContext(ctx aws.Context, input *DescribeSpotFleetRequestsInput, fn func(*DescribeSpotFleetRequestsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeSpotFleetRequestsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeSpotFleetRequestsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeSpotFleetRequestsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeSpotInstanceRequests = "DescribeSpotInstanceRequests" + +// DescribeSpotInstanceRequestsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeSpotInstanceRequests operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeSpotInstanceRequests for more information on using the DescribeSpotInstanceRequests +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeSpotInstanceRequestsRequest method. +// req, resp := client.DescribeSpotInstanceRequestsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotInstanceRequests +func (c *EC2) DescribeSpotInstanceRequestsRequest(input *DescribeSpotInstanceRequestsInput) (req *request.Request, output *DescribeSpotInstanceRequestsOutput) { + op := &request.Operation{ + Name: opDescribeSpotInstanceRequests, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeSpotInstanceRequestsInput{} + } + + output = &DescribeSpotInstanceRequestsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeSpotInstanceRequests API operation for Amazon Elastic Compute Cloud. +// +// Describes the specified Spot Instance requests. +// +// You can use DescribeSpotInstanceRequests to find a running Spot Instance +// by examining the response. If the status of the Spot Instance is fulfilled, +// the instance ID appears in the response and contains the identifier of the +// instance. Alternatively, you can use DescribeInstances with a filter to look +// for instances where the instance lifecycle is spot. +// +// We recommend that you set MaxResults to a value between 5 and 1000 to limit +// the number of results returned. This paginates the output, which makes the +// list more manageable and returns the results faster. If the list of results +// exceeds your MaxResults value, then that number of results is returned along +// with a NextToken value that can be passed to a subsequent DescribeSpotInstanceRequests +// request to retrieve the remaining results. +// +// Spot Instance requests are deleted four hours after they are canceled and +// their instances are terminated. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeSpotInstanceRequests for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotInstanceRequests +func (c *EC2) DescribeSpotInstanceRequests(input *DescribeSpotInstanceRequestsInput) (*DescribeSpotInstanceRequestsOutput, error) { + req, out := c.DescribeSpotInstanceRequestsRequest(input) + return out, req.Send() +} + +// DescribeSpotInstanceRequestsWithContext is the same as DescribeSpotInstanceRequests with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeSpotInstanceRequests for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeSpotInstanceRequestsWithContext(ctx aws.Context, input *DescribeSpotInstanceRequestsInput, opts ...request.Option) (*DescribeSpotInstanceRequestsOutput, error) { + req, out := c.DescribeSpotInstanceRequestsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeSpotInstanceRequestsPages iterates over the pages of a DescribeSpotInstanceRequests operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeSpotInstanceRequests method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeSpotInstanceRequests operation. +// pageNum := 0 +// err := client.DescribeSpotInstanceRequestsPages(params, +// func(page *ec2.DescribeSpotInstanceRequestsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeSpotInstanceRequestsPages(input *DescribeSpotInstanceRequestsInput, fn func(*DescribeSpotInstanceRequestsOutput, bool) bool) error { + return c.DescribeSpotInstanceRequestsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeSpotInstanceRequestsPagesWithContext same as DescribeSpotInstanceRequestsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeSpotInstanceRequestsPagesWithContext(ctx aws.Context, input *DescribeSpotInstanceRequestsInput, fn func(*DescribeSpotInstanceRequestsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeSpotInstanceRequestsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeSpotInstanceRequestsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeSpotInstanceRequestsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeSpotPriceHistory = "DescribeSpotPriceHistory" + +// DescribeSpotPriceHistoryRequest generates a "aws/request.Request" representing the +// client's request for the DescribeSpotPriceHistory operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeSpotPriceHistory for more information on using the DescribeSpotPriceHistory +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeSpotPriceHistoryRequest method. +// req, resp := client.DescribeSpotPriceHistoryRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotPriceHistory +func (c *EC2) DescribeSpotPriceHistoryRequest(input *DescribeSpotPriceHistoryInput) (req *request.Request, output *DescribeSpotPriceHistoryOutput) { + op := &request.Operation{ + Name: opDescribeSpotPriceHistory, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeSpotPriceHistoryInput{} + } + + output = &DescribeSpotPriceHistoryOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeSpotPriceHistory API operation for Amazon Elastic Compute Cloud. +// +// Describes the Spot price history. For more information, see Spot Instance +// Pricing History (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances-history.html) +// in the Amazon EC2 User Guide for Linux Instances. +// +// When you specify a start and end time, this operation returns the prices +// of the instance types within the time range that you specified and the time +// when the price changed. The price is valid within the time period that you +// specified; the response merely indicates the last time that the price changed. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeSpotPriceHistory for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSpotPriceHistory +func (c *EC2) DescribeSpotPriceHistory(input *DescribeSpotPriceHistoryInput) (*DescribeSpotPriceHistoryOutput, error) { + req, out := c.DescribeSpotPriceHistoryRequest(input) + return out, req.Send() +} + +// DescribeSpotPriceHistoryWithContext is the same as DescribeSpotPriceHistory with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeSpotPriceHistory for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeSpotPriceHistoryWithContext(ctx aws.Context, input *DescribeSpotPriceHistoryInput, opts ...request.Option) (*DescribeSpotPriceHistoryOutput, error) { + req, out := c.DescribeSpotPriceHistoryRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeSpotPriceHistoryPages iterates over the pages of a DescribeSpotPriceHistory operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeSpotPriceHistory method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeSpotPriceHistory operation. +// pageNum := 0 +// err := client.DescribeSpotPriceHistoryPages(params, +// func(page *ec2.DescribeSpotPriceHistoryOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeSpotPriceHistoryPages(input *DescribeSpotPriceHistoryInput, fn func(*DescribeSpotPriceHistoryOutput, bool) bool) error { + return c.DescribeSpotPriceHistoryPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeSpotPriceHistoryPagesWithContext same as DescribeSpotPriceHistoryPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeSpotPriceHistoryPagesWithContext(ctx aws.Context, input *DescribeSpotPriceHistoryInput, fn func(*DescribeSpotPriceHistoryOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeSpotPriceHistoryInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeSpotPriceHistoryRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeSpotPriceHistoryOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeStaleSecurityGroups = "DescribeStaleSecurityGroups" + +// DescribeStaleSecurityGroupsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeStaleSecurityGroups operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeStaleSecurityGroups for more information on using the DescribeStaleSecurityGroups +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeStaleSecurityGroupsRequest method. +// req, resp := client.DescribeStaleSecurityGroupsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeStaleSecurityGroups +func (c *EC2) DescribeStaleSecurityGroupsRequest(input *DescribeStaleSecurityGroupsInput) (req *request.Request, output *DescribeStaleSecurityGroupsOutput) { + op := &request.Operation{ + Name: opDescribeStaleSecurityGroups, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeStaleSecurityGroupsInput{} + } + + output = &DescribeStaleSecurityGroupsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeStaleSecurityGroups API operation for Amazon Elastic Compute Cloud. +// +// [VPC only] Describes the stale security group rules for security groups in +// a specified VPC. Rules are stale when they reference a deleted security group +// in a peer VPC, or a security group in a peer VPC for which the VPC peering +// connection has been deleted. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeStaleSecurityGroups for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeStaleSecurityGroups +func (c *EC2) DescribeStaleSecurityGroups(input *DescribeStaleSecurityGroupsInput) (*DescribeStaleSecurityGroupsOutput, error) { + req, out := c.DescribeStaleSecurityGroupsRequest(input) + return out, req.Send() +} + +// DescribeStaleSecurityGroupsWithContext is the same as DescribeStaleSecurityGroups with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeStaleSecurityGroups for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeStaleSecurityGroupsWithContext(ctx aws.Context, input *DescribeStaleSecurityGroupsInput, opts ...request.Option) (*DescribeStaleSecurityGroupsOutput, error) { + req, out := c.DescribeStaleSecurityGroupsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeStaleSecurityGroupsPages iterates over the pages of a DescribeStaleSecurityGroups operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeStaleSecurityGroups method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeStaleSecurityGroups operation. +// pageNum := 0 +// err := client.DescribeStaleSecurityGroupsPages(params, +// func(page *ec2.DescribeStaleSecurityGroupsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeStaleSecurityGroupsPages(input *DescribeStaleSecurityGroupsInput, fn func(*DescribeStaleSecurityGroupsOutput, bool) bool) error { + return c.DescribeStaleSecurityGroupsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeStaleSecurityGroupsPagesWithContext same as DescribeStaleSecurityGroupsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeStaleSecurityGroupsPagesWithContext(ctx aws.Context, input *DescribeStaleSecurityGroupsInput, fn func(*DescribeStaleSecurityGroupsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeStaleSecurityGroupsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeStaleSecurityGroupsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeStaleSecurityGroupsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeSubnets = "DescribeSubnets" + +// DescribeSubnetsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeSubnets operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeSubnets for more information on using the DescribeSubnets +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeSubnetsRequest method. +// req, resp := client.DescribeSubnetsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSubnets +func (c *EC2) DescribeSubnetsRequest(input *DescribeSubnetsInput) (req *request.Request, output *DescribeSubnetsOutput) { + op := &request.Operation{ + Name: opDescribeSubnets, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeSubnetsInput{} + } + + output = &DescribeSubnetsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeSubnets API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more of your subnets. +// +// For more information, see Your VPC and Subnets (https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeSubnets for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeSubnets +func (c *EC2) DescribeSubnets(input *DescribeSubnetsInput) (*DescribeSubnetsOutput, error) { + req, out := c.DescribeSubnetsRequest(input) + return out, req.Send() +} + +// DescribeSubnetsWithContext is the same as DescribeSubnets with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeSubnets for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeSubnetsWithContext(ctx aws.Context, input *DescribeSubnetsInput, opts ...request.Option) (*DescribeSubnetsOutput, error) { + req, out := c.DescribeSubnetsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeSubnetsPages iterates over the pages of a DescribeSubnets operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeSubnets method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeSubnets operation. +// pageNum := 0 +// err := client.DescribeSubnetsPages(params, +// func(page *ec2.DescribeSubnetsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeSubnetsPages(input *DescribeSubnetsInput, fn func(*DescribeSubnetsOutput, bool) bool) error { + return c.DescribeSubnetsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeSubnetsPagesWithContext same as DescribeSubnetsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeSubnetsPagesWithContext(ctx aws.Context, input *DescribeSubnetsInput, fn func(*DescribeSubnetsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeSubnetsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeSubnetsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeSubnetsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeTags = "DescribeTags" + +// DescribeTagsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeTags operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeTags for more information on using the DescribeTags +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeTagsRequest method. +// req, resp := client.DescribeTagsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTags +func (c *EC2) DescribeTagsRequest(input *DescribeTagsInput) (req *request.Request, output *DescribeTagsOutput) { + op := &request.Operation{ + Name: opDescribeTags, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeTagsInput{} + } + + output = &DescribeTagsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeTags API operation for Amazon Elastic Compute Cloud. +// +// Describes the specified tags for your EC2 resources. +// +// For more information about tags, see Tagging Your Resources (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeTags for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTags +func (c *EC2) DescribeTags(input *DescribeTagsInput) (*DescribeTagsOutput, error) { + req, out := c.DescribeTagsRequest(input) + return out, req.Send() +} + +// DescribeTagsWithContext is the same as DescribeTags with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeTags for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeTagsWithContext(ctx aws.Context, input *DescribeTagsInput, opts ...request.Option) (*DescribeTagsOutput, error) { + req, out := c.DescribeTagsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeTagsPages iterates over the pages of a DescribeTags operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeTags method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeTags operation. +// pageNum := 0 +// err := client.DescribeTagsPages(params, +// func(page *ec2.DescribeTagsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeTagsPages(input *DescribeTagsInput, fn func(*DescribeTagsOutput, bool) bool) error { + return c.DescribeTagsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeTagsPagesWithContext same as DescribeTagsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeTagsPagesWithContext(ctx aws.Context, input *DescribeTagsInput, fn func(*DescribeTagsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeTagsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeTagsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeTagsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeTrafficMirrorFilters = "DescribeTrafficMirrorFilters" + +// DescribeTrafficMirrorFiltersRequest generates a "aws/request.Request" representing the +// client's request for the DescribeTrafficMirrorFilters operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeTrafficMirrorFilters for more information on using the DescribeTrafficMirrorFilters +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeTrafficMirrorFiltersRequest method. +// req, resp := client.DescribeTrafficMirrorFiltersRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTrafficMirrorFilters +func (c *EC2) DescribeTrafficMirrorFiltersRequest(input *DescribeTrafficMirrorFiltersInput) (req *request.Request, output *DescribeTrafficMirrorFiltersOutput) { + op := &request.Operation{ + Name: opDescribeTrafficMirrorFilters, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeTrafficMirrorFiltersInput{} + } + + output = &DescribeTrafficMirrorFiltersOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeTrafficMirrorFilters API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more Traffic Mirror filters. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeTrafficMirrorFilters for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTrafficMirrorFilters +func (c *EC2) DescribeTrafficMirrorFilters(input *DescribeTrafficMirrorFiltersInput) (*DescribeTrafficMirrorFiltersOutput, error) { + req, out := c.DescribeTrafficMirrorFiltersRequest(input) + return out, req.Send() +} + +// DescribeTrafficMirrorFiltersWithContext is the same as DescribeTrafficMirrorFilters with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeTrafficMirrorFilters for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeTrafficMirrorFiltersWithContext(ctx aws.Context, input *DescribeTrafficMirrorFiltersInput, opts ...request.Option) (*DescribeTrafficMirrorFiltersOutput, error) { + req, out := c.DescribeTrafficMirrorFiltersRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeTrafficMirrorFiltersPages iterates over the pages of a DescribeTrafficMirrorFilters operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeTrafficMirrorFilters method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeTrafficMirrorFilters operation. +// pageNum := 0 +// err := client.DescribeTrafficMirrorFiltersPages(params, +// func(page *ec2.DescribeTrafficMirrorFiltersOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeTrafficMirrorFiltersPages(input *DescribeTrafficMirrorFiltersInput, fn func(*DescribeTrafficMirrorFiltersOutput, bool) bool) error { + return c.DescribeTrafficMirrorFiltersPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeTrafficMirrorFiltersPagesWithContext same as DescribeTrafficMirrorFiltersPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeTrafficMirrorFiltersPagesWithContext(ctx aws.Context, input *DescribeTrafficMirrorFiltersInput, fn func(*DescribeTrafficMirrorFiltersOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeTrafficMirrorFiltersInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeTrafficMirrorFiltersRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeTrafficMirrorFiltersOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeTrafficMirrorSessions = "DescribeTrafficMirrorSessions" + +// DescribeTrafficMirrorSessionsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeTrafficMirrorSessions operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeTrafficMirrorSessions for more information on using the DescribeTrafficMirrorSessions +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeTrafficMirrorSessionsRequest method. +// req, resp := client.DescribeTrafficMirrorSessionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTrafficMirrorSessions +func (c *EC2) DescribeTrafficMirrorSessionsRequest(input *DescribeTrafficMirrorSessionsInput) (req *request.Request, output *DescribeTrafficMirrorSessionsOutput) { + op := &request.Operation{ + Name: opDescribeTrafficMirrorSessions, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeTrafficMirrorSessionsInput{} + } + + output = &DescribeTrafficMirrorSessionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeTrafficMirrorSessions API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more Traffic Mirror sessions. By default, all Traffic Mirror +// sessions are described. Alternatively, you can filter the results. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeTrafficMirrorSessions for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTrafficMirrorSessions +func (c *EC2) DescribeTrafficMirrorSessions(input *DescribeTrafficMirrorSessionsInput) (*DescribeTrafficMirrorSessionsOutput, error) { + req, out := c.DescribeTrafficMirrorSessionsRequest(input) + return out, req.Send() +} + +// DescribeTrafficMirrorSessionsWithContext is the same as DescribeTrafficMirrorSessions with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeTrafficMirrorSessions for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeTrafficMirrorSessionsWithContext(ctx aws.Context, input *DescribeTrafficMirrorSessionsInput, opts ...request.Option) (*DescribeTrafficMirrorSessionsOutput, error) { + req, out := c.DescribeTrafficMirrorSessionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeTrafficMirrorSessionsPages iterates over the pages of a DescribeTrafficMirrorSessions operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeTrafficMirrorSessions method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeTrafficMirrorSessions operation. +// pageNum := 0 +// err := client.DescribeTrafficMirrorSessionsPages(params, +// func(page *ec2.DescribeTrafficMirrorSessionsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeTrafficMirrorSessionsPages(input *DescribeTrafficMirrorSessionsInput, fn func(*DescribeTrafficMirrorSessionsOutput, bool) bool) error { + return c.DescribeTrafficMirrorSessionsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeTrafficMirrorSessionsPagesWithContext same as DescribeTrafficMirrorSessionsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeTrafficMirrorSessionsPagesWithContext(ctx aws.Context, input *DescribeTrafficMirrorSessionsInput, fn func(*DescribeTrafficMirrorSessionsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeTrafficMirrorSessionsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeTrafficMirrorSessionsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeTrafficMirrorSessionsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeTrafficMirrorTargets = "DescribeTrafficMirrorTargets" + +// DescribeTrafficMirrorTargetsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeTrafficMirrorTargets operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeTrafficMirrorTargets for more information on using the DescribeTrafficMirrorTargets +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeTrafficMirrorTargetsRequest method. +// req, resp := client.DescribeTrafficMirrorTargetsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTrafficMirrorTargets +func (c *EC2) DescribeTrafficMirrorTargetsRequest(input *DescribeTrafficMirrorTargetsInput) (req *request.Request, output *DescribeTrafficMirrorTargetsOutput) { + op := &request.Operation{ + Name: opDescribeTrafficMirrorTargets, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeTrafficMirrorTargetsInput{} + } + + output = &DescribeTrafficMirrorTargetsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeTrafficMirrorTargets API operation for Amazon Elastic Compute Cloud. +// +// Information about one or more Traffic Mirror targets. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeTrafficMirrorTargets for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTrafficMirrorTargets +func (c *EC2) DescribeTrafficMirrorTargets(input *DescribeTrafficMirrorTargetsInput) (*DescribeTrafficMirrorTargetsOutput, error) { + req, out := c.DescribeTrafficMirrorTargetsRequest(input) + return out, req.Send() +} + +// DescribeTrafficMirrorTargetsWithContext is the same as DescribeTrafficMirrorTargets with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeTrafficMirrorTargets for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeTrafficMirrorTargetsWithContext(ctx aws.Context, input *DescribeTrafficMirrorTargetsInput, opts ...request.Option) (*DescribeTrafficMirrorTargetsOutput, error) { + req, out := c.DescribeTrafficMirrorTargetsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeTrafficMirrorTargetsPages iterates over the pages of a DescribeTrafficMirrorTargets operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeTrafficMirrorTargets method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeTrafficMirrorTargets operation. +// pageNum := 0 +// err := client.DescribeTrafficMirrorTargetsPages(params, +// func(page *ec2.DescribeTrafficMirrorTargetsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeTrafficMirrorTargetsPages(input *DescribeTrafficMirrorTargetsInput, fn func(*DescribeTrafficMirrorTargetsOutput, bool) bool) error { + return c.DescribeTrafficMirrorTargetsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeTrafficMirrorTargetsPagesWithContext same as DescribeTrafficMirrorTargetsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeTrafficMirrorTargetsPagesWithContext(ctx aws.Context, input *DescribeTrafficMirrorTargetsInput, fn func(*DescribeTrafficMirrorTargetsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeTrafficMirrorTargetsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeTrafficMirrorTargetsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeTrafficMirrorTargetsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeTransitGatewayAttachments = "DescribeTransitGatewayAttachments" + +// DescribeTransitGatewayAttachmentsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeTransitGatewayAttachments operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeTransitGatewayAttachments for more information on using the DescribeTransitGatewayAttachments +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeTransitGatewayAttachmentsRequest method. +// req, resp := client.DescribeTransitGatewayAttachmentsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTransitGatewayAttachments +func (c *EC2) DescribeTransitGatewayAttachmentsRequest(input *DescribeTransitGatewayAttachmentsInput) (req *request.Request, output *DescribeTransitGatewayAttachmentsOutput) { + op := &request.Operation{ + Name: opDescribeTransitGatewayAttachments, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeTransitGatewayAttachmentsInput{} + } + + output = &DescribeTransitGatewayAttachmentsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeTransitGatewayAttachments API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more attachments between resources and transit gateways. +// By default, all attachments are described. Alternatively, you can filter +// the results by attachment ID, attachment state, resource ID, or resource +// owner. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeTransitGatewayAttachments for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTransitGatewayAttachments +func (c *EC2) DescribeTransitGatewayAttachments(input *DescribeTransitGatewayAttachmentsInput) (*DescribeTransitGatewayAttachmentsOutput, error) { + req, out := c.DescribeTransitGatewayAttachmentsRequest(input) + return out, req.Send() +} + +// DescribeTransitGatewayAttachmentsWithContext is the same as DescribeTransitGatewayAttachments with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeTransitGatewayAttachments for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeTransitGatewayAttachmentsWithContext(ctx aws.Context, input *DescribeTransitGatewayAttachmentsInput, opts ...request.Option) (*DescribeTransitGatewayAttachmentsOutput, error) { + req, out := c.DescribeTransitGatewayAttachmentsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeTransitGatewayAttachmentsPages iterates over the pages of a DescribeTransitGatewayAttachments operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeTransitGatewayAttachments method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeTransitGatewayAttachments operation. +// pageNum := 0 +// err := client.DescribeTransitGatewayAttachmentsPages(params, +// func(page *ec2.DescribeTransitGatewayAttachmentsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeTransitGatewayAttachmentsPages(input *DescribeTransitGatewayAttachmentsInput, fn func(*DescribeTransitGatewayAttachmentsOutput, bool) bool) error { + return c.DescribeTransitGatewayAttachmentsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeTransitGatewayAttachmentsPagesWithContext same as DescribeTransitGatewayAttachmentsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeTransitGatewayAttachmentsPagesWithContext(ctx aws.Context, input *DescribeTransitGatewayAttachmentsInput, fn func(*DescribeTransitGatewayAttachmentsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeTransitGatewayAttachmentsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeTransitGatewayAttachmentsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeTransitGatewayAttachmentsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeTransitGatewayRouteTables = "DescribeTransitGatewayRouteTables" + +// DescribeTransitGatewayRouteTablesRequest generates a "aws/request.Request" representing the +// client's request for the DescribeTransitGatewayRouteTables operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeTransitGatewayRouteTables for more information on using the DescribeTransitGatewayRouteTables +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeTransitGatewayRouteTablesRequest method. +// req, resp := client.DescribeTransitGatewayRouteTablesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTransitGatewayRouteTables +func (c *EC2) DescribeTransitGatewayRouteTablesRequest(input *DescribeTransitGatewayRouteTablesInput) (req *request.Request, output *DescribeTransitGatewayRouteTablesOutput) { + op := &request.Operation{ + Name: opDescribeTransitGatewayRouteTables, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeTransitGatewayRouteTablesInput{} + } + + output = &DescribeTransitGatewayRouteTablesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeTransitGatewayRouteTables API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more transit gateway route tables. By default, all transit +// gateway route tables are described. Alternatively, you can filter the results. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeTransitGatewayRouteTables for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTransitGatewayRouteTables +func (c *EC2) DescribeTransitGatewayRouteTables(input *DescribeTransitGatewayRouteTablesInput) (*DescribeTransitGatewayRouteTablesOutput, error) { + req, out := c.DescribeTransitGatewayRouteTablesRequest(input) + return out, req.Send() +} + +// DescribeTransitGatewayRouteTablesWithContext is the same as DescribeTransitGatewayRouteTables with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeTransitGatewayRouteTables for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeTransitGatewayRouteTablesWithContext(ctx aws.Context, input *DescribeTransitGatewayRouteTablesInput, opts ...request.Option) (*DescribeTransitGatewayRouteTablesOutput, error) { + req, out := c.DescribeTransitGatewayRouteTablesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeTransitGatewayRouteTablesPages iterates over the pages of a DescribeTransitGatewayRouteTables operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeTransitGatewayRouteTables method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeTransitGatewayRouteTables operation. +// pageNum := 0 +// err := client.DescribeTransitGatewayRouteTablesPages(params, +// func(page *ec2.DescribeTransitGatewayRouteTablesOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeTransitGatewayRouteTablesPages(input *DescribeTransitGatewayRouteTablesInput, fn func(*DescribeTransitGatewayRouteTablesOutput, bool) bool) error { + return c.DescribeTransitGatewayRouteTablesPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeTransitGatewayRouteTablesPagesWithContext same as DescribeTransitGatewayRouteTablesPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeTransitGatewayRouteTablesPagesWithContext(ctx aws.Context, input *DescribeTransitGatewayRouteTablesInput, fn func(*DescribeTransitGatewayRouteTablesOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeTransitGatewayRouteTablesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeTransitGatewayRouteTablesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeTransitGatewayRouteTablesOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeTransitGatewayVpcAttachments = "DescribeTransitGatewayVpcAttachments" + +// DescribeTransitGatewayVpcAttachmentsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeTransitGatewayVpcAttachments operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeTransitGatewayVpcAttachments for more information on using the DescribeTransitGatewayVpcAttachments +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeTransitGatewayVpcAttachmentsRequest method. +// req, resp := client.DescribeTransitGatewayVpcAttachmentsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTransitGatewayVpcAttachments +func (c *EC2) DescribeTransitGatewayVpcAttachmentsRequest(input *DescribeTransitGatewayVpcAttachmentsInput) (req *request.Request, output *DescribeTransitGatewayVpcAttachmentsOutput) { + op := &request.Operation{ + Name: opDescribeTransitGatewayVpcAttachments, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeTransitGatewayVpcAttachmentsInput{} + } + + output = &DescribeTransitGatewayVpcAttachmentsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeTransitGatewayVpcAttachments API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more VPC attachments. By default, all VPC attachments are +// described. Alternatively, you can filter the results. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeTransitGatewayVpcAttachments for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTransitGatewayVpcAttachments +func (c *EC2) DescribeTransitGatewayVpcAttachments(input *DescribeTransitGatewayVpcAttachmentsInput) (*DescribeTransitGatewayVpcAttachmentsOutput, error) { + req, out := c.DescribeTransitGatewayVpcAttachmentsRequest(input) + return out, req.Send() +} + +// DescribeTransitGatewayVpcAttachmentsWithContext is the same as DescribeTransitGatewayVpcAttachments with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeTransitGatewayVpcAttachments for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeTransitGatewayVpcAttachmentsWithContext(ctx aws.Context, input *DescribeTransitGatewayVpcAttachmentsInput, opts ...request.Option) (*DescribeTransitGatewayVpcAttachmentsOutput, error) { + req, out := c.DescribeTransitGatewayVpcAttachmentsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeTransitGatewayVpcAttachmentsPages iterates over the pages of a DescribeTransitGatewayVpcAttachments operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeTransitGatewayVpcAttachments method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeTransitGatewayVpcAttachments operation. +// pageNum := 0 +// err := client.DescribeTransitGatewayVpcAttachmentsPages(params, +// func(page *ec2.DescribeTransitGatewayVpcAttachmentsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeTransitGatewayVpcAttachmentsPages(input *DescribeTransitGatewayVpcAttachmentsInput, fn func(*DescribeTransitGatewayVpcAttachmentsOutput, bool) bool) error { + return c.DescribeTransitGatewayVpcAttachmentsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeTransitGatewayVpcAttachmentsPagesWithContext same as DescribeTransitGatewayVpcAttachmentsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeTransitGatewayVpcAttachmentsPagesWithContext(ctx aws.Context, input *DescribeTransitGatewayVpcAttachmentsInput, fn func(*DescribeTransitGatewayVpcAttachmentsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeTransitGatewayVpcAttachmentsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeTransitGatewayVpcAttachmentsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeTransitGatewayVpcAttachmentsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeTransitGateways = "DescribeTransitGateways" + +// DescribeTransitGatewaysRequest generates a "aws/request.Request" representing the +// client's request for the DescribeTransitGateways operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeTransitGateways for more information on using the DescribeTransitGateways +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeTransitGatewaysRequest method. +// req, resp := client.DescribeTransitGatewaysRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTransitGateways +func (c *EC2) DescribeTransitGatewaysRequest(input *DescribeTransitGatewaysInput) (req *request.Request, output *DescribeTransitGatewaysOutput) { + op := &request.Operation{ + Name: opDescribeTransitGateways, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeTransitGatewaysInput{} + } + + output = &DescribeTransitGatewaysOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeTransitGateways API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more transit gateways. By default, all transit gateways +// are described. Alternatively, you can filter the results. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeTransitGateways for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTransitGateways +func (c *EC2) DescribeTransitGateways(input *DescribeTransitGatewaysInput) (*DescribeTransitGatewaysOutput, error) { + req, out := c.DescribeTransitGatewaysRequest(input) + return out, req.Send() +} + +// DescribeTransitGatewaysWithContext is the same as DescribeTransitGateways with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeTransitGateways for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeTransitGatewaysWithContext(ctx aws.Context, input *DescribeTransitGatewaysInput, opts ...request.Option) (*DescribeTransitGatewaysOutput, error) { + req, out := c.DescribeTransitGatewaysRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeTransitGatewaysPages iterates over the pages of a DescribeTransitGateways operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeTransitGateways method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeTransitGateways operation. +// pageNum := 0 +// err := client.DescribeTransitGatewaysPages(params, +// func(page *ec2.DescribeTransitGatewaysOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeTransitGatewaysPages(input *DescribeTransitGatewaysInput, fn func(*DescribeTransitGatewaysOutput, bool) bool) error { + return c.DescribeTransitGatewaysPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeTransitGatewaysPagesWithContext same as DescribeTransitGatewaysPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeTransitGatewaysPagesWithContext(ctx aws.Context, input *DescribeTransitGatewaysInput, fn func(*DescribeTransitGatewaysOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeTransitGatewaysInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeTransitGatewaysRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeTransitGatewaysOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeVolumeAttribute = "DescribeVolumeAttribute" + +// DescribeVolumeAttributeRequest generates a "aws/request.Request" representing the +// client's request for the DescribeVolumeAttribute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeVolumeAttribute for more information on using the DescribeVolumeAttribute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeVolumeAttributeRequest method. +// req, resp := client.DescribeVolumeAttributeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumeAttribute +func (c *EC2) DescribeVolumeAttributeRequest(input *DescribeVolumeAttributeInput) (req *request.Request, output *DescribeVolumeAttributeOutput) { + op := &request.Operation{ + Name: opDescribeVolumeAttribute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeVolumeAttributeInput{} + } + + output = &DescribeVolumeAttributeOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeVolumeAttribute API operation for Amazon Elastic Compute Cloud. +// +// Describes the specified attribute of the specified volume. You can specify +// only one attribute at a time. +// +// For more information about EBS volumes, see Amazon EBS Volumes (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumes.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeVolumeAttribute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumeAttribute +func (c *EC2) DescribeVolumeAttribute(input *DescribeVolumeAttributeInput) (*DescribeVolumeAttributeOutput, error) { + req, out := c.DescribeVolumeAttributeRequest(input) + return out, req.Send() +} + +// DescribeVolumeAttributeWithContext is the same as DescribeVolumeAttribute with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeVolumeAttribute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVolumeAttributeWithContext(ctx aws.Context, input *DescribeVolumeAttributeInput, opts ...request.Option) (*DescribeVolumeAttributeOutput, error) { + req, out := c.DescribeVolumeAttributeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeVolumeStatus = "DescribeVolumeStatus" + +// DescribeVolumeStatusRequest generates a "aws/request.Request" representing the +// client's request for the DescribeVolumeStatus operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeVolumeStatus for more information on using the DescribeVolumeStatus +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeVolumeStatusRequest method. +// req, resp := client.DescribeVolumeStatusRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumeStatus +func (c *EC2) DescribeVolumeStatusRequest(input *DescribeVolumeStatusInput) (req *request.Request, output *DescribeVolumeStatusOutput) { + op := &request.Operation{ + Name: opDescribeVolumeStatus, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeVolumeStatusInput{} + } + + output = &DescribeVolumeStatusOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeVolumeStatus API operation for Amazon Elastic Compute Cloud. +// +// Describes the status of the specified volumes. Volume status provides the +// result of the checks performed on your volumes to determine events that can +// impair the performance of your volumes. The performance of a volume can be +// affected if an issue occurs on the volume's underlying host. If the volume's +// underlying host experiences a power outage or system issue, after the system +// is restored, there could be data inconsistencies on the volume. Volume events +// notify you if this occurs. Volume actions notify you if any action needs +// to be taken in response to the event. +// +// The DescribeVolumeStatus operation provides the following information about +// the specified volumes: +// +// Status: Reflects the current status of the volume. The possible values are +// ok, impaired , warning, or insufficient-data. If all checks pass, the overall +// status of the volume is ok. If the check fails, the overall status is impaired. +// If the status is insufficient-data, then the checks may still be taking place +// on your volume at the time. We recommend that you retry the request. For +// more information about volume status, see Monitoring the Status of Your Volumes +// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-volume-status.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Events: Reflect the cause of a volume status and may require you to take +// action. For example, if your volume returns an impaired status, then the +// volume event might be potential-data-inconsistency. This means that your +// volume has been affected by an issue with the underlying host, has all I/O +// operations disabled, and may have inconsistent data. +// +// Actions: Reflect the actions you may have to take in response to an event. +// For example, if the status of the volume is impaired and the volume event +// shows potential-data-inconsistency, then the action shows enable-volume-io. +// This means that you may want to enable the I/O operations for the volume +// by calling the EnableVolumeIO action and then check the volume for data consistency. +// +// Volume status is based on the volume status checks, and does not reflect +// the volume state. Therefore, volume status does not indicate volumes in the +// error state (for example, when a volume is incapable of accepting I/O.) +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeVolumeStatus for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumeStatus +func (c *EC2) DescribeVolumeStatus(input *DescribeVolumeStatusInput) (*DescribeVolumeStatusOutput, error) { + req, out := c.DescribeVolumeStatusRequest(input) + return out, req.Send() +} + +// DescribeVolumeStatusWithContext is the same as DescribeVolumeStatus with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeVolumeStatus for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVolumeStatusWithContext(ctx aws.Context, input *DescribeVolumeStatusInput, opts ...request.Option) (*DescribeVolumeStatusOutput, error) { + req, out := c.DescribeVolumeStatusRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeVolumeStatusPages iterates over the pages of a DescribeVolumeStatus operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeVolumeStatus method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeVolumeStatus operation. +// pageNum := 0 +// err := client.DescribeVolumeStatusPages(params, +// func(page *ec2.DescribeVolumeStatusOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeVolumeStatusPages(input *DescribeVolumeStatusInput, fn func(*DescribeVolumeStatusOutput, bool) bool) error { + return c.DescribeVolumeStatusPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeVolumeStatusPagesWithContext same as DescribeVolumeStatusPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVolumeStatusPagesWithContext(ctx aws.Context, input *DescribeVolumeStatusInput, fn func(*DescribeVolumeStatusOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeVolumeStatusInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeVolumeStatusRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeVolumeStatusOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeVolumes = "DescribeVolumes" + +// DescribeVolumesRequest generates a "aws/request.Request" representing the +// client's request for the DescribeVolumes operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeVolumes for more information on using the DescribeVolumes +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeVolumesRequest method. +// req, resp := client.DescribeVolumesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumes +func (c *EC2) DescribeVolumesRequest(input *DescribeVolumesInput) (req *request.Request, output *DescribeVolumesOutput) { + op := &request.Operation{ + Name: opDescribeVolumes, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeVolumesInput{} + } + + output = &DescribeVolumesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeVolumes API operation for Amazon Elastic Compute Cloud. +// +// Describes the specified EBS volumes or all of your EBS volumes. +// +// If you are describing a long list of volumes, you can paginate the output +// to make the list more manageable. The MaxResults parameter sets the maximum +// number of results returned in a single page. If the list of results exceeds +// your MaxResults value, then that number of results is returned along with +// a NextToken value that can be passed to a subsequent DescribeVolumes request +// to retrieve the remaining results. +// +// For more information about EBS volumes, see Amazon EBS Volumes (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumes.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeVolumes for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumes +func (c *EC2) DescribeVolumes(input *DescribeVolumesInput) (*DescribeVolumesOutput, error) { + req, out := c.DescribeVolumesRequest(input) + return out, req.Send() +} + +// DescribeVolumesWithContext is the same as DescribeVolumes with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeVolumes for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVolumesWithContext(ctx aws.Context, input *DescribeVolumesInput, opts ...request.Option) (*DescribeVolumesOutput, error) { + req, out := c.DescribeVolumesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeVolumesPages iterates over the pages of a DescribeVolumes operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeVolumes method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeVolumes operation. +// pageNum := 0 +// err := client.DescribeVolumesPages(params, +// func(page *ec2.DescribeVolumesOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeVolumesPages(input *DescribeVolumesInput, fn func(*DescribeVolumesOutput, bool) bool) error { + return c.DescribeVolumesPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeVolumesPagesWithContext same as DescribeVolumesPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVolumesPagesWithContext(ctx aws.Context, input *DescribeVolumesInput, fn func(*DescribeVolumesOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeVolumesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeVolumesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeVolumesOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeVolumesModifications = "DescribeVolumesModifications" + +// DescribeVolumesModificationsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeVolumesModifications operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeVolumesModifications for more information on using the DescribeVolumesModifications +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeVolumesModificationsRequest method. +// req, resp := client.DescribeVolumesModificationsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumesModifications +func (c *EC2) DescribeVolumesModificationsRequest(input *DescribeVolumesModificationsInput) (req *request.Request, output *DescribeVolumesModificationsOutput) { + op := &request.Operation{ + Name: opDescribeVolumesModifications, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeVolumesModificationsInput{} + } + + output = &DescribeVolumesModificationsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeVolumesModifications API operation for Amazon Elastic Compute Cloud. +// +// Reports the current modification status of EBS volumes. +// +// Current-generation EBS volumes support modification of attributes including +// type, size, and (for io1 volumes) IOPS provisioning while either attached +// to or detached from an instance. Following an action from the API or the +// console to modify a volume, the status of the modification may be modifying, +// optimizing, completed, or failed. If a volume has never been modified, then +// certain elements of the returned VolumeModification objects are null. +// +// You can also use CloudWatch Events to check the status of a modification +// to an EBS volume. For information about CloudWatch Events, see the Amazon +// CloudWatch Events User Guide (https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/). +// For more information, see Monitoring Volume Modifications" (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html#monitoring_mods) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeVolumesModifications for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVolumesModifications +func (c *EC2) DescribeVolumesModifications(input *DescribeVolumesModificationsInput) (*DescribeVolumesModificationsOutput, error) { + req, out := c.DescribeVolumesModificationsRequest(input) + return out, req.Send() +} + +// DescribeVolumesModificationsWithContext is the same as DescribeVolumesModifications with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeVolumesModifications for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVolumesModificationsWithContext(ctx aws.Context, input *DescribeVolumesModificationsInput, opts ...request.Option) (*DescribeVolumesModificationsOutput, error) { + req, out := c.DescribeVolumesModificationsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeVolumesModificationsPages iterates over the pages of a DescribeVolumesModifications operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeVolumesModifications method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeVolumesModifications operation. +// pageNum := 0 +// err := client.DescribeVolumesModificationsPages(params, +// func(page *ec2.DescribeVolumesModificationsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeVolumesModificationsPages(input *DescribeVolumesModificationsInput, fn func(*DescribeVolumesModificationsOutput, bool) bool) error { + return c.DescribeVolumesModificationsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeVolumesModificationsPagesWithContext same as DescribeVolumesModificationsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVolumesModificationsPagesWithContext(ctx aws.Context, input *DescribeVolumesModificationsInput, fn func(*DescribeVolumesModificationsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeVolumesModificationsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeVolumesModificationsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeVolumesModificationsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeVpcAttribute = "DescribeVpcAttribute" + +// DescribeVpcAttributeRequest generates a "aws/request.Request" representing the +// client's request for the DescribeVpcAttribute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeVpcAttribute for more information on using the DescribeVpcAttribute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeVpcAttributeRequest method. +// req, resp := client.DescribeVpcAttributeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcAttribute +func (c *EC2) DescribeVpcAttributeRequest(input *DescribeVpcAttributeInput) (req *request.Request, output *DescribeVpcAttributeOutput) { + op := &request.Operation{ + Name: opDescribeVpcAttribute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeVpcAttributeInput{} + } + + output = &DescribeVpcAttributeOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeVpcAttribute API operation for Amazon Elastic Compute Cloud. +// +// Describes the specified attribute of the specified VPC. You can specify only +// one attribute at a time. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeVpcAttribute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcAttribute +func (c *EC2) DescribeVpcAttribute(input *DescribeVpcAttributeInput) (*DescribeVpcAttributeOutput, error) { + req, out := c.DescribeVpcAttributeRequest(input) + return out, req.Send() +} + +// DescribeVpcAttributeWithContext is the same as DescribeVpcAttribute with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeVpcAttribute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVpcAttributeWithContext(ctx aws.Context, input *DescribeVpcAttributeInput, opts ...request.Option) (*DescribeVpcAttributeOutput, error) { + req, out := c.DescribeVpcAttributeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeVpcClassicLink = "DescribeVpcClassicLink" + +// DescribeVpcClassicLinkRequest generates a "aws/request.Request" representing the +// client's request for the DescribeVpcClassicLink operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeVpcClassicLink for more information on using the DescribeVpcClassicLink +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeVpcClassicLinkRequest method. +// req, resp := client.DescribeVpcClassicLinkRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcClassicLink +func (c *EC2) DescribeVpcClassicLinkRequest(input *DescribeVpcClassicLinkInput) (req *request.Request, output *DescribeVpcClassicLinkOutput) { + op := &request.Operation{ + Name: opDescribeVpcClassicLink, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeVpcClassicLinkInput{} + } + + output = &DescribeVpcClassicLinkOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeVpcClassicLink API operation for Amazon Elastic Compute Cloud. +// +// Describes the ClassicLink status of one or more VPCs. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeVpcClassicLink for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcClassicLink +func (c *EC2) DescribeVpcClassicLink(input *DescribeVpcClassicLinkInput) (*DescribeVpcClassicLinkOutput, error) { + req, out := c.DescribeVpcClassicLinkRequest(input) + return out, req.Send() +} + +// DescribeVpcClassicLinkWithContext is the same as DescribeVpcClassicLink with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeVpcClassicLink for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVpcClassicLinkWithContext(ctx aws.Context, input *DescribeVpcClassicLinkInput, opts ...request.Option) (*DescribeVpcClassicLinkOutput, error) { + req, out := c.DescribeVpcClassicLinkRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeVpcClassicLinkDnsSupport = "DescribeVpcClassicLinkDnsSupport" + +// DescribeVpcClassicLinkDnsSupportRequest generates a "aws/request.Request" representing the +// client's request for the DescribeVpcClassicLinkDnsSupport operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeVpcClassicLinkDnsSupport for more information on using the DescribeVpcClassicLinkDnsSupport +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeVpcClassicLinkDnsSupportRequest method. +// req, resp := client.DescribeVpcClassicLinkDnsSupportRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcClassicLinkDnsSupport +func (c *EC2) DescribeVpcClassicLinkDnsSupportRequest(input *DescribeVpcClassicLinkDnsSupportInput) (req *request.Request, output *DescribeVpcClassicLinkDnsSupportOutput) { + op := &request.Operation{ + Name: opDescribeVpcClassicLinkDnsSupport, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeVpcClassicLinkDnsSupportInput{} + } + + output = &DescribeVpcClassicLinkDnsSupportOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeVpcClassicLinkDnsSupport API operation for Amazon Elastic Compute Cloud. +// +// Describes the ClassicLink DNS support status of one or more VPCs. If enabled, +// the DNS hostname of a linked EC2-Classic instance resolves to its private +// IP address when addressed from an instance in the VPC to which it's linked. +// Similarly, the DNS hostname of an instance in a VPC resolves to its private +// IP address when addressed from a linked EC2-Classic instance. For more information, +// see ClassicLink (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeVpcClassicLinkDnsSupport for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcClassicLinkDnsSupport +func (c *EC2) DescribeVpcClassicLinkDnsSupport(input *DescribeVpcClassicLinkDnsSupportInput) (*DescribeVpcClassicLinkDnsSupportOutput, error) { + req, out := c.DescribeVpcClassicLinkDnsSupportRequest(input) + return out, req.Send() +} + +// DescribeVpcClassicLinkDnsSupportWithContext is the same as DescribeVpcClassicLinkDnsSupport with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeVpcClassicLinkDnsSupport for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVpcClassicLinkDnsSupportWithContext(ctx aws.Context, input *DescribeVpcClassicLinkDnsSupportInput, opts ...request.Option) (*DescribeVpcClassicLinkDnsSupportOutput, error) { + req, out := c.DescribeVpcClassicLinkDnsSupportRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeVpcClassicLinkDnsSupportPages iterates over the pages of a DescribeVpcClassicLinkDnsSupport operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeVpcClassicLinkDnsSupport method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeVpcClassicLinkDnsSupport operation. +// pageNum := 0 +// err := client.DescribeVpcClassicLinkDnsSupportPages(params, +// func(page *ec2.DescribeVpcClassicLinkDnsSupportOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeVpcClassicLinkDnsSupportPages(input *DescribeVpcClassicLinkDnsSupportInput, fn func(*DescribeVpcClassicLinkDnsSupportOutput, bool) bool) error { + return c.DescribeVpcClassicLinkDnsSupportPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeVpcClassicLinkDnsSupportPagesWithContext same as DescribeVpcClassicLinkDnsSupportPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVpcClassicLinkDnsSupportPagesWithContext(ctx aws.Context, input *DescribeVpcClassicLinkDnsSupportInput, fn func(*DescribeVpcClassicLinkDnsSupportOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeVpcClassicLinkDnsSupportInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeVpcClassicLinkDnsSupportRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeVpcClassicLinkDnsSupportOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeVpcEndpointConnectionNotifications = "DescribeVpcEndpointConnectionNotifications" + +// DescribeVpcEndpointConnectionNotificationsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeVpcEndpointConnectionNotifications operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeVpcEndpointConnectionNotifications for more information on using the DescribeVpcEndpointConnectionNotifications +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeVpcEndpointConnectionNotificationsRequest method. +// req, resp := client.DescribeVpcEndpointConnectionNotificationsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointConnectionNotifications +func (c *EC2) DescribeVpcEndpointConnectionNotificationsRequest(input *DescribeVpcEndpointConnectionNotificationsInput) (req *request.Request, output *DescribeVpcEndpointConnectionNotificationsOutput) { + op := &request.Operation{ + Name: opDescribeVpcEndpointConnectionNotifications, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeVpcEndpointConnectionNotificationsInput{} + } + + output = &DescribeVpcEndpointConnectionNotificationsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeVpcEndpointConnectionNotifications API operation for Amazon Elastic Compute Cloud. +// +// Describes the connection notifications for VPC endpoints and VPC endpoint +// services. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeVpcEndpointConnectionNotifications for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointConnectionNotifications +func (c *EC2) DescribeVpcEndpointConnectionNotifications(input *DescribeVpcEndpointConnectionNotificationsInput) (*DescribeVpcEndpointConnectionNotificationsOutput, error) { + req, out := c.DescribeVpcEndpointConnectionNotificationsRequest(input) + return out, req.Send() +} + +// DescribeVpcEndpointConnectionNotificationsWithContext is the same as DescribeVpcEndpointConnectionNotifications with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeVpcEndpointConnectionNotifications for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVpcEndpointConnectionNotificationsWithContext(ctx aws.Context, input *DescribeVpcEndpointConnectionNotificationsInput, opts ...request.Option) (*DescribeVpcEndpointConnectionNotificationsOutput, error) { + req, out := c.DescribeVpcEndpointConnectionNotificationsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeVpcEndpointConnectionNotificationsPages iterates over the pages of a DescribeVpcEndpointConnectionNotifications operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeVpcEndpointConnectionNotifications method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeVpcEndpointConnectionNotifications operation. +// pageNum := 0 +// err := client.DescribeVpcEndpointConnectionNotificationsPages(params, +// func(page *ec2.DescribeVpcEndpointConnectionNotificationsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeVpcEndpointConnectionNotificationsPages(input *DescribeVpcEndpointConnectionNotificationsInput, fn func(*DescribeVpcEndpointConnectionNotificationsOutput, bool) bool) error { + return c.DescribeVpcEndpointConnectionNotificationsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeVpcEndpointConnectionNotificationsPagesWithContext same as DescribeVpcEndpointConnectionNotificationsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVpcEndpointConnectionNotificationsPagesWithContext(ctx aws.Context, input *DescribeVpcEndpointConnectionNotificationsInput, fn func(*DescribeVpcEndpointConnectionNotificationsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeVpcEndpointConnectionNotificationsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeVpcEndpointConnectionNotificationsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeVpcEndpointConnectionNotificationsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeVpcEndpointConnections = "DescribeVpcEndpointConnections" + +// DescribeVpcEndpointConnectionsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeVpcEndpointConnections operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeVpcEndpointConnections for more information on using the DescribeVpcEndpointConnections +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeVpcEndpointConnectionsRequest method. +// req, resp := client.DescribeVpcEndpointConnectionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointConnections +func (c *EC2) DescribeVpcEndpointConnectionsRequest(input *DescribeVpcEndpointConnectionsInput) (req *request.Request, output *DescribeVpcEndpointConnectionsOutput) { + op := &request.Operation{ + Name: opDescribeVpcEndpointConnections, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeVpcEndpointConnectionsInput{} + } + + output = &DescribeVpcEndpointConnectionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeVpcEndpointConnections API operation for Amazon Elastic Compute Cloud. +// +// Describes the VPC endpoint connections to your VPC endpoint services, including +// any endpoints that are pending your acceptance. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeVpcEndpointConnections for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointConnections +func (c *EC2) DescribeVpcEndpointConnections(input *DescribeVpcEndpointConnectionsInput) (*DescribeVpcEndpointConnectionsOutput, error) { + req, out := c.DescribeVpcEndpointConnectionsRequest(input) + return out, req.Send() +} + +// DescribeVpcEndpointConnectionsWithContext is the same as DescribeVpcEndpointConnections with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeVpcEndpointConnections for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVpcEndpointConnectionsWithContext(ctx aws.Context, input *DescribeVpcEndpointConnectionsInput, opts ...request.Option) (*DescribeVpcEndpointConnectionsOutput, error) { + req, out := c.DescribeVpcEndpointConnectionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeVpcEndpointConnectionsPages iterates over the pages of a DescribeVpcEndpointConnections operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeVpcEndpointConnections method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeVpcEndpointConnections operation. +// pageNum := 0 +// err := client.DescribeVpcEndpointConnectionsPages(params, +// func(page *ec2.DescribeVpcEndpointConnectionsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeVpcEndpointConnectionsPages(input *DescribeVpcEndpointConnectionsInput, fn func(*DescribeVpcEndpointConnectionsOutput, bool) bool) error { + return c.DescribeVpcEndpointConnectionsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeVpcEndpointConnectionsPagesWithContext same as DescribeVpcEndpointConnectionsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVpcEndpointConnectionsPagesWithContext(ctx aws.Context, input *DescribeVpcEndpointConnectionsInput, fn func(*DescribeVpcEndpointConnectionsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeVpcEndpointConnectionsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeVpcEndpointConnectionsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeVpcEndpointConnectionsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeVpcEndpointServiceConfigurations = "DescribeVpcEndpointServiceConfigurations" + +// DescribeVpcEndpointServiceConfigurationsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeVpcEndpointServiceConfigurations operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeVpcEndpointServiceConfigurations for more information on using the DescribeVpcEndpointServiceConfigurations +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeVpcEndpointServiceConfigurationsRequest method. +// req, resp := client.DescribeVpcEndpointServiceConfigurationsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointServiceConfigurations +func (c *EC2) DescribeVpcEndpointServiceConfigurationsRequest(input *DescribeVpcEndpointServiceConfigurationsInput) (req *request.Request, output *DescribeVpcEndpointServiceConfigurationsOutput) { + op := &request.Operation{ + Name: opDescribeVpcEndpointServiceConfigurations, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeVpcEndpointServiceConfigurationsInput{} + } + + output = &DescribeVpcEndpointServiceConfigurationsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeVpcEndpointServiceConfigurations API operation for Amazon Elastic Compute Cloud. +// +// Describes the VPC endpoint service configurations in your account (your services). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeVpcEndpointServiceConfigurations for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointServiceConfigurations +func (c *EC2) DescribeVpcEndpointServiceConfigurations(input *DescribeVpcEndpointServiceConfigurationsInput) (*DescribeVpcEndpointServiceConfigurationsOutput, error) { + req, out := c.DescribeVpcEndpointServiceConfigurationsRequest(input) + return out, req.Send() +} + +// DescribeVpcEndpointServiceConfigurationsWithContext is the same as DescribeVpcEndpointServiceConfigurations with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeVpcEndpointServiceConfigurations for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVpcEndpointServiceConfigurationsWithContext(ctx aws.Context, input *DescribeVpcEndpointServiceConfigurationsInput, opts ...request.Option) (*DescribeVpcEndpointServiceConfigurationsOutput, error) { + req, out := c.DescribeVpcEndpointServiceConfigurationsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeVpcEndpointServiceConfigurationsPages iterates over the pages of a DescribeVpcEndpointServiceConfigurations operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeVpcEndpointServiceConfigurations method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeVpcEndpointServiceConfigurations operation. +// pageNum := 0 +// err := client.DescribeVpcEndpointServiceConfigurationsPages(params, +// func(page *ec2.DescribeVpcEndpointServiceConfigurationsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeVpcEndpointServiceConfigurationsPages(input *DescribeVpcEndpointServiceConfigurationsInput, fn func(*DescribeVpcEndpointServiceConfigurationsOutput, bool) bool) error { + return c.DescribeVpcEndpointServiceConfigurationsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeVpcEndpointServiceConfigurationsPagesWithContext same as DescribeVpcEndpointServiceConfigurationsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVpcEndpointServiceConfigurationsPagesWithContext(ctx aws.Context, input *DescribeVpcEndpointServiceConfigurationsInput, fn func(*DescribeVpcEndpointServiceConfigurationsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeVpcEndpointServiceConfigurationsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeVpcEndpointServiceConfigurationsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeVpcEndpointServiceConfigurationsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeVpcEndpointServicePermissions = "DescribeVpcEndpointServicePermissions" + +// DescribeVpcEndpointServicePermissionsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeVpcEndpointServicePermissions operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeVpcEndpointServicePermissions for more information on using the DescribeVpcEndpointServicePermissions +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeVpcEndpointServicePermissionsRequest method. +// req, resp := client.DescribeVpcEndpointServicePermissionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointServicePermissions +func (c *EC2) DescribeVpcEndpointServicePermissionsRequest(input *DescribeVpcEndpointServicePermissionsInput) (req *request.Request, output *DescribeVpcEndpointServicePermissionsOutput) { + op := &request.Operation{ + Name: opDescribeVpcEndpointServicePermissions, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeVpcEndpointServicePermissionsInput{} + } + + output = &DescribeVpcEndpointServicePermissionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeVpcEndpointServicePermissions API operation for Amazon Elastic Compute Cloud. +// +// Describes the principals (service consumers) that are permitted to discover +// your VPC endpoint service. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeVpcEndpointServicePermissions for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointServicePermissions +func (c *EC2) DescribeVpcEndpointServicePermissions(input *DescribeVpcEndpointServicePermissionsInput) (*DescribeVpcEndpointServicePermissionsOutput, error) { + req, out := c.DescribeVpcEndpointServicePermissionsRequest(input) + return out, req.Send() +} + +// DescribeVpcEndpointServicePermissionsWithContext is the same as DescribeVpcEndpointServicePermissions with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeVpcEndpointServicePermissions for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVpcEndpointServicePermissionsWithContext(ctx aws.Context, input *DescribeVpcEndpointServicePermissionsInput, opts ...request.Option) (*DescribeVpcEndpointServicePermissionsOutput, error) { + req, out := c.DescribeVpcEndpointServicePermissionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeVpcEndpointServicePermissionsPages iterates over the pages of a DescribeVpcEndpointServicePermissions operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeVpcEndpointServicePermissions method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeVpcEndpointServicePermissions operation. +// pageNum := 0 +// err := client.DescribeVpcEndpointServicePermissionsPages(params, +// func(page *ec2.DescribeVpcEndpointServicePermissionsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeVpcEndpointServicePermissionsPages(input *DescribeVpcEndpointServicePermissionsInput, fn func(*DescribeVpcEndpointServicePermissionsOutput, bool) bool) error { + return c.DescribeVpcEndpointServicePermissionsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeVpcEndpointServicePermissionsPagesWithContext same as DescribeVpcEndpointServicePermissionsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVpcEndpointServicePermissionsPagesWithContext(ctx aws.Context, input *DescribeVpcEndpointServicePermissionsInput, fn func(*DescribeVpcEndpointServicePermissionsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeVpcEndpointServicePermissionsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeVpcEndpointServicePermissionsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeVpcEndpointServicePermissionsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeVpcEndpointServices = "DescribeVpcEndpointServices" + +// DescribeVpcEndpointServicesRequest generates a "aws/request.Request" representing the +// client's request for the DescribeVpcEndpointServices operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeVpcEndpointServices for more information on using the DescribeVpcEndpointServices +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeVpcEndpointServicesRequest method. +// req, resp := client.DescribeVpcEndpointServicesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointServices +func (c *EC2) DescribeVpcEndpointServicesRequest(input *DescribeVpcEndpointServicesInput) (req *request.Request, output *DescribeVpcEndpointServicesOutput) { + op := &request.Operation{ + Name: opDescribeVpcEndpointServices, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeVpcEndpointServicesInput{} + } + + output = &DescribeVpcEndpointServicesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeVpcEndpointServices API operation for Amazon Elastic Compute Cloud. +// +// Describes available services to which you can create a VPC endpoint. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeVpcEndpointServices for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpointServices +func (c *EC2) DescribeVpcEndpointServices(input *DescribeVpcEndpointServicesInput) (*DescribeVpcEndpointServicesOutput, error) { + req, out := c.DescribeVpcEndpointServicesRequest(input) + return out, req.Send() +} + +// DescribeVpcEndpointServicesWithContext is the same as DescribeVpcEndpointServices with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeVpcEndpointServices for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVpcEndpointServicesWithContext(ctx aws.Context, input *DescribeVpcEndpointServicesInput, opts ...request.Option) (*DescribeVpcEndpointServicesOutput, error) { + req, out := c.DescribeVpcEndpointServicesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeVpcEndpoints = "DescribeVpcEndpoints" + +// DescribeVpcEndpointsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeVpcEndpoints operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeVpcEndpoints for more information on using the DescribeVpcEndpoints +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeVpcEndpointsRequest method. +// req, resp := client.DescribeVpcEndpointsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpoints +func (c *EC2) DescribeVpcEndpointsRequest(input *DescribeVpcEndpointsInput) (req *request.Request, output *DescribeVpcEndpointsOutput) { + op := &request.Operation{ + Name: opDescribeVpcEndpoints, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeVpcEndpointsInput{} + } + + output = &DescribeVpcEndpointsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeVpcEndpoints API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more of your VPC endpoints. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeVpcEndpoints for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcEndpoints +func (c *EC2) DescribeVpcEndpoints(input *DescribeVpcEndpointsInput) (*DescribeVpcEndpointsOutput, error) { + req, out := c.DescribeVpcEndpointsRequest(input) + return out, req.Send() +} + +// DescribeVpcEndpointsWithContext is the same as DescribeVpcEndpoints with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeVpcEndpoints for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVpcEndpointsWithContext(ctx aws.Context, input *DescribeVpcEndpointsInput, opts ...request.Option) (*DescribeVpcEndpointsOutput, error) { + req, out := c.DescribeVpcEndpointsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeVpcEndpointsPages iterates over the pages of a DescribeVpcEndpoints operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeVpcEndpoints method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeVpcEndpoints operation. +// pageNum := 0 +// err := client.DescribeVpcEndpointsPages(params, +// func(page *ec2.DescribeVpcEndpointsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeVpcEndpointsPages(input *DescribeVpcEndpointsInput, fn func(*DescribeVpcEndpointsOutput, bool) bool) error { + return c.DescribeVpcEndpointsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeVpcEndpointsPagesWithContext same as DescribeVpcEndpointsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVpcEndpointsPagesWithContext(ctx aws.Context, input *DescribeVpcEndpointsInput, fn func(*DescribeVpcEndpointsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeVpcEndpointsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeVpcEndpointsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeVpcEndpointsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeVpcPeeringConnections = "DescribeVpcPeeringConnections" + +// DescribeVpcPeeringConnectionsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeVpcPeeringConnections operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeVpcPeeringConnections for more information on using the DescribeVpcPeeringConnections +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeVpcPeeringConnectionsRequest method. +// req, resp := client.DescribeVpcPeeringConnectionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcPeeringConnections +func (c *EC2) DescribeVpcPeeringConnectionsRequest(input *DescribeVpcPeeringConnectionsInput) (req *request.Request, output *DescribeVpcPeeringConnectionsOutput) { + op := &request.Operation{ + Name: opDescribeVpcPeeringConnections, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeVpcPeeringConnectionsInput{} + } + + output = &DescribeVpcPeeringConnectionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeVpcPeeringConnections API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more of your VPC peering connections. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeVpcPeeringConnections for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcPeeringConnections +func (c *EC2) DescribeVpcPeeringConnections(input *DescribeVpcPeeringConnectionsInput) (*DescribeVpcPeeringConnectionsOutput, error) { + req, out := c.DescribeVpcPeeringConnectionsRequest(input) + return out, req.Send() +} + +// DescribeVpcPeeringConnectionsWithContext is the same as DescribeVpcPeeringConnections with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeVpcPeeringConnections for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVpcPeeringConnectionsWithContext(ctx aws.Context, input *DescribeVpcPeeringConnectionsInput, opts ...request.Option) (*DescribeVpcPeeringConnectionsOutput, error) { + req, out := c.DescribeVpcPeeringConnectionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeVpcPeeringConnectionsPages iterates over the pages of a DescribeVpcPeeringConnections operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeVpcPeeringConnections method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeVpcPeeringConnections operation. +// pageNum := 0 +// err := client.DescribeVpcPeeringConnectionsPages(params, +// func(page *ec2.DescribeVpcPeeringConnectionsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeVpcPeeringConnectionsPages(input *DescribeVpcPeeringConnectionsInput, fn func(*DescribeVpcPeeringConnectionsOutput, bool) bool) error { + return c.DescribeVpcPeeringConnectionsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeVpcPeeringConnectionsPagesWithContext same as DescribeVpcPeeringConnectionsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVpcPeeringConnectionsPagesWithContext(ctx aws.Context, input *DescribeVpcPeeringConnectionsInput, fn func(*DescribeVpcPeeringConnectionsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeVpcPeeringConnectionsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeVpcPeeringConnectionsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeVpcPeeringConnectionsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeVpcs = "DescribeVpcs" + +// DescribeVpcsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeVpcs operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeVpcs for more information on using the DescribeVpcs +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeVpcsRequest method. +// req, resp := client.DescribeVpcsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcs +func (c *EC2) DescribeVpcsRequest(input *DescribeVpcsInput) (req *request.Request, output *DescribeVpcsOutput) { + op := &request.Operation{ + Name: opDescribeVpcs, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeVpcsInput{} + } + + output = &DescribeVpcsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeVpcs API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more of your VPCs. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeVpcs for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpcs +func (c *EC2) DescribeVpcs(input *DescribeVpcsInput) (*DescribeVpcsOutput, error) { + req, out := c.DescribeVpcsRequest(input) + return out, req.Send() +} + +// DescribeVpcsWithContext is the same as DescribeVpcs with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeVpcs for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVpcsWithContext(ctx aws.Context, input *DescribeVpcsInput, opts ...request.Option) (*DescribeVpcsOutput, error) { + req, out := c.DescribeVpcsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeVpcsPages iterates over the pages of a DescribeVpcs operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeVpcs method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeVpcs operation. +// pageNum := 0 +// err := client.DescribeVpcsPages(params, +// func(page *ec2.DescribeVpcsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeVpcsPages(input *DescribeVpcsInput, fn func(*DescribeVpcsOutput, bool) bool) error { + return c.DescribeVpcsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeVpcsPagesWithContext same as DescribeVpcsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVpcsPagesWithContext(ctx aws.Context, input *DescribeVpcsInput, fn func(*DescribeVpcsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeVpcsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeVpcsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeVpcsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeVpnConnections = "DescribeVpnConnections" + +// DescribeVpnConnectionsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeVpnConnections operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeVpnConnections for more information on using the DescribeVpnConnections +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeVpnConnectionsRequest method. +// req, resp := client.DescribeVpnConnectionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpnConnections +func (c *EC2) DescribeVpnConnectionsRequest(input *DescribeVpnConnectionsInput) (req *request.Request, output *DescribeVpnConnectionsOutput) { + op := &request.Operation{ + Name: opDescribeVpnConnections, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeVpnConnectionsInput{} + } + + output = &DescribeVpnConnectionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeVpnConnections API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more of your VPN connections. +// +// For more information, see AWS Site-to-Site VPN (https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) +// in the AWS Site-to-Site VPN User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeVpnConnections for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpnConnections +func (c *EC2) DescribeVpnConnections(input *DescribeVpnConnectionsInput) (*DescribeVpnConnectionsOutput, error) { + req, out := c.DescribeVpnConnectionsRequest(input) + return out, req.Send() +} + +// DescribeVpnConnectionsWithContext is the same as DescribeVpnConnections with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeVpnConnections for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVpnConnectionsWithContext(ctx aws.Context, input *DescribeVpnConnectionsInput, opts ...request.Option) (*DescribeVpnConnectionsOutput, error) { + req, out := c.DescribeVpnConnectionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDescribeVpnGateways = "DescribeVpnGateways" + +// DescribeVpnGatewaysRequest generates a "aws/request.Request" representing the +// client's request for the DescribeVpnGateways operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeVpnGateways for more information on using the DescribeVpnGateways +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeVpnGatewaysRequest method. +// req, resp := client.DescribeVpnGatewaysRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpnGateways +func (c *EC2) DescribeVpnGatewaysRequest(input *DescribeVpnGatewaysInput) (req *request.Request, output *DescribeVpnGatewaysOutput) { + op := &request.Operation{ + Name: opDescribeVpnGateways, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeVpnGatewaysInput{} + } + + output = &DescribeVpnGatewaysOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeVpnGateways API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more of your virtual private gateways. +// +// For more information, see AWS Site-to-Site VPN (https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) +// in the AWS Site-to-Site VPN User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeVpnGateways for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeVpnGateways +func (c *EC2) DescribeVpnGateways(input *DescribeVpnGatewaysInput) (*DescribeVpnGatewaysOutput, error) { + req, out := c.DescribeVpnGatewaysRequest(input) + return out, req.Send() +} + +// DescribeVpnGatewaysWithContext is the same as DescribeVpnGateways with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeVpnGateways for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeVpnGatewaysWithContext(ctx aws.Context, input *DescribeVpnGatewaysInput, opts ...request.Option) (*DescribeVpnGatewaysOutput, error) { + req, out := c.DescribeVpnGatewaysRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDetachClassicLinkVpc = "DetachClassicLinkVpc" + +// DetachClassicLinkVpcRequest generates a "aws/request.Request" representing the +// client's request for the DetachClassicLinkVpc operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DetachClassicLinkVpc for more information on using the DetachClassicLinkVpc +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DetachClassicLinkVpcRequest method. +// req, resp := client.DetachClassicLinkVpcRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachClassicLinkVpc +func (c *EC2) DetachClassicLinkVpcRequest(input *DetachClassicLinkVpcInput) (req *request.Request, output *DetachClassicLinkVpcOutput) { + op := &request.Operation{ + Name: opDetachClassicLinkVpc, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DetachClassicLinkVpcInput{} + } + + output = &DetachClassicLinkVpcOutput{} + req = c.newRequest(op, input, output) + return +} + +// DetachClassicLinkVpc API operation for Amazon Elastic Compute Cloud. +// +// Unlinks (detaches) a linked EC2-Classic instance from a VPC. After the instance +// has been unlinked, the VPC security groups are no longer associated with +// it. An instance is automatically unlinked from a VPC when it's stopped. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DetachClassicLinkVpc for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachClassicLinkVpc +func (c *EC2) DetachClassicLinkVpc(input *DetachClassicLinkVpcInput) (*DetachClassicLinkVpcOutput, error) { + req, out := c.DetachClassicLinkVpcRequest(input) + return out, req.Send() +} + +// DetachClassicLinkVpcWithContext is the same as DetachClassicLinkVpc with the addition of +// the ability to pass a context and additional request options. +// +// See DetachClassicLinkVpc for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DetachClassicLinkVpcWithContext(ctx aws.Context, input *DetachClassicLinkVpcInput, opts ...request.Option) (*DetachClassicLinkVpcOutput, error) { + req, out := c.DetachClassicLinkVpcRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDetachInternetGateway = "DetachInternetGateway" + +// DetachInternetGatewayRequest generates a "aws/request.Request" representing the +// client's request for the DetachInternetGateway operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DetachInternetGateway for more information on using the DetachInternetGateway +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DetachInternetGatewayRequest method. +// req, resp := client.DetachInternetGatewayRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachInternetGateway +func (c *EC2) DetachInternetGatewayRequest(input *DetachInternetGatewayInput) (req *request.Request, output *DetachInternetGatewayOutput) { + op := &request.Operation{ + Name: opDetachInternetGateway, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DetachInternetGatewayInput{} + } + + output = &DetachInternetGatewayOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DetachInternetGateway API operation for Amazon Elastic Compute Cloud. +// +// Detaches an internet gateway from a VPC, disabling connectivity between the +// internet and the VPC. The VPC must not contain any running instances with +// Elastic IP addresses or public IPv4 addresses. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DetachInternetGateway for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachInternetGateway +func (c *EC2) DetachInternetGateway(input *DetachInternetGatewayInput) (*DetachInternetGatewayOutput, error) { + req, out := c.DetachInternetGatewayRequest(input) + return out, req.Send() +} + +// DetachInternetGatewayWithContext is the same as DetachInternetGateway with the addition of +// the ability to pass a context and additional request options. +// +// See DetachInternetGateway for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DetachInternetGatewayWithContext(ctx aws.Context, input *DetachInternetGatewayInput, opts ...request.Option) (*DetachInternetGatewayOutput, error) { + req, out := c.DetachInternetGatewayRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDetachNetworkInterface = "DetachNetworkInterface" + +// DetachNetworkInterfaceRequest generates a "aws/request.Request" representing the +// client's request for the DetachNetworkInterface operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DetachNetworkInterface for more information on using the DetachNetworkInterface +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DetachNetworkInterfaceRequest method. +// req, resp := client.DetachNetworkInterfaceRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachNetworkInterface +func (c *EC2) DetachNetworkInterfaceRequest(input *DetachNetworkInterfaceInput) (req *request.Request, output *DetachNetworkInterfaceOutput) { + op := &request.Operation{ + Name: opDetachNetworkInterface, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DetachNetworkInterfaceInput{} + } + + output = &DetachNetworkInterfaceOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DetachNetworkInterface API operation for Amazon Elastic Compute Cloud. +// +// Detaches a network interface from an instance. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DetachNetworkInterface for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachNetworkInterface +func (c *EC2) DetachNetworkInterface(input *DetachNetworkInterfaceInput) (*DetachNetworkInterfaceOutput, error) { + req, out := c.DetachNetworkInterfaceRequest(input) + return out, req.Send() +} + +// DetachNetworkInterfaceWithContext is the same as DetachNetworkInterface with the addition of +// the ability to pass a context and additional request options. +// +// See DetachNetworkInterface for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DetachNetworkInterfaceWithContext(ctx aws.Context, input *DetachNetworkInterfaceInput, opts ...request.Option) (*DetachNetworkInterfaceOutput, error) { + req, out := c.DetachNetworkInterfaceRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDetachVolume = "DetachVolume" + +// DetachVolumeRequest generates a "aws/request.Request" representing the +// client's request for the DetachVolume operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DetachVolume for more information on using the DetachVolume +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DetachVolumeRequest method. +// req, resp := client.DetachVolumeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachVolume +func (c *EC2) DetachVolumeRequest(input *DetachVolumeInput) (req *request.Request, output *VolumeAttachment) { + op := &request.Operation{ + Name: opDetachVolume, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DetachVolumeInput{} + } + + output = &VolumeAttachment{} + req = c.newRequest(op, input, output) + return +} + +// DetachVolume API operation for Amazon Elastic Compute Cloud. +// +// Detaches an EBS volume from an instance. Make sure to unmount any file systems +// on the device within your operating system before detaching the volume. Failure +// to do so can result in the volume becoming stuck in the busy state while +// detaching. If this happens, detachment can be delayed indefinitely until +// you unmount the volume, force detachment, reboot the instance, or all three. +// If an EBS volume is the root device of an instance, it can't be detached +// while the instance is running. To detach the root volume, stop the instance +// first. +// +// When a volume with an AWS Marketplace product code is detached from an instance, +// the product code is no longer associated with the instance. +// +// For more information, see Detaching an Amazon EBS Volume (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-detaching-volume.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DetachVolume for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachVolume +func (c *EC2) DetachVolume(input *DetachVolumeInput) (*VolumeAttachment, error) { + req, out := c.DetachVolumeRequest(input) + return out, req.Send() +} + +// DetachVolumeWithContext is the same as DetachVolume with the addition of +// the ability to pass a context and additional request options. +// +// See DetachVolume for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DetachVolumeWithContext(ctx aws.Context, input *DetachVolumeInput, opts ...request.Option) (*VolumeAttachment, error) { + req, out := c.DetachVolumeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDetachVpnGateway = "DetachVpnGateway" + +// DetachVpnGatewayRequest generates a "aws/request.Request" representing the +// client's request for the DetachVpnGateway operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DetachVpnGateway for more information on using the DetachVpnGateway +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DetachVpnGatewayRequest method. +// req, resp := client.DetachVpnGatewayRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachVpnGateway +func (c *EC2) DetachVpnGatewayRequest(input *DetachVpnGatewayInput) (req *request.Request, output *DetachVpnGatewayOutput) { + op := &request.Operation{ + Name: opDetachVpnGateway, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DetachVpnGatewayInput{} + } + + output = &DetachVpnGatewayOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DetachVpnGateway API operation for Amazon Elastic Compute Cloud. +// +// Detaches a virtual private gateway from a VPC. You do this if you're planning +// to turn off the VPC and not use it anymore. You can confirm a virtual private +// gateway has been completely detached from a VPC by describing the virtual +// private gateway (any attachments to the virtual private gateway are also +// described). +// +// You must wait for the attachment's state to switch to detached before you +// can delete the VPC or attach a different VPC to the virtual private gateway. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DetachVpnGateway for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DetachVpnGateway +func (c *EC2) DetachVpnGateway(input *DetachVpnGatewayInput) (*DetachVpnGatewayOutput, error) { + req, out := c.DetachVpnGatewayRequest(input) + return out, req.Send() +} + +// DetachVpnGatewayWithContext is the same as DetachVpnGateway with the addition of +// the ability to pass a context and additional request options. +// +// See DetachVpnGateway for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DetachVpnGatewayWithContext(ctx aws.Context, input *DetachVpnGatewayInput, opts ...request.Option) (*DetachVpnGatewayOutput, error) { + req, out := c.DetachVpnGatewayRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDisableEbsEncryptionByDefault = "DisableEbsEncryptionByDefault" + +// DisableEbsEncryptionByDefaultRequest generates a "aws/request.Request" representing the +// client's request for the DisableEbsEncryptionByDefault operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DisableEbsEncryptionByDefault for more information on using the DisableEbsEncryptionByDefault +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DisableEbsEncryptionByDefaultRequest method. +// req, resp := client.DisableEbsEncryptionByDefaultRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableEbsEncryptionByDefault +func (c *EC2) DisableEbsEncryptionByDefaultRequest(input *DisableEbsEncryptionByDefaultInput) (req *request.Request, output *DisableEbsEncryptionByDefaultOutput) { + op := &request.Operation{ + Name: opDisableEbsEncryptionByDefault, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DisableEbsEncryptionByDefaultInput{} + } + + output = &DisableEbsEncryptionByDefaultOutput{} + req = c.newRequest(op, input, output) + return +} + +// DisableEbsEncryptionByDefault API operation for Amazon Elastic Compute Cloud. +// +// Disables EBS encryption by default for your account in the current Region. +// +// After you disable encryption by default, you can still create encrypted volumes +// by enabling encryption when you create each volume. +// +// Disabling encryption by default does not change the encryption status of +// your existing volumes. +// +// For more information, see Amazon EBS Encryption (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DisableEbsEncryptionByDefault for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableEbsEncryptionByDefault +func (c *EC2) DisableEbsEncryptionByDefault(input *DisableEbsEncryptionByDefaultInput) (*DisableEbsEncryptionByDefaultOutput, error) { + req, out := c.DisableEbsEncryptionByDefaultRequest(input) + return out, req.Send() +} + +// DisableEbsEncryptionByDefaultWithContext is the same as DisableEbsEncryptionByDefault with the addition of +// the ability to pass a context and additional request options. +// +// See DisableEbsEncryptionByDefault for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DisableEbsEncryptionByDefaultWithContext(ctx aws.Context, input *DisableEbsEncryptionByDefaultInput, opts ...request.Option) (*DisableEbsEncryptionByDefaultOutput, error) { + req, out := c.DisableEbsEncryptionByDefaultRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDisableTransitGatewayRouteTablePropagation = "DisableTransitGatewayRouteTablePropagation" + +// DisableTransitGatewayRouteTablePropagationRequest generates a "aws/request.Request" representing the +// client's request for the DisableTransitGatewayRouteTablePropagation operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DisableTransitGatewayRouteTablePropagation for more information on using the DisableTransitGatewayRouteTablePropagation +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DisableTransitGatewayRouteTablePropagationRequest method. +// req, resp := client.DisableTransitGatewayRouteTablePropagationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableTransitGatewayRouteTablePropagation +func (c *EC2) DisableTransitGatewayRouteTablePropagationRequest(input *DisableTransitGatewayRouteTablePropagationInput) (req *request.Request, output *DisableTransitGatewayRouteTablePropagationOutput) { + op := &request.Operation{ + Name: opDisableTransitGatewayRouteTablePropagation, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DisableTransitGatewayRouteTablePropagationInput{} + } + + output = &DisableTransitGatewayRouteTablePropagationOutput{} + req = c.newRequest(op, input, output) + return +} + +// DisableTransitGatewayRouteTablePropagation API operation for Amazon Elastic Compute Cloud. +// +// Disables the specified resource attachment from propagating routes to the +// specified propagation route table. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DisableTransitGatewayRouteTablePropagation for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableTransitGatewayRouteTablePropagation +func (c *EC2) DisableTransitGatewayRouteTablePropagation(input *DisableTransitGatewayRouteTablePropagationInput) (*DisableTransitGatewayRouteTablePropagationOutput, error) { + req, out := c.DisableTransitGatewayRouteTablePropagationRequest(input) + return out, req.Send() +} + +// DisableTransitGatewayRouteTablePropagationWithContext is the same as DisableTransitGatewayRouteTablePropagation with the addition of +// the ability to pass a context and additional request options. +// +// See DisableTransitGatewayRouteTablePropagation for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DisableTransitGatewayRouteTablePropagationWithContext(ctx aws.Context, input *DisableTransitGatewayRouteTablePropagationInput, opts ...request.Option) (*DisableTransitGatewayRouteTablePropagationOutput, error) { + req, out := c.DisableTransitGatewayRouteTablePropagationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDisableVgwRoutePropagation = "DisableVgwRoutePropagation" + +// DisableVgwRoutePropagationRequest generates a "aws/request.Request" representing the +// client's request for the DisableVgwRoutePropagation operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DisableVgwRoutePropagation for more information on using the DisableVgwRoutePropagation +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DisableVgwRoutePropagationRequest method. +// req, resp := client.DisableVgwRoutePropagationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableVgwRoutePropagation +func (c *EC2) DisableVgwRoutePropagationRequest(input *DisableVgwRoutePropagationInput) (req *request.Request, output *DisableVgwRoutePropagationOutput) { + op := &request.Operation{ + Name: opDisableVgwRoutePropagation, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DisableVgwRoutePropagationInput{} + } + + output = &DisableVgwRoutePropagationOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DisableVgwRoutePropagation API operation for Amazon Elastic Compute Cloud. +// +// Disables a virtual private gateway (VGW) from propagating routes to a specified +// route table of a VPC. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DisableVgwRoutePropagation for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableVgwRoutePropagation +func (c *EC2) DisableVgwRoutePropagation(input *DisableVgwRoutePropagationInput) (*DisableVgwRoutePropagationOutput, error) { + req, out := c.DisableVgwRoutePropagationRequest(input) + return out, req.Send() +} + +// DisableVgwRoutePropagationWithContext is the same as DisableVgwRoutePropagation with the addition of +// the ability to pass a context and additional request options. +// +// See DisableVgwRoutePropagation for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DisableVgwRoutePropagationWithContext(ctx aws.Context, input *DisableVgwRoutePropagationInput, opts ...request.Option) (*DisableVgwRoutePropagationOutput, error) { + req, out := c.DisableVgwRoutePropagationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDisableVpcClassicLink = "DisableVpcClassicLink" + +// DisableVpcClassicLinkRequest generates a "aws/request.Request" representing the +// client's request for the DisableVpcClassicLink operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DisableVpcClassicLink for more information on using the DisableVpcClassicLink +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DisableVpcClassicLinkRequest method. +// req, resp := client.DisableVpcClassicLinkRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableVpcClassicLink +func (c *EC2) DisableVpcClassicLinkRequest(input *DisableVpcClassicLinkInput) (req *request.Request, output *DisableVpcClassicLinkOutput) { + op := &request.Operation{ + Name: opDisableVpcClassicLink, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DisableVpcClassicLinkInput{} + } + + output = &DisableVpcClassicLinkOutput{} + req = c.newRequest(op, input, output) + return +} + +// DisableVpcClassicLink API operation for Amazon Elastic Compute Cloud. +// +// Disables ClassicLink for a VPC. You cannot disable ClassicLink for a VPC +// that has EC2-Classic instances linked to it. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DisableVpcClassicLink for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableVpcClassicLink +func (c *EC2) DisableVpcClassicLink(input *DisableVpcClassicLinkInput) (*DisableVpcClassicLinkOutput, error) { + req, out := c.DisableVpcClassicLinkRequest(input) + return out, req.Send() +} + +// DisableVpcClassicLinkWithContext is the same as DisableVpcClassicLink with the addition of +// the ability to pass a context and additional request options. +// +// See DisableVpcClassicLink for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DisableVpcClassicLinkWithContext(ctx aws.Context, input *DisableVpcClassicLinkInput, opts ...request.Option) (*DisableVpcClassicLinkOutput, error) { + req, out := c.DisableVpcClassicLinkRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDisableVpcClassicLinkDnsSupport = "DisableVpcClassicLinkDnsSupport" + +// DisableVpcClassicLinkDnsSupportRequest generates a "aws/request.Request" representing the +// client's request for the DisableVpcClassicLinkDnsSupport operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DisableVpcClassicLinkDnsSupport for more information on using the DisableVpcClassicLinkDnsSupport +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DisableVpcClassicLinkDnsSupportRequest method. +// req, resp := client.DisableVpcClassicLinkDnsSupportRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableVpcClassicLinkDnsSupport +func (c *EC2) DisableVpcClassicLinkDnsSupportRequest(input *DisableVpcClassicLinkDnsSupportInput) (req *request.Request, output *DisableVpcClassicLinkDnsSupportOutput) { + op := &request.Operation{ + Name: opDisableVpcClassicLinkDnsSupport, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DisableVpcClassicLinkDnsSupportInput{} + } + + output = &DisableVpcClassicLinkDnsSupportOutput{} + req = c.newRequest(op, input, output) + return +} + +// DisableVpcClassicLinkDnsSupport API operation for Amazon Elastic Compute Cloud. +// +// Disables ClassicLink DNS support for a VPC. If disabled, DNS hostnames resolve +// to public IP addresses when addressed between a linked EC2-Classic instance +// and instances in the VPC to which it's linked. For more information, see +// ClassicLink (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DisableVpcClassicLinkDnsSupport for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableVpcClassicLinkDnsSupport +func (c *EC2) DisableVpcClassicLinkDnsSupport(input *DisableVpcClassicLinkDnsSupportInput) (*DisableVpcClassicLinkDnsSupportOutput, error) { + req, out := c.DisableVpcClassicLinkDnsSupportRequest(input) + return out, req.Send() +} + +// DisableVpcClassicLinkDnsSupportWithContext is the same as DisableVpcClassicLinkDnsSupport with the addition of +// the ability to pass a context and additional request options. +// +// See DisableVpcClassicLinkDnsSupport for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DisableVpcClassicLinkDnsSupportWithContext(ctx aws.Context, input *DisableVpcClassicLinkDnsSupportInput, opts ...request.Option) (*DisableVpcClassicLinkDnsSupportOutput, error) { + req, out := c.DisableVpcClassicLinkDnsSupportRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDisassociateAddress = "DisassociateAddress" + +// DisassociateAddressRequest generates a "aws/request.Request" representing the +// client's request for the DisassociateAddress operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DisassociateAddress for more information on using the DisassociateAddress +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DisassociateAddressRequest method. +// req, resp := client.DisassociateAddressRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateAddress +func (c *EC2) DisassociateAddressRequest(input *DisassociateAddressInput) (req *request.Request, output *DisassociateAddressOutput) { + op := &request.Operation{ + Name: opDisassociateAddress, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DisassociateAddressInput{} + } + + output = &DisassociateAddressOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DisassociateAddress API operation for Amazon Elastic Compute Cloud. +// +// Disassociates an Elastic IP address from the instance or network interface +// it's associated with. +// +// An Elastic IP address is for use in either the EC2-Classic platform or in +// a VPC. For more information, see Elastic IP Addresses (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// This is an idempotent operation. If you perform the operation more than once, +// Amazon EC2 doesn't return an error. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DisassociateAddress for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateAddress +func (c *EC2) DisassociateAddress(input *DisassociateAddressInput) (*DisassociateAddressOutput, error) { + req, out := c.DisassociateAddressRequest(input) + return out, req.Send() +} + +// DisassociateAddressWithContext is the same as DisassociateAddress with the addition of +// the ability to pass a context and additional request options. +// +// See DisassociateAddress for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DisassociateAddressWithContext(ctx aws.Context, input *DisassociateAddressInput, opts ...request.Option) (*DisassociateAddressOutput, error) { + req, out := c.DisassociateAddressRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDisassociateClientVpnTargetNetwork = "DisassociateClientVpnTargetNetwork" + +// DisassociateClientVpnTargetNetworkRequest generates a "aws/request.Request" representing the +// client's request for the DisassociateClientVpnTargetNetwork operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DisassociateClientVpnTargetNetwork for more information on using the DisassociateClientVpnTargetNetwork +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DisassociateClientVpnTargetNetworkRequest method. +// req, resp := client.DisassociateClientVpnTargetNetworkRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateClientVpnTargetNetwork +func (c *EC2) DisassociateClientVpnTargetNetworkRequest(input *DisassociateClientVpnTargetNetworkInput) (req *request.Request, output *DisassociateClientVpnTargetNetworkOutput) { + op := &request.Operation{ + Name: opDisassociateClientVpnTargetNetwork, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DisassociateClientVpnTargetNetworkInput{} + } + + output = &DisassociateClientVpnTargetNetworkOutput{} + req = c.newRequest(op, input, output) + return +} + +// DisassociateClientVpnTargetNetwork API operation for Amazon Elastic Compute Cloud. +// +// Disassociates a target network from the specified Client VPN endpoint. When +// you disassociate the last target network from a Client VPN, the following +// happens: +// +// * The route that was automatically added for the VPC is deleted +// +// * All active client connections are terminated +// +// * New client connections are disallowed +// +// * The Client VPN endpoint's status changes to pending-associate +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DisassociateClientVpnTargetNetwork for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateClientVpnTargetNetwork +func (c *EC2) DisassociateClientVpnTargetNetwork(input *DisassociateClientVpnTargetNetworkInput) (*DisassociateClientVpnTargetNetworkOutput, error) { + req, out := c.DisassociateClientVpnTargetNetworkRequest(input) + return out, req.Send() +} + +// DisassociateClientVpnTargetNetworkWithContext is the same as DisassociateClientVpnTargetNetwork with the addition of +// the ability to pass a context and additional request options. +// +// See DisassociateClientVpnTargetNetwork for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DisassociateClientVpnTargetNetworkWithContext(ctx aws.Context, input *DisassociateClientVpnTargetNetworkInput, opts ...request.Option) (*DisassociateClientVpnTargetNetworkOutput, error) { + req, out := c.DisassociateClientVpnTargetNetworkRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDisassociateIamInstanceProfile = "DisassociateIamInstanceProfile" + +// DisassociateIamInstanceProfileRequest generates a "aws/request.Request" representing the +// client's request for the DisassociateIamInstanceProfile operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DisassociateIamInstanceProfile for more information on using the DisassociateIamInstanceProfile +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DisassociateIamInstanceProfileRequest method. +// req, resp := client.DisassociateIamInstanceProfileRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateIamInstanceProfile +func (c *EC2) DisassociateIamInstanceProfileRequest(input *DisassociateIamInstanceProfileInput) (req *request.Request, output *DisassociateIamInstanceProfileOutput) { + op := &request.Operation{ + Name: opDisassociateIamInstanceProfile, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DisassociateIamInstanceProfileInput{} + } + + output = &DisassociateIamInstanceProfileOutput{} + req = c.newRequest(op, input, output) + return +} + +// DisassociateIamInstanceProfile API operation for Amazon Elastic Compute Cloud. +// +// Disassociates an IAM instance profile from a running or stopped instance. +// +// Use DescribeIamInstanceProfileAssociations to get the association ID. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DisassociateIamInstanceProfile for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateIamInstanceProfile +func (c *EC2) DisassociateIamInstanceProfile(input *DisassociateIamInstanceProfileInput) (*DisassociateIamInstanceProfileOutput, error) { + req, out := c.DisassociateIamInstanceProfileRequest(input) + return out, req.Send() +} + +// DisassociateIamInstanceProfileWithContext is the same as DisassociateIamInstanceProfile with the addition of +// the ability to pass a context and additional request options. +// +// See DisassociateIamInstanceProfile for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DisassociateIamInstanceProfileWithContext(ctx aws.Context, input *DisassociateIamInstanceProfileInput, opts ...request.Option) (*DisassociateIamInstanceProfileOutput, error) { + req, out := c.DisassociateIamInstanceProfileRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDisassociateRouteTable = "DisassociateRouteTable" + +// DisassociateRouteTableRequest generates a "aws/request.Request" representing the +// client's request for the DisassociateRouteTable operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DisassociateRouteTable for more information on using the DisassociateRouteTable +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DisassociateRouteTableRequest method. +// req, resp := client.DisassociateRouteTableRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateRouteTable +func (c *EC2) DisassociateRouteTableRequest(input *DisassociateRouteTableInput) (req *request.Request, output *DisassociateRouteTableOutput) { + op := &request.Operation{ + Name: opDisassociateRouteTable, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DisassociateRouteTableInput{} + } + + output = &DisassociateRouteTableOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DisassociateRouteTable API operation for Amazon Elastic Compute Cloud. +// +// Disassociates a subnet from a route table. +// +// After you perform this action, the subnet no longer uses the routes in the +// route table. Instead, it uses the routes in the VPC's main route table. For +// more information about route tables, see Route Tables (https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DisassociateRouteTable for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateRouteTable +func (c *EC2) DisassociateRouteTable(input *DisassociateRouteTableInput) (*DisassociateRouteTableOutput, error) { + req, out := c.DisassociateRouteTableRequest(input) + return out, req.Send() +} + +// DisassociateRouteTableWithContext is the same as DisassociateRouteTable with the addition of +// the ability to pass a context and additional request options. +// +// See DisassociateRouteTable for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DisassociateRouteTableWithContext(ctx aws.Context, input *DisassociateRouteTableInput, opts ...request.Option) (*DisassociateRouteTableOutput, error) { + req, out := c.DisassociateRouteTableRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDisassociateSubnetCidrBlock = "DisassociateSubnetCidrBlock" + +// DisassociateSubnetCidrBlockRequest generates a "aws/request.Request" representing the +// client's request for the DisassociateSubnetCidrBlock operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DisassociateSubnetCidrBlock for more information on using the DisassociateSubnetCidrBlock +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DisassociateSubnetCidrBlockRequest method. +// req, resp := client.DisassociateSubnetCidrBlockRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateSubnetCidrBlock +func (c *EC2) DisassociateSubnetCidrBlockRequest(input *DisassociateSubnetCidrBlockInput) (req *request.Request, output *DisassociateSubnetCidrBlockOutput) { + op := &request.Operation{ + Name: opDisassociateSubnetCidrBlock, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DisassociateSubnetCidrBlockInput{} + } + + output = &DisassociateSubnetCidrBlockOutput{} + req = c.newRequest(op, input, output) + return +} + +// DisassociateSubnetCidrBlock API operation for Amazon Elastic Compute Cloud. +// +// Disassociates a CIDR block from a subnet. Currently, you can disassociate +// an IPv6 CIDR block only. You must detach or delete all gateways and resources +// that are associated with the CIDR block before you can disassociate it. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DisassociateSubnetCidrBlock for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateSubnetCidrBlock +func (c *EC2) DisassociateSubnetCidrBlock(input *DisassociateSubnetCidrBlockInput) (*DisassociateSubnetCidrBlockOutput, error) { + req, out := c.DisassociateSubnetCidrBlockRequest(input) + return out, req.Send() +} + +// DisassociateSubnetCidrBlockWithContext is the same as DisassociateSubnetCidrBlock with the addition of +// the ability to pass a context and additional request options. +// +// See DisassociateSubnetCidrBlock for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DisassociateSubnetCidrBlockWithContext(ctx aws.Context, input *DisassociateSubnetCidrBlockInput, opts ...request.Option) (*DisassociateSubnetCidrBlockOutput, error) { + req, out := c.DisassociateSubnetCidrBlockRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDisassociateTransitGatewayRouteTable = "DisassociateTransitGatewayRouteTable" + +// DisassociateTransitGatewayRouteTableRequest generates a "aws/request.Request" representing the +// client's request for the DisassociateTransitGatewayRouteTable operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DisassociateTransitGatewayRouteTable for more information on using the DisassociateTransitGatewayRouteTable +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DisassociateTransitGatewayRouteTableRequest method. +// req, resp := client.DisassociateTransitGatewayRouteTableRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateTransitGatewayRouteTable +func (c *EC2) DisassociateTransitGatewayRouteTableRequest(input *DisassociateTransitGatewayRouteTableInput) (req *request.Request, output *DisassociateTransitGatewayRouteTableOutput) { + op := &request.Operation{ + Name: opDisassociateTransitGatewayRouteTable, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DisassociateTransitGatewayRouteTableInput{} + } + + output = &DisassociateTransitGatewayRouteTableOutput{} + req = c.newRequest(op, input, output) + return +} + +// DisassociateTransitGatewayRouteTable API operation for Amazon Elastic Compute Cloud. +// +// Disassociates a resource attachment from a transit gateway route table. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DisassociateTransitGatewayRouteTable for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateTransitGatewayRouteTable +func (c *EC2) DisassociateTransitGatewayRouteTable(input *DisassociateTransitGatewayRouteTableInput) (*DisassociateTransitGatewayRouteTableOutput, error) { + req, out := c.DisassociateTransitGatewayRouteTableRequest(input) + return out, req.Send() +} + +// DisassociateTransitGatewayRouteTableWithContext is the same as DisassociateTransitGatewayRouteTable with the addition of +// the ability to pass a context and additional request options. +// +// See DisassociateTransitGatewayRouteTable for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DisassociateTransitGatewayRouteTableWithContext(ctx aws.Context, input *DisassociateTransitGatewayRouteTableInput, opts ...request.Option) (*DisassociateTransitGatewayRouteTableOutput, error) { + req, out := c.DisassociateTransitGatewayRouteTableRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDisassociateVpcCidrBlock = "DisassociateVpcCidrBlock" + +// DisassociateVpcCidrBlockRequest generates a "aws/request.Request" representing the +// client's request for the DisassociateVpcCidrBlock operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DisassociateVpcCidrBlock for more information on using the DisassociateVpcCidrBlock +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DisassociateVpcCidrBlockRequest method. +// req, resp := client.DisassociateVpcCidrBlockRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateVpcCidrBlock +func (c *EC2) DisassociateVpcCidrBlockRequest(input *DisassociateVpcCidrBlockInput) (req *request.Request, output *DisassociateVpcCidrBlockOutput) { + op := &request.Operation{ + Name: opDisassociateVpcCidrBlock, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DisassociateVpcCidrBlockInput{} + } + + output = &DisassociateVpcCidrBlockOutput{} + req = c.newRequest(op, input, output) + return +} + +// DisassociateVpcCidrBlock API operation for Amazon Elastic Compute Cloud. +// +// Disassociates a CIDR block from a VPC. To disassociate the CIDR block, you +// must specify its association ID. You can get the association ID by using +// DescribeVpcs. You must detach or delete all gateways and resources that are +// associated with the CIDR block before you can disassociate it. +// +// You cannot disassociate the CIDR block with which you originally created +// the VPC (the primary CIDR block). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DisassociateVpcCidrBlock for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateVpcCidrBlock +func (c *EC2) DisassociateVpcCidrBlock(input *DisassociateVpcCidrBlockInput) (*DisassociateVpcCidrBlockOutput, error) { + req, out := c.DisassociateVpcCidrBlockRequest(input) + return out, req.Send() +} + +// DisassociateVpcCidrBlockWithContext is the same as DisassociateVpcCidrBlock with the addition of +// the ability to pass a context and additional request options. +// +// See DisassociateVpcCidrBlock for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DisassociateVpcCidrBlockWithContext(ctx aws.Context, input *DisassociateVpcCidrBlockInput, opts ...request.Option) (*DisassociateVpcCidrBlockOutput, error) { + req, out := c.DisassociateVpcCidrBlockRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opEnableEbsEncryptionByDefault = "EnableEbsEncryptionByDefault" + +// EnableEbsEncryptionByDefaultRequest generates a "aws/request.Request" representing the +// client's request for the EnableEbsEncryptionByDefault operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See EnableEbsEncryptionByDefault for more information on using the EnableEbsEncryptionByDefault +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the EnableEbsEncryptionByDefaultRequest method. +// req, resp := client.EnableEbsEncryptionByDefaultRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableEbsEncryptionByDefault +func (c *EC2) EnableEbsEncryptionByDefaultRequest(input *EnableEbsEncryptionByDefaultInput) (req *request.Request, output *EnableEbsEncryptionByDefaultOutput) { + op := &request.Operation{ + Name: opEnableEbsEncryptionByDefault, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &EnableEbsEncryptionByDefaultInput{} + } + + output = &EnableEbsEncryptionByDefaultOutput{} + req = c.newRequest(op, input, output) + return +} + +// EnableEbsEncryptionByDefault API operation for Amazon Elastic Compute Cloud. +// +// Enables EBS encryption by default for your account in the current Region. +// +// After you enable encryption by default, the EBS volumes that you create are +// are always encrypted, either using the default CMK or the CMK that you specified +// when you created each volume. For more information, see Amazon EBS Encryption +// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// You can specify the default CMK for encryption by default using ModifyEbsDefaultKmsKeyId +// or ResetEbsDefaultKmsKeyId. +// +// Enabling encryption by default has no effect on the encryption status of +// your existing volumes. +// +// After you enable encryption by default, you can no longer launch instances +// using instance types that do not support encryption. For more information, +// see Supported Instance Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#EBSEncryption_supported_instances). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation EnableEbsEncryptionByDefault for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableEbsEncryptionByDefault +func (c *EC2) EnableEbsEncryptionByDefault(input *EnableEbsEncryptionByDefaultInput) (*EnableEbsEncryptionByDefaultOutput, error) { + req, out := c.EnableEbsEncryptionByDefaultRequest(input) + return out, req.Send() +} + +// EnableEbsEncryptionByDefaultWithContext is the same as EnableEbsEncryptionByDefault with the addition of +// the ability to pass a context and additional request options. +// +// See EnableEbsEncryptionByDefault for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) EnableEbsEncryptionByDefaultWithContext(ctx aws.Context, input *EnableEbsEncryptionByDefaultInput, opts ...request.Option) (*EnableEbsEncryptionByDefaultOutput, error) { + req, out := c.EnableEbsEncryptionByDefaultRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opEnableTransitGatewayRouteTablePropagation = "EnableTransitGatewayRouteTablePropagation" + +// EnableTransitGatewayRouteTablePropagationRequest generates a "aws/request.Request" representing the +// client's request for the EnableTransitGatewayRouteTablePropagation operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See EnableTransitGatewayRouteTablePropagation for more information on using the EnableTransitGatewayRouteTablePropagation +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the EnableTransitGatewayRouteTablePropagationRequest method. +// req, resp := client.EnableTransitGatewayRouteTablePropagationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableTransitGatewayRouteTablePropagation +func (c *EC2) EnableTransitGatewayRouteTablePropagationRequest(input *EnableTransitGatewayRouteTablePropagationInput) (req *request.Request, output *EnableTransitGatewayRouteTablePropagationOutput) { + op := &request.Operation{ + Name: opEnableTransitGatewayRouteTablePropagation, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &EnableTransitGatewayRouteTablePropagationInput{} + } + + output = &EnableTransitGatewayRouteTablePropagationOutput{} + req = c.newRequest(op, input, output) + return +} + +// EnableTransitGatewayRouteTablePropagation API operation for Amazon Elastic Compute Cloud. +// +// Enables the specified attachment to propagate routes to the specified propagation +// route table. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation EnableTransitGatewayRouteTablePropagation for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableTransitGatewayRouteTablePropagation +func (c *EC2) EnableTransitGatewayRouteTablePropagation(input *EnableTransitGatewayRouteTablePropagationInput) (*EnableTransitGatewayRouteTablePropagationOutput, error) { + req, out := c.EnableTransitGatewayRouteTablePropagationRequest(input) + return out, req.Send() +} + +// EnableTransitGatewayRouteTablePropagationWithContext is the same as EnableTransitGatewayRouteTablePropagation with the addition of +// the ability to pass a context and additional request options. +// +// See EnableTransitGatewayRouteTablePropagation for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) EnableTransitGatewayRouteTablePropagationWithContext(ctx aws.Context, input *EnableTransitGatewayRouteTablePropagationInput, opts ...request.Option) (*EnableTransitGatewayRouteTablePropagationOutput, error) { + req, out := c.EnableTransitGatewayRouteTablePropagationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opEnableVgwRoutePropagation = "EnableVgwRoutePropagation" + +// EnableVgwRoutePropagationRequest generates a "aws/request.Request" representing the +// client's request for the EnableVgwRoutePropagation operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See EnableVgwRoutePropagation for more information on using the EnableVgwRoutePropagation +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the EnableVgwRoutePropagationRequest method. +// req, resp := client.EnableVgwRoutePropagationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVgwRoutePropagation +func (c *EC2) EnableVgwRoutePropagationRequest(input *EnableVgwRoutePropagationInput) (req *request.Request, output *EnableVgwRoutePropagationOutput) { + op := &request.Operation{ + Name: opEnableVgwRoutePropagation, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &EnableVgwRoutePropagationInput{} + } + + output = &EnableVgwRoutePropagationOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// EnableVgwRoutePropagation API operation for Amazon Elastic Compute Cloud. +// +// Enables a virtual private gateway (VGW) to propagate routes to the specified +// route table of a VPC. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation EnableVgwRoutePropagation for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVgwRoutePropagation +func (c *EC2) EnableVgwRoutePropagation(input *EnableVgwRoutePropagationInput) (*EnableVgwRoutePropagationOutput, error) { + req, out := c.EnableVgwRoutePropagationRequest(input) + return out, req.Send() +} + +// EnableVgwRoutePropagationWithContext is the same as EnableVgwRoutePropagation with the addition of +// the ability to pass a context and additional request options. +// +// See EnableVgwRoutePropagation for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) EnableVgwRoutePropagationWithContext(ctx aws.Context, input *EnableVgwRoutePropagationInput, opts ...request.Option) (*EnableVgwRoutePropagationOutput, error) { + req, out := c.EnableVgwRoutePropagationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opEnableVolumeIO = "EnableVolumeIO" + +// EnableVolumeIORequest generates a "aws/request.Request" representing the +// client's request for the EnableVolumeIO operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See EnableVolumeIO for more information on using the EnableVolumeIO +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the EnableVolumeIORequest method. +// req, resp := client.EnableVolumeIORequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVolumeIO +func (c *EC2) EnableVolumeIORequest(input *EnableVolumeIOInput) (req *request.Request, output *EnableVolumeIOOutput) { + op := &request.Operation{ + Name: opEnableVolumeIO, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &EnableVolumeIOInput{} + } + + output = &EnableVolumeIOOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// EnableVolumeIO API operation for Amazon Elastic Compute Cloud. +// +// Enables I/O operations for a volume that had I/O operations disabled because +// the data on the volume was potentially inconsistent. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation EnableVolumeIO for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVolumeIO +func (c *EC2) EnableVolumeIO(input *EnableVolumeIOInput) (*EnableVolumeIOOutput, error) { + req, out := c.EnableVolumeIORequest(input) + return out, req.Send() +} + +// EnableVolumeIOWithContext is the same as EnableVolumeIO with the addition of +// the ability to pass a context and additional request options. +// +// See EnableVolumeIO for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) EnableVolumeIOWithContext(ctx aws.Context, input *EnableVolumeIOInput, opts ...request.Option) (*EnableVolumeIOOutput, error) { + req, out := c.EnableVolumeIORequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opEnableVpcClassicLink = "EnableVpcClassicLink" + +// EnableVpcClassicLinkRequest generates a "aws/request.Request" representing the +// client's request for the EnableVpcClassicLink operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See EnableVpcClassicLink for more information on using the EnableVpcClassicLink +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the EnableVpcClassicLinkRequest method. +// req, resp := client.EnableVpcClassicLinkRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVpcClassicLink +func (c *EC2) EnableVpcClassicLinkRequest(input *EnableVpcClassicLinkInput) (req *request.Request, output *EnableVpcClassicLinkOutput) { + op := &request.Operation{ + Name: opEnableVpcClassicLink, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &EnableVpcClassicLinkInput{} + } + + output = &EnableVpcClassicLinkOutput{} + req = c.newRequest(op, input, output) + return +} + +// EnableVpcClassicLink API operation for Amazon Elastic Compute Cloud. +// +// Enables a VPC for ClassicLink. You can then link EC2-Classic instances to +// your ClassicLink-enabled VPC to allow communication over private IP addresses. +// You cannot enable your VPC for ClassicLink if any of your VPC route tables +// have existing routes for address ranges within the 10.0.0.0/8 IP address +// range, excluding local routes for VPCs in the 10.0.0.0/16 and 10.1.0.0/16 +// IP address ranges. For more information, see ClassicLink (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation EnableVpcClassicLink for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVpcClassicLink +func (c *EC2) EnableVpcClassicLink(input *EnableVpcClassicLinkInput) (*EnableVpcClassicLinkOutput, error) { + req, out := c.EnableVpcClassicLinkRequest(input) + return out, req.Send() +} + +// EnableVpcClassicLinkWithContext is the same as EnableVpcClassicLink with the addition of +// the ability to pass a context and additional request options. +// +// See EnableVpcClassicLink for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) EnableVpcClassicLinkWithContext(ctx aws.Context, input *EnableVpcClassicLinkInput, opts ...request.Option) (*EnableVpcClassicLinkOutput, error) { + req, out := c.EnableVpcClassicLinkRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opEnableVpcClassicLinkDnsSupport = "EnableVpcClassicLinkDnsSupport" + +// EnableVpcClassicLinkDnsSupportRequest generates a "aws/request.Request" representing the +// client's request for the EnableVpcClassicLinkDnsSupport operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See EnableVpcClassicLinkDnsSupport for more information on using the EnableVpcClassicLinkDnsSupport +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the EnableVpcClassicLinkDnsSupportRequest method. +// req, resp := client.EnableVpcClassicLinkDnsSupportRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVpcClassicLinkDnsSupport +func (c *EC2) EnableVpcClassicLinkDnsSupportRequest(input *EnableVpcClassicLinkDnsSupportInput) (req *request.Request, output *EnableVpcClassicLinkDnsSupportOutput) { + op := &request.Operation{ + Name: opEnableVpcClassicLinkDnsSupport, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &EnableVpcClassicLinkDnsSupportInput{} + } + + output = &EnableVpcClassicLinkDnsSupportOutput{} + req = c.newRequest(op, input, output) + return +} + +// EnableVpcClassicLinkDnsSupport API operation for Amazon Elastic Compute Cloud. +// +// Enables a VPC to support DNS hostname resolution for ClassicLink. If enabled, +// the DNS hostname of a linked EC2-Classic instance resolves to its private +// IP address when addressed from an instance in the VPC to which it's linked. +// Similarly, the DNS hostname of an instance in a VPC resolves to its private +// IP address when addressed from a linked EC2-Classic instance. For more information, +// see ClassicLink (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation EnableVpcClassicLinkDnsSupport for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableVpcClassicLinkDnsSupport +func (c *EC2) EnableVpcClassicLinkDnsSupport(input *EnableVpcClassicLinkDnsSupportInput) (*EnableVpcClassicLinkDnsSupportOutput, error) { + req, out := c.EnableVpcClassicLinkDnsSupportRequest(input) + return out, req.Send() +} + +// EnableVpcClassicLinkDnsSupportWithContext is the same as EnableVpcClassicLinkDnsSupport with the addition of +// the ability to pass a context and additional request options. +// +// See EnableVpcClassicLinkDnsSupport for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) EnableVpcClassicLinkDnsSupportWithContext(ctx aws.Context, input *EnableVpcClassicLinkDnsSupportInput, opts ...request.Option) (*EnableVpcClassicLinkDnsSupportOutput, error) { + req, out := c.EnableVpcClassicLinkDnsSupportRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opExportClientVpnClientCertificateRevocationList = "ExportClientVpnClientCertificateRevocationList" + +// ExportClientVpnClientCertificateRevocationListRequest generates a "aws/request.Request" representing the +// client's request for the ExportClientVpnClientCertificateRevocationList operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ExportClientVpnClientCertificateRevocationList for more information on using the ExportClientVpnClientCertificateRevocationList +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ExportClientVpnClientCertificateRevocationListRequest method. +// req, resp := client.ExportClientVpnClientCertificateRevocationListRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ExportClientVpnClientCertificateRevocationList +func (c *EC2) ExportClientVpnClientCertificateRevocationListRequest(input *ExportClientVpnClientCertificateRevocationListInput) (req *request.Request, output *ExportClientVpnClientCertificateRevocationListOutput) { + op := &request.Operation{ + Name: opExportClientVpnClientCertificateRevocationList, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ExportClientVpnClientCertificateRevocationListInput{} + } + + output = &ExportClientVpnClientCertificateRevocationListOutput{} + req = c.newRequest(op, input, output) + return +} + +// ExportClientVpnClientCertificateRevocationList API operation for Amazon Elastic Compute Cloud. +// +// Downloads the client certificate revocation list for the specified Client +// VPN endpoint. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ExportClientVpnClientCertificateRevocationList for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ExportClientVpnClientCertificateRevocationList +func (c *EC2) ExportClientVpnClientCertificateRevocationList(input *ExportClientVpnClientCertificateRevocationListInput) (*ExportClientVpnClientCertificateRevocationListOutput, error) { + req, out := c.ExportClientVpnClientCertificateRevocationListRequest(input) + return out, req.Send() +} + +// ExportClientVpnClientCertificateRevocationListWithContext is the same as ExportClientVpnClientCertificateRevocationList with the addition of +// the ability to pass a context and additional request options. +// +// See ExportClientVpnClientCertificateRevocationList for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ExportClientVpnClientCertificateRevocationListWithContext(ctx aws.Context, input *ExportClientVpnClientCertificateRevocationListInput, opts ...request.Option) (*ExportClientVpnClientCertificateRevocationListOutput, error) { + req, out := c.ExportClientVpnClientCertificateRevocationListRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opExportClientVpnClientConfiguration = "ExportClientVpnClientConfiguration" + +// ExportClientVpnClientConfigurationRequest generates a "aws/request.Request" representing the +// client's request for the ExportClientVpnClientConfiguration operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ExportClientVpnClientConfiguration for more information on using the ExportClientVpnClientConfiguration +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ExportClientVpnClientConfigurationRequest method. +// req, resp := client.ExportClientVpnClientConfigurationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ExportClientVpnClientConfiguration +func (c *EC2) ExportClientVpnClientConfigurationRequest(input *ExportClientVpnClientConfigurationInput) (req *request.Request, output *ExportClientVpnClientConfigurationOutput) { + op := &request.Operation{ + Name: opExportClientVpnClientConfiguration, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ExportClientVpnClientConfigurationInput{} + } + + output = &ExportClientVpnClientConfigurationOutput{} + req = c.newRequest(op, input, output) + return +} + +// ExportClientVpnClientConfiguration API operation for Amazon Elastic Compute Cloud. +// +// Downloads the contents of the Client VPN endpoint configuration file for +// the specified Client VPN endpoint. The Client VPN endpoint configuration +// file includes the Client VPN endpoint and certificate information clients +// need to establish a connection with the Client VPN endpoint. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ExportClientVpnClientConfiguration for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ExportClientVpnClientConfiguration +func (c *EC2) ExportClientVpnClientConfiguration(input *ExportClientVpnClientConfigurationInput) (*ExportClientVpnClientConfigurationOutput, error) { + req, out := c.ExportClientVpnClientConfigurationRequest(input) + return out, req.Send() +} + +// ExportClientVpnClientConfigurationWithContext is the same as ExportClientVpnClientConfiguration with the addition of +// the ability to pass a context and additional request options. +// +// See ExportClientVpnClientConfiguration for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ExportClientVpnClientConfigurationWithContext(ctx aws.Context, input *ExportClientVpnClientConfigurationInput, opts ...request.Option) (*ExportClientVpnClientConfigurationOutput, error) { + req, out := c.ExportClientVpnClientConfigurationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opExportImage = "ExportImage" + +// ExportImageRequest generates a "aws/request.Request" representing the +// client's request for the ExportImage operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ExportImage for more information on using the ExportImage +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ExportImageRequest method. +// req, resp := client.ExportImageRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ExportImage +func (c *EC2) ExportImageRequest(input *ExportImageInput) (req *request.Request, output *ExportImageOutput) { + op := &request.Operation{ + Name: opExportImage, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ExportImageInput{} + } + + output = &ExportImageOutput{} + req = c.newRequest(op, input, output) + return +} + +// ExportImage API operation for Amazon Elastic Compute Cloud. +// +// Exports an Amazon Machine Image (AMI) to a VM file. For more information, +// see Exporting a VM Directory from an Amazon Machine Image (AMI) (https://docs.aws.amazon.com/vm-import/latest/userguide/vmexport_image.html) +// in the VM Import/Export User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ExportImage for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ExportImage +func (c *EC2) ExportImage(input *ExportImageInput) (*ExportImageOutput, error) { + req, out := c.ExportImageRequest(input) + return out, req.Send() +} + +// ExportImageWithContext is the same as ExportImage with the addition of +// the ability to pass a context and additional request options. +// +// See ExportImage for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ExportImageWithContext(ctx aws.Context, input *ExportImageInput, opts ...request.Option) (*ExportImageOutput, error) { + req, out := c.ExportImageRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opExportTransitGatewayRoutes = "ExportTransitGatewayRoutes" + +// ExportTransitGatewayRoutesRequest generates a "aws/request.Request" representing the +// client's request for the ExportTransitGatewayRoutes operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ExportTransitGatewayRoutes for more information on using the ExportTransitGatewayRoutes +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ExportTransitGatewayRoutesRequest method. +// req, resp := client.ExportTransitGatewayRoutesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ExportTransitGatewayRoutes +func (c *EC2) ExportTransitGatewayRoutesRequest(input *ExportTransitGatewayRoutesInput) (req *request.Request, output *ExportTransitGatewayRoutesOutput) { + op := &request.Operation{ + Name: opExportTransitGatewayRoutes, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ExportTransitGatewayRoutesInput{} + } + + output = &ExportTransitGatewayRoutesOutput{} + req = c.newRequest(op, input, output) + return +} + +// ExportTransitGatewayRoutes API operation for Amazon Elastic Compute Cloud. +// +// Exports routes from the specified transit gateway route table to the specified +// S3 bucket. By default, all routes are exported. Alternatively, you can filter +// by CIDR range. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ExportTransitGatewayRoutes for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ExportTransitGatewayRoutes +func (c *EC2) ExportTransitGatewayRoutes(input *ExportTransitGatewayRoutesInput) (*ExportTransitGatewayRoutesOutput, error) { + req, out := c.ExportTransitGatewayRoutesRequest(input) + return out, req.Send() +} + +// ExportTransitGatewayRoutesWithContext is the same as ExportTransitGatewayRoutes with the addition of +// the ability to pass a context and additional request options. +// +// See ExportTransitGatewayRoutes for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ExportTransitGatewayRoutesWithContext(ctx aws.Context, input *ExportTransitGatewayRoutesInput, opts ...request.Option) (*ExportTransitGatewayRoutesOutput, error) { + req, out := c.ExportTransitGatewayRoutesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetCapacityReservationUsage = "GetCapacityReservationUsage" + +// GetCapacityReservationUsageRequest generates a "aws/request.Request" representing the +// client's request for the GetCapacityReservationUsage operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetCapacityReservationUsage for more information on using the GetCapacityReservationUsage +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetCapacityReservationUsageRequest method. +// req, resp := client.GetCapacityReservationUsageRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetCapacityReservationUsage +func (c *EC2) GetCapacityReservationUsageRequest(input *GetCapacityReservationUsageInput) (req *request.Request, output *GetCapacityReservationUsageOutput) { + op := &request.Operation{ + Name: opGetCapacityReservationUsage, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &GetCapacityReservationUsageInput{} + } + + output = &GetCapacityReservationUsageOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetCapacityReservationUsage API operation for Amazon Elastic Compute Cloud. +// +// Gets usage information about a Capacity Reservation. If the Capacity Reservation +// is shared, it shows usage information for the Capacity Reservation owner +// and each AWS account that is currently using the shared capacity. If the +// Capacity Reservation is not shared, it shows only the Capacity Reservation +// owner's usage. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation GetCapacityReservationUsage for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetCapacityReservationUsage +func (c *EC2) GetCapacityReservationUsage(input *GetCapacityReservationUsageInput) (*GetCapacityReservationUsageOutput, error) { + req, out := c.GetCapacityReservationUsageRequest(input) + return out, req.Send() +} + +// GetCapacityReservationUsageWithContext is the same as GetCapacityReservationUsage with the addition of +// the ability to pass a context and additional request options. +// +// See GetCapacityReservationUsage for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) GetCapacityReservationUsageWithContext(ctx aws.Context, input *GetCapacityReservationUsageInput, opts ...request.Option) (*GetCapacityReservationUsageOutput, error) { + req, out := c.GetCapacityReservationUsageRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetConsoleOutput = "GetConsoleOutput" + +// GetConsoleOutputRequest generates a "aws/request.Request" representing the +// client's request for the GetConsoleOutput operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetConsoleOutput for more information on using the GetConsoleOutput +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetConsoleOutputRequest method. +// req, resp := client.GetConsoleOutputRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetConsoleOutput +func (c *EC2) GetConsoleOutputRequest(input *GetConsoleOutputInput) (req *request.Request, output *GetConsoleOutputOutput) { + op := &request.Operation{ + Name: opGetConsoleOutput, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &GetConsoleOutputInput{} + } + + output = &GetConsoleOutputOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetConsoleOutput API operation for Amazon Elastic Compute Cloud. +// +// Gets the console output for the specified instance. For Linux instances, +// the instance console output displays the exact console output that would +// normally be displayed on a physical monitor attached to a computer. For Windows +// instances, the instance console output includes the last three system event +// log errors. +// +// By default, the console output returns buffered information that was posted +// shortly after an instance transition state (start, stop, reboot, or terminate). +// This information is available for at least one hour after the most recent +// post. Only the most recent 64 KB of console output is available. +// +// You can optionally retrieve the latest serial console output at any time +// during the instance lifecycle. This option is supported on instance types +// that use the Nitro hypervisor. +// +// For more information, see Instance Console Output (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-console.html#instance-console-console-output) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation GetConsoleOutput for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetConsoleOutput +func (c *EC2) GetConsoleOutput(input *GetConsoleOutputInput) (*GetConsoleOutputOutput, error) { + req, out := c.GetConsoleOutputRequest(input) + return out, req.Send() +} + +// GetConsoleOutputWithContext is the same as GetConsoleOutput with the addition of +// the ability to pass a context and additional request options. +// +// See GetConsoleOutput for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) GetConsoleOutputWithContext(ctx aws.Context, input *GetConsoleOutputInput, opts ...request.Option) (*GetConsoleOutputOutput, error) { + req, out := c.GetConsoleOutputRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetConsoleScreenshot = "GetConsoleScreenshot" + +// GetConsoleScreenshotRequest generates a "aws/request.Request" representing the +// client's request for the GetConsoleScreenshot operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetConsoleScreenshot for more information on using the GetConsoleScreenshot +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetConsoleScreenshotRequest method. +// req, resp := client.GetConsoleScreenshotRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetConsoleScreenshot +func (c *EC2) GetConsoleScreenshotRequest(input *GetConsoleScreenshotInput) (req *request.Request, output *GetConsoleScreenshotOutput) { + op := &request.Operation{ + Name: opGetConsoleScreenshot, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &GetConsoleScreenshotInput{} + } + + output = &GetConsoleScreenshotOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetConsoleScreenshot API operation for Amazon Elastic Compute Cloud. +// +// Retrieve a JPG-format screenshot of a running instance to help with troubleshooting. +// +// The returned content is Base64-encoded. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation GetConsoleScreenshot for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetConsoleScreenshot +func (c *EC2) GetConsoleScreenshot(input *GetConsoleScreenshotInput) (*GetConsoleScreenshotOutput, error) { + req, out := c.GetConsoleScreenshotRequest(input) + return out, req.Send() +} + +// GetConsoleScreenshotWithContext is the same as GetConsoleScreenshot with the addition of +// the ability to pass a context and additional request options. +// +// See GetConsoleScreenshot for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) GetConsoleScreenshotWithContext(ctx aws.Context, input *GetConsoleScreenshotInput, opts ...request.Option) (*GetConsoleScreenshotOutput, error) { + req, out := c.GetConsoleScreenshotRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetEbsDefaultKmsKeyId = "GetEbsDefaultKmsKeyId" + +// GetEbsDefaultKmsKeyIdRequest generates a "aws/request.Request" representing the +// client's request for the GetEbsDefaultKmsKeyId operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetEbsDefaultKmsKeyId for more information on using the GetEbsDefaultKmsKeyId +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetEbsDefaultKmsKeyIdRequest method. +// req, resp := client.GetEbsDefaultKmsKeyIdRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetEbsDefaultKmsKeyId +func (c *EC2) GetEbsDefaultKmsKeyIdRequest(input *GetEbsDefaultKmsKeyIdInput) (req *request.Request, output *GetEbsDefaultKmsKeyIdOutput) { + op := &request.Operation{ + Name: opGetEbsDefaultKmsKeyId, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &GetEbsDefaultKmsKeyIdInput{} + } + + output = &GetEbsDefaultKmsKeyIdOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetEbsDefaultKmsKeyId API operation for Amazon Elastic Compute Cloud. +// +// Describes the default customer master key (CMK) for EBS encryption by default +// for your account in this Region. You can change the default CMK for encryption +// by default using ModifyEbsDefaultKmsKeyId or ResetEbsDefaultKmsKeyId. +// +// For more information, see Amazon EBS Encryption (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation GetEbsDefaultKmsKeyId for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetEbsDefaultKmsKeyId +func (c *EC2) GetEbsDefaultKmsKeyId(input *GetEbsDefaultKmsKeyIdInput) (*GetEbsDefaultKmsKeyIdOutput, error) { + req, out := c.GetEbsDefaultKmsKeyIdRequest(input) + return out, req.Send() +} + +// GetEbsDefaultKmsKeyIdWithContext is the same as GetEbsDefaultKmsKeyId with the addition of +// the ability to pass a context and additional request options. +// +// See GetEbsDefaultKmsKeyId for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) GetEbsDefaultKmsKeyIdWithContext(ctx aws.Context, input *GetEbsDefaultKmsKeyIdInput, opts ...request.Option) (*GetEbsDefaultKmsKeyIdOutput, error) { + req, out := c.GetEbsDefaultKmsKeyIdRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetEbsEncryptionByDefault = "GetEbsEncryptionByDefault" + +// GetEbsEncryptionByDefaultRequest generates a "aws/request.Request" representing the +// client's request for the GetEbsEncryptionByDefault operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetEbsEncryptionByDefault for more information on using the GetEbsEncryptionByDefault +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetEbsEncryptionByDefaultRequest method. +// req, resp := client.GetEbsEncryptionByDefaultRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetEbsEncryptionByDefault +func (c *EC2) GetEbsEncryptionByDefaultRequest(input *GetEbsEncryptionByDefaultInput) (req *request.Request, output *GetEbsEncryptionByDefaultOutput) { + op := &request.Operation{ + Name: opGetEbsEncryptionByDefault, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &GetEbsEncryptionByDefaultInput{} + } + + output = &GetEbsEncryptionByDefaultOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetEbsEncryptionByDefault API operation for Amazon Elastic Compute Cloud. +// +// Describes whether EBS encryption by default is enabled for your account in +// the current Region. +// +// For more information, see Amazon EBS Encryption (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation GetEbsEncryptionByDefault for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetEbsEncryptionByDefault +func (c *EC2) GetEbsEncryptionByDefault(input *GetEbsEncryptionByDefaultInput) (*GetEbsEncryptionByDefaultOutput, error) { + req, out := c.GetEbsEncryptionByDefaultRequest(input) + return out, req.Send() +} + +// GetEbsEncryptionByDefaultWithContext is the same as GetEbsEncryptionByDefault with the addition of +// the ability to pass a context and additional request options. +// +// See GetEbsEncryptionByDefault for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) GetEbsEncryptionByDefaultWithContext(ctx aws.Context, input *GetEbsEncryptionByDefaultInput, opts ...request.Option) (*GetEbsEncryptionByDefaultOutput, error) { + req, out := c.GetEbsEncryptionByDefaultRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetHostReservationPurchasePreview = "GetHostReservationPurchasePreview" + +// GetHostReservationPurchasePreviewRequest generates a "aws/request.Request" representing the +// client's request for the GetHostReservationPurchasePreview operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetHostReservationPurchasePreview for more information on using the GetHostReservationPurchasePreview +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetHostReservationPurchasePreviewRequest method. +// req, resp := client.GetHostReservationPurchasePreviewRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetHostReservationPurchasePreview +func (c *EC2) GetHostReservationPurchasePreviewRequest(input *GetHostReservationPurchasePreviewInput) (req *request.Request, output *GetHostReservationPurchasePreviewOutput) { + op := &request.Operation{ + Name: opGetHostReservationPurchasePreview, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &GetHostReservationPurchasePreviewInput{} + } + + output = &GetHostReservationPurchasePreviewOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetHostReservationPurchasePreview API operation for Amazon Elastic Compute Cloud. +// +// Preview a reservation purchase with configurations that match those of your +// Dedicated Host. You must have active Dedicated Hosts in your account before +// you purchase a reservation. +// +// This is a preview of the PurchaseHostReservation action and does not result +// in the offering being purchased. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation GetHostReservationPurchasePreview for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetHostReservationPurchasePreview +func (c *EC2) GetHostReservationPurchasePreview(input *GetHostReservationPurchasePreviewInput) (*GetHostReservationPurchasePreviewOutput, error) { + req, out := c.GetHostReservationPurchasePreviewRequest(input) + return out, req.Send() +} + +// GetHostReservationPurchasePreviewWithContext is the same as GetHostReservationPurchasePreview with the addition of +// the ability to pass a context and additional request options. +// +// See GetHostReservationPurchasePreview for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) GetHostReservationPurchasePreviewWithContext(ctx aws.Context, input *GetHostReservationPurchasePreviewInput, opts ...request.Option) (*GetHostReservationPurchasePreviewOutput, error) { + req, out := c.GetHostReservationPurchasePreviewRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetLaunchTemplateData = "GetLaunchTemplateData" + +// GetLaunchTemplateDataRequest generates a "aws/request.Request" representing the +// client's request for the GetLaunchTemplateData operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetLaunchTemplateData for more information on using the GetLaunchTemplateData +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetLaunchTemplateDataRequest method. +// req, resp := client.GetLaunchTemplateDataRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetLaunchTemplateData +func (c *EC2) GetLaunchTemplateDataRequest(input *GetLaunchTemplateDataInput) (req *request.Request, output *GetLaunchTemplateDataOutput) { + op := &request.Operation{ + Name: opGetLaunchTemplateData, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &GetLaunchTemplateDataInput{} + } + + output = &GetLaunchTemplateDataOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetLaunchTemplateData API operation for Amazon Elastic Compute Cloud. +// +// Retrieves the configuration data of the specified instance. You can use this +// data to create a launch template. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation GetLaunchTemplateData for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetLaunchTemplateData +func (c *EC2) GetLaunchTemplateData(input *GetLaunchTemplateDataInput) (*GetLaunchTemplateDataOutput, error) { + req, out := c.GetLaunchTemplateDataRequest(input) + return out, req.Send() +} + +// GetLaunchTemplateDataWithContext is the same as GetLaunchTemplateData with the addition of +// the ability to pass a context and additional request options. +// +// See GetLaunchTemplateData for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) GetLaunchTemplateDataWithContext(ctx aws.Context, input *GetLaunchTemplateDataInput, opts ...request.Option) (*GetLaunchTemplateDataOutput, error) { + req, out := c.GetLaunchTemplateDataRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetPasswordData = "GetPasswordData" + +// GetPasswordDataRequest generates a "aws/request.Request" representing the +// client's request for the GetPasswordData operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetPasswordData for more information on using the GetPasswordData +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetPasswordDataRequest method. +// req, resp := client.GetPasswordDataRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetPasswordData +func (c *EC2) GetPasswordDataRequest(input *GetPasswordDataInput) (req *request.Request, output *GetPasswordDataOutput) { + op := &request.Operation{ + Name: opGetPasswordData, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &GetPasswordDataInput{} + } + + output = &GetPasswordDataOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetPasswordData API operation for Amazon Elastic Compute Cloud. +// +// Retrieves the encrypted administrator password for a running Windows instance. +// +// The Windows password is generated at boot by the EC2Config service or EC2Launch +// scripts (Windows Server 2016 and later). This usually only happens the first +// time an instance is launched. For more information, see EC2Config (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/UsingConfig_WinAMI.html) +// and EC2Launch (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2launch.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// For the EC2Config service, the password is not generated for rebundled AMIs +// unless Ec2SetPassword is enabled before bundling. +// +// The password is encrypted using the key pair that you specified when you +// launched the instance. You must provide the corresponding key pair file. +// +// When you launch an instance, password generation and encryption may take +// a few minutes. If you try to retrieve the password before it's available, +// the output returns an empty string. We recommend that you wait up to 15 minutes +// after launching an instance before trying to retrieve the generated password. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation GetPasswordData for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetPasswordData +func (c *EC2) GetPasswordData(input *GetPasswordDataInput) (*GetPasswordDataOutput, error) { + req, out := c.GetPasswordDataRequest(input) + return out, req.Send() +} + +// GetPasswordDataWithContext is the same as GetPasswordData with the addition of +// the ability to pass a context and additional request options. +// +// See GetPasswordData for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) GetPasswordDataWithContext(ctx aws.Context, input *GetPasswordDataInput, opts ...request.Option) (*GetPasswordDataOutput, error) { + req, out := c.GetPasswordDataRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetReservedInstancesExchangeQuote = "GetReservedInstancesExchangeQuote" + +// GetReservedInstancesExchangeQuoteRequest generates a "aws/request.Request" representing the +// client's request for the GetReservedInstancesExchangeQuote operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetReservedInstancesExchangeQuote for more information on using the GetReservedInstancesExchangeQuote +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetReservedInstancesExchangeQuoteRequest method. +// req, resp := client.GetReservedInstancesExchangeQuoteRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetReservedInstancesExchangeQuote +func (c *EC2) GetReservedInstancesExchangeQuoteRequest(input *GetReservedInstancesExchangeQuoteInput) (req *request.Request, output *GetReservedInstancesExchangeQuoteOutput) { + op := &request.Operation{ + Name: opGetReservedInstancesExchangeQuote, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &GetReservedInstancesExchangeQuoteInput{} + } + + output = &GetReservedInstancesExchangeQuoteOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetReservedInstancesExchangeQuote API operation for Amazon Elastic Compute Cloud. +// +// Returns a quote and exchange information for exchanging one or more specified +// Convertible Reserved Instances for a new Convertible Reserved Instance. If +// the exchange cannot be performed, the reason is returned in the response. +// Use AcceptReservedInstancesExchangeQuote to perform the exchange. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation GetReservedInstancesExchangeQuote for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetReservedInstancesExchangeQuote +func (c *EC2) GetReservedInstancesExchangeQuote(input *GetReservedInstancesExchangeQuoteInput) (*GetReservedInstancesExchangeQuoteOutput, error) { + req, out := c.GetReservedInstancesExchangeQuoteRequest(input) + return out, req.Send() +} + +// GetReservedInstancesExchangeQuoteWithContext is the same as GetReservedInstancesExchangeQuote with the addition of +// the ability to pass a context and additional request options. +// +// See GetReservedInstancesExchangeQuote for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) GetReservedInstancesExchangeQuoteWithContext(ctx aws.Context, input *GetReservedInstancesExchangeQuoteInput, opts ...request.Option) (*GetReservedInstancesExchangeQuoteOutput, error) { + req, out := c.GetReservedInstancesExchangeQuoteRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetTransitGatewayAttachmentPropagations = "GetTransitGatewayAttachmentPropagations" + +// GetTransitGatewayAttachmentPropagationsRequest generates a "aws/request.Request" representing the +// client's request for the GetTransitGatewayAttachmentPropagations operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetTransitGatewayAttachmentPropagations for more information on using the GetTransitGatewayAttachmentPropagations +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetTransitGatewayAttachmentPropagationsRequest method. +// req, resp := client.GetTransitGatewayAttachmentPropagationsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetTransitGatewayAttachmentPropagations +func (c *EC2) GetTransitGatewayAttachmentPropagationsRequest(input *GetTransitGatewayAttachmentPropagationsInput) (req *request.Request, output *GetTransitGatewayAttachmentPropagationsOutput) { + op := &request.Operation{ + Name: opGetTransitGatewayAttachmentPropagations, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &GetTransitGatewayAttachmentPropagationsInput{} + } + + output = &GetTransitGatewayAttachmentPropagationsOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetTransitGatewayAttachmentPropagations API operation for Amazon Elastic Compute Cloud. +// +// Lists the route tables to which the specified resource attachment propagates +// routes. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation GetTransitGatewayAttachmentPropagations for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetTransitGatewayAttachmentPropagations +func (c *EC2) GetTransitGatewayAttachmentPropagations(input *GetTransitGatewayAttachmentPropagationsInput) (*GetTransitGatewayAttachmentPropagationsOutput, error) { + req, out := c.GetTransitGatewayAttachmentPropagationsRequest(input) + return out, req.Send() +} + +// GetTransitGatewayAttachmentPropagationsWithContext is the same as GetTransitGatewayAttachmentPropagations with the addition of +// the ability to pass a context and additional request options. +// +// See GetTransitGatewayAttachmentPropagations for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) GetTransitGatewayAttachmentPropagationsWithContext(ctx aws.Context, input *GetTransitGatewayAttachmentPropagationsInput, opts ...request.Option) (*GetTransitGatewayAttachmentPropagationsOutput, error) { + req, out := c.GetTransitGatewayAttachmentPropagationsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// GetTransitGatewayAttachmentPropagationsPages iterates over the pages of a GetTransitGatewayAttachmentPropagations operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See GetTransitGatewayAttachmentPropagations method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a GetTransitGatewayAttachmentPropagations operation. +// pageNum := 0 +// err := client.GetTransitGatewayAttachmentPropagationsPages(params, +// func(page *ec2.GetTransitGatewayAttachmentPropagationsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) GetTransitGatewayAttachmentPropagationsPages(input *GetTransitGatewayAttachmentPropagationsInput, fn func(*GetTransitGatewayAttachmentPropagationsOutput, bool) bool) error { + return c.GetTransitGatewayAttachmentPropagationsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// GetTransitGatewayAttachmentPropagationsPagesWithContext same as GetTransitGatewayAttachmentPropagationsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) GetTransitGatewayAttachmentPropagationsPagesWithContext(ctx aws.Context, input *GetTransitGatewayAttachmentPropagationsInput, fn func(*GetTransitGatewayAttachmentPropagationsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *GetTransitGatewayAttachmentPropagationsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.GetTransitGatewayAttachmentPropagationsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*GetTransitGatewayAttachmentPropagationsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opGetTransitGatewayRouteTableAssociations = "GetTransitGatewayRouteTableAssociations" + +// GetTransitGatewayRouteTableAssociationsRequest generates a "aws/request.Request" representing the +// client's request for the GetTransitGatewayRouteTableAssociations operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetTransitGatewayRouteTableAssociations for more information on using the GetTransitGatewayRouteTableAssociations +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetTransitGatewayRouteTableAssociationsRequest method. +// req, resp := client.GetTransitGatewayRouteTableAssociationsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetTransitGatewayRouteTableAssociations +func (c *EC2) GetTransitGatewayRouteTableAssociationsRequest(input *GetTransitGatewayRouteTableAssociationsInput) (req *request.Request, output *GetTransitGatewayRouteTableAssociationsOutput) { + op := &request.Operation{ + Name: opGetTransitGatewayRouteTableAssociations, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &GetTransitGatewayRouteTableAssociationsInput{} + } + + output = &GetTransitGatewayRouteTableAssociationsOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetTransitGatewayRouteTableAssociations API operation for Amazon Elastic Compute Cloud. +// +// Gets information about the associations for the specified transit gateway +// route table. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation GetTransitGatewayRouteTableAssociations for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetTransitGatewayRouteTableAssociations +func (c *EC2) GetTransitGatewayRouteTableAssociations(input *GetTransitGatewayRouteTableAssociationsInput) (*GetTransitGatewayRouteTableAssociationsOutput, error) { + req, out := c.GetTransitGatewayRouteTableAssociationsRequest(input) + return out, req.Send() +} + +// GetTransitGatewayRouteTableAssociationsWithContext is the same as GetTransitGatewayRouteTableAssociations with the addition of +// the ability to pass a context and additional request options. +// +// See GetTransitGatewayRouteTableAssociations for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) GetTransitGatewayRouteTableAssociationsWithContext(ctx aws.Context, input *GetTransitGatewayRouteTableAssociationsInput, opts ...request.Option) (*GetTransitGatewayRouteTableAssociationsOutput, error) { + req, out := c.GetTransitGatewayRouteTableAssociationsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// GetTransitGatewayRouteTableAssociationsPages iterates over the pages of a GetTransitGatewayRouteTableAssociations operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See GetTransitGatewayRouteTableAssociations method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a GetTransitGatewayRouteTableAssociations operation. +// pageNum := 0 +// err := client.GetTransitGatewayRouteTableAssociationsPages(params, +// func(page *ec2.GetTransitGatewayRouteTableAssociationsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) GetTransitGatewayRouteTableAssociationsPages(input *GetTransitGatewayRouteTableAssociationsInput, fn func(*GetTransitGatewayRouteTableAssociationsOutput, bool) bool) error { + return c.GetTransitGatewayRouteTableAssociationsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// GetTransitGatewayRouteTableAssociationsPagesWithContext same as GetTransitGatewayRouteTableAssociationsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) GetTransitGatewayRouteTableAssociationsPagesWithContext(ctx aws.Context, input *GetTransitGatewayRouteTableAssociationsInput, fn func(*GetTransitGatewayRouteTableAssociationsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *GetTransitGatewayRouteTableAssociationsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.GetTransitGatewayRouteTableAssociationsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*GetTransitGatewayRouteTableAssociationsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opGetTransitGatewayRouteTablePropagations = "GetTransitGatewayRouteTablePropagations" + +// GetTransitGatewayRouteTablePropagationsRequest generates a "aws/request.Request" representing the +// client's request for the GetTransitGatewayRouteTablePropagations operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetTransitGatewayRouteTablePropagations for more information on using the GetTransitGatewayRouteTablePropagations +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetTransitGatewayRouteTablePropagationsRequest method. +// req, resp := client.GetTransitGatewayRouteTablePropagationsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetTransitGatewayRouteTablePropagations +func (c *EC2) GetTransitGatewayRouteTablePropagationsRequest(input *GetTransitGatewayRouteTablePropagationsInput) (req *request.Request, output *GetTransitGatewayRouteTablePropagationsOutput) { + op := &request.Operation{ + Name: opGetTransitGatewayRouteTablePropagations, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &GetTransitGatewayRouteTablePropagationsInput{} + } + + output = &GetTransitGatewayRouteTablePropagationsOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetTransitGatewayRouteTablePropagations API operation for Amazon Elastic Compute Cloud. +// +// Gets information about the route table propagations for the specified transit +// gateway route table. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation GetTransitGatewayRouteTablePropagations for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetTransitGatewayRouteTablePropagations +func (c *EC2) GetTransitGatewayRouteTablePropagations(input *GetTransitGatewayRouteTablePropagationsInput) (*GetTransitGatewayRouteTablePropagationsOutput, error) { + req, out := c.GetTransitGatewayRouteTablePropagationsRequest(input) + return out, req.Send() +} + +// GetTransitGatewayRouteTablePropagationsWithContext is the same as GetTransitGatewayRouteTablePropagations with the addition of +// the ability to pass a context and additional request options. +// +// See GetTransitGatewayRouteTablePropagations for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) GetTransitGatewayRouteTablePropagationsWithContext(ctx aws.Context, input *GetTransitGatewayRouteTablePropagationsInput, opts ...request.Option) (*GetTransitGatewayRouteTablePropagationsOutput, error) { + req, out := c.GetTransitGatewayRouteTablePropagationsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// GetTransitGatewayRouteTablePropagationsPages iterates over the pages of a GetTransitGatewayRouteTablePropagations operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See GetTransitGatewayRouteTablePropagations method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a GetTransitGatewayRouteTablePropagations operation. +// pageNum := 0 +// err := client.GetTransitGatewayRouteTablePropagationsPages(params, +// func(page *ec2.GetTransitGatewayRouteTablePropagationsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) GetTransitGatewayRouteTablePropagationsPages(input *GetTransitGatewayRouteTablePropagationsInput, fn func(*GetTransitGatewayRouteTablePropagationsOutput, bool) bool) error { + return c.GetTransitGatewayRouteTablePropagationsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// GetTransitGatewayRouteTablePropagationsPagesWithContext same as GetTransitGatewayRouteTablePropagationsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) GetTransitGatewayRouteTablePropagationsPagesWithContext(ctx aws.Context, input *GetTransitGatewayRouteTablePropagationsInput, fn func(*GetTransitGatewayRouteTablePropagationsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *GetTransitGatewayRouteTablePropagationsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.GetTransitGatewayRouteTablePropagationsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*GetTransitGatewayRouteTablePropagationsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opImportClientVpnClientCertificateRevocationList = "ImportClientVpnClientCertificateRevocationList" + +// ImportClientVpnClientCertificateRevocationListRequest generates a "aws/request.Request" representing the +// client's request for the ImportClientVpnClientCertificateRevocationList operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ImportClientVpnClientCertificateRevocationList for more information on using the ImportClientVpnClientCertificateRevocationList +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ImportClientVpnClientCertificateRevocationListRequest method. +// req, resp := client.ImportClientVpnClientCertificateRevocationListRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportClientVpnClientCertificateRevocationList +func (c *EC2) ImportClientVpnClientCertificateRevocationListRequest(input *ImportClientVpnClientCertificateRevocationListInput) (req *request.Request, output *ImportClientVpnClientCertificateRevocationListOutput) { + op := &request.Operation{ + Name: opImportClientVpnClientCertificateRevocationList, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ImportClientVpnClientCertificateRevocationListInput{} + } + + output = &ImportClientVpnClientCertificateRevocationListOutput{} + req = c.newRequest(op, input, output) + return +} + +// ImportClientVpnClientCertificateRevocationList API operation for Amazon Elastic Compute Cloud. +// +// Uploads a client certificate revocation list to the specified Client VPN +// endpoint. Uploading a client certificate revocation list overwrites the existing +// client certificate revocation list. +// +// Uploading a client certificate revocation list resets existing client connections. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ImportClientVpnClientCertificateRevocationList for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportClientVpnClientCertificateRevocationList +func (c *EC2) ImportClientVpnClientCertificateRevocationList(input *ImportClientVpnClientCertificateRevocationListInput) (*ImportClientVpnClientCertificateRevocationListOutput, error) { + req, out := c.ImportClientVpnClientCertificateRevocationListRequest(input) + return out, req.Send() +} + +// ImportClientVpnClientCertificateRevocationListWithContext is the same as ImportClientVpnClientCertificateRevocationList with the addition of +// the ability to pass a context and additional request options. +// +// See ImportClientVpnClientCertificateRevocationList for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ImportClientVpnClientCertificateRevocationListWithContext(ctx aws.Context, input *ImportClientVpnClientCertificateRevocationListInput, opts ...request.Option) (*ImportClientVpnClientCertificateRevocationListOutput, error) { + req, out := c.ImportClientVpnClientCertificateRevocationListRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opImportImage = "ImportImage" + +// ImportImageRequest generates a "aws/request.Request" representing the +// client's request for the ImportImage operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ImportImage for more information on using the ImportImage +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ImportImageRequest method. +// req, resp := client.ImportImageRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportImage +func (c *EC2) ImportImageRequest(input *ImportImageInput) (req *request.Request, output *ImportImageOutput) { + op := &request.Operation{ + Name: opImportImage, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ImportImageInput{} + } + + output = &ImportImageOutput{} + req = c.newRequest(op, input, output) + return +} + +// ImportImage API operation for Amazon Elastic Compute Cloud. +// +// Import single or multi-volume disk images or EBS snapshots into an Amazon +// Machine Image (AMI). For more information, see Importing a VM as an Image +// Using VM Import/Export (https://docs.aws.amazon.com/vm-import/latest/userguide/vmimport-image-import.html) +// in the VM Import/Export User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ImportImage for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportImage +func (c *EC2) ImportImage(input *ImportImageInput) (*ImportImageOutput, error) { + req, out := c.ImportImageRequest(input) + return out, req.Send() +} + +// ImportImageWithContext is the same as ImportImage with the addition of +// the ability to pass a context and additional request options. +// +// See ImportImage for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ImportImageWithContext(ctx aws.Context, input *ImportImageInput, opts ...request.Option) (*ImportImageOutput, error) { + req, out := c.ImportImageRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opImportInstance = "ImportInstance" + +// ImportInstanceRequest generates a "aws/request.Request" representing the +// client's request for the ImportInstance operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ImportInstance for more information on using the ImportInstance +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ImportInstanceRequest method. +// req, resp := client.ImportInstanceRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportInstance +func (c *EC2) ImportInstanceRequest(input *ImportInstanceInput) (req *request.Request, output *ImportInstanceOutput) { + op := &request.Operation{ + Name: opImportInstance, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ImportInstanceInput{} + } + + output = &ImportInstanceOutput{} + req = c.newRequest(op, input, output) + return +} + +// ImportInstance API operation for Amazon Elastic Compute Cloud. +// +// Creates an import instance task using metadata from the specified disk image. +// ImportInstance only supports single-volume VMs. To import multi-volume VMs, +// use ImportImage. For more information, see Importing a Virtual Machine Using +// the Amazon EC2 CLI (https://docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/ec2-cli-vmimport-export.html). +// +// For information about the import manifest referenced by this API action, +// see VM Import Manifest (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/manifest.html). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ImportInstance for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportInstance +func (c *EC2) ImportInstance(input *ImportInstanceInput) (*ImportInstanceOutput, error) { + req, out := c.ImportInstanceRequest(input) + return out, req.Send() +} + +// ImportInstanceWithContext is the same as ImportInstance with the addition of +// the ability to pass a context and additional request options. +// +// See ImportInstance for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ImportInstanceWithContext(ctx aws.Context, input *ImportInstanceInput, opts ...request.Option) (*ImportInstanceOutput, error) { + req, out := c.ImportInstanceRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opImportKeyPair = "ImportKeyPair" + +// ImportKeyPairRequest generates a "aws/request.Request" representing the +// client's request for the ImportKeyPair operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ImportKeyPair for more information on using the ImportKeyPair +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ImportKeyPairRequest method. +// req, resp := client.ImportKeyPairRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportKeyPair +func (c *EC2) ImportKeyPairRequest(input *ImportKeyPairInput) (req *request.Request, output *ImportKeyPairOutput) { + op := &request.Operation{ + Name: opImportKeyPair, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ImportKeyPairInput{} + } + + output = &ImportKeyPairOutput{} + req = c.newRequest(op, input, output) + return +} + +// ImportKeyPair API operation for Amazon Elastic Compute Cloud. +// +// Imports the public key from an RSA key pair that you created with a third-party +// tool. Compare this with CreateKeyPair, in which AWS creates the key pair +// and gives the keys to you (AWS keeps a copy of the public key). With ImportKeyPair, +// you create the key pair and give AWS just the public key. The private key +// is never transferred between you and AWS. +// +// For more information about key pairs, see Key Pairs (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ImportKeyPair for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportKeyPair +func (c *EC2) ImportKeyPair(input *ImportKeyPairInput) (*ImportKeyPairOutput, error) { + req, out := c.ImportKeyPairRequest(input) + return out, req.Send() +} + +// ImportKeyPairWithContext is the same as ImportKeyPair with the addition of +// the ability to pass a context and additional request options. +// +// See ImportKeyPair for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ImportKeyPairWithContext(ctx aws.Context, input *ImportKeyPairInput, opts ...request.Option) (*ImportKeyPairOutput, error) { + req, out := c.ImportKeyPairRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opImportSnapshot = "ImportSnapshot" + +// ImportSnapshotRequest generates a "aws/request.Request" representing the +// client's request for the ImportSnapshot operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ImportSnapshot for more information on using the ImportSnapshot +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ImportSnapshotRequest method. +// req, resp := client.ImportSnapshotRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportSnapshot +func (c *EC2) ImportSnapshotRequest(input *ImportSnapshotInput) (req *request.Request, output *ImportSnapshotOutput) { + op := &request.Operation{ + Name: opImportSnapshot, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ImportSnapshotInput{} + } + + output = &ImportSnapshotOutput{} + req = c.newRequest(op, input, output) + return +} + +// ImportSnapshot API operation for Amazon Elastic Compute Cloud. +// +// Imports a disk into an EBS snapshot. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ImportSnapshot for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportSnapshot +func (c *EC2) ImportSnapshot(input *ImportSnapshotInput) (*ImportSnapshotOutput, error) { + req, out := c.ImportSnapshotRequest(input) + return out, req.Send() +} + +// ImportSnapshotWithContext is the same as ImportSnapshot with the addition of +// the ability to pass a context and additional request options. +// +// See ImportSnapshot for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ImportSnapshotWithContext(ctx aws.Context, input *ImportSnapshotInput, opts ...request.Option) (*ImportSnapshotOutput, error) { + req, out := c.ImportSnapshotRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opImportVolume = "ImportVolume" + +// ImportVolumeRequest generates a "aws/request.Request" representing the +// client's request for the ImportVolume operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ImportVolume for more information on using the ImportVolume +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ImportVolumeRequest method. +// req, resp := client.ImportVolumeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportVolume +func (c *EC2) ImportVolumeRequest(input *ImportVolumeInput) (req *request.Request, output *ImportVolumeOutput) { + op := &request.Operation{ + Name: opImportVolume, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ImportVolumeInput{} + } + + output = &ImportVolumeOutput{} + req = c.newRequest(op, input, output) + return +} + +// ImportVolume API operation for Amazon Elastic Compute Cloud. +// +// Creates an import volume task using metadata from the specified disk image.For +// more information, see Importing Disks to Amazon EBS (https://docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/importing-your-volumes-into-amazon-ebs.html). +// +// For information about the import manifest referenced by this API action, +// see VM Import Manifest (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/manifest.html). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ImportVolume for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportVolume +func (c *EC2) ImportVolume(input *ImportVolumeInput) (*ImportVolumeOutput, error) { + req, out := c.ImportVolumeRequest(input) + return out, req.Send() +} + +// ImportVolumeWithContext is the same as ImportVolume with the addition of +// the ability to pass a context and additional request options. +// +// See ImportVolume for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ImportVolumeWithContext(ctx aws.Context, input *ImportVolumeInput, opts ...request.Option) (*ImportVolumeOutput, error) { + req, out := c.ImportVolumeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyCapacityReservation = "ModifyCapacityReservation" + +// ModifyCapacityReservationRequest generates a "aws/request.Request" representing the +// client's request for the ModifyCapacityReservation operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyCapacityReservation for more information on using the ModifyCapacityReservation +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyCapacityReservationRequest method. +// req, resp := client.ModifyCapacityReservationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyCapacityReservation +func (c *EC2) ModifyCapacityReservationRequest(input *ModifyCapacityReservationInput) (req *request.Request, output *ModifyCapacityReservationOutput) { + op := &request.Operation{ + Name: opModifyCapacityReservation, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyCapacityReservationInput{} + } + + output = &ModifyCapacityReservationOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyCapacityReservation API operation for Amazon Elastic Compute Cloud. +// +// Modifies a Capacity Reservation's capacity and the conditions under which +// it is to be released. You cannot change a Capacity Reservation's instance +// type, EBS optimization, instance store settings, platform, Availability Zone, +// or instance eligibility. If you need to modify any of these attributes, we +// recommend that you cancel the Capacity Reservation, and then create a new +// one with the required attributes. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyCapacityReservation for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyCapacityReservation +func (c *EC2) ModifyCapacityReservation(input *ModifyCapacityReservationInput) (*ModifyCapacityReservationOutput, error) { + req, out := c.ModifyCapacityReservationRequest(input) + return out, req.Send() +} + +// ModifyCapacityReservationWithContext is the same as ModifyCapacityReservation with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyCapacityReservation for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyCapacityReservationWithContext(ctx aws.Context, input *ModifyCapacityReservationInput, opts ...request.Option) (*ModifyCapacityReservationOutput, error) { + req, out := c.ModifyCapacityReservationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyClientVpnEndpoint = "ModifyClientVpnEndpoint" + +// ModifyClientVpnEndpointRequest generates a "aws/request.Request" representing the +// client's request for the ModifyClientVpnEndpoint operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyClientVpnEndpoint for more information on using the ModifyClientVpnEndpoint +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyClientVpnEndpointRequest method. +// req, resp := client.ModifyClientVpnEndpointRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyClientVpnEndpoint +func (c *EC2) ModifyClientVpnEndpointRequest(input *ModifyClientVpnEndpointInput) (req *request.Request, output *ModifyClientVpnEndpointOutput) { + op := &request.Operation{ + Name: opModifyClientVpnEndpoint, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyClientVpnEndpointInput{} + } + + output = &ModifyClientVpnEndpointOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyClientVpnEndpoint API operation for Amazon Elastic Compute Cloud. +// +// Modifies the specified Client VPN endpoint. You can only modify an endpoint's +// server certificate information, client connection logging information, DNS +// server, and description. Modifying the DNS server resets existing client +// connections. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyClientVpnEndpoint for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyClientVpnEndpoint +func (c *EC2) ModifyClientVpnEndpoint(input *ModifyClientVpnEndpointInput) (*ModifyClientVpnEndpointOutput, error) { + req, out := c.ModifyClientVpnEndpointRequest(input) + return out, req.Send() +} + +// ModifyClientVpnEndpointWithContext is the same as ModifyClientVpnEndpoint with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyClientVpnEndpoint for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyClientVpnEndpointWithContext(ctx aws.Context, input *ModifyClientVpnEndpointInput, opts ...request.Option) (*ModifyClientVpnEndpointOutput, error) { + req, out := c.ModifyClientVpnEndpointRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyEbsDefaultKmsKeyId = "ModifyEbsDefaultKmsKeyId" + +// ModifyEbsDefaultKmsKeyIdRequest generates a "aws/request.Request" representing the +// client's request for the ModifyEbsDefaultKmsKeyId operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyEbsDefaultKmsKeyId for more information on using the ModifyEbsDefaultKmsKeyId +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyEbsDefaultKmsKeyIdRequest method. +// req, resp := client.ModifyEbsDefaultKmsKeyIdRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyEbsDefaultKmsKeyId +func (c *EC2) ModifyEbsDefaultKmsKeyIdRequest(input *ModifyEbsDefaultKmsKeyIdInput) (req *request.Request, output *ModifyEbsDefaultKmsKeyIdOutput) { + op := &request.Operation{ + Name: opModifyEbsDefaultKmsKeyId, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyEbsDefaultKmsKeyIdInput{} + } + + output = &ModifyEbsDefaultKmsKeyIdOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyEbsDefaultKmsKeyId API operation for Amazon Elastic Compute Cloud. +// +// Changes the default customer master key (CMK) for EBS encryption by default +// for your account in this Region. +// +// AWS creates a unique AWS managed CMK in each Region for use with encryption +// by default. If you change the default CMK to a customer managed CMK, it is +// used instead of the AWS managed CMK. To reset the default CMK to the AWS +// managed CMK for EBS, use ResetEbsDefaultKmsKeyId. +// +// If you delete or disable the customer managed CMK that you specified for +// use with encryption by default, your instances will fail to launch. +// +// For more information, see Amazon EBS Encryption (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyEbsDefaultKmsKeyId for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyEbsDefaultKmsKeyId +func (c *EC2) ModifyEbsDefaultKmsKeyId(input *ModifyEbsDefaultKmsKeyIdInput) (*ModifyEbsDefaultKmsKeyIdOutput, error) { + req, out := c.ModifyEbsDefaultKmsKeyIdRequest(input) + return out, req.Send() +} + +// ModifyEbsDefaultKmsKeyIdWithContext is the same as ModifyEbsDefaultKmsKeyId with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyEbsDefaultKmsKeyId for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyEbsDefaultKmsKeyIdWithContext(ctx aws.Context, input *ModifyEbsDefaultKmsKeyIdInput, opts ...request.Option) (*ModifyEbsDefaultKmsKeyIdOutput, error) { + req, out := c.ModifyEbsDefaultKmsKeyIdRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyFleet = "ModifyFleet" + +// ModifyFleetRequest generates a "aws/request.Request" representing the +// client's request for the ModifyFleet operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyFleet for more information on using the ModifyFleet +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyFleetRequest method. +// req, resp := client.ModifyFleetRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyFleet +func (c *EC2) ModifyFleetRequest(input *ModifyFleetInput) (req *request.Request, output *ModifyFleetOutput) { + op := &request.Operation{ + Name: opModifyFleet, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyFleetInput{} + } + + output = &ModifyFleetOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyFleet API operation for Amazon Elastic Compute Cloud. +// +// Modifies the specified EC2 Fleet. +// +// You can only modify an EC2 Fleet request of type maintain. +// +// While the EC2 Fleet is being modified, it is in the modifying state. +// +// To scale up your EC2 Fleet, increase its target capacity. The EC2 Fleet launches +// the additional Spot Instances according to the allocation strategy for the +// EC2 Fleet request. If the allocation strategy is lowest-price, the EC2 Fleet +// launches instances using the Spot Instance pool with the lowest price. If +// the allocation strategy is diversified, the EC2 Fleet distributes the instances +// across the Spot Instance pools. If the allocation strategy is capacity-optimized, +// EC2 Fleet launches instances from Spot Instance pools with optimal capacity +// for the number of instances that are launching. +// +// To scale down your EC2 Fleet, decrease its target capacity. First, the EC2 +// Fleet cancels any open requests that exceed the new target capacity. You +// can request that the EC2 Fleet terminate Spot Instances until the size of +// the fleet no longer exceeds the new target capacity. If the allocation strategy +// is lowest-price, the EC2 Fleet terminates the instances with the highest +// price per unit. If the allocation strategy is capacity-optimized, the EC2 +// Fleet terminates the instances in the Spot Instance pools that have the least +// available Spot Instance capacity. If the allocation strategy is diversified, +// the EC2 Fleet terminates instances across the Spot Instance pools. Alternatively, +// you can request that the EC2 Fleet keep the fleet at its current size, but +// not replace any Spot Instances that are interrupted or that you terminate +// manually. +// +// If you are finished with your EC2 Fleet for now, but will use it again later, +// you can set the target capacity to 0. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyFleet for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyFleet +func (c *EC2) ModifyFleet(input *ModifyFleetInput) (*ModifyFleetOutput, error) { + req, out := c.ModifyFleetRequest(input) + return out, req.Send() +} + +// ModifyFleetWithContext is the same as ModifyFleet with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyFleet for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyFleetWithContext(ctx aws.Context, input *ModifyFleetInput, opts ...request.Option) (*ModifyFleetOutput, error) { + req, out := c.ModifyFleetRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyFpgaImageAttribute = "ModifyFpgaImageAttribute" + +// ModifyFpgaImageAttributeRequest generates a "aws/request.Request" representing the +// client's request for the ModifyFpgaImageAttribute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyFpgaImageAttribute for more information on using the ModifyFpgaImageAttribute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyFpgaImageAttributeRequest method. +// req, resp := client.ModifyFpgaImageAttributeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyFpgaImageAttribute +func (c *EC2) ModifyFpgaImageAttributeRequest(input *ModifyFpgaImageAttributeInput) (req *request.Request, output *ModifyFpgaImageAttributeOutput) { + op := &request.Operation{ + Name: opModifyFpgaImageAttribute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyFpgaImageAttributeInput{} + } + + output = &ModifyFpgaImageAttributeOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyFpgaImageAttribute API operation for Amazon Elastic Compute Cloud. +// +// Modifies the specified attribute of the specified Amazon FPGA Image (AFI). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyFpgaImageAttribute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyFpgaImageAttribute +func (c *EC2) ModifyFpgaImageAttribute(input *ModifyFpgaImageAttributeInput) (*ModifyFpgaImageAttributeOutput, error) { + req, out := c.ModifyFpgaImageAttributeRequest(input) + return out, req.Send() +} + +// ModifyFpgaImageAttributeWithContext is the same as ModifyFpgaImageAttribute with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyFpgaImageAttribute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyFpgaImageAttributeWithContext(ctx aws.Context, input *ModifyFpgaImageAttributeInput, opts ...request.Option) (*ModifyFpgaImageAttributeOutput, error) { + req, out := c.ModifyFpgaImageAttributeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyHosts = "ModifyHosts" + +// ModifyHostsRequest generates a "aws/request.Request" representing the +// client's request for the ModifyHosts operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyHosts for more information on using the ModifyHosts +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyHostsRequest method. +// req, resp := client.ModifyHostsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyHosts +func (c *EC2) ModifyHostsRequest(input *ModifyHostsInput) (req *request.Request, output *ModifyHostsOutput) { + op := &request.Operation{ + Name: opModifyHosts, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyHostsInput{} + } + + output = &ModifyHostsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyHosts API operation for Amazon Elastic Compute Cloud. +// +// Modify the auto-placement setting of a Dedicated Host. When auto-placement +// is enabled, any instances that you launch with a tenancy of host but without +// a specific host ID are placed onto any available Dedicated Host in your account +// that has auto-placement enabled. When auto-placement is disabled, you need +// to provide a host ID to have the instance launch onto a specific host. If +// no host ID is provided, the instance is launched onto a suitable host with +// auto-placement enabled. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyHosts for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyHosts +func (c *EC2) ModifyHosts(input *ModifyHostsInput) (*ModifyHostsOutput, error) { + req, out := c.ModifyHostsRequest(input) + return out, req.Send() +} + +// ModifyHostsWithContext is the same as ModifyHosts with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyHosts for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyHostsWithContext(ctx aws.Context, input *ModifyHostsInput, opts ...request.Option) (*ModifyHostsOutput, error) { + req, out := c.ModifyHostsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyIdFormat = "ModifyIdFormat" + +// ModifyIdFormatRequest generates a "aws/request.Request" representing the +// client's request for the ModifyIdFormat operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyIdFormat for more information on using the ModifyIdFormat +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyIdFormatRequest method. +// req, resp := client.ModifyIdFormatRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyIdFormat +func (c *EC2) ModifyIdFormatRequest(input *ModifyIdFormatInput) (req *request.Request, output *ModifyIdFormatOutput) { + op := &request.Operation{ + Name: opModifyIdFormat, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyIdFormatInput{} + } + + output = &ModifyIdFormatOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// ModifyIdFormat API operation for Amazon Elastic Compute Cloud. +// +// Modifies the ID format for the specified resource on a per-Region basis. +// You can specify that resources should receive longer IDs (17-character IDs) +// when they are created. +// +// This request can only be used to modify longer ID settings for resource types +// that are within the opt-in period. Resources currently in their opt-in period +// include: bundle | conversion-task | customer-gateway | dhcp-options | elastic-ip-allocation +// | elastic-ip-association | export-task | flow-log | image | import-task | +// internet-gateway | network-acl | network-acl-association | network-interface +// | network-interface-attachment | prefix-list | route-table | route-table-association +// | security-group | subnet | subnet-cidr-block-association | vpc | vpc-cidr-block-association +// | vpc-endpoint | vpc-peering-connection | vpn-connection | vpn-gateway. +// +// This setting applies to the IAM user who makes the request; it does not apply +// to the entire AWS account. By default, an IAM user defaults to the same settings +// as the root user. If you're using this action as the root user, then these +// settings apply to the entire account, unless an IAM user explicitly overrides +// these settings for themselves. For more information, see Resource IDs (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/resource-ids.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Resources created with longer IDs are visible to all IAM roles and users, +// regardless of these settings and provided that they have permission to use +// the relevant Describe command for the resource type. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyIdFormat for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyIdFormat +func (c *EC2) ModifyIdFormat(input *ModifyIdFormatInput) (*ModifyIdFormatOutput, error) { + req, out := c.ModifyIdFormatRequest(input) + return out, req.Send() +} + +// ModifyIdFormatWithContext is the same as ModifyIdFormat with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyIdFormat for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyIdFormatWithContext(ctx aws.Context, input *ModifyIdFormatInput, opts ...request.Option) (*ModifyIdFormatOutput, error) { + req, out := c.ModifyIdFormatRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyIdentityIdFormat = "ModifyIdentityIdFormat" + +// ModifyIdentityIdFormatRequest generates a "aws/request.Request" representing the +// client's request for the ModifyIdentityIdFormat operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyIdentityIdFormat for more information on using the ModifyIdentityIdFormat +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyIdentityIdFormatRequest method. +// req, resp := client.ModifyIdentityIdFormatRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyIdentityIdFormat +func (c *EC2) ModifyIdentityIdFormatRequest(input *ModifyIdentityIdFormatInput) (req *request.Request, output *ModifyIdentityIdFormatOutput) { + op := &request.Operation{ + Name: opModifyIdentityIdFormat, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyIdentityIdFormatInput{} + } + + output = &ModifyIdentityIdFormatOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// ModifyIdentityIdFormat API operation for Amazon Elastic Compute Cloud. +// +// Modifies the ID format of a resource for a specified IAM user, IAM role, +// or the root user for an account; or all IAM users, IAM roles, and the root +// user for an account. You can specify that resources should receive longer +// IDs (17-character IDs) when they are created. +// +// This request can only be used to modify longer ID settings for resource types +// that are within the opt-in period. Resources currently in their opt-in period +// include: bundle | conversion-task | customer-gateway | dhcp-options | elastic-ip-allocation +// | elastic-ip-association | export-task | flow-log | image | import-task | +// internet-gateway | network-acl | network-acl-association | network-interface +// | network-interface-attachment | prefix-list | route-table | route-table-association +// | security-group | subnet | subnet-cidr-block-association | vpc | vpc-cidr-block-association +// | vpc-endpoint | vpc-peering-connection | vpn-connection | vpn-gateway. +// +// For more information, see Resource IDs (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/resource-ids.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// This setting applies to the principal specified in the request; it does not +// apply to the principal that makes the request. +// +// Resources created with longer IDs are visible to all IAM roles and users, +// regardless of these settings and provided that they have permission to use +// the relevant Describe command for the resource type. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyIdentityIdFormat for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyIdentityIdFormat +func (c *EC2) ModifyIdentityIdFormat(input *ModifyIdentityIdFormatInput) (*ModifyIdentityIdFormatOutput, error) { + req, out := c.ModifyIdentityIdFormatRequest(input) + return out, req.Send() +} + +// ModifyIdentityIdFormatWithContext is the same as ModifyIdentityIdFormat with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyIdentityIdFormat for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyIdentityIdFormatWithContext(ctx aws.Context, input *ModifyIdentityIdFormatInput, opts ...request.Option) (*ModifyIdentityIdFormatOutput, error) { + req, out := c.ModifyIdentityIdFormatRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyImageAttribute = "ModifyImageAttribute" + +// ModifyImageAttributeRequest generates a "aws/request.Request" representing the +// client's request for the ModifyImageAttribute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyImageAttribute for more information on using the ModifyImageAttribute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyImageAttributeRequest method. +// req, resp := client.ModifyImageAttributeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyImageAttribute +func (c *EC2) ModifyImageAttributeRequest(input *ModifyImageAttributeInput) (req *request.Request, output *ModifyImageAttributeOutput) { + op := &request.Operation{ + Name: opModifyImageAttribute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyImageAttributeInput{} + } + + output = &ModifyImageAttributeOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// ModifyImageAttribute API operation for Amazon Elastic Compute Cloud. +// +// Modifies the specified attribute of the specified AMI. You can specify only +// one attribute at a time. You can use the Attribute parameter to specify the +// attribute or one of the following parameters: Description, LaunchPermission, +// or ProductCode. +// +// AWS Marketplace product codes cannot be modified. Images with an AWS Marketplace +// product code cannot be made public. +// +// To enable the SriovNetSupport enhanced networking attribute of an image, +// enable SriovNetSupport on an instance and create an AMI from the instance. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyImageAttribute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyImageAttribute +func (c *EC2) ModifyImageAttribute(input *ModifyImageAttributeInput) (*ModifyImageAttributeOutput, error) { + req, out := c.ModifyImageAttributeRequest(input) + return out, req.Send() +} + +// ModifyImageAttributeWithContext is the same as ModifyImageAttribute with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyImageAttribute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyImageAttributeWithContext(ctx aws.Context, input *ModifyImageAttributeInput, opts ...request.Option) (*ModifyImageAttributeOutput, error) { + req, out := c.ModifyImageAttributeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyInstanceAttribute = "ModifyInstanceAttribute" + +// ModifyInstanceAttributeRequest generates a "aws/request.Request" representing the +// client's request for the ModifyInstanceAttribute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyInstanceAttribute for more information on using the ModifyInstanceAttribute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyInstanceAttributeRequest method. +// req, resp := client.ModifyInstanceAttributeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstanceAttribute +func (c *EC2) ModifyInstanceAttributeRequest(input *ModifyInstanceAttributeInput) (req *request.Request, output *ModifyInstanceAttributeOutput) { + op := &request.Operation{ + Name: opModifyInstanceAttribute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyInstanceAttributeInput{} + } + + output = &ModifyInstanceAttributeOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// ModifyInstanceAttribute API operation for Amazon Elastic Compute Cloud. +// +// Modifies the specified attribute of the specified instance. You can specify +// only one attribute at a time. +// +// Note: Using this action to change the security groups associated with an +// elastic network interface (ENI) attached to an instance in a VPC can result +// in an error if the instance has more than one ENI. To change the security +// groups associated with an ENI attached to an instance that has multiple ENIs, +// we recommend that you use the ModifyNetworkInterfaceAttribute action. +// +// To modify some attributes, the instance must be stopped. For more information, +// see Modifying Attributes of a Stopped Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_ChangingAttributesWhileInstanceStopped.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyInstanceAttribute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstanceAttribute +func (c *EC2) ModifyInstanceAttribute(input *ModifyInstanceAttributeInput) (*ModifyInstanceAttributeOutput, error) { + req, out := c.ModifyInstanceAttributeRequest(input) + return out, req.Send() +} + +// ModifyInstanceAttributeWithContext is the same as ModifyInstanceAttribute with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyInstanceAttribute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyInstanceAttributeWithContext(ctx aws.Context, input *ModifyInstanceAttributeInput, opts ...request.Option) (*ModifyInstanceAttributeOutput, error) { + req, out := c.ModifyInstanceAttributeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyInstanceCapacityReservationAttributes = "ModifyInstanceCapacityReservationAttributes" + +// ModifyInstanceCapacityReservationAttributesRequest generates a "aws/request.Request" representing the +// client's request for the ModifyInstanceCapacityReservationAttributes operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyInstanceCapacityReservationAttributes for more information on using the ModifyInstanceCapacityReservationAttributes +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyInstanceCapacityReservationAttributesRequest method. +// req, resp := client.ModifyInstanceCapacityReservationAttributesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstanceCapacityReservationAttributes +func (c *EC2) ModifyInstanceCapacityReservationAttributesRequest(input *ModifyInstanceCapacityReservationAttributesInput) (req *request.Request, output *ModifyInstanceCapacityReservationAttributesOutput) { + op := &request.Operation{ + Name: opModifyInstanceCapacityReservationAttributes, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyInstanceCapacityReservationAttributesInput{} + } + + output = &ModifyInstanceCapacityReservationAttributesOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyInstanceCapacityReservationAttributes API operation for Amazon Elastic Compute Cloud. +// +// Modifies the Capacity Reservation settings for a stopped instance. Use this +// action to configure an instance to target a specific Capacity Reservation, +// run in any open Capacity Reservation with matching attributes, or run On-Demand +// Instance capacity. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyInstanceCapacityReservationAttributes for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstanceCapacityReservationAttributes +func (c *EC2) ModifyInstanceCapacityReservationAttributes(input *ModifyInstanceCapacityReservationAttributesInput) (*ModifyInstanceCapacityReservationAttributesOutput, error) { + req, out := c.ModifyInstanceCapacityReservationAttributesRequest(input) + return out, req.Send() +} + +// ModifyInstanceCapacityReservationAttributesWithContext is the same as ModifyInstanceCapacityReservationAttributes with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyInstanceCapacityReservationAttributes for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyInstanceCapacityReservationAttributesWithContext(ctx aws.Context, input *ModifyInstanceCapacityReservationAttributesInput, opts ...request.Option) (*ModifyInstanceCapacityReservationAttributesOutput, error) { + req, out := c.ModifyInstanceCapacityReservationAttributesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyInstanceCreditSpecification = "ModifyInstanceCreditSpecification" + +// ModifyInstanceCreditSpecificationRequest generates a "aws/request.Request" representing the +// client's request for the ModifyInstanceCreditSpecification operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyInstanceCreditSpecification for more information on using the ModifyInstanceCreditSpecification +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyInstanceCreditSpecificationRequest method. +// req, resp := client.ModifyInstanceCreditSpecificationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstanceCreditSpecification +func (c *EC2) ModifyInstanceCreditSpecificationRequest(input *ModifyInstanceCreditSpecificationInput) (req *request.Request, output *ModifyInstanceCreditSpecificationOutput) { + op := &request.Operation{ + Name: opModifyInstanceCreditSpecification, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyInstanceCreditSpecificationInput{} + } + + output = &ModifyInstanceCreditSpecificationOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyInstanceCreditSpecification API operation for Amazon Elastic Compute Cloud. +// +// Modifies the credit option for CPU usage on a running or stopped T2 or T3 +// instance. The credit options are standard and unlimited. +// +// For more information, see Burstable Performance Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyInstanceCreditSpecification for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstanceCreditSpecification +func (c *EC2) ModifyInstanceCreditSpecification(input *ModifyInstanceCreditSpecificationInput) (*ModifyInstanceCreditSpecificationOutput, error) { + req, out := c.ModifyInstanceCreditSpecificationRequest(input) + return out, req.Send() +} + +// ModifyInstanceCreditSpecificationWithContext is the same as ModifyInstanceCreditSpecification with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyInstanceCreditSpecification for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyInstanceCreditSpecificationWithContext(ctx aws.Context, input *ModifyInstanceCreditSpecificationInput, opts ...request.Option) (*ModifyInstanceCreditSpecificationOutput, error) { + req, out := c.ModifyInstanceCreditSpecificationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyInstanceEventStartTime = "ModifyInstanceEventStartTime" + +// ModifyInstanceEventStartTimeRequest generates a "aws/request.Request" representing the +// client's request for the ModifyInstanceEventStartTime operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyInstanceEventStartTime for more information on using the ModifyInstanceEventStartTime +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyInstanceEventStartTimeRequest method. +// req, resp := client.ModifyInstanceEventStartTimeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstanceEventStartTime +func (c *EC2) ModifyInstanceEventStartTimeRequest(input *ModifyInstanceEventStartTimeInput) (req *request.Request, output *ModifyInstanceEventStartTimeOutput) { + op := &request.Operation{ + Name: opModifyInstanceEventStartTime, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyInstanceEventStartTimeInput{} + } + + output = &ModifyInstanceEventStartTimeOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyInstanceEventStartTime API operation for Amazon Elastic Compute Cloud. +// +// Modifies the start time for a scheduled Amazon EC2 instance event. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyInstanceEventStartTime for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstanceEventStartTime +func (c *EC2) ModifyInstanceEventStartTime(input *ModifyInstanceEventStartTimeInput) (*ModifyInstanceEventStartTimeOutput, error) { + req, out := c.ModifyInstanceEventStartTimeRequest(input) + return out, req.Send() +} + +// ModifyInstanceEventStartTimeWithContext is the same as ModifyInstanceEventStartTime with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyInstanceEventStartTime for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyInstanceEventStartTimeWithContext(ctx aws.Context, input *ModifyInstanceEventStartTimeInput, opts ...request.Option) (*ModifyInstanceEventStartTimeOutput, error) { + req, out := c.ModifyInstanceEventStartTimeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyInstancePlacement = "ModifyInstancePlacement" + +// ModifyInstancePlacementRequest generates a "aws/request.Request" representing the +// client's request for the ModifyInstancePlacement operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyInstancePlacement for more information on using the ModifyInstancePlacement +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyInstancePlacementRequest method. +// req, resp := client.ModifyInstancePlacementRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstancePlacement +func (c *EC2) ModifyInstancePlacementRequest(input *ModifyInstancePlacementInput) (req *request.Request, output *ModifyInstancePlacementOutput) { + op := &request.Operation{ + Name: opModifyInstancePlacement, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyInstancePlacementInput{} + } + + output = &ModifyInstancePlacementOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyInstancePlacement API operation for Amazon Elastic Compute Cloud. +// +// Modifies the placement attributes for a specified instance. You can do the +// following: +// +// * Modify the affinity between an instance and a Dedicated Host (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-hosts-overview.html). +// When affinity is set to host and the instance is not associated with a +// specific Dedicated Host, the next time the instance is launched, it is +// automatically associated with the host on which it lands. If the instance +// is restarted or rebooted, this relationship persists. +// +// * Change the Dedicated Host with which an instance is associated. +// +// * Change the instance tenancy of an instance from host to dedicated, or +// from dedicated to host. +// +// * Move an instance to or from a placement group (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html). +// +// At least one attribute for affinity, host ID, tenancy, or placement group +// name must be specified in the request. Affinity and tenancy can be modified +// in the same request. +// +// To modify the host ID, tenancy, placement group, or partition for an instance, +// the instance must be in the stopped state. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyInstancePlacement for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstancePlacement +func (c *EC2) ModifyInstancePlacement(input *ModifyInstancePlacementInput) (*ModifyInstancePlacementOutput, error) { + req, out := c.ModifyInstancePlacementRequest(input) + return out, req.Send() +} + +// ModifyInstancePlacementWithContext is the same as ModifyInstancePlacement with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyInstancePlacement for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyInstancePlacementWithContext(ctx aws.Context, input *ModifyInstancePlacementInput, opts ...request.Option) (*ModifyInstancePlacementOutput, error) { + req, out := c.ModifyInstancePlacementRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyLaunchTemplate = "ModifyLaunchTemplate" + +// ModifyLaunchTemplateRequest generates a "aws/request.Request" representing the +// client's request for the ModifyLaunchTemplate operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyLaunchTemplate for more information on using the ModifyLaunchTemplate +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyLaunchTemplateRequest method. +// req, resp := client.ModifyLaunchTemplateRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyLaunchTemplate +func (c *EC2) ModifyLaunchTemplateRequest(input *ModifyLaunchTemplateInput) (req *request.Request, output *ModifyLaunchTemplateOutput) { + op := &request.Operation{ + Name: opModifyLaunchTemplate, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyLaunchTemplateInput{} + } + + output = &ModifyLaunchTemplateOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyLaunchTemplate API operation for Amazon Elastic Compute Cloud. +// +// Modifies a launch template. You can specify which version of the launch template +// to set as the default version. When launching an instance, the default version +// applies when a launch template version is not specified. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyLaunchTemplate for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyLaunchTemplate +func (c *EC2) ModifyLaunchTemplate(input *ModifyLaunchTemplateInput) (*ModifyLaunchTemplateOutput, error) { + req, out := c.ModifyLaunchTemplateRequest(input) + return out, req.Send() +} + +// ModifyLaunchTemplateWithContext is the same as ModifyLaunchTemplate with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyLaunchTemplate for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyLaunchTemplateWithContext(ctx aws.Context, input *ModifyLaunchTemplateInput, opts ...request.Option) (*ModifyLaunchTemplateOutput, error) { + req, out := c.ModifyLaunchTemplateRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyNetworkInterfaceAttribute = "ModifyNetworkInterfaceAttribute" + +// ModifyNetworkInterfaceAttributeRequest generates a "aws/request.Request" representing the +// client's request for the ModifyNetworkInterfaceAttribute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyNetworkInterfaceAttribute for more information on using the ModifyNetworkInterfaceAttribute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyNetworkInterfaceAttributeRequest method. +// req, resp := client.ModifyNetworkInterfaceAttributeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyNetworkInterfaceAttribute +func (c *EC2) ModifyNetworkInterfaceAttributeRequest(input *ModifyNetworkInterfaceAttributeInput) (req *request.Request, output *ModifyNetworkInterfaceAttributeOutput) { + op := &request.Operation{ + Name: opModifyNetworkInterfaceAttribute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyNetworkInterfaceAttributeInput{} + } + + output = &ModifyNetworkInterfaceAttributeOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// ModifyNetworkInterfaceAttribute API operation for Amazon Elastic Compute Cloud. +// +// Modifies the specified network interface attribute. You can specify only +// one attribute at a time. You can use this action to attach and detach security +// groups from an existing EC2 instance. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyNetworkInterfaceAttribute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyNetworkInterfaceAttribute +func (c *EC2) ModifyNetworkInterfaceAttribute(input *ModifyNetworkInterfaceAttributeInput) (*ModifyNetworkInterfaceAttributeOutput, error) { + req, out := c.ModifyNetworkInterfaceAttributeRequest(input) + return out, req.Send() +} + +// ModifyNetworkInterfaceAttributeWithContext is the same as ModifyNetworkInterfaceAttribute with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyNetworkInterfaceAttribute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyNetworkInterfaceAttributeWithContext(ctx aws.Context, input *ModifyNetworkInterfaceAttributeInput, opts ...request.Option) (*ModifyNetworkInterfaceAttributeOutput, error) { + req, out := c.ModifyNetworkInterfaceAttributeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyReservedInstances = "ModifyReservedInstances" + +// ModifyReservedInstancesRequest generates a "aws/request.Request" representing the +// client's request for the ModifyReservedInstances operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyReservedInstances for more information on using the ModifyReservedInstances +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyReservedInstancesRequest method. +// req, resp := client.ModifyReservedInstancesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyReservedInstances +func (c *EC2) ModifyReservedInstancesRequest(input *ModifyReservedInstancesInput) (req *request.Request, output *ModifyReservedInstancesOutput) { + op := &request.Operation{ + Name: opModifyReservedInstances, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyReservedInstancesInput{} + } + + output = &ModifyReservedInstancesOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyReservedInstances API operation for Amazon Elastic Compute Cloud. +// +// Modifies the Availability Zone, instance count, instance type, or network +// platform (EC2-Classic or EC2-VPC) of your Reserved Instances. The Reserved +// Instances to be modified must be identical, except for Availability Zone, +// network platform, and instance type. +// +// For more information, see Modifying Reserved Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-modifying.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyReservedInstances for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyReservedInstances +func (c *EC2) ModifyReservedInstances(input *ModifyReservedInstancesInput) (*ModifyReservedInstancesOutput, error) { + req, out := c.ModifyReservedInstancesRequest(input) + return out, req.Send() +} + +// ModifyReservedInstancesWithContext is the same as ModifyReservedInstances with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyReservedInstances for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyReservedInstancesWithContext(ctx aws.Context, input *ModifyReservedInstancesInput, opts ...request.Option) (*ModifyReservedInstancesOutput, error) { + req, out := c.ModifyReservedInstancesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifySnapshotAttribute = "ModifySnapshotAttribute" + +// ModifySnapshotAttributeRequest generates a "aws/request.Request" representing the +// client's request for the ModifySnapshotAttribute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifySnapshotAttribute for more information on using the ModifySnapshotAttribute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifySnapshotAttributeRequest method. +// req, resp := client.ModifySnapshotAttributeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifySnapshotAttribute +func (c *EC2) ModifySnapshotAttributeRequest(input *ModifySnapshotAttributeInput) (req *request.Request, output *ModifySnapshotAttributeOutput) { + op := &request.Operation{ + Name: opModifySnapshotAttribute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifySnapshotAttributeInput{} + } + + output = &ModifySnapshotAttributeOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// ModifySnapshotAttribute API operation for Amazon Elastic Compute Cloud. +// +// Adds or removes permission settings for the specified snapshot. You may add +// or remove specified AWS account IDs from a snapshot's list of create volume +// permissions, but you cannot do both in a single operation. If you need to +// both add and remove account IDs for a snapshot, you must use multiple operations. +// You can make up to 500 modifications to a snapshot in a single operation. +// +// Encrypted snapshots and snapshots with AWS Marketplace product codes cannot +// be made public. Snapshots encrypted with your default CMK cannot be shared +// with other accounts. +// +// For more information about modifying snapshot permissions, see Sharing Snapshots +// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modifying-snapshot-permissions.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifySnapshotAttribute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifySnapshotAttribute +func (c *EC2) ModifySnapshotAttribute(input *ModifySnapshotAttributeInput) (*ModifySnapshotAttributeOutput, error) { + req, out := c.ModifySnapshotAttributeRequest(input) + return out, req.Send() +} + +// ModifySnapshotAttributeWithContext is the same as ModifySnapshotAttribute with the addition of +// the ability to pass a context and additional request options. +// +// See ModifySnapshotAttribute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifySnapshotAttributeWithContext(ctx aws.Context, input *ModifySnapshotAttributeInput, opts ...request.Option) (*ModifySnapshotAttributeOutput, error) { + req, out := c.ModifySnapshotAttributeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifySpotFleetRequest = "ModifySpotFleetRequest" + +// ModifySpotFleetRequestRequest generates a "aws/request.Request" representing the +// client's request for the ModifySpotFleetRequest operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifySpotFleetRequest for more information on using the ModifySpotFleetRequest +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifySpotFleetRequestRequest method. +// req, resp := client.ModifySpotFleetRequestRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifySpotFleetRequest +func (c *EC2) ModifySpotFleetRequestRequest(input *ModifySpotFleetRequestInput) (req *request.Request, output *ModifySpotFleetRequestOutput) { + op := &request.Operation{ + Name: opModifySpotFleetRequest, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifySpotFleetRequestInput{} + } + + output = &ModifySpotFleetRequestOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifySpotFleetRequest API operation for Amazon Elastic Compute Cloud. +// +// Modifies the specified Spot Fleet request. +// +// You can only modify a Spot Fleet request of type maintain. +// +// While the Spot Fleet request is being modified, it is in the modifying state. +// +// To scale up your Spot Fleet, increase its target capacity. The Spot Fleet +// launches the additional Spot Instances according to the allocation strategy +// for the Spot Fleet request. If the allocation strategy is lowestPrice, the +// Spot Fleet launches instances using the Spot Instance pool with the lowest +// price. If the allocation strategy is diversified, the Spot Fleet distributes +// the instances across the Spot Instance pools. If the allocation strategy +// is capacityOptimized, Spot Fleet launches instances from Spot Instance pools +// with optimal capacity for the number of instances that are launching. +// +// To scale down your Spot Fleet, decrease its target capacity. First, the Spot +// Fleet cancels any open requests that exceed the new target capacity. You +// can request that the Spot Fleet terminate Spot Instances until the size of +// the fleet no longer exceeds the new target capacity. If the allocation strategy +// is lowestPrice, the Spot Fleet terminates the instances with the highest +// price per unit. If the allocation strategy is capacityOptimized, the Spot +// Fleet terminates the instances in the Spot Instance pools that have the least +// available Spot Instance capacity. If the allocation strategy is diversified, +// the Spot Fleet terminates instances across the Spot Instance pools. Alternatively, +// you can request that the Spot Fleet keep the fleet at its current size, but +// not replace any Spot Instances that are interrupted or that you terminate +// manually. +// +// If you are finished with your Spot Fleet for now, but will use it again later, +// you can set the target capacity to 0. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifySpotFleetRequest for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifySpotFleetRequest +func (c *EC2) ModifySpotFleetRequest(input *ModifySpotFleetRequestInput) (*ModifySpotFleetRequestOutput, error) { + req, out := c.ModifySpotFleetRequestRequest(input) + return out, req.Send() +} + +// ModifySpotFleetRequestWithContext is the same as ModifySpotFleetRequest with the addition of +// the ability to pass a context and additional request options. +// +// See ModifySpotFleetRequest for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifySpotFleetRequestWithContext(ctx aws.Context, input *ModifySpotFleetRequestInput, opts ...request.Option) (*ModifySpotFleetRequestOutput, error) { + req, out := c.ModifySpotFleetRequestRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifySubnetAttribute = "ModifySubnetAttribute" + +// ModifySubnetAttributeRequest generates a "aws/request.Request" representing the +// client's request for the ModifySubnetAttribute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifySubnetAttribute for more information on using the ModifySubnetAttribute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifySubnetAttributeRequest method. +// req, resp := client.ModifySubnetAttributeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifySubnetAttribute +func (c *EC2) ModifySubnetAttributeRequest(input *ModifySubnetAttributeInput) (req *request.Request, output *ModifySubnetAttributeOutput) { + op := &request.Operation{ + Name: opModifySubnetAttribute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifySubnetAttributeInput{} + } + + output = &ModifySubnetAttributeOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// ModifySubnetAttribute API operation for Amazon Elastic Compute Cloud. +// +// Modifies a subnet attribute. You can only modify one attribute at a time. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifySubnetAttribute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifySubnetAttribute +func (c *EC2) ModifySubnetAttribute(input *ModifySubnetAttributeInput) (*ModifySubnetAttributeOutput, error) { + req, out := c.ModifySubnetAttributeRequest(input) + return out, req.Send() +} + +// ModifySubnetAttributeWithContext is the same as ModifySubnetAttribute with the addition of +// the ability to pass a context and additional request options. +// +// See ModifySubnetAttribute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifySubnetAttributeWithContext(ctx aws.Context, input *ModifySubnetAttributeInput, opts ...request.Option) (*ModifySubnetAttributeOutput, error) { + req, out := c.ModifySubnetAttributeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyTrafficMirrorFilterNetworkServices = "ModifyTrafficMirrorFilterNetworkServices" + +// ModifyTrafficMirrorFilterNetworkServicesRequest generates a "aws/request.Request" representing the +// client's request for the ModifyTrafficMirrorFilterNetworkServices operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyTrafficMirrorFilterNetworkServices for more information on using the ModifyTrafficMirrorFilterNetworkServices +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyTrafficMirrorFilterNetworkServicesRequest method. +// req, resp := client.ModifyTrafficMirrorFilterNetworkServicesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyTrafficMirrorFilterNetworkServices +func (c *EC2) ModifyTrafficMirrorFilterNetworkServicesRequest(input *ModifyTrafficMirrorFilterNetworkServicesInput) (req *request.Request, output *ModifyTrafficMirrorFilterNetworkServicesOutput) { + op := &request.Operation{ + Name: opModifyTrafficMirrorFilterNetworkServices, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyTrafficMirrorFilterNetworkServicesInput{} + } + + output = &ModifyTrafficMirrorFilterNetworkServicesOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyTrafficMirrorFilterNetworkServices API operation for Amazon Elastic Compute Cloud. +// +// Allows or restricts mirroring network services. +// +// By default, Amazon DNS network services are not eligible for Traffic Mirror. +// Use AddNetworkServices to add network services to a Traffic Mirror filter. +// When a network service is added to the Traffic Mirror filter, all traffic +// related to that network service will be mirrored. When you no longer want +// to mirror network services, use RemoveNetworkServices to remove the network +// services from the Traffic Mirror filter. +// +// For information about filter rule properties, see Network Services (https://docs.aws.amazon.com/vpc/latest/mirroring/traffic-mirroring-considerations.html) +// in the Traffic Mirroring User Guide . +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyTrafficMirrorFilterNetworkServices for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyTrafficMirrorFilterNetworkServices +func (c *EC2) ModifyTrafficMirrorFilterNetworkServices(input *ModifyTrafficMirrorFilterNetworkServicesInput) (*ModifyTrafficMirrorFilterNetworkServicesOutput, error) { + req, out := c.ModifyTrafficMirrorFilterNetworkServicesRequest(input) + return out, req.Send() +} + +// ModifyTrafficMirrorFilterNetworkServicesWithContext is the same as ModifyTrafficMirrorFilterNetworkServices with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyTrafficMirrorFilterNetworkServices for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyTrafficMirrorFilterNetworkServicesWithContext(ctx aws.Context, input *ModifyTrafficMirrorFilterNetworkServicesInput, opts ...request.Option) (*ModifyTrafficMirrorFilterNetworkServicesOutput, error) { + req, out := c.ModifyTrafficMirrorFilterNetworkServicesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyTrafficMirrorFilterRule = "ModifyTrafficMirrorFilterRule" + +// ModifyTrafficMirrorFilterRuleRequest generates a "aws/request.Request" representing the +// client's request for the ModifyTrafficMirrorFilterRule operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyTrafficMirrorFilterRule for more information on using the ModifyTrafficMirrorFilterRule +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyTrafficMirrorFilterRuleRequest method. +// req, resp := client.ModifyTrafficMirrorFilterRuleRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyTrafficMirrorFilterRule +func (c *EC2) ModifyTrafficMirrorFilterRuleRequest(input *ModifyTrafficMirrorFilterRuleInput) (req *request.Request, output *ModifyTrafficMirrorFilterRuleOutput) { + op := &request.Operation{ + Name: opModifyTrafficMirrorFilterRule, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyTrafficMirrorFilterRuleInput{} + } + + output = &ModifyTrafficMirrorFilterRuleOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyTrafficMirrorFilterRule API operation for Amazon Elastic Compute Cloud. +// +// Modifies the specified Traffic Mirror rule. +// +// DestinationCidrBlock and SourceCidrBlock must both be an IPv4 range or an +// IPv6 range. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyTrafficMirrorFilterRule for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyTrafficMirrorFilterRule +func (c *EC2) ModifyTrafficMirrorFilterRule(input *ModifyTrafficMirrorFilterRuleInput) (*ModifyTrafficMirrorFilterRuleOutput, error) { + req, out := c.ModifyTrafficMirrorFilterRuleRequest(input) + return out, req.Send() +} + +// ModifyTrafficMirrorFilterRuleWithContext is the same as ModifyTrafficMirrorFilterRule with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyTrafficMirrorFilterRule for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyTrafficMirrorFilterRuleWithContext(ctx aws.Context, input *ModifyTrafficMirrorFilterRuleInput, opts ...request.Option) (*ModifyTrafficMirrorFilterRuleOutput, error) { + req, out := c.ModifyTrafficMirrorFilterRuleRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyTrafficMirrorSession = "ModifyTrafficMirrorSession" + +// ModifyTrafficMirrorSessionRequest generates a "aws/request.Request" representing the +// client's request for the ModifyTrafficMirrorSession operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyTrafficMirrorSession for more information on using the ModifyTrafficMirrorSession +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyTrafficMirrorSessionRequest method. +// req, resp := client.ModifyTrafficMirrorSessionRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyTrafficMirrorSession +func (c *EC2) ModifyTrafficMirrorSessionRequest(input *ModifyTrafficMirrorSessionInput) (req *request.Request, output *ModifyTrafficMirrorSessionOutput) { + op := &request.Operation{ + Name: opModifyTrafficMirrorSession, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyTrafficMirrorSessionInput{} + } + + output = &ModifyTrafficMirrorSessionOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyTrafficMirrorSession API operation for Amazon Elastic Compute Cloud. +// +// Modifies a Traffic Mirror session. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyTrafficMirrorSession for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyTrafficMirrorSession +func (c *EC2) ModifyTrafficMirrorSession(input *ModifyTrafficMirrorSessionInput) (*ModifyTrafficMirrorSessionOutput, error) { + req, out := c.ModifyTrafficMirrorSessionRequest(input) + return out, req.Send() +} + +// ModifyTrafficMirrorSessionWithContext is the same as ModifyTrafficMirrorSession with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyTrafficMirrorSession for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyTrafficMirrorSessionWithContext(ctx aws.Context, input *ModifyTrafficMirrorSessionInput, opts ...request.Option) (*ModifyTrafficMirrorSessionOutput, error) { + req, out := c.ModifyTrafficMirrorSessionRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyTransitGatewayVpcAttachment = "ModifyTransitGatewayVpcAttachment" + +// ModifyTransitGatewayVpcAttachmentRequest generates a "aws/request.Request" representing the +// client's request for the ModifyTransitGatewayVpcAttachment operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyTransitGatewayVpcAttachment for more information on using the ModifyTransitGatewayVpcAttachment +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyTransitGatewayVpcAttachmentRequest method. +// req, resp := client.ModifyTransitGatewayVpcAttachmentRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyTransitGatewayVpcAttachment +func (c *EC2) ModifyTransitGatewayVpcAttachmentRequest(input *ModifyTransitGatewayVpcAttachmentInput) (req *request.Request, output *ModifyTransitGatewayVpcAttachmentOutput) { + op := &request.Operation{ + Name: opModifyTransitGatewayVpcAttachment, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyTransitGatewayVpcAttachmentInput{} + } + + output = &ModifyTransitGatewayVpcAttachmentOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyTransitGatewayVpcAttachment API operation for Amazon Elastic Compute Cloud. +// +// Modifies the specified VPC attachment. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyTransitGatewayVpcAttachment for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyTransitGatewayVpcAttachment +func (c *EC2) ModifyTransitGatewayVpcAttachment(input *ModifyTransitGatewayVpcAttachmentInput) (*ModifyTransitGatewayVpcAttachmentOutput, error) { + req, out := c.ModifyTransitGatewayVpcAttachmentRequest(input) + return out, req.Send() +} + +// ModifyTransitGatewayVpcAttachmentWithContext is the same as ModifyTransitGatewayVpcAttachment with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyTransitGatewayVpcAttachment for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyTransitGatewayVpcAttachmentWithContext(ctx aws.Context, input *ModifyTransitGatewayVpcAttachmentInput, opts ...request.Option) (*ModifyTransitGatewayVpcAttachmentOutput, error) { + req, out := c.ModifyTransitGatewayVpcAttachmentRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyVolume = "ModifyVolume" + +// ModifyVolumeRequest generates a "aws/request.Request" representing the +// client's request for the ModifyVolume operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyVolume for more information on using the ModifyVolume +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyVolumeRequest method. +// req, resp := client.ModifyVolumeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVolume +func (c *EC2) ModifyVolumeRequest(input *ModifyVolumeInput) (req *request.Request, output *ModifyVolumeOutput) { + op := &request.Operation{ + Name: opModifyVolume, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyVolumeInput{} + } + + output = &ModifyVolumeOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyVolume API operation for Amazon Elastic Compute Cloud. +// +// You can modify several parameters of an existing EBS volume, including volume +// size, volume type, and IOPS capacity. If your EBS volume is attached to a +// current-generation EC2 instance type, you may be able to apply these changes +// without stopping the instance or detaching the volume from it. For more information +// about modifying an EBS volume running Linux, see Modifying the Size, IOPS, +// or Type of an EBS Volume on Linux (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html). +// For more information about modifying an EBS volume running Windows, see Modifying +// the Size, IOPS, or Type of an EBS Volume on Windows (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-expand-volume.html). +// +// When you complete a resize operation on your volume, you need to extend the +// volume's file-system size to take advantage of the new storage capacity. +// For information about extending a Linux file system, see Extending a Linux +// File System (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html#recognize-expanded-volume-linux). +// For information about extending a Windows file system, see Extending a Windows +// File System (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-expand-volume.html#recognize-expanded-volume-windows). +// +// You can use CloudWatch Events to check the status of a modification to an +// EBS volume. For information about CloudWatch Events, see the Amazon CloudWatch +// Events User Guide (https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/). +// You can also track the status of a modification using DescribeVolumesModifications. +// For information about tracking status changes using either method, see Monitoring +// Volume Modifications (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html#monitoring_mods). +// +// With previous-generation instance types, resizing an EBS volume may require +// detaching and reattaching the volume or stopping and restarting the instance. +// For more information, see Modifying the Size, IOPS, or Type of an EBS Volume +// on Linux (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html) +// and Modifying the Size, IOPS, or Type of an EBS Volume on Windows (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-expand-volume.html). +// +// If you reach the maximum volume modification rate per volume limit, you will +// need to wait at least six hours before applying further modifications to +// the affected EBS volume. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyVolume for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVolume +func (c *EC2) ModifyVolume(input *ModifyVolumeInput) (*ModifyVolumeOutput, error) { + req, out := c.ModifyVolumeRequest(input) + return out, req.Send() +} + +// ModifyVolumeWithContext is the same as ModifyVolume with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyVolume for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyVolumeWithContext(ctx aws.Context, input *ModifyVolumeInput, opts ...request.Option) (*ModifyVolumeOutput, error) { + req, out := c.ModifyVolumeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyVolumeAttribute = "ModifyVolumeAttribute" + +// ModifyVolumeAttributeRequest generates a "aws/request.Request" representing the +// client's request for the ModifyVolumeAttribute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyVolumeAttribute for more information on using the ModifyVolumeAttribute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyVolumeAttributeRequest method. +// req, resp := client.ModifyVolumeAttributeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVolumeAttribute +func (c *EC2) ModifyVolumeAttributeRequest(input *ModifyVolumeAttributeInput) (req *request.Request, output *ModifyVolumeAttributeOutput) { + op := &request.Operation{ + Name: opModifyVolumeAttribute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyVolumeAttributeInput{} + } + + output = &ModifyVolumeAttributeOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// ModifyVolumeAttribute API operation for Amazon Elastic Compute Cloud. +// +// Modifies a volume attribute. +// +// By default, all I/O operations for the volume are suspended when the data +// on the volume is determined to be potentially inconsistent, to prevent undetectable, +// latent data corruption. The I/O access to the volume can be resumed by first +// enabling I/O access and then checking the data consistency on your volume. +// +// You can change the default behavior to resume I/O operations. We recommend +// that you change this only for boot volumes or for volumes that are stateless +// or disposable. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyVolumeAttribute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVolumeAttribute +func (c *EC2) ModifyVolumeAttribute(input *ModifyVolumeAttributeInput) (*ModifyVolumeAttributeOutput, error) { + req, out := c.ModifyVolumeAttributeRequest(input) + return out, req.Send() +} + +// ModifyVolumeAttributeWithContext is the same as ModifyVolumeAttribute with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyVolumeAttribute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyVolumeAttributeWithContext(ctx aws.Context, input *ModifyVolumeAttributeInput, opts ...request.Option) (*ModifyVolumeAttributeOutput, error) { + req, out := c.ModifyVolumeAttributeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyVpcAttribute = "ModifyVpcAttribute" + +// ModifyVpcAttributeRequest generates a "aws/request.Request" representing the +// client's request for the ModifyVpcAttribute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyVpcAttribute for more information on using the ModifyVpcAttribute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyVpcAttributeRequest method. +// req, resp := client.ModifyVpcAttributeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcAttribute +func (c *EC2) ModifyVpcAttributeRequest(input *ModifyVpcAttributeInput) (req *request.Request, output *ModifyVpcAttributeOutput) { + op := &request.Operation{ + Name: opModifyVpcAttribute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyVpcAttributeInput{} + } + + output = &ModifyVpcAttributeOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// ModifyVpcAttribute API operation for Amazon Elastic Compute Cloud. +// +// Modifies the specified attribute of the specified VPC. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyVpcAttribute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcAttribute +func (c *EC2) ModifyVpcAttribute(input *ModifyVpcAttributeInput) (*ModifyVpcAttributeOutput, error) { + req, out := c.ModifyVpcAttributeRequest(input) + return out, req.Send() +} + +// ModifyVpcAttributeWithContext is the same as ModifyVpcAttribute with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyVpcAttribute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyVpcAttributeWithContext(ctx aws.Context, input *ModifyVpcAttributeInput, opts ...request.Option) (*ModifyVpcAttributeOutput, error) { + req, out := c.ModifyVpcAttributeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyVpcEndpoint = "ModifyVpcEndpoint" + +// ModifyVpcEndpointRequest generates a "aws/request.Request" representing the +// client's request for the ModifyVpcEndpoint operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyVpcEndpoint for more information on using the ModifyVpcEndpoint +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyVpcEndpointRequest method. +// req, resp := client.ModifyVpcEndpointRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcEndpoint +func (c *EC2) ModifyVpcEndpointRequest(input *ModifyVpcEndpointInput) (req *request.Request, output *ModifyVpcEndpointOutput) { + op := &request.Operation{ + Name: opModifyVpcEndpoint, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyVpcEndpointInput{} + } + + output = &ModifyVpcEndpointOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyVpcEndpoint API operation for Amazon Elastic Compute Cloud. +// +// Modifies attributes of a specified VPC endpoint. The attributes that you +// can modify depend on the type of VPC endpoint (interface or gateway). For +// more information, see VPC Endpoints (https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyVpcEndpoint for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcEndpoint +func (c *EC2) ModifyVpcEndpoint(input *ModifyVpcEndpointInput) (*ModifyVpcEndpointOutput, error) { + req, out := c.ModifyVpcEndpointRequest(input) + return out, req.Send() +} + +// ModifyVpcEndpointWithContext is the same as ModifyVpcEndpoint with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyVpcEndpoint for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyVpcEndpointWithContext(ctx aws.Context, input *ModifyVpcEndpointInput, opts ...request.Option) (*ModifyVpcEndpointOutput, error) { + req, out := c.ModifyVpcEndpointRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyVpcEndpointConnectionNotification = "ModifyVpcEndpointConnectionNotification" + +// ModifyVpcEndpointConnectionNotificationRequest generates a "aws/request.Request" representing the +// client's request for the ModifyVpcEndpointConnectionNotification operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyVpcEndpointConnectionNotification for more information on using the ModifyVpcEndpointConnectionNotification +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyVpcEndpointConnectionNotificationRequest method. +// req, resp := client.ModifyVpcEndpointConnectionNotificationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcEndpointConnectionNotification +func (c *EC2) ModifyVpcEndpointConnectionNotificationRequest(input *ModifyVpcEndpointConnectionNotificationInput) (req *request.Request, output *ModifyVpcEndpointConnectionNotificationOutput) { + op := &request.Operation{ + Name: opModifyVpcEndpointConnectionNotification, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyVpcEndpointConnectionNotificationInput{} + } + + output = &ModifyVpcEndpointConnectionNotificationOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyVpcEndpointConnectionNotification API operation for Amazon Elastic Compute Cloud. +// +// Modifies a connection notification for VPC endpoint or VPC endpoint service. +// You can change the SNS topic for the notification, or the events for which +// to be notified. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyVpcEndpointConnectionNotification for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcEndpointConnectionNotification +func (c *EC2) ModifyVpcEndpointConnectionNotification(input *ModifyVpcEndpointConnectionNotificationInput) (*ModifyVpcEndpointConnectionNotificationOutput, error) { + req, out := c.ModifyVpcEndpointConnectionNotificationRequest(input) + return out, req.Send() +} + +// ModifyVpcEndpointConnectionNotificationWithContext is the same as ModifyVpcEndpointConnectionNotification with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyVpcEndpointConnectionNotification for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyVpcEndpointConnectionNotificationWithContext(ctx aws.Context, input *ModifyVpcEndpointConnectionNotificationInput, opts ...request.Option) (*ModifyVpcEndpointConnectionNotificationOutput, error) { + req, out := c.ModifyVpcEndpointConnectionNotificationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyVpcEndpointServiceConfiguration = "ModifyVpcEndpointServiceConfiguration" + +// ModifyVpcEndpointServiceConfigurationRequest generates a "aws/request.Request" representing the +// client's request for the ModifyVpcEndpointServiceConfiguration operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyVpcEndpointServiceConfiguration for more information on using the ModifyVpcEndpointServiceConfiguration +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyVpcEndpointServiceConfigurationRequest method. +// req, resp := client.ModifyVpcEndpointServiceConfigurationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcEndpointServiceConfiguration +func (c *EC2) ModifyVpcEndpointServiceConfigurationRequest(input *ModifyVpcEndpointServiceConfigurationInput) (req *request.Request, output *ModifyVpcEndpointServiceConfigurationOutput) { + op := &request.Operation{ + Name: opModifyVpcEndpointServiceConfiguration, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyVpcEndpointServiceConfigurationInput{} + } + + output = &ModifyVpcEndpointServiceConfigurationOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyVpcEndpointServiceConfiguration API operation for Amazon Elastic Compute Cloud. +// +// Modifies the attributes of your VPC endpoint service configuration. You can +// change the Network Load Balancers for your service, and you can specify whether +// acceptance is required for requests to connect to your endpoint service through +// an interface VPC endpoint. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyVpcEndpointServiceConfiguration for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcEndpointServiceConfiguration +func (c *EC2) ModifyVpcEndpointServiceConfiguration(input *ModifyVpcEndpointServiceConfigurationInput) (*ModifyVpcEndpointServiceConfigurationOutput, error) { + req, out := c.ModifyVpcEndpointServiceConfigurationRequest(input) + return out, req.Send() +} + +// ModifyVpcEndpointServiceConfigurationWithContext is the same as ModifyVpcEndpointServiceConfiguration with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyVpcEndpointServiceConfiguration for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyVpcEndpointServiceConfigurationWithContext(ctx aws.Context, input *ModifyVpcEndpointServiceConfigurationInput, opts ...request.Option) (*ModifyVpcEndpointServiceConfigurationOutput, error) { + req, out := c.ModifyVpcEndpointServiceConfigurationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyVpcEndpointServicePermissions = "ModifyVpcEndpointServicePermissions" + +// ModifyVpcEndpointServicePermissionsRequest generates a "aws/request.Request" representing the +// client's request for the ModifyVpcEndpointServicePermissions operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyVpcEndpointServicePermissions for more information on using the ModifyVpcEndpointServicePermissions +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyVpcEndpointServicePermissionsRequest method. +// req, resp := client.ModifyVpcEndpointServicePermissionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcEndpointServicePermissions +func (c *EC2) ModifyVpcEndpointServicePermissionsRequest(input *ModifyVpcEndpointServicePermissionsInput) (req *request.Request, output *ModifyVpcEndpointServicePermissionsOutput) { + op := &request.Operation{ + Name: opModifyVpcEndpointServicePermissions, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyVpcEndpointServicePermissionsInput{} + } + + output = &ModifyVpcEndpointServicePermissionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyVpcEndpointServicePermissions API operation for Amazon Elastic Compute Cloud. +// +// Modifies the permissions for your VPC endpoint service (https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-service.html). +// You can add or remove permissions for service consumers (IAM users, IAM roles, +// and AWS accounts) to connect to your endpoint service. +// +// If you grant permissions to all principals, the service is public. Any users +// who know the name of a public service can send a request to attach an endpoint. +// If the service does not require manual approval, attachments are automatically +// approved. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyVpcEndpointServicePermissions for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcEndpointServicePermissions +func (c *EC2) ModifyVpcEndpointServicePermissions(input *ModifyVpcEndpointServicePermissionsInput) (*ModifyVpcEndpointServicePermissionsOutput, error) { + req, out := c.ModifyVpcEndpointServicePermissionsRequest(input) + return out, req.Send() +} + +// ModifyVpcEndpointServicePermissionsWithContext is the same as ModifyVpcEndpointServicePermissions with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyVpcEndpointServicePermissions for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyVpcEndpointServicePermissionsWithContext(ctx aws.Context, input *ModifyVpcEndpointServicePermissionsInput, opts ...request.Option) (*ModifyVpcEndpointServicePermissionsOutput, error) { + req, out := c.ModifyVpcEndpointServicePermissionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyVpcPeeringConnectionOptions = "ModifyVpcPeeringConnectionOptions" + +// ModifyVpcPeeringConnectionOptionsRequest generates a "aws/request.Request" representing the +// client's request for the ModifyVpcPeeringConnectionOptions operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyVpcPeeringConnectionOptions for more information on using the ModifyVpcPeeringConnectionOptions +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyVpcPeeringConnectionOptionsRequest method. +// req, resp := client.ModifyVpcPeeringConnectionOptionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcPeeringConnectionOptions +func (c *EC2) ModifyVpcPeeringConnectionOptionsRequest(input *ModifyVpcPeeringConnectionOptionsInput) (req *request.Request, output *ModifyVpcPeeringConnectionOptionsOutput) { + op := &request.Operation{ + Name: opModifyVpcPeeringConnectionOptions, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyVpcPeeringConnectionOptionsInput{} + } + + output = &ModifyVpcPeeringConnectionOptionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyVpcPeeringConnectionOptions API operation for Amazon Elastic Compute Cloud. +// +// Modifies the VPC peering connection options on one side of a VPC peering +// connection. You can do the following: +// +// * Enable/disable communication over the peering connection between an +// EC2-Classic instance that's linked to your VPC (using ClassicLink) and +// instances in the peer VPC. +// +// * Enable/disable communication over the peering connection between instances +// in your VPC and an EC2-Classic instance that's linked to the peer VPC. +// +// * Enable/disable the ability to resolve public DNS hostnames to private +// IP addresses when queried from instances in the peer VPC. +// +// If the peered VPCs are in the same AWS account, you can enable DNS resolution +// for queries from the local VPC. This ensures that queries from the local +// VPC resolve to private IP addresses in the peer VPC. This option is not available +// if the peered VPCs are in different AWS accounts or different Regions. For +// peered VPCs in different AWS accounts, each AWS account owner must initiate +// a separate request to modify the peering connection options. For inter-region +// peering connections, you must use the Region for the requester VPC to modify +// the requester VPC peering options and the Region for the accepter VPC to +// modify the accepter VPC peering options. To verify which VPCs are the accepter +// and the requester for a VPC peering connection, use the DescribeVpcPeeringConnections +// command. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyVpcPeeringConnectionOptions for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcPeeringConnectionOptions +func (c *EC2) ModifyVpcPeeringConnectionOptions(input *ModifyVpcPeeringConnectionOptionsInput) (*ModifyVpcPeeringConnectionOptionsOutput, error) { + req, out := c.ModifyVpcPeeringConnectionOptionsRequest(input) + return out, req.Send() +} + +// ModifyVpcPeeringConnectionOptionsWithContext is the same as ModifyVpcPeeringConnectionOptions with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyVpcPeeringConnectionOptions for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyVpcPeeringConnectionOptionsWithContext(ctx aws.Context, input *ModifyVpcPeeringConnectionOptionsInput, opts ...request.Option) (*ModifyVpcPeeringConnectionOptionsOutput, error) { + req, out := c.ModifyVpcPeeringConnectionOptionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyVpcTenancy = "ModifyVpcTenancy" + +// ModifyVpcTenancyRequest generates a "aws/request.Request" representing the +// client's request for the ModifyVpcTenancy operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyVpcTenancy for more information on using the ModifyVpcTenancy +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyVpcTenancyRequest method. +// req, resp := client.ModifyVpcTenancyRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcTenancy +func (c *EC2) ModifyVpcTenancyRequest(input *ModifyVpcTenancyInput) (req *request.Request, output *ModifyVpcTenancyOutput) { + op := &request.Operation{ + Name: opModifyVpcTenancy, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyVpcTenancyInput{} + } + + output = &ModifyVpcTenancyOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyVpcTenancy API operation for Amazon Elastic Compute Cloud. +// +// Modifies the instance tenancy attribute of the specified VPC. You can change +// the instance tenancy attribute of a VPC to default only. You cannot change +// the instance tenancy attribute to dedicated. +// +// After you modify the tenancy of the VPC, any new instances that you launch +// into the VPC have a tenancy of default, unless you specify otherwise during +// launch. The tenancy of any existing instances in the VPC is not affected. +// +// For more information, see Dedicated Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyVpcTenancy for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpcTenancy +func (c *EC2) ModifyVpcTenancy(input *ModifyVpcTenancyInput) (*ModifyVpcTenancyOutput, error) { + req, out := c.ModifyVpcTenancyRequest(input) + return out, req.Send() +} + +// ModifyVpcTenancyWithContext is the same as ModifyVpcTenancy with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyVpcTenancy for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyVpcTenancyWithContext(ctx aws.Context, input *ModifyVpcTenancyInput, opts ...request.Option) (*ModifyVpcTenancyOutput, error) { + req, out := c.ModifyVpcTenancyRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyVpnConnection = "ModifyVpnConnection" + +// ModifyVpnConnectionRequest generates a "aws/request.Request" representing the +// client's request for the ModifyVpnConnection operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyVpnConnection for more information on using the ModifyVpnConnection +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyVpnConnectionRequest method. +// req, resp := client.ModifyVpnConnectionRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpnConnection +func (c *EC2) ModifyVpnConnectionRequest(input *ModifyVpnConnectionInput) (req *request.Request, output *ModifyVpnConnectionOutput) { + op := &request.Operation{ + Name: opModifyVpnConnection, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyVpnConnectionInput{} + } + + output = &ModifyVpnConnectionOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyVpnConnection API operation for Amazon Elastic Compute Cloud. +// +// Modifies the target gateway of an AWS Site-to-Site VPN connection. The following +// migration options are available: +// +// * An existing virtual private gateway to a new virtual private gateway +// +// * An existing virtual private gateway to a transit gateway +// +// * An existing transit gateway to a new transit gateway +// +// * An existing transit gateway to a virtual private gateway +// +// Before you perform the migration to the new gateway, you must configure the +// new gateway. Use CreateVpnGateway to create a virtual private gateway, or +// CreateTransitGateway to create a transit gateway. +// +// This step is required when you migrate from a virtual private gateway with +// static routes to a transit gateway. +// +// You must delete the static routes before you migrate to the new gateway. +// +// Keep a copy of the static route before you delete it. You will need to add +// back these routes to the transit gateway after the VPN connection migration +// is complete. +// +// After you migrate to the new gateway, you might need to modify your VPC route +// table. Use CreateRoute and DeleteRoute to make the changes described in VPN +// Gateway Target Modification Required VPC Route Table Updates (https://docs.aws.amazon.com/vpn/latest/s2svpn/modify-vpn-target.html#step-update-routing) +// in the AWS Site-to-Site VPN User Guide. +// +// When the new gateway is a transit gateway, modify the transit gateway route +// table to allow traffic between the VPC and the AWS Site-to-Site VPN connection. +// Use CreateTransitGatewayRoute to add the routes. +// +// If you deleted VPN static routes, you must add the static routes to the transit +// gateway route table. +// +// After you perform this operation, the AWS VPN endpoint's IP addresses on +// the AWS side and the tunnel options remain intact. Your s2slong; connection +// will be temporarily unavailable for approximately 10 minutes while we provision +// the new endpoints +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyVpnConnection for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpnConnection +func (c *EC2) ModifyVpnConnection(input *ModifyVpnConnectionInput) (*ModifyVpnConnectionOutput, error) { + req, out := c.ModifyVpnConnectionRequest(input) + return out, req.Send() +} + +// ModifyVpnConnectionWithContext is the same as ModifyVpnConnection with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyVpnConnection for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyVpnConnectionWithContext(ctx aws.Context, input *ModifyVpnConnectionInput, opts ...request.Option) (*ModifyVpnConnectionOutput, error) { + req, out := c.ModifyVpnConnectionRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyVpnTunnelCertificate = "ModifyVpnTunnelCertificate" + +// ModifyVpnTunnelCertificateRequest generates a "aws/request.Request" representing the +// client's request for the ModifyVpnTunnelCertificate operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyVpnTunnelCertificate for more information on using the ModifyVpnTunnelCertificate +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyVpnTunnelCertificateRequest method. +// req, resp := client.ModifyVpnTunnelCertificateRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpnTunnelCertificate +func (c *EC2) ModifyVpnTunnelCertificateRequest(input *ModifyVpnTunnelCertificateInput) (req *request.Request, output *ModifyVpnTunnelCertificateOutput) { + op := &request.Operation{ + Name: opModifyVpnTunnelCertificate, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyVpnTunnelCertificateInput{} + } + + output = &ModifyVpnTunnelCertificateOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyVpnTunnelCertificate API operation for Amazon Elastic Compute Cloud. +// +// Modifies the VPN tunnel endpoint certificate. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyVpnTunnelCertificate for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpnTunnelCertificate +func (c *EC2) ModifyVpnTunnelCertificate(input *ModifyVpnTunnelCertificateInput) (*ModifyVpnTunnelCertificateOutput, error) { + req, out := c.ModifyVpnTunnelCertificateRequest(input) + return out, req.Send() +} + +// ModifyVpnTunnelCertificateWithContext is the same as ModifyVpnTunnelCertificate with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyVpnTunnelCertificate for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyVpnTunnelCertificateWithContext(ctx aws.Context, input *ModifyVpnTunnelCertificateInput, opts ...request.Option) (*ModifyVpnTunnelCertificateOutput, error) { + req, out := c.ModifyVpnTunnelCertificateRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opModifyVpnTunnelOptions = "ModifyVpnTunnelOptions" + +// ModifyVpnTunnelOptionsRequest generates a "aws/request.Request" representing the +// client's request for the ModifyVpnTunnelOptions operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyVpnTunnelOptions for more information on using the ModifyVpnTunnelOptions +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyVpnTunnelOptionsRequest method. +// req, resp := client.ModifyVpnTunnelOptionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpnTunnelOptions +func (c *EC2) ModifyVpnTunnelOptionsRequest(input *ModifyVpnTunnelOptionsInput) (req *request.Request, output *ModifyVpnTunnelOptionsOutput) { + op := &request.Operation{ + Name: opModifyVpnTunnelOptions, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyVpnTunnelOptionsInput{} + } + + output = &ModifyVpnTunnelOptionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyVpnTunnelOptions API operation for Amazon Elastic Compute Cloud. +// +// Modifies the options for a VPN tunnel in an AWS Site-to-Site VPN connection. +// You can modify multiple options for a tunnel in a single request, but you +// can only modify one tunnel at a time. For more information, see Site-to-Site +// VPN Tunnel Options for Your Site-to-Site VPN Connection (https://docs.aws.amazon.com/vpn/latest/s2svpn/VPNTunnels.html) +// in the AWS Site-to-Site VPN User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyVpnTunnelOptions for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyVpnTunnelOptions +func (c *EC2) ModifyVpnTunnelOptions(input *ModifyVpnTunnelOptionsInput) (*ModifyVpnTunnelOptionsOutput, error) { + req, out := c.ModifyVpnTunnelOptionsRequest(input) + return out, req.Send() +} + +// ModifyVpnTunnelOptionsWithContext is the same as ModifyVpnTunnelOptions with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyVpnTunnelOptions for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyVpnTunnelOptionsWithContext(ctx aws.Context, input *ModifyVpnTunnelOptionsInput, opts ...request.Option) (*ModifyVpnTunnelOptionsOutput, error) { + req, out := c.ModifyVpnTunnelOptionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opMonitorInstances = "MonitorInstances" + +// MonitorInstancesRequest generates a "aws/request.Request" representing the +// client's request for the MonitorInstances operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See MonitorInstances for more information on using the MonitorInstances +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the MonitorInstancesRequest method. +// req, resp := client.MonitorInstancesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/MonitorInstances +func (c *EC2) MonitorInstancesRequest(input *MonitorInstancesInput) (req *request.Request, output *MonitorInstancesOutput) { + op := &request.Operation{ + Name: opMonitorInstances, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &MonitorInstancesInput{} + } + + output = &MonitorInstancesOutput{} + req = c.newRequest(op, input, output) + return +} + +// MonitorInstances API operation for Amazon Elastic Compute Cloud. +// +// Enables detailed monitoring for a running instance. Otherwise, basic monitoring +// is enabled. For more information, see Monitoring Your Instances and Volumes +// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cloudwatch.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// To disable detailed monitoring, see . +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation MonitorInstances for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/MonitorInstances +func (c *EC2) MonitorInstances(input *MonitorInstancesInput) (*MonitorInstancesOutput, error) { + req, out := c.MonitorInstancesRequest(input) + return out, req.Send() +} + +// MonitorInstancesWithContext is the same as MonitorInstances with the addition of +// the ability to pass a context and additional request options. +// +// See MonitorInstances for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) MonitorInstancesWithContext(ctx aws.Context, input *MonitorInstancesInput, opts ...request.Option) (*MonitorInstancesOutput, error) { + req, out := c.MonitorInstancesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opMoveAddressToVpc = "MoveAddressToVpc" + +// MoveAddressToVpcRequest generates a "aws/request.Request" representing the +// client's request for the MoveAddressToVpc operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See MoveAddressToVpc for more information on using the MoveAddressToVpc +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the MoveAddressToVpcRequest method. +// req, resp := client.MoveAddressToVpcRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/MoveAddressToVpc +func (c *EC2) MoveAddressToVpcRequest(input *MoveAddressToVpcInput) (req *request.Request, output *MoveAddressToVpcOutput) { + op := &request.Operation{ + Name: opMoveAddressToVpc, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &MoveAddressToVpcInput{} + } + + output = &MoveAddressToVpcOutput{} + req = c.newRequest(op, input, output) + return +} + +// MoveAddressToVpc API operation for Amazon Elastic Compute Cloud. +// +// Moves an Elastic IP address from the EC2-Classic platform to the EC2-VPC +// platform. The Elastic IP address must be allocated to your account for more +// than 24 hours, and it must not be associated with an instance. After the +// Elastic IP address is moved, it is no longer available for use in the EC2-Classic +// platform, unless you move it back using the RestoreAddressToClassic request. +// You cannot move an Elastic IP address that was originally allocated for use +// in the EC2-VPC platform to the EC2-Classic platform. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation MoveAddressToVpc for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/MoveAddressToVpc +func (c *EC2) MoveAddressToVpc(input *MoveAddressToVpcInput) (*MoveAddressToVpcOutput, error) { + req, out := c.MoveAddressToVpcRequest(input) + return out, req.Send() +} + +// MoveAddressToVpcWithContext is the same as MoveAddressToVpc with the addition of +// the ability to pass a context and additional request options. +// +// See MoveAddressToVpc for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) MoveAddressToVpcWithContext(ctx aws.Context, input *MoveAddressToVpcInput, opts ...request.Option) (*MoveAddressToVpcOutput, error) { + req, out := c.MoveAddressToVpcRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opProvisionByoipCidr = "ProvisionByoipCidr" + +// ProvisionByoipCidrRequest generates a "aws/request.Request" representing the +// client's request for the ProvisionByoipCidr operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ProvisionByoipCidr for more information on using the ProvisionByoipCidr +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ProvisionByoipCidrRequest method. +// req, resp := client.ProvisionByoipCidrRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ProvisionByoipCidr +func (c *EC2) ProvisionByoipCidrRequest(input *ProvisionByoipCidrInput) (req *request.Request, output *ProvisionByoipCidrOutput) { + op := &request.Operation{ + Name: opProvisionByoipCidr, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ProvisionByoipCidrInput{} + } + + output = &ProvisionByoipCidrOutput{} + req = c.newRequest(op, input, output) + return +} + +// ProvisionByoipCidr API operation for Amazon Elastic Compute Cloud. +// +// Provisions an address range for use with your AWS resources through bring +// your own IP addresses (BYOIP) and creates a corresponding address pool. After +// the address range is provisioned, it is ready to be advertised using AdvertiseByoipCidr. +// +// AWS verifies that you own the address range and are authorized to advertise +// it. You must ensure that the address range is registered to you and that +// you created an RPKI ROA to authorize Amazon ASNs 16509 and 14618 to advertise +// the address range. For more information, see Bring Your Own IP Addresses +// (BYOIP) (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Provisioning an address range is an asynchronous operation, so the call returns +// immediately, but the address range is not ready to use until its status changes +// from pending-provision to provisioned. To monitor the status of an address +// range, use DescribeByoipCidrs. To allocate an Elastic IP address from your +// address pool, use AllocateAddress with either the specific address from the +// address pool or the ID of the address pool. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ProvisionByoipCidr for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ProvisionByoipCidr +func (c *EC2) ProvisionByoipCidr(input *ProvisionByoipCidrInput) (*ProvisionByoipCidrOutput, error) { + req, out := c.ProvisionByoipCidrRequest(input) + return out, req.Send() +} + +// ProvisionByoipCidrWithContext is the same as ProvisionByoipCidr with the addition of +// the ability to pass a context and additional request options. +// +// See ProvisionByoipCidr for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ProvisionByoipCidrWithContext(ctx aws.Context, input *ProvisionByoipCidrInput, opts ...request.Option) (*ProvisionByoipCidrOutput, error) { + req, out := c.ProvisionByoipCidrRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPurchaseHostReservation = "PurchaseHostReservation" + +// PurchaseHostReservationRequest generates a "aws/request.Request" representing the +// client's request for the PurchaseHostReservation operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PurchaseHostReservation for more information on using the PurchaseHostReservation +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PurchaseHostReservationRequest method. +// req, resp := client.PurchaseHostReservationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PurchaseHostReservation +func (c *EC2) PurchaseHostReservationRequest(input *PurchaseHostReservationInput) (req *request.Request, output *PurchaseHostReservationOutput) { + op := &request.Operation{ + Name: opPurchaseHostReservation, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &PurchaseHostReservationInput{} + } + + output = &PurchaseHostReservationOutput{} + req = c.newRequest(op, input, output) + return +} + +// PurchaseHostReservation API operation for Amazon Elastic Compute Cloud. +// +// Purchase a reservation with configurations that match those of your Dedicated +// Host. You must have active Dedicated Hosts in your account before you purchase +// a reservation. This action results in the specified reservation being purchased +// and charged to your account. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation PurchaseHostReservation for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PurchaseHostReservation +func (c *EC2) PurchaseHostReservation(input *PurchaseHostReservationInput) (*PurchaseHostReservationOutput, error) { + req, out := c.PurchaseHostReservationRequest(input) + return out, req.Send() +} + +// PurchaseHostReservationWithContext is the same as PurchaseHostReservation with the addition of +// the ability to pass a context and additional request options. +// +// See PurchaseHostReservation for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) PurchaseHostReservationWithContext(ctx aws.Context, input *PurchaseHostReservationInput, opts ...request.Option) (*PurchaseHostReservationOutput, error) { + req, out := c.PurchaseHostReservationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPurchaseReservedInstancesOffering = "PurchaseReservedInstancesOffering" + +// PurchaseReservedInstancesOfferingRequest generates a "aws/request.Request" representing the +// client's request for the PurchaseReservedInstancesOffering operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PurchaseReservedInstancesOffering for more information on using the PurchaseReservedInstancesOffering +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PurchaseReservedInstancesOfferingRequest method. +// req, resp := client.PurchaseReservedInstancesOfferingRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PurchaseReservedInstancesOffering +func (c *EC2) PurchaseReservedInstancesOfferingRequest(input *PurchaseReservedInstancesOfferingInput) (req *request.Request, output *PurchaseReservedInstancesOfferingOutput) { + op := &request.Operation{ + Name: opPurchaseReservedInstancesOffering, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &PurchaseReservedInstancesOfferingInput{} + } + + output = &PurchaseReservedInstancesOfferingOutput{} + req = c.newRequest(op, input, output) + return +} + +// PurchaseReservedInstancesOffering API operation for Amazon Elastic Compute Cloud. +// +// Purchases a Reserved Instance for use with your account. With Reserved Instances, +// you pay a lower hourly rate compared to On-Demand instance pricing. +// +// Use DescribeReservedInstancesOfferings to get a list of Reserved Instance +// offerings that match your specifications. After you've purchased a Reserved +// Instance, you can check for your new Reserved Instance with DescribeReservedInstances. +// +// To queue a purchase for a future date and time, specify a purchase time. +// If you do not specify a purchase time, the default is the current time. +// +// For more information, see Reserved Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts-on-demand-reserved-instances.html) +// and Reserved Instance Marketplace (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation PurchaseReservedInstancesOffering for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PurchaseReservedInstancesOffering +func (c *EC2) PurchaseReservedInstancesOffering(input *PurchaseReservedInstancesOfferingInput) (*PurchaseReservedInstancesOfferingOutput, error) { + req, out := c.PurchaseReservedInstancesOfferingRequest(input) + return out, req.Send() +} + +// PurchaseReservedInstancesOfferingWithContext is the same as PurchaseReservedInstancesOffering with the addition of +// the ability to pass a context and additional request options. +// +// See PurchaseReservedInstancesOffering for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) PurchaseReservedInstancesOfferingWithContext(ctx aws.Context, input *PurchaseReservedInstancesOfferingInput, opts ...request.Option) (*PurchaseReservedInstancesOfferingOutput, error) { + req, out := c.PurchaseReservedInstancesOfferingRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPurchaseScheduledInstances = "PurchaseScheduledInstances" + +// PurchaseScheduledInstancesRequest generates a "aws/request.Request" representing the +// client's request for the PurchaseScheduledInstances operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PurchaseScheduledInstances for more information on using the PurchaseScheduledInstances +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PurchaseScheduledInstancesRequest method. +// req, resp := client.PurchaseScheduledInstancesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PurchaseScheduledInstances +func (c *EC2) PurchaseScheduledInstancesRequest(input *PurchaseScheduledInstancesInput) (req *request.Request, output *PurchaseScheduledInstancesOutput) { + op := &request.Operation{ + Name: opPurchaseScheduledInstances, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &PurchaseScheduledInstancesInput{} + } + + output = &PurchaseScheduledInstancesOutput{} + req = c.newRequest(op, input, output) + return +} + +// PurchaseScheduledInstances API operation for Amazon Elastic Compute Cloud. +// +// Purchases the Scheduled Instances with the specified schedule. +// +// Scheduled Instances enable you to purchase Amazon EC2 compute capacity by +// the hour for a one-year term. Before you can purchase a Scheduled Instance, +// you must call DescribeScheduledInstanceAvailability to check for available +// schedules and obtain a purchase token. After you purchase a Scheduled Instance, +// you must call RunScheduledInstances during each scheduled time period. +// +// After you purchase a Scheduled Instance, you can't cancel, modify, or resell +// your purchase. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation PurchaseScheduledInstances for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/PurchaseScheduledInstances +func (c *EC2) PurchaseScheduledInstances(input *PurchaseScheduledInstancesInput) (*PurchaseScheduledInstancesOutput, error) { + req, out := c.PurchaseScheduledInstancesRequest(input) + return out, req.Send() +} + +// PurchaseScheduledInstancesWithContext is the same as PurchaseScheduledInstances with the addition of +// the ability to pass a context and additional request options. +// +// See PurchaseScheduledInstances for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) PurchaseScheduledInstancesWithContext(ctx aws.Context, input *PurchaseScheduledInstancesInput, opts ...request.Option) (*PurchaseScheduledInstancesOutput, error) { + req, out := c.PurchaseScheduledInstancesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opRebootInstances = "RebootInstances" + +// RebootInstancesRequest generates a "aws/request.Request" representing the +// client's request for the RebootInstances operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See RebootInstances for more information on using the RebootInstances +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the RebootInstancesRequest method. +// req, resp := client.RebootInstancesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RebootInstances +func (c *EC2) RebootInstancesRequest(input *RebootInstancesInput) (req *request.Request, output *RebootInstancesOutput) { + op := &request.Operation{ + Name: opRebootInstances, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &RebootInstancesInput{} + } + + output = &RebootInstancesOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// RebootInstances API operation for Amazon Elastic Compute Cloud. +// +// Requests a reboot of the specified instances. This operation is asynchronous; +// it only queues a request to reboot the specified instances. The operation +// succeeds if the instances are valid and belong to you. Requests to reboot +// terminated instances are ignored. +// +// If an instance does not cleanly shut down within four minutes, Amazon EC2 +// performs a hard reboot. +// +// For more information about troubleshooting, see Getting Console Output and +// Rebooting Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-console.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation RebootInstances for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RebootInstances +func (c *EC2) RebootInstances(input *RebootInstancesInput) (*RebootInstancesOutput, error) { + req, out := c.RebootInstancesRequest(input) + return out, req.Send() +} + +// RebootInstancesWithContext is the same as RebootInstances with the addition of +// the ability to pass a context and additional request options. +// +// See RebootInstances for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) RebootInstancesWithContext(ctx aws.Context, input *RebootInstancesInput, opts ...request.Option) (*RebootInstancesOutput, error) { + req, out := c.RebootInstancesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opRegisterImage = "RegisterImage" + +// RegisterImageRequest generates a "aws/request.Request" representing the +// client's request for the RegisterImage operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See RegisterImage for more information on using the RegisterImage +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the RegisterImageRequest method. +// req, resp := client.RegisterImageRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RegisterImage +func (c *EC2) RegisterImageRequest(input *RegisterImageInput) (req *request.Request, output *RegisterImageOutput) { + op := &request.Operation{ + Name: opRegisterImage, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &RegisterImageInput{} + } + + output = &RegisterImageOutput{} + req = c.newRequest(op, input, output) + return +} + +// RegisterImage API operation for Amazon Elastic Compute Cloud. +// +// Registers an AMI. When you're creating an AMI, this is the final step you +// must complete before you can launch an instance from the AMI. For more information +// about creating AMIs, see Creating Your Own AMIs (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// For Amazon EBS-backed instances, CreateImage creates and registers the AMI +// in a single request, so you don't have to register the AMI yourself. +// +// You can also use RegisterImage to create an Amazon EBS-backed Linux AMI from +// a snapshot of a root device volume. You specify the snapshot using the block +// device mapping. For more information, see Launching a Linux Instance from +// a Backup (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-launch-snapshot.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// You can't register an image where a secondary (non-root) snapshot has AWS +// Marketplace product codes. +// +// Windows and some Linux distributions, such as Red Hat Enterprise Linux (RHEL) +// and SUSE Linux Enterprise Server (SLES), use the EC2 billing product code +// associated with an AMI to verify the subscription status for package updates. +// To create a new AMI for operating systems that require a billing product +// code, do the following: +// +// Launch an instance from an existing AMI with that billing product code. +// +// Customize the instance. +// +// Create a new AMI from the instance using CreateImage to preserve the billing +// product code association. +// +// If you purchase a Reserved Instance to apply to an On-Demand Instance that +// was launched from an AMI with a billing product code, make sure that the +// Reserved Instance has the matching billing product code. If you purchase +// a Reserved Instance without the matching billing product code, the Reserved +// Instance will not be applied to the On-Demand Instance. +// +// If needed, you can deregister an AMI at any time. Any modifications you make +// to an AMI backed by an instance store volume invalidates its registration. +// If you make changes to an image, deregister the previous image and register +// the new image. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation RegisterImage for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RegisterImage +func (c *EC2) RegisterImage(input *RegisterImageInput) (*RegisterImageOutput, error) { + req, out := c.RegisterImageRequest(input) + return out, req.Send() +} + +// RegisterImageWithContext is the same as RegisterImage with the addition of +// the ability to pass a context and additional request options. +// +// See RegisterImage for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) RegisterImageWithContext(ctx aws.Context, input *RegisterImageInput, opts ...request.Option) (*RegisterImageOutput, error) { + req, out := c.RegisterImageRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opRejectTransitGatewayVpcAttachment = "RejectTransitGatewayVpcAttachment" + +// RejectTransitGatewayVpcAttachmentRequest generates a "aws/request.Request" representing the +// client's request for the RejectTransitGatewayVpcAttachment operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See RejectTransitGatewayVpcAttachment for more information on using the RejectTransitGatewayVpcAttachment +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the RejectTransitGatewayVpcAttachmentRequest method. +// req, resp := client.RejectTransitGatewayVpcAttachmentRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RejectTransitGatewayVpcAttachment +func (c *EC2) RejectTransitGatewayVpcAttachmentRequest(input *RejectTransitGatewayVpcAttachmentInput) (req *request.Request, output *RejectTransitGatewayVpcAttachmentOutput) { + op := &request.Operation{ + Name: opRejectTransitGatewayVpcAttachment, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &RejectTransitGatewayVpcAttachmentInput{} + } + + output = &RejectTransitGatewayVpcAttachmentOutput{} + req = c.newRequest(op, input, output) + return +} + +// RejectTransitGatewayVpcAttachment API operation for Amazon Elastic Compute Cloud. +// +// Rejects a request to attach a VPC to a transit gateway. +// +// The VPC attachment must be in the pendingAcceptance state. Use DescribeTransitGatewayVpcAttachments +// to view your pending VPC attachment requests. Use AcceptTransitGatewayVpcAttachment +// to accept a VPC attachment request. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation RejectTransitGatewayVpcAttachment for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RejectTransitGatewayVpcAttachment +func (c *EC2) RejectTransitGatewayVpcAttachment(input *RejectTransitGatewayVpcAttachmentInput) (*RejectTransitGatewayVpcAttachmentOutput, error) { + req, out := c.RejectTransitGatewayVpcAttachmentRequest(input) + return out, req.Send() +} + +// RejectTransitGatewayVpcAttachmentWithContext is the same as RejectTransitGatewayVpcAttachment with the addition of +// the ability to pass a context and additional request options. +// +// See RejectTransitGatewayVpcAttachment for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) RejectTransitGatewayVpcAttachmentWithContext(ctx aws.Context, input *RejectTransitGatewayVpcAttachmentInput, opts ...request.Option) (*RejectTransitGatewayVpcAttachmentOutput, error) { + req, out := c.RejectTransitGatewayVpcAttachmentRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opRejectVpcEndpointConnections = "RejectVpcEndpointConnections" + +// RejectVpcEndpointConnectionsRequest generates a "aws/request.Request" representing the +// client's request for the RejectVpcEndpointConnections operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See RejectVpcEndpointConnections for more information on using the RejectVpcEndpointConnections +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the RejectVpcEndpointConnectionsRequest method. +// req, resp := client.RejectVpcEndpointConnectionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RejectVpcEndpointConnections +func (c *EC2) RejectVpcEndpointConnectionsRequest(input *RejectVpcEndpointConnectionsInput) (req *request.Request, output *RejectVpcEndpointConnectionsOutput) { + op := &request.Operation{ + Name: opRejectVpcEndpointConnections, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &RejectVpcEndpointConnectionsInput{} + } + + output = &RejectVpcEndpointConnectionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// RejectVpcEndpointConnections API operation for Amazon Elastic Compute Cloud. +// +// Rejects one or more VPC endpoint connection requests to your VPC endpoint +// service. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation RejectVpcEndpointConnections for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RejectVpcEndpointConnections +func (c *EC2) RejectVpcEndpointConnections(input *RejectVpcEndpointConnectionsInput) (*RejectVpcEndpointConnectionsOutput, error) { + req, out := c.RejectVpcEndpointConnectionsRequest(input) + return out, req.Send() +} + +// RejectVpcEndpointConnectionsWithContext is the same as RejectVpcEndpointConnections with the addition of +// the ability to pass a context and additional request options. +// +// See RejectVpcEndpointConnections for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) RejectVpcEndpointConnectionsWithContext(ctx aws.Context, input *RejectVpcEndpointConnectionsInput, opts ...request.Option) (*RejectVpcEndpointConnectionsOutput, error) { + req, out := c.RejectVpcEndpointConnectionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opRejectVpcPeeringConnection = "RejectVpcPeeringConnection" + +// RejectVpcPeeringConnectionRequest generates a "aws/request.Request" representing the +// client's request for the RejectVpcPeeringConnection operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See RejectVpcPeeringConnection for more information on using the RejectVpcPeeringConnection +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the RejectVpcPeeringConnectionRequest method. +// req, resp := client.RejectVpcPeeringConnectionRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RejectVpcPeeringConnection +func (c *EC2) RejectVpcPeeringConnectionRequest(input *RejectVpcPeeringConnectionInput) (req *request.Request, output *RejectVpcPeeringConnectionOutput) { + op := &request.Operation{ + Name: opRejectVpcPeeringConnection, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &RejectVpcPeeringConnectionInput{} + } + + output = &RejectVpcPeeringConnectionOutput{} + req = c.newRequest(op, input, output) + return +} + +// RejectVpcPeeringConnection API operation for Amazon Elastic Compute Cloud. +// +// Rejects a VPC peering connection request. The VPC peering connection must +// be in the pending-acceptance state. Use the DescribeVpcPeeringConnections +// request to view your outstanding VPC peering connection requests. To delete +// an active VPC peering connection, or to delete a VPC peering connection request +// that you initiated, use DeleteVpcPeeringConnection. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation RejectVpcPeeringConnection for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RejectVpcPeeringConnection +func (c *EC2) RejectVpcPeeringConnection(input *RejectVpcPeeringConnectionInput) (*RejectVpcPeeringConnectionOutput, error) { + req, out := c.RejectVpcPeeringConnectionRequest(input) + return out, req.Send() +} + +// RejectVpcPeeringConnectionWithContext is the same as RejectVpcPeeringConnection with the addition of +// the ability to pass a context and additional request options. +// +// See RejectVpcPeeringConnection for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) RejectVpcPeeringConnectionWithContext(ctx aws.Context, input *RejectVpcPeeringConnectionInput, opts ...request.Option) (*RejectVpcPeeringConnectionOutput, error) { + req, out := c.RejectVpcPeeringConnectionRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opReleaseAddress = "ReleaseAddress" + +// ReleaseAddressRequest generates a "aws/request.Request" representing the +// client's request for the ReleaseAddress operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ReleaseAddress for more information on using the ReleaseAddress +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ReleaseAddressRequest method. +// req, resp := client.ReleaseAddressRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReleaseAddress +func (c *EC2) ReleaseAddressRequest(input *ReleaseAddressInput) (req *request.Request, output *ReleaseAddressOutput) { + op := &request.Operation{ + Name: opReleaseAddress, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ReleaseAddressInput{} + } + + output = &ReleaseAddressOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// ReleaseAddress API operation for Amazon Elastic Compute Cloud. +// +// Releases the specified Elastic IP address. +// +// [EC2-Classic, default VPC] Releasing an Elastic IP address automatically +// disassociates it from any instance that it's associated with. To disassociate +// an Elastic IP address without releasing it, use DisassociateAddress. +// +// [Nondefault VPC] You must use DisassociateAddress to disassociate the Elastic +// IP address before you can release it. Otherwise, Amazon EC2 returns an error +// (InvalidIPAddress.InUse). +// +// After releasing an Elastic IP address, it is released to the IP address pool. +// Be sure to update your DNS records and any servers or devices that communicate +// with the address. If you attempt to release an Elastic IP address that you +// already released, you'll get an AuthFailure error if the address is already +// allocated to another AWS account. +// +// [EC2-VPC] After you release an Elastic IP address for use in a VPC, you might +// be able to recover it. For more information, see AllocateAddress. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ReleaseAddress for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReleaseAddress +func (c *EC2) ReleaseAddress(input *ReleaseAddressInput) (*ReleaseAddressOutput, error) { + req, out := c.ReleaseAddressRequest(input) + return out, req.Send() +} + +// ReleaseAddressWithContext is the same as ReleaseAddress with the addition of +// the ability to pass a context and additional request options. +// +// See ReleaseAddress for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ReleaseAddressWithContext(ctx aws.Context, input *ReleaseAddressInput, opts ...request.Option) (*ReleaseAddressOutput, error) { + req, out := c.ReleaseAddressRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opReleaseHosts = "ReleaseHosts" + +// ReleaseHostsRequest generates a "aws/request.Request" representing the +// client's request for the ReleaseHosts operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ReleaseHosts for more information on using the ReleaseHosts +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ReleaseHostsRequest method. +// req, resp := client.ReleaseHostsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReleaseHosts +func (c *EC2) ReleaseHostsRequest(input *ReleaseHostsInput) (req *request.Request, output *ReleaseHostsOutput) { + op := &request.Operation{ + Name: opReleaseHosts, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ReleaseHostsInput{} + } + + output = &ReleaseHostsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ReleaseHosts API operation for Amazon Elastic Compute Cloud. +// +// When you no longer want to use an On-Demand Dedicated Host it can be released. +// On-Demand billing is stopped and the host goes into released state. The host +// ID of Dedicated Hosts that have been released can no longer be specified +// in another request, for example, to modify the host. You must stop or terminate +// all instances on a host before it can be released. +// +// When Dedicated Hosts are released, it may take some time for them to stop +// counting toward your limit and you may receive capacity errors when trying +// to allocate new Dedicated Hosts. Wait a few minutes and then try again. +// +// Released hosts still appear in a DescribeHosts response. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ReleaseHosts for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReleaseHosts +func (c *EC2) ReleaseHosts(input *ReleaseHostsInput) (*ReleaseHostsOutput, error) { + req, out := c.ReleaseHostsRequest(input) + return out, req.Send() +} + +// ReleaseHostsWithContext is the same as ReleaseHosts with the addition of +// the ability to pass a context and additional request options. +// +// See ReleaseHosts for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ReleaseHostsWithContext(ctx aws.Context, input *ReleaseHostsInput, opts ...request.Option) (*ReleaseHostsOutput, error) { + req, out := c.ReleaseHostsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opReplaceIamInstanceProfileAssociation = "ReplaceIamInstanceProfileAssociation" + +// ReplaceIamInstanceProfileAssociationRequest generates a "aws/request.Request" representing the +// client's request for the ReplaceIamInstanceProfileAssociation operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ReplaceIamInstanceProfileAssociation for more information on using the ReplaceIamInstanceProfileAssociation +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ReplaceIamInstanceProfileAssociationRequest method. +// req, resp := client.ReplaceIamInstanceProfileAssociationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceIamInstanceProfileAssociation +func (c *EC2) ReplaceIamInstanceProfileAssociationRequest(input *ReplaceIamInstanceProfileAssociationInput) (req *request.Request, output *ReplaceIamInstanceProfileAssociationOutput) { + op := &request.Operation{ + Name: opReplaceIamInstanceProfileAssociation, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ReplaceIamInstanceProfileAssociationInput{} + } + + output = &ReplaceIamInstanceProfileAssociationOutput{} + req = c.newRequest(op, input, output) + return +} + +// ReplaceIamInstanceProfileAssociation API operation for Amazon Elastic Compute Cloud. +// +// Replaces an IAM instance profile for the specified running instance. You +// can use this action to change the IAM instance profile that's associated +// with an instance without having to disassociate the existing IAM instance +// profile first. +// +// Use DescribeIamInstanceProfileAssociations to get the association ID. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ReplaceIamInstanceProfileAssociation for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceIamInstanceProfileAssociation +func (c *EC2) ReplaceIamInstanceProfileAssociation(input *ReplaceIamInstanceProfileAssociationInput) (*ReplaceIamInstanceProfileAssociationOutput, error) { + req, out := c.ReplaceIamInstanceProfileAssociationRequest(input) + return out, req.Send() +} + +// ReplaceIamInstanceProfileAssociationWithContext is the same as ReplaceIamInstanceProfileAssociation with the addition of +// the ability to pass a context and additional request options. +// +// See ReplaceIamInstanceProfileAssociation for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ReplaceIamInstanceProfileAssociationWithContext(ctx aws.Context, input *ReplaceIamInstanceProfileAssociationInput, opts ...request.Option) (*ReplaceIamInstanceProfileAssociationOutput, error) { + req, out := c.ReplaceIamInstanceProfileAssociationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opReplaceNetworkAclAssociation = "ReplaceNetworkAclAssociation" + +// ReplaceNetworkAclAssociationRequest generates a "aws/request.Request" representing the +// client's request for the ReplaceNetworkAclAssociation operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ReplaceNetworkAclAssociation for more information on using the ReplaceNetworkAclAssociation +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ReplaceNetworkAclAssociationRequest method. +// req, resp := client.ReplaceNetworkAclAssociationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceNetworkAclAssociation +func (c *EC2) ReplaceNetworkAclAssociationRequest(input *ReplaceNetworkAclAssociationInput) (req *request.Request, output *ReplaceNetworkAclAssociationOutput) { + op := &request.Operation{ + Name: opReplaceNetworkAclAssociation, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ReplaceNetworkAclAssociationInput{} + } + + output = &ReplaceNetworkAclAssociationOutput{} + req = c.newRequest(op, input, output) + return +} + +// ReplaceNetworkAclAssociation API operation for Amazon Elastic Compute Cloud. +// +// Changes which network ACL a subnet is associated with. By default when you +// create a subnet, it's automatically associated with the default network ACL. +// For more information, see Network ACLs (https://docs.aws.amazon.com/vpc/latest/userguide/VPC_ACLs.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// This is an idempotent operation. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ReplaceNetworkAclAssociation for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceNetworkAclAssociation +func (c *EC2) ReplaceNetworkAclAssociation(input *ReplaceNetworkAclAssociationInput) (*ReplaceNetworkAclAssociationOutput, error) { + req, out := c.ReplaceNetworkAclAssociationRequest(input) + return out, req.Send() +} + +// ReplaceNetworkAclAssociationWithContext is the same as ReplaceNetworkAclAssociation with the addition of +// the ability to pass a context and additional request options. +// +// See ReplaceNetworkAclAssociation for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ReplaceNetworkAclAssociationWithContext(ctx aws.Context, input *ReplaceNetworkAclAssociationInput, opts ...request.Option) (*ReplaceNetworkAclAssociationOutput, error) { + req, out := c.ReplaceNetworkAclAssociationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opReplaceNetworkAclEntry = "ReplaceNetworkAclEntry" + +// ReplaceNetworkAclEntryRequest generates a "aws/request.Request" representing the +// client's request for the ReplaceNetworkAclEntry operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ReplaceNetworkAclEntry for more information on using the ReplaceNetworkAclEntry +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ReplaceNetworkAclEntryRequest method. +// req, resp := client.ReplaceNetworkAclEntryRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceNetworkAclEntry +func (c *EC2) ReplaceNetworkAclEntryRequest(input *ReplaceNetworkAclEntryInput) (req *request.Request, output *ReplaceNetworkAclEntryOutput) { + op := &request.Operation{ + Name: opReplaceNetworkAclEntry, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ReplaceNetworkAclEntryInput{} + } + + output = &ReplaceNetworkAclEntryOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// ReplaceNetworkAclEntry API operation for Amazon Elastic Compute Cloud. +// +// Replaces an entry (rule) in a network ACL. For more information, see Network +// ACLs (https://docs.aws.amazon.com/vpc/latest/userguide/VPC_ACLs.html) in +// the Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ReplaceNetworkAclEntry for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceNetworkAclEntry +func (c *EC2) ReplaceNetworkAclEntry(input *ReplaceNetworkAclEntryInput) (*ReplaceNetworkAclEntryOutput, error) { + req, out := c.ReplaceNetworkAclEntryRequest(input) + return out, req.Send() +} + +// ReplaceNetworkAclEntryWithContext is the same as ReplaceNetworkAclEntry with the addition of +// the ability to pass a context and additional request options. +// +// See ReplaceNetworkAclEntry for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ReplaceNetworkAclEntryWithContext(ctx aws.Context, input *ReplaceNetworkAclEntryInput, opts ...request.Option) (*ReplaceNetworkAclEntryOutput, error) { + req, out := c.ReplaceNetworkAclEntryRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opReplaceRoute = "ReplaceRoute" + +// ReplaceRouteRequest generates a "aws/request.Request" representing the +// client's request for the ReplaceRoute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ReplaceRoute for more information on using the ReplaceRoute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ReplaceRouteRequest method. +// req, resp := client.ReplaceRouteRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceRoute +func (c *EC2) ReplaceRouteRequest(input *ReplaceRouteInput) (req *request.Request, output *ReplaceRouteOutput) { + op := &request.Operation{ + Name: opReplaceRoute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ReplaceRouteInput{} + } + + output = &ReplaceRouteOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// ReplaceRoute API operation for Amazon Elastic Compute Cloud. +// +// Replaces an existing route within a route table in a VPC. You must provide +// only one of the following: internet gateway or virtual private gateway, NAT +// instance, NAT gateway, VPC peering connection, network interface, or egress-only +// internet gateway. +// +// For more information, see Route Tables (https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ReplaceRoute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceRoute +func (c *EC2) ReplaceRoute(input *ReplaceRouteInput) (*ReplaceRouteOutput, error) { + req, out := c.ReplaceRouteRequest(input) + return out, req.Send() +} + +// ReplaceRouteWithContext is the same as ReplaceRoute with the addition of +// the ability to pass a context and additional request options. +// +// See ReplaceRoute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ReplaceRouteWithContext(ctx aws.Context, input *ReplaceRouteInput, opts ...request.Option) (*ReplaceRouteOutput, error) { + req, out := c.ReplaceRouteRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opReplaceRouteTableAssociation = "ReplaceRouteTableAssociation" + +// ReplaceRouteTableAssociationRequest generates a "aws/request.Request" representing the +// client's request for the ReplaceRouteTableAssociation operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ReplaceRouteTableAssociation for more information on using the ReplaceRouteTableAssociation +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ReplaceRouteTableAssociationRequest method. +// req, resp := client.ReplaceRouteTableAssociationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceRouteTableAssociation +func (c *EC2) ReplaceRouteTableAssociationRequest(input *ReplaceRouteTableAssociationInput) (req *request.Request, output *ReplaceRouteTableAssociationOutput) { + op := &request.Operation{ + Name: opReplaceRouteTableAssociation, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ReplaceRouteTableAssociationInput{} + } + + output = &ReplaceRouteTableAssociationOutput{} + req = c.newRequest(op, input, output) + return +} + +// ReplaceRouteTableAssociation API operation for Amazon Elastic Compute Cloud. +// +// Changes the route table associated with a given subnet in a VPC. After the +// operation completes, the subnet uses the routes in the new route table it's +// associated with. For more information about route tables, see Route Tables +// (https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// You can also use ReplaceRouteTableAssociation to change which table is the +// main route table in the VPC. You just specify the main route table's association +// ID and the route table to be the new main route table. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ReplaceRouteTableAssociation for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceRouteTableAssociation +func (c *EC2) ReplaceRouteTableAssociation(input *ReplaceRouteTableAssociationInput) (*ReplaceRouteTableAssociationOutput, error) { + req, out := c.ReplaceRouteTableAssociationRequest(input) + return out, req.Send() +} + +// ReplaceRouteTableAssociationWithContext is the same as ReplaceRouteTableAssociation with the addition of +// the ability to pass a context and additional request options. +// +// See ReplaceRouteTableAssociation for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ReplaceRouteTableAssociationWithContext(ctx aws.Context, input *ReplaceRouteTableAssociationInput, opts ...request.Option) (*ReplaceRouteTableAssociationOutput, error) { + req, out := c.ReplaceRouteTableAssociationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opReplaceTransitGatewayRoute = "ReplaceTransitGatewayRoute" + +// ReplaceTransitGatewayRouteRequest generates a "aws/request.Request" representing the +// client's request for the ReplaceTransitGatewayRoute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ReplaceTransitGatewayRoute for more information on using the ReplaceTransitGatewayRoute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ReplaceTransitGatewayRouteRequest method. +// req, resp := client.ReplaceTransitGatewayRouteRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceTransitGatewayRoute +func (c *EC2) ReplaceTransitGatewayRouteRequest(input *ReplaceTransitGatewayRouteInput) (req *request.Request, output *ReplaceTransitGatewayRouteOutput) { + op := &request.Operation{ + Name: opReplaceTransitGatewayRoute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ReplaceTransitGatewayRouteInput{} + } + + output = &ReplaceTransitGatewayRouteOutput{} + req = c.newRequest(op, input, output) + return +} + +// ReplaceTransitGatewayRoute API operation for Amazon Elastic Compute Cloud. +// +// Replaces the specified route in the specified transit gateway route table. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ReplaceTransitGatewayRoute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceTransitGatewayRoute +func (c *EC2) ReplaceTransitGatewayRoute(input *ReplaceTransitGatewayRouteInput) (*ReplaceTransitGatewayRouteOutput, error) { + req, out := c.ReplaceTransitGatewayRouteRequest(input) + return out, req.Send() +} + +// ReplaceTransitGatewayRouteWithContext is the same as ReplaceTransitGatewayRoute with the addition of +// the ability to pass a context and additional request options. +// +// See ReplaceTransitGatewayRoute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ReplaceTransitGatewayRouteWithContext(ctx aws.Context, input *ReplaceTransitGatewayRouteInput, opts ...request.Option) (*ReplaceTransitGatewayRouteOutput, error) { + req, out := c.ReplaceTransitGatewayRouteRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opReportInstanceStatus = "ReportInstanceStatus" + +// ReportInstanceStatusRequest generates a "aws/request.Request" representing the +// client's request for the ReportInstanceStatus operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ReportInstanceStatus for more information on using the ReportInstanceStatus +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ReportInstanceStatusRequest method. +// req, resp := client.ReportInstanceStatusRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReportInstanceStatus +func (c *EC2) ReportInstanceStatusRequest(input *ReportInstanceStatusInput) (req *request.Request, output *ReportInstanceStatusOutput) { + op := &request.Operation{ + Name: opReportInstanceStatus, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ReportInstanceStatusInput{} + } + + output = &ReportInstanceStatusOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// ReportInstanceStatus API operation for Amazon Elastic Compute Cloud. +// +// Submits feedback about the status of an instance. The instance must be in +// the running state. If your experience with the instance differs from the +// instance status returned by DescribeInstanceStatus, use ReportInstanceStatus +// to report your experience with the instance. Amazon EC2 collects this information +// to improve the accuracy of status checks. +// +// Use of this action does not change the value returned by DescribeInstanceStatus. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ReportInstanceStatus for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReportInstanceStatus +func (c *EC2) ReportInstanceStatus(input *ReportInstanceStatusInput) (*ReportInstanceStatusOutput, error) { + req, out := c.ReportInstanceStatusRequest(input) + return out, req.Send() +} + +// ReportInstanceStatusWithContext is the same as ReportInstanceStatus with the addition of +// the ability to pass a context and additional request options. +// +// See ReportInstanceStatus for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ReportInstanceStatusWithContext(ctx aws.Context, input *ReportInstanceStatusInput, opts ...request.Option) (*ReportInstanceStatusOutput, error) { + req, out := c.ReportInstanceStatusRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opRequestSpotFleet = "RequestSpotFleet" + +// RequestSpotFleetRequest generates a "aws/request.Request" representing the +// client's request for the RequestSpotFleet operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See RequestSpotFleet for more information on using the RequestSpotFleet +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the RequestSpotFleetRequest method. +// req, resp := client.RequestSpotFleetRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RequestSpotFleet +func (c *EC2) RequestSpotFleetRequest(input *RequestSpotFleetInput) (req *request.Request, output *RequestSpotFleetOutput) { + op := &request.Operation{ + Name: opRequestSpotFleet, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &RequestSpotFleetInput{} + } + + output = &RequestSpotFleetOutput{} + req = c.newRequest(op, input, output) + return +} + +// RequestSpotFleet API operation for Amazon Elastic Compute Cloud. +// +// Creates a Spot Fleet request. +// +// The Spot Fleet request specifies the total target capacity and the On-Demand +// target capacity. Amazon EC2 calculates the difference between the total capacity +// and On-Demand capacity, and launches the difference as Spot capacity. +// +// You can submit a single request that includes multiple launch specifications +// that vary by instance type, AMI, Availability Zone, or subnet. +// +// By default, the Spot Fleet requests Spot Instances in the Spot Instance pool +// where the price per unit is the lowest. Each launch specification can include +// its own instance weighting that reflects the value of the instance type to +// your application workload. +// +// Alternatively, you can specify that the Spot Fleet distribute the target +// capacity across the Spot pools included in its launch specifications. By +// ensuring that the Spot Instances in your Spot Fleet are in different Spot +// pools, you can improve the availability of your fleet. +// +// You can specify tags for the Spot Instances. You cannot tag other resource +// types in a Spot Fleet request because only the instance resource type is +// supported. +// +// For more information, see Spot Fleet Requests (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-requests.html) +// in the Amazon EC2 User Guide for Linux Instances. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation RequestSpotFleet for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RequestSpotFleet +func (c *EC2) RequestSpotFleet(input *RequestSpotFleetInput) (*RequestSpotFleetOutput, error) { + req, out := c.RequestSpotFleetRequest(input) + return out, req.Send() +} + +// RequestSpotFleetWithContext is the same as RequestSpotFleet with the addition of +// the ability to pass a context and additional request options. +// +// See RequestSpotFleet for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) RequestSpotFleetWithContext(ctx aws.Context, input *RequestSpotFleetInput, opts ...request.Option) (*RequestSpotFleetOutput, error) { + req, out := c.RequestSpotFleetRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opRequestSpotInstances = "RequestSpotInstances" + +// RequestSpotInstancesRequest generates a "aws/request.Request" representing the +// client's request for the RequestSpotInstances operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See RequestSpotInstances for more information on using the RequestSpotInstances +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the RequestSpotInstancesRequest method. +// req, resp := client.RequestSpotInstancesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RequestSpotInstances +func (c *EC2) RequestSpotInstancesRequest(input *RequestSpotInstancesInput) (req *request.Request, output *RequestSpotInstancesOutput) { + op := &request.Operation{ + Name: opRequestSpotInstances, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &RequestSpotInstancesInput{} + } + + output = &RequestSpotInstancesOutput{} + req = c.newRequest(op, input, output) + return +} + +// RequestSpotInstances API operation for Amazon Elastic Compute Cloud. +// +// Creates a Spot Instance request. +// +// For more information, see Spot Instance Requests (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html) +// in the Amazon EC2 User Guide for Linux Instances. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation RequestSpotInstances for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RequestSpotInstances +func (c *EC2) RequestSpotInstances(input *RequestSpotInstancesInput) (*RequestSpotInstancesOutput, error) { + req, out := c.RequestSpotInstancesRequest(input) + return out, req.Send() +} + +// RequestSpotInstancesWithContext is the same as RequestSpotInstances with the addition of +// the ability to pass a context and additional request options. +// +// See RequestSpotInstances for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) RequestSpotInstancesWithContext(ctx aws.Context, input *RequestSpotInstancesInput, opts ...request.Option) (*RequestSpotInstancesOutput, error) { + req, out := c.RequestSpotInstancesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opResetEbsDefaultKmsKeyId = "ResetEbsDefaultKmsKeyId" + +// ResetEbsDefaultKmsKeyIdRequest generates a "aws/request.Request" representing the +// client's request for the ResetEbsDefaultKmsKeyId operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ResetEbsDefaultKmsKeyId for more information on using the ResetEbsDefaultKmsKeyId +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ResetEbsDefaultKmsKeyIdRequest method. +// req, resp := client.ResetEbsDefaultKmsKeyIdRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetEbsDefaultKmsKeyId +func (c *EC2) ResetEbsDefaultKmsKeyIdRequest(input *ResetEbsDefaultKmsKeyIdInput) (req *request.Request, output *ResetEbsDefaultKmsKeyIdOutput) { + op := &request.Operation{ + Name: opResetEbsDefaultKmsKeyId, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ResetEbsDefaultKmsKeyIdInput{} + } + + output = &ResetEbsDefaultKmsKeyIdOutput{} + req = c.newRequest(op, input, output) + return +} + +// ResetEbsDefaultKmsKeyId API operation for Amazon Elastic Compute Cloud. +// +// Resets the default customer master key (CMK) for EBS encryption for your +// account in this Region to the AWS managed CMK for EBS. +// +// After resetting the default CMK to the AWS managed CMK, you can continue +// to encrypt by a customer managed CMK by specifying it when you create the +// volume. For more information, see Amazon EBS Encryption (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ResetEbsDefaultKmsKeyId for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetEbsDefaultKmsKeyId +func (c *EC2) ResetEbsDefaultKmsKeyId(input *ResetEbsDefaultKmsKeyIdInput) (*ResetEbsDefaultKmsKeyIdOutput, error) { + req, out := c.ResetEbsDefaultKmsKeyIdRequest(input) + return out, req.Send() +} + +// ResetEbsDefaultKmsKeyIdWithContext is the same as ResetEbsDefaultKmsKeyId with the addition of +// the ability to pass a context and additional request options. +// +// See ResetEbsDefaultKmsKeyId for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ResetEbsDefaultKmsKeyIdWithContext(ctx aws.Context, input *ResetEbsDefaultKmsKeyIdInput, opts ...request.Option) (*ResetEbsDefaultKmsKeyIdOutput, error) { + req, out := c.ResetEbsDefaultKmsKeyIdRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opResetFpgaImageAttribute = "ResetFpgaImageAttribute" + +// ResetFpgaImageAttributeRequest generates a "aws/request.Request" representing the +// client's request for the ResetFpgaImageAttribute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ResetFpgaImageAttribute for more information on using the ResetFpgaImageAttribute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ResetFpgaImageAttributeRequest method. +// req, resp := client.ResetFpgaImageAttributeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetFpgaImageAttribute +func (c *EC2) ResetFpgaImageAttributeRequest(input *ResetFpgaImageAttributeInput) (req *request.Request, output *ResetFpgaImageAttributeOutput) { + op := &request.Operation{ + Name: opResetFpgaImageAttribute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ResetFpgaImageAttributeInput{} + } + + output = &ResetFpgaImageAttributeOutput{} + req = c.newRequest(op, input, output) + return +} + +// ResetFpgaImageAttribute API operation for Amazon Elastic Compute Cloud. +// +// Resets the specified attribute of the specified Amazon FPGA Image (AFI) to +// its default value. You can only reset the load permission attribute. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ResetFpgaImageAttribute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetFpgaImageAttribute +func (c *EC2) ResetFpgaImageAttribute(input *ResetFpgaImageAttributeInput) (*ResetFpgaImageAttributeOutput, error) { + req, out := c.ResetFpgaImageAttributeRequest(input) + return out, req.Send() +} + +// ResetFpgaImageAttributeWithContext is the same as ResetFpgaImageAttribute with the addition of +// the ability to pass a context and additional request options. +// +// See ResetFpgaImageAttribute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ResetFpgaImageAttributeWithContext(ctx aws.Context, input *ResetFpgaImageAttributeInput, opts ...request.Option) (*ResetFpgaImageAttributeOutput, error) { + req, out := c.ResetFpgaImageAttributeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opResetImageAttribute = "ResetImageAttribute" + +// ResetImageAttributeRequest generates a "aws/request.Request" representing the +// client's request for the ResetImageAttribute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ResetImageAttribute for more information on using the ResetImageAttribute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ResetImageAttributeRequest method. +// req, resp := client.ResetImageAttributeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetImageAttribute +func (c *EC2) ResetImageAttributeRequest(input *ResetImageAttributeInput) (req *request.Request, output *ResetImageAttributeOutput) { + op := &request.Operation{ + Name: opResetImageAttribute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ResetImageAttributeInput{} + } + + output = &ResetImageAttributeOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// ResetImageAttribute API operation for Amazon Elastic Compute Cloud. +// +// Resets an attribute of an AMI to its default value. +// +// The productCodes attribute can't be reset. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ResetImageAttribute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetImageAttribute +func (c *EC2) ResetImageAttribute(input *ResetImageAttributeInput) (*ResetImageAttributeOutput, error) { + req, out := c.ResetImageAttributeRequest(input) + return out, req.Send() +} + +// ResetImageAttributeWithContext is the same as ResetImageAttribute with the addition of +// the ability to pass a context and additional request options. +// +// See ResetImageAttribute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ResetImageAttributeWithContext(ctx aws.Context, input *ResetImageAttributeInput, opts ...request.Option) (*ResetImageAttributeOutput, error) { + req, out := c.ResetImageAttributeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opResetInstanceAttribute = "ResetInstanceAttribute" + +// ResetInstanceAttributeRequest generates a "aws/request.Request" representing the +// client's request for the ResetInstanceAttribute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ResetInstanceAttribute for more information on using the ResetInstanceAttribute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ResetInstanceAttributeRequest method. +// req, resp := client.ResetInstanceAttributeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetInstanceAttribute +func (c *EC2) ResetInstanceAttributeRequest(input *ResetInstanceAttributeInput) (req *request.Request, output *ResetInstanceAttributeOutput) { + op := &request.Operation{ + Name: opResetInstanceAttribute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ResetInstanceAttributeInput{} + } + + output = &ResetInstanceAttributeOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// ResetInstanceAttribute API operation for Amazon Elastic Compute Cloud. +// +// Resets an attribute of an instance to its default value. To reset the kernel +// or ramdisk, the instance must be in a stopped state. To reset the sourceDestCheck, +// the instance can be either running or stopped. +// +// The sourceDestCheck attribute controls whether source/destination checking +// is enabled. The default value is true, which means checking is enabled. This +// value must be false for a NAT instance to perform NAT. For more information, +// see NAT Instances (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html) +// in the Amazon Virtual Private Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ResetInstanceAttribute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetInstanceAttribute +func (c *EC2) ResetInstanceAttribute(input *ResetInstanceAttributeInput) (*ResetInstanceAttributeOutput, error) { + req, out := c.ResetInstanceAttributeRequest(input) + return out, req.Send() +} + +// ResetInstanceAttributeWithContext is the same as ResetInstanceAttribute with the addition of +// the ability to pass a context and additional request options. +// +// See ResetInstanceAttribute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ResetInstanceAttributeWithContext(ctx aws.Context, input *ResetInstanceAttributeInput, opts ...request.Option) (*ResetInstanceAttributeOutput, error) { + req, out := c.ResetInstanceAttributeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opResetNetworkInterfaceAttribute = "ResetNetworkInterfaceAttribute" + +// ResetNetworkInterfaceAttributeRequest generates a "aws/request.Request" representing the +// client's request for the ResetNetworkInterfaceAttribute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ResetNetworkInterfaceAttribute for more information on using the ResetNetworkInterfaceAttribute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ResetNetworkInterfaceAttributeRequest method. +// req, resp := client.ResetNetworkInterfaceAttributeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetNetworkInterfaceAttribute +func (c *EC2) ResetNetworkInterfaceAttributeRequest(input *ResetNetworkInterfaceAttributeInput) (req *request.Request, output *ResetNetworkInterfaceAttributeOutput) { + op := &request.Operation{ + Name: opResetNetworkInterfaceAttribute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ResetNetworkInterfaceAttributeInput{} + } + + output = &ResetNetworkInterfaceAttributeOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// ResetNetworkInterfaceAttribute API operation for Amazon Elastic Compute Cloud. +// +// Resets a network interface attribute. You can specify only one attribute +// at a time. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ResetNetworkInterfaceAttribute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetNetworkInterfaceAttribute +func (c *EC2) ResetNetworkInterfaceAttribute(input *ResetNetworkInterfaceAttributeInput) (*ResetNetworkInterfaceAttributeOutput, error) { + req, out := c.ResetNetworkInterfaceAttributeRequest(input) + return out, req.Send() +} + +// ResetNetworkInterfaceAttributeWithContext is the same as ResetNetworkInterfaceAttribute with the addition of +// the ability to pass a context and additional request options. +// +// See ResetNetworkInterfaceAttribute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ResetNetworkInterfaceAttributeWithContext(ctx aws.Context, input *ResetNetworkInterfaceAttributeInput, opts ...request.Option) (*ResetNetworkInterfaceAttributeOutput, error) { + req, out := c.ResetNetworkInterfaceAttributeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opResetSnapshotAttribute = "ResetSnapshotAttribute" + +// ResetSnapshotAttributeRequest generates a "aws/request.Request" representing the +// client's request for the ResetSnapshotAttribute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ResetSnapshotAttribute for more information on using the ResetSnapshotAttribute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ResetSnapshotAttributeRequest method. +// req, resp := client.ResetSnapshotAttributeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetSnapshotAttribute +func (c *EC2) ResetSnapshotAttributeRequest(input *ResetSnapshotAttributeInput) (req *request.Request, output *ResetSnapshotAttributeOutput) { + op := &request.Operation{ + Name: opResetSnapshotAttribute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ResetSnapshotAttributeInput{} + } + + output = &ResetSnapshotAttributeOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// ResetSnapshotAttribute API operation for Amazon Elastic Compute Cloud. +// +// Resets permission settings for the specified snapshot. +// +// For more information about modifying snapshot permissions, see Sharing Snapshots +// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modifying-snapshot-permissions.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ResetSnapshotAttribute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetSnapshotAttribute +func (c *EC2) ResetSnapshotAttribute(input *ResetSnapshotAttributeInput) (*ResetSnapshotAttributeOutput, error) { + req, out := c.ResetSnapshotAttributeRequest(input) + return out, req.Send() +} + +// ResetSnapshotAttributeWithContext is the same as ResetSnapshotAttribute with the addition of +// the ability to pass a context and additional request options. +// +// See ResetSnapshotAttribute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ResetSnapshotAttributeWithContext(ctx aws.Context, input *ResetSnapshotAttributeInput, opts ...request.Option) (*ResetSnapshotAttributeOutput, error) { + req, out := c.ResetSnapshotAttributeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opRestoreAddressToClassic = "RestoreAddressToClassic" + +// RestoreAddressToClassicRequest generates a "aws/request.Request" representing the +// client's request for the RestoreAddressToClassic operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See RestoreAddressToClassic for more information on using the RestoreAddressToClassic +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the RestoreAddressToClassicRequest method. +// req, resp := client.RestoreAddressToClassicRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RestoreAddressToClassic +func (c *EC2) RestoreAddressToClassicRequest(input *RestoreAddressToClassicInput) (req *request.Request, output *RestoreAddressToClassicOutput) { + op := &request.Operation{ + Name: opRestoreAddressToClassic, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &RestoreAddressToClassicInput{} + } + + output = &RestoreAddressToClassicOutput{} + req = c.newRequest(op, input, output) + return +} + +// RestoreAddressToClassic API operation for Amazon Elastic Compute Cloud. +// +// Restores an Elastic IP address that was previously moved to the EC2-VPC platform +// back to the EC2-Classic platform. You cannot move an Elastic IP address that +// was originally allocated for use in EC2-VPC. The Elastic IP address must +// not be associated with an instance or network interface. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation RestoreAddressToClassic for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RestoreAddressToClassic +func (c *EC2) RestoreAddressToClassic(input *RestoreAddressToClassicInput) (*RestoreAddressToClassicOutput, error) { + req, out := c.RestoreAddressToClassicRequest(input) + return out, req.Send() +} + +// RestoreAddressToClassicWithContext is the same as RestoreAddressToClassic with the addition of +// the ability to pass a context and additional request options. +// +// See RestoreAddressToClassic for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) RestoreAddressToClassicWithContext(ctx aws.Context, input *RestoreAddressToClassicInput, opts ...request.Option) (*RestoreAddressToClassicOutput, error) { + req, out := c.RestoreAddressToClassicRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opRevokeClientVpnIngress = "RevokeClientVpnIngress" + +// RevokeClientVpnIngressRequest generates a "aws/request.Request" representing the +// client's request for the RevokeClientVpnIngress operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See RevokeClientVpnIngress for more information on using the RevokeClientVpnIngress +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the RevokeClientVpnIngressRequest method. +// req, resp := client.RevokeClientVpnIngressRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RevokeClientVpnIngress +func (c *EC2) RevokeClientVpnIngressRequest(input *RevokeClientVpnIngressInput) (req *request.Request, output *RevokeClientVpnIngressOutput) { + op := &request.Operation{ + Name: opRevokeClientVpnIngress, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &RevokeClientVpnIngressInput{} + } + + output = &RevokeClientVpnIngressOutput{} + req = c.newRequest(op, input, output) + return +} + +// RevokeClientVpnIngress API operation for Amazon Elastic Compute Cloud. +// +// Removes an ingress authorization rule from a Client VPN endpoint. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation RevokeClientVpnIngress for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RevokeClientVpnIngress +func (c *EC2) RevokeClientVpnIngress(input *RevokeClientVpnIngressInput) (*RevokeClientVpnIngressOutput, error) { + req, out := c.RevokeClientVpnIngressRequest(input) + return out, req.Send() +} + +// RevokeClientVpnIngressWithContext is the same as RevokeClientVpnIngress with the addition of +// the ability to pass a context and additional request options. +// +// See RevokeClientVpnIngress for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) RevokeClientVpnIngressWithContext(ctx aws.Context, input *RevokeClientVpnIngressInput, opts ...request.Option) (*RevokeClientVpnIngressOutput, error) { + req, out := c.RevokeClientVpnIngressRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opRevokeSecurityGroupEgress = "RevokeSecurityGroupEgress" + +// RevokeSecurityGroupEgressRequest generates a "aws/request.Request" representing the +// client's request for the RevokeSecurityGroupEgress operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See RevokeSecurityGroupEgress for more information on using the RevokeSecurityGroupEgress +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the RevokeSecurityGroupEgressRequest method. +// req, resp := client.RevokeSecurityGroupEgressRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RevokeSecurityGroupEgress +func (c *EC2) RevokeSecurityGroupEgressRequest(input *RevokeSecurityGroupEgressInput) (req *request.Request, output *RevokeSecurityGroupEgressOutput) { + op := &request.Operation{ + Name: opRevokeSecurityGroupEgress, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &RevokeSecurityGroupEgressInput{} + } + + output = &RevokeSecurityGroupEgressOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// RevokeSecurityGroupEgress API operation for Amazon Elastic Compute Cloud. +// +// [VPC only] Removes the specified egress rules from a security group for EC2-VPC. +// This action doesn't apply to security groups for use in EC2-Classic. To remove +// a rule, the values that you specify (for example, ports) must match the existing +// rule's values exactly. +// +// Each rule consists of the protocol and the IPv4 or IPv6 CIDR range or source +// security group. For the TCP and UDP protocols, you must also specify the +// destination port or range of ports. For the ICMP protocol, you must also +// specify the ICMP type and code. If the security group rule has a description, +// you do not have to specify the description to revoke the rule. +// +// Rule changes are propagated to instances within the security group as quickly +// as possible. However, a small delay might occur. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation RevokeSecurityGroupEgress for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RevokeSecurityGroupEgress +func (c *EC2) RevokeSecurityGroupEgress(input *RevokeSecurityGroupEgressInput) (*RevokeSecurityGroupEgressOutput, error) { + req, out := c.RevokeSecurityGroupEgressRequest(input) + return out, req.Send() +} + +// RevokeSecurityGroupEgressWithContext is the same as RevokeSecurityGroupEgress with the addition of +// the ability to pass a context and additional request options. +// +// See RevokeSecurityGroupEgress for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) RevokeSecurityGroupEgressWithContext(ctx aws.Context, input *RevokeSecurityGroupEgressInput, opts ...request.Option) (*RevokeSecurityGroupEgressOutput, error) { + req, out := c.RevokeSecurityGroupEgressRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opRevokeSecurityGroupIngress = "RevokeSecurityGroupIngress" + +// RevokeSecurityGroupIngressRequest generates a "aws/request.Request" representing the +// client's request for the RevokeSecurityGroupIngress operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See RevokeSecurityGroupIngress for more information on using the RevokeSecurityGroupIngress +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the RevokeSecurityGroupIngressRequest method. +// req, resp := client.RevokeSecurityGroupIngressRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RevokeSecurityGroupIngress +func (c *EC2) RevokeSecurityGroupIngressRequest(input *RevokeSecurityGroupIngressInput) (req *request.Request, output *RevokeSecurityGroupIngressOutput) { + op := &request.Operation{ + Name: opRevokeSecurityGroupIngress, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &RevokeSecurityGroupIngressInput{} + } + + output = &RevokeSecurityGroupIngressOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// RevokeSecurityGroupIngress API operation for Amazon Elastic Compute Cloud. +// +// Removes the specified ingress rules from a security group. To remove a rule, +// the values that you specify (for example, ports) must match the existing +// rule's values exactly. +// +// [EC2-Classic only] If the values you specify do not match the existing rule's +// values, no error is returned. Use DescribeSecurityGroups to verify that the +// rule has been removed. +// +// Each rule consists of the protocol and the CIDR range or source security +// group. For the TCP and UDP protocols, you must also specify the destination +// port or range of ports. For the ICMP protocol, you must also specify the +// ICMP type and code. If the security group rule has a description, you do +// not have to specify the description to revoke the rule. +// +// Rule changes are propagated to instances within the security group as quickly +// as possible. However, a small delay might occur. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation RevokeSecurityGroupIngress for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RevokeSecurityGroupIngress +func (c *EC2) RevokeSecurityGroupIngress(input *RevokeSecurityGroupIngressInput) (*RevokeSecurityGroupIngressOutput, error) { + req, out := c.RevokeSecurityGroupIngressRequest(input) + return out, req.Send() +} + +// RevokeSecurityGroupIngressWithContext is the same as RevokeSecurityGroupIngress with the addition of +// the ability to pass a context and additional request options. +// +// See RevokeSecurityGroupIngress for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) RevokeSecurityGroupIngressWithContext(ctx aws.Context, input *RevokeSecurityGroupIngressInput, opts ...request.Option) (*RevokeSecurityGroupIngressOutput, error) { + req, out := c.RevokeSecurityGroupIngressRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opRunInstances = "RunInstances" + +// RunInstancesRequest generates a "aws/request.Request" representing the +// client's request for the RunInstances operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See RunInstances for more information on using the RunInstances +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the RunInstancesRequest method. +// req, resp := client.RunInstancesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RunInstances +func (c *EC2) RunInstancesRequest(input *RunInstancesInput) (req *request.Request, output *Reservation) { + op := &request.Operation{ + Name: opRunInstances, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &RunInstancesInput{} + } + + output = &Reservation{} + req = c.newRequest(op, input, output) + return +} + +// RunInstances API operation for Amazon Elastic Compute Cloud. +// +// Launches the specified number of instances using an AMI for which you have +// permissions. +// +// You can specify a number of options, or leave the default options. The following +// rules apply: +// +// * [EC2-VPC] If you don't specify a subnet ID, we choose a default subnet +// from your default VPC for you. If you don't have a default VPC, you must +// specify a subnet ID in the request. +// +// * [EC2-Classic] If don't specify an Availability Zone, we choose one for +// you. +// +// * Some instance types must be launched into a VPC. If you do not have +// a default VPC, or if you do not specify a subnet ID, the request fails. +// For more information, see Instance Types Available Only in a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-vpc.html#vpc-only-instance-types). +// +// * [EC2-VPC] All instances have a network interface with a primary private +// IPv4 address. If you don't specify this address, we choose one from the +// IPv4 range of your subnet. +// +// * Not all instance types support IPv6 addresses. For more information, +// see Instance Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html). +// +// * If you don't specify a security group ID, we use the default security +// group. For more information, see Security Groups (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html). +// +// * If any of the AMIs have a product code attached for which the user has +// not subscribed, the request fails. +// +// You can create a launch template (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html), +// which is a resource that contains the parameters to launch an instance. When +// you launch an instance using RunInstances, you can specify the launch template +// instead of specifying the launch parameters. +// +// To ensure faster instance launches, break up large requests into smaller +// batches. For example, create five separate launch requests for 100 instances +// each instead of one launch request for 500 instances. +// +// An instance is ready for you to use when it's in the running state. You can +// check the state of your instance using DescribeInstances. You can tag instances +// and EBS volumes during launch, after launch, or both. For more information, +// see CreateTags and Tagging Your Amazon EC2 Resources (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html). +// +// Linux instances have access to the public key of the key pair at boot. You +// can use this key to provide secure access to the instance. Amazon EC2 public +// images use this feature to provide secure access without passwords. For more +// information, see Key Pairs (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// For troubleshooting, see What To Do If An Instance Immediately Terminates +// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_InstanceStraightToTerminated.html), +// and Troubleshooting Connecting to Your Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation RunInstances for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RunInstances +func (c *EC2) RunInstances(input *RunInstancesInput) (*Reservation, error) { + req, out := c.RunInstancesRequest(input) + return out, req.Send() +} + +// RunInstancesWithContext is the same as RunInstances with the addition of +// the ability to pass a context and additional request options. +// +// See RunInstances for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) RunInstancesWithContext(ctx aws.Context, input *RunInstancesInput, opts ...request.Option) (*Reservation, error) { + req, out := c.RunInstancesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opRunScheduledInstances = "RunScheduledInstances" + +// RunScheduledInstancesRequest generates a "aws/request.Request" representing the +// client's request for the RunScheduledInstances operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See RunScheduledInstances for more information on using the RunScheduledInstances +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the RunScheduledInstancesRequest method. +// req, resp := client.RunScheduledInstancesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RunScheduledInstances +func (c *EC2) RunScheduledInstancesRequest(input *RunScheduledInstancesInput) (req *request.Request, output *RunScheduledInstancesOutput) { + op := &request.Operation{ + Name: opRunScheduledInstances, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &RunScheduledInstancesInput{} + } + + output = &RunScheduledInstancesOutput{} + req = c.newRequest(op, input, output) + return +} + +// RunScheduledInstances API operation for Amazon Elastic Compute Cloud. +// +// Launches the specified Scheduled Instances. +// +// Before you can launch a Scheduled Instance, you must purchase it and obtain +// an identifier using PurchaseScheduledInstances. +// +// You must launch a Scheduled Instance during its scheduled time period. You +// can't stop or reboot a Scheduled Instance, but you can terminate it as needed. +// If you terminate a Scheduled Instance before the current scheduled time period +// ends, you can launch it again after a few minutes. For more information, +// see Scheduled Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-scheduled-instances.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation RunScheduledInstances for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RunScheduledInstances +func (c *EC2) RunScheduledInstances(input *RunScheduledInstancesInput) (*RunScheduledInstancesOutput, error) { + req, out := c.RunScheduledInstancesRequest(input) + return out, req.Send() +} + +// RunScheduledInstancesWithContext is the same as RunScheduledInstances with the addition of +// the ability to pass a context and additional request options. +// +// See RunScheduledInstances for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) RunScheduledInstancesWithContext(ctx aws.Context, input *RunScheduledInstancesInput, opts ...request.Option) (*RunScheduledInstancesOutput, error) { + req, out := c.RunScheduledInstancesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opSearchTransitGatewayRoutes = "SearchTransitGatewayRoutes" + +// SearchTransitGatewayRoutesRequest generates a "aws/request.Request" representing the +// client's request for the SearchTransitGatewayRoutes operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See SearchTransitGatewayRoutes for more information on using the SearchTransitGatewayRoutes +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the SearchTransitGatewayRoutesRequest method. +// req, resp := client.SearchTransitGatewayRoutesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SearchTransitGatewayRoutes +func (c *EC2) SearchTransitGatewayRoutesRequest(input *SearchTransitGatewayRoutesInput) (req *request.Request, output *SearchTransitGatewayRoutesOutput) { + op := &request.Operation{ + Name: opSearchTransitGatewayRoutes, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &SearchTransitGatewayRoutesInput{} + } + + output = &SearchTransitGatewayRoutesOutput{} + req = c.newRequest(op, input, output) + return +} + +// SearchTransitGatewayRoutes API operation for Amazon Elastic Compute Cloud. +// +// Searches for routes in the specified transit gateway route table. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation SearchTransitGatewayRoutes for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SearchTransitGatewayRoutes +func (c *EC2) SearchTransitGatewayRoutes(input *SearchTransitGatewayRoutesInput) (*SearchTransitGatewayRoutesOutput, error) { + req, out := c.SearchTransitGatewayRoutesRequest(input) + return out, req.Send() +} + +// SearchTransitGatewayRoutesWithContext is the same as SearchTransitGatewayRoutes with the addition of +// the ability to pass a context and additional request options. +// +// See SearchTransitGatewayRoutes for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) SearchTransitGatewayRoutesWithContext(ctx aws.Context, input *SearchTransitGatewayRoutesInput, opts ...request.Option) (*SearchTransitGatewayRoutesOutput, error) { + req, out := c.SearchTransitGatewayRoutesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opSendDiagnosticInterrupt = "SendDiagnosticInterrupt" + +// SendDiagnosticInterruptRequest generates a "aws/request.Request" representing the +// client's request for the SendDiagnosticInterrupt operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See SendDiagnosticInterrupt for more information on using the SendDiagnosticInterrupt +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the SendDiagnosticInterruptRequest method. +// req, resp := client.SendDiagnosticInterruptRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SendDiagnosticInterrupt +func (c *EC2) SendDiagnosticInterruptRequest(input *SendDiagnosticInterruptInput) (req *request.Request, output *SendDiagnosticInterruptOutput) { + op := &request.Operation{ + Name: opSendDiagnosticInterrupt, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &SendDiagnosticInterruptInput{} + } + + output = &SendDiagnosticInterruptOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// SendDiagnosticInterrupt API operation for Amazon Elastic Compute Cloud. +// +// Sends a diagnostic interrupt to the specified Amazon EC2 instance to trigger +// a kernel panic (on Linux instances), or a blue screen/stop error (on Windows +// instances). For instances based on Intel and AMD processors, the interrupt +// is received as a non-maskable interrupt (NMI). +// +// In general, the operating system crashes and reboots when a kernel panic +// or stop error is triggered. The operating system can also be configured to +// perform diagnostic tasks, such as generating a memory dump file, loading +// a secondary kernel, or obtaining a call trace. +// +// Before sending a diagnostic interrupt to your instance, ensure that its operating +// system is configured to perform the required diagnostic tasks. +// +// For more information about configuring your operating system to generate +// a crash dump when a kernel panic or stop error occurs, see Send a Diagnostic +// Interrupt (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/diagnostic-interrupt.html) +// (Linux instances) or Send a Diagnostic Interrupt (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/diagnostic-interrupt.html) +// (Windows instances). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation SendDiagnosticInterrupt for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SendDiagnosticInterrupt +func (c *EC2) SendDiagnosticInterrupt(input *SendDiagnosticInterruptInput) (*SendDiagnosticInterruptOutput, error) { + req, out := c.SendDiagnosticInterruptRequest(input) + return out, req.Send() +} + +// SendDiagnosticInterruptWithContext is the same as SendDiagnosticInterrupt with the addition of +// the ability to pass a context and additional request options. +// +// See SendDiagnosticInterrupt for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) SendDiagnosticInterruptWithContext(ctx aws.Context, input *SendDiagnosticInterruptInput, opts ...request.Option) (*SendDiagnosticInterruptOutput, error) { + req, out := c.SendDiagnosticInterruptRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opStartInstances = "StartInstances" + +// StartInstancesRequest generates a "aws/request.Request" representing the +// client's request for the StartInstances operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See StartInstances for more information on using the StartInstances +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the StartInstancesRequest method. +// req, resp := client.StartInstancesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/StartInstances +func (c *EC2) StartInstancesRequest(input *StartInstancesInput) (req *request.Request, output *StartInstancesOutput) { + op := &request.Operation{ + Name: opStartInstances, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &StartInstancesInput{} + } + + output = &StartInstancesOutput{} + req = c.newRequest(op, input, output) + return +} + +// StartInstances API operation for Amazon Elastic Compute Cloud. +// +// Starts an Amazon EBS-backed instance that you've previously stopped. +// +// Instances that use Amazon EBS volumes as their root devices can be quickly +// stopped and started. When an instance is stopped, the compute resources are +// released and you are not billed for instance usage. However, your root partition +// Amazon EBS volume remains and continues to persist your data, and you are +// charged for Amazon EBS volume usage. You can restart your instance at any +// time. Every time you start your Windows instance, Amazon EC2 charges you +// for a full instance hour. If you stop and restart your Windows instance, +// a new instance hour begins and Amazon EC2 charges you for another full instance +// hour even if you are still within the same 60-minute period when it was stopped. +// Every time you start your Linux instance, Amazon EC2 charges a one-minute +// minimum for instance usage, and thereafter charges per second for instance +// usage. +// +// Before stopping an instance, make sure it is in a state from which it can +// be restarted. Stopping an instance does not preserve data stored in RAM. +// +// Performing this operation on an instance that uses an instance store as its +// root device returns an error. +// +// For more information, see Stopping Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation StartInstances for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/StartInstances +func (c *EC2) StartInstances(input *StartInstancesInput) (*StartInstancesOutput, error) { + req, out := c.StartInstancesRequest(input) + return out, req.Send() +} + +// StartInstancesWithContext is the same as StartInstances with the addition of +// the ability to pass a context and additional request options. +// +// See StartInstances for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) StartInstancesWithContext(ctx aws.Context, input *StartInstancesInput, opts ...request.Option) (*StartInstancesOutput, error) { + req, out := c.StartInstancesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opStopInstances = "StopInstances" + +// StopInstancesRequest generates a "aws/request.Request" representing the +// client's request for the StopInstances operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See StopInstances for more information on using the StopInstances +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the StopInstancesRequest method. +// req, resp := client.StopInstancesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/StopInstances +func (c *EC2) StopInstancesRequest(input *StopInstancesInput) (req *request.Request, output *StopInstancesOutput) { + op := &request.Operation{ + Name: opStopInstances, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &StopInstancesInput{} + } + + output = &StopInstancesOutput{} + req = c.newRequest(op, input, output) + return +} + +// StopInstances API operation for Amazon Elastic Compute Cloud. +// +// Stops an Amazon EBS-backed instance. +// +// You can use the Stop action to hibernate an instance if the instance is enabled +// for hibernation (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#enabling-hibernation) +// and it meets the hibernation prerequisites (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites). +// For more information, see Hibernate Your Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// We don't charge usage for a stopped instance, or data transfer fees; however, +// your root partition Amazon EBS volume remains and continues to persist your +// data, and you are charged for Amazon EBS volume usage. Every time you start +// your Windows instance, Amazon EC2 charges you for a full instance hour. If +// you stop and restart your Windows instance, a new instance hour begins and +// Amazon EC2 charges you for another full instance hour even if you are still +// within the same 60-minute period when it was stopped. Every time you start +// your Linux instance, Amazon EC2 charges a one-minute minimum for instance +// usage, and thereafter charges per second for instance usage. +// +// You can't start, stop, or hibernate Spot Instances, and you can't stop or +// hibernate instance store-backed instances. For information about using hibernation +// for Spot Instances, see Hibernating Interrupted Spot Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html#hibernate-spot-instances) +// in the Amazon Elastic Compute Cloud User Guide. +// +// When you stop or hibernate an instance, we shut it down. You can restart +// your instance at any time. Before stopping or hibernating an instance, make +// sure it is in a state from which it can be restarted. Stopping an instance +// does not preserve data stored in RAM, but hibernating an instance does preserve +// data stored in RAM. If an instance cannot hibernate successfully, a normal +// shutdown occurs. +// +// Stopping and hibernating an instance is different to rebooting or terminating +// it. For example, when you stop or hibernate an instance, the root device +// and any other devices attached to the instance persist. When you terminate +// an instance, the root device and any other devices attached during the instance +// launch are automatically deleted. For more information about the differences +// between rebooting, stopping, hibernating, and terminating instances, see +// Instance Lifecycle (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// When you stop an instance, we attempt to shut it down forcibly after a short +// while. If your instance appears stuck in the stopping state after a period +// of time, there may be an issue with the underlying host computer. For more +// information, see Troubleshooting Stopping Your Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesStopping.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation StopInstances for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/StopInstances +func (c *EC2) StopInstances(input *StopInstancesInput) (*StopInstancesOutput, error) { + req, out := c.StopInstancesRequest(input) + return out, req.Send() +} + +// StopInstancesWithContext is the same as StopInstances with the addition of +// the ability to pass a context and additional request options. +// +// See StopInstances for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) StopInstancesWithContext(ctx aws.Context, input *StopInstancesInput, opts ...request.Option) (*StopInstancesOutput, error) { + req, out := c.StopInstancesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opTerminateClientVpnConnections = "TerminateClientVpnConnections" + +// TerminateClientVpnConnectionsRequest generates a "aws/request.Request" representing the +// client's request for the TerminateClientVpnConnections operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See TerminateClientVpnConnections for more information on using the TerminateClientVpnConnections +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the TerminateClientVpnConnectionsRequest method. +// req, resp := client.TerminateClientVpnConnectionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/TerminateClientVpnConnections +func (c *EC2) TerminateClientVpnConnectionsRequest(input *TerminateClientVpnConnectionsInput) (req *request.Request, output *TerminateClientVpnConnectionsOutput) { + op := &request.Operation{ + Name: opTerminateClientVpnConnections, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &TerminateClientVpnConnectionsInput{} + } + + output = &TerminateClientVpnConnectionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// TerminateClientVpnConnections API operation for Amazon Elastic Compute Cloud. +// +// Terminates active Client VPN endpoint connections. This action can be used +// to terminate a specific client connection, or up to five connections established +// by a specific user. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation TerminateClientVpnConnections for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/TerminateClientVpnConnections +func (c *EC2) TerminateClientVpnConnections(input *TerminateClientVpnConnectionsInput) (*TerminateClientVpnConnectionsOutput, error) { + req, out := c.TerminateClientVpnConnectionsRequest(input) + return out, req.Send() +} + +// TerminateClientVpnConnectionsWithContext is the same as TerminateClientVpnConnections with the addition of +// the ability to pass a context and additional request options. +// +// See TerminateClientVpnConnections for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) TerminateClientVpnConnectionsWithContext(ctx aws.Context, input *TerminateClientVpnConnectionsInput, opts ...request.Option) (*TerminateClientVpnConnectionsOutput, error) { + req, out := c.TerminateClientVpnConnectionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opTerminateInstances = "TerminateInstances" + +// TerminateInstancesRequest generates a "aws/request.Request" representing the +// client's request for the TerminateInstances operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See TerminateInstances for more information on using the TerminateInstances +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the TerminateInstancesRequest method. +// req, resp := client.TerminateInstancesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/TerminateInstances +func (c *EC2) TerminateInstancesRequest(input *TerminateInstancesInput) (req *request.Request, output *TerminateInstancesOutput) { + op := &request.Operation{ + Name: opTerminateInstances, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &TerminateInstancesInput{} + } + + output = &TerminateInstancesOutput{} + req = c.newRequest(op, input, output) + return +} + +// TerminateInstances API operation for Amazon Elastic Compute Cloud. +// +// Shuts down the specified instances. This operation is idempotent; if you +// terminate an instance more than once, each call succeeds. +// +// If you specify multiple instances and the request fails (for example, because +// of a single incorrect instance ID), none of the instances are terminated. +// +// Terminated instances remain visible after termination (for approximately +// one hour). +// +// By default, Amazon EC2 deletes all EBS volumes that were attached when the +// instance launched. Volumes attached after instance launch continue running. +// +// You can stop, start, and terminate EBS-backed instances. You can only terminate +// instance store-backed instances. What happens to an instance differs if you +// stop it or terminate it. For example, when you stop an instance, the root +// device and any other devices attached to the instance persist. When you terminate +// an instance, any attached EBS volumes with the DeleteOnTermination block +// device mapping parameter set to true are automatically deleted. For more +// information about the differences between stopping and terminating instances, +// see Instance Lifecycle (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// For more information about troubleshooting, see Troubleshooting Terminating +// Your Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesShuttingDown.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation TerminateInstances for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/TerminateInstances +func (c *EC2) TerminateInstances(input *TerminateInstancesInput) (*TerminateInstancesOutput, error) { + req, out := c.TerminateInstancesRequest(input) + return out, req.Send() +} + +// TerminateInstancesWithContext is the same as TerminateInstances with the addition of +// the ability to pass a context and additional request options. +// +// See TerminateInstances for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) TerminateInstancesWithContext(ctx aws.Context, input *TerminateInstancesInput, opts ...request.Option) (*TerminateInstancesOutput, error) { + req, out := c.TerminateInstancesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opUnassignIpv6Addresses = "UnassignIpv6Addresses" + +// UnassignIpv6AddressesRequest generates a "aws/request.Request" representing the +// client's request for the UnassignIpv6Addresses operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See UnassignIpv6Addresses for more information on using the UnassignIpv6Addresses +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the UnassignIpv6AddressesRequest method. +// req, resp := client.UnassignIpv6AddressesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnassignIpv6Addresses +func (c *EC2) UnassignIpv6AddressesRequest(input *UnassignIpv6AddressesInput) (req *request.Request, output *UnassignIpv6AddressesOutput) { + op := &request.Operation{ + Name: opUnassignIpv6Addresses, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &UnassignIpv6AddressesInput{} + } + + output = &UnassignIpv6AddressesOutput{} + req = c.newRequest(op, input, output) + return +} + +// UnassignIpv6Addresses API operation for Amazon Elastic Compute Cloud. +// +// Unassigns one or more IPv6 addresses from a network interface. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation UnassignIpv6Addresses for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnassignIpv6Addresses +func (c *EC2) UnassignIpv6Addresses(input *UnassignIpv6AddressesInput) (*UnassignIpv6AddressesOutput, error) { + req, out := c.UnassignIpv6AddressesRequest(input) + return out, req.Send() +} + +// UnassignIpv6AddressesWithContext is the same as UnassignIpv6Addresses with the addition of +// the ability to pass a context and additional request options. +// +// See UnassignIpv6Addresses for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) UnassignIpv6AddressesWithContext(ctx aws.Context, input *UnassignIpv6AddressesInput, opts ...request.Option) (*UnassignIpv6AddressesOutput, error) { + req, out := c.UnassignIpv6AddressesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opUnassignPrivateIpAddresses = "UnassignPrivateIpAddresses" + +// UnassignPrivateIpAddressesRequest generates a "aws/request.Request" representing the +// client's request for the UnassignPrivateIpAddresses operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See UnassignPrivateIpAddresses for more information on using the UnassignPrivateIpAddresses +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the UnassignPrivateIpAddressesRequest method. +// req, resp := client.UnassignPrivateIpAddressesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnassignPrivateIpAddresses +func (c *EC2) UnassignPrivateIpAddressesRequest(input *UnassignPrivateIpAddressesInput) (req *request.Request, output *UnassignPrivateIpAddressesOutput) { + op := &request.Operation{ + Name: opUnassignPrivateIpAddresses, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &UnassignPrivateIpAddressesInput{} + } + + output = &UnassignPrivateIpAddressesOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// UnassignPrivateIpAddresses API operation for Amazon Elastic Compute Cloud. +// +// Unassigns one or more secondary private IP addresses from a network interface. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation UnassignPrivateIpAddresses for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnassignPrivateIpAddresses +func (c *EC2) UnassignPrivateIpAddresses(input *UnassignPrivateIpAddressesInput) (*UnassignPrivateIpAddressesOutput, error) { + req, out := c.UnassignPrivateIpAddressesRequest(input) + return out, req.Send() +} + +// UnassignPrivateIpAddressesWithContext is the same as UnassignPrivateIpAddresses with the addition of +// the ability to pass a context and additional request options. +// +// See UnassignPrivateIpAddresses for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) UnassignPrivateIpAddressesWithContext(ctx aws.Context, input *UnassignPrivateIpAddressesInput, opts ...request.Option) (*UnassignPrivateIpAddressesOutput, error) { + req, out := c.UnassignPrivateIpAddressesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opUnmonitorInstances = "UnmonitorInstances" + +// UnmonitorInstancesRequest generates a "aws/request.Request" representing the +// client's request for the UnmonitorInstances operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See UnmonitorInstances for more information on using the UnmonitorInstances +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the UnmonitorInstancesRequest method. +// req, resp := client.UnmonitorInstancesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnmonitorInstances +func (c *EC2) UnmonitorInstancesRequest(input *UnmonitorInstancesInput) (req *request.Request, output *UnmonitorInstancesOutput) { + op := &request.Operation{ + Name: opUnmonitorInstances, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &UnmonitorInstancesInput{} + } + + output = &UnmonitorInstancesOutput{} + req = c.newRequest(op, input, output) + return +} + +// UnmonitorInstances API operation for Amazon Elastic Compute Cloud. +// +// Disables detailed monitoring for a running instance. For more information, +// see Monitoring Your Instances and Volumes (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cloudwatch.html) +// in the Amazon Elastic Compute Cloud User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation UnmonitorInstances for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UnmonitorInstances +func (c *EC2) UnmonitorInstances(input *UnmonitorInstancesInput) (*UnmonitorInstancesOutput, error) { + req, out := c.UnmonitorInstancesRequest(input) + return out, req.Send() +} + +// UnmonitorInstancesWithContext is the same as UnmonitorInstances with the addition of +// the ability to pass a context and additional request options. +// +// See UnmonitorInstances for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) UnmonitorInstancesWithContext(ctx aws.Context, input *UnmonitorInstancesInput, opts ...request.Option) (*UnmonitorInstancesOutput, error) { + req, out := c.UnmonitorInstancesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opUpdateSecurityGroupRuleDescriptionsEgress = "UpdateSecurityGroupRuleDescriptionsEgress" + +// UpdateSecurityGroupRuleDescriptionsEgressRequest generates a "aws/request.Request" representing the +// client's request for the UpdateSecurityGroupRuleDescriptionsEgress operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See UpdateSecurityGroupRuleDescriptionsEgress for more information on using the UpdateSecurityGroupRuleDescriptionsEgress +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the UpdateSecurityGroupRuleDescriptionsEgressRequest method. +// req, resp := client.UpdateSecurityGroupRuleDescriptionsEgressRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UpdateSecurityGroupRuleDescriptionsEgress +func (c *EC2) UpdateSecurityGroupRuleDescriptionsEgressRequest(input *UpdateSecurityGroupRuleDescriptionsEgressInput) (req *request.Request, output *UpdateSecurityGroupRuleDescriptionsEgressOutput) { + op := &request.Operation{ + Name: opUpdateSecurityGroupRuleDescriptionsEgress, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &UpdateSecurityGroupRuleDescriptionsEgressInput{} + } + + output = &UpdateSecurityGroupRuleDescriptionsEgressOutput{} + req = c.newRequest(op, input, output) + return +} + +// UpdateSecurityGroupRuleDescriptionsEgress API operation for Amazon Elastic Compute Cloud. +// +// [VPC only] Updates the description of an egress (outbound) security group +// rule. You can replace an existing description, or add a description to a +// rule that did not have one previously. +// +// You specify the description as part of the IP permissions structure. You +// can remove a description for a security group rule by omitting the description +// parameter in the request. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation UpdateSecurityGroupRuleDescriptionsEgress for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UpdateSecurityGroupRuleDescriptionsEgress +func (c *EC2) UpdateSecurityGroupRuleDescriptionsEgress(input *UpdateSecurityGroupRuleDescriptionsEgressInput) (*UpdateSecurityGroupRuleDescriptionsEgressOutput, error) { + req, out := c.UpdateSecurityGroupRuleDescriptionsEgressRequest(input) + return out, req.Send() +} + +// UpdateSecurityGroupRuleDescriptionsEgressWithContext is the same as UpdateSecurityGroupRuleDescriptionsEgress with the addition of +// the ability to pass a context and additional request options. +// +// See UpdateSecurityGroupRuleDescriptionsEgress for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) UpdateSecurityGroupRuleDescriptionsEgressWithContext(ctx aws.Context, input *UpdateSecurityGroupRuleDescriptionsEgressInput, opts ...request.Option) (*UpdateSecurityGroupRuleDescriptionsEgressOutput, error) { + req, out := c.UpdateSecurityGroupRuleDescriptionsEgressRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opUpdateSecurityGroupRuleDescriptionsIngress = "UpdateSecurityGroupRuleDescriptionsIngress" + +// UpdateSecurityGroupRuleDescriptionsIngressRequest generates a "aws/request.Request" representing the +// client's request for the UpdateSecurityGroupRuleDescriptionsIngress operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See UpdateSecurityGroupRuleDescriptionsIngress for more information on using the UpdateSecurityGroupRuleDescriptionsIngress +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the UpdateSecurityGroupRuleDescriptionsIngressRequest method. +// req, resp := client.UpdateSecurityGroupRuleDescriptionsIngressRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UpdateSecurityGroupRuleDescriptionsIngress +func (c *EC2) UpdateSecurityGroupRuleDescriptionsIngressRequest(input *UpdateSecurityGroupRuleDescriptionsIngressInput) (req *request.Request, output *UpdateSecurityGroupRuleDescriptionsIngressOutput) { + op := &request.Operation{ + Name: opUpdateSecurityGroupRuleDescriptionsIngress, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &UpdateSecurityGroupRuleDescriptionsIngressInput{} + } + + output = &UpdateSecurityGroupRuleDescriptionsIngressOutput{} + req = c.newRequest(op, input, output) + return +} + +// UpdateSecurityGroupRuleDescriptionsIngress API operation for Amazon Elastic Compute Cloud. +// +// Updates the description of an ingress (inbound) security group rule. You +// can replace an existing description, or add a description to a rule that +// did not have one previously. +// +// You specify the description as part of the IP permissions structure. You +// can remove a description for a security group rule by omitting the description +// parameter in the request. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation UpdateSecurityGroupRuleDescriptionsIngress for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/UpdateSecurityGroupRuleDescriptionsIngress +func (c *EC2) UpdateSecurityGroupRuleDescriptionsIngress(input *UpdateSecurityGroupRuleDescriptionsIngressInput) (*UpdateSecurityGroupRuleDescriptionsIngressOutput, error) { + req, out := c.UpdateSecurityGroupRuleDescriptionsIngressRequest(input) + return out, req.Send() +} + +// UpdateSecurityGroupRuleDescriptionsIngressWithContext is the same as UpdateSecurityGroupRuleDescriptionsIngress with the addition of +// the ability to pass a context and additional request options. +// +// See UpdateSecurityGroupRuleDescriptionsIngress for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) UpdateSecurityGroupRuleDescriptionsIngressWithContext(ctx aws.Context, input *UpdateSecurityGroupRuleDescriptionsIngressInput, opts ...request.Option) (*UpdateSecurityGroupRuleDescriptionsIngressOutput, error) { + req, out := c.UpdateSecurityGroupRuleDescriptionsIngressRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opWithdrawByoipCidr = "WithdrawByoipCidr" + +// WithdrawByoipCidrRequest generates a "aws/request.Request" representing the +// client's request for the WithdrawByoipCidr operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See WithdrawByoipCidr for more information on using the WithdrawByoipCidr +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the WithdrawByoipCidrRequest method. +// req, resp := client.WithdrawByoipCidrRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/WithdrawByoipCidr +func (c *EC2) WithdrawByoipCidrRequest(input *WithdrawByoipCidrInput) (req *request.Request, output *WithdrawByoipCidrOutput) { + op := &request.Operation{ + Name: opWithdrawByoipCidr, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &WithdrawByoipCidrInput{} + } + + output = &WithdrawByoipCidrOutput{} + req = c.newRequest(op, input, output) + return +} + +// WithdrawByoipCidr API operation for Amazon Elastic Compute Cloud. +// +// Stops advertising an IPv4 address range that is provisioned as an address +// pool. +// +// You can perform this operation at most once every 10 seconds, even if you +// specify different address ranges each time. +// +// It can take a few minutes before traffic to the specified addresses stops +// routing to AWS because of BGP propagation delays. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation WithdrawByoipCidr for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/WithdrawByoipCidr +func (c *EC2) WithdrawByoipCidr(input *WithdrawByoipCidrInput) (*WithdrawByoipCidrOutput, error) { + req, out := c.WithdrawByoipCidrRequest(input) + return out, req.Send() +} + +// WithdrawByoipCidrWithContext is the same as WithdrawByoipCidr with the addition of +// the ability to pass a context and additional request options. +// +// See WithdrawByoipCidr for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WithdrawByoipCidrWithContext(ctx aws.Context, input *WithdrawByoipCidrInput, opts ...request.Option) (*WithdrawByoipCidrOutput, error) { + req, out := c.WithdrawByoipCidrRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// Contains the parameters for accepting the quote. +type AcceptReservedInstancesExchangeQuoteInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The IDs of the Convertible Reserved Instances to exchange for another Convertible + // Reserved Instance of the same or higher value. + // + // ReservedInstanceIds is a required field + ReservedInstanceIds []*string `locationName:"ReservedInstanceId" locationNameList:"ReservedInstanceId" type:"list" required:"true"` + + // The configuration of the target Convertible Reserved Instance to exchange + // for your current Convertible Reserved Instances. + TargetConfigurations []*TargetConfigurationRequest `locationName:"TargetConfiguration" locationNameList:"TargetConfigurationRequest" type:"list"` +} + +// String returns the string representation +func (s AcceptReservedInstancesExchangeQuoteInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AcceptReservedInstancesExchangeQuoteInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AcceptReservedInstancesExchangeQuoteInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AcceptReservedInstancesExchangeQuoteInput"} + if s.ReservedInstanceIds == nil { + invalidParams.Add(request.NewErrParamRequired("ReservedInstanceIds")) + } + if s.TargetConfigurations != nil { + for i, v := range s.TargetConfigurations { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TargetConfigurations", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *AcceptReservedInstancesExchangeQuoteInput) SetDryRun(v bool) *AcceptReservedInstancesExchangeQuoteInput { + s.DryRun = &v + return s +} + +// SetReservedInstanceIds sets the ReservedInstanceIds field's value. +func (s *AcceptReservedInstancesExchangeQuoteInput) SetReservedInstanceIds(v []*string) *AcceptReservedInstancesExchangeQuoteInput { + s.ReservedInstanceIds = v + return s +} + +// SetTargetConfigurations sets the TargetConfigurations field's value. +func (s *AcceptReservedInstancesExchangeQuoteInput) SetTargetConfigurations(v []*TargetConfigurationRequest) *AcceptReservedInstancesExchangeQuoteInput { + s.TargetConfigurations = v + return s +} + +// The result of the exchange and whether it was successful. +type AcceptReservedInstancesExchangeQuoteOutput struct { + _ struct{} `type:"structure"` + + // The ID of the successful exchange. + ExchangeId *string `locationName:"exchangeId" type:"string"` +} + +// String returns the string representation +func (s AcceptReservedInstancesExchangeQuoteOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AcceptReservedInstancesExchangeQuoteOutput) GoString() string { + return s.String() +} + +// SetExchangeId sets the ExchangeId field's value. +func (s *AcceptReservedInstancesExchangeQuoteOutput) SetExchangeId(v string) *AcceptReservedInstancesExchangeQuoteOutput { + s.ExchangeId = &v + return s +} + +type AcceptTransitGatewayVpcAttachmentInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the attachment. + // + // TransitGatewayAttachmentId is a required field + TransitGatewayAttachmentId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s AcceptTransitGatewayVpcAttachmentInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AcceptTransitGatewayVpcAttachmentInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AcceptTransitGatewayVpcAttachmentInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AcceptTransitGatewayVpcAttachmentInput"} + if s.TransitGatewayAttachmentId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayAttachmentId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *AcceptTransitGatewayVpcAttachmentInput) SetDryRun(v bool) *AcceptTransitGatewayVpcAttachmentInput { + s.DryRun = &v + return s +} + +// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value. +func (s *AcceptTransitGatewayVpcAttachmentInput) SetTransitGatewayAttachmentId(v string) *AcceptTransitGatewayVpcAttachmentInput { + s.TransitGatewayAttachmentId = &v + return s +} + +type AcceptTransitGatewayVpcAttachmentOutput struct { + _ struct{} `type:"structure"` + + // The VPC attachment. + TransitGatewayVpcAttachment *TransitGatewayVpcAttachment `locationName:"transitGatewayVpcAttachment" type:"structure"` +} + +// String returns the string representation +func (s AcceptTransitGatewayVpcAttachmentOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AcceptTransitGatewayVpcAttachmentOutput) GoString() string { + return s.String() +} + +// SetTransitGatewayVpcAttachment sets the TransitGatewayVpcAttachment field's value. +func (s *AcceptTransitGatewayVpcAttachmentOutput) SetTransitGatewayVpcAttachment(v *TransitGatewayVpcAttachment) *AcceptTransitGatewayVpcAttachmentOutput { + s.TransitGatewayVpcAttachment = v + return s +} + +type AcceptVpcEndpointConnectionsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the endpoint service. + // + // ServiceId is a required field + ServiceId *string `type:"string" required:"true"` + + // The IDs of one or more interface VPC endpoints. + // + // VpcEndpointIds is a required field + VpcEndpointIds []*string `locationName:"VpcEndpointId" locationNameList:"item" type:"list" required:"true"` +} + +// String returns the string representation +func (s AcceptVpcEndpointConnectionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AcceptVpcEndpointConnectionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AcceptVpcEndpointConnectionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AcceptVpcEndpointConnectionsInput"} + if s.ServiceId == nil { + invalidParams.Add(request.NewErrParamRequired("ServiceId")) + } + if s.VpcEndpointIds == nil { + invalidParams.Add(request.NewErrParamRequired("VpcEndpointIds")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *AcceptVpcEndpointConnectionsInput) SetDryRun(v bool) *AcceptVpcEndpointConnectionsInput { + s.DryRun = &v + return s +} + +// SetServiceId sets the ServiceId field's value. +func (s *AcceptVpcEndpointConnectionsInput) SetServiceId(v string) *AcceptVpcEndpointConnectionsInput { + s.ServiceId = &v + return s +} + +// SetVpcEndpointIds sets the VpcEndpointIds field's value. +func (s *AcceptVpcEndpointConnectionsInput) SetVpcEndpointIds(v []*string) *AcceptVpcEndpointConnectionsInput { + s.VpcEndpointIds = v + return s +} + +type AcceptVpcEndpointConnectionsOutput struct { + _ struct{} `type:"structure"` + + // Information about the interface endpoints that were not accepted, if applicable. + Unsuccessful []*UnsuccessfulItem `locationName:"unsuccessful" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s AcceptVpcEndpointConnectionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AcceptVpcEndpointConnectionsOutput) GoString() string { + return s.String() +} + +// SetUnsuccessful sets the Unsuccessful field's value. +func (s *AcceptVpcEndpointConnectionsOutput) SetUnsuccessful(v []*UnsuccessfulItem) *AcceptVpcEndpointConnectionsOutput { + s.Unsuccessful = v + return s +} + +type AcceptVpcPeeringConnectionInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the VPC peering connection. You must specify this parameter in + // the request. + VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string"` +} + +// String returns the string representation +func (s AcceptVpcPeeringConnectionInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AcceptVpcPeeringConnectionInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *AcceptVpcPeeringConnectionInput) SetDryRun(v bool) *AcceptVpcPeeringConnectionInput { + s.DryRun = &v + return s +} + +// SetVpcPeeringConnectionId sets the VpcPeeringConnectionId field's value. +func (s *AcceptVpcPeeringConnectionInput) SetVpcPeeringConnectionId(v string) *AcceptVpcPeeringConnectionInput { + s.VpcPeeringConnectionId = &v + return s +} + +type AcceptVpcPeeringConnectionOutput struct { + _ struct{} `type:"structure"` + + // Information about the VPC peering connection. + VpcPeeringConnection *VpcPeeringConnection `locationName:"vpcPeeringConnection" type:"structure"` +} + +// String returns the string representation +func (s AcceptVpcPeeringConnectionOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AcceptVpcPeeringConnectionOutput) GoString() string { + return s.String() +} + +// SetVpcPeeringConnection sets the VpcPeeringConnection field's value. +func (s *AcceptVpcPeeringConnectionOutput) SetVpcPeeringConnection(v *VpcPeeringConnection) *AcceptVpcPeeringConnectionOutput { + s.VpcPeeringConnection = v + return s +} + +// Describes an account attribute. +type AccountAttribute struct { + _ struct{} `type:"structure"` + + // The name of the account attribute. + AttributeName *string `locationName:"attributeName" type:"string"` + + // The values for the account attribute. + AttributeValues []*AccountAttributeValue `locationName:"attributeValueSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s AccountAttribute) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AccountAttribute) GoString() string { + return s.String() +} + +// SetAttributeName sets the AttributeName field's value. +func (s *AccountAttribute) SetAttributeName(v string) *AccountAttribute { + s.AttributeName = &v + return s +} + +// SetAttributeValues sets the AttributeValues field's value. +func (s *AccountAttribute) SetAttributeValues(v []*AccountAttributeValue) *AccountAttribute { + s.AttributeValues = v + return s +} + +// Describes a value of an account attribute. +type AccountAttributeValue struct { + _ struct{} `type:"structure"` + + // The value of the attribute. + AttributeValue *string `locationName:"attributeValue" type:"string"` +} + +// String returns the string representation +func (s AccountAttributeValue) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AccountAttributeValue) GoString() string { + return s.String() +} + +// SetAttributeValue sets the AttributeValue field's value. +func (s *AccountAttributeValue) SetAttributeValue(v string) *AccountAttributeValue { + s.AttributeValue = &v + return s +} + +// Describes a running instance in a Spot Fleet. +type ActiveInstance struct { + _ struct{} `type:"structure"` + + // The health status of the instance. If the status of either the instance status + // check or the system status check is impaired, the health status of the instance + // is unhealthy. Otherwise, the health status is healthy. + InstanceHealth *string `locationName:"instanceHealth" type:"string" enum:"InstanceHealthStatus"` + + // The ID of the instance. + InstanceId *string `locationName:"instanceId" type:"string"` + + // The instance type. + InstanceType *string `locationName:"instanceType" type:"string"` + + // The ID of the Spot Instance request. + SpotInstanceRequestId *string `locationName:"spotInstanceRequestId" type:"string"` +} + +// String returns the string representation +func (s ActiveInstance) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ActiveInstance) GoString() string { + return s.String() +} + +// SetInstanceHealth sets the InstanceHealth field's value. +func (s *ActiveInstance) SetInstanceHealth(v string) *ActiveInstance { + s.InstanceHealth = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *ActiveInstance) SetInstanceId(v string) *ActiveInstance { + s.InstanceId = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *ActiveInstance) SetInstanceType(v string) *ActiveInstance { + s.InstanceType = &v + return s +} + +// SetSpotInstanceRequestId sets the SpotInstanceRequestId field's value. +func (s *ActiveInstance) SetSpotInstanceRequestId(v string) *ActiveInstance { + s.SpotInstanceRequestId = &v + return s +} + +// Describes an Elastic IP address. +type Address struct { + _ struct{} `type:"structure"` + + // The ID representing the allocation of the address for use with EC2-VPC. + AllocationId *string `locationName:"allocationId" type:"string"` + + // The ID representing the association of the address with an instance in a + // VPC. + AssociationId *string `locationName:"associationId" type:"string"` + + // Indicates whether this Elastic IP address is for use with instances in EC2-Classic + // (standard) or instances in a VPC (vpc). + Domain *string `locationName:"domain" type:"string" enum:"DomainType"` + + // The ID of the instance that the address is associated with (if any). + InstanceId *string `locationName:"instanceId" type:"string"` + + // The ID of the network interface. + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` + + // The ID of the AWS account that owns the network interface. + NetworkInterfaceOwnerId *string `locationName:"networkInterfaceOwnerId" type:"string"` + + // The private IP address associated with the Elastic IP address. + PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` + + // The Elastic IP address. + PublicIp *string `locationName:"publicIp" type:"string"` + + // The ID of an address pool. + PublicIpv4Pool *string `locationName:"publicIpv4Pool" type:"string"` + + // Any tags assigned to the Elastic IP address. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s Address) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Address) GoString() string { + return s.String() +} + +// SetAllocationId sets the AllocationId field's value. +func (s *Address) SetAllocationId(v string) *Address { + s.AllocationId = &v + return s +} + +// SetAssociationId sets the AssociationId field's value. +func (s *Address) SetAssociationId(v string) *Address { + s.AssociationId = &v + return s +} + +// SetDomain sets the Domain field's value. +func (s *Address) SetDomain(v string) *Address { + s.Domain = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *Address) SetInstanceId(v string) *Address { + s.InstanceId = &v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *Address) SetNetworkInterfaceId(v string) *Address { + s.NetworkInterfaceId = &v + return s +} + +// SetNetworkInterfaceOwnerId sets the NetworkInterfaceOwnerId field's value. +func (s *Address) SetNetworkInterfaceOwnerId(v string) *Address { + s.NetworkInterfaceOwnerId = &v + return s +} + +// SetPrivateIpAddress sets the PrivateIpAddress field's value. +func (s *Address) SetPrivateIpAddress(v string) *Address { + s.PrivateIpAddress = &v + return s +} + +// SetPublicIp sets the PublicIp field's value. +func (s *Address) SetPublicIp(v string) *Address { + s.PublicIp = &v + return s +} + +// SetPublicIpv4Pool sets the PublicIpv4Pool field's value. +func (s *Address) SetPublicIpv4Pool(v string) *Address { + s.PublicIpv4Pool = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *Address) SetTags(v []*Tag) *Address { + s.Tags = v + return s +} + +type AdvertiseByoipCidrInput struct { + _ struct{} `type:"structure"` + + // The IPv4 address range, in CIDR notation. This must be the exact range that + // you provisioned. You can't advertise only a portion of the provisioned range. + // + // Cidr is a required field + Cidr *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s AdvertiseByoipCidrInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AdvertiseByoipCidrInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AdvertiseByoipCidrInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AdvertiseByoipCidrInput"} + if s.Cidr == nil { + invalidParams.Add(request.NewErrParamRequired("Cidr")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCidr sets the Cidr field's value. +func (s *AdvertiseByoipCidrInput) SetCidr(v string) *AdvertiseByoipCidrInput { + s.Cidr = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *AdvertiseByoipCidrInput) SetDryRun(v bool) *AdvertiseByoipCidrInput { + s.DryRun = &v + return s +} + +type AdvertiseByoipCidrOutput struct { + _ struct{} `type:"structure"` + + // Information about the address range. + ByoipCidr *ByoipCidr `locationName:"byoipCidr" type:"structure"` +} + +// String returns the string representation +func (s AdvertiseByoipCidrOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AdvertiseByoipCidrOutput) GoString() string { + return s.String() +} + +// SetByoipCidr sets the ByoipCidr field's value. +func (s *AdvertiseByoipCidrOutput) SetByoipCidr(v *ByoipCidr) *AdvertiseByoipCidrOutput { + s.ByoipCidr = v + return s +} + +type AllocateAddressInput struct { + _ struct{} `type:"structure"` + + // [EC2-VPC] The Elastic IP address to recover or an IPv4 address from an address + // pool. + Address *string `type:"string"` + + // Set to vpc to allocate the address for use with instances in a VPC. + // + // Default: The address is for use with instances in EC2-Classic. + Domain *string `type:"string" enum:"DomainType"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of an address pool that you own. Use this parameter to let Amazon + // EC2 select an address from the address pool. To specify a specific address + // from the address pool, use the Address parameter instead. + PublicIpv4Pool *string `type:"string"` +} + +// String returns the string representation +func (s AllocateAddressInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AllocateAddressInput) GoString() string { + return s.String() +} + +// SetAddress sets the Address field's value. +func (s *AllocateAddressInput) SetAddress(v string) *AllocateAddressInput { + s.Address = &v + return s +} + +// SetDomain sets the Domain field's value. +func (s *AllocateAddressInput) SetDomain(v string) *AllocateAddressInput { + s.Domain = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *AllocateAddressInput) SetDryRun(v bool) *AllocateAddressInput { + s.DryRun = &v + return s +} + +// SetPublicIpv4Pool sets the PublicIpv4Pool field's value. +func (s *AllocateAddressInput) SetPublicIpv4Pool(v string) *AllocateAddressInput { + s.PublicIpv4Pool = &v + return s +} + +type AllocateAddressOutput struct { + _ struct{} `type:"structure"` + + // [EC2-VPC] The ID that AWS assigns to represent the allocation of the Elastic + // IP address for use with instances in a VPC. + AllocationId *string `locationName:"allocationId" type:"string"` + + // Indicates whether this Elastic IP address is for use with instances in EC2-Classic + // (standard) or instances in a VPC (vpc). + Domain *string `locationName:"domain" type:"string" enum:"DomainType"` + + // The Elastic IP address. + PublicIp *string `locationName:"publicIp" type:"string"` + + // The ID of an address pool. + PublicIpv4Pool *string `locationName:"publicIpv4Pool" type:"string"` +} + +// String returns the string representation +func (s AllocateAddressOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AllocateAddressOutput) GoString() string { + return s.String() +} + +// SetAllocationId sets the AllocationId field's value. +func (s *AllocateAddressOutput) SetAllocationId(v string) *AllocateAddressOutput { + s.AllocationId = &v + return s +} + +// SetDomain sets the Domain field's value. +func (s *AllocateAddressOutput) SetDomain(v string) *AllocateAddressOutput { + s.Domain = &v + return s +} + +// SetPublicIp sets the PublicIp field's value. +func (s *AllocateAddressOutput) SetPublicIp(v string) *AllocateAddressOutput { + s.PublicIp = &v + return s +} + +// SetPublicIpv4Pool sets the PublicIpv4Pool field's value. +func (s *AllocateAddressOutput) SetPublicIpv4Pool(v string) *AllocateAddressOutput { + s.PublicIpv4Pool = &v + return s +} + +type AllocateHostsInput struct { + _ struct{} `type:"structure"` + + // Indicates whether the host accepts any untargeted instance launches that + // match its instance type configuration, or if it only accepts Host tenancy + // instance launches that specify its unique host ID. For more information, + // see Understanding Instance Placement and Host Affinity (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/how-dedicated-hosts-work.html#dedicated-hosts-understanding) + // in the Amazon EC2 User Guide for Linux Instances. + // + // Default: on + AutoPlacement *string `locationName:"autoPlacement" type:"string" enum:"AutoPlacement"` + + // The Availability Zone in which to allocate the Dedicated Host. + // + // AvailabilityZone is a required field + AvailabilityZone *string `locationName:"availabilityZone" type:"string" required:"true"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `locationName:"clientToken" type:"string"` + + // Indicates whether to enable or disable host recovery for the Dedicated Host. + // Host recovery is disabled by default. For more information, see Host Recovery + // (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-hosts-recovery.html) + // in the Amazon Elastic Compute Cloud User Guide. + // + // Default: off + HostRecovery *string `type:"string" enum:"HostRecovery"` + + // Specifies the instance type for which to configure your Dedicated Hosts. + // When you specify the instance type, that is the only instance type that you + // can launch onto that host. + // + // InstanceType is a required field + InstanceType *string `locationName:"instanceType" type:"string" required:"true"` + + // The number of Dedicated Hosts to allocate to your account with these parameters. + // + // Quantity is a required field + Quantity *int64 `locationName:"quantity" type:"integer" required:"true"` + + // The tags to apply to the Dedicated Host during creation. + TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s AllocateHostsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AllocateHostsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AllocateHostsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AllocateHostsInput"} + if s.AvailabilityZone == nil { + invalidParams.Add(request.NewErrParamRequired("AvailabilityZone")) + } + if s.InstanceType == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceType")) + } + if s.Quantity == nil { + invalidParams.Add(request.NewErrParamRequired("Quantity")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAutoPlacement sets the AutoPlacement field's value. +func (s *AllocateHostsInput) SetAutoPlacement(v string) *AllocateHostsInput { + s.AutoPlacement = &v + return s +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *AllocateHostsInput) SetAvailabilityZone(v string) *AllocateHostsInput { + s.AvailabilityZone = &v + return s +} + +// SetClientToken sets the ClientToken field's value. +func (s *AllocateHostsInput) SetClientToken(v string) *AllocateHostsInput { + s.ClientToken = &v + return s +} + +// SetHostRecovery sets the HostRecovery field's value. +func (s *AllocateHostsInput) SetHostRecovery(v string) *AllocateHostsInput { + s.HostRecovery = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *AllocateHostsInput) SetInstanceType(v string) *AllocateHostsInput { + s.InstanceType = &v + return s +} + +// SetQuantity sets the Quantity field's value. +func (s *AllocateHostsInput) SetQuantity(v int64) *AllocateHostsInput { + s.Quantity = &v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *AllocateHostsInput) SetTagSpecifications(v []*TagSpecification) *AllocateHostsInput { + s.TagSpecifications = v + return s +} + +// Contains the output of AllocateHosts. +type AllocateHostsOutput struct { + _ struct{} `type:"structure"` + + // The ID of the allocated Dedicated Host. This is used to launch an instance + // onto a specific host. + HostIds []*string `locationName:"hostIdSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s AllocateHostsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AllocateHostsOutput) GoString() string { + return s.String() +} + +// SetHostIds sets the HostIds field's value. +func (s *AllocateHostsOutput) SetHostIds(v []*string) *AllocateHostsOutput { + s.HostIds = v + return s +} + +// Describes a principal. +type AllowedPrincipal struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the principal. + Principal *string `locationName:"principal" type:"string"` + + // The type of principal. + PrincipalType *string `locationName:"principalType" type:"string" enum:"PrincipalType"` +} + +// String returns the string representation +func (s AllowedPrincipal) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AllowedPrincipal) GoString() string { + return s.String() +} + +// SetPrincipal sets the Principal field's value. +func (s *AllowedPrincipal) SetPrincipal(v string) *AllowedPrincipal { + s.Principal = &v + return s +} + +// SetPrincipalType sets the PrincipalType field's value. +func (s *AllowedPrincipal) SetPrincipalType(v string) *AllowedPrincipal { + s.PrincipalType = &v + return s +} + +type ApplySecurityGroupsToClientVpnTargetNetworkInput struct { + _ struct{} `type:"structure"` + + // The ID of the Client VPN endpoint. + // + // ClientVpnEndpointId is a required field + ClientVpnEndpointId *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The IDs of the security groups to apply to the associated target network. + // Up to 5 security groups can be applied to an associated target network. + // + // SecurityGroupIds is a required field + SecurityGroupIds []*string `locationName:"SecurityGroupId" locationNameList:"item" type:"list" required:"true"` + + // The ID of the VPC in which the associated target network is located. + // + // VpcId is a required field + VpcId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s ApplySecurityGroupsToClientVpnTargetNetworkInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ApplySecurityGroupsToClientVpnTargetNetworkInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ApplySecurityGroupsToClientVpnTargetNetworkInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ApplySecurityGroupsToClientVpnTargetNetworkInput"} + if s.ClientVpnEndpointId == nil { + invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId")) + } + if s.SecurityGroupIds == nil { + invalidParams.Add(request.NewErrParamRequired("SecurityGroupIds")) + } + if s.VpcId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value. +func (s *ApplySecurityGroupsToClientVpnTargetNetworkInput) SetClientVpnEndpointId(v string) *ApplySecurityGroupsToClientVpnTargetNetworkInput { + s.ClientVpnEndpointId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ApplySecurityGroupsToClientVpnTargetNetworkInput) SetDryRun(v bool) *ApplySecurityGroupsToClientVpnTargetNetworkInput { + s.DryRun = &v + return s +} + +// SetSecurityGroupIds sets the SecurityGroupIds field's value. +func (s *ApplySecurityGroupsToClientVpnTargetNetworkInput) SetSecurityGroupIds(v []*string) *ApplySecurityGroupsToClientVpnTargetNetworkInput { + s.SecurityGroupIds = v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *ApplySecurityGroupsToClientVpnTargetNetworkInput) SetVpcId(v string) *ApplySecurityGroupsToClientVpnTargetNetworkInput { + s.VpcId = &v + return s +} + +type ApplySecurityGroupsToClientVpnTargetNetworkOutput struct { + _ struct{} `type:"structure"` + + // The IDs of the applied security groups. + SecurityGroupIds []*string `locationName:"securityGroupIds" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s ApplySecurityGroupsToClientVpnTargetNetworkOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ApplySecurityGroupsToClientVpnTargetNetworkOutput) GoString() string { + return s.String() +} + +// SetSecurityGroupIds sets the SecurityGroupIds field's value. +func (s *ApplySecurityGroupsToClientVpnTargetNetworkOutput) SetSecurityGroupIds(v []*string) *ApplySecurityGroupsToClientVpnTargetNetworkOutput { + s.SecurityGroupIds = v + return s +} + +type AssignIpv6AddressesInput struct { + _ struct{} `type:"structure"` + + // The number of IPv6 addresses to assign to the network interface. Amazon EC2 + // automatically selects the IPv6 addresses from the subnet range. You can't + // use this option if specifying specific IPv6 addresses. + Ipv6AddressCount *int64 `locationName:"ipv6AddressCount" type:"integer"` + + // One or more specific IPv6 addresses to be assigned to the network interface. + // You can't use this option if you're specifying a number of IPv6 addresses. + Ipv6Addresses []*string `locationName:"ipv6Addresses" locationNameList:"item" type:"list"` + + // The ID of the network interface. + // + // NetworkInterfaceId is a required field + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string" required:"true"` +} + +// String returns the string representation +func (s AssignIpv6AddressesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssignIpv6AddressesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AssignIpv6AddressesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AssignIpv6AddressesInput"} + if s.NetworkInterfaceId == nil { + invalidParams.Add(request.NewErrParamRequired("NetworkInterfaceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetIpv6AddressCount sets the Ipv6AddressCount field's value. +func (s *AssignIpv6AddressesInput) SetIpv6AddressCount(v int64) *AssignIpv6AddressesInput { + s.Ipv6AddressCount = &v + return s +} + +// SetIpv6Addresses sets the Ipv6Addresses field's value. +func (s *AssignIpv6AddressesInput) SetIpv6Addresses(v []*string) *AssignIpv6AddressesInput { + s.Ipv6Addresses = v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *AssignIpv6AddressesInput) SetNetworkInterfaceId(v string) *AssignIpv6AddressesInput { + s.NetworkInterfaceId = &v + return s +} + +type AssignIpv6AddressesOutput struct { + _ struct{} `type:"structure"` + + // The IPv6 addresses assigned to the network interface. + AssignedIpv6Addresses []*string `locationName:"assignedIpv6Addresses" locationNameList:"item" type:"list"` + + // The ID of the network interface. + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` +} + +// String returns the string representation +func (s AssignIpv6AddressesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssignIpv6AddressesOutput) GoString() string { + return s.String() +} + +// SetAssignedIpv6Addresses sets the AssignedIpv6Addresses field's value. +func (s *AssignIpv6AddressesOutput) SetAssignedIpv6Addresses(v []*string) *AssignIpv6AddressesOutput { + s.AssignedIpv6Addresses = v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *AssignIpv6AddressesOutput) SetNetworkInterfaceId(v string) *AssignIpv6AddressesOutput { + s.NetworkInterfaceId = &v + return s +} + +// Contains the parameters for AssignPrivateIpAddresses. +type AssignPrivateIpAddressesInput struct { + _ struct{} `type:"structure"` + + // Indicates whether to allow an IP address that is already assigned to another + // network interface or instance to be reassigned to the specified network interface. + AllowReassignment *bool `locationName:"allowReassignment" type:"boolean"` + + // The ID of the network interface. + // + // NetworkInterfaceId is a required field + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string" required:"true"` + + // One or more IP addresses to be assigned as a secondary private IP address + // to the network interface. You can't specify this parameter when also specifying + // a number of secondary IP addresses. + // + // If you don't specify an IP address, Amazon EC2 automatically selects an IP + // address within the subnet range. + PrivateIpAddresses []*string `locationName:"privateIpAddress" locationNameList:"PrivateIpAddress" type:"list"` + + // The number of secondary IP addresses to assign to the network interface. + // You can't specify this parameter when also specifying private IP addresses. + SecondaryPrivateIpAddressCount *int64 `locationName:"secondaryPrivateIpAddressCount" type:"integer"` +} + +// String returns the string representation +func (s AssignPrivateIpAddressesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssignPrivateIpAddressesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AssignPrivateIpAddressesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AssignPrivateIpAddressesInput"} + if s.NetworkInterfaceId == nil { + invalidParams.Add(request.NewErrParamRequired("NetworkInterfaceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAllowReassignment sets the AllowReassignment field's value. +func (s *AssignPrivateIpAddressesInput) SetAllowReassignment(v bool) *AssignPrivateIpAddressesInput { + s.AllowReassignment = &v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *AssignPrivateIpAddressesInput) SetNetworkInterfaceId(v string) *AssignPrivateIpAddressesInput { + s.NetworkInterfaceId = &v + return s +} + +// SetPrivateIpAddresses sets the PrivateIpAddresses field's value. +func (s *AssignPrivateIpAddressesInput) SetPrivateIpAddresses(v []*string) *AssignPrivateIpAddressesInput { + s.PrivateIpAddresses = v + return s +} + +// SetSecondaryPrivateIpAddressCount sets the SecondaryPrivateIpAddressCount field's value. +func (s *AssignPrivateIpAddressesInput) SetSecondaryPrivateIpAddressCount(v int64) *AssignPrivateIpAddressesInput { + s.SecondaryPrivateIpAddressCount = &v + return s +} + +type AssignPrivateIpAddressesOutput struct { + _ struct{} `type:"structure"` + + // The private IP addresses assigned to the network interface. + AssignedPrivateIpAddresses []*AssignedPrivateIpAddress `locationName:"assignedPrivateIpAddressesSet" locationNameList:"item" type:"list"` + + // The ID of the network interface. + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` +} + +// String returns the string representation +func (s AssignPrivateIpAddressesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssignPrivateIpAddressesOutput) GoString() string { + return s.String() +} + +// SetAssignedPrivateIpAddresses sets the AssignedPrivateIpAddresses field's value. +func (s *AssignPrivateIpAddressesOutput) SetAssignedPrivateIpAddresses(v []*AssignedPrivateIpAddress) *AssignPrivateIpAddressesOutput { + s.AssignedPrivateIpAddresses = v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *AssignPrivateIpAddressesOutput) SetNetworkInterfaceId(v string) *AssignPrivateIpAddressesOutput { + s.NetworkInterfaceId = &v + return s +} + +// Describes the private IP addresses assigned to a network interface. +type AssignedPrivateIpAddress struct { + _ struct{} `type:"structure"` + + // The private IP address assigned to the network interface. + PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` +} + +// String returns the string representation +func (s AssignedPrivateIpAddress) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssignedPrivateIpAddress) GoString() string { + return s.String() +} + +// SetPrivateIpAddress sets the PrivateIpAddress field's value. +func (s *AssignedPrivateIpAddress) SetPrivateIpAddress(v string) *AssignedPrivateIpAddress { + s.PrivateIpAddress = &v + return s +} + +type AssociateAddressInput struct { + _ struct{} `type:"structure"` + + // [EC2-VPC] The allocation ID. This is required for EC2-VPC. + AllocationId *string `type:"string"` + + // [EC2-VPC] For a VPC in an EC2-Classic account, specify true to allow an Elastic + // IP address that is already associated with an instance or network interface + // to be reassociated with the specified instance or network interface. Otherwise, + // the operation fails. In a VPC in an EC2-VPC-only account, reassociation is + // automatic, therefore you can specify false to ensure the operation fails + // if the Elastic IP address is already associated with another resource. + AllowReassociation *bool `locationName:"allowReassociation" type:"boolean"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the instance. This is required for EC2-Classic. For EC2-VPC, you + // can specify either the instance ID or the network interface ID, but not both. + // The operation fails if you specify an instance ID unless exactly one network + // interface is attached. + InstanceId *string `type:"string"` + + // [EC2-VPC] The ID of the network interface. If the instance has more than + // one network interface, you must specify a network interface ID. + // + // For EC2-VPC, you can specify either the instance ID or the network interface + // ID, but not both. + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` + + // [EC2-VPC] The primary or secondary private IP address to associate with the + // Elastic IP address. If no private IP address is specified, the Elastic IP + // address is associated with the primary private IP address. + PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` + + // The Elastic IP address to associate with the instance. This is required for + // EC2-Classic. + PublicIp *string `type:"string"` +} + +// String returns the string representation +func (s AssociateAddressInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssociateAddressInput) GoString() string { + return s.String() +} + +// SetAllocationId sets the AllocationId field's value. +func (s *AssociateAddressInput) SetAllocationId(v string) *AssociateAddressInput { + s.AllocationId = &v + return s +} + +// SetAllowReassociation sets the AllowReassociation field's value. +func (s *AssociateAddressInput) SetAllowReassociation(v bool) *AssociateAddressInput { + s.AllowReassociation = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *AssociateAddressInput) SetDryRun(v bool) *AssociateAddressInput { + s.DryRun = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *AssociateAddressInput) SetInstanceId(v string) *AssociateAddressInput { + s.InstanceId = &v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *AssociateAddressInput) SetNetworkInterfaceId(v string) *AssociateAddressInput { + s.NetworkInterfaceId = &v + return s +} + +// SetPrivateIpAddress sets the PrivateIpAddress field's value. +func (s *AssociateAddressInput) SetPrivateIpAddress(v string) *AssociateAddressInput { + s.PrivateIpAddress = &v + return s +} + +// SetPublicIp sets the PublicIp field's value. +func (s *AssociateAddressInput) SetPublicIp(v string) *AssociateAddressInput { + s.PublicIp = &v + return s +} + +type AssociateAddressOutput struct { + _ struct{} `type:"structure"` + + // [EC2-VPC] The ID that represents the association of the Elastic IP address + // with an instance. + AssociationId *string `locationName:"associationId" type:"string"` +} + +// String returns the string representation +func (s AssociateAddressOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssociateAddressOutput) GoString() string { + return s.String() +} + +// SetAssociationId sets the AssociationId field's value. +func (s *AssociateAddressOutput) SetAssociationId(v string) *AssociateAddressOutput { + s.AssociationId = &v + return s +} + +type AssociateClientVpnTargetNetworkInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `type:"string" idempotencyToken:"true"` + + // The ID of the Client VPN endpoint. + // + // ClientVpnEndpointId is a required field + ClientVpnEndpointId *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the subnet to associate with the Client VPN endpoint. + // + // SubnetId is a required field + SubnetId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s AssociateClientVpnTargetNetworkInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssociateClientVpnTargetNetworkInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AssociateClientVpnTargetNetworkInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AssociateClientVpnTargetNetworkInput"} + if s.ClientVpnEndpointId == nil { + invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId")) + } + if s.SubnetId == nil { + invalidParams.Add(request.NewErrParamRequired("SubnetId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *AssociateClientVpnTargetNetworkInput) SetClientToken(v string) *AssociateClientVpnTargetNetworkInput { + s.ClientToken = &v + return s +} + +// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value. +func (s *AssociateClientVpnTargetNetworkInput) SetClientVpnEndpointId(v string) *AssociateClientVpnTargetNetworkInput { + s.ClientVpnEndpointId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *AssociateClientVpnTargetNetworkInput) SetDryRun(v bool) *AssociateClientVpnTargetNetworkInput { + s.DryRun = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *AssociateClientVpnTargetNetworkInput) SetSubnetId(v string) *AssociateClientVpnTargetNetworkInput { + s.SubnetId = &v + return s +} + +type AssociateClientVpnTargetNetworkOutput struct { + _ struct{} `type:"structure"` + + // The unique ID of the target network association. + AssociationId *string `locationName:"associationId" type:"string"` + + // The current state of the target network association. + Status *AssociationStatus `locationName:"status" type:"structure"` +} + +// String returns the string representation +func (s AssociateClientVpnTargetNetworkOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssociateClientVpnTargetNetworkOutput) GoString() string { + return s.String() +} + +// SetAssociationId sets the AssociationId field's value. +func (s *AssociateClientVpnTargetNetworkOutput) SetAssociationId(v string) *AssociateClientVpnTargetNetworkOutput { + s.AssociationId = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *AssociateClientVpnTargetNetworkOutput) SetStatus(v *AssociationStatus) *AssociateClientVpnTargetNetworkOutput { + s.Status = v + return s +} + +type AssociateDhcpOptionsInput struct { + _ struct{} `type:"structure"` + + // The ID of the DHCP options set, or default to associate no DHCP options with + // the VPC. + // + // DhcpOptionsId is a required field + DhcpOptionsId *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the VPC. + // + // VpcId is a required field + VpcId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s AssociateDhcpOptionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssociateDhcpOptionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AssociateDhcpOptionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AssociateDhcpOptionsInput"} + if s.DhcpOptionsId == nil { + invalidParams.Add(request.NewErrParamRequired("DhcpOptionsId")) + } + if s.VpcId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDhcpOptionsId sets the DhcpOptionsId field's value. +func (s *AssociateDhcpOptionsInput) SetDhcpOptionsId(v string) *AssociateDhcpOptionsInput { + s.DhcpOptionsId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *AssociateDhcpOptionsInput) SetDryRun(v bool) *AssociateDhcpOptionsInput { + s.DryRun = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *AssociateDhcpOptionsInput) SetVpcId(v string) *AssociateDhcpOptionsInput { + s.VpcId = &v + return s +} + +type AssociateDhcpOptionsOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s AssociateDhcpOptionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssociateDhcpOptionsOutput) GoString() string { + return s.String() +} + +type AssociateIamInstanceProfileInput struct { + _ struct{} `type:"structure"` + + // The IAM instance profile. + // + // IamInstanceProfile is a required field + IamInstanceProfile *IamInstanceProfileSpecification `type:"structure" required:"true"` + + // The ID of the instance. + // + // InstanceId is a required field + InstanceId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s AssociateIamInstanceProfileInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssociateIamInstanceProfileInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AssociateIamInstanceProfileInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AssociateIamInstanceProfileInput"} + if s.IamInstanceProfile == nil { + invalidParams.Add(request.NewErrParamRequired("IamInstanceProfile")) + } + if s.InstanceId == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetIamInstanceProfile sets the IamInstanceProfile field's value. +func (s *AssociateIamInstanceProfileInput) SetIamInstanceProfile(v *IamInstanceProfileSpecification) *AssociateIamInstanceProfileInput { + s.IamInstanceProfile = v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *AssociateIamInstanceProfileInput) SetInstanceId(v string) *AssociateIamInstanceProfileInput { + s.InstanceId = &v + return s +} + +type AssociateIamInstanceProfileOutput struct { + _ struct{} `type:"structure"` + + // Information about the IAM instance profile association. + IamInstanceProfileAssociation *IamInstanceProfileAssociation `locationName:"iamInstanceProfileAssociation" type:"structure"` +} + +// String returns the string representation +func (s AssociateIamInstanceProfileOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssociateIamInstanceProfileOutput) GoString() string { + return s.String() +} + +// SetIamInstanceProfileAssociation sets the IamInstanceProfileAssociation field's value. +func (s *AssociateIamInstanceProfileOutput) SetIamInstanceProfileAssociation(v *IamInstanceProfileAssociation) *AssociateIamInstanceProfileOutput { + s.IamInstanceProfileAssociation = v + return s +} + +type AssociateRouteTableInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the route table. + // + // RouteTableId is a required field + RouteTableId *string `locationName:"routeTableId" type:"string" required:"true"` + + // The ID of the subnet. + // + // SubnetId is a required field + SubnetId *string `locationName:"subnetId" type:"string" required:"true"` +} + +// String returns the string representation +func (s AssociateRouteTableInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssociateRouteTableInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AssociateRouteTableInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AssociateRouteTableInput"} + if s.RouteTableId == nil { + invalidParams.Add(request.NewErrParamRequired("RouteTableId")) + } + if s.SubnetId == nil { + invalidParams.Add(request.NewErrParamRequired("SubnetId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *AssociateRouteTableInput) SetDryRun(v bool) *AssociateRouteTableInput { + s.DryRun = &v + return s +} + +// SetRouteTableId sets the RouteTableId field's value. +func (s *AssociateRouteTableInput) SetRouteTableId(v string) *AssociateRouteTableInput { + s.RouteTableId = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *AssociateRouteTableInput) SetSubnetId(v string) *AssociateRouteTableInput { + s.SubnetId = &v + return s +} + +type AssociateRouteTableOutput struct { + _ struct{} `type:"structure"` + + // The route table association ID. This ID is required for disassociating the + // route table. + AssociationId *string `locationName:"associationId" type:"string"` +} + +// String returns the string representation +func (s AssociateRouteTableOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssociateRouteTableOutput) GoString() string { + return s.String() +} + +// SetAssociationId sets the AssociationId field's value. +func (s *AssociateRouteTableOutput) SetAssociationId(v string) *AssociateRouteTableOutput { + s.AssociationId = &v + return s +} + +type AssociateSubnetCidrBlockInput struct { + _ struct{} `type:"structure"` + + // The IPv6 CIDR block for your subnet. The subnet must have a /64 prefix length. + // + // Ipv6CidrBlock is a required field + Ipv6CidrBlock *string `locationName:"ipv6CidrBlock" type:"string" required:"true"` + + // The ID of your subnet. + // + // SubnetId is a required field + SubnetId *string `locationName:"subnetId" type:"string" required:"true"` +} + +// String returns the string representation +func (s AssociateSubnetCidrBlockInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssociateSubnetCidrBlockInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AssociateSubnetCidrBlockInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AssociateSubnetCidrBlockInput"} + if s.Ipv6CidrBlock == nil { + invalidParams.Add(request.NewErrParamRequired("Ipv6CidrBlock")) + } + if s.SubnetId == nil { + invalidParams.Add(request.NewErrParamRequired("SubnetId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetIpv6CidrBlock sets the Ipv6CidrBlock field's value. +func (s *AssociateSubnetCidrBlockInput) SetIpv6CidrBlock(v string) *AssociateSubnetCidrBlockInput { + s.Ipv6CidrBlock = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *AssociateSubnetCidrBlockInput) SetSubnetId(v string) *AssociateSubnetCidrBlockInput { + s.SubnetId = &v + return s +} + +type AssociateSubnetCidrBlockOutput struct { + _ struct{} `type:"structure"` + + // Information about the IPv6 CIDR block association. + Ipv6CidrBlockAssociation *SubnetIpv6CidrBlockAssociation `locationName:"ipv6CidrBlockAssociation" type:"structure"` + + // The ID of the subnet. + SubnetId *string `locationName:"subnetId" type:"string"` +} + +// String returns the string representation +func (s AssociateSubnetCidrBlockOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssociateSubnetCidrBlockOutput) GoString() string { + return s.String() +} + +// SetIpv6CidrBlockAssociation sets the Ipv6CidrBlockAssociation field's value. +func (s *AssociateSubnetCidrBlockOutput) SetIpv6CidrBlockAssociation(v *SubnetIpv6CidrBlockAssociation) *AssociateSubnetCidrBlockOutput { + s.Ipv6CidrBlockAssociation = v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *AssociateSubnetCidrBlockOutput) SetSubnetId(v string) *AssociateSubnetCidrBlockOutput { + s.SubnetId = &v + return s +} + +type AssociateTransitGatewayRouteTableInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the attachment. + // + // TransitGatewayAttachmentId is a required field + TransitGatewayAttachmentId *string `type:"string" required:"true"` + + // The ID of the transit gateway route table. + // + // TransitGatewayRouteTableId is a required field + TransitGatewayRouteTableId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s AssociateTransitGatewayRouteTableInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssociateTransitGatewayRouteTableInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AssociateTransitGatewayRouteTableInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AssociateTransitGatewayRouteTableInput"} + if s.TransitGatewayAttachmentId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayAttachmentId")) + } + if s.TransitGatewayRouteTableId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayRouteTableId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *AssociateTransitGatewayRouteTableInput) SetDryRun(v bool) *AssociateTransitGatewayRouteTableInput { + s.DryRun = &v + return s +} + +// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value. +func (s *AssociateTransitGatewayRouteTableInput) SetTransitGatewayAttachmentId(v string) *AssociateTransitGatewayRouteTableInput { + s.TransitGatewayAttachmentId = &v + return s +} + +// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value. +func (s *AssociateTransitGatewayRouteTableInput) SetTransitGatewayRouteTableId(v string) *AssociateTransitGatewayRouteTableInput { + s.TransitGatewayRouteTableId = &v + return s +} + +type AssociateTransitGatewayRouteTableOutput struct { + _ struct{} `type:"structure"` + + // The ID of the association. + Association *TransitGatewayAssociation `locationName:"association" type:"structure"` +} + +// String returns the string representation +func (s AssociateTransitGatewayRouteTableOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssociateTransitGatewayRouteTableOutput) GoString() string { + return s.String() +} + +// SetAssociation sets the Association field's value. +func (s *AssociateTransitGatewayRouteTableOutput) SetAssociation(v *TransitGatewayAssociation) *AssociateTransitGatewayRouteTableOutput { + s.Association = v + return s +} + +type AssociateVpcCidrBlockInput struct { + _ struct{} `type:"structure"` + + // Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for + // the VPC. You cannot specify the range of IPv6 addresses, or the size of the + // CIDR block. + AmazonProvidedIpv6CidrBlock *bool `locationName:"amazonProvidedIpv6CidrBlock" type:"boolean"` + + // An IPv4 CIDR block to associate with the VPC. + CidrBlock *string `type:"string"` + + // The ID of the VPC. + // + // VpcId is a required field + VpcId *string `locationName:"vpcId" type:"string" required:"true"` +} + +// String returns the string representation +func (s AssociateVpcCidrBlockInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssociateVpcCidrBlockInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AssociateVpcCidrBlockInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AssociateVpcCidrBlockInput"} + if s.VpcId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAmazonProvidedIpv6CidrBlock sets the AmazonProvidedIpv6CidrBlock field's value. +func (s *AssociateVpcCidrBlockInput) SetAmazonProvidedIpv6CidrBlock(v bool) *AssociateVpcCidrBlockInput { + s.AmazonProvidedIpv6CidrBlock = &v + return s +} + +// SetCidrBlock sets the CidrBlock field's value. +func (s *AssociateVpcCidrBlockInput) SetCidrBlock(v string) *AssociateVpcCidrBlockInput { + s.CidrBlock = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *AssociateVpcCidrBlockInput) SetVpcId(v string) *AssociateVpcCidrBlockInput { + s.VpcId = &v + return s +} + +type AssociateVpcCidrBlockOutput struct { + _ struct{} `type:"structure"` + + // Information about the IPv4 CIDR block association. + CidrBlockAssociation *VpcCidrBlockAssociation `locationName:"cidrBlockAssociation" type:"structure"` + + // Information about the IPv6 CIDR block association. + Ipv6CidrBlockAssociation *VpcIpv6CidrBlockAssociation `locationName:"ipv6CidrBlockAssociation" type:"structure"` + + // The ID of the VPC. + VpcId *string `locationName:"vpcId" type:"string"` +} + +// String returns the string representation +func (s AssociateVpcCidrBlockOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssociateVpcCidrBlockOutput) GoString() string { + return s.String() +} + +// SetCidrBlockAssociation sets the CidrBlockAssociation field's value. +func (s *AssociateVpcCidrBlockOutput) SetCidrBlockAssociation(v *VpcCidrBlockAssociation) *AssociateVpcCidrBlockOutput { + s.CidrBlockAssociation = v + return s +} + +// SetIpv6CidrBlockAssociation sets the Ipv6CidrBlockAssociation field's value. +func (s *AssociateVpcCidrBlockOutput) SetIpv6CidrBlockAssociation(v *VpcIpv6CidrBlockAssociation) *AssociateVpcCidrBlockOutput { + s.Ipv6CidrBlockAssociation = v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *AssociateVpcCidrBlockOutput) SetVpcId(v string) *AssociateVpcCidrBlockOutput { + s.VpcId = &v + return s +} + +// Describes a target network that is associated with a Client VPN endpoint. +// A target network is a subnet in a VPC. +type AssociatedTargetNetwork struct { + _ struct{} `type:"structure"` + + // The ID of the subnet. + NetworkId *string `locationName:"networkId" type:"string"` + + // The target network type. + NetworkType *string `locationName:"networkType" type:"string" enum:"AssociatedNetworkType"` +} + +// String returns the string representation +func (s AssociatedTargetNetwork) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssociatedTargetNetwork) GoString() string { + return s.String() +} + +// SetNetworkId sets the NetworkId field's value. +func (s *AssociatedTargetNetwork) SetNetworkId(v string) *AssociatedTargetNetwork { + s.NetworkId = &v + return s +} + +// SetNetworkType sets the NetworkType field's value. +func (s *AssociatedTargetNetwork) SetNetworkType(v string) *AssociatedTargetNetwork { + s.NetworkType = &v + return s +} + +// Describes the state of a target network association. +type AssociationStatus struct { + _ struct{} `type:"structure"` + + // The state of the target network association. + Code *string `locationName:"code" type:"string" enum:"AssociationStatusCode"` + + // A message about the status of the target network association, if applicable. + Message *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s AssociationStatus) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssociationStatus) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *AssociationStatus) SetCode(v string) *AssociationStatus { + s.Code = &v + return s +} + +// SetMessage sets the Message field's value. +func (s *AssociationStatus) SetMessage(v string) *AssociationStatus { + s.Message = &v + return s +} + +type AttachClassicLinkVpcInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of one or more of the VPC's security groups. You cannot specify security + // groups from a different VPC. + // + // Groups is a required field + Groups []*string `locationName:"SecurityGroupId" locationNameList:"groupId" type:"list" required:"true"` + + // The ID of an EC2-Classic instance to link to the ClassicLink-enabled VPC. + // + // InstanceId is a required field + InstanceId *string `locationName:"instanceId" type:"string" required:"true"` + + // The ID of a ClassicLink-enabled VPC. + // + // VpcId is a required field + VpcId *string `locationName:"vpcId" type:"string" required:"true"` +} + +// String returns the string representation +func (s AttachClassicLinkVpcInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AttachClassicLinkVpcInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AttachClassicLinkVpcInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AttachClassicLinkVpcInput"} + if s.Groups == nil { + invalidParams.Add(request.NewErrParamRequired("Groups")) + } + if s.InstanceId == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceId")) + } + if s.VpcId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *AttachClassicLinkVpcInput) SetDryRun(v bool) *AttachClassicLinkVpcInput { + s.DryRun = &v + return s +} + +// SetGroups sets the Groups field's value. +func (s *AttachClassicLinkVpcInput) SetGroups(v []*string) *AttachClassicLinkVpcInput { + s.Groups = v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *AttachClassicLinkVpcInput) SetInstanceId(v string) *AttachClassicLinkVpcInput { + s.InstanceId = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *AttachClassicLinkVpcInput) SetVpcId(v string) *AttachClassicLinkVpcInput { + s.VpcId = &v + return s +} + +type AttachClassicLinkVpcOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, it returns an error. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s AttachClassicLinkVpcOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AttachClassicLinkVpcOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *AttachClassicLinkVpcOutput) SetReturn(v bool) *AttachClassicLinkVpcOutput { + s.Return = &v + return s +} + +type AttachInternetGatewayInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the internet gateway. + // + // InternetGatewayId is a required field + InternetGatewayId *string `locationName:"internetGatewayId" type:"string" required:"true"` + + // The ID of the VPC. + // + // VpcId is a required field + VpcId *string `locationName:"vpcId" type:"string" required:"true"` +} + +// String returns the string representation +func (s AttachInternetGatewayInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AttachInternetGatewayInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AttachInternetGatewayInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AttachInternetGatewayInput"} + if s.InternetGatewayId == nil { + invalidParams.Add(request.NewErrParamRequired("InternetGatewayId")) + } + if s.VpcId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *AttachInternetGatewayInput) SetDryRun(v bool) *AttachInternetGatewayInput { + s.DryRun = &v + return s +} + +// SetInternetGatewayId sets the InternetGatewayId field's value. +func (s *AttachInternetGatewayInput) SetInternetGatewayId(v string) *AttachInternetGatewayInput { + s.InternetGatewayId = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *AttachInternetGatewayInput) SetVpcId(v string) *AttachInternetGatewayInput { + s.VpcId = &v + return s +} + +type AttachInternetGatewayOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s AttachInternetGatewayOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AttachInternetGatewayOutput) GoString() string { + return s.String() +} + +// Contains the parameters for AttachNetworkInterface. +type AttachNetworkInterfaceInput struct { + _ struct{} `type:"structure"` + + // The index of the device for the network interface attachment. + // + // DeviceIndex is a required field + DeviceIndex *int64 `locationName:"deviceIndex" type:"integer" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the instance. + // + // InstanceId is a required field + InstanceId *string `locationName:"instanceId" type:"string" required:"true"` + + // The ID of the network interface. + // + // NetworkInterfaceId is a required field + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string" required:"true"` +} + +// String returns the string representation +func (s AttachNetworkInterfaceInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AttachNetworkInterfaceInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AttachNetworkInterfaceInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AttachNetworkInterfaceInput"} + if s.DeviceIndex == nil { + invalidParams.Add(request.NewErrParamRequired("DeviceIndex")) + } + if s.InstanceId == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceId")) + } + if s.NetworkInterfaceId == nil { + invalidParams.Add(request.NewErrParamRequired("NetworkInterfaceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDeviceIndex sets the DeviceIndex field's value. +func (s *AttachNetworkInterfaceInput) SetDeviceIndex(v int64) *AttachNetworkInterfaceInput { + s.DeviceIndex = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *AttachNetworkInterfaceInput) SetDryRun(v bool) *AttachNetworkInterfaceInput { + s.DryRun = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *AttachNetworkInterfaceInput) SetInstanceId(v string) *AttachNetworkInterfaceInput { + s.InstanceId = &v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *AttachNetworkInterfaceInput) SetNetworkInterfaceId(v string) *AttachNetworkInterfaceInput { + s.NetworkInterfaceId = &v + return s +} + +// Contains the output of AttachNetworkInterface. +type AttachNetworkInterfaceOutput struct { + _ struct{} `type:"structure"` + + // The ID of the network interface attachment. + AttachmentId *string `locationName:"attachmentId" type:"string"` +} + +// String returns the string representation +func (s AttachNetworkInterfaceOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AttachNetworkInterfaceOutput) GoString() string { + return s.String() +} + +// SetAttachmentId sets the AttachmentId field's value. +func (s *AttachNetworkInterfaceOutput) SetAttachmentId(v string) *AttachNetworkInterfaceOutput { + s.AttachmentId = &v + return s +} + +// Contains the parameters for AttachVolume. +type AttachVolumeInput struct { + _ struct{} `type:"structure"` + + // The device name (for example, /dev/sdh or xvdh). + // + // Device is a required field + Device *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the instance. + // + // InstanceId is a required field + InstanceId *string `type:"string" required:"true"` + + // The ID of the EBS volume. The volume and instance must be within the same + // Availability Zone. + // + // VolumeId is a required field + VolumeId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s AttachVolumeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AttachVolumeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AttachVolumeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AttachVolumeInput"} + if s.Device == nil { + invalidParams.Add(request.NewErrParamRequired("Device")) + } + if s.InstanceId == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceId")) + } + if s.VolumeId == nil { + invalidParams.Add(request.NewErrParamRequired("VolumeId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDevice sets the Device field's value. +func (s *AttachVolumeInput) SetDevice(v string) *AttachVolumeInput { + s.Device = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *AttachVolumeInput) SetDryRun(v bool) *AttachVolumeInput { + s.DryRun = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *AttachVolumeInput) SetInstanceId(v string) *AttachVolumeInput { + s.InstanceId = &v + return s +} + +// SetVolumeId sets the VolumeId field's value. +func (s *AttachVolumeInput) SetVolumeId(v string) *AttachVolumeInput { + s.VolumeId = &v + return s +} + +// Contains the parameters for AttachVpnGateway. +type AttachVpnGatewayInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the VPC. + // + // VpcId is a required field + VpcId *string `type:"string" required:"true"` + + // The ID of the virtual private gateway. + // + // VpnGatewayId is a required field + VpnGatewayId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s AttachVpnGatewayInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AttachVpnGatewayInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AttachVpnGatewayInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AttachVpnGatewayInput"} + if s.VpcId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcId")) + } + if s.VpnGatewayId == nil { + invalidParams.Add(request.NewErrParamRequired("VpnGatewayId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *AttachVpnGatewayInput) SetDryRun(v bool) *AttachVpnGatewayInput { + s.DryRun = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *AttachVpnGatewayInput) SetVpcId(v string) *AttachVpnGatewayInput { + s.VpcId = &v + return s +} + +// SetVpnGatewayId sets the VpnGatewayId field's value. +func (s *AttachVpnGatewayInput) SetVpnGatewayId(v string) *AttachVpnGatewayInput { + s.VpnGatewayId = &v + return s +} + +// Contains the output of AttachVpnGateway. +type AttachVpnGatewayOutput struct { + _ struct{} `type:"structure"` + + // Information about the attachment. + VpcAttachment *VpcAttachment `locationName:"attachment" type:"structure"` +} + +// String returns the string representation +func (s AttachVpnGatewayOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AttachVpnGatewayOutput) GoString() string { + return s.String() +} + +// SetVpcAttachment sets the VpcAttachment field's value. +func (s *AttachVpnGatewayOutput) SetVpcAttachment(v *VpcAttachment) *AttachVpnGatewayOutput { + s.VpcAttachment = v + return s +} + +// Describes a value for a resource attribute that is a Boolean value. +type AttributeBooleanValue struct { + _ struct{} `type:"structure"` + + // The attribute value. The valid values are true or false. + Value *bool `locationName:"value" type:"boolean"` +} + +// String returns the string representation +func (s AttributeBooleanValue) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AttributeBooleanValue) GoString() string { + return s.String() +} + +// SetValue sets the Value field's value. +func (s *AttributeBooleanValue) SetValue(v bool) *AttributeBooleanValue { + s.Value = &v + return s +} + +// Describes a value for a resource attribute that is a String. +type AttributeValue struct { + _ struct{} `type:"structure"` + + // The attribute value. The value is case-sensitive. + Value *string `locationName:"value" type:"string"` +} + +// String returns the string representation +func (s AttributeValue) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AttributeValue) GoString() string { + return s.String() +} + +// SetValue sets the Value field's value. +func (s *AttributeValue) SetValue(v string) *AttributeValue { + s.Value = &v + return s +} + +// Information about an authorization rule. +type AuthorizationRule struct { + _ struct{} `type:"structure"` + + // Indicates whether the authorization rule grants access to all clients. + AccessAll *bool `locationName:"accessAll" type:"boolean"` + + // The ID of the Client VPN endpoint with which the authorization rule is associated. + ClientVpnEndpointId *string `locationName:"clientVpnEndpointId" type:"string"` + + // A brief description of the authorization rule. + Description *string `locationName:"description" type:"string"` + + // The IPv4 address range, in CIDR notation, of the network to which the authorization + // rule applies. + DestinationCidr *string `locationName:"destinationCidr" type:"string"` + + // The ID of the Active Directory group to which the authorization rule grants + // access. + GroupId *string `locationName:"groupId" type:"string"` + + // The current state of the authorization rule. + Status *ClientVpnAuthorizationRuleStatus `locationName:"status" type:"structure"` +} + +// String returns the string representation +func (s AuthorizationRule) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AuthorizationRule) GoString() string { + return s.String() +} + +// SetAccessAll sets the AccessAll field's value. +func (s *AuthorizationRule) SetAccessAll(v bool) *AuthorizationRule { + s.AccessAll = &v + return s +} + +// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value. +func (s *AuthorizationRule) SetClientVpnEndpointId(v string) *AuthorizationRule { + s.ClientVpnEndpointId = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *AuthorizationRule) SetDescription(v string) *AuthorizationRule { + s.Description = &v + return s +} + +// SetDestinationCidr sets the DestinationCidr field's value. +func (s *AuthorizationRule) SetDestinationCidr(v string) *AuthorizationRule { + s.DestinationCidr = &v + return s +} + +// SetGroupId sets the GroupId field's value. +func (s *AuthorizationRule) SetGroupId(v string) *AuthorizationRule { + s.GroupId = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *AuthorizationRule) SetStatus(v *ClientVpnAuthorizationRuleStatus) *AuthorizationRule { + s.Status = v + return s +} + +type AuthorizeClientVpnIngressInput struct { + _ struct{} `type:"structure"` + + // The ID of the Active Directory group to grant access. + AccessGroupId *string `type:"string"` + + // Indicates whether to grant access to all clients. Use true to grant all clients + // who successfully establish a VPN connection access to the network. + AuthorizeAllGroups *bool `type:"boolean"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `type:"string" idempotencyToken:"true"` + + // The ID of the Client VPN endpoint. + // + // ClientVpnEndpointId is a required field + ClientVpnEndpointId *string `type:"string" required:"true"` + + // A brief description of the authorization rule. + Description *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The IPv4 address range, in CIDR notation, of the network for which access + // is being authorized. + // + // TargetNetworkCidr is a required field + TargetNetworkCidr *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s AuthorizeClientVpnIngressInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AuthorizeClientVpnIngressInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AuthorizeClientVpnIngressInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AuthorizeClientVpnIngressInput"} + if s.ClientVpnEndpointId == nil { + invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId")) + } + if s.TargetNetworkCidr == nil { + invalidParams.Add(request.NewErrParamRequired("TargetNetworkCidr")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAccessGroupId sets the AccessGroupId field's value. +func (s *AuthorizeClientVpnIngressInput) SetAccessGroupId(v string) *AuthorizeClientVpnIngressInput { + s.AccessGroupId = &v + return s +} + +// SetAuthorizeAllGroups sets the AuthorizeAllGroups field's value. +func (s *AuthorizeClientVpnIngressInput) SetAuthorizeAllGroups(v bool) *AuthorizeClientVpnIngressInput { + s.AuthorizeAllGroups = &v + return s +} + +// SetClientToken sets the ClientToken field's value. +func (s *AuthorizeClientVpnIngressInput) SetClientToken(v string) *AuthorizeClientVpnIngressInput { + s.ClientToken = &v + return s +} + +// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value. +func (s *AuthorizeClientVpnIngressInput) SetClientVpnEndpointId(v string) *AuthorizeClientVpnIngressInput { + s.ClientVpnEndpointId = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *AuthorizeClientVpnIngressInput) SetDescription(v string) *AuthorizeClientVpnIngressInput { + s.Description = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *AuthorizeClientVpnIngressInput) SetDryRun(v bool) *AuthorizeClientVpnIngressInput { + s.DryRun = &v + return s +} + +// SetTargetNetworkCidr sets the TargetNetworkCidr field's value. +func (s *AuthorizeClientVpnIngressInput) SetTargetNetworkCidr(v string) *AuthorizeClientVpnIngressInput { + s.TargetNetworkCidr = &v + return s +} + +type AuthorizeClientVpnIngressOutput struct { + _ struct{} `type:"structure"` + + // The current state of the authorization rule. + Status *ClientVpnAuthorizationRuleStatus `locationName:"status" type:"structure"` +} + +// String returns the string representation +func (s AuthorizeClientVpnIngressOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AuthorizeClientVpnIngressOutput) GoString() string { + return s.String() +} + +// SetStatus sets the Status field's value. +func (s *AuthorizeClientVpnIngressOutput) SetStatus(v *ClientVpnAuthorizationRuleStatus) *AuthorizeClientVpnIngressOutput { + s.Status = v + return s +} + +type AuthorizeSecurityGroupEgressInput struct { + _ struct{} `type:"structure"` + + // Not supported. Use a set of IP permissions to specify the CIDR. + CidrIp *string `locationName:"cidrIp" type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // Not supported. Use a set of IP permissions to specify the port. + FromPort *int64 `locationName:"fromPort" type:"integer"` + + // The ID of the security group. + // + // GroupId is a required field + GroupId *string `locationName:"groupId" type:"string" required:"true"` + + // The sets of IP permissions. You can't specify a destination security group + // and a CIDR IP address range in the same set of permissions. + IpPermissions []*IpPermission `locationName:"ipPermissions" locationNameList:"item" type:"list"` + + // Not supported. Use a set of IP permissions to specify the protocol name or + // number. + IpProtocol *string `locationName:"ipProtocol" type:"string"` + + // Not supported. Use a set of IP permissions to specify a destination security + // group. + SourceSecurityGroupName *string `locationName:"sourceSecurityGroupName" type:"string"` + + // Not supported. Use a set of IP permissions to specify a destination security + // group. + SourceSecurityGroupOwnerId *string `locationName:"sourceSecurityGroupOwnerId" type:"string"` + + // Not supported. Use a set of IP permissions to specify the port. + ToPort *int64 `locationName:"toPort" type:"integer"` +} + +// String returns the string representation +func (s AuthorizeSecurityGroupEgressInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AuthorizeSecurityGroupEgressInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AuthorizeSecurityGroupEgressInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AuthorizeSecurityGroupEgressInput"} + if s.GroupId == nil { + invalidParams.Add(request.NewErrParamRequired("GroupId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCidrIp sets the CidrIp field's value. +func (s *AuthorizeSecurityGroupEgressInput) SetCidrIp(v string) *AuthorizeSecurityGroupEgressInput { + s.CidrIp = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *AuthorizeSecurityGroupEgressInput) SetDryRun(v bool) *AuthorizeSecurityGroupEgressInput { + s.DryRun = &v + return s +} + +// SetFromPort sets the FromPort field's value. +func (s *AuthorizeSecurityGroupEgressInput) SetFromPort(v int64) *AuthorizeSecurityGroupEgressInput { + s.FromPort = &v + return s +} + +// SetGroupId sets the GroupId field's value. +func (s *AuthorizeSecurityGroupEgressInput) SetGroupId(v string) *AuthorizeSecurityGroupEgressInput { + s.GroupId = &v + return s +} + +// SetIpPermissions sets the IpPermissions field's value. +func (s *AuthorizeSecurityGroupEgressInput) SetIpPermissions(v []*IpPermission) *AuthorizeSecurityGroupEgressInput { + s.IpPermissions = v + return s +} + +// SetIpProtocol sets the IpProtocol field's value. +func (s *AuthorizeSecurityGroupEgressInput) SetIpProtocol(v string) *AuthorizeSecurityGroupEgressInput { + s.IpProtocol = &v + return s +} + +// SetSourceSecurityGroupName sets the SourceSecurityGroupName field's value. +func (s *AuthorizeSecurityGroupEgressInput) SetSourceSecurityGroupName(v string) *AuthorizeSecurityGroupEgressInput { + s.SourceSecurityGroupName = &v + return s +} + +// SetSourceSecurityGroupOwnerId sets the SourceSecurityGroupOwnerId field's value. +func (s *AuthorizeSecurityGroupEgressInput) SetSourceSecurityGroupOwnerId(v string) *AuthorizeSecurityGroupEgressInput { + s.SourceSecurityGroupOwnerId = &v + return s +} + +// SetToPort sets the ToPort field's value. +func (s *AuthorizeSecurityGroupEgressInput) SetToPort(v int64) *AuthorizeSecurityGroupEgressInput { + s.ToPort = &v + return s +} + +type AuthorizeSecurityGroupEgressOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s AuthorizeSecurityGroupEgressOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AuthorizeSecurityGroupEgressOutput) GoString() string { + return s.String() +} + +type AuthorizeSecurityGroupIngressInput struct { + _ struct{} `type:"structure"` + + // The IPv4 address range, in CIDR format. You can't specify this parameter + // when specifying a source security group. To specify an IPv6 address range, + // use a set of IP permissions. + // + // Alternatively, use a set of IP permissions to specify multiple rules and + // a description for the rule. + CidrIp *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The start of port range for the TCP and UDP protocols, or an ICMP type number. + // For the ICMP type number, use -1 to specify all types. If you specify all + // ICMP types, you must specify all codes. + // + // Alternatively, use a set of IP permissions to specify multiple rules and + // a description for the rule. + FromPort *int64 `type:"integer"` + + // The ID of the security group. You must specify either the security group + // ID or the security group name in the request. For security groups in a nondefault + // VPC, you must specify the security group ID. + GroupId *string `type:"string"` + + // [EC2-Classic, default VPC] The name of the security group. You must specify + // either the security group ID or the security group name in the request. + GroupName *string `type:"string"` + + // The sets of IP permissions. + IpPermissions []*IpPermission `locationNameList:"item" type:"list"` + + // The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers (http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)). + // To specify icmpv6, use a set of IP permissions. + // + // [VPC only] Use -1 to specify all protocols. If you specify -1 or a protocol + // other than tcp, udp, or icmp, traffic on all ports is allowed, regardless + // of any ports you specify. + // + // Alternatively, use a set of IP permissions to specify multiple rules and + // a description for the rule. + IpProtocol *string `type:"string"` + + // [EC2-Classic, default VPC] The name of the source security group. You can't + // specify this parameter in combination with the following parameters: the + // CIDR IP address range, the start of the port range, the IP protocol, and + // the end of the port range. Creates rules that grant full ICMP, UDP, and TCP + // access. To create a rule with a specific IP protocol and port range, use + // a set of IP permissions instead. For EC2-VPC, the source security group must + // be in the same VPC. + SourceSecurityGroupName *string `type:"string"` + + // [nondefault VPC] The AWS account ID for the source security group, if the + // source security group is in a different account. You can't specify this parameter + // in combination with the following parameters: the CIDR IP address range, + // the IP protocol, the start of the port range, and the end of the port range. + // Creates rules that grant full ICMP, UDP, and TCP access. To create a rule + // with a specific IP protocol and port range, use a set of IP permissions instead. + SourceSecurityGroupOwnerId *string `type:"string"` + + // The end of port range for the TCP and UDP protocols, or an ICMP code number. + // For the ICMP code number, use -1 to specify all codes. If you specify all + // ICMP types, you must specify all codes. + // + // Alternatively, use a set of IP permissions to specify multiple rules and + // a description for the rule. + ToPort *int64 `type:"integer"` +} + +// String returns the string representation +func (s AuthorizeSecurityGroupIngressInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AuthorizeSecurityGroupIngressInput) GoString() string { + return s.String() +} + +// SetCidrIp sets the CidrIp field's value. +func (s *AuthorizeSecurityGroupIngressInput) SetCidrIp(v string) *AuthorizeSecurityGroupIngressInput { + s.CidrIp = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *AuthorizeSecurityGroupIngressInput) SetDryRun(v bool) *AuthorizeSecurityGroupIngressInput { + s.DryRun = &v + return s +} + +// SetFromPort sets the FromPort field's value. +func (s *AuthorizeSecurityGroupIngressInput) SetFromPort(v int64) *AuthorizeSecurityGroupIngressInput { + s.FromPort = &v + return s +} + +// SetGroupId sets the GroupId field's value. +func (s *AuthorizeSecurityGroupIngressInput) SetGroupId(v string) *AuthorizeSecurityGroupIngressInput { + s.GroupId = &v + return s +} + +// SetGroupName sets the GroupName field's value. +func (s *AuthorizeSecurityGroupIngressInput) SetGroupName(v string) *AuthorizeSecurityGroupIngressInput { + s.GroupName = &v + return s +} + +// SetIpPermissions sets the IpPermissions field's value. +func (s *AuthorizeSecurityGroupIngressInput) SetIpPermissions(v []*IpPermission) *AuthorizeSecurityGroupIngressInput { + s.IpPermissions = v + return s +} + +// SetIpProtocol sets the IpProtocol field's value. +func (s *AuthorizeSecurityGroupIngressInput) SetIpProtocol(v string) *AuthorizeSecurityGroupIngressInput { + s.IpProtocol = &v + return s +} + +// SetSourceSecurityGroupName sets the SourceSecurityGroupName field's value. +func (s *AuthorizeSecurityGroupIngressInput) SetSourceSecurityGroupName(v string) *AuthorizeSecurityGroupIngressInput { + s.SourceSecurityGroupName = &v + return s +} + +// SetSourceSecurityGroupOwnerId sets the SourceSecurityGroupOwnerId field's value. +func (s *AuthorizeSecurityGroupIngressInput) SetSourceSecurityGroupOwnerId(v string) *AuthorizeSecurityGroupIngressInput { + s.SourceSecurityGroupOwnerId = &v + return s +} + +// SetToPort sets the ToPort field's value. +func (s *AuthorizeSecurityGroupIngressInput) SetToPort(v int64) *AuthorizeSecurityGroupIngressInput { + s.ToPort = &v + return s +} + +type AuthorizeSecurityGroupIngressOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s AuthorizeSecurityGroupIngressOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AuthorizeSecurityGroupIngressOutput) GoString() string { + return s.String() +} + +// Describes an Availability Zone. +type AvailabilityZone struct { + _ struct{} `type:"structure"` + + // Any messages about the Availability Zone. + Messages []*AvailabilityZoneMessage `locationName:"messageSet" locationNameList:"item" type:"list"` + + // The name of the Region. + RegionName *string `locationName:"regionName" type:"string"` + + // The state of the Availability Zone. + State *string `locationName:"zoneState" type:"string" enum:"AvailabilityZoneState"` + + // The ID of the Availability Zone. + ZoneId *string `locationName:"zoneId" type:"string"` + + // The name of the Availability Zone. + ZoneName *string `locationName:"zoneName" type:"string"` +} + +// String returns the string representation +func (s AvailabilityZone) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AvailabilityZone) GoString() string { + return s.String() +} + +// SetMessages sets the Messages field's value. +func (s *AvailabilityZone) SetMessages(v []*AvailabilityZoneMessage) *AvailabilityZone { + s.Messages = v + return s +} + +// SetRegionName sets the RegionName field's value. +func (s *AvailabilityZone) SetRegionName(v string) *AvailabilityZone { + s.RegionName = &v + return s +} + +// SetState sets the State field's value. +func (s *AvailabilityZone) SetState(v string) *AvailabilityZone { + s.State = &v + return s +} + +// SetZoneId sets the ZoneId field's value. +func (s *AvailabilityZone) SetZoneId(v string) *AvailabilityZone { + s.ZoneId = &v + return s +} + +// SetZoneName sets the ZoneName field's value. +func (s *AvailabilityZone) SetZoneName(v string) *AvailabilityZone { + s.ZoneName = &v + return s +} + +// Describes a message about an Availability Zone. +type AvailabilityZoneMessage struct { + _ struct{} `type:"structure"` + + // The message about the Availability Zone. + Message *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s AvailabilityZoneMessage) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AvailabilityZoneMessage) GoString() string { + return s.String() +} + +// SetMessage sets the Message field's value. +func (s *AvailabilityZoneMessage) SetMessage(v string) *AvailabilityZoneMessage { + s.Message = &v + return s +} + +// The capacity information for instances launched onto the Dedicated Host. +type AvailableCapacity struct { + _ struct{} `type:"structure"` + + // The total number of instances supported by the Dedicated Host. + AvailableInstanceCapacity []*InstanceCapacity `locationName:"availableInstanceCapacity" locationNameList:"item" type:"list"` + + // The number of vCPUs available on the Dedicated Host. + AvailableVCpus *int64 `locationName:"availableVCpus" type:"integer"` +} + +// String returns the string representation +func (s AvailableCapacity) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AvailableCapacity) GoString() string { + return s.String() +} + +// SetAvailableInstanceCapacity sets the AvailableInstanceCapacity field's value. +func (s *AvailableCapacity) SetAvailableInstanceCapacity(v []*InstanceCapacity) *AvailableCapacity { + s.AvailableInstanceCapacity = v + return s +} + +// SetAvailableVCpus sets the AvailableVCpus field's value. +func (s *AvailableCapacity) SetAvailableVCpus(v int64) *AvailableCapacity { + s.AvailableVCpus = &v + return s +} + +type BlobAttributeValue struct { + _ struct{} `type:"structure"` + + // Value is automatically base64 encoded/decoded by the SDK. + Value []byte `locationName:"value" type:"blob"` +} + +// String returns the string representation +func (s BlobAttributeValue) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s BlobAttributeValue) GoString() string { + return s.String() +} + +// SetValue sets the Value field's value. +func (s *BlobAttributeValue) SetValue(v []byte) *BlobAttributeValue { + s.Value = v + return s +} + +// Describes a block device mapping. +type BlockDeviceMapping struct { + _ struct{} `type:"structure"` + + // The device name (for example, /dev/sdh or xvdh). + DeviceName *string `locationName:"deviceName" type:"string"` + + // Parameters used to automatically set up EBS volumes when the instance is + // launched. + Ebs *EbsBlockDevice `locationName:"ebs" type:"structure"` + + // Suppresses the specified device included in the block device mapping of the + // AMI. + NoDevice *string `locationName:"noDevice" type:"string"` + + // The virtual device name (ephemeralN). Instance store volumes are numbered + // starting from 0. An instance type with 2 available instance store volumes + // can specify mappings for ephemeral0 and ephemeral1. The number of available + // instance store volumes depends on the instance type. After you connect to + // the instance, you must mount the volume. + // + // NVMe instance store volumes are automatically enumerated and assigned a device + // name. Including them in your block device mapping has no effect. + // + // Constraints: For M3 instances, you must specify instance store volumes in + // the block device mapping for the instance. When you launch an M3 instance, + // we ignore any instance store volumes specified in the block device mapping + // for the AMI. + VirtualName *string `locationName:"virtualName" type:"string"` +} + +// String returns the string representation +func (s BlockDeviceMapping) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s BlockDeviceMapping) GoString() string { + return s.String() +} + +// SetDeviceName sets the DeviceName field's value. +func (s *BlockDeviceMapping) SetDeviceName(v string) *BlockDeviceMapping { + s.DeviceName = &v + return s +} + +// SetEbs sets the Ebs field's value. +func (s *BlockDeviceMapping) SetEbs(v *EbsBlockDevice) *BlockDeviceMapping { + s.Ebs = v + return s +} + +// SetNoDevice sets the NoDevice field's value. +func (s *BlockDeviceMapping) SetNoDevice(v string) *BlockDeviceMapping { + s.NoDevice = &v + return s +} + +// SetVirtualName sets the VirtualName field's value. +func (s *BlockDeviceMapping) SetVirtualName(v string) *BlockDeviceMapping { + s.VirtualName = &v + return s +} + +// Contains the parameters for BundleInstance. +type BundleInstanceInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the instance to bundle. + // + // Type: String + // + // Default: None + // + // Required: Yes + // + // InstanceId is a required field + InstanceId *string `type:"string" required:"true"` + + // The bucket in which to store the AMI. You can specify a bucket that you already + // own or a new bucket that Amazon EC2 creates on your behalf. If you specify + // a bucket that belongs to someone else, Amazon EC2 returns an error. + // + // Storage is a required field + Storage *Storage `type:"structure" required:"true"` +} + +// String returns the string representation +func (s BundleInstanceInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s BundleInstanceInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *BundleInstanceInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "BundleInstanceInput"} + if s.InstanceId == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceId")) + } + if s.Storage == nil { + invalidParams.Add(request.NewErrParamRequired("Storage")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *BundleInstanceInput) SetDryRun(v bool) *BundleInstanceInput { + s.DryRun = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *BundleInstanceInput) SetInstanceId(v string) *BundleInstanceInput { + s.InstanceId = &v + return s +} + +// SetStorage sets the Storage field's value. +func (s *BundleInstanceInput) SetStorage(v *Storage) *BundleInstanceInput { + s.Storage = v + return s +} + +// Contains the output of BundleInstance. +type BundleInstanceOutput struct { + _ struct{} `type:"structure"` + + // Information about the bundle task. + BundleTask *BundleTask `locationName:"bundleInstanceTask" type:"structure"` +} + +// String returns the string representation +func (s BundleInstanceOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s BundleInstanceOutput) GoString() string { + return s.String() +} + +// SetBundleTask sets the BundleTask field's value. +func (s *BundleInstanceOutput) SetBundleTask(v *BundleTask) *BundleInstanceOutput { + s.BundleTask = v + return s +} + +// Describes a bundle task. +type BundleTask struct { + _ struct{} `type:"structure"` + + // The ID of the bundle task. + BundleId *string `locationName:"bundleId" type:"string"` + + // If the task fails, a description of the error. + BundleTaskError *BundleTaskError `locationName:"error" type:"structure"` + + // The ID of the instance associated with this bundle task. + InstanceId *string `locationName:"instanceId" type:"string"` + + // The level of task completion, as a percent (for example, 20%). + Progress *string `locationName:"progress" type:"string"` + + // The time this task started. + StartTime *time.Time `locationName:"startTime" type:"timestamp"` + + // The state of the task. + State *string `locationName:"state" type:"string" enum:"BundleTaskState"` + + // The Amazon S3 storage locations. + Storage *Storage `locationName:"storage" type:"structure"` + + // The time of the most recent update for the task. + UpdateTime *time.Time `locationName:"updateTime" type:"timestamp"` +} + +// String returns the string representation +func (s BundleTask) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s BundleTask) GoString() string { + return s.String() +} + +// SetBundleId sets the BundleId field's value. +func (s *BundleTask) SetBundleId(v string) *BundleTask { + s.BundleId = &v + return s +} + +// SetBundleTaskError sets the BundleTaskError field's value. +func (s *BundleTask) SetBundleTaskError(v *BundleTaskError) *BundleTask { + s.BundleTaskError = v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *BundleTask) SetInstanceId(v string) *BundleTask { + s.InstanceId = &v + return s +} + +// SetProgress sets the Progress field's value. +func (s *BundleTask) SetProgress(v string) *BundleTask { + s.Progress = &v + return s +} + +// SetStartTime sets the StartTime field's value. +func (s *BundleTask) SetStartTime(v time.Time) *BundleTask { + s.StartTime = &v + return s +} + +// SetState sets the State field's value. +func (s *BundleTask) SetState(v string) *BundleTask { + s.State = &v + return s +} + +// SetStorage sets the Storage field's value. +func (s *BundleTask) SetStorage(v *Storage) *BundleTask { + s.Storage = v + return s +} + +// SetUpdateTime sets the UpdateTime field's value. +func (s *BundleTask) SetUpdateTime(v time.Time) *BundleTask { + s.UpdateTime = &v + return s +} + +// Describes an error for BundleInstance. +type BundleTaskError struct { + _ struct{} `type:"structure"` + + // The error code. + Code *string `locationName:"code" type:"string"` + + // The error message. + Message *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s BundleTaskError) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s BundleTaskError) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *BundleTaskError) SetCode(v string) *BundleTaskError { + s.Code = &v + return s +} + +// SetMessage sets the Message field's value. +func (s *BundleTaskError) SetMessage(v string) *BundleTaskError { + s.Message = &v + return s +} + +// Information about an address range that is provisioned for use with your +// AWS resources through bring your own IP addresses (BYOIP). +type ByoipCidr struct { + _ struct{} `type:"structure"` + + // The public IPv4 address range, in CIDR notation. + Cidr *string `locationName:"cidr" type:"string"` + + // The description of the address range. + Description *string `locationName:"description" type:"string"` + + // The state of the address pool. + State *string `locationName:"state" type:"string" enum:"ByoipCidrState"` + + // Upon success, contains the ID of the address pool. Otherwise, contains an + // error message. + StatusMessage *string `locationName:"statusMessage" type:"string"` +} + +// String returns the string representation +func (s ByoipCidr) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ByoipCidr) GoString() string { + return s.String() +} + +// SetCidr sets the Cidr field's value. +func (s *ByoipCidr) SetCidr(v string) *ByoipCidr { + s.Cidr = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *ByoipCidr) SetDescription(v string) *ByoipCidr { + s.Description = &v + return s +} + +// SetState sets the State field's value. +func (s *ByoipCidr) SetState(v string) *ByoipCidr { + s.State = &v + return s +} + +// SetStatusMessage sets the StatusMessage field's value. +func (s *ByoipCidr) SetStatusMessage(v string) *ByoipCidr { + s.StatusMessage = &v + return s +} + +// Contains the parameters for CancelBundleTask. +type CancelBundleTaskInput struct { + _ struct{} `type:"structure"` + + // The ID of the bundle task. + // + // BundleId is a required field + BundleId *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` +} + +// String returns the string representation +func (s CancelBundleTaskInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CancelBundleTaskInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CancelBundleTaskInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CancelBundleTaskInput"} + if s.BundleId == nil { + invalidParams.Add(request.NewErrParamRequired("BundleId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBundleId sets the BundleId field's value. +func (s *CancelBundleTaskInput) SetBundleId(v string) *CancelBundleTaskInput { + s.BundleId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CancelBundleTaskInput) SetDryRun(v bool) *CancelBundleTaskInput { + s.DryRun = &v + return s +} + +// Contains the output of CancelBundleTask. +type CancelBundleTaskOutput struct { + _ struct{} `type:"structure"` + + // Information about the bundle task. + BundleTask *BundleTask `locationName:"bundleInstanceTask" type:"structure"` +} + +// String returns the string representation +func (s CancelBundleTaskOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CancelBundleTaskOutput) GoString() string { + return s.String() +} + +// SetBundleTask sets the BundleTask field's value. +func (s *CancelBundleTaskOutput) SetBundleTask(v *BundleTask) *CancelBundleTaskOutput { + s.BundleTask = v + return s +} + +type CancelCapacityReservationInput struct { + _ struct{} `type:"structure"` + + // The ID of the Capacity Reservation to be cancelled. + // + // CapacityReservationId is a required field + CapacityReservationId *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s CancelCapacityReservationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CancelCapacityReservationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CancelCapacityReservationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CancelCapacityReservationInput"} + if s.CapacityReservationId == nil { + invalidParams.Add(request.NewErrParamRequired("CapacityReservationId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCapacityReservationId sets the CapacityReservationId field's value. +func (s *CancelCapacityReservationInput) SetCapacityReservationId(v string) *CancelCapacityReservationInput { + s.CapacityReservationId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CancelCapacityReservationInput) SetDryRun(v bool) *CancelCapacityReservationInput { + s.DryRun = &v + return s +} + +type CancelCapacityReservationOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, it returns an error. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s CancelCapacityReservationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CancelCapacityReservationOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *CancelCapacityReservationOutput) SetReturn(v bool) *CancelCapacityReservationOutput { + s.Return = &v + return s +} + +type CancelConversionTaskInput struct { + _ struct{} `type:"structure"` + + // The ID of the conversion task. + // + // ConversionTaskId is a required field + ConversionTaskId *string `locationName:"conversionTaskId" type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The reason for canceling the conversion task. + ReasonMessage *string `locationName:"reasonMessage" type:"string"` +} + +// String returns the string representation +func (s CancelConversionTaskInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CancelConversionTaskInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CancelConversionTaskInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CancelConversionTaskInput"} + if s.ConversionTaskId == nil { + invalidParams.Add(request.NewErrParamRequired("ConversionTaskId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetConversionTaskId sets the ConversionTaskId field's value. +func (s *CancelConversionTaskInput) SetConversionTaskId(v string) *CancelConversionTaskInput { + s.ConversionTaskId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CancelConversionTaskInput) SetDryRun(v bool) *CancelConversionTaskInput { + s.DryRun = &v + return s +} + +// SetReasonMessage sets the ReasonMessage field's value. +func (s *CancelConversionTaskInput) SetReasonMessage(v string) *CancelConversionTaskInput { + s.ReasonMessage = &v + return s +} + +type CancelConversionTaskOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s CancelConversionTaskOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CancelConversionTaskOutput) GoString() string { + return s.String() +} + +type CancelExportTaskInput struct { + _ struct{} `type:"structure"` + + // The ID of the export task. This is the ID returned by CreateInstanceExportTask. + // + // ExportTaskId is a required field + ExportTaskId *string `locationName:"exportTaskId" type:"string" required:"true"` +} + +// String returns the string representation +func (s CancelExportTaskInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CancelExportTaskInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CancelExportTaskInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CancelExportTaskInput"} + if s.ExportTaskId == nil { + invalidParams.Add(request.NewErrParamRequired("ExportTaskId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetExportTaskId sets the ExportTaskId field's value. +func (s *CancelExportTaskInput) SetExportTaskId(v string) *CancelExportTaskInput { + s.ExportTaskId = &v + return s +} + +type CancelExportTaskOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s CancelExportTaskOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CancelExportTaskOutput) GoString() string { + return s.String() +} + +type CancelImportTaskInput struct { + _ struct{} `type:"structure"` + + // The reason for canceling the task. + CancelReason *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the import image or import snapshot task to be canceled. + ImportTaskId *string `type:"string"` +} + +// String returns the string representation +func (s CancelImportTaskInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CancelImportTaskInput) GoString() string { + return s.String() +} + +// SetCancelReason sets the CancelReason field's value. +func (s *CancelImportTaskInput) SetCancelReason(v string) *CancelImportTaskInput { + s.CancelReason = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CancelImportTaskInput) SetDryRun(v bool) *CancelImportTaskInput { + s.DryRun = &v + return s +} + +// SetImportTaskId sets the ImportTaskId field's value. +func (s *CancelImportTaskInput) SetImportTaskId(v string) *CancelImportTaskInput { + s.ImportTaskId = &v + return s +} + +type CancelImportTaskOutput struct { + _ struct{} `type:"structure"` + + // The ID of the task being canceled. + ImportTaskId *string `locationName:"importTaskId" type:"string"` + + // The current state of the task being canceled. + PreviousState *string `locationName:"previousState" type:"string"` + + // The current state of the task being canceled. + State *string `locationName:"state" type:"string"` +} + +// String returns the string representation +func (s CancelImportTaskOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CancelImportTaskOutput) GoString() string { + return s.String() +} + +// SetImportTaskId sets the ImportTaskId field's value. +func (s *CancelImportTaskOutput) SetImportTaskId(v string) *CancelImportTaskOutput { + s.ImportTaskId = &v + return s +} + +// SetPreviousState sets the PreviousState field's value. +func (s *CancelImportTaskOutput) SetPreviousState(v string) *CancelImportTaskOutput { + s.PreviousState = &v + return s +} + +// SetState sets the State field's value. +func (s *CancelImportTaskOutput) SetState(v string) *CancelImportTaskOutput { + s.State = &v + return s +} + +// Contains the parameters for CancelReservedInstancesListing. +type CancelReservedInstancesListingInput struct { + _ struct{} `type:"structure"` + + // The ID of the Reserved Instance listing. + // + // ReservedInstancesListingId is a required field + ReservedInstancesListingId *string `locationName:"reservedInstancesListingId" type:"string" required:"true"` +} + +// String returns the string representation +func (s CancelReservedInstancesListingInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CancelReservedInstancesListingInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CancelReservedInstancesListingInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CancelReservedInstancesListingInput"} + if s.ReservedInstancesListingId == nil { + invalidParams.Add(request.NewErrParamRequired("ReservedInstancesListingId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetReservedInstancesListingId sets the ReservedInstancesListingId field's value. +func (s *CancelReservedInstancesListingInput) SetReservedInstancesListingId(v string) *CancelReservedInstancesListingInput { + s.ReservedInstancesListingId = &v + return s +} + +// Contains the output of CancelReservedInstancesListing. +type CancelReservedInstancesListingOutput struct { + _ struct{} `type:"structure"` + + // The Reserved Instance listing. + ReservedInstancesListings []*ReservedInstancesListing `locationName:"reservedInstancesListingsSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s CancelReservedInstancesListingOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CancelReservedInstancesListingOutput) GoString() string { + return s.String() +} + +// SetReservedInstancesListings sets the ReservedInstancesListings field's value. +func (s *CancelReservedInstancesListingOutput) SetReservedInstancesListings(v []*ReservedInstancesListing) *CancelReservedInstancesListingOutput { + s.ReservedInstancesListings = v + return s +} + +// Describes a Spot Fleet error. +type CancelSpotFleetRequestsError struct { + _ struct{} `type:"structure"` + + // The error code. + Code *string `locationName:"code" type:"string" enum:"CancelBatchErrorCode"` + + // The description for the error code. + Message *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s CancelSpotFleetRequestsError) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CancelSpotFleetRequestsError) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *CancelSpotFleetRequestsError) SetCode(v string) *CancelSpotFleetRequestsError { + s.Code = &v + return s +} + +// SetMessage sets the Message field's value. +func (s *CancelSpotFleetRequestsError) SetMessage(v string) *CancelSpotFleetRequestsError { + s.Message = &v + return s +} + +// Describes a Spot Fleet request that was not successfully canceled. +type CancelSpotFleetRequestsErrorItem struct { + _ struct{} `type:"structure"` + + // The error. + Error *CancelSpotFleetRequestsError `locationName:"error" type:"structure"` + + // The ID of the Spot Fleet request. + SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string"` +} + +// String returns the string representation +func (s CancelSpotFleetRequestsErrorItem) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CancelSpotFleetRequestsErrorItem) GoString() string { + return s.String() +} + +// SetError sets the Error field's value. +func (s *CancelSpotFleetRequestsErrorItem) SetError(v *CancelSpotFleetRequestsError) *CancelSpotFleetRequestsErrorItem { + s.Error = v + return s +} + +// SetSpotFleetRequestId sets the SpotFleetRequestId field's value. +func (s *CancelSpotFleetRequestsErrorItem) SetSpotFleetRequestId(v string) *CancelSpotFleetRequestsErrorItem { + s.SpotFleetRequestId = &v + return s +} + +// Contains the parameters for CancelSpotFleetRequests. +type CancelSpotFleetRequestsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The IDs of the Spot Fleet requests. + // + // SpotFleetRequestIds is a required field + SpotFleetRequestIds []*string `locationName:"spotFleetRequestId" locationNameList:"item" type:"list" required:"true"` + + // Indicates whether to terminate instances for a Spot Fleet request if it is + // canceled successfully. + // + // TerminateInstances is a required field + TerminateInstances *bool `locationName:"terminateInstances" type:"boolean" required:"true"` +} + +// String returns the string representation +func (s CancelSpotFleetRequestsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CancelSpotFleetRequestsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CancelSpotFleetRequestsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CancelSpotFleetRequestsInput"} + if s.SpotFleetRequestIds == nil { + invalidParams.Add(request.NewErrParamRequired("SpotFleetRequestIds")) + } + if s.TerminateInstances == nil { + invalidParams.Add(request.NewErrParamRequired("TerminateInstances")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *CancelSpotFleetRequestsInput) SetDryRun(v bool) *CancelSpotFleetRequestsInput { + s.DryRun = &v + return s +} + +// SetSpotFleetRequestIds sets the SpotFleetRequestIds field's value. +func (s *CancelSpotFleetRequestsInput) SetSpotFleetRequestIds(v []*string) *CancelSpotFleetRequestsInput { + s.SpotFleetRequestIds = v + return s +} + +// SetTerminateInstances sets the TerminateInstances field's value. +func (s *CancelSpotFleetRequestsInput) SetTerminateInstances(v bool) *CancelSpotFleetRequestsInput { + s.TerminateInstances = &v + return s +} + +// Contains the output of CancelSpotFleetRequests. +type CancelSpotFleetRequestsOutput struct { + _ struct{} `type:"structure"` + + // Information about the Spot Fleet requests that are successfully canceled. + SuccessfulFleetRequests []*CancelSpotFleetRequestsSuccessItem `locationName:"successfulFleetRequestSet" locationNameList:"item" type:"list"` + + // Information about the Spot Fleet requests that are not successfully canceled. + UnsuccessfulFleetRequests []*CancelSpotFleetRequestsErrorItem `locationName:"unsuccessfulFleetRequestSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s CancelSpotFleetRequestsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CancelSpotFleetRequestsOutput) GoString() string { + return s.String() +} + +// SetSuccessfulFleetRequests sets the SuccessfulFleetRequests field's value. +func (s *CancelSpotFleetRequestsOutput) SetSuccessfulFleetRequests(v []*CancelSpotFleetRequestsSuccessItem) *CancelSpotFleetRequestsOutput { + s.SuccessfulFleetRequests = v + return s +} + +// SetUnsuccessfulFleetRequests sets the UnsuccessfulFleetRequests field's value. +func (s *CancelSpotFleetRequestsOutput) SetUnsuccessfulFleetRequests(v []*CancelSpotFleetRequestsErrorItem) *CancelSpotFleetRequestsOutput { + s.UnsuccessfulFleetRequests = v + return s +} + +// Describes a Spot Fleet request that was successfully canceled. +type CancelSpotFleetRequestsSuccessItem struct { + _ struct{} `type:"structure"` + + // The current state of the Spot Fleet request. + CurrentSpotFleetRequestState *string `locationName:"currentSpotFleetRequestState" type:"string" enum:"BatchState"` + + // The previous state of the Spot Fleet request. + PreviousSpotFleetRequestState *string `locationName:"previousSpotFleetRequestState" type:"string" enum:"BatchState"` + + // The ID of the Spot Fleet request. + SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string"` +} + +// String returns the string representation +func (s CancelSpotFleetRequestsSuccessItem) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CancelSpotFleetRequestsSuccessItem) GoString() string { + return s.String() +} + +// SetCurrentSpotFleetRequestState sets the CurrentSpotFleetRequestState field's value. +func (s *CancelSpotFleetRequestsSuccessItem) SetCurrentSpotFleetRequestState(v string) *CancelSpotFleetRequestsSuccessItem { + s.CurrentSpotFleetRequestState = &v + return s +} + +// SetPreviousSpotFleetRequestState sets the PreviousSpotFleetRequestState field's value. +func (s *CancelSpotFleetRequestsSuccessItem) SetPreviousSpotFleetRequestState(v string) *CancelSpotFleetRequestsSuccessItem { + s.PreviousSpotFleetRequestState = &v + return s +} + +// SetSpotFleetRequestId sets the SpotFleetRequestId field's value. +func (s *CancelSpotFleetRequestsSuccessItem) SetSpotFleetRequestId(v string) *CancelSpotFleetRequestsSuccessItem { + s.SpotFleetRequestId = &v + return s +} + +// Contains the parameters for CancelSpotInstanceRequests. +type CancelSpotInstanceRequestsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // One or more Spot Instance request IDs. + // + // SpotInstanceRequestIds is a required field + SpotInstanceRequestIds []*string `locationName:"SpotInstanceRequestId" locationNameList:"SpotInstanceRequestId" type:"list" required:"true"` +} + +// String returns the string representation +func (s CancelSpotInstanceRequestsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CancelSpotInstanceRequestsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CancelSpotInstanceRequestsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CancelSpotInstanceRequestsInput"} + if s.SpotInstanceRequestIds == nil { + invalidParams.Add(request.NewErrParamRequired("SpotInstanceRequestIds")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *CancelSpotInstanceRequestsInput) SetDryRun(v bool) *CancelSpotInstanceRequestsInput { + s.DryRun = &v + return s +} + +// SetSpotInstanceRequestIds sets the SpotInstanceRequestIds field's value. +func (s *CancelSpotInstanceRequestsInput) SetSpotInstanceRequestIds(v []*string) *CancelSpotInstanceRequestsInput { + s.SpotInstanceRequestIds = v + return s +} + +// Contains the output of CancelSpotInstanceRequests. +type CancelSpotInstanceRequestsOutput struct { + _ struct{} `type:"structure"` + + // One or more Spot Instance requests. + CancelledSpotInstanceRequests []*CancelledSpotInstanceRequest `locationName:"spotInstanceRequestSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s CancelSpotInstanceRequestsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CancelSpotInstanceRequestsOutput) GoString() string { + return s.String() +} + +// SetCancelledSpotInstanceRequests sets the CancelledSpotInstanceRequests field's value. +func (s *CancelSpotInstanceRequestsOutput) SetCancelledSpotInstanceRequests(v []*CancelledSpotInstanceRequest) *CancelSpotInstanceRequestsOutput { + s.CancelledSpotInstanceRequests = v + return s +} + +// Describes a request to cancel a Spot Instance. +type CancelledSpotInstanceRequest struct { + _ struct{} `type:"structure"` + + // The ID of the Spot Instance request. + SpotInstanceRequestId *string `locationName:"spotInstanceRequestId" type:"string"` + + // The state of the Spot Instance request. + State *string `locationName:"state" type:"string" enum:"CancelSpotInstanceRequestState"` +} + +// String returns the string representation +func (s CancelledSpotInstanceRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CancelledSpotInstanceRequest) GoString() string { + return s.String() +} + +// SetSpotInstanceRequestId sets the SpotInstanceRequestId field's value. +func (s *CancelledSpotInstanceRequest) SetSpotInstanceRequestId(v string) *CancelledSpotInstanceRequest { + s.SpotInstanceRequestId = &v + return s +} + +// SetState sets the State field's value. +func (s *CancelledSpotInstanceRequest) SetState(v string) *CancelledSpotInstanceRequest { + s.State = &v + return s +} + +// Describes a Capacity Reservation. +type CapacityReservation struct { + _ struct{} `type:"structure"` + + // The Availability Zone in which the capacity is reserved. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // The Availability Zone ID of the Capacity Reservation. + AvailabilityZoneId *string `locationName:"availabilityZoneId" type:"string"` + + // The remaining capacity. Indicates the number of instances that can be launched + // in the Capacity Reservation. + AvailableInstanceCount *int64 `locationName:"availableInstanceCount" type:"integer"` + + // The Amazon Resource Name (ARN) of the Capacity Reservation. + CapacityReservationArn *string `locationName:"capacityReservationArn" type:"string"` + + // The ID of the Capacity Reservation. + CapacityReservationId *string `locationName:"capacityReservationId" type:"string"` + + // The date and time at which the Capacity Reservation was created. + CreateDate *time.Time `locationName:"createDate" type:"timestamp"` + + // Indicates whether the Capacity Reservation supports EBS-optimized instances. + // This optimization provides dedicated throughput to Amazon EBS and an optimized + // configuration stack to provide optimal I/O performance. This optimization + // isn't available with all instance types. Additional usage charges apply when + // using an EBS- optimized instance. + EbsOptimized *bool `locationName:"ebsOptimized" type:"boolean"` + + // The date and time at which the Capacity Reservation expires. When a Capacity + // Reservation expires, the reserved capacity is released and you can no longer + // launch instances into it. The Capacity Reservation's state changes to expired + // when it reaches its end date and time. + EndDate *time.Time `locationName:"endDate" type:"timestamp"` + + // Indicates the way in which the Capacity Reservation ends. A Capacity Reservation + // can have one of the following end types: + // + // * unlimited - The Capacity Reservation remains active until you explicitly + // cancel it. + // + // * limited - The Capacity Reservation expires automatically at a specified + // date and time. + EndDateType *string `locationName:"endDateType" type:"string" enum:"EndDateType"` + + // Indicates whether the Capacity Reservation supports instances with temporary, + // block-level storage. + EphemeralStorage *bool `locationName:"ephemeralStorage" type:"boolean"` + + // Indicates the type of instance launches that the Capacity Reservation accepts. + // The options include: + // + // * open - The Capacity Reservation accepts all instances that have matching + // attributes (instance type, platform, and Availability Zone). Instances + // that have matching attributes launch into the Capacity Reservation automatically + // without specifying any additional parameters. + // + // * targeted - The Capacity Reservation only accepts instances that have + // matching attributes (instance type, platform, and Availability Zone), + // and explicitly target the Capacity Reservation. This ensures that only + // permitted instances can use the reserved capacity. + InstanceMatchCriteria *string `locationName:"instanceMatchCriteria" type:"string" enum:"InstanceMatchCriteria"` + + // The type of operating system for which the Capacity Reservation reserves + // capacity. + InstancePlatform *string `locationName:"instancePlatform" type:"string" enum:"CapacityReservationInstancePlatform"` + + // The type of instance for which the Capacity Reservation reserves capacity. + InstanceType *string `locationName:"instanceType" type:"string"` + + // The ID of the AWS account that owns the Capacity Reservation. + OwnerId *string `locationName:"ownerId" type:"string"` + + // The current state of the Capacity Reservation. A Capacity Reservation can + // be in one of the following states: + // + // * active - The Capacity Reservation is active and the capacity is available + // for your use. + // + // * expired - The Capacity Reservation expired automatically at the date + // and time specified in your request. The reserved capacity is no longer + // available for your use. + // + // * cancelled - The Capacity Reservation was manually cancelled. The reserved + // capacity is no longer available for your use. + // + // * pending - The Capacity Reservation request was successful but the capacity + // provisioning is still pending. + // + // * failed - The Capacity Reservation request has failed. A request might + // fail due to invalid request parameters, capacity constraints, or instance + // limit constraints. Failed requests are retained for 60 minutes. + State *string `locationName:"state" type:"string" enum:"CapacityReservationState"` + + // Any tags assigned to the Capacity Reservation. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // Indicates the tenancy of the Capacity Reservation. A Capacity Reservation + // can have one of the following tenancy settings: + // + // * default - The Capacity Reservation is created on hardware that is shared + // with other AWS accounts. + // + // * dedicated - The Capacity Reservation is created on single-tenant hardware + // that is dedicated to a single AWS account. + Tenancy *string `locationName:"tenancy" type:"string" enum:"CapacityReservationTenancy"` + + // The total number of instances for which the Capacity Reservation reserves + // capacity. + TotalInstanceCount *int64 `locationName:"totalInstanceCount" type:"integer"` +} + +// String returns the string representation +func (s CapacityReservation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CapacityReservation) GoString() string { + return s.String() +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *CapacityReservation) SetAvailabilityZone(v string) *CapacityReservation { + s.AvailabilityZone = &v + return s +} + +// SetAvailabilityZoneId sets the AvailabilityZoneId field's value. +func (s *CapacityReservation) SetAvailabilityZoneId(v string) *CapacityReservation { + s.AvailabilityZoneId = &v + return s +} + +// SetAvailableInstanceCount sets the AvailableInstanceCount field's value. +func (s *CapacityReservation) SetAvailableInstanceCount(v int64) *CapacityReservation { + s.AvailableInstanceCount = &v + return s +} + +// SetCapacityReservationArn sets the CapacityReservationArn field's value. +func (s *CapacityReservation) SetCapacityReservationArn(v string) *CapacityReservation { + s.CapacityReservationArn = &v + return s +} + +// SetCapacityReservationId sets the CapacityReservationId field's value. +func (s *CapacityReservation) SetCapacityReservationId(v string) *CapacityReservation { + s.CapacityReservationId = &v + return s +} + +// SetCreateDate sets the CreateDate field's value. +func (s *CapacityReservation) SetCreateDate(v time.Time) *CapacityReservation { + s.CreateDate = &v + return s +} + +// SetEbsOptimized sets the EbsOptimized field's value. +func (s *CapacityReservation) SetEbsOptimized(v bool) *CapacityReservation { + s.EbsOptimized = &v + return s +} + +// SetEndDate sets the EndDate field's value. +func (s *CapacityReservation) SetEndDate(v time.Time) *CapacityReservation { + s.EndDate = &v + return s +} + +// SetEndDateType sets the EndDateType field's value. +func (s *CapacityReservation) SetEndDateType(v string) *CapacityReservation { + s.EndDateType = &v + return s +} + +// SetEphemeralStorage sets the EphemeralStorage field's value. +func (s *CapacityReservation) SetEphemeralStorage(v bool) *CapacityReservation { + s.EphemeralStorage = &v + return s +} + +// SetInstanceMatchCriteria sets the InstanceMatchCriteria field's value. +func (s *CapacityReservation) SetInstanceMatchCriteria(v string) *CapacityReservation { + s.InstanceMatchCriteria = &v + return s +} + +// SetInstancePlatform sets the InstancePlatform field's value. +func (s *CapacityReservation) SetInstancePlatform(v string) *CapacityReservation { + s.InstancePlatform = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *CapacityReservation) SetInstanceType(v string) *CapacityReservation { + s.InstanceType = &v + return s +} + +// SetOwnerId sets the OwnerId field's value. +func (s *CapacityReservation) SetOwnerId(v string) *CapacityReservation { + s.OwnerId = &v + return s +} + +// SetState sets the State field's value. +func (s *CapacityReservation) SetState(v string) *CapacityReservation { + s.State = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *CapacityReservation) SetTags(v []*Tag) *CapacityReservation { + s.Tags = v + return s +} + +// SetTenancy sets the Tenancy field's value. +func (s *CapacityReservation) SetTenancy(v string) *CapacityReservation { + s.Tenancy = &v + return s +} + +// SetTotalInstanceCount sets the TotalInstanceCount field's value. +func (s *CapacityReservation) SetTotalInstanceCount(v int64) *CapacityReservation { + s.TotalInstanceCount = &v + return s +} + +// Describes an instance's Capacity Reservation targeting option. You can specify +// only one parameter at a time. If you specify CapacityReservationPreference +// and CapacityReservationTarget, the request fails. +// +// Use the CapacityReservationPreference parameter to configure the instance +// to run as an On-Demand Instance or to run in any open Capacity Reservation +// that has matching attributes (instance type, platform, Availability Zone). +// Use the CapacityReservationTarget parameter to explicitly target a specific +// Capacity Reservation. +type CapacityReservationSpecification struct { + _ struct{} `type:"structure"` + + // Indicates the instance's Capacity Reservation preferences. Possible preferences + // include: + // + // * open - The instance can run in any open Capacity Reservation that has + // matching attributes (instance type, platform, Availability Zone). + // + // * none - The instance avoids running in a Capacity Reservation even if + // one is available. The instance runs as an On-Demand Instance. + CapacityReservationPreference *string `type:"string" enum:"CapacityReservationPreference"` + + // Information about the target Capacity Reservation. + CapacityReservationTarget *CapacityReservationTarget `type:"structure"` +} + +// String returns the string representation +func (s CapacityReservationSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CapacityReservationSpecification) GoString() string { + return s.String() +} + +// SetCapacityReservationPreference sets the CapacityReservationPreference field's value. +func (s *CapacityReservationSpecification) SetCapacityReservationPreference(v string) *CapacityReservationSpecification { + s.CapacityReservationPreference = &v + return s +} + +// SetCapacityReservationTarget sets the CapacityReservationTarget field's value. +func (s *CapacityReservationSpecification) SetCapacityReservationTarget(v *CapacityReservationTarget) *CapacityReservationSpecification { + s.CapacityReservationTarget = v + return s +} + +// Describes the instance's Capacity Reservation targeting preferences. The +// action returns the capacityReservationPreference response element if the +// instance is configured to run in On-Demand capacity, or if it is configured +// in run in any open Capacity Reservation that has matching attributes (instance +// type, platform, Availability Zone). The action returns the capacityReservationTarget +// response element if the instance explicily targets a specific Capacity Reservation. +type CapacityReservationSpecificationResponse struct { + _ struct{} `type:"structure"` + + // Describes the instance's Capacity Reservation preferences. Possible preferences + // include: + // + // * open - The instance can run in any open Capacity Reservation that has + // matching attributes (instance type, platform, Availability Zone). + // + // * none - The instance avoids running in a Capacity Reservation even if + // one is available. The instance runs in On-Demand capacity. + CapacityReservationPreference *string `locationName:"capacityReservationPreference" type:"string" enum:"CapacityReservationPreference"` + + // Information about the targeted Capacity Reservation. + CapacityReservationTarget *CapacityReservationTargetResponse `locationName:"capacityReservationTarget" type:"structure"` +} + +// String returns the string representation +func (s CapacityReservationSpecificationResponse) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CapacityReservationSpecificationResponse) GoString() string { + return s.String() +} + +// SetCapacityReservationPreference sets the CapacityReservationPreference field's value. +func (s *CapacityReservationSpecificationResponse) SetCapacityReservationPreference(v string) *CapacityReservationSpecificationResponse { + s.CapacityReservationPreference = &v + return s +} + +// SetCapacityReservationTarget sets the CapacityReservationTarget field's value. +func (s *CapacityReservationSpecificationResponse) SetCapacityReservationTarget(v *CapacityReservationTargetResponse) *CapacityReservationSpecificationResponse { + s.CapacityReservationTarget = v + return s +} + +// Describes a target Capacity Reservation. +type CapacityReservationTarget struct { + _ struct{} `type:"structure"` + + // The ID of the Capacity Reservation. + CapacityReservationId *string `type:"string"` +} + +// String returns the string representation +func (s CapacityReservationTarget) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CapacityReservationTarget) GoString() string { + return s.String() +} + +// SetCapacityReservationId sets the CapacityReservationId field's value. +func (s *CapacityReservationTarget) SetCapacityReservationId(v string) *CapacityReservationTarget { + s.CapacityReservationId = &v + return s +} + +// Describes a target Capacity Reservation. +type CapacityReservationTargetResponse struct { + _ struct{} `type:"structure"` + + // The ID of the Capacity Reservation. + CapacityReservationId *string `locationName:"capacityReservationId" type:"string"` +} + +// String returns the string representation +func (s CapacityReservationTargetResponse) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CapacityReservationTargetResponse) GoString() string { + return s.String() +} + +// SetCapacityReservationId sets the CapacityReservationId field's value. +func (s *CapacityReservationTargetResponse) SetCapacityReservationId(v string) *CapacityReservationTargetResponse { + s.CapacityReservationId = &v + return s +} + +// Information about the client certificate used for authentication. +type CertificateAuthentication struct { + _ struct{} `type:"structure"` + + // The ARN of the client certificate. + ClientRootCertificateChain *string `locationName:"clientRootCertificateChain" type:"string"` +} + +// String returns the string representation +func (s CertificateAuthentication) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CertificateAuthentication) GoString() string { + return s.String() +} + +// SetClientRootCertificateChain sets the ClientRootCertificateChain field's value. +func (s *CertificateAuthentication) SetClientRootCertificateChain(v string) *CertificateAuthentication { + s.ClientRootCertificateChain = &v + return s +} + +// Information about the client certificate to be used for authentication. +type CertificateAuthenticationRequest struct { + _ struct{} `type:"structure"` + + // The ARN of the client certificate. The certificate must be signed by a certificate + // authority (CA) and it must be provisioned in AWS Certificate Manager (ACM). + ClientRootCertificateChainArn *string `type:"string"` +} + +// String returns the string representation +func (s CertificateAuthenticationRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CertificateAuthenticationRequest) GoString() string { + return s.String() +} + +// SetClientRootCertificateChainArn sets the ClientRootCertificateChainArn field's value. +func (s *CertificateAuthenticationRequest) SetClientRootCertificateChainArn(v string) *CertificateAuthenticationRequest { + s.ClientRootCertificateChainArn = &v + return s +} + +// Provides authorization for Amazon to bring a specific IP address range to +// a specific AWS account using bring your own IP addresses (BYOIP). For more +// information, see Prepare to Bring Your Address Range to Your AWS Account +// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html#prepare-for-byoip) +// in the Amazon Elastic Compute Cloud User Guide. +type CidrAuthorizationContext struct { + _ struct{} `type:"structure"` + + // The plain-text authorization message for the prefix and account. + // + // Message is a required field + Message *string `type:"string" required:"true"` + + // The signed authorization message for the prefix and account. + // + // Signature is a required field + Signature *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s CidrAuthorizationContext) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CidrAuthorizationContext) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CidrAuthorizationContext) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CidrAuthorizationContext"} + if s.Message == nil { + invalidParams.Add(request.NewErrParamRequired("Message")) + } + if s.Signature == nil { + invalidParams.Add(request.NewErrParamRequired("Signature")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetMessage sets the Message field's value. +func (s *CidrAuthorizationContext) SetMessage(v string) *CidrAuthorizationContext { + s.Message = &v + return s +} + +// SetSignature sets the Signature field's value. +func (s *CidrAuthorizationContext) SetSignature(v string) *CidrAuthorizationContext { + s.Signature = &v + return s +} + +// Describes an IPv4 CIDR block. +type CidrBlock struct { + _ struct{} `type:"structure"` + + // The IPv4 CIDR block. + CidrBlock *string `locationName:"cidrBlock" type:"string"` +} + +// String returns the string representation +func (s CidrBlock) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CidrBlock) GoString() string { + return s.String() +} + +// SetCidrBlock sets the CidrBlock field's value. +func (s *CidrBlock) SetCidrBlock(v string) *CidrBlock { + s.CidrBlock = &v + return s +} + +// Describes the ClassicLink DNS support status of a VPC. +type ClassicLinkDnsSupport struct { + _ struct{} `type:"structure"` + + // Indicates whether ClassicLink DNS support is enabled for the VPC. + ClassicLinkDnsSupported *bool `locationName:"classicLinkDnsSupported" type:"boolean"` + + // The ID of the VPC. + VpcId *string `locationName:"vpcId" type:"string"` +} + +// String returns the string representation +func (s ClassicLinkDnsSupport) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ClassicLinkDnsSupport) GoString() string { + return s.String() +} + +// SetClassicLinkDnsSupported sets the ClassicLinkDnsSupported field's value. +func (s *ClassicLinkDnsSupport) SetClassicLinkDnsSupported(v bool) *ClassicLinkDnsSupport { + s.ClassicLinkDnsSupported = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *ClassicLinkDnsSupport) SetVpcId(v string) *ClassicLinkDnsSupport { + s.VpcId = &v + return s +} + +// Describes a linked EC2-Classic instance. +type ClassicLinkInstance struct { + _ struct{} `type:"structure"` + + // A list of security groups. + Groups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"` + + // The ID of the instance. + InstanceId *string `locationName:"instanceId" type:"string"` + + // Any tags assigned to the instance. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The ID of the VPC. + VpcId *string `locationName:"vpcId" type:"string"` +} + +// String returns the string representation +func (s ClassicLinkInstance) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ClassicLinkInstance) GoString() string { + return s.String() +} + +// SetGroups sets the Groups field's value. +func (s *ClassicLinkInstance) SetGroups(v []*GroupIdentifier) *ClassicLinkInstance { + s.Groups = v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *ClassicLinkInstance) SetInstanceId(v string) *ClassicLinkInstance { + s.InstanceId = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *ClassicLinkInstance) SetTags(v []*Tag) *ClassicLinkInstance { + s.Tags = v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *ClassicLinkInstance) SetVpcId(v string) *ClassicLinkInstance { + s.VpcId = &v + return s +} + +// Describes a Classic Load Balancer. +type ClassicLoadBalancer struct { + _ struct{} `type:"structure"` + + // The name of the load balancer. + Name *string `locationName:"name" type:"string"` +} + +// String returns the string representation +func (s ClassicLoadBalancer) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ClassicLoadBalancer) GoString() string { + return s.String() +} + +// SetName sets the Name field's value. +func (s *ClassicLoadBalancer) SetName(v string) *ClassicLoadBalancer { + s.Name = &v + return s +} + +// Describes the Classic Load Balancers to attach to a Spot Fleet. Spot Fleet +// registers the running Spot Instances with these Classic Load Balancers. +type ClassicLoadBalancersConfig struct { + _ struct{} `type:"structure"` + + // One or more Classic Load Balancers. + ClassicLoadBalancers []*ClassicLoadBalancer `locationName:"classicLoadBalancers" locationNameList:"item" min:"1" type:"list"` +} + +// String returns the string representation +func (s ClassicLoadBalancersConfig) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ClassicLoadBalancersConfig) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ClassicLoadBalancersConfig) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ClassicLoadBalancersConfig"} + if s.ClassicLoadBalancers != nil && len(s.ClassicLoadBalancers) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ClassicLoadBalancers", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClassicLoadBalancers sets the ClassicLoadBalancers field's value. +func (s *ClassicLoadBalancersConfig) SetClassicLoadBalancers(v []*ClassicLoadBalancer) *ClassicLoadBalancersConfig { + s.ClassicLoadBalancers = v + return s +} + +// Describes the state of a client certificate revocation list. +type ClientCertificateRevocationListStatus struct { + _ struct{} `type:"structure"` + + // The state of the client certificate revocation list. + Code *string `locationName:"code" type:"string" enum:"ClientCertificateRevocationListStatusCode"` + + // A message about the status of the client certificate revocation list, if + // applicable. + Message *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s ClientCertificateRevocationListStatus) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ClientCertificateRevocationListStatus) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *ClientCertificateRevocationListStatus) SetCode(v string) *ClientCertificateRevocationListStatus { + s.Code = &v + return s +} + +// SetMessage sets the Message field's value. +func (s *ClientCertificateRevocationListStatus) SetMessage(v string) *ClientCertificateRevocationListStatus { + s.Message = &v + return s +} + +// Describes the client-specific data. +type ClientData struct { + _ struct{} `type:"structure"` + + // A user-defined comment about the disk upload. + Comment *string `type:"string"` + + // The time that the disk upload ends. + UploadEnd *time.Time `type:"timestamp"` + + // The size of the uploaded disk image, in GiB. + UploadSize *float64 `type:"double"` + + // The time that the disk upload starts. + UploadStart *time.Time `type:"timestamp"` +} + +// String returns the string representation +func (s ClientData) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ClientData) GoString() string { + return s.String() +} + +// SetComment sets the Comment field's value. +func (s *ClientData) SetComment(v string) *ClientData { + s.Comment = &v + return s +} + +// SetUploadEnd sets the UploadEnd field's value. +func (s *ClientData) SetUploadEnd(v time.Time) *ClientData { + s.UploadEnd = &v + return s +} + +// SetUploadSize sets the UploadSize field's value. +func (s *ClientData) SetUploadSize(v float64) *ClientData { + s.UploadSize = &v + return s +} + +// SetUploadStart sets the UploadStart field's value. +func (s *ClientData) SetUploadStart(v time.Time) *ClientData { + s.UploadStart = &v + return s +} + +// Describes the authentication methods used by a Client VPN endpoint. Client +// VPN supports Active Directory and mutual authentication. For more information, +// see Authentication (https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/authentication-authrization.html#client-authentication) +// in the AWS Client VPN Administrator Guide. +type ClientVpnAuthentication struct { + _ struct{} `type:"structure"` + + // Information about the Active Directory, if applicable. + ActiveDirectory *DirectoryServiceAuthentication `locationName:"activeDirectory" type:"structure"` + + // Information about the authentication certificates, if applicable. + MutualAuthentication *CertificateAuthentication `locationName:"mutualAuthentication" type:"structure"` + + // The authentication type used. + Type *string `locationName:"type" type:"string" enum:"ClientVpnAuthenticationType"` +} + +// String returns the string representation +func (s ClientVpnAuthentication) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ClientVpnAuthentication) GoString() string { + return s.String() +} + +// SetActiveDirectory sets the ActiveDirectory field's value. +func (s *ClientVpnAuthentication) SetActiveDirectory(v *DirectoryServiceAuthentication) *ClientVpnAuthentication { + s.ActiveDirectory = v + return s +} + +// SetMutualAuthentication sets the MutualAuthentication field's value. +func (s *ClientVpnAuthentication) SetMutualAuthentication(v *CertificateAuthentication) *ClientVpnAuthentication { + s.MutualAuthentication = v + return s +} + +// SetType sets the Type field's value. +func (s *ClientVpnAuthentication) SetType(v string) *ClientVpnAuthentication { + s.Type = &v + return s +} + +// Describes the authentication method to be used by a Client VPN endpoint. +// Client VPN supports Active Directory and mutual authentication. For more +// information, see Authentication (https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/authentication-authrization.html#client-authentication) +// in the AWS Client VPN Administrator Guide. +type ClientVpnAuthenticationRequest struct { + _ struct{} `type:"structure"` + + // Information about the Active Directory to be used, if applicable. You must + // provide this information if Type is directory-service-authentication. + ActiveDirectory *DirectoryServiceAuthenticationRequest `type:"structure"` + + // Information about the authentication certificates to be used, if applicable. + // You must provide this information if Type is certificate-authentication. + MutualAuthentication *CertificateAuthenticationRequest `type:"structure"` + + // The type of client authentication to be used. Specify certificate-authentication + // to use certificate-based authentication, or directory-service-authentication + // to use Active Directory authentication. + Type *string `type:"string" enum:"ClientVpnAuthenticationType"` +} + +// String returns the string representation +func (s ClientVpnAuthenticationRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ClientVpnAuthenticationRequest) GoString() string { + return s.String() +} + +// SetActiveDirectory sets the ActiveDirectory field's value. +func (s *ClientVpnAuthenticationRequest) SetActiveDirectory(v *DirectoryServiceAuthenticationRequest) *ClientVpnAuthenticationRequest { + s.ActiveDirectory = v + return s +} + +// SetMutualAuthentication sets the MutualAuthentication field's value. +func (s *ClientVpnAuthenticationRequest) SetMutualAuthentication(v *CertificateAuthenticationRequest) *ClientVpnAuthenticationRequest { + s.MutualAuthentication = v + return s +} + +// SetType sets the Type field's value. +func (s *ClientVpnAuthenticationRequest) SetType(v string) *ClientVpnAuthenticationRequest { + s.Type = &v + return s +} + +// Describes the state of an authorization rule. +type ClientVpnAuthorizationRuleStatus struct { + _ struct{} `type:"structure"` + + // The state of the authorization rule. + Code *string `locationName:"code" type:"string" enum:"ClientVpnAuthorizationRuleStatusCode"` + + // A message about the status of the authorization rule, if applicable. + Message *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s ClientVpnAuthorizationRuleStatus) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ClientVpnAuthorizationRuleStatus) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *ClientVpnAuthorizationRuleStatus) SetCode(v string) *ClientVpnAuthorizationRuleStatus { + s.Code = &v + return s +} + +// SetMessage sets the Message field's value. +func (s *ClientVpnAuthorizationRuleStatus) SetMessage(v string) *ClientVpnAuthorizationRuleStatus { + s.Message = &v + return s +} + +// Describes a client connection. +type ClientVpnConnection struct { + _ struct{} `type:"structure"` + + // The IP address of the client. + ClientIp *string `locationName:"clientIp" type:"string"` + + // The ID of the Client VPN endpoint to which the client is connected. + ClientVpnEndpointId *string `locationName:"clientVpnEndpointId" type:"string"` + + // The common name associated with the client. This is either the name of the + // client certificate, or the Active Directory user name. + CommonName *string `locationName:"commonName" type:"string"` + + // The date and time the client connection was terminated. + ConnectionEndTime *string `locationName:"connectionEndTime" type:"string"` + + // The date and time the client connection was established. + ConnectionEstablishedTime *string `locationName:"connectionEstablishedTime" type:"string"` + + // The ID of the client connection. + ConnectionId *string `locationName:"connectionId" type:"string"` + + // The number of bytes received by the client. + EgressBytes *string `locationName:"egressBytes" type:"string"` + + // The number of packets received by the client. + EgressPackets *string `locationName:"egressPackets" type:"string"` + + // The number of bytes sent by the client. + IngressBytes *string `locationName:"ingressBytes" type:"string"` + + // The number of packets sent by the client. + IngressPackets *string `locationName:"ingressPackets" type:"string"` + + // The current state of the client connection. + Status *ClientVpnConnectionStatus `locationName:"status" type:"structure"` + + // The current date and time. + Timestamp *string `locationName:"timestamp" type:"string"` + + // The username of the client who established the client connection. This information + // is only provided if Active Directory client authentication is used. + Username *string `locationName:"username" type:"string"` +} + +// String returns the string representation +func (s ClientVpnConnection) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ClientVpnConnection) GoString() string { + return s.String() +} + +// SetClientIp sets the ClientIp field's value. +func (s *ClientVpnConnection) SetClientIp(v string) *ClientVpnConnection { + s.ClientIp = &v + return s +} + +// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value. +func (s *ClientVpnConnection) SetClientVpnEndpointId(v string) *ClientVpnConnection { + s.ClientVpnEndpointId = &v + return s +} + +// SetCommonName sets the CommonName field's value. +func (s *ClientVpnConnection) SetCommonName(v string) *ClientVpnConnection { + s.CommonName = &v + return s +} + +// SetConnectionEndTime sets the ConnectionEndTime field's value. +func (s *ClientVpnConnection) SetConnectionEndTime(v string) *ClientVpnConnection { + s.ConnectionEndTime = &v + return s +} + +// SetConnectionEstablishedTime sets the ConnectionEstablishedTime field's value. +func (s *ClientVpnConnection) SetConnectionEstablishedTime(v string) *ClientVpnConnection { + s.ConnectionEstablishedTime = &v + return s +} + +// SetConnectionId sets the ConnectionId field's value. +func (s *ClientVpnConnection) SetConnectionId(v string) *ClientVpnConnection { + s.ConnectionId = &v + return s +} + +// SetEgressBytes sets the EgressBytes field's value. +func (s *ClientVpnConnection) SetEgressBytes(v string) *ClientVpnConnection { + s.EgressBytes = &v + return s +} + +// SetEgressPackets sets the EgressPackets field's value. +func (s *ClientVpnConnection) SetEgressPackets(v string) *ClientVpnConnection { + s.EgressPackets = &v + return s +} + +// SetIngressBytes sets the IngressBytes field's value. +func (s *ClientVpnConnection) SetIngressBytes(v string) *ClientVpnConnection { + s.IngressBytes = &v + return s +} + +// SetIngressPackets sets the IngressPackets field's value. +func (s *ClientVpnConnection) SetIngressPackets(v string) *ClientVpnConnection { + s.IngressPackets = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *ClientVpnConnection) SetStatus(v *ClientVpnConnectionStatus) *ClientVpnConnection { + s.Status = v + return s +} + +// SetTimestamp sets the Timestamp field's value. +func (s *ClientVpnConnection) SetTimestamp(v string) *ClientVpnConnection { + s.Timestamp = &v + return s +} + +// SetUsername sets the Username field's value. +func (s *ClientVpnConnection) SetUsername(v string) *ClientVpnConnection { + s.Username = &v + return s +} + +// Describes the status of a client connection. +type ClientVpnConnectionStatus struct { + _ struct{} `type:"structure"` + + // The state of the client connection. + Code *string `locationName:"code" type:"string" enum:"ClientVpnConnectionStatusCode"` + + // A message about the status of the client connection, if applicable. + Message *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s ClientVpnConnectionStatus) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ClientVpnConnectionStatus) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *ClientVpnConnectionStatus) SetCode(v string) *ClientVpnConnectionStatus { + s.Code = &v + return s +} + +// SetMessage sets the Message field's value. +func (s *ClientVpnConnectionStatus) SetMessage(v string) *ClientVpnConnectionStatus { + s.Message = &v + return s +} + +// Describes a Client VPN endpoint. +type ClientVpnEndpoint struct { + _ struct{} `type:"structure"` + + // Information about the associated target networks. A target network is a subnet + // in a VPC. + // + // Deprecated: This property is deprecated. To view the target networks associated with a Client VPN endpoint, call DescribeClientVpnTargetNetworks and inspect the clientVpnTargetNetworks response element. + AssociatedTargetNetworks []*AssociatedTargetNetwork `locationName:"associatedTargetNetwork" locationNameList:"item" deprecated:"true" type:"list"` + + // Information about the authentication method used by the Client VPN endpoint. + AuthenticationOptions []*ClientVpnAuthentication `locationName:"authenticationOptions" locationNameList:"item" type:"list"` + + // The IPv4 address range, in CIDR notation, from which client IP addresses + // are assigned. + ClientCidrBlock *string `locationName:"clientCidrBlock" type:"string"` + + // The ID of the Client VPN endpoint. + ClientVpnEndpointId *string `locationName:"clientVpnEndpointId" type:"string"` + + // Information about the client connection logging options for the Client VPN + // endpoint. + ConnectionLogOptions *ConnectionLogResponseOptions `locationName:"connectionLogOptions" type:"structure"` + + // The date and time the Client VPN endpoint was created. + CreationTime *string `locationName:"creationTime" type:"string"` + + // The date and time the Client VPN endpoint was deleted, if applicable. + DeletionTime *string `locationName:"deletionTime" type:"string"` + + // A brief description of the endpoint. + Description *string `locationName:"description" type:"string"` + + // The DNS name to be used by clients when connecting to the Client VPN endpoint. + DnsName *string `locationName:"dnsName" type:"string"` + + // Information about the DNS servers to be used for DNS resolution. + DnsServers []*string `locationName:"dnsServer" locationNameList:"item" type:"list"` + + // The ARN of the server certificate. + ServerCertificateArn *string `locationName:"serverCertificateArn" type:"string"` + + // Indicates whether split-tunnel is enabled in the AWS Client VPN endpoint. + // + // For information about split-tunnel VPN endpoints, see Split-Tunnel AWS Client + // VPN Endpoint (https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/split-tunnel-vpn.html) + // in the AWS Client VPN Administrator Guide. + SplitTunnel *bool `locationName:"splitTunnel" type:"boolean"` + + // The current state of the Client VPN endpoint. + Status *ClientVpnEndpointStatus `locationName:"status" type:"structure"` + + // Any tags assigned to the Client VPN endpoint. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The transport protocol used by the Client VPN endpoint. + TransportProtocol *string `locationName:"transportProtocol" type:"string" enum:"TransportProtocol"` + + // The protocol used by the VPN session. + VpnProtocol *string `locationName:"vpnProtocol" type:"string" enum:"VpnProtocol"` +} + +// String returns the string representation +func (s ClientVpnEndpoint) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ClientVpnEndpoint) GoString() string { + return s.String() +} + +// SetAssociatedTargetNetworks sets the AssociatedTargetNetworks field's value. +func (s *ClientVpnEndpoint) SetAssociatedTargetNetworks(v []*AssociatedTargetNetwork) *ClientVpnEndpoint { + s.AssociatedTargetNetworks = v + return s +} + +// SetAuthenticationOptions sets the AuthenticationOptions field's value. +func (s *ClientVpnEndpoint) SetAuthenticationOptions(v []*ClientVpnAuthentication) *ClientVpnEndpoint { + s.AuthenticationOptions = v + return s +} + +// SetClientCidrBlock sets the ClientCidrBlock field's value. +func (s *ClientVpnEndpoint) SetClientCidrBlock(v string) *ClientVpnEndpoint { + s.ClientCidrBlock = &v + return s +} + +// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value. +func (s *ClientVpnEndpoint) SetClientVpnEndpointId(v string) *ClientVpnEndpoint { + s.ClientVpnEndpointId = &v + return s +} + +// SetConnectionLogOptions sets the ConnectionLogOptions field's value. +func (s *ClientVpnEndpoint) SetConnectionLogOptions(v *ConnectionLogResponseOptions) *ClientVpnEndpoint { + s.ConnectionLogOptions = v + return s +} + +// SetCreationTime sets the CreationTime field's value. +func (s *ClientVpnEndpoint) SetCreationTime(v string) *ClientVpnEndpoint { + s.CreationTime = &v + return s +} + +// SetDeletionTime sets the DeletionTime field's value. +func (s *ClientVpnEndpoint) SetDeletionTime(v string) *ClientVpnEndpoint { + s.DeletionTime = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *ClientVpnEndpoint) SetDescription(v string) *ClientVpnEndpoint { + s.Description = &v + return s +} + +// SetDnsName sets the DnsName field's value. +func (s *ClientVpnEndpoint) SetDnsName(v string) *ClientVpnEndpoint { + s.DnsName = &v + return s +} + +// SetDnsServers sets the DnsServers field's value. +func (s *ClientVpnEndpoint) SetDnsServers(v []*string) *ClientVpnEndpoint { + s.DnsServers = v + return s +} + +// SetServerCertificateArn sets the ServerCertificateArn field's value. +func (s *ClientVpnEndpoint) SetServerCertificateArn(v string) *ClientVpnEndpoint { + s.ServerCertificateArn = &v + return s +} + +// SetSplitTunnel sets the SplitTunnel field's value. +func (s *ClientVpnEndpoint) SetSplitTunnel(v bool) *ClientVpnEndpoint { + s.SplitTunnel = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *ClientVpnEndpoint) SetStatus(v *ClientVpnEndpointStatus) *ClientVpnEndpoint { + s.Status = v + return s +} + +// SetTags sets the Tags field's value. +func (s *ClientVpnEndpoint) SetTags(v []*Tag) *ClientVpnEndpoint { + s.Tags = v + return s +} + +// SetTransportProtocol sets the TransportProtocol field's value. +func (s *ClientVpnEndpoint) SetTransportProtocol(v string) *ClientVpnEndpoint { + s.TransportProtocol = &v + return s +} + +// SetVpnProtocol sets the VpnProtocol field's value. +func (s *ClientVpnEndpoint) SetVpnProtocol(v string) *ClientVpnEndpoint { + s.VpnProtocol = &v + return s +} + +// Describes the state of a Client VPN endpoint. +type ClientVpnEndpointStatus struct { + _ struct{} `type:"structure"` + + // The state of the Client VPN endpoint. Possible states include: + // + // * pending-associate - The Client VPN endpoint has been created but no + // target networks have been associated. The Client VPN endpoint cannot accept + // connections. + // + // * available - The Client VPN endpoint has been created and a target network + // has been associated. The Client VPN endpoint can accept connections. + // + // * deleting - The Client VPN endpoint is being deleted. The Client VPN + // endpoint cannot accept connections. + // + // * deleted - The Client VPN endpoint has been deleted. The Client VPN endpoint + // cannot accept connections. + Code *string `locationName:"code" type:"string" enum:"ClientVpnEndpointStatusCode"` + + // A message about the status of the Client VPN endpoint. + Message *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s ClientVpnEndpointStatus) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ClientVpnEndpointStatus) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *ClientVpnEndpointStatus) SetCode(v string) *ClientVpnEndpointStatus { + s.Code = &v + return s +} + +// SetMessage sets the Message field's value. +func (s *ClientVpnEndpointStatus) SetMessage(v string) *ClientVpnEndpointStatus { + s.Message = &v + return s +} + +// Information about a Client VPN endpoint route. +type ClientVpnRoute struct { + _ struct{} `type:"structure"` + + // The ID of the Client VPN endpoint with which the route is associated. + ClientVpnEndpointId *string `locationName:"clientVpnEndpointId" type:"string"` + + // A brief description of the route. + Description *string `locationName:"description" type:"string"` + + // The IPv4 address range, in CIDR notation, of the route destination. + DestinationCidr *string `locationName:"destinationCidr" type:"string"` + + // Indicates how the route was associated with the Client VPN endpoint. associate + // indicates that the route was automatically added when the target network + // was associated with the Client VPN endpoint. add-route indicates that the + // route was manually added using the CreateClientVpnRoute action. + Origin *string `locationName:"origin" type:"string"` + + // The current state of the route. + Status *ClientVpnRouteStatus `locationName:"status" type:"structure"` + + // The ID of the subnet through which traffic is routed. + TargetSubnet *string `locationName:"targetSubnet" type:"string"` + + // The route type. + Type *string `locationName:"type" type:"string"` +} + +// String returns the string representation +func (s ClientVpnRoute) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ClientVpnRoute) GoString() string { + return s.String() +} + +// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value. +func (s *ClientVpnRoute) SetClientVpnEndpointId(v string) *ClientVpnRoute { + s.ClientVpnEndpointId = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *ClientVpnRoute) SetDescription(v string) *ClientVpnRoute { + s.Description = &v + return s +} + +// SetDestinationCidr sets the DestinationCidr field's value. +func (s *ClientVpnRoute) SetDestinationCidr(v string) *ClientVpnRoute { + s.DestinationCidr = &v + return s +} + +// SetOrigin sets the Origin field's value. +func (s *ClientVpnRoute) SetOrigin(v string) *ClientVpnRoute { + s.Origin = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *ClientVpnRoute) SetStatus(v *ClientVpnRouteStatus) *ClientVpnRoute { + s.Status = v + return s +} + +// SetTargetSubnet sets the TargetSubnet field's value. +func (s *ClientVpnRoute) SetTargetSubnet(v string) *ClientVpnRoute { + s.TargetSubnet = &v + return s +} + +// SetType sets the Type field's value. +func (s *ClientVpnRoute) SetType(v string) *ClientVpnRoute { + s.Type = &v + return s +} + +// Describes the state of a Client VPN endpoint route. +type ClientVpnRouteStatus struct { + _ struct{} `type:"structure"` + + // The state of the Client VPN endpoint route. + Code *string `locationName:"code" type:"string" enum:"ClientVpnRouteStatusCode"` + + // A message about the status of the Client VPN endpoint route, if applicable. + Message *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s ClientVpnRouteStatus) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ClientVpnRouteStatus) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *ClientVpnRouteStatus) SetCode(v string) *ClientVpnRouteStatus { + s.Code = &v + return s +} + +// SetMessage sets the Message field's value. +func (s *ClientVpnRouteStatus) SetMessage(v string) *ClientVpnRouteStatus { + s.Message = &v + return s +} + +type ConfirmProductInstanceInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the instance. + // + // InstanceId is a required field + InstanceId *string `type:"string" required:"true"` + + // The product code. This must be a product code that you own. + // + // ProductCode is a required field + ProductCode *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s ConfirmProductInstanceInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ConfirmProductInstanceInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ConfirmProductInstanceInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ConfirmProductInstanceInput"} + if s.InstanceId == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceId")) + } + if s.ProductCode == nil { + invalidParams.Add(request.NewErrParamRequired("ProductCode")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *ConfirmProductInstanceInput) SetDryRun(v bool) *ConfirmProductInstanceInput { + s.DryRun = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *ConfirmProductInstanceInput) SetInstanceId(v string) *ConfirmProductInstanceInput { + s.InstanceId = &v + return s +} + +// SetProductCode sets the ProductCode field's value. +func (s *ConfirmProductInstanceInput) SetProductCode(v string) *ConfirmProductInstanceInput { + s.ProductCode = &v + return s +} + +type ConfirmProductInstanceOutput struct { + _ struct{} `type:"structure"` + + // The AWS account ID of the instance owner. This is only present if the product + // code is attached to the instance. + OwnerId *string `locationName:"ownerId" type:"string"` + + // The return value of the request. Returns true if the specified product code + // is owned by the requester and associated with the specified instance. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s ConfirmProductInstanceOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ConfirmProductInstanceOutput) GoString() string { + return s.String() +} + +// SetOwnerId sets the OwnerId field's value. +func (s *ConfirmProductInstanceOutput) SetOwnerId(v string) *ConfirmProductInstanceOutput { + s.OwnerId = &v + return s +} + +// SetReturn sets the Return field's value. +func (s *ConfirmProductInstanceOutput) SetReturn(v bool) *ConfirmProductInstanceOutput { + s.Return = &v + return s +} + +// Describes the client connection logging options for the Client VPN endpoint. +type ConnectionLogOptions struct { + _ struct{} `type:"structure"` + + // The name of the CloudWatch Logs log group. + CloudwatchLogGroup *string `type:"string"` + + // The name of the CloudWatch Logs log stream to which the connection data is + // published. + CloudwatchLogStream *string `type:"string"` + + // Indicates whether connection logging is enabled. + Enabled *bool `type:"boolean"` +} + +// String returns the string representation +func (s ConnectionLogOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ConnectionLogOptions) GoString() string { + return s.String() +} + +// SetCloudwatchLogGroup sets the CloudwatchLogGroup field's value. +func (s *ConnectionLogOptions) SetCloudwatchLogGroup(v string) *ConnectionLogOptions { + s.CloudwatchLogGroup = &v + return s +} + +// SetCloudwatchLogStream sets the CloudwatchLogStream field's value. +func (s *ConnectionLogOptions) SetCloudwatchLogStream(v string) *ConnectionLogOptions { + s.CloudwatchLogStream = &v + return s +} + +// SetEnabled sets the Enabled field's value. +func (s *ConnectionLogOptions) SetEnabled(v bool) *ConnectionLogOptions { + s.Enabled = &v + return s +} + +// Information about the client connection logging options for a Client VPN +// endpoint. +type ConnectionLogResponseOptions struct { + _ struct{} `type:"structure"` + + // The name of the Amazon CloudWatch Logs log group to which connection logging + // data is published. + CloudwatchLogGroup *string `type:"string"` + + // The name of the Amazon CloudWatch Logs log stream to which connection logging + // data is published. + CloudwatchLogStream *string `type:"string"` + + // Indicates whether client connection logging is enabled for the Client VPN + // endpoint. + Enabled *bool `type:"boolean"` +} + +// String returns the string representation +func (s ConnectionLogResponseOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ConnectionLogResponseOptions) GoString() string { + return s.String() +} + +// SetCloudwatchLogGroup sets the CloudwatchLogGroup field's value. +func (s *ConnectionLogResponseOptions) SetCloudwatchLogGroup(v string) *ConnectionLogResponseOptions { + s.CloudwatchLogGroup = &v + return s +} + +// SetCloudwatchLogStream sets the CloudwatchLogStream field's value. +func (s *ConnectionLogResponseOptions) SetCloudwatchLogStream(v string) *ConnectionLogResponseOptions { + s.CloudwatchLogStream = &v + return s +} + +// SetEnabled sets the Enabled field's value. +func (s *ConnectionLogResponseOptions) SetEnabled(v bool) *ConnectionLogResponseOptions { + s.Enabled = &v + return s +} + +// Describes a connection notification for a VPC endpoint or VPC endpoint service. +type ConnectionNotification struct { + _ struct{} `type:"structure"` + + // The events for the notification. Valid values are Accept, Connect, Delete, + // and Reject. + ConnectionEvents []*string `locationName:"connectionEvents" locationNameList:"item" type:"list"` + + // The ARN of the SNS topic for the notification. + ConnectionNotificationArn *string `locationName:"connectionNotificationArn" type:"string"` + + // The ID of the notification. + ConnectionNotificationId *string `locationName:"connectionNotificationId" type:"string"` + + // The state of the notification. + ConnectionNotificationState *string `locationName:"connectionNotificationState" type:"string" enum:"ConnectionNotificationState"` + + // The type of notification. + ConnectionNotificationType *string `locationName:"connectionNotificationType" type:"string" enum:"ConnectionNotificationType"` + + // The ID of the endpoint service. + ServiceId *string `locationName:"serviceId" type:"string"` + + // The ID of the VPC endpoint. + VpcEndpointId *string `locationName:"vpcEndpointId" type:"string"` +} + +// String returns the string representation +func (s ConnectionNotification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ConnectionNotification) GoString() string { + return s.String() +} + +// SetConnectionEvents sets the ConnectionEvents field's value. +func (s *ConnectionNotification) SetConnectionEvents(v []*string) *ConnectionNotification { + s.ConnectionEvents = v + return s +} + +// SetConnectionNotificationArn sets the ConnectionNotificationArn field's value. +func (s *ConnectionNotification) SetConnectionNotificationArn(v string) *ConnectionNotification { + s.ConnectionNotificationArn = &v + return s +} + +// SetConnectionNotificationId sets the ConnectionNotificationId field's value. +func (s *ConnectionNotification) SetConnectionNotificationId(v string) *ConnectionNotification { + s.ConnectionNotificationId = &v + return s +} + +// SetConnectionNotificationState sets the ConnectionNotificationState field's value. +func (s *ConnectionNotification) SetConnectionNotificationState(v string) *ConnectionNotification { + s.ConnectionNotificationState = &v + return s +} + +// SetConnectionNotificationType sets the ConnectionNotificationType field's value. +func (s *ConnectionNotification) SetConnectionNotificationType(v string) *ConnectionNotification { + s.ConnectionNotificationType = &v + return s +} + +// SetServiceId sets the ServiceId field's value. +func (s *ConnectionNotification) SetServiceId(v string) *ConnectionNotification { + s.ServiceId = &v + return s +} + +// SetVpcEndpointId sets the VpcEndpointId field's value. +func (s *ConnectionNotification) SetVpcEndpointId(v string) *ConnectionNotification { + s.VpcEndpointId = &v + return s +} + +// Describes a conversion task. +type ConversionTask struct { + _ struct{} `type:"structure"` + + // The ID of the conversion task. + ConversionTaskId *string `locationName:"conversionTaskId" type:"string"` + + // The time when the task expires. If the upload isn't complete before the expiration + // time, we automatically cancel the task. + ExpirationTime *string `locationName:"expirationTime" type:"string"` + + // If the task is for importing an instance, this contains information about + // the import instance task. + ImportInstance *ImportInstanceTaskDetails `locationName:"importInstance" type:"structure"` + + // If the task is for importing a volume, this contains information about the + // import volume task. + ImportVolume *ImportVolumeTaskDetails `locationName:"importVolume" type:"structure"` + + // The state of the conversion task. + State *string `locationName:"state" type:"string" enum:"ConversionTaskState"` + + // The status message related to the conversion task. + StatusMessage *string `locationName:"statusMessage" type:"string"` + + // Any tags assigned to the task. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s ConversionTask) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ConversionTask) GoString() string { + return s.String() +} + +// SetConversionTaskId sets the ConversionTaskId field's value. +func (s *ConversionTask) SetConversionTaskId(v string) *ConversionTask { + s.ConversionTaskId = &v + return s +} + +// SetExpirationTime sets the ExpirationTime field's value. +func (s *ConversionTask) SetExpirationTime(v string) *ConversionTask { + s.ExpirationTime = &v + return s +} + +// SetImportInstance sets the ImportInstance field's value. +func (s *ConversionTask) SetImportInstance(v *ImportInstanceTaskDetails) *ConversionTask { + s.ImportInstance = v + return s +} + +// SetImportVolume sets the ImportVolume field's value. +func (s *ConversionTask) SetImportVolume(v *ImportVolumeTaskDetails) *ConversionTask { + s.ImportVolume = v + return s +} + +// SetState sets the State field's value. +func (s *ConversionTask) SetState(v string) *ConversionTask { + s.State = &v + return s +} + +// SetStatusMessage sets the StatusMessage field's value. +func (s *ConversionTask) SetStatusMessage(v string) *ConversionTask { + s.StatusMessage = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *ConversionTask) SetTags(v []*Tag) *ConversionTask { + s.Tags = v + return s +} + +type CopyFpgaImageInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html). + ClientToken *string `type:"string"` + + // The description for the new AFI. + Description *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The name for the new AFI. The default is the name of the source AFI. + Name *string `type:"string"` + + // The ID of the source AFI. + // + // SourceFpgaImageId is a required field + SourceFpgaImageId *string `type:"string" required:"true"` + + // The Region that contains the source AFI. + // + // SourceRegion is a required field + SourceRegion *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s CopyFpgaImageInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CopyFpgaImageInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CopyFpgaImageInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CopyFpgaImageInput"} + if s.SourceFpgaImageId == nil { + invalidParams.Add(request.NewErrParamRequired("SourceFpgaImageId")) + } + if s.SourceRegion == nil { + invalidParams.Add(request.NewErrParamRequired("SourceRegion")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *CopyFpgaImageInput) SetClientToken(v string) *CopyFpgaImageInput { + s.ClientToken = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *CopyFpgaImageInput) SetDescription(v string) *CopyFpgaImageInput { + s.Description = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CopyFpgaImageInput) SetDryRun(v bool) *CopyFpgaImageInput { + s.DryRun = &v + return s +} + +// SetName sets the Name field's value. +func (s *CopyFpgaImageInput) SetName(v string) *CopyFpgaImageInput { + s.Name = &v + return s +} + +// SetSourceFpgaImageId sets the SourceFpgaImageId field's value. +func (s *CopyFpgaImageInput) SetSourceFpgaImageId(v string) *CopyFpgaImageInput { + s.SourceFpgaImageId = &v + return s +} + +// SetSourceRegion sets the SourceRegion field's value. +func (s *CopyFpgaImageInput) SetSourceRegion(v string) *CopyFpgaImageInput { + s.SourceRegion = &v + return s +} + +type CopyFpgaImageOutput struct { + _ struct{} `type:"structure"` + + // The ID of the new AFI. + FpgaImageId *string `locationName:"fpgaImageId" type:"string"` +} + +// String returns the string representation +func (s CopyFpgaImageOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CopyFpgaImageOutput) GoString() string { + return s.String() +} + +// SetFpgaImageId sets the FpgaImageId field's value. +func (s *CopyFpgaImageOutput) SetFpgaImageId(v string) *CopyFpgaImageOutput { + s.FpgaImageId = &v + return s +} + +// Contains the parameters for CopyImage. +type CopyImageInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier you provide to ensure idempotency of the + // request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html) + // in the Amazon Elastic Compute Cloud User Guide. + ClientToken *string `type:"string"` + + // A description for the new AMI in the destination Region. + Description *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // Specifies whether the destination snapshots of the copied image should be + // encrypted. You can encrypt a copy of an unencrypted snapshot, but you cannot + // create an unencrypted copy of an encrypted snapshot. The default CMK for + // EBS is used unless you specify a non-default AWS Key Management Service (AWS + // KMS) CMK using KmsKeyId. For more information, see Amazon EBS Encryption + // (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) + // in the Amazon Elastic Compute Cloud User Guide. + Encrypted *bool `locationName:"encrypted" type:"boolean"` + + // An identifier for the AWS Key Management Service (AWS KMS) customer master + // key (CMK) to use when creating the encrypted volume. This parameter is only + // required if you want to use a non-default CMK; if this parameter is not specified, + // the default CMK for EBS is used. If a KmsKeyId is specified, the Encrypted + // flag must also be set. + // + // To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, + // or alias ARN. When using an alias name, prefix it with "alias/". For example: + // + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // + // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab + // + // * Alias name: alias/ExampleAlias + // + // * Alias ARN: arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias + // + // AWS parses KmsKeyId asynchronously, meaning that the action you call may + // appear to complete even though you provided an invalid identifier. This action + // will eventually report failure. + // + // The specified CMK must exist in the Region that the snapshot is being copied + // to. + KmsKeyId *string `locationName:"kmsKeyId" type:"string"` + + // The name of the new AMI in the destination Region. + // + // Name is a required field + Name *string `type:"string" required:"true"` + + // The ID of the AMI to copy. + // + // SourceImageId is a required field + SourceImageId *string `type:"string" required:"true"` + + // The name of the Region that contains the AMI to copy. + // + // SourceRegion is a required field + SourceRegion *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s CopyImageInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CopyImageInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CopyImageInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CopyImageInput"} + if s.Name == nil { + invalidParams.Add(request.NewErrParamRequired("Name")) + } + if s.SourceImageId == nil { + invalidParams.Add(request.NewErrParamRequired("SourceImageId")) + } + if s.SourceRegion == nil { + invalidParams.Add(request.NewErrParamRequired("SourceRegion")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *CopyImageInput) SetClientToken(v string) *CopyImageInput { + s.ClientToken = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *CopyImageInput) SetDescription(v string) *CopyImageInput { + s.Description = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CopyImageInput) SetDryRun(v bool) *CopyImageInput { + s.DryRun = &v + return s +} + +// SetEncrypted sets the Encrypted field's value. +func (s *CopyImageInput) SetEncrypted(v bool) *CopyImageInput { + s.Encrypted = &v + return s +} + +// SetKmsKeyId sets the KmsKeyId field's value. +func (s *CopyImageInput) SetKmsKeyId(v string) *CopyImageInput { + s.KmsKeyId = &v + return s +} + +// SetName sets the Name field's value. +func (s *CopyImageInput) SetName(v string) *CopyImageInput { + s.Name = &v + return s +} + +// SetSourceImageId sets the SourceImageId field's value. +func (s *CopyImageInput) SetSourceImageId(v string) *CopyImageInput { + s.SourceImageId = &v + return s +} + +// SetSourceRegion sets the SourceRegion field's value. +func (s *CopyImageInput) SetSourceRegion(v string) *CopyImageInput { + s.SourceRegion = &v + return s +} + +// Contains the output of CopyImage. +type CopyImageOutput struct { + _ struct{} `type:"structure"` + + // The ID of the new AMI. + ImageId *string `locationName:"imageId" type:"string"` +} + +// String returns the string representation +func (s CopyImageOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CopyImageOutput) GoString() string { + return s.String() +} + +// SetImageId sets the ImageId field's value. +func (s *CopyImageOutput) SetImageId(v string) *CopyImageOutput { + s.ImageId = &v + return s +} + +// Contains the parameters for CopySnapshot. +type CopySnapshotInput struct { + _ struct{} `type:"structure"` + + // A description for the EBS snapshot. + Description *string `type:"string"` + + // The destination Region to use in the PresignedUrl parameter of a snapshot + // copy operation. This parameter is only valid for specifying the destination + // Region in a PresignedUrl parameter, where it is required. + // + // The snapshot copy is sent to the regional endpoint that you sent the HTTP + // request to (for example, ec2.us-east-1.amazonaws.com). With the AWS CLI, + // this is specified using the --region parameter or the default Region in your + // AWS configuration file. + DestinationRegion *string `locationName:"destinationRegion" type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // To encrypt a copy of an unencrypted snapshot if encryption by default is + // not enabled, enable encryption using this parameter. Otherwise, omit this + // parameter. Encrypted snapshots are encrypted, even if you omit this parameter + // and encryption by default is not enabled. You cannot set this parameter to + // false. For more information, see Amazon EBS Encryption (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) + // in the Amazon Elastic Compute Cloud User Guide. + Encrypted *bool `locationName:"encrypted" type:"boolean"` + + // The identifier of the AWS Key Management Service (AWS KMS) customer master + // key (CMK) to use for Amazon EBS encryption. If this parameter is not specified, + // your AWS managed CMK for EBS is used. If KmsKeyId is specified, the encrypted + // state must be true. + // + // You can specify the CMK using any of the following: + // + // * Key ID. For example, key/1234abcd-12ab-34cd-56ef-1234567890ab. + // + // * Key alias. For example, alias/ExampleAlias. + // + // * Key ARN. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. + // + // * Alias ARN. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias. + // + // AWS authenticates the CMK asynchronously. Therefore, if you specify an ID, + // alias, or ARN that is not valid, the action can appear to complete, but eventually + // fails. + KmsKeyId *string `locationName:"kmsKeyId" type:"string"` + + // When you copy an encrypted source snapshot using the Amazon EC2 Query API, + // you must supply a pre-signed URL. This parameter is optional for unencrypted + // snapshots. For more information, see Query Requests (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Query-Requests.html). + // + // The PresignedUrl should use the snapshot source endpoint, the CopySnapshot + // action, and include the SourceRegion, SourceSnapshotId, and DestinationRegion + // parameters. The PresignedUrl must be signed using AWS Signature Version 4. + // Because EBS snapshots are stored in Amazon S3, the signing algorithm for + // this parameter uses the same logic that is described in Authenticating Requests + // by Using Query Parameters (AWS Signature Version 4) (https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html) + // in the Amazon Simple Storage Service API Reference. An invalid or improperly + // signed PresignedUrl will cause the copy operation to fail asynchronously, + // and the snapshot will move to an error state. + PresignedUrl *string `locationName:"presignedUrl" type:"string"` + + // The ID of the Region that contains the snapshot to be copied. + // + // SourceRegion is a required field + SourceRegion *string `type:"string" required:"true"` + + // The ID of the EBS snapshot to copy. + // + // SourceSnapshotId is a required field + SourceSnapshotId *string `type:"string" required:"true"` + + TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s CopySnapshotInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CopySnapshotInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CopySnapshotInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CopySnapshotInput"} + if s.SourceRegion == nil { + invalidParams.Add(request.NewErrParamRequired("SourceRegion")) + } + if s.SourceSnapshotId == nil { + invalidParams.Add(request.NewErrParamRequired("SourceSnapshotId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDescription sets the Description field's value. +func (s *CopySnapshotInput) SetDescription(v string) *CopySnapshotInput { + s.Description = &v + return s +} + +// SetDestinationRegion sets the DestinationRegion field's value. +func (s *CopySnapshotInput) SetDestinationRegion(v string) *CopySnapshotInput { + s.DestinationRegion = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CopySnapshotInput) SetDryRun(v bool) *CopySnapshotInput { + s.DryRun = &v + return s +} + +// SetEncrypted sets the Encrypted field's value. +func (s *CopySnapshotInput) SetEncrypted(v bool) *CopySnapshotInput { + s.Encrypted = &v + return s +} + +// SetKmsKeyId sets the KmsKeyId field's value. +func (s *CopySnapshotInput) SetKmsKeyId(v string) *CopySnapshotInput { + s.KmsKeyId = &v + return s +} + +// SetPresignedUrl sets the PresignedUrl field's value. +func (s *CopySnapshotInput) SetPresignedUrl(v string) *CopySnapshotInput { + s.PresignedUrl = &v + return s +} + +// SetSourceRegion sets the SourceRegion field's value. +func (s *CopySnapshotInput) SetSourceRegion(v string) *CopySnapshotInput { + s.SourceRegion = &v + return s +} + +// SetSourceSnapshotId sets the SourceSnapshotId field's value. +func (s *CopySnapshotInput) SetSourceSnapshotId(v string) *CopySnapshotInput { + s.SourceSnapshotId = &v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *CopySnapshotInput) SetTagSpecifications(v []*TagSpecification) *CopySnapshotInput { + s.TagSpecifications = v + return s +} + +// Contains the output of CopySnapshot. +type CopySnapshotOutput struct { + _ struct{} `type:"structure"` + + // The ID of the new snapshot. + SnapshotId *string `locationName:"snapshotId" type:"string"` + + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s CopySnapshotOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CopySnapshotOutput) GoString() string { + return s.String() +} + +// SetSnapshotId sets the SnapshotId field's value. +func (s *CopySnapshotOutput) SetSnapshotId(v string) *CopySnapshotOutput { + s.SnapshotId = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *CopySnapshotOutput) SetTags(v []*Tag) *CopySnapshotOutput { + s.Tags = v + return s +} + +// The CPU options for the instance. +type CpuOptions struct { + _ struct{} `type:"structure"` + + // The number of CPU cores for the instance. + CoreCount *int64 `locationName:"coreCount" type:"integer"` + + // The number of threads per CPU core. + ThreadsPerCore *int64 `locationName:"threadsPerCore" type:"integer"` +} + +// String returns the string representation +func (s CpuOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CpuOptions) GoString() string { + return s.String() +} + +// SetCoreCount sets the CoreCount field's value. +func (s *CpuOptions) SetCoreCount(v int64) *CpuOptions { + s.CoreCount = &v + return s +} + +// SetThreadsPerCore sets the ThreadsPerCore field's value. +func (s *CpuOptions) SetThreadsPerCore(v int64) *CpuOptions { + s.ThreadsPerCore = &v + return s +} + +// The CPU options for the instance. Both the core count and threads per core +// must be specified in the request. +type CpuOptionsRequest struct { + _ struct{} `type:"structure"` + + // The number of CPU cores for the instance. + CoreCount *int64 `type:"integer"` + + // The number of threads per CPU core. To disable multithreading for the instance, + // specify a value of 1. Otherwise, specify the default value of 2. + ThreadsPerCore *int64 `type:"integer"` +} + +// String returns the string representation +func (s CpuOptionsRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CpuOptionsRequest) GoString() string { + return s.String() +} + +// SetCoreCount sets the CoreCount field's value. +func (s *CpuOptionsRequest) SetCoreCount(v int64) *CpuOptionsRequest { + s.CoreCount = &v + return s +} + +// SetThreadsPerCore sets the ThreadsPerCore field's value. +func (s *CpuOptionsRequest) SetThreadsPerCore(v int64) *CpuOptionsRequest { + s.ThreadsPerCore = &v + return s +} + +type CreateCapacityReservationInput struct { + _ struct{} `type:"structure"` + + // The Availability Zone in which to create the Capacity Reservation. + AvailabilityZone *string `type:"string"` + + // The ID of the Availability Zone in which to create the Capacity Reservation. + AvailabilityZoneId *string `type:"string"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + // + // Constraint: Maximum 64 ASCII characters. + ClientToken *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // Indicates whether the Capacity Reservation supports EBS-optimized instances. + // This optimization provides dedicated throughput to Amazon EBS and an optimized + // configuration stack to provide optimal I/O performance. This optimization + // isn't available with all instance types. Additional usage charges apply when + // using an EBS- optimized instance. + EbsOptimized *bool `type:"boolean"` + + // The date and time at which the Capacity Reservation expires. When a Capacity + // Reservation expires, the reserved capacity is released and you can no longer + // launch instances into it. The Capacity Reservation's state changes to expired + // when it reaches its end date and time. + // + // You must provide an EndDate value if EndDateType is limited. Omit EndDate + // if EndDateType is unlimited. + // + // If the EndDateType is limited, the Capacity Reservation is cancelled within + // an hour from the specified time. For example, if you specify 5/31/2019, 13:30:55, + // the Capacity Reservation is guaranteed to end between 13:30:55 and 14:30:55 + // on 5/31/2019. + EndDate *time.Time `type:"timestamp"` + + // Indicates the way in which the Capacity Reservation ends. A Capacity Reservation + // can have one of the following end types: + // + // * unlimited - The Capacity Reservation remains active until you explicitly + // cancel it. Do not provide an EndDate if the EndDateType is unlimited. + // + // * limited - The Capacity Reservation expires automatically at a specified + // date and time. You must provide an EndDate value if the EndDateType value + // is limited. + EndDateType *string `type:"string" enum:"EndDateType"` + + // Indicates whether the Capacity Reservation supports instances with temporary, + // block-level storage. + EphemeralStorage *bool `type:"boolean"` + + // The number of instances for which to reserve capacity. + // + // InstanceCount is a required field + InstanceCount *int64 `type:"integer" required:"true"` + + // Indicates the type of instance launches that the Capacity Reservation accepts. + // The options include: + // + // * open - The Capacity Reservation automatically matches all instances + // that have matching attributes (instance type, platform, and Availability + // Zone). Instances that have matching attributes run in the Capacity Reservation + // automatically without specifying any additional parameters. + // + // * targeted - The Capacity Reservation only accepts instances that have + // matching attributes (instance type, platform, and Availability Zone), + // and explicitly target the Capacity Reservation. This ensures that only + // permitted instances can use the reserved capacity. + // + // Default: open + InstanceMatchCriteria *string `type:"string" enum:"InstanceMatchCriteria"` + + // The type of operating system for which to reserve capacity. + // + // InstancePlatform is a required field + InstancePlatform *string `type:"string" required:"true" enum:"CapacityReservationInstancePlatform"` + + // The instance type for which to reserve capacity. For more information, see + // Instance Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) + // in the Amazon Elastic Compute Cloud User Guide. + // + // InstanceType is a required field + InstanceType *string `type:"string" required:"true"` + + // The tags to apply to the Capacity Reservation during launch. + TagSpecifications []*TagSpecification `locationNameList:"item" type:"list"` + + // Indicates the tenancy of the Capacity Reservation. A Capacity Reservation + // can have one of the following tenancy settings: + // + // * default - The Capacity Reservation is created on hardware that is shared + // with other AWS accounts. + // + // * dedicated - The Capacity Reservation is created on single-tenant hardware + // that is dedicated to a single AWS account. + Tenancy *string `type:"string" enum:"CapacityReservationTenancy"` +} + +// String returns the string representation +func (s CreateCapacityReservationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateCapacityReservationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateCapacityReservationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateCapacityReservationInput"} + if s.InstanceCount == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceCount")) + } + if s.InstancePlatform == nil { + invalidParams.Add(request.NewErrParamRequired("InstancePlatform")) + } + if s.InstanceType == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceType")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *CreateCapacityReservationInput) SetAvailabilityZone(v string) *CreateCapacityReservationInput { + s.AvailabilityZone = &v + return s +} + +// SetAvailabilityZoneId sets the AvailabilityZoneId field's value. +func (s *CreateCapacityReservationInput) SetAvailabilityZoneId(v string) *CreateCapacityReservationInput { + s.AvailabilityZoneId = &v + return s +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateCapacityReservationInput) SetClientToken(v string) *CreateCapacityReservationInput { + s.ClientToken = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateCapacityReservationInput) SetDryRun(v bool) *CreateCapacityReservationInput { + s.DryRun = &v + return s +} + +// SetEbsOptimized sets the EbsOptimized field's value. +func (s *CreateCapacityReservationInput) SetEbsOptimized(v bool) *CreateCapacityReservationInput { + s.EbsOptimized = &v + return s +} + +// SetEndDate sets the EndDate field's value. +func (s *CreateCapacityReservationInput) SetEndDate(v time.Time) *CreateCapacityReservationInput { + s.EndDate = &v + return s +} + +// SetEndDateType sets the EndDateType field's value. +func (s *CreateCapacityReservationInput) SetEndDateType(v string) *CreateCapacityReservationInput { + s.EndDateType = &v + return s +} + +// SetEphemeralStorage sets the EphemeralStorage field's value. +func (s *CreateCapacityReservationInput) SetEphemeralStorage(v bool) *CreateCapacityReservationInput { + s.EphemeralStorage = &v + return s +} + +// SetInstanceCount sets the InstanceCount field's value. +func (s *CreateCapacityReservationInput) SetInstanceCount(v int64) *CreateCapacityReservationInput { + s.InstanceCount = &v + return s +} + +// SetInstanceMatchCriteria sets the InstanceMatchCriteria field's value. +func (s *CreateCapacityReservationInput) SetInstanceMatchCriteria(v string) *CreateCapacityReservationInput { + s.InstanceMatchCriteria = &v + return s +} + +// SetInstancePlatform sets the InstancePlatform field's value. +func (s *CreateCapacityReservationInput) SetInstancePlatform(v string) *CreateCapacityReservationInput { + s.InstancePlatform = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *CreateCapacityReservationInput) SetInstanceType(v string) *CreateCapacityReservationInput { + s.InstanceType = &v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *CreateCapacityReservationInput) SetTagSpecifications(v []*TagSpecification) *CreateCapacityReservationInput { + s.TagSpecifications = v + return s +} + +// SetTenancy sets the Tenancy field's value. +func (s *CreateCapacityReservationInput) SetTenancy(v string) *CreateCapacityReservationInput { + s.Tenancy = &v + return s +} + +type CreateCapacityReservationOutput struct { + _ struct{} `type:"structure"` + + // Information about the Capacity Reservation. + CapacityReservation *CapacityReservation `locationName:"capacityReservation" type:"structure"` +} + +// String returns the string representation +func (s CreateCapacityReservationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateCapacityReservationOutput) GoString() string { + return s.String() +} + +// SetCapacityReservation sets the CapacityReservation field's value. +func (s *CreateCapacityReservationOutput) SetCapacityReservation(v *CapacityReservation) *CreateCapacityReservationOutput { + s.CapacityReservation = v + return s +} + +type CreateClientVpnEndpointInput struct { + _ struct{} `type:"structure"` + + // Information about the authentication method to be used to authenticate clients. + // + // AuthenticationOptions is a required field + AuthenticationOptions []*ClientVpnAuthenticationRequest `locationName:"Authentication" type:"list" required:"true"` + + // The IPv4 address range, in CIDR notation, from which to assign client IP + // addresses. The address range cannot overlap with the local CIDR of the VPC + // in which the associated subnet is located, or the routes that you add manually. + // The address range cannot be changed after the Client VPN endpoint has been + // created. The CIDR block should be /22 or greater. + // + // ClientCidrBlock is a required field + ClientCidrBlock *string `type:"string" required:"true"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `type:"string" idempotencyToken:"true"` + + // Information about the client connection logging options. + // + // If you enable client connection logging, data about client connections is + // sent to a Cloudwatch Logs log stream. The following information is logged: + // + // * Client connection requests + // + // * Client connection results (successful and unsuccessful) + // + // * Reasons for unsuccessful client connection requests + // + // * Client connection termination time + // + // ConnectionLogOptions is a required field + ConnectionLogOptions *ConnectionLogOptions `type:"structure" required:"true"` + + // A brief description of the Client VPN endpoint. + Description *string `type:"string"` + + // Information about the DNS servers to be used for DNS resolution. A Client + // VPN endpoint can have up to two DNS servers. If no DNS server is specified, + // the DNS address configured on the device is used for the DNS server. + DnsServers []*string `locationNameList:"item" type:"list"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ARN of the server certificate. For more information, see the AWS Certificate + // Manager User Guide (https://docs.aws.amazon.com/acm/latest/userguide/). + // + // ServerCertificateArn is a required field + ServerCertificateArn *string `type:"string" required:"true"` + + // Indicates whether split-tunnel is enabled on the AWS Client VPN endpoint. + // + // By default, split-tunnel on a VPN endpoint is disabled. + // + // For information about split-tunnel VPN endpoints, see Split-Tunnel AWS Client + // VPN Endpoint (https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/split-tunnel-vpn.html) + // in the AWS Client VPN Administrator Guide. + SplitTunnel *bool `type:"boolean"` + + // The tags to apply to the Client VPN endpoint during creation. + TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` + + // The transport protocol to be used by the VPN session. + // + // Default value: udp + TransportProtocol *string `type:"string" enum:"TransportProtocol"` +} + +// String returns the string representation +func (s CreateClientVpnEndpointInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateClientVpnEndpointInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateClientVpnEndpointInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateClientVpnEndpointInput"} + if s.AuthenticationOptions == nil { + invalidParams.Add(request.NewErrParamRequired("AuthenticationOptions")) + } + if s.ClientCidrBlock == nil { + invalidParams.Add(request.NewErrParamRequired("ClientCidrBlock")) + } + if s.ConnectionLogOptions == nil { + invalidParams.Add(request.NewErrParamRequired("ConnectionLogOptions")) + } + if s.ServerCertificateArn == nil { + invalidParams.Add(request.NewErrParamRequired("ServerCertificateArn")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAuthenticationOptions sets the AuthenticationOptions field's value. +func (s *CreateClientVpnEndpointInput) SetAuthenticationOptions(v []*ClientVpnAuthenticationRequest) *CreateClientVpnEndpointInput { + s.AuthenticationOptions = v + return s +} + +// SetClientCidrBlock sets the ClientCidrBlock field's value. +func (s *CreateClientVpnEndpointInput) SetClientCidrBlock(v string) *CreateClientVpnEndpointInput { + s.ClientCidrBlock = &v + return s +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateClientVpnEndpointInput) SetClientToken(v string) *CreateClientVpnEndpointInput { + s.ClientToken = &v + return s +} + +// SetConnectionLogOptions sets the ConnectionLogOptions field's value. +func (s *CreateClientVpnEndpointInput) SetConnectionLogOptions(v *ConnectionLogOptions) *CreateClientVpnEndpointInput { + s.ConnectionLogOptions = v + return s +} + +// SetDescription sets the Description field's value. +func (s *CreateClientVpnEndpointInput) SetDescription(v string) *CreateClientVpnEndpointInput { + s.Description = &v + return s +} + +// SetDnsServers sets the DnsServers field's value. +func (s *CreateClientVpnEndpointInput) SetDnsServers(v []*string) *CreateClientVpnEndpointInput { + s.DnsServers = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateClientVpnEndpointInput) SetDryRun(v bool) *CreateClientVpnEndpointInput { + s.DryRun = &v + return s +} + +// SetServerCertificateArn sets the ServerCertificateArn field's value. +func (s *CreateClientVpnEndpointInput) SetServerCertificateArn(v string) *CreateClientVpnEndpointInput { + s.ServerCertificateArn = &v + return s +} + +// SetSplitTunnel sets the SplitTunnel field's value. +func (s *CreateClientVpnEndpointInput) SetSplitTunnel(v bool) *CreateClientVpnEndpointInput { + s.SplitTunnel = &v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *CreateClientVpnEndpointInput) SetTagSpecifications(v []*TagSpecification) *CreateClientVpnEndpointInput { + s.TagSpecifications = v + return s +} + +// SetTransportProtocol sets the TransportProtocol field's value. +func (s *CreateClientVpnEndpointInput) SetTransportProtocol(v string) *CreateClientVpnEndpointInput { + s.TransportProtocol = &v + return s +} + +type CreateClientVpnEndpointOutput struct { + _ struct{} `type:"structure"` + + // The ID of the Client VPN endpoint. + ClientVpnEndpointId *string `locationName:"clientVpnEndpointId" type:"string"` + + // The DNS name to be used by clients when establishing their VPN session. + DnsName *string `locationName:"dnsName" type:"string"` + + // The current state of the Client VPN endpoint. + Status *ClientVpnEndpointStatus `locationName:"status" type:"structure"` +} + +// String returns the string representation +func (s CreateClientVpnEndpointOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateClientVpnEndpointOutput) GoString() string { + return s.String() +} + +// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value. +func (s *CreateClientVpnEndpointOutput) SetClientVpnEndpointId(v string) *CreateClientVpnEndpointOutput { + s.ClientVpnEndpointId = &v + return s +} + +// SetDnsName sets the DnsName field's value. +func (s *CreateClientVpnEndpointOutput) SetDnsName(v string) *CreateClientVpnEndpointOutput { + s.DnsName = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *CreateClientVpnEndpointOutput) SetStatus(v *ClientVpnEndpointStatus) *CreateClientVpnEndpointOutput { + s.Status = v + return s +} + +type CreateClientVpnRouteInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `type:"string" idempotencyToken:"true"` + + // The ID of the Client VPN endpoint to which to add the route. + // + // ClientVpnEndpointId is a required field + ClientVpnEndpointId *string `type:"string" required:"true"` + + // A brief description of the route. + Description *string `type:"string"` + + // The IPv4 address range, in CIDR notation, of the route destination. For example: + // + // * To add a route for Internet access, enter 0.0.0.0/0 + // + // * To add a route for a peered VPC, enter the peered VPC's IPv4 CIDR range + // + // * To add a route for an on-premises network, enter the AWS Site-to-Site + // VPN connection's IPv4 CIDR range + // + // Route address ranges cannot overlap with the CIDR range specified for client + // allocation. + // + // DestinationCidrBlock is a required field + DestinationCidrBlock *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the subnet through which you want to route traffic. The specified + // subnet must be an existing target network of the Client VPN endpoint. + // + // TargetVpcSubnetId is a required field + TargetVpcSubnetId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s CreateClientVpnRouteInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateClientVpnRouteInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateClientVpnRouteInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateClientVpnRouteInput"} + if s.ClientVpnEndpointId == nil { + invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId")) + } + if s.DestinationCidrBlock == nil { + invalidParams.Add(request.NewErrParamRequired("DestinationCidrBlock")) + } + if s.TargetVpcSubnetId == nil { + invalidParams.Add(request.NewErrParamRequired("TargetVpcSubnetId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateClientVpnRouteInput) SetClientToken(v string) *CreateClientVpnRouteInput { + s.ClientToken = &v + return s +} + +// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value. +func (s *CreateClientVpnRouteInput) SetClientVpnEndpointId(v string) *CreateClientVpnRouteInput { + s.ClientVpnEndpointId = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *CreateClientVpnRouteInput) SetDescription(v string) *CreateClientVpnRouteInput { + s.Description = &v + return s +} + +// SetDestinationCidrBlock sets the DestinationCidrBlock field's value. +func (s *CreateClientVpnRouteInput) SetDestinationCidrBlock(v string) *CreateClientVpnRouteInput { + s.DestinationCidrBlock = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateClientVpnRouteInput) SetDryRun(v bool) *CreateClientVpnRouteInput { + s.DryRun = &v + return s +} + +// SetTargetVpcSubnetId sets the TargetVpcSubnetId field's value. +func (s *CreateClientVpnRouteInput) SetTargetVpcSubnetId(v string) *CreateClientVpnRouteInput { + s.TargetVpcSubnetId = &v + return s +} + +type CreateClientVpnRouteOutput struct { + _ struct{} `type:"structure"` + + // The current state of the route. + Status *ClientVpnRouteStatus `locationName:"status" type:"structure"` +} + +// String returns the string representation +func (s CreateClientVpnRouteOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateClientVpnRouteOutput) GoString() string { + return s.String() +} + +// SetStatus sets the Status field's value. +func (s *CreateClientVpnRouteOutput) SetStatus(v *ClientVpnRouteStatus) *CreateClientVpnRouteOutput { + s.Status = v + return s +} + +// Contains the parameters for CreateCustomerGateway. +type CreateCustomerGatewayInput struct { + _ struct{} `type:"structure"` + + // For devices that support BGP, the customer gateway's BGP ASN. + // + // Default: 65000 + // + // BgpAsn is a required field + BgpAsn *int64 `type:"integer" required:"true"` + + // The Amazon Resource Name (ARN) for the customer gateway certificate. + CertificateArn *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The Internet-routable IP address for the customer gateway's outside interface. + // The address must be static. + PublicIp *string `locationName:"IpAddress" type:"string"` + + // The type of VPN connection that this customer gateway supports (ipsec.1). + // + // Type is a required field + Type *string `type:"string" required:"true" enum:"GatewayType"` +} + +// String returns the string representation +func (s CreateCustomerGatewayInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateCustomerGatewayInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateCustomerGatewayInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateCustomerGatewayInput"} + if s.BgpAsn == nil { + invalidParams.Add(request.NewErrParamRequired("BgpAsn")) + } + if s.Type == nil { + invalidParams.Add(request.NewErrParamRequired("Type")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBgpAsn sets the BgpAsn field's value. +func (s *CreateCustomerGatewayInput) SetBgpAsn(v int64) *CreateCustomerGatewayInput { + s.BgpAsn = &v + return s +} + +// SetCertificateArn sets the CertificateArn field's value. +func (s *CreateCustomerGatewayInput) SetCertificateArn(v string) *CreateCustomerGatewayInput { + s.CertificateArn = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateCustomerGatewayInput) SetDryRun(v bool) *CreateCustomerGatewayInput { + s.DryRun = &v + return s +} + +// SetPublicIp sets the PublicIp field's value. +func (s *CreateCustomerGatewayInput) SetPublicIp(v string) *CreateCustomerGatewayInput { + s.PublicIp = &v + return s +} + +// SetType sets the Type field's value. +func (s *CreateCustomerGatewayInput) SetType(v string) *CreateCustomerGatewayInput { + s.Type = &v + return s +} + +// Contains the output of CreateCustomerGateway. +type CreateCustomerGatewayOutput struct { + _ struct{} `type:"structure"` + + // Information about the customer gateway. + CustomerGateway *CustomerGateway `locationName:"customerGateway" type:"structure"` +} + +// String returns the string representation +func (s CreateCustomerGatewayOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateCustomerGatewayOutput) GoString() string { + return s.String() +} + +// SetCustomerGateway sets the CustomerGateway field's value. +func (s *CreateCustomerGatewayOutput) SetCustomerGateway(v *CustomerGateway) *CreateCustomerGatewayOutput { + s.CustomerGateway = v + return s +} + +type CreateDefaultSubnetInput struct { + _ struct{} `type:"structure"` + + // The Availability Zone in which to create the default subnet. + // + // AvailabilityZone is a required field + AvailabilityZone *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s CreateDefaultSubnetInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateDefaultSubnetInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateDefaultSubnetInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateDefaultSubnetInput"} + if s.AvailabilityZone == nil { + invalidParams.Add(request.NewErrParamRequired("AvailabilityZone")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *CreateDefaultSubnetInput) SetAvailabilityZone(v string) *CreateDefaultSubnetInput { + s.AvailabilityZone = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateDefaultSubnetInput) SetDryRun(v bool) *CreateDefaultSubnetInput { + s.DryRun = &v + return s +} + +type CreateDefaultSubnetOutput struct { + _ struct{} `type:"structure"` + + // Information about the subnet. + Subnet *Subnet `locationName:"subnet" type:"structure"` +} + +// String returns the string representation +func (s CreateDefaultSubnetOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateDefaultSubnetOutput) GoString() string { + return s.String() +} + +// SetSubnet sets the Subnet field's value. +func (s *CreateDefaultSubnetOutput) SetSubnet(v *Subnet) *CreateDefaultSubnetOutput { + s.Subnet = v + return s +} + +type CreateDefaultVpcInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s CreateDefaultVpcInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateDefaultVpcInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateDefaultVpcInput) SetDryRun(v bool) *CreateDefaultVpcInput { + s.DryRun = &v + return s +} + +type CreateDefaultVpcOutput struct { + _ struct{} `type:"structure"` + + // Information about the VPC. + Vpc *Vpc `locationName:"vpc" type:"structure"` +} + +// String returns the string representation +func (s CreateDefaultVpcOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateDefaultVpcOutput) GoString() string { + return s.String() +} + +// SetVpc sets the Vpc field's value. +func (s *CreateDefaultVpcOutput) SetVpc(v *Vpc) *CreateDefaultVpcOutput { + s.Vpc = v + return s +} + +type CreateDhcpOptionsInput struct { + _ struct{} `type:"structure"` + + // A DHCP configuration option. + // + // DhcpConfigurations is a required field + DhcpConfigurations []*NewDhcpConfiguration `locationName:"dhcpConfiguration" locationNameList:"item" type:"list" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` +} + +// String returns the string representation +func (s CreateDhcpOptionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateDhcpOptionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateDhcpOptionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateDhcpOptionsInput"} + if s.DhcpConfigurations == nil { + invalidParams.Add(request.NewErrParamRequired("DhcpConfigurations")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDhcpConfigurations sets the DhcpConfigurations field's value. +func (s *CreateDhcpOptionsInput) SetDhcpConfigurations(v []*NewDhcpConfiguration) *CreateDhcpOptionsInput { + s.DhcpConfigurations = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateDhcpOptionsInput) SetDryRun(v bool) *CreateDhcpOptionsInput { + s.DryRun = &v + return s +} + +type CreateDhcpOptionsOutput struct { + _ struct{} `type:"structure"` + + // A set of DHCP options. + DhcpOptions *DhcpOptions `locationName:"dhcpOptions" type:"structure"` +} + +// String returns the string representation +func (s CreateDhcpOptionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateDhcpOptionsOutput) GoString() string { + return s.String() +} + +// SetDhcpOptions sets the DhcpOptions field's value. +func (s *CreateDhcpOptionsOutput) SetDhcpOptions(v *DhcpOptions) *CreateDhcpOptionsOutput { + s.DhcpOptions = v + return s +} + +type CreateEgressOnlyInternetGatewayInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html). + ClientToken *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the VPC for which to create the egress-only internet gateway. + // + // VpcId is a required field + VpcId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s CreateEgressOnlyInternetGatewayInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateEgressOnlyInternetGatewayInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateEgressOnlyInternetGatewayInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateEgressOnlyInternetGatewayInput"} + if s.VpcId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateEgressOnlyInternetGatewayInput) SetClientToken(v string) *CreateEgressOnlyInternetGatewayInput { + s.ClientToken = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateEgressOnlyInternetGatewayInput) SetDryRun(v bool) *CreateEgressOnlyInternetGatewayInput { + s.DryRun = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *CreateEgressOnlyInternetGatewayInput) SetVpcId(v string) *CreateEgressOnlyInternetGatewayInput { + s.VpcId = &v + return s +} + +type CreateEgressOnlyInternetGatewayOutput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. + ClientToken *string `locationName:"clientToken" type:"string"` + + // Information about the egress-only internet gateway. + EgressOnlyInternetGateway *EgressOnlyInternetGateway `locationName:"egressOnlyInternetGateway" type:"structure"` +} + +// String returns the string representation +func (s CreateEgressOnlyInternetGatewayOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateEgressOnlyInternetGatewayOutput) GoString() string { + return s.String() +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateEgressOnlyInternetGatewayOutput) SetClientToken(v string) *CreateEgressOnlyInternetGatewayOutput { + s.ClientToken = &v + return s +} + +// SetEgressOnlyInternetGateway sets the EgressOnlyInternetGateway field's value. +func (s *CreateEgressOnlyInternetGatewayOutput) SetEgressOnlyInternetGateway(v *EgressOnlyInternetGateway) *CreateEgressOnlyInternetGatewayOutput { + s.EgressOnlyInternetGateway = v + return s +} + +// Describes the instances that could not be launched by the fleet. +type CreateFleetError struct { + _ struct{} `type:"structure"` + + // The error code that indicates why the instance could not be launched. For + // more information about error codes, see Error Codes (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html.html). + ErrorCode *string `locationName:"errorCode" type:"string"` + + // The error message that describes why the instance could not be launched. + // For more information about error messages, see ee Error Codes (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html.html). + ErrorMessage *string `locationName:"errorMessage" type:"string"` + + // The launch templates and overrides that were used for launching the instances. + // Any parameters that you specify in the Overrides override the same parameters + // in the launch template. + LaunchTemplateAndOverrides *LaunchTemplateAndOverridesResponse `locationName:"launchTemplateAndOverrides" type:"structure"` + + // Indicates if the instance that could not be launched was a Spot Instance + // or On-Demand Instance. + Lifecycle *string `locationName:"lifecycle" type:"string" enum:"InstanceLifecycle"` +} + +// String returns the string representation +func (s CreateFleetError) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateFleetError) GoString() string { + return s.String() +} + +// SetErrorCode sets the ErrorCode field's value. +func (s *CreateFleetError) SetErrorCode(v string) *CreateFleetError { + s.ErrorCode = &v + return s +} + +// SetErrorMessage sets the ErrorMessage field's value. +func (s *CreateFleetError) SetErrorMessage(v string) *CreateFleetError { + s.ErrorMessage = &v + return s +} + +// SetLaunchTemplateAndOverrides sets the LaunchTemplateAndOverrides field's value. +func (s *CreateFleetError) SetLaunchTemplateAndOverrides(v *LaunchTemplateAndOverridesResponse) *CreateFleetError { + s.LaunchTemplateAndOverrides = v + return s +} + +// SetLifecycle sets the Lifecycle field's value. +func (s *CreateFleetError) SetLifecycle(v string) *CreateFleetError { + s.Lifecycle = &v + return s +} + +type CreateFleetInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier you provide to ensure the idempotency of + // the request. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // Indicates whether running instances should be terminated if the total target + // capacity of the EC2 Fleet is decreased below the current size of the EC2 + // Fleet. + ExcessCapacityTerminationPolicy *string `type:"string" enum:"FleetExcessCapacityTerminationPolicy"` + + // The configuration for the EC2 Fleet. + // + // LaunchTemplateConfigs is a required field + LaunchTemplateConfigs []*FleetLaunchTemplateConfigRequest `locationNameList:"item" type:"list" required:"true"` + + // Describes the configuration of On-Demand Instances in an EC2 Fleet. + OnDemandOptions *OnDemandOptionsRequest `type:"structure"` + + // Indicates whether EC2 Fleet should replace unhealthy instances. + ReplaceUnhealthyInstances *bool `type:"boolean"` + + // Describes the configuration of Spot Instances in an EC2 Fleet. + SpotOptions *SpotOptionsRequest `type:"structure"` + + // The key-value pair for tagging the EC2 Fleet request on creation. The value + // for ResourceType must be fleet, otherwise the fleet request fails. To tag + // instances at launch, specify the tags in the launch template (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html#create-launch-template). + // For information about tagging after launch, see Tagging Your Resources (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#tag-resources). + TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` + + // The number of units to request. + // + // TargetCapacitySpecification is a required field + TargetCapacitySpecification *TargetCapacitySpecificationRequest `type:"structure" required:"true"` + + // Indicates whether running instances should be terminated when the EC2 Fleet + // expires. + TerminateInstancesWithExpiration *bool `type:"boolean"` + + // The type of the request. By default, the EC2 Fleet places an asynchronous + // request for your desired capacity, and maintains it by replenishing interrupted + // Spot Instances (maintain). A value of instant places a synchronous one-time + // request, and returns errors for any instances that could not be launched. + // A value of request places an asynchronous one-time request without maintaining + // capacity or submitting requests in alternative capacity pools if capacity + // is unavailable. For more information, see EC2 Fleet Request Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-configuration-strategies.html#ec2-fleet-request-type) + // in the Amazon Elastic Compute Cloud User Guide. + Type *string `type:"string" enum:"FleetType"` + + // The start date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). + // The default is to start fulfilling the request immediately. + ValidFrom *time.Time `type:"timestamp"` + + // The end date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). + // At this point, no new EC2 Fleet requests are placed or able to fulfill the + // request. If no value is specified, the request remains until you cancel it. + ValidUntil *time.Time `type:"timestamp"` +} + +// String returns the string representation +func (s CreateFleetInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateFleetInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateFleetInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateFleetInput"} + if s.LaunchTemplateConfigs == nil { + invalidParams.Add(request.NewErrParamRequired("LaunchTemplateConfigs")) + } + if s.TargetCapacitySpecification == nil { + invalidParams.Add(request.NewErrParamRequired("TargetCapacitySpecification")) + } + if s.LaunchTemplateConfigs != nil { + for i, v := range s.LaunchTemplateConfigs { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "LaunchTemplateConfigs", i), err.(request.ErrInvalidParams)) + } + } + } + if s.TargetCapacitySpecification != nil { + if err := s.TargetCapacitySpecification.Validate(); err != nil { + invalidParams.AddNested("TargetCapacitySpecification", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateFleetInput) SetClientToken(v string) *CreateFleetInput { + s.ClientToken = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateFleetInput) SetDryRun(v bool) *CreateFleetInput { + s.DryRun = &v + return s +} + +// SetExcessCapacityTerminationPolicy sets the ExcessCapacityTerminationPolicy field's value. +func (s *CreateFleetInput) SetExcessCapacityTerminationPolicy(v string) *CreateFleetInput { + s.ExcessCapacityTerminationPolicy = &v + return s +} + +// SetLaunchTemplateConfigs sets the LaunchTemplateConfigs field's value. +func (s *CreateFleetInput) SetLaunchTemplateConfigs(v []*FleetLaunchTemplateConfigRequest) *CreateFleetInput { + s.LaunchTemplateConfigs = v + return s +} + +// SetOnDemandOptions sets the OnDemandOptions field's value. +func (s *CreateFleetInput) SetOnDemandOptions(v *OnDemandOptionsRequest) *CreateFleetInput { + s.OnDemandOptions = v + return s +} + +// SetReplaceUnhealthyInstances sets the ReplaceUnhealthyInstances field's value. +func (s *CreateFleetInput) SetReplaceUnhealthyInstances(v bool) *CreateFleetInput { + s.ReplaceUnhealthyInstances = &v + return s +} + +// SetSpotOptions sets the SpotOptions field's value. +func (s *CreateFleetInput) SetSpotOptions(v *SpotOptionsRequest) *CreateFleetInput { + s.SpotOptions = v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *CreateFleetInput) SetTagSpecifications(v []*TagSpecification) *CreateFleetInput { + s.TagSpecifications = v + return s +} + +// SetTargetCapacitySpecification sets the TargetCapacitySpecification field's value. +func (s *CreateFleetInput) SetTargetCapacitySpecification(v *TargetCapacitySpecificationRequest) *CreateFleetInput { + s.TargetCapacitySpecification = v + return s +} + +// SetTerminateInstancesWithExpiration sets the TerminateInstancesWithExpiration field's value. +func (s *CreateFleetInput) SetTerminateInstancesWithExpiration(v bool) *CreateFleetInput { + s.TerminateInstancesWithExpiration = &v + return s +} + +// SetType sets the Type field's value. +func (s *CreateFleetInput) SetType(v string) *CreateFleetInput { + s.Type = &v + return s +} + +// SetValidFrom sets the ValidFrom field's value. +func (s *CreateFleetInput) SetValidFrom(v time.Time) *CreateFleetInput { + s.ValidFrom = &v + return s +} + +// SetValidUntil sets the ValidUntil field's value. +func (s *CreateFleetInput) SetValidUntil(v time.Time) *CreateFleetInput { + s.ValidUntil = &v + return s +} + +// Describes the instances that were launched by the fleet. +type CreateFleetInstance struct { + _ struct{} `type:"structure"` + + // The IDs of the instances. + InstanceIds []*string `locationName:"instanceIds" locationNameList:"item" type:"list"` + + // The instance type. + InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` + + // The launch templates and overrides that were used for launching the instances. + // Any parameters that you specify in the Overrides override the same parameters + // in the launch template. + LaunchTemplateAndOverrides *LaunchTemplateAndOverridesResponse `locationName:"launchTemplateAndOverrides" type:"structure"` + + // Indicates if the instance that was launched is a Spot Instance or On-Demand + // Instance. + Lifecycle *string `locationName:"lifecycle" type:"string" enum:"InstanceLifecycle"` + + // The value is Windows for Windows instances; otherwise blank. + Platform *string `locationName:"platform" type:"string" enum:"PlatformValues"` +} + +// String returns the string representation +func (s CreateFleetInstance) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateFleetInstance) GoString() string { + return s.String() +} + +// SetInstanceIds sets the InstanceIds field's value. +func (s *CreateFleetInstance) SetInstanceIds(v []*string) *CreateFleetInstance { + s.InstanceIds = v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *CreateFleetInstance) SetInstanceType(v string) *CreateFleetInstance { + s.InstanceType = &v + return s +} + +// SetLaunchTemplateAndOverrides sets the LaunchTemplateAndOverrides field's value. +func (s *CreateFleetInstance) SetLaunchTemplateAndOverrides(v *LaunchTemplateAndOverridesResponse) *CreateFleetInstance { + s.LaunchTemplateAndOverrides = v + return s +} + +// SetLifecycle sets the Lifecycle field's value. +func (s *CreateFleetInstance) SetLifecycle(v string) *CreateFleetInstance { + s.Lifecycle = &v + return s +} + +// SetPlatform sets the Platform field's value. +func (s *CreateFleetInstance) SetPlatform(v string) *CreateFleetInstance { + s.Platform = &v + return s +} + +type CreateFleetOutput struct { + _ struct{} `type:"structure"` + + // Information about the instances that could not be launched by the fleet. + // Valid only when Type is set to instant. + Errors []*CreateFleetError `locationName:"errorSet" locationNameList:"item" type:"list"` + + // The ID of the EC2 Fleet. + FleetId *string `locationName:"fleetId" type:"string"` + + // Information about the instances that were launched by the fleet. Valid only + // when Type is set to instant. + Instances []*CreateFleetInstance `locationName:"fleetInstanceSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s CreateFleetOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateFleetOutput) GoString() string { + return s.String() +} + +// SetErrors sets the Errors field's value. +func (s *CreateFleetOutput) SetErrors(v []*CreateFleetError) *CreateFleetOutput { + s.Errors = v + return s +} + +// SetFleetId sets the FleetId field's value. +func (s *CreateFleetOutput) SetFleetId(v string) *CreateFleetOutput { + s.FleetId = &v + return s +} + +// SetInstances sets the Instances field's value. +func (s *CreateFleetOutput) SetInstances(v []*CreateFleetInstance) *CreateFleetOutput { + s.Instances = v + return s +} + +type CreateFlowLogsInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html). + ClientToken *string `type:"string"` + + // The ARN for the IAM role that permits Amazon EC2 to publish flow logs to + // a CloudWatch Logs log group in your account. + // + // If you specify LogDestinationType as s3, do not specify DeliverLogsPermissionArn + // or LogGroupName. + DeliverLogsPermissionArn *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // Specifies the destination to which the flow log data is to be published. + // Flow log data can be published to a CloudWatch Logs log group or an Amazon + // S3 bucket. The value specified for this parameter depends on the value specified + // for LogDestinationType. + // + // If LogDestinationType is not specified or cloud-watch-logs, specify the Amazon + // Resource Name (ARN) of the CloudWatch Logs log group. + // + // If LogDestinationType is s3, specify the ARN of the Amazon S3 bucket. You + // can also specify a subfolder in the bucket. To specify a subfolder in the + // bucket, use the following ARN format: bucket_ARN/subfolder_name/. For example, + // to specify a subfolder named my-logs in a bucket named my-bucket, use the + // following ARN: arn:aws:s3:::my-bucket/my-logs/. You cannot use AWSLogs as + // a subfolder name. This is a reserved term. + LogDestination *string `type:"string"` + + // Specifies the type of destination to which the flow log data is to be published. + // Flow log data can be published to CloudWatch Logs or Amazon S3. To publish + // flow log data to CloudWatch Logs, specify cloud-watch-logs. To publish flow + // log data to Amazon S3, specify s3. + // + // If you specify LogDestinationType as s3, do not specify DeliverLogsPermissionArn + // or LogGroupName. + // + // Default: cloud-watch-logs + LogDestinationType *string `type:"string" enum:"LogDestinationType"` + + // The fields to include in the flow log record, in the order in which they + // should appear. For a list of available fields, see Flow Log Records (https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html#flow-log-records). + // If you omit this parameter, the flow log is created using the default format. + // If you specify this parameter, you must specify at least one field. + // + // Specify the fields using the ${field-id} format, separated by spaces. For + // the AWS CLI, use single quotation marks (' ') to surround the parameter value. + // + // Only applicable to flow logs that are published to an Amazon S3 bucket. + LogFormat *string `type:"string"` + + // The name of a new or existing CloudWatch Logs log group where Amazon EC2 + // publishes your flow logs. + // + // If you specify LogDestinationType as s3, do not specify DeliverLogsPermissionArn + // or LogGroupName. + LogGroupName *string `type:"string"` + + // The ID of the subnet, network interface, or VPC for which you want to create + // a flow log. + // + // Constraints: Maximum of 1000 resources + // + // ResourceIds is a required field + ResourceIds []*string `locationName:"ResourceId" locationNameList:"item" type:"list" required:"true"` + + // The type of resource for which to create the flow log. For example, if you + // specified a VPC ID for the ResourceId property, specify VPC for this property. + // + // ResourceType is a required field + ResourceType *string `type:"string" required:"true" enum:"FlowLogsResourceType"` + + // The type of traffic to log. You can log traffic that the resource accepts + // or rejects, or all traffic. + // + // TrafficType is a required field + TrafficType *string `type:"string" required:"true" enum:"TrafficType"` +} + +// String returns the string representation +func (s CreateFlowLogsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateFlowLogsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateFlowLogsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateFlowLogsInput"} + if s.ResourceIds == nil { + invalidParams.Add(request.NewErrParamRequired("ResourceIds")) + } + if s.ResourceType == nil { + invalidParams.Add(request.NewErrParamRequired("ResourceType")) + } + if s.TrafficType == nil { + invalidParams.Add(request.NewErrParamRequired("TrafficType")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateFlowLogsInput) SetClientToken(v string) *CreateFlowLogsInput { + s.ClientToken = &v + return s +} + +// SetDeliverLogsPermissionArn sets the DeliverLogsPermissionArn field's value. +func (s *CreateFlowLogsInput) SetDeliverLogsPermissionArn(v string) *CreateFlowLogsInput { + s.DeliverLogsPermissionArn = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateFlowLogsInput) SetDryRun(v bool) *CreateFlowLogsInput { + s.DryRun = &v + return s +} + +// SetLogDestination sets the LogDestination field's value. +func (s *CreateFlowLogsInput) SetLogDestination(v string) *CreateFlowLogsInput { + s.LogDestination = &v + return s +} + +// SetLogDestinationType sets the LogDestinationType field's value. +func (s *CreateFlowLogsInput) SetLogDestinationType(v string) *CreateFlowLogsInput { + s.LogDestinationType = &v + return s +} + +// SetLogFormat sets the LogFormat field's value. +func (s *CreateFlowLogsInput) SetLogFormat(v string) *CreateFlowLogsInput { + s.LogFormat = &v + return s +} + +// SetLogGroupName sets the LogGroupName field's value. +func (s *CreateFlowLogsInput) SetLogGroupName(v string) *CreateFlowLogsInput { + s.LogGroupName = &v + return s +} + +// SetResourceIds sets the ResourceIds field's value. +func (s *CreateFlowLogsInput) SetResourceIds(v []*string) *CreateFlowLogsInput { + s.ResourceIds = v + return s +} + +// SetResourceType sets the ResourceType field's value. +func (s *CreateFlowLogsInput) SetResourceType(v string) *CreateFlowLogsInput { + s.ResourceType = &v + return s +} + +// SetTrafficType sets the TrafficType field's value. +func (s *CreateFlowLogsInput) SetTrafficType(v string) *CreateFlowLogsInput { + s.TrafficType = &v + return s +} + +type CreateFlowLogsOutput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. + ClientToken *string `locationName:"clientToken" type:"string"` + + // The IDs of the flow logs. + FlowLogIds []*string `locationName:"flowLogIdSet" locationNameList:"item" type:"list"` + + // Information about the flow logs that could not be created successfully. + Unsuccessful []*UnsuccessfulItem `locationName:"unsuccessful" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s CreateFlowLogsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateFlowLogsOutput) GoString() string { + return s.String() +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateFlowLogsOutput) SetClientToken(v string) *CreateFlowLogsOutput { + s.ClientToken = &v + return s +} + +// SetFlowLogIds sets the FlowLogIds field's value. +func (s *CreateFlowLogsOutput) SetFlowLogIds(v []*string) *CreateFlowLogsOutput { + s.FlowLogIds = v + return s +} + +// SetUnsuccessful sets the Unsuccessful field's value. +func (s *CreateFlowLogsOutput) SetUnsuccessful(v []*UnsuccessfulItem) *CreateFlowLogsOutput { + s.Unsuccessful = v + return s +} + +type CreateFpgaImageInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html). + ClientToken *string `type:"string"` + + // A description for the AFI. + Description *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The location of the encrypted design checkpoint in Amazon S3. The input must + // be a tarball. + // + // InputStorageLocation is a required field + InputStorageLocation *StorageLocation `type:"structure" required:"true"` + + // The location in Amazon S3 for the output logs. + LogsStorageLocation *StorageLocation `type:"structure"` + + // A name for the AFI. + Name *string `type:"string"` + + // The tags to apply to the FPGA image during creation. + TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s CreateFpgaImageInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateFpgaImageInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateFpgaImageInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateFpgaImageInput"} + if s.InputStorageLocation == nil { + invalidParams.Add(request.NewErrParamRequired("InputStorageLocation")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateFpgaImageInput) SetClientToken(v string) *CreateFpgaImageInput { + s.ClientToken = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *CreateFpgaImageInput) SetDescription(v string) *CreateFpgaImageInput { + s.Description = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateFpgaImageInput) SetDryRun(v bool) *CreateFpgaImageInput { + s.DryRun = &v + return s +} + +// SetInputStorageLocation sets the InputStorageLocation field's value. +func (s *CreateFpgaImageInput) SetInputStorageLocation(v *StorageLocation) *CreateFpgaImageInput { + s.InputStorageLocation = v + return s +} + +// SetLogsStorageLocation sets the LogsStorageLocation field's value. +func (s *CreateFpgaImageInput) SetLogsStorageLocation(v *StorageLocation) *CreateFpgaImageInput { + s.LogsStorageLocation = v + return s +} + +// SetName sets the Name field's value. +func (s *CreateFpgaImageInput) SetName(v string) *CreateFpgaImageInput { + s.Name = &v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *CreateFpgaImageInput) SetTagSpecifications(v []*TagSpecification) *CreateFpgaImageInput { + s.TagSpecifications = v + return s +} + +type CreateFpgaImageOutput struct { + _ struct{} `type:"structure"` + + // The global FPGA image identifier (AGFI ID). + FpgaImageGlobalId *string `locationName:"fpgaImageGlobalId" type:"string"` + + // The FPGA image identifier (AFI ID). + FpgaImageId *string `locationName:"fpgaImageId" type:"string"` +} + +// String returns the string representation +func (s CreateFpgaImageOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateFpgaImageOutput) GoString() string { + return s.String() +} + +// SetFpgaImageGlobalId sets the FpgaImageGlobalId field's value. +func (s *CreateFpgaImageOutput) SetFpgaImageGlobalId(v string) *CreateFpgaImageOutput { + s.FpgaImageGlobalId = &v + return s +} + +// SetFpgaImageId sets the FpgaImageId field's value. +func (s *CreateFpgaImageOutput) SetFpgaImageId(v string) *CreateFpgaImageOutput { + s.FpgaImageId = &v + return s +} + +type CreateImageInput struct { + _ struct{} `type:"structure"` + + // The block device mappings. This parameter cannot be used to modify the encryption + // status of existing volumes or snapshots. To create an AMI with encrypted + // snapshots, use the CopyImage action. + BlockDeviceMappings []*BlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"BlockDeviceMapping" type:"list"` + + // A description for the new image. + Description *string `locationName:"description" type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the instance. + // + // InstanceId is a required field + InstanceId *string `locationName:"instanceId" type:"string" required:"true"` + + // A name for the new image. + // + // Constraints: 3-128 alphanumeric characters, parentheses (()), square brackets + // ([]), spaces ( ), periods (.), slashes (/), dashes (-), single quotes ('), + // at-signs (@), or underscores(_) + // + // Name is a required field + Name *string `locationName:"name" type:"string" required:"true"` + + // By default, Amazon EC2 attempts to shut down and reboot the instance before + // creating the image. If the 'No Reboot' option is set, Amazon EC2 doesn't + // shut down the instance before creating the image. When this option is used, + // file system integrity on the created image can't be guaranteed. + NoReboot *bool `locationName:"noReboot" type:"boolean"` +} + +// String returns the string representation +func (s CreateImageInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateImageInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateImageInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateImageInput"} + if s.InstanceId == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceId")) + } + if s.Name == nil { + invalidParams.Add(request.NewErrParamRequired("Name")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBlockDeviceMappings sets the BlockDeviceMappings field's value. +func (s *CreateImageInput) SetBlockDeviceMappings(v []*BlockDeviceMapping) *CreateImageInput { + s.BlockDeviceMappings = v + return s +} + +// SetDescription sets the Description field's value. +func (s *CreateImageInput) SetDescription(v string) *CreateImageInput { + s.Description = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateImageInput) SetDryRun(v bool) *CreateImageInput { + s.DryRun = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *CreateImageInput) SetInstanceId(v string) *CreateImageInput { + s.InstanceId = &v + return s +} + +// SetName sets the Name field's value. +func (s *CreateImageInput) SetName(v string) *CreateImageInput { + s.Name = &v + return s +} + +// SetNoReboot sets the NoReboot field's value. +func (s *CreateImageInput) SetNoReboot(v bool) *CreateImageInput { + s.NoReboot = &v + return s +} + +type CreateImageOutput struct { + _ struct{} `type:"structure"` + + // The ID of the new AMI. + ImageId *string `locationName:"imageId" type:"string"` +} + +// String returns the string representation +func (s CreateImageOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateImageOutput) GoString() string { + return s.String() +} + +// SetImageId sets the ImageId field's value. +func (s *CreateImageOutput) SetImageId(v string) *CreateImageOutput { + s.ImageId = &v + return s +} + +type CreateInstanceExportTaskInput struct { + _ struct{} `type:"structure"` + + // A description for the conversion task or the resource being exported. The + // maximum length is 255 bytes. + Description *string `locationName:"description" type:"string"` + + // The format and location for an instance export task. + ExportToS3Task *ExportToS3TaskSpecification `locationName:"exportToS3" type:"structure"` + + // The ID of the instance. + // + // InstanceId is a required field + InstanceId *string `locationName:"instanceId" type:"string" required:"true"` + + // The target virtualization environment. + TargetEnvironment *string `locationName:"targetEnvironment" type:"string" enum:"ExportEnvironment"` +} + +// String returns the string representation +func (s CreateInstanceExportTaskInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateInstanceExportTaskInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateInstanceExportTaskInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateInstanceExportTaskInput"} + if s.InstanceId == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDescription sets the Description field's value. +func (s *CreateInstanceExportTaskInput) SetDescription(v string) *CreateInstanceExportTaskInput { + s.Description = &v + return s +} + +// SetExportToS3Task sets the ExportToS3Task field's value. +func (s *CreateInstanceExportTaskInput) SetExportToS3Task(v *ExportToS3TaskSpecification) *CreateInstanceExportTaskInput { + s.ExportToS3Task = v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *CreateInstanceExportTaskInput) SetInstanceId(v string) *CreateInstanceExportTaskInput { + s.InstanceId = &v + return s +} + +// SetTargetEnvironment sets the TargetEnvironment field's value. +func (s *CreateInstanceExportTaskInput) SetTargetEnvironment(v string) *CreateInstanceExportTaskInput { + s.TargetEnvironment = &v + return s +} + +type CreateInstanceExportTaskOutput struct { + _ struct{} `type:"structure"` + + // Information about the instance export task. + ExportTask *ExportTask `locationName:"exportTask" type:"structure"` +} + +// String returns the string representation +func (s CreateInstanceExportTaskOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateInstanceExportTaskOutput) GoString() string { + return s.String() +} + +// SetExportTask sets the ExportTask field's value. +func (s *CreateInstanceExportTaskOutput) SetExportTask(v *ExportTask) *CreateInstanceExportTaskOutput { + s.ExportTask = v + return s +} + +type CreateInternetGatewayInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` +} + +// String returns the string representation +func (s CreateInternetGatewayInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateInternetGatewayInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateInternetGatewayInput) SetDryRun(v bool) *CreateInternetGatewayInput { + s.DryRun = &v + return s +} + +type CreateInternetGatewayOutput struct { + _ struct{} `type:"structure"` + + // Information about the internet gateway. + InternetGateway *InternetGateway `locationName:"internetGateway" type:"structure"` +} + +// String returns the string representation +func (s CreateInternetGatewayOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateInternetGatewayOutput) GoString() string { + return s.String() +} + +// SetInternetGateway sets the InternetGateway field's value. +func (s *CreateInternetGatewayOutput) SetInternetGateway(v *InternetGateway) *CreateInternetGatewayOutput { + s.InternetGateway = v + return s +} + +type CreateKeyPairInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // A unique name for the key pair. + // + // Constraints: Up to 255 ASCII characters + // + // KeyName is a required field + KeyName *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s CreateKeyPairInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateKeyPairInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateKeyPairInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateKeyPairInput"} + if s.KeyName == nil { + invalidParams.Add(request.NewErrParamRequired("KeyName")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateKeyPairInput) SetDryRun(v bool) *CreateKeyPairInput { + s.DryRun = &v + return s +} + +// SetKeyName sets the KeyName field's value. +func (s *CreateKeyPairInput) SetKeyName(v string) *CreateKeyPairInput { + s.KeyName = &v + return s +} + +// Describes a key pair. +type CreateKeyPairOutput struct { + _ struct{} `type:"structure"` + + // The SHA-1 digest of the DER encoded private key. + KeyFingerprint *string `locationName:"keyFingerprint" type:"string"` + + // An unencrypted PEM encoded RSA private key. + KeyMaterial *string `locationName:"keyMaterial" type:"string" sensitive:"true"` + + // The name of the key pair. + KeyName *string `locationName:"keyName" type:"string"` +} + +// String returns the string representation +func (s CreateKeyPairOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateKeyPairOutput) GoString() string { + return s.String() +} + +// SetKeyFingerprint sets the KeyFingerprint field's value. +func (s *CreateKeyPairOutput) SetKeyFingerprint(v string) *CreateKeyPairOutput { + s.KeyFingerprint = &v + return s +} + +// SetKeyMaterial sets the KeyMaterial field's value. +func (s *CreateKeyPairOutput) SetKeyMaterial(v string) *CreateKeyPairOutput { + s.KeyMaterial = &v + return s +} + +// SetKeyName sets the KeyName field's value. +func (s *CreateKeyPairOutput) SetKeyName(v string) *CreateKeyPairOutput { + s.KeyName = &v + return s +} + +type CreateLaunchTemplateInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier you provide to ensure the idempotency of + // the request. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + // + // Constraint: Maximum 128 ASCII characters. + ClientToken *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The information for the launch template. + // + // LaunchTemplateData is a required field + LaunchTemplateData *RequestLaunchTemplateData `type:"structure" required:"true"` + + // A name for the launch template. + // + // LaunchTemplateName is a required field + LaunchTemplateName *string `min:"3" type:"string" required:"true"` + + // The tags to apply to the launch template during creation. + TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` + + // A description for the first version of the launch template. + VersionDescription *string `type:"string"` +} + +// String returns the string representation +func (s CreateLaunchTemplateInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateLaunchTemplateInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateLaunchTemplateInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateLaunchTemplateInput"} + if s.LaunchTemplateData == nil { + invalidParams.Add(request.NewErrParamRequired("LaunchTemplateData")) + } + if s.LaunchTemplateName == nil { + invalidParams.Add(request.NewErrParamRequired("LaunchTemplateName")) + } + if s.LaunchTemplateName != nil && len(*s.LaunchTemplateName) < 3 { + invalidParams.Add(request.NewErrParamMinLen("LaunchTemplateName", 3)) + } + if s.LaunchTemplateData != nil { + if err := s.LaunchTemplateData.Validate(); err != nil { + invalidParams.AddNested("LaunchTemplateData", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateLaunchTemplateInput) SetClientToken(v string) *CreateLaunchTemplateInput { + s.ClientToken = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateLaunchTemplateInput) SetDryRun(v bool) *CreateLaunchTemplateInput { + s.DryRun = &v + return s +} + +// SetLaunchTemplateData sets the LaunchTemplateData field's value. +func (s *CreateLaunchTemplateInput) SetLaunchTemplateData(v *RequestLaunchTemplateData) *CreateLaunchTemplateInput { + s.LaunchTemplateData = v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *CreateLaunchTemplateInput) SetLaunchTemplateName(v string) *CreateLaunchTemplateInput { + s.LaunchTemplateName = &v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *CreateLaunchTemplateInput) SetTagSpecifications(v []*TagSpecification) *CreateLaunchTemplateInput { + s.TagSpecifications = v + return s +} + +// SetVersionDescription sets the VersionDescription field's value. +func (s *CreateLaunchTemplateInput) SetVersionDescription(v string) *CreateLaunchTemplateInput { + s.VersionDescription = &v + return s +} + +type CreateLaunchTemplateOutput struct { + _ struct{} `type:"structure"` + + // Information about the launch template. + LaunchTemplate *LaunchTemplate `locationName:"launchTemplate" type:"structure"` +} + +// String returns the string representation +func (s CreateLaunchTemplateOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateLaunchTemplateOutput) GoString() string { + return s.String() +} + +// SetLaunchTemplate sets the LaunchTemplate field's value. +func (s *CreateLaunchTemplateOutput) SetLaunchTemplate(v *LaunchTemplate) *CreateLaunchTemplateOutput { + s.LaunchTemplate = v + return s +} + +type CreateLaunchTemplateVersionInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier you provide to ensure the idempotency of + // the request. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + // + // Constraint: Maximum 128 ASCII characters. + ClientToken *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The information for the launch template. + // + // LaunchTemplateData is a required field + LaunchTemplateData *RequestLaunchTemplateData `type:"structure" required:"true"` + + // The ID of the launch template. You must specify either the launch template + // ID or launch template name in the request. + LaunchTemplateId *string `type:"string"` + + // The name of the launch template. You must specify either the launch template + // ID or launch template name in the request. + LaunchTemplateName *string `min:"3" type:"string"` + + // The version number of the launch template version on which to base the new + // version. The new version inherits the same launch parameters as the source + // version, except for parameters that you specify in LaunchTemplateData. Snapshots + // applied to the block device mapping are ignored when creating a new version + // unless they are explicitly included. + SourceVersion *string `type:"string"` + + // A description for the version of the launch template. + VersionDescription *string `type:"string"` +} + +// String returns the string representation +func (s CreateLaunchTemplateVersionInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateLaunchTemplateVersionInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateLaunchTemplateVersionInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateLaunchTemplateVersionInput"} + if s.LaunchTemplateData == nil { + invalidParams.Add(request.NewErrParamRequired("LaunchTemplateData")) + } + if s.LaunchTemplateName != nil && len(*s.LaunchTemplateName) < 3 { + invalidParams.Add(request.NewErrParamMinLen("LaunchTemplateName", 3)) + } + if s.LaunchTemplateData != nil { + if err := s.LaunchTemplateData.Validate(); err != nil { + invalidParams.AddNested("LaunchTemplateData", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateLaunchTemplateVersionInput) SetClientToken(v string) *CreateLaunchTemplateVersionInput { + s.ClientToken = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateLaunchTemplateVersionInput) SetDryRun(v bool) *CreateLaunchTemplateVersionInput { + s.DryRun = &v + return s +} + +// SetLaunchTemplateData sets the LaunchTemplateData field's value. +func (s *CreateLaunchTemplateVersionInput) SetLaunchTemplateData(v *RequestLaunchTemplateData) *CreateLaunchTemplateVersionInput { + s.LaunchTemplateData = v + return s +} + +// SetLaunchTemplateId sets the LaunchTemplateId field's value. +func (s *CreateLaunchTemplateVersionInput) SetLaunchTemplateId(v string) *CreateLaunchTemplateVersionInput { + s.LaunchTemplateId = &v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *CreateLaunchTemplateVersionInput) SetLaunchTemplateName(v string) *CreateLaunchTemplateVersionInput { + s.LaunchTemplateName = &v + return s +} + +// SetSourceVersion sets the SourceVersion field's value. +func (s *CreateLaunchTemplateVersionInput) SetSourceVersion(v string) *CreateLaunchTemplateVersionInput { + s.SourceVersion = &v + return s +} + +// SetVersionDescription sets the VersionDescription field's value. +func (s *CreateLaunchTemplateVersionInput) SetVersionDescription(v string) *CreateLaunchTemplateVersionInput { + s.VersionDescription = &v + return s +} + +type CreateLaunchTemplateVersionOutput struct { + _ struct{} `type:"structure"` + + // Information about the launch template version. + LaunchTemplateVersion *LaunchTemplateVersion `locationName:"launchTemplateVersion" type:"structure"` +} + +// String returns the string representation +func (s CreateLaunchTemplateVersionOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateLaunchTemplateVersionOutput) GoString() string { + return s.String() +} + +// SetLaunchTemplateVersion sets the LaunchTemplateVersion field's value. +func (s *CreateLaunchTemplateVersionOutput) SetLaunchTemplateVersion(v *LaunchTemplateVersion) *CreateLaunchTemplateVersionOutput { + s.LaunchTemplateVersion = v + return s +} + +type CreateNatGatewayInput struct { + _ struct{} `type:"structure"` + + // The allocation ID of an Elastic IP address to associate with the NAT gateway. + // If the Elastic IP address is associated with another resource, you must first + // disassociate it. + // + // AllocationId is a required field + AllocationId *string `type:"string" required:"true"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + // + // Constraint: Maximum 64 ASCII characters. + ClientToken *string `type:"string"` + + // The subnet in which to create the NAT gateway. + // + // SubnetId is a required field + SubnetId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s CreateNatGatewayInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateNatGatewayInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateNatGatewayInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateNatGatewayInput"} + if s.AllocationId == nil { + invalidParams.Add(request.NewErrParamRequired("AllocationId")) + } + if s.SubnetId == nil { + invalidParams.Add(request.NewErrParamRequired("SubnetId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAllocationId sets the AllocationId field's value. +func (s *CreateNatGatewayInput) SetAllocationId(v string) *CreateNatGatewayInput { + s.AllocationId = &v + return s +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateNatGatewayInput) SetClientToken(v string) *CreateNatGatewayInput { + s.ClientToken = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *CreateNatGatewayInput) SetSubnetId(v string) *CreateNatGatewayInput { + s.SubnetId = &v + return s +} + +type CreateNatGatewayOutput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier to ensure the idempotency of the request. + // Only returned if a client token was provided in the request. + ClientToken *string `locationName:"clientToken" type:"string"` + + // Information about the NAT gateway. + NatGateway *NatGateway `locationName:"natGateway" type:"structure"` +} + +// String returns the string representation +func (s CreateNatGatewayOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateNatGatewayOutput) GoString() string { + return s.String() +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateNatGatewayOutput) SetClientToken(v string) *CreateNatGatewayOutput { + s.ClientToken = &v + return s +} + +// SetNatGateway sets the NatGateway field's value. +func (s *CreateNatGatewayOutput) SetNatGateway(v *NatGateway) *CreateNatGatewayOutput { + s.NatGateway = v + return s +} + +type CreateNetworkAclEntryInput struct { + _ struct{} `type:"structure"` + + // The IPv4 network range to allow or deny, in CIDR notation (for example 172.16.0.0/24). + CidrBlock *string `locationName:"cidrBlock" type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // Indicates whether this is an egress rule (rule is applied to traffic leaving + // the subnet). + // + // Egress is a required field + Egress *bool `locationName:"egress" type:"boolean" required:"true"` + + // ICMP protocol: The ICMP or ICMPv6 type and code. Required if specifying protocol + // 1 (ICMP) or protocol 58 (ICMPv6) with an IPv6 CIDR block. + IcmpTypeCode *IcmpTypeCode `locationName:"Icmp" type:"structure"` + + // The IPv6 network range to allow or deny, in CIDR notation (for example 2001:db8:1234:1a00::/64). + Ipv6CidrBlock *string `locationName:"ipv6CidrBlock" type:"string"` + + // The ID of the network ACL. + // + // NetworkAclId is a required field + NetworkAclId *string `locationName:"networkAclId" type:"string" required:"true"` + + // TCP or UDP protocols: The range of ports the rule applies to. Required if + // specifying protocol 6 (TCP) or 17 (UDP). + PortRange *PortRange `locationName:"portRange" type:"structure"` + + // The protocol number. A value of "-1" means all protocols. If you specify + // "-1" or a protocol number other than "6" (TCP), "17" (UDP), or "1" (ICMP), + // traffic on all ports is allowed, regardless of any ports or ICMP types or + // codes that you specify. If you specify protocol "58" (ICMPv6) and specify + // an IPv4 CIDR block, traffic for all ICMP types and codes allowed, regardless + // of any that you specify. If you specify protocol "58" (ICMPv6) and specify + // an IPv6 CIDR block, you must specify an ICMP type and code. + // + // Protocol is a required field + Protocol *string `locationName:"protocol" type:"string" required:"true"` + + // Indicates whether to allow or deny the traffic that matches the rule. + // + // RuleAction is a required field + RuleAction *string `locationName:"ruleAction" type:"string" required:"true" enum:"RuleAction"` + + // The rule number for the entry (for example, 100). ACL entries are processed + // in ascending order by rule number. + // + // Constraints: Positive integer from 1 to 32766. The range 32767 to 65535 is + // reserved for internal use. + // + // RuleNumber is a required field + RuleNumber *int64 `locationName:"ruleNumber" type:"integer" required:"true"` +} + +// String returns the string representation +func (s CreateNetworkAclEntryInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateNetworkAclEntryInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateNetworkAclEntryInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateNetworkAclEntryInput"} + if s.Egress == nil { + invalidParams.Add(request.NewErrParamRequired("Egress")) + } + if s.NetworkAclId == nil { + invalidParams.Add(request.NewErrParamRequired("NetworkAclId")) + } + if s.Protocol == nil { + invalidParams.Add(request.NewErrParamRequired("Protocol")) + } + if s.RuleAction == nil { + invalidParams.Add(request.NewErrParamRequired("RuleAction")) + } + if s.RuleNumber == nil { + invalidParams.Add(request.NewErrParamRequired("RuleNumber")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCidrBlock sets the CidrBlock field's value. +func (s *CreateNetworkAclEntryInput) SetCidrBlock(v string) *CreateNetworkAclEntryInput { + s.CidrBlock = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateNetworkAclEntryInput) SetDryRun(v bool) *CreateNetworkAclEntryInput { + s.DryRun = &v + return s +} + +// SetEgress sets the Egress field's value. +func (s *CreateNetworkAclEntryInput) SetEgress(v bool) *CreateNetworkAclEntryInput { + s.Egress = &v + return s +} + +// SetIcmpTypeCode sets the IcmpTypeCode field's value. +func (s *CreateNetworkAclEntryInput) SetIcmpTypeCode(v *IcmpTypeCode) *CreateNetworkAclEntryInput { + s.IcmpTypeCode = v + return s +} + +// SetIpv6CidrBlock sets the Ipv6CidrBlock field's value. +func (s *CreateNetworkAclEntryInput) SetIpv6CidrBlock(v string) *CreateNetworkAclEntryInput { + s.Ipv6CidrBlock = &v + return s +} + +// SetNetworkAclId sets the NetworkAclId field's value. +func (s *CreateNetworkAclEntryInput) SetNetworkAclId(v string) *CreateNetworkAclEntryInput { + s.NetworkAclId = &v + return s +} + +// SetPortRange sets the PortRange field's value. +func (s *CreateNetworkAclEntryInput) SetPortRange(v *PortRange) *CreateNetworkAclEntryInput { + s.PortRange = v + return s +} + +// SetProtocol sets the Protocol field's value. +func (s *CreateNetworkAclEntryInput) SetProtocol(v string) *CreateNetworkAclEntryInput { + s.Protocol = &v + return s +} + +// SetRuleAction sets the RuleAction field's value. +func (s *CreateNetworkAclEntryInput) SetRuleAction(v string) *CreateNetworkAclEntryInput { + s.RuleAction = &v + return s +} + +// SetRuleNumber sets the RuleNumber field's value. +func (s *CreateNetworkAclEntryInput) SetRuleNumber(v int64) *CreateNetworkAclEntryInput { + s.RuleNumber = &v + return s +} + +type CreateNetworkAclEntryOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s CreateNetworkAclEntryOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateNetworkAclEntryOutput) GoString() string { + return s.String() +} + +type CreateNetworkAclInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the VPC. + // + // VpcId is a required field + VpcId *string `locationName:"vpcId" type:"string" required:"true"` +} + +// String returns the string representation +func (s CreateNetworkAclInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateNetworkAclInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateNetworkAclInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateNetworkAclInput"} + if s.VpcId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateNetworkAclInput) SetDryRun(v bool) *CreateNetworkAclInput { + s.DryRun = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *CreateNetworkAclInput) SetVpcId(v string) *CreateNetworkAclInput { + s.VpcId = &v + return s +} + +type CreateNetworkAclOutput struct { + _ struct{} `type:"structure"` + + // Information about the network ACL. + NetworkAcl *NetworkAcl `locationName:"networkAcl" type:"structure"` +} + +// String returns the string representation +func (s CreateNetworkAclOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateNetworkAclOutput) GoString() string { + return s.String() +} + +// SetNetworkAcl sets the NetworkAcl field's value. +func (s *CreateNetworkAclOutput) SetNetworkAcl(v *NetworkAcl) *CreateNetworkAclOutput { + s.NetworkAcl = v + return s +} + +// Contains the parameters for CreateNetworkInterface. +type CreateNetworkInterfaceInput struct { + _ struct{} `type:"structure"` + + // A description for the network interface. + Description *string `locationName:"description" type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The IDs of one or more security groups. + Groups []*string `locationName:"SecurityGroupId" locationNameList:"SecurityGroupId" type:"list"` + + // Indicates the type of network interface. To create an Elastic Fabric Adapter + // (EFA), specify efa. For more information, see Elastic Fabric Adapter (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html) + // in the Amazon Elastic Compute Cloud User Guide. + InterfaceType *string `type:"string" enum:"NetworkInterfaceCreationType"` + + // The number of IPv6 addresses to assign to a network interface. Amazon EC2 + // automatically selects the IPv6 addresses from the subnet range. You can't + // use this option if specifying specific IPv6 addresses. If your subnet has + // the AssignIpv6AddressOnCreation attribute set to true, you can specify 0 + // to override this setting. + Ipv6AddressCount *int64 `locationName:"ipv6AddressCount" type:"integer"` + + // One or more specific IPv6 addresses from the IPv6 CIDR block range of your + // subnet. You can't use this option if you're specifying a number of IPv6 addresses. + Ipv6Addresses []*InstanceIpv6Address `locationName:"ipv6Addresses" locationNameList:"item" type:"list"` + + // The primary private IPv4 address of the network interface. If you don't specify + // an IPv4 address, Amazon EC2 selects one for you from the subnet's IPv4 CIDR + // range. If you specify an IP address, you cannot indicate any IP addresses + // specified in privateIpAddresses as primary (only one IP address can be designated + // as primary). + PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` + + // One or more private IPv4 addresses. + PrivateIpAddresses []*PrivateIpAddressSpecification `locationName:"privateIpAddresses" locationNameList:"item" type:"list"` + + // The number of secondary private IPv4 addresses to assign to a network interface. + // When you specify a number of secondary IPv4 addresses, Amazon EC2 selects + // these IP addresses within the subnet's IPv4 CIDR range. You can't specify + // this option and specify more than one private IP address using privateIpAddresses. + // + // The number of IP addresses you can assign to a network interface varies by + // instance type. For more information, see IP Addresses Per ENI Per Instance + // Type (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI) + // in the Amazon Virtual Private Cloud User Guide. + SecondaryPrivateIpAddressCount *int64 `locationName:"secondaryPrivateIpAddressCount" type:"integer"` + + // The ID of the subnet to associate with the network interface. + // + // SubnetId is a required field + SubnetId *string `locationName:"subnetId" type:"string" required:"true"` +} + +// String returns the string representation +func (s CreateNetworkInterfaceInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateNetworkInterfaceInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateNetworkInterfaceInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateNetworkInterfaceInput"} + if s.SubnetId == nil { + invalidParams.Add(request.NewErrParamRequired("SubnetId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDescription sets the Description field's value. +func (s *CreateNetworkInterfaceInput) SetDescription(v string) *CreateNetworkInterfaceInput { + s.Description = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateNetworkInterfaceInput) SetDryRun(v bool) *CreateNetworkInterfaceInput { + s.DryRun = &v + return s +} + +// SetGroups sets the Groups field's value. +func (s *CreateNetworkInterfaceInput) SetGroups(v []*string) *CreateNetworkInterfaceInput { + s.Groups = v + return s +} + +// SetInterfaceType sets the InterfaceType field's value. +func (s *CreateNetworkInterfaceInput) SetInterfaceType(v string) *CreateNetworkInterfaceInput { + s.InterfaceType = &v + return s +} + +// SetIpv6AddressCount sets the Ipv6AddressCount field's value. +func (s *CreateNetworkInterfaceInput) SetIpv6AddressCount(v int64) *CreateNetworkInterfaceInput { + s.Ipv6AddressCount = &v + return s +} + +// SetIpv6Addresses sets the Ipv6Addresses field's value. +func (s *CreateNetworkInterfaceInput) SetIpv6Addresses(v []*InstanceIpv6Address) *CreateNetworkInterfaceInput { + s.Ipv6Addresses = v + return s +} + +// SetPrivateIpAddress sets the PrivateIpAddress field's value. +func (s *CreateNetworkInterfaceInput) SetPrivateIpAddress(v string) *CreateNetworkInterfaceInput { + s.PrivateIpAddress = &v + return s +} + +// SetPrivateIpAddresses sets the PrivateIpAddresses field's value. +func (s *CreateNetworkInterfaceInput) SetPrivateIpAddresses(v []*PrivateIpAddressSpecification) *CreateNetworkInterfaceInput { + s.PrivateIpAddresses = v + return s +} + +// SetSecondaryPrivateIpAddressCount sets the SecondaryPrivateIpAddressCount field's value. +func (s *CreateNetworkInterfaceInput) SetSecondaryPrivateIpAddressCount(v int64) *CreateNetworkInterfaceInput { + s.SecondaryPrivateIpAddressCount = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *CreateNetworkInterfaceInput) SetSubnetId(v string) *CreateNetworkInterfaceInput { + s.SubnetId = &v + return s +} + +// Contains the output of CreateNetworkInterface. +type CreateNetworkInterfaceOutput struct { + _ struct{} `type:"structure"` + + // Information about the network interface. + NetworkInterface *NetworkInterface `locationName:"networkInterface" type:"structure"` +} + +// String returns the string representation +func (s CreateNetworkInterfaceOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateNetworkInterfaceOutput) GoString() string { + return s.String() +} + +// SetNetworkInterface sets the NetworkInterface field's value. +func (s *CreateNetworkInterfaceOutput) SetNetworkInterface(v *NetworkInterface) *CreateNetworkInterfaceOutput { + s.NetworkInterface = v + return s +} + +// Contains the parameters for CreateNetworkInterfacePermission. +type CreateNetworkInterfacePermissionInput struct { + _ struct{} `type:"structure"` + + // The AWS account ID. + AwsAccountId *string `type:"string"` + + // The AWS service. Currently not supported. + AwsService *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the network interface. + // + // NetworkInterfaceId is a required field + NetworkInterfaceId *string `type:"string" required:"true"` + + // The type of permission to grant. + // + // Permission is a required field + Permission *string `type:"string" required:"true" enum:"InterfacePermissionType"` +} + +// String returns the string representation +func (s CreateNetworkInterfacePermissionInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateNetworkInterfacePermissionInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateNetworkInterfacePermissionInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateNetworkInterfacePermissionInput"} + if s.NetworkInterfaceId == nil { + invalidParams.Add(request.NewErrParamRequired("NetworkInterfaceId")) + } + if s.Permission == nil { + invalidParams.Add(request.NewErrParamRequired("Permission")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAwsAccountId sets the AwsAccountId field's value. +func (s *CreateNetworkInterfacePermissionInput) SetAwsAccountId(v string) *CreateNetworkInterfacePermissionInput { + s.AwsAccountId = &v + return s +} + +// SetAwsService sets the AwsService field's value. +func (s *CreateNetworkInterfacePermissionInput) SetAwsService(v string) *CreateNetworkInterfacePermissionInput { + s.AwsService = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateNetworkInterfacePermissionInput) SetDryRun(v bool) *CreateNetworkInterfacePermissionInput { + s.DryRun = &v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *CreateNetworkInterfacePermissionInput) SetNetworkInterfaceId(v string) *CreateNetworkInterfacePermissionInput { + s.NetworkInterfaceId = &v + return s +} + +// SetPermission sets the Permission field's value. +func (s *CreateNetworkInterfacePermissionInput) SetPermission(v string) *CreateNetworkInterfacePermissionInput { + s.Permission = &v + return s +} + +// Contains the output of CreateNetworkInterfacePermission. +type CreateNetworkInterfacePermissionOutput struct { + _ struct{} `type:"structure"` + + // Information about the permission for the network interface. + InterfacePermission *NetworkInterfacePermission `locationName:"interfacePermission" type:"structure"` +} + +// String returns the string representation +func (s CreateNetworkInterfacePermissionOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateNetworkInterfacePermissionOutput) GoString() string { + return s.String() +} + +// SetInterfacePermission sets the InterfacePermission field's value. +func (s *CreateNetworkInterfacePermissionOutput) SetInterfacePermission(v *NetworkInterfacePermission) *CreateNetworkInterfacePermissionOutput { + s.InterfacePermission = v + return s +} + +type CreatePlacementGroupInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // A name for the placement group. Must be unique within the scope of your account + // for the Region. + // + // Constraints: Up to 255 ASCII characters + GroupName *string `locationName:"groupName" type:"string"` + + // The number of partitions. Valid only when Strategy is set to partition. + PartitionCount *int64 `type:"integer"` + + // The placement strategy. + Strategy *string `locationName:"strategy" type:"string" enum:"PlacementStrategy"` +} + +// String returns the string representation +func (s CreatePlacementGroupInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreatePlacementGroupInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *CreatePlacementGroupInput) SetDryRun(v bool) *CreatePlacementGroupInput { + s.DryRun = &v + return s +} + +// SetGroupName sets the GroupName field's value. +func (s *CreatePlacementGroupInput) SetGroupName(v string) *CreatePlacementGroupInput { + s.GroupName = &v + return s +} + +// SetPartitionCount sets the PartitionCount field's value. +func (s *CreatePlacementGroupInput) SetPartitionCount(v int64) *CreatePlacementGroupInput { + s.PartitionCount = &v + return s +} + +// SetStrategy sets the Strategy field's value. +func (s *CreatePlacementGroupInput) SetStrategy(v string) *CreatePlacementGroupInput { + s.Strategy = &v + return s +} + +type CreatePlacementGroupOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s CreatePlacementGroupOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreatePlacementGroupOutput) GoString() string { + return s.String() +} + +// Contains the parameters for CreateReservedInstancesListing. +type CreateReservedInstancesListingInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier you provide to ensure idempotency of your + // listings. This helps avoid duplicate listings. For more information, see + // Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + // + // ClientToken is a required field + ClientToken *string `locationName:"clientToken" type:"string" required:"true"` + + // The number of instances that are a part of a Reserved Instance account to + // be listed in the Reserved Instance Marketplace. This number should be less + // than or equal to the instance count associated with the Reserved Instance + // ID specified in this call. + // + // InstanceCount is a required field + InstanceCount *int64 `locationName:"instanceCount" type:"integer" required:"true"` + + // A list specifying the price of the Standard Reserved Instance for each month + // remaining in the Reserved Instance term. + // + // PriceSchedules is a required field + PriceSchedules []*PriceScheduleSpecification `locationName:"priceSchedules" locationNameList:"item" type:"list" required:"true"` + + // The ID of the active Standard Reserved Instance. + // + // ReservedInstancesId is a required field + ReservedInstancesId *string `locationName:"reservedInstancesId" type:"string" required:"true"` +} + +// String returns the string representation +func (s CreateReservedInstancesListingInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateReservedInstancesListingInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateReservedInstancesListingInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateReservedInstancesListingInput"} + if s.ClientToken == nil { + invalidParams.Add(request.NewErrParamRequired("ClientToken")) + } + if s.InstanceCount == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceCount")) + } + if s.PriceSchedules == nil { + invalidParams.Add(request.NewErrParamRequired("PriceSchedules")) + } + if s.ReservedInstancesId == nil { + invalidParams.Add(request.NewErrParamRequired("ReservedInstancesId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateReservedInstancesListingInput) SetClientToken(v string) *CreateReservedInstancesListingInput { + s.ClientToken = &v + return s +} + +// SetInstanceCount sets the InstanceCount field's value. +func (s *CreateReservedInstancesListingInput) SetInstanceCount(v int64) *CreateReservedInstancesListingInput { + s.InstanceCount = &v + return s +} + +// SetPriceSchedules sets the PriceSchedules field's value. +func (s *CreateReservedInstancesListingInput) SetPriceSchedules(v []*PriceScheduleSpecification) *CreateReservedInstancesListingInput { + s.PriceSchedules = v + return s +} + +// SetReservedInstancesId sets the ReservedInstancesId field's value. +func (s *CreateReservedInstancesListingInput) SetReservedInstancesId(v string) *CreateReservedInstancesListingInput { + s.ReservedInstancesId = &v + return s +} + +// Contains the output of CreateReservedInstancesListing. +type CreateReservedInstancesListingOutput struct { + _ struct{} `type:"structure"` + + // Information about the Standard Reserved Instance listing. + ReservedInstancesListings []*ReservedInstancesListing `locationName:"reservedInstancesListingsSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s CreateReservedInstancesListingOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateReservedInstancesListingOutput) GoString() string { + return s.String() +} + +// SetReservedInstancesListings sets the ReservedInstancesListings field's value. +func (s *CreateReservedInstancesListingOutput) SetReservedInstancesListings(v []*ReservedInstancesListing) *CreateReservedInstancesListingOutput { + s.ReservedInstancesListings = v + return s +} + +type CreateRouteInput struct { + _ struct{} `type:"structure"` + + // The IPv4 CIDR address block used for the destination match. Routing decisions + // are based on the most specific match. + DestinationCidrBlock *string `locationName:"destinationCidrBlock" type:"string"` + + // The IPv6 CIDR block used for the destination match. Routing decisions are + // based on the most specific match. + DestinationIpv6CidrBlock *string `locationName:"destinationIpv6CidrBlock" type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // [IPv6 traffic only] The ID of an egress-only internet gateway. + EgressOnlyInternetGatewayId *string `locationName:"egressOnlyInternetGatewayId" type:"string"` + + // The ID of an internet gateway or virtual private gateway attached to your + // VPC. + GatewayId *string `locationName:"gatewayId" type:"string"` + + // The ID of a NAT instance in your VPC. The operation fails if you specify + // an instance ID unless exactly one network interface is attached. + InstanceId *string `locationName:"instanceId" type:"string"` + + // [IPv4 traffic only] The ID of a NAT gateway. + NatGatewayId *string `locationName:"natGatewayId" type:"string"` + + // The ID of a network interface. + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` + + // The ID of the route table for the route. + // + // RouteTableId is a required field + RouteTableId *string `locationName:"routeTableId" type:"string" required:"true"` + + // The ID of a transit gateway. + TransitGatewayId *string `type:"string"` + + // The ID of a VPC peering connection. + VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string"` +} + +// String returns the string representation +func (s CreateRouteInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateRouteInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateRouteInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateRouteInput"} + if s.RouteTableId == nil { + invalidParams.Add(request.NewErrParamRequired("RouteTableId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDestinationCidrBlock sets the DestinationCidrBlock field's value. +func (s *CreateRouteInput) SetDestinationCidrBlock(v string) *CreateRouteInput { + s.DestinationCidrBlock = &v + return s +} + +// SetDestinationIpv6CidrBlock sets the DestinationIpv6CidrBlock field's value. +func (s *CreateRouteInput) SetDestinationIpv6CidrBlock(v string) *CreateRouteInput { + s.DestinationIpv6CidrBlock = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateRouteInput) SetDryRun(v bool) *CreateRouteInput { + s.DryRun = &v + return s +} + +// SetEgressOnlyInternetGatewayId sets the EgressOnlyInternetGatewayId field's value. +func (s *CreateRouteInput) SetEgressOnlyInternetGatewayId(v string) *CreateRouteInput { + s.EgressOnlyInternetGatewayId = &v + return s +} + +// SetGatewayId sets the GatewayId field's value. +func (s *CreateRouteInput) SetGatewayId(v string) *CreateRouteInput { + s.GatewayId = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *CreateRouteInput) SetInstanceId(v string) *CreateRouteInput { + s.InstanceId = &v + return s +} + +// SetNatGatewayId sets the NatGatewayId field's value. +func (s *CreateRouteInput) SetNatGatewayId(v string) *CreateRouteInput { + s.NatGatewayId = &v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *CreateRouteInput) SetNetworkInterfaceId(v string) *CreateRouteInput { + s.NetworkInterfaceId = &v + return s +} + +// SetRouteTableId sets the RouteTableId field's value. +func (s *CreateRouteInput) SetRouteTableId(v string) *CreateRouteInput { + s.RouteTableId = &v + return s +} + +// SetTransitGatewayId sets the TransitGatewayId field's value. +func (s *CreateRouteInput) SetTransitGatewayId(v string) *CreateRouteInput { + s.TransitGatewayId = &v + return s +} + +// SetVpcPeeringConnectionId sets the VpcPeeringConnectionId field's value. +func (s *CreateRouteInput) SetVpcPeeringConnectionId(v string) *CreateRouteInput { + s.VpcPeeringConnectionId = &v + return s +} + +type CreateRouteOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, it returns an error. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s CreateRouteOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateRouteOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *CreateRouteOutput) SetReturn(v bool) *CreateRouteOutput { + s.Return = &v + return s +} + +type CreateRouteTableInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the VPC. + // + // VpcId is a required field + VpcId *string `locationName:"vpcId" type:"string" required:"true"` +} + +// String returns the string representation +func (s CreateRouteTableInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateRouteTableInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateRouteTableInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateRouteTableInput"} + if s.VpcId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateRouteTableInput) SetDryRun(v bool) *CreateRouteTableInput { + s.DryRun = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *CreateRouteTableInput) SetVpcId(v string) *CreateRouteTableInput { + s.VpcId = &v + return s +} + +type CreateRouteTableOutput struct { + _ struct{} `type:"structure"` + + // Information about the route table. + RouteTable *RouteTable `locationName:"routeTable" type:"structure"` +} + +// String returns the string representation +func (s CreateRouteTableOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateRouteTableOutput) GoString() string { + return s.String() +} + +// SetRouteTable sets the RouteTable field's value. +func (s *CreateRouteTableOutput) SetRouteTable(v *RouteTable) *CreateRouteTableOutput { + s.RouteTable = v + return s +} + +type CreateSecurityGroupInput struct { + _ struct{} `type:"structure"` + + // A description for the security group. This is informational only. + // + // Constraints: Up to 255 characters in length + // + // Constraints for EC2-Classic: ASCII characters + // + // Constraints for EC2-VPC: a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=&;{}!$* + // + // Description is a required field + Description *string `locationName:"GroupDescription" type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The name of the security group. + // + // Constraints: Up to 255 characters in length. Cannot start with sg-. + // + // Constraints for EC2-Classic: ASCII characters + // + // Constraints for EC2-VPC: a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=&;{}!$* + // + // GroupName is a required field + GroupName *string `type:"string" required:"true"` + + // [EC2-VPC] The ID of the VPC. Required for EC2-VPC. + VpcId *string `type:"string"` +} + +// String returns the string representation +func (s CreateSecurityGroupInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateSecurityGroupInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateSecurityGroupInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateSecurityGroupInput"} + if s.Description == nil { + invalidParams.Add(request.NewErrParamRequired("Description")) + } + if s.GroupName == nil { + invalidParams.Add(request.NewErrParamRequired("GroupName")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDescription sets the Description field's value. +func (s *CreateSecurityGroupInput) SetDescription(v string) *CreateSecurityGroupInput { + s.Description = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateSecurityGroupInput) SetDryRun(v bool) *CreateSecurityGroupInput { + s.DryRun = &v + return s +} + +// SetGroupName sets the GroupName field's value. +func (s *CreateSecurityGroupInput) SetGroupName(v string) *CreateSecurityGroupInput { + s.GroupName = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *CreateSecurityGroupInput) SetVpcId(v string) *CreateSecurityGroupInput { + s.VpcId = &v + return s +} + +type CreateSecurityGroupOutput struct { + _ struct{} `type:"structure"` + + // The ID of the security group. + GroupId *string `locationName:"groupId" type:"string"` +} + +// String returns the string representation +func (s CreateSecurityGroupOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateSecurityGroupOutput) GoString() string { + return s.String() +} + +// SetGroupId sets the GroupId field's value. +func (s *CreateSecurityGroupOutput) SetGroupId(v string) *CreateSecurityGroupOutput { + s.GroupId = &v + return s +} + +// Contains the parameters for CreateSnapshot. +type CreateSnapshotInput struct { + _ struct{} `type:"structure"` + + // A description for the snapshot. + Description *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The tags to apply to the snapshot during creation. + TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` + + // The ID of the EBS volume. + // + // VolumeId is a required field + VolumeId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s CreateSnapshotInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateSnapshotInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateSnapshotInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateSnapshotInput"} + if s.VolumeId == nil { + invalidParams.Add(request.NewErrParamRequired("VolumeId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDescription sets the Description field's value. +func (s *CreateSnapshotInput) SetDescription(v string) *CreateSnapshotInput { + s.Description = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateSnapshotInput) SetDryRun(v bool) *CreateSnapshotInput { + s.DryRun = &v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *CreateSnapshotInput) SetTagSpecifications(v []*TagSpecification) *CreateSnapshotInput { + s.TagSpecifications = v + return s +} + +// SetVolumeId sets the VolumeId field's value. +func (s *CreateSnapshotInput) SetVolumeId(v string) *CreateSnapshotInput { + s.VolumeId = &v + return s +} + +type CreateSnapshotsInput struct { + _ struct{} `type:"structure"` + + // Copies the tags from the specified volume to corresponding snapshot. + CopyTagsFromSource *string `type:"string" enum:"CopyTagsFromSource"` + + // A description propagated to every snapshot specified by the instance. + Description *string `type:"string"` + + // Checks whether you have the required permissions for the action without actually + // making the request. Provides an error response. If you have the required + // permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The instance to specify which volumes should be included in the snapshots. + // + // InstanceSpecification is a required field + InstanceSpecification *InstanceSpecification `type:"structure" required:"true"` + + // Tags to apply to every snapshot specified by the instance. + TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s CreateSnapshotsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateSnapshotsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateSnapshotsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateSnapshotsInput"} + if s.InstanceSpecification == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceSpecification")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCopyTagsFromSource sets the CopyTagsFromSource field's value. +func (s *CreateSnapshotsInput) SetCopyTagsFromSource(v string) *CreateSnapshotsInput { + s.CopyTagsFromSource = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *CreateSnapshotsInput) SetDescription(v string) *CreateSnapshotsInput { + s.Description = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateSnapshotsInput) SetDryRun(v bool) *CreateSnapshotsInput { + s.DryRun = &v + return s +} + +// SetInstanceSpecification sets the InstanceSpecification field's value. +func (s *CreateSnapshotsInput) SetInstanceSpecification(v *InstanceSpecification) *CreateSnapshotsInput { + s.InstanceSpecification = v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *CreateSnapshotsInput) SetTagSpecifications(v []*TagSpecification) *CreateSnapshotsInput { + s.TagSpecifications = v + return s +} + +type CreateSnapshotsOutput struct { + _ struct{} `type:"structure"` + + // List of snapshots. + Snapshots []*SnapshotInfo `locationName:"snapshotSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s CreateSnapshotsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateSnapshotsOutput) GoString() string { + return s.String() +} + +// SetSnapshots sets the Snapshots field's value. +func (s *CreateSnapshotsOutput) SetSnapshots(v []*SnapshotInfo) *CreateSnapshotsOutput { + s.Snapshots = v + return s +} + +// Contains the parameters for CreateSpotDatafeedSubscription. +type CreateSpotDatafeedSubscriptionInput struct { + _ struct{} `type:"structure"` + + // The Amazon S3 bucket in which to store the Spot Instance data feed. + // + // Bucket is a required field + Bucket *string `locationName:"bucket" type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // A prefix for the data feed file names. + Prefix *string `locationName:"prefix" type:"string"` +} + +// String returns the string representation +func (s CreateSpotDatafeedSubscriptionInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateSpotDatafeedSubscriptionInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateSpotDatafeedSubscriptionInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateSpotDatafeedSubscriptionInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *CreateSpotDatafeedSubscriptionInput) SetBucket(v string) *CreateSpotDatafeedSubscriptionInput { + s.Bucket = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateSpotDatafeedSubscriptionInput) SetDryRun(v bool) *CreateSpotDatafeedSubscriptionInput { + s.DryRun = &v + return s +} + +// SetPrefix sets the Prefix field's value. +func (s *CreateSpotDatafeedSubscriptionInput) SetPrefix(v string) *CreateSpotDatafeedSubscriptionInput { + s.Prefix = &v + return s +} + +// Contains the output of CreateSpotDatafeedSubscription. +type CreateSpotDatafeedSubscriptionOutput struct { + _ struct{} `type:"structure"` + + // The Spot Instance data feed subscription. + SpotDatafeedSubscription *SpotDatafeedSubscription `locationName:"spotDatafeedSubscription" type:"structure"` +} + +// String returns the string representation +func (s CreateSpotDatafeedSubscriptionOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateSpotDatafeedSubscriptionOutput) GoString() string { + return s.String() +} + +// SetSpotDatafeedSubscription sets the SpotDatafeedSubscription field's value. +func (s *CreateSpotDatafeedSubscriptionOutput) SetSpotDatafeedSubscription(v *SpotDatafeedSubscription) *CreateSpotDatafeedSubscriptionOutput { + s.SpotDatafeedSubscription = v + return s +} + +type CreateSubnetInput struct { + _ struct{} `type:"structure"` + + // The Availability Zone for the subnet. + // + // Default: AWS selects one for you. If you create more than one subnet in your + // VPC, we may not necessarily select a different zone for each subnet. + AvailabilityZone *string `type:"string"` + + // The AZ ID of the subnet. + AvailabilityZoneId *string `type:"string"` + + // The IPv4 network range for the subnet, in CIDR notation. For example, 10.0.0.0/24. + // + // CidrBlock is a required field + CidrBlock *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The IPv6 network range for the subnet, in CIDR notation. The subnet size + // must use a /64 prefix length. + Ipv6CidrBlock *string `type:"string"` + + // The ID of the VPC. + // + // VpcId is a required field + VpcId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s CreateSubnetInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateSubnetInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateSubnetInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateSubnetInput"} + if s.CidrBlock == nil { + invalidParams.Add(request.NewErrParamRequired("CidrBlock")) + } + if s.VpcId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *CreateSubnetInput) SetAvailabilityZone(v string) *CreateSubnetInput { + s.AvailabilityZone = &v + return s +} + +// SetAvailabilityZoneId sets the AvailabilityZoneId field's value. +func (s *CreateSubnetInput) SetAvailabilityZoneId(v string) *CreateSubnetInput { + s.AvailabilityZoneId = &v + return s +} + +// SetCidrBlock sets the CidrBlock field's value. +func (s *CreateSubnetInput) SetCidrBlock(v string) *CreateSubnetInput { + s.CidrBlock = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateSubnetInput) SetDryRun(v bool) *CreateSubnetInput { + s.DryRun = &v + return s +} + +// SetIpv6CidrBlock sets the Ipv6CidrBlock field's value. +func (s *CreateSubnetInput) SetIpv6CidrBlock(v string) *CreateSubnetInput { + s.Ipv6CidrBlock = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *CreateSubnetInput) SetVpcId(v string) *CreateSubnetInput { + s.VpcId = &v + return s +} + +type CreateSubnetOutput struct { + _ struct{} `type:"structure"` + + // Information about the subnet. + Subnet *Subnet `locationName:"subnet" type:"structure"` +} + +// String returns the string representation +func (s CreateSubnetOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateSubnetOutput) GoString() string { + return s.String() +} + +// SetSubnet sets the Subnet field's value. +func (s *CreateSubnetOutput) SetSubnet(v *Subnet) *CreateSubnetOutput { + s.Subnet = v + return s +} + +type CreateTagsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The IDs of the resources, separated by spaces. + // + // Constraints: Up to 1000 resource IDs. We recommend breaking up this request + // into smaller batches. + // + // Resources is a required field + Resources []*string `locationName:"ResourceId" type:"list" required:"true"` + + // The tags. The value parameter is required, but if you don't want the tag + // to have a value, specify the parameter with no value, and we set the value + // to an empty string. + // + // Tags is a required field + Tags []*Tag `locationName:"Tag" locationNameList:"item" type:"list" required:"true"` +} + +// String returns the string representation +func (s CreateTagsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateTagsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateTagsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateTagsInput"} + if s.Resources == nil { + invalidParams.Add(request.NewErrParamRequired("Resources")) + } + if s.Tags == nil { + invalidParams.Add(request.NewErrParamRequired("Tags")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateTagsInput) SetDryRun(v bool) *CreateTagsInput { + s.DryRun = &v + return s +} + +// SetResources sets the Resources field's value. +func (s *CreateTagsInput) SetResources(v []*string) *CreateTagsInput { + s.Resources = v + return s +} + +// SetTags sets the Tags field's value. +func (s *CreateTagsInput) SetTags(v []*Tag) *CreateTagsInput { + s.Tags = v + return s +} + +type CreateTagsOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s CreateTagsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateTagsOutput) GoString() string { + return s.String() +} + +type CreateTrafficMirrorFilterInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `type:"string" idempotencyToken:"true"` + + // The description of the Traffic Mirror filter. + Description *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The tags to assign to a Traffic Mirror filter. + TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s CreateTrafficMirrorFilterInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateTrafficMirrorFilterInput) GoString() string { + return s.String() +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateTrafficMirrorFilterInput) SetClientToken(v string) *CreateTrafficMirrorFilterInput { + s.ClientToken = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *CreateTrafficMirrorFilterInput) SetDescription(v string) *CreateTrafficMirrorFilterInput { + s.Description = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateTrafficMirrorFilterInput) SetDryRun(v bool) *CreateTrafficMirrorFilterInput { + s.DryRun = &v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *CreateTrafficMirrorFilterInput) SetTagSpecifications(v []*TagSpecification) *CreateTrafficMirrorFilterInput { + s.TagSpecifications = v + return s +} + +type CreateTrafficMirrorFilterOutput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `locationName:"clientToken" type:"string"` + + // Information about the Traffic Mirror filter. + TrafficMirrorFilter *TrafficMirrorFilter `locationName:"trafficMirrorFilter" type:"structure"` +} + +// String returns the string representation +func (s CreateTrafficMirrorFilterOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateTrafficMirrorFilterOutput) GoString() string { + return s.String() +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateTrafficMirrorFilterOutput) SetClientToken(v string) *CreateTrafficMirrorFilterOutput { + s.ClientToken = &v + return s +} + +// SetTrafficMirrorFilter sets the TrafficMirrorFilter field's value. +func (s *CreateTrafficMirrorFilterOutput) SetTrafficMirrorFilter(v *TrafficMirrorFilter) *CreateTrafficMirrorFilterOutput { + s.TrafficMirrorFilter = v + return s +} + +type CreateTrafficMirrorFilterRuleInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `type:"string" idempotencyToken:"true"` + + // The description of the Traffic Mirror rule. + Description *string `type:"string"` + + // The destination CIDR block to assign to the Traffic Mirror rule. + // + // DestinationCidrBlock is a required field + DestinationCidrBlock *string `type:"string" required:"true"` + + // The destination port range. + DestinationPortRange *TrafficMirrorPortRangeRequest `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The protocol, for example UDP, to assign to the Traffic Mirror rule. + // + // For information about the protocol value, see Protocol Numbers (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml) + // on the Internet Assigned Numbers Authority (IANA) website. + Protocol *int64 `type:"integer"` + + // The action to take (accept | reject) on the filtered traffic. + // + // RuleAction is a required field + RuleAction *string `type:"string" required:"true" enum:"TrafficMirrorRuleAction"` + + // The number of the Traffic Mirror rule. This number must be unique for each + // Traffic Mirror rule in a given direction. The rules are processed in ascending + // order by rule number. + // + // RuleNumber is a required field + RuleNumber *int64 `type:"integer" required:"true"` + + // The source CIDR block to assign to the Traffic Mirror rule. + // + // SourceCidrBlock is a required field + SourceCidrBlock *string `type:"string" required:"true"` + + // The source port range. + SourcePortRange *TrafficMirrorPortRangeRequest `type:"structure"` + + // The type of traffic (ingress | egress). + // + // TrafficDirection is a required field + TrafficDirection *string `type:"string" required:"true" enum:"TrafficDirection"` + + // The ID of the filter that this rule is associated with. + // + // TrafficMirrorFilterId is a required field + TrafficMirrorFilterId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s CreateTrafficMirrorFilterRuleInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateTrafficMirrorFilterRuleInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateTrafficMirrorFilterRuleInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateTrafficMirrorFilterRuleInput"} + if s.DestinationCidrBlock == nil { + invalidParams.Add(request.NewErrParamRequired("DestinationCidrBlock")) + } + if s.RuleAction == nil { + invalidParams.Add(request.NewErrParamRequired("RuleAction")) + } + if s.RuleNumber == nil { + invalidParams.Add(request.NewErrParamRequired("RuleNumber")) + } + if s.SourceCidrBlock == nil { + invalidParams.Add(request.NewErrParamRequired("SourceCidrBlock")) + } + if s.TrafficDirection == nil { + invalidParams.Add(request.NewErrParamRequired("TrafficDirection")) + } + if s.TrafficMirrorFilterId == nil { + invalidParams.Add(request.NewErrParamRequired("TrafficMirrorFilterId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateTrafficMirrorFilterRuleInput) SetClientToken(v string) *CreateTrafficMirrorFilterRuleInput { + s.ClientToken = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *CreateTrafficMirrorFilterRuleInput) SetDescription(v string) *CreateTrafficMirrorFilterRuleInput { + s.Description = &v + return s +} + +// SetDestinationCidrBlock sets the DestinationCidrBlock field's value. +func (s *CreateTrafficMirrorFilterRuleInput) SetDestinationCidrBlock(v string) *CreateTrafficMirrorFilterRuleInput { + s.DestinationCidrBlock = &v + return s +} + +// SetDestinationPortRange sets the DestinationPortRange field's value. +func (s *CreateTrafficMirrorFilterRuleInput) SetDestinationPortRange(v *TrafficMirrorPortRangeRequest) *CreateTrafficMirrorFilterRuleInput { + s.DestinationPortRange = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateTrafficMirrorFilterRuleInput) SetDryRun(v bool) *CreateTrafficMirrorFilterRuleInput { + s.DryRun = &v + return s +} + +// SetProtocol sets the Protocol field's value. +func (s *CreateTrafficMirrorFilterRuleInput) SetProtocol(v int64) *CreateTrafficMirrorFilterRuleInput { + s.Protocol = &v + return s +} + +// SetRuleAction sets the RuleAction field's value. +func (s *CreateTrafficMirrorFilterRuleInput) SetRuleAction(v string) *CreateTrafficMirrorFilterRuleInput { + s.RuleAction = &v + return s +} + +// SetRuleNumber sets the RuleNumber field's value. +func (s *CreateTrafficMirrorFilterRuleInput) SetRuleNumber(v int64) *CreateTrafficMirrorFilterRuleInput { + s.RuleNumber = &v + return s +} + +// SetSourceCidrBlock sets the SourceCidrBlock field's value. +func (s *CreateTrafficMirrorFilterRuleInput) SetSourceCidrBlock(v string) *CreateTrafficMirrorFilterRuleInput { + s.SourceCidrBlock = &v + return s +} + +// SetSourcePortRange sets the SourcePortRange field's value. +func (s *CreateTrafficMirrorFilterRuleInput) SetSourcePortRange(v *TrafficMirrorPortRangeRequest) *CreateTrafficMirrorFilterRuleInput { + s.SourcePortRange = v + return s +} + +// SetTrafficDirection sets the TrafficDirection field's value. +func (s *CreateTrafficMirrorFilterRuleInput) SetTrafficDirection(v string) *CreateTrafficMirrorFilterRuleInput { + s.TrafficDirection = &v + return s +} + +// SetTrafficMirrorFilterId sets the TrafficMirrorFilterId field's value. +func (s *CreateTrafficMirrorFilterRuleInput) SetTrafficMirrorFilterId(v string) *CreateTrafficMirrorFilterRuleInput { + s.TrafficMirrorFilterId = &v + return s +} + +type CreateTrafficMirrorFilterRuleOutput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `locationName:"clientToken" type:"string"` + + // The Traffic Mirror rule. + TrafficMirrorFilterRule *TrafficMirrorFilterRule `locationName:"trafficMirrorFilterRule" type:"structure"` +} + +// String returns the string representation +func (s CreateTrafficMirrorFilterRuleOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateTrafficMirrorFilterRuleOutput) GoString() string { + return s.String() +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateTrafficMirrorFilterRuleOutput) SetClientToken(v string) *CreateTrafficMirrorFilterRuleOutput { + s.ClientToken = &v + return s +} + +// SetTrafficMirrorFilterRule sets the TrafficMirrorFilterRule field's value. +func (s *CreateTrafficMirrorFilterRuleOutput) SetTrafficMirrorFilterRule(v *TrafficMirrorFilterRule) *CreateTrafficMirrorFilterRuleOutput { + s.TrafficMirrorFilterRule = v + return s +} + +type CreateTrafficMirrorSessionInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `type:"string" idempotencyToken:"true"` + + // The description of the Traffic Mirror session. + Description *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the source network interface. + // + // NetworkInterfaceId is a required field + NetworkInterfaceId *string `type:"string" required:"true"` + + // The number of bytes in each packet to mirror. These are bytes after the VXLAN + // header. Do not specify this parameter when you want to mirror the entire + // packet. To mirror a subset of the packet, set this to the length (in bytes) + // that you want to mirror. For example, if you set this value to 100, then + // the first 100 bytes that meet the filter criteria are copied to the target. + // + // If you do not want to mirror the entire packet, use the PacketLength parameter + // to specify the number of bytes in each packet to mirror. + PacketLength *int64 `type:"integer"` + + // The session number determines the order in which sessions are evaluated when + // an interface is used by multiple sessions. The first session with a matching + // filter is the one that mirrors the packets. + // + // Valid values are 1-32766. + // + // SessionNumber is a required field + SessionNumber *int64 `type:"integer" required:"true"` + + // The tags to assign to a Traffic Mirror session. + TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` + + // The ID of the Traffic Mirror filter. + // + // TrafficMirrorFilterId is a required field + TrafficMirrorFilterId *string `type:"string" required:"true"` + + // The ID of the Traffic Mirror target. + // + // TrafficMirrorTargetId is a required field + TrafficMirrorTargetId *string `type:"string" required:"true"` + + // The VXLAN ID for the Traffic Mirror session. For more information about the + // VXLAN protocol, see RFC 7348 (https://tools.ietf.org/html/rfc7348). If you + // do not specify a VirtualNetworkId, an account-wide unique id is chosen at + // random. + VirtualNetworkId *int64 `type:"integer"` +} + +// String returns the string representation +func (s CreateTrafficMirrorSessionInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateTrafficMirrorSessionInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateTrafficMirrorSessionInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateTrafficMirrorSessionInput"} + if s.NetworkInterfaceId == nil { + invalidParams.Add(request.NewErrParamRequired("NetworkInterfaceId")) + } + if s.SessionNumber == nil { + invalidParams.Add(request.NewErrParamRequired("SessionNumber")) + } + if s.TrafficMirrorFilterId == nil { + invalidParams.Add(request.NewErrParamRequired("TrafficMirrorFilterId")) + } + if s.TrafficMirrorTargetId == nil { + invalidParams.Add(request.NewErrParamRequired("TrafficMirrorTargetId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateTrafficMirrorSessionInput) SetClientToken(v string) *CreateTrafficMirrorSessionInput { + s.ClientToken = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *CreateTrafficMirrorSessionInput) SetDescription(v string) *CreateTrafficMirrorSessionInput { + s.Description = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateTrafficMirrorSessionInput) SetDryRun(v bool) *CreateTrafficMirrorSessionInput { + s.DryRun = &v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *CreateTrafficMirrorSessionInput) SetNetworkInterfaceId(v string) *CreateTrafficMirrorSessionInput { + s.NetworkInterfaceId = &v + return s +} + +// SetPacketLength sets the PacketLength field's value. +func (s *CreateTrafficMirrorSessionInput) SetPacketLength(v int64) *CreateTrafficMirrorSessionInput { + s.PacketLength = &v + return s +} + +// SetSessionNumber sets the SessionNumber field's value. +func (s *CreateTrafficMirrorSessionInput) SetSessionNumber(v int64) *CreateTrafficMirrorSessionInput { + s.SessionNumber = &v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *CreateTrafficMirrorSessionInput) SetTagSpecifications(v []*TagSpecification) *CreateTrafficMirrorSessionInput { + s.TagSpecifications = v + return s +} + +// SetTrafficMirrorFilterId sets the TrafficMirrorFilterId field's value. +func (s *CreateTrafficMirrorSessionInput) SetTrafficMirrorFilterId(v string) *CreateTrafficMirrorSessionInput { + s.TrafficMirrorFilterId = &v + return s +} + +// SetTrafficMirrorTargetId sets the TrafficMirrorTargetId field's value. +func (s *CreateTrafficMirrorSessionInput) SetTrafficMirrorTargetId(v string) *CreateTrafficMirrorSessionInput { + s.TrafficMirrorTargetId = &v + return s +} + +// SetVirtualNetworkId sets the VirtualNetworkId field's value. +func (s *CreateTrafficMirrorSessionInput) SetVirtualNetworkId(v int64) *CreateTrafficMirrorSessionInput { + s.VirtualNetworkId = &v + return s +} + +type CreateTrafficMirrorSessionOutput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `locationName:"clientToken" type:"string"` + + // Information about the Traffic Mirror session. + TrafficMirrorSession *TrafficMirrorSession `locationName:"trafficMirrorSession" type:"structure"` +} + +// String returns the string representation +func (s CreateTrafficMirrorSessionOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateTrafficMirrorSessionOutput) GoString() string { + return s.String() +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateTrafficMirrorSessionOutput) SetClientToken(v string) *CreateTrafficMirrorSessionOutput { + s.ClientToken = &v + return s +} + +// SetTrafficMirrorSession sets the TrafficMirrorSession field's value. +func (s *CreateTrafficMirrorSessionOutput) SetTrafficMirrorSession(v *TrafficMirrorSession) *CreateTrafficMirrorSessionOutput { + s.TrafficMirrorSession = v + return s +} + +type CreateTrafficMirrorTargetInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `type:"string" idempotencyToken:"true"` + + // The description of the Traffic Mirror target. + Description *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The network interface ID that is associated with the target. + NetworkInterfaceId *string `type:"string"` + + // The Amazon Resource Name (ARN) of the Network Load Balancer that is associated + // with the target. + NetworkLoadBalancerArn *string `type:"string"` + + // The tags to assign to the Traffic Mirror target. + TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s CreateTrafficMirrorTargetInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateTrafficMirrorTargetInput) GoString() string { + return s.String() +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateTrafficMirrorTargetInput) SetClientToken(v string) *CreateTrafficMirrorTargetInput { + s.ClientToken = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *CreateTrafficMirrorTargetInput) SetDescription(v string) *CreateTrafficMirrorTargetInput { + s.Description = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateTrafficMirrorTargetInput) SetDryRun(v bool) *CreateTrafficMirrorTargetInput { + s.DryRun = &v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *CreateTrafficMirrorTargetInput) SetNetworkInterfaceId(v string) *CreateTrafficMirrorTargetInput { + s.NetworkInterfaceId = &v + return s +} + +// SetNetworkLoadBalancerArn sets the NetworkLoadBalancerArn field's value. +func (s *CreateTrafficMirrorTargetInput) SetNetworkLoadBalancerArn(v string) *CreateTrafficMirrorTargetInput { + s.NetworkLoadBalancerArn = &v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *CreateTrafficMirrorTargetInput) SetTagSpecifications(v []*TagSpecification) *CreateTrafficMirrorTargetInput { + s.TagSpecifications = v + return s +} + +type CreateTrafficMirrorTargetOutput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `locationName:"clientToken" type:"string"` + + // Information about the Traffic Mirror target. + TrafficMirrorTarget *TrafficMirrorTarget `locationName:"trafficMirrorTarget" type:"structure"` +} + +// String returns the string representation +func (s CreateTrafficMirrorTargetOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateTrafficMirrorTargetOutput) GoString() string { + return s.String() +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateTrafficMirrorTargetOutput) SetClientToken(v string) *CreateTrafficMirrorTargetOutput { + s.ClientToken = &v + return s +} + +// SetTrafficMirrorTarget sets the TrafficMirrorTarget field's value. +func (s *CreateTrafficMirrorTargetOutput) SetTrafficMirrorTarget(v *TrafficMirrorTarget) *CreateTrafficMirrorTargetOutput { + s.TrafficMirrorTarget = v + return s +} + +type CreateTransitGatewayInput struct { + _ struct{} `type:"structure"` + + // A description of the transit gateway. + Description *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The transit gateway options. + Options *TransitGatewayRequestOptions `type:"structure"` + + // The tags to apply to the transit gateway. + TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s CreateTransitGatewayInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateTransitGatewayInput) GoString() string { + return s.String() +} + +// SetDescription sets the Description field's value. +func (s *CreateTransitGatewayInput) SetDescription(v string) *CreateTransitGatewayInput { + s.Description = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateTransitGatewayInput) SetDryRun(v bool) *CreateTransitGatewayInput { + s.DryRun = &v + return s +} + +// SetOptions sets the Options field's value. +func (s *CreateTransitGatewayInput) SetOptions(v *TransitGatewayRequestOptions) *CreateTransitGatewayInput { + s.Options = v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *CreateTransitGatewayInput) SetTagSpecifications(v []*TagSpecification) *CreateTransitGatewayInput { + s.TagSpecifications = v + return s +} + +type CreateTransitGatewayOutput struct { + _ struct{} `type:"structure"` + + // Information about the transit gateway. + TransitGateway *TransitGateway `locationName:"transitGateway" type:"structure"` +} + +// String returns the string representation +func (s CreateTransitGatewayOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateTransitGatewayOutput) GoString() string { + return s.String() +} + +// SetTransitGateway sets the TransitGateway field's value. +func (s *CreateTransitGatewayOutput) SetTransitGateway(v *TransitGateway) *CreateTransitGatewayOutput { + s.TransitGateway = v + return s +} + +type CreateTransitGatewayRouteInput struct { + _ struct{} `type:"structure"` + + // Indicates whether to drop traffic that matches this route. + Blackhole *bool `type:"boolean"` + + // The CIDR range used for destination matches. Routing decisions are based + // on the most specific match. + // + // DestinationCidrBlock is a required field + DestinationCidrBlock *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the attachment. + TransitGatewayAttachmentId *string `type:"string"` + + // The ID of the transit gateway route table. + // + // TransitGatewayRouteTableId is a required field + TransitGatewayRouteTableId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s CreateTransitGatewayRouteInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateTransitGatewayRouteInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateTransitGatewayRouteInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateTransitGatewayRouteInput"} + if s.DestinationCidrBlock == nil { + invalidParams.Add(request.NewErrParamRequired("DestinationCidrBlock")) + } + if s.TransitGatewayRouteTableId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayRouteTableId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBlackhole sets the Blackhole field's value. +func (s *CreateTransitGatewayRouteInput) SetBlackhole(v bool) *CreateTransitGatewayRouteInput { + s.Blackhole = &v + return s +} + +// SetDestinationCidrBlock sets the DestinationCidrBlock field's value. +func (s *CreateTransitGatewayRouteInput) SetDestinationCidrBlock(v string) *CreateTransitGatewayRouteInput { + s.DestinationCidrBlock = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateTransitGatewayRouteInput) SetDryRun(v bool) *CreateTransitGatewayRouteInput { + s.DryRun = &v + return s +} + +// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value. +func (s *CreateTransitGatewayRouteInput) SetTransitGatewayAttachmentId(v string) *CreateTransitGatewayRouteInput { + s.TransitGatewayAttachmentId = &v + return s +} + +// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value. +func (s *CreateTransitGatewayRouteInput) SetTransitGatewayRouteTableId(v string) *CreateTransitGatewayRouteInput { + s.TransitGatewayRouteTableId = &v + return s +} + +type CreateTransitGatewayRouteOutput struct { + _ struct{} `type:"structure"` + + // Information about the route. + Route *TransitGatewayRoute `locationName:"route" type:"structure"` +} + +// String returns the string representation +func (s CreateTransitGatewayRouteOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateTransitGatewayRouteOutput) GoString() string { + return s.String() +} + +// SetRoute sets the Route field's value. +func (s *CreateTransitGatewayRouteOutput) SetRoute(v *TransitGatewayRoute) *CreateTransitGatewayRouteOutput { + s.Route = v + return s +} + +type CreateTransitGatewayRouteTableInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The tags to apply to the transit gateway route table. + TagSpecifications []*TagSpecification `locationNameList:"item" type:"list"` + + // The ID of the transit gateway. + // + // TransitGatewayId is a required field + TransitGatewayId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s CreateTransitGatewayRouteTableInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateTransitGatewayRouteTableInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateTransitGatewayRouteTableInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateTransitGatewayRouteTableInput"} + if s.TransitGatewayId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateTransitGatewayRouteTableInput) SetDryRun(v bool) *CreateTransitGatewayRouteTableInput { + s.DryRun = &v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *CreateTransitGatewayRouteTableInput) SetTagSpecifications(v []*TagSpecification) *CreateTransitGatewayRouteTableInput { + s.TagSpecifications = v + return s +} + +// SetTransitGatewayId sets the TransitGatewayId field's value. +func (s *CreateTransitGatewayRouteTableInput) SetTransitGatewayId(v string) *CreateTransitGatewayRouteTableInput { + s.TransitGatewayId = &v + return s +} + +type CreateTransitGatewayRouteTableOutput struct { + _ struct{} `type:"structure"` + + // Information about the transit gateway route table. + TransitGatewayRouteTable *TransitGatewayRouteTable `locationName:"transitGatewayRouteTable" type:"structure"` +} + +// String returns the string representation +func (s CreateTransitGatewayRouteTableOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateTransitGatewayRouteTableOutput) GoString() string { + return s.String() +} + +// SetTransitGatewayRouteTable sets the TransitGatewayRouteTable field's value. +func (s *CreateTransitGatewayRouteTableOutput) SetTransitGatewayRouteTable(v *TransitGatewayRouteTable) *CreateTransitGatewayRouteTableOutput { + s.TransitGatewayRouteTable = v + return s +} + +type CreateTransitGatewayVpcAttachmentInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The VPC attachment options. + Options *CreateTransitGatewayVpcAttachmentRequestOptions `type:"structure"` + + // The IDs of one or more subnets. You can specify only one subnet per Availability + // Zone. You must specify at least one subnet, but we recommend that you specify + // two subnets for better availability. The transit gateway uses one IP address + // from each specified subnet. + // + // SubnetIds is a required field + SubnetIds []*string `locationNameList:"item" type:"list" required:"true"` + + // The tags to apply to the VPC attachment. + TagSpecifications []*TagSpecification `locationNameList:"item" type:"list"` + + // The ID of the transit gateway. + // + // TransitGatewayId is a required field + TransitGatewayId *string `type:"string" required:"true"` + + // The ID of the VPC. + // + // VpcId is a required field + VpcId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s CreateTransitGatewayVpcAttachmentInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateTransitGatewayVpcAttachmentInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateTransitGatewayVpcAttachmentInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateTransitGatewayVpcAttachmentInput"} + if s.SubnetIds == nil { + invalidParams.Add(request.NewErrParamRequired("SubnetIds")) + } + if s.TransitGatewayId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayId")) + } + if s.VpcId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateTransitGatewayVpcAttachmentInput) SetDryRun(v bool) *CreateTransitGatewayVpcAttachmentInput { + s.DryRun = &v + return s +} + +// SetOptions sets the Options field's value. +func (s *CreateTransitGatewayVpcAttachmentInput) SetOptions(v *CreateTransitGatewayVpcAttachmentRequestOptions) *CreateTransitGatewayVpcAttachmentInput { + s.Options = v + return s +} + +// SetSubnetIds sets the SubnetIds field's value. +func (s *CreateTransitGatewayVpcAttachmentInput) SetSubnetIds(v []*string) *CreateTransitGatewayVpcAttachmentInput { + s.SubnetIds = v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *CreateTransitGatewayVpcAttachmentInput) SetTagSpecifications(v []*TagSpecification) *CreateTransitGatewayVpcAttachmentInput { + s.TagSpecifications = v + return s +} + +// SetTransitGatewayId sets the TransitGatewayId field's value. +func (s *CreateTransitGatewayVpcAttachmentInput) SetTransitGatewayId(v string) *CreateTransitGatewayVpcAttachmentInput { + s.TransitGatewayId = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *CreateTransitGatewayVpcAttachmentInput) SetVpcId(v string) *CreateTransitGatewayVpcAttachmentInput { + s.VpcId = &v + return s +} + +type CreateTransitGatewayVpcAttachmentOutput struct { + _ struct{} `type:"structure"` + + // Information about the VPC attachment. + TransitGatewayVpcAttachment *TransitGatewayVpcAttachment `locationName:"transitGatewayVpcAttachment" type:"structure"` +} + +// String returns the string representation +func (s CreateTransitGatewayVpcAttachmentOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateTransitGatewayVpcAttachmentOutput) GoString() string { + return s.String() +} + +// SetTransitGatewayVpcAttachment sets the TransitGatewayVpcAttachment field's value. +func (s *CreateTransitGatewayVpcAttachmentOutput) SetTransitGatewayVpcAttachment(v *TransitGatewayVpcAttachment) *CreateTransitGatewayVpcAttachmentOutput { + s.TransitGatewayVpcAttachment = v + return s +} + +// Describes the options for a VPC attachment. +type CreateTransitGatewayVpcAttachmentRequestOptions struct { + _ struct{} `type:"structure"` + + // Enable or disable DNS support. The default is enable. + DnsSupport *string `type:"string" enum:"DnsSupportValue"` + + // Enable or disable IPv6 support. The default is enable. + Ipv6Support *string `type:"string" enum:"Ipv6SupportValue"` +} + +// String returns the string representation +func (s CreateTransitGatewayVpcAttachmentRequestOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateTransitGatewayVpcAttachmentRequestOptions) GoString() string { + return s.String() +} + +// SetDnsSupport sets the DnsSupport field's value. +func (s *CreateTransitGatewayVpcAttachmentRequestOptions) SetDnsSupport(v string) *CreateTransitGatewayVpcAttachmentRequestOptions { + s.DnsSupport = &v + return s +} + +// SetIpv6Support sets the Ipv6Support field's value. +func (s *CreateTransitGatewayVpcAttachmentRequestOptions) SetIpv6Support(v string) *CreateTransitGatewayVpcAttachmentRequestOptions { + s.Ipv6Support = &v + return s +} + +// Contains the parameters for CreateVolume. +type CreateVolumeInput struct { + _ struct{} `type:"structure"` + + // The Availability Zone in which to create the volume. + // + // AvailabilityZone is a required field + AvailabilityZone *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // Specifies whether the volume should be encrypted. The effect of setting the + // encryption state to true depends on the volume origin (new or from a snapshot), + // starting encryption state, ownership, and whether encryption by default is + // enabled. For more information, see Encryption by Default (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#encryption-by-default) + // in the Amazon Elastic Compute Cloud User Guide. + // + // Encrypted Amazon EBS volumes must be attached to instances that support Amazon + // EBS encryption. For more information, see Supported Instance Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#EBSEncryption_supported_instances). + Encrypted *bool `locationName:"encrypted" type:"boolean"` + + // The number of I/O operations per second (IOPS) to provision for the volume, + // with a maximum ratio of 50 IOPS/GiB. Range is 100 to 64,000 IOPS for volumes + // in most Regions. Maximum IOPS of 64,000 is guaranteed only on Nitro-based + // instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances). + // Other instance families guarantee performance up to 32,000 IOPS. For more + // information, see Amazon EBS Volume Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) + // in the Amazon Elastic Compute Cloud User Guide. + // + // This parameter is valid only for Provisioned IOPS SSD (io1) volumes. + Iops *int64 `type:"integer"` + + // The identifier of the AWS Key Management Service (AWS KMS) customer master + // key (CMK) to use for Amazon EBS encryption. If this parameter is not specified, + // your AWS managed CMK for EBS is used. If KmsKeyId is specified, the encrypted + // state must be true. + // + // You can specify the CMK using any of the following: + // + // * Key ID. For example, key/1234abcd-12ab-34cd-56ef-1234567890ab. + // + // * Key alias. For example, alias/ExampleAlias. + // + // * Key ARN. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. + // + // * Alias ARN. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias. + // + // AWS authenticates the CMK asynchronously. Therefore, if you specify an ID, + // alias, or ARN that is not valid, the action can appear to complete, but eventually + // fails. + KmsKeyId *string `type:"string"` + + // The size of the volume, in GiBs. + // + // Constraints: 1-16,384 for gp2, 4-16,384 for io1, 500-16,384 for st1, 500-16,384 + // for sc1, and 1-1,024 for standard. If you specify a snapshot, the volume + // size must be equal to or larger than the snapshot size. + // + // Default: If you're creating the volume from a snapshot and don't specify + // a volume size, the default is the snapshot size. + // + // At least one of Size or SnapshotId is required. + Size *int64 `type:"integer"` + + // The snapshot from which to create the volume. + // + // At least one of Size or SnapshotId are required. + SnapshotId *string `type:"string"` + + // The tags to apply to the volume during creation. + TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` + + // The volume type. This can be gp2 for General Purpose SSD, io1 for Provisioned + // IOPS SSD, st1 for Throughput Optimized HDD, sc1 for Cold HDD, or standard + // for Magnetic volumes. + // + // Default: gp2 + VolumeType *string `type:"string" enum:"VolumeType"` +} + +// String returns the string representation +func (s CreateVolumeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateVolumeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateVolumeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateVolumeInput"} + if s.AvailabilityZone == nil { + invalidParams.Add(request.NewErrParamRequired("AvailabilityZone")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *CreateVolumeInput) SetAvailabilityZone(v string) *CreateVolumeInput { + s.AvailabilityZone = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateVolumeInput) SetDryRun(v bool) *CreateVolumeInput { + s.DryRun = &v + return s +} + +// SetEncrypted sets the Encrypted field's value. +func (s *CreateVolumeInput) SetEncrypted(v bool) *CreateVolumeInput { + s.Encrypted = &v + return s +} + +// SetIops sets the Iops field's value. +func (s *CreateVolumeInput) SetIops(v int64) *CreateVolumeInput { + s.Iops = &v + return s +} + +// SetKmsKeyId sets the KmsKeyId field's value. +func (s *CreateVolumeInput) SetKmsKeyId(v string) *CreateVolumeInput { + s.KmsKeyId = &v + return s +} + +// SetSize sets the Size field's value. +func (s *CreateVolumeInput) SetSize(v int64) *CreateVolumeInput { + s.Size = &v + return s +} + +// SetSnapshotId sets the SnapshotId field's value. +func (s *CreateVolumeInput) SetSnapshotId(v string) *CreateVolumeInput { + s.SnapshotId = &v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *CreateVolumeInput) SetTagSpecifications(v []*TagSpecification) *CreateVolumeInput { + s.TagSpecifications = v + return s +} + +// SetVolumeType sets the VolumeType field's value. +func (s *CreateVolumeInput) SetVolumeType(v string) *CreateVolumeInput { + s.VolumeType = &v + return s +} + +// Describes the user or group to be added or removed from the list of create +// volume permissions for a volume. +type CreateVolumePermission struct { + _ struct{} `type:"structure"` + + // The group to be added or removed. The possible value is all. + Group *string `locationName:"group" type:"string" enum:"PermissionGroup"` + + // The AWS account ID to be added or removed. + UserId *string `locationName:"userId" type:"string"` +} + +// String returns the string representation +func (s CreateVolumePermission) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateVolumePermission) GoString() string { + return s.String() +} + +// SetGroup sets the Group field's value. +func (s *CreateVolumePermission) SetGroup(v string) *CreateVolumePermission { + s.Group = &v + return s +} + +// SetUserId sets the UserId field's value. +func (s *CreateVolumePermission) SetUserId(v string) *CreateVolumePermission { + s.UserId = &v + return s +} + +// Describes modifications to the list of create volume permissions for a volume. +type CreateVolumePermissionModifications struct { + _ struct{} `type:"structure"` + + // Adds the specified AWS account ID or group to the list. + Add []*CreateVolumePermission `locationNameList:"item" type:"list"` + + // Removes the specified AWS account ID or group from the list. + Remove []*CreateVolumePermission `locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s CreateVolumePermissionModifications) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateVolumePermissionModifications) GoString() string { + return s.String() +} + +// SetAdd sets the Add field's value. +func (s *CreateVolumePermissionModifications) SetAdd(v []*CreateVolumePermission) *CreateVolumePermissionModifications { + s.Add = v + return s +} + +// SetRemove sets the Remove field's value. +func (s *CreateVolumePermissionModifications) SetRemove(v []*CreateVolumePermission) *CreateVolumePermissionModifications { + s.Remove = v + return s +} + +type CreateVpcEndpointConnectionNotificationInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier you provide to ensure the idempotency of + // the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `type:"string"` + + // One or more endpoint events for which to receive notifications. Valid values + // are Accept, Connect, Delete, and Reject. + // + // ConnectionEvents is a required field + ConnectionEvents []*string `locationNameList:"item" type:"list" required:"true"` + + // The ARN of the SNS topic for the notifications. + // + // ConnectionNotificationArn is a required field + ConnectionNotificationArn *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the endpoint service. + ServiceId *string `type:"string"` + + // The ID of the endpoint. + VpcEndpointId *string `type:"string"` +} + +// String returns the string representation +func (s CreateVpcEndpointConnectionNotificationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateVpcEndpointConnectionNotificationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateVpcEndpointConnectionNotificationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateVpcEndpointConnectionNotificationInput"} + if s.ConnectionEvents == nil { + invalidParams.Add(request.NewErrParamRequired("ConnectionEvents")) + } + if s.ConnectionNotificationArn == nil { + invalidParams.Add(request.NewErrParamRequired("ConnectionNotificationArn")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateVpcEndpointConnectionNotificationInput) SetClientToken(v string) *CreateVpcEndpointConnectionNotificationInput { + s.ClientToken = &v + return s +} + +// SetConnectionEvents sets the ConnectionEvents field's value. +func (s *CreateVpcEndpointConnectionNotificationInput) SetConnectionEvents(v []*string) *CreateVpcEndpointConnectionNotificationInput { + s.ConnectionEvents = v + return s +} + +// SetConnectionNotificationArn sets the ConnectionNotificationArn field's value. +func (s *CreateVpcEndpointConnectionNotificationInput) SetConnectionNotificationArn(v string) *CreateVpcEndpointConnectionNotificationInput { + s.ConnectionNotificationArn = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateVpcEndpointConnectionNotificationInput) SetDryRun(v bool) *CreateVpcEndpointConnectionNotificationInput { + s.DryRun = &v + return s +} + +// SetServiceId sets the ServiceId field's value. +func (s *CreateVpcEndpointConnectionNotificationInput) SetServiceId(v string) *CreateVpcEndpointConnectionNotificationInput { + s.ServiceId = &v + return s +} + +// SetVpcEndpointId sets the VpcEndpointId field's value. +func (s *CreateVpcEndpointConnectionNotificationInput) SetVpcEndpointId(v string) *CreateVpcEndpointConnectionNotificationInput { + s.VpcEndpointId = &v + return s +} + +type CreateVpcEndpointConnectionNotificationOutput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier you provide to ensure the idempotency of + // the request. + ClientToken *string `locationName:"clientToken" type:"string"` + + // Information about the notification. + ConnectionNotification *ConnectionNotification `locationName:"connectionNotification" type:"structure"` +} + +// String returns the string representation +func (s CreateVpcEndpointConnectionNotificationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateVpcEndpointConnectionNotificationOutput) GoString() string { + return s.String() +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateVpcEndpointConnectionNotificationOutput) SetClientToken(v string) *CreateVpcEndpointConnectionNotificationOutput { + s.ClientToken = &v + return s +} + +// SetConnectionNotification sets the ConnectionNotification field's value. +func (s *CreateVpcEndpointConnectionNotificationOutput) SetConnectionNotification(v *ConnectionNotification) *CreateVpcEndpointConnectionNotificationOutput { + s.ConnectionNotification = v + return s +} + +// Contains the parameters for CreateVpcEndpoint. +type CreateVpcEndpointInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier you provide to ensure the idempotency of + // the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // A policy to attach to the endpoint that controls access to the service. The + // policy must be in valid JSON format. If this parameter is not specified, + // we attach a default policy that allows full access to the service. + PolicyDocument *string `type:"string"` + + // (Interface endpoint) Indicate whether to associate a private hosted zone + // with the specified VPC. The private hosted zone contains a record set for + // the default public DNS name for the service for the Region (for example, + // kinesis.us-east-1.amazonaws.com) which resolves to the private IP addresses + // of the endpoint network interfaces in the VPC. This enables you to make requests + // to the default public DNS name for the service instead of the public DNS + // names that are automatically generated by the VPC endpoint service. + // + // To use a private hosted zone, you must set the following VPC attributes to + // true: enableDnsHostnames and enableDnsSupport. Use ModifyVpcAttribute to + // set the VPC attributes. + // + // Default: true + PrivateDnsEnabled *bool `type:"boolean"` + + // (Gateway endpoint) One or more route table IDs. + RouteTableIds []*string `locationName:"RouteTableId" locationNameList:"item" type:"list"` + + // (Interface endpoint) The ID of one or more security groups to associate with + // the endpoint network interface. + SecurityGroupIds []*string `locationName:"SecurityGroupId" locationNameList:"item" type:"list"` + + // The service name. To get a list of available services, use the DescribeVpcEndpointServices + // request, or get the name from the service provider. + // + // ServiceName is a required field + ServiceName *string `type:"string" required:"true"` + + // (Interface endpoint) The ID of one or more subnets in which to create an + // endpoint network interface. + SubnetIds []*string `locationName:"SubnetId" locationNameList:"item" type:"list"` + + // The type of endpoint. + // + // Default: Gateway + VpcEndpointType *string `type:"string" enum:"VpcEndpointType"` + + // The ID of the VPC in which the endpoint will be used. + // + // VpcId is a required field + VpcId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s CreateVpcEndpointInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateVpcEndpointInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateVpcEndpointInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateVpcEndpointInput"} + if s.ServiceName == nil { + invalidParams.Add(request.NewErrParamRequired("ServiceName")) + } + if s.VpcId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateVpcEndpointInput) SetClientToken(v string) *CreateVpcEndpointInput { + s.ClientToken = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateVpcEndpointInput) SetDryRun(v bool) *CreateVpcEndpointInput { + s.DryRun = &v + return s +} + +// SetPolicyDocument sets the PolicyDocument field's value. +func (s *CreateVpcEndpointInput) SetPolicyDocument(v string) *CreateVpcEndpointInput { + s.PolicyDocument = &v + return s +} + +// SetPrivateDnsEnabled sets the PrivateDnsEnabled field's value. +func (s *CreateVpcEndpointInput) SetPrivateDnsEnabled(v bool) *CreateVpcEndpointInput { + s.PrivateDnsEnabled = &v + return s +} + +// SetRouteTableIds sets the RouteTableIds field's value. +func (s *CreateVpcEndpointInput) SetRouteTableIds(v []*string) *CreateVpcEndpointInput { + s.RouteTableIds = v + return s +} + +// SetSecurityGroupIds sets the SecurityGroupIds field's value. +func (s *CreateVpcEndpointInput) SetSecurityGroupIds(v []*string) *CreateVpcEndpointInput { + s.SecurityGroupIds = v + return s +} + +// SetServiceName sets the ServiceName field's value. +func (s *CreateVpcEndpointInput) SetServiceName(v string) *CreateVpcEndpointInput { + s.ServiceName = &v + return s +} + +// SetSubnetIds sets the SubnetIds field's value. +func (s *CreateVpcEndpointInput) SetSubnetIds(v []*string) *CreateVpcEndpointInput { + s.SubnetIds = v + return s +} + +// SetVpcEndpointType sets the VpcEndpointType field's value. +func (s *CreateVpcEndpointInput) SetVpcEndpointType(v string) *CreateVpcEndpointInput { + s.VpcEndpointType = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *CreateVpcEndpointInput) SetVpcId(v string) *CreateVpcEndpointInput { + s.VpcId = &v + return s +} + +// Contains the output of CreateVpcEndpoint. +type CreateVpcEndpointOutput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier you provide to ensure the idempotency of + // the request. + ClientToken *string `locationName:"clientToken" type:"string"` + + // Information about the endpoint. + VpcEndpoint *VpcEndpoint `locationName:"vpcEndpoint" type:"structure"` +} + +// String returns the string representation +func (s CreateVpcEndpointOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateVpcEndpointOutput) GoString() string { + return s.String() +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateVpcEndpointOutput) SetClientToken(v string) *CreateVpcEndpointOutput { + s.ClientToken = &v + return s +} + +// SetVpcEndpoint sets the VpcEndpoint field's value. +func (s *CreateVpcEndpointOutput) SetVpcEndpoint(v *VpcEndpoint) *CreateVpcEndpointOutput { + s.VpcEndpoint = v + return s +} + +type CreateVpcEndpointServiceConfigurationInput struct { + _ struct{} `type:"structure"` + + // Indicate whether requests from service consumers to create an endpoint to + // your service must be accepted. To accept a request, use AcceptVpcEndpointConnections. + AcceptanceRequired *bool `type:"boolean"` + + // Unique, case-sensitive identifier you provide to ensure the idempotency of + // the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html). + ClientToken *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The Amazon Resource Names (ARNs) of one or more Network Load Balancers for + // your service. + // + // NetworkLoadBalancerArns is a required field + NetworkLoadBalancerArns []*string `locationName:"NetworkLoadBalancerArn" locationNameList:"item" type:"list" required:"true"` +} + +// String returns the string representation +func (s CreateVpcEndpointServiceConfigurationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateVpcEndpointServiceConfigurationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateVpcEndpointServiceConfigurationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateVpcEndpointServiceConfigurationInput"} + if s.NetworkLoadBalancerArns == nil { + invalidParams.Add(request.NewErrParamRequired("NetworkLoadBalancerArns")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAcceptanceRequired sets the AcceptanceRequired field's value. +func (s *CreateVpcEndpointServiceConfigurationInput) SetAcceptanceRequired(v bool) *CreateVpcEndpointServiceConfigurationInput { + s.AcceptanceRequired = &v + return s +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateVpcEndpointServiceConfigurationInput) SetClientToken(v string) *CreateVpcEndpointServiceConfigurationInput { + s.ClientToken = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateVpcEndpointServiceConfigurationInput) SetDryRun(v bool) *CreateVpcEndpointServiceConfigurationInput { + s.DryRun = &v + return s +} + +// SetNetworkLoadBalancerArns sets the NetworkLoadBalancerArns field's value. +func (s *CreateVpcEndpointServiceConfigurationInput) SetNetworkLoadBalancerArns(v []*string) *CreateVpcEndpointServiceConfigurationInput { + s.NetworkLoadBalancerArns = v + return s +} + +type CreateVpcEndpointServiceConfigurationOutput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier you provide to ensure the idempotency of + // the request. + ClientToken *string `locationName:"clientToken" type:"string"` + + // Information about the service configuration. + ServiceConfiguration *ServiceConfiguration `locationName:"serviceConfiguration" type:"structure"` +} + +// String returns the string representation +func (s CreateVpcEndpointServiceConfigurationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateVpcEndpointServiceConfigurationOutput) GoString() string { + return s.String() +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateVpcEndpointServiceConfigurationOutput) SetClientToken(v string) *CreateVpcEndpointServiceConfigurationOutput { + s.ClientToken = &v + return s +} + +// SetServiceConfiguration sets the ServiceConfiguration field's value. +func (s *CreateVpcEndpointServiceConfigurationOutput) SetServiceConfiguration(v *ServiceConfiguration) *CreateVpcEndpointServiceConfigurationOutput { + s.ServiceConfiguration = v + return s +} + +type CreateVpcInput struct { + _ struct{} `type:"structure"` + + // Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for + // the VPC. You cannot specify the range of IP addresses, or the size of the + // CIDR block. + AmazonProvidedIpv6CidrBlock *bool `locationName:"amazonProvidedIpv6CidrBlock" type:"boolean"` + + // The IPv4 network range for the VPC, in CIDR notation. For example, 10.0.0.0/16. + // + // CidrBlock is a required field + CidrBlock *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The tenancy options for instances launched into the VPC. For default, instances + // are launched with shared tenancy by default. You can launch instances with + // any tenancy into a shared tenancy VPC. For dedicated, instances are launched + // as dedicated tenancy instances by default. You can only launch instances + // with a tenancy of dedicated or host into a dedicated tenancy VPC. + // + // Important: The host value cannot be used with this parameter. Use the default + // or dedicated values only. + // + // Default: default + InstanceTenancy *string `locationName:"instanceTenancy" type:"string" enum:"Tenancy"` +} + +// String returns the string representation +func (s CreateVpcInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateVpcInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateVpcInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateVpcInput"} + if s.CidrBlock == nil { + invalidParams.Add(request.NewErrParamRequired("CidrBlock")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAmazonProvidedIpv6CidrBlock sets the AmazonProvidedIpv6CidrBlock field's value. +func (s *CreateVpcInput) SetAmazonProvidedIpv6CidrBlock(v bool) *CreateVpcInput { + s.AmazonProvidedIpv6CidrBlock = &v + return s +} + +// SetCidrBlock sets the CidrBlock field's value. +func (s *CreateVpcInput) SetCidrBlock(v string) *CreateVpcInput { + s.CidrBlock = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateVpcInput) SetDryRun(v bool) *CreateVpcInput { + s.DryRun = &v + return s +} + +// SetInstanceTenancy sets the InstanceTenancy field's value. +func (s *CreateVpcInput) SetInstanceTenancy(v string) *CreateVpcInput { + s.InstanceTenancy = &v + return s +} + +type CreateVpcOutput struct { + _ struct{} `type:"structure"` + + // Information about the VPC. + Vpc *Vpc `locationName:"vpc" type:"structure"` +} + +// String returns the string representation +func (s CreateVpcOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateVpcOutput) GoString() string { + return s.String() +} + +// SetVpc sets the Vpc field's value. +func (s *CreateVpcOutput) SetVpc(v *Vpc) *CreateVpcOutput { + s.Vpc = v + return s +} + +type CreateVpcPeeringConnectionInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The AWS account ID of the owner of the accepter VPC. + // + // Default: Your AWS account ID + PeerOwnerId *string `locationName:"peerOwnerId" type:"string"` + + // The Region code for the accepter VPC, if the accepter VPC is located in a + // Region other than the Region in which you make the request. + // + // Default: The Region in which you make the request. + PeerRegion *string `type:"string"` + + // The ID of the VPC with which you are creating the VPC peering connection. + // You must specify this parameter in the request. + PeerVpcId *string `locationName:"peerVpcId" type:"string"` + + // The ID of the requester VPC. You must specify this parameter in the request. + VpcId *string `locationName:"vpcId" type:"string"` +} + +// String returns the string representation +func (s CreateVpcPeeringConnectionInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateVpcPeeringConnectionInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateVpcPeeringConnectionInput) SetDryRun(v bool) *CreateVpcPeeringConnectionInput { + s.DryRun = &v + return s +} + +// SetPeerOwnerId sets the PeerOwnerId field's value. +func (s *CreateVpcPeeringConnectionInput) SetPeerOwnerId(v string) *CreateVpcPeeringConnectionInput { + s.PeerOwnerId = &v + return s +} + +// SetPeerRegion sets the PeerRegion field's value. +func (s *CreateVpcPeeringConnectionInput) SetPeerRegion(v string) *CreateVpcPeeringConnectionInput { + s.PeerRegion = &v + return s +} + +// SetPeerVpcId sets the PeerVpcId field's value. +func (s *CreateVpcPeeringConnectionInput) SetPeerVpcId(v string) *CreateVpcPeeringConnectionInput { + s.PeerVpcId = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *CreateVpcPeeringConnectionInput) SetVpcId(v string) *CreateVpcPeeringConnectionInput { + s.VpcId = &v + return s +} + +type CreateVpcPeeringConnectionOutput struct { + _ struct{} `type:"structure"` + + // Information about the VPC peering connection. + VpcPeeringConnection *VpcPeeringConnection `locationName:"vpcPeeringConnection" type:"structure"` +} + +// String returns the string representation +func (s CreateVpcPeeringConnectionOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateVpcPeeringConnectionOutput) GoString() string { + return s.String() +} + +// SetVpcPeeringConnection sets the VpcPeeringConnection field's value. +func (s *CreateVpcPeeringConnectionOutput) SetVpcPeeringConnection(v *VpcPeeringConnection) *CreateVpcPeeringConnectionOutput { + s.VpcPeeringConnection = v + return s +} + +// Contains the parameters for CreateVpnConnection. +type CreateVpnConnectionInput struct { + _ struct{} `type:"structure"` + + // The ID of the customer gateway. + // + // CustomerGatewayId is a required field + CustomerGatewayId *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The options for the VPN connection. + Options *VpnConnectionOptionsSpecification `locationName:"options" type:"structure"` + + // The ID of the transit gateway. If you specify a transit gateway, you cannot + // specify a virtual private gateway. + TransitGatewayId *string `type:"string"` + + // The type of VPN connection (ipsec.1). + // + // Type is a required field + Type *string `type:"string" required:"true"` + + // The ID of the virtual private gateway. If you specify a virtual private gateway, + // you cannot specify a transit gateway. + VpnGatewayId *string `type:"string"` +} + +// String returns the string representation +func (s CreateVpnConnectionInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateVpnConnectionInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateVpnConnectionInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateVpnConnectionInput"} + if s.CustomerGatewayId == nil { + invalidParams.Add(request.NewErrParamRequired("CustomerGatewayId")) + } + if s.Type == nil { + invalidParams.Add(request.NewErrParamRequired("Type")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCustomerGatewayId sets the CustomerGatewayId field's value. +func (s *CreateVpnConnectionInput) SetCustomerGatewayId(v string) *CreateVpnConnectionInput { + s.CustomerGatewayId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateVpnConnectionInput) SetDryRun(v bool) *CreateVpnConnectionInput { + s.DryRun = &v + return s +} + +// SetOptions sets the Options field's value. +func (s *CreateVpnConnectionInput) SetOptions(v *VpnConnectionOptionsSpecification) *CreateVpnConnectionInput { + s.Options = v + return s +} + +// SetTransitGatewayId sets the TransitGatewayId field's value. +func (s *CreateVpnConnectionInput) SetTransitGatewayId(v string) *CreateVpnConnectionInput { + s.TransitGatewayId = &v + return s +} + +// SetType sets the Type field's value. +func (s *CreateVpnConnectionInput) SetType(v string) *CreateVpnConnectionInput { + s.Type = &v + return s +} + +// SetVpnGatewayId sets the VpnGatewayId field's value. +func (s *CreateVpnConnectionInput) SetVpnGatewayId(v string) *CreateVpnConnectionInput { + s.VpnGatewayId = &v + return s +} + +// Contains the output of CreateVpnConnection. +type CreateVpnConnectionOutput struct { + _ struct{} `type:"structure"` + + // Information about the VPN connection. + VpnConnection *VpnConnection `locationName:"vpnConnection" type:"structure"` +} + +// String returns the string representation +func (s CreateVpnConnectionOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateVpnConnectionOutput) GoString() string { + return s.String() +} + +// SetVpnConnection sets the VpnConnection field's value. +func (s *CreateVpnConnectionOutput) SetVpnConnection(v *VpnConnection) *CreateVpnConnectionOutput { + s.VpnConnection = v + return s +} + +// Contains the parameters for CreateVpnConnectionRoute. +type CreateVpnConnectionRouteInput struct { + _ struct{} `type:"structure"` + + // The CIDR block associated with the local subnet of the customer network. + // + // DestinationCidrBlock is a required field + DestinationCidrBlock *string `type:"string" required:"true"` + + // The ID of the VPN connection. + // + // VpnConnectionId is a required field + VpnConnectionId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s CreateVpnConnectionRouteInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateVpnConnectionRouteInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateVpnConnectionRouteInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateVpnConnectionRouteInput"} + if s.DestinationCidrBlock == nil { + invalidParams.Add(request.NewErrParamRequired("DestinationCidrBlock")) + } + if s.VpnConnectionId == nil { + invalidParams.Add(request.NewErrParamRequired("VpnConnectionId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDestinationCidrBlock sets the DestinationCidrBlock field's value. +func (s *CreateVpnConnectionRouteInput) SetDestinationCidrBlock(v string) *CreateVpnConnectionRouteInput { + s.DestinationCidrBlock = &v + return s +} + +// SetVpnConnectionId sets the VpnConnectionId field's value. +func (s *CreateVpnConnectionRouteInput) SetVpnConnectionId(v string) *CreateVpnConnectionRouteInput { + s.VpnConnectionId = &v + return s +} + +type CreateVpnConnectionRouteOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s CreateVpnConnectionRouteOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateVpnConnectionRouteOutput) GoString() string { + return s.String() +} + +// Contains the parameters for CreateVpnGateway. +type CreateVpnGatewayInput struct { + _ struct{} `type:"structure"` + + // A private Autonomous System Number (ASN) for the Amazon side of a BGP session. + // If you're using a 16-bit ASN, it must be in the 64512 to 65534 range. If + // you're using a 32-bit ASN, it must be in the 4200000000 to 4294967294 range. + // + // Default: 64512 + AmazonSideAsn *int64 `type:"long"` + + // The Availability Zone for the virtual private gateway. + AvailabilityZone *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The type of VPN connection this virtual private gateway supports. + // + // Type is a required field + Type *string `type:"string" required:"true" enum:"GatewayType"` +} + +// String returns the string representation +func (s CreateVpnGatewayInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateVpnGatewayInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateVpnGatewayInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateVpnGatewayInput"} + if s.Type == nil { + invalidParams.Add(request.NewErrParamRequired("Type")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAmazonSideAsn sets the AmazonSideAsn field's value. +func (s *CreateVpnGatewayInput) SetAmazonSideAsn(v int64) *CreateVpnGatewayInput { + s.AmazonSideAsn = &v + return s +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *CreateVpnGatewayInput) SetAvailabilityZone(v string) *CreateVpnGatewayInput { + s.AvailabilityZone = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateVpnGatewayInput) SetDryRun(v bool) *CreateVpnGatewayInput { + s.DryRun = &v + return s +} + +// SetType sets the Type field's value. +func (s *CreateVpnGatewayInput) SetType(v string) *CreateVpnGatewayInput { + s.Type = &v + return s +} + +// Contains the output of CreateVpnGateway. +type CreateVpnGatewayOutput struct { + _ struct{} `type:"structure"` + + // Information about the virtual private gateway. + VpnGateway *VpnGateway `locationName:"vpnGateway" type:"structure"` +} + +// String returns the string representation +func (s CreateVpnGatewayOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateVpnGatewayOutput) GoString() string { + return s.String() +} + +// SetVpnGateway sets the VpnGateway field's value. +func (s *CreateVpnGatewayOutput) SetVpnGateway(v *VpnGateway) *CreateVpnGatewayOutput { + s.VpnGateway = v + return s +} + +// Describes the credit option for CPU usage of a T2 or T3 instance. +type CreditSpecification struct { + _ struct{} `type:"structure"` + + // The credit option for CPU usage of a T2 or T3 instance. Valid values are + // standard and unlimited. + CpuCredits *string `locationName:"cpuCredits" type:"string"` +} + +// String returns the string representation +func (s CreditSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreditSpecification) GoString() string { + return s.String() +} + +// SetCpuCredits sets the CpuCredits field's value. +func (s *CreditSpecification) SetCpuCredits(v string) *CreditSpecification { + s.CpuCredits = &v + return s +} + +// The credit option for CPU usage of a T2 or T3 instance. +type CreditSpecificationRequest struct { + _ struct{} `type:"structure"` + + // The credit option for CPU usage of a T2 or T3 instance. Valid values are + // standard and unlimited. + // + // CpuCredits is a required field + CpuCredits *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s CreditSpecificationRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreditSpecificationRequest) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreditSpecificationRequest) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreditSpecificationRequest"} + if s.CpuCredits == nil { + invalidParams.Add(request.NewErrParamRequired("CpuCredits")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCpuCredits sets the CpuCredits field's value. +func (s *CreditSpecificationRequest) SetCpuCredits(v string) *CreditSpecificationRequest { + s.CpuCredits = &v + return s +} + +// Describes a customer gateway. +type CustomerGateway struct { + _ struct{} `type:"structure"` + + // The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number + // (ASN). + BgpAsn *string `locationName:"bgpAsn" type:"string"` + + // The Amazon Resource Name (ARN) for the customer gateway certificate. + CertificateArn *string `locationName:"certificateArn" type:"string"` + + // The ID of the customer gateway. + CustomerGatewayId *string `locationName:"customerGatewayId" type:"string"` + + // The Internet-routable IP address of the customer gateway's outside interface. + IpAddress *string `locationName:"ipAddress" type:"string"` + + // The current state of the customer gateway (pending | available | deleting + // | deleted). + State *string `locationName:"state" type:"string"` + + // Any tags assigned to the customer gateway. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The type of VPN connection the customer gateway supports (ipsec.1). + Type *string `locationName:"type" type:"string"` +} + +// String returns the string representation +func (s CustomerGateway) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CustomerGateway) GoString() string { + return s.String() +} + +// SetBgpAsn sets the BgpAsn field's value. +func (s *CustomerGateway) SetBgpAsn(v string) *CustomerGateway { + s.BgpAsn = &v + return s +} + +// SetCertificateArn sets the CertificateArn field's value. +func (s *CustomerGateway) SetCertificateArn(v string) *CustomerGateway { + s.CertificateArn = &v + return s +} + +// SetCustomerGatewayId sets the CustomerGatewayId field's value. +func (s *CustomerGateway) SetCustomerGatewayId(v string) *CustomerGateway { + s.CustomerGatewayId = &v + return s +} + +// SetIpAddress sets the IpAddress field's value. +func (s *CustomerGateway) SetIpAddress(v string) *CustomerGateway { + s.IpAddress = &v + return s +} + +// SetState sets the State field's value. +func (s *CustomerGateway) SetState(v string) *CustomerGateway { + s.State = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *CustomerGateway) SetTags(v []*Tag) *CustomerGateway { + s.Tags = v + return s +} + +// SetType sets the Type field's value. +func (s *CustomerGateway) SetType(v string) *CustomerGateway { + s.Type = &v + return s +} + +type DeleteClientVpnEndpointInput struct { + _ struct{} `type:"structure"` + + // The ID of the Client VPN to be deleted. + // + // ClientVpnEndpointId is a required field + ClientVpnEndpointId *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s DeleteClientVpnEndpointInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteClientVpnEndpointInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteClientVpnEndpointInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteClientVpnEndpointInput"} + if s.ClientVpnEndpointId == nil { + invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value. +func (s *DeleteClientVpnEndpointInput) SetClientVpnEndpointId(v string) *DeleteClientVpnEndpointInput { + s.ClientVpnEndpointId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteClientVpnEndpointInput) SetDryRun(v bool) *DeleteClientVpnEndpointInput { + s.DryRun = &v + return s +} + +type DeleteClientVpnEndpointOutput struct { + _ struct{} `type:"structure"` + + // The current state of the Client VPN endpoint. + Status *ClientVpnEndpointStatus `locationName:"status" type:"structure"` +} + +// String returns the string representation +func (s DeleteClientVpnEndpointOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteClientVpnEndpointOutput) GoString() string { + return s.String() +} + +// SetStatus sets the Status field's value. +func (s *DeleteClientVpnEndpointOutput) SetStatus(v *ClientVpnEndpointStatus) *DeleteClientVpnEndpointOutput { + s.Status = v + return s +} + +type DeleteClientVpnRouteInput struct { + _ struct{} `type:"structure"` + + // The ID of the Client VPN endpoint from which the route is to be deleted. + // + // ClientVpnEndpointId is a required field + ClientVpnEndpointId *string `type:"string" required:"true"` + + // The IPv4 address range, in CIDR notation, of the route to be deleted. + // + // DestinationCidrBlock is a required field + DestinationCidrBlock *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the target subnet used by the route. + TargetVpcSubnetId *string `type:"string"` +} + +// String returns the string representation +func (s DeleteClientVpnRouteInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteClientVpnRouteInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteClientVpnRouteInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteClientVpnRouteInput"} + if s.ClientVpnEndpointId == nil { + invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId")) + } + if s.DestinationCidrBlock == nil { + invalidParams.Add(request.NewErrParamRequired("DestinationCidrBlock")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value. +func (s *DeleteClientVpnRouteInput) SetClientVpnEndpointId(v string) *DeleteClientVpnRouteInput { + s.ClientVpnEndpointId = &v + return s +} + +// SetDestinationCidrBlock sets the DestinationCidrBlock field's value. +func (s *DeleteClientVpnRouteInput) SetDestinationCidrBlock(v string) *DeleteClientVpnRouteInput { + s.DestinationCidrBlock = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteClientVpnRouteInput) SetDryRun(v bool) *DeleteClientVpnRouteInput { + s.DryRun = &v + return s +} + +// SetTargetVpcSubnetId sets the TargetVpcSubnetId field's value. +func (s *DeleteClientVpnRouteInput) SetTargetVpcSubnetId(v string) *DeleteClientVpnRouteInput { + s.TargetVpcSubnetId = &v + return s +} + +type DeleteClientVpnRouteOutput struct { + _ struct{} `type:"structure"` + + // The current state of the route. + Status *ClientVpnRouteStatus `locationName:"status" type:"structure"` +} + +// String returns the string representation +func (s DeleteClientVpnRouteOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteClientVpnRouteOutput) GoString() string { + return s.String() +} + +// SetStatus sets the Status field's value. +func (s *DeleteClientVpnRouteOutput) SetStatus(v *ClientVpnRouteStatus) *DeleteClientVpnRouteOutput { + s.Status = v + return s +} + +// Contains the parameters for DeleteCustomerGateway. +type DeleteCustomerGatewayInput struct { + _ struct{} `type:"structure"` + + // The ID of the customer gateway. + // + // CustomerGatewayId is a required field + CustomerGatewayId *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` +} + +// String returns the string representation +func (s DeleteCustomerGatewayInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteCustomerGatewayInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteCustomerGatewayInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteCustomerGatewayInput"} + if s.CustomerGatewayId == nil { + invalidParams.Add(request.NewErrParamRequired("CustomerGatewayId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCustomerGatewayId sets the CustomerGatewayId field's value. +func (s *DeleteCustomerGatewayInput) SetCustomerGatewayId(v string) *DeleteCustomerGatewayInput { + s.CustomerGatewayId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteCustomerGatewayInput) SetDryRun(v bool) *DeleteCustomerGatewayInput { + s.DryRun = &v + return s +} + +type DeleteCustomerGatewayOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteCustomerGatewayOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteCustomerGatewayOutput) GoString() string { + return s.String() +} + +type DeleteDhcpOptionsInput struct { + _ struct{} `type:"structure"` + + // The ID of the DHCP options set. + // + // DhcpOptionsId is a required field + DhcpOptionsId *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` +} + +// String returns the string representation +func (s DeleteDhcpOptionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteDhcpOptionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteDhcpOptionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteDhcpOptionsInput"} + if s.DhcpOptionsId == nil { + invalidParams.Add(request.NewErrParamRequired("DhcpOptionsId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDhcpOptionsId sets the DhcpOptionsId field's value. +func (s *DeleteDhcpOptionsInput) SetDhcpOptionsId(v string) *DeleteDhcpOptionsInput { + s.DhcpOptionsId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteDhcpOptionsInput) SetDryRun(v bool) *DeleteDhcpOptionsInput { + s.DryRun = &v + return s +} + +type DeleteDhcpOptionsOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteDhcpOptionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteDhcpOptionsOutput) GoString() string { + return s.String() +} + +type DeleteEgressOnlyInternetGatewayInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the egress-only internet gateway. + // + // EgressOnlyInternetGatewayId is a required field + EgressOnlyInternetGatewayId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteEgressOnlyInternetGatewayInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteEgressOnlyInternetGatewayInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteEgressOnlyInternetGatewayInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteEgressOnlyInternetGatewayInput"} + if s.EgressOnlyInternetGatewayId == nil { + invalidParams.Add(request.NewErrParamRequired("EgressOnlyInternetGatewayId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteEgressOnlyInternetGatewayInput) SetDryRun(v bool) *DeleteEgressOnlyInternetGatewayInput { + s.DryRun = &v + return s +} + +// SetEgressOnlyInternetGatewayId sets the EgressOnlyInternetGatewayId field's value. +func (s *DeleteEgressOnlyInternetGatewayInput) SetEgressOnlyInternetGatewayId(v string) *DeleteEgressOnlyInternetGatewayInput { + s.EgressOnlyInternetGatewayId = &v + return s +} + +type DeleteEgressOnlyInternetGatewayOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, it returns an error. + ReturnCode *bool `locationName:"returnCode" type:"boolean"` +} + +// String returns the string representation +func (s DeleteEgressOnlyInternetGatewayOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteEgressOnlyInternetGatewayOutput) GoString() string { + return s.String() +} + +// SetReturnCode sets the ReturnCode field's value. +func (s *DeleteEgressOnlyInternetGatewayOutput) SetReturnCode(v bool) *DeleteEgressOnlyInternetGatewayOutput { + s.ReturnCode = &v + return s +} + +// Describes an EC2 Fleet error. +type DeleteFleetError struct { + _ struct{} `type:"structure"` + + // The error code. + Code *string `locationName:"code" type:"string" enum:"DeleteFleetErrorCode"` + + // The description for the error code. + Message *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s DeleteFleetError) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteFleetError) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *DeleteFleetError) SetCode(v string) *DeleteFleetError { + s.Code = &v + return s +} + +// SetMessage sets the Message field's value. +func (s *DeleteFleetError) SetMessage(v string) *DeleteFleetError { + s.Message = &v + return s +} + +// Describes an EC2 Fleet that was not successfully deleted. +type DeleteFleetErrorItem struct { + _ struct{} `type:"structure"` + + // The error. + Error *DeleteFleetError `locationName:"error" type:"structure"` + + // The ID of the EC2 Fleet. + FleetId *string `locationName:"fleetId" type:"string"` +} + +// String returns the string representation +func (s DeleteFleetErrorItem) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteFleetErrorItem) GoString() string { + return s.String() +} + +// SetError sets the Error field's value. +func (s *DeleteFleetErrorItem) SetError(v *DeleteFleetError) *DeleteFleetErrorItem { + s.Error = v + return s +} + +// SetFleetId sets the FleetId field's value. +func (s *DeleteFleetErrorItem) SetFleetId(v string) *DeleteFleetErrorItem { + s.FleetId = &v + return s +} + +// Describes an EC2 Fleet that was successfully deleted. +type DeleteFleetSuccessItem struct { + _ struct{} `type:"structure"` + + // The current state of the EC2 Fleet. + CurrentFleetState *string `locationName:"currentFleetState" type:"string" enum:"FleetStateCode"` + + // The ID of the EC2 Fleet. + FleetId *string `locationName:"fleetId" type:"string"` + + // The previous state of the EC2 Fleet. + PreviousFleetState *string `locationName:"previousFleetState" type:"string" enum:"FleetStateCode"` +} + +// String returns the string representation +func (s DeleteFleetSuccessItem) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteFleetSuccessItem) GoString() string { + return s.String() +} + +// SetCurrentFleetState sets the CurrentFleetState field's value. +func (s *DeleteFleetSuccessItem) SetCurrentFleetState(v string) *DeleteFleetSuccessItem { + s.CurrentFleetState = &v + return s +} + +// SetFleetId sets the FleetId field's value. +func (s *DeleteFleetSuccessItem) SetFleetId(v string) *DeleteFleetSuccessItem { + s.FleetId = &v + return s +} + +// SetPreviousFleetState sets the PreviousFleetState field's value. +func (s *DeleteFleetSuccessItem) SetPreviousFleetState(v string) *DeleteFleetSuccessItem { + s.PreviousFleetState = &v + return s +} + +type DeleteFleetsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The IDs of the EC2 Fleets. + // + // FleetIds is a required field + FleetIds []*string `locationName:"FleetId" type:"list" required:"true"` + + // Indicates whether to terminate instances for an EC2 Fleet if it is deleted + // successfully. + // + // TerminateInstances is a required field + TerminateInstances *bool `type:"boolean" required:"true"` +} + +// String returns the string representation +func (s DeleteFleetsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteFleetsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteFleetsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteFleetsInput"} + if s.FleetIds == nil { + invalidParams.Add(request.NewErrParamRequired("FleetIds")) + } + if s.TerminateInstances == nil { + invalidParams.Add(request.NewErrParamRequired("TerminateInstances")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteFleetsInput) SetDryRun(v bool) *DeleteFleetsInput { + s.DryRun = &v + return s +} + +// SetFleetIds sets the FleetIds field's value. +func (s *DeleteFleetsInput) SetFleetIds(v []*string) *DeleteFleetsInput { + s.FleetIds = v + return s +} + +// SetTerminateInstances sets the TerminateInstances field's value. +func (s *DeleteFleetsInput) SetTerminateInstances(v bool) *DeleteFleetsInput { + s.TerminateInstances = &v + return s +} + +type DeleteFleetsOutput struct { + _ struct{} `type:"structure"` + + // Information about the EC2 Fleets that are successfully deleted. + SuccessfulFleetDeletions []*DeleteFleetSuccessItem `locationName:"successfulFleetDeletionSet" locationNameList:"item" type:"list"` + + // Information about the EC2 Fleets that are not successfully deleted. + UnsuccessfulFleetDeletions []*DeleteFleetErrorItem `locationName:"unsuccessfulFleetDeletionSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DeleteFleetsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteFleetsOutput) GoString() string { + return s.String() +} + +// SetSuccessfulFleetDeletions sets the SuccessfulFleetDeletions field's value. +func (s *DeleteFleetsOutput) SetSuccessfulFleetDeletions(v []*DeleteFleetSuccessItem) *DeleteFleetsOutput { + s.SuccessfulFleetDeletions = v + return s +} + +// SetUnsuccessfulFleetDeletions sets the UnsuccessfulFleetDeletions field's value. +func (s *DeleteFleetsOutput) SetUnsuccessfulFleetDeletions(v []*DeleteFleetErrorItem) *DeleteFleetsOutput { + s.UnsuccessfulFleetDeletions = v + return s +} + +type DeleteFlowLogsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more flow log IDs. + // + // Constraint: Maximum of 1000 flow log IDs. + // + // FlowLogIds is a required field + FlowLogIds []*string `locationName:"FlowLogId" locationNameList:"item" type:"list" required:"true"` +} + +// String returns the string representation +func (s DeleteFlowLogsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteFlowLogsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteFlowLogsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteFlowLogsInput"} + if s.FlowLogIds == nil { + invalidParams.Add(request.NewErrParamRequired("FlowLogIds")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteFlowLogsInput) SetDryRun(v bool) *DeleteFlowLogsInput { + s.DryRun = &v + return s +} + +// SetFlowLogIds sets the FlowLogIds field's value. +func (s *DeleteFlowLogsInput) SetFlowLogIds(v []*string) *DeleteFlowLogsInput { + s.FlowLogIds = v + return s +} + +type DeleteFlowLogsOutput struct { + _ struct{} `type:"structure"` + + // Information about the flow logs that could not be deleted successfully. + Unsuccessful []*UnsuccessfulItem `locationName:"unsuccessful" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DeleteFlowLogsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteFlowLogsOutput) GoString() string { + return s.String() +} + +// SetUnsuccessful sets the Unsuccessful field's value. +func (s *DeleteFlowLogsOutput) SetUnsuccessful(v []*UnsuccessfulItem) *DeleteFlowLogsOutput { + s.Unsuccessful = v + return s +} + +type DeleteFpgaImageInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the AFI. + // + // FpgaImageId is a required field + FpgaImageId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteFpgaImageInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteFpgaImageInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteFpgaImageInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteFpgaImageInput"} + if s.FpgaImageId == nil { + invalidParams.Add(request.NewErrParamRequired("FpgaImageId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteFpgaImageInput) SetDryRun(v bool) *DeleteFpgaImageInput { + s.DryRun = &v + return s +} + +// SetFpgaImageId sets the FpgaImageId field's value. +func (s *DeleteFpgaImageInput) SetFpgaImageId(v string) *DeleteFpgaImageInput { + s.FpgaImageId = &v + return s +} + +type DeleteFpgaImageOutput struct { + _ struct{} `type:"structure"` + + // Is true if the request succeeds, and an error otherwise. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s DeleteFpgaImageOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteFpgaImageOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *DeleteFpgaImageOutput) SetReturn(v bool) *DeleteFpgaImageOutput { + s.Return = &v + return s +} + +type DeleteInternetGatewayInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the internet gateway. + // + // InternetGatewayId is a required field + InternetGatewayId *string `locationName:"internetGatewayId" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteInternetGatewayInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteInternetGatewayInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteInternetGatewayInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteInternetGatewayInput"} + if s.InternetGatewayId == nil { + invalidParams.Add(request.NewErrParamRequired("InternetGatewayId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteInternetGatewayInput) SetDryRun(v bool) *DeleteInternetGatewayInput { + s.DryRun = &v + return s +} + +// SetInternetGatewayId sets the InternetGatewayId field's value. +func (s *DeleteInternetGatewayInput) SetInternetGatewayId(v string) *DeleteInternetGatewayInput { + s.InternetGatewayId = &v + return s +} + +type DeleteInternetGatewayOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteInternetGatewayOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteInternetGatewayOutput) GoString() string { + return s.String() +} + +type DeleteKeyPairInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The name of the key pair. + // + // KeyName is a required field + KeyName *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteKeyPairInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteKeyPairInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteKeyPairInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteKeyPairInput"} + if s.KeyName == nil { + invalidParams.Add(request.NewErrParamRequired("KeyName")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteKeyPairInput) SetDryRun(v bool) *DeleteKeyPairInput { + s.DryRun = &v + return s +} + +// SetKeyName sets the KeyName field's value. +func (s *DeleteKeyPairInput) SetKeyName(v string) *DeleteKeyPairInput { + s.KeyName = &v + return s +} + +type DeleteKeyPairOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteKeyPairOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteKeyPairOutput) GoString() string { + return s.String() +} + +type DeleteLaunchTemplateInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the launch template. You must specify either the launch template + // ID or launch template name in the request. + LaunchTemplateId *string `type:"string"` + + // The name of the launch template. You must specify either the launch template + // ID or launch template name in the request. + LaunchTemplateName *string `min:"3" type:"string"` +} + +// String returns the string representation +func (s DeleteLaunchTemplateInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteLaunchTemplateInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteLaunchTemplateInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteLaunchTemplateInput"} + if s.LaunchTemplateName != nil && len(*s.LaunchTemplateName) < 3 { + invalidParams.Add(request.NewErrParamMinLen("LaunchTemplateName", 3)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteLaunchTemplateInput) SetDryRun(v bool) *DeleteLaunchTemplateInput { + s.DryRun = &v + return s +} + +// SetLaunchTemplateId sets the LaunchTemplateId field's value. +func (s *DeleteLaunchTemplateInput) SetLaunchTemplateId(v string) *DeleteLaunchTemplateInput { + s.LaunchTemplateId = &v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *DeleteLaunchTemplateInput) SetLaunchTemplateName(v string) *DeleteLaunchTemplateInput { + s.LaunchTemplateName = &v + return s +} + +type DeleteLaunchTemplateOutput struct { + _ struct{} `type:"structure"` + + // Information about the launch template. + LaunchTemplate *LaunchTemplate `locationName:"launchTemplate" type:"structure"` +} + +// String returns the string representation +func (s DeleteLaunchTemplateOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteLaunchTemplateOutput) GoString() string { + return s.String() +} + +// SetLaunchTemplate sets the LaunchTemplate field's value. +func (s *DeleteLaunchTemplateOutput) SetLaunchTemplate(v *LaunchTemplate) *DeleteLaunchTemplateOutput { + s.LaunchTemplate = v + return s +} + +type DeleteLaunchTemplateVersionsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the launch template. You must specify either the launch template + // ID or launch template name in the request. + LaunchTemplateId *string `type:"string"` + + // The name of the launch template. You must specify either the launch template + // ID or launch template name in the request. + LaunchTemplateName *string `min:"3" type:"string"` + + // The version numbers of one or more launch template versions to delete. + // + // Versions is a required field + Versions []*string `locationName:"LaunchTemplateVersion" locationNameList:"item" type:"list" required:"true"` +} + +// String returns the string representation +func (s DeleteLaunchTemplateVersionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteLaunchTemplateVersionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteLaunchTemplateVersionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteLaunchTemplateVersionsInput"} + if s.LaunchTemplateName != nil && len(*s.LaunchTemplateName) < 3 { + invalidParams.Add(request.NewErrParamMinLen("LaunchTemplateName", 3)) + } + if s.Versions == nil { + invalidParams.Add(request.NewErrParamRequired("Versions")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteLaunchTemplateVersionsInput) SetDryRun(v bool) *DeleteLaunchTemplateVersionsInput { + s.DryRun = &v + return s +} + +// SetLaunchTemplateId sets the LaunchTemplateId field's value. +func (s *DeleteLaunchTemplateVersionsInput) SetLaunchTemplateId(v string) *DeleteLaunchTemplateVersionsInput { + s.LaunchTemplateId = &v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *DeleteLaunchTemplateVersionsInput) SetLaunchTemplateName(v string) *DeleteLaunchTemplateVersionsInput { + s.LaunchTemplateName = &v + return s +} + +// SetVersions sets the Versions field's value. +func (s *DeleteLaunchTemplateVersionsInput) SetVersions(v []*string) *DeleteLaunchTemplateVersionsInput { + s.Versions = v + return s +} + +type DeleteLaunchTemplateVersionsOutput struct { + _ struct{} `type:"structure"` + + // Information about the launch template versions that were successfully deleted. + SuccessfullyDeletedLaunchTemplateVersions []*DeleteLaunchTemplateVersionsResponseSuccessItem `locationName:"successfullyDeletedLaunchTemplateVersionSet" locationNameList:"item" type:"list"` + + // Information about the launch template versions that could not be deleted. + UnsuccessfullyDeletedLaunchTemplateVersions []*DeleteLaunchTemplateVersionsResponseErrorItem `locationName:"unsuccessfullyDeletedLaunchTemplateVersionSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DeleteLaunchTemplateVersionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteLaunchTemplateVersionsOutput) GoString() string { + return s.String() +} + +// SetSuccessfullyDeletedLaunchTemplateVersions sets the SuccessfullyDeletedLaunchTemplateVersions field's value. +func (s *DeleteLaunchTemplateVersionsOutput) SetSuccessfullyDeletedLaunchTemplateVersions(v []*DeleteLaunchTemplateVersionsResponseSuccessItem) *DeleteLaunchTemplateVersionsOutput { + s.SuccessfullyDeletedLaunchTemplateVersions = v + return s +} + +// SetUnsuccessfullyDeletedLaunchTemplateVersions sets the UnsuccessfullyDeletedLaunchTemplateVersions field's value. +func (s *DeleteLaunchTemplateVersionsOutput) SetUnsuccessfullyDeletedLaunchTemplateVersions(v []*DeleteLaunchTemplateVersionsResponseErrorItem) *DeleteLaunchTemplateVersionsOutput { + s.UnsuccessfullyDeletedLaunchTemplateVersions = v + return s +} + +// Describes a launch template version that could not be deleted. +type DeleteLaunchTemplateVersionsResponseErrorItem struct { + _ struct{} `type:"structure"` + + // The ID of the launch template. + LaunchTemplateId *string `locationName:"launchTemplateId" type:"string"` + + // The name of the launch template. + LaunchTemplateName *string `locationName:"launchTemplateName" type:"string"` + + // Information about the error. + ResponseError *ResponseError `locationName:"responseError" type:"structure"` + + // The version number of the launch template. + VersionNumber *int64 `locationName:"versionNumber" type:"long"` +} + +// String returns the string representation +func (s DeleteLaunchTemplateVersionsResponseErrorItem) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteLaunchTemplateVersionsResponseErrorItem) GoString() string { + return s.String() +} + +// SetLaunchTemplateId sets the LaunchTemplateId field's value. +func (s *DeleteLaunchTemplateVersionsResponseErrorItem) SetLaunchTemplateId(v string) *DeleteLaunchTemplateVersionsResponseErrorItem { + s.LaunchTemplateId = &v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *DeleteLaunchTemplateVersionsResponseErrorItem) SetLaunchTemplateName(v string) *DeleteLaunchTemplateVersionsResponseErrorItem { + s.LaunchTemplateName = &v + return s +} + +// SetResponseError sets the ResponseError field's value. +func (s *DeleteLaunchTemplateVersionsResponseErrorItem) SetResponseError(v *ResponseError) *DeleteLaunchTemplateVersionsResponseErrorItem { + s.ResponseError = v + return s +} + +// SetVersionNumber sets the VersionNumber field's value. +func (s *DeleteLaunchTemplateVersionsResponseErrorItem) SetVersionNumber(v int64) *DeleteLaunchTemplateVersionsResponseErrorItem { + s.VersionNumber = &v + return s +} + +// Describes a launch template version that was successfully deleted. +type DeleteLaunchTemplateVersionsResponseSuccessItem struct { + _ struct{} `type:"structure"` + + // The ID of the launch template. + LaunchTemplateId *string `locationName:"launchTemplateId" type:"string"` + + // The name of the launch template. + LaunchTemplateName *string `locationName:"launchTemplateName" type:"string"` + + // The version number of the launch template. + VersionNumber *int64 `locationName:"versionNumber" type:"long"` +} + +// String returns the string representation +func (s DeleteLaunchTemplateVersionsResponseSuccessItem) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteLaunchTemplateVersionsResponseSuccessItem) GoString() string { + return s.String() +} + +// SetLaunchTemplateId sets the LaunchTemplateId field's value. +func (s *DeleteLaunchTemplateVersionsResponseSuccessItem) SetLaunchTemplateId(v string) *DeleteLaunchTemplateVersionsResponseSuccessItem { + s.LaunchTemplateId = &v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *DeleteLaunchTemplateVersionsResponseSuccessItem) SetLaunchTemplateName(v string) *DeleteLaunchTemplateVersionsResponseSuccessItem { + s.LaunchTemplateName = &v + return s +} + +// SetVersionNumber sets the VersionNumber field's value. +func (s *DeleteLaunchTemplateVersionsResponseSuccessItem) SetVersionNumber(v int64) *DeleteLaunchTemplateVersionsResponseSuccessItem { + s.VersionNumber = &v + return s +} + +type DeleteNatGatewayInput struct { + _ struct{} `type:"structure"` + + // The ID of the NAT gateway. + // + // NatGatewayId is a required field + NatGatewayId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteNatGatewayInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteNatGatewayInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteNatGatewayInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteNatGatewayInput"} + if s.NatGatewayId == nil { + invalidParams.Add(request.NewErrParamRequired("NatGatewayId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetNatGatewayId sets the NatGatewayId field's value. +func (s *DeleteNatGatewayInput) SetNatGatewayId(v string) *DeleteNatGatewayInput { + s.NatGatewayId = &v + return s +} + +type DeleteNatGatewayOutput struct { + _ struct{} `type:"structure"` + + // The ID of the NAT gateway. + NatGatewayId *string `locationName:"natGatewayId" type:"string"` +} + +// String returns the string representation +func (s DeleteNatGatewayOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteNatGatewayOutput) GoString() string { + return s.String() +} + +// SetNatGatewayId sets the NatGatewayId field's value. +func (s *DeleteNatGatewayOutput) SetNatGatewayId(v string) *DeleteNatGatewayOutput { + s.NatGatewayId = &v + return s +} + +type DeleteNetworkAclEntryInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // Indicates whether the rule is an egress rule. + // + // Egress is a required field + Egress *bool `locationName:"egress" type:"boolean" required:"true"` + + // The ID of the network ACL. + // + // NetworkAclId is a required field + NetworkAclId *string `locationName:"networkAclId" type:"string" required:"true"` + + // The rule number of the entry to delete. + // + // RuleNumber is a required field + RuleNumber *int64 `locationName:"ruleNumber" type:"integer" required:"true"` +} + +// String returns the string representation +func (s DeleteNetworkAclEntryInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteNetworkAclEntryInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteNetworkAclEntryInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteNetworkAclEntryInput"} + if s.Egress == nil { + invalidParams.Add(request.NewErrParamRequired("Egress")) + } + if s.NetworkAclId == nil { + invalidParams.Add(request.NewErrParamRequired("NetworkAclId")) + } + if s.RuleNumber == nil { + invalidParams.Add(request.NewErrParamRequired("RuleNumber")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteNetworkAclEntryInput) SetDryRun(v bool) *DeleteNetworkAclEntryInput { + s.DryRun = &v + return s +} + +// SetEgress sets the Egress field's value. +func (s *DeleteNetworkAclEntryInput) SetEgress(v bool) *DeleteNetworkAclEntryInput { + s.Egress = &v + return s +} + +// SetNetworkAclId sets the NetworkAclId field's value. +func (s *DeleteNetworkAclEntryInput) SetNetworkAclId(v string) *DeleteNetworkAclEntryInput { + s.NetworkAclId = &v + return s +} + +// SetRuleNumber sets the RuleNumber field's value. +func (s *DeleteNetworkAclEntryInput) SetRuleNumber(v int64) *DeleteNetworkAclEntryInput { + s.RuleNumber = &v + return s +} + +type DeleteNetworkAclEntryOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteNetworkAclEntryOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteNetworkAclEntryOutput) GoString() string { + return s.String() +} + +type DeleteNetworkAclInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the network ACL. + // + // NetworkAclId is a required field + NetworkAclId *string `locationName:"networkAclId" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteNetworkAclInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteNetworkAclInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteNetworkAclInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteNetworkAclInput"} + if s.NetworkAclId == nil { + invalidParams.Add(request.NewErrParamRequired("NetworkAclId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteNetworkAclInput) SetDryRun(v bool) *DeleteNetworkAclInput { + s.DryRun = &v + return s +} + +// SetNetworkAclId sets the NetworkAclId field's value. +func (s *DeleteNetworkAclInput) SetNetworkAclId(v string) *DeleteNetworkAclInput { + s.NetworkAclId = &v + return s +} + +type DeleteNetworkAclOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteNetworkAclOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteNetworkAclOutput) GoString() string { + return s.String() +} + +// Contains the parameters for DeleteNetworkInterface. +type DeleteNetworkInterfaceInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the network interface. + // + // NetworkInterfaceId is a required field + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteNetworkInterfaceInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteNetworkInterfaceInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteNetworkInterfaceInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteNetworkInterfaceInput"} + if s.NetworkInterfaceId == nil { + invalidParams.Add(request.NewErrParamRequired("NetworkInterfaceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteNetworkInterfaceInput) SetDryRun(v bool) *DeleteNetworkInterfaceInput { + s.DryRun = &v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *DeleteNetworkInterfaceInput) SetNetworkInterfaceId(v string) *DeleteNetworkInterfaceInput { + s.NetworkInterfaceId = &v + return s +} + +type DeleteNetworkInterfaceOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteNetworkInterfaceOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteNetworkInterfaceOutput) GoString() string { + return s.String() +} + +// Contains the parameters for DeleteNetworkInterfacePermission. +type DeleteNetworkInterfacePermissionInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // Specify true to remove the permission even if the network interface is attached + // to an instance. + Force *bool `type:"boolean"` + + // The ID of the network interface permission. + // + // NetworkInterfacePermissionId is a required field + NetworkInterfacePermissionId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteNetworkInterfacePermissionInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteNetworkInterfacePermissionInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteNetworkInterfacePermissionInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteNetworkInterfacePermissionInput"} + if s.NetworkInterfacePermissionId == nil { + invalidParams.Add(request.NewErrParamRequired("NetworkInterfacePermissionId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteNetworkInterfacePermissionInput) SetDryRun(v bool) *DeleteNetworkInterfacePermissionInput { + s.DryRun = &v + return s +} + +// SetForce sets the Force field's value. +func (s *DeleteNetworkInterfacePermissionInput) SetForce(v bool) *DeleteNetworkInterfacePermissionInput { + s.Force = &v + return s +} + +// SetNetworkInterfacePermissionId sets the NetworkInterfacePermissionId field's value. +func (s *DeleteNetworkInterfacePermissionInput) SetNetworkInterfacePermissionId(v string) *DeleteNetworkInterfacePermissionInput { + s.NetworkInterfacePermissionId = &v + return s +} + +// Contains the output for DeleteNetworkInterfacePermission. +type DeleteNetworkInterfacePermissionOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds, otherwise returns an error. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s DeleteNetworkInterfacePermissionOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteNetworkInterfacePermissionOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *DeleteNetworkInterfacePermissionOutput) SetReturn(v bool) *DeleteNetworkInterfacePermissionOutput { + s.Return = &v + return s +} + +type DeletePlacementGroupInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The name of the placement group. + // + // GroupName is a required field + GroupName *string `locationName:"groupName" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeletePlacementGroupInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeletePlacementGroupInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeletePlacementGroupInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeletePlacementGroupInput"} + if s.GroupName == nil { + invalidParams.Add(request.NewErrParamRequired("GroupName")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeletePlacementGroupInput) SetDryRun(v bool) *DeletePlacementGroupInput { + s.DryRun = &v + return s +} + +// SetGroupName sets the GroupName field's value. +func (s *DeletePlacementGroupInput) SetGroupName(v string) *DeletePlacementGroupInput { + s.GroupName = &v + return s +} + +type DeletePlacementGroupOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeletePlacementGroupOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeletePlacementGroupOutput) GoString() string { + return s.String() +} + +// Describes the error for a Reserved Instance whose queued purchase could not +// be deleted. +type DeleteQueuedReservedInstancesError struct { + _ struct{} `type:"structure"` + + // The error code. + Code *string `locationName:"code" type:"string" enum:"DeleteQueuedReservedInstancesErrorCode"` + + // The error message. + Message *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s DeleteQueuedReservedInstancesError) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteQueuedReservedInstancesError) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *DeleteQueuedReservedInstancesError) SetCode(v string) *DeleteQueuedReservedInstancesError { + s.Code = &v + return s +} + +// SetMessage sets the Message field's value. +func (s *DeleteQueuedReservedInstancesError) SetMessage(v string) *DeleteQueuedReservedInstancesError { + s.Message = &v + return s +} + +type DeleteQueuedReservedInstancesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The IDs of the Reserved Instances. + // + // ReservedInstancesIds is a required field + ReservedInstancesIds []*string `locationName:"ReservedInstancesId" locationNameList:"item" min:"1" type:"list" required:"true"` +} + +// String returns the string representation +func (s DeleteQueuedReservedInstancesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteQueuedReservedInstancesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteQueuedReservedInstancesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteQueuedReservedInstancesInput"} + if s.ReservedInstancesIds == nil { + invalidParams.Add(request.NewErrParamRequired("ReservedInstancesIds")) + } + if s.ReservedInstancesIds != nil && len(s.ReservedInstancesIds) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ReservedInstancesIds", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteQueuedReservedInstancesInput) SetDryRun(v bool) *DeleteQueuedReservedInstancesInput { + s.DryRun = &v + return s +} + +// SetReservedInstancesIds sets the ReservedInstancesIds field's value. +func (s *DeleteQueuedReservedInstancesInput) SetReservedInstancesIds(v []*string) *DeleteQueuedReservedInstancesInput { + s.ReservedInstancesIds = v + return s +} + +type DeleteQueuedReservedInstancesOutput struct { + _ struct{} `type:"structure"` + + // Information about the queued purchases that could not be deleted. + FailedQueuedPurchaseDeletions []*FailedQueuedPurchaseDeletion `locationName:"failedQueuedPurchaseDeletionSet" locationNameList:"item" type:"list"` + + // Information about the queued purchases that were successfully deleted. + SuccessfulQueuedPurchaseDeletions []*SuccessfulQueuedPurchaseDeletion `locationName:"successfulQueuedPurchaseDeletionSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DeleteQueuedReservedInstancesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteQueuedReservedInstancesOutput) GoString() string { + return s.String() +} + +// SetFailedQueuedPurchaseDeletions sets the FailedQueuedPurchaseDeletions field's value. +func (s *DeleteQueuedReservedInstancesOutput) SetFailedQueuedPurchaseDeletions(v []*FailedQueuedPurchaseDeletion) *DeleteQueuedReservedInstancesOutput { + s.FailedQueuedPurchaseDeletions = v + return s +} + +// SetSuccessfulQueuedPurchaseDeletions sets the SuccessfulQueuedPurchaseDeletions field's value. +func (s *DeleteQueuedReservedInstancesOutput) SetSuccessfulQueuedPurchaseDeletions(v []*SuccessfulQueuedPurchaseDeletion) *DeleteQueuedReservedInstancesOutput { + s.SuccessfulQueuedPurchaseDeletions = v + return s +} + +type DeleteRouteInput struct { + _ struct{} `type:"structure"` + + // The IPv4 CIDR range for the route. The value you specify must match the CIDR + // for the route exactly. + DestinationCidrBlock *string `locationName:"destinationCidrBlock" type:"string"` + + // The IPv6 CIDR range for the route. The value you specify must match the CIDR + // for the route exactly. + DestinationIpv6CidrBlock *string `locationName:"destinationIpv6CidrBlock" type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the route table. + // + // RouteTableId is a required field + RouteTableId *string `locationName:"routeTableId" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteRouteInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteRouteInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteRouteInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteRouteInput"} + if s.RouteTableId == nil { + invalidParams.Add(request.NewErrParamRequired("RouteTableId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDestinationCidrBlock sets the DestinationCidrBlock field's value. +func (s *DeleteRouteInput) SetDestinationCidrBlock(v string) *DeleteRouteInput { + s.DestinationCidrBlock = &v + return s +} + +// SetDestinationIpv6CidrBlock sets the DestinationIpv6CidrBlock field's value. +func (s *DeleteRouteInput) SetDestinationIpv6CidrBlock(v string) *DeleteRouteInput { + s.DestinationIpv6CidrBlock = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteRouteInput) SetDryRun(v bool) *DeleteRouteInput { + s.DryRun = &v + return s +} + +// SetRouteTableId sets the RouteTableId field's value. +func (s *DeleteRouteInput) SetRouteTableId(v string) *DeleteRouteInput { + s.RouteTableId = &v + return s +} + +type DeleteRouteOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteRouteOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteRouteOutput) GoString() string { + return s.String() +} + +type DeleteRouteTableInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the route table. + // + // RouteTableId is a required field + RouteTableId *string `locationName:"routeTableId" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteRouteTableInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteRouteTableInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteRouteTableInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteRouteTableInput"} + if s.RouteTableId == nil { + invalidParams.Add(request.NewErrParamRequired("RouteTableId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteRouteTableInput) SetDryRun(v bool) *DeleteRouteTableInput { + s.DryRun = &v + return s +} + +// SetRouteTableId sets the RouteTableId field's value. +func (s *DeleteRouteTableInput) SetRouteTableId(v string) *DeleteRouteTableInput { + s.RouteTableId = &v + return s +} + +type DeleteRouteTableOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteRouteTableOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteRouteTableOutput) GoString() string { + return s.String() +} + +type DeleteSecurityGroupInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the security group. Required for a nondefault VPC. + GroupId *string `type:"string"` + + // [EC2-Classic, default VPC] The name of the security group. You can specify + // either the security group name or the security group ID. + GroupName *string `type:"string"` +} + +// String returns the string representation +func (s DeleteSecurityGroupInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteSecurityGroupInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteSecurityGroupInput) SetDryRun(v bool) *DeleteSecurityGroupInput { + s.DryRun = &v + return s +} + +// SetGroupId sets the GroupId field's value. +func (s *DeleteSecurityGroupInput) SetGroupId(v string) *DeleteSecurityGroupInput { + s.GroupId = &v + return s +} + +// SetGroupName sets the GroupName field's value. +func (s *DeleteSecurityGroupInput) SetGroupName(v string) *DeleteSecurityGroupInput { + s.GroupName = &v + return s +} + +type DeleteSecurityGroupOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteSecurityGroupOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteSecurityGroupOutput) GoString() string { + return s.String() +} + +// Contains the parameters for DeleteSnapshot. +type DeleteSnapshotInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the EBS snapshot. + // + // SnapshotId is a required field + SnapshotId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteSnapshotInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteSnapshotInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteSnapshotInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteSnapshotInput"} + if s.SnapshotId == nil { + invalidParams.Add(request.NewErrParamRequired("SnapshotId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteSnapshotInput) SetDryRun(v bool) *DeleteSnapshotInput { + s.DryRun = &v + return s +} + +// SetSnapshotId sets the SnapshotId field's value. +func (s *DeleteSnapshotInput) SetSnapshotId(v string) *DeleteSnapshotInput { + s.SnapshotId = &v + return s +} + +type DeleteSnapshotOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteSnapshotOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteSnapshotOutput) GoString() string { + return s.String() +} + +// Contains the parameters for DeleteSpotDatafeedSubscription. +type DeleteSpotDatafeedSubscriptionInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` +} + +// String returns the string representation +func (s DeleteSpotDatafeedSubscriptionInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteSpotDatafeedSubscriptionInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteSpotDatafeedSubscriptionInput) SetDryRun(v bool) *DeleteSpotDatafeedSubscriptionInput { + s.DryRun = &v + return s +} + +type DeleteSpotDatafeedSubscriptionOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteSpotDatafeedSubscriptionOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteSpotDatafeedSubscriptionOutput) GoString() string { + return s.String() +} + +type DeleteSubnetInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the subnet. + // + // SubnetId is a required field + SubnetId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteSubnetInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteSubnetInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteSubnetInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteSubnetInput"} + if s.SubnetId == nil { + invalidParams.Add(request.NewErrParamRequired("SubnetId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteSubnetInput) SetDryRun(v bool) *DeleteSubnetInput { + s.DryRun = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *DeleteSubnetInput) SetSubnetId(v string) *DeleteSubnetInput { + s.SubnetId = &v + return s +} + +type DeleteSubnetOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteSubnetOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteSubnetOutput) GoString() string { + return s.String() +} + +type DeleteTagsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The IDs of the resources, separated by spaces. + // + // Constraints: Up to 1000 resource IDs. We recommend breaking up this request + // into smaller batches. + // + // Resources is a required field + Resources []*string `locationName:"resourceId" type:"list" required:"true"` + + // The tags to delete. Specify a tag key and an optional tag value to delete + // specific tags. If you specify a tag key without a tag value, we delete any + // tag with this key regardless of its value. If you specify a tag key with + // an empty string as the tag value, we delete the tag only if its value is + // an empty string. + // + // If you omit this parameter, we delete all user-defined tags for the specified + // resources. We do not delete AWS-generated tags (tags that have the aws: prefix). + Tags []*Tag `locationName:"tag" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DeleteTagsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteTagsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteTagsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteTagsInput"} + if s.Resources == nil { + invalidParams.Add(request.NewErrParamRequired("Resources")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteTagsInput) SetDryRun(v bool) *DeleteTagsInput { + s.DryRun = &v + return s +} + +// SetResources sets the Resources field's value. +func (s *DeleteTagsInput) SetResources(v []*string) *DeleteTagsInput { + s.Resources = v + return s +} + +// SetTags sets the Tags field's value. +func (s *DeleteTagsInput) SetTags(v []*Tag) *DeleteTagsInput { + s.Tags = v + return s +} + +type DeleteTagsOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteTagsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteTagsOutput) GoString() string { + return s.String() +} + +type DeleteTrafficMirrorFilterInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the Traffic Mirror filter. + // + // TrafficMirrorFilterId is a required field + TrafficMirrorFilterId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteTrafficMirrorFilterInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteTrafficMirrorFilterInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteTrafficMirrorFilterInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteTrafficMirrorFilterInput"} + if s.TrafficMirrorFilterId == nil { + invalidParams.Add(request.NewErrParamRequired("TrafficMirrorFilterId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteTrafficMirrorFilterInput) SetDryRun(v bool) *DeleteTrafficMirrorFilterInput { + s.DryRun = &v + return s +} + +// SetTrafficMirrorFilterId sets the TrafficMirrorFilterId field's value. +func (s *DeleteTrafficMirrorFilterInput) SetTrafficMirrorFilterId(v string) *DeleteTrafficMirrorFilterInput { + s.TrafficMirrorFilterId = &v + return s +} + +type DeleteTrafficMirrorFilterOutput struct { + _ struct{} `type:"structure"` + + // The ID of the Traffic Mirror filter. + TrafficMirrorFilterId *string `locationName:"trafficMirrorFilterId" type:"string"` +} + +// String returns the string representation +func (s DeleteTrafficMirrorFilterOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteTrafficMirrorFilterOutput) GoString() string { + return s.String() +} + +// SetTrafficMirrorFilterId sets the TrafficMirrorFilterId field's value. +func (s *DeleteTrafficMirrorFilterOutput) SetTrafficMirrorFilterId(v string) *DeleteTrafficMirrorFilterOutput { + s.TrafficMirrorFilterId = &v + return s +} + +type DeleteTrafficMirrorFilterRuleInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the Traffic Mirror rule. + // + // TrafficMirrorFilterRuleId is a required field + TrafficMirrorFilterRuleId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteTrafficMirrorFilterRuleInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteTrafficMirrorFilterRuleInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteTrafficMirrorFilterRuleInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteTrafficMirrorFilterRuleInput"} + if s.TrafficMirrorFilterRuleId == nil { + invalidParams.Add(request.NewErrParamRequired("TrafficMirrorFilterRuleId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteTrafficMirrorFilterRuleInput) SetDryRun(v bool) *DeleteTrafficMirrorFilterRuleInput { + s.DryRun = &v + return s +} + +// SetTrafficMirrorFilterRuleId sets the TrafficMirrorFilterRuleId field's value. +func (s *DeleteTrafficMirrorFilterRuleInput) SetTrafficMirrorFilterRuleId(v string) *DeleteTrafficMirrorFilterRuleInput { + s.TrafficMirrorFilterRuleId = &v + return s +} + +type DeleteTrafficMirrorFilterRuleOutput struct { + _ struct{} `type:"structure"` + + // The ID of the deleted Traffic Mirror rule. + TrafficMirrorFilterRuleId *string `locationName:"trafficMirrorFilterRuleId" type:"string"` +} + +// String returns the string representation +func (s DeleteTrafficMirrorFilterRuleOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteTrafficMirrorFilterRuleOutput) GoString() string { + return s.String() +} + +// SetTrafficMirrorFilterRuleId sets the TrafficMirrorFilterRuleId field's value. +func (s *DeleteTrafficMirrorFilterRuleOutput) SetTrafficMirrorFilterRuleId(v string) *DeleteTrafficMirrorFilterRuleOutput { + s.TrafficMirrorFilterRuleId = &v + return s +} + +type DeleteTrafficMirrorSessionInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the Traffic Mirror session. + // + // TrafficMirrorSessionId is a required field + TrafficMirrorSessionId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteTrafficMirrorSessionInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteTrafficMirrorSessionInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteTrafficMirrorSessionInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteTrafficMirrorSessionInput"} + if s.TrafficMirrorSessionId == nil { + invalidParams.Add(request.NewErrParamRequired("TrafficMirrorSessionId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteTrafficMirrorSessionInput) SetDryRun(v bool) *DeleteTrafficMirrorSessionInput { + s.DryRun = &v + return s +} + +// SetTrafficMirrorSessionId sets the TrafficMirrorSessionId field's value. +func (s *DeleteTrafficMirrorSessionInput) SetTrafficMirrorSessionId(v string) *DeleteTrafficMirrorSessionInput { + s.TrafficMirrorSessionId = &v + return s +} + +type DeleteTrafficMirrorSessionOutput struct { + _ struct{} `type:"structure"` + + // The ID of the deleted Traffic Mirror session. + TrafficMirrorSessionId *string `locationName:"trafficMirrorSessionId" type:"string"` +} + +// String returns the string representation +func (s DeleteTrafficMirrorSessionOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteTrafficMirrorSessionOutput) GoString() string { + return s.String() +} + +// SetTrafficMirrorSessionId sets the TrafficMirrorSessionId field's value. +func (s *DeleteTrafficMirrorSessionOutput) SetTrafficMirrorSessionId(v string) *DeleteTrafficMirrorSessionOutput { + s.TrafficMirrorSessionId = &v + return s +} + +type DeleteTrafficMirrorTargetInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the Traffic Mirror target. + // + // TrafficMirrorTargetId is a required field + TrafficMirrorTargetId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteTrafficMirrorTargetInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteTrafficMirrorTargetInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteTrafficMirrorTargetInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteTrafficMirrorTargetInput"} + if s.TrafficMirrorTargetId == nil { + invalidParams.Add(request.NewErrParamRequired("TrafficMirrorTargetId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteTrafficMirrorTargetInput) SetDryRun(v bool) *DeleteTrafficMirrorTargetInput { + s.DryRun = &v + return s +} + +// SetTrafficMirrorTargetId sets the TrafficMirrorTargetId field's value. +func (s *DeleteTrafficMirrorTargetInput) SetTrafficMirrorTargetId(v string) *DeleteTrafficMirrorTargetInput { + s.TrafficMirrorTargetId = &v + return s +} + +type DeleteTrafficMirrorTargetOutput struct { + _ struct{} `type:"structure"` + + // The ID of the deleted Traffic Mirror target. + TrafficMirrorTargetId *string `locationName:"trafficMirrorTargetId" type:"string"` +} + +// String returns the string representation +func (s DeleteTrafficMirrorTargetOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteTrafficMirrorTargetOutput) GoString() string { + return s.String() +} + +// SetTrafficMirrorTargetId sets the TrafficMirrorTargetId field's value. +func (s *DeleteTrafficMirrorTargetOutput) SetTrafficMirrorTargetId(v string) *DeleteTrafficMirrorTargetOutput { + s.TrafficMirrorTargetId = &v + return s +} + +type DeleteTransitGatewayInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the transit gateway. + // + // TransitGatewayId is a required field + TransitGatewayId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteTransitGatewayInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteTransitGatewayInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteTransitGatewayInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteTransitGatewayInput"} + if s.TransitGatewayId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteTransitGatewayInput) SetDryRun(v bool) *DeleteTransitGatewayInput { + s.DryRun = &v + return s +} + +// SetTransitGatewayId sets the TransitGatewayId field's value. +func (s *DeleteTransitGatewayInput) SetTransitGatewayId(v string) *DeleteTransitGatewayInput { + s.TransitGatewayId = &v + return s +} + +type DeleteTransitGatewayOutput struct { + _ struct{} `type:"structure"` + + // Information about the deleted transit gateway. + TransitGateway *TransitGateway `locationName:"transitGateway" type:"structure"` +} + +// String returns the string representation +func (s DeleteTransitGatewayOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteTransitGatewayOutput) GoString() string { + return s.String() +} + +// SetTransitGateway sets the TransitGateway field's value. +func (s *DeleteTransitGatewayOutput) SetTransitGateway(v *TransitGateway) *DeleteTransitGatewayOutput { + s.TransitGateway = v + return s +} + +type DeleteTransitGatewayRouteInput struct { + _ struct{} `type:"structure"` + + // The CIDR range for the route. This must match the CIDR for the route exactly. + // + // DestinationCidrBlock is a required field + DestinationCidrBlock *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the transit gateway route table. + // + // TransitGatewayRouteTableId is a required field + TransitGatewayRouteTableId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteTransitGatewayRouteInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteTransitGatewayRouteInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteTransitGatewayRouteInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteTransitGatewayRouteInput"} + if s.DestinationCidrBlock == nil { + invalidParams.Add(request.NewErrParamRequired("DestinationCidrBlock")) + } + if s.TransitGatewayRouteTableId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayRouteTableId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDestinationCidrBlock sets the DestinationCidrBlock field's value. +func (s *DeleteTransitGatewayRouteInput) SetDestinationCidrBlock(v string) *DeleteTransitGatewayRouteInput { + s.DestinationCidrBlock = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteTransitGatewayRouteInput) SetDryRun(v bool) *DeleteTransitGatewayRouteInput { + s.DryRun = &v + return s +} + +// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value. +func (s *DeleteTransitGatewayRouteInput) SetTransitGatewayRouteTableId(v string) *DeleteTransitGatewayRouteInput { + s.TransitGatewayRouteTableId = &v + return s +} + +type DeleteTransitGatewayRouteOutput struct { + _ struct{} `type:"structure"` + + // Information about the route. + Route *TransitGatewayRoute `locationName:"route" type:"structure"` +} + +// String returns the string representation +func (s DeleteTransitGatewayRouteOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteTransitGatewayRouteOutput) GoString() string { + return s.String() +} + +// SetRoute sets the Route field's value. +func (s *DeleteTransitGatewayRouteOutput) SetRoute(v *TransitGatewayRoute) *DeleteTransitGatewayRouteOutput { + s.Route = v + return s +} + +type DeleteTransitGatewayRouteTableInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the transit gateway route table. + // + // TransitGatewayRouteTableId is a required field + TransitGatewayRouteTableId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteTransitGatewayRouteTableInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteTransitGatewayRouteTableInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteTransitGatewayRouteTableInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteTransitGatewayRouteTableInput"} + if s.TransitGatewayRouteTableId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayRouteTableId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteTransitGatewayRouteTableInput) SetDryRun(v bool) *DeleteTransitGatewayRouteTableInput { + s.DryRun = &v + return s +} + +// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value. +func (s *DeleteTransitGatewayRouteTableInput) SetTransitGatewayRouteTableId(v string) *DeleteTransitGatewayRouteTableInput { + s.TransitGatewayRouteTableId = &v + return s +} + +type DeleteTransitGatewayRouteTableOutput struct { + _ struct{} `type:"structure"` + + // Information about the deleted transit gateway route table. + TransitGatewayRouteTable *TransitGatewayRouteTable `locationName:"transitGatewayRouteTable" type:"structure"` +} + +// String returns the string representation +func (s DeleteTransitGatewayRouteTableOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteTransitGatewayRouteTableOutput) GoString() string { + return s.String() +} + +// SetTransitGatewayRouteTable sets the TransitGatewayRouteTable field's value. +func (s *DeleteTransitGatewayRouteTableOutput) SetTransitGatewayRouteTable(v *TransitGatewayRouteTable) *DeleteTransitGatewayRouteTableOutput { + s.TransitGatewayRouteTable = v + return s +} + +type DeleteTransitGatewayVpcAttachmentInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the attachment. + // + // TransitGatewayAttachmentId is a required field + TransitGatewayAttachmentId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteTransitGatewayVpcAttachmentInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteTransitGatewayVpcAttachmentInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteTransitGatewayVpcAttachmentInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteTransitGatewayVpcAttachmentInput"} + if s.TransitGatewayAttachmentId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayAttachmentId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteTransitGatewayVpcAttachmentInput) SetDryRun(v bool) *DeleteTransitGatewayVpcAttachmentInput { + s.DryRun = &v + return s +} + +// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value. +func (s *DeleteTransitGatewayVpcAttachmentInput) SetTransitGatewayAttachmentId(v string) *DeleteTransitGatewayVpcAttachmentInput { + s.TransitGatewayAttachmentId = &v + return s +} + +type DeleteTransitGatewayVpcAttachmentOutput struct { + _ struct{} `type:"structure"` + + // Information about the deleted VPC attachment. + TransitGatewayVpcAttachment *TransitGatewayVpcAttachment `locationName:"transitGatewayVpcAttachment" type:"structure"` +} + +// String returns the string representation +func (s DeleteTransitGatewayVpcAttachmentOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteTransitGatewayVpcAttachmentOutput) GoString() string { + return s.String() +} + +// SetTransitGatewayVpcAttachment sets the TransitGatewayVpcAttachment field's value. +func (s *DeleteTransitGatewayVpcAttachmentOutput) SetTransitGatewayVpcAttachment(v *TransitGatewayVpcAttachment) *DeleteTransitGatewayVpcAttachmentOutput { + s.TransitGatewayVpcAttachment = v + return s +} + +// Contains the parameters for DeleteVolume. +type DeleteVolumeInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the volume. + // + // VolumeId is a required field + VolumeId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteVolumeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteVolumeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteVolumeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteVolumeInput"} + if s.VolumeId == nil { + invalidParams.Add(request.NewErrParamRequired("VolumeId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteVolumeInput) SetDryRun(v bool) *DeleteVolumeInput { + s.DryRun = &v + return s +} + +// SetVolumeId sets the VolumeId field's value. +func (s *DeleteVolumeInput) SetVolumeId(v string) *DeleteVolumeInput { + s.VolumeId = &v + return s +} + +type DeleteVolumeOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteVolumeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteVolumeOutput) GoString() string { + return s.String() +} + +type DeleteVpcEndpointConnectionNotificationsInput struct { + _ struct{} `type:"structure"` + + // One or more notification IDs. + // + // ConnectionNotificationIds is a required field + ConnectionNotificationIds []*string `locationName:"ConnectionNotificationId" locationNameList:"item" type:"list" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s DeleteVpcEndpointConnectionNotificationsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteVpcEndpointConnectionNotificationsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteVpcEndpointConnectionNotificationsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteVpcEndpointConnectionNotificationsInput"} + if s.ConnectionNotificationIds == nil { + invalidParams.Add(request.NewErrParamRequired("ConnectionNotificationIds")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetConnectionNotificationIds sets the ConnectionNotificationIds field's value. +func (s *DeleteVpcEndpointConnectionNotificationsInput) SetConnectionNotificationIds(v []*string) *DeleteVpcEndpointConnectionNotificationsInput { + s.ConnectionNotificationIds = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteVpcEndpointConnectionNotificationsInput) SetDryRun(v bool) *DeleteVpcEndpointConnectionNotificationsInput { + s.DryRun = &v + return s +} + +type DeleteVpcEndpointConnectionNotificationsOutput struct { + _ struct{} `type:"structure"` + + // Information about the notifications that could not be deleted successfully. + Unsuccessful []*UnsuccessfulItem `locationName:"unsuccessful" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DeleteVpcEndpointConnectionNotificationsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteVpcEndpointConnectionNotificationsOutput) GoString() string { + return s.String() +} + +// SetUnsuccessful sets the Unsuccessful field's value. +func (s *DeleteVpcEndpointConnectionNotificationsOutput) SetUnsuccessful(v []*UnsuccessfulItem) *DeleteVpcEndpointConnectionNotificationsOutput { + s.Unsuccessful = v + return s +} + +type DeleteVpcEndpointServiceConfigurationsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The IDs of one or more services. + // + // ServiceIds is a required field + ServiceIds []*string `locationName:"ServiceId" locationNameList:"item" type:"list" required:"true"` +} + +// String returns the string representation +func (s DeleteVpcEndpointServiceConfigurationsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteVpcEndpointServiceConfigurationsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteVpcEndpointServiceConfigurationsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteVpcEndpointServiceConfigurationsInput"} + if s.ServiceIds == nil { + invalidParams.Add(request.NewErrParamRequired("ServiceIds")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteVpcEndpointServiceConfigurationsInput) SetDryRun(v bool) *DeleteVpcEndpointServiceConfigurationsInput { + s.DryRun = &v + return s +} + +// SetServiceIds sets the ServiceIds field's value. +func (s *DeleteVpcEndpointServiceConfigurationsInput) SetServiceIds(v []*string) *DeleteVpcEndpointServiceConfigurationsInput { + s.ServiceIds = v + return s +} + +type DeleteVpcEndpointServiceConfigurationsOutput struct { + _ struct{} `type:"structure"` + + // Information about the service configurations that were not deleted, if applicable. + Unsuccessful []*UnsuccessfulItem `locationName:"unsuccessful" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DeleteVpcEndpointServiceConfigurationsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteVpcEndpointServiceConfigurationsOutput) GoString() string { + return s.String() +} + +// SetUnsuccessful sets the Unsuccessful field's value. +func (s *DeleteVpcEndpointServiceConfigurationsOutput) SetUnsuccessful(v []*UnsuccessfulItem) *DeleteVpcEndpointServiceConfigurationsOutput { + s.Unsuccessful = v + return s +} + +// Contains the parameters for DeleteVpcEndpoints. +type DeleteVpcEndpointsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more VPC endpoint IDs. + // + // VpcEndpointIds is a required field + VpcEndpointIds []*string `locationName:"VpcEndpointId" locationNameList:"item" type:"list" required:"true"` +} + +// String returns the string representation +func (s DeleteVpcEndpointsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteVpcEndpointsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteVpcEndpointsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteVpcEndpointsInput"} + if s.VpcEndpointIds == nil { + invalidParams.Add(request.NewErrParamRequired("VpcEndpointIds")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteVpcEndpointsInput) SetDryRun(v bool) *DeleteVpcEndpointsInput { + s.DryRun = &v + return s +} + +// SetVpcEndpointIds sets the VpcEndpointIds field's value. +func (s *DeleteVpcEndpointsInput) SetVpcEndpointIds(v []*string) *DeleteVpcEndpointsInput { + s.VpcEndpointIds = v + return s +} + +// Contains the output of DeleteVpcEndpoints. +type DeleteVpcEndpointsOutput struct { + _ struct{} `type:"structure"` + + // Information about the VPC endpoints that were not successfully deleted. + Unsuccessful []*UnsuccessfulItem `locationName:"unsuccessful" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DeleteVpcEndpointsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteVpcEndpointsOutput) GoString() string { + return s.String() +} + +// SetUnsuccessful sets the Unsuccessful field's value. +func (s *DeleteVpcEndpointsOutput) SetUnsuccessful(v []*UnsuccessfulItem) *DeleteVpcEndpointsOutput { + s.Unsuccessful = v + return s +} + +type DeleteVpcInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the VPC. + // + // VpcId is a required field + VpcId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteVpcInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteVpcInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteVpcInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteVpcInput"} + if s.VpcId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteVpcInput) SetDryRun(v bool) *DeleteVpcInput { + s.DryRun = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *DeleteVpcInput) SetVpcId(v string) *DeleteVpcInput { + s.VpcId = &v + return s +} + +type DeleteVpcOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteVpcOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteVpcOutput) GoString() string { + return s.String() +} + +type DeleteVpcPeeringConnectionInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the VPC peering connection. + // + // VpcPeeringConnectionId is a required field + VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteVpcPeeringConnectionInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteVpcPeeringConnectionInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteVpcPeeringConnectionInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteVpcPeeringConnectionInput"} + if s.VpcPeeringConnectionId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcPeeringConnectionId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteVpcPeeringConnectionInput) SetDryRun(v bool) *DeleteVpcPeeringConnectionInput { + s.DryRun = &v + return s +} + +// SetVpcPeeringConnectionId sets the VpcPeeringConnectionId field's value. +func (s *DeleteVpcPeeringConnectionInput) SetVpcPeeringConnectionId(v string) *DeleteVpcPeeringConnectionInput { + s.VpcPeeringConnectionId = &v + return s +} + +type DeleteVpcPeeringConnectionOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, it returns an error. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s DeleteVpcPeeringConnectionOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteVpcPeeringConnectionOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *DeleteVpcPeeringConnectionOutput) SetReturn(v bool) *DeleteVpcPeeringConnectionOutput { + s.Return = &v + return s +} + +// Contains the parameters for DeleteVpnConnection. +type DeleteVpnConnectionInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the VPN connection. + // + // VpnConnectionId is a required field + VpnConnectionId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteVpnConnectionInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteVpnConnectionInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteVpnConnectionInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteVpnConnectionInput"} + if s.VpnConnectionId == nil { + invalidParams.Add(request.NewErrParamRequired("VpnConnectionId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteVpnConnectionInput) SetDryRun(v bool) *DeleteVpnConnectionInput { + s.DryRun = &v + return s +} + +// SetVpnConnectionId sets the VpnConnectionId field's value. +func (s *DeleteVpnConnectionInput) SetVpnConnectionId(v string) *DeleteVpnConnectionInput { + s.VpnConnectionId = &v + return s +} + +type DeleteVpnConnectionOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteVpnConnectionOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteVpnConnectionOutput) GoString() string { + return s.String() +} + +// Contains the parameters for DeleteVpnConnectionRoute. +type DeleteVpnConnectionRouteInput struct { + _ struct{} `type:"structure"` + + // The CIDR block associated with the local subnet of the customer network. + // + // DestinationCidrBlock is a required field + DestinationCidrBlock *string `type:"string" required:"true"` + + // The ID of the VPN connection. + // + // VpnConnectionId is a required field + VpnConnectionId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteVpnConnectionRouteInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteVpnConnectionRouteInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteVpnConnectionRouteInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteVpnConnectionRouteInput"} + if s.DestinationCidrBlock == nil { + invalidParams.Add(request.NewErrParamRequired("DestinationCidrBlock")) + } + if s.VpnConnectionId == nil { + invalidParams.Add(request.NewErrParamRequired("VpnConnectionId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDestinationCidrBlock sets the DestinationCidrBlock field's value. +func (s *DeleteVpnConnectionRouteInput) SetDestinationCidrBlock(v string) *DeleteVpnConnectionRouteInput { + s.DestinationCidrBlock = &v + return s +} + +// SetVpnConnectionId sets the VpnConnectionId field's value. +func (s *DeleteVpnConnectionRouteInput) SetVpnConnectionId(v string) *DeleteVpnConnectionRouteInput { + s.VpnConnectionId = &v + return s +} + +type DeleteVpnConnectionRouteOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteVpnConnectionRouteOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteVpnConnectionRouteOutput) GoString() string { + return s.String() +} + +// Contains the parameters for DeleteVpnGateway. +type DeleteVpnGatewayInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the virtual private gateway. + // + // VpnGatewayId is a required field + VpnGatewayId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteVpnGatewayInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteVpnGatewayInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteVpnGatewayInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteVpnGatewayInput"} + if s.VpnGatewayId == nil { + invalidParams.Add(request.NewErrParamRequired("VpnGatewayId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteVpnGatewayInput) SetDryRun(v bool) *DeleteVpnGatewayInput { + s.DryRun = &v + return s +} + +// SetVpnGatewayId sets the VpnGatewayId field's value. +func (s *DeleteVpnGatewayInput) SetVpnGatewayId(v string) *DeleteVpnGatewayInput { + s.VpnGatewayId = &v + return s +} + +type DeleteVpnGatewayOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteVpnGatewayOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteVpnGatewayOutput) GoString() string { + return s.String() +} + +type DeprovisionByoipCidrInput struct { + _ struct{} `type:"structure"` + + // The public IPv4 address range, in CIDR notation. The prefix must be the same + // prefix that you specified when you provisioned the address range. + // + // Cidr is a required field + Cidr *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s DeprovisionByoipCidrInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeprovisionByoipCidrInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeprovisionByoipCidrInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeprovisionByoipCidrInput"} + if s.Cidr == nil { + invalidParams.Add(request.NewErrParamRequired("Cidr")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCidr sets the Cidr field's value. +func (s *DeprovisionByoipCidrInput) SetCidr(v string) *DeprovisionByoipCidrInput { + s.Cidr = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DeprovisionByoipCidrInput) SetDryRun(v bool) *DeprovisionByoipCidrInput { + s.DryRun = &v + return s +} + +type DeprovisionByoipCidrOutput struct { + _ struct{} `type:"structure"` + + // Information about the address range. + ByoipCidr *ByoipCidr `locationName:"byoipCidr" type:"structure"` +} + +// String returns the string representation +func (s DeprovisionByoipCidrOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeprovisionByoipCidrOutput) GoString() string { + return s.String() +} + +// SetByoipCidr sets the ByoipCidr field's value. +func (s *DeprovisionByoipCidrOutput) SetByoipCidr(v *ByoipCidr) *DeprovisionByoipCidrOutput { + s.ByoipCidr = v + return s +} + +// Contains the parameters for DeregisterImage. +type DeregisterImageInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the AMI. + // + // ImageId is a required field + ImageId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DeregisterImageInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeregisterImageInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeregisterImageInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeregisterImageInput"} + if s.ImageId == nil { + invalidParams.Add(request.NewErrParamRequired("ImageId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeregisterImageInput) SetDryRun(v bool) *DeregisterImageInput { + s.DryRun = &v + return s +} + +// SetImageId sets the ImageId field's value. +func (s *DeregisterImageInput) SetImageId(v string) *DeregisterImageInput { + s.ImageId = &v + return s +} + +type DeregisterImageOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeregisterImageOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeregisterImageOutput) GoString() string { + return s.String() +} + +type DescribeAccountAttributesInput struct { + _ struct{} `type:"structure"` + + // The account attribute names. + AttributeNames []*string `locationName:"attributeName" locationNameList:"attributeName" type:"list"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` +} + +// String returns the string representation +func (s DescribeAccountAttributesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeAccountAttributesInput) GoString() string { + return s.String() +} + +// SetAttributeNames sets the AttributeNames field's value. +func (s *DescribeAccountAttributesInput) SetAttributeNames(v []*string) *DescribeAccountAttributesInput { + s.AttributeNames = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeAccountAttributesInput) SetDryRun(v bool) *DescribeAccountAttributesInput { + s.DryRun = &v + return s +} + +type DescribeAccountAttributesOutput struct { + _ struct{} `type:"structure"` + + // Information about the account attributes. + AccountAttributes []*AccountAttribute `locationName:"accountAttributeSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeAccountAttributesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeAccountAttributesOutput) GoString() string { + return s.String() +} + +// SetAccountAttributes sets the AccountAttributes field's value. +func (s *DescribeAccountAttributesOutput) SetAccountAttributes(v []*AccountAttribute) *DescribeAccountAttributesOutput { + s.AccountAttributes = v + return s +} + +type DescribeAddressesInput struct { + _ struct{} `type:"structure"` + + // [EC2-VPC] Information about the allocation IDs. + AllocationIds []*string `locationName:"AllocationId" locationNameList:"AllocationId" type:"list"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // One or more filters. Filter names and values are case-sensitive. + // + // * allocation-id - [EC2-VPC] The allocation ID for the address. + // + // * association-id - [EC2-VPC] The association ID for the address. + // + // * domain - Indicates whether the address is for use in EC2-Classic (standard) + // or in a VPC (vpc). + // + // * instance-id - The ID of the instance the address is associated with, + // if any. + // + // * network-interface-id - [EC2-VPC] The ID of the network interface that + // the address is associated with, if any. + // + // * network-interface-owner-id - The AWS account ID of the owner. + // + // * private-ip-address - [EC2-VPC] The private IP address associated with + // the Elastic IP address. + // + // * public-ip - The Elastic IP address. + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // One or more Elastic IP addresses. + // + // Default: Describes all your Elastic IP addresses. + PublicIps []*string `locationName:"PublicIp" locationNameList:"PublicIp" type:"list"` +} + +// String returns the string representation +func (s DescribeAddressesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeAddressesInput) GoString() string { + return s.String() +} + +// SetAllocationIds sets the AllocationIds field's value. +func (s *DescribeAddressesInput) SetAllocationIds(v []*string) *DescribeAddressesInput { + s.AllocationIds = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeAddressesInput) SetDryRun(v bool) *DescribeAddressesInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeAddressesInput) SetFilters(v []*Filter) *DescribeAddressesInput { + s.Filters = v + return s +} + +// SetPublicIps sets the PublicIps field's value. +func (s *DescribeAddressesInput) SetPublicIps(v []*string) *DescribeAddressesInput { + s.PublicIps = v + return s +} + +type DescribeAddressesOutput struct { + _ struct{} `type:"structure"` + + // Information about the Elastic IP addresses. + Addresses []*Address `locationName:"addressesSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeAddressesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeAddressesOutput) GoString() string { + return s.String() +} + +// SetAddresses sets the Addresses field's value. +func (s *DescribeAddressesOutput) SetAddresses(v []*Address) *DescribeAddressesOutput { + s.Addresses = v + return s +} + +type DescribeAggregateIdFormatInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s DescribeAggregateIdFormatInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeAggregateIdFormatInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeAggregateIdFormatInput) SetDryRun(v bool) *DescribeAggregateIdFormatInput { + s.DryRun = &v + return s +} + +type DescribeAggregateIdFormatOutput struct { + _ struct{} `type:"structure"` + + // Information about each resource's ID format. + Statuses []*IdFormat `locationName:"statusSet" locationNameList:"item" type:"list"` + + // Indicates whether all resource types in the Region are configured to use + // longer IDs. This value is only true if all users are configured to use longer + // IDs for all resources types in the Region. + UseLongIdsAggregated *bool `locationName:"useLongIdsAggregated" type:"boolean"` +} + +// String returns the string representation +func (s DescribeAggregateIdFormatOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeAggregateIdFormatOutput) GoString() string { + return s.String() +} + +// SetStatuses sets the Statuses field's value. +func (s *DescribeAggregateIdFormatOutput) SetStatuses(v []*IdFormat) *DescribeAggregateIdFormatOutput { + s.Statuses = v + return s +} + +// SetUseLongIdsAggregated sets the UseLongIdsAggregated field's value. +func (s *DescribeAggregateIdFormatOutput) SetUseLongIdsAggregated(v bool) *DescribeAggregateIdFormatOutput { + s.UseLongIdsAggregated = &v + return s +} + +type DescribeAvailabilityZonesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The filters. + // + // * message - Information about the Availability Zone. + // + // * region-name - The name of the Region for the Availability Zone (for + // example, us-east-1). + // + // * state - The state of the Availability Zone (available | information + // | impaired | unavailable). + // + // * zone-id - The ID of the Availability Zone (for example, use1-az1). + // + // * zone-name - The name of the Availability Zone (for example, us-east-1a). + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The IDs of the Availability Zones. + ZoneIds []*string `locationName:"ZoneId" locationNameList:"ZoneId" type:"list"` + + // The names of the Availability Zones. + ZoneNames []*string `locationName:"ZoneName" locationNameList:"ZoneName" type:"list"` +} + +// String returns the string representation +func (s DescribeAvailabilityZonesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeAvailabilityZonesInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeAvailabilityZonesInput) SetDryRun(v bool) *DescribeAvailabilityZonesInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeAvailabilityZonesInput) SetFilters(v []*Filter) *DescribeAvailabilityZonesInput { + s.Filters = v + return s +} + +// SetZoneIds sets the ZoneIds field's value. +func (s *DescribeAvailabilityZonesInput) SetZoneIds(v []*string) *DescribeAvailabilityZonesInput { + s.ZoneIds = v + return s +} + +// SetZoneNames sets the ZoneNames field's value. +func (s *DescribeAvailabilityZonesInput) SetZoneNames(v []*string) *DescribeAvailabilityZonesInput { + s.ZoneNames = v + return s +} + +type DescribeAvailabilityZonesOutput struct { + _ struct{} `type:"structure"` + + // Information about the Availability Zones. + AvailabilityZones []*AvailabilityZone `locationName:"availabilityZoneInfo" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeAvailabilityZonesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeAvailabilityZonesOutput) GoString() string { + return s.String() +} + +// SetAvailabilityZones sets the AvailabilityZones field's value. +func (s *DescribeAvailabilityZonesOutput) SetAvailabilityZones(v []*AvailabilityZone) *DescribeAvailabilityZonesOutput { + s.AvailabilityZones = v + return s +} + +type DescribeBundleTasksInput struct { + _ struct{} `type:"structure"` + + // The bundle task IDs. + // + // Default: Describes all your bundle tasks. + BundleIds []*string `locationName:"BundleId" locationNameList:"BundleId" type:"list"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The filters. + // + // * bundle-id - The ID of the bundle task. + // + // * error-code - If the task failed, the error code returned. + // + // * error-message - If the task failed, the error message returned. + // + // * instance-id - The ID of the instance. + // + // * progress - The level of task completion, as a percentage (for example, + // 20%). + // + // * s3-bucket - The Amazon S3 bucket to store the AMI. + // + // * s3-prefix - The beginning of the AMI name. + // + // * start-time - The time the task started (for example, 2013-09-15T17:15:20.000Z). + // + // * state - The state of the task (pending | waiting-for-shutdown | bundling + // | storing | cancelling | complete | failed). + // + // * update-time - The time of the most recent update for the task. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` +} + +// String returns the string representation +func (s DescribeBundleTasksInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeBundleTasksInput) GoString() string { + return s.String() +} + +// SetBundleIds sets the BundleIds field's value. +func (s *DescribeBundleTasksInput) SetBundleIds(v []*string) *DescribeBundleTasksInput { + s.BundleIds = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeBundleTasksInput) SetDryRun(v bool) *DescribeBundleTasksInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeBundleTasksInput) SetFilters(v []*Filter) *DescribeBundleTasksInput { + s.Filters = v + return s +} + +type DescribeBundleTasksOutput struct { + _ struct{} `type:"structure"` + + // Information about the bundle tasks. + BundleTasks []*BundleTask `locationName:"bundleInstanceTasksSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeBundleTasksOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeBundleTasksOutput) GoString() string { + return s.String() +} + +// SetBundleTasks sets the BundleTasks field's value. +func (s *DescribeBundleTasksOutput) SetBundleTasks(v []*BundleTask) *DescribeBundleTasksOutput { + s.BundleTasks = v + return s +} + +type DescribeByoipCidrsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + // + // MaxResults is a required field + MaxResults *int64 `min:"1" type:"integer" required:"true"` + + // The token for the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeByoipCidrsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeByoipCidrsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeByoipCidrsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeByoipCidrsInput"} + if s.MaxResults == nil { + invalidParams.Add(request.NewErrParamRequired("MaxResults")) + } + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeByoipCidrsInput) SetDryRun(v bool) *DescribeByoipCidrsInput { + s.DryRun = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeByoipCidrsInput) SetMaxResults(v int64) *DescribeByoipCidrsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeByoipCidrsInput) SetNextToken(v string) *DescribeByoipCidrsInput { + s.NextToken = &v + return s +} + +type DescribeByoipCidrsOutput struct { + _ struct{} `type:"structure"` + + // Information about your address ranges. + ByoipCidrs []*ByoipCidr `locationName:"byoipCidrSet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeByoipCidrsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeByoipCidrsOutput) GoString() string { + return s.String() +} + +// SetByoipCidrs sets the ByoipCidrs field's value. +func (s *DescribeByoipCidrsOutput) SetByoipCidrs(v []*ByoipCidr) *DescribeByoipCidrsOutput { + s.ByoipCidrs = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeByoipCidrsOutput) SetNextToken(v string) *DescribeByoipCidrsOutput { + s.NextToken = &v + return s +} + +type DescribeCapacityReservationsInput struct { + _ struct{} `type:"structure"` + + // The ID of the Capacity Reservation. + CapacityReservationIds []*string `locationName:"CapacityReservationId" locationNameList:"item" type:"list"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return for the request in a single page. + // The remaining results can be seen by sending another request with the returned + // nextToken value. + MaxResults *int64 `min:"1" type:"integer"` + + // The token to retrieve the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeCapacityReservationsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeCapacityReservationsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeCapacityReservationsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeCapacityReservationsInput"} + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCapacityReservationIds sets the CapacityReservationIds field's value. +func (s *DescribeCapacityReservationsInput) SetCapacityReservationIds(v []*string) *DescribeCapacityReservationsInput { + s.CapacityReservationIds = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeCapacityReservationsInput) SetDryRun(v bool) *DescribeCapacityReservationsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeCapacityReservationsInput) SetFilters(v []*Filter) *DescribeCapacityReservationsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeCapacityReservationsInput) SetMaxResults(v int64) *DescribeCapacityReservationsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeCapacityReservationsInput) SetNextToken(v string) *DescribeCapacityReservationsInput { + s.NextToken = &v + return s +} + +type DescribeCapacityReservationsOutput struct { + _ struct{} `type:"structure"` + + // Information about the Capacity Reservations. + CapacityReservations []*CapacityReservation `locationName:"capacityReservationSet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeCapacityReservationsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeCapacityReservationsOutput) GoString() string { + return s.String() +} + +// SetCapacityReservations sets the CapacityReservations field's value. +func (s *DescribeCapacityReservationsOutput) SetCapacityReservations(v []*CapacityReservation) *DescribeCapacityReservationsOutput { + s.CapacityReservations = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeCapacityReservationsOutput) SetNextToken(v string) *DescribeCapacityReservationsOutput { + s.NextToken = &v + return s +} + +type DescribeClassicLinkInstancesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // One or more filters. + // + // * group-id - The ID of a VPC security group that's associated with the + // instance. + // + // * instance-id - The ID of the instance. + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + // + // * vpc-id - The ID of the VPC to which the instance is linked. vpc-id - + // The ID of the VPC that the instance is linked to. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // One or more instance IDs. Must be instances linked to a VPC through ClassicLink. + InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + // + // Constraint: If the value is greater than 1000, we return only 1000 items. + MaxResults *int64 `locationName:"maxResults" min:"5" type:"integer"` + + // The token for the next page of results. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeClassicLinkInstancesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeClassicLinkInstancesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeClassicLinkInstancesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeClassicLinkInstancesInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeClassicLinkInstancesInput) SetDryRun(v bool) *DescribeClassicLinkInstancesInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeClassicLinkInstancesInput) SetFilters(v []*Filter) *DescribeClassicLinkInstancesInput { + s.Filters = v + return s +} + +// SetInstanceIds sets the InstanceIds field's value. +func (s *DescribeClassicLinkInstancesInput) SetInstanceIds(v []*string) *DescribeClassicLinkInstancesInput { + s.InstanceIds = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeClassicLinkInstancesInput) SetMaxResults(v int64) *DescribeClassicLinkInstancesInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeClassicLinkInstancesInput) SetNextToken(v string) *DescribeClassicLinkInstancesInput { + s.NextToken = &v + return s +} + +type DescribeClassicLinkInstancesOutput struct { + _ struct{} `type:"structure"` + + // Information about one or more linked EC2-Classic instances. + Instances []*ClassicLinkInstance `locationName:"instancesSet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeClassicLinkInstancesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeClassicLinkInstancesOutput) GoString() string { + return s.String() +} + +// SetInstances sets the Instances field's value. +func (s *DescribeClassicLinkInstancesOutput) SetInstances(v []*ClassicLinkInstance) *DescribeClassicLinkInstancesOutput { + s.Instances = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeClassicLinkInstancesOutput) SetNextToken(v string) *DescribeClassicLinkInstancesOutput { + s.NextToken = &v + return s +} + +type DescribeClientVpnAuthorizationRulesInput struct { + _ struct{} `type:"structure"` + + // The ID of the Client VPN endpoint. + // + // ClientVpnEndpointId is a required field + ClientVpnEndpointId *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. Filter names and values are case-sensitive. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return for the request in a single page. + // The remaining results can be seen by sending another request with the nextToken + // value. + MaxResults *int64 `min:"5" type:"integer"` + + // The token to retrieve the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeClientVpnAuthorizationRulesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeClientVpnAuthorizationRulesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeClientVpnAuthorizationRulesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeClientVpnAuthorizationRulesInput"} + if s.ClientVpnEndpointId == nil { + invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId")) + } + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value. +func (s *DescribeClientVpnAuthorizationRulesInput) SetClientVpnEndpointId(v string) *DescribeClientVpnAuthorizationRulesInput { + s.ClientVpnEndpointId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeClientVpnAuthorizationRulesInput) SetDryRun(v bool) *DescribeClientVpnAuthorizationRulesInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeClientVpnAuthorizationRulesInput) SetFilters(v []*Filter) *DescribeClientVpnAuthorizationRulesInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeClientVpnAuthorizationRulesInput) SetMaxResults(v int64) *DescribeClientVpnAuthorizationRulesInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeClientVpnAuthorizationRulesInput) SetNextToken(v string) *DescribeClientVpnAuthorizationRulesInput { + s.NextToken = &v + return s +} + +type DescribeClientVpnAuthorizationRulesOutput struct { + _ struct{} `type:"structure"` + + // Information about the authorization rules. + AuthorizationRules []*AuthorizationRule `locationName:"authorizationRule" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeClientVpnAuthorizationRulesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeClientVpnAuthorizationRulesOutput) GoString() string { + return s.String() +} + +// SetAuthorizationRules sets the AuthorizationRules field's value. +func (s *DescribeClientVpnAuthorizationRulesOutput) SetAuthorizationRules(v []*AuthorizationRule) *DescribeClientVpnAuthorizationRulesOutput { + s.AuthorizationRules = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeClientVpnAuthorizationRulesOutput) SetNextToken(v string) *DescribeClientVpnAuthorizationRulesOutput { + s.NextToken = &v + return s +} + +type DescribeClientVpnConnectionsInput struct { + _ struct{} `type:"structure"` + + // The ID of the Client VPN endpoint. + // + // ClientVpnEndpointId is a required field + ClientVpnEndpointId *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. Filter names and values are case-sensitive. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return for the request in a single page. + // The remaining results can be seen by sending another request with the nextToken + // value. + MaxResults *int64 `min:"5" type:"integer"` + + // The token to retrieve the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeClientVpnConnectionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeClientVpnConnectionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeClientVpnConnectionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeClientVpnConnectionsInput"} + if s.ClientVpnEndpointId == nil { + invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId")) + } + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value. +func (s *DescribeClientVpnConnectionsInput) SetClientVpnEndpointId(v string) *DescribeClientVpnConnectionsInput { + s.ClientVpnEndpointId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeClientVpnConnectionsInput) SetDryRun(v bool) *DescribeClientVpnConnectionsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeClientVpnConnectionsInput) SetFilters(v []*Filter) *DescribeClientVpnConnectionsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeClientVpnConnectionsInput) SetMaxResults(v int64) *DescribeClientVpnConnectionsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeClientVpnConnectionsInput) SetNextToken(v string) *DescribeClientVpnConnectionsInput { + s.NextToken = &v + return s +} + +type DescribeClientVpnConnectionsOutput struct { + _ struct{} `type:"structure"` + + // Information about the active and terminated client connections. + Connections []*ClientVpnConnection `locationName:"connections" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeClientVpnConnectionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeClientVpnConnectionsOutput) GoString() string { + return s.String() +} + +// SetConnections sets the Connections field's value. +func (s *DescribeClientVpnConnectionsOutput) SetConnections(v []*ClientVpnConnection) *DescribeClientVpnConnectionsOutput { + s.Connections = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeClientVpnConnectionsOutput) SetNextToken(v string) *DescribeClientVpnConnectionsOutput { + s.NextToken = &v + return s +} + +type DescribeClientVpnEndpointsInput struct { + _ struct{} `type:"structure"` + + // The ID of the Client VPN endpoint. + ClientVpnEndpointIds []*string `locationName:"ClientVpnEndpointId" locationNameList:"item" type:"list"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. Filter names and values are case-sensitive. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return for the request in a single page. + // The remaining results can be seen by sending another request with the nextToken + // value. + MaxResults *int64 `min:"5" type:"integer"` + + // The token to retrieve the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeClientVpnEndpointsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeClientVpnEndpointsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeClientVpnEndpointsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeClientVpnEndpointsInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientVpnEndpointIds sets the ClientVpnEndpointIds field's value. +func (s *DescribeClientVpnEndpointsInput) SetClientVpnEndpointIds(v []*string) *DescribeClientVpnEndpointsInput { + s.ClientVpnEndpointIds = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeClientVpnEndpointsInput) SetDryRun(v bool) *DescribeClientVpnEndpointsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeClientVpnEndpointsInput) SetFilters(v []*Filter) *DescribeClientVpnEndpointsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeClientVpnEndpointsInput) SetMaxResults(v int64) *DescribeClientVpnEndpointsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeClientVpnEndpointsInput) SetNextToken(v string) *DescribeClientVpnEndpointsInput { + s.NextToken = &v + return s +} + +type DescribeClientVpnEndpointsOutput struct { + _ struct{} `type:"structure"` + + // Information about the Client VPN endpoints. + ClientVpnEndpoints []*ClientVpnEndpoint `locationName:"clientVpnEndpoint" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeClientVpnEndpointsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeClientVpnEndpointsOutput) GoString() string { + return s.String() +} + +// SetClientVpnEndpoints sets the ClientVpnEndpoints field's value. +func (s *DescribeClientVpnEndpointsOutput) SetClientVpnEndpoints(v []*ClientVpnEndpoint) *DescribeClientVpnEndpointsOutput { + s.ClientVpnEndpoints = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeClientVpnEndpointsOutput) SetNextToken(v string) *DescribeClientVpnEndpointsOutput { + s.NextToken = &v + return s +} + +type DescribeClientVpnRoutesInput struct { + _ struct{} `type:"structure"` + + // The ID of the Client VPN endpoint. + // + // ClientVpnEndpointId is a required field + ClientVpnEndpointId *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. Filter names and values are case-sensitive. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return for the request in a single page. + // The remaining results can be seen by sending another request with the nextToken + // value. + MaxResults *int64 `min:"5" type:"integer"` + + // The token to retrieve the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeClientVpnRoutesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeClientVpnRoutesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeClientVpnRoutesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeClientVpnRoutesInput"} + if s.ClientVpnEndpointId == nil { + invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId")) + } + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value. +func (s *DescribeClientVpnRoutesInput) SetClientVpnEndpointId(v string) *DescribeClientVpnRoutesInput { + s.ClientVpnEndpointId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeClientVpnRoutesInput) SetDryRun(v bool) *DescribeClientVpnRoutesInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeClientVpnRoutesInput) SetFilters(v []*Filter) *DescribeClientVpnRoutesInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeClientVpnRoutesInput) SetMaxResults(v int64) *DescribeClientVpnRoutesInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeClientVpnRoutesInput) SetNextToken(v string) *DescribeClientVpnRoutesInput { + s.NextToken = &v + return s +} + +type DescribeClientVpnRoutesOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the Client VPN endpoint routes. + Routes []*ClientVpnRoute `locationName:"routes" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeClientVpnRoutesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeClientVpnRoutesOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeClientVpnRoutesOutput) SetNextToken(v string) *DescribeClientVpnRoutesOutput { + s.NextToken = &v + return s +} + +// SetRoutes sets the Routes field's value. +func (s *DescribeClientVpnRoutesOutput) SetRoutes(v []*ClientVpnRoute) *DescribeClientVpnRoutesOutput { + s.Routes = v + return s +} + +type DescribeClientVpnTargetNetworksInput struct { + _ struct{} `type:"structure"` + + // The IDs of the target network associations. + AssociationIds []*string `locationNameList:"item" type:"list"` + + // The ID of the Client VPN endpoint. + // + // ClientVpnEndpointId is a required field + ClientVpnEndpointId *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. Filter names and values are case-sensitive. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return for the request in a single page. + // The remaining results can be seen by sending another request with the nextToken + // value. + MaxResults *int64 `min:"5" type:"integer"` + + // The token to retrieve the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeClientVpnTargetNetworksInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeClientVpnTargetNetworksInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeClientVpnTargetNetworksInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeClientVpnTargetNetworksInput"} + if s.ClientVpnEndpointId == nil { + invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId")) + } + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAssociationIds sets the AssociationIds field's value. +func (s *DescribeClientVpnTargetNetworksInput) SetAssociationIds(v []*string) *DescribeClientVpnTargetNetworksInput { + s.AssociationIds = v + return s +} + +// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value. +func (s *DescribeClientVpnTargetNetworksInput) SetClientVpnEndpointId(v string) *DescribeClientVpnTargetNetworksInput { + s.ClientVpnEndpointId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeClientVpnTargetNetworksInput) SetDryRun(v bool) *DescribeClientVpnTargetNetworksInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeClientVpnTargetNetworksInput) SetFilters(v []*Filter) *DescribeClientVpnTargetNetworksInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeClientVpnTargetNetworksInput) SetMaxResults(v int64) *DescribeClientVpnTargetNetworksInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeClientVpnTargetNetworksInput) SetNextToken(v string) *DescribeClientVpnTargetNetworksInput { + s.NextToken = &v + return s +} + +type DescribeClientVpnTargetNetworksOutput struct { + _ struct{} `type:"structure"` + + // Information about the associated target networks. + ClientVpnTargetNetworks []*TargetNetwork `locationName:"clientVpnTargetNetworks" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeClientVpnTargetNetworksOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeClientVpnTargetNetworksOutput) GoString() string { + return s.String() +} + +// SetClientVpnTargetNetworks sets the ClientVpnTargetNetworks field's value. +func (s *DescribeClientVpnTargetNetworksOutput) SetClientVpnTargetNetworks(v []*TargetNetwork) *DescribeClientVpnTargetNetworksOutput { + s.ClientVpnTargetNetworks = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeClientVpnTargetNetworksOutput) SetNextToken(v string) *DescribeClientVpnTargetNetworksOutput { + s.NextToken = &v + return s +} + +type DescribeConversionTasksInput struct { + _ struct{} `type:"structure"` + + // The conversion task IDs. + ConversionTaskIds []*string `locationName:"conversionTaskId" locationNameList:"item" type:"list"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` +} + +// String returns the string representation +func (s DescribeConversionTasksInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeConversionTasksInput) GoString() string { + return s.String() +} + +// SetConversionTaskIds sets the ConversionTaskIds field's value. +func (s *DescribeConversionTasksInput) SetConversionTaskIds(v []*string) *DescribeConversionTasksInput { + s.ConversionTaskIds = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeConversionTasksInput) SetDryRun(v bool) *DescribeConversionTasksInput { + s.DryRun = &v + return s +} + +type DescribeConversionTasksOutput struct { + _ struct{} `type:"structure"` + + // Information about the conversion tasks. + ConversionTasks []*ConversionTask `locationName:"conversionTasks" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeConversionTasksOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeConversionTasksOutput) GoString() string { + return s.String() +} + +// SetConversionTasks sets the ConversionTasks field's value. +func (s *DescribeConversionTasksOutput) SetConversionTasks(v []*ConversionTask) *DescribeConversionTasksOutput { + s.ConversionTasks = v + return s +} + +// Contains the parameters for DescribeCustomerGateways. +type DescribeCustomerGatewaysInput struct { + _ struct{} `type:"structure"` + + // One or more customer gateway IDs. + // + // Default: Describes all your customer gateways. + CustomerGatewayIds []*string `locationName:"CustomerGatewayId" locationNameList:"CustomerGatewayId" type:"list"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // One or more filters. + // + // * bgp-asn - The customer gateway's Border Gateway Protocol (BGP) Autonomous + // System Number (ASN). + // + // * customer-gateway-id - The ID of the customer gateway. + // + // * ip-address - The IP address of the customer gateway's Internet-routable + // external interface. + // + // * state - The state of the customer gateway (pending | available | deleting + // | deleted). + // + // * type - The type of customer gateway. Currently, the only supported type + // is ipsec.1. + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` +} + +// String returns the string representation +func (s DescribeCustomerGatewaysInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeCustomerGatewaysInput) GoString() string { + return s.String() +} + +// SetCustomerGatewayIds sets the CustomerGatewayIds field's value. +func (s *DescribeCustomerGatewaysInput) SetCustomerGatewayIds(v []*string) *DescribeCustomerGatewaysInput { + s.CustomerGatewayIds = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeCustomerGatewaysInput) SetDryRun(v bool) *DescribeCustomerGatewaysInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeCustomerGatewaysInput) SetFilters(v []*Filter) *DescribeCustomerGatewaysInput { + s.Filters = v + return s +} + +// Contains the output of DescribeCustomerGateways. +type DescribeCustomerGatewaysOutput struct { + _ struct{} `type:"structure"` + + // Information about one or more customer gateways. + CustomerGateways []*CustomerGateway `locationName:"customerGatewaySet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeCustomerGatewaysOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeCustomerGatewaysOutput) GoString() string { + return s.String() +} + +// SetCustomerGateways sets the CustomerGateways field's value. +func (s *DescribeCustomerGatewaysOutput) SetCustomerGateways(v []*CustomerGateway) *DescribeCustomerGatewaysOutput { + s.CustomerGateways = v + return s +} + +type DescribeDhcpOptionsInput struct { + _ struct{} `type:"structure"` + + // The IDs of one or more DHCP options sets. + // + // Default: Describes all your DHCP options sets. + DhcpOptionsIds []*string `locationName:"DhcpOptionsId" locationNameList:"DhcpOptionsId" type:"list"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // One or more filters. + // + // * dhcp-options-id - The ID of a DHCP options set. + // + // * key - The key for one of the options (for example, domain-name). + // + // * value - The value for one of the options. + // + // * owner-id - The ID of the AWS account that owns the DHCP options set. + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `min:"5" type:"integer"` + + // The token for the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeDhcpOptionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeDhcpOptionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeDhcpOptionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeDhcpOptionsInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDhcpOptionsIds sets the DhcpOptionsIds field's value. +func (s *DescribeDhcpOptionsInput) SetDhcpOptionsIds(v []*string) *DescribeDhcpOptionsInput { + s.DhcpOptionsIds = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeDhcpOptionsInput) SetDryRun(v bool) *DescribeDhcpOptionsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeDhcpOptionsInput) SetFilters(v []*Filter) *DescribeDhcpOptionsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeDhcpOptionsInput) SetMaxResults(v int64) *DescribeDhcpOptionsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeDhcpOptionsInput) SetNextToken(v string) *DescribeDhcpOptionsInput { + s.NextToken = &v + return s +} + +type DescribeDhcpOptionsOutput struct { + _ struct{} `type:"structure"` + + // Information about one or more DHCP options sets. + DhcpOptions []*DhcpOptions `locationName:"dhcpOptionsSet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeDhcpOptionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeDhcpOptionsOutput) GoString() string { + return s.String() +} + +// SetDhcpOptions sets the DhcpOptions field's value. +func (s *DescribeDhcpOptionsOutput) SetDhcpOptions(v []*DhcpOptions) *DescribeDhcpOptionsOutput { + s.DhcpOptions = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeDhcpOptionsOutput) SetNextToken(v string) *DescribeDhcpOptionsOutput { + s.NextToken = &v + return s +} + +type DescribeEgressOnlyInternetGatewaysInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more egress-only internet gateway IDs. + EgressOnlyInternetGatewayIds []*string `locationName:"EgressOnlyInternetGatewayId" locationNameList:"item" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `min:"5" type:"integer"` + + // The token for the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeEgressOnlyInternetGatewaysInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeEgressOnlyInternetGatewaysInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeEgressOnlyInternetGatewaysInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeEgressOnlyInternetGatewaysInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeEgressOnlyInternetGatewaysInput) SetDryRun(v bool) *DescribeEgressOnlyInternetGatewaysInput { + s.DryRun = &v + return s +} + +// SetEgressOnlyInternetGatewayIds sets the EgressOnlyInternetGatewayIds field's value. +func (s *DescribeEgressOnlyInternetGatewaysInput) SetEgressOnlyInternetGatewayIds(v []*string) *DescribeEgressOnlyInternetGatewaysInput { + s.EgressOnlyInternetGatewayIds = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeEgressOnlyInternetGatewaysInput) SetMaxResults(v int64) *DescribeEgressOnlyInternetGatewaysInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeEgressOnlyInternetGatewaysInput) SetNextToken(v string) *DescribeEgressOnlyInternetGatewaysInput { + s.NextToken = &v + return s +} + +type DescribeEgressOnlyInternetGatewaysOutput struct { + _ struct{} `type:"structure"` + + // Information about the egress-only internet gateways. + EgressOnlyInternetGateways []*EgressOnlyInternetGateway `locationName:"egressOnlyInternetGatewaySet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeEgressOnlyInternetGatewaysOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeEgressOnlyInternetGatewaysOutput) GoString() string { + return s.String() +} + +// SetEgressOnlyInternetGateways sets the EgressOnlyInternetGateways field's value. +func (s *DescribeEgressOnlyInternetGatewaysOutput) SetEgressOnlyInternetGateways(v []*EgressOnlyInternetGateway) *DescribeEgressOnlyInternetGatewaysOutput { + s.EgressOnlyInternetGateways = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeEgressOnlyInternetGatewaysOutput) SetNextToken(v string) *DescribeEgressOnlyInternetGatewaysOutput { + s.NextToken = &v + return s +} + +type DescribeElasticGpusInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The Elastic Graphics accelerator IDs. + ElasticGpuIds []*string `locationName:"ElasticGpuId" locationNameList:"item" type:"list"` + + // The filters. + // + // * availability-zone - The Availability Zone in which the Elastic Graphics + // accelerator resides. + // + // * elastic-gpu-health - The status of the Elastic Graphics accelerator + // (OK | IMPAIRED). + // + // * elastic-gpu-state - The state of the Elastic Graphics accelerator (ATTACHED). + // + // * elastic-gpu-type - The type of Elastic Graphics accelerator; for example, + // eg1.medium. + // + // * instance-id - The ID of the instance to which the Elastic Graphics accelerator + // is associated. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return in a single call. To retrieve the + // remaining results, make another call with the returned NextToken value. This + // value can be between 5 and 1000. + MaxResults *int64 `min:"10" type:"integer"` + + // The token to request the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeElasticGpusInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeElasticGpusInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeElasticGpusInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeElasticGpusInput"} + if s.MaxResults != nil && *s.MaxResults < 10 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 10)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeElasticGpusInput) SetDryRun(v bool) *DescribeElasticGpusInput { + s.DryRun = &v + return s +} + +// SetElasticGpuIds sets the ElasticGpuIds field's value. +func (s *DescribeElasticGpusInput) SetElasticGpuIds(v []*string) *DescribeElasticGpusInput { + s.ElasticGpuIds = v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeElasticGpusInput) SetFilters(v []*Filter) *DescribeElasticGpusInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeElasticGpusInput) SetMaxResults(v int64) *DescribeElasticGpusInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeElasticGpusInput) SetNextToken(v string) *DescribeElasticGpusInput { + s.NextToken = &v + return s +} + +type DescribeElasticGpusOutput struct { + _ struct{} `type:"structure"` + + // Information about the Elastic Graphics accelerators. + ElasticGpuSet []*ElasticGpus `locationName:"elasticGpuSet" locationNameList:"item" type:"list"` + + // The total number of items to return. If the total number of items available + // is more than the value specified in max-items then a Next-Token will be provided + // in the output that you can use to resume pagination. + MaxResults *int64 `locationName:"maxResults" type:"integer"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeElasticGpusOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeElasticGpusOutput) GoString() string { + return s.String() +} + +// SetElasticGpuSet sets the ElasticGpuSet field's value. +func (s *DescribeElasticGpusOutput) SetElasticGpuSet(v []*ElasticGpus) *DescribeElasticGpusOutput { + s.ElasticGpuSet = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeElasticGpusOutput) SetMaxResults(v int64) *DescribeElasticGpusOutput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeElasticGpusOutput) SetNextToken(v string) *DescribeElasticGpusOutput { + s.NextToken = &v + return s +} + +type DescribeExportImageTasksInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The IDs of the export image tasks. + ExportImageTaskIds []*string `locationName:"ExportImageTaskId" locationNameList:"ExportImageTaskId" type:"list"` + + // Filter tasks using the task-state filter and one of the following values: + // active, completed, deleting, or deleted. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return in a single call. + MaxResults *int64 `min:"1" type:"integer"` + + // A token that indicates the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeExportImageTasksInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeExportImageTasksInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeExportImageTasksInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeExportImageTasksInput"} + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeExportImageTasksInput) SetDryRun(v bool) *DescribeExportImageTasksInput { + s.DryRun = &v + return s +} + +// SetExportImageTaskIds sets the ExportImageTaskIds field's value. +func (s *DescribeExportImageTasksInput) SetExportImageTaskIds(v []*string) *DescribeExportImageTasksInput { + s.ExportImageTaskIds = v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeExportImageTasksInput) SetFilters(v []*Filter) *DescribeExportImageTasksInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeExportImageTasksInput) SetMaxResults(v int64) *DescribeExportImageTasksInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeExportImageTasksInput) SetNextToken(v string) *DescribeExportImageTasksInput { + s.NextToken = &v + return s +} + +type DescribeExportImageTasksOutput struct { + _ struct{} `type:"structure"` + + // Information about the export image tasks. + ExportImageTasks []*ExportImageTask `locationName:"exportImageTaskSet" locationNameList:"item" type:"list"` + + // The token to use to get the next page of results. This value is null when + // there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeExportImageTasksOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeExportImageTasksOutput) GoString() string { + return s.String() +} + +// SetExportImageTasks sets the ExportImageTasks field's value. +func (s *DescribeExportImageTasksOutput) SetExportImageTasks(v []*ExportImageTask) *DescribeExportImageTasksOutput { + s.ExportImageTasks = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeExportImageTasksOutput) SetNextToken(v string) *DescribeExportImageTasksOutput { + s.NextToken = &v + return s +} + +type DescribeExportTasksInput struct { + _ struct{} `type:"structure"` + + // The export task IDs. + ExportTaskIds []*string `locationName:"exportTaskId" locationNameList:"ExportTaskId" type:"list"` +} + +// String returns the string representation +func (s DescribeExportTasksInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeExportTasksInput) GoString() string { + return s.String() +} + +// SetExportTaskIds sets the ExportTaskIds field's value. +func (s *DescribeExportTasksInput) SetExportTaskIds(v []*string) *DescribeExportTasksInput { + s.ExportTaskIds = v + return s +} + +type DescribeExportTasksOutput struct { + _ struct{} `type:"structure"` + + // Information about the export tasks. + ExportTasks []*ExportTask `locationName:"exportTaskSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeExportTasksOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeExportTasksOutput) GoString() string { + return s.String() +} + +// SetExportTasks sets the ExportTasks field's value. +func (s *DescribeExportTasksOutput) SetExportTasks(v []*ExportTask) *DescribeExportTasksOutput { + s.ExportTasks = v + return s +} + +// Describes the instances that could not be launched by the fleet. +type DescribeFleetError struct { + _ struct{} `type:"structure"` + + // The error code that indicates why the instance could not be launched. For + // more information about error codes, see Error Codes (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html.html). + ErrorCode *string `locationName:"errorCode" type:"string"` + + // The error message that describes why the instance could not be launched. + // For more information about error messages, see ee Error Codes (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html.html). + ErrorMessage *string `locationName:"errorMessage" type:"string"` + + // The launch templates and overrides that were used for launching the instances. + // Any parameters that you specify in the Overrides override the same parameters + // in the launch template. + LaunchTemplateAndOverrides *LaunchTemplateAndOverridesResponse `locationName:"launchTemplateAndOverrides" type:"structure"` + + // Indicates if the instance that could not be launched was a Spot Instance + // or On-Demand Instance. + Lifecycle *string `locationName:"lifecycle" type:"string" enum:"InstanceLifecycle"` +} + +// String returns the string representation +func (s DescribeFleetError) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeFleetError) GoString() string { + return s.String() +} + +// SetErrorCode sets the ErrorCode field's value. +func (s *DescribeFleetError) SetErrorCode(v string) *DescribeFleetError { + s.ErrorCode = &v + return s +} + +// SetErrorMessage sets the ErrorMessage field's value. +func (s *DescribeFleetError) SetErrorMessage(v string) *DescribeFleetError { + s.ErrorMessage = &v + return s +} + +// SetLaunchTemplateAndOverrides sets the LaunchTemplateAndOverrides field's value. +func (s *DescribeFleetError) SetLaunchTemplateAndOverrides(v *LaunchTemplateAndOverridesResponse) *DescribeFleetError { + s.LaunchTemplateAndOverrides = v + return s +} + +// SetLifecycle sets the Lifecycle field's value. +func (s *DescribeFleetError) SetLifecycle(v string) *DescribeFleetError { + s.Lifecycle = &v + return s +} + +type DescribeFleetHistoryInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The type of events to describe. By default, all events are described. + EventType *string `type:"string" enum:"FleetEventType"` + + // The ID of the EC2 Fleet. + // + // FleetId is a required field + FleetId *string `type:"string" required:"true"` + + // The maximum number of results to return in a single call. Specify a value + // between 1 and 1000. The default value is 1000. To retrieve the remaining + // results, make another call with the returned NextToken value. + MaxResults *int64 `type:"integer"` + + // The token for the next set of results. + NextToken *string `type:"string"` + + // The start date and time for the events, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). + // + // StartTime is a required field + StartTime *time.Time `type:"timestamp" required:"true"` +} + +// String returns the string representation +func (s DescribeFleetHistoryInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeFleetHistoryInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeFleetHistoryInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeFleetHistoryInput"} + if s.FleetId == nil { + invalidParams.Add(request.NewErrParamRequired("FleetId")) + } + if s.StartTime == nil { + invalidParams.Add(request.NewErrParamRequired("StartTime")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeFleetHistoryInput) SetDryRun(v bool) *DescribeFleetHistoryInput { + s.DryRun = &v + return s +} + +// SetEventType sets the EventType field's value. +func (s *DescribeFleetHistoryInput) SetEventType(v string) *DescribeFleetHistoryInput { + s.EventType = &v + return s +} + +// SetFleetId sets the FleetId field's value. +func (s *DescribeFleetHistoryInput) SetFleetId(v string) *DescribeFleetHistoryInput { + s.FleetId = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeFleetHistoryInput) SetMaxResults(v int64) *DescribeFleetHistoryInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeFleetHistoryInput) SetNextToken(v string) *DescribeFleetHistoryInput { + s.NextToken = &v + return s +} + +// SetStartTime sets the StartTime field's value. +func (s *DescribeFleetHistoryInput) SetStartTime(v time.Time) *DescribeFleetHistoryInput { + s.StartTime = &v + return s +} + +type DescribeFleetHistoryOutput struct { + _ struct{} `type:"structure"` + + // The ID of the EC Fleet. + FleetId *string `locationName:"fleetId" type:"string"` + + // Information about the events in the history of the EC2 Fleet. + HistoryRecords []*HistoryRecordEntry `locationName:"historyRecordSet" locationNameList:"item" type:"list"` + + // The last date and time for the events, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). + // All records up to this time were retrieved. + // + // If nextToken indicates that there are more results, this value is not present. + LastEvaluatedTime *time.Time `locationName:"lastEvaluatedTime" type:"timestamp"` + + // The token for the next set of results. + NextToken *string `locationName:"nextToken" type:"string"` + + // The start date and time for the events, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). + StartTime *time.Time `locationName:"startTime" type:"timestamp"` +} + +// String returns the string representation +func (s DescribeFleetHistoryOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeFleetHistoryOutput) GoString() string { + return s.String() +} + +// SetFleetId sets the FleetId field's value. +func (s *DescribeFleetHistoryOutput) SetFleetId(v string) *DescribeFleetHistoryOutput { + s.FleetId = &v + return s +} + +// SetHistoryRecords sets the HistoryRecords field's value. +func (s *DescribeFleetHistoryOutput) SetHistoryRecords(v []*HistoryRecordEntry) *DescribeFleetHistoryOutput { + s.HistoryRecords = v + return s +} + +// SetLastEvaluatedTime sets the LastEvaluatedTime field's value. +func (s *DescribeFleetHistoryOutput) SetLastEvaluatedTime(v time.Time) *DescribeFleetHistoryOutput { + s.LastEvaluatedTime = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeFleetHistoryOutput) SetNextToken(v string) *DescribeFleetHistoryOutput { + s.NextToken = &v + return s +} + +// SetStartTime sets the StartTime field's value. +func (s *DescribeFleetHistoryOutput) SetStartTime(v time.Time) *DescribeFleetHistoryOutput { + s.StartTime = &v + return s +} + +type DescribeFleetInstancesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The filters. + // + // * instance-type - The instance type. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The ID of the EC2 Fleet. + // + // FleetId is a required field + FleetId *string `type:"string" required:"true"` + + // The maximum number of results to return in a single call. Specify a value + // between 1 and 1000. The default value is 1000. To retrieve the remaining + // results, make another call with the returned NextToken value. + MaxResults *int64 `type:"integer"` + + // The token for the next set of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeFleetInstancesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeFleetInstancesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeFleetInstancesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeFleetInstancesInput"} + if s.FleetId == nil { + invalidParams.Add(request.NewErrParamRequired("FleetId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeFleetInstancesInput) SetDryRun(v bool) *DescribeFleetInstancesInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeFleetInstancesInput) SetFilters(v []*Filter) *DescribeFleetInstancesInput { + s.Filters = v + return s +} + +// SetFleetId sets the FleetId field's value. +func (s *DescribeFleetInstancesInput) SetFleetId(v string) *DescribeFleetInstancesInput { + s.FleetId = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeFleetInstancesInput) SetMaxResults(v int64) *DescribeFleetInstancesInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeFleetInstancesInput) SetNextToken(v string) *DescribeFleetInstancesInput { + s.NextToken = &v + return s +} + +type DescribeFleetInstancesOutput struct { + _ struct{} `type:"structure"` + + // The running instances. This list is refreshed periodically and might be out + // of date. + ActiveInstances []*ActiveInstance `locationName:"activeInstanceSet" locationNameList:"item" type:"list"` + + // The ID of the EC2 Fleet. + FleetId *string `locationName:"fleetId" type:"string"` + + // The token for the next set of results. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeFleetInstancesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeFleetInstancesOutput) GoString() string { + return s.String() +} + +// SetActiveInstances sets the ActiveInstances field's value. +func (s *DescribeFleetInstancesOutput) SetActiveInstances(v []*ActiveInstance) *DescribeFleetInstancesOutput { + s.ActiveInstances = v + return s +} + +// SetFleetId sets the FleetId field's value. +func (s *DescribeFleetInstancesOutput) SetFleetId(v string) *DescribeFleetInstancesOutput { + s.FleetId = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeFleetInstancesOutput) SetNextToken(v string) *DescribeFleetInstancesOutput { + s.NextToken = &v + return s +} + +type DescribeFleetsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The filters. + // + // * activity-status - The progress of the EC2 Fleet ( error | pending-fulfillment + // | pending-termination | fulfilled). + // + // * excess-capacity-termination-policy - Indicates whether to terminate + // running instances if the target capacity is decreased below the current + // EC2 Fleet size (true | false). + // + // * fleet-state - The state of the EC2 Fleet (submitted | active | deleted + // | failed | deleted-running | deleted-terminating | modifying). + // + // * replace-unhealthy-instances - Indicates whether EC2 Fleet should replace + // unhealthy instances (true | false). + // + // * type - The type of request (instant | request | maintain). + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The ID of the EC2 Fleets. + FleetIds []*string `locationName:"FleetId" type:"list"` + + // The maximum number of results to return in a single call. Specify a value + // between 1 and 1000. The default value is 1000. To retrieve the remaining + // results, make another call with the returned NextToken value. + MaxResults *int64 `type:"integer"` + + // The token for the next set of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeFleetsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeFleetsInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeFleetsInput) SetDryRun(v bool) *DescribeFleetsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeFleetsInput) SetFilters(v []*Filter) *DescribeFleetsInput { + s.Filters = v + return s +} + +// SetFleetIds sets the FleetIds field's value. +func (s *DescribeFleetsInput) SetFleetIds(v []*string) *DescribeFleetsInput { + s.FleetIds = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeFleetsInput) SetMaxResults(v int64) *DescribeFleetsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeFleetsInput) SetNextToken(v string) *DescribeFleetsInput { + s.NextToken = &v + return s +} + +// Describes the instances that were launched by the fleet. +type DescribeFleetsInstances struct { + _ struct{} `type:"structure"` + + // The IDs of the instances. + InstanceIds []*string `locationName:"instanceIds" locationNameList:"item" type:"list"` + + // The instance type. + InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` + + // The launch templates and overrides that were used for launching the instances. + // Any parameters that you specify in the Overrides override the same parameters + // in the launch template. + LaunchTemplateAndOverrides *LaunchTemplateAndOverridesResponse `locationName:"launchTemplateAndOverrides" type:"structure"` + + // Indicates if the instance that was launched is a Spot Instance or On-Demand + // Instance. + Lifecycle *string `locationName:"lifecycle" type:"string" enum:"InstanceLifecycle"` + + // The value is Windows for Windows instances; otherwise blank. + Platform *string `locationName:"platform" type:"string" enum:"PlatformValues"` +} + +// String returns the string representation +func (s DescribeFleetsInstances) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeFleetsInstances) GoString() string { + return s.String() +} + +// SetInstanceIds sets the InstanceIds field's value. +func (s *DescribeFleetsInstances) SetInstanceIds(v []*string) *DescribeFleetsInstances { + s.InstanceIds = v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *DescribeFleetsInstances) SetInstanceType(v string) *DescribeFleetsInstances { + s.InstanceType = &v + return s +} + +// SetLaunchTemplateAndOverrides sets the LaunchTemplateAndOverrides field's value. +func (s *DescribeFleetsInstances) SetLaunchTemplateAndOverrides(v *LaunchTemplateAndOverridesResponse) *DescribeFleetsInstances { + s.LaunchTemplateAndOverrides = v + return s +} + +// SetLifecycle sets the Lifecycle field's value. +func (s *DescribeFleetsInstances) SetLifecycle(v string) *DescribeFleetsInstances { + s.Lifecycle = &v + return s +} + +// SetPlatform sets the Platform field's value. +func (s *DescribeFleetsInstances) SetPlatform(v string) *DescribeFleetsInstances { + s.Platform = &v + return s +} + +type DescribeFleetsOutput struct { + _ struct{} `type:"structure"` + + // Information about the EC2 Fleets. + Fleets []*FleetData `locationName:"fleetSet" locationNameList:"item" type:"list"` + + // The token for the next set of results. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeFleetsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeFleetsOutput) GoString() string { + return s.String() +} + +// SetFleets sets the Fleets field's value. +func (s *DescribeFleetsOutput) SetFleets(v []*FleetData) *DescribeFleetsOutput { + s.Fleets = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeFleetsOutput) SetNextToken(v string) *DescribeFleetsOutput { + s.NextToken = &v + return s +} + +type DescribeFlowLogsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. + // + // * deliver-log-status - The status of the logs delivery (SUCCESS | FAILED). + // + // * log-destination-type - The type of destination to which the flow log + // publishes data. Possible destination types include cloud-watch-logs and + // S3. + // + // * flow-log-id - The ID of the flow log. + // + // * log-group-name - The name of the log group. + // + // * resource-id - The ID of the VPC, subnet, or network interface. + // + // * traffic-type - The type of traffic (ACCEPT | REJECT | ALL). + Filter []*Filter `locationNameList:"Filter" type:"list"` + + // One or more flow log IDs. + // + // Constraint: Maximum of 1000 flow log IDs. + FlowLogIds []*string `locationName:"FlowLogId" locationNameList:"item" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `type:"integer"` + + // The token for the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeFlowLogsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeFlowLogsInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeFlowLogsInput) SetDryRun(v bool) *DescribeFlowLogsInput { + s.DryRun = &v + return s +} + +// SetFilter sets the Filter field's value. +func (s *DescribeFlowLogsInput) SetFilter(v []*Filter) *DescribeFlowLogsInput { + s.Filter = v + return s +} + +// SetFlowLogIds sets the FlowLogIds field's value. +func (s *DescribeFlowLogsInput) SetFlowLogIds(v []*string) *DescribeFlowLogsInput { + s.FlowLogIds = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeFlowLogsInput) SetMaxResults(v int64) *DescribeFlowLogsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeFlowLogsInput) SetNextToken(v string) *DescribeFlowLogsInput { + s.NextToken = &v + return s +} + +type DescribeFlowLogsOutput struct { + _ struct{} `type:"structure"` + + // Information about the flow logs. + FlowLogs []*FlowLog `locationName:"flowLogSet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeFlowLogsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeFlowLogsOutput) GoString() string { + return s.String() +} + +// SetFlowLogs sets the FlowLogs field's value. +func (s *DescribeFlowLogsOutput) SetFlowLogs(v []*FlowLog) *DescribeFlowLogsOutput { + s.FlowLogs = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeFlowLogsOutput) SetNextToken(v string) *DescribeFlowLogsOutput { + s.NextToken = &v + return s +} + +type DescribeFpgaImageAttributeInput struct { + _ struct{} `type:"structure"` + + // The AFI attribute. + // + // Attribute is a required field + Attribute *string `type:"string" required:"true" enum:"FpgaImageAttributeName"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the AFI. + // + // FpgaImageId is a required field + FpgaImageId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DescribeFpgaImageAttributeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeFpgaImageAttributeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeFpgaImageAttributeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeFpgaImageAttributeInput"} + if s.Attribute == nil { + invalidParams.Add(request.NewErrParamRequired("Attribute")) + } + if s.FpgaImageId == nil { + invalidParams.Add(request.NewErrParamRequired("FpgaImageId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAttribute sets the Attribute field's value. +func (s *DescribeFpgaImageAttributeInput) SetAttribute(v string) *DescribeFpgaImageAttributeInput { + s.Attribute = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeFpgaImageAttributeInput) SetDryRun(v bool) *DescribeFpgaImageAttributeInput { + s.DryRun = &v + return s +} + +// SetFpgaImageId sets the FpgaImageId field's value. +func (s *DescribeFpgaImageAttributeInput) SetFpgaImageId(v string) *DescribeFpgaImageAttributeInput { + s.FpgaImageId = &v + return s +} + +type DescribeFpgaImageAttributeOutput struct { + _ struct{} `type:"structure"` + + // Information about the attribute. + FpgaImageAttribute *FpgaImageAttribute `locationName:"fpgaImageAttribute" type:"structure"` +} + +// String returns the string representation +func (s DescribeFpgaImageAttributeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeFpgaImageAttributeOutput) GoString() string { + return s.String() +} + +// SetFpgaImageAttribute sets the FpgaImageAttribute field's value. +func (s *DescribeFpgaImageAttributeOutput) SetFpgaImageAttribute(v *FpgaImageAttribute) *DescribeFpgaImageAttributeOutput { + s.FpgaImageAttribute = v + return s +} + +type DescribeFpgaImagesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The filters. + // + // * create-time - The creation time of the AFI. + // + // * fpga-image-id - The FPGA image identifier (AFI ID). + // + // * fpga-image-global-id - The global FPGA image identifier (AGFI ID). + // + // * name - The name of the AFI. + // + // * owner-id - The AWS account ID of the AFI owner. + // + // * product-code - The product code. + // + // * shell-version - The version of the AWS Shell that was used to create + // the bitstream. + // + // * state - The state of the AFI (pending | failed | available | unavailable). + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + // + // * update-time - The time of the most recent update. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The AFI IDs. + FpgaImageIds []*string `locationName:"FpgaImageId" locationNameList:"item" type:"list"` + + // The maximum number of results to return in a single call. + MaxResults *int64 `min:"5" type:"integer"` + + // The token to retrieve the next page of results. + NextToken *string `type:"string"` + + // Filters the AFI by owner. Specify an AWS account ID, self (owner is the sender + // of the request), or an AWS owner alias (valid values are amazon | aws-marketplace). + Owners []*string `locationName:"Owner" locationNameList:"Owner" type:"list"` +} + +// String returns the string representation +func (s DescribeFpgaImagesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeFpgaImagesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeFpgaImagesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeFpgaImagesInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeFpgaImagesInput) SetDryRun(v bool) *DescribeFpgaImagesInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeFpgaImagesInput) SetFilters(v []*Filter) *DescribeFpgaImagesInput { + s.Filters = v + return s +} + +// SetFpgaImageIds sets the FpgaImageIds field's value. +func (s *DescribeFpgaImagesInput) SetFpgaImageIds(v []*string) *DescribeFpgaImagesInput { + s.FpgaImageIds = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeFpgaImagesInput) SetMaxResults(v int64) *DescribeFpgaImagesInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeFpgaImagesInput) SetNextToken(v string) *DescribeFpgaImagesInput { + s.NextToken = &v + return s +} + +// SetOwners sets the Owners field's value. +func (s *DescribeFpgaImagesInput) SetOwners(v []*string) *DescribeFpgaImagesInput { + s.Owners = v + return s +} + +type DescribeFpgaImagesOutput struct { + _ struct{} `type:"structure"` + + // Information about the FPGA images. + FpgaImages []*FpgaImage `locationName:"fpgaImageSet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeFpgaImagesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeFpgaImagesOutput) GoString() string { + return s.String() +} + +// SetFpgaImages sets the FpgaImages field's value. +func (s *DescribeFpgaImagesOutput) SetFpgaImages(v []*FpgaImage) *DescribeFpgaImagesOutput { + s.FpgaImages = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeFpgaImagesOutput) SetNextToken(v string) *DescribeFpgaImagesOutput { + s.NextToken = &v + return s +} + +type DescribeHostReservationOfferingsInput struct { + _ struct{} `type:"structure"` + + // The filters. + // + // * instance-family - The instance family of the offering (for example, + // m4). + // + // * payment-option - The payment option (NoUpfront | PartialUpfront | AllUpfront). + Filter []*Filter `locationNameList:"Filter" type:"list"` + + // This is the maximum duration of the reservation to purchase, specified in + // seconds. Reservations are available in one-year and three-year terms. The + // number of seconds specified must be the number of seconds in a year (365x24x60x60) + // times one of the supported durations (1 or 3). For example, specify 94608000 + // for three years. + MaxDuration *int64 `type:"integer"` + + // The maximum number of results to return for the request in a single page. + // The remaining results can be seen by sending another request with the returned + // nextToken value. This value can be between 5 and 500. If maxResults is given + // a larger value than 500, you receive an error. + MaxResults *int64 `min:"5" type:"integer"` + + // This is the minimum duration of the reservation you'd like to purchase, specified + // in seconds. Reservations are available in one-year and three-year terms. + // The number of seconds specified must be the number of seconds in a year (365x24x60x60) + // times one of the supported durations (1 or 3). For example, specify 31536000 + // for one year. + MinDuration *int64 `type:"integer"` + + // The token to use to retrieve the next page of results. + NextToken *string `type:"string"` + + // The ID of the reservation offering. + OfferingId *string `type:"string"` +} + +// String returns the string representation +func (s DescribeHostReservationOfferingsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeHostReservationOfferingsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeHostReservationOfferingsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeHostReservationOfferingsInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetFilter sets the Filter field's value. +func (s *DescribeHostReservationOfferingsInput) SetFilter(v []*Filter) *DescribeHostReservationOfferingsInput { + s.Filter = v + return s +} + +// SetMaxDuration sets the MaxDuration field's value. +func (s *DescribeHostReservationOfferingsInput) SetMaxDuration(v int64) *DescribeHostReservationOfferingsInput { + s.MaxDuration = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeHostReservationOfferingsInput) SetMaxResults(v int64) *DescribeHostReservationOfferingsInput { + s.MaxResults = &v + return s +} + +// SetMinDuration sets the MinDuration field's value. +func (s *DescribeHostReservationOfferingsInput) SetMinDuration(v int64) *DescribeHostReservationOfferingsInput { + s.MinDuration = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeHostReservationOfferingsInput) SetNextToken(v string) *DescribeHostReservationOfferingsInput { + s.NextToken = &v + return s +} + +// SetOfferingId sets the OfferingId field's value. +func (s *DescribeHostReservationOfferingsInput) SetOfferingId(v string) *DescribeHostReservationOfferingsInput { + s.OfferingId = &v + return s +} + +type DescribeHostReservationOfferingsOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the offerings. + OfferingSet []*HostOffering `locationName:"offeringSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeHostReservationOfferingsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeHostReservationOfferingsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeHostReservationOfferingsOutput) SetNextToken(v string) *DescribeHostReservationOfferingsOutput { + s.NextToken = &v + return s +} + +// SetOfferingSet sets the OfferingSet field's value. +func (s *DescribeHostReservationOfferingsOutput) SetOfferingSet(v []*HostOffering) *DescribeHostReservationOfferingsOutput { + s.OfferingSet = v + return s +} + +type DescribeHostReservationsInput struct { + _ struct{} `type:"structure"` + + // The filters. + // + // * instance-family - The instance family (for example, m4). + // + // * payment-option - The payment option (NoUpfront | PartialUpfront | AllUpfront). + // + // * state - The state of the reservation (payment-pending | payment-failed + // | active | retired). + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + Filter []*Filter `locationNameList:"Filter" type:"list"` + + // The host reservation IDs. + HostReservationIdSet []*string `locationNameList:"item" type:"list"` + + // The maximum number of results to return for the request in a single page. + // The remaining results can be seen by sending another request with the returned + // nextToken value. This value can be between 5 and 500. If maxResults is given + // a larger value than 500, you receive an error. + MaxResults *int64 `type:"integer"` + + // The token to use to retrieve the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeHostReservationsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeHostReservationsInput) GoString() string { + return s.String() +} + +// SetFilter sets the Filter field's value. +func (s *DescribeHostReservationsInput) SetFilter(v []*Filter) *DescribeHostReservationsInput { + s.Filter = v + return s +} + +// SetHostReservationIdSet sets the HostReservationIdSet field's value. +func (s *DescribeHostReservationsInput) SetHostReservationIdSet(v []*string) *DescribeHostReservationsInput { + s.HostReservationIdSet = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeHostReservationsInput) SetMaxResults(v int64) *DescribeHostReservationsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeHostReservationsInput) SetNextToken(v string) *DescribeHostReservationsInput { + s.NextToken = &v + return s +} + +type DescribeHostReservationsOutput struct { + _ struct{} `type:"structure"` + + // Details about the reservation's configuration. + HostReservationSet []*HostReservation `locationName:"hostReservationSet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeHostReservationsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeHostReservationsOutput) GoString() string { + return s.String() +} + +// SetHostReservationSet sets the HostReservationSet field's value. +func (s *DescribeHostReservationsOutput) SetHostReservationSet(v []*HostReservation) *DescribeHostReservationsOutput { + s.HostReservationSet = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeHostReservationsOutput) SetNextToken(v string) *DescribeHostReservationsOutput { + s.NextToken = &v + return s +} + +type DescribeHostsInput struct { + _ struct{} `type:"structure"` + + // The filters. + // + // * auto-placement - Whether auto-placement is enabled or disabled (on | + // off). + // + // * availability-zone - The Availability Zone of the host. + // + // * client-token - The idempotency token that you provided when you allocated + // the host. + // + // * host-reservation-id - The ID of the reservation assigned to this host. + // + // * instance-type - The instance type size that the Dedicated Host is configured + // to support. + // + // * state - The allocation state of the Dedicated Host (available | under-assessment + // | permanent-failure | released | released-permanent-failure). + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + Filter []*Filter `locationName:"filter" locationNameList:"Filter" type:"list"` + + // The IDs of the Dedicated Hosts. The IDs are used for targeted instance launches. + HostIds []*string `locationName:"hostId" locationNameList:"item" type:"list"` + + // The maximum number of results to return for the request in a single page. + // The remaining results can be seen by sending another request with the returned + // nextToken value. This value can be between 5 and 500. If maxResults is given + // a larger value than 500, you receive an error. + // + // You cannot specify this parameter and the host IDs parameter in the same + // request. + MaxResults *int64 `locationName:"maxResults" type:"integer"` + + // The token to use to retrieve the next page of results. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeHostsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeHostsInput) GoString() string { + return s.String() +} + +// SetFilter sets the Filter field's value. +func (s *DescribeHostsInput) SetFilter(v []*Filter) *DescribeHostsInput { + s.Filter = v + return s +} + +// SetHostIds sets the HostIds field's value. +func (s *DescribeHostsInput) SetHostIds(v []*string) *DescribeHostsInput { + s.HostIds = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeHostsInput) SetMaxResults(v int64) *DescribeHostsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeHostsInput) SetNextToken(v string) *DescribeHostsInput { + s.NextToken = &v + return s +} + +type DescribeHostsOutput struct { + _ struct{} `type:"structure"` + + // Information about the Dedicated Hosts. + Hosts []*Host `locationName:"hostSet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeHostsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeHostsOutput) GoString() string { + return s.String() +} + +// SetHosts sets the Hosts field's value. +func (s *DescribeHostsOutput) SetHosts(v []*Host) *DescribeHostsOutput { + s.Hosts = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeHostsOutput) SetNextToken(v string) *DescribeHostsOutput { + s.NextToken = &v + return s +} + +type DescribeIamInstanceProfileAssociationsInput struct { + _ struct{} `type:"structure"` + + // The IAM instance profile associations. + AssociationIds []*string `locationName:"AssociationId" locationNameList:"AssociationId" type:"list"` + + // The filters. + // + // * instance-id - The ID of the instance. + // + // * state - The state of the association (associating | associated | disassociating + // | disassociated). + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return in a single call. To retrieve the + // remaining results, make another call with the returned NextToken value. + MaxResults *int64 `min:"5" type:"integer"` + + // The token to request the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeIamInstanceProfileAssociationsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeIamInstanceProfileAssociationsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeIamInstanceProfileAssociationsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeIamInstanceProfileAssociationsInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAssociationIds sets the AssociationIds field's value. +func (s *DescribeIamInstanceProfileAssociationsInput) SetAssociationIds(v []*string) *DescribeIamInstanceProfileAssociationsInput { + s.AssociationIds = v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeIamInstanceProfileAssociationsInput) SetFilters(v []*Filter) *DescribeIamInstanceProfileAssociationsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeIamInstanceProfileAssociationsInput) SetMaxResults(v int64) *DescribeIamInstanceProfileAssociationsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeIamInstanceProfileAssociationsInput) SetNextToken(v string) *DescribeIamInstanceProfileAssociationsInput { + s.NextToken = &v + return s +} + +type DescribeIamInstanceProfileAssociationsOutput struct { + _ struct{} `type:"structure"` + + // Information about the IAM instance profile associations. + IamInstanceProfileAssociations []*IamInstanceProfileAssociation `locationName:"iamInstanceProfileAssociationSet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeIamInstanceProfileAssociationsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeIamInstanceProfileAssociationsOutput) GoString() string { + return s.String() +} + +// SetIamInstanceProfileAssociations sets the IamInstanceProfileAssociations field's value. +func (s *DescribeIamInstanceProfileAssociationsOutput) SetIamInstanceProfileAssociations(v []*IamInstanceProfileAssociation) *DescribeIamInstanceProfileAssociationsOutput { + s.IamInstanceProfileAssociations = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeIamInstanceProfileAssociationsOutput) SetNextToken(v string) *DescribeIamInstanceProfileAssociationsOutput { + s.NextToken = &v + return s +} + +type DescribeIdFormatInput struct { + _ struct{} `type:"structure"` + + // The type of resource: bundle | conversion-task | customer-gateway | dhcp-options + // | elastic-ip-allocation | elastic-ip-association | export-task | flow-log + // | image | import-task | instance | internet-gateway | network-acl | network-acl-association + // | network-interface | network-interface-attachment | prefix-list | reservation + // | route-table | route-table-association | security-group | snapshot | subnet + // | subnet-cidr-block-association | volume | vpc | vpc-cidr-block-association + // | vpc-endpoint | vpc-peering-connection | vpn-connection | vpn-gateway + Resource *string `type:"string"` +} + +// String returns the string representation +func (s DescribeIdFormatInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeIdFormatInput) GoString() string { + return s.String() +} + +// SetResource sets the Resource field's value. +func (s *DescribeIdFormatInput) SetResource(v string) *DescribeIdFormatInput { + s.Resource = &v + return s +} + +type DescribeIdFormatOutput struct { + _ struct{} `type:"structure"` + + // Information about the ID format for the resource. + Statuses []*IdFormat `locationName:"statusSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeIdFormatOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeIdFormatOutput) GoString() string { + return s.String() +} + +// SetStatuses sets the Statuses field's value. +func (s *DescribeIdFormatOutput) SetStatuses(v []*IdFormat) *DescribeIdFormatOutput { + s.Statuses = v + return s +} + +type DescribeIdentityIdFormatInput struct { + _ struct{} `type:"structure"` + + // The ARN of the principal, which can be an IAM role, IAM user, or the root + // user. + // + // PrincipalArn is a required field + PrincipalArn *string `locationName:"principalArn" type:"string" required:"true"` + + // The type of resource: bundle | conversion-task | customer-gateway | dhcp-options + // | elastic-ip-allocation | elastic-ip-association | export-task | flow-log + // | image | import-task | instance | internet-gateway | network-acl | network-acl-association + // | network-interface | network-interface-attachment | prefix-list | reservation + // | route-table | route-table-association | security-group | snapshot | subnet + // | subnet-cidr-block-association | volume | vpc | vpc-cidr-block-association + // | vpc-endpoint | vpc-peering-connection | vpn-connection | vpn-gateway + Resource *string `locationName:"resource" type:"string"` +} + +// String returns the string representation +func (s DescribeIdentityIdFormatInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeIdentityIdFormatInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeIdentityIdFormatInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeIdentityIdFormatInput"} + if s.PrincipalArn == nil { + invalidParams.Add(request.NewErrParamRequired("PrincipalArn")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetPrincipalArn sets the PrincipalArn field's value. +func (s *DescribeIdentityIdFormatInput) SetPrincipalArn(v string) *DescribeIdentityIdFormatInput { + s.PrincipalArn = &v + return s +} + +// SetResource sets the Resource field's value. +func (s *DescribeIdentityIdFormatInput) SetResource(v string) *DescribeIdentityIdFormatInput { + s.Resource = &v + return s +} + +type DescribeIdentityIdFormatOutput struct { + _ struct{} `type:"structure"` + + // Information about the ID format for the resources. + Statuses []*IdFormat `locationName:"statusSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeIdentityIdFormatOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeIdentityIdFormatOutput) GoString() string { + return s.String() +} + +// SetStatuses sets the Statuses field's value. +func (s *DescribeIdentityIdFormatOutput) SetStatuses(v []*IdFormat) *DescribeIdentityIdFormatOutput { + s.Statuses = v + return s +} + +// Contains the parameters for DescribeImageAttribute. +type DescribeImageAttributeInput struct { + _ struct{} `type:"structure"` + + // The AMI attribute. + // + // Note: Depending on your account privileges, the blockDeviceMapping attribute + // may return a Client.AuthFailure error. If this happens, use DescribeImages + // to get information about the block device mapping for the AMI. + // + // Attribute is a required field + Attribute *string `type:"string" required:"true" enum:"ImageAttributeName"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the AMI. + // + // ImageId is a required field + ImageId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DescribeImageAttributeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeImageAttributeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeImageAttributeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeImageAttributeInput"} + if s.Attribute == nil { + invalidParams.Add(request.NewErrParamRequired("Attribute")) + } + if s.ImageId == nil { + invalidParams.Add(request.NewErrParamRequired("ImageId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAttribute sets the Attribute field's value. +func (s *DescribeImageAttributeInput) SetAttribute(v string) *DescribeImageAttributeInput { + s.Attribute = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeImageAttributeInput) SetDryRun(v bool) *DescribeImageAttributeInput { + s.DryRun = &v + return s +} + +// SetImageId sets the ImageId field's value. +func (s *DescribeImageAttributeInput) SetImageId(v string) *DescribeImageAttributeInput { + s.ImageId = &v + return s +} + +// Describes an image attribute. +type DescribeImageAttributeOutput struct { + _ struct{} `type:"structure"` + + // The block device mapping entries. + BlockDeviceMappings []*BlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"` + + // A description for the AMI. + Description *AttributeValue `locationName:"description" type:"structure"` + + // The ID of the AMI. + ImageId *string `locationName:"imageId" type:"string"` + + // The kernel ID. + KernelId *AttributeValue `locationName:"kernel" type:"structure"` + + // The launch permissions. + LaunchPermissions []*LaunchPermission `locationName:"launchPermission" locationNameList:"item" type:"list"` + + // The product codes. + ProductCodes []*ProductCode `locationName:"productCodes" locationNameList:"item" type:"list"` + + // The RAM disk ID. + RamdiskId *AttributeValue `locationName:"ramdisk" type:"structure"` + + // Indicates whether enhanced networking with the Intel 82599 Virtual Function + // interface is enabled. + SriovNetSupport *AttributeValue `locationName:"sriovNetSupport" type:"structure"` +} + +// String returns the string representation +func (s DescribeImageAttributeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeImageAttributeOutput) GoString() string { + return s.String() +} + +// SetBlockDeviceMappings sets the BlockDeviceMappings field's value. +func (s *DescribeImageAttributeOutput) SetBlockDeviceMappings(v []*BlockDeviceMapping) *DescribeImageAttributeOutput { + s.BlockDeviceMappings = v + return s +} + +// SetDescription sets the Description field's value. +func (s *DescribeImageAttributeOutput) SetDescription(v *AttributeValue) *DescribeImageAttributeOutput { + s.Description = v + return s +} + +// SetImageId sets the ImageId field's value. +func (s *DescribeImageAttributeOutput) SetImageId(v string) *DescribeImageAttributeOutput { + s.ImageId = &v + return s +} + +// SetKernelId sets the KernelId field's value. +func (s *DescribeImageAttributeOutput) SetKernelId(v *AttributeValue) *DescribeImageAttributeOutput { + s.KernelId = v + return s +} + +// SetLaunchPermissions sets the LaunchPermissions field's value. +func (s *DescribeImageAttributeOutput) SetLaunchPermissions(v []*LaunchPermission) *DescribeImageAttributeOutput { + s.LaunchPermissions = v + return s +} + +// SetProductCodes sets the ProductCodes field's value. +func (s *DescribeImageAttributeOutput) SetProductCodes(v []*ProductCode) *DescribeImageAttributeOutput { + s.ProductCodes = v + return s +} + +// SetRamdiskId sets the RamdiskId field's value. +func (s *DescribeImageAttributeOutput) SetRamdiskId(v *AttributeValue) *DescribeImageAttributeOutput { + s.RamdiskId = v + return s +} + +// SetSriovNetSupport sets the SriovNetSupport field's value. +func (s *DescribeImageAttributeOutput) SetSriovNetSupport(v *AttributeValue) *DescribeImageAttributeOutput { + s.SriovNetSupport = v + return s +} + +type DescribeImagesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // Scopes the images by users with explicit launch permissions. Specify an AWS + // account ID, self (the sender of the request), or all (public AMIs). + ExecutableUsers []*string `locationName:"ExecutableBy" locationNameList:"ExecutableBy" type:"list"` + + // The filters. + // + // * architecture - The image architecture (i386 | x86_64 | arm64). + // + // * block-device-mapping.delete-on-termination - A Boolean value that indicates + // whether the Amazon EBS volume is deleted on instance termination. + // + // * block-device-mapping.device-name - The device name specified in the + // block device mapping (for example, /dev/sdh or xvdh). + // + // * block-device-mapping.snapshot-id - The ID of the snapshot used for the + // EBS volume. + // + // * block-device-mapping.volume-size - The volume size of the EBS volume, + // in GiB. + // + // * block-device-mapping.volume-type - The volume type of the EBS volume + // (gp2 | io1 | st1 | sc1 | standard). + // + // * block-device-mapping.encrypted - A Boolean that indicates whether the + // EBS volume is encrypted. + // + // * description - The description of the image (provided during image creation). + // + // * ena-support - A Boolean that indicates whether enhanced networking with + // ENA is enabled. + // + // * hypervisor - The hypervisor type (ovm | xen). + // + // * image-id - The ID of the image. + // + // * image-type - The image type (machine | kernel | ramdisk). + // + // * is-public - A Boolean that indicates whether the image is public. + // + // * kernel-id - The kernel ID. + // + // * manifest-location - The location of the image manifest. + // + // * name - The name of the AMI (provided during image creation). + // + // * owner-alias - String value from an Amazon-maintained list (amazon | + // aws-marketplace | microsoft) of snapshot owners. Not to be confused with + // the user-configured AWS account alias, which is set from the IAM console. + // + // * owner-id - The AWS account ID of the image owner. + // + // * platform - The platform. To only list Windows-based AMIs, use windows. + // + // * product-code - The product code. + // + // * product-code.type - The type of the product code (devpay | marketplace). + // + // * ramdisk-id - The RAM disk ID. + // + // * root-device-name - The device name of the root device volume (for example, + // /dev/sda1). + // + // * root-device-type - The type of the root device volume (ebs | instance-store). + // + // * state - The state of the image (available | pending | failed). + // + // * state-reason-code - The reason code for the state change. + // + // * state-reason-message - The message for the state change. + // + // * sriov-net-support - A value of simple indicates that enhanced networking + // with the Intel 82599 VF interface is enabled. + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + // + // * virtualization-type - The virtualization type (paravirtual | hvm). + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The image IDs. + // + // Default: Describes all images available to you. + ImageIds []*string `locationName:"ImageId" locationNameList:"ImageId" type:"list"` + + // Filters the images by the owner. Specify an AWS account ID, self (owner is + // the sender of the request), or an AWS owner alias (valid values are amazon + // | aws-marketplace | microsoft). Omitting this option returns all images for + // which you have launch permissions, regardless of ownership. + Owners []*string `locationName:"Owner" locationNameList:"Owner" type:"list"` +} + +// String returns the string representation +func (s DescribeImagesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeImagesInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeImagesInput) SetDryRun(v bool) *DescribeImagesInput { + s.DryRun = &v + return s +} + +// SetExecutableUsers sets the ExecutableUsers field's value. +func (s *DescribeImagesInput) SetExecutableUsers(v []*string) *DescribeImagesInput { + s.ExecutableUsers = v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeImagesInput) SetFilters(v []*Filter) *DescribeImagesInput { + s.Filters = v + return s +} + +// SetImageIds sets the ImageIds field's value. +func (s *DescribeImagesInput) SetImageIds(v []*string) *DescribeImagesInput { + s.ImageIds = v + return s +} + +// SetOwners sets the Owners field's value. +func (s *DescribeImagesInput) SetOwners(v []*string) *DescribeImagesInput { + s.Owners = v + return s +} + +type DescribeImagesOutput struct { + _ struct{} `type:"structure"` + + // Information about the images. + Images []*Image `locationName:"imagesSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeImagesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeImagesOutput) GoString() string { + return s.String() +} + +// SetImages sets the Images field's value. +func (s *DescribeImagesOutput) SetImages(v []*Image) *DescribeImagesOutput { + s.Images = v + return s +} + +type DescribeImportImageTasksInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // Filter tasks using the task-state filter and one of the following values: + // active, completed, deleting, or deleted. + Filters []*Filter `locationNameList:"Filter" type:"list"` + + // The IDs of the import image tasks. + ImportTaskIds []*string `locationName:"ImportTaskId" locationNameList:"ImportTaskId" type:"list"` + + // The maximum number of results to return in a single call. + MaxResults *int64 `type:"integer"` + + // A token that indicates the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeImportImageTasksInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeImportImageTasksInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeImportImageTasksInput) SetDryRun(v bool) *DescribeImportImageTasksInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeImportImageTasksInput) SetFilters(v []*Filter) *DescribeImportImageTasksInput { + s.Filters = v + return s +} + +// SetImportTaskIds sets the ImportTaskIds field's value. +func (s *DescribeImportImageTasksInput) SetImportTaskIds(v []*string) *DescribeImportImageTasksInput { + s.ImportTaskIds = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeImportImageTasksInput) SetMaxResults(v int64) *DescribeImportImageTasksInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeImportImageTasksInput) SetNextToken(v string) *DescribeImportImageTasksInput { + s.NextToken = &v + return s +} + +type DescribeImportImageTasksOutput struct { + _ struct{} `type:"structure"` + + // A list of zero or more import image tasks that are currently active or were + // completed or canceled in the previous 7 days. + ImportImageTasks []*ImportImageTask `locationName:"importImageTaskSet" locationNameList:"item" type:"list"` + + // The token to use to get the next page of results. This value is null when + // there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeImportImageTasksOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeImportImageTasksOutput) GoString() string { + return s.String() +} + +// SetImportImageTasks sets the ImportImageTasks field's value. +func (s *DescribeImportImageTasksOutput) SetImportImageTasks(v []*ImportImageTask) *DescribeImportImageTasksOutput { + s.ImportImageTasks = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeImportImageTasksOutput) SetNextToken(v string) *DescribeImportImageTasksOutput { + s.NextToken = &v + return s +} + +type DescribeImportSnapshotTasksInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The filters. + Filters []*Filter `locationNameList:"Filter" type:"list"` + + // A list of import snapshot task IDs. + ImportTaskIds []*string `locationName:"ImportTaskId" locationNameList:"ImportTaskId" type:"list"` + + // The maximum number of results to return in a single call. To retrieve the + // remaining results, make another call with the returned NextToken value. + MaxResults *int64 `type:"integer"` + + // A token that indicates the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeImportSnapshotTasksInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeImportSnapshotTasksInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeImportSnapshotTasksInput) SetDryRun(v bool) *DescribeImportSnapshotTasksInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeImportSnapshotTasksInput) SetFilters(v []*Filter) *DescribeImportSnapshotTasksInput { + s.Filters = v + return s +} + +// SetImportTaskIds sets the ImportTaskIds field's value. +func (s *DescribeImportSnapshotTasksInput) SetImportTaskIds(v []*string) *DescribeImportSnapshotTasksInput { + s.ImportTaskIds = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeImportSnapshotTasksInput) SetMaxResults(v int64) *DescribeImportSnapshotTasksInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeImportSnapshotTasksInput) SetNextToken(v string) *DescribeImportSnapshotTasksInput { + s.NextToken = &v + return s +} + +type DescribeImportSnapshotTasksOutput struct { + _ struct{} `type:"structure"` + + // A list of zero or more import snapshot tasks that are currently active or + // were completed or canceled in the previous 7 days. + ImportSnapshotTasks []*ImportSnapshotTask `locationName:"importSnapshotTaskSet" locationNameList:"item" type:"list"` + + // The token to use to get the next page of results. This value is null when + // there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeImportSnapshotTasksOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeImportSnapshotTasksOutput) GoString() string { + return s.String() +} + +// SetImportSnapshotTasks sets the ImportSnapshotTasks field's value. +func (s *DescribeImportSnapshotTasksOutput) SetImportSnapshotTasks(v []*ImportSnapshotTask) *DescribeImportSnapshotTasksOutput { + s.ImportSnapshotTasks = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeImportSnapshotTasksOutput) SetNextToken(v string) *DescribeImportSnapshotTasksOutput { + s.NextToken = &v + return s +} + +type DescribeInstanceAttributeInput struct { + _ struct{} `type:"structure"` + + // The instance attribute. + // + // Note: The enaSupport attribute is not supported at this time. + // + // Attribute is a required field + Attribute *string `locationName:"attribute" type:"string" required:"true" enum:"InstanceAttributeName"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the instance. + // + // InstanceId is a required field + InstanceId *string `locationName:"instanceId" type:"string" required:"true"` +} + +// String returns the string representation +func (s DescribeInstanceAttributeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeInstanceAttributeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeInstanceAttributeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeInstanceAttributeInput"} + if s.Attribute == nil { + invalidParams.Add(request.NewErrParamRequired("Attribute")) + } + if s.InstanceId == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAttribute sets the Attribute field's value. +func (s *DescribeInstanceAttributeInput) SetAttribute(v string) *DescribeInstanceAttributeInput { + s.Attribute = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeInstanceAttributeInput) SetDryRun(v bool) *DescribeInstanceAttributeInput { + s.DryRun = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *DescribeInstanceAttributeInput) SetInstanceId(v string) *DescribeInstanceAttributeInput { + s.InstanceId = &v + return s +} + +// Describes an instance attribute. +type DescribeInstanceAttributeOutput struct { + _ struct{} `type:"structure"` + + // The block device mapping of the instance. + BlockDeviceMappings []*InstanceBlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"` + + // If the value is true, you can't terminate the instance through the Amazon + // EC2 console, CLI, or API; otherwise, you can. + DisableApiTermination *AttributeBooleanValue `locationName:"disableApiTermination" type:"structure"` + + // Indicates whether the instance is optimized for Amazon EBS I/O. + EbsOptimized *AttributeBooleanValue `locationName:"ebsOptimized" type:"structure"` + + // Indicates whether enhanced networking with ENA is enabled. + EnaSupport *AttributeBooleanValue `locationName:"enaSupport" type:"structure"` + + // The security groups associated with the instance. + Groups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"` + + // The ID of the instance. + InstanceId *string `locationName:"instanceId" type:"string"` + + // Indicates whether an instance stops or terminates when you initiate shutdown + // from the instance (using the operating system command for system shutdown). + InstanceInitiatedShutdownBehavior *AttributeValue `locationName:"instanceInitiatedShutdownBehavior" type:"structure"` + + // The instance type. + InstanceType *AttributeValue `locationName:"instanceType" type:"structure"` + + // The kernel ID. + KernelId *AttributeValue `locationName:"kernel" type:"structure"` + + // A list of product codes. + ProductCodes []*ProductCode `locationName:"productCodes" locationNameList:"item" type:"list"` + + // The RAM disk ID. + RamdiskId *AttributeValue `locationName:"ramdisk" type:"structure"` + + // The device name of the root device volume (for example, /dev/sda1). + RootDeviceName *AttributeValue `locationName:"rootDeviceName" type:"structure"` + + // Indicates whether source/destination checking is enabled. A value of true + // means that checking is enabled, and false means that checking is disabled. + // This value must be false for a NAT instance to perform NAT. + SourceDestCheck *AttributeBooleanValue `locationName:"sourceDestCheck" type:"structure"` + + // Indicates whether enhanced networking with the Intel 82599 Virtual Function + // interface is enabled. + SriovNetSupport *AttributeValue `locationName:"sriovNetSupport" type:"structure"` + + // The user data. + UserData *AttributeValue `locationName:"userData" type:"structure"` +} + +// String returns the string representation +func (s DescribeInstanceAttributeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeInstanceAttributeOutput) GoString() string { + return s.String() +} + +// SetBlockDeviceMappings sets the BlockDeviceMappings field's value. +func (s *DescribeInstanceAttributeOutput) SetBlockDeviceMappings(v []*InstanceBlockDeviceMapping) *DescribeInstanceAttributeOutput { + s.BlockDeviceMappings = v + return s +} + +// SetDisableApiTermination sets the DisableApiTermination field's value. +func (s *DescribeInstanceAttributeOutput) SetDisableApiTermination(v *AttributeBooleanValue) *DescribeInstanceAttributeOutput { + s.DisableApiTermination = v + return s +} + +// SetEbsOptimized sets the EbsOptimized field's value. +func (s *DescribeInstanceAttributeOutput) SetEbsOptimized(v *AttributeBooleanValue) *DescribeInstanceAttributeOutput { + s.EbsOptimized = v + return s +} + +// SetEnaSupport sets the EnaSupport field's value. +func (s *DescribeInstanceAttributeOutput) SetEnaSupport(v *AttributeBooleanValue) *DescribeInstanceAttributeOutput { + s.EnaSupport = v + return s +} + +// SetGroups sets the Groups field's value. +func (s *DescribeInstanceAttributeOutput) SetGroups(v []*GroupIdentifier) *DescribeInstanceAttributeOutput { + s.Groups = v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *DescribeInstanceAttributeOutput) SetInstanceId(v string) *DescribeInstanceAttributeOutput { + s.InstanceId = &v + return s +} + +// SetInstanceInitiatedShutdownBehavior sets the InstanceInitiatedShutdownBehavior field's value. +func (s *DescribeInstanceAttributeOutput) SetInstanceInitiatedShutdownBehavior(v *AttributeValue) *DescribeInstanceAttributeOutput { + s.InstanceInitiatedShutdownBehavior = v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *DescribeInstanceAttributeOutput) SetInstanceType(v *AttributeValue) *DescribeInstanceAttributeOutput { + s.InstanceType = v + return s +} + +// SetKernelId sets the KernelId field's value. +func (s *DescribeInstanceAttributeOutput) SetKernelId(v *AttributeValue) *DescribeInstanceAttributeOutput { + s.KernelId = v + return s +} + +// SetProductCodes sets the ProductCodes field's value. +func (s *DescribeInstanceAttributeOutput) SetProductCodes(v []*ProductCode) *DescribeInstanceAttributeOutput { + s.ProductCodes = v + return s +} + +// SetRamdiskId sets the RamdiskId field's value. +func (s *DescribeInstanceAttributeOutput) SetRamdiskId(v *AttributeValue) *DescribeInstanceAttributeOutput { + s.RamdiskId = v + return s +} + +// SetRootDeviceName sets the RootDeviceName field's value. +func (s *DescribeInstanceAttributeOutput) SetRootDeviceName(v *AttributeValue) *DescribeInstanceAttributeOutput { + s.RootDeviceName = v + return s +} + +// SetSourceDestCheck sets the SourceDestCheck field's value. +func (s *DescribeInstanceAttributeOutput) SetSourceDestCheck(v *AttributeBooleanValue) *DescribeInstanceAttributeOutput { + s.SourceDestCheck = v + return s +} + +// SetSriovNetSupport sets the SriovNetSupport field's value. +func (s *DescribeInstanceAttributeOutput) SetSriovNetSupport(v *AttributeValue) *DescribeInstanceAttributeOutput { + s.SriovNetSupport = v + return s +} + +// SetUserData sets the UserData field's value. +func (s *DescribeInstanceAttributeOutput) SetUserData(v *AttributeValue) *DescribeInstanceAttributeOutput { + s.UserData = v + return s +} + +type DescribeInstanceCreditSpecificationsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The filters. + // + // * instance-id - The ID of the instance. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The instance IDs. + // + // Default: Describes all your instances. + // + // Constraints: Maximum 1000 explicitly specified instance IDs. + InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list"` + + // The maximum number of results to return in a single call. To retrieve the + // remaining results, make another call with the returned NextToken value. This + // value can be between 5 and 1000. You cannot specify this parameter and the + // instance IDs parameter in the same call. + MaxResults *int64 `min:"5" type:"integer"` + + // The token to retrieve the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeInstanceCreditSpecificationsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeInstanceCreditSpecificationsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeInstanceCreditSpecificationsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeInstanceCreditSpecificationsInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeInstanceCreditSpecificationsInput) SetDryRun(v bool) *DescribeInstanceCreditSpecificationsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeInstanceCreditSpecificationsInput) SetFilters(v []*Filter) *DescribeInstanceCreditSpecificationsInput { + s.Filters = v + return s +} + +// SetInstanceIds sets the InstanceIds field's value. +func (s *DescribeInstanceCreditSpecificationsInput) SetInstanceIds(v []*string) *DescribeInstanceCreditSpecificationsInput { + s.InstanceIds = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeInstanceCreditSpecificationsInput) SetMaxResults(v int64) *DescribeInstanceCreditSpecificationsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeInstanceCreditSpecificationsInput) SetNextToken(v string) *DescribeInstanceCreditSpecificationsInput { + s.NextToken = &v + return s +} + +type DescribeInstanceCreditSpecificationsOutput struct { + _ struct{} `type:"structure"` + + // Information about the credit option for CPU usage of an instance. + InstanceCreditSpecifications []*InstanceCreditSpecification `locationName:"instanceCreditSpecificationSet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeInstanceCreditSpecificationsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeInstanceCreditSpecificationsOutput) GoString() string { + return s.String() +} + +// SetInstanceCreditSpecifications sets the InstanceCreditSpecifications field's value. +func (s *DescribeInstanceCreditSpecificationsOutput) SetInstanceCreditSpecifications(v []*InstanceCreditSpecification) *DescribeInstanceCreditSpecificationsOutput { + s.InstanceCreditSpecifications = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeInstanceCreditSpecificationsOutput) SetNextToken(v string) *DescribeInstanceCreditSpecificationsOutput { + s.NextToken = &v + return s +} + +type DescribeInstanceStatusInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The filters. + // + // * availability-zone - The Availability Zone of the instance. + // + // * event.code - The code for the scheduled event (instance-reboot | system-reboot + // | system-maintenance | instance-retirement | instance-stop). + // + // * event.description - A description of the event. + // + // * event.instance-event-id - The ID of the event whose date and time you + // are modifying. + // + // * event.not-after - The latest end time for the scheduled event (for example, + // 2014-09-15T17:15:20.000Z). + // + // * event.not-before - The earliest start time for the scheduled event (for + // example, 2014-09-15T17:15:20.000Z). + // + // * event.not-before-deadline - The deadline for starting the event (for + // example, 2014-09-15T17:15:20.000Z). + // + // * instance-state-code - The code for the instance state, as a 16-bit unsigned + // integer. The high byte is used for internal purposes and should be ignored. + // The low byte is set based on the state represented. The valid values are + // 0 (pending), 16 (running), 32 (shutting-down), 48 (terminated), 64 (stopping), + // and 80 (stopped). + // + // * instance-state-name - The state of the instance (pending | running | + // shutting-down | terminated | stopping | stopped). + // + // * instance-status.reachability - Filters on instance status where the + // name is reachability (passed | failed | initializing | insufficient-data). + // + // * instance-status.status - The status of the instance (ok | impaired | + // initializing | insufficient-data | not-applicable). + // + // * system-status.reachability - Filters on system status where the name + // is reachability (passed | failed | initializing | insufficient-data). + // + // * system-status.status - The system status of the instance (ok | impaired + // | initializing | insufficient-data | not-applicable). + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // When true, includes the health status for all instances. When false, includes + // the health status for running instances only. + // + // Default: false + IncludeAllInstances *bool `locationName:"includeAllInstances" type:"boolean"` + + // The instance IDs. + // + // Default: Describes all your instances. + // + // Constraints: Maximum 100 explicitly specified instance IDs. + InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list"` + + // The maximum number of results to return in a single call. To retrieve the + // remaining results, make another call with the returned NextToken value. This + // value can be between 5 and 1000. You cannot specify this parameter and the + // instance IDs parameter in the same call. + MaxResults *int64 `type:"integer"` + + // The token to retrieve the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeInstanceStatusInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeInstanceStatusInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeInstanceStatusInput) SetDryRun(v bool) *DescribeInstanceStatusInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeInstanceStatusInput) SetFilters(v []*Filter) *DescribeInstanceStatusInput { + s.Filters = v + return s +} + +// SetIncludeAllInstances sets the IncludeAllInstances field's value. +func (s *DescribeInstanceStatusInput) SetIncludeAllInstances(v bool) *DescribeInstanceStatusInput { + s.IncludeAllInstances = &v + return s +} + +// SetInstanceIds sets the InstanceIds field's value. +func (s *DescribeInstanceStatusInput) SetInstanceIds(v []*string) *DescribeInstanceStatusInput { + s.InstanceIds = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeInstanceStatusInput) SetMaxResults(v int64) *DescribeInstanceStatusInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeInstanceStatusInput) SetNextToken(v string) *DescribeInstanceStatusInput { + s.NextToken = &v + return s +} + +type DescribeInstanceStatusOutput struct { + _ struct{} `type:"structure"` + + // Information about the status of the instances. + InstanceStatuses []*InstanceStatus `locationName:"instanceStatusSet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeInstanceStatusOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeInstanceStatusOutput) GoString() string { + return s.String() +} + +// SetInstanceStatuses sets the InstanceStatuses field's value. +func (s *DescribeInstanceStatusOutput) SetInstanceStatuses(v []*InstanceStatus) *DescribeInstanceStatusOutput { + s.InstanceStatuses = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeInstanceStatusOutput) SetNextToken(v string) *DescribeInstanceStatusOutput { + s.NextToken = &v + return s +} + +type DescribeInstancesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The filters. + // + // * affinity - The affinity setting for an instance running on a Dedicated + // Host (default | host). + // + // * architecture - The instance architecture (i386 | x86_64 | arm64). + // + // * availability-zone - The Availability Zone of the instance. + // + // * block-device-mapping.attach-time - The attach time for an EBS volume + // mapped to the instance, for example, 2010-09-15T17:15:20.000Z. + // + // * block-device-mapping.delete-on-termination - A Boolean that indicates + // whether the EBS volume is deleted on instance termination. + // + // * block-device-mapping.device-name - The device name specified in the + // block device mapping (for example, /dev/sdh or xvdh). + // + // * block-device-mapping.status - The status for the EBS volume (attaching + // | attached | detaching | detached). + // + // * block-device-mapping.volume-id - The volume ID of the EBS volume. + // + // * client-token - The idempotency token you provided when you launched + // the instance. + // + // * dns-name - The public DNS name of the instance. + // + // * group-id - The ID of the security group for the instance. EC2-Classic + // only. + // + // * group-name - The name of the security group for the instance. EC2-Classic + // only. + // + // * hibernation-options.configured - A Boolean that indicates whether the + // instance is enabled for hibernation. A value of true means that the instance + // is enabled for hibernation. + // + // * host-id - The ID of the Dedicated Host on which the instance is running, + // if applicable. + // + // * hypervisor - The hypervisor type of the instance (ovm | xen). + // + // * iam-instance-profile.arn - The instance profile associated with the + // instance. Specified as an ARN. + // + // * image-id - The ID of the image used to launch the instance. + // + // * instance-id - The ID of the instance. + // + // * instance-lifecycle - Indicates whether this is a Spot Instance or a + // Scheduled Instance (spot | scheduled). + // + // * instance-state-code - The state of the instance, as a 16-bit unsigned + // integer. The high byte is used for internal purposes and should be ignored. + // The low byte is set based on the state represented. The valid values are: + // 0 (pending), 16 (running), 32 (shutting-down), 48 (terminated), 64 (stopping), + // and 80 (stopped). + // + // * instance-state-name - The state of the instance (pending | running | + // shutting-down | terminated | stopping | stopped). + // + // * instance-type - The type of instance (for example, t2.micro). + // + // * instance.group-id - The ID of the security group for the instance. + // + // * instance.group-name - The name of the security group for the instance. + // + // * ip-address - The public IPv4 address of the instance. + // + // * kernel-id - The kernel ID. + // + // * key-name - The name of the key pair used when the instance was launched. + // + // * launch-index - When launching multiple instances, this is the index + // for the instance in the launch group (for example, 0, 1, 2, and so on). + // + // * launch-time - The time when the instance was launched. + // + // * monitoring-state - Indicates whether detailed monitoring is enabled + // (disabled | enabled). + // + // * network-interface.addresses.private-ip-address - The private IPv4 address + // associated with the network interface. + // + // * network-interface.addresses.primary - Specifies whether the IPv4 address + // of the network interface is the primary private IPv4 address. + // + // * network-interface.addresses.association.public-ip - The ID of the association + // of an Elastic IP address (IPv4) with a network interface. + // + // * network-interface.addresses.association.ip-owner-id - The owner ID of + // the private IPv4 address associated with the network interface. + // + // * network-interface.association.public-ip - The address of the Elastic + // IP address (IPv4) bound to the network interface. + // + // * network-interface.association.ip-owner-id - The owner of the Elastic + // IP address (IPv4) associated with the network interface. + // + // * network-interface.association.allocation-id - The allocation ID returned + // when you allocated the Elastic IP address (IPv4) for your network interface. + // + // * network-interface.association.association-id - The association ID returned + // when the network interface was associated with an IPv4 address. + // + // * network-interface.attachment.attachment-id - The ID of the interface + // attachment. + // + // * network-interface.attachment.instance-id - The ID of the instance to + // which the network interface is attached. + // + // * network-interface.attachment.instance-owner-id - The owner ID of the + // instance to which the network interface is attached. + // + // * network-interface.attachment.device-index - The device index to which + // the network interface is attached. + // + // * network-interface.attachment.status - The status of the attachment (attaching + // | attached | detaching | detached). + // + // * network-interface.attachment.attach-time - The time that the network + // interface was attached to an instance. + // + // * network-interface.attachment.delete-on-termination - Specifies whether + // the attachment is deleted when an instance is terminated. + // + // * network-interface.availability-zone - The Availability Zone for the + // network interface. + // + // * network-interface.description - The description of the network interface. + // + // * network-interface.group-id - The ID of a security group associated with + // the network interface. + // + // * network-interface.group-name - The name of a security group associated + // with the network interface. + // + // * network-interface.ipv6-addresses.ipv6-address - The IPv6 address associated + // with the network interface. + // + // * network-interface.mac-address - The MAC address of the network interface. + // + // * network-interface.network-interface-id - The ID of the network interface. + // + // * network-interface.owner-id - The ID of the owner of the network interface. + // + // * network-interface.private-dns-name - The private DNS name of the network + // interface. + // + // * network-interface.requester-id - The requester ID for the network interface. + // + // * network-interface.requester-managed - Indicates whether the network + // interface is being managed by AWS. + // + // * network-interface.status - The status of the network interface (available) + // | in-use). + // + // * network-interface.source-dest-check - Whether the network interface + // performs source/destination checking. A value of true means that checking + // is enabled, and false means that checking is disabled. The value must + // be false for the network interface to perform network address translation + // (NAT) in your VPC. + // + // * network-interface.subnet-id - The ID of the subnet for the network interface. + // + // * network-interface.vpc-id - The ID of the VPC for the network interface. + // + // * owner-id - The AWS account ID of the instance owner. + // + // * placement-group-name - The name of the placement group for the instance. + // + // * placement-partition-number - The partition in which the instance is + // located. + // + // * platform - The platform. To list only Windows instances, use windows. + // + // * private-dns-name - The private IPv4 DNS name of the instance. + // + // * private-ip-address - The private IPv4 address of the instance. + // + // * product-code - The product code associated with the AMI used to launch + // the instance. + // + // * product-code.type - The type of product code (devpay | marketplace). + // + // * ramdisk-id - The RAM disk ID. + // + // * reason - The reason for the current state of the instance (for example, + // shows "User Initiated [date]" when you stop or terminate the instance). + // Similar to the state-reason-code filter. + // + // * requester-id - The ID of the entity that launched the instance on your + // behalf (for example, AWS Management Console, Auto Scaling, and so on). + // + // * reservation-id - The ID of the instance's reservation. A reservation + // ID is created any time you launch an instance. A reservation ID has a + // one-to-one relationship with an instance launch request, but can be associated + // with more than one instance if you launch multiple instances using the + // same launch request. For example, if you launch one instance, you get + // one reservation ID. If you launch ten instances using the same launch + // request, you also get one reservation ID. + // + // * root-device-name - The device name of the root device volume (for example, + // /dev/sda1). + // + // * root-device-type - The type of the root device volume (ebs | instance-store). + // + // * source-dest-check - Indicates whether the instance performs source/destination + // checking. A value of true means that checking is enabled, and false means + // that checking is disabled. The value must be false for the instance to + // perform network address translation (NAT) in your VPC. + // + // * spot-instance-request-id - The ID of the Spot Instance request. + // + // * state-reason-code - The reason code for the state change. + // + // * state-reason-message - A message that describes the state change. + // + // * subnet-id - The ID of the subnet for the instance. + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources that have a tag with a specific key, regardless + // of the tag value. + // + // * tenancy - The tenancy of an instance (dedicated | default | host). + // + // * virtualization-type - The virtualization type of the instance (paravirtual + // | hvm). + // + // * vpc-id - The ID of the VPC that the instance is running in. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The instance IDs. + // + // Default: Describes all your instances. + InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list"` + + // The maximum number of results to return in a single call. To retrieve the + // remaining results, make another call with the returned NextToken value. This + // value can be between 5 and 1000. You cannot specify this parameter and the + // instance IDs parameter in the same call. + MaxResults *int64 `locationName:"maxResults" type:"integer"` + + // The token to request the next page of results. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeInstancesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeInstancesInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeInstancesInput) SetDryRun(v bool) *DescribeInstancesInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeInstancesInput) SetFilters(v []*Filter) *DescribeInstancesInput { + s.Filters = v + return s +} + +// SetInstanceIds sets the InstanceIds field's value. +func (s *DescribeInstancesInput) SetInstanceIds(v []*string) *DescribeInstancesInput { + s.InstanceIds = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeInstancesInput) SetMaxResults(v int64) *DescribeInstancesInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeInstancesInput) SetNextToken(v string) *DescribeInstancesInput { + s.NextToken = &v + return s +} + +type DescribeInstancesOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the reservations. + Reservations []*Reservation `locationName:"reservationSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeInstancesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeInstancesOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeInstancesOutput) SetNextToken(v string) *DescribeInstancesOutput { + s.NextToken = &v + return s +} + +// SetReservations sets the Reservations field's value. +func (s *DescribeInstancesOutput) SetReservations(v []*Reservation) *DescribeInstancesOutput { + s.Reservations = v + return s +} + +type DescribeInternetGatewaysInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // One or more filters. + // + // * attachment.state - The current state of the attachment between the gateway + // and the VPC (available). Present only if a VPC is attached. + // + // * attachment.vpc-id - The ID of an attached VPC. + // + // * internet-gateway-id - The ID of the Internet gateway. + // + // * owner-id - The ID of the AWS account that owns the internet gateway. + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // One or more internet gateway IDs. + // + // Default: Describes all your internet gateways. + InternetGatewayIds []*string `locationName:"internetGatewayId" locationNameList:"item" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `min:"5" type:"integer"` + + // The token for the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeInternetGatewaysInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeInternetGatewaysInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeInternetGatewaysInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeInternetGatewaysInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeInternetGatewaysInput) SetDryRun(v bool) *DescribeInternetGatewaysInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeInternetGatewaysInput) SetFilters(v []*Filter) *DescribeInternetGatewaysInput { + s.Filters = v + return s +} + +// SetInternetGatewayIds sets the InternetGatewayIds field's value. +func (s *DescribeInternetGatewaysInput) SetInternetGatewayIds(v []*string) *DescribeInternetGatewaysInput { + s.InternetGatewayIds = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeInternetGatewaysInput) SetMaxResults(v int64) *DescribeInternetGatewaysInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeInternetGatewaysInput) SetNextToken(v string) *DescribeInternetGatewaysInput { + s.NextToken = &v + return s +} + +type DescribeInternetGatewaysOutput struct { + _ struct{} `type:"structure"` + + // Information about one or more internet gateways. + InternetGateways []*InternetGateway `locationName:"internetGatewaySet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeInternetGatewaysOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeInternetGatewaysOutput) GoString() string { + return s.String() +} + +// SetInternetGateways sets the InternetGateways field's value. +func (s *DescribeInternetGatewaysOutput) SetInternetGateways(v []*InternetGateway) *DescribeInternetGatewaysOutput { + s.InternetGateways = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeInternetGatewaysOutput) SetNextToken(v string) *DescribeInternetGatewaysOutput { + s.NextToken = &v + return s +} + +type DescribeKeyPairsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The filters. + // + // * fingerprint - The fingerprint of the key pair. + // + // * key-name - The name of the key pair. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The key pair names. + // + // Default: Describes all your key pairs. + KeyNames []*string `locationName:"KeyName" locationNameList:"KeyName" type:"list"` +} + +// String returns the string representation +func (s DescribeKeyPairsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeKeyPairsInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeKeyPairsInput) SetDryRun(v bool) *DescribeKeyPairsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeKeyPairsInput) SetFilters(v []*Filter) *DescribeKeyPairsInput { + s.Filters = v + return s +} + +// SetKeyNames sets the KeyNames field's value. +func (s *DescribeKeyPairsInput) SetKeyNames(v []*string) *DescribeKeyPairsInput { + s.KeyNames = v + return s +} + +type DescribeKeyPairsOutput struct { + _ struct{} `type:"structure"` + + // Information about the key pairs. + KeyPairs []*KeyPairInfo `locationName:"keySet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeKeyPairsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeKeyPairsOutput) GoString() string { + return s.String() +} + +// SetKeyPairs sets the KeyPairs field's value. +func (s *DescribeKeyPairsOutput) SetKeyPairs(v []*KeyPairInfo) *DescribeKeyPairsOutput { + s.KeyPairs = v + return s +} + +type DescribeLaunchTemplateVersionsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. + // + // * create-time - The time the launch template version was created. + // + // * ebs-optimized - A boolean that indicates whether the instance is optimized + // for Amazon EBS I/O. + // + // * iam-instance-profile - The ARN of the IAM instance profile. + // + // * image-id - The ID of the AMI. + // + // * instance-type - The instance type. + // + // * is-default-version - A boolean that indicates whether the launch template + // version is the default version. + // + // * kernel-id - The kernel ID. + // + // * ram-disk-id - The RAM disk ID. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The ID of the launch template. You must specify either the launch template + // ID or launch template name in the request. + LaunchTemplateId *string `type:"string"` + + // The name of the launch template. You must specify either the launch template + // ID or launch template name in the request. + LaunchTemplateName *string `min:"3" type:"string"` + + // The maximum number of results to return in a single call. To retrieve the + // remaining results, make another call with the returned NextToken value. This + // value can be between 1 and 200. + MaxResults *int64 `type:"integer"` + + // The version number up to which to describe launch template versions. + MaxVersion *string `type:"string"` + + // The version number after which to describe launch template versions. + MinVersion *string `type:"string"` + + // The token to request the next page of results. + NextToken *string `type:"string"` + + // One or more versions of the launch template. + Versions []*string `locationName:"LaunchTemplateVersion" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeLaunchTemplateVersionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeLaunchTemplateVersionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeLaunchTemplateVersionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeLaunchTemplateVersionsInput"} + if s.LaunchTemplateName != nil && len(*s.LaunchTemplateName) < 3 { + invalidParams.Add(request.NewErrParamMinLen("LaunchTemplateName", 3)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeLaunchTemplateVersionsInput) SetDryRun(v bool) *DescribeLaunchTemplateVersionsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeLaunchTemplateVersionsInput) SetFilters(v []*Filter) *DescribeLaunchTemplateVersionsInput { + s.Filters = v + return s +} + +// SetLaunchTemplateId sets the LaunchTemplateId field's value. +func (s *DescribeLaunchTemplateVersionsInput) SetLaunchTemplateId(v string) *DescribeLaunchTemplateVersionsInput { + s.LaunchTemplateId = &v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *DescribeLaunchTemplateVersionsInput) SetLaunchTemplateName(v string) *DescribeLaunchTemplateVersionsInput { + s.LaunchTemplateName = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeLaunchTemplateVersionsInput) SetMaxResults(v int64) *DescribeLaunchTemplateVersionsInput { + s.MaxResults = &v + return s +} + +// SetMaxVersion sets the MaxVersion field's value. +func (s *DescribeLaunchTemplateVersionsInput) SetMaxVersion(v string) *DescribeLaunchTemplateVersionsInput { + s.MaxVersion = &v + return s +} + +// SetMinVersion sets the MinVersion field's value. +func (s *DescribeLaunchTemplateVersionsInput) SetMinVersion(v string) *DescribeLaunchTemplateVersionsInput { + s.MinVersion = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeLaunchTemplateVersionsInput) SetNextToken(v string) *DescribeLaunchTemplateVersionsInput { + s.NextToken = &v + return s +} + +// SetVersions sets the Versions field's value. +func (s *DescribeLaunchTemplateVersionsInput) SetVersions(v []*string) *DescribeLaunchTemplateVersionsInput { + s.Versions = v + return s +} + +type DescribeLaunchTemplateVersionsOutput struct { + _ struct{} `type:"structure"` + + // Information about the launch template versions. + LaunchTemplateVersions []*LaunchTemplateVersion `locationName:"launchTemplateVersionSet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeLaunchTemplateVersionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeLaunchTemplateVersionsOutput) GoString() string { + return s.String() +} + +// SetLaunchTemplateVersions sets the LaunchTemplateVersions field's value. +func (s *DescribeLaunchTemplateVersionsOutput) SetLaunchTemplateVersions(v []*LaunchTemplateVersion) *DescribeLaunchTemplateVersionsOutput { + s.LaunchTemplateVersions = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeLaunchTemplateVersionsOutput) SetNextToken(v string) *DescribeLaunchTemplateVersionsOutput { + s.NextToken = &v + return s +} + +type DescribeLaunchTemplatesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. + // + // * create-time - The time the launch template was created. + // + // * launch-template-name - The name of the launch template. + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // One or more launch template IDs. + LaunchTemplateIds []*string `locationName:"LaunchTemplateId" locationNameList:"item" type:"list"` + + // One or more launch template names. + LaunchTemplateNames []*string `locationName:"LaunchTemplateName" locationNameList:"item" type:"list"` + + // The maximum number of results to return in a single call. To retrieve the + // remaining results, make another call with the returned NextToken value. This + // value can be between 1 and 200. + MaxResults *int64 `min:"1" type:"integer"` + + // The token to request the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeLaunchTemplatesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeLaunchTemplatesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeLaunchTemplatesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeLaunchTemplatesInput"} + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeLaunchTemplatesInput) SetDryRun(v bool) *DescribeLaunchTemplatesInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeLaunchTemplatesInput) SetFilters(v []*Filter) *DescribeLaunchTemplatesInput { + s.Filters = v + return s +} + +// SetLaunchTemplateIds sets the LaunchTemplateIds field's value. +func (s *DescribeLaunchTemplatesInput) SetLaunchTemplateIds(v []*string) *DescribeLaunchTemplatesInput { + s.LaunchTemplateIds = v + return s +} + +// SetLaunchTemplateNames sets the LaunchTemplateNames field's value. +func (s *DescribeLaunchTemplatesInput) SetLaunchTemplateNames(v []*string) *DescribeLaunchTemplatesInput { + s.LaunchTemplateNames = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeLaunchTemplatesInput) SetMaxResults(v int64) *DescribeLaunchTemplatesInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeLaunchTemplatesInput) SetNextToken(v string) *DescribeLaunchTemplatesInput { + s.NextToken = &v + return s +} + +type DescribeLaunchTemplatesOutput struct { + _ struct{} `type:"structure"` + + // Information about the launch templates. + LaunchTemplates []*LaunchTemplate `locationName:"launchTemplates" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeLaunchTemplatesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeLaunchTemplatesOutput) GoString() string { + return s.String() +} + +// SetLaunchTemplates sets the LaunchTemplates field's value. +func (s *DescribeLaunchTemplatesOutput) SetLaunchTemplates(v []*LaunchTemplate) *DescribeLaunchTemplatesOutput { + s.LaunchTemplates = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeLaunchTemplatesOutput) SetNextToken(v string) *DescribeLaunchTemplatesOutput { + s.NextToken = &v + return s +} + +type DescribeMovingAddressesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // One or more filters. + // + // * moving-status - The status of the Elastic IP address (MovingToVpc | + // RestoringToClassic). + Filters []*Filter `locationName:"filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return for the request in a single page. + // The remaining results of the initial request can be seen by sending another + // request with the returned NextToken value. This value can be between 5 and + // 1000; if MaxResults is given a value outside of this range, an error is returned. + // + // Default: If no value is provided, the default is 1000. + MaxResults *int64 `locationName:"maxResults" min:"5" type:"integer"` + + // The token for the next page of results. + NextToken *string `locationName:"nextToken" type:"string"` + + // One or more Elastic IP addresses. + PublicIps []*string `locationName:"publicIp" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeMovingAddressesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeMovingAddressesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeMovingAddressesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeMovingAddressesInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeMovingAddressesInput) SetDryRun(v bool) *DescribeMovingAddressesInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeMovingAddressesInput) SetFilters(v []*Filter) *DescribeMovingAddressesInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeMovingAddressesInput) SetMaxResults(v int64) *DescribeMovingAddressesInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeMovingAddressesInput) SetNextToken(v string) *DescribeMovingAddressesInput { + s.NextToken = &v + return s +} + +// SetPublicIps sets the PublicIps field's value. +func (s *DescribeMovingAddressesInput) SetPublicIps(v []*string) *DescribeMovingAddressesInput { + s.PublicIps = v + return s +} + +type DescribeMovingAddressesOutput struct { + _ struct{} `type:"structure"` + + // The status for each Elastic IP address. + MovingAddressStatuses []*MovingAddressStatus `locationName:"movingAddressStatusSet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeMovingAddressesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeMovingAddressesOutput) GoString() string { + return s.String() +} + +// SetMovingAddressStatuses sets the MovingAddressStatuses field's value. +func (s *DescribeMovingAddressesOutput) SetMovingAddressStatuses(v []*MovingAddressStatus) *DescribeMovingAddressesOutput { + s.MovingAddressStatuses = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeMovingAddressesOutput) SetNextToken(v string) *DescribeMovingAddressesOutput { + s.NextToken = &v + return s +} + +type DescribeNatGatewaysInput struct { + _ struct{} `type:"structure"` + + // One or more filters. + // + // * nat-gateway-id - The ID of the NAT gateway. + // + // * state - The state of the NAT gateway (pending | failed | available | + // deleting | deleted). + // + // * subnet-id - The ID of the subnet in which the NAT gateway resides. + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + // + // * vpc-id - The ID of the VPC in which the NAT gateway resides. + Filter []*Filter `locationNameList:"Filter" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `min:"5" type:"integer"` + + // One or more NAT gateway IDs. + NatGatewayIds []*string `locationName:"NatGatewayId" locationNameList:"item" type:"list"` + + // The token for the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeNatGatewaysInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeNatGatewaysInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeNatGatewaysInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeNatGatewaysInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetFilter sets the Filter field's value. +func (s *DescribeNatGatewaysInput) SetFilter(v []*Filter) *DescribeNatGatewaysInput { + s.Filter = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeNatGatewaysInput) SetMaxResults(v int64) *DescribeNatGatewaysInput { + s.MaxResults = &v + return s +} + +// SetNatGatewayIds sets the NatGatewayIds field's value. +func (s *DescribeNatGatewaysInput) SetNatGatewayIds(v []*string) *DescribeNatGatewaysInput { + s.NatGatewayIds = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeNatGatewaysInput) SetNextToken(v string) *DescribeNatGatewaysInput { + s.NextToken = &v + return s +} + +type DescribeNatGatewaysOutput struct { + _ struct{} `type:"structure"` + + // Information about the NAT gateways. + NatGateways []*NatGateway `locationName:"natGatewaySet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeNatGatewaysOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeNatGatewaysOutput) GoString() string { + return s.String() +} + +// SetNatGateways sets the NatGateways field's value. +func (s *DescribeNatGatewaysOutput) SetNatGateways(v []*NatGateway) *DescribeNatGatewaysOutput { + s.NatGateways = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeNatGatewaysOutput) SetNextToken(v string) *DescribeNatGatewaysOutput { + s.NextToken = &v + return s +} + +type DescribeNetworkAclsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // One or more filters. + // + // * association.association-id - The ID of an association ID for the ACL. + // + // * association.network-acl-id - The ID of the network ACL involved in the + // association. + // + // * association.subnet-id - The ID of the subnet involved in the association. + // + // * default - Indicates whether the ACL is the default network ACL for the + // VPC. + // + // * entry.cidr - The IPv4 CIDR range specified in the entry. + // + // * entry.icmp.code - The ICMP code specified in the entry, if any. + // + // * entry.icmp.type - The ICMP type specified in the entry, if any. + // + // * entry.ipv6-cidr - The IPv6 CIDR range specified in the entry. + // + // * entry.port-range.from - The start of the port range specified in the + // entry. + // + // * entry.port-range.to - The end of the port range specified in the entry. + // + // * entry.protocol - The protocol specified in the entry (tcp | udp | icmp + // or a protocol number). + // + // * entry.rule-action - Allows or denies the matching traffic (allow | deny). + // + // * entry.rule-number - The number of an entry (in other words, rule) in + // the set of ACL entries. + // + // * network-acl-id - The ID of the network ACL. + // + // * owner-id - The ID of the AWS account that owns the network ACL. + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + // + // * vpc-id - The ID of the VPC for the network ACL. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `min:"5" type:"integer"` + + // One or more network ACL IDs. + // + // Default: Describes all your network ACLs. + NetworkAclIds []*string `locationName:"NetworkAclId" locationNameList:"item" type:"list"` + + // The token for the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeNetworkAclsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeNetworkAclsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeNetworkAclsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeNetworkAclsInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeNetworkAclsInput) SetDryRun(v bool) *DescribeNetworkAclsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeNetworkAclsInput) SetFilters(v []*Filter) *DescribeNetworkAclsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeNetworkAclsInput) SetMaxResults(v int64) *DescribeNetworkAclsInput { + s.MaxResults = &v + return s +} + +// SetNetworkAclIds sets the NetworkAclIds field's value. +func (s *DescribeNetworkAclsInput) SetNetworkAclIds(v []*string) *DescribeNetworkAclsInput { + s.NetworkAclIds = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeNetworkAclsInput) SetNextToken(v string) *DescribeNetworkAclsInput { + s.NextToken = &v + return s +} + +type DescribeNetworkAclsOutput struct { + _ struct{} `type:"structure"` + + // Information about one or more network ACLs. + NetworkAcls []*NetworkAcl `locationName:"networkAclSet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeNetworkAclsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeNetworkAclsOutput) GoString() string { + return s.String() +} + +// SetNetworkAcls sets the NetworkAcls field's value. +func (s *DescribeNetworkAclsOutput) SetNetworkAcls(v []*NetworkAcl) *DescribeNetworkAclsOutput { + s.NetworkAcls = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeNetworkAclsOutput) SetNextToken(v string) *DescribeNetworkAclsOutput { + s.NextToken = &v + return s +} + +// Contains the parameters for DescribeNetworkInterfaceAttribute. +type DescribeNetworkInterfaceAttributeInput struct { + _ struct{} `type:"structure"` + + // The attribute of the network interface. This parameter is required. + Attribute *string `locationName:"attribute" type:"string" enum:"NetworkInterfaceAttribute"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the network interface. + // + // NetworkInterfaceId is a required field + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string" required:"true"` +} + +// String returns the string representation +func (s DescribeNetworkInterfaceAttributeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeNetworkInterfaceAttributeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeNetworkInterfaceAttributeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeNetworkInterfaceAttributeInput"} + if s.NetworkInterfaceId == nil { + invalidParams.Add(request.NewErrParamRequired("NetworkInterfaceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAttribute sets the Attribute field's value. +func (s *DescribeNetworkInterfaceAttributeInput) SetAttribute(v string) *DescribeNetworkInterfaceAttributeInput { + s.Attribute = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeNetworkInterfaceAttributeInput) SetDryRun(v bool) *DescribeNetworkInterfaceAttributeInput { + s.DryRun = &v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *DescribeNetworkInterfaceAttributeInput) SetNetworkInterfaceId(v string) *DescribeNetworkInterfaceAttributeInput { + s.NetworkInterfaceId = &v + return s +} + +// Contains the output of DescribeNetworkInterfaceAttribute. +type DescribeNetworkInterfaceAttributeOutput struct { + _ struct{} `type:"structure"` + + // The attachment (if any) of the network interface. + Attachment *NetworkInterfaceAttachment `locationName:"attachment" type:"structure"` + + // The description of the network interface. + Description *AttributeValue `locationName:"description" type:"structure"` + + // The security groups associated with the network interface. + Groups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"` + + // The ID of the network interface. + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` + + // Indicates whether source/destination checking is enabled. + SourceDestCheck *AttributeBooleanValue `locationName:"sourceDestCheck" type:"structure"` +} + +// String returns the string representation +func (s DescribeNetworkInterfaceAttributeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeNetworkInterfaceAttributeOutput) GoString() string { + return s.String() +} + +// SetAttachment sets the Attachment field's value. +func (s *DescribeNetworkInterfaceAttributeOutput) SetAttachment(v *NetworkInterfaceAttachment) *DescribeNetworkInterfaceAttributeOutput { + s.Attachment = v + return s +} + +// SetDescription sets the Description field's value. +func (s *DescribeNetworkInterfaceAttributeOutput) SetDescription(v *AttributeValue) *DescribeNetworkInterfaceAttributeOutput { + s.Description = v + return s +} + +// SetGroups sets the Groups field's value. +func (s *DescribeNetworkInterfaceAttributeOutput) SetGroups(v []*GroupIdentifier) *DescribeNetworkInterfaceAttributeOutput { + s.Groups = v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *DescribeNetworkInterfaceAttributeOutput) SetNetworkInterfaceId(v string) *DescribeNetworkInterfaceAttributeOutput { + s.NetworkInterfaceId = &v + return s +} + +// SetSourceDestCheck sets the SourceDestCheck field's value. +func (s *DescribeNetworkInterfaceAttributeOutput) SetSourceDestCheck(v *AttributeBooleanValue) *DescribeNetworkInterfaceAttributeOutput { + s.SourceDestCheck = v + return s +} + +// Contains the parameters for DescribeNetworkInterfacePermissions. +type DescribeNetworkInterfacePermissionsInput struct { + _ struct{} `type:"structure"` + + // One or more filters. + // + // * network-interface-permission.network-interface-permission-id - The ID + // of the permission. + // + // * network-interface-permission.network-interface-id - The ID of the network + // interface. + // + // * network-interface-permission.aws-account-id - The AWS account ID. + // + // * network-interface-permission.aws-service - The AWS service. + // + // * network-interface-permission.permission - The type of permission (INSTANCE-ATTACH + // | EIP-ASSOCIATE). + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return in a single call. To retrieve the + // remaining results, make another call with the returned NextToken value. If + // this parameter is not specified, up to 50 results are returned by default. + MaxResults *int64 `min:"5" type:"integer"` + + // One or more network interface permission IDs. + NetworkInterfacePermissionIds []*string `locationName:"NetworkInterfacePermissionId" type:"list"` + + // The token to request the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeNetworkInterfacePermissionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeNetworkInterfacePermissionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeNetworkInterfacePermissionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeNetworkInterfacePermissionsInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetFilters sets the Filters field's value. +func (s *DescribeNetworkInterfacePermissionsInput) SetFilters(v []*Filter) *DescribeNetworkInterfacePermissionsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeNetworkInterfacePermissionsInput) SetMaxResults(v int64) *DescribeNetworkInterfacePermissionsInput { + s.MaxResults = &v + return s +} + +// SetNetworkInterfacePermissionIds sets the NetworkInterfacePermissionIds field's value. +func (s *DescribeNetworkInterfacePermissionsInput) SetNetworkInterfacePermissionIds(v []*string) *DescribeNetworkInterfacePermissionsInput { + s.NetworkInterfacePermissionIds = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeNetworkInterfacePermissionsInput) SetNextToken(v string) *DescribeNetworkInterfacePermissionsInput { + s.NextToken = &v + return s +} + +// Contains the output for DescribeNetworkInterfacePermissions. +type DescribeNetworkInterfacePermissionsOutput struct { + _ struct{} `type:"structure"` + + // The network interface permissions. + NetworkInterfacePermissions []*NetworkInterfacePermission `locationName:"networkInterfacePermissions" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeNetworkInterfacePermissionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeNetworkInterfacePermissionsOutput) GoString() string { + return s.String() +} + +// SetNetworkInterfacePermissions sets the NetworkInterfacePermissions field's value. +func (s *DescribeNetworkInterfacePermissionsOutput) SetNetworkInterfacePermissions(v []*NetworkInterfacePermission) *DescribeNetworkInterfacePermissionsOutput { + s.NetworkInterfacePermissions = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeNetworkInterfacePermissionsOutput) SetNextToken(v string) *DescribeNetworkInterfacePermissionsOutput { + s.NextToken = &v + return s +} + +// Contains the parameters for DescribeNetworkInterfaces. +type DescribeNetworkInterfacesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // One or more filters. + // + // * addresses.private-ip-address - The private IPv4 addresses associated + // with the network interface. + // + // * addresses.primary - Whether the private IPv4 address is the primary + // IP address associated with the network interface. + // + // * addresses.association.public-ip - The association ID returned when the + // network interface was associated with the Elastic IP address (IPv4). + // + // * addresses.association.owner-id - The owner ID of the addresses associated + // with the network interface. + // + // * association.association-id - The association ID returned when the network + // interface was associated with an IPv4 address. + // + // * association.allocation-id - The allocation ID returned when you allocated + // the Elastic IP address (IPv4) for your network interface. + // + // * association.ip-owner-id - The owner of the Elastic IP address (IPv4) + // associated with the network interface. + // + // * association.public-ip - The address of the Elastic IP address (IPv4) + // bound to the network interface. + // + // * association.public-dns-name - The public DNS name for the network interface + // (IPv4). + // + // * attachment.attachment-id - The ID of the interface attachment. + // + // * attachment.attach-time - The time that the network interface was attached + // to an instance. + // + // * attachment.delete-on-termination - Indicates whether the attachment + // is deleted when an instance is terminated. + // + // * attachment.device-index - The device index to which the network interface + // is attached. + // + // * attachment.instance-id - The ID of the instance to which the network + // interface is attached. + // + // * attachment.instance-owner-id - The owner ID of the instance to which + // the network interface is attached. + // + // * attachment.nat-gateway-id - The ID of the NAT gateway to which the network + // interface is attached. + // + // * attachment.status - The status of the attachment (attaching | attached + // | detaching | detached). + // + // * availability-zone - The Availability Zone of the network interface. + // + // * description - The description of the network interface. + // + // * group-id - The ID of a security group associated with the network interface. + // + // * group-name - The name of a security group associated with the network + // interface. + // + // * ipv6-addresses.ipv6-address - An IPv6 address associated with the network + // interface. + // + // * mac-address - The MAC address of the network interface. + // + // * network-interface-id - The ID of the network interface. + // + // * owner-id - The AWS account ID of the network interface owner. + // + // * private-ip-address - The private IPv4 address or addresses of the network + // interface. + // + // * private-dns-name - The private DNS name of the network interface (IPv4). + // + // * requester-id - The ID of the entity that launched the instance on your + // behalf (for example, AWS Management Console, Auto Scaling, and so on). + // + // * requester-managed - Indicates whether the network interface is being + // managed by an AWS service (for example, AWS Management Console, Auto Scaling, + // and so on). + // + // * source-dest-check - Indicates whether the network interface performs + // source/destination checking. A value of true means checking is enabled, + // and false means checking is disabled. The value must be false for the + // network interface to perform network address translation (NAT) in your + // VPC. + // + // * status - The status of the network interface. If the network interface + // is not attached to an instance, the status is available; if a network + // interface is attached to an instance the status is in-use. + // + // * subnet-id - The ID of the subnet for the network interface. + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + // + // * vpc-id - The ID of the VPC for the network interface. + Filters []*Filter `locationName:"filter" locationNameList:"Filter" type:"list"` + + // The maximum number of items to return for this request. The request returns + // a token that you can specify in a subsequent call to get the next set of + // results. + MaxResults *int64 `min:"5" type:"integer"` + + // One or more network interface IDs. + // + // Default: Describes all your network interfaces. + NetworkInterfaceIds []*string `locationName:"NetworkInterfaceId" locationNameList:"item" type:"list"` + + // The token to retrieve the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeNetworkInterfacesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeNetworkInterfacesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeNetworkInterfacesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeNetworkInterfacesInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeNetworkInterfacesInput) SetDryRun(v bool) *DescribeNetworkInterfacesInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeNetworkInterfacesInput) SetFilters(v []*Filter) *DescribeNetworkInterfacesInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeNetworkInterfacesInput) SetMaxResults(v int64) *DescribeNetworkInterfacesInput { + s.MaxResults = &v + return s +} + +// SetNetworkInterfaceIds sets the NetworkInterfaceIds field's value. +func (s *DescribeNetworkInterfacesInput) SetNetworkInterfaceIds(v []*string) *DescribeNetworkInterfacesInput { + s.NetworkInterfaceIds = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeNetworkInterfacesInput) SetNextToken(v string) *DescribeNetworkInterfacesInput { + s.NextToken = &v + return s +} + +// Contains the output of DescribeNetworkInterfaces. +type DescribeNetworkInterfacesOutput struct { + _ struct{} `type:"structure"` + + // Information about one or more network interfaces. + NetworkInterfaces []*NetworkInterface `locationName:"networkInterfaceSet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeNetworkInterfacesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeNetworkInterfacesOutput) GoString() string { + return s.String() +} + +// SetNetworkInterfaces sets the NetworkInterfaces field's value. +func (s *DescribeNetworkInterfacesOutput) SetNetworkInterfaces(v []*NetworkInterface) *DescribeNetworkInterfacesOutput { + s.NetworkInterfaces = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeNetworkInterfacesOutput) SetNextToken(v string) *DescribeNetworkInterfacesOutput { + s.NextToken = &v + return s +} + +type DescribePlacementGroupsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The filters. + // + // * group-name - The name of the placement group. + // + // * state - The state of the placement group (pending | available | deleting + // | deleted). + // + // * strategy - The strategy of the placement group (cluster | spread | partition). + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The names of the placement groups. + // + // Default: Describes all your placement groups, or only those otherwise specified. + GroupNames []*string `locationName:"groupName" type:"list"` +} + +// String returns the string representation +func (s DescribePlacementGroupsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribePlacementGroupsInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribePlacementGroupsInput) SetDryRun(v bool) *DescribePlacementGroupsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribePlacementGroupsInput) SetFilters(v []*Filter) *DescribePlacementGroupsInput { + s.Filters = v + return s +} + +// SetGroupNames sets the GroupNames field's value. +func (s *DescribePlacementGroupsInput) SetGroupNames(v []*string) *DescribePlacementGroupsInput { + s.GroupNames = v + return s +} + +type DescribePlacementGroupsOutput struct { + _ struct{} `type:"structure"` + + // Information about the placement groups. + PlacementGroups []*PlacementGroup `locationName:"placementGroupSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribePlacementGroupsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribePlacementGroupsOutput) GoString() string { + return s.String() +} + +// SetPlacementGroups sets the PlacementGroups field's value. +func (s *DescribePlacementGroupsOutput) SetPlacementGroups(v []*PlacementGroup) *DescribePlacementGroupsOutput { + s.PlacementGroups = v + return s +} + +type DescribePrefixListsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. + // + // * prefix-list-id: The ID of a prefix list. + // + // * prefix-list-name: The name of a prefix list. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `type:"integer"` + + // The token for the next page of results. + NextToken *string `type:"string"` + + // One or more prefix list IDs. + PrefixListIds []*string `locationName:"PrefixListId" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribePrefixListsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribePrefixListsInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribePrefixListsInput) SetDryRun(v bool) *DescribePrefixListsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribePrefixListsInput) SetFilters(v []*Filter) *DescribePrefixListsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribePrefixListsInput) SetMaxResults(v int64) *DescribePrefixListsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribePrefixListsInput) SetNextToken(v string) *DescribePrefixListsInput { + s.NextToken = &v + return s +} + +// SetPrefixListIds sets the PrefixListIds field's value. +func (s *DescribePrefixListsInput) SetPrefixListIds(v []*string) *DescribePrefixListsInput { + s.PrefixListIds = v + return s +} + +type DescribePrefixListsOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // All available prefix lists. + PrefixLists []*PrefixList `locationName:"prefixListSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribePrefixListsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribePrefixListsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribePrefixListsOutput) SetNextToken(v string) *DescribePrefixListsOutput { + s.NextToken = &v + return s +} + +// SetPrefixLists sets the PrefixLists field's value. +func (s *DescribePrefixListsOutput) SetPrefixLists(v []*PrefixList) *DescribePrefixListsOutput { + s.PrefixLists = v + return s +} + +type DescribePrincipalIdFormatInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The maximum number of results to return in a single call. To retrieve the + // remaining results, make another call with the returned NextToken value. + MaxResults *int64 `min:"1" type:"integer"` + + // The token to request the next page of results. + NextToken *string `type:"string"` + + // The type of resource: bundle | conversion-task | customer-gateway | dhcp-options + // | elastic-ip-allocation | elastic-ip-association | export-task | flow-log + // | image | import-task | instance | internet-gateway | network-acl | network-acl-association + // | network-interface | network-interface-attachment | prefix-list | reservation + // | route-table | route-table-association | security-group | snapshot | subnet + // | subnet-cidr-block-association | volume | vpc | vpc-cidr-block-association + // | vpc-endpoint | vpc-peering-connection | vpn-connection | vpn-gateway + Resources []*string `locationName:"Resource" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribePrincipalIdFormatInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribePrincipalIdFormatInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribePrincipalIdFormatInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribePrincipalIdFormatInput"} + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribePrincipalIdFormatInput) SetDryRun(v bool) *DescribePrincipalIdFormatInput { + s.DryRun = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribePrincipalIdFormatInput) SetMaxResults(v int64) *DescribePrincipalIdFormatInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribePrincipalIdFormatInput) SetNextToken(v string) *DescribePrincipalIdFormatInput { + s.NextToken = &v + return s +} + +// SetResources sets the Resources field's value. +func (s *DescribePrincipalIdFormatInput) SetResources(v []*string) *DescribePrincipalIdFormatInput { + s.Resources = v + return s +} + +type DescribePrincipalIdFormatOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the ID format settings for the ARN. + Principals []*PrincipalIdFormat `locationName:"principalSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribePrincipalIdFormatOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribePrincipalIdFormatOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribePrincipalIdFormatOutput) SetNextToken(v string) *DescribePrincipalIdFormatOutput { + s.NextToken = &v + return s +} + +// SetPrincipals sets the Principals field's value. +func (s *DescribePrincipalIdFormatOutput) SetPrincipals(v []*PrincipalIdFormat) *DescribePrincipalIdFormatOutput { + s.Principals = v + return s +} + +type DescribePublicIpv4PoolsInput struct { + _ struct{} `type:"structure"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `min:"1" type:"integer"` + + // The token for the next page of results. + NextToken *string `type:"string"` + + // The IDs of the address pools. + PoolIds []*string `locationName:"PoolId" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribePublicIpv4PoolsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribePublicIpv4PoolsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribePublicIpv4PoolsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribePublicIpv4PoolsInput"} + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribePublicIpv4PoolsInput) SetMaxResults(v int64) *DescribePublicIpv4PoolsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribePublicIpv4PoolsInput) SetNextToken(v string) *DescribePublicIpv4PoolsInput { + s.NextToken = &v + return s +} + +// SetPoolIds sets the PoolIds field's value. +func (s *DescribePublicIpv4PoolsInput) SetPoolIds(v []*string) *DescribePublicIpv4PoolsInput { + s.PoolIds = v + return s +} + +type DescribePublicIpv4PoolsOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the address pools. + PublicIpv4Pools []*PublicIpv4Pool `locationName:"publicIpv4PoolSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribePublicIpv4PoolsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribePublicIpv4PoolsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribePublicIpv4PoolsOutput) SetNextToken(v string) *DescribePublicIpv4PoolsOutput { + s.NextToken = &v + return s +} + +// SetPublicIpv4Pools sets the PublicIpv4Pools field's value. +func (s *DescribePublicIpv4PoolsOutput) SetPublicIpv4Pools(v []*PublicIpv4Pool) *DescribePublicIpv4PoolsOutput { + s.PublicIpv4Pools = v + return s +} + +type DescribeRegionsInput struct { + _ struct{} `type:"structure"` + + // Indicates whether to display all Regions, including Regions that are disabled + // for your account. + AllRegions *bool `type:"boolean"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The filters. + // + // * endpoint - The endpoint of the Region (for example, ec2.us-east-1.amazonaws.com). + // + // * opt-in-status - The opt-in status of the Region (opt-in-not-required + // | opted-in | not-opted-in). + // + // * region-name - The name of the Region (for example, us-east-1). + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The names of the Regions. You can specify any Regions, whether they are enabled + // and disabled for your account. + RegionNames []*string `locationName:"RegionName" locationNameList:"RegionName" type:"list"` +} + +// String returns the string representation +func (s DescribeRegionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeRegionsInput) GoString() string { + return s.String() +} + +// SetAllRegions sets the AllRegions field's value. +func (s *DescribeRegionsInput) SetAllRegions(v bool) *DescribeRegionsInput { + s.AllRegions = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeRegionsInput) SetDryRun(v bool) *DescribeRegionsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeRegionsInput) SetFilters(v []*Filter) *DescribeRegionsInput { + s.Filters = v + return s +} + +// SetRegionNames sets the RegionNames field's value. +func (s *DescribeRegionsInput) SetRegionNames(v []*string) *DescribeRegionsInput { + s.RegionNames = v + return s +} + +type DescribeRegionsOutput struct { + _ struct{} `type:"structure"` + + // Information about the Regions. + Regions []*Region `locationName:"regionInfo" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeRegionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeRegionsOutput) GoString() string { + return s.String() +} + +// SetRegions sets the Regions field's value. +func (s *DescribeRegionsOutput) SetRegions(v []*Region) *DescribeRegionsOutput { + s.Regions = v + return s +} + +// Contains the parameters for DescribeReservedInstances. +type DescribeReservedInstancesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // One or more filters. + // + // * availability-zone - The Availability Zone where the Reserved Instance + // can be used. + // + // * duration - The duration of the Reserved Instance (one year or three + // years), in seconds (31536000 | 94608000). + // + // * end - The time when the Reserved Instance expires (for example, 2015-08-07T11:54:42.000Z). + // + // * fixed-price - The purchase price of the Reserved Instance (for example, + // 9800.0). + // + // * instance-type - The instance type that is covered by the reservation. + // + // * scope - The scope of the Reserved Instance (Region or Availability Zone). + // + // * product-description - The Reserved Instance product platform description. + // Instances that include (Amazon VPC) in the product platform description + // will only be displayed to EC2-Classic account holders and are for use + // with Amazon VPC (Linux/UNIX | Linux/UNIX (Amazon VPC) | SUSE Linux | SUSE + // Linux (Amazon VPC) | Red Hat Enterprise Linux | Red Hat Enterprise Linux + // (Amazon VPC) | Windows | Windows (Amazon VPC) | Windows with SQL Server + // Standard | Windows with SQL Server Standard (Amazon VPC) | Windows with + // SQL Server Web | Windows with SQL Server Web (Amazon VPC) | Windows with + // SQL Server Enterprise | Windows with SQL Server Enterprise (Amazon VPC)). + // + // * reserved-instances-id - The ID of the Reserved Instance. + // + // * start - The time at which the Reserved Instance purchase request was + // placed (for example, 2014-08-07T11:54:42.000Z). + // + // * state - The state of the Reserved Instance (payment-pending | active + // | payment-failed | retired). + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + // + // * usage-price - The usage price of the Reserved Instance, per hour (for + // example, 0.84). + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // Describes whether the Reserved Instance is Standard or Convertible. + OfferingClass *string `type:"string" enum:"OfferingClassType"` + + // The Reserved Instance offering type. If you are using tools that predate + // the 2011-11-01 API version, you only have access to the Medium Utilization + // Reserved Instance offering type. + OfferingType *string `locationName:"offeringType" type:"string" enum:"OfferingTypeValues"` + + // One or more Reserved Instance IDs. + // + // Default: Describes all your Reserved Instances, or only those otherwise specified. + ReservedInstancesIds []*string `locationName:"ReservedInstancesId" locationNameList:"ReservedInstancesId" type:"list"` +} + +// String returns the string representation +func (s DescribeReservedInstancesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeReservedInstancesInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeReservedInstancesInput) SetDryRun(v bool) *DescribeReservedInstancesInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeReservedInstancesInput) SetFilters(v []*Filter) *DescribeReservedInstancesInput { + s.Filters = v + return s +} + +// SetOfferingClass sets the OfferingClass field's value. +func (s *DescribeReservedInstancesInput) SetOfferingClass(v string) *DescribeReservedInstancesInput { + s.OfferingClass = &v + return s +} + +// SetOfferingType sets the OfferingType field's value. +func (s *DescribeReservedInstancesInput) SetOfferingType(v string) *DescribeReservedInstancesInput { + s.OfferingType = &v + return s +} + +// SetReservedInstancesIds sets the ReservedInstancesIds field's value. +func (s *DescribeReservedInstancesInput) SetReservedInstancesIds(v []*string) *DescribeReservedInstancesInput { + s.ReservedInstancesIds = v + return s +} + +// Contains the parameters for DescribeReservedInstancesListings. +type DescribeReservedInstancesListingsInput struct { + _ struct{} `type:"structure"` + + // One or more filters. + // + // * reserved-instances-id - The ID of the Reserved Instances. + // + // * reserved-instances-listing-id - The ID of the Reserved Instances listing. + // + // * status - The status of the Reserved Instance listing (pending | active + // | cancelled | closed). + // + // * status-message - The reason for the status. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // One or more Reserved Instance IDs. + ReservedInstancesId *string `locationName:"reservedInstancesId" type:"string"` + + // One or more Reserved Instance listing IDs. + ReservedInstancesListingId *string `locationName:"reservedInstancesListingId" type:"string"` +} + +// String returns the string representation +func (s DescribeReservedInstancesListingsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeReservedInstancesListingsInput) GoString() string { + return s.String() +} + +// SetFilters sets the Filters field's value. +func (s *DescribeReservedInstancesListingsInput) SetFilters(v []*Filter) *DescribeReservedInstancesListingsInput { + s.Filters = v + return s +} + +// SetReservedInstancesId sets the ReservedInstancesId field's value. +func (s *DescribeReservedInstancesListingsInput) SetReservedInstancesId(v string) *DescribeReservedInstancesListingsInput { + s.ReservedInstancesId = &v + return s +} + +// SetReservedInstancesListingId sets the ReservedInstancesListingId field's value. +func (s *DescribeReservedInstancesListingsInput) SetReservedInstancesListingId(v string) *DescribeReservedInstancesListingsInput { + s.ReservedInstancesListingId = &v + return s +} + +// Contains the output of DescribeReservedInstancesListings. +type DescribeReservedInstancesListingsOutput struct { + _ struct{} `type:"structure"` + + // Information about the Reserved Instance listing. + ReservedInstancesListings []*ReservedInstancesListing `locationName:"reservedInstancesListingsSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeReservedInstancesListingsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeReservedInstancesListingsOutput) GoString() string { + return s.String() +} + +// SetReservedInstancesListings sets the ReservedInstancesListings field's value. +func (s *DescribeReservedInstancesListingsOutput) SetReservedInstancesListings(v []*ReservedInstancesListing) *DescribeReservedInstancesListingsOutput { + s.ReservedInstancesListings = v + return s +} + +// Contains the parameters for DescribeReservedInstancesModifications. +type DescribeReservedInstancesModificationsInput struct { + _ struct{} `type:"structure"` + + // One or more filters. + // + // * client-token - The idempotency token for the modification request. + // + // * create-date - The time when the modification request was created. + // + // * effective-date - The time when the modification becomes effective. + // + // * modification-result.reserved-instances-id - The ID for the Reserved + // Instances created as part of the modification request. This ID is only + // available when the status of the modification is fulfilled. + // + // * modification-result.target-configuration.availability-zone - The Availability + // Zone for the new Reserved Instances. + // + // * modification-result.target-configuration.instance-count - The number + // of new Reserved Instances. + // + // * modification-result.target-configuration.instance-type - The instance + // type of the new Reserved Instances. + // + // * modification-result.target-configuration.platform - The network platform + // of the new Reserved Instances (EC2-Classic | EC2-VPC). + // + // * reserved-instances-id - The ID of the Reserved Instances modified. + // + // * reserved-instances-modification-id - The ID of the modification request. + // + // * status - The status of the Reserved Instances modification request (processing + // | fulfilled | failed). + // + // * status-message - The reason for the status. + // + // * update-date - The time when the modification request was last updated. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The token to retrieve the next page of results. + NextToken *string `locationName:"nextToken" type:"string"` + + // IDs for the submitted modification request. + ReservedInstancesModificationIds []*string `locationName:"ReservedInstancesModificationId" locationNameList:"ReservedInstancesModificationId" type:"list"` +} + +// String returns the string representation +func (s DescribeReservedInstancesModificationsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeReservedInstancesModificationsInput) GoString() string { + return s.String() +} + +// SetFilters sets the Filters field's value. +func (s *DescribeReservedInstancesModificationsInput) SetFilters(v []*Filter) *DescribeReservedInstancesModificationsInput { + s.Filters = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeReservedInstancesModificationsInput) SetNextToken(v string) *DescribeReservedInstancesModificationsInput { + s.NextToken = &v + return s +} + +// SetReservedInstancesModificationIds sets the ReservedInstancesModificationIds field's value. +func (s *DescribeReservedInstancesModificationsInput) SetReservedInstancesModificationIds(v []*string) *DescribeReservedInstancesModificationsInput { + s.ReservedInstancesModificationIds = v + return s +} + +// Contains the output of DescribeReservedInstancesModifications. +type DescribeReservedInstancesModificationsOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // The Reserved Instance modification information. + ReservedInstancesModifications []*ReservedInstancesModification `locationName:"reservedInstancesModificationsSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeReservedInstancesModificationsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeReservedInstancesModificationsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeReservedInstancesModificationsOutput) SetNextToken(v string) *DescribeReservedInstancesModificationsOutput { + s.NextToken = &v + return s +} + +// SetReservedInstancesModifications sets the ReservedInstancesModifications field's value. +func (s *DescribeReservedInstancesModificationsOutput) SetReservedInstancesModifications(v []*ReservedInstancesModification) *DescribeReservedInstancesModificationsOutput { + s.ReservedInstancesModifications = v + return s +} + +// Contains the parameters for DescribeReservedInstancesOfferings. +type DescribeReservedInstancesOfferingsInput struct { + _ struct{} `type:"structure"` + + // The Availability Zone in which the Reserved Instance can be used. + AvailabilityZone *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // One or more filters. + // + // * availability-zone - The Availability Zone where the Reserved Instance + // can be used. + // + // * duration - The duration of the Reserved Instance (for example, one year + // or three years), in seconds (31536000 | 94608000). + // + // * fixed-price - The purchase price of the Reserved Instance (for example, + // 9800.0). + // + // * instance-type - The instance type that is covered by the reservation. + // + // * marketplace - Set to true to show only Reserved Instance Marketplace + // offerings. When this filter is not used, which is the default behavior, + // all offerings from both AWS and the Reserved Instance Marketplace are + // listed. + // + // * product-description - The Reserved Instance product platform description. + // Instances that include (Amazon VPC) in the product platform description + // will only be displayed to EC2-Classic account holders and are for use + // with Amazon VPC. (Linux/UNIX | Linux/UNIX (Amazon VPC) | SUSE Linux | + // SUSE Linux (Amazon VPC) | Red Hat Enterprise Linux | Red Hat Enterprise + // Linux (Amazon VPC) | Windows | Windows (Amazon VPC) | Windows with SQL + // Server Standard | Windows with SQL Server Standard (Amazon VPC) | Windows + // with SQL Server Web | Windows with SQL Server Web (Amazon VPC) | Windows + // with SQL Server Enterprise | Windows with SQL Server Enterprise (Amazon + // VPC)) + // + // * reserved-instances-offering-id - The Reserved Instances offering ID. + // + // * scope - The scope of the Reserved Instance (Availability Zone or Region). + // + // * usage-price - The usage price of the Reserved Instance, per hour (for + // example, 0.84). + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // Include Reserved Instance Marketplace offerings in the response. + IncludeMarketplace *bool `type:"boolean"` + + // The tenancy of the instances covered by the reservation. A Reserved Instance + // with a tenancy of dedicated is applied to instances that run in a VPC on + // single-tenant hardware (i.e., Dedicated Instances). + // + // Important: The host value cannot be used with this parameter. Use the default + // or dedicated values only. + // + // Default: default + InstanceTenancy *string `locationName:"instanceTenancy" type:"string" enum:"Tenancy"` + + // The instance type that the reservation will cover (for example, m1.small). + // For more information, see Instance Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) + // in the Amazon Elastic Compute Cloud User Guide. + InstanceType *string `type:"string" enum:"InstanceType"` + + // The maximum duration (in seconds) to filter when searching for offerings. + // + // Default: 94608000 (3 years) + MaxDuration *int64 `type:"long"` + + // The maximum number of instances to filter when searching for offerings. + // + // Default: 20 + MaxInstanceCount *int64 `type:"integer"` + + // The maximum number of results to return for the request in a single page. + // The remaining results of the initial request can be seen by sending another + // request with the returned NextToken value. The maximum is 100. + // + // Default: 100 + MaxResults *int64 `locationName:"maxResults" type:"integer"` + + // The minimum duration (in seconds) to filter when searching for offerings. + // + // Default: 2592000 (1 month) + MinDuration *int64 `type:"long"` + + // The token to retrieve the next page of results. + NextToken *string `locationName:"nextToken" type:"string"` + + // The offering class of the Reserved Instance. Can be standard or convertible. + OfferingClass *string `type:"string" enum:"OfferingClassType"` + + // The Reserved Instance offering type. If you are using tools that predate + // the 2011-11-01 API version, you only have access to the Medium Utilization + // Reserved Instance offering type. + OfferingType *string `locationName:"offeringType" type:"string" enum:"OfferingTypeValues"` + + // The Reserved Instance product platform description. Instances that include + // (Amazon VPC) in the description are for use with Amazon VPC. + ProductDescription *string `type:"string" enum:"RIProductDescription"` + + // One or more Reserved Instances offering IDs. + ReservedInstancesOfferingIds []*string `locationName:"ReservedInstancesOfferingId" type:"list"` +} + +// String returns the string representation +func (s DescribeReservedInstancesOfferingsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeReservedInstancesOfferingsInput) GoString() string { + return s.String() +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *DescribeReservedInstancesOfferingsInput) SetAvailabilityZone(v string) *DescribeReservedInstancesOfferingsInput { + s.AvailabilityZone = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeReservedInstancesOfferingsInput) SetDryRun(v bool) *DescribeReservedInstancesOfferingsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeReservedInstancesOfferingsInput) SetFilters(v []*Filter) *DescribeReservedInstancesOfferingsInput { + s.Filters = v + return s +} + +// SetIncludeMarketplace sets the IncludeMarketplace field's value. +func (s *DescribeReservedInstancesOfferingsInput) SetIncludeMarketplace(v bool) *DescribeReservedInstancesOfferingsInput { + s.IncludeMarketplace = &v + return s +} + +// SetInstanceTenancy sets the InstanceTenancy field's value. +func (s *DescribeReservedInstancesOfferingsInput) SetInstanceTenancy(v string) *DescribeReservedInstancesOfferingsInput { + s.InstanceTenancy = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *DescribeReservedInstancesOfferingsInput) SetInstanceType(v string) *DescribeReservedInstancesOfferingsInput { + s.InstanceType = &v + return s +} + +// SetMaxDuration sets the MaxDuration field's value. +func (s *DescribeReservedInstancesOfferingsInput) SetMaxDuration(v int64) *DescribeReservedInstancesOfferingsInput { + s.MaxDuration = &v + return s +} + +// SetMaxInstanceCount sets the MaxInstanceCount field's value. +func (s *DescribeReservedInstancesOfferingsInput) SetMaxInstanceCount(v int64) *DescribeReservedInstancesOfferingsInput { + s.MaxInstanceCount = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeReservedInstancesOfferingsInput) SetMaxResults(v int64) *DescribeReservedInstancesOfferingsInput { + s.MaxResults = &v + return s +} + +// SetMinDuration sets the MinDuration field's value. +func (s *DescribeReservedInstancesOfferingsInput) SetMinDuration(v int64) *DescribeReservedInstancesOfferingsInput { + s.MinDuration = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeReservedInstancesOfferingsInput) SetNextToken(v string) *DescribeReservedInstancesOfferingsInput { + s.NextToken = &v + return s +} + +// SetOfferingClass sets the OfferingClass field's value. +func (s *DescribeReservedInstancesOfferingsInput) SetOfferingClass(v string) *DescribeReservedInstancesOfferingsInput { + s.OfferingClass = &v + return s +} + +// SetOfferingType sets the OfferingType field's value. +func (s *DescribeReservedInstancesOfferingsInput) SetOfferingType(v string) *DescribeReservedInstancesOfferingsInput { + s.OfferingType = &v + return s +} + +// SetProductDescription sets the ProductDescription field's value. +func (s *DescribeReservedInstancesOfferingsInput) SetProductDescription(v string) *DescribeReservedInstancesOfferingsInput { + s.ProductDescription = &v + return s +} + +// SetReservedInstancesOfferingIds sets the ReservedInstancesOfferingIds field's value. +func (s *DescribeReservedInstancesOfferingsInput) SetReservedInstancesOfferingIds(v []*string) *DescribeReservedInstancesOfferingsInput { + s.ReservedInstancesOfferingIds = v + return s +} + +// Contains the output of DescribeReservedInstancesOfferings. +type DescribeReservedInstancesOfferingsOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // A list of Reserved Instances offerings. + ReservedInstancesOfferings []*ReservedInstancesOffering `locationName:"reservedInstancesOfferingsSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeReservedInstancesOfferingsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeReservedInstancesOfferingsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeReservedInstancesOfferingsOutput) SetNextToken(v string) *DescribeReservedInstancesOfferingsOutput { + s.NextToken = &v + return s +} + +// SetReservedInstancesOfferings sets the ReservedInstancesOfferings field's value. +func (s *DescribeReservedInstancesOfferingsOutput) SetReservedInstancesOfferings(v []*ReservedInstancesOffering) *DescribeReservedInstancesOfferingsOutput { + s.ReservedInstancesOfferings = v + return s +} + +// Contains the output for DescribeReservedInstances. +type DescribeReservedInstancesOutput struct { + _ struct{} `type:"structure"` + + // A list of Reserved Instances. + ReservedInstances []*ReservedInstances `locationName:"reservedInstancesSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeReservedInstancesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeReservedInstancesOutput) GoString() string { + return s.String() +} + +// SetReservedInstances sets the ReservedInstances field's value. +func (s *DescribeReservedInstancesOutput) SetReservedInstances(v []*ReservedInstances) *DescribeReservedInstancesOutput { + s.ReservedInstances = v + return s +} + +type DescribeRouteTablesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // One or more filters. + // + // * association.route-table-association-id - The ID of an association ID + // for the route table. + // + // * association.route-table-id - The ID of the route table involved in the + // association. + // + // * association.subnet-id - The ID of the subnet involved in the association. + // + // * association.main - Indicates whether the route table is the main route + // table for the VPC (true | false). Route tables that do not have an association + // ID are not returned in the response. + // + // * owner-id - The ID of the AWS account that owns the route table. + // + // * route-table-id - The ID of the route table. + // + // * route.destination-cidr-block - The IPv4 CIDR range specified in a route + // in the table. + // + // * route.destination-ipv6-cidr-block - The IPv6 CIDR range specified in + // a route in the route table. + // + // * route.destination-prefix-list-id - The ID (prefix) of the AWS service + // specified in a route in the table. + // + // * route.egress-only-internet-gateway-id - The ID of an egress-only Internet + // gateway specified in a route in the route table. + // + // * route.gateway-id - The ID of a gateway specified in a route in the table. + // + // * route.instance-id - The ID of an instance specified in a route in the + // table. + // + // * route.nat-gateway-id - The ID of a NAT gateway. + // + // * route.transit-gateway-id - The ID of a transit gateway. + // + // * route.origin - Describes how the route was created. CreateRouteTable + // indicates that the route was automatically created when the route table + // was created; CreateRoute indicates that the route was manually added to + // the route table; EnableVgwRoutePropagation indicates that the route was + // propagated by route propagation. + // + // * route.state - The state of a route in the route table (active | blackhole). + // The blackhole state indicates that the route's target isn't available + // (for example, the specified gateway isn't attached to the VPC, the specified + // NAT instance has been terminated, and so on). + // + // * route.vpc-peering-connection-id - The ID of a VPC peering connection + // specified in a route in the table. + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + // + // * transit-gateway-id - The ID of a transit gateway. + // + // * vpc-id - The ID of the VPC for the route table. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `min:"5" type:"integer"` + + // The token for the next page of results. + NextToken *string `type:"string"` + + // One or more route table IDs. + // + // Default: Describes all your route tables. + RouteTableIds []*string `locationName:"RouteTableId" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeRouteTablesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeRouteTablesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeRouteTablesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeRouteTablesInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeRouteTablesInput) SetDryRun(v bool) *DescribeRouteTablesInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeRouteTablesInput) SetFilters(v []*Filter) *DescribeRouteTablesInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeRouteTablesInput) SetMaxResults(v int64) *DescribeRouteTablesInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeRouteTablesInput) SetNextToken(v string) *DescribeRouteTablesInput { + s.NextToken = &v + return s +} + +// SetRouteTableIds sets the RouteTableIds field's value. +func (s *DescribeRouteTablesInput) SetRouteTableIds(v []*string) *DescribeRouteTablesInput { + s.RouteTableIds = v + return s +} + +// Contains the output of DescribeRouteTables. +type DescribeRouteTablesOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about one or more route tables. + RouteTables []*RouteTable `locationName:"routeTableSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeRouteTablesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeRouteTablesOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeRouteTablesOutput) SetNextToken(v string) *DescribeRouteTablesOutput { + s.NextToken = &v + return s +} + +// SetRouteTables sets the RouteTables field's value. +func (s *DescribeRouteTablesOutput) SetRouteTables(v []*RouteTable) *DescribeRouteTablesOutput { + s.RouteTables = v + return s +} + +// Contains the parameters for DescribeScheduledInstanceAvailability. +type DescribeScheduledInstanceAvailabilityInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The filters. + // + // * availability-zone - The Availability Zone (for example, us-west-2a). + // + // * instance-type - The instance type (for example, c4.large). + // + // * network-platform - The network platform (EC2-Classic or EC2-VPC). + // + // * platform - The platform (Linux/UNIX or Windows). + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The time period for the first schedule to start. + // + // FirstSlotStartTimeRange is a required field + FirstSlotStartTimeRange *SlotDateTimeRangeRequest `type:"structure" required:"true"` + + // The maximum number of results to return in a single call. This value can + // be between 5 and 300. The default value is 300. To retrieve the remaining + // results, make another call with the returned NextToken value. + MaxResults *int64 `min:"5" type:"integer"` + + // The maximum available duration, in hours. This value must be greater than + // MinSlotDurationInHours and less than 1,720. + MaxSlotDurationInHours *int64 `type:"integer"` + + // The minimum available duration, in hours. The minimum required duration is + // 1,200 hours per year. For example, the minimum daily schedule is 4 hours, + // the minimum weekly schedule is 24 hours, and the minimum monthly schedule + // is 100 hours. + MinSlotDurationInHours *int64 `type:"integer"` + + // The token for the next set of results. + NextToken *string `type:"string"` + + // The schedule recurrence. + // + // Recurrence is a required field + Recurrence *ScheduledInstanceRecurrenceRequest `type:"structure" required:"true"` +} + +// String returns the string representation +func (s DescribeScheduledInstanceAvailabilityInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeScheduledInstanceAvailabilityInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeScheduledInstanceAvailabilityInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeScheduledInstanceAvailabilityInput"} + if s.FirstSlotStartTimeRange == nil { + invalidParams.Add(request.NewErrParamRequired("FirstSlotStartTimeRange")) + } + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + if s.Recurrence == nil { + invalidParams.Add(request.NewErrParamRequired("Recurrence")) + } + if s.FirstSlotStartTimeRange != nil { + if err := s.FirstSlotStartTimeRange.Validate(); err != nil { + invalidParams.AddNested("FirstSlotStartTimeRange", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeScheduledInstanceAvailabilityInput) SetDryRun(v bool) *DescribeScheduledInstanceAvailabilityInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeScheduledInstanceAvailabilityInput) SetFilters(v []*Filter) *DescribeScheduledInstanceAvailabilityInput { + s.Filters = v + return s +} + +// SetFirstSlotStartTimeRange sets the FirstSlotStartTimeRange field's value. +func (s *DescribeScheduledInstanceAvailabilityInput) SetFirstSlotStartTimeRange(v *SlotDateTimeRangeRequest) *DescribeScheduledInstanceAvailabilityInput { + s.FirstSlotStartTimeRange = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeScheduledInstanceAvailabilityInput) SetMaxResults(v int64) *DescribeScheduledInstanceAvailabilityInput { + s.MaxResults = &v + return s +} + +// SetMaxSlotDurationInHours sets the MaxSlotDurationInHours field's value. +func (s *DescribeScheduledInstanceAvailabilityInput) SetMaxSlotDurationInHours(v int64) *DescribeScheduledInstanceAvailabilityInput { + s.MaxSlotDurationInHours = &v + return s +} + +// SetMinSlotDurationInHours sets the MinSlotDurationInHours field's value. +func (s *DescribeScheduledInstanceAvailabilityInput) SetMinSlotDurationInHours(v int64) *DescribeScheduledInstanceAvailabilityInput { + s.MinSlotDurationInHours = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeScheduledInstanceAvailabilityInput) SetNextToken(v string) *DescribeScheduledInstanceAvailabilityInput { + s.NextToken = &v + return s +} + +// SetRecurrence sets the Recurrence field's value. +func (s *DescribeScheduledInstanceAvailabilityInput) SetRecurrence(v *ScheduledInstanceRecurrenceRequest) *DescribeScheduledInstanceAvailabilityInput { + s.Recurrence = v + return s +} + +// Contains the output of DescribeScheduledInstanceAvailability. +type DescribeScheduledInstanceAvailabilityOutput struct { + _ struct{} `type:"structure"` + + // The token required to retrieve the next set of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the available Scheduled Instances. + ScheduledInstanceAvailabilitySet []*ScheduledInstanceAvailability `locationName:"scheduledInstanceAvailabilitySet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeScheduledInstanceAvailabilityOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeScheduledInstanceAvailabilityOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeScheduledInstanceAvailabilityOutput) SetNextToken(v string) *DescribeScheduledInstanceAvailabilityOutput { + s.NextToken = &v + return s +} + +// SetScheduledInstanceAvailabilitySet sets the ScheduledInstanceAvailabilitySet field's value. +func (s *DescribeScheduledInstanceAvailabilityOutput) SetScheduledInstanceAvailabilitySet(v []*ScheduledInstanceAvailability) *DescribeScheduledInstanceAvailabilityOutput { + s.ScheduledInstanceAvailabilitySet = v + return s +} + +// Contains the parameters for DescribeScheduledInstances. +type DescribeScheduledInstancesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The filters. + // + // * availability-zone - The Availability Zone (for example, us-west-2a). + // + // * instance-type - The instance type (for example, c4.large). + // + // * network-platform - The network platform (EC2-Classic or EC2-VPC). + // + // * platform - The platform (Linux/UNIX or Windows). + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return in a single call. This value can + // be between 5 and 300. The default value is 100. To retrieve the remaining + // results, make another call with the returned NextToken value. + MaxResults *int64 `type:"integer"` + + // The token for the next set of results. + NextToken *string `type:"string"` + + // The Scheduled Instance IDs. + ScheduledInstanceIds []*string `locationName:"ScheduledInstanceId" locationNameList:"ScheduledInstanceId" type:"list"` + + // The time period for the first schedule to start. + SlotStartTimeRange *SlotStartTimeRangeRequest `type:"structure"` +} + +// String returns the string representation +func (s DescribeScheduledInstancesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeScheduledInstancesInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeScheduledInstancesInput) SetDryRun(v bool) *DescribeScheduledInstancesInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeScheduledInstancesInput) SetFilters(v []*Filter) *DescribeScheduledInstancesInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeScheduledInstancesInput) SetMaxResults(v int64) *DescribeScheduledInstancesInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeScheduledInstancesInput) SetNextToken(v string) *DescribeScheduledInstancesInput { + s.NextToken = &v + return s +} + +// SetScheduledInstanceIds sets the ScheduledInstanceIds field's value. +func (s *DescribeScheduledInstancesInput) SetScheduledInstanceIds(v []*string) *DescribeScheduledInstancesInput { + s.ScheduledInstanceIds = v + return s +} + +// SetSlotStartTimeRange sets the SlotStartTimeRange field's value. +func (s *DescribeScheduledInstancesInput) SetSlotStartTimeRange(v *SlotStartTimeRangeRequest) *DescribeScheduledInstancesInput { + s.SlotStartTimeRange = v + return s +} + +// Contains the output of DescribeScheduledInstances. +type DescribeScheduledInstancesOutput struct { + _ struct{} `type:"structure"` + + // The token required to retrieve the next set of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the Scheduled Instances. + ScheduledInstanceSet []*ScheduledInstance `locationName:"scheduledInstanceSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeScheduledInstancesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeScheduledInstancesOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeScheduledInstancesOutput) SetNextToken(v string) *DescribeScheduledInstancesOutput { + s.NextToken = &v + return s +} + +// SetScheduledInstanceSet sets the ScheduledInstanceSet field's value. +func (s *DescribeScheduledInstancesOutput) SetScheduledInstanceSet(v []*ScheduledInstance) *DescribeScheduledInstancesOutput { + s.ScheduledInstanceSet = v + return s +} + +type DescribeSecurityGroupReferencesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The IDs of the security groups in your account. + // + // GroupId is a required field + GroupId []*string `locationNameList:"item" type:"list" required:"true"` +} + +// String returns the string representation +func (s DescribeSecurityGroupReferencesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeSecurityGroupReferencesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeSecurityGroupReferencesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeSecurityGroupReferencesInput"} + if s.GroupId == nil { + invalidParams.Add(request.NewErrParamRequired("GroupId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeSecurityGroupReferencesInput) SetDryRun(v bool) *DescribeSecurityGroupReferencesInput { + s.DryRun = &v + return s +} + +// SetGroupId sets the GroupId field's value. +func (s *DescribeSecurityGroupReferencesInput) SetGroupId(v []*string) *DescribeSecurityGroupReferencesInput { + s.GroupId = v + return s +} + +type DescribeSecurityGroupReferencesOutput struct { + _ struct{} `type:"structure"` + + // Information about the VPCs with the referencing security groups. + SecurityGroupReferenceSet []*SecurityGroupReference `locationName:"securityGroupReferenceSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeSecurityGroupReferencesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeSecurityGroupReferencesOutput) GoString() string { + return s.String() +} + +// SetSecurityGroupReferenceSet sets the SecurityGroupReferenceSet field's value. +func (s *DescribeSecurityGroupReferencesOutput) SetSecurityGroupReferenceSet(v []*SecurityGroupReference) *DescribeSecurityGroupReferencesOutput { + s.SecurityGroupReferenceSet = v + return s +} + +type DescribeSecurityGroupsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The filters. If using multiple filters for rules, the results include security + // groups for which any combination of rules - not necessarily a single rule + // - match all filters. + // + // * description - The description of the security group. + // + // * egress.ip-permission.cidr - An IPv4 CIDR block for an outbound security + // group rule. + // + // * egress.ip-permission.from-port - For an outbound rule, the start of + // port range for the TCP and UDP protocols, or an ICMP type number. + // + // * egress.ip-permission.group-id - The ID of a security group that has + // been referenced in an outbound security group rule. + // + // * egress.ip-permission.group-name - The name of a security group that + // has been referenced in an outbound security group rule. + // + // * egress.ip-permission.ipv6-cidr - An IPv6 CIDR block for an outbound + // security group rule. + // + // * egress.ip-permission.prefix-list-id - The ID (prefix) of the AWS service + // to which a security group rule allows outbound access. + // + // * egress.ip-permission.protocol - The IP protocol for an outbound security + // group rule (tcp | udp | icmp or a protocol number). + // + // * egress.ip-permission.to-port - For an outbound rule, the end of port + // range for the TCP and UDP protocols, or an ICMP code. + // + // * egress.ip-permission.user-id - The ID of an AWS account that has been + // referenced in an outbound security group rule. + // + // * group-id - The ID of the security group. + // + // * group-name - The name of the security group. + // + // * ip-permission.cidr - An IPv4 CIDR block for an inbound security group + // rule. + // + // * ip-permission.from-port - For an inbound rule, the start of port range + // for the TCP and UDP protocols, or an ICMP type number. + // + // * ip-permission.group-id - The ID of a security group that has been referenced + // in an inbound security group rule. + // + // * ip-permission.group-name - The name of a security group that has been + // referenced in an inbound security group rule. + // + // * ip-permission.ipv6-cidr - An IPv6 CIDR block for an inbound security + // group rule. + // + // * ip-permission.prefix-list-id - The ID (prefix) of the AWS service from + // which a security group rule allows inbound access. + // + // * ip-permission.protocol - The IP protocol for an inbound security group + // rule (tcp | udp | icmp or a protocol number). + // + // * ip-permission.to-port - For an inbound rule, the end of port range for + // the TCP and UDP protocols, or an ICMP code. + // + // * ip-permission.user-id - The ID of an AWS account that has been referenced + // in an inbound security group rule. + // + // * owner-id - The AWS account ID of the owner of the security group. + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + // + // * vpc-id - The ID of the VPC specified when the security group was created. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The IDs of the security groups. Required for security groups in a nondefault + // VPC. + // + // Default: Describes all your security groups. + GroupIds []*string `locationName:"GroupId" locationNameList:"groupId" type:"list"` + + // [EC2-Classic and default VPC only] The names of the security groups. You + // can specify either the security group name or the security group ID. For + // security groups in a nondefault VPC, use the group-name filter to describe + // security groups by name. + // + // Default: Describes all your security groups. + GroupNames []*string `locationName:"GroupName" locationNameList:"GroupName" type:"list"` + + // The maximum number of results to return in a single call. To retrieve the + // remaining results, make another request with the returned NextToken value. + // This value can be between 5 and 1000. If this parameter is not specified, + // then all results are returned. + MaxResults *int64 `min:"5" type:"integer"` + + // The token to request the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeSecurityGroupsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeSecurityGroupsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeSecurityGroupsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeSecurityGroupsInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeSecurityGroupsInput) SetDryRun(v bool) *DescribeSecurityGroupsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeSecurityGroupsInput) SetFilters(v []*Filter) *DescribeSecurityGroupsInput { + s.Filters = v + return s +} + +// SetGroupIds sets the GroupIds field's value. +func (s *DescribeSecurityGroupsInput) SetGroupIds(v []*string) *DescribeSecurityGroupsInput { + s.GroupIds = v + return s +} + +// SetGroupNames sets the GroupNames field's value. +func (s *DescribeSecurityGroupsInput) SetGroupNames(v []*string) *DescribeSecurityGroupsInput { + s.GroupNames = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeSecurityGroupsInput) SetMaxResults(v int64) *DescribeSecurityGroupsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeSecurityGroupsInput) SetNextToken(v string) *DescribeSecurityGroupsInput { + s.NextToken = &v + return s +} + +type DescribeSecurityGroupsOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the security groups. + SecurityGroups []*SecurityGroup `locationName:"securityGroupInfo" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeSecurityGroupsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeSecurityGroupsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeSecurityGroupsOutput) SetNextToken(v string) *DescribeSecurityGroupsOutput { + s.NextToken = &v + return s +} + +// SetSecurityGroups sets the SecurityGroups field's value. +func (s *DescribeSecurityGroupsOutput) SetSecurityGroups(v []*SecurityGroup) *DescribeSecurityGroupsOutput { + s.SecurityGroups = v + return s +} + +// Contains the parameters for DescribeSnapshotAttribute. +type DescribeSnapshotAttributeInput struct { + _ struct{} `type:"structure"` + + // The snapshot attribute you would like to view. + // + // Attribute is a required field + Attribute *string `type:"string" required:"true" enum:"SnapshotAttributeName"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the EBS snapshot. + // + // SnapshotId is a required field + SnapshotId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DescribeSnapshotAttributeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeSnapshotAttributeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeSnapshotAttributeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeSnapshotAttributeInput"} + if s.Attribute == nil { + invalidParams.Add(request.NewErrParamRequired("Attribute")) + } + if s.SnapshotId == nil { + invalidParams.Add(request.NewErrParamRequired("SnapshotId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAttribute sets the Attribute field's value. +func (s *DescribeSnapshotAttributeInput) SetAttribute(v string) *DescribeSnapshotAttributeInput { + s.Attribute = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeSnapshotAttributeInput) SetDryRun(v bool) *DescribeSnapshotAttributeInput { + s.DryRun = &v + return s +} + +// SetSnapshotId sets the SnapshotId field's value. +func (s *DescribeSnapshotAttributeInput) SetSnapshotId(v string) *DescribeSnapshotAttributeInput { + s.SnapshotId = &v + return s +} + +// Contains the output of DescribeSnapshotAttribute. +type DescribeSnapshotAttributeOutput struct { + _ struct{} `type:"structure"` + + // The users and groups that have the permissions for creating volumes from + // the snapshot. + CreateVolumePermissions []*CreateVolumePermission `locationName:"createVolumePermission" locationNameList:"item" type:"list"` + + // The product codes. + ProductCodes []*ProductCode `locationName:"productCodes" locationNameList:"item" type:"list"` + + // The ID of the EBS snapshot. + SnapshotId *string `locationName:"snapshotId" type:"string"` +} + +// String returns the string representation +func (s DescribeSnapshotAttributeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeSnapshotAttributeOutput) GoString() string { + return s.String() +} + +// SetCreateVolumePermissions sets the CreateVolumePermissions field's value. +func (s *DescribeSnapshotAttributeOutput) SetCreateVolumePermissions(v []*CreateVolumePermission) *DescribeSnapshotAttributeOutput { + s.CreateVolumePermissions = v + return s +} + +// SetProductCodes sets the ProductCodes field's value. +func (s *DescribeSnapshotAttributeOutput) SetProductCodes(v []*ProductCode) *DescribeSnapshotAttributeOutput { + s.ProductCodes = v + return s +} + +// SetSnapshotId sets the SnapshotId field's value. +func (s *DescribeSnapshotAttributeOutput) SetSnapshotId(v string) *DescribeSnapshotAttributeOutput { + s.SnapshotId = &v + return s +} + +type DescribeSnapshotsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The filters. + // + // * description - A description of the snapshot. + // + // * encrypted - Indicates whether the snapshot is encrypted (true | false) + // + // * owner-alias - Value from an Amazon-maintained list (amazon | self | + // all | aws-marketplace | microsoft) of snapshot owners. Not to be confused + // with the user-configured AWS account alias, which is set from the IAM + // console. + // + // * owner-id - The ID of the AWS account that owns the snapshot. + // + // * progress - The progress of the snapshot, as a percentage (for example, + // 80%). + // + // * snapshot-id - The snapshot ID. + // + // * start-time - The time stamp when the snapshot was initiated. + // + // * status - The status of the snapshot (pending | completed | error). + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + // + // * volume-id - The ID of the volume the snapshot is for. + // + // * volume-size - The size of the volume, in GiB. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of snapshot results returned by DescribeSnapshots in paginated + // output. When this parameter is used, DescribeSnapshots only returns MaxResults + // results in a single page along with a NextToken response element. The remaining + // results of the initial request can be seen by sending another DescribeSnapshots + // request with the returned NextToken value. This value can be between 5 and + // 1000; if MaxResults is given a value larger than 1000, only 1000 results + // are returned. If this parameter is not used, then DescribeSnapshots returns + // all results. You cannot specify this parameter and the snapshot IDs parameter + // in the same request. + MaxResults *int64 `type:"integer"` + + // The NextToken value returned from a previous paginated DescribeSnapshots + // request where MaxResults was used and the results exceeded the value of that + // parameter. Pagination continues from the end of the previous results that + // returned the NextToken value. This value is null when there are no more results + // to return. + NextToken *string `type:"string"` + + // Describes the snapshots owned by these owners. + OwnerIds []*string `locationName:"Owner" locationNameList:"Owner" type:"list"` + + // The IDs of the AWS accounts that can create volumes from the snapshot. + RestorableByUserIds []*string `locationName:"RestorableBy" type:"list"` + + // The snapshot IDs. + // + // Default: Describes the snapshots for which you have create volume permissions. + SnapshotIds []*string `locationName:"SnapshotId" locationNameList:"SnapshotId" type:"list"` +} + +// String returns the string representation +func (s DescribeSnapshotsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeSnapshotsInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeSnapshotsInput) SetDryRun(v bool) *DescribeSnapshotsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeSnapshotsInput) SetFilters(v []*Filter) *DescribeSnapshotsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeSnapshotsInput) SetMaxResults(v int64) *DescribeSnapshotsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeSnapshotsInput) SetNextToken(v string) *DescribeSnapshotsInput { + s.NextToken = &v + return s +} + +// SetOwnerIds sets the OwnerIds field's value. +func (s *DescribeSnapshotsInput) SetOwnerIds(v []*string) *DescribeSnapshotsInput { + s.OwnerIds = v + return s +} + +// SetRestorableByUserIds sets the RestorableByUserIds field's value. +func (s *DescribeSnapshotsInput) SetRestorableByUserIds(v []*string) *DescribeSnapshotsInput { + s.RestorableByUserIds = v + return s +} + +// SetSnapshotIds sets the SnapshotIds field's value. +func (s *DescribeSnapshotsInput) SetSnapshotIds(v []*string) *DescribeSnapshotsInput { + s.SnapshotIds = v + return s +} + +type DescribeSnapshotsOutput struct { + _ struct{} `type:"structure"` + + // The NextToken value to include in a future DescribeSnapshots request. When + // the results of a DescribeSnapshots request exceed MaxResults, this value + // can be used to retrieve the next page of results. This value is null when + // there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the snapshots. + Snapshots []*Snapshot `locationName:"snapshotSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeSnapshotsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeSnapshotsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeSnapshotsOutput) SetNextToken(v string) *DescribeSnapshotsOutput { + s.NextToken = &v + return s +} + +// SetSnapshots sets the Snapshots field's value. +func (s *DescribeSnapshotsOutput) SetSnapshots(v []*Snapshot) *DescribeSnapshotsOutput { + s.Snapshots = v + return s +} + +// Contains the parameters for DescribeSpotDatafeedSubscription. +type DescribeSpotDatafeedSubscriptionInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` +} + +// String returns the string representation +func (s DescribeSpotDatafeedSubscriptionInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeSpotDatafeedSubscriptionInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeSpotDatafeedSubscriptionInput) SetDryRun(v bool) *DescribeSpotDatafeedSubscriptionInput { + s.DryRun = &v + return s +} + +// Contains the output of DescribeSpotDatafeedSubscription. +type DescribeSpotDatafeedSubscriptionOutput struct { + _ struct{} `type:"structure"` + + // The Spot Instance data feed subscription. + SpotDatafeedSubscription *SpotDatafeedSubscription `locationName:"spotDatafeedSubscription" type:"structure"` +} + +// String returns the string representation +func (s DescribeSpotDatafeedSubscriptionOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeSpotDatafeedSubscriptionOutput) GoString() string { + return s.String() +} + +// SetSpotDatafeedSubscription sets the SpotDatafeedSubscription field's value. +func (s *DescribeSpotDatafeedSubscriptionOutput) SetSpotDatafeedSubscription(v *SpotDatafeedSubscription) *DescribeSpotDatafeedSubscriptionOutput { + s.SpotDatafeedSubscription = v + return s +} + +// Contains the parameters for DescribeSpotFleetInstances. +type DescribeSpotFleetInstancesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The maximum number of results to return in a single call. Specify a value + // between 1 and 1000. The default value is 1000. To retrieve the remaining + // results, make another call with the returned NextToken value. + MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"` + + // The token for the next set of results. + NextToken *string `locationName:"nextToken" type:"string"` + + // The ID of the Spot Fleet request. + // + // SpotFleetRequestId is a required field + SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"` +} + +// String returns the string representation +func (s DescribeSpotFleetInstancesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeSpotFleetInstancesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeSpotFleetInstancesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeSpotFleetInstancesInput"} + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + if s.SpotFleetRequestId == nil { + invalidParams.Add(request.NewErrParamRequired("SpotFleetRequestId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeSpotFleetInstancesInput) SetDryRun(v bool) *DescribeSpotFleetInstancesInput { + s.DryRun = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeSpotFleetInstancesInput) SetMaxResults(v int64) *DescribeSpotFleetInstancesInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeSpotFleetInstancesInput) SetNextToken(v string) *DescribeSpotFleetInstancesInput { + s.NextToken = &v + return s +} + +// SetSpotFleetRequestId sets the SpotFleetRequestId field's value. +func (s *DescribeSpotFleetInstancesInput) SetSpotFleetRequestId(v string) *DescribeSpotFleetInstancesInput { + s.SpotFleetRequestId = &v + return s +} + +// Contains the output of DescribeSpotFleetInstances. +type DescribeSpotFleetInstancesOutput struct { + _ struct{} `type:"structure"` + + // The running instances. This list is refreshed periodically and might be out + // of date. + ActiveInstances []*ActiveInstance `locationName:"activeInstanceSet" locationNameList:"item" type:"list"` + + // The token required to retrieve the next set of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // The ID of the Spot Fleet request. + SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string"` +} + +// String returns the string representation +func (s DescribeSpotFleetInstancesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeSpotFleetInstancesOutput) GoString() string { + return s.String() +} + +// SetActiveInstances sets the ActiveInstances field's value. +func (s *DescribeSpotFleetInstancesOutput) SetActiveInstances(v []*ActiveInstance) *DescribeSpotFleetInstancesOutput { + s.ActiveInstances = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeSpotFleetInstancesOutput) SetNextToken(v string) *DescribeSpotFleetInstancesOutput { + s.NextToken = &v + return s +} + +// SetSpotFleetRequestId sets the SpotFleetRequestId field's value. +func (s *DescribeSpotFleetInstancesOutput) SetSpotFleetRequestId(v string) *DescribeSpotFleetInstancesOutput { + s.SpotFleetRequestId = &v + return s +} + +// Contains the parameters for DescribeSpotFleetRequestHistory. +type DescribeSpotFleetRequestHistoryInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The type of events to describe. By default, all events are described. + EventType *string `locationName:"eventType" type:"string" enum:"EventType"` + + // The maximum number of results to return in a single call. Specify a value + // between 1 and 1000. The default value is 1000. To retrieve the remaining + // results, make another call with the returned NextToken value. + MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"` + + // The token for the next set of results. + NextToken *string `locationName:"nextToken" type:"string"` + + // The ID of the Spot Fleet request. + // + // SpotFleetRequestId is a required field + SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"` + + // The starting date and time for the events, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). + // + // StartTime is a required field + StartTime *time.Time `locationName:"startTime" type:"timestamp" required:"true"` +} + +// String returns the string representation +func (s DescribeSpotFleetRequestHistoryInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeSpotFleetRequestHistoryInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeSpotFleetRequestHistoryInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeSpotFleetRequestHistoryInput"} + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + if s.SpotFleetRequestId == nil { + invalidParams.Add(request.NewErrParamRequired("SpotFleetRequestId")) + } + if s.StartTime == nil { + invalidParams.Add(request.NewErrParamRequired("StartTime")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeSpotFleetRequestHistoryInput) SetDryRun(v bool) *DescribeSpotFleetRequestHistoryInput { + s.DryRun = &v + return s +} + +// SetEventType sets the EventType field's value. +func (s *DescribeSpotFleetRequestHistoryInput) SetEventType(v string) *DescribeSpotFleetRequestHistoryInput { + s.EventType = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeSpotFleetRequestHistoryInput) SetMaxResults(v int64) *DescribeSpotFleetRequestHistoryInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeSpotFleetRequestHistoryInput) SetNextToken(v string) *DescribeSpotFleetRequestHistoryInput { + s.NextToken = &v + return s +} + +// SetSpotFleetRequestId sets the SpotFleetRequestId field's value. +func (s *DescribeSpotFleetRequestHistoryInput) SetSpotFleetRequestId(v string) *DescribeSpotFleetRequestHistoryInput { + s.SpotFleetRequestId = &v + return s +} + +// SetStartTime sets the StartTime field's value. +func (s *DescribeSpotFleetRequestHistoryInput) SetStartTime(v time.Time) *DescribeSpotFleetRequestHistoryInput { + s.StartTime = &v + return s +} + +// Contains the output of DescribeSpotFleetRequestHistory. +type DescribeSpotFleetRequestHistoryOutput struct { + _ struct{} `type:"structure"` + + // Information about the events in the history of the Spot Fleet request. + HistoryRecords []*HistoryRecord `locationName:"historyRecordSet" locationNameList:"item" type:"list"` + + // The last date and time for the events, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). + // All records up to this time were retrieved. + // + // If nextToken indicates that there are more results, this value is not present. + LastEvaluatedTime *time.Time `locationName:"lastEvaluatedTime" type:"timestamp"` + + // The token required to retrieve the next set of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // The ID of the Spot Fleet request. + SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string"` + + // The starting date and time for the events, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). + StartTime *time.Time `locationName:"startTime" type:"timestamp"` +} + +// String returns the string representation +func (s DescribeSpotFleetRequestHistoryOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeSpotFleetRequestHistoryOutput) GoString() string { + return s.String() +} + +// SetHistoryRecords sets the HistoryRecords field's value. +func (s *DescribeSpotFleetRequestHistoryOutput) SetHistoryRecords(v []*HistoryRecord) *DescribeSpotFleetRequestHistoryOutput { + s.HistoryRecords = v + return s +} + +// SetLastEvaluatedTime sets the LastEvaluatedTime field's value. +func (s *DescribeSpotFleetRequestHistoryOutput) SetLastEvaluatedTime(v time.Time) *DescribeSpotFleetRequestHistoryOutput { + s.LastEvaluatedTime = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeSpotFleetRequestHistoryOutput) SetNextToken(v string) *DescribeSpotFleetRequestHistoryOutput { + s.NextToken = &v + return s +} + +// SetSpotFleetRequestId sets the SpotFleetRequestId field's value. +func (s *DescribeSpotFleetRequestHistoryOutput) SetSpotFleetRequestId(v string) *DescribeSpotFleetRequestHistoryOutput { + s.SpotFleetRequestId = &v + return s +} + +// SetStartTime sets the StartTime field's value. +func (s *DescribeSpotFleetRequestHistoryOutput) SetStartTime(v time.Time) *DescribeSpotFleetRequestHistoryOutput { + s.StartTime = &v + return s +} + +// Contains the parameters for DescribeSpotFleetRequests. +type DescribeSpotFleetRequestsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The maximum number of results to return in a single call. Specify a value + // between 1 and 1000. The default value is 1000. To retrieve the remaining + // results, make another call with the returned NextToken value. + MaxResults *int64 `locationName:"maxResults" type:"integer"` + + // The token for the next set of results. + NextToken *string `locationName:"nextToken" type:"string"` + + // The IDs of the Spot Fleet requests. + SpotFleetRequestIds []*string `locationName:"spotFleetRequestId" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeSpotFleetRequestsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeSpotFleetRequestsInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeSpotFleetRequestsInput) SetDryRun(v bool) *DescribeSpotFleetRequestsInput { + s.DryRun = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeSpotFleetRequestsInput) SetMaxResults(v int64) *DescribeSpotFleetRequestsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeSpotFleetRequestsInput) SetNextToken(v string) *DescribeSpotFleetRequestsInput { + s.NextToken = &v + return s +} + +// SetSpotFleetRequestIds sets the SpotFleetRequestIds field's value. +func (s *DescribeSpotFleetRequestsInput) SetSpotFleetRequestIds(v []*string) *DescribeSpotFleetRequestsInput { + s.SpotFleetRequestIds = v + return s +} + +// Contains the output of DescribeSpotFleetRequests. +type DescribeSpotFleetRequestsOutput struct { + _ struct{} `type:"structure"` + + // The token required to retrieve the next set of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the configuration of your Spot Fleet. + SpotFleetRequestConfigs []*SpotFleetRequestConfig `locationName:"spotFleetRequestConfigSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeSpotFleetRequestsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeSpotFleetRequestsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeSpotFleetRequestsOutput) SetNextToken(v string) *DescribeSpotFleetRequestsOutput { + s.NextToken = &v + return s +} + +// SetSpotFleetRequestConfigs sets the SpotFleetRequestConfigs field's value. +func (s *DescribeSpotFleetRequestsOutput) SetSpotFleetRequestConfigs(v []*SpotFleetRequestConfig) *DescribeSpotFleetRequestsOutput { + s.SpotFleetRequestConfigs = v + return s +} + +// Contains the parameters for DescribeSpotInstanceRequests. +type DescribeSpotInstanceRequestsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // One or more filters. + // + // * availability-zone-group - The Availability Zone group. + // + // * create-time - The time stamp when the Spot Instance request was created. + // + // * fault-code - The fault code related to the request. + // + // * fault-message - The fault message related to the request. + // + // * instance-id - The ID of the instance that fulfilled the request. + // + // * launch-group - The Spot Instance launch group. + // + // * launch.block-device-mapping.delete-on-termination - Indicates whether + // the EBS volume is deleted on instance termination. + // + // * launch.block-device-mapping.device-name - The device name for the volume + // in the block device mapping (for example, /dev/sdh or xvdh). + // + // * launch.block-device-mapping.snapshot-id - The ID of the snapshot for + // the EBS volume. + // + // * launch.block-device-mapping.volume-size - The size of the EBS volume, + // in GiB. + // + // * launch.block-device-mapping.volume-type - The type of EBS volume: gp2 + // for General Purpose SSD, io1 for Provisioned IOPS SSD, st1 for Throughput + // Optimized HDD, sc1for Cold HDD, or standard for Magnetic. + // + // * launch.group-id - The ID of the security group for the instance. + // + // * launch.group-name - The name of the security group for the instance. + // + // * launch.image-id - The ID of the AMI. + // + // * launch.instance-type - The type of instance (for example, m3.medium). + // + // * launch.kernel-id - The kernel ID. + // + // * launch.key-name - The name of the key pair the instance launched with. + // + // * launch.monitoring-enabled - Whether detailed monitoring is enabled for + // the Spot Instance. + // + // * launch.ramdisk-id - The RAM disk ID. + // + // * launched-availability-zone - The Availability Zone in which the request + // is launched. + // + // * network-interface.addresses.primary - Indicates whether the IP address + // is the primary private IP address. + // + // * network-interface.delete-on-termination - Indicates whether the network + // interface is deleted when the instance is terminated. + // + // * network-interface.description - A description of the network interface. + // + // * network-interface.device-index - The index of the device for the network + // interface attachment on the instance. + // + // * network-interface.group-id - The ID of the security group associated + // with the network interface. + // + // * network-interface.network-interface-id - The ID of the network interface. + // + // * network-interface.private-ip-address - The primary private IP address + // of the network interface. + // + // * network-interface.subnet-id - The ID of the subnet for the instance. + // + // * product-description - The product description associated with the instance + // (Linux/UNIX | Windows). + // + // * spot-instance-request-id - The Spot Instance request ID. + // + // * spot-price - The maximum hourly price for any Spot Instance launched + // to fulfill the request. + // + // * state - The state of the Spot Instance request (open | active | closed + // | cancelled | failed). Spot request status information can help you track + // your Amazon EC2 Spot Instance requests. For more information, see Spot + // Request Status (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html) + // in the Amazon EC2 User Guide for Linux Instances. + // + // * status-code - The short code describing the most recent evaluation of + // your Spot Instance request. + // + // * status-message - The message explaining the status of the Spot Instance + // request. + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + // + // * type - The type of Spot Instance request (one-time | persistent). + // + // * valid-from - The start date of the request. + // + // * valid-until - The end date of the request. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return in a single call. Specify a value + // between 5 and 1000. To retrieve the remaining results, make another call + // with the returned NextToken value. + MaxResults *int64 `type:"integer"` + + // The token to request the next set of results. This value is null when there + // are no more results to return. + NextToken *string `type:"string"` + + // One or more Spot Instance request IDs. + SpotInstanceRequestIds []*string `locationName:"SpotInstanceRequestId" locationNameList:"SpotInstanceRequestId" type:"list"` +} + +// String returns the string representation +func (s DescribeSpotInstanceRequestsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeSpotInstanceRequestsInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeSpotInstanceRequestsInput) SetDryRun(v bool) *DescribeSpotInstanceRequestsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeSpotInstanceRequestsInput) SetFilters(v []*Filter) *DescribeSpotInstanceRequestsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeSpotInstanceRequestsInput) SetMaxResults(v int64) *DescribeSpotInstanceRequestsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeSpotInstanceRequestsInput) SetNextToken(v string) *DescribeSpotInstanceRequestsInput { + s.NextToken = &v + return s +} + +// SetSpotInstanceRequestIds sets the SpotInstanceRequestIds field's value. +func (s *DescribeSpotInstanceRequestsInput) SetSpotInstanceRequestIds(v []*string) *DescribeSpotInstanceRequestsInput { + s.SpotInstanceRequestIds = v + return s +} + +// Contains the output of DescribeSpotInstanceRequests. +type DescribeSpotInstanceRequestsOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next set of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // One or more Spot Instance requests. + SpotInstanceRequests []*SpotInstanceRequest `locationName:"spotInstanceRequestSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeSpotInstanceRequestsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeSpotInstanceRequestsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeSpotInstanceRequestsOutput) SetNextToken(v string) *DescribeSpotInstanceRequestsOutput { + s.NextToken = &v + return s +} + +// SetSpotInstanceRequests sets the SpotInstanceRequests field's value. +func (s *DescribeSpotInstanceRequestsOutput) SetSpotInstanceRequests(v []*SpotInstanceRequest) *DescribeSpotInstanceRequestsOutput { + s.SpotInstanceRequests = v + return s +} + +// Contains the parameters for DescribeSpotPriceHistory. +type DescribeSpotPriceHistoryInput struct { + _ struct{} `type:"structure"` + + // Filters the results by the specified Availability Zone. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The date and time, up to the current date, from which to stop retrieving + // the price history data, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). + EndTime *time.Time `locationName:"endTime" type:"timestamp"` + + // One or more filters. + // + // * availability-zone - The Availability Zone for which prices should be + // returned. + // + // * instance-type - The type of instance (for example, m3.medium). + // + // * product-description - The product description for the Spot price (Linux/UNIX + // | SUSE Linux | Windows | Linux/UNIX (Amazon VPC) | SUSE Linux (Amazon + // VPC) | Windows (Amazon VPC)). + // + // * spot-price - The Spot price. The value must match exactly (or use wildcards; + // greater than or less than comparison is not supported). + // + // * timestamp - The time stamp of the Spot price history, in UTC format + // (for example, YYYY-MM-DDTHH:MM:SSZ). You can use wildcards (* and ?). + // Greater than or less than comparison is not supported. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // Filters the results by the specified instance types. + InstanceTypes []*string `locationName:"InstanceType" type:"list"` + + // The maximum number of results to return in a single call. Specify a value + // between 1 and 1000. The default value is 1000. To retrieve the remaining + // results, make another call with the returned NextToken value. + MaxResults *int64 `locationName:"maxResults" type:"integer"` + + // The token for the next set of results. + NextToken *string `locationName:"nextToken" type:"string"` + + // Filters the results by the specified basic product descriptions. + ProductDescriptions []*string `locationName:"ProductDescription" type:"list"` + + // The date and time, up to the past 90 days, from which to start retrieving + // the price history data, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). + StartTime *time.Time `locationName:"startTime" type:"timestamp"` +} + +// String returns the string representation +func (s DescribeSpotPriceHistoryInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeSpotPriceHistoryInput) GoString() string { + return s.String() +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *DescribeSpotPriceHistoryInput) SetAvailabilityZone(v string) *DescribeSpotPriceHistoryInput { + s.AvailabilityZone = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeSpotPriceHistoryInput) SetDryRun(v bool) *DescribeSpotPriceHistoryInput { + s.DryRun = &v + return s +} + +// SetEndTime sets the EndTime field's value. +func (s *DescribeSpotPriceHistoryInput) SetEndTime(v time.Time) *DescribeSpotPriceHistoryInput { + s.EndTime = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeSpotPriceHistoryInput) SetFilters(v []*Filter) *DescribeSpotPriceHistoryInput { + s.Filters = v + return s +} + +// SetInstanceTypes sets the InstanceTypes field's value. +func (s *DescribeSpotPriceHistoryInput) SetInstanceTypes(v []*string) *DescribeSpotPriceHistoryInput { + s.InstanceTypes = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeSpotPriceHistoryInput) SetMaxResults(v int64) *DescribeSpotPriceHistoryInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeSpotPriceHistoryInput) SetNextToken(v string) *DescribeSpotPriceHistoryInput { + s.NextToken = &v + return s +} + +// SetProductDescriptions sets the ProductDescriptions field's value. +func (s *DescribeSpotPriceHistoryInput) SetProductDescriptions(v []*string) *DescribeSpotPriceHistoryInput { + s.ProductDescriptions = v + return s +} + +// SetStartTime sets the StartTime field's value. +func (s *DescribeSpotPriceHistoryInput) SetStartTime(v time.Time) *DescribeSpotPriceHistoryInput { + s.StartTime = &v + return s +} + +// Contains the output of DescribeSpotPriceHistory. +type DescribeSpotPriceHistoryOutput struct { + _ struct{} `type:"structure"` + + // The token required to retrieve the next set of results. This value is null + // or an empty string when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // The historical Spot prices. + SpotPriceHistory []*SpotPrice `locationName:"spotPriceHistorySet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeSpotPriceHistoryOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeSpotPriceHistoryOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeSpotPriceHistoryOutput) SetNextToken(v string) *DescribeSpotPriceHistoryOutput { + s.NextToken = &v + return s +} + +// SetSpotPriceHistory sets the SpotPriceHistory field's value. +func (s *DescribeSpotPriceHistoryOutput) SetSpotPriceHistory(v []*SpotPrice) *DescribeSpotPriceHistoryOutput { + s.SpotPriceHistory = v + return s +} + +type DescribeStaleSecurityGroupsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The maximum number of items to return for this request. The request returns + // a token that you can specify in a subsequent call to get the next set of + // results. + MaxResults *int64 `min:"5" type:"integer"` + + // The token for the next set of items to return. (You received this token from + // a prior call.) + NextToken *string `min:"1" type:"string"` + + // The ID of the VPC. + // + // VpcId is a required field + VpcId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DescribeStaleSecurityGroupsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeStaleSecurityGroupsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeStaleSecurityGroupsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeStaleSecurityGroupsInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + if s.NextToken != nil && len(*s.NextToken) < 1 { + invalidParams.Add(request.NewErrParamMinLen("NextToken", 1)) + } + if s.VpcId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeStaleSecurityGroupsInput) SetDryRun(v bool) *DescribeStaleSecurityGroupsInput { + s.DryRun = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeStaleSecurityGroupsInput) SetMaxResults(v int64) *DescribeStaleSecurityGroupsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeStaleSecurityGroupsInput) SetNextToken(v string) *DescribeStaleSecurityGroupsInput { + s.NextToken = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *DescribeStaleSecurityGroupsInput) SetVpcId(v string) *DescribeStaleSecurityGroupsInput { + s.VpcId = &v + return s +} + +type DescribeStaleSecurityGroupsOutput struct { + _ struct{} `type:"structure"` + + // The token to use when requesting the next set of items. If there are no additional + // items to return, the string is empty. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the stale security groups. + StaleSecurityGroupSet []*StaleSecurityGroup `locationName:"staleSecurityGroupSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeStaleSecurityGroupsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeStaleSecurityGroupsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeStaleSecurityGroupsOutput) SetNextToken(v string) *DescribeStaleSecurityGroupsOutput { + s.NextToken = &v + return s +} + +// SetStaleSecurityGroupSet sets the StaleSecurityGroupSet field's value. +func (s *DescribeStaleSecurityGroupsOutput) SetStaleSecurityGroupSet(v []*StaleSecurityGroup) *DescribeStaleSecurityGroupsOutput { + s.StaleSecurityGroupSet = v + return s +} + +type DescribeSubnetsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // One or more filters. + // + // * availability-zone - The Availability Zone for the subnet. You can also + // use availabilityZone as the filter name. + // + // * availability-zone-id - The ID of the Availability Zone for the subnet. + // You can also use availabilityZoneId as the filter name. + // + // * available-ip-address-count - The number of IPv4 addresses in the subnet + // that are available. + // + // * cidr-block - The IPv4 CIDR block of the subnet. The CIDR block you specify + // must exactly match the subnet's CIDR block for information to be returned + // for the subnet. You can also use cidr or cidrBlock as the filter names. + // + // * default-for-az - Indicates whether this is the default subnet for the + // Availability Zone. You can also use defaultForAz as the filter name. + // + // * ipv6-cidr-block-association.ipv6-cidr-block - An IPv6 CIDR block associated + // with the subnet. + // + // * ipv6-cidr-block-association.association-id - An association ID for an + // IPv6 CIDR block associated with the subnet. + // + // * ipv6-cidr-block-association.state - The state of an IPv6 CIDR block + // associated with the subnet. + // + // * owner-id - The ID of the AWS account that owns the subnet. + // + // * state - The state of the subnet (pending | available). + // + // * subnet-arn - The Amazon Resource Name (ARN) of the subnet. + // + // * subnet-id - The ID of the subnet. + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + // + // * vpc-id - The ID of the VPC for the subnet. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `min:"5" type:"integer"` + + // The token for the next page of results. + NextToken *string `type:"string"` + + // One or more subnet IDs. + // + // Default: Describes all your subnets. + SubnetIds []*string `locationName:"SubnetId" locationNameList:"SubnetId" type:"list"` +} + +// String returns the string representation +func (s DescribeSubnetsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeSubnetsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeSubnetsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeSubnetsInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeSubnetsInput) SetDryRun(v bool) *DescribeSubnetsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeSubnetsInput) SetFilters(v []*Filter) *DescribeSubnetsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeSubnetsInput) SetMaxResults(v int64) *DescribeSubnetsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeSubnetsInput) SetNextToken(v string) *DescribeSubnetsInput { + s.NextToken = &v + return s +} + +// SetSubnetIds sets the SubnetIds field's value. +func (s *DescribeSubnetsInput) SetSubnetIds(v []*string) *DescribeSubnetsInput { + s.SubnetIds = v + return s +} + +type DescribeSubnetsOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about one or more subnets. + Subnets []*Subnet `locationName:"subnetSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeSubnetsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeSubnetsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeSubnetsOutput) SetNextToken(v string) *DescribeSubnetsOutput { + s.NextToken = &v + return s +} + +// SetSubnets sets the Subnets field's value. +func (s *DescribeSubnetsOutput) SetSubnets(v []*Subnet) *DescribeSubnetsOutput { + s.Subnets = v + return s +} + +type DescribeTagsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The filters. + // + // * key - The tag key. + // + // * resource-id - The ID of the resource. + // + // * resource-type - The resource type (customer-gateway | dedicated-host + // | dhcp-options | elastic-ip | fleet | fpga-image | image | instance | + // host-reservation | internet-gateway | launch-template | natgateway | network-acl + // | network-interface | reserved-instances | route-table | security-group + // | snapshot | spot-instances-request | subnet | volume | vpc | vpc-peering-connection + // | vpn-connection | vpn-gateway). + // + // * tag: - The key/value combination of the tag. For example, specify + // "tag:Owner" for the filter name and "TeamA" for the filter value to find + // resources with the tag "Owner=TeamA". + // + // * value - The tag value. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return in a single call. This value can + // be between 5 and 1000. To retrieve the remaining results, make another call + // with the returned NextToken value. + MaxResults *int64 `locationName:"maxResults" type:"integer"` + + // The token to retrieve the next page of results. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeTagsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeTagsInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeTagsInput) SetDryRun(v bool) *DescribeTagsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeTagsInput) SetFilters(v []*Filter) *DescribeTagsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeTagsInput) SetMaxResults(v int64) *DescribeTagsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeTagsInput) SetNextToken(v string) *DescribeTagsInput { + s.NextToken = &v + return s +} + +type DescribeTagsOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // The tags. + Tags []*TagDescription `locationName:"tagSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeTagsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeTagsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeTagsOutput) SetNextToken(v string) *DescribeTagsOutput { + s.NextToken = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *DescribeTagsOutput) SetTags(v []*TagDescription) *DescribeTagsOutput { + s.Tags = v + return s +} + +type DescribeTrafficMirrorFiltersInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. The possible values are: + // + // * description: The Traffic Mirror filter description. + // + // * traffic-mirror-filter-id: The ID of the Traffic Mirror filter. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `min:"5" type:"integer"` + + // The token for the next page of results. + NextToken *string `type:"string"` + + // The ID of the Traffic Mirror filter. + TrafficMirrorFilterIds []*string `locationName:"TrafficMirrorFilterId" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeTrafficMirrorFiltersInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeTrafficMirrorFiltersInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeTrafficMirrorFiltersInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeTrafficMirrorFiltersInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeTrafficMirrorFiltersInput) SetDryRun(v bool) *DescribeTrafficMirrorFiltersInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeTrafficMirrorFiltersInput) SetFilters(v []*Filter) *DescribeTrafficMirrorFiltersInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeTrafficMirrorFiltersInput) SetMaxResults(v int64) *DescribeTrafficMirrorFiltersInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeTrafficMirrorFiltersInput) SetNextToken(v string) *DescribeTrafficMirrorFiltersInput { + s.NextToken = &v + return s +} + +// SetTrafficMirrorFilterIds sets the TrafficMirrorFilterIds field's value. +func (s *DescribeTrafficMirrorFiltersInput) SetTrafficMirrorFilterIds(v []*string) *DescribeTrafficMirrorFiltersInput { + s.TrafficMirrorFilterIds = v + return s +} + +type DescribeTrafficMirrorFiltersOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. The value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about one or more Traffic Mirror filters. + TrafficMirrorFilters []*TrafficMirrorFilter `locationName:"trafficMirrorFilterSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeTrafficMirrorFiltersOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeTrafficMirrorFiltersOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeTrafficMirrorFiltersOutput) SetNextToken(v string) *DescribeTrafficMirrorFiltersOutput { + s.NextToken = &v + return s +} + +// SetTrafficMirrorFilters sets the TrafficMirrorFilters field's value. +func (s *DescribeTrafficMirrorFiltersOutput) SetTrafficMirrorFilters(v []*TrafficMirrorFilter) *DescribeTrafficMirrorFiltersOutput { + s.TrafficMirrorFilters = v + return s +} + +type DescribeTrafficMirrorSessionsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. The possible values are: + // + // * description: The Traffic Mirror session description. + // + // * network-interface-id: The ID of the Traffic Mirror session network interface. + // + // * owner-id: The ID of the account that owns the Traffic Mirror session. + // + // * packet-length: The assigned number of packets to mirror. + // + // * session-number: The assigned session number. + // + // * traffic-mirror-filter-id: The ID of the Traffic Mirror filter. + // + // * traffic-mirror-session-id: The ID of the Traffic Mirror session. + // + // * traffic-mirror-target-id: The ID of the Traffic Mirror target. + // + // * virtual-network-id: The virtual network ID of the Traffic Mirror session. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `min:"5" type:"integer"` + + // The token for the next page of results. + NextToken *string `type:"string"` + + // The ID of the Traffic Mirror session. + TrafficMirrorSessionIds []*string `locationName:"TrafficMirrorSessionId" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeTrafficMirrorSessionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeTrafficMirrorSessionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeTrafficMirrorSessionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeTrafficMirrorSessionsInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeTrafficMirrorSessionsInput) SetDryRun(v bool) *DescribeTrafficMirrorSessionsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeTrafficMirrorSessionsInput) SetFilters(v []*Filter) *DescribeTrafficMirrorSessionsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeTrafficMirrorSessionsInput) SetMaxResults(v int64) *DescribeTrafficMirrorSessionsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeTrafficMirrorSessionsInput) SetNextToken(v string) *DescribeTrafficMirrorSessionsInput { + s.NextToken = &v + return s +} + +// SetTrafficMirrorSessionIds sets the TrafficMirrorSessionIds field's value. +func (s *DescribeTrafficMirrorSessionsInput) SetTrafficMirrorSessionIds(v []*string) *DescribeTrafficMirrorSessionsInput { + s.TrafficMirrorSessionIds = v + return s +} + +type DescribeTrafficMirrorSessionsOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. The value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Describes one or more Traffic Mirror sessions. By default, all Traffic Mirror + // sessions are described. Alternatively, you can filter the results. + TrafficMirrorSessions []*TrafficMirrorSession `locationName:"trafficMirrorSessionSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeTrafficMirrorSessionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeTrafficMirrorSessionsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeTrafficMirrorSessionsOutput) SetNextToken(v string) *DescribeTrafficMirrorSessionsOutput { + s.NextToken = &v + return s +} + +// SetTrafficMirrorSessions sets the TrafficMirrorSessions field's value. +func (s *DescribeTrafficMirrorSessionsOutput) SetTrafficMirrorSessions(v []*TrafficMirrorSession) *DescribeTrafficMirrorSessionsOutput { + s.TrafficMirrorSessions = v + return s +} + +type DescribeTrafficMirrorTargetsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. The possible values are: + // + // * description: The Traffic Mirror target description. + // + // * network-interface-id: The ID of the Traffic Mirror session network interface. + // + // * network-load-balancer-arn: The Amazon Resource Name (ARN) of the Network + // Load Balancer that is associated with the session. + // + // * owner-id: The ID of the account that owns the Traffic Mirror session. + // + // * traffic-mirror-target-id: The ID of the Traffic Mirror target. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `min:"5" type:"integer"` + + // The token for the next page of results. + NextToken *string `type:"string"` + + // The ID of the Traffic Mirror targets. + TrafficMirrorTargetIds []*string `locationName:"TrafficMirrorTargetId" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeTrafficMirrorTargetsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeTrafficMirrorTargetsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeTrafficMirrorTargetsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeTrafficMirrorTargetsInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeTrafficMirrorTargetsInput) SetDryRun(v bool) *DescribeTrafficMirrorTargetsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeTrafficMirrorTargetsInput) SetFilters(v []*Filter) *DescribeTrafficMirrorTargetsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeTrafficMirrorTargetsInput) SetMaxResults(v int64) *DescribeTrafficMirrorTargetsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeTrafficMirrorTargetsInput) SetNextToken(v string) *DescribeTrafficMirrorTargetsInput { + s.NextToken = &v + return s +} + +// SetTrafficMirrorTargetIds sets the TrafficMirrorTargetIds field's value. +func (s *DescribeTrafficMirrorTargetsInput) SetTrafficMirrorTargetIds(v []*string) *DescribeTrafficMirrorTargetsInput { + s.TrafficMirrorTargetIds = v + return s +} + +type DescribeTrafficMirrorTargetsOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. The value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about one or more Traffic Mirror targets. + TrafficMirrorTargets []*TrafficMirrorTarget `locationName:"trafficMirrorTargetSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeTrafficMirrorTargetsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeTrafficMirrorTargetsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeTrafficMirrorTargetsOutput) SetNextToken(v string) *DescribeTrafficMirrorTargetsOutput { + s.NextToken = &v + return s +} + +// SetTrafficMirrorTargets sets the TrafficMirrorTargets field's value. +func (s *DescribeTrafficMirrorTargetsOutput) SetTrafficMirrorTargets(v []*TrafficMirrorTarget) *DescribeTrafficMirrorTargetsOutput { + s.TrafficMirrorTargets = v + return s +} + +type DescribeTransitGatewayAttachmentsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. The possible values are: + // + // * association.state - The state of the association (associating | associated + // | disassociating). + // + // * association.transit-gateway-route-table-id - The ID of the route table + // for the transit gateway. + // + // * resource-id - The ID of the resource. + // + // * resource-owner-id - The ID of the AWS account that owns the resource. + // + // * resource-type - The resource type (vpc | vpn). + // + // * state - The state of the attachment (available | deleted | deleting + // | failed | modifying | pendingAcceptance | pending | rollingBack | rejected + // | rejecting). + // + // * transit-gateway-attachment-id - The ID of the attachment. + // + // * transit-gateway-id - The ID of the transit gateway. + // + // * transit-gateway-owner-id - The ID of the AWS account that owns the transit + // gateway. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `min:"5" type:"integer"` + + // The token for the next page of results. + NextToken *string `type:"string"` + + // The IDs of the attachments. + TransitGatewayAttachmentIds []*string `type:"list"` +} + +// String returns the string representation +func (s DescribeTransitGatewayAttachmentsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeTransitGatewayAttachmentsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeTransitGatewayAttachmentsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeTransitGatewayAttachmentsInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeTransitGatewayAttachmentsInput) SetDryRun(v bool) *DescribeTransitGatewayAttachmentsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeTransitGatewayAttachmentsInput) SetFilters(v []*Filter) *DescribeTransitGatewayAttachmentsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeTransitGatewayAttachmentsInput) SetMaxResults(v int64) *DescribeTransitGatewayAttachmentsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeTransitGatewayAttachmentsInput) SetNextToken(v string) *DescribeTransitGatewayAttachmentsInput { + s.NextToken = &v + return s +} + +// SetTransitGatewayAttachmentIds sets the TransitGatewayAttachmentIds field's value. +func (s *DescribeTransitGatewayAttachmentsInput) SetTransitGatewayAttachmentIds(v []*string) *DescribeTransitGatewayAttachmentsInput { + s.TransitGatewayAttachmentIds = v + return s +} + +type DescribeTransitGatewayAttachmentsOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the attachments. + TransitGatewayAttachments []*TransitGatewayAttachment `locationName:"transitGatewayAttachments" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeTransitGatewayAttachmentsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeTransitGatewayAttachmentsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeTransitGatewayAttachmentsOutput) SetNextToken(v string) *DescribeTransitGatewayAttachmentsOutput { + s.NextToken = &v + return s +} + +// SetTransitGatewayAttachments sets the TransitGatewayAttachments field's value. +func (s *DescribeTransitGatewayAttachmentsOutput) SetTransitGatewayAttachments(v []*TransitGatewayAttachment) *DescribeTransitGatewayAttachmentsOutput { + s.TransitGatewayAttachments = v + return s +} + +type DescribeTransitGatewayRouteTablesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. The possible values are: + // + // * default-association-route-table - Indicates whether this is the default + // association route table for the transit gateway (true | false). + // + // * default-propagation-route-table - Indicates whether this is the default + // propagation route table for the transit gateway (true | false). + // + // * state - The state of the attachment (available | deleted | deleting + // | failed | modifying | pendingAcceptance | pending | rollingBack | rejected + // | rejecting). + // + // * transit-gateway-id - The ID of the transit gateway. + // + // * transit-gateway-route-table-id - The ID of the transit gateway route + // table. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `min:"5" type:"integer"` + + // The token for the next page of results. + NextToken *string `type:"string"` + + // The IDs of the transit gateway route tables. + TransitGatewayRouteTableIds []*string `locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeTransitGatewayRouteTablesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeTransitGatewayRouteTablesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeTransitGatewayRouteTablesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeTransitGatewayRouteTablesInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeTransitGatewayRouteTablesInput) SetDryRun(v bool) *DescribeTransitGatewayRouteTablesInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeTransitGatewayRouteTablesInput) SetFilters(v []*Filter) *DescribeTransitGatewayRouteTablesInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeTransitGatewayRouteTablesInput) SetMaxResults(v int64) *DescribeTransitGatewayRouteTablesInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeTransitGatewayRouteTablesInput) SetNextToken(v string) *DescribeTransitGatewayRouteTablesInput { + s.NextToken = &v + return s +} + +// SetTransitGatewayRouteTableIds sets the TransitGatewayRouteTableIds field's value. +func (s *DescribeTransitGatewayRouteTablesInput) SetTransitGatewayRouteTableIds(v []*string) *DescribeTransitGatewayRouteTablesInput { + s.TransitGatewayRouteTableIds = v + return s +} + +type DescribeTransitGatewayRouteTablesOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the transit gateway route tables. + TransitGatewayRouteTables []*TransitGatewayRouteTable `locationName:"transitGatewayRouteTables" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeTransitGatewayRouteTablesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeTransitGatewayRouteTablesOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeTransitGatewayRouteTablesOutput) SetNextToken(v string) *DescribeTransitGatewayRouteTablesOutput { + s.NextToken = &v + return s +} + +// SetTransitGatewayRouteTables sets the TransitGatewayRouteTables field's value. +func (s *DescribeTransitGatewayRouteTablesOutput) SetTransitGatewayRouteTables(v []*TransitGatewayRouteTable) *DescribeTransitGatewayRouteTablesOutput { + s.TransitGatewayRouteTables = v + return s +} + +type DescribeTransitGatewayVpcAttachmentsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. The possible values are: + // + // * state - The state of the attachment (available | deleted | deleting + // | failed | modifying | pendingAcceptance | pending | rollingBack | rejected + // | rejecting). + // + // * transit-gateway-attachment-id - The ID of the attachment. + // + // * transit-gateway-id - The ID of the transit gateway. + // + // * vpc-id - The ID of the VPC. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `min:"5" type:"integer"` + + // The token for the next page of results. + NextToken *string `type:"string"` + + // The IDs of the attachments. + TransitGatewayAttachmentIds []*string `type:"list"` +} + +// String returns the string representation +func (s DescribeTransitGatewayVpcAttachmentsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeTransitGatewayVpcAttachmentsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeTransitGatewayVpcAttachmentsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeTransitGatewayVpcAttachmentsInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeTransitGatewayVpcAttachmentsInput) SetDryRun(v bool) *DescribeTransitGatewayVpcAttachmentsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeTransitGatewayVpcAttachmentsInput) SetFilters(v []*Filter) *DescribeTransitGatewayVpcAttachmentsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeTransitGatewayVpcAttachmentsInput) SetMaxResults(v int64) *DescribeTransitGatewayVpcAttachmentsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeTransitGatewayVpcAttachmentsInput) SetNextToken(v string) *DescribeTransitGatewayVpcAttachmentsInput { + s.NextToken = &v + return s +} + +// SetTransitGatewayAttachmentIds sets the TransitGatewayAttachmentIds field's value. +func (s *DescribeTransitGatewayVpcAttachmentsInput) SetTransitGatewayAttachmentIds(v []*string) *DescribeTransitGatewayVpcAttachmentsInput { + s.TransitGatewayAttachmentIds = v + return s +} + +type DescribeTransitGatewayVpcAttachmentsOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the VPC attachments. + TransitGatewayVpcAttachments []*TransitGatewayVpcAttachment `locationName:"transitGatewayVpcAttachments" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeTransitGatewayVpcAttachmentsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeTransitGatewayVpcAttachmentsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeTransitGatewayVpcAttachmentsOutput) SetNextToken(v string) *DescribeTransitGatewayVpcAttachmentsOutput { + s.NextToken = &v + return s +} + +// SetTransitGatewayVpcAttachments sets the TransitGatewayVpcAttachments field's value. +func (s *DescribeTransitGatewayVpcAttachmentsOutput) SetTransitGatewayVpcAttachments(v []*TransitGatewayVpcAttachment) *DescribeTransitGatewayVpcAttachmentsOutput { + s.TransitGatewayVpcAttachments = v + return s +} + +type DescribeTransitGatewaysInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. The possible values are: + // + // * options.propagation-default-route-table-id - The ID of the default propagation + // route table. + // + // * options.amazon-side-asn - The private ASN for the Amazon side of a BGP + // session. + // + // * options.association-default-route-table-id - The ID of the default association + // route table. + // + // * options.auto-accept-shared-attachments - Indicates whether there is + // automatic acceptance of attachment requests (enable | disable). + // + // * options.default-route-table-association - Indicates whether resource + // attachments are automatically associated with the default association + // route table (enable | disable). + // + // * options.default-route-table-propagation - Indicates whether resource + // attachments automatically propagate routes to the default propagation + // route table (enable | disable). + // + // * options.dns-support - Indicates whether DNS support is enabled (enable + // | disable). + // + // * options.vpn-ecmp-support - Indicates whether Equal Cost Multipath Protocol + // support is enabled (enable | disable). + // + // * owner-id - The ID of the AWS account that owns the transit gateway. + // + // * state - The state of the attachment (available | deleted | deleting + // | failed | modifying | pendingAcceptance | pending | rollingBack | rejected + // | rejecting). + // + // * transit-gateway-id - The ID of the transit gateway. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `min:"5" type:"integer"` + + // The token for the next page of results. + NextToken *string `type:"string"` + + // The IDs of the transit gateways. + TransitGatewayIds []*string `locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeTransitGatewaysInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeTransitGatewaysInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeTransitGatewaysInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeTransitGatewaysInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeTransitGatewaysInput) SetDryRun(v bool) *DescribeTransitGatewaysInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeTransitGatewaysInput) SetFilters(v []*Filter) *DescribeTransitGatewaysInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeTransitGatewaysInput) SetMaxResults(v int64) *DescribeTransitGatewaysInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeTransitGatewaysInput) SetNextToken(v string) *DescribeTransitGatewaysInput { + s.NextToken = &v + return s +} + +// SetTransitGatewayIds sets the TransitGatewayIds field's value. +func (s *DescribeTransitGatewaysInput) SetTransitGatewayIds(v []*string) *DescribeTransitGatewaysInput { + s.TransitGatewayIds = v + return s +} + +type DescribeTransitGatewaysOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the transit gateways. + TransitGateways []*TransitGateway `locationName:"transitGatewaySet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeTransitGatewaysOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeTransitGatewaysOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeTransitGatewaysOutput) SetNextToken(v string) *DescribeTransitGatewaysOutput { + s.NextToken = &v + return s +} + +// SetTransitGateways sets the TransitGateways field's value. +func (s *DescribeTransitGatewaysOutput) SetTransitGateways(v []*TransitGateway) *DescribeTransitGatewaysOutput { + s.TransitGateways = v + return s +} + +// Contains the parameters for DescribeVolumeAttribute. +type DescribeVolumeAttributeInput struct { + _ struct{} `type:"structure"` + + // The attribute of the volume. This parameter is required. + // + // Attribute is a required field + Attribute *string `type:"string" required:"true" enum:"VolumeAttributeName"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the volume. + // + // VolumeId is a required field + VolumeId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DescribeVolumeAttributeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVolumeAttributeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeVolumeAttributeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeVolumeAttributeInput"} + if s.Attribute == nil { + invalidParams.Add(request.NewErrParamRequired("Attribute")) + } + if s.VolumeId == nil { + invalidParams.Add(request.NewErrParamRequired("VolumeId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAttribute sets the Attribute field's value. +func (s *DescribeVolumeAttributeInput) SetAttribute(v string) *DescribeVolumeAttributeInput { + s.Attribute = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeVolumeAttributeInput) SetDryRun(v bool) *DescribeVolumeAttributeInput { + s.DryRun = &v + return s +} + +// SetVolumeId sets the VolumeId field's value. +func (s *DescribeVolumeAttributeInput) SetVolumeId(v string) *DescribeVolumeAttributeInput { + s.VolumeId = &v + return s +} + +// Contains the output of DescribeVolumeAttribute. +type DescribeVolumeAttributeOutput struct { + _ struct{} `type:"structure"` + + // The state of autoEnableIO attribute. + AutoEnableIO *AttributeBooleanValue `locationName:"autoEnableIO" type:"structure"` + + // A list of product codes. + ProductCodes []*ProductCode `locationName:"productCodes" locationNameList:"item" type:"list"` + + // The ID of the volume. + VolumeId *string `locationName:"volumeId" type:"string"` +} + +// String returns the string representation +func (s DescribeVolumeAttributeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVolumeAttributeOutput) GoString() string { + return s.String() +} + +// SetAutoEnableIO sets the AutoEnableIO field's value. +func (s *DescribeVolumeAttributeOutput) SetAutoEnableIO(v *AttributeBooleanValue) *DescribeVolumeAttributeOutput { + s.AutoEnableIO = v + return s +} + +// SetProductCodes sets the ProductCodes field's value. +func (s *DescribeVolumeAttributeOutput) SetProductCodes(v []*ProductCode) *DescribeVolumeAttributeOutput { + s.ProductCodes = v + return s +} + +// SetVolumeId sets the VolumeId field's value. +func (s *DescribeVolumeAttributeOutput) SetVolumeId(v string) *DescribeVolumeAttributeOutput { + s.VolumeId = &v + return s +} + +type DescribeVolumeStatusInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The filters. + // + // * action.code - The action code for the event (for example, enable-volume-io). + // + // * action.description - A description of the action. + // + // * action.event-id - The event ID associated with the action. + // + // * availability-zone - The Availability Zone of the instance. + // + // * event.description - A description of the event. + // + // * event.event-id - The event ID. + // + // * event.event-type - The event type (for io-enabled: passed | failed; + // for io-performance: io-performance:degraded | io-performance:severely-degraded + // | io-performance:stalled). + // + // * event.not-after - The latest end time for the event. + // + // * event.not-before - The earliest start time for the event. + // + // * volume-status.details-name - The cause for volume-status.status (io-enabled + // | io-performance). + // + // * volume-status.details-status - The status of volume-status.details-name + // (for io-enabled: passed | failed; for io-performance: normal | degraded + // | severely-degraded | stalled). + // + // * volume-status.status - The status of the volume (ok | impaired | warning + // | insufficient-data). + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of volume results returned by DescribeVolumeStatus in + // paginated output. When this parameter is used, the request only returns MaxResults + // results in a single page along with a NextToken response element. The remaining + // results of the initial request can be seen by sending another request with + // the returned NextToken value. This value can be between 5 and 1000; if MaxResults + // is given a value larger than 1000, only 1000 results are returned. If this + // parameter is not used, then DescribeVolumeStatus returns all results. You + // cannot specify this parameter and the volume IDs parameter in the same request. + MaxResults *int64 `type:"integer"` + + // The NextToken value to include in a future DescribeVolumeStatus request. + // When the results of the request exceed MaxResults, this value can be used + // to retrieve the next page of results. This value is null when there are no + // more results to return. + NextToken *string `type:"string"` + + // The IDs of the volumes. + // + // Default: Describes all your volumes. + VolumeIds []*string `locationName:"VolumeId" locationNameList:"VolumeId" type:"list"` +} + +// String returns the string representation +func (s DescribeVolumeStatusInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVolumeStatusInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeVolumeStatusInput) SetDryRun(v bool) *DescribeVolumeStatusInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeVolumeStatusInput) SetFilters(v []*Filter) *DescribeVolumeStatusInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeVolumeStatusInput) SetMaxResults(v int64) *DescribeVolumeStatusInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVolumeStatusInput) SetNextToken(v string) *DescribeVolumeStatusInput { + s.NextToken = &v + return s +} + +// SetVolumeIds sets the VolumeIds field's value. +func (s *DescribeVolumeStatusInput) SetVolumeIds(v []*string) *DescribeVolumeStatusInput { + s.VolumeIds = v + return s +} + +type DescribeVolumeStatusOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the status of the volumes. + VolumeStatuses []*VolumeStatusItem `locationName:"volumeStatusSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeVolumeStatusOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVolumeStatusOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVolumeStatusOutput) SetNextToken(v string) *DescribeVolumeStatusOutput { + s.NextToken = &v + return s +} + +// SetVolumeStatuses sets the VolumeStatuses field's value. +func (s *DescribeVolumeStatusOutput) SetVolumeStatuses(v []*VolumeStatusItem) *DescribeVolumeStatusOutput { + s.VolumeStatuses = v + return s +} + +type DescribeVolumesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The filters. + // + // * attachment.attach-time - The time stamp when the attachment initiated. + // + // * attachment.delete-on-termination - Whether the volume is deleted on + // instance termination. + // + // * attachment.device - The device name specified in the block device mapping + // (for example, /dev/sda1). + // + // * attachment.instance-id - The ID of the instance the volume is attached + // to. + // + // * attachment.status - The attachment state (attaching | attached | detaching). + // + // * availability-zone - The Availability Zone in which the volume was created. + // + // * create-time - The time stamp when the volume was created. + // + // * encrypted - Indicates whether the volume is encrypted (true | false) + // + // * size - The size of the volume, in GiB. + // + // * snapshot-id - The snapshot from which the volume was created. + // + // * status - The status of the volume (creating | available | in-use | deleting + // | deleted | error). + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + // + // * volume-id - The volume ID. + // + // * volume-type - The Amazon EBS volume type. This can be gp2 for General + // Purpose SSD, io1 for Provisioned IOPS SSD, st1 for Throughput Optimized + // HDD, sc1 for Cold HDD, or standard for Magnetic volumes. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of volume results returned by DescribeVolumes in paginated + // output. When this parameter is used, DescribeVolumes only returns MaxResults + // results in a single page along with a NextToken response element. The remaining + // results of the initial request can be seen by sending another DescribeVolumes + // request with the returned NextToken value. This value can be between 5 and + // 500; if MaxResults is given a value larger than 500, only 500 results are + // returned. If this parameter is not used, then DescribeVolumes returns all + // results. You cannot specify this parameter and the volume IDs parameter in + // the same request. + MaxResults *int64 `locationName:"maxResults" type:"integer"` + + // The NextToken value returned from a previous paginated DescribeVolumes request + // where MaxResults was used and the results exceeded the value of that parameter. + // Pagination continues from the end of the previous results that returned the + // NextToken value. This value is null when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // The volume IDs. + VolumeIds []*string `locationName:"VolumeId" locationNameList:"VolumeId" type:"list"` +} + +// String returns the string representation +func (s DescribeVolumesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVolumesInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeVolumesInput) SetDryRun(v bool) *DescribeVolumesInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeVolumesInput) SetFilters(v []*Filter) *DescribeVolumesInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeVolumesInput) SetMaxResults(v int64) *DescribeVolumesInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVolumesInput) SetNextToken(v string) *DescribeVolumesInput { + s.NextToken = &v + return s +} + +// SetVolumeIds sets the VolumeIds field's value. +func (s *DescribeVolumesInput) SetVolumeIds(v []*string) *DescribeVolumesInput { + s.VolumeIds = v + return s +} + +type DescribeVolumesModificationsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The filters. Supported filters: volume-id, modification-state, target-size, + // target-iops, target-volume-type, original-size, original-iops, original-volume-type, + // start-time. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results (up to a limit of 500) to be returned in a + // paginated request. + MaxResults *int64 `type:"integer"` + + // The nextToken value returned by a previous paginated request. + NextToken *string `type:"string"` + + // The IDs of the volumes for which in-progress modifications will be described. + VolumeIds []*string `locationName:"VolumeId" locationNameList:"VolumeId" type:"list"` +} + +// String returns the string representation +func (s DescribeVolumesModificationsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVolumesModificationsInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeVolumesModificationsInput) SetDryRun(v bool) *DescribeVolumesModificationsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeVolumesModificationsInput) SetFilters(v []*Filter) *DescribeVolumesModificationsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeVolumesModificationsInput) SetMaxResults(v int64) *DescribeVolumesModificationsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVolumesModificationsInput) SetNextToken(v string) *DescribeVolumesModificationsInput { + s.NextToken = &v + return s +} + +// SetVolumeIds sets the VolumeIds field's value. +func (s *DescribeVolumesModificationsInput) SetVolumeIds(v []*string) *DescribeVolumesModificationsInput { + s.VolumeIds = v + return s +} + +type DescribeVolumesModificationsOutput struct { + _ struct{} `type:"structure"` + + // Token for pagination, null if there are no more results + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the volume modifications. + VolumesModifications []*VolumeModification `locationName:"volumeModificationSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeVolumesModificationsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVolumesModificationsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVolumesModificationsOutput) SetNextToken(v string) *DescribeVolumesModificationsOutput { + s.NextToken = &v + return s +} + +// SetVolumesModifications sets the VolumesModifications field's value. +func (s *DescribeVolumesModificationsOutput) SetVolumesModifications(v []*VolumeModification) *DescribeVolumesModificationsOutput { + s.VolumesModifications = v + return s +} + +type DescribeVolumesOutput struct { + _ struct{} `type:"structure"` + + // The NextToken value to include in a future DescribeVolumes request. When + // the results of a DescribeVolumes request exceed MaxResults, this value can + // be used to retrieve the next page of results. This value is null when there + // are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the volumes. + Volumes []*Volume `locationName:"volumeSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeVolumesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVolumesOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVolumesOutput) SetNextToken(v string) *DescribeVolumesOutput { + s.NextToken = &v + return s +} + +// SetVolumes sets the Volumes field's value. +func (s *DescribeVolumesOutput) SetVolumes(v []*Volume) *DescribeVolumesOutput { + s.Volumes = v + return s +} + +type DescribeVpcAttributeInput struct { + _ struct{} `type:"structure"` + + // The VPC attribute. + // + // Attribute is a required field + Attribute *string `type:"string" required:"true" enum:"VpcAttributeName"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the VPC. + // + // VpcId is a required field + VpcId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DescribeVpcAttributeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcAttributeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeVpcAttributeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeVpcAttributeInput"} + if s.Attribute == nil { + invalidParams.Add(request.NewErrParamRequired("Attribute")) + } + if s.VpcId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAttribute sets the Attribute field's value. +func (s *DescribeVpcAttributeInput) SetAttribute(v string) *DescribeVpcAttributeInput { + s.Attribute = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeVpcAttributeInput) SetDryRun(v bool) *DescribeVpcAttributeInput { + s.DryRun = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *DescribeVpcAttributeInput) SetVpcId(v string) *DescribeVpcAttributeInput { + s.VpcId = &v + return s +} + +type DescribeVpcAttributeOutput struct { + _ struct{} `type:"structure"` + + // Indicates whether the instances launched in the VPC get DNS hostnames. If + // this attribute is true, instances in the VPC get DNS hostnames; otherwise, + // they do not. + EnableDnsHostnames *AttributeBooleanValue `locationName:"enableDnsHostnames" type:"structure"` + + // Indicates whether DNS resolution is enabled for the VPC. If this attribute + // is true, the Amazon DNS server resolves DNS hostnames for your instances + // to their corresponding IP addresses; otherwise, it does not. + EnableDnsSupport *AttributeBooleanValue `locationName:"enableDnsSupport" type:"structure"` + + // The ID of the VPC. + VpcId *string `locationName:"vpcId" type:"string"` +} + +// String returns the string representation +func (s DescribeVpcAttributeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcAttributeOutput) GoString() string { + return s.String() +} + +// SetEnableDnsHostnames sets the EnableDnsHostnames field's value. +func (s *DescribeVpcAttributeOutput) SetEnableDnsHostnames(v *AttributeBooleanValue) *DescribeVpcAttributeOutput { + s.EnableDnsHostnames = v + return s +} + +// SetEnableDnsSupport sets the EnableDnsSupport field's value. +func (s *DescribeVpcAttributeOutput) SetEnableDnsSupport(v *AttributeBooleanValue) *DescribeVpcAttributeOutput { + s.EnableDnsSupport = v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *DescribeVpcAttributeOutput) SetVpcId(v string) *DescribeVpcAttributeOutput { + s.VpcId = &v + return s +} + +type DescribeVpcClassicLinkDnsSupportInput struct { + _ struct{} `type:"structure"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `locationName:"maxResults" min:"5" type:"integer"` + + // The token for the next page of results. + NextToken *string `locationName:"nextToken" min:"1" type:"string"` + + // One or more VPC IDs. + VpcIds []*string `locationNameList:"VpcId" type:"list"` +} + +// String returns the string representation +func (s DescribeVpcClassicLinkDnsSupportInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcClassicLinkDnsSupportInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeVpcClassicLinkDnsSupportInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeVpcClassicLinkDnsSupportInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + if s.NextToken != nil && len(*s.NextToken) < 1 { + invalidParams.Add(request.NewErrParamMinLen("NextToken", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeVpcClassicLinkDnsSupportInput) SetMaxResults(v int64) *DescribeVpcClassicLinkDnsSupportInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcClassicLinkDnsSupportInput) SetNextToken(v string) *DescribeVpcClassicLinkDnsSupportInput { + s.NextToken = &v + return s +} + +// SetVpcIds sets the VpcIds field's value. +func (s *DescribeVpcClassicLinkDnsSupportInput) SetVpcIds(v []*string) *DescribeVpcClassicLinkDnsSupportInput { + s.VpcIds = v + return s +} + +type DescribeVpcClassicLinkDnsSupportOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" min:"1" type:"string"` + + // Information about the ClassicLink DNS support status of the VPCs. + Vpcs []*ClassicLinkDnsSupport `locationName:"vpcs" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeVpcClassicLinkDnsSupportOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcClassicLinkDnsSupportOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcClassicLinkDnsSupportOutput) SetNextToken(v string) *DescribeVpcClassicLinkDnsSupportOutput { + s.NextToken = &v + return s +} + +// SetVpcs sets the Vpcs field's value. +func (s *DescribeVpcClassicLinkDnsSupportOutput) SetVpcs(v []*ClassicLinkDnsSupport) *DescribeVpcClassicLinkDnsSupportOutput { + s.Vpcs = v + return s +} + +type DescribeVpcClassicLinkInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // One or more filters. + // + // * is-classic-link-enabled - Whether the VPC is enabled for ClassicLink + // (true | false). + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // One or more VPCs for which you want to describe the ClassicLink status. + VpcIds []*string `locationName:"VpcId" locationNameList:"VpcId" type:"list"` +} + +// String returns the string representation +func (s DescribeVpcClassicLinkInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcClassicLinkInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeVpcClassicLinkInput) SetDryRun(v bool) *DescribeVpcClassicLinkInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeVpcClassicLinkInput) SetFilters(v []*Filter) *DescribeVpcClassicLinkInput { + s.Filters = v + return s +} + +// SetVpcIds sets the VpcIds field's value. +func (s *DescribeVpcClassicLinkInput) SetVpcIds(v []*string) *DescribeVpcClassicLinkInput { + s.VpcIds = v + return s +} + +type DescribeVpcClassicLinkOutput struct { + _ struct{} `type:"structure"` + + // The ClassicLink status of one or more VPCs. + Vpcs []*VpcClassicLink `locationName:"vpcSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeVpcClassicLinkOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcClassicLinkOutput) GoString() string { + return s.String() +} + +// SetVpcs sets the Vpcs field's value. +func (s *DescribeVpcClassicLinkOutput) SetVpcs(v []*VpcClassicLink) *DescribeVpcClassicLinkOutput { + s.Vpcs = v + return s +} + +type DescribeVpcEndpointConnectionNotificationsInput struct { + _ struct{} `type:"structure"` + + // The ID of the notification. + ConnectionNotificationId *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. + // + // * connection-notification-arn - The ARN of SNS topic for the notification. + // + // * connection-notification-id - The ID of the notification. + // + // * connection-notification-state - The state of the notification (Enabled + // | Disabled). + // + // * connection-notification-type - The type of notification (Topic). + // + // * service-id - The ID of the endpoint service. + // + // * vpc-endpoint-id - The ID of the VPC endpoint. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return in a single call. To retrieve the + // remaining results, make another request with the returned NextToken value. + MaxResults *int64 `type:"integer"` + + // The token to request the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeVpcEndpointConnectionNotificationsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcEndpointConnectionNotificationsInput) GoString() string { + return s.String() +} + +// SetConnectionNotificationId sets the ConnectionNotificationId field's value. +func (s *DescribeVpcEndpointConnectionNotificationsInput) SetConnectionNotificationId(v string) *DescribeVpcEndpointConnectionNotificationsInput { + s.ConnectionNotificationId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeVpcEndpointConnectionNotificationsInput) SetDryRun(v bool) *DescribeVpcEndpointConnectionNotificationsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeVpcEndpointConnectionNotificationsInput) SetFilters(v []*Filter) *DescribeVpcEndpointConnectionNotificationsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeVpcEndpointConnectionNotificationsInput) SetMaxResults(v int64) *DescribeVpcEndpointConnectionNotificationsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcEndpointConnectionNotificationsInput) SetNextToken(v string) *DescribeVpcEndpointConnectionNotificationsInput { + s.NextToken = &v + return s +} + +type DescribeVpcEndpointConnectionNotificationsOutput struct { + _ struct{} `type:"structure"` + + // One or more notifications. + ConnectionNotificationSet []*ConnectionNotification `locationName:"connectionNotificationSet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeVpcEndpointConnectionNotificationsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcEndpointConnectionNotificationsOutput) GoString() string { + return s.String() +} + +// SetConnectionNotificationSet sets the ConnectionNotificationSet field's value. +func (s *DescribeVpcEndpointConnectionNotificationsOutput) SetConnectionNotificationSet(v []*ConnectionNotification) *DescribeVpcEndpointConnectionNotificationsOutput { + s.ConnectionNotificationSet = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcEndpointConnectionNotificationsOutput) SetNextToken(v string) *DescribeVpcEndpointConnectionNotificationsOutput { + s.NextToken = &v + return s +} + +type DescribeVpcEndpointConnectionsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. + // + // * service-id - The ID of the service. + // + // * vpc-endpoint-owner - The AWS account number of the owner of the endpoint. + // + // * vpc-endpoint-state - The state of the endpoint (pendingAcceptance | + // pending | available | deleting | deleted | rejected | failed). + // + // * vpc-endpoint-id - The ID of the endpoint. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return for the request in a single page. + // The remaining results of the initial request can be seen by sending another + // request with the returned NextToken value. This value can be between 5 and + // 1000; if MaxResults is given a value larger than 1000, only 1000 results + // are returned. + MaxResults *int64 `type:"integer"` + + // The token to retrieve the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeVpcEndpointConnectionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcEndpointConnectionsInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeVpcEndpointConnectionsInput) SetDryRun(v bool) *DescribeVpcEndpointConnectionsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeVpcEndpointConnectionsInput) SetFilters(v []*Filter) *DescribeVpcEndpointConnectionsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeVpcEndpointConnectionsInput) SetMaxResults(v int64) *DescribeVpcEndpointConnectionsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcEndpointConnectionsInput) SetNextToken(v string) *DescribeVpcEndpointConnectionsInput { + s.NextToken = &v + return s +} + +type DescribeVpcEndpointConnectionsOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about one or more VPC endpoint connections. + VpcEndpointConnections []*VpcEndpointConnection `locationName:"vpcEndpointConnectionSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeVpcEndpointConnectionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcEndpointConnectionsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcEndpointConnectionsOutput) SetNextToken(v string) *DescribeVpcEndpointConnectionsOutput { + s.NextToken = &v + return s +} + +// SetVpcEndpointConnections sets the VpcEndpointConnections field's value. +func (s *DescribeVpcEndpointConnectionsOutput) SetVpcEndpointConnections(v []*VpcEndpointConnection) *DescribeVpcEndpointConnectionsOutput { + s.VpcEndpointConnections = v + return s +} + +type DescribeVpcEndpointServiceConfigurationsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. + // + // * service-name - The name of the service. + // + // * service-id - The ID of the service. + // + // * service-state - The state of the service (Pending | Available | Deleting + // | Deleted | Failed). + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return for the request in a single page. + // The remaining results of the initial request can be seen by sending another + // request with the returned NextToken value. This value can be between 5 and + // 1000; if MaxResults is given a value larger than 1000, only 1000 results + // are returned. + MaxResults *int64 `type:"integer"` + + // The token to retrieve the next page of results. + NextToken *string `type:"string"` + + // The IDs of one or more services. + ServiceIds []*string `locationName:"ServiceId" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeVpcEndpointServiceConfigurationsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcEndpointServiceConfigurationsInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeVpcEndpointServiceConfigurationsInput) SetDryRun(v bool) *DescribeVpcEndpointServiceConfigurationsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeVpcEndpointServiceConfigurationsInput) SetFilters(v []*Filter) *DescribeVpcEndpointServiceConfigurationsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeVpcEndpointServiceConfigurationsInput) SetMaxResults(v int64) *DescribeVpcEndpointServiceConfigurationsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcEndpointServiceConfigurationsInput) SetNextToken(v string) *DescribeVpcEndpointServiceConfigurationsInput { + s.NextToken = &v + return s +} + +// SetServiceIds sets the ServiceIds field's value. +func (s *DescribeVpcEndpointServiceConfigurationsInput) SetServiceIds(v []*string) *DescribeVpcEndpointServiceConfigurationsInput { + s.ServiceIds = v + return s +} + +type DescribeVpcEndpointServiceConfigurationsOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about one or more services. + ServiceConfigurations []*ServiceConfiguration `locationName:"serviceConfigurationSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeVpcEndpointServiceConfigurationsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcEndpointServiceConfigurationsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcEndpointServiceConfigurationsOutput) SetNextToken(v string) *DescribeVpcEndpointServiceConfigurationsOutput { + s.NextToken = &v + return s +} + +// SetServiceConfigurations sets the ServiceConfigurations field's value. +func (s *DescribeVpcEndpointServiceConfigurationsOutput) SetServiceConfigurations(v []*ServiceConfiguration) *DescribeVpcEndpointServiceConfigurationsOutput { + s.ServiceConfigurations = v + return s +} + +type DescribeVpcEndpointServicePermissionsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. + // + // * principal - The ARN of the principal. + // + // * principal-type - The principal type (All | Service | OrganizationUnit + // | Account | User | Role). + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return for the request in a single page. + // The remaining results of the initial request can be seen by sending another + // request with the returned NextToken value. This value can be between 5 and + // 1000; if MaxResults is given a value larger than 1000, only 1000 results + // are returned. + MaxResults *int64 `type:"integer"` + + // The token to retrieve the next page of results. + NextToken *string `type:"string"` + + // The ID of the service. + // + // ServiceId is a required field + ServiceId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DescribeVpcEndpointServicePermissionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcEndpointServicePermissionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeVpcEndpointServicePermissionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeVpcEndpointServicePermissionsInput"} + if s.ServiceId == nil { + invalidParams.Add(request.NewErrParamRequired("ServiceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeVpcEndpointServicePermissionsInput) SetDryRun(v bool) *DescribeVpcEndpointServicePermissionsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeVpcEndpointServicePermissionsInput) SetFilters(v []*Filter) *DescribeVpcEndpointServicePermissionsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeVpcEndpointServicePermissionsInput) SetMaxResults(v int64) *DescribeVpcEndpointServicePermissionsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcEndpointServicePermissionsInput) SetNextToken(v string) *DescribeVpcEndpointServicePermissionsInput { + s.NextToken = &v + return s +} + +// SetServiceId sets the ServiceId field's value. +func (s *DescribeVpcEndpointServicePermissionsInput) SetServiceId(v string) *DescribeVpcEndpointServicePermissionsInput { + s.ServiceId = &v + return s +} + +type DescribeVpcEndpointServicePermissionsOutput struct { + _ struct{} `type:"structure"` + + // Information about one or more allowed principals. + AllowedPrincipals []*AllowedPrincipal `locationName:"allowedPrincipals" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeVpcEndpointServicePermissionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcEndpointServicePermissionsOutput) GoString() string { + return s.String() +} + +// SetAllowedPrincipals sets the AllowedPrincipals field's value. +func (s *DescribeVpcEndpointServicePermissionsOutput) SetAllowedPrincipals(v []*AllowedPrincipal) *DescribeVpcEndpointServicePermissionsOutput { + s.AllowedPrincipals = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcEndpointServicePermissionsOutput) SetNextToken(v string) *DescribeVpcEndpointServicePermissionsOutput { + s.NextToken = &v + return s +} + +// Contains the parameters for DescribeVpcEndpointServices. +type DescribeVpcEndpointServicesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. + // + // * service-name: The name of the service. + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of items to return for this request. The request returns + // a token that you can specify in a subsequent call to get the next set of + // results. + // + // Constraint: If the value is greater than 1000, we return only 1000 items. + MaxResults *int64 `type:"integer"` + + // The token for the next set of items to return. (You received this token from + // a prior call.) + NextToken *string `type:"string"` + + // One or more service names. + ServiceNames []*string `locationName:"ServiceName" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeVpcEndpointServicesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcEndpointServicesInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeVpcEndpointServicesInput) SetDryRun(v bool) *DescribeVpcEndpointServicesInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeVpcEndpointServicesInput) SetFilters(v []*Filter) *DescribeVpcEndpointServicesInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeVpcEndpointServicesInput) SetMaxResults(v int64) *DescribeVpcEndpointServicesInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcEndpointServicesInput) SetNextToken(v string) *DescribeVpcEndpointServicesInput { + s.NextToken = &v + return s +} + +// SetServiceNames sets the ServiceNames field's value. +func (s *DescribeVpcEndpointServicesInput) SetServiceNames(v []*string) *DescribeVpcEndpointServicesInput { + s.ServiceNames = v + return s +} + +// Contains the output of DescribeVpcEndpointServices. +type DescribeVpcEndpointServicesOutput struct { + _ struct{} `type:"structure"` + + // The token to use when requesting the next set of items. If there are no additional + // items to return, the string is empty. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the service. + ServiceDetails []*ServiceDetail `locationName:"serviceDetailSet" locationNameList:"item" type:"list"` + + // A list of supported services. + ServiceNames []*string `locationName:"serviceNameSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeVpcEndpointServicesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcEndpointServicesOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcEndpointServicesOutput) SetNextToken(v string) *DescribeVpcEndpointServicesOutput { + s.NextToken = &v + return s +} + +// SetServiceDetails sets the ServiceDetails field's value. +func (s *DescribeVpcEndpointServicesOutput) SetServiceDetails(v []*ServiceDetail) *DescribeVpcEndpointServicesOutput { + s.ServiceDetails = v + return s +} + +// SetServiceNames sets the ServiceNames field's value. +func (s *DescribeVpcEndpointServicesOutput) SetServiceNames(v []*string) *DescribeVpcEndpointServicesOutput { + s.ServiceNames = v + return s +} + +// Contains the parameters for DescribeVpcEndpoints. +type DescribeVpcEndpointsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. + // + // * service-name: The name of the service. + // + // * vpc-id: The ID of the VPC in which the endpoint resides. + // + // * vpc-endpoint-id: The ID of the endpoint. + // + // * vpc-endpoint-state - The state of the endpoint (pendingAcceptance | + // pending | available | deleting | deleted | rejected | failed). + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of items to return for this request. The request returns + // a token that you can specify in a subsequent call to get the next set of + // results. + // + // Constraint: If the value is greater than 1000, we return only 1000 items. + MaxResults *int64 `type:"integer"` + + // The token for the next set of items to return. (You received this token from + // a prior call.) + NextToken *string `type:"string"` + + // One or more endpoint IDs. + VpcEndpointIds []*string `locationName:"VpcEndpointId" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeVpcEndpointsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcEndpointsInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeVpcEndpointsInput) SetDryRun(v bool) *DescribeVpcEndpointsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeVpcEndpointsInput) SetFilters(v []*Filter) *DescribeVpcEndpointsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeVpcEndpointsInput) SetMaxResults(v int64) *DescribeVpcEndpointsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcEndpointsInput) SetNextToken(v string) *DescribeVpcEndpointsInput { + s.NextToken = &v + return s +} + +// SetVpcEndpointIds sets the VpcEndpointIds field's value. +func (s *DescribeVpcEndpointsInput) SetVpcEndpointIds(v []*string) *DescribeVpcEndpointsInput { + s.VpcEndpointIds = v + return s +} + +// Contains the output of DescribeVpcEndpoints. +type DescribeVpcEndpointsOutput struct { + _ struct{} `type:"structure"` + + // The token to use when requesting the next set of items. If there are no additional + // items to return, the string is empty. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the endpoints. + VpcEndpoints []*VpcEndpoint `locationName:"vpcEndpointSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeVpcEndpointsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcEndpointsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcEndpointsOutput) SetNextToken(v string) *DescribeVpcEndpointsOutput { + s.NextToken = &v + return s +} + +// SetVpcEndpoints sets the VpcEndpoints field's value. +func (s *DescribeVpcEndpointsOutput) SetVpcEndpoints(v []*VpcEndpoint) *DescribeVpcEndpointsOutput { + s.VpcEndpoints = v + return s +} + +type DescribeVpcPeeringConnectionsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // One or more filters. + // + // * accepter-vpc-info.cidr-block - The IPv4 CIDR block of the accepter VPC. + // + // * accepter-vpc-info.owner-id - The AWS account ID of the owner of the + // accepter VPC. + // + // * accepter-vpc-info.vpc-id - The ID of the accepter VPC. + // + // * expiration-time - The expiration date and time for the VPC peering connection. + // + // * requester-vpc-info.cidr-block - The IPv4 CIDR block of the requester's + // VPC. + // + // * requester-vpc-info.owner-id - The AWS account ID of the owner of the + // requester VPC. + // + // * requester-vpc-info.vpc-id - The ID of the requester VPC. + // + // * status-code - The status of the VPC peering connection (pending-acceptance + // | failed | expired | provisioning | active | deleting | deleted | rejected). + // + // * status-message - A message that provides more information about the + // status of the VPC peering connection, if applicable. + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + // + // * vpc-peering-connection-id - The ID of the VPC peering connection. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `min:"5" type:"integer"` + + // The token for the next page of results. + NextToken *string `type:"string"` + + // One or more VPC peering connection IDs. + // + // Default: Describes all your VPC peering connections. + VpcPeeringConnectionIds []*string `locationName:"VpcPeeringConnectionId" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeVpcPeeringConnectionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcPeeringConnectionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeVpcPeeringConnectionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeVpcPeeringConnectionsInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeVpcPeeringConnectionsInput) SetDryRun(v bool) *DescribeVpcPeeringConnectionsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeVpcPeeringConnectionsInput) SetFilters(v []*Filter) *DescribeVpcPeeringConnectionsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeVpcPeeringConnectionsInput) SetMaxResults(v int64) *DescribeVpcPeeringConnectionsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcPeeringConnectionsInput) SetNextToken(v string) *DescribeVpcPeeringConnectionsInput { + s.NextToken = &v + return s +} + +// SetVpcPeeringConnectionIds sets the VpcPeeringConnectionIds field's value. +func (s *DescribeVpcPeeringConnectionsInput) SetVpcPeeringConnectionIds(v []*string) *DescribeVpcPeeringConnectionsInput { + s.VpcPeeringConnectionIds = v + return s +} + +type DescribeVpcPeeringConnectionsOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the VPC peering connections. + VpcPeeringConnections []*VpcPeeringConnection `locationName:"vpcPeeringConnectionSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeVpcPeeringConnectionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcPeeringConnectionsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcPeeringConnectionsOutput) SetNextToken(v string) *DescribeVpcPeeringConnectionsOutput { + s.NextToken = &v + return s +} + +// SetVpcPeeringConnections sets the VpcPeeringConnections field's value. +func (s *DescribeVpcPeeringConnectionsOutput) SetVpcPeeringConnections(v []*VpcPeeringConnection) *DescribeVpcPeeringConnectionsOutput { + s.VpcPeeringConnections = v + return s +} + +type DescribeVpcsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // One or more filters. + // + // * cidr - The primary IPv4 CIDR block of the VPC. The CIDR block you specify + // must exactly match the VPC's CIDR block for information to be returned + // for the VPC. Must contain the slash followed by one or two digits (for + // example, /28). + // + // * cidr-block-association.cidr-block - An IPv4 CIDR block associated with + // the VPC. + // + // * cidr-block-association.association-id - The association ID for an IPv4 + // CIDR block associated with the VPC. + // + // * cidr-block-association.state - The state of an IPv4 CIDR block associated + // with the VPC. + // + // * dhcp-options-id - The ID of a set of DHCP options. + // + // * ipv6-cidr-block-association.ipv6-cidr-block - An IPv6 CIDR block associated + // with the VPC. + // + // * ipv6-cidr-block-association.association-id - The association ID for + // an IPv6 CIDR block associated with the VPC. + // + // * ipv6-cidr-block-association.state - The state of an IPv6 CIDR block + // associated with the VPC. + // + // * isDefault - Indicates whether the VPC is the default VPC. + // + // * owner-id - The ID of the AWS account that owns the VPC. + // + // * state - The state of the VPC (pending | available). + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + // + // * vpc-id - The ID of the VPC. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `min:"5" type:"integer"` + + // The token for the next page of results. + NextToken *string `type:"string"` + + // One or more VPC IDs. + // + // Default: Describes all your VPCs. + VpcIds []*string `locationName:"VpcId" locationNameList:"VpcId" type:"list"` +} + +// String returns the string representation +func (s DescribeVpcsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeVpcsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeVpcsInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeVpcsInput) SetDryRun(v bool) *DescribeVpcsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeVpcsInput) SetFilters(v []*Filter) *DescribeVpcsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeVpcsInput) SetMaxResults(v int64) *DescribeVpcsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcsInput) SetNextToken(v string) *DescribeVpcsInput { + s.NextToken = &v + return s +} + +// SetVpcIds sets the VpcIds field's value. +func (s *DescribeVpcsInput) SetVpcIds(v []*string) *DescribeVpcsInput { + s.VpcIds = v + return s +} + +type DescribeVpcsOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about one or more VPCs. + Vpcs []*Vpc `locationName:"vpcSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeVpcsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpcsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeVpcsOutput) SetNextToken(v string) *DescribeVpcsOutput { + s.NextToken = &v + return s +} + +// SetVpcs sets the Vpcs field's value. +func (s *DescribeVpcsOutput) SetVpcs(v []*Vpc) *DescribeVpcsOutput { + s.Vpcs = v + return s +} + +// Contains the parameters for DescribeVpnConnections. +type DescribeVpnConnectionsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // One or more filters. + // + // * customer-gateway-configuration - The configuration information for the + // customer gateway. + // + // * customer-gateway-id - The ID of a customer gateway associated with the + // VPN connection. + // + // * state - The state of the VPN connection (pending | available | deleting + // | deleted). + // + // * option.static-routes-only - Indicates whether the connection has static + // routes only. Used for devices that do not support Border Gateway Protocol + // (BGP). + // + // * route.destination-cidr-block - The destination CIDR block. This corresponds + // to the subnet used in a customer data center. + // + // * bgp-asn - The BGP Autonomous System Number (ASN) associated with a BGP + // device. + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + // + // * type - The type of VPN connection. Currently the only supported type + // is ipsec.1. + // + // * vpn-connection-id - The ID of the VPN connection. + // + // * vpn-gateway-id - The ID of a virtual private gateway associated with + // the VPN connection. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // One or more VPN connection IDs. + // + // Default: Describes your VPN connections. + VpnConnectionIds []*string `locationName:"VpnConnectionId" locationNameList:"VpnConnectionId" type:"list"` +} + +// String returns the string representation +func (s DescribeVpnConnectionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpnConnectionsInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeVpnConnectionsInput) SetDryRun(v bool) *DescribeVpnConnectionsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeVpnConnectionsInput) SetFilters(v []*Filter) *DescribeVpnConnectionsInput { + s.Filters = v + return s +} + +// SetVpnConnectionIds sets the VpnConnectionIds field's value. +func (s *DescribeVpnConnectionsInput) SetVpnConnectionIds(v []*string) *DescribeVpnConnectionsInput { + s.VpnConnectionIds = v + return s +} + +// Contains the output of DescribeVpnConnections. +type DescribeVpnConnectionsOutput struct { + _ struct{} `type:"structure"` + + // Information about one or more VPN connections. + VpnConnections []*VpnConnection `locationName:"vpnConnectionSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeVpnConnectionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpnConnectionsOutput) GoString() string { + return s.String() +} + +// SetVpnConnections sets the VpnConnections field's value. +func (s *DescribeVpnConnectionsOutput) SetVpnConnections(v []*VpnConnection) *DescribeVpnConnectionsOutput { + s.VpnConnections = v + return s +} + +// Contains the parameters for DescribeVpnGateways. +type DescribeVpnGatewaysInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // One or more filters. + // + // * amazon-side-asn - The Autonomous System Number (ASN) for the Amazon + // side of the gateway. + // + // * attachment.state - The current state of the attachment between the gateway + // and the VPC (attaching | attached | detaching | detached). + // + // * attachment.vpc-id - The ID of an attached VPC. + // + // * availability-zone - The Availability Zone for the virtual private gateway + // (if applicable). + // + // * state - The state of the virtual private gateway (pending | available + // | deleting | deleted). + // + // * tag: - The key/value combination of a tag assigned to the resource. + // Use the tag key in the filter name and the tag value as the filter value. + // For example, to find all resources that have a tag with the key Owner + // and the value TeamA, specify tag:Owner for the filter name and TeamA for + // the filter value. + // + // * tag-key - The key of a tag assigned to the resource. Use this filter + // to find all resources assigned a tag with a specific key, regardless of + // the tag value. + // + // * type - The type of virtual private gateway. Currently the only supported + // type is ipsec.1. + // + // * vpn-gateway-id - The ID of the virtual private gateway. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // One or more virtual private gateway IDs. + // + // Default: Describes all your virtual private gateways. + VpnGatewayIds []*string `locationName:"VpnGatewayId" locationNameList:"VpnGatewayId" type:"list"` +} + +// String returns the string representation +func (s DescribeVpnGatewaysInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpnGatewaysInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeVpnGatewaysInput) SetDryRun(v bool) *DescribeVpnGatewaysInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeVpnGatewaysInput) SetFilters(v []*Filter) *DescribeVpnGatewaysInput { + s.Filters = v + return s +} + +// SetVpnGatewayIds sets the VpnGatewayIds field's value. +func (s *DescribeVpnGatewaysInput) SetVpnGatewayIds(v []*string) *DescribeVpnGatewaysInput { + s.VpnGatewayIds = v + return s +} + +// Contains the output of DescribeVpnGateways. +type DescribeVpnGatewaysOutput struct { + _ struct{} `type:"structure"` + + // Information about one or more virtual private gateways. + VpnGateways []*VpnGateway `locationName:"vpnGatewaySet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeVpnGatewaysOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeVpnGatewaysOutput) GoString() string { + return s.String() +} + +// SetVpnGateways sets the VpnGateways field's value. +func (s *DescribeVpnGatewaysOutput) SetVpnGateways(v []*VpnGateway) *DescribeVpnGatewaysOutput { + s.VpnGateways = v + return s +} + +type DetachClassicLinkVpcInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the instance to unlink from the VPC. + // + // InstanceId is a required field + InstanceId *string `locationName:"instanceId" type:"string" required:"true"` + + // The ID of the VPC to which the instance is linked. + // + // VpcId is a required field + VpcId *string `locationName:"vpcId" type:"string" required:"true"` +} + +// String returns the string representation +func (s DetachClassicLinkVpcInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DetachClassicLinkVpcInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DetachClassicLinkVpcInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DetachClassicLinkVpcInput"} + if s.InstanceId == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceId")) + } + if s.VpcId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DetachClassicLinkVpcInput) SetDryRun(v bool) *DetachClassicLinkVpcInput { + s.DryRun = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *DetachClassicLinkVpcInput) SetInstanceId(v string) *DetachClassicLinkVpcInput { + s.InstanceId = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *DetachClassicLinkVpcInput) SetVpcId(v string) *DetachClassicLinkVpcInput { + s.VpcId = &v + return s +} + +type DetachClassicLinkVpcOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, it returns an error. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s DetachClassicLinkVpcOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DetachClassicLinkVpcOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *DetachClassicLinkVpcOutput) SetReturn(v bool) *DetachClassicLinkVpcOutput { + s.Return = &v + return s +} + +type DetachInternetGatewayInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the internet gateway. + // + // InternetGatewayId is a required field + InternetGatewayId *string `locationName:"internetGatewayId" type:"string" required:"true"` + + // The ID of the VPC. + // + // VpcId is a required field + VpcId *string `locationName:"vpcId" type:"string" required:"true"` +} + +// String returns the string representation +func (s DetachInternetGatewayInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DetachInternetGatewayInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DetachInternetGatewayInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DetachInternetGatewayInput"} + if s.InternetGatewayId == nil { + invalidParams.Add(request.NewErrParamRequired("InternetGatewayId")) + } + if s.VpcId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DetachInternetGatewayInput) SetDryRun(v bool) *DetachInternetGatewayInput { + s.DryRun = &v + return s +} + +// SetInternetGatewayId sets the InternetGatewayId field's value. +func (s *DetachInternetGatewayInput) SetInternetGatewayId(v string) *DetachInternetGatewayInput { + s.InternetGatewayId = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *DetachInternetGatewayInput) SetVpcId(v string) *DetachInternetGatewayInput { + s.VpcId = &v + return s +} + +type DetachInternetGatewayOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DetachInternetGatewayOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DetachInternetGatewayOutput) GoString() string { + return s.String() +} + +// Contains the parameters for DetachNetworkInterface. +type DetachNetworkInterfaceInput struct { + _ struct{} `type:"structure"` + + // The ID of the attachment. + // + // AttachmentId is a required field + AttachmentId *string `locationName:"attachmentId" type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // Specifies whether to force a detachment. + // + // * Use the Force parameter only as a last resort to detach a network interface + // from a failed instance. + // + // * If you use the Force parameter to detach a network interface, you might + // not be able to attach a different network interface to the same index + // on the instance without first stopping and starting the instance. + // + // * If you force the detachment of a network interface, the instance metadata + // (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) + // might not get updated. This means that the attributes associated with + // the detached network interface might still be visible. The instance metadata + // will get updated when you stop and start the instance. + Force *bool `locationName:"force" type:"boolean"` +} + +// String returns the string representation +func (s DetachNetworkInterfaceInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DetachNetworkInterfaceInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DetachNetworkInterfaceInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DetachNetworkInterfaceInput"} + if s.AttachmentId == nil { + invalidParams.Add(request.NewErrParamRequired("AttachmentId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAttachmentId sets the AttachmentId field's value. +func (s *DetachNetworkInterfaceInput) SetAttachmentId(v string) *DetachNetworkInterfaceInput { + s.AttachmentId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DetachNetworkInterfaceInput) SetDryRun(v bool) *DetachNetworkInterfaceInput { + s.DryRun = &v + return s +} + +// SetForce sets the Force field's value. +func (s *DetachNetworkInterfaceInput) SetForce(v bool) *DetachNetworkInterfaceInput { + s.Force = &v + return s +} + +type DetachNetworkInterfaceOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DetachNetworkInterfaceOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DetachNetworkInterfaceOutput) GoString() string { + return s.String() +} + +// Contains the parameters for DetachVolume. +type DetachVolumeInput struct { + _ struct{} `type:"structure"` + + // The device name. + Device *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // Forces detachment if the previous detachment attempt did not occur cleanly + // (for example, logging into an instance, unmounting the volume, and detaching + // normally). This option can lead to data loss or a corrupted file system. + // Use this option only as a last resort to detach a volume from a failed instance. + // The instance won't have an opportunity to flush file system caches or file + // system metadata. If you use this option, you must perform file system check + // and repair procedures. + Force *bool `type:"boolean"` + + // The ID of the instance. + InstanceId *string `type:"string"` + + // The ID of the volume. + // + // VolumeId is a required field + VolumeId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DetachVolumeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DetachVolumeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DetachVolumeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DetachVolumeInput"} + if s.VolumeId == nil { + invalidParams.Add(request.NewErrParamRequired("VolumeId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDevice sets the Device field's value. +func (s *DetachVolumeInput) SetDevice(v string) *DetachVolumeInput { + s.Device = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DetachVolumeInput) SetDryRun(v bool) *DetachVolumeInput { + s.DryRun = &v + return s +} + +// SetForce sets the Force field's value. +func (s *DetachVolumeInput) SetForce(v bool) *DetachVolumeInput { + s.Force = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *DetachVolumeInput) SetInstanceId(v string) *DetachVolumeInput { + s.InstanceId = &v + return s +} + +// SetVolumeId sets the VolumeId field's value. +func (s *DetachVolumeInput) SetVolumeId(v string) *DetachVolumeInput { + s.VolumeId = &v + return s +} + +// Contains the parameters for DetachVpnGateway. +type DetachVpnGatewayInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the VPC. + // + // VpcId is a required field + VpcId *string `type:"string" required:"true"` + + // The ID of the virtual private gateway. + // + // VpnGatewayId is a required field + VpnGatewayId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DetachVpnGatewayInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DetachVpnGatewayInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DetachVpnGatewayInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DetachVpnGatewayInput"} + if s.VpcId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcId")) + } + if s.VpnGatewayId == nil { + invalidParams.Add(request.NewErrParamRequired("VpnGatewayId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DetachVpnGatewayInput) SetDryRun(v bool) *DetachVpnGatewayInput { + s.DryRun = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *DetachVpnGatewayInput) SetVpcId(v string) *DetachVpnGatewayInput { + s.VpcId = &v + return s +} + +// SetVpnGatewayId sets the VpnGatewayId field's value. +func (s *DetachVpnGatewayInput) SetVpnGatewayId(v string) *DetachVpnGatewayInput { + s.VpnGatewayId = &v + return s +} + +type DetachVpnGatewayOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DetachVpnGatewayOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DetachVpnGatewayOutput) GoString() string { + return s.String() +} + +// Describes a DHCP configuration option. +type DhcpConfiguration struct { + _ struct{} `type:"structure"` + + // The name of a DHCP option. + Key *string `locationName:"key" type:"string"` + + // One or more values for the DHCP option. + Values []*AttributeValue `locationName:"valueSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DhcpConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DhcpConfiguration) GoString() string { + return s.String() +} + +// SetKey sets the Key field's value. +func (s *DhcpConfiguration) SetKey(v string) *DhcpConfiguration { + s.Key = &v + return s +} + +// SetValues sets the Values field's value. +func (s *DhcpConfiguration) SetValues(v []*AttributeValue) *DhcpConfiguration { + s.Values = v + return s +} + +// Describes a set of DHCP options. +type DhcpOptions struct { + _ struct{} `type:"structure"` + + // One or more DHCP options in the set. + DhcpConfigurations []*DhcpConfiguration `locationName:"dhcpConfigurationSet" locationNameList:"item" type:"list"` + + // The ID of the set of DHCP options. + DhcpOptionsId *string `locationName:"dhcpOptionsId" type:"string"` + + // The ID of the AWS account that owns the DHCP options set. + OwnerId *string `locationName:"ownerId" type:"string"` + + // Any tags assigned to the DHCP options set. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DhcpOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DhcpOptions) GoString() string { + return s.String() +} + +// SetDhcpConfigurations sets the DhcpConfigurations field's value. +func (s *DhcpOptions) SetDhcpConfigurations(v []*DhcpConfiguration) *DhcpOptions { + s.DhcpConfigurations = v + return s +} + +// SetDhcpOptionsId sets the DhcpOptionsId field's value. +func (s *DhcpOptions) SetDhcpOptionsId(v string) *DhcpOptions { + s.DhcpOptionsId = &v + return s +} + +// SetOwnerId sets the OwnerId field's value. +func (s *DhcpOptions) SetOwnerId(v string) *DhcpOptions { + s.OwnerId = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *DhcpOptions) SetTags(v []*Tag) *DhcpOptions { + s.Tags = v + return s +} + +// Describes an Active Directory. +type DirectoryServiceAuthentication struct { + _ struct{} `type:"structure"` + + // The ID of the Active Directory used for authentication. + DirectoryId *string `locationName:"directoryId" type:"string"` +} + +// String returns the string representation +func (s DirectoryServiceAuthentication) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DirectoryServiceAuthentication) GoString() string { + return s.String() +} + +// SetDirectoryId sets the DirectoryId field's value. +func (s *DirectoryServiceAuthentication) SetDirectoryId(v string) *DirectoryServiceAuthentication { + s.DirectoryId = &v + return s +} + +// Describes the Active Directory to be used for client authentication. +type DirectoryServiceAuthenticationRequest struct { + _ struct{} `type:"structure"` + + // The ID of the Active Directory to be used for authentication. + DirectoryId *string `type:"string"` +} + +// String returns the string representation +func (s DirectoryServiceAuthenticationRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DirectoryServiceAuthenticationRequest) GoString() string { + return s.String() +} + +// SetDirectoryId sets the DirectoryId field's value. +func (s *DirectoryServiceAuthenticationRequest) SetDirectoryId(v string) *DirectoryServiceAuthenticationRequest { + s.DirectoryId = &v + return s +} + +type DisableEbsEncryptionByDefaultInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s DisableEbsEncryptionByDefaultInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisableEbsEncryptionByDefaultInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *DisableEbsEncryptionByDefaultInput) SetDryRun(v bool) *DisableEbsEncryptionByDefaultInput { + s.DryRun = &v + return s +} + +type DisableEbsEncryptionByDefaultOutput struct { + _ struct{} `type:"structure"` + + // The updated status of encryption by default. + EbsEncryptionByDefault *bool `locationName:"ebsEncryptionByDefault" type:"boolean"` +} + +// String returns the string representation +func (s DisableEbsEncryptionByDefaultOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisableEbsEncryptionByDefaultOutput) GoString() string { + return s.String() +} + +// SetEbsEncryptionByDefault sets the EbsEncryptionByDefault field's value. +func (s *DisableEbsEncryptionByDefaultOutput) SetEbsEncryptionByDefault(v bool) *DisableEbsEncryptionByDefaultOutput { + s.EbsEncryptionByDefault = &v + return s +} + +type DisableTransitGatewayRouteTablePropagationInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the attachment. + // + // TransitGatewayAttachmentId is a required field + TransitGatewayAttachmentId *string `type:"string" required:"true"` + + // The ID of the propagation route table. + // + // TransitGatewayRouteTableId is a required field + TransitGatewayRouteTableId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DisableTransitGatewayRouteTablePropagationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisableTransitGatewayRouteTablePropagationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DisableTransitGatewayRouteTablePropagationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DisableTransitGatewayRouteTablePropagationInput"} + if s.TransitGatewayAttachmentId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayAttachmentId")) + } + if s.TransitGatewayRouteTableId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayRouteTableId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DisableTransitGatewayRouteTablePropagationInput) SetDryRun(v bool) *DisableTransitGatewayRouteTablePropagationInput { + s.DryRun = &v + return s +} + +// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value. +func (s *DisableTransitGatewayRouteTablePropagationInput) SetTransitGatewayAttachmentId(v string) *DisableTransitGatewayRouteTablePropagationInput { + s.TransitGatewayAttachmentId = &v + return s +} + +// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value. +func (s *DisableTransitGatewayRouteTablePropagationInput) SetTransitGatewayRouteTableId(v string) *DisableTransitGatewayRouteTablePropagationInput { + s.TransitGatewayRouteTableId = &v + return s +} + +type DisableTransitGatewayRouteTablePropagationOutput struct { + _ struct{} `type:"structure"` + + // Information about route propagation. + Propagation *TransitGatewayPropagation `locationName:"propagation" type:"structure"` +} + +// String returns the string representation +func (s DisableTransitGatewayRouteTablePropagationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisableTransitGatewayRouteTablePropagationOutput) GoString() string { + return s.String() +} + +// SetPropagation sets the Propagation field's value. +func (s *DisableTransitGatewayRouteTablePropagationOutput) SetPropagation(v *TransitGatewayPropagation) *DisableTransitGatewayRouteTablePropagationOutput { + s.Propagation = v + return s +} + +// Contains the parameters for DisableVgwRoutePropagation. +type DisableVgwRoutePropagationInput struct { + _ struct{} `type:"structure"` + + // The ID of the virtual private gateway. + // + // GatewayId is a required field + GatewayId *string `type:"string" required:"true"` + + // The ID of the route table. + // + // RouteTableId is a required field + RouteTableId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DisableVgwRoutePropagationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisableVgwRoutePropagationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DisableVgwRoutePropagationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DisableVgwRoutePropagationInput"} + if s.GatewayId == nil { + invalidParams.Add(request.NewErrParamRequired("GatewayId")) + } + if s.RouteTableId == nil { + invalidParams.Add(request.NewErrParamRequired("RouteTableId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetGatewayId sets the GatewayId field's value. +func (s *DisableVgwRoutePropagationInput) SetGatewayId(v string) *DisableVgwRoutePropagationInput { + s.GatewayId = &v + return s +} + +// SetRouteTableId sets the RouteTableId field's value. +func (s *DisableVgwRoutePropagationInput) SetRouteTableId(v string) *DisableVgwRoutePropagationInput { + s.RouteTableId = &v + return s +} + +type DisableVgwRoutePropagationOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DisableVgwRoutePropagationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisableVgwRoutePropagationOutput) GoString() string { + return s.String() +} + +type DisableVpcClassicLinkDnsSupportInput struct { + _ struct{} `type:"structure"` + + // The ID of the VPC. + VpcId *string `type:"string"` +} + +// String returns the string representation +func (s DisableVpcClassicLinkDnsSupportInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisableVpcClassicLinkDnsSupportInput) GoString() string { + return s.String() +} + +// SetVpcId sets the VpcId field's value. +func (s *DisableVpcClassicLinkDnsSupportInput) SetVpcId(v string) *DisableVpcClassicLinkDnsSupportInput { + s.VpcId = &v + return s +} + +type DisableVpcClassicLinkDnsSupportOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, it returns an error. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s DisableVpcClassicLinkDnsSupportOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisableVpcClassicLinkDnsSupportOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *DisableVpcClassicLinkDnsSupportOutput) SetReturn(v bool) *DisableVpcClassicLinkDnsSupportOutput { + s.Return = &v + return s +} + +type DisableVpcClassicLinkInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the VPC. + // + // VpcId is a required field + VpcId *string `locationName:"vpcId" type:"string" required:"true"` +} + +// String returns the string representation +func (s DisableVpcClassicLinkInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisableVpcClassicLinkInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DisableVpcClassicLinkInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DisableVpcClassicLinkInput"} + if s.VpcId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DisableVpcClassicLinkInput) SetDryRun(v bool) *DisableVpcClassicLinkInput { + s.DryRun = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *DisableVpcClassicLinkInput) SetVpcId(v string) *DisableVpcClassicLinkInput { + s.VpcId = &v + return s +} + +type DisableVpcClassicLinkOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, it returns an error. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s DisableVpcClassicLinkOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisableVpcClassicLinkOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *DisableVpcClassicLinkOutput) SetReturn(v bool) *DisableVpcClassicLinkOutput { + s.Return = &v + return s +} + +type DisassociateAddressInput struct { + _ struct{} `type:"structure"` + + // [EC2-VPC] The association ID. Required for EC2-VPC. + AssociationId *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // [EC2-Classic] The Elastic IP address. Required for EC2-Classic. + PublicIp *string `type:"string"` +} + +// String returns the string representation +func (s DisassociateAddressInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisassociateAddressInput) GoString() string { + return s.String() +} + +// SetAssociationId sets the AssociationId field's value. +func (s *DisassociateAddressInput) SetAssociationId(v string) *DisassociateAddressInput { + s.AssociationId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DisassociateAddressInput) SetDryRun(v bool) *DisassociateAddressInput { + s.DryRun = &v + return s +} + +// SetPublicIp sets the PublicIp field's value. +func (s *DisassociateAddressInput) SetPublicIp(v string) *DisassociateAddressInput { + s.PublicIp = &v + return s +} + +type DisassociateAddressOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DisassociateAddressOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisassociateAddressOutput) GoString() string { + return s.String() +} + +type DisassociateClientVpnTargetNetworkInput struct { + _ struct{} `type:"structure"` + + // The ID of the target network association. + // + // AssociationId is a required field + AssociationId *string `type:"string" required:"true"` + + // The ID of the Client VPN endpoint from which to disassociate the target network. + // + // ClientVpnEndpointId is a required field + ClientVpnEndpointId *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s DisassociateClientVpnTargetNetworkInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisassociateClientVpnTargetNetworkInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DisassociateClientVpnTargetNetworkInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DisassociateClientVpnTargetNetworkInput"} + if s.AssociationId == nil { + invalidParams.Add(request.NewErrParamRequired("AssociationId")) + } + if s.ClientVpnEndpointId == nil { + invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAssociationId sets the AssociationId field's value. +func (s *DisassociateClientVpnTargetNetworkInput) SetAssociationId(v string) *DisassociateClientVpnTargetNetworkInput { + s.AssociationId = &v + return s +} + +// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value. +func (s *DisassociateClientVpnTargetNetworkInput) SetClientVpnEndpointId(v string) *DisassociateClientVpnTargetNetworkInput { + s.ClientVpnEndpointId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DisassociateClientVpnTargetNetworkInput) SetDryRun(v bool) *DisassociateClientVpnTargetNetworkInput { + s.DryRun = &v + return s +} + +type DisassociateClientVpnTargetNetworkOutput struct { + _ struct{} `type:"structure"` + + // The ID of the target network association. + AssociationId *string `locationName:"associationId" type:"string"` + + // The current state of the target network association. + Status *AssociationStatus `locationName:"status" type:"structure"` +} + +// String returns the string representation +func (s DisassociateClientVpnTargetNetworkOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisassociateClientVpnTargetNetworkOutput) GoString() string { + return s.String() +} + +// SetAssociationId sets the AssociationId field's value. +func (s *DisassociateClientVpnTargetNetworkOutput) SetAssociationId(v string) *DisassociateClientVpnTargetNetworkOutput { + s.AssociationId = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *DisassociateClientVpnTargetNetworkOutput) SetStatus(v *AssociationStatus) *DisassociateClientVpnTargetNetworkOutput { + s.Status = v + return s +} + +type DisassociateIamInstanceProfileInput struct { + _ struct{} `type:"structure"` + + // The ID of the IAM instance profile association. + // + // AssociationId is a required field + AssociationId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DisassociateIamInstanceProfileInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisassociateIamInstanceProfileInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DisassociateIamInstanceProfileInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DisassociateIamInstanceProfileInput"} + if s.AssociationId == nil { + invalidParams.Add(request.NewErrParamRequired("AssociationId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAssociationId sets the AssociationId field's value. +func (s *DisassociateIamInstanceProfileInput) SetAssociationId(v string) *DisassociateIamInstanceProfileInput { + s.AssociationId = &v + return s +} + +type DisassociateIamInstanceProfileOutput struct { + _ struct{} `type:"structure"` + + // Information about the IAM instance profile association. + IamInstanceProfileAssociation *IamInstanceProfileAssociation `locationName:"iamInstanceProfileAssociation" type:"structure"` +} + +// String returns the string representation +func (s DisassociateIamInstanceProfileOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisassociateIamInstanceProfileOutput) GoString() string { + return s.String() +} + +// SetIamInstanceProfileAssociation sets the IamInstanceProfileAssociation field's value. +func (s *DisassociateIamInstanceProfileOutput) SetIamInstanceProfileAssociation(v *IamInstanceProfileAssociation) *DisassociateIamInstanceProfileOutput { + s.IamInstanceProfileAssociation = v + return s +} + +type DisassociateRouteTableInput struct { + _ struct{} `type:"structure"` + + // The association ID representing the current association between the route + // table and subnet. + // + // AssociationId is a required field + AssociationId *string `locationName:"associationId" type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` +} + +// String returns the string representation +func (s DisassociateRouteTableInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisassociateRouteTableInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DisassociateRouteTableInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DisassociateRouteTableInput"} + if s.AssociationId == nil { + invalidParams.Add(request.NewErrParamRequired("AssociationId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAssociationId sets the AssociationId field's value. +func (s *DisassociateRouteTableInput) SetAssociationId(v string) *DisassociateRouteTableInput { + s.AssociationId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DisassociateRouteTableInput) SetDryRun(v bool) *DisassociateRouteTableInput { + s.DryRun = &v + return s +} + +type DisassociateRouteTableOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DisassociateRouteTableOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisassociateRouteTableOutput) GoString() string { + return s.String() +} + +type DisassociateSubnetCidrBlockInput struct { + _ struct{} `type:"structure"` + + // The association ID for the CIDR block. + // + // AssociationId is a required field + AssociationId *string `locationName:"associationId" type:"string" required:"true"` +} + +// String returns the string representation +func (s DisassociateSubnetCidrBlockInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisassociateSubnetCidrBlockInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DisassociateSubnetCidrBlockInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DisassociateSubnetCidrBlockInput"} + if s.AssociationId == nil { + invalidParams.Add(request.NewErrParamRequired("AssociationId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAssociationId sets the AssociationId field's value. +func (s *DisassociateSubnetCidrBlockInput) SetAssociationId(v string) *DisassociateSubnetCidrBlockInput { + s.AssociationId = &v + return s +} + +type DisassociateSubnetCidrBlockOutput struct { + _ struct{} `type:"structure"` + + // Information about the IPv6 CIDR block association. + Ipv6CidrBlockAssociation *SubnetIpv6CidrBlockAssociation `locationName:"ipv6CidrBlockAssociation" type:"structure"` + + // The ID of the subnet. + SubnetId *string `locationName:"subnetId" type:"string"` +} + +// String returns the string representation +func (s DisassociateSubnetCidrBlockOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisassociateSubnetCidrBlockOutput) GoString() string { + return s.String() +} + +// SetIpv6CidrBlockAssociation sets the Ipv6CidrBlockAssociation field's value. +func (s *DisassociateSubnetCidrBlockOutput) SetIpv6CidrBlockAssociation(v *SubnetIpv6CidrBlockAssociation) *DisassociateSubnetCidrBlockOutput { + s.Ipv6CidrBlockAssociation = v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *DisassociateSubnetCidrBlockOutput) SetSubnetId(v string) *DisassociateSubnetCidrBlockOutput { + s.SubnetId = &v + return s +} + +type DisassociateTransitGatewayRouteTableInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the attachment. + // + // TransitGatewayAttachmentId is a required field + TransitGatewayAttachmentId *string `type:"string" required:"true"` + + // The ID of the transit gateway route table. + // + // TransitGatewayRouteTableId is a required field + TransitGatewayRouteTableId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DisassociateTransitGatewayRouteTableInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisassociateTransitGatewayRouteTableInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DisassociateTransitGatewayRouteTableInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DisassociateTransitGatewayRouteTableInput"} + if s.TransitGatewayAttachmentId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayAttachmentId")) + } + if s.TransitGatewayRouteTableId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayRouteTableId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DisassociateTransitGatewayRouteTableInput) SetDryRun(v bool) *DisassociateTransitGatewayRouteTableInput { + s.DryRun = &v + return s +} + +// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value. +func (s *DisassociateTransitGatewayRouteTableInput) SetTransitGatewayAttachmentId(v string) *DisassociateTransitGatewayRouteTableInput { + s.TransitGatewayAttachmentId = &v + return s +} + +// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value. +func (s *DisassociateTransitGatewayRouteTableInput) SetTransitGatewayRouteTableId(v string) *DisassociateTransitGatewayRouteTableInput { + s.TransitGatewayRouteTableId = &v + return s +} + +type DisassociateTransitGatewayRouteTableOutput struct { + _ struct{} `type:"structure"` + + // Information about the association. + Association *TransitGatewayAssociation `locationName:"association" type:"structure"` +} + +// String returns the string representation +func (s DisassociateTransitGatewayRouteTableOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisassociateTransitGatewayRouteTableOutput) GoString() string { + return s.String() +} + +// SetAssociation sets the Association field's value. +func (s *DisassociateTransitGatewayRouteTableOutput) SetAssociation(v *TransitGatewayAssociation) *DisassociateTransitGatewayRouteTableOutput { + s.Association = v + return s +} + +type DisassociateVpcCidrBlockInput struct { + _ struct{} `type:"structure"` + + // The association ID for the CIDR block. + // + // AssociationId is a required field + AssociationId *string `locationName:"associationId" type:"string" required:"true"` +} + +// String returns the string representation +func (s DisassociateVpcCidrBlockInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisassociateVpcCidrBlockInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DisassociateVpcCidrBlockInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DisassociateVpcCidrBlockInput"} + if s.AssociationId == nil { + invalidParams.Add(request.NewErrParamRequired("AssociationId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAssociationId sets the AssociationId field's value. +func (s *DisassociateVpcCidrBlockInput) SetAssociationId(v string) *DisassociateVpcCidrBlockInput { + s.AssociationId = &v + return s +} + +type DisassociateVpcCidrBlockOutput struct { + _ struct{} `type:"structure"` + + // Information about the IPv4 CIDR block association. + CidrBlockAssociation *VpcCidrBlockAssociation `locationName:"cidrBlockAssociation" type:"structure"` + + // Information about the IPv6 CIDR block association. + Ipv6CidrBlockAssociation *VpcIpv6CidrBlockAssociation `locationName:"ipv6CidrBlockAssociation" type:"structure"` + + // The ID of the VPC. + VpcId *string `locationName:"vpcId" type:"string"` +} + +// String returns the string representation +func (s DisassociateVpcCidrBlockOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisassociateVpcCidrBlockOutput) GoString() string { + return s.String() +} + +// SetCidrBlockAssociation sets the CidrBlockAssociation field's value. +func (s *DisassociateVpcCidrBlockOutput) SetCidrBlockAssociation(v *VpcCidrBlockAssociation) *DisassociateVpcCidrBlockOutput { + s.CidrBlockAssociation = v + return s +} + +// SetIpv6CidrBlockAssociation sets the Ipv6CidrBlockAssociation field's value. +func (s *DisassociateVpcCidrBlockOutput) SetIpv6CidrBlockAssociation(v *VpcIpv6CidrBlockAssociation) *DisassociateVpcCidrBlockOutput { + s.Ipv6CidrBlockAssociation = v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *DisassociateVpcCidrBlockOutput) SetVpcId(v string) *DisassociateVpcCidrBlockOutput { + s.VpcId = &v + return s +} + +// Describes a disk image. +type DiskImage struct { + _ struct{} `type:"structure"` + + // A description of the disk image. + Description *string `type:"string"` + + // Information about the disk image. + Image *DiskImageDetail `type:"structure"` + + // Information about the volume. + Volume *VolumeDetail `type:"structure"` +} + +// String returns the string representation +func (s DiskImage) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DiskImage) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DiskImage) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DiskImage"} + if s.Image != nil { + if err := s.Image.Validate(); err != nil { + invalidParams.AddNested("Image", err.(request.ErrInvalidParams)) + } + } + if s.Volume != nil { + if err := s.Volume.Validate(); err != nil { + invalidParams.AddNested("Volume", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDescription sets the Description field's value. +func (s *DiskImage) SetDescription(v string) *DiskImage { + s.Description = &v + return s +} + +// SetImage sets the Image field's value. +func (s *DiskImage) SetImage(v *DiskImageDetail) *DiskImage { + s.Image = v + return s +} + +// SetVolume sets the Volume field's value. +func (s *DiskImage) SetVolume(v *VolumeDetail) *DiskImage { + s.Volume = v + return s +} + +// Describes a disk image. +type DiskImageDescription struct { + _ struct{} `type:"structure"` + + // The checksum computed for the disk image. + Checksum *string `locationName:"checksum" type:"string"` + + // The disk image format. + Format *string `locationName:"format" type:"string" enum:"DiskImageFormat"` + + // A presigned URL for the import manifest stored in Amazon S3. For information + // about creating a presigned URL for an Amazon S3 object, read the "Query String + // Request Authentication Alternative" section of the Authenticating REST Requests + // (https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html) + // topic in the Amazon Simple Storage Service Developer Guide. + // + // For information about the import manifest referenced by this API action, + // see VM Import Manifest (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/manifest.html). + ImportManifestUrl *string `locationName:"importManifestUrl" type:"string"` + + // The size of the disk image, in GiB. + Size *int64 `locationName:"size" type:"long"` +} + +// String returns the string representation +func (s DiskImageDescription) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DiskImageDescription) GoString() string { + return s.String() +} + +// SetChecksum sets the Checksum field's value. +func (s *DiskImageDescription) SetChecksum(v string) *DiskImageDescription { + s.Checksum = &v + return s +} + +// SetFormat sets the Format field's value. +func (s *DiskImageDescription) SetFormat(v string) *DiskImageDescription { + s.Format = &v + return s +} + +// SetImportManifestUrl sets the ImportManifestUrl field's value. +func (s *DiskImageDescription) SetImportManifestUrl(v string) *DiskImageDescription { + s.ImportManifestUrl = &v + return s +} + +// SetSize sets the Size field's value. +func (s *DiskImageDescription) SetSize(v int64) *DiskImageDescription { + s.Size = &v + return s +} + +// Describes a disk image. +type DiskImageDetail struct { + _ struct{} `type:"structure"` + + // The size of the disk image, in GiB. + // + // Bytes is a required field + Bytes *int64 `locationName:"bytes" type:"long" required:"true"` + + // The disk image format. + // + // Format is a required field + Format *string `locationName:"format" type:"string" required:"true" enum:"DiskImageFormat"` + + // A presigned URL for the import manifest stored in Amazon S3 and presented + // here as an Amazon S3 presigned URL. For information about creating a presigned + // URL for an Amazon S3 object, read the "Query String Request Authentication + // Alternative" section of the Authenticating REST Requests (https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html) + // topic in the Amazon Simple Storage Service Developer Guide. + // + // For information about the import manifest referenced by this API action, + // see VM Import Manifest (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/manifest.html). + // + // ImportManifestUrl is a required field + ImportManifestUrl *string `locationName:"importManifestUrl" type:"string" required:"true"` +} + +// String returns the string representation +func (s DiskImageDetail) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DiskImageDetail) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DiskImageDetail) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DiskImageDetail"} + if s.Bytes == nil { + invalidParams.Add(request.NewErrParamRequired("Bytes")) + } + if s.Format == nil { + invalidParams.Add(request.NewErrParamRequired("Format")) + } + if s.ImportManifestUrl == nil { + invalidParams.Add(request.NewErrParamRequired("ImportManifestUrl")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBytes sets the Bytes field's value. +func (s *DiskImageDetail) SetBytes(v int64) *DiskImageDetail { + s.Bytes = &v + return s +} + +// SetFormat sets the Format field's value. +func (s *DiskImageDetail) SetFormat(v string) *DiskImageDetail { + s.Format = &v + return s +} + +// SetImportManifestUrl sets the ImportManifestUrl field's value. +func (s *DiskImageDetail) SetImportManifestUrl(v string) *DiskImageDetail { + s.ImportManifestUrl = &v + return s +} + +// Describes a disk image volume. +type DiskImageVolumeDescription struct { + _ struct{} `type:"structure"` + + // The volume identifier. + Id *string `locationName:"id" type:"string"` + + // The size of the volume, in GiB. + Size *int64 `locationName:"size" type:"long"` +} + +// String returns the string representation +func (s DiskImageVolumeDescription) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DiskImageVolumeDescription) GoString() string { + return s.String() +} + +// SetId sets the Id field's value. +func (s *DiskImageVolumeDescription) SetId(v string) *DiskImageVolumeDescription { + s.Id = &v + return s +} + +// SetSize sets the Size field's value. +func (s *DiskImageVolumeDescription) SetSize(v int64) *DiskImageVolumeDescription { + s.Size = &v + return s +} + +// Describes a DNS entry. +type DnsEntry struct { + _ struct{} `type:"structure"` + + // The DNS name. + DnsName *string `locationName:"dnsName" type:"string"` + + // The ID of the private hosted zone. + HostedZoneId *string `locationName:"hostedZoneId" type:"string"` +} + +// String returns the string representation +func (s DnsEntry) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DnsEntry) GoString() string { + return s.String() +} + +// SetDnsName sets the DnsName field's value. +func (s *DnsEntry) SetDnsName(v string) *DnsEntry { + s.DnsName = &v + return s +} + +// SetHostedZoneId sets the HostedZoneId field's value. +func (s *DnsEntry) SetHostedZoneId(v string) *DnsEntry { + s.HostedZoneId = &v + return s +} + +// Information about the DNS server to be used. +type DnsServersOptionsModifyStructure struct { + _ struct{} `type:"structure"` + + // The IPv4 address range, in CIDR notation, of the DNS servers to be used. + // You can specify up to two DNS servers. Ensure that the DNS servers can be + // reached by the clients. The specified values overwrite the existing values. + CustomDnsServers []*string `locationNameList:"item" type:"list"` + + // Indicates whether DNS servers should be used. Specify False to delete the + // existing DNS servers. + Enabled *bool `type:"boolean"` +} + +// String returns the string representation +func (s DnsServersOptionsModifyStructure) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DnsServersOptionsModifyStructure) GoString() string { + return s.String() +} + +// SetCustomDnsServers sets the CustomDnsServers field's value. +func (s *DnsServersOptionsModifyStructure) SetCustomDnsServers(v []*string) *DnsServersOptionsModifyStructure { + s.CustomDnsServers = v + return s +} + +// SetEnabled sets the Enabled field's value. +func (s *DnsServersOptionsModifyStructure) SetEnabled(v bool) *DnsServersOptionsModifyStructure { + s.Enabled = &v + return s +} + +// Describes a block device for an EBS volume. +type EbsBlockDevice struct { + _ struct{} `type:"structure"` + + // Indicates whether the EBS volume is deleted on instance termination. For + // more information, see Preserving Amazon EBS Volumes on Instance Termination + // (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html#preserving-volumes-on-termination) + // in the Amazon Elastic Compute Cloud User Guide. + DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"` + + // Indicates whether the encryption state of an EBS volume is changed while + // being restored from a backing snapshot. The effect of setting the encryption + // state to true depends on the volume origin (new or from a snapshot), starting + // encryption state, ownership, and whether encryption by default is enabled. + // For more information, see Amazon EBS Encryption (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#encryption-parameters) + // in the Amazon Elastic Compute Cloud User Guide. + // + // In no case can you remove encryption from an encrypted volume. + // + // Encrypted volumes can only be attached to instances that support Amazon EBS + // encryption. For more information, see Supported Instance Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#EBSEncryption_supported_instances). + Encrypted *bool `locationName:"encrypted" type:"boolean"` + + // The number of I/O operations per second (IOPS) that the volume supports. + // For io1 volumes, this represents the number of IOPS that are provisioned + // for the volume. For gp2 volumes, this represents the baseline performance + // of the volume and the rate at which the volume accumulates I/O credits for + // bursting. For more information, see Amazon EBS Volume Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) + // in the Amazon Elastic Compute Cloud User Guide. + // + // Constraints: Range is 100-16,000 IOPS for gp2 volumes and 100 to 64,000IOPS + // for io1 volumes in most Regions. Maximum io1 IOPS of 64,000 is guaranteed + // only on Nitro-based instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances). + // Other instance families guarantee performance up to 32,000 IOPS. For more + // information, see Amazon EBS Volume Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) + // in the Amazon Elastic Compute Cloud User Guide. + // + // Condition: This parameter is required for requests to create io1 volumes; + // it is not used in requests to create gp2, st1, sc1, or standard volumes. + Iops *int64 `locationName:"iops" type:"integer"` + + // Identifier (key ID, key alias, ID ARN, or alias ARN) for a customer managed + // CMK under which the EBS volume is encrypted. + // + // This parameter is only supported on BlockDeviceMapping objects called by + // RunInstances (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html), + // RequestSpotFleet (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotFleet.html), + // and RequestSpotInstances (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotInstances.html). + KmsKeyId *string `type:"string"` + + // The ID of the snapshot. + SnapshotId *string `locationName:"snapshotId" type:"string"` + + // The size of the volume, in GiB. + // + // Default: If you're creating the volume from a snapshot and don't specify + // a volume size, the default is the snapshot size. + // + // Constraints: 1-16384 for General Purpose SSD (gp2), 4-16384 for Provisioned + // IOPS SSD (io1), 500-16384 for Throughput Optimized HDD (st1), 500-16384 for + // Cold HDD (sc1), and 1-1024 for Magnetic (standard) volumes. If you specify + // a snapshot, the volume size must be equal to or larger than the snapshot + // size. + VolumeSize *int64 `locationName:"volumeSize" type:"integer"` + + // The volume type. If you set the type to io1, you must also specify the IOPS + // that the volume supports. + // + // Default: gp2 + VolumeType *string `locationName:"volumeType" type:"string" enum:"VolumeType"` +} + +// String returns the string representation +func (s EbsBlockDevice) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EbsBlockDevice) GoString() string { + return s.String() +} + +// SetDeleteOnTermination sets the DeleteOnTermination field's value. +func (s *EbsBlockDevice) SetDeleteOnTermination(v bool) *EbsBlockDevice { + s.DeleteOnTermination = &v + return s +} + +// SetEncrypted sets the Encrypted field's value. +func (s *EbsBlockDevice) SetEncrypted(v bool) *EbsBlockDevice { + s.Encrypted = &v + return s +} + +// SetIops sets the Iops field's value. +func (s *EbsBlockDevice) SetIops(v int64) *EbsBlockDevice { + s.Iops = &v + return s +} + +// SetKmsKeyId sets the KmsKeyId field's value. +func (s *EbsBlockDevice) SetKmsKeyId(v string) *EbsBlockDevice { + s.KmsKeyId = &v + return s +} + +// SetSnapshotId sets the SnapshotId field's value. +func (s *EbsBlockDevice) SetSnapshotId(v string) *EbsBlockDevice { + s.SnapshotId = &v + return s +} + +// SetVolumeSize sets the VolumeSize field's value. +func (s *EbsBlockDevice) SetVolumeSize(v int64) *EbsBlockDevice { + s.VolumeSize = &v + return s +} + +// SetVolumeType sets the VolumeType field's value. +func (s *EbsBlockDevice) SetVolumeType(v string) *EbsBlockDevice { + s.VolumeType = &v + return s +} + +// Describes a parameter used to set up an EBS volume in a block device mapping. +type EbsInstanceBlockDevice struct { + _ struct{} `type:"structure"` + + // The time stamp when the attachment initiated. + AttachTime *time.Time `locationName:"attachTime" type:"timestamp"` + + // Indicates whether the volume is deleted on instance termination. + DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"` + + // The attachment state. + Status *string `locationName:"status" type:"string" enum:"AttachmentStatus"` + + // The ID of the EBS volume. + VolumeId *string `locationName:"volumeId" type:"string"` +} + +// String returns the string representation +func (s EbsInstanceBlockDevice) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EbsInstanceBlockDevice) GoString() string { + return s.String() +} + +// SetAttachTime sets the AttachTime field's value. +func (s *EbsInstanceBlockDevice) SetAttachTime(v time.Time) *EbsInstanceBlockDevice { + s.AttachTime = &v + return s +} + +// SetDeleteOnTermination sets the DeleteOnTermination field's value. +func (s *EbsInstanceBlockDevice) SetDeleteOnTermination(v bool) *EbsInstanceBlockDevice { + s.DeleteOnTermination = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *EbsInstanceBlockDevice) SetStatus(v string) *EbsInstanceBlockDevice { + s.Status = &v + return s +} + +// SetVolumeId sets the VolumeId field's value. +func (s *EbsInstanceBlockDevice) SetVolumeId(v string) *EbsInstanceBlockDevice { + s.VolumeId = &v + return s +} + +// Describes information used to set up an EBS volume specified in a block device +// mapping. +type EbsInstanceBlockDeviceSpecification struct { + _ struct{} `type:"structure"` + + // Indicates whether the volume is deleted on instance termination. + DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"` + + // The ID of the EBS volume. + VolumeId *string `locationName:"volumeId" type:"string"` +} + +// String returns the string representation +func (s EbsInstanceBlockDeviceSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EbsInstanceBlockDeviceSpecification) GoString() string { + return s.String() +} + +// SetDeleteOnTermination sets the DeleteOnTermination field's value. +func (s *EbsInstanceBlockDeviceSpecification) SetDeleteOnTermination(v bool) *EbsInstanceBlockDeviceSpecification { + s.DeleteOnTermination = &v + return s +} + +// SetVolumeId sets the VolumeId field's value. +func (s *EbsInstanceBlockDeviceSpecification) SetVolumeId(v string) *EbsInstanceBlockDeviceSpecification { + s.VolumeId = &v + return s +} + +// Describes an egress-only internet gateway. +type EgressOnlyInternetGateway struct { + _ struct{} `type:"structure"` + + // Information about the attachment of the egress-only internet gateway. + Attachments []*InternetGatewayAttachment `locationName:"attachmentSet" locationNameList:"item" type:"list"` + + // The ID of the egress-only internet gateway. + EgressOnlyInternetGatewayId *string `locationName:"egressOnlyInternetGatewayId" type:"string"` +} + +// String returns the string representation +func (s EgressOnlyInternetGateway) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EgressOnlyInternetGateway) GoString() string { + return s.String() +} + +// SetAttachments sets the Attachments field's value. +func (s *EgressOnlyInternetGateway) SetAttachments(v []*InternetGatewayAttachment) *EgressOnlyInternetGateway { + s.Attachments = v + return s +} + +// SetEgressOnlyInternetGatewayId sets the EgressOnlyInternetGatewayId field's value. +func (s *EgressOnlyInternetGateway) SetEgressOnlyInternetGatewayId(v string) *EgressOnlyInternetGateway { + s.EgressOnlyInternetGatewayId = &v + return s +} + +// Describes the association between an instance and an Elastic Graphics accelerator. +type ElasticGpuAssociation struct { + _ struct{} `type:"structure"` + + // The ID of the association. + ElasticGpuAssociationId *string `locationName:"elasticGpuAssociationId" type:"string"` + + // The state of the association between the instance and the Elastic Graphics + // accelerator. + ElasticGpuAssociationState *string `locationName:"elasticGpuAssociationState" type:"string"` + + // The time the Elastic Graphics accelerator was associated with the instance. + ElasticGpuAssociationTime *string `locationName:"elasticGpuAssociationTime" type:"string"` + + // The ID of the Elastic Graphics accelerator. + ElasticGpuId *string `locationName:"elasticGpuId" type:"string"` +} + +// String returns the string representation +func (s ElasticGpuAssociation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ElasticGpuAssociation) GoString() string { + return s.String() +} + +// SetElasticGpuAssociationId sets the ElasticGpuAssociationId field's value. +func (s *ElasticGpuAssociation) SetElasticGpuAssociationId(v string) *ElasticGpuAssociation { + s.ElasticGpuAssociationId = &v + return s +} + +// SetElasticGpuAssociationState sets the ElasticGpuAssociationState field's value. +func (s *ElasticGpuAssociation) SetElasticGpuAssociationState(v string) *ElasticGpuAssociation { + s.ElasticGpuAssociationState = &v + return s +} + +// SetElasticGpuAssociationTime sets the ElasticGpuAssociationTime field's value. +func (s *ElasticGpuAssociation) SetElasticGpuAssociationTime(v string) *ElasticGpuAssociation { + s.ElasticGpuAssociationTime = &v + return s +} + +// SetElasticGpuId sets the ElasticGpuId field's value. +func (s *ElasticGpuAssociation) SetElasticGpuId(v string) *ElasticGpuAssociation { + s.ElasticGpuId = &v + return s +} + +// Describes the status of an Elastic Graphics accelerator. +type ElasticGpuHealth struct { + _ struct{} `type:"structure"` + + // The health status. + Status *string `locationName:"status" type:"string" enum:"ElasticGpuStatus"` +} + +// String returns the string representation +func (s ElasticGpuHealth) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ElasticGpuHealth) GoString() string { + return s.String() +} + +// SetStatus sets the Status field's value. +func (s *ElasticGpuHealth) SetStatus(v string) *ElasticGpuHealth { + s.Status = &v + return s +} + +// A specification for an Elastic Graphics accelerator. +type ElasticGpuSpecification struct { + _ struct{} `type:"structure"` + + // The type of Elastic Graphics accelerator. + // + // Type is a required field + Type *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s ElasticGpuSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ElasticGpuSpecification) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ElasticGpuSpecification) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ElasticGpuSpecification"} + if s.Type == nil { + invalidParams.Add(request.NewErrParamRequired("Type")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetType sets the Type field's value. +func (s *ElasticGpuSpecification) SetType(v string) *ElasticGpuSpecification { + s.Type = &v + return s +} + +// Describes an elastic GPU. +type ElasticGpuSpecificationResponse struct { + _ struct{} `type:"structure"` + + // The elastic GPU type. + Type *string `locationName:"type" type:"string"` +} + +// String returns the string representation +func (s ElasticGpuSpecificationResponse) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ElasticGpuSpecificationResponse) GoString() string { + return s.String() +} + +// SetType sets the Type field's value. +func (s *ElasticGpuSpecificationResponse) SetType(v string) *ElasticGpuSpecificationResponse { + s.Type = &v + return s +} + +// Describes an Elastic Graphics accelerator. +type ElasticGpus struct { + _ struct{} `type:"structure"` + + // The Availability Zone in the which the Elastic Graphics accelerator resides. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // The status of the Elastic Graphics accelerator. + ElasticGpuHealth *ElasticGpuHealth `locationName:"elasticGpuHealth" type:"structure"` + + // The ID of the Elastic Graphics accelerator. + ElasticGpuId *string `locationName:"elasticGpuId" type:"string"` + + // The state of the Elastic Graphics accelerator. + ElasticGpuState *string `locationName:"elasticGpuState" type:"string" enum:"ElasticGpuState"` + + // The type of Elastic Graphics accelerator. + ElasticGpuType *string `locationName:"elasticGpuType" type:"string"` + + // The ID of the instance to which the Elastic Graphics accelerator is attached. + InstanceId *string `locationName:"instanceId" type:"string"` +} + +// String returns the string representation +func (s ElasticGpus) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ElasticGpus) GoString() string { + return s.String() +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *ElasticGpus) SetAvailabilityZone(v string) *ElasticGpus { + s.AvailabilityZone = &v + return s +} + +// SetElasticGpuHealth sets the ElasticGpuHealth field's value. +func (s *ElasticGpus) SetElasticGpuHealth(v *ElasticGpuHealth) *ElasticGpus { + s.ElasticGpuHealth = v + return s +} + +// SetElasticGpuId sets the ElasticGpuId field's value. +func (s *ElasticGpus) SetElasticGpuId(v string) *ElasticGpus { + s.ElasticGpuId = &v + return s +} + +// SetElasticGpuState sets the ElasticGpuState field's value. +func (s *ElasticGpus) SetElasticGpuState(v string) *ElasticGpus { + s.ElasticGpuState = &v + return s +} + +// SetElasticGpuType sets the ElasticGpuType field's value. +func (s *ElasticGpus) SetElasticGpuType(v string) *ElasticGpus { + s.ElasticGpuType = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *ElasticGpus) SetInstanceId(v string) *ElasticGpus { + s.InstanceId = &v + return s +} + +// Describes an elastic inference accelerator. +type ElasticInferenceAccelerator struct { + _ struct{} `type:"structure"` + + // The type of elastic inference accelerator. The possible values are eia1.small, + // eia1.medium, and eia1.large. + // + // Type is a required field + Type *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s ElasticInferenceAccelerator) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ElasticInferenceAccelerator) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ElasticInferenceAccelerator) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ElasticInferenceAccelerator"} + if s.Type == nil { + invalidParams.Add(request.NewErrParamRequired("Type")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetType sets the Type field's value. +func (s *ElasticInferenceAccelerator) SetType(v string) *ElasticInferenceAccelerator { + s.Type = &v + return s +} + +// Describes the association between an instance and an elastic inference accelerator. +type ElasticInferenceAcceleratorAssociation struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the elastic inference accelerator. + ElasticInferenceAcceleratorArn *string `locationName:"elasticInferenceAcceleratorArn" type:"string"` + + // The ID of the association. + ElasticInferenceAcceleratorAssociationId *string `locationName:"elasticInferenceAcceleratorAssociationId" type:"string"` + + // The state of the elastic inference accelerator. + ElasticInferenceAcceleratorAssociationState *string `locationName:"elasticInferenceAcceleratorAssociationState" type:"string"` + + // The time at which the elastic inference accelerator is associated with an + // instance. + ElasticInferenceAcceleratorAssociationTime *time.Time `locationName:"elasticInferenceAcceleratorAssociationTime" type:"timestamp"` +} + +// String returns the string representation +func (s ElasticInferenceAcceleratorAssociation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ElasticInferenceAcceleratorAssociation) GoString() string { + return s.String() +} + +// SetElasticInferenceAcceleratorArn sets the ElasticInferenceAcceleratorArn field's value. +func (s *ElasticInferenceAcceleratorAssociation) SetElasticInferenceAcceleratorArn(v string) *ElasticInferenceAcceleratorAssociation { + s.ElasticInferenceAcceleratorArn = &v + return s +} + +// SetElasticInferenceAcceleratorAssociationId sets the ElasticInferenceAcceleratorAssociationId field's value. +func (s *ElasticInferenceAcceleratorAssociation) SetElasticInferenceAcceleratorAssociationId(v string) *ElasticInferenceAcceleratorAssociation { + s.ElasticInferenceAcceleratorAssociationId = &v + return s +} + +// SetElasticInferenceAcceleratorAssociationState sets the ElasticInferenceAcceleratorAssociationState field's value. +func (s *ElasticInferenceAcceleratorAssociation) SetElasticInferenceAcceleratorAssociationState(v string) *ElasticInferenceAcceleratorAssociation { + s.ElasticInferenceAcceleratorAssociationState = &v + return s +} + +// SetElasticInferenceAcceleratorAssociationTime sets the ElasticInferenceAcceleratorAssociationTime field's value. +func (s *ElasticInferenceAcceleratorAssociation) SetElasticInferenceAcceleratorAssociationTime(v time.Time) *ElasticInferenceAcceleratorAssociation { + s.ElasticInferenceAcceleratorAssociationTime = &v + return s +} + +type EnableEbsEncryptionByDefaultInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s EnableEbsEncryptionByDefaultInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EnableEbsEncryptionByDefaultInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *EnableEbsEncryptionByDefaultInput) SetDryRun(v bool) *EnableEbsEncryptionByDefaultInput { + s.DryRun = &v + return s +} + +type EnableEbsEncryptionByDefaultOutput struct { + _ struct{} `type:"structure"` + + // The updated status of encryption by default. + EbsEncryptionByDefault *bool `locationName:"ebsEncryptionByDefault" type:"boolean"` +} + +// String returns the string representation +func (s EnableEbsEncryptionByDefaultOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EnableEbsEncryptionByDefaultOutput) GoString() string { + return s.String() +} + +// SetEbsEncryptionByDefault sets the EbsEncryptionByDefault field's value. +func (s *EnableEbsEncryptionByDefaultOutput) SetEbsEncryptionByDefault(v bool) *EnableEbsEncryptionByDefaultOutput { + s.EbsEncryptionByDefault = &v + return s +} + +type EnableTransitGatewayRouteTablePropagationInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the attachment. + // + // TransitGatewayAttachmentId is a required field + TransitGatewayAttachmentId *string `type:"string" required:"true"` + + // The ID of the propagation route table. + // + // TransitGatewayRouteTableId is a required field + TransitGatewayRouteTableId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s EnableTransitGatewayRouteTablePropagationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EnableTransitGatewayRouteTablePropagationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *EnableTransitGatewayRouteTablePropagationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "EnableTransitGatewayRouteTablePropagationInput"} + if s.TransitGatewayAttachmentId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayAttachmentId")) + } + if s.TransitGatewayRouteTableId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayRouteTableId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *EnableTransitGatewayRouteTablePropagationInput) SetDryRun(v bool) *EnableTransitGatewayRouteTablePropagationInput { + s.DryRun = &v + return s +} + +// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value. +func (s *EnableTransitGatewayRouteTablePropagationInput) SetTransitGatewayAttachmentId(v string) *EnableTransitGatewayRouteTablePropagationInput { + s.TransitGatewayAttachmentId = &v + return s +} + +// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value. +func (s *EnableTransitGatewayRouteTablePropagationInput) SetTransitGatewayRouteTableId(v string) *EnableTransitGatewayRouteTablePropagationInput { + s.TransitGatewayRouteTableId = &v + return s +} + +type EnableTransitGatewayRouteTablePropagationOutput struct { + _ struct{} `type:"structure"` + + // Information about route propagation. + Propagation *TransitGatewayPropagation `locationName:"propagation" type:"structure"` +} + +// String returns the string representation +func (s EnableTransitGatewayRouteTablePropagationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EnableTransitGatewayRouteTablePropagationOutput) GoString() string { + return s.String() +} + +// SetPropagation sets the Propagation field's value. +func (s *EnableTransitGatewayRouteTablePropagationOutput) SetPropagation(v *TransitGatewayPropagation) *EnableTransitGatewayRouteTablePropagationOutput { + s.Propagation = v + return s +} + +// Contains the parameters for EnableVgwRoutePropagation. +type EnableVgwRoutePropagationInput struct { + _ struct{} `type:"structure"` + + // The ID of the virtual private gateway that is attached to a VPC. The virtual + // private gateway must be attached to the same VPC that the routing tables + // are associated with. + // + // GatewayId is a required field + GatewayId *string `type:"string" required:"true"` + + // The ID of the route table. The routing table must be associated with the + // same VPC that the virtual private gateway is attached to. + // + // RouteTableId is a required field + RouteTableId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s EnableVgwRoutePropagationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EnableVgwRoutePropagationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *EnableVgwRoutePropagationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "EnableVgwRoutePropagationInput"} + if s.GatewayId == nil { + invalidParams.Add(request.NewErrParamRequired("GatewayId")) + } + if s.RouteTableId == nil { + invalidParams.Add(request.NewErrParamRequired("RouteTableId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetGatewayId sets the GatewayId field's value. +func (s *EnableVgwRoutePropagationInput) SetGatewayId(v string) *EnableVgwRoutePropagationInput { + s.GatewayId = &v + return s +} + +// SetRouteTableId sets the RouteTableId field's value. +func (s *EnableVgwRoutePropagationInput) SetRouteTableId(v string) *EnableVgwRoutePropagationInput { + s.RouteTableId = &v + return s +} + +type EnableVgwRoutePropagationOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s EnableVgwRoutePropagationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EnableVgwRoutePropagationOutput) GoString() string { + return s.String() +} + +// Contains the parameters for EnableVolumeIO. +type EnableVolumeIOInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the volume. + // + // VolumeId is a required field + VolumeId *string `locationName:"volumeId" type:"string" required:"true"` +} + +// String returns the string representation +func (s EnableVolumeIOInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EnableVolumeIOInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *EnableVolumeIOInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "EnableVolumeIOInput"} + if s.VolumeId == nil { + invalidParams.Add(request.NewErrParamRequired("VolumeId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *EnableVolumeIOInput) SetDryRun(v bool) *EnableVolumeIOInput { + s.DryRun = &v + return s +} + +// SetVolumeId sets the VolumeId field's value. +func (s *EnableVolumeIOInput) SetVolumeId(v string) *EnableVolumeIOInput { + s.VolumeId = &v + return s +} + +type EnableVolumeIOOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s EnableVolumeIOOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EnableVolumeIOOutput) GoString() string { + return s.String() +} + +type EnableVpcClassicLinkDnsSupportInput struct { + _ struct{} `type:"structure"` + + // The ID of the VPC. + VpcId *string `type:"string"` +} + +// String returns the string representation +func (s EnableVpcClassicLinkDnsSupportInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EnableVpcClassicLinkDnsSupportInput) GoString() string { + return s.String() +} + +// SetVpcId sets the VpcId field's value. +func (s *EnableVpcClassicLinkDnsSupportInput) SetVpcId(v string) *EnableVpcClassicLinkDnsSupportInput { + s.VpcId = &v + return s +} + +type EnableVpcClassicLinkDnsSupportOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, it returns an error. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s EnableVpcClassicLinkDnsSupportOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EnableVpcClassicLinkDnsSupportOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *EnableVpcClassicLinkDnsSupportOutput) SetReturn(v bool) *EnableVpcClassicLinkDnsSupportOutput { + s.Return = &v + return s +} + +type EnableVpcClassicLinkInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the VPC. + // + // VpcId is a required field + VpcId *string `locationName:"vpcId" type:"string" required:"true"` +} + +// String returns the string representation +func (s EnableVpcClassicLinkInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EnableVpcClassicLinkInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *EnableVpcClassicLinkInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "EnableVpcClassicLinkInput"} + if s.VpcId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *EnableVpcClassicLinkInput) SetDryRun(v bool) *EnableVpcClassicLinkInput { + s.DryRun = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *EnableVpcClassicLinkInput) SetVpcId(v string) *EnableVpcClassicLinkInput { + s.VpcId = &v + return s +} + +type EnableVpcClassicLinkOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, it returns an error. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s EnableVpcClassicLinkOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EnableVpcClassicLinkOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *EnableVpcClassicLinkOutput) SetReturn(v bool) *EnableVpcClassicLinkOutput { + s.Return = &v + return s +} + +// Describes an EC2 Fleet or Spot Fleet event. +type EventInformation struct { + _ struct{} `type:"structure"` + + // The description of the event. + EventDescription *string `locationName:"eventDescription" type:"string"` + + // The event. + // + // The following are the error events: + // + // * iamFleetRoleInvalid - The EC2 Fleet or Spot Fleet did not have the required + // permissions either to launch or terminate an instance. + // + // * spotFleetRequestConfigurationInvalid - The configuration is not valid. + // For more information, see the description of the event. + // + // * spotInstanceCountLimitExceeded - You've reached the limit on the number + // of Spot Instances that you can launch. + // + // The following are the fleetRequestChange events: + // + // * active - The EC2 Fleet or Spot Fleet request has been validated and + // Amazon EC2 is attempting to maintain the target number of running Spot + // Instances. + // + // * cancelled - The EC2 Fleet or Spot Fleet request is canceled and has + // no running Spot Instances. The EC2 Fleet or Spot Fleet will be deleted + // two days after its instances were terminated. + // + // * cancelled_running - The EC2 Fleet or Spot Fleet request is canceled + // and does not launch additional Spot Instances. Existing Spot Instances + // continue to run until they are interrupted or terminated. + // + // * cancelled_terminating - The EC2 Fleet or Spot Fleet request is canceled + // and its Spot Instances are terminating. + // + // * expired - The EC2 Fleet or Spot Fleet request has expired. A subsequent + // event indicates that the instances were terminated, if the request was + // created with TerminateInstancesWithExpiration set. + // + // * modify_in_progress - A request to modify the EC2 Fleet or Spot Fleet + // request was accepted and is in progress. + // + // * modify_successful - The EC2 Fleet or Spot Fleet request was modified. + // + // * price_update - The price for a launch configuration was adjusted because + // it was too high. This change is permanent. + // + // * submitted - The EC2 Fleet or Spot Fleet request is being evaluated and + // Amazon EC2 is preparing to launch the target number of Spot Instances. + // + // The following are the instanceChange events: + // + // * launched - A request was fulfilled and a new instance was launched. + // + // * terminated - An instance was terminated by the user. + // + // The following are the Information events: + // + // * launchSpecTemporarilyBlacklisted - The configuration is not valid and + // several attempts to launch instances have failed. For more information, + // see the description of the event. + // + // * launchSpecUnusable - The price in a launch specification is not valid + // because it is below the Spot price or the Spot price is above the On-Demand + // price. + // + // * fleetProgressHalted - The price in every launch specification is not + // valid. A launch specification might become valid if the Spot price changes. + EventSubType *string `locationName:"eventSubType" type:"string"` + + // The ID of the instance. This information is available only for instanceChange + // events. + InstanceId *string `locationName:"instanceId" type:"string"` +} + +// String returns the string representation +func (s EventInformation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EventInformation) GoString() string { + return s.String() +} + +// SetEventDescription sets the EventDescription field's value. +func (s *EventInformation) SetEventDescription(v string) *EventInformation { + s.EventDescription = &v + return s +} + +// SetEventSubType sets the EventSubType field's value. +func (s *EventInformation) SetEventSubType(v string) *EventInformation { + s.EventSubType = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *EventInformation) SetInstanceId(v string) *EventInformation { + s.InstanceId = &v + return s +} + +type ExportClientVpnClientCertificateRevocationListInput struct { + _ struct{} `type:"structure"` + + // The ID of the Client VPN endpoint. + // + // ClientVpnEndpointId is a required field + ClientVpnEndpointId *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s ExportClientVpnClientCertificateRevocationListInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ExportClientVpnClientCertificateRevocationListInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ExportClientVpnClientCertificateRevocationListInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ExportClientVpnClientCertificateRevocationListInput"} + if s.ClientVpnEndpointId == nil { + invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value. +func (s *ExportClientVpnClientCertificateRevocationListInput) SetClientVpnEndpointId(v string) *ExportClientVpnClientCertificateRevocationListInput { + s.ClientVpnEndpointId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ExportClientVpnClientCertificateRevocationListInput) SetDryRun(v bool) *ExportClientVpnClientCertificateRevocationListInput { + s.DryRun = &v + return s +} + +type ExportClientVpnClientCertificateRevocationListOutput struct { + _ struct{} `type:"structure"` + + // Information about the client certificate revocation list. + CertificateRevocationList *string `locationName:"certificateRevocationList" type:"string"` + + // The current state of the client certificate revocation list. + Status *ClientCertificateRevocationListStatus `locationName:"status" type:"structure"` +} + +// String returns the string representation +func (s ExportClientVpnClientCertificateRevocationListOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ExportClientVpnClientCertificateRevocationListOutput) GoString() string { + return s.String() +} + +// SetCertificateRevocationList sets the CertificateRevocationList field's value. +func (s *ExportClientVpnClientCertificateRevocationListOutput) SetCertificateRevocationList(v string) *ExportClientVpnClientCertificateRevocationListOutput { + s.CertificateRevocationList = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *ExportClientVpnClientCertificateRevocationListOutput) SetStatus(v *ClientCertificateRevocationListStatus) *ExportClientVpnClientCertificateRevocationListOutput { + s.Status = v + return s +} + +type ExportClientVpnClientConfigurationInput struct { + _ struct{} `type:"structure"` + + // The ID of the Client VPN endpoint. + // + // ClientVpnEndpointId is a required field + ClientVpnEndpointId *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s ExportClientVpnClientConfigurationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ExportClientVpnClientConfigurationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ExportClientVpnClientConfigurationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ExportClientVpnClientConfigurationInput"} + if s.ClientVpnEndpointId == nil { + invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value. +func (s *ExportClientVpnClientConfigurationInput) SetClientVpnEndpointId(v string) *ExportClientVpnClientConfigurationInput { + s.ClientVpnEndpointId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ExportClientVpnClientConfigurationInput) SetDryRun(v bool) *ExportClientVpnClientConfigurationInput { + s.DryRun = &v + return s +} + +type ExportClientVpnClientConfigurationOutput struct { + _ struct{} `type:"structure"` + + // The contents of the Client VPN endpoint configuration file. + ClientConfiguration *string `locationName:"clientConfiguration" type:"string"` +} + +// String returns the string representation +func (s ExportClientVpnClientConfigurationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ExportClientVpnClientConfigurationOutput) GoString() string { + return s.String() +} + +// SetClientConfiguration sets the ClientConfiguration field's value. +func (s *ExportClientVpnClientConfigurationOutput) SetClientConfiguration(v string) *ExportClientVpnClientConfigurationOutput { + s.ClientConfiguration = &v + return s +} + +type ExportImageInput struct { + _ struct{} `type:"structure"` + + // Token to enable idempotency for export image requests. + ClientToken *string `type:"string" idempotencyToken:"true"` + + // A description of the image being exported. The maximum length is 255 bytes. + Description *string `type:"string"` + + // The disk image format. + // + // DiskImageFormat is a required field + DiskImageFormat *string `type:"string" required:"true" enum:"DiskImageFormat"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the image. + // + // ImageId is a required field + ImageId *string `type:"string" required:"true"` + + // The name of the role that grants VM Import/Export permission to export images + // to your S3 bucket. If this parameter is not specified, the default role is + // named 'vmimport'. + RoleName *string `type:"string"` + + // Information about the destination S3 bucket. The bucket must exist and grant + // WRITE and READ_ACP permissions to the AWS account vm-import-export@amazon.com. + // + // S3ExportLocation is a required field + S3ExportLocation *ExportTaskS3LocationRequest `type:"structure" required:"true"` +} + +// String returns the string representation +func (s ExportImageInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ExportImageInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ExportImageInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ExportImageInput"} + if s.DiskImageFormat == nil { + invalidParams.Add(request.NewErrParamRequired("DiskImageFormat")) + } + if s.ImageId == nil { + invalidParams.Add(request.NewErrParamRequired("ImageId")) + } + if s.S3ExportLocation == nil { + invalidParams.Add(request.NewErrParamRequired("S3ExportLocation")) + } + if s.S3ExportLocation != nil { + if err := s.S3ExportLocation.Validate(); err != nil { + invalidParams.AddNested("S3ExportLocation", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *ExportImageInput) SetClientToken(v string) *ExportImageInput { + s.ClientToken = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *ExportImageInput) SetDescription(v string) *ExportImageInput { + s.Description = &v + return s +} + +// SetDiskImageFormat sets the DiskImageFormat field's value. +func (s *ExportImageInput) SetDiskImageFormat(v string) *ExportImageInput { + s.DiskImageFormat = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ExportImageInput) SetDryRun(v bool) *ExportImageInput { + s.DryRun = &v + return s +} + +// SetImageId sets the ImageId field's value. +func (s *ExportImageInput) SetImageId(v string) *ExportImageInput { + s.ImageId = &v + return s +} + +// SetRoleName sets the RoleName field's value. +func (s *ExportImageInput) SetRoleName(v string) *ExportImageInput { + s.RoleName = &v + return s +} + +// SetS3ExportLocation sets the S3ExportLocation field's value. +func (s *ExportImageInput) SetS3ExportLocation(v *ExportTaskS3LocationRequest) *ExportImageInput { + s.S3ExportLocation = v + return s +} + +type ExportImageOutput struct { + _ struct{} `type:"structure"` + + // A description of the image being exported. + Description *string `locationName:"description" type:"string"` + + // The disk image format for the exported image. + DiskImageFormat *string `locationName:"diskImageFormat" type:"string" enum:"DiskImageFormat"` + + // The ID of the export image task. + ExportImageTaskId *string `locationName:"exportImageTaskId" type:"string"` + + // The ID of the image. + ImageId *string `locationName:"imageId" type:"string"` + + // The percent complete of the export image task. + Progress *string `locationName:"progress" type:"string"` + + // The name of the role that grants VM Import/Export permission to export images + // to your S3 bucket. + RoleName *string `locationName:"roleName" type:"string"` + + // Information about the destination S3 bucket. + S3ExportLocation *ExportTaskS3Location `locationName:"s3ExportLocation" type:"structure"` + + // The status of the export image task. The possible values are active, completed, + // deleting, and deleted. + Status *string `locationName:"status" type:"string"` + + // The status message for the export image task. + StatusMessage *string `locationName:"statusMessage" type:"string"` +} + +// String returns the string representation +func (s ExportImageOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ExportImageOutput) GoString() string { + return s.String() +} + +// SetDescription sets the Description field's value. +func (s *ExportImageOutput) SetDescription(v string) *ExportImageOutput { + s.Description = &v + return s +} + +// SetDiskImageFormat sets the DiskImageFormat field's value. +func (s *ExportImageOutput) SetDiskImageFormat(v string) *ExportImageOutput { + s.DiskImageFormat = &v + return s +} + +// SetExportImageTaskId sets the ExportImageTaskId field's value. +func (s *ExportImageOutput) SetExportImageTaskId(v string) *ExportImageOutput { + s.ExportImageTaskId = &v + return s +} + +// SetImageId sets the ImageId field's value. +func (s *ExportImageOutput) SetImageId(v string) *ExportImageOutput { + s.ImageId = &v + return s +} + +// SetProgress sets the Progress field's value. +func (s *ExportImageOutput) SetProgress(v string) *ExportImageOutput { + s.Progress = &v + return s +} + +// SetRoleName sets the RoleName field's value. +func (s *ExportImageOutput) SetRoleName(v string) *ExportImageOutput { + s.RoleName = &v + return s +} + +// SetS3ExportLocation sets the S3ExportLocation field's value. +func (s *ExportImageOutput) SetS3ExportLocation(v *ExportTaskS3Location) *ExportImageOutput { + s.S3ExportLocation = v + return s +} + +// SetStatus sets the Status field's value. +func (s *ExportImageOutput) SetStatus(v string) *ExportImageOutput { + s.Status = &v + return s +} + +// SetStatusMessage sets the StatusMessage field's value. +func (s *ExportImageOutput) SetStatusMessage(v string) *ExportImageOutput { + s.StatusMessage = &v + return s +} + +// Describes an export image task. +type ExportImageTask struct { + _ struct{} `type:"structure"` + + // A description of the image being exported. + Description *string `locationName:"description" type:"string"` + + // The ID of the export image task. + ExportImageTaskId *string `locationName:"exportImageTaskId" type:"string"` + + // The ID of the image. + ImageId *string `locationName:"imageId" type:"string"` + + // The percent complete of the export image task. + Progress *string `locationName:"progress" type:"string"` + + // Information about the destination S3 bucket. + S3ExportLocation *ExportTaskS3Location `locationName:"s3ExportLocation" type:"structure"` + + // The status of the export image task. The possible values are active, completed, + // deleting, and deleted. + Status *string `locationName:"status" type:"string"` + + // The status message for the export image task. + StatusMessage *string `locationName:"statusMessage" type:"string"` +} + +// String returns the string representation +func (s ExportImageTask) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ExportImageTask) GoString() string { + return s.String() +} + +// SetDescription sets the Description field's value. +func (s *ExportImageTask) SetDescription(v string) *ExportImageTask { + s.Description = &v + return s +} + +// SetExportImageTaskId sets the ExportImageTaskId field's value. +func (s *ExportImageTask) SetExportImageTaskId(v string) *ExportImageTask { + s.ExportImageTaskId = &v + return s +} + +// SetImageId sets the ImageId field's value. +func (s *ExportImageTask) SetImageId(v string) *ExportImageTask { + s.ImageId = &v + return s +} + +// SetProgress sets the Progress field's value. +func (s *ExportImageTask) SetProgress(v string) *ExportImageTask { + s.Progress = &v + return s +} + +// SetS3ExportLocation sets the S3ExportLocation field's value. +func (s *ExportImageTask) SetS3ExportLocation(v *ExportTaskS3Location) *ExportImageTask { + s.S3ExportLocation = v + return s +} + +// SetStatus sets the Status field's value. +func (s *ExportImageTask) SetStatus(v string) *ExportImageTask { + s.Status = &v + return s +} + +// SetStatusMessage sets the StatusMessage field's value. +func (s *ExportImageTask) SetStatusMessage(v string) *ExportImageTask { + s.StatusMessage = &v + return s +} + +// Describes an instance export task. +type ExportTask struct { + _ struct{} `type:"structure"` + + // A description of the resource being exported. + Description *string `locationName:"description" type:"string"` + + // The ID of the export task. + ExportTaskId *string `locationName:"exportTaskId" type:"string"` + + // Information about the export task. + ExportToS3Task *ExportToS3Task `locationName:"exportToS3" type:"structure"` + + // Information about the instance to export. + InstanceExportDetails *InstanceExportDetails `locationName:"instanceExport" type:"structure"` + + // The state of the export task. + State *string `locationName:"state" type:"string" enum:"ExportTaskState"` + + // The status message related to the export task. + StatusMessage *string `locationName:"statusMessage" type:"string"` +} + +// String returns the string representation +func (s ExportTask) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ExportTask) GoString() string { + return s.String() +} + +// SetDescription sets the Description field's value. +func (s *ExportTask) SetDescription(v string) *ExportTask { + s.Description = &v + return s +} + +// SetExportTaskId sets the ExportTaskId field's value. +func (s *ExportTask) SetExportTaskId(v string) *ExportTask { + s.ExportTaskId = &v + return s +} + +// SetExportToS3Task sets the ExportToS3Task field's value. +func (s *ExportTask) SetExportToS3Task(v *ExportToS3Task) *ExportTask { + s.ExportToS3Task = v + return s +} + +// SetInstanceExportDetails sets the InstanceExportDetails field's value. +func (s *ExportTask) SetInstanceExportDetails(v *InstanceExportDetails) *ExportTask { + s.InstanceExportDetails = v + return s +} + +// SetState sets the State field's value. +func (s *ExportTask) SetState(v string) *ExportTask { + s.State = &v + return s +} + +// SetStatusMessage sets the StatusMessage field's value. +func (s *ExportTask) SetStatusMessage(v string) *ExportTask { + s.StatusMessage = &v + return s +} + +// Describes the destination for an export image task. +type ExportTaskS3Location struct { + _ struct{} `type:"structure"` + + // The destination S3 bucket. + S3Bucket *string `locationName:"s3Bucket" type:"string"` + + // The prefix (logical hierarchy) in the bucket. + S3Prefix *string `locationName:"s3Prefix" type:"string"` +} + +// String returns the string representation +func (s ExportTaskS3Location) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ExportTaskS3Location) GoString() string { + return s.String() +} + +// SetS3Bucket sets the S3Bucket field's value. +func (s *ExportTaskS3Location) SetS3Bucket(v string) *ExportTaskS3Location { + s.S3Bucket = &v + return s +} + +// SetS3Prefix sets the S3Prefix field's value. +func (s *ExportTaskS3Location) SetS3Prefix(v string) *ExportTaskS3Location { + s.S3Prefix = &v + return s +} + +// Describes the destination for an export image task. +type ExportTaskS3LocationRequest struct { + _ struct{} `type:"structure"` + + // The destination S3 bucket. + // + // S3Bucket is a required field + S3Bucket *string `type:"string" required:"true"` + + // The prefix (logical hierarchy) in the bucket. + S3Prefix *string `type:"string"` +} + +// String returns the string representation +func (s ExportTaskS3LocationRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ExportTaskS3LocationRequest) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ExportTaskS3LocationRequest) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ExportTaskS3LocationRequest"} + if s.S3Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("S3Bucket")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetS3Bucket sets the S3Bucket field's value. +func (s *ExportTaskS3LocationRequest) SetS3Bucket(v string) *ExportTaskS3LocationRequest { + s.S3Bucket = &v + return s +} + +// SetS3Prefix sets the S3Prefix field's value. +func (s *ExportTaskS3LocationRequest) SetS3Prefix(v string) *ExportTaskS3LocationRequest { + s.S3Prefix = &v + return s +} + +// Describes the format and location for an instance export task. +type ExportToS3Task struct { + _ struct{} `type:"structure"` + + // The container format used to combine disk images with metadata (such as OVF). + // If absent, only the disk image is exported. + ContainerFormat *string `locationName:"containerFormat" type:"string" enum:"ContainerFormat"` + + // The format for the exported image. + DiskImageFormat *string `locationName:"diskImageFormat" type:"string" enum:"DiskImageFormat"` + + // The S3 bucket for the destination image. The destination bucket must exist + // and grant WRITE and READ_ACP permissions to the AWS account vm-import-export@amazon.com. + S3Bucket *string `locationName:"s3Bucket" type:"string"` + + // The encryption key for your S3 bucket. + S3Key *string `locationName:"s3Key" type:"string"` +} + +// String returns the string representation +func (s ExportToS3Task) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ExportToS3Task) GoString() string { + return s.String() +} + +// SetContainerFormat sets the ContainerFormat field's value. +func (s *ExportToS3Task) SetContainerFormat(v string) *ExportToS3Task { + s.ContainerFormat = &v + return s +} + +// SetDiskImageFormat sets the DiskImageFormat field's value. +func (s *ExportToS3Task) SetDiskImageFormat(v string) *ExportToS3Task { + s.DiskImageFormat = &v + return s +} + +// SetS3Bucket sets the S3Bucket field's value. +func (s *ExportToS3Task) SetS3Bucket(v string) *ExportToS3Task { + s.S3Bucket = &v + return s +} + +// SetS3Key sets the S3Key field's value. +func (s *ExportToS3Task) SetS3Key(v string) *ExportToS3Task { + s.S3Key = &v + return s +} + +// Describes an instance export task. +type ExportToS3TaskSpecification struct { + _ struct{} `type:"structure"` + + // The container format used to combine disk images with metadata (such as OVF). + // If absent, only the disk image is exported. + ContainerFormat *string `locationName:"containerFormat" type:"string" enum:"ContainerFormat"` + + // The format for the exported image. + DiskImageFormat *string `locationName:"diskImageFormat" type:"string" enum:"DiskImageFormat"` + + // The S3 bucket for the destination image. The destination bucket must exist + // and grant WRITE and READ_ACP permissions to the AWS account vm-import-export@amazon.com. + S3Bucket *string `locationName:"s3Bucket" type:"string"` + + // The image is written to a single object in the S3 bucket at the S3 key s3prefix + // + exportTaskId + '.' + diskImageFormat. + S3Prefix *string `locationName:"s3Prefix" type:"string"` +} + +// String returns the string representation +func (s ExportToS3TaskSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ExportToS3TaskSpecification) GoString() string { + return s.String() +} + +// SetContainerFormat sets the ContainerFormat field's value. +func (s *ExportToS3TaskSpecification) SetContainerFormat(v string) *ExportToS3TaskSpecification { + s.ContainerFormat = &v + return s +} + +// SetDiskImageFormat sets the DiskImageFormat field's value. +func (s *ExportToS3TaskSpecification) SetDiskImageFormat(v string) *ExportToS3TaskSpecification { + s.DiskImageFormat = &v + return s +} + +// SetS3Bucket sets the S3Bucket field's value. +func (s *ExportToS3TaskSpecification) SetS3Bucket(v string) *ExportToS3TaskSpecification { + s.S3Bucket = &v + return s +} + +// SetS3Prefix sets the S3Prefix field's value. +func (s *ExportToS3TaskSpecification) SetS3Prefix(v string) *ExportToS3TaskSpecification { + s.S3Prefix = &v + return s +} + +type ExportTransitGatewayRoutesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. The possible values are: + // + // * attachment.transit-gateway-attachment-id - The id of the transit gateway + // attachment. + // + // * attachment.resource-id - The resource id of the transit gateway attachment. + // + // * route-search.exact-match - The exact match of the specified filter. + // + // * route-search.longest-prefix-match - The longest prefix that matches + // the route. + // + // * route-search.subnet-of-match - The routes with a subnet that match the + // specified CIDR filter. + // + // * route-search.supernet-of-match - The routes with a CIDR that encompass + // the CIDR filter. For example, if you have 10.0.1.0/29 and 10.0.1.0/31 + // routes in your route table and you specify supernet-of-match as 10.0.1.0/30, + // then the result returns 10.0.1.0/29. + // + // * state - The state of the attachment (available | deleted | deleting + // | failed | modifying | pendingAcceptance | pending | rollingBack | rejected + // | rejecting). + // + // * transit-gateway-route-destination-cidr-block - The CIDR range. + // + // * type - The type of route (active | blackhole). + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The name of the S3 bucket. + // + // S3Bucket is a required field + S3Bucket *string `type:"string" required:"true"` + + // The ID of the route table. + // + // TransitGatewayRouteTableId is a required field + TransitGatewayRouteTableId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s ExportTransitGatewayRoutesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ExportTransitGatewayRoutesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ExportTransitGatewayRoutesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ExportTransitGatewayRoutesInput"} + if s.S3Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("S3Bucket")) + } + if s.TransitGatewayRouteTableId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayRouteTableId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *ExportTransitGatewayRoutesInput) SetDryRun(v bool) *ExportTransitGatewayRoutesInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *ExportTransitGatewayRoutesInput) SetFilters(v []*Filter) *ExportTransitGatewayRoutesInput { + s.Filters = v + return s +} + +// SetS3Bucket sets the S3Bucket field's value. +func (s *ExportTransitGatewayRoutesInput) SetS3Bucket(v string) *ExportTransitGatewayRoutesInput { + s.S3Bucket = &v + return s +} + +// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value. +func (s *ExportTransitGatewayRoutesInput) SetTransitGatewayRouteTableId(v string) *ExportTransitGatewayRoutesInput { + s.TransitGatewayRouteTableId = &v + return s +} + +type ExportTransitGatewayRoutesOutput struct { + _ struct{} `type:"structure"` + + // The URL of the exported file in Amazon S3. For example, s3://bucket_name/VPCTransitGateway/TransitGatewayRouteTables/file_name. + S3Location *string `locationName:"s3Location" type:"string"` +} + +// String returns the string representation +func (s ExportTransitGatewayRoutesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ExportTransitGatewayRoutesOutput) GoString() string { + return s.String() +} + +// SetS3Location sets the S3Location field's value. +func (s *ExportTransitGatewayRoutesOutput) SetS3Location(v string) *ExportTransitGatewayRoutesOutput { + s.S3Location = &v + return s +} + +// Describes a Reserved Instance whose queued purchase was not deleted. +type FailedQueuedPurchaseDeletion struct { + _ struct{} `type:"structure"` + + // The error. + Error *DeleteQueuedReservedInstancesError `locationName:"error" type:"structure"` + + // The ID of the Reserved Instance. + ReservedInstancesId *string `locationName:"reservedInstancesId" type:"string"` +} + +// String returns the string representation +func (s FailedQueuedPurchaseDeletion) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s FailedQueuedPurchaseDeletion) GoString() string { + return s.String() +} + +// SetError sets the Error field's value. +func (s *FailedQueuedPurchaseDeletion) SetError(v *DeleteQueuedReservedInstancesError) *FailedQueuedPurchaseDeletion { + s.Error = v + return s +} + +// SetReservedInstancesId sets the ReservedInstancesId field's value. +func (s *FailedQueuedPurchaseDeletion) SetReservedInstancesId(v string) *FailedQueuedPurchaseDeletion { + s.ReservedInstancesId = &v + return s +} + +// A filter name and value pair that is used to return a more specific list +// of results from a describe operation. Filters can be used to match a set +// of resources by specific criteria, such as tags, attributes, or IDs. The +// filters supported by a describe operation are documented with the describe +// operation. For example: +// +// * DescribeAvailabilityZones +// +// * DescribeImages +// +// * DescribeInstances +// +// * DescribeKeyPairs +// +// * DescribeSecurityGroups +// +// * DescribeSnapshots +// +// * DescribeSubnets +// +// * DescribeTags +// +// * DescribeVolumes +// +// * DescribeVpcs +type Filter struct { + _ struct{} `type:"structure"` + + // The name of the filter. Filter names are case-sensitive. + Name *string `type:"string"` + + // The filter values. Filter values are case-sensitive. + Values []*string `locationName:"Value" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s Filter) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Filter) GoString() string { + return s.String() +} + +// SetName sets the Name field's value. +func (s *Filter) SetName(v string) *Filter { + s.Name = &v + return s +} + +// SetValues sets the Values field's value. +func (s *Filter) SetValues(v []*string) *Filter { + s.Values = v + return s +} + +// Describes an EC2 Fleet. +type FleetData struct { + _ struct{} `type:"structure"` + + // The progress of the EC2 Fleet. If there is an error, the status is error. + // After all requests are placed, the status is pending_fulfillment. If the + // size of the EC2 Fleet is equal to or greater than its target capacity, the + // status is fulfilled. If the size of the EC2 Fleet is decreased, the status + // is pending_termination while instances are terminating. + ActivityStatus *string `locationName:"activityStatus" type:"string" enum:"FleetActivityStatus"` + + // Unique, case-sensitive identifier you provide to ensure the idempotency of + // the request. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + // + // Constraints: Maximum 64 ASCII characters + ClientToken *string `locationName:"clientToken" type:"string"` + + // The creation date and time of the EC2 Fleet. + CreateTime *time.Time `locationName:"createTime" type:"timestamp"` + + // Information about the instances that could not be launched by the fleet. + // Valid only when Type is set to instant. + Errors []*DescribeFleetError `locationName:"errorSet" locationNameList:"item" type:"list"` + + // Indicates whether running instances should be terminated if the target capacity + // of the EC2 Fleet is decreased below the current size of the EC2 Fleet. + ExcessCapacityTerminationPolicy *string `locationName:"excessCapacityTerminationPolicy" type:"string" enum:"FleetExcessCapacityTerminationPolicy"` + + // The ID of the EC2 Fleet. + FleetId *string `locationName:"fleetId" type:"string"` + + // The state of the EC2 Fleet. + FleetState *string `locationName:"fleetState" type:"string" enum:"FleetStateCode"` + + // The number of units fulfilled by this request compared to the set target + // capacity. + FulfilledCapacity *float64 `locationName:"fulfilledCapacity" type:"double"` + + // The number of units fulfilled by this request compared to the set target + // On-Demand capacity. + FulfilledOnDemandCapacity *float64 `locationName:"fulfilledOnDemandCapacity" type:"double"` + + // Information about the instances that were launched by the fleet. Valid only + // when Type is set to instant. + Instances []*DescribeFleetsInstances `locationName:"fleetInstanceSet" locationNameList:"item" type:"list"` + + // The launch template and overrides. + LaunchTemplateConfigs []*FleetLaunchTemplateConfig `locationName:"launchTemplateConfigs" locationNameList:"item" type:"list"` + + // The allocation strategy of On-Demand Instances in an EC2 Fleet. + OnDemandOptions *OnDemandOptions `locationName:"onDemandOptions" type:"structure"` + + // Indicates whether EC2 Fleet should replace unhealthy instances. + ReplaceUnhealthyInstances *bool `locationName:"replaceUnhealthyInstances" type:"boolean"` + + // The configuration of Spot Instances in an EC2 Fleet. + SpotOptions *SpotOptions `locationName:"spotOptions" type:"structure"` + + // The tags for an EC2 Fleet resource. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The number of units to request. You can choose to set the target capacity + // in terms of instances or a performance characteristic that is important to + // your application workload, such as vCPUs, memory, or I/O. If the request + // type is maintain, you can specify a target capacity of 0 and add capacity + // later. + TargetCapacitySpecification *TargetCapacitySpecification `locationName:"targetCapacitySpecification" type:"structure"` + + // Indicates whether running instances should be terminated when the EC2 Fleet + // expires. + TerminateInstancesWithExpiration *bool `locationName:"terminateInstancesWithExpiration" type:"boolean"` + + // The type of request. Indicates whether the EC2 Fleet only requests the target + // capacity, or also attempts to maintain it. If you request a certain target + // capacity, EC2 Fleet only places the required requests; it does not attempt + // to replenish instances if capacity is diminished, and does not submit requests + // in alternative capacity pools if capacity is unavailable. To maintain a certain + // target capacity, EC2 Fleet places the required requests to meet this target + // capacity. It also automatically replenishes any interrupted Spot Instances. + // Default: maintain. + Type *string `locationName:"type" type:"string" enum:"FleetType"` + + // The start date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). + // The default is to start fulfilling the request immediately. + ValidFrom *time.Time `locationName:"validFrom" type:"timestamp"` + + // The end date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). + // At this point, no new instance requests are placed or able to fulfill the + // request. The default end date is 7 days from the current date. + ValidUntil *time.Time `locationName:"validUntil" type:"timestamp"` +} + +// String returns the string representation +func (s FleetData) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s FleetData) GoString() string { + return s.String() +} + +// SetActivityStatus sets the ActivityStatus field's value. +func (s *FleetData) SetActivityStatus(v string) *FleetData { + s.ActivityStatus = &v + return s +} + +// SetClientToken sets the ClientToken field's value. +func (s *FleetData) SetClientToken(v string) *FleetData { + s.ClientToken = &v + return s +} + +// SetCreateTime sets the CreateTime field's value. +func (s *FleetData) SetCreateTime(v time.Time) *FleetData { + s.CreateTime = &v + return s +} + +// SetErrors sets the Errors field's value. +func (s *FleetData) SetErrors(v []*DescribeFleetError) *FleetData { + s.Errors = v + return s +} + +// SetExcessCapacityTerminationPolicy sets the ExcessCapacityTerminationPolicy field's value. +func (s *FleetData) SetExcessCapacityTerminationPolicy(v string) *FleetData { + s.ExcessCapacityTerminationPolicy = &v + return s +} + +// SetFleetId sets the FleetId field's value. +func (s *FleetData) SetFleetId(v string) *FleetData { + s.FleetId = &v + return s +} + +// SetFleetState sets the FleetState field's value. +func (s *FleetData) SetFleetState(v string) *FleetData { + s.FleetState = &v + return s +} + +// SetFulfilledCapacity sets the FulfilledCapacity field's value. +func (s *FleetData) SetFulfilledCapacity(v float64) *FleetData { + s.FulfilledCapacity = &v + return s +} + +// SetFulfilledOnDemandCapacity sets the FulfilledOnDemandCapacity field's value. +func (s *FleetData) SetFulfilledOnDemandCapacity(v float64) *FleetData { + s.FulfilledOnDemandCapacity = &v + return s +} + +// SetInstances sets the Instances field's value. +func (s *FleetData) SetInstances(v []*DescribeFleetsInstances) *FleetData { + s.Instances = v + return s +} + +// SetLaunchTemplateConfigs sets the LaunchTemplateConfigs field's value. +func (s *FleetData) SetLaunchTemplateConfigs(v []*FleetLaunchTemplateConfig) *FleetData { + s.LaunchTemplateConfigs = v + return s +} + +// SetOnDemandOptions sets the OnDemandOptions field's value. +func (s *FleetData) SetOnDemandOptions(v *OnDemandOptions) *FleetData { + s.OnDemandOptions = v + return s +} + +// SetReplaceUnhealthyInstances sets the ReplaceUnhealthyInstances field's value. +func (s *FleetData) SetReplaceUnhealthyInstances(v bool) *FleetData { + s.ReplaceUnhealthyInstances = &v + return s +} + +// SetSpotOptions sets the SpotOptions field's value. +func (s *FleetData) SetSpotOptions(v *SpotOptions) *FleetData { + s.SpotOptions = v + return s +} + +// SetTags sets the Tags field's value. +func (s *FleetData) SetTags(v []*Tag) *FleetData { + s.Tags = v + return s +} + +// SetTargetCapacitySpecification sets the TargetCapacitySpecification field's value. +func (s *FleetData) SetTargetCapacitySpecification(v *TargetCapacitySpecification) *FleetData { + s.TargetCapacitySpecification = v + return s +} + +// SetTerminateInstancesWithExpiration sets the TerminateInstancesWithExpiration field's value. +func (s *FleetData) SetTerminateInstancesWithExpiration(v bool) *FleetData { + s.TerminateInstancesWithExpiration = &v + return s +} + +// SetType sets the Type field's value. +func (s *FleetData) SetType(v string) *FleetData { + s.Type = &v + return s +} + +// SetValidFrom sets the ValidFrom field's value. +func (s *FleetData) SetValidFrom(v time.Time) *FleetData { + s.ValidFrom = &v + return s +} + +// SetValidUntil sets the ValidUntil field's value. +func (s *FleetData) SetValidUntil(v time.Time) *FleetData { + s.ValidUntil = &v + return s +} + +// Describes a launch template and overrides. +type FleetLaunchTemplateConfig struct { + _ struct{} `type:"structure"` + + // The launch template. + LaunchTemplateSpecification *FleetLaunchTemplateSpecification `locationName:"launchTemplateSpecification" type:"structure"` + + // Any parameters that you specify override the same parameters in the launch + // template. + Overrides []*FleetLaunchTemplateOverrides `locationName:"overrides" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s FleetLaunchTemplateConfig) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s FleetLaunchTemplateConfig) GoString() string { + return s.String() +} + +// SetLaunchTemplateSpecification sets the LaunchTemplateSpecification field's value. +func (s *FleetLaunchTemplateConfig) SetLaunchTemplateSpecification(v *FleetLaunchTemplateSpecification) *FleetLaunchTemplateConfig { + s.LaunchTemplateSpecification = v + return s +} + +// SetOverrides sets the Overrides field's value. +func (s *FleetLaunchTemplateConfig) SetOverrides(v []*FleetLaunchTemplateOverrides) *FleetLaunchTemplateConfig { + s.Overrides = v + return s +} + +// Describes a launch template and overrides. +type FleetLaunchTemplateConfigRequest struct { + _ struct{} `type:"structure"` + + // The launch template to use. You must specify either the launch template ID + // or launch template name in the request. + LaunchTemplateSpecification *FleetLaunchTemplateSpecificationRequest `type:"structure"` + + // Any parameters that you specify override the same parameters in the launch + // template. + Overrides []*FleetLaunchTemplateOverridesRequest `locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s FleetLaunchTemplateConfigRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s FleetLaunchTemplateConfigRequest) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *FleetLaunchTemplateConfigRequest) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "FleetLaunchTemplateConfigRequest"} + if s.LaunchTemplateSpecification != nil { + if err := s.LaunchTemplateSpecification.Validate(); err != nil { + invalidParams.AddNested("LaunchTemplateSpecification", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetLaunchTemplateSpecification sets the LaunchTemplateSpecification field's value. +func (s *FleetLaunchTemplateConfigRequest) SetLaunchTemplateSpecification(v *FleetLaunchTemplateSpecificationRequest) *FleetLaunchTemplateConfigRequest { + s.LaunchTemplateSpecification = v + return s +} + +// SetOverrides sets the Overrides field's value. +func (s *FleetLaunchTemplateConfigRequest) SetOverrides(v []*FleetLaunchTemplateOverridesRequest) *FleetLaunchTemplateConfigRequest { + s.Overrides = v + return s +} + +// Describes overrides for a launch template. +type FleetLaunchTemplateOverrides struct { + _ struct{} `type:"structure"` + + // The Availability Zone in which to launch the instances. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // The instance type. + InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` + + // The maximum price per unit hour that you are willing to pay for a Spot Instance. + MaxPrice *string `locationName:"maxPrice" type:"string"` + + // The location where the instance launched, if applicable. + Placement *PlacementResponse `locationName:"placement" type:"structure"` + + // The priority for the launch template override. If AllocationStrategy is set + // to prioritized, EC2 Fleet uses priority to determine which launch template + // override to use first in fulfilling On-Demand capacity. The highest priority + // is launched first. Valid values are whole numbers starting at 0. The lower + // the number, the higher the priority. If no number is set, the override has + // the lowest priority. + Priority *float64 `locationName:"priority" type:"double"` + + // The ID of the subnet in which to launch the instances. + SubnetId *string `locationName:"subnetId" type:"string"` + + // The number of units provided by the specified instance type. + WeightedCapacity *float64 `locationName:"weightedCapacity" type:"double"` +} + +// String returns the string representation +func (s FleetLaunchTemplateOverrides) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s FleetLaunchTemplateOverrides) GoString() string { + return s.String() +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *FleetLaunchTemplateOverrides) SetAvailabilityZone(v string) *FleetLaunchTemplateOverrides { + s.AvailabilityZone = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *FleetLaunchTemplateOverrides) SetInstanceType(v string) *FleetLaunchTemplateOverrides { + s.InstanceType = &v + return s +} + +// SetMaxPrice sets the MaxPrice field's value. +func (s *FleetLaunchTemplateOverrides) SetMaxPrice(v string) *FleetLaunchTemplateOverrides { + s.MaxPrice = &v + return s +} + +// SetPlacement sets the Placement field's value. +func (s *FleetLaunchTemplateOverrides) SetPlacement(v *PlacementResponse) *FleetLaunchTemplateOverrides { + s.Placement = v + return s +} + +// SetPriority sets the Priority field's value. +func (s *FleetLaunchTemplateOverrides) SetPriority(v float64) *FleetLaunchTemplateOverrides { + s.Priority = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *FleetLaunchTemplateOverrides) SetSubnetId(v string) *FleetLaunchTemplateOverrides { + s.SubnetId = &v + return s +} + +// SetWeightedCapacity sets the WeightedCapacity field's value. +func (s *FleetLaunchTemplateOverrides) SetWeightedCapacity(v float64) *FleetLaunchTemplateOverrides { + s.WeightedCapacity = &v + return s +} + +// Describes overrides for a launch template. +type FleetLaunchTemplateOverridesRequest struct { + _ struct{} `type:"structure"` + + // The Availability Zone in which to launch the instances. + AvailabilityZone *string `type:"string"` + + // The instance type. + InstanceType *string `type:"string" enum:"InstanceType"` + + // The maximum price per unit hour that you are willing to pay for a Spot Instance. + MaxPrice *string `type:"string"` + + // The location where the instance launched, if applicable. + Placement *Placement `type:"structure"` + + // The priority for the launch template override. If AllocationStrategy is set + // to prioritized, EC2 Fleet uses priority to determine which launch template + // override to use first in fulfilling On-Demand capacity. The highest priority + // is launched first. Valid values are whole numbers starting at 0. The lower + // the number, the higher the priority. If no number is set, the launch template + // override has the lowest priority. + Priority *float64 `type:"double"` + + // The ID of the subnet in which to launch the instances. + SubnetId *string `type:"string"` + + // The number of units provided by the specified instance type. + WeightedCapacity *float64 `type:"double"` +} + +// String returns the string representation +func (s FleetLaunchTemplateOverridesRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s FleetLaunchTemplateOverridesRequest) GoString() string { + return s.String() +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *FleetLaunchTemplateOverridesRequest) SetAvailabilityZone(v string) *FleetLaunchTemplateOverridesRequest { + s.AvailabilityZone = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *FleetLaunchTemplateOverridesRequest) SetInstanceType(v string) *FleetLaunchTemplateOverridesRequest { + s.InstanceType = &v + return s +} + +// SetMaxPrice sets the MaxPrice field's value. +func (s *FleetLaunchTemplateOverridesRequest) SetMaxPrice(v string) *FleetLaunchTemplateOverridesRequest { + s.MaxPrice = &v + return s +} + +// SetPlacement sets the Placement field's value. +func (s *FleetLaunchTemplateOverridesRequest) SetPlacement(v *Placement) *FleetLaunchTemplateOverridesRequest { + s.Placement = v + return s +} + +// SetPriority sets the Priority field's value. +func (s *FleetLaunchTemplateOverridesRequest) SetPriority(v float64) *FleetLaunchTemplateOverridesRequest { + s.Priority = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *FleetLaunchTemplateOverridesRequest) SetSubnetId(v string) *FleetLaunchTemplateOverridesRequest { + s.SubnetId = &v + return s +} + +// SetWeightedCapacity sets the WeightedCapacity field's value. +func (s *FleetLaunchTemplateOverridesRequest) SetWeightedCapacity(v float64) *FleetLaunchTemplateOverridesRequest { + s.WeightedCapacity = &v + return s +} + +// Describes a launch template. +type FleetLaunchTemplateSpecification struct { + _ struct{} `type:"structure"` + + // The ID of the launch template. You must specify either a template ID or a + // template name. + LaunchTemplateId *string `locationName:"launchTemplateId" type:"string"` + + // The name of the launch template. You must specify either a template name + // or a template ID. + LaunchTemplateName *string `locationName:"launchTemplateName" min:"3" type:"string"` + + // The version number of the launch template. You must specify a version number. + Version *string `locationName:"version" type:"string"` +} + +// String returns the string representation +func (s FleetLaunchTemplateSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s FleetLaunchTemplateSpecification) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *FleetLaunchTemplateSpecification) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "FleetLaunchTemplateSpecification"} + if s.LaunchTemplateName != nil && len(*s.LaunchTemplateName) < 3 { + invalidParams.Add(request.NewErrParamMinLen("LaunchTemplateName", 3)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetLaunchTemplateId sets the LaunchTemplateId field's value. +func (s *FleetLaunchTemplateSpecification) SetLaunchTemplateId(v string) *FleetLaunchTemplateSpecification { + s.LaunchTemplateId = &v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *FleetLaunchTemplateSpecification) SetLaunchTemplateName(v string) *FleetLaunchTemplateSpecification { + s.LaunchTemplateName = &v + return s +} + +// SetVersion sets the Version field's value. +func (s *FleetLaunchTemplateSpecification) SetVersion(v string) *FleetLaunchTemplateSpecification { + s.Version = &v + return s +} + +// The launch template to use. You must specify either the launch template ID +// or launch template name in the request. +type FleetLaunchTemplateSpecificationRequest struct { + _ struct{} `type:"structure"` + + // The ID of the launch template. + LaunchTemplateId *string `type:"string"` + + // The name of the launch template. + LaunchTemplateName *string `min:"3" type:"string"` + + // The version number of the launch template. Note: This is a required parameter + // and will be updated soon. + Version *string `type:"string"` +} + +// String returns the string representation +func (s FleetLaunchTemplateSpecificationRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s FleetLaunchTemplateSpecificationRequest) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *FleetLaunchTemplateSpecificationRequest) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "FleetLaunchTemplateSpecificationRequest"} + if s.LaunchTemplateName != nil && len(*s.LaunchTemplateName) < 3 { + invalidParams.Add(request.NewErrParamMinLen("LaunchTemplateName", 3)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetLaunchTemplateId sets the LaunchTemplateId field's value. +func (s *FleetLaunchTemplateSpecificationRequest) SetLaunchTemplateId(v string) *FleetLaunchTemplateSpecificationRequest { + s.LaunchTemplateId = &v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *FleetLaunchTemplateSpecificationRequest) SetLaunchTemplateName(v string) *FleetLaunchTemplateSpecificationRequest { + s.LaunchTemplateName = &v + return s +} + +// SetVersion sets the Version field's value. +func (s *FleetLaunchTemplateSpecificationRequest) SetVersion(v string) *FleetLaunchTemplateSpecificationRequest { + s.Version = &v + return s +} + +// Describes a flow log. +type FlowLog struct { + _ struct{} `type:"structure"` + + // The date and time the flow log was created. + CreationTime *time.Time `locationName:"creationTime" type:"timestamp"` + + // Information about the error that occurred. Rate limited indicates that CloudWatch + // Logs throttling has been applied for one or more network interfaces, or that + // you've reached the limit on the number of log groups that you can create. + // Access error indicates that the IAM role associated with the flow log does + // not have sufficient permissions to publish to CloudWatch Logs. Unknown error + // indicates an internal error. + DeliverLogsErrorMessage *string `locationName:"deliverLogsErrorMessage" type:"string"` + + // The ARN of the IAM role that posts logs to CloudWatch Logs. + DeliverLogsPermissionArn *string `locationName:"deliverLogsPermissionArn" type:"string"` + + // The status of the logs delivery (SUCCESS | FAILED). + DeliverLogsStatus *string `locationName:"deliverLogsStatus" type:"string"` + + // The flow log ID. + FlowLogId *string `locationName:"flowLogId" type:"string"` + + // The status of the flow log (ACTIVE). + FlowLogStatus *string `locationName:"flowLogStatus" type:"string"` + + // Specifies the destination to which the flow log data is published. Flow log + // data can be published to an CloudWatch Logs log group or an Amazon S3 bucket. + // If the flow log publishes to CloudWatch Logs, this element indicates the + // Amazon Resource Name (ARN) of the CloudWatch Logs log group to which the + // data is published. If the flow log publishes to Amazon S3, this element indicates + // the ARN of the Amazon S3 bucket to which the data is published. + LogDestination *string `locationName:"logDestination" type:"string"` + + // Specifies the type of destination to which the flow log data is published. + // Flow log data can be published to CloudWatch Logs or Amazon S3. + LogDestinationType *string `locationName:"logDestinationType" type:"string" enum:"LogDestinationType"` + + // The format of the flow log record. + LogFormat *string `locationName:"logFormat" type:"string"` + + // The name of the flow log group. + LogGroupName *string `locationName:"logGroupName" type:"string"` + + // The ID of the resource on which the flow log was created. + ResourceId *string `locationName:"resourceId" type:"string"` + + // The type of traffic captured for the flow log. + TrafficType *string `locationName:"trafficType" type:"string" enum:"TrafficType"` +} + +// String returns the string representation +func (s FlowLog) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s FlowLog) GoString() string { + return s.String() +} + +// SetCreationTime sets the CreationTime field's value. +func (s *FlowLog) SetCreationTime(v time.Time) *FlowLog { + s.CreationTime = &v + return s +} + +// SetDeliverLogsErrorMessage sets the DeliverLogsErrorMessage field's value. +func (s *FlowLog) SetDeliverLogsErrorMessage(v string) *FlowLog { + s.DeliverLogsErrorMessage = &v + return s +} + +// SetDeliverLogsPermissionArn sets the DeliverLogsPermissionArn field's value. +func (s *FlowLog) SetDeliverLogsPermissionArn(v string) *FlowLog { + s.DeliverLogsPermissionArn = &v + return s +} + +// SetDeliverLogsStatus sets the DeliverLogsStatus field's value. +func (s *FlowLog) SetDeliverLogsStatus(v string) *FlowLog { + s.DeliverLogsStatus = &v + return s +} + +// SetFlowLogId sets the FlowLogId field's value. +func (s *FlowLog) SetFlowLogId(v string) *FlowLog { + s.FlowLogId = &v + return s +} + +// SetFlowLogStatus sets the FlowLogStatus field's value. +func (s *FlowLog) SetFlowLogStatus(v string) *FlowLog { + s.FlowLogStatus = &v + return s +} + +// SetLogDestination sets the LogDestination field's value. +func (s *FlowLog) SetLogDestination(v string) *FlowLog { + s.LogDestination = &v + return s +} + +// SetLogDestinationType sets the LogDestinationType field's value. +func (s *FlowLog) SetLogDestinationType(v string) *FlowLog { + s.LogDestinationType = &v + return s +} + +// SetLogFormat sets the LogFormat field's value. +func (s *FlowLog) SetLogFormat(v string) *FlowLog { + s.LogFormat = &v + return s +} + +// SetLogGroupName sets the LogGroupName field's value. +func (s *FlowLog) SetLogGroupName(v string) *FlowLog { + s.LogGroupName = &v + return s +} + +// SetResourceId sets the ResourceId field's value. +func (s *FlowLog) SetResourceId(v string) *FlowLog { + s.ResourceId = &v + return s +} + +// SetTrafficType sets the TrafficType field's value. +func (s *FlowLog) SetTrafficType(v string) *FlowLog { + s.TrafficType = &v + return s +} + +// Describes an Amazon FPGA image (AFI). +type FpgaImage struct { + _ struct{} `type:"structure"` + + // The date and time the AFI was created. + CreateTime *time.Time `locationName:"createTime" type:"timestamp"` + + // Indicates whether data retention support is enabled for the AFI. + DataRetentionSupport *bool `locationName:"dataRetentionSupport" type:"boolean"` + + // The description of the AFI. + Description *string `locationName:"description" type:"string"` + + // The global FPGA image identifier (AGFI ID). + FpgaImageGlobalId *string `locationName:"fpgaImageGlobalId" type:"string"` + + // The FPGA image identifier (AFI ID). + FpgaImageId *string `locationName:"fpgaImageId" type:"string"` + + // The name of the AFI. + Name *string `locationName:"name" type:"string"` + + // The alias of the AFI owner. Possible values include self, amazon, and aws-marketplace. + OwnerAlias *string `locationName:"ownerAlias" type:"string"` + + // The AWS account ID of the AFI owner. + OwnerId *string `locationName:"ownerId" type:"string"` + + // Information about the PCI bus. + PciId *PciId `locationName:"pciId" type:"structure"` + + // The product codes for the AFI. + ProductCodes []*ProductCode `locationName:"productCodes" locationNameList:"item" type:"list"` + + // Indicates whether the AFI is public. + Public *bool `locationName:"public" type:"boolean"` + + // The version of the AWS Shell that was used to create the bitstream. + ShellVersion *string `locationName:"shellVersion" type:"string"` + + // Information about the state of the AFI. + State *FpgaImageState `locationName:"state" type:"structure"` + + // Any tags assigned to the AFI. + Tags []*Tag `locationName:"tags" locationNameList:"item" type:"list"` + + // The time of the most recent update to the AFI. + UpdateTime *time.Time `locationName:"updateTime" type:"timestamp"` +} + +// String returns the string representation +func (s FpgaImage) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s FpgaImage) GoString() string { + return s.String() +} + +// SetCreateTime sets the CreateTime field's value. +func (s *FpgaImage) SetCreateTime(v time.Time) *FpgaImage { + s.CreateTime = &v + return s +} + +// SetDataRetentionSupport sets the DataRetentionSupport field's value. +func (s *FpgaImage) SetDataRetentionSupport(v bool) *FpgaImage { + s.DataRetentionSupport = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *FpgaImage) SetDescription(v string) *FpgaImage { + s.Description = &v + return s +} + +// SetFpgaImageGlobalId sets the FpgaImageGlobalId field's value. +func (s *FpgaImage) SetFpgaImageGlobalId(v string) *FpgaImage { + s.FpgaImageGlobalId = &v + return s +} + +// SetFpgaImageId sets the FpgaImageId field's value. +func (s *FpgaImage) SetFpgaImageId(v string) *FpgaImage { + s.FpgaImageId = &v + return s +} + +// SetName sets the Name field's value. +func (s *FpgaImage) SetName(v string) *FpgaImage { + s.Name = &v + return s +} + +// SetOwnerAlias sets the OwnerAlias field's value. +func (s *FpgaImage) SetOwnerAlias(v string) *FpgaImage { + s.OwnerAlias = &v + return s +} + +// SetOwnerId sets the OwnerId field's value. +func (s *FpgaImage) SetOwnerId(v string) *FpgaImage { + s.OwnerId = &v + return s +} + +// SetPciId sets the PciId field's value. +func (s *FpgaImage) SetPciId(v *PciId) *FpgaImage { + s.PciId = v + return s +} + +// SetProductCodes sets the ProductCodes field's value. +func (s *FpgaImage) SetProductCodes(v []*ProductCode) *FpgaImage { + s.ProductCodes = v + return s +} + +// SetPublic sets the Public field's value. +func (s *FpgaImage) SetPublic(v bool) *FpgaImage { + s.Public = &v + return s +} + +// SetShellVersion sets the ShellVersion field's value. +func (s *FpgaImage) SetShellVersion(v string) *FpgaImage { + s.ShellVersion = &v + return s +} + +// SetState sets the State field's value. +func (s *FpgaImage) SetState(v *FpgaImageState) *FpgaImage { + s.State = v + return s +} + +// SetTags sets the Tags field's value. +func (s *FpgaImage) SetTags(v []*Tag) *FpgaImage { + s.Tags = v + return s +} + +// SetUpdateTime sets the UpdateTime field's value. +func (s *FpgaImage) SetUpdateTime(v time.Time) *FpgaImage { + s.UpdateTime = &v + return s +} + +// Describes an Amazon FPGA image (AFI) attribute. +type FpgaImageAttribute struct { + _ struct{} `type:"structure"` + + // The description of the AFI. + Description *string `locationName:"description" type:"string"` + + // The ID of the AFI. + FpgaImageId *string `locationName:"fpgaImageId" type:"string"` + + // The load permissions. + LoadPermissions []*LoadPermission `locationName:"loadPermissions" locationNameList:"item" type:"list"` + + // The name of the AFI. + Name *string `locationName:"name" type:"string"` + + // The product codes. + ProductCodes []*ProductCode `locationName:"productCodes" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s FpgaImageAttribute) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s FpgaImageAttribute) GoString() string { + return s.String() +} + +// SetDescription sets the Description field's value. +func (s *FpgaImageAttribute) SetDescription(v string) *FpgaImageAttribute { + s.Description = &v + return s +} + +// SetFpgaImageId sets the FpgaImageId field's value. +func (s *FpgaImageAttribute) SetFpgaImageId(v string) *FpgaImageAttribute { + s.FpgaImageId = &v + return s +} + +// SetLoadPermissions sets the LoadPermissions field's value. +func (s *FpgaImageAttribute) SetLoadPermissions(v []*LoadPermission) *FpgaImageAttribute { + s.LoadPermissions = v + return s +} + +// SetName sets the Name field's value. +func (s *FpgaImageAttribute) SetName(v string) *FpgaImageAttribute { + s.Name = &v + return s +} + +// SetProductCodes sets the ProductCodes field's value. +func (s *FpgaImageAttribute) SetProductCodes(v []*ProductCode) *FpgaImageAttribute { + s.ProductCodes = v + return s +} + +// Describes the state of the bitstream generation process for an Amazon FPGA +// image (AFI). +type FpgaImageState struct { + _ struct{} `type:"structure"` + + // The state. The following are the possible values: + // + // * pending - AFI bitstream generation is in progress. + // + // * available - The AFI is available for use. + // + // * failed - AFI bitstream generation failed. + // + // * unavailable - The AFI is no longer available for use. + Code *string `locationName:"code" type:"string" enum:"FpgaImageStateCode"` + + // If the state is failed, this is the error message. + Message *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s FpgaImageState) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s FpgaImageState) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *FpgaImageState) SetCode(v string) *FpgaImageState { + s.Code = &v + return s +} + +// SetMessage sets the Message field's value. +func (s *FpgaImageState) SetMessage(v string) *FpgaImageState { + s.Message = &v + return s +} + +type GetCapacityReservationUsageInput struct { + _ struct{} `type:"structure"` + + // The ID of the Capacity Reservation. + // + // CapacityReservationId is a required field + CapacityReservationId *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The maximum number of results to return for the request in a single page. + // The remaining results can be seen by sending another request with the returned + // nextToken value. + // + // Valid range: Minimum value of 1. Maximum value of 1000. + MaxResults *int64 `min:"1" type:"integer"` + + // The token to retrieve the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s GetCapacityReservationUsageInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetCapacityReservationUsageInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetCapacityReservationUsageInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetCapacityReservationUsageInput"} + if s.CapacityReservationId == nil { + invalidParams.Add(request.NewErrParamRequired("CapacityReservationId")) + } + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCapacityReservationId sets the CapacityReservationId field's value. +func (s *GetCapacityReservationUsageInput) SetCapacityReservationId(v string) *GetCapacityReservationUsageInput { + s.CapacityReservationId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *GetCapacityReservationUsageInput) SetDryRun(v bool) *GetCapacityReservationUsageInput { + s.DryRun = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *GetCapacityReservationUsageInput) SetMaxResults(v int64) *GetCapacityReservationUsageInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *GetCapacityReservationUsageInput) SetNextToken(v string) *GetCapacityReservationUsageInput { + s.NextToken = &v + return s +} + +type GetCapacityReservationUsageOutput struct { + _ struct{} `type:"structure"` + + // The remaining capacity. Indicates the number of instances that can be launched + // in the Capacity Reservation. + AvailableInstanceCount *int64 `locationName:"availableInstanceCount" type:"integer"` + + // The ID of the Capacity Reservation. + CapacityReservationId *string `locationName:"capacityReservationId" type:"string"` + + // The type of instance for which the Capacity Reservation reserves capacity. + InstanceType *string `locationName:"instanceType" type:"string"` + + // Information about the Capacity Reservation usage. + InstanceUsages []*InstanceUsage `locationName:"instanceUsageSet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // The current state of the Capacity Reservation. A Capacity Reservation can + // be in one of the following states: + // + // * active - The Capacity Reservation is active and the capacity is available + // for your use. + // + // * expired - The Capacity Reservation expired automatically at the date + // and time specified in your request. The reserved capacity is no longer + // available for your use. + // + // * cancelled - The Capacity Reservation was manually cancelled. The reserved + // capacity is no longer available for your use. + // + // * pending - The Capacity Reservation request was successful but the capacity + // provisioning is still pending. + // + // * failed - The Capacity Reservation request has failed. A request might + // fail due to invalid request parameters, capacity constraints, or instance + // limit constraints. Failed requests are retained for 60 minutes. + State *string `locationName:"state" type:"string" enum:"CapacityReservationState"` + + // The number of instances for which the Capacity Reservation reserves capacity. + TotalInstanceCount *int64 `locationName:"totalInstanceCount" type:"integer"` +} + +// String returns the string representation +func (s GetCapacityReservationUsageOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetCapacityReservationUsageOutput) GoString() string { + return s.String() +} + +// SetAvailableInstanceCount sets the AvailableInstanceCount field's value. +func (s *GetCapacityReservationUsageOutput) SetAvailableInstanceCount(v int64) *GetCapacityReservationUsageOutput { + s.AvailableInstanceCount = &v + return s +} + +// SetCapacityReservationId sets the CapacityReservationId field's value. +func (s *GetCapacityReservationUsageOutput) SetCapacityReservationId(v string) *GetCapacityReservationUsageOutput { + s.CapacityReservationId = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *GetCapacityReservationUsageOutput) SetInstanceType(v string) *GetCapacityReservationUsageOutput { + s.InstanceType = &v + return s +} + +// SetInstanceUsages sets the InstanceUsages field's value. +func (s *GetCapacityReservationUsageOutput) SetInstanceUsages(v []*InstanceUsage) *GetCapacityReservationUsageOutput { + s.InstanceUsages = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *GetCapacityReservationUsageOutput) SetNextToken(v string) *GetCapacityReservationUsageOutput { + s.NextToken = &v + return s +} + +// SetState sets the State field's value. +func (s *GetCapacityReservationUsageOutput) SetState(v string) *GetCapacityReservationUsageOutput { + s.State = &v + return s +} + +// SetTotalInstanceCount sets the TotalInstanceCount field's value. +func (s *GetCapacityReservationUsageOutput) SetTotalInstanceCount(v int64) *GetCapacityReservationUsageOutput { + s.TotalInstanceCount = &v + return s +} + +type GetConsoleOutputInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the instance. + // + // InstanceId is a required field + InstanceId *string `type:"string" required:"true"` + + // When enabled, retrieves the latest console output for the instance. + // + // Default: disabled (false) + Latest *bool `type:"boolean"` +} + +// String returns the string representation +func (s GetConsoleOutputInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetConsoleOutputInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetConsoleOutputInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetConsoleOutputInput"} + if s.InstanceId == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *GetConsoleOutputInput) SetDryRun(v bool) *GetConsoleOutputInput { + s.DryRun = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *GetConsoleOutputInput) SetInstanceId(v string) *GetConsoleOutputInput { + s.InstanceId = &v + return s +} + +// SetLatest sets the Latest field's value. +func (s *GetConsoleOutputInput) SetLatest(v bool) *GetConsoleOutputInput { + s.Latest = &v + return s +} + +type GetConsoleOutputOutput struct { + _ struct{} `type:"structure"` + + // The ID of the instance. + InstanceId *string `locationName:"instanceId" type:"string"` + + // The console output, base64-encoded. If you are using a command line tool, + // the tool decodes the output for you. + Output *string `locationName:"output" type:"string"` + + // The time at which the output was last updated. + Timestamp *time.Time `locationName:"timestamp" type:"timestamp"` +} + +// String returns the string representation +func (s GetConsoleOutputOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetConsoleOutputOutput) GoString() string { + return s.String() +} + +// SetInstanceId sets the InstanceId field's value. +func (s *GetConsoleOutputOutput) SetInstanceId(v string) *GetConsoleOutputOutput { + s.InstanceId = &v + return s +} + +// SetOutput sets the Output field's value. +func (s *GetConsoleOutputOutput) SetOutput(v string) *GetConsoleOutputOutput { + s.Output = &v + return s +} + +// SetTimestamp sets the Timestamp field's value. +func (s *GetConsoleOutputOutput) SetTimestamp(v time.Time) *GetConsoleOutputOutput { + s.Timestamp = &v + return s +} + +type GetConsoleScreenshotInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the instance. + // + // InstanceId is a required field + InstanceId *string `type:"string" required:"true"` + + // When set to true, acts as keystroke input and wakes up an instance that's + // in standby or "sleep" mode. + WakeUp *bool `type:"boolean"` +} + +// String returns the string representation +func (s GetConsoleScreenshotInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetConsoleScreenshotInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetConsoleScreenshotInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetConsoleScreenshotInput"} + if s.InstanceId == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *GetConsoleScreenshotInput) SetDryRun(v bool) *GetConsoleScreenshotInput { + s.DryRun = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *GetConsoleScreenshotInput) SetInstanceId(v string) *GetConsoleScreenshotInput { + s.InstanceId = &v + return s +} + +// SetWakeUp sets the WakeUp field's value. +func (s *GetConsoleScreenshotInput) SetWakeUp(v bool) *GetConsoleScreenshotInput { + s.WakeUp = &v + return s +} + +type GetConsoleScreenshotOutput struct { + _ struct{} `type:"structure"` + + // The data that comprises the image. + ImageData *string `locationName:"imageData" type:"string"` + + // The ID of the instance. + InstanceId *string `locationName:"instanceId" type:"string"` +} + +// String returns the string representation +func (s GetConsoleScreenshotOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetConsoleScreenshotOutput) GoString() string { + return s.String() +} + +// SetImageData sets the ImageData field's value. +func (s *GetConsoleScreenshotOutput) SetImageData(v string) *GetConsoleScreenshotOutput { + s.ImageData = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *GetConsoleScreenshotOutput) SetInstanceId(v string) *GetConsoleScreenshotOutput { + s.InstanceId = &v + return s +} + +type GetEbsDefaultKmsKeyIdInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s GetEbsDefaultKmsKeyIdInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetEbsDefaultKmsKeyIdInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *GetEbsDefaultKmsKeyIdInput) SetDryRun(v bool) *GetEbsDefaultKmsKeyIdInput { + s.DryRun = &v + return s +} + +type GetEbsDefaultKmsKeyIdOutput struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the default CMK for encryption by default. + KmsKeyId *string `locationName:"kmsKeyId" type:"string"` +} + +// String returns the string representation +func (s GetEbsDefaultKmsKeyIdOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetEbsDefaultKmsKeyIdOutput) GoString() string { + return s.String() +} + +// SetKmsKeyId sets the KmsKeyId field's value. +func (s *GetEbsDefaultKmsKeyIdOutput) SetKmsKeyId(v string) *GetEbsDefaultKmsKeyIdOutput { + s.KmsKeyId = &v + return s +} + +type GetEbsEncryptionByDefaultInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s GetEbsEncryptionByDefaultInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetEbsEncryptionByDefaultInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *GetEbsEncryptionByDefaultInput) SetDryRun(v bool) *GetEbsEncryptionByDefaultInput { + s.DryRun = &v + return s +} + +type GetEbsEncryptionByDefaultOutput struct { + _ struct{} `type:"structure"` + + // Indicates whether encryption by default is enabled. + EbsEncryptionByDefault *bool `locationName:"ebsEncryptionByDefault" type:"boolean"` +} + +// String returns the string representation +func (s GetEbsEncryptionByDefaultOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetEbsEncryptionByDefaultOutput) GoString() string { + return s.String() +} + +// SetEbsEncryptionByDefault sets the EbsEncryptionByDefault field's value. +func (s *GetEbsEncryptionByDefaultOutput) SetEbsEncryptionByDefault(v bool) *GetEbsEncryptionByDefaultOutput { + s.EbsEncryptionByDefault = &v + return s +} + +type GetHostReservationPurchasePreviewInput struct { + _ struct{} `type:"structure"` + + // The IDs of the Dedicated Hosts with which the reservation is associated. + // + // HostIdSet is a required field + HostIdSet []*string `locationNameList:"item" type:"list" required:"true"` + + // The offering ID of the reservation. + // + // OfferingId is a required field + OfferingId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s GetHostReservationPurchasePreviewInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetHostReservationPurchasePreviewInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetHostReservationPurchasePreviewInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetHostReservationPurchasePreviewInput"} + if s.HostIdSet == nil { + invalidParams.Add(request.NewErrParamRequired("HostIdSet")) + } + if s.OfferingId == nil { + invalidParams.Add(request.NewErrParamRequired("OfferingId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetHostIdSet sets the HostIdSet field's value. +func (s *GetHostReservationPurchasePreviewInput) SetHostIdSet(v []*string) *GetHostReservationPurchasePreviewInput { + s.HostIdSet = v + return s +} + +// SetOfferingId sets the OfferingId field's value. +func (s *GetHostReservationPurchasePreviewInput) SetOfferingId(v string) *GetHostReservationPurchasePreviewInput { + s.OfferingId = &v + return s +} + +type GetHostReservationPurchasePreviewOutput struct { + _ struct{} `type:"structure"` + + // The currency in which the totalUpfrontPrice and totalHourlyPrice amounts + // are specified. At this time, the only supported currency is USD. + CurrencyCode *string `locationName:"currencyCode" type:"string" enum:"CurrencyCodeValues"` + + // The purchase information of the Dedicated Host reservation and the Dedicated + // Hosts associated with it. + Purchase []*Purchase `locationName:"purchase" locationNameList:"item" type:"list"` + + // The potential total hourly price of the reservation per hour. + TotalHourlyPrice *string `locationName:"totalHourlyPrice" type:"string"` + + // The potential total upfront price. This is billed immediately. + TotalUpfrontPrice *string `locationName:"totalUpfrontPrice" type:"string"` +} + +// String returns the string representation +func (s GetHostReservationPurchasePreviewOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetHostReservationPurchasePreviewOutput) GoString() string { + return s.String() +} + +// SetCurrencyCode sets the CurrencyCode field's value. +func (s *GetHostReservationPurchasePreviewOutput) SetCurrencyCode(v string) *GetHostReservationPurchasePreviewOutput { + s.CurrencyCode = &v + return s +} + +// SetPurchase sets the Purchase field's value. +func (s *GetHostReservationPurchasePreviewOutput) SetPurchase(v []*Purchase) *GetHostReservationPurchasePreviewOutput { + s.Purchase = v + return s +} + +// SetTotalHourlyPrice sets the TotalHourlyPrice field's value. +func (s *GetHostReservationPurchasePreviewOutput) SetTotalHourlyPrice(v string) *GetHostReservationPurchasePreviewOutput { + s.TotalHourlyPrice = &v + return s +} + +// SetTotalUpfrontPrice sets the TotalUpfrontPrice field's value. +func (s *GetHostReservationPurchasePreviewOutput) SetTotalUpfrontPrice(v string) *GetHostReservationPurchasePreviewOutput { + s.TotalUpfrontPrice = &v + return s +} + +type GetLaunchTemplateDataInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the instance. + // + // InstanceId is a required field + InstanceId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s GetLaunchTemplateDataInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetLaunchTemplateDataInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetLaunchTemplateDataInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetLaunchTemplateDataInput"} + if s.InstanceId == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *GetLaunchTemplateDataInput) SetDryRun(v bool) *GetLaunchTemplateDataInput { + s.DryRun = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *GetLaunchTemplateDataInput) SetInstanceId(v string) *GetLaunchTemplateDataInput { + s.InstanceId = &v + return s +} + +type GetLaunchTemplateDataOutput struct { + _ struct{} `type:"structure"` + + // The instance data. + LaunchTemplateData *ResponseLaunchTemplateData `locationName:"launchTemplateData" type:"structure"` +} + +// String returns the string representation +func (s GetLaunchTemplateDataOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetLaunchTemplateDataOutput) GoString() string { + return s.String() +} + +// SetLaunchTemplateData sets the LaunchTemplateData field's value. +func (s *GetLaunchTemplateDataOutput) SetLaunchTemplateData(v *ResponseLaunchTemplateData) *GetLaunchTemplateDataOutput { + s.LaunchTemplateData = v + return s +} + +type GetPasswordDataInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the Windows instance. + // + // InstanceId is a required field + InstanceId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s GetPasswordDataInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetPasswordDataInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetPasswordDataInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetPasswordDataInput"} + if s.InstanceId == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *GetPasswordDataInput) SetDryRun(v bool) *GetPasswordDataInput { + s.DryRun = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *GetPasswordDataInput) SetInstanceId(v string) *GetPasswordDataInput { + s.InstanceId = &v + return s +} + +type GetPasswordDataOutput struct { + _ struct{} `type:"structure"` + + // The ID of the Windows instance. + InstanceId *string `locationName:"instanceId" type:"string"` + + // The password of the instance. Returns an empty string if the password is + // not available. + PasswordData *string `locationName:"passwordData" type:"string"` + + // The time the data was last updated. + Timestamp *time.Time `locationName:"timestamp" type:"timestamp"` +} + +// String returns the string representation +func (s GetPasswordDataOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetPasswordDataOutput) GoString() string { + return s.String() +} + +// SetInstanceId sets the InstanceId field's value. +func (s *GetPasswordDataOutput) SetInstanceId(v string) *GetPasswordDataOutput { + s.InstanceId = &v + return s +} + +// SetPasswordData sets the PasswordData field's value. +func (s *GetPasswordDataOutput) SetPasswordData(v string) *GetPasswordDataOutput { + s.PasswordData = &v + return s +} + +// SetTimestamp sets the Timestamp field's value. +func (s *GetPasswordDataOutput) SetTimestamp(v time.Time) *GetPasswordDataOutput { + s.Timestamp = &v + return s +} + +// Contains the parameters for GetReservedInstanceExchangeQuote. +type GetReservedInstancesExchangeQuoteInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The IDs of the Convertible Reserved Instances to exchange. + // + // ReservedInstanceIds is a required field + ReservedInstanceIds []*string `locationName:"ReservedInstanceId" locationNameList:"ReservedInstanceId" type:"list" required:"true"` + + // The configuration of the target Convertible Reserved Instance to exchange + // for your current Convertible Reserved Instances. + TargetConfigurations []*TargetConfigurationRequest `locationName:"TargetConfiguration" locationNameList:"TargetConfigurationRequest" type:"list"` +} + +// String returns the string representation +func (s GetReservedInstancesExchangeQuoteInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetReservedInstancesExchangeQuoteInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetReservedInstancesExchangeQuoteInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetReservedInstancesExchangeQuoteInput"} + if s.ReservedInstanceIds == nil { + invalidParams.Add(request.NewErrParamRequired("ReservedInstanceIds")) + } + if s.TargetConfigurations != nil { + for i, v := range s.TargetConfigurations { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TargetConfigurations", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *GetReservedInstancesExchangeQuoteInput) SetDryRun(v bool) *GetReservedInstancesExchangeQuoteInput { + s.DryRun = &v + return s +} + +// SetReservedInstanceIds sets the ReservedInstanceIds field's value. +func (s *GetReservedInstancesExchangeQuoteInput) SetReservedInstanceIds(v []*string) *GetReservedInstancesExchangeQuoteInput { + s.ReservedInstanceIds = v + return s +} + +// SetTargetConfigurations sets the TargetConfigurations field's value. +func (s *GetReservedInstancesExchangeQuoteInput) SetTargetConfigurations(v []*TargetConfigurationRequest) *GetReservedInstancesExchangeQuoteInput { + s.TargetConfigurations = v + return s +} + +// Contains the output of GetReservedInstancesExchangeQuote. +type GetReservedInstancesExchangeQuoteOutput struct { + _ struct{} `type:"structure"` + + // The currency of the transaction. + CurrencyCode *string `locationName:"currencyCode" type:"string"` + + // If true, the exchange is valid. If false, the exchange cannot be completed. + IsValidExchange *bool `locationName:"isValidExchange" type:"boolean"` + + // The new end date of the reservation term. + OutputReservedInstancesWillExpireAt *time.Time `locationName:"outputReservedInstancesWillExpireAt" type:"timestamp"` + + // The total true upfront charge for the exchange. + PaymentDue *string `locationName:"paymentDue" type:"string"` + + // The cost associated with the Reserved Instance. + ReservedInstanceValueRollup *ReservationValue `locationName:"reservedInstanceValueRollup" type:"structure"` + + // The configuration of your Convertible Reserved Instances. + ReservedInstanceValueSet []*ReservedInstanceReservationValue `locationName:"reservedInstanceValueSet" locationNameList:"item" type:"list"` + + // The cost associated with the Reserved Instance. + TargetConfigurationValueRollup *ReservationValue `locationName:"targetConfigurationValueRollup" type:"structure"` + + // The values of the target Convertible Reserved Instances. + TargetConfigurationValueSet []*TargetReservationValue `locationName:"targetConfigurationValueSet" locationNameList:"item" type:"list"` + + // Describes the reason why the exchange cannot be completed. + ValidationFailureReason *string `locationName:"validationFailureReason" type:"string"` +} + +// String returns the string representation +func (s GetReservedInstancesExchangeQuoteOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetReservedInstancesExchangeQuoteOutput) GoString() string { + return s.String() +} + +// SetCurrencyCode sets the CurrencyCode field's value. +func (s *GetReservedInstancesExchangeQuoteOutput) SetCurrencyCode(v string) *GetReservedInstancesExchangeQuoteOutput { + s.CurrencyCode = &v + return s +} + +// SetIsValidExchange sets the IsValidExchange field's value. +func (s *GetReservedInstancesExchangeQuoteOutput) SetIsValidExchange(v bool) *GetReservedInstancesExchangeQuoteOutput { + s.IsValidExchange = &v + return s +} + +// SetOutputReservedInstancesWillExpireAt sets the OutputReservedInstancesWillExpireAt field's value. +func (s *GetReservedInstancesExchangeQuoteOutput) SetOutputReservedInstancesWillExpireAt(v time.Time) *GetReservedInstancesExchangeQuoteOutput { + s.OutputReservedInstancesWillExpireAt = &v + return s +} + +// SetPaymentDue sets the PaymentDue field's value. +func (s *GetReservedInstancesExchangeQuoteOutput) SetPaymentDue(v string) *GetReservedInstancesExchangeQuoteOutput { + s.PaymentDue = &v + return s +} + +// SetReservedInstanceValueRollup sets the ReservedInstanceValueRollup field's value. +func (s *GetReservedInstancesExchangeQuoteOutput) SetReservedInstanceValueRollup(v *ReservationValue) *GetReservedInstancesExchangeQuoteOutput { + s.ReservedInstanceValueRollup = v + return s +} + +// SetReservedInstanceValueSet sets the ReservedInstanceValueSet field's value. +func (s *GetReservedInstancesExchangeQuoteOutput) SetReservedInstanceValueSet(v []*ReservedInstanceReservationValue) *GetReservedInstancesExchangeQuoteOutput { + s.ReservedInstanceValueSet = v + return s +} + +// SetTargetConfigurationValueRollup sets the TargetConfigurationValueRollup field's value. +func (s *GetReservedInstancesExchangeQuoteOutput) SetTargetConfigurationValueRollup(v *ReservationValue) *GetReservedInstancesExchangeQuoteOutput { + s.TargetConfigurationValueRollup = v + return s +} + +// SetTargetConfigurationValueSet sets the TargetConfigurationValueSet field's value. +func (s *GetReservedInstancesExchangeQuoteOutput) SetTargetConfigurationValueSet(v []*TargetReservationValue) *GetReservedInstancesExchangeQuoteOutput { + s.TargetConfigurationValueSet = v + return s +} + +// SetValidationFailureReason sets the ValidationFailureReason field's value. +func (s *GetReservedInstancesExchangeQuoteOutput) SetValidationFailureReason(v string) *GetReservedInstancesExchangeQuoteOutput { + s.ValidationFailureReason = &v + return s +} + +type GetTransitGatewayAttachmentPropagationsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. The possible values are: + // + // * transit-gateway-route-table-id - The ID of the transit gateway route + // table. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `min:"5" type:"integer"` + + // The token for the next page of results. + NextToken *string `type:"string"` + + // The ID of the attachment. + // + // TransitGatewayAttachmentId is a required field + TransitGatewayAttachmentId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s GetTransitGatewayAttachmentPropagationsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetTransitGatewayAttachmentPropagationsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetTransitGatewayAttachmentPropagationsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetTransitGatewayAttachmentPropagationsInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + if s.TransitGatewayAttachmentId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayAttachmentId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *GetTransitGatewayAttachmentPropagationsInput) SetDryRun(v bool) *GetTransitGatewayAttachmentPropagationsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *GetTransitGatewayAttachmentPropagationsInput) SetFilters(v []*Filter) *GetTransitGatewayAttachmentPropagationsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *GetTransitGatewayAttachmentPropagationsInput) SetMaxResults(v int64) *GetTransitGatewayAttachmentPropagationsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *GetTransitGatewayAttachmentPropagationsInput) SetNextToken(v string) *GetTransitGatewayAttachmentPropagationsInput { + s.NextToken = &v + return s +} + +// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value. +func (s *GetTransitGatewayAttachmentPropagationsInput) SetTransitGatewayAttachmentId(v string) *GetTransitGatewayAttachmentPropagationsInput { + s.TransitGatewayAttachmentId = &v + return s +} + +type GetTransitGatewayAttachmentPropagationsOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the propagation route tables. + TransitGatewayAttachmentPropagations []*TransitGatewayAttachmentPropagation `locationName:"transitGatewayAttachmentPropagations" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s GetTransitGatewayAttachmentPropagationsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetTransitGatewayAttachmentPropagationsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *GetTransitGatewayAttachmentPropagationsOutput) SetNextToken(v string) *GetTransitGatewayAttachmentPropagationsOutput { + s.NextToken = &v + return s +} + +// SetTransitGatewayAttachmentPropagations sets the TransitGatewayAttachmentPropagations field's value. +func (s *GetTransitGatewayAttachmentPropagationsOutput) SetTransitGatewayAttachmentPropagations(v []*TransitGatewayAttachmentPropagation) *GetTransitGatewayAttachmentPropagationsOutput { + s.TransitGatewayAttachmentPropagations = v + return s +} + +type GetTransitGatewayRouteTableAssociationsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. The possible values are: + // + // * resource-id - The ID of the resource. + // + // * resource-type - The resource type (vpc | vpn). + // + // * transit-gateway-attachment-id - The ID of the attachment. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `min:"5" type:"integer"` + + // The token for the next page of results. + NextToken *string `type:"string"` + + // The ID of the transit gateway route table. + // + // TransitGatewayRouteTableId is a required field + TransitGatewayRouteTableId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s GetTransitGatewayRouteTableAssociationsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetTransitGatewayRouteTableAssociationsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetTransitGatewayRouteTableAssociationsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetTransitGatewayRouteTableAssociationsInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + if s.TransitGatewayRouteTableId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayRouteTableId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *GetTransitGatewayRouteTableAssociationsInput) SetDryRun(v bool) *GetTransitGatewayRouteTableAssociationsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *GetTransitGatewayRouteTableAssociationsInput) SetFilters(v []*Filter) *GetTransitGatewayRouteTableAssociationsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *GetTransitGatewayRouteTableAssociationsInput) SetMaxResults(v int64) *GetTransitGatewayRouteTableAssociationsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *GetTransitGatewayRouteTableAssociationsInput) SetNextToken(v string) *GetTransitGatewayRouteTableAssociationsInput { + s.NextToken = &v + return s +} + +// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value. +func (s *GetTransitGatewayRouteTableAssociationsInput) SetTransitGatewayRouteTableId(v string) *GetTransitGatewayRouteTableAssociationsInput { + s.TransitGatewayRouteTableId = &v + return s +} + +type GetTransitGatewayRouteTableAssociationsOutput struct { + _ struct{} `type:"structure"` + + // Information about the associations. + Associations []*TransitGatewayRouteTableAssociation `locationName:"associations" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s GetTransitGatewayRouteTableAssociationsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetTransitGatewayRouteTableAssociationsOutput) GoString() string { + return s.String() +} + +// SetAssociations sets the Associations field's value. +func (s *GetTransitGatewayRouteTableAssociationsOutput) SetAssociations(v []*TransitGatewayRouteTableAssociation) *GetTransitGatewayRouteTableAssociationsOutput { + s.Associations = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *GetTransitGatewayRouteTableAssociationsOutput) SetNextToken(v string) *GetTransitGatewayRouteTableAssociationsOutput { + s.NextToken = &v + return s +} + +type GetTransitGatewayRouteTablePropagationsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. The possible values are: + // + // * resource-id - The ID of the resource. + // + // * resource-type - The resource type (vpc | vpn). + // + // * transit-gateway-attachment-id - The ID of the attachment. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `min:"5" type:"integer"` + + // The token for the next page of results. + NextToken *string `type:"string"` + + // The ID of the transit gateway route table. + // + // TransitGatewayRouteTableId is a required field + TransitGatewayRouteTableId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s GetTransitGatewayRouteTablePropagationsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetTransitGatewayRouteTablePropagationsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetTransitGatewayRouteTablePropagationsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetTransitGatewayRouteTablePropagationsInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + if s.TransitGatewayRouteTableId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayRouteTableId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *GetTransitGatewayRouteTablePropagationsInput) SetDryRun(v bool) *GetTransitGatewayRouteTablePropagationsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *GetTransitGatewayRouteTablePropagationsInput) SetFilters(v []*Filter) *GetTransitGatewayRouteTablePropagationsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *GetTransitGatewayRouteTablePropagationsInput) SetMaxResults(v int64) *GetTransitGatewayRouteTablePropagationsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *GetTransitGatewayRouteTablePropagationsInput) SetNextToken(v string) *GetTransitGatewayRouteTablePropagationsInput { + s.NextToken = &v + return s +} + +// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value. +func (s *GetTransitGatewayRouteTablePropagationsInput) SetTransitGatewayRouteTableId(v string) *GetTransitGatewayRouteTablePropagationsInput { + s.TransitGatewayRouteTableId = &v + return s +} + +type GetTransitGatewayRouteTablePropagationsOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the route table propagations. + TransitGatewayRouteTablePropagations []*TransitGatewayRouteTablePropagation `locationName:"transitGatewayRouteTablePropagations" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s GetTransitGatewayRouteTablePropagationsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetTransitGatewayRouteTablePropagationsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *GetTransitGatewayRouteTablePropagationsOutput) SetNextToken(v string) *GetTransitGatewayRouteTablePropagationsOutput { + s.NextToken = &v + return s +} + +// SetTransitGatewayRouteTablePropagations sets the TransitGatewayRouteTablePropagations field's value. +func (s *GetTransitGatewayRouteTablePropagationsOutput) SetTransitGatewayRouteTablePropagations(v []*TransitGatewayRouteTablePropagation) *GetTransitGatewayRouteTablePropagationsOutput { + s.TransitGatewayRouteTablePropagations = v + return s +} + +// Describes a security group. +type GroupIdentifier struct { + _ struct{} `type:"structure"` + + // The ID of the security group. + GroupId *string `locationName:"groupId" type:"string"` + + // The name of the security group. + GroupName *string `locationName:"groupName" type:"string"` +} + +// String returns the string representation +func (s GroupIdentifier) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GroupIdentifier) GoString() string { + return s.String() +} + +// SetGroupId sets the GroupId field's value. +func (s *GroupIdentifier) SetGroupId(v string) *GroupIdentifier { + s.GroupId = &v + return s +} + +// SetGroupName sets the GroupName field's value. +func (s *GroupIdentifier) SetGroupName(v string) *GroupIdentifier { + s.GroupName = &v + return s +} + +// Indicates whether your instance is configured for hibernation. This parameter +// is valid only if the instance meets the hibernation prerequisites (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites). +// For more information, see Hibernate Your Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html) +// in the Amazon Elastic Compute Cloud User Guide. +type HibernationOptions struct { + _ struct{} `type:"structure"` + + // If this parameter is set to true, your instance is enabled for hibernation; + // otherwise, it is not enabled for hibernation. + Configured *bool `locationName:"configured" type:"boolean"` +} + +// String returns the string representation +func (s HibernationOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s HibernationOptions) GoString() string { + return s.String() +} + +// SetConfigured sets the Configured field's value. +func (s *HibernationOptions) SetConfigured(v bool) *HibernationOptions { + s.Configured = &v + return s +} + +// Indicates whether your instance is configured for hibernation. This parameter +// is valid only if the instance meets the hibernation prerequisites (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites). +// For more information, see Hibernate Your Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html) +// in the Amazon Elastic Compute Cloud User Guide. +type HibernationOptionsRequest struct { + _ struct{} `type:"structure"` + + // If you set this parameter to true, your instance is enabled for hibernation. + // + // Default: false + Configured *bool `type:"boolean"` +} + +// String returns the string representation +func (s HibernationOptionsRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s HibernationOptionsRequest) GoString() string { + return s.String() +} + +// SetConfigured sets the Configured field's value. +func (s *HibernationOptionsRequest) SetConfigured(v bool) *HibernationOptionsRequest { + s.Configured = &v + return s +} + +// Describes an event in the history of the Spot Fleet request. +type HistoryRecord struct { + _ struct{} `type:"structure"` + + // Information about the event. + EventInformation *EventInformation `locationName:"eventInformation" type:"structure"` + + // The event type. + // + // * error - An error with the Spot Fleet request. + // + // * fleetRequestChange - A change in the status or configuration of the + // Spot Fleet request. + // + // * instanceChange - An instance was launched or terminated. + // + // * Information - An informational event. + EventType *string `locationName:"eventType" type:"string" enum:"EventType"` + + // The date and time of the event, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). + Timestamp *time.Time `locationName:"timestamp" type:"timestamp"` +} + +// String returns the string representation +func (s HistoryRecord) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s HistoryRecord) GoString() string { + return s.String() +} + +// SetEventInformation sets the EventInformation field's value. +func (s *HistoryRecord) SetEventInformation(v *EventInformation) *HistoryRecord { + s.EventInformation = v + return s +} + +// SetEventType sets the EventType field's value. +func (s *HistoryRecord) SetEventType(v string) *HistoryRecord { + s.EventType = &v + return s +} + +// SetTimestamp sets the Timestamp field's value. +func (s *HistoryRecord) SetTimestamp(v time.Time) *HistoryRecord { + s.Timestamp = &v + return s +} + +// Describes an event in the history of an EC2 Fleet. +type HistoryRecordEntry struct { + _ struct{} `type:"structure"` + + // Information about the event. + EventInformation *EventInformation `locationName:"eventInformation" type:"structure"` + + // The event type. + EventType *string `locationName:"eventType" type:"string" enum:"FleetEventType"` + + // The date and time of the event, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). + Timestamp *time.Time `locationName:"timestamp" type:"timestamp"` +} + +// String returns the string representation +func (s HistoryRecordEntry) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s HistoryRecordEntry) GoString() string { + return s.String() +} + +// SetEventInformation sets the EventInformation field's value. +func (s *HistoryRecordEntry) SetEventInformation(v *EventInformation) *HistoryRecordEntry { + s.EventInformation = v + return s +} + +// SetEventType sets the EventType field's value. +func (s *HistoryRecordEntry) SetEventType(v string) *HistoryRecordEntry { + s.EventType = &v + return s +} + +// SetTimestamp sets the Timestamp field's value. +func (s *HistoryRecordEntry) SetTimestamp(v time.Time) *HistoryRecordEntry { + s.Timestamp = &v + return s +} + +// Describes the properties of the Dedicated Host. +type Host struct { + _ struct{} `type:"structure"` + + // The time that the Dedicated Host was allocated. + AllocationTime *time.Time `locationName:"allocationTime" type:"timestamp"` + + // Whether auto-placement is on or off. + AutoPlacement *string `locationName:"autoPlacement" type:"string" enum:"AutoPlacement"` + + // The Availability Zone of the Dedicated Host. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // The number of new instances that can be launched onto the Dedicated Host. + AvailableCapacity *AvailableCapacity `locationName:"availableCapacity" type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `locationName:"clientToken" type:"string"` + + // The ID of the Dedicated Host. + HostId *string `locationName:"hostId" type:"string"` + + // The hardware specifications of the Dedicated Host. + HostProperties *HostProperties `locationName:"hostProperties" type:"structure"` + + // Indicates whether host recovery is enabled or disabled for the Dedicated + // Host. + HostRecovery *string `locationName:"hostRecovery" type:"string" enum:"HostRecovery"` + + // The reservation ID of the Dedicated Host. This returns a null response if + // the Dedicated Host doesn't have an associated reservation. + HostReservationId *string `locationName:"hostReservationId" type:"string"` + + // The IDs and instance type that are currently running on the Dedicated Host. + Instances []*HostInstance `locationName:"instances" locationNameList:"item" type:"list"` + + // The time that the Dedicated Host was released. + ReleaseTime *time.Time `locationName:"releaseTime" type:"timestamp"` + + // The Dedicated Host's state. + State *string `locationName:"state" type:"string" enum:"AllocationState"` + + // Any tags assigned to the Dedicated Host. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s Host) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Host) GoString() string { + return s.String() +} + +// SetAllocationTime sets the AllocationTime field's value. +func (s *Host) SetAllocationTime(v time.Time) *Host { + s.AllocationTime = &v + return s +} + +// SetAutoPlacement sets the AutoPlacement field's value. +func (s *Host) SetAutoPlacement(v string) *Host { + s.AutoPlacement = &v + return s +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *Host) SetAvailabilityZone(v string) *Host { + s.AvailabilityZone = &v + return s +} + +// SetAvailableCapacity sets the AvailableCapacity field's value. +func (s *Host) SetAvailableCapacity(v *AvailableCapacity) *Host { + s.AvailableCapacity = v + return s +} + +// SetClientToken sets the ClientToken field's value. +func (s *Host) SetClientToken(v string) *Host { + s.ClientToken = &v + return s +} + +// SetHostId sets the HostId field's value. +func (s *Host) SetHostId(v string) *Host { + s.HostId = &v + return s +} + +// SetHostProperties sets the HostProperties field's value. +func (s *Host) SetHostProperties(v *HostProperties) *Host { + s.HostProperties = v + return s +} + +// SetHostRecovery sets the HostRecovery field's value. +func (s *Host) SetHostRecovery(v string) *Host { + s.HostRecovery = &v + return s +} + +// SetHostReservationId sets the HostReservationId field's value. +func (s *Host) SetHostReservationId(v string) *Host { + s.HostReservationId = &v + return s +} + +// SetInstances sets the Instances field's value. +func (s *Host) SetInstances(v []*HostInstance) *Host { + s.Instances = v + return s +} + +// SetReleaseTime sets the ReleaseTime field's value. +func (s *Host) SetReleaseTime(v time.Time) *Host { + s.ReleaseTime = &v + return s +} + +// SetState sets the State field's value. +func (s *Host) SetState(v string) *Host { + s.State = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *Host) SetTags(v []*Tag) *Host { + s.Tags = v + return s +} + +// Describes an instance running on a Dedicated Host. +type HostInstance struct { + _ struct{} `type:"structure"` + + // the IDs of instances that are running on the Dedicated Host. + InstanceId *string `locationName:"instanceId" type:"string"` + + // The instance type size (for example, m3.medium) of the running instance. + InstanceType *string `locationName:"instanceType" type:"string"` +} + +// String returns the string representation +func (s HostInstance) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s HostInstance) GoString() string { + return s.String() +} + +// SetInstanceId sets the InstanceId field's value. +func (s *HostInstance) SetInstanceId(v string) *HostInstance { + s.InstanceId = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *HostInstance) SetInstanceType(v string) *HostInstance { + s.InstanceType = &v + return s +} + +// Details about the Dedicated Host Reservation offering. +type HostOffering struct { + _ struct{} `type:"structure"` + + // The currency of the offering. + CurrencyCode *string `locationName:"currencyCode" type:"string" enum:"CurrencyCodeValues"` + + // The duration of the offering (in seconds). + Duration *int64 `locationName:"duration" type:"integer"` + + // The hourly price of the offering. + HourlyPrice *string `locationName:"hourlyPrice" type:"string"` + + // The instance family of the offering. + InstanceFamily *string `locationName:"instanceFamily" type:"string"` + + // The ID of the offering. + OfferingId *string `locationName:"offeringId" type:"string"` + + // The available payment option. + PaymentOption *string `locationName:"paymentOption" type:"string" enum:"PaymentOption"` + + // The upfront price of the offering. Does not apply to No Upfront offerings. + UpfrontPrice *string `locationName:"upfrontPrice" type:"string"` +} + +// String returns the string representation +func (s HostOffering) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s HostOffering) GoString() string { + return s.String() +} + +// SetCurrencyCode sets the CurrencyCode field's value. +func (s *HostOffering) SetCurrencyCode(v string) *HostOffering { + s.CurrencyCode = &v + return s +} + +// SetDuration sets the Duration field's value. +func (s *HostOffering) SetDuration(v int64) *HostOffering { + s.Duration = &v + return s +} + +// SetHourlyPrice sets the HourlyPrice field's value. +func (s *HostOffering) SetHourlyPrice(v string) *HostOffering { + s.HourlyPrice = &v + return s +} + +// SetInstanceFamily sets the InstanceFamily field's value. +func (s *HostOffering) SetInstanceFamily(v string) *HostOffering { + s.InstanceFamily = &v + return s +} + +// SetOfferingId sets the OfferingId field's value. +func (s *HostOffering) SetOfferingId(v string) *HostOffering { + s.OfferingId = &v + return s +} + +// SetPaymentOption sets the PaymentOption field's value. +func (s *HostOffering) SetPaymentOption(v string) *HostOffering { + s.PaymentOption = &v + return s +} + +// SetUpfrontPrice sets the UpfrontPrice field's value. +func (s *HostOffering) SetUpfrontPrice(v string) *HostOffering { + s.UpfrontPrice = &v + return s +} + +// Describes properties of a Dedicated Host. +type HostProperties struct { + _ struct{} `type:"structure"` + + // The number of cores on the Dedicated Host. + Cores *int64 `locationName:"cores" type:"integer"` + + // The instance type size that the Dedicated Host supports (for example, m3.medium). + InstanceType *string `locationName:"instanceType" type:"string"` + + // The number of sockets on the Dedicated Host. + Sockets *int64 `locationName:"sockets" type:"integer"` + + // The number of vCPUs on the Dedicated Host. + TotalVCpus *int64 `locationName:"totalVCpus" type:"integer"` +} + +// String returns the string representation +func (s HostProperties) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s HostProperties) GoString() string { + return s.String() +} + +// SetCores sets the Cores field's value. +func (s *HostProperties) SetCores(v int64) *HostProperties { + s.Cores = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *HostProperties) SetInstanceType(v string) *HostProperties { + s.InstanceType = &v + return s +} + +// SetSockets sets the Sockets field's value. +func (s *HostProperties) SetSockets(v int64) *HostProperties { + s.Sockets = &v + return s +} + +// SetTotalVCpus sets the TotalVCpus field's value. +func (s *HostProperties) SetTotalVCpus(v int64) *HostProperties { + s.TotalVCpus = &v + return s +} + +// Details about the Dedicated Host Reservation and associated Dedicated Hosts. +type HostReservation struct { + _ struct{} `type:"structure"` + + // The number of Dedicated Hosts the reservation is associated with. + Count *int64 `locationName:"count" type:"integer"` + + // The currency in which the upfrontPrice and hourlyPrice amounts are specified. + // At this time, the only supported currency is USD. + CurrencyCode *string `locationName:"currencyCode" type:"string" enum:"CurrencyCodeValues"` + + // The length of the reservation's term, specified in seconds. Can be 31536000 + // (1 year) | 94608000 (3 years). + Duration *int64 `locationName:"duration" type:"integer"` + + // The date and time that the reservation ends. + End *time.Time `locationName:"end" type:"timestamp"` + + // The IDs of the Dedicated Hosts associated with the reservation. + HostIdSet []*string `locationName:"hostIdSet" locationNameList:"item" type:"list"` + + // The ID of the reservation that specifies the associated Dedicated Hosts. + HostReservationId *string `locationName:"hostReservationId" type:"string"` + + // The hourly price of the reservation. + HourlyPrice *string `locationName:"hourlyPrice" type:"string"` + + // The instance family of the Dedicated Host Reservation. The instance family + // on the Dedicated Host must be the same in order for it to benefit from the + // reservation. + InstanceFamily *string `locationName:"instanceFamily" type:"string"` + + // The ID of the reservation. This remains the same regardless of which Dedicated + // Hosts are associated with it. + OfferingId *string `locationName:"offeringId" type:"string"` + + // The payment option selected for this reservation. + PaymentOption *string `locationName:"paymentOption" type:"string" enum:"PaymentOption"` + + // The date and time that the reservation started. + Start *time.Time `locationName:"start" type:"timestamp"` + + // The state of the reservation. + State *string `locationName:"state" type:"string" enum:"ReservationState"` + + // Any tags assigned to the Dedicated Host Reservation. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The upfront price of the reservation. + UpfrontPrice *string `locationName:"upfrontPrice" type:"string"` +} + +// String returns the string representation +func (s HostReservation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s HostReservation) GoString() string { + return s.String() +} + +// SetCount sets the Count field's value. +func (s *HostReservation) SetCount(v int64) *HostReservation { + s.Count = &v + return s +} + +// SetCurrencyCode sets the CurrencyCode field's value. +func (s *HostReservation) SetCurrencyCode(v string) *HostReservation { + s.CurrencyCode = &v + return s +} + +// SetDuration sets the Duration field's value. +func (s *HostReservation) SetDuration(v int64) *HostReservation { + s.Duration = &v + return s +} + +// SetEnd sets the End field's value. +func (s *HostReservation) SetEnd(v time.Time) *HostReservation { + s.End = &v + return s +} + +// SetHostIdSet sets the HostIdSet field's value. +func (s *HostReservation) SetHostIdSet(v []*string) *HostReservation { + s.HostIdSet = v + return s +} + +// SetHostReservationId sets the HostReservationId field's value. +func (s *HostReservation) SetHostReservationId(v string) *HostReservation { + s.HostReservationId = &v + return s +} + +// SetHourlyPrice sets the HourlyPrice field's value. +func (s *HostReservation) SetHourlyPrice(v string) *HostReservation { + s.HourlyPrice = &v + return s +} + +// SetInstanceFamily sets the InstanceFamily field's value. +func (s *HostReservation) SetInstanceFamily(v string) *HostReservation { + s.InstanceFamily = &v + return s +} + +// SetOfferingId sets the OfferingId field's value. +func (s *HostReservation) SetOfferingId(v string) *HostReservation { + s.OfferingId = &v + return s +} + +// SetPaymentOption sets the PaymentOption field's value. +func (s *HostReservation) SetPaymentOption(v string) *HostReservation { + s.PaymentOption = &v + return s +} + +// SetStart sets the Start field's value. +func (s *HostReservation) SetStart(v time.Time) *HostReservation { + s.Start = &v + return s +} + +// SetState sets the State field's value. +func (s *HostReservation) SetState(v string) *HostReservation { + s.State = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *HostReservation) SetTags(v []*Tag) *HostReservation { + s.Tags = v + return s +} + +// SetUpfrontPrice sets the UpfrontPrice field's value. +func (s *HostReservation) SetUpfrontPrice(v string) *HostReservation { + s.UpfrontPrice = &v + return s +} + +// The internet key exchange (IKE) version permitted for the VPN tunnel. +type IKEVersionsListValue struct { + _ struct{} `type:"structure"` + + // The IKE version. + Value *string `locationName:"value" type:"string"` +} + +// String returns the string representation +func (s IKEVersionsListValue) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s IKEVersionsListValue) GoString() string { + return s.String() +} + +// SetValue sets the Value field's value. +func (s *IKEVersionsListValue) SetValue(v string) *IKEVersionsListValue { + s.Value = &v + return s +} + +// The IKE version that is permitted for the VPN tunnel. +type IKEVersionsRequestListValue struct { + _ struct{} `type:"structure"` + + // The IKE version. + Value *string `type:"string"` +} + +// String returns the string representation +func (s IKEVersionsRequestListValue) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s IKEVersionsRequestListValue) GoString() string { + return s.String() +} + +// SetValue sets the Value field's value. +func (s *IKEVersionsRequestListValue) SetValue(v string) *IKEVersionsRequestListValue { + s.Value = &v + return s +} + +// Describes an IAM instance profile. +type IamInstanceProfile struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the instance profile. + Arn *string `locationName:"arn" type:"string"` + + // The ID of the instance profile. + Id *string `locationName:"id" type:"string"` +} + +// String returns the string representation +func (s IamInstanceProfile) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s IamInstanceProfile) GoString() string { + return s.String() +} + +// SetArn sets the Arn field's value. +func (s *IamInstanceProfile) SetArn(v string) *IamInstanceProfile { + s.Arn = &v + return s +} + +// SetId sets the Id field's value. +func (s *IamInstanceProfile) SetId(v string) *IamInstanceProfile { + s.Id = &v + return s +} + +// Describes an association between an IAM instance profile and an instance. +type IamInstanceProfileAssociation struct { + _ struct{} `type:"structure"` + + // The ID of the association. + AssociationId *string `locationName:"associationId" type:"string"` + + // The IAM instance profile. + IamInstanceProfile *IamInstanceProfile `locationName:"iamInstanceProfile" type:"structure"` + + // The ID of the instance. + InstanceId *string `locationName:"instanceId" type:"string"` + + // The state of the association. + State *string `locationName:"state" type:"string" enum:"IamInstanceProfileAssociationState"` + + // The time the IAM instance profile was associated with the instance. + Timestamp *time.Time `locationName:"timestamp" type:"timestamp"` +} + +// String returns the string representation +func (s IamInstanceProfileAssociation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s IamInstanceProfileAssociation) GoString() string { + return s.String() +} + +// SetAssociationId sets the AssociationId field's value. +func (s *IamInstanceProfileAssociation) SetAssociationId(v string) *IamInstanceProfileAssociation { + s.AssociationId = &v + return s +} + +// SetIamInstanceProfile sets the IamInstanceProfile field's value. +func (s *IamInstanceProfileAssociation) SetIamInstanceProfile(v *IamInstanceProfile) *IamInstanceProfileAssociation { + s.IamInstanceProfile = v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *IamInstanceProfileAssociation) SetInstanceId(v string) *IamInstanceProfileAssociation { + s.InstanceId = &v + return s +} + +// SetState sets the State field's value. +func (s *IamInstanceProfileAssociation) SetState(v string) *IamInstanceProfileAssociation { + s.State = &v + return s +} + +// SetTimestamp sets the Timestamp field's value. +func (s *IamInstanceProfileAssociation) SetTimestamp(v time.Time) *IamInstanceProfileAssociation { + s.Timestamp = &v + return s +} + +// Describes an IAM instance profile. +type IamInstanceProfileSpecification struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the instance profile. + Arn *string `locationName:"arn" type:"string"` + + // The name of the instance profile. + Name *string `locationName:"name" type:"string"` +} + +// String returns the string representation +func (s IamInstanceProfileSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s IamInstanceProfileSpecification) GoString() string { + return s.String() +} + +// SetArn sets the Arn field's value. +func (s *IamInstanceProfileSpecification) SetArn(v string) *IamInstanceProfileSpecification { + s.Arn = &v + return s +} + +// SetName sets the Name field's value. +func (s *IamInstanceProfileSpecification) SetName(v string) *IamInstanceProfileSpecification { + s.Name = &v + return s +} + +// Describes the ICMP type and code. +type IcmpTypeCode struct { + _ struct{} `type:"structure"` + + // The ICMP code. A value of -1 means all codes for the specified ICMP type. + Code *int64 `locationName:"code" type:"integer"` + + // The ICMP type. A value of -1 means all types. + Type *int64 `locationName:"type" type:"integer"` +} + +// String returns the string representation +func (s IcmpTypeCode) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s IcmpTypeCode) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *IcmpTypeCode) SetCode(v int64) *IcmpTypeCode { + s.Code = &v + return s +} + +// SetType sets the Type field's value. +func (s *IcmpTypeCode) SetType(v int64) *IcmpTypeCode { + s.Type = &v + return s +} + +// Describes the ID format for a resource. +type IdFormat struct { + _ struct{} `type:"structure"` + + // The date in UTC at which you are permanently switched over to using longer + // IDs. If a deadline is not yet available for this resource type, this field + // is not returned. + Deadline *time.Time `locationName:"deadline" type:"timestamp"` + + // The type of resource. + Resource *string `locationName:"resource" type:"string"` + + // Indicates whether longer IDs (17-character IDs) are enabled for the resource. + UseLongIds *bool `locationName:"useLongIds" type:"boolean"` +} + +// String returns the string representation +func (s IdFormat) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s IdFormat) GoString() string { + return s.String() +} + +// SetDeadline sets the Deadline field's value. +func (s *IdFormat) SetDeadline(v time.Time) *IdFormat { + s.Deadline = &v + return s +} + +// SetResource sets the Resource field's value. +func (s *IdFormat) SetResource(v string) *IdFormat { + s.Resource = &v + return s +} + +// SetUseLongIds sets the UseLongIds field's value. +func (s *IdFormat) SetUseLongIds(v bool) *IdFormat { + s.UseLongIds = &v + return s +} + +// Describes an image. +type Image struct { + _ struct{} `type:"structure"` + + // The architecture of the image. + Architecture *string `locationName:"architecture" type:"string" enum:"ArchitectureValues"` + + // Any block device mapping entries. + BlockDeviceMappings []*BlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"` + + // The date and time the image was created. + CreationDate *string `locationName:"creationDate" type:"string"` + + // The description of the AMI that was provided during image creation. + Description *string `locationName:"description" type:"string"` + + // Specifies whether enhanced networking with ENA is enabled. + EnaSupport *bool `locationName:"enaSupport" type:"boolean"` + + // The hypervisor type of the image. + Hypervisor *string `locationName:"hypervisor" type:"string" enum:"HypervisorType"` + + // The ID of the AMI. + ImageId *string `locationName:"imageId" type:"string"` + + // The location of the AMI. + ImageLocation *string `locationName:"imageLocation" type:"string"` + + // The AWS account alias (for example, amazon, self) or the AWS account ID of + // the AMI owner. + ImageOwnerAlias *string `locationName:"imageOwnerAlias" type:"string"` + + // The type of image. + ImageType *string `locationName:"imageType" type:"string" enum:"ImageTypeValues"` + + // The kernel associated with the image, if any. Only applicable for machine + // images. + KernelId *string `locationName:"kernelId" type:"string"` + + // The name of the AMI that was provided during image creation. + Name *string `locationName:"name" type:"string"` + + // The AWS account ID of the image owner. + OwnerId *string `locationName:"imageOwnerId" type:"string"` + + // This value is set to windows for Windows AMIs; otherwise, it is blank. + Platform *string `locationName:"platform" type:"string" enum:"PlatformValues"` + + // Any product codes associated with the AMI. + ProductCodes []*ProductCode `locationName:"productCodes" locationNameList:"item" type:"list"` + + // Indicates whether the image has public launch permissions. The value is true + // if this image has public launch permissions or false if it has only implicit + // and explicit launch permissions. + Public *bool `locationName:"isPublic" type:"boolean"` + + // The RAM disk associated with the image, if any. Only applicable for machine + // images. + RamdiskId *string `locationName:"ramdiskId" type:"string"` + + // The device name of the root device volume (for example, /dev/sda1). + RootDeviceName *string `locationName:"rootDeviceName" type:"string"` + + // The type of root device used by the AMI. The AMI can use an EBS volume or + // an instance store volume. + RootDeviceType *string `locationName:"rootDeviceType" type:"string" enum:"DeviceType"` + + // Specifies whether enhanced networking with the Intel 82599 Virtual Function + // interface is enabled. + SriovNetSupport *string `locationName:"sriovNetSupport" type:"string"` + + // The current state of the AMI. If the state is available, the image is successfully + // registered and can be used to launch an instance. + State *string `locationName:"imageState" type:"string" enum:"ImageState"` + + // The reason for the state change. + StateReason *StateReason `locationName:"stateReason" type:"structure"` + + // Any tags assigned to the image. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The type of virtualization of the AMI. + VirtualizationType *string `locationName:"virtualizationType" type:"string" enum:"VirtualizationType"` +} + +// String returns the string representation +func (s Image) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Image) GoString() string { + return s.String() +} + +// SetArchitecture sets the Architecture field's value. +func (s *Image) SetArchitecture(v string) *Image { + s.Architecture = &v + return s +} + +// SetBlockDeviceMappings sets the BlockDeviceMappings field's value. +func (s *Image) SetBlockDeviceMappings(v []*BlockDeviceMapping) *Image { + s.BlockDeviceMappings = v + return s +} + +// SetCreationDate sets the CreationDate field's value. +func (s *Image) SetCreationDate(v string) *Image { + s.CreationDate = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *Image) SetDescription(v string) *Image { + s.Description = &v + return s +} + +// SetEnaSupport sets the EnaSupport field's value. +func (s *Image) SetEnaSupport(v bool) *Image { + s.EnaSupport = &v + return s +} + +// SetHypervisor sets the Hypervisor field's value. +func (s *Image) SetHypervisor(v string) *Image { + s.Hypervisor = &v + return s +} + +// SetImageId sets the ImageId field's value. +func (s *Image) SetImageId(v string) *Image { + s.ImageId = &v + return s +} + +// SetImageLocation sets the ImageLocation field's value. +func (s *Image) SetImageLocation(v string) *Image { + s.ImageLocation = &v + return s +} + +// SetImageOwnerAlias sets the ImageOwnerAlias field's value. +func (s *Image) SetImageOwnerAlias(v string) *Image { + s.ImageOwnerAlias = &v + return s +} + +// SetImageType sets the ImageType field's value. +func (s *Image) SetImageType(v string) *Image { + s.ImageType = &v + return s +} + +// SetKernelId sets the KernelId field's value. +func (s *Image) SetKernelId(v string) *Image { + s.KernelId = &v + return s +} + +// SetName sets the Name field's value. +func (s *Image) SetName(v string) *Image { + s.Name = &v + return s +} + +// SetOwnerId sets the OwnerId field's value. +func (s *Image) SetOwnerId(v string) *Image { + s.OwnerId = &v + return s +} + +// SetPlatform sets the Platform field's value. +func (s *Image) SetPlatform(v string) *Image { + s.Platform = &v + return s +} + +// SetProductCodes sets the ProductCodes field's value. +func (s *Image) SetProductCodes(v []*ProductCode) *Image { + s.ProductCodes = v + return s +} + +// SetPublic sets the Public field's value. +func (s *Image) SetPublic(v bool) *Image { + s.Public = &v + return s +} + +// SetRamdiskId sets the RamdiskId field's value. +func (s *Image) SetRamdiskId(v string) *Image { + s.RamdiskId = &v + return s +} + +// SetRootDeviceName sets the RootDeviceName field's value. +func (s *Image) SetRootDeviceName(v string) *Image { + s.RootDeviceName = &v + return s +} + +// SetRootDeviceType sets the RootDeviceType field's value. +func (s *Image) SetRootDeviceType(v string) *Image { + s.RootDeviceType = &v + return s +} + +// SetSriovNetSupport sets the SriovNetSupport field's value. +func (s *Image) SetSriovNetSupport(v string) *Image { + s.SriovNetSupport = &v + return s +} + +// SetState sets the State field's value. +func (s *Image) SetState(v string) *Image { + s.State = &v + return s +} + +// SetStateReason sets the StateReason field's value. +func (s *Image) SetStateReason(v *StateReason) *Image { + s.StateReason = v + return s +} + +// SetTags sets the Tags field's value. +func (s *Image) SetTags(v []*Tag) *Image { + s.Tags = v + return s +} + +// SetVirtualizationType sets the VirtualizationType field's value. +func (s *Image) SetVirtualizationType(v string) *Image { + s.VirtualizationType = &v + return s +} + +// Describes the disk container object for an import image task. +type ImageDiskContainer struct { + _ struct{} `type:"structure"` + + // The description of the disk image. + Description *string `type:"string"` + + // The block device mapping for the disk. + DeviceName *string `type:"string"` + + // The format of the disk image being imported. + // + // Valid values: VHD | VMDK | OVA + Format *string `type:"string"` + + // The ID of the EBS snapshot to be used for importing the snapshot. + SnapshotId *string `type:"string"` + + // The URL to the Amazon S3-based disk image being imported. The URL can either + // be a https URL (https://..) or an Amazon S3 URL (s3://..) + Url *string `type:"string"` + + // The S3 bucket for the disk image. + UserBucket *UserBucket `type:"structure"` +} + +// String returns the string representation +func (s ImageDiskContainer) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ImageDiskContainer) GoString() string { + return s.String() +} + +// SetDescription sets the Description field's value. +func (s *ImageDiskContainer) SetDescription(v string) *ImageDiskContainer { + s.Description = &v + return s +} + +// SetDeviceName sets the DeviceName field's value. +func (s *ImageDiskContainer) SetDeviceName(v string) *ImageDiskContainer { + s.DeviceName = &v + return s +} + +// SetFormat sets the Format field's value. +func (s *ImageDiskContainer) SetFormat(v string) *ImageDiskContainer { + s.Format = &v + return s +} + +// SetSnapshotId sets the SnapshotId field's value. +func (s *ImageDiskContainer) SetSnapshotId(v string) *ImageDiskContainer { + s.SnapshotId = &v + return s +} + +// SetUrl sets the Url field's value. +func (s *ImageDiskContainer) SetUrl(v string) *ImageDiskContainer { + s.Url = &v + return s +} + +// SetUserBucket sets the UserBucket field's value. +func (s *ImageDiskContainer) SetUserBucket(v *UserBucket) *ImageDiskContainer { + s.UserBucket = v + return s +} + +type ImportClientVpnClientCertificateRevocationListInput struct { + _ struct{} `type:"structure"` + + // The client certificate revocation list file. For more information, see Generate + // a Client Certificate Revocation List (https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/cvpn-working-certificates.html#cvpn-working-certificates-generate) + // in the AWS Client VPN Administrator Guide. + // + // CertificateRevocationList is a required field + CertificateRevocationList *string `type:"string" required:"true"` + + // The ID of the Client VPN endpoint to which the client certificate revocation + // list applies. + // + // ClientVpnEndpointId is a required field + ClientVpnEndpointId *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s ImportClientVpnClientCertificateRevocationListInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ImportClientVpnClientCertificateRevocationListInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ImportClientVpnClientCertificateRevocationListInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ImportClientVpnClientCertificateRevocationListInput"} + if s.CertificateRevocationList == nil { + invalidParams.Add(request.NewErrParamRequired("CertificateRevocationList")) + } + if s.ClientVpnEndpointId == nil { + invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCertificateRevocationList sets the CertificateRevocationList field's value. +func (s *ImportClientVpnClientCertificateRevocationListInput) SetCertificateRevocationList(v string) *ImportClientVpnClientCertificateRevocationListInput { + s.CertificateRevocationList = &v + return s +} + +// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value. +func (s *ImportClientVpnClientCertificateRevocationListInput) SetClientVpnEndpointId(v string) *ImportClientVpnClientCertificateRevocationListInput { + s.ClientVpnEndpointId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ImportClientVpnClientCertificateRevocationListInput) SetDryRun(v bool) *ImportClientVpnClientCertificateRevocationListInput { + s.DryRun = &v + return s +} + +type ImportClientVpnClientCertificateRevocationListOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, it returns an error. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s ImportClientVpnClientCertificateRevocationListOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ImportClientVpnClientCertificateRevocationListOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *ImportClientVpnClientCertificateRevocationListOutput) SetReturn(v bool) *ImportClientVpnClientCertificateRevocationListOutput { + s.Return = &v + return s +} + +type ImportImageInput struct { + _ struct{} `type:"structure"` + + // The architecture of the virtual machine. + // + // Valid values: i386 | x86_64 | arm64 + Architecture *string `type:"string"` + + // The client-specific data. + ClientData *ClientData `type:"structure"` + + // The token to enable idempotency for VM import requests. + ClientToken *string `type:"string"` + + // A description string for the import image task. + Description *string `type:"string"` + + // Information about the disk containers. + DiskContainers []*ImageDiskContainer `locationName:"DiskContainer" locationNameList:"item" type:"list"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // Specifies whether the destination AMI of the imported image should be encrypted. + // The default CMK for EBS is used unless you specify a non-default AWS Key + // Management Service (AWS KMS) CMK using KmsKeyId. For more information, see + // Amazon EBS Encryption (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) + // in the Amazon Elastic Compute Cloud User Guide. + Encrypted *bool `type:"boolean"` + + // The target hypervisor platform. + // + // Valid values: xen + Hypervisor *string `type:"string"` + + // An identifier for the AWS Key Management Service (AWS KMS) customer master + // key (CMK) to use when creating the encrypted AMI. This parameter is only + // required if you want to use a non-default CMK; if this parameter is not specified, + // the default CMK for EBS is used. If a KmsKeyId is specified, the Encrypted + // flag must also be set. + // + // The CMK identifier may be provided in any of the following formats: + // + // * Key ID + // + // * Key alias. The alias ARN contains the arn:aws:kms namespace, followed + // by the Region of the CMK, the AWS account ID of the CMK owner, the alias + // namespace, and then the CMK alias. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias. + // + // * ARN using key ID. The ID ARN contains the arn:aws:kms namespace, followed + // by the Region of the CMK, the AWS account ID of the CMK owner, the key + // namespace, and then the CMK ID. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. + // + // * ARN using key alias. The alias ARN contains the arn:aws:kms namespace, + // followed by the Region of the CMK, the AWS account ID of the CMK owner, + // the alias namespace, and then the CMK alias. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias. + // + // AWS parses KmsKeyId asynchronously, meaning that the action you call may + // appear to complete even though you provided an invalid identifier. This action + // will eventually report failure. + // + // The specified CMK must exist in the Region that the AMI is being copied to. + KmsKeyId *string `type:"string"` + + // The license type to be used for the Amazon Machine Image (AMI) after importing. + // + // By default, we detect the source-system operating system (OS) and apply the + // appropriate license. Specify AWS to replace the source-system license with + // an AWS license, if appropriate. Specify BYOL to retain the source-system + // license, if appropriate. + // + // To use BYOL, you must have existing licenses with rights to use these licenses + // in a third party cloud, such as AWS. For more information, see Prerequisites + // (https://docs.aws.amazon.com/vm-import/latest/userguide/vmimport-image-import.html#prerequisites-image) + // in the VM Import/Export User Guide. + LicenseType *string `type:"string"` + + // The operating system of the virtual machine. + // + // Valid values: Windows | Linux + Platform *string `type:"string"` + + // The name of the role to use when not using the default role, 'vmimport'. + RoleName *string `type:"string"` +} + +// String returns the string representation +func (s ImportImageInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ImportImageInput) GoString() string { + return s.String() +} + +// SetArchitecture sets the Architecture field's value. +func (s *ImportImageInput) SetArchitecture(v string) *ImportImageInput { + s.Architecture = &v + return s +} + +// SetClientData sets the ClientData field's value. +func (s *ImportImageInput) SetClientData(v *ClientData) *ImportImageInput { + s.ClientData = v + return s +} + +// SetClientToken sets the ClientToken field's value. +func (s *ImportImageInput) SetClientToken(v string) *ImportImageInput { + s.ClientToken = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *ImportImageInput) SetDescription(v string) *ImportImageInput { + s.Description = &v + return s +} + +// SetDiskContainers sets the DiskContainers field's value. +func (s *ImportImageInput) SetDiskContainers(v []*ImageDiskContainer) *ImportImageInput { + s.DiskContainers = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ImportImageInput) SetDryRun(v bool) *ImportImageInput { + s.DryRun = &v + return s +} + +// SetEncrypted sets the Encrypted field's value. +func (s *ImportImageInput) SetEncrypted(v bool) *ImportImageInput { + s.Encrypted = &v + return s +} + +// SetHypervisor sets the Hypervisor field's value. +func (s *ImportImageInput) SetHypervisor(v string) *ImportImageInput { + s.Hypervisor = &v + return s +} + +// SetKmsKeyId sets the KmsKeyId field's value. +func (s *ImportImageInput) SetKmsKeyId(v string) *ImportImageInput { + s.KmsKeyId = &v + return s +} + +// SetLicenseType sets the LicenseType field's value. +func (s *ImportImageInput) SetLicenseType(v string) *ImportImageInput { + s.LicenseType = &v + return s +} + +// SetPlatform sets the Platform field's value. +func (s *ImportImageInput) SetPlatform(v string) *ImportImageInput { + s.Platform = &v + return s +} + +// SetRoleName sets the RoleName field's value. +func (s *ImportImageInput) SetRoleName(v string) *ImportImageInput { + s.RoleName = &v + return s +} + +type ImportImageOutput struct { + _ struct{} `type:"structure"` + + // The architecture of the virtual machine. + Architecture *string `locationName:"architecture" type:"string"` + + // A description of the import task. + Description *string `locationName:"description" type:"string"` + + // Indicates whether the AMI is encypted. + Encrypted *bool `locationName:"encrypted" type:"boolean"` + + // The target hypervisor of the import task. + Hypervisor *string `locationName:"hypervisor" type:"string"` + + // The ID of the Amazon Machine Image (AMI) created by the import task. + ImageId *string `locationName:"imageId" type:"string"` + + // The task ID of the import image task. + ImportTaskId *string `locationName:"importTaskId" type:"string"` + + // The identifier for the AWS Key Management Service (AWS KMS) customer master + // key (CMK) that was used to create the encrypted AMI. + KmsKeyId *string `locationName:"kmsKeyId" type:"string"` + + // The license type of the virtual machine. + LicenseType *string `locationName:"licenseType" type:"string"` + + // The operating system of the virtual machine. + Platform *string `locationName:"platform" type:"string"` + + // The progress of the task. + Progress *string `locationName:"progress" type:"string"` + + // Information about the snapshots. + SnapshotDetails []*SnapshotDetail `locationName:"snapshotDetailSet" locationNameList:"item" type:"list"` + + // A brief status of the task. + Status *string `locationName:"status" type:"string"` + + // A detailed status message of the import task. + StatusMessage *string `locationName:"statusMessage" type:"string"` +} + +// String returns the string representation +func (s ImportImageOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ImportImageOutput) GoString() string { + return s.String() +} + +// SetArchitecture sets the Architecture field's value. +func (s *ImportImageOutput) SetArchitecture(v string) *ImportImageOutput { + s.Architecture = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *ImportImageOutput) SetDescription(v string) *ImportImageOutput { + s.Description = &v + return s +} + +// SetEncrypted sets the Encrypted field's value. +func (s *ImportImageOutput) SetEncrypted(v bool) *ImportImageOutput { + s.Encrypted = &v + return s +} + +// SetHypervisor sets the Hypervisor field's value. +func (s *ImportImageOutput) SetHypervisor(v string) *ImportImageOutput { + s.Hypervisor = &v + return s +} + +// SetImageId sets the ImageId field's value. +func (s *ImportImageOutput) SetImageId(v string) *ImportImageOutput { + s.ImageId = &v + return s +} + +// SetImportTaskId sets the ImportTaskId field's value. +func (s *ImportImageOutput) SetImportTaskId(v string) *ImportImageOutput { + s.ImportTaskId = &v + return s +} + +// SetKmsKeyId sets the KmsKeyId field's value. +func (s *ImportImageOutput) SetKmsKeyId(v string) *ImportImageOutput { + s.KmsKeyId = &v + return s +} + +// SetLicenseType sets the LicenseType field's value. +func (s *ImportImageOutput) SetLicenseType(v string) *ImportImageOutput { + s.LicenseType = &v + return s +} + +// SetPlatform sets the Platform field's value. +func (s *ImportImageOutput) SetPlatform(v string) *ImportImageOutput { + s.Platform = &v + return s +} + +// SetProgress sets the Progress field's value. +func (s *ImportImageOutput) SetProgress(v string) *ImportImageOutput { + s.Progress = &v + return s +} + +// SetSnapshotDetails sets the SnapshotDetails field's value. +func (s *ImportImageOutput) SetSnapshotDetails(v []*SnapshotDetail) *ImportImageOutput { + s.SnapshotDetails = v + return s +} + +// SetStatus sets the Status field's value. +func (s *ImportImageOutput) SetStatus(v string) *ImportImageOutput { + s.Status = &v + return s +} + +// SetStatusMessage sets the StatusMessage field's value. +func (s *ImportImageOutput) SetStatusMessage(v string) *ImportImageOutput { + s.StatusMessage = &v + return s +} + +// Describes an import image task. +type ImportImageTask struct { + _ struct{} `type:"structure"` + + // The architecture of the virtual machine. + // + // Valid values: i386 | x86_64 | arm64 + Architecture *string `locationName:"architecture" type:"string"` + + // A description of the import task. + Description *string `locationName:"description" type:"string"` + + // Indicates whether the image is encrypted. + Encrypted *bool `locationName:"encrypted" type:"boolean"` + + // The target hypervisor for the import task. + // + // Valid values: xen + Hypervisor *string `locationName:"hypervisor" type:"string"` + + // The ID of the Amazon Machine Image (AMI) of the imported virtual machine. + ImageId *string `locationName:"imageId" type:"string"` + + // The ID of the import image task. + ImportTaskId *string `locationName:"importTaskId" type:"string"` + + // The identifier for the AWS Key Management Service (AWS KMS) customer master + // key (CMK) that was used to create the encrypted image. + KmsKeyId *string `locationName:"kmsKeyId" type:"string"` + + // The license type of the virtual machine. + LicenseType *string `locationName:"licenseType" type:"string"` + + // The description string for the import image task. + Platform *string `locationName:"platform" type:"string"` + + // The percentage of progress of the import image task. + Progress *string `locationName:"progress" type:"string"` + + // Information about the snapshots. + SnapshotDetails []*SnapshotDetail `locationName:"snapshotDetailSet" locationNameList:"item" type:"list"` + + // A brief status for the import image task. + Status *string `locationName:"status" type:"string"` + + // A descriptive status message for the import image task. + StatusMessage *string `locationName:"statusMessage" type:"string"` +} + +// String returns the string representation +func (s ImportImageTask) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ImportImageTask) GoString() string { + return s.String() +} + +// SetArchitecture sets the Architecture field's value. +func (s *ImportImageTask) SetArchitecture(v string) *ImportImageTask { + s.Architecture = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *ImportImageTask) SetDescription(v string) *ImportImageTask { + s.Description = &v + return s +} + +// SetEncrypted sets the Encrypted field's value. +func (s *ImportImageTask) SetEncrypted(v bool) *ImportImageTask { + s.Encrypted = &v + return s +} + +// SetHypervisor sets the Hypervisor field's value. +func (s *ImportImageTask) SetHypervisor(v string) *ImportImageTask { + s.Hypervisor = &v + return s +} + +// SetImageId sets the ImageId field's value. +func (s *ImportImageTask) SetImageId(v string) *ImportImageTask { + s.ImageId = &v + return s +} + +// SetImportTaskId sets the ImportTaskId field's value. +func (s *ImportImageTask) SetImportTaskId(v string) *ImportImageTask { + s.ImportTaskId = &v + return s +} + +// SetKmsKeyId sets the KmsKeyId field's value. +func (s *ImportImageTask) SetKmsKeyId(v string) *ImportImageTask { + s.KmsKeyId = &v + return s +} + +// SetLicenseType sets the LicenseType field's value. +func (s *ImportImageTask) SetLicenseType(v string) *ImportImageTask { + s.LicenseType = &v + return s +} + +// SetPlatform sets the Platform field's value. +func (s *ImportImageTask) SetPlatform(v string) *ImportImageTask { + s.Platform = &v + return s +} + +// SetProgress sets the Progress field's value. +func (s *ImportImageTask) SetProgress(v string) *ImportImageTask { + s.Progress = &v + return s +} + +// SetSnapshotDetails sets the SnapshotDetails field's value. +func (s *ImportImageTask) SetSnapshotDetails(v []*SnapshotDetail) *ImportImageTask { + s.SnapshotDetails = v + return s +} + +// SetStatus sets the Status field's value. +func (s *ImportImageTask) SetStatus(v string) *ImportImageTask { + s.Status = &v + return s +} + +// SetStatusMessage sets the StatusMessage field's value. +func (s *ImportImageTask) SetStatusMessage(v string) *ImportImageTask { + s.StatusMessage = &v + return s +} + +type ImportInstanceInput struct { + _ struct{} `type:"structure"` + + // A description for the instance being imported. + Description *string `locationName:"description" type:"string"` + + // The disk image. + DiskImages []*DiskImage `locationName:"diskImage" type:"list"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The launch specification. + LaunchSpecification *ImportInstanceLaunchSpecification `locationName:"launchSpecification" type:"structure"` + + // The instance operating system. + // + // Platform is a required field + Platform *string `locationName:"platform" type:"string" required:"true" enum:"PlatformValues"` +} + +// String returns the string representation +func (s ImportInstanceInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ImportInstanceInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ImportInstanceInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ImportInstanceInput"} + if s.Platform == nil { + invalidParams.Add(request.NewErrParamRequired("Platform")) + } + if s.DiskImages != nil { + for i, v := range s.DiskImages { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DiskImages", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDescription sets the Description field's value. +func (s *ImportInstanceInput) SetDescription(v string) *ImportInstanceInput { + s.Description = &v + return s +} + +// SetDiskImages sets the DiskImages field's value. +func (s *ImportInstanceInput) SetDiskImages(v []*DiskImage) *ImportInstanceInput { + s.DiskImages = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ImportInstanceInput) SetDryRun(v bool) *ImportInstanceInput { + s.DryRun = &v + return s +} + +// SetLaunchSpecification sets the LaunchSpecification field's value. +func (s *ImportInstanceInput) SetLaunchSpecification(v *ImportInstanceLaunchSpecification) *ImportInstanceInput { + s.LaunchSpecification = v + return s +} + +// SetPlatform sets the Platform field's value. +func (s *ImportInstanceInput) SetPlatform(v string) *ImportInstanceInput { + s.Platform = &v + return s +} + +// Describes the launch specification for VM import. +type ImportInstanceLaunchSpecification struct { + _ struct{} `type:"structure"` + + // Reserved. + AdditionalInfo *string `locationName:"additionalInfo" type:"string"` + + // The architecture of the instance. + Architecture *string `locationName:"architecture" type:"string" enum:"ArchitectureValues"` + + // The security group IDs. + GroupIds []*string `locationName:"GroupId" locationNameList:"SecurityGroupId" type:"list"` + + // The security group names. + GroupNames []*string `locationName:"GroupName" locationNameList:"SecurityGroup" type:"list"` + + // Indicates whether an instance stops or terminates when you initiate shutdown + // from the instance (using the operating system command for system shutdown). + InstanceInitiatedShutdownBehavior *string `locationName:"instanceInitiatedShutdownBehavior" type:"string" enum:"ShutdownBehavior"` + + // The instance type. For more information about the instance types that you + // can import, see Instance Types (https://docs.aws.amazon.com/vm-import/latest/userguide/vmie_prereqs.html#vmimport-instance-types) + // in the VM Import/Export User Guide. + InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` + + // Indicates whether monitoring is enabled. + Monitoring *bool `locationName:"monitoring" type:"boolean"` + + // The placement information for the instance. + Placement *Placement `locationName:"placement" type:"structure"` + + // [EC2-VPC] An available IP address from the IP address range of the subnet. + PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` + + // [EC2-VPC] The ID of the subnet in which to launch the instance. + SubnetId *string `locationName:"subnetId" type:"string"` + + // The Base64-encoded user data to make available to the instance. + UserData *UserData `locationName:"userData" type:"structure" sensitive:"true"` +} + +// String returns the string representation +func (s ImportInstanceLaunchSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ImportInstanceLaunchSpecification) GoString() string { + return s.String() +} + +// SetAdditionalInfo sets the AdditionalInfo field's value. +func (s *ImportInstanceLaunchSpecification) SetAdditionalInfo(v string) *ImportInstanceLaunchSpecification { + s.AdditionalInfo = &v + return s +} + +// SetArchitecture sets the Architecture field's value. +func (s *ImportInstanceLaunchSpecification) SetArchitecture(v string) *ImportInstanceLaunchSpecification { + s.Architecture = &v + return s +} + +// SetGroupIds sets the GroupIds field's value. +func (s *ImportInstanceLaunchSpecification) SetGroupIds(v []*string) *ImportInstanceLaunchSpecification { + s.GroupIds = v + return s +} + +// SetGroupNames sets the GroupNames field's value. +func (s *ImportInstanceLaunchSpecification) SetGroupNames(v []*string) *ImportInstanceLaunchSpecification { + s.GroupNames = v + return s +} + +// SetInstanceInitiatedShutdownBehavior sets the InstanceInitiatedShutdownBehavior field's value. +func (s *ImportInstanceLaunchSpecification) SetInstanceInitiatedShutdownBehavior(v string) *ImportInstanceLaunchSpecification { + s.InstanceInitiatedShutdownBehavior = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *ImportInstanceLaunchSpecification) SetInstanceType(v string) *ImportInstanceLaunchSpecification { + s.InstanceType = &v + return s +} + +// SetMonitoring sets the Monitoring field's value. +func (s *ImportInstanceLaunchSpecification) SetMonitoring(v bool) *ImportInstanceLaunchSpecification { + s.Monitoring = &v + return s +} + +// SetPlacement sets the Placement field's value. +func (s *ImportInstanceLaunchSpecification) SetPlacement(v *Placement) *ImportInstanceLaunchSpecification { + s.Placement = v + return s +} + +// SetPrivateIpAddress sets the PrivateIpAddress field's value. +func (s *ImportInstanceLaunchSpecification) SetPrivateIpAddress(v string) *ImportInstanceLaunchSpecification { + s.PrivateIpAddress = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *ImportInstanceLaunchSpecification) SetSubnetId(v string) *ImportInstanceLaunchSpecification { + s.SubnetId = &v + return s +} + +// SetUserData sets the UserData field's value. +func (s *ImportInstanceLaunchSpecification) SetUserData(v *UserData) *ImportInstanceLaunchSpecification { + s.UserData = v + return s +} + +type ImportInstanceOutput struct { + _ struct{} `type:"structure"` + + // Information about the conversion task. + ConversionTask *ConversionTask `locationName:"conversionTask" type:"structure"` +} + +// String returns the string representation +func (s ImportInstanceOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ImportInstanceOutput) GoString() string { + return s.String() +} + +// SetConversionTask sets the ConversionTask field's value. +func (s *ImportInstanceOutput) SetConversionTask(v *ConversionTask) *ImportInstanceOutput { + s.ConversionTask = v + return s +} + +// Describes an import instance task. +type ImportInstanceTaskDetails struct { + _ struct{} `type:"structure"` + + // A description of the task. + Description *string `locationName:"description" type:"string"` + + // The ID of the instance. + InstanceId *string `locationName:"instanceId" type:"string"` + + // The instance operating system. + Platform *string `locationName:"platform" type:"string" enum:"PlatformValues"` + + // The volumes. + Volumes []*ImportInstanceVolumeDetailItem `locationName:"volumes" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s ImportInstanceTaskDetails) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ImportInstanceTaskDetails) GoString() string { + return s.String() +} + +// SetDescription sets the Description field's value. +func (s *ImportInstanceTaskDetails) SetDescription(v string) *ImportInstanceTaskDetails { + s.Description = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *ImportInstanceTaskDetails) SetInstanceId(v string) *ImportInstanceTaskDetails { + s.InstanceId = &v + return s +} + +// SetPlatform sets the Platform field's value. +func (s *ImportInstanceTaskDetails) SetPlatform(v string) *ImportInstanceTaskDetails { + s.Platform = &v + return s +} + +// SetVolumes sets the Volumes field's value. +func (s *ImportInstanceTaskDetails) SetVolumes(v []*ImportInstanceVolumeDetailItem) *ImportInstanceTaskDetails { + s.Volumes = v + return s +} + +// Describes an import volume task. +type ImportInstanceVolumeDetailItem struct { + _ struct{} `type:"structure"` + + // The Availability Zone where the resulting instance will reside. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // The number of bytes converted so far. + BytesConverted *int64 `locationName:"bytesConverted" type:"long"` + + // A description of the task. + Description *string `locationName:"description" type:"string"` + + // The image. + Image *DiskImageDescription `locationName:"image" type:"structure"` + + // The status of the import of this particular disk image. + Status *string `locationName:"status" type:"string"` + + // The status information or errors related to the disk image. + StatusMessage *string `locationName:"statusMessage" type:"string"` + + // The volume. + Volume *DiskImageVolumeDescription `locationName:"volume" type:"structure"` +} + +// String returns the string representation +func (s ImportInstanceVolumeDetailItem) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ImportInstanceVolumeDetailItem) GoString() string { + return s.String() +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *ImportInstanceVolumeDetailItem) SetAvailabilityZone(v string) *ImportInstanceVolumeDetailItem { + s.AvailabilityZone = &v + return s +} + +// SetBytesConverted sets the BytesConverted field's value. +func (s *ImportInstanceVolumeDetailItem) SetBytesConverted(v int64) *ImportInstanceVolumeDetailItem { + s.BytesConverted = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *ImportInstanceVolumeDetailItem) SetDescription(v string) *ImportInstanceVolumeDetailItem { + s.Description = &v + return s +} + +// SetImage sets the Image field's value. +func (s *ImportInstanceVolumeDetailItem) SetImage(v *DiskImageDescription) *ImportInstanceVolumeDetailItem { + s.Image = v + return s +} + +// SetStatus sets the Status field's value. +func (s *ImportInstanceVolumeDetailItem) SetStatus(v string) *ImportInstanceVolumeDetailItem { + s.Status = &v + return s +} + +// SetStatusMessage sets the StatusMessage field's value. +func (s *ImportInstanceVolumeDetailItem) SetStatusMessage(v string) *ImportInstanceVolumeDetailItem { + s.StatusMessage = &v + return s +} + +// SetVolume sets the Volume field's value. +func (s *ImportInstanceVolumeDetailItem) SetVolume(v *DiskImageVolumeDescription) *ImportInstanceVolumeDetailItem { + s.Volume = v + return s +} + +type ImportKeyPairInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // A unique name for the key pair. + // + // KeyName is a required field + KeyName *string `locationName:"keyName" type:"string" required:"true"` + + // The public key. For API calls, the text must be base64-encoded. For command + // line tools, base64 encoding is performed for you. + // + // PublicKeyMaterial is automatically base64 encoded/decoded by the SDK. + // + // PublicKeyMaterial is a required field + PublicKeyMaterial []byte `locationName:"publicKeyMaterial" type:"blob" required:"true"` +} + +// String returns the string representation +func (s ImportKeyPairInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ImportKeyPairInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ImportKeyPairInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ImportKeyPairInput"} + if s.KeyName == nil { + invalidParams.Add(request.NewErrParamRequired("KeyName")) + } + if s.PublicKeyMaterial == nil { + invalidParams.Add(request.NewErrParamRequired("PublicKeyMaterial")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *ImportKeyPairInput) SetDryRun(v bool) *ImportKeyPairInput { + s.DryRun = &v + return s +} + +// SetKeyName sets the KeyName field's value. +func (s *ImportKeyPairInput) SetKeyName(v string) *ImportKeyPairInput { + s.KeyName = &v + return s +} + +// SetPublicKeyMaterial sets the PublicKeyMaterial field's value. +func (s *ImportKeyPairInput) SetPublicKeyMaterial(v []byte) *ImportKeyPairInput { + s.PublicKeyMaterial = v + return s +} + +type ImportKeyPairOutput struct { + _ struct{} `type:"structure"` + + // The MD5 public key fingerprint as specified in section 4 of RFC 4716. + KeyFingerprint *string `locationName:"keyFingerprint" type:"string"` + + // The key pair name you provided. + KeyName *string `locationName:"keyName" type:"string"` +} + +// String returns the string representation +func (s ImportKeyPairOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ImportKeyPairOutput) GoString() string { + return s.String() +} + +// SetKeyFingerprint sets the KeyFingerprint field's value. +func (s *ImportKeyPairOutput) SetKeyFingerprint(v string) *ImportKeyPairOutput { + s.KeyFingerprint = &v + return s +} + +// SetKeyName sets the KeyName field's value. +func (s *ImportKeyPairOutput) SetKeyName(v string) *ImportKeyPairOutput { + s.KeyName = &v + return s +} + +type ImportSnapshotInput struct { + _ struct{} `type:"structure"` + + // The client-specific data. + ClientData *ClientData `type:"structure"` + + // Token to enable idempotency for VM import requests. + ClientToken *string `type:"string"` + + // The description string for the import snapshot task. + Description *string `type:"string"` + + // Information about the disk container. + DiskContainer *SnapshotDiskContainer `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // Specifies whether the destination snapshot of the imported image should be + // encrypted. The default CMK for EBS is used unless you specify a non-default + // AWS Key Management Service (AWS KMS) CMK using KmsKeyId. For more information, + // see Amazon EBS Encryption (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) + // in the Amazon Elastic Compute Cloud User Guide. + Encrypted *bool `type:"boolean"` + + // An identifier for the AWS Key Management Service (AWS KMS) customer master + // key (CMK) to use when creating the encrypted snapshot. This parameter is + // only required if you want to use a non-default CMK; if this parameter is + // not specified, the default CMK for EBS is used. If a KmsKeyId is specified, + // the Encrypted flag must also be set. + // + // The CMK identifier may be provided in any of the following formats: + // + // * Key ID + // + // * Key alias. The alias ARN contains the arn:aws:kms namespace, followed + // by the Region of the CMK, the AWS account ID of the CMK owner, the alias + // namespace, and then the CMK alias. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias. + // + // * ARN using key ID. The ID ARN contains the arn:aws:kms namespace, followed + // by the Region of the CMK, the AWS account ID of the CMK owner, the key + // namespace, and then the CMK ID. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. + // + // * ARN using key alias. The alias ARN contains the arn:aws:kms namespace, + // followed by the Region of the CMK, the AWS account ID of the CMK owner, + // the alias namespace, and then the CMK alias. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias. + // + // AWS parses KmsKeyId asynchronously, meaning that the action you call may + // appear to complete even though you provided an invalid identifier. This action + // will eventually report failure. + // + // The specified CMK must exist in the Region that the snapshot is being copied + // to. + KmsKeyId *string `type:"string"` + + // The name of the role to use when not using the default role, 'vmimport'. + RoleName *string `type:"string"` +} + +// String returns the string representation +func (s ImportSnapshotInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ImportSnapshotInput) GoString() string { + return s.String() +} + +// SetClientData sets the ClientData field's value. +func (s *ImportSnapshotInput) SetClientData(v *ClientData) *ImportSnapshotInput { + s.ClientData = v + return s +} + +// SetClientToken sets the ClientToken field's value. +func (s *ImportSnapshotInput) SetClientToken(v string) *ImportSnapshotInput { + s.ClientToken = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *ImportSnapshotInput) SetDescription(v string) *ImportSnapshotInput { + s.Description = &v + return s +} + +// SetDiskContainer sets the DiskContainer field's value. +func (s *ImportSnapshotInput) SetDiskContainer(v *SnapshotDiskContainer) *ImportSnapshotInput { + s.DiskContainer = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ImportSnapshotInput) SetDryRun(v bool) *ImportSnapshotInput { + s.DryRun = &v + return s +} + +// SetEncrypted sets the Encrypted field's value. +func (s *ImportSnapshotInput) SetEncrypted(v bool) *ImportSnapshotInput { + s.Encrypted = &v + return s +} + +// SetKmsKeyId sets the KmsKeyId field's value. +func (s *ImportSnapshotInput) SetKmsKeyId(v string) *ImportSnapshotInput { + s.KmsKeyId = &v + return s +} + +// SetRoleName sets the RoleName field's value. +func (s *ImportSnapshotInput) SetRoleName(v string) *ImportSnapshotInput { + s.RoleName = &v + return s +} + +type ImportSnapshotOutput struct { + _ struct{} `type:"structure"` + + // A description of the import snapshot task. + Description *string `locationName:"description" type:"string"` + + // The ID of the import snapshot task. + ImportTaskId *string `locationName:"importTaskId" type:"string"` + + // Information about the import snapshot task. + SnapshotTaskDetail *SnapshotTaskDetail `locationName:"snapshotTaskDetail" type:"structure"` +} + +// String returns the string representation +func (s ImportSnapshotOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ImportSnapshotOutput) GoString() string { + return s.String() +} + +// SetDescription sets the Description field's value. +func (s *ImportSnapshotOutput) SetDescription(v string) *ImportSnapshotOutput { + s.Description = &v + return s +} + +// SetImportTaskId sets the ImportTaskId field's value. +func (s *ImportSnapshotOutput) SetImportTaskId(v string) *ImportSnapshotOutput { + s.ImportTaskId = &v + return s +} + +// SetSnapshotTaskDetail sets the SnapshotTaskDetail field's value. +func (s *ImportSnapshotOutput) SetSnapshotTaskDetail(v *SnapshotTaskDetail) *ImportSnapshotOutput { + s.SnapshotTaskDetail = v + return s +} + +// Describes an import snapshot task. +type ImportSnapshotTask struct { + _ struct{} `type:"structure"` + + // A description of the import snapshot task. + Description *string `locationName:"description" type:"string"` + + // The ID of the import snapshot task. + ImportTaskId *string `locationName:"importTaskId" type:"string"` + + // Describes an import snapshot task. + SnapshotTaskDetail *SnapshotTaskDetail `locationName:"snapshotTaskDetail" type:"structure"` +} + +// String returns the string representation +func (s ImportSnapshotTask) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ImportSnapshotTask) GoString() string { + return s.String() +} + +// SetDescription sets the Description field's value. +func (s *ImportSnapshotTask) SetDescription(v string) *ImportSnapshotTask { + s.Description = &v + return s +} + +// SetImportTaskId sets the ImportTaskId field's value. +func (s *ImportSnapshotTask) SetImportTaskId(v string) *ImportSnapshotTask { + s.ImportTaskId = &v + return s +} + +// SetSnapshotTaskDetail sets the SnapshotTaskDetail field's value. +func (s *ImportSnapshotTask) SetSnapshotTaskDetail(v *SnapshotTaskDetail) *ImportSnapshotTask { + s.SnapshotTaskDetail = v + return s +} + +type ImportVolumeInput struct { + _ struct{} `type:"structure"` + + // The Availability Zone for the resulting EBS volume. + // + // AvailabilityZone is a required field + AvailabilityZone *string `locationName:"availabilityZone" type:"string" required:"true"` + + // A description of the volume. + Description *string `locationName:"description" type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The disk image. + // + // Image is a required field + Image *DiskImageDetail `locationName:"image" type:"structure" required:"true"` + + // The volume size. + // + // Volume is a required field + Volume *VolumeDetail `locationName:"volume" type:"structure" required:"true"` +} + +// String returns the string representation +func (s ImportVolumeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ImportVolumeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ImportVolumeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ImportVolumeInput"} + if s.AvailabilityZone == nil { + invalidParams.Add(request.NewErrParamRequired("AvailabilityZone")) + } + if s.Image == nil { + invalidParams.Add(request.NewErrParamRequired("Image")) + } + if s.Volume == nil { + invalidParams.Add(request.NewErrParamRequired("Volume")) + } + if s.Image != nil { + if err := s.Image.Validate(); err != nil { + invalidParams.AddNested("Image", err.(request.ErrInvalidParams)) + } + } + if s.Volume != nil { + if err := s.Volume.Validate(); err != nil { + invalidParams.AddNested("Volume", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *ImportVolumeInput) SetAvailabilityZone(v string) *ImportVolumeInput { + s.AvailabilityZone = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *ImportVolumeInput) SetDescription(v string) *ImportVolumeInput { + s.Description = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ImportVolumeInput) SetDryRun(v bool) *ImportVolumeInput { + s.DryRun = &v + return s +} + +// SetImage sets the Image field's value. +func (s *ImportVolumeInput) SetImage(v *DiskImageDetail) *ImportVolumeInput { + s.Image = v + return s +} + +// SetVolume sets the Volume field's value. +func (s *ImportVolumeInput) SetVolume(v *VolumeDetail) *ImportVolumeInput { + s.Volume = v + return s +} + +type ImportVolumeOutput struct { + _ struct{} `type:"structure"` + + // Information about the conversion task. + ConversionTask *ConversionTask `locationName:"conversionTask" type:"structure"` +} + +// String returns the string representation +func (s ImportVolumeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ImportVolumeOutput) GoString() string { + return s.String() +} + +// SetConversionTask sets the ConversionTask field's value. +func (s *ImportVolumeOutput) SetConversionTask(v *ConversionTask) *ImportVolumeOutput { + s.ConversionTask = v + return s +} + +// Describes an import volume task. +type ImportVolumeTaskDetails struct { + _ struct{} `type:"structure"` + + // The Availability Zone where the resulting volume will reside. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // The number of bytes converted so far. + BytesConverted *int64 `locationName:"bytesConverted" type:"long"` + + // The description you provided when starting the import volume task. + Description *string `locationName:"description" type:"string"` + + // The image. + Image *DiskImageDescription `locationName:"image" type:"structure"` + + // The volume. + Volume *DiskImageVolumeDescription `locationName:"volume" type:"structure"` +} + +// String returns the string representation +func (s ImportVolumeTaskDetails) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ImportVolumeTaskDetails) GoString() string { + return s.String() +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *ImportVolumeTaskDetails) SetAvailabilityZone(v string) *ImportVolumeTaskDetails { + s.AvailabilityZone = &v + return s +} + +// SetBytesConverted sets the BytesConverted field's value. +func (s *ImportVolumeTaskDetails) SetBytesConverted(v int64) *ImportVolumeTaskDetails { + s.BytesConverted = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *ImportVolumeTaskDetails) SetDescription(v string) *ImportVolumeTaskDetails { + s.Description = &v + return s +} + +// SetImage sets the Image field's value. +func (s *ImportVolumeTaskDetails) SetImage(v *DiskImageDescription) *ImportVolumeTaskDetails { + s.Image = v + return s +} + +// SetVolume sets the Volume field's value. +func (s *ImportVolumeTaskDetails) SetVolume(v *DiskImageVolumeDescription) *ImportVolumeTaskDetails { + s.Volume = v + return s +} + +// Describes an instance. +type Instance struct { + _ struct{} `type:"structure"` + + // The AMI launch index, which can be used to find this instance in the launch + // group. + AmiLaunchIndex *int64 `locationName:"amiLaunchIndex" type:"integer"` + + // The architecture of the image. + Architecture *string `locationName:"architecture" type:"string" enum:"ArchitectureValues"` + + // Any block device mapping entries for the instance. + BlockDeviceMappings []*InstanceBlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"` + + // The ID of the Capacity Reservation. + CapacityReservationId *string `locationName:"capacityReservationId" type:"string"` + + // Information about the Capacity Reservation targeting option. + CapacityReservationSpecification *CapacityReservationSpecificationResponse `locationName:"capacityReservationSpecification" type:"structure"` + + // The idempotency token you provided when you launched the instance, if applicable. + ClientToken *string `locationName:"clientToken" type:"string"` + + // The CPU options for the instance. + CpuOptions *CpuOptions `locationName:"cpuOptions" type:"structure"` + + // Indicates whether the instance is optimized for Amazon EBS I/O. This optimization + // provides dedicated throughput to Amazon EBS and an optimized configuration + // stack to provide optimal I/O performance. This optimization isn't available + // with all instance types. Additional usage charges apply when using an EBS + // Optimized instance. + EbsOptimized *bool `locationName:"ebsOptimized" type:"boolean"` + + // The Elastic GPU associated with the instance. + ElasticGpuAssociations []*ElasticGpuAssociation `locationName:"elasticGpuAssociationSet" locationNameList:"item" type:"list"` + + // The elastic inference accelerator associated with the instance. + ElasticInferenceAcceleratorAssociations []*ElasticInferenceAcceleratorAssociation `locationName:"elasticInferenceAcceleratorAssociationSet" locationNameList:"item" type:"list"` + + // Specifies whether enhanced networking with ENA is enabled. + EnaSupport *bool `locationName:"enaSupport" type:"boolean"` + + // Indicates whether the instance is enabled for hibernation. + HibernationOptions *HibernationOptions `locationName:"hibernationOptions" type:"structure"` + + // The hypervisor type of the instance. + Hypervisor *string `locationName:"hypervisor" type:"string" enum:"HypervisorType"` + + // The IAM instance profile associated with the instance, if applicable. + IamInstanceProfile *IamInstanceProfile `locationName:"iamInstanceProfile" type:"structure"` + + // The ID of the AMI used to launch the instance. + ImageId *string `locationName:"imageId" type:"string"` + + // The ID of the instance. + InstanceId *string `locationName:"instanceId" type:"string"` + + // Indicates whether this is a Spot Instance or a Scheduled Instance. + InstanceLifecycle *string `locationName:"instanceLifecycle" type:"string" enum:"InstanceLifecycleType"` + + // The instance type. + InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` + + // The kernel associated with this instance, if applicable. + KernelId *string `locationName:"kernelId" type:"string"` + + // The name of the key pair, if this instance was launched with an associated + // key pair. + KeyName *string `locationName:"keyName" type:"string"` + + // The time the instance was launched. + LaunchTime *time.Time `locationName:"launchTime" type:"timestamp"` + + // The license configurations. + Licenses []*LicenseConfiguration `locationName:"licenseSet" locationNameList:"item" type:"list"` + + // The monitoring for the instance. + Monitoring *Monitoring `locationName:"monitoring" type:"structure"` + + // [EC2-VPC] The network interfaces for the instance. + NetworkInterfaces []*InstanceNetworkInterface `locationName:"networkInterfaceSet" locationNameList:"item" type:"list"` + + // The location where the instance launched, if applicable. + Placement *Placement `locationName:"placement" type:"structure"` + + // The value is Windows for Windows instances; otherwise blank. + Platform *string `locationName:"platform" type:"string" enum:"PlatformValues"` + + // (IPv4 only) The private DNS hostname name assigned to the instance. This + // DNS hostname can only be used inside the Amazon EC2 network. This name is + // not available until the instance enters the running state. + // + // [EC2-VPC] The Amazon-provided DNS server resolves Amazon-provided private + // DNS hostnames if you've enabled DNS resolution and DNS hostnames in your + // VPC. If you are not using the Amazon-provided DNS server in your VPC, your + // custom domain name servers must resolve the hostname as appropriate. + PrivateDnsName *string `locationName:"privateDnsName" type:"string"` + + // The private IPv4 address assigned to the instance. + PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` + + // The product codes attached to this instance, if applicable. + ProductCodes []*ProductCode `locationName:"productCodes" locationNameList:"item" type:"list"` + + // (IPv4 only) The public DNS name assigned to the instance. This name is not + // available until the instance enters the running state. For EC2-VPC, this + // name is only available if you've enabled DNS hostnames for your VPC. + PublicDnsName *string `locationName:"dnsName" type:"string"` + + // The public IPv4 address assigned to the instance, if applicable. + PublicIpAddress *string `locationName:"ipAddress" type:"string"` + + // The RAM disk associated with this instance, if applicable. + RamdiskId *string `locationName:"ramdiskId" type:"string"` + + // The device name of the root device volume (for example, /dev/sda1). + RootDeviceName *string `locationName:"rootDeviceName" type:"string"` + + // The root device type used by the AMI. The AMI can use an EBS volume or an + // instance store volume. + RootDeviceType *string `locationName:"rootDeviceType" type:"string" enum:"DeviceType"` + + // The security groups for the instance. + SecurityGroups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"` + + // Specifies whether to enable an instance launched in a VPC to perform NAT. + // This controls whether source/destination checking is enabled on the instance. + // A value of true means that checking is enabled, and false means that checking + // is disabled. The value must be false for the instance to perform NAT. For + // more information, see NAT Instances (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html) + // in the Amazon Virtual Private Cloud User Guide. + SourceDestCheck *bool `locationName:"sourceDestCheck" type:"boolean"` + + // If the request is a Spot Instance request, the ID of the request. + SpotInstanceRequestId *string `locationName:"spotInstanceRequestId" type:"string"` + + // Specifies whether enhanced networking with the Intel 82599 Virtual Function + // interface is enabled. + SriovNetSupport *string `locationName:"sriovNetSupport" type:"string"` + + // The current state of the instance. + State *InstanceState `locationName:"instanceState" type:"structure"` + + // The reason for the most recent state transition. + StateReason *StateReason `locationName:"stateReason" type:"structure"` + + // The reason for the most recent state transition. This might be an empty string. + StateTransitionReason *string `locationName:"reason" type:"string"` + + // [EC2-VPC] The ID of the subnet in which the instance is running. + SubnetId *string `locationName:"subnetId" type:"string"` + + // Any tags assigned to the instance. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The virtualization type of the instance. + VirtualizationType *string `locationName:"virtualizationType" type:"string" enum:"VirtualizationType"` + + // [EC2-VPC] The ID of the VPC in which the instance is running. + VpcId *string `locationName:"vpcId" type:"string"` +} + +// String returns the string representation +func (s Instance) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Instance) GoString() string { + return s.String() +} + +// SetAmiLaunchIndex sets the AmiLaunchIndex field's value. +func (s *Instance) SetAmiLaunchIndex(v int64) *Instance { + s.AmiLaunchIndex = &v + return s +} + +// SetArchitecture sets the Architecture field's value. +func (s *Instance) SetArchitecture(v string) *Instance { + s.Architecture = &v + return s +} + +// SetBlockDeviceMappings sets the BlockDeviceMappings field's value. +func (s *Instance) SetBlockDeviceMappings(v []*InstanceBlockDeviceMapping) *Instance { + s.BlockDeviceMappings = v + return s +} + +// SetCapacityReservationId sets the CapacityReservationId field's value. +func (s *Instance) SetCapacityReservationId(v string) *Instance { + s.CapacityReservationId = &v + return s +} + +// SetCapacityReservationSpecification sets the CapacityReservationSpecification field's value. +func (s *Instance) SetCapacityReservationSpecification(v *CapacityReservationSpecificationResponse) *Instance { + s.CapacityReservationSpecification = v + return s +} + +// SetClientToken sets the ClientToken field's value. +func (s *Instance) SetClientToken(v string) *Instance { + s.ClientToken = &v + return s +} + +// SetCpuOptions sets the CpuOptions field's value. +func (s *Instance) SetCpuOptions(v *CpuOptions) *Instance { + s.CpuOptions = v + return s +} + +// SetEbsOptimized sets the EbsOptimized field's value. +func (s *Instance) SetEbsOptimized(v bool) *Instance { + s.EbsOptimized = &v + return s +} + +// SetElasticGpuAssociations sets the ElasticGpuAssociations field's value. +func (s *Instance) SetElasticGpuAssociations(v []*ElasticGpuAssociation) *Instance { + s.ElasticGpuAssociations = v + return s +} + +// SetElasticInferenceAcceleratorAssociations sets the ElasticInferenceAcceleratorAssociations field's value. +func (s *Instance) SetElasticInferenceAcceleratorAssociations(v []*ElasticInferenceAcceleratorAssociation) *Instance { + s.ElasticInferenceAcceleratorAssociations = v + return s +} + +// SetEnaSupport sets the EnaSupport field's value. +func (s *Instance) SetEnaSupport(v bool) *Instance { + s.EnaSupport = &v + return s +} + +// SetHibernationOptions sets the HibernationOptions field's value. +func (s *Instance) SetHibernationOptions(v *HibernationOptions) *Instance { + s.HibernationOptions = v + return s +} + +// SetHypervisor sets the Hypervisor field's value. +func (s *Instance) SetHypervisor(v string) *Instance { + s.Hypervisor = &v + return s +} + +// SetIamInstanceProfile sets the IamInstanceProfile field's value. +func (s *Instance) SetIamInstanceProfile(v *IamInstanceProfile) *Instance { + s.IamInstanceProfile = v + return s +} + +// SetImageId sets the ImageId field's value. +func (s *Instance) SetImageId(v string) *Instance { + s.ImageId = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *Instance) SetInstanceId(v string) *Instance { + s.InstanceId = &v + return s +} + +// SetInstanceLifecycle sets the InstanceLifecycle field's value. +func (s *Instance) SetInstanceLifecycle(v string) *Instance { + s.InstanceLifecycle = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *Instance) SetInstanceType(v string) *Instance { + s.InstanceType = &v + return s +} + +// SetKernelId sets the KernelId field's value. +func (s *Instance) SetKernelId(v string) *Instance { + s.KernelId = &v + return s +} + +// SetKeyName sets the KeyName field's value. +func (s *Instance) SetKeyName(v string) *Instance { + s.KeyName = &v + return s +} + +// SetLaunchTime sets the LaunchTime field's value. +func (s *Instance) SetLaunchTime(v time.Time) *Instance { + s.LaunchTime = &v + return s +} + +// SetLicenses sets the Licenses field's value. +func (s *Instance) SetLicenses(v []*LicenseConfiguration) *Instance { + s.Licenses = v + return s +} + +// SetMonitoring sets the Monitoring field's value. +func (s *Instance) SetMonitoring(v *Monitoring) *Instance { + s.Monitoring = v + return s +} + +// SetNetworkInterfaces sets the NetworkInterfaces field's value. +func (s *Instance) SetNetworkInterfaces(v []*InstanceNetworkInterface) *Instance { + s.NetworkInterfaces = v + return s +} + +// SetPlacement sets the Placement field's value. +func (s *Instance) SetPlacement(v *Placement) *Instance { + s.Placement = v + return s +} + +// SetPlatform sets the Platform field's value. +func (s *Instance) SetPlatform(v string) *Instance { + s.Platform = &v + return s +} + +// SetPrivateDnsName sets the PrivateDnsName field's value. +func (s *Instance) SetPrivateDnsName(v string) *Instance { + s.PrivateDnsName = &v + return s +} + +// SetPrivateIpAddress sets the PrivateIpAddress field's value. +func (s *Instance) SetPrivateIpAddress(v string) *Instance { + s.PrivateIpAddress = &v + return s +} + +// SetProductCodes sets the ProductCodes field's value. +func (s *Instance) SetProductCodes(v []*ProductCode) *Instance { + s.ProductCodes = v + return s +} + +// SetPublicDnsName sets the PublicDnsName field's value. +func (s *Instance) SetPublicDnsName(v string) *Instance { + s.PublicDnsName = &v + return s +} + +// SetPublicIpAddress sets the PublicIpAddress field's value. +func (s *Instance) SetPublicIpAddress(v string) *Instance { + s.PublicIpAddress = &v + return s +} + +// SetRamdiskId sets the RamdiskId field's value. +func (s *Instance) SetRamdiskId(v string) *Instance { + s.RamdiskId = &v + return s +} + +// SetRootDeviceName sets the RootDeviceName field's value. +func (s *Instance) SetRootDeviceName(v string) *Instance { + s.RootDeviceName = &v + return s +} + +// SetRootDeviceType sets the RootDeviceType field's value. +func (s *Instance) SetRootDeviceType(v string) *Instance { + s.RootDeviceType = &v + return s +} + +// SetSecurityGroups sets the SecurityGroups field's value. +func (s *Instance) SetSecurityGroups(v []*GroupIdentifier) *Instance { + s.SecurityGroups = v + return s +} + +// SetSourceDestCheck sets the SourceDestCheck field's value. +func (s *Instance) SetSourceDestCheck(v bool) *Instance { + s.SourceDestCheck = &v + return s +} + +// SetSpotInstanceRequestId sets the SpotInstanceRequestId field's value. +func (s *Instance) SetSpotInstanceRequestId(v string) *Instance { + s.SpotInstanceRequestId = &v + return s +} + +// SetSriovNetSupport sets the SriovNetSupport field's value. +func (s *Instance) SetSriovNetSupport(v string) *Instance { + s.SriovNetSupport = &v + return s +} + +// SetState sets the State field's value. +func (s *Instance) SetState(v *InstanceState) *Instance { + s.State = v + return s +} + +// SetStateReason sets the StateReason field's value. +func (s *Instance) SetStateReason(v *StateReason) *Instance { + s.StateReason = v + return s +} + +// SetStateTransitionReason sets the StateTransitionReason field's value. +func (s *Instance) SetStateTransitionReason(v string) *Instance { + s.StateTransitionReason = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *Instance) SetSubnetId(v string) *Instance { + s.SubnetId = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *Instance) SetTags(v []*Tag) *Instance { + s.Tags = v + return s +} + +// SetVirtualizationType sets the VirtualizationType field's value. +func (s *Instance) SetVirtualizationType(v string) *Instance { + s.VirtualizationType = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *Instance) SetVpcId(v string) *Instance { + s.VpcId = &v + return s +} + +// Describes a block device mapping. +type InstanceBlockDeviceMapping struct { + _ struct{} `type:"structure"` + + // The device name (for example, /dev/sdh or xvdh). + DeviceName *string `locationName:"deviceName" type:"string"` + + // Parameters used to automatically set up EBS volumes when the instance is + // launched. + Ebs *EbsInstanceBlockDevice `locationName:"ebs" type:"structure"` +} + +// String returns the string representation +func (s InstanceBlockDeviceMapping) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceBlockDeviceMapping) GoString() string { + return s.String() +} + +// SetDeviceName sets the DeviceName field's value. +func (s *InstanceBlockDeviceMapping) SetDeviceName(v string) *InstanceBlockDeviceMapping { + s.DeviceName = &v + return s +} + +// SetEbs sets the Ebs field's value. +func (s *InstanceBlockDeviceMapping) SetEbs(v *EbsInstanceBlockDevice) *InstanceBlockDeviceMapping { + s.Ebs = v + return s +} + +// Describes a block device mapping entry. +type InstanceBlockDeviceMappingSpecification struct { + _ struct{} `type:"structure"` + + // The device name (for example, /dev/sdh or xvdh). + DeviceName *string `locationName:"deviceName" type:"string"` + + // Parameters used to automatically set up EBS volumes when the instance is + // launched. + Ebs *EbsInstanceBlockDeviceSpecification `locationName:"ebs" type:"structure"` + + // suppress the specified device included in the block device mapping. + NoDevice *string `locationName:"noDevice" type:"string"` + + // The virtual device name. + VirtualName *string `locationName:"virtualName" type:"string"` +} + +// String returns the string representation +func (s InstanceBlockDeviceMappingSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceBlockDeviceMappingSpecification) GoString() string { + return s.String() +} + +// SetDeviceName sets the DeviceName field's value. +func (s *InstanceBlockDeviceMappingSpecification) SetDeviceName(v string) *InstanceBlockDeviceMappingSpecification { + s.DeviceName = &v + return s +} + +// SetEbs sets the Ebs field's value. +func (s *InstanceBlockDeviceMappingSpecification) SetEbs(v *EbsInstanceBlockDeviceSpecification) *InstanceBlockDeviceMappingSpecification { + s.Ebs = v + return s +} + +// SetNoDevice sets the NoDevice field's value. +func (s *InstanceBlockDeviceMappingSpecification) SetNoDevice(v string) *InstanceBlockDeviceMappingSpecification { + s.NoDevice = &v + return s +} + +// SetVirtualName sets the VirtualName field's value. +func (s *InstanceBlockDeviceMappingSpecification) SetVirtualName(v string) *InstanceBlockDeviceMappingSpecification { + s.VirtualName = &v + return s +} + +// Information about the instance type that the Dedicated Host supports. +type InstanceCapacity struct { + _ struct{} `type:"structure"` + + // The number of instances that can still be launched onto the Dedicated Host. + AvailableCapacity *int64 `locationName:"availableCapacity" type:"integer"` + + // The instance type size supported by the Dedicated Host. + InstanceType *string `locationName:"instanceType" type:"string"` + + // The total number of instances that can be launched onto the Dedicated Host. + TotalCapacity *int64 `locationName:"totalCapacity" type:"integer"` +} + +// String returns the string representation +func (s InstanceCapacity) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceCapacity) GoString() string { + return s.String() +} + +// SetAvailableCapacity sets the AvailableCapacity field's value. +func (s *InstanceCapacity) SetAvailableCapacity(v int64) *InstanceCapacity { + s.AvailableCapacity = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *InstanceCapacity) SetInstanceType(v string) *InstanceCapacity { + s.InstanceType = &v + return s +} + +// SetTotalCapacity sets the TotalCapacity field's value. +func (s *InstanceCapacity) SetTotalCapacity(v int64) *InstanceCapacity { + s.TotalCapacity = &v + return s +} + +// Describes a Reserved Instance listing state. +type InstanceCount struct { + _ struct{} `type:"structure"` + + // The number of listed Reserved Instances in the state specified by the state. + InstanceCount *int64 `locationName:"instanceCount" type:"integer"` + + // The states of the listed Reserved Instances. + State *string `locationName:"state" type:"string" enum:"ListingState"` +} + +// String returns the string representation +func (s InstanceCount) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceCount) GoString() string { + return s.String() +} + +// SetInstanceCount sets the InstanceCount field's value. +func (s *InstanceCount) SetInstanceCount(v int64) *InstanceCount { + s.InstanceCount = &v + return s +} + +// SetState sets the State field's value. +func (s *InstanceCount) SetState(v string) *InstanceCount { + s.State = &v + return s +} + +// Describes the credit option for CPU usage of a T2 or T3 instance. +type InstanceCreditSpecification struct { + _ struct{} `type:"structure"` + + // The credit option for CPU usage of the instance. Valid values are standard + // and unlimited. + CpuCredits *string `locationName:"cpuCredits" type:"string"` + + // The ID of the instance. + InstanceId *string `locationName:"instanceId" type:"string"` +} + +// String returns the string representation +func (s InstanceCreditSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceCreditSpecification) GoString() string { + return s.String() +} + +// SetCpuCredits sets the CpuCredits field's value. +func (s *InstanceCreditSpecification) SetCpuCredits(v string) *InstanceCreditSpecification { + s.CpuCredits = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *InstanceCreditSpecification) SetInstanceId(v string) *InstanceCreditSpecification { + s.InstanceId = &v + return s +} + +// Describes the credit option for CPU usage of a T2 or T3 instance. +type InstanceCreditSpecificationRequest struct { + _ struct{} `type:"structure"` + + // The credit option for CPU usage of the instance. Valid values are standard + // and unlimited. + CpuCredits *string `type:"string"` + + // The ID of the instance. + InstanceId *string `type:"string"` +} + +// String returns the string representation +func (s InstanceCreditSpecificationRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceCreditSpecificationRequest) GoString() string { + return s.String() +} + +// SetCpuCredits sets the CpuCredits field's value. +func (s *InstanceCreditSpecificationRequest) SetCpuCredits(v string) *InstanceCreditSpecificationRequest { + s.CpuCredits = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *InstanceCreditSpecificationRequest) SetInstanceId(v string) *InstanceCreditSpecificationRequest { + s.InstanceId = &v + return s +} + +// Describes an instance to export. +type InstanceExportDetails struct { + _ struct{} `type:"structure"` + + // The ID of the resource being exported. + InstanceId *string `locationName:"instanceId" type:"string"` + + // The target virtualization environment. + TargetEnvironment *string `locationName:"targetEnvironment" type:"string" enum:"ExportEnvironment"` +} + +// String returns the string representation +func (s InstanceExportDetails) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceExportDetails) GoString() string { + return s.String() +} + +// SetInstanceId sets the InstanceId field's value. +func (s *InstanceExportDetails) SetInstanceId(v string) *InstanceExportDetails { + s.InstanceId = &v + return s +} + +// SetTargetEnvironment sets the TargetEnvironment field's value. +func (s *InstanceExportDetails) SetTargetEnvironment(v string) *InstanceExportDetails { + s.TargetEnvironment = &v + return s +} + +// Describes an IPv6 address. +type InstanceIpv6Address struct { + _ struct{} `type:"structure"` + + // The IPv6 address. + Ipv6Address *string `locationName:"ipv6Address" type:"string"` +} + +// String returns the string representation +func (s InstanceIpv6Address) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceIpv6Address) GoString() string { + return s.String() +} + +// SetIpv6Address sets the Ipv6Address field's value. +func (s *InstanceIpv6Address) SetIpv6Address(v string) *InstanceIpv6Address { + s.Ipv6Address = &v + return s +} + +// Describes an IPv6 address. +type InstanceIpv6AddressRequest struct { + _ struct{} `type:"structure"` + + // The IPv6 address. + Ipv6Address *string `type:"string"` +} + +// String returns the string representation +func (s InstanceIpv6AddressRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceIpv6AddressRequest) GoString() string { + return s.String() +} + +// SetIpv6Address sets the Ipv6Address field's value. +func (s *InstanceIpv6AddressRequest) SetIpv6Address(v string) *InstanceIpv6AddressRequest { + s.Ipv6Address = &v + return s +} + +// Describes the market (purchasing) option for the instances. +type InstanceMarketOptionsRequest struct { + _ struct{} `type:"structure"` + + // The market type. + MarketType *string `type:"string" enum:"MarketType"` + + // The options for Spot Instances. + SpotOptions *SpotMarketOptions `type:"structure"` +} + +// String returns the string representation +func (s InstanceMarketOptionsRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceMarketOptionsRequest) GoString() string { + return s.String() +} + +// SetMarketType sets the MarketType field's value. +func (s *InstanceMarketOptionsRequest) SetMarketType(v string) *InstanceMarketOptionsRequest { + s.MarketType = &v + return s +} + +// SetSpotOptions sets the SpotOptions field's value. +func (s *InstanceMarketOptionsRequest) SetSpotOptions(v *SpotMarketOptions) *InstanceMarketOptionsRequest { + s.SpotOptions = v + return s +} + +// Describes the monitoring of an instance. +type InstanceMonitoring struct { + _ struct{} `type:"structure"` + + // The ID of the instance. + InstanceId *string `locationName:"instanceId" type:"string"` + + // The monitoring for the instance. + Monitoring *Monitoring `locationName:"monitoring" type:"structure"` +} + +// String returns the string representation +func (s InstanceMonitoring) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceMonitoring) GoString() string { + return s.String() +} + +// SetInstanceId sets the InstanceId field's value. +func (s *InstanceMonitoring) SetInstanceId(v string) *InstanceMonitoring { + s.InstanceId = &v + return s +} + +// SetMonitoring sets the Monitoring field's value. +func (s *InstanceMonitoring) SetMonitoring(v *Monitoring) *InstanceMonitoring { + s.Monitoring = v + return s +} + +// Describes a network interface. +type InstanceNetworkInterface struct { + _ struct{} `type:"structure"` + + // The association information for an Elastic IPv4 associated with the network + // interface. + Association *InstanceNetworkInterfaceAssociation `locationName:"association" type:"structure"` + + // The network interface attachment. + Attachment *InstanceNetworkInterfaceAttachment `locationName:"attachment" type:"structure"` + + // The description. + Description *string `locationName:"description" type:"string"` + + // One or more security groups. + Groups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"` + + // Describes the type of network interface. + // + // Valid values: interface | efa + InterfaceType *string `locationName:"interfaceType" type:"string"` + + // One or more IPv6 addresses associated with the network interface. + Ipv6Addresses []*InstanceIpv6Address `locationName:"ipv6AddressesSet" locationNameList:"item" type:"list"` + + // The MAC address. + MacAddress *string `locationName:"macAddress" type:"string"` + + // The ID of the network interface. + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` + + // The ID of the AWS account that created the network interface. + OwnerId *string `locationName:"ownerId" type:"string"` + + // The private DNS name. + PrivateDnsName *string `locationName:"privateDnsName" type:"string"` + + // The IPv4 address of the network interface within the subnet. + PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` + + // One or more private IPv4 addresses associated with the network interface. + PrivateIpAddresses []*InstancePrivateIpAddress `locationName:"privateIpAddressesSet" locationNameList:"item" type:"list"` + + // Indicates whether to validate network traffic to or from this network interface. + SourceDestCheck *bool `locationName:"sourceDestCheck" type:"boolean"` + + // The status of the network interface. + Status *string `locationName:"status" type:"string" enum:"NetworkInterfaceStatus"` + + // The ID of the subnet. + SubnetId *string `locationName:"subnetId" type:"string"` + + // The ID of the VPC. + VpcId *string `locationName:"vpcId" type:"string"` +} + +// String returns the string representation +func (s InstanceNetworkInterface) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceNetworkInterface) GoString() string { + return s.String() +} + +// SetAssociation sets the Association field's value. +func (s *InstanceNetworkInterface) SetAssociation(v *InstanceNetworkInterfaceAssociation) *InstanceNetworkInterface { + s.Association = v + return s +} + +// SetAttachment sets the Attachment field's value. +func (s *InstanceNetworkInterface) SetAttachment(v *InstanceNetworkInterfaceAttachment) *InstanceNetworkInterface { + s.Attachment = v + return s +} + +// SetDescription sets the Description field's value. +func (s *InstanceNetworkInterface) SetDescription(v string) *InstanceNetworkInterface { + s.Description = &v + return s +} + +// SetGroups sets the Groups field's value. +func (s *InstanceNetworkInterface) SetGroups(v []*GroupIdentifier) *InstanceNetworkInterface { + s.Groups = v + return s +} + +// SetInterfaceType sets the InterfaceType field's value. +func (s *InstanceNetworkInterface) SetInterfaceType(v string) *InstanceNetworkInterface { + s.InterfaceType = &v + return s +} + +// SetIpv6Addresses sets the Ipv6Addresses field's value. +func (s *InstanceNetworkInterface) SetIpv6Addresses(v []*InstanceIpv6Address) *InstanceNetworkInterface { + s.Ipv6Addresses = v + return s +} + +// SetMacAddress sets the MacAddress field's value. +func (s *InstanceNetworkInterface) SetMacAddress(v string) *InstanceNetworkInterface { + s.MacAddress = &v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *InstanceNetworkInterface) SetNetworkInterfaceId(v string) *InstanceNetworkInterface { + s.NetworkInterfaceId = &v + return s +} + +// SetOwnerId sets the OwnerId field's value. +func (s *InstanceNetworkInterface) SetOwnerId(v string) *InstanceNetworkInterface { + s.OwnerId = &v + return s +} + +// SetPrivateDnsName sets the PrivateDnsName field's value. +func (s *InstanceNetworkInterface) SetPrivateDnsName(v string) *InstanceNetworkInterface { + s.PrivateDnsName = &v + return s +} + +// SetPrivateIpAddress sets the PrivateIpAddress field's value. +func (s *InstanceNetworkInterface) SetPrivateIpAddress(v string) *InstanceNetworkInterface { + s.PrivateIpAddress = &v + return s +} + +// SetPrivateIpAddresses sets the PrivateIpAddresses field's value. +func (s *InstanceNetworkInterface) SetPrivateIpAddresses(v []*InstancePrivateIpAddress) *InstanceNetworkInterface { + s.PrivateIpAddresses = v + return s +} + +// SetSourceDestCheck sets the SourceDestCheck field's value. +func (s *InstanceNetworkInterface) SetSourceDestCheck(v bool) *InstanceNetworkInterface { + s.SourceDestCheck = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *InstanceNetworkInterface) SetStatus(v string) *InstanceNetworkInterface { + s.Status = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *InstanceNetworkInterface) SetSubnetId(v string) *InstanceNetworkInterface { + s.SubnetId = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *InstanceNetworkInterface) SetVpcId(v string) *InstanceNetworkInterface { + s.VpcId = &v + return s +} + +// Describes association information for an Elastic IP address (IPv4). +type InstanceNetworkInterfaceAssociation struct { + _ struct{} `type:"structure"` + + // The ID of the owner of the Elastic IP address. + IpOwnerId *string `locationName:"ipOwnerId" type:"string"` + + // The public DNS name. + PublicDnsName *string `locationName:"publicDnsName" type:"string"` + + // The public IP address or Elastic IP address bound to the network interface. + PublicIp *string `locationName:"publicIp" type:"string"` +} + +// String returns the string representation +func (s InstanceNetworkInterfaceAssociation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceNetworkInterfaceAssociation) GoString() string { + return s.String() +} + +// SetIpOwnerId sets the IpOwnerId field's value. +func (s *InstanceNetworkInterfaceAssociation) SetIpOwnerId(v string) *InstanceNetworkInterfaceAssociation { + s.IpOwnerId = &v + return s +} + +// SetPublicDnsName sets the PublicDnsName field's value. +func (s *InstanceNetworkInterfaceAssociation) SetPublicDnsName(v string) *InstanceNetworkInterfaceAssociation { + s.PublicDnsName = &v + return s +} + +// SetPublicIp sets the PublicIp field's value. +func (s *InstanceNetworkInterfaceAssociation) SetPublicIp(v string) *InstanceNetworkInterfaceAssociation { + s.PublicIp = &v + return s +} + +// Describes a network interface attachment. +type InstanceNetworkInterfaceAttachment struct { + _ struct{} `type:"structure"` + + // The time stamp when the attachment initiated. + AttachTime *time.Time `locationName:"attachTime" type:"timestamp"` + + // The ID of the network interface attachment. + AttachmentId *string `locationName:"attachmentId" type:"string"` + + // Indicates whether the network interface is deleted when the instance is terminated. + DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"` + + // The index of the device on the instance for the network interface attachment. + DeviceIndex *int64 `locationName:"deviceIndex" type:"integer"` + + // The attachment state. + Status *string `locationName:"status" type:"string" enum:"AttachmentStatus"` +} + +// String returns the string representation +func (s InstanceNetworkInterfaceAttachment) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceNetworkInterfaceAttachment) GoString() string { + return s.String() +} + +// SetAttachTime sets the AttachTime field's value. +func (s *InstanceNetworkInterfaceAttachment) SetAttachTime(v time.Time) *InstanceNetworkInterfaceAttachment { + s.AttachTime = &v + return s +} + +// SetAttachmentId sets the AttachmentId field's value. +func (s *InstanceNetworkInterfaceAttachment) SetAttachmentId(v string) *InstanceNetworkInterfaceAttachment { + s.AttachmentId = &v + return s +} + +// SetDeleteOnTermination sets the DeleteOnTermination field's value. +func (s *InstanceNetworkInterfaceAttachment) SetDeleteOnTermination(v bool) *InstanceNetworkInterfaceAttachment { + s.DeleteOnTermination = &v + return s +} + +// SetDeviceIndex sets the DeviceIndex field's value. +func (s *InstanceNetworkInterfaceAttachment) SetDeviceIndex(v int64) *InstanceNetworkInterfaceAttachment { + s.DeviceIndex = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *InstanceNetworkInterfaceAttachment) SetStatus(v string) *InstanceNetworkInterfaceAttachment { + s.Status = &v + return s +} + +// Describes a network interface. +type InstanceNetworkInterfaceSpecification struct { + _ struct{} `type:"structure"` + + // Indicates whether to assign a public IPv4 address to an instance you launch + // in a VPC. The public IP address can only be assigned to a network interface + // for eth0, and can only be assigned to a new network interface, not an existing + // one. You cannot specify more than one network interface in the request. If + // launching into a default subnet, the default value is true. + AssociatePublicIpAddress *bool `locationName:"associatePublicIpAddress" type:"boolean"` + + // If set to true, the interface is deleted when the instance is terminated. + // You can specify true only if creating a new network interface when launching + // an instance. + DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"` + + // The description of the network interface. Applies only if creating a network + // interface when launching an instance. + Description *string `locationName:"description" type:"string"` + + // The position of the network interface in the attachment order. A primary + // network interface has a device index of 0. + // + // If you specify a network interface when launching an instance, you must specify + // the device index. + DeviceIndex *int64 `locationName:"deviceIndex" type:"integer"` + + // The IDs of the security groups for the network interface. Applies only if + // creating a network interface when launching an instance. + Groups []*string `locationName:"SecurityGroupId" locationNameList:"SecurityGroupId" type:"list"` + + // The type of network interface. To create an Elastic Fabric Adapter (EFA), + // specify efa. For more information, see Elastic Fabric Adapter (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html) + // in the Amazon Elastic Compute Cloud User Guide. + // + // If you are not creating an EFA, specify interface or omit this parameter. + // + // Valid values: interface | efa + InterfaceType *string `type:"string"` + + // A number of IPv6 addresses to assign to the network interface. Amazon EC2 + // chooses the IPv6 addresses from the range of the subnet. You cannot specify + // this option and the option to assign specific IPv6 addresses in the same + // request. You can specify this option if you've specified a minimum number + // of instances to launch. + Ipv6AddressCount *int64 `locationName:"ipv6AddressCount" type:"integer"` + + // One or more IPv6 addresses to assign to the network interface. You cannot + // specify this option and the option to assign a number of IPv6 addresses in + // the same request. You cannot specify this option if you've specified a minimum + // number of instances to launch. + Ipv6Addresses []*InstanceIpv6Address `locationName:"ipv6AddressesSet" queryName:"Ipv6Addresses" locationNameList:"item" type:"list"` + + // The ID of the network interface. + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` + + // The private IPv4 address of the network interface. Applies only if creating + // a network interface when launching an instance. You cannot specify this option + // if you're launching more than one instance in a RunInstances (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) + // request. + PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` + + // One or more private IPv4 addresses to assign to the network interface. Only + // one private IPv4 address can be designated as primary. You cannot specify + // this option if you're launching more than one instance in a RunInstances + // (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) + // request. + PrivateIpAddresses []*PrivateIpAddressSpecification `locationName:"privateIpAddressesSet" queryName:"PrivateIpAddresses" locationNameList:"item" type:"list"` + + // The number of secondary private IPv4 addresses. You can't specify this option + // and specify more than one private IP address using the private IP addresses + // option. You cannot specify this option if you're launching more than one + // instance in a RunInstances (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) + // request. + SecondaryPrivateIpAddressCount *int64 `locationName:"secondaryPrivateIpAddressCount" type:"integer"` + + // The ID of the subnet associated with the network interface. Applies only + // if creating a network interface when launching an instance. + SubnetId *string `locationName:"subnetId" type:"string"` +} + +// String returns the string representation +func (s InstanceNetworkInterfaceSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceNetworkInterfaceSpecification) GoString() string { + return s.String() +} + +// SetAssociatePublicIpAddress sets the AssociatePublicIpAddress field's value. +func (s *InstanceNetworkInterfaceSpecification) SetAssociatePublicIpAddress(v bool) *InstanceNetworkInterfaceSpecification { + s.AssociatePublicIpAddress = &v + return s +} + +// SetDeleteOnTermination sets the DeleteOnTermination field's value. +func (s *InstanceNetworkInterfaceSpecification) SetDeleteOnTermination(v bool) *InstanceNetworkInterfaceSpecification { + s.DeleteOnTermination = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *InstanceNetworkInterfaceSpecification) SetDescription(v string) *InstanceNetworkInterfaceSpecification { + s.Description = &v + return s +} + +// SetDeviceIndex sets the DeviceIndex field's value. +func (s *InstanceNetworkInterfaceSpecification) SetDeviceIndex(v int64) *InstanceNetworkInterfaceSpecification { + s.DeviceIndex = &v + return s +} + +// SetGroups sets the Groups field's value. +func (s *InstanceNetworkInterfaceSpecification) SetGroups(v []*string) *InstanceNetworkInterfaceSpecification { + s.Groups = v + return s +} + +// SetInterfaceType sets the InterfaceType field's value. +func (s *InstanceNetworkInterfaceSpecification) SetInterfaceType(v string) *InstanceNetworkInterfaceSpecification { + s.InterfaceType = &v + return s +} + +// SetIpv6AddressCount sets the Ipv6AddressCount field's value. +func (s *InstanceNetworkInterfaceSpecification) SetIpv6AddressCount(v int64) *InstanceNetworkInterfaceSpecification { + s.Ipv6AddressCount = &v + return s +} + +// SetIpv6Addresses sets the Ipv6Addresses field's value. +func (s *InstanceNetworkInterfaceSpecification) SetIpv6Addresses(v []*InstanceIpv6Address) *InstanceNetworkInterfaceSpecification { + s.Ipv6Addresses = v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *InstanceNetworkInterfaceSpecification) SetNetworkInterfaceId(v string) *InstanceNetworkInterfaceSpecification { + s.NetworkInterfaceId = &v + return s +} + +// SetPrivateIpAddress sets the PrivateIpAddress field's value. +func (s *InstanceNetworkInterfaceSpecification) SetPrivateIpAddress(v string) *InstanceNetworkInterfaceSpecification { + s.PrivateIpAddress = &v + return s +} + +// SetPrivateIpAddresses sets the PrivateIpAddresses field's value. +func (s *InstanceNetworkInterfaceSpecification) SetPrivateIpAddresses(v []*PrivateIpAddressSpecification) *InstanceNetworkInterfaceSpecification { + s.PrivateIpAddresses = v + return s +} + +// SetSecondaryPrivateIpAddressCount sets the SecondaryPrivateIpAddressCount field's value. +func (s *InstanceNetworkInterfaceSpecification) SetSecondaryPrivateIpAddressCount(v int64) *InstanceNetworkInterfaceSpecification { + s.SecondaryPrivateIpAddressCount = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *InstanceNetworkInterfaceSpecification) SetSubnetId(v string) *InstanceNetworkInterfaceSpecification { + s.SubnetId = &v + return s +} + +// Describes a private IPv4 address. +type InstancePrivateIpAddress struct { + _ struct{} `type:"structure"` + + // The association information for an Elastic IP address for the network interface. + Association *InstanceNetworkInterfaceAssociation `locationName:"association" type:"structure"` + + // Indicates whether this IPv4 address is the primary private IP address of + // the network interface. + Primary *bool `locationName:"primary" type:"boolean"` + + // The private IPv4 DNS name. + PrivateDnsName *string `locationName:"privateDnsName" type:"string"` + + // The private IPv4 address of the network interface. + PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` +} + +// String returns the string representation +func (s InstancePrivateIpAddress) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstancePrivateIpAddress) GoString() string { + return s.String() +} + +// SetAssociation sets the Association field's value. +func (s *InstancePrivateIpAddress) SetAssociation(v *InstanceNetworkInterfaceAssociation) *InstancePrivateIpAddress { + s.Association = v + return s +} + +// SetPrimary sets the Primary field's value. +func (s *InstancePrivateIpAddress) SetPrimary(v bool) *InstancePrivateIpAddress { + s.Primary = &v + return s +} + +// SetPrivateDnsName sets the PrivateDnsName field's value. +func (s *InstancePrivateIpAddress) SetPrivateDnsName(v string) *InstancePrivateIpAddress { + s.PrivateDnsName = &v + return s +} + +// SetPrivateIpAddress sets the PrivateIpAddress field's value. +func (s *InstancePrivateIpAddress) SetPrivateIpAddress(v string) *InstancePrivateIpAddress { + s.PrivateIpAddress = &v + return s +} + +// The instance details to specify which volumes should be snapshotted. +type InstanceSpecification struct { + _ struct{} `type:"structure"` + + // Excludes the root volume from being snapshotted. + ExcludeBootVolume *bool `type:"boolean"` + + // The instance to specify which volumes should be snapshotted. + InstanceId *string `type:"string"` +} + +// String returns the string representation +func (s InstanceSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceSpecification) GoString() string { + return s.String() +} + +// SetExcludeBootVolume sets the ExcludeBootVolume field's value. +func (s *InstanceSpecification) SetExcludeBootVolume(v bool) *InstanceSpecification { + s.ExcludeBootVolume = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *InstanceSpecification) SetInstanceId(v string) *InstanceSpecification { + s.InstanceId = &v + return s +} + +// Describes the current state of an instance. +type InstanceState struct { + _ struct{} `type:"structure"` + + // The state of the instance as a 16-bit unsigned integer. + // + // The high byte is all of the bits between 2^8 and (2^16)-1, which equals decimal + // values between 256 and 65,535. These numerical values are used for internal + // purposes and should be ignored. + // + // The low byte is all of the bits between 2^0 and (2^8)-1, which equals decimal + // values between 0 and 255. + // + // The valid values for instance-state-code will all be in the range of the + // low byte and they are: + // + // * 0 : pending + // + // * 16 : running + // + // * 32 : shutting-down + // + // * 48 : terminated + // + // * 64 : stopping + // + // * 80 : stopped + // + // You can ignore the high byte value by zeroing out all of the bits above 2^8 + // or 256 in decimal. + Code *int64 `locationName:"code" type:"integer"` + + // The current state of the instance. + Name *string `locationName:"name" type:"string" enum:"InstanceStateName"` +} + +// String returns the string representation +func (s InstanceState) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceState) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *InstanceState) SetCode(v int64) *InstanceState { + s.Code = &v + return s +} + +// SetName sets the Name field's value. +func (s *InstanceState) SetName(v string) *InstanceState { + s.Name = &v + return s +} + +// Describes an instance state change. +type InstanceStateChange struct { + _ struct{} `type:"structure"` + + // The current state of the instance. + CurrentState *InstanceState `locationName:"currentState" type:"structure"` + + // The ID of the instance. + InstanceId *string `locationName:"instanceId" type:"string"` + + // The previous state of the instance. + PreviousState *InstanceState `locationName:"previousState" type:"structure"` +} + +// String returns the string representation +func (s InstanceStateChange) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceStateChange) GoString() string { + return s.String() +} + +// SetCurrentState sets the CurrentState field's value. +func (s *InstanceStateChange) SetCurrentState(v *InstanceState) *InstanceStateChange { + s.CurrentState = v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *InstanceStateChange) SetInstanceId(v string) *InstanceStateChange { + s.InstanceId = &v + return s +} + +// SetPreviousState sets the PreviousState field's value. +func (s *InstanceStateChange) SetPreviousState(v *InstanceState) *InstanceStateChange { + s.PreviousState = v + return s +} + +// Describes the status of an instance. +type InstanceStatus struct { + _ struct{} `type:"structure"` + + // The Availability Zone of the instance. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // Any scheduled events associated with the instance. + Events []*InstanceStatusEvent `locationName:"eventsSet" locationNameList:"item" type:"list"` + + // The ID of the instance. + InstanceId *string `locationName:"instanceId" type:"string"` + + // The intended state of the instance. DescribeInstanceStatus requires that + // an instance be in the running state. + InstanceState *InstanceState `locationName:"instanceState" type:"structure"` + + // Reports impaired functionality that stems from issues internal to the instance, + // such as impaired reachability. + InstanceStatus *InstanceStatusSummary `locationName:"instanceStatus" type:"structure"` + + // Reports impaired functionality that stems from issues related to the systems + // that support an instance, such as hardware failures and network connectivity + // problems. + SystemStatus *InstanceStatusSummary `locationName:"systemStatus" type:"structure"` +} + +// String returns the string representation +func (s InstanceStatus) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceStatus) GoString() string { + return s.String() +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *InstanceStatus) SetAvailabilityZone(v string) *InstanceStatus { + s.AvailabilityZone = &v + return s +} + +// SetEvents sets the Events field's value. +func (s *InstanceStatus) SetEvents(v []*InstanceStatusEvent) *InstanceStatus { + s.Events = v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *InstanceStatus) SetInstanceId(v string) *InstanceStatus { + s.InstanceId = &v + return s +} + +// SetInstanceState sets the InstanceState field's value. +func (s *InstanceStatus) SetInstanceState(v *InstanceState) *InstanceStatus { + s.InstanceState = v + return s +} + +// SetInstanceStatus sets the InstanceStatus field's value. +func (s *InstanceStatus) SetInstanceStatus(v *InstanceStatusSummary) *InstanceStatus { + s.InstanceStatus = v + return s +} + +// SetSystemStatus sets the SystemStatus field's value. +func (s *InstanceStatus) SetSystemStatus(v *InstanceStatusSummary) *InstanceStatus { + s.SystemStatus = v + return s +} + +// Describes the instance status. +type InstanceStatusDetails struct { + _ struct{} `type:"structure"` + + // The time when a status check failed. For an instance that was launched and + // impaired, this is the time when the instance was launched. + ImpairedSince *time.Time `locationName:"impairedSince" type:"timestamp"` + + // The type of instance status. + Name *string `locationName:"name" type:"string" enum:"StatusName"` + + // The status. + Status *string `locationName:"status" type:"string" enum:"StatusType"` +} + +// String returns the string representation +func (s InstanceStatusDetails) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceStatusDetails) GoString() string { + return s.String() +} + +// SetImpairedSince sets the ImpairedSince field's value. +func (s *InstanceStatusDetails) SetImpairedSince(v time.Time) *InstanceStatusDetails { + s.ImpairedSince = &v + return s +} + +// SetName sets the Name field's value. +func (s *InstanceStatusDetails) SetName(v string) *InstanceStatusDetails { + s.Name = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *InstanceStatusDetails) SetStatus(v string) *InstanceStatusDetails { + s.Status = &v + return s +} + +// Describes a scheduled event for an instance. +type InstanceStatusEvent struct { + _ struct{} `type:"structure"` + + // The event code. + Code *string `locationName:"code" type:"string" enum:"EventCode"` + + // A description of the event. + // + // After a scheduled event is completed, it can still be described for up to + // a week. If the event has been completed, this description starts with the + // following text: [Completed]. + Description *string `locationName:"description" type:"string"` + + // The ID of the event. + InstanceEventId *string `locationName:"instanceEventId" type:"string"` + + // The latest scheduled end time for the event. + NotAfter *time.Time `locationName:"notAfter" type:"timestamp"` + + // The earliest scheduled start time for the event. + NotBefore *time.Time `locationName:"notBefore" type:"timestamp"` + + // The deadline for starting the event. + NotBeforeDeadline *time.Time `locationName:"notBeforeDeadline" type:"timestamp"` +} + +// String returns the string representation +func (s InstanceStatusEvent) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceStatusEvent) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *InstanceStatusEvent) SetCode(v string) *InstanceStatusEvent { + s.Code = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *InstanceStatusEvent) SetDescription(v string) *InstanceStatusEvent { + s.Description = &v + return s +} + +// SetInstanceEventId sets the InstanceEventId field's value. +func (s *InstanceStatusEvent) SetInstanceEventId(v string) *InstanceStatusEvent { + s.InstanceEventId = &v + return s +} + +// SetNotAfter sets the NotAfter field's value. +func (s *InstanceStatusEvent) SetNotAfter(v time.Time) *InstanceStatusEvent { + s.NotAfter = &v + return s +} + +// SetNotBefore sets the NotBefore field's value. +func (s *InstanceStatusEvent) SetNotBefore(v time.Time) *InstanceStatusEvent { + s.NotBefore = &v + return s +} + +// SetNotBeforeDeadline sets the NotBeforeDeadline field's value. +func (s *InstanceStatusEvent) SetNotBeforeDeadline(v time.Time) *InstanceStatusEvent { + s.NotBeforeDeadline = &v + return s +} + +// Describes the status of an instance. +type InstanceStatusSummary struct { + _ struct{} `type:"structure"` + + // The system instance health or application instance health. + Details []*InstanceStatusDetails `locationName:"details" locationNameList:"item" type:"list"` + + // The status. + Status *string `locationName:"status" type:"string" enum:"SummaryStatus"` +} + +// String returns the string representation +func (s InstanceStatusSummary) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceStatusSummary) GoString() string { + return s.String() +} + +// SetDetails sets the Details field's value. +func (s *InstanceStatusSummary) SetDetails(v []*InstanceStatusDetails) *InstanceStatusSummary { + s.Details = v + return s +} + +// SetStatus sets the Status field's value. +func (s *InstanceStatusSummary) SetStatus(v string) *InstanceStatusSummary { + s.Status = &v + return s +} + +// Information about the Capacity Reservation usage. +type InstanceUsage struct { + _ struct{} `type:"structure"` + + // The ID of the AWS account that is making use of the Capacity Reservation. + AccountId *string `locationName:"accountId" type:"string"` + + // The number of instances the AWS account currently has in the Capacity Reservation. + UsedInstanceCount *int64 `locationName:"usedInstanceCount" type:"integer"` +} + +// String returns the string representation +func (s InstanceUsage) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceUsage) GoString() string { + return s.String() +} + +// SetAccountId sets the AccountId field's value. +func (s *InstanceUsage) SetAccountId(v string) *InstanceUsage { + s.AccountId = &v + return s +} + +// SetUsedInstanceCount sets the UsedInstanceCount field's value. +func (s *InstanceUsage) SetUsedInstanceCount(v int64) *InstanceUsage { + s.UsedInstanceCount = &v + return s +} + +// Describes an internet gateway. +type InternetGateway struct { + _ struct{} `type:"structure"` + + // Any VPCs attached to the internet gateway. + Attachments []*InternetGatewayAttachment `locationName:"attachmentSet" locationNameList:"item" type:"list"` + + // The ID of the internet gateway. + InternetGatewayId *string `locationName:"internetGatewayId" type:"string"` + + // The ID of the AWS account that owns the internet gateway. + OwnerId *string `locationName:"ownerId" type:"string"` + + // Any tags assigned to the internet gateway. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s InternetGateway) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InternetGateway) GoString() string { + return s.String() +} + +// SetAttachments sets the Attachments field's value. +func (s *InternetGateway) SetAttachments(v []*InternetGatewayAttachment) *InternetGateway { + s.Attachments = v + return s +} + +// SetInternetGatewayId sets the InternetGatewayId field's value. +func (s *InternetGateway) SetInternetGatewayId(v string) *InternetGateway { + s.InternetGatewayId = &v + return s +} + +// SetOwnerId sets the OwnerId field's value. +func (s *InternetGateway) SetOwnerId(v string) *InternetGateway { + s.OwnerId = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *InternetGateway) SetTags(v []*Tag) *InternetGateway { + s.Tags = v + return s +} + +// Describes the attachment of a VPC to an internet gateway or an egress-only +// internet gateway. +type InternetGatewayAttachment struct { + _ struct{} `type:"structure"` + + // The current state of the attachment. For an internet gateway, the state is + // available when attached to a VPC; otherwise, this value is not returned. + State *string `locationName:"state" type:"string" enum:"AttachmentStatus"` + + // The ID of the VPC. + VpcId *string `locationName:"vpcId" type:"string"` +} + +// String returns the string representation +func (s InternetGatewayAttachment) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InternetGatewayAttachment) GoString() string { + return s.String() +} + +// SetState sets the State field's value. +func (s *InternetGatewayAttachment) SetState(v string) *InternetGatewayAttachment { + s.State = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *InternetGatewayAttachment) SetVpcId(v string) *InternetGatewayAttachment { + s.VpcId = &v + return s +} + +// Describes a set of permissions for a security group rule. +type IpPermission struct { + _ struct{} `type:"structure"` + + // The start of port range for the TCP and UDP protocols, or an ICMP/ICMPv6 + // type number. A value of -1 indicates all ICMP/ICMPv6 types. If you specify + // all ICMP/ICMPv6 types, you must specify all codes. + FromPort *int64 `locationName:"fromPort" type:"integer"` + + // The IP protocol name (tcp, udp, icmp, icmpv6) or number (see Protocol Numbers + // (http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)). + // + // [VPC only] Use -1 to specify all protocols. When authorizing security group + // rules, specifying -1 or a protocol number other than tcp, udp, icmp, or icmpv6 + // allows traffic on all ports, regardless of any port range you specify. For + // tcp, udp, and icmp, you must specify a port range. For icmpv6, the port range + // is optional; if you omit the port range, traffic for all types and codes + // is allowed. + IpProtocol *string `locationName:"ipProtocol" type:"string"` + + // The IPv4 ranges. + IpRanges []*IpRange `locationName:"ipRanges" locationNameList:"item" type:"list"` + + // [VPC only] The IPv6 ranges. + Ipv6Ranges []*Ipv6Range `locationName:"ipv6Ranges" locationNameList:"item" type:"list"` + + // [VPC only] The prefix list IDs for an AWS service. With outbound rules, this + // is the AWS service to access through a VPC endpoint from instances associated + // with the security group. + PrefixListIds []*PrefixListId `locationName:"prefixListIds" locationNameList:"item" type:"list"` + + // The end of port range for the TCP and UDP protocols, or an ICMP/ICMPv6 code. + // A value of -1 indicates all ICMP/ICMPv6 codes. If you specify all ICMP/ICMPv6 + // types, you must specify all codes. + ToPort *int64 `locationName:"toPort" type:"integer"` + + // The security group and AWS account ID pairs. + UserIdGroupPairs []*UserIdGroupPair `locationName:"groups" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s IpPermission) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s IpPermission) GoString() string { + return s.String() +} + +// SetFromPort sets the FromPort field's value. +func (s *IpPermission) SetFromPort(v int64) *IpPermission { + s.FromPort = &v + return s +} + +// SetIpProtocol sets the IpProtocol field's value. +func (s *IpPermission) SetIpProtocol(v string) *IpPermission { + s.IpProtocol = &v + return s +} + +// SetIpRanges sets the IpRanges field's value. +func (s *IpPermission) SetIpRanges(v []*IpRange) *IpPermission { + s.IpRanges = v + return s +} + +// SetIpv6Ranges sets the Ipv6Ranges field's value. +func (s *IpPermission) SetIpv6Ranges(v []*Ipv6Range) *IpPermission { + s.Ipv6Ranges = v + return s +} + +// SetPrefixListIds sets the PrefixListIds field's value. +func (s *IpPermission) SetPrefixListIds(v []*PrefixListId) *IpPermission { + s.PrefixListIds = v + return s +} + +// SetToPort sets the ToPort field's value. +func (s *IpPermission) SetToPort(v int64) *IpPermission { + s.ToPort = &v + return s +} + +// SetUserIdGroupPairs sets the UserIdGroupPairs field's value. +func (s *IpPermission) SetUserIdGroupPairs(v []*UserIdGroupPair) *IpPermission { + s.UserIdGroupPairs = v + return s +} + +// Describes an IPv4 range. +type IpRange struct { + _ struct{} `type:"structure"` + + // The IPv4 CIDR range. You can either specify a CIDR range or a source security + // group, not both. To specify a single IPv4 address, use the /32 prefix length. + CidrIp *string `locationName:"cidrIp" type:"string"` + + // A description for the security group rule that references this IPv4 address + // range. + // + // Constraints: Up to 255 characters in length. Allowed characters are a-z, + // A-Z, 0-9, spaces, and ._-:/()#,@[]+=;{}!$* + Description *string `locationName:"description" type:"string"` +} + +// String returns the string representation +func (s IpRange) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s IpRange) GoString() string { + return s.String() +} + +// SetCidrIp sets the CidrIp field's value. +func (s *IpRange) SetCidrIp(v string) *IpRange { + s.CidrIp = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *IpRange) SetDescription(v string) *IpRange { + s.Description = &v + return s +} + +// Describes an IPv6 CIDR block. +type Ipv6CidrBlock struct { + _ struct{} `type:"structure"` + + // The IPv6 CIDR block. + Ipv6CidrBlock *string `locationName:"ipv6CidrBlock" type:"string"` +} + +// String returns the string representation +func (s Ipv6CidrBlock) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Ipv6CidrBlock) GoString() string { + return s.String() +} + +// SetIpv6CidrBlock sets the Ipv6CidrBlock field's value. +func (s *Ipv6CidrBlock) SetIpv6CidrBlock(v string) *Ipv6CidrBlock { + s.Ipv6CidrBlock = &v + return s +} + +// [EC2-VPC only] Describes an IPv6 range. +type Ipv6Range struct { + _ struct{} `type:"structure"` + + // The IPv6 CIDR range. You can either specify a CIDR range or a source security + // group, not both. To specify a single IPv6 address, use the /128 prefix length. + CidrIpv6 *string `locationName:"cidrIpv6" type:"string"` + + // A description for the security group rule that references this IPv6 address + // range. + // + // Constraints: Up to 255 characters in length. Allowed characters are a-z, + // A-Z, 0-9, spaces, and ._-:/()#,@[]+=;{}!$* + Description *string `locationName:"description" type:"string"` +} + +// String returns the string representation +func (s Ipv6Range) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Ipv6Range) GoString() string { + return s.String() +} + +// SetCidrIpv6 sets the CidrIpv6 field's value. +func (s *Ipv6Range) SetCidrIpv6(v string) *Ipv6Range { + s.CidrIpv6 = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *Ipv6Range) SetDescription(v string) *Ipv6Range { + s.Description = &v + return s +} + +// Describes a key pair. +type KeyPairInfo struct { + _ struct{} `type:"structure"` + + // If you used CreateKeyPair to create the key pair, this is the SHA-1 digest + // of the DER encoded private key. If you used ImportKeyPair to provide AWS + // the public key, this is the MD5 public key fingerprint as specified in section + // 4 of RFC4716. + KeyFingerprint *string `locationName:"keyFingerprint" type:"string"` + + // The name of the key pair. + KeyName *string `locationName:"keyName" type:"string"` +} + +// String returns the string representation +func (s KeyPairInfo) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s KeyPairInfo) GoString() string { + return s.String() +} + +// SetKeyFingerprint sets the KeyFingerprint field's value. +func (s *KeyPairInfo) SetKeyFingerprint(v string) *KeyPairInfo { + s.KeyFingerprint = &v + return s +} + +// SetKeyName sets the KeyName field's value. +func (s *KeyPairInfo) SetKeyName(v string) *KeyPairInfo { + s.KeyName = &v + return s +} + +// Describes a launch permission. +type LaunchPermission struct { + _ struct{} `type:"structure"` + + // The name of the group. + Group *string `locationName:"group" type:"string" enum:"PermissionGroup"` + + // The AWS account ID. + UserId *string `locationName:"userId" type:"string"` +} + +// String returns the string representation +func (s LaunchPermission) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchPermission) GoString() string { + return s.String() +} + +// SetGroup sets the Group field's value. +func (s *LaunchPermission) SetGroup(v string) *LaunchPermission { + s.Group = &v + return s +} + +// SetUserId sets the UserId field's value. +func (s *LaunchPermission) SetUserId(v string) *LaunchPermission { + s.UserId = &v + return s +} + +// Describes a launch permission modification. +type LaunchPermissionModifications struct { + _ struct{} `type:"structure"` + + // The AWS account ID to add to the list of launch permissions for the AMI. + Add []*LaunchPermission `locationNameList:"item" type:"list"` + + // The AWS account ID to remove from the list of launch permissions for the + // AMI. + Remove []*LaunchPermission `locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s LaunchPermissionModifications) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchPermissionModifications) GoString() string { + return s.String() +} + +// SetAdd sets the Add field's value. +func (s *LaunchPermissionModifications) SetAdd(v []*LaunchPermission) *LaunchPermissionModifications { + s.Add = v + return s +} + +// SetRemove sets the Remove field's value. +func (s *LaunchPermissionModifications) SetRemove(v []*LaunchPermission) *LaunchPermissionModifications { + s.Remove = v + return s +} + +// Describes the launch specification for an instance. +type LaunchSpecification struct { + _ struct{} `type:"structure"` + + // Deprecated. + AddressingType *string `locationName:"addressingType" type:"string"` + + // One or more block device mapping entries. + BlockDeviceMappings []*BlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"` + + // Indicates whether the instance is optimized for EBS I/O. This optimization + // provides dedicated throughput to Amazon EBS and an optimized configuration + // stack to provide optimal EBS I/O performance. This optimization isn't available + // with all instance types. Additional usage charges apply when using an EBS + // Optimized instance. + // + // Default: false + EbsOptimized *bool `locationName:"ebsOptimized" type:"boolean"` + + // The IAM instance profile. + IamInstanceProfile *IamInstanceProfileSpecification `locationName:"iamInstanceProfile" type:"structure"` + + // The ID of the AMI. + ImageId *string `locationName:"imageId" type:"string"` + + // The instance type. + InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` + + // The ID of the kernel. + KernelId *string `locationName:"kernelId" type:"string"` + + // The name of the key pair. + KeyName *string `locationName:"keyName" type:"string"` + + // Describes the monitoring of an instance. + Monitoring *RunInstancesMonitoringEnabled `locationName:"monitoring" type:"structure"` + + // One or more network interfaces. If you specify a network interface, you must + // specify subnet IDs and security group IDs using the network interface. + NetworkInterfaces []*InstanceNetworkInterfaceSpecification `locationName:"networkInterfaceSet" locationNameList:"item" type:"list"` + + // The placement information for the instance. + Placement *SpotPlacement `locationName:"placement" type:"structure"` + + // The ID of the RAM disk. + RamdiskId *string `locationName:"ramdiskId" type:"string"` + + // One or more security groups. When requesting instances in a VPC, you must + // specify the IDs of the security groups. When requesting instances in EC2-Classic, + // you can specify the names or the IDs of the security groups. + SecurityGroups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"` + + // The ID of the subnet in which to launch the instance. + SubnetId *string `locationName:"subnetId" type:"string"` + + // The Base64-encoded user data for the instance. + UserData *string `locationName:"userData" type:"string"` +} + +// String returns the string representation +func (s LaunchSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchSpecification) GoString() string { + return s.String() +} + +// SetAddressingType sets the AddressingType field's value. +func (s *LaunchSpecification) SetAddressingType(v string) *LaunchSpecification { + s.AddressingType = &v + return s +} + +// SetBlockDeviceMappings sets the BlockDeviceMappings field's value. +func (s *LaunchSpecification) SetBlockDeviceMappings(v []*BlockDeviceMapping) *LaunchSpecification { + s.BlockDeviceMappings = v + return s +} + +// SetEbsOptimized sets the EbsOptimized field's value. +func (s *LaunchSpecification) SetEbsOptimized(v bool) *LaunchSpecification { + s.EbsOptimized = &v + return s +} + +// SetIamInstanceProfile sets the IamInstanceProfile field's value. +func (s *LaunchSpecification) SetIamInstanceProfile(v *IamInstanceProfileSpecification) *LaunchSpecification { + s.IamInstanceProfile = v + return s +} + +// SetImageId sets the ImageId field's value. +func (s *LaunchSpecification) SetImageId(v string) *LaunchSpecification { + s.ImageId = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *LaunchSpecification) SetInstanceType(v string) *LaunchSpecification { + s.InstanceType = &v + return s +} + +// SetKernelId sets the KernelId field's value. +func (s *LaunchSpecification) SetKernelId(v string) *LaunchSpecification { + s.KernelId = &v + return s +} + +// SetKeyName sets the KeyName field's value. +func (s *LaunchSpecification) SetKeyName(v string) *LaunchSpecification { + s.KeyName = &v + return s +} + +// SetMonitoring sets the Monitoring field's value. +func (s *LaunchSpecification) SetMonitoring(v *RunInstancesMonitoringEnabled) *LaunchSpecification { + s.Monitoring = v + return s +} + +// SetNetworkInterfaces sets the NetworkInterfaces field's value. +func (s *LaunchSpecification) SetNetworkInterfaces(v []*InstanceNetworkInterfaceSpecification) *LaunchSpecification { + s.NetworkInterfaces = v + return s +} + +// SetPlacement sets the Placement field's value. +func (s *LaunchSpecification) SetPlacement(v *SpotPlacement) *LaunchSpecification { + s.Placement = v + return s +} + +// SetRamdiskId sets the RamdiskId field's value. +func (s *LaunchSpecification) SetRamdiskId(v string) *LaunchSpecification { + s.RamdiskId = &v + return s +} + +// SetSecurityGroups sets the SecurityGroups field's value. +func (s *LaunchSpecification) SetSecurityGroups(v []*GroupIdentifier) *LaunchSpecification { + s.SecurityGroups = v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *LaunchSpecification) SetSubnetId(v string) *LaunchSpecification { + s.SubnetId = &v + return s +} + +// SetUserData sets the UserData field's value. +func (s *LaunchSpecification) SetUserData(v string) *LaunchSpecification { + s.UserData = &v + return s +} + +// Describes a launch template. +type LaunchTemplate struct { + _ struct{} `type:"structure"` + + // The time launch template was created. + CreateTime *time.Time `locationName:"createTime" type:"timestamp"` + + // The principal that created the launch template. + CreatedBy *string `locationName:"createdBy" type:"string"` + + // The version number of the default version of the launch template. + DefaultVersionNumber *int64 `locationName:"defaultVersionNumber" type:"long"` + + // The version number of the latest version of the launch template. + LatestVersionNumber *int64 `locationName:"latestVersionNumber" type:"long"` + + // The ID of the launch template. + LaunchTemplateId *string `locationName:"launchTemplateId" type:"string"` + + // The name of the launch template. + LaunchTemplateName *string `locationName:"launchTemplateName" min:"3" type:"string"` + + // The tags for the launch template. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s LaunchTemplate) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplate) GoString() string { + return s.String() +} + +// SetCreateTime sets the CreateTime field's value. +func (s *LaunchTemplate) SetCreateTime(v time.Time) *LaunchTemplate { + s.CreateTime = &v + return s +} + +// SetCreatedBy sets the CreatedBy field's value. +func (s *LaunchTemplate) SetCreatedBy(v string) *LaunchTemplate { + s.CreatedBy = &v + return s +} + +// SetDefaultVersionNumber sets the DefaultVersionNumber field's value. +func (s *LaunchTemplate) SetDefaultVersionNumber(v int64) *LaunchTemplate { + s.DefaultVersionNumber = &v + return s +} + +// SetLatestVersionNumber sets the LatestVersionNumber field's value. +func (s *LaunchTemplate) SetLatestVersionNumber(v int64) *LaunchTemplate { + s.LatestVersionNumber = &v + return s +} + +// SetLaunchTemplateId sets the LaunchTemplateId field's value. +func (s *LaunchTemplate) SetLaunchTemplateId(v string) *LaunchTemplate { + s.LaunchTemplateId = &v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *LaunchTemplate) SetLaunchTemplateName(v string) *LaunchTemplate { + s.LaunchTemplateName = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *LaunchTemplate) SetTags(v []*Tag) *LaunchTemplate { + s.Tags = v + return s +} + +// Describes a launch template and overrides. +type LaunchTemplateAndOverridesResponse struct { + _ struct{} `type:"structure"` + + // The launch template. + LaunchTemplateSpecification *FleetLaunchTemplateSpecification `locationName:"launchTemplateSpecification" type:"structure"` + + // Any parameters that you specify override the same parameters in the launch + // template. + Overrides *FleetLaunchTemplateOverrides `locationName:"overrides" type:"structure"` +} + +// String returns the string representation +func (s LaunchTemplateAndOverridesResponse) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateAndOverridesResponse) GoString() string { + return s.String() +} + +// SetLaunchTemplateSpecification sets the LaunchTemplateSpecification field's value. +func (s *LaunchTemplateAndOverridesResponse) SetLaunchTemplateSpecification(v *FleetLaunchTemplateSpecification) *LaunchTemplateAndOverridesResponse { + s.LaunchTemplateSpecification = v + return s +} + +// SetOverrides sets the Overrides field's value. +func (s *LaunchTemplateAndOverridesResponse) SetOverrides(v *FleetLaunchTemplateOverrides) *LaunchTemplateAndOverridesResponse { + s.Overrides = v + return s +} + +// Describes a block device mapping. +type LaunchTemplateBlockDeviceMapping struct { + _ struct{} `type:"structure"` + + // The device name. + DeviceName *string `locationName:"deviceName" type:"string"` + + // Information about the block device for an EBS volume. + Ebs *LaunchTemplateEbsBlockDevice `locationName:"ebs" type:"structure"` + + // Suppresses the specified device included in the block device mapping of the + // AMI. + NoDevice *string `locationName:"noDevice" type:"string"` + + // The virtual device name (ephemeralN). + VirtualName *string `locationName:"virtualName" type:"string"` +} + +// String returns the string representation +func (s LaunchTemplateBlockDeviceMapping) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateBlockDeviceMapping) GoString() string { + return s.String() +} + +// SetDeviceName sets the DeviceName field's value. +func (s *LaunchTemplateBlockDeviceMapping) SetDeviceName(v string) *LaunchTemplateBlockDeviceMapping { + s.DeviceName = &v + return s +} + +// SetEbs sets the Ebs field's value. +func (s *LaunchTemplateBlockDeviceMapping) SetEbs(v *LaunchTemplateEbsBlockDevice) *LaunchTemplateBlockDeviceMapping { + s.Ebs = v + return s +} + +// SetNoDevice sets the NoDevice field's value. +func (s *LaunchTemplateBlockDeviceMapping) SetNoDevice(v string) *LaunchTemplateBlockDeviceMapping { + s.NoDevice = &v + return s +} + +// SetVirtualName sets the VirtualName field's value. +func (s *LaunchTemplateBlockDeviceMapping) SetVirtualName(v string) *LaunchTemplateBlockDeviceMapping { + s.VirtualName = &v + return s +} + +// Describes a block device mapping. +type LaunchTemplateBlockDeviceMappingRequest struct { + _ struct{} `type:"structure"` + + // The device name (for example, /dev/sdh or xvdh). + DeviceName *string `type:"string"` + + // Parameters used to automatically set up EBS volumes when the instance is + // launched. + Ebs *LaunchTemplateEbsBlockDeviceRequest `type:"structure"` + + // Suppresses the specified device included in the block device mapping of the + // AMI. + NoDevice *string `type:"string"` + + // The virtual device name (ephemeralN). Instance store volumes are numbered + // starting from 0. An instance type with 2 available instance store volumes + // can specify mappings for ephemeral0 and ephemeral1. The number of available + // instance store volumes depends on the instance type. After you connect to + // the instance, you must mount the volume. + VirtualName *string `type:"string"` +} + +// String returns the string representation +func (s LaunchTemplateBlockDeviceMappingRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateBlockDeviceMappingRequest) GoString() string { + return s.String() +} + +// SetDeviceName sets the DeviceName field's value. +func (s *LaunchTemplateBlockDeviceMappingRequest) SetDeviceName(v string) *LaunchTemplateBlockDeviceMappingRequest { + s.DeviceName = &v + return s +} + +// SetEbs sets the Ebs field's value. +func (s *LaunchTemplateBlockDeviceMappingRequest) SetEbs(v *LaunchTemplateEbsBlockDeviceRequest) *LaunchTemplateBlockDeviceMappingRequest { + s.Ebs = v + return s +} + +// SetNoDevice sets the NoDevice field's value. +func (s *LaunchTemplateBlockDeviceMappingRequest) SetNoDevice(v string) *LaunchTemplateBlockDeviceMappingRequest { + s.NoDevice = &v + return s +} + +// SetVirtualName sets the VirtualName field's value. +func (s *LaunchTemplateBlockDeviceMappingRequest) SetVirtualName(v string) *LaunchTemplateBlockDeviceMappingRequest { + s.VirtualName = &v + return s +} + +// Describes an instance's Capacity Reservation targeting option. You can specify +// only one option at a time. Use the CapacityReservationPreference parameter +// to configure the instance to run in On-Demand capacity or to run in any open +// Capacity Reservation that has matching attributes (instance type, platform, +// Availability Zone). Use the CapacityReservationTarget parameter to explicitly +// target a specific Capacity Reservation. +type LaunchTemplateCapacityReservationSpecificationRequest struct { + _ struct{} `type:"structure"` + + // Indicates the instance's Capacity Reservation preferences. Possible preferences + // include: + // + // * open - The instance can run in any open Capacity Reservation that has + // matching attributes (instance type, platform, Availability Zone). + // + // * none - The instance avoids running in a Capacity Reservation even if + // one is available. The instance runs in On-Demand capacity. + CapacityReservationPreference *string `type:"string" enum:"CapacityReservationPreference"` + + // Information about the target Capacity Reservation. + CapacityReservationTarget *CapacityReservationTarget `type:"structure"` +} + +// String returns the string representation +func (s LaunchTemplateCapacityReservationSpecificationRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateCapacityReservationSpecificationRequest) GoString() string { + return s.String() +} + +// SetCapacityReservationPreference sets the CapacityReservationPreference field's value. +func (s *LaunchTemplateCapacityReservationSpecificationRequest) SetCapacityReservationPreference(v string) *LaunchTemplateCapacityReservationSpecificationRequest { + s.CapacityReservationPreference = &v + return s +} + +// SetCapacityReservationTarget sets the CapacityReservationTarget field's value. +func (s *LaunchTemplateCapacityReservationSpecificationRequest) SetCapacityReservationTarget(v *CapacityReservationTarget) *LaunchTemplateCapacityReservationSpecificationRequest { + s.CapacityReservationTarget = v + return s +} + +// Information about the Capacity Reservation targeting option. +type LaunchTemplateCapacityReservationSpecificationResponse struct { + _ struct{} `type:"structure"` + + // Indicates the instance's Capacity Reservation preferences. Possible preferences + // include: + // + // * open - The instance can run in any open Capacity Reservation that has + // matching attributes (instance type, platform, Availability Zone). + // + // * none - The instance avoids running in a Capacity Reservation even if + // one is available. The instance runs in On-Demand capacity. + CapacityReservationPreference *string `locationName:"capacityReservationPreference" type:"string" enum:"CapacityReservationPreference"` + + // Information about the target Capacity Reservation. + CapacityReservationTarget *CapacityReservationTargetResponse `locationName:"capacityReservationTarget" type:"structure"` +} + +// String returns the string representation +func (s LaunchTemplateCapacityReservationSpecificationResponse) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateCapacityReservationSpecificationResponse) GoString() string { + return s.String() +} + +// SetCapacityReservationPreference sets the CapacityReservationPreference field's value. +func (s *LaunchTemplateCapacityReservationSpecificationResponse) SetCapacityReservationPreference(v string) *LaunchTemplateCapacityReservationSpecificationResponse { + s.CapacityReservationPreference = &v + return s +} + +// SetCapacityReservationTarget sets the CapacityReservationTarget field's value. +func (s *LaunchTemplateCapacityReservationSpecificationResponse) SetCapacityReservationTarget(v *CapacityReservationTargetResponse) *LaunchTemplateCapacityReservationSpecificationResponse { + s.CapacityReservationTarget = v + return s +} + +// Describes a launch template and overrides. +type LaunchTemplateConfig struct { + _ struct{} `type:"structure"` + + // The launch template. + LaunchTemplateSpecification *FleetLaunchTemplateSpecification `locationName:"launchTemplateSpecification" type:"structure"` + + // Any parameters that you specify override the same parameters in the launch + // template. + Overrides []*LaunchTemplateOverrides `locationName:"overrides" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s LaunchTemplateConfig) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateConfig) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *LaunchTemplateConfig) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "LaunchTemplateConfig"} + if s.LaunchTemplateSpecification != nil { + if err := s.LaunchTemplateSpecification.Validate(); err != nil { + invalidParams.AddNested("LaunchTemplateSpecification", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetLaunchTemplateSpecification sets the LaunchTemplateSpecification field's value. +func (s *LaunchTemplateConfig) SetLaunchTemplateSpecification(v *FleetLaunchTemplateSpecification) *LaunchTemplateConfig { + s.LaunchTemplateSpecification = v + return s +} + +// SetOverrides sets the Overrides field's value. +func (s *LaunchTemplateConfig) SetOverrides(v []*LaunchTemplateOverrides) *LaunchTemplateConfig { + s.Overrides = v + return s +} + +// The CPU options for the instance. +type LaunchTemplateCpuOptions struct { + _ struct{} `type:"structure"` + + // The number of CPU cores for the instance. + CoreCount *int64 `locationName:"coreCount" type:"integer"` + + // The number of threads per CPU core. + ThreadsPerCore *int64 `locationName:"threadsPerCore" type:"integer"` +} + +// String returns the string representation +func (s LaunchTemplateCpuOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateCpuOptions) GoString() string { + return s.String() +} + +// SetCoreCount sets the CoreCount field's value. +func (s *LaunchTemplateCpuOptions) SetCoreCount(v int64) *LaunchTemplateCpuOptions { + s.CoreCount = &v + return s +} + +// SetThreadsPerCore sets the ThreadsPerCore field's value. +func (s *LaunchTemplateCpuOptions) SetThreadsPerCore(v int64) *LaunchTemplateCpuOptions { + s.ThreadsPerCore = &v + return s +} + +// The CPU options for the instance. Both the core count and threads per core +// must be specified in the request. +type LaunchTemplateCpuOptionsRequest struct { + _ struct{} `type:"structure"` + + // The number of CPU cores for the instance. + CoreCount *int64 `type:"integer"` + + // The number of threads per CPU core. To disable multithreading for the instance, + // specify a value of 1. Otherwise, specify the default value of 2. + ThreadsPerCore *int64 `type:"integer"` +} + +// String returns the string representation +func (s LaunchTemplateCpuOptionsRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateCpuOptionsRequest) GoString() string { + return s.String() +} + +// SetCoreCount sets the CoreCount field's value. +func (s *LaunchTemplateCpuOptionsRequest) SetCoreCount(v int64) *LaunchTemplateCpuOptionsRequest { + s.CoreCount = &v + return s +} + +// SetThreadsPerCore sets the ThreadsPerCore field's value. +func (s *LaunchTemplateCpuOptionsRequest) SetThreadsPerCore(v int64) *LaunchTemplateCpuOptionsRequest { + s.ThreadsPerCore = &v + return s +} + +// Describes a block device for an EBS volume. +type LaunchTemplateEbsBlockDevice struct { + _ struct{} `type:"structure"` + + // Indicates whether the EBS volume is deleted on instance termination. + DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"` + + // Indicates whether the EBS volume is encrypted. + Encrypted *bool `locationName:"encrypted" type:"boolean"` + + // The number of I/O operations per second (IOPS) that the volume supports. + Iops *int64 `locationName:"iops" type:"integer"` + + // The ARN of the AWS Key Management Service (AWS KMS) CMK used for encryption. + KmsKeyId *string `locationName:"kmsKeyId" type:"string"` + + // The ID of the snapshot. + SnapshotId *string `locationName:"snapshotId" type:"string"` + + // The size of the volume, in GiB. + VolumeSize *int64 `locationName:"volumeSize" type:"integer"` + + // The volume type. + VolumeType *string `locationName:"volumeType" type:"string" enum:"VolumeType"` +} + +// String returns the string representation +func (s LaunchTemplateEbsBlockDevice) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateEbsBlockDevice) GoString() string { + return s.String() +} + +// SetDeleteOnTermination sets the DeleteOnTermination field's value. +func (s *LaunchTemplateEbsBlockDevice) SetDeleteOnTermination(v bool) *LaunchTemplateEbsBlockDevice { + s.DeleteOnTermination = &v + return s +} + +// SetEncrypted sets the Encrypted field's value. +func (s *LaunchTemplateEbsBlockDevice) SetEncrypted(v bool) *LaunchTemplateEbsBlockDevice { + s.Encrypted = &v + return s +} + +// SetIops sets the Iops field's value. +func (s *LaunchTemplateEbsBlockDevice) SetIops(v int64) *LaunchTemplateEbsBlockDevice { + s.Iops = &v + return s +} + +// SetKmsKeyId sets the KmsKeyId field's value. +func (s *LaunchTemplateEbsBlockDevice) SetKmsKeyId(v string) *LaunchTemplateEbsBlockDevice { + s.KmsKeyId = &v + return s +} + +// SetSnapshotId sets the SnapshotId field's value. +func (s *LaunchTemplateEbsBlockDevice) SetSnapshotId(v string) *LaunchTemplateEbsBlockDevice { + s.SnapshotId = &v + return s +} + +// SetVolumeSize sets the VolumeSize field's value. +func (s *LaunchTemplateEbsBlockDevice) SetVolumeSize(v int64) *LaunchTemplateEbsBlockDevice { + s.VolumeSize = &v + return s +} + +// SetVolumeType sets the VolumeType field's value. +func (s *LaunchTemplateEbsBlockDevice) SetVolumeType(v string) *LaunchTemplateEbsBlockDevice { + s.VolumeType = &v + return s +} + +// The parameters for a block device for an EBS volume. +type LaunchTemplateEbsBlockDeviceRequest struct { + _ struct{} `type:"structure"` + + // Indicates whether the EBS volume is deleted on instance termination. + DeleteOnTermination *bool `type:"boolean"` + + // Indicates whether the EBS volume is encrypted. Encrypted volumes can only + // be attached to instances that support Amazon EBS encryption. If you are creating + // a volume from a snapshot, you can't specify an encryption value. + Encrypted *bool `type:"boolean"` + + // The number of I/O operations per second (IOPS) that the volume supports. + // For io1, this represents the number of IOPS that are provisioned for the + // volume. For gp2, this represents the baseline performance of the volume and + // the rate at which the volume accumulates I/O credits for bursting. For more + // information about General Purpose SSD baseline performance, I/O credits, + // and bursting, see Amazon EBS Volume Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) + // in the Amazon Elastic Compute Cloud User Guide. + // + // Condition: This parameter is required for requests to create io1 volumes; + // it is not used in requests to create gp2, st1, sc1, or standard volumes. + Iops *int64 `type:"integer"` + + // The ARN of the AWS Key Management Service (AWS KMS) CMK used for encryption. + KmsKeyId *string `type:"string"` + + // The ID of the snapshot. + SnapshotId *string `type:"string"` + + // The size of the volume, in GiB. + // + // Default: If you're creating the volume from a snapshot and don't specify + // a volume size, the default is the snapshot size. + VolumeSize *int64 `type:"integer"` + + // The volume type. + VolumeType *string `type:"string" enum:"VolumeType"` +} + +// String returns the string representation +func (s LaunchTemplateEbsBlockDeviceRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateEbsBlockDeviceRequest) GoString() string { + return s.String() +} + +// SetDeleteOnTermination sets the DeleteOnTermination field's value. +func (s *LaunchTemplateEbsBlockDeviceRequest) SetDeleteOnTermination(v bool) *LaunchTemplateEbsBlockDeviceRequest { + s.DeleteOnTermination = &v + return s +} + +// SetEncrypted sets the Encrypted field's value. +func (s *LaunchTemplateEbsBlockDeviceRequest) SetEncrypted(v bool) *LaunchTemplateEbsBlockDeviceRequest { + s.Encrypted = &v + return s +} + +// SetIops sets the Iops field's value. +func (s *LaunchTemplateEbsBlockDeviceRequest) SetIops(v int64) *LaunchTemplateEbsBlockDeviceRequest { + s.Iops = &v + return s +} + +// SetKmsKeyId sets the KmsKeyId field's value. +func (s *LaunchTemplateEbsBlockDeviceRequest) SetKmsKeyId(v string) *LaunchTemplateEbsBlockDeviceRequest { + s.KmsKeyId = &v + return s +} + +// SetSnapshotId sets the SnapshotId field's value. +func (s *LaunchTemplateEbsBlockDeviceRequest) SetSnapshotId(v string) *LaunchTemplateEbsBlockDeviceRequest { + s.SnapshotId = &v + return s +} + +// SetVolumeSize sets the VolumeSize field's value. +func (s *LaunchTemplateEbsBlockDeviceRequest) SetVolumeSize(v int64) *LaunchTemplateEbsBlockDeviceRequest { + s.VolumeSize = &v + return s +} + +// SetVolumeType sets the VolumeType field's value. +func (s *LaunchTemplateEbsBlockDeviceRequest) SetVolumeType(v string) *LaunchTemplateEbsBlockDeviceRequest { + s.VolumeType = &v + return s +} + +// Describes an elastic inference accelerator. +type LaunchTemplateElasticInferenceAccelerator struct { + _ struct{} `type:"structure"` + + // The type of elastic inference accelerator. The possible values are eia1.medium, + // eia1.large, and eia1.xlarge. + // + // Type is a required field + Type *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s LaunchTemplateElasticInferenceAccelerator) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateElasticInferenceAccelerator) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *LaunchTemplateElasticInferenceAccelerator) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "LaunchTemplateElasticInferenceAccelerator"} + if s.Type == nil { + invalidParams.Add(request.NewErrParamRequired("Type")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetType sets the Type field's value. +func (s *LaunchTemplateElasticInferenceAccelerator) SetType(v string) *LaunchTemplateElasticInferenceAccelerator { + s.Type = &v + return s +} + +// Describes an elastic inference accelerator. +type LaunchTemplateElasticInferenceAcceleratorResponse struct { + _ struct{} `type:"structure"` + + // The type of elastic inference accelerator. The possible values are eia1.medium, + // eia1.large, and eia1.xlarge. + Type *string `locationName:"type" type:"string"` +} + +// String returns the string representation +func (s LaunchTemplateElasticInferenceAcceleratorResponse) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateElasticInferenceAcceleratorResponse) GoString() string { + return s.String() +} + +// SetType sets the Type field's value. +func (s *LaunchTemplateElasticInferenceAcceleratorResponse) SetType(v string) *LaunchTemplateElasticInferenceAcceleratorResponse { + s.Type = &v + return s +} + +// Indicates whether an instance is configured for hibernation. +type LaunchTemplateHibernationOptions struct { + _ struct{} `type:"structure"` + + // If this parameter is set to true, the instance is enabled for hibernation; + // otherwise, it is not enabled for hibernation. + Configured *bool `locationName:"configured" type:"boolean"` +} + +// String returns the string representation +func (s LaunchTemplateHibernationOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateHibernationOptions) GoString() string { + return s.String() +} + +// SetConfigured sets the Configured field's value. +func (s *LaunchTemplateHibernationOptions) SetConfigured(v bool) *LaunchTemplateHibernationOptions { + s.Configured = &v + return s +} + +// Indicates whether the instance is configured for hibernation. This parameter +// is valid only if the instance meets the hibernation prerequisites (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites). +type LaunchTemplateHibernationOptionsRequest struct { + _ struct{} `type:"structure"` + + // If you set this parameter to true, the instance is enabled for hibernation. + // + // Default: false + Configured *bool `type:"boolean"` +} + +// String returns the string representation +func (s LaunchTemplateHibernationOptionsRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateHibernationOptionsRequest) GoString() string { + return s.String() +} + +// SetConfigured sets the Configured field's value. +func (s *LaunchTemplateHibernationOptionsRequest) SetConfigured(v bool) *LaunchTemplateHibernationOptionsRequest { + s.Configured = &v + return s +} + +// Describes an IAM instance profile. +type LaunchTemplateIamInstanceProfileSpecification struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the instance profile. + Arn *string `locationName:"arn" type:"string"` + + // The name of the instance profile. + Name *string `locationName:"name" type:"string"` +} + +// String returns the string representation +func (s LaunchTemplateIamInstanceProfileSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateIamInstanceProfileSpecification) GoString() string { + return s.String() +} + +// SetArn sets the Arn field's value. +func (s *LaunchTemplateIamInstanceProfileSpecification) SetArn(v string) *LaunchTemplateIamInstanceProfileSpecification { + s.Arn = &v + return s +} + +// SetName sets the Name field's value. +func (s *LaunchTemplateIamInstanceProfileSpecification) SetName(v string) *LaunchTemplateIamInstanceProfileSpecification { + s.Name = &v + return s +} + +// An IAM instance profile. +type LaunchTemplateIamInstanceProfileSpecificationRequest struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the instance profile. + Arn *string `type:"string"` + + // The name of the instance profile. + Name *string `type:"string"` +} + +// String returns the string representation +func (s LaunchTemplateIamInstanceProfileSpecificationRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateIamInstanceProfileSpecificationRequest) GoString() string { + return s.String() +} + +// SetArn sets the Arn field's value. +func (s *LaunchTemplateIamInstanceProfileSpecificationRequest) SetArn(v string) *LaunchTemplateIamInstanceProfileSpecificationRequest { + s.Arn = &v + return s +} + +// SetName sets the Name field's value. +func (s *LaunchTemplateIamInstanceProfileSpecificationRequest) SetName(v string) *LaunchTemplateIamInstanceProfileSpecificationRequest { + s.Name = &v + return s +} + +// The market (purchasing) option for the instances. +type LaunchTemplateInstanceMarketOptions struct { + _ struct{} `type:"structure"` + + // The market type. + MarketType *string `locationName:"marketType" type:"string" enum:"MarketType"` + + // The options for Spot Instances. + SpotOptions *LaunchTemplateSpotMarketOptions `locationName:"spotOptions" type:"structure"` +} + +// String returns the string representation +func (s LaunchTemplateInstanceMarketOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateInstanceMarketOptions) GoString() string { + return s.String() +} + +// SetMarketType sets the MarketType field's value. +func (s *LaunchTemplateInstanceMarketOptions) SetMarketType(v string) *LaunchTemplateInstanceMarketOptions { + s.MarketType = &v + return s +} + +// SetSpotOptions sets the SpotOptions field's value. +func (s *LaunchTemplateInstanceMarketOptions) SetSpotOptions(v *LaunchTemplateSpotMarketOptions) *LaunchTemplateInstanceMarketOptions { + s.SpotOptions = v + return s +} + +// The market (purchasing) option for the instances. +type LaunchTemplateInstanceMarketOptionsRequest struct { + _ struct{} `type:"structure"` + + // The market type. + MarketType *string `type:"string" enum:"MarketType"` + + // The options for Spot Instances. + SpotOptions *LaunchTemplateSpotMarketOptionsRequest `type:"structure"` +} + +// String returns the string representation +func (s LaunchTemplateInstanceMarketOptionsRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateInstanceMarketOptionsRequest) GoString() string { + return s.String() +} + +// SetMarketType sets the MarketType field's value. +func (s *LaunchTemplateInstanceMarketOptionsRequest) SetMarketType(v string) *LaunchTemplateInstanceMarketOptionsRequest { + s.MarketType = &v + return s +} + +// SetSpotOptions sets the SpotOptions field's value. +func (s *LaunchTemplateInstanceMarketOptionsRequest) SetSpotOptions(v *LaunchTemplateSpotMarketOptionsRequest) *LaunchTemplateInstanceMarketOptionsRequest { + s.SpotOptions = v + return s +} + +// Describes a network interface. +type LaunchTemplateInstanceNetworkInterfaceSpecification struct { + _ struct{} `type:"structure"` + + // Indicates whether to associate a public IPv4 address with eth0 for a new + // network interface. + AssociatePublicIpAddress *bool `locationName:"associatePublicIpAddress" type:"boolean"` + + // Indicates whether the network interface is deleted when the instance is terminated. + DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"` + + // A description for the network interface. + Description *string `locationName:"description" type:"string"` + + // The device index for the network interface attachment. + DeviceIndex *int64 `locationName:"deviceIndex" type:"integer"` + + // The IDs of one or more security groups. + Groups []*string `locationName:"groupSet" locationNameList:"groupId" type:"list"` + + // The type of network interface. + InterfaceType *string `locationName:"interfaceType" type:"string"` + + // The number of IPv6 addresses for the network interface. + Ipv6AddressCount *int64 `locationName:"ipv6AddressCount" type:"integer"` + + // The IPv6 addresses for the network interface. + Ipv6Addresses []*InstanceIpv6Address `locationName:"ipv6AddressesSet" locationNameList:"item" type:"list"` + + // The ID of the network interface. + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` + + // The primary private IPv4 address of the network interface. + PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` + + // One or more private IPv4 addresses. + PrivateIpAddresses []*PrivateIpAddressSpecification `locationName:"privateIpAddressesSet" locationNameList:"item" type:"list"` + + // The number of secondary private IPv4 addresses for the network interface. + SecondaryPrivateIpAddressCount *int64 `locationName:"secondaryPrivateIpAddressCount" type:"integer"` + + // The ID of the subnet for the network interface. + SubnetId *string `locationName:"subnetId" type:"string"` +} + +// String returns the string representation +func (s LaunchTemplateInstanceNetworkInterfaceSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateInstanceNetworkInterfaceSpecification) GoString() string { + return s.String() +} + +// SetAssociatePublicIpAddress sets the AssociatePublicIpAddress field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetAssociatePublicIpAddress(v bool) *LaunchTemplateInstanceNetworkInterfaceSpecification { + s.AssociatePublicIpAddress = &v + return s +} + +// SetDeleteOnTermination sets the DeleteOnTermination field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetDeleteOnTermination(v bool) *LaunchTemplateInstanceNetworkInterfaceSpecification { + s.DeleteOnTermination = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetDescription(v string) *LaunchTemplateInstanceNetworkInterfaceSpecification { + s.Description = &v + return s +} + +// SetDeviceIndex sets the DeviceIndex field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetDeviceIndex(v int64) *LaunchTemplateInstanceNetworkInterfaceSpecification { + s.DeviceIndex = &v + return s +} + +// SetGroups sets the Groups field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetGroups(v []*string) *LaunchTemplateInstanceNetworkInterfaceSpecification { + s.Groups = v + return s +} + +// SetInterfaceType sets the InterfaceType field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetInterfaceType(v string) *LaunchTemplateInstanceNetworkInterfaceSpecification { + s.InterfaceType = &v + return s +} + +// SetIpv6AddressCount sets the Ipv6AddressCount field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetIpv6AddressCount(v int64) *LaunchTemplateInstanceNetworkInterfaceSpecification { + s.Ipv6AddressCount = &v + return s +} + +// SetIpv6Addresses sets the Ipv6Addresses field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetIpv6Addresses(v []*InstanceIpv6Address) *LaunchTemplateInstanceNetworkInterfaceSpecification { + s.Ipv6Addresses = v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetNetworkInterfaceId(v string) *LaunchTemplateInstanceNetworkInterfaceSpecification { + s.NetworkInterfaceId = &v + return s +} + +// SetPrivateIpAddress sets the PrivateIpAddress field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetPrivateIpAddress(v string) *LaunchTemplateInstanceNetworkInterfaceSpecification { + s.PrivateIpAddress = &v + return s +} + +// SetPrivateIpAddresses sets the PrivateIpAddresses field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetPrivateIpAddresses(v []*PrivateIpAddressSpecification) *LaunchTemplateInstanceNetworkInterfaceSpecification { + s.PrivateIpAddresses = v + return s +} + +// SetSecondaryPrivateIpAddressCount sets the SecondaryPrivateIpAddressCount field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetSecondaryPrivateIpAddressCount(v int64) *LaunchTemplateInstanceNetworkInterfaceSpecification { + s.SecondaryPrivateIpAddressCount = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecification) SetSubnetId(v string) *LaunchTemplateInstanceNetworkInterfaceSpecification { + s.SubnetId = &v + return s +} + +// The parameters for a network interface. +type LaunchTemplateInstanceNetworkInterfaceSpecificationRequest struct { + _ struct{} `type:"structure"` + + // Associates a public IPv4 address with eth0 for a new network interface. + AssociatePublicIpAddress *bool `type:"boolean"` + + // Indicates whether the network interface is deleted when the instance is terminated. + DeleteOnTermination *bool `type:"boolean"` + + // A description for the network interface. + Description *string `type:"string"` + + // The device index for the network interface attachment. + DeviceIndex *int64 `type:"integer"` + + // The IDs of one or more security groups. + Groups []*string `locationName:"SecurityGroupId" locationNameList:"SecurityGroupId" type:"list"` + + // The type of network interface. To create an Elastic Fabric Adapter (EFA), + // specify efa. For more information, see Elastic Fabric Adapter (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html) + // in the Amazon Elastic Compute Cloud User Guide. + // + // If you are not creating an EFA, specify interface or omit this parameter. + // + // Valid values: interface | efa + InterfaceType *string `type:"string"` + + // The number of IPv6 addresses to assign to a network interface. Amazon EC2 + // automatically selects the IPv6 addresses from the subnet range. You can't + // use this option if specifying specific IPv6 addresses. + Ipv6AddressCount *int64 `type:"integer"` + + // One or more specific IPv6 addresses from the IPv6 CIDR block range of your + // subnet. You can't use this option if you're specifying a number of IPv6 addresses. + Ipv6Addresses []*InstanceIpv6AddressRequest `locationNameList:"InstanceIpv6Address" type:"list"` + + // The ID of the network interface. + NetworkInterfaceId *string `type:"string"` + + // The primary private IPv4 address of the network interface. + PrivateIpAddress *string `type:"string"` + + // One or more private IPv4 addresses. + PrivateIpAddresses []*PrivateIpAddressSpecification `locationNameList:"item" type:"list"` + + // The number of secondary private IPv4 addresses to assign to a network interface. + SecondaryPrivateIpAddressCount *int64 `type:"integer"` + + // The ID of the subnet for the network interface. + SubnetId *string `type:"string"` +} + +// String returns the string representation +func (s LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) GoString() string { + return s.String() +} + +// SetAssociatePublicIpAddress sets the AssociatePublicIpAddress field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetAssociatePublicIpAddress(v bool) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest { + s.AssociatePublicIpAddress = &v + return s +} + +// SetDeleteOnTermination sets the DeleteOnTermination field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetDeleteOnTermination(v bool) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest { + s.DeleteOnTermination = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetDescription(v string) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest { + s.Description = &v + return s +} + +// SetDeviceIndex sets the DeviceIndex field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetDeviceIndex(v int64) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest { + s.DeviceIndex = &v + return s +} + +// SetGroups sets the Groups field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetGroups(v []*string) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest { + s.Groups = v + return s +} + +// SetInterfaceType sets the InterfaceType field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetInterfaceType(v string) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest { + s.InterfaceType = &v + return s +} + +// SetIpv6AddressCount sets the Ipv6AddressCount field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetIpv6AddressCount(v int64) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest { + s.Ipv6AddressCount = &v + return s +} + +// SetIpv6Addresses sets the Ipv6Addresses field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetIpv6Addresses(v []*InstanceIpv6AddressRequest) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest { + s.Ipv6Addresses = v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetNetworkInterfaceId(v string) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest { + s.NetworkInterfaceId = &v + return s +} + +// SetPrivateIpAddress sets the PrivateIpAddress field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetPrivateIpAddress(v string) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest { + s.PrivateIpAddress = &v + return s +} + +// SetPrivateIpAddresses sets the PrivateIpAddresses field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetPrivateIpAddresses(v []*PrivateIpAddressSpecification) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest { + s.PrivateIpAddresses = v + return s +} + +// SetSecondaryPrivateIpAddressCount sets the SecondaryPrivateIpAddressCount field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetSecondaryPrivateIpAddressCount(v int64) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest { + s.SecondaryPrivateIpAddressCount = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetSubnetId(v string) *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest { + s.SubnetId = &v + return s +} + +// Describes a license configuration. +type LaunchTemplateLicenseConfiguration struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the license configuration. + LicenseConfigurationArn *string `locationName:"licenseConfigurationArn" type:"string"` +} + +// String returns the string representation +func (s LaunchTemplateLicenseConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateLicenseConfiguration) GoString() string { + return s.String() +} + +// SetLicenseConfigurationArn sets the LicenseConfigurationArn field's value. +func (s *LaunchTemplateLicenseConfiguration) SetLicenseConfigurationArn(v string) *LaunchTemplateLicenseConfiguration { + s.LicenseConfigurationArn = &v + return s +} + +// Describes a license configuration. +type LaunchTemplateLicenseConfigurationRequest struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the license configuration. + LicenseConfigurationArn *string `type:"string"` +} + +// String returns the string representation +func (s LaunchTemplateLicenseConfigurationRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateLicenseConfigurationRequest) GoString() string { + return s.String() +} + +// SetLicenseConfigurationArn sets the LicenseConfigurationArn field's value. +func (s *LaunchTemplateLicenseConfigurationRequest) SetLicenseConfigurationArn(v string) *LaunchTemplateLicenseConfigurationRequest { + s.LicenseConfigurationArn = &v + return s +} + +// Describes overrides for a launch template. +type LaunchTemplateOverrides struct { + _ struct{} `type:"structure"` + + // The Availability Zone in which to launch the instances. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // The instance type. + InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` + + // The priority for the launch template override. If OnDemandAllocationStrategy + // is set to prioritized, Spot Fleet uses priority to determine which launch + // template override to use first in fulfilling On-Demand capacity. The highest + // priority is launched first. Valid values are whole numbers starting at 0. + // The lower the number, the higher the priority. If no number is set, the launch + // template override has the lowest priority. + Priority *float64 `locationName:"priority" type:"double"` + + // The maximum price per unit hour that you are willing to pay for a Spot Instance. + SpotPrice *string `locationName:"spotPrice" type:"string"` + + // The ID of the subnet in which to launch the instances. + SubnetId *string `locationName:"subnetId" type:"string"` + + // The number of units provided by the specified instance type. + WeightedCapacity *float64 `locationName:"weightedCapacity" type:"double"` +} + +// String returns the string representation +func (s LaunchTemplateOverrides) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateOverrides) GoString() string { + return s.String() +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *LaunchTemplateOverrides) SetAvailabilityZone(v string) *LaunchTemplateOverrides { + s.AvailabilityZone = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *LaunchTemplateOverrides) SetInstanceType(v string) *LaunchTemplateOverrides { + s.InstanceType = &v + return s +} + +// SetPriority sets the Priority field's value. +func (s *LaunchTemplateOverrides) SetPriority(v float64) *LaunchTemplateOverrides { + s.Priority = &v + return s +} + +// SetSpotPrice sets the SpotPrice field's value. +func (s *LaunchTemplateOverrides) SetSpotPrice(v string) *LaunchTemplateOverrides { + s.SpotPrice = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *LaunchTemplateOverrides) SetSubnetId(v string) *LaunchTemplateOverrides { + s.SubnetId = &v + return s +} + +// SetWeightedCapacity sets the WeightedCapacity field's value. +func (s *LaunchTemplateOverrides) SetWeightedCapacity(v float64) *LaunchTemplateOverrides { + s.WeightedCapacity = &v + return s +} + +// Describes the placement of an instance. +type LaunchTemplatePlacement struct { + _ struct{} `type:"structure"` + + // The affinity setting for the instance on the Dedicated Host. + Affinity *string `locationName:"affinity" type:"string"` + + // The Availability Zone of the instance. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // The name of the placement group for the instance. + GroupName *string `locationName:"groupName" type:"string"` + + // The ID of the Dedicated Host for the instance. + HostId *string `locationName:"hostId" type:"string"` + + // Reserved for future use. + SpreadDomain *string `locationName:"spreadDomain" type:"string"` + + // The tenancy of the instance (if the instance is running in a VPC). An instance + // with a tenancy of dedicated runs on single-tenant hardware. + Tenancy *string `locationName:"tenancy" type:"string" enum:"Tenancy"` +} + +// String returns the string representation +func (s LaunchTemplatePlacement) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplatePlacement) GoString() string { + return s.String() +} + +// SetAffinity sets the Affinity field's value. +func (s *LaunchTemplatePlacement) SetAffinity(v string) *LaunchTemplatePlacement { + s.Affinity = &v + return s +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *LaunchTemplatePlacement) SetAvailabilityZone(v string) *LaunchTemplatePlacement { + s.AvailabilityZone = &v + return s +} + +// SetGroupName sets the GroupName field's value. +func (s *LaunchTemplatePlacement) SetGroupName(v string) *LaunchTemplatePlacement { + s.GroupName = &v + return s +} + +// SetHostId sets the HostId field's value. +func (s *LaunchTemplatePlacement) SetHostId(v string) *LaunchTemplatePlacement { + s.HostId = &v + return s +} + +// SetSpreadDomain sets the SpreadDomain field's value. +func (s *LaunchTemplatePlacement) SetSpreadDomain(v string) *LaunchTemplatePlacement { + s.SpreadDomain = &v + return s +} + +// SetTenancy sets the Tenancy field's value. +func (s *LaunchTemplatePlacement) SetTenancy(v string) *LaunchTemplatePlacement { + s.Tenancy = &v + return s +} + +// Describes the placement of an instance. +type LaunchTemplatePlacementRequest struct { + _ struct{} `type:"structure"` + + // The affinity setting for an instance on a Dedicated Host. + Affinity *string `type:"string"` + + // The Availability Zone for the instance. + AvailabilityZone *string `type:"string"` + + // The name of the placement group for the instance. + GroupName *string `type:"string"` + + // The ID of the Dedicated Host for the instance. + HostId *string `type:"string"` + + // Reserved for future use. + SpreadDomain *string `type:"string"` + + // The tenancy of the instance (if the instance is running in a VPC). An instance + // with a tenancy of dedicated runs on single-tenant hardware. + Tenancy *string `type:"string" enum:"Tenancy"` +} + +// String returns the string representation +func (s LaunchTemplatePlacementRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplatePlacementRequest) GoString() string { + return s.String() +} + +// SetAffinity sets the Affinity field's value. +func (s *LaunchTemplatePlacementRequest) SetAffinity(v string) *LaunchTemplatePlacementRequest { + s.Affinity = &v + return s +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *LaunchTemplatePlacementRequest) SetAvailabilityZone(v string) *LaunchTemplatePlacementRequest { + s.AvailabilityZone = &v + return s +} + +// SetGroupName sets the GroupName field's value. +func (s *LaunchTemplatePlacementRequest) SetGroupName(v string) *LaunchTemplatePlacementRequest { + s.GroupName = &v + return s +} + +// SetHostId sets the HostId field's value. +func (s *LaunchTemplatePlacementRequest) SetHostId(v string) *LaunchTemplatePlacementRequest { + s.HostId = &v + return s +} + +// SetSpreadDomain sets the SpreadDomain field's value. +func (s *LaunchTemplatePlacementRequest) SetSpreadDomain(v string) *LaunchTemplatePlacementRequest { + s.SpreadDomain = &v + return s +} + +// SetTenancy sets the Tenancy field's value. +func (s *LaunchTemplatePlacementRequest) SetTenancy(v string) *LaunchTemplatePlacementRequest { + s.Tenancy = &v + return s +} + +// The launch template to use. You must specify either the launch template ID +// or launch template name in the request, but not both. +type LaunchTemplateSpecification struct { + _ struct{} `type:"structure"` + + // The ID of the launch template. + LaunchTemplateId *string `type:"string"` + + // The name of the launch template. + LaunchTemplateName *string `type:"string"` + + // The version number of the launch template. + // + // Default: The default version for the launch template. + Version *string `type:"string"` +} + +// String returns the string representation +func (s LaunchTemplateSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateSpecification) GoString() string { + return s.String() +} + +// SetLaunchTemplateId sets the LaunchTemplateId field's value. +func (s *LaunchTemplateSpecification) SetLaunchTemplateId(v string) *LaunchTemplateSpecification { + s.LaunchTemplateId = &v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *LaunchTemplateSpecification) SetLaunchTemplateName(v string) *LaunchTemplateSpecification { + s.LaunchTemplateName = &v + return s +} + +// SetVersion sets the Version field's value. +func (s *LaunchTemplateSpecification) SetVersion(v string) *LaunchTemplateSpecification { + s.Version = &v + return s +} + +// The options for Spot Instances. +type LaunchTemplateSpotMarketOptions struct { + _ struct{} `type:"structure"` + + // The required duration for the Spot Instances (also known as Spot blocks), + // in minutes. This value must be a multiple of 60 (60, 120, 180, 240, 300, + // or 360). + BlockDurationMinutes *int64 `locationName:"blockDurationMinutes" type:"integer"` + + // The behavior when a Spot Instance is interrupted. + InstanceInterruptionBehavior *string `locationName:"instanceInterruptionBehavior" type:"string" enum:"InstanceInterruptionBehavior"` + + // The maximum hourly price you're willing to pay for the Spot Instances. + MaxPrice *string `locationName:"maxPrice" type:"string"` + + // The Spot Instance request type. + SpotInstanceType *string `locationName:"spotInstanceType" type:"string" enum:"SpotInstanceType"` + + // The end date of the request. For a one-time request, the request remains + // active until all instances launch, the request is canceled, or this date + // is reached. If the request is persistent, it remains active until it is canceled + // or this date and time is reached. + ValidUntil *time.Time `locationName:"validUntil" type:"timestamp"` +} + +// String returns the string representation +func (s LaunchTemplateSpotMarketOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateSpotMarketOptions) GoString() string { + return s.String() +} + +// SetBlockDurationMinutes sets the BlockDurationMinutes field's value. +func (s *LaunchTemplateSpotMarketOptions) SetBlockDurationMinutes(v int64) *LaunchTemplateSpotMarketOptions { + s.BlockDurationMinutes = &v + return s +} + +// SetInstanceInterruptionBehavior sets the InstanceInterruptionBehavior field's value. +func (s *LaunchTemplateSpotMarketOptions) SetInstanceInterruptionBehavior(v string) *LaunchTemplateSpotMarketOptions { + s.InstanceInterruptionBehavior = &v + return s +} + +// SetMaxPrice sets the MaxPrice field's value. +func (s *LaunchTemplateSpotMarketOptions) SetMaxPrice(v string) *LaunchTemplateSpotMarketOptions { + s.MaxPrice = &v + return s +} + +// SetSpotInstanceType sets the SpotInstanceType field's value. +func (s *LaunchTemplateSpotMarketOptions) SetSpotInstanceType(v string) *LaunchTemplateSpotMarketOptions { + s.SpotInstanceType = &v + return s +} + +// SetValidUntil sets the ValidUntil field's value. +func (s *LaunchTemplateSpotMarketOptions) SetValidUntil(v time.Time) *LaunchTemplateSpotMarketOptions { + s.ValidUntil = &v + return s +} + +// The options for Spot Instances. +type LaunchTemplateSpotMarketOptionsRequest struct { + _ struct{} `type:"structure"` + + // The required duration for the Spot Instances (also known as Spot blocks), + // in minutes. This value must be a multiple of 60 (60, 120, 180, 240, 300, + // or 360). + BlockDurationMinutes *int64 `type:"integer"` + + // The behavior when a Spot Instance is interrupted. The default is terminate. + InstanceInterruptionBehavior *string `type:"string" enum:"InstanceInterruptionBehavior"` + + // The maximum hourly price you're willing to pay for the Spot Instances. + MaxPrice *string `type:"string"` + + // The Spot Instance request type. + SpotInstanceType *string `type:"string" enum:"SpotInstanceType"` + + // The end date of the request. For a one-time request, the request remains + // active until all instances launch, the request is canceled, or this date + // is reached. If the request is persistent, it remains active until it is canceled + // or this date and time is reached. The default end date is 7 days from the + // current date. + ValidUntil *time.Time `type:"timestamp"` +} + +// String returns the string representation +func (s LaunchTemplateSpotMarketOptionsRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateSpotMarketOptionsRequest) GoString() string { + return s.String() +} + +// SetBlockDurationMinutes sets the BlockDurationMinutes field's value. +func (s *LaunchTemplateSpotMarketOptionsRequest) SetBlockDurationMinutes(v int64) *LaunchTemplateSpotMarketOptionsRequest { + s.BlockDurationMinutes = &v + return s +} + +// SetInstanceInterruptionBehavior sets the InstanceInterruptionBehavior field's value. +func (s *LaunchTemplateSpotMarketOptionsRequest) SetInstanceInterruptionBehavior(v string) *LaunchTemplateSpotMarketOptionsRequest { + s.InstanceInterruptionBehavior = &v + return s +} + +// SetMaxPrice sets the MaxPrice field's value. +func (s *LaunchTemplateSpotMarketOptionsRequest) SetMaxPrice(v string) *LaunchTemplateSpotMarketOptionsRequest { + s.MaxPrice = &v + return s +} + +// SetSpotInstanceType sets the SpotInstanceType field's value. +func (s *LaunchTemplateSpotMarketOptionsRequest) SetSpotInstanceType(v string) *LaunchTemplateSpotMarketOptionsRequest { + s.SpotInstanceType = &v + return s +} + +// SetValidUntil sets the ValidUntil field's value. +func (s *LaunchTemplateSpotMarketOptionsRequest) SetValidUntil(v time.Time) *LaunchTemplateSpotMarketOptionsRequest { + s.ValidUntil = &v + return s +} + +// The tag specification for the launch template. +type LaunchTemplateTagSpecification struct { + _ struct{} `type:"structure"` + + // The type of resource. + ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"` + + // The tags for the resource. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s LaunchTemplateTagSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateTagSpecification) GoString() string { + return s.String() +} + +// SetResourceType sets the ResourceType field's value. +func (s *LaunchTemplateTagSpecification) SetResourceType(v string) *LaunchTemplateTagSpecification { + s.ResourceType = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *LaunchTemplateTagSpecification) SetTags(v []*Tag) *LaunchTemplateTagSpecification { + s.Tags = v + return s +} + +// The tags specification for the launch template. +type LaunchTemplateTagSpecificationRequest struct { + _ struct{} `type:"structure"` + + // The type of resource to tag. Currently, the resource types that support tagging + // on creation are instance and volume. To tag a resource after it has been + // created, see CreateTags (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html). + ResourceType *string `type:"string" enum:"ResourceType"` + + // The tags to apply to the resource. + Tags []*Tag `locationName:"Tag" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s LaunchTemplateTagSpecificationRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateTagSpecificationRequest) GoString() string { + return s.String() +} + +// SetResourceType sets the ResourceType field's value. +func (s *LaunchTemplateTagSpecificationRequest) SetResourceType(v string) *LaunchTemplateTagSpecificationRequest { + s.ResourceType = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *LaunchTemplateTagSpecificationRequest) SetTags(v []*Tag) *LaunchTemplateTagSpecificationRequest { + s.Tags = v + return s +} + +// Describes a launch template version. +type LaunchTemplateVersion struct { + _ struct{} `type:"structure"` + + // The time the version was created. + CreateTime *time.Time `locationName:"createTime" type:"timestamp"` + + // The principal that created the version. + CreatedBy *string `locationName:"createdBy" type:"string"` + + // Indicates whether the version is the default version. + DefaultVersion *bool `locationName:"defaultVersion" type:"boolean"` + + // Information about the launch template. + LaunchTemplateData *ResponseLaunchTemplateData `locationName:"launchTemplateData" type:"structure"` + + // The ID of the launch template. + LaunchTemplateId *string `locationName:"launchTemplateId" type:"string"` + + // The name of the launch template. + LaunchTemplateName *string `locationName:"launchTemplateName" min:"3" type:"string"` + + // The description for the version. + VersionDescription *string `locationName:"versionDescription" type:"string"` + + // The version number. + VersionNumber *int64 `locationName:"versionNumber" type:"long"` +} + +// String returns the string representation +func (s LaunchTemplateVersion) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplateVersion) GoString() string { + return s.String() +} + +// SetCreateTime sets the CreateTime field's value. +func (s *LaunchTemplateVersion) SetCreateTime(v time.Time) *LaunchTemplateVersion { + s.CreateTime = &v + return s +} + +// SetCreatedBy sets the CreatedBy field's value. +func (s *LaunchTemplateVersion) SetCreatedBy(v string) *LaunchTemplateVersion { + s.CreatedBy = &v + return s +} + +// SetDefaultVersion sets the DefaultVersion field's value. +func (s *LaunchTemplateVersion) SetDefaultVersion(v bool) *LaunchTemplateVersion { + s.DefaultVersion = &v + return s +} + +// SetLaunchTemplateData sets the LaunchTemplateData field's value. +func (s *LaunchTemplateVersion) SetLaunchTemplateData(v *ResponseLaunchTemplateData) *LaunchTemplateVersion { + s.LaunchTemplateData = v + return s +} + +// SetLaunchTemplateId sets the LaunchTemplateId field's value. +func (s *LaunchTemplateVersion) SetLaunchTemplateId(v string) *LaunchTemplateVersion { + s.LaunchTemplateId = &v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *LaunchTemplateVersion) SetLaunchTemplateName(v string) *LaunchTemplateVersion { + s.LaunchTemplateName = &v + return s +} + +// SetVersionDescription sets the VersionDescription field's value. +func (s *LaunchTemplateVersion) SetVersionDescription(v string) *LaunchTemplateVersion { + s.VersionDescription = &v + return s +} + +// SetVersionNumber sets the VersionNumber field's value. +func (s *LaunchTemplateVersion) SetVersionNumber(v int64) *LaunchTemplateVersion { + s.VersionNumber = &v + return s +} + +// Describes the monitoring for the instance. +type LaunchTemplatesMonitoring struct { + _ struct{} `type:"structure"` + + // Indicates whether detailed monitoring is enabled. Otherwise, basic monitoring + // is enabled. + Enabled *bool `locationName:"enabled" type:"boolean"` +} + +// String returns the string representation +func (s LaunchTemplatesMonitoring) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplatesMonitoring) GoString() string { + return s.String() +} + +// SetEnabled sets the Enabled field's value. +func (s *LaunchTemplatesMonitoring) SetEnabled(v bool) *LaunchTemplatesMonitoring { + s.Enabled = &v + return s +} + +// Describes the monitoring for the instance. +type LaunchTemplatesMonitoringRequest struct { + _ struct{} `type:"structure"` + + // Specify true to enable detailed monitoring. Otherwise, basic monitoring is + // enabled. + Enabled *bool `type:"boolean"` +} + +// String returns the string representation +func (s LaunchTemplatesMonitoringRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LaunchTemplatesMonitoringRequest) GoString() string { + return s.String() +} + +// SetEnabled sets the Enabled field's value. +func (s *LaunchTemplatesMonitoringRequest) SetEnabled(v bool) *LaunchTemplatesMonitoringRequest { + s.Enabled = &v + return s +} + +// Describes a license configuration. +type LicenseConfiguration struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the license configuration. + LicenseConfigurationArn *string `locationName:"licenseConfigurationArn" type:"string"` +} + +// String returns the string representation +func (s LicenseConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LicenseConfiguration) GoString() string { + return s.String() +} + +// SetLicenseConfigurationArn sets the LicenseConfigurationArn field's value. +func (s *LicenseConfiguration) SetLicenseConfigurationArn(v string) *LicenseConfiguration { + s.LicenseConfigurationArn = &v + return s +} + +// Describes a license configuration. +type LicenseConfigurationRequest struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the license configuration. + LicenseConfigurationArn *string `type:"string"` +} + +// String returns the string representation +func (s LicenseConfigurationRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LicenseConfigurationRequest) GoString() string { + return s.String() +} + +// SetLicenseConfigurationArn sets the LicenseConfigurationArn field's value. +func (s *LicenseConfigurationRequest) SetLicenseConfigurationArn(v string) *LicenseConfigurationRequest { + s.LicenseConfigurationArn = &v + return s +} + +// Describes the Classic Load Balancers and target groups to attach to a Spot +// Fleet request. +type LoadBalancersConfig struct { + _ struct{} `type:"structure"` + + // The Classic Load Balancers. + ClassicLoadBalancersConfig *ClassicLoadBalancersConfig `locationName:"classicLoadBalancersConfig" type:"structure"` + + // The target groups. + TargetGroupsConfig *TargetGroupsConfig `locationName:"targetGroupsConfig" type:"structure"` +} + +// String returns the string representation +func (s LoadBalancersConfig) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LoadBalancersConfig) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *LoadBalancersConfig) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "LoadBalancersConfig"} + if s.ClassicLoadBalancersConfig != nil { + if err := s.ClassicLoadBalancersConfig.Validate(); err != nil { + invalidParams.AddNested("ClassicLoadBalancersConfig", err.(request.ErrInvalidParams)) + } + } + if s.TargetGroupsConfig != nil { + if err := s.TargetGroupsConfig.Validate(); err != nil { + invalidParams.AddNested("TargetGroupsConfig", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClassicLoadBalancersConfig sets the ClassicLoadBalancersConfig field's value. +func (s *LoadBalancersConfig) SetClassicLoadBalancersConfig(v *ClassicLoadBalancersConfig) *LoadBalancersConfig { + s.ClassicLoadBalancersConfig = v + return s +} + +// SetTargetGroupsConfig sets the TargetGroupsConfig field's value. +func (s *LoadBalancersConfig) SetTargetGroupsConfig(v *TargetGroupsConfig) *LoadBalancersConfig { + s.TargetGroupsConfig = v + return s +} + +// Describes a load permission. +type LoadPermission struct { + _ struct{} `type:"structure"` + + // The name of the group. + Group *string `locationName:"group" type:"string" enum:"PermissionGroup"` + + // The AWS account ID. + UserId *string `locationName:"userId" type:"string"` +} + +// String returns the string representation +func (s LoadPermission) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LoadPermission) GoString() string { + return s.String() +} + +// SetGroup sets the Group field's value. +func (s *LoadPermission) SetGroup(v string) *LoadPermission { + s.Group = &v + return s +} + +// SetUserId sets the UserId field's value. +func (s *LoadPermission) SetUserId(v string) *LoadPermission { + s.UserId = &v + return s +} + +// Describes modifications to the load permissions of an Amazon FPGA image (AFI). +type LoadPermissionModifications struct { + _ struct{} `type:"structure"` + + // The load permissions to add. + Add []*LoadPermissionRequest `locationNameList:"item" type:"list"` + + // The load permissions to remove. + Remove []*LoadPermissionRequest `locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s LoadPermissionModifications) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LoadPermissionModifications) GoString() string { + return s.String() +} + +// SetAdd sets the Add field's value. +func (s *LoadPermissionModifications) SetAdd(v []*LoadPermissionRequest) *LoadPermissionModifications { + s.Add = v + return s +} + +// SetRemove sets the Remove field's value. +func (s *LoadPermissionModifications) SetRemove(v []*LoadPermissionRequest) *LoadPermissionModifications { + s.Remove = v + return s +} + +// Describes a load permission. +type LoadPermissionRequest struct { + _ struct{} `type:"structure"` + + // The name of the group. + Group *string `type:"string" enum:"PermissionGroup"` + + // The AWS account ID. + UserId *string `type:"string"` +} + +// String returns the string representation +func (s LoadPermissionRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LoadPermissionRequest) GoString() string { + return s.String() +} + +// SetGroup sets the Group field's value. +func (s *LoadPermissionRequest) SetGroup(v string) *LoadPermissionRequest { + s.Group = &v + return s +} + +// SetUserId sets the UserId field's value. +func (s *LoadPermissionRequest) SetUserId(v string) *LoadPermissionRequest { + s.UserId = &v + return s +} + +type ModifyCapacityReservationInput struct { + _ struct{} `type:"structure"` + + // The ID of the Capacity Reservation. + // + // CapacityReservationId is a required field + CapacityReservationId *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The date and time at which the Capacity Reservation expires. When a Capacity + // Reservation expires, the reserved capacity is released and you can no longer + // launch instances into it. The Capacity Reservation's state changes to expired + // when it reaches its end date and time. + // + // The Capacity Reservation is cancelled within an hour from the specified time. + // For example, if you specify 5/31/2019, 13:30:55, the Capacity Reservation + // is guaranteed to end between 13:30:55 and 14:30:55 on 5/31/2019. + // + // You must provide an EndDate value if EndDateType is limited. Omit EndDate + // if EndDateType is unlimited. + EndDate *time.Time `type:"timestamp"` + + // Indicates the way in which the Capacity Reservation ends. A Capacity Reservation + // can have one of the following end types: + // + // * unlimited - The Capacity Reservation remains active until you explicitly + // cancel it. Do not provide an EndDate value if EndDateType is unlimited. + // + // * limited - The Capacity Reservation expires automatically at a specified + // date and time. You must provide an EndDate value if EndDateType is limited. + EndDateType *string `type:"string" enum:"EndDateType"` + + // The number of instances for which to reserve capacity. + InstanceCount *int64 `type:"integer"` +} + +// String returns the string representation +func (s ModifyCapacityReservationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyCapacityReservationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyCapacityReservationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyCapacityReservationInput"} + if s.CapacityReservationId == nil { + invalidParams.Add(request.NewErrParamRequired("CapacityReservationId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCapacityReservationId sets the CapacityReservationId field's value. +func (s *ModifyCapacityReservationInput) SetCapacityReservationId(v string) *ModifyCapacityReservationInput { + s.CapacityReservationId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyCapacityReservationInput) SetDryRun(v bool) *ModifyCapacityReservationInput { + s.DryRun = &v + return s +} + +// SetEndDate sets the EndDate field's value. +func (s *ModifyCapacityReservationInput) SetEndDate(v time.Time) *ModifyCapacityReservationInput { + s.EndDate = &v + return s +} + +// SetEndDateType sets the EndDateType field's value. +func (s *ModifyCapacityReservationInput) SetEndDateType(v string) *ModifyCapacityReservationInput { + s.EndDateType = &v + return s +} + +// SetInstanceCount sets the InstanceCount field's value. +func (s *ModifyCapacityReservationInput) SetInstanceCount(v int64) *ModifyCapacityReservationInput { + s.InstanceCount = &v + return s +} + +type ModifyCapacityReservationOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, it returns an error. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s ModifyCapacityReservationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyCapacityReservationOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *ModifyCapacityReservationOutput) SetReturn(v bool) *ModifyCapacityReservationOutput { + s.Return = &v + return s +} + +type ModifyClientVpnEndpointInput struct { + _ struct{} `type:"structure"` + + // The ID of the Client VPN endpoint to modify. + // + // ClientVpnEndpointId is a required field + ClientVpnEndpointId *string `type:"string" required:"true"` + + // Information about the client connection logging options. + // + // If you enable client connection logging, data about client connections is + // sent to a Cloudwatch Logs log stream. The following information is logged: + // + // * Client connection requests + // + // * Client connection results (successful and unsuccessful) + // + // * Reasons for unsuccessful client connection requests + // + // * Client connection termination time + ConnectionLogOptions *ConnectionLogOptions `type:"structure"` + + // A brief description of the Client VPN endpoint. + Description *string `type:"string"` + + // Information about the DNS servers to be used by Client VPN connections. A + // Client VPN endpoint can have up to two DNS servers. + DnsServers *DnsServersOptionsModifyStructure `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ARN of the server certificate to be used. The server certificate must + // be provisioned in AWS Certificate Manager (ACM). + ServerCertificateArn *string `type:"string"` + + // Indicates whether the VPN is split-tunnel. + // + // For information about split-tunnel VPN endpoints, see Split-Tunnel AWS Client + // VPN Endpoint (https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/split-tunnel-vpn.html) + // in the AWS Client VPN Administrator Guide. + SplitTunnel *bool `type:"boolean"` +} + +// String returns the string representation +func (s ModifyClientVpnEndpointInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyClientVpnEndpointInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyClientVpnEndpointInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyClientVpnEndpointInput"} + if s.ClientVpnEndpointId == nil { + invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value. +func (s *ModifyClientVpnEndpointInput) SetClientVpnEndpointId(v string) *ModifyClientVpnEndpointInput { + s.ClientVpnEndpointId = &v + return s +} + +// SetConnectionLogOptions sets the ConnectionLogOptions field's value. +func (s *ModifyClientVpnEndpointInput) SetConnectionLogOptions(v *ConnectionLogOptions) *ModifyClientVpnEndpointInput { + s.ConnectionLogOptions = v + return s +} + +// SetDescription sets the Description field's value. +func (s *ModifyClientVpnEndpointInput) SetDescription(v string) *ModifyClientVpnEndpointInput { + s.Description = &v + return s +} + +// SetDnsServers sets the DnsServers field's value. +func (s *ModifyClientVpnEndpointInput) SetDnsServers(v *DnsServersOptionsModifyStructure) *ModifyClientVpnEndpointInput { + s.DnsServers = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyClientVpnEndpointInput) SetDryRun(v bool) *ModifyClientVpnEndpointInput { + s.DryRun = &v + return s +} + +// SetServerCertificateArn sets the ServerCertificateArn field's value. +func (s *ModifyClientVpnEndpointInput) SetServerCertificateArn(v string) *ModifyClientVpnEndpointInput { + s.ServerCertificateArn = &v + return s +} + +// SetSplitTunnel sets the SplitTunnel field's value. +func (s *ModifyClientVpnEndpointInput) SetSplitTunnel(v bool) *ModifyClientVpnEndpointInput { + s.SplitTunnel = &v + return s +} + +type ModifyClientVpnEndpointOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, it returns an error. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s ModifyClientVpnEndpointOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyClientVpnEndpointOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *ModifyClientVpnEndpointOutput) SetReturn(v bool) *ModifyClientVpnEndpointOutput { + s.Return = &v + return s +} + +type ModifyEbsDefaultKmsKeyIdInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The identifier of the AWS Key Management Service (AWS KMS) customer master + // key (CMK) to use for Amazon EBS encryption. If this parameter is not specified, + // your AWS managed CMK for EBS is used. If KmsKeyId is specified, the encrypted + // state must be true. + // + // You can specify the CMK using any of the following: + // + // * Key ID. For example, key/1234abcd-12ab-34cd-56ef-1234567890ab. + // + // * Key alias. For example, alias/ExampleAlias. + // + // * Key ARN. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. + // + // * Alias ARN. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias. + // + // AWS authenticates the CMK asynchronously. Therefore, if you specify an ID, + // alias, or ARN that is not valid, the action can appear to complete, but eventually + // fails. + // + // KmsKeyId is a required field + KmsKeyId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s ModifyEbsDefaultKmsKeyIdInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyEbsDefaultKmsKeyIdInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyEbsDefaultKmsKeyIdInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyEbsDefaultKmsKeyIdInput"} + if s.KmsKeyId == nil { + invalidParams.Add(request.NewErrParamRequired("KmsKeyId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyEbsDefaultKmsKeyIdInput) SetDryRun(v bool) *ModifyEbsDefaultKmsKeyIdInput { + s.DryRun = &v + return s +} + +// SetKmsKeyId sets the KmsKeyId field's value. +func (s *ModifyEbsDefaultKmsKeyIdInput) SetKmsKeyId(v string) *ModifyEbsDefaultKmsKeyIdInput { + s.KmsKeyId = &v + return s +} + +type ModifyEbsDefaultKmsKeyIdOutput struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the default CMK for encryption by default. + KmsKeyId *string `locationName:"kmsKeyId" type:"string"` +} + +// String returns the string representation +func (s ModifyEbsDefaultKmsKeyIdOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyEbsDefaultKmsKeyIdOutput) GoString() string { + return s.String() +} + +// SetKmsKeyId sets the KmsKeyId field's value. +func (s *ModifyEbsDefaultKmsKeyIdOutput) SetKmsKeyId(v string) *ModifyEbsDefaultKmsKeyIdOutput { + s.KmsKeyId = &v + return s +} + +type ModifyFleetInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // Indicates whether running instances should be terminated if the total target + // capacity of the EC2 Fleet is decreased below the current size of the EC2 + // Fleet. + ExcessCapacityTerminationPolicy *string `type:"string" enum:"FleetExcessCapacityTerminationPolicy"` + + // The ID of the EC2 Fleet. + // + // FleetId is a required field + FleetId *string `type:"string" required:"true"` + + // The size of the EC2 Fleet. + // + // TargetCapacitySpecification is a required field + TargetCapacitySpecification *TargetCapacitySpecificationRequest `type:"structure" required:"true"` +} + +// String returns the string representation +func (s ModifyFleetInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyFleetInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyFleetInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyFleetInput"} + if s.FleetId == nil { + invalidParams.Add(request.NewErrParamRequired("FleetId")) + } + if s.TargetCapacitySpecification == nil { + invalidParams.Add(request.NewErrParamRequired("TargetCapacitySpecification")) + } + if s.TargetCapacitySpecification != nil { + if err := s.TargetCapacitySpecification.Validate(); err != nil { + invalidParams.AddNested("TargetCapacitySpecification", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyFleetInput) SetDryRun(v bool) *ModifyFleetInput { + s.DryRun = &v + return s +} + +// SetExcessCapacityTerminationPolicy sets the ExcessCapacityTerminationPolicy field's value. +func (s *ModifyFleetInput) SetExcessCapacityTerminationPolicy(v string) *ModifyFleetInput { + s.ExcessCapacityTerminationPolicy = &v + return s +} + +// SetFleetId sets the FleetId field's value. +func (s *ModifyFleetInput) SetFleetId(v string) *ModifyFleetInput { + s.FleetId = &v + return s +} + +// SetTargetCapacitySpecification sets the TargetCapacitySpecification field's value. +func (s *ModifyFleetInput) SetTargetCapacitySpecification(v *TargetCapacitySpecificationRequest) *ModifyFleetInput { + s.TargetCapacitySpecification = v + return s +} + +type ModifyFleetOutput struct { + _ struct{} `type:"structure"` + + // Is true if the request succeeds, and an error otherwise. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s ModifyFleetOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyFleetOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *ModifyFleetOutput) SetReturn(v bool) *ModifyFleetOutput { + s.Return = &v + return s +} + +type ModifyFpgaImageAttributeInput struct { + _ struct{} `type:"structure"` + + // The name of the attribute. + Attribute *string `type:"string" enum:"FpgaImageAttributeName"` + + // A description for the AFI. + Description *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the AFI. + // + // FpgaImageId is a required field + FpgaImageId *string `type:"string" required:"true"` + + // The load permission for the AFI. + LoadPermission *LoadPermissionModifications `type:"structure"` + + // A name for the AFI. + Name *string `type:"string"` + + // The operation type. + OperationType *string `type:"string" enum:"OperationType"` + + // The product codes. After you add a product code to an AFI, it can't be removed. + // This parameter is valid only when modifying the productCodes attribute. + ProductCodes []*string `locationName:"ProductCode" locationNameList:"ProductCode" type:"list"` + + // The user groups. This parameter is valid only when modifying the loadPermission + // attribute. + UserGroups []*string `locationName:"UserGroup" locationNameList:"UserGroup" type:"list"` + + // The AWS account IDs. This parameter is valid only when modifying the loadPermission + // attribute. + UserIds []*string `locationName:"UserId" locationNameList:"UserId" type:"list"` +} + +// String returns the string representation +func (s ModifyFpgaImageAttributeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyFpgaImageAttributeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyFpgaImageAttributeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyFpgaImageAttributeInput"} + if s.FpgaImageId == nil { + invalidParams.Add(request.NewErrParamRequired("FpgaImageId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAttribute sets the Attribute field's value. +func (s *ModifyFpgaImageAttributeInput) SetAttribute(v string) *ModifyFpgaImageAttributeInput { + s.Attribute = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *ModifyFpgaImageAttributeInput) SetDescription(v string) *ModifyFpgaImageAttributeInput { + s.Description = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyFpgaImageAttributeInput) SetDryRun(v bool) *ModifyFpgaImageAttributeInput { + s.DryRun = &v + return s +} + +// SetFpgaImageId sets the FpgaImageId field's value. +func (s *ModifyFpgaImageAttributeInput) SetFpgaImageId(v string) *ModifyFpgaImageAttributeInput { + s.FpgaImageId = &v + return s +} + +// SetLoadPermission sets the LoadPermission field's value. +func (s *ModifyFpgaImageAttributeInput) SetLoadPermission(v *LoadPermissionModifications) *ModifyFpgaImageAttributeInput { + s.LoadPermission = v + return s +} + +// SetName sets the Name field's value. +func (s *ModifyFpgaImageAttributeInput) SetName(v string) *ModifyFpgaImageAttributeInput { + s.Name = &v + return s +} + +// SetOperationType sets the OperationType field's value. +func (s *ModifyFpgaImageAttributeInput) SetOperationType(v string) *ModifyFpgaImageAttributeInput { + s.OperationType = &v + return s +} + +// SetProductCodes sets the ProductCodes field's value. +func (s *ModifyFpgaImageAttributeInput) SetProductCodes(v []*string) *ModifyFpgaImageAttributeInput { + s.ProductCodes = v + return s +} + +// SetUserGroups sets the UserGroups field's value. +func (s *ModifyFpgaImageAttributeInput) SetUserGroups(v []*string) *ModifyFpgaImageAttributeInput { + s.UserGroups = v + return s +} + +// SetUserIds sets the UserIds field's value. +func (s *ModifyFpgaImageAttributeInput) SetUserIds(v []*string) *ModifyFpgaImageAttributeInput { + s.UserIds = v + return s +} + +type ModifyFpgaImageAttributeOutput struct { + _ struct{} `type:"structure"` + + // Information about the attribute. + FpgaImageAttribute *FpgaImageAttribute `locationName:"fpgaImageAttribute" type:"structure"` +} + +// String returns the string representation +func (s ModifyFpgaImageAttributeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyFpgaImageAttributeOutput) GoString() string { + return s.String() +} + +// SetFpgaImageAttribute sets the FpgaImageAttribute field's value. +func (s *ModifyFpgaImageAttributeOutput) SetFpgaImageAttribute(v *FpgaImageAttribute) *ModifyFpgaImageAttributeOutput { + s.FpgaImageAttribute = v + return s +} + +type ModifyHostsInput struct { + _ struct{} `type:"structure"` + + // Specify whether to enable or disable auto-placement. + AutoPlacement *string `locationName:"autoPlacement" type:"string" enum:"AutoPlacement"` + + // The IDs of the Dedicated Hosts to modify. + // + // HostIds is a required field + HostIds []*string `locationName:"hostId" locationNameList:"item" type:"list" required:"true"` + + // Indicates whether to enable or disable host recovery for the Dedicated Host. + // For more information, see Host Recovery (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-hosts-recovery.html) + // in the Amazon Elastic Compute Cloud User Guide. + HostRecovery *string `type:"string" enum:"HostRecovery"` +} + +// String returns the string representation +func (s ModifyHostsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyHostsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyHostsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyHostsInput"} + if s.HostIds == nil { + invalidParams.Add(request.NewErrParamRequired("HostIds")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAutoPlacement sets the AutoPlacement field's value. +func (s *ModifyHostsInput) SetAutoPlacement(v string) *ModifyHostsInput { + s.AutoPlacement = &v + return s +} + +// SetHostIds sets the HostIds field's value. +func (s *ModifyHostsInput) SetHostIds(v []*string) *ModifyHostsInput { + s.HostIds = v + return s +} + +// SetHostRecovery sets the HostRecovery field's value. +func (s *ModifyHostsInput) SetHostRecovery(v string) *ModifyHostsInput { + s.HostRecovery = &v + return s +} + +type ModifyHostsOutput struct { + _ struct{} `type:"structure"` + + // The IDs of the Dedicated Hosts that were successfully modified. + Successful []*string `locationName:"successful" locationNameList:"item" type:"list"` + + // The IDs of the Dedicated Hosts that could not be modified. Check whether + // the setting you requested can be used. + Unsuccessful []*UnsuccessfulItem `locationName:"unsuccessful" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s ModifyHostsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyHostsOutput) GoString() string { + return s.String() +} + +// SetSuccessful sets the Successful field's value. +func (s *ModifyHostsOutput) SetSuccessful(v []*string) *ModifyHostsOutput { + s.Successful = v + return s +} + +// SetUnsuccessful sets the Unsuccessful field's value. +func (s *ModifyHostsOutput) SetUnsuccessful(v []*UnsuccessfulItem) *ModifyHostsOutput { + s.Unsuccessful = v + return s +} + +type ModifyIdFormatInput struct { + _ struct{} `type:"structure"` + + // The type of resource: bundle | conversion-task | customer-gateway | dhcp-options + // | elastic-ip-allocation | elastic-ip-association | export-task | flow-log + // | image | import-task | internet-gateway | network-acl | network-acl-association + // | network-interface | network-interface-attachment | prefix-list | route-table + // | route-table-association | security-group | subnet | subnet-cidr-block-association + // | vpc | vpc-cidr-block-association | vpc-endpoint | vpc-peering-connection + // | vpn-connection | vpn-gateway. + // + // Alternatively, use the all-current option to include all resource types that + // are currently within their opt-in period for longer IDs. + // + // Resource is a required field + Resource *string `type:"string" required:"true"` + + // Indicate whether the resource should use longer IDs (17-character IDs). + // + // UseLongIds is a required field + UseLongIds *bool `type:"boolean" required:"true"` +} + +// String returns the string representation +func (s ModifyIdFormatInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyIdFormatInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyIdFormatInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyIdFormatInput"} + if s.Resource == nil { + invalidParams.Add(request.NewErrParamRequired("Resource")) + } + if s.UseLongIds == nil { + invalidParams.Add(request.NewErrParamRequired("UseLongIds")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetResource sets the Resource field's value. +func (s *ModifyIdFormatInput) SetResource(v string) *ModifyIdFormatInput { + s.Resource = &v + return s +} + +// SetUseLongIds sets the UseLongIds field's value. +func (s *ModifyIdFormatInput) SetUseLongIds(v bool) *ModifyIdFormatInput { + s.UseLongIds = &v + return s +} + +type ModifyIdFormatOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s ModifyIdFormatOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyIdFormatOutput) GoString() string { + return s.String() +} + +type ModifyIdentityIdFormatInput struct { + _ struct{} `type:"structure"` + + // The ARN of the principal, which can be an IAM user, IAM role, or the root + // user. Specify all to modify the ID format for all IAM users, IAM roles, and + // the root user of the account. + // + // PrincipalArn is a required field + PrincipalArn *string `locationName:"principalArn" type:"string" required:"true"` + + // The type of resource: bundle | conversion-task | customer-gateway | dhcp-options + // | elastic-ip-allocation | elastic-ip-association | export-task | flow-log + // | image | import-task | internet-gateway | network-acl | network-acl-association + // | network-interface | network-interface-attachment | prefix-list | route-table + // | route-table-association | security-group | subnet | subnet-cidr-block-association + // | vpc | vpc-cidr-block-association | vpc-endpoint | vpc-peering-connection + // | vpn-connection | vpn-gateway. + // + // Alternatively, use the all-current option to include all resource types that + // are currently within their opt-in period for longer IDs. + // + // Resource is a required field + Resource *string `locationName:"resource" type:"string" required:"true"` + + // Indicates whether the resource should use longer IDs (17-character IDs) + // + // UseLongIds is a required field + UseLongIds *bool `locationName:"useLongIds" type:"boolean" required:"true"` +} + +// String returns the string representation +func (s ModifyIdentityIdFormatInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyIdentityIdFormatInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyIdentityIdFormatInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyIdentityIdFormatInput"} + if s.PrincipalArn == nil { + invalidParams.Add(request.NewErrParamRequired("PrincipalArn")) + } + if s.Resource == nil { + invalidParams.Add(request.NewErrParamRequired("Resource")) + } + if s.UseLongIds == nil { + invalidParams.Add(request.NewErrParamRequired("UseLongIds")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetPrincipalArn sets the PrincipalArn field's value. +func (s *ModifyIdentityIdFormatInput) SetPrincipalArn(v string) *ModifyIdentityIdFormatInput { + s.PrincipalArn = &v + return s +} + +// SetResource sets the Resource field's value. +func (s *ModifyIdentityIdFormatInput) SetResource(v string) *ModifyIdentityIdFormatInput { + s.Resource = &v + return s +} + +// SetUseLongIds sets the UseLongIds field's value. +func (s *ModifyIdentityIdFormatInput) SetUseLongIds(v bool) *ModifyIdentityIdFormatInput { + s.UseLongIds = &v + return s +} + +type ModifyIdentityIdFormatOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s ModifyIdentityIdFormatOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyIdentityIdFormatOutput) GoString() string { + return s.String() +} + +// Contains the parameters for ModifyImageAttribute. +type ModifyImageAttributeInput struct { + _ struct{} `type:"structure"` + + // The name of the attribute to modify. The valid values are description, launchPermission, + // and productCodes. + Attribute *string `type:"string"` + + // A new description for the AMI. + Description *AttributeValue `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the AMI. + // + // ImageId is a required field + ImageId *string `type:"string" required:"true"` + + // A new launch permission for the AMI. + LaunchPermission *LaunchPermissionModifications `type:"structure"` + + // The operation type. This parameter can be used only when the Attribute parameter + // is launchPermission. + OperationType *string `type:"string" enum:"OperationType"` + + // The DevPay product codes. After you add a product code to an AMI, it can't + // be removed. + ProductCodes []*string `locationName:"ProductCode" locationNameList:"ProductCode" type:"list"` + + // The user groups. This parameter can be used only when the Attribute parameter + // is launchPermission. + UserGroups []*string `locationName:"UserGroup" locationNameList:"UserGroup" type:"list"` + + // The AWS account IDs. This parameter can be used only when the Attribute parameter + // is launchPermission. + UserIds []*string `locationName:"UserId" locationNameList:"UserId" type:"list"` + + // The value of the attribute being modified. This parameter can be used only + // when the Attribute parameter is description or productCodes. + Value *string `type:"string"` +} + +// String returns the string representation +func (s ModifyImageAttributeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyImageAttributeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyImageAttributeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyImageAttributeInput"} + if s.ImageId == nil { + invalidParams.Add(request.NewErrParamRequired("ImageId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAttribute sets the Attribute field's value. +func (s *ModifyImageAttributeInput) SetAttribute(v string) *ModifyImageAttributeInput { + s.Attribute = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *ModifyImageAttributeInput) SetDescription(v *AttributeValue) *ModifyImageAttributeInput { + s.Description = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyImageAttributeInput) SetDryRun(v bool) *ModifyImageAttributeInput { + s.DryRun = &v + return s +} + +// SetImageId sets the ImageId field's value. +func (s *ModifyImageAttributeInput) SetImageId(v string) *ModifyImageAttributeInput { + s.ImageId = &v + return s +} + +// SetLaunchPermission sets the LaunchPermission field's value. +func (s *ModifyImageAttributeInput) SetLaunchPermission(v *LaunchPermissionModifications) *ModifyImageAttributeInput { + s.LaunchPermission = v + return s +} + +// SetOperationType sets the OperationType field's value. +func (s *ModifyImageAttributeInput) SetOperationType(v string) *ModifyImageAttributeInput { + s.OperationType = &v + return s +} + +// SetProductCodes sets the ProductCodes field's value. +func (s *ModifyImageAttributeInput) SetProductCodes(v []*string) *ModifyImageAttributeInput { + s.ProductCodes = v + return s +} + +// SetUserGroups sets the UserGroups field's value. +func (s *ModifyImageAttributeInput) SetUserGroups(v []*string) *ModifyImageAttributeInput { + s.UserGroups = v + return s +} + +// SetUserIds sets the UserIds field's value. +func (s *ModifyImageAttributeInput) SetUserIds(v []*string) *ModifyImageAttributeInput { + s.UserIds = v + return s +} + +// SetValue sets the Value field's value. +func (s *ModifyImageAttributeInput) SetValue(v string) *ModifyImageAttributeInput { + s.Value = &v + return s +} + +type ModifyImageAttributeOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s ModifyImageAttributeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyImageAttributeOutput) GoString() string { + return s.String() +} + +type ModifyInstanceAttributeInput struct { + _ struct{} `type:"structure"` + + // The name of the attribute. + Attribute *string `locationName:"attribute" type:"string" enum:"InstanceAttributeName"` + + // Modifies the DeleteOnTermination attribute for volumes that are currently + // attached. The volume must be owned by the caller. If no value is specified + // for DeleteOnTermination, the default is true and the volume is deleted when + // the instance is terminated. + // + // To add instance store volumes to an Amazon EBS-backed instance, you must + // add them when you launch the instance. For more information, see Updating + // the Block Device Mapping when Launching an Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html#Using_OverridingAMIBDM) + // in the Amazon Elastic Compute Cloud User Guide. + BlockDeviceMappings []*InstanceBlockDeviceMappingSpecification `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"` + + // If the value is true, you can't terminate the instance using the Amazon EC2 + // console, CLI, or API; otherwise, you can. You cannot use this parameter for + // Spot Instances. + DisableApiTermination *AttributeBooleanValue `locationName:"disableApiTermination" type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // Specifies whether the instance is optimized for Amazon EBS I/O. This optimization + // provides dedicated throughput to Amazon EBS and an optimized configuration + // stack to provide optimal EBS I/O performance. This optimization isn't available + // with all instance types. Additional usage charges apply when using an EBS + // Optimized instance. + EbsOptimized *AttributeBooleanValue `locationName:"ebsOptimized" type:"structure"` + + // Set to true to enable enhanced networking with ENA for the instance. + // + // This option is supported only for HVM instances. Specifying this option with + // a PV instance can make it unreachable. + EnaSupport *AttributeBooleanValue `locationName:"enaSupport" type:"structure"` + + // [EC2-VPC] Changes the security groups of the instance. You must specify at + // least one security group, even if it's just the default security group for + // the VPC. You must specify the security group ID, not the security group name. + Groups []*string `locationName:"GroupId" locationNameList:"groupId" type:"list"` + + // The ID of the instance. + // + // InstanceId is a required field + InstanceId *string `locationName:"instanceId" type:"string" required:"true"` + + // Specifies whether an instance stops or terminates when you initiate shutdown + // from the instance (using the operating system command for system shutdown). + InstanceInitiatedShutdownBehavior *AttributeValue `locationName:"instanceInitiatedShutdownBehavior" type:"structure"` + + // Changes the instance type to the specified value. For more information, see + // Instance Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html). + // If the instance type is not valid, the error returned is InvalidInstanceAttributeValue. + InstanceType *AttributeValue `locationName:"instanceType" type:"structure"` + + // Changes the instance's kernel to the specified value. We recommend that you + // use PV-GRUB instead of kernels and RAM disks. For more information, see PV-GRUB + // (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedKernels.html). + Kernel *AttributeValue `locationName:"kernel" type:"structure"` + + // Changes the instance's RAM disk to the specified value. We recommend that + // you use PV-GRUB instead of kernels and RAM disks. For more information, see + // PV-GRUB (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedKernels.html). + Ramdisk *AttributeValue `locationName:"ramdisk" type:"structure"` + + // Specifies whether source/destination checking is enabled. A value of true + // means that checking is enabled, and false means that checking is disabled. + // This value must be false for a NAT instance to perform NAT. + SourceDestCheck *AttributeBooleanValue `type:"structure"` + + // Set to simple to enable enhanced networking with the Intel 82599 Virtual + // Function interface for the instance. + // + // There is no way to disable enhanced networking with the Intel 82599 Virtual + // Function interface at this time. + // + // This option is supported only for HVM instances. Specifying this option with + // a PV instance can make it unreachable. + SriovNetSupport *AttributeValue `locationName:"sriovNetSupport" type:"structure"` + + // Changes the instance's user data to the specified value. If you are using + // an AWS SDK or command line tool, base64-encoding is performed for you, and + // you can load the text from a file. Otherwise, you must provide base64-encoded + // text. + UserData *BlobAttributeValue `locationName:"userData" type:"structure"` + + // A new value for the attribute. Use only with the kernel, ramdisk, userData, + // disableApiTermination, or instanceInitiatedShutdownBehavior attribute. + Value *string `locationName:"value" type:"string"` +} + +// String returns the string representation +func (s ModifyInstanceAttributeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyInstanceAttributeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyInstanceAttributeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyInstanceAttributeInput"} + if s.InstanceId == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAttribute sets the Attribute field's value. +func (s *ModifyInstanceAttributeInput) SetAttribute(v string) *ModifyInstanceAttributeInput { + s.Attribute = &v + return s +} + +// SetBlockDeviceMappings sets the BlockDeviceMappings field's value. +func (s *ModifyInstanceAttributeInput) SetBlockDeviceMappings(v []*InstanceBlockDeviceMappingSpecification) *ModifyInstanceAttributeInput { + s.BlockDeviceMappings = v + return s +} + +// SetDisableApiTermination sets the DisableApiTermination field's value. +func (s *ModifyInstanceAttributeInput) SetDisableApiTermination(v *AttributeBooleanValue) *ModifyInstanceAttributeInput { + s.DisableApiTermination = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyInstanceAttributeInput) SetDryRun(v bool) *ModifyInstanceAttributeInput { + s.DryRun = &v + return s +} + +// SetEbsOptimized sets the EbsOptimized field's value. +func (s *ModifyInstanceAttributeInput) SetEbsOptimized(v *AttributeBooleanValue) *ModifyInstanceAttributeInput { + s.EbsOptimized = v + return s +} + +// SetEnaSupport sets the EnaSupport field's value. +func (s *ModifyInstanceAttributeInput) SetEnaSupport(v *AttributeBooleanValue) *ModifyInstanceAttributeInput { + s.EnaSupport = v + return s +} + +// SetGroups sets the Groups field's value. +func (s *ModifyInstanceAttributeInput) SetGroups(v []*string) *ModifyInstanceAttributeInput { + s.Groups = v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *ModifyInstanceAttributeInput) SetInstanceId(v string) *ModifyInstanceAttributeInput { + s.InstanceId = &v + return s +} + +// SetInstanceInitiatedShutdownBehavior sets the InstanceInitiatedShutdownBehavior field's value. +func (s *ModifyInstanceAttributeInput) SetInstanceInitiatedShutdownBehavior(v *AttributeValue) *ModifyInstanceAttributeInput { + s.InstanceInitiatedShutdownBehavior = v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *ModifyInstanceAttributeInput) SetInstanceType(v *AttributeValue) *ModifyInstanceAttributeInput { + s.InstanceType = v + return s +} + +// SetKernel sets the Kernel field's value. +func (s *ModifyInstanceAttributeInput) SetKernel(v *AttributeValue) *ModifyInstanceAttributeInput { + s.Kernel = v + return s +} + +// SetRamdisk sets the Ramdisk field's value. +func (s *ModifyInstanceAttributeInput) SetRamdisk(v *AttributeValue) *ModifyInstanceAttributeInput { + s.Ramdisk = v + return s +} + +// SetSourceDestCheck sets the SourceDestCheck field's value. +func (s *ModifyInstanceAttributeInput) SetSourceDestCheck(v *AttributeBooleanValue) *ModifyInstanceAttributeInput { + s.SourceDestCheck = v + return s +} + +// SetSriovNetSupport sets the SriovNetSupport field's value. +func (s *ModifyInstanceAttributeInput) SetSriovNetSupport(v *AttributeValue) *ModifyInstanceAttributeInput { + s.SriovNetSupport = v + return s +} + +// SetUserData sets the UserData field's value. +func (s *ModifyInstanceAttributeInput) SetUserData(v *BlobAttributeValue) *ModifyInstanceAttributeInput { + s.UserData = v + return s +} + +// SetValue sets the Value field's value. +func (s *ModifyInstanceAttributeInput) SetValue(v string) *ModifyInstanceAttributeInput { + s.Value = &v + return s +} + +type ModifyInstanceAttributeOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s ModifyInstanceAttributeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyInstanceAttributeOutput) GoString() string { + return s.String() +} + +type ModifyInstanceCapacityReservationAttributesInput struct { + _ struct{} `type:"structure"` + + // Information about the Capacity Reservation targeting option. + // + // CapacityReservationSpecification is a required field + CapacityReservationSpecification *CapacityReservationSpecification `type:"structure" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the instance to be modified. + // + // InstanceId is a required field + InstanceId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s ModifyInstanceCapacityReservationAttributesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyInstanceCapacityReservationAttributesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyInstanceCapacityReservationAttributesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyInstanceCapacityReservationAttributesInput"} + if s.CapacityReservationSpecification == nil { + invalidParams.Add(request.NewErrParamRequired("CapacityReservationSpecification")) + } + if s.InstanceId == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCapacityReservationSpecification sets the CapacityReservationSpecification field's value. +func (s *ModifyInstanceCapacityReservationAttributesInput) SetCapacityReservationSpecification(v *CapacityReservationSpecification) *ModifyInstanceCapacityReservationAttributesInput { + s.CapacityReservationSpecification = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyInstanceCapacityReservationAttributesInput) SetDryRun(v bool) *ModifyInstanceCapacityReservationAttributesInput { + s.DryRun = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *ModifyInstanceCapacityReservationAttributesInput) SetInstanceId(v string) *ModifyInstanceCapacityReservationAttributesInput { + s.InstanceId = &v + return s +} + +type ModifyInstanceCapacityReservationAttributesOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, it returns an error. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s ModifyInstanceCapacityReservationAttributesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyInstanceCapacityReservationAttributesOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *ModifyInstanceCapacityReservationAttributesOutput) SetReturn(v bool) *ModifyInstanceCapacityReservationAttributesOutput { + s.Return = &v + return s +} + +type ModifyInstanceCreditSpecificationInput struct { + _ struct{} `type:"structure"` + + // A unique, case-sensitive token that you provide to ensure idempotency of + // your modification request. For more information, see Ensuring Idempotency + // (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // Information about the credit option for CPU usage. + // + // InstanceCreditSpecifications is a required field + InstanceCreditSpecifications []*InstanceCreditSpecificationRequest `locationName:"InstanceCreditSpecification" locationNameList:"item" type:"list" required:"true"` +} + +// String returns the string representation +func (s ModifyInstanceCreditSpecificationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyInstanceCreditSpecificationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyInstanceCreditSpecificationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyInstanceCreditSpecificationInput"} + if s.InstanceCreditSpecifications == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceCreditSpecifications")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *ModifyInstanceCreditSpecificationInput) SetClientToken(v string) *ModifyInstanceCreditSpecificationInput { + s.ClientToken = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyInstanceCreditSpecificationInput) SetDryRun(v bool) *ModifyInstanceCreditSpecificationInput { + s.DryRun = &v + return s +} + +// SetInstanceCreditSpecifications sets the InstanceCreditSpecifications field's value. +func (s *ModifyInstanceCreditSpecificationInput) SetInstanceCreditSpecifications(v []*InstanceCreditSpecificationRequest) *ModifyInstanceCreditSpecificationInput { + s.InstanceCreditSpecifications = v + return s +} + +type ModifyInstanceCreditSpecificationOutput struct { + _ struct{} `type:"structure"` + + // Information about the instances whose credit option for CPU usage was successfully + // modified. + SuccessfulInstanceCreditSpecifications []*SuccessfulInstanceCreditSpecificationItem `locationName:"successfulInstanceCreditSpecificationSet" locationNameList:"item" type:"list"` + + // Information about the instances whose credit option for CPU usage was not + // modified. + UnsuccessfulInstanceCreditSpecifications []*UnsuccessfulInstanceCreditSpecificationItem `locationName:"unsuccessfulInstanceCreditSpecificationSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s ModifyInstanceCreditSpecificationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyInstanceCreditSpecificationOutput) GoString() string { + return s.String() +} + +// SetSuccessfulInstanceCreditSpecifications sets the SuccessfulInstanceCreditSpecifications field's value. +func (s *ModifyInstanceCreditSpecificationOutput) SetSuccessfulInstanceCreditSpecifications(v []*SuccessfulInstanceCreditSpecificationItem) *ModifyInstanceCreditSpecificationOutput { + s.SuccessfulInstanceCreditSpecifications = v + return s +} + +// SetUnsuccessfulInstanceCreditSpecifications sets the UnsuccessfulInstanceCreditSpecifications field's value. +func (s *ModifyInstanceCreditSpecificationOutput) SetUnsuccessfulInstanceCreditSpecifications(v []*UnsuccessfulInstanceCreditSpecificationItem) *ModifyInstanceCreditSpecificationOutput { + s.UnsuccessfulInstanceCreditSpecifications = v + return s +} + +type ModifyInstanceEventStartTimeInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the event whose date and time you are modifying. + // + // InstanceEventId is a required field + InstanceEventId *string `type:"string" required:"true"` + + // The ID of the instance with the scheduled event. + // + // InstanceId is a required field + InstanceId *string `type:"string" required:"true"` + + // The new date and time when the event will take place. + // + // NotBefore is a required field + NotBefore *time.Time `type:"timestamp" required:"true"` +} + +// String returns the string representation +func (s ModifyInstanceEventStartTimeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyInstanceEventStartTimeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyInstanceEventStartTimeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyInstanceEventStartTimeInput"} + if s.InstanceEventId == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceEventId")) + } + if s.InstanceId == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceId")) + } + if s.NotBefore == nil { + invalidParams.Add(request.NewErrParamRequired("NotBefore")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyInstanceEventStartTimeInput) SetDryRun(v bool) *ModifyInstanceEventStartTimeInput { + s.DryRun = &v + return s +} + +// SetInstanceEventId sets the InstanceEventId field's value. +func (s *ModifyInstanceEventStartTimeInput) SetInstanceEventId(v string) *ModifyInstanceEventStartTimeInput { + s.InstanceEventId = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *ModifyInstanceEventStartTimeInput) SetInstanceId(v string) *ModifyInstanceEventStartTimeInput { + s.InstanceId = &v + return s +} + +// SetNotBefore sets the NotBefore field's value. +func (s *ModifyInstanceEventStartTimeInput) SetNotBefore(v time.Time) *ModifyInstanceEventStartTimeInput { + s.NotBefore = &v + return s +} + +type ModifyInstanceEventStartTimeOutput struct { + _ struct{} `type:"structure"` + + // Describes a scheduled event for an instance. + Event *InstanceStatusEvent `locationName:"event" type:"structure"` +} + +// String returns the string representation +func (s ModifyInstanceEventStartTimeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyInstanceEventStartTimeOutput) GoString() string { + return s.String() +} + +// SetEvent sets the Event field's value. +func (s *ModifyInstanceEventStartTimeOutput) SetEvent(v *InstanceStatusEvent) *ModifyInstanceEventStartTimeOutput { + s.Event = v + return s +} + +type ModifyInstancePlacementInput struct { + _ struct{} `type:"structure"` + + // The affinity setting for the instance. + Affinity *string `locationName:"affinity" type:"string" enum:"Affinity"` + + // The name of the placement group in which to place the instance. For spread + // placement groups, the instance must have a tenancy of default. For cluster + // and partition placement groups, the instance must have a tenancy of default + // or dedicated. + // + // To remove an instance from a placement group, specify an empty string (""). + GroupName *string `type:"string"` + + // The ID of the Dedicated Host with which to associate the instance. + HostId *string `locationName:"hostId" type:"string"` + + // The ID of the instance that you are modifying. + // + // InstanceId is a required field + InstanceId *string `locationName:"instanceId" type:"string" required:"true"` + + // Reserved for future use. + PartitionNumber *int64 `type:"integer"` + + // The tenancy for the instance. + Tenancy *string `locationName:"tenancy" type:"string" enum:"HostTenancy"` +} + +// String returns the string representation +func (s ModifyInstancePlacementInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyInstancePlacementInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyInstancePlacementInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyInstancePlacementInput"} + if s.InstanceId == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAffinity sets the Affinity field's value. +func (s *ModifyInstancePlacementInput) SetAffinity(v string) *ModifyInstancePlacementInput { + s.Affinity = &v + return s +} + +// SetGroupName sets the GroupName field's value. +func (s *ModifyInstancePlacementInput) SetGroupName(v string) *ModifyInstancePlacementInput { + s.GroupName = &v + return s +} + +// SetHostId sets the HostId field's value. +func (s *ModifyInstancePlacementInput) SetHostId(v string) *ModifyInstancePlacementInput { + s.HostId = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *ModifyInstancePlacementInput) SetInstanceId(v string) *ModifyInstancePlacementInput { + s.InstanceId = &v + return s +} + +// SetPartitionNumber sets the PartitionNumber field's value. +func (s *ModifyInstancePlacementInput) SetPartitionNumber(v int64) *ModifyInstancePlacementInput { + s.PartitionNumber = &v + return s +} + +// SetTenancy sets the Tenancy field's value. +func (s *ModifyInstancePlacementInput) SetTenancy(v string) *ModifyInstancePlacementInput { + s.Tenancy = &v + return s +} + +type ModifyInstancePlacementOutput struct { + _ struct{} `type:"structure"` + + // Is true if the request succeeds, and an error otherwise. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s ModifyInstancePlacementOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyInstancePlacementOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *ModifyInstancePlacementOutput) SetReturn(v bool) *ModifyInstancePlacementOutput { + s.Return = &v + return s +} + +type ModifyLaunchTemplateInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier you provide to ensure the idempotency of + // the request. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + // + // Constraint: Maximum 128 ASCII characters. + ClientToken *string `type:"string"` + + // The version number of the launch template to set as the default version. + DefaultVersion *string `locationName:"SetDefaultVersion" type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the launch template. You must specify either the launch template + // ID or launch template name in the request. + LaunchTemplateId *string `type:"string"` + + // The name of the launch template. You must specify either the launch template + // ID or launch template name in the request. + LaunchTemplateName *string `min:"3" type:"string"` +} + +// String returns the string representation +func (s ModifyLaunchTemplateInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyLaunchTemplateInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyLaunchTemplateInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyLaunchTemplateInput"} + if s.LaunchTemplateName != nil && len(*s.LaunchTemplateName) < 3 { + invalidParams.Add(request.NewErrParamMinLen("LaunchTemplateName", 3)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *ModifyLaunchTemplateInput) SetClientToken(v string) *ModifyLaunchTemplateInput { + s.ClientToken = &v + return s +} + +// SetDefaultVersion sets the DefaultVersion field's value. +func (s *ModifyLaunchTemplateInput) SetDefaultVersion(v string) *ModifyLaunchTemplateInput { + s.DefaultVersion = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyLaunchTemplateInput) SetDryRun(v bool) *ModifyLaunchTemplateInput { + s.DryRun = &v + return s +} + +// SetLaunchTemplateId sets the LaunchTemplateId field's value. +func (s *ModifyLaunchTemplateInput) SetLaunchTemplateId(v string) *ModifyLaunchTemplateInput { + s.LaunchTemplateId = &v + return s +} + +// SetLaunchTemplateName sets the LaunchTemplateName field's value. +func (s *ModifyLaunchTemplateInput) SetLaunchTemplateName(v string) *ModifyLaunchTemplateInput { + s.LaunchTemplateName = &v + return s +} + +type ModifyLaunchTemplateOutput struct { + _ struct{} `type:"structure"` + + // Information about the launch template. + LaunchTemplate *LaunchTemplate `locationName:"launchTemplate" type:"structure"` +} + +// String returns the string representation +func (s ModifyLaunchTemplateOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyLaunchTemplateOutput) GoString() string { + return s.String() +} + +// SetLaunchTemplate sets the LaunchTemplate field's value. +func (s *ModifyLaunchTemplateOutput) SetLaunchTemplate(v *LaunchTemplate) *ModifyLaunchTemplateOutput { + s.LaunchTemplate = v + return s +} + +// Contains the parameters for ModifyNetworkInterfaceAttribute. +type ModifyNetworkInterfaceAttributeInput struct { + _ struct{} `type:"structure"` + + // Information about the interface attachment. If modifying the 'delete on termination' + // attribute, you must specify the ID of the interface attachment. + Attachment *NetworkInterfaceAttachmentChanges `locationName:"attachment" type:"structure"` + + // A description for the network interface. + Description *AttributeValue `locationName:"description" type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // Changes the security groups for the network interface. The new set of groups + // you specify replaces the current set. You must specify at least one group, + // even if it's just the default security group in the VPC. You must specify + // the ID of the security group, not the name. + Groups []*string `locationName:"SecurityGroupId" locationNameList:"SecurityGroupId" type:"list"` + + // The ID of the network interface. + // + // NetworkInterfaceId is a required field + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string" required:"true"` + + // Indicates whether source/destination checking is enabled. A value of true + // means checking is enabled, and false means checking is disabled. This value + // must be false for a NAT instance to perform NAT. For more information, see + // NAT Instances (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html) + // in the Amazon Virtual Private Cloud User Guide. + SourceDestCheck *AttributeBooleanValue `locationName:"sourceDestCheck" type:"structure"` +} + +// String returns the string representation +func (s ModifyNetworkInterfaceAttributeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyNetworkInterfaceAttributeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyNetworkInterfaceAttributeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyNetworkInterfaceAttributeInput"} + if s.NetworkInterfaceId == nil { + invalidParams.Add(request.NewErrParamRequired("NetworkInterfaceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAttachment sets the Attachment field's value. +func (s *ModifyNetworkInterfaceAttributeInput) SetAttachment(v *NetworkInterfaceAttachmentChanges) *ModifyNetworkInterfaceAttributeInput { + s.Attachment = v + return s +} + +// SetDescription sets the Description field's value. +func (s *ModifyNetworkInterfaceAttributeInput) SetDescription(v *AttributeValue) *ModifyNetworkInterfaceAttributeInput { + s.Description = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyNetworkInterfaceAttributeInput) SetDryRun(v bool) *ModifyNetworkInterfaceAttributeInput { + s.DryRun = &v + return s +} + +// SetGroups sets the Groups field's value. +func (s *ModifyNetworkInterfaceAttributeInput) SetGroups(v []*string) *ModifyNetworkInterfaceAttributeInput { + s.Groups = v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *ModifyNetworkInterfaceAttributeInput) SetNetworkInterfaceId(v string) *ModifyNetworkInterfaceAttributeInput { + s.NetworkInterfaceId = &v + return s +} + +// SetSourceDestCheck sets the SourceDestCheck field's value. +func (s *ModifyNetworkInterfaceAttributeInput) SetSourceDestCheck(v *AttributeBooleanValue) *ModifyNetworkInterfaceAttributeInput { + s.SourceDestCheck = v + return s +} + +type ModifyNetworkInterfaceAttributeOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s ModifyNetworkInterfaceAttributeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyNetworkInterfaceAttributeOutput) GoString() string { + return s.String() +} + +// Contains the parameters for ModifyReservedInstances. +type ModifyReservedInstancesInput struct { + _ struct{} `type:"structure"` + + // A unique, case-sensitive token you provide to ensure idempotency of your + // modification request. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `locationName:"clientToken" type:"string"` + + // The IDs of the Reserved Instances to modify. + // + // ReservedInstancesIds is a required field + ReservedInstancesIds []*string `locationName:"ReservedInstancesId" locationNameList:"ReservedInstancesId" type:"list" required:"true"` + + // The configuration settings for the Reserved Instances to modify. + // + // TargetConfigurations is a required field + TargetConfigurations []*ReservedInstancesConfiguration `locationName:"ReservedInstancesConfigurationSetItemType" locationNameList:"item" type:"list" required:"true"` +} + +// String returns the string representation +func (s ModifyReservedInstancesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyReservedInstancesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyReservedInstancesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyReservedInstancesInput"} + if s.ReservedInstancesIds == nil { + invalidParams.Add(request.NewErrParamRequired("ReservedInstancesIds")) + } + if s.TargetConfigurations == nil { + invalidParams.Add(request.NewErrParamRequired("TargetConfigurations")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *ModifyReservedInstancesInput) SetClientToken(v string) *ModifyReservedInstancesInput { + s.ClientToken = &v + return s +} + +// SetReservedInstancesIds sets the ReservedInstancesIds field's value. +func (s *ModifyReservedInstancesInput) SetReservedInstancesIds(v []*string) *ModifyReservedInstancesInput { + s.ReservedInstancesIds = v + return s +} + +// SetTargetConfigurations sets the TargetConfigurations field's value. +func (s *ModifyReservedInstancesInput) SetTargetConfigurations(v []*ReservedInstancesConfiguration) *ModifyReservedInstancesInput { + s.TargetConfigurations = v + return s +} + +// Contains the output of ModifyReservedInstances. +type ModifyReservedInstancesOutput struct { + _ struct{} `type:"structure"` + + // The ID for the modification. + ReservedInstancesModificationId *string `locationName:"reservedInstancesModificationId" type:"string"` +} + +// String returns the string representation +func (s ModifyReservedInstancesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyReservedInstancesOutput) GoString() string { + return s.String() +} + +// SetReservedInstancesModificationId sets the ReservedInstancesModificationId field's value. +func (s *ModifyReservedInstancesOutput) SetReservedInstancesModificationId(v string) *ModifyReservedInstancesOutput { + s.ReservedInstancesModificationId = &v + return s +} + +// Contains the parameters for ModifySnapshotAttribute. +type ModifySnapshotAttributeInput struct { + _ struct{} `type:"structure"` + + // The snapshot attribute to modify. Only volume creation permissions can be + // modified. + Attribute *string `type:"string" enum:"SnapshotAttributeName"` + + // A JSON representation of the snapshot attribute modification. + CreateVolumePermission *CreateVolumePermissionModifications `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The group to modify for the snapshot. + GroupNames []*string `locationName:"UserGroup" locationNameList:"GroupName" type:"list"` + + // The type of operation to perform to the attribute. + OperationType *string `type:"string" enum:"OperationType"` + + // The ID of the snapshot. + // + // SnapshotId is a required field + SnapshotId *string `type:"string" required:"true"` + + // The account ID to modify for the snapshot. + UserIds []*string `locationName:"UserId" locationNameList:"UserId" type:"list"` +} + +// String returns the string representation +func (s ModifySnapshotAttributeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifySnapshotAttributeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifySnapshotAttributeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifySnapshotAttributeInput"} + if s.SnapshotId == nil { + invalidParams.Add(request.NewErrParamRequired("SnapshotId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAttribute sets the Attribute field's value. +func (s *ModifySnapshotAttributeInput) SetAttribute(v string) *ModifySnapshotAttributeInput { + s.Attribute = &v + return s +} + +// SetCreateVolumePermission sets the CreateVolumePermission field's value. +func (s *ModifySnapshotAttributeInput) SetCreateVolumePermission(v *CreateVolumePermissionModifications) *ModifySnapshotAttributeInput { + s.CreateVolumePermission = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifySnapshotAttributeInput) SetDryRun(v bool) *ModifySnapshotAttributeInput { + s.DryRun = &v + return s +} + +// SetGroupNames sets the GroupNames field's value. +func (s *ModifySnapshotAttributeInput) SetGroupNames(v []*string) *ModifySnapshotAttributeInput { + s.GroupNames = v + return s +} + +// SetOperationType sets the OperationType field's value. +func (s *ModifySnapshotAttributeInput) SetOperationType(v string) *ModifySnapshotAttributeInput { + s.OperationType = &v + return s +} + +// SetSnapshotId sets the SnapshotId field's value. +func (s *ModifySnapshotAttributeInput) SetSnapshotId(v string) *ModifySnapshotAttributeInput { + s.SnapshotId = &v + return s +} + +// SetUserIds sets the UserIds field's value. +func (s *ModifySnapshotAttributeInput) SetUserIds(v []*string) *ModifySnapshotAttributeInput { + s.UserIds = v + return s +} + +type ModifySnapshotAttributeOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s ModifySnapshotAttributeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifySnapshotAttributeOutput) GoString() string { + return s.String() +} + +// Contains the parameters for ModifySpotFleetRequest. +type ModifySpotFleetRequestInput struct { + _ struct{} `type:"structure"` + + // Indicates whether running Spot Instances should be terminated if the target + // capacity of the Spot Fleet request is decreased below the current size of + // the Spot Fleet. + ExcessCapacityTerminationPolicy *string `locationName:"excessCapacityTerminationPolicy" type:"string" enum:"ExcessCapacityTerminationPolicy"` + + // The number of On-Demand Instances in the fleet. + OnDemandTargetCapacity *int64 `type:"integer"` + + // The ID of the Spot Fleet request. + // + // SpotFleetRequestId is a required field + SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"` + + // The size of the fleet. + TargetCapacity *int64 `locationName:"targetCapacity" type:"integer"` +} + +// String returns the string representation +func (s ModifySpotFleetRequestInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifySpotFleetRequestInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifySpotFleetRequestInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifySpotFleetRequestInput"} + if s.SpotFleetRequestId == nil { + invalidParams.Add(request.NewErrParamRequired("SpotFleetRequestId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetExcessCapacityTerminationPolicy sets the ExcessCapacityTerminationPolicy field's value. +func (s *ModifySpotFleetRequestInput) SetExcessCapacityTerminationPolicy(v string) *ModifySpotFleetRequestInput { + s.ExcessCapacityTerminationPolicy = &v + return s +} + +// SetOnDemandTargetCapacity sets the OnDemandTargetCapacity field's value. +func (s *ModifySpotFleetRequestInput) SetOnDemandTargetCapacity(v int64) *ModifySpotFleetRequestInput { + s.OnDemandTargetCapacity = &v + return s +} + +// SetSpotFleetRequestId sets the SpotFleetRequestId field's value. +func (s *ModifySpotFleetRequestInput) SetSpotFleetRequestId(v string) *ModifySpotFleetRequestInput { + s.SpotFleetRequestId = &v + return s +} + +// SetTargetCapacity sets the TargetCapacity field's value. +func (s *ModifySpotFleetRequestInput) SetTargetCapacity(v int64) *ModifySpotFleetRequestInput { + s.TargetCapacity = &v + return s +} + +// Contains the output of ModifySpotFleetRequest. +type ModifySpotFleetRequestOutput struct { + _ struct{} `type:"structure"` + + // Is true if the request succeeds, and an error otherwise. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s ModifySpotFleetRequestOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifySpotFleetRequestOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *ModifySpotFleetRequestOutput) SetReturn(v bool) *ModifySpotFleetRequestOutput { + s.Return = &v + return s +} + +type ModifySubnetAttributeInput struct { + _ struct{} `type:"structure"` + + // Specify true to indicate that network interfaces created in the specified + // subnet should be assigned an IPv6 address. This includes a network interface + // that's created when launching an instance into the subnet (the instance therefore + // receives an IPv6 address). + // + // If you enable the IPv6 addressing feature for your subnet, your network interface + // or instance only receives an IPv6 address if it's created using version 2016-11-15 + // or later of the Amazon EC2 API. + AssignIpv6AddressOnCreation *AttributeBooleanValue `type:"structure"` + + // Specify true to indicate that ENIs attached to instances created in the specified + // subnet should be assigned a public IPv4 address. + MapPublicIpOnLaunch *AttributeBooleanValue `type:"structure"` + + // The ID of the subnet. + // + // SubnetId is a required field + SubnetId *string `locationName:"subnetId" type:"string" required:"true"` +} + +// String returns the string representation +func (s ModifySubnetAttributeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifySubnetAttributeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifySubnetAttributeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifySubnetAttributeInput"} + if s.SubnetId == nil { + invalidParams.Add(request.NewErrParamRequired("SubnetId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAssignIpv6AddressOnCreation sets the AssignIpv6AddressOnCreation field's value. +func (s *ModifySubnetAttributeInput) SetAssignIpv6AddressOnCreation(v *AttributeBooleanValue) *ModifySubnetAttributeInput { + s.AssignIpv6AddressOnCreation = v + return s +} + +// SetMapPublicIpOnLaunch sets the MapPublicIpOnLaunch field's value. +func (s *ModifySubnetAttributeInput) SetMapPublicIpOnLaunch(v *AttributeBooleanValue) *ModifySubnetAttributeInput { + s.MapPublicIpOnLaunch = v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *ModifySubnetAttributeInput) SetSubnetId(v string) *ModifySubnetAttributeInput { + s.SubnetId = &v + return s +} + +type ModifySubnetAttributeOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s ModifySubnetAttributeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifySubnetAttributeOutput) GoString() string { + return s.String() +} + +type ModifyTrafficMirrorFilterNetworkServicesInput struct { + _ struct{} `type:"structure"` + + // The network service, for example Amazon DNS, that you want to mirror. + AddNetworkServices []*string `locationName:"AddNetworkService" locationNameList:"item" type:"list"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The network service, for example Amazon DNS, that you no longer want to mirror. + RemoveNetworkServices []*string `locationName:"RemoveNetworkService" locationNameList:"item" type:"list"` + + // The ID of the Traffic Mirror filter. + // + // TrafficMirrorFilterId is a required field + TrafficMirrorFilterId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s ModifyTrafficMirrorFilterNetworkServicesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyTrafficMirrorFilterNetworkServicesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyTrafficMirrorFilterNetworkServicesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyTrafficMirrorFilterNetworkServicesInput"} + if s.TrafficMirrorFilterId == nil { + invalidParams.Add(request.NewErrParamRequired("TrafficMirrorFilterId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAddNetworkServices sets the AddNetworkServices field's value. +func (s *ModifyTrafficMirrorFilterNetworkServicesInput) SetAddNetworkServices(v []*string) *ModifyTrafficMirrorFilterNetworkServicesInput { + s.AddNetworkServices = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyTrafficMirrorFilterNetworkServicesInput) SetDryRun(v bool) *ModifyTrafficMirrorFilterNetworkServicesInput { + s.DryRun = &v + return s +} + +// SetRemoveNetworkServices sets the RemoveNetworkServices field's value. +func (s *ModifyTrafficMirrorFilterNetworkServicesInput) SetRemoveNetworkServices(v []*string) *ModifyTrafficMirrorFilterNetworkServicesInput { + s.RemoveNetworkServices = v + return s +} + +// SetTrafficMirrorFilterId sets the TrafficMirrorFilterId field's value. +func (s *ModifyTrafficMirrorFilterNetworkServicesInput) SetTrafficMirrorFilterId(v string) *ModifyTrafficMirrorFilterNetworkServicesInput { + s.TrafficMirrorFilterId = &v + return s +} + +type ModifyTrafficMirrorFilterNetworkServicesOutput struct { + _ struct{} `type:"structure"` + + // The Traffic Mirror filter that the network service is associated with. + TrafficMirrorFilter *TrafficMirrorFilter `locationName:"trafficMirrorFilter" type:"structure"` +} + +// String returns the string representation +func (s ModifyTrafficMirrorFilterNetworkServicesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyTrafficMirrorFilterNetworkServicesOutput) GoString() string { + return s.String() +} + +// SetTrafficMirrorFilter sets the TrafficMirrorFilter field's value. +func (s *ModifyTrafficMirrorFilterNetworkServicesOutput) SetTrafficMirrorFilter(v *TrafficMirrorFilter) *ModifyTrafficMirrorFilterNetworkServicesOutput { + s.TrafficMirrorFilter = v + return s +} + +type ModifyTrafficMirrorFilterRuleInput struct { + _ struct{} `type:"structure"` + + // The description to assign to the Traffic Mirror rule. + Description *string `type:"string"` + + // The destination CIDR block to assign to the Traffic Mirror rule. + DestinationCidrBlock *string `type:"string"` + + // The destination ports that are associated with the Traffic Mirror rule. + DestinationPortRange *TrafficMirrorPortRangeRequest `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The protocol, for example TCP, to assign to the Traffic Mirror rule. + Protocol *int64 `type:"integer"` + + // The properties that you want to remove from the Traffic Mirror filter rule. + // + // When you remove a property from a Traffic Mirror filter rule, the property + // is set to the default. + RemoveFields []*string `locationName:"RemoveField" type:"list"` + + // The action to assign to the rule. + RuleAction *string `type:"string" enum:"TrafficMirrorRuleAction"` + + // The number of the Traffic Mirror rule. This number must be unique for each + // Traffic Mirror rule in a given direction. The rules are processed in ascending + // order by rule number. + RuleNumber *int64 `type:"integer"` + + // The source CIDR block to assign to the Traffic Mirror rule. + SourceCidrBlock *string `type:"string"` + + // The port range to assign to the Traffic Mirror rule. + SourcePortRange *TrafficMirrorPortRangeRequest `type:"structure"` + + // The type of traffic (ingress | egress) to assign to the rule. + TrafficDirection *string `type:"string" enum:"TrafficDirection"` + + // The ID of the Traffic Mirror rule. + // + // TrafficMirrorFilterRuleId is a required field + TrafficMirrorFilterRuleId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s ModifyTrafficMirrorFilterRuleInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyTrafficMirrorFilterRuleInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyTrafficMirrorFilterRuleInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyTrafficMirrorFilterRuleInput"} + if s.TrafficMirrorFilterRuleId == nil { + invalidParams.Add(request.NewErrParamRequired("TrafficMirrorFilterRuleId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDescription sets the Description field's value. +func (s *ModifyTrafficMirrorFilterRuleInput) SetDescription(v string) *ModifyTrafficMirrorFilterRuleInput { + s.Description = &v + return s +} + +// SetDestinationCidrBlock sets the DestinationCidrBlock field's value. +func (s *ModifyTrafficMirrorFilterRuleInput) SetDestinationCidrBlock(v string) *ModifyTrafficMirrorFilterRuleInput { + s.DestinationCidrBlock = &v + return s +} + +// SetDestinationPortRange sets the DestinationPortRange field's value. +func (s *ModifyTrafficMirrorFilterRuleInput) SetDestinationPortRange(v *TrafficMirrorPortRangeRequest) *ModifyTrafficMirrorFilterRuleInput { + s.DestinationPortRange = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyTrafficMirrorFilterRuleInput) SetDryRun(v bool) *ModifyTrafficMirrorFilterRuleInput { + s.DryRun = &v + return s +} + +// SetProtocol sets the Protocol field's value. +func (s *ModifyTrafficMirrorFilterRuleInput) SetProtocol(v int64) *ModifyTrafficMirrorFilterRuleInput { + s.Protocol = &v + return s +} + +// SetRemoveFields sets the RemoveFields field's value. +func (s *ModifyTrafficMirrorFilterRuleInput) SetRemoveFields(v []*string) *ModifyTrafficMirrorFilterRuleInput { + s.RemoveFields = v + return s +} + +// SetRuleAction sets the RuleAction field's value. +func (s *ModifyTrafficMirrorFilterRuleInput) SetRuleAction(v string) *ModifyTrafficMirrorFilterRuleInput { + s.RuleAction = &v + return s +} + +// SetRuleNumber sets the RuleNumber field's value. +func (s *ModifyTrafficMirrorFilterRuleInput) SetRuleNumber(v int64) *ModifyTrafficMirrorFilterRuleInput { + s.RuleNumber = &v + return s +} + +// SetSourceCidrBlock sets the SourceCidrBlock field's value. +func (s *ModifyTrafficMirrorFilterRuleInput) SetSourceCidrBlock(v string) *ModifyTrafficMirrorFilterRuleInput { + s.SourceCidrBlock = &v + return s +} + +// SetSourcePortRange sets the SourcePortRange field's value. +func (s *ModifyTrafficMirrorFilterRuleInput) SetSourcePortRange(v *TrafficMirrorPortRangeRequest) *ModifyTrafficMirrorFilterRuleInput { + s.SourcePortRange = v + return s +} + +// SetTrafficDirection sets the TrafficDirection field's value. +func (s *ModifyTrafficMirrorFilterRuleInput) SetTrafficDirection(v string) *ModifyTrafficMirrorFilterRuleInput { + s.TrafficDirection = &v + return s +} + +// SetTrafficMirrorFilterRuleId sets the TrafficMirrorFilterRuleId field's value. +func (s *ModifyTrafficMirrorFilterRuleInput) SetTrafficMirrorFilterRuleId(v string) *ModifyTrafficMirrorFilterRuleInput { + s.TrafficMirrorFilterRuleId = &v + return s +} + +type ModifyTrafficMirrorFilterRuleOutput struct { + _ struct{} `type:"structure"` + + // Modifies a Traffic Mirror rule. + TrafficMirrorFilterRule *TrafficMirrorFilterRule `locationName:"trafficMirrorFilterRule" type:"structure"` +} + +// String returns the string representation +func (s ModifyTrafficMirrorFilterRuleOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyTrafficMirrorFilterRuleOutput) GoString() string { + return s.String() +} + +// SetTrafficMirrorFilterRule sets the TrafficMirrorFilterRule field's value. +func (s *ModifyTrafficMirrorFilterRuleOutput) SetTrafficMirrorFilterRule(v *TrafficMirrorFilterRule) *ModifyTrafficMirrorFilterRuleOutput { + s.TrafficMirrorFilterRule = v + return s +} + +type ModifyTrafficMirrorSessionInput struct { + _ struct{} `type:"structure"` + + // The description to assign to the Traffic Mirror session. + Description *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The number of bytes in each packet to mirror. These are bytes after the VXLAN + // header. To mirror a subset, set this to the length (in bytes) to mirror. + // For example, if you set this value to 100, then the first 100 bytes that + // meet the filter criteria are copied to the target. Do not specify this parameter + // when you want to mirror the entire packet. + PacketLength *int64 `type:"integer"` + + // The properties that you want to remove from the Traffic Mirror session. + // + // When you remove a property from a Traffic Mirror session, the property is + // set to the default. + RemoveFields []*string `locationName:"RemoveField" type:"list"` + + // The session number determines the order in which sessions are evaluated when + // an interface is used by multiple sessions. The first session with a matching + // filter is the one that mirrors the packets. + // + // Valid values are 1-32766. + SessionNumber *int64 `type:"integer"` + + // The ID of the Traffic Mirror filter. + TrafficMirrorFilterId *string `type:"string"` + + // The ID of the Traffic Mirror session. + // + // TrafficMirrorSessionId is a required field + TrafficMirrorSessionId *string `type:"string" required:"true"` + + // The Traffic Mirror target. The target must be in the same VPC as the source, + // or have a VPC peering connection with the source. + TrafficMirrorTargetId *string `type:"string"` + + // The virtual network ID of the Traffic Mirror session. + VirtualNetworkId *int64 `type:"integer"` +} + +// String returns the string representation +func (s ModifyTrafficMirrorSessionInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyTrafficMirrorSessionInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyTrafficMirrorSessionInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyTrafficMirrorSessionInput"} + if s.TrafficMirrorSessionId == nil { + invalidParams.Add(request.NewErrParamRequired("TrafficMirrorSessionId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDescription sets the Description field's value. +func (s *ModifyTrafficMirrorSessionInput) SetDescription(v string) *ModifyTrafficMirrorSessionInput { + s.Description = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyTrafficMirrorSessionInput) SetDryRun(v bool) *ModifyTrafficMirrorSessionInput { + s.DryRun = &v + return s +} + +// SetPacketLength sets the PacketLength field's value. +func (s *ModifyTrafficMirrorSessionInput) SetPacketLength(v int64) *ModifyTrafficMirrorSessionInput { + s.PacketLength = &v + return s +} + +// SetRemoveFields sets the RemoveFields field's value. +func (s *ModifyTrafficMirrorSessionInput) SetRemoveFields(v []*string) *ModifyTrafficMirrorSessionInput { + s.RemoveFields = v + return s +} + +// SetSessionNumber sets the SessionNumber field's value. +func (s *ModifyTrafficMirrorSessionInput) SetSessionNumber(v int64) *ModifyTrafficMirrorSessionInput { + s.SessionNumber = &v + return s +} + +// SetTrafficMirrorFilterId sets the TrafficMirrorFilterId field's value. +func (s *ModifyTrafficMirrorSessionInput) SetTrafficMirrorFilterId(v string) *ModifyTrafficMirrorSessionInput { + s.TrafficMirrorFilterId = &v + return s +} + +// SetTrafficMirrorSessionId sets the TrafficMirrorSessionId field's value. +func (s *ModifyTrafficMirrorSessionInput) SetTrafficMirrorSessionId(v string) *ModifyTrafficMirrorSessionInput { + s.TrafficMirrorSessionId = &v + return s +} + +// SetTrafficMirrorTargetId sets the TrafficMirrorTargetId field's value. +func (s *ModifyTrafficMirrorSessionInput) SetTrafficMirrorTargetId(v string) *ModifyTrafficMirrorSessionInput { + s.TrafficMirrorTargetId = &v + return s +} + +// SetVirtualNetworkId sets the VirtualNetworkId field's value. +func (s *ModifyTrafficMirrorSessionInput) SetVirtualNetworkId(v int64) *ModifyTrafficMirrorSessionInput { + s.VirtualNetworkId = &v + return s +} + +type ModifyTrafficMirrorSessionOutput struct { + _ struct{} `type:"structure"` + + // Information about the Traffic Mirror session. + TrafficMirrorSession *TrafficMirrorSession `locationName:"trafficMirrorSession" type:"structure"` +} + +// String returns the string representation +func (s ModifyTrafficMirrorSessionOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyTrafficMirrorSessionOutput) GoString() string { + return s.String() +} + +// SetTrafficMirrorSession sets the TrafficMirrorSession field's value. +func (s *ModifyTrafficMirrorSessionOutput) SetTrafficMirrorSession(v *TrafficMirrorSession) *ModifyTrafficMirrorSessionOutput { + s.TrafficMirrorSession = v + return s +} + +type ModifyTransitGatewayVpcAttachmentInput struct { + _ struct{} `type:"structure"` + + // The IDs of one or more subnets to add. You can specify at most one subnet + // per Availability Zone. + AddSubnetIds []*string `locationNameList:"item" type:"list"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The new VPC attachment options. + Options *ModifyTransitGatewayVpcAttachmentRequestOptions `type:"structure"` + + // The IDs of one or more subnets to remove. + RemoveSubnetIds []*string `locationNameList:"item" type:"list"` + + // The ID of the attachment. + // + // TransitGatewayAttachmentId is a required field + TransitGatewayAttachmentId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s ModifyTransitGatewayVpcAttachmentInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyTransitGatewayVpcAttachmentInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyTransitGatewayVpcAttachmentInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyTransitGatewayVpcAttachmentInput"} + if s.TransitGatewayAttachmentId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayAttachmentId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAddSubnetIds sets the AddSubnetIds field's value. +func (s *ModifyTransitGatewayVpcAttachmentInput) SetAddSubnetIds(v []*string) *ModifyTransitGatewayVpcAttachmentInput { + s.AddSubnetIds = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyTransitGatewayVpcAttachmentInput) SetDryRun(v bool) *ModifyTransitGatewayVpcAttachmentInput { + s.DryRun = &v + return s +} + +// SetOptions sets the Options field's value. +func (s *ModifyTransitGatewayVpcAttachmentInput) SetOptions(v *ModifyTransitGatewayVpcAttachmentRequestOptions) *ModifyTransitGatewayVpcAttachmentInput { + s.Options = v + return s +} + +// SetRemoveSubnetIds sets the RemoveSubnetIds field's value. +func (s *ModifyTransitGatewayVpcAttachmentInput) SetRemoveSubnetIds(v []*string) *ModifyTransitGatewayVpcAttachmentInput { + s.RemoveSubnetIds = v + return s +} + +// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value. +func (s *ModifyTransitGatewayVpcAttachmentInput) SetTransitGatewayAttachmentId(v string) *ModifyTransitGatewayVpcAttachmentInput { + s.TransitGatewayAttachmentId = &v + return s +} + +type ModifyTransitGatewayVpcAttachmentOutput struct { + _ struct{} `type:"structure"` + + // Information about the modified attachment. + TransitGatewayVpcAttachment *TransitGatewayVpcAttachment `locationName:"transitGatewayVpcAttachment" type:"structure"` +} + +// String returns the string representation +func (s ModifyTransitGatewayVpcAttachmentOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyTransitGatewayVpcAttachmentOutput) GoString() string { + return s.String() +} + +// SetTransitGatewayVpcAttachment sets the TransitGatewayVpcAttachment field's value. +func (s *ModifyTransitGatewayVpcAttachmentOutput) SetTransitGatewayVpcAttachment(v *TransitGatewayVpcAttachment) *ModifyTransitGatewayVpcAttachmentOutput { + s.TransitGatewayVpcAttachment = v + return s +} + +// Describes the options for a VPC attachment. +type ModifyTransitGatewayVpcAttachmentRequestOptions struct { + _ struct{} `type:"structure"` + + // Enable or disable DNS support. The default is enable. + DnsSupport *string `type:"string" enum:"DnsSupportValue"` + + // Enable or disable IPv6 support. The default is enable. + Ipv6Support *string `type:"string" enum:"Ipv6SupportValue"` +} + +// String returns the string representation +func (s ModifyTransitGatewayVpcAttachmentRequestOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyTransitGatewayVpcAttachmentRequestOptions) GoString() string { + return s.String() +} + +// SetDnsSupport sets the DnsSupport field's value. +func (s *ModifyTransitGatewayVpcAttachmentRequestOptions) SetDnsSupport(v string) *ModifyTransitGatewayVpcAttachmentRequestOptions { + s.DnsSupport = &v + return s +} + +// SetIpv6Support sets the Ipv6Support field's value. +func (s *ModifyTransitGatewayVpcAttachmentRequestOptions) SetIpv6Support(v string) *ModifyTransitGatewayVpcAttachmentRequestOptions { + s.Ipv6Support = &v + return s +} + +// Contains the parameters for ModifyVolumeAttribute. +type ModifyVolumeAttributeInput struct { + _ struct{} `type:"structure"` + + // Indicates whether the volume should be auto-enabled for I/O operations. + AutoEnableIO *AttributeBooleanValue `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the volume. + // + // VolumeId is a required field + VolumeId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s ModifyVolumeAttributeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVolumeAttributeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyVolumeAttributeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyVolumeAttributeInput"} + if s.VolumeId == nil { + invalidParams.Add(request.NewErrParamRequired("VolumeId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAutoEnableIO sets the AutoEnableIO field's value. +func (s *ModifyVolumeAttributeInput) SetAutoEnableIO(v *AttributeBooleanValue) *ModifyVolumeAttributeInput { + s.AutoEnableIO = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyVolumeAttributeInput) SetDryRun(v bool) *ModifyVolumeAttributeInput { + s.DryRun = &v + return s +} + +// SetVolumeId sets the VolumeId field's value. +func (s *ModifyVolumeAttributeInput) SetVolumeId(v string) *ModifyVolumeAttributeInput { + s.VolumeId = &v + return s +} + +type ModifyVolumeAttributeOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s ModifyVolumeAttributeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVolumeAttributeOutput) GoString() string { + return s.String() +} + +type ModifyVolumeInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The target IOPS rate of the volume. + // + // This is only valid for Provisioned IOPS SSD (io1) volumes. For more information, + // see Provisioned IOPS SSD (io1) Volumes (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html#EBSVolumeTypes_piops). + // + // Default: If no IOPS value is specified, the existing value is retained. + Iops *int64 `type:"integer"` + + // The target size of the volume, in GiB. The target volume size must be greater + // than or equal to than the existing size of the volume. For information about + // available EBS volume sizes, see Amazon EBS Volume Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html). + // + // Default: If no size is specified, the existing size is retained. + Size *int64 `type:"integer"` + + // The ID of the volume. + // + // VolumeId is a required field + VolumeId *string `type:"string" required:"true"` + + // The target EBS volume type of the volume. + // + // Default: If no type is specified, the existing type is retained. + VolumeType *string `type:"string" enum:"VolumeType"` +} + +// String returns the string representation +func (s ModifyVolumeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVolumeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyVolumeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyVolumeInput"} + if s.VolumeId == nil { + invalidParams.Add(request.NewErrParamRequired("VolumeId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyVolumeInput) SetDryRun(v bool) *ModifyVolumeInput { + s.DryRun = &v + return s +} + +// SetIops sets the Iops field's value. +func (s *ModifyVolumeInput) SetIops(v int64) *ModifyVolumeInput { + s.Iops = &v + return s +} + +// SetSize sets the Size field's value. +func (s *ModifyVolumeInput) SetSize(v int64) *ModifyVolumeInput { + s.Size = &v + return s +} + +// SetVolumeId sets the VolumeId field's value. +func (s *ModifyVolumeInput) SetVolumeId(v string) *ModifyVolumeInput { + s.VolumeId = &v + return s +} + +// SetVolumeType sets the VolumeType field's value. +func (s *ModifyVolumeInput) SetVolumeType(v string) *ModifyVolumeInput { + s.VolumeType = &v + return s +} + +type ModifyVolumeOutput struct { + _ struct{} `type:"structure"` + + // Information about the volume modification. + VolumeModification *VolumeModification `locationName:"volumeModification" type:"structure"` +} + +// String returns the string representation +func (s ModifyVolumeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVolumeOutput) GoString() string { + return s.String() +} + +// SetVolumeModification sets the VolumeModification field's value. +func (s *ModifyVolumeOutput) SetVolumeModification(v *VolumeModification) *ModifyVolumeOutput { + s.VolumeModification = v + return s +} + +type ModifyVpcAttributeInput struct { + _ struct{} `type:"structure"` + + // Indicates whether the instances launched in the VPC get DNS hostnames. If + // enabled, instances in the VPC get DNS hostnames; otherwise, they do not. + // + // You cannot modify the DNS resolution and DNS hostnames attributes in the + // same request. Use separate requests for each attribute. You can only enable + // DNS hostnames if you've enabled DNS support. + EnableDnsHostnames *AttributeBooleanValue `type:"structure"` + + // Indicates whether the DNS resolution is supported for the VPC. If enabled, + // queries to the Amazon provided DNS server at the 169.254.169.253 IP address, + // or the reserved IP address at the base of the VPC network range "plus two" + // succeed. If disabled, the Amazon provided DNS service in the VPC that resolves + // public DNS hostnames to IP addresses is not enabled. + // + // You cannot modify the DNS resolution and DNS hostnames attributes in the + // same request. Use separate requests for each attribute. + EnableDnsSupport *AttributeBooleanValue `type:"structure"` + + // The ID of the VPC. + // + // VpcId is a required field + VpcId *string `locationName:"vpcId" type:"string" required:"true"` +} + +// String returns the string representation +func (s ModifyVpcAttributeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpcAttributeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyVpcAttributeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyVpcAttributeInput"} + if s.VpcId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetEnableDnsHostnames sets the EnableDnsHostnames field's value. +func (s *ModifyVpcAttributeInput) SetEnableDnsHostnames(v *AttributeBooleanValue) *ModifyVpcAttributeInput { + s.EnableDnsHostnames = v + return s +} + +// SetEnableDnsSupport sets the EnableDnsSupport field's value. +func (s *ModifyVpcAttributeInput) SetEnableDnsSupport(v *AttributeBooleanValue) *ModifyVpcAttributeInput { + s.EnableDnsSupport = v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *ModifyVpcAttributeInput) SetVpcId(v string) *ModifyVpcAttributeInput { + s.VpcId = &v + return s +} + +type ModifyVpcAttributeOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s ModifyVpcAttributeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpcAttributeOutput) GoString() string { + return s.String() +} + +type ModifyVpcEndpointConnectionNotificationInput struct { + _ struct{} `type:"structure"` + + // One or more events for the endpoint. Valid values are Accept, Connect, Delete, + // and Reject. + ConnectionEvents []*string `locationNameList:"item" type:"list"` + + // The ARN for the SNS topic for the notification. + ConnectionNotificationArn *string `type:"string"` + + // The ID of the notification. + // + // ConnectionNotificationId is a required field + ConnectionNotificationId *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s ModifyVpcEndpointConnectionNotificationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpcEndpointConnectionNotificationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyVpcEndpointConnectionNotificationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyVpcEndpointConnectionNotificationInput"} + if s.ConnectionNotificationId == nil { + invalidParams.Add(request.NewErrParamRequired("ConnectionNotificationId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetConnectionEvents sets the ConnectionEvents field's value. +func (s *ModifyVpcEndpointConnectionNotificationInput) SetConnectionEvents(v []*string) *ModifyVpcEndpointConnectionNotificationInput { + s.ConnectionEvents = v + return s +} + +// SetConnectionNotificationArn sets the ConnectionNotificationArn field's value. +func (s *ModifyVpcEndpointConnectionNotificationInput) SetConnectionNotificationArn(v string) *ModifyVpcEndpointConnectionNotificationInput { + s.ConnectionNotificationArn = &v + return s +} + +// SetConnectionNotificationId sets the ConnectionNotificationId field's value. +func (s *ModifyVpcEndpointConnectionNotificationInput) SetConnectionNotificationId(v string) *ModifyVpcEndpointConnectionNotificationInput { + s.ConnectionNotificationId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyVpcEndpointConnectionNotificationInput) SetDryRun(v bool) *ModifyVpcEndpointConnectionNotificationInput { + s.DryRun = &v + return s +} + +type ModifyVpcEndpointConnectionNotificationOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, it returns an error. + ReturnValue *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s ModifyVpcEndpointConnectionNotificationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpcEndpointConnectionNotificationOutput) GoString() string { + return s.String() +} + +// SetReturnValue sets the ReturnValue field's value. +func (s *ModifyVpcEndpointConnectionNotificationOutput) SetReturnValue(v bool) *ModifyVpcEndpointConnectionNotificationOutput { + s.ReturnValue = &v + return s +} + +// Contains the parameters for ModifyVpcEndpoint. +type ModifyVpcEndpointInput struct { + _ struct{} `type:"structure"` + + // (Gateway endpoint) One or more route tables IDs to associate with the endpoint. + AddRouteTableIds []*string `locationName:"AddRouteTableId" locationNameList:"item" type:"list"` + + // (Interface endpoint) One or more security group IDs to associate with the + // network interface. + AddSecurityGroupIds []*string `locationName:"AddSecurityGroupId" locationNameList:"item" type:"list"` + + // (Interface endpoint) One or more subnet IDs in which to serve the endpoint. + AddSubnetIds []*string `locationName:"AddSubnetId" locationNameList:"item" type:"list"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // A policy to attach to the endpoint that controls access to the service. The + // policy must be in valid JSON format. + PolicyDocument *string `type:"string"` + + // (Interface endpoint) Indicate whether a private hosted zone is associated + // with the VPC. + PrivateDnsEnabled *bool `type:"boolean"` + + // (Gateway endpoint) One or more route table IDs to disassociate from the endpoint. + RemoveRouteTableIds []*string `locationName:"RemoveRouteTableId" locationNameList:"item" type:"list"` + + // (Interface endpoint) One or more security group IDs to disassociate from + // the network interface. + RemoveSecurityGroupIds []*string `locationName:"RemoveSecurityGroupId" locationNameList:"item" type:"list"` + + // (Interface endpoint) One or more subnets IDs in which to remove the endpoint. + RemoveSubnetIds []*string `locationName:"RemoveSubnetId" locationNameList:"item" type:"list"` + + // (Gateway endpoint) Specify true to reset the policy document to the default + // policy. The default policy allows full access to the service. + ResetPolicy *bool `type:"boolean"` + + // The ID of the endpoint. + // + // VpcEndpointId is a required field + VpcEndpointId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s ModifyVpcEndpointInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpcEndpointInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyVpcEndpointInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyVpcEndpointInput"} + if s.VpcEndpointId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcEndpointId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAddRouteTableIds sets the AddRouteTableIds field's value. +func (s *ModifyVpcEndpointInput) SetAddRouteTableIds(v []*string) *ModifyVpcEndpointInput { + s.AddRouteTableIds = v + return s +} + +// SetAddSecurityGroupIds sets the AddSecurityGroupIds field's value. +func (s *ModifyVpcEndpointInput) SetAddSecurityGroupIds(v []*string) *ModifyVpcEndpointInput { + s.AddSecurityGroupIds = v + return s +} + +// SetAddSubnetIds sets the AddSubnetIds field's value. +func (s *ModifyVpcEndpointInput) SetAddSubnetIds(v []*string) *ModifyVpcEndpointInput { + s.AddSubnetIds = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyVpcEndpointInput) SetDryRun(v bool) *ModifyVpcEndpointInput { + s.DryRun = &v + return s +} + +// SetPolicyDocument sets the PolicyDocument field's value. +func (s *ModifyVpcEndpointInput) SetPolicyDocument(v string) *ModifyVpcEndpointInput { + s.PolicyDocument = &v + return s +} + +// SetPrivateDnsEnabled sets the PrivateDnsEnabled field's value. +func (s *ModifyVpcEndpointInput) SetPrivateDnsEnabled(v bool) *ModifyVpcEndpointInput { + s.PrivateDnsEnabled = &v + return s +} + +// SetRemoveRouteTableIds sets the RemoveRouteTableIds field's value. +func (s *ModifyVpcEndpointInput) SetRemoveRouteTableIds(v []*string) *ModifyVpcEndpointInput { + s.RemoveRouteTableIds = v + return s +} + +// SetRemoveSecurityGroupIds sets the RemoveSecurityGroupIds field's value. +func (s *ModifyVpcEndpointInput) SetRemoveSecurityGroupIds(v []*string) *ModifyVpcEndpointInput { + s.RemoveSecurityGroupIds = v + return s +} + +// SetRemoveSubnetIds sets the RemoveSubnetIds field's value. +func (s *ModifyVpcEndpointInput) SetRemoveSubnetIds(v []*string) *ModifyVpcEndpointInput { + s.RemoveSubnetIds = v + return s +} + +// SetResetPolicy sets the ResetPolicy field's value. +func (s *ModifyVpcEndpointInput) SetResetPolicy(v bool) *ModifyVpcEndpointInput { + s.ResetPolicy = &v + return s +} + +// SetVpcEndpointId sets the VpcEndpointId field's value. +func (s *ModifyVpcEndpointInput) SetVpcEndpointId(v string) *ModifyVpcEndpointInput { + s.VpcEndpointId = &v + return s +} + +type ModifyVpcEndpointOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, it returns an error. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s ModifyVpcEndpointOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpcEndpointOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *ModifyVpcEndpointOutput) SetReturn(v bool) *ModifyVpcEndpointOutput { + s.Return = &v + return s +} + +type ModifyVpcEndpointServiceConfigurationInput struct { + _ struct{} `type:"structure"` + + // Indicate whether requests to create an endpoint to your service must be accepted. + AcceptanceRequired *bool `type:"boolean"` + + // The Amazon Resource Names (ARNs) of Network Load Balancers to add to your + // service configuration. + AddNetworkLoadBalancerArns []*string `locationName:"AddNetworkLoadBalancerArn" locationNameList:"item" type:"list"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The Amazon Resource Names (ARNs) of Network Load Balancers to remove from + // your service configuration. + RemoveNetworkLoadBalancerArns []*string `locationName:"RemoveNetworkLoadBalancerArn" locationNameList:"item" type:"list"` + + // The ID of the service. + // + // ServiceId is a required field + ServiceId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s ModifyVpcEndpointServiceConfigurationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpcEndpointServiceConfigurationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyVpcEndpointServiceConfigurationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyVpcEndpointServiceConfigurationInput"} + if s.ServiceId == nil { + invalidParams.Add(request.NewErrParamRequired("ServiceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAcceptanceRequired sets the AcceptanceRequired field's value. +func (s *ModifyVpcEndpointServiceConfigurationInput) SetAcceptanceRequired(v bool) *ModifyVpcEndpointServiceConfigurationInput { + s.AcceptanceRequired = &v + return s +} + +// SetAddNetworkLoadBalancerArns sets the AddNetworkLoadBalancerArns field's value. +func (s *ModifyVpcEndpointServiceConfigurationInput) SetAddNetworkLoadBalancerArns(v []*string) *ModifyVpcEndpointServiceConfigurationInput { + s.AddNetworkLoadBalancerArns = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyVpcEndpointServiceConfigurationInput) SetDryRun(v bool) *ModifyVpcEndpointServiceConfigurationInput { + s.DryRun = &v + return s +} + +// SetRemoveNetworkLoadBalancerArns sets the RemoveNetworkLoadBalancerArns field's value. +func (s *ModifyVpcEndpointServiceConfigurationInput) SetRemoveNetworkLoadBalancerArns(v []*string) *ModifyVpcEndpointServiceConfigurationInput { + s.RemoveNetworkLoadBalancerArns = v + return s +} + +// SetServiceId sets the ServiceId field's value. +func (s *ModifyVpcEndpointServiceConfigurationInput) SetServiceId(v string) *ModifyVpcEndpointServiceConfigurationInput { + s.ServiceId = &v + return s +} + +type ModifyVpcEndpointServiceConfigurationOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, it returns an error. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s ModifyVpcEndpointServiceConfigurationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpcEndpointServiceConfigurationOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *ModifyVpcEndpointServiceConfigurationOutput) SetReturn(v bool) *ModifyVpcEndpointServiceConfigurationOutput { + s.Return = &v + return s +} + +type ModifyVpcEndpointServicePermissionsInput struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Names (ARN) of one or more principals. Permissions are + // granted to the principals in this list. To grant permissions to all principals, + // specify an asterisk (*). + AddAllowedPrincipals []*string `locationNameList:"item" type:"list"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The Amazon Resource Names (ARN) of one or more principals. Permissions are + // revoked for principals in this list. + RemoveAllowedPrincipals []*string `locationNameList:"item" type:"list"` + + // The ID of the service. + // + // ServiceId is a required field + ServiceId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s ModifyVpcEndpointServicePermissionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpcEndpointServicePermissionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyVpcEndpointServicePermissionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyVpcEndpointServicePermissionsInput"} + if s.ServiceId == nil { + invalidParams.Add(request.NewErrParamRequired("ServiceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAddAllowedPrincipals sets the AddAllowedPrincipals field's value. +func (s *ModifyVpcEndpointServicePermissionsInput) SetAddAllowedPrincipals(v []*string) *ModifyVpcEndpointServicePermissionsInput { + s.AddAllowedPrincipals = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyVpcEndpointServicePermissionsInput) SetDryRun(v bool) *ModifyVpcEndpointServicePermissionsInput { + s.DryRun = &v + return s +} + +// SetRemoveAllowedPrincipals sets the RemoveAllowedPrincipals field's value. +func (s *ModifyVpcEndpointServicePermissionsInput) SetRemoveAllowedPrincipals(v []*string) *ModifyVpcEndpointServicePermissionsInput { + s.RemoveAllowedPrincipals = v + return s +} + +// SetServiceId sets the ServiceId field's value. +func (s *ModifyVpcEndpointServicePermissionsInput) SetServiceId(v string) *ModifyVpcEndpointServicePermissionsInput { + s.ServiceId = &v + return s +} + +type ModifyVpcEndpointServicePermissionsOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, it returns an error. + ReturnValue *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s ModifyVpcEndpointServicePermissionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpcEndpointServicePermissionsOutput) GoString() string { + return s.String() +} + +// SetReturnValue sets the ReturnValue field's value. +func (s *ModifyVpcEndpointServicePermissionsOutput) SetReturnValue(v bool) *ModifyVpcEndpointServicePermissionsOutput { + s.ReturnValue = &v + return s +} + +type ModifyVpcPeeringConnectionOptionsInput struct { + _ struct{} `type:"structure"` + + // The VPC peering connection options for the accepter VPC. + AccepterPeeringConnectionOptions *PeeringConnectionOptionsRequest `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The VPC peering connection options for the requester VPC. + RequesterPeeringConnectionOptions *PeeringConnectionOptionsRequest `type:"structure"` + + // The ID of the VPC peering connection. + // + // VpcPeeringConnectionId is a required field + VpcPeeringConnectionId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s ModifyVpcPeeringConnectionOptionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpcPeeringConnectionOptionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyVpcPeeringConnectionOptionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyVpcPeeringConnectionOptionsInput"} + if s.VpcPeeringConnectionId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcPeeringConnectionId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAccepterPeeringConnectionOptions sets the AccepterPeeringConnectionOptions field's value. +func (s *ModifyVpcPeeringConnectionOptionsInput) SetAccepterPeeringConnectionOptions(v *PeeringConnectionOptionsRequest) *ModifyVpcPeeringConnectionOptionsInput { + s.AccepterPeeringConnectionOptions = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyVpcPeeringConnectionOptionsInput) SetDryRun(v bool) *ModifyVpcPeeringConnectionOptionsInput { + s.DryRun = &v + return s +} + +// SetRequesterPeeringConnectionOptions sets the RequesterPeeringConnectionOptions field's value. +func (s *ModifyVpcPeeringConnectionOptionsInput) SetRequesterPeeringConnectionOptions(v *PeeringConnectionOptionsRequest) *ModifyVpcPeeringConnectionOptionsInput { + s.RequesterPeeringConnectionOptions = v + return s +} + +// SetVpcPeeringConnectionId sets the VpcPeeringConnectionId field's value. +func (s *ModifyVpcPeeringConnectionOptionsInput) SetVpcPeeringConnectionId(v string) *ModifyVpcPeeringConnectionOptionsInput { + s.VpcPeeringConnectionId = &v + return s +} + +type ModifyVpcPeeringConnectionOptionsOutput struct { + _ struct{} `type:"structure"` + + // Information about the VPC peering connection options for the accepter VPC. + AccepterPeeringConnectionOptions *PeeringConnectionOptions `locationName:"accepterPeeringConnectionOptions" type:"structure"` + + // Information about the VPC peering connection options for the requester VPC. + RequesterPeeringConnectionOptions *PeeringConnectionOptions `locationName:"requesterPeeringConnectionOptions" type:"structure"` +} + +// String returns the string representation +func (s ModifyVpcPeeringConnectionOptionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpcPeeringConnectionOptionsOutput) GoString() string { + return s.String() +} + +// SetAccepterPeeringConnectionOptions sets the AccepterPeeringConnectionOptions field's value. +func (s *ModifyVpcPeeringConnectionOptionsOutput) SetAccepterPeeringConnectionOptions(v *PeeringConnectionOptions) *ModifyVpcPeeringConnectionOptionsOutput { + s.AccepterPeeringConnectionOptions = v + return s +} + +// SetRequesterPeeringConnectionOptions sets the RequesterPeeringConnectionOptions field's value. +func (s *ModifyVpcPeeringConnectionOptionsOutput) SetRequesterPeeringConnectionOptions(v *PeeringConnectionOptions) *ModifyVpcPeeringConnectionOptionsOutput { + s.RequesterPeeringConnectionOptions = v + return s +} + +type ModifyVpcTenancyInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The instance tenancy attribute for the VPC. + // + // InstanceTenancy is a required field + InstanceTenancy *string `type:"string" required:"true" enum:"VpcTenancy"` + + // The ID of the VPC. + // + // VpcId is a required field + VpcId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s ModifyVpcTenancyInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpcTenancyInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyVpcTenancyInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyVpcTenancyInput"} + if s.InstanceTenancy == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceTenancy")) + } + if s.VpcId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyVpcTenancyInput) SetDryRun(v bool) *ModifyVpcTenancyInput { + s.DryRun = &v + return s +} + +// SetInstanceTenancy sets the InstanceTenancy field's value. +func (s *ModifyVpcTenancyInput) SetInstanceTenancy(v string) *ModifyVpcTenancyInput { + s.InstanceTenancy = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *ModifyVpcTenancyInput) SetVpcId(v string) *ModifyVpcTenancyInput { + s.VpcId = &v + return s +} + +type ModifyVpcTenancyOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, returns an error. + ReturnValue *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s ModifyVpcTenancyOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpcTenancyOutput) GoString() string { + return s.String() +} + +// SetReturnValue sets the ReturnValue field's value. +func (s *ModifyVpcTenancyOutput) SetReturnValue(v bool) *ModifyVpcTenancyOutput { + s.ReturnValue = &v + return s +} + +type ModifyVpnConnectionInput struct { + _ struct{} `type:"structure"` + + // The ID of the customer gateway at your end of the VPN connection. + CustomerGatewayId *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the transit gateway. + TransitGatewayId *string `type:"string"` + + // The ID of the VPN connection. + // + // VpnConnectionId is a required field + VpnConnectionId *string `type:"string" required:"true"` + + // The ID of the virtual private gateway at the AWS side of the VPN connection. + VpnGatewayId *string `type:"string"` +} + +// String returns the string representation +func (s ModifyVpnConnectionInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpnConnectionInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyVpnConnectionInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyVpnConnectionInput"} + if s.VpnConnectionId == nil { + invalidParams.Add(request.NewErrParamRequired("VpnConnectionId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCustomerGatewayId sets the CustomerGatewayId field's value. +func (s *ModifyVpnConnectionInput) SetCustomerGatewayId(v string) *ModifyVpnConnectionInput { + s.CustomerGatewayId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyVpnConnectionInput) SetDryRun(v bool) *ModifyVpnConnectionInput { + s.DryRun = &v + return s +} + +// SetTransitGatewayId sets the TransitGatewayId field's value. +func (s *ModifyVpnConnectionInput) SetTransitGatewayId(v string) *ModifyVpnConnectionInput { + s.TransitGatewayId = &v + return s +} + +// SetVpnConnectionId sets the VpnConnectionId field's value. +func (s *ModifyVpnConnectionInput) SetVpnConnectionId(v string) *ModifyVpnConnectionInput { + s.VpnConnectionId = &v + return s +} + +// SetVpnGatewayId sets the VpnGatewayId field's value. +func (s *ModifyVpnConnectionInput) SetVpnGatewayId(v string) *ModifyVpnConnectionInput { + s.VpnGatewayId = &v + return s +} + +type ModifyVpnConnectionOutput struct { + _ struct{} `type:"structure"` + + // Describes a VPN connection. + VpnConnection *VpnConnection `locationName:"vpnConnection" type:"structure"` +} + +// String returns the string representation +func (s ModifyVpnConnectionOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpnConnectionOutput) GoString() string { + return s.String() +} + +// SetVpnConnection sets the VpnConnection field's value. +func (s *ModifyVpnConnectionOutput) SetVpnConnection(v *VpnConnection) *ModifyVpnConnectionOutput { + s.VpnConnection = v + return s +} + +type ModifyVpnTunnelCertificateInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the AWS Site-to-Site VPN connection. + // + // VpnConnectionId is a required field + VpnConnectionId *string `type:"string" required:"true"` + + // The external IP address of the VPN tunnel. + // + // VpnTunnelOutsideIpAddress is a required field + VpnTunnelOutsideIpAddress *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s ModifyVpnTunnelCertificateInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpnTunnelCertificateInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyVpnTunnelCertificateInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyVpnTunnelCertificateInput"} + if s.VpnConnectionId == nil { + invalidParams.Add(request.NewErrParamRequired("VpnConnectionId")) + } + if s.VpnTunnelOutsideIpAddress == nil { + invalidParams.Add(request.NewErrParamRequired("VpnTunnelOutsideIpAddress")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyVpnTunnelCertificateInput) SetDryRun(v bool) *ModifyVpnTunnelCertificateInput { + s.DryRun = &v + return s +} + +// SetVpnConnectionId sets the VpnConnectionId field's value. +func (s *ModifyVpnTunnelCertificateInput) SetVpnConnectionId(v string) *ModifyVpnTunnelCertificateInput { + s.VpnConnectionId = &v + return s +} + +// SetVpnTunnelOutsideIpAddress sets the VpnTunnelOutsideIpAddress field's value. +func (s *ModifyVpnTunnelCertificateInput) SetVpnTunnelOutsideIpAddress(v string) *ModifyVpnTunnelCertificateInput { + s.VpnTunnelOutsideIpAddress = &v + return s +} + +type ModifyVpnTunnelCertificateOutput struct { + _ struct{} `type:"structure"` + + // Describes a VPN connection. + VpnConnection *VpnConnection `locationName:"vpnConnection" type:"structure"` +} + +// String returns the string representation +func (s ModifyVpnTunnelCertificateOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpnTunnelCertificateOutput) GoString() string { + return s.String() +} + +// SetVpnConnection sets the VpnConnection field's value. +func (s *ModifyVpnTunnelCertificateOutput) SetVpnConnection(v *VpnConnection) *ModifyVpnTunnelCertificateOutput { + s.VpnConnection = v + return s +} + +type ModifyVpnTunnelOptionsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The tunnel options to modify. + // + // TunnelOptions is a required field + TunnelOptions *ModifyVpnTunnelOptionsSpecification `type:"structure" required:"true"` + + // The ID of the AWS Site-to-Site VPN connection. + // + // VpnConnectionId is a required field + VpnConnectionId *string `type:"string" required:"true"` + + // The external IP address of the VPN tunnel. + // + // VpnTunnelOutsideIpAddress is a required field + VpnTunnelOutsideIpAddress *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s ModifyVpnTunnelOptionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpnTunnelOptionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyVpnTunnelOptionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyVpnTunnelOptionsInput"} + if s.TunnelOptions == nil { + invalidParams.Add(request.NewErrParamRequired("TunnelOptions")) + } + if s.VpnConnectionId == nil { + invalidParams.Add(request.NewErrParamRequired("VpnConnectionId")) + } + if s.VpnTunnelOutsideIpAddress == nil { + invalidParams.Add(request.NewErrParamRequired("VpnTunnelOutsideIpAddress")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyVpnTunnelOptionsInput) SetDryRun(v bool) *ModifyVpnTunnelOptionsInput { + s.DryRun = &v + return s +} + +// SetTunnelOptions sets the TunnelOptions field's value. +func (s *ModifyVpnTunnelOptionsInput) SetTunnelOptions(v *ModifyVpnTunnelOptionsSpecification) *ModifyVpnTunnelOptionsInput { + s.TunnelOptions = v + return s +} + +// SetVpnConnectionId sets the VpnConnectionId field's value. +func (s *ModifyVpnTunnelOptionsInput) SetVpnConnectionId(v string) *ModifyVpnTunnelOptionsInput { + s.VpnConnectionId = &v + return s +} + +// SetVpnTunnelOutsideIpAddress sets the VpnTunnelOutsideIpAddress field's value. +func (s *ModifyVpnTunnelOptionsInput) SetVpnTunnelOutsideIpAddress(v string) *ModifyVpnTunnelOptionsInput { + s.VpnTunnelOutsideIpAddress = &v + return s +} + +type ModifyVpnTunnelOptionsOutput struct { + _ struct{} `type:"structure"` + + // Describes a VPN connection. + VpnConnection *VpnConnection `locationName:"vpnConnection" type:"structure"` +} + +// String returns the string representation +func (s ModifyVpnTunnelOptionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpnTunnelOptionsOutput) GoString() string { + return s.String() +} + +// SetVpnConnection sets the VpnConnection field's value. +func (s *ModifyVpnTunnelOptionsOutput) SetVpnConnection(v *VpnConnection) *ModifyVpnTunnelOptionsOutput { + s.VpnConnection = v + return s +} + +// The AWS Site-to-Site VPN tunnel options to modify. +type ModifyVpnTunnelOptionsSpecification struct { + _ struct{} `type:"structure"` + + // The number of seconds after which a DPD timeout occurs. + // + // Constraints: A value between 0 and 30. + // + // Default: 30 + DPDTimeoutSeconds *int64 `type:"integer"` + + // The IKE versions that are permitted for the VPN tunnel. + // + // Valid values: ikev1 | ikev2 + IKEVersions []*IKEVersionsRequestListValue `locationName:"IKEVersion" locationNameList:"item" type:"list"` + + // One or more Diffie-Hellman group numbers that are permitted for the VPN tunnel + // for phase 1 IKE negotiations. + // + // Valid values: 2 | 14 | 15 | 16 | 17 | 18 | 22 | 23 | 24 + Phase1DHGroupNumbers []*Phase1DHGroupNumbersRequestListValue `locationName:"Phase1DHGroupNumber" locationNameList:"item" type:"list"` + + // One or more encryption algorithms that are permitted for the VPN tunnel for + // phase 1 IKE negotiations. + // + // Valid values: AES128 | AES256 + Phase1EncryptionAlgorithms []*Phase1EncryptionAlgorithmsRequestListValue `locationName:"Phase1EncryptionAlgorithm" locationNameList:"item" type:"list"` + + // One or more integrity algorithms that are permitted for the VPN tunnel for + // phase 1 IKE negotiations. + // + // Valid values: SHA1 | SHA2-256 + Phase1IntegrityAlgorithms []*Phase1IntegrityAlgorithmsRequestListValue `locationName:"Phase1IntegrityAlgorithm" locationNameList:"item" type:"list"` + + // The lifetime for phase 1 of the IKE negotiation, in seconds. + // + // Constraints: A value between 900 and 28,800. + // + // Default: 28800 + Phase1LifetimeSeconds *int64 `type:"integer"` + + // One or more Diffie-Hellman group numbers that are permitted for the VPN tunnel + // for phase 2 IKE negotiations. + // + // Valid values: 2 | 5 | 14 | 15 | 16 | 17 | 18 | 22 | 23 | 24 + Phase2DHGroupNumbers []*Phase2DHGroupNumbersRequestListValue `locationName:"Phase2DHGroupNumber" locationNameList:"item" type:"list"` + + // One or more encryption algorithms that are permitted for the VPN tunnel for + // phase 2 IKE negotiations. + // + // Valid values: AES128 | AES256 + Phase2EncryptionAlgorithms []*Phase2EncryptionAlgorithmsRequestListValue `locationName:"Phase2EncryptionAlgorithm" locationNameList:"item" type:"list"` + + // One or more integrity algorithms that are permitted for the VPN tunnel for + // phase 2 IKE negotiations. + // + // Valid values: SHA1 | SHA2-256 + Phase2IntegrityAlgorithms []*Phase2IntegrityAlgorithmsRequestListValue `locationName:"Phase2IntegrityAlgorithm" locationNameList:"item" type:"list"` + + // The lifetime for phase 2 of the IKE negotiation, in seconds. + // + // Constraints: A value between 900 and 3,600. The value must be less than the + // value for Phase1LifetimeSeconds. + // + // Default: 3600 + Phase2LifetimeSeconds *int64 `type:"integer"` + + // The pre-shared key (PSK) to establish initial authentication between the + // virtual private gateway and the customer gateway. + // + // Constraints: Allowed characters are alphanumeric characters, periods (.), + // and underscores (_). Must be between 8 and 64 characters in length and cannot + // start with zero (0). + PreSharedKey *string `type:"string"` + + // The percentage of the rekey window (determined by RekeyMarginTimeSeconds) + // during which the rekey time is randomly selected. + // + // Constraints: A value between 0 and 100. + // + // Default: 100 + RekeyFuzzPercentage *int64 `type:"integer"` + + // The margin time, in seconds, before the phase 2 lifetime expires, during + // which the AWS side of the VPN connection performs an IKE rekey. The exact + // time of the rekey is randomly selected based on the value for RekeyFuzzPercentage. + // + // Constraints: A value between 60 and half of Phase2LifetimeSeconds. + // + // Default: 540 + RekeyMarginTimeSeconds *int64 `type:"integer"` + + // The number of packets in an IKE replay window. + // + // Constraints: A value between 64 and 2048. + // + // Default: 1024 + ReplayWindowSize *int64 `type:"integer"` + + // The range of inside IP addresses for the tunnel. Any specified CIDR blocks + // must be unique across all VPN connections that use the same virtual private + // gateway. + // + // Constraints: A size /30 CIDR block from the 169.254.0.0/16 range. The following + // CIDR blocks are reserved and cannot be used: + // + // * 169.254.0.0/30 + // + // * 169.254.1.0/30 + // + // * 169.254.2.0/30 + // + // * 169.254.3.0/30 + // + // * 169.254.4.0/30 + // + // * 169.254.5.0/30 + // + // * 169.254.169.252/30 + TunnelInsideCidr *string `type:"string"` +} + +// String returns the string representation +func (s ModifyVpnTunnelOptionsSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyVpnTunnelOptionsSpecification) GoString() string { + return s.String() +} + +// SetDPDTimeoutSeconds sets the DPDTimeoutSeconds field's value. +func (s *ModifyVpnTunnelOptionsSpecification) SetDPDTimeoutSeconds(v int64) *ModifyVpnTunnelOptionsSpecification { + s.DPDTimeoutSeconds = &v + return s +} + +// SetIKEVersions sets the IKEVersions field's value. +func (s *ModifyVpnTunnelOptionsSpecification) SetIKEVersions(v []*IKEVersionsRequestListValue) *ModifyVpnTunnelOptionsSpecification { + s.IKEVersions = v + return s +} + +// SetPhase1DHGroupNumbers sets the Phase1DHGroupNumbers field's value. +func (s *ModifyVpnTunnelOptionsSpecification) SetPhase1DHGroupNumbers(v []*Phase1DHGroupNumbersRequestListValue) *ModifyVpnTunnelOptionsSpecification { + s.Phase1DHGroupNumbers = v + return s +} + +// SetPhase1EncryptionAlgorithms sets the Phase1EncryptionAlgorithms field's value. +func (s *ModifyVpnTunnelOptionsSpecification) SetPhase1EncryptionAlgorithms(v []*Phase1EncryptionAlgorithmsRequestListValue) *ModifyVpnTunnelOptionsSpecification { + s.Phase1EncryptionAlgorithms = v + return s +} + +// SetPhase1IntegrityAlgorithms sets the Phase1IntegrityAlgorithms field's value. +func (s *ModifyVpnTunnelOptionsSpecification) SetPhase1IntegrityAlgorithms(v []*Phase1IntegrityAlgorithmsRequestListValue) *ModifyVpnTunnelOptionsSpecification { + s.Phase1IntegrityAlgorithms = v + return s +} + +// SetPhase1LifetimeSeconds sets the Phase1LifetimeSeconds field's value. +func (s *ModifyVpnTunnelOptionsSpecification) SetPhase1LifetimeSeconds(v int64) *ModifyVpnTunnelOptionsSpecification { + s.Phase1LifetimeSeconds = &v + return s +} + +// SetPhase2DHGroupNumbers sets the Phase2DHGroupNumbers field's value. +func (s *ModifyVpnTunnelOptionsSpecification) SetPhase2DHGroupNumbers(v []*Phase2DHGroupNumbersRequestListValue) *ModifyVpnTunnelOptionsSpecification { + s.Phase2DHGroupNumbers = v + return s +} + +// SetPhase2EncryptionAlgorithms sets the Phase2EncryptionAlgorithms field's value. +func (s *ModifyVpnTunnelOptionsSpecification) SetPhase2EncryptionAlgorithms(v []*Phase2EncryptionAlgorithmsRequestListValue) *ModifyVpnTunnelOptionsSpecification { + s.Phase2EncryptionAlgorithms = v + return s +} + +// SetPhase2IntegrityAlgorithms sets the Phase2IntegrityAlgorithms field's value. +func (s *ModifyVpnTunnelOptionsSpecification) SetPhase2IntegrityAlgorithms(v []*Phase2IntegrityAlgorithmsRequestListValue) *ModifyVpnTunnelOptionsSpecification { + s.Phase2IntegrityAlgorithms = v + return s +} + +// SetPhase2LifetimeSeconds sets the Phase2LifetimeSeconds field's value. +func (s *ModifyVpnTunnelOptionsSpecification) SetPhase2LifetimeSeconds(v int64) *ModifyVpnTunnelOptionsSpecification { + s.Phase2LifetimeSeconds = &v + return s +} + +// SetPreSharedKey sets the PreSharedKey field's value. +func (s *ModifyVpnTunnelOptionsSpecification) SetPreSharedKey(v string) *ModifyVpnTunnelOptionsSpecification { + s.PreSharedKey = &v + return s +} + +// SetRekeyFuzzPercentage sets the RekeyFuzzPercentage field's value. +func (s *ModifyVpnTunnelOptionsSpecification) SetRekeyFuzzPercentage(v int64) *ModifyVpnTunnelOptionsSpecification { + s.RekeyFuzzPercentage = &v + return s +} + +// SetRekeyMarginTimeSeconds sets the RekeyMarginTimeSeconds field's value. +func (s *ModifyVpnTunnelOptionsSpecification) SetRekeyMarginTimeSeconds(v int64) *ModifyVpnTunnelOptionsSpecification { + s.RekeyMarginTimeSeconds = &v + return s +} + +// SetReplayWindowSize sets the ReplayWindowSize field's value. +func (s *ModifyVpnTunnelOptionsSpecification) SetReplayWindowSize(v int64) *ModifyVpnTunnelOptionsSpecification { + s.ReplayWindowSize = &v + return s +} + +// SetTunnelInsideCidr sets the TunnelInsideCidr field's value. +func (s *ModifyVpnTunnelOptionsSpecification) SetTunnelInsideCidr(v string) *ModifyVpnTunnelOptionsSpecification { + s.TunnelInsideCidr = &v + return s +} + +type MonitorInstancesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The IDs of the instances. + // + // InstanceIds is a required field + InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list" required:"true"` +} + +// String returns the string representation +func (s MonitorInstancesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s MonitorInstancesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *MonitorInstancesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "MonitorInstancesInput"} + if s.InstanceIds == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceIds")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *MonitorInstancesInput) SetDryRun(v bool) *MonitorInstancesInput { + s.DryRun = &v + return s +} + +// SetInstanceIds sets the InstanceIds field's value. +func (s *MonitorInstancesInput) SetInstanceIds(v []*string) *MonitorInstancesInput { + s.InstanceIds = v + return s +} + +type MonitorInstancesOutput struct { + _ struct{} `type:"structure"` + + // The monitoring information. + InstanceMonitorings []*InstanceMonitoring `locationName:"instancesSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s MonitorInstancesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s MonitorInstancesOutput) GoString() string { + return s.String() +} + +// SetInstanceMonitorings sets the InstanceMonitorings field's value. +func (s *MonitorInstancesOutput) SetInstanceMonitorings(v []*InstanceMonitoring) *MonitorInstancesOutput { + s.InstanceMonitorings = v + return s +} + +// Describes the monitoring of an instance. +type Monitoring struct { + _ struct{} `type:"structure"` + + // Indicates whether detailed monitoring is enabled. Otherwise, basic monitoring + // is enabled. + State *string `locationName:"state" type:"string" enum:"MonitoringState"` +} + +// String returns the string representation +func (s Monitoring) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Monitoring) GoString() string { + return s.String() +} + +// SetState sets the State field's value. +func (s *Monitoring) SetState(v string) *Monitoring { + s.State = &v + return s +} + +type MoveAddressToVpcInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The Elastic IP address. + // + // PublicIp is a required field + PublicIp *string `locationName:"publicIp" type:"string" required:"true"` +} + +// String returns the string representation +func (s MoveAddressToVpcInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s MoveAddressToVpcInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *MoveAddressToVpcInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "MoveAddressToVpcInput"} + if s.PublicIp == nil { + invalidParams.Add(request.NewErrParamRequired("PublicIp")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *MoveAddressToVpcInput) SetDryRun(v bool) *MoveAddressToVpcInput { + s.DryRun = &v + return s +} + +// SetPublicIp sets the PublicIp field's value. +func (s *MoveAddressToVpcInput) SetPublicIp(v string) *MoveAddressToVpcInput { + s.PublicIp = &v + return s +} + +type MoveAddressToVpcOutput struct { + _ struct{} `type:"structure"` + + // The allocation ID for the Elastic IP address. + AllocationId *string `locationName:"allocationId" type:"string"` + + // The status of the move of the IP address. + Status *string `locationName:"status" type:"string" enum:"Status"` +} + +// String returns the string representation +func (s MoveAddressToVpcOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s MoveAddressToVpcOutput) GoString() string { + return s.String() +} + +// SetAllocationId sets the AllocationId field's value. +func (s *MoveAddressToVpcOutput) SetAllocationId(v string) *MoveAddressToVpcOutput { + s.AllocationId = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *MoveAddressToVpcOutput) SetStatus(v string) *MoveAddressToVpcOutput { + s.Status = &v + return s +} + +// Describes the status of a moving Elastic IP address. +type MovingAddressStatus struct { + _ struct{} `type:"structure"` + + // The status of the Elastic IP address that's being moved to the EC2-VPC platform, + // or restored to the EC2-Classic platform. + MoveStatus *string `locationName:"moveStatus" type:"string" enum:"MoveStatus"` + + // The Elastic IP address. + PublicIp *string `locationName:"publicIp" type:"string"` +} + +// String returns the string representation +func (s MovingAddressStatus) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s MovingAddressStatus) GoString() string { + return s.String() +} + +// SetMoveStatus sets the MoveStatus field's value. +func (s *MovingAddressStatus) SetMoveStatus(v string) *MovingAddressStatus { + s.MoveStatus = &v + return s +} + +// SetPublicIp sets the PublicIp field's value. +func (s *MovingAddressStatus) SetPublicIp(v string) *MovingAddressStatus { + s.PublicIp = &v + return s +} + +// Describes a NAT gateway. +type NatGateway struct { + _ struct{} `type:"structure"` + + // The date and time the NAT gateway was created. + CreateTime *time.Time `locationName:"createTime" type:"timestamp"` + + // The date and time the NAT gateway was deleted, if applicable. + DeleteTime *time.Time `locationName:"deleteTime" type:"timestamp"` + + // If the NAT gateway could not be created, specifies the error code for the + // failure. (InsufficientFreeAddressesInSubnet | Gateway.NotAttached | InvalidAllocationID.NotFound + // | Resource.AlreadyAssociated | InternalError | InvalidSubnetID.NotFound) + FailureCode *string `locationName:"failureCode" type:"string"` + + // If the NAT gateway could not be created, specifies the error message for + // the failure, that corresponds to the error code. + // + // * For InsufficientFreeAddressesInSubnet: "Subnet has insufficient free + // addresses to create this NAT gateway" + // + // * For Gateway.NotAttached: "Network vpc-xxxxxxxx has no Internet gateway + // attached" + // + // * For InvalidAllocationID.NotFound: "Elastic IP address eipalloc-xxxxxxxx + // could not be associated with this NAT gateway" + // + // * For Resource.AlreadyAssociated: "Elastic IP address eipalloc-xxxxxxxx + // is already associated" + // + // * For InternalError: "Network interface eni-xxxxxxxx, created and used + // internally by this NAT gateway is in an invalid state. Please try again." + // + // * For InvalidSubnetID.NotFound: "The specified subnet subnet-xxxxxxxx + // does not exist or could not be found." + FailureMessage *string `locationName:"failureMessage" type:"string"` + + // Information about the IP addresses and network interface associated with + // the NAT gateway. + NatGatewayAddresses []*NatGatewayAddress `locationName:"natGatewayAddressSet" locationNameList:"item" type:"list"` + + // The ID of the NAT gateway. + NatGatewayId *string `locationName:"natGatewayId" type:"string"` + + // Reserved. If you need to sustain traffic greater than the documented limits + // (https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html), + // contact us through the Support Center (https://console.aws.amazon.com/support/home?). + ProvisionedBandwidth *ProvisionedBandwidth `locationName:"provisionedBandwidth" type:"structure"` + + // The state of the NAT gateway. + // + // * pending: The NAT gateway is being created and is not ready to process + // traffic. + // + // * failed: The NAT gateway could not be created. Check the failureCode + // and failureMessage fields for the reason. + // + // * available: The NAT gateway is able to process traffic. This status remains + // until you delete the NAT gateway, and does not indicate the health of + // the NAT gateway. + // + // * deleting: The NAT gateway is in the process of being terminated and + // may still be processing traffic. + // + // * deleted: The NAT gateway has been terminated and is no longer processing + // traffic. + State *string `locationName:"state" type:"string" enum:"NatGatewayState"` + + // The ID of the subnet in which the NAT gateway is located. + SubnetId *string `locationName:"subnetId" type:"string"` + + // The tags for the NAT gateway. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The ID of the VPC in which the NAT gateway is located. + VpcId *string `locationName:"vpcId" type:"string"` +} + +// String returns the string representation +func (s NatGateway) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s NatGateway) GoString() string { + return s.String() +} + +// SetCreateTime sets the CreateTime field's value. +func (s *NatGateway) SetCreateTime(v time.Time) *NatGateway { + s.CreateTime = &v + return s +} + +// SetDeleteTime sets the DeleteTime field's value. +func (s *NatGateway) SetDeleteTime(v time.Time) *NatGateway { + s.DeleteTime = &v + return s +} + +// SetFailureCode sets the FailureCode field's value. +func (s *NatGateway) SetFailureCode(v string) *NatGateway { + s.FailureCode = &v + return s +} + +// SetFailureMessage sets the FailureMessage field's value. +func (s *NatGateway) SetFailureMessage(v string) *NatGateway { + s.FailureMessage = &v + return s +} + +// SetNatGatewayAddresses sets the NatGatewayAddresses field's value. +func (s *NatGateway) SetNatGatewayAddresses(v []*NatGatewayAddress) *NatGateway { + s.NatGatewayAddresses = v + return s +} + +// SetNatGatewayId sets the NatGatewayId field's value. +func (s *NatGateway) SetNatGatewayId(v string) *NatGateway { + s.NatGatewayId = &v + return s +} + +// SetProvisionedBandwidth sets the ProvisionedBandwidth field's value. +func (s *NatGateway) SetProvisionedBandwidth(v *ProvisionedBandwidth) *NatGateway { + s.ProvisionedBandwidth = v + return s +} + +// SetState sets the State field's value. +func (s *NatGateway) SetState(v string) *NatGateway { + s.State = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *NatGateway) SetSubnetId(v string) *NatGateway { + s.SubnetId = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *NatGateway) SetTags(v []*Tag) *NatGateway { + s.Tags = v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *NatGateway) SetVpcId(v string) *NatGateway { + s.VpcId = &v + return s +} + +// Describes the IP addresses and network interface associated with a NAT gateway. +type NatGatewayAddress struct { + _ struct{} `type:"structure"` + + // The allocation ID of the Elastic IP address that's associated with the NAT + // gateway. + AllocationId *string `locationName:"allocationId" type:"string"` + + // The ID of the network interface associated with the NAT gateway. + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` + + // The private IP address associated with the Elastic IP address. + PrivateIp *string `locationName:"privateIp" type:"string"` + + // The Elastic IP address associated with the NAT gateway. + PublicIp *string `locationName:"publicIp" type:"string"` +} + +// String returns the string representation +func (s NatGatewayAddress) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s NatGatewayAddress) GoString() string { + return s.String() +} + +// SetAllocationId sets the AllocationId field's value. +func (s *NatGatewayAddress) SetAllocationId(v string) *NatGatewayAddress { + s.AllocationId = &v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *NatGatewayAddress) SetNetworkInterfaceId(v string) *NatGatewayAddress { + s.NetworkInterfaceId = &v + return s +} + +// SetPrivateIp sets the PrivateIp field's value. +func (s *NatGatewayAddress) SetPrivateIp(v string) *NatGatewayAddress { + s.PrivateIp = &v + return s +} + +// SetPublicIp sets the PublicIp field's value. +func (s *NatGatewayAddress) SetPublicIp(v string) *NatGatewayAddress { + s.PublicIp = &v + return s +} + +// Describes a network ACL. +type NetworkAcl struct { + _ struct{} `type:"structure"` + + // Any associations between the network ACL and one or more subnets + Associations []*NetworkAclAssociation `locationName:"associationSet" locationNameList:"item" type:"list"` + + // One or more entries (rules) in the network ACL. + Entries []*NetworkAclEntry `locationName:"entrySet" locationNameList:"item" type:"list"` + + // Indicates whether this is the default network ACL for the VPC. + IsDefault *bool `locationName:"default" type:"boolean"` + + // The ID of the network ACL. + NetworkAclId *string `locationName:"networkAclId" type:"string"` + + // The ID of the AWS account that owns the network ACL. + OwnerId *string `locationName:"ownerId" type:"string"` + + // Any tags assigned to the network ACL. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The ID of the VPC for the network ACL. + VpcId *string `locationName:"vpcId" type:"string"` +} + +// String returns the string representation +func (s NetworkAcl) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s NetworkAcl) GoString() string { + return s.String() +} + +// SetAssociations sets the Associations field's value. +func (s *NetworkAcl) SetAssociations(v []*NetworkAclAssociation) *NetworkAcl { + s.Associations = v + return s +} + +// SetEntries sets the Entries field's value. +func (s *NetworkAcl) SetEntries(v []*NetworkAclEntry) *NetworkAcl { + s.Entries = v + return s +} + +// SetIsDefault sets the IsDefault field's value. +func (s *NetworkAcl) SetIsDefault(v bool) *NetworkAcl { + s.IsDefault = &v + return s +} + +// SetNetworkAclId sets the NetworkAclId field's value. +func (s *NetworkAcl) SetNetworkAclId(v string) *NetworkAcl { + s.NetworkAclId = &v + return s +} + +// SetOwnerId sets the OwnerId field's value. +func (s *NetworkAcl) SetOwnerId(v string) *NetworkAcl { + s.OwnerId = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *NetworkAcl) SetTags(v []*Tag) *NetworkAcl { + s.Tags = v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *NetworkAcl) SetVpcId(v string) *NetworkAcl { + s.VpcId = &v + return s +} + +// Describes an association between a network ACL and a subnet. +type NetworkAclAssociation struct { + _ struct{} `type:"structure"` + + // The ID of the association between a network ACL and a subnet. + NetworkAclAssociationId *string `locationName:"networkAclAssociationId" type:"string"` + + // The ID of the network ACL. + NetworkAclId *string `locationName:"networkAclId" type:"string"` + + // The ID of the subnet. + SubnetId *string `locationName:"subnetId" type:"string"` +} + +// String returns the string representation +func (s NetworkAclAssociation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s NetworkAclAssociation) GoString() string { + return s.String() +} + +// SetNetworkAclAssociationId sets the NetworkAclAssociationId field's value. +func (s *NetworkAclAssociation) SetNetworkAclAssociationId(v string) *NetworkAclAssociation { + s.NetworkAclAssociationId = &v + return s +} + +// SetNetworkAclId sets the NetworkAclId field's value. +func (s *NetworkAclAssociation) SetNetworkAclId(v string) *NetworkAclAssociation { + s.NetworkAclId = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *NetworkAclAssociation) SetSubnetId(v string) *NetworkAclAssociation { + s.SubnetId = &v + return s +} + +// Describes an entry in a network ACL. +type NetworkAclEntry struct { + _ struct{} `type:"structure"` + + // The IPv4 network range to allow or deny, in CIDR notation. + CidrBlock *string `locationName:"cidrBlock" type:"string"` + + // Indicates whether the rule is an egress rule (applied to traffic leaving + // the subnet). + Egress *bool `locationName:"egress" type:"boolean"` + + // ICMP protocol: The ICMP type and code. + IcmpTypeCode *IcmpTypeCode `locationName:"icmpTypeCode" type:"structure"` + + // The IPv6 network range to allow or deny, in CIDR notation. + Ipv6CidrBlock *string `locationName:"ipv6CidrBlock" type:"string"` + + // TCP or UDP protocols: The range of ports the rule applies to. + PortRange *PortRange `locationName:"portRange" type:"structure"` + + // The protocol number. A value of "-1" means all protocols. + Protocol *string `locationName:"protocol" type:"string"` + + // Indicates whether to allow or deny the traffic that matches the rule. + RuleAction *string `locationName:"ruleAction" type:"string" enum:"RuleAction"` + + // The rule number for the entry. ACL entries are processed in ascending order + // by rule number. + RuleNumber *int64 `locationName:"ruleNumber" type:"integer"` +} + +// String returns the string representation +func (s NetworkAclEntry) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s NetworkAclEntry) GoString() string { + return s.String() +} + +// SetCidrBlock sets the CidrBlock field's value. +func (s *NetworkAclEntry) SetCidrBlock(v string) *NetworkAclEntry { + s.CidrBlock = &v + return s +} + +// SetEgress sets the Egress field's value. +func (s *NetworkAclEntry) SetEgress(v bool) *NetworkAclEntry { + s.Egress = &v + return s +} + +// SetIcmpTypeCode sets the IcmpTypeCode field's value. +func (s *NetworkAclEntry) SetIcmpTypeCode(v *IcmpTypeCode) *NetworkAclEntry { + s.IcmpTypeCode = v + return s +} + +// SetIpv6CidrBlock sets the Ipv6CidrBlock field's value. +func (s *NetworkAclEntry) SetIpv6CidrBlock(v string) *NetworkAclEntry { + s.Ipv6CidrBlock = &v + return s +} + +// SetPortRange sets the PortRange field's value. +func (s *NetworkAclEntry) SetPortRange(v *PortRange) *NetworkAclEntry { + s.PortRange = v + return s +} + +// SetProtocol sets the Protocol field's value. +func (s *NetworkAclEntry) SetProtocol(v string) *NetworkAclEntry { + s.Protocol = &v + return s +} + +// SetRuleAction sets the RuleAction field's value. +func (s *NetworkAclEntry) SetRuleAction(v string) *NetworkAclEntry { + s.RuleAction = &v + return s +} + +// SetRuleNumber sets the RuleNumber field's value. +func (s *NetworkAclEntry) SetRuleNumber(v int64) *NetworkAclEntry { + s.RuleNumber = &v + return s +} + +// Describes a network interface. +type NetworkInterface struct { + _ struct{} `type:"structure"` + + // The association information for an Elastic IP address (IPv4) associated with + // the network interface. + Association *NetworkInterfaceAssociation `locationName:"association" type:"structure"` + + // The network interface attachment. + Attachment *NetworkInterfaceAttachment `locationName:"attachment" type:"structure"` + + // The Availability Zone. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // A description. + Description *string `locationName:"description" type:"string"` + + // Any security groups for the network interface. + Groups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"` + + // The type of network interface. + InterfaceType *string `locationName:"interfaceType" type:"string" enum:"NetworkInterfaceType"` + + // The IPv6 addresses associated with the network interface. + Ipv6Addresses []*NetworkInterfaceIpv6Address `locationName:"ipv6AddressesSet" locationNameList:"item" type:"list"` + + // The MAC address. + MacAddress *string `locationName:"macAddress" type:"string"` + + // The ID of the network interface. + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` + + // The AWS account ID of the owner of the network interface. + OwnerId *string `locationName:"ownerId" type:"string"` + + // The private DNS name. + PrivateDnsName *string `locationName:"privateDnsName" type:"string"` + + // The IPv4 address of the network interface within the subnet. + PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` + + // The private IPv4 addresses associated with the network interface. + PrivateIpAddresses []*NetworkInterfacePrivateIpAddress `locationName:"privateIpAddressesSet" locationNameList:"item" type:"list"` + + // The ID of the entity that launched the instance on your behalf (for example, + // AWS Management Console or Auto Scaling). + RequesterId *string `locationName:"requesterId" type:"string"` + + // Indicates whether the network interface is being managed by AWS. + RequesterManaged *bool `locationName:"requesterManaged" type:"boolean"` + + // Indicates whether traffic to or from the instance is validated. + SourceDestCheck *bool `locationName:"sourceDestCheck" type:"boolean"` + + // The status of the network interface. + Status *string `locationName:"status" type:"string" enum:"NetworkInterfaceStatus"` + + // The ID of the subnet. + SubnetId *string `locationName:"subnetId" type:"string"` + + // Any tags assigned to the network interface. + TagSet []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The ID of the VPC. + VpcId *string `locationName:"vpcId" type:"string"` +} + +// String returns the string representation +func (s NetworkInterface) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s NetworkInterface) GoString() string { + return s.String() +} + +// SetAssociation sets the Association field's value. +func (s *NetworkInterface) SetAssociation(v *NetworkInterfaceAssociation) *NetworkInterface { + s.Association = v + return s +} + +// SetAttachment sets the Attachment field's value. +func (s *NetworkInterface) SetAttachment(v *NetworkInterfaceAttachment) *NetworkInterface { + s.Attachment = v + return s +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *NetworkInterface) SetAvailabilityZone(v string) *NetworkInterface { + s.AvailabilityZone = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *NetworkInterface) SetDescription(v string) *NetworkInterface { + s.Description = &v + return s +} + +// SetGroups sets the Groups field's value. +func (s *NetworkInterface) SetGroups(v []*GroupIdentifier) *NetworkInterface { + s.Groups = v + return s +} + +// SetInterfaceType sets the InterfaceType field's value. +func (s *NetworkInterface) SetInterfaceType(v string) *NetworkInterface { + s.InterfaceType = &v + return s +} + +// SetIpv6Addresses sets the Ipv6Addresses field's value. +func (s *NetworkInterface) SetIpv6Addresses(v []*NetworkInterfaceIpv6Address) *NetworkInterface { + s.Ipv6Addresses = v + return s +} + +// SetMacAddress sets the MacAddress field's value. +func (s *NetworkInterface) SetMacAddress(v string) *NetworkInterface { + s.MacAddress = &v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *NetworkInterface) SetNetworkInterfaceId(v string) *NetworkInterface { + s.NetworkInterfaceId = &v + return s +} + +// SetOwnerId sets the OwnerId field's value. +func (s *NetworkInterface) SetOwnerId(v string) *NetworkInterface { + s.OwnerId = &v + return s +} + +// SetPrivateDnsName sets the PrivateDnsName field's value. +func (s *NetworkInterface) SetPrivateDnsName(v string) *NetworkInterface { + s.PrivateDnsName = &v + return s +} + +// SetPrivateIpAddress sets the PrivateIpAddress field's value. +func (s *NetworkInterface) SetPrivateIpAddress(v string) *NetworkInterface { + s.PrivateIpAddress = &v + return s +} + +// SetPrivateIpAddresses sets the PrivateIpAddresses field's value. +func (s *NetworkInterface) SetPrivateIpAddresses(v []*NetworkInterfacePrivateIpAddress) *NetworkInterface { + s.PrivateIpAddresses = v + return s +} + +// SetRequesterId sets the RequesterId field's value. +func (s *NetworkInterface) SetRequesterId(v string) *NetworkInterface { + s.RequesterId = &v + return s +} + +// SetRequesterManaged sets the RequesterManaged field's value. +func (s *NetworkInterface) SetRequesterManaged(v bool) *NetworkInterface { + s.RequesterManaged = &v + return s +} + +// SetSourceDestCheck sets the SourceDestCheck field's value. +func (s *NetworkInterface) SetSourceDestCheck(v bool) *NetworkInterface { + s.SourceDestCheck = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *NetworkInterface) SetStatus(v string) *NetworkInterface { + s.Status = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *NetworkInterface) SetSubnetId(v string) *NetworkInterface { + s.SubnetId = &v + return s +} + +// SetTagSet sets the TagSet field's value. +func (s *NetworkInterface) SetTagSet(v []*Tag) *NetworkInterface { + s.TagSet = v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *NetworkInterface) SetVpcId(v string) *NetworkInterface { + s.VpcId = &v + return s +} + +// Describes association information for an Elastic IP address (IPv4 only). +type NetworkInterfaceAssociation struct { + _ struct{} `type:"structure"` + + // The allocation ID. + AllocationId *string `locationName:"allocationId" type:"string"` + + // The association ID. + AssociationId *string `locationName:"associationId" type:"string"` + + // The ID of the Elastic IP address owner. + IpOwnerId *string `locationName:"ipOwnerId" type:"string"` + + // The public DNS name. + PublicDnsName *string `locationName:"publicDnsName" type:"string"` + + // The address of the Elastic IP address bound to the network interface. + PublicIp *string `locationName:"publicIp" type:"string"` +} + +// String returns the string representation +func (s NetworkInterfaceAssociation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s NetworkInterfaceAssociation) GoString() string { + return s.String() +} + +// SetAllocationId sets the AllocationId field's value. +func (s *NetworkInterfaceAssociation) SetAllocationId(v string) *NetworkInterfaceAssociation { + s.AllocationId = &v + return s +} + +// SetAssociationId sets the AssociationId field's value. +func (s *NetworkInterfaceAssociation) SetAssociationId(v string) *NetworkInterfaceAssociation { + s.AssociationId = &v + return s +} + +// SetIpOwnerId sets the IpOwnerId field's value. +func (s *NetworkInterfaceAssociation) SetIpOwnerId(v string) *NetworkInterfaceAssociation { + s.IpOwnerId = &v + return s +} + +// SetPublicDnsName sets the PublicDnsName field's value. +func (s *NetworkInterfaceAssociation) SetPublicDnsName(v string) *NetworkInterfaceAssociation { + s.PublicDnsName = &v + return s +} + +// SetPublicIp sets the PublicIp field's value. +func (s *NetworkInterfaceAssociation) SetPublicIp(v string) *NetworkInterfaceAssociation { + s.PublicIp = &v + return s +} + +// Describes a network interface attachment. +type NetworkInterfaceAttachment struct { + _ struct{} `type:"structure"` + + // The timestamp indicating when the attachment initiated. + AttachTime *time.Time `locationName:"attachTime" type:"timestamp"` + + // The ID of the network interface attachment. + AttachmentId *string `locationName:"attachmentId" type:"string"` + + // Indicates whether the network interface is deleted when the instance is terminated. + DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"` + + // The device index of the network interface attachment on the instance. + DeviceIndex *int64 `locationName:"deviceIndex" type:"integer"` + + // The ID of the instance. + InstanceId *string `locationName:"instanceId" type:"string"` + + // The AWS account ID of the owner of the instance. + InstanceOwnerId *string `locationName:"instanceOwnerId" type:"string"` + + // The attachment state. + Status *string `locationName:"status" type:"string" enum:"AttachmentStatus"` +} + +// String returns the string representation +func (s NetworkInterfaceAttachment) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s NetworkInterfaceAttachment) GoString() string { + return s.String() +} + +// SetAttachTime sets the AttachTime field's value. +func (s *NetworkInterfaceAttachment) SetAttachTime(v time.Time) *NetworkInterfaceAttachment { + s.AttachTime = &v + return s +} + +// SetAttachmentId sets the AttachmentId field's value. +func (s *NetworkInterfaceAttachment) SetAttachmentId(v string) *NetworkInterfaceAttachment { + s.AttachmentId = &v + return s +} + +// SetDeleteOnTermination sets the DeleteOnTermination field's value. +func (s *NetworkInterfaceAttachment) SetDeleteOnTermination(v bool) *NetworkInterfaceAttachment { + s.DeleteOnTermination = &v + return s +} + +// SetDeviceIndex sets the DeviceIndex field's value. +func (s *NetworkInterfaceAttachment) SetDeviceIndex(v int64) *NetworkInterfaceAttachment { + s.DeviceIndex = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *NetworkInterfaceAttachment) SetInstanceId(v string) *NetworkInterfaceAttachment { + s.InstanceId = &v + return s +} + +// SetInstanceOwnerId sets the InstanceOwnerId field's value. +func (s *NetworkInterfaceAttachment) SetInstanceOwnerId(v string) *NetworkInterfaceAttachment { + s.InstanceOwnerId = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *NetworkInterfaceAttachment) SetStatus(v string) *NetworkInterfaceAttachment { + s.Status = &v + return s +} + +// Describes an attachment change. +type NetworkInterfaceAttachmentChanges struct { + _ struct{} `type:"structure"` + + // The ID of the network interface attachment. + AttachmentId *string `locationName:"attachmentId" type:"string"` + + // Indicates whether the network interface is deleted when the instance is terminated. + DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"` +} + +// String returns the string representation +func (s NetworkInterfaceAttachmentChanges) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s NetworkInterfaceAttachmentChanges) GoString() string { + return s.String() +} + +// SetAttachmentId sets the AttachmentId field's value. +func (s *NetworkInterfaceAttachmentChanges) SetAttachmentId(v string) *NetworkInterfaceAttachmentChanges { + s.AttachmentId = &v + return s +} + +// SetDeleteOnTermination sets the DeleteOnTermination field's value. +func (s *NetworkInterfaceAttachmentChanges) SetDeleteOnTermination(v bool) *NetworkInterfaceAttachmentChanges { + s.DeleteOnTermination = &v + return s +} + +// Describes an IPv6 address associated with a network interface. +type NetworkInterfaceIpv6Address struct { + _ struct{} `type:"structure"` + + // The IPv6 address. + Ipv6Address *string `locationName:"ipv6Address" type:"string"` +} + +// String returns the string representation +func (s NetworkInterfaceIpv6Address) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s NetworkInterfaceIpv6Address) GoString() string { + return s.String() +} + +// SetIpv6Address sets the Ipv6Address field's value. +func (s *NetworkInterfaceIpv6Address) SetIpv6Address(v string) *NetworkInterfaceIpv6Address { + s.Ipv6Address = &v + return s +} + +// Describes a permission for a network interface. +type NetworkInterfacePermission struct { + _ struct{} `type:"structure"` + + // The AWS account ID. + AwsAccountId *string `locationName:"awsAccountId" type:"string"` + + // The AWS service. + AwsService *string `locationName:"awsService" type:"string"` + + // The ID of the network interface. + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` + + // The ID of the network interface permission. + NetworkInterfacePermissionId *string `locationName:"networkInterfacePermissionId" type:"string"` + + // The type of permission. + Permission *string `locationName:"permission" type:"string" enum:"InterfacePermissionType"` + + // Information about the state of the permission. + PermissionState *NetworkInterfacePermissionState `locationName:"permissionState" type:"structure"` +} + +// String returns the string representation +func (s NetworkInterfacePermission) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s NetworkInterfacePermission) GoString() string { + return s.String() +} + +// SetAwsAccountId sets the AwsAccountId field's value. +func (s *NetworkInterfacePermission) SetAwsAccountId(v string) *NetworkInterfacePermission { + s.AwsAccountId = &v + return s +} + +// SetAwsService sets the AwsService field's value. +func (s *NetworkInterfacePermission) SetAwsService(v string) *NetworkInterfacePermission { + s.AwsService = &v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *NetworkInterfacePermission) SetNetworkInterfaceId(v string) *NetworkInterfacePermission { + s.NetworkInterfaceId = &v + return s +} + +// SetNetworkInterfacePermissionId sets the NetworkInterfacePermissionId field's value. +func (s *NetworkInterfacePermission) SetNetworkInterfacePermissionId(v string) *NetworkInterfacePermission { + s.NetworkInterfacePermissionId = &v + return s +} + +// SetPermission sets the Permission field's value. +func (s *NetworkInterfacePermission) SetPermission(v string) *NetworkInterfacePermission { + s.Permission = &v + return s +} + +// SetPermissionState sets the PermissionState field's value. +func (s *NetworkInterfacePermission) SetPermissionState(v *NetworkInterfacePermissionState) *NetworkInterfacePermission { + s.PermissionState = v + return s +} + +// Describes the state of a network interface permission. +type NetworkInterfacePermissionState struct { + _ struct{} `type:"structure"` + + // The state of the permission. + State *string `locationName:"state" type:"string" enum:"NetworkInterfacePermissionStateCode"` + + // A status message, if applicable. + StatusMessage *string `locationName:"statusMessage" type:"string"` +} + +// String returns the string representation +func (s NetworkInterfacePermissionState) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s NetworkInterfacePermissionState) GoString() string { + return s.String() +} + +// SetState sets the State field's value. +func (s *NetworkInterfacePermissionState) SetState(v string) *NetworkInterfacePermissionState { + s.State = &v + return s +} + +// SetStatusMessage sets the StatusMessage field's value. +func (s *NetworkInterfacePermissionState) SetStatusMessage(v string) *NetworkInterfacePermissionState { + s.StatusMessage = &v + return s +} + +// Describes the private IPv4 address of a network interface. +type NetworkInterfacePrivateIpAddress struct { + _ struct{} `type:"structure"` + + // The association information for an Elastic IP address (IPv4) associated with + // the network interface. + Association *NetworkInterfaceAssociation `locationName:"association" type:"structure"` + + // Indicates whether this IPv4 address is the primary private IPv4 address of + // the network interface. + Primary *bool `locationName:"primary" type:"boolean"` + + // The private DNS name. + PrivateDnsName *string `locationName:"privateDnsName" type:"string"` + + // The private IPv4 address. + PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` +} + +// String returns the string representation +func (s NetworkInterfacePrivateIpAddress) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s NetworkInterfacePrivateIpAddress) GoString() string { + return s.String() +} + +// SetAssociation sets the Association field's value. +func (s *NetworkInterfacePrivateIpAddress) SetAssociation(v *NetworkInterfaceAssociation) *NetworkInterfacePrivateIpAddress { + s.Association = v + return s +} + +// SetPrimary sets the Primary field's value. +func (s *NetworkInterfacePrivateIpAddress) SetPrimary(v bool) *NetworkInterfacePrivateIpAddress { + s.Primary = &v + return s +} + +// SetPrivateDnsName sets the PrivateDnsName field's value. +func (s *NetworkInterfacePrivateIpAddress) SetPrivateDnsName(v string) *NetworkInterfacePrivateIpAddress { + s.PrivateDnsName = &v + return s +} + +// SetPrivateIpAddress sets the PrivateIpAddress field's value. +func (s *NetworkInterfacePrivateIpAddress) SetPrivateIpAddress(v string) *NetworkInterfacePrivateIpAddress { + s.PrivateIpAddress = &v + return s +} + +type NewDhcpConfiguration struct { + _ struct{} `type:"structure"` + + Key *string `locationName:"key" type:"string"` + + Values []*string `locationName:"Value" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s NewDhcpConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s NewDhcpConfiguration) GoString() string { + return s.String() +} + +// SetKey sets the Key field's value. +func (s *NewDhcpConfiguration) SetKey(v string) *NewDhcpConfiguration { + s.Key = &v + return s +} + +// SetValues sets the Values field's value. +func (s *NewDhcpConfiguration) SetValues(v []*string) *NewDhcpConfiguration { + s.Values = v + return s +} + +// Describes the configuration of On-Demand Instances in an EC2 Fleet. +type OnDemandOptions struct { + _ struct{} `type:"structure"` + + // The order of the launch template overrides to use in fulfilling On-Demand + // capacity. If you specify lowest-price, EC2 Fleet uses price to determine + // the order, launching the lowest price first. If you specify prioritized, + // EC2 Fleet uses the priority that you assigned to each launch template override, + // launching the highest priority first. If you do not specify a value, EC2 + // Fleet defaults to lowest-price. + AllocationStrategy *string `locationName:"allocationStrategy" type:"string" enum:"FleetOnDemandAllocationStrategy"` + + // The maximum amount per hour for On-Demand Instances that you're willing to + // pay. + MaxTotalPrice *string `locationName:"maxTotalPrice" type:"string"` + + // The minimum target capacity for On-Demand Instances in the fleet. If the + // minimum target capacity is not reached, the fleet launches no instances. + MinTargetCapacity *int64 `locationName:"minTargetCapacity" type:"integer"` + + // Indicates that the fleet launches all On-Demand Instances into a single Availability + // Zone. + SingleAvailabilityZone *bool `locationName:"singleAvailabilityZone" type:"boolean"` + + // Indicates that the fleet uses a single instance type to launch all On-Demand + // Instances in the fleet. + SingleInstanceType *bool `locationName:"singleInstanceType" type:"boolean"` +} + +// String returns the string representation +func (s OnDemandOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s OnDemandOptions) GoString() string { + return s.String() +} + +// SetAllocationStrategy sets the AllocationStrategy field's value. +func (s *OnDemandOptions) SetAllocationStrategy(v string) *OnDemandOptions { + s.AllocationStrategy = &v + return s +} + +// SetMaxTotalPrice sets the MaxTotalPrice field's value. +func (s *OnDemandOptions) SetMaxTotalPrice(v string) *OnDemandOptions { + s.MaxTotalPrice = &v + return s +} + +// SetMinTargetCapacity sets the MinTargetCapacity field's value. +func (s *OnDemandOptions) SetMinTargetCapacity(v int64) *OnDemandOptions { + s.MinTargetCapacity = &v + return s +} + +// SetSingleAvailabilityZone sets the SingleAvailabilityZone field's value. +func (s *OnDemandOptions) SetSingleAvailabilityZone(v bool) *OnDemandOptions { + s.SingleAvailabilityZone = &v + return s +} + +// SetSingleInstanceType sets the SingleInstanceType field's value. +func (s *OnDemandOptions) SetSingleInstanceType(v bool) *OnDemandOptions { + s.SingleInstanceType = &v + return s +} + +// Describes the configuration of On-Demand Instances in an EC2 Fleet. +type OnDemandOptionsRequest struct { + _ struct{} `type:"structure"` + + // The order of the launch template overrides to use in fulfilling On-Demand + // capacity. If you specify lowest-price, EC2 Fleet uses price to determine + // the order, launching the lowest price first. If you specify prioritized, + // EC2 Fleet uses the priority that you assigned to each launch template override, + // launching the highest priority first. If you do not specify a value, EC2 + // Fleet defaults to lowest-price. + AllocationStrategy *string `type:"string" enum:"FleetOnDemandAllocationStrategy"` + + // The maximum amount per hour for On-Demand Instances that you're willing to + // pay. + MaxTotalPrice *string `type:"string"` + + // The minimum target capacity for On-Demand Instances in the fleet. If the + // minimum target capacity is not reached, the fleet launches no instances. + MinTargetCapacity *int64 `type:"integer"` + + // Indicates that the fleet launches all On-Demand Instances into a single Availability + // Zone. + SingleAvailabilityZone *bool `type:"boolean"` + + // Indicates that the fleet uses a single instance type to launch all On-Demand + // Instances in the fleet. + SingleInstanceType *bool `type:"boolean"` +} + +// String returns the string representation +func (s OnDemandOptionsRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s OnDemandOptionsRequest) GoString() string { + return s.String() +} + +// SetAllocationStrategy sets the AllocationStrategy field's value. +func (s *OnDemandOptionsRequest) SetAllocationStrategy(v string) *OnDemandOptionsRequest { + s.AllocationStrategy = &v + return s +} + +// SetMaxTotalPrice sets the MaxTotalPrice field's value. +func (s *OnDemandOptionsRequest) SetMaxTotalPrice(v string) *OnDemandOptionsRequest { + s.MaxTotalPrice = &v + return s +} + +// SetMinTargetCapacity sets the MinTargetCapacity field's value. +func (s *OnDemandOptionsRequest) SetMinTargetCapacity(v int64) *OnDemandOptionsRequest { + s.MinTargetCapacity = &v + return s +} + +// SetSingleAvailabilityZone sets the SingleAvailabilityZone field's value. +func (s *OnDemandOptionsRequest) SetSingleAvailabilityZone(v bool) *OnDemandOptionsRequest { + s.SingleAvailabilityZone = &v + return s +} + +// SetSingleInstanceType sets the SingleInstanceType field's value. +func (s *OnDemandOptionsRequest) SetSingleInstanceType(v bool) *OnDemandOptionsRequest { + s.SingleInstanceType = &v + return s +} + +// Describes the data that identifies an Amazon FPGA image (AFI) on the PCI +// bus. +type PciId struct { + _ struct{} `type:"structure"` + + // The ID of the device. + DeviceId *string `type:"string"` + + // The ID of the subsystem. + SubsystemId *string `type:"string"` + + // The ID of the vendor for the subsystem. + SubsystemVendorId *string `type:"string"` + + // The ID of the vendor. + VendorId *string `type:"string"` +} + +// String returns the string representation +func (s PciId) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PciId) GoString() string { + return s.String() +} + +// SetDeviceId sets the DeviceId field's value. +func (s *PciId) SetDeviceId(v string) *PciId { + s.DeviceId = &v + return s +} + +// SetSubsystemId sets the SubsystemId field's value. +func (s *PciId) SetSubsystemId(v string) *PciId { + s.SubsystemId = &v + return s +} + +// SetSubsystemVendorId sets the SubsystemVendorId field's value. +func (s *PciId) SetSubsystemVendorId(v string) *PciId { + s.SubsystemVendorId = &v + return s +} + +// SetVendorId sets the VendorId field's value. +func (s *PciId) SetVendorId(v string) *PciId { + s.VendorId = &v + return s +} + +// Describes the VPC peering connection options. +type PeeringConnectionOptions struct { + _ struct{} `type:"structure"` + + // If true, the public DNS hostnames of instances in the specified VPC resolve + // to private IP addresses when queried from instances in the peer VPC. + AllowDnsResolutionFromRemoteVpc *bool `locationName:"allowDnsResolutionFromRemoteVpc" type:"boolean"` + + // If true, enables outbound communication from an EC2-Classic instance that's + // linked to a local VPC using ClassicLink to instances in a peer VPC. + AllowEgressFromLocalClassicLinkToRemoteVpc *bool `locationName:"allowEgressFromLocalClassicLinkToRemoteVpc" type:"boolean"` + + // If true, enables outbound communication from instances in a local VPC to + // an EC2-Classic instance that's linked to a peer VPC using ClassicLink. + AllowEgressFromLocalVpcToRemoteClassicLink *bool `locationName:"allowEgressFromLocalVpcToRemoteClassicLink" type:"boolean"` +} + +// String returns the string representation +func (s PeeringConnectionOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PeeringConnectionOptions) GoString() string { + return s.String() +} + +// SetAllowDnsResolutionFromRemoteVpc sets the AllowDnsResolutionFromRemoteVpc field's value. +func (s *PeeringConnectionOptions) SetAllowDnsResolutionFromRemoteVpc(v bool) *PeeringConnectionOptions { + s.AllowDnsResolutionFromRemoteVpc = &v + return s +} + +// SetAllowEgressFromLocalClassicLinkToRemoteVpc sets the AllowEgressFromLocalClassicLinkToRemoteVpc field's value. +func (s *PeeringConnectionOptions) SetAllowEgressFromLocalClassicLinkToRemoteVpc(v bool) *PeeringConnectionOptions { + s.AllowEgressFromLocalClassicLinkToRemoteVpc = &v + return s +} + +// SetAllowEgressFromLocalVpcToRemoteClassicLink sets the AllowEgressFromLocalVpcToRemoteClassicLink field's value. +func (s *PeeringConnectionOptions) SetAllowEgressFromLocalVpcToRemoteClassicLink(v bool) *PeeringConnectionOptions { + s.AllowEgressFromLocalVpcToRemoteClassicLink = &v + return s +} + +// The VPC peering connection options. +type PeeringConnectionOptionsRequest struct { + _ struct{} `type:"structure"` + + // If true, enables a local VPC to resolve public DNS hostnames to private IP + // addresses when queried from instances in the peer VPC. + AllowDnsResolutionFromRemoteVpc *bool `type:"boolean"` + + // If true, enables outbound communication from an EC2-Classic instance that's + // linked to a local VPC using ClassicLink to instances in a peer VPC. + AllowEgressFromLocalClassicLinkToRemoteVpc *bool `type:"boolean"` + + // If true, enables outbound communication from instances in a local VPC to + // an EC2-Classic instance that's linked to a peer VPC using ClassicLink. + AllowEgressFromLocalVpcToRemoteClassicLink *bool `type:"boolean"` +} + +// String returns the string representation +func (s PeeringConnectionOptionsRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PeeringConnectionOptionsRequest) GoString() string { + return s.String() +} + +// SetAllowDnsResolutionFromRemoteVpc sets the AllowDnsResolutionFromRemoteVpc field's value. +func (s *PeeringConnectionOptionsRequest) SetAllowDnsResolutionFromRemoteVpc(v bool) *PeeringConnectionOptionsRequest { + s.AllowDnsResolutionFromRemoteVpc = &v + return s +} + +// SetAllowEgressFromLocalClassicLinkToRemoteVpc sets the AllowEgressFromLocalClassicLinkToRemoteVpc field's value. +func (s *PeeringConnectionOptionsRequest) SetAllowEgressFromLocalClassicLinkToRemoteVpc(v bool) *PeeringConnectionOptionsRequest { + s.AllowEgressFromLocalClassicLinkToRemoteVpc = &v + return s +} + +// SetAllowEgressFromLocalVpcToRemoteClassicLink sets the AllowEgressFromLocalVpcToRemoteClassicLink field's value. +func (s *PeeringConnectionOptionsRequest) SetAllowEgressFromLocalVpcToRemoteClassicLink(v bool) *PeeringConnectionOptionsRequest { + s.AllowEgressFromLocalVpcToRemoteClassicLink = &v + return s +} + +// The Diffie-Hellmann group number for phase 1 IKE negotiations. +type Phase1DHGroupNumbersListValue struct { + _ struct{} `type:"structure"` + + // The Diffie-Hellmann group number. + Value *int64 `locationName:"value" type:"integer"` +} + +// String returns the string representation +func (s Phase1DHGroupNumbersListValue) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Phase1DHGroupNumbersListValue) GoString() string { + return s.String() +} + +// SetValue sets the Value field's value. +func (s *Phase1DHGroupNumbersListValue) SetValue(v int64) *Phase1DHGroupNumbersListValue { + s.Value = &v + return s +} + +// Specifies a Diffie-Hellman group number for the VPN tunnel for phase 1 IKE +// negotiations. +type Phase1DHGroupNumbersRequestListValue struct { + _ struct{} `type:"structure"` + + // The Diffie-Hellmann group number. + Value *int64 `type:"integer"` +} + +// String returns the string representation +func (s Phase1DHGroupNumbersRequestListValue) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Phase1DHGroupNumbersRequestListValue) GoString() string { + return s.String() +} + +// SetValue sets the Value field's value. +func (s *Phase1DHGroupNumbersRequestListValue) SetValue(v int64) *Phase1DHGroupNumbersRequestListValue { + s.Value = &v + return s +} + +// The encryption algorithm for phase 1 IKE negotiations. +type Phase1EncryptionAlgorithmsListValue struct { + _ struct{} `type:"structure"` + + // The value for the encryption algorithm. + Value *string `locationName:"value" type:"string"` +} + +// String returns the string representation +func (s Phase1EncryptionAlgorithmsListValue) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Phase1EncryptionAlgorithmsListValue) GoString() string { + return s.String() +} + +// SetValue sets the Value field's value. +func (s *Phase1EncryptionAlgorithmsListValue) SetValue(v string) *Phase1EncryptionAlgorithmsListValue { + s.Value = &v + return s +} + +// Specifies the encryption algorithm for the VPN tunnel for phase 1 IKE negotiations. +type Phase1EncryptionAlgorithmsRequestListValue struct { + _ struct{} `type:"structure"` + + // The value for the encryption algorithm. + Value *string `type:"string"` +} + +// String returns the string representation +func (s Phase1EncryptionAlgorithmsRequestListValue) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Phase1EncryptionAlgorithmsRequestListValue) GoString() string { + return s.String() +} + +// SetValue sets the Value field's value. +func (s *Phase1EncryptionAlgorithmsRequestListValue) SetValue(v string) *Phase1EncryptionAlgorithmsRequestListValue { + s.Value = &v + return s +} + +// The integrity algorithm for phase 1 IKE negotiations. +type Phase1IntegrityAlgorithmsListValue struct { + _ struct{} `type:"structure"` + + // The value for the integrity algorithm. + Value *string `locationName:"value" type:"string"` +} + +// String returns the string representation +func (s Phase1IntegrityAlgorithmsListValue) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Phase1IntegrityAlgorithmsListValue) GoString() string { + return s.String() +} + +// SetValue sets the Value field's value. +func (s *Phase1IntegrityAlgorithmsListValue) SetValue(v string) *Phase1IntegrityAlgorithmsListValue { + s.Value = &v + return s +} + +// Specifies the integrity algorithm for the VPN tunnel for phase 1 IKE negotiations. +type Phase1IntegrityAlgorithmsRequestListValue struct { + _ struct{} `type:"structure"` + + // The value for the integrity algorithm. + Value *string `type:"string"` +} + +// String returns the string representation +func (s Phase1IntegrityAlgorithmsRequestListValue) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Phase1IntegrityAlgorithmsRequestListValue) GoString() string { + return s.String() +} + +// SetValue sets the Value field's value. +func (s *Phase1IntegrityAlgorithmsRequestListValue) SetValue(v string) *Phase1IntegrityAlgorithmsRequestListValue { + s.Value = &v + return s +} + +// The Diffie-Hellmann group number for phase 2 IKE negotiations. +type Phase2DHGroupNumbersListValue struct { + _ struct{} `type:"structure"` + + // The Diffie-Hellmann group number. + Value *int64 `locationName:"value" type:"integer"` +} + +// String returns the string representation +func (s Phase2DHGroupNumbersListValue) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Phase2DHGroupNumbersListValue) GoString() string { + return s.String() +} + +// SetValue sets the Value field's value. +func (s *Phase2DHGroupNumbersListValue) SetValue(v int64) *Phase2DHGroupNumbersListValue { + s.Value = &v + return s +} + +// Specifies a Diffie-Hellman group number for the VPN tunnel for phase 2 IKE +// negotiations. +type Phase2DHGroupNumbersRequestListValue struct { + _ struct{} `type:"structure"` + + // The Diffie-Hellmann group number. + Value *int64 `type:"integer"` +} + +// String returns the string representation +func (s Phase2DHGroupNumbersRequestListValue) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Phase2DHGroupNumbersRequestListValue) GoString() string { + return s.String() +} + +// SetValue sets the Value field's value. +func (s *Phase2DHGroupNumbersRequestListValue) SetValue(v int64) *Phase2DHGroupNumbersRequestListValue { + s.Value = &v + return s +} + +// The encryption algorithm for phase 2 IKE negotiations. +type Phase2EncryptionAlgorithmsListValue struct { + _ struct{} `type:"structure"` + + // The encryption algorithm. + Value *string `locationName:"value" type:"string"` +} + +// String returns the string representation +func (s Phase2EncryptionAlgorithmsListValue) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Phase2EncryptionAlgorithmsListValue) GoString() string { + return s.String() +} + +// SetValue sets the Value field's value. +func (s *Phase2EncryptionAlgorithmsListValue) SetValue(v string) *Phase2EncryptionAlgorithmsListValue { + s.Value = &v + return s +} + +// Specifies the encryption algorithm for the VPN tunnel for phase 2 IKE negotiations. +type Phase2EncryptionAlgorithmsRequestListValue struct { + _ struct{} `type:"structure"` + + // The encryption algorithm. + Value *string `type:"string"` +} + +// String returns the string representation +func (s Phase2EncryptionAlgorithmsRequestListValue) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Phase2EncryptionAlgorithmsRequestListValue) GoString() string { + return s.String() +} + +// SetValue sets the Value field's value. +func (s *Phase2EncryptionAlgorithmsRequestListValue) SetValue(v string) *Phase2EncryptionAlgorithmsRequestListValue { + s.Value = &v + return s +} + +// The integrity algorithm for phase 2 IKE negotiations. +type Phase2IntegrityAlgorithmsListValue struct { + _ struct{} `type:"structure"` + + // The integrity algorithm. + Value *string `locationName:"value" type:"string"` +} + +// String returns the string representation +func (s Phase2IntegrityAlgorithmsListValue) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Phase2IntegrityAlgorithmsListValue) GoString() string { + return s.String() +} + +// SetValue sets the Value field's value. +func (s *Phase2IntegrityAlgorithmsListValue) SetValue(v string) *Phase2IntegrityAlgorithmsListValue { + s.Value = &v + return s +} + +// Specifies the integrity algorithm for the VPN tunnel for phase 2 IKE negotiations. +type Phase2IntegrityAlgorithmsRequestListValue struct { + _ struct{} `type:"structure"` + + // The integrity algorithm. + Value *string `type:"string"` +} + +// String returns the string representation +func (s Phase2IntegrityAlgorithmsRequestListValue) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Phase2IntegrityAlgorithmsRequestListValue) GoString() string { + return s.String() +} + +// SetValue sets the Value field's value. +func (s *Phase2IntegrityAlgorithmsRequestListValue) SetValue(v string) *Phase2IntegrityAlgorithmsRequestListValue { + s.Value = &v + return s +} + +// Describes the placement of an instance. +type Placement struct { + _ struct{} `type:"structure"` + + // The affinity setting for the instance on the Dedicated Host. This parameter + // is not supported for the ImportInstance command. + Affinity *string `locationName:"affinity" type:"string"` + + // The Availability Zone of the instance. + // + // If not specified, an Availability Zone will be automatically chosen for you + // based on the load balancing criteria for the Region. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // The name of the placement group the instance is in. + GroupName *string `locationName:"groupName" type:"string"` + + // The ID of the Dedicated Host on which the instance resides. This parameter + // is not supported for the ImportInstance command. + HostId *string `locationName:"hostId" type:"string"` + + // The number of the partition the instance is in. Valid only if the placement + // group strategy is set to partition. + PartitionNumber *int64 `locationName:"partitionNumber" type:"integer"` + + // Reserved for future use. + SpreadDomain *string `locationName:"spreadDomain" type:"string"` + + // The tenancy of the instance (if the instance is running in a VPC). An instance + // with a tenancy of dedicated runs on single-tenant hardware. The host tenancy + // is not supported for the ImportInstance command. + Tenancy *string `locationName:"tenancy" type:"string" enum:"Tenancy"` +} + +// String returns the string representation +func (s Placement) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Placement) GoString() string { + return s.String() +} + +// SetAffinity sets the Affinity field's value. +func (s *Placement) SetAffinity(v string) *Placement { + s.Affinity = &v + return s +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *Placement) SetAvailabilityZone(v string) *Placement { + s.AvailabilityZone = &v + return s +} + +// SetGroupName sets the GroupName field's value. +func (s *Placement) SetGroupName(v string) *Placement { + s.GroupName = &v + return s +} + +// SetHostId sets the HostId field's value. +func (s *Placement) SetHostId(v string) *Placement { + s.HostId = &v + return s +} + +// SetPartitionNumber sets the PartitionNumber field's value. +func (s *Placement) SetPartitionNumber(v int64) *Placement { + s.PartitionNumber = &v + return s +} + +// SetSpreadDomain sets the SpreadDomain field's value. +func (s *Placement) SetSpreadDomain(v string) *Placement { + s.SpreadDomain = &v + return s +} + +// SetTenancy sets the Tenancy field's value. +func (s *Placement) SetTenancy(v string) *Placement { + s.Tenancy = &v + return s +} + +// Describes a placement group. +type PlacementGroup struct { + _ struct{} `type:"structure"` + + // The name of the placement group. + GroupName *string `locationName:"groupName" type:"string"` + + // The number of partitions. Valid only if strategy is set to partition. + PartitionCount *int64 `locationName:"partitionCount" type:"integer"` + + // The state of the placement group. + State *string `locationName:"state" type:"string" enum:"PlacementGroupState"` + + // The placement strategy. + Strategy *string `locationName:"strategy" type:"string" enum:"PlacementStrategy"` +} + +// String returns the string representation +func (s PlacementGroup) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PlacementGroup) GoString() string { + return s.String() +} + +// SetGroupName sets the GroupName field's value. +func (s *PlacementGroup) SetGroupName(v string) *PlacementGroup { + s.GroupName = &v + return s +} + +// SetPartitionCount sets the PartitionCount field's value. +func (s *PlacementGroup) SetPartitionCount(v int64) *PlacementGroup { + s.PartitionCount = &v + return s +} + +// SetState sets the State field's value. +func (s *PlacementGroup) SetState(v string) *PlacementGroup { + s.State = &v + return s +} + +// SetStrategy sets the Strategy field's value. +func (s *PlacementGroup) SetStrategy(v string) *PlacementGroup { + s.Strategy = &v + return s +} + +// Describes the placement of an instance. +type PlacementResponse struct { + _ struct{} `type:"structure"` + + // The name of the placement group the instance is in. + GroupName *string `locationName:"groupName" type:"string"` +} + +// String returns the string representation +func (s PlacementResponse) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PlacementResponse) GoString() string { + return s.String() +} + +// SetGroupName sets the GroupName field's value. +func (s *PlacementResponse) SetGroupName(v string) *PlacementResponse { + s.GroupName = &v + return s +} + +// Describes a range of ports. +type PortRange struct { + _ struct{} `type:"structure"` + + // The first port in the range. + From *int64 `locationName:"from" type:"integer"` + + // The last port in the range. + To *int64 `locationName:"to" type:"integer"` +} + +// String returns the string representation +func (s PortRange) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PortRange) GoString() string { + return s.String() +} + +// SetFrom sets the From field's value. +func (s *PortRange) SetFrom(v int64) *PortRange { + s.From = &v + return s +} + +// SetTo sets the To field's value. +func (s *PortRange) SetTo(v int64) *PortRange { + s.To = &v + return s +} + +// Describes prefixes for AWS services. +type PrefixList struct { + _ struct{} `type:"structure"` + + // The IP address range of the AWS service. + Cidrs []*string `locationName:"cidrSet" locationNameList:"item" type:"list"` + + // The ID of the prefix. + PrefixListId *string `locationName:"prefixListId" type:"string"` + + // The name of the prefix. + PrefixListName *string `locationName:"prefixListName" type:"string"` +} + +// String returns the string representation +func (s PrefixList) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PrefixList) GoString() string { + return s.String() +} + +// SetCidrs sets the Cidrs field's value. +func (s *PrefixList) SetCidrs(v []*string) *PrefixList { + s.Cidrs = v + return s +} + +// SetPrefixListId sets the PrefixListId field's value. +func (s *PrefixList) SetPrefixListId(v string) *PrefixList { + s.PrefixListId = &v + return s +} + +// SetPrefixListName sets the PrefixListName field's value. +func (s *PrefixList) SetPrefixListName(v string) *PrefixList { + s.PrefixListName = &v + return s +} + +// Describes a prefix list ID. +type PrefixListId struct { + _ struct{} `type:"structure"` + + // A description for the security group rule that references this prefix list + // ID. + // + // Constraints: Up to 255 characters in length. Allowed characters are a-z, + // A-Z, 0-9, spaces, and ._-:/()#,@[]+=;{}!$* + Description *string `locationName:"description" type:"string"` + + // The ID of the prefix. + PrefixListId *string `locationName:"prefixListId" type:"string"` +} + +// String returns the string representation +func (s PrefixListId) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PrefixListId) GoString() string { + return s.String() +} + +// SetDescription sets the Description field's value. +func (s *PrefixListId) SetDescription(v string) *PrefixListId { + s.Description = &v + return s +} + +// SetPrefixListId sets the PrefixListId field's value. +func (s *PrefixListId) SetPrefixListId(v string) *PrefixListId { + s.PrefixListId = &v + return s +} + +// Describes the price for a Reserved Instance. +type PriceSchedule struct { + _ struct{} `type:"structure"` + + // The current price schedule, as determined by the term remaining for the Reserved + // Instance in the listing. + // + // A specific price schedule is always in effect, but only one price schedule + // can be active at any time. Take, for example, a Reserved Instance listing + // that has five months remaining in its term. When you specify price schedules + // for five months and two months, this means that schedule 1, covering the + // first three months of the remaining term, will be active during months 5, + // 4, and 3. Then schedule 2, covering the last two months of the term, will + // be active for months 2 and 1. + Active *bool `locationName:"active" type:"boolean"` + + // The currency for transacting the Reserved Instance resale. At this time, + // the only supported currency is USD. + CurrencyCode *string `locationName:"currencyCode" type:"string" enum:"CurrencyCodeValues"` + + // The fixed price for the term. + Price *float64 `locationName:"price" type:"double"` + + // The number of months remaining in the reservation. For example, 2 is the + // second to the last month before the capacity reservation expires. + Term *int64 `locationName:"term" type:"long"` +} + +// String returns the string representation +func (s PriceSchedule) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PriceSchedule) GoString() string { + return s.String() +} + +// SetActive sets the Active field's value. +func (s *PriceSchedule) SetActive(v bool) *PriceSchedule { + s.Active = &v + return s +} + +// SetCurrencyCode sets the CurrencyCode field's value. +func (s *PriceSchedule) SetCurrencyCode(v string) *PriceSchedule { + s.CurrencyCode = &v + return s +} + +// SetPrice sets the Price field's value. +func (s *PriceSchedule) SetPrice(v float64) *PriceSchedule { + s.Price = &v + return s +} + +// SetTerm sets the Term field's value. +func (s *PriceSchedule) SetTerm(v int64) *PriceSchedule { + s.Term = &v + return s +} + +// Describes the price for a Reserved Instance. +type PriceScheduleSpecification struct { + _ struct{} `type:"structure"` + + // The currency for transacting the Reserved Instance resale. At this time, + // the only supported currency is USD. + CurrencyCode *string `locationName:"currencyCode" type:"string" enum:"CurrencyCodeValues"` + + // The fixed price for the term. + Price *float64 `locationName:"price" type:"double"` + + // The number of months remaining in the reservation. For example, 2 is the + // second to the last month before the capacity reservation expires. + Term *int64 `locationName:"term" type:"long"` +} + +// String returns the string representation +func (s PriceScheduleSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PriceScheduleSpecification) GoString() string { + return s.String() +} + +// SetCurrencyCode sets the CurrencyCode field's value. +func (s *PriceScheduleSpecification) SetCurrencyCode(v string) *PriceScheduleSpecification { + s.CurrencyCode = &v + return s +} + +// SetPrice sets the Price field's value. +func (s *PriceScheduleSpecification) SetPrice(v float64) *PriceScheduleSpecification { + s.Price = &v + return s +} + +// SetTerm sets the Term field's value. +func (s *PriceScheduleSpecification) SetTerm(v int64) *PriceScheduleSpecification { + s.Term = &v + return s +} + +// Describes a Reserved Instance offering. +type PricingDetail struct { + _ struct{} `type:"structure"` + + // The number of reservations available for the price. + Count *int64 `locationName:"count" type:"integer"` + + // The price per instance. + Price *float64 `locationName:"price" type:"double"` +} + +// String returns the string representation +func (s PricingDetail) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PricingDetail) GoString() string { + return s.String() +} + +// SetCount sets the Count field's value. +func (s *PricingDetail) SetCount(v int64) *PricingDetail { + s.Count = &v + return s +} + +// SetPrice sets the Price field's value. +func (s *PricingDetail) SetPrice(v float64) *PricingDetail { + s.Price = &v + return s +} + +// PrincipalIdFormat description +type PrincipalIdFormat struct { + _ struct{} `type:"structure"` + + // PrincipalIdFormatARN description + Arn *string `locationName:"arn" type:"string"` + + // PrincipalIdFormatStatuses description + Statuses []*IdFormat `locationName:"statusSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s PrincipalIdFormat) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PrincipalIdFormat) GoString() string { + return s.String() +} + +// SetArn sets the Arn field's value. +func (s *PrincipalIdFormat) SetArn(v string) *PrincipalIdFormat { + s.Arn = &v + return s +} + +// SetStatuses sets the Statuses field's value. +func (s *PrincipalIdFormat) SetStatuses(v []*IdFormat) *PrincipalIdFormat { + s.Statuses = v + return s +} + +// Describes a secondary private IPv4 address for a network interface. +type PrivateIpAddressSpecification struct { + _ struct{} `type:"structure"` + + // Indicates whether the private IPv4 address is the primary private IPv4 address. + // Only one IPv4 address can be designated as primary. + Primary *bool `locationName:"primary" type:"boolean"` + + // The private IPv4 addresses. + PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` +} + +// String returns the string representation +func (s PrivateIpAddressSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PrivateIpAddressSpecification) GoString() string { + return s.String() +} + +// SetPrimary sets the Primary field's value. +func (s *PrivateIpAddressSpecification) SetPrimary(v bool) *PrivateIpAddressSpecification { + s.Primary = &v + return s +} + +// SetPrivateIpAddress sets the PrivateIpAddress field's value. +func (s *PrivateIpAddressSpecification) SetPrivateIpAddress(v string) *PrivateIpAddressSpecification { + s.PrivateIpAddress = &v + return s +} + +// Describes a product code. +type ProductCode struct { + _ struct{} `type:"structure"` + + // The product code. + ProductCodeId *string `locationName:"productCode" type:"string"` + + // The type of product code. + ProductCodeType *string `locationName:"type" type:"string" enum:"ProductCodeValues"` +} + +// String returns the string representation +func (s ProductCode) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ProductCode) GoString() string { + return s.String() +} + +// SetProductCodeId sets the ProductCodeId field's value. +func (s *ProductCode) SetProductCodeId(v string) *ProductCode { + s.ProductCodeId = &v + return s +} + +// SetProductCodeType sets the ProductCodeType field's value. +func (s *ProductCode) SetProductCodeType(v string) *ProductCode { + s.ProductCodeType = &v + return s +} + +// Describes a virtual private gateway propagating route. +type PropagatingVgw struct { + _ struct{} `type:"structure"` + + // The ID of the virtual private gateway. + GatewayId *string `locationName:"gatewayId" type:"string"` +} + +// String returns the string representation +func (s PropagatingVgw) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PropagatingVgw) GoString() string { + return s.String() +} + +// SetGatewayId sets the GatewayId field's value. +func (s *PropagatingVgw) SetGatewayId(v string) *PropagatingVgw { + s.GatewayId = &v + return s +} + +type ProvisionByoipCidrInput struct { + _ struct{} `type:"structure"` + + // The public IPv4 address range, in CIDR notation. The most specific prefix + // that you can specify is /24. The address range cannot overlap with another + // address range that you've brought to this or another Region. + // + // Cidr is a required field + Cidr *string `type:"string" required:"true"` + + // A signed document that proves that you are authorized to bring the specified + // IP address range to Amazon using BYOIP. + CidrAuthorizationContext *CidrAuthorizationContext `type:"structure"` + + // A description for the address range and the address pool. + Description *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s ProvisionByoipCidrInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ProvisionByoipCidrInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ProvisionByoipCidrInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ProvisionByoipCidrInput"} + if s.Cidr == nil { + invalidParams.Add(request.NewErrParamRequired("Cidr")) + } + if s.CidrAuthorizationContext != nil { + if err := s.CidrAuthorizationContext.Validate(); err != nil { + invalidParams.AddNested("CidrAuthorizationContext", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCidr sets the Cidr field's value. +func (s *ProvisionByoipCidrInput) SetCidr(v string) *ProvisionByoipCidrInput { + s.Cidr = &v + return s +} + +// SetCidrAuthorizationContext sets the CidrAuthorizationContext field's value. +func (s *ProvisionByoipCidrInput) SetCidrAuthorizationContext(v *CidrAuthorizationContext) *ProvisionByoipCidrInput { + s.CidrAuthorizationContext = v + return s +} + +// SetDescription sets the Description field's value. +func (s *ProvisionByoipCidrInput) SetDescription(v string) *ProvisionByoipCidrInput { + s.Description = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ProvisionByoipCidrInput) SetDryRun(v bool) *ProvisionByoipCidrInput { + s.DryRun = &v + return s +} + +type ProvisionByoipCidrOutput struct { + _ struct{} `type:"structure"` + + // Information about the address pool. + ByoipCidr *ByoipCidr `locationName:"byoipCidr" type:"structure"` +} + +// String returns the string representation +func (s ProvisionByoipCidrOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ProvisionByoipCidrOutput) GoString() string { + return s.String() +} + +// SetByoipCidr sets the ByoipCidr field's value. +func (s *ProvisionByoipCidrOutput) SetByoipCidr(v *ByoipCidr) *ProvisionByoipCidrOutput { + s.ByoipCidr = v + return s +} + +// Reserved. If you need to sustain traffic greater than the documented limits +// (https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html), +// contact us through the Support Center (https://console.aws.amazon.com/support/home?). +type ProvisionedBandwidth struct { + _ struct{} `type:"structure"` + + // Reserved. If you need to sustain traffic greater than the documented limits + // (https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html), + // contact us through the Support Center (https://console.aws.amazon.com/support/home?). + ProvisionTime *time.Time `locationName:"provisionTime" type:"timestamp"` + + // Reserved. If you need to sustain traffic greater than the documented limits + // (https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html), + // contact us through the Support Center (https://console.aws.amazon.com/support/home?). + Provisioned *string `locationName:"provisioned" type:"string"` + + // Reserved. If you need to sustain traffic greater than the documented limits + // (https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html), + // contact us through the Support Center (https://console.aws.amazon.com/support/home?). + RequestTime *time.Time `locationName:"requestTime" type:"timestamp"` + + // Reserved. If you need to sustain traffic greater than the documented limits + // (https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html), + // contact us through the Support Center (https://console.aws.amazon.com/support/home?). + Requested *string `locationName:"requested" type:"string"` + + // Reserved. If you need to sustain traffic greater than the documented limits + // (https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html), + // contact us through the Support Center (https://console.aws.amazon.com/support/home?). + Status *string `locationName:"status" type:"string"` +} + +// String returns the string representation +func (s ProvisionedBandwidth) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ProvisionedBandwidth) GoString() string { + return s.String() +} + +// SetProvisionTime sets the ProvisionTime field's value. +func (s *ProvisionedBandwidth) SetProvisionTime(v time.Time) *ProvisionedBandwidth { + s.ProvisionTime = &v + return s +} + +// SetProvisioned sets the Provisioned field's value. +func (s *ProvisionedBandwidth) SetProvisioned(v string) *ProvisionedBandwidth { + s.Provisioned = &v + return s +} + +// SetRequestTime sets the RequestTime field's value. +func (s *ProvisionedBandwidth) SetRequestTime(v time.Time) *ProvisionedBandwidth { + s.RequestTime = &v + return s +} + +// SetRequested sets the Requested field's value. +func (s *ProvisionedBandwidth) SetRequested(v string) *ProvisionedBandwidth { + s.Requested = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *ProvisionedBandwidth) SetStatus(v string) *ProvisionedBandwidth { + s.Status = &v + return s +} + +// Describes an address pool. +type PublicIpv4Pool struct { + _ struct{} `type:"structure"` + + // A description of the address pool. + Description *string `locationName:"description" type:"string"` + + // The address ranges. + PoolAddressRanges []*PublicIpv4PoolRange `locationName:"poolAddressRangeSet" locationNameList:"item" type:"list"` + + // The ID of the IPv4 address pool. + PoolId *string `locationName:"poolId" type:"string"` + + // The total number of addresses. + TotalAddressCount *int64 `locationName:"totalAddressCount" type:"integer"` + + // The total number of available addresses. + TotalAvailableAddressCount *int64 `locationName:"totalAvailableAddressCount" type:"integer"` +} + +// String returns the string representation +func (s PublicIpv4Pool) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PublicIpv4Pool) GoString() string { + return s.String() +} + +// SetDescription sets the Description field's value. +func (s *PublicIpv4Pool) SetDescription(v string) *PublicIpv4Pool { + s.Description = &v + return s +} + +// SetPoolAddressRanges sets the PoolAddressRanges field's value. +func (s *PublicIpv4Pool) SetPoolAddressRanges(v []*PublicIpv4PoolRange) *PublicIpv4Pool { + s.PoolAddressRanges = v + return s +} + +// SetPoolId sets the PoolId field's value. +func (s *PublicIpv4Pool) SetPoolId(v string) *PublicIpv4Pool { + s.PoolId = &v + return s +} + +// SetTotalAddressCount sets the TotalAddressCount field's value. +func (s *PublicIpv4Pool) SetTotalAddressCount(v int64) *PublicIpv4Pool { + s.TotalAddressCount = &v + return s +} + +// SetTotalAvailableAddressCount sets the TotalAvailableAddressCount field's value. +func (s *PublicIpv4Pool) SetTotalAvailableAddressCount(v int64) *PublicIpv4Pool { + s.TotalAvailableAddressCount = &v + return s +} + +// Describes an address range of an IPv4 address pool. +type PublicIpv4PoolRange struct { + _ struct{} `type:"structure"` + + // The number of addresses in the range. + AddressCount *int64 `locationName:"addressCount" type:"integer"` + + // The number of available addresses in the range. + AvailableAddressCount *int64 `locationName:"availableAddressCount" type:"integer"` + + // The first IP address in the range. + FirstAddress *string `locationName:"firstAddress" type:"string"` + + // The last IP address in the range. + LastAddress *string `locationName:"lastAddress" type:"string"` +} + +// String returns the string representation +func (s PublicIpv4PoolRange) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PublicIpv4PoolRange) GoString() string { + return s.String() +} + +// SetAddressCount sets the AddressCount field's value. +func (s *PublicIpv4PoolRange) SetAddressCount(v int64) *PublicIpv4PoolRange { + s.AddressCount = &v + return s +} + +// SetAvailableAddressCount sets the AvailableAddressCount field's value. +func (s *PublicIpv4PoolRange) SetAvailableAddressCount(v int64) *PublicIpv4PoolRange { + s.AvailableAddressCount = &v + return s +} + +// SetFirstAddress sets the FirstAddress field's value. +func (s *PublicIpv4PoolRange) SetFirstAddress(v string) *PublicIpv4PoolRange { + s.FirstAddress = &v + return s +} + +// SetLastAddress sets the LastAddress field's value. +func (s *PublicIpv4PoolRange) SetLastAddress(v string) *PublicIpv4PoolRange { + s.LastAddress = &v + return s +} + +// Describes the result of the purchase. +type Purchase struct { + _ struct{} `type:"structure"` + + // The currency in which the UpfrontPrice and HourlyPrice amounts are specified. + // At this time, the only supported currency is USD. + CurrencyCode *string `locationName:"currencyCode" type:"string" enum:"CurrencyCodeValues"` + + // The duration of the reservation's term in seconds. + Duration *int64 `locationName:"duration" type:"integer"` + + // The IDs of the Dedicated Hosts associated with the reservation. + HostIdSet []*string `locationName:"hostIdSet" locationNameList:"item" type:"list"` + + // The ID of the reservation. + HostReservationId *string `locationName:"hostReservationId" type:"string"` + + // The hourly price of the reservation per hour. + HourlyPrice *string `locationName:"hourlyPrice" type:"string"` + + // The instance family on the Dedicated Host that the reservation can be associated + // with. + InstanceFamily *string `locationName:"instanceFamily" type:"string"` + + // The payment option for the reservation. + PaymentOption *string `locationName:"paymentOption" type:"string" enum:"PaymentOption"` + + // The upfront price of the reservation. + UpfrontPrice *string `locationName:"upfrontPrice" type:"string"` +} + +// String returns the string representation +func (s Purchase) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Purchase) GoString() string { + return s.String() +} + +// SetCurrencyCode sets the CurrencyCode field's value. +func (s *Purchase) SetCurrencyCode(v string) *Purchase { + s.CurrencyCode = &v + return s +} + +// SetDuration sets the Duration field's value. +func (s *Purchase) SetDuration(v int64) *Purchase { + s.Duration = &v + return s +} + +// SetHostIdSet sets the HostIdSet field's value. +func (s *Purchase) SetHostIdSet(v []*string) *Purchase { + s.HostIdSet = v + return s +} + +// SetHostReservationId sets the HostReservationId field's value. +func (s *Purchase) SetHostReservationId(v string) *Purchase { + s.HostReservationId = &v + return s +} + +// SetHourlyPrice sets the HourlyPrice field's value. +func (s *Purchase) SetHourlyPrice(v string) *Purchase { + s.HourlyPrice = &v + return s +} + +// SetInstanceFamily sets the InstanceFamily field's value. +func (s *Purchase) SetInstanceFamily(v string) *Purchase { + s.InstanceFamily = &v + return s +} + +// SetPaymentOption sets the PaymentOption field's value. +func (s *Purchase) SetPaymentOption(v string) *Purchase { + s.PaymentOption = &v + return s +} + +// SetUpfrontPrice sets the UpfrontPrice field's value. +func (s *Purchase) SetUpfrontPrice(v string) *Purchase { + s.UpfrontPrice = &v + return s +} + +type PurchaseHostReservationInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `type:"string"` + + // The currency in which the totalUpfrontPrice, LimitPrice, and totalHourlyPrice + // amounts are specified. At this time, the only supported currency is USD. + CurrencyCode *string `type:"string" enum:"CurrencyCodeValues"` + + // The IDs of the Dedicated Hosts with which the reservation will be associated. + // + // HostIdSet is a required field + HostIdSet []*string `locationNameList:"item" type:"list" required:"true"` + + // The specified limit is checked against the total upfront cost of the reservation + // (calculated as the offering's upfront cost multiplied by the host count). + // If the total upfront cost is greater than the specified price limit, the + // request fails. This is used to ensure that the purchase does not exceed the + // expected upfront cost of the purchase. At this time, the only supported currency + // is USD. For example, to indicate a limit price of USD 100, specify 100.00. + LimitPrice *string `type:"string"` + + // The ID of the offering. + // + // OfferingId is a required field + OfferingId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s PurchaseHostReservationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PurchaseHostReservationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PurchaseHostReservationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PurchaseHostReservationInput"} + if s.HostIdSet == nil { + invalidParams.Add(request.NewErrParamRequired("HostIdSet")) + } + if s.OfferingId == nil { + invalidParams.Add(request.NewErrParamRequired("OfferingId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *PurchaseHostReservationInput) SetClientToken(v string) *PurchaseHostReservationInput { + s.ClientToken = &v + return s +} + +// SetCurrencyCode sets the CurrencyCode field's value. +func (s *PurchaseHostReservationInput) SetCurrencyCode(v string) *PurchaseHostReservationInput { + s.CurrencyCode = &v + return s +} + +// SetHostIdSet sets the HostIdSet field's value. +func (s *PurchaseHostReservationInput) SetHostIdSet(v []*string) *PurchaseHostReservationInput { + s.HostIdSet = v + return s +} + +// SetLimitPrice sets the LimitPrice field's value. +func (s *PurchaseHostReservationInput) SetLimitPrice(v string) *PurchaseHostReservationInput { + s.LimitPrice = &v + return s +} + +// SetOfferingId sets the OfferingId field's value. +func (s *PurchaseHostReservationInput) SetOfferingId(v string) *PurchaseHostReservationInput { + s.OfferingId = &v + return s +} + +type PurchaseHostReservationOutput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `locationName:"clientToken" type:"string"` + + // The currency in which the totalUpfrontPrice and totalHourlyPrice amounts + // are specified. At this time, the only supported currency is USD. + CurrencyCode *string `locationName:"currencyCode" type:"string" enum:"CurrencyCodeValues"` + + // Describes the details of the purchase. + Purchase []*Purchase `locationName:"purchase" locationNameList:"item" type:"list"` + + // The total hourly price of the reservation calculated per hour. + TotalHourlyPrice *string `locationName:"totalHourlyPrice" type:"string"` + + // The total amount charged to your account when you purchase the reservation. + TotalUpfrontPrice *string `locationName:"totalUpfrontPrice" type:"string"` +} + +// String returns the string representation +func (s PurchaseHostReservationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PurchaseHostReservationOutput) GoString() string { + return s.String() +} + +// SetClientToken sets the ClientToken field's value. +func (s *PurchaseHostReservationOutput) SetClientToken(v string) *PurchaseHostReservationOutput { + s.ClientToken = &v + return s +} + +// SetCurrencyCode sets the CurrencyCode field's value. +func (s *PurchaseHostReservationOutput) SetCurrencyCode(v string) *PurchaseHostReservationOutput { + s.CurrencyCode = &v + return s +} + +// SetPurchase sets the Purchase field's value. +func (s *PurchaseHostReservationOutput) SetPurchase(v []*Purchase) *PurchaseHostReservationOutput { + s.Purchase = v + return s +} + +// SetTotalHourlyPrice sets the TotalHourlyPrice field's value. +func (s *PurchaseHostReservationOutput) SetTotalHourlyPrice(v string) *PurchaseHostReservationOutput { + s.TotalHourlyPrice = &v + return s +} + +// SetTotalUpfrontPrice sets the TotalUpfrontPrice field's value. +func (s *PurchaseHostReservationOutput) SetTotalUpfrontPrice(v string) *PurchaseHostReservationOutput { + s.TotalUpfrontPrice = &v + return s +} + +// Describes a request to purchase Scheduled Instances. +type PurchaseRequest struct { + _ struct{} `type:"structure"` + + // The number of instances. + // + // InstanceCount is a required field + InstanceCount *int64 `type:"integer" required:"true"` + + // The purchase token. + // + // PurchaseToken is a required field + PurchaseToken *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s PurchaseRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PurchaseRequest) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PurchaseRequest) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PurchaseRequest"} + if s.InstanceCount == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceCount")) + } + if s.PurchaseToken == nil { + invalidParams.Add(request.NewErrParamRequired("PurchaseToken")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetInstanceCount sets the InstanceCount field's value. +func (s *PurchaseRequest) SetInstanceCount(v int64) *PurchaseRequest { + s.InstanceCount = &v + return s +} + +// SetPurchaseToken sets the PurchaseToken field's value. +func (s *PurchaseRequest) SetPurchaseToken(v string) *PurchaseRequest { + s.PurchaseToken = &v + return s +} + +// Contains the parameters for PurchaseReservedInstancesOffering. +type PurchaseReservedInstancesOfferingInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The number of Reserved Instances to purchase. + // + // InstanceCount is a required field + InstanceCount *int64 `type:"integer" required:"true"` + + // Specified for Reserved Instance Marketplace offerings to limit the total + // order and ensure that the Reserved Instances are not purchased at unexpected + // prices. + LimitPrice *ReservedInstanceLimitPrice `locationName:"limitPrice" type:"structure"` + + // The time at which to purchase the Reserved Instance, in UTC format (for example, + // YYYY-MM-DDTHH:MM:SSZ). + PurchaseTime *time.Time `type:"timestamp"` + + // The ID of the Reserved Instance offering to purchase. + // + // ReservedInstancesOfferingId is a required field + ReservedInstancesOfferingId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s PurchaseReservedInstancesOfferingInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PurchaseReservedInstancesOfferingInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PurchaseReservedInstancesOfferingInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PurchaseReservedInstancesOfferingInput"} + if s.InstanceCount == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceCount")) + } + if s.ReservedInstancesOfferingId == nil { + invalidParams.Add(request.NewErrParamRequired("ReservedInstancesOfferingId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *PurchaseReservedInstancesOfferingInput) SetDryRun(v bool) *PurchaseReservedInstancesOfferingInput { + s.DryRun = &v + return s +} + +// SetInstanceCount sets the InstanceCount field's value. +func (s *PurchaseReservedInstancesOfferingInput) SetInstanceCount(v int64) *PurchaseReservedInstancesOfferingInput { + s.InstanceCount = &v + return s +} + +// SetLimitPrice sets the LimitPrice field's value. +func (s *PurchaseReservedInstancesOfferingInput) SetLimitPrice(v *ReservedInstanceLimitPrice) *PurchaseReservedInstancesOfferingInput { + s.LimitPrice = v + return s +} + +// SetPurchaseTime sets the PurchaseTime field's value. +func (s *PurchaseReservedInstancesOfferingInput) SetPurchaseTime(v time.Time) *PurchaseReservedInstancesOfferingInput { + s.PurchaseTime = &v + return s +} + +// SetReservedInstancesOfferingId sets the ReservedInstancesOfferingId field's value. +func (s *PurchaseReservedInstancesOfferingInput) SetReservedInstancesOfferingId(v string) *PurchaseReservedInstancesOfferingInput { + s.ReservedInstancesOfferingId = &v + return s +} + +// Contains the output of PurchaseReservedInstancesOffering. +type PurchaseReservedInstancesOfferingOutput struct { + _ struct{} `type:"structure"` + + // The IDs of the purchased Reserved Instances. + ReservedInstancesId *string `locationName:"reservedInstancesId" type:"string"` +} + +// String returns the string representation +func (s PurchaseReservedInstancesOfferingOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PurchaseReservedInstancesOfferingOutput) GoString() string { + return s.String() +} + +// SetReservedInstancesId sets the ReservedInstancesId field's value. +func (s *PurchaseReservedInstancesOfferingOutput) SetReservedInstancesId(v string) *PurchaseReservedInstancesOfferingOutput { + s.ReservedInstancesId = &v + return s +} + +// Contains the parameters for PurchaseScheduledInstances. +type PurchaseScheduledInstancesInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that ensures the idempotency of the request. + // For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `type:"string" idempotencyToken:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The purchase requests. + // + // PurchaseRequests is a required field + PurchaseRequests []*PurchaseRequest `locationName:"PurchaseRequest" locationNameList:"PurchaseRequest" min:"1" type:"list" required:"true"` +} + +// String returns the string representation +func (s PurchaseScheduledInstancesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PurchaseScheduledInstancesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PurchaseScheduledInstancesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PurchaseScheduledInstancesInput"} + if s.PurchaseRequests == nil { + invalidParams.Add(request.NewErrParamRequired("PurchaseRequests")) + } + if s.PurchaseRequests != nil && len(s.PurchaseRequests) < 1 { + invalidParams.Add(request.NewErrParamMinLen("PurchaseRequests", 1)) + } + if s.PurchaseRequests != nil { + for i, v := range s.PurchaseRequests { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PurchaseRequests", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *PurchaseScheduledInstancesInput) SetClientToken(v string) *PurchaseScheduledInstancesInput { + s.ClientToken = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *PurchaseScheduledInstancesInput) SetDryRun(v bool) *PurchaseScheduledInstancesInput { + s.DryRun = &v + return s +} + +// SetPurchaseRequests sets the PurchaseRequests field's value. +func (s *PurchaseScheduledInstancesInput) SetPurchaseRequests(v []*PurchaseRequest) *PurchaseScheduledInstancesInput { + s.PurchaseRequests = v + return s +} + +// Contains the output of PurchaseScheduledInstances. +type PurchaseScheduledInstancesOutput struct { + _ struct{} `type:"structure"` + + // Information about the Scheduled Instances. + ScheduledInstanceSet []*ScheduledInstance `locationName:"scheduledInstanceSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s PurchaseScheduledInstancesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PurchaseScheduledInstancesOutput) GoString() string { + return s.String() +} + +// SetScheduledInstanceSet sets the ScheduledInstanceSet field's value. +func (s *PurchaseScheduledInstancesOutput) SetScheduledInstanceSet(v []*ScheduledInstance) *PurchaseScheduledInstancesOutput { + s.ScheduledInstanceSet = v + return s +} + +type RebootInstancesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The instance IDs. + // + // InstanceIds is a required field + InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list" required:"true"` +} + +// String returns the string representation +func (s RebootInstancesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RebootInstancesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RebootInstancesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RebootInstancesInput"} + if s.InstanceIds == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceIds")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *RebootInstancesInput) SetDryRun(v bool) *RebootInstancesInput { + s.DryRun = &v + return s +} + +// SetInstanceIds sets the InstanceIds field's value. +func (s *RebootInstancesInput) SetInstanceIds(v []*string) *RebootInstancesInput { + s.InstanceIds = v + return s +} + +type RebootInstancesOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s RebootInstancesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RebootInstancesOutput) GoString() string { + return s.String() +} + +// Describes a recurring charge. +type RecurringCharge struct { + _ struct{} `type:"structure"` + + // The amount of the recurring charge. + Amount *float64 `locationName:"amount" type:"double"` + + // The frequency of the recurring charge. + Frequency *string `locationName:"frequency" type:"string" enum:"RecurringChargeFrequency"` +} + +// String returns the string representation +func (s RecurringCharge) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RecurringCharge) GoString() string { + return s.String() +} + +// SetAmount sets the Amount field's value. +func (s *RecurringCharge) SetAmount(v float64) *RecurringCharge { + s.Amount = &v + return s +} + +// SetFrequency sets the Frequency field's value. +func (s *RecurringCharge) SetFrequency(v string) *RecurringCharge { + s.Frequency = &v + return s +} + +// Describes a Region. +type Region struct { + _ struct{} `type:"structure"` + + // The Region service endpoint. + Endpoint *string `locationName:"regionEndpoint" type:"string"` + + // The Region opt-in status. The possible values are opt-in-not-required, opted-in, + // and not-opted-in. + OptInStatus *string `locationName:"optInStatus" type:"string"` + + // The name of the Region. + RegionName *string `locationName:"regionName" type:"string"` +} + +// String returns the string representation +func (s Region) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Region) GoString() string { + return s.String() +} + +// SetEndpoint sets the Endpoint field's value. +func (s *Region) SetEndpoint(v string) *Region { + s.Endpoint = &v + return s +} + +// SetOptInStatus sets the OptInStatus field's value. +func (s *Region) SetOptInStatus(v string) *Region { + s.OptInStatus = &v + return s +} + +// SetRegionName sets the RegionName field's value. +func (s *Region) SetRegionName(v string) *Region { + s.RegionName = &v + return s +} + +// Contains the parameters for RegisterImage. +type RegisterImageInput struct { + _ struct{} `type:"structure"` + + // The architecture of the AMI. + // + // Default: For Amazon EBS-backed AMIs, i386. For instance store-backed AMIs, + // the architecture specified in the manifest file. + Architecture *string `locationName:"architecture" type:"string" enum:"ArchitectureValues"` + + // The billing product codes. Your account must be authorized to specify billing + // product codes. Otherwise, you can use the AWS Marketplace to bill for the + // use of an AMI. + BillingProducts []*string `locationName:"BillingProduct" locationNameList:"item" type:"list"` + + // The block device mapping entries. + BlockDeviceMappings []*BlockDeviceMapping `locationName:"BlockDeviceMapping" locationNameList:"BlockDeviceMapping" type:"list"` + + // A description for your AMI. + Description *string `locationName:"description" type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // Set to true to enable enhanced networking with ENA for the AMI and any instances + // that you launch from the AMI. + // + // This option is supported only for HVM AMIs. Specifying this option with a + // PV AMI can make instances launched from the AMI unreachable. + EnaSupport *bool `locationName:"enaSupport" type:"boolean"` + + // The full path to your AMI manifest in Amazon S3 storage. The specified bucket + // must have the aws-exec-read canned access control list (ACL) to ensure that + // it can be accessed by Amazon EC2. For more information, see Canned ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) + // in the Amazon S3 Service Developer Guide. + ImageLocation *string `type:"string"` + + // The ID of the kernel. + KernelId *string `locationName:"kernelId" type:"string"` + + // A name for your AMI. + // + // Constraints: 3-128 alphanumeric characters, parentheses (()), square brackets + // ([]), spaces ( ), periods (.), slashes (/), dashes (-), single quotes ('), + // at-signs (@), or underscores(_) + // + // Name is a required field + Name *string `locationName:"name" type:"string" required:"true"` + + // The ID of the RAM disk. + RamdiskId *string `locationName:"ramdiskId" type:"string"` + + // The device name of the root device volume (for example, /dev/sda1). + RootDeviceName *string `locationName:"rootDeviceName" type:"string"` + + // Set to simple to enable enhanced networking with the Intel 82599 Virtual + // Function interface for the AMI and any instances that you launch from the + // AMI. + // + // There is no way to disable sriovNetSupport at this time. + // + // This option is supported only for HVM AMIs. Specifying this option with a + // PV AMI can make instances launched from the AMI unreachable. + SriovNetSupport *string `locationName:"sriovNetSupport" type:"string"` + + // The type of virtualization (hvm | paravirtual). + // + // Default: paravirtual + VirtualizationType *string `locationName:"virtualizationType" type:"string"` +} + +// String returns the string representation +func (s RegisterImageInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RegisterImageInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RegisterImageInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RegisterImageInput"} + if s.Name == nil { + invalidParams.Add(request.NewErrParamRequired("Name")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetArchitecture sets the Architecture field's value. +func (s *RegisterImageInput) SetArchitecture(v string) *RegisterImageInput { + s.Architecture = &v + return s +} + +// SetBillingProducts sets the BillingProducts field's value. +func (s *RegisterImageInput) SetBillingProducts(v []*string) *RegisterImageInput { + s.BillingProducts = v + return s +} + +// SetBlockDeviceMappings sets the BlockDeviceMappings field's value. +func (s *RegisterImageInput) SetBlockDeviceMappings(v []*BlockDeviceMapping) *RegisterImageInput { + s.BlockDeviceMappings = v + return s +} + +// SetDescription sets the Description field's value. +func (s *RegisterImageInput) SetDescription(v string) *RegisterImageInput { + s.Description = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *RegisterImageInput) SetDryRun(v bool) *RegisterImageInput { + s.DryRun = &v + return s +} + +// SetEnaSupport sets the EnaSupport field's value. +func (s *RegisterImageInput) SetEnaSupport(v bool) *RegisterImageInput { + s.EnaSupport = &v + return s +} + +// SetImageLocation sets the ImageLocation field's value. +func (s *RegisterImageInput) SetImageLocation(v string) *RegisterImageInput { + s.ImageLocation = &v + return s +} + +// SetKernelId sets the KernelId field's value. +func (s *RegisterImageInput) SetKernelId(v string) *RegisterImageInput { + s.KernelId = &v + return s +} + +// SetName sets the Name field's value. +func (s *RegisterImageInput) SetName(v string) *RegisterImageInput { + s.Name = &v + return s +} + +// SetRamdiskId sets the RamdiskId field's value. +func (s *RegisterImageInput) SetRamdiskId(v string) *RegisterImageInput { + s.RamdiskId = &v + return s +} + +// SetRootDeviceName sets the RootDeviceName field's value. +func (s *RegisterImageInput) SetRootDeviceName(v string) *RegisterImageInput { + s.RootDeviceName = &v + return s +} + +// SetSriovNetSupport sets the SriovNetSupport field's value. +func (s *RegisterImageInput) SetSriovNetSupport(v string) *RegisterImageInput { + s.SriovNetSupport = &v + return s +} + +// SetVirtualizationType sets the VirtualizationType field's value. +func (s *RegisterImageInput) SetVirtualizationType(v string) *RegisterImageInput { + s.VirtualizationType = &v + return s +} + +// Contains the output of RegisterImage. +type RegisterImageOutput struct { + _ struct{} `type:"structure"` + + // The ID of the newly registered AMI. + ImageId *string `locationName:"imageId" type:"string"` +} + +// String returns the string representation +func (s RegisterImageOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RegisterImageOutput) GoString() string { + return s.String() +} + +// SetImageId sets the ImageId field's value. +func (s *RegisterImageOutput) SetImageId(v string) *RegisterImageOutput { + s.ImageId = &v + return s +} + +type RejectTransitGatewayVpcAttachmentInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the attachment. + // + // TransitGatewayAttachmentId is a required field + TransitGatewayAttachmentId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s RejectTransitGatewayVpcAttachmentInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RejectTransitGatewayVpcAttachmentInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RejectTransitGatewayVpcAttachmentInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RejectTransitGatewayVpcAttachmentInput"} + if s.TransitGatewayAttachmentId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayAttachmentId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *RejectTransitGatewayVpcAttachmentInput) SetDryRun(v bool) *RejectTransitGatewayVpcAttachmentInput { + s.DryRun = &v + return s +} + +// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value. +func (s *RejectTransitGatewayVpcAttachmentInput) SetTransitGatewayAttachmentId(v string) *RejectTransitGatewayVpcAttachmentInput { + s.TransitGatewayAttachmentId = &v + return s +} + +type RejectTransitGatewayVpcAttachmentOutput struct { + _ struct{} `type:"structure"` + + // Information about the attachment. + TransitGatewayVpcAttachment *TransitGatewayVpcAttachment `locationName:"transitGatewayVpcAttachment" type:"structure"` +} + +// String returns the string representation +func (s RejectTransitGatewayVpcAttachmentOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RejectTransitGatewayVpcAttachmentOutput) GoString() string { + return s.String() +} + +// SetTransitGatewayVpcAttachment sets the TransitGatewayVpcAttachment field's value. +func (s *RejectTransitGatewayVpcAttachmentOutput) SetTransitGatewayVpcAttachment(v *TransitGatewayVpcAttachment) *RejectTransitGatewayVpcAttachmentOutput { + s.TransitGatewayVpcAttachment = v + return s +} + +type RejectVpcEndpointConnectionsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the service. + // + // ServiceId is a required field + ServiceId *string `type:"string" required:"true"` + + // The IDs of one or more VPC endpoints. + // + // VpcEndpointIds is a required field + VpcEndpointIds []*string `locationName:"VpcEndpointId" locationNameList:"item" type:"list" required:"true"` +} + +// String returns the string representation +func (s RejectVpcEndpointConnectionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RejectVpcEndpointConnectionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RejectVpcEndpointConnectionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RejectVpcEndpointConnectionsInput"} + if s.ServiceId == nil { + invalidParams.Add(request.NewErrParamRequired("ServiceId")) + } + if s.VpcEndpointIds == nil { + invalidParams.Add(request.NewErrParamRequired("VpcEndpointIds")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *RejectVpcEndpointConnectionsInput) SetDryRun(v bool) *RejectVpcEndpointConnectionsInput { + s.DryRun = &v + return s +} + +// SetServiceId sets the ServiceId field's value. +func (s *RejectVpcEndpointConnectionsInput) SetServiceId(v string) *RejectVpcEndpointConnectionsInput { + s.ServiceId = &v + return s +} + +// SetVpcEndpointIds sets the VpcEndpointIds field's value. +func (s *RejectVpcEndpointConnectionsInput) SetVpcEndpointIds(v []*string) *RejectVpcEndpointConnectionsInput { + s.VpcEndpointIds = v + return s +} + +type RejectVpcEndpointConnectionsOutput struct { + _ struct{} `type:"structure"` + + // Information about the endpoints that were not rejected, if applicable. + Unsuccessful []*UnsuccessfulItem `locationName:"unsuccessful" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s RejectVpcEndpointConnectionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RejectVpcEndpointConnectionsOutput) GoString() string { + return s.String() +} + +// SetUnsuccessful sets the Unsuccessful field's value. +func (s *RejectVpcEndpointConnectionsOutput) SetUnsuccessful(v []*UnsuccessfulItem) *RejectVpcEndpointConnectionsOutput { + s.Unsuccessful = v + return s +} + +type RejectVpcPeeringConnectionInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the VPC peering connection. + // + // VpcPeeringConnectionId is a required field + VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string" required:"true"` +} + +// String returns the string representation +func (s RejectVpcPeeringConnectionInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RejectVpcPeeringConnectionInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RejectVpcPeeringConnectionInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RejectVpcPeeringConnectionInput"} + if s.VpcPeeringConnectionId == nil { + invalidParams.Add(request.NewErrParamRequired("VpcPeeringConnectionId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *RejectVpcPeeringConnectionInput) SetDryRun(v bool) *RejectVpcPeeringConnectionInput { + s.DryRun = &v + return s +} + +// SetVpcPeeringConnectionId sets the VpcPeeringConnectionId field's value. +func (s *RejectVpcPeeringConnectionInput) SetVpcPeeringConnectionId(v string) *RejectVpcPeeringConnectionInput { + s.VpcPeeringConnectionId = &v + return s +} + +type RejectVpcPeeringConnectionOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, it returns an error. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s RejectVpcPeeringConnectionOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RejectVpcPeeringConnectionOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *RejectVpcPeeringConnectionOutput) SetReturn(v bool) *RejectVpcPeeringConnectionOutput { + s.Return = &v + return s +} + +type ReleaseAddressInput struct { + _ struct{} `type:"structure"` + + // [EC2-VPC] The allocation ID. Required for EC2-VPC. + AllocationId *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // [EC2-Classic] The Elastic IP address. Required for EC2-Classic. + PublicIp *string `type:"string"` +} + +// String returns the string representation +func (s ReleaseAddressInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReleaseAddressInput) GoString() string { + return s.String() +} + +// SetAllocationId sets the AllocationId field's value. +func (s *ReleaseAddressInput) SetAllocationId(v string) *ReleaseAddressInput { + s.AllocationId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ReleaseAddressInput) SetDryRun(v bool) *ReleaseAddressInput { + s.DryRun = &v + return s +} + +// SetPublicIp sets the PublicIp field's value. +func (s *ReleaseAddressInput) SetPublicIp(v string) *ReleaseAddressInput { + s.PublicIp = &v + return s +} + +type ReleaseAddressOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s ReleaseAddressOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReleaseAddressOutput) GoString() string { + return s.String() +} + +type ReleaseHostsInput struct { + _ struct{} `type:"structure"` + + // The IDs of the Dedicated Hosts to release. + // + // HostIds is a required field + HostIds []*string `locationName:"hostId" locationNameList:"item" type:"list" required:"true"` +} + +// String returns the string representation +func (s ReleaseHostsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReleaseHostsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ReleaseHostsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ReleaseHostsInput"} + if s.HostIds == nil { + invalidParams.Add(request.NewErrParamRequired("HostIds")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetHostIds sets the HostIds field's value. +func (s *ReleaseHostsInput) SetHostIds(v []*string) *ReleaseHostsInput { + s.HostIds = v + return s +} + +type ReleaseHostsOutput struct { + _ struct{} `type:"structure"` + + // The IDs of the Dedicated Hosts that were successfully released. + Successful []*string `locationName:"successful" locationNameList:"item" type:"list"` + + // The IDs of the Dedicated Hosts that could not be released, including an error + // message. + Unsuccessful []*UnsuccessfulItem `locationName:"unsuccessful" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s ReleaseHostsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReleaseHostsOutput) GoString() string { + return s.String() +} + +// SetSuccessful sets the Successful field's value. +func (s *ReleaseHostsOutput) SetSuccessful(v []*string) *ReleaseHostsOutput { + s.Successful = v + return s +} + +// SetUnsuccessful sets the Unsuccessful field's value. +func (s *ReleaseHostsOutput) SetUnsuccessful(v []*UnsuccessfulItem) *ReleaseHostsOutput { + s.Unsuccessful = v + return s +} + +type ReplaceIamInstanceProfileAssociationInput struct { + _ struct{} `type:"structure"` + + // The ID of the existing IAM instance profile association. + // + // AssociationId is a required field + AssociationId *string `type:"string" required:"true"` + + // The IAM instance profile. + // + // IamInstanceProfile is a required field + IamInstanceProfile *IamInstanceProfileSpecification `type:"structure" required:"true"` +} + +// String returns the string representation +func (s ReplaceIamInstanceProfileAssociationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReplaceIamInstanceProfileAssociationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ReplaceIamInstanceProfileAssociationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ReplaceIamInstanceProfileAssociationInput"} + if s.AssociationId == nil { + invalidParams.Add(request.NewErrParamRequired("AssociationId")) + } + if s.IamInstanceProfile == nil { + invalidParams.Add(request.NewErrParamRequired("IamInstanceProfile")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAssociationId sets the AssociationId field's value. +func (s *ReplaceIamInstanceProfileAssociationInput) SetAssociationId(v string) *ReplaceIamInstanceProfileAssociationInput { + s.AssociationId = &v + return s +} + +// SetIamInstanceProfile sets the IamInstanceProfile field's value. +func (s *ReplaceIamInstanceProfileAssociationInput) SetIamInstanceProfile(v *IamInstanceProfileSpecification) *ReplaceIamInstanceProfileAssociationInput { + s.IamInstanceProfile = v + return s +} + +type ReplaceIamInstanceProfileAssociationOutput struct { + _ struct{} `type:"structure"` + + // Information about the IAM instance profile association. + IamInstanceProfileAssociation *IamInstanceProfileAssociation `locationName:"iamInstanceProfileAssociation" type:"structure"` +} + +// String returns the string representation +func (s ReplaceIamInstanceProfileAssociationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReplaceIamInstanceProfileAssociationOutput) GoString() string { + return s.String() +} + +// SetIamInstanceProfileAssociation sets the IamInstanceProfileAssociation field's value. +func (s *ReplaceIamInstanceProfileAssociationOutput) SetIamInstanceProfileAssociation(v *IamInstanceProfileAssociation) *ReplaceIamInstanceProfileAssociationOutput { + s.IamInstanceProfileAssociation = v + return s +} + +type ReplaceNetworkAclAssociationInput struct { + _ struct{} `type:"structure"` + + // The ID of the current association between the original network ACL and the + // subnet. + // + // AssociationId is a required field + AssociationId *string `locationName:"associationId" type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the new network ACL to associate with the subnet. + // + // NetworkAclId is a required field + NetworkAclId *string `locationName:"networkAclId" type:"string" required:"true"` +} + +// String returns the string representation +func (s ReplaceNetworkAclAssociationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReplaceNetworkAclAssociationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ReplaceNetworkAclAssociationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ReplaceNetworkAclAssociationInput"} + if s.AssociationId == nil { + invalidParams.Add(request.NewErrParamRequired("AssociationId")) + } + if s.NetworkAclId == nil { + invalidParams.Add(request.NewErrParamRequired("NetworkAclId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAssociationId sets the AssociationId field's value. +func (s *ReplaceNetworkAclAssociationInput) SetAssociationId(v string) *ReplaceNetworkAclAssociationInput { + s.AssociationId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ReplaceNetworkAclAssociationInput) SetDryRun(v bool) *ReplaceNetworkAclAssociationInput { + s.DryRun = &v + return s +} + +// SetNetworkAclId sets the NetworkAclId field's value. +func (s *ReplaceNetworkAclAssociationInput) SetNetworkAclId(v string) *ReplaceNetworkAclAssociationInput { + s.NetworkAclId = &v + return s +} + +type ReplaceNetworkAclAssociationOutput struct { + _ struct{} `type:"structure"` + + // The ID of the new association. + NewAssociationId *string `locationName:"newAssociationId" type:"string"` +} + +// String returns the string representation +func (s ReplaceNetworkAclAssociationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReplaceNetworkAclAssociationOutput) GoString() string { + return s.String() +} + +// SetNewAssociationId sets the NewAssociationId field's value. +func (s *ReplaceNetworkAclAssociationOutput) SetNewAssociationId(v string) *ReplaceNetworkAclAssociationOutput { + s.NewAssociationId = &v + return s +} + +type ReplaceNetworkAclEntryInput struct { + _ struct{} `type:"structure"` + + // The IPv4 network range to allow or deny, in CIDR notation (for example 172.16.0.0/24). + CidrBlock *string `locationName:"cidrBlock" type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // Indicates whether to replace the egress rule. + // + // Default: If no value is specified, we replace the ingress rule. + // + // Egress is a required field + Egress *bool `locationName:"egress" type:"boolean" required:"true"` + + // ICMP protocol: The ICMP or ICMPv6 type and code. Required if specifying protocol + // 1 (ICMP) or protocol 58 (ICMPv6) with an IPv6 CIDR block. + IcmpTypeCode *IcmpTypeCode `locationName:"Icmp" type:"structure"` + + // The IPv6 network range to allow or deny, in CIDR notation (for example 2001:bd8:1234:1a00::/64). + Ipv6CidrBlock *string `locationName:"ipv6CidrBlock" type:"string"` + + // The ID of the ACL. + // + // NetworkAclId is a required field + NetworkAclId *string `locationName:"networkAclId" type:"string" required:"true"` + + // TCP or UDP protocols: The range of ports the rule applies to. Required if + // specifying protocol 6 (TCP) or 17 (UDP). + PortRange *PortRange `locationName:"portRange" type:"structure"` + + // The protocol number. A value of "-1" means all protocols. If you specify + // "-1" or a protocol number other than "6" (TCP), "17" (UDP), or "1" (ICMP), + // traffic on all ports is allowed, regardless of any ports or ICMP types or + // codes that you specify. If you specify protocol "58" (ICMPv6) and specify + // an IPv4 CIDR block, traffic for all ICMP types and codes allowed, regardless + // of any that you specify. If you specify protocol "58" (ICMPv6) and specify + // an IPv6 CIDR block, you must specify an ICMP type and code. + // + // Protocol is a required field + Protocol *string `locationName:"protocol" type:"string" required:"true"` + + // Indicates whether to allow or deny the traffic that matches the rule. + // + // RuleAction is a required field + RuleAction *string `locationName:"ruleAction" type:"string" required:"true" enum:"RuleAction"` + + // The rule number of the entry to replace. + // + // RuleNumber is a required field + RuleNumber *int64 `locationName:"ruleNumber" type:"integer" required:"true"` +} + +// String returns the string representation +func (s ReplaceNetworkAclEntryInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReplaceNetworkAclEntryInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ReplaceNetworkAclEntryInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ReplaceNetworkAclEntryInput"} + if s.Egress == nil { + invalidParams.Add(request.NewErrParamRequired("Egress")) + } + if s.NetworkAclId == nil { + invalidParams.Add(request.NewErrParamRequired("NetworkAclId")) + } + if s.Protocol == nil { + invalidParams.Add(request.NewErrParamRequired("Protocol")) + } + if s.RuleAction == nil { + invalidParams.Add(request.NewErrParamRequired("RuleAction")) + } + if s.RuleNumber == nil { + invalidParams.Add(request.NewErrParamRequired("RuleNumber")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCidrBlock sets the CidrBlock field's value. +func (s *ReplaceNetworkAclEntryInput) SetCidrBlock(v string) *ReplaceNetworkAclEntryInput { + s.CidrBlock = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ReplaceNetworkAclEntryInput) SetDryRun(v bool) *ReplaceNetworkAclEntryInput { + s.DryRun = &v + return s +} + +// SetEgress sets the Egress field's value. +func (s *ReplaceNetworkAclEntryInput) SetEgress(v bool) *ReplaceNetworkAclEntryInput { + s.Egress = &v + return s +} + +// SetIcmpTypeCode sets the IcmpTypeCode field's value. +func (s *ReplaceNetworkAclEntryInput) SetIcmpTypeCode(v *IcmpTypeCode) *ReplaceNetworkAclEntryInput { + s.IcmpTypeCode = v + return s +} + +// SetIpv6CidrBlock sets the Ipv6CidrBlock field's value. +func (s *ReplaceNetworkAclEntryInput) SetIpv6CidrBlock(v string) *ReplaceNetworkAclEntryInput { + s.Ipv6CidrBlock = &v + return s +} + +// SetNetworkAclId sets the NetworkAclId field's value. +func (s *ReplaceNetworkAclEntryInput) SetNetworkAclId(v string) *ReplaceNetworkAclEntryInput { + s.NetworkAclId = &v + return s +} + +// SetPortRange sets the PortRange field's value. +func (s *ReplaceNetworkAclEntryInput) SetPortRange(v *PortRange) *ReplaceNetworkAclEntryInput { + s.PortRange = v + return s +} + +// SetProtocol sets the Protocol field's value. +func (s *ReplaceNetworkAclEntryInput) SetProtocol(v string) *ReplaceNetworkAclEntryInput { + s.Protocol = &v + return s +} + +// SetRuleAction sets the RuleAction field's value. +func (s *ReplaceNetworkAclEntryInput) SetRuleAction(v string) *ReplaceNetworkAclEntryInput { + s.RuleAction = &v + return s +} + +// SetRuleNumber sets the RuleNumber field's value. +func (s *ReplaceNetworkAclEntryInput) SetRuleNumber(v int64) *ReplaceNetworkAclEntryInput { + s.RuleNumber = &v + return s +} + +type ReplaceNetworkAclEntryOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s ReplaceNetworkAclEntryOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReplaceNetworkAclEntryOutput) GoString() string { + return s.String() +} + +type ReplaceRouteInput struct { + _ struct{} `type:"structure"` + + // The IPv4 CIDR address block used for the destination match. The value that + // you provide must match the CIDR of an existing route in the table. + DestinationCidrBlock *string `locationName:"destinationCidrBlock" type:"string"` + + // The IPv6 CIDR address block used for the destination match. The value that + // you provide must match the CIDR of an existing route in the table. + DestinationIpv6CidrBlock *string `locationName:"destinationIpv6CidrBlock" type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // [IPv6 traffic only] The ID of an egress-only internet gateway. + EgressOnlyInternetGatewayId *string `locationName:"egressOnlyInternetGatewayId" type:"string"` + + // The ID of an internet gateway or virtual private gateway. + GatewayId *string `locationName:"gatewayId" type:"string"` + + // The ID of a NAT instance in your VPC. + InstanceId *string `locationName:"instanceId" type:"string"` + + // [IPv4 traffic only] The ID of a NAT gateway. + NatGatewayId *string `locationName:"natGatewayId" type:"string"` + + // The ID of a network interface. + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` + + // The ID of the route table. + // + // RouteTableId is a required field + RouteTableId *string `locationName:"routeTableId" type:"string" required:"true"` + + // The ID of a transit gateway. + TransitGatewayId *string `type:"string"` + + // The ID of a VPC peering connection. + VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string"` +} + +// String returns the string representation +func (s ReplaceRouteInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReplaceRouteInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ReplaceRouteInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ReplaceRouteInput"} + if s.RouteTableId == nil { + invalidParams.Add(request.NewErrParamRequired("RouteTableId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDestinationCidrBlock sets the DestinationCidrBlock field's value. +func (s *ReplaceRouteInput) SetDestinationCidrBlock(v string) *ReplaceRouteInput { + s.DestinationCidrBlock = &v + return s +} + +// SetDestinationIpv6CidrBlock sets the DestinationIpv6CidrBlock field's value. +func (s *ReplaceRouteInput) SetDestinationIpv6CidrBlock(v string) *ReplaceRouteInput { + s.DestinationIpv6CidrBlock = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ReplaceRouteInput) SetDryRun(v bool) *ReplaceRouteInput { + s.DryRun = &v + return s +} + +// SetEgressOnlyInternetGatewayId sets the EgressOnlyInternetGatewayId field's value. +func (s *ReplaceRouteInput) SetEgressOnlyInternetGatewayId(v string) *ReplaceRouteInput { + s.EgressOnlyInternetGatewayId = &v + return s +} + +// SetGatewayId sets the GatewayId field's value. +func (s *ReplaceRouteInput) SetGatewayId(v string) *ReplaceRouteInput { + s.GatewayId = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *ReplaceRouteInput) SetInstanceId(v string) *ReplaceRouteInput { + s.InstanceId = &v + return s +} + +// SetNatGatewayId sets the NatGatewayId field's value. +func (s *ReplaceRouteInput) SetNatGatewayId(v string) *ReplaceRouteInput { + s.NatGatewayId = &v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *ReplaceRouteInput) SetNetworkInterfaceId(v string) *ReplaceRouteInput { + s.NetworkInterfaceId = &v + return s +} + +// SetRouteTableId sets the RouteTableId field's value. +func (s *ReplaceRouteInput) SetRouteTableId(v string) *ReplaceRouteInput { + s.RouteTableId = &v + return s +} + +// SetTransitGatewayId sets the TransitGatewayId field's value. +func (s *ReplaceRouteInput) SetTransitGatewayId(v string) *ReplaceRouteInput { + s.TransitGatewayId = &v + return s +} + +// SetVpcPeeringConnectionId sets the VpcPeeringConnectionId field's value. +func (s *ReplaceRouteInput) SetVpcPeeringConnectionId(v string) *ReplaceRouteInput { + s.VpcPeeringConnectionId = &v + return s +} + +type ReplaceRouteOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s ReplaceRouteOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReplaceRouteOutput) GoString() string { + return s.String() +} + +type ReplaceRouteTableAssociationInput struct { + _ struct{} `type:"structure"` + + // The association ID. + // + // AssociationId is a required field + AssociationId *string `locationName:"associationId" type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the new route table to associate with the subnet. + // + // RouteTableId is a required field + RouteTableId *string `locationName:"routeTableId" type:"string" required:"true"` +} + +// String returns the string representation +func (s ReplaceRouteTableAssociationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReplaceRouteTableAssociationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ReplaceRouteTableAssociationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ReplaceRouteTableAssociationInput"} + if s.AssociationId == nil { + invalidParams.Add(request.NewErrParamRequired("AssociationId")) + } + if s.RouteTableId == nil { + invalidParams.Add(request.NewErrParamRequired("RouteTableId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAssociationId sets the AssociationId field's value. +func (s *ReplaceRouteTableAssociationInput) SetAssociationId(v string) *ReplaceRouteTableAssociationInput { + s.AssociationId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ReplaceRouteTableAssociationInput) SetDryRun(v bool) *ReplaceRouteTableAssociationInput { + s.DryRun = &v + return s +} + +// SetRouteTableId sets the RouteTableId field's value. +func (s *ReplaceRouteTableAssociationInput) SetRouteTableId(v string) *ReplaceRouteTableAssociationInput { + s.RouteTableId = &v + return s +} + +type ReplaceRouteTableAssociationOutput struct { + _ struct{} `type:"structure"` + + // The ID of the new association. + NewAssociationId *string `locationName:"newAssociationId" type:"string"` +} + +// String returns the string representation +func (s ReplaceRouteTableAssociationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReplaceRouteTableAssociationOutput) GoString() string { + return s.String() +} + +// SetNewAssociationId sets the NewAssociationId field's value. +func (s *ReplaceRouteTableAssociationOutput) SetNewAssociationId(v string) *ReplaceRouteTableAssociationOutput { + s.NewAssociationId = &v + return s +} + +type ReplaceTransitGatewayRouteInput struct { + _ struct{} `type:"structure"` + + // Indicates whether traffic matching this route is to be dropped. + Blackhole *bool `type:"boolean"` + + // The CIDR range used for the destination match. Routing decisions are based + // on the most specific match. + // + // DestinationCidrBlock is a required field + DestinationCidrBlock *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the attachment. + TransitGatewayAttachmentId *string `type:"string"` + + // The ID of the route table. + // + // TransitGatewayRouteTableId is a required field + TransitGatewayRouteTableId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s ReplaceTransitGatewayRouteInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReplaceTransitGatewayRouteInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ReplaceTransitGatewayRouteInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ReplaceTransitGatewayRouteInput"} + if s.DestinationCidrBlock == nil { + invalidParams.Add(request.NewErrParamRequired("DestinationCidrBlock")) + } + if s.TransitGatewayRouteTableId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayRouteTableId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBlackhole sets the Blackhole field's value. +func (s *ReplaceTransitGatewayRouteInput) SetBlackhole(v bool) *ReplaceTransitGatewayRouteInput { + s.Blackhole = &v + return s +} + +// SetDestinationCidrBlock sets the DestinationCidrBlock field's value. +func (s *ReplaceTransitGatewayRouteInput) SetDestinationCidrBlock(v string) *ReplaceTransitGatewayRouteInput { + s.DestinationCidrBlock = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ReplaceTransitGatewayRouteInput) SetDryRun(v bool) *ReplaceTransitGatewayRouteInput { + s.DryRun = &v + return s +} + +// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value. +func (s *ReplaceTransitGatewayRouteInput) SetTransitGatewayAttachmentId(v string) *ReplaceTransitGatewayRouteInput { + s.TransitGatewayAttachmentId = &v + return s +} + +// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value. +func (s *ReplaceTransitGatewayRouteInput) SetTransitGatewayRouteTableId(v string) *ReplaceTransitGatewayRouteInput { + s.TransitGatewayRouteTableId = &v + return s +} + +type ReplaceTransitGatewayRouteOutput struct { + _ struct{} `type:"structure"` + + // Information about the modified route. + Route *TransitGatewayRoute `locationName:"route" type:"structure"` +} + +// String returns the string representation +func (s ReplaceTransitGatewayRouteOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReplaceTransitGatewayRouteOutput) GoString() string { + return s.String() +} + +// SetRoute sets the Route field's value. +func (s *ReplaceTransitGatewayRouteOutput) SetRoute(v *TransitGatewayRoute) *ReplaceTransitGatewayRouteOutput { + s.Route = v + return s +} + +type ReportInstanceStatusInput struct { + _ struct{} `type:"structure"` + + // Descriptive text about the health state of your instance. + Description *string `locationName:"description" type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The time at which the reported instance health state ended. + EndTime *time.Time `locationName:"endTime" type:"timestamp"` + + // The instances. + // + // Instances is a required field + Instances []*string `locationName:"instanceId" locationNameList:"InstanceId" type:"list" required:"true"` + + // The reason codes that describe the health state of your instance. + // + // * instance-stuck-in-state: My instance is stuck in a state. + // + // * unresponsive: My instance is unresponsive. + // + // * not-accepting-credentials: My instance is not accepting my credentials. + // + // * password-not-available: A password is not available for my instance. + // + // * performance-network: My instance is experiencing performance problems + // that I believe are network related. + // + // * performance-instance-store: My instance is experiencing performance + // problems that I believe are related to the instance stores. + // + // * performance-ebs-volume: My instance is experiencing performance problems + // that I believe are related to an EBS volume. + // + // * performance-other: My instance is experiencing performance problems. + // + // * other: [explain using the description parameter] + // + // ReasonCodes is a required field + ReasonCodes []*string `locationName:"reasonCode" locationNameList:"item" type:"list" required:"true"` + + // The time at which the reported instance health state began. + StartTime *time.Time `locationName:"startTime" type:"timestamp"` + + // The status of all instances listed. + // + // Status is a required field + Status *string `locationName:"status" type:"string" required:"true" enum:"ReportStatusType"` +} + +// String returns the string representation +func (s ReportInstanceStatusInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReportInstanceStatusInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ReportInstanceStatusInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ReportInstanceStatusInput"} + if s.Instances == nil { + invalidParams.Add(request.NewErrParamRequired("Instances")) + } + if s.ReasonCodes == nil { + invalidParams.Add(request.NewErrParamRequired("ReasonCodes")) + } + if s.Status == nil { + invalidParams.Add(request.NewErrParamRequired("Status")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDescription sets the Description field's value. +func (s *ReportInstanceStatusInput) SetDescription(v string) *ReportInstanceStatusInput { + s.Description = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ReportInstanceStatusInput) SetDryRun(v bool) *ReportInstanceStatusInput { + s.DryRun = &v + return s +} + +// SetEndTime sets the EndTime field's value. +func (s *ReportInstanceStatusInput) SetEndTime(v time.Time) *ReportInstanceStatusInput { + s.EndTime = &v + return s +} + +// SetInstances sets the Instances field's value. +func (s *ReportInstanceStatusInput) SetInstances(v []*string) *ReportInstanceStatusInput { + s.Instances = v + return s +} + +// SetReasonCodes sets the ReasonCodes field's value. +func (s *ReportInstanceStatusInput) SetReasonCodes(v []*string) *ReportInstanceStatusInput { + s.ReasonCodes = v + return s +} + +// SetStartTime sets the StartTime field's value. +func (s *ReportInstanceStatusInput) SetStartTime(v time.Time) *ReportInstanceStatusInput { + s.StartTime = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *ReportInstanceStatusInput) SetStatus(v string) *ReportInstanceStatusInput { + s.Status = &v + return s +} + +type ReportInstanceStatusOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s ReportInstanceStatusOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReportInstanceStatusOutput) GoString() string { + return s.String() +} + +// The information to include in the launch template. +type RequestLaunchTemplateData struct { + _ struct{} `type:"structure"` + + // The block device mapping. + // + // Supplying both a snapshot ID and an encryption value as arguments for block-device + // mapping results in an error. This is because only blank volumes can be encrypted + // on start, and these are not created from a snapshot. If a snapshot is the + // basis for the volume, it contains data by definition and its encryption status + // cannot be changed using this action. + BlockDeviceMappings []*LaunchTemplateBlockDeviceMappingRequest `locationName:"BlockDeviceMapping" locationNameList:"BlockDeviceMapping" type:"list"` + + // The Capacity Reservation targeting option. If you do not specify this parameter, + // the instance's Capacity Reservation preference defaults to open, which enables + // it to run in any open Capacity Reservation that has matching attributes (instance + // type, platform, Availability Zone). + CapacityReservationSpecification *LaunchTemplateCapacityReservationSpecificationRequest `type:"structure"` + + // The CPU options for the instance. For more information, see Optimizing CPU + // Options (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html) + // in the Amazon Elastic Compute Cloud User Guide. + CpuOptions *LaunchTemplateCpuOptionsRequest `type:"structure"` + + // The credit option for CPU usage of the instance. Valid for T2 or T3 instances + // only. + CreditSpecification *CreditSpecificationRequest `type:"structure"` + + // If you set this parameter to true, you can't terminate the instance using + // the Amazon EC2 console, CLI, or API; otherwise, you can. To change this attribute + // after launch, use ModifyInstanceAttribute (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceAttribute.html). + // Alternatively, if you set InstanceInitiatedShutdownBehavior to terminate, + // you can terminate the instance by running the shutdown command from the instance. + DisableApiTermination *bool `type:"boolean"` + + // Indicates whether the instance is optimized for Amazon EBS I/O. This optimization + // provides dedicated throughput to Amazon EBS and an optimized configuration + // stack to provide optimal Amazon EBS I/O performance. This optimization isn't + // available with all instance types. Additional usage charges apply when using + // an EBS-optimized instance. + EbsOptimized *bool `type:"boolean"` + + // An elastic GPU to associate with the instance. + ElasticGpuSpecifications []*ElasticGpuSpecification `locationName:"ElasticGpuSpecification" locationNameList:"ElasticGpuSpecification" type:"list"` + + // The elastic inference accelerator for the instance. + ElasticInferenceAccelerators []*LaunchTemplateElasticInferenceAccelerator `locationName:"ElasticInferenceAccelerator" locationNameList:"item" type:"list"` + + // Indicates whether an instance is enabled for hibernation. This parameter + // is valid only if the instance meets the hibernation prerequisites (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites). + // For more information, see Hibernate Your Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html) + // in the Amazon Elastic Compute Cloud User Guide. + HibernationOptions *LaunchTemplateHibernationOptionsRequest `type:"structure"` + + // The IAM instance profile. + IamInstanceProfile *LaunchTemplateIamInstanceProfileSpecificationRequest `type:"structure"` + + // The ID of the AMI. + ImageId *string `type:"string"` + + // Indicates whether an instance stops or terminates when you initiate shutdown + // from the instance (using the operating system command for system shutdown). + // + // Default: stop + InstanceInitiatedShutdownBehavior *string `type:"string" enum:"ShutdownBehavior"` + + // The market (purchasing) option for the instances. + InstanceMarketOptions *LaunchTemplateInstanceMarketOptionsRequest `type:"structure"` + + // The instance type. For more information, see Instance Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) + // in the Amazon Elastic Compute Cloud User Guide. + InstanceType *string `type:"string" enum:"InstanceType"` + + // The ID of the kernel. + // + // We recommend that you use PV-GRUB instead of kernels and RAM disks. For more + // information, see User Provided Kernels (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html) + // in the Amazon Elastic Compute Cloud User Guide. + KernelId *string `type:"string"` + + // The name of the key pair. You can create a key pair using CreateKeyPair (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateKeyPair.html) + // or ImportKeyPair (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ImportKeyPair.html). + // + // If you do not specify a key pair, you can't connect to the instance unless + // you choose an AMI that is configured to allow users another way to log in. + KeyName *string `type:"string"` + + // The license configurations. + LicenseSpecifications []*LaunchTemplateLicenseConfigurationRequest `locationName:"LicenseSpecification" locationNameList:"item" type:"list"` + + // The monitoring for the instance. + Monitoring *LaunchTemplatesMonitoringRequest `type:"structure"` + + // One or more network interfaces. If you specify a network interface, you must + // specify any security groups and subnets as part of the network interface. + NetworkInterfaces []*LaunchTemplateInstanceNetworkInterfaceSpecificationRequest `locationName:"NetworkInterface" locationNameList:"InstanceNetworkInterfaceSpecification" type:"list"` + + // The placement for the instance. + Placement *LaunchTemplatePlacementRequest `type:"structure"` + + // The ID of the RAM disk. + // + // We recommend that you use PV-GRUB instead of kernels and RAM disks. For more + // information, see User Provided Kernels (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html) + // in the Amazon Elastic Compute Cloud User Guide. + RamDiskId *string `type:"string"` + + // One or more security group IDs. You can create a security group using CreateSecurityGroup + // (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateSecurityGroup.html). + // You cannot specify both a security group ID and security name in the same + // request. + SecurityGroupIds []*string `locationName:"SecurityGroupId" locationNameList:"SecurityGroupId" type:"list"` + + // [EC2-Classic, default VPC] One or more security group names. For a nondefault + // VPC, you must use security group IDs instead. You cannot specify both a security + // group ID and security name in the same request. + SecurityGroups []*string `locationName:"SecurityGroup" locationNameList:"SecurityGroup" type:"list"` + + // The tags to apply to the resources during launch. You can only tag instances + // and volumes on launch. The specified tags are applied to all instances or + // volumes that are created during launch. To tag a resource after it has been + // created, see CreateTags (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html). + TagSpecifications []*LaunchTemplateTagSpecificationRequest `locationName:"TagSpecification" locationNameList:"LaunchTemplateTagSpecificationRequest" type:"list"` + + // The Base64-encoded user data to make available to the instance. For more + // information, see Running Commands on Your Linux Instance at Launch (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) + // (Linux) and Adding User Data (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html#instancedata-add-user-data) + // (Windows). + UserData *string `type:"string"` +} + +// String returns the string representation +func (s RequestLaunchTemplateData) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RequestLaunchTemplateData) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RequestLaunchTemplateData) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RequestLaunchTemplateData"} + if s.CreditSpecification != nil { + if err := s.CreditSpecification.Validate(); err != nil { + invalidParams.AddNested("CreditSpecification", err.(request.ErrInvalidParams)) + } + } + if s.ElasticGpuSpecifications != nil { + for i, v := range s.ElasticGpuSpecifications { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ElasticGpuSpecifications", i), err.(request.ErrInvalidParams)) + } + } + } + if s.ElasticInferenceAccelerators != nil { + for i, v := range s.ElasticInferenceAccelerators { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ElasticInferenceAccelerators", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBlockDeviceMappings sets the BlockDeviceMappings field's value. +func (s *RequestLaunchTemplateData) SetBlockDeviceMappings(v []*LaunchTemplateBlockDeviceMappingRequest) *RequestLaunchTemplateData { + s.BlockDeviceMappings = v + return s +} + +// SetCapacityReservationSpecification sets the CapacityReservationSpecification field's value. +func (s *RequestLaunchTemplateData) SetCapacityReservationSpecification(v *LaunchTemplateCapacityReservationSpecificationRequest) *RequestLaunchTemplateData { + s.CapacityReservationSpecification = v + return s +} + +// SetCpuOptions sets the CpuOptions field's value. +func (s *RequestLaunchTemplateData) SetCpuOptions(v *LaunchTemplateCpuOptionsRequest) *RequestLaunchTemplateData { + s.CpuOptions = v + return s +} + +// SetCreditSpecification sets the CreditSpecification field's value. +func (s *RequestLaunchTemplateData) SetCreditSpecification(v *CreditSpecificationRequest) *RequestLaunchTemplateData { + s.CreditSpecification = v + return s +} + +// SetDisableApiTermination sets the DisableApiTermination field's value. +func (s *RequestLaunchTemplateData) SetDisableApiTermination(v bool) *RequestLaunchTemplateData { + s.DisableApiTermination = &v + return s +} + +// SetEbsOptimized sets the EbsOptimized field's value. +func (s *RequestLaunchTemplateData) SetEbsOptimized(v bool) *RequestLaunchTemplateData { + s.EbsOptimized = &v + return s +} + +// SetElasticGpuSpecifications sets the ElasticGpuSpecifications field's value. +func (s *RequestLaunchTemplateData) SetElasticGpuSpecifications(v []*ElasticGpuSpecification) *RequestLaunchTemplateData { + s.ElasticGpuSpecifications = v + return s +} + +// SetElasticInferenceAccelerators sets the ElasticInferenceAccelerators field's value. +func (s *RequestLaunchTemplateData) SetElasticInferenceAccelerators(v []*LaunchTemplateElasticInferenceAccelerator) *RequestLaunchTemplateData { + s.ElasticInferenceAccelerators = v + return s +} + +// SetHibernationOptions sets the HibernationOptions field's value. +func (s *RequestLaunchTemplateData) SetHibernationOptions(v *LaunchTemplateHibernationOptionsRequest) *RequestLaunchTemplateData { + s.HibernationOptions = v + return s +} + +// SetIamInstanceProfile sets the IamInstanceProfile field's value. +func (s *RequestLaunchTemplateData) SetIamInstanceProfile(v *LaunchTemplateIamInstanceProfileSpecificationRequest) *RequestLaunchTemplateData { + s.IamInstanceProfile = v + return s +} + +// SetImageId sets the ImageId field's value. +func (s *RequestLaunchTemplateData) SetImageId(v string) *RequestLaunchTemplateData { + s.ImageId = &v + return s +} + +// SetInstanceInitiatedShutdownBehavior sets the InstanceInitiatedShutdownBehavior field's value. +func (s *RequestLaunchTemplateData) SetInstanceInitiatedShutdownBehavior(v string) *RequestLaunchTemplateData { + s.InstanceInitiatedShutdownBehavior = &v + return s +} + +// SetInstanceMarketOptions sets the InstanceMarketOptions field's value. +func (s *RequestLaunchTemplateData) SetInstanceMarketOptions(v *LaunchTemplateInstanceMarketOptionsRequest) *RequestLaunchTemplateData { + s.InstanceMarketOptions = v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *RequestLaunchTemplateData) SetInstanceType(v string) *RequestLaunchTemplateData { + s.InstanceType = &v + return s +} + +// SetKernelId sets the KernelId field's value. +func (s *RequestLaunchTemplateData) SetKernelId(v string) *RequestLaunchTemplateData { + s.KernelId = &v + return s +} + +// SetKeyName sets the KeyName field's value. +func (s *RequestLaunchTemplateData) SetKeyName(v string) *RequestLaunchTemplateData { + s.KeyName = &v + return s +} + +// SetLicenseSpecifications sets the LicenseSpecifications field's value. +func (s *RequestLaunchTemplateData) SetLicenseSpecifications(v []*LaunchTemplateLicenseConfigurationRequest) *RequestLaunchTemplateData { + s.LicenseSpecifications = v + return s +} + +// SetMonitoring sets the Monitoring field's value. +func (s *RequestLaunchTemplateData) SetMonitoring(v *LaunchTemplatesMonitoringRequest) *RequestLaunchTemplateData { + s.Monitoring = v + return s +} + +// SetNetworkInterfaces sets the NetworkInterfaces field's value. +func (s *RequestLaunchTemplateData) SetNetworkInterfaces(v []*LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) *RequestLaunchTemplateData { + s.NetworkInterfaces = v + return s +} + +// SetPlacement sets the Placement field's value. +func (s *RequestLaunchTemplateData) SetPlacement(v *LaunchTemplatePlacementRequest) *RequestLaunchTemplateData { + s.Placement = v + return s +} + +// SetRamDiskId sets the RamDiskId field's value. +func (s *RequestLaunchTemplateData) SetRamDiskId(v string) *RequestLaunchTemplateData { + s.RamDiskId = &v + return s +} + +// SetSecurityGroupIds sets the SecurityGroupIds field's value. +func (s *RequestLaunchTemplateData) SetSecurityGroupIds(v []*string) *RequestLaunchTemplateData { + s.SecurityGroupIds = v + return s +} + +// SetSecurityGroups sets the SecurityGroups field's value. +func (s *RequestLaunchTemplateData) SetSecurityGroups(v []*string) *RequestLaunchTemplateData { + s.SecurityGroups = v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *RequestLaunchTemplateData) SetTagSpecifications(v []*LaunchTemplateTagSpecificationRequest) *RequestLaunchTemplateData { + s.TagSpecifications = v + return s +} + +// SetUserData sets the UserData field's value. +func (s *RequestLaunchTemplateData) SetUserData(v string) *RequestLaunchTemplateData { + s.UserData = &v + return s +} + +// Contains the parameters for RequestSpotFleet. +type RequestSpotFleetInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The configuration for the Spot Fleet request. + // + // SpotFleetRequestConfig is a required field + SpotFleetRequestConfig *SpotFleetRequestConfigData `locationName:"spotFleetRequestConfig" type:"structure" required:"true"` +} + +// String returns the string representation +func (s RequestSpotFleetInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RequestSpotFleetInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RequestSpotFleetInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RequestSpotFleetInput"} + if s.SpotFleetRequestConfig == nil { + invalidParams.Add(request.NewErrParamRequired("SpotFleetRequestConfig")) + } + if s.SpotFleetRequestConfig != nil { + if err := s.SpotFleetRequestConfig.Validate(); err != nil { + invalidParams.AddNested("SpotFleetRequestConfig", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *RequestSpotFleetInput) SetDryRun(v bool) *RequestSpotFleetInput { + s.DryRun = &v + return s +} + +// SetSpotFleetRequestConfig sets the SpotFleetRequestConfig field's value. +func (s *RequestSpotFleetInput) SetSpotFleetRequestConfig(v *SpotFleetRequestConfigData) *RequestSpotFleetInput { + s.SpotFleetRequestConfig = v + return s +} + +// Contains the output of RequestSpotFleet. +type RequestSpotFleetOutput struct { + _ struct{} `type:"structure"` + + // The ID of the Spot Fleet request. + SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string"` +} + +// String returns the string representation +func (s RequestSpotFleetOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RequestSpotFleetOutput) GoString() string { + return s.String() +} + +// SetSpotFleetRequestId sets the SpotFleetRequestId field's value. +func (s *RequestSpotFleetOutput) SetSpotFleetRequestId(v string) *RequestSpotFleetOutput { + s.SpotFleetRequestId = &v + return s +} + +// Contains the parameters for RequestSpotInstances. +type RequestSpotInstancesInput struct { + _ struct{} `type:"structure"` + + // The user-specified name for a logical grouping of requests. + // + // When you specify an Availability Zone group in a Spot Instance request, all + // Spot Instances in the request are launched in the same Availability Zone. + // Instance proximity is maintained with this parameter, but the choice of Availability + // Zone is not. The group applies only to requests for Spot Instances of the + // same instance type. Any additional Spot Instance requests that are specified + // with the same Availability Zone group name are launched in that same Availability + // Zone, as long as at least one instance from the group is still active. + // + // If there is no active instance running in the Availability Zone group that + // you specify for a new Spot Instance request (all instances are terminated, + // the request is expired, or the maximum price you specified falls below current + // Spot price), then Amazon EC2 launches the instance in any Availability Zone + // where the constraint can be met. Consequently, the subsequent set of Spot + // Instances could be placed in a different zone from the original request, + // even if you specified the same Availability Zone group. + // + // Default: Instances are launched in any available Availability Zone. + AvailabilityZoneGroup *string `locationName:"availabilityZoneGroup" type:"string"` + + // The required duration for the Spot Instances (also known as Spot blocks), + // in minutes. This value must be a multiple of 60 (60, 120, 180, 240, 300, + // or 360). + // + // The duration period starts as soon as your Spot Instance receives its instance + // ID. At the end of the duration period, Amazon EC2 marks the Spot Instance + // for termination and provides a Spot Instance termination notice, which gives + // the instance a two-minute warning before it terminates. + // + // You can't specify an Availability Zone group or a launch group if you specify + // a duration. + BlockDurationMinutes *int64 `locationName:"blockDurationMinutes" type:"integer"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html) + // in the Amazon EC2 User Guide for Linux Instances. + ClientToken *string `locationName:"clientToken" type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The maximum number of Spot Instances to launch. + // + // Default: 1 + InstanceCount *int64 `locationName:"instanceCount" type:"integer"` + + // The behavior when a Spot Instance is interrupted. The default is terminate. + InstanceInterruptionBehavior *string `type:"string" enum:"InstanceInterruptionBehavior"` + + // The instance launch group. Launch groups are Spot Instances that launch together + // and terminate together. + // + // Default: Instances are launched and terminated individually + LaunchGroup *string `locationName:"launchGroup" type:"string"` + + // The launch specification. + LaunchSpecification *RequestSpotLaunchSpecification `type:"structure"` + + // The maximum price per hour that you are willing to pay for a Spot Instance. + // The default is the On-Demand price. + SpotPrice *string `locationName:"spotPrice" type:"string"` + + // The Spot Instance request type. + // + // Default: one-time + Type *string `locationName:"type" type:"string" enum:"SpotInstanceType"` + + // The start date of the request. If this is a one-time request, the request + // becomes active at this date and time and remains active until all instances + // launch, the request expires, or the request is canceled. If the request is + // persistent, the request becomes active at this date and time and remains + // active until it expires or is canceled. + // + // The specified start date and time cannot be equal to the current date and + // time. You must specify a start date and time that occurs after the current + // date and time. + ValidFrom *time.Time `locationName:"validFrom" type:"timestamp"` + + // The end date of the request. If this is a one-time request, the request remains + // active until all instances launch, the request is canceled, or this date + // is reached. If the request is persistent, it remains active until it is canceled + // or this date is reached. The default end date is 7 days from the current + // date. + ValidUntil *time.Time `locationName:"validUntil" type:"timestamp"` +} + +// String returns the string representation +func (s RequestSpotInstancesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RequestSpotInstancesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RequestSpotInstancesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RequestSpotInstancesInput"} + if s.LaunchSpecification != nil { + if err := s.LaunchSpecification.Validate(); err != nil { + invalidParams.AddNested("LaunchSpecification", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAvailabilityZoneGroup sets the AvailabilityZoneGroup field's value. +func (s *RequestSpotInstancesInput) SetAvailabilityZoneGroup(v string) *RequestSpotInstancesInput { + s.AvailabilityZoneGroup = &v + return s +} + +// SetBlockDurationMinutes sets the BlockDurationMinutes field's value. +func (s *RequestSpotInstancesInput) SetBlockDurationMinutes(v int64) *RequestSpotInstancesInput { + s.BlockDurationMinutes = &v + return s +} + +// SetClientToken sets the ClientToken field's value. +func (s *RequestSpotInstancesInput) SetClientToken(v string) *RequestSpotInstancesInput { + s.ClientToken = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *RequestSpotInstancesInput) SetDryRun(v bool) *RequestSpotInstancesInput { + s.DryRun = &v + return s +} + +// SetInstanceCount sets the InstanceCount field's value. +func (s *RequestSpotInstancesInput) SetInstanceCount(v int64) *RequestSpotInstancesInput { + s.InstanceCount = &v + return s +} + +// SetInstanceInterruptionBehavior sets the InstanceInterruptionBehavior field's value. +func (s *RequestSpotInstancesInput) SetInstanceInterruptionBehavior(v string) *RequestSpotInstancesInput { + s.InstanceInterruptionBehavior = &v + return s +} + +// SetLaunchGroup sets the LaunchGroup field's value. +func (s *RequestSpotInstancesInput) SetLaunchGroup(v string) *RequestSpotInstancesInput { + s.LaunchGroup = &v + return s +} + +// SetLaunchSpecification sets the LaunchSpecification field's value. +func (s *RequestSpotInstancesInput) SetLaunchSpecification(v *RequestSpotLaunchSpecification) *RequestSpotInstancesInput { + s.LaunchSpecification = v + return s +} + +// SetSpotPrice sets the SpotPrice field's value. +func (s *RequestSpotInstancesInput) SetSpotPrice(v string) *RequestSpotInstancesInput { + s.SpotPrice = &v + return s +} + +// SetType sets the Type field's value. +func (s *RequestSpotInstancesInput) SetType(v string) *RequestSpotInstancesInput { + s.Type = &v + return s +} + +// SetValidFrom sets the ValidFrom field's value. +func (s *RequestSpotInstancesInput) SetValidFrom(v time.Time) *RequestSpotInstancesInput { + s.ValidFrom = &v + return s +} + +// SetValidUntil sets the ValidUntil field's value. +func (s *RequestSpotInstancesInput) SetValidUntil(v time.Time) *RequestSpotInstancesInput { + s.ValidUntil = &v + return s +} + +// Contains the output of RequestSpotInstances. +type RequestSpotInstancesOutput struct { + _ struct{} `type:"structure"` + + // One or more Spot Instance requests. + SpotInstanceRequests []*SpotInstanceRequest `locationName:"spotInstanceRequestSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s RequestSpotInstancesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RequestSpotInstancesOutput) GoString() string { + return s.String() +} + +// SetSpotInstanceRequests sets the SpotInstanceRequests field's value. +func (s *RequestSpotInstancesOutput) SetSpotInstanceRequests(v []*SpotInstanceRequest) *RequestSpotInstancesOutput { + s.SpotInstanceRequests = v + return s +} + +// Describes the launch specification for an instance. +type RequestSpotLaunchSpecification struct { + _ struct{} `type:"structure"` + + // Deprecated. + AddressingType *string `locationName:"addressingType" type:"string"` + + // One or more block device mapping entries. You can't specify both a snapshot + // ID and an encryption value. This is because only blank volumes can be encrypted + // on creation. If a snapshot is the basis for a volume, it is not blank and + // its encryption status is used for the volume encryption status. + BlockDeviceMappings []*BlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"` + + // Indicates whether the instance is optimized for EBS I/O. This optimization + // provides dedicated throughput to Amazon EBS and an optimized configuration + // stack to provide optimal EBS I/O performance. This optimization isn't available + // with all instance types. Additional usage charges apply when using an EBS + // Optimized instance. + // + // Default: false + EbsOptimized *bool `locationName:"ebsOptimized" type:"boolean"` + + // The IAM instance profile. + IamInstanceProfile *IamInstanceProfileSpecification `locationName:"iamInstanceProfile" type:"structure"` + + // The ID of the AMI. + ImageId *string `locationName:"imageId" type:"string"` + + // The instance type. + InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` + + // The ID of the kernel. + KernelId *string `locationName:"kernelId" type:"string"` + + // The name of the key pair. + KeyName *string `locationName:"keyName" type:"string"` + + // Indicates whether basic or detailed monitoring is enabled for the instance. + // + // Default: Disabled + Monitoring *RunInstancesMonitoringEnabled `locationName:"monitoring" type:"structure"` + + // One or more network interfaces. If you specify a network interface, you must + // specify subnet IDs and security group IDs using the network interface. + NetworkInterfaces []*InstanceNetworkInterfaceSpecification `locationName:"NetworkInterface" locationNameList:"item" type:"list"` + + // The placement information for the instance. + Placement *SpotPlacement `locationName:"placement" type:"structure"` + + // The ID of the RAM disk. + RamdiskId *string `locationName:"ramdiskId" type:"string"` + + // One or more security group IDs. + SecurityGroupIds []*string `locationName:"SecurityGroupId" locationNameList:"item" type:"list"` + + // One or more security groups. When requesting instances in a VPC, you must + // specify the IDs of the security groups. When requesting instances in EC2-Classic, + // you can specify the names or the IDs of the security groups. + SecurityGroups []*string `locationName:"SecurityGroup" locationNameList:"item" type:"list"` + + // The IDs of the subnets in which to launch the instance. To specify multiple + // subnets, separate them using commas; for example, "subnet-1234abcdeexample1, + // subnet-0987cdef6example2". + SubnetId *string `locationName:"subnetId" type:"string"` + + // The Base64-encoded user data for the instance. User data is limited to 16 + // KB. + UserData *string `locationName:"userData" type:"string"` +} + +// String returns the string representation +func (s RequestSpotLaunchSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RequestSpotLaunchSpecification) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RequestSpotLaunchSpecification) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RequestSpotLaunchSpecification"} + if s.Monitoring != nil { + if err := s.Monitoring.Validate(); err != nil { + invalidParams.AddNested("Monitoring", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAddressingType sets the AddressingType field's value. +func (s *RequestSpotLaunchSpecification) SetAddressingType(v string) *RequestSpotLaunchSpecification { + s.AddressingType = &v + return s +} + +// SetBlockDeviceMappings sets the BlockDeviceMappings field's value. +func (s *RequestSpotLaunchSpecification) SetBlockDeviceMappings(v []*BlockDeviceMapping) *RequestSpotLaunchSpecification { + s.BlockDeviceMappings = v + return s +} + +// SetEbsOptimized sets the EbsOptimized field's value. +func (s *RequestSpotLaunchSpecification) SetEbsOptimized(v bool) *RequestSpotLaunchSpecification { + s.EbsOptimized = &v + return s +} + +// SetIamInstanceProfile sets the IamInstanceProfile field's value. +func (s *RequestSpotLaunchSpecification) SetIamInstanceProfile(v *IamInstanceProfileSpecification) *RequestSpotLaunchSpecification { + s.IamInstanceProfile = v + return s +} + +// SetImageId sets the ImageId field's value. +func (s *RequestSpotLaunchSpecification) SetImageId(v string) *RequestSpotLaunchSpecification { + s.ImageId = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *RequestSpotLaunchSpecification) SetInstanceType(v string) *RequestSpotLaunchSpecification { + s.InstanceType = &v + return s +} + +// SetKernelId sets the KernelId field's value. +func (s *RequestSpotLaunchSpecification) SetKernelId(v string) *RequestSpotLaunchSpecification { + s.KernelId = &v + return s +} + +// SetKeyName sets the KeyName field's value. +func (s *RequestSpotLaunchSpecification) SetKeyName(v string) *RequestSpotLaunchSpecification { + s.KeyName = &v + return s +} + +// SetMonitoring sets the Monitoring field's value. +func (s *RequestSpotLaunchSpecification) SetMonitoring(v *RunInstancesMonitoringEnabled) *RequestSpotLaunchSpecification { + s.Monitoring = v + return s +} + +// SetNetworkInterfaces sets the NetworkInterfaces field's value. +func (s *RequestSpotLaunchSpecification) SetNetworkInterfaces(v []*InstanceNetworkInterfaceSpecification) *RequestSpotLaunchSpecification { + s.NetworkInterfaces = v + return s +} + +// SetPlacement sets the Placement field's value. +func (s *RequestSpotLaunchSpecification) SetPlacement(v *SpotPlacement) *RequestSpotLaunchSpecification { + s.Placement = v + return s +} + +// SetRamdiskId sets the RamdiskId field's value. +func (s *RequestSpotLaunchSpecification) SetRamdiskId(v string) *RequestSpotLaunchSpecification { + s.RamdiskId = &v + return s +} + +// SetSecurityGroupIds sets the SecurityGroupIds field's value. +func (s *RequestSpotLaunchSpecification) SetSecurityGroupIds(v []*string) *RequestSpotLaunchSpecification { + s.SecurityGroupIds = v + return s +} + +// SetSecurityGroups sets the SecurityGroups field's value. +func (s *RequestSpotLaunchSpecification) SetSecurityGroups(v []*string) *RequestSpotLaunchSpecification { + s.SecurityGroups = v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *RequestSpotLaunchSpecification) SetSubnetId(v string) *RequestSpotLaunchSpecification { + s.SubnetId = &v + return s +} + +// SetUserData sets the UserData field's value. +func (s *RequestSpotLaunchSpecification) SetUserData(v string) *RequestSpotLaunchSpecification { + s.UserData = &v + return s +} + +// Describes a reservation. +type Reservation struct { + _ struct{} `type:"structure"` + + // [EC2-Classic only] The security groups. + Groups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"` + + // The instances. + Instances []*Instance `locationName:"instancesSet" locationNameList:"item" type:"list"` + + // The ID of the AWS account that owns the reservation. + OwnerId *string `locationName:"ownerId" type:"string"` + + // The ID of the requester that launched the instances on your behalf (for example, + // AWS Management Console or Auto Scaling). + RequesterId *string `locationName:"requesterId" type:"string"` + + // The ID of the reservation. + ReservationId *string `locationName:"reservationId" type:"string"` +} + +// String returns the string representation +func (s Reservation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Reservation) GoString() string { + return s.String() +} + +// SetGroups sets the Groups field's value. +func (s *Reservation) SetGroups(v []*GroupIdentifier) *Reservation { + s.Groups = v + return s +} + +// SetInstances sets the Instances field's value. +func (s *Reservation) SetInstances(v []*Instance) *Reservation { + s.Instances = v + return s +} + +// SetOwnerId sets the OwnerId field's value. +func (s *Reservation) SetOwnerId(v string) *Reservation { + s.OwnerId = &v + return s +} + +// SetRequesterId sets the RequesterId field's value. +func (s *Reservation) SetRequesterId(v string) *Reservation { + s.RequesterId = &v + return s +} + +// SetReservationId sets the ReservationId field's value. +func (s *Reservation) SetReservationId(v string) *Reservation { + s.ReservationId = &v + return s +} + +// The cost associated with the Reserved Instance. +type ReservationValue struct { + _ struct{} `type:"structure"` + + // The hourly rate of the reservation. + HourlyPrice *string `locationName:"hourlyPrice" type:"string"` + + // The balance of the total value (the sum of remainingUpfrontValue + hourlyPrice + // * number of hours remaining). + RemainingTotalValue *string `locationName:"remainingTotalValue" type:"string"` + + // The remaining upfront cost of the reservation. + RemainingUpfrontValue *string `locationName:"remainingUpfrontValue" type:"string"` +} + +// String returns the string representation +func (s ReservationValue) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReservationValue) GoString() string { + return s.String() +} + +// SetHourlyPrice sets the HourlyPrice field's value. +func (s *ReservationValue) SetHourlyPrice(v string) *ReservationValue { + s.HourlyPrice = &v + return s +} + +// SetRemainingTotalValue sets the RemainingTotalValue field's value. +func (s *ReservationValue) SetRemainingTotalValue(v string) *ReservationValue { + s.RemainingTotalValue = &v + return s +} + +// SetRemainingUpfrontValue sets the RemainingUpfrontValue field's value. +func (s *ReservationValue) SetRemainingUpfrontValue(v string) *ReservationValue { + s.RemainingUpfrontValue = &v + return s +} + +// Describes the limit price of a Reserved Instance offering. +type ReservedInstanceLimitPrice struct { + _ struct{} `type:"structure"` + + // Used for Reserved Instance Marketplace offerings. Specifies the limit price + // on the total order (instanceCount * price). + Amount *float64 `locationName:"amount" type:"double"` + + // The currency in which the limitPrice amount is specified. At this time, the + // only supported currency is USD. + CurrencyCode *string `locationName:"currencyCode" type:"string" enum:"CurrencyCodeValues"` +} + +// String returns the string representation +func (s ReservedInstanceLimitPrice) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReservedInstanceLimitPrice) GoString() string { + return s.String() +} + +// SetAmount sets the Amount field's value. +func (s *ReservedInstanceLimitPrice) SetAmount(v float64) *ReservedInstanceLimitPrice { + s.Amount = &v + return s +} + +// SetCurrencyCode sets the CurrencyCode field's value. +func (s *ReservedInstanceLimitPrice) SetCurrencyCode(v string) *ReservedInstanceLimitPrice { + s.CurrencyCode = &v + return s +} + +// The total value of the Convertible Reserved Instance. +type ReservedInstanceReservationValue struct { + _ struct{} `type:"structure"` + + // The total value of the Convertible Reserved Instance that you are exchanging. + ReservationValue *ReservationValue `locationName:"reservationValue" type:"structure"` + + // The ID of the Convertible Reserved Instance that you are exchanging. + ReservedInstanceId *string `locationName:"reservedInstanceId" type:"string"` +} + +// String returns the string representation +func (s ReservedInstanceReservationValue) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReservedInstanceReservationValue) GoString() string { + return s.String() +} + +// SetReservationValue sets the ReservationValue field's value. +func (s *ReservedInstanceReservationValue) SetReservationValue(v *ReservationValue) *ReservedInstanceReservationValue { + s.ReservationValue = v + return s +} + +// SetReservedInstanceId sets the ReservedInstanceId field's value. +func (s *ReservedInstanceReservationValue) SetReservedInstanceId(v string) *ReservedInstanceReservationValue { + s.ReservedInstanceId = &v + return s +} + +// Describes a Reserved Instance. +type ReservedInstances struct { + _ struct{} `type:"structure"` + + // The Availability Zone in which the Reserved Instance can be used. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // The currency of the Reserved Instance. It's specified using ISO 4217 standard + // currency codes. At this time, the only supported currency is USD. + CurrencyCode *string `locationName:"currencyCode" type:"string" enum:"CurrencyCodeValues"` + + // The duration of the Reserved Instance, in seconds. + Duration *int64 `locationName:"duration" type:"long"` + + // The time when the Reserved Instance expires. + End *time.Time `locationName:"end" type:"timestamp"` + + // The purchase price of the Reserved Instance. + FixedPrice *float64 `locationName:"fixedPrice" type:"float"` + + // The number of reservations purchased. + InstanceCount *int64 `locationName:"instanceCount" type:"integer"` + + // The tenancy of the instance. + InstanceTenancy *string `locationName:"instanceTenancy" type:"string" enum:"Tenancy"` + + // The instance type on which the Reserved Instance can be used. + InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` + + // The offering class of the Reserved Instance. + OfferingClass *string `locationName:"offeringClass" type:"string" enum:"OfferingClassType"` + + // The Reserved Instance offering type. + OfferingType *string `locationName:"offeringType" type:"string" enum:"OfferingTypeValues"` + + // The Reserved Instance product platform description. + ProductDescription *string `locationName:"productDescription" type:"string" enum:"RIProductDescription"` + + // The recurring charge tag assigned to the resource. + RecurringCharges []*RecurringCharge `locationName:"recurringCharges" locationNameList:"item" type:"list"` + + // The ID of the Reserved Instance. + ReservedInstancesId *string `locationName:"reservedInstancesId" type:"string"` + + // The scope of the Reserved Instance. + Scope *string `locationName:"scope" type:"string" enum:"scope"` + + // The date and time the Reserved Instance started. + Start *time.Time `locationName:"start" type:"timestamp"` + + // The state of the Reserved Instance purchase. + State *string `locationName:"state" type:"string" enum:"ReservedInstanceState"` + + // Any tags assigned to the resource. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The usage price of the Reserved Instance, per hour. + UsagePrice *float64 `locationName:"usagePrice" type:"float"` +} + +// String returns the string representation +func (s ReservedInstances) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReservedInstances) GoString() string { + return s.String() +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *ReservedInstances) SetAvailabilityZone(v string) *ReservedInstances { + s.AvailabilityZone = &v + return s +} + +// SetCurrencyCode sets the CurrencyCode field's value. +func (s *ReservedInstances) SetCurrencyCode(v string) *ReservedInstances { + s.CurrencyCode = &v + return s +} + +// SetDuration sets the Duration field's value. +func (s *ReservedInstances) SetDuration(v int64) *ReservedInstances { + s.Duration = &v + return s +} + +// SetEnd sets the End field's value. +func (s *ReservedInstances) SetEnd(v time.Time) *ReservedInstances { + s.End = &v + return s +} + +// SetFixedPrice sets the FixedPrice field's value. +func (s *ReservedInstances) SetFixedPrice(v float64) *ReservedInstances { + s.FixedPrice = &v + return s +} + +// SetInstanceCount sets the InstanceCount field's value. +func (s *ReservedInstances) SetInstanceCount(v int64) *ReservedInstances { + s.InstanceCount = &v + return s +} + +// SetInstanceTenancy sets the InstanceTenancy field's value. +func (s *ReservedInstances) SetInstanceTenancy(v string) *ReservedInstances { + s.InstanceTenancy = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *ReservedInstances) SetInstanceType(v string) *ReservedInstances { + s.InstanceType = &v + return s +} + +// SetOfferingClass sets the OfferingClass field's value. +func (s *ReservedInstances) SetOfferingClass(v string) *ReservedInstances { + s.OfferingClass = &v + return s +} + +// SetOfferingType sets the OfferingType field's value. +func (s *ReservedInstances) SetOfferingType(v string) *ReservedInstances { + s.OfferingType = &v + return s +} + +// SetProductDescription sets the ProductDescription field's value. +func (s *ReservedInstances) SetProductDescription(v string) *ReservedInstances { + s.ProductDescription = &v + return s +} + +// SetRecurringCharges sets the RecurringCharges field's value. +func (s *ReservedInstances) SetRecurringCharges(v []*RecurringCharge) *ReservedInstances { + s.RecurringCharges = v + return s +} + +// SetReservedInstancesId sets the ReservedInstancesId field's value. +func (s *ReservedInstances) SetReservedInstancesId(v string) *ReservedInstances { + s.ReservedInstancesId = &v + return s +} + +// SetScope sets the Scope field's value. +func (s *ReservedInstances) SetScope(v string) *ReservedInstances { + s.Scope = &v + return s +} + +// SetStart sets the Start field's value. +func (s *ReservedInstances) SetStart(v time.Time) *ReservedInstances { + s.Start = &v + return s +} + +// SetState sets the State field's value. +func (s *ReservedInstances) SetState(v string) *ReservedInstances { + s.State = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *ReservedInstances) SetTags(v []*Tag) *ReservedInstances { + s.Tags = v + return s +} + +// SetUsagePrice sets the UsagePrice field's value. +func (s *ReservedInstances) SetUsagePrice(v float64) *ReservedInstances { + s.UsagePrice = &v + return s +} + +// Describes the configuration settings for the modified Reserved Instances. +type ReservedInstancesConfiguration struct { + _ struct{} `type:"structure"` + + // The Availability Zone for the modified Reserved Instances. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // The number of modified Reserved Instances. + // + // This is a required field for a request. + InstanceCount *int64 `locationName:"instanceCount" type:"integer"` + + // The instance type for the modified Reserved Instances. + InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` + + // The network platform of the modified Reserved Instances, which is either + // EC2-Classic or EC2-VPC. + Platform *string `locationName:"platform" type:"string"` + + // Whether the Reserved Instance is applied to instances in a Region or instances + // in a specific Availability Zone. + Scope *string `locationName:"scope" type:"string" enum:"scope"` +} + +// String returns the string representation +func (s ReservedInstancesConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReservedInstancesConfiguration) GoString() string { + return s.String() +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *ReservedInstancesConfiguration) SetAvailabilityZone(v string) *ReservedInstancesConfiguration { + s.AvailabilityZone = &v + return s +} + +// SetInstanceCount sets the InstanceCount field's value. +func (s *ReservedInstancesConfiguration) SetInstanceCount(v int64) *ReservedInstancesConfiguration { + s.InstanceCount = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *ReservedInstancesConfiguration) SetInstanceType(v string) *ReservedInstancesConfiguration { + s.InstanceType = &v + return s +} + +// SetPlatform sets the Platform field's value. +func (s *ReservedInstancesConfiguration) SetPlatform(v string) *ReservedInstancesConfiguration { + s.Platform = &v + return s +} + +// SetScope sets the Scope field's value. +func (s *ReservedInstancesConfiguration) SetScope(v string) *ReservedInstancesConfiguration { + s.Scope = &v + return s +} + +// Describes the ID of a Reserved Instance. +type ReservedInstancesId struct { + _ struct{} `type:"structure"` + + // The ID of the Reserved Instance. + ReservedInstancesId *string `locationName:"reservedInstancesId" type:"string"` +} + +// String returns the string representation +func (s ReservedInstancesId) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReservedInstancesId) GoString() string { + return s.String() +} + +// SetReservedInstancesId sets the ReservedInstancesId field's value. +func (s *ReservedInstancesId) SetReservedInstancesId(v string) *ReservedInstancesId { + s.ReservedInstancesId = &v + return s +} + +// Describes a Reserved Instance listing. +type ReservedInstancesListing struct { + _ struct{} `type:"structure"` + + // A unique, case-sensitive key supplied by the client to ensure that the request + // is idempotent. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `locationName:"clientToken" type:"string"` + + // The time the listing was created. + CreateDate *time.Time `locationName:"createDate" type:"timestamp"` + + // The number of instances in this state. + InstanceCounts []*InstanceCount `locationName:"instanceCounts" locationNameList:"item" type:"list"` + + // The price of the Reserved Instance listing. + PriceSchedules []*PriceSchedule `locationName:"priceSchedules" locationNameList:"item" type:"list"` + + // The ID of the Reserved Instance. + ReservedInstancesId *string `locationName:"reservedInstancesId" type:"string"` + + // The ID of the Reserved Instance listing. + ReservedInstancesListingId *string `locationName:"reservedInstancesListingId" type:"string"` + + // The status of the Reserved Instance listing. + Status *string `locationName:"status" type:"string" enum:"ListingStatus"` + + // The reason for the current status of the Reserved Instance listing. The response + // can be blank. + StatusMessage *string `locationName:"statusMessage" type:"string"` + + // Any tags assigned to the resource. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The last modified timestamp of the listing. + UpdateDate *time.Time `locationName:"updateDate" type:"timestamp"` +} + +// String returns the string representation +func (s ReservedInstancesListing) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReservedInstancesListing) GoString() string { + return s.String() +} + +// SetClientToken sets the ClientToken field's value. +func (s *ReservedInstancesListing) SetClientToken(v string) *ReservedInstancesListing { + s.ClientToken = &v + return s +} + +// SetCreateDate sets the CreateDate field's value. +func (s *ReservedInstancesListing) SetCreateDate(v time.Time) *ReservedInstancesListing { + s.CreateDate = &v + return s +} + +// SetInstanceCounts sets the InstanceCounts field's value. +func (s *ReservedInstancesListing) SetInstanceCounts(v []*InstanceCount) *ReservedInstancesListing { + s.InstanceCounts = v + return s +} + +// SetPriceSchedules sets the PriceSchedules field's value. +func (s *ReservedInstancesListing) SetPriceSchedules(v []*PriceSchedule) *ReservedInstancesListing { + s.PriceSchedules = v + return s +} + +// SetReservedInstancesId sets the ReservedInstancesId field's value. +func (s *ReservedInstancesListing) SetReservedInstancesId(v string) *ReservedInstancesListing { + s.ReservedInstancesId = &v + return s +} + +// SetReservedInstancesListingId sets the ReservedInstancesListingId field's value. +func (s *ReservedInstancesListing) SetReservedInstancesListingId(v string) *ReservedInstancesListing { + s.ReservedInstancesListingId = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *ReservedInstancesListing) SetStatus(v string) *ReservedInstancesListing { + s.Status = &v + return s +} + +// SetStatusMessage sets the StatusMessage field's value. +func (s *ReservedInstancesListing) SetStatusMessage(v string) *ReservedInstancesListing { + s.StatusMessage = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *ReservedInstancesListing) SetTags(v []*Tag) *ReservedInstancesListing { + s.Tags = v + return s +} + +// SetUpdateDate sets the UpdateDate field's value. +func (s *ReservedInstancesListing) SetUpdateDate(v time.Time) *ReservedInstancesListing { + s.UpdateDate = &v + return s +} + +// Describes a Reserved Instance modification. +type ReservedInstancesModification struct { + _ struct{} `type:"structure"` + + // A unique, case-sensitive key supplied by the client to ensure that the request + // is idempotent. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `locationName:"clientToken" type:"string"` + + // The time when the modification request was created. + CreateDate *time.Time `locationName:"createDate" type:"timestamp"` + + // The time for the modification to become effective. + EffectiveDate *time.Time `locationName:"effectiveDate" type:"timestamp"` + + // Contains target configurations along with their corresponding new Reserved + // Instance IDs. + ModificationResults []*ReservedInstancesModificationResult `locationName:"modificationResultSet" locationNameList:"item" type:"list"` + + // The IDs of one or more Reserved Instances. + ReservedInstancesIds []*ReservedInstancesId `locationName:"reservedInstancesSet" locationNameList:"item" type:"list"` + + // A unique ID for the Reserved Instance modification. + ReservedInstancesModificationId *string `locationName:"reservedInstancesModificationId" type:"string"` + + // The status of the Reserved Instances modification request. + Status *string `locationName:"status" type:"string"` + + // The reason for the status. + StatusMessage *string `locationName:"statusMessage" type:"string"` + + // The time when the modification request was last updated. + UpdateDate *time.Time `locationName:"updateDate" type:"timestamp"` +} + +// String returns the string representation +func (s ReservedInstancesModification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReservedInstancesModification) GoString() string { + return s.String() +} + +// SetClientToken sets the ClientToken field's value. +func (s *ReservedInstancesModification) SetClientToken(v string) *ReservedInstancesModification { + s.ClientToken = &v + return s +} + +// SetCreateDate sets the CreateDate field's value. +func (s *ReservedInstancesModification) SetCreateDate(v time.Time) *ReservedInstancesModification { + s.CreateDate = &v + return s +} + +// SetEffectiveDate sets the EffectiveDate field's value. +func (s *ReservedInstancesModification) SetEffectiveDate(v time.Time) *ReservedInstancesModification { + s.EffectiveDate = &v + return s +} + +// SetModificationResults sets the ModificationResults field's value. +func (s *ReservedInstancesModification) SetModificationResults(v []*ReservedInstancesModificationResult) *ReservedInstancesModification { + s.ModificationResults = v + return s +} + +// SetReservedInstancesIds sets the ReservedInstancesIds field's value. +func (s *ReservedInstancesModification) SetReservedInstancesIds(v []*ReservedInstancesId) *ReservedInstancesModification { + s.ReservedInstancesIds = v + return s +} + +// SetReservedInstancesModificationId sets the ReservedInstancesModificationId field's value. +func (s *ReservedInstancesModification) SetReservedInstancesModificationId(v string) *ReservedInstancesModification { + s.ReservedInstancesModificationId = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *ReservedInstancesModification) SetStatus(v string) *ReservedInstancesModification { + s.Status = &v + return s +} + +// SetStatusMessage sets the StatusMessage field's value. +func (s *ReservedInstancesModification) SetStatusMessage(v string) *ReservedInstancesModification { + s.StatusMessage = &v + return s +} + +// SetUpdateDate sets the UpdateDate field's value. +func (s *ReservedInstancesModification) SetUpdateDate(v time.Time) *ReservedInstancesModification { + s.UpdateDate = &v + return s +} + +// Describes the modification request/s. +type ReservedInstancesModificationResult struct { + _ struct{} `type:"structure"` + + // The ID for the Reserved Instances that were created as part of the modification + // request. This field is only available when the modification is fulfilled. + ReservedInstancesId *string `locationName:"reservedInstancesId" type:"string"` + + // The target Reserved Instances configurations supplied as part of the modification + // request. + TargetConfiguration *ReservedInstancesConfiguration `locationName:"targetConfiguration" type:"structure"` +} + +// String returns the string representation +func (s ReservedInstancesModificationResult) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReservedInstancesModificationResult) GoString() string { + return s.String() +} + +// SetReservedInstancesId sets the ReservedInstancesId field's value. +func (s *ReservedInstancesModificationResult) SetReservedInstancesId(v string) *ReservedInstancesModificationResult { + s.ReservedInstancesId = &v + return s +} + +// SetTargetConfiguration sets the TargetConfiguration field's value. +func (s *ReservedInstancesModificationResult) SetTargetConfiguration(v *ReservedInstancesConfiguration) *ReservedInstancesModificationResult { + s.TargetConfiguration = v + return s +} + +// Describes a Reserved Instance offering. +type ReservedInstancesOffering struct { + _ struct{} `type:"structure"` + + // The Availability Zone in which the Reserved Instance can be used. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // The currency of the Reserved Instance offering you are purchasing. It's specified + // using ISO 4217 standard currency codes. At this time, the only supported + // currency is USD. + CurrencyCode *string `locationName:"currencyCode" type:"string" enum:"CurrencyCodeValues"` + + // The duration of the Reserved Instance, in seconds. + Duration *int64 `locationName:"duration" type:"long"` + + // The purchase price of the Reserved Instance. + FixedPrice *float64 `locationName:"fixedPrice" type:"float"` + + // The tenancy of the instance. + InstanceTenancy *string `locationName:"instanceTenancy" type:"string" enum:"Tenancy"` + + // The instance type on which the Reserved Instance can be used. + InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` + + // Indicates whether the offering is available through the Reserved Instance + // Marketplace (resale) or AWS. If it's a Reserved Instance Marketplace offering, + // this is true. + Marketplace *bool `locationName:"marketplace" type:"boolean"` + + // If convertible it can be exchanged for Reserved Instances of the same or + // higher monetary value, with different configurations. If standard, it is + // not possible to perform an exchange. + OfferingClass *string `locationName:"offeringClass" type:"string" enum:"OfferingClassType"` + + // The Reserved Instance offering type. + OfferingType *string `locationName:"offeringType" type:"string" enum:"OfferingTypeValues"` + + // The pricing details of the Reserved Instance offering. + PricingDetails []*PricingDetail `locationName:"pricingDetailsSet" locationNameList:"item" type:"list"` + + // The Reserved Instance product platform description. + ProductDescription *string `locationName:"productDescription" type:"string" enum:"RIProductDescription"` + + // The recurring charge tag assigned to the resource. + RecurringCharges []*RecurringCharge `locationName:"recurringCharges" locationNameList:"item" type:"list"` + + // The ID of the Reserved Instance offering. This is the offering ID used in + // GetReservedInstancesExchangeQuote to confirm that an exchange can be made. + ReservedInstancesOfferingId *string `locationName:"reservedInstancesOfferingId" type:"string"` + + // Whether the Reserved Instance is applied to instances in a Region or an Availability + // Zone. + Scope *string `locationName:"scope" type:"string" enum:"scope"` + + // The usage price of the Reserved Instance, per hour. + UsagePrice *float64 `locationName:"usagePrice" type:"float"` +} + +// String returns the string representation +func (s ReservedInstancesOffering) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReservedInstancesOffering) GoString() string { + return s.String() +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *ReservedInstancesOffering) SetAvailabilityZone(v string) *ReservedInstancesOffering { + s.AvailabilityZone = &v + return s +} + +// SetCurrencyCode sets the CurrencyCode field's value. +func (s *ReservedInstancesOffering) SetCurrencyCode(v string) *ReservedInstancesOffering { + s.CurrencyCode = &v + return s +} + +// SetDuration sets the Duration field's value. +func (s *ReservedInstancesOffering) SetDuration(v int64) *ReservedInstancesOffering { + s.Duration = &v + return s +} + +// SetFixedPrice sets the FixedPrice field's value. +func (s *ReservedInstancesOffering) SetFixedPrice(v float64) *ReservedInstancesOffering { + s.FixedPrice = &v + return s +} + +// SetInstanceTenancy sets the InstanceTenancy field's value. +func (s *ReservedInstancesOffering) SetInstanceTenancy(v string) *ReservedInstancesOffering { + s.InstanceTenancy = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *ReservedInstancesOffering) SetInstanceType(v string) *ReservedInstancesOffering { + s.InstanceType = &v + return s +} + +// SetMarketplace sets the Marketplace field's value. +func (s *ReservedInstancesOffering) SetMarketplace(v bool) *ReservedInstancesOffering { + s.Marketplace = &v + return s +} + +// SetOfferingClass sets the OfferingClass field's value. +func (s *ReservedInstancesOffering) SetOfferingClass(v string) *ReservedInstancesOffering { + s.OfferingClass = &v + return s +} + +// SetOfferingType sets the OfferingType field's value. +func (s *ReservedInstancesOffering) SetOfferingType(v string) *ReservedInstancesOffering { + s.OfferingType = &v + return s +} + +// SetPricingDetails sets the PricingDetails field's value. +func (s *ReservedInstancesOffering) SetPricingDetails(v []*PricingDetail) *ReservedInstancesOffering { + s.PricingDetails = v + return s +} + +// SetProductDescription sets the ProductDescription field's value. +func (s *ReservedInstancesOffering) SetProductDescription(v string) *ReservedInstancesOffering { + s.ProductDescription = &v + return s +} + +// SetRecurringCharges sets the RecurringCharges field's value. +func (s *ReservedInstancesOffering) SetRecurringCharges(v []*RecurringCharge) *ReservedInstancesOffering { + s.RecurringCharges = v + return s +} + +// SetReservedInstancesOfferingId sets the ReservedInstancesOfferingId field's value. +func (s *ReservedInstancesOffering) SetReservedInstancesOfferingId(v string) *ReservedInstancesOffering { + s.ReservedInstancesOfferingId = &v + return s +} + +// SetScope sets the Scope field's value. +func (s *ReservedInstancesOffering) SetScope(v string) *ReservedInstancesOffering { + s.Scope = &v + return s +} + +// SetUsagePrice sets the UsagePrice field's value. +func (s *ReservedInstancesOffering) SetUsagePrice(v float64) *ReservedInstancesOffering { + s.UsagePrice = &v + return s +} + +type ResetEbsDefaultKmsKeyIdInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s ResetEbsDefaultKmsKeyIdInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResetEbsDefaultKmsKeyIdInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *ResetEbsDefaultKmsKeyIdInput) SetDryRun(v bool) *ResetEbsDefaultKmsKeyIdInput { + s.DryRun = &v + return s +} + +type ResetEbsDefaultKmsKeyIdOutput struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the default CMK for EBS encryption by default. + KmsKeyId *string `locationName:"kmsKeyId" type:"string"` +} + +// String returns the string representation +func (s ResetEbsDefaultKmsKeyIdOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResetEbsDefaultKmsKeyIdOutput) GoString() string { + return s.String() +} + +// SetKmsKeyId sets the KmsKeyId field's value. +func (s *ResetEbsDefaultKmsKeyIdOutput) SetKmsKeyId(v string) *ResetEbsDefaultKmsKeyIdOutput { + s.KmsKeyId = &v + return s +} + +type ResetFpgaImageAttributeInput struct { + _ struct{} `type:"structure"` + + // The attribute. + Attribute *string `type:"string" enum:"ResetFpgaImageAttributeName"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the AFI. + // + // FpgaImageId is a required field + FpgaImageId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s ResetFpgaImageAttributeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResetFpgaImageAttributeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ResetFpgaImageAttributeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ResetFpgaImageAttributeInput"} + if s.FpgaImageId == nil { + invalidParams.Add(request.NewErrParamRequired("FpgaImageId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAttribute sets the Attribute field's value. +func (s *ResetFpgaImageAttributeInput) SetAttribute(v string) *ResetFpgaImageAttributeInput { + s.Attribute = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ResetFpgaImageAttributeInput) SetDryRun(v bool) *ResetFpgaImageAttributeInput { + s.DryRun = &v + return s +} + +// SetFpgaImageId sets the FpgaImageId field's value. +func (s *ResetFpgaImageAttributeInput) SetFpgaImageId(v string) *ResetFpgaImageAttributeInput { + s.FpgaImageId = &v + return s +} + +type ResetFpgaImageAttributeOutput struct { + _ struct{} `type:"structure"` + + // Is true if the request succeeds, and an error otherwise. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s ResetFpgaImageAttributeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResetFpgaImageAttributeOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *ResetFpgaImageAttributeOutput) SetReturn(v bool) *ResetFpgaImageAttributeOutput { + s.Return = &v + return s +} + +// Contains the parameters for ResetImageAttribute. +type ResetImageAttributeInput struct { + _ struct{} `type:"structure"` + + // The attribute to reset (currently you can only reset the launch permission + // attribute). + // + // Attribute is a required field + Attribute *string `type:"string" required:"true" enum:"ResetImageAttributeName"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the AMI. + // + // ImageId is a required field + ImageId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s ResetImageAttributeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResetImageAttributeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ResetImageAttributeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ResetImageAttributeInput"} + if s.Attribute == nil { + invalidParams.Add(request.NewErrParamRequired("Attribute")) + } + if s.ImageId == nil { + invalidParams.Add(request.NewErrParamRequired("ImageId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAttribute sets the Attribute field's value. +func (s *ResetImageAttributeInput) SetAttribute(v string) *ResetImageAttributeInput { + s.Attribute = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ResetImageAttributeInput) SetDryRun(v bool) *ResetImageAttributeInput { + s.DryRun = &v + return s +} + +// SetImageId sets the ImageId field's value. +func (s *ResetImageAttributeInput) SetImageId(v string) *ResetImageAttributeInput { + s.ImageId = &v + return s +} + +type ResetImageAttributeOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s ResetImageAttributeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResetImageAttributeOutput) GoString() string { + return s.String() +} + +type ResetInstanceAttributeInput struct { + _ struct{} `type:"structure"` + + // The attribute to reset. + // + // You can only reset the following attributes: kernel | ramdisk | sourceDestCheck. + // To change an instance attribute, use ModifyInstanceAttribute. + // + // Attribute is a required field + Attribute *string `locationName:"attribute" type:"string" required:"true" enum:"InstanceAttributeName"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the instance. + // + // InstanceId is a required field + InstanceId *string `locationName:"instanceId" type:"string" required:"true"` +} + +// String returns the string representation +func (s ResetInstanceAttributeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResetInstanceAttributeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ResetInstanceAttributeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ResetInstanceAttributeInput"} + if s.Attribute == nil { + invalidParams.Add(request.NewErrParamRequired("Attribute")) + } + if s.InstanceId == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAttribute sets the Attribute field's value. +func (s *ResetInstanceAttributeInput) SetAttribute(v string) *ResetInstanceAttributeInput { + s.Attribute = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ResetInstanceAttributeInput) SetDryRun(v bool) *ResetInstanceAttributeInput { + s.DryRun = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *ResetInstanceAttributeInput) SetInstanceId(v string) *ResetInstanceAttributeInput { + s.InstanceId = &v + return s +} + +type ResetInstanceAttributeOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s ResetInstanceAttributeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResetInstanceAttributeOutput) GoString() string { + return s.String() +} + +// Contains the parameters for ResetNetworkInterfaceAttribute. +type ResetNetworkInterfaceAttributeInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the network interface. + // + // NetworkInterfaceId is a required field + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string" required:"true"` + + // The source/destination checking attribute. Resets the value to true. + SourceDestCheck *string `locationName:"sourceDestCheck" type:"string"` +} + +// String returns the string representation +func (s ResetNetworkInterfaceAttributeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResetNetworkInterfaceAttributeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ResetNetworkInterfaceAttributeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ResetNetworkInterfaceAttributeInput"} + if s.NetworkInterfaceId == nil { + invalidParams.Add(request.NewErrParamRequired("NetworkInterfaceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *ResetNetworkInterfaceAttributeInput) SetDryRun(v bool) *ResetNetworkInterfaceAttributeInput { + s.DryRun = &v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *ResetNetworkInterfaceAttributeInput) SetNetworkInterfaceId(v string) *ResetNetworkInterfaceAttributeInput { + s.NetworkInterfaceId = &v + return s +} + +// SetSourceDestCheck sets the SourceDestCheck field's value. +func (s *ResetNetworkInterfaceAttributeInput) SetSourceDestCheck(v string) *ResetNetworkInterfaceAttributeInput { + s.SourceDestCheck = &v + return s +} + +type ResetNetworkInterfaceAttributeOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s ResetNetworkInterfaceAttributeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResetNetworkInterfaceAttributeOutput) GoString() string { + return s.String() +} + +// Contains the parameters for ResetSnapshotAttribute. +type ResetSnapshotAttributeInput struct { + _ struct{} `type:"structure"` + + // The attribute to reset. Currently, only the attribute for permission to create + // volumes can be reset. + // + // Attribute is a required field + Attribute *string `type:"string" required:"true" enum:"SnapshotAttributeName"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The ID of the snapshot. + // + // SnapshotId is a required field + SnapshotId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s ResetSnapshotAttributeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResetSnapshotAttributeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ResetSnapshotAttributeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ResetSnapshotAttributeInput"} + if s.Attribute == nil { + invalidParams.Add(request.NewErrParamRequired("Attribute")) + } + if s.SnapshotId == nil { + invalidParams.Add(request.NewErrParamRequired("SnapshotId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAttribute sets the Attribute field's value. +func (s *ResetSnapshotAttributeInput) SetAttribute(v string) *ResetSnapshotAttributeInput { + s.Attribute = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ResetSnapshotAttributeInput) SetDryRun(v bool) *ResetSnapshotAttributeInput { + s.DryRun = &v + return s +} + +// SetSnapshotId sets the SnapshotId field's value. +func (s *ResetSnapshotAttributeInput) SetSnapshotId(v string) *ResetSnapshotAttributeInput { + s.SnapshotId = &v + return s +} + +type ResetSnapshotAttributeOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s ResetSnapshotAttributeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResetSnapshotAttributeOutput) GoString() string { + return s.String() +} + +// Describes the error that's returned when you cannot delete a launch template +// version. +type ResponseError struct { + _ struct{} `type:"structure"` + + // The error code. + Code *string `locationName:"code" type:"string" enum:"LaunchTemplateErrorCode"` + + // The error message, if applicable. + Message *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s ResponseError) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResponseError) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *ResponseError) SetCode(v string) *ResponseError { + s.Code = &v + return s +} + +// SetMessage sets the Message field's value. +func (s *ResponseError) SetMessage(v string) *ResponseError { + s.Message = &v + return s +} + +// The information for a launch template. +type ResponseLaunchTemplateData struct { + _ struct{} `type:"structure"` + + // The block device mappings. + BlockDeviceMappings []*LaunchTemplateBlockDeviceMapping `locationName:"blockDeviceMappingSet" locationNameList:"item" type:"list"` + + // Information about the Capacity Reservation targeting option. + CapacityReservationSpecification *LaunchTemplateCapacityReservationSpecificationResponse `locationName:"capacityReservationSpecification" type:"structure"` + + // The CPU options for the instance. For more information, see Optimizing CPU + // Options (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html) + // in the Amazon Elastic Compute Cloud User Guide. + CpuOptions *LaunchTemplateCpuOptions `locationName:"cpuOptions" type:"structure"` + + // The credit option for CPU usage of the instance. + CreditSpecification *CreditSpecification `locationName:"creditSpecification" type:"structure"` + + // If set to true, indicates that the instance cannot be terminated using the + // Amazon EC2 console, command line tool, or API. + DisableApiTermination *bool `locationName:"disableApiTermination" type:"boolean"` + + // Indicates whether the instance is optimized for Amazon EBS I/O. + EbsOptimized *bool `locationName:"ebsOptimized" type:"boolean"` + + // The elastic GPU specification. + ElasticGpuSpecifications []*ElasticGpuSpecificationResponse `locationName:"elasticGpuSpecificationSet" locationNameList:"item" type:"list"` + + // The elastic inference accelerator for the instance. + ElasticInferenceAccelerators []*LaunchTemplateElasticInferenceAcceleratorResponse `locationName:"elasticInferenceAcceleratorSet" locationNameList:"item" type:"list"` + + // Indicates whether an instance is configured for hibernation. For more information, + // see Hibernate Your Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html) + // in the Amazon Elastic Compute Cloud User Guide. + HibernationOptions *LaunchTemplateHibernationOptions `locationName:"hibernationOptions" type:"structure"` + + // The IAM instance profile. + IamInstanceProfile *LaunchTemplateIamInstanceProfileSpecification `locationName:"iamInstanceProfile" type:"structure"` + + // The ID of the AMI that was used to launch the instance. + ImageId *string `locationName:"imageId" type:"string"` + + // Indicates whether an instance stops or terminates when you initiate shutdown + // from the instance (using the operating system command for system shutdown). + InstanceInitiatedShutdownBehavior *string `locationName:"instanceInitiatedShutdownBehavior" type:"string" enum:"ShutdownBehavior"` + + // The market (purchasing) option for the instances. + InstanceMarketOptions *LaunchTemplateInstanceMarketOptions `locationName:"instanceMarketOptions" type:"structure"` + + // The instance type. + InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` + + // The ID of the kernel, if applicable. + KernelId *string `locationName:"kernelId" type:"string"` + + // The name of the key pair. + KeyName *string `locationName:"keyName" type:"string"` + + // The license configurations. + LicenseSpecifications []*LaunchTemplateLicenseConfiguration `locationName:"licenseSet" locationNameList:"item" type:"list"` + + // The monitoring for the instance. + Monitoring *LaunchTemplatesMonitoring `locationName:"monitoring" type:"structure"` + + // The network interfaces. + NetworkInterfaces []*LaunchTemplateInstanceNetworkInterfaceSpecification `locationName:"networkInterfaceSet" locationNameList:"item" type:"list"` + + // The placement of the instance. + Placement *LaunchTemplatePlacement `locationName:"placement" type:"structure"` + + // The ID of the RAM disk, if applicable. + RamDiskId *string `locationName:"ramDiskId" type:"string"` + + // The security group IDs. + SecurityGroupIds []*string `locationName:"securityGroupIdSet" locationNameList:"item" type:"list"` + + // The security group names. + SecurityGroups []*string `locationName:"securityGroupSet" locationNameList:"item" type:"list"` + + // The tags. + TagSpecifications []*LaunchTemplateTagSpecification `locationName:"tagSpecificationSet" locationNameList:"item" type:"list"` + + // The user data for the instance. + UserData *string `locationName:"userData" type:"string"` +} + +// String returns the string representation +func (s ResponseLaunchTemplateData) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResponseLaunchTemplateData) GoString() string { + return s.String() +} + +// SetBlockDeviceMappings sets the BlockDeviceMappings field's value. +func (s *ResponseLaunchTemplateData) SetBlockDeviceMappings(v []*LaunchTemplateBlockDeviceMapping) *ResponseLaunchTemplateData { + s.BlockDeviceMappings = v + return s +} + +// SetCapacityReservationSpecification sets the CapacityReservationSpecification field's value. +func (s *ResponseLaunchTemplateData) SetCapacityReservationSpecification(v *LaunchTemplateCapacityReservationSpecificationResponse) *ResponseLaunchTemplateData { + s.CapacityReservationSpecification = v + return s +} + +// SetCpuOptions sets the CpuOptions field's value. +func (s *ResponseLaunchTemplateData) SetCpuOptions(v *LaunchTemplateCpuOptions) *ResponseLaunchTemplateData { + s.CpuOptions = v + return s +} + +// SetCreditSpecification sets the CreditSpecification field's value. +func (s *ResponseLaunchTemplateData) SetCreditSpecification(v *CreditSpecification) *ResponseLaunchTemplateData { + s.CreditSpecification = v + return s +} + +// SetDisableApiTermination sets the DisableApiTermination field's value. +func (s *ResponseLaunchTemplateData) SetDisableApiTermination(v bool) *ResponseLaunchTemplateData { + s.DisableApiTermination = &v + return s +} + +// SetEbsOptimized sets the EbsOptimized field's value. +func (s *ResponseLaunchTemplateData) SetEbsOptimized(v bool) *ResponseLaunchTemplateData { + s.EbsOptimized = &v + return s +} + +// SetElasticGpuSpecifications sets the ElasticGpuSpecifications field's value. +func (s *ResponseLaunchTemplateData) SetElasticGpuSpecifications(v []*ElasticGpuSpecificationResponse) *ResponseLaunchTemplateData { + s.ElasticGpuSpecifications = v + return s +} + +// SetElasticInferenceAccelerators sets the ElasticInferenceAccelerators field's value. +func (s *ResponseLaunchTemplateData) SetElasticInferenceAccelerators(v []*LaunchTemplateElasticInferenceAcceleratorResponse) *ResponseLaunchTemplateData { + s.ElasticInferenceAccelerators = v + return s +} + +// SetHibernationOptions sets the HibernationOptions field's value. +func (s *ResponseLaunchTemplateData) SetHibernationOptions(v *LaunchTemplateHibernationOptions) *ResponseLaunchTemplateData { + s.HibernationOptions = v + return s +} + +// SetIamInstanceProfile sets the IamInstanceProfile field's value. +func (s *ResponseLaunchTemplateData) SetIamInstanceProfile(v *LaunchTemplateIamInstanceProfileSpecification) *ResponseLaunchTemplateData { + s.IamInstanceProfile = v + return s +} + +// SetImageId sets the ImageId field's value. +func (s *ResponseLaunchTemplateData) SetImageId(v string) *ResponseLaunchTemplateData { + s.ImageId = &v + return s +} + +// SetInstanceInitiatedShutdownBehavior sets the InstanceInitiatedShutdownBehavior field's value. +func (s *ResponseLaunchTemplateData) SetInstanceInitiatedShutdownBehavior(v string) *ResponseLaunchTemplateData { + s.InstanceInitiatedShutdownBehavior = &v + return s +} + +// SetInstanceMarketOptions sets the InstanceMarketOptions field's value. +func (s *ResponseLaunchTemplateData) SetInstanceMarketOptions(v *LaunchTemplateInstanceMarketOptions) *ResponseLaunchTemplateData { + s.InstanceMarketOptions = v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *ResponseLaunchTemplateData) SetInstanceType(v string) *ResponseLaunchTemplateData { + s.InstanceType = &v + return s +} + +// SetKernelId sets the KernelId field's value. +func (s *ResponseLaunchTemplateData) SetKernelId(v string) *ResponseLaunchTemplateData { + s.KernelId = &v + return s +} + +// SetKeyName sets the KeyName field's value. +func (s *ResponseLaunchTemplateData) SetKeyName(v string) *ResponseLaunchTemplateData { + s.KeyName = &v + return s +} + +// SetLicenseSpecifications sets the LicenseSpecifications field's value. +func (s *ResponseLaunchTemplateData) SetLicenseSpecifications(v []*LaunchTemplateLicenseConfiguration) *ResponseLaunchTemplateData { + s.LicenseSpecifications = v + return s +} + +// SetMonitoring sets the Monitoring field's value. +func (s *ResponseLaunchTemplateData) SetMonitoring(v *LaunchTemplatesMonitoring) *ResponseLaunchTemplateData { + s.Monitoring = v + return s +} + +// SetNetworkInterfaces sets the NetworkInterfaces field's value. +func (s *ResponseLaunchTemplateData) SetNetworkInterfaces(v []*LaunchTemplateInstanceNetworkInterfaceSpecification) *ResponseLaunchTemplateData { + s.NetworkInterfaces = v + return s +} + +// SetPlacement sets the Placement field's value. +func (s *ResponseLaunchTemplateData) SetPlacement(v *LaunchTemplatePlacement) *ResponseLaunchTemplateData { + s.Placement = v + return s +} + +// SetRamDiskId sets the RamDiskId field's value. +func (s *ResponseLaunchTemplateData) SetRamDiskId(v string) *ResponseLaunchTemplateData { + s.RamDiskId = &v + return s +} + +// SetSecurityGroupIds sets the SecurityGroupIds field's value. +func (s *ResponseLaunchTemplateData) SetSecurityGroupIds(v []*string) *ResponseLaunchTemplateData { + s.SecurityGroupIds = v + return s +} + +// SetSecurityGroups sets the SecurityGroups field's value. +func (s *ResponseLaunchTemplateData) SetSecurityGroups(v []*string) *ResponseLaunchTemplateData { + s.SecurityGroups = v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *ResponseLaunchTemplateData) SetTagSpecifications(v []*LaunchTemplateTagSpecification) *ResponseLaunchTemplateData { + s.TagSpecifications = v + return s +} + +// SetUserData sets the UserData field's value. +func (s *ResponseLaunchTemplateData) SetUserData(v string) *ResponseLaunchTemplateData { + s.UserData = &v + return s +} + +type RestoreAddressToClassicInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The Elastic IP address. + // + // PublicIp is a required field + PublicIp *string `locationName:"publicIp" type:"string" required:"true"` +} + +// String returns the string representation +func (s RestoreAddressToClassicInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RestoreAddressToClassicInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RestoreAddressToClassicInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RestoreAddressToClassicInput"} + if s.PublicIp == nil { + invalidParams.Add(request.NewErrParamRequired("PublicIp")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *RestoreAddressToClassicInput) SetDryRun(v bool) *RestoreAddressToClassicInput { + s.DryRun = &v + return s +} + +// SetPublicIp sets the PublicIp field's value. +func (s *RestoreAddressToClassicInput) SetPublicIp(v string) *RestoreAddressToClassicInput { + s.PublicIp = &v + return s +} + +type RestoreAddressToClassicOutput struct { + _ struct{} `type:"structure"` + + // The Elastic IP address. + PublicIp *string `locationName:"publicIp" type:"string"` + + // The move status for the IP address. + Status *string `locationName:"status" type:"string" enum:"Status"` +} + +// String returns the string representation +func (s RestoreAddressToClassicOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RestoreAddressToClassicOutput) GoString() string { + return s.String() +} + +// SetPublicIp sets the PublicIp field's value. +func (s *RestoreAddressToClassicOutput) SetPublicIp(v string) *RestoreAddressToClassicOutput { + s.PublicIp = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *RestoreAddressToClassicOutput) SetStatus(v string) *RestoreAddressToClassicOutput { + s.Status = &v + return s +} + +type RevokeClientVpnIngressInput struct { + _ struct{} `type:"structure"` + + // The ID of the Active Directory group for which to revoke access. + AccessGroupId *string `type:"string"` + + // The ID of the Client VPN endpoint with which the authorization rule is associated. + // + // ClientVpnEndpointId is a required field + ClientVpnEndpointId *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // Indicates whether access should be revoked for all clients. + RevokeAllGroups *bool `type:"boolean"` + + // The IPv4 address range, in CIDR notation, of the network for which access + // is being removed. + // + // TargetNetworkCidr is a required field + TargetNetworkCidr *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s RevokeClientVpnIngressInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RevokeClientVpnIngressInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RevokeClientVpnIngressInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RevokeClientVpnIngressInput"} + if s.ClientVpnEndpointId == nil { + invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId")) + } + if s.TargetNetworkCidr == nil { + invalidParams.Add(request.NewErrParamRequired("TargetNetworkCidr")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAccessGroupId sets the AccessGroupId field's value. +func (s *RevokeClientVpnIngressInput) SetAccessGroupId(v string) *RevokeClientVpnIngressInput { + s.AccessGroupId = &v + return s +} + +// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value. +func (s *RevokeClientVpnIngressInput) SetClientVpnEndpointId(v string) *RevokeClientVpnIngressInput { + s.ClientVpnEndpointId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *RevokeClientVpnIngressInput) SetDryRun(v bool) *RevokeClientVpnIngressInput { + s.DryRun = &v + return s +} + +// SetRevokeAllGroups sets the RevokeAllGroups field's value. +func (s *RevokeClientVpnIngressInput) SetRevokeAllGroups(v bool) *RevokeClientVpnIngressInput { + s.RevokeAllGroups = &v + return s +} + +// SetTargetNetworkCidr sets the TargetNetworkCidr field's value. +func (s *RevokeClientVpnIngressInput) SetTargetNetworkCidr(v string) *RevokeClientVpnIngressInput { + s.TargetNetworkCidr = &v + return s +} + +type RevokeClientVpnIngressOutput struct { + _ struct{} `type:"structure"` + + // The current state of the authorization rule. + Status *ClientVpnAuthorizationRuleStatus `locationName:"status" type:"structure"` +} + +// String returns the string representation +func (s RevokeClientVpnIngressOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RevokeClientVpnIngressOutput) GoString() string { + return s.String() +} + +// SetStatus sets the Status field's value. +func (s *RevokeClientVpnIngressOutput) SetStatus(v *ClientVpnAuthorizationRuleStatus) *RevokeClientVpnIngressOutput { + s.Status = v + return s +} + +type RevokeSecurityGroupEgressInput struct { + _ struct{} `type:"structure"` + + // Not supported. Use a set of IP permissions to specify the CIDR. + CidrIp *string `locationName:"cidrIp" type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // Not supported. Use a set of IP permissions to specify the port. + FromPort *int64 `locationName:"fromPort" type:"integer"` + + // The ID of the security group. + // + // GroupId is a required field + GroupId *string `locationName:"groupId" type:"string" required:"true"` + + // The sets of IP permissions. You can't specify a destination security group + // and a CIDR IP address range in the same set of permissions. + IpPermissions []*IpPermission `locationName:"ipPermissions" locationNameList:"item" type:"list"` + + // Not supported. Use a set of IP permissions to specify the protocol name or + // number. + IpProtocol *string `locationName:"ipProtocol" type:"string"` + + // Not supported. Use a set of IP permissions to specify a destination security + // group. + SourceSecurityGroupName *string `locationName:"sourceSecurityGroupName" type:"string"` + + // Not supported. Use a set of IP permissions to specify a destination security + // group. + SourceSecurityGroupOwnerId *string `locationName:"sourceSecurityGroupOwnerId" type:"string"` + + // Not supported. Use a set of IP permissions to specify the port. + ToPort *int64 `locationName:"toPort" type:"integer"` +} + +// String returns the string representation +func (s RevokeSecurityGroupEgressInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RevokeSecurityGroupEgressInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RevokeSecurityGroupEgressInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RevokeSecurityGroupEgressInput"} + if s.GroupId == nil { + invalidParams.Add(request.NewErrParamRequired("GroupId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCidrIp sets the CidrIp field's value. +func (s *RevokeSecurityGroupEgressInput) SetCidrIp(v string) *RevokeSecurityGroupEgressInput { + s.CidrIp = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *RevokeSecurityGroupEgressInput) SetDryRun(v bool) *RevokeSecurityGroupEgressInput { + s.DryRun = &v + return s +} + +// SetFromPort sets the FromPort field's value. +func (s *RevokeSecurityGroupEgressInput) SetFromPort(v int64) *RevokeSecurityGroupEgressInput { + s.FromPort = &v + return s +} + +// SetGroupId sets the GroupId field's value. +func (s *RevokeSecurityGroupEgressInput) SetGroupId(v string) *RevokeSecurityGroupEgressInput { + s.GroupId = &v + return s +} + +// SetIpPermissions sets the IpPermissions field's value. +func (s *RevokeSecurityGroupEgressInput) SetIpPermissions(v []*IpPermission) *RevokeSecurityGroupEgressInput { + s.IpPermissions = v + return s +} + +// SetIpProtocol sets the IpProtocol field's value. +func (s *RevokeSecurityGroupEgressInput) SetIpProtocol(v string) *RevokeSecurityGroupEgressInput { + s.IpProtocol = &v + return s +} + +// SetSourceSecurityGroupName sets the SourceSecurityGroupName field's value. +func (s *RevokeSecurityGroupEgressInput) SetSourceSecurityGroupName(v string) *RevokeSecurityGroupEgressInput { + s.SourceSecurityGroupName = &v + return s +} + +// SetSourceSecurityGroupOwnerId sets the SourceSecurityGroupOwnerId field's value. +func (s *RevokeSecurityGroupEgressInput) SetSourceSecurityGroupOwnerId(v string) *RevokeSecurityGroupEgressInput { + s.SourceSecurityGroupOwnerId = &v + return s +} + +// SetToPort sets the ToPort field's value. +func (s *RevokeSecurityGroupEgressInput) SetToPort(v int64) *RevokeSecurityGroupEgressInput { + s.ToPort = &v + return s +} + +type RevokeSecurityGroupEgressOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s RevokeSecurityGroupEgressOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RevokeSecurityGroupEgressOutput) GoString() string { + return s.String() +} + +type RevokeSecurityGroupIngressInput struct { + _ struct{} `type:"structure"` + + // The CIDR IP address range. You can't specify this parameter when specifying + // a source security group. + CidrIp *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The start of port range for the TCP and UDP protocols, or an ICMP type number. + // For the ICMP type number, use -1 to specify all ICMP types. + FromPort *int64 `type:"integer"` + + // The ID of the security group. You must specify either the security group + // ID or the security group name in the request. For security groups in a nondefault + // VPC, you must specify the security group ID. + GroupId *string `type:"string"` + + // [EC2-Classic, default VPC] The name of the security group. You must specify + // either the security group ID or the security group name in the request. + GroupName *string `type:"string"` + + // The sets of IP permissions. You can't specify a source security group and + // a CIDR IP address range in the same set of permissions. + IpPermissions []*IpPermission `locationNameList:"item" type:"list"` + + // The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers (http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)). + // Use -1 to specify all. + IpProtocol *string `type:"string"` + + // [EC2-Classic, default VPC] The name of the source security group. You can't + // specify this parameter in combination with the following parameters: the + // CIDR IP address range, the start of the port range, the IP protocol, and + // the end of the port range. For EC2-VPC, the source security group must be + // in the same VPC. To revoke a specific rule for an IP protocol and port range, + // use a set of IP permissions instead. + SourceSecurityGroupName *string `type:"string"` + + // [EC2-Classic] The AWS account ID of the source security group, if the source + // security group is in a different account. You can't specify this parameter + // in combination with the following parameters: the CIDR IP address range, + // the IP protocol, the start of the port range, and the end of the port range. + // To revoke a specific rule for an IP protocol and port range, use a set of + // IP permissions instead. + SourceSecurityGroupOwnerId *string `type:"string"` + + // The end of port range for the TCP and UDP protocols, or an ICMP code number. + // For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type. + ToPort *int64 `type:"integer"` +} + +// String returns the string representation +func (s RevokeSecurityGroupIngressInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RevokeSecurityGroupIngressInput) GoString() string { + return s.String() +} + +// SetCidrIp sets the CidrIp field's value. +func (s *RevokeSecurityGroupIngressInput) SetCidrIp(v string) *RevokeSecurityGroupIngressInput { + s.CidrIp = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *RevokeSecurityGroupIngressInput) SetDryRun(v bool) *RevokeSecurityGroupIngressInput { + s.DryRun = &v + return s +} + +// SetFromPort sets the FromPort field's value. +func (s *RevokeSecurityGroupIngressInput) SetFromPort(v int64) *RevokeSecurityGroupIngressInput { + s.FromPort = &v + return s +} + +// SetGroupId sets the GroupId field's value. +func (s *RevokeSecurityGroupIngressInput) SetGroupId(v string) *RevokeSecurityGroupIngressInput { + s.GroupId = &v + return s +} + +// SetGroupName sets the GroupName field's value. +func (s *RevokeSecurityGroupIngressInput) SetGroupName(v string) *RevokeSecurityGroupIngressInput { + s.GroupName = &v + return s +} + +// SetIpPermissions sets the IpPermissions field's value. +func (s *RevokeSecurityGroupIngressInput) SetIpPermissions(v []*IpPermission) *RevokeSecurityGroupIngressInput { + s.IpPermissions = v + return s +} + +// SetIpProtocol sets the IpProtocol field's value. +func (s *RevokeSecurityGroupIngressInput) SetIpProtocol(v string) *RevokeSecurityGroupIngressInput { + s.IpProtocol = &v + return s +} + +// SetSourceSecurityGroupName sets the SourceSecurityGroupName field's value. +func (s *RevokeSecurityGroupIngressInput) SetSourceSecurityGroupName(v string) *RevokeSecurityGroupIngressInput { + s.SourceSecurityGroupName = &v + return s +} + +// SetSourceSecurityGroupOwnerId sets the SourceSecurityGroupOwnerId field's value. +func (s *RevokeSecurityGroupIngressInput) SetSourceSecurityGroupOwnerId(v string) *RevokeSecurityGroupIngressInput { + s.SourceSecurityGroupOwnerId = &v + return s +} + +// SetToPort sets the ToPort field's value. +func (s *RevokeSecurityGroupIngressInput) SetToPort(v int64) *RevokeSecurityGroupIngressInput { + s.ToPort = &v + return s +} + +type RevokeSecurityGroupIngressOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s RevokeSecurityGroupIngressOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RevokeSecurityGroupIngressOutput) GoString() string { + return s.String() +} + +// Describes a route in a route table. +type Route struct { + _ struct{} `type:"structure"` + + // The IPv4 CIDR block used for the destination match. + DestinationCidrBlock *string `locationName:"destinationCidrBlock" type:"string"` + + // The IPv6 CIDR block used for the destination match. + DestinationIpv6CidrBlock *string `locationName:"destinationIpv6CidrBlock" type:"string"` + + // The prefix of the AWS service. + DestinationPrefixListId *string `locationName:"destinationPrefixListId" type:"string"` + + // The ID of the egress-only internet gateway. + EgressOnlyInternetGatewayId *string `locationName:"egressOnlyInternetGatewayId" type:"string"` + + // The ID of a gateway attached to your VPC. + GatewayId *string `locationName:"gatewayId" type:"string"` + + // The ID of a NAT instance in your VPC. + InstanceId *string `locationName:"instanceId" type:"string"` + + // The AWS account ID of the owner of the instance. + InstanceOwnerId *string `locationName:"instanceOwnerId" type:"string"` + + // The ID of a NAT gateway. + NatGatewayId *string `locationName:"natGatewayId" type:"string"` + + // The ID of the network interface. + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` + + // Describes how the route was created. + // + // * CreateRouteTable - The route was automatically created when the route + // table was created. + // + // * CreateRoute - The route was manually added to the route table. + // + // * EnableVgwRoutePropagation - The route was propagated by route propagation. + Origin *string `locationName:"origin" type:"string" enum:"RouteOrigin"` + + // The state of the route. The blackhole state indicates that the route's target + // isn't available (for example, the specified gateway isn't attached to the + // VPC, or the specified NAT instance has been terminated). + State *string `locationName:"state" type:"string" enum:"RouteState"` + + // The ID of a transit gateway. + TransitGatewayId *string `locationName:"transitGatewayId" type:"string"` + + // The ID of a VPC peering connection. + VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string"` +} + +// String returns the string representation +func (s Route) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Route) GoString() string { + return s.String() +} + +// SetDestinationCidrBlock sets the DestinationCidrBlock field's value. +func (s *Route) SetDestinationCidrBlock(v string) *Route { + s.DestinationCidrBlock = &v + return s +} + +// SetDestinationIpv6CidrBlock sets the DestinationIpv6CidrBlock field's value. +func (s *Route) SetDestinationIpv6CidrBlock(v string) *Route { + s.DestinationIpv6CidrBlock = &v + return s +} + +// SetDestinationPrefixListId sets the DestinationPrefixListId field's value. +func (s *Route) SetDestinationPrefixListId(v string) *Route { + s.DestinationPrefixListId = &v + return s +} + +// SetEgressOnlyInternetGatewayId sets the EgressOnlyInternetGatewayId field's value. +func (s *Route) SetEgressOnlyInternetGatewayId(v string) *Route { + s.EgressOnlyInternetGatewayId = &v + return s +} + +// SetGatewayId sets the GatewayId field's value. +func (s *Route) SetGatewayId(v string) *Route { + s.GatewayId = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *Route) SetInstanceId(v string) *Route { + s.InstanceId = &v + return s +} + +// SetInstanceOwnerId sets the InstanceOwnerId field's value. +func (s *Route) SetInstanceOwnerId(v string) *Route { + s.InstanceOwnerId = &v + return s +} + +// SetNatGatewayId sets the NatGatewayId field's value. +func (s *Route) SetNatGatewayId(v string) *Route { + s.NatGatewayId = &v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *Route) SetNetworkInterfaceId(v string) *Route { + s.NetworkInterfaceId = &v + return s +} + +// SetOrigin sets the Origin field's value. +func (s *Route) SetOrigin(v string) *Route { + s.Origin = &v + return s +} + +// SetState sets the State field's value. +func (s *Route) SetState(v string) *Route { + s.State = &v + return s +} + +// SetTransitGatewayId sets the TransitGatewayId field's value. +func (s *Route) SetTransitGatewayId(v string) *Route { + s.TransitGatewayId = &v + return s +} + +// SetVpcPeeringConnectionId sets the VpcPeeringConnectionId field's value. +func (s *Route) SetVpcPeeringConnectionId(v string) *Route { + s.VpcPeeringConnectionId = &v + return s +} + +// Describes a route table. +type RouteTable struct { + _ struct{} `type:"structure"` + + // The associations between the route table and one or more subnets. + Associations []*RouteTableAssociation `locationName:"associationSet" locationNameList:"item" type:"list"` + + // The ID of the AWS account that owns the route table. + OwnerId *string `locationName:"ownerId" type:"string"` + + // Any virtual private gateway (VGW) propagating routes. + PropagatingVgws []*PropagatingVgw `locationName:"propagatingVgwSet" locationNameList:"item" type:"list"` + + // The ID of the route table. + RouteTableId *string `locationName:"routeTableId" type:"string"` + + // The routes in the route table. + Routes []*Route `locationName:"routeSet" locationNameList:"item" type:"list"` + + // Any tags assigned to the route table. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The ID of the VPC. + VpcId *string `locationName:"vpcId" type:"string"` +} + +// String returns the string representation +func (s RouteTable) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RouteTable) GoString() string { + return s.String() +} + +// SetAssociations sets the Associations field's value. +func (s *RouteTable) SetAssociations(v []*RouteTableAssociation) *RouteTable { + s.Associations = v + return s +} + +// SetOwnerId sets the OwnerId field's value. +func (s *RouteTable) SetOwnerId(v string) *RouteTable { + s.OwnerId = &v + return s +} + +// SetPropagatingVgws sets the PropagatingVgws field's value. +func (s *RouteTable) SetPropagatingVgws(v []*PropagatingVgw) *RouteTable { + s.PropagatingVgws = v + return s +} + +// SetRouteTableId sets the RouteTableId field's value. +func (s *RouteTable) SetRouteTableId(v string) *RouteTable { + s.RouteTableId = &v + return s +} + +// SetRoutes sets the Routes field's value. +func (s *RouteTable) SetRoutes(v []*Route) *RouteTable { + s.Routes = v + return s +} + +// SetTags sets the Tags field's value. +func (s *RouteTable) SetTags(v []*Tag) *RouteTable { + s.Tags = v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *RouteTable) SetVpcId(v string) *RouteTable { + s.VpcId = &v + return s +} + +// Describes an association between a route table and a subnet. +type RouteTableAssociation struct { + _ struct{} `type:"structure"` + + // Indicates whether this is the main route table. + Main *bool `locationName:"main" type:"boolean"` + + // The ID of the association between a route table and a subnet. + RouteTableAssociationId *string `locationName:"routeTableAssociationId" type:"string"` + + // The ID of the route table. + RouteTableId *string `locationName:"routeTableId" type:"string"` + + // The ID of the subnet. A subnet ID is not returned for an implicit association. + SubnetId *string `locationName:"subnetId" type:"string"` +} + +// String returns the string representation +func (s RouteTableAssociation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RouteTableAssociation) GoString() string { + return s.String() +} + +// SetMain sets the Main field's value. +func (s *RouteTableAssociation) SetMain(v bool) *RouteTableAssociation { + s.Main = &v + return s +} + +// SetRouteTableAssociationId sets the RouteTableAssociationId field's value. +func (s *RouteTableAssociation) SetRouteTableAssociationId(v string) *RouteTableAssociation { + s.RouteTableAssociationId = &v + return s +} + +// SetRouteTableId sets the RouteTableId field's value. +func (s *RouteTableAssociation) SetRouteTableId(v string) *RouteTableAssociation { + s.RouteTableId = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *RouteTableAssociation) SetSubnetId(v string) *RouteTableAssociation { + s.SubnetId = &v + return s +} + +type RunInstancesInput struct { + _ struct{} `type:"structure"` + + // Reserved. + AdditionalInfo *string `locationName:"additionalInfo" type:"string"` + + // The block device mapping entries. + BlockDeviceMappings []*BlockDeviceMapping `locationName:"BlockDeviceMapping" locationNameList:"BlockDeviceMapping" type:"list"` + + // Information about the Capacity Reservation targeting option. If you do not + // specify this parameter, the instance's Capacity Reservation preference defaults + // to open, which enables it to run in any open Capacity Reservation that has + // matching attributes (instance type, platform, Availability Zone). + CapacityReservationSpecification *CapacityReservationSpecification `type:"structure"` + + // Unique, case-sensitive identifier you provide to ensure the idempotency of + // the request. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + // + // Constraints: Maximum 64 ASCII characters + ClientToken *string `locationName:"clientToken" type:"string"` + + // The CPU options for the instance. For more information, see Optimizing CPU + // Options (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html) + // in the Amazon Elastic Compute Cloud User Guide. + CpuOptions *CpuOptionsRequest `type:"structure"` + + // The credit option for CPU usage of the T2 or T3 instance. Valid values are + // standard and unlimited. To change this attribute after launch, use ModifyInstanceCreditSpecification + // (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceCreditSpecification.html). + // For more information, see Burstable Performance Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html) + // in the Amazon Elastic Compute Cloud User Guide. + // + // Default: standard (T2 instances) or unlimited (T3 instances) + CreditSpecification *CreditSpecificationRequest `type:"structure"` + + // If you set this parameter to true, you can't terminate the instance using + // the Amazon EC2 console, CLI, or API; otherwise, you can. To change this attribute + // after launch, use ModifyInstanceAttribute (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceAttribute.html). + // Alternatively, if you set InstanceInitiatedShutdownBehavior to terminate, + // you can terminate the instance by running the shutdown command from the instance. + // + // Default: false + DisableApiTermination *bool `locationName:"disableApiTermination" type:"boolean"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // Indicates whether the instance is optimized for Amazon EBS I/O. This optimization + // provides dedicated throughput to Amazon EBS and an optimized configuration + // stack to provide optimal Amazon EBS I/O performance. This optimization isn't + // available with all instance types. Additional usage charges apply when using + // an EBS-optimized instance. + // + // Default: false + EbsOptimized *bool `locationName:"ebsOptimized" type:"boolean"` + + // An elastic GPU to associate with the instance. An Elastic GPU is a GPU resource + // that you can attach to your Windows instance to accelerate the graphics performance + // of your applications. For more information, see Amazon EC2 Elastic GPUs (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/elastic-graphics.html) + // in the Amazon Elastic Compute Cloud User Guide. + ElasticGpuSpecification []*ElasticGpuSpecification `locationNameList:"item" type:"list"` + + // An elastic inference accelerator to associate with the instance. Elastic + // inference accelerators are a resource you can attach to your Amazon EC2 instances + // to accelerate your Deep Learning (DL) inference workloads. + ElasticInferenceAccelerators []*ElasticInferenceAccelerator `locationName:"ElasticInferenceAccelerator" locationNameList:"item" type:"list"` + + // Indicates whether an instance is enabled for hibernation. For more information, + // see Hibernate Your Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html) + // in the Amazon Elastic Compute Cloud User Guide. + HibernationOptions *HibernationOptionsRequest `type:"structure"` + + // The IAM instance profile. + IamInstanceProfile *IamInstanceProfileSpecification `locationName:"iamInstanceProfile" type:"structure"` + + // The ID of the AMI. An AMI ID is required to launch an instance and must be + // specified here or in a launch template. + ImageId *string `type:"string"` + + // Indicates whether an instance stops or terminates when you initiate shutdown + // from the instance (using the operating system command for system shutdown). + // + // Default: stop + InstanceInitiatedShutdownBehavior *string `locationName:"instanceInitiatedShutdownBehavior" type:"string" enum:"ShutdownBehavior"` + + // The market (purchasing) option for the instances. + // + // For RunInstances, persistent Spot Instance requests are only supported when + // InstanceInterruptionBehavior is set to either hibernate or stop. + InstanceMarketOptions *InstanceMarketOptionsRequest `type:"structure"` + + // The instance type. For more information, see Instance Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) + // in the Amazon Elastic Compute Cloud User Guide. + // + // Default: m1.small + InstanceType *string `type:"string" enum:"InstanceType"` + + // [EC2-VPC] The number of IPv6 addresses to associate with the primary network + // interface. Amazon EC2 chooses the IPv6 addresses from the range of your subnet. + // You cannot specify this option and the option to assign specific IPv6 addresses + // in the same request. You can specify this option if you've specified a minimum + // number of instances to launch. + // + // You cannot specify this option and the network interfaces option in the same + // request. + Ipv6AddressCount *int64 `type:"integer"` + + // [EC2-VPC] The IPv6 addresses from the range of the subnet to associate with + // the primary network interface. You cannot specify this option and the option + // to assign a number of IPv6 addresses in the same request. You cannot specify + // this option if you've specified a minimum number of instances to launch. + // + // You cannot specify this option and the network interfaces option in the same + // request. + Ipv6Addresses []*InstanceIpv6Address `locationName:"Ipv6Address" locationNameList:"item" type:"list"` + + // The ID of the kernel. + // + // We recommend that you use PV-GRUB instead of kernels and RAM disks. For more + // information, see PV-GRUB (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html) + // in the Amazon Elastic Compute Cloud User Guide. + KernelId *string `type:"string"` + + // The name of the key pair. You can create a key pair using CreateKeyPair (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateKeyPair.html) + // or ImportKeyPair (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ImportKeyPair.html). + // + // If you do not specify a key pair, you can't connect to the instance unless + // you choose an AMI that is configured to allow users another way to log in. + KeyName *string `type:"string"` + + // The launch template to use to launch the instances. Any parameters that you + // specify in RunInstances override the same parameters in the launch template. + // You can specify either the name or ID of a launch template, but not both. + LaunchTemplate *LaunchTemplateSpecification `type:"structure"` + + // The license configurations. + LicenseSpecifications []*LicenseConfigurationRequest `locationName:"LicenseSpecification" locationNameList:"item" type:"list"` + + // The maximum number of instances to launch. If you specify more instances + // than Amazon EC2 can launch in the target Availability Zone, Amazon EC2 launches + // the largest possible number of instances above MinCount. + // + // Constraints: Between 1 and the maximum number you're allowed for the specified + // instance type. For more information about the default limits, and how to + // request an increase, see How many instances can I run in Amazon EC2 (http://aws.amazon.com/ec2/faqs/#How_many_instances_can_I_run_in_Amazon_EC2) + // in the Amazon EC2 FAQ. + // + // MaxCount is a required field + MaxCount *int64 `type:"integer" required:"true"` + + // The minimum number of instances to launch. If you specify a minimum that + // is more instances than Amazon EC2 can launch in the target Availability Zone, + // Amazon EC2 launches no instances. + // + // Constraints: Between 1 and the maximum number you're allowed for the specified + // instance type. For more information about the default limits, and how to + // request an increase, see How many instances can I run in Amazon EC2 (http://aws.amazon.com/ec2/faqs/#How_many_instances_can_I_run_in_Amazon_EC2) + // in the Amazon EC2 General FAQ. + // + // MinCount is a required field + MinCount *int64 `type:"integer" required:"true"` + + // Specifies whether detailed monitoring is enabled for the instance. + Monitoring *RunInstancesMonitoringEnabled `type:"structure"` + + // The network interfaces to associate with the instance. If you specify a network + // interface, you must specify any security groups and subnets as part of the + // network interface. + NetworkInterfaces []*InstanceNetworkInterfaceSpecification `locationName:"networkInterface" locationNameList:"item" type:"list"` + + // The placement for the instance. + Placement *Placement `type:"structure"` + + // [EC2-VPC] The primary IPv4 address. You must specify a value from the IPv4 + // address range of the subnet. + // + // Only one private IP address can be designated as primary. You can't specify + // this option if you've specified the option to designate a private IP address + // as the primary IP address in a network interface specification. You cannot + // specify this option if you're launching more than one instance in the request. + // + // You cannot specify this option and the network interfaces option in the same + // request. + PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` + + // The ID of the RAM disk to select. Some kernels require additional drivers + // at launch. Check the kernel requirements for information about whether you + // need to specify a RAM disk. To find kernel requirements, go to the AWS Resource + // Center and search for the kernel ID. + // + // We recommend that you use PV-GRUB instead of kernels and RAM disks. For more + // information, see PV-GRUB (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html) + // in the Amazon Elastic Compute Cloud User Guide. + RamdiskId *string `type:"string"` + + // The IDs of the security groups. You can create a security group using CreateSecurityGroup + // (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateSecurityGroup.html). + // + // If you specify a network interface, you must specify any security groups + // as part of the network interface. + SecurityGroupIds []*string `locationName:"SecurityGroupId" locationNameList:"SecurityGroupId" type:"list"` + + // [EC2-Classic, default VPC] The names of the security groups. For a nondefault + // VPC, you must use security group IDs instead. + // + // If you specify a network interface, you must specify any security groups + // as part of the network interface. + // + // Default: Amazon EC2 uses the default security group. + SecurityGroups []*string `locationName:"SecurityGroup" locationNameList:"SecurityGroup" type:"list"` + + // [EC2-VPC] The ID of the subnet to launch the instance into. + // + // If you specify a network interface, you must specify any subnets as part + // of the network interface. + SubnetId *string `type:"string"` + + // The tags to apply to the resources during launch. You can only tag instances + // and volumes on launch. The specified tags are applied to all instances or + // volumes that are created during launch. To tag a resource after it has been + // created, see CreateTags (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html). + TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` + + // The user data to make available to the instance. For more information, see + // Running Commands on Your Linux Instance at Launch (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) + // (Linux) and Adding User Data (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html#instancedata-add-user-data) + // (Windows). If you are using a command line tool, base64-encoding is performed + // for you, and you can load the text from a file. Otherwise, you must provide + // base64-encoded text. User data is limited to 16 KB. + UserData *string `type:"string"` +} + +// String returns the string representation +func (s RunInstancesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RunInstancesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RunInstancesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RunInstancesInput"} + if s.MaxCount == nil { + invalidParams.Add(request.NewErrParamRequired("MaxCount")) + } + if s.MinCount == nil { + invalidParams.Add(request.NewErrParamRequired("MinCount")) + } + if s.CreditSpecification != nil { + if err := s.CreditSpecification.Validate(); err != nil { + invalidParams.AddNested("CreditSpecification", err.(request.ErrInvalidParams)) + } + } + if s.ElasticGpuSpecification != nil { + for i, v := range s.ElasticGpuSpecification { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ElasticGpuSpecification", i), err.(request.ErrInvalidParams)) + } + } + } + if s.ElasticInferenceAccelerators != nil { + for i, v := range s.ElasticInferenceAccelerators { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ElasticInferenceAccelerators", i), err.(request.ErrInvalidParams)) + } + } + } + if s.Monitoring != nil { + if err := s.Monitoring.Validate(); err != nil { + invalidParams.AddNested("Monitoring", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAdditionalInfo sets the AdditionalInfo field's value. +func (s *RunInstancesInput) SetAdditionalInfo(v string) *RunInstancesInput { + s.AdditionalInfo = &v + return s +} + +// SetBlockDeviceMappings sets the BlockDeviceMappings field's value. +func (s *RunInstancesInput) SetBlockDeviceMappings(v []*BlockDeviceMapping) *RunInstancesInput { + s.BlockDeviceMappings = v + return s +} + +// SetCapacityReservationSpecification sets the CapacityReservationSpecification field's value. +func (s *RunInstancesInput) SetCapacityReservationSpecification(v *CapacityReservationSpecification) *RunInstancesInput { + s.CapacityReservationSpecification = v + return s +} + +// SetClientToken sets the ClientToken field's value. +func (s *RunInstancesInput) SetClientToken(v string) *RunInstancesInput { + s.ClientToken = &v + return s +} + +// SetCpuOptions sets the CpuOptions field's value. +func (s *RunInstancesInput) SetCpuOptions(v *CpuOptionsRequest) *RunInstancesInput { + s.CpuOptions = v + return s +} + +// SetCreditSpecification sets the CreditSpecification field's value. +func (s *RunInstancesInput) SetCreditSpecification(v *CreditSpecificationRequest) *RunInstancesInput { + s.CreditSpecification = v + return s +} + +// SetDisableApiTermination sets the DisableApiTermination field's value. +func (s *RunInstancesInput) SetDisableApiTermination(v bool) *RunInstancesInput { + s.DisableApiTermination = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *RunInstancesInput) SetDryRun(v bool) *RunInstancesInput { + s.DryRun = &v + return s +} + +// SetEbsOptimized sets the EbsOptimized field's value. +func (s *RunInstancesInput) SetEbsOptimized(v bool) *RunInstancesInput { + s.EbsOptimized = &v + return s +} + +// SetElasticGpuSpecification sets the ElasticGpuSpecification field's value. +func (s *RunInstancesInput) SetElasticGpuSpecification(v []*ElasticGpuSpecification) *RunInstancesInput { + s.ElasticGpuSpecification = v + return s +} + +// SetElasticInferenceAccelerators sets the ElasticInferenceAccelerators field's value. +func (s *RunInstancesInput) SetElasticInferenceAccelerators(v []*ElasticInferenceAccelerator) *RunInstancesInput { + s.ElasticInferenceAccelerators = v + return s +} + +// SetHibernationOptions sets the HibernationOptions field's value. +func (s *RunInstancesInput) SetHibernationOptions(v *HibernationOptionsRequest) *RunInstancesInput { + s.HibernationOptions = v + return s +} + +// SetIamInstanceProfile sets the IamInstanceProfile field's value. +func (s *RunInstancesInput) SetIamInstanceProfile(v *IamInstanceProfileSpecification) *RunInstancesInput { + s.IamInstanceProfile = v + return s +} + +// SetImageId sets the ImageId field's value. +func (s *RunInstancesInput) SetImageId(v string) *RunInstancesInput { + s.ImageId = &v + return s +} + +// SetInstanceInitiatedShutdownBehavior sets the InstanceInitiatedShutdownBehavior field's value. +func (s *RunInstancesInput) SetInstanceInitiatedShutdownBehavior(v string) *RunInstancesInput { + s.InstanceInitiatedShutdownBehavior = &v + return s +} + +// SetInstanceMarketOptions sets the InstanceMarketOptions field's value. +func (s *RunInstancesInput) SetInstanceMarketOptions(v *InstanceMarketOptionsRequest) *RunInstancesInput { + s.InstanceMarketOptions = v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *RunInstancesInput) SetInstanceType(v string) *RunInstancesInput { + s.InstanceType = &v + return s +} + +// SetIpv6AddressCount sets the Ipv6AddressCount field's value. +func (s *RunInstancesInput) SetIpv6AddressCount(v int64) *RunInstancesInput { + s.Ipv6AddressCount = &v + return s +} + +// SetIpv6Addresses sets the Ipv6Addresses field's value. +func (s *RunInstancesInput) SetIpv6Addresses(v []*InstanceIpv6Address) *RunInstancesInput { + s.Ipv6Addresses = v + return s +} + +// SetKernelId sets the KernelId field's value. +func (s *RunInstancesInput) SetKernelId(v string) *RunInstancesInput { + s.KernelId = &v + return s +} + +// SetKeyName sets the KeyName field's value. +func (s *RunInstancesInput) SetKeyName(v string) *RunInstancesInput { + s.KeyName = &v + return s +} + +// SetLaunchTemplate sets the LaunchTemplate field's value. +func (s *RunInstancesInput) SetLaunchTemplate(v *LaunchTemplateSpecification) *RunInstancesInput { + s.LaunchTemplate = v + return s +} + +// SetLicenseSpecifications sets the LicenseSpecifications field's value. +func (s *RunInstancesInput) SetLicenseSpecifications(v []*LicenseConfigurationRequest) *RunInstancesInput { + s.LicenseSpecifications = v + return s +} + +// SetMaxCount sets the MaxCount field's value. +func (s *RunInstancesInput) SetMaxCount(v int64) *RunInstancesInput { + s.MaxCount = &v + return s +} + +// SetMinCount sets the MinCount field's value. +func (s *RunInstancesInput) SetMinCount(v int64) *RunInstancesInput { + s.MinCount = &v + return s +} + +// SetMonitoring sets the Monitoring field's value. +func (s *RunInstancesInput) SetMonitoring(v *RunInstancesMonitoringEnabled) *RunInstancesInput { + s.Monitoring = v + return s +} + +// SetNetworkInterfaces sets the NetworkInterfaces field's value. +func (s *RunInstancesInput) SetNetworkInterfaces(v []*InstanceNetworkInterfaceSpecification) *RunInstancesInput { + s.NetworkInterfaces = v + return s +} + +// SetPlacement sets the Placement field's value. +func (s *RunInstancesInput) SetPlacement(v *Placement) *RunInstancesInput { + s.Placement = v + return s +} + +// SetPrivateIpAddress sets the PrivateIpAddress field's value. +func (s *RunInstancesInput) SetPrivateIpAddress(v string) *RunInstancesInput { + s.PrivateIpAddress = &v + return s +} + +// SetRamdiskId sets the RamdiskId field's value. +func (s *RunInstancesInput) SetRamdiskId(v string) *RunInstancesInput { + s.RamdiskId = &v + return s +} + +// SetSecurityGroupIds sets the SecurityGroupIds field's value. +func (s *RunInstancesInput) SetSecurityGroupIds(v []*string) *RunInstancesInput { + s.SecurityGroupIds = v + return s +} + +// SetSecurityGroups sets the SecurityGroups field's value. +func (s *RunInstancesInput) SetSecurityGroups(v []*string) *RunInstancesInput { + s.SecurityGroups = v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *RunInstancesInput) SetSubnetId(v string) *RunInstancesInput { + s.SubnetId = &v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *RunInstancesInput) SetTagSpecifications(v []*TagSpecification) *RunInstancesInput { + s.TagSpecifications = v + return s +} + +// SetUserData sets the UserData field's value. +func (s *RunInstancesInput) SetUserData(v string) *RunInstancesInput { + s.UserData = &v + return s +} + +// Describes the monitoring of an instance. +type RunInstancesMonitoringEnabled struct { + _ struct{} `type:"structure"` + + // Indicates whether detailed monitoring is enabled. Otherwise, basic monitoring + // is enabled. + // + // Enabled is a required field + Enabled *bool `locationName:"enabled" type:"boolean" required:"true"` +} + +// String returns the string representation +func (s RunInstancesMonitoringEnabled) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RunInstancesMonitoringEnabled) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RunInstancesMonitoringEnabled) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RunInstancesMonitoringEnabled"} + if s.Enabled == nil { + invalidParams.Add(request.NewErrParamRequired("Enabled")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetEnabled sets the Enabled field's value. +func (s *RunInstancesMonitoringEnabled) SetEnabled(v bool) *RunInstancesMonitoringEnabled { + s.Enabled = &v + return s +} + +// Contains the parameters for RunScheduledInstances. +type RunScheduledInstancesInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that ensures the idempotency of the request. + // For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `type:"string" idempotencyToken:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The number of instances. + // + // Default: 1 + InstanceCount *int64 `type:"integer"` + + // The launch specification. You must match the instance type, Availability + // Zone, network, and platform of the schedule that you purchased. + // + // LaunchSpecification is a required field + LaunchSpecification *ScheduledInstancesLaunchSpecification `type:"structure" required:"true"` + + // The Scheduled Instance ID. + // + // ScheduledInstanceId is a required field + ScheduledInstanceId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s RunScheduledInstancesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RunScheduledInstancesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RunScheduledInstancesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RunScheduledInstancesInput"} + if s.LaunchSpecification == nil { + invalidParams.Add(request.NewErrParamRequired("LaunchSpecification")) + } + if s.ScheduledInstanceId == nil { + invalidParams.Add(request.NewErrParamRequired("ScheduledInstanceId")) + } + if s.LaunchSpecification != nil { + if err := s.LaunchSpecification.Validate(); err != nil { + invalidParams.AddNested("LaunchSpecification", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *RunScheduledInstancesInput) SetClientToken(v string) *RunScheduledInstancesInput { + s.ClientToken = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *RunScheduledInstancesInput) SetDryRun(v bool) *RunScheduledInstancesInput { + s.DryRun = &v + return s +} + +// SetInstanceCount sets the InstanceCount field's value. +func (s *RunScheduledInstancesInput) SetInstanceCount(v int64) *RunScheduledInstancesInput { + s.InstanceCount = &v + return s +} + +// SetLaunchSpecification sets the LaunchSpecification field's value. +func (s *RunScheduledInstancesInput) SetLaunchSpecification(v *ScheduledInstancesLaunchSpecification) *RunScheduledInstancesInput { + s.LaunchSpecification = v + return s +} + +// SetScheduledInstanceId sets the ScheduledInstanceId field's value. +func (s *RunScheduledInstancesInput) SetScheduledInstanceId(v string) *RunScheduledInstancesInput { + s.ScheduledInstanceId = &v + return s +} + +// Contains the output of RunScheduledInstances. +type RunScheduledInstancesOutput struct { + _ struct{} `type:"structure"` + + // The IDs of the newly launched instances. + InstanceIdSet []*string `locationName:"instanceIdSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s RunScheduledInstancesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RunScheduledInstancesOutput) GoString() string { + return s.String() +} + +// SetInstanceIdSet sets the InstanceIdSet field's value. +func (s *RunScheduledInstancesOutput) SetInstanceIdSet(v []*string) *RunScheduledInstancesOutput { + s.InstanceIdSet = v + return s +} + +// Describes the storage parameters for S3 and S3 buckets for an instance store-backed +// AMI. +type S3Storage struct { + _ struct{} `type:"structure"` + + // The access key ID of the owner of the bucket. Before you specify a value + // for your access key ID, review and follow the guidance in Best Practices + // for Managing AWS Access Keys (https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html). + AWSAccessKeyId *string `type:"string"` + + // The bucket in which to store the AMI. You can specify a bucket that you already + // own or a new bucket that Amazon EC2 creates on your behalf. If you specify + // a bucket that belongs to someone else, Amazon EC2 returns an error. + Bucket *string `locationName:"bucket" type:"string"` + + // The beginning of the file name of the AMI. + Prefix *string `locationName:"prefix" type:"string"` + + // An Amazon S3 upload policy that gives Amazon EC2 permission to upload items + // into Amazon S3 on your behalf. + // + // UploadPolicy is automatically base64 encoded/decoded by the SDK. + UploadPolicy []byte `locationName:"uploadPolicy" type:"blob"` + + // The signature of the JSON document. + UploadPolicySignature *string `locationName:"uploadPolicySignature" type:"string"` +} + +// String returns the string representation +func (s S3Storage) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s S3Storage) GoString() string { + return s.String() +} + +// SetAWSAccessKeyId sets the AWSAccessKeyId field's value. +func (s *S3Storage) SetAWSAccessKeyId(v string) *S3Storage { + s.AWSAccessKeyId = &v + return s +} + +// SetBucket sets the Bucket field's value. +func (s *S3Storage) SetBucket(v string) *S3Storage { + s.Bucket = &v + return s +} + +// SetPrefix sets the Prefix field's value. +func (s *S3Storage) SetPrefix(v string) *S3Storage { + s.Prefix = &v + return s +} + +// SetUploadPolicy sets the UploadPolicy field's value. +func (s *S3Storage) SetUploadPolicy(v []byte) *S3Storage { + s.UploadPolicy = v + return s +} + +// SetUploadPolicySignature sets the UploadPolicySignature field's value. +func (s *S3Storage) SetUploadPolicySignature(v string) *S3Storage { + s.UploadPolicySignature = &v + return s +} + +// Describes a Scheduled Instance. +type ScheduledInstance struct { + _ struct{} `type:"structure"` + + // The Availability Zone. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // The date when the Scheduled Instance was purchased. + CreateDate *time.Time `locationName:"createDate" type:"timestamp"` + + // The hourly price for a single instance. + HourlyPrice *string `locationName:"hourlyPrice" type:"string"` + + // The number of instances. + InstanceCount *int64 `locationName:"instanceCount" type:"integer"` + + // The instance type. + InstanceType *string `locationName:"instanceType" type:"string"` + + // The network platform (EC2-Classic or EC2-VPC). + NetworkPlatform *string `locationName:"networkPlatform" type:"string"` + + // The time for the next schedule to start. + NextSlotStartTime *time.Time `locationName:"nextSlotStartTime" type:"timestamp"` + + // The platform (Linux/UNIX or Windows). + Platform *string `locationName:"platform" type:"string"` + + // The time that the previous schedule ended or will end. + PreviousSlotEndTime *time.Time `locationName:"previousSlotEndTime" type:"timestamp"` + + // The schedule recurrence. + Recurrence *ScheduledInstanceRecurrence `locationName:"recurrence" type:"structure"` + + // The Scheduled Instance ID. + ScheduledInstanceId *string `locationName:"scheduledInstanceId" type:"string"` + + // The number of hours in the schedule. + SlotDurationInHours *int64 `locationName:"slotDurationInHours" type:"integer"` + + // The end date for the Scheduled Instance. + TermEndDate *time.Time `locationName:"termEndDate" type:"timestamp"` + + // The start date for the Scheduled Instance. + TermStartDate *time.Time `locationName:"termStartDate" type:"timestamp"` + + // The total number of hours for a single instance for the entire term. + TotalScheduledInstanceHours *int64 `locationName:"totalScheduledInstanceHours" type:"integer"` +} + +// String returns the string representation +func (s ScheduledInstance) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ScheduledInstance) GoString() string { + return s.String() +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *ScheduledInstance) SetAvailabilityZone(v string) *ScheduledInstance { + s.AvailabilityZone = &v + return s +} + +// SetCreateDate sets the CreateDate field's value. +func (s *ScheduledInstance) SetCreateDate(v time.Time) *ScheduledInstance { + s.CreateDate = &v + return s +} + +// SetHourlyPrice sets the HourlyPrice field's value. +func (s *ScheduledInstance) SetHourlyPrice(v string) *ScheduledInstance { + s.HourlyPrice = &v + return s +} + +// SetInstanceCount sets the InstanceCount field's value. +func (s *ScheduledInstance) SetInstanceCount(v int64) *ScheduledInstance { + s.InstanceCount = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *ScheduledInstance) SetInstanceType(v string) *ScheduledInstance { + s.InstanceType = &v + return s +} + +// SetNetworkPlatform sets the NetworkPlatform field's value. +func (s *ScheduledInstance) SetNetworkPlatform(v string) *ScheduledInstance { + s.NetworkPlatform = &v + return s +} + +// SetNextSlotStartTime sets the NextSlotStartTime field's value. +func (s *ScheduledInstance) SetNextSlotStartTime(v time.Time) *ScheduledInstance { + s.NextSlotStartTime = &v + return s +} + +// SetPlatform sets the Platform field's value. +func (s *ScheduledInstance) SetPlatform(v string) *ScheduledInstance { + s.Platform = &v + return s +} + +// SetPreviousSlotEndTime sets the PreviousSlotEndTime field's value. +func (s *ScheduledInstance) SetPreviousSlotEndTime(v time.Time) *ScheduledInstance { + s.PreviousSlotEndTime = &v + return s +} + +// SetRecurrence sets the Recurrence field's value. +func (s *ScheduledInstance) SetRecurrence(v *ScheduledInstanceRecurrence) *ScheduledInstance { + s.Recurrence = v + return s +} + +// SetScheduledInstanceId sets the ScheduledInstanceId field's value. +func (s *ScheduledInstance) SetScheduledInstanceId(v string) *ScheduledInstance { + s.ScheduledInstanceId = &v + return s +} + +// SetSlotDurationInHours sets the SlotDurationInHours field's value. +func (s *ScheduledInstance) SetSlotDurationInHours(v int64) *ScheduledInstance { + s.SlotDurationInHours = &v + return s +} + +// SetTermEndDate sets the TermEndDate field's value. +func (s *ScheduledInstance) SetTermEndDate(v time.Time) *ScheduledInstance { + s.TermEndDate = &v + return s +} + +// SetTermStartDate sets the TermStartDate field's value. +func (s *ScheduledInstance) SetTermStartDate(v time.Time) *ScheduledInstance { + s.TermStartDate = &v + return s +} + +// SetTotalScheduledInstanceHours sets the TotalScheduledInstanceHours field's value. +func (s *ScheduledInstance) SetTotalScheduledInstanceHours(v int64) *ScheduledInstance { + s.TotalScheduledInstanceHours = &v + return s +} + +// Describes a schedule that is available for your Scheduled Instances. +type ScheduledInstanceAvailability struct { + _ struct{} `type:"structure"` + + // The Availability Zone. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // The number of available instances. + AvailableInstanceCount *int64 `locationName:"availableInstanceCount" type:"integer"` + + // The time period for the first schedule to start. + FirstSlotStartTime *time.Time `locationName:"firstSlotStartTime" type:"timestamp"` + + // The hourly price for a single instance. + HourlyPrice *string `locationName:"hourlyPrice" type:"string"` + + // The instance type. You can specify one of the C3, C4, M4, or R3 instance + // types. + InstanceType *string `locationName:"instanceType" type:"string"` + + // The maximum term. The only possible value is 365 days. + MaxTermDurationInDays *int64 `locationName:"maxTermDurationInDays" type:"integer"` + + // The minimum term. The only possible value is 365 days. + MinTermDurationInDays *int64 `locationName:"minTermDurationInDays" type:"integer"` + + // The network platform (EC2-Classic or EC2-VPC). + NetworkPlatform *string `locationName:"networkPlatform" type:"string"` + + // The platform (Linux/UNIX or Windows). + Platform *string `locationName:"platform" type:"string"` + + // The purchase token. This token expires in two hours. + PurchaseToken *string `locationName:"purchaseToken" type:"string"` + + // The schedule recurrence. + Recurrence *ScheduledInstanceRecurrence `locationName:"recurrence" type:"structure"` + + // The number of hours in the schedule. + SlotDurationInHours *int64 `locationName:"slotDurationInHours" type:"integer"` + + // The total number of hours for a single instance for the entire term. + TotalScheduledInstanceHours *int64 `locationName:"totalScheduledInstanceHours" type:"integer"` +} + +// String returns the string representation +func (s ScheduledInstanceAvailability) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ScheduledInstanceAvailability) GoString() string { + return s.String() +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *ScheduledInstanceAvailability) SetAvailabilityZone(v string) *ScheduledInstanceAvailability { + s.AvailabilityZone = &v + return s +} + +// SetAvailableInstanceCount sets the AvailableInstanceCount field's value. +func (s *ScheduledInstanceAvailability) SetAvailableInstanceCount(v int64) *ScheduledInstanceAvailability { + s.AvailableInstanceCount = &v + return s +} + +// SetFirstSlotStartTime sets the FirstSlotStartTime field's value. +func (s *ScheduledInstanceAvailability) SetFirstSlotStartTime(v time.Time) *ScheduledInstanceAvailability { + s.FirstSlotStartTime = &v + return s +} + +// SetHourlyPrice sets the HourlyPrice field's value. +func (s *ScheduledInstanceAvailability) SetHourlyPrice(v string) *ScheduledInstanceAvailability { + s.HourlyPrice = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *ScheduledInstanceAvailability) SetInstanceType(v string) *ScheduledInstanceAvailability { + s.InstanceType = &v + return s +} + +// SetMaxTermDurationInDays sets the MaxTermDurationInDays field's value. +func (s *ScheduledInstanceAvailability) SetMaxTermDurationInDays(v int64) *ScheduledInstanceAvailability { + s.MaxTermDurationInDays = &v + return s +} + +// SetMinTermDurationInDays sets the MinTermDurationInDays field's value. +func (s *ScheduledInstanceAvailability) SetMinTermDurationInDays(v int64) *ScheduledInstanceAvailability { + s.MinTermDurationInDays = &v + return s +} + +// SetNetworkPlatform sets the NetworkPlatform field's value. +func (s *ScheduledInstanceAvailability) SetNetworkPlatform(v string) *ScheduledInstanceAvailability { + s.NetworkPlatform = &v + return s +} + +// SetPlatform sets the Platform field's value. +func (s *ScheduledInstanceAvailability) SetPlatform(v string) *ScheduledInstanceAvailability { + s.Platform = &v + return s +} + +// SetPurchaseToken sets the PurchaseToken field's value. +func (s *ScheduledInstanceAvailability) SetPurchaseToken(v string) *ScheduledInstanceAvailability { + s.PurchaseToken = &v + return s +} + +// SetRecurrence sets the Recurrence field's value. +func (s *ScheduledInstanceAvailability) SetRecurrence(v *ScheduledInstanceRecurrence) *ScheduledInstanceAvailability { + s.Recurrence = v + return s +} + +// SetSlotDurationInHours sets the SlotDurationInHours field's value. +func (s *ScheduledInstanceAvailability) SetSlotDurationInHours(v int64) *ScheduledInstanceAvailability { + s.SlotDurationInHours = &v + return s +} + +// SetTotalScheduledInstanceHours sets the TotalScheduledInstanceHours field's value. +func (s *ScheduledInstanceAvailability) SetTotalScheduledInstanceHours(v int64) *ScheduledInstanceAvailability { + s.TotalScheduledInstanceHours = &v + return s +} + +// Describes the recurring schedule for a Scheduled Instance. +type ScheduledInstanceRecurrence struct { + _ struct{} `type:"structure"` + + // The frequency (Daily, Weekly, or Monthly). + Frequency *string `locationName:"frequency" type:"string"` + + // The interval quantity. The interval unit depends on the value of frequency. + // For example, every 2 weeks or every 2 months. + Interval *int64 `locationName:"interval" type:"integer"` + + // The days. For a monthly schedule, this is one or more days of the month (1-31). + // For a weekly schedule, this is one or more days of the week (1-7, where 1 + // is Sunday). + OccurrenceDaySet []*int64 `locationName:"occurrenceDaySet" locationNameList:"item" type:"list"` + + // Indicates whether the occurrence is relative to the end of the specified + // week or month. + OccurrenceRelativeToEnd *bool `locationName:"occurrenceRelativeToEnd" type:"boolean"` + + // The unit for occurrenceDaySet (DayOfWeek or DayOfMonth). + OccurrenceUnit *string `locationName:"occurrenceUnit" type:"string"` +} + +// String returns the string representation +func (s ScheduledInstanceRecurrence) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ScheduledInstanceRecurrence) GoString() string { + return s.String() +} + +// SetFrequency sets the Frequency field's value. +func (s *ScheduledInstanceRecurrence) SetFrequency(v string) *ScheduledInstanceRecurrence { + s.Frequency = &v + return s +} + +// SetInterval sets the Interval field's value. +func (s *ScheduledInstanceRecurrence) SetInterval(v int64) *ScheduledInstanceRecurrence { + s.Interval = &v + return s +} + +// SetOccurrenceDaySet sets the OccurrenceDaySet field's value. +func (s *ScheduledInstanceRecurrence) SetOccurrenceDaySet(v []*int64) *ScheduledInstanceRecurrence { + s.OccurrenceDaySet = v + return s +} + +// SetOccurrenceRelativeToEnd sets the OccurrenceRelativeToEnd field's value. +func (s *ScheduledInstanceRecurrence) SetOccurrenceRelativeToEnd(v bool) *ScheduledInstanceRecurrence { + s.OccurrenceRelativeToEnd = &v + return s +} + +// SetOccurrenceUnit sets the OccurrenceUnit field's value. +func (s *ScheduledInstanceRecurrence) SetOccurrenceUnit(v string) *ScheduledInstanceRecurrence { + s.OccurrenceUnit = &v + return s +} + +// Describes the recurring schedule for a Scheduled Instance. +type ScheduledInstanceRecurrenceRequest struct { + _ struct{} `type:"structure"` + + // The frequency (Daily, Weekly, or Monthly). + Frequency *string `type:"string"` + + // The interval quantity. The interval unit depends on the value of Frequency. + // For example, every 2 weeks or every 2 months. + Interval *int64 `type:"integer"` + + // The days. For a monthly schedule, this is one or more days of the month (1-31). + // For a weekly schedule, this is one or more days of the week (1-7, where 1 + // is Sunday). You can't specify this value with a daily schedule. If the occurrence + // is relative to the end of the month, you can specify only a single day. + OccurrenceDays []*int64 `locationName:"OccurrenceDay" locationNameList:"OccurenceDay" type:"list"` + + // Indicates whether the occurrence is relative to the end of the specified + // week or month. You can't specify this value with a daily schedule. + OccurrenceRelativeToEnd *bool `type:"boolean"` + + // The unit for OccurrenceDays (DayOfWeek or DayOfMonth). This value is required + // for a monthly schedule. You can't specify DayOfWeek with a weekly schedule. + // You can't specify this value with a daily schedule. + OccurrenceUnit *string `type:"string"` +} + +// String returns the string representation +func (s ScheduledInstanceRecurrenceRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ScheduledInstanceRecurrenceRequest) GoString() string { + return s.String() +} + +// SetFrequency sets the Frequency field's value. +func (s *ScheduledInstanceRecurrenceRequest) SetFrequency(v string) *ScheduledInstanceRecurrenceRequest { + s.Frequency = &v + return s +} + +// SetInterval sets the Interval field's value. +func (s *ScheduledInstanceRecurrenceRequest) SetInterval(v int64) *ScheduledInstanceRecurrenceRequest { + s.Interval = &v + return s +} + +// SetOccurrenceDays sets the OccurrenceDays field's value. +func (s *ScheduledInstanceRecurrenceRequest) SetOccurrenceDays(v []*int64) *ScheduledInstanceRecurrenceRequest { + s.OccurrenceDays = v + return s +} + +// SetOccurrenceRelativeToEnd sets the OccurrenceRelativeToEnd field's value. +func (s *ScheduledInstanceRecurrenceRequest) SetOccurrenceRelativeToEnd(v bool) *ScheduledInstanceRecurrenceRequest { + s.OccurrenceRelativeToEnd = &v + return s +} + +// SetOccurrenceUnit sets the OccurrenceUnit field's value. +func (s *ScheduledInstanceRecurrenceRequest) SetOccurrenceUnit(v string) *ScheduledInstanceRecurrenceRequest { + s.OccurrenceUnit = &v + return s +} + +// Describes a block device mapping for a Scheduled Instance. +type ScheduledInstancesBlockDeviceMapping struct { + _ struct{} `type:"structure"` + + // The device name (for example, /dev/sdh or xvdh). + DeviceName *string `type:"string"` + + // Parameters used to set up EBS volumes automatically when the instance is + // launched. + Ebs *ScheduledInstancesEbs `type:"structure"` + + // Suppresses the specified device included in the block device mapping of the + // AMI. + NoDevice *string `type:"string"` + + // The virtual device name (ephemeralN). Instance store volumes are numbered + // starting from 0. An instance type with two available instance store volumes + // can specify mappings for ephemeral0 and ephemeral1. The number of available + // instance store volumes depends on the instance type. After you connect to + // the instance, you must mount the volume. + // + // Constraints: For M3 instances, you must specify instance store volumes in + // the block device mapping for the instance. When you launch an M3 instance, + // we ignore any instance store volumes specified in the block device mapping + // for the AMI. + VirtualName *string `type:"string"` +} + +// String returns the string representation +func (s ScheduledInstancesBlockDeviceMapping) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ScheduledInstancesBlockDeviceMapping) GoString() string { + return s.String() +} + +// SetDeviceName sets the DeviceName field's value. +func (s *ScheduledInstancesBlockDeviceMapping) SetDeviceName(v string) *ScheduledInstancesBlockDeviceMapping { + s.DeviceName = &v + return s +} + +// SetEbs sets the Ebs field's value. +func (s *ScheduledInstancesBlockDeviceMapping) SetEbs(v *ScheduledInstancesEbs) *ScheduledInstancesBlockDeviceMapping { + s.Ebs = v + return s +} + +// SetNoDevice sets the NoDevice field's value. +func (s *ScheduledInstancesBlockDeviceMapping) SetNoDevice(v string) *ScheduledInstancesBlockDeviceMapping { + s.NoDevice = &v + return s +} + +// SetVirtualName sets the VirtualName field's value. +func (s *ScheduledInstancesBlockDeviceMapping) SetVirtualName(v string) *ScheduledInstancesBlockDeviceMapping { + s.VirtualName = &v + return s +} + +// Describes an EBS volume for a Scheduled Instance. +type ScheduledInstancesEbs struct { + _ struct{} `type:"structure"` + + // Indicates whether the volume is deleted on instance termination. + DeleteOnTermination *bool `type:"boolean"` + + // Indicates whether the volume is encrypted. You can attached encrypted volumes + // only to instances that support them. + Encrypted *bool `type:"boolean"` + + // The number of I/O operations per second (IOPS) that the volume supports. + // For io1 volumes, this represents the number of IOPS that are provisioned + // for the volume. For gp2 volumes, this represents the baseline performance + // of the volume and the rate at which the volume accumulates I/O credits for + // bursting. For more information about gp2 baseline performance, I/O credits, + // and bursting, see Amazon EBS Volume Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) + // in the Amazon Elastic Compute Cloud User Guide. + // + // Constraint: Range is 100-20000 IOPS for io1 volumes and 100-10000 IOPS for + // gp2 volumes. + // + // Condition: This parameter is required for requests to create io1volumes; + // it is not used in requests to create gp2, st1, sc1, or standard volumes. + Iops *int64 `type:"integer"` + + // The ID of the snapshot. + SnapshotId *string `type:"string"` + + // The size of the volume, in GiB. + // + // Default: If you're creating the volume from a snapshot and don't specify + // a volume size, the default is the snapshot size. + VolumeSize *int64 `type:"integer"` + + // The volume type. gp2 for General Purpose SSD, io1 for Provisioned IOPS SSD, + // Throughput Optimized HDD for st1, Cold HDD for sc1, or standard for Magnetic. + // + // Default: gp2 + VolumeType *string `type:"string"` +} + +// String returns the string representation +func (s ScheduledInstancesEbs) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ScheduledInstancesEbs) GoString() string { + return s.String() +} + +// SetDeleteOnTermination sets the DeleteOnTermination field's value. +func (s *ScheduledInstancesEbs) SetDeleteOnTermination(v bool) *ScheduledInstancesEbs { + s.DeleteOnTermination = &v + return s +} + +// SetEncrypted sets the Encrypted field's value. +func (s *ScheduledInstancesEbs) SetEncrypted(v bool) *ScheduledInstancesEbs { + s.Encrypted = &v + return s +} + +// SetIops sets the Iops field's value. +func (s *ScheduledInstancesEbs) SetIops(v int64) *ScheduledInstancesEbs { + s.Iops = &v + return s +} + +// SetSnapshotId sets the SnapshotId field's value. +func (s *ScheduledInstancesEbs) SetSnapshotId(v string) *ScheduledInstancesEbs { + s.SnapshotId = &v + return s +} + +// SetVolumeSize sets the VolumeSize field's value. +func (s *ScheduledInstancesEbs) SetVolumeSize(v int64) *ScheduledInstancesEbs { + s.VolumeSize = &v + return s +} + +// SetVolumeType sets the VolumeType field's value. +func (s *ScheduledInstancesEbs) SetVolumeType(v string) *ScheduledInstancesEbs { + s.VolumeType = &v + return s +} + +// Describes an IAM instance profile for a Scheduled Instance. +type ScheduledInstancesIamInstanceProfile struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN). + Arn *string `type:"string"` + + // The name. + Name *string `type:"string"` +} + +// String returns the string representation +func (s ScheduledInstancesIamInstanceProfile) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ScheduledInstancesIamInstanceProfile) GoString() string { + return s.String() +} + +// SetArn sets the Arn field's value. +func (s *ScheduledInstancesIamInstanceProfile) SetArn(v string) *ScheduledInstancesIamInstanceProfile { + s.Arn = &v + return s +} + +// SetName sets the Name field's value. +func (s *ScheduledInstancesIamInstanceProfile) SetName(v string) *ScheduledInstancesIamInstanceProfile { + s.Name = &v + return s +} + +// Describes an IPv6 address. +type ScheduledInstancesIpv6Address struct { + _ struct{} `type:"structure"` + + // The IPv6 address. + Ipv6Address *string `type:"string"` +} + +// String returns the string representation +func (s ScheduledInstancesIpv6Address) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ScheduledInstancesIpv6Address) GoString() string { + return s.String() +} + +// SetIpv6Address sets the Ipv6Address field's value. +func (s *ScheduledInstancesIpv6Address) SetIpv6Address(v string) *ScheduledInstancesIpv6Address { + s.Ipv6Address = &v + return s +} + +// Describes the launch specification for a Scheduled Instance. +// +// If you are launching the Scheduled Instance in EC2-VPC, you must specify +// the ID of the subnet. You can specify the subnet using either SubnetId or +// NetworkInterface. +type ScheduledInstancesLaunchSpecification struct { + _ struct{} `type:"structure"` + + // The block device mapping entries. + BlockDeviceMappings []*ScheduledInstancesBlockDeviceMapping `locationName:"BlockDeviceMapping" locationNameList:"BlockDeviceMapping" type:"list"` + + // Indicates whether the instances are optimized for EBS I/O. This optimization + // provides dedicated throughput to Amazon EBS and an optimized configuration + // stack to provide optimal EBS I/O performance. This optimization isn't available + // with all instance types. Additional usage charges apply when using an EBS-optimized + // instance. + // + // Default: false + EbsOptimized *bool `type:"boolean"` + + // The IAM instance profile. + IamInstanceProfile *ScheduledInstancesIamInstanceProfile `type:"structure"` + + // The ID of the Amazon Machine Image (AMI). + // + // ImageId is a required field + ImageId *string `type:"string" required:"true"` + + // The instance type. + InstanceType *string `type:"string"` + + // The ID of the kernel. + KernelId *string `type:"string"` + + // The name of the key pair. + KeyName *string `type:"string"` + + // Enable or disable monitoring for the instances. + Monitoring *ScheduledInstancesMonitoring `type:"structure"` + + // The network interfaces. + NetworkInterfaces []*ScheduledInstancesNetworkInterface `locationName:"NetworkInterface" locationNameList:"NetworkInterface" type:"list"` + + // The placement information. + Placement *ScheduledInstancesPlacement `type:"structure"` + + // The ID of the RAM disk. + RamdiskId *string `type:"string"` + + // The IDs of the security groups. + SecurityGroupIds []*string `locationName:"SecurityGroupId" locationNameList:"SecurityGroupId" type:"list"` + + // The ID of the subnet in which to launch the instances. + SubnetId *string `type:"string"` + + // The base64-encoded MIME user data. + UserData *string `type:"string"` +} + +// String returns the string representation +func (s ScheduledInstancesLaunchSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ScheduledInstancesLaunchSpecification) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ScheduledInstancesLaunchSpecification) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ScheduledInstancesLaunchSpecification"} + if s.ImageId == nil { + invalidParams.Add(request.NewErrParamRequired("ImageId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBlockDeviceMappings sets the BlockDeviceMappings field's value. +func (s *ScheduledInstancesLaunchSpecification) SetBlockDeviceMappings(v []*ScheduledInstancesBlockDeviceMapping) *ScheduledInstancesLaunchSpecification { + s.BlockDeviceMappings = v + return s +} + +// SetEbsOptimized sets the EbsOptimized field's value. +func (s *ScheduledInstancesLaunchSpecification) SetEbsOptimized(v bool) *ScheduledInstancesLaunchSpecification { + s.EbsOptimized = &v + return s +} + +// SetIamInstanceProfile sets the IamInstanceProfile field's value. +func (s *ScheduledInstancesLaunchSpecification) SetIamInstanceProfile(v *ScheduledInstancesIamInstanceProfile) *ScheduledInstancesLaunchSpecification { + s.IamInstanceProfile = v + return s +} + +// SetImageId sets the ImageId field's value. +func (s *ScheduledInstancesLaunchSpecification) SetImageId(v string) *ScheduledInstancesLaunchSpecification { + s.ImageId = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *ScheduledInstancesLaunchSpecification) SetInstanceType(v string) *ScheduledInstancesLaunchSpecification { + s.InstanceType = &v + return s +} + +// SetKernelId sets the KernelId field's value. +func (s *ScheduledInstancesLaunchSpecification) SetKernelId(v string) *ScheduledInstancesLaunchSpecification { + s.KernelId = &v + return s +} + +// SetKeyName sets the KeyName field's value. +func (s *ScheduledInstancesLaunchSpecification) SetKeyName(v string) *ScheduledInstancesLaunchSpecification { + s.KeyName = &v + return s +} + +// SetMonitoring sets the Monitoring field's value. +func (s *ScheduledInstancesLaunchSpecification) SetMonitoring(v *ScheduledInstancesMonitoring) *ScheduledInstancesLaunchSpecification { + s.Monitoring = v + return s +} + +// SetNetworkInterfaces sets the NetworkInterfaces field's value. +func (s *ScheduledInstancesLaunchSpecification) SetNetworkInterfaces(v []*ScheduledInstancesNetworkInterface) *ScheduledInstancesLaunchSpecification { + s.NetworkInterfaces = v + return s +} + +// SetPlacement sets the Placement field's value. +func (s *ScheduledInstancesLaunchSpecification) SetPlacement(v *ScheduledInstancesPlacement) *ScheduledInstancesLaunchSpecification { + s.Placement = v + return s +} + +// SetRamdiskId sets the RamdiskId field's value. +func (s *ScheduledInstancesLaunchSpecification) SetRamdiskId(v string) *ScheduledInstancesLaunchSpecification { + s.RamdiskId = &v + return s +} + +// SetSecurityGroupIds sets the SecurityGroupIds field's value. +func (s *ScheduledInstancesLaunchSpecification) SetSecurityGroupIds(v []*string) *ScheduledInstancesLaunchSpecification { + s.SecurityGroupIds = v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *ScheduledInstancesLaunchSpecification) SetSubnetId(v string) *ScheduledInstancesLaunchSpecification { + s.SubnetId = &v + return s +} + +// SetUserData sets the UserData field's value. +func (s *ScheduledInstancesLaunchSpecification) SetUserData(v string) *ScheduledInstancesLaunchSpecification { + s.UserData = &v + return s +} + +// Describes whether monitoring is enabled for a Scheduled Instance. +type ScheduledInstancesMonitoring struct { + _ struct{} `type:"structure"` + + // Indicates whether monitoring is enabled. + Enabled *bool `type:"boolean"` +} + +// String returns the string representation +func (s ScheduledInstancesMonitoring) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ScheduledInstancesMonitoring) GoString() string { + return s.String() +} + +// SetEnabled sets the Enabled field's value. +func (s *ScheduledInstancesMonitoring) SetEnabled(v bool) *ScheduledInstancesMonitoring { + s.Enabled = &v + return s +} + +// Describes a network interface for a Scheduled Instance. +type ScheduledInstancesNetworkInterface struct { + _ struct{} `type:"structure"` + + // Indicates whether to assign a public IPv4 address to instances launched in + // a VPC. The public IPv4 address can only be assigned to a network interface + // for eth0, and can only be assigned to a new network interface, not an existing + // one. You cannot specify more than one network interface in the request. If + // launching into a default subnet, the default value is true. + AssociatePublicIpAddress *bool `type:"boolean"` + + // Indicates whether to delete the interface when the instance is terminated. + DeleteOnTermination *bool `type:"boolean"` + + // The description. + Description *string `type:"string"` + + // The index of the device for the network interface attachment. + DeviceIndex *int64 `type:"integer"` + + // The IDs of the security groups. + Groups []*string `locationName:"Group" locationNameList:"SecurityGroupId" type:"list"` + + // The number of IPv6 addresses to assign to the network interface. The IPv6 + // addresses are automatically selected from the subnet range. + Ipv6AddressCount *int64 `type:"integer"` + + // The specific IPv6 addresses from the subnet range. + Ipv6Addresses []*ScheduledInstancesIpv6Address `locationName:"Ipv6Address" locationNameList:"Ipv6Address" type:"list"` + + // The ID of the network interface. + NetworkInterfaceId *string `type:"string"` + + // The IPv4 address of the network interface within the subnet. + PrivateIpAddress *string `type:"string"` + + // The private IPv4 addresses. + PrivateIpAddressConfigs []*ScheduledInstancesPrivateIpAddressConfig `locationName:"PrivateIpAddressConfig" locationNameList:"PrivateIpAddressConfigSet" type:"list"` + + // The number of secondary private IPv4 addresses. + SecondaryPrivateIpAddressCount *int64 `type:"integer"` + + // The ID of the subnet. + SubnetId *string `type:"string"` +} + +// String returns the string representation +func (s ScheduledInstancesNetworkInterface) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ScheduledInstancesNetworkInterface) GoString() string { + return s.String() +} + +// SetAssociatePublicIpAddress sets the AssociatePublicIpAddress field's value. +func (s *ScheduledInstancesNetworkInterface) SetAssociatePublicIpAddress(v bool) *ScheduledInstancesNetworkInterface { + s.AssociatePublicIpAddress = &v + return s +} + +// SetDeleteOnTermination sets the DeleteOnTermination field's value. +func (s *ScheduledInstancesNetworkInterface) SetDeleteOnTermination(v bool) *ScheduledInstancesNetworkInterface { + s.DeleteOnTermination = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *ScheduledInstancesNetworkInterface) SetDescription(v string) *ScheduledInstancesNetworkInterface { + s.Description = &v + return s +} + +// SetDeviceIndex sets the DeviceIndex field's value. +func (s *ScheduledInstancesNetworkInterface) SetDeviceIndex(v int64) *ScheduledInstancesNetworkInterface { + s.DeviceIndex = &v + return s +} + +// SetGroups sets the Groups field's value. +func (s *ScheduledInstancesNetworkInterface) SetGroups(v []*string) *ScheduledInstancesNetworkInterface { + s.Groups = v + return s +} + +// SetIpv6AddressCount sets the Ipv6AddressCount field's value. +func (s *ScheduledInstancesNetworkInterface) SetIpv6AddressCount(v int64) *ScheduledInstancesNetworkInterface { + s.Ipv6AddressCount = &v + return s +} + +// SetIpv6Addresses sets the Ipv6Addresses field's value. +func (s *ScheduledInstancesNetworkInterface) SetIpv6Addresses(v []*ScheduledInstancesIpv6Address) *ScheduledInstancesNetworkInterface { + s.Ipv6Addresses = v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *ScheduledInstancesNetworkInterface) SetNetworkInterfaceId(v string) *ScheduledInstancesNetworkInterface { + s.NetworkInterfaceId = &v + return s +} + +// SetPrivateIpAddress sets the PrivateIpAddress field's value. +func (s *ScheduledInstancesNetworkInterface) SetPrivateIpAddress(v string) *ScheduledInstancesNetworkInterface { + s.PrivateIpAddress = &v + return s +} + +// SetPrivateIpAddressConfigs sets the PrivateIpAddressConfigs field's value. +func (s *ScheduledInstancesNetworkInterface) SetPrivateIpAddressConfigs(v []*ScheduledInstancesPrivateIpAddressConfig) *ScheduledInstancesNetworkInterface { + s.PrivateIpAddressConfigs = v + return s +} + +// SetSecondaryPrivateIpAddressCount sets the SecondaryPrivateIpAddressCount field's value. +func (s *ScheduledInstancesNetworkInterface) SetSecondaryPrivateIpAddressCount(v int64) *ScheduledInstancesNetworkInterface { + s.SecondaryPrivateIpAddressCount = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *ScheduledInstancesNetworkInterface) SetSubnetId(v string) *ScheduledInstancesNetworkInterface { + s.SubnetId = &v + return s +} + +// Describes the placement for a Scheduled Instance. +type ScheduledInstancesPlacement struct { + _ struct{} `type:"structure"` + + // The Availability Zone. + AvailabilityZone *string `type:"string"` + + // The name of the placement group. + GroupName *string `type:"string"` +} + +// String returns the string representation +func (s ScheduledInstancesPlacement) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ScheduledInstancesPlacement) GoString() string { + return s.String() +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *ScheduledInstancesPlacement) SetAvailabilityZone(v string) *ScheduledInstancesPlacement { + s.AvailabilityZone = &v + return s +} + +// SetGroupName sets the GroupName field's value. +func (s *ScheduledInstancesPlacement) SetGroupName(v string) *ScheduledInstancesPlacement { + s.GroupName = &v + return s +} + +// Describes a private IPv4 address for a Scheduled Instance. +type ScheduledInstancesPrivateIpAddressConfig struct { + _ struct{} `type:"structure"` + + // Indicates whether this is a primary IPv4 address. Otherwise, this is a secondary + // IPv4 address. + Primary *bool `type:"boolean"` + + // The IPv4 address. + PrivateIpAddress *string `type:"string"` +} + +// String returns the string representation +func (s ScheduledInstancesPrivateIpAddressConfig) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ScheduledInstancesPrivateIpAddressConfig) GoString() string { + return s.String() +} + +// SetPrimary sets the Primary field's value. +func (s *ScheduledInstancesPrivateIpAddressConfig) SetPrimary(v bool) *ScheduledInstancesPrivateIpAddressConfig { + s.Primary = &v + return s +} + +// SetPrivateIpAddress sets the PrivateIpAddress field's value. +func (s *ScheduledInstancesPrivateIpAddressConfig) SetPrivateIpAddress(v string) *ScheduledInstancesPrivateIpAddressConfig { + s.PrivateIpAddress = &v + return s +} + +type SearchTransitGatewayRoutesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. The possible values are: + // + // * attachment.transit-gateway-attachment-id- The id of the transit gateway + // attachment. + // + // * attachment.resource-id - The resource id of the transit gateway attachment. + // + // * attachment.resource-type - The attachment resource type (vpc | vpn). + // + // * route-search.exact-match - The exact match of the specified filter. + // + // * route-search.longest-prefix-match - The longest prefix that matches + // the route. + // + // * route-search.subnet-of-match - The routes with a subnet that match the + // specified CIDR filter. + // + // * route-search.supernet-of-match - The routes with a CIDR that encompass + // the CIDR filter. For example, if you have 10.0.1.0/29 and 10.0.1.0/31 + // routes in your route table and you specify supernet-of-match as 10.0.1.0/30, + // then the result returns 10.0.1.0/29. + // + // * state - The state of the route (active | blackhole). + // + // * type - The type of route (propagated | static). + // + // Filters is a required field + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list" required:"true"` + + // The maximum number of routes to return. + MaxResults *int64 `min:"5" type:"integer"` + + // The ID of the transit gateway route table. + // + // TransitGatewayRouteTableId is a required field + TransitGatewayRouteTableId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s SearchTransitGatewayRoutesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SearchTransitGatewayRoutesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *SearchTransitGatewayRoutesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "SearchTransitGatewayRoutesInput"} + if s.Filters == nil { + invalidParams.Add(request.NewErrParamRequired("Filters")) + } + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + if s.TransitGatewayRouteTableId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayRouteTableId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *SearchTransitGatewayRoutesInput) SetDryRun(v bool) *SearchTransitGatewayRoutesInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *SearchTransitGatewayRoutesInput) SetFilters(v []*Filter) *SearchTransitGatewayRoutesInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *SearchTransitGatewayRoutesInput) SetMaxResults(v int64) *SearchTransitGatewayRoutesInput { + s.MaxResults = &v + return s +} + +// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value. +func (s *SearchTransitGatewayRoutesInput) SetTransitGatewayRouteTableId(v string) *SearchTransitGatewayRoutesInput { + s.TransitGatewayRouteTableId = &v + return s +} + +type SearchTransitGatewayRoutesOutput struct { + _ struct{} `type:"structure"` + + // Indicates whether there are additional routes available. + AdditionalRoutesAvailable *bool `locationName:"additionalRoutesAvailable" type:"boolean"` + + // Information about the routes. + Routes []*TransitGatewayRoute `locationName:"routeSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s SearchTransitGatewayRoutesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SearchTransitGatewayRoutesOutput) GoString() string { + return s.String() +} + +// SetAdditionalRoutesAvailable sets the AdditionalRoutesAvailable field's value. +func (s *SearchTransitGatewayRoutesOutput) SetAdditionalRoutesAvailable(v bool) *SearchTransitGatewayRoutesOutput { + s.AdditionalRoutesAvailable = &v + return s +} + +// SetRoutes sets the Routes field's value. +func (s *SearchTransitGatewayRoutesOutput) SetRoutes(v []*TransitGatewayRoute) *SearchTransitGatewayRoutesOutput { + s.Routes = v + return s +} + +// Describes a security group +type SecurityGroup struct { + _ struct{} `type:"structure"` + + // A description of the security group. + Description *string `locationName:"groupDescription" type:"string"` + + // The ID of the security group. + GroupId *string `locationName:"groupId" type:"string"` + + // The name of the security group. + GroupName *string `locationName:"groupName" type:"string"` + + // The inbound rules associated with the security group. + IpPermissions []*IpPermission `locationName:"ipPermissions" locationNameList:"item" type:"list"` + + // [VPC only] The outbound rules associated with the security group. + IpPermissionsEgress []*IpPermission `locationName:"ipPermissionsEgress" locationNameList:"item" type:"list"` + + // The AWS account ID of the owner of the security group. + OwnerId *string `locationName:"ownerId" type:"string"` + + // Any tags assigned to the security group. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // [VPC only] The ID of the VPC for the security group. + VpcId *string `locationName:"vpcId" type:"string"` +} + +// String returns the string representation +func (s SecurityGroup) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SecurityGroup) GoString() string { + return s.String() +} + +// SetDescription sets the Description field's value. +func (s *SecurityGroup) SetDescription(v string) *SecurityGroup { + s.Description = &v + return s +} + +// SetGroupId sets the GroupId field's value. +func (s *SecurityGroup) SetGroupId(v string) *SecurityGroup { + s.GroupId = &v + return s +} + +// SetGroupName sets the GroupName field's value. +func (s *SecurityGroup) SetGroupName(v string) *SecurityGroup { + s.GroupName = &v + return s +} + +// SetIpPermissions sets the IpPermissions field's value. +func (s *SecurityGroup) SetIpPermissions(v []*IpPermission) *SecurityGroup { + s.IpPermissions = v + return s +} + +// SetIpPermissionsEgress sets the IpPermissionsEgress field's value. +func (s *SecurityGroup) SetIpPermissionsEgress(v []*IpPermission) *SecurityGroup { + s.IpPermissionsEgress = v + return s +} + +// SetOwnerId sets the OwnerId field's value. +func (s *SecurityGroup) SetOwnerId(v string) *SecurityGroup { + s.OwnerId = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *SecurityGroup) SetTags(v []*Tag) *SecurityGroup { + s.Tags = v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *SecurityGroup) SetVpcId(v string) *SecurityGroup { + s.VpcId = &v + return s +} + +// Describes a security group. +type SecurityGroupIdentifier struct { + _ struct{} `type:"structure"` + + // The ID of the security group. + GroupId *string `locationName:"groupId" type:"string"` + + // The name of the security group. + GroupName *string `locationName:"groupName" type:"string"` +} + +// String returns the string representation +func (s SecurityGroupIdentifier) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SecurityGroupIdentifier) GoString() string { + return s.String() +} + +// SetGroupId sets the GroupId field's value. +func (s *SecurityGroupIdentifier) SetGroupId(v string) *SecurityGroupIdentifier { + s.GroupId = &v + return s +} + +// SetGroupName sets the GroupName field's value. +func (s *SecurityGroupIdentifier) SetGroupName(v string) *SecurityGroupIdentifier { + s.GroupName = &v + return s +} + +// Describes a VPC with a security group that references your security group. +type SecurityGroupReference struct { + _ struct{} `type:"structure"` + + // The ID of your security group. + GroupId *string `locationName:"groupId" type:"string"` + + // The ID of the VPC with the referencing security group. + ReferencingVpcId *string `locationName:"referencingVpcId" type:"string"` + + // The ID of the VPC peering connection. + VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string"` +} + +// String returns the string representation +func (s SecurityGroupReference) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SecurityGroupReference) GoString() string { + return s.String() +} + +// SetGroupId sets the GroupId field's value. +func (s *SecurityGroupReference) SetGroupId(v string) *SecurityGroupReference { + s.GroupId = &v + return s +} + +// SetReferencingVpcId sets the ReferencingVpcId field's value. +func (s *SecurityGroupReference) SetReferencingVpcId(v string) *SecurityGroupReference { + s.ReferencingVpcId = &v + return s +} + +// SetVpcPeeringConnectionId sets the VpcPeeringConnectionId field's value. +func (s *SecurityGroupReference) SetVpcPeeringConnectionId(v string) *SecurityGroupReference { + s.VpcPeeringConnectionId = &v + return s +} + +type SendDiagnosticInterruptInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the instance. + // + // InstanceId is a required field + InstanceId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s SendDiagnosticInterruptInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SendDiagnosticInterruptInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *SendDiagnosticInterruptInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "SendDiagnosticInterruptInput"} + if s.InstanceId == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *SendDiagnosticInterruptInput) SetDryRun(v bool) *SendDiagnosticInterruptInput { + s.DryRun = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *SendDiagnosticInterruptInput) SetInstanceId(v string) *SendDiagnosticInterruptInput { + s.InstanceId = &v + return s +} + +type SendDiagnosticInterruptOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s SendDiagnosticInterruptOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SendDiagnosticInterruptOutput) GoString() string { + return s.String() +} + +// Describes a service configuration for a VPC endpoint service. +type ServiceConfiguration struct { + _ struct{} `type:"structure"` + + // Indicates whether requests from other AWS accounts to create an endpoint + // to the service must first be accepted. + AcceptanceRequired *bool `locationName:"acceptanceRequired" type:"boolean"` + + // In the Availability Zones in which the service is available. + AvailabilityZones []*string `locationName:"availabilityZoneSet" locationNameList:"item" type:"list"` + + // The DNS names for the service. + BaseEndpointDnsNames []*string `locationName:"baseEndpointDnsNameSet" locationNameList:"item" type:"list"` + + // Indicates whether the service manages it's VPC endpoints. Management of the + // service VPC endpoints using the VPC endpoint API is restricted. + ManagesVpcEndpoints *bool `locationName:"managesVpcEndpoints" type:"boolean"` + + // The Amazon Resource Names (ARNs) of the Network Load Balancers for the service. + NetworkLoadBalancerArns []*string `locationName:"networkLoadBalancerArnSet" locationNameList:"item" type:"list"` + + // The private DNS name for the service. + PrivateDnsName *string `locationName:"privateDnsName" type:"string"` + + // The ID of the service. + ServiceId *string `locationName:"serviceId" type:"string"` + + // The name of the service. + ServiceName *string `locationName:"serviceName" type:"string"` + + // The service state. + ServiceState *string `locationName:"serviceState" type:"string" enum:"ServiceState"` + + // The type of service. + ServiceType []*ServiceTypeDetail `locationName:"serviceType" locationNameList:"item" type:"list"` + + // Any tags assigned to the service. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s ServiceConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ServiceConfiguration) GoString() string { + return s.String() +} + +// SetAcceptanceRequired sets the AcceptanceRequired field's value. +func (s *ServiceConfiguration) SetAcceptanceRequired(v bool) *ServiceConfiguration { + s.AcceptanceRequired = &v + return s +} + +// SetAvailabilityZones sets the AvailabilityZones field's value. +func (s *ServiceConfiguration) SetAvailabilityZones(v []*string) *ServiceConfiguration { + s.AvailabilityZones = v + return s +} + +// SetBaseEndpointDnsNames sets the BaseEndpointDnsNames field's value. +func (s *ServiceConfiguration) SetBaseEndpointDnsNames(v []*string) *ServiceConfiguration { + s.BaseEndpointDnsNames = v + return s +} + +// SetManagesVpcEndpoints sets the ManagesVpcEndpoints field's value. +func (s *ServiceConfiguration) SetManagesVpcEndpoints(v bool) *ServiceConfiguration { + s.ManagesVpcEndpoints = &v + return s +} + +// SetNetworkLoadBalancerArns sets the NetworkLoadBalancerArns field's value. +func (s *ServiceConfiguration) SetNetworkLoadBalancerArns(v []*string) *ServiceConfiguration { + s.NetworkLoadBalancerArns = v + return s +} + +// SetPrivateDnsName sets the PrivateDnsName field's value. +func (s *ServiceConfiguration) SetPrivateDnsName(v string) *ServiceConfiguration { + s.PrivateDnsName = &v + return s +} + +// SetServiceId sets the ServiceId field's value. +func (s *ServiceConfiguration) SetServiceId(v string) *ServiceConfiguration { + s.ServiceId = &v + return s +} + +// SetServiceName sets the ServiceName field's value. +func (s *ServiceConfiguration) SetServiceName(v string) *ServiceConfiguration { + s.ServiceName = &v + return s +} + +// SetServiceState sets the ServiceState field's value. +func (s *ServiceConfiguration) SetServiceState(v string) *ServiceConfiguration { + s.ServiceState = &v + return s +} + +// SetServiceType sets the ServiceType field's value. +func (s *ServiceConfiguration) SetServiceType(v []*ServiceTypeDetail) *ServiceConfiguration { + s.ServiceType = v + return s +} + +// SetTags sets the Tags field's value. +func (s *ServiceConfiguration) SetTags(v []*Tag) *ServiceConfiguration { + s.Tags = v + return s +} + +// Describes a VPC endpoint service. +type ServiceDetail struct { + _ struct{} `type:"structure"` + + // Indicates whether VPC endpoint connection requests to the service must be + // accepted by the service owner. + AcceptanceRequired *bool `locationName:"acceptanceRequired" type:"boolean"` + + // The Availability Zones in which the service is available. + AvailabilityZones []*string `locationName:"availabilityZoneSet" locationNameList:"item" type:"list"` + + // The DNS names for the service. + BaseEndpointDnsNames []*string `locationName:"baseEndpointDnsNameSet" locationNameList:"item" type:"list"` + + // Indicates whether the service manages it's VPC endpoints. Management of the + // service VPC endpoints using the VPC endpoint API is restricted. + ManagesVpcEndpoints *bool `locationName:"managesVpcEndpoints" type:"boolean"` + + // The AWS account ID of the service owner. + Owner *string `locationName:"owner" type:"string"` + + // The private DNS name for the service. + PrivateDnsName *string `locationName:"privateDnsName" type:"string"` + + // The ID of the endpoint service. + ServiceId *string `locationName:"serviceId" type:"string"` + + // The Amazon Resource Name (ARN) of the service. + ServiceName *string `locationName:"serviceName" type:"string"` + + // The type of service. + ServiceType []*ServiceTypeDetail `locationName:"serviceType" locationNameList:"item" type:"list"` + + // Any tags assigned to the service. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // Indicates whether the service supports endpoint policies. + VpcEndpointPolicySupported *bool `locationName:"vpcEndpointPolicySupported" type:"boolean"` +} + +// String returns the string representation +func (s ServiceDetail) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ServiceDetail) GoString() string { + return s.String() +} + +// SetAcceptanceRequired sets the AcceptanceRequired field's value. +func (s *ServiceDetail) SetAcceptanceRequired(v bool) *ServiceDetail { + s.AcceptanceRequired = &v + return s +} + +// SetAvailabilityZones sets the AvailabilityZones field's value. +func (s *ServiceDetail) SetAvailabilityZones(v []*string) *ServiceDetail { + s.AvailabilityZones = v + return s +} + +// SetBaseEndpointDnsNames sets the BaseEndpointDnsNames field's value. +func (s *ServiceDetail) SetBaseEndpointDnsNames(v []*string) *ServiceDetail { + s.BaseEndpointDnsNames = v + return s +} + +// SetManagesVpcEndpoints sets the ManagesVpcEndpoints field's value. +func (s *ServiceDetail) SetManagesVpcEndpoints(v bool) *ServiceDetail { + s.ManagesVpcEndpoints = &v + return s +} + +// SetOwner sets the Owner field's value. +func (s *ServiceDetail) SetOwner(v string) *ServiceDetail { + s.Owner = &v + return s +} + +// SetPrivateDnsName sets the PrivateDnsName field's value. +func (s *ServiceDetail) SetPrivateDnsName(v string) *ServiceDetail { + s.PrivateDnsName = &v + return s +} + +// SetServiceId sets the ServiceId field's value. +func (s *ServiceDetail) SetServiceId(v string) *ServiceDetail { + s.ServiceId = &v + return s +} + +// SetServiceName sets the ServiceName field's value. +func (s *ServiceDetail) SetServiceName(v string) *ServiceDetail { + s.ServiceName = &v + return s +} + +// SetServiceType sets the ServiceType field's value. +func (s *ServiceDetail) SetServiceType(v []*ServiceTypeDetail) *ServiceDetail { + s.ServiceType = v + return s +} + +// SetTags sets the Tags field's value. +func (s *ServiceDetail) SetTags(v []*Tag) *ServiceDetail { + s.Tags = v + return s +} + +// SetVpcEndpointPolicySupported sets the VpcEndpointPolicySupported field's value. +func (s *ServiceDetail) SetVpcEndpointPolicySupported(v bool) *ServiceDetail { + s.VpcEndpointPolicySupported = &v + return s +} + +// Describes the type of service for a VPC endpoint. +type ServiceTypeDetail struct { + _ struct{} `type:"structure"` + + // The type of service. + ServiceType *string `locationName:"serviceType" type:"string" enum:"ServiceType"` +} + +// String returns the string representation +func (s ServiceTypeDetail) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ServiceTypeDetail) GoString() string { + return s.String() +} + +// SetServiceType sets the ServiceType field's value. +func (s *ServiceTypeDetail) SetServiceType(v string) *ServiceTypeDetail { + s.ServiceType = &v + return s +} + +// Describes the time period for a Scheduled Instance to start its first schedule. +// The time period must span less than one day. +type SlotDateTimeRangeRequest struct { + _ struct{} `type:"structure"` + + // The earliest date and time, in UTC, for the Scheduled Instance to start. + // + // EarliestTime is a required field + EarliestTime *time.Time `type:"timestamp" required:"true"` + + // The latest date and time, in UTC, for the Scheduled Instance to start. This + // value must be later than or equal to the earliest date and at most three + // months in the future. + // + // LatestTime is a required field + LatestTime *time.Time `type:"timestamp" required:"true"` +} + +// String returns the string representation +func (s SlotDateTimeRangeRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SlotDateTimeRangeRequest) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *SlotDateTimeRangeRequest) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "SlotDateTimeRangeRequest"} + if s.EarliestTime == nil { + invalidParams.Add(request.NewErrParamRequired("EarliestTime")) + } + if s.LatestTime == nil { + invalidParams.Add(request.NewErrParamRequired("LatestTime")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetEarliestTime sets the EarliestTime field's value. +func (s *SlotDateTimeRangeRequest) SetEarliestTime(v time.Time) *SlotDateTimeRangeRequest { + s.EarliestTime = &v + return s +} + +// SetLatestTime sets the LatestTime field's value. +func (s *SlotDateTimeRangeRequest) SetLatestTime(v time.Time) *SlotDateTimeRangeRequest { + s.LatestTime = &v + return s +} + +// Describes the time period for a Scheduled Instance to start its first schedule. +type SlotStartTimeRangeRequest struct { + _ struct{} `type:"structure"` + + // The earliest date and time, in UTC, for the Scheduled Instance to start. + EarliestTime *time.Time `type:"timestamp"` + + // The latest date and time, in UTC, for the Scheduled Instance to start. + LatestTime *time.Time `type:"timestamp"` +} + +// String returns the string representation +func (s SlotStartTimeRangeRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SlotStartTimeRangeRequest) GoString() string { + return s.String() +} + +// SetEarliestTime sets the EarliestTime field's value. +func (s *SlotStartTimeRangeRequest) SetEarliestTime(v time.Time) *SlotStartTimeRangeRequest { + s.EarliestTime = &v + return s +} + +// SetLatestTime sets the LatestTime field's value. +func (s *SlotStartTimeRangeRequest) SetLatestTime(v time.Time) *SlotStartTimeRangeRequest { + s.LatestTime = &v + return s +} + +// Describes a snapshot. +type Snapshot struct { + _ struct{} `type:"structure"` + + // The data encryption key identifier for the snapshot. This value is a unique + // identifier that corresponds to the data encryption key that was used to encrypt + // the original volume or snapshot copy. Because data encryption keys are inherited + // by volumes created from snapshots, and vice versa, if snapshots share the + // same data encryption key identifier, then they belong to the same volume/snapshot + // lineage. This parameter is only returned by DescribeSnapshots. + DataEncryptionKeyId *string `locationName:"dataEncryptionKeyId" type:"string"` + + // The description for the snapshot. + Description *string `locationName:"description" type:"string"` + + // Indicates whether the snapshot is encrypted. + Encrypted *bool `locationName:"encrypted" type:"boolean"` + + // The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) + // customer master key (CMK) that was used to protect the volume encryption + // key for the parent volume. + KmsKeyId *string `locationName:"kmsKeyId" type:"string"` + + // Value from an Amazon-maintained list (amazon | self | all | aws-marketplace + // | microsoft) of snapshot owners. Not to be confused with the user-configured + // AWS account alias, which is set from the IAM console. + OwnerAlias *string `locationName:"ownerAlias" type:"string"` + + // The AWS account ID of the EBS snapshot owner. + OwnerId *string `locationName:"ownerId" type:"string"` + + // The progress of the snapshot, as a percentage. + Progress *string `locationName:"progress" type:"string"` + + // The ID of the snapshot. Each snapshot receives a unique identifier when it + // is created. + SnapshotId *string `locationName:"snapshotId" type:"string"` + + // The time stamp when the snapshot was initiated. + StartTime *time.Time `locationName:"startTime" type:"timestamp"` + + // The snapshot state. + State *string `locationName:"status" type:"string" enum:"SnapshotState"` + + // Encrypted Amazon EBS snapshots are copied asynchronously. If a snapshot copy + // operation fails (for example, if the proper AWS Key Management Service (AWS + // KMS) permissions are not obtained) this field displays error state details + // to help you diagnose why the error occurred. This parameter is only returned + // by DescribeSnapshots. + StateMessage *string `locationName:"statusMessage" type:"string"` + + // Any tags assigned to the snapshot. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The ID of the volume that was used to create the snapshot. Snapshots created + // by the CopySnapshot action have an arbitrary volume ID that should not be + // used for any purpose. + VolumeId *string `locationName:"volumeId" type:"string"` + + // The size of the volume, in GiB. + VolumeSize *int64 `locationName:"volumeSize" type:"integer"` +} + +// String returns the string representation +func (s Snapshot) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Snapshot) GoString() string { + return s.String() +} + +// SetDataEncryptionKeyId sets the DataEncryptionKeyId field's value. +func (s *Snapshot) SetDataEncryptionKeyId(v string) *Snapshot { + s.DataEncryptionKeyId = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *Snapshot) SetDescription(v string) *Snapshot { + s.Description = &v + return s +} + +// SetEncrypted sets the Encrypted field's value. +func (s *Snapshot) SetEncrypted(v bool) *Snapshot { + s.Encrypted = &v + return s +} + +// SetKmsKeyId sets the KmsKeyId field's value. +func (s *Snapshot) SetKmsKeyId(v string) *Snapshot { + s.KmsKeyId = &v + return s +} + +// SetOwnerAlias sets the OwnerAlias field's value. +func (s *Snapshot) SetOwnerAlias(v string) *Snapshot { + s.OwnerAlias = &v + return s +} + +// SetOwnerId sets the OwnerId field's value. +func (s *Snapshot) SetOwnerId(v string) *Snapshot { + s.OwnerId = &v + return s +} + +// SetProgress sets the Progress field's value. +func (s *Snapshot) SetProgress(v string) *Snapshot { + s.Progress = &v + return s +} + +// SetSnapshotId sets the SnapshotId field's value. +func (s *Snapshot) SetSnapshotId(v string) *Snapshot { + s.SnapshotId = &v + return s +} + +// SetStartTime sets the StartTime field's value. +func (s *Snapshot) SetStartTime(v time.Time) *Snapshot { + s.StartTime = &v + return s +} + +// SetState sets the State field's value. +func (s *Snapshot) SetState(v string) *Snapshot { + s.State = &v + return s +} + +// SetStateMessage sets the StateMessage field's value. +func (s *Snapshot) SetStateMessage(v string) *Snapshot { + s.StateMessage = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *Snapshot) SetTags(v []*Tag) *Snapshot { + s.Tags = v + return s +} + +// SetVolumeId sets the VolumeId field's value. +func (s *Snapshot) SetVolumeId(v string) *Snapshot { + s.VolumeId = &v + return s +} + +// SetVolumeSize sets the VolumeSize field's value. +func (s *Snapshot) SetVolumeSize(v int64) *Snapshot { + s.VolumeSize = &v + return s +} + +// Describes the snapshot created from the imported disk. +type SnapshotDetail struct { + _ struct{} `type:"structure"` + + // A description for the snapshot. + Description *string `locationName:"description" type:"string"` + + // The block device mapping for the snapshot. + DeviceName *string `locationName:"deviceName" type:"string"` + + // The size of the disk in the snapshot, in GiB. + DiskImageSize *float64 `locationName:"diskImageSize" type:"double"` + + // The format of the disk image from which the snapshot is created. + Format *string `locationName:"format" type:"string"` + + // The percentage of progress for the task. + Progress *string `locationName:"progress" type:"string"` + + // The snapshot ID of the disk being imported. + SnapshotId *string `locationName:"snapshotId" type:"string"` + + // A brief status of the snapshot creation. + Status *string `locationName:"status" type:"string"` + + // A detailed status message for the snapshot creation. + StatusMessage *string `locationName:"statusMessage" type:"string"` + + // The URL used to access the disk image. + Url *string `locationName:"url" type:"string"` + + // The S3 bucket for the disk image. + UserBucket *UserBucketDetails `locationName:"userBucket" type:"structure"` +} + +// String returns the string representation +func (s SnapshotDetail) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SnapshotDetail) GoString() string { + return s.String() +} + +// SetDescription sets the Description field's value. +func (s *SnapshotDetail) SetDescription(v string) *SnapshotDetail { + s.Description = &v + return s +} + +// SetDeviceName sets the DeviceName field's value. +func (s *SnapshotDetail) SetDeviceName(v string) *SnapshotDetail { + s.DeviceName = &v + return s +} + +// SetDiskImageSize sets the DiskImageSize field's value. +func (s *SnapshotDetail) SetDiskImageSize(v float64) *SnapshotDetail { + s.DiskImageSize = &v + return s +} + +// SetFormat sets the Format field's value. +func (s *SnapshotDetail) SetFormat(v string) *SnapshotDetail { + s.Format = &v + return s +} + +// SetProgress sets the Progress field's value. +func (s *SnapshotDetail) SetProgress(v string) *SnapshotDetail { + s.Progress = &v + return s +} + +// SetSnapshotId sets the SnapshotId field's value. +func (s *SnapshotDetail) SetSnapshotId(v string) *SnapshotDetail { + s.SnapshotId = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *SnapshotDetail) SetStatus(v string) *SnapshotDetail { + s.Status = &v + return s +} + +// SetStatusMessage sets the StatusMessage field's value. +func (s *SnapshotDetail) SetStatusMessage(v string) *SnapshotDetail { + s.StatusMessage = &v + return s +} + +// SetUrl sets the Url field's value. +func (s *SnapshotDetail) SetUrl(v string) *SnapshotDetail { + s.Url = &v + return s +} + +// SetUserBucket sets the UserBucket field's value. +func (s *SnapshotDetail) SetUserBucket(v *UserBucketDetails) *SnapshotDetail { + s.UserBucket = v + return s +} + +// The disk container object for the import snapshot request. +type SnapshotDiskContainer struct { + _ struct{} `type:"structure"` + + // The description of the disk image being imported. + Description *string `type:"string"` + + // The format of the disk image being imported. + // + // Valid values: VHD | VMDK + Format *string `type:"string"` + + // The URL to the Amazon S3-based disk image being imported. It can either be + // a https URL (https://..) or an Amazon S3 URL (s3://..). + Url *string `type:"string"` + + // The S3 bucket for the disk image. + UserBucket *UserBucket `type:"structure"` +} + +// String returns the string representation +func (s SnapshotDiskContainer) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SnapshotDiskContainer) GoString() string { + return s.String() +} + +// SetDescription sets the Description field's value. +func (s *SnapshotDiskContainer) SetDescription(v string) *SnapshotDiskContainer { + s.Description = &v + return s +} + +// SetFormat sets the Format field's value. +func (s *SnapshotDiskContainer) SetFormat(v string) *SnapshotDiskContainer { + s.Format = &v + return s +} + +// SetUrl sets the Url field's value. +func (s *SnapshotDiskContainer) SetUrl(v string) *SnapshotDiskContainer { + s.Url = &v + return s +} + +// SetUserBucket sets the UserBucket field's value. +func (s *SnapshotDiskContainer) SetUserBucket(v *UserBucket) *SnapshotDiskContainer { + s.UserBucket = v + return s +} + +// Information about a snapshot. +type SnapshotInfo struct { + _ struct{} `type:"structure"` + + // Description specified by the CreateSnapshotRequest that has been applied + // to all snapshots. + Description *string `locationName:"description" type:"string"` + + // Indicates whether the snapshot is encrypted. + Encrypted *bool `locationName:"encrypted" type:"boolean"` + + // Account id used when creating this snapshot. + OwnerId *string `locationName:"ownerId" type:"string"` + + // Progress this snapshot has made towards completing. + Progress *string `locationName:"progress" type:"string"` + + // Snapshot id that can be used to describe this snapshot. + SnapshotId *string `locationName:"snapshotId" type:"string"` + + // Time this snapshot was started. This is the same for all snapshots initiated + // by the same request. + StartTime *time.Time `locationName:"startTime" type:"timestamp"` + + // Current state of the snapshot. + State *string `locationName:"state" type:"string" enum:"SnapshotState"` + + // Tags associated with this snapshot. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // Source volume from which this snapshot was created. + VolumeId *string `locationName:"volumeId" type:"string"` + + // Size of the volume from which this snapshot was created. + VolumeSize *int64 `locationName:"volumeSize" type:"integer"` +} + +// String returns the string representation +func (s SnapshotInfo) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SnapshotInfo) GoString() string { + return s.String() +} + +// SetDescription sets the Description field's value. +func (s *SnapshotInfo) SetDescription(v string) *SnapshotInfo { + s.Description = &v + return s +} + +// SetEncrypted sets the Encrypted field's value. +func (s *SnapshotInfo) SetEncrypted(v bool) *SnapshotInfo { + s.Encrypted = &v + return s +} + +// SetOwnerId sets the OwnerId field's value. +func (s *SnapshotInfo) SetOwnerId(v string) *SnapshotInfo { + s.OwnerId = &v + return s +} + +// SetProgress sets the Progress field's value. +func (s *SnapshotInfo) SetProgress(v string) *SnapshotInfo { + s.Progress = &v + return s +} + +// SetSnapshotId sets the SnapshotId field's value. +func (s *SnapshotInfo) SetSnapshotId(v string) *SnapshotInfo { + s.SnapshotId = &v + return s +} + +// SetStartTime sets the StartTime field's value. +func (s *SnapshotInfo) SetStartTime(v time.Time) *SnapshotInfo { + s.StartTime = &v + return s +} + +// SetState sets the State field's value. +func (s *SnapshotInfo) SetState(v string) *SnapshotInfo { + s.State = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *SnapshotInfo) SetTags(v []*Tag) *SnapshotInfo { + s.Tags = v + return s +} + +// SetVolumeId sets the VolumeId field's value. +func (s *SnapshotInfo) SetVolumeId(v string) *SnapshotInfo { + s.VolumeId = &v + return s +} + +// SetVolumeSize sets the VolumeSize field's value. +func (s *SnapshotInfo) SetVolumeSize(v int64) *SnapshotInfo { + s.VolumeSize = &v + return s +} + +// Details about the import snapshot task. +type SnapshotTaskDetail struct { + _ struct{} `type:"structure"` + + // The description of the snapshot. + Description *string `locationName:"description" type:"string"` + + // The size of the disk in the snapshot, in GiB. + DiskImageSize *float64 `locationName:"diskImageSize" type:"double"` + + // Indicates whether the snapshot is encrypted. + Encrypted *bool `locationName:"encrypted" type:"boolean"` + + // The format of the disk image from which the snapshot is created. + Format *string `locationName:"format" type:"string"` + + // The identifier for the AWS Key Management Service (AWS KMS) customer master + // key (CMK) that was used to create the encrypted snapshot. + KmsKeyId *string `locationName:"kmsKeyId" type:"string"` + + // The percentage of completion for the import snapshot task. + Progress *string `locationName:"progress" type:"string"` + + // The snapshot ID of the disk being imported. + SnapshotId *string `locationName:"snapshotId" type:"string"` + + // A brief status for the import snapshot task. + Status *string `locationName:"status" type:"string"` + + // A detailed status message for the import snapshot task. + StatusMessage *string `locationName:"statusMessage" type:"string"` + + // The URL of the disk image from which the snapshot is created. + Url *string `locationName:"url" type:"string"` + + // The S3 bucket for the disk image. + UserBucket *UserBucketDetails `locationName:"userBucket" type:"structure"` +} + +// String returns the string representation +func (s SnapshotTaskDetail) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SnapshotTaskDetail) GoString() string { + return s.String() +} + +// SetDescription sets the Description field's value. +func (s *SnapshotTaskDetail) SetDescription(v string) *SnapshotTaskDetail { + s.Description = &v + return s +} + +// SetDiskImageSize sets the DiskImageSize field's value. +func (s *SnapshotTaskDetail) SetDiskImageSize(v float64) *SnapshotTaskDetail { + s.DiskImageSize = &v + return s +} + +// SetEncrypted sets the Encrypted field's value. +func (s *SnapshotTaskDetail) SetEncrypted(v bool) *SnapshotTaskDetail { + s.Encrypted = &v + return s +} + +// SetFormat sets the Format field's value. +func (s *SnapshotTaskDetail) SetFormat(v string) *SnapshotTaskDetail { + s.Format = &v + return s +} + +// SetKmsKeyId sets the KmsKeyId field's value. +func (s *SnapshotTaskDetail) SetKmsKeyId(v string) *SnapshotTaskDetail { + s.KmsKeyId = &v + return s +} + +// SetProgress sets the Progress field's value. +func (s *SnapshotTaskDetail) SetProgress(v string) *SnapshotTaskDetail { + s.Progress = &v + return s +} + +// SetSnapshotId sets the SnapshotId field's value. +func (s *SnapshotTaskDetail) SetSnapshotId(v string) *SnapshotTaskDetail { + s.SnapshotId = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *SnapshotTaskDetail) SetStatus(v string) *SnapshotTaskDetail { + s.Status = &v + return s +} + +// SetStatusMessage sets the StatusMessage field's value. +func (s *SnapshotTaskDetail) SetStatusMessage(v string) *SnapshotTaskDetail { + s.StatusMessage = &v + return s +} + +// SetUrl sets the Url field's value. +func (s *SnapshotTaskDetail) SetUrl(v string) *SnapshotTaskDetail { + s.Url = &v + return s +} + +// SetUserBucket sets the UserBucket field's value. +func (s *SnapshotTaskDetail) SetUserBucket(v *UserBucketDetails) *SnapshotTaskDetail { + s.UserBucket = v + return s +} + +// Describes the data feed for a Spot Instance. +type SpotDatafeedSubscription struct { + _ struct{} `type:"structure"` + + // The Amazon S3 bucket where the Spot Instance data feed is located. + Bucket *string `locationName:"bucket" type:"string"` + + // The fault codes for the Spot Instance request, if any. + Fault *SpotInstanceStateFault `locationName:"fault" type:"structure"` + + // The AWS account ID of the account. + OwnerId *string `locationName:"ownerId" type:"string"` + + // The prefix that is prepended to data feed files. + Prefix *string `locationName:"prefix" type:"string"` + + // The state of the Spot Instance data feed subscription. + State *string `locationName:"state" type:"string" enum:"DatafeedSubscriptionState"` +} + +// String returns the string representation +func (s SpotDatafeedSubscription) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SpotDatafeedSubscription) GoString() string { + return s.String() +} + +// SetBucket sets the Bucket field's value. +func (s *SpotDatafeedSubscription) SetBucket(v string) *SpotDatafeedSubscription { + s.Bucket = &v + return s +} + +// SetFault sets the Fault field's value. +func (s *SpotDatafeedSubscription) SetFault(v *SpotInstanceStateFault) *SpotDatafeedSubscription { + s.Fault = v + return s +} + +// SetOwnerId sets the OwnerId field's value. +func (s *SpotDatafeedSubscription) SetOwnerId(v string) *SpotDatafeedSubscription { + s.OwnerId = &v + return s +} + +// SetPrefix sets the Prefix field's value. +func (s *SpotDatafeedSubscription) SetPrefix(v string) *SpotDatafeedSubscription { + s.Prefix = &v + return s +} + +// SetState sets the State field's value. +func (s *SpotDatafeedSubscription) SetState(v string) *SpotDatafeedSubscription { + s.State = &v + return s +} + +// Describes the launch specification for one or more Spot Instances. If you +// include On-Demand capacity in your fleet request, you can't use SpotFleetLaunchSpecification; +// you must use LaunchTemplateConfig (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_LaunchTemplateConfig.html). +type SpotFleetLaunchSpecification struct { + _ struct{} `type:"structure"` + + // Deprecated. + AddressingType *string `locationName:"addressingType" type:"string"` + + // One or more block devices that are mapped to the Spot Instances. You can't + // specify both a snapshot ID and an encryption value. This is because only + // blank volumes can be encrypted on creation. If a snapshot is the basis for + // a volume, it is not blank and its encryption status is used for the volume + // encryption status. + BlockDeviceMappings []*BlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"` + + // Indicates whether the instances are optimized for EBS I/O. This optimization + // provides dedicated throughput to Amazon EBS and an optimized configuration + // stack to provide optimal EBS I/O performance. This optimization isn't available + // with all instance types. Additional usage charges apply when using an EBS + // Optimized instance. + // + // Default: false + EbsOptimized *bool `locationName:"ebsOptimized" type:"boolean"` + + // The IAM instance profile. + IamInstanceProfile *IamInstanceProfileSpecification `locationName:"iamInstanceProfile" type:"structure"` + + // The ID of the AMI. + ImageId *string `locationName:"imageId" type:"string"` + + // The instance type. + InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` + + // The ID of the kernel. + KernelId *string `locationName:"kernelId" type:"string"` + + // The name of the key pair. + KeyName *string `locationName:"keyName" type:"string"` + + // Enable or disable monitoring for the instances. + Monitoring *SpotFleetMonitoring `locationName:"monitoring" type:"structure"` + + // One or more network interfaces. If you specify a network interface, you must + // specify subnet IDs and security group IDs using the network interface. + NetworkInterfaces []*InstanceNetworkInterfaceSpecification `locationName:"networkInterfaceSet" locationNameList:"item" type:"list"` + + // The placement information. + Placement *SpotPlacement `locationName:"placement" type:"structure"` + + // The ID of the RAM disk. Some kernels require additional drivers at launch. + // Check the kernel requirements for information about whether you need to specify + // a RAM disk. To find kernel requirements, refer to the AWS Resource Center + // and search for the kernel ID. + RamdiskId *string `locationName:"ramdiskId" type:"string"` + + // One or more security groups. When requesting instances in a VPC, you must + // specify the IDs of the security groups. When requesting instances in EC2-Classic, + // you can specify the names or the IDs of the security groups. + SecurityGroups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"` + + // The maximum price per unit hour that you are willing to pay for a Spot Instance. + // If this value is not specified, the default is the Spot price specified for + // the fleet. To determine the Spot price per unit hour, divide the Spot price + // by the value of WeightedCapacity. + SpotPrice *string `locationName:"spotPrice" type:"string"` + + // The IDs of the subnets in which to launch the instances. To specify multiple + // subnets, separate them using commas; for example, "subnet-1234abcdeexample1, + // subnet-0987cdef6example2". + SubnetId *string `locationName:"subnetId" type:"string"` + + // The tags to apply during creation. + TagSpecifications []*SpotFleetTagSpecification `locationName:"tagSpecificationSet" locationNameList:"item" type:"list"` + + // The Base64-encoded user data that instances use when starting up. + UserData *string `locationName:"userData" type:"string"` + + // The number of units provided by the specified instance type. These are the + // same units that you chose to set the target capacity in terms of instances, + // or a performance characteristic such as vCPUs, memory, or I/O. + // + // If the target capacity divided by this value is not a whole number, Amazon + // EC2 rounds the number of instances to the next whole number. If this value + // is not specified, the default is 1. + WeightedCapacity *float64 `locationName:"weightedCapacity" type:"double"` +} + +// String returns the string representation +func (s SpotFleetLaunchSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SpotFleetLaunchSpecification) GoString() string { + return s.String() +} + +// SetAddressingType sets the AddressingType field's value. +func (s *SpotFleetLaunchSpecification) SetAddressingType(v string) *SpotFleetLaunchSpecification { + s.AddressingType = &v + return s +} + +// SetBlockDeviceMappings sets the BlockDeviceMappings field's value. +func (s *SpotFleetLaunchSpecification) SetBlockDeviceMappings(v []*BlockDeviceMapping) *SpotFleetLaunchSpecification { + s.BlockDeviceMappings = v + return s +} + +// SetEbsOptimized sets the EbsOptimized field's value. +func (s *SpotFleetLaunchSpecification) SetEbsOptimized(v bool) *SpotFleetLaunchSpecification { + s.EbsOptimized = &v + return s +} + +// SetIamInstanceProfile sets the IamInstanceProfile field's value. +func (s *SpotFleetLaunchSpecification) SetIamInstanceProfile(v *IamInstanceProfileSpecification) *SpotFleetLaunchSpecification { + s.IamInstanceProfile = v + return s +} + +// SetImageId sets the ImageId field's value. +func (s *SpotFleetLaunchSpecification) SetImageId(v string) *SpotFleetLaunchSpecification { + s.ImageId = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *SpotFleetLaunchSpecification) SetInstanceType(v string) *SpotFleetLaunchSpecification { + s.InstanceType = &v + return s +} + +// SetKernelId sets the KernelId field's value. +func (s *SpotFleetLaunchSpecification) SetKernelId(v string) *SpotFleetLaunchSpecification { + s.KernelId = &v + return s +} + +// SetKeyName sets the KeyName field's value. +func (s *SpotFleetLaunchSpecification) SetKeyName(v string) *SpotFleetLaunchSpecification { + s.KeyName = &v + return s +} + +// SetMonitoring sets the Monitoring field's value. +func (s *SpotFleetLaunchSpecification) SetMonitoring(v *SpotFleetMonitoring) *SpotFleetLaunchSpecification { + s.Monitoring = v + return s +} + +// SetNetworkInterfaces sets the NetworkInterfaces field's value. +func (s *SpotFleetLaunchSpecification) SetNetworkInterfaces(v []*InstanceNetworkInterfaceSpecification) *SpotFleetLaunchSpecification { + s.NetworkInterfaces = v + return s +} + +// SetPlacement sets the Placement field's value. +func (s *SpotFleetLaunchSpecification) SetPlacement(v *SpotPlacement) *SpotFleetLaunchSpecification { + s.Placement = v + return s +} + +// SetRamdiskId sets the RamdiskId field's value. +func (s *SpotFleetLaunchSpecification) SetRamdiskId(v string) *SpotFleetLaunchSpecification { + s.RamdiskId = &v + return s +} + +// SetSecurityGroups sets the SecurityGroups field's value. +func (s *SpotFleetLaunchSpecification) SetSecurityGroups(v []*GroupIdentifier) *SpotFleetLaunchSpecification { + s.SecurityGroups = v + return s +} + +// SetSpotPrice sets the SpotPrice field's value. +func (s *SpotFleetLaunchSpecification) SetSpotPrice(v string) *SpotFleetLaunchSpecification { + s.SpotPrice = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *SpotFleetLaunchSpecification) SetSubnetId(v string) *SpotFleetLaunchSpecification { + s.SubnetId = &v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *SpotFleetLaunchSpecification) SetTagSpecifications(v []*SpotFleetTagSpecification) *SpotFleetLaunchSpecification { + s.TagSpecifications = v + return s +} + +// SetUserData sets the UserData field's value. +func (s *SpotFleetLaunchSpecification) SetUserData(v string) *SpotFleetLaunchSpecification { + s.UserData = &v + return s +} + +// SetWeightedCapacity sets the WeightedCapacity field's value. +func (s *SpotFleetLaunchSpecification) SetWeightedCapacity(v float64) *SpotFleetLaunchSpecification { + s.WeightedCapacity = &v + return s +} + +// Describes whether monitoring is enabled. +type SpotFleetMonitoring struct { + _ struct{} `type:"structure"` + + // Enables monitoring for the instance. + // + // Default: false + Enabled *bool `locationName:"enabled" type:"boolean"` +} + +// String returns the string representation +func (s SpotFleetMonitoring) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SpotFleetMonitoring) GoString() string { + return s.String() +} + +// SetEnabled sets the Enabled field's value. +func (s *SpotFleetMonitoring) SetEnabled(v bool) *SpotFleetMonitoring { + s.Enabled = &v + return s +} + +// Describes a Spot Fleet request. +type SpotFleetRequestConfig struct { + _ struct{} `type:"structure"` + + // The progress of the Spot Fleet request. If there is an error, the status + // is error. After all requests are placed, the status is pending_fulfillment. + // If the size of the fleet is equal to or greater than its target capacity, + // the status is fulfilled. If the size of the fleet is decreased, the status + // is pending_termination while Spot Instances are terminating. + ActivityStatus *string `locationName:"activityStatus" type:"string" enum:"ActivityStatus"` + + // The creation date and time of the request. + CreateTime *time.Time `locationName:"createTime" type:"timestamp"` + + // The configuration of the Spot Fleet request. + SpotFleetRequestConfig *SpotFleetRequestConfigData `locationName:"spotFleetRequestConfig" type:"structure"` + + // The ID of the Spot Fleet request. + SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string"` + + // The state of the Spot Fleet request. + SpotFleetRequestState *string `locationName:"spotFleetRequestState" type:"string" enum:"BatchState"` +} + +// String returns the string representation +func (s SpotFleetRequestConfig) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SpotFleetRequestConfig) GoString() string { + return s.String() +} + +// SetActivityStatus sets the ActivityStatus field's value. +func (s *SpotFleetRequestConfig) SetActivityStatus(v string) *SpotFleetRequestConfig { + s.ActivityStatus = &v + return s +} + +// SetCreateTime sets the CreateTime field's value. +func (s *SpotFleetRequestConfig) SetCreateTime(v time.Time) *SpotFleetRequestConfig { + s.CreateTime = &v + return s +} + +// SetSpotFleetRequestConfig sets the SpotFleetRequestConfig field's value. +func (s *SpotFleetRequestConfig) SetSpotFleetRequestConfig(v *SpotFleetRequestConfigData) *SpotFleetRequestConfig { + s.SpotFleetRequestConfig = v + return s +} + +// SetSpotFleetRequestId sets the SpotFleetRequestId field's value. +func (s *SpotFleetRequestConfig) SetSpotFleetRequestId(v string) *SpotFleetRequestConfig { + s.SpotFleetRequestId = &v + return s +} + +// SetSpotFleetRequestState sets the SpotFleetRequestState field's value. +func (s *SpotFleetRequestConfig) SetSpotFleetRequestState(v string) *SpotFleetRequestConfig { + s.SpotFleetRequestState = &v + return s +} + +// Describes the configuration of a Spot Fleet request. +type SpotFleetRequestConfigData struct { + _ struct{} `type:"structure"` + + // Indicates how to allocate the target Spot Instance capacity across the Spot + // Instance pools specified by the Spot Fleet request. + // + // If the allocation strategy is lowestPrice, Spot Fleet launches instances + // from the Spot Instance pools with the lowest price. This is the default allocation + // strategy. + // + // If the allocation strategy is diversified, Spot Fleet launches instances + // from all the Spot Instance pools that you specify. + // + // If the allocation strategy is capacityOptimized, Spot Fleet launches instances + // from Spot Instance pools with optimal capacity for the number of instances + // that are launching. + AllocationStrategy *string `locationName:"allocationStrategy" type:"string" enum:"AllocationStrategy"` + + // A unique, case-sensitive identifier that you provide to ensure the idempotency + // of your listings. This helps to avoid duplicate listings. For more information, + // see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `locationName:"clientToken" type:"string"` + + // Indicates whether running Spot Instances should be terminated if you decrease + // the target capacity of the Spot Fleet request below the current size of the + // Spot Fleet. + ExcessCapacityTerminationPolicy *string `locationName:"excessCapacityTerminationPolicy" type:"string" enum:"ExcessCapacityTerminationPolicy"` + + // The number of units fulfilled by this request compared to the set target + // capacity. You cannot set this value. + FulfilledCapacity *float64 `locationName:"fulfilledCapacity" type:"double"` + + // The Amazon Resource Name (ARN) of an AWS Identity and Access Management (IAM) + // role that grants the Spot Fleet the permission to request, launch, terminate, + // and tag instances on your behalf. For more information, see Spot Fleet Prerequisites + // (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-requests.html#spot-fleet-prerequisites) + // in the Amazon EC2 User Guide for Linux Instances. Spot Fleet can terminate + // Spot Instances on your behalf when you cancel its Spot Fleet request using + // CancelSpotFleetRequests or when the Spot Fleet request expires, if you set + // TerminateInstancesWithExpiration. + // + // IamFleetRole is a required field + IamFleetRole *string `locationName:"iamFleetRole" type:"string" required:"true"` + + // The behavior when a Spot Instance is interrupted. The default is terminate. + InstanceInterruptionBehavior *string `locationName:"instanceInterruptionBehavior" type:"string" enum:"InstanceInterruptionBehavior"` + + // The number of Spot pools across which to allocate your target Spot capacity. + // Valid only when Spot AllocationStrategy is set to lowest-price. Spot Fleet + // selects the cheapest Spot pools and evenly allocates your target Spot capacity + // across the number of Spot pools that you specify. + InstancePoolsToUseCount *int64 `locationName:"instancePoolsToUseCount" type:"integer"` + + // The launch specifications for the Spot Fleet request. If you specify LaunchSpecifications, + // you can't specify LaunchTemplateConfigs. If you include On-Demand capacity + // in your request, you must use LaunchTemplateConfigs. + LaunchSpecifications []*SpotFleetLaunchSpecification `locationName:"launchSpecifications" locationNameList:"item" type:"list"` + + // The launch template and overrides. If you specify LaunchTemplateConfigs, + // you can't specify LaunchSpecifications. If you include On-Demand capacity + // in your request, you must use LaunchTemplateConfigs. + LaunchTemplateConfigs []*LaunchTemplateConfig `locationName:"launchTemplateConfigs" locationNameList:"item" type:"list"` + + // One or more Classic Load Balancers and target groups to attach to the Spot + // Fleet request. Spot Fleet registers the running Spot Instances with the specified + // Classic Load Balancers and target groups. + // + // With Network Load Balancers, Spot Fleet cannot register instances that have + // the following instance types: C1, CC1, CC2, CG1, CG2, CR1, CS1, G1, G2, HI1, + // HS1, M1, M2, M3, and T1. + LoadBalancersConfig *LoadBalancersConfig `locationName:"loadBalancersConfig" type:"structure"` + + // The order of the launch template overrides to use in fulfilling On-Demand + // capacity. If you specify lowestPrice, Spot Fleet uses price to determine + // the order, launching the lowest price first. If you specify prioritized, + // Spot Fleet uses the priority that you assign to each Spot Fleet launch template + // override, launching the highest priority first. If you do not specify a value, + // Spot Fleet defaults to lowestPrice. + OnDemandAllocationStrategy *string `locationName:"onDemandAllocationStrategy" type:"string" enum:"OnDemandAllocationStrategy"` + + // The number of On-Demand units fulfilled by this request compared to the set + // target On-Demand capacity. + OnDemandFulfilledCapacity *float64 `locationName:"onDemandFulfilledCapacity" type:"double"` + + // The maximum amount per hour for On-Demand Instances that you're willing to + // pay. You can use the onDemandMaxTotalPrice parameter, the spotMaxTotalPrice + // parameter, or both parameters to ensure that your fleet cost does not exceed + // your budget. If you set a maximum price per hour for the On-Demand Instances + // and Spot Instances in your request, Spot Fleet will launch instances until + // it reaches the maximum amount you're willing to pay. When the maximum amount + // you're willing to pay is reached, the fleet stops launching instances even + // if it hasn’t met the target capacity. + OnDemandMaxTotalPrice *string `locationName:"onDemandMaxTotalPrice" type:"string"` + + // The number of On-Demand units to request. You can choose to set the target + // capacity in terms of instances or a performance characteristic that is important + // to your application workload, such as vCPUs, memory, or I/O. If the request + // type is maintain, you can specify a target capacity of 0 and add capacity + // later. + OnDemandTargetCapacity *int64 `locationName:"onDemandTargetCapacity" type:"integer"` + + // Indicates whether Spot Fleet should replace unhealthy instances. + ReplaceUnhealthyInstances *bool `locationName:"replaceUnhealthyInstances" type:"boolean"` + + // The maximum amount per hour for Spot Instances that you're willing to pay. + // You can use the spotdMaxTotalPrice parameter, the onDemandMaxTotalPrice parameter, + // or both parameters to ensure that your fleet cost does not exceed your budget. + // If you set a maximum price per hour for the On-Demand Instances and Spot + // Instances in your request, Spot Fleet will launch instances until it reaches + // the maximum amount you're willing to pay. When the maximum amount you're + // willing to pay is reached, the fleet stops launching instances even if it + // hasn’t met the target capacity. + SpotMaxTotalPrice *string `locationName:"spotMaxTotalPrice" type:"string"` + + // The maximum price per unit hour that you are willing to pay for a Spot Instance. + // The default is the On-Demand price. + SpotPrice *string `locationName:"spotPrice" type:"string"` + + // The number of units to request for the Spot Fleet. You can choose to set + // the target capacity in terms of instances or a performance characteristic + // that is important to your application workload, such as vCPUs, memory, or + // I/O. If the request type is maintain, you can specify a target capacity of + // 0 and add capacity later. + // + // TargetCapacity is a required field + TargetCapacity *int64 `locationName:"targetCapacity" type:"integer" required:"true"` + + // Indicates whether running Spot Instances are terminated when the Spot Fleet + // request expires. + TerminateInstancesWithExpiration *bool `locationName:"terminateInstancesWithExpiration" type:"boolean"` + + // The type of request. Indicates whether the Spot Fleet only requests the target + // capacity or also attempts to maintain it. When this value is request, the + // Spot Fleet only places the required requests. It does not attempt to replenish + // Spot Instances if capacity is diminished, nor does it submit requests in + // alternative Spot pools if capacity is not available. When this value is maintain, + // the Spot Fleet maintains the target capacity. The Spot Fleet places the required + // requests to meet capacity and automatically replenishes any interrupted instances. + // Default: maintain. instant is listed but is not used by Spot Fleet. + Type *string `locationName:"type" type:"string" enum:"FleetType"` + + // The start date and time of the request, in UTC format (YYYY-MM-DDTHH:MM:SSZ). + // By default, Amazon EC2 starts fulfilling the request immediately. + ValidFrom *time.Time `locationName:"validFrom" type:"timestamp"` + + // The end date and time of the request, in UTC format (YYYY-MM-DDTHH:MM:SSZ). + // After the end date and time, no new Spot Instance requests are placed or + // able to fulfill the request. If no value is specified, the Spot Fleet request + // remains until you cancel it. + ValidUntil *time.Time `locationName:"validUntil" type:"timestamp"` +} + +// String returns the string representation +func (s SpotFleetRequestConfigData) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SpotFleetRequestConfigData) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *SpotFleetRequestConfigData) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "SpotFleetRequestConfigData"} + if s.IamFleetRole == nil { + invalidParams.Add(request.NewErrParamRequired("IamFleetRole")) + } + if s.TargetCapacity == nil { + invalidParams.Add(request.NewErrParamRequired("TargetCapacity")) + } + if s.LaunchTemplateConfigs != nil { + for i, v := range s.LaunchTemplateConfigs { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "LaunchTemplateConfigs", i), err.(request.ErrInvalidParams)) + } + } + } + if s.LoadBalancersConfig != nil { + if err := s.LoadBalancersConfig.Validate(); err != nil { + invalidParams.AddNested("LoadBalancersConfig", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAllocationStrategy sets the AllocationStrategy field's value. +func (s *SpotFleetRequestConfigData) SetAllocationStrategy(v string) *SpotFleetRequestConfigData { + s.AllocationStrategy = &v + return s +} + +// SetClientToken sets the ClientToken field's value. +func (s *SpotFleetRequestConfigData) SetClientToken(v string) *SpotFleetRequestConfigData { + s.ClientToken = &v + return s +} + +// SetExcessCapacityTerminationPolicy sets the ExcessCapacityTerminationPolicy field's value. +func (s *SpotFleetRequestConfigData) SetExcessCapacityTerminationPolicy(v string) *SpotFleetRequestConfigData { + s.ExcessCapacityTerminationPolicy = &v + return s +} + +// SetFulfilledCapacity sets the FulfilledCapacity field's value. +func (s *SpotFleetRequestConfigData) SetFulfilledCapacity(v float64) *SpotFleetRequestConfigData { + s.FulfilledCapacity = &v + return s +} + +// SetIamFleetRole sets the IamFleetRole field's value. +func (s *SpotFleetRequestConfigData) SetIamFleetRole(v string) *SpotFleetRequestConfigData { + s.IamFleetRole = &v + return s +} + +// SetInstanceInterruptionBehavior sets the InstanceInterruptionBehavior field's value. +func (s *SpotFleetRequestConfigData) SetInstanceInterruptionBehavior(v string) *SpotFleetRequestConfigData { + s.InstanceInterruptionBehavior = &v + return s +} + +// SetInstancePoolsToUseCount sets the InstancePoolsToUseCount field's value. +func (s *SpotFleetRequestConfigData) SetInstancePoolsToUseCount(v int64) *SpotFleetRequestConfigData { + s.InstancePoolsToUseCount = &v + return s +} + +// SetLaunchSpecifications sets the LaunchSpecifications field's value. +func (s *SpotFleetRequestConfigData) SetLaunchSpecifications(v []*SpotFleetLaunchSpecification) *SpotFleetRequestConfigData { + s.LaunchSpecifications = v + return s +} + +// SetLaunchTemplateConfigs sets the LaunchTemplateConfigs field's value. +func (s *SpotFleetRequestConfigData) SetLaunchTemplateConfigs(v []*LaunchTemplateConfig) *SpotFleetRequestConfigData { + s.LaunchTemplateConfigs = v + return s +} + +// SetLoadBalancersConfig sets the LoadBalancersConfig field's value. +func (s *SpotFleetRequestConfigData) SetLoadBalancersConfig(v *LoadBalancersConfig) *SpotFleetRequestConfigData { + s.LoadBalancersConfig = v + return s +} + +// SetOnDemandAllocationStrategy sets the OnDemandAllocationStrategy field's value. +func (s *SpotFleetRequestConfigData) SetOnDemandAllocationStrategy(v string) *SpotFleetRequestConfigData { + s.OnDemandAllocationStrategy = &v + return s +} + +// SetOnDemandFulfilledCapacity sets the OnDemandFulfilledCapacity field's value. +func (s *SpotFleetRequestConfigData) SetOnDemandFulfilledCapacity(v float64) *SpotFleetRequestConfigData { + s.OnDemandFulfilledCapacity = &v + return s +} + +// SetOnDemandMaxTotalPrice sets the OnDemandMaxTotalPrice field's value. +func (s *SpotFleetRequestConfigData) SetOnDemandMaxTotalPrice(v string) *SpotFleetRequestConfigData { + s.OnDemandMaxTotalPrice = &v + return s +} + +// SetOnDemandTargetCapacity sets the OnDemandTargetCapacity field's value. +func (s *SpotFleetRequestConfigData) SetOnDemandTargetCapacity(v int64) *SpotFleetRequestConfigData { + s.OnDemandTargetCapacity = &v + return s +} + +// SetReplaceUnhealthyInstances sets the ReplaceUnhealthyInstances field's value. +func (s *SpotFleetRequestConfigData) SetReplaceUnhealthyInstances(v bool) *SpotFleetRequestConfigData { + s.ReplaceUnhealthyInstances = &v + return s +} + +// SetSpotMaxTotalPrice sets the SpotMaxTotalPrice field's value. +func (s *SpotFleetRequestConfigData) SetSpotMaxTotalPrice(v string) *SpotFleetRequestConfigData { + s.SpotMaxTotalPrice = &v + return s +} + +// SetSpotPrice sets the SpotPrice field's value. +func (s *SpotFleetRequestConfigData) SetSpotPrice(v string) *SpotFleetRequestConfigData { + s.SpotPrice = &v + return s +} + +// SetTargetCapacity sets the TargetCapacity field's value. +func (s *SpotFleetRequestConfigData) SetTargetCapacity(v int64) *SpotFleetRequestConfigData { + s.TargetCapacity = &v + return s +} + +// SetTerminateInstancesWithExpiration sets the TerminateInstancesWithExpiration field's value. +func (s *SpotFleetRequestConfigData) SetTerminateInstancesWithExpiration(v bool) *SpotFleetRequestConfigData { + s.TerminateInstancesWithExpiration = &v + return s +} + +// SetType sets the Type field's value. +func (s *SpotFleetRequestConfigData) SetType(v string) *SpotFleetRequestConfigData { + s.Type = &v + return s +} + +// SetValidFrom sets the ValidFrom field's value. +func (s *SpotFleetRequestConfigData) SetValidFrom(v time.Time) *SpotFleetRequestConfigData { + s.ValidFrom = &v + return s +} + +// SetValidUntil sets the ValidUntil field's value. +func (s *SpotFleetRequestConfigData) SetValidUntil(v time.Time) *SpotFleetRequestConfigData { + s.ValidUntil = &v + return s +} + +// The tags for a Spot Fleet resource. +type SpotFleetTagSpecification struct { + _ struct{} `type:"structure"` + + // The type of resource. Currently, the only resource type that is supported + // is instance. + ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"` + + // The tags. + Tags []*Tag `locationName:"tag" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s SpotFleetTagSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SpotFleetTagSpecification) GoString() string { + return s.String() +} + +// SetResourceType sets the ResourceType field's value. +func (s *SpotFleetTagSpecification) SetResourceType(v string) *SpotFleetTagSpecification { + s.ResourceType = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *SpotFleetTagSpecification) SetTags(v []*Tag) *SpotFleetTagSpecification { + s.Tags = v + return s +} + +// Describes a Spot Instance request. +type SpotInstanceRequest struct { + _ struct{} `type:"structure"` + + // If you specified a duration and your Spot Instance request was fulfilled, + // this is the fixed hourly price in effect for the Spot Instance while it runs. + ActualBlockHourlyPrice *string `locationName:"actualBlockHourlyPrice" type:"string"` + + // The Availability Zone group. If you specify the same Availability Zone group + // for all Spot Instance requests, all Spot Instances are launched in the same + // Availability Zone. + AvailabilityZoneGroup *string `locationName:"availabilityZoneGroup" type:"string"` + + // The duration for the Spot Instance, in minutes. + BlockDurationMinutes *int64 `locationName:"blockDurationMinutes" type:"integer"` + + // The date and time when the Spot Instance request was created, in UTC format + // (for example, YYYY-MM-DDTHH:MM:SSZ). + CreateTime *time.Time `locationName:"createTime" type:"timestamp"` + + // The fault codes for the Spot Instance request, if any. + Fault *SpotInstanceStateFault `locationName:"fault" type:"structure"` + + // The instance ID, if an instance has been launched to fulfill the Spot Instance + // request. + InstanceId *string `locationName:"instanceId" type:"string"` + + // The behavior when a Spot Instance is interrupted. + InstanceInterruptionBehavior *string `locationName:"instanceInterruptionBehavior" type:"string" enum:"InstanceInterruptionBehavior"` + + // The instance launch group. Launch groups are Spot Instances that launch together + // and terminate together. + LaunchGroup *string `locationName:"launchGroup" type:"string"` + + // Additional information for launching instances. + LaunchSpecification *LaunchSpecification `locationName:"launchSpecification" type:"structure"` + + // The Availability Zone in which the request is launched. + LaunchedAvailabilityZone *string `locationName:"launchedAvailabilityZone" type:"string"` + + // The product description associated with the Spot Instance. + ProductDescription *string `locationName:"productDescription" type:"string" enum:"RIProductDescription"` + + // The ID of the Spot Instance request. + SpotInstanceRequestId *string `locationName:"spotInstanceRequestId" type:"string"` + + // The maximum price per hour that you are willing to pay for a Spot Instance. + SpotPrice *string `locationName:"spotPrice" type:"string"` + + // The state of the Spot Instance request. Spot status information helps track + // your Spot Instance requests. For more information, see Spot Status (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html) + // in the Amazon EC2 User Guide for Linux Instances. + State *string `locationName:"state" type:"string" enum:"SpotInstanceState"` + + // The status code and status message describing the Spot Instance request. + Status *SpotInstanceStatus `locationName:"status" type:"structure"` + + // Any tags assigned to the resource. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The Spot Instance request type. + Type *string `locationName:"type" type:"string" enum:"SpotInstanceType"` + + // The start date of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). + // The request becomes active at this date and time. + ValidFrom *time.Time `locationName:"validFrom" type:"timestamp"` + + // The end date of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). + // If this is a one-time request, it remains active until all instances launch, + // the request is canceled, or this date is reached. If the request is persistent, + // it remains active until it is canceled or this date is reached. The default + // end date is 7 days from the current date. + ValidUntil *time.Time `locationName:"validUntil" type:"timestamp"` +} + +// String returns the string representation +func (s SpotInstanceRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SpotInstanceRequest) GoString() string { + return s.String() +} + +// SetActualBlockHourlyPrice sets the ActualBlockHourlyPrice field's value. +func (s *SpotInstanceRequest) SetActualBlockHourlyPrice(v string) *SpotInstanceRequest { + s.ActualBlockHourlyPrice = &v + return s +} + +// SetAvailabilityZoneGroup sets the AvailabilityZoneGroup field's value. +func (s *SpotInstanceRequest) SetAvailabilityZoneGroup(v string) *SpotInstanceRequest { + s.AvailabilityZoneGroup = &v + return s +} + +// SetBlockDurationMinutes sets the BlockDurationMinutes field's value. +func (s *SpotInstanceRequest) SetBlockDurationMinutes(v int64) *SpotInstanceRequest { + s.BlockDurationMinutes = &v + return s +} + +// SetCreateTime sets the CreateTime field's value. +func (s *SpotInstanceRequest) SetCreateTime(v time.Time) *SpotInstanceRequest { + s.CreateTime = &v + return s +} + +// SetFault sets the Fault field's value. +func (s *SpotInstanceRequest) SetFault(v *SpotInstanceStateFault) *SpotInstanceRequest { + s.Fault = v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *SpotInstanceRequest) SetInstanceId(v string) *SpotInstanceRequest { + s.InstanceId = &v + return s +} + +// SetInstanceInterruptionBehavior sets the InstanceInterruptionBehavior field's value. +func (s *SpotInstanceRequest) SetInstanceInterruptionBehavior(v string) *SpotInstanceRequest { + s.InstanceInterruptionBehavior = &v + return s +} + +// SetLaunchGroup sets the LaunchGroup field's value. +func (s *SpotInstanceRequest) SetLaunchGroup(v string) *SpotInstanceRequest { + s.LaunchGroup = &v + return s +} + +// SetLaunchSpecification sets the LaunchSpecification field's value. +func (s *SpotInstanceRequest) SetLaunchSpecification(v *LaunchSpecification) *SpotInstanceRequest { + s.LaunchSpecification = v + return s +} + +// SetLaunchedAvailabilityZone sets the LaunchedAvailabilityZone field's value. +func (s *SpotInstanceRequest) SetLaunchedAvailabilityZone(v string) *SpotInstanceRequest { + s.LaunchedAvailabilityZone = &v + return s +} + +// SetProductDescription sets the ProductDescription field's value. +func (s *SpotInstanceRequest) SetProductDescription(v string) *SpotInstanceRequest { + s.ProductDescription = &v + return s +} + +// SetSpotInstanceRequestId sets the SpotInstanceRequestId field's value. +func (s *SpotInstanceRequest) SetSpotInstanceRequestId(v string) *SpotInstanceRequest { + s.SpotInstanceRequestId = &v + return s +} + +// SetSpotPrice sets the SpotPrice field's value. +func (s *SpotInstanceRequest) SetSpotPrice(v string) *SpotInstanceRequest { + s.SpotPrice = &v + return s +} + +// SetState sets the State field's value. +func (s *SpotInstanceRequest) SetState(v string) *SpotInstanceRequest { + s.State = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *SpotInstanceRequest) SetStatus(v *SpotInstanceStatus) *SpotInstanceRequest { + s.Status = v + return s +} + +// SetTags sets the Tags field's value. +func (s *SpotInstanceRequest) SetTags(v []*Tag) *SpotInstanceRequest { + s.Tags = v + return s +} + +// SetType sets the Type field's value. +func (s *SpotInstanceRequest) SetType(v string) *SpotInstanceRequest { + s.Type = &v + return s +} + +// SetValidFrom sets the ValidFrom field's value. +func (s *SpotInstanceRequest) SetValidFrom(v time.Time) *SpotInstanceRequest { + s.ValidFrom = &v + return s +} + +// SetValidUntil sets the ValidUntil field's value. +func (s *SpotInstanceRequest) SetValidUntil(v time.Time) *SpotInstanceRequest { + s.ValidUntil = &v + return s +} + +// Describes a Spot Instance state change. +type SpotInstanceStateFault struct { + _ struct{} `type:"structure"` + + // The reason code for the Spot Instance state change. + Code *string `locationName:"code" type:"string"` + + // The message for the Spot Instance state change. + Message *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s SpotInstanceStateFault) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SpotInstanceStateFault) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *SpotInstanceStateFault) SetCode(v string) *SpotInstanceStateFault { + s.Code = &v + return s +} + +// SetMessage sets the Message field's value. +func (s *SpotInstanceStateFault) SetMessage(v string) *SpotInstanceStateFault { + s.Message = &v + return s +} + +// Describes the status of a Spot Instance request. +type SpotInstanceStatus struct { + _ struct{} `type:"structure"` + + // The status code. For a list of status codes, see Spot Status Codes (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html#spot-instance-bid-status-understand) + // in the Amazon EC2 User Guide for Linux Instances. + Code *string `locationName:"code" type:"string"` + + // The description for the status code. + Message *string `locationName:"message" type:"string"` + + // The date and time of the most recent status update, in UTC format (for example, + // YYYY-MM-DDTHH:MM:SSZ). + UpdateTime *time.Time `locationName:"updateTime" type:"timestamp"` +} + +// String returns the string representation +func (s SpotInstanceStatus) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SpotInstanceStatus) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *SpotInstanceStatus) SetCode(v string) *SpotInstanceStatus { + s.Code = &v + return s +} + +// SetMessage sets the Message field's value. +func (s *SpotInstanceStatus) SetMessage(v string) *SpotInstanceStatus { + s.Message = &v + return s +} + +// SetUpdateTime sets the UpdateTime field's value. +func (s *SpotInstanceStatus) SetUpdateTime(v time.Time) *SpotInstanceStatus { + s.UpdateTime = &v + return s +} + +// The options for Spot Instances. +type SpotMarketOptions struct { + _ struct{} `type:"structure"` + + // The required duration for the Spot Instances (also known as Spot blocks), + // in minutes. This value must be a multiple of 60 (60, 120, 180, 240, 300, + // or 360). + BlockDurationMinutes *int64 `type:"integer"` + + // The behavior when a Spot Instance is interrupted. The default is terminate. + InstanceInterruptionBehavior *string `type:"string" enum:"InstanceInterruptionBehavior"` + + // The maximum hourly price you're willing to pay for the Spot Instances. The + // default is the On-Demand price. + MaxPrice *string `type:"string"` + + // The Spot Instance request type. For RunInstances, persistent Spot Instance + // requests are only supported when InstanceInterruptionBehavior is set to either + // hibernate or stop. + SpotInstanceType *string `type:"string" enum:"SpotInstanceType"` + + // The end date of the request. For a one-time request, the request remains + // active until all instances launch, the request is canceled, or this date + // is reached. If the request is persistent, it remains active until it is canceled + // or this date and time is reached. The default end date is 7 days from the + // current date. + ValidUntil *time.Time `type:"timestamp"` +} + +// String returns the string representation +func (s SpotMarketOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SpotMarketOptions) GoString() string { + return s.String() +} + +// SetBlockDurationMinutes sets the BlockDurationMinutes field's value. +func (s *SpotMarketOptions) SetBlockDurationMinutes(v int64) *SpotMarketOptions { + s.BlockDurationMinutes = &v + return s +} + +// SetInstanceInterruptionBehavior sets the InstanceInterruptionBehavior field's value. +func (s *SpotMarketOptions) SetInstanceInterruptionBehavior(v string) *SpotMarketOptions { + s.InstanceInterruptionBehavior = &v + return s +} + +// SetMaxPrice sets the MaxPrice field's value. +func (s *SpotMarketOptions) SetMaxPrice(v string) *SpotMarketOptions { + s.MaxPrice = &v + return s +} + +// SetSpotInstanceType sets the SpotInstanceType field's value. +func (s *SpotMarketOptions) SetSpotInstanceType(v string) *SpotMarketOptions { + s.SpotInstanceType = &v + return s +} + +// SetValidUntil sets the ValidUntil field's value. +func (s *SpotMarketOptions) SetValidUntil(v time.Time) *SpotMarketOptions { + s.ValidUntil = &v + return s +} + +// Describes the configuration of Spot Instances in an EC2 Fleet. +type SpotOptions struct { + _ struct{} `type:"structure"` + + // Indicates how to allocate the target Spot Instance capacity across the Spot + // Instance pools specified by the EC2 Fleet. + // + // If the allocation strategy is lowest-price, EC2 Fleet launches instances + // from the Spot Instance pools with the lowest price. This is the default allocation + // strategy. + // + // If the allocation strategy is diversified, EC2 Fleet launches instances from + // all the Spot Instance pools that you specify. + // + // If the allocation strategy is capacity-optimized, EC2 Fleet launches instances + // from Spot Instance pools with optimal capacity for the number of instances + // that are launching. + AllocationStrategy *string `locationName:"allocationStrategy" type:"string" enum:"SpotAllocationStrategy"` + + // The behavior when a Spot Instance is interrupted. The default is terminate. + InstanceInterruptionBehavior *string `locationName:"instanceInterruptionBehavior" type:"string" enum:"SpotInstanceInterruptionBehavior"` + + // The number of Spot pools across which to allocate your target Spot capacity. + // Valid only when AllocationStrategy is set to lowest-price. EC2 Fleet selects + // the cheapest Spot pools and evenly allocates your target Spot capacity across + // the number of Spot pools that you specify. + InstancePoolsToUseCount *int64 `locationName:"instancePoolsToUseCount" type:"integer"` + + // The maximum amount per hour for Spot Instances that you're willing to pay. + MaxTotalPrice *string `locationName:"maxTotalPrice" type:"string"` + + // The minimum target capacity for Spot Instances in the fleet. If the minimum + // target capacity is not reached, the fleet launches no instances. + MinTargetCapacity *int64 `locationName:"minTargetCapacity" type:"integer"` + + // Indicates that the fleet launches all Spot Instances into a single Availability + // Zone. + SingleAvailabilityZone *bool `locationName:"singleAvailabilityZone" type:"boolean"` + + // Indicates that the fleet uses a single instance type to launch all Spot Instances + // in the fleet. + SingleInstanceType *bool `locationName:"singleInstanceType" type:"boolean"` +} + +// String returns the string representation +func (s SpotOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SpotOptions) GoString() string { + return s.String() +} + +// SetAllocationStrategy sets the AllocationStrategy field's value. +func (s *SpotOptions) SetAllocationStrategy(v string) *SpotOptions { + s.AllocationStrategy = &v + return s +} + +// SetInstanceInterruptionBehavior sets the InstanceInterruptionBehavior field's value. +func (s *SpotOptions) SetInstanceInterruptionBehavior(v string) *SpotOptions { + s.InstanceInterruptionBehavior = &v + return s +} + +// SetInstancePoolsToUseCount sets the InstancePoolsToUseCount field's value. +func (s *SpotOptions) SetInstancePoolsToUseCount(v int64) *SpotOptions { + s.InstancePoolsToUseCount = &v + return s +} + +// SetMaxTotalPrice sets the MaxTotalPrice field's value. +func (s *SpotOptions) SetMaxTotalPrice(v string) *SpotOptions { + s.MaxTotalPrice = &v + return s +} + +// SetMinTargetCapacity sets the MinTargetCapacity field's value. +func (s *SpotOptions) SetMinTargetCapacity(v int64) *SpotOptions { + s.MinTargetCapacity = &v + return s +} + +// SetSingleAvailabilityZone sets the SingleAvailabilityZone field's value. +func (s *SpotOptions) SetSingleAvailabilityZone(v bool) *SpotOptions { + s.SingleAvailabilityZone = &v + return s +} + +// SetSingleInstanceType sets the SingleInstanceType field's value. +func (s *SpotOptions) SetSingleInstanceType(v bool) *SpotOptions { + s.SingleInstanceType = &v + return s +} + +// Describes the configuration of Spot Instances in an EC2 Fleet request. +type SpotOptionsRequest struct { + _ struct{} `type:"structure"` + + // Indicates how to allocate the target Spot Instance capacity across the Spot + // Instance pools specified by the EC2 Fleet. + // + // If the allocation strategy is lowest-price, EC2 Fleet launches instances + // from the Spot Instance pools with the lowest price. This is the default allocation + // strategy. + // + // If the allocation strategy is diversified, EC2 Fleet launches instances from + // all the Spot Instance pools that you specify. + // + // If the allocation strategy is capacity-optimized, EC2 Fleet launches instances + // from Spot Instance pools with optimal capacity for the number of instances + // that are launching. + AllocationStrategy *string `type:"string" enum:"SpotAllocationStrategy"` + + // The behavior when a Spot Instance is interrupted. The default is terminate. + InstanceInterruptionBehavior *string `type:"string" enum:"SpotInstanceInterruptionBehavior"` + + // The number of Spot pools across which to allocate your target Spot capacity. + // Valid only when Spot AllocationStrategy is set to lowest-price. EC2 Fleet + // selects the cheapest Spot pools and evenly allocates your target Spot capacity + // across the number of Spot pools that you specify. + InstancePoolsToUseCount *int64 `type:"integer"` + + // The maximum amount per hour for Spot Instances that you're willing to pay. + MaxTotalPrice *string `type:"string"` + + // The minimum target capacity for Spot Instances in the fleet. If the minimum + // target capacity is not reached, the fleet launches no instances. + MinTargetCapacity *int64 `type:"integer"` + + // Indicates that the fleet launches all Spot Instances into a single Availability + // Zone. + SingleAvailabilityZone *bool `type:"boolean"` + + // Indicates that the fleet uses a single instance type to launch all Spot Instances + // in the fleet. + SingleInstanceType *bool `type:"boolean"` +} + +// String returns the string representation +func (s SpotOptionsRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SpotOptionsRequest) GoString() string { + return s.String() +} + +// SetAllocationStrategy sets the AllocationStrategy field's value. +func (s *SpotOptionsRequest) SetAllocationStrategy(v string) *SpotOptionsRequest { + s.AllocationStrategy = &v + return s +} + +// SetInstanceInterruptionBehavior sets the InstanceInterruptionBehavior field's value. +func (s *SpotOptionsRequest) SetInstanceInterruptionBehavior(v string) *SpotOptionsRequest { + s.InstanceInterruptionBehavior = &v + return s +} + +// SetInstancePoolsToUseCount sets the InstancePoolsToUseCount field's value. +func (s *SpotOptionsRequest) SetInstancePoolsToUseCount(v int64) *SpotOptionsRequest { + s.InstancePoolsToUseCount = &v + return s +} + +// SetMaxTotalPrice sets the MaxTotalPrice field's value. +func (s *SpotOptionsRequest) SetMaxTotalPrice(v string) *SpotOptionsRequest { + s.MaxTotalPrice = &v + return s +} + +// SetMinTargetCapacity sets the MinTargetCapacity field's value. +func (s *SpotOptionsRequest) SetMinTargetCapacity(v int64) *SpotOptionsRequest { + s.MinTargetCapacity = &v + return s +} + +// SetSingleAvailabilityZone sets the SingleAvailabilityZone field's value. +func (s *SpotOptionsRequest) SetSingleAvailabilityZone(v bool) *SpotOptionsRequest { + s.SingleAvailabilityZone = &v + return s +} + +// SetSingleInstanceType sets the SingleInstanceType field's value. +func (s *SpotOptionsRequest) SetSingleInstanceType(v bool) *SpotOptionsRequest { + s.SingleInstanceType = &v + return s +} + +// Describes Spot Instance placement. +type SpotPlacement struct { + _ struct{} `type:"structure"` + + // The Availability Zone. + // + // [Spot Fleet only] To specify multiple Availability Zones, separate them using + // commas; for example, "us-west-2a, us-west-2b". + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // The name of the placement group. + GroupName *string `locationName:"groupName" type:"string"` + + // The tenancy of the instance (if the instance is running in a VPC). An instance + // with a tenancy of dedicated runs on single-tenant hardware. The host tenancy + // is not supported for Spot Instances. + Tenancy *string `locationName:"tenancy" type:"string" enum:"Tenancy"` +} + +// String returns the string representation +func (s SpotPlacement) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SpotPlacement) GoString() string { + return s.String() +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *SpotPlacement) SetAvailabilityZone(v string) *SpotPlacement { + s.AvailabilityZone = &v + return s +} + +// SetGroupName sets the GroupName field's value. +func (s *SpotPlacement) SetGroupName(v string) *SpotPlacement { + s.GroupName = &v + return s +} + +// SetTenancy sets the Tenancy field's value. +func (s *SpotPlacement) SetTenancy(v string) *SpotPlacement { + s.Tenancy = &v + return s +} + +// Describes the maximum price per hour that you are willing to pay for a Spot +// Instance. +type SpotPrice struct { + _ struct{} `type:"structure"` + + // The Availability Zone. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // The instance type. + InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` + + // A general description of the AMI. + ProductDescription *string `locationName:"productDescription" type:"string" enum:"RIProductDescription"` + + // The maximum price per hour that you are willing to pay for a Spot Instance. + SpotPrice *string `locationName:"spotPrice" type:"string"` + + // The date and time the request was created, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). + Timestamp *time.Time `locationName:"timestamp" type:"timestamp"` +} + +// String returns the string representation +func (s SpotPrice) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SpotPrice) GoString() string { + return s.String() +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *SpotPrice) SetAvailabilityZone(v string) *SpotPrice { + s.AvailabilityZone = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *SpotPrice) SetInstanceType(v string) *SpotPrice { + s.InstanceType = &v + return s +} + +// SetProductDescription sets the ProductDescription field's value. +func (s *SpotPrice) SetProductDescription(v string) *SpotPrice { + s.ProductDescription = &v + return s +} + +// SetSpotPrice sets the SpotPrice field's value. +func (s *SpotPrice) SetSpotPrice(v string) *SpotPrice { + s.SpotPrice = &v + return s +} + +// SetTimestamp sets the Timestamp field's value. +func (s *SpotPrice) SetTimestamp(v time.Time) *SpotPrice { + s.Timestamp = &v + return s +} + +// Describes a stale rule in a security group. +type StaleIpPermission struct { + _ struct{} `type:"structure"` + + // The start of the port range for the TCP and UDP protocols, or an ICMP type + // number. A value of -1 indicates all ICMP types. + FromPort *int64 `locationName:"fromPort" type:"integer"` + + // The IP protocol name (for tcp, udp, and icmp) or number (see Protocol Numbers) + // (http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). + IpProtocol *string `locationName:"ipProtocol" type:"string"` + + // The IP ranges. Not applicable for stale security group rules. + IpRanges []*string `locationName:"ipRanges" locationNameList:"item" type:"list"` + + // The prefix list IDs for an AWS service. Not applicable for stale security + // group rules. + PrefixListIds []*string `locationName:"prefixListIds" locationNameList:"item" type:"list"` + + // The end of the port range for the TCP and UDP protocols, or an ICMP type + // number. A value of -1 indicates all ICMP types. + ToPort *int64 `locationName:"toPort" type:"integer"` + + // The security group pairs. Returns the ID of the referenced security group + // and VPC, and the ID and status of the VPC peering connection. + UserIdGroupPairs []*UserIdGroupPair `locationName:"groups" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s StaleIpPermission) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s StaleIpPermission) GoString() string { + return s.String() +} + +// SetFromPort sets the FromPort field's value. +func (s *StaleIpPermission) SetFromPort(v int64) *StaleIpPermission { + s.FromPort = &v + return s +} + +// SetIpProtocol sets the IpProtocol field's value. +func (s *StaleIpPermission) SetIpProtocol(v string) *StaleIpPermission { + s.IpProtocol = &v + return s +} + +// SetIpRanges sets the IpRanges field's value. +func (s *StaleIpPermission) SetIpRanges(v []*string) *StaleIpPermission { + s.IpRanges = v + return s +} + +// SetPrefixListIds sets the PrefixListIds field's value. +func (s *StaleIpPermission) SetPrefixListIds(v []*string) *StaleIpPermission { + s.PrefixListIds = v + return s +} + +// SetToPort sets the ToPort field's value. +func (s *StaleIpPermission) SetToPort(v int64) *StaleIpPermission { + s.ToPort = &v + return s +} + +// SetUserIdGroupPairs sets the UserIdGroupPairs field's value. +func (s *StaleIpPermission) SetUserIdGroupPairs(v []*UserIdGroupPair) *StaleIpPermission { + s.UserIdGroupPairs = v + return s +} + +// Describes a stale security group (a security group that contains stale rules). +type StaleSecurityGroup struct { + _ struct{} `type:"structure"` + + // The description of the security group. + Description *string `locationName:"description" type:"string"` + + // The ID of the security group. + GroupId *string `locationName:"groupId" type:"string"` + + // The name of the security group. + GroupName *string `locationName:"groupName" type:"string"` + + // Information about the stale inbound rules in the security group. + StaleIpPermissions []*StaleIpPermission `locationName:"staleIpPermissions" locationNameList:"item" type:"list"` + + // Information about the stale outbound rules in the security group. + StaleIpPermissionsEgress []*StaleIpPermission `locationName:"staleIpPermissionsEgress" locationNameList:"item" type:"list"` + + // The ID of the VPC for the security group. + VpcId *string `locationName:"vpcId" type:"string"` +} + +// String returns the string representation +func (s StaleSecurityGroup) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s StaleSecurityGroup) GoString() string { + return s.String() +} + +// SetDescription sets the Description field's value. +func (s *StaleSecurityGroup) SetDescription(v string) *StaleSecurityGroup { + s.Description = &v + return s +} + +// SetGroupId sets the GroupId field's value. +func (s *StaleSecurityGroup) SetGroupId(v string) *StaleSecurityGroup { + s.GroupId = &v + return s +} + +// SetGroupName sets the GroupName field's value. +func (s *StaleSecurityGroup) SetGroupName(v string) *StaleSecurityGroup { + s.GroupName = &v + return s +} + +// SetStaleIpPermissions sets the StaleIpPermissions field's value. +func (s *StaleSecurityGroup) SetStaleIpPermissions(v []*StaleIpPermission) *StaleSecurityGroup { + s.StaleIpPermissions = v + return s +} + +// SetStaleIpPermissionsEgress sets the StaleIpPermissionsEgress field's value. +func (s *StaleSecurityGroup) SetStaleIpPermissionsEgress(v []*StaleIpPermission) *StaleSecurityGroup { + s.StaleIpPermissionsEgress = v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *StaleSecurityGroup) SetVpcId(v string) *StaleSecurityGroup { + s.VpcId = &v + return s +} + +type StartInstancesInput struct { + _ struct{} `type:"structure"` + + // Reserved. + AdditionalInfo *string `locationName:"additionalInfo" type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The IDs of the instances. + // + // InstanceIds is a required field + InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list" required:"true"` +} + +// String returns the string representation +func (s StartInstancesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s StartInstancesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *StartInstancesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "StartInstancesInput"} + if s.InstanceIds == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceIds")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAdditionalInfo sets the AdditionalInfo field's value. +func (s *StartInstancesInput) SetAdditionalInfo(v string) *StartInstancesInput { + s.AdditionalInfo = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *StartInstancesInput) SetDryRun(v bool) *StartInstancesInput { + s.DryRun = &v + return s +} + +// SetInstanceIds sets the InstanceIds field's value. +func (s *StartInstancesInput) SetInstanceIds(v []*string) *StartInstancesInput { + s.InstanceIds = v + return s +} + +type StartInstancesOutput struct { + _ struct{} `type:"structure"` + + // Information about the started instances. + StartingInstances []*InstanceStateChange `locationName:"instancesSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s StartInstancesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s StartInstancesOutput) GoString() string { + return s.String() +} + +// SetStartingInstances sets the StartingInstances field's value. +func (s *StartInstancesOutput) SetStartingInstances(v []*InstanceStateChange) *StartInstancesOutput { + s.StartingInstances = v + return s +} + +// Describes a state change. +type StateReason struct { + _ struct{} `type:"structure"` + + // The reason code for the state change. + Code *string `locationName:"code" type:"string"` + + // The message for the state change. + // + // * Server.InsufficientInstanceCapacity: There was insufficient capacity + // available to satisfy the launch request. + // + // * Server.InternalError: An internal error caused the instance to terminate + // during launch. + // + // * Server.ScheduledStop: The instance was stopped due to a scheduled retirement. + // + // * Server.SpotInstanceShutdown: The instance was stopped because the number + // of Spot requests with a maximum price equal to or higher than the Spot + // price exceeded available capacity or because of an increase in the Spot + // price. + // + // * Server.SpotInstanceTermination: The instance was terminated because + // the number of Spot requests with a maximum price equal to or higher than + // the Spot price exceeded available capacity or because of an increase in + // the Spot price. + // + // * Client.InstanceInitiatedShutdown: The instance was shut down using the + // shutdown -h command from the instance. + // + // * Client.InstanceTerminated: The instance was terminated or rebooted during + // AMI creation. + // + // * Client.InternalError: A client error caused the instance to terminate + // during launch. + // + // * Client.InvalidSnapshot.NotFound: The specified snapshot was not found. + // + // * Client.UserInitiatedHibernate: Hibernation was initiated on the instance. + // + // * Client.UserInitiatedShutdown: The instance was shut down using the Amazon + // EC2 API. + // + // * Client.VolumeLimitExceeded: The limit on the number of EBS volumes or + // total storage was exceeded. Decrease usage or request an increase in your + // account limits. + Message *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s StateReason) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s StateReason) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *StateReason) SetCode(v string) *StateReason { + s.Code = &v + return s +} + +// SetMessage sets the Message field's value. +func (s *StateReason) SetMessage(v string) *StateReason { + s.Message = &v + return s +} + +type StopInstancesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // Forces the instances to stop. The instances do not have an opportunity to + // flush file system caches or file system metadata. If you use this option, + // you must perform file system check and repair procedures. This option is + // not recommended for Windows instances. + // + // Default: false + Force *bool `locationName:"force" type:"boolean"` + + // Hibernates the instance if the instance was enabled for hibernation at launch. + // If the instance cannot hibernate successfully, a normal shutdown occurs. + // For more information, see Hibernate Your Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html) + // in the Amazon Elastic Compute Cloud User Guide. + // + // Default: false + Hibernate *bool `type:"boolean"` + + // The IDs of the instances. + // + // InstanceIds is a required field + InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list" required:"true"` +} + +// String returns the string representation +func (s StopInstancesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s StopInstancesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *StopInstancesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "StopInstancesInput"} + if s.InstanceIds == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceIds")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *StopInstancesInput) SetDryRun(v bool) *StopInstancesInput { + s.DryRun = &v + return s +} + +// SetForce sets the Force field's value. +func (s *StopInstancesInput) SetForce(v bool) *StopInstancesInput { + s.Force = &v + return s +} + +// SetHibernate sets the Hibernate field's value. +func (s *StopInstancesInput) SetHibernate(v bool) *StopInstancesInput { + s.Hibernate = &v + return s +} + +// SetInstanceIds sets the InstanceIds field's value. +func (s *StopInstancesInput) SetInstanceIds(v []*string) *StopInstancesInput { + s.InstanceIds = v + return s +} + +type StopInstancesOutput struct { + _ struct{} `type:"structure"` + + // Information about the stopped instances. + StoppingInstances []*InstanceStateChange `locationName:"instancesSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s StopInstancesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s StopInstancesOutput) GoString() string { + return s.String() +} + +// SetStoppingInstances sets the StoppingInstances field's value. +func (s *StopInstancesOutput) SetStoppingInstances(v []*InstanceStateChange) *StopInstancesOutput { + s.StoppingInstances = v + return s +} + +// Describes the storage location for an instance store-backed AMI. +type Storage struct { + _ struct{} `type:"structure"` + + // An Amazon S3 storage location. + S3 *S3Storage `type:"structure"` +} + +// String returns the string representation +func (s Storage) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Storage) GoString() string { + return s.String() +} + +// SetS3 sets the S3 field's value. +func (s *Storage) SetS3(v *S3Storage) *Storage { + s.S3 = v + return s +} + +// Describes a storage location in Amazon S3. +type StorageLocation struct { + _ struct{} `type:"structure"` + + // The name of the S3 bucket. + Bucket *string `type:"string"` + + // The key. + Key *string `type:"string"` +} + +// String returns the string representation +func (s StorageLocation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s StorageLocation) GoString() string { + return s.String() +} + +// SetBucket sets the Bucket field's value. +func (s *StorageLocation) SetBucket(v string) *StorageLocation { + s.Bucket = &v + return s +} + +// SetKey sets the Key field's value. +func (s *StorageLocation) SetKey(v string) *StorageLocation { + s.Key = &v + return s +} + +// Describes a subnet. +type Subnet struct { + _ struct{} `type:"structure"` + + // Indicates whether a network interface created in this subnet (including a + // network interface created by RunInstances) receives an IPv6 address. + AssignIpv6AddressOnCreation *bool `locationName:"assignIpv6AddressOnCreation" type:"boolean"` + + // The Availability Zone of the subnet. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // The AZ ID of the subnet. + AvailabilityZoneId *string `locationName:"availabilityZoneId" type:"string"` + + // The number of unused private IPv4 addresses in the subnet. The IPv4 addresses + // for any stopped instances are considered unavailable. + AvailableIpAddressCount *int64 `locationName:"availableIpAddressCount" type:"integer"` + + // The IPv4 CIDR block assigned to the subnet. + CidrBlock *string `locationName:"cidrBlock" type:"string"` + + // Indicates whether this is the default subnet for the Availability Zone. + DefaultForAz *bool `locationName:"defaultForAz" type:"boolean"` + + // Information about the IPv6 CIDR blocks associated with the subnet. + Ipv6CidrBlockAssociationSet []*SubnetIpv6CidrBlockAssociation `locationName:"ipv6CidrBlockAssociationSet" locationNameList:"item" type:"list"` + + // Indicates whether instances launched in this subnet receive a public IPv4 + // address. + MapPublicIpOnLaunch *bool `locationName:"mapPublicIpOnLaunch" type:"boolean"` + + // The ID of the AWS account that owns the subnet. + OwnerId *string `locationName:"ownerId" type:"string"` + + // The current state of the subnet. + State *string `locationName:"state" type:"string" enum:"SubnetState"` + + // The Amazon Resource Name (ARN) of the subnet. + SubnetArn *string `locationName:"subnetArn" type:"string"` + + // The ID of the subnet. + SubnetId *string `locationName:"subnetId" type:"string"` + + // Any tags assigned to the subnet. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The ID of the VPC the subnet is in. + VpcId *string `locationName:"vpcId" type:"string"` +} + +// String returns the string representation +func (s Subnet) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Subnet) GoString() string { + return s.String() +} + +// SetAssignIpv6AddressOnCreation sets the AssignIpv6AddressOnCreation field's value. +func (s *Subnet) SetAssignIpv6AddressOnCreation(v bool) *Subnet { + s.AssignIpv6AddressOnCreation = &v + return s +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *Subnet) SetAvailabilityZone(v string) *Subnet { + s.AvailabilityZone = &v + return s +} + +// SetAvailabilityZoneId sets the AvailabilityZoneId field's value. +func (s *Subnet) SetAvailabilityZoneId(v string) *Subnet { + s.AvailabilityZoneId = &v + return s +} + +// SetAvailableIpAddressCount sets the AvailableIpAddressCount field's value. +func (s *Subnet) SetAvailableIpAddressCount(v int64) *Subnet { + s.AvailableIpAddressCount = &v + return s +} + +// SetCidrBlock sets the CidrBlock field's value. +func (s *Subnet) SetCidrBlock(v string) *Subnet { + s.CidrBlock = &v + return s +} + +// SetDefaultForAz sets the DefaultForAz field's value. +func (s *Subnet) SetDefaultForAz(v bool) *Subnet { + s.DefaultForAz = &v + return s +} + +// SetIpv6CidrBlockAssociationSet sets the Ipv6CidrBlockAssociationSet field's value. +func (s *Subnet) SetIpv6CidrBlockAssociationSet(v []*SubnetIpv6CidrBlockAssociation) *Subnet { + s.Ipv6CidrBlockAssociationSet = v + return s +} + +// SetMapPublicIpOnLaunch sets the MapPublicIpOnLaunch field's value. +func (s *Subnet) SetMapPublicIpOnLaunch(v bool) *Subnet { + s.MapPublicIpOnLaunch = &v + return s +} + +// SetOwnerId sets the OwnerId field's value. +func (s *Subnet) SetOwnerId(v string) *Subnet { + s.OwnerId = &v + return s +} + +// SetState sets the State field's value. +func (s *Subnet) SetState(v string) *Subnet { + s.State = &v + return s +} + +// SetSubnetArn sets the SubnetArn field's value. +func (s *Subnet) SetSubnetArn(v string) *Subnet { + s.SubnetArn = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *Subnet) SetSubnetId(v string) *Subnet { + s.SubnetId = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *Subnet) SetTags(v []*Tag) *Subnet { + s.Tags = v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *Subnet) SetVpcId(v string) *Subnet { + s.VpcId = &v + return s +} + +// Describes the state of a CIDR block. +type SubnetCidrBlockState struct { + _ struct{} `type:"structure"` + + // The state of a CIDR block. + State *string `locationName:"state" type:"string" enum:"SubnetCidrBlockStateCode"` + + // A message about the status of the CIDR block, if applicable. + StatusMessage *string `locationName:"statusMessage" type:"string"` +} + +// String returns the string representation +func (s SubnetCidrBlockState) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SubnetCidrBlockState) GoString() string { + return s.String() +} + +// SetState sets the State field's value. +func (s *SubnetCidrBlockState) SetState(v string) *SubnetCidrBlockState { + s.State = &v + return s +} + +// SetStatusMessage sets the StatusMessage field's value. +func (s *SubnetCidrBlockState) SetStatusMessage(v string) *SubnetCidrBlockState { + s.StatusMessage = &v + return s +} + +// Describes an IPv6 CIDR block associated with a subnet. +type SubnetIpv6CidrBlockAssociation struct { + _ struct{} `type:"structure"` + + // The association ID for the CIDR block. + AssociationId *string `locationName:"associationId" type:"string"` + + // The IPv6 CIDR block. + Ipv6CidrBlock *string `locationName:"ipv6CidrBlock" type:"string"` + + // Information about the state of the CIDR block. + Ipv6CidrBlockState *SubnetCidrBlockState `locationName:"ipv6CidrBlockState" type:"structure"` +} + +// String returns the string representation +func (s SubnetIpv6CidrBlockAssociation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SubnetIpv6CidrBlockAssociation) GoString() string { + return s.String() +} + +// SetAssociationId sets the AssociationId field's value. +func (s *SubnetIpv6CidrBlockAssociation) SetAssociationId(v string) *SubnetIpv6CidrBlockAssociation { + s.AssociationId = &v + return s +} + +// SetIpv6CidrBlock sets the Ipv6CidrBlock field's value. +func (s *SubnetIpv6CidrBlockAssociation) SetIpv6CidrBlock(v string) *SubnetIpv6CidrBlockAssociation { + s.Ipv6CidrBlock = &v + return s +} + +// SetIpv6CidrBlockState sets the Ipv6CidrBlockState field's value. +func (s *SubnetIpv6CidrBlockAssociation) SetIpv6CidrBlockState(v *SubnetCidrBlockState) *SubnetIpv6CidrBlockAssociation { + s.Ipv6CidrBlockState = v + return s +} + +// Describes the T2 or T3 instance whose credit option for CPU usage was successfully +// modified. +type SuccessfulInstanceCreditSpecificationItem struct { + _ struct{} `type:"structure"` + + // The ID of the instance. + InstanceId *string `locationName:"instanceId" type:"string"` +} + +// String returns the string representation +func (s SuccessfulInstanceCreditSpecificationItem) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SuccessfulInstanceCreditSpecificationItem) GoString() string { + return s.String() +} + +// SetInstanceId sets the InstanceId field's value. +func (s *SuccessfulInstanceCreditSpecificationItem) SetInstanceId(v string) *SuccessfulInstanceCreditSpecificationItem { + s.InstanceId = &v + return s +} + +// Describes a Reserved Instance whose queued purchase was successfully deleted. +type SuccessfulQueuedPurchaseDeletion struct { + _ struct{} `type:"structure"` + + // The ID of the Reserved Instance. + ReservedInstancesId *string `locationName:"reservedInstancesId" type:"string"` +} + +// String returns the string representation +func (s SuccessfulQueuedPurchaseDeletion) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SuccessfulQueuedPurchaseDeletion) GoString() string { + return s.String() +} + +// SetReservedInstancesId sets the ReservedInstancesId field's value. +func (s *SuccessfulQueuedPurchaseDeletion) SetReservedInstancesId(v string) *SuccessfulQueuedPurchaseDeletion { + s.ReservedInstancesId = &v + return s +} + +// Describes a tag. +type Tag struct { + _ struct{} `type:"structure"` + + // The key of the tag. + // + // Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode + // characters. May not begin with aws:. + Key *string `locationName:"key" type:"string"` + + // The value of the tag. + // + // Constraints: Tag values are case-sensitive and accept a maximum of 255 Unicode + // characters. + Value *string `locationName:"value" type:"string"` +} + +// String returns the string representation +func (s Tag) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Tag) GoString() string { + return s.String() +} + +// SetKey sets the Key field's value. +func (s *Tag) SetKey(v string) *Tag { + s.Key = &v + return s +} + +// SetValue sets the Value field's value. +func (s *Tag) SetValue(v string) *Tag { + s.Value = &v + return s +} + +// Describes a tag. +type TagDescription struct { + _ struct{} `type:"structure"` + + // The tag key. + Key *string `locationName:"key" type:"string"` + + // The ID of the resource. + ResourceId *string `locationName:"resourceId" type:"string"` + + // The resource type. + ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"` + + // The tag value. + Value *string `locationName:"value" type:"string"` +} + +// String returns the string representation +func (s TagDescription) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TagDescription) GoString() string { + return s.String() +} + +// SetKey sets the Key field's value. +func (s *TagDescription) SetKey(v string) *TagDescription { + s.Key = &v + return s +} + +// SetResourceId sets the ResourceId field's value. +func (s *TagDescription) SetResourceId(v string) *TagDescription { + s.ResourceId = &v + return s +} + +// SetResourceType sets the ResourceType field's value. +func (s *TagDescription) SetResourceType(v string) *TagDescription { + s.ResourceType = &v + return s +} + +// SetValue sets the Value field's value. +func (s *TagDescription) SetValue(v string) *TagDescription { + s.Value = &v + return s +} + +// The tags to apply to a resource when the resource is being created. +type TagSpecification struct { + _ struct{} `type:"structure"` + + // The type of resource to tag. Currently, the resource types that support tagging + // on creation are: capacity-reservation | client-vpn-endpoint | dedicated-host + // | fleet | fpga-image | instance | launch-template | snapshot | traffic-mirror-filter + // | traffic-mirror-session | traffic-mirror-target | transit-gateway | transit-gateway-attachment + // | transit-gateway-route-table | volume. + // + // To tag a resource after it has been created, see CreateTags (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html). + ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"` + + // The tags to apply to the resource. + Tags []*Tag `locationName:"Tag" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s TagSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TagSpecification) GoString() string { + return s.String() +} + +// SetResourceType sets the ResourceType field's value. +func (s *TagSpecification) SetResourceType(v string) *TagSpecification { + s.ResourceType = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *TagSpecification) SetTags(v []*Tag) *TagSpecification { + s.Tags = v + return s +} + +// The number of units to request. You can choose to set the target capacity +// in terms of instances or a performance characteristic that is important to +// your application workload, such as vCPUs, memory, or I/O. If the request +// type is maintain, you can specify a target capacity of 0 and add capacity +// later. +// +// You can use the On-Demand Instance MaxTotalPrice parameter, the Spot Instance +// MaxTotalPrice, or both to ensure your fleet cost does not exceed your budget. +// If you set a maximum price per hour for the On-Demand Instances and Spot +// Instances in your request, EC2 Fleet will launch instances until it reaches +// the maximum amount you're willing to pay. When the maximum amount you're +// willing to pay is reached, the fleet stops launching instances even if it +// hasn’t met the target capacity. The MaxTotalPrice parameters are located +// in and +type TargetCapacitySpecification struct { + _ struct{} `type:"structure"` + + // The default TotalTargetCapacity, which is either Spot or On-Demand. + DefaultTargetCapacityType *string `locationName:"defaultTargetCapacityType" type:"string" enum:"DefaultTargetCapacityType"` + + // The number of On-Demand units to request. If you specify a target capacity + // for Spot units, you cannot specify a target capacity for On-Demand units. + OnDemandTargetCapacity *int64 `locationName:"onDemandTargetCapacity" type:"integer"` + + // The maximum number of Spot units to launch. If you specify a target capacity + // for On-Demand units, you cannot specify a target capacity for Spot units. + SpotTargetCapacity *int64 `locationName:"spotTargetCapacity" type:"integer"` + + // The number of units to request, filled using DefaultTargetCapacityType. + TotalTargetCapacity *int64 `locationName:"totalTargetCapacity" type:"integer"` +} + +// String returns the string representation +func (s TargetCapacitySpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TargetCapacitySpecification) GoString() string { + return s.String() +} + +// SetDefaultTargetCapacityType sets the DefaultTargetCapacityType field's value. +func (s *TargetCapacitySpecification) SetDefaultTargetCapacityType(v string) *TargetCapacitySpecification { + s.DefaultTargetCapacityType = &v + return s +} + +// SetOnDemandTargetCapacity sets the OnDemandTargetCapacity field's value. +func (s *TargetCapacitySpecification) SetOnDemandTargetCapacity(v int64) *TargetCapacitySpecification { + s.OnDemandTargetCapacity = &v + return s +} + +// SetSpotTargetCapacity sets the SpotTargetCapacity field's value. +func (s *TargetCapacitySpecification) SetSpotTargetCapacity(v int64) *TargetCapacitySpecification { + s.SpotTargetCapacity = &v + return s +} + +// SetTotalTargetCapacity sets the TotalTargetCapacity field's value. +func (s *TargetCapacitySpecification) SetTotalTargetCapacity(v int64) *TargetCapacitySpecification { + s.TotalTargetCapacity = &v + return s +} + +// The number of units to request. You can choose to set the target capacity +// as the number of instances. Or you can set the target capacity to a performance +// characteristic that is important to your application workload, such as vCPUs, +// memory, or I/O. If the request type is maintain, you can specify a target +// capacity of 0 and add capacity later. +// +// You can use the On-Demand Instance MaxTotalPrice parameter, the Spot Instance +// MaxTotalPrice parameter, or both parameters to ensure that your fleet cost +// does not exceed your budget. If you set a maximum price per hour for the +// On-Demand Instances and Spot Instances in your request, EC2 Fleet will launch +// instances until it reaches the maximum amount you're willing to pay. When +// the maximum amount you're willing to pay is reached, the fleet stops launching +// instances even if it hasn’t met the target capacity. The MaxTotalPrice +// parameters are located in and . +type TargetCapacitySpecificationRequest struct { + _ struct{} `type:"structure"` + + // The default TotalTargetCapacity, which is either Spot or On-Demand. + DefaultTargetCapacityType *string `type:"string" enum:"DefaultTargetCapacityType"` + + // The number of On-Demand units to request. + OnDemandTargetCapacity *int64 `type:"integer"` + + // The number of Spot units to request. + SpotTargetCapacity *int64 `type:"integer"` + + // The number of units to request, filled using DefaultTargetCapacityType. + // + // TotalTargetCapacity is a required field + TotalTargetCapacity *int64 `type:"integer" required:"true"` +} + +// String returns the string representation +func (s TargetCapacitySpecificationRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TargetCapacitySpecificationRequest) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *TargetCapacitySpecificationRequest) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "TargetCapacitySpecificationRequest"} + if s.TotalTargetCapacity == nil { + invalidParams.Add(request.NewErrParamRequired("TotalTargetCapacity")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDefaultTargetCapacityType sets the DefaultTargetCapacityType field's value. +func (s *TargetCapacitySpecificationRequest) SetDefaultTargetCapacityType(v string) *TargetCapacitySpecificationRequest { + s.DefaultTargetCapacityType = &v + return s +} + +// SetOnDemandTargetCapacity sets the OnDemandTargetCapacity field's value. +func (s *TargetCapacitySpecificationRequest) SetOnDemandTargetCapacity(v int64) *TargetCapacitySpecificationRequest { + s.OnDemandTargetCapacity = &v + return s +} + +// SetSpotTargetCapacity sets the SpotTargetCapacity field's value. +func (s *TargetCapacitySpecificationRequest) SetSpotTargetCapacity(v int64) *TargetCapacitySpecificationRequest { + s.SpotTargetCapacity = &v + return s +} + +// SetTotalTargetCapacity sets the TotalTargetCapacity field's value. +func (s *TargetCapacitySpecificationRequest) SetTotalTargetCapacity(v int64) *TargetCapacitySpecificationRequest { + s.TotalTargetCapacity = &v + return s +} + +// Information about the Convertible Reserved Instance offering. +type TargetConfiguration struct { + _ struct{} `type:"structure"` + + // The number of instances the Convertible Reserved Instance offering can be + // applied to. This parameter is reserved and cannot be specified in a request + InstanceCount *int64 `locationName:"instanceCount" type:"integer"` + + // The ID of the Convertible Reserved Instance offering. + OfferingId *string `locationName:"offeringId" type:"string"` +} + +// String returns the string representation +func (s TargetConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TargetConfiguration) GoString() string { + return s.String() +} + +// SetInstanceCount sets the InstanceCount field's value. +func (s *TargetConfiguration) SetInstanceCount(v int64) *TargetConfiguration { + s.InstanceCount = &v + return s +} + +// SetOfferingId sets the OfferingId field's value. +func (s *TargetConfiguration) SetOfferingId(v string) *TargetConfiguration { + s.OfferingId = &v + return s +} + +// Details about the target configuration. +type TargetConfigurationRequest struct { + _ struct{} `type:"structure"` + + // The number of instances the Covertible Reserved Instance offering can be + // applied to. This parameter is reserved and cannot be specified in a request + InstanceCount *int64 `type:"integer"` + + // The Convertible Reserved Instance offering ID. + // + // OfferingId is a required field + OfferingId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s TargetConfigurationRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TargetConfigurationRequest) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *TargetConfigurationRequest) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "TargetConfigurationRequest"} + if s.OfferingId == nil { + invalidParams.Add(request.NewErrParamRequired("OfferingId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetInstanceCount sets the InstanceCount field's value. +func (s *TargetConfigurationRequest) SetInstanceCount(v int64) *TargetConfigurationRequest { + s.InstanceCount = &v + return s +} + +// SetOfferingId sets the OfferingId field's value. +func (s *TargetConfigurationRequest) SetOfferingId(v string) *TargetConfigurationRequest { + s.OfferingId = &v + return s +} + +// Describes a load balancer target group. +type TargetGroup struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the target group. + Arn *string `locationName:"arn" type:"string"` +} + +// String returns the string representation +func (s TargetGroup) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TargetGroup) GoString() string { + return s.String() +} + +// SetArn sets the Arn field's value. +func (s *TargetGroup) SetArn(v string) *TargetGroup { + s.Arn = &v + return s +} + +// Describes the target groups to attach to a Spot Fleet. Spot Fleet registers +// the running Spot Instances with these target groups. +type TargetGroupsConfig struct { + _ struct{} `type:"structure"` + + // One or more target groups. + TargetGroups []*TargetGroup `locationName:"targetGroups" locationNameList:"item" min:"1" type:"list"` +} + +// String returns the string representation +func (s TargetGroupsConfig) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TargetGroupsConfig) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *TargetGroupsConfig) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "TargetGroupsConfig"} + if s.TargetGroups != nil && len(s.TargetGroups) < 1 { + invalidParams.Add(request.NewErrParamMinLen("TargetGroups", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetTargetGroups sets the TargetGroups field's value. +func (s *TargetGroupsConfig) SetTargetGroups(v []*TargetGroup) *TargetGroupsConfig { + s.TargetGroups = v + return s +} + +// Describes a target network associated with a Client VPN endpoint. +type TargetNetwork struct { + _ struct{} `type:"structure"` + + // The ID of the association. + AssociationId *string `locationName:"associationId" type:"string"` + + // The ID of the Client VPN endpoint with which the target network is associated. + ClientVpnEndpointId *string `locationName:"clientVpnEndpointId" type:"string"` + + // The IDs of the security groups applied to the target network association. + SecurityGroups []*string `locationName:"securityGroups" locationNameList:"item" type:"list"` + + // The current state of the target network association. + Status *AssociationStatus `locationName:"status" type:"structure"` + + // The ID of the subnet specified as the target network. + TargetNetworkId *string `locationName:"targetNetworkId" type:"string"` + + // The ID of the VPC in which the target network (subnet) is located. + VpcId *string `locationName:"vpcId" type:"string"` +} + +// String returns the string representation +func (s TargetNetwork) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TargetNetwork) GoString() string { + return s.String() +} + +// SetAssociationId sets the AssociationId field's value. +func (s *TargetNetwork) SetAssociationId(v string) *TargetNetwork { + s.AssociationId = &v + return s +} + +// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value. +func (s *TargetNetwork) SetClientVpnEndpointId(v string) *TargetNetwork { + s.ClientVpnEndpointId = &v + return s +} + +// SetSecurityGroups sets the SecurityGroups field's value. +func (s *TargetNetwork) SetSecurityGroups(v []*string) *TargetNetwork { + s.SecurityGroups = v + return s +} + +// SetStatus sets the Status field's value. +func (s *TargetNetwork) SetStatus(v *AssociationStatus) *TargetNetwork { + s.Status = v + return s +} + +// SetTargetNetworkId sets the TargetNetworkId field's value. +func (s *TargetNetwork) SetTargetNetworkId(v string) *TargetNetwork { + s.TargetNetworkId = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *TargetNetwork) SetVpcId(v string) *TargetNetwork { + s.VpcId = &v + return s +} + +// The total value of the new Convertible Reserved Instances. +type TargetReservationValue struct { + _ struct{} `type:"structure"` + + // The total value of the Convertible Reserved Instances that make up the exchange. + // This is the sum of the list value, remaining upfront price, and additional + // upfront cost of the exchange. + ReservationValue *ReservationValue `locationName:"reservationValue" type:"structure"` + + // The configuration of the Convertible Reserved Instances that make up the + // exchange. + TargetConfiguration *TargetConfiguration `locationName:"targetConfiguration" type:"structure"` +} + +// String returns the string representation +func (s TargetReservationValue) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TargetReservationValue) GoString() string { + return s.String() +} + +// SetReservationValue sets the ReservationValue field's value. +func (s *TargetReservationValue) SetReservationValue(v *ReservationValue) *TargetReservationValue { + s.ReservationValue = v + return s +} + +// SetTargetConfiguration sets the TargetConfiguration field's value. +func (s *TargetReservationValue) SetTargetConfiguration(v *TargetConfiguration) *TargetReservationValue { + s.TargetConfiguration = v + return s +} + +type TerminateClientVpnConnectionsInput struct { + _ struct{} `type:"structure"` + + // The ID of the Client VPN endpoint to which the client is connected. + // + // ClientVpnEndpointId is a required field + ClientVpnEndpointId *string `type:"string" required:"true"` + + // The ID of the client connection to be terminated. + ConnectionId *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The name of the user who initiated the connection. Use this option to terminate + // all active connections for the specified user. This option can only be used + // if the user has established up to five connections. + Username *string `type:"string"` +} + +// String returns the string representation +func (s TerminateClientVpnConnectionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TerminateClientVpnConnectionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *TerminateClientVpnConnectionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "TerminateClientVpnConnectionsInput"} + if s.ClientVpnEndpointId == nil { + invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value. +func (s *TerminateClientVpnConnectionsInput) SetClientVpnEndpointId(v string) *TerminateClientVpnConnectionsInput { + s.ClientVpnEndpointId = &v + return s +} + +// SetConnectionId sets the ConnectionId field's value. +func (s *TerminateClientVpnConnectionsInput) SetConnectionId(v string) *TerminateClientVpnConnectionsInput { + s.ConnectionId = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *TerminateClientVpnConnectionsInput) SetDryRun(v bool) *TerminateClientVpnConnectionsInput { + s.DryRun = &v + return s +} + +// SetUsername sets the Username field's value. +func (s *TerminateClientVpnConnectionsInput) SetUsername(v string) *TerminateClientVpnConnectionsInput { + s.Username = &v + return s +} + +type TerminateClientVpnConnectionsOutput struct { + _ struct{} `type:"structure"` + + // The ID of the Client VPN endpoint. + ClientVpnEndpointId *string `locationName:"clientVpnEndpointId" type:"string"` + + // The current state of the client connections. + ConnectionStatuses []*TerminateConnectionStatus `locationName:"connectionStatuses" locationNameList:"item" type:"list"` + + // The user who established the terminated client connections. + Username *string `locationName:"username" type:"string"` +} + +// String returns the string representation +func (s TerminateClientVpnConnectionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TerminateClientVpnConnectionsOutput) GoString() string { + return s.String() +} + +// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value. +func (s *TerminateClientVpnConnectionsOutput) SetClientVpnEndpointId(v string) *TerminateClientVpnConnectionsOutput { + s.ClientVpnEndpointId = &v + return s +} + +// SetConnectionStatuses sets the ConnectionStatuses field's value. +func (s *TerminateClientVpnConnectionsOutput) SetConnectionStatuses(v []*TerminateConnectionStatus) *TerminateClientVpnConnectionsOutput { + s.ConnectionStatuses = v + return s +} + +// SetUsername sets the Username field's value. +func (s *TerminateClientVpnConnectionsOutput) SetUsername(v string) *TerminateClientVpnConnectionsOutput { + s.Username = &v + return s +} + +// Information about a terminated Client VPN endpoint client connection. +type TerminateConnectionStatus struct { + _ struct{} `type:"structure"` + + // The ID of the client connection. + ConnectionId *string `locationName:"connectionId" type:"string"` + + // A message about the status of the client connection, if applicable. + CurrentStatus *ClientVpnConnectionStatus `locationName:"currentStatus" type:"structure"` + + // The state of the client connection. + PreviousStatus *ClientVpnConnectionStatus `locationName:"previousStatus" type:"structure"` +} + +// String returns the string representation +func (s TerminateConnectionStatus) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TerminateConnectionStatus) GoString() string { + return s.String() +} + +// SetConnectionId sets the ConnectionId field's value. +func (s *TerminateConnectionStatus) SetConnectionId(v string) *TerminateConnectionStatus { + s.ConnectionId = &v + return s +} + +// SetCurrentStatus sets the CurrentStatus field's value. +func (s *TerminateConnectionStatus) SetCurrentStatus(v *ClientVpnConnectionStatus) *TerminateConnectionStatus { + s.CurrentStatus = v + return s +} + +// SetPreviousStatus sets the PreviousStatus field's value. +func (s *TerminateConnectionStatus) SetPreviousStatus(v *ClientVpnConnectionStatus) *TerminateConnectionStatus { + s.PreviousStatus = v + return s +} + +type TerminateInstancesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The IDs of the instances. + // + // Constraints: Up to 1000 instance IDs. We recommend breaking up this request + // into smaller batches. + // + // InstanceIds is a required field + InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list" required:"true"` +} + +// String returns the string representation +func (s TerminateInstancesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TerminateInstancesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *TerminateInstancesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "TerminateInstancesInput"} + if s.InstanceIds == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceIds")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *TerminateInstancesInput) SetDryRun(v bool) *TerminateInstancesInput { + s.DryRun = &v + return s +} + +// SetInstanceIds sets the InstanceIds field's value. +func (s *TerminateInstancesInput) SetInstanceIds(v []*string) *TerminateInstancesInput { + s.InstanceIds = v + return s +} + +type TerminateInstancesOutput struct { + _ struct{} `type:"structure"` + + // Information about the terminated instances. + TerminatingInstances []*InstanceStateChange `locationName:"instancesSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s TerminateInstancesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TerminateInstancesOutput) GoString() string { + return s.String() +} + +// SetTerminatingInstances sets the TerminatingInstances field's value. +func (s *TerminateInstancesOutput) SetTerminatingInstances(v []*InstanceStateChange) *TerminateInstancesOutput { + s.TerminatingInstances = v + return s +} + +// Describes the Traffic Mirror filter. +type TrafficMirrorFilter struct { + _ struct{} `type:"structure"` + + // The description of the Traffic Mirror filter. + Description *string `locationName:"description" type:"string"` + + // Information about the egress rules that are associated with the Traffic Mirror + // filter. + EgressFilterRules []*TrafficMirrorFilterRule `locationName:"egressFilterRuleSet" locationNameList:"item" type:"list"` + + // Information about the ingress rules that are associated with the Traffic + // Mirror filter. + IngressFilterRules []*TrafficMirrorFilterRule `locationName:"ingressFilterRuleSet" locationNameList:"item" type:"list"` + + // The network service traffic that is associated with the Traffic Mirror filter. + NetworkServices []*string `locationName:"networkServiceSet" locationNameList:"item" type:"list"` + + // The tags assigned to the Traffic Mirror filter. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The ID of the Traffic Mirror filter. + TrafficMirrorFilterId *string `locationName:"trafficMirrorFilterId" type:"string"` +} + +// String returns the string representation +func (s TrafficMirrorFilter) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TrafficMirrorFilter) GoString() string { + return s.String() +} + +// SetDescription sets the Description field's value. +func (s *TrafficMirrorFilter) SetDescription(v string) *TrafficMirrorFilter { + s.Description = &v + return s +} + +// SetEgressFilterRules sets the EgressFilterRules field's value. +func (s *TrafficMirrorFilter) SetEgressFilterRules(v []*TrafficMirrorFilterRule) *TrafficMirrorFilter { + s.EgressFilterRules = v + return s +} + +// SetIngressFilterRules sets the IngressFilterRules field's value. +func (s *TrafficMirrorFilter) SetIngressFilterRules(v []*TrafficMirrorFilterRule) *TrafficMirrorFilter { + s.IngressFilterRules = v + return s +} + +// SetNetworkServices sets the NetworkServices field's value. +func (s *TrafficMirrorFilter) SetNetworkServices(v []*string) *TrafficMirrorFilter { + s.NetworkServices = v + return s +} + +// SetTags sets the Tags field's value. +func (s *TrafficMirrorFilter) SetTags(v []*Tag) *TrafficMirrorFilter { + s.Tags = v + return s +} + +// SetTrafficMirrorFilterId sets the TrafficMirrorFilterId field's value. +func (s *TrafficMirrorFilter) SetTrafficMirrorFilterId(v string) *TrafficMirrorFilter { + s.TrafficMirrorFilterId = &v + return s +} + +// Describes the Traffic Mirror rule. +type TrafficMirrorFilterRule struct { + _ struct{} `type:"structure"` + + // The description of the Traffic Mirror rule. + Description *string `locationName:"description" type:"string"` + + // The destination CIDR block assigned to the Traffic Mirror rule. + DestinationCidrBlock *string `locationName:"destinationCidrBlock" type:"string"` + + // The destination port range assigned to the Traffic Mirror rule. + DestinationPortRange *TrafficMirrorPortRange `locationName:"destinationPortRange" type:"structure"` + + // The protocol assigned to the Traffic Mirror rule. + Protocol *int64 `locationName:"protocol" type:"integer"` + + // The action assigned to the Traffic Mirror rule. + RuleAction *string `locationName:"ruleAction" type:"string" enum:"TrafficMirrorRuleAction"` + + // The rule number of the Traffic Mirror rule. + RuleNumber *int64 `locationName:"ruleNumber" type:"integer"` + + // The source CIDR block assigned to the Traffic Mirror rule. + SourceCidrBlock *string `locationName:"sourceCidrBlock" type:"string"` + + // The source port range assigned to the Traffic Mirror rule. + SourcePortRange *TrafficMirrorPortRange `locationName:"sourcePortRange" type:"structure"` + + // The traffic direction assigned to the Traffic Mirror rule. + TrafficDirection *string `locationName:"trafficDirection" type:"string" enum:"TrafficDirection"` + + // The ID of the Traffic Mirror filter that the rule is associated with. + TrafficMirrorFilterId *string `locationName:"trafficMirrorFilterId" type:"string"` + + // The ID of the Traffic Mirror rule. + TrafficMirrorFilterRuleId *string `locationName:"trafficMirrorFilterRuleId" type:"string"` +} + +// String returns the string representation +func (s TrafficMirrorFilterRule) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TrafficMirrorFilterRule) GoString() string { + return s.String() +} + +// SetDescription sets the Description field's value. +func (s *TrafficMirrorFilterRule) SetDescription(v string) *TrafficMirrorFilterRule { + s.Description = &v + return s +} + +// SetDestinationCidrBlock sets the DestinationCidrBlock field's value. +func (s *TrafficMirrorFilterRule) SetDestinationCidrBlock(v string) *TrafficMirrorFilterRule { + s.DestinationCidrBlock = &v + return s +} + +// SetDestinationPortRange sets the DestinationPortRange field's value. +func (s *TrafficMirrorFilterRule) SetDestinationPortRange(v *TrafficMirrorPortRange) *TrafficMirrorFilterRule { + s.DestinationPortRange = v + return s +} + +// SetProtocol sets the Protocol field's value. +func (s *TrafficMirrorFilterRule) SetProtocol(v int64) *TrafficMirrorFilterRule { + s.Protocol = &v + return s +} + +// SetRuleAction sets the RuleAction field's value. +func (s *TrafficMirrorFilterRule) SetRuleAction(v string) *TrafficMirrorFilterRule { + s.RuleAction = &v + return s +} + +// SetRuleNumber sets the RuleNumber field's value. +func (s *TrafficMirrorFilterRule) SetRuleNumber(v int64) *TrafficMirrorFilterRule { + s.RuleNumber = &v + return s +} + +// SetSourceCidrBlock sets the SourceCidrBlock field's value. +func (s *TrafficMirrorFilterRule) SetSourceCidrBlock(v string) *TrafficMirrorFilterRule { + s.SourceCidrBlock = &v + return s +} + +// SetSourcePortRange sets the SourcePortRange field's value. +func (s *TrafficMirrorFilterRule) SetSourcePortRange(v *TrafficMirrorPortRange) *TrafficMirrorFilterRule { + s.SourcePortRange = v + return s +} + +// SetTrafficDirection sets the TrafficDirection field's value. +func (s *TrafficMirrorFilterRule) SetTrafficDirection(v string) *TrafficMirrorFilterRule { + s.TrafficDirection = &v + return s +} + +// SetTrafficMirrorFilterId sets the TrafficMirrorFilterId field's value. +func (s *TrafficMirrorFilterRule) SetTrafficMirrorFilterId(v string) *TrafficMirrorFilterRule { + s.TrafficMirrorFilterId = &v + return s +} + +// SetTrafficMirrorFilterRuleId sets the TrafficMirrorFilterRuleId field's value. +func (s *TrafficMirrorFilterRule) SetTrafficMirrorFilterRuleId(v string) *TrafficMirrorFilterRule { + s.TrafficMirrorFilterRuleId = &v + return s +} + +// Describes the Traffic Mirror port range. +type TrafficMirrorPortRange struct { + _ struct{} `type:"structure"` + + // The start of the Traffic Mirror port range. This applies to the TCP and UDP + // protocols. + FromPort *int64 `locationName:"fromPort" type:"integer"` + + // The end of the Traffic Mirror port range. This applies to the TCP and UDP + // protocols. + ToPort *int64 `locationName:"toPort" type:"integer"` +} + +// String returns the string representation +func (s TrafficMirrorPortRange) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TrafficMirrorPortRange) GoString() string { + return s.String() +} + +// SetFromPort sets the FromPort field's value. +func (s *TrafficMirrorPortRange) SetFromPort(v int64) *TrafficMirrorPortRange { + s.FromPort = &v + return s +} + +// SetToPort sets the ToPort field's value. +func (s *TrafficMirrorPortRange) SetToPort(v int64) *TrafficMirrorPortRange { + s.ToPort = &v + return s +} + +// Information about the Traffic Mirror filter rule port range. +type TrafficMirrorPortRangeRequest struct { + _ struct{} `type:"structure"` + + // The first port in the Traffic Mirror port range. This applies to the TCP + // and UDP protocols. + FromPort *int64 `type:"integer"` + + // The last port in the Traffic Mirror port range. This applies to the TCP and + // UDP protocols. + ToPort *int64 `type:"integer"` +} + +// String returns the string representation +func (s TrafficMirrorPortRangeRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TrafficMirrorPortRangeRequest) GoString() string { + return s.String() +} + +// SetFromPort sets the FromPort field's value. +func (s *TrafficMirrorPortRangeRequest) SetFromPort(v int64) *TrafficMirrorPortRangeRequest { + s.FromPort = &v + return s +} + +// SetToPort sets the ToPort field's value. +func (s *TrafficMirrorPortRangeRequest) SetToPort(v int64) *TrafficMirrorPortRangeRequest { + s.ToPort = &v + return s +} + +// Describes a Traffic Mirror session. +type TrafficMirrorSession struct { + _ struct{} `type:"structure"` + + // The description of the Traffic Mirror session. + Description *string `locationName:"description" type:"string"` + + // The ID of the Traffic Mirror session's network interface. + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` + + // The ID of the account that owns the Traffic Mirror session. + OwnerId *string `locationName:"ownerId" type:"string"` + + // The number of bytes in each packet to mirror. These are the bytes after the + // VXLAN header. To mirror a subset, set this to the length (in bytes) to mirror. + // For example, if you set this value to 100, then the first 100 bytes that + // meet the filter criteria are copied to the target. Do not specify this parameter + // when you want to mirror the entire packet + PacketLength *int64 `locationName:"packetLength" type:"integer"` + + // The session number determines the order in which sessions are evaluated when + // an interface is used by multiple sessions. The first session with a matching + // filter is the one that mirrors the packets. + // + // Valid values are 1-32766. + SessionNumber *int64 `locationName:"sessionNumber" type:"integer"` + + // The tags assigned to the Traffic Mirror session. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The ID of the Traffic Mirror filter. + TrafficMirrorFilterId *string `locationName:"trafficMirrorFilterId" type:"string"` + + // The ID for the Traffic Mirror session. + TrafficMirrorSessionId *string `locationName:"trafficMirrorSessionId" type:"string"` + + // The ID of the Traffic Mirror target. + TrafficMirrorTargetId *string `locationName:"trafficMirrorTargetId" type:"string"` + + // The virtual network ID associated with the Traffic Mirror session. + VirtualNetworkId *int64 `locationName:"virtualNetworkId" type:"integer"` +} + +// String returns the string representation +func (s TrafficMirrorSession) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TrafficMirrorSession) GoString() string { + return s.String() +} + +// SetDescription sets the Description field's value. +func (s *TrafficMirrorSession) SetDescription(v string) *TrafficMirrorSession { + s.Description = &v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *TrafficMirrorSession) SetNetworkInterfaceId(v string) *TrafficMirrorSession { + s.NetworkInterfaceId = &v + return s +} + +// SetOwnerId sets the OwnerId field's value. +func (s *TrafficMirrorSession) SetOwnerId(v string) *TrafficMirrorSession { + s.OwnerId = &v + return s +} + +// SetPacketLength sets the PacketLength field's value. +func (s *TrafficMirrorSession) SetPacketLength(v int64) *TrafficMirrorSession { + s.PacketLength = &v + return s +} + +// SetSessionNumber sets the SessionNumber field's value. +func (s *TrafficMirrorSession) SetSessionNumber(v int64) *TrafficMirrorSession { + s.SessionNumber = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *TrafficMirrorSession) SetTags(v []*Tag) *TrafficMirrorSession { + s.Tags = v + return s +} + +// SetTrafficMirrorFilterId sets the TrafficMirrorFilterId field's value. +func (s *TrafficMirrorSession) SetTrafficMirrorFilterId(v string) *TrafficMirrorSession { + s.TrafficMirrorFilterId = &v + return s +} + +// SetTrafficMirrorSessionId sets the TrafficMirrorSessionId field's value. +func (s *TrafficMirrorSession) SetTrafficMirrorSessionId(v string) *TrafficMirrorSession { + s.TrafficMirrorSessionId = &v + return s +} + +// SetTrafficMirrorTargetId sets the TrafficMirrorTargetId field's value. +func (s *TrafficMirrorSession) SetTrafficMirrorTargetId(v string) *TrafficMirrorSession { + s.TrafficMirrorTargetId = &v + return s +} + +// SetVirtualNetworkId sets the VirtualNetworkId field's value. +func (s *TrafficMirrorSession) SetVirtualNetworkId(v int64) *TrafficMirrorSession { + s.VirtualNetworkId = &v + return s +} + +// Describes a Traffic Mirror target. +type TrafficMirrorTarget struct { + _ struct{} `type:"structure"` + + // Information about the Traffic Mirror target. + Description *string `locationName:"description" type:"string"` + + // The network interface ID that is attached to the target. + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` + + // The Amazon Resource Name (ARN) of the Network Load Balancer. + NetworkLoadBalancerArn *string `locationName:"networkLoadBalancerArn" type:"string"` + + // The ID of the account that owns the Traffic Mirror target. + OwnerId *string `locationName:"ownerId" type:"string"` + + // The tags assigned to the Traffic Mirror target. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The ID of the Traffic Mirror target. + TrafficMirrorTargetId *string `locationName:"trafficMirrorTargetId" type:"string"` + + // The type of Traffic Mirror target. + Type *string `locationName:"type" type:"string" enum:"TrafficMirrorTargetType"` +} + +// String returns the string representation +func (s TrafficMirrorTarget) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TrafficMirrorTarget) GoString() string { + return s.String() +} + +// SetDescription sets the Description field's value. +func (s *TrafficMirrorTarget) SetDescription(v string) *TrafficMirrorTarget { + s.Description = &v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *TrafficMirrorTarget) SetNetworkInterfaceId(v string) *TrafficMirrorTarget { + s.NetworkInterfaceId = &v + return s +} + +// SetNetworkLoadBalancerArn sets the NetworkLoadBalancerArn field's value. +func (s *TrafficMirrorTarget) SetNetworkLoadBalancerArn(v string) *TrafficMirrorTarget { + s.NetworkLoadBalancerArn = &v + return s +} + +// SetOwnerId sets the OwnerId field's value. +func (s *TrafficMirrorTarget) SetOwnerId(v string) *TrafficMirrorTarget { + s.OwnerId = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *TrafficMirrorTarget) SetTags(v []*Tag) *TrafficMirrorTarget { + s.Tags = v + return s +} + +// SetTrafficMirrorTargetId sets the TrafficMirrorTargetId field's value. +func (s *TrafficMirrorTarget) SetTrafficMirrorTargetId(v string) *TrafficMirrorTarget { + s.TrafficMirrorTargetId = &v + return s +} + +// SetType sets the Type field's value. +func (s *TrafficMirrorTarget) SetType(v string) *TrafficMirrorTarget { + s.Type = &v + return s +} + +// Describes a transit gateway. +type TransitGateway struct { + _ struct{} `type:"structure"` + + // The creation time. + CreationTime *time.Time `locationName:"creationTime" type:"timestamp"` + + // The description of the transit gateway. + Description *string `locationName:"description" type:"string"` + + // The transit gateway options. + Options *TransitGatewayOptions `locationName:"options" type:"structure"` + + // The ID of the AWS account ID that owns the transit gateway. + OwnerId *string `locationName:"ownerId" type:"string"` + + // The state of the transit gateway. + State *string `locationName:"state" type:"string" enum:"TransitGatewayState"` + + // The tags for the transit gateway. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The Amazon Resource Name (ARN) of the transit gateway. + TransitGatewayArn *string `locationName:"transitGatewayArn" type:"string"` + + // The ID of the transit gateway. + TransitGatewayId *string `locationName:"transitGatewayId" type:"string"` +} + +// String returns the string representation +func (s TransitGateway) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TransitGateway) GoString() string { + return s.String() +} + +// SetCreationTime sets the CreationTime field's value. +func (s *TransitGateway) SetCreationTime(v time.Time) *TransitGateway { + s.CreationTime = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *TransitGateway) SetDescription(v string) *TransitGateway { + s.Description = &v + return s +} + +// SetOptions sets the Options field's value. +func (s *TransitGateway) SetOptions(v *TransitGatewayOptions) *TransitGateway { + s.Options = v + return s +} + +// SetOwnerId sets the OwnerId field's value. +func (s *TransitGateway) SetOwnerId(v string) *TransitGateway { + s.OwnerId = &v + return s +} + +// SetState sets the State field's value. +func (s *TransitGateway) SetState(v string) *TransitGateway { + s.State = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *TransitGateway) SetTags(v []*Tag) *TransitGateway { + s.Tags = v + return s +} + +// SetTransitGatewayArn sets the TransitGatewayArn field's value. +func (s *TransitGateway) SetTransitGatewayArn(v string) *TransitGateway { + s.TransitGatewayArn = &v + return s +} + +// SetTransitGatewayId sets the TransitGatewayId field's value. +func (s *TransitGateway) SetTransitGatewayId(v string) *TransitGateway { + s.TransitGatewayId = &v + return s +} + +// Describes an association between a resource attachment and a transit gateway +// route table. +type TransitGatewayAssociation struct { + _ struct{} `type:"structure"` + + // The ID of the resource. + ResourceId *string `locationName:"resourceId" type:"string"` + + // The resource type. + ResourceType *string `locationName:"resourceType" type:"string" enum:"TransitGatewayAttachmentResourceType"` + + // The state of the association. + State *string `locationName:"state" type:"string" enum:"TransitGatewayAssociationState"` + + // The ID of the attachment. + TransitGatewayAttachmentId *string `locationName:"transitGatewayAttachmentId" type:"string"` + + // The ID of the transit gateway route table. + TransitGatewayRouteTableId *string `locationName:"transitGatewayRouteTableId" type:"string"` +} + +// String returns the string representation +func (s TransitGatewayAssociation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TransitGatewayAssociation) GoString() string { + return s.String() +} + +// SetResourceId sets the ResourceId field's value. +func (s *TransitGatewayAssociation) SetResourceId(v string) *TransitGatewayAssociation { + s.ResourceId = &v + return s +} + +// SetResourceType sets the ResourceType field's value. +func (s *TransitGatewayAssociation) SetResourceType(v string) *TransitGatewayAssociation { + s.ResourceType = &v + return s +} + +// SetState sets the State field's value. +func (s *TransitGatewayAssociation) SetState(v string) *TransitGatewayAssociation { + s.State = &v + return s +} + +// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value. +func (s *TransitGatewayAssociation) SetTransitGatewayAttachmentId(v string) *TransitGatewayAssociation { + s.TransitGatewayAttachmentId = &v + return s +} + +// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value. +func (s *TransitGatewayAssociation) SetTransitGatewayRouteTableId(v string) *TransitGatewayAssociation { + s.TransitGatewayRouteTableId = &v + return s +} + +// Describes an attachment between a resource and a transit gateway. +type TransitGatewayAttachment struct { + _ struct{} `type:"structure"` + + // The association. + Association *TransitGatewayAttachmentAssociation `locationName:"association" type:"structure"` + + // The creation time. + CreationTime *time.Time `locationName:"creationTime" type:"timestamp"` + + // The ID of the resource. + ResourceId *string `locationName:"resourceId" type:"string"` + + // The ID of the AWS account that owns the resource. + ResourceOwnerId *string `locationName:"resourceOwnerId" type:"string"` + + // The resource type. + ResourceType *string `locationName:"resourceType" type:"string" enum:"TransitGatewayAttachmentResourceType"` + + // The attachment state. + State *string `locationName:"state" type:"string" enum:"TransitGatewayAttachmentState"` + + // The tags for the attachment. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The ID of the attachment. + TransitGatewayAttachmentId *string `locationName:"transitGatewayAttachmentId" type:"string"` + + // The ID of the transit gateway. + TransitGatewayId *string `locationName:"transitGatewayId" type:"string"` + + // The ID of the AWS account that owns the transit gateway. + TransitGatewayOwnerId *string `locationName:"transitGatewayOwnerId" type:"string"` +} + +// String returns the string representation +func (s TransitGatewayAttachment) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TransitGatewayAttachment) GoString() string { + return s.String() +} + +// SetAssociation sets the Association field's value. +func (s *TransitGatewayAttachment) SetAssociation(v *TransitGatewayAttachmentAssociation) *TransitGatewayAttachment { + s.Association = v + return s +} + +// SetCreationTime sets the CreationTime field's value. +func (s *TransitGatewayAttachment) SetCreationTime(v time.Time) *TransitGatewayAttachment { + s.CreationTime = &v + return s +} + +// SetResourceId sets the ResourceId field's value. +func (s *TransitGatewayAttachment) SetResourceId(v string) *TransitGatewayAttachment { + s.ResourceId = &v + return s +} + +// SetResourceOwnerId sets the ResourceOwnerId field's value. +func (s *TransitGatewayAttachment) SetResourceOwnerId(v string) *TransitGatewayAttachment { + s.ResourceOwnerId = &v + return s +} + +// SetResourceType sets the ResourceType field's value. +func (s *TransitGatewayAttachment) SetResourceType(v string) *TransitGatewayAttachment { + s.ResourceType = &v + return s +} + +// SetState sets the State field's value. +func (s *TransitGatewayAttachment) SetState(v string) *TransitGatewayAttachment { + s.State = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *TransitGatewayAttachment) SetTags(v []*Tag) *TransitGatewayAttachment { + s.Tags = v + return s +} + +// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value. +func (s *TransitGatewayAttachment) SetTransitGatewayAttachmentId(v string) *TransitGatewayAttachment { + s.TransitGatewayAttachmentId = &v + return s +} + +// SetTransitGatewayId sets the TransitGatewayId field's value. +func (s *TransitGatewayAttachment) SetTransitGatewayId(v string) *TransitGatewayAttachment { + s.TransitGatewayId = &v + return s +} + +// SetTransitGatewayOwnerId sets the TransitGatewayOwnerId field's value. +func (s *TransitGatewayAttachment) SetTransitGatewayOwnerId(v string) *TransitGatewayAttachment { + s.TransitGatewayOwnerId = &v + return s +} + +// Describes an association. +type TransitGatewayAttachmentAssociation struct { + _ struct{} `type:"structure"` + + // The state of the association. + State *string `locationName:"state" type:"string" enum:"TransitGatewayAssociationState"` + + // The ID of the route table for the transit gateway. + TransitGatewayRouteTableId *string `locationName:"transitGatewayRouteTableId" type:"string"` +} + +// String returns the string representation +func (s TransitGatewayAttachmentAssociation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TransitGatewayAttachmentAssociation) GoString() string { + return s.String() +} + +// SetState sets the State field's value. +func (s *TransitGatewayAttachmentAssociation) SetState(v string) *TransitGatewayAttachmentAssociation { + s.State = &v + return s +} + +// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value. +func (s *TransitGatewayAttachmentAssociation) SetTransitGatewayRouteTableId(v string) *TransitGatewayAttachmentAssociation { + s.TransitGatewayRouteTableId = &v + return s +} + +// Describes a propagation route table. +type TransitGatewayAttachmentPropagation struct { + _ struct{} `type:"structure"` + + // The state of the propagation route table. + State *string `locationName:"state" type:"string" enum:"TransitGatewayPropagationState"` + + // The ID of the propagation route table. + TransitGatewayRouteTableId *string `locationName:"transitGatewayRouteTableId" type:"string"` +} + +// String returns the string representation +func (s TransitGatewayAttachmentPropagation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TransitGatewayAttachmentPropagation) GoString() string { + return s.String() +} + +// SetState sets the State field's value. +func (s *TransitGatewayAttachmentPropagation) SetState(v string) *TransitGatewayAttachmentPropagation { + s.State = &v + return s +} + +// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value. +func (s *TransitGatewayAttachmentPropagation) SetTransitGatewayRouteTableId(v string) *TransitGatewayAttachmentPropagation { + s.TransitGatewayRouteTableId = &v + return s +} + +// Describes the options for a transit gateway. +type TransitGatewayOptions struct { + _ struct{} `type:"structure"` + + // A private Autonomous System Number (ASN) for the Amazon side of a BGP session. + // The range is 64512 to 65534 for 16-bit ASNs and 4200000000 to 4294967294 + // for 32-bit ASNs. + AmazonSideAsn *int64 `locationName:"amazonSideAsn" type:"long"` + + // The ID of the default association route table. + AssociationDefaultRouteTableId *string `locationName:"associationDefaultRouteTableId" type:"string"` + + // Indicates whether attachment requests are automatically accepted. + AutoAcceptSharedAttachments *string `locationName:"autoAcceptSharedAttachments" type:"string" enum:"AutoAcceptSharedAttachmentsValue"` + + // Indicates whether resource attachments are automatically associated with + // the default association route table. + DefaultRouteTableAssociation *string `locationName:"defaultRouteTableAssociation" type:"string" enum:"DefaultRouteTableAssociationValue"` + + // Indicates whether resource attachments automatically propagate routes to + // the default propagation route table. + DefaultRouteTablePropagation *string `locationName:"defaultRouteTablePropagation" type:"string" enum:"DefaultRouteTablePropagationValue"` + + // Indicates whether DNS support is enabled. + DnsSupport *string `locationName:"dnsSupport" type:"string" enum:"DnsSupportValue"` + + // The ID of the default propagation route table. + PropagationDefaultRouteTableId *string `locationName:"propagationDefaultRouteTableId" type:"string"` + + // Indicates whether Equal Cost Multipath Protocol support is enabled. + VpnEcmpSupport *string `locationName:"vpnEcmpSupport" type:"string" enum:"VpnEcmpSupportValue"` +} + +// String returns the string representation +func (s TransitGatewayOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TransitGatewayOptions) GoString() string { + return s.String() +} + +// SetAmazonSideAsn sets the AmazonSideAsn field's value. +func (s *TransitGatewayOptions) SetAmazonSideAsn(v int64) *TransitGatewayOptions { + s.AmazonSideAsn = &v + return s +} + +// SetAssociationDefaultRouteTableId sets the AssociationDefaultRouteTableId field's value. +func (s *TransitGatewayOptions) SetAssociationDefaultRouteTableId(v string) *TransitGatewayOptions { + s.AssociationDefaultRouteTableId = &v + return s +} + +// SetAutoAcceptSharedAttachments sets the AutoAcceptSharedAttachments field's value. +func (s *TransitGatewayOptions) SetAutoAcceptSharedAttachments(v string) *TransitGatewayOptions { + s.AutoAcceptSharedAttachments = &v + return s +} + +// SetDefaultRouteTableAssociation sets the DefaultRouteTableAssociation field's value. +func (s *TransitGatewayOptions) SetDefaultRouteTableAssociation(v string) *TransitGatewayOptions { + s.DefaultRouteTableAssociation = &v + return s +} + +// SetDefaultRouteTablePropagation sets the DefaultRouteTablePropagation field's value. +func (s *TransitGatewayOptions) SetDefaultRouteTablePropagation(v string) *TransitGatewayOptions { + s.DefaultRouteTablePropagation = &v + return s +} + +// SetDnsSupport sets the DnsSupport field's value. +func (s *TransitGatewayOptions) SetDnsSupport(v string) *TransitGatewayOptions { + s.DnsSupport = &v + return s +} + +// SetPropagationDefaultRouteTableId sets the PropagationDefaultRouteTableId field's value. +func (s *TransitGatewayOptions) SetPropagationDefaultRouteTableId(v string) *TransitGatewayOptions { + s.PropagationDefaultRouteTableId = &v + return s +} + +// SetVpnEcmpSupport sets the VpnEcmpSupport field's value. +func (s *TransitGatewayOptions) SetVpnEcmpSupport(v string) *TransitGatewayOptions { + s.VpnEcmpSupport = &v + return s +} + +// Describes route propagation. +type TransitGatewayPropagation struct { + _ struct{} `type:"structure"` + + // The ID of the resource. + ResourceId *string `locationName:"resourceId" type:"string"` + + // The resource type. + ResourceType *string `locationName:"resourceType" type:"string" enum:"TransitGatewayAttachmentResourceType"` + + // The state. + State *string `locationName:"state" type:"string" enum:"TransitGatewayPropagationState"` + + // The ID of the attachment. + TransitGatewayAttachmentId *string `locationName:"transitGatewayAttachmentId" type:"string"` + + // The ID of the transit gateway route table. + TransitGatewayRouteTableId *string `locationName:"transitGatewayRouteTableId" type:"string"` +} + +// String returns the string representation +func (s TransitGatewayPropagation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TransitGatewayPropagation) GoString() string { + return s.String() +} + +// SetResourceId sets the ResourceId field's value. +func (s *TransitGatewayPropagation) SetResourceId(v string) *TransitGatewayPropagation { + s.ResourceId = &v + return s +} + +// SetResourceType sets the ResourceType field's value. +func (s *TransitGatewayPropagation) SetResourceType(v string) *TransitGatewayPropagation { + s.ResourceType = &v + return s +} + +// SetState sets the State field's value. +func (s *TransitGatewayPropagation) SetState(v string) *TransitGatewayPropagation { + s.State = &v + return s +} + +// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value. +func (s *TransitGatewayPropagation) SetTransitGatewayAttachmentId(v string) *TransitGatewayPropagation { + s.TransitGatewayAttachmentId = &v + return s +} + +// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value. +func (s *TransitGatewayPropagation) SetTransitGatewayRouteTableId(v string) *TransitGatewayPropagation { + s.TransitGatewayRouteTableId = &v + return s +} + +// Describes the options for a transit gateway. +type TransitGatewayRequestOptions struct { + _ struct{} `type:"structure"` + + // A private Autonomous System Number (ASN) for the Amazon side of a BGP session. + // The range is 64512 to 65534 for 16-bit ASNs and 4200000000 to 4294967294 + // for 32-bit ASNs. + AmazonSideAsn *int64 `type:"long"` + + // Enable or disable automatic acceptance of attachment requests. The default + // is disable. + AutoAcceptSharedAttachments *string `type:"string" enum:"AutoAcceptSharedAttachmentsValue"` + + // Enable or disable automatic association with the default association route + // table. The default is enable. + DefaultRouteTableAssociation *string `type:"string" enum:"DefaultRouteTableAssociationValue"` + + // Enable or disable automatic propagation of routes to the default propagation + // route table. The default is enable. + DefaultRouteTablePropagation *string `type:"string" enum:"DefaultRouteTablePropagationValue"` + + // Enable or disable DNS support. + DnsSupport *string `type:"string" enum:"DnsSupportValue"` + + // Enable or disable Equal Cost Multipath Protocol support. + VpnEcmpSupport *string `type:"string" enum:"VpnEcmpSupportValue"` +} + +// String returns the string representation +func (s TransitGatewayRequestOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TransitGatewayRequestOptions) GoString() string { + return s.String() +} + +// SetAmazonSideAsn sets the AmazonSideAsn field's value. +func (s *TransitGatewayRequestOptions) SetAmazonSideAsn(v int64) *TransitGatewayRequestOptions { + s.AmazonSideAsn = &v + return s +} + +// SetAutoAcceptSharedAttachments sets the AutoAcceptSharedAttachments field's value. +func (s *TransitGatewayRequestOptions) SetAutoAcceptSharedAttachments(v string) *TransitGatewayRequestOptions { + s.AutoAcceptSharedAttachments = &v + return s +} + +// SetDefaultRouteTableAssociation sets the DefaultRouteTableAssociation field's value. +func (s *TransitGatewayRequestOptions) SetDefaultRouteTableAssociation(v string) *TransitGatewayRequestOptions { + s.DefaultRouteTableAssociation = &v + return s +} + +// SetDefaultRouteTablePropagation sets the DefaultRouteTablePropagation field's value. +func (s *TransitGatewayRequestOptions) SetDefaultRouteTablePropagation(v string) *TransitGatewayRequestOptions { + s.DefaultRouteTablePropagation = &v + return s +} + +// SetDnsSupport sets the DnsSupport field's value. +func (s *TransitGatewayRequestOptions) SetDnsSupport(v string) *TransitGatewayRequestOptions { + s.DnsSupport = &v + return s +} + +// SetVpnEcmpSupport sets the VpnEcmpSupport field's value. +func (s *TransitGatewayRequestOptions) SetVpnEcmpSupport(v string) *TransitGatewayRequestOptions { + s.VpnEcmpSupport = &v + return s +} + +// Describes a route for a transit gateway route table. +type TransitGatewayRoute struct { + _ struct{} `type:"structure"` + + // The CIDR block used for destination matches. + DestinationCidrBlock *string `locationName:"destinationCidrBlock" type:"string"` + + // The state of the route. + State *string `locationName:"state" type:"string" enum:"TransitGatewayRouteState"` + + // The attachments. + TransitGatewayAttachments []*TransitGatewayRouteAttachment `locationName:"transitGatewayAttachments" locationNameList:"item" type:"list"` + + // The route type. + Type *string `locationName:"type" type:"string" enum:"TransitGatewayRouteType"` +} + +// String returns the string representation +func (s TransitGatewayRoute) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TransitGatewayRoute) GoString() string { + return s.String() +} + +// SetDestinationCidrBlock sets the DestinationCidrBlock field's value. +func (s *TransitGatewayRoute) SetDestinationCidrBlock(v string) *TransitGatewayRoute { + s.DestinationCidrBlock = &v + return s +} + +// SetState sets the State field's value. +func (s *TransitGatewayRoute) SetState(v string) *TransitGatewayRoute { + s.State = &v + return s +} + +// SetTransitGatewayAttachments sets the TransitGatewayAttachments field's value. +func (s *TransitGatewayRoute) SetTransitGatewayAttachments(v []*TransitGatewayRouteAttachment) *TransitGatewayRoute { + s.TransitGatewayAttachments = v + return s +} + +// SetType sets the Type field's value. +func (s *TransitGatewayRoute) SetType(v string) *TransitGatewayRoute { + s.Type = &v + return s +} + +// Describes a route attachment. +type TransitGatewayRouteAttachment struct { + _ struct{} `type:"structure"` + + // The ID of the resource. + ResourceId *string `locationName:"resourceId" type:"string"` + + // The resource type. + ResourceType *string `locationName:"resourceType" type:"string" enum:"TransitGatewayAttachmentResourceType"` + + // The ID of the attachment. + TransitGatewayAttachmentId *string `locationName:"transitGatewayAttachmentId" type:"string"` +} + +// String returns the string representation +func (s TransitGatewayRouteAttachment) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TransitGatewayRouteAttachment) GoString() string { + return s.String() +} + +// SetResourceId sets the ResourceId field's value. +func (s *TransitGatewayRouteAttachment) SetResourceId(v string) *TransitGatewayRouteAttachment { + s.ResourceId = &v + return s +} + +// SetResourceType sets the ResourceType field's value. +func (s *TransitGatewayRouteAttachment) SetResourceType(v string) *TransitGatewayRouteAttachment { + s.ResourceType = &v + return s +} + +// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value. +func (s *TransitGatewayRouteAttachment) SetTransitGatewayAttachmentId(v string) *TransitGatewayRouteAttachment { + s.TransitGatewayAttachmentId = &v + return s +} + +// Describes a transit gateway route table. +type TransitGatewayRouteTable struct { + _ struct{} `type:"structure"` + + // The creation time. + CreationTime *time.Time `locationName:"creationTime" type:"timestamp"` + + // Indicates whether this is the default association route table for the transit + // gateway. + DefaultAssociationRouteTable *bool `locationName:"defaultAssociationRouteTable" type:"boolean"` + + // Indicates whether this is the default propagation route table for the transit + // gateway. + DefaultPropagationRouteTable *bool `locationName:"defaultPropagationRouteTable" type:"boolean"` + + // The state of the transit gateway route table. + State *string `locationName:"state" type:"string" enum:"TransitGatewayRouteTableState"` + + // Any tags assigned to the route table. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The ID of the transit gateway. + TransitGatewayId *string `locationName:"transitGatewayId" type:"string"` + + // The ID of the transit gateway route table. + TransitGatewayRouteTableId *string `locationName:"transitGatewayRouteTableId" type:"string"` +} + +// String returns the string representation +func (s TransitGatewayRouteTable) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TransitGatewayRouteTable) GoString() string { + return s.String() +} + +// SetCreationTime sets the CreationTime field's value. +func (s *TransitGatewayRouteTable) SetCreationTime(v time.Time) *TransitGatewayRouteTable { + s.CreationTime = &v + return s +} + +// SetDefaultAssociationRouteTable sets the DefaultAssociationRouteTable field's value. +func (s *TransitGatewayRouteTable) SetDefaultAssociationRouteTable(v bool) *TransitGatewayRouteTable { + s.DefaultAssociationRouteTable = &v + return s +} + +// SetDefaultPropagationRouteTable sets the DefaultPropagationRouteTable field's value. +func (s *TransitGatewayRouteTable) SetDefaultPropagationRouteTable(v bool) *TransitGatewayRouteTable { + s.DefaultPropagationRouteTable = &v + return s +} + +// SetState sets the State field's value. +func (s *TransitGatewayRouteTable) SetState(v string) *TransitGatewayRouteTable { + s.State = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *TransitGatewayRouteTable) SetTags(v []*Tag) *TransitGatewayRouteTable { + s.Tags = v + return s +} + +// SetTransitGatewayId sets the TransitGatewayId field's value. +func (s *TransitGatewayRouteTable) SetTransitGatewayId(v string) *TransitGatewayRouteTable { + s.TransitGatewayId = &v + return s +} + +// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value. +func (s *TransitGatewayRouteTable) SetTransitGatewayRouteTableId(v string) *TransitGatewayRouteTable { + s.TransitGatewayRouteTableId = &v + return s +} + +// Describes an association between a route table and a resource attachment. +type TransitGatewayRouteTableAssociation struct { + _ struct{} `type:"structure"` + + // The ID of the resource. + ResourceId *string `locationName:"resourceId" type:"string"` + + // The resource type. + ResourceType *string `locationName:"resourceType" type:"string" enum:"TransitGatewayAttachmentResourceType"` + + // The state of the association. + State *string `locationName:"state" type:"string" enum:"TransitGatewayAssociationState"` + + // The ID of the attachment. + TransitGatewayAttachmentId *string `locationName:"transitGatewayAttachmentId" type:"string"` +} + +// String returns the string representation +func (s TransitGatewayRouteTableAssociation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TransitGatewayRouteTableAssociation) GoString() string { + return s.String() +} + +// SetResourceId sets the ResourceId field's value. +func (s *TransitGatewayRouteTableAssociation) SetResourceId(v string) *TransitGatewayRouteTableAssociation { + s.ResourceId = &v + return s +} + +// SetResourceType sets the ResourceType field's value. +func (s *TransitGatewayRouteTableAssociation) SetResourceType(v string) *TransitGatewayRouteTableAssociation { + s.ResourceType = &v + return s +} + +// SetState sets the State field's value. +func (s *TransitGatewayRouteTableAssociation) SetState(v string) *TransitGatewayRouteTableAssociation { + s.State = &v + return s +} + +// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value. +func (s *TransitGatewayRouteTableAssociation) SetTransitGatewayAttachmentId(v string) *TransitGatewayRouteTableAssociation { + s.TransitGatewayAttachmentId = &v + return s +} + +// Describes a route table propagation. +type TransitGatewayRouteTablePropagation struct { + _ struct{} `type:"structure"` + + // The ID of the resource. + ResourceId *string `locationName:"resourceId" type:"string"` + + // The type of resource. + ResourceType *string `locationName:"resourceType" type:"string" enum:"TransitGatewayAttachmentResourceType"` + + // The state of the resource. + State *string `locationName:"state" type:"string" enum:"TransitGatewayPropagationState"` + + // The ID of the attachment. + TransitGatewayAttachmentId *string `locationName:"transitGatewayAttachmentId" type:"string"` +} + +// String returns the string representation +func (s TransitGatewayRouteTablePropagation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TransitGatewayRouteTablePropagation) GoString() string { + return s.String() +} + +// SetResourceId sets the ResourceId field's value. +func (s *TransitGatewayRouteTablePropagation) SetResourceId(v string) *TransitGatewayRouteTablePropagation { + s.ResourceId = &v + return s +} + +// SetResourceType sets the ResourceType field's value. +func (s *TransitGatewayRouteTablePropagation) SetResourceType(v string) *TransitGatewayRouteTablePropagation { + s.ResourceType = &v + return s +} + +// SetState sets the State field's value. +func (s *TransitGatewayRouteTablePropagation) SetState(v string) *TransitGatewayRouteTablePropagation { + s.State = &v + return s +} + +// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value. +func (s *TransitGatewayRouteTablePropagation) SetTransitGatewayAttachmentId(v string) *TransitGatewayRouteTablePropagation { + s.TransitGatewayAttachmentId = &v + return s +} + +// Describes a VPC attachment. +type TransitGatewayVpcAttachment struct { + _ struct{} `type:"structure"` + + // The creation time. + CreationTime *time.Time `locationName:"creationTime" type:"timestamp"` + + // The VPC attachment options. + Options *TransitGatewayVpcAttachmentOptions `locationName:"options" type:"structure"` + + // The state of the VPC attachment. + State *string `locationName:"state" type:"string" enum:"TransitGatewayAttachmentState"` + + // The IDs of the subnets. + SubnetIds []*string `locationName:"subnetIds" locationNameList:"item" type:"list"` + + // The tags for the VPC attachment. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The ID of the attachment. + TransitGatewayAttachmentId *string `locationName:"transitGatewayAttachmentId" type:"string"` + + // The ID of the transit gateway. + TransitGatewayId *string `locationName:"transitGatewayId" type:"string"` + + // The ID of the VPC. + VpcId *string `locationName:"vpcId" type:"string"` + + // The ID of the AWS account that owns the VPC. + VpcOwnerId *string `locationName:"vpcOwnerId" type:"string"` +} + +// String returns the string representation +func (s TransitGatewayVpcAttachment) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TransitGatewayVpcAttachment) GoString() string { + return s.String() +} + +// SetCreationTime sets the CreationTime field's value. +func (s *TransitGatewayVpcAttachment) SetCreationTime(v time.Time) *TransitGatewayVpcAttachment { + s.CreationTime = &v + return s +} + +// SetOptions sets the Options field's value. +func (s *TransitGatewayVpcAttachment) SetOptions(v *TransitGatewayVpcAttachmentOptions) *TransitGatewayVpcAttachment { + s.Options = v + return s +} + +// SetState sets the State field's value. +func (s *TransitGatewayVpcAttachment) SetState(v string) *TransitGatewayVpcAttachment { + s.State = &v + return s +} + +// SetSubnetIds sets the SubnetIds field's value. +func (s *TransitGatewayVpcAttachment) SetSubnetIds(v []*string) *TransitGatewayVpcAttachment { + s.SubnetIds = v + return s +} + +// SetTags sets the Tags field's value. +func (s *TransitGatewayVpcAttachment) SetTags(v []*Tag) *TransitGatewayVpcAttachment { + s.Tags = v + return s +} + +// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value. +func (s *TransitGatewayVpcAttachment) SetTransitGatewayAttachmentId(v string) *TransitGatewayVpcAttachment { + s.TransitGatewayAttachmentId = &v + return s +} + +// SetTransitGatewayId sets the TransitGatewayId field's value. +func (s *TransitGatewayVpcAttachment) SetTransitGatewayId(v string) *TransitGatewayVpcAttachment { + s.TransitGatewayId = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *TransitGatewayVpcAttachment) SetVpcId(v string) *TransitGatewayVpcAttachment { + s.VpcId = &v + return s +} + +// SetVpcOwnerId sets the VpcOwnerId field's value. +func (s *TransitGatewayVpcAttachment) SetVpcOwnerId(v string) *TransitGatewayVpcAttachment { + s.VpcOwnerId = &v + return s +} + +// Describes the VPC attachment options. +type TransitGatewayVpcAttachmentOptions struct { + _ struct{} `type:"structure"` + + // Indicates whether DNS support is enabled. + DnsSupport *string `locationName:"dnsSupport" type:"string" enum:"DnsSupportValue"` + + // Indicates whether IPv6 support is enabled. + Ipv6Support *string `locationName:"ipv6Support" type:"string" enum:"Ipv6SupportValue"` +} + +// String returns the string representation +func (s TransitGatewayVpcAttachmentOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TransitGatewayVpcAttachmentOptions) GoString() string { + return s.String() +} + +// SetDnsSupport sets the DnsSupport field's value. +func (s *TransitGatewayVpcAttachmentOptions) SetDnsSupport(v string) *TransitGatewayVpcAttachmentOptions { + s.DnsSupport = &v + return s +} + +// SetIpv6Support sets the Ipv6Support field's value. +func (s *TransitGatewayVpcAttachmentOptions) SetIpv6Support(v string) *TransitGatewayVpcAttachmentOptions { + s.Ipv6Support = &v + return s +} + +// The VPN tunnel options. +type TunnelOption struct { + _ struct{} `type:"structure"` + + // The number of seconds after which a DPD timeout occurs. + DpdTimeoutSeconds *int64 `locationName:"dpdTimeoutSeconds" type:"integer"` + + // The IKE versions that are permitted for the VPN tunnel. + IkeVersions []*IKEVersionsListValue `locationName:"ikeVersionSet" locationNameList:"item" type:"list"` + + // The external IP address of the VPN tunnel. + OutsideIpAddress *string `locationName:"outsideIpAddress" type:"string"` + + // The permitted Diffie-Hellman group numbers for the VPN tunnel for phase 1 + // IKE negotiations. + Phase1DHGroupNumbers []*Phase1DHGroupNumbersListValue `locationName:"phase1DHGroupNumberSet" locationNameList:"item" type:"list"` + + // The permitted encryption algorithms for the VPN tunnel for phase 1 IKE negotiations. + Phase1EncryptionAlgorithms []*Phase1EncryptionAlgorithmsListValue `locationName:"phase1EncryptionAlgorithmSet" locationNameList:"item" type:"list"` + + // The permitted integrity algorithms for the VPN tunnel for phase 1 IKE negotiations. + Phase1IntegrityAlgorithms []*Phase1IntegrityAlgorithmsListValue `locationName:"phase1IntegrityAlgorithmSet" locationNameList:"item" type:"list"` + + // The lifetime for phase 1 of the IKE negotiation, in seconds. + Phase1LifetimeSeconds *int64 `locationName:"phase1LifetimeSeconds" type:"integer"` + + // The permitted Diffie-Hellman group numbers for the VPN tunnel for phase 2 + // IKE negotiations. + Phase2DHGroupNumbers []*Phase2DHGroupNumbersListValue `locationName:"phase2DHGroupNumberSet" locationNameList:"item" type:"list"` + + // The permitted encryption algorithms for the VPN tunnel for phase 2 IKE negotiations. + Phase2EncryptionAlgorithms []*Phase2EncryptionAlgorithmsListValue `locationName:"phase2EncryptionAlgorithmSet" locationNameList:"item" type:"list"` + + // The permitted integrity algorithms for the VPN tunnel for phase 2 IKE negotiations. + Phase2IntegrityAlgorithms []*Phase2IntegrityAlgorithmsListValue `locationName:"phase2IntegrityAlgorithmSet" locationNameList:"item" type:"list"` + + // The lifetime for phase 2 of the IKE negotiation, in seconds. + Phase2LifetimeSeconds *int64 `locationName:"phase2LifetimeSeconds" type:"integer"` + + // The pre-shared key (PSK) to establish initial authentication between the + // virtual private gateway and the customer gateway. + PreSharedKey *string `locationName:"preSharedKey" type:"string"` + + // The percentage of the rekey window determined by RekeyMarginTimeSeconds during + // which the rekey time is randomly selected. + RekeyFuzzPercentage *int64 `locationName:"rekeyFuzzPercentage" type:"integer"` + + // The margin time, in seconds, before the phase 2 lifetime expires, during + // which the AWS side of the VPN connection performs an IKE rekey. + RekeyMarginTimeSeconds *int64 `locationName:"rekeyMarginTimeSeconds" type:"integer"` + + // The number of packets in an IKE replay window. + ReplayWindowSize *int64 `locationName:"replayWindowSize" type:"integer"` + + // The range of inside IP addresses for the tunnel. + TunnelInsideCidr *string `locationName:"tunnelInsideCidr" type:"string"` +} + +// String returns the string representation +func (s TunnelOption) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TunnelOption) GoString() string { + return s.String() +} + +// SetDpdTimeoutSeconds sets the DpdTimeoutSeconds field's value. +func (s *TunnelOption) SetDpdTimeoutSeconds(v int64) *TunnelOption { + s.DpdTimeoutSeconds = &v + return s +} + +// SetIkeVersions sets the IkeVersions field's value. +func (s *TunnelOption) SetIkeVersions(v []*IKEVersionsListValue) *TunnelOption { + s.IkeVersions = v + return s +} + +// SetOutsideIpAddress sets the OutsideIpAddress field's value. +func (s *TunnelOption) SetOutsideIpAddress(v string) *TunnelOption { + s.OutsideIpAddress = &v + return s +} + +// SetPhase1DHGroupNumbers sets the Phase1DHGroupNumbers field's value. +func (s *TunnelOption) SetPhase1DHGroupNumbers(v []*Phase1DHGroupNumbersListValue) *TunnelOption { + s.Phase1DHGroupNumbers = v + return s +} + +// SetPhase1EncryptionAlgorithms sets the Phase1EncryptionAlgorithms field's value. +func (s *TunnelOption) SetPhase1EncryptionAlgorithms(v []*Phase1EncryptionAlgorithmsListValue) *TunnelOption { + s.Phase1EncryptionAlgorithms = v + return s +} + +// SetPhase1IntegrityAlgorithms sets the Phase1IntegrityAlgorithms field's value. +func (s *TunnelOption) SetPhase1IntegrityAlgorithms(v []*Phase1IntegrityAlgorithmsListValue) *TunnelOption { + s.Phase1IntegrityAlgorithms = v + return s +} + +// SetPhase1LifetimeSeconds sets the Phase1LifetimeSeconds field's value. +func (s *TunnelOption) SetPhase1LifetimeSeconds(v int64) *TunnelOption { + s.Phase1LifetimeSeconds = &v + return s +} + +// SetPhase2DHGroupNumbers sets the Phase2DHGroupNumbers field's value. +func (s *TunnelOption) SetPhase2DHGroupNumbers(v []*Phase2DHGroupNumbersListValue) *TunnelOption { + s.Phase2DHGroupNumbers = v + return s +} + +// SetPhase2EncryptionAlgorithms sets the Phase2EncryptionAlgorithms field's value. +func (s *TunnelOption) SetPhase2EncryptionAlgorithms(v []*Phase2EncryptionAlgorithmsListValue) *TunnelOption { + s.Phase2EncryptionAlgorithms = v + return s +} + +// SetPhase2IntegrityAlgorithms sets the Phase2IntegrityAlgorithms field's value. +func (s *TunnelOption) SetPhase2IntegrityAlgorithms(v []*Phase2IntegrityAlgorithmsListValue) *TunnelOption { + s.Phase2IntegrityAlgorithms = v + return s +} + +// SetPhase2LifetimeSeconds sets the Phase2LifetimeSeconds field's value. +func (s *TunnelOption) SetPhase2LifetimeSeconds(v int64) *TunnelOption { + s.Phase2LifetimeSeconds = &v + return s +} + +// SetPreSharedKey sets the PreSharedKey field's value. +func (s *TunnelOption) SetPreSharedKey(v string) *TunnelOption { + s.PreSharedKey = &v + return s +} + +// SetRekeyFuzzPercentage sets the RekeyFuzzPercentage field's value. +func (s *TunnelOption) SetRekeyFuzzPercentage(v int64) *TunnelOption { + s.RekeyFuzzPercentage = &v + return s +} + +// SetRekeyMarginTimeSeconds sets the RekeyMarginTimeSeconds field's value. +func (s *TunnelOption) SetRekeyMarginTimeSeconds(v int64) *TunnelOption { + s.RekeyMarginTimeSeconds = &v + return s +} + +// SetReplayWindowSize sets the ReplayWindowSize field's value. +func (s *TunnelOption) SetReplayWindowSize(v int64) *TunnelOption { + s.ReplayWindowSize = &v + return s +} + +// SetTunnelInsideCidr sets the TunnelInsideCidr field's value. +func (s *TunnelOption) SetTunnelInsideCidr(v string) *TunnelOption { + s.TunnelInsideCidr = &v + return s +} + +type UnassignIpv6AddressesInput struct { + _ struct{} `type:"structure"` + + // The IPv6 addresses to unassign from the network interface. + // + // Ipv6Addresses is a required field + Ipv6Addresses []*string `locationName:"ipv6Addresses" locationNameList:"item" type:"list" required:"true"` + + // The ID of the network interface. + // + // NetworkInterfaceId is a required field + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string" required:"true"` +} + +// String returns the string representation +func (s UnassignIpv6AddressesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UnassignIpv6AddressesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UnassignIpv6AddressesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UnassignIpv6AddressesInput"} + if s.Ipv6Addresses == nil { + invalidParams.Add(request.NewErrParamRequired("Ipv6Addresses")) + } + if s.NetworkInterfaceId == nil { + invalidParams.Add(request.NewErrParamRequired("NetworkInterfaceId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetIpv6Addresses sets the Ipv6Addresses field's value. +func (s *UnassignIpv6AddressesInput) SetIpv6Addresses(v []*string) *UnassignIpv6AddressesInput { + s.Ipv6Addresses = v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *UnassignIpv6AddressesInput) SetNetworkInterfaceId(v string) *UnassignIpv6AddressesInput { + s.NetworkInterfaceId = &v + return s +} + +type UnassignIpv6AddressesOutput struct { + _ struct{} `type:"structure"` + + // The ID of the network interface. + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` + + // The IPv6 addresses that have been unassigned from the network interface. + UnassignedIpv6Addresses []*string `locationName:"unassignedIpv6Addresses" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s UnassignIpv6AddressesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UnassignIpv6AddressesOutput) GoString() string { + return s.String() +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *UnassignIpv6AddressesOutput) SetNetworkInterfaceId(v string) *UnassignIpv6AddressesOutput { + s.NetworkInterfaceId = &v + return s +} + +// SetUnassignedIpv6Addresses sets the UnassignedIpv6Addresses field's value. +func (s *UnassignIpv6AddressesOutput) SetUnassignedIpv6Addresses(v []*string) *UnassignIpv6AddressesOutput { + s.UnassignedIpv6Addresses = v + return s +} + +// Contains the parameters for UnassignPrivateIpAddresses. +type UnassignPrivateIpAddressesInput struct { + _ struct{} `type:"structure"` + + // The ID of the network interface. + // + // NetworkInterfaceId is a required field + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string" required:"true"` + + // The secondary private IP addresses to unassign from the network interface. + // You can specify this option multiple times to unassign more than one IP address. + // + // PrivateIpAddresses is a required field + PrivateIpAddresses []*string `locationName:"privateIpAddress" locationNameList:"PrivateIpAddress" type:"list" required:"true"` +} + +// String returns the string representation +func (s UnassignPrivateIpAddressesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UnassignPrivateIpAddressesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UnassignPrivateIpAddressesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UnassignPrivateIpAddressesInput"} + if s.NetworkInterfaceId == nil { + invalidParams.Add(request.NewErrParamRequired("NetworkInterfaceId")) + } + if s.PrivateIpAddresses == nil { + invalidParams.Add(request.NewErrParamRequired("PrivateIpAddresses")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *UnassignPrivateIpAddressesInput) SetNetworkInterfaceId(v string) *UnassignPrivateIpAddressesInput { + s.NetworkInterfaceId = &v + return s +} + +// SetPrivateIpAddresses sets the PrivateIpAddresses field's value. +func (s *UnassignPrivateIpAddressesInput) SetPrivateIpAddresses(v []*string) *UnassignPrivateIpAddressesInput { + s.PrivateIpAddresses = v + return s +} + +type UnassignPrivateIpAddressesOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s UnassignPrivateIpAddressesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UnassignPrivateIpAddressesOutput) GoString() string { + return s.String() +} + +type UnmonitorInstancesInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `locationName:"dryRun" type:"boolean"` + + // The IDs of the instances. + // + // InstanceIds is a required field + InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list" required:"true"` +} + +// String returns the string representation +func (s UnmonitorInstancesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UnmonitorInstancesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UnmonitorInstancesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UnmonitorInstancesInput"} + if s.InstanceIds == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceIds")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *UnmonitorInstancesInput) SetDryRun(v bool) *UnmonitorInstancesInput { + s.DryRun = &v + return s +} + +// SetInstanceIds sets the InstanceIds field's value. +func (s *UnmonitorInstancesInput) SetInstanceIds(v []*string) *UnmonitorInstancesInput { + s.InstanceIds = v + return s +} + +type UnmonitorInstancesOutput struct { + _ struct{} `type:"structure"` + + // The monitoring information. + InstanceMonitorings []*InstanceMonitoring `locationName:"instancesSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s UnmonitorInstancesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UnmonitorInstancesOutput) GoString() string { + return s.String() +} + +// SetInstanceMonitorings sets the InstanceMonitorings field's value. +func (s *UnmonitorInstancesOutput) SetInstanceMonitorings(v []*InstanceMonitoring) *UnmonitorInstancesOutput { + s.InstanceMonitorings = v + return s +} + +// Describes the T2 or T3 instance whose credit option for CPU usage was not +// modified. +type UnsuccessfulInstanceCreditSpecificationItem struct { + _ struct{} `type:"structure"` + + // The applicable error for the T2 or T3 instance whose credit option for CPU + // usage was not modified. + Error *UnsuccessfulInstanceCreditSpecificationItemError `locationName:"error" type:"structure"` + + // The ID of the instance. + InstanceId *string `locationName:"instanceId" type:"string"` +} + +// String returns the string representation +func (s UnsuccessfulInstanceCreditSpecificationItem) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UnsuccessfulInstanceCreditSpecificationItem) GoString() string { + return s.String() +} + +// SetError sets the Error field's value. +func (s *UnsuccessfulInstanceCreditSpecificationItem) SetError(v *UnsuccessfulInstanceCreditSpecificationItemError) *UnsuccessfulInstanceCreditSpecificationItem { + s.Error = v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *UnsuccessfulInstanceCreditSpecificationItem) SetInstanceId(v string) *UnsuccessfulInstanceCreditSpecificationItem { + s.InstanceId = &v + return s +} + +// Information about the error for the T2 or T3 instance whose credit option +// for CPU usage was not modified. +type UnsuccessfulInstanceCreditSpecificationItemError struct { + _ struct{} `type:"structure"` + + // The error code. + Code *string `locationName:"code" type:"string" enum:"UnsuccessfulInstanceCreditSpecificationErrorCode"` + + // The applicable error message. + Message *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s UnsuccessfulInstanceCreditSpecificationItemError) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UnsuccessfulInstanceCreditSpecificationItemError) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *UnsuccessfulInstanceCreditSpecificationItemError) SetCode(v string) *UnsuccessfulInstanceCreditSpecificationItemError { + s.Code = &v + return s +} + +// SetMessage sets the Message field's value. +func (s *UnsuccessfulInstanceCreditSpecificationItemError) SetMessage(v string) *UnsuccessfulInstanceCreditSpecificationItemError { + s.Message = &v + return s +} + +// Information about items that were not successfully processed in a batch call. +type UnsuccessfulItem struct { + _ struct{} `type:"structure"` + + // Information about the error. + Error *UnsuccessfulItemError `locationName:"error" type:"structure"` + + // The ID of the resource. + ResourceId *string `locationName:"resourceId" type:"string"` +} + +// String returns the string representation +func (s UnsuccessfulItem) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UnsuccessfulItem) GoString() string { + return s.String() +} + +// SetError sets the Error field's value. +func (s *UnsuccessfulItem) SetError(v *UnsuccessfulItemError) *UnsuccessfulItem { + s.Error = v + return s +} + +// SetResourceId sets the ResourceId field's value. +func (s *UnsuccessfulItem) SetResourceId(v string) *UnsuccessfulItem { + s.ResourceId = &v + return s +} + +// Information about the error that occurred. For more information about errors, +// see Error Codes (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html). +type UnsuccessfulItemError struct { + _ struct{} `type:"structure"` + + // The error code. + Code *string `locationName:"code" type:"string"` + + // The error message accompanying the error code. + Message *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s UnsuccessfulItemError) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UnsuccessfulItemError) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *UnsuccessfulItemError) SetCode(v string) *UnsuccessfulItemError { + s.Code = &v + return s +} + +// SetMessage sets the Message field's value. +func (s *UnsuccessfulItemError) SetMessage(v string) *UnsuccessfulItemError { + s.Message = &v + return s +} + +type UpdateSecurityGroupRuleDescriptionsEgressInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the security group. You must specify either the security group + // ID or the security group name in the request. For security groups in a nondefault + // VPC, you must specify the security group ID. + GroupId *string `type:"string"` + + // [Default VPC] The name of the security group. You must specify either the + // security group ID or the security group name in the request. + GroupName *string `type:"string"` + + // The IP permissions for the security group rule. + // + // IpPermissions is a required field + IpPermissions []*IpPermission `locationNameList:"item" type:"list" required:"true"` +} + +// String returns the string representation +func (s UpdateSecurityGroupRuleDescriptionsEgressInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UpdateSecurityGroupRuleDescriptionsEgressInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UpdateSecurityGroupRuleDescriptionsEgressInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UpdateSecurityGroupRuleDescriptionsEgressInput"} + if s.IpPermissions == nil { + invalidParams.Add(request.NewErrParamRequired("IpPermissions")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *UpdateSecurityGroupRuleDescriptionsEgressInput) SetDryRun(v bool) *UpdateSecurityGroupRuleDescriptionsEgressInput { + s.DryRun = &v + return s +} + +// SetGroupId sets the GroupId field's value. +func (s *UpdateSecurityGroupRuleDescriptionsEgressInput) SetGroupId(v string) *UpdateSecurityGroupRuleDescriptionsEgressInput { + s.GroupId = &v + return s +} + +// SetGroupName sets the GroupName field's value. +func (s *UpdateSecurityGroupRuleDescriptionsEgressInput) SetGroupName(v string) *UpdateSecurityGroupRuleDescriptionsEgressInput { + s.GroupName = &v + return s +} + +// SetIpPermissions sets the IpPermissions field's value. +func (s *UpdateSecurityGroupRuleDescriptionsEgressInput) SetIpPermissions(v []*IpPermission) *UpdateSecurityGroupRuleDescriptionsEgressInput { + s.IpPermissions = v + return s +} + +type UpdateSecurityGroupRuleDescriptionsEgressOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, returns an error. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s UpdateSecurityGroupRuleDescriptionsEgressOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UpdateSecurityGroupRuleDescriptionsEgressOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *UpdateSecurityGroupRuleDescriptionsEgressOutput) SetReturn(v bool) *UpdateSecurityGroupRuleDescriptionsEgressOutput { + s.Return = &v + return s +} + +type UpdateSecurityGroupRuleDescriptionsIngressInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the security group. You must specify either the security group + // ID or the security group name in the request. For security groups in a nondefault + // VPC, you must specify the security group ID. + GroupId *string `type:"string"` + + // [EC2-Classic, default VPC] The name of the security group. You must specify + // either the security group ID or the security group name in the request. + GroupName *string `type:"string"` + + // The IP permissions for the security group rule. + // + // IpPermissions is a required field + IpPermissions []*IpPermission `locationNameList:"item" type:"list" required:"true"` +} + +// String returns the string representation +func (s UpdateSecurityGroupRuleDescriptionsIngressInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UpdateSecurityGroupRuleDescriptionsIngressInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UpdateSecurityGroupRuleDescriptionsIngressInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UpdateSecurityGroupRuleDescriptionsIngressInput"} + if s.IpPermissions == nil { + invalidParams.Add(request.NewErrParamRequired("IpPermissions")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *UpdateSecurityGroupRuleDescriptionsIngressInput) SetDryRun(v bool) *UpdateSecurityGroupRuleDescriptionsIngressInput { + s.DryRun = &v + return s +} + +// SetGroupId sets the GroupId field's value. +func (s *UpdateSecurityGroupRuleDescriptionsIngressInput) SetGroupId(v string) *UpdateSecurityGroupRuleDescriptionsIngressInput { + s.GroupId = &v + return s +} + +// SetGroupName sets the GroupName field's value. +func (s *UpdateSecurityGroupRuleDescriptionsIngressInput) SetGroupName(v string) *UpdateSecurityGroupRuleDescriptionsIngressInput { + s.GroupName = &v + return s +} + +// SetIpPermissions sets the IpPermissions field's value. +func (s *UpdateSecurityGroupRuleDescriptionsIngressInput) SetIpPermissions(v []*IpPermission) *UpdateSecurityGroupRuleDescriptionsIngressInput { + s.IpPermissions = v + return s +} + +type UpdateSecurityGroupRuleDescriptionsIngressOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the request succeeds; otherwise, returns an error. + Return *bool `locationName:"return" type:"boolean"` +} + +// String returns the string representation +func (s UpdateSecurityGroupRuleDescriptionsIngressOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UpdateSecurityGroupRuleDescriptionsIngressOutput) GoString() string { + return s.String() +} + +// SetReturn sets the Return field's value. +func (s *UpdateSecurityGroupRuleDescriptionsIngressOutput) SetReturn(v bool) *UpdateSecurityGroupRuleDescriptionsIngressOutput { + s.Return = &v + return s +} + +// Describes the S3 bucket for the disk image. +type UserBucket struct { + _ struct{} `type:"structure"` + + // The name of the S3 bucket where the disk image is located. + S3Bucket *string `type:"string"` + + // The file name of the disk image. + S3Key *string `type:"string"` +} + +// String returns the string representation +func (s UserBucket) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UserBucket) GoString() string { + return s.String() +} + +// SetS3Bucket sets the S3Bucket field's value. +func (s *UserBucket) SetS3Bucket(v string) *UserBucket { + s.S3Bucket = &v + return s +} + +// SetS3Key sets the S3Key field's value. +func (s *UserBucket) SetS3Key(v string) *UserBucket { + s.S3Key = &v + return s +} + +// Describes the S3 bucket for the disk image. +type UserBucketDetails struct { + _ struct{} `type:"structure"` + + // The S3 bucket from which the disk image was created. + S3Bucket *string `locationName:"s3Bucket" type:"string"` + + // The file name of the disk image. + S3Key *string `locationName:"s3Key" type:"string"` +} + +// String returns the string representation +func (s UserBucketDetails) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UserBucketDetails) GoString() string { + return s.String() +} + +// SetS3Bucket sets the S3Bucket field's value. +func (s *UserBucketDetails) SetS3Bucket(v string) *UserBucketDetails { + s.S3Bucket = &v + return s +} + +// SetS3Key sets the S3Key field's value. +func (s *UserBucketDetails) SetS3Key(v string) *UserBucketDetails { + s.S3Key = &v + return s +} + +// Describes the user data for an instance. +type UserData struct { + _ struct{} `type:"structure" sensitive:"true"` + + // The user data. If you are using an AWS SDK or command line tool, Base64-encoding + // is performed for you, and you can load the text from a file. Otherwise, you + // must provide Base64-encoded text. + Data *string `locationName:"data" type:"string"` +} + +// String returns the string representation +func (s UserData) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UserData) GoString() string { + return s.String() +} + +// SetData sets the Data field's value. +func (s *UserData) SetData(v string) *UserData { + s.Data = &v + return s +} + +// Describes a security group and AWS account ID pair. +type UserIdGroupPair struct { + _ struct{} `type:"structure"` + + // A description for the security group rule that references this user ID group + // pair. + // + // Constraints: Up to 255 characters in length. Allowed characters are a-z, + // A-Z, 0-9, spaces, and ._-:/()#,@[]+=;{}!$* + Description *string `locationName:"description" type:"string"` + + // The ID of the security group. + GroupId *string `locationName:"groupId" type:"string"` + + // The name of the security group. In a request, use this parameter for a security + // group in EC2-Classic or a default VPC only. For a security group in a nondefault + // VPC, use the security group ID. + // + // For a referenced security group in another VPC, this value is not returned + // if the referenced security group is deleted. + GroupName *string `locationName:"groupName" type:"string"` + + // The status of a VPC peering connection, if applicable. + PeeringStatus *string `locationName:"peeringStatus" type:"string"` + + // The ID of an AWS account. + // + // For a referenced security group in another VPC, the account ID of the referenced + // security group is returned in the response. If the referenced security group + // is deleted, this value is not returned. + // + // [EC2-Classic] Required when adding or removing rules that reference a security + // group in another AWS account. + UserId *string `locationName:"userId" type:"string"` + + // The ID of the VPC for the referenced security group, if applicable. + VpcId *string `locationName:"vpcId" type:"string"` + + // The ID of the VPC peering connection, if applicable. + VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string"` +} + +// String returns the string representation +func (s UserIdGroupPair) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UserIdGroupPair) GoString() string { + return s.String() +} + +// SetDescription sets the Description field's value. +func (s *UserIdGroupPair) SetDescription(v string) *UserIdGroupPair { + s.Description = &v + return s +} + +// SetGroupId sets the GroupId field's value. +func (s *UserIdGroupPair) SetGroupId(v string) *UserIdGroupPair { + s.GroupId = &v + return s +} + +// SetGroupName sets the GroupName field's value. +func (s *UserIdGroupPair) SetGroupName(v string) *UserIdGroupPair { + s.GroupName = &v + return s +} + +// SetPeeringStatus sets the PeeringStatus field's value. +func (s *UserIdGroupPair) SetPeeringStatus(v string) *UserIdGroupPair { + s.PeeringStatus = &v + return s +} + +// SetUserId sets the UserId field's value. +func (s *UserIdGroupPair) SetUserId(v string) *UserIdGroupPair { + s.UserId = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *UserIdGroupPair) SetVpcId(v string) *UserIdGroupPair { + s.VpcId = &v + return s +} + +// SetVpcPeeringConnectionId sets the VpcPeeringConnectionId field's value. +func (s *UserIdGroupPair) SetVpcPeeringConnectionId(v string) *UserIdGroupPair { + s.VpcPeeringConnectionId = &v + return s +} + +// Describes telemetry for a VPN tunnel. +type VgwTelemetry struct { + _ struct{} `type:"structure"` + + // The number of accepted routes. + AcceptedRouteCount *int64 `locationName:"acceptedRouteCount" type:"integer"` + + // The Amazon Resource Name (ARN) of the VPN tunnel endpoint certificate. + CertificateArn *string `locationName:"certificateArn" type:"string"` + + // The date and time of the last change in status. + LastStatusChange *time.Time `locationName:"lastStatusChange" type:"timestamp"` + + // The Internet-routable IP address of the virtual private gateway's outside + // interface. + OutsideIpAddress *string `locationName:"outsideIpAddress" type:"string"` + + // The status of the VPN tunnel. + Status *string `locationName:"status" type:"string" enum:"TelemetryStatus"` + + // If an error occurs, a description of the error. + StatusMessage *string `locationName:"statusMessage" type:"string"` +} + +// String returns the string representation +func (s VgwTelemetry) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VgwTelemetry) GoString() string { + return s.String() +} + +// SetAcceptedRouteCount sets the AcceptedRouteCount field's value. +func (s *VgwTelemetry) SetAcceptedRouteCount(v int64) *VgwTelemetry { + s.AcceptedRouteCount = &v + return s +} + +// SetCertificateArn sets the CertificateArn field's value. +func (s *VgwTelemetry) SetCertificateArn(v string) *VgwTelemetry { + s.CertificateArn = &v + return s +} + +// SetLastStatusChange sets the LastStatusChange field's value. +func (s *VgwTelemetry) SetLastStatusChange(v time.Time) *VgwTelemetry { + s.LastStatusChange = &v + return s +} + +// SetOutsideIpAddress sets the OutsideIpAddress field's value. +func (s *VgwTelemetry) SetOutsideIpAddress(v string) *VgwTelemetry { + s.OutsideIpAddress = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *VgwTelemetry) SetStatus(v string) *VgwTelemetry { + s.Status = &v + return s +} + +// SetStatusMessage sets the StatusMessage field's value. +func (s *VgwTelemetry) SetStatusMessage(v string) *VgwTelemetry { + s.StatusMessage = &v + return s +} + +// Describes a volume. +type Volume struct { + _ struct{} `type:"structure"` + + // Information about the volume attachments. + Attachments []*VolumeAttachment `locationName:"attachmentSet" locationNameList:"item" type:"list"` + + // The Availability Zone for the volume. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // The time stamp when volume creation was initiated. + CreateTime *time.Time `locationName:"createTime" type:"timestamp"` + + // Indicates whether the volume is encrypted. + Encrypted *bool `locationName:"encrypted" type:"boolean"` + + // The number of I/O operations per second (IOPS) that the volume supports. + // For Provisioned IOPS SSD volumes, this represents the number of IOPS that + // are provisioned for the volume. For General Purpose SSD volumes, this represents + // the baseline performance of the volume and the rate at which the volume accumulates + // I/O credits for bursting. For more information, see Amazon EBS Volume Types + // (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) + // in the Amazon Elastic Compute Cloud User Guide. + // + // Constraints: Range is 100-16,000 IOPS for gp2 volumes and 100 to 64,000IOPS + // for io1 volumes, in most Regions. The maximum IOPS for io1 of 64,000 is guaranteed + // only on Nitro-based instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances). + // Other instance families guarantee performance up to 32,000 IOPS. + // + // Condition: This parameter is required for requests to create io1 volumes; + // it is not used in requests to create gp2, st1, sc1, or standard volumes. + Iops *int64 `locationName:"iops" type:"integer"` + + // The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) + // customer master key (CMK) that was used to protect the volume encryption + // key for the volume. + KmsKeyId *string `locationName:"kmsKeyId" type:"string"` + + // The size of the volume, in GiBs. + Size *int64 `locationName:"size" type:"integer"` + + // The snapshot from which the volume was created, if applicable. + SnapshotId *string `locationName:"snapshotId" type:"string"` + + // The volume state. + State *string `locationName:"status" type:"string" enum:"VolumeState"` + + // Any tags assigned to the volume. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The ID of the volume. + VolumeId *string `locationName:"volumeId" type:"string"` + + // The volume type. This can be gp2 for General Purpose SSD, io1 for Provisioned + // IOPS SSD, st1 for Throughput Optimized HDD, sc1 for Cold HDD, or standard + // for Magnetic volumes. + VolumeType *string `locationName:"volumeType" type:"string" enum:"VolumeType"` +} + +// String returns the string representation +func (s Volume) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Volume) GoString() string { + return s.String() +} + +// SetAttachments sets the Attachments field's value. +func (s *Volume) SetAttachments(v []*VolumeAttachment) *Volume { + s.Attachments = v + return s +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *Volume) SetAvailabilityZone(v string) *Volume { + s.AvailabilityZone = &v + return s +} + +// SetCreateTime sets the CreateTime field's value. +func (s *Volume) SetCreateTime(v time.Time) *Volume { + s.CreateTime = &v + return s +} + +// SetEncrypted sets the Encrypted field's value. +func (s *Volume) SetEncrypted(v bool) *Volume { + s.Encrypted = &v + return s +} + +// SetIops sets the Iops field's value. +func (s *Volume) SetIops(v int64) *Volume { + s.Iops = &v + return s +} + +// SetKmsKeyId sets the KmsKeyId field's value. +func (s *Volume) SetKmsKeyId(v string) *Volume { + s.KmsKeyId = &v + return s +} + +// SetSize sets the Size field's value. +func (s *Volume) SetSize(v int64) *Volume { + s.Size = &v + return s +} + +// SetSnapshotId sets the SnapshotId field's value. +func (s *Volume) SetSnapshotId(v string) *Volume { + s.SnapshotId = &v + return s +} + +// SetState sets the State field's value. +func (s *Volume) SetState(v string) *Volume { + s.State = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *Volume) SetTags(v []*Tag) *Volume { + s.Tags = v + return s +} + +// SetVolumeId sets the VolumeId field's value. +func (s *Volume) SetVolumeId(v string) *Volume { + s.VolumeId = &v + return s +} + +// SetVolumeType sets the VolumeType field's value. +func (s *Volume) SetVolumeType(v string) *Volume { + s.VolumeType = &v + return s +} + +// Describes volume attachment details. +type VolumeAttachment struct { + _ struct{} `type:"structure"` + + // The time stamp when the attachment initiated. + AttachTime *time.Time `locationName:"attachTime" type:"timestamp"` + + // Indicates whether the EBS volume is deleted on instance termination. + DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"` + + // The device name. + Device *string `locationName:"device" type:"string"` + + // The ID of the instance. + InstanceId *string `locationName:"instanceId" type:"string"` + + // The attachment state of the volume. + State *string `locationName:"status" type:"string" enum:"VolumeAttachmentState"` + + // The ID of the volume. + VolumeId *string `locationName:"volumeId" type:"string"` +} + +// String returns the string representation +func (s VolumeAttachment) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VolumeAttachment) GoString() string { + return s.String() +} + +// SetAttachTime sets the AttachTime field's value. +func (s *VolumeAttachment) SetAttachTime(v time.Time) *VolumeAttachment { + s.AttachTime = &v + return s +} + +// SetDeleteOnTermination sets the DeleteOnTermination field's value. +func (s *VolumeAttachment) SetDeleteOnTermination(v bool) *VolumeAttachment { + s.DeleteOnTermination = &v + return s +} + +// SetDevice sets the Device field's value. +func (s *VolumeAttachment) SetDevice(v string) *VolumeAttachment { + s.Device = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *VolumeAttachment) SetInstanceId(v string) *VolumeAttachment { + s.InstanceId = &v + return s +} + +// SetState sets the State field's value. +func (s *VolumeAttachment) SetState(v string) *VolumeAttachment { + s.State = &v + return s +} + +// SetVolumeId sets the VolumeId field's value. +func (s *VolumeAttachment) SetVolumeId(v string) *VolumeAttachment { + s.VolumeId = &v + return s +} + +// Describes an EBS volume. +type VolumeDetail struct { + _ struct{} `type:"structure"` + + // The size of the volume, in GiB. + // + // Size is a required field + Size *int64 `locationName:"size" type:"long" required:"true"` +} + +// String returns the string representation +func (s VolumeDetail) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VolumeDetail) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *VolumeDetail) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "VolumeDetail"} + if s.Size == nil { + invalidParams.Add(request.NewErrParamRequired("Size")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetSize sets the Size field's value. +func (s *VolumeDetail) SetSize(v int64) *VolumeDetail { + s.Size = &v + return s +} + +// Describes the modification status of an EBS volume. +// +// If the volume has never been modified, some element values will be null. +type VolumeModification struct { + _ struct{} `type:"structure"` + + // The modification completion or failure time. + EndTime *time.Time `locationName:"endTime" type:"timestamp"` + + // The current modification state. The modification state is null for unmodified + // volumes. + ModificationState *string `locationName:"modificationState" type:"string" enum:"VolumeModificationState"` + + // The original IOPS rate of the volume. + OriginalIops *int64 `locationName:"originalIops" type:"integer"` + + // The original size of the volume. + OriginalSize *int64 `locationName:"originalSize" type:"integer"` + + // The original EBS volume type of the volume. + OriginalVolumeType *string `locationName:"originalVolumeType" type:"string" enum:"VolumeType"` + + // The modification progress, from 0 to 100 percent complete. + Progress *int64 `locationName:"progress" type:"long"` + + // The modification start time. + StartTime *time.Time `locationName:"startTime" type:"timestamp"` + + // A status message about the modification progress or failure. + StatusMessage *string `locationName:"statusMessage" type:"string"` + + // The target IOPS rate of the volume. + TargetIops *int64 `locationName:"targetIops" type:"integer"` + + // The target size of the volume, in GiB. + TargetSize *int64 `locationName:"targetSize" type:"integer"` + + // The target EBS volume type of the volume. + TargetVolumeType *string `locationName:"targetVolumeType" type:"string" enum:"VolumeType"` + + // The ID of the volume. + VolumeId *string `locationName:"volumeId" type:"string"` +} + +// String returns the string representation +func (s VolumeModification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VolumeModification) GoString() string { + return s.String() +} + +// SetEndTime sets the EndTime field's value. +func (s *VolumeModification) SetEndTime(v time.Time) *VolumeModification { + s.EndTime = &v + return s +} + +// SetModificationState sets the ModificationState field's value. +func (s *VolumeModification) SetModificationState(v string) *VolumeModification { + s.ModificationState = &v + return s +} + +// SetOriginalIops sets the OriginalIops field's value. +func (s *VolumeModification) SetOriginalIops(v int64) *VolumeModification { + s.OriginalIops = &v + return s +} + +// SetOriginalSize sets the OriginalSize field's value. +func (s *VolumeModification) SetOriginalSize(v int64) *VolumeModification { + s.OriginalSize = &v + return s +} + +// SetOriginalVolumeType sets the OriginalVolumeType field's value. +func (s *VolumeModification) SetOriginalVolumeType(v string) *VolumeModification { + s.OriginalVolumeType = &v + return s +} + +// SetProgress sets the Progress field's value. +func (s *VolumeModification) SetProgress(v int64) *VolumeModification { + s.Progress = &v + return s +} + +// SetStartTime sets the StartTime field's value. +func (s *VolumeModification) SetStartTime(v time.Time) *VolumeModification { + s.StartTime = &v + return s +} + +// SetStatusMessage sets the StatusMessage field's value. +func (s *VolumeModification) SetStatusMessage(v string) *VolumeModification { + s.StatusMessage = &v + return s +} + +// SetTargetIops sets the TargetIops field's value. +func (s *VolumeModification) SetTargetIops(v int64) *VolumeModification { + s.TargetIops = &v + return s +} + +// SetTargetSize sets the TargetSize field's value. +func (s *VolumeModification) SetTargetSize(v int64) *VolumeModification { + s.TargetSize = &v + return s +} + +// SetTargetVolumeType sets the TargetVolumeType field's value. +func (s *VolumeModification) SetTargetVolumeType(v string) *VolumeModification { + s.TargetVolumeType = &v + return s +} + +// SetVolumeId sets the VolumeId field's value. +func (s *VolumeModification) SetVolumeId(v string) *VolumeModification { + s.VolumeId = &v + return s +} + +// Describes a volume status operation code. +type VolumeStatusAction struct { + _ struct{} `type:"structure"` + + // The code identifying the operation, for example, enable-volume-io. + Code *string `locationName:"code" type:"string"` + + // A description of the operation. + Description *string `locationName:"description" type:"string"` + + // The ID of the event associated with this operation. + EventId *string `locationName:"eventId" type:"string"` + + // The event type associated with this operation. + EventType *string `locationName:"eventType" type:"string"` +} + +// String returns the string representation +func (s VolumeStatusAction) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VolumeStatusAction) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *VolumeStatusAction) SetCode(v string) *VolumeStatusAction { + s.Code = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *VolumeStatusAction) SetDescription(v string) *VolumeStatusAction { + s.Description = &v + return s +} + +// SetEventId sets the EventId field's value. +func (s *VolumeStatusAction) SetEventId(v string) *VolumeStatusAction { + s.EventId = &v + return s +} + +// SetEventType sets the EventType field's value. +func (s *VolumeStatusAction) SetEventType(v string) *VolumeStatusAction { + s.EventType = &v + return s +} + +// Describes a volume status. +type VolumeStatusDetails struct { + _ struct{} `type:"structure"` + + // The name of the volume status. + Name *string `locationName:"name" type:"string" enum:"VolumeStatusName"` + + // The intended status of the volume status. + Status *string `locationName:"status" type:"string"` +} + +// String returns the string representation +func (s VolumeStatusDetails) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VolumeStatusDetails) GoString() string { + return s.String() +} + +// SetName sets the Name field's value. +func (s *VolumeStatusDetails) SetName(v string) *VolumeStatusDetails { + s.Name = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *VolumeStatusDetails) SetStatus(v string) *VolumeStatusDetails { + s.Status = &v + return s +} + +// Describes a volume status event. +type VolumeStatusEvent struct { + _ struct{} `type:"structure"` + + // A description of the event. + Description *string `locationName:"description" type:"string"` + + // The ID of this event. + EventId *string `locationName:"eventId" type:"string"` + + // The type of this event. + EventType *string `locationName:"eventType" type:"string"` + + // The latest end time of the event. + NotAfter *time.Time `locationName:"notAfter" type:"timestamp"` + + // The earliest start time of the event. + NotBefore *time.Time `locationName:"notBefore" type:"timestamp"` +} + +// String returns the string representation +func (s VolumeStatusEvent) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VolumeStatusEvent) GoString() string { + return s.String() +} + +// SetDescription sets the Description field's value. +func (s *VolumeStatusEvent) SetDescription(v string) *VolumeStatusEvent { + s.Description = &v + return s +} + +// SetEventId sets the EventId field's value. +func (s *VolumeStatusEvent) SetEventId(v string) *VolumeStatusEvent { + s.EventId = &v + return s +} + +// SetEventType sets the EventType field's value. +func (s *VolumeStatusEvent) SetEventType(v string) *VolumeStatusEvent { + s.EventType = &v + return s +} + +// SetNotAfter sets the NotAfter field's value. +func (s *VolumeStatusEvent) SetNotAfter(v time.Time) *VolumeStatusEvent { + s.NotAfter = &v + return s +} + +// SetNotBefore sets the NotBefore field's value. +func (s *VolumeStatusEvent) SetNotBefore(v time.Time) *VolumeStatusEvent { + s.NotBefore = &v + return s +} + +// Describes the status of a volume. +type VolumeStatusInfo struct { + _ struct{} `type:"structure"` + + // The details of the volume status. + Details []*VolumeStatusDetails `locationName:"details" locationNameList:"item" type:"list"` + + // The status of the volume. + Status *string `locationName:"status" type:"string" enum:"VolumeStatusInfoStatus"` +} + +// String returns the string representation +func (s VolumeStatusInfo) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VolumeStatusInfo) GoString() string { + return s.String() +} + +// SetDetails sets the Details field's value. +func (s *VolumeStatusInfo) SetDetails(v []*VolumeStatusDetails) *VolumeStatusInfo { + s.Details = v + return s +} + +// SetStatus sets the Status field's value. +func (s *VolumeStatusInfo) SetStatus(v string) *VolumeStatusInfo { + s.Status = &v + return s +} + +// Describes the volume status. +type VolumeStatusItem struct { + _ struct{} `type:"structure"` + + // The details of the operation. + Actions []*VolumeStatusAction `locationName:"actionsSet" locationNameList:"item" type:"list"` + + // The Availability Zone of the volume. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // A list of events associated with the volume. + Events []*VolumeStatusEvent `locationName:"eventsSet" locationNameList:"item" type:"list"` + + // The volume ID. + VolumeId *string `locationName:"volumeId" type:"string"` + + // The volume status. + VolumeStatus *VolumeStatusInfo `locationName:"volumeStatus" type:"structure"` +} + +// String returns the string representation +func (s VolumeStatusItem) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VolumeStatusItem) GoString() string { + return s.String() +} + +// SetActions sets the Actions field's value. +func (s *VolumeStatusItem) SetActions(v []*VolumeStatusAction) *VolumeStatusItem { + s.Actions = v + return s +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *VolumeStatusItem) SetAvailabilityZone(v string) *VolumeStatusItem { + s.AvailabilityZone = &v + return s +} + +// SetEvents sets the Events field's value. +func (s *VolumeStatusItem) SetEvents(v []*VolumeStatusEvent) *VolumeStatusItem { + s.Events = v + return s +} + +// SetVolumeId sets the VolumeId field's value. +func (s *VolumeStatusItem) SetVolumeId(v string) *VolumeStatusItem { + s.VolumeId = &v + return s +} + +// SetVolumeStatus sets the VolumeStatus field's value. +func (s *VolumeStatusItem) SetVolumeStatus(v *VolumeStatusInfo) *VolumeStatusItem { + s.VolumeStatus = v + return s +} + +// Describes a VPC. +type Vpc struct { + _ struct{} `type:"structure"` + + // The primary IPv4 CIDR block for the VPC. + CidrBlock *string `locationName:"cidrBlock" type:"string"` + + // Information about the IPv4 CIDR blocks associated with the VPC. + CidrBlockAssociationSet []*VpcCidrBlockAssociation `locationName:"cidrBlockAssociationSet" locationNameList:"item" type:"list"` + + // The ID of the set of DHCP options you've associated with the VPC (or default + // if the default options are associated with the VPC). + DhcpOptionsId *string `locationName:"dhcpOptionsId" type:"string"` + + // The allowed tenancy of instances launched into the VPC. + InstanceTenancy *string `locationName:"instanceTenancy" type:"string" enum:"Tenancy"` + + // Information about the IPv6 CIDR blocks associated with the VPC. + Ipv6CidrBlockAssociationSet []*VpcIpv6CidrBlockAssociation `locationName:"ipv6CidrBlockAssociationSet" locationNameList:"item" type:"list"` + + // Indicates whether the VPC is the default VPC. + IsDefault *bool `locationName:"isDefault" type:"boolean"` + + // The ID of the AWS account that owns the VPC. + OwnerId *string `locationName:"ownerId" type:"string"` + + // The current state of the VPC. + State *string `locationName:"state" type:"string" enum:"VpcState"` + + // Any tags assigned to the VPC. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The ID of the VPC. + VpcId *string `locationName:"vpcId" type:"string"` +} + +// String returns the string representation +func (s Vpc) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Vpc) GoString() string { + return s.String() +} + +// SetCidrBlock sets the CidrBlock field's value. +func (s *Vpc) SetCidrBlock(v string) *Vpc { + s.CidrBlock = &v + return s +} + +// SetCidrBlockAssociationSet sets the CidrBlockAssociationSet field's value. +func (s *Vpc) SetCidrBlockAssociationSet(v []*VpcCidrBlockAssociation) *Vpc { + s.CidrBlockAssociationSet = v + return s +} + +// SetDhcpOptionsId sets the DhcpOptionsId field's value. +func (s *Vpc) SetDhcpOptionsId(v string) *Vpc { + s.DhcpOptionsId = &v + return s +} + +// SetInstanceTenancy sets the InstanceTenancy field's value. +func (s *Vpc) SetInstanceTenancy(v string) *Vpc { + s.InstanceTenancy = &v + return s +} + +// SetIpv6CidrBlockAssociationSet sets the Ipv6CidrBlockAssociationSet field's value. +func (s *Vpc) SetIpv6CidrBlockAssociationSet(v []*VpcIpv6CidrBlockAssociation) *Vpc { + s.Ipv6CidrBlockAssociationSet = v + return s +} + +// SetIsDefault sets the IsDefault field's value. +func (s *Vpc) SetIsDefault(v bool) *Vpc { + s.IsDefault = &v + return s +} + +// SetOwnerId sets the OwnerId field's value. +func (s *Vpc) SetOwnerId(v string) *Vpc { + s.OwnerId = &v + return s +} + +// SetState sets the State field's value. +func (s *Vpc) SetState(v string) *Vpc { + s.State = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *Vpc) SetTags(v []*Tag) *Vpc { + s.Tags = v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *Vpc) SetVpcId(v string) *Vpc { + s.VpcId = &v + return s +} + +// Describes an attachment between a virtual private gateway and a VPC. +type VpcAttachment struct { + _ struct{} `type:"structure"` + + // The current state of the attachment. + State *string `locationName:"state" type:"string" enum:"AttachmentStatus"` + + // The ID of the VPC. + VpcId *string `locationName:"vpcId" type:"string"` +} + +// String returns the string representation +func (s VpcAttachment) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VpcAttachment) GoString() string { + return s.String() +} + +// SetState sets the State field's value. +func (s *VpcAttachment) SetState(v string) *VpcAttachment { + s.State = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *VpcAttachment) SetVpcId(v string) *VpcAttachment { + s.VpcId = &v + return s +} + +// Describes an IPv4 CIDR block associated with a VPC. +type VpcCidrBlockAssociation struct { + _ struct{} `type:"structure"` + + // The association ID for the IPv4 CIDR block. + AssociationId *string `locationName:"associationId" type:"string"` + + // The IPv4 CIDR block. + CidrBlock *string `locationName:"cidrBlock" type:"string"` + + // Information about the state of the CIDR block. + CidrBlockState *VpcCidrBlockState `locationName:"cidrBlockState" type:"structure"` +} + +// String returns the string representation +func (s VpcCidrBlockAssociation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VpcCidrBlockAssociation) GoString() string { + return s.String() +} + +// SetAssociationId sets the AssociationId field's value. +func (s *VpcCidrBlockAssociation) SetAssociationId(v string) *VpcCidrBlockAssociation { + s.AssociationId = &v + return s +} + +// SetCidrBlock sets the CidrBlock field's value. +func (s *VpcCidrBlockAssociation) SetCidrBlock(v string) *VpcCidrBlockAssociation { + s.CidrBlock = &v + return s +} + +// SetCidrBlockState sets the CidrBlockState field's value. +func (s *VpcCidrBlockAssociation) SetCidrBlockState(v *VpcCidrBlockState) *VpcCidrBlockAssociation { + s.CidrBlockState = v + return s +} + +// Describes the state of a CIDR block. +type VpcCidrBlockState struct { + _ struct{} `type:"structure"` + + // The state of the CIDR block. + State *string `locationName:"state" type:"string" enum:"VpcCidrBlockStateCode"` + + // A message about the status of the CIDR block, if applicable. + StatusMessage *string `locationName:"statusMessage" type:"string"` +} + +// String returns the string representation +func (s VpcCidrBlockState) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VpcCidrBlockState) GoString() string { + return s.String() +} + +// SetState sets the State field's value. +func (s *VpcCidrBlockState) SetState(v string) *VpcCidrBlockState { + s.State = &v + return s +} + +// SetStatusMessage sets the StatusMessage field's value. +func (s *VpcCidrBlockState) SetStatusMessage(v string) *VpcCidrBlockState { + s.StatusMessage = &v + return s +} + +// Describes whether a VPC is enabled for ClassicLink. +type VpcClassicLink struct { + _ struct{} `type:"structure"` + + // Indicates whether the VPC is enabled for ClassicLink. + ClassicLinkEnabled *bool `locationName:"classicLinkEnabled" type:"boolean"` + + // Any tags assigned to the VPC. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The ID of the VPC. + VpcId *string `locationName:"vpcId" type:"string"` +} + +// String returns the string representation +func (s VpcClassicLink) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VpcClassicLink) GoString() string { + return s.String() +} + +// SetClassicLinkEnabled sets the ClassicLinkEnabled field's value. +func (s *VpcClassicLink) SetClassicLinkEnabled(v bool) *VpcClassicLink { + s.ClassicLinkEnabled = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *VpcClassicLink) SetTags(v []*Tag) *VpcClassicLink { + s.Tags = v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *VpcClassicLink) SetVpcId(v string) *VpcClassicLink { + s.VpcId = &v + return s +} + +// Describes a VPC endpoint. +type VpcEndpoint struct { + _ struct{} `type:"structure"` + + // The date and time the VPC endpoint was created. + CreationTimestamp *time.Time `locationName:"creationTimestamp" type:"timestamp"` + + // (Interface endpoint) The DNS entries for the endpoint. + DnsEntries []*DnsEntry `locationName:"dnsEntrySet" locationNameList:"item" type:"list"` + + // (Interface endpoint) Information about the security groups associated with + // the network interface. + Groups []*SecurityGroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"` + + // (Interface endpoint) One or more network interfaces for the endpoint. + NetworkInterfaceIds []*string `locationName:"networkInterfaceIdSet" locationNameList:"item" type:"list"` + + // The ID of the AWS account that owns the VPC endpoint. + OwnerId *string `locationName:"ownerId" type:"string"` + + // The policy document associated with the endpoint, if applicable. + PolicyDocument *string `locationName:"policyDocument" type:"string"` + + // (Interface endpoint) Indicates whether the VPC is associated with a private + // hosted zone. + PrivateDnsEnabled *bool `locationName:"privateDnsEnabled" type:"boolean"` + + // Indicates whether the VPC endpoint is being managed by its service. + RequesterManaged *bool `locationName:"requesterManaged" type:"boolean"` + + // (Gateway endpoint) One or more route tables associated with the endpoint. + RouteTableIds []*string `locationName:"routeTableIdSet" locationNameList:"item" type:"list"` + + // The name of the service to which the endpoint is associated. + ServiceName *string `locationName:"serviceName" type:"string"` + + // The state of the VPC endpoint. + State *string `locationName:"state" type:"string" enum:"State"` + + // (Interface endpoint) One or more subnets in which the endpoint is located. + SubnetIds []*string `locationName:"subnetIdSet" locationNameList:"item" type:"list"` + + // Any tags assigned to the VPC endpoint. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The ID of the VPC endpoint. + VpcEndpointId *string `locationName:"vpcEndpointId" type:"string"` + + // The type of endpoint. + VpcEndpointType *string `locationName:"vpcEndpointType" type:"string" enum:"VpcEndpointType"` + + // The ID of the VPC to which the endpoint is associated. + VpcId *string `locationName:"vpcId" type:"string"` +} + +// String returns the string representation +func (s VpcEndpoint) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VpcEndpoint) GoString() string { + return s.String() +} + +// SetCreationTimestamp sets the CreationTimestamp field's value. +func (s *VpcEndpoint) SetCreationTimestamp(v time.Time) *VpcEndpoint { + s.CreationTimestamp = &v + return s +} + +// SetDnsEntries sets the DnsEntries field's value. +func (s *VpcEndpoint) SetDnsEntries(v []*DnsEntry) *VpcEndpoint { + s.DnsEntries = v + return s +} + +// SetGroups sets the Groups field's value. +func (s *VpcEndpoint) SetGroups(v []*SecurityGroupIdentifier) *VpcEndpoint { + s.Groups = v + return s +} + +// SetNetworkInterfaceIds sets the NetworkInterfaceIds field's value. +func (s *VpcEndpoint) SetNetworkInterfaceIds(v []*string) *VpcEndpoint { + s.NetworkInterfaceIds = v + return s +} + +// SetOwnerId sets the OwnerId field's value. +func (s *VpcEndpoint) SetOwnerId(v string) *VpcEndpoint { + s.OwnerId = &v + return s +} + +// SetPolicyDocument sets the PolicyDocument field's value. +func (s *VpcEndpoint) SetPolicyDocument(v string) *VpcEndpoint { + s.PolicyDocument = &v + return s +} + +// SetPrivateDnsEnabled sets the PrivateDnsEnabled field's value. +func (s *VpcEndpoint) SetPrivateDnsEnabled(v bool) *VpcEndpoint { + s.PrivateDnsEnabled = &v + return s +} + +// SetRequesterManaged sets the RequesterManaged field's value. +func (s *VpcEndpoint) SetRequesterManaged(v bool) *VpcEndpoint { + s.RequesterManaged = &v + return s +} + +// SetRouteTableIds sets the RouteTableIds field's value. +func (s *VpcEndpoint) SetRouteTableIds(v []*string) *VpcEndpoint { + s.RouteTableIds = v + return s +} + +// SetServiceName sets the ServiceName field's value. +func (s *VpcEndpoint) SetServiceName(v string) *VpcEndpoint { + s.ServiceName = &v + return s +} + +// SetState sets the State field's value. +func (s *VpcEndpoint) SetState(v string) *VpcEndpoint { + s.State = &v + return s +} + +// SetSubnetIds sets the SubnetIds field's value. +func (s *VpcEndpoint) SetSubnetIds(v []*string) *VpcEndpoint { + s.SubnetIds = v + return s +} + +// SetTags sets the Tags field's value. +func (s *VpcEndpoint) SetTags(v []*Tag) *VpcEndpoint { + s.Tags = v + return s +} + +// SetVpcEndpointId sets the VpcEndpointId field's value. +func (s *VpcEndpoint) SetVpcEndpointId(v string) *VpcEndpoint { + s.VpcEndpointId = &v + return s +} + +// SetVpcEndpointType sets the VpcEndpointType field's value. +func (s *VpcEndpoint) SetVpcEndpointType(v string) *VpcEndpoint { + s.VpcEndpointType = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *VpcEndpoint) SetVpcId(v string) *VpcEndpoint { + s.VpcId = &v + return s +} + +// Describes a VPC endpoint connection to a service. +type VpcEndpointConnection struct { + _ struct{} `type:"structure"` + + // The date and time the VPC endpoint was created. + CreationTimestamp *time.Time `locationName:"creationTimestamp" type:"timestamp"` + + // The DNS entries for the VPC endpoint. + DnsEntries []*DnsEntry `locationName:"dnsEntrySet" locationNameList:"item" type:"list"` + + // The Amazon Resource Names (ARNs) of the network load balancers for the service. + NetworkLoadBalancerArns []*string `locationName:"networkLoadBalancerArnSet" locationNameList:"item" type:"list"` + + // The ID of the service to which the endpoint is connected. + ServiceId *string `locationName:"serviceId" type:"string"` + + // The ID of the VPC endpoint. + VpcEndpointId *string `locationName:"vpcEndpointId" type:"string"` + + // The AWS account ID of the owner of the VPC endpoint. + VpcEndpointOwner *string `locationName:"vpcEndpointOwner" type:"string"` + + // The state of the VPC endpoint. + VpcEndpointState *string `locationName:"vpcEndpointState" type:"string" enum:"State"` +} + +// String returns the string representation +func (s VpcEndpointConnection) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VpcEndpointConnection) GoString() string { + return s.String() +} + +// SetCreationTimestamp sets the CreationTimestamp field's value. +func (s *VpcEndpointConnection) SetCreationTimestamp(v time.Time) *VpcEndpointConnection { + s.CreationTimestamp = &v + return s +} + +// SetDnsEntries sets the DnsEntries field's value. +func (s *VpcEndpointConnection) SetDnsEntries(v []*DnsEntry) *VpcEndpointConnection { + s.DnsEntries = v + return s +} + +// SetNetworkLoadBalancerArns sets the NetworkLoadBalancerArns field's value. +func (s *VpcEndpointConnection) SetNetworkLoadBalancerArns(v []*string) *VpcEndpointConnection { + s.NetworkLoadBalancerArns = v + return s +} + +// SetServiceId sets the ServiceId field's value. +func (s *VpcEndpointConnection) SetServiceId(v string) *VpcEndpointConnection { + s.ServiceId = &v + return s +} + +// SetVpcEndpointId sets the VpcEndpointId field's value. +func (s *VpcEndpointConnection) SetVpcEndpointId(v string) *VpcEndpointConnection { + s.VpcEndpointId = &v + return s +} + +// SetVpcEndpointOwner sets the VpcEndpointOwner field's value. +func (s *VpcEndpointConnection) SetVpcEndpointOwner(v string) *VpcEndpointConnection { + s.VpcEndpointOwner = &v + return s +} + +// SetVpcEndpointState sets the VpcEndpointState field's value. +func (s *VpcEndpointConnection) SetVpcEndpointState(v string) *VpcEndpointConnection { + s.VpcEndpointState = &v + return s +} + +// Describes an IPv6 CIDR block associated with a VPC. +type VpcIpv6CidrBlockAssociation struct { + _ struct{} `type:"structure"` + + // The association ID for the IPv6 CIDR block. + AssociationId *string `locationName:"associationId" type:"string"` + + // The IPv6 CIDR block. + Ipv6CidrBlock *string `locationName:"ipv6CidrBlock" type:"string"` + + // Information about the state of the CIDR block. + Ipv6CidrBlockState *VpcCidrBlockState `locationName:"ipv6CidrBlockState" type:"structure"` +} + +// String returns the string representation +func (s VpcIpv6CidrBlockAssociation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VpcIpv6CidrBlockAssociation) GoString() string { + return s.String() +} + +// SetAssociationId sets the AssociationId field's value. +func (s *VpcIpv6CidrBlockAssociation) SetAssociationId(v string) *VpcIpv6CidrBlockAssociation { + s.AssociationId = &v + return s +} + +// SetIpv6CidrBlock sets the Ipv6CidrBlock field's value. +func (s *VpcIpv6CidrBlockAssociation) SetIpv6CidrBlock(v string) *VpcIpv6CidrBlockAssociation { + s.Ipv6CidrBlock = &v + return s +} + +// SetIpv6CidrBlockState sets the Ipv6CidrBlockState field's value. +func (s *VpcIpv6CidrBlockAssociation) SetIpv6CidrBlockState(v *VpcCidrBlockState) *VpcIpv6CidrBlockAssociation { + s.Ipv6CidrBlockState = v + return s +} + +// Describes a VPC peering connection. +type VpcPeeringConnection struct { + _ struct{} `type:"structure"` + + // Information about the accepter VPC. CIDR block information is only returned + // when describing an active VPC peering connection. + AccepterVpcInfo *VpcPeeringConnectionVpcInfo `locationName:"accepterVpcInfo" type:"structure"` + + // The time that an unaccepted VPC peering connection will expire. + ExpirationTime *time.Time `locationName:"expirationTime" type:"timestamp"` + + // Information about the requester VPC. CIDR block information is only returned + // when describing an active VPC peering connection. + RequesterVpcInfo *VpcPeeringConnectionVpcInfo `locationName:"requesterVpcInfo" type:"structure"` + + // The status of the VPC peering connection. + Status *VpcPeeringConnectionStateReason `locationName:"status" type:"structure"` + + // Any tags assigned to the resource. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The ID of the VPC peering connection. + VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string"` +} + +// String returns the string representation +func (s VpcPeeringConnection) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VpcPeeringConnection) GoString() string { + return s.String() +} + +// SetAccepterVpcInfo sets the AccepterVpcInfo field's value. +func (s *VpcPeeringConnection) SetAccepterVpcInfo(v *VpcPeeringConnectionVpcInfo) *VpcPeeringConnection { + s.AccepterVpcInfo = v + return s +} + +// SetExpirationTime sets the ExpirationTime field's value. +func (s *VpcPeeringConnection) SetExpirationTime(v time.Time) *VpcPeeringConnection { + s.ExpirationTime = &v + return s +} + +// SetRequesterVpcInfo sets the RequesterVpcInfo field's value. +func (s *VpcPeeringConnection) SetRequesterVpcInfo(v *VpcPeeringConnectionVpcInfo) *VpcPeeringConnection { + s.RequesterVpcInfo = v + return s +} + +// SetStatus sets the Status field's value. +func (s *VpcPeeringConnection) SetStatus(v *VpcPeeringConnectionStateReason) *VpcPeeringConnection { + s.Status = v + return s +} + +// SetTags sets the Tags field's value. +func (s *VpcPeeringConnection) SetTags(v []*Tag) *VpcPeeringConnection { + s.Tags = v + return s +} + +// SetVpcPeeringConnectionId sets the VpcPeeringConnectionId field's value. +func (s *VpcPeeringConnection) SetVpcPeeringConnectionId(v string) *VpcPeeringConnection { + s.VpcPeeringConnectionId = &v + return s +} + +// Describes the VPC peering connection options. +type VpcPeeringConnectionOptionsDescription struct { + _ struct{} `type:"structure"` + + // Indicates whether a local VPC can resolve public DNS hostnames to private + // IP addresses when queried from instances in a peer VPC. + AllowDnsResolutionFromRemoteVpc *bool `locationName:"allowDnsResolutionFromRemoteVpc" type:"boolean"` + + // Indicates whether a local ClassicLink connection can communicate with the + // peer VPC over the VPC peering connection. + AllowEgressFromLocalClassicLinkToRemoteVpc *bool `locationName:"allowEgressFromLocalClassicLinkToRemoteVpc" type:"boolean"` + + // Indicates whether a local VPC can communicate with a ClassicLink connection + // in the peer VPC over the VPC peering connection. + AllowEgressFromLocalVpcToRemoteClassicLink *bool `locationName:"allowEgressFromLocalVpcToRemoteClassicLink" type:"boolean"` +} + +// String returns the string representation +func (s VpcPeeringConnectionOptionsDescription) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VpcPeeringConnectionOptionsDescription) GoString() string { + return s.String() +} + +// SetAllowDnsResolutionFromRemoteVpc sets the AllowDnsResolutionFromRemoteVpc field's value. +func (s *VpcPeeringConnectionOptionsDescription) SetAllowDnsResolutionFromRemoteVpc(v bool) *VpcPeeringConnectionOptionsDescription { + s.AllowDnsResolutionFromRemoteVpc = &v + return s +} + +// SetAllowEgressFromLocalClassicLinkToRemoteVpc sets the AllowEgressFromLocalClassicLinkToRemoteVpc field's value. +func (s *VpcPeeringConnectionOptionsDescription) SetAllowEgressFromLocalClassicLinkToRemoteVpc(v bool) *VpcPeeringConnectionOptionsDescription { + s.AllowEgressFromLocalClassicLinkToRemoteVpc = &v + return s +} + +// SetAllowEgressFromLocalVpcToRemoteClassicLink sets the AllowEgressFromLocalVpcToRemoteClassicLink field's value. +func (s *VpcPeeringConnectionOptionsDescription) SetAllowEgressFromLocalVpcToRemoteClassicLink(v bool) *VpcPeeringConnectionOptionsDescription { + s.AllowEgressFromLocalVpcToRemoteClassicLink = &v + return s +} + +// Describes the status of a VPC peering connection. +type VpcPeeringConnectionStateReason struct { + _ struct{} `type:"structure"` + + // The status of the VPC peering connection. + Code *string `locationName:"code" type:"string" enum:"VpcPeeringConnectionStateReasonCode"` + + // A message that provides more information about the status, if applicable. + Message *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s VpcPeeringConnectionStateReason) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VpcPeeringConnectionStateReason) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *VpcPeeringConnectionStateReason) SetCode(v string) *VpcPeeringConnectionStateReason { + s.Code = &v + return s +} + +// SetMessage sets the Message field's value. +func (s *VpcPeeringConnectionStateReason) SetMessage(v string) *VpcPeeringConnectionStateReason { + s.Message = &v + return s +} + +// Describes a VPC in a VPC peering connection. +type VpcPeeringConnectionVpcInfo struct { + _ struct{} `type:"structure"` + + // The IPv4 CIDR block for the VPC. + CidrBlock *string `locationName:"cidrBlock" type:"string"` + + // Information about the IPv4 CIDR blocks for the VPC. + CidrBlockSet []*CidrBlock `locationName:"cidrBlockSet" locationNameList:"item" type:"list"` + + // The IPv6 CIDR block for the VPC. + Ipv6CidrBlockSet []*Ipv6CidrBlock `locationName:"ipv6CidrBlockSet" locationNameList:"item" type:"list"` + + // The AWS account ID of the VPC owner. + OwnerId *string `locationName:"ownerId" type:"string"` + + // Information about the VPC peering connection options for the accepter or + // requester VPC. + PeeringOptions *VpcPeeringConnectionOptionsDescription `locationName:"peeringOptions" type:"structure"` + + // The Region in which the VPC is located. + Region *string `locationName:"region" type:"string"` + + // The ID of the VPC. + VpcId *string `locationName:"vpcId" type:"string"` +} + +// String returns the string representation +func (s VpcPeeringConnectionVpcInfo) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VpcPeeringConnectionVpcInfo) GoString() string { + return s.String() +} + +// SetCidrBlock sets the CidrBlock field's value. +func (s *VpcPeeringConnectionVpcInfo) SetCidrBlock(v string) *VpcPeeringConnectionVpcInfo { + s.CidrBlock = &v + return s +} + +// SetCidrBlockSet sets the CidrBlockSet field's value. +func (s *VpcPeeringConnectionVpcInfo) SetCidrBlockSet(v []*CidrBlock) *VpcPeeringConnectionVpcInfo { + s.CidrBlockSet = v + return s +} + +// SetIpv6CidrBlockSet sets the Ipv6CidrBlockSet field's value. +func (s *VpcPeeringConnectionVpcInfo) SetIpv6CidrBlockSet(v []*Ipv6CidrBlock) *VpcPeeringConnectionVpcInfo { + s.Ipv6CidrBlockSet = v + return s +} + +// SetOwnerId sets the OwnerId field's value. +func (s *VpcPeeringConnectionVpcInfo) SetOwnerId(v string) *VpcPeeringConnectionVpcInfo { + s.OwnerId = &v + return s +} + +// SetPeeringOptions sets the PeeringOptions field's value. +func (s *VpcPeeringConnectionVpcInfo) SetPeeringOptions(v *VpcPeeringConnectionOptionsDescription) *VpcPeeringConnectionVpcInfo { + s.PeeringOptions = v + return s +} + +// SetRegion sets the Region field's value. +func (s *VpcPeeringConnectionVpcInfo) SetRegion(v string) *VpcPeeringConnectionVpcInfo { + s.Region = &v + return s +} + +// SetVpcId sets the VpcId field's value. +func (s *VpcPeeringConnectionVpcInfo) SetVpcId(v string) *VpcPeeringConnectionVpcInfo { + s.VpcId = &v + return s +} + +// Describes a VPN connection. +type VpnConnection struct { + _ struct{} `type:"structure"` + + // The category of the VPN connection. A value of VPN indicates an AWS VPN connection. + // A value of VPN-Classic indicates an AWS Classic VPN connection. + Category *string `locationName:"category" type:"string"` + + // The configuration information for the VPN connection's customer gateway (in + // the native XML format). This element is always present in the CreateVpnConnection + // response; however, it's present in the DescribeVpnConnections response only + // if the VPN connection is in the pending or available state. + CustomerGatewayConfiguration *string `locationName:"customerGatewayConfiguration" type:"string"` + + // The ID of the customer gateway at your end of the VPN connection. + CustomerGatewayId *string `locationName:"customerGatewayId" type:"string"` + + // The VPN connection options. + Options *VpnConnectionOptions `locationName:"options" type:"structure"` + + // The static routes associated with the VPN connection. + Routes []*VpnStaticRoute `locationName:"routes" locationNameList:"item" type:"list"` + + // The current state of the VPN connection. + State *string `locationName:"state" type:"string" enum:"VpnState"` + + // Any tags assigned to the VPN connection. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The ID of the transit gateway associated with the VPN connection. + TransitGatewayId *string `locationName:"transitGatewayId" type:"string"` + + // The type of VPN connection. + Type *string `locationName:"type" type:"string" enum:"GatewayType"` + + // Information about the VPN tunnel. + VgwTelemetry []*VgwTelemetry `locationName:"vgwTelemetry" locationNameList:"item" type:"list"` + + // The ID of the VPN connection. + VpnConnectionId *string `locationName:"vpnConnectionId" type:"string"` + + // The ID of the virtual private gateway at the AWS side of the VPN connection. + VpnGatewayId *string `locationName:"vpnGatewayId" type:"string"` +} + +// String returns the string representation +func (s VpnConnection) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VpnConnection) GoString() string { + return s.String() +} + +// SetCategory sets the Category field's value. +func (s *VpnConnection) SetCategory(v string) *VpnConnection { + s.Category = &v + return s +} + +// SetCustomerGatewayConfiguration sets the CustomerGatewayConfiguration field's value. +func (s *VpnConnection) SetCustomerGatewayConfiguration(v string) *VpnConnection { + s.CustomerGatewayConfiguration = &v + return s +} + +// SetCustomerGatewayId sets the CustomerGatewayId field's value. +func (s *VpnConnection) SetCustomerGatewayId(v string) *VpnConnection { + s.CustomerGatewayId = &v + return s +} + +// SetOptions sets the Options field's value. +func (s *VpnConnection) SetOptions(v *VpnConnectionOptions) *VpnConnection { + s.Options = v + return s +} + +// SetRoutes sets the Routes field's value. +func (s *VpnConnection) SetRoutes(v []*VpnStaticRoute) *VpnConnection { + s.Routes = v + return s +} + +// SetState sets the State field's value. +func (s *VpnConnection) SetState(v string) *VpnConnection { + s.State = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *VpnConnection) SetTags(v []*Tag) *VpnConnection { + s.Tags = v + return s +} + +// SetTransitGatewayId sets the TransitGatewayId field's value. +func (s *VpnConnection) SetTransitGatewayId(v string) *VpnConnection { + s.TransitGatewayId = &v + return s +} + +// SetType sets the Type field's value. +func (s *VpnConnection) SetType(v string) *VpnConnection { + s.Type = &v + return s +} + +// SetVgwTelemetry sets the VgwTelemetry field's value. +func (s *VpnConnection) SetVgwTelemetry(v []*VgwTelemetry) *VpnConnection { + s.VgwTelemetry = v + return s +} + +// SetVpnConnectionId sets the VpnConnectionId field's value. +func (s *VpnConnection) SetVpnConnectionId(v string) *VpnConnection { + s.VpnConnectionId = &v + return s +} + +// SetVpnGatewayId sets the VpnGatewayId field's value. +func (s *VpnConnection) SetVpnGatewayId(v string) *VpnConnection { + s.VpnGatewayId = &v + return s +} + +// Describes VPN connection options. +type VpnConnectionOptions struct { + _ struct{} `type:"structure"` + + // Indicates whether the VPN connection uses static routes only. Static routes + // must be used for devices that don't support BGP. + StaticRoutesOnly *bool `locationName:"staticRoutesOnly" type:"boolean"` + + // Indicates the VPN tunnel options. + TunnelOptions []*TunnelOption `locationName:"tunnelOptionSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s VpnConnectionOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VpnConnectionOptions) GoString() string { + return s.String() +} + +// SetStaticRoutesOnly sets the StaticRoutesOnly field's value. +func (s *VpnConnectionOptions) SetStaticRoutesOnly(v bool) *VpnConnectionOptions { + s.StaticRoutesOnly = &v + return s +} + +// SetTunnelOptions sets the TunnelOptions field's value. +func (s *VpnConnectionOptions) SetTunnelOptions(v []*TunnelOption) *VpnConnectionOptions { + s.TunnelOptions = v + return s +} + +// Describes VPN connection options. +type VpnConnectionOptionsSpecification struct { + _ struct{} `type:"structure"` + + // Indicate whether the VPN connection uses static routes only. If you are creating + // a VPN connection for a device that does not support BGP, you must specify + // true. Use CreateVpnConnectionRoute to create a static route. + // + // Default: false + StaticRoutesOnly *bool `locationName:"staticRoutesOnly" type:"boolean"` + + // The tunnel options for the VPN connection. + TunnelOptions []*VpnTunnelOptionsSpecification `type:"list"` +} + +// String returns the string representation +func (s VpnConnectionOptionsSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VpnConnectionOptionsSpecification) GoString() string { + return s.String() +} + +// SetStaticRoutesOnly sets the StaticRoutesOnly field's value. +func (s *VpnConnectionOptionsSpecification) SetStaticRoutesOnly(v bool) *VpnConnectionOptionsSpecification { + s.StaticRoutesOnly = &v + return s +} + +// SetTunnelOptions sets the TunnelOptions field's value. +func (s *VpnConnectionOptionsSpecification) SetTunnelOptions(v []*VpnTunnelOptionsSpecification) *VpnConnectionOptionsSpecification { + s.TunnelOptions = v + return s +} + +// Describes a virtual private gateway. +type VpnGateway struct { + _ struct{} `type:"structure"` + + // The private Autonomous System Number (ASN) for the Amazon side of a BGP session. + AmazonSideAsn *int64 `locationName:"amazonSideAsn" type:"long"` + + // The Availability Zone where the virtual private gateway was created, if applicable. + // This field may be empty or not returned. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // The current state of the virtual private gateway. + State *string `locationName:"state" type:"string" enum:"VpnState"` + + // Any tags assigned to the virtual private gateway. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The type of VPN connection the virtual private gateway supports. + Type *string `locationName:"type" type:"string" enum:"GatewayType"` + + // Any VPCs attached to the virtual private gateway. + VpcAttachments []*VpcAttachment `locationName:"attachments" locationNameList:"item" type:"list"` + + // The ID of the virtual private gateway. + VpnGatewayId *string `locationName:"vpnGatewayId" type:"string"` +} + +// String returns the string representation +func (s VpnGateway) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VpnGateway) GoString() string { + return s.String() +} + +// SetAmazonSideAsn sets the AmazonSideAsn field's value. +func (s *VpnGateway) SetAmazonSideAsn(v int64) *VpnGateway { + s.AmazonSideAsn = &v + return s +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *VpnGateway) SetAvailabilityZone(v string) *VpnGateway { + s.AvailabilityZone = &v + return s +} + +// SetState sets the State field's value. +func (s *VpnGateway) SetState(v string) *VpnGateway { + s.State = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *VpnGateway) SetTags(v []*Tag) *VpnGateway { + s.Tags = v + return s +} + +// SetType sets the Type field's value. +func (s *VpnGateway) SetType(v string) *VpnGateway { + s.Type = &v + return s +} + +// SetVpcAttachments sets the VpcAttachments field's value. +func (s *VpnGateway) SetVpcAttachments(v []*VpcAttachment) *VpnGateway { + s.VpcAttachments = v + return s +} + +// SetVpnGatewayId sets the VpnGatewayId field's value. +func (s *VpnGateway) SetVpnGatewayId(v string) *VpnGateway { + s.VpnGatewayId = &v + return s +} + +// Describes a static route for a VPN connection. +type VpnStaticRoute struct { + _ struct{} `type:"structure"` + + // The CIDR block associated with the local subnet of the customer data center. + DestinationCidrBlock *string `locationName:"destinationCidrBlock" type:"string"` + + // Indicates how the routes were provided. + Source *string `locationName:"source" type:"string" enum:"VpnStaticRouteSource"` + + // The current state of the static route. + State *string `locationName:"state" type:"string" enum:"VpnState"` +} + +// String returns the string representation +func (s VpnStaticRoute) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VpnStaticRoute) GoString() string { + return s.String() +} + +// SetDestinationCidrBlock sets the DestinationCidrBlock field's value. +func (s *VpnStaticRoute) SetDestinationCidrBlock(v string) *VpnStaticRoute { + s.DestinationCidrBlock = &v + return s +} + +// SetSource sets the Source field's value. +func (s *VpnStaticRoute) SetSource(v string) *VpnStaticRoute { + s.Source = &v + return s +} + +// SetState sets the State field's value. +func (s *VpnStaticRoute) SetState(v string) *VpnStaticRoute { + s.State = &v + return s +} + +// The tunnel options for a VPN connection. +type VpnTunnelOptionsSpecification struct { + _ struct{} `type:"structure"` + + // The number of seconds after which a DPD timeout occurs. + // + // Constraints: A value between 0 and 30. + // + // Default: 30 + DPDTimeoutSeconds *int64 `type:"integer"` + + // The IKE versions that are permitted for the VPN tunnel. + // + // Valid values: ikev1 | ikev2 + IKEVersions []*IKEVersionsRequestListValue `locationName:"IKEVersion" locationNameList:"item" type:"list"` + + // One or more Diffie-Hellman group numbers that are permitted for the VPN tunnel + // for phase 1 IKE negotiations. + // + // Valid values: 2 | 14 | 15 | 16 | 17 | 18 | 22 | 23 | 24 + Phase1DHGroupNumbers []*Phase1DHGroupNumbersRequestListValue `locationName:"Phase1DHGroupNumber" locationNameList:"item" type:"list"` + + // One or more encryption algorithms that are permitted for the VPN tunnel for + // phase 1 IKE negotiations. + // + // Valid values: AES128 | AES256 + Phase1EncryptionAlgorithms []*Phase1EncryptionAlgorithmsRequestListValue `locationName:"Phase1EncryptionAlgorithm" locationNameList:"item" type:"list"` + + // One or more integrity algorithms that are permitted for the VPN tunnel for + // phase 1 IKE negotiations. + // + // Valid values: SHA1 | SHA2-256 + Phase1IntegrityAlgorithms []*Phase1IntegrityAlgorithmsRequestListValue `locationName:"Phase1IntegrityAlgorithm" locationNameList:"item" type:"list"` + + // The lifetime for phase 1 of the IKE negotiation, in seconds. + // + // Constraints: A value between 900 and 28,800. + // + // Default: 28800 + Phase1LifetimeSeconds *int64 `type:"integer"` + + // One or more Diffie-Hellman group numbers that are permitted for the VPN tunnel + // for phase 2 IKE negotiations. + // + // Valid values: 2 | 5 | 14 | 15 | 16 | 17 | 18 | 22 | 23 | 24 + Phase2DHGroupNumbers []*Phase2DHGroupNumbersRequestListValue `locationName:"Phase2DHGroupNumber" locationNameList:"item" type:"list"` + + // One or more encryption algorithms that are permitted for the VPN tunnel for + // phase 2 IKE negotiations. + // + // Valid values: AES128 | AES256 + Phase2EncryptionAlgorithms []*Phase2EncryptionAlgorithmsRequestListValue `locationName:"Phase2EncryptionAlgorithm" locationNameList:"item" type:"list"` + + // One or more integrity algorithms that are permitted for the VPN tunnel for + // phase 2 IKE negotiations. + // + // Valid values: SHA1 | SHA2-256 + Phase2IntegrityAlgorithms []*Phase2IntegrityAlgorithmsRequestListValue `locationName:"Phase2IntegrityAlgorithm" locationNameList:"item" type:"list"` + + // The lifetime for phase 2 of the IKE negotiation, in seconds. + // + // Constraints: A value between 900 and 3,600. The value must be less than the + // value for Phase1LifetimeSeconds. + // + // Default: 3600 + Phase2LifetimeSeconds *int64 `type:"integer"` + + // The pre-shared key (PSK) to establish initial authentication between the + // virtual private gateway and customer gateway. + // + // Constraints: Allowed characters are alphanumeric characters, periods (.), + // and underscores (_). Must be between 8 and 64 characters in length and cannot + // start with zero (0). + PreSharedKey *string `type:"string"` + + // The percentage of the rekey window (determined by RekeyMarginTimeSeconds) + // during which the rekey time is randomly selected. + // + // Constraints: A value between 0 and 100. + // + // Default: 100 + RekeyFuzzPercentage *int64 `type:"integer"` + + // The margin time, in seconds, before the phase 2 lifetime expires, during + // which the AWS side of the VPN connection performs an IKE rekey. The exact + // time of the rekey is randomly selected based on the value for RekeyFuzzPercentage. + // + // Constraints: A value between 60 and half of Phase2LifetimeSeconds. + // + // Default: 540 + RekeyMarginTimeSeconds *int64 `type:"integer"` + + // The number of packets in an IKE replay window. + // + // Constraints: A value between 64 and 2048. + // + // Default: 1024 + ReplayWindowSize *int64 `type:"integer"` + + // The range of inside IP addresses for the tunnel. Any specified CIDR blocks + // must be unique across all VPN connections that use the same virtual private + // gateway. + // + // Constraints: A size /30 CIDR block from the 169.254.0.0/16 range. The following + // CIDR blocks are reserved and cannot be used: + // + // * 169.254.0.0/30 + // + // * 169.254.1.0/30 + // + // * 169.254.2.0/30 + // + // * 169.254.3.0/30 + // + // * 169.254.4.0/30 + // + // * 169.254.5.0/30 + // + // * 169.254.169.252/30 + TunnelInsideCidr *string `type:"string"` +} + +// String returns the string representation +func (s VpnTunnelOptionsSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VpnTunnelOptionsSpecification) GoString() string { + return s.String() +} + +// SetDPDTimeoutSeconds sets the DPDTimeoutSeconds field's value. +func (s *VpnTunnelOptionsSpecification) SetDPDTimeoutSeconds(v int64) *VpnTunnelOptionsSpecification { + s.DPDTimeoutSeconds = &v + return s +} + +// SetIKEVersions sets the IKEVersions field's value. +func (s *VpnTunnelOptionsSpecification) SetIKEVersions(v []*IKEVersionsRequestListValue) *VpnTunnelOptionsSpecification { + s.IKEVersions = v + return s +} + +// SetPhase1DHGroupNumbers sets the Phase1DHGroupNumbers field's value. +func (s *VpnTunnelOptionsSpecification) SetPhase1DHGroupNumbers(v []*Phase1DHGroupNumbersRequestListValue) *VpnTunnelOptionsSpecification { + s.Phase1DHGroupNumbers = v + return s +} + +// SetPhase1EncryptionAlgorithms sets the Phase1EncryptionAlgorithms field's value. +func (s *VpnTunnelOptionsSpecification) SetPhase1EncryptionAlgorithms(v []*Phase1EncryptionAlgorithmsRequestListValue) *VpnTunnelOptionsSpecification { + s.Phase1EncryptionAlgorithms = v + return s +} + +// SetPhase1IntegrityAlgorithms sets the Phase1IntegrityAlgorithms field's value. +func (s *VpnTunnelOptionsSpecification) SetPhase1IntegrityAlgorithms(v []*Phase1IntegrityAlgorithmsRequestListValue) *VpnTunnelOptionsSpecification { + s.Phase1IntegrityAlgorithms = v + return s +} + +// SetPhase1LifetimeSeconds sets the Phase1LifetimeSeconds field's value. +func (s *VpnTunnelOptionsSpecification) SetPhase1LifetimeSeconds(v int64) *VpnTunnelOptionsSpecification { + s.Phase1LifetimeSeconds = &v + return s +} + +// SetPhase2DHGroupNumbers sets the Phase2DHGroupNumbers field's value. +func (s *VpnTunnelOptionsSpecification) SetPhase2DHGroupNumbers(v []*Phase2DHGroupNumbersRequestListValue) *VpnTunnelOptionsSpecification { + s.Phase2DHGroupNumbers = v + return s +} + +// SetPhase2EncryptionAlgorithms sets the Phase2EncryptionAlgorithms field's value. +func (s *VpnTunnelOptionsSpecification) SetPhase2EncryptionAlgorithms(v []*Phase2EncryptionAlgorithmsRequestListValue) *VpnTunnelOptionsSpecification { + s.Phase2EncryptionAlgorithms = v + return s +} + +// SetPhase2IntegrityAlgorithms sets the Phase2IntegrityAlgorithms field's value. +func (s *VpnTunnelOptionsSpecification) SetPhase2IntegrityAlgorithms(v []*Phase2IntegrityAlgorithmsRequestListValue) *VpnTunnelOptionsSpecification { + s.Phase2IntegrityAlgorithms = v + return s +} + +// SetPhase2LifetimeSeconds sets the Phase2LifetimeSeconds field's value. +func (s *VpnTunnelOptionsSpecification) SetPhase2LifetimeSeconds(v int64) *VpnTunnelOptionsSpecification { + s.Phase2LifetimeSeconds = &v + return s +} + +// SetPreSharedKey sets the PreSharedKey field's value. +func (s *VpnTunnelOptionsSpecification) SetPreSharedKey(v string) *VpnTunnelOptionsSpecification { + s.PreSharedKey = &v + return s +} + +// SetRekeyFuzzPercentage sets the RekeyFuzzPercentage field's value. +func (s *VpnTunnelOptionsSpecification) SetRekeyFuzzPercentage(v int64) *VpnTunnelOptionsSpecification { + s.RekeyFuzzPercentage = &v + return s +} + +// SetRekeyMarginTimeSeconds sets the RekeyMarginTimeSeconds field's value. +func (s *VpnTunnelOptionsSpecification) SetRekeyMarginTimeSeconds(v int64) *VpnTunnelOptionsSpecification { + s.RekeyMarginTimeSeconds = &v + return s +} + +// SetReplayWindowSize sets the ReplayWindowSize field's value. +func (s *VpnTunnelOptionsSpecification) SetReplayWindowSize(v int64) *VpnTunnelOptionsSpecification { + s.ReplayWindowSize = &v + return s +} + +// SetTunnelInsideCidr sets the TunnelInsideCidr field's value. +func (s *VpnTunnelOptionsSpecification) SetTunnelInsideCidr(v string) *VpnTunnelOptionsSpecification { + s.TunnelInsideCidr = &v + return s +} + +type WithdrawByoipCidrInput struct { + _ struct{} `type:"structure"` + + // The public IPv4 address range, in CIDR notation. + // + // Cidr is a required field + Cidr *string `type:"string" required:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s WithdrawByoipCidrInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s WithdrawByoipCidrInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *WithdrawByoipCidrInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "WithdrawByoipCidrInput"} + if s.Cidr == nil { + invalidParams.Add(request.NewErrParamRequired("Cidr")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCidr sets the Cidr field's value. +func (s *WithdrawByoipCidrInput) SetCidr(v string) *WithdrawByoipCidrInput { + s.Cidr = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *WithdrawByoipCidrInput) SetDryRun(v bool) *WithdrawByoipCidrInput { + s.DryRun = &v + return s +} + +type WithdrawByoipCidrOutput struct { + _ struct{} `type:"structure"` + + // Information about the address pool. + ByoipCidr *ByoipCidr `locationName:"byoipCidr" type:"structure"` +} + +// String returns the string representation +func (s WithdrawByoipCidrOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s WithdrawByoipCidrOutput) GoString() string { + return s.String() +} + +// SetByoipCidr sets the ByoipCidr field's value. +func (s *WithdrawByoipCidrOutput) SetByoipCidr(v *ByoipCidr) *WithdrawByoipCidrOutput { + s.ByoipCidr = v + return s +} + +const ( + // AccountAttributeNameSupportedPlatforms is a AccountAttributeName enum value + AccountAttributeNameSupportedPlatforms = "supported-platforms" + + // AccountAttributeNameDefaultVpc is a AccountAttributeName enum value + AccountAttributeNameDefaultVpc = "default-vpc" +) + +const ( + // ActivityStatusError is a ActivityStatus enum value + ActivityStatusError = "error" + + // ActivityStatusPendingFulfillment is a ActivityStatus enum value + ActivityStatusPendingFulfillment = "pending_fulfillment" + + // ActivityStatusPendingTermination is a ActivityStatus enum value + ActivityStatusPendingTermination = "pending_termination" + + // ActivityStatusFulfilled is a ActivityStatus enum value + ActivityStatusFulfilled = "fulfilled" +) + +const ( + // AffinityDefault is a Affinity enum value + AffinityDefault = "default" + + // AffinityHost is a Affinity enum value + AffinityHost = "host" +) + +const ( + // AllocationStateAvailable is a AllocationState enum value + AllocationStateAvailable = "available" + + // AllocationStateUnderAssessment is a AllocationState enum value + AllocationStateUnderAssessment = "under-assessment" + + // AllocationStatePermanentFailure is a AllocationState enum value + AllocationStatePermanentFailure = "permanent-failure" + + // AllocationStateReleased is a AllocationState enum value + AllocationStateReleased = "released" + + // AllocationStateReleasedPermanentFailure is a AllocationState enum value + AllocationStateReleasedPermanentFailure = "released-permanent-failure" + + // AllocationStatePending is a AllocationState enum value + AllocationStatePending = "pending" +) + +const ( + // AllocationStrategyLowestPrice is a AllocationStrategy enum value + AllocationStrategyLowestPrice = "lowestPrice" + + // AllocationStrategyDiversified is a AllocationStrategy enum value + AllocationStrategyDiversified = "diversified" + + // AllocationStrategyCapacityOptimized is a AllocationStrategy enum value + AllocationStrategyCapacityOptimized = "capacityOptimized" +) + +const ( + // ArchitectureValuesI386 is a ArchitectureValues enum value + ArchitectureValuesI386 = "i386" + + // ArchitectureValuesX8664 is a ArchitectureValues enum value + ArchitectureValuesX8664 = "x86_64" + + // ArchitectureValuesArm64 is a ArchitectureValues enum value + ArchitectureValuesArm64 = "arm64" +) + +const ( + // AssociatedNetworkTypeVpc is a AssociatedNetworkType enum value + AssociatedNetworkTypeVpc = "vpc" +) + +const ( + // AssociationStatusCodeAssociating is a AssociationStatusCode enum value + AssociationStatusCodeAssociating = "associating" + + // AssociationStatusCodeAssociated is a AssociationStatusCode enum value + AssociationStatusCodeAssociated = "associated" + + // AssociationStatusCodeAssociationFailed is a AssociationStatusCode enum value + AssociationStatusCodeAssociationFailed = "association-failed" + + // AssociationStatusCodeDisassociating is a AssociationStatusCode enum value + AssociationStatusCodeDisassociating = "disassociating" + + // AssociationStatusCodeDisassociated is a AssociationStatusCode enum value + AssociationStatusCodeDisassociated = "disassociated" +) + +const ( + // AttachmentStatusAttaching is a AttachmentStatus enum value + AttachmentStatusAttaching = "attaching" + + // AttachmentStatusAttached is a AttachmentStatus enum value + AttachmentStatusAttached = "attached" + + // AttachmentStatusDetaching is a AttachmentStatus enum value + AttachmentStatusDetaching = "detaching" + + // AttachmentStatusDetached is a AttachmentStatus enum value + AttachmentStatusDetached = "detached" +) + +const ( + // AutoAcceptSharedAttachmentsValueEnable is a AutoAcceptSharedAttachmentsValue enum value + AutoAcceptSharedAttachmentsValueEnable = "enable" + + // AutoAcceptSharedAttachmentsValueDisable is a AutoAcceptSharedAttachmentsValue enum value + AutoAcceptSharedAttachmentsValueDisable = "disable" +) + +const ( + // AutoPlacementOn is a AutoPlacement enum value + AutoPlacementOn = "on" + + // AutoPlacementOff is a AutoPlacement enum value + AutoPlacementOff = "off" +) + +const ( + // AvailabilityZoneStateAvailable is a AvailabilityZoneState enum value + AvailabilityZoneStateAvailable = "available" + + // AvailabilityZoneStateInformation is a AvailabilityZoneState enum value + AvailabilityZoneStateInformation = "information" + + // AvailabilityZoneStateImpaired is a AvailabilityZoneState enum value + AvailabilityZoneStateImpaired = "impaired" + + // AvailabilityZoneStateUnavailable is a AvailabilityZoneState enum value + AvailabilityZoneStateUnavailable = "unavailable" +) + +const ( + // BatchStateSubmitted is a BatchState enum value + BatchStateSubmitted = "submitted" + + // BatchStateActive is a BatchState enum value + BatchStateActive = "active" + + // BatchStateCancelled is a BatchState enum value + BatchStateCancelled = "cancelled" + + // BatchStateFailed is a BatchState enum value + BatchStateFailed = "failed" + + // BatchStateCancelledRunning is a BatchState enum value + BatchStateCancelledRunning = "cancelled_running" + + // BatchStateCancelledTerminating is a BatchState enum value + BatchStateCancelledTerminating = "cancelled_terminating" + + // BatchStateModifying is a BatchState enum value + BatchStateModifying = "modifying" +) + +const ( + // BundleTaskStatePending is a BundleTaskState enum value + BundleTaskStatePending = "pending" + + // BundleTaskStateWaitingForShutdown is a BundleTaskState enum value + BundleTaskStateWaitingForShutdown = "waiting-for-shutdown" + + // BundleTaskStateBundling is a BundleTaskState enum value + BundleTaskStateBundling = "bundling" + + // BundleTaskStateStoring is a BundleTaskState enum value + BundleTaskStateStoring = "storing" + + // BundleTaskStateCancelling is a BundleTaskState enum value + BundleTaskStateCancelling = "cancelling" + + // BundleTaskStateComplete is a BundleTaskState enum value + BundleTaskStateComplete = "complete" + + // BundleTaskStateFailed is a BundleTaskState enum value + BundleTaskStateFailed = "failed" +) + +const ( + // ByoipCidrStateAdvertised is a ByoipCidrState enum value + ByoipCidrStateAdvertised = "advertised" + + // ByoipCidrStateDeprovisioned is a ByoipCidrState enum value + ByoipCidrStateDeprovisioned = "deprovisioned" + + // ByoipCidrStateFailedDeprovision is a ByoipCidrState enum value + ByoipCidrStateFailedDeprovision = "failed-deprovision" + + // ByoipCidrStateFailedProvision is a ByoipCidrState enum value + ByoipCidrStateFailedProvision = "failed-provision" + + // ByoipCidrStatePendingDeprovision is a ByoipCidrState enum value + ByoipCidrStatePendingDeprovision = "pending-deprovision" + + // ByoipCidrStatePendingProvision is a ByoipCidrState enum value + ByoipCidrStatePendingProvision = "pending-provision" + + // ByoipCidrStateProvisioned is a ByoipCidrState enum value + ByoipCidrStateProvisioned = "provisioned" +) + +const ( + // CancelBatchErrorCodeFleetRequestIdDoesNotExist is a CancelBatchErrorCode enum value + CancelBatchErrorCodeFleetRequestIdDoesNotExist = "fleetRequestIdDoesNotExist" + + // CancelBatchErrorCodeFleetRequestIdMalformed is a CancelBatchErrorCode enum value + CancelBatchErrorCodeFleetRequestIdMalformed = "fleetRequestIdMalformed" + + // CancelBatchErrorCodeFleetRequestNotInCancellableState is a CancelBatchErrorCode enum value + CancelBatchErrorCodeFleetRequestNotInCancellableState = "fleetRequestNotInCancellableState" + + // CancelBatchErrorCodeUnexpectedError is a CancelBatchErrorCode enum value + CancelBatchErrorCodeUnexpectedError = "unexpectedError" +) + +const ( + // CancelSpotInstanceRequestStateActive is a CancelSpotInstanceRequestState enum value + CancelSpotInstanceRequestStateActive = "active" + + // CancelSpotInstanceRequestStateOpen is a CancelSpotInstanceRequestState enum value + CancelSpotInstanceRequestStateOpen = "open" + + // CancelSpotInstanceRequestStateClosed is a CancelSpotInstanceRequestState enum value + CancelSpotInstanceRequestStateClosed = "closed" + + // CancelSpotInstanceRequestStateCancelled is a CancelSpotInstanceRequestState enum value + CancelSpotInstanceRequestStateCancelled = "cancelled" + + // CancelSpotInstanceRequestStateCompleted is a CancelSpotInstanceRequestState enum value + CancelSpotInstanceRequestStateCompleted = "completed" +) + +const ( + // CapacityReservationInstancePlatformLinuxUnix is a CapacityReservationInstancePlatform enum value + CapacityReservationInstancePlatformLinuxUnix = "Linux/UNIX" + + // CapacityReservationInstancePlatformRedHatEnterpriseLinux is a CapacityReservationInstancePlatform enum value + CapacityReservationInstancePlatformRedHatEnterpriseLinux = "Red Hat Enterprise Linux" + + // CapacityReservationInstancePlatformSuselinux is a CapacityReservationInstancePlatform enum value + CapacityReservationInstancePlatformSuselinux = "SUSE Linux" + + // CapacityReservationInstancePlatformWindows is a CapacityReservationInstancePlatform enum value + CapacityReservationInstancePlatformWindows = "Windows" + + // CapacityReservationInstancePlatformWindowswithSqlserver is a CapacityReservationInstancePlatform enum value + CapacityReservationInstancePlatformWindowswithSqlserver = "Windows with SQL Server" + + // CapacityReservationInstancePlatformWindowswithSqlserverEnterprise is a CapacityReservationInstancePlatform enum value + CapacityReservationInstancePlatformWindowswithSqlserverEnterprise = "Windows with SQL Server Enterprise" + + // CapacityReservationInstancePlatformWindowswithSqlserverStandard is a CapacityReservationInstancePlatform enum value + CapacityReservationInstancePlatformWindowswithSqlserverStandard = "Windows with SQL Server Standard" + + // CapacityReservationInstancePlatformWindowswithSqlserverWeb is a CapacityReservationInstancePlatform enum value + CapacityReservationInstancePlatformWindowswithSqlserverWeb = "Windows with SQL Server Web" + + // CapacityReservationInstancePlatformLinuxwithSqlserverStandard is a CapacityReservationInstancePlatform enum value + CapacityReservationInstancePlatformLinuxwithSqlserverStandard = "Linux with SQL Server Standard" + + // CapacityReservationInstancePlatformLinuxwithSqlserverWeb is a CapacityReservationInstancePlatform enum value + CapacityReservationInstancePlatformLinuxwithSqlserverWeb = "Linux with SQL Server Web" + + // CapacityReservationInstancePlatformLinuxwithSqlserverEnterprise is a CapacityReservationInstancePlatform enum value + CapacityReservationInstancePlatformLinuxwithSqlserverEnterprise = "Linux with SQL Server Enterprise" +) + +const ( + // CapacityReservationPreferenceOpen is a CapacityReservationPreference enum value + CapacityReservationPreferenceOpen = "open" + + // CapacityReservationPreferenceNone is a CapacityReservationPreference enum value + CapacityReservationPreferenceNone = "none" +) + +const ( + // CapacityReservationStateActive is a CapacityReservationState enum value + CapacityReservationStateActive = "active" + + // CapacityReservationStateExpired is a CapacityReservationState enum value + CapacityReservationStateExpired = "expired" + + // CapacityReservationStateCancelled is a CapacityReservationState enum value + CapacityReservationStateCancelled = "cancelled" + + // CapacityReservationStatePending is a CapacityReservationState enum value + CapacityReservationStatePending = "pending" + + // CapacityReservationStateFailed is a CapacityReservationState enum value + CapacityReservationStateFailed = "failed" +) + +const ( + // CapacityReservationTenancyDefault is a CapacityReservationTenancy enum value + CapacityReservationTenancyDefault = "default" + + // CapacityReservationTenancyDedicated is a CapacityReservationTenancy enum value + CapacityReservationTenancyDedicated = "dedicated" +) + +const ( + // ClientCertificateRevocationListStatusCodePending is a ClientCertificateRevocationListStatusCode enum value + ClientCertificateRevocationListStatusCodePending = "pending" + + // ClientCertificateRevocationListStatusCodeActive is a ClientCertificateRevocationListStatusCode enum value + ClientCertificateRevocationListStatusCodeActive = "active" +) + +const ( + // ClientVpnAuthenticationTypeCertificateAuthentication is a ClientVpnAuthenticationType enum value + ClientVpnAuthenticationTypeCertificateAuthentication = "certificate-authentication" + + // ClientVpnAuthenticationTypeDirectoryServiceAuthentication is a ClientVpnAuthenticationType enum value + ClientVpnAuthenticationTypeDirectoryServiceAuthentication = "directory-service-authentication" +) + +const ( + // ClientVpnAuthorizationRuleStatusCodeAuthorizing is a ClientVpnAuthorizationRuleStatusCode enum value + ClientVpnAuthorizationRuleStatusCodeAuthorizing = "authorizing" + + // ClientVpnAuthorizationRuleStatusCodeActive is a ClientVpnAuthorizationRuleStatusCode enum value + ClientVpnAuthorizationRuleStatusCodeActive = "active" + + // ClientVpnAuthorizationRuleStatusCodeFailed is a ClientVpnAuthorizationRuleStatusCode enum value + ClientVpnAuthorizationRuleStatusCodeFailed = "failed" + + // ClientVpnAuthorizationRuleStatusCodeRevoking is a ClientVpnAuthorizationRuleStatusCode enum value + ClientVpnAuthorizationRuleStatusCodeRevoking = "revoking" +) + +const ( + // ClientVpnConnectionStatusCodeActive is a ClientVpnConnectionStatusCode enum value + ClientVpnConnectionStatusCodeActive = "active" + + // ClientVpnConnectionStatusCodeFailedToTerminate is a ClientVpnConnectionStatusCode enum value + ClientVpnConnectionStatusCodeFailedToTerminate = "failed-to-terminate" + + // ClientVpnConnectionStatusCodeTerminating is a ClientVpnConnectionStatusCode enum value + ClientVpnConnectionStatusCodeTerminating = "terminating" + + // ClientVpnConnectionStatusCodeTerminated is a ClientVpnConnectionStatusCode enum value + ClientVpnConnectionStatusCodeTerminated = "terminated" +) + +const ( + // ClientVpnEndpointStatusCodePendingAssociate is a ClientVpnEndpointStatusCode enum value + ClientVpnEndpointStatusCodePendingAssociate = "pending-associate" + + // ClientVpnEndpointStatusCodeAvailable is a ClientVpnEndpointStatusCode enum value + ClientVpnEndpointStatusCodeAvailable = "available" + + // ClientVpnEndpointStatusCodeDeleting is a ClientVpnEndpointStatusCode enum value + ClientVpnEndpointStatusCodeDeleting = "deleting" + + // ClientVpnEndpointStatusCodeDeleted is a ClientVpnEndpointStatusCode enum value + ClientVpnEndpointStatusCodeDeleted = "deleted" +) + +const ( + // ClientVpnRouteStatusCodeCreating is a ClientVpnRouteStatusCode enum value + ClientVpnRouteStatusCodeCreating = "creating" + + // ClientVpnRouteStatusCodeActive is a ClientVpnRouteStatusCode enum value + ClientVpnRouteStatusCodeActive = "active" + + // ClientVpnRouteStatusCodeFailed is a ClientVpnRouteStatusCode enum value + ClientVpnRouteStatusCodeFailed = "failed" + + // ClientVpnRouteStatusCodeDeleting is a ClientVpnRouteStatusCode enum value + ClientVpnRouteStatusCodeDeleting = "deleting" +) + +const ( + // ConnectionNotificationStateEnabled is a ConnectionNotificationState enum value + ConnectionNotificationStateEnabled = "Enabled" + + // ConnectionNotificationStateDisabled is a ConnectionNotificationState enum value + ConnectionNotificationStateDisabled = "Disabled" +) + +const ( + // ConnectionNotificationTypeTopic is a ConnectionNotificationType enum value + ConnectionNotificationTypeTopic = "Topic" +) + +const ( + // ContainerFormatOva is a ContainerFormat enum value + ContainerFormatOva = "ova" +) + +const ( + // ConversionTaskStateActive is a ConversionTaskState enum value + ConversionTaskStateActive = "active" + + // ConversionTaskStateCancelling is a ConversionTaskState enum value + ConversionTaskStateCancelling = "cancelling" + + // ConversionTaskStateCancelled is a ConversionTaskState enum value + ConversionTaskStateCancelled = "cancelled" + + // ConversionTaskStateCompleted is a ConversionTaskState enum value + ConversionTaskStateCompleted = "completed" +) + +const ( + // CopyTagsFromSourceVolume is a CopyTagsFromSource enum value + CopyTagsFromSourceVolume = "volume" +) + +const ( + // CurrencyCodeValuesUsd is a CurrencyCodeValues enum value + CurrencyCodeValuesUsd = "USD" +) + +const ( + // DatafeedSubscriptionStateActive is a DatafeedSubscriptionState enum value + DatafeedSubscriptionStateActive = "Active" + + // DatafeedSubscriptionStateInactive is a DatafeedSubscriptionState enum value + DatafeedSubscriptionStateInactive = "Inactive" +) + +const ( + // DefaultRouteTableAssociationValueEnable is a DefaultRouteTableAssociationValue enum value + DefaultRouteTableAssociationValueEnable = "enable" + + // DefaultRouteTableAssociationValueDisable is a DefaultRouteTableAssociationValue enum value + DefaultRouteTableAssociationValueDisable = "disable" +) + +const ( + // DefaultRouteTablePropagationValueEnable is a DefaultRouteTablePropagationValue enum value + DefaultRouteTablePropagationValueEnable = "enable" + + // DefaultRouteTablePropagationValueDisable is a DefaultRouteTablePropagationValue enum value + DefaultRouteTablePropagationValueDisable = "disable" +) + +const ( + // DefaultTargetCapacityTypeSpot is a DefaultTargetCapacityType enum value + DefaultTargetCapacityTypeSpot = "spot" + + // DefaultTargetCapacityTypeOnDemand is a DefaultTargetCapacityType enum value + DefaultTargetCapacityTypeOnDemand = "on-demand" +) + +const ( + // DeleteFleetErrorCodeFleetIdDoesNotExist is a DeleteFleetErrorCode enum value + DeleteFleetErrorCodeFleetIdDoesNotExist = "fleetIdDoesNotExist" + + // DeleteFleetErrorCodeFleetIdMalformed is a DeleteFleetErrorCode enum value + DeleteFleetErrorCodeFleetIdMalformed = "fleetIdMalformed" + + // DeleteFleetErrorCodeFleetNotInDeletableState is a DeleteFleetErrorCode enum value + DeleteFleetErrorCodeFleetNotInDeletableState = "fleetNotInDeletableState" + + // DeleteFleetErrorCodeUnexpectedError is a DeleteFleetErrorCode enum value + DeleteFleetErrorCodeUnexpectedError = "unexpectedError" +) + +const ( + // DeleteQueuedReservedInstancesErrorCodeReservedInstancesIdInvalid is a DeleteQueuedReservedInstancesErrorCode enum value + DeleteQueuedReservedInstancesErrorCodeReservedInstancesIdInvalid = "reserved-instances-id-invalid" + + // DeleteQueuedReservedInstancesErrorCodeReservedInstancesNotInQueuedState is a DeleteQueuedReservedInstancesErrorCode enum value + DeleteQueuedReservedInstancesErrorCodeReservedInstancesNotInQueuedState = "reserved-instances-not-in-queued-state" + + // DeleteQueuedReservedInstancesErrorCodeUnexpectedError is a DeleteQueuedReservedInstancesErrorCode enum value + DeleteQueuedReservedInstancesErrorCodeUnexpectedError = "unexpected-error" +) + +const ( + // DeviceTypeEbs is a DeviceType enum value + DeviceTypeEbs = "ebs" + + // DeviceTypeInstanceStore is a DeviceType enum value + DeviceTypeInstanceStore = "instance-store" +) + +const ( + // DiskImageFormatVmdk is a DiskImageFormat enum value + DiskImageFormatVmdk = "VMDK" + + // DiskImageFormatRaw is a DiskImageFormat enum value + DiskImageFormatRaw = "RAW" + + // DiskImageFormatVhd is a DiskImageFormat enum value + DiskImageFormatVhd = "VHD" +) + +const ( + // DnsSupportValueEnable is a DnsSupportValue enum value + DnsSupportValueEnable = "enable" + + // DnsSupportValueDisable is a DnsSupportValue enum value + DnsSupportValueDisable = "disable" +) + +const ( + // DomainTypeVpc is a DomainType enum value + DomainTypeVpc = "vpc" + + // DomainTypeStandard is a DomainType enum value + DomainTypeStandard = "standard" +) + +const ( + // ElasticGpuStateAttached is a ElasticGpuState enum value + ElasticGpuStateAttached = "ATTACHED" +) + +const ( + // ElasticGpuStatusOk is a ElasticGpuStatus enum value + ElasticGpuStatusOk = "OK" + + // ElasticGpuStatusImpaired is a ElasticGpuStatus enum value + ElasticGpuStatusImpaired = "IMPAIRED" +) + +const ( + // EndDateTypeUnlimited is a EndDateType enum value + EndDateTypeUnlimited = "unlimited" + + // EndDateTypeLimited is a EndDateType enum value + EndDateTypeLimited = "limited" +) + +const ( + // EventCodeInstanceReboot is a EventCode enum value + EventCodeInstanceReboot = "instance-reboot" + + // EventCodeSystemReboot is a EventCode enum value + EventCodeSystemReboot = "system-reboot" + + // EventCodeSystemMaintenance is a EventCode enum value + EventCodeSystemMaintenance = "system-maintenance" + + // EventCodeInstanceRetirement is a EventCode enum value + EventCodeInstanceRetirement = "instance-retirement" + + // EventCodeInstanceStop is a EventCode enum value + EventCodeInstanceStop = "instance-stop" +) + +const ( + // EventTypeInstanceChange is a EventType enum value + EventTypeInstanceChange = "instanceChange" + + // EventTypeFleetRequestChange is a EventType enum value + EventTypeFleetRequestChange = "fleetRequestChange" + + // EventTypeError is a EventType enum value + EventTypeError = "error" + + // EventTypeInformation is a EventType enum value + EventTypeInformation = "information" +) + +const ( + // ExcessCapacityTerminationPolicyNoTermination is a ExcessCapacityTerminationPolicy enum value + ExcessCapacityTerminationPolicyNoTermination = "noTermination" + + // ExcessCapacityTerminationPolicyDefault is a ExcessCapacityTerminationPolicy enum value + ExcessCapacityTerminationPolicyDefault = "default" +) + +const ( + // ExportEnvironmentCitrix is a ExportEnvironment enum value + ExportEnvironmentCitrix = "citrix" + + // ExportEnvironmentVmware is a ExportEnvironment enum value + ExportEnvironmentVmware = "vmware" + + // ExportEnvironmentMicrosoft is a ExportEnvironment enum value + ExportEnvironmentMicrosoft = "microsoft" +) + +const ( + // ExportTaskStateActive is a ExportTaskState enum value + ExportTaskStateActive = "active" + + // ExportTaskStateCancelling is a ExportTaskState enum value + ExportTaskStateCancelling = "cancelling" + + // ExportTaskStateCancelled is a ExportTaskState enum value + ExportTaskStateCancelled = "cancelled" + + // ExportTaskStateCompleted is a ExportTaskState enum value + ExportTaskStateCompleted = "completed" +) + +const ( + // FleetActivityStatusError is a FleetActivityStatus enum value + FleetActivityStatusError = "error" + + // FleetActivityStatusPendingFulfillment is a FleetActivityStatus enum value + FleetActivityStatusPendingFulfillment = "pending_fulfillment" + + // FleetActivityStatusPendingTermination is a FleetActivityStatus enum value + FleetActivityStatusPendingTermination = "pending_termination" + + // FleetActivityStatusFulfilled is a FleetActivityStatus enum value + FleetActivityStatusFulfilled = "fulfilled" +) + +const ( + // FleetEventTypeInstanceChange is a FleetEventType enum value + FleetEventTypeInstanceChange = "instance-change" + + // FleetEventTypeFleetChange is a FleetEventType enum value + FleetEventTypeFleetChange = "fleet-change" + + // FleetEventTypeServiceError is a FleetEventType enum value + FleetEventTypeServiceError = "service-error" +) + +const ( + // FleetExcessCapacityTerminationPolicyNoTermination is a FleetExcessCapacityTerminationPolicy enum value + FleetExcessCapacityTerminationPolicyNoTermination = "no-termination" + + // FleetExcessCapacityTerminationPolicyTermination is a FleetExcessCapacityTerminationPolicy enum value + FleetExcessCapacityTerminationPolicyTermination = "termination" +) + +const ( + // FleetOnDemandAllocationStrategyLowestPrice is a FleetOnDemandAllocationStrategy enum value + FleetOnDemandAllocationStrategyLowestPrice = "lowest-price" + + // FleetOnDemandAllocationStrategyPrioritized is a FleetOnDemandAllocationStrategy enum value + FleetOnDemandAllocationStrategyPrioritized = "prioritized" +) + +const ( + // FleetStateCodeSubmitted is a FleetStateCode enum value + FleetStateCodeSubmitted = "submitted" + + // FleetStateCodeActive is a FleetStateCode enum value + FleetStateCodeActive = "active" + + // FleetStateCodeDeleted is a FleetStateCode enum value + FleetStateCodeDeleted = "deleted" + + // FleetStateCodeFailed is a FleetStateCode enum value + FleetStateCodeFailed = "failed" + + // FleetStateCodeDeletedRunning is a FleetStateCode enum value + FleetStateCodeDeletedRunning = "deleted_running" + + // FleetStateCodeDeletedTerminating is a FleetStateCode enum value + FleetStateCodeDeletedTerminating = "deleted_terminating" + + // FleetStateCodeModifying is a FleetStateCode enum value + FleetStateCodeModifying = "modifying" +) + +const ( + // FleetTypeRequest is a FleetType enum value + FleetTypeRequest = "request" + + // FleetTypeMaintain is a FleetType enum value + FleetTypeMaintain = "maintain" + + // FleetTypeInstant is a FleetType enum value + FleetTypeInstant = "instant" +) + +const ( + // FlowLogsResourceTypeVpc is a FlowLogsResourceType enum value + FlowLogsResourceTypeVpc = "VPC" + + // FlowLogsResourceTypeSubnet is a FlowLogsResourceType enum value + FlowLogsResourceTypeSubnet = "Subnet" + + // FlowLogsResourceTypeNetworkInterface is a FlowLogsResourceType enum value + FlowLogsResourceTypeNetworkInterface = "NetworkInterface" +) + +const ( + // FpgaImageAttributeNameDescription is a FpgaImageAttributeName enum value + FpgaImageAttributeNameDescription = "description" + + // FpgaImageAttributeNameName is a FpgaImageAttributeName enum value + FpgaImageAttributeNameName = "name" + + // FpgaImageAttributeNameLoadPermission is a FpgaImageAttributeName enum value + FpgaImageAttributeNameLoadPermission = "loadPermission" + + // FpgaImageAttributeNameProductCodes is a FpgaImageAttributeName enum value + FpgaImageAttributeNameProductCodes = "productCodes" +) + +const ( + // FpgaImageStateCodePending is a FpgaImageStateCode enum value + FpgaImageStateCodePending = "pending" + + // FpgaImageStateCodeFailed is a FpgaImageStateCode enum value + FpgaImageStateCodeFailed = "failed" + + // FpgaImageStateCodeAvailable is a FpgaImageStateCode enum value + FpgaImageStateCodeAvailable = "available" + + // FpgaImageStateCodeUnavailable is a FpgaImageStateCode enum value + FpgaImageStateCodeUnavailable = "unavailable" +) + +const ( + // GatewayTypeIpsec1 is a GatewayType enum value + GatewayTypeIpsec1 = "ipsec.1" +) + +const ( + // HostRecoveryOn is a HostRecovery enum value + HostRecoveryOn = "on" + + // HostRecoveryOff is a HostRecovery enum value + HostRecoveryOff = "off" +) + +const ( + // HostTenancyDedicated is a HostTenancy enum value + HostTenancyDedicated = "dedicated" + + // HostTenancyHost is a HostTenancy enum value + HostTenancyHost = "host" +) + +const ( + // HypervisorTypeOvm is a HypervisorType enum value + HypervisorTypeOvm = "ovm" + + // HypervisorTypeXen is a HypervisorType enum value + HypervisorTypeXen = "xen" +) + +const ( + // IamInstanceProfileAssociationStateAssociating is a IamInstanceProfileAssociationState enum value + IamInstanceProfileAssociationStateAssociating = "associating" + + // IamInstanceProfileAssociationStateAssociated is a IamInstanceProfileAssociationState enum value + IamInstanceProfileAssociationStateAssociated = "associated" + + // IamInstanceProfileAssociationStateDisassociating is a IamInstanceProfileAssociationState enum value + IamInstanceProfileAssociationStateDisassociating = "disassociating" + + // IamInstanceProfileAssociationStateDisassociated is a IamInstanceProfileAssociationState enum value + IamInstanceProfileAssociationStateDisassociated = "disassociated" +) + +const ( + // ImageAttributeNameDescription is a ImageAttributeName enum value + ImageAttributeNameDescription = "description" + + // ImageAttributeNameKernel is a ImageAttributeName enum value + ImageAttributeNameKernel = "kernel" + + // ImageAttributeNameRamdisk is a ImageAttributeName enum value + ImageAttributeNameRamdisk = "ramdisk" + + // ImageAttributeNameLaunchPermission is a ImageAttributeName enum value + ImageAttributeNameLaunchPermission = "launchPermission" + + // ImageAttributeNameProductCodes is a ImageAttributeName enum value + ImageAttributeNameProductCodes = "productCodes" + + // ImageAttributeNameBlockDeviceMapping is a ImageAttributeName enum value + ImageAttributeNameBlockDeviceMapping = "blockDeviceMapping" + + // ImageAttributeNameSriovNetSupport is a ImageAttributeName enum value + ImageAttributeNameSriovNetSupport = "sriovNetSupport" +) + +const ( + // ImageStatePending is a ImageState enum value + ImageStatePending = "pending" + + // ImageStateAvailable is a ImageState enum value + ImageStateAvailable = "available" + + // ImageStateInvalid is a ImageState enum value + ImageStateInvalid = "invalid" + + // ImageStateDeregistered is a ImageState enum value + ImageStateDeregistered = "deregistered" + + // ImageStateTransient is a ImageState enum value + ImageStateTransient = "transient" + + // ImageStateFailed is a ImageState enum value + ImageStateFailed = "failed" + + // ImageStateError is a ImageState enum value + ImageStateError = "error" +) + +const ( + // ImageTypeValuesMachine is a ImageTypeValues enum value + ImageTypeValuesMachine = "machine" + + // ImageTypeValuesKernel is a ImageTypeValues enum value + ImageTypeValuesKernel = "kernel" + + // ImageTypeValuesRamdisk is a ImageTypeValues enum value + ImageTypeValuesRamdisk = "ramdisk" +) + +const ( + // InstanceAttributeNameInstanceType is a InstanceAttributeName enum value + InstanceAttributeNameInstanceType = "instanceType" + + // InstanceAttributeNameKernel is a InstanceAttributeName enum value + InstanceAttributeNameKernel = "kernel" + + // InstanceAttributeNameRamdisk is a InstanceAttributeName enum value + InstanceAttributeNameRamdisk = "ramdisk" + + // InstanceAttributeNameUserData is a InstanceAttributeName enum value + InstanceAttributeNameUserData = "userData" + + // InstanceAttributeNameDisableApiTermination is a InstanceAttributeName enum value + InstanceAttributeNameDisableApiTermination = "disableApiTermination" + + // InstanceAttributeNameInstanceInitiatedShutdownBehavior is a InstanceAttributeName enum value + InstanceAttributeNameInstanceInitiatedShutdownBehavior = "instanceInitiatedShutdownBehavior" + + // InstanceAttributeNameRootDeviceName is a InstanceAttributeName enum value + InstanceAttributeNameRootDeviceName = "rootDeviceName" + + // InstanceAttributeNameBlockDeviceMapping is a InstanceAttributeName enum value + InstanceAttributeNameBlockDeviceMapping = "blockDeviceMapping" + + // InstanceAttributeNameProductCodes is a InstanceAttributeName enum value + InstanceAttributeNameProductCodes = "productCodes" + + // InstanceAttributeNameSourceDestCheck is a InstanceAttributeName enum value + InstanceAttributeNameSourceDestCheck = "sourceDestCheck" + + // InstanceAttributeNameGroupSet is a InstanceAttributeName enum value + InstanceAttributeNameGroupSet = "groupSet" + + // InstanceAttributeNameEbsOptimized is a InstanceAttributeName enum value + InstanceAttributeNameEbsOptimized = "ebsOptimized" + + // InstanceAttributeNameSriovNetSupport is a InstanceAttributeName enum value + InstanceAttributeNameSriovNetSupport = "sriovNetSupport" + + // InstanceAttributeNameEnaSupport is a InstanceAttributeName enum value + InstanceAttributeNameEnaSupport = "enaSupport" +) + +const ( + // InstanceHealthStatusHealthy is a InstanceHealthStatus enum value + InstanceHealthStatusHealthy = "healthy" + + // InstanceHealthStatusUnhealthy is a InstanceHealthStatus enum value + InstanceHealthStatusUnhealthy = "unhealthy" +) + +const ( + // InstanceInterruptionBehaviorHibernate is a InstanceInterruptionBehavior enum value + InstanceInterruptionBehaviorHibernate = "hibernate" + + // InstanceInterruptionBehaviorStop is a InstanceInterruptionBehavior enum value + InstanceInterruptionBehaviorStop = "stop" + + // InstanceInterruptionBehaviorTerminate is a InstanceInterruptionBehavior enum value + InstanceInterruptionBehaviorTerminate = "terminate" +) + +const ( + // InstanceLifecycleSpot is a InstanceLifecycle enum value + InstanceLifecycleSpot = "spot" + + // InstanceLifecycleOnDemand is a InstanceLifecycle enum value + InstanceLifecycleOnDemand = "on-demand" +) + +const ( + // InstanceLifecycleTypeSpot is a InstanceLifecycleType enum value + InstanceLifecycleTypeSpot = "spot" + + // InstanceLifecycleTypeScheduled is a InstanceLifecycleType enum value + InstanceLifecycleTypeScheduled = "scheduled" +) + +const ( + // InstanceMatchCriteriaOpen is a InstanceMatchCriteria enum value + InstanceMatchCriteriaOpen = "open" + + // InstanceMatchCriteriaTargeted is a InstanceMatchCriteria enum value + InstanceMatchCriteriaTargeted = "targeted" +) + +const ( + // InstanceStateNamePending is a InstanceStateName enum value + InstanceStateNamePending = "pending" + + // InstanceStateNameRunning is a InstanceStateName enum value + InstanceStateNameRunning = "running" + + // InstanceStateNameShuttingDown is a InstanceStateName enum value + InstanceStateNameShuttingDown = "shutting-down" + + // InstanceStateNameTerminated is a InstanceStateName enum value + InstanceStateNameTerminated = "terminated" + + // InstanceStateNameStopping is a InstanceStateName enum value + InstanceStateNameStopping = "stopping" + + // InstanceStateNameStopped is a InstanceStateName enum value + InstanceStateNameStopped = "stopped" +) + +const ( + // InstanceTypeT1Micro is a InstanceType enum value + InstanceTypeT1Micro = "t1.micro" + + // InstanceTypeT2Nano is a InstanceType enum value + InstanceTypeT2Nano = "t2.nano" + + // InstanceTypeT2Micro is a InstanceType enum value + InstanceTypeT2Micro = "t2.micro" + + // InstanceTypeT2Small is a InstanceType enum value + InstanceTypeT2Small = "t2.small" + + // InstanceTypeT2Medium is a InstanceType enum value + InstanceTypeT2Medium = "t2.medium" + + // InstanceTypeT2Large is a InstanceType enum value + InstanceTypeT2Large = "t2.large" + + // InstanceTypeT2Xlarge is a InstanceType enum value + InstanceTypeT2Xlarge = "t2.xlarge" + + // InstanceTypeT22xlarge is a InstanceType enum value + InstanceTypeT22xlarge = "t2.2xlarge" + + // InstanceTypeT3Nano is a InstanceType enum value + InstanceTypeT3Nano = "t3.nano" + + // InstanceTypeT3Micro is a InstanceType enum value + InstanceTypeT3Micro = "t3.micro" + + // InstanceTypeT3Small is a InstanceType enum value + InstanceTypeT3Small = "t3.small" + + // InstanceTypeT3Medium is a InstanceType enum value + InstanceTypeT3Medium = "t3.medium" + + // InstanceTypeT3Large is a InstanceType enum value + InstanceTypeT3Large = "t3.large" + + // InstanceTypeT3Xlarge is a InstanceType enum value + InstanceTypeT3Xlarge = "t3.xlarge" + + // InstanceTypeT32xlarge is a InstanceType enum value + InstanceTypeT32xlarge = "t3.2xlarge" + + // InstanceTypeT3aNano is a InstanceType enum value + InstanceTypeT3aNano = "t3a.nano" + + // InstanceTypeT3aMicro is a InstanceType enum value + InstanceTypeT3aMicro = "t3a.micro" + + // InstanceTypeT3aSmall is a InstanceType enum value + InstanceTypeT3aSmall = "t3a.small" + + // InstanceTypeT3aMedium is a InstanceType enum value + InstanceTypeT3aMedium = "t3a.medium" + + // InstanceTypeT3aLarge is a InstanceType enum value + InstanceTypeT3aLarge = "t3a.large" + + // InstanceTypeT3aXlarge is a InstanceType enum value + InstanceTypeT3aXlarge = "t3a.xlarge" + + // InstanceTypeT3a2xlarge is a InstanceType enum value + InstanceTypeT3a2xlarge = "t3a.2xlarge" + + // InstanceTypeM1Small is a InstanceType enum value + InstanceTypeM1Small = "m1.small" + + // InstanceTypeM1Medium is a InstanceType enum value + InstanceTypeM1Medium = "m1.medium" + + // InstanceTypeM1Large is a InstanceType enum value + InstanceTypeM1Large = "m1.large" + + // InstanceTypeM1Xlarge is a InstanceType enum value + InstanceTypeM1Xlarge = "m1.xlarge" + + // InstanceTypeM3Medium is a InstanceType enum value + InstanceTypeM3Medium = "m3.medium" + + // InstanceTypeM3Large is a InstanceType enum value + InstanceTypeM3Large = "m3.large" + + // InstanceTypeM3Xlarge is a InstanceType enum value + InstanceTypeM3Xlarge = "m3.xlarge" + + // InstanceTypeM32xlarge is a InstanceType enum value + InstanceTypeM32xlarge = "m3.2xlarge" + + // InstanceTypeM4Large is a InstanceType enum value + InstanceTypeM4Large = "m4.large" + + // InstanceTypeM4Xlarge is a InstanceType enum value + InstanceTypeM4Xlarge = "m4.xlarge" + + // InstanceTypeM42xlarge is a InstanceType enum value + InstanceTypeM42xlarge = "m4.2xlarge" + + // InstanceTypeM44xlarge is a InstanceType enum value + InstanceTypeM44xlarge = "m4.4xlarge" + + // InstanceTypeM410xlarge is a InstanceType enum value + InstanceTypeM410xlarge = "m4.10xlarge" + + // InstanceTypeM416xlarge is a InstanceType enum value + InstanceTypeM416xlarge = "m4.16xlarge" + + // InstanceTypeM2Xlarge is a InstanceType enum value + InstanceTypeM2Xlarge = "m2.xlarge" + + // InstanceTypeM22xlarge is a InstanceType enum value + InstanceTypeM22xlarge = "m2.2xlarge" + + // InstanceTypeM24xlarge is a InstanceType enum value + InstanceTypeM24xlarge = "m2.4xlarge" + + // InstanceTypeCr18xlarge is a InstanceType enum value + InstanceTypeCr18xlarge = "cr1.8xlarge" + + // InstanceTypeR3Large is a InstanceType enum value + InstanceTypeR3Large = "r3.large" + + // InstanceTypeR3Xlarge is a InstanceType enum value + InstanceTypeR3Xlarge = "r3.xlarge" + + // InstanceTypeR32xlarge is a InstanceType enum value + InstanceTypeR32xlarge = "r3.2xlarge" + + // InstanceTypeR34xlarge is a InstanceType enum value + InstanceTypeR34xlarge = "r3.4xlarge" + + // InstanceTypeR38xlarge is a InstanceType enum value + InstanceTypeR38xlarge = "r3.8xlarge" + + // InstanceTypeR4Large is a InstanceType enum value + InstanceTypeR4Large = "r4.large" + + // InstanceTypeR4Xlarge is a InstanceType enum value + InstanceTypeR4Xlarge = "r4.xlarge" + + // InstanceTypeR42xlarge is a InstanceType enum value + InstanceTypeR42xlarge = "r4.2xlarge" + + // InstanceTypeR44xlarge is a InstanceType enum value + InstanceTypeR44xlarge = "r4.4xlarge" + + // InstanceTypeR48xlarge is a InstanceType enum value + InstanceTypeR48xlarge = "r4.8xlarge" + + // InstanceTypeR416xlarge is a InstanceType enum value + InstanceTypeR416xlarge = "r4.16xlarge" + + // InstanceTypeR5Large is a InstanceType enum value + InstanceTypeR5Large = "r5.large" + + // InstanceTypeR5Xlarge is a InstanceType enum value + InstanceTypeR5Xlarge = "r5.xlarge" + + // InstanceTypeR52xlarge is a InstanceType enum value + InstanceTypeR52xlarge = "r5.2xlarge" + + // InstanceTypeR54xlarge is a InstanceType enum value + InstanceTypeR54xlarge = "r5.4xlarge" + + // InstanceTypeR58xlarge is a InstanceType enum value + InstanceTypeR58xlarge = "r5.8xlarge" + + // InstanceTypeR512xlarge is a InstanceType enum value + InstanceTypeR512xlarge = "r5.12xlarge" + + // InstanceTypeR516xlarge is a InstanceType enum value + InstanceTypeR516xlarge = "r5.16xlarge" + + // InstanceTypeR524xlarge is a InstanceType enum value + InstanceTypeR524xlarge = "r5.24xlarge" + + // InstanceTypeR5Metal is a InstanceType enum value + InstanceTypeR5Metal = "r5.metal" + + // InstanceTypeR5aLarge is a InstanceType enum value + InstanceTypeR5aLarge = "r5a.large" + + // InstanceTypeR5aXlarge is a InstanceType enum value + InstanceTypeR5aXlarge = "r5a.xlarge" + + // InstanceTypeR5a2xlarge is a InstanceType enum value + InstanceTypeR5a2xlarge = "r5a.2xlarge" + + // InstanceTypeR5a4xlarge is a InstanceType enum value + InstanceTypeR5a4xlarge = "r5a.4xlarge" + + // InstanceTypeR5a8xlarge is a InstanceType enum value + InstanceTypeR5a8xlarge = "r5a.8xlarge" + + // InstanceTypeR5a12xlarge is a InstanceType enum value + InstanceTypeR5a12xlarge = "r5a.12xlarge" + + // InstanceTypeR5a16xlarge is a InstanceType enum value + InstanceTypeR5a16xlarge = "r5a.16xlarge" + + // InstanceTypeR5a24xlarge is a InstanceType enum value + InstanceTypeR5a24xlarge = "r5a.24xlarge" + + // InstanceTypeR5dLarge is a InstanceType enum value + InstanceTypeR5dLarge = "r5d.large" + + // InstanceTypeR5dXlarge is a InstanceType enum value + InstanceTypeR5dXlarge = "r5d.xlarge" + + // InstanceTypeR5d2xlarge is a InstanceType enum value + InstanceTypeR5d2xlarge = "r5d.2xlarge" + + // InstanceTypeR5d4xlarge is a InstanceType enum value + InstanceTypeR5d4xlarge = "r5d.4xlarge" + + // InstanceTypeR5d8xlarge is a InstanceType enum value + InstanceTypeR5d8xlarge = "r5d.8xlarge" + + // InstanceTypeR5d12xlarge is a InstanceType enum value + InstanceTypeR5d12xlarge = "r5d.12xlarge" + + // InstanceTypeR5d16xlarge is a InstanceType enum value + InstanceTypeR5d16xlarge = "r5d.16xlarge" + + // InstanceTypeR5d24xlarge is a InstanceType enum value + InstanceTypeR5d24xlarge = "r5d.24xlarge" + + // InstanceTypeR5dMetal is a InstanceType enum value + InstanceTypeR5dMetal = "r5d.metal" + + // InstanceTypeR5adLarge is a InstanceType enum value + InstanceTypeR5adLarge = "r5ad.large" + + // InstanceTypeR5adXlarge is a InstanceType enum value + InstanceTypeR5adXlarge = "r5ad.xlarge" + + // InstanceTypeR5ad2xlarge is a InstanceType enum value + InstanceTypeR5ad2xlarge = "r5ad.2xlarge" + + // InstanceTypeR5ad4xlarge is a InstanceType enum value + InstanceTypeR5ad4xlarge = "r5ad.4xlarge" + + // InstanceTypeR5ad8xlarge is a InstanceType enum value + InstanceTypeR5ad8xlarge = "r5ad.8xlarge" + + // InstanceTypeR5ad12xlarge is a InstanceType enum value + InstanceTypeR5ad12xlarge = "r5ad.12xlarge" + + // InstanceTypeR5ad16xlarge is a InstanceType enum value + InstanceTypeR5ad16xlarge = "r5ad.16xlarge" + + // InstanceTypeR5ad24xlarge is a InstanceType enum value + InstanceTypeR5ad24xlarge = "r5ad.24xlarge" + + // InstanceTypeX116xlarge is a InstanceType enum value + InstanceTypeX116xlarge = "x1.16xlarge" + + // InstanceTypeX132xlarge is a InstanceType enum value + InstanceTypeX132xlarge = "x1.32xlarge" + + // InstanceTypeX1eXlarge is a InstanceType enum value + InstanceTypeX1eXlarge = "x1e.xlarge" + + // InstanceTypeX1e2xlarge is a InstanceType enum value + InstanceTypeX1e2xlarge = "x1e.2xlarge" + + // InstanceTypeX1e4xlarge is a InstanceType enum value + InstanceTypeX1e4xlarge = "x1e.4xlarge" + + // InstanceTypeX1e8xlarge is a InstanceType enum value + InstanceTypeX1e8xlarge = "x1e.8xlarge" + + // InstanceTypeX1e16xlarge is a InstanceType enum value + InstanceTypeX1e16xlarge = "x1e.16xlarge" + + // InstanceTypeX1e32xlarge is a InstanceType enum value + InstanceTypeX1e32xlarge = "x1e.32xlarge" + + // InstanceTypeI2Xlarge is a InstanceType enum value + InstanceTypeI2Xlarge = "i2.xlarge" + + // InstanceTypeI22xlarge is a InstanceType enum value + InstanceTypeI22xlarge = "i2.2xlarge" + + // InstanceTypeI24xlarge is a InstanceType enum value + InstanceTypeI24xlarge = "i2.4xlarge" + + // InstanceTypeI28xlarge is a InstanceType enum value + InstanceTypeI28xlarge = "i2.8xlarge" + + // InstanceTypeI3Large is a InstanceType enum value + InstanceTypeI3Large = "i3.large" + + // InstanceTypeI3Xlarge is a InstanceType enum value + InstanceTypeI3Xlarge = "i3.xlarge" + + // InstanceTypeI32xlarge is a InstanceType enum value + InstanceTypeI32xlarge = "i3.2xlarge" + + // InstanceTypeI34xlarge is a InstanceType enum value + InstanceTypeI34xlarge = "i3.4xlarge" + + // InstanceTypeI38xlarge is a InstanceType enum value + InstanceTypeI38xlarge = "i3.8xlarge" + + // InstanceTypeI316xlarge is a InstanceType enum value + InstanceTypeI316xlarge = "i3.16xlarge" + + // InstanceTypeI3Metal is a InstanceType enum value + InstanceTypeI3Metal = "i3.metal" + + // InstanceTypeI3enLarge is a InstanceType enum value + InstanceTypeI3enLarge = "i3en.large" + + // InstanceTypeI3enXlarge is a InstanceType enum value + InstanceTypeI3enXlarge = "i3en.xlarge" + + // InstanceTypeI3en2xlarge is a InstanceType enum value + InstanceTypeI3en2xlarge = "i3en.2xlarge" + + // InstanceTypeI3en3xlarge is a InstanceType enum value + InstanceTypeI3en3xlarge = "i3en.3xlarge" + + // InstanceTypeI3en6xlarge is a InstanceType enum value + InstanceTypeI3en6xlarge = "i3en.6xlarge" + + // InstanceTypeI3en12xlarge is a InstanceType enum value + InstanceTypeI3en12xlarge = "i3en.12xlarge" + + // InstanceTypeI3en24xlarge is a InstanceType enum value + InstanceTypeI3en24xlarge = "i3en.24xlarge" + + // InstanceTypeI3enMetal is a InstanceType enum value + InstanceTypeI3enMetal = "i3en.metal" + + // InstanceTypeHi14xlarge is a InstanceType enum value + InstanceTypeHi14xlarge = "hi1.4xlarge" + + // InstanceTypeHs18xlarge is a InstanceType enum value + InstanceTypeHs18xlarge = "hs1.8xlarge" + + // InstanceTypeC1Medium is a InstanceType enum value + InstanceTypeC1Medium = "c1.medium" + + // InstanceTypeC1Xlarge is a InstanceType enum value + InstanceTypeC1Xlarge = "c1.xlarge" + + // InstanceTypeC3Large is a InstanceType enum value + InstanceTypeC3Large = "c3.large" + + // InstanceTypeC3Xlarge is a InstanceType enum value + InstanceTypeC3Xlarge = "c3.xlarge" + + // InstanceTypeC32xlarge is a InstanceType enum value + InstanceTypeC32xlarge = "c3.2xlarge" + + // InstanceTypeC34xlarge is a InstanceType enum value + InstanceTypeC34xlarge = "c3.4xlarge" + + // InstanceTypeC38xlarge is a InstanceType enum value + InstanceTypeC38xlarge = "c3.8xlarge" + + // InstanceTypeC4Large is a InstanceType enum value + InstanceTypeC4Large = "c4.large" + + // InstanceTypeC4Xlarge is a InstanceType enum value + InstanceTypeC4Xlarge = "c4.xlarge" + + // InstanceTypeC42xlarge is a InstanceType enum value + InstanceTypeC42xlarge = "c4.2xlarge" + + // InstanceTypeC44xlarge is a InstanceType enum value + InstanceTypeC44xlarge = "c4.4xlarge" + + // InstanceTypeC48xlarge is a InstanceType enum value + InstanceTypeC48xlarge = "c4.8xlarge" + + // InstanceTypeC5Large is a InstanceType enum value + InstanceTypeC5Large = "c5.large" + + // InstanceTypeC5Xlarge is a InstanceType enum value + InstanceTypeC5Xlarge = "c5.xlarge" + + // InstanceTypeC52xlarge is a InstanceType enum value + InstanceTypeC52xlarge = "c5.2xlarge" + + // InstanceTypeC54xlarge is a InstanceType enum value + InstanceTypeC54xlarge = "c5.4xlarge" + + // InstanceTypeC59xlarge is a InstanceType enum value + InstanceTypeC59xlarge = "c5.9xlarge" + + // InstanceTypeC512xlarge is a InstanceType enum value + InstanceTypeC512xlarge = "c5.12xlarge" + + // InstanceTypeC518xlarge is a InstanceType enum value + InstanceTypeC518xlarge = "c5.18xlarge" + + // InstanceTypeC524xlarge is a InstanceType enum value + InstanceTypeC524xlarge = "c5.24xlarge" + + // InstanceTypeC5Metal is a InstanceType enum value + InstanceTypeC5Metal = "c5.metal" + + // InstanceTypeC5dLarge is a InstanceType enum value + InstanceTypeC5dLarge = "c5d.large" + + // InstanceTypeC5dXlarge is a InstanceType enum value + InstanceTypeC5dXlarge = "c5d.xlarge" + + // InstanceTypeC5d2xlarge is a InstanceType enum value + InstanceTypeC5d2xlarge = "c5d.2xlarge" + + // InstanceTypeC5d4xlarge is a InstanceType enum value + InstanceTypeC5d4xlarge = "c5d.4xlarge" + + // InstanceTypeC5d9xlarge is a InstanceType enum value + InstanceTypeC5d9xlarge = "c5d.9xlarge" + + // InstanceTypeC5d18xlarge is a InstanceType enum value + InstanceTypeC5d18xlarge = "c5d.18xlarge" + + // InstanceTypeC5nLarge is a InstanceType enum value + InstanceTypeC5nLarge = "c5n.large" + + // InstanceTypeC5nXlarge is a InstanceType enum value + InstanceTypeC5nXlarge = "c5n.xlarge" + + // InstanceTypeC5n2xlarge is a InstanceType enum value + InstanceTypeC5n2xlarge = "c5n.2xlarge" + + // InstanceTypeC5n4xlarge is a InstanceType enum value + InstanceTypeC5n4xlarge = "c5n.4xlarge" + + // InstanceTypeC5n9xlarge is a InstanceType enum value + InstanceTypeC5n9xlarge = "c5n.9xlarge" + + // InstanceTypeC5n18xlarge is a InstanceType enum value + InstanceTypeC5n18xlarge = "c5n.18xlarge" + + // InstanceTypeCc14xlarge is a InstanceType enum value + InstanceTypeCc14xlarge = "cc1.4xlarge" + + // InstanceTypeCc28xlarge is a InstanceType enum value + InstanceTypeCc28xlarge = "cc2.8xlarge" + + // InstanceTypeG22xlarge is a InstanceType enum value + InstanceTypeG22xlarge = "g2.2xlarge" + + // InstanceTypeG28xlarge is a InstanceType enum value + InstanceTypeG28xlarge = "g2.8xlarge" + + // InstanceTypeG34xlarge is a InstanceType enum value + InstanceTypeG34xlarge = "g3.4xlarge" + + // InstanceTypeG38xlarge is a InstanceType enum value + InstanceTypeG38xlarge = "g3.8xlarge" + + // InstanceTypeG316xlarge is a InstanceType enum value + InstanceTypeG316xlarge = "g3.16xlarge" + + // InstanceTypeG3sXlarge is a InstanceType enum value + InstanceTypeG3sXlarge = "g3s.xlarge" + + // InstanceTypeG4dnXlarge is a InstanceType enum value + InstanceTypeG4dnXlarge = "g4dn.xlarge" + + // InstanceTypeG4dn2xlarge is a InstanceType enum value + InstanceTypeG4dn2xlarge = "g4dn.2xlarge" + + // InstanceTypeG4dn4xlarge is a InstanceType enum value + InstanceTypeG4dn4xlarge = "g4dn.4xlarge" + + // InstanceTypeG4dn8xlarge is a InstanceType enum value + InstanceTypeG4dn8xlarge = "g4dn.8xlarge" + + // InstanceTypeG4dn12xlarge is a InstanceType enum value + InstanceTypeG4dn12xlarge = "g4dn.12xlarge" + + // InstanceTypeG4dn16xlarge is a InstanceType enum value + InstanceTypeG4dn16xlarge = "g4dn.16xlarge" + + // InstanceTypeCg14xlarge is a InstanceType enum value + InstanceTypeCg14xlarge = "cg1.4xlarge" + + // InstanceTypeP2Xlarge is a InstanceType enum value + InstanceTypeP2Xlarge = "p2.xlarge" + + // InstanceTypeP28xlarge is a InstanceType enum value + InstanceTypeP28xlarge = "p2.8xlarge" + + // InstanceTypeP216xlarge is a InstanceType enum value + InstanceTypeP216xlarge = "p2.16xlarge" + + // InstanceTypeP32xlarge is a InstanceType enum value + InstanceTypeP32xlarge = "p3.2xlarge" + + // InstanceTypeP38xlarge is a InstanceType enum value + InstanceTypeP38xlarge = "p3.8xlarge" + + // InstanceTypeP316xlarge is a InstanceType enum value + InstanceTypeP316xlarge = "p3.16xlarge" + + // InstanceTypeP3dn24xlarge is a InstanceType enum value + InstanceTypeP3dn24xlarge = "p3dn.24xlarge" + + // InstanceTypeD2Xlarge is a InstanceType enum value + InstanceTypeD2Xlarge = "d2.xlarge" + + // InstanceTypeD22xlarge is a InstanceType enum value + InstanceTypeD22xlarge = "d2.2xlarge" + + // InstanceTypeD24xlarge is a InstanceType enum value + InstanceTypeD24xlarge = "d2.4xlarge" + + // InstanceTypeD28xlarge is a InstanceType enum value + InstanceTypeD28xlarge = "d2.8xlarge" + + // InstanceTypeF12xlarge is a InstanceType enum value + InstanceTypeF12xlarge = "f1.2xlarge" + + // InstanceTypeF14xlarge is a InstanceType enum value + InstanceTypeF14xlarge = "f1.4xlarge" + + // InstanceTypeF116xlarge is a InstanceType enum value + InstanceTypeF116xlarge = "f1.16xlarge" + + // InstanceTypeM5Large is a InstanceType enum value + InstanceTypeM5Large = "m5.large" + + // InstanceTypeM5Xlarge is a InstanceType enum value + InstanceTypeM5Xlarge = "m5.xlarge" + + // InstanceTypeM52xlarge is a InstanceType enum value + InstanceTypeM52xlarge = "m5.2xlarge" + + // InstanceTypeM54xlarge is a InstanceType enum value + InstanceTypeM54xlarge = "m5.4xlarge" + + // InstanceTypeM58xlarge is a InstanceType enum value + InstanceTypeM58xlarge = "m5.8xlarge" + + // InstanceTypeM512xlarge is a InstanceType enum value + InstanceTypeM512xlarge = "m5.12xlarge" + + // InstanceTypeM516xlarge is a InstanceType enum value + InstanceTypeM516xlarge = "m5.16xlarge" + + // InstanceTypeM524xlarge is a InstanceType enum value + InstanceTypeM524xlarge = "m5.24xlarge" + + // InstanceTypeM5Metal is a InstanceType enum value + InstanceTypeM5Metal = "m5.metal" + + // InstanceTypeM5aLarge is a InstanceType enum value + InstanceTypeM5aLarge = "m5a.large" + + // InstanceTypeM5aXlarge is a InstanceType enum value + InstanceTypeM5aXlarge = "m5a.xlarge" + + // InstanceTypeM5a2xlarge is a InstanceType enum value + InstanceTypeM5a2xlarge = "m5a.2xlarge" + + // InstanceTypeM5a4xlarge is a InstanceType enum value + InstanceTypeM5a4xlarge = "m5a.4xlarge" + + // InstanceTypeM5a8xlarge is a InstanceType enum value + InstanceTypeM5a8xlarge = "m5a.8xlarge" + + // InstanceTypeM5a12xlarge is a InstanceType enum value + InstanceTypeM5a12xlarge = "m5a.12xlarge" + + // InstanceTypeM5a16xlarge is a InstanceType enum value + InstanceTypeM5a16xlarge = "m5a.16xlarge" + + // InstanceTypeM5a24xlarge is a InstanceType enum value + InstanceTypeM5a24xlarge = "m5a.24xlarge" + + // InstanceTypeM5dLarge is a InstanceType enum value + InstanceTypeM5dLarge = "m5d.large" + + // InstanceTypeM5dXlarge is a InstanceType enum value + InstanceTypeM5dXlarge = "m5d.xlarge" + + // InstanceTypeM5d2xlarge is a InstanceType enum value + InstanceTypeM5d2xlarge = "m5d.2xlarge" + + // InstanceTypeM5d4xlarge is a InstanceType enum value + InstanceTypeM5d4xlarge = "m5d.4xlarge" + + // InstanceTypeM5d8xlarge is a InstanceType enum value + InstanceTypeM5d8xlarge = "m5d.8xlarge" + + // InstanceTypeM5d12xlarge is a InstanceType enum value + InstanceTypeM5d12xlarge = "m5d.12xlarge" + + // InstanceTypeM5d16xlarge is a InstanceType enum value + InstanceTypeM5d16xlarge = "m5d.16xlarge" + + // InstanceTypeM5d24xlarge is a InstanceType enum value + InstanceTypeM5d24xlarge = "m5d.24xlarge" + + // InstanceTypeM5dMetal is a InstanceType enum value + InstanceTypeM5dMetal = "m5d.metal" + + // InstanceTypeM5adLarge is a InstanceType enum value + InstanceTypeM5adLarge = "m5ad.large" + + // InstanceTypeM5adXlarge is a InstanceType enum value + InstanceTypeM5adXlarge = "m5ad.xlarge" + + // InstanceTypeM5ad2xlarge is a InstanceType enum value + InstanceTypeM5ad2xlarge = "m5ad.2xlarge" + + // InstanceTypeM5ad4xlarge is a InstanceType enum value + InstanceTypeM5ad4xlarge = "m5ad.4xlarge" + + // InstanceTypeM5ad8xlarge is a InstanceType enum value + InstanceTypeM5ad8xlarge = "m5ad.8xlarge" + + // InstanceTypeM5ad12xlarge is a InstanceType enum value + InstanceTypeM5ad12xlarge = "m5ad.12xlarge" + + // InstanceTypeM5ad16xlarge is a InstanceType enum value + InstanceTypeM5ad16xlarge = "m5ad.16xlarge" + + // InstanceTypeM5ad24xlarge is a InstanceType enum value + InstanceTypeM5ad24xlarge = "m5ad.24xlarge" + + // InstanceTypeH12xlarge is a InstanceType enum value + InstanceTypeH12xlarge = "h1.2xlarge" + + // InstanceTypeH14xlarge is a InstanceType enum value + InstanceTypeH14xlarge = "h1.4xlarge" + + // InstanceTypeH18xlarge is a InstanceType enum value + InstanceTypeH18xlarge = "h1.8xlarge" + + // InstanceTypeH116xlarge is a InstanceType enum value + InstanceTypeH116xlarge = "h1.16xlarge" + + // InstanceTypeZ1dLarge is a InstanceType enum value + InstanceTypeZ1dLarge = "z1d.large" + + // InstanceTypeZ1dXlarge is a InstanceType enum value + InstanceTypeZ1dXlarge = "z1d.xlarge" + + // InstanceTypeZ1d2xlarge is a InstanceType enum value + InstanceTypeZ1d2xlarge = "z1d.2xlarge" + + // InstanceTypeZ1d3xlarge is a InstanceType enum value + InstanceTypeZ1d3xlarge = "z1d.3xlarge" + + // InstanceTypeZ1d6xlarge is a InstanceType enum value + InstanceTypeZ1d6xlarge = "z1d.6xlarge" + + // InstanceTypeZ1d12xlarge is a InstanceType enum value + InstanceTypeZ1d12xlarge = "z1d.12xlarge" + + // InstanceTypeZ1dMetal is a InstanceType enum value + InstanceTypeZ1dMetal = "z1d.metal" + + // InstanceTypeU6tb1Metal is a InstanceType enum value + InstanceTypeU6tb1Metal = "u-6tb1.metal" + + // InstanceTypeU9tb1Metal is a InstanceType enum value + InstanceTypeU9tb1Metal = "u-9tb1.metal" + + // InstanceTypeU12tb1Metal is a InstanceType enum value + InstanceTypeU12tb1Metal = "u-12tb1.metal" + + // InstanceTypeU18tb1Metal is a InstanceType enum value + InstanceTypeU18tb1Metal = "u-18tb1.metal" + + // InstanceTypeU24tb1Metal is a InstanceType enum value + InstanceTypeU24tb1Metal = "u-24tb1.metal" + + // InstanceTypeA1Medium is a InstanceType enum value + InstanceTypeA1Medium = "a1.medium" + + // InstanceTypeA1Large is a InstanceType enum value + InstanceTypeA1Large = "a1.large" + + // InstanceTypeA1Xlarge is a InstanceType enum value + InstanceTypeA1Xlarge = "a1.xlarge" + + // InstanceTypeA12xlarge is a InstanceType enum value + InstanceTypeA12xlarge = "a1.2xlarge" + + // InstanceTypeA14xlarge is a InstanceType enum value + InstanceTypeA14xlarge = "a1.4xlarge" + + // InstanceTypeA1Metal is a InstanceType enum value + InstanceTypeA1Metal = "a1.metal" + + // InstanceTypeM5dnLarge is a InstanceType enum value + InstanceTypeM5dnLarge = "m5dn.large" + + // InstanceTypeM5dnXlarge is a InstanceType enum value + InstanceTypeM5dnXlarge = "m5dn.xlarge" + + // InstanceTypeM5dn2xlarge is a InstanceType enum value + InstanceTypeM5dn2xlarge = "m5dn.2xlarge" + + // InstanceTypeM5dn4xlarge is a InstanceType enum value + InstanceTypeM5dn4xlarge = "m5dn.4xlarge" + + // InstanceTypeM5dn8xlarge is a InstanceType enum value + InstanceTypeM5dn8xlarge = "m5dn.8xlarge" + + // InstanceTypeM5dn12xlarge is a InstanceType enum value + InstanceTypeM5dn12xlarge = "m5dn.12xlarge" + + // InstanceTypeM5dn16xlarge is a InstanceType enum value + InstanceTypeM5dn16xlarge = "m5dn.16xlarge" + + // InstanceTypeM5dn24xlarge is a InstanceType enum value + InstanceTypeM5dn24xlarge = "m5dn.24xlarge" + + // InstanceTypeM5nLarge is a InstanceType enum value + InstanceTypeM5nLarge = "m5n.large" + + // InstanceTypeM5nXlarge is a InstanceType enum value + InstanceTypeM5nXlarge = "m5n.xlarge" + + // InstanceTypeM5n2xlarge is a InstanceType enum value + InstanceTypeM5n2xlarge = "m5n.2xlarge" + + // InstanceTypeM5n4xlarge is a InstanceType enum value + InstanceTypeM5n4xlarge = "m5n.4xlarge" + + // InstanceTypeM5n8xlarge is a InstanceType enum value + InstanceTypeM5n8xlarge = "m5n.8xlarge" + + // InstanceTypeM5n12xlarge is a InstanceType enum value + InstanceTypeM5n12xlarge = "m5n.12xlarge" + + // InstanceTypeM5n16xlarge is a InstanceType enum value + InstanceTypeM5n16xlarge = "m5n.16xlarge" + + // InstanceTypeM5n24xlarge is a InstanceType enum value + InstanceTypeM5n24xlarge = "m5n.24xlarge" + + // InstanceTypeR5dnLarge is a InstanceType enum value + InstanceTypeR5dnLarge = "r5dn.large" + + // InstanceTypeR5dnXlarge is a InstanceType enum value + InstanceTypeR5dnXlarge = "r5dn.xlarge" + + // InstanceTypeR5dn2xlarge is a InstanceType enum value + InstanceTypeR5dn2xlarge = "r5dn.2xlarge" + + // InstanceTypeR5dn4xlarge is a InstanceType enum value + InstanceTypeR5dn4xlarge = "r5dn.4xlarge" + + // InstanceTypeR5dn8xlarge is a InstanceType enum value + InstanceTypeR5dn8xlarge = "r5dn.8xlarge" + + // InstanceTypeR5dn12xlarge is a InstanceType enum value + InstanceTypeR5dn12xlarge = "r5dn.12xlarge" + + // InstanceTypeR5dn16xlarge is a InstanceType enum value + InstanceTypeR5dn16xlarge = "r5dn.16xlarge" + + // InstanceTypeR5dn24xlarge is a InstanceType enum value + InstanceTypeR5dn24xlarge = "r5dn.24xlarge" + + // InstanceTypeR5nLarge is a InstanceType enum value + InstanceTypeR5nLarge = "r5n.large" + + // InstanceTypeR5nXlarge is a InstanceType enum value + InstanceTypeR5nXlarge = "r5n.xlarge" + + // InstanceTypeR5n2xlarge is a InstanceType enum value + InstanceTypeR5n2xlarge = "r5n.2xlarge" + + // InstanceTypeR5n4xlarge is a InstanceType enum value + InstanceTypeR5n4xlarge = "r5n.4xlarge" + + // InstanceTypeR5n8xlarge is a InstanceType enum value + InstanceTypeR5n8xlarge = "r5n.8xlarge" + + // InstanceTypeR5n12xlarge is a InstanceType enum value + InstanceTypeR5n12xlarge = "r5n.12xlarge" + + // InstanceTypeR5n16xlarge is a InstanceType enum value + InstanceTypeR5n16xlarge = "r5n.16xlarge" + + // InstanceTypeR5n24xlarge is a InstanceType enum value + InstanceTypeR5n24xlarge = "r5n.24xlarge" +) + +const ( + // InterfacePermissionTypeInstanceAttach is a InterfacePermissionType enum value + InterfacePermissionTypeInstanceAttach = "INSTANCE-ATTACH" + + // InterfacePermissionTypeEipAssociate is a InterfacePermissionType enum value + InterfacePermissionTypeEipAssociate = "EIP-ASSOCIATE" +) + +const ( + // Ipv6SupportValueEnable is a Ipv6SupportValue enum value + Ipv6SupportValueEnable = "enable" + + // Ipv6SupportValueDisable is a Ipv6SupportValue enum value + Ipv6SupportValueDisable = "disable" +) + +const ( + // LaunchTemplateErrorCodeLaunchTemplateIdDoesNotExist is a LaunchTemplateErrorCode enum value + LaunchTemplateErrorCodeLaunchTemplateIdDoesNotExist = "launchTemplateIdDoesNotExist" + + // LaunchTemplateErrorCodeLaunchTemplateIdMalformed is a LaunchTemplateErrorCode enum value + LaunchTemplateErrorCodeLaunchTemplateIdMalformed = "launchTemplateIdMalformed" + + // LaunchTemplateErrorCodeLaunchTemplateNameDoesNotExist is a LaunchTemplateErrorCode enum value + LaunchTemplateErrorCodeLaunchTemplateNameDoesNotExist = "launchTemplateNameDoesNotExist" + + // LaunchTemplateErrorCodeLaunchTemplateNameMalformed is a LaunchTemplateErrorCode enum value + LaunchTemplateErrorCodeLaunchTemplateNameMalformed = "launchTemplateNameMalformed" + + // LaunchTemplateErrorCodeLaunchTemplateVersionDoesNotExist is a LaunchTemplateErrorCode enum value + LaunchTemplateErrorCodeLaunchTemplateVersionDoesNotExist = "launchTemplateVersionDoesNotExist" + + // LaunchTemplateErrorCodeUnexpectedError is a LaunchTemplateErrorCode enum value + LaunchTemplateErrorCodeUnexpectedError = "unexpectedError" +) + +const ( + // ListingStateAvailable is a ListingState enum value + ListingStateAvailable = "available" + + // ListingStateSold is a ListingState enum value + ListingStateSold = "sold" + + // ListingStateCancelled is a ListingState enum value + ListingStateCancelled = "cancelled" + + // ListingStatePending is a ListingState enum value + ListingStatePending = "pending" +) + +const ( + // ListingStatusActive is a ListingStatus enum value + ListingStatusActive = "active" + + // ListingStatusPending is a ListingStatus enum value + ListingStatusPending = "pending" + + // ListingStatusCancelled is a ListingStatus enum value + ListingStatusCancelled = "cancelled" + + // ListingStatusClosed is a ListingStatus enum value + ListingStatusClosed = "closed" +) + +const ( + // LogDestinationTypeCloudWatchLogs is a LogDestinationType enum value + LogDestinationTypeCloudWatchLogs = "cloud-watch-logs" + + // LogDestinationTypeS3 is a LogDestinationType enum value + LogDestinationTypeS3 = "s3" +) + +const ( + // MarketTypeSpot is a MarketType enum value + MarketTypeSpot = "spot" +) + +const ( + // MonitoringStateDisabled is a MonitoringState enum value + MonitoringStateDisabled = "disabled" + + // MonitoringStateDisabling is a MonitoringState enum value + MonitoringStateDisabling = "disabling" + + // MonitoringStateEnabled is a MonitoringState enum value + MonitoringStateEnabled = "enabled" + + // MonitoringStatePending is a MonitoringState enum value + MonitoringStatePending = "pending" +) + +const ( + // MoveStatusMovingToVpc is a MoveStatus enum value + MoveStatusMovingToVpc = "movingToVpc" + + // MoveStatusRestoringToClassic is a MoveStatus enum value + MoveStatusRestoringToClassic = "restoringToClassic" +) + +const ( + // NatGatewayStatePending is a NatGatewayState enum value + NatGatewayStatePending = "pending" + + // NatGatewayStateFailed is a NatGatewayState enum value + NatGatewayStateFailed = "failed" + + // NatGatewayStateAvailable is a NatGatewayState enum value + NatGatewayStateAvailable = "available" + + // NatGatewayStateDeleting is a NatGatewayState enum value + NatGatewayStateDeleting = "deleting" + + // NatGatewayStateDeleted is a NatGatewayState enum value + NatGatewayStateDeleted = "deleted" +) + +const ( + // NetworkInterfaceAttributeDescription is a NetworkInterfaceAttribute enum value + NetworkInterfaceAttributeDescription = "description" + + // NetworkInterfaceAttributeGroupSet is a NetworkInterfaceAttribute enum value + NetworkInterfaceAttributeGroupSet = "groupSet" + + // NetworkInterfaceAttributeSourceDestCheck is a NetworkInterfaceAttribute enum value + NetworkInterfaceAttributeSourceDestCheck = "sourceDestCheck" + + // NetworkInterfaceAttributeAttachment is a NetworkInterfaceAttribute enum value + NetworkInterfaceAttributeAttachment = "attachment" +) + +const ( + // NetworkInterfaceCreationTypeEfa is a NetworkInterfaceCreationType enum value + NetworkInterfaceCreationTypeEfa = "efa" +) + +const ( + // NetworkInterfacePermissionStateCodePending is a NetworkInterfacePermissionStateCode enum value + NetworkInterfacePermissionStateCodePending = "pending" + + // NetworkInterfacePermissionStateCodeGranted is a NetworkInterfacePermissionStateCode enum value + NetworkInterfacePermissionStateCodeGranted = "granted" + + // NetworkInterfacePermissionStateCodeRevoking is a NetworkInterfacePermissionStateCode enum value + NetworkInterfacePermissionStateCodeRevoking = "revoking" + + // NetworkInterfacePermissionStateCodeRevoked is a NetworkInterfacePermissionStateCode enum value + NetworkInterfacePermissionStateCodeRevoked = "revoked" +) + +const ( + // NetworkInterfaceStatusAvailable is a NetworkInterfaceStatus enum value + NetworkInterfaceStatusAvailable = "available" + + // NetworkInterfaceStatusAssociated is a NetworkInterfaceStatus enum value + NetworkInterfaceStatusAssociated = "associated" + + // NetworkInterfaceStatusAttaching is a NetworkInterfaceStatus enum value + NetworkInterfaceStatusAttaching = "attaching" + + // NetworkInterfaceStatusInUse is a NetworkInterfaceStatus enum value + NetworkInterfaceStatusInUse = "in-use" + + // NetworkInterfaceStatusDetaching is a NetworkInterfaceStatus enum value + NetworkInterfaceStatusDetaching = "detaching" +) + +const ( + // NetworkInterfaceTypeInterface is a NetworkInterfaceType enum value + NetworkInterfaceTypeInterface = "interface" + + // NetworkInterfaceTypeNatGateway is a NetworkInterfaceType enum value + NetworkInterfaceTypeNatGateway = "natGateway" + + // NetworkInterfaceTypeEfa is a NetworkInterfaceType enum value + NetworkInterfaceTypeEfa = "efa" +) + +const ( + // OfferingClassTypeStandard is a OfferingClassType enum value + OfferingClassTypeStandard = "standard" + + // OfferingClassTypeConvertible is a OfferingClassType enum value + OfferingClassTypeConvertible = "convertible" +) + +const ( + // OfferingTypeValuesHeavyUtilization is a OfferingTypeValues enum value + OfferingTypeValuesHeavyUtilization = "Heavy Utilization" + + // OfferingTypeValuesMediumUtilization is a OfferingTypeValues enum value + OfferingTypeValuesMediumUtilization = "Medium Utilization" + + // OfferingTypeValuesLightUtilization is a OfferingTypeValues enum value + OfferingTypeValuesLightUtilization = "Light Utilization" + + // OfferingTypeValuesNoUpfront is a OfferingTypeValues enum value + OfferingTypeValuesNoUpfront = "No Upfront" + + // OfferingTypeValuesPartialUpfront is a OfferingTypeValues enum value + OfferingTypeValuesPartialUpfront = "Partial Upfront" + + // OfferingTypeValuesAllUpfront is a OfferingTypeValues enum value + OfferingTypeValuesAllUpfront = "All Upfront" +) + +const ( + // OnDemandAllocationStrategyLowestPrice is a OnDemandAllocationStrategy enum value + OnDemandAllocationStrategyLowestPrice = "lowestPrice" + + // OnDemandAllocationStrategyPrioritized is a OnDemandAllocationStrategy enum value + OnDemandAllocationStrategyPrioritized = "prioritized" +) + +const ( + // OperationTypeAdd is a OperationType enum value + OperationTypeAdd = "add" + + // OperationTypeRemove is a OperationType enum value + OperationTypeRemove = "remove" +) + +const ( + // PaymentOptionAllUpfront is a PaymentOption enum value + PaymentOptionAllUpfront = "AllUpfront" + + // PaymentOptionPartialUpfront is a PaymentOption enum value + PaymentOptionPartialUpfront = "PartialUpfront" + + // PaymentOptionNoUpfront is a PaymentOption enum value + PaymentOptionNoUpfront = "NoUpfront" +) + +const ( + // PermissionGroupAll is a PermissionGroup enum value + PermissionGroupAll = "all" +) + +const ( + // PlacementGroupStatePending is a PlacementGroupState enum value + PlacementGroupStatePending = "pending" + + // PlacementGroupStateAvailable is a PlacementGroupState enum value + PlacementGroupStateAvailable = "available" + + // PlacementGroupStateDeleting is a PlacementGroupState enum value + PlacementGroupStateDeleting = "deleting" + + // PlacementGroupStateDeleted is a PlacementGroupState enum value + PlacementGroupStateDeleted = "deleted" +) + +const ( + // PlacementStrategyCluster is a PlacementStrategy enum value + PlacementStrategyCluster = "cluster" + + // PlacementStrategySpread is a PlacementStrategy enum value + PlacementStrategySpread = "spread" + + // PlacementStrategyPartition is a PlacementStrategy enum value + PlacementStrategyPartition = "partition" +) + +const ( + // PlatformValuesWindows is a PlatformValues enum value + PlatformValuesWindows = "Windows" +) + +const ( + // PrincipalTypeAll is a PrincipalType enum value + PrincipalTypeAll = "All" + + // PrincipalTypeService is a PrincipalType enum value + PrincipalTypeService = "Service" + + // PrincipalTypeOrganizationUnit is a PrincipalType enum value + PrincipalTypeOrganizationUnit = "OrganizationUnit" + + // PrincipalTypeAccount is a PrincipalType enum value + PrincipalTypeAccount = "Account" + + // PrincipalTypeUser is a PrincipalType enum value + PrincipalTypeUser = "User" + + // PrincipalTypeRole is a PrincipalType enum value + PrincipalTypeRole = "Role" +) + +const ( + // ProductCodeValuesDevpay is a ProductCodeValues enum value + ProductCodeValuesDevpay = "devpay" + + // ProductCodeValuesMarketplace is a ProductCodeValues enum value + ProductCodeValuesMarketplace = "marketplace" +) + +const ( + // RIProductDescriptionLinuxUnix is a RIProductDescription enum value + RIProductDescriptionLinuxUnix = "Linux/UNIX" + + // RIProductDescriptionLinuxUnixamazonVpc is a RIProductDescription enum value + RIProductDescriptionLinuxUnixamazonVpc = "Linux/UNIX (Amazon VPC)" + + // RIProductDescriptionWindows is a RIProductDescription enum value + RIProductDescriptionWindows = "Windows" + + // RIProductDescriptionWindowsAmazonVpc is a RIProductDescription enum value + RIProductDescriptionWindowsAmazonVpc = "Windows (Amazon VPC)" +) + +const ( + // RecurringChargeFrequencyHourly is a RecurringChargeFrequency enum value + RecurringChargeFrequencyHourly = "Hourly" +) + +const ( + // ReportInstanceReasonCodesInstanceStuckInState is a ReportInstanceReasonCodes enum value + ReportInstanceReasonCodesInstanceStuckInState = "instance-stuck-in-state" + + // ReportInstanceReasonCodesUnresponsive is a ReportInstanceReasonCodes enum value + ReportInstanceReasonCodesUnresponsive = "unresponsive" + + // ReportInstanceReasonCodesNotAcceptingCredentials is a ReportInstanceReasonCodes enum value + ReportInstanceReasonCodesNotAcceptingCredentials = "not-accepting-credentials" + + // ReportInstanceReasonCodesPasswordNotAvailable is a ReportInstanceReasonCodes enum value + ReportInstanceReasonCodesPasswordNotAvailable = "password-not-available" + + // ReportInstanceReasonCodesPerformanceNetwork is a ReportInstanceReasonCodes enum value + ReportInstanceReasonCodesPerformanceNetwork = "performance-network" + + // ReportInstanceReasonCodesPerformanceInstanceStore is a ReportInstanceReasonCodes enum value + ReportInstanceReasonCodesPerformanceInstanceStore = "performance-instance-store" + + // ReportInstanceReasonCodesPerformanceEbsVolume is a ReportInstanceReasonCodes enum value + ReportInstanceReasonCodesPerformanceEbsVolume = "performance-ebs-volume" + + // ReportInstanceReasonCodesPerformanceOther is a ReportInstanceReasonCodes enum value + ReportInstanceReasonCodesPerformanceOther = "performance-other" + + // ReportInstanceReasonCodesOther is a ReportInstanceReasonCodes enum value + ReportInstanceReasonCodesOther = "other" +) + +const ( + // ReportStatusTypeOk is a ReportStatusType enum value + ReportStatusTypeOk = "ok" + + // ReportStatusTypeImpaired is a ReportStatusType enum value + ReportStatusTypeImpaired = "impaired" +) + +const ( + // ReservationStatePaymentPending is a ReservationState enum value + ReservationStatePaymentPending = "payment-pending" + + // ReservationStatePaymentFailed is a ReservationState enum value + ReservationStatePaymentFailed = "payment-failed" + + // ReservationStateActive is a ReservationState enum value + ReservationStateActive = "active" + + // ReservationStateRetired is a ReservationState enum value + ReservationStateRetired = "retired" +) + +const ( + // ReservedInstanceStatePaymentPending is a ReservedInstanceState enum value + ReservedInstanceStatePaymentPending = "payment-pending" + + // ReservedInstanceStateActive is a ReservedInstanceState enum value + ReservedInstanceStateActive = "active" + + // ReservedInstanceStatePaymentFailed is a ReservedInstanceState enum value + ReservedInstanceStatePaymentFailed = "payment-failed" + + // ReservedInstanceStateRetired is a ReservedInstanceState enum value + ReservedInstanceStateRetired = "retired" + + // ReservedInstanceStateQueued is a ReservedInstanceState enum value + ReservedInstanceStateQueued = "queued" + + // ReservedInstanceStateQueuedDeleted is a ReservedInstanceState enum value + ReservedInstanceStateQueuedDeleted = "queued-deleted" +) + +const ( + // ResetFpgaImageAttributeNameLoadPermission is a ResetFpgaImageAttributeName enum value + ResetFpgaImageAttributeNameLoadPermission = "loadPermission" +) + +const ( + // ResetImageAttributeNameLaunchPermission is a ResetImageAttributeName enum value + ResetImageAttributeNameLaunchPermission = "launchPermission" +) + +const ( + // ResourceTypeClientVpnEndpoint is a ResourceType enum value + ResourceTypeClientVpnEndpoint = "client-vpn-endpoint" + + // ResourceTypeCustomerGateway is a ResourceType enum value + ResourceTypeCustomerGateway = "customer-gateway" + + // ResourceTypeDedicatedHost is a ResourceType enum value + ResourceTypeDedicatedHost = "dedicated-host" + + // ResourceTypeDhcpOptions is a ResourceType enum value + ResourceTypeDhcpOptions = "dhcp-options" + + // ResourceTypeElasticIp is a ResourceType enum value + ResourceTypeElasticIp = "elastic-ip" + + // ResourceTypeFleet is a ResourceType enum value + ResourceTypeFleet = "fleet" + + // ResourceTypeFpgaImage is a ResourceType enum value + ResourceTypeFpgaImage = "fpga-image" + + // ResourceTypeHostReservation is a ResourceType enum value + ResourceTypeHostReservation = "host-reservation" + + // ResourceTypeImage is a ResourceType enum value + ResourceTypeImage = "image" + + // ResourceTypeInstance is a ResourceType enum value + ResourceTypeInstance = "instance" + + // ResourceTypeInternetGateway is a ResourceType enum value + ResourceTypeInternetGateway = "internet-gateway" + + // ResourceTypeLaunchTemplate is a ResourceType enum value + ResourceTypeLaunchTemplate = "launch-template" + + // ResourceTypeNatgateway is a ResourceType enum value + ResourceTypeNatgateway = "natgateway" + + // ResourceTypeNetworkAcl is a ResourceType enum value + ResourceTypeNetworkAcl = "network-acl" + + // ResourceTypeNetworkInterface is a ResourceType enum value + ResourceTypeNetworkInterface = "network-interface" + + // ResourceTypeReservedInstances is a ResourceType enum value + ResourceTypeReservedInstances = "reserved-instances" + + // ResourceTypeRouteTable is a ResourceType enum value + ResourceTypeRouteTable = "route-table" + + // ResourceTypeSecurityGroup is a ResourceType enum value + ResourceTypeSecurityGroup = "security-group" + + // ResourceTypeSnapshot is a ResourceType enum value + ResourceTypeSnapshot = "snapshot" + + // ResourceTypeSpotInstancesRequest is a ResourceType enum value + ResourceTypeSpotInstancesRequest = "spot-instances-request" + + // ResourceTypeSubnet is a ResourceType enum value + ResourceTypeSubnet = "subnet" + + // ResourceTypeTrafficMirrorFilter is a ResourceType enum value + ResourceTypeTrafficMirrorFilter = "traffic-mirror-filter" + + // ResourceTypeTrafficMirrorSession is a ResourceType enum value + ResourceTypeTrafficMirrorSession = "traffic-mirror-session" + + // ResourceTypeTrafficMirrorTarget is a ResourceType enum value + ResourceTypeTrafficMirrorTarget = "traffic-mirror-target" + + // ResourceTypeTransitGateway is a ResourceType enum value + ResourceTypeTransitGateway = "transit-gateway" + + // ResourceTypeTransitGatewayAttachment is a ResourceType enum value + ResourceTypeTransitGatewayAttachment = "transit-gateway-attachment" + + // ResourceTypeTransitGatewayRouteTable is a ResourceType enum value + ResourceTypeTransitGatewayRouteTable = "transit-gateway-route-table" + + // ResourceTypeVolume is a ResourceType enum value + ResourceTypeVolume = "volume" + + // ResourceTypeVpc is a ResourceType enum value + ResourceTypeVpc = "vpc" + + // ResourceTypeVpcPeeringConnection is a ResourceType enum value + ResourceTypeVpcPeeringConnection = "vpc-peering-connection" + + // ResourceTypeVpnConnection is a ResourceType enum value + ResourceTypeVpnConnection = "vpn-connection" + + // ResourceTypeVpnGateway is a ResourceType enum value + ResourceTypeVpnGateway = "vpn-gateway" +) + +const ( + // RouteOriginCreateRouteTable is a RouteOrigin enum value + RouteOriginCreateRouteTable = "CreateRouteTable" + + // RouteOriginCreateRoute is a RouteOrigin enum value + RouteOriginCreateRoute = "CreateRoute" + + // RouteOriginEnableVgwRoutePropagation is a RouteOrigin enum value + RouteOriginEnableVgwRoutePropagation = "EnableVgwRoutePropagation" +) + +const ( + // RouteStateActive is a RouteState enum value + RouteStateActive = "active" + + // RouteStateBlackhole is a RouteState enum value + RouteStateBlackhole = "blackhole" +) + +const ( + // RuleActionAllow is a RuleAction enum value + RuleActionAllow = "allow" + + // RuleActionDeny is a RuleAction enum value + RuleActionDeny = "deny" +) + +const ( + // ServiceStatePending is a ServiceState enum value + ServiceStatePending = "Pending" + + // ServiceStateAvailable is a ServiceState enum value + ServiceStateAvailable = "Available" + + // ServiceStateDeleting is a ServiceState enum value + ServiceStateDeleting = "Deleting" + + // ServiceStateDeleted is a ServiceState enum value + ServiceStateDeleted = "Deleted" + + // ServiceStateFailed is a ServiceState enum value + ServiceStateFailed = "Failed" +) + +const ( + // ServiceTypeInterface is a ServiceType enum value + ServiceTypeInterface = "Interface" + + // ServiceTypeGateway is a ServiceType enum value + ServiceTypeGateway = "Gateway" +) + +const ( + // ShutdownBehaviorStop is a ShutdownBehavior enum value + ShutdownBehaviorStop = "stop" + + // ShutdownBehaviorTerminate is a ShutdownBehavior enum value + ShutdownBehaviorTerminate = "terminate" +) + +const ( + // SnapshotAttributeNameProductCodes is a SnapshotAttributeName enum value + SnapshotAttributeNameProductCodes = "productCodes" + + // SnapshotAttributeNameCreateVolumePermission is a SnapshotAttributeName enum value + SnapshotAttributeNameCreateVolumePermission = "createVolumePermission" +) + +const ( + // SnapshotStatePending is a SnapshotState enum value + SnapshotStatePending = "pending" + + // SnapshotStateCompleted is a SnapshotState enum value + SnapshotStateCompleted = "completed" + + // SnapshotStateError is a SnapshotState enum value + SnapshotStateError = "error" +) + +const ( + // SpotAllocationStrategyLowestPrice is a SpotAllocationStrategy enum value + SpotAllocationStrategyLowestPrice = "lowest-price" + + // SpotAllocationStrategyDiversified is a SpotAllocationStrategy enum value + SpotAllocationStrategyDiversified = "diversified" + + // SpotAllocationStrategyCapacityOptimized is a SpotAllocationStrategy enum value + SpotAllocationStrategyCapacityOptimized = "capacity-optimized" +) + +const ( + // SpotInstanceInterruptionBehaviorHibernate is a SpotInstanceInterruptionBehavior enum value + SpotInstanceInterruptionBehaviorHibernate = "hibernate" + + // SpotInstanceInterruptionBehaviorStop is a SpotInstanceInterruptionBehavior enum value + SpotInstanceInterruptionBehaviorStop = "stop" + + // SpotInstanceInterruptionBehaviorTerminate is a SpotInstanceInterruptionBehavior enum value + SpotInstanceInterruptionBehaviorTerminate = "terminate" +) + +const ( + // SpotInstanceStateOpen is a SpotInstanceState enum value + SpotInstanceStateOpen = "open" + + // SpotInstanceStateActive is a SpotInstanceState enum value + SpotInstanceStateActive = "active" + + // SpotInstanceStateClosed is a SpotInstanceState enum value + SpotInstanceStateClosed = "closed" + + // SpotInstanceStateCancelled is a SpotInstanceState enum value + SpotInstanceStateCancelled = "cancelled" + + // SpotInstanceStateFailed is a SpotInstanceState enum value + SpotInstanceStateFailed = "failed" +) + +const ( + // SpotInstanceTypeOneTime is a SpotInstanceType enum value + SpotInstanceTypeOneTime = "one-time" + + // SpotInstanceTypePersistent is a SpotInstanceType enum value + SpotInstanceTypePersistent = "persistent" +) + +const ( + // StatePendingAcceptance is a State enum value + StatePendingAcceptance = "PendingAcceptance" + + // StatePending is a State enum value + StatePending = "Pending" + + // StateAvailable is a State enum value + StateAvailable = "Available" + + // StateDeleting is a State enum value + StateDeleting = "Deleting" + + // StateDeleted is a State enum value + StateDeleted = "Deleted" + + // StateRejected is a State enum value + StateRejected = "Rejected" + + // StateFailed is a State enum value + StateFailed = "Failed" + + // StateExpired is a State enum value + StateExpired = "Expired" +) + +const ( + // StatusMoveInProgress is a Status enum value + StatusMoveInProgress = "MoveInProgress" + + // StatusInVpc is a Status enum value + StatusInVpc = "InVpc" + + // StatusInClassic is a Status enum value + StatusInClassic = "InClassic" +) + +const ( + // StatusNameReachability is a StatusName enum value + StatusNameReachability = "reachability" +) + +const ( + // StatusTypePassed is a StatusType enum value + StatusTypePassed = "passed" + + // StatusTypeFailed is a StatusType enum value + StatusTypeFailed = "failed" + + // StatusTypeInsufficientData is a StatusType enum value + StatusTypeInsufficientData = "insufficient-data" + + // StatusTypeInitializing is a StatusType enum value + StatusTypeInitializing = "initializing" +) + +const ( + // SubnetCidrBlockStateCodeAssociating is a SubnetCidrBlockStateCode enum value + SubnetCidrBlockStateCodeAssociating = "associating" + + // SubnetCidrBlockStateCodeAssociated is a SubnetCidrBlockStateCode enum value + SubnetCidrBlockStateCodeAssociated = "associated" + + // SubnetCidrBlockStateCodeDisassociating is a SubnetCidrBlockStateCode enum value + SubnetCidrBlockStateCodeDisassociating = "disassociating" + + // SubnetCidrBlockStateCodeDisassociated is a SubnetCidrBlockStateCode enum value + SubnetCidrBlockStateCodeDisassociated = "disassociated" + + // SubnetCidrBlockStateCodeFailing is a SubnetCidrBlockStateCode enum value + SubnetCidrBlockStateCodeFailing = "failing" + + // SubnetCidrBlockStateCodeFailed is a SubnetCidrBlockStateCode enum value + SubnetCidrBlockStateCodeFailed = "failed" +) + +const ( + // SubnetStatePending is a SubnetState enum value + SubnetStatePending = "pending" + + // SubnetStateAvailable is a SubnetState enum value + SubnetStateAvailable = "available" +) + +const ( + // SummaryStatusOk is a SummaryStatus enum value + SummaryStatusOk = "ok" + + // SummaryStatusImpaired is a SummaryStatus enum value + SummaryStatusImpaired = "impaired" + + // SummaryStatusInsufficientData is a SummaryStatus enum value + SummaryStatusInsufficientData = "insufficient-data" + + // SummaryStatusNotApplicable is a SummaryStatus enum value + SummaryStatusNotApplicable = "not-applicable" + + // SummaryStatusInitializing is a SummaryStatus enum value + SummaryStatusInitializing = "initializing" +) + +const ( + // TelemetryStatusUp is a TelemetryStatus enum value + TelemetryStatusUp = "UP" + + // TelemetryStatusDown is a TelemetryStatus enum value + TelemetryStatusDown = "DOWN" +) + +const ( + // TenancyDefault is a Tenancy enum value + TenancyDefault = "default" + + // TenancyDedicated is a Tenancy enum value + TenancyDedicated = "dedicated" + + // TenancyHost is a Tenancy enum value + TenancyHost = "host" +) + +const ( + // TrafficDirectionIngress is a TrafficDirection enum value + TrafficDirectionIngress = "ingress" + + // TrafficDirectionEgress is a TrafficDirection enum value + TrafficDirectionEgress = "egress" +) + +const ( + // TrafficMirrorFilterRuleFieldDestinationPortRange is a TrafficMirrorFilterRuleField enum value + TrafficMirrorFilterRuleFieldDestinationPortRange = "destination-port-range" + + // TrafficMirrorFilterRuleFieldSourcePortRange is a TrafficMirrorFilterRuleField enum value + TrafficMirrorFilterRuleFieldSourcePortRange = "source-port-range" + + // TrafficMirrorFilterRuleFieldProtocol is a TrafficMirrorFilterRuleField enum value + TrafficMirrorFilterRuleFieldProtocol = "protocol" + + // TrafficMirrorFilterRuleFieldDescription is a TrafficMirrorFilterRuleField enum value + TrafficMirrorFilterRuleFieldDescription = "description" +) + +const ( + // TrafficMirrorNetworkServiceAmazonDns is a TrafficMirrorNetworkService enum value + TrafficMirrorNetworkServiceAmazonDns = "amazon-dns" +) + +const ( + // TrafficMirrorRuleActionAccept is a TrafficMirrorRuleAction enum value + TrafficMirrorRuleActionAccept = "accept" + + // TrafficMirrorRuleActionReject is a TrafficMirrorRuleAction enum value + TrafficMirrorRuleActionReject = "reject" +) + +const ( + // TrafficMirrorSessionFieldPacketLength is a TrafficMirrorSessionField enum value + TrafficMirrorSessionFieldPacketLength = "packet-length" + + // TrafficMirrorSessionFieldDescription is a TrafficMirrorSessionField enum value + TrafficMirrorSessionFieldDescription = "description" + + // TrafficMirrorSessionFieldVirtualNetworkId is a TrafficMirrorSessionField enum value + TrafficMirrorSessionFieldVirtualNetworkId = "virtual-network-id" +) + +const ( + // TrafficMirrorTargetTypeNetworkInterface is a TrafficMirrorTargetType enum value + TrafficMirrorTargetTypeNetworkInterface = "network-interface" + + // TrafficMirrorTargetTypeNetworkLoadBalancer is a TrafficMirrorTargetType enum value + TrafficMirrorTargetTypeNetworkLoadBalancer = "network-load-balancer" +) + +const ( + // TrafficTypeAccept is a TrafficType enum value + TrafficTypeAccept = "ACCEPT" + + // TrafficTypeReject is a TrafficType enum value + TrafficTypeReject = "REJECT" + + // TrafficTypeAll is a TrafficType enum value + TrafficTypeAll = "ALL" +) + +const ( + // TransitGatewayAssociationStateAssociating is a TransitGatewayAssociationState enum value + TransitGatewayAssociationStateAssociating = "associating" + + // TransitGatewayAssociationStateAssociated is a TransitGatewayAssociationState enum value + TransitGatewayAssociationStateAssociated = "associated" + + // TransitGatewayAssociationStateDisassociating is a TransitGatewayAssociationState enum value + TransitGatewayAssociationStateDisassociating = "disassociating" + + // TransitGatewayAssociationStateDisassociated is a TransitGatewayAssociationState enum value + TransitGatewayAssociationStateDisassociated = "disassociated" +) + +const ( + // TransitGatewayAttachmentResourceTypeVpc is a TransitGatewayAttachmentResourceType enum value + TransitGatewayAttachmentResourceTypeVpc = "vpc" + + // TransitGatewayAttachmentResourceTypeVpn is a TransitGatewayAttachmentResourceType enum value + TransitGatewayAttachmentResourceTypeVpn = "vpn" + + // TransitGatewayAttachmentResourceTypeDirectConnectGateway is a TransitGatewayAttachmentResourceType enum value + TransitGatewayAttachmentResourceTypeDirectConnectGateway = "direct-connect-gateway" +) + +const ( + // TransitGatewayAttachmentStatePendingAcceptance is a TransitGatewayAttachmentState enum value + TransitGatewayAttachmentStatePendingAcceptance = "pendingAcceptance" + + // TransitGatewayAttachmentStateRollingBack is a TransitGatewayAttachmentState enum value + TransitGatewayAttachmentStateRollingBack = "rollingBack" + + // TransitGatewayAttachmentStatePending is a TransitGatewayAttachmentState enum value + TransitGatewayAttachmentStatePending = "pending" + + // TransitGatewayAttachmentStateAvailable is a TransitGatewayAttachmentState enum value + TransitGatewayAttachmentStateAvailable = "available" + + // TransitGatewayAttachmentStateModifying is a TransitGatewayAttachmentState enum value + TransitGatewayAttachmentStateModifying = "modifying" + + // TransitGatewayAttachmentStateDeleting is a TransitGatewayAttachmentState enum value + TransitGatewayAttachmentStateDeleting = "deleting" + + // TransitGatewayAttachmentStateDeleted is a TransitGatewayAttachmentState enum value + TransitGatewayAttachmentStateDeleted = "deleted" + + // TransitGatewayAttachmentStateFailed is a TransitGatewayAttachmentState enum value + TransitGatewayAttachmentStateFailed = "failed" + + // TransitGatewayAttachmentStateRejected is a TransitGatewayAttachmentState enum value + TransitGatewayAttachmentStateRejected = "rejected" + + // TransitGatewayAttachmentStateRejecting is a TransitGatewayAttachmentState enum value + TransitGatewayAttachmentStateRejecting = "rejecting" + + // TransitGatewayAttachmentStateFailing is a TransitGatewayAttachmentState enum value + TransitGatewayAttachmentStateFailing = "failing" +) + +const ( + // TransitGatewayPropagationStateEnabling is a TransitGatewayPropagationState enum value + TransitGatewayPropagationStateEnabling = "enabling" + + // TransitGatewayPropagationStateEnabled is a TransitGatewayPropagationState enum value + TransitGatewayPropagationStateEnabled = "enabled" + + // TransitGatewayPropagationStateDisabling is a TransitGatewayPropagationState enum value + TransitGatewayPropagationStateDisabling = "disabling" + + // TransitGatewayPropagationStateDisabled is a TransitGatewayPropagationState enum value + TransitGatewayPropagationStateDisabled = "disabled" +) + +const ( + // TransitGatewayRouteStatePending is a TransitGatewayRouteState enum value + TransitGatewayRouteStatePending = "pending" + + // TransitGatewayRouteStateActive is a TransitGatewayRouteState enum value + TransitGatewayRouteStateActive = "active" + + // TransitGatewayRouteStateBlackhole is a TransitGatewayRouteState enum value + TransitGatewayRouteStateBlackhole = "blackhole" + + // TransitGatewayRouteStateDeleting is a TransitGatewayRouteState enum value + TransitGatewayRouteStateDeleting = "deleting" + + // TransitGatewayRouteStateDeleted is a TransitGatewayRouteState enum value + TransitGatewayRouteStateDeleted = "deleted" +) + +const ( + // TransitGatewayRouteTableStatePending is a TransitGatewayRouteTableState enum value + TransitGatewayRouteTableStatePending = "pending" + + // TransitGatewayRouteTableStateAvailable is a TransitGatewayRouteTableState enum value + TransitGatewayRouteTableStateAvailable = "available" + + // TransitGatewayRouteTableStateDeleting is a TransitGatewayRouteTableState enum value + TransitGatewayRouteTableStateDeleting = "deleting" + + // TransitGatewayRouteTableStateDeleted is a TransitGatewayRouteTableState enum value + TransitGatewayRouteTableStateDeleted = "deleted" +) + +const ( + // TransitGatewayRouteTypeStatic is a TransitGatewayRouteType enum value + TransitGatewayRouteTypeStatic = "static" + + // TransitGatewayRouteTypePropagated is a TransitGatewayRouteType enum value + TransitGatewayRouteTypePropagated = "propagated" +) + +const ( + // TransitGatewayStatePending is a TransitGatewayState enum value + TransitGatewayStatePending = "pending" + + // TransitGatewayStateAvailable is a TransitGatewayState enum value + TransitGatewayStateAvailable = "available" + + // TransitGatewayStateModifying is a TransitGatewayState enum value + TransitGatewayStateModifying = "modifying" + + // TransitGatewayStateDeleting is a TransitGatewayState enum value + TransitGatewayStateDeleting = "deleting" + + // TransitGatewayStateDeleted is a TransitGatewayState enum value + TransitGatewayStateDeleted = "deleted" +) + +const ( + // TransportProtocolTcp is a TransportProtocol enum value + TransportProtocolTcp = "tcp" + + // TransportProtocolUdp is a TransportProtocol enum value + TransportProtocolUdp = "udp" +) + +const ( + // UnsuccessfulInstanceCreditSpecificationErrorCodeInvalidInstanceIdMalformed is a UnsuccessfulInstanceCreditSpecificationErrorCode enum value + UnsuccessfulInstanceCreditSpecificationErrorCodeInvalidInstanceIdMalformed = "InvalidInstanceID.Malformed" + + // UnsuccessfulInstanceCreditSpecificationErrorCodeInvalidInstanceIdNotFound is a UnsuccessfulInstanceCreditSpecificationErrorCode enum value + UnsuccessfulInstanceCreditSpecificationErrorCodeInvalidInstanceIdNotFound = "InvalidInstanceID.NotFound" + + // UnsuccessfulInstanceCreditSpecificationErrorCodeIncorrectInstanceState is a UnsuccessfulInstanceCreditSpecificationErrorCode enum value + UnsuccessfulInstanceCreditSpecificationErrorCodeIncorrectInstanceState = "IncorrectInstanceState" + + // UnsuccessfulInstanceCreditSpecificationErrorCodeInstanceCreditSpecificationNotSupported is a UnsuccessfulInstanceCreditSpecificationErrorCode enum value + UnsuccessfulInstanceCreditSpecificationErrorCodeInstanceCreditSpecificationNotSupported = "InstanceCreditSpecification.NotSupported" +) + +const ( + // VirtualizationTypeHvm is a VirtualizationType enum value + VirtualizationTypeHvm = "hvm" + + // VirtualizationTypeParavirtual is a VirtualizationType enum value + VirtualizationTypeParavirtual = "paravirtual" +) + +const ( + // VolumeAttachmentStateAttaching is a VolumeAttachmentState enum value + VolumeAttachmentStateAttaching = "attaching" + + // VolumeAttachmentStateAttached is a VolumeAttachmentState enum value + VolumeAttachmentStateAttached = "attached" + + // VolumeAttachmentStateDetaching is a VolumeAttachmentState enum value + VolumeAttachmentStateDetaching = "detaching" + + // VolumeAttachmentStateDetached is a VolumeAttachmentState enum value + VolumeAttachmentStateDetached = "detached" + + // VolumeAttachmentStateBusy is a VolumeAttachmentState enum value + VolumeAttachmentStateBusy = "busy" +) + +const ( + // VolumeAttributeNameAutoEnableIo is a VolumeAttributeName enum value + VolumeAttributeNameAutoEnableIo = "autoEnableIO" + + // VolumeAttributeNameProductCodes is a VolumeAttributeName enum value + VolumeAttributeNameProductCodes = "productCodes" +) + +const ( + // VolumeModificationStateModifying is a VolumeModificationState enum value + VolumeModificationStateModifying = "modifying" + + // VolumeModificationStateOptimizing is a VolumeModificationState enum value + VolumeModificationStateOptimizing = "optimizing" + + // VolumeModificationStateCompleted is a VolumeModificationState enum value + VolumeModificationStateCompleted = "completed" + + // VolumeModificationStateFailed is a VolumeModificationState enum value + VolumeModificationStateFailed = "failed" +) + +const ( + // VolumeStateCreating is a VolumeState enum value + VolumeStateCreating = "creating" + + // VolumeStateAvailable is a VolumeState enum value + VolumeStateAvailable = "available" + + // VolumeStateInUse is a VolumeState enum value + VolumeStateInUse = "in-use" + + // VolumeStateDeleting is a VolumeState enum value + VolumeStateDeleting = "deleting" + + // VolumeStateDeleted is a VolumeState enum value + VolumeStateDeleted = "deleted" + + // VolumeStateError is a VolumeState enum value + VolumeStateError = "error" +) + +const ( + // VolumeStatusInfoStatusOk is a VolumeStatusInfoStatus enum value + VolumeStatusInfoStatusOk = "ok" + + // VolumeStatusInfoStatusImpaired is a VolumeStatusInfoStatus enum value + VolumeStatusInfoStatusImpaired = "impaired" + + // VolumeStatusInfoStatusInsufficientData is a VolumeStatusInfoStatus enum value + VolumeStatusInfoStatusInsufficientData = "insufficient-data" +) + +const ( + // VolumeStatusNameIoEnabled is a VolumeStatusName enum value + VolumeStatusNameIoEnabled = "io-enabled" + + // VolumeStatusNameIoPerformance is a VolumeStatusName enum value + VolumeStatusNameIoPerformance = "io-performance" +) + +const ( + // VolumeTypeStandard is a VolumeType enum value + VolumeTypeStandard = "standard" + + // VolumeTypeIo1 is a VolumeType enum value + VolumeTypeIo1 = "io1" + + // VolumeTypeGp2 is a VolumeType enum value + VolumeTypeGp2 = "gp2" + + // VolumeTypeSc1 is a VolumeType enum value + VolumeTypeSc1 = "sc1" + + // VolumeTypeSt1 is a VolumeType enum value + VolumeTypeSt1 = "st1" +) + +const ( + // VpcAttributeNameEnableDnsSupport is a VpcAttributeName enum value + VpcAttributeNameEnableDnsSupport = "enableDnsSupport" + + // VpcAttributeNameEnableDnsHostnames is a VpcAttributeName enum value + VpcAttributeNameEnableDnsHostnames = "enableDnsHostnames" +) + +const ( + // VpcCidrBlockStateCodeAssociating is a VpcCidrBlockStateCode enum value + VpcCidrBlockStateCodeAssociating = "associating" + + // VpcCidrBlockStateCodeAssociated is a VpcCidrBlockStateCode enum value + VpcCidrBlockStateCodeAssociated = "associated" + + // VpcCidrBlockStateCodeDisassociating is a VpcCidrBlockStateCode enum value + VpcCidrBlockStateCodeDisassociating = "disassociating" + + // VpcCidrBlockStateCodeDisassociated is a VpcCidrBlockStateCode enum value + VpcCidrBlockStateCodeDisassociated = "disassociated" + + // VpcCidrBlockStateCodeFailing is a VpcCidrBlockStateCode enum value + VpcCidrBlockStateCodeFailing = "failing" + + // VpcCidrBlockStateCodeFailed is a VpcCidrBlockStateCode enum value + VpcCidrBlockStateCodeFailed = "failed" +) + +const ( + // VpcEndpointTypeInterface is a VpcEndpointType enum value + VpcEndpointTypeInterface = "Interface" + + // VpcEndpointTypeGateway is a VpcEndpointType enum value + VpcEndpointTypeGateway = "Gateway" +) + +const ( + // VpcPeeringConnectionStateReasonCodeInitiatingRequest is a VpcPeeringConnectionStateReasonCode enum value + VpcPeeringConnectionStateReasonCodeInitiatingRequest = "initiating-request" + + // VpcPeeringConnectionStateReasonCodePendingAcceptance is a VpcPeeringConnectionStateReasonCode enum value + VpcPeeringConnectionStateReasonCodePendingAcceptance = "pending-acceptance" + + // VpcPeeringConnectionStateReasonCodeActive is a VpcPeeringConnectionStateReasonCode enum value + VpcPeeringConnectionStateReasonCodeActive = "active" + + // VpcPeeringConnectionStateReasonCodeDeleted is a VpcPeeringConnectionStateReasonCode enum value + VpcPeeringConnectionStateReasonCodeDeleted = "deleted" + + // VpcPeeringConnectionStateReasonCodeRejected is a VpcPeeringConnectionStateReasonCode enum value + VpcPeeringConnectionStateReasonCodeRejected = "rejected" + + // VpcPeeringConnectionStateReasonCodeFailed is a VpcPeeringConnectionStateReasonCode enum value + VpcPeeringConnectionStateReasonCodeFailed = "failed" + + // VpcPeeringConnectionStateReasonCodeExpired is a VpcPeeringConnectionStateReasonCode enum value + VpcPeeringConnectionStateReasonCodeExpired = "expired" + + // VpcPeeringConnectionStateReasonCodeProvisioning is a VpcPeeringConnectionStateReasonCode enum value + VpcPeeringConnectionStateReasonCodeProvisioning = "provisioning" + + // VpcPeeringConnectionStateReasonCodeDeleting is a VpcPeeringConnectionStateReasonCode enum value + VpcPeeringConnectionStateReasonCodeDeleting = "deleting" +) + +const ( + // VpcStatePending is a VpcState enum value + VpcStatePending = "pending" + + // VpcStateAvailable is a VpcState enum value + VpcStateAvailable = "available" +) + +const ( + // VpcTenancyDefault is a VpcTenancy enum value + VpcTenancyDefault = "default" +) + +const ( + // VpnEcmpSupportValueEnable is a VpnEcmpSupportValue enum value + VpnEcmpSupportValueEnable = "enable" + + // VpnEcmpSupportValueDisable is a VpnEcmpSupportValue enum value + VpnEcmpSupportValueDisable = "disable" +) + +const ( + // VpnProtocolOpenvpn is a VpnProtocol enum value + VpnProtocolOpenvpn = "openvpn" +) + +const ( + // VpnStatePending is a VpnState enum value + VpnStatePending = "pending" + + // VpnStateAvailable is a VpnState enum value + VpnStateAvailable = "available" + + // VpnStateDeleting is a VpnState enum value + VpnStateDeleting = "deleting" + + // VpnStateDeleted is a VpnState enum value + VpnStateDeleted = "deleted" +) + +const ( + // VpnStaticRouteSourceStatic is a VpnStaticRouteSource enum value + VpnStaticRouteSourceStatic = "Static" +) + +const ( + // ScopeAvailabilityZone is a scope enum value + ScopeAvailabilityZone = "Availability Zone" + + // ScopeRegion is a scope enum value + ScopeRegion = "Region" +) diff --git a/vendor/github.com/aws/aws-sdk-go/service/ec2/customizations.go b/vendor/github.com/aws/aws-sdk-go/service/ec2/customizations.go new file mode 100644 index 0000000..efec8d8 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/ec2/customizations.go @@ -0,0 +1,87 @@ +package ec2 + +import ( + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awsutil" + "github.com/aws/aws-sdk-go/aws/client" + "github.com/aws/aws-sdk-go/aws/endpoints" + "github.com/aws/aws-sdk-go/aws/request" +) + +const ( + // customRetryerMinRetryDelay sets min retry delay + customRetryerMinRetryDelay = 1 * time.Second + + // customRetryerMaxRetryDelay sets max retry delay + customRetryerMaxRetryDelay = 8 * time.Second +) + +func init() { + initRequest = func(r *request.Request) { + if r.Operation.Name == opCopySnapshot { // fill the PresignedURL parameter + r.Handlers.Build.PushFront(fillPresignedURL) + } + + // only set the retryer on request if config doesn't have a retryer + if r.Config.Retryer == nil && (r.Operation.Name == opModifyNetworkInterfaceAttribute || r.Operation.Name == opAssignPrivateIpAddresses) { + r.Retryer = client.DefaultRetryer{ + NumMaxRetries: client.DefaultRetryerMaxNumRetries, + MinRetryDelay: customRetryerMinRetryDelay, + MinThrottleDelay: customRetryerMinRetryDelay, + MaxRetryDelay: customRetryerMaxRetryDelay, + MaxThrottleDelay: customRetryerMaxRetryDelay, + } + } + } +} + +func fillPresignedURL(r *request.Request) { + if !r.ParamsFilled() { + return + } + + origParams := r.Params.(*CopySnapshotInput) + + // Stop if PresignedURL/DestinationRegion is set + if origParams.PresignedUrl != nil || origParams.DestinationRegion != nil { + return + } + + origParams.DestinationRegion = r.Config.Region + newParams := awsutil.CopyOf(r.Params).(*CopySnapshotInput) + + // Create a new request based on the existing request. We will use this to + // presign the CopySnapshot request against the source region. + cfg := r.Config.Copy(aws.NewConfig(). + WithEndpoint(""). + WithRegion(aws.StringValue(origParams.SourceRegion))) + + clientInfo := r.ClientInfo + resolved, err := r.Config.EndpointResolver.EndpointFor( + clientInfo.ServiceName, aws.StringValue(cfg.Region), + func(opt *endpoints.Options) { + opt.DisableSSL = aws.BoolValue(cfg.DisableSSL) + opt.UseDualStack = aws.BoolValue(cfg.UseDualStack) + }, + ) + if err != nil { + r.Error = err + return + } + + clientInfo.Endpoint = resolved.URL + clientInfo.SigningRegion = resolved.SigningRegion + + // Presign a CopySnapshot request with modified params + req := request.New(*cfg, clientInfo, r.Handlers, r.Retryer, r.Operation, newParams, r.Data) + url, err := req.Presign(5 * time.Minute) // 5 minutes should be enough. + if err != nil { // bubble error back up to original request + r.Error = err + return + } + + // We have our URL, set it on params + origParams.PresignedUrl = &url +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/ec2/doc.go b/vendor/github.com/aws/aws-sdk-go/service/ec2/doc.go new file mode 100644 index 0000000..31c314e --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/ec2/doc.go @@ -0,0 +1,44 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +// Package ec2 provides the client and types for making API +// requests to Amazon Elastic Compute Cloud. +// +// Amazon Elastic Compute Cloud (Amazon EC2) provides secure and resizable computing +// capacity in the AWS cloud. Using Amazon EC2 eliminates the need to invest +// in hardware up front, so you can develop and deploy applications faster. +// +// To learn more, see the following resources: +// +// * Amazon EC2: AmazonEC2 product page (http://aws.amazon.com/ec2), Amazon +// EC2 documentation (http://aws.amazon.com/documentation/ec2) +// +// * Amazon EBS: Amazon EBS product page (http://aws.amazon.com/ebs), Amazon +// EBS documentation (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) +// +// * Amazon VPC: Amazon VPC product page (http://aws.amazon.com/vpc), Amazon +// VPC documentation (http://aws.amazon.com/documentation/vpc) +// +// * AWS VPN: AWS VPN product page (http://aws.amazon.com/vpn), AWS VPN documentation +// (http://aws.amazon.com/documentation/vpn) +// +// See https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15 for more information on this service. +// +// See ec2 package documentation for more information. +// https://docs.aws.amazon.com/sdk-for-go/api/service/ec2/ +// +// Using the Client +// +// To contact Amazon Elastic Compute Cloud with the SDK use the New function to create +// a new service client. With that client you can make API requests to the service. +// These clients are safe to use concurrently. +// +// See the SDK's documentation for more information on how to use the SDK. +// https://docs.aws.amazon.com/sdk-for-go/api/ +// +// See aws.Config documentation for more information on configuring SDK clients. +// https://docs.aws.amazon.com/sdk-for-go/api/aws/#Config +// +// See the Amazon Elastic Compute Cloud client EC2 for more +// information on creating client for this service. +// https://docs.aws.amazon.com/sdk-for-go/api/service/ec2/#New +package ec2 diff --git a/vendor/github.com/aws/aws-sdk-go/service/ec2/errors.go b/vendor/github.com/aws/aws-sdk-go/service/ec2/errors.go new file mode 100644 index 0000000..3d61d7e --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/ec2/errors.go @@ -0,0 +1,3 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +package ec2 diff --git a/vendor/github.com/aws/aws-sdk-go/service/ec2/service.go b/vendor/github.com/aws/aws-sdk-go/service/ec2/service.go new file mode 100644 index 0000000..b2b9fb8 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/ec2/service.go @@ -0,0 +1,96 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +package ec2 + +import ( + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/client" + "github.com/aws/aws-sdk-go/aws/client/metadata" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/aws/signer/v4" + "github.com/aws/aws-sdk-go/private/protocol/ec2query" +) + +// EC2 provides the API operation methods for making requests to +// Amazon Elastic Compute Cloud. See this package's package overview docs +// for details on the service. +// +// EC2 methods are safe to use concurrently. It is not safe to +// modify mutate any of the struct's properties though. +type EC2 struct { + *client.Client +} + +// Used for custom client initialization logic +var initClient func(*client.Client) + +// Used for custom request initialization logic +var initRequest func(*request.Request) + +// Service information constants +const ( + ServiceName = "ec2" // Name of service. + EndpointsID = ServiceName // ID to lookup a service endpoint with. + ServiceID = "EC2" // ServiceID is a unique identifer of a specific service. +) + +// New creates a new instance of the EC2 client with a session. +// If additional configuration is needed for the client instance use the optional +// aws.Config parameter to add your extra config. +// +// Example: +// // Create a EC2 client from just a session. +// svc := ec2.New(mySession) +// +// // Create a EC2 client with additional configuration +// svc := ec2.New(mySession, aws.NewConfig().WithRegion("us-west-2")) +func New(p client.ConfigProvider, cfgs ...*aws.Config) *EC2 { + c := p.ClientConfig(EndpointsID, cfgs...) + return newClient(*c.Config, c.Handlers, c.PartitionID, c.Endpoint, c.SigningRegion, c.SigningName) +} + +// newClient creates, initializes and returns a new service client instance. +func newClient(cfg aws.Config, handlers request.Handlers, partitionID, endpoint, signingRegion, signingName string) *EC2 { + svc := &EC2{ + Client: client.New( + cfg, + metadata.ClientInfo{ + ServiceName: ServiceName, + ServiceID: ServiceID, + SigningName: signingName, + SigningRegion: signingRegion, + PartitionID: partitionID, + Endpoint: endpoint, + APIVersion: "2016-11-15", + }, + handlers, + ), + } + + // Handlers + svc.Handlers.Sign.PushBackNamed(v4.SignRequestHandler) + svc.Handlers.Build.PushBackNamed(ec2query.BuildHandler) + svc.Handlers.Unmarshal.PushBackNamed(ec2query.UnmarshalHandler) + svc.Handlers.UnmarshalMeta.PushBackNamed(ec2query.UnmarshalMetaHandler) + svc.Handlers.UnmarshalError.PushBackNamed(ec2query.UnmarshalErrorHandler) + + // Run custom client initialization if present + if initClient != nil { + initClient(svc.Client) + } + + return svc +} + +// newRequest creates a new request for a EC2 operation and runs any +// custom request initialization. +func (c *EC2) newRequest(op *request.Operation, params, data interface{}) *request.Request { + req := c.NewRequest(op, params, data) + + // Run custom request initialization if present + if initRequest != nil { + initRequest(req) + } + + return req +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/ec2/waiters.go b/vendor/github.com/aws/aws-sdk-go/service/ec2/waiters.go new file mode 100644 index 0000000..0469f0f --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/ec2/waiters.go @@ -0,0 +1,1626 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +package ec2 + +import ( + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/request" +) + +// WaitUntilBundleTaskComplete uses the Amazon EC2 API operation +// DescribeBundleTasks to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilBundleTaskComplete(input *DescribeBundleTasksInput) error { + return c.WaitUntilBundleTaskCompleteWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilBundleTaskCompleteWithContext is an extended version of WaitUntilBundleTaskComplete. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilBundleTaskCompleteWithContext(ctx aws.Context, input *DescribeBundleTasksInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilBundleTaskComplete", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "BundleTasks[].State", + Expected: "complete", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAnyWaiterMatch, Argument: "BundleTasks[].State", + Expected: "failed", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeBundleTasksInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeBundleTasksRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilConversionTaskCancelled uses the Amazon EC2 API operation +// DescribeConversionTasks to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilConversionTaskCancelled(input *DescribeConversionTasksInput) error { + return c.WaitUntilConversionTaskCancelledWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilConversionTaskCancelledWithContext is an extended version of WaitUntilConversionTaskCancelled. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilConversionTaskCancelledWithContext(ctx aws.Context, input *DescribeConversionTasksInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilConversionTaskCancelled", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "ConversionTasks[].State", + Expected: "cancelled", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeConversionTasksInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeConversionTasksRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilConversionTaskCompleted uses the Amazon EC2 API operation +// DescribeConversionTasks to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilConversionTaskCompleted(input *DescribeConversionTasksInput) error { + return c.WaitUntilConversionTaskCompletedWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilConversionTaskCompletedWithContext is an extended version of WaitUntilConversionTaskCompleted. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilConversionTaskCompletedWithContext(ctx aws.Context, input *DescribeConversionTasksInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilConversionTaskCompleted", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "ConversionTasks[].State", + Expected: "completed", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAnyWaiterMatch, Argument: "ConversionTasks[].State", + Expected: "cancelled", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAnyWaiterMatch, Argument: "ConversionTasks[].State", + Expected: "cancelling", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeConversionTasksInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeConversionTasksRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilConversionTaskDeleted uses the Amazon EC2 API operation +// DescribeConversionTasks to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilConversionTaskDeleted(input *DescribeConversionTasksInput) error { + return c.WaitUntilConversionTaskDeletedWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilConversionTaskDeletedWithContext is an extended version of WaitUntilConversionTaskDeleted. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilConversionTaskDeletedWithContext(ctx aws.Context, input *DescribeConversionTasksInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilConversionTaskDeleted", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "ConversionTasks[].State", + Expected: "deleted", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeConversionTasksInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeConversionTasksRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilCustomerGatewayAvailable uses the Amazon EC2 API operation +// DescribeCustomerGateways to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilCustomerGatewayAvailable(input *DescribeCustomerGatewaysInput) error { + return c.WaitUntilCustomerGatewayAvailableWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilCustomerGatewayAvailableWithContext is an extended version of WaitUntilCustomerGatewayAvailable. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilCustomerGatewayAvailableWithContext(ctx aws.Context, input *DescribeCustomerGatewaysInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilCustomerGatewayAvailable", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "CustomerGateways[].State", + Expected: "available", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAnyWaiterMatch, Argument: "CustomerGateways[].State", + Expected: "deleted", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAnyWaiterMatch, Argument: "CustomerGateways[].State", + Expected: "deleting", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeCustomerGatewaysInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeCustomerGatewaysRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilExportTaskCancelled uses the Amazon EC2 API operation +// DescribeExportTasks to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilExportTaskCancelled(input *DescribeExportTasksInput) error { + return c.WaitUntilExportTaskCancelledWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilExportTaskCancelledWithContext is an extended version of WaitUntilExportTaskCancelled. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilExportTaskCancelledWithContext(ctx aws.Context, input *DescribeExportTasksInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilExportTaskCancelled", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "ExportTasks[].State", + Expected: "cancelled", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeExportTasksInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeExportTasksRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilExportTaskCompleted uses the Amazon EC2 API operation +// DescribeExportTasks to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilExportTaskCompleted(input *DescribeExportTasksInput) error { + return c.WaitUntilExportTaskCompletedWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilExportTaskCompletedWithContext is an extended version of WaitUntilExportTaskCompleted. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilExportTaskCompletedWithContext(ctx aws.Context, input *DescribeExportTasksInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilExportTaskCompleted", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "ExportTasks[].State", + Expected: "completed", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeExportTasksInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeExportTasksRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilImageAvailable uses the Amazon EC2 API operation +// DescribeImages to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilImageAvailable(input *DescribeImagesInput) error { + return c.WaitUntilImageAvailableWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilImageAvailableWithContext is an extended version of WaitUntilImageAvailable. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilImageAvailableWithContext(ctx aws.Context, input *DescribeImagesInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilImageAvailable", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "Images[].State", + Expected: "available", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAnyWaiterMatch, Argument: "Images[].State", + Expected: "failed", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeImagesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeImagesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilImageExists uses the Amazon EC2 API operation +// DescribeImages to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilImageExists(input *DescribeImagesInput) error { + return c.WaitUntilImageExistsWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilImageExistsWithContext is an extended version of WaitUntilImageExists. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilImageExistsWithContext(ctx aws.Context, input *DescribeImagesInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilImageExists", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathWaiterMatch, Argument: "length(Images[]) > `0`", + Expected: true, + }, + { + State: request.RetryWaiterState, + Matcher: request.ErrorWaiterMatch, + Expected: "InvalidAMIID.NotFound", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeImagesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeImagesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilInstanceExists uses the Amazon EC2 API operation +// DescribeInstances to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilInstanceExists(input *DescribeInstancesInput) error { + return c.WaitUntilInstanceExistsWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilInstanceExistsWithContext is an extended version of WaitUntilInstanceExists. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilInstanceExistsWithContext(ctx aws.Context, input *DescribeInstancesInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilInstanceExists", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(5 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathWaiterMatch, Argument: "length(Reservations[]) > `0`", + Expected: true, + }, + { + State: request.RetryWaiterState, + Matcher: request.ErrorWaiterMatch, + Expected: "InvalidInstanceID.NotFound", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeInstancesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeInstancesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilInstanceRunning uses the Amazon EC2 API operation +// DescribeInstances to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilInstanceRunning(input *DescribeInstancesInput) error { + return c.WaitUntilInstanceRunningWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilInstanceRunningWithContext is an extended version of WaitUntilInstanceRunning. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilInstanceRunningWithContext(ctx aws.Context, input *DescribeInstancesInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilInstanceRunning", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "Reservations[].Instances[].State.Name", + Expected: "running", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAnyWaiterMatch, Argument: "Reservations[].Instances[].State.Name", + Expected: "shutting-down", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAnyWaiterMatch, Argument: "Reservations[].Instances[].State.Name", + Expected: "terminated", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAnyWaiterMatch, Argument: "Reservations[].Instances[].State.Name", + Expected: "stopping", + }, + { + State: request.RetryWaiterState, + Matcher: request.ErrorWaiterMatch, + Expected: "InvalidInstanceID.NotFound", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeInstancesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeInstancesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilInstanceStatusOk uses the Amazon EC2 API operation +// DescribeInstanceStatus to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilInstanceStatusOk(input *DescribeInstanceStatusInput) error { + return c.WaitUntilInstanceStatusOkWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilInstanceStatusOkWithContext is an extended version of WaitUntilInstanceStatusOk. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilInstanceStatusOkWithContext(ctx aws.Context, input *DescribeInstanceStatusInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilInstanceStatusOk", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "InstanceStatuses[].InstanceStatus.Status", + Expected: "ok", + }, + { + State: request.RetryWaiterState, + Matcher: request.ErrorWaiterMatch, + Expected: "InvalidInstanceID.NotFound", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeInstanceStatusInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeInstanceStatusRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilInstanceStopped uses the Amazon EC2 API operation +// DescribeInstances to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilInstanceStopped(input *DescribeInstancesInput) error { + return c.WaitUntilInstanceStoppedWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilInstanceStoppedWithContext is an extended version of WaitUntilInstanceStopped. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilInstanceStoppedWithContext(ctx aws.Context, input *DescribeInstancesInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilInstanceStopped", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "Reservations[].Instances[].State.Name", + Expected: "stopped", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAnyWaiterMatch, Argument: "Reservations[].Instances[].State.Name", + Expected: "pending", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAnyWaiterMatch, Argument: "Reservations[].Instances[].State.Name", + Expected: "terminated", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeInstancesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeInstancesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilInstanceTerminated uses the Amazon EC2 API operation +// DescribeInstances to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilInstanceTerminated(input *DescribeInstancesInput) error { + return c.WaitUntilInstanceTerminatedWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilInstanceTerminatedWithContext is an extended version of WaitUntilInstanceTerminated. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilInstanceTerminatedWithContext(ctx aws.Context, input *DescribeInstancesInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilInstanceTerminated", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "Reservations[].Instances[].State.Name", + Expected: "terminated", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAnyWaiterMatch, Argument: "Reservations[].Instances[].State.Name", + Expected: "pending", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAnyWaiterMatch, Argument: "Reservations[].Instances[].State.Name", + Expected: "stopping", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeInstancesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeInstancesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilKeyPairExists uses the Amazon EC2 API operation +// DescribeKeyPairs to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilKeyPairExists(input *DescribeKeyPairsInput) error { + return c.WaitUntilKeyPairExistsWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilKeyPairExistsWithContext is an extended version of WaitUntilKeyPairExists. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilKeyPairExistsWithContext(ctx aws.Context, input *DescribeKeyPairsInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilKeyPairExists", + MaxAttempts: 6, + Delay: request.ConstantWaiterDelay(5 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathWaiterMatch, Argument: "length(KeyPairs[].KeyName) > `0`", + Expected: true, + }, + { + State: request.RetryWaiterState, + Matcher: request.ErrorWaiterMatch, + Expected: "InvalidKeyPair.NotFound", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeKeyPairsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeKeyPairsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilNatGatewayAvailable uses the Amazon EC2 API operation +// DescribeNatGateways to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilNatGatewayAvailable(input *DescribeNatGatewaysInput) error { + return c.WaitUntilNatGatewayAvailableWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilNatGatewayAvailableWithContext is an extended version of WaitUntilNatGatewayAvailable. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilNatGatewayAvailableWithContext(ctx aws.Context, input *DescribeNatGatewaysInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilNatGatewayAvailable", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "NatGateways[].State", + Expected: "available", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAnyWaiterMatch, Argument: "NatGateways[].State", + Expected: "failed", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAnyWaiterMatch, Argument: "NatGateways[].State", + Expected: "deleting", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAnyWaiterMatch, Argument: "NatGateways[].State", + Expected: "deleted", + }, + { + State: request.RetryWaiterState, + Matcher: request.ErrorWaiterMatch, + Expected: "NatGatewayNotFound", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeNatGatewaysInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeNatGatewaysRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilNetworkInterfaceAvailable uses the Amazon EC2 API operation +// DescribeNetworkInterfaces to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilNetworkInterfaceAvailable(input *DescribeNetworkInterfacesInput) error { + return c.WaitUntilNetworkInterfaceAvailableWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilNetworkInterfaceAvailableWithContext is an extended version of WaitUntilNetworkInterfaceAvailable. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilNetworkInterfaceAvailableWithContext(ctx aws.Context, input *DescribeNetworkInterfacesInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilNetworkInterfaceAvailable", + MaxAttempts: 10, + Delay: request.ConstantWaiterDelay(20 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "NetworkInterfaces[].Status", + Expected: "available", + }, + { + State: request.FailureWaiterState, + Matcher: request.ErrorWaiterMatch, + Expected: "InvalidNetworkInterfaceID.NotFound", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeNetworkInterfacesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeNetworkInterfacesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilPasswordDataAvailable uses the Amazon EC2 API operation +// GetPasswordData to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilPasswordDataAvailable(input *GetPasswordDataInput) error { + return c.WaitUntilPasswordDataAvailableWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilPasswordDataAvailableWithContext is an extended version of WaitUntilPasswordDataAvailable. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilPasswordDataAvailableWithContext(ctx aws.Context, input *GetPasswordDataInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilPasswordDataAvailable", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathWaiterMatch, Argument: "length(PasswordData) > `0`", + Expected: true, + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *GetPasswordDataInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.GetPasswordDataRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilSnapshotCompleted uses the Amazon EC2 API operation +// DescribeSnapshots to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilSnapshotCompleted(input *DescribeSnapshotsInput) error { + return c.WaitUntilSnapshotCompletedWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilSnapshotCompletedWithContext is an extended version of WaitUntilSnapshotCompleted. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilSnapshotCompletedWithContext(ctx aws.Context, input *DescribeSnapshotsInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilSnapshotCompleted", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "Snapshots[].State", + Expected: "completed", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeSnapshotsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeSnapshotsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilSpotInstanceRequestFulfilled uses the Amazon EC2 API operation +// DescribeSpotInstanceRequests to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilSpotInstanceRequestFulfilled(input *DescribeSpotInstanceRequestsInput) error { + return c.WaitUntilSpotInstanceRequestFulfilledWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilSpotInstanceRequestFulfilledWithContext is an extended version of WaitUntilSpotInstanceRequestFulfilled. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilSpotInstanceRequestFulfilledWithContext(ctx aws.Context, input *DescribeSpotInstanceRequestsInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilSpotInstanceRequestFulfilled", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "SpotInstanceRequests[].Status.Code", + Expected: "fulfilled", + }, + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "SpotInstanceRequests[].Status.Code", + Expected: "request-canceled-and-instance-running", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAnyWaiterMatch, Argument: "SpotInstanceRequests[].Status.Code", + Expected: "schedule-expired", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAnyWaiterMatch, Argument: "SpotInstanceRequests[].Status.Code", + Expected: "canceled-before-fulfillment", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAnyWaiterMatch, Argument: "SpotInstanceRequests[].Status.Code", + Expected: "bad-parameters", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAnyWaiterMatch, Argument: "SpotInstanceRequests[].Status.Code", + Expected: "system-error", + }, + { + State: request.RetryWaiterState, + Matcher: request.ErrorWaiterMatch, + Expected: "InvalidSpotInstanceRequestID.NotFound", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeSpotInstanceRequestsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeSpotInstanceRequestsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilSubnetAvailable uses the Amazon EC2 API operation +// DescribeSubnets to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilSubnetAvailable(input *DescribeSubnetsInput) error { + return c.WaitUntilSubnetAvailableWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilSubnetAvailableWithContext is an extended version of WaitUntilSubnetAvailable. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilSubnetAvailableWithContext(ctx aws.Context, input *DescribeSubnetsInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilSubnetAvailable", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "Subnets[].State", + Expected: "available", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeSubnetsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeSubnetsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilSystemStatusOk uses the Amazon EC2 API operation +// DescribeInstanceStatus to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilSystemStatusOk(input *DescribeInstanceStatusInput) error { + return c.WaitUntilSystemStatusOkWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilSystemStatusOkWithContext is an extended version of WaitUntilSystemStatusOk. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilSystemStatusOkWithContext(ctx aws.Context, input *DescribeInstanceStatusInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilSystemStatusOk", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "InstanceStatuses[].SystemStatus.Status", + Expected: "ok", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeInstanceStatusInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeInstanceStatusRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilVolumeAvailable uses the Amazon EC2 API operation +// DescribeVolumes to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilVolumeAvailable(input *DescribeVolumesInput) error { + return c.WaitUntilVolumeAvailableWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilVolumeAvailableWithContext is an extended version of WaitUntilVolumeAvailable. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilVolumeAvailableWithContext(ctx aws.Context, input *DescribeVolumesInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilVolumeAvailable", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "Volumes[].State", + Expected: "available", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAnyWaiterMatch, Argument: "Volumes[].State", + Expected: "deleted", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeVolumesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeVolumesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilVolumeDeleted uses the Amazon EC2 API operation +// DescribeVolumes to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilVolumeDeleted(input *DescribeVolumesInput) error { + return c.WaitUntilVolumeDeletedWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilVolumeDeletedWithContext is an extended version of WaitUntilVolumeDeleted. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilVolumeDeletedWithContext(ctx aws.Context, input *DescribeVolumesInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilVolumeDeleted", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "Volumes[].State", + Expected: "deleted", + }, + { + State: request.SuccessWaiterState, + Matcher: request.ErrorWaiterMatch, + Expected: "InvalidVolume.NotFound", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeVolumesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeVolumesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilVolumeInUse uses the Amazon EC2 API operation +// DescribeVolumes to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilVolumeInUse(input *DescribeVolumesInput) error { + return c.WaitUntilVolumeInUseWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilVolumeInUseWithContext is an extended version of WaitUntilVolumeInUse. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilVolumeInUseWithContext(ctx aws.Context, input *DescribeVolumesInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilVolumeInUse", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "Volumes[].State", + Expected: "in-use", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAnyWaiterMatch, Argument: "Volumes[].State", + Expected: "deleted", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeVolumesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeVolumesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilVpcAvailable uses the Amazon EC2 API operation +// DescribeVpcs to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilVpcAvailable(input *DescribeVpcsInput) error { + return c.WaitUntilVpcAvailableWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilVpcAvailableWithContext is an extended version of WaitUntilVpcAvailable. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilVpcAvailableWithContext(ctx aws.Context, input *DescribeVpcsInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilVpcAvailable", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "Vpcs[].State", + Expected: "available", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeVpcsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeVpcsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilVpcExists uses the Amazon EC2 API operation +// DescribeVpcs to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilVpcExists(input *DescribeVpcsInput) error { + return c.WaitUntilVpcExistsWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilVpcExistsWithContext is an extended version of WaitUntilVpcExists. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilVpcExistsWithContext(ctx aws.Context, input *DescribeVpcsInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilVpcExists", + MaxAttempts: 5, + Delay: request.ConstantWaiterDelay(1 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.StatusWaiterMatch, + Expected: 200, + }, + { + State: request.RetryWaiterState, + Matcher: request.ErrorWaiterMatch, + Expected: "InvalidVpcID.NotFound", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeVpcsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeVpcsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilVpcPeeringConnectionDeleted uses the Amazon EC2 API operation +// DescribeVpcPeeringConnections to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilVpcPeeringConnectionDeleted(input *DescribeVpcPeeringConnectionsInput) error { + return c.WaitUntilVpcPeeringConnectionDeletedWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilVpcPeeringConnectionDeletedWithContext is an extended version of WaitUntilVpcPeeringConnectionDeleted. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilVpcPeeringConnectionDeletedWithContext(ctx aws.Context, input *DescribeVpcPeeringConnectionsInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilVpcPeeringConnectionDeleted", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "VpcPeeringConnections[].Status.Code", + Expected: "deleted", + }, + { + State: request.SuccessWaiterState, + Matcher: request.ErrorWaiterMatch, + Expected: "InvalidVpcPeeringConnectionID.NotFound", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeVpcPeeringConnectionsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeVpcPeeringConnectionsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilVpcPeeringConnectionExists uses the Amazon EC2 API operation +// DescribeVpcPeeringConnections to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilVpcPeeringConnectionExists(input *DescribeVpcPeeringConnectionsInput) error { + return c.WaitUntilVpcPeeringConnectionExistsWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilVpcPeeringConnectionExistsWithContext is an extended version of WaitUntilVpcPeeringConnectionExists. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilVpcPeeringConnectionExistsWithContext(ctx aws.Context, input *DescribeVpcPeeringConnectionsInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilVpcPeeringConnectionExists", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.StatusWaiterMatch, + Expected: 200, + }, + { + State: request.RetryWaiterState, + Matcher: request.ErrorWaiterMatch, + Expected: "InvalidVpcPeeringConnectionID.NotFound", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeVpcPeeringConnectionsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeVpcPeeringConnectionsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilVpnConnectionAvailable uses the Amazon EC2 API operation +// DescribeVpnConnections to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilVpnConnectionAvailable(input *DescribeVpnConnectionsInput) error { + return c.WaitUntilVpnConnectionAvailableWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilVpnConnectionAvailableWithContext is an extended version of WaitUntilVpnConnectionAvailable. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilVpnConnectionAvailableWithContext(ctx aws.Context, input *DescribeVpnConnectionsInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilVpnConnectionAvailable", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "VpnConnections[].State", + Expected: "available", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAnyWaiterMatch, Argument: "VpnConnections[].State", + Expected: "deleting", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAnyWaiterMatch, Argument: "VpnConnections[].State", + Expected: "deleted", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeVpnConnectionsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeVpnConnectionsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilVpnConnectionDeleted uses the Amazon EC2 API operation +// DescribeVpnConnections to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *EC2) WaitUntilVpnConnectionDeleted(input *DescribeVpnConnectionsInput) error { + return c.WaitUntilVpnConnectionDeletedWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilVpnConnectionDeletedWithContext is an extended version of WaitUntilVpnConnectionDeleted. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) WaitUntilVpnConnectionDeletedWithContext(ctx aws.Context, input *DescribeVpnConnectionsInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilVpnConnectionDeleted", + MaxAttempts: 40, + Delay: request.ConstantWaiterDelay(15 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.PathAllWaiterMatch, Argument: "VpnConnections[].State", + Expected: "deleted", + }, + { + State: request.FailureWaiterState, + Matcher: request.PathAnyWaiterMatch, Argument: "VpnConnections[].State", + Expected: "pending", + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *DescribeVpnConnectionsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeVpnConnectionsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/api.go b/vendor/github.com/aws/aws-sdk-go/service/s3/api.go new file mode 100644 index 0000000..630237b --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/api.go @@ -0,0 +1,28992 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +package s3 + +import ( + "bytes" + "fmt" + "io" + "sync" + "sync/atomic" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/awsutil" + "github.com/aws/aws-sdk-go/aws/client" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/private/protocol" + "github.com/aws/aws-sdk-go/private/protocol/eventstream" + "github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi" + "github.com/aws/aws-sdk-go/private/protocol/rest" + "github.com/aws/aws-sdk-go/private/protocol/restxml" +) + +const opAbortMultipartUpload = "AbortMultipartUpload" + +// AbortMultipartUploadRequest generates a "aws/request.Request" representing the +// client's request for the AbortMultipartUpload operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AbortMultipartUpload for more information on using the AbortMultipartUpload +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AbortMultipartUploadRequest method. +// req, resp := client.AbortMultipartUploadRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/AbortMultipartUpload +func (c *S3) AbortMultipartUploadRequest(input *AbortMultipartUploadInput) (req *request.Request, output *AbortMultipartUploadOutput) { + op := &request.Operation{ + Name: opAbortMultipartUpload, + HTTPMethod: "DELETE", + HTTPPath: "/{Bucket}/{Key+}", + } + + if input == nil { + input = &AbortMultipartUploadInput{} + } + + output = &AbortMultipartUploadOutput{} + req = c.newRequest(op, input, output) + return +} + +// AbortMultipartUpload API operation for Amazon Simple Storage Service. +// +// This operation aborts a multipart upload. After a multipart upload is aborted, +// no additional parts can be uploaded using that upload ID. The storage consumed +// by any previously uploaded parts will be freed. However, if any part uploads +// are currently in progress, those part uploads might or might not succeed. +// As a result, it might be necessary to abort a given multipart upload multiple +// times in order to completely free all storage consumed by all parts. +// +// To verify that all parts have been removed, so you don't get charged for +// the part storage, you should call the ListParts operation and ensure the +// parts list is empty. +// +// For information on permissions required to use the multipart upload API, +// see Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html). +// +// The following operations are related to AbortMultipartUpload +// +// * CreateMultipartUpload +// +// * UploadPart +// +// * CompleteMultipartUpload +// +// * ListParts +// +// * ListMultipartUploads +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation AbortMultipartUpload for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchUpload "NoSuchUpload" +// The specified multipart upload does not exist. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/AbortMultipartUpload +func (c *S3) AbortMultipartUpload(input *AbortMultipartUploadInput) (*AbortMultipartUploadOutput, error) { + req, out := c.AbortMultipartUploadRequest(input) + return out, req.Send() +} + +// AbortMultipartUploadWithContext is the same as AbortMultipartUpload with the addition of +// the ability to pass a context and additional request options. +// +// See AbortMultipartUpload for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) AbortMultipartUploadWithContext(ctx aws.Context, input *AbortMultipartUploadInput, opts ...request.Option) (*AbortMultipartUploadOutput, error) { + req, out := c.AbortMultipartUploadRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCompleteMultipartUpload = "CompleteMultipartUpload" + +// CompleteMultipartUploadRequest generates a "aws/request.Request" representing the +// client's request for the CompleteMultipartUpload operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CompleteMultipartUpload for more information on using the CompleteMultipartUpload +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CompleteMultipartUploadRequest method. +// req, resp := client.CompleteMultipartUploadRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CompleteMultipartUpload +func (c *S3) CompleteMultipartUploadRequest(input *CompleteMultipartUploadInput) (req *request.Request, output *CompleteMultipartUploadOutput) { + op := &request.Operation{ + Name: opCompleteMultipartUpload, + HTTPMethod: "POST", + HTTPPath: "/{Bucket}/{Key+}", + } + + if input == nil { + input = &CompleteMultipartUploadInput{} + } + + output = &CompleteMultipartUploadOutput{} + req = c.newRequest(op, input, output) + return +} + +// CompleteMultipartUpload API operation for Amazon Simple Storage Service. +// +// Completes a multipart upload by assembling previously uploaded parts. +// +// You first initiate the multipart upload and then upload all parts using the +// UploadPart operation. After successfully uploading all relevant parts of +// an upload, you call this operation to complete the upload. Upon receiving +// this request, Amazon S3 concatenates all the parts in ascending order by +// part number to create a new object. In the Complete Multipart Upload request, +// you must provide the parts list. You must ensure the parts list is complete, +// this operation concatenates the parts you provide in the list. For each part +// in the list, you must provide the part number and the ETag value, returned +// after that part was uploaded. +// +// Processing of a Complete Multipart Upload request could take several minutes +// to complete. After Amazon S3 begins processing the request, it sends an HTTP +// response header that specifies a 200 OK response. While processing is in +// progress, Amazon S3 periodically sends whitespace characters to keep the +// connection from timing out. Because a request could fail after the initial +// 200 OK response has been sent, it is important that you check the response +// body to determine whether the request succeeded. +// +// Note that if CompleteMultipartUpload fails, applications should be prepared +// to retry the failed requests. For more information, see Amazon S3 Error Best +// Practices (https://docs.aws.amazon.com/AmazonS3/latest/dev/ErrorBestPractices.html). +// +// For more information on multipart uploads, see Uploading Objects Using Multipart +// Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html). +// +// For information on permissions required to use the multipart upload API, +// see Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html). +// +// GetBucketLifecycle has the following special errors: +// +// * Error code: EntityTooSmall Description: Your proposed upload is smaller +// than the minimum allowed object size. Each part must be at least 5 MB +// in size, except the last part. 400 Bad Request +// +// * Error code: InvalidPart Description: One or more of the specified parts +// could not be found. The part might not have been uploaded, or the specified +// entity tag might not have matched the part's entity tag. 400 Bad Request +// +// * Error code: InvalidPartOrder Description: The list of parts was not +// in ascending order. The parts list must be specified in order by part +// number. 400 Bad Request +// +// * Error code: NoSuchUpload Description: The specified multipart upload +// does not exist. The upload ID might be invalid, or the multipart upload +// might have been aborted or completed. 404 Not Found +// +// The following operations are related to DeleteBucketMetricsConfiguration: +// +// * CreateMultipartUpload +// +// * UploadPart +// +// * AbortMultipartUpload +// +// * ListParts +// +// * ListMultipartUploads +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation CompleteMultipartUpload for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CompleteMultipartUpload +func (c *S3) CompleteMultipartUpload(input *CompleteMultipartUploadInput) (*CompleteMultipartUploadOutput, error) { + req, out := c.CompleteMultipartUploadRequest(input) + return out, req.Send() +} + +// CompleteMultipartUploadWithContext is the same as CompleteMultipartUpload with the addition of +// the ability to pass a context and additional request options. +// +// See CompleteMultipartUpload for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) CompleteMultipartUploadWithContext(ctx aws.Context, input *CompleteMultipartUploadInput, opts ...request.Option) (*CompleteMultipartUploadOutput, error) { + req, out := c.CompleteMultipartUploadRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCopyObject = "CopyObject" + +// CopyObjectRequest generates a "aws/request.Request" representing the +// client's request for the CopyObject operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CopyObject for more information on using the CopyObject +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CopyObjectRequest method. +// req, resp := client.CopyObjectRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CopyObject +func (c *S3) CopyObjectRequest(input *CopyObjectInput) (req *request.Request, output *CopyObjectOutput) { + op := &request.Operation{ + Name: opCopyObject, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}/{Key+}", + } + + if input == nil { + input = &CopyObjectInput{} + } + + output = &CopyObjectOutput{} + req = c.newRequest(op, input, output) + return +} + +// CopyObject API operation for Amazon Simple Storage Service. +// +// Creates a copy of an object that is already stored in Amazon S3. +// +// You can store individual objects of up to 5 TB in Amazon S3. You create a +// copy of your object up to 5 GB in size in a single atomic operation using +// this API. However, for copying an object greater than 5 GB, you must use +// the multipart upload Upload Part - Copy API. For conceptual information, +// see Copy Object Using the REST Multipart Upload API (https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjctsUsingRESTMPUapi.html). +// +// When copying an object, you can preserve all metadata (default) or specify +// new metadata. However, the ACL is not preserved and is set to private for +// the user making the request. To override the default ACL setting, specify +// a new ACL when generating a copy request. For more information, see Using +// ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html). +// +// Amazon S3 Transfer Acceleration does not support cross-region copies. If +// you request a cross-region copy using a Transfer Acceleration endpoint, you +// get a 400 Bad Request error. For more information about transfer acceleration, +// see Transfer Acceleration (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html). +// +// All copy requests must be authenticated. Additionally, you must have read +// access to the source object and write access to the destination bucket. For +// more information, see REST Authentication (https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html). +// Both the Region that you want to copy the object from and the Region that +// you want to copy the object to must be enabled for your account. +// +// To only copy an object under certain conditions, such as whether the Etag +// matches or whether the object was modified before or after a specified date, +// use the request parameters x-amz-copy-source-if-match, x-amz-copy-source-if-none-match, +// x-amz-copy-source-if-unmodified-since, or x-amz-copy-source-if-modified-since. +// +// All headers with the x-amz- prefix, including x-amz-copy-source, must be +// signed. +// +// You can use this operation to change the storage class of an object that +// is already stored in Amazon S3 using the StorageClass parameter. For more +// information, see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html). +// +// The source object that you are copying can be encrypted or unencrypted. If +// the source object is encrypted, it can be encrypted by server-side encryption +// using AWS-managed encryption keys or by using a customer-provided encryption +// key. When copying an object, you can request that Amazon S3 encrypt the target +// object by using either the AWS-managed encryption keys or by using your own +// encryption key. You can do this regardless of the form of server-side encryption +// that was used to encrypt the source, or even if the source object was not +// encrypted. For more information about server-side encryption, see Using Server-Side +// Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html). +// +// A copy request might return an error when Amazon S3 receives the copy request +// or while Amazon S3 is copying the files. If the error occurs before the copy +// operation starts, you receive a standard Amazon S3 error. If the error occurs +// during the copy operation, the error response is embedded in the 200 OK response. +// This means that a 200 OK response can contain either a success or an error. +// Design your application to parse the contents of the response and handle +// it appropriately. +// +// If the copy is successful, you receive a response with information about +// the copied object. +// +// If the request is an HTTP 1.1 request, the response is chunk encoded. If +// it were not, it would not contain the content-length, and you would need +// to read the entire body. +// +// Consider the following when using request headers: +// +// * Consideration 1 – If both the x-amz-copy-source-if-match and x-amz-copy-source-if-unmodified-since +// headers are present in the request and evaluate as follows, Amazon S3 +// returns 200 OK and copies the data: x-amz-copy-source-if-match condition +// evaluates to true x-amz-copy-source-if-unmodified-since condition evaluates +// to false +// +// * Consideration 2 – If both of the x-amz-copy-source-if-none-match and +// x-amz-copy-source-if-modified-since headers are present in the request +// and evaluate as follows, Amazon S3 returns the 412 Precondition Failed +// response code: x-amz-copy-source-if-none-match condition evaluates to +// false x-amz-copy-source-if-modified-since condition evaluates to true +// +// The copy request charge is based on the storage class and Region you specify +// for the destination object. For pricing information, see Amazon S3 Pricing +// (https://aws.amazon.com/s3/pricing/). +// +// Following are other considerations when using CopyObject: +// +// Versioning +// +// By default, x-amz-copy-source identifies the current version of an object +// to copy. (If the current version is a delete marker, Amazon S3 behaves as +// if the object was deleted.) To copy a different version, use the versionId +// subresource. +// +// If you enable versioning on the target bucket, Amazon S3 generates a unique +// version ID for the object being copied. This version ID is different from +// the version ID of the source object. Amazon S3 returns the version ID of +// the copied object in the x-amz-version-id response header in the response. +// +// If you do not enable versioning or suspend it on the target bucket, the version +// ID that Amazon S3 generates is always null. +// +// If the source object's storage class is GLACIER, then you must restore a +// copy of this object before you can use it as a source object for the copy +// operation. For more information, see . +// +// Access Permissions +// +// When copying an object, you can optionally specify the accounts or groups +// that should be granted specific permissions on the new object. There are +// two ways to grant the permissions using the request headers: +// +// * Specify a canned ACL with the x-amz-acl request header. For more information, +// see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL). +// +// * Specify access permissions explicitly with the x-amz-grant-read, x-amz-grant-read-acp, +// x-amz-grant-write-acp, and x-amz-grant-full-control headers. These parameters +// map to the set of permissions that Amazon S3 supports in an ACL. For more +// information, see Access Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html). +// +// You can use either a canned ACL or specify access permissions explicitly. +// You cannot do both. +// +// Server-Side- Encryption-Specific Request Headers +// +// To encrypt the target object, you must provide the appropriate encryption-related +// request headers. The one you use depends on whether you want to use AWS-managed +// encryption keys or provide your own encryption key. +// +// * To encrypt the target object using server-side encryption with an AWS-managed +// encryption key, provide the following request headers, as appropriate. +// x-amz-server-side​-encryption x-amz-server-side-encryption-aws-kms-key-id +// x-amz-server-side-encryption-context If you specify x-amz-server-side-encryption:aws:kms, +// but don't provide x-amz-server-side- encryption-aws-kms-key-id, Amazon +// S3 uses the AWS managed customer master key (CMK) in KMS to protect the +// data. All GET and PUT requests for an object protected by AWS KMS fail +// if you don't make them with SSL or by using SigV4. For more information +// on Server-Side Encryption with CMKs stored in Amazon KMS (SSE-KMS), see +// Protecting Data Using Server-Side Encryption with CMKs stored in KMS (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html). +// +// * To encrypt the target object using server-side encryption with an encryption +// key that you provide, use the following headers. x-amz-server-side​-encryption​-customer-algorithm +// x-amz-server-side​-encryption​-customer-key x-amz-server-side​-encryption​-customer-key-MD5 +// +// * If the source object is encrypted using server-side encryption with +// customer-provided encryption keys, you must use the following headers. +// x-amz-copy-source​-server-side​-encryption​-customer-algorithm x-amz-copy-source​-server-side​-encryption​-customer-key +// x-amz-copy-source-​server-side​-encryption​-customer-key-MD5 For +// more information on Server-Side Encryption with CMKs stored in Amazon +// KMS (SSE-KMS), see Protecting Data Using Server-Side Encryption with CMKs +// stored in Amazon KMS (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html). +// +// Access-Control-List (ACL)-Specific Request Headers +// +// You also can use the following access control–related headers with this +// operation. By default, all objects are private. Only the owner has full access +// control. When adding a new object, you can grant permissions to individual +// AWS accounts or to predefined groups defined by Amazon S3. These permissions +// are then added to the Access Control List (ACL) on the object. For more information, +// see Using ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html). +// With this operation, you can grant access permissions using one of the following +// two methods: +// +// * Specify a canned ACL (x-amz-acl) — Amazon S3 supports a set of predefined +// ACLs, known as canned ACLs. Each canned ACL has a predefined set of grantees +// and permissions. For more information, see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL). +// +// * Specify access permissions explicitly — To explicitly grant access +// permissions to specific AWS accounts or groups, use the following headers. +// Each header maps to specific permissions that Amazon S3 supports in an +// ACL. For more information, see Access Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html). +// In the header, you specify a list of grantees who get the specific permission. +// To grant permissions explicitly use: x-amz-grant-read x-amz-grant-write +// x-amz-grant-read-acp x-amz-grant-write-acp x-amz-grant-full-control You +// specify each grantee as a type=value pair, where the type is one of the +// following: emailAddress – if the value specified is the email address +// of an AWS account id – if the value specified is the canonical user +// ID of an AWS account uri – if you are granting permissions to a predefined +// group For example, the following x-amz-grant-read header grants the AWS +// accounts identified by email addresses permissions to read object data +// and its metadata: x-amz-grant-read: emailAddress="xyz@amazon.com", emailAddress="abc@amazon.com" +// +// The following operation are related to CopyObject +// +// * PutObject +// +// * GetObject +// +// For more information, see Copying Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjectsExamples.html). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation CopyObject for usage and error information. +// +// Returned Error Codes: +// * ErrCodeObjectNotInActiveTierError "ObjectNotInActiveTierError" +// The source object of the COPY operation is not in the active tier and is +// only stored in Amazon Glacier. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CopyObject +func (c *S3) CopyObject(input *CopyObjectInput) (*CopyObjectOutput, error) { + req, out := c.CopyObjectRequest(input) + return out, req.Send() +} + +// CopyObjectWithContext is the same as CopyObject with the addition of +// the ability to pass a context and additional request options. +// +// See CopyObject for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) CopyObjectWithContext(ctx aws.Context, input *CopyObjectInput, opts ...request.Option) (*CopyObjectOutput, error) { + req, out := c.CopyObjectRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateBucket = "CreateBucket" + +// CreateBucketRequest generates a "aws/request.Request" representing the +// client's request for the CreateBucket operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateBucket for more information on using the CreateBucket +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateBucketRequest method. +// req, resp := client.CreateBucketRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateBucket +func (c *S3) CreateBucketRequest(input *CreateBucketInput) (req *request.Request, output *CreateBucketOutput) { + op := &request.Operation{ + Name: opCreateBucket, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}", + } + + if input == nil { + input = &CreateBucketInput{} + } + + output = &CreateBucketOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateBucket API operation for Amazon Simple Storage Service. +// +// Creates a new bucket. To create a bucket, you must register with Amazon S3 +// and have a valid AWS Access Key ID to authenticate requests. Anonymous requests +// are never allowed to create buckets. By creating the bucket, you become the +// bucket owner. +// +// Not every string is an acceptable bucket name. For information on bucket +// naming restrictions, see Working with Amazon S3 Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html). +// +// By default, the bucket is created in the US East (N. Virginia) region. You +// can optionally specify a region in the request body. You might choose a region +// to optimize latency, minimize costs, or address regulatory requirements. +// For example, if you reside in Europe, you will probably find it advantageous +// to create buckets in the EU (Ireland) region. For more information, see How +// to Select a Region for Your Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro). +// +// If you send your create bucket request to the s3.amazonaws.com endpoint, +// the request go to the us-east-1 region. Accordingly, the signature calculations +// in Signature Version 4 must use us-east-1 as region, even if the location +// constraint in the request specifies another region where the bucket is to +// be created. If you create a bucket in a region other than US East (N. Virginia) +// region, your application must be able to handle 307 redirect. For more information, +// see Virtual Hosting of Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html). +// +// When creating a bucket using this operation, you can optionally specify the +// accounts or groups that should be granted specific permissions on the bucket. +// There are two ways to grant the appropriate permissions using the request +// headers. +// +// * Specify a canned ACL using the x-amz-acl request header. Amazon S3 supports +// a set of predefined ACLs, known as canned ACLs. Each canned ACL has a +// predefined set of grantees and permissions. For more information, see +// Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL). +// +// * Specify access permissions explicitly using the x-amz-grant-read, x-amz-grant-write, +// x-amz-grant-read-acp, x-amz-grant-write-acp, x-amz-grant-full-control +// headers. These headers map to the set of permissions Amazon S3 supports +// in an ACL. For more information, see Access Control List (ACL) Overview +// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html). You +// specify each grantee as a type=value pair, where the type is one of the +// following: emailAddress – if the value specified is the email address +// of an AWS account id – if the value specified is the canonical user +// ID of an AWS account uri – if you are granting permissions to a predefined +// group For example, the following x-amz-grant-read header grants the AWS +// accounts identified by email addresses permissions to read object data +// and its metadata: x-amz-grant-read: emailAddress="xyz@amazon.com", emailAddress="abc@amazon.com" +// +// You can use either a canned ACL or specify access permissions explicitly. +// You cannot do both. +// +// The following operations are related to CreateBucket: +// +// * PutObject +// +// * DeleteBucket +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation CreateBucket for usage and error information. +// +// Returned Error Codes: +// * ErrCodeBucketAlreadyExists "BucketAlreadyExists" +// The requested bucket name is not available. The bucket namespace is shared +// by all users of the system. Please select a different name and try again. +// +// * ErrCodeBucketAlreadyOwnedByYou "BucketAlreadyOwnedByYou" +// The bucket you tried to create already exists, and you own it. Amazon S3 +// returns this error in all AWS Regions except in the North Virginia region. +// For legacy compatibility, if you re-create an existing bucket that you already +// own in the North Virginia region, Amazon S3 returns 200 OK and resets the +// bucket access control lists (ACLs). +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateBucket +func (c *S3) CreateBucket(input *CreateBucketInput) (*CreateBucketOutput, error) { + req, out := c.CreateBucketRequest(input) + return out, req.Send() +} + +// CreateBucketWithContext is the same as CreateBucket with the addition of +// the ability to pass a context and additional request options. +// +// See CreateBucket for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) CreateBucketWithContext(ctx aws.Context, input *CreateBucketInput, opts ...request.Option) (*CreateBucketOutput, error) { + req, out := c.CreateBucketRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateMultipartUpload = "CreateMultipartUpload" + +// CreateMultipartUploadRequest generates a "aws/request.Request" representing the +// client's request for the CreateMultipartUpload operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateMultipartUpload for more information on using the CreateMultipartUpload +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateMultipartUploadRequest method. +// req, resp := client.CreateMultipartUploadRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateMultipartUpload +func (c *S3) CreateMultipartUploadRequest(input *CreateMultipartUploadInput) (req *request.Request, output *CreateMultipartUploadOutput) { + op := &request.Operation{ + Name: opCreateMultipartUpload, + HTTPMethod: "POST", + HTTPPath: "/{Bucket}/{Key+}?uploads", + } + + if input == nil { + input = &CreateMultipartUploadInput{} + } + + output = &CreateMultipartUploadOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateMultipartUpload API operation for Amazon Simple Storage Service. +// +// This operation initiates a multipart upload and returns an upload ID. This +// upload ID is used to associate all of the parts in the specific multipart +// upload. You specify this upload ID in each of your subsequent upload part +// requests (see UploadPart). You also include this upload ID in the final request +// to either complete or abort the multipart upload request. +// +// For more information about multipart uploads, see Multipart Upload Overview +// (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html). +// +// If you have configured a lifecycle rule to abort incomplete multipart uploads, +// the upload must complete within the number of days specified in the bucket +// lifecycle configuration. Otherwise, the incomplete multipart upload becomes +// eligible for an abort operation and Amazon S3 aborts the multipart upload. +// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket +// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config). +// +// For information about the permissions required to use the multipart upload +// API, see Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html). +// +// For request signing, multipart upload is just a series of regular requests. +// You initiate a multipart upload, send one or more requests to upload parts, +// and then complete the multipart upload process. You sign each request individually. +// There is nothing special about signing multipart upload requests. For more +// information about signing, see Authenticating Requests (AWS Signature Version +// 4) (https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html). +// +// After you initiate a multipart upload and upload one or more parts, to stop +// being charged for storing the uploaded parts, you must either complete or +// abort the multipart upload. Amazon S3 frees up the space used to store the +// parts and stop charging you for storing them only after you either complete +// or abort a multipart upload. +// +// You can optionally request server-side encryption. For server-side encryption, +// Amazon S3 encrypts your data as it writes it to disks in its data centers +// and decrypts it when you access it. You can provide your own encryption key, +// or use AWS Key Management Service (AWS KMS) customer master keys (CMKs) or +// Amazon S3-managed encryption keys. If you choose to provide your own encryption +// key, the request headers you provide in UploadPart) and UploadPartCopy) requests +// must match the headers you used in the request to initiate the upload by +// using CreateMultipartUpload. +// +// To perform a multipart upload with encryption using an AWS KMS CMK, the requester +// must have permission to the kms:Encrypt, kms:Decrypt, kms:ReEncrypt*, kms:GenerateDataKey*, +// and kms:DescribeKey actions on the key. These permissions are required because +// Amazon S3 must decrypt and read data from the encrypted file parts before +// it completes the multipart upload. +// +// If your AWS Identity and Access Management (IAM) user or role is in the same +// AWS account as the AWS KMS CMK, then you must have these permissions on the +// key policy. If your IAM user or role belongs to a different account than +// the key, then you must have the permissions on both the key policy and your +// IAM user or role. +// +// For more information, see Protecting Data Using Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html). +// +// Access Permissions +// +// When copying an object, you can optionally specify the accounts or groups +// that should be granted specific permissions on the new object. There are +// two ways to grant the permissions using the request headers: +// +// * Specify a canned ACL with the x-amz-acl request header. For more information, +// see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL). +// +// * Specify access permissions explicitly with the x-amz-grant-read, x-amz-grant-read-acp, +// x-amz-grant-write-acp, and x-amz-grant-full-control headers. These parameters +// map to the set of permissions that Amazon S3 supports in an ACL. For more +// information, see Access Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html). +// +// You can use either a canned ACL or specify access permissions explicitly. +// You cannot do both. +// +// Server-Side- Encryption-Specific Request Headers +// +// You can optionally tell Amazon S3 to encrypt data at rest using server-side +// encryption. Server-side encryption is for data encryption at rest. Amazon +// S3 encrypts your data as it writes it to disks in its data centers and decrypts +// it when you access it. The option you use depends on whether you want to +// use AWS-managed encryption keys or provide your own encryption key. +// +// * Use encryption keys managed by Amazon S3 or customer master keys (CMKs) +// stored in Amazon Key Management Service (KMS) – If you want AWS to manage +// the keys used to encrypt data, specify the following headers in the request. +// x-amz-server-side​-encryption x-amz-server-side-encryption-aws-kms-key-id +// x-amz-server-side-encryption-context If you specify x-amz-server-side-encryption:aws:kms, +// but don't provide x-amz-server-side- encryption-aws-kms-key-id, Amazon +// S3 uses the AWS managed CMK in AWS KMS to protect the data. All GET and +// PUT requests for an object protected by AWS KMS fail if you don't make +// them with SSL or by using SigV4. For more information on Server-Side Encryption +// with CMKs Stored in Amazon KMS (SSE-KMS), see Protecting Data Using Server-Side +// Encryption with CMKs stored in AWS KMS (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html). +// +// * Use customer-provided encryption keys – If you want to manage your +// own encryption keys, provide all the following headers in the request. +// x-amz-server-side​-encryption​-customer-algorithm x-amz-server-side​-encryption​-customer-key +// x-amz-server-side​-encryption​-customer-key-MD5 For more information +// on Server-Side Encryption with CMKs stored in AWS KMS (SSE-KMS), see Protecting +// Data Using Server-Side Encryption with CMKs stored in AWS KMS (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html). +// +// Access-Control-List (ACL)-Specific Request Headers +// +// You also can use the following access control–related headers with this +// operation. By default, all objects are private. Only the owner has full access +// control. When adding a new object, you can grant permissions to individual +// AWS accounts or to predefined groups defined by Amazon S3. These permissions +// are then added to the Access Control List (ACL) on the object. For more information, +// see Using ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html). +// With this operation, you can grant access permissions using one of the following +// two methods: +// +// * Specify a canned ACL (x-amz-acl) — Amazon S3 supports a set of predefined +// ACLs, known as canned ACLs. Each canned ACL has a predefined set of grantees +// and permissions. For more information, see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL). +// +// * Specify access permissions explicitly — To explicitly grant access +// permissions to specific AWS accounts or groups, use the following headers. +// Each header maps to specific permissions that Amazon S3 supports in an +// ACL. For more information, see Access Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html). +// In the header, you specify a list of grantees who get the specific permission. +// To grant permissions explicitly use: x-amz-grant-read x-amz-grant-write +// x-amz-grant-read-acp x-amz-grant-write-acp x-amz-grant-full-control You +// specify each grantee as a type=value pair, where the type is one of the +// following: emailAddress – if the value specified is the email address +// of an AWS account id – if the value specified is the canonical user +// ID of an AWS account uri – if you are granting permissions to a predefined +// group For example, the following x-amz-grant-read header grants the AWS +// accounts identified by email addresses permissions to read object data +// and its metadata: x-amz-grant-read: emailAddress="xyz@amazon.com", emailAddress="abc@amazon.com" +// +// The following operations are related to CreateMultipartUpload: +// +// * UploadPart +// +// * CompleteMultipartUpload +// +// * AbortMultipartUpload +// +// * ListParts +// +// * ListMultipartUploads +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation CreateMultipartUpload for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateMultipartUpload +func (c *S3) CreateMultipartUpload(input *CreateMultipartUploadInput) (*CreateMultipartUploadOutput, error) { + req, out := c.CreateMultipartUploadRequest(input) + return out, req.Send() +} + +// CreateMultipartUploadWithContext is the same as CreateMultipartUpload with the addition of +// the ability to pass a context and additional request options. +// +// See CreateMultipartUpload for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) CreateMultipartUploadWithContext(ctx aws.Context, input *CreateMultipartUploadInput, opts ...request.Option) (*CreateMultipartUploadOutput, error) { + req, out := c.CreateMultipartUploadRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteBucket = "DeleteBucket" + +// DeleteBucketRequest generates a "aws/request.Request" representing the +// client's request for the DeleteBucket operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteBucket for more information on using the DeleteBucket +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteBucketRequest method. +// req, resp := client.DeleteBucketRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucket +func (c *S3) DeleteBucketRequest(input *DeleteBucketInput) (req *request.Request, output *DeleteBucketOutput) { + op := &request.Operation{ + Name: opDeleteBucket, + HTTPMethod: "DELETE", + HTTPPath: "/{Bucket}", + } + + if input == nil { + input = &DeleteBucketInput{} + } + + output = &DeleteBucketOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteBucket API operation for Amazon Simple Storage Service. +// +// Deletes the bucket. All objects (including all object versions and Delete +// Markers) in the bucket must be deleted before the bucket itself can be deleted. +// +// Related Resources +// +// * +// +// * +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation DeleteBucket for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucket +func (c *S3) DeleteBucket(input *DeleteBucketInput) (*DeleteBucketOutput, error) { + req, out := c.DeleteBucketRequest(input) + return out, req.Send() +} + +// DeleteBucketWithContext is the same as DeleteBucket with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteBucket for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) DeleteBucketWithContext(ctx aws.Context, input *DeleteBucketInput, opts ...request.Option) (*DeleteBucketOutput, error) { + req, out := c.DeleteBucketRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteBucketAnalyticsConfiguration = "DeleteBucketAnalyticsConfiguration" + +// DeleteBucketAnalyticsConfigurationRequest generates a "aws/request.Request" representing the +// client's request for the DeleteBucketAnalyticsConfiguration operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteBucketAnalyticsConfiguration for more information on using the DeleteBucketAnalyticsConfiguration +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteBucketAnalyticsConfigurationRequest method. +// req, resp := client.DeleteBucketAnalyticsConfigurationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketAnalyticsConfiguration +func (c *S3) DeleteBucketAnalyticsConfigurationRequest(input *DeleteBucketAnalyticsConfigurationInput) (req *request.Request, output *DeleteBucketAnalyticsConfigurationOutput) { + op := &request.Operation{ + Name: opDeleteBucketAnalyticsConfiguration, + HTTPMethod: "DELETE", + HTTPPath: "/{Bucket}?analytics", + } + + if input == nil { + input = &DeleteBucketAnalyticsConfigurationInput{} + } + + output = &DeleteBucketAnalyticsConfigurationOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteBucketAnalyticsConfiguration API operation for Amazon Simple Storage Service. +// +// Deletes an analytics configuration for the bucket (specified by the analytics +// configuration ID). +// +// To use this operation, you must have permissions to perform the s3:PutAnalyticsConfiguration +// action. The bucket owner has this permission by default. The bucket owner +// can grant this permission to others. For more information about permissions, +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev//using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// +// For information about Amazon S3 analytics feature, see Amazon S3 Analytics +// – Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html). +// +// The following operations are related to DeleteBucketAnalyticsConfiguration: +// +// * +// +// * +// +// * +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation DeleteBucketAnalyticsConfiguration for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketAnalyticsConfiguration +func (c *S3) DeleteBucketAnalyticsConfiguration(input *DeleteBucketAnalyticsConfigurationInput) (*DeleteBucketAnalyticsConfigurationOutput, error) { + req, out := c.DeleteBucketAnalyticsConfigurationRequest(input) + return out, req.Send() +} + +// DeleteBucketAnalyticsConfigurationWithContext is the same as DeleteBucketAnalyticsConfiguration with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteBucketAnalyticsConfiguration for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) DeleteBucketAnalyticsConfigurationWithContext(ctx aws.Context, input *DeleteBucketAnalyticsConfigurationInput, opts ...request.Option) (*DeleteBucketAnalyticsConfigurationOutput, error) { + req, out := c.DeleteBucketAnalyticsConfigurationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteBucketCors = "DeleteBucketCors" + +// DeleteBucketCorsRequest generates a "aws/request.Request" representing the +// client's request for the DeleteBucketCors operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteBucketCors for more information on using the DeleteBucketCors +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteBucketCorsRequest method. +// req, resp := client.DeleteBucketCorsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketCors +func (c *S3) DeleteBucketCorsRequest(input *DeleteBucketCorsInput) (req *request.Request, output *DeleteBucketCorsOutput) { + op := &request.Operation{ + Name: opDeleteBucketCors, + HTTPMethod: "DELETE", + HTTPPath: "/{Bucket}?cors", + } + + if input == nil { + input = &DeleteBucketCorsInput{} + } + + output = &DeleteBucketCorsOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteBucketCors API operation for Amazon Simple Storage Service. +// +// Deletes the cors configuration information set for the bucket. +// +// To use this operation, you must have permission to perform the s3:PutBucketCORS +// action. The bucket owner has this permission by default and can grant this +// permission to others. +// +// For information more about cors, go to Enabling Cross-Origin Resource Sharing +// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) in the Amazon +// Simple Storage Service Developer Guide. +// +// Related Resources: +// +// * +// +// * RESTOPTIONSobject +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation DeleteBucketCors for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketCors +func (c *S3) DeleteBucketCors(input *DeleteBucketCorsInput) (*DeleteBucketCorsOutput, error) { + req, out := c.DeleteBucketCorsRequest(input) + return out, req.Send() +} + +// DeleteBucketCorsWithContext is the same as DeleteBucketCors with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteBucketCors for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) DeleteBucketCorsWithContext(ctx aws.Context, input *DeleteBucketCorsInput, opts ...request.Option) (*DeleteBucketCorsOutput, error) { + req, out := c.DeleteBucketCorsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteBucketEncryption = "DeleteBucketEncryption" + +// DeleteBucketEncryptionRequest generates a "aws/request.Request" representing the +// client's request for the DeleteBucketEncryption operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteBucketEncryption for more information on using the DeleteBucketEncryption +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteBucketEncryptionRequest method. +// req, resp := client.DeleteBucketEncryptionRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketEncryption +func (c *S3) DeleteBucketEncryptionRequest(input *DeleteBucketEncryptionInput) (req *request.Request, output *DeleteBucketEncryptionOutput) { + op := &request.Operation{ + Name: opDeleteBucketEncryption, + HTTPMethod: "DELETE", + HTTPPath: "/{Bucket}?encryption", + } + + if input == nil { + input = &DeleteBucketEncryptionInput{} + } + + output = &DeleteBucketEncryptionOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteBucketEncryption API operation for Amazon Simple Storage Service. +// +// This implementation of the DELETE operation removes default encryption from +// the bucket. For information about the Amazon S3 default encryption feature, +// see Amazon S3 Default Bucket Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev//bucket-encryption.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// To use this operation, you must have permissions to perform the s3:PutEncryptionConfiguration +// action. The bucket owner has this permission by default. The bucket owner +// can grant this permission to others. For more information about permissions, +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev//using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev//s3-access-control.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// Related Resources +// +// * PutBucketEncryption +// +// * GetBucketEncryption +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation DeleteBucketEncryption for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketEncryption +func (c *S3) DeleteBucketEncryption(input *DeleteBucketEncryptionInput) (*DeleteBucketEncryptionOutput, error) { + req, out := c.DeleteBucketEncryptionRequest(input) + return out, req.Send() +} + +// DeleteBucketEncryptionWithContext is the same as DeleteBucketEncryption with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteBucketEncryption for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) DeleteBucketEncryptionWithContext(ctx aws.Context, input *DeleteBucketEncryptionInput, opts ...request.Option) (*DeleteBucketEncryptionOutput, error) { + req, out := c.DeleteBucketEncryptionRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteBucketInventoryConfiguration = "DeleteBucketInventoryConfiguration" + +// DeleteBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the +// client's request for the DeleteBucketInventoryConfiguration operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteBucketInventoryConfiguration for more information on using the DeleteBucketInventoryConfiguration +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteBucketInventoryConfigurationRequest method. +// req, resp := client.DeleteBucketInventoryConfigurationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketInventoryConfiguration +func (c *S3) DeleteBucketInventoryConfigurationRequest(input *DeleteBucketInventoryConfigurationInput) (req *request.Request, output *DeleteBucketInventoryConfigurationOutput) { + op := &request.Operation{ + Name: opDeleteBucketInventoryConfiguration, + HTTPMethod: "DELETE", + HTTPPath: "/{Bucket}?inventory", + } + + if input == nil { + input = &DeleteBucketInventoryConfigurationInput{} + } + + output = &DeleteBucketInventoryConfigurationOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteBucketInventoryConfiguration API operation for Amazon Simple Storage Service. +// +// Deletes an inventory configuration (identified by the inventory ID) from +// the bucket. +// +// To use this operation, you must have permissions to perform the s3:PutInventoryConfiguration +// action. The bucket owner has this permission by default. The bucket owner +// can grant this permission to others. For more information about permissions, +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// +// For information about the Amazon S3 inventory feature, see Amazon S3 Inventory +// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html). +// +// Operation related to DeleteBucketInventoryConfiguration include: +// +// * GetBucketInventoryConfiguration +// +// * PutBucketInventoryConfiguration +// +// * ListBucketInventoryConfigurations +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation DeleteBucketInventoryConfiguration for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketInventoryConfiguration +func (c *S3) DeleteBucketInventoryConfiguration(input *DeleteBucketInventoryConfigurationInput) (*DeleteBucketInventoryConfigurationOutput, error) { + req, out := c.DeleteBucketInventoryConfigurationRequest(input) + return out, req.Send() +} + +// DeleteBucketInventoryConfigurationWithContext is the same as DeleteBucketInventoryConfiguration with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteBucketInventoryConfiguration for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) DeleteBucketInventoryConfigurationWithContext(ctx aws.Context, input *DeleteBucketInventoryConfigurationInput, opts ...request.Option) (*DeleteBucketInventoryConfigurationOutput, error) { + req, out := c.DeleteBucketInventoryConfigurationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteBucketLifecycle = "DeleteBucketLifecycle" + +// DeleteBucketLifecycleRequest generates a "aws/request.Request" representing the +// client's request for the DeleteBucketLifecycle operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteBucketLifecycle for more information on using the DeleteBucketLifecycle +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteBucketLifecycleRequest method. +// req, resp := client.DeleteBucketLifecycleRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketLifecycle +func (c *S3) DeleteBucketLifecycleRequest(input *DeleteBucketLifecycleInput) (req *request.Request, output *DeleteBucketLifecycleOutput) { + op := &request.Operation{ + Name: opDeleteBucketLifecycle, + HTTPMethod: "DELETE", + HTTPPath: "/{Bucket}?lifecycle", + } + + if input == nil { + input = &DeleteBucketLifecycleInput{} + } + + output = &DeleteBucketLifecycleOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteBucketLifecycle API operation for Amazon Simple Storage Service. +// +// Deletes the lifecycle configuration from the specified bucket. Amazon S3 +// removes all the lifecycle configuration rules in the lifecycle subresource +// associated with the bucket. Your objects never expire, and Amazon S3 no longer +// automatically deletes any objects on the basis of rules contained in the +// deleted lifecycle configuration. +// +// To use this operation, you must have permission to perform the s3:PutLifecycleConfiguration +// action. By default, the bucket owner has this permission and the bucket owner +// can grant this permission to others. +// +// There is usually some time lag before lifecycle configuration deletion is +// fully propagated to all the Amazon S3 systems. +// +// For more information about the object expiration, see Elements to Describe +// Lifecycle Actions (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#intro-lifecycle-rules-actions). +// +// Related actions include: +// +// * PutBucketLifecycleConfiguration +// +// * GetBucketLifecycleConfiguration +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation DeleteBucketLifecycle for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketLifecycle +func (c *S3) DeleteBucketLifecycle(input *DeleteBucketLifecycleInput) (*DeleteBucketLifecycleOutput, error) { + req, out := c.DeleteBucketLifecycleRequest(input) + return out, req.Send() +} + +// DeleteBucketLifecycleWithContext is the same as DeleteBucketLifecycle with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteBucketLifecycle for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) DeleteBucketLifecycleWithContext(ctx aws.Context, input *DeleteBucketLifecycleInput, opts ...request.Option) (*DeleteBucketLifecycleOutput, error) { + req, out := c.DeleteBucketLifecycleRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteBucketMetricsConfiguration = "DeleteBucketMetricsConfiguration" + +// DeleteBucketMetricsConfigurationRequest generates a "aws/request.Request" representing the +// client's request for the DeleteBucketMetricsConfiguration operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteBucketMetricsConfiguration for more information on using the DeleteBucketMetricsConfiguration +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteBucketMetricsConfigurationRequest method. +// req, resp := client.DeleteBucketMetricsConfigurationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketMetricsConfiguration +func (c *S3) DeleteBucketMetricsConfigurationRequest(input *DeleteBucketMetricsConfigurationInput) (req *request.Request, output *DeleteBucketMetricsConfigurationOutput) { + op := &request.Operation{ + Name: opDeleteBucketMetricsConfiguration, + HTTPMethod: "DELETE", + HTTPPath: "/{Bucket}?metrics", + } + + if input == nil { + input = &DeleteBucketMetricsConfigurationInput{} + } + + output = &DeleteBucketMetricsConfigurationOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteBucketMetricsConfiguration API operation for Amazon Simple Storage Service. +// +// Deletes a metrics configuration for the Amazon CloudWatch request metrics +// (specified by the metrics configuration ID) from the bucket. Note that this +// doesn't include the daily storage metrics. +// +// To use this operation, you must have permissions to perform the s3:PutMetricsConfiguration +// action. The bucket owner has this permission by default. The bucket owner +// can grant this permission to others. For more information about permissions, +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// +// For information about CloudWatch request metrics for Amazon S3, see Monitoring +// Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html). +// +// The following operations are related to DeleteBucketMetricsConfiguration +// +// * GetBucketMetricsConfiguration +// +// * PutBucketMetricsConfiguration +// +// * ListBucketMetricsConfigurations +// +// * Monitoring Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html) +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation DeleteBucketMetricsConfiguration for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketMetricsConfiguration +func (c *S3) DeleteBucketMetricsConfiguration(input *DeleteBucketMetricsConfigurationInput) (*DeleteBucketMetricsConfigurationOutput, error) { + req, out := c.DeleteBucketMetricsConfigurationRequest(input) + return out, req.Send() +} + +// DeleteBucketMetricsConfigurationWithContext is the same as DeleteBucketMetricsConfiguration with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteBucketMetricsConfiguration for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) DeleteBucketMetricsConfigurationWithContext(ctx aws.Context, input *DeleteBucketMetricsConfigurationInput, opts ...request.Option) (*DeleteBucketMetricsConfigurationOutput, error) { + req, out := c.DeleteBucketMetricsConfigurationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteBucketPolicy = "DeleteBucketPolicy" + +// DeleteBucketPolicyRequest generates a "aws/request.Request" representing the +// client's request for the DeleteBucketPolicy operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteBucketPolicy for more information on using the DeleteBucketPolicy +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteBucketPolicyRequest method. +// req, resp := client.DeleteBucketPolicyRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketPolicy +func (c *S3) DeleteBucketPolicyRequest(input *DeleteBucketPolicyInput) (req *request.Request, output *DeleteBucketPolicyOutput) { + op := &request.Operation{ + Name: opDeleteBucketPolicy, + HTTPMethod: "DELETE", + HTTPPath: "/{Bucket}?policy", + } + + if input == nil { + input = &DeleteBucketPolicyInput{} + } + + output = &DeleteBucketPolicyOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteBucketPolicy API operation for Amazon Simple Storage Service. +// +// This implementation of the DELETE operation uses the policysubresource to +// delete the policy of a specified bucket. If you are using an identity other +// than the root user of the AWS account that owns the bucket, the calling identity +// must have the DeleteBucketPolicy permissions on the specified bucket and +// belong to the bucket owner's account in order to use this operation. +// +// If you don't have DeleteBucketPolicy permissions, Amazon S3 returns a 403 +// Access Denied error. If you have the correct permissions, but you're notusing +// an identity that belongs to the bucket owner's account, Amazon S3 returns +// a 405 Method Not Allowed error. +// +// As a security precaution, the root user of the AWS account that owns a bucket +// can always use this operation, even if the policy explicitly denies the root +// user the ability to perform this action. +// +// For more information about bucket policies, see Using Bucket Policies and +// UserPolicies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html). +// +// The following operations are related to DeleteBucketPolicy +// +// * CreateBucket +// +// * DeleteObject +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation DeleteBucketPolicy for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketPolicy +func (c *S3) DeleteBucketPolicy(input *DeleteBucketPolicyInput) (*DeleteBucketPolicyOutput, error) { + req, out := c.DeleteBucketPolicyRequest(input) + return out, req.Send() +} + +// DeleteBucketPolicyWithContext is the same as DeleteBucketPolicy with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteBucketPolicy for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) DeleteBucketPolicyWithContext(ctx aws.Context, input *DeleteBucketPolicyInput, opts ...request.Option) (*DeleteBucketPolicyOutput, error) { + req, out := c.DeleteBucketPolicyRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteBucketReplication = "DeleteBucketReplication" + +// DeleteBucketReplicationRequest generates a "aws/request.Request" representing the +// client's request for the DeleteBucketReplication operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteBucketReplication for more information on using the DeleteBucketReplication +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteBucketReplicationRequest method. +// req, resp := client.DeleteBucketReplicationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketReplication +func (c *S3) DeleteBucketReplicationRequest(input *DeleteBucketReplicationInput) (req *request.Request, output *DeleteBucketReplicationOutput) { + op := &request.Operation{ + Name: opDeleteBucketReplication, + HTTPMethod: "DELETE", + HTTPPath: "/{Bucket}?replication", + } + + if input == nil { + input = &DeleteBucketReplicationInput{} + } + + output = &DeleteBucketReplicationOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteBucketReplication API operation for Amazon Simple Storage Service. +// +// Deletes the replication configuration from the bucket. +// +// To use this operation, you must have permissions to perform the s3:PutReplicationConfiguration +// action. The bucket owner has these permissions by default and can grant it +// to others. For more information about permissions, see Permissions Related +// to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// +// It can take a while for the deletion of a replication configuration to fully +// propagate. +// +// For information about replication configuration, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html) +// in the Amazon S3 Developer Guide. +// +// The following operations are related to DeleteBucketReplication +// +// * PutBucketReplication +// +// * GetBucketReplication +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation DeleteBucketReplication for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketReplication +func (c *S3) DeleteBucketReplication(input *DeleteBucketReplicationInput) (*DeleteBucketReplicationOutput, error) { + req, out := c.DeleteBucketReplicationRequest(input) + return out, req.Send() +} + +// DeleteBucketReplicationWithContext is the same as DeleteBucketReplication with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteBucketReplication for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) DeleteBucketReplicationWithContext(ctx aws.Context, input *DeleteBucketReplicationInput, opts ...request.Option) (*DeleteBucketReplicationOutput, error) { + req, out := c.DeleteBucketReplicationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteBucketTagging = "DeleteBucketTagging" + +// DeleteBucketTaggingRequest generates a "aws/request.Request" representing the +// client's request for the DeleteBucketTagging operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteBucketTagging for more information on using the DeleteBucketTagging +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteBucketTaggingRequest method. +// req, resp := client.DeleteBucketTaggingRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketTagging +func (c *S3) DeleteBucketTaggingRequest(input *DeleteBucketTaggingInput) (req *request.Request, output *DeleteBucketTaggingOutput) { + op := &request.Operation{ + Name: opDeleteBucketTagging, + HTTPMethod: "DELETE", + HTTPPath: "/{Bucket}?tagging", + } + + if input == nil { + input = &DeleteBucketTaggingInput{} + } + + output = &DeleteBucketTaggingOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteBucketTagging API operation for Amazon Simple Storage Service. +// +// Deletes the tags from the bucket. +// +// To use this operation, you must have permission to perform the s3:PutBucketTagging +// action. By default, the bucket owner has this permission and can grant this +// permission to others. +// +// The following operations are related to DeleteBucketTagging +// +// * GetBucketTagging +// +// * PutBucketTagging +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation DeleteBucketTagging for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketTagging +func (c *S3) DeleteBucketTagging(input *DeleteBucketTaggingInput) (*DeleteBucketTaggingOutput, error) { + req, out := c.DeleteBucketTaggingRequest(input) + return out, req.Send() +} + +// DeleteBucketTaggingWithContext is the same as DeleteBucketTagging with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteBucketTagging for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) DeleteBucketTaggingWithContext(ctx aws.Context, input *DeleteBucketTaggingInput, opts ...request.Option) (*DeleteBucketTaggingOutput, error) { + req, out := c.DeleteBucketTaggingRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteBucketWebsite = "DeleteBucketWebsite" + +// DeleteBucketWebsiteRequest generates a "aws/request.Request" representing the +// client's request for the DeleteBucketWebsite operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteBucketWebsite for more information on using the DeleteBucketWebsite +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteBucketWebsiteRequest method. +// req, resp := client.DeleteBucketWebsiteRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketWebsite +func (c *S3) DeleteBucketWebsiteRequest(input *DeleteBucketWebsiteInput) (req *request.Request, output *DeleteBucketWebsiteOutput) { + op := &request.Operation{ + Name: opDeleteBucketWebsite, + HTTPMethod: "DELETE", + HTTPPath: "/{Bucket}?website", + } + + if input == nil { + input = &DeleteBucketWebsiteInput{} + } + + output = &DeleteBucketWebsiteOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteBucketWebsite API operation for Amazon Simple Storage Service. +// +// This operation removes the website configuration for a bucket. Amazon S3 +// returns a 200 OK response upon successfully deleting a website configuration +// on the specified bucket. You will get a 200 OK response if the website configuration +// you are trying to delete does not exist on the bucket. Amazon S3 returns +// a 404 response if the bucket specified in the request does not exist. +// +// This DELETE operation requires the S3:DeleteBucketWebsite permission. By +// default, only the bucket owner can delete the website configuration attached +// to a bucket. However, bucket owners can grant other users permission to delete +// the website configuration by writing a bucket policy granting them the S3:DeleteBucketWebsite +// permission. +// +// For more information about hosting websites, see Hosting Websites on Amazon +// S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html). +// +// The following operations are related to DeleteBucketWebsite +// +// * GetBucketWebsite +// +// * PutBucketWebsite +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation DeleteBucketWebsite for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketWebsite +func (c *S3) DeleteBucketWebsite(input *DeleteBucketWebsiteInput) (*DeleteBucketWebsiteOutput, error) { + req, out := c.DeleteBucketWebsiteRequest(input) + return out, req.Send() +} + +// DeleteBucketWebsiteWithContext is the same as DeleteBucketWebsite with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteBucketWebsite for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) DeleteBucketWebsiteWithContext(ctx aws.Context, input *DeleteBucketWebsiteInput, opts ...request.Option) (*DeleteBucketWebsiteOutput, error) { + req, out := c.DeleteBucketWebsiteRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteObject = "DeleteObject" + +// DeleteObjectRequest generates a "aws/request.Request" representing the +// client's request for the DeleteObject operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteObject for more information on using the DeleteObject +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteObjectRequest method. +// req, resp := client.DeleteObjectRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObject +func (c *S3) DeleteObjectRequest(input *DeleteObjectInput) (req *request.Request, output *DeleteObjectOutput) { + op := &request.Operation{ + Name: opDeleteObject, + HTTPMethod: "DELETE", + HTTPPath: "/{Bucket}/{Key+}", + } + + if input == nil { + input = &DeleteObjectInput{} + } + + output = &DeleteObjectOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteObject API operation for Amazon Simple Storage Service. +// +// Removes the null version (if there is one) of an object and inserts a delete +// marker, which becomes the latest version of the object. If there isn't a +// null version, Amazon S3 does not remove any objects. +// +// To remove a specific version, you must be the bucket owner and you must use +// the version Id subresource. Using this subresource permanently deletes the +// version. If the object deleted is a delete marker, Amazon S3 sets the response +// header, x-amz-delete-marker, to true. +// +// If the object you want to delete is in a bucket where the bucket versioning +// configurationis MFA Delete enabled, you must include the x-amz-mfa request +// header in the DELETE versionId request. Requests that include x-amz-mfa must +// use HTTPS. +// +// For more information about MFA Delete, see Using MFA Delete (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMFADelete.html). +// To see sample requests that use versioning, see Sample Request (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html#ExampleVersionObjectDelete). +// +// You can delete objects by explicitly calling the DELETE Object API or configure +// its lifecycle (PutBucketLifecycle) to enable Amazon S3 to remove them for +// you. If you want to block users or accounts from removing or deleting objects +// from your bucket you must deny them the s3:DeleteObject, s3:DeleteObjectVersion +// and s3:PutLifeCycleConfiguration actions. +// +// The following operation is related to DeleteObject +// +// * PutObject +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation DeleteObject for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObject +func (c *S3) DeleteObject(input *DeleteObjectInput) (*DeleteObjectOutput, error) { + req, out := c.DeleteObjectRequest(input) + return out, req.Send() +} + +// DeleteObjectWithContext is the same as DeleteObject with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteObject for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) DeleteObjectWithContext(ctx aws.Context, input *DeleteObjectInput, opts ...request.Option) (*DeleteObjectOutput, error) { + req, out := c.DeleteObjectRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteObjectTagging = "DeleteObjectTagging" + +// DeleteObjectTaggingRequest generates a "aws/request.Request" representing the +// client's request for the DeleteObjectTagging operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteObjectTagging for more information on using the DeleteObjectTagging +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteObjectTaggingRequest method. +// req, resp := client.DeleteObjectTaggingRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjectTagging +func (c *S3) DeleteObjectTaggingRequest(input *DeleteObjectTaggingInput) (req *request.Request, output *DeleteObjectTaggingOutput) { + op := &request.Operation{ + Name: opDeleteObjectTagging, + HTTPMethod: "DELETE", + HTTPPath: "/{Bucket}/{Key+}?tagging", + } + + if input == nil { + input = &DeleteObjectTaggingInput{} + } + + output = &DeleteObjectTaggingOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteObjectTagging API operation for Amazon Simple Storage Service. +// +// Removes the entire tag set from the specified object. For more information +// about managing object tags, see Object Tagging (https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html#MultiFactorAuthenticationDelete). +// +// To use this operation, you must have permission to perform the s3:DeleteObjectTagging +// action. +// +// To delete tags of a specific object version, add the versionId query parameter +// in the request. You will need permission for the s3:DeleteObjectVersionTagging +// action. +// +// The following operations are related to DeleteBucketMetricsConfiguration +// +// * PutObjectTagging +// +// * GetObjectTagging +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation DeleteObjectTagging for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjectTagging +func (c *S3) DeleteObjectTagging(input *DeleteObjectTaggingInput) (*DeleteObjectTaggingOutput, error) { + req, out := c.DeleteObjectTaggingRequest(input) + return out, req.Send() +} + +// DeleteObjectTaggingWithContext is the same as DeleteObjectTagging with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteObjectTagging for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) DeleteObjectTaggingWithContext(ctx aws.Context, input *DeleteObjectTaggingInput, opts ...request.Option) (*DeleteObjectTaggingOutput, error) { + req, out := c.DeleteObjectTaggingRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteObjects = "DeleteObjects" + +// DeleteObjectsRequest generates a "aws/request.Request" representing the +// client's request for the DeleteObjects operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteObjects for more information on using the DeleteObjects +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteObjectsRequest method. +// req, resp := client.DeleteObjectsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjects +func (c *S3) DeleteObjectsRequest(input *DeleteObjectsInput) (req *request.Request, output *DeleteObjectsOutput) { + op := &request.Operation{ + Name: opDeleteObjects, + HTTPMethod: "POST", + HTTPPath: "/{Bucket}?delete", + } + + if input == nil { + input = &DeleteObjectsInput{} + } + + output = &DeleteObjectsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteObjects API operation for Amazon Simple Storage Service. +// +// This operation enables you to delete multiple objects from a bucket using +// a single HTTP request. If you know the object keys that you want to delete, +// then this operation provides a suitable alternative to sending individual +// delete requests, reducing per-request overhead. +// +// The request contains a list of up to 1000 keys that you want to delete. In +// the XML, you provide the object key names, and optionally, version IDs if +// you want to delete a specific version of the object from a versioning-enabled +// bucket. For each key, Amazon S3 performs a delete operation and returns the +// result of that delete, success, or failure, in the response. Note that, if +// the object specified in the request is not found, Amazon S3 returns the result +// as deleted. +// +// The operation supports two modes for the response; verbose and quiet. By +// default, the operation uses verbose mode in which the response includes the +// result of deletion of each key in your request. In quiet mode the response +// includes only keys where the delete operation encountered an error. For a +// successful deletion, the operation does not return any information about +// the delete in the response body. +// +// When performing this operation on an MFA Delete enabled bucket, that attempts +// to delete any versioned objects, you must include an MFA token. If you do +// not provide one, the entire request will fail, even if there are non versioned +// objects you are attempting to delete. If you provide an invalid token, whether +// there are versioned keys in the request or not, the entire Multi-Object Delete +// request will fail. For information about MFA Delete, see MFA Delete (https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html#MultiFactorAuthenticationDelete). +// +// Finally, the Content-MD5 header is required for all Multi-Object Delete requests. +// Amazon S3 uses the header value to ensure that your request body has not +// be altered in transit. +// +// The following operations are related to DeleteObjects +// +// * CreateMultipartUpload +// +// * UploadPart +// +// * CompleteMultipartUpload +// +// * ListParts +// +// * AbortMultipartUpload +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation DeleteObjects for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjects +func (c *S3) DeleteObjects(input *DeleteObjectsInput) (*DeleteObjectsOutput, error) { + req, out := c.DeleteObjectsRequest(input) + return out, req.Send() +} + +// DeleteObjectsWithContext is the same as DeleteObjects with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteObjects for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) DeleteObjectsWithContext(ctx aws.Context, input *DeleteObjectsInput, opts ...request.Option) (*DeleteObjectsOutput, error) { + req, out := c.DeleteObjectsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeletePublicAccessBlock = "DeletePublicAccessBlock" + +// DeletePublicAccessBlockRequest generates a "aws/request.Request" representing the +// client's request for the DeletePublicAccessBlock operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeletePublicAccessBlock for more information on using the DeletePublicAccessBlock +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeletePublicAccessBlockRequest method. +// req, resp := client.DeletePublicAccessBlockRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeletePublicAccessBlock +func (c *S3) DeletePublicAccessBlockRequest(input *DeletePublicAccessBlockInput) (req *request.Request, output *DeletePublicAccessBlockOutput) { + op := &request.Operation{ + Name: opDeletePublicAccessBlock, + HTTPMethod: "DELETE", + HTTPPath: "/{Bucket}?publicAccessBlock", + } + + if input == nil { + input = &DeletePublicAccessBlockInput{} + } + + output = &DeletePublicAccessBlockOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeletePublicAccessBlock API operation for Amazon Simple Storage Service. +// +// Removes the PublicAccessBlock configuration for an Amazon S3 bucket. In order +// to use this operation, you must have the s3:PutBucketPublicAccessBlock permission. +// For more information about permissions, see Permissions Related to Bucket +// Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// +// The following operations are related to DeleteBucketMetricsConfiguration: +// +// * Using Amazon S3 Block Public Access (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html) +// +// * GetPublicAccessBlock +// +// * PutPublicAccessBlock +// +// * GetBucketPolicyStatus +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation DeletePublicAccessBlock for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeletePublicAccessBlock +func (c *S3) DeletePublicAccessBlock(input *DeletePublicAccessBlockInput) (*DeletePublicAccessBlockOutput, error) { + req, out := c.DeletePublicAccessBlockRequest(input) + return out, req.Send() +} + +// DeletePublicAccessBlockWithContext is the same as DeletePublicAccessBlock with the addition of +// the ability to pass a context and additional request options. +// +// See DeletePublicAccessBlock for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) DeletePublicAccessBlockWithContext(ctx aws.Context, input *DeletePublicAccessBlockInput, opts ...request.Option) (*DeletePublicAccessBlockOutput, error) { + req, out := c.DeletePublicAccessBlockRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetBucketAccelerateConfiguration = "GetBucketAccelerateConfiguration" + +// GetBucketAccelerateConfigurationRequest generates a "aws/request.Request" representing the +// client's request for the GetBucketAccelerateConfiguration operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetBucketAccelerateConfiguration for more information on using the GetBucketAccelerateConfiguration +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetBucketAccelerateConfigurationRequest method. +// req, resp := client.GetBucketAccelerateConfigurationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAccelerateConfiguration +func (c *S3) GetBucketAccelerateConfigurationRequest(input *GetBucketAccelerateConfigurationInput) (req *request.Request, output *GetBucketAccelerateConfigurationOutput) { + op := &request.Operation{ + Name: opGetBucketAccelerateConfiguration, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?accelerate", + } + + if input == nil { + input = &GetBucketAccelerateConfigurationInput{} + } + + output = &GetBucketAccelerateConfigurationOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetBucketAccelerateConfiguration API operation for Amazon Simple Storage Service. +// +// This implementation of the GET operation uses the accelerate subresource +// to return the Transfer Acceleration state of a bucket, which is either Enabled +// or Suspended. Amazon S3 Transfer Acceleration is a bucket-level feature that +// enables you to perform faster data transfers to and from Amazon S3. +// +// To use this operation, you must have permission to perform the s3:GetAccelerateConfiguration +// action. The bucket owner has this permission by default. The bucket owner +// can grant this permission to others. For more information about permissions, +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev//using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev//s3-access-control.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// You set the Transfer Acceleration state of an existing bucket to Enabled +// or Suspended by using the PutBucketAccelerateConfiguration operation. +// +// A GET accelerate request does not return a state value for a bucket that +// has no transfer acceleration state. A bucket has no Transfer Acceleration +// state, if a state has never been set on the bucket. +// +// For more information on transfer acceleration, see Transfer Acceleration +// (https://docs.aws.amazon.com/AmazonS3/latest/dev//transfer-acceleration.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// Related Resources +// +// * PutBucketAccelerateConfiguration +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetBucketAccelerateConfiguration for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAccelerateConfiguration +func (c *S3) GetBucketAccelerateConfiguration(input *GetBucketAccelerateConfigurationInput) (*GetBucketAccelerateConfigurationOutput, error) { + req, out := c.GetBucketAccelerateConfigurationRequest(input) + return out, req.Send() +} + +// GetBucketAccelerateConfigurationWithContext is the same as GetBucketAccelerateConfiguration with the addition of +// the ability to pass a context and additional request options. +// +// See GetBucketAccelerateConfiguration for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetBucketAccelerateConfigurationWithContext(ctx aws.Context, input *GetBucketAccelerateConfigurationInput, opts ...request.Option) (*GetBucketAccelerateConfigurationOutput, error) { + req, out := c.GetBucketAccelerateConfigurationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetBucketAcl = "GetBucketAcl" + +// GetBucketAclRequest generates a "aws/request.Request" representing the +// client's request for the GetBucketAcl operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetBucketAcl for more information on using the GetBucketAcl +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetBucketAclRequest method. +// req, resp := client.GetBucketAclRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAcl +func (c *S3) GetBucketAclRequest(input *GetBucketAclInput) (req *request.Request, output *GetBucketAclOutput) { + op := &request.Operation{ + Name: opGetBucketAcl, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?acl", + } + + if input == nil { + input = &GetBucketAclInput{} + } + + output = &GetBucketAclOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetBucketAcl API operation for Amazon Simple Storage Service. +// +// This implementation of the GET operation uses the acl subresource to return +// the access control list (ACL) of a bucket. To use GET to return the ACL of +// the bucket, you must have READ_ACP access to the bucket. If READ_ACP permission +// is granted to the anonymous user, you can return the ACL of the bucket without +// using an authorization header. +// +// Related Resources +// +// * +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetBucketAcl for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAcl +func (c *S3) GetBucketAcl(input *GetBucketAclInput) (*GetBucketAclOutput, error) { + req, out := c.GetBucketAclRequest(input) + return out, req.Send() +} + +// GetBucketAclWithContext is the same as GetBucketAcl with the addition of +// the ability to pass a context and additional request options. +// +// See GetBucketAcl for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetBucketAclWithContext(ctx aws.Context, input *GetBucketAclInput, opts ...request.Option) (*GetBucketAclOutput, error) { + req, out := c.GetBucketAclRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetBucketAnalyticsConfiguration = "GetBucketAnalyticsConfiguration" + +// GetBucketAnalyticsConfigurationRequest generates a "aws/request.Request" representing the +// client's request for the GetBucketAnalyticsConfiguration operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetBucketAnalyticsConfiguration for more information on using the GetBucketAnalyticsConfiguration +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetBucketAnalyticsConfigurationRequest method. +// req, resp := client.GetBucketAnalyticsConfigurationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAnalyticsConfiguration +func (c *S3) GetBucketAnalyticsConfigurationRequest(input *GetBucketAnalyticsConfigurationInput) (req *request.Request, output *GetBucketAnalyticsConfigurationOutput) { + op := &request.Operation{ + Name: opGetBucketAnalyticsConfiguration, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?analytics", + } + + if input == nil { + input = &GetBucketAnalyticsConfigurationInput{} + } + + output = &GetBucketAnalyticsConfigurationOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetBucketAnalyticsConfiguration API operation for Amazon Simple Storage Service. +// +// This implementation of the GET operation returns an analytics configuration +// (identified by the analytics configuration ID) from the bucket. +// +// To use this operation, you must have permissions to perform the s3:GetAnalyticsConfiguration +// action. The bucket owner has this permission by default. The bucket owner +// can grant this permission to others. For more information about permissions, +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// For information about Amazon S3 analytics feature, see Amazon S3 Analytics +// – Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// Related Resources +// +// * +// +// * +// +// * +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetBucketAnalyticsConfiguration for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAnalyticsConfiguration +func (c *S3) GetBucketAnalyticsConfiguration(input *GetBucketAnalyticsConfigurationInput) (*GetBucketAnalyticsConfigurationOutput, error) { + req, out := c.GetBucketAnalyticsConfigurationRequest(input) + return out, req.Send() +} + +// GetBucketAnalyticsConfigurationWithContext is the same as GetBucketAnalyticsConfiguration with the addition of +// the ability to pass a context and additional request options. +// +// See GetBucketAnalyticsConfiguration for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetBucketAnalyticsConfigurationWithContext(ctx aws.Context, input *GetBucketAnalyticsConfigurationInput, opts ...request.Option) (*GetBucketAnalyticsConfigurationOutput, error) { + req, out := c.GetBucketAnalyticsConfigurationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetBucketCors = "GetBucketCors" + +// GetBucketCorsRequest generates a "aws/request.Request" representing the +// client's request for the GetBucketCors operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetBucketCors for more information on using the GetBucketCors +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetBucketCorsRequest method. +// req, resp := client.GetBucketCorsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketCors +func (c *S3) GetBucketCorsRequest(input *GetBucketCorsInput) (req *request.Request, output *GetBucketCorsOutput) { + op := &request.Operation{ + Name: opGetBucketCors, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?cors", + } + + if input == nil { + input = &GetBucketCorsInput{} + } + + output = &GetBucketCorsOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetBucketCors API operation for Amazon Simple Storage Service. +// +// Returns the cors configuration information set for the bucket. +// +// To use this operation, you must have permission to perform the s3:GetBucketCORS +// action. By default, the bucket owner has this permission and can grant it +// to others. +// +// To learn more cors, see Enabling Cross-Origin Resource Sharing (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html)Enabling +// Cross-Origin Resource Sharing. +// +// The following operations are related to GetBucketCors: +// +// * PutBucketCors +// +// * DeleteBucketCors +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetBucketCors for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketCors +func (c *S3) GetBucketCors(input *GetBucketCorsInput) (*GetBucketCorsOutput, error) { + req, out := c.GetBucketCorsRequest(input) + return out, req.Send() +} + +// GetBucketCorsWithContext is the same as GetBucketCors with the addition of +// the ability to pass a context and additional request options. +// +// See GetBucketCors for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetBucketCorsWithContext(ctx aws.Context, input *GetBucketCorsInput, opts ...request.Option) (*GetBucketCorsOutput, error) { + req, out := c.GetBucketCorsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetBucketEncryption = "GetBucketEncryption" + +// GetBucketEncryptionRequest generates a "aws/request.Request" representing the +// client's request for the GetBucketEncryption operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetBucketEncryption for more information on using the GetBucketEncryption +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetBucketEncryptionRequest method. +// req, resp := client.GetBucketEncryptionRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketEncryption +func (c *S3) GetBucketEncryptionRequest(input *GetBucketEncryptionInput) (req *request.Request, output *GetBucketEncryptionOutput) { + op := &request.Operation{ + Name: opGetBucketEncryption, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?encryption", + } + + if input == nil { + input = &GetBucketEncryptionInput{} + } + + output = &GetBucketEncryptionOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetBucketEncryption API operation for Amazon Simple Storage Service. +// +// Returns the default encryption configuration for an Amazon S3 bucket. For +// information about the Amazon S3 default encryption feature, see Amazon S3 +// Default Bucket Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html). +// +// To use this operation, you must have permission to perform the s3:GetEncryptionConfiguration +// action. The bucket owner has this permission by default. The bucket owner +// can grant this permission to others. For more information about permissions, +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// +// The following operations are related to GetBucketEncryption: +// +// * PutBucketEncryption +// +// * DeleteBucketEncryption +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetBucketEncryption for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketEncryption +func (c *S3) GetBucketEncryption(input *GetBucketEncryptionInput) (*GetBucketEncryptionOutput, error) { + req, out := c.GetBucketEncryptionRequest(input) + return out, req.Send() +} + +// GetBucketEncryptionWithContext is the same as GetBucketEncryption with the addition of +// the ability to pass a context and additional request options. +// +// See GetBucketEncryption for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetBucketEncryptionWithContext(ctx aws.Context, input *GetBucketEncryptionInput, opts ...request.Option) (*GetBucketEncryptionOutput, error) { + req, out := c.GetBucketEncryptionRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetBucketInventoryConfiguration = "GetBucketInventoryConfiguration" + +// GetBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the +// client's request for the GetBucketInventoryConfiguration operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetBucketInventoryConfiguration for more information on using the GetBucketInventoryConfiguration +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetBucketInventoryConfigurationRequest method. +// req, resp := client.GetBucketInventoryConfigurationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketInventoryConfiguration +func (c *S3) GetBucketInventoryConfigurationRequest(input *GetBucketInventoryConfigurationInput) (req *request.Request, output *GetBucketInventoryConfigurationOutput) { + op := &request.Operation{ + Name: opGetBucketInventoryConfiguration, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?inventory", + } + + if input == nil { + input = &GetBucketInventoryConfigurationInput{} + } + + output = &GetBucketInventoryConfigurationOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetBucketInventoryConfiguration API operation for Amazon Simple Storage Service. +// +// Returns an inventory configuration (identified by the inventory configuration +// ID) from the bucket. +// +// To use this operation, you must have permissions to perform the s3:GetInventoryConfiguration +// action. The bucket owner has this permission by default and can grant this +// permission to others. For more information about permissions, see Permissions +// Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// +// For information about the Amazon S3 inventory feature, see Amazon S3 Inventory +// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html). +// +// The following operations are related to GetBucketInventoryConfiguration: +// +// * DeleteBucketInventoryConfiguration +// +// * ListBucketInventoryConfigurations +// +// * PutBucketInventoryConfiguration +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetBucketInventoryConfiguration for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketInventoryConfiguration +func (c *S3) GetBucketInventoryConfiguration(input *GetBucketInventoryConfigurationInput) (*GetBucketInventoryConfigurationOutput, error) { + req, out := c.GetBucketInventoryConfigurationRequest(input) + return out, req.Send() +} + +// GetBucketInventoryConfigurationWithContext is the same as GetBucketInventoryConfiguration with the addition of +// the ability to pass a context and additional request options. +// +// See GetBucketInventoryConfiguration for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetBucketInventoryConfigurationWithContext(ctx aws.Context, input *GetBucketInventoryConfigurationInput, opts ...request.Option) (*GetBucketInventoryConfigurationOutput, error) { + req, out := c.GetBucketInventoryConfigurationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetBucketLifecycle = "GetBucketLifecycle" + +// GetBucketLifecycleRequest generates a "aws/request.Request" representing the +// client's request for the GetBucketLifecycle operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetBucketLifecycle for more information on using the GetBucketLifecycle +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetBucketLifecycleRequest method. +// req, resp := client.GetBucketLifecycleRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycle +// +// Deprecated: GetBucketLifecycle has been deprecated +func (c *S3) GetBucketLifecycleRequest(input *GetBucketLifecycleInput) (req *request.Request, output *GetBucketLifecycleOutput) { + if c.Client.Config.Logger != nil { + c.Client.Config.Logger.Log("This operation, GetBucketLifecycle, has been deprecated") + } + op := &request.Operation{ + Name: opGetBucketLifecycle, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?lifecycle", + } + + if input == nil { + input = &GetBucketLifecycleInput{} + } + + output = &GetBucketLifecycleOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetBucketLifecycle API operation for Amazon Simple Storage Service. +// +// +// For an updated version of this API, see GetBucketLifecycleConfiguration. +// If you configured a bucket lifecycle using the filter element, you should +// the updated version of this topic. This topic is provided for backward compatibility. +// +// Returns the lifecycle configuration information set on the bucket. For information +// about lifecycle configuration, see Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html). +// +// To use this operation, you must have permission to perform the s3:GetLifecycleConfiguration +// action. The bucket owner has this permission by default. The bucket owner +// can grant this permission to others. For more information about permissions, +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// +// GetBucketLifecycle has the following special error: +// +// * Error code: NoSuchLifecycleConfiguration Description: The lifecycle +// configuration does not exist. HTTP Status Code: 404 Not Found SOAP Fault +// Code Prefix: Client +// +// The following operations are related to GetBucketLifecycle: +// +// * GetBucketLifecycleConfiguration +// +// * PutBucketLifecycle +// +// * DeleteBucketLifecycle +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetBucketLifecycle for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycle +// +// Deprecated: GetBucketLifecycle has been deprecated +func (c *S3) GetBucketLifecycle(input *GetBucketLifecycleInput) (*GetBucketLifecycleOutput, error) { + req, out := c.GetBucketLifecycleRequest(input) + return out, req.Send() +} + +// GetBucketLifecycleWithContext is the same as GetBucketLifecycle with the addition of +// the ability to pass a context and additional request options. +// +// See GetBucketLifecycle for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +// +// Deprecated: GetBucketLifecycleWithContext has been deprecated +func (c *S3) GetBucketLifecycleWithContext(ctx aws.Context, input *GetBucketLifecycleInput, opts ...request.Option) (*GetBucketLifecycleOutput, error) { + req, out := c.GetBucketLifecycleRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetBucketLifecycleConfiguration = "GetBucketLifecycleConfiguration" + +// GetBucketLifecycleConfigurationRequest generates a "aws/request.Request" representing the +// client's request for the GetBucketLifecycleConfiguration operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetBucketLifecycleConfiguration for more information on using the GetBucketLifecycleConfiguration +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetBucketLifecycleConfigurationRequest method. +// req, resp := client.GetBucketLifecycleConfigurationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycleConfiguration +func (c *S3) GetBucketLifecycleConfigurationRequest(input *GetBucketLifecycleConfigurationInput) (req *request.Request, output *GetBucketLifecycleConfigurationOutput) { + op := &request.Operation{ + Name: opGetBucketLifecycleConfiguration, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?lifecycle", + } + + if input == nil { + input = &GetBucketLifecycleConfigurationInput{} + } + + output = &GetBucketLifecycleConfigurationOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetBucketLifecycleConfiguration API operation for Amazon Simple Storage Service. +// +// +// Bucket lifecycle configuration now supports specifying a lifecycle rule using +// an object key name prefix, one or more object tags, or a combination of both. +// Accordingly, this section describes the latest API. The response describes +// the new filter element that you can use to specify a filter to select a subset +// of objects to which the rule applies. If you are still using previous version +// of the lifecycle configuration, it works. For the earlier API description, +// see GetBucketLifecycle. +// +// Returns the lifecycle configuration information set on the bucket. For information +// about lifecycle configuration, see Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html). +// +// To use this operation, you must have permission to perform the s3:GetLifecycleConfiguration +// action. The bucket owner has this permission, by default. The bucket owner +// can grant this permission to others. For more information about permissions, +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// +// GetBucketLifecycleConfiguration has the following special error: +// +// * Error code: NoSuchLifecycleConfiguration Description: The lifecycle +// configuration does not exist. HTTP Status Code: 404 Not Found SOAP Fault +// Code Prefix: Client +// +// The following operations are related to DeleteBucketMetricsConfiguration: +// +// * GetBucketLifecycle +// +// * PutBucketLifecycle +// +// * DeleteBucketLifecycle +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetBucketLifecycleConfiguration for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycleConfiguration +func (c *S3) GetBucketLifecycleConfiguration(input *GetBucketLifecycleConfigurationInput) (*GetBucketLifecycleConfigurationOutput, error) { + req, out := c.GetBucketLifecycleConfigurationRequest(input) + return out, req.Send() +} + +// GetBucketLifecycleConfigurationWithContext is the same as GetBucketLifecycleConfiguration with the addition of +// the ability to pass a context and additional request options. +// +// See GetBucketLifecycleConfiguration for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetBucketLifecycleConfigurationWithContext(ctx aws.Context, input *GetBucketLifecycleConfigurationInput, opts ...request.Option) (*GetBucketLifecycleConfigurationOutput, error) { + req, out := c.GetBucketLifecycleConfigurationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetBucketLocation = "GetBucketLocation" + +// GetBucketLocationRequest generates a "aws/request.Request" representing the +// client's request for the GetBucketLocation operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetBucketLocation for more information on using the GetBucketLocation +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetBucketLocationRequest method. +// req, resp := client.GetBucketLocationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLocation +func (c *S3) GetBucketLocationRequest(input *GetBucketLocationInput) (req *request.Request, output *GetBucketLocationOutput) { + op := &request.Operation{ + Name: opGetBucketLocation, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?location", + } + + if input == nil { + input = &GetBucketLocationInput{} + } + + output = &GetBucketLocationOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetBucketLocation API operation for Amazon Simple Storage Service. +// +// Returns the region the bucket resides in. You set the bucket's region using +// the LocationConstraint request parameter in a CreateBucket request. For more +// information, see CreateBucket. +// +// To use this implementation of the operation, you must be the bucket owner. +// +// The following operations are related to GetBucketLocation: +// +// * GetObject +// +// * CreateBucket +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetBucketLocation for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLocation +func (c *S3) GetBucketLocation(input *GetBucketLocationInput) (*GetBucketLocationOutput, error) { + req, out := c.GetBucketLocationRequest(input) + return out, req.Send() +} + +// GetBucketLocationWithContext is the same as GetBucketLocation with the addition of +// the ability to pass a context and additional request options. +// +// See GetBucketLocation for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetBucketLocationWithContext(ctx aws.Context, input *GetBucketLocationInput, opts ...request.Option) (*GetBucketLocationOutput, error) { + req, out := c.GetBucketLocationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetBucketLogging = "GetBucketLogging" + +// GetBucketLoggingRequest generates a "aws/request.Request" representing the +// client's request for the GetBucketLogging operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetBucketLogging for more information on using the GetBucketLogging +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetBucketLoggingRequest method. +// req, resp := client.GetBucketLoggingRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLogging +func (c *S3) GetBucketLoggingRequest(input *GetBucketLoggingInput) (req *request.Request, output *GetBucketLoggingOutput) { + op := &request.Operation{ + Name: opGetBucketLogging, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?logging", + } + + if input == nil { + input = &GetBucketLoggingInput{} + } + + output = &GetBucketLoggingOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetBucketLogging API operation for Amazon Simple Storage Service. +// +// Returns the logging status of a bucket and the permissions users have to +// view and modify that status. To use GET, you must be the bucket owner. +// +// The following operations are related to GetBucketLogging: +// +// * CreateBucket +// +// * PutBucketLogging +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetBucketLogging for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLogging +func (c *S3) GetBucketLogging(input *GetBucketLoggingInput) (*GetBucketLoggingOutput, error) { + req, out := c.GetBucketLoggingRequest(input) + return out, req.Send() +} + +// GetBucketLoggingWithContext is the same as GetBucketLogging with the addition of +// the ability to pass a context and additional request options. +// +// See GetBucketLogging for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetBucketLoggingWithContext(ctx aws.Context, input *GetBucketLoggingInput, opts ...request.Option) (*GetBucketLoggingOutput, error) { + req, out := c.GetBucketLoggingRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetBucketMetricsConfiguration = "GetBucketMetricsConfiguration" + +// GetBucketMetricsConfigurationRequest generates a "aws/request.Request" representing the +// client's request for the GetBucketMetricsConfiguration operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetBucketMetricsConfiguration for more information on using the GetBucketMetricsConfiguration +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetBucketMetricsConfigurationRequest method. +// req, resp := client.GetBucketMetricsConfigurationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketMetricsConfiguration +func (c *S3) GetBucketMetricsConfigurationRequest(input *GetBucketMetricsConfigurationInput) (req *request.Request, output *GetBucketMetricsConfigurationOutput) { + op := &request.Operation{ + Name: opGetBucketMetricsConfiguration, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?metrics", + } + + if input == nil { + input = &GetBucketMetricsConfigurationInput{} + } + + output = &GetBucketMetricsConfigurationOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetBucketMetricsConfiguration API operation for Amazon Simple Storage Service. +// +// Gets a metrics configuration (specified by the metrics configuration ID) +// from the bucket. Note that this doesn't include the daily storage metrics. +// +// To use this operation, you must have permissions to perform the s3:GetMetricsConfiguration +// action. The bucket owner has this permission by default. The bucket owner +// can grant this permission to others. For more information about permissions, +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// +// For information about CloudWatch request metrics for Amazon S3, see Monitoring +// Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html). +// +// The following operations are related to GetBucketMetricsConfiguration: +// +// * PutBucketMetricsConfiguration +// +// * DeleteBucketMetricsConfiguration +// +// * ListBucketMetricsConfigurations +// +// * Monitoring Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html) +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetBucketMetricsConfiguration for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketMetricsConfiguration +func (c *S3) GetBucketMetricsConfiguration(input *GetBucketMetricsConfigurationInput) (*GetBucketMetricsConfigurationOutput, error) { + req, out := c.GetBucketMetricsConfigurationRequest(input) + return out, req.Send() +} + +// GetBucketMetricsConfigurationWithContext is the same as GetBucketMetricsConfiguration with the addition of +// the ability to pass a context and additional request options. +// +// See GetBucketMetricsConfiguration for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetBucketMetricsConfigurationWithContext(ctx aws.Context, input *GetBucketMetricsConfigurationInput, opts ...request.Option) (*GetBucketMetricsConfigurationOutput, error) { + req, out := c.GetBucketMetricsConfigurationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetBucketNotification = "GetBucketNotification" + +// GetBucketNotificationRequest generates a "aws/request.Request" representing the +// client's request for the GetBucketNotification operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetBucketNotification for more information on using the GetBucketNotification +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetBucketNotificationRequest method. +// req, resp := client.GetBucketNotificationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotification +// +// Deprecated: GetBucketNotification has been deprecated +func (c *S3) GetBucketNotificationRequest(input *GetBucketNotificationConfigurationRequest) (req *request.Request, output *NotificationConfigurationDeprecated) { + if c.Client.Config.Logger != nil { + c.Client.Config.Logger.Log("This operation, GetBucketNotification, has been deprecated") + } + op := &request.Operation{ + Name: opGetBucketNotification, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?notification", + } + + if input == nil { + input = &GetBucketNotificationConfigurationRequest{} + } + + output = &NotificationConfigurationDeprecated{} + req = c.newRequest(op, input, output) + return +} + +// GetBucketNotification API operation for Amazon Simple Storage Service. +// +// No longer used, see GetBucketNotificationConfiguration. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetBucketNotification for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotification +// +// Deprecated: GetBucketNotification has been deprecated +func (c *S3) GetBucketNotification(input *GetBucketNotificationConfigurationRequest) (*NotificationConfigurationDeprecated, error) { + req, out := c.GetBucketNotificationRequest(input) + return out, req.Send() +} + +// GetBucketNotificationWithContext is the same as GetBucketNotification with the addition of +// the ability to pass a context and additional request options. +// +// See GetBucketNotification for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +// +// Deprecated: GetBucketNotificationWithContext has been deprecated +func (c *S3) GetBucketNotificationWithContext(ctx aws.Context, input *GetBucketNotificationConfigurationRequest, opts ...request.Option) (*NotificationConfigurationDeprecated, error) { + req, out := c.GetBucketNotificationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetBucketNotificationConfiguration = "GetBucketNotificationConfiguration" + +// GetBucketNotificationConfigurationRequest generates a "aws/request.Request" representing the +// client's request for the GetBucketNotificationConfiguration operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetBucketNotificationConfiguration for more information on using the GetBucketNotificationConfiguration +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetBucketNotificationConfigurationRequest method. +// req, resp := client.GetBucketNotificationConfigurationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotificationConfiguration +func (c *S3) GetBucketNotificationConfigurationRequest(input *GetBucketNotificationConfigurationRequest) (req *request.Request, output *NotificationConfiguration) { + op := &request.Operation{ + Name: opGetBucketNotificationConfiguration, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?notification", + } + + if input == nil { + input = &GetBucketNotificationConfigurationRequest{} + } + + output = &NotificationConfiguration{} + req = c.newRequest(op, input, output) + return +} + +// GetBucketNotificationConfiguration API operation for Amazon Simple Storage Service. +// +// Returns the notification configuration of a bucket. +// +// If notifications are not enabled on the bucket, the operation returns an +// empty NotificationConfiguration element. +// +// By default, you must be the bucket owner to read the notification configuration +// of a bucket. However, the bucket owner can use a bucket policy to grant permission +// to other users to read this configuration with the s3:GetBucketNotification +// permission. +// +// For more information about setting and reading the notification configuration +// on a bucket, see Setting Up Notification of Bucket Events (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html). +// For more information about bucket policies, see Using Bucket Policies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html). +// +// The following operation is related to GetBucketNotification: +// +// * PutBucketNotification +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetBucketNotificationConfiguration for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotificationConfiguration +func (c *S3) GetBucketNotificationConfiguration(input *GetBucketNotificationConfigurationRequest) (*NotificationConfiguration, error) { + req, out := c.GetBucketNotificationConfigurationRequest(input) + return out, req.Send() +} + +// GetBucketNotificationConfigurationWithContext is the same as GetBucketNotificationConfiguration with the addition of +// the ability to pass a context and additional request options. +// +// See GetBucketNotificationConfiguration for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetBucketNotificationConfigurationWithContext(ctx aws.Context, input *GetBucketNotificationConfigurationRequest, opts ...request.Option) (*NotificationConfiguration, error) { + req, out := c.GetBucketNotificationConfigurationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetBucketPolicy = "GetBucketPolicy" + +// GetBucketPolicyRequest generates a "aws/request.Request" representing the +// client's request for the GetBucketPolicy operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetBucketPolicy for more information on using the GetBucketPolicy +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetBucketPolicyRequest method. +// req, resp := client.GetBucketPolicyRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicy +func (c *S3) GetBucketPolicyRequest(input *GetBucketPolicyInput) (req *request.Request, output *GetBucketPolicyOutput) { + op := &request.Operation{ + Name: opGetBucketPolicy, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?policy", + } + + if input == nil { + input = &GetBucketPolicyInput{} + } + + output = &GetBucketPolicyOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetBucketPolicy API operation for Amazon Simple Storage Service. +// +// Returns the policy of a specified bucket. If you are using an identity other +// than the root user of the AWS account that owns the bucket, the calling identity +// must have the GetBucketPolicy permissions on the specified bucket and belong +// to the bucket owner's account in order to use this operation. +// +// If you don't have GetBucketPolicy permissions, Amazon S3 returns a 403 Access +// Denied error. If you have the correct permissions, but you're not using an +// identity that belongs to the bucket owner's account, Amazon S3 returns a +// 405 Method Not Allowed error. +// +// As a security precaution, the root user of the AWS account that owns a bucket +// can always use this operation, even if the policy explicitly denies the root +// user the ability to perform this action. +// +// For more information about bucket policies, see Using Bucket Policies and +// User Policies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html). +// +// The following operation is related to GetBucketPolicy: +// +// * GetObject +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetBucketPolicy for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicy +func (c *S3) GetBucketPolicy(input *GetBucketPolicyInput) (*GetBucketPolicyOutput, error) { + req, out := c.GetBucketPolicyRequest(input) + return out, req.Send() +} + +// GetBucketPolicyWithContext is the same as GetBucketPolicy with the addition of +// the ability to pass a context and additional request options. +// +// See GetBucketPolicy for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetBucketPolicyWithContext(ctx aws.Context, input *GetBucketPolicyInput, opts ...request.Option) (*GetBucketPolicyOutput, error) { + req, out := c.GetBucketPolicyRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetBucketPolicyStatus = "GetBucketPolicyStatus" + +// GetBucketPolicyStatusRequest generates a "aws/request.Request" representing the +// client's request for the GetBucketPolicyStatus operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetBucketPolicyStatus for more information on using the GetBucketPolicyStatus +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetBucketPolicyStatusRequest method. +// req, resp := client.GetBucketPolicyStatusRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicyStatus +func (c *S3) GetBucketPolicyStatusRequest(input *GetBucketPolicyStatusInput) (req *request.Request, output *GetBucketPolicyStatusOutput) { + op := &request.Operation{ + Name: opGetBucketPolicyStatus, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?policyStatus", + } + + if input == nil { + input = &GetBucketPolicyStatusInput{} + } + + output = &GetBucketPolicyStatusOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetBucketPolicyStatus API operation for Amazon Simple Storage Service. +// +// Retrieves the policy status for an Amazon S3 bucket, indicating whether the +// bucket is public. In order to use this operation, you must have the s3:GetBucketPolicyStatus +// permission. For more information about Amazon S3 permissions, see Specifying +// Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html). +// +// For more information about when Amazon S3 considers a bucket public, see +// The Meaning of "Public" (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status). +// +// The following operations are related to GetBucketPolicyStatus: +// +// * Using Amazon S3 Block Public Access (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html) +// +// * GetPublicAccessBlock +// +// * PutPublicAccessBlock +// +// * DeletePublicAccessBlock +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetBucketPolicyStatus for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicyStatus +func (c *S3) GetBucketPolicyStatus(input *GetBucketPolicyStatusInput) (*GetBucketPolicyStatusOutput, error) { + req, out := c.GetBucketPolicyStatusRequest(input) + return out, req.Send() +} + +// GetBucketPolicyStatusWithContext is the same as GetBucketPolicyStatus with the addition of +// the ability to pass a context and additional request options. +// +// See GetBucketPolicyStatus for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetBucketPolicyStatusWithContext(ctx aws.Context, input *GetBucketPolicyStatusInput, opts ...request.Option) (*GetBucketPolicyStatusOutput, error) { + req, out := c.GetBucketPolicyStatusRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetBucketReplication = "GetBucketReplication" + +// GetBucketReplicationRequest generates a "aws/request.Request" representing the +// client's request for the GetBucketReplication operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetBucketReplication for more information on using the GetBucketReplication +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetBucketReplicationRequest method. +// req, resp := client.GetBucketReplicationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketReplication +func (c *S3) GetBucketReplicationRequest(input *GetBucketReplicationInput) (req *request.Request, output *GetBucketReplicationOutput) { + op := &request.Operation{ + Name: opGetBucketReplication, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?replication", + } + + if input == nil { + input = &GetBucketReplicationInput{} + } + + output = &GetBucketReplicationOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetBucketReplication API operation for Amazon Simple Storage Service. +// +// Returns the replication configuration of a bucket. +// +// It can take a while to propagate the put or delete a replication configuration +// to all Amazon S3 systems. Therefore, a get request soon after put or delete +// can return a wrong result. +// +// For information about replication configuration, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html). +// +// This operation requires permissions for the s3:GetReplicationConfiguration +// action. For more information about permissions, see Using Bucket Policies +// and User Policies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html). +// +// If you include the Filter element in a replication configuration, you must +// also include the DeleteMarkerReplication and Priority elements. The response +// also returns those elements. +// +// GetBucketReplication has the following special error: +// +// * Error code: NoSuchReplicationConfiguration Description: There is no +// replication configuration with that name. HTTP Status Code: 404 Not Found +// SOAP Fault Code Prefix: Client +// +// The following operations are related to GetBucketReplication: +// +// * PutBucketReplication +// +// * DeleteBucketReplication +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetBucketReplication for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketReplication +func (c *S3) GetBucketReplication(input *GetBucketReplicationInput) (*GetBucketReplicationOutput, error) { + req, out := c.GetBucketReplicationRequest(input) + return out, req.Send() +} + +// GetBucketReplicationWithContext is the same as GetBucketReplication with the addition of +// the ability to pass a context and additional request options. +// +// See GetBucketReplication for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetBucketReplicationWithContext(ctx aws.Context, input *GetBucketReplicationInput, opts ...request.Option) (*GetBucketReplicationOutput, error) { + req, out := c.GetBucketReplicationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetBucketRequestPayment = "GetBucketRequestPayment" + +// GetBucketRequestPaymentRequest generates a "aws/request.Request" representing the +// client's request for the GetBucketRequestPayment operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetBucketRequestPayment for more information on using the GetBucketRequestPayment +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetBucketRequestPaymentRequest method. +// req, resp := client.GetBucketRequestPaymentRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketRequestPayment +func (c *S3) GetBucketRequestPaymentRequest(input *GetBucketRequestPaymentInput) (req *request.Request, output *GetBucketRequestPaymentOutput) { + op := &request.Operation{ + Name: opGetBucketRequestPayment, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?requestPayment", + } + + if input == nil { + input = &GetBucketRequestPaymentInput{} + } + + output = &GetBucketRequestPaymentOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetBucketRequestPayment API operation for Amazon Simple Storage Service. +// +// Returns the request payment configuration of a bucket. To use this version +// of the operation, you must be the bucket owner. For more information, see +// Requester Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html). +// +// The following operations are related to GetBucketRequestPayment: +// +// * ListObjects +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetBucketRequestPayment for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketRequestPayment +func (c *S3) GetBucketRequestPayment(input *GetBucketRequestPaymentInput) (*GetBucketRequestPaymentOutput, error) { + req, out := c.GetBucketRequestPaymentRequest(input) + return out, req.Send() +} + +// GetBucketRequestPaymentWithContext is the same as GetBucketRequestPayment with the addition of +// the ability to pass a context and additional request options. +// +// See GetBucketRequestPayment for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetBucketRequestPaymentWithContext(ctx aws.Context, input *GetBucketRequestPaymentInput, opts ...request.Option) (*GetBucketRequestPaymentOutput, error) { + req, out := c.GetBucketRequestPaymentRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetBucketTagging = "GetBucketTagging" + +// GetBucketTaggingRequest generates a "aws/request.Request" representing the +// client's request for the GetBucketTagging operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetBucketTagging for more information on using the GetBucketTagging +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetBucketTaggingRequest method. +// req, resp := client.GetBucketTaggingRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketTagging +func (c *S3) GetBucketTaggingRequest(input *GetBucketTaggingInput) (req *request.Request, output *GetBucketTaggingOutput) { + op := &request.Operation{ + Name: opGetBucketTagging, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?tagging", + } + + if input == nil { + input = &GetBucketTaggingInput{} + } + + output = &GetBucketTaggingOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetBucketTagging API operation for Amazon Simple Storage Service. +// +// Returns the tag set associated with the bucket. +// +// To use this operation, you must have permission to perform the s3:GetBucketTagging +// action. By default, the bucket owner has this permission and can grant this +// permission to others. +// +// GetBucketTagging has the following special error: +// +// * Error code: NoSuchTagSetError Description: There is no tag set associated +// with the bucket. +// +// The following operations are related to GetBucketTagging: +// +// * PutBucketTagging +// +// * DeleteBucketTagging +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetBucketTagging for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketTagging +func (c *S3) GetBucketTagging(input *GetBucketTaggingInput) (*GetBucketTaggingOutput, error) { + req, out := c.GetBucketTaggingRequest(input) + return out, req.Send() +} + +// GetBucketTaggingWithContext is the same as GetBucketTagging with the addition of +// the ability to pass a context and additional request options. +// +// See GetBucketTagging for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetBucketTaggingWithContext(ctx aws.Context, input *GetBucketTaggingInput, opts ...request.Option) (*GetBucketTaggingOutput, error) { + req, out := c.GetBucketTaggingRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetBucketVersioning = "GetBucketVersioning" + +// GetBucketVersioningRequest generates a "aws/request.Request" representing the +// client's request for the GetBucketVersioning operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetBucketVersioning for more information on using the GetBucketVersioning +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetBucketVersioningRequest method. +// req, resp := client.GetBucketVersioningRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketVersioning +func (c *S3) GetBucketVersioningRequest(input *GetBucketVersioningInput) (req *request.Request, output *GetBucketVersioningOutput) { + op := &request.Operation{ + Name: opGetBucketVersioning, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?versioning", + } + + if input == nil { + input = &GetBucketVersioningInput{} + } + + output = &GetBucketVersioningOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetBucketVersioning API operation for Amazon Simple Storage Service. +// +// Returns the versioning state of a bucket. +// +// To retrieve the versioning state of a bucket, you must be the bucket owner. +// +// This implementation also returns the MFA Delete status of the versioning +// state, i.e., if the MFA Delete status is enabled, the bucket owner must use +// an authentication device to change the versioning state of the bucket. +// +// The following operations are related to GetBucketVersioning: +// +// * GetObject +// +// * PutObject +// +// * DeleteObject +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetBucketVersioning for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketVersioning +func (c *S3) GetBucketVersioning(input *GetBucketVersioningInput) (*GetBucketVersioningOutput, error) { + req, out := c.GetBucketVersioningRequest(input) + return out, req.Send() +} + +// GetBucketVersioningWithContext is the same as GetBucketVersioning with the addition of +// the ability to pass a context and additional request options. +// +// See GetBucketVersioning for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetBucketVersioningWithContext(ctx aws.Context, input *GetBucketVersioningInput, opts ...request.Option) (*GetBucketVersioningOutput, error) { + req, out := c.GetBucketVersioningRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetBucketWebsite = "GetBucketWebsite" + +// GetBucketWebsiteRequest generates a "aws/request.Request" representing the +// client's request for the GetBucketWebsite operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetBucketWebsite for more information on using the GetBucketWebsite +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetBucketWebsiteRequest method. +// req, resp := client.GetBucketWebsiteRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketWebsite +func (c *S3) GetBucketWebsiteRequest(input *GetBucketWebsiteInput) (req *request.Request, output *GetBucketWebsiteOutput) { + op := &request.Operation{ + Name: opGetBucketWebsite, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?website", + } + + if input == nil { + input = &GetBucketWebsiteInput{} + } + + output = &GetBucketWebsiteOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetBucketWebsite API operation for Amazon Simple Storage Service. +// +// Returns the website configuration for a bucket. To host website on Amazon +// S3, you can configure a bucket as website by adding a website configuration. +// For more information about hosting websites, see Hosting Websites on Amazon +// S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html). +// +// This GET operation requires the S3:GetBucketWebsite permission. By default, +// only the bucket owner can read the bucket website configuration. However, +// bucket owners can allow other users to read the website configuration by +// writing a bucket policy granting them the S3:GetBucketWebsite permission. +// +// The following operations are related to DeleteBucketWebsite +// +// * DeleteBucketWebsite +// +// * PutBucketWebsite +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetBucketWebsite for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketWebsite +func (c *S3) GetBucketWebsite(input *GetBucketWebsiteInput) (*GetBucketWebsiteOutput, error) { + req, out := c.GetBucketWebsiteRequest(input) + return out, req.Send() +} + +// GetBucketWebsiteWithContext is the same as GetBucketWebsite with the addition of +// the ability to pass a context and additional request options. +// +// See GetBucketWebsite for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetBucketWebsiteWithContext(ctx aws.Context, input *GetBucketWebsiteInput, opts ...request.Option) (*GetBucketWebsiteOutput, error) { + req, out := c.GetBucketWebsiteRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetObject = "GetObject" + +// GetObjectRequest generates a "aws/request.Request" representing the +// client's request for the GetObject operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetObject for more information on using the GetObject +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetObjectRequest method. +// req, resp := client.GetObjectRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObject +func (c *S3) GetObjectRequest(input *GetObjectInput) (req *request.Request, output *GetObjectOutput) { + op := &request.Operation{ + Name: opGetObject, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}/{Key+}", + } + + if input == nil { + input = &GetObjectInput{} + } + + output = &GetObjectOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetObject API operation for Amazon Simple Storage Service. +// +// Retrieves objects from Amazon S3. To use GET, you must have READ access to +// the object. If you grant READ access to the anonymous user, you can return +// the object without using an authorization header. +// +// An Amazon S3 bucket has no directory hierarchy such as you would find in +// a typical computer file system. You can, however, create a logical hierarchy +// by using object key names that imply a folder structure. For example, instead +// of naming an object sample.jpg, you can name it photos/2006/February/sample.jpg. +// +// To get an object from such a logical hierarchy, specify the full key name +// for the object in the GET operation. For a virtual hosted-style request example, +// if you have the object photos/2006/February/sample.jpg, specify the resource +// as /photos/2006/February/sample.jpg. For a path-style request example, if +// you have the object photos/2006/February/sample.jpg in the bucket named examplebucket, +// specify the resource as /examplebucket/photos/2006/February/sample.jpg. For +// more information about request types, see HTTP Host Header Bucket Specification +// (https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html#VirtualHostingSpecifyBucket). +// +// To distribute large files to many people, you can save bandwidth costs by +// using BitTorrent. For more information, see Amazon S3 Torrent (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html). +// For more information about returning the ACL of an object, see GetObjectAcl. +// +// If the object you are retrieving is stored in the GLACIER or DEEP_ARCHIVE +// storage classes, before you can retrieve the object you must first restore +// a copy using . Otherwise, this operation returns an InvalidObjectStateError +// error. For information about restoring archived objects, see Restoring Archived +// Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html). +// +// Encryption request headers, like x-amz-server-side-encryption, should not +// be sent for GET requests if your object uses server-side encryption with +// CMKs stored in AWS KMS (SSE-KMS) or server-side encryption with Amazon S3–managed +// encryption keys (SSE-S3). If your object does use these types of keys, you’ll +// get an HTTP 400 BadRequest error. +// +// If you encrypt an object by using server-side encryption with customer-provided +// encryption keys (SSE-C) when you store the object in Amazon S3, then when +// you GET the object, you must use the following headers: +// +// * x-amz-server-side​-encryption​-customer-algorithm +// +// * x-amz-server-side​-encryption​-customer-key +// +// * x-amz-server-side​-encryption​-customer-key-MD5 +// +// For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided +// Encryption Keys) (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html). +// +// Assuming you have permission to read object tags (permission for the s3:GetObjectVersionTagging +// action), the response also returns the x-amz-tagging-count header that provides +// the count of number of tags associated with the object. You can use GetObjectTagging +// to retrieve the tag set associated with an object. +// +// Permissions +// +// You need the s3:GetObject permission for this operation. For more information, +// see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html). +// If the object you request does not exist, the error Amazon S3 returns depends +// on whether you also have the s3:ListBucket permission. +// +// * If you have the s3:ListBucket permission on the bucket, Amazon S3 will +// return an HTTP status code 404 ("no such key") error. +// +// * If you don’t have the s3:ListBucket permission, Amazon S3 will return +// an HTTP status code 403 ("access denied") error. +// +// Versioning +// +// By default, the GET operation returns the current version of an object. To +// return a different version, use the versionId subresource. +// +// If the current version of the object is a delete marker, Amazon S3 behaves +// as if the object was deleted and includes x-amz-delete-marker: true in the +// response. +// +// For more information about versioning, see PutBucketVersioning. +// +// Overriding Response Header Values +// +// There are times when you want to override certain response header values +// in a GET response. For example, you might override the Content-Disposition +// response header value in your GET request. +// +// You can override values for a set of response headers using the following +// query parameters. These response header values are sent only on a successful +// request, that is, when status code 200 OK is returned. The set of headers +// you can override using these parameters is a subset of the headers that Amazon +// S3 accepts when you create an object. The response headers that you can override +// for the GET response are Content-Type, Content-Language, Expires, Cache-Control, +// Content-Disposition, and Content-Encoding. To override these header values +// in the GET response, you use the following request parameters. +// +// You must sign the request, either using an Authorization header or a presigned +// URL, when using these parameters. They cannot be used with an unsigned (anonymous) +// request. +// +// * response-content-type +// +// * response-content-language +// +// * response-expires +// +// * response-cache-control +// +// * response-content-disposition +// +// * response-content-encoding +// +// Additional Considerations about Request Headers +// +// If both of the If-Match and If-Unmodified-Since headers are present in the +// request as follows: If-Match condition evaluates to true, and; If-Unmodified-Since +// condition evaluates to false; then, S3 returns 200 OK and the data requested. +// +// If both of the If-None-Match and If-Modified-Since headers are present in +// the request as follows:If-None-Match condition evaluates to false, and; If-Modified-Since +// condition evaluates to true; then, S3 returns 304 Not Modified response code. +// +// For more information about conditional requests, see RFC 7232 (https://tools.ietf.org/html/rfc7232). +// +// The following operations are related to GetObject: +// +// * ListBuckets +// +// * GetObjectAcl +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetObject for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchKey "NoSuchKey" +// The specified key does not exist. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObject +func (c *S3) GetObject(input *GetObjectInput) (*GetObjectOutput, error) { + req, out := c.GetObjectRequest(input) + return out, req.Send() +} + +// GetObjectWithContext is the same as GetObject with the addition of +// the ability to pass a context and additional request options. +// +// See GetObject for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetObjectWithContext(ctx aws.Context, input *GetObjectInput, opts ...request.Option) (*GetObjectOutput, error) { + req, out := c.GetObjectRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetObjectAcl = "GetObjectAcl" + +// GetObjectAclRequest generates a "aws/request.Request" representing the +// client's request for the GetObjectAcl operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetObjectAcl for more information on using the GetObjectAcl +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetObjectAclRequest method. +// req, resp := client.GetObjectAclRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectAcl +func (c *S3) GetObjectAclRequest(input *GetObjectAclInput) (req *request.Request, output *GetObjectAclOutput) { + op := &request.Operation{ + Name: opGetObjectAcl, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}/{Key+}?acl", + } + + if input == nil { + input = &GetObjectAclInput{} + } + + output = &GetObjectAclOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetObjectAcl API operation for Amazon Simple Storage Service. +// +// Returns the access control list (ACL) of an object. To use this operation, +// you must have READ_ACP access to the object. +// +// Versioning +// +// By default, GET returns ACL information about the current version of an object. +// To return ACL information about a different version, use the versionId subresource. +// +// The following operations are related to GetObjectAcl: +// +// * GetObject +// +// * DeleteObject +// +// * PutObject +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetObjectAcl for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchKey "NoSuchKey" +// The specified key does not exist. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectAcl +func (c *S3) GetObjectAcl(input *GetObjectAclInput) (*GetObjectAclOutput, error) { + req, out := c.GetObjectAclRequest(input) + return out, req.Send() +} + +// GetObjectAclWithContext is the same as GetObjectAcl with the addition of +// the ability to pass a context and additional request options. +// +// See GetObjectAcl for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetObjectAclWithContext(ctx aws.Context, input *GetObjectAclInput, opts ...request.Option) (*GetObjectAclOutput, error) { + req, out := c.GetObjectAclRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetObjectLegalHold = "GetObjectLegalHold" + +// GetObjectLegalHoldRequest generates a "aws/request.Request" representing the +// client's request for the GetObjectLegalHold operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetObjectLegalHold for more information on using the GetObjectLegalHold +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetObjectLegalHoldRequest method. +// req, resp := client.GetObjectLegalHoldRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLegalHold +func (c *S3) GetObjectLegalHoldRequest(input *GetObjectLegalHoldInput) (req *request.Request, output *GetObjectLegalHoldOutput) { + op := &request.Operation{ + Name: opGetObjectLegalHold, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}/{Key+}?legal-hold", + } + + if input == nil { + input = &GetObjectLegalHoldInput{} + } + + output = &GetObjectLegalHoldOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetObjectLegalHold API operation for Amazon Simple Storage Service. +// +// Gets an object's current Legal Hold status. For more information, see Locking +// Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetObjectLegalHold for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLegalHold +func (c *S3) GetObjectLegalHold(input *GetObjectLegalHoldInput) (*GetObjectLegalHoldOutput, error) { + req, out := c.GetObjectLegalHoldRequest(input) + return out, req.Send() +} + +// GetObjectLegalHoldWithContext is the same as GetObjectLegalHold with the addition of +// the ability to pass a context and additional request options. +// +// See GetObjectLegalHold for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetObjectLegalHoldWithContext(ctx aws.Context, input *GetObjectLegalHoldInput, opts ...request.Option) (*GetObjectLegalHoldOutput, error) { + req, out := c.GetObjectLegalHoldRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetObjectLockConfiguration = "GetObjectLockConfiguration" + +// GetObjectLockConfigurationRequest generates a "aws/request.Request" representing the +// client's request for the GetObjectLockConfiguration operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetObjectLockConfiguration for more information on using the GetObjectLockConfiguration +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetObjectLockConfigurationRequest method. +// req, resp := client.GetObjectLockConfigurationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLockConfiguration +func (c *S3) GetObjectLockConfigurationRequest(input *GetObjectLockConfigurationInput) (req *request.Request, output *GetObjectLockConfigurationOutput) { + op := &request.Operation{ + Name: opGetObjectLockConfiguration, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?object-lock", + } + + if input == nil { + input = &GetObjectLockConfigurationInput{} + } + + output = &GetObjectLockConfigurationOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetObjectLockConfiguration API operation for Amazon Simple Storage Service. +// +// Gets the Object Lock configuration for a bucket. The rule specified in the +// Object Lock configuration will be applied by default to every new object +// placed in the specified bucket. For more information, see Locking Objects +// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetObjectLockConfiguration for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLockConfiguration +func (c *S3) GetObjectLockConfiguration(input *GetObjectLockConfigurationInput) (*GetObjectLockConfigurationOutput, error) { + req, out := c.GetObjectLockConfigurationRequest(input) + return out, req.Send() +} + +// GetObjectLockConfigurationWithContext is the same as GetObjectLockConfiguration with the addition of +// the ability to pass a context and additional request options. +// +// See GetObjectLockConfiguration for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetObjectLockConfigurationWithContext(ctx aws.Context, input *GetObjectLockConfigurationInput, opts ...request.Option) (*GetObjectLockConfigurationOutput, error) { + req, out := c.GetObjectLockConfigurationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetObjectRetention = "GetObjectRetention" + +// GetObjectRetentionRequest generates a "aws/request.Request" representing the +// client's request for the GetObjectRetention operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetObjectRetention for more information on using the GetObjectRetention +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetObjectRetentionRequest method. +// req, resp := client.GetObjectRetentionRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectRetention +func (c *S3) GetObjectRetentionRequest(input *GetObjectRetentionInput) (req *request.Request, output *GetObjectRetentionOutput) { + op := &request.Operation{ + Name: opGetObjectRetention, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}/{Key+}?retention", + } + + if input == nil { + input = &GetObjectRetentionInput{} + } + + output = &GetObjectRetentionOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetObjectRetention API operation for Amazon Simple Storage Service. +// +// Retrieves an object's retention settings. For more information, see Locking +// Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetObjectRetention for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectRetention +func (c *S3) GetObjectRetention(input *GetObjectRetentionInput) (*GetObjectRetentionOutput, error) { + req, out := c.GetObjectRetentionRequest(input) + return out, req.Send() +} + +// GetObjectRetentionWithContext is the same as GetObjectRetention with the addition of +// the ability to pass a context and additional request options. +// +// See GetObjectRetention for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetObjectRetentionWithContext(ctx aws.Context, input *GetObjectRetentionInput, opts ...request.Option) (*GetObjectRetentionOutput, error) { + req, out := c.GetObjectRetentionRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetObjectTagging = "GetObjectTagging" + +// GetObjectTaggingRequest generates a "aws/request.Request" representing the +// client's request for the GetObjectTagging operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetObjectTagging for more information on using the GetObjectTagging +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetObjectTaggingRequest method. +// req, resp := client.GetObjectTaggingRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTagging +func (c *S3) GetObjectTaggingRequest(input *GetObjectTaggingInput) (req *request.Request, output *GetObjectTaggingOutput) { + op := &request.Operation{ + Name: opGetObjectTagging, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}/{Key+}?tagging", + } + + if input == nil { + input = &GetObjectTaggingInput{} + } + + output = &GetObjectTaggingOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetObjectTagging API operation for Amazon Simple Storage Service. +// +// Returns the tag-set of an object. You send the GET request against the tagging +// subresource associated with the object. +// +// To use this operation, you must have permission to perform the s3:GetObjectTagging +// action. By default, the GET operation returns information about current version +// of an object. For a versioned bucket, you can have multiple versions of an +// object in your bucket. To retrieve tags of any other version, use the versionId +// query parameter. You also need permission for the s3:GetObjectVersionTagging +// action. +// +// By default, the bucket owner has this permission and can grant this permission +// to others. +// +// For information about the Amazon S3 object tagging feature, see Object Tagging +// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html). +// +// The following operation is related to GetObjectTagging: +// +// * PutObjectTagging +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetObjectTagging for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTagging +func (c *S3) GetObjectTagging(input *GetObjectTaggingInput) (*GetObjectTaggingOutput, error) { + req, out := c.GetObjectTaggingRequest(input) + return out, req.Send() +} + +// GetObjectTaggingWithContext is the same as GetObjectTagging with the addition of +// the ability to pass a context and additional request options. +// +// See GetObjectTagging for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetObjectTaggingWithContext(ctx aws.Context, input *GetObjectTaggingInput, opts ...request.Option) (*GetObjectTaggingOutput, error) { + req, out := c.GetObjectTaggingRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetObjectTorrent = "GetObjectTorrent" + +// GetObjectTorrentRequest generates a "aws/request.Request" representing the +// client's request for the GetObjectTorrent operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetObjectTorrent for more information on using the GetObjectTorrent +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetObjectTorrentRequest method. +// req, resp := client.GetObjectTorrentRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTorrent +func (c *S3) GetObjectTorrentRequest(input *GetObjectTorrentInput) (req *request.Request, output *GetObjectTorrentOutput) { + op := &request.Operation{ + Name: opGetObjectTorrent, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}/{Key+}?torrent", + } + + if input == nil { + input = &GetObjectTorrentInput{} + } + + output = &GetObjectTorrentOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetObjectTorrent API operation for Amazon Simple Storage Service. +// +// Return torrent files from a bucket. BitTorrent can save you bandwidth when +// you're distributing large files. For more information about BitTorrent, see +// Amazon S3 Torrent (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html). +// +// You can get torrent only for objects that are less than 5 GB in size and +// that are not encrypted using server-side encryption with customer-provided +// encryption key. +// +// To use GET, you must have READ access to the object. +// +// The following operation is related to GetObjectTorrent: +// +// * GetObject +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetObjectTorrent for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTorrent +func (c *S3) GetObjectTorrent(input *GetObjectTorrentInput) (*GetObjectTorrentOutput, error) { + req, out := c.GetObjectTorrentRequest(input) + return out, req.Send() +} + +// GetObjectTorrentWithContext is the same as GetObjectTorrent with the addition of +// the ability to pass a context and additional request options. +// +// See GetObjectTorrent for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetObjectTorrentWithContext(ctx aws.Context, input *GetObjectTorrentInput, opts ...request.Option) (*GetObjectTorrentOutput, error) { + req, out := c.GetObjectTorrentRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetPublicAccessBlock = "GetPublicAccessBlock" + +// GetPublicAccessBlockRequest generates a "aws/request.Request" representing the +// client's request for the GetPublicAccessBlock operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetPublicAccessBlock for more information on using the GetPublicAccessBlock +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetPublicAccessBlockRequest method. +// req, resp := client.GetPublicAccessBlockRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetPublicAccessBlock +func (c *S3) GetPublicAccessBlockRequest(input *GetPublicAccessBlockInput) (req *request.Request, output *GetPublicAccessBlockOutput) { + op := &request.Operation{ + Name: opGetPublicAccessBlock, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?publicAccessBlock", + } + + if input == nil { + input = &GetPublicAccessBlockInput{} + } + + output = &GetPublicAccessBlockOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetPublicAccessBlock API operation for Amazon Simple Storage Service. +// +// Retrieves the PublicAccessBlock configuration for an Amazon S3 bucket. In +// order to use this operation, you must have the s3:GetBucketPublicAccessBlock +// permission. For more information about Amazon S3 permissions, see Specifying +// Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html). +// +// When Amazon S3 evaluates the PublicAccessBlock configuration for a bucket +// or an object, it checks the PublicAccessBlock configuration for both the +// bucket (or the bucket that contains the object) and the bucket owner's account. +// If the PublicAccessBlock settings are different between the bucket and the +// account, Amazon S3 uses the most restrictive combination of the bucket-level +// and account-level settings. +// +// For more information about when Amazon S3 considers a bucket or an object +// public, see The Meaning of "Public" (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status). +// +// The following operations are related to GetPublicAccessBlock: +// +// * Using Amazon S3 Block Public Access (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html) +// +// * PutPublicAccessBlock +// +// * GetPublicAccessBlock +// +// * DeletePublicAccessBlock +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation GetPublicAccessBlock for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetPublicAccessBlock +func (c *S3) GetPublicAccessBlock(input *GetPublicAccessBlockInput) (*GetPublicAccessBlockOutput, error) { + req, out := c.GetPublicAccessBlockRequest(input) + return out, req.Send() +} + +// GetPublicAccessBlockWithContext is the same as GetPublicAccessBlock with the addition of +// the ability to pass a context and additional request options. +// +// See GetPublicAccessBlock for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) GetPublicAccessBlockWithContext(ctx aws.Context, input *GetPublicAccessBlockInput, opts ...request.Option) (*GetPublicAccessBlockOutput, error) { + req, out := c.GetPublicAccessBlockRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opHeadBucket = "HeadBucket" + +// HeadBucketRequest generates a "aws/request.Request" representing the +// client's request for the HeadBucket operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See HeadBucket for more information on using the HeadBucket +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the HeadBucketRequest method. +// req, resp := client.HeadBucketRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadBucket +func (c *S3) HeadBucketRequest(input *HeadBucketInput) (req *request.Request, output *HeadBucketOutput) { + op := &request.Operation{ + Name: opHeadBucket, + HTTPMethod: "HEAD", + HTTPPath: "/{Bucket}", + } + + if input == nil { + input = &HeadBucketInput{} + } + + output = &HeadBucketOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// HeadBucket API operation for Amazon Simple Storage Service. +// +// This operation is useful to determine if a bucket exists and you have permission +// to access it. The operation returns a 200 OK if the bucket exists and you +// have permission to access it. Otherwise, the operation might return responses +// such as 404 Not Found and 403 Forbidden. +// +// To use this operation, you must have permissions to perform the s3:ListBucket +// action. The bucket owner has this permission by default and can grant this +// permission to others. For more information about permissions, see Permissions +// Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation HeadBucket for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchBucket "NoSuchBucket" +// The specified bucket does not exist. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadBucket +func (c *S3) HeadBucket(input *HeadBucketInput) (*HeadBucketOutput, error) { + req, out := c.HeadBucketRequest(input) + return out, req.Send() +} + +// HeadBucketWithContext is the same as HeadBucket with the addition of +// the ability to pass a context and additional request options. +// +// See HeadBucket for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) HeadBucketWithContext(ctx aws.Context, input *HeadBucketInput, opts ...request.Option) (*HeadBucketOutput, error) { + req, out := c.HeadBucketRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opHeadObject = "HeadObject" + +// HeadObjectRequest generates a "aws/request.Request" representing the +// client's request for the HeadObject operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See HeadObject for more information on using the HeadObject +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the HeadObjectRequest method. +// req, resp := client.HeadObjectRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadObject +func (c *S3) HeadObjectRequest(input *HeadObjectInput) (req *request.Request, output *HeadObjectOutput) { + op := &request.Operation{ + Name: opHeadObject, + HTTPMethod: "HEAD", + HTTPPath: "/{Bucket}/{Key+}", + } + + if input == nil { + input = &HeadObjectInput{} + } + + output = &HeadObjectOutput{} + req = c.newRequest(op, input, output) + return +} + +// HeadObject API operation for Amazon Simple Storage Service. +// +// The HEAD operation retrieves metadata from an object without returning the +// object itself. This operation is useful if you're only interested in an object's +// metadata. To use HEAD, you must have READ access to the object. +// +// A HEAD request has the same options as a GET operation on an object. The +// response is identical to the GET response except that there is no response +// body. +// +// If you encrypt an object by using server-side encryption with customer-provided +// encryption keys (SSE-C) when you store the object in Amazon S3, then when +// you retrieve the metadata from the object, you must use the following headers: +// +// * x-amz-server-side​-encryption​-customer-algorithm +// +// * x-amz-server-side​-encryption​-customer-key +// +// * x-amz-server-side​-encryption​-customer-key-MD5 +// +// For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided +// Encryption Keys) (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html). +// +// Encryption request headers, like x-amz-server-side-encryption, should not +// be sent for GET requests if your object uses server-side encryption with +// CMKs stored in AWS KMS (SSE-KMS) or server-side encryption with Amazon S3–managed +// encryption keys (SSE-S3). If your object does use these types of keys, you’ll +// get an HTTP 400 BadRequest error. +// +// Request headers are limited to 8 KB in size. For more information, see Common +// Request Headers (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonRequestHeaders.html). +// +// Consider the following when using request headers: +// +// * Consideration 1 – If both of the If-Match and If-Unmodified-Since +// headers are present in the request as follows: If-Match condition evaluates +// to true, and; If-Unmodified-Since condition evaluates to false; Then Amazon +// S3 returns 200 OK and the data requested. +// +// * Consideration 2 – If both of the If-None-Match and If-Modified-Since +// headers are present in the request as follows: If-None-Match condition +// evaluates to false, and; If-Modified-Since condition evaluates to true; +// Then Amazon S3 returns the 304 Not Modified response code. +// +// For more information about conditional requests, see RFC 7232 (https://tools.ietf.org/html/rfc7232). +// +// Permissions +// +// You need the s3:GetObject permission for this operation. For more information, +// see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html). +// If the object you request does not exist, the error Amazon S3 returns depends +// on whether you also have the s3:ListBucket permission. +// +// * If you have the s3:ListBucket permission on the bucket, Amazon S3 will +// return a HTTP status code 404 ("no such key") error. +// +// * If you don’t have the s3:ListBucket permission, Amazon S3 will return +// a HTTP status code 403 ("access denied") error. +// +// The following operation is related to HeadObject: +// +// * GetObject +// +// See http://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#RESTErrorResponses +// for more information on returned errors. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation HeadObject for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadObject +func (c *S3) HeadObject(input *HeadObjectInput) (*HeadObjectOutput, error) { + req, out := c.HeadObjectRequest(input) + return out, req.Send() +} + +// HeadObjectWithContext is the same as HeadObject with the addition of +// the ability to pass a context and additional request options. +// +// See HeadObject for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) HeadObjectWithContext(ctx aws.Context, input *HeadObjectInput, opts ...request.Option) (*HeadObjectOutput, error) { + req, out := c.HeadObjectRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opListBucketAnalyticsConfigurations = "ListBucketAnalyticsConfigurations" + +// ListBucketAnalyticsConfigurationsRequest generates a "aws/request.Request" representing the +// client's request for the ListBucketAnalyticsConfigurations operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListBucketAnalyticsConfigurations for more information on using the ListBucketAnalyticsConfigurations +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListBucketAnalyticsConfigurationsRequest method. +// req, resp := client.ListBucketAnalyticsConfigurationsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketAnalyticsConfigurations +func (c *S3) ListBucketAnalyticsConfigurationsRequest(input *ListBucketAnalyticsConfigurationsInput) (req *request.Request, output *ListBucketAnalyticsConfigurationsOutput) { + op := &request.Operation{ + Name: opListBucketAnalyticsConfigurations, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?analytics", + } + + if input == nil { + input = &ListBucketAnalyticsConfigurationsInput{} + } + + output = &ListBucketAnalyticsConfigurationsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListBucketAnalyticsConfigurations API operation for Amazon Simple Storage Service. +// +// Lists the analytics configurations for the bucket. You can have up to 1,000 +// analytics configurations per bucket. +// +// This operation supports list pagination and does not return more than 100 +// configurations at a time. You should always check the IsTruncated element +// in the response. If there are no more configurations to list, IsTruncated +// is set to false. If there are more configurations to list, IsTruncated is +// set to true, and there will be a value in NextContinuationToken. You use +// the NextContinuationToken value to continue the pagination of the list by +// passing the value in continuation-token in the request to GET the next page. +// +// To use this operation, you must have permissions to perform the s3:GetAnalyticsConfiguration +// action. The bucket owner has this permission by default. The bucket owner +// can grant this permission to others. For more information about permissions, +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// +// For information about Amazon S3 analytics feature, see Amazon S3 Analytics +// – Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html). +// +// The following operations are related to ListBucketAnalyticsConfigurations: +// +// * GetBucketAnalyticsConfiguration +// +// * DeleteBucketAnalyticsConfiguration +// +// * PutBucketAnalyticsConfiguration +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation ListBucketAnalyticsConfigurations for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketAnalyticsConfigurations +func (c *S3) ListBucketAnalyticsConfigurations(input *ListBucketAnalyticsConfigurationsInput) (*ListBucketAnalyticsConfigurationsOutput, error) { + req, out := c.ListBucketAnalyticsConfigurationsRequest(input) + return out, req.Send() +} + +// ListBucketAnalyticsConfigurationsWithContext is the same as ListBucketAnalyticsConfigurations with the addition of +// the ability to pass a context and additional request options. +// +// See ListBucketAnalyticsConfigurations for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) ListBucketAnalyticsConfigurationsWithContext(ctx aws.Context, input *ListBucketAnalyticsConfigurationsInput, opts ...request.Option) (*ListBucketAnalyticsConfigurationsOutput, error) { + req, out := c.ListBucketAnalyticsConfigurationsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opListBucketInventoryConfigurations = "ListBucketInventoryConfigurations" + +// ListBucketInventoryConfigurationsRequest generates a "aws/request.Request" representing the +// client's request for the ListBucketInventoryConfigurations operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListBucketInventoryConfigurations for more information on using the ListBucketInventoryConfigurations +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListBucketInventoryConfigurationsRequest method. +// req, resp := client.ListBucketInventoryConfigurationsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketInventoryConfigurations +func (c *S3) ListBucketInventoryConfigurationsRequest(input *ListBucketInventoryConfigurationsInput) (req *request.Request, output *ListBucketInventoryConfigurationsOutput) { + op := &request.Operation{ + Name: opListBucketInventoryConfigurations, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?inventory", + } + + if input == nil { + input = &ListBucketInventoryConfigurationsInput{} + } + + output = &ListBucketInventoryConfigurationsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListBucketInventoryConfigurations API operation for Amazon Simple Storage Service. +// +// Returns a list of inventory configurations for the bucket. You can have up +// to 1,000 analytics configurations per bucket. +// +// This operation supports list pagination and does not return more than 100 +// configurations at a time. Always check the IsTruncated element in the response. +// If there are no more configurations to list, IsTruncated is set to false. +// If there are more configurations to list, IsTruncated is set to true, and +// there is a value in NextContinuationToken. You use the NextContinuationToken +// value to continue the pagination of the list by passing the value in continuation-token +// in the request to GET the next page. +// +// To use this operation, you must have permissions to perform the s3:GetInventoryConfiguration +// action. The bucket owner has this permission by default. The bucket owner +// can grant this permission to others. For more information about permissions, +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// +// For information about the Amazon S3 inventory feature, see Amazon S3 Inventory +// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html) +// +// The following operations are related to ListBucketInventoryConfigurations: +// +// * GetBucketInventoryConfiguration +// +// * DeleteBucketInventoryConfiguration +// +// * PutBucketInventoryConfiguration +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation ListBucketInventoryConfigurations for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketInventoryConfigurations +func (c *S3) ListBucketInventoryConfigurations(input *ListBucketInventoryConfigurationsInput) (*ListBucketInventoryConfigurationsOutput, error) { + req, out := c.ListBucketInventoryConfigurationsRequest(input) + return out, req.Send() +} + +// ListBucketInventoryConfigurationsWithContext is the same as ListBucketInventoryConfigurations with the addition of +// the ability to pass a context and additional request options. +// +// See ListBucketInventoryConfigurations for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) ListBucketInventoryConfigurationsWithContext(ctx aws.Context, input *ListBucketInventoryConfigurationsInput, opts ...request.Option) (*ListBucketInventoryConfigurationsOutput, error) { + req, out := c.ListBucketInventoryConfigurationsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opListBucketMetricsConfigurations = "ListBucketMetricsConfigurations" + +// ListBucketMetricsConfigurationsRequest generates a "aws/request.Request" representing the +// client's request for the ListBucketMetricsConfigurations operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListBucketMetricsConfigurations for more information on using the ListBucketMetricsConfigurations +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListBucketMetricsConfigurationsRequest method. +// req, resp := client.ListBucketMetricsConfigurationsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketMetricsConfigurations +func (c *S3) ListBucketMetricsConfigurationsRequest(input *ListBucketMetricsConfigurationsInput) (req *request.Request, output *ListBucketMetricsConfigurationsOutput) { + op := &request.Operation{ + Name: opListBucketMetricsConfigurations, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?metrics", + } + + if input == nil { + input = &ListBucketMetricsConfigurationsInput{} + } + + output = &ListBucketMetricsConfigurationsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListBucketMetricsConfigurations API operation for Amazon Simple Storage Service. +// +// Lists the metrics configurations for the bucket. The metrics configurations +// are only for the request metrics of the bucket and do not provide information +// on daily storage metrics. You can have up to 1,000 configurations per bucket. +// +// This operation supports list pagination and does not return more than 100 +// configurations at a time. Always check the IsTruncated element in the response. +// If there are no more configurations to list, IsTruncated is set to false. +// If there are more configurations to list, IsTruncated is set to true, and +// there is a value in NextContinuationToken. You use the NextContinuationToken +// value to continue the pagination of the list by passing the value in continuation-token +// in the request to GET the next page. +// +// To use this operation, you must have permissions to perform the s3:GetMetricsConfiguration +// action. The bucket owner has this permission by default. The bucket owner +// can grant this permission to others. For more information about permissions, +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// +// For more information about metrics configurations and CloudWatch request +// metrics, see Monitoring Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html). +// +// The following operations are related to ListBucketMetricsConfigurations: +// +// * PutBucketMetricsConfiguration +// +// * GetBucketMetricsConfiguration +// +// * DeleteBucketMetricsConfiguration +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation ListBucketMetricsConfigurations for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketMetricsConfigurations +func (c *S3) ListBucketMetricsConfigurations(input *ListBucketMetricsConfigurationsInput) (*ListBucketMetricsConfigurationsOutput, error) { + req, out := c.ListBucketMetricsConfigurationsRequest(input) + return out, req.Send() +} + +// ListBucketMetricsConfigurationsWithContext is the same as ListBucketMetricsConfigurations with the addition of +// the ability to pass a context and additional request options. +// +// See ListBucketMetricsConfigurations for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) ListBucketMetricsConfigurationsWithContext(ctx aws.Context, input *ListBucketMetricsConfigurationsInput, opts ...request.Option) (*ListBucketMetricsConfigurationsOutput, error) { + req, out := c.ListBucketMetricsConfigurationsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opListBuckets = "ListBuckets" + +// ListBucketsRequest generates a "aws/request.Request" representing the +// client's request for the ListBuckets operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListBuckets for more information on using the ListBuckets +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListBucketsRequest method. +// req, resp := client.ListBucketsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBuckets +func (c *S3) ListBucketsRequest(input *ListBucketsInput) (req *request.Request, output *ListBucketsOutput) { + op := &request.Operation{ + Name: opListBuckets, + HTTPMethod: "GET", + HTTPPath: "/", + } + + if input == nil { + input = &ListBucketsInput{} + } + + output = &ListBucketsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListBuckets API operation for Amazon Simple Storage Service. +// +// Returns a list of all buckets owned by the authenticated sender of the request. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation ListBuckets for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBuckets +func (c *S3) ListBuckets(input *ListBucketsInput) (*ListBucketsOutput, error) { + req, out := c.ListBucketsRequest(input) + return out, req.Send() +} + +// ListBucketsWithContext is the same as ListBuckets with the addition of +// the ability to pass a context and additional request options. +// +// See ListBuckets for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) ListBucketsWithContext(ctx aws.Context, input *ListBucketsInput, opts ...request.Option) (*ListBucketsOutput, error) { + req, out := c.ListBucketsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opListMultipartUploads = "ListMultipartUploads" + +// ListMultipartUploadsRequest generates a "aws/request.Request" representing the +// client's request for the ListMultipartUploads operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListMultipartUploads for more information on using the ListMultipartUploads +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListMultipartUploadsRequest method. +// req, resp := client.ListMultipartUploadsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListMultipartUploads +func (c *S3) ListMultipartUploadsRequest(input *ListMultipartUploadsInput) (req *request.Request, output *ListMultipartUploadsOutput) { + op := &request.Operation{ + Name: opListMultipartUploads, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?uploads", + Paginator: &request.Paginator{ + InputTokens: []string{"KeyMarker", "UploadIdMarker"}, + OutputTokens: []string{"NextKeyMarker", "NextUploadIdMarker"}, + LimitToken: "MaxUploads", + TruncationToken: "IsTruncated", + }, + } + + if input == nil { + input = &ListMultipartUploadsInput{} + } + + output = &ListMultipartUploadsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListMultipartUploads API operation for Amazon Simple Storage Service. +// +// This operation lists in-progress multipart uploads. An in-progress multipart +// upload is a multipart upload that has been initiated using the Initiate Multipart +// Upload request, but has not yet been completed or aborted. +// +// This operation returns at most 1,000 multipart uploads in the response. 1,000 +// multipart uploads is the maximum number of uploads a response can include, +// which is also the default value. You can further limit the number of uploads +// in a response by specifying the max-uploads parameter in the response. If +// additional multipart uploads satisfy the list criteria, the response will +// contain an IsTruncated element with the value true. To list the additional +// multipart uploads, use the key-marker and upload-id-marker request parameters. +// +// In the response, the uploads are sorted by key. If your application has initiated +// more than one multipart upload using the same object key, then uploads in +// the response are first sorted by key. Additionally, uploads are sorted in +// ascending order within each key by the upload initiation time. +// +// For more information on multipart uploads, see Uploading Objects Using Multipart +// Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html). +// +// For information on permissions required to use the multipart upload API, +// see Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html). +// +// The following operations are related to ListMultipartUploads: +// +// * CreateMultipartUpload +// +// * UploadPart +// +// * CompleteMultipartUpload +// +// * ListParts +// +// * AbortMultipartUpload +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation ListMultipartUploads for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListMultipartUploads +func (c *S3) ListMultipartUploads(input *ListMultipartUploadsInput) (*ListMultipartUploadsOutput, error) { + req, out := c.ListMultipartUploadsRequest(input) + return out, req.Send() +} + +// ListMultipartUploadsWithContext is the same as ListMultipartUploads with the addition of +// the ability to pass a context and additional request options. +// +// See ListMultipartUploads for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) ListMultipartUploadsWithContext(ctx aws.Context, input *ListMultipartUploadsInput, opts ...request.Option) (*ListMultipartUploadsOutput, error) { + req, out := c.ListMultipartUploadsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// ListMultipartUploadsPages iterates over the pages of a ListMultipartUploads operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListMultipartUploads method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListMultipartUploads operation. +// pageNum := 0 +// err := client.ListMultipartUploadsPages(params, +// func(page *s3.ListMultipartUploadsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *S3) ListMultipartUploadsPages(input *ListMultipartUploadsInput, fn func(*ListMultipartUploadsOutput, bool) bool) error { + return c.ListMultipartUploadsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// ListMultipartUploadsPagesWithContext same as ListMultipartUploadsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) ListMultipartUploadsPagesWithContext(ctx aws.Context, input *ListMultipartUploadsInput, fn func(*ListMultipartUploadsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *ListMultipartUploadsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.ListMultipartUploadsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*ListMultipartUploadsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opListObjectVersions = "ListObjectVersions" + +// ListObjectVersionsRequest generates a "aws/request.Request" representing the +// client's request for the ListObjectVersions operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListObjectVersions for more information on using the ListObjectVersions +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListObjectVersionsRequest method. +// req, resp := client.ListObjectVersionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectVersions +func (c *S3) ListObjectVersionsRequest(input *ListObjectVersionsInput) (req *request.Request, output *ListObjectVersionsOutput) { + op := &request.Operation{ + Name: opListObjectVersions, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?versions", + Paginator: &request.Paginator{ + InputTokens: []string{"KeyMarker", "VersionIdMarker"}, + OutputTokens: []string{"NextKeyMarker", "NextVersionIdMarker"}, + LimitToken: "MaxKeys", + TruncationToken: "IsTruncated", + }, + } + + if input == nil { + input = &ListObjectVersionsInput{} + } + + output = &ListObjectVersionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListObjectVersions API operation for Amazon Simple Storage Service. +// +// Returns metadata about all of the versions of objects in a bucket. You can +// also use request parameters as selection criteria to return metadata about +// a subset of all the object versions. +// +// A 200 OK response can contain valid or invalid XML. Make sure to design your +// application to parse the contents of the response and handle it appropriately. +// +// To use this operation, you must have READ access to the bucket. +// +// The following operations are related to ListObjectVersions: +// +// * ListObjectsV2 +// +// * GetObject +// +// * PutObject +// +// * DeleteObject +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation ListObjectVersions for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectVersions +func (c *S3) ListObjectVersions(input *ListObjectVersionsInput) (*ListObjectVersionsOutput, error) { + req, out := c.ListObjectVersionsRequest(input) + return out, req.Send() +} + +// ListObjectVersionsWithContext is the same as ListObjectVersions with the addition of +// the ability to pass a context and additional request options. +// +// See ListObjectVersions for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) ListObjectVersionsWithContext(ctx aws.Context, input *ListObjectVersionsInput, opts ...request.Option) (*ListObjectVersionsOutput, error) { + req, out := c.ListObjectVersionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// ListObjectVersionsPages iterates over the pages of a ListObjectVersions operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListObjectVersions method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListObjectVersions operation. +// pageNum := 0 +// err := client.ListObjectVersionsPages(params, +// func(page *s3.ListObjectVersionsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *S3) ListObjectVersionsPages(input *ListObjectVersionsInput, fn func(*ListObjectVersionsOutput, bool) bool) error { + return c.ListObjectVersionsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// ListObjectVersionsPagesWithContext same as ListObjectVersionsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) ListObjectVersionsPagesWithContext(ctx aws.Context, input *ListObjectVersionsInput, fn func(*ListObjectVersionsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *ListObjectVersionsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.ListObjectVersionsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*ListObjectVersionsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opListObjects = "ListObjects" + +// ListObjectsRequest generates a "aws/request.Request" representing the +// client's request for the ListObjects operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListObjects for more information on using the ListObjects +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListObjectsRequest method. +// req, resp := client.ListObjectsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjects +func (c *S3) ListObjectsRequest(input *ListObjectsInput) (req *request.Request, output *ListObjectsOutput) { + op := &request.Operation{ + Name: opListObjects, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}", + Paginator: &request.Paginator{ + InputTokens: []string{"Marker"}, + OutputTokens: []string{"NextMarker || Contents[-1].Key"}, + LimitToken: "MaxKeys", + TruncationToken: "IsTruncated", + }, + } + + if input == nil { + input = &ListObjectsInput{} + } + + output = &ListObjectsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListObjects API operation for Amazon Simple Storage Service. +// +// Returns some or all (up to 1000) of the objects in a bucket. You can use +// the request parameters as selection criteria to return a subset of the objects +// in a bucket. A 200 OK response can contain valid or invalid XML. Be sure +// to design your application to parse the contents of the response and handle +// it appropriately. +// +// This API has been revised. We recommend that you use the newer version, ListObjectsV2, +// when developing applications. For backward compatibility, Amazon S3 continues +// to support ListObjects. +// +// The following operations are related to ListObjects: +// +// * ListObjectsV2 +// +// * GetObject +// +// * PutObject +// +// * CreateBucket +// +// * ListBuckets +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation ListObjects for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchBucket "NoSuchBucket" +// The specified bucket does not exist. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjects +func (c *S3) ListObjects(input *ListObjectsInput) (*ListObjectsOutput, error) { + req, out := c.ListObjectsRequest(input) + return out, req.Send() +} + +// ListObjectsWithContext is the same as ListObjects with the addition of +// the ability to pass a context and additional request options. +// +// See ListObjects for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) ListObjectsWithContext(ctx aws.Context, input *ListObjectsInput, opts ...request.Option) (*ListObjectsOutput, error) { + req, out := c.ListObjectsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// ListObjectsPages iterates over the pages of a ListObjects operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListObjects method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListObjects operation. +// pageNum := 0 +// err := client.ListObjectsPages(params, +// func(page *s3.ListObjectsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *S3) ListObjectsPages(input *ListObjectsInput, fn func(*ListObjectsOutput, bool) bool) error { + return c.ListObjectsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// ListObjectsPagesWithContext same as ListObjectsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) ListObjectsPagesWithContext(ctx aws.Context, input *ListObjectsInput, fn func(*ListObjectsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *ListObjectsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.ListObjectsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*ListObjectsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opListObjectsV2 = "ListObjectsV2" + +// ListObjectsV2Request generates a "aws/request.Request" representing the +// client's request for the ListObjectsV2 operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListObjectsV2 for more information on using the ListObjectsV2 +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListObjectsV2Request method. +// req, resp := client.ListObjectsV2Request(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectsV2 +func (c *S3) ListObjectsV2Request(input *ListObjectsV2Input) (req *request.Request, output *ListObjectsV2Output) { + op := &request.Operation{ + Name: opListObjectsV2, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}?list-type=2", + Paginator: &request.Paginator{ + InputTokens: []string{"ContinuationToken"}, + OutputTokens: []string{"NextContinuationToken"}, + LimitToken: "MaxKeys", + TruncationToken: "", + }, + } + + if input == nil { + input = &ListObjectsV2Input{} + } + + output = &ListObjectsV2Output{} + req = c.newRequest(op, input, output) + return +} + +// ListObjectsV2 API operation for Amazon Simple Storage Service. +// +// Returns some or all (up to 1,000) of the objects in a bucket. You can use +// the request parameters as selection criteria to return a subset of the objects +// in a bucket. A 200 OK response can contain valid or invalid XML. Make sure +// to design your application to parse the contents of the response and handle +// it appropriately. +// +// To use thisoperation, you must have READ access to the bucket. +// +// To use this operation in an AWS Identity and Access Management (IAM) policy, +// you must have permissions to perform the s3:ListBucket action. The bucket +// owner has this permission by default and can grant this permission to others. +// For more information about permissions, see Permissions Related to Bucket +// Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// +// This section describes the latest revision of the API. We recommend that +// you use this revised API for application development. For backward compatibility, +// Amazon S3 continues to support the prior version of this API, ListObjects. +// +// To get a list of your buckets, see ListBuckets. +// +// The following operations are related to ListObjectsV2: +// +// * GetObject +// +// * PutObject +// +// * CreateBucket +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation ListObjectsV2 for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchBucket "NoSuchBucket" +// The specified bucket does not exist. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectsV2 +func (c *S3) ListObjectsV2(input *ListObjectsV2Input) (*ListObjectsV2Output, error) { + req, out := c.ListObjectsV2Request(input) + return out, req.Send() +} + +// ListObjectsV2WithContext is the same as ListObjectsV2 with the addition of +// the ability to pass a context and additional request options. +// +// See ListObjectsV2 for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) ListObjectsV2WithContext(ctx aws.Context, input *ListObjectsV2Input, opts ...request.Option) (*ListObjectsV2Output, error) { + req, out := c.ListObjectsV2Request(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// ListObjectsV2Pages iterates over the pages of a ListObjectsV2 operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListObjectsV2 method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListObjectsV2 operation. +// pageNum := 0 +// err := client.ListObjectsV2Pages(params, +// func(page *s3.ListObjectsV2Output, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *S3) ListObjectsV2Pages(input *ListObjectsV2Input, fn func(*ListObjectsV2Output, bool) bool) error { + return c.ListObjectsV2PagesWithContext(aws.BackgroundContext(), input, fn) +} + +// ListObjectsV2PagesWithContext same as ListObjectsV2Pages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) ListObjectsV2PagesWithContext(ctx aws.Context, input *ListObjectsV2Input, fn func(*ListObjectsV2Output, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *ListObjectsV2Input + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.ListObjectsV2Request(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*ListObjectsV2Output), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opListParts = "ListParts" + +// ListPartsRequest generates a "aws/request.Request" representing the +// client's request for the ListParts operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListParts for more information on using the ListParts +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListPartsRequest method. +// req, resp := client.ListPartsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListParts +func (c *S3) ListPartsRequest(input *ListPartsInput) (req *request.Request, output *ListPartsOutput) { + op := &request.Operation{ + Name: opListParts, + HTTPMethod: "GET", + HTTPPath: "/{Bucket}/{Key+}", + Paginator: &request.Paginator{ + InputTokens: []string{"PartNumberMarker"}, + OutputTokens: []string{"NextPartNumberMarker"}, + LimitToken: "MaxParts", + TruncationToken: "IsTruncated", + }, + } + + if input == nil { + input = &ListPartsInput{} + } + + output = &ListPartsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListParts API operation for Amazon Simple Storage Service. +// +// Lists the parts that have been uploaded for a specific multipart upload. +// This operation must include the upload ID, which you obtain by sending the +// initiate multipart upload request (see CreateMultipartUpload). This request +// returns a maximum of 1,000 uploaded parts. The default number of parts returned +// is 1,000 parts. You can restrict the number of parts returned by specifying +// the max-parts request parameter. If your multipart upload consists of more +// than 1,000 parts, the response returns an IsTruncated field with the value +// of true, and a NextPartNumberMarker element. In subsequent ListParts requests +// you can include the part-number-marker query string parameter and set its +// value to the NextPartNumberMarker field value from the previous response. +// +// For more information on multipart uploads, see Uploading Objects Using Multipart +// Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html). +// +// For information on permissions required to use the multipart upload API, +// see Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html). +// +// The following operations are related to ListParts: +// +// * CreateMultipartUpload +// +// * UploadPart +// +// * CompleteMultipartUpload +// +// * AbortMultipartUpload +// +// * ListMultipartUploads +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation ListParts for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListParts +func (c *S3) ListParts(input *ListPartsInput) (*ListPartsOutput, error) { + req, out := c.ListPartsRequest(input) + return out, req.Send() +} + +// ListPartsWithContext is the same as ListParts with the addition of +// the ability to pass a context and additional request options. +// +// See ListParts for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) ListPartsWithContext(ctx aws.Context, input *ListPartsInput, opts ...request.Option) (*ListPartsOutput, error) { + req, out := c.ListPartsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// ListPartsPages iterates over the pages of a ListParts operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListParts method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListParts operation. +// pageNum := 0 +// err := client.ListPartsPages(params, +// func(page *s3.ListPartsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *S3) ListPartsPages(input *ListPartsInput, fn func(*ListPartsOutput, bool) bool) error { + return c.ListPartsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// ListPartsPagesWithContext same as ListPartsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) ListPartsPagesWithContext(ctx aws.Context, input *ListPartsInput, fn func(*ListPartsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *ListPartsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.ListPartsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*ListPartsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opPutBucketAccelerateConfiguration = "PutBucketAccelerateConfiguration" + +// PutBucketAccelerateConfigurationRequest generates a "aws/request.Request" representing the +// client's request for the PutBucketAccelerateConfiguration operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutBucketAccelerateConfiguration for more information on using the PutBucketAccelerateConfiguration +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutBucketAccelerateConfigurationRequest method. +// req, resp := client.PutBucketAccelerateConfigurationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAccelerateConfiguration +func (c *S3) PutBucketAccelerateConfigurationRequest(input *PutBucketAccelerateConfigurationInput) (req *request.Request, output *PutBucketAccelerateConfigurationOutput) { + op := &request.Operation{ + Name: opPutBucketAccelerateConfiguration, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}?accelerate", + } + + if input == nil { + input = &PutBucketAccelerateConfigurationInput{} + } + + output = &PutBucketAccelerateConfigurationOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// PutBucketAccelerateConfiguration API operation for Amazon Simple Storage Service. +// +// Sets the accelerate configuration of an existing bucket. Amazon S3 Transfer +// Acceleration is a bucket-level feature that enables you to perform faster +// data transfers to Amazon S3. +// +// To use this operation, you must have permission to perform the s3:PutAccelerateConfiguration +// action. The bucket owner has this permission by default. The bucket owner +// can grant this permission to others. For more information about permissions, +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// +// The Transfer Acceleration state of a bucket can be set to one of the following +// two values: +// +// * Enabled – Enables accelerated data transfers to the bucket. +// +// * Suspended – Disables accelerated data transfers to the bucket. +// +// The GetBucketAccelerateConfiguration operation returns the transfer acceleration +// state of a bucket. +// +// After setting the Transfer Acceleration state of a bucket to Enabled, it +// might take up to thirty minutes before the data transfer rates to the bucket +// increase. +// +// The name of the bucket used for Transfer Acceleration must be DNS-compliant +// and must not contain periods ("."). +// +// For more information about transfer acceleration, see Transfer Acceleration +// (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html). +// +// The following operations are related to PutBucketAccelerateConfiguration: +// +// * GetBucketAccelerateConfiguration +// +// * CreateBucket +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation PutBucketAccelerateConfiguration for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAccelerateConfiguration +func (c *S3) PutBucketAccelerateConfiguration(input *PutBucketAccelerateConfigurationInput) (*PutBucketAccelerateConfigurationOutput, error) { + req, out := c.PutBucketAccelerateConfigurationRequest(input) + return out, req.Send() +} + +// PutBucketAccelerateConfigurationWithContext is the same as PutBucketAccelerateConfiguration with the addition of +// the ability to pass a context and additional request options. +// +// See PutBucketAccelerateConfiguration for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) PutBucketAccelerateConfigurationWithContext(ctx aws.Context, input *PutBucketAccelerateConfigurationInput, opts ...request.Option) (*PutBucketAccelerateConfigurationOutput, error) { + req, out := c.PutBucketAccelerateConfigurationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPutBucketAcl = "PutBucketAcl" + +// PutBucketAclRequest generates a "aws/request.Request" representing the +// client's request for the PutBucketAcl operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutBucketAcl for more information on using the PutBucketAcl +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutBucketAclRequest method. +// req, resp := client.PutBucketAclRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAcl +func (c *S3) PutBucketAclRequest(input *PutBucketAclInput) (req *request.Request, output *PutBucketAclOutput) { + op := &request.Operation{ + Name: opPutBucketAcl, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}?acl", + } + + if input == nil { + input = &PutBucketAclInput{} + } + + output = &PutBucketAclOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// PutBucketAcl API operation for Amazon Simple Storage Service. +// +// Sets the permissions on an existing bucket using access control lists (ACL). +// For more information, see Using ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html). +// To set the ACL of a bucket, you must have WRITE_ACP permission. +// +// You can use one of the following two ways to set a bucket's permissions: +// +// * Specify the ACL in the request body +// +// * Specify permissions using request headers +// +// You cannot specify access permission using both the body and the request +// headers. +// +// Depending on your application needs, you may choose to set the ACL on a bucket +// using either the request body or the headers. For example, if you have an +// existing application that updates a bucket ACL using the request body, then +// you can continue to use that approach. +// +// Access Permissions +// +// You can set access permissions using one of the following methods: +// +// * Specify a canned ACL with the x-amz-acl request header. Amazon S3 supports +// a set of predefined ACLs, known as canned ACLs. Each canned ACL has a +// predefined set of grantees and permissions. Specify the canned ACL name +// as the value of x-amz-acl. If you use this header, you cannot use other +// access control specific headers in your request. For more information, +// see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL). +// +// * Specify access permissions explicitly with the x-amz-grant-read, x-amz-grant-read-acp, +// x-amz-grant-write-acp, and x-amz-grant-full-control headers. When using +// these headers you specify explicit access permissions and grantees (AWS +// accounts or a Amazon S3 groups) who will receive the permission. If you +// use these ACL specific headers, you cannot use x-amz-acl header to set +// a canned ACL. These parameters map to the set of permissions that Amazon +// S3 supports in an ACL. For more information, see Access Control List (ACL) +// Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html). +// You specify each grantee as a type=value pair, where the type is one of +// the following: emailAddress – if the value specified is the email address +// of an AWS account id – if the value specified is the canonical user +// ID of an AWS account uri – if you are granting permissions to a predefined +// group For example, the following x-amz-grant-write header grants create, +// overwrite, and delete objects permission to LogDelivery group predefined +// by Amazon S3 and two AWS accounts identified by their email addresses. +// x-amz-grant-write: uri="http://acs.amazonaws.com/groups/s3/LogDelivery", +// emailAddress="xyz@amazon.com", emailAddress="abc@amazon.com" +// +// You can use either a canned ACL or specify access permissions explicitly. +// You cannot do both. +// +// Grantee Values +// +// You can specify the person (grantee) to whom you're assigning access rights +// (using request elements) in the following ways: +// +// * By Email address: <>Grantees@email.com<>lt;/Grantee> +// The grantee is resolved to the CanonicalUser and, in a response to a GET +// Object acl request, appears as the CanonicalUser. +// +// * By the person's ID: <>ID<><>GranteesEmail<> +// DisplayName is optional and ignored in the request +// +// * By URI: <>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<> +// +// Related Resources +// +// * CreateBucket +// +// * DeleteBucket +// +// * GetObjectAcl +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation PutBucketAcl for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAcl +func (c *S3) PutBucketAcl(input *PutBucketAclInput) (*PutBucketAclOutput, error) { + req, out := c.PutBucketAclRequest(input) + return out, req.Send() +} + +// PutBucketAclWithContext is the same as PutBucketAcl with the addition of +// the ability to pass a context and additional request options. +// +// See PutBucketAcl for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) PutBucketAclWithContext(ctx aws.Context, input *PutBucketAclInput, opts ...request.Option) (*PutBucketAclOutput, error) { + req, out := c.PutBucketAclRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPutBucketAnalyticsConfiguration = "PutBucketAnalyticsConfiguration" + +// PutBucketAnalyticsConfigurationRequest generates a "aws/request.Request" representing the +// client's request for the PutBucketAnalyticsConfiguration operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutBucketAnalyticsConfiguration for more information on using the PutBucketAnalyticsConfiguration +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutBucketAnalyticsConfigurationRequest method. +// req, resp := client.PutBucketAnalyticsConfigurationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAnalyticsConfiguration +func (c *S3) PutBucketAnalyticsConfigurationRequest(input *PutBucketAnalyticsConfigurationInput) (req *request.Request, output *PutBucketAnalyticsConfigurationOutput) { + op := &request.Operation{ + Name: opPutBucketAnalyticsConfiguration, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}?analytics", + } + + if input == nil { + input = &PutBucketAnalyticsConfigurationInput{} + } + + output = &PutBucketAnalyticsConfigurationOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// PutBucketAnalyticsConfiguration API operation for Amazon Simple Storage Service. +// +// Sets an analytics configuration for the bucket (specified by the analytics +// configuration ID). You can have up to 1,000 analytics configurations per +// bucket. +// +// You can choose to have storage class analysis export analysis reports to +// a comma-separated values (CSV) flat file, see the DataExport request element. +// Reports are updated daily and are based on the object filters you configure. +// When selecting data export you specify a destination bucket and optional +// destination prefix where the file is written. You can export the data to +// a destination bucket in a different account. However, the destination bucket +// must be in the same region as the bucket that you are making the PUT analytics +// configuration to. For more information, see Amazon S3 Analytics – Storage +// Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html). +// +// You must create a bucket policy on the destination bucket where the exported +// file is written to grant permissions to Amazon S3 to write objects to the +// bucket. For an example policy, see Granting Permissions for Amazon S3 Inventory +// and Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-9). +// +// To use this operation, you must have permissions to perform the s3:PutAnalyticsConfiguration +// action. The bucket owner has this permission by default. The bucket owner +// can grant this permission to others. For more information about permissions, +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// +// Special Errors +// +// * HTTP Error: HTTP 400 Bad Request Code: InvalidArgument Cause: Invalid +// argument. +// +// * HTTP Error: HTTP 400 Bad Request Code: TooManyConfigurations Cause: +// You are attempting to create a new configuration but have already reached +// the 1,000-configuration limit. +// +// * HTTP Error: HTTP 403 Forbidden Code: AccessDenied Cause: You are not +// the owner of the specified bucket, or you do not have the s3:PutAnalyticsConfiguration +// bucket permission to set the configuration on the bucket. +// +// Related Resources +// +// * +// +// * +// +// * +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation PutBucketAnalyticsConfiguration for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAnalyticsConfiguration +func (c *S3) PutBucketAnalyticsConfiguration(input *PutBucketAnalyticsConfigurationInput) (*PutBucketAnalyticsConfigurationOutput, error) { + req, out := c.PutBucketAnalyticsConfigurationRequest(input) + return out, req.Send() +} + +// PutBucketAnalyticsConfigurationWithContext is the same as PutBucketAnalyticsConfiguration with the addition of +// the ability to pass a context and additional request options. +// +// See PutBucketAnalyticsConfiguration for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) PutBucketAnalyticsConfigurationWithContext(ctx aws.Context, input *PutBucketAnalyticsConfigurationInput, opts ...request.Option) (*PutBucketAnalyticsConfigurationOutput, error) { + req, out := c.PutBucketAnalyticsConfigurationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPutBucketCors = "PutBucketCors" + +// PutBucketCorsRequest generates a "aws/request.Request" representing the +// client's request for the PutBucketCors operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutBucketCors for more information on using the PutBucketCors +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutBucketCorsRequest method. +// req, resp := client.PutBucketCorsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketCors +func (c *S3) PutBucketCorsRequest(input *PutBucketCorsInput) (req *request.Request, output *PutBucketCorsOutput) { + op := &request.Operation{ + Name: opPutBucketCors, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}?cors", + } + + if input == nil { + input = &PutBucketCorsInput{} + } + + output = &PutBucketCorsOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// PutBucketCors API operation for Amazon Simple Storage Service. +// +// Sets the cors configuration for your bucket. If the configuration exists, +// Amazon S3 replaces it. +// +// To use this operation, you must be allowed to perform the s3:PutBucketCORS +// action. By default, the bucket owner has this permission and can grant it +// to others. +// +// You set this configuration on a bucket so that the bucket can service cross-origin +// requests. For example, you might want to enable a request whose origin is +// http://www.example.com to access your Amazon S3 bucket at my.example.bucket.com +// by using the browser's XMLHttpRequest capability. +// +// To enable cross-origin resource sharing (CORS) on a bucket, you add the cors +// subresource to the bucket. The cors subresource is an XML document in which +// you configure rules that identify origins and the HTTP methods that can be +// executed on your bucket. The document is limited to 64 KB in size. +// +// When Amazon S3 receives a cross-origin request (or a pre-flight OPTIONS request) +// against a bucket, it evaluates the cors configuration on the bucket and uses +// the first CORSRule rule that matches the incoming browser request to enable +// a cross-origin request. For a rule to match, the following conditions must +// be met: +// +// * The request's Origin header must match AllowedOrigin elements. +// +// * The request method (for example, GET, PUT, HEAD and so on) or the Access-Control-Request-Method +// header in case of a pre-flight OPTIONS request must be one of the AllowedMethod +// elements. +// +// * Every header specified in the Access-Control-Request-Headers request +// header of a pre-flight request must match an AllowedHeader element. +// +// For more information about CORS, go to Enabling Cross-Origin Resource Sharing +// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) in the Amazon +// Simple Storage Service Developer Guide. +// +// Related Resources +// +// * GetBucketCors +// +// * DeleteBucketCors +// +// * RESTOPTIONSobject +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation PutBucketCors for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketCors +func (c *S3) PutBucketCors(input *PutBucketCorsInput) (*PutBucketCorsOutput, error) { + req, out := c.PutBucketCorsRequest(input) + return out, req.Send() +} + +// PutBucketCorsWithContext is the same as PutBucketCors with the addition of +// the ability to pass a context and additional request options. +// +// See PutBucketCors for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) PutBucketCorsWithContext(ctx aws.Context, input *PutBucketCorsInput, opts ...request.Option) (*PutBucketCorsOutput, error) { + req, out := c.PutBucketCorsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPutBucketEncryption = "PutBucketEncryption" + +// PutBucketEncryptionRequest generates a "aws/request.Request" representing the +// client's request for the PutBucketEncryption operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutBucketEncryption for more information on using the PutBucketEncryption +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutBucketEncryptionRequest method. +// req, resp := client.PutBucketEncryptionRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketEncryption +func (c *S3) PutBucketEncryptionRequest(input *PutBucketEncryptionInput) (req *request.Request, output *PutBucketEncryptionOutput) { + op := &request.Operation{ + Name: opPutBucketEncryption, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}?encryption", + } + + if input == nil { + input = &PutBucketEncryptionInput{} + } + + output = &PutBucketEncryptionOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// PutBucketEncryption API operation for Amazon Simple Storage Service. +// +// This implementation of the PUT operation uses the encryption subresource +// to set the default encryption state of an existing bucket. +// +// This implementation of the PUT operation sets default encryption for a buckets +// using server-side encryption with Amazon S3-managed keys SSE-S3 or AWS KMS +// customer master keys (CMKs) (SSE-KMS) bucket. For information about the Amazon +// S3 default encryption feature, see As a security precaution, the root user +// of the AWS account that owns a bucket can always use this operation, even +// if the policy explicitly denies the root user the ability to perform this +// action. in the Amazon Simple Storage Service Developer Guide. +// +// This operation requires AWS Signature Version 4. For more information, see +// Authenticating Requests (AWS Signature Version 4) (sig-v4-authenticating-requests.html). +// +// To use this operation, you must have permissions to perform the s3:PutEncryptionConfiguration +// action. The bucket owner has this permission by default. The bucket owner +// can grant this permission to others. For more information about permissions, +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// Related Resources +// +// * GetBucketEncryption +// +// * DeleteBucketEncryption +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation PutBucketEncryption for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketEncryption +func (c *S3) PutBucketEncryption(input *PutBucketEncryptionInput) (*PutBucketEncryptionOutput, error) { + req, out := c.PutBucketEncryptionRequest(input) + return out, req.Send() +} + +// PutBucketEncryptionWithContext is the same as PutBucketEncryption with the addition of +// the ability to pass a context and additional request options. +// +// See PutBucketEncryption for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) PutBucketEncryptionWithContext(ctx aws.Context, input *PutBucketEncryptionInput, opts ...request.Option) (*PutBucketEncryptionOutput, error) { + req, out := c.PutBucketEncryptionRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPutBucketInventoryConfiguration = "PutBucketInventoryConfiguration" + +// PutBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the +// client's request for the PutBucketInventoryConfiguration operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutBucketInventoryConfiguration for more information on using the PutBucketInventoryConfiguration +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutBucketInventoryConfigurationRequest method. +// req, resp := client.PutBucketInventoryConfigurationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketInventoryConfiguration +func (c *S3) PutBucketInventoryConfigurationRequest(input *PutBucketInventoryConfigurationInput) (req *request.Request, output *PutBucketInventoryConfigurationOutput) { + op := &request.Operation{ + Name: opPutBucketInventoryConfiguration, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}?inventory", + } + + if input == nil { + input = &PutBucketInventoryConfigurationInput{} + } + + output = &PutBucketInventoryConfigurationOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// PutBucketInventoryConfiguration API operation for Amazon Simple Storage Service. +// +// This implementation of the PUT operation adds an inventory configuration +// (identified by the inventory ID) to the bucket. You can have up to 1,000 +// inventory configurations per bucket. +// +// Amazon S3 inventory generates inventories of the objects in the bucket on +// a daily or weekly basis, and the results are published to a flat file. The +// bucket that is inventoried is called the source bucket, and the bucket where +// the inventory flat file is stored is called the destination bucket. The destination +// bucket must be in the same AWS Region as the source bucket. +// +// When you configure an inventory for a source bucket, you specify the destination +// bucket where you want the inventory to be stored, and whether to generate +// the inventory daily or weekly. You can also configure what object metadata +// to include and whether to inventory all object versions or only current versions. +// For more information, see Amazon S3 Inventory (https://docs.aws.amazon.com/AmazonS3/latest/dev//storage-inventory.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// You must create a bucket policy on the destination bucket to grant permissions +// to Amazon S3 to write objects to the bucket in the defined location. For +// an example policy, see Granting Permissions for Amazon S3 Inventory and Storage +// Class Analysis. (https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-9) +// +// To use this operation, you must have permissions to perform the s3:PutInventoryConfiguration +// action. The bucket owner has this permission by default and can grant this +// permission to others. For more information about permissions, see Permissions +// Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev//using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev//s3-access-control.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// Special Errors +// +// * HTTP 400 Bad Request Error Code: InvalidArgument Cause: Invalid Argument +// +// * HTTP 400 Bad Request Error Code: TooManyConfigurations Cause: You are +// attempting to create a new configuration but have already reached the +// 1,000-configuration limit. +// +// * HTTP 403 Forbidden Error Code: AccessDenied Cause: You are not the owner +// of the specified bucket, or you do not have the s3:PutInventoryConfiguration +// bucket permission to set the configuration on the bucket +// +// Related Resources +// +// * GetBucketInventoryConfiguration +// +// * DeleteBucketInventoryConfiguration +// +// * ListBucketInventoryConfigurations +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation PutBucketInventoryConfiguration for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketInventoryConfiguration +func (c *S3) PutBucketInventoryConfiguration(input *PutBucketInventoryConfigurationInput) (*PutBucketInventoryConfigurationOutput, error) { + req, out := c.PutBucketInventoryConfigurationRequest(input) + return out, req.Send() +} + +// PutBucketInventoryConfigurationWithContext is the same as PutBucketInventoryConfiguration with the addition of +// the ability to pass a context and additional request options. +// +// See PutBucketInventoryConfiguration for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) PutBucketInventoryConfigurationWithContext(ctx aws.Context, input *PutBucketInventoryConfigurationInput, opts ...request.Option) (*PutBucketInventoryConfigurationOutput, error) { + req, out := c.PutBucketInventoryConfigurationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPutBucketLifecycle = "PutBucketLifecycle" + +// PutBucketLifecycleRequest generates a "aws/request.Request" representing the +// client's request for the PutBucketLifecycle operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutBucketLifecycle for more information on using the PutBucketLifecycle +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutBucketLifecycleRequest method. +// req, resp := client.PutBucketLifecycleRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycle +// +// Deprecated: PutBucketLifecycle has been deprecated +func (c *S3) PutBucketLifecycleRequest(input *PutBucketLifecycleInput) (req *request.Request, output *PutBucketLifecycleOutput) { + if c.Client.Config.Logger != nil { + c.Client.Config.Logger.Log("This operation, PutBucketLifecycle, has been deprecated") + } + op := &request.Operation{ + Name: opPutBucketLifecycle, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}?lifecycle", + } + + if input == nil { + input = &PutBucketLifecycleInput{} + } + + output = &PutBucketLifecycleOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// PutBucketLifecycle API operation for Amazon Simple Storage Service. +// +// +// For an updated version of this API, see PutBucketLifecycleConfiguration. +// This version has been deprecated. Existing lifecycle configurations will +// work. For new lifecycle configurations, use the updated API. +// +// Creates a new lifecycle configuration for the bucket or replaces an existing +// lifecycle configuration. For information about lifecycle configuration, see +// Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev//object-lifecycle-mgmt.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// By default, all Amazon S3 resources, including buckets, objects, and related +// subresources (for example, lifecycle configuration and website configuration) +// are private. Only the resource owner, the AWS account that created the resource, +// can access it. The resource owner can optionally grant access permissions +// to others by writing an access policy. For this operation, users must get +// the s3:PutLifecycleConfiguration permission. +// +// You can also explicitly deny permissions. Explicit denial also supersedes +// any other permissions. If you want to prevent users or accounts from removing +// or deleting objects from your bucket, you must deny them permissions for +// the following actions: +// +// * s3:DeleteObject +// +// * s3:DeleteObjectVersion +// +// * s3:PutLifecycleConfiguration +// +// For more information about permissions, see Managing Access Permissions to +// your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev//s3-access-control.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// For more examples of transitioning objects to storage classes such as STANDARD_IA +// or ONEZONE_IA, see Examples of Lifecycle Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev//intro-lifecycle-rules.html#lifecycle-configuration-examples). +// +// Related Resources +// +// * GetBucketLifecycle(Deprecated) +// +// * GetBucketLifecycleConfiguration +// +// * +// +// * By default, a resource owner—in this case, a bucket owner, which is +// the AWS account that created the bucket—can perform any of the operations. +// A resource owner can also grant others permission to perform the operation. +// For more information, see the following topics in the Amazon Simple Storage +// Service Developer Guide: Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev//using-with-s3-actions.html) +// Managing Access Permissions to your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev//s3-access-control.html) +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation PutBucketLifecycle for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycle +// +// Deprecated: PutBucketLifecycle has been deprecated +func (c *S3) PutBucketLifecycle(input *PutBucketLifecycleInput) (*PutBucketLifecycleOutput, error) { + req, out := c.PutBucketLifecycleRequest(input) + return out, req.Send() +} + +// PutBucketLifecycleWithContext is the same as PutBucketLifecycle with the addition of +// the ability to pass a context and additional request options. +// +// See PutBucketLifecycle for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +// +// Deprecated: PutBucketLifecycleWithContext has been deprecated +func (c *S3) PutBucketLifecycleWithContext(ctx aws.Context, input *PutBucketLifecycleInput, opts ...request.Option) (*PutBucketLifecycleOutput, error) { + req, out := c.PutBucketLifecycleRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPutBucketLifecycleConfiguration = "PutBucketLifecycleConfiguration" + +// PutBucketLifecycleConfigurationRequest generates a "aws/request.Request" representing the +// client's request for the PutBucketLifecycleConfiguration operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutBucketLifecycleConfiguration for more information on using the PutBucketLifecycleConfiguration +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutBucketLifecycleConfigurationRequest method. +// req, resp := client.PutBucketLifecycleConfigurationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycleConfiguration +func (c *S3) PutBucketLifecycleConfigurationRequest(input *PutBucketLifecycleConfigurationInput) (req *request.Request, output *PutBucketLifecycleConfigurationOutput) { + op := &request.Operation{ + Name: opPutBucketLifecycleConfiguration, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}?lifecycle", + } + + if input == nil { + input = &PutBucketLifecycleConfigurationInput{} + } + + output = &PutBucketLifecycleConfigurationOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// PutBucketLifecycleConfiguration API operation for Amazon Simple Storage Service. +// +// Creates a new lifecycle configuration for the bucket or replaces an existing +// lifecycle configuration. For information about lifecycle configuration, see +// Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// +// Bucket lifecycle configuration now supports specifying a lifecycle rule using +// an object key name prefix, one or more object tags, or a combination of both. +// Accordingly, this section describes the latest API. The previous version +// of the API supported filtering based only on an object key name prefix, which +// is supported for backward compatibility. For the related API description, +// see PutBucketLifecycle. +// +// Rules +// +// You specify the lifecycle configuration in your request body. The lifecycle +// configuration is specified as XML consisting of one or more rules. Each rule +// consists of the following: +// +// * Filter identifying a subset of objects to which the rule applies. The +// filter can be based on a key name prefix, object tags, or a combination +// of both. +// +// * Status whether the rule is in effect. +// +// * One or more lifecycle transition and expiration actions that you want +// Amazon S3 to perform on the objects identified by the filter. If the state +// of your bucket is versioning-enabled or versioning-suspended, you can +// have many versions of the same object (one current version and zero or +// more noncurrent versions). Amazon S3 provides predefined actions that +// you can specify for current and noncurrent object versions. +// +// For more information, see Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html) +// and Lifecycle Configuration Elements (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html). +// +// Permissions +// +// By default, all Amazon S3 resources are private, including buckets, objects, +// and related subresources (for example, lifecycle configuration and website +// configuration). Only the resource owner (that is, the AWS account that created +// it) can access the resource. The resource owner can optionally grant access +// permissions to others by writing an access policy. For this operation, a +// user must get the s3:PutLifecycleConfiguration permission. +// +// You can also explicitly deny permissions. Explicit deny also supersedes any +// other permissions. If you want to block users or accounts from removing or +// deleting objects from your bucket, you must deny them permissions for the +// following actions: +// +// * s3:DeleteObject +// +// * s3:DeleteObjectVersion +// +// * s3:PutLifecycleConfiguration +// +// For more information about permissions, see Managing Access Permissions to +// Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// +// The following are related to PutBucketLifecycleConfiguration: +// +// * Examples of Lifecycle Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-configuration-examples.html) +// +// * GetBucketLifecycleConfiguration +// +// * DeleteBucketLifecycle +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation PutBucketLifecycleConfiguration for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycleConfiguration +func (c *S3) PutBucketLifecycleConfiguration(input *PutBucketLifecycleConfigurationInput) (*PutBucketLifecycleConfigurationOutput, error) { + req, out := c.PutBucketLifecycleConfigurationRequest(input) + return out, req.Send() +} + +// PutBucketLifecycleConfigurationWithContext is the same as PutBucketLifecycleConfiguration with the addition of +// the ability to pass a context and additional request options. +// +// See PutBucketLifecycleConfiguration for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) PutBucketLifecycleConfigurationWithContext(ctx aws.Context, input *PutBucketLifecycleConfigurationInput, opts ...request.Option) (*PutBucketLifecycleConfigurationOutput, error) { + req, out := c.PutBucketLifecycleConfigurationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPutBucketLogging = "PutBucketLogging" + +// PutBucketLoggingRequest generates a "aws/request.Request" representing the +// client's request for the PutBucketLogging operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutBucketLogging for more information on using the PutBucketLogging +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutBucketLoggingRequest method. +// req, resp := client.PutBucketLoggingRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLogging +func (c *S3) PutBucketLoggingRequest(input *PutBucketLoggingInput) (req *request.Request, output *PutBucketLoggingOutput) { + op := &request.Operation{ + Name: opPutBucketLogging, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}?logging", + } + + if input == nil { + input = &PutBucketLoggingInput{} + } + + output = &PutBucketLoggingOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// PutBucketLogging API operation for Amazon Simple Storage Service. +// +// Set the logging parameters for a bucket and to specify permissions for who +// can view and modify the logging parameters. All logs are saved to buckets +// in the same AWS Region as the source bucket. To set the logging status of +// a bucket, you must be the bucket owner. +// +// The bucket owner is automatically granted FULL_CONTROL to all logs. You use +// the Grantee request element to grant access to other people. The Permissions +// request element specifies the kind of access the grantee has to the logs. +// +// Grantee Values +// +// You can specify the person (grantee) to whom you're assigning access rights +// (using request elements) in the following ways: +// +// * By the person's ID: <>ID<><>GranteesEmail<> +// DisplayName is optional and ignored in the request. +// +// * By Email address: <>Grantees@email.com<> +// The grantee is resolved to the CanonicalUser and, in a response to a GET +// Object acl request, appears as the CanonicalUser. +// +// * By URI: <>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<> +// +// To enable logging, you use LoggingEnabled and its children request elements. +// To disable logging, you use an empty BucketLoggingStatus request element: +// +// +// +// For more information about server access logging, see Server Access Logging +// (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerLogs.html). +// +// For more information about creating a bucket, see CreateBucket. For more +// information about returning the logging status of a bucket, see GetBucketLogging. +// +// The following operations are related to PutBucketLogging: +// +// * PutObject +// +// * DeleteBucket +// +// * CreateBucket +// +// * GetBucketLogging +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation PutBucketLogging for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLogging +func (c *S3) PutBucketLogging(input *PutBucketLoggingInput) (*PutBucketLoggingOutput, error) { + req, out := c.PutBucketLoggingRequest(input) + return out, req.Send() +} + +// PutBucketLoggingWithContext is the same as PutBucketLogging with the addition of +// the ability to pass a context and additional request options. +// +// See PutBucketLogging for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) PutBucketLoggingWithContext(ctx aws.Context, input *PutBucketLoggingInput, opts ...request.Option) (*PutBucketLoggingOutput, error) { + req, out := c.PutBucketLoggingRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPutBucketMetricsConfiguration = "PutBucketMetricsConfiguration" + +// PutBucketMetricsConfigurationRequest generates a "aws/request.Request" representing the +// client's request for the PutBucketMetricsConfiguration operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutBucketMetricsConfiguration for more information on using the PutBucketMetricsConfiguration +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutBucketMetricsConfigurationRequest method. +// req, resp := client.PutBucketMetricsConfigurationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketMetricsConfiguration +func (c *S3) PutBucketMetricsConfigurationRequest(input *PutBucketMetricsConfigurationInput) (req *request.Request, output *PutBucketMetricsConfigurationOutput) { + op := &request.Operation{ + Name: opPutBucketMetricsConfiguration, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}?metrics", + } + + if input == nil { + input = &PutBucketMetricsConfigurationInput{} + } + + output = &PutBucketMetricsConfigurationOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// PutBucketMetricsConfiguration API operation for Amazon Simple Storage Service. +// +// Sets a metrics configuration (specified by the metrics configuration ID) +// for the bucket. You can have up to 1,000 metrics configurations per bucket. +// If you're updating an existing metrics configuration, note that this is a +// full replacement of the existing metrics configuration. If you don't include +// the elements you want to keep, they are erased. +// +// To use this operation, you must have permissions to perform the s3:PutMetricsConfiguration +// action. The bucket owner has this permission by default. The bucket owner +// can grant this permission to others. For more information about permissions, +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// +// For information about CloudWatch request metrics for Amazon S3, see Monitoring +// Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html). +// +// The following operations are related to PutBucketMetricsConfiguration: +// +// * DeleteBucketMetricsConfiguration +// +// * PutBucketMetricsConfiguration +// +// * ListBucketMetricsConfigurations +// +// GetBucketLifecycle has the following special error: +// +// * Error code: TooManyConfigurations Description:You are attempting to +// create a new configuration but have already reached the 1,000-configuration +// limit. HTTP Status Code: HTTP 400 Bad Request +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation PutBucketMetricsConfiguration for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketMetricsConfiguration +func (c *S3) PutBucketMetricsConfiguration(input *PutBucketMetricsConfigurationInput) (*PutBucketMetricsConfigurationOutput, error) { + req, out := c.PutBucketMetricsConfigurationRequest(input) + return out, req.Send() +} + +// PutBucketMetricsConfigurationWithContext is the same as PutBucketMetricsConfiguration with the addition of +// the ability to pass a context and additional request options. +// +// See PutBucketMetricsConfiguration for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) PutBucketMetricsConfigurationWithContext(ctx aws.Context, input *PutBucketMetricsConfigurationInput, opts ...request.Option) (*PutBucketMetricsConfigurationOutput, error) { + req, out := c.PutBucketMetricsConfigurationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPutBucketNotification = "PutBucketNotification" + +// PutBucketNotificationRequest generates a "aws/request.Request" representing the +// client's request for the PutBucketNotification operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutBucketNotification for more information on using the PutBucketNotification +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutBucketNotificationRequest method. +// req, resp := client.PutBucketNotificationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotification +// +// Deprecated: PutBucketNotification has been deprecated +func (c *S3) PutBucketNotificationRequest(input *PutBucketNotificationInput) (req *request.Request, output *PutBucketNotificationOutput) { + if c.Client.Config.Logger != nil { + c.Client.Config.Logger.Log("This operation, PutBucketNotification, has been deprecated") + } + op := &request.Operation{ + Name: opPutBucketNotification, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}?notification", + } + + if input == nil { + input = &PutBucketNotificationInput{} + } + + output = &PutBucketNotificationOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// PutBucketNotification API operation for Amazon Simple Storage Service. +// +// No longer used, see the PutBucketNotificationConfiguration operation. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation PutBucketNotification for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotification +// +// Deprecated: PutBucketNotification has been deprecated +func (c *S3) PutBucketNotification(input *PutBucketNotificationInput) (*PutBucketNotificationOutput, error) { + req, out := c.PutBucketNotificationRequest(input) + return out, req.Send() +} + +// PutBucketNotificationWithContext is the same as PutBucketNotification with the addition of +// the ability to pass a context and additional request options. +// +// See PutBucketNotification for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +// +// Deprecated: PutBucketNotificationWithContext has been deprecated +func (c *S3) PutBucketNotificationWithContext(ctx aws.Context, input *PutBucketNotificationInput, opts ...request.Option) (*PutBucketNotificationOutput, error) { + req, out := c.PutBucketNotificationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPutBucketNotificationConfiguration = "PutBucketNotificationConfiguration" + +// PutBucketNotificationConfigurationRequest generates a "aws/request.Request" representing the +// client's request for the PutBucketNotificationConfiguration operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutBucketNotificationConfiguration for more information on using the PutBucketNotificationConfiguration +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutBucketNotificationConfigurationRequest method. +// req, resp := client.PutBucketNotificationConfigurationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotificationConfiguration +func (c *S3) PutBucketNotificationConfigurationRequest(input *PutBucketNotificationConfigurationInput) (req *request.Request, output *PutBucketNotificationConfigurationOutput) { + op := &request.Operation{ + Name: opPutBucketNotificationConfiguration, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}?notification", + } + + if input == nil { + input = &PutBucketNotificationConfigurationInput{} + } + + output = &PutBucketNotificationConfigurationOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// PutBucketNotificationConfiguration API operation for Amazon Simple Storage Service. +// +// Enables notifications of specified events for a bucket. For more information +// about event notifications, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html). +// +// Using this API, you can replace an existing notification configuration. The +// configuration is an XML file that defines the event types that you want Amazon +// S3 to publish and the destination where you want Amazon S3 to publish an +// event notification when it detects an event of the specified type. +// +// By default, your bucket has no event notifications configured. That is, the +// notification configuration will be an empty NotificationConfiguration. +// +// +// +// +// +// This operation replaces the existing notification configuration with the +// configuration you include in the request body. +// +// After Amazon S3 receives this request, it first verifies that any Amazon +// Simple Notification Service (Amazon SNS) or Amazon Simple Queue Service (Amazon +// SQS) destination exists, and that the bucket owner has permission to publish +// to it by sending a test notification. In the case of AWS Lambda destinations, +// Amazon S3 verifies that the Lambda function permissions grant Amazon S3 permission +// to invoke the function from the Amazon S3 bucket. For more information, see +// Configuring Notifications for Amazon S3 Events (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html). +// +// You can disable notifications by adding the empty NotificationConfiguration +// element. +// +// By default, only the bucket owner can configure notifications on a bucket. +// However, bucket owners can use a bucket policy to grant permission to other +// users to set this configuration with s3:PutBucketNotification permission. +// +// The PUT notification is an atomic operation. For example, suppose your notification +// configuration includes SNS topic, SQS queue, and Lambda function configurations. +// When you send a PUT request with this configuration, Amazon S3 sends test +// messages to your SNS topic. If the message fails, the entire PUT operation +// will fail, and Amazon S3 will not add the configuration to your bucket. +// +// Responses +// +// If the configuration in the request body includes only one TopicConfiguration +// specifying only the s3:ReducedRedundancyLostObject event type, the response +// will also include the x-amz-sns-test-message-id header containing the message +// ID of the test notification sent to topic. +// +// The following operations is related to PutBucketNotificationConfiguration: +// +// * GetBucketNotificationConfiguration +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation PutBucketNotificationConfiguration for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotificationConfiguration +func (c *S3) PutBucketNotificationConfiguration(input *PutBucketNotificationConfigurationInput) (*PutBucketNotificationConfigurationOutput, error) { + req, out := c.PutBucketNotificationConfigurationRequest(input) + return out, req.Send() +} + +// PutBucketNotificationConfigurationWithContext is the same as PutBucketNotificationConfiguration with the addition of +// the ability to pass a context and additional request options. +// +// See PutBucketNotificationConfiguration for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) PutBucketNotificationConfigurationWithContext(ctx aws.Context, input *PutBucketNotificationConfigurationInput, opts ...request.Option) (*PutBucketNotificationConfigurationOutput, error) { + req, out := c.PutBucketNotificationConfigurationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPutBucketPolicy = "PutBucketPolicy" + +// PutBucketPolicyRequest generates a "aws/request.Request" representing the +// client's request for the PutBucketPolicy operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutBucketPolicy for more information on using the PutBucketPolicy +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutBucketPolicyRequest method. +// req, resp := client.PutBucketPolicyRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketPolicy +func (c *S3) PutBucketPolicyRequest(input *PutBucketPolicyInput) (req *request.Request, output *PutBucketPolicyOutput) { + op := &request.Operation{ + Name: opPutBucketPolicy, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}?policy", + } + + if input == nil { + input = &PutBucketPolicyInput{} + } + + output = &PutBucketPolicyOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// PutBucketPolicy API operation for Amazon Simple Storage Service. +// +// Applies an Amazon S3 bucket policy to an Amazon S3 bucket. If you are using +// an identity other than the root user of the AWS account that owns the bucket, +// the calling identity must have the PutBucketPolicy permissions on the specified +// bucket and belong to the bucket owner's account in order to use this operation. +// +// If you don't have PutBucketPolicy permissions, Amazon S3 returns a 403 Access +// Denied error. If you have the correct permissions, but you're not using an +// identity that belongs to the bucket owner's account, Amazon S3 returns a +// 405 Method Not Allowed error. +// +// As a security precaution, the root user of the AWS account that owns a bucket +// can always use this operation, even if the policy explicitly denies the root +// user the ability to perform this action. +// +// For more information about bucket policies, see Using Bucket Policies and +// User Policies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html). +// +// The following operations are related to PutBucketPolicy: +// +// * CreateBucket +// +// * DeleteBucket +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation PutBucketPolicy for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketPolicy +func (c *S3) PutBucketPolicy(input *PutBucketPolicyInput) (*PutBucketPolicyOutput, error) { + req, out := c.PutBucketPolicyRequest(input) + return out, req.Send() +} + +// PutBucketPolicyWithContext is the same as PutBucketPolicy with the addition of +// the ability to pass a context and additional request options. +// +// See PutBucketPolicy for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) PutBucketPolicyWithContext(ctx aws.Context, input *PutBucketPolicyInput, opts ...request.Option) (*PutBucketPolicyOutput, error) { + req, out := c.PutBucketPolicyRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPutBucketReplication = "PutBucketReplication" + +// PutBucketReplicationRequest generates a "aws/request.Request" representing the +// client's request for the PutBucketReplication operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutBucketReplication for more information on using the PutBucketReplication +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutBucketReplicationRequest method. +// req, resp := client.PutBucketReplicationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketReplication +func (c *S3) PutBucketReplicationRequest(input *PutBucketReplicationInput) (req *request.Request, output *PutBucketReplicationOutput) { + op := &request.Operation{ + Name: opPutBucketReplication, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}?replication", + } + + if input == nil { + input = &PutBucketReplicationInput{} + } + + output = &PutBucketReplicationOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// PutBucketReplication API operation for Amazon Simple Storage Service. +// +// Creates a replication configuration or replaces an existing one. For more +// information, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html) +// in the Amazon S3 Developer Guide. +// +// To perform this operation, the user or role performing the operation must +// have the iam:PassRole (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) +// permission. +// +// Specify the replication configuration in the request body. In the replication +// configuration, you provide the name of the destination bucket where you want +// Amazon S3 to replicate objects, the IAM role that Amazon S3 can assume to +// replicate objects on your behalf, and other relevant information. +// +// A replication configuration must include at least one rule, and can contain +// a maximum of 1,000. Each rule identifies a subset of objects to replicate +// by filtering the objects in the source bucket. To choose additional subsets +// of objects to replicate, add a rule for each subset. All rules must specify +// the same destination bucket. +// +// To specify a subset of the objects in the source bucket to apply a replication +// rule to, add the Filter element as a child of the Rule element. You can filter +// objects based on an object key prefix, one or more object tags, or both. +// When you add the Filter element in the configuration, you must also add the +// following elements: DeleteMarkerReplication, Status, and Priority. +// +// For information about enabling versioning on a bucket, see Using Versioning +// (https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html). +// +// By default, a resource owner, in this case the AWS account that created the +// bucket, can perform this operation. The resource owner can also grant others +// permissions to perform the operation. For more information about permissions, +// see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// +// Handling Replication of Encrypted Objects +// +// By default, Amazon S3 doesn't replicate objects that are stored at rest using +// server-side encryption with CMKs stored in AWS KMS. To replicate AWS KMS-encrypted +// objects, add the following: SourceSelectionCriteria, SseKmsEncryptedObjects, +// Status, EncryptionConfiguration, and ReplicaKmsKeyID. For information about +// replication configuration, see Replicating Objects Created with SSE Using +// CMKs stored in AWS KMS (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-config-for-kms-objects.html). +// +// PutBucketReplication has the following special errors: +// +// * Error code: InvalidRequest Description: If the in +// has a value, the element must be specified. HTTP 400 +// +// * Error code: InvalidArgument Description: The element is empty. +// It must contain a valid account ID. HTTP 400 +// +// * Error code: InvalidArgument Description: The AWS account specified in +// the element must match the destination bucket owner. HTTP 400 +// +// The following operations are related to PutBucketReplication: +// +// * GetBucketReplication +// +// * DeleteBucketReplication +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation PutBucketReplication for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketReplication +func (c *S3) PutBucketReplication(input *PutBucketReplicationInput) (*PutBucketReplicationOutput, error) { + req, out := c.PutBucketReplicationRequest(input) + return out, req.Send() +} + +// PutBucketReplicationWithContext is the same as PutBucketReplication with the addition of +// the ability to pass a context and additional request options. +// +// See PutBucketReplication for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) PutBucketReplicationWithContext(ctx aws.Context, input *PutBucketReplicationInput, opts ...request.Option) (*PutBucketReplicationOutput, error) { + req, out := c.PutBucketReplicationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPutBucketRequestPayment = "PutBucketRequestPayment" + +// PutBucketRequestPaymentRequest generates a "aws/request.Request" representing the +// client's request for the PutBucketRequestPayment operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutBucketRequestPayment for more information on using the PutBucketRequestPayment +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutBucketRequestPaymentRequest method. +// req, resp := client.PutBucketRequestPaymentRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketRequestPayment +func (c *S3) PutBucketRequestPaymentRequest(input *PutBucketRequestPaymentInput) (req *request.Request, output *PutBucketRequestPaymentOutput) { + op := &request.Operation{ + Name: opPutBucketRequestPayment, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}?requestPayment", + } + + if input == nil { + input = &PutBucketRequestPaymentInput{} + } + + output = &PutBucketRequestPaymentOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// PutBucketRequestPayment API operation for Amazon Simple Storage Service. +// +// Sets the request payment configuration for a bucket. By default, the bucket +// owner pays for downloads from the bucket. This configuration parameter enables +// the bucket owner (only) to specify that the person requesting the download +// will be charged for the download. For more information, see Requester Pays +// Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html). +// +// The following operations are related to PutBucketRequestPayment: +// +// * CreateBucket +// +// * GetBucketRequestPayment +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation PutBucketRequestPayment for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketRequestPayment +func (c *S3) PutBucketRequestPayment(input *PutBucketRequestPaymentInput) (*PutBucketRequestPaymentOutput, error) { + req, out := c.PutBucketRequestPaymentRequest(input) + return out, req.Send() +} + +// PutBucketRequestPaymentWithContext is the same as PutBucketRequestPayment with the addition of +// the ability to pass a context and additional request options. +// +// See PutBucketRequestPayment for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) PutBucketRequestPaymentWithContext(ctx aws.Context, input *PutBucketRequestPaymentInput, opts ...request.Option) (*PutBucketRequestPaymentOutput, error) { + req, out := c.PutBucketRequestPaymentRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPutBucketTagging = "PutBucketTagging" + +// PutBucketTaggingRequest generates a "aws/request.Request" representing the +// client's request for the PutBucketTagging operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutBucketTagging for more information on using the PutBucketTagging +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutBucketTaggingRequest method. +// req, resp := client.PutBucketTaggingRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketTagging +func (c *S3) PutBucketTaggingRequest(input *PutBucketTaggingInput) (req *request.Request, output *PutBucketTaggingOutput) { + op := &request.Operation{ + Name: opPutBucketTagging, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}?tagging", + } + + if input == nil { + input = &PutBucketTaggingInput{} + } + + output = &PutBucketTaggingOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// PutBucketTagging API operation for Amazon Simple Storage Service. +// +// Sets the tags for a bucket. +// +// Use tags to organize your AWS bill to reflect your own cost structure. To +// do this, sign up to get your AWS account bill with tag key values included. +// Then, to see the cost of combined resources, organize your billing information +// according to resources with the same tag key values. For example, you can +// tag several resources with a specific application name, and then organize +// your billing information to see the total cost of that application across +// several services. For more information, see Cost Allocation and Tagging (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html). +// +// Within a bucket, if you add a tag that has the same key as an existing tag, +// the new value overwrites the old value. For more information, see Using Cost +// Allocation in Amazon S3 Bucket Tags (https://docs.aws.amazon.com/AmazonS3/latest/dev/CostAllocTagging.html). +// +// To use this operation, you must have permissions to perform the s3:PutBucketTagging +// action. The bucket owner has this permission by default and can grant this +// permission to others. For more information about permissions, see Permissions +// Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// +// PutBucketTagging has the following special errors: +// +// * Error code: InvalidTagError Description: The tag provided was not a +// valid tag. This error can occur if the tag did not pass input validation. +// For information about tag restrictions, see User-Defined Tag Restrictions +// (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2//allocation-tag-restrictions.html) +// and AWS-Generated Cost Allocation Tag Restrictions (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2//aws-tag-restrictions.html). +// +// * Error code: MalformedXMLError Description: The XML provided does not +// match the schema. +// +// * Error code: OperationAbortedError Description: A conflicting conditional +// operation is currently in progress against this resource. Please try again. +// +// * Error code: InternalError Description: The service was unable to apply +// the provided tag to the bucket. +// +// The following operations are related to PutBucketTagging: +// +// * GetBucketTagging +// +// * DeleteBucketTagging +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation PutBucketTagging for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketTagging +func (c *S3) PutBucketTagging(input *PutBucketTaggingInput) (*PutBucketTaggingOutput, error) { + req, out := c.PutBucketTaggingRequest(input) + return out, req.Send() +} + +// PutBucketTaggingWithContext is the same as PutBucketTagging with the addition of +// the ability to pass a context and additional request options. +// +// See PutBucketTagging for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) PutBucketTaggingWithContext(ctx aws.Context, input *PutBucketTaggingInput, opts ...request.Option) (*PutBucketTaggingOutput, error) { + req, out := c.PutBucketTaggingRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPutBucketVersioning = "PutBucketVersioning" + +// PutBucketVersioningRequest generates a "aws/request.Request" representing the +// client's request for the PutBucketVersioning operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutBucketVersioning for more information on using the PutBucketVersioning +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutBucketVersioningRequest method. +// req, resp := client.PutBucketVersioningRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketVersioning +func (c *S3) PutBucketVersioningRequest(input *PutBucketVersioningInput) (req *request.Request, output *PutBucketVersioningOutput) { + op := &request.Operation{ + Name: opPutBucketVersioning, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}?versioning", + } + + if input == nil { + input = &PutBucketVersioningInput{} + } + + output = &PutBucketVersioningOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// PutBucketVersioning API operation for Amazon Simple Storage Service. +// +// Sets the versioning state of an existing bucket. To set the versioning state, +// you must be the bucket owner. +// +// You can set the versioning state with one of the following values: +// +// Enabled—Enables versioning for the objects in the bucket. All objects added +// to the bucket receive a unique version ID. +// +// Suspended—Disables versioning for the objects in the bucket. All objects +// added to the bucket receive the version ID null. +// +// If the versioning state has never been set on a bucket, it has no versioning +// state; a GetBucketVersioning request does not return a versioning state value. +// +// If the bucket owner enables MFA Delete in the bucket versioning configuration, +// the bucket owner must include the x-amz-mfa request header and the Status +// and the MfaDelete request elements in a request to set the versioning state +// of the bucket. +// +// If you have an object expiration lifecycle policy in your non-versioned bucket +// and you want to maintain the same permanent delete behavior when you enable +// versioning, you must add a noncurrent expiration policy. The noncurrent expiration +// lifecycle policy will manage the deletes of the noncurrent object versions +// in the version-enabled bucket. (A version-enabled bucket maintains one current +// and zero or more noncurrent object versions.) For more information, see Lifecycle +// and Versioning (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-and-other-bucket-config). +// +// Related Resources +// +// * CreateBucket +// +// * DeleteBucket +// +// * GetBucketVersioning +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation PutBucketVersioning for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketVersioning +func (c *S3) PutBucketVersioning(input *PutBucketVersioningInput) (*PutBucketVersioningOutput, error) { + req, out := c.PutBucketVersioningRequest(input) + return out, req.Send() +} + +// PutBucketVersioningWithContext is the same as PutBucketVersioning with the addition of +// the ability to pass a context and additional request options. +// +// See PutBucketVersioning for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) PutBucketVersioningWithContext(ctx aws.Context, input *PutBucketVersioningInput, opts ...request.Option) (*PutBucketVersioningOutput, error) { + req, out := c.PutBucketVersioningRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPutBucketWebsite = "PutBucketWebsite" + +// PutBucketWebsiteRequest generates a "aws/request.Request" representing the +// client's request for the PutBucketWebsite operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutBucketWebsite for more information on using the PutBucketWebsite +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutBucketWebsiteRequest method. +// req, resp := client.PutBucketWebsiteRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketWebsite +func (c *S3) PutBucketWebsiteRequest(input *PutBucketWebsiteInput) (req *request.Request, output *PutBucketWebsiteOutput) { + op := &request.Operation{ + Name: opPutBucketWebsite, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}?website", + } + + if input == nil { + input = &PutBucketWebsiteInput{} + } + + output = &PutBucketWebsiteOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// PutBucketWebsite API operation for Amazon Simple Storage Service. +// +// Sets the configuration of the website that is specified in the website subresource. +// To configure a bucket as a website, you can add this subresource on the bucket +// with website configuration information such as the file name of the index +// document and any redirect rules. For more information, see Hosting Websites +// on Amazon S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html). +// +// This PUT operation requires the S3:PutBucketWebsite permission. By default, +// only the bucket owner can configure the website attached to a bucket; however, +// bucket owners can allow other users to set the website configuration by writing +// a bucket policy that grants them the S3:PutBucketWebsite permission. +// +// To redirect all website requests sent to the bucket's website endpoint, you +// add a website configuration with the following elements. Because all requests +// are sent to another website, you don't need to provide index document name +// for the bucket. +// +// * WebsiteConfiguration +// +// * RedirectAllRequestsTo +// +// * HostName +// +// * Protocol +// +// If you want granular control over redirects, you can use the following elements +// to add routing rules that describe conditions for redirecting requests and +// information about the redirect destination. In this case, the website configuration +// must provide an index document for the bucket, because some requests might +// not be redirected. +// +// * WebsiteConfiguration +// +// * IndexDocument +// +// * Suffix +// +// * ErrorDocument +// +// * Key +// +// * RoutingRules +// +// * RoutingRule +// +// * Condition +// +// * HttpErrorCodeReturnedEquals +// +// * KeyPrefixEquals +// +// * Redirect +// +// * Protocol +// +// * HostName +// +// * ReplaceKeyPrefixWith +// +// * ReplaceKeyWith +// +// * HttpRedirectCode +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation PutBucketWebsite for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketWebsite +func (c *S3) PutBucketWebsite(input *PutBucketWebsiteInput) (*PutBucketWebsiteOutput, error) { + req, out := c.PutBucketWebsiteRequest(input) + return out, req.Send() +} + +// PutBucketWebsiteWithContext is the same as PutBucketWebsite with the addition of +// the ability to pass a context and additional request options. +// +// See PutBucketWebsite for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) PutBucketWebsiteWithContext(ctx aws.Context, input *PutBucketWebsiteInput, opts ...request.Option) (*PutBucketWebsiteOutput, error) { + req, out := c.PutBucketWebsiteRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPutObject = "PutObject" + +// PutObjectRequest generates a "aws/request.Request" representing the +// client's request for the PutObject operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutObject for more information on using the PutObject +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutObjectRequest method. +// req, resp := client.PutObjectRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObject +func (c *S3) PutObjectRequest(input *PutObjectInput) (req *request.Request, output *PutObjectOutput) { + op := &request.Operation{ + Name: opPutObject, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}/{Key+}", + } + + if input == nil { + input = &PutObjectInput{} + } + + output = &PutObjectOutput{} + req = c.newRequest(op, input, output) + return +} + +// PutObject API operation for Amazon Simple Storage Service. +// +// Adds an object to a bucket. You must have WRITE permissions on a bucket to +// add an object to it. +// +// Amazon S3 never adds partial objects; if you receive a success response, +// Amazon S3 added the entire object to the bucket. +// +// Amazon S3 is a distributed system. If it receives multiple write requests +// for the same object simultaneously, it overwrites all but the last object +// written. Amazon S3 does not provide object locking; if you need this, make +// sure to build it into your application layer or use versioning instead. +// +// To ensure that data is not corrupted traversing the network, use the Content-MD5 +// header. When you use this header, Amazon S3 checks the object against the +// provided MD5 value and, if they do not match, returns an error. Additionally, +// you can calculate the MD5 while putting an object to Amazon S3 and compare +// the returned ETag to the calculated MD5 value. +// +// To configure your application to send the request headers before sending +// the request body, use the 100-continue HTTP status code. For PUT operations, +// this helps you avoid sending the message body if the message is rejected +// based on the headers (for example, because authentication fails or a redirect +// occurs). For more information on the 100-continue HTTP status code, see Section +// 8.2.3 of http://www.ietf.org/rfc/rfc2616.txt (http://www.ietf.org/rfc/rfc2616.txt). +// +// You can optionally request server-side encryption. With server-side encryption, +// Amazon S3 encrypts your data as it writes it to disks in its data centers +// and decrypts the data when you access it. You have the option to provide +// your own encryption key or use AWS-managed encryption keys. For more information, +// see Using Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html). +// +// Access Permissions +// +// You can optionally specify the accounts or groups that should be granted +// specific permissions on the new object. There are two ways to grant the permissions +// using the request headers: +// +// * Specify a canned ACL with the x-amz-acl request header. For more information, +// see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL). +// +// * Specify access permissions explicitly with the x-amz-grant-read, x-amz-grant-read-acp, +// x-amz-grant-write-acp, and x-amz-grant-full-control headers. These parameters +// map to the set of permissions that Amazon S3 supports in an ACL. For more +// information, see Access Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html). +// +// You can use either a canned ACL or specify access permissions explicitly. +// You cannot do both. +// +// Server-Side- Encryption-Specific Request Headers +// +// You can optionally tell Amazon S3 to encrypt data at rest using server-side +// encryption. Server-side encryption is for data encryption at rest. Amazon +// S3 encrypts your data as it writes it to disks in its data centers and decrypts +// it when you access it. The option you use depends on whether you want to +// use AWS-managed encryption keys or provide your own encryption key. +// +// * Use encryption keys managed Amazon S3 or customer master keys (CMKs) +// stored in AWS Key Management Service (KMS) – If you want AWS to manage +// the keys used to encrypt data, specify the following headers in the request. +// x-amz-server-side​-encryption x-amz-server-side-encryption-aws-kms-key-id +// x-amz-server-side-encryption-context If you specify x-amz-server-side-encryption:aws:kms, +// but don't provide x-amz-server-side- encryption-aws-kms-key-id, Amazon +// S3 uses the AWS managed CMK in AWS KMS to protect the data. All GET and +// PUT requests for an object protected by AWS KMS fail if you don't make +// them with SSL or by using SigV4. For more information on Server-Side Encryption +// with CMKs stored in AWS KMS (SSE-KMS), see Protecting Data Using Server-Side +// Encryption with CMKs stored in AWS (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html). +// +// * Use customer-provided encryption keys – If you want to manage your +// own encryption keys, provide all the following headers in the request. +// x-amz-server-side​-encryption​-customer-algorithm x-amz-server-side​-encryption​-customer-key +// x-amz-server-side​-encryption​-customer-key-MD5 For more information +// on Server-Side Encryption with CMKs stored in KMS (SSE-KMS), see Protecting +// Data Using Server-Side Encryption with CMKs stored in AWS KMS (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html). +// +// Access-Control-List (ACL)-Specific Request Headers +// +// You also can use the following access control–related headers with this +// operation. By default, all objects are private. Only the owner has full access +// control. When adding a new object, you can grant permissions to individual +// AWS accounts or to predefined groups defined by Amazon S3. These permissions +// are then added to the Access Control List (ACL) on the object. For more information, +// see Using ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html). +// With this operation, you can grant access permissions using one of the following +// two methods: +// +// * Specify a canned ACL (x-amz-acl) — Amazon S3 supports a set of predefined +// ACLs, known as canned ACLs. Each canned ACL has a predefined set of grantees +// and permissions. For more information, see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL). +// +// * Specify access permissions explicitly — To explicitly grant access +// permissions to specific AWS accounts or groups, use the following headers. +// Each header maps to specific permissions that Amazon S3 supports in an +// ACL. For more information, see Access Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html). +// In the header, you specify a list of grantees who get the specific permission. +// To grant permissions explicitly use: x-amz-grant-read x-amz-grant-write +// x-amz-grant-read-acp x-amz-grant-write-acp x-amz-grant-full-control You +// specify each grantee as a type=value pair, where the type is one of the +// following: emailAddress – if the value specified is the email address +// of an AWS account Using email addresses to specify a grantee is only supported +// in the following AWS Regions: US East (N. Virginia) US West (N. California) +// US West (Oregon) Asia Pacific (Singapore) Asia Pacific (Sydney) Asia Pacific +// (Tokyo) EU (Ireland) South America (São Paulo) For a list of all the +// Amazon S3 supported regions and endpoints, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) +// in the AWS General Reference id – if the value specified is the canonical +// user ID of an AWS account uri – if you are granting permissions to a +// predefined group For example, the following x-amz-grant-read header grants +// the AWS accounts identified by email addresses permissions to read object +// data and its metadata: x-amz-grant-read: emailAddress="xyz@amazon.com", +// emailAddress="abc@amazon.com" +// +// Server-Side- Encryption-Specific Request Headers +// +// You can optionally tell Amazon S3 to encrypt data at rest using server-side +// encryption. Server-side encryption is for data encryption at rest. Amazon +// S3 encrypts your data as it writes it to disks in its data centers and decrypts +// it when you access it. The option you use depends on whether you want to +// use AWS-managed encryption keys or provide your own encryption key. +// +// * Use encryption keys managed by Amazon S3 or customer master keys (CMKs) +// stored in AWS Key Management Service (KMS) – If you want AWS to manage +// the keys used to encrypt data, specify the following headers in the request. +// x-amz-server-side​-encryption x-amz-server-side-encryption-aws-kms-key-id +// x-amz-server-side-encryption-context If you specify x-amz-server-side-encryption:aws:kms, +// but don't provide x-amz-server-side- encryption-aws-kms-key-id, Amazon +// S3 uses the default AWS KMS CMK to protect the data. All GET and PUT requests +// for an object protected by AWS KMS fail if you don't make them with SSL +// or by using SigV4. For more information on Server-Side Encryption with +// CMKs stored in AWS KMS (SSE-KMS), see Protecting Data Using Server-Side +// Encryption with CMKs stored in AWS KMS (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html). +// +// * Use customer-provided encryption keys – If you want to manage your +// own encryption keys, provide all the following headers in the request. +// If you use this feature, the ETag value that Amazon S3 returns in the +// response is not the MD5 of the object. x-amz-server-side​-encryption​-customer-algorithm +// x-amz-server-side​-encryption​-customer-key x-amz-server-side​-encryption​-customer-key-MD5 +// For more information on Server-Side Encryption with CMKs stored in AWS +// KMS (SSE-KMS), see Protecting Data Using Server-Side Encryption with CMKs +// stored in AWS KMS (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html). +// +// Storage Class Options +// +// By default, Amazon S3 uses the Standard storage class to store newly created +// objects. The Standard storage class provides high durability and high availability. +// You can specify other storage classes depending on the performance needs. +// For more information, see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// Versioning +// +// If you enable versioning for a bucket, Amazon S3 automatically generates +// a unique version ID for the object being stored. Amazon S3 returns this ID +// in the response using the x-amz-version-id response header. If versioning +// is suspended, Amazon S3 always uses null as the version ID for the object +// stored. For more information about returning the versioning state of a bucket, +// see GetBucketVersioning. If you enable versioning for a bucket, when Amazon +// S3 receives multiple write requests for the same object simultaneously, it +// stores all of the objects. +// +// Related Resources +// +// * CopyObject +// +// * DeleteObject +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation PutObject for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObject +func (c *S3) PutObject(input *PutObjectInput) (*PutObjectOutput, error) { + req, out := c.PutObjectRequest(input) + return out, req.Send() +} + +// PutObjectWithContext is the same as PutObject with the addition of +// the ability to pass a context and additional request options. +// +// See PutObject for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) PutObjectWithContext(ctx aws.Context, input *PutObjectInput, opts ...request.Option) (*PutObjectOutput, error) { + req, out := c.PutObjectRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPutObjectAcl = "PutObjectAcl" + +// PutObjectAclRequest generates a "aws/request.Request" representing the +// client's request for the PutObjectAcl operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutObjectAcl for more information on using the PutObjectAcl +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutObjectAclRequest method. +// req, resp := client.PutObjectAclRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectAcl +func (c *S3) PutObjectAclRequest(input *PutObjectAclInput) (req *request.Request, output *PutObjectAclOutput) { + op := &request.Operation{ + Name: opPutObjectAcl, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}/{Key+}?acl", + } + + if input == nil { + input = &PutObjectAclInput{} + } + + output = &PutObjectAclOutput{} + req = c.newRequest(op, input, output) + return +} + +// PutObjectAcl API operation for Amazon Simple Storage Service. +// +// uses the acl subresource to set the access control list (ACL) permissions +// for an object that already exists in a bucket. You must have WRITE_ACP permission +// to set the ACL of an object. +// +// Depending on your application needs, you may choose to set the ACL on an +// object using either the request body or the headers. For example, if you +// have an existing application that updates a bucket ACL using the request +// body, then you can continue to use that approach. +// +// Access Permissions +// +// You can set access permissions using one of the following methods: +// +// * Specify a canned ACL with the x-amz-acl request header. Amazon S3 supports +// a set of predefined ACLs, known as canned ACLs. Each canned ACL has a +// predefined set of grantees and permissions. Specify the canned ACL name +// as the value of x-amz-acl. If you use this header, you cannot use other +// access control specific headers in your request. For more information, +// see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL). +// +// * Specify access permissions explicitly with the x-amz-grant-read, x-amz-grant-read-acp, +// x-amz-grant-write-acp, and x-amz-grant-full-control headers. When using +// these headers you specify explicit access permissions and grantees (AWS +// accounts or a Amazon S3 groups) who will receive the permission. If you +// use these ACL specific headers, you cannot use x-amz-acl header to set +// a canned ACL. These parameters map to the set of permissions that Amazon +// S3 supports in an ACL. For more information, see Access Control List (ACL) +// Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html). +// You specify each grantee as a type=value pair, where the type is one of +// the following: emailAddress – if the value specified is the email address +// of an AWS account id – if the value specified is the canonical user +// ID of an AWS account uri – if you are granting permissions to a predefined +// group For example, the following x-amz-grant-read header grants list objects +// permission to the two AWS accounts identified by their email addresses. +// x-amz-grant-read: emailAddress="xyz@amazon.com", emailAddress="abc@amazon.com" +// +// You can use either a canned ACL or specify access permissions explicitly. +// You cannot do both. +// +// Grantee Values +// +// You can specify the person (grantee) to whom you're assigning access rights +// (using request elements) in the following ways: +// +// * By Email address: <>Grantees@email.com<>lt;/Grantee> +// The grantee is resolved to the CanonicalUser and, in a response to a GET +// Object acl request, appears as the CanonicalUser. +// +// * By the person's ID: <>ID<><>GranteesEmail<> +// DisplayName is optional and ignored in the request +// +// * By URI: <>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<> +// +// Versioning +// +// The ACL of an object is set at the object version level. By default, PUT +// sets the ACL of the current version of an object. To set the ACL of a different +// version, use the versionId subresource. +// +// Related Resources +// +// * CopyObject +// +// * GetObject +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation PutObjectAcl for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchKey "NoSuchKey" +// The specified key does not exist. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectAcl +func (c *S3) PutObjectAcl(input *PutObjectAclInput) (*PutObjectAclOutput, error) { + req, out := c.PutObjectAclRequest(input) + return out, req.Send() +} + +// PutObjectAclWithContext is the same as PutObjectAcl with the addition of +// the ability to pass a context and additional request options. +// +// See PutObjectAcl for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) PutObjectAclWithContext(ctx aws.Context, input *PutObjectAclInput, opts ...request.Option) (*PutObjectAclOutput, error) { + req, out := c.PutObjectAclRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPutObjectLegalHold = "PutObjectLegalHold" + +// PutObjectLegalHoldRequest generates a "aws/request.Request" representing the +// client's request for the PutObjectLegalHold operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutObjectLegalHold for more information on using the PutObjectLegalHold +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutObjectLegalHoldRequest method. +// req, resp := client.PutObjectLegalHoldRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLegalHold +func (c *S3) PutObjectLegalHoldRequest(input *PutObjectLegalHoldInput) (req *request.Request, output *PutObjectLegalHoldOutput) { + op := &request.Operation{ + Name: opPutObjectLegalHold, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}/{Key+}?legal-hold", + } + + if input == nil { + input = &PutObjectLegalHoldInput{} + } + + output = &PutObjectLegalHoldOutput{} + req = c.newRequest(op, input, output) + return +} + +// PutObjectLegalHold API operation for Amazon Simple Storage Service. +// +// Applies a Legal Hold configuration to the specified object. +// +// Related Resources +// +// * Locking Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html) +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation PutObjectLegalHold for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLegalHold +func (c *S3) PutObjectLegalHold(input *PutObjectLegalHoldInput) (*PutObjectLegalHoldOutput, error) { + req, out := c.PutObjectLegalHoldRequest(input) + return out, req.Send() +} + +// PutObjectLegalHoldWithContext is the same as PutObjectLegalHold with the addition of +// the ability to pass a context and additional request options. +// +// See PutObjectLegalHold for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) PutObjectLegalHoldWithContext(ctx aws.Context, input *PutObjectLegalHoldInput, opts ...request.Option) (*PutObjectLegalHoldOutput, error) { + req, out := c.PutObjectLegalHoldRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPutObjectLockConfiguration = "PutObjectLockConfiguration" + +// PutObjectLockConfigurationRequest generates a "aws/request.Request" representing the +// client's request for the PutObjectLockConfiguration operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutObjectLockConfiguration for more information on using the PutObjectLockConfiguration +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutObjectLockConfigurationRequest method. +// req, resp := client.PutObjectLockConfigurationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLockConfiguration +func (c *S3) PutObjectLockConfigurationRequest(input *PutObjectLockConfigurationInput) (req *request.Request, output *PutObjectLockConfigurationOutput) { + op := &request.Operation{ + Name: opPutObjectLockConfiguration, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}?object-lock", + } + + if input == nil { + input = &PutObjectLockConfigurationInput{} + } + + output = &PutObjectLockConfigurationOutput{} + req = c.newRequest(op, input, output) + return +} + +// PutObjectLockConfiguration API operation for Amazon Simple Storage Service. +// +// Places an Object Lock configuration on the specified bucket. The rule specified +// in the Object Lock configuration will be applied by default to every new +// object placed in the specified bucket. +// +// DefaultRetention requires either Days or Years. You can't specify both at +// the same time. +// +// Related Resources +// +// * Locking Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html) +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation PutObjectLockConfiguration for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLockConfiguration +func (c *S3) PutObjectLockConfiguration(input *PutObjectLockConfigurationInput) (*PutObjectLockConfigurationOutput, error) { + req, out := c.PutObjectLockConfigurationRequest(input) + return out, req.Send() +} + +// PutObjectLockConfigurationWithContext is the same as PutObjectLockConfiguration with the addition of +// the ability to pass a context and additional request options. +// +// See PutObjectLockConfiguration for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) PutObjectLockConfigurationWithContext(ctx aws.Context, input *PutObjectLockConfigurationInput, opts ...request.Option) (*PutObjectLockConfigurationOutput, error) { + req, out := c.PutObjectLockConfigurationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPutObjectRetention = "PutObjectRetention" + +// PutObjectRetentionRequest generates a "aws/request.Request" representing the +// client's request for the PutObjectRetention operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutObjectRetention for more information on using the PutObjectRetention +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutObjectRetentionRequest method. +// req, resp := client.PutObjectRetentionRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectRetention +func (c *S3) PutObjectRetentionRequest(input *PutObjectRetentionInput) (req *request.Request, output *PutObjectRetentionOutput) { + op := &request.Operation{ + Name: opPutObjectRetention, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}/{Key+}?retention", + } + + if input == nil { + input = &PutObjectRetentionInput{} + } + + output = &PutObjectRetentionOutput{} + req = c.newRequest(op, input, output) + return +} + +// PutObjectRetention API operation for Amazon Simple Storage Service. +// +// Places an Object Retention configuration on an object. +// +// Related Resources +// +// * Locking Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html) +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation PutObjectRetention for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectRetention +func (c *S3) PutObjectRetention(input *PutObjectRetentionInput) (*PutObjectRetentionOutput, error) { + req, out := c.PutObjectRetentionRequest(input) + return out, req.Send() +} + +// PutObjectRetentionWithContext is the same as PutObjectRetention with the addition of +// the ability to pass a context and additional request options. +// +// See PutObjectRetention for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) PutObjectRetentionWithContext(ctx aws.Context, input *PutObjectRetentionInput, opts ...request.Option) (*PutObjectRetentionOutput, error) { + req, out := c.PutObjectRetentionRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPutObjectTagging = "PutObjectTagging" + +// PutObjectTaggingRequest generates a "aws/request.Request" representing the +// client's request for the PutObjectTagging operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutObjectTagging for more information on using the PutObjectTagging +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutObjectTaggingRequest method. +// req, resp := client.PutObjectTaggingRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectTagging +func (c *S3) PutObjectTaggingRequest(input *PutObjectTaggingInput) (req *request.Request, output *PutObjectTaggingOutput) { + op := &request.Operation{ + Name: opPutObjectTagging, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}/{Key+}?tagging", + } + + if input == nil { + input = &PutObjectTaggingInput{} + } + + output = &PutObjectTaggingOutput{} + req = c.newRequest(op, input, output) + return +} + +// PutObjectTagging API operation for Amazon Simple Storage Service. +// +// Sets the supplied tag-set to an object that already exists in a bucket +// +// A tag is a key-value pair. You can associate tags with an object by sending +// a PUT request against the tagging subresource that is associated with the +// object. You can retrieve tags by sending a GET request. For more information, +// see GetObjectTagging. +// +// For tagging-related restrictions related to characters and encodings, see +// Tag Restrictions (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html). +// Note that Amazon S3 limits the maximum number of tags to 10 tags per object. +// +// To use this operation, you must have permission to perform the s3:PutObjectTagging +// action. By default, the bucket owner has this permission and can grant this +// permission to others. +// +// To put tags of any other version, use the versionId query parameter. You +// also need permission for the s3:PutObjectVersionTagging action. +// +// For information about the Amazon S3 object tagging feature, see Object Tagging +// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html). +// +// Special Errors +// +// * Code: InvalidTagError Cause: The tag provided was not a valid tag. This +// error can occur if the tag did not pass input validation. For more information, +// see Object Tagging (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html). +// +// * Code: MalformedXMLError Cause: The XML provided does not match the schema. +// +// * Code: OperationAbortedError Cause: A conflicting conditional operation +// is currently in progress against this resource. Please try again. +// +// * Code: InternalError Cause: The service was unable to apply the provided +// tag to the object. +// +// Related Resources +// +// * GetObjectTagging +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation PutObjectTagging for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectTagging +func (c *S3) PutObjectTagging(input *PutObjectTaggingInput) (*PutObjectTaggingOutput, error) { + req, out := c.PutObjectTaggingRequest(input) + return out, req.Send() +} + +// PutObjectTaggingWithContext is the same as PutObjectTagging with the addition of +// the ability to pass a context and additional request options. +// +// See PutObjectTagging for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) PutObjectTaggingWithContext(ctx aws.Context, input *PutObjectTaggingInput, opts ...request.Option) (*PutObjectTaggingOutput, error) { + req, out := c.PutObjectTaggingRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opPutPublicAccessBlock = "PutPublicAccessBlock" + +// PutPublicAccessBlockRequest generates a "aws/request.Request" representing the +// client's request for the PutPublicAccessBlock operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See PutPublicAccessBlock for more information on using the PutPublicAccessBlock +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the PutPublicAccessBlockRequest method. +// req, resp := client.PutPublicAccessBlockRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutPublicAccessBlock +func (c *S3) PutPublicAccessBlockRequest(input *PutPublicAccessBlockInput) (req *request.Request, output *PutPublicAccessBlockOutput) { + op := &request.Operation{ + Name: opPutPublicAccessBlock, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}?publicAccessBlock", + } + + if input == nil { + input = &PutPublicAccessBlockInput{} + } + + output = &PutPublicAccessBlockOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// PutPublicAccessBlock API operation for Amazon Simple Storage Service. +// +// Creates or modifies the PublicAccessBlock configuration for an Amazon S3 +// bucket. In order to use this operation, you must have the s3:PutBucketPublicAccessBlock +// permission. For more information about Amazon S3 permissions, see Specifying +// Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html). +// +// When Amazon S3 evaluates the PublicAccessBlock configuration for a bucket +// or an object, it checks the PublicAccessBlock configuration for both the +// bucket (or the bucket that contains the object) and the bucket owner's account. +// If the PublicAccessBlock configurations are different between the bucket +// and the account, Amazon S3 uses the most restrictive combination of the bucket-level +// and account-level settings. +// +// For more information about when Amazon S3 considers a bucket or an object +// public, see The Meaning of "Public" (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status). +// +// Related Resources +// +// * GetPublicAccessBlock +// +// * DeletePublicAccessBlock +// +// * GetBucketPolicyStatus +// +// * Using Amazon S3 Block Public Access (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html) +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation PutPublicAccessBlock for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutPublicAccessBlock +func (c *S3) PutPublicAccessBlock(input *PutPublicAccessBlockInput) (*PutPublicAccessBlockOutput, error) { + req, out := c.PutPublicAccessBlockRequest(input) + return out, req.Send() +} + +// PutPublicAccessBlockWithContext is the same as PutPublicAccessBlock with the addition of +// the ability to pass a context and additional request options. +// +// See PutPublicAccessBlock for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) PutPublicAccessBlockWithContext(ctx aws.Context, input *PutPublicAccessBlockInput, opts ...request.Option) (*PutPublicAccessBlockOutput, error) { + req, out := c.PutPublicAccessBlockRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opRestoreObject = "RestoreObject" + +// RestoreObjectRequest generates a "aws/request.Request" representing the +// client's request for the RestoreObject operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See RestoreObject for more information on using the RestoreObject +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the RestoreObjectRequest method. +// req, resp := client.RestoreObjectRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RestoreObject +func (c *S3) RestoreObjectRequest(input *RestoreObjectInput) (req *request.Request, output *RestoreObjectOutput) { + op := &request.Operation{ + Name: opRestoreObject, + HTTPMethod: "POST", + HTTPPath: "/{Bucket}/{Key+}?restore", + } + + if input == nil { + input = &RestoreObjectInput{} + } + + output = &RestoreObjectOutput{} + req = c.newRequest(op, input, output) + return +} + +// RestoreObject API operation for Amazon Simple Storage Service. +// +// Restores an archived copy of an object back into Amazon S3 +// +// This operation performs the following types of requests: +// +// * select - Perform a select query on an archived object +// +// * restore an archive - Restore an archived object +// +// To use this operation, you must have permissions to perform the s3:RestoreObject +// and s3:GetObject actions. The bucket owner has this permission by default +// and can grant this permission to others. For more information about permissions, +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// Querying Archives with Select Requests +// +// You use a select type of request to perform SQL queries on archived objects. +// The archived objects that are being queried by the select request must be +// formatted as uncompressed comma-separated values (CSV) files. You can run +// queries and custom analytics on your archived data without having to restore +// your data to a hotter Amazon S3 tier. For an overview about select requests, +// see Querying Archived Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// When making a select request, do the following: +// +// * Define an output location for the select query's output. This must be +// an Amazon S3 bucket in the same AWS Region as the bucket that contains +// the archive object that is being queried. The AWS account that initiates +// the job must have permissions to write to the S3 bucket. You can specify +// the storage class and encryption for the output objects stored in the +// bucket. For more information about output, see Querying Archived Objects +// (https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html) +// in the Amazon Simple Storage Service Developer Guide. For more information +// about the S3 structure in the request body, see the following: PutObject +// Managing Access with ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html) +// in the Amazon Simple Storage Service Developer Guide Protecting Data Using +// Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html) +// in the Amazon Simple Storage Service Developer Guide +// +// * Define the SQL expression for the SELECT type of restoration for your +// query in the request body's SelectParameters structure. You can use expressions +// like the following examples. The following expression returns all records +// from the specified object. SELECT * FROM Object Assuming that you are +// not using any headers for data stored in the object, you can specify columns +// with positional headers. SELECT s._1, s._2 FROM Object s WHERE s._3 > +// 100 If you have headers and you set the fileHeaderInfo in the CSV structure +// in the request body to USE, you can specify headers in the query. (If +// you set the fileHeaderInfo field to IGNORE, the first row is skipped for +// the query.) You cannot mix ordinal positions with header column names. +// SELECT s.Id, s.FirstName, s.SSN FROM S3Object s +// +// For more information about using SQL with Glacier Select restore, see SQL +// Reference for Amazon S3 Select and Glacier Select (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// When making a select request, you can also do the following: +// +// * To expedite your queries, specify the Expedited tier. For more information +// about tiers, see "Restoring Archives," later in this topic. +// +// * Specify details about the data serialization format of both the input +// object that is being queried and the serialization of the CSV-encoded +// query results. +// +// The following are additional important facts about the select feature: +// +// * The output results are new Amazon S3 objects. Unlike archive retrievals, +// they are stored until explicitly deleted-manually or through a lifecycle +// policy. +// +// * You can issue more than one select request on the same Amazon S3 object. +// Amazon S3 doesn't deduplicate requests, so avoid issuing duplicate requests. +// +// * Amazon S3 accepts a select request even if the object has already been +// restored. A select request doesn’t return error response 409. +// +// Restoring Archives +// +// Objects in the GLACIER and DEEP_ARCHIVE storage classes are archived. To +// access an archived object, you must first initiate a restore request. This +// restores a temporary copy of the archived object. In a restore request, you +// specify the number of days that you want the restored copy to exist. After +// the specified period, Amazon S3 deletes the temporary copy but the object +// remains archived in the GLACIER or DEEP_ARCHIVE storage class that object +// was restored from. +// +// To restore a specific object version, you can provide a version ID. If you +// don't provide a version ID, Amazon S3 restores the current version. +// +// The time it takes restore jobs to finish depends on which storage class the +// object is being restored from and which data access tier you specify. +// +// When restoring an archived object (or using a select request), you can specify +// one of the following data access tier options in the Tier element of the +// request body: +// +// * Expedited - Expedited retrievals allow you to quickly access your data +// stored in the GLACIER storage class when occasional urgent requests for +// a subset of archives are required. For all but the largest archived objects +// (250 MB+), data accessed using Expedited retrievals are typically made +// available within 1–5 minutes. Provisioned capacity ensures that retrieval +// capacity for Expedited retrievals is available when you need it. Expedited +// retrievals and provisioned capacity are not available for the DEEP_ARCHIVE +// storage class. +// +// * Standard - Standard retrievals allow you to access any of your archived +// objects within several hours. This is the default option for the GLACIER +// and DEEP_ARCHIVE retrieval requests that do not specify the retrieval +// option. Standard retrievals typically complete within 3-5 hours from the +// GLACIER storage class and typically complete within 12 hours from the +// DEEP_ARCHIVE storage class. +// +// * Bulk - Bulk retrievals are Amazon Glacier’s lowest-cost retrieval +// option, enabling you to retrieve large amounts, even petabytes, of data +// inexpensively in a day. Bulk retrievals typically complete within 5-12 +// hours from the GLACIER storage class and typically complete within 48 +// hours from the DEEP_ARCHIVE storage class. +// +// For more information about archive retrieval options and provisioned capacity +// for Expedited data access, see Restoring Archived Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// You can use Amazon S3 restore speed upgrade to change the restore speed to +// a faster speed while it is in progress. You upgrade the speed of an in-progress +// restoration by issuing another restore request to the same object, setting +// a new Tier request element. When issuing a request to upgrade the restore +// tier, you must choose a tier that is faster than the tier that the in-progress +// restore is using. You must not change any other parameters, such as the Days +// request element. For more information, see Upgrading the Speed of an In-Progress +// Restore (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html#restoring-objects-upgrade-tier.title.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// To get the status of object restoration, you can send a HEAD request. Operations +// return the x-amz-restore header, which provides information about the restoration +// status, in the response. You can use Amazon S3 event notifications to notify +// you when a restore is initiated or completed. For more information, see Configuring +// Amazon S3 Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// After restoring an archived object, you can update the restoration period +// by reissuing the request with a new period. Amazon S3 updates the restoration +// period relative to the current time and charges only for the request-there +// are no data transfer charges. You cannot update the restoration period when +// Amazon S3 is actively processing your current restore request for the object. +// +// If your bucket has a lifecycle configuration with a rule that includes an +// expiration action, the object expiration overrides the life span that you +// specify in a restore request. For example, if you restore an object copy +// for 10 days, but the object is scheduled to expire in 3 days, Amazon S3 deletes +// the object in 3 days. For more information about lifecycle configuration, +// see PutBucketLifecycleConfiguration and Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html) +// in Amazon Simple Storage Service Developer Guide. +// +// Responses +// +// A successful operation returns either the 200 OK or 202 Accepted status code. +// +// * If the object copy is not previously restored, then Amazon S3 returns +// 202 Accepted in the response. +// +// * If the object copy is previously restored, Amazon S3 returns 200 OK +// in the response. +// +// Special Errors +// +// * Code: RestoreAlreadyInProgress Cause: Object restore is already in progress. +// (This error does not apply to SELECT type requests.) HTTP Status Code: +// 409 Conflict SOAP Fault Code Prefix: Client +// +// * Code: GlacierExpeditedRetrievalNotAvailable Cause: Glacier expedited +// retrievals are currently not available. Try again later. (Returned if +// there is insufficient capacity to process the Expedited request. This +// error applies only to Expedited retrievals and not to Standard or Bulk +// retrievals.) HTTP Status Code: 503 SOAP Fault Code Prefix: N/A +// +// Related Resources +// +// * PutBucketLifecycleConfiguration +// +// * GetBucketNotificationConfiguration +// +// * SQL Reference for Amazon S3 Select and Glacier Select (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html) +// in the Amazon Simple Storage Service Developer Guide +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation RestoreObject for usage and error information. +// +// Returned Error Codes: +// * ErrCodeObjectAlreadyInActiveTierError "ObjectAlreadyInActiveTierError" +// This operation is not allowed against this storage tier +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RestoreObject +func (c *S3) RestoreObject(input *RestoreObjectInput) (*RestoreObjectOutput, error) { + req, out := c.RestoreObjectRequest(input) + return out, req.Send() +} + +// RestoreObjectWithContext is the same as RestoreObject with the addition of +// the ability to pass a context and additional request options. +// +// See RestoreObject for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) RestoreObjectWithContext(ctx aws.Context, input *RestoreObjectInput, opts ...request.Option) (*RestoreObjectOutput, error) { + req, out := c.RestoreObjectRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opSelectObjectContent = "SelectObjectContent" + +// SelectObjectContentRequest generates a "aws/request.Request" representing the +// client's request for the SelectObjectContent operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See SelectObjectContent for more information on using the SelectObjectContent +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the SelectObjectContentRequest method. +// req, resp := client.SelectObjectContentRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SelectObjectContent +func (c *S3) SelectObjectContentRequest(input *SelectObjectContentInput) (req *request.Request, output *SelectObjectContentOutput) { + op := &request.Operation{ + Name: opSelectObjectContent, + HTTPMethod: "POST", + HTTPPath: "/{Bucket}/{Key+}?select&select-type=2", + } + + if input == nil { + input = &SelectObjectContentInput{} + } + + output = &SelectObjectContentOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Send.Swap(client.LogHTTPResponseHandler.Name, client.LogHTTPResponseHeaderHandler) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, rest.UnmarshalHandler) + req.Handlers.Unmarshal.PushBack(output.runEventStreamLoop) + return +} + +// SelectObjectContent API operation for Amazon Simple Storage Service. +// +// This operation filters the contents of an Amazon S3 object based on a simple +// structured query language (SQL) statement. In the request, along with the +// SQL expression, you must also specify a data serialization format (JSON, +// CSV, or Apache Parquet) of the object. Amazon S3 uses this format to parse +// object data into records, and returns only records that match the specified +// SQL expression. You must also specify the data serialization format for the +// response. +// +// For more information about Amazon S3 Select, see Selecting Content from Objects +// (https://docs.aws.amazon.com/AmazonS3/latest/dev/selecting-content-from-objects.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// For more information about using SQL with Amazon S3 Select, see SQL Reference +// for Amazon S3 Select and Glacier Select (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// Permissions +// +// You must have s3:GetObject permission for this operation. Amazon S3 Select +// does not support anonymous access. For more information about permissions, +// see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// Object Data Formats +// +// You can use Amazon S3 Select to query objects that have the following format +// properties: +// +// * CSV, JSON, and Parquet - Objects must be in CSV, JSON, or Parquet format. +// +// * UTF-8 - UTF-8 is the only encoding type Amazon S3 Select supports. +// +// * GZIP or BZIP2 - CSV and JSON files can be compressed using GZIP or BZIP2. +// GZIP and BZIP2 are the only compression formats that Amazon S3 Select +// supports for CSV and JSON files. Amazon S3 Select supports columnar compression +// for Parquet using GZIP or Snappy. Amazon S3 Select does not support whole-object +// compression for Parquet objects. +// +// * Server-side encryption - Amazon S3 Select supports querying objects +// that are protected with server-side encryption. For objects that are encrypted +// with customer-provided encryption keys (SSE-C), you must use HTTPS, and +// you must use the headers that are documented in the GetObject. For more +// information about SSE-C, see Server-Side Encryption (Using Customer-Provided +// Encryption Keys) (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html) +// in the Amazon Simple Storage Service Developer Guide. For objects that +// are encrypted with Amazon S3 managed encryption keys (SSE-S3) and customer +// master keys (CMKs) stored in AWS Key Management Service (SSE-KMS), server-side +// encryption is handled transparently, so you don't need to specify anything. +// For more information about server-side encryption, including SSE-S3 and +// SSE-KMS, see Protecting Data Using Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// Working with the Response Body +// +// Given the response size is unknown, Amazon S3 Select streams the response +// as a series of messages and includes a Transfer-Encoding header with chunked +// as its value in the response. For more information, see RESTSelectObjectAppendix . +// +// GetObject Support +// +// The SelectObjectContent operation does not support the following GetObject +// functionality. For more information, see GetObject. +// +// * Range: While you can specify a scan range for a Amazon S3 Select request, +// see SelectObjectContentRequest$ScanRange in the request parameters below, +// you cannot specify the range of bytes of an object to return. +// +// * GLACIER, DEEP_ARCHIVE and REDUCED_REDUNDANCY storage classes: You cannot +// specify the GLACIER, DEEP_ARCHIVE, or REDUCED_REDUNDANCY storage classes. +// For more information, about storage classes see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#storage-class-intro) +// in the Amazon Simple Storage Service Developer Guide. +// +// Special Errors +// +// For a list of special errors for this operation and for general information +// about Amazon S3 errors and a list of error codes, see ErrorResponses +// +// Related Resources +// +// * GetObject +// +// * GetBucketLifecycleConfiguration +// +// * PutBucketLifecycleConfiguration +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation SelectObjectContent for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SelectObjectContent +func (c *S3) SelectObjectContent(input *SelectObjectContentInput) (*SelectObjectContentOutput, error) { + req, out := c.SelectObjectContentRequest(input) + return out, req.Send() +} + +// SelectObjectContentWithContext is the same as SelectObjectContent with the addition of +// the ability to pass a context and additional request options. +// +// See SelectObjectContent for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) SelectObjectContentWithContext(ctx aws.Context, input *SelectObjectContentInput, opts ...request.Option) (*SelectObjectContentOutput, error) { + req, out := c.SelectObjectContentRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opUploadPart = "UploadPart" + +// UploadPartRequest generates a "aws/request.Request" representing the +// client's request for the UploadPart operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See UploadPart for more information on using the UploadPart +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the UploadPartRequest method. +// req, resp := client.UploadPartRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPart +func (c *S3) UploadPartRequest(input *UploadPartInput) (req *request.Request, output *UploadPartOutput) { + op := &request.Operation{ + Name: opUploadPart, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}/{Key+}", + } + + if input == nil { + input = &UploadPartInput{} + } + + output = &UploadPartOutput{} + req = c.newRequest(op, input, output) + return +} + +// UploadPart API operation for Amazon Simple Storage Service. +// +// Uploads a part in a multipart upload. +// +// In this operation, you provide part data in your request. However, you have +// an option to specify your existing Amazon S3 object as a data source for +// the part you are uploading. To upload a part from an existing object, you +// use the UploadPartCopy operation. +// +// You must initiate a multipart upload (see CreateMultipartUpload) before you +// can upload any part. In response to your initiate request, Amazon S3 returns +// an upload ID, a unique identifier, that you must include in your upload part +// request. +// +// Part numbers can be any number from 1 to 10,000, inclusive. A part number +// uniquely identifies a part and also defines its position within the object +// being created. If you upload a new part using the same part number that was +// used with a previous part, the previously uploaded part is overwritten. Each +// part must be at least 5 MB in size, except the last part. There is no size +// limit on the last part of your multipart upload. +// +// To ensure that data is not corrupted when traversing the network, specify +// the Content-MD5 header in the upload part request. Amazon S3 checks the part +// data against the provided MD5 value. If they do not match, Amazon S3 returns +// an error. +// +// Note: After you initiate multipart upload and upload one or more parts, you +// must either complete or abort multipart upload in order to stop getting charged +// for storage of the uploaded parts. Only after you either complete or abort +// multipart upload, Amazon S3 frees up the parts storage and stops charging +// you for the parts storage. +// +// For more information on multipart uploads, go to Multipart Upload Overview +// (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html) in the +// Amazon Simple Storage Service Developer Guide . +// +// For information on the permissions required to use the multipart upload API, +// go to Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// You can optionally request server-side encryption where Amazon S3 encrypts +// your data as it writes it to disks in its data centers and decrypts it for +// you when you access it. You have the option of providing your own encryption +// key, or you can use the AWS-managed encryption keys. If you choose to provide +// your own encryption key, the request headers you provide in the request must +// match the headers you used in the request to initiate the upload by using +// CreateMultipartUpload. For more information, go to Using Server-Side Encryption +// (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// Server-side encryption is supported by the S3 Multipart Upload actions. Unless +// you are using a customer-provided encryption key, you don't need to specify +// the encryption parameters in each UploadPart request. Instead, you only need +// to specify the server side encryption parameters in the initial Initiate +// Multipart request. For more information, see CreateMultipartUpload. +// +// If you requested server-side encryption using a customer-provided encryption +// key in your initiate multipart upload request, you must provide identical +// encryption information in each part upload using the following headers. +// +// * x-amz-server-side​-encryption​-customer-algorithm +// +// * x-amz-server-side​-encryption​-customer-key +// +// * x-amz-server-side​-encryption​-customer-key-MD5 +// +// Special Errors +// +// * Code: NoSuchUpload Cause: The specified multipart upload does not exist. +// The upload ID might be invalid, or the multipart upload might have been +// aborted or completed. HTTP Status Code: 404 Not Found SOAP Fault Code +// Prefix: Client +// +// Related Resources +// +// * CreateMultipartUpload +// +// * CompleteMultipartUpload +// +// * AbortMultipartUpload +// +// * ListParts +// +// * ListMultipartUploads +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation UploadPart for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPart +func (c *S3) UploadPart(input *UploadPartInput) (*UploadPartOutput, error) { + req, out := c.UploadPartRequest(input) + return out, req.Send() +} + +// UploadPartWithContext is the same as UploadPart with the addition of +// the ability to pass a context and additional request options. +// +// See UploadPart for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) UploadPartWithContext(ctx aws.Context, input *UploadPartInput, opts ...request.Option) (*UploadPartOutput, error) { + req, out := c.UploadPartRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opUploadPartCopy = "UploadPartCopy" + +// UploadPartCopyRequest generates a "aws/request.Request" representing the +// client's request for the UploadPartCopy operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See UploadPartCopy for more information on using the UploadPartCopy +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the UploadPartCopyRequest method. +// req, resp := client.UploadPartCopyRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPartCopy +func (c *S3) UploadPartCopyRequest(input *UploadPartCopyInput) (req *request.Request, output *UploadPartCopyOutput) { + op := &request.Operation{ + Name: opUploadPartCopy, + HTTPMethod: "PUT", + HTTPPath: "/{Bucket}/{Key+}", + } + + if input == nil { + input = &UploadPartCopyInput{} + } + + output = &UploadPartCopyOutput{} + req = c.newRequest(op, input, output) + return +} + +// UploadPartCopy API operation for Amazon Simple Storage Service. +// +// Uploads a part by copying data from an existing object as data source. You +// specify the data source by adding the request header x-amz-copy-source in +// your request and a byte range by adding the request header x-amz-copy-source-range +// in your request. +// +// The minimum allowable part size for a multipart upload is 5 MB. For more +// information about multipart upload limits, go to Quick Facts (https://docs.aws.amazon.com/AmazonS3/latest/dev/qfacts.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// Instead of using an existing object as part data, you might use the UploadPart +// operation and provide data in your request. +// +// You must initiate a multipart upload before you can upload any part. In response +// to your initiate request. Amazon S3 returns a unique identifier, the upload +// ID, that you must include in your upload part request. +// +// For more information on using the UploadPartCopy operation, see the following +// topics: +// +// * For conceptual information on multipart uploads, go to Uploading Objects +// Using Multipart Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// * For information on permissions required to use the multipart upload +// API, go to Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// * For information about copying objects using a single atomic operation +// vs. the multipart upload, go to Operations on Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectOperations.html) +// in the Amazon Simple Storage Service Developer Guide. +// +// * For information about using server-side encryption with customer-provided +// encryption keys with the UploadPartCopy operation, see CopyObject and +// UploadPart. +// +// Note the following additional considerations about the request headers x-amz-copy-source-if-match, +// x-amz-copy-source-if-none-match x-amz-copy-source-if-unmodified-since x-amz-copy-source-if-modified-since +// +// * Consideration 1 - If both of the x-amz-copy-source-if-match and x-amz-copy-source-if-unmodified-since +// headers are present in the request as follows: x-amz-copy-source-if-match +// condition evaluates to true, and; x-amz-copy-source-if-unmodified-since +// condition evaluates to false; then, S3 returns 200 OK and copies the data. +// +// * Consideration 2 - If both of the x-amz-copy-source-if-none-match and +// x-amz-copy-source-if-modified-since headers are present in the request +// as follows: x-amz-copy-source-if-none-match condition evaluates to false, +// and; x-amz-copy-source-if-modified-since condition evaluates to true; +// then, S3 returns 412 Precondition Failed response code. +// +// Versioning +// +// If your bucket has versioning enabled, you could have multiple versions of +// the same object. By default, x-amz-copy-source identifies the current version +// of the object to copy. If the current version is a delete marker and you +// don't specify a versionId in the x-amz-copy-source, Amazon S3 returns a 404 +// error, because the object does not exist. If you specify versionId in the +// x-amz-copy-source and the versionId is a delete marker, Amazon S3 returns +// an HTTP 400 error, because you are not allowed to specify a delete marker +// as a version for the x-amz-copy-source. +// +// You can optionally specify a specific version of the source object to copy +// by adding the versionId subresource as shown in the following example: +// +// x-amz-copy-source: /bucket/object?versionId=version id +// +// Special Errors +// +// * Code: NoSuchUpload Cause: The specified multipart upload does not exist. +// The upload ID might be invalid, or the multipart upload might have been +// aborted or completed. HTTP Status Code: 404 Not Found +// +// * Code: InvalidRequest Cause: The specified copy source is not supported +// as a byte-range copy source. HTTP Status Code: 400 Bad Request +// +// Related Resources +// +// * CreateMultipartUpload +// +// * UploadPart +// +// * CompleteMultipartUpload +// +// * AbortMultipartUpload +// +// * ListParts +// +// * ListMultipartUploads +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation UploadPartCopy for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPartCopy +func (c *S3) UploadPartCopy(input *UploadPartCopyInput) (*UploadPartCopyOutput, error) { + req, out := c.UploadPartCopyRequest(input) + return out, req.Send() +} + +// UploadPartCopyWithContext is the same as UploadPartCopy with the addition of +// the ability to pass a context and additional request options. +// +// See UploadPartCopy for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) UploadPartCopyWithContext(ctx aws.Context, input *UploadPartCopyInput, opts ...request.Option) (*UploadPartCopyOutput, error) { + req, out := c.UploadPartCopyRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// Specifies the days since the initiation of an incomplete multipart upload +// that Amazon S3 will wait before permanently removing all parts of the upload. +// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket +// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config) +// in the Amazon Simple Storage Service Developer Guide. +type AbortIncompleteMultipartUpload struct { + _ struct{} `type:"structure"` + + // Specifies the number of days after which Amazon S3 aborts an incomplete multipart + // upload. + DaysAfterInitiation *int64 `type:"integer"` +} + +// String returns the string representation +func (s AbortIncompleteMultipartUpload) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AbortIncompleteMultipartUpload) GoString() string { + return s.String() +} + +// SetDaysAfterInitiation sets the DaysAfterInitiation field's value. +func (s *AbortIncompleteMultipartUpload) SetDaysAfterInitiation(v int64) *AbortIncompleteMultipartUpload { + s.DaysAfterInitiation = &v + return s +} + +type AbortMultipartUploadInput struct { + _ struct{} `locationName:"AbortMultipartUploadRequest" type:"structure"` + + // The bucket to which the upload was taking place. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Key of the object for which the multipart upload was initiated. + // + // Key is a required field + Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + + // Confirms that the requester knows that she or he will be charged for the + // request. Bucket owners need not specify this parameter in their requests. + // Documentation on downloading objects from requester pays buckets can be found + // at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` + + // Upload ID that identifies the multipart upload. + // + // UploadId is a required field + UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"` +} + +// String returns the string representation +func (s AbortMultipartUploadInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AbortMultipartUploadInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AbortMultipartUploadInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AbortMultipartUploadInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + if s.UploadId == nil { + invalidParams.Add(request.NewErrParamRequired("UploadId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *AbortMultipartUploadInput) SetBucket(v string) *AbortMultipartUploadInput { + s.Bucket = &v + return s +} + +func (s *AbortMultipartUploadInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetKey sets the Key field's value. +func (s *AbortMultipartUploadInput) SetKey(v string) *AbortMultipartUploadInput { + s.Key = &v + return s +} + +// SetRequestPayer sets the RequestPayer field's value. +func (s *AbortMultipartUploadInput) SetRequestPayer(v string) *AbortMultipartUploadInput { + s.RequestPayer = &v + return s +} + +// SetUploadId sets the UploadId field's value. +func (s *AbortMultipartUploadInput) SetUploadId(v string) *AbortMultipartUploadInput { + s.UploadId = &v + return s +} + +type AbortMultipartUploadOutput struct { + _ struct{} `type:"structure"` + + // If present, indicates that the requester was successfully charged for the + // request. + RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"` +} + +// String returns the string representation +func (s AbortMultipartUploadOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AbortMultipartUploadOutput) GoString() string { + return s.String() +} + +// SetRequestCharged sets the RequestCharged field's value. +func (s *AbortMultipartUploadOutput) SetRequestCharged(v string) *AbortMultipartUploadOutput { + s.RequestCharged = &v + return s +} + +// Configures the transfer acceleration state for an Amazon S3 bucket. For more +// information, see Amazon S3 Transfer Acceleration (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html) +// in the Amazon Simple Storage Service Developer Guide. +type AccelerateConfiguration struct { + _ struct{} `type:"structure"` + + // Specifies the transfer acceleration status of the bucket. + Status *string `type:"string" enum:"BucketAccelerateStatus"` +} + +// String returns the string representation +func (s AccelerateConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AccelerateConfiguration) GoString() string { + return s.String() +} + +// SetStatus sets the Status field's value. +func (s *AccelerateConfiguration) SetStatus(v string) *AccelerateConfiguration { + s.Status = &v + return s +} + +// Contains the elements that set the ACL permissions for an object per grantee. +type AccessControlPolicy struct { + _ struct{} `type:"structure"` + + // A list of grants. + Grants []*Grant `locationName:"AccessControlList" locationNameList:"Grant" type:"list"` + + // Container for the bucket owner's display name and ID. + Owner *Owner `type:"structure"` +} + +// String returns the string representation +func (s AccessControlPolicy) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AccessControlPolicy) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AccessControlPolicy) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AccessControlPolicy"} + if s.Grants != nil { + for i, v := range s.Grants { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Grants", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetGrants sets the Grants field's value. +func (s *AccessControlPolicy) SetGrants(v []*Grant) *AccessControlPolicy { + s.Grants = v + return s +} + +// SetOwner sets the Owner field's value. +func (s *AccessControlPolicy) SetOwner(v *Owner) *AccessControlPolicy { + s.Owner = v + return s +} + +// A container for information about access control for replicas. +type AccessControlTranslation struct { + _ struct{} `type:"structure"` + + // Specifies the replica ownership. For default and valid values, see PUT bucket + // replication (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html) + // in the Amazon Simple Storage Service API Reference. + // + // Owner is a required field + Owner *string `type:"string" required:"true" enum:"OwnerOverride"` +} + +// String returns the string representation +func (s AccessControlTranslation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AccessControlTranslation) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AccessControlTranslation) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AccessControlTranslation"} + if s.Owner == nil { + invalidParams.Add(request.NewErrParamRequired("Owner")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetOwner sets the Owner field's value. +func (s *AccessControlTranslation) SetOwner(v string) *AccessControlTranslation { + s.Owner = &v + return s +} + +// A conjunction (logical AND) of predicates, which is used in evaluating a +// metrics filter. The operator must have at least two predicates in any combination, +// and an object must match all of the predicates for the filter to apply. +type AnalyticsAndOperator struct { + _ struct{} `type:"structure"` + + // The prefix to use when evaluating an AND predicate: The prefix that an object + // must have to be included in the metrics results. + Prefix *string `type:"string"` + + // The list of tags to use when evaluating an AND predicate. + Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"` +} + +// String returns the string representation +func (s AnalyticsAndOperator) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AnalyticsAndOperator) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AnalyticsAndOperator) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AnalyticsAndOperator"} + if s.Tags != nil { + for i, v := range s.Tags { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetPrefix sets the Prefix field's value. +func (s *AnalyticsAndOperator) SetPrefix(v string) *AnalyticsAndOperator { + s.Prefix = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *AnalyticsAndOperator) SetTags(v []*Tag) *AnalyticsAndOperator { + s.Tags = v + return s +} + +// Specifies the configuration and any analyses for the analytics filter of +// an Amazon S3 bucket. +type AnalyticsConfiguration struct { + _ struct{} `type:"structure"` + + // The filter used to describe a set of objects for analyses. A filter must + // have exactly one prefix, one tag, or one conjunction (AnalyticsAndOperator). + // If no filter is provided, all objects will be considered in any analysis. + Filter *AnalyticsFilter `type:"structure"` + + // The ID that identifies the analytics configuration. + // + // Id is a required field + Id *string `type:"string" required:"true"` + + // Contains data related to access patterns to be collected and made available + // to analyze the tradeoffs between different storage classes. + // + // StorageClassAnalysis is a required field + StorageClassAnalysis *StorageClassAnalysis `type:"structure" required:"true"` +} + +// String returns the string representation +func (s AnalyticsConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AnalyticsConfiguration) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AnalyticsConfiguration) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AnalyticsConfiguration"} + if s.Id == nil { + invalidParams.Add(request.NewErrParamRequired("Id")) + } + if s.StorageClassAnalysis == nil { + invalidParams.Add(request.NewErrParamRequired("StorageClassAnalysis")) + } + if s.Filter != nil { + if err := s.Filter.Validate(); err != nil { + invalidParams.AddNested("Filter", err.(request.ErrInvalidParams)) + } + } + if s.StorageClassAnalysis != nil { + if err := s.StorageClassAnalysis.Validate(); err != nil { + invalidParams.AddNested("StorageClassAnalysis", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetFilter sets the Filter field's value. +func (s *AnalyticsConfiguration) SetFilter(v *AnalyticsFilter) *AnalyticsConfiguration { + s.Filter = v + return s +} + +// SetId sets the Id field's value. +func (s *AnalyticsConfiguration) SetId(v string) *AnalyticsConfiguration { + s.Id = &v + return s +} + +// SetStorageClassAnalysis sets the StorageClassAnalysis field's value. +func (s *AnalyticsConfiguration) SetStorageClassAnalysis(v *StorageClassAnalysis) *AnalyticsConfiguration { + s.StorageClassAnalysis = v + return s +} + +// Where to publish the analytics results. +type AnalyticsExportDestination struct { + _ struct{} `type:"structure"` + + // A destination signifying output to an S3 bucket. + // + // S3BucketDestination is a required field + S3BucketDestination *AnalyticsS3BucketDestination `type:"structure" required:"true"` +} + +// String returns the string representation +func (s AnalyticsExportDestination) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AnalyticsExportDestination) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AnalyticsExportDestination) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AnalyticsExportDestination"} + if s.S3BucketDestination == nil { + invalidParams.Add(request.NewErrParamRequired("S3BucketDestination")) + } + if s.S3BucketDestination != nil { + if err := s.S3BucketDestination.Validate(); err != nil { + invalidParams.AddNested("S3BucketDestination", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetS3BucketDestination sets the S3BucketDestination field's value. +func (s *AnalyticsExportDestination) SetS3BucketDestination(v *AnalyticsS3BucketDestination) *AnalyticsExportDestination { + s.S3BucketDestination = v + return s +} + +// The filter used to describe a set of objects for analyses. A filter must +// have exactly one prefix, one tag, or one conjunction (AnalyticsAndOperator). +// If no filter is provided, all objects will be considered in any analysis. +type AnalyticsFilter struct { + _ struct{} `type:"structure"` + + // A conjunction (logical AND) of predicates, which is used in evaluating an + // analytics filter. The operator must have at least two predicates. + And *AnalyticsAndOperator `type:"structure"` + + // The prefix to use when evaluating an analytics filter. + Prefix *string `type:"string"` + + // The tag to use when evaluating an analytics filter. + Tag *Tag `type:"structure"` +} + +// String returns the string representation +func (s AnalyticsFilter) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AnalyticsFilter) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AnalyticsFilter) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AnalyticsFilter"} + if s.And != nil { + if err := s.And.Validate(); err != nil { + invalidParams.AddNested("And", err.(request.ErrInvalidParams)) + } + } + if s.Tag != nil { + if err := s.Tag.Validate(); err != nil { + invalidParams.AddNested("Tag", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAnd sets the And field's value. +func (s *AnalyticsFilter) SetAnd(v *AnalyticsAndOperator) *AnalyticsFilter { + s.And = v + return s +} + +// SetPrefix sets the Prefix field's value. +func (s *AnalyticsFilter) SetPrefix(v string) *AnalyticsFilter { + s.Prefix = &v + return s +} + +// SetTag sets the Tag field's value. +func (s *AnalyticsFilter) SetTag(v *Tag) *AnalyticsFilter { + s.Tag = v + return s +} + +// Contains information about where to publish the analytics results. +type AnalyticsS3BucketDestination struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the bucket to which data is exported. + // + // Bucket is a required field + Bucket *string `type:"string" required:"true"` + + // The account ID that owns the destination bucket. If no account ID is provided, + // the owner will not be validated prior to exporting data. + BucketAccountId *string `type:"string"` + + // Specifies the file format used when exporting data to Amazon S3. + // + // Format is a required field + Format *string `type:"string" required:"true" enum:"AnalyticsS3ExportFileFormat"` + + // The prefix to use when exporting data. The prefix is prepended to all results. + Prefix *string `type:"string"` +} + +// String returns the string representation +func (s AnalyticsS3BucketDestination) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AnalyticsS3BucketDestination) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AnalyticsS3BucketDestination) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AnalyticsS3BucketDestination"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Format == nil { + invalidParams.Add(request.NewErrParamRequired("Format")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *AnalyticsS3BucketDestination) SetBucket(v string) *AnalyticsS3BucketDestination { + s.Bucket = &v + return s +} + +func (s *AnalyticsS3BucketDestination) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetBucketAccountId sets the BucketAccountId field's value. +func (s *AnalyticsS3BucketDestination) SetBucketAccountId(v string) *AnalyticsS3BucketDestination { + s.BucketAccountId = &v + return s +} + +// SetFormat sets the Format field's value. +func (s *AnalyticsS3BucketDestination) SetFormat(v string) *AnalyticsS3BucketDestination { + s.Format = &v + return s +} + +// SetPrefix sets the Prefix field's value. +func (s *AnalyticsS3BucketDestination) SetPrefix(v string) *AnalyticsS3BucketDestination { + s.Prefix = &v + return s +} + +// In terms of implementation, a Bucket is a resource. An Amazon S3 bucket name +// is globally unique, and the namespace is shared by all AWS accounts. +type Bucket struct { + _ struct{} `type:"structure"` + + // Date the bucket was created. + CreationDate *time.Time `type:"timestamp"` + + // The name of the bucket. + Name *string `type:"string"` +} + +// String returns the string representation +func (s Bucket) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Bucket) GoString() string { + return s.String() +} + +// SetCreationDate sets the CreationDate field's value. +func (s *Bucket) SetCreationDate(v time.Time) *Bucket { + s.CreationDate = &v + return s +} + +// SetName sets the Name field's value. +func (s *Bucket) SetName(v string) *Bucket { + s.Name = &v + return s +} + +// Specifies the lifecycle configuration for objects in an Amazon S3 bucket. +// For more information, see Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html) +// in the Amazon Simple Storage Service Developer Guide. +type BucketLifecycleConfiguration struct { + _ struct{} `type:"structure"` + + // A lifecycle rule for individual objects in an Amazon S3 bucket. + // + // Rules is a required field + Rules []*LifecycleRule `locationName:"Rule" type:"list" flattened:"true" required:"true"` +} + +// String returns the string representation +func (s BucketLifecycleConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s BucketLifecycleConfiguration) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *BucketLifecycleConfiguration) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "BucketLifecycleConfiguration"} + if s.Rules == nil { + invalidParams.Add(request.NewErrParamRequired("Rules")) + } + if s.Rules != nil { + for i, v := range s.Rules { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetRules sets the Rules field's value. +func (s *BucketLifecycleConfiguration) SetRules(v []*LifecycleRule) *BucketLifecycleConfiguration { + s.Rules = v + return s +} + +// Container for logging status information. +type BucketLoggingStatus struct { + _ struct{} `type:"structure"` + + // Describes where logs are stored and the prefix that Amazon S3 assigns to + // all log object keys for a bucket. For more information, see PUT Bucket logging + // (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html) + // in the Amazon Simple Storage Service API Reference. + LoggingEnabled *LoggingEnabled `type:"structure"` +} + +// String returns the string representation +func (s BucketLoggingStatus) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s BucketLoggingStatus) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *BucketLoggingStatus) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "BucketLoggingStatus"} + if s.LoggingEnabled != nil { + if err := s.LoggingEnabled.Validate(); err != nil { + invalidParams.AddNested("LoggingEnabled", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetLoggingEnabled sets the LoggingEnabled field's value. +func (s *BucketLoggingStatus) SetLoggingEnabled(v *LoggingEnabled) *BucketLoggingStatus { + s.LoggingEnabled = v + return s +} + +// Describes the cross-origin access configuration for objects in an Amazon +// S3 bucket. For more information, see Enabling Cross-Origin Resource Sharing +// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) in the Amazon +// Simple Storage Service Developer Guide. +type CORSConfiguration struct { + _ struct{} `type:"structure"` + + // A set of origins and methods (cross-origin access that you want to allow). + // You can add up to 100 rules to the configuration. + // + // CORSRules is a required field + CORSRules []*CORSRule `locationName:"CORSRule" type:"list" flattened:"true" required:"true"` +} + +// String returns the string representation +func (s CORSConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CORSConfiguration) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CORSConfiguration) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CORSConfiguration"} + if s.CORSRules == nil { + invalidParams.Add(request.NewErrParamRequired("CORSRules")) + } + if s.CORSRules != nil { + for i, v := range s.CORSRules { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CORSRules", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCORSRules sets the CORSRules field's value. +func (s *CORSConfiguration) SetCORSRules(v []*CORSRule) *CORSConfiguration { + s.CORSRules = v + return s +} + +// Specifies a cross-origin access rule for an Amazon S3 bucket. +type CORSRule struct { + _ struct{} `type:"structure"` + + // Headers that are specified in the Access-Control-Request-Headers header. + // These headers are allowed in a preflight OPTIONS request. In response to + // any preflight OPTIONS request, Amazon S3 returns any requested headers that + // are allowed. + AllowedHeaders []*string `locationName:"AllowedHeader" type:"list" flattened:"true"` + + // An HTTP method that you allow the origin to execute. Valid values are GET, + // PUT, HEAD, POST, and DELETE. + // + // AllowedMethods is a required field + AllowedMethods []*string `locationName:"AllowedMethod" type:"list" flattened:"true" required:"true"` + + // One or more origins you want customers to be able to access the bucket from. + // + // AllowedOrigins is a required field + AllowedOrigins []*string `locationName:"AllowedOrigin" type:"list" flattened:"true" required:"true"` + + // One or more headers in the response that you want customers to be able to + // access from their applications (for example, from a JavaScript XMLHttpRequest + // object). + ExposeHeaders []*string `locationName:"ExposeHeader" type:"list" flattened:"true"` + + // The time in seconds that your browser is to cache the preflight response + // for the specified resource. + MaxAgeSeconds *int64 `type:"integer"` +} + +// String returns the string representation +func (s CORSRule) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CORSRule) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CORSRule) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CORSRule"} + if s.AllowedMethods == nil { + invalidParams.Add(request.NewErrParamRequired("AllowedMethods")) + } + if s.AllowedOrigins == nil { + invalidParams.Add(request.NewErrParamRequired("AllowedOrigins")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAllowedHeaders sets the AllowedHeaders field's value. +func (s *CORSRule) SetAllowedHeaders(v []*string) *CORSRule { + s.AllowedHeaders = v + return s +} + +// SetAllowedMethods sets the AllowedMethods field's value. +func (s *CORSRule) SetAllowedMethods(v []*string) *CORSRule { + s.AllowedMethods = v + return s +} + +// SetAllowedOrigins sets the AllowedOrigins field's value. +func (s *CORSRule) SetAllowedOrigins(v []*string) *CORSRule { + s.AllowedOrigins = v + return s +} + +// SetExposeHeaders sets the ExposeHeaders field's value. +func (s *CORSRule) SetExposeHeaders(v []*string) *CORSRule { + s.ExposeHeaders = v + return s +} + +// SetMaxAgeSeconds sets the MaxAgeSeconds field's value. +func (s *CORSRule) SetMaxAgeSeconds(v int64) *CORSRule { + s.MaxAgeSeconds = &v + return s +} + +// Describes how a uncompressed comma-separated values (CSV)-formatted input +// object is formatted. +type CSVInput struct { + _ struct{} `type:"structure"` + + // Specifies that CSV field values may contain quoted record delimiters and + // such records should be allowed. Default value is FALSE. Setting this value + // to TRUE may lower performance. + AllowQuotedRecordDelimiter *bool `type:"boolean"` + + // A single character used to indicate that a row should be ignored when the + // character is present at the start of that row. You can specify any character + // to indicate a comment line. + Comments *string `type:"string"` + + // A single character used to separate individual fields in a record. You can + // specify an arbitrary delimiter. + FieldDelimiter *string `type:"string"` + + // Describes the first line of input. Valid values are: + // + // * NONE: First line is not a header. + // + // * IGNORE: First line is a header, but you can't use the header values + // to indicate the column in an expression. You can use column position (such + // as _1, _2, …) to indicate the column (SELECT s._1 FROM OBJECT s). + // + // * Use: First line is a header, and you can use the header value to identify + // a column in an expression (SELECT "name" FROM OBJECT). + FileHeaderInfo *string `type:"string" enum:"FileHeaderInfo"` + + // A single character used for escaping when the field delimiter is part of + // the value. For example, if the value is a, b, Amazon S3 wraps this field + // value in quotation marks, as follows: " a , b ". + // + // Type: String + // + // Default: " + // + // Ancestors: CSV + QuoteCharacter *string `type:"string"` + + // A single character used for escaping the quotation mark character inside + // an already escaped value. For example, the value """ a , b """ is parsed + // as " a , b ". + QuoteEscapeCharacter *string `type:"string"` + + // A single character used to separate individual records in the input. Instead + // of the default value, you can specify an arbitrary delimiter. + RecordDelimiter *string `type:"string"` +} + +// String returns the string representation +func (s CSVInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CSVInput) GoString() string { + return s.String() +} + +// SetAllowQuotedRecordDelimiter sets the AllowQuotedRecordDelimiter field's value. +func (s *CSVInput) SetAllowQuotedRecordDelimiter(v bool) *CSVInput { + s.AllowQuotedRecordDelimiter = &v + return s +} + +// SetComments sets the Comments field's value. +func (s *CSVInput) SetComments(v string) *CSVInput { + s.Comments = &v + return s +} + +// SetFieldDelimiter sets the FieldDelimiter field's value. +func (s *CSVInput) SetFieldDelimiter(v string) *CSVInput { + s.FieldDelimiter = &v + return s +} + +// SetFileHeaderInfo sets the FileHeaderInfo field's value. +func (s *CSVInput) SetFileHeaderInfo(v string) *CSVInput { + s.FileHeaderInfo = &v + return s +} + +// SetQuoteCharacter sets the QuoteCharacter field's value. +func (s *CSVInput) SetQuoteCharacter(v string) *CSVInput { + s.QuoteCharacter = &v + return s +} + +// SetQuoteEscapeCharacter sets the QuoteEscapeCharacter field's value. +func (s *CSVInput) SetQuoteEscapeCharacter(v string) *CSVInput { + s.QuoteEscapeCharacter = &v + return s +} + +// SetRecordDelimiter sets the RecordDelimiter field's value. +func (s *CSVInput) SetRecordDelimiter(v string) *CSVInput { + s.RecordDelimiter = &v + return s +} + +// Describes how uncompressed comma-separated values (CSV)-formatted results +// are formatted. +type CSVOutput struct { + _ struct{} `type:"structure"` + + // The value used to separate individual fields in a record. You can specify + // an arbitrary delimiter. + FieldDelimiter *string `type:"string"` + + // A single character used for escaping when the field delimiter is part of + // the value. For example, if the value is a, b, Amazon S3 wraps this field + // value in quotation marks, as follows: " a , b ". + QuoteCharacter *string `type:"string"` + + // The single character used for escaping the quote character inside an already + // escaped value. + QuoteEscapeCharacter *string `type:"string"` + + // Indicates whether to use quotation marks around output fields. + // + // * ALWAYS: Always use quotation marks for output fields. + // + // * ASNEEDED: Use quotation marks for output fields when needed. + QuoteFields *string `type:"string" enum:"QuoteFields"` + + // A single character used to separate individual records in the output. Instead + // of the default value, you can specify an arbitrary delimiter. + RecordDelimiter *string `type:"string"` +} + +// String returns the string representation +func (s CSVOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CSVOutput) GoString() string { + return s.String() +} + +// SetFieldDelimiter sets the FieldDelimiter field's value. +func (s *CSVOutput) SetFieldDelimiter(v string) *CSVOutput { + s.FieldDelimiter = &v + return s +} + +// SetQuoteCharacter sets the QuoteCharacter field's value. +func (s *CSVOutput) SetQuoteCharacter(v string) *CSVOutput { + s.QuoteCharacter = &v + return s +} + +// SetQuoteEscapeCharacter sets the QuoteEscapeCharacter field's value. +func (s *CSVOutput) SetQuoteEscapeCharacter(v string) *CSVOutput { + s.QuoteEscapeCharacter = &v + return s +} + +// SetQuoteFields sets the QuoteFields field's value. +func (s *CSVOutput) SetQuoteFields(v string) *CSVOutput { + s.QuoteFields = &v + return s +} + +// SetRecordDelimiter sets the RecordDelimiter field's value. +func (s *CSVOutput) SetRecordDelimiter(v string) *CSVOutput { + s.RecordDelimiter = &v + return s +} + +// Container for specifying the AWS Lambda notification configuration. +type CloudFunctionConfiguration struct { + _ struct{} `type:"structure"` + + // Lambda cloud function ARN that Amazon S3 can invoke when it detects events + // of the specified type. + CloudFunction *string `type:"string"` + + // The bucket event for which to send notifications. + // + // Deprecated: Event has been deprecated + Event *string `deprecated:"true" type:"string" enum:"Event"` + + // Bucket events for which to send notifications. + Events []*string `locationName:"Event" type:"list" flattened:"true"` + + // An optional unique identifier for configurations in a notification configuration. + // If you don't provide one, Amazon S3 will assign an ID. + Id *string `type:"string"` + + // The role supporting the invocation of the lambda function + InvocationRole *string `type:"string"` +} + +// String returns the string representation +func (s CloudFunctionConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CloudFunctionConfiguration) GoString() string { + return s.String() +} + +// SetCloudFunction sets the CloudFunction field's value. +func (s *CloudFunctionConfiguration) SetCloudFunction(v string) *CloudFunctionConfiguration { + s.CloudFunction = &v + return s +} + +// SetEvent sets the Event field's value. +func (s *CloudFunctionConfiguration) SetEvent(v string) *CloudFunctionConfiguration { + s.Event = &v + return s +} + +// SetEvents sets the Events field's value. +func (s *CloudFunctionConfiguration) SetEvents(v []*string) *CloudFunctionConfiguration { + s.Events = v + return s +} + +// SetId sets the Id field's value. +func (s *CloudFunctionConfiguration) SetId(v string) *CloudFunctionConfiguration { + s.Id = &v + return s +} + +// SetInvocationRole sets the InvocationRole field's value. +func (s *CloudFunctionConfiguration) SetInvocationRole(v string) *CloudFunctionConfiguration { + s.InvocationRole = &v + return s +} + +// Container for all (if there are any) keys between Prefix and the next occurrence +// of the string specified by a delimiter. CommonPrefixes lists keys that act +// like subdirectories in the directory specified by Prefix. For example, if +// the prefix is notes/ and the delimiter is a slash (/) as in notes/summer/july, +// the common prefix is notes/summer/. +type CommonPrefix struct { + _ struct{} `type:"structure"` + + // Container for the specified common prefix. + Prefix *string `type:"string"` +} + +// String returns the string representation +func (s CommonPrefix) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CommonPrefix) GoString() string { + return s.String() +} + +// SetPrefix sets the Prefix field's value. +func (s *CommonPrefix) SetPrefix(v string) *CommonPrefix { + s.Prefix = &v + return s +} + +type CompleteMultipartUploadInput struct { + _ struct{} `locationName:"CompleteMultipartUploadRequest" type:"structure" payload:"MultipartUpload"` + + // Name of the bucket to which the multipart upload was initiated. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Object key for which the multipart upload was initiated. + // + // Key is a required field + Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + + // The container for the multipart upload request information. + MultipartUpload *CompletedMultipartUpload `locationName:"CompleteMultipartUpload" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` + + // Confirms that the requester knows that she or he will be charged for the + // request. Bucket owners need not specify this parameter in their requests. + // Documentation on downloading objects from requester pays buckets can be found + // at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` + + // ID for the initiated multipart upload. + // + // UploadId is a required field + UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"` +} + +// String returns the string representation +func (s CompleteMultipartUploadInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CompleteMultipartUploadInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CompleteMultipartUploadInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CompleteMultipartUploadInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + if s.UploadId == nil { + invalidParams.Add(request.NewErrParamRequired("UploadId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *CompleteMultipartUploadInput) SetBucket(v string) *CompleteMultipartUploadInput { + s.Bucket = &v + return s +} + +func (s *CompleteMultipartUploadInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetKey sets the Key field's value. +func (s *CompleteMultipartUploadInput) SetKey(v string) *CompleteMultipartUploadInput { + s.Key = &v + return s +} + +// SetMultipartUpload sets the MultipartUpload field's value. +func (s *CompleteMultipartUploadInput) SetMultipartUpload(v *CompletedMultipartUpload) *CompleteMultipartUploadInput { + s.MultipartUpload = v + return s +} + +// SetRequestPayer sets the RequestPayer field's value. +func (s *CompleteMultipartUploadInput) SetRequestPayer(v string) *CompleteMultipartUploadInput { + s.RequestPayer = &v + return s +} + +// SetUploadId sets the UploadId field's value. +func (s *CompleteMultipartUploadInput) SetUploadId(v string) *CompleteMultipartUploadInput { + s.UploadId = &v + return s +} + +type CompleteMultipartUploadOutput struct { + _ struct{} `type:"structure"` + + // The name of the bucket that contains the newly created object. + Bucket *string `type:"string"` + + // Entity tag that identifies the newly created object's data. Objects with + // different object data will have different entity tags. The entity tag is + // an opaque string. The entity tag may or may not be an MD5 digest of the object + // data. If the entity tag is not an MD5 digest of the object data, it will + // contain one or more nonhexadecimal characters and/or will consist of less + // than 32 or more than 32 hexadecimal digits. + ETag *string `type:"string"` + + // If the object expiration is configured, this will contain the expiration + // date (expiry-date) and rule ID (rule-id). The value of rule-id is URL encoded. + Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"` + + // The object key of the newly created object. + Key *string `min:"1" type:"string"` + + // The URI that identifies the newly created object. + Location *string `type:"string"` + + // If present, indicates that the requester was successfully charged for the + // request. + RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"` + + // If present, specifies the ID of the AWS Key Management Service (KMS) customer + // master key (CMK) that was used for the object. + SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"` + + // If you specified server-side encryption either with an Amazon S3-managed + // encryption key or an AWS KMS customer master key (CMK) in your initiate multipart + // upload request, the response includes this header. It confirms the encryption + // algorithm that Amazon S3 used to encrypt the object. + ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"` + + // Version ID of the newly created object, in case the bucket has versioning + // turned on. + VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"` +} + +// String returns the string representation +func (s CompleteMultipartUploadOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CompleteMultipartUploadOutput) GoString() string { + return s.String() +} + +// SetBucket sets the Bucket field's value. +func (s *CompleteMultipartUploadOutput) SetBucket(v string) *CompleteMultipartUploadOutput { + s.Bucket = &v + return s +} + +func (s *CompleteMultipartUploadOutput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetETag sets the ETag field's value. +func (s *CompleteMultipartUploadOutput) SetETag(v string) *CompleteMultipartUploadOutput { + s.ETag = &v + return s +} + +// SetExpiration sets the Expiration field's value. +func (s *CompleteMultipartUploadOutput) SetExpiration(v string) *CompleteMultipartUploadOutput { + s.Expiration = &v + return s +} + +// SetKey sets the Key field's value. +func (s *CompleteMultipartUploadOutput) SetKey(v string) *CompleteMultipartUploadOutput { + s.Key = &v + return s +} + +// SetLocation sets the Location field's value. +func (s *CompleteMultipartUploadOutput) SetLocation(v string) *CompleteMultipartUploadOutput { + s.Location = &v + return s +} + +// SetRequestCharged sets the RequestCharged field's value. +func (s *CompleteMultipartUploadOutput) SetRequestCharged(v string) *CompleteMultipartUploadOutput { + s.RequestCharged = &v + return s +} + +// SetSSEKMSKeyId sets the SSEKMSKeyId field's value. +func (s *CompleteMultipartUploadOutput) SetSSEKMSKeyId(v string) *CompleteMultipartUploadOutput { + s.SSEKMSKeyId = &v + return s +} + +// SetServerSideEncryption sets the ServerSideEncryption field's value. +func (s *CompleteMultipartUploadOutput) SetServerSideEncryption(v string) *CompleteMultipartUploadOutput { + s.ServerSideEncryption = &v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *CompleteMultipartUploadOutput) SetVersionId(v string) *CompleteMultipartUploadOutput { + s.VersionId = &v + return s +} + +// The container for the completed multipart upload details. +type CompletedMultipartUpload struct { + _ struct{} `type:"structure"` + + // Array of CompletedPart data types. + Parts []*CompletedPart `locationName:"Part" type:"list" flattened:"true"` +} + +// String returns the string representation +func (s CompletedMultipartUpload) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CompletedMultipartUpload) GoString() string { + return s.String() +} + +// SetParts sets the Parts field's value. +func (s *CompletedMultipartUpload) SetParts(v []*CompletedPart) *CompletedMultipartUpload { + s.Parts = v + return s +} + +// Details of the parts that were uploaded. +type CompletedPart struct { + _ struct{} `type:"structure"` + + // Entity tag returned when the part was uploaded. + ETag *string `type:"string"` + + // Part number that identifies the part. This is a positive integer between + // 1 and 10,000. + PartNumber *int64 `type:"integer"` +} + +// String returns the string representation +func (s CompletedPart) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CompletedPart) GoString() string { + return s.String() +} + +// SetETag sets the ETag field's value. +func (s *CompletedPart) SetETag(v string) *CompletedPart { + s.ETag = &v + return s +} + +// SetPartNumber sets the PartNumber field's value. +func (s *CompletedPart) SetPartNumber(v int64) *CompletedPart { + s.PartNumber = &v + return s +} + +// A container for describing a condition that must be met for the specified +// redirect to apply. For example, 1. If request is for pages in the /docs folder, +// redirect to the /documents folder. 2. If request results in HTTP error 4xx, +// redirect request to another host where you might process the error. +type Condition struct { + _ struct{} `type:"structure"` + + // The HTTP error code when the redirect is applied. In the event of an error, + // if the error code equals this value, then the specified redirect is applied. + // Required when parent element Condition is specified and sibling KeyPrefixEquals + // is not specified. If both are specified, then both must be true for the redirect + // to be applied. + HttpErrorCodeReturnedEquals *string `type:"string"` + + // The object key name prefix when the redirect is applied. For example, to + // redirect requests for ExamplePage.html, the key prefix will be ExamplePage.html. + // To redirect request for all pages with the prefix docs/, the key prefix will + // be /docs, which identifies all objects in the docs/ folder. Required when + // the parent element Condition is specified and sibling HttpErrorCodeReturnedEquals + // is not specified. If both conditions are specified, both must be true for + // the redirect to be applied. + KeyPrefixEquals *string `type:"string"` +} + +// String returns the string representation +func (s Condition) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Condition) GoString() string { + return s.String() +} + +// SetHttpErrorCodeReturnedEquals sets the HttpErrorCodeReturnedEquals field's value. +func (s *Condition) SetHttpErrorCodeReturnedEquals(v string) *Condition { + s.HttpErrorCodeReturnedEquals = &v + return s +} + +// SetKeyPrefixEquals sets the KeyPrefixEquals field's value. +func (s *Condition) SetKeyPrefixEquals(v string) *Condition { + s.KeyPrefixEquals = &v + return s +} + +type ContinuationEvent struct { + _ struct{} `locationName:"ContinuationEvent" type:"structure"` +} + +// String returns the string representation +func (s ContinuationEvent) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ContinuationEvent) GoString() string { + return s.String() +} + +// The ContinuationEvent is and event in the SelectObjectContentEventStream group of events. +func (s *ContinuationEvent) eventSelectObjectContentEventStream() {} + +// UnmarshalEvent unmarshals the EventStream Message into the ContinuationEvent value. +// This method is only used internally within the SDK's EventStream handling. +func (s *ContinuationEvent) UnmarshalEvent( + payloadUnmarshaler protocol.PayloadUnmarshaler, + msg eventstream.Message, +) error { + return nil +} + +type CopyObjectInput struct { + _ struct{} `locationName:"CopyObjectRequest" type:"structure"` + + // The canned ACL to apply to the object. + ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"` + + // The name of the destination bucket. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Specifies caching behavior along the request/reply chain. + CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"` + + // Specifies presentational information for the object. + ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"` + + // Specifies what content encodings have been applied to the object and thus + // what decoding mechanisms must be applied to obtain the media-type referenced + // by the Content-Type header field. + ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"` + + // The language the content is in. + ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"` + + // A standard MIME type describing the format of the object data. + ContentType *string `location:"header" locationName:"Content-Type" type:"string"` + + // The name of the source bucket and key name of the source object, separated + // by a slash (/). Must be URL-encoded. + // + // CopySource is a required field + CopySource *string `location:"header" locationName:"x-amz-copy-source" type:"string" required:"true"` + + // Copies the object if its entity tag (ETag) matches the specified tag. + CopySourceIfMatch *string `location:"header" locationName:"x-amz-copy-source-if-match" type:"string"` + + // Copies the object if it has been modified since the specified time. + CopySourceIfModifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-modified-since" type:"timestamp"` + + // Copies the object if its entity tag (ETag) is different than the specified + // ETag. + CopySourceIfNoneMatch *string `location:"header" locationName:"x-amz-copy-source-if-none-match" type:"string"` + + // Copies the object if it hasn't been modified since the specified time. + CopySourceIfUnmodifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-unmodified-since" type:"timestamp"` + + // Specifies the algorithm to use when decrypting the source object (e.g., AES256). + CopySourceSSECustomerAlgorithm *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-algorithm" type:"string"` + + // Specifies the customer-provided encryption key for Amazon S3 to use to decrypt + // the source object. The encryption key provided in this header must be one + // that was used when the source object was created. + CopySourceSSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key" type:"string" sensitive:"true"` + + // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. + // Amazon S3 uses this header for a message integrity check to ensure the encryption + // key was transmitted without error. + CopySourceSSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key-MD5" type:"string"` + + // The date and time at which the object is no longer cacheable. + Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"` + + // Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object. + GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"` + + // Allows grantee to read the object data and its metadata. + GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"` + + // Allows grantee to read the object ACL. + GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"` + + // Allows grantee to write the ACL for the applicable object. + GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"` + + // The key of the destination object. + // + // Key is a required field + Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + + // A map of metadata to store with the object in S3. + Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"` + + // Specifies whether the metadata is copied from the source object or replaced + // with metadata provided in the request. + MetadataDirective *string `location:"header" locationName:"x-amz-metadata-directive" type:"string" enum:"MetadataDirective"` + + // Specifies whether you want to apply a Legal Hold to the copied object. + ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"` + + // The Object Lock mode that you want to apply to the copied object. + ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"` + + // The date and time when you want the copied object's Object Lock to expire. + ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"` + + // Confirms that the requester knows that she or he will be charged for the + // request. Bucket owners need not specify this parameter in their requests. + // Documentation on downloading objects from requester pays buckets can be found + // at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` + + // Specifies the algorithm to use to when encrypting the object (e.g., AES256). + SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"` + + // Specifies the customer-provided encryption key for Amazon S3 to use in encrypting + // data. This value is used to store the object and then it is discarded; Amazon + // does not store the encryption key. The key must be appropriate for use with + // the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm + // header. + SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"` + + // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. + // Amazon S3 uses this header for a message integrity check to ensure the encryption + // key was transmitted without error. + SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"` + + // Specifies the AWS KMS Encryption Context to use for object encryption. The + // value of this header is a base64-encoded UTF-8 string holding JSON with the + // encryption context key-value pairs. + SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"` + + // Specifies the AWS KMS key ID to use for object encryption. All GET and PUT + // requests for an object protected by AWS KMS will fail if not made via SSL + // or using SigV4. Documentation on configuring any of the officially supported + // AWS SDKs and CLI can be found at http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version + SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"` + + // The Server-side encryption algorithm used when storing this object in S3 + // (e.g., AES256, aws:kms). + ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"` + + // The type of storage to use for the object. Defaults to 'STANDARD'. + StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"` + + // The tag-set for the object destination object this value must be used in + // conjunction with the TaggingDirective. The tag-set must be encoded as URL + // Query parameters + Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"` + + // Specifies whether the object tag-set are copied from the source object or + // replaced with tag-set provided in the request. + TaggingDirective *string `location:"header" locationName:"x-amz-tagging-directive" type:"string" enum:"TaggingDirective"` + + // If the bucket is configured as a website, redirects requests for this object + // to another object in the same bucket or to an external URL. Amazon S3 stores + // the value of this header in the object metadata. + WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"` +} + +// String returns the string representation +func (s CopyObjectInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CopyObjectInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CopyObjectInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CopyObjectInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.CopySource == nil { + invalidParams.Add(request.NewErrParamRequired("CopySource")) + } + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetACL sets the ACL field's value. +func (s *CopyObjectInput) SetACL(v string) *CopyObjectInput { + s.ACL = &v + return s +} + +// SetBucket sets the Bucket field's value. +func (s *CopyObjectInput) SetBucket(v string) *CopyObjectInput { + s.Bucket = &v + return s +} + +func (s *CopyObjectInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetCacheControl sets the CacheControl field's value. +func (s *CopyObjectInput) SetCacheControl(v string) *CopyObjectInput { + s.CacheControl = &v + return s +} + +// SetContentDisposition sets the ContentDisposition field's value. +func (s *CopyObjectInput) SetContentDisposition(v string) *CopyObjectInput { + s.ContentDisposition = &v + return s +} + +// SetContentEncoding sets the ContentEncoding field's value. +func (s *CopyObjectInput) SetContentEncoding(v string) *CopyObjectInput { + s.ContentEncoding = &v + return s +} + +// SetContentLanguage sets the ContentLanguage field's value. +func (s *CopyObjectInput) SetContentLanguage(v string) *CopyObjectInput { + s.ContentLanguage = &v + return s +} + +// SetContentType sets the ContentType field's value. +func (s *CopyObjectInput) SetContentType(v string) *CopyObjectInput { + s.ContentType = &v + return s +} + +// SetCopySource sets the CopySource field's value. +func (s *CopyObjectInput) SetCopySource(v string) *CopyObjectInput { + s.CopySource = &v + return s +} + +// SetCopySourceIfMatch sets the CopySourceIfMatch field's value. +func (s *CopyObjectInput) SetCopySourceIfMatch(v string) *CopyObjectInput { + s.CopySourceIfMatch = &v + return s +} + +// SetCopySourceIfModifiedSince sets the CopySourceIfModifiedSince field's value. +func (s *CopyObjectInput) SetCopySourceIfModifiedSince(v time.Time) *CopyObjectInput { + s.CopySourceIfModifiedSince = &v + return s +} + +// SetCopySourceIfNoneMatch sets the CopySourceIfNoneMatch field's value. +func (s *CopyObjectInput) SetCopySourceIfNoneMatch(v string) *CopyObjectInput { + s.CopySourceIfNoneMatch = &v + return s +} + +// SetCopySourceIfUnmodifiedSince sets the CopySourceIfUnmodifiedSince field's value. +func (s *CopyObjectInput) SetCopySourceIfUnmodifiedSince(v time.Time) *CopyObjectInput { + s.CopySourceIfUnmodifiedSince = &v + return s +} + +// SetCopySourceSSECustomerAlgorithm sets the CopySourceSSECustomerAlgorithm field's value. +func (s *CopyObjectInput) SetCopySourceSSECustomerAlgorithm(v string) *CopyObjectInput { + s.CopySourceSSECustomerAlgorithm = &v + return s +} + +// SetCopySourceSSECustomerKey sets the CopySourceSSECustomerKey field's value. +func (s *CopyObjectInput) SetCopySourceSSECustomerKey(v string) *CopyObjectInput { + s.CopySourceSSECustomerKey = &v + return s +} + +func (s *CopyObjectInput) getCopySourceSSECustomerKey() (v string) { + if s.CopySourceSSECustomerKey == nil { + return v + } + return *s.CopySourceSSECustomerKey +} + +// SetCopySourceSSECustomerKeyMD5 sets the CopySourceSSECustomerKeyMD5 field's value. +func (s *CopyObjectInput) SetCopySourceSSECustomerKeyMD5(v string) *CopyObjectInput { + s.CopySourceSSECustomerKeyMD5 = &v + return s +} + +// SetExpires sets the Expires field's value. +func (s *CopyObjectInput) SetExpires(v time.Time) *CopyObjectInput { + s.Expires = &v + return s +} + +// SetGrantFullControl sets the GrantFullControl field's value. +func (s *CopyObjectInput) SetGrantFullControl(v string) *CopyObjectInput { + s.GrantFullControl = &v + return s +} + +// SetGrantRead sets the GrantRead field's value. +func (s *CopyObjectInput) SetGrantRead(v string) *CopyObjectInput { + s.GrantRead = &v + return s +} + +// SetGrantReadACP sets the GrantReadACP field's value. +func (s *CopyObjectInput) SetGrantReadACP(v string) *CopyObjectInput { + s.GrantReadACP = &v + return s +} + +// SetGrantWriteACP sets the GrantWriteACP field's value. +func (s *CopyObjectInput) SetGrantWriteACP(v string) *CopyObjectInput { + s.GrantWriteACP = &v + return s +} + +// SetKey sets the Key field's value. +func (s *CopyObjectInput) SetKey(v string) *CopyObjectInput { + s.Key = &v + return s +} + +// SetMetadata sets the Metadata field's value. +func (s *CopyObjectInput) SetMetadata(v map[string]*string) *CopyObjectInput { + s.Metadata = v + return s +} + +// SetMetadataDirective sets the MetadataDirective field's value. +func (s *CopyObjectInput) SetMetadataDirective(v string) *CopyObjectInput { + s.MetadataDirective = &v + return s +} + +// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value. +func (s *CopyObjectInput) SetObjectLockLegalHoldStatus(v string) *CopyObjectInput { + s.ObjectLockLegalHoldStatus = &v + return s +} + +// SetObjectLockMode sets the ObjectLockMode field's value. +func (s *CopyObjectInput) SetObjectLockMode(v string) *CopyObjectInput { + s.ObjectLockMode = &v + return s +} + +// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value. +func (s *CopyObjectInput) SetObjectLockRetainUntilDate(v time.Time) *CopyObjectInput { + s.ObjectLockRetainUntilDate = &v + return s +} + +// SetRequestPayer sets the RequestPayer field's value. +func (s *CopyObjectInput) SetRequestPayer(v string) *CopyObjectInput { + s.RequestPayer = &v + return s +} + +// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value. +func (s *CopyObjectInput) SetSSECustomerAlgorithm(v string) *CopyObjectInput { + s.SSECustomerAlgorithm = &v + return s +} + +// SetSSECustomerKey sets the SSECustomerKey field's value. +func (s *CopyObjectInput) SetSSECustomerKey(v string) *CopyObjectInput { + s.SSECustomerKey = &v + return s +} + +func (s *CopyObjectInput) getSSECustomerKey() (v string) { + if s.SSECustomerKey == nil { + return v + } + return *s.SSECustomerKey +} + +// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value. +func (s *CopyObjectInput) SetSSECustomerKeyMD5(v string) *CopyObjectInput { + s.SSECustomerKeyMD5 = &v + return s +} + +// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value. +func (s *CopyObjectInput) SetSSEKMSEncryptionContext(v string) *CopyObjectInput { + s.SSEKMSEncryptionContext = &v + return s +} + +// SetSSEKMSKeyId sets the SSEKMSKeyId field's value. +func (s *CopyObjectInput) SetSSEKMSKeyId(v string) *CopyObjectInput { + s.SSEKMSKeyId = &v + return s +} + +// SetServerSideEncryption sets the ServerSideEncryption field's value. +func (s *CopyObjectInput) SetServerSideEncryption(v string) *CopyObjectInput { + s.ServerSideEncryption = &v + return s +} + +// SetStorageClass sets the StorageClass field's value. +func (s *CopyObjectInput) SetStorageClass(v string) *CopyObjectInput { + s.StorageClass = &v + return s +} + +// SetTagging sets the Tagging field's value. +func (s *CopyObjectInput) SetTagging(v string) *CopyObjectInput { + s.Tagging = &v + return s +} + +// SetTaggingDirective sets the TaggingDirective field's value. +func (s *CopyObjectInput) SetTaggingDirective(v string) *CopyObjectInput { + s.TaggingDirective = &v + return s +} + +// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value. +func (s *CopyObjectInput) SetWebsiteRedirectLocation(v string) *CopyObjectInput { + s.WebsiteRedirectLocation = &v + return s +} + +type CopyObjectOutput struct { + _ struct{} `type:"structure" payload:"CopyObjectResult"` + + // Container for all response elements. + CopyObjectResult *CopyObjectResult `type:"structure"` + + // Version of the copied object in the destination bucket. + CopySourceVersionId *string `location:"header" locationName:"x-amz-copy-source-version-id" type:"string"` + + // If the object expiration is configured, the response includes this header. + Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"` + + // If present, indicates that the requester was successfully charged for the + // request. + RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"` + + // If server-side encryption with a customer-provided encryption key was requested, + // the response will include this header confirming the encryption algorithm + // used. + SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"` + + // If server-side encryption with a customer-provided encryption key was requested, + // the response will include this header to provide round trip message integrity + // verification of the customer-provided encryption key. + SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"` + + // If present, specifies the AWS KMS Encryption Context to use for object encryption. + // The value of this header is a base64-encoded UTF-8 string holding JSON with + // the encryption context key-value pairs. + SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"` + + // If present, specifies the ID of the AWS Key Management Service (KMS) customer + // master key (CMK) that was used for the object. + SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"` + + // The Server-side encryption algorithm used when storing this object in S3 + // (e.g., AES256, aws:kms). + ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"` + + // Version ID of the newly created copy. + VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"` +} + +// String returns the string representation +func (s CopyObjectOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CopyObjectOutput) GoString() string { + return s.String() +} + +// SetCopyObjectResult sets the CopyObjectResult field's value. +func (s *CopyObjectOutput) SetCopyObjectResult(v *CopyObjectResult) *CopyObjectOutput { + s.CopyObjectResult = v + return s +} + +// SetCopySourceVersionId sets the CopySourceVersionId field's value. +func (s *CopyObjectOutput) SetCopySourceVersionId(v string) *CopyObjectOutput { + s.CopySourceVersionId = &v + return s +} + +// SetExpiration sets the Expiration field's value. +func (s *CopyObjectOutput) SetExpiration(v string) *CopyObjectOutput { + s.Expiration = &v + return s +} + +// SetRequestCharged sets the RequestCharged field's value. +func (s *CopyObjectOutput) SetRequestCharged(v string) *CopyObjectOutput { + s.RequestCharged = &v + return s +} + +// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value. +func (s *CopyObjectOutput) SetSSECustomerAlgorithm(v string) *CopyObjectOutput { + s.SSECustomerAlgorithm = &v + return s +} + +// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value. +func (s *CopyObjectOutput) SetSSECustomerKeyMD5(v string) *CopyObjectOutput { + s.SSECustomerKeyMD5 = &v + return s +} + +// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value. +func (s *CopyObjectOutput) SetSSEKMSEncryptionContext(v string) *CopyObjectOutput { + s.SSEKMSEncryptionContext = &v + return s +} + +// SetSSEKMSKeyId sets the SSEKMSKeyId field's value. +func (s *CopyObjectOutput) SetSSEKMSKeyId(v string) *CopyObjectOutput { + s.SSEKMSKeyId = &v + return s +} + +// SetServerSideEncryption sets the ServerSideEncryption field's value. +func (s *CopyObjectOutput) SetServerSideEncryption(v string) *CopyObjectOutput { + s.ServerSideEncryption = &v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *CopyObjectOutput) SetVersionId(v string) *CopyObjectOutput { + s.VersionId = &v + return s +} + +// >Container for all response elements. +type CopyObjectResult struct { + _ struct{} `type:"structure"` + + // Returns the ETag of the new object. The ETag reflects only changes to the + // contents of an object, not its metadata. The source and destination ETag + // is identical for a successfully copied object. + ETag *string `type:"string"` + + // Returns the date that the object was last modified. + LastModified *time.Time `type:"timestamp"` +} + +// String returns the string representation +func (s CopyObjectResult) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CopyObjectResult) GoString() string { + return s.String() +} + +// SetETag sets the ETag field's value. +func (s *CopyObjectResult) SetETag(v string) *CopyObjectResult { + s.ETag = &v + return s +} + +// SetLastModified sets the LastModified field's value. +func (s *CopyObjectResult) SetLastModified(v time.Time) *CopyObjectResult { + s.LastModified = &v + return s +} + +// Container for all response elements. +type CopyPartResult struct { + _ struct{} `type:"structure"` + + // Entity tag of the object. + ETag *string `type:"string"` + + // Date and time at which the object was uploaded. + LastModified *time.Time `type:"timestamp"` +} + +// String returns the string representation +func (s CopyPartResult) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CopyPartResult) GoString() string { + return s.String() +} + +// SetETag sets the ETag field's value. +func (s *CopyPartResult) SetETag(v string) *CopyPartResult { + s.ETag = &v + return s +} + +// SetLastModified sets the LastModified field's value. +func (s *CopyPartResult) SetLastModified(v time.Time) *CopyPartResult { + s.LastModified = &v + return s +} + +// The configuration information for the bucket. +type CreateBucketConfiguration struct { + _ struct{} `type:"structure"` + + // Specifies the region where the bucket will be created. If you don't specify + // a region, the bucket is created in US East (N. Virginia) Region (us-east-1). + LocationConstraint *string `type:"string" enum:"BucketLocationConstraint"` +} + +// String returns the string representation +func (s CreateBucketConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateBucketConfiguration) GoString() string { + return s.String() +} + +// SetLocationConstraint sets the LocationConstraint field's value. +func (s *CreateBucketConfiguration) SetLocationConstraint(v string) *CreateBucketConfiguration { + s.LocationConstraint = &v + return s +} + +type CreateBucketInput struct { + _ struct{} `locationName:"CreateBucketRequest" type:"structure" payload:"CreateBucketConfiguration"` + + // The canned ACL to apply to the bucket. + ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"BucketCannedACL"` + + // The name of the bucket to create. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // The configuration information for the bucket. + CreateBucketConfiguration *CreateBucketConfiguration `locationName:"CreateBucketConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` + + // Allows grantee the read, write, read ACP, and write ACP permissions on the + // bucket. + GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"` + + // Allows grantee to list the objects in the bucket. + GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"` + + // Allows grantee to read the bucket ACL. + GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"` + + // Allows grantee to create, overwrite, and delete any object in the bucket. + GrantWrite *string `location:"header" locationName:"x-amz-grant-write" type:"string"` + + // Allows grantee to write the ACL for the applicable bucket. + GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"` + + // Specifies whether you want S3 Object Lock to be enabled for the new bucket. + ObjectLockEnabledForBucket *bool `location:"header" locationName:"x-amz-bucket-object-lock-enabled" type:"boolean"` +} + +// String returns the string representation +func (s CreateBucketInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateBucketInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateBucketInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateBucketInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetACL sets the ACL field's value. +func (s *CreateBucketInput) SetACL(v string) *CreateBucketInput { + s.ACL = &v + return s +} + +// SetBucket sets the Bucket field's value. +func (s *CreateBucketInput) SetBucket(v string) *CreateBucketInput { + s.Bucket = &v + return s +} + +func (s *CreateBucketInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetCreateBucketConfiguration sets the CreateBucketConfiguration field's value. +func (s *CreateBucketInput) SetCreateBucketConfiguration(v *CreateBucketConfiguration) *CreateBucketInput { + s.CreateBucketConfiguration = v + return s +} + +// SetGrantFullControl sets the GrantFullControl field's value. +func (s *CreateBucketInput) SetGrantFullControl(v string) *CreateBucketInput { + s.GrantFullControl = &v + return s +} + +// SetGrantRead sets the GrantRead field's value. +func (s *CreateBucketInput) SetGrantRead(v string) *CreateBucketInput { + s.GrantRead = &v + return s +} + +// SetGrantReadACP sets the GrantReadACP field's value. +func (s *CreateBucketInput) SetGrantReadACP(v string) *CreateBucketInput { + s.GrantReadACP = &v + return s +} + +// SetGrantWrite sets the GrantWrite field's value. +func (s *CreateBucketInput) SetGrantWrite(v string) *CreateBucketInput { + s.GrantWrite = &v + return s +} + +// SetGrantWriteACP sets the GrantWriteACP field's value. +func (s *CreateBucketInput) SetGrantWriteACP(v string) *CreateBucketInput { + s.GrantWriteACP = &v + return s +} + +// SetObjectLockEnabledForBucket sets the ObjectLockEnabledForBucket field's value. +func (s *CreateBucketInput) SetObjectLockEnabledForBucket(v bool) *CreateBucketInput { + s.ObjectLockEnabledForBucket = &v + return s +} + +type CreateBucketOutput struct { + _ struct{} `type:"structure"` + + // Specifies the region where the bucket will be created. If you are creating + // a bucket on the US East (N. Virginia) region (us-east-1), you do not need + // to specify the location. + Location *string `location:"header" locationName:"Location" type:"string"` +} + +// String returns the string representation +func (s CreateBucketOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateBucketOutput) GoString() string { + return s.String() +} + +// SetLocation sets the Location field's value. +func (s *CreateBucketOutput) SetLocation(v string) *CreateBucketOutput { + s.Location = &v + return s +} + +type CreateMultipartUploadInput struct { + _ struct{} `locationName:"CreateMultipartUploadRequest" type:"structure"` + + // The canned ACL to apply to the object. + ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"` + + // The name of the bucket to which to initiate the upload + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Specifies caching behavior along the request/reply chain. + CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"` + + // Specifies presentational information for the object. + ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"` + + // Specifies what content encodings have been applied to the object and thus + // what decoding mechanisms must be applied to obtain the media-type referenced + // by the Content-Type header field. + ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"` + + // The language the content is in. + ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"` + + // A standard MIME type describing the format of the object data. + ContentType *string `location:"header" locationName:"Content-Type" type:"string"` + + // The date and time at which the object is no longer cacheable. + Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"` + + // Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object. + GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"` + + // Allows grantee to read the object data and its metadata. + GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"` + + // Allows grantee to read the object ACL. + GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"` + + // Allows grantee to write the ACL for the applicable object. + GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"` + + // Object key for which the multipart upload is to be initiated. + // + // Key is a required field + Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + + // A map of metadata to store with the object in S3. + Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"` + + // Specifies whether you want to apply a Legal Hold to the uploaded object. + ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"` + + // Specifies the Object Lock mode that you want to apply to the uploaded object. + ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"` + + // Specifies the date and time when you want the Object Lock to expire. + ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"` + + // Confirms that the requester knows that she or he will be charged for the + // request. Bucket owners need not specify this parameter in their requests. + // Documentation on downloading objects from requester pays buckets can be found + // at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` + + // Specifies the algorithm to use to when encrypting the object (e.g., AES256). + SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"` + + // Specifies the customer-provided encryption key for Amazon S3 to use in encrypting + // data. This value is used to store the object and then it is discarded; Amazon + // does not store the encryption key. The key must be appropriate for use with + // the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm + // header. + SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"` + + // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. + // Amazon S3 uses this header for a message integrity check to ensure the encryption + // key was transmitted without error. + SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"` + + // Specifies the AWS KMS Encryption Context to use for object encryption. The + // value of this header is a base64-encoded UTF-8 string holding JSON with the + // encryption context key-value pairs. + SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"` + + // Specifies the AWS KMS key ID to use for object encryption. All GET and PUT + // requests for an object protected by AWS KMS will fail if not made via SSL + // or using SigV4. Documentation on configuring any of the officially supported + // AWS SDKs and CLI can be found at http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version + SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"` + + // The Server-side encryption algorithm used when storing this object in S3 + // (e.g., AES256, aws:kms). + ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"` + + // The type of storage to use for the object. Defaults to 'STANDARD'. + StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"` + + // The tag-set for the object. The tag-set must be encoded as URL Query parameters + Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"` + + // If the bucket is configured as a website, redirects requests for this object + // to another object in the same bucket or to an external URL. Amazon S3 stores + // the value of this header in the object metadata. + WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"` +} + +// String returns the string representation +func (s CreateMultipartUploadInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateMultipartUploadInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateMultipartUploadInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateMultipartUploadInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetACL sets the ACL field's value. +func (s *CreateMultipartUploadInput) SetACL(v string) *CreateMultipartUploadInput { + s.ACL = &v + return s +} + +// SetBucket sets the Bucket field's value. +func (s *CreateMultipartUploadInput) SetBucket(v string) *CreateMultipartUploadInput { + s.Bucket = &v + return s +} + +func (s *CreateMultipartUploadInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetCacheControl sets the CacheControl field's value. +func (s *CreateMultipartUploadInput) SetCacheControl(v string) *CreateMultipartUploadInput { + s.CacheControl = &v + return s +} + +// SetContentDisposition sets the ContentDisposition field's value. +func (s *CreateMultipartUploadInput) SetContentDisposition(v string) *CreateMultipartUploadInput { + s.ContentDisposition = &v + return s +} + +// SetContentEncoding sets the ContentEncoding field's value. +func (s *CreateMultipartUploadInput) SetContentEncoding(v string) *CreateMultipartUploadInput { + s.ContentEncoding = &v + return s +} + +// SetContentLanguage sets the ContentLanguage field's value. +func (s *CreateMultipartUploadInput) SetContentLanguage(v string) *CreateMultipartUploadInput { + s.ContentLanguage = &v + return s +} + +// SetContentType sets the ContentType field's value. +func (s *CreateMultipartUploadInput) SetContentType(v string) *CreateMultipartUploadInput { + s.ContentType = &v + return s +} + +// SetExpires sets the Expires field's value. +func (s *CreateMultipartUploadInput) SetExpires(v time.Time) *CreateMultipartUploadInput { + s.Expires = &v + return s +} + +// SetGrantFullControl sets the GrantFullControl field's value. +func (s *CreateMultipartUploadInput) SetGrantFullControl(v string) *CreateMultipartUploadInput { + s.GrantFullControl = &v + return s +} + +// SetGrantRead sets the GrantRead field's value. +func (s *CreateMultipartUploadInput) SetGrantRead(v string) *CreateMultipartUploadInput { + s.GrantRead = &v + return s +} + +// SetGrantReadACP sets the GrantReadACP field's value. +func (s *CreateMultipartUploadInput) SetGrantReadACP(v string) *CreateMultipartUploadInput { + s.GrantReadACP = &v + return s +} + +// SetGrantWriteACP sets the GrantWriteACP field's value. +func (s *CreateMultipartUploadInput) SetGrantWriteACP(v string) *CreateMultipartUploadInput { + s.GrantWriteACP = &v + return s +} + +// SetKey sets the Key field's value. +func (s *CreateMultipartUploadInput) SetKey(v string) *CreateMultipartUploadInput { + s.Key = &v + return s +} + +// SetMetadata sets the Metadata field's value. +func (s *CreateMultipartUploadInput) SetMetadata(v map[string]*string) *CreateMultipartUploadInput { + s.Metadata = v + return s +} + +// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value. +func (s *CreateMultipartUploadInput) SetObjectLockLegalHoldStatus(v string) *CreateMultipartUploadInput { + s.ObjectLockLegalHoldStatus = &v + return s +} + +// SetObjectLockMode sets the ObjectLockMode field's value. +func (s *CreateMultipartUploadInput) SetObjectLockMode(v string) *CreateMultipartUploadInput { + s.ObjectLockMode = &v + return s +} + +// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value. +func (s *CreateMultipartUploadInput) SetObjectLockRetainUntilDate(v time.Time) *CreateMultipartUploadInput { + s.ObjectLockRetainUntilDate = &v + return s +} + +// SetRequestPayer sets the RequestPayer field's value. +func (s *CreateMultipartUploadInput) SetRequestPayer(v string) *CreateMultipartUploadInput { + s.RequestPayer = &v + return s +} + +// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value. +func (s *CreateMultipartUploadInput) SetSSECustomerAlgorithm(v string) *CreateMultipartUploadInput { + s.SSECustomerAlgorithm = &v + return s +} + +// SetSSECustomerKey sets the SSECustomerKey field's value. +func (s *CreateMultipartUploadInput) SetSSECustomerKey(v string) *CreateMultipartUploadInput { + s.SSECustomerKey = &v + return s +} + +func (s *CreateMultipartUploadInput) getSSECustomerKey() (v string) { + if s.SSECustomerKey == nil { + return v + } + return *s.SSECustomerKey +} + +// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value. +func (s *CreateMultipartUploadInput) SetSSECustomerKeyMD5(v string) *CreateMultipartUploadInput { + s.SSECustomerKeyMD5 = &v + return s +} + +// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value. +func (s *CreateMultipartUploadInput) SetSSEKMSEncryptionContext(v string) *CreateMultipartUploadInput { + s.SSEKMSEncryptionContext = &v + return s +} + +// SetSSEKMSKeyId sets the SSEKMSKeyId field's value. +func (s *CreateMultipartUploadInput) SetSSEKMSKeyId(v string) *CreateMultipartUploadInput { + s.SSEKMSKeyId = &v + return s +} + +// SetServerSideEncryption sets the ServerSideEncryption field's value. +func (s *CreateMultipartUploadInput) SetServerSideEncryption(v string) *CreateMultipartUploadInput { + s.ServerSideEncryption = &v + return s +} + +// SetStorageClass sets the StorageClass field's value. +func (s *CreateMultipartUploadInput) SetStorageClass(v string) *CreateMultipartUploadInput { + s.StorageClass = &v + return s +} + +// SetTagging sets the Tagging field's value. +func (s *CreateMultipartUploadInput) SetTagging(v string) *CreateMultipartUploadInput { + s.Tagging = &v + return s +} + +// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value. +func (s *CreateMultipartUploadInput) SetWebsiteRedirectLocation(v string) *CreateMultipartUploadInput { + s.WebsiteRedirectLocation = &v + return s +} + +type CreateMultipartUploadOutput struct { + _ struct{} `type:"structure"` + + // If the bucket has a lifecycle rule configured with an action to abort incomplete + // multipart uploads and the prefix in the lifecycle rule matches the object + // name in the request, the response includes this header. The header indicates + // when the initiated multipart upload becomes eligible for an abort operation. + // For more information, see Aborting Incomplete Multipart Uploads Using a Bucket + // Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config). + // + // The response also includes the x-amz-abort-rule-id header that provides the + // ID of the lifecycle configuration rule that defines this action. + AbortDate *time.Time `location:"header" locationName:"x-amz-abort-date" type:"timestamp"` + + // This header is returned along with the x-amz-abort-date header. It identifies + // the applicable lifecycle configuration rule that defines the action to abort + // incomplete multipart uploads. + AbortRuleId *string `location:"header" locationName:"x-amz-abort-rule-id" type:"string"` + + // Name of the bucket to which the multipart upload was initiated. + Bucket *string `locationName:"Bucket" type:"string"` + + // Object key for which the multipart upload was initiated. + Key *string `min:"1" type:"string"` + + // If present, indicates that the requester was successfully charged for the + // request. + RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"` + + // If server-side encryption with a customer-provided encryption key was requested, + // the response will include this header confirming the encryption algorithm + // used. + SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"` + + // If server-side encryption with a customer-provided encryption key was requested, + // the response will include this header to provide round trip message integrity + // verification of the customer-provided encryption key. + SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"` + + // If present, specifies the AWS KMS Encryption Context to use for object encryption. + // The value of this header is a base64-encoded UTF-8 string holding JSON with + // the encryption context key-value pairs. + SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"` + + // If present, specifies the ID of the AWS Key Management Service (KMS) customer + // master key (CMK) that was used for the object. + SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"` + + // The Server-side encryption algorithm used when storing this object in S3 + // (e.g., AES256, aws:kms). + ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"` + + // ID for the initiated multipart upload. + UploadId *string `type:"string"` +} + +// String returns the string representation +func (s CreateMultipartUploadOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateMultipartUploadOutput) GoString() string { + return s.String() +} + +// SetAbortDate sets the AbortDate field's value. +func (s *CreateMultipartUploadOutput) SetAbortDate(v time.Time) *CreateMultipartUploadOutput { + s.AbortDate = &v + return s +} + +// SetAbortRuleId sets the AbortRuleId field's value. +func (s *CreateMultipartUploadOutput) SetAbortRuleId(v string) *CreateMultipartUploadOutput { + s.AbortRuleId = &v + return s +} + +// SetBucket sets the Bucket field's value. +func (s *CreateMultipartUploadOutput) SetBucket(v string) *CreateMultipartUploadOutput { + s.Bucket = &v + return s +} + +func (s *CreateMultipartUploadOutput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetKey sets the Key field's value. +func (s *CreateMultipartUploadOutput) SetKey(v string) *CreateMultipartUploadOutput { + s.Key = &v + return s +} + +// SetRequestCharged sets the RequestCharged field's value. +func (s *CreateMultipartUploadOutput) SetRequestCharged(v string) *CreateMultipartUploadOutput { + s.RequestCharged = &v + return s +} + +// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value. +func (s *CreateMultipartUploadOutput) SetSSECustomerAlgorithm(v string) *CreateMultipartUploadOutput { + s.SSECustomerAlgorithm = &v + return s +} + +// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value. +func (s *CreateMultipartUploadOutput) SetSSECustomerKeyMD5(v string) *CreateMultipartUploadOutput { + s.SSECustomerKeyMD5 = &v + return s +} + +// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value. +func (s *CreateMultipartUploadOutput) SetSSEKMSEncryptionContext(v string) *CreateMultipartUploadOutput { + s.SSEKMSEncryptionContext = &v + return s +} + +// SetSSEKMSKeyId sets the SSEKMSKeyId field's value. +func (s *CreateMultipartUploadOutput) SetSSEKMSKeyId(v string) *CreateMultipartUploadOutput { + s.SSEKMSKeyId = &v + return s +} + +// SetServerSideEncryption sets the ServerSideEncryption field's value. +func (s *CreateMultipartUploadOutput) SetServerSideEncryption(v string) *CreateMultipartUploadOutput { + s.ServerSideEncryption = &v + return s +} + +// SetUploadId sets the UploadId field's value. +func (s *CreateMultipartUploadOutput) SetUploadId(v string) *CreateMultipartUploadOutput { + s.UploadId = &v + return s +} + +// The container element for specifying the default Object Lock retention settings +// for new objects placed in the specified bucket. +type DefaultRetention struct { + _ struct{} `type:"structure"` + + // The number of days that you want to specify for the default retention period. + Days *int64 `type:"integer"` + + // The default Object Lock retention mode you want to apply to new objects placed + // in the specified bucket. + Mode *string `type:"string" enum:"ObjectLockRetentionMode"` + + // The number of years that you want to specify for the default retention period. + Years *int64 `type:"integer"` +} + +// String returns the string representation +func (s DefaultRetention) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DefaultRetention) GoString() string { + return s.String() +} + +// SetDays sets the Days field's value. +func (s *DefaultRetention) SetDays(v int64) *DefaultRetention { + s.Days = &v + return s +} + +// SetMode sets the Mode field's value. +func (s *DefaultRetention) SetMode(v string) *DefaultRetention { + s.Mode = &v + return s +} + +// SetYears sets the Years field's value. +func (s *DefaultRetention) SetYears(v int64) *DefaultRetention { + s.Years = &v + return s +} + +// Container for the objects to delete. +type Delete struct { + _ struct{} `type:"structure"` + + // The objects to delete. + // + // Objects is a required field + Objects []*ObjectIdentifier `locationName:"Object" type:"list" flattened:"true" required:"true"` + + // Element to enable quiet mode for the request. When you add this element, + // you must set its value to true. + Quiet *bool `type:"boolean"` +} + +// String returns the string representation +func (s Delete) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Delete) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *Delete) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "Delete"} + if s.Objects == nil { + invalidParams.Add(request.NewErrParamRequired("Objects")) + } + if s.Objects != nil { + for i, v := range s.Objects { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Objects", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetObjects sets the Objects field's value. +func (s *Delete) SetObjects(v []*ObjectIdentifier) *Delete { + s.Objects = v + return s +} + +// SetQuiet sets the Quiet field's value. +func (s *Delete) SetQuiet(v bool) *Delete { + s.Quiet = &v + return s +} + +type DeleteBucketAnalyticsConfigurationInput struct { + _ struct{} `locationName:"DeleteBucketAnalyticsConfigurationRequest" type:"structure"` + + // The name of the bucket from which an analytics configuration is deleted. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // The ID that identifies the analytics configuration. + // + // Id is a required field + Id *string `location:"querystring" locationName:"id" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteBucketAnalyticsConfigurationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteBucketAnalyticsConfigurationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteBucketAnalyticsConfigurationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteBucketAnalyticsConfigurationInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Id == nil { + invalidParams.Add(request.NewErrParamRequired("Id")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *DeleteBucketAnalyticsConfigurationInput) SetBucket(v string) *DeleteBucketAnalyticsConfigurationInput { + s.Bucket = &v + return s +} + +func (s *DeleteBucketAnalyticsConfigurationInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetId sets the Id field's value. +func (s *DeleteBucketAnalyticsConfigurationInput) SetId(v string) *DeleteBucketAnalyticsConfigurationInput { + s.Id = &v + return s +} + +type DeleteBucketAnalyticsConfigurationOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteBucketAnalyticsConfigurationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteBucketAnalyticsConfigurationOutput) GoString() string { + return s.String() +} + +type DeleteBucketCorsInput struct { + _ struct{} `locationName:"DeleteBucketCorsRequest" type:"structure"` + + // Specifies the bucket whose cors configuration is being deleted. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteBucketCorsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteBucketCorsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteBucketCorsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteBucketCorsInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *DeleteBucketCorsInput) SetBucket(v string) *DeleteBucketCorsInput { + s.Bucket = &v + return s +} + +func (s *DeleteBucketCorsInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type DeleteBucketCorsOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteBucketCorsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteBucketCorsOutput) GoString() string { + return s.String() +} + +type DeleteBucketEncryptionInput struct { + _ struct{} `locationName:"DeleteBucketEncryptionRequest" type:"structure"` + + // The name of the bucket containing the server-side encryption configuration + // to delete. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteBucketEncryptionInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteBucketEncryptionInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteBucketEncryptionInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteBucketEncryptionInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *DeleteBucketEncryptionInput) SetBucket(v string) *DeleteBucketEncryptionInput { + s.Bucket = &v + return s +} + +func (s *DeleteBucketEncryptionInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type DeleteBucketEncryptionOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteBucketEncryptionOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteBucketEncryptionOutput) GoString() string { + return s.String() +} + +type DeleteBucketInput struct { + _ struct{} `locationName:"DeleteBucketRequest" type:"structure"` + + // Specifies the bucket being deleted. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteBucketInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteBucketInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteBucketInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteBucketInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *DeleteBucketInput) SetBucket(v string) *DeleteBucketInput { + s.Bucket = &v + return s +} + +func (s *DeleteBucketInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type DeleteBucketInventoryConfigurationInput struct { + _ struct{} `locationName:"DeleteBucketInventoryConfigurationRequest" type:"structure"` + + // The name of the bucket containing the inventory configuration to delete. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // The ID used to identify the inventory configuration. + // + // Id is a required field + Id *string `location:"querystring" locationName:"id" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteBucketInventoryConfigurationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteBucketInventoryConfigurationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteBucketInventoryConfigurationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteBucketInventoryConfigurationInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Id == nil { + invalidParams.Add(request.NewErrParamRequired("Id")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *DeleteBucketInventoryConfigurationInput) SetBucket(v string) *DeleteBucketInventoryConfigurationInput { + s.Bucket = &v + return s +} + +func (s *DeleteBucketInventoryConfigurationInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetId sets the Id field's value. +func (s *DeleteBucketInventoryConfigurationInput) SetId(v string) *DeleteBucketInventoryConfigurationInput { + s.Id = &v + return s +} + +type DeleteBucketInventoryConfigurationOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteBucketInventoryConfigurationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteBucketInventoryConfigurationOutput) GoString() string { + return s.String() +} + +type DeleteBucketLifecycleInput struct { + _ struct{} `locationName:"DeleteBucketLifecycleRequest" type:"structure"` + + // The bucket name of the lifecycle to delete. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteBucketLifecycleInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteBucketLifecycleInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteBucketLifecycleInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteBucketLifecycleInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *DeleteBucketLifecycleInput) SetBucket(v string) *DeleteBucketLifecycleInput { + s.Bucket = &v + return s +} + +func (s *DeleteBucketLifecycleInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type DeleteBucketLifecycleOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteBucketLifecycleOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteBucketLifecycleOutput) GoString() string { + return s.String() +} + +type DeleteBucketMetricsConfigurationInput struct { + _ struct{} `locationName:"DeleteBucketMetricsConfigurationRequest" type:"structure"` + + // The name of the bucket containing the metrics configuration to delete. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // The ID used to identify the metrics configuration. + // + // Id is a required field + Id *string `location:"querystring" locationName:"id" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteBucketMetricsConfigurationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteBucketMetricsConfigurationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteBucketMetricsConfigurationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteBucketMetricsConfigurationInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Id == nil { + invalidParams.Add(request.NewErrParamRequired("Id")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *DeleteBucketMetricsConfigurationInput) SetBucket(v string) *DeleteBucketMetricsConfigurationInput { + s.Bucket = &v + return s +} + +func (s *DeleteBucketMetricsConfigurationInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetId sets the Id field's value. +func (s *DeleteBucketMetricsConfigurationInput) SetId(v string) *DeleteBucketMetricsConfigurationInput { + s.Id = &v + return s +} + +type DeleteBucketMetricsConfigurationOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteBucketMetricsConfigurationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteBucketMetricsConfigurationOutput) GoString() string { + return s.String() +} + +type DeleteBucketOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteBucketOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteBucketOutput) GoString() string { + return s.String() +} + +type DeleteBucketPolicyInput struct { + _ struct{} `locationName:"DeleteBucketPolicyRequest" type:"structure"` + + // The bucket name. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteBucketPolicyInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteBucketPolicyInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteBucketPolicyInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteBucketPolicyInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *DeleteBucketPolicyInput) SetBucket(v string) *DeleteBucketPolicyInput { + s.Bucket = &v + return s +} + +func (s *DeleteBucketPolicyInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type DeleteBucketPolicyOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteBucketPolicyOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteBucketPolicyOutput) GoString() string { + return s.String() +} + +type DeleteBucketReplicationInput struct { + _ struct{} `locationName:"DeleteBucketReplicationRequest" type:"structure"` + + // The bucket name. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteBucketReplicationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteBucketReplicationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteBucketReplicationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteBucketReplicationInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *DeleteBucketReplicationInput) SetBucket(v string) *DeleteBucketReplicationInput { + s.Bucket = &v + return s +} + +func (s *DeleteBucketReplicationInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type DeleteBucketReplicationOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteBucketReplicationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteBucketReplicationOutput) GoString() string { + return s.String() +} + +type DeleteBucketTaggingInput struct { + _ struct{} `locationName:"DeleteBucketTaggingRequest" type:"structure"` + + // The bucket that has the tag set to be removed. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteBucketTaggingInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteBucketTaggingInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteBucketTaggingInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteBucketTaggingInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *DeleteBucketTaggingInput) SetBucket(v string) *DeleteBucketTaggingInput { + s.Bucket = &v + return s +} + +func (s *DeleteBucketTaggingInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type DeleteBucketTaggingOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteBucketTaggingOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteBucketTaggingOutput) GoString() string { + return s.String() +} + +type DeleteBucketWebsiteInput struct { + _ struct{} `locationName:"DeleteBucketWebsiteRequest" type:"structure"` + + // The bucket name for which you want to remove the website configuration. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteBucketWebsiteInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteBucketWebsiteInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteBucketWebsiteInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteBucketWebsiteInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *DeleteBucketWebsiteInput) SetBucket(v string) *DeleteBucketWebsiteInput { + s.Bucket = &v + return s +} + +func (s *DeleteBucketWebsiteInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type DeleteBucketWebsiteOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteBucketWebsiteOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteBucketWebsiteOutput) GoString() string { + return s.String() +} + +// Information about the delete marker. +type DeleteMarkerEntry struct { + _ struct{} `type:"structure"` + + // Specifies whether the object is (true) or is not (false) the latest version + // of an object. + IsLatest *bool `type:"boolean"` + + // The object key. + Key *string `min:"1" type:"string"` + + // Date and time the object was last modified. + LastModified *time.Time `type:"timestamp"` + + // The account that created the delete marker.> + Owner *Owner `type:"structure"` + + // Version ID of an object. + VersionId *string `type:"string"` +} + +// String returns the string representation +func (s DeleteMarkerEntry) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteMarkerEntry) GoString() string { + return s.String() +} + +// SetIsLatest sets the IsLatest field's value. +func (s *DeleteMarkerEntry) SetIsLatest(v bool) *DeleteMarkerEntry { + s.IsLatest = &v + return s +} + +// SetKey sets the Key field's value. +func (s *DeleteMarkerEntry) SetKey(v string) *DeleteMarkerEntry { + s.Key = &v + return s +} + +// SetLastModified sets the LastModified field's value. +func (s *DeleteMarkerEntry) SetLastModified(v time.Time) *DeleteMarkerEntry { + s.LastModified = &v + return s +} + +// SetOwner sets the Owner field's value. +func (s *DeleteMarkerEntry) SetOwner(v *Owner) *DeleteMarkerEntry { + s.Owner = v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *DeleteMarkerEntry) SetVersionId(v string) *DeleteMarkerEntry { + s.VersionId = &v + return s +} + +// Specifies whether Amazon S3 replicates the delete markers. If you specify +// a Filter, you must specify this element. However, in the latest version of +// replication configuration (when Filter is specified), Amazon S3 doesn't replicate +// delete markers. Therefore, the DeleteMarkerReplication element can contain +// only Disabled. For an example configuration, see Basic Rule +// Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-config-min-rule-config). +// +// If you don't specify the Filter element, Amazon S3 assumes the replication +// configuration is the earlier version, V1. In the earlier version, Amazon +// S3 handled replication of delete markers differently. For more information, +// see Backward Compatibility (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations). +type DeleteMarkerReplication struct { + _ struct{} `type:"structure"` + + // Indicates whether to replicate delete markers. + // + // In the current implementation, Amazon S3 doesn't replicate the delete markers. + // The status must be Disabled. + Status *string `type:"string" enum:"DeleteMarkerReplicationStatus"` +} + +// String returns the string representation +func (s DeleteMarkerReplication) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteMarkerReplication) GoString() string { + return s.String() +} + +// SetStatus sets the Status field's value. +func (s *DeleteMarkerReplication) SetStatus(v string) *DeleteMarkerReplication { + s.Status = &v + return s +} + +type DeleteObjectInput struct { + _ struct{} `locationName:"DeleteObjectRequest" type:"structure"` + + // The bucket name of the bucket containing the object. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Indicates whether S3 Object Lock should bypass Governance-mode restrictions + // to process this operation. + BypassGovernanceRetention *bool `location:"header" locationName:"x-amz-bypass-governance-retention" type:"boolean"` + + // Key name of the object to delete. + // + // Key is a required field + Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + + // The concatenation of the authentication device's serial number, a space, + // and the value that is displayed on your authentication device. Required to + // permanently delete a versionedobject if versioning is configured with MFA + // Deleteenabled. + MFA *string `location:"header" locationName:"x-amz-mfa" type:"string"` + + // Confirms that the requester knows that she or he will be charged for the + // request. Bucket owners need not specify this parameter in their requests. + // Documentation on downloading objects from requester pays buckets can be found + // at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` + + // VersionId used to reference a specific version of the object. + VersionId *string `location:"querystring" locationName:"versionId" type:"string"` +} + +// String returns the string representation +func (s DeleteObjectInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteObjectInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteObjectInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteObjectInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *DeleteObjectInput) SetBucket(v string) *DeleteObjectInput { + s.Bucket = &v + return s +} + +func (s *DeleteObjectInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetBypassGovernanceRetention sets the BypassGovernanceRetention field's value. +func (s *DeleteObjectInput) SetBypassGovernanceRetention(v bool) *DeleteObjectInput { + s.BypassGovernanceRetention = &v + return s +} + +// SetKey sets the Key field's value. +func (s *DeleteObjectInput) SetKey(v string) *DeleteObjectInput { + s.Key = &v + return s +} + +// SetMFA sets the MFA field's value. +func (s *DeleteObjectInput) SetMFA(v string) *DeleteObjectInput { + s.MFA = &v + return s +} + +// SetRequestPayer sets the RequestPayer field's value. +func (s *DeleteObjectInput) SetRequestPayer(v string) *DeleteObjectInput { + s.RequestPayer = &v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *DeleteObjectInput) SetVersionId(v string) *DeleteObjectInput { + s.VersionId = &v + return s +} + +type DeleteObjectOutput struct { + _ struct{} `type:"structure"` + + // Specifies whether the versioned object that was permanently deleted was (true) + // or was not (false) a delete marker. + DeleteMarker *bool `location:"header" locationName:"x-amz-delete-marker" type:"boolean"` + + // If present, indicates that the requester was successfully charged for the + // request. + RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"` + + // Returns the version ID of the delete marker created as a result of the DELETE + // operation. + VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"` +} + +// String returns the string representation +func (s DeleteObjectOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteObjectOutput) GoString() string { + return s.String() +} + +// SetDeleteMarker sets the DeleteMarker field's value. +func (s *DeleteObjectOutput) SetDeleteMarker(v bool) *DeleteObjectOutput { + s.DeleteMarker = &v + return s +} + +// SetRequestCharged sets the RequestCharged field's value. +func (s *DeleteObjectOutput) SetRequestCharged(v string) *DeleteObjectOutput { + s.RequestCharged = &v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *DeleteObjectOutput) SetVersionId(v string) *DeleteObjectOutput { + s.VersionId = &v + return s +} + +type DeleteObjectTaggingInput struct { + _ struct{} `locationName:"DeleteObjectTaggingRequest" type:"structure"` + + // The bucket containing the objects from which to remove the tags. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Name of the tag. + // + // Key is a required field + Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + + // The versionId of the object that the tag-set will be removed from. + VersionId *string `location:"querystring" locationName:"versionId" type:"string"` +} + +// String returns the string representation +func (s DeleteObjectTaggingInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteObjectTaggingInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteObjectTaggingInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteObjectTaggingInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *DeleteObjectTaggingInput) SetBucket(v string) *DeleteObjectTaggingInput { + s.Bucket = &v + return s +} + +func (s *DeleteObjectTaggingInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetKey sets the Key field's value. +func (s *DeleteObjectTaggingInput) SetKey(v string) *DeleteObjectTaggingInput { + s.Key = &v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *DeleteObjectTaggingInput) SetVersionId(v string) *DeleteObjectTaggingInput { + s.VersionId = &v + return s +} + +type DeleteObjectTaggingOutput struct { + _ struct{} `type:"structure"` + + // The versionId of the object the tag-set was removed from. + VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"` +} + +// String returns the string representation +func (s DeleteObjectTaggingOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteObjectTaggingOutput) GoString() string { + return s.String() +} + +// SetVersionId sets the VersionId field's value. +func (s *DeleteObjectTaggingOutput) SetVersionId(v string) *DeleteObjectTaggingOutput { + s.VersionId = &v + return s +} + +type DeleteObjectsInput struct { + _ struct{} `locationName:"DeleteObjectsRequest" type:"structure" payload:"Delete"` + + // The bucket name containing the objects to delete. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Specifies whether you want to delete this object even if it has a Governance-type + // Object Lock in place. You must have sufficient permissions to perform this + // operation. + BypassGovernanceRetention *bool `location:"header" locationName:"x-amz-bypass-governance-retention" type:"boolean"` + + // Container for the request. + // + // Delete is a required field + Delete *Delete `locationName:"Delete" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` + + // The concatenation of the authentication device's serial number, a space, + // and the value that is displayed on your authentication device. Required to + // permanently delete a versioned object if versioning is configured with MFA + // Delete enabled. + MFA *string `location:"header" locationName:"x-amz-mfa" type:"string"` + + // Confirms that the requester knows that she or he will be charged for the + // request. Bucket owners need not specify this parameter in their requests. + // Documentation on downloading objects from requester pays buckets can be found + // at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` +} + +// String returns the string representation +func (s DeleteObjectsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteObjectsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteObjectsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteObjectsInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Delete == nil { + invalidParams.Add(request.NewErrParamRequired("Delete")) + } + if s.Delete != nil { + if err := s.Delete.Validate(); err != nil { + invalidParams.AddNested("Delete", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *DeleteObjectsInput) SetBucket(v string) *DeleteObjectsInput { + s.Bucket = &v + return s +} + +func (s *DeleteObjectsInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetBypassGovernanceRetention sets the BypassGovernanceRetention field's value. +func (s *DeleteObjectsInput) SetBypassGovernanceRetention(v bool) *DeleteObjectsInput { + s.BypassGovernanceRetention = &v + return s +} + +// SetDelete sets the Delete field's value. +func (s *DeleteObjectsInput) SetDelete(v *Delete) *DeleteObjectsInput { + s.Delete = v + return s +} + +// SetMFA sets the MFA field's value. +func (s *DeleteObjectsInput) SetMFA(v string) *DeleteObjectsInput { + s.MFA = &v + return s +} + +// SetRequestPayer sets the RequestPayer field's value. +func (s *DeleteObjectsInput) SetRequestPayer(v string) *DeleteObjectsInput { + s.RequestPayer = &v + return s +} + +type DeleteObjectsOutput struct { + _ struct{} `type:"structure"` + + // Container element for a successful delete. It identifies the object that + // was successfully deleted. + Deleted []*DeletedObject `type:"list" flattened:"true"` + + // Container for a failed delete operation that describes the object that Amazon + // S3 attempted to delete and the error it encountered. + Errors []*Error `locationName:"Error" type:"list" flattened:"true"` + + // If present, indicates that the requester was successfully charged for the + // request. + RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"` +} + +// String returns the string representation +func (s DeleteObjectsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteObjectsOutput) GoString() string { + return s.String() +} + +// SetDeleted sets the Deleted field's value. +func (s *DeleteObjectsOutput) SetDeleted(v []*DeletedObject) *DeleteObjectsOutput { + s.Deleted = v + return s +} + +// SetErrors sets the Errors field's value. +func (s *DeleteObjectsOutput) SetErrors(v []*Error) *DeleteObjectsOutput { + s.Errors = v + return s +} + +// SetRequestCharged sets the RequestCharged field's value. +func (s *DeleteObjectsOutput) SetRequestCharged(v string) *DeleteObjectsOutput { + s.RequestCharged = &v + return s +} + +type DeletePublicAccessBlockInput struct { + _ struct{} `locationName:"DeletePublicAccessBlockRequest" type:"structure"` + + // The Amazon S3 bucket whose PublicAccessBlock configuration you want to delete. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeletePublicAccessBlockInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeletePublicAccessBlockInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeletePublicAccessBlockInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeletePublicAccessBlockInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *DeletePublicAccessBlockInput) SetBucket(v string) *DeletePublicAccessBlockInput { + s.Bucket = &v + return s +} + +func (s *DeletePublicAccessBlockInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type DeletePublicAccessBlockOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeletePublicAccessBlockOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeletePublicAccessBlockOutput) GoString() string { + return s.String() +} + +// Information about the deleted object. +type DeletedObject struct { + _ struct{} `type:"structure"` + + // Specifies whether the versioned object that was permanently deleted was (true) + // or was not (false) a delete marker. In a simple DELETE, this header indicates + // whether (true) or not (false) a delete marker was created. + DeleteMarker *bool `type:"boolean"` + + // The version ID of the delete marker created as a result of the DELETE operation. + // If you delete a specific object version, the value returned by this header + // is the version ID of the object version deleted. + DeleteMarkerVersionId *string `type:"string"` + + // The name of the deleted object. + Key *string `min:"1" type:"string"` + + // The version ID of the deleted object. + VersionId *string `type:"string"` +} + +// String returns the string representation +func (s DeletedObject) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeletedObject) GoString() string { + return s.String() +} + +// SetDeleteMarker sets the DeleteMarker field's value. +func (s *DeletedObject) SetDeleteMarker(v bool) *DeletedObject { + s.DeleteMarker = &v + return s +} + +// SetDeleteMarkerVersionId sets the DeleteMarkerVersionId field's value. +func (s *DeletedObject) SetDeleteMarkerVersionId(v string) *DeletedObject { + s.DeleteMarkerVersionId = &v + return s +} + +// SetKey sets the Key field's value. +func (s *DeletedObject) SetKey(v string) *DeletedObject { + s.Key = &v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *DeletedObject) SetVersionId(v string) *DeletedObject { + s.VersionId = &v + return s +} + +// Specifies information about where to publish analysis or configuration results +// for an Amazon S3 bucket. +type Destination struct { + _ struct{} `type:"structure"` + + // Specify this only in a cross-account scenario (where source and destination + // bucket owners are not the same), and you want to change replica ownership + // to the AWS account that owns the destination bucket. If this is not specified + // in the replication configuration, the replicas are owned by same AWS account + // that owns the source object. + AccessControlTranslation *AccessControlTranslation `type:"structure"` + + // Destination bucket owner account ID. In a cross-account scenario, if you + // direct Amazon S3 to change replica ownership to the AWS account that owns + // the destination bucket by specifying the AccessControlTranslation property, + // this is the account ID of the destination bucket owner. For more information, + // see Replication Additional Configuration: Change Replica Owner (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-change-owner.html) + // in the Amazon Simple Storage Service Developer Guide. + Account *string `type:"string"` + + // The Amazon Resource Name (ARN) of the bucket where you want Amazon S3 to + // store the results. + // + // Bucket is a required field + Bucket *string `type:"string" required:"true"` + + // A container that provides information about encryption. If SourceSelectionCriteria + // is specified, you must specify this element. + EncryptionConfiguration *EncryptionConfiguration `type:"structure"` + + // The storage class to use when replicating objects, such as standard or reduced + // redundancy. By default, Amazon S3 uses the storage class of the source object + // to create the object replica. + // + // For valid values, see the StorageClass element of the PUT Bucket replication + // (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html) + // action in the Amazon Simple Storage Service API Reference. + StorageClass *string `type:"string" enum:"StorageClass"` +} + +// String returns the string representation +func (s Destination) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Destination) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *Destination) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "Destination"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.AccessControlTranslation != nil { + if err := s.AccessControlTranslation.Validate(); err != nil { + invalidParams.AddNested("AccessControlTranslation", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAccessControlTranslation sets the AccessControlTranslation field's value. +func (s *Destination) SetAccessControlTranslation(v *AccessControlTranslation) *Destination { + s.AccessControlTranslation = v + return s +} + +// SetAccount sets the Account field's value. +func (s *Destination) SetAccount(v string) *Destination { + s.Account = &v + return s +} + +// SetBucket sets the Bucket field's value. +func (s *Destination) SetBucket(v string) *Destination { + s.Bucket = &v + return s +} + +func (s *Destination) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetEncryptionConfiguration sets the EncryptionConfiguration field's value. +func (s *Destination) SetEncryptionConfiguration(v *EncryptionConfiguration) *Destination { + s.EncryptionConfiguration = v + return s +} + +// SetStorageClass sets the StorageClass field's value. +func (s *Destination) SetStorageClass(v string) *Destination { + s.StorageClass = &v + return s +} + +// Contains the type of server-side encryption used. +type Encryption struct { + _ struct{} `type:"structure"` + + // The server-side encryption algorithm used when storing job results in Amazon + // S3 (e.g., AES256, aws:kms). + // + // EncryptionType is a required field + EncryptionType *string `type:"string" required:"true" enum:"ServerSideEncryption"` + + // If the encryption type is aws:kms, this optional value can be used to specify + // the encryption context for the restore results. + KMSContext *string `type:"string"` + + // If the encryption type is aws:kms, this optional value specifies the AWS + // KMS key ID to use for encryption of job results. + KMSKeyId *string `type:"string" sensitive:"true"` +} + +// String returns the string representation +func (s Encryption) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Encryption) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *Encryption) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "Encryption"} + if s.EncryptionType == nil { + invalidParams.Add(request.NewErrParamRequired("EncryptionType")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetEncryptionType sets the EncryptionType field's value. +func (s *Encryption) SetEncryptionType(v string) *Encryption { + s.EncryptionType = &v + return s +} + +// SetKMSContext sets the KMSContext field's value. +func (s *Encryption) SetKMSContext(v string) *Encryption { + s.KMSContext = &v + return s +} + +// SetKMSKeyId sets the KMSKeyId field's value. +func (s *Encryption) SetKMSKeyId(v string) *Encryption { + s.KMSKeyId = &v + return s +} + +// Specifies encryption-related information for an Amazon S3 bucket that is +// a destination for replicated objects. +type EncryptionConfiguration struct { + _ struct{} `type:"structure"` + + // Specifies the AWS KMS Key ID (Key ARN or Alias ARN) for the destination bucket. + // Amazon S3 uses this key to encrypt replica objects. + ReplicaKmsKeyID *string `type:"string"` +} + +// String returns the string representation +func (s EncryptionConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EncryptionConfiguration) GoString() string { + return s.String() +} + +// SetReplicaKmsKeyID sets the ReplicaKmsKeyID field's value. +func (s *EncryptionConfiguration) SetReplicaKmsKeyID(v string) *EncryptionConfiguration { + s.ReplicaKmsKeyID = &v + return s +} + +// A message that indicates the request is complete and no more messages will +// be sent. You should not assume that the request is complete until the client +// receives an EndEvent. +type EndEvent struct { + _ struct{} `locationName:"EndEvent" type:"structure"` +} + +// String returns the string representation +func (s EndEvent) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EndEvent) GoString() string { + return s.String() +} + +// The EndEvent is and event in the SelectObjectContentEventStream group of events. +func (s *EndEvent) eventSelectObjectContentEventStream() {} + +// UnmarshalEvent unmarshals the EventStream Message into the EndEvent value. +// This method is only used internally within the SDK's EventStream handling. +func (s *EndEvent) UnmarshalEvent( + payloadUnmarshaler protocol.PayloadUnmarshaler, + msg eventstream.Message, +) error { + return nil +} + +// Container for all error elements. +type Error struct { + _ struct{} `type:"structure"` + + // The error code is a string that uniquely identifies an error condition. It + // is meant to be read and understood by programs that detect and handle errors + // by type. + // + // Amazon S3 error codes + // + // * Code: AccessDenied Description: Access Denied HTTP Status Code: 403 + // Forbidden SOAP Fault Code Prefix: Client + // + // * Code: AccountProblem Description: There is a problem with your AWS account + // that prevents the operation from completing successfully. Contact AWS + // Support for further assistance. HTTP Status Code: 403 Forbidden SOAP Fault + // Code Prefix: Client + // + // * Code: AllAccessDisabled Description: All access to this Amazon S3 resource + // has been disabled. Contact AWS Support for further assistance. HTTP Status + // Code: 403 Forbidden SOAP Fault Code Prefix: Client + // + // * Code: AmbiguousGrantByEmailAddress Description: The email address you + // provided is associated with more than one account. HTTP Status Code: 400 + // Bad Request SOAP Fault Code Prefix: Client + // + // * Code: AuthorizationHeaderMalformed Description: The authorization header + // you provided is invalid. HTTP Status Code: 400 Bad Request HTTP Status + // Code: N/A + // + // * Code: BadDigest Description: The Content-MD5 you specified did not match + // what we received. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: + // Client + // + // * Code: BucketAlreadyExists Description: The requested bucket name is + // not available. The bucket namespace is shared by all users of the system. + // Please select a different name and try again. HTTP Status Code: 409 Conflict + // SOAP Fault Code Prefix: Client + // + // * Code: BucketAlreadyOwnedByYou Description: The bucket you tried to create + // already exists, and you own it. Amazon S3 returns this error in all AWS + // Regions except in the North Virginia region. For legacy compatibility, + // if you re-create an existing bucket that you already own in the North + // Virginia region, Amazon S3 returns 200 OK and resets the bucket access + // control lists (ACLs). Code: 409 Conflict (in all regions except the North + // Virginia region) SOAP Fault Code Prefix: Client + // + // * Code: BucketNotEmpty Description: The bucket you tried to delete is + // not empty. HTTP Status Code: 409 Conflict SOAP Fault Code Prefix: Client + // + // * Code: CredentialsNotSupported Description: This request does not support + // credentials. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: + // Client + // + // * Code: CrossLocationLoggingProhibited Description: Cross-location logging + // not allowed. Buckets in one geographic location cannot log information + // to a bucket in another location. HTTP Status Code: 403 Forbidden SOAP + // Fault Code Prefix: Client + // + // * Code: EntityTooSmall Description: Your proposed upload is smaller than + // the minimum allowed object size. HTTP Status Code: 400 Bad Request SOAP + // Fault Code Prefix: Client + // + // * Code: EntityTooLarge Description: Your proposed upload exceeds the maximum + // allowed object size. HTTP Status Code: 400 Bad Request SOAP Fault Code + // Prefix: Client + // + // * Code: ExpiredToken Description: The provided token has expired. HTTP + // Status Code: 400 Bad Request SOAP Fault Code Prefix: Client + // + // * Code: IllegalVersioningConfigurationException Description: Indicates + // that the versioning configuration specified in the request is invalid. + // HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client + // + // * Code: IncompleteBody Description: You did not provide the number of + // bytes specified by the Content-Length HTTP header HTTP Status Code: 400 + // Bad Request SOAP Fault Code Prefix: Client + // + // * Code: IncorrectNumberOfFilesInPostRequest Description: POST requires + // exactly one file upload per request. HTTP Status Code: 400 Bad Request + // SOAP Fault Code Prefix: Client + // + // * Code: InlineDataTooLarge Description: Inline data exceeds the maximum + // allowed size. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: + // Client + // + // * Code: InternalError Description: We encountered an internal error. Please + // try again. HTTP Status Code: 500 Internal Server Error SOAP Fault Code + // Prefix: Server + // + // * Code: InvalidAccessKeyId Description: The AWS access key ID you provided + // does not exist in our records. HTTP Status Code: 403 Forbidden SOAP Fault + // Code Prefix: Client + // + // * Code: InvalidAddressingHeader Description: You must specify the Anonymous + // role. HTTP Status Code: N/A SOAP Fault Code Prefix: Client + // + // * Code: InvalidArgument Description: Invalid Argument HTTP Status Code: + // 400 Bad Request SOAP Fault Code Prefix: Client + // + // * Code: InvalidBucketName Description: The specified bucket is not valid. + // HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client + // + // * Code: InvalidBucketState Description: The request is not valid with + // the current state of the bucket. HTTP Status Code: 409 Conflict SOAP Fault + // Code Prefix: Client + // + // * Code: InvalidDigest Description: The Content-MD5 you specified is not + // valid. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client + // + // * Code: InvalidEncryptionAlgorithmError Description: The encryption request + // you specified is not valid. The valid value is AES256. HTTP Status Code: + // 400 Bad Request SOAP Fault Code Prefix: Client + // + // * Code: InvalidLocationConstraint Description: The specified location + // constraint is not valid. For more information about Regions, see How to + // Select a Region for Your Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro). + // HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client + // + // * Code: InvalidObjectState Description: The operation is not valid for + // the current state of the object. HTTP Status Code: 403 Forbidden SOAP + // Fault Code Prefix: Client + // + // * Code: InvalidPart Description: One or more of the specified parts could + // not be found. The part might not have been uploaded, or the specified + // entity tag might not have matched the part's entity tag. HTTP Status Code: + // 400 Bad Request SOAP Fault Code Prefix: Client + // + // * Code: InvalidPartOrder Description: The list of parts was not in ascending + // order. Parts list must be specified in order by part number. HTTP Status + // Code: 400 Bad Request SOAP Fault Code Prefix: Client + // + // * Code: InvalidPayer Description: All access to this object has been disabled. + // Please contact AWS Support for further assistance. HTTP Status Code: 403 + // Forbidden SOAP Fault Code Prefix: Client + // + // * Code: InvalidPolicyDocument Description: The content of the form does + // not meet the conditions specified in the policy document. HTTP Status + // Code: 400 Bad Request SOAP Fault Code Prefix: Client + // + // * Code: InvalidRange Description: The requested range cannot be satisfied. + // HTTP Status Code: 416 Requested Range Not Satisfiable SOAP Fault Code + // Prefix: Client + // + // * Code: InvalidRequest Description: Please use AWS4-HMAC-SHA256. HTTP + // Status Code: 400 Bad Request Code: N/A + // + // * Code: InvalidRequest Description: SOAP requests must be made over an + // HTTPS connection. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: + // Client + // + // * Code: InvalidRequest Description: Amazon S3 Transfer Acceleration is + // not supported for buckets with non-DNS compliant names. HTTP Status Code: + // 400 Bad Request Code: N/A + // + // * Code: InvalidRequest Description: Amazon S3 Transfer Acceleration is + // not supported for buckets with periods (.) in their names. HTTP Status + // Code: 400 Bad Request Code: N/A + // + // * Code: InvalidRequest Description: Amazon S3 Transfer Accelerate endpoint + // only supports virtual style requests. HTTP Status Code: 400 Bad Request + // Code: N/A + // + // * Code: InvalidRequest Description: Amazon S3 Transfer Accelerate is not + // configured on this bucket. HTTP Status Code: 400 Bad Request Code: N/A + // + // * Code: InvalidRequest Description: Amazon S3 Transfer Accelerate is disabled + // on this bucket. HTTP Status Code: 400 Bad Request Code: N/A + // + // * Code: InvalidRequest Description: Amazon S3 Transfer Acceleration is + // not supported on this bucket. Contact AWS Support for more information. + // HTTP Status Code: 400 Bad Request Code: N/A + // + // * Code: InvalidRequest Description: Amazon S3 Transfer Acceleration cannot + // be enabled on this bucket. Contact AWS Support for more information. HTTP + // Status Code: 400 Bad Request Code: N/A + // + // * Code: InvalidSecurity Description: The provided security credentials + // are not valid. HTTP Status Code: 403 Forbidden SOAP Fault Code Prefix: + // Client + // + // * Code: InvalidSOAPRequest Description: The SOAP request body is invalid. + // HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client + // + // * Code: InvalidStorageClass Description: The storage class you specified + // is not valid. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: + // Client + // + // * Code: InvalidTargetBucketForLogging Description: The target bucket for + // logging does not exist, is not owned by you, or does not have the appropriate + // grants for the log-delivery group. HTTP Status Code: 400 Bad Request SOAP + // Fault Code Prefix: Client + // + // * Code: InvalidToken Description: The provided token is malformed or otherwise + // invalid. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client + // + // * Code: InvalidURI Description: Couldn't parse the specified URI. HTTP + // Status Code: 400 Bad Request SOAP Fault Code Prefix: Client + // + // * Code: KeyTooLongError Description: Your key is too long. HTTP Status + // Code: 400 Bad Request SOAP Fault Code Prefix: Client + // + // * Code: MalformedACLError Description: The XML you provided was not well-formed + // or did not validate against our published schema. HTTP Status Code: 400 + // Bad Request SOAP Fault Code Prefix: Client + // + // * Code: MalformedPOSTRequest Description: The body of your POST request + // is not well-formed multipart/form-data. HTTP Status Code: 400 Bad Request + // SOAP Fault Code Prefix: Client + // + // * Code: MalformedXML Description: This happens when the user sends malformed + // XML (XML that doesn't conform to the published XSD) for the configuration. + // The error message is, "The XML you provided was not well-formed or did + // not validate against our published schema." HTTP Status Code: 400 Bad + // Request SOAP Fault Code Prefix: Client + // + // * Code: MaxMessageLengthExceeded Description: Your request was too big. + // HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client + // + // * Code: MaxPostPreDataLengthExceededError Description: Your POST request + // fields preceding the upload file were too large. HTTP Status Code: 400 + // Bad Request SOAP Fault Code Prefix: Client + // + // * Code: MetadataTooLarge Description: Your metadata headers exceed the + // maximum allowed metadata size. HTTP Status Code: 400 Bad Request SOAP + // Fault Code Prefix: Client + // + // * Code: MethodNotAllowed Description: The specified method is not allowed + // against this resource. HTTP Status Code: 405 Method Not Allowed SOAP Fault + // Code Prefix: Client + // + // * Code: MissingAttachment Description: A SOAP attachment was expected, + // but none were found. HTTP Status Code: N/A SOAP Fault Code Prefix: Client + // + // * Code: MissingContentLength Description: You must provide the Content-Length + // HTTP header. HTTP Status Code: 411 Length Required SOAP Fault Code Prefix: + // Client + // + // * Code: MissingRequestBodyError Description: This happens when the user + // sends an empty XML document as a request. The error message is, "Request + // body is empty." HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: + // Client + // + // * Code: MissingSecurityElement Description: The SOAP 1.1 request is missing + // a security element. HTTP Status Code: 400 Bad Request SOAP Fault Code + // Prefix: Client + // + // * Code: MissingSecurityHeader Description: Your request is missing a required + // header. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client + // + // * Code: NoLoggingStatusForKey Description: There is no such thing as a + // logging status subresource for a key. HTTP Status Code: 400 Bad Request + // SOAP Fault Code Prefix: Client + // + // * Code: NoSuchBucket Description: The specified bucket does not exist. + // HTTP Status Code: 404 Not Found SOAP Fault Code Prefix: Client + // + // * Code: NoSuchBucketPolicy Description: The specified bucket does not + // have a bucket policy. HTTP Status Code: 404 Not Found SOAP Fault Code + // Prefix: Client + // + // * Code: NoSuchKey Description: The specified key does not exist. HTTP + // Status Code: 404 Not Found SOAP Fault Code Prefix: Client + // + // * Code: NoSuchLifecycleConfiguration Description: The lifecycle configuration + // does not exist. HTTP Status Code: 404 Not Found SOAP Fault Code Prefix: + // Client + // + // * Code: NoSuchUpload Description: The specified multipart upload does + // not exist. The upload ID might be invalid, or the multipart upload might + // have been aborted or completed. HTTP Status Code: 404 Not Found SOAP Fault + // Code Prefix: Client + // + // * Code: NoSuchVersion Description: Indicates that the version ID specified + // in the request does not match an existing version. HTTP Status Code: 404 + // Not Found SOAP Fault Code Prefix: Client + // + // * Code: NotImplemented Description: A header you provided implies functionality + // that is not implemented. HTTP Status Code: 501 Not Implemented SOAP Fault + // Code Prefix: Server + // + // * Code: NotSignedUp Description: Your account is not signed up for the + // Amazon S3 service. You must sign up before you can use Amazon S3. You + // can sign up at the following URL: https://aws.amazon.com/s3 HTTP Status + // Code: 403 Forbidden SOAP Fault Code Prefix: Client + // + // * Code: OperationAborted Description: A conflicting conditional operation + // is currently in progress against this resource. Try again. HTTP Status + // Code: 409 Conflict SOAP Fault Code Prefix: Client + // + // * Code: PermanentRedirect Description: The bucket you are attempting to + // access must be addressed using the specified endpoint. Send all future + // requests to this endpoint. HTTP Status Code: 301 Moved Permanently SOAP + // Fault Code Prefix: Client + // + // * Code: PreconditionFailed Description: At least one of the preconditions + // you specified did not hold. HTTP Status Code: 412 Precondition Failed + // SOAP Fault Code Prefix: Client + // + // * Code: Redirect Description: Temporary redirect. HTTP Status Code: 307 + // Moved Temporarily SOAP Fault Code Prefix: Client + // + // * Code: RestoreAlreadyInProgress Description: Object restore is already + // in progress. HTTP Status Code: 409 Conflict SOAP Fault Code Prefix: Client + // + // * Code: RequestIsNotMultiPartContent Description: Bucket POST must be + // of the enclosure-type multipart/form-data. HTTP Status Code: 400 Bad Request + // SOAP Fault Code Prefix: Client + // + // * Code: RequestTimeout Description: Your socket connection to the server + // was not read from or written to within the timeout period. HTTP Status + // Code: 400 Bad Request SOAP Fault Code Prefix: Client + // + // * Code: RequestTimeTooSkewed Description: The difference between the request + // time and the server's time is too large. HTTP Status Code: 403 Forbidden + // SOAP Fault Code Prefix: Client + // + // * Code: RequestTorrentOfBucketError Description: Requesting the torrent + // file of a bucket is not permitted. HTTP Status Code: 400 Bad Request SOAP + // Fault Code Prefix: Client + // + // * Code: SignatureDoesNotMatch Description: The request signature we calculated + // does not match the signature you provided. Check your AWS secret access + // key and signing method. For more information, see REST Authentication + // (https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html) + // and SOAP Authentication (https://docs.aws.amazon.com/AmazonS3/latest/dev/SOAPAuthentication.html) + // for details. HTTP Status Code: 403 Forbidden SOAP Fault Code Prefix: Client + // + // * Code: ServiceUnavailable Description: Reduce your request rate. HTTP + // Status Code: 503 Service Unavailable SOAP Fault Code Prefix: Server + // + // * Code: SlowDown Description: Reduce your request rate. HTTP Status Code: + // 503 Slow Down SOAP Fault Code Prefix: Server + // + // * Code: TemporaryRedirect Description: You are being redirected to the + // bucket while DNS updates. HTTP Status Code: 307 Moved Temporarily SOAP + // Fault Code Prefix: Client + // + // * Code: TokenRefreshRequired Description: The provided token must be refreshed. + // HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client + // + // * Code: TooManyBuckets Description: You have attempted to create more + // buckets than allowed. HTTP Status Code: 400 Bad Request SOAP Fault Code + // Prefix: Client + // + // * Code: UnexpectedContent Description: This request does not support content. + // HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client + // + // * Code: UnresolvableGrantByEmailAddress Description: The email address + // you provided does not match any account on record. HTTP Status Code: 400 + // Bad Request SOAP Fault Code Prefix: Client + // + // * Code: UserKeyMustBeSpecified Description: The bucket POST must contain + // the specified field name. If it is specified, check the order of the fields. + // HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client + Code *string `type:"string"` + + // The error key. + Key *string `min:"1" type:"string"` + + // The error message contains a generic description of the error condition in + // English. It is intended for a human audience. Simple programs display the + // message directly to the end user if they encounter an error condition they + // don't know how or don't care to handle. Sophisticated programs with more + // exhaustive error handling and proper internationalization are more likely + // to ignore the error message. + Message *string `type:"string"` + + // The version ID of the error. + VersionId *string `type:"string"` +} + +// String returns the string representation +func (s Error) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Error) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *Error) SetCode(v string) *Error { + s.Code = &v + return s +} + +// SetKey sets the Key field's value. +func (s *Error) SetKey(v string) *Error { + s.Key = &v + return s +} + +// SetMessage sets the Message field's value. +func (s *Error) SetMessage(v string) *Error { + s.Message = &v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *Error) SetVersionId(v string) *Error { + s.VersionId = &v + return s +} + +// The error information. +type ErrorDocument struct { + _ struct{} `type:"structure"` + + // The object key name to use when a 4XX class error occurs. + // + // Key is a required field + Key *string `min:"1" type:"string" required:"true"` +} + +// String returns the string representation +func (s ErrorDocument) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ErrorDocument) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ErrorDocument) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ErrorDocument"} + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetKey sets the Key field's value. +func (s *ErrorDocument) SetKey(v string) *ErrorDocument { + s.Key = &v + return s +} + +// A container that specifies information about existing object replication. +// You can choose whether to enable or disable the replication of existing objects. +type ExistingObjectReplication struct { + _ struct{} `type:"structure"` + + // Specifies whether existing object replication is enabled. + // + // Status is a required field + Status *string `type:"string" required:"true" enum:"ExistingObjectReplicationStatus"` +} + +// String returns the string representation +func (s ExistingObjectReplication) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ExistingObjectReplication) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ExistingObjectReplication) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ExistingObjectReplication"} + if s.Status == nil { + invalidParams.Add(request.NewErrParamRequired("Status")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetStatus sets the Status field's value. +func (s *ExistingObjectReplication) SetStatus(v string) *ExistingObjectReplication { + s.Status = &v + return s +} + +// Specifies the Amazon S3 object key name to filter on and whether to filter +// on the suffix or prefix of the key name. +type FilterRule struct { + _ struct{} `type:"structure"` + + // The object key name prefix or suffix identifying one or more objects to which + // the filtering rule applies. The maximum length is 1,024 characters. Overlapping + // prefixes and suffixes are not supported. For more information, see Configuring + // Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html) + // in the Amazon Simple Storage Service Developer Guide. + Name *string `type:"string" enum:"FilterRuleName"` + + // The value that the filter searches for in object key names. + Value *string `type:"string"` +} + +// String returns the string representation +func (s FilterRule) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s FilterRule) GoString() string { + return s.String() +} + +// SetName sets the Name field's value. +func (s *FilterRule) SetName(v string) *FilterRule { + s.Name = &v + return s +} + +// SetValue sets the Value field's value. +func (s *FilterRule) SetValue(v string) *FilterRule { + s.Value = &v + return s +} + +type GetBucketAccelerateConfigurationInput struct { + _ struct{} `locationName:"GetBucketAccelerateConfigurationRequest" type:"structure"` + + // Name of the bucket for which the accelerate configuration is retrieved. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetBucketAccelerateConfigurationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketAccelerateConfigurationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetBucketAccelerateConfigurationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetBucketAccelerateConfigurationInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetBucketAccelerateConfigurationInput) SetBucket(v string) *GetBucketAccelerateConfigurationInput { + s.Bucket = &v + return s +} + +func (s *GetBucketAccelerateConfigurationInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type GetBucketAccelerateConfigurationOutput struct { + _ struct{} `type:"structure"` + + // The accelerate configuration of the bucket. + Status *string `type:"string" enum:"BucketAccelerateStatus"` +} + +// String returns the string representation +func (s GetBucketAccelerateConfigurationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketAccelerateConfigurationOutput) GoString() string { + return s.String() +} + +// SetStatus sets the Status field's value. +func (s *GetBucketAccelerateConfigurationOutput) SetStatus(v string) *GetBucketAccelerateConfigurationOutput { + s.Status = &v + return s +} + +type GetBucketAclInput struct { + _ struct{} `locationName:"GetBucketAclRequest" type:"structure"` + + // Specifies the S3 bucket whose ACL is being requested. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetBucketAclInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketAclInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetBucketAclInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetBucketAclInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetBucketAclInput) SetBucket(v string) *GetBucketAclInput { + s.Bucket = &v + return s +} + +func (s *GetBucketAclInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type GetBucketAclOutput struct { + _ struct{} `type:"structure"` + + // A list of grants. + Grants []*Grant `locationName:"AccessControlList" locationNameList:"Grant" type:"list"` + + // Container for the bucket owner's display name and ID. + Owner *Owner `type:"structure"` +} + +// String returns the string representation +func (s GetBucketAclOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketAclOutput) GoString() string { + return s.String() +} + +// SetGrants sets the Grants field's value. +func (s *GetBucketAclOutput) SetGrants(v []*Grant) *GetBucketAclOutput { + s.Grants = v + return s +} + +// SetOwner sets the Owner field's value. +func (s *GetBucketAclOutput) SetOwner(v *Owner) *GetBucketAclOutput { + s.Owner = v + return s +} + +type GetBucketAnalyticsConfigurationInput struct { + _ struct{} `locationName:"GetBucketAnalyticsConfigurationRequest" type:"structure"` + + // The name of the bucket from which an analytics configuration is retrieved. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // The ID that identifies the analytics configuration. + // + // Id is a required field + Id *string `location:"querystring" locationName:"id" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetBucketAnalyticsConfigurationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketAnalyticsConfigurationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetBucketAnalyticsConfigurationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetBucketAnalyticsConfigurationInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Id == nil { + invalidParams.Add(request.NewErrParamRequired("Id")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetBucketAnalyticsConfigurationInput) SetBucket(v string) *GetBucketAnalyticsConfigurationInput { + s.Bucket = &v + return s +} + +func (s *GetBucketAnalyticsConfigurationInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetId sets the Id field's value. +func (s *GetBucketAnalyticsConfigurationInput) SetId(v string) *GetBucketAnalyticsConfigurationInput { + s.Id = &v + return s +} + +type GetBucketAnalyticsConfigurationOutput struct { + _ struct{} `type:"structure" payload:"AnalyticsConfiguration"` + + // The configuration and any analyses for the analytics filter. + AnalyticsConfiguration *AnalyticsConfiguration `type:"structure"` +} + +// String returns the string representation +func (s GetBucketAnalyticsConfigurationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketAnalyticsConfigurationOutput) GoString() string { + return s.String() +} + +// SetAnalyticsConfiguration sets the AnalyticsConfiguration field's value. +func (s *GetBucketAnalyticsConfigurationOutput) SetAnalyticsConfiguration(v *AnalyticsConfiguration) *GetBucketAnalyticsConfigurationOutput { + s.AnalyticsConfiguration = v + return s +} + +type GetBucketCorsInput struct { + _ struct{} `locationName:"GetBucketCorsRequest" type:"structure"` + + // The bucket name for which to get the cors configuration. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetBucketCorsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketCorsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetBucketCorsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetBucketCorsInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetBucketCorsInput) SetBucket(v string) *GetBucketCorsInput { + s.Bucket = &v + return s +} + +func (s *GetBucketCorsInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type GetBucketCorsOutput struct { + _ struct{} `type:"structure"` + + // A set of origins and methods (cross-origin access that you want to allow). + // You can add up to 100 rules to the configuration. + CORSRules []*CORSRule `locationName:"CORSRule" type:"list" flattened:"true"` +} + +// String returns the string representation +func (s GetBucketCorsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketCorsOutput) GoString() string { + return s.String() +} + +// SetCORSRules sets the CORSRules field's value. +func (s *GetBucketCorsOutput) SetCORSRules(v []*CORSRule) *GetBucketCorsOutput { + s.CORSRules = v + return s +} + +type GetBucketEncryptionInput struct { + _ struct{} `locationName:"GetBucketEncryptionRequest" type:"structure"` + + // The name of the bucket from which the server-side encryption configuration + // is retrieved. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetBucketEncryptionInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketEncryptionInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetBucketEncryptionInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetBucketEncryptionInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetBucketEncryptionInput) SetBucket(v string) *GetBucketEncryptionInput { + s.Bucket = &v + return s +} + +func (s *GetBucketEncryptionInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type GetBucketEncryptionOutput struct { + _ struct{} `type:"structure" payload:"ServerSideEncryptionConfiguration"` + + // Specifies the default server-side-encryption configuration. + ServerSideEncryptionConfiguration *ServerSideEncryptionConfiguration `type:"structure"` +} + +// String returns the string representation +func (s GetBucketEncryptionOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketEncryptionOutput) GoString() string { + return s.String() +} + +// SetServerSideEncryptionConfiguration sets the ServerSideEncryptionConfiguration field's value. +func (s *GetBucketEncryptionOutput) SetServerSideEncryptionConfiguration(v *ServerSideEncryptionConfiguration) *GetBucketEncryptionOutput { + s.ServerSideEncryptionConfiguration = v + return s +} + +type GetBucketInventoryConfigurationInput struct { + _ struct{} `locationName:"GetBucketInventoryConfigurationRequest" type:"structure"` + + // The name of the bucket containing the inventory configuration to retrieve. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // The ID used to identify the inventory configuration. + // + // Id is a required field + Id *string `location:"querystring" locationName:"id" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetBucketInventoryConfigurationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketInventoryConfigurationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetBucketInventoryConfigurationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetBucketInventoryConfigurationInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Id == nil { + invalidParams.Add(request.NewErrParamRequired("Id")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetBucketInventoryConfigurationInput) SetBucket(v string) *GetBucketInventoryConfigurationInput { + s.Bucket = &v + return s +} + +func (s *GetBucketInventoryConfigurationInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetId sets the Id field's value. +func (s *GetBucketInventoryConfigurationInput) SetId(v string) *GetBucketInventoryConfigurationInput { + s.Id = &v + return s +} + +type GetBucketInventoryConfigurationOutput struct { + _ struct{} `type:"structure" payload:"InventoryConfiguration"` + + // Specifies the inventory configuration. + InventoryConfiguration *InventoryConfiguration `type:"structure"` +} + +// String returns the string representation +func (s GetBucketInventoryConfigurationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketInventoryConfigurationOutput) GoString() string { + return s.String() +} + +// SetInventoryConfiguration sets the InventoryConfiguration field's value. +func (s *GetBucketInventoryConfigurationOutput) SetInventoryConfiguration(v *InventoryConfiguration) *GetBucketInventoryConfigurationOutput { + s.InventoryConfiguration = v + return s +} + +type GetBucketLifecycleConfigurationInput struct { + _ struct{} `locationName:"GetBucketLifecycleConfigurationRequest" type:"structure"` + + // The name of the bucket for which to the the lifecycle information. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetBucketLifecycleConfigurationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketLifecycleConfigurationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetBucketLifecycleConfigurationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetBucketLifecycleConfigurationInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetBucketLifecycleConfigurationInput) SetBucket(v string) *GetBucketLifecycleConfigurationInput { + s.Bucket = &v + return s +} + +func (s *GetBucketLifecycleConfigurationInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type GetBucketLifecycleConfigurationOutput struct { + _ struct{} `type:"structure"` + + // Container for a lifecycle rule. + Rules []*LifecycleRule `locationName:"Rule" type:"list" flattened:"true"` +} + +// String returns the string representation +func (s GetBucketLifecycleConfigurationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketLifecycleConfigurationOutput) GoString() string { + return s.String() +} + +// SetRules sets the Rules field's value. +func (s *GetBucketLifecycleConfigurationOutput) SetRules(v []*LifecycleRule) *GetBucketLifecycleConfigurationOutput { + s.Rules = v + return s +} + +type GetBucketLifecycleInput struct { + _ struct{} `locationName:"GetBucketLifecycleRequest" type:"structure"` + + // The name of the bucket for which to the the lifecycle information. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetBucketLifecycleInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketLifecycleInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetBucketLifecycleInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetBucketLifecycleInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetBucketLifecycleInput) SetBucket(v string) *GetBucketLifecycleInput { + s.Bucket = &v + return s +} + +func (s *GetBucketLifecycleInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type GetBucketLifecycleOutput struct { + _ struct{} `type:"structure"` + + // Container for a lifecycle rule. + Rules []*Rule `locationName:"Rule" type:"list" flattened:"true"` +} + +// String returns the string representation +func (s GetBucketLifecycleOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketLifecycleOutput) GoString() string { + return s.String() +} + +// SetRules sets the Rules field's value. +func (s *GetBucketLifecycleOutput) SetRules(v []*Rule) *GetBucketLifecycleOutput { + s.Rules = v + return s +} + +type GetBucketLocationInput struct { + _ struct{} `locationName:"GetBucketLocationRequest" type:"structure"` + + // The name of the bucket for which to get the location. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetBucketLocationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketLocationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetBucketLocationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetBucketLocationInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetBucketLocationInput) SetBucket(v string) *GetBucketLocationInput { + s.Bucket = &v + return s +} + +func (s *GetBucketLocationInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type GetBucketLocationOutput struct { + _ struct{} `type:"structure"` + + // Specifies the region where the bucket resides. For a list of all the Amazon + // S3 supported location constraints by region, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region). + LocationConstraint *string `type:"string" enum:"BucketLocationConstraint"` +} + +// String returns the string representation +func (s GetBucketLocationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketLocationOutput) GoString() string { + return s.String() +} + +// SetLocationConstraint sets the LocationConstraint field's value. +func (s *GetBucketLocationOutput) SetLocationConstraint(v string) *GetBucketLocationOutput { + s.LocationConstraint = &v + return s +} + +type GetBucketLoggingInput struct { + _ struct{} `locationName:"GetBucketLoggingRequest" type:"structure"` + + // The bucket name for which to get the logging information. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetBucketLoggingInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketLoggingInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetBucketLoggingInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetBucketLoggingInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetBucketLoggingInput) SetBucket(v string) *GetBucketLoggingInput { + s.Bucket = &v + return s +} + +func (s *GetBucketLoggingInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type GetBucketLoggingOutput struct { + _ struct{} `type:"structure"` + + // Describes where logs are stored and the prefix that Amazon S3 assigns to + // all log object keys for a bucket. For more information, see PUT Bucket logging + // (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html) + // in the Amazon Simple Storage Service API Reference. + LoggingEnabled *LoggingEnabled `type:"structure"` +} + +// String returns the string representation +func (s GetBucketLoggingOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketLoggingOutput) GoString() string { + return s.String() +} + +// SetLoggingEnabled sets the LoggingEnabled field's value. +func (s *GetBucketLoggingOutput) SetLoggingEnabled(v *LoggingEnabled) *GetBucketLoggingOutput { + s.LoggingEnabled = v + return s +} + +type GetBucketMetricsConfigurationInput struct { + _ struct{} `locationName:"GetBucketMetricsConfigurationRequest" type:"structure"` + + // The name of the bucket containing the metrics configuration to retrieve. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // The ID used to identify the metrics configuration. + // + // Id is a required field + Id *string `location:"querystring" locationName:"id" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetBucketMetricsConfigurationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketMetricsConfigurationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetBucketMetricsConfigurationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetBucketMetricsConfigurationInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Id == nil { + invalidParams.Add(request.NewErrParamRequired("Id")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetBucketMetricsConfigurationInput) SetBucket(v string) *GetBucketMetricsConfigurationInput { + s.Bucket = &v + return s +} + +func (s *GetBucketMetricsConfigurationInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetId sets the Id field's value. +func (s *GetBucketMetricsConfigurationInput) SetId(v string) *GetBucketMetricsConfigurationInput { + s.Id = &v + return s +} + +type GetBucketMetricsConfigurationOutput struct { + _ struct{} `type:"structure" payload:"MetricsConfiguration"` + + // Specifies the metrics configuration. + MetricsConfiguration *MetricsConfiguration `type:"structure"` +} + +// String returns the string representation +func (s GetBucketMetricsConfigurationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketMetricsConfigurationOutput) GoString() string { + return s.String() +} + +// SetMetricsConfiguration sets the MetricsConfiguration field's value. +func (s *GetBucketMetricsConfigurationOutput) SetMetricsConfiguration(v *MetricsConfiguration) *GetBucketMetricsConfigurationOutput { + s.MetricsConfiguration = v + return s +} + +type GetBucketNotificationConfigurationRequest struct { + _ struct{} `locationName:"GetBucketNotificationConfigurationRequest" type:"structure"` + + // Name of the bucket for which to get the notification configuration + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetBucketNotificationConfigurationRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketNotificationConfigurationRequest) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetBucketNotificationConfigurationRequest) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetBucketNotificationConfigurationRequest"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetBucketNotificationConfigurationRequest) SetBucket(v string) *GetBucketNotificationConfigurationRequest { + s.Bucket = &v + return s +} + +func (s *GetBucketNotificationConfigurationRequest) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type GetBucketPolicyInput struct { + _ struct{} `locationName:"GetBucketPolicyRequest" type:"structure"` + + // The bucket name for which to get the bucket policy. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetBucketPolicyInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketPolicyInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetBucketPolicyInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetBucketPolicyInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetBucketPolicyInput) SetBucket(v string) *GetBucketPolicyInput { + s.Bucket = &v + return s +} + +func (s *GetBucketPolicyInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type GetBucketPolicyOutput struct { + _ struct{} `type:"structure" payload:"Policy"` + + // The bucket policy as a JSON document. + Policy *string `type:"string"` +} + +// String returns the string representation +func (s GetBucketPolicyOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketPolicyOutput) GoString() string { + return s.String() +} + +// SetPolicy sets the Policy field's value. +func (s *GetBucketPolicyOutput) SetPolicy(v string) *GetBucketPolicyOutput { + s.Policy = &v + return s +} + +type GetBucketPolicyStatusInput struct { + _ struct{} `locationName:"GetBucketPolicyStatusRequest" type:"structure"` + + // The name of the Amazon S3 bucket whose policy status you want to retrieve. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetBucketPolicyStatusInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketPolicyStatusInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetBucketPolicyStatusInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetBucketPolicyStatusInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetBucketPolicyStatusInput) SetBucket(v string) *GetBucketPolicyStatusInput { + s.Bucket = &v + return s +} + +func (s *GetBucketPolicyStatusInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type GetBucketPolicyStatusOutput struct { + _ struct{} `type:"structure" payload:"PolicyStatus"` + + // The policy status for the specified bucket. + PolicyStatus *PolicyStatus `type:"structure"` +} + +// String returns the string representation +func (s GetBucketPolicyStatusOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketPolicyStatusOutput) GoString() string { + return s.String() +} + +// SetPolicyStatus sets the PolicyStatus field's value. +func (s *GetBucketPolicyStatusOutput) SetPolicyStatus(v *PolicyStatus) *GetBucketPolicyStatusOutput { + s.PolicyStatus = v + return s +} + +type GetBucketReplicationInput struct { + _ struct{} `locationName:"GetBucketReplicationRequest" type:"structure"` + + // The bucket name for which to get the replication information. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetBucketReplicationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketReplicationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetBucketReplicationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetBucketReplicationInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetBucketReplicationInput) SetBucket(v string) *GetBucketReplicationInput { + s.Bucket = &v + return s +} + +func (s *GetBucketReplicationInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type GetBucketReplicationOutput struct { + _ struct{} `type:"structure" payload:"ReplicationConfiguration"` + + // A container for replication rules. You can add up to 1,000 rules. The maximum + // size of a replication configuration is 2 MB. + ReplicationConfiguration *ReplicationConfiguration `type:"structure"` +} + +// String returns the string representation +func (s GetBucketReplicationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketReplicationOutput) GoString() string { + return s.String() +} + +// SetReplicationConfiguration sets the ReplicationConfiguration field's value. +func (s *GetBucketReplicationOutput) SetReplicationConfiguration(v *ReplicationConfiguration) *GetBucketReplicationOutput { + s.ReplicationConfiguration = v + return s +} + +type GetBucketRequestPaymentInput struct { + _ struct{} `locationName:"GetBucketRequestPaymentRequest" type:"structure"` + + // The name of the bucket for which to get the payment request configuration + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetBucketRequestPaymentInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketRequestPaymentInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetBucketRequestPaymentInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetBucketRequestPaymentInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetBucketRequestPaymentInput) SetBucket(v string) *GetBucketRequestPaymentInput { + s.Bucket = &v + return s +} + +func (s *GetBucketRequestPaymentInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type GetBucketRequestPaymentOutput struct { + _ struct{} `type:"structure"` + + // Specifies who pays for the download and request fees. + Payer *string `type:"string" enum:"Payer"` +} + +// String returns the string representation +func (s GetBucketRequestPaymentOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketRequestPaymentOutput) GoString() string { + return s.String() +} + +// SetPayer sets the Payer field's value. +func (s *GetBucketRequestPaymentOutput) SetPayer(v string) *GetBucketRequestPaymentOutput { + s.Payer = &v + return s +} + +type GetBucketTaggingInput struct { + _ struct{} `locationName:"GetBucketTaggingRequest" type:"structure"` + + // The name of the bucket for which to get the tagging information. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetBucketTaggingInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketTaggingInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetBucketTaggingInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetBucketTaggingInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetBucketTaggingInput) SetBucket(v string) *GetBucketTaggingInput { + s.Bucket = &v + return s +} + +func (s *GetBucketTaggingInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type GetBucketTaggingOutput struct { + _ struct{} `type:"structure"` + + // Contains the tag set. + // + // TagSet is a required field + TagSet []*Tag `locationNameList:"Tag" type:"list" required:"true"` +} + +// String returns the string representation +func (s GetBucketTaggingOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketTaggingOutput) GoString() string { + return s.String() +} + +// SetTagSet sets the TagSet field's value. +func (s *GetBucketTaggingOutput) SetTagSet(v []*Tag) *GetBucketTaggingOutput { + s.TagSet = v + return s +} + +type GetBucketVersioningInput struct { + _ struct{} `locationName:"GetBucketVersioningRequest" type:"structure"` + + // The name of the bucket for which to get the versioning information. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetBucketVersioningInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketVersioningInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetBucketVersioningInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetBucketVersioningInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetBucketVersioningInput) SetBucket(v string) *GetBucketVersioningInput { + s.Bucket = &v + return s +} + +func (s *GetBucketVersioningInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type GetBucketVersioningOutput struct { + _ struct{} `type:"structure"` + + // Specifies whether MFA delete is enabled in the bucket versioning configuration. + // This element is only returned if the bucket has been configured with MFA + // delete. If the bucket has never been so configured, this element is not returned. + MFADelete *string `locationName:"MfaDelete" type:"string" enum:"MFADeleteStatus"` + + // The versioning state of the bucket. + Status *string `type:"string" enum:"BucketVersioningStatus"` +} + +// String returns the string representation +func (s GetBucketVersioningOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketVersioningOutput) GoString() string { + return s.String() +} + +// SetMFADelete sets the MFADelete field's value. +func (s *GetBucketVersioningOutput) SetMFADelete(v string) *GetBucketVersioningOutput { + s.MFADelete = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *GetBucketVersioningOutput) SetStatus(v string) *GetBucketVersioningOutput { + s.Status = &v + return s +} + +type GetBucketWebsiteInput struct { + _ struct{} `locationName:"GetBucketWebsiteRequest" type:"structure"` + + // The bucket name for which to get the website configuration. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetBucketWebsiteInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketWebsiteInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetBucketWebsiteInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetBucketWebsiteInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetBucketWebsiteInput) SetBucket(v string) *GetBucketWebsiteInput { + s.Bucket = &v + return s +} + +func (s *GetBucketWebsiteInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type GetBucketWebsiteOutput struct { + _ struct{} `type:"structure"` + + // The name of the error document for the website. + ErrorDocument *ErrorDocument `type:"structure"` + + // The name of the index document for the website. + IndexDocument *IndexDocument `type:"structure"` + + // Specifies the redirect behavior of all requests to a website endpoint of + // an Amazon S3 bucket. + RedirectAllRequestsTo *RedirectAllRequestsTo `type:"structure"` + + // Rules that define when a redirect is applied and the redirect behavior. + RoutingRules []*RoutingRule `locationNameList:"RoutingRule" type:"list"` +} + +// String returns the string representation +func (s GetBucketWebsiteOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetBucketWebsiteOutput) GoString() string { + return s.String() +} + +// SetErrorDocument sets the ErrorDocument field's value. +func (s *GetBucketWebsiteOutput) SetErrorDocument(v *ErrorDocument) *GetBucketWebsiteOutput { + s.ErrorDocument = v + return s +} + +// SetIndexDocument sets the IndexDocument field's value. +func (s *GetBucketWebsiteOutput) SetIndexDocument(v *IndexDocument) *GetBucketWebsiteOutput { + s.IndexDocument = v + return s +} + +// SetRedirectAllRequestsTo sets the RedirectAllRequestsTo field's value. +func (s *GetBucketWebsiteOutput) SetRedirectAllRequestsTo(v *RedirectAllRequestsTo) *GetBucketWebsiteOutput { + s.RedirectAllRequestsTo = v + return s +} + +// SetRoutingRules sets the RoutingRules field's value. +func (s *GetBucketWebsiteOutput) SetRoutingRules(v []*RoutingRule) *GetBucketWebsiteOutput { + s.RoutingRules = v + return s +} + +type GetObjectAclInput struct { + _ struct{} `locationName:"GetObjectAclRequest" type:"structure"` + + // The bucket name of the object for which to get the ACL information. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // The key of the object for which to get the ACL information. + // + // Key is a required field + Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + + // Confirms that the requester knows that she or he will be charged for the + // request. Bucket owners need not specify this parameter in their requests. + // Documentation on downloading objects from requester pays buckets can be found + // at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` + + // VersionId used to reference a specific version of the object. + VersionId *string `location:"querystring" locationName:"versionId" type:"string"` +} + +// String returns the string representation +func (s GetObjectAclInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetObjectAclInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetObjectAclInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetObjectAclInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetObjectAclInput) SetBucket(v string) *GetObjectAclInput { + s.Bucket = &v + return s +} + +func (s *GetObjectAclInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetKey sets the Key field's value. +func (s *GetObjectAclInput) SetKey(v string) *GetObjectAclInput { + s.Key = &v + return s +} + +// SetRequestPayer sets the RequestPayer field's value. +func (s *GetObjectAclInput) SetRequestPayer(v string) *GetObjectAclInput { + s.RequestPayer = &v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *GetObjectAclInput) SetVersionId(v string) *GetObjectAclInput { + s.VersionId = &v + return s +} + +type GetObjectAclOutput struct { + _ struct{} `type:"structure"` + + // A list of grants. + Grants []*Grant `locationName:"AccessControlList" locationNameList:"Grant" type:"list"` + + // Container for the bucket owner's display name and ID. + Owner *Owner `type:"structure"` + + // If present, indicates that the requester was successfully charged for the + // request. + RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"` +} + +// String returns the string representation +func (s GetObjectAclOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetObjectAclOutput) GoString() string { + return s.String() +} + +// SetGrants sets the Grants field's value. +func (s *GetObjectAclOutput) SetGrants(v []*Grant) *GetObjectAclOutput { + s.Grants = v + return s +} + +// SetOwner sets the Owner field's value. +func (s *GetObjectAclOutput) SetOwner(v *Owner) *GetObjectAclOutput { + s.Owner = v + return s +} + +// SetRequestCharged sets the RequestCharged field's value. +func (s *GetObjectAclOutput) SetRequestCharged(v string) *GetObjectAclOutput { + s.RequestCharged = &v + return s +} + +type GetObjectInput struct { + _ struct{} `locationName:"GetObjectRequest" type:"structure"` + + // The bucket name containing the object. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Return the object only if its entity tag (ETag) is the same as the one specified, + // otherwise return a 412 (precondition failed). + IfMatch *string `location:"header" locationName:"If-Match" type:"string"` + + // Return the object only if it has been modified since the specified time, + // otherwise return a 304 (not modified). + IfModifiedSince *time.Time `location:"header" locationName:"If-Modified-Since" type:"timestamp"` + + // Return the object only if its entity tag (ETag) is different from the one + // specified, otherwise return a 304 (not modified). + IfNoneMatch *string `location:"header" locationName:"If-None-Match" type:"string"` + + // Return the object only if it has not been modified since the specified time, + // otherwise return a 412 (precondition failed). + IfUnmodifiedSince *time.Time `location:"header" locationName:"If-Unmodified-Since" type:"timestamp"` + + // Key of the object to get. + // + // Key is a required field + Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + + // Part number of the object being read. This is a positive integer between + // 1 and 10,000. Effectively performs a 'ranged' GET request for the part specified. + // Useful for downloading just a part of an object. + PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer"` + + // Downloads the specified range bytes of an object. For more information about + // the HTTP Range header, go to http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35. + Range *string `location:"header" locationName:"Range" type:"string"` + + // Confirms that the requester knows that she or he will be charged for the + // request. Bucket owners need not specify this parameter in their requests. + // Documentation on downloading objects from requester pays buckets can be found + // at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` + + // Sets the Cache-Control header of the response. + ResponseCacheControl *string `location:"querystring" locationName:"response-cache-control" type:"string"` + + // Sets the Content-Disposition header of the response + ResponseContentDisposition *string `location:"querystring" locationName:"response-content-disposition" type:"string"` + + // Sets the Content-Encoding header of the response. + ResponseContentEncoding *string `location:"querystring" locationName:"response-content-encoding" type:"string"` + + // Sets the Content-Language header of the response. + ResponseContentLanguage *string `location:"querystring" locationName:"response-content-language" type:"string"` + + // Sets the Content-Type header of the response. + ResponseContentType *string `location:"querystring" locationName:"response-content-type" type:"string"` + + // Sets the Expires header of the response. + ResponseExpires *time.Time `location:"querystring" locationName:"response-expires" type:"timestamp"` + + // Specifies the algorithm to use to when encrypting the object (e.g., AES256). + SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"` + + // Specifies the customer-provided encryption key for Amazon S3 to use in encrypting + // data. This value is used to store the object and then it is discarded; Amazon + // does not store the encryption key. The key must be appropriate for use with + // the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm + // header. + SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"` + + // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. + // Amazon S3 uses this header for a message integrity check to ensure the encryption + // key was transmitted without error. + SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"` + + // VersionId used to reference a specific version of the object. + VersionId *string `location:"querystring" locationName:"versionId" type:"string"` +} + +// String returns the string representation +func (s GetObjectInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetObjectInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetObjectInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetObjectInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetObjectInput) SetBucket(v string) *GetObjectInput { + s.Bucket = &v + return s +} + +func (s *GetObjectInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetIfMatch sets the IfMatch field's value. +func (s *GetObjectInput) SetIfMatch(v string) *GetObjectInput { + s.IfMatch = &v + return s +} + +// SetIfModifiedSince sets the IfModifiedSince field's value. +func (s *GetObjectInput) SetIfModifiedSince(v time.Time) *GetObjectInput { + s.IfModifiedSince = &v + return s +} + +// SetIfNoneMatch sets the IfNoneMatch field's value. +func (s *GetObjectInput) SetIfNoneMatch(v string) *GetObjectInput { + s.IfNoneMatch = &v + return s +} + +// SetIfUnmodifiedSince sets the IfUnmodifiedSince field's value. +func (s *GetObjectInput) SetIfUnmodifiedSince(v time.Time) *GetObjectInput { + s.IfUnmodifiedSince = &v + return s +} + +// SetKey sets the Key field's value. +func (s *GetObjectInput) SetKey(v string) *GetObjectInput { + s.Key = &v + return s +} + +// SetPartNumber sets the PartNumber field's value. +func (s *GetObjectInput) SetPartNumber(v int64) *GetObjectInput { + s.PartNumber = &v + return s +} + +// SetRange sets the Range field's value. +func (s *GetObjectInput) SetRange(v string) *GetObjectInput { + s.Range = &v + return s +} + +// SetRequestPayer sets the RequestPayer field's value. +func (s *GetObjectInput) SetRequestPayer(v string) *GetObjectInput { + s.RequestPayer = &v + return s +} + +// SetResponseCacheControl sets the ResponseCacheControl field's value. +func (s *GetObjectInput) SetResponseCacheControl(v string) *GetObjectInput { + s.ResponseCacheControl = &v + return s +} + +// SetResponseContentDisposition sets the ResponseContentDisposition field's value. +func (s *GetObjectInput) SetResponseContentDisposition(v string) *GetObjectInput { + s.ResponseContentDisposition = &v + return s +} + +// SetResponseContentEncoding sets the ResponseContentEncoding field's value. +func (s *GetObjectInput) SetResponseContentEncoding(v string) *GetObjectInput { + s.ResponseContentEncoding = &v + return s +} + +// SetResponseContentLanguage sets the ResponseContentLanguage field's value. +func (s *GetObjectInput) SetResponseContentLanguage(v string) *GetObjectInput { + s.ResponseContentLanguage = &v + return s +} + +// SetResponseContentType sets the ResponseContentType field's value. +func (s *GetObjectInput) SetResponseContentType(v string) *GetObjectInput { + s.ResponseContentType = &v + return s +} + +// SetResponseExpires sets the ResponseExpires field's value. +func (s *GetObjectInput) SetResponseExpires(v time.Time) *GetObjectInput { + s.ResponseExpires = &v + return s +} + +// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value. +func (s *GetObjectInput) SetSSECustomerAlgorithm(v string) *GetObjectInput { + s.SSECustomerAlgorithm = &v + return s +} + +// SetSSECustomerKey sets the SSECustomerKey field's value. +func (s *GetObjectInput) SetSSECustomerKey(v string) *GetObjectInput { + s.SSECustomerKey = &v + return s +} + +func (s *GetObjectInput) getSSECustomerKey() (v string) { + if s.SSECustomerKey == nil { + return v + } + return *s.SSECustomerKey +} + +// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value. +func (s *GetObjectInput) SetSSECustomerKeyMD5(v string) *GetObjectInput { + s.SSECustomerKeyMD5 = &v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *GetObjectInput) SetVersionId(v string) *GetObjectInput { + s.VersionId = &v + return s +} + +type GetObjectLegalHoldInput struct { + _ struct{} `locationName:"GetObjectLegalHoldRequest" type:"structure"` + + // The bucket containing the object whose Legal Hold status you want to retrieve. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // The key name for the object whose Legal Hold status you want to retrieve. + // + // Key is a required field + Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + + // Confirms that the requester knows that she or he will be charged for the + // request. Bucket owners need not specify this parameter in their requests. + // Documentation on downloading objects from requester pays buckets can be found + // at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` + + // The version ID of the object whose Legal Hold status you want to retrieve. + VersionId *string `location:"querystring" locationName:"versionId" type:"string"` +} + +// String returns the string representation +func (s GetObjectLegalHoldInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetObjectLegalHoldInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetObjectLegalHoldInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetObjectLegalHoldInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetObjectLegalHoldInput) SetBucket(v string) *GetObjectLegalHoldInput { + s.Bucket = &v + return s +} + +func (s *GetObjectLegalHoldInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetKey sets the Key field's value. +func (s *GetObjectLegalHoldInput) SetKey(v string) *GetObjectLegalHoldInput { + s.Key = &v + return s +} + +// SetRequestPayer sets the RequestPayer field's value. +func (s *GetObjectLegalHoldInput) SetRequestPayer(v string) *GetObjectLegalHoldInput { + s.RequestPayer = &v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *GetObjectLegalHoldInput) SetVersionId(v string) *GetObjectLegalHoldInput { + s.VersionId = &v + return s +} + +type GetObjectLegalHoldOutput struct { + _ struct{} `type:"structure" payload:"LegalHold"` + + // The current Legal Hold status for the specified object. + LegalHold *ObjectLockLegalHold `type:"structure"` +} + +// String returns the string representation +func (s GetObjectLegalHoldOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetObjectLegalHoldOutput) GoString() string { + return s.String() +} + +// SetLegalHold sets the LegalHold field's value. +func (s *GetObjectLegalHoldOutput) SetLegalHold(v *ObjectLockLegalHold) *GetObjectLegalHoldOutput { + s.LegalHold = v + return s +} + +type GetObjectLockConfigurationInput struct { + _ struct{} `locationName:"GetObjectLockConfigurationRequest" type:"structure"` + + // The bucket whose Object Lock configuration you want to retrieve. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetObjectLockConfigurationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetObjectLockConfigurationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetObjectLockConfigurationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetObjectLockConfigurationInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetObjectLockConfigurationInput) SetBucket(v string) *GetObjectLockConfigurationInput { + s.Bucket = &v + return s +} + +func (s *GetObjectLockConfigurationInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type GetObjectLockConfigurationOutput struct { + _ struct{} `type:"structure" payload:"ObjectLockConfiguration"` + + // The specified bucket's Object Lock configuration. + ObjectLockConfiguration *ObjectLockConfiguration `type:"structure"` +} + +// String returns the string representation +func (s GetObjectLockConfigurationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetObjectLockConfigurationOutput) GoString() string { + return s.String() +} + +// SetObjectLockConfiguration sets the ObjectLockConfiguration field's value. +func (s *GetObjectLockConfigurationOutput) SetObjectLockConfiguration(v *ObjectLockConfiguration) *GetObjectLockConfigurationOutput { + s.ObjectLockConfiguration = v + return s +} + +type GetObjectOutput struct { + _ struct{} `type:"structure" payload:"Body"` + + // Indicates that a range of bytes was specifed. + AcceptRanges *string `location:"header" locationName:"accept-ranges" type:"string"` + + // Object data. + Body io.ReadCloser `type:"blob"` + + // Specifies caching behavior along the request/reply chain. + CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"` + + // Specifies presentational information for the object. + ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"` + + // Specifies what content encodings have been applied to the object and thus + // what decoding mechanisms must be applied to obtain the media-type referenced + // by the Content-Type header field. + ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"` + + // The language the content is in. + ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"` + + // Size of the body in bytes. + ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"` + + // The portion of the object returned in the response. + ContentRange *string `location:"header" locationName:"Content-Range" type:"string"` + + // A standard MIME type describing the format of the object data. + ContentType *string `location:"header" locationName:"Content-Type" type:"string"` + + // Specifies whether the object retrieved was (true) or was not (false) a Delete + // Marker. If false, this response header does not appear in the response. + DeleteMarker *bool `location:"header" locationName:"x-amz-delete-marker" type:"boolean"` + + // An ETag is an opaque identifier assigned by a web server to a specific version + // of a resource found at a URL + ETag *string `location:"header" locationName:"ETag" type:"string"` + + // If the object expiration is configured (see PUT Bucket lifecycle), the response + // includes this header. It includes the expiry-date and rule-id key value pairs + // providing object expiration information. The value of the rule-id is URL + // encoded. + Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"` + + // The date and time at which the object is no longer cacheable. + Expires *string `location:"header" locationName:"Expires" type:"string"` + + // Last modified date of the object + LastModified *time.Time `location:"header" locationName:"Last-Modified" type:"timestamp"` + + // A map of metadata to store with the object in S3. + Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"` + + // This is set to the number of metadata entries not returned in x-amz-meta + // headers. This can happen if you create metadata using an API like SOAP that + // supports more flexible metadata than the REST API. For example, using SOAP, + // you can create metadata whose values are not legal HTTP headers. + MissingMeta *int64 `location:"header" locationName:"x-amz-missing-meta" type:"integer"` + + // Indicates whether this object has an active legal hold. This field is only + // returned if you have permission to view an object's legal hold status. + ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"` + + // The Object Lock mode currently in place for this object. + ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"` + + // The date and time when this object's Object Lock will expire. + ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"` + + // The count of parts this object has. + PartsCount *int64 `location:"header" locationName:"x-amz-mp-parts-count" type:"integer"` + + // Amazon S3 can return this if your request involves a bucket that is either + // a source or destination in a replication rule. + ReplicationStatus *string `location:"header" locationName:"x-amz-replication-status" type:"string" enum:"ReplicationStatus"` + + // If present, indicates that the requester was successfully charged for the + // request. + RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"` + + // Provides information about object restoration operation and expiration time + // of the restored object copy. + Restore *string `location:"header" locationName:"x-amz-restore" type:"string"` + + // If server-side encryption with a customer-provided encryption key was requested, + // the response will include this header confirming the encryption algorithm + // used. + SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"` + + // If server-side encryption with a customer-provided encryption key was requested, + // the response will include this header to provide round trip message integrity + // verification of the customer-provided encryption key. + SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"` + + // If present, specifies the ID of the AWS Key Management Service (KMS) customer + // master key (CMK) that was used for the object. + SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"` + + // The Server-side encryption algorithm used when storing this object in S3 + // (e.g., AES256, aws:kms). + ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"` + + // Provides storage class information of the object. Amazon S3 returns this + // header for all objects except for Standard storage class objects. + StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"` + + // The number of tags, if any, on the object. + TagCount *int64 `location:"header" locationName:"x-amz-tagging-count" type:"integer"` + + // Version of the object. + VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"` + + // If the bucket is configured as a website, redirects requests for this object + // to another object in the same bucket or to an external URL. Amazon S3 stores + // the value of this header in the object metadata. + WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"` +} + +// String returns the string representation +func (s GetObjectOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetObjectOutput) GoString() string { + return s.String() +} + +// SetAcceptRanges sets the AcceptRanges field's value. +func (s *GetObjectOutput) SetAcceptRanges(v string) *GetObjectOutput { + s.AcceptRanges = &v + return s +} + +// SetBody sets the Body field's value. +func (s *GetObjectOutput) SetBody(v io.ReadCloser) *GetObjectOutput { + s.Body = v + return s +} + +// SetCacheControl sets the CacheControl field's value. +func (s *GetObjectOutput) SetCacheControl(v string) *GetObjectOutput { + s.CacheControl = &v + return s +} + +// SetContentDisposition sets the ContentDisposition field's value. +func (s *GetObjectOutput) SetContentDisposition(v string) *GetObjectOutput { + s.ContentDisposition = &v + return s +} + +// SetContentEncoding sets the ContentEncoding field's value. +func (s *GetObjectOutput) SetContentEncoding(v string) *GetObjectOutput { + s.ContentEncoding = &v + return s +} + +// SetContentLanguage sets the ContentLanguage field's value. +func (s *GetObjectOutput) SetContentLanguage(v string) *GetObjectOutput { + s.ContentLanguage = &v + return s +} + +// SetContentLength sets the ContentLength field's value. +func (s *GetObjectOutput) SetContentLength(v int64) *GetObjectOutput { + s.ContentLength = &v + return s +} + +// SetContentRange sets the ContentRange field's value. +func (s *GetObjectOutput) SetContentRange(v string) *GetObjectOutput { + s.ContentRange = &v + return s +} + +// SetContentType sets the ContentType field's value. +func (s *GetObjectOutput) SetContentType(v string) *GetObjectOutput { + s.ContentType = &v + return s +} + +// SetDeleteMarker sets the DeleteMarker field's value. +func (s *GetObjectOutput) SetDeleteMarker(v bool) *GetObjectOutput { + s.DeleteMarker = &v + return s +} + +// SetETag sets the ETag field's value. +func (s *GetObjectOutput) SetETag(v string) *GetObjectOutput { + s.ETag = &v + return s +} + +// SetExpiration sets the Expiration field's value. +func (s *GetObjectOutput) SetExpiration(v string) *GetObjectOutput { + s.Expiration = &v + return s +} + +// SetExpires sets the Expires field's value. +func (s *GetObjectOutput) SetExpires(v string) *GetObjectOutput { + s.Expires = &v + return s +} + +// SetLastModified sets the LastModified field's value. +func (s *GetObjectOutput) SetLastModified(v time.Time) *GetObjectOutput { + s.LastModified = &v + return s +} + +// SetMetadata sets the Metadata field's value. +func (s *GetObjectOutput) SetMetadata(v map[string]*string) *GetObjectOutput { + s.Metadata = v + return s +} + +// SetMissingMeta sets the MissingMeta field's value. +func (s *GetObjectOutput) SetMissingMeta(v int64) *GetObjectOutput { + s.MissingMeta = &v + return s +} + +// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value. +func (s *GetObjectOutput) SetObjectLockLegalHoldStatus(v string) *GetObjectOutput { + s.ObjectLockLegalHoldStatus = &v + return s +} + +// SetObjectLockMode sets the ObjectLockMode field's value. +func (s *GetObjectOutput) SetObjectLockMode(v string) *GetObjectOutput { + s.ObjectLockMode = &v + return s +} + +// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value. +func (s *GetObjectOutput) SetObjectLockRetainUntilDate(v time.Time) *GetObjectOutput { + s.ObjectLockRetainUntilDate = &v + return s +} + +// SetPartsCount sets the PartsCount field's value. +func (s *GetObjectOutput) SetPartsCount(v int64) *GetObjectOutput { + s.PartsCount = &v + return s +} + +// SetReplicationStatus sets the ReplicationStatus field's value. +func (s *GetObjectOutput) SetReplicationStatus(v string) *GetObjectOutput { + s.ReplicationStatus = &v + return s +} + +// SetRequestCharged sets the RequestCharged field's value. +func (s *GetObjectOutput) SetRequestCharged(v string) *GetObjectOutput { + s.RequestCharged = &v + return s +} + +// SetRestore sets the Restore field's value. +func (s *GetObjectOutput) SetRestore(v string) *GetObjectOutput { + s.Restore = &v + return s +} + +// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value. +func (s *GetObjectOutput) SetSSECustomerAlgorithm(v string) *GetObjectOutput { + s.SSECustomerAlgorithm = &v + return s +} + +// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value. +func (s *GetObjectOutput) SetSSECustomerKeyMD5(v string) *GetObjectOutput { + s.SSECustomerKeyMD5 = &v + return s +} + +// SetSSEKMSKeyId sets the SSEKMSKeyId field's value. +func (s *GetObjectOutput) SetSSEKMSKeyId(v string) *GetObjectOutput { + s.SSEKMSKeyId = &v + return s +} + +// SetServerSideEncryption sets the ServerSideEncryption field's value. +func (s *GetObjectOutput) SetServerSideEncryption(v string) *GetObjectOutput { + s.ServerSideEncryption = &v + return s +} + +// SetStorageClass sets the StorageClass field's value. +func (s *GetObjectOutput) SetStorageClass(v string) *GetObjectOutput { + s.StorageClass = &v + return s +} + +// SetTagCount sets the TagCount field's value. +func (s *GetObjectOutput) SetTagCount(v int64) *GetObjectOutput { + s.TagCount = &v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *GetObjectOutput) SetVersionId(v string) *GetObjectOutput { + s.VersionId = &v + return s +} + +// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value. +func (s *GetObjectOutput) SetWebsiteRedirectLocation(v string) *GetObjectOutput { + s.WebsiteRedirectLocation = &v + return s +} + +type GetObjectRetentionInput struct { + _ struct{} `locationName:"GetObjectRetentionRequest" type:"structure"` + + // The bucket containing the object whose retention settings you want to retrieve. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // The key name for the object whose retention settings you want to retrieve. + // + // Key is a required field + Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + + // Confirms that the requester knows that she or he will be charged for the + // request. Bucket owners need not specify this parameter in their requests. + // Documentation on downloading objects from requester pays buckets can be found + // at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` + + // The version ID for the object whose retention settings you want to retrieve. + VersionId *string `location:"querystring" locationName:"versionId" type:"string"` +} + +// String returns the string representation +func (s GetObjectRetentionInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetObjectRetentionInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetObjectRetentionInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetObjectRetentionInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetObjectRetentionInput) SetBucket(v string) *GetObjectRetentionInput { + s.Bucket = &v + return s +} + +func (s *GetObjectRetentionInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetKey sets the Key field's value. +func (s *GetObjectRetentionInput) SetKey(v string) *GetObjectRetentionInput { + s.Key = &v + return s +} + +// SetRequestPayer sets the RequestPayer field's value. +func (s *GetObjectRetentionInput) SetRequestPayer(v string) *GetObjectRetentionInput { + s.RequestPayer = &v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *GetObjectRetentionInput) SetVersionId(v string) *GetObjectRetentionInput { + s.VersionId = &v + return s +} + +type GetObjectRetentionOutput struct { + _ struct{} `type:"structure" payload:"Retention"` + + // The container element for an object's retention settings. + Retention *ObjectLockRetention `type:"structure"` +} + +// String returns the string representation +func (s GetObjectRetentionOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetObjectRetentionOutput) GoString() string { + return s.String() +} + +// SetRetention sets the Retention field's value. +func (s *GetObjectRetentionOutput) SetRetention(v *ObjectLockRetention) *GetObjectRetentionOutput { + s.Retention = v + return s +} + +type GetObjectTaggingInput struct { + _ struct{} `locationName:"GetObjectTaggingRequest" type:"structure"` + + // The bucket name containing the object for which to get the tagging information. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Object key for which to get the tagging information. + // + // Key is a required field + Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + + // The versionId of the object for which to get the tagging information. + VersionId *string `location:"querystring" locationName:"versionId" type:"string"` +} + +// String returns the string representation +func (s GetObjectTaggingInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetObjectTaggingInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetObjectTaggingInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetObjectTaggingInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetObjectTaggingInput) SetBucket(v string) *GetObjectTaggingInput { + s.Bucket = &v + return s +} + +func (s *GetObjectTaggingInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetKey sets the Key field's value. +func (s *GetObjectTaggingInput) SetKey(v string) *GetObjectTaggingInput { + s.Key = &v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *GetObjectTaggingInput) SetVersionId(v string) *GetObjectTaggingInput { + s.VersionId = &v + return s +} + +type GetObjectTaggingOutput struct { + _ struct{} `type:"structure"` + + // Contains the tag set. + // + // TagSet is a required field + TagSet []*Tag `locationNameList:"Tag" type:"list" required:"true"` + + // The versionId of the object for which you got the tagging information. + VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"` +} + +// String returns the string representation +func (s GetObjectTaggingOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetObjectTaggingOutput) GoString() string { + return s.String() +} + +// SetTagSet sets the TagSet field's value. +func (s *GetObjectTaggingOutput) SetTagSet(v []*Tag) *GetObjectTaggingOutput { + s.TagSet = v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *GetObjectTaggingOutput) SetVersionId(v string) *GetObjectTaggingOutput { + s.VersionId = &v + return s +} + +type GetObjectTorrentInput struct { + _ struct{} `locationName:"GetObjectTorrentRequest" type:"structure"` + + // The name of the bucket containing the object for which to get the torrent + // files. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // The object key for which to get the information. + // + // Key is a required field + Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + + // Confirms that the requester knows that she or he will be charged for the + // request. Bucket owners need not specify this parameter in their requests. + // Documentation on downloading objects from requester pays buckets can be found + // at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` +} + +// String returns the string representation +func (s GetObjectTorrentInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetObjectTorrentInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetObjectTorrentInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetObjectTorrentInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetObjectTorrentInput) SetBucket(v string) *GetObjectTorrentInput { + s.Bucket = &v + return s +} + +func (s *GetObjectTorrentInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetKey sets the Key field's value. +func (s *GetObjectTorrentInput) SetKey(v string) *GetObjectTorrentInput { + s.Key = &v + return s +} + +// SetRequestPayer sets the RequestPayer field's value. +func (s *GetObjectTorrentInput) SetRequestPayer(v string) *GetObjectTorrentInput { + s.RequestPayer = &v + return s +} + +type GetObjectTorrentOutput struct { + _ struct{} `type:"structure" payload:"Body"` + + // A Bencoded dictionary as defined by the BitTorrent specification + Body io.ReadCloser `type:"blob"` + + // If present, indicates that the requester was successfully charged for the + // request. + RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"` +} + +// String returns the string representation +func (s GetObjectTorrentOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetObjectTorrentOutput) GoString() string { + return s.String() +} + +// SetBody sets the Body field's value. +func (s *GetObjectTorrentOutput) SetBody(v io.ReadCloser) *GetObjectTorrentOutput { + s.Body = v + return s +} + +// SetRequestCharged sets the RequestCharged field's value. +func (s *GetObjectTorrentOutput) SetRequestCharged(v string) *GetObjectTorrentOutput { + s.RequestCharged = &v + return s +} + +type GetPublicAccessBlockInput struct { + _ struct{} `locationName:"GetPublicAccessBlockRequest" type:"structure"` + + // The name of the Amazon S3 bucket whose PublicAccessBlock configuration you + // want to retrieve. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetPublicAccessBlockInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetPublicAccessBlockInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetPublicAccessBlockInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetPublicAccessBlockInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *GetPublicAccessBlockInput) SetBucket(v string) *GetPublicAccessBlockInput { + s.Bucket = &v + return s +} + +func (s *GetPublicAccessBlockInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type GetPublicAccessBlockOutput struct { + _ struct{} `type:"structure" payload:"PublicAccessBlockConfiguration"` + + // The PublicAccessBlock configuration currently in effect for this Amazon S3 + // bucket. + PublicAccessBlockConfiguration *PublicAccessBlockConfiguration `type:"structure"` +} + +// String returns the string representation +func (s GetPublicAccessBlockOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetPublicAccessBlockOutput) GoString() string { + return s.String() +} + +// SetPublicAccessBlockConfiguration sets the PublicAccessBlockConfiguration field's value. +func (s *GetPublicAccessBlockOutput) SetPublicAccessBlockConfiguration(v *PublicAccessBlockConfiguration) *GetPublicAccessBlockOutput { + s.PublicAccessBlockConfiguration = v + return s +} + +// Container for Glacier job parameters. +type GlacierJobParameters struct { + _ struct{} `type:"structure"` + + // Glacier retrieval tier at which the restore will be processed. + // + // Tier is a required field + Tier *string `type:"string" required:"true" enum:"Tier"` +} + +// String returns the string representation +func (s GlacierJobParameters) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GlacierJobParameters) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GlacierJobParameters) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GlacierJobParameters"} + if s.Tier == nil { + invalidParams.Add(request.NewErrParamRequired("Tier")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetTier sets the Tier field's value. +func (s *GlacierJobParameters) SetTier(v string) *GlacierJobParameters { + s.Tier = &v + return s +} + +// Container for grant information. +type Grant struct { + _ struct{} `type:"structure"` + + // The person being granted permissions. + Grantee *Grantee `type:"structure" xmlPrefix:"xsi" xmlURI:"http://www.w3.org/2001/XMLSchema-instance"` + + // Specifies the permission given to the grantee. + Permission *string `type:"string" enum:"Permission"` +} + +// String returns the string representation +func (s Grant) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Grant) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *Grant) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "Grant"} + if s.Grantee != nil { + if err := s.Grantee.Validate(); err != nil { + invalidParams.AddNested("Grantee", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetGrantee sets the Grantee field's value. +func (s *Grant) SetGrantee(v *Grantee) *Grant { + s.Grantee = v + return s +} + +// SetPermission sets the Permission field's value. +func (s *Grant) SetPermission(v string) *Grant { + s.Permission = &v + return s +} + +// Container for the person being granted permissions. +type Grantee struct { + _ struct{} `type:"structure" xmlPrefix:"xsi" xmlURI:"http://www.w3.org/2001/XMLSchema-instance"` + + // Screen name of the grantee. + DisplayName *string `type:"string"` + + // Email address of the grantee. + EmailAddress *string `type:"string"` + + // The canonical user ID of the grantee. + ID *string `type:"string"` + + // Type of grantee + // + // Type is a required field + Type *string `locationName:"xsi:type" type:"string" xmlAttribute:"true" required:"true" enum:"Type"` + + // URI of the grantee group. + URI *string `type:"string"` +} + +// String returns the string representation +func (s Grantee) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Grantee) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *Grantee) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "Grantee"} + if s.Type == nil { + invalidParams.Add(request.NewErrParamRequired("Type")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDisplayName sets the DisplayName field's value. +func (s *Grantee) SetDisplayName(v string) *Grantee { + s.DisplayName = &v + return s +} + +// SetEmailAddress sets the EmailAddress field's value. +func (s *Grantee) SetEmailAddress(v string) *Grantee { + s.EmailAddress = &v + return s +} + +// SetID sets the ID field's value. +func (s *Grantee) SetID(v string) *Grantee { + s.ID = &v + return s +} + +// SetType sets the Type field's value. +func (s *Grantee) SetType(v string) *Grantee { + s.Type = &v + return s +} + +// SetURI sets the URI field's value. +func (s *Grantee) SetURI(v string) *Grantee { + s.URI = &v + return s +} + +type HeadBucketInput struct { + _ struct{} `locationName:"HeadBucketRequest" type:"structure"` + + // The bucket name. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s HeadBucketInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s HeadBucketInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *HeadBucketInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "HeadBucketInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *HeadBucketInput) SetBucket(v string) *HeadBucketInput { + s.Bucket = &v + return s +} + +func (s *HeadBucketInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type HeadBucketOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s HeadBucketOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s HeadBucketOutput) GoString() string { + return s.String() +} + +type HeadObjectInput struct { + _ struct{} `locationName:"HeadObjectRequest" type:"structure"` + + // The name of the bucket containing the object. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Return the object only if its entity tag (ETag) is the same as the one specified, + // otherwise return a 412 (precondition failed). + IfMatch *string `location:"header" locationName:"If-Match" type:"string"` + + // Return the object only if it has been modified since the specified time, + // otherwise return a 304 (not modified). + IfModifiedSince *time.Time `location:"header" locationName:"If-Modified-Since" type:"timestamp"` + + // Return the object only if its entity tag (ETag) is different from the one + // specified, otherwise return a 304 (not modified). + IfNoneMatch *string `location:"header" locationName:"If-None-Match" type:"string"` + + // Return the object only if it has not been modified since the specified time, + // otherwise return a 412 (precondition failed). + IfUnmodifiedSince *time.Time `location:"header" locationName:"If-Unmodified-Since" type:"timestamp"` + + // The object key. + // + // Key is a required field + Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + + // Part number of the object being read. This is a positive integer between + // 1 and 10,000. Effectively performs a 'ranged' HEAD request for the part specified. + // Useful querying about the size of the part and the number of parts in this + // object. + PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer"` + + // Downloads the specified range bytes of an object. For more information about + // the HTTP Range header, go to http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35. + Range *string `location:"header" locationName:"Range" type:"string"` + + // Confirms that the requester knows that she or he will be charged for the + // request. Bucket owners need not specify this parameter in their requests. + // Documentation on downloading objects from requester pays buckets can be found + // at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` + + // Specifies the algorithm to use to when encrypting the object (e.g., AES256). + SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"` + + // Specifies the customer-provided encryption key for Amazon S3 to use in encrypting + // data. This value is used to store the object and then it is discarded; Amazon + // does not store the encryption key. The key must be appropriate for use with + // the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm + // header. + SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"` + + // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. + // Amazon S3 uses this header for a message integrity check to ensure the encryption + // key was transmitted without error. + SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"` + + // VersionId used to reference a specific version of the object. + VersionId *string `location:"querystring" locationName:"versionId" type:"string"` +} + +// String returns the string representation +func (s HeadObjectInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s HeadObjectInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *HeadObjectInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "HeadObjectInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *HeadObjectInput) SetBucket(v string) *HeadObjectInput { + s.Bucket = &v + return s +} + +func (s *HeadObjectInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetIfMatch sets the IfMatch field's value. +func (s *HeadObjectInput) SetIfMatch(v string) *HeadObjectInput { + s.IfMatch = &v + return s +} + +// SetIfModifiedSince sets the IfModifiedSince field's value. +func (s *HeadObjectInput) SetIfModifiedSince(v time.Time) *HeadObjectInput { + s.IfModifiedSince = &v + return s +} + +// SetIfNoneMatch sets the IfNoneMatch field's value. +func (s *HeadObjectInput) SetIfNoneMatch(v string) *HeadObjectInput { + s.IfNoneMatch = &v + return s +} + +// SetIfUnmodifiedSince sets the IfUnmodifiedSince field's value. +func (s *HeadObjectInput) SetIfUnmodifiedSince(v time.Time) *HeadObjectInput { + s.IfUnmodifiedSince = &v + return s +} + +// SetKey sets the Key field's value. +func (s *HeadObjectInput) SetKey(v string) *HeadObjectInput { + s.Key = &v + return s +} + +// SetPartNumber sets the PartNumber field's value. +func (s *HeadObjectInput) SetPartNumber(v int64) *HeadObjectInput { + s.PartNumber = &v + return s +} + +// SetRange sets the Range field's value. +func (s *HeadObjectInput) SetRange(v string) *HeadObjectInput { + s.Range = &v + return s +} + +// SetRequestPayer sets the RequestPayer field's value. +func (s *HeadObjectInput) SetRequestPayer(v string) *HeadObjectInput { + s.RequestPayer = &v + return s +} + +// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value. +func (s *HeadObjectInput) SetSSECustomerAlgorithm(v string) *HeadObjectInput { + s.SSECustomerAlgorithm = &v + return s +} + +// SetSSECustomerKey sets the SSECustomerKey field's value. +func (s *HeadObjectInput) SetSSECustomerKey(v string) *HeadObjectInput { + s.SSECustomerKey = &v + return s +} + +func (s *HeadObjectInput) getSSECustomerKey() (v string) { + if s.SSECustomerKey == nil { + return v + } + return *s.SSECustomerKey +} + +// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value. +func (s *HeadObjectInput) SetSSECustomerKeyMD5(v string) *HeadObjectInput { + s.SSECustomerKeyMD5 = &v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *HeadObjectInput) SetVersionId(v string) *HeadObjectInput { + s.VersionId = &v + return s +} + +type HeadObjectOutput struct { + _ struct{} `type:"structure"` + + // Indicates that a range of bytes was specifed. + AcceptRanges *string `location:"header" locationName:"accept-ranges" type:"string"` + + // Specifies caching behavior along the request/reply chain. + CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"` + + // Specifies presentational information for the object. + ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"` + + // Specifies what content encodings have been applied to the object and thus + // what decoding mechanisms must be applied to obtain the media-type referenced + // by the Content-Type header field. + ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"` + + // The language the content is in. + ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"` + + // Size of the body in bytes. + ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"` + + // A standard MIME type describing the format of the object data. + ContentType *string `location:"header" locationName:"Content-Type" type:"string"` + + // Specifies whether the object retrieved was (true) or was not (false) a Delete + // Marker. If false, this response header does not appear in the response. + DeleteMarker *bool `location:"header" locationName:"x-amz-delete-marker" type:"boolean"` + + // An ETag is an opaque identifier assigned by a web server to a specific version + // of a resource found at a URL + ETag *string `location:"header" locationName:"ETag" type:"string"` + + // If the object expiration is configured (see PUT Bucket lifecycle), the response + // includes this header. It includes the expiry-date and rule-id key value pairs + // providing object expiration information. The value of the rule-id is URL + // encoded. + Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"` + + // The date and time at which the object is no longer cacheable. + Expires *string `location:"header" locationName:"Expires" type:"string"` + + // Last modified date of the object + LastModified *time.Time `location:"header" locationName:"Last-Modified" type:"timestamp"` + + // A map of metadata to store with the object in S3. + Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"` + + // This is set to the number of metadata entries not returned in x-amz-meta + // headers. This can happen if you create metadata using an API like SOAP that + // supports more flexible metadata than the REST API. For example, using SOAP, + // you can create metadata whose values are not legal HTTP headers. + MissingMeta *int64 `location:"header" locationName:"x-amz-missing-meta" type:"integer"` + + // Specifies whether a legal hold is in effect for this object. This header + // is only returned if the requester has the s3:GetObjectLegalHold permission. + // This header is not returned if the specified version of this object has never + // had a legal hold applied. For more information about S3 Object Lock, see + // Object Lock (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). + ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"` + + // The Object Lock mode, if any, that's in effect for this object. This header + // is only returned if the requester has the s3:GetObjectRetention permission. + // For more information about S3 Object Lock, see Object Lock (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). + ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"` + + // The date and time when the Object Lock retention period expires. This header + // is only returned if the requester has the s3:GetObjectRetention permission. + ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"` + + // The count of parts this object has. + PartsCount *int64 `location:"header" locationName:"x-amz-mp-parts-count" type:"integer"` + + // Amazon S3 can return this header if your request involves a bucket that is + // either a source or destination in a replication rule. + // + // In replication you have a source bucket on which you configure replication + // and destination bucket where Amazon S3 stores object replicas. When you request + // an object (GetObject) or object metadata (HeadObject) from these buckets, + // Amazon S3 will return the x-amz-replication-status header in the response + // as follows: + // + // * If requesting object from the source bucket — Amazon S3 will return + // the x-amz-replication-status header if object in your request is eligible + // for replication. For example, suppose in your replication configuration + // you specify object prefix "TaxDocs" requesting Amazon S3 to replicate + // objects with key prefix "TaxDocs". Then any objects you upload with this + // key name prefix, for example "TaxDocs/document1.pdf", is eligible for + // replication. For any object request with this key name prefix Amazon S3 + // will return the x-amz-replication-status header with value PENDING, COMPLETED + // or FAILED indicating object replication status. + // + // * If requesting object from the destination bucket — Amazon S3 will + // return the x-amz-replication-status header with value REPLICA if object + // in your request is a replica that Amazon S3 created. + // + // For more information, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html). + ReplicationStatus *string `location:"header" locationName:"x-amz-replication-status" type:"string" enum:"ReplicationStatus"` + + // If present, indicates that the requester was successfully charged for the + // request. + RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"` + + // If the object is an archived object (an object whose storage class is GLACIER), + // the response includes this header if either the archive restoration is in + // progress (see RestoreObject or an archive copy is already restored. + // + // If an archive copy is already restored, the header value indicates when Amazon + // S3 is scheduled to delete the object copy. For example: + // + // x-amz-restore: ongoing-request="false", expiry-date="Fri, 23 Dec 2012 00:00:00 + // GMT" + // + // If the object restoration is in progress, the header returns the value ongoing-request="true". + // + // For more information about archiving objects, see Transitioning Objects: + // General Considerations (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-transition-general-considerations). + Restore *string `location:"header" locationName:"x-amz-restore" type:"string"` + + // If server-side encryption with a customer-provided encryption key was requested, + // the response will include this header confirming the encryption algorithm + // used. + SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"` + + // If server-side encryption with a customer-provided encryption key was requested, + // the response will include this header to provide round trip message integrity + // verification of the customer-provided encryption key. + SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"` + + // If present, specifies the ID of the AWS Key Management Service (KMS) customer + // master key (CMK) that was used for the object. + SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"` + + // If the object is stored using server-side encryption either with an AWS KMS + // customer master key (CMK) or an Amazon S3-managed encryption key, the response + // includes this header with the value of the Server-side encryption algorithm + // used when storing this object in S3 (e.g., AES256, aws:kms). + ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"` + + // Provides storage class information of the object. Amazon S3 returns this + // header for all objects except for Standard storage class objects. + // + // For more information, see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html). + StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"` + + // Version of the object. + VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"` + + // If the bucket is configured as a website, redirects requests for this object + // to another object in the same bucket or to an external URL. Amazon S3 stores + // the value of this header in the object metadata. + WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"` +} + +// String returns the string representation +func (s HeadObjectOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s HeadObjectOutput) GoString() string { + return s.String() +} + +// SetAcceptRanges sets the AcceptRanges field's value. +func (s *HeadObjectOutput) SetAcceptRanges(v string) *HeadObjectOutput { + s.AcceptRanges = &v + return s +} + +// SetCacheControl sets the CacheControl field's value. +func (s *HeadObjectOutput) SetCacheControl(v string) *HeadObjectOutput { + s.CacheControl = &v + return s +} + +// SetContentDisposition sets the ContentDisposition field's value. +func (s *HeadObjectOutput) SetContentDisposition(v string) *HeadObjectOutput { + s.ContentDisposition = &v + return s +} + +// SetContentEncoding sets the ContentEncoding field's value. +func (s *HeadObjectOutput) SetContentEncoding(v string) *HeadObjectOutput { + s.ContentEncoding = &v + return s +} + +// SetContentLanguage sets the ContentLanguage field's value. +func (s *HeadObjectOutput) SetContentLanguage(v string) *HeadObjectOutput { + s.ContentLanguage = &v + return s +} + +// SetContentLength sets the ContentLength field's value. +func (s *HeadObjectOutput) SetContentLength(v int64) *HeadObjectOutput { + s.ContentLength = &v + return s +} + +// SetContentType sets the ContentType field's value. +func (s *HeadObjectOutput) SetContentType(v string) *HeadObjectOutput { + s.ContentType = &v + return s +} + +// SetDeleteMarker sets the DeleteMarker field's value. +func (s *HeadObjectOutput) SetDeleteMarker(v bool) *HeadObjectOutput { + s.DeleteMarker = &v + return s +} + +// SetETag sets the ETag field's value. +func (s *HeadObjectOutput) SetETag(v string) *HeadObjectOutput { + s.ETag = &v + return s +} + +// SetExpiration sets the Expiration field's value. +func (s *HeadObjectOutput) SetExpiration(v string) *HeadObjectOutput { + s.Expiration = &v + return s +} + +// SetExpires sets the Expires field's value. +func (s *HeadObjectOutput) SetExpires(v string) *HeadObjectOutput { + s.Expires = &v + return s +} + +// SetLastModified sets the LastModified field's value. +func (s *HeadObjectOutput) SetLastModified(v time.Time) *HeadObjectOutput { + s.LastModified = &v + return s +} + +// SetMetadata sets the Metadata field's value. +func (s *HeadObjectOutput) SetMetadata(v map[string]*string) *HeadObjectOutput { + s.Metadata = v + return s +} + +// SetMissingMeta sets the MissingMeta field's value. +func (s *HeadObjectOutput) SetMissingMeta(v int64) *HeadObjectOutput { + s.MissingMeta = &v + return s +} + +// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value. +func (s *HeadObjectOutput) SetObjectLockLegalHoldStatus(v string) *HeadObjectOutput { + s.ObjectLockLegalHoldStatus = &v + return s +} + +// SetObjectLockMode sets the ObjectLockMode field's value. +func (s *HeadObjectOutput) SetObjectLockMode(v string) *HeadObjectOutput { + s.ObjectLockMode = &v + return s +} + +// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value. +func (s *HeadObjectOutput) SetObjectLockRetainUntilDate(v time.Time) *HeadObjectOutput { + s.ObjectLockRetainUntilDate = &v + return s +} + +// SetPartsCount sets the PartsCount field's value. +func (s *HeadObjectOutput) SetPartsCount(v int64) *HeadObjectOutput { + s.PartsCount = &v + return s +} + +// SetReplicationStatus sets the ReplicationStatus field's value. +func (s *HeadObjectOutput) SetReplicationStatus(v string) *HeadObjectOutput { + s.ReplicationStatus = &v + return s +} + +// SetRequestCharged sets the RequestCharged field's value. +func (s *HeadObjectOutput) SetRequestCharged(v string) *HeadObjectOutput { + s.RequestCharged = &v + return s +} + +// SetRestore sets the Restore field's value. +func (s *HeadObjectOutput) SetRestore(v string) *HeadObjectOutput { + s.Restore = &v + return s +} + +// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value. +func (s *HeadObjectOutput) SetSSECustomerAlgorithm(v string) *HeadObjectOutput { + s.SSECustomerAlgorithm = &v + return s +} + +// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value. +func (s *HeadObjectOutput) SetSSECustomerKeyMD5(v string) *HeadObjectOutput { + s.SSECustomerKeyMD5 = &v + return s +} + +// SetSSEKMSKeyId sets the SSEKMSKeyId field's value. +func (s *HeadObjectOutput) SetSSEKMSKeyId(v string) *HeadObjectOutput { + s.SSEKMSKeyId = &v + return s +} + +// SetServerSideEncryption sets the ServerSideEncryption field's value. +func (s *HeadObjectOutput) SetServerSideEncryption(v string) *HeadObjectOutput { + s.ServerSideEncryption = &v + return s +} + +// SetStorageClass sets the StorageClass field's value. +func (s *HeadObjectOutput) SetStorageClass(v string) *HeadObjectOutput { + s.StorageClass = &v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *HeadObjectOutput) SetVersionId(v string) *HeadObjectOutput { + s.VersionId = &v + return s +} + +// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value. +func (s *HeadObjectOutput) SetWebsiteRedirectLocation(v string) *HeadObjectOutput { + s.WebsiteRedirectLocation = &v + return s +} + +// Container for the Suffix element. +type IndexDocument struct { + _ struct{} `type:"structure"` + + // A suffix that is appended to a request that is for a directory on the website + // endpoint (e.g. if the suffix is index.html and you make a request to samplebucket/images/ + // the data that is returned will be for the object with the key name images/index.html) + // The suffix must not be empty and must not include a slash character. + // + // Suffix is a required field + Suffix *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s IndexDocument) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s IndexDocument) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *IndexDocument) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "IndexDocument"} + if s.Suffix == nil { + invalidParams.Add(request.NewErrParamRequired("Suffix")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetSuffix sets the Suffix field's value. +func (s *IndexDocument) SetSuffix(v string) *IndexDocument { + s.Suffix = &v + return s +} + +// Container element that identifies who initiated the ultipart upload. +type Initiator struct { + _ struct{} `type:"structure"` + + // Name of the Principal. + DisplayName *string `type:"string"` + + // If the principal is an AWS account, it provides the Canonical User ID. If + // the principal is an IAM User, it provides a user ARN value. + ID *string `type:"string"` +} + +// String returns the string representation +func (s Initiator) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Initiator) GoString() string { + return s.String() +} + +// SetDisplayName sets the DisplayName field's value. +func (s *Initiator) SetDisplayName(v string) *Initiator { + s.DisplayName = &v + return s +} + +// SetID sets the ID field's value. +func (s *Initiator) SetID(v string) *Initiator { + s.ID = &v + return s +} + +// Describes the serialization format of the object. +type InputSerialization struct { + _ struct{} `type:"structure"` + + // Describes the serialization of a CSV-encoded object. + CSV *CSVInput `type:"structure"` + + // Specifies object's compression format. Valid values: NONE, GZIP, BZIP2. Default + // Value: NONE. + CompressionType *string `type:"string" enum:"CompressionType"` + + // Specifies JSON as object's input serialization format. + JSON *JSONInput `type:"structure"` + + // Specifies Parquet as object's input serialization format. + Parquet *ParquetInput `type:"structure"` +} + +// String returns the string representation +func (s InputSerialization) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InputSerialization) GoString() string { + return s.String() +} + +// SetCSV sets the CSV field's value. +func (s *InputSerialization) SetCSV(v *CSVInput) *InputSerialization { + s.CSV = v + return s +} + +// SetCompressionType sets the CompressionType field's value. +func (s *InputSerialization) SetCompressionType(v string) *InputSerialization { + s.CompressionType = &v + return s +} + +// SetJSON sets the JSON field's value. +func (s *InputSerialization) SetJSON(v *JSONInput) *InputSerialization { + s.JSON = v + return s +} + +// SetParquet sets the Parquet field's value. +func (s *InputSerialization) SetParquet(v *ParquetInput) *InputSerialization { + s.Parquet = v + return s +} + +// Specifies the inventory configuration for an Amazon S3 bucket. For more information, +// see GET Bucket inventory (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETInventoryConfig.html) +// in the Amazon Simple Storage Service API Reference. +type InventoryConfiguration struct { + _ struct{} `type:"structure"` + + // Contains information about where to publish the inventory results. + // + // Destination is a required field + Destination *InventoryDestination `type:"structure" required:"true"` + + // Specifies an inventory filter. The inventory only includes objects that meet + // the filter's criteria. + Filter *InventoryFilter `type:"structure"` + + // The ID used to identify the inventory configuration. + // + // Id is a required field + Id *string `type:"string" required:"true"` + + // Object versions to include in the inventory list. If set to All, the list + // includes all the object versions, which adds the version-related fields VersionId, + // IsLatest, and DeleteMarker to the list. If set to Current, the list does + // not contain these version-related fields. + // + // IncludedObjectVersions is a required field + IncludedObjectVersions *string `type:"string" required:"true" enum:"InventoryIncludedObjectVersions"` + + // Specifies whether the inventory is enabled or disabled. If set to True, an + // inventory list is generated. If set to False, no inventory list is generated. + // + // IsEnabled is a required field + IsEnabled *bool `type:"boolean" required:"true"` + + // Contains the optional fields that are included in the inventory results. + OptionalFields []*string `locationNameList:"Field" type:"list"` + + // Specifies the schedule for generating inventory results. + // + // Schedule is a required field + Schedule *InventorySchedule `type:"structure" required:"true"` +} + +// String returns the string representation +func (s InventoryConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InventoryConfiguration) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *InventoryConfiguration) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "InventoryConfiguration"} + if s.Destination == nil { + invalidParams.Add(request.NewErrParamRequired("Destination")) + } + if s.Id == nil { + invalidParams.Add(request.NewErrParamRequired("Id")) + } + if s.IncludedObjectVersions == nil { + invalidParams.Add(request.NewErrParamRequired("IncludedObjectVersions")) + } + if s.IsEnabled == nil { + invalidParams.Add(request.NewErrParamRequired("IsEnabled")) + } + if s.Schedule == nil { + invalidParams.Add(request.NewErrParamRequired("Schedule")) + } + if s.Destination != nil { + if err := s.Destination.Validate(); err != nil { + invalidParams.AddNested("Destination", err.(request.ErrInvalidParams)) + } + } + if s.Filter != nil { + if err := s.Filter.Validate(); err != nil { + invalidParams.AddNested("Filter", err.(request.ErrInvalidParams)) + } + } + if s.Schedule != nil { + if err := s.Schedule.Validate(); err != nil { + invalidParams.AddNested("Schedule", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDestination sets the Destination field's value. +func (s *InventoryConfiguration) SetDestination(v *InventoryDestination) *InventoryConfiguration { + s.Destination = v + return s +} + +// SetFilter sets the Filter field's value. +func (s *InventoryConfiguration) SetFilter(v *InventoryFilter) *InventoryConfiguration { + s.Filter = v + return s +} + +// SetId sets the Id field's value. +func (s *InventoryConfiguration) SetId(v string) *InventoryConfiguration { + s.Id = &v + return s +} + +// SetIncludedObjectVersions sets the IncludedObjectVersions field's value. +func (s *InventoryConfiguration) SetIncludedObjectVersions(v string) *InventoryConfiguration { + s.IncludedObjectVersions = &v + return s +} + +// SetIsEnabled sets the IsEnabled field's value. +func (s *InventoryConfiguration) SetIsEnabled(v bool) *InventoryConfiguration { + s.IsEnabled = &v + return s +} + +// SetOptionalFields sets the OptionalFields field's value. +func (s *InventoryConfiguration) SetOptionalFields(v []*string) *InventoryConfiguration { + s.OptionalFields = v + return s +} + +// SetSchedule sets the Schedule field's value. +func (s *InventoryConfiguration) SetSchedule(v *InventorySchedule) *InventoryConfiguration { + s.Schedule = v + return s +} + +// Specifies the inventory configuration for an Amazon S3 bucket. +type InventoryDestination struct { + _ struct{} `type:"structure"` + + // Contains the bucket name, file format, bucket owner (optional), and prefix + // (optional) where inventory results are published. + // + // S3BucketDestination is a required field + S3BucketDestination *InventoryS3BucketDestination `type:"structure" required:"true"` +} + +// String returns the string representation +func (s InventoryDestination) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InventoryDestination) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *InventoryDestination) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "InventoryDestination"} + if s.S3BucketDestination == nil { + invalidParams.Add(request.NewErrParamRequired("S3BucketDestination")) + } + if s.S3BucketDestination != nil { + if err := s.S3BucketDestination.Validate(); err != nil { + invalidParams.AddNested("S3BucketDestination", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetS3BucketDestination sets the S3BucketDestination field's value. +func (s *InventoryDestination) SetS3BucketDestination(v *InventoryS3BucketDestination) *InventoryDestination { + s.S3BucketDestination = v + return s +} + +// Contains the type of server-side encryption used to encrypt the inventory +// results. +type InventoryEncryption struct { + _ struct{} `type:"structure"` + + // Specifies the use of SSE-KMS to encrypt delivered Inventory reports. + SSEKMS *SSEKMS `locationName:"SSE-KMS" type:"structure"` + + // Specifies the use of SSE-S3 to encrypt delivered Inventory reports. + SSES3 *SSES3 `locationName:"SSE-S3" type:"structure"` +} + +// String returns the string representation +func (s InventoryEncryption) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InventoryEncryption) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *InventoryEncryption) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "InventoryEncryption"} + if s.SSEKMS != nil { + if err := s.SSEKMS.Validate(); err != nil { + invalidParams.AddNested("SSEKMS", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetSSEKMS sets the SSEKMS field's value. +func (s *InventoryEncryption) SetSSEKMS(v *SSEKMS) *InventoryEncryption { + s.SSEKMS = v + return s +} + +// SetSSES3 sets the SSES3 field's value. +func (s *InventoryEncryption) SetSSES3(v *SSES3) *InventoryEncryption { + s.SSES3 = v + return s +} + +// Specifies an inventory filter. The inventory only includes objects that meet +// the filter's criteria. +type InventoryFilter struct { + _ struct{} `type:"structure"` + + // The prefix that an object must have to be included in the inventory results. + // + // Prefix is a required field + Prefix *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s InventoryFilter) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InventoryFilter) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *InventoryFilter) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "InventoryFilter"} + if s.Prefix == nil { + invalidParams.Add(request.NewErrParamRequired("Prefix")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetPrefix sets the Prefix field's value. +func (s *InventoryFilter) SetPrefix(v string) *InventoryFilter { + s.Prefix = &v + return s +} + +// Contains the bucket name, file format, bucket owner (optional), and prefix +// (optional) where inventory results are published. +type InventoryS3BucketDestination struct { + _ struct{} `type:"structure"` + + // The ID of the account that owns the destination bucket. + AccountId *string `type:"string"` + + // The Amazon resource name (ARN) of the bucket where inventory results will + // be published. + // + // Bucket is a required field + Bucket *string `type:"string" required:"true"` + + // Contains the type of server-side encryption used to encrypt the inventory + // results. + Encryption *InventoryEncryption `type:"structure"` + + // Specifies the output format of the inventory results. + // + // Format is a required field + Format *string `type:"string" required:"true" enum:"InventoryFormat"` + + // The prefix that is prepended to all inventory results. + Prefix *string `type:"string"` +} + +// String returns the string representation +func (s InventoryS3BucketDestination) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InventoryS3BucketDestination) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *InventoryS3BucketDestination) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "InventoryS3BucketDestination"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Format == nil { + invalidParams.Add(request.NewErrParamRequired("Format")) + } + if s.Encryption != nil { + if err := s.Encryption.Validate(); err != nil { + invalidParams.AddNested("Encryption", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAccountId sets the AccountId field's value. +func (s *InventoryS3BucketDestination) SetAccountId(v string) *InventoryS3BucketDestination { + s.AccountId = &v + return s +} + +// SetBucket sets the Bucket field's value. +func (s *InventoryS3BucketDestination) SetBucket(v string) *InventoryS3BucketDestination { + s.Bucket = &v + return s +} + +func (s *InventoryS3BucketDestination) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetEncryption sets the Encryption field's value. +func (s *InventoryS3BucketDestination) SetEncryption(v *InventoryEncryption) *InventoryS3BucketDestination { + s.Encryption = v + return s +} + +// SetFormat sets the Format field's value. +func (s *InventoryS3BucketDestination) SetFormat(v string) *InventoryS3BucketDestination { + s.Format = &v + return s +} + +// SetPrefix sets the Prefix field's value. +func (s *InventoryS3BucketDestination) SetPrefix(v string) *InventoryS3BucketDestination { + s.Prefix = &v + return s +} + +// Specifies the schedule for generating inventory results. +type InventorySchedule struct { + _ struct{} `type:"structure"` + + // Specifies how frequently inventory results are produced. + // + // Frequency is a required field + Frequency *string `type:"string" required:"true" enum:"InventoryFrequency"` +} + +// String returns the string representation +func (s InventorySchedule) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InventorySchedule) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *InventorySchedule) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "InventorySchedule"} + if s.Frequency == nil { + invalidParams.Add(request.NewErrParamRequired("Frequency")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetFrequency sets the Frequency field's value. +func (s *InventorySchedule) SetFrequency(v string) *InventorySchedule { + s.Frequency = &v + return s +} + +// Specifies JSON as object's input serialization format. +type JSONInput struct { + _ struct{} `type:"structure"` + + // The type of JSON. Valid values: Document, Lines. + Type *string `type:"string" enum:"JSONType"` +} + +// String returns the string representation +func (s JSONInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s JSONInput) GoString() string { + return s.String() +} + +// SetType sets the Type field's value. +func (s *JSONInput) SetType(v string) *JSONInput { + s.Type = &v + return s +} + +// Specifies JSON as request's output serialization format. +type JSONOutput struct { + _ struct{} `type:"structure"` + + // The value used to separate individual records in the output. + RecordDelimiter *string `type:"string"` +} + +// String returns the string representation +func (s JSONOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s JSONOutput) GoString() string { + return s.String() +} + +// SetRecordDelimiter sets the RecordDelimiter field's value. +func (s *JSONOutput) SetRecordDelimiter(v string) *JSONOutput { + s.RecordDelimiter = &v + return s +} + +// A container for object key name prefix and suffix filtering rules. +type KeyFilter struct { + _ struct{} `type:"structure"` + + // A list of containers for the key value pair that defines the criteria for + // the filter rule. + FilterRules []*FilterRule `locationName:"FilterRule" type:"list" flattened:"true"` +} + +// String returns the string representation +func (s KeyFilter) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s KeyFilter) GoString() string { + return s.String() +} + +// SetFilterRules sets the FilterRules field's value. +func (s *KeyFilter) SetFilterRules(v []*FilterRule) *KeyFilter { + s.FilterRules = v + return s +} + +// A container for specifying the configuration for AWS Lambda notifications. +type LambdaFunctionConfiguration struct { + _ struct{} `type:"structure"` + + // The Amazon S3 bucket event for which to invoke the AWS Lambda function. For + // more information, see Supported Event Types (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html) + // in the Amazon Simple Storage Service Developer Guide. + // + // Events is a required field + Events []*string `locationName:"Event" type:"list" flattened:"true" required:"true"` + + // Specifies object key name filtering rules. For information about key name + // filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html) + // in the Amazon Simple Storage Service Developer Guide. + Filter *NotificationConfigurationFilter `type:"structure"` + + // An optional unique identifier for configurations in a notification configuration. + // If you don't provide one, Amazon S3 will assign an ID. + Id *string `type:"string"` + + // The Amazon Resource Name (ARN) of the AWS Lambda function that Amazon S3 + // invokes when the specified event type occurs. + // + // LambdaFunctionArn is a required field + LambdaFunctionArn *string `locationName:"CloudFunction" type:"string" required:"true"` +} + +// String returns the string representation +func (s LambdaFunctionConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LambdaFunctionConfiguration) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *LambdaFunctionConfiguration) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "LambdaFunctionConfiguration"} + if s.Events == nil { + invalidParams.Add(request.NewErrParamRequired("Events")) + } + if s.LambdaFunctionArn == nil { + invalidParams.Add(request.NewErrParamRequired("LambdaFunctionArn")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetEvents sets the Events field's value. +func (s *LambdaFunctionConfiguration) SetEvents(v []*string) *LambdaFunctionConfiguration { + s.Events = v + return s +} + +// SetFilter sets the Filter field's value. +func (s *LambdaFunctionConfiguration) SetFilter(v *NotificationConfigurationFilter) *LambdaFunctionConfiguration { + s.Filter = v + return s +} + +// SetId sets the Id field's value. +func (s *LambdaFunctionConfiguration) SetId(v string) *LambdaFunctionConfiguration { + s.Id = &v + return s +} + +// SetLambdaFunctionArn sets the LambdaFunctionArn field's value. +func (s *LambdaFunctionConfiguration) SetLambdaFunctionArn(v string) *LambdaFunctionConfiguration { + s.LambdaFunctionArn = &v + return s +} + +// Container for lifecycle rules. You can add as many as 1000 rules. +type LifecycleConfiguration struct { + _ struct{} `type:"structure"` + + // Specifies lifecycle configuration rules for an Amazon S3 bucket. + // + // Rules is a required field + Rules []*Rule `locationName:"Rule" type:"list" flattened:"true" required:"true"` +} + +// String returns the string representation +func (s LifecycleConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LifecycleConfiguration) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *LifecycleConfiguration) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "LifecycleConfiguration"} + if s.Rules == nil { + invalidParams.Add(request.NewErrParamRequired("Rules")) + } + if s.Rules != nil { + for i, v := range s.Rules { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetRules sets the Rules field's value. +func (s *LifecycleConfiguration) SetRules(v []*Rule) *LifecycleConfiguration { + s.Rules = v + return s +} + +// Container for the expiration for the lifecycle of the object. +type LifecycleExpiration struct { + _ struct{} `type:"structure"` + + // Indicates at what date the object is to be moved or deleted. Should be in + // GMT ISO 8601 Format. + Date *time.Time `type:"timestamp" timestampFormat:"iso8601"` + + // Indicates the lifetime, in days, of the objects that are subject to the rule. + // The value must be a non-zero positive integer. + Days *int64 `type:"integer"` + + // Indicates whether Amazon S3 will remove a delete marker with no noncurrent + // versions. If set to true, the delete marker will be expired; if set to false + // the policy takes no action. This cannot be specified with Days or Date in + // a Lifecycle Expiration Policy. + ExpiredObjectDeleteMarker *bool `type:"boolean"` +} + +// String returns the string representation +func (s LifecycleExpiration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LifecycleExpiration) GoString() string { + return s.String() +} + +// SetDate sets the Date field's value. +func (s *LifecycleExpiration) SetDate(v time.Time) *LifecycleExpiration { + s.Date = &v + return s +} + +// SetDays sets the Days field's value. +func (s *LifecycleExpiration) SetDays(v int64) *LifecycleExpiration { + s.Days = &v + return s +} + +// SetExpiredObjectDeleteMarker sets the ExpiredObjectDeleteMarker field's value. +func (s *LifecycleExpiration) SetExpiredObjectDeleteMarker(v bool) *LifecycleExpiration { + s.ExpiredObjectDeleteMarker = &v + return s +} + +// A lifecycle rule for individual objects in an Amazon S3 bucket. +type LifecycleRule struct { + _ struct{} `type:"structure"` + + // Specifies the days since the initiation of an incomplete multipart upload + // that Amazon S3 will wait before permanently removing all parts of the upload. + // For more information, see Aborting Incomplete Multipart Uploads Using a Bucket + // Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config) + // in the Amazon Simple Storage Service Developer Guide. + AbortIncompleteMultipartUpload *AbortIncompleteMultipartUpload `type:"structure"` + + // Specifies the expiration for the lifecycle of the object in the form of date, + // days and, whether the object has a delete marker. + Expiration *LifecycleExpiration `type:"structure"` + + // The Filter is used to identify objects that a Lifecycle Rule applies to. + // A Filter must have exactly one of Prefix, Tag, or And specified. + Filter *LifecycleRuleFilter `type:"structure"` + + // Unique identifier for the rule. The value cannot be longer than 255 characters. + ID *string `type:"string"` + + // Specifies when noncurrent object versions expire. Upon expiration, Amazon + // S3 permanently deletes the noncurrent object versions. You set this lifecycle + // configuration action on a bucket that has versioning enabled (or suspended) + // to request that Amazon S3 delete noncurrent object versions at a specific + // period in the object's lifetime. + NoncurrentVersionExpiration *NoncurrentVersionExpiration `type:"structure"` + + // Specifies the transition rule for the lifecycle rule that describes when + // noncurrent objects transition to the a specific storage class. If your bucket + // is versioning-enabled (or versioning is suspended), you can set this action + // to request that Amazon S3 transition noncurrent object versions to the a + // specifc storage class at a set period in the object's lifetime. + NoncurrentVersionTransitions []*NoncurrentVersionTransition `locationName:"NoncurrentVersionTransition" type:"list" flattened:"true"` + + // Prefix identifying one or more objects to which the rule applies. This is + // No longer used; use Filter instead. + // + // Deprecated: Prefix has been deprecated + Prefix *string `deprecated:"true" type:"string"` + + // If 'Enabled', the rule is currently being applied. If 'Disabled', the rule + // is not currently being applied. + // + // Status is a required field + Status *string `type:"string" required:"true" enum:"ExpirationStatus"` + + // Specifies when an Amazon S3 object transitions to a specified storage class. + Transitions []*Transition `locationName:"Transition" type:"list" flattened:"true"` +} + +// String returns the string representation +func (s LifecycleRule) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LifecycleRule) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *LifecycleRule) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "LifecycleRule"} + if s.Status == nil { + invalidParams.Add(request.NewErrParamRequired("Status")) + } + if s.Filter != nil { + if err := s.Filter.Validate(); err != nil { + invalidParams.AddNested("Filter", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAbortIncompleteMultipartUpload sets the AbortIncompleteMultipartUpload field's value. +func (s *LifecycleRule) SetAbortIncompleteMultipartUpload(v *AbortIncompleteMultipartUpload) *LifecycleRule { + s.AbortIncompleteMultipartUpload = v + return s +} + +// SetExpiration sets the Expiration field's value. +func (s *LifecycleRule) SetExpiration(v *LifecycleExpiration) *LifecycleRule { + s.Expiration = v + return s +} + +// SetFilter sets the Filter field's value. +func (s *LifecycleRule) SetFilter(v *LifecycleRuleFilter) *LifecycleRule { + s.Filter = v + return s +} + +// SetID sets the ID field's value. +func (s *LifecycleRule) SetID(v string) *LifecycleRule { + s.ID = &v + return s +} + +// SetNoncurrentVersionExpiration sets the NoncurrentVersionExpiration field's value. +func (s *LifecycleRule) SetNoncurrentVersionExpiration(v *NoncurrentVersionExpiration) *LifecycleRule { + s.NoncurrentVersionExpiration = v + return s +} + +// SetNoncurrentVersionTransitions sets the NoncurrentVersionTransitions field's value. +func (s *LifecycleRule) SetNoncurrentVersionTransitions(v []*NoncurrentVersionTransition) *LifecycleRule { + s.NoncurrentVersionTransitions = v + return s +} + +// SetPrefix sets the Prefix field's value. +func (s *LifecycleRule) SetPrefix(v string) *LifecycleRule { + s.Prefix = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *LifecycleRule) SetStatus(v string) *LifecycleRule { + s.Status = &v + return s +} + +// SetTransitions sets the Transitions field's value. +func (s *LifecycleRule) SetTransitions(v []*Transition) *LifecycleRule { + s.Transitions = v + return s +} + +// This is used in a Lifecycle Rule Filter to apply a logical AND to two or +// more predicates. The Lifecycle Rule will apply to any object matching all +// of the predicates configured inside the And operator. +type LifecycleRuleAndOperator struct { + _ struct{} `type:"structure"` + + // Prefix identifying one or more objects to which the rule applies. + Prefix *string `type:"string"` + + // All of these tags must exist in the object's tag set in order for the rule + // to apply. + Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"` +} + +// String returns the string representation +func (s LifecycleRuleAndOperator) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LifecycleRuleAndOperator) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *LifecycleRuleAndOperator) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "LifecycleRuleAndOperator"} + if s.Tags != nil { + for i, v := range s.Tags { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetPrefix sets the Prefix field's value. +func (s *LifecycleRuleAndOperator) SetPrefix(v string) *LifecycleRuleAndOperator { + s.Prefix = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *LifecycleRuleAndOperator) SetTags(v []*Tag) *LifecycleRuleAndOperator { + s.Tags = v + return s +} + +// The Filter is used to identify objects that a Lifecycle Rule applies to. +// A Filter must have exactly one of Prefix, Tag, or And specified. +type LifecycleRuleFilter struct { + _ struct{} `type:"structure"` + + // This is used in a Lifecycle Rule Filter to apply a logical AND to two or + // more predicates. The Lifecycle Rule will apply to any object matching all + // of the predicates configured inside the And operator. + And *LifecycleRuleAndOperator `type:"structure"` + + // Prefix identifying one or more objects to which the rule applies. + Prefix *string `type:"string"` + + // This tag must exist in the object's tag set in order for the rule to apply. + Tag *Tag `type:"structure"` +} + +// String returns the string representation +func (s LifecycleRuleFilter) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LifecycleRuleFilter) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *LifecycleRuleFilter) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "LifecycleRuleFilter"} + if s.And != nil { + if err := s.And.Validate(); err != nil { + invalidParams.AddNested("And", err.(request.ErrInvalidParams)) + } + } + if s.Tag != nil { + if err := s.Tag.Validate(); err != nil { + invalidParams.AddNested("Tag", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAnd sets the And field's value. +func (s *LifecycleRuleFilter) SetAnd(v *LifecycleRuleAndOperator) *LifecycleRuleFilter { + s.And = v + return s +} + +// SetPrefix sets the Prefix field's value. +func (s *LifecycleRuleFilter) SetPrefix(v string) *LifecycleRuleFilter { + s.Prefix = &v + return s +} + +// SetTag sets the Tag field's value. +func (s *LifecycleRuleFilter) SetTag(v *Tag) *LifecycleRuleFilter { + s.Tag = v + return s +} + +type ListBucketAnalyticsConfigurationsInput struct { + _ struct{} `locationName:"ListBucketAnalyticsConfigurationsRequest" type:"structure"` + + // The name of the bucket from which analytics configurations are retrieved. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // The ContinuationToken that represents a placeholder from where this request + // should begin. + ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"` +} + +// String returns the string representation +func (s ListBucketAnalyticsConfigurationsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListBucketAnalyticsConfigurationsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListBucketAnalyticsConfigurationsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListBucketAnalyticsConfigurationsInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *ListBucketAnalyticsConfigurationsInput) SetBucket(v string) *ListBucketAnalyticsConfigurationsInput { + s.Bucket = &v + return s +} + +func (s *ListBucketAnalyticsConfigurationsInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetContinuationToken sets the ContinuationToken field's value. +func (s *ListBucketAnalyticsConfigurationsInput) SetContinuationToken(v string) *ListBucketAnalyticsConfigurationsInput { + s.ContinuationToken = &v + return s +} + +type ListBucketAnalyticsConfigurationsOutput struct { + _ struct{} `type:"structure"` + + // The list of analytics configurations for a bucket. + AnalyticsConfigurationList []*AnalyticsConfiguration `locationName:"AnalyticsConfiguration" type:"list" flattened:"true"` + + // The marker that is used as a starting point for this analytics configuration + // list response. This value is present if it was sent in the request. + ContinuationToken *string `type:"string"` + + // Indicates whether the returned list of analytics configurations is complete. + // A value of true indicates that the list is not complete and the NextContinuationToken + // will be provided for a subsequent request. + IsTruncated *bool `type:"boolean"` + + // NextContinuationToken is sent when isTruncated is true, which indicates that + // there are more analytics configurations to list. The next request must include + // this NextContinuationToken. The token is obfuscated and is not a usable value. + NextContinuationToken *string `type:"string"` +} + +// String returns the string representation +func (s ListBucketAnalyticsConfigurationsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListBucketAnalyticsConfigurationsOutput) GoString() string { + return s.String() +} + +// SetAnalyticsConfigurationList sets the AnalyticsConfigurationList field's value. +func (s *ListBucketAnalyticsConfigurationsOutput) SetAnalyticsConfigurationList(v []*AnalyticsConfiguration) *ListBucketAnalyticsConfigurationsOutput { + s.AnalyticsConfigurationList = v + return s +} + +// SetContinuationToken sets the ContinuationToken field's value. +func (s *ListBucketAnalyticsConfigurationsOutput) SetContinuationToken(v string) *ListBucketAnalyticsConfigurationsOutput { + s.ContinuationToken = &v + return s +} + +// SetIsTruncated sets the IsTruncated field's value. +func (s *ListBucketAnalyticsConfigurationsOutput) SetIsTruncated(v bool) *ListBucketAnalyticsConfigurationsOutput { + s.IsTruncated = &v + return s +} + +// SetNextContinuationToken sets the NextContinuationToken field's value. +func (s *ListBucketAnalyticsConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketAnalyticsConfigurationsOutput { + s.NextContinuationToken = &v + return s +} + +type ListBucketInventoryConfigurationsInput struct { + _ struct{} `locationName:"ListBucketInventoryConfigurationsRequest" type:"structure"` + + // The name of the bucket containing the inventory configurations to retrieve. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // The marker used to continue an inventory configuration listing that has been + // truncated. Use the NextContinuationToken from a previously truncated list + // response to continue the listing. The continuation token is an opaque value + // that Amazon S3 understands. + ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"` +} + +// String returns the string representation +func (s ListBucketInventoryConfigurationsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListBucketInventoryConfigurationsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListBucketInventoryConfigurationsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListBucketInventoryConfigurationsInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *ListBucketInventoryConfigurationsInput) SetBucket(v string) *ListBucketInventoryConfigurationsInput { + s.Bucket = &v + return s +} + +func (s *ListBucketInventoryConfigurationsInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetContinuationToken sets the ContinuationToken field's value. +func (s *ListBucketInventoryConfigurationsInput) SetContinuationToken(v string) *ListBucketInventoryConfigurationsInput { + s.ContinuationToken = &v + return s +} + +type ListBucketInventoryConfigurationsOutput struct { + _ struct{} `type:"structure"` + + // If sent in the request, the marker that is used as a starting point for this + // inventory configuration list response. + ContinuationToken *string `type:"string"` + + // The list of inventory configurations for a bucket. + InventoryConfigurationList []*InventoryConfiguration `locationName:"InventoryConfiguration" type:"list" flattened:"true"` + + // Tells whether the returned list of inventory configurations is complete. + // A value of true indicates that the list is not complete and the NextContinuationToken + // is provided for a subsequent request. + IsTruncated *bool `type:"boolean"` + + // The marker used to continue this inventory configuration listing. Use the + // NextContinuationToken from this response to continue the listing in a subsequent + // request. The continuation token is an opaque value that Amazon S3 understands. + NextContinuationToken *string `type:"string"` +} + +// String returns the string representation +func (s ListBucketInventoryConfigurationsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListBucketInventoryConfigurationsOutput) GoString() string { + return s.String() +} + +// SetContinuationToken sets the ContinuationToken field's value. +func (s *ListBucketInventoryConfigurationsOutput) SetContinuationToken(v string) *ListBucketInventoryConfigurationsOutput { + s.ContinuationToken = &v + return s +} + +// SetInventoryConfigurationList sets the InventoryConfigurationList field's value. +func (s *ListBucketInventoryConfigurationsOutput) SetInventoryConfigurationList(v []*InventoryConfiguration) *ListBucketInventoryConfigurationsOutput { + s.InventoryConfigurationList = v + return s +} + +// SetIsTruncated sets the IsTruncated field's value. +func (s *ListBucketInventoryConfigurationsOutput) SetIsTruncated(v bool) *ListBucketInventoryConfigurationsOutput { + s.IsTruncated = &v + return s +} + +// SetNextContinuationToken sets the NextContinuationToken field's value. +func (s *ListBucketInventoryConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketInventoryConfigurationsOutput { + s.NextContinuationToken = &v + return s +} + +type ListBucketMetricsConfigurationsInput struct { + _ struct{} `locationName:"ListBucketMetricsConfigurationsRequest" type:"structure"` + + // The name of the bucket containing the metrics configurations to retrieve. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // The marker that is used to continue a metrics configuration listing that + // has been truncated. Use the NextContinuationToken from a previously truncated + // list response to continue the listing. The continuation token is an opaque + // value that Amazon S3 understands. + ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"` +} + +// String returns the string representation +func (s ListBucketMetricsConfigurationsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListBucketMetricsConfigurationsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListBucketMetricsConfigurationsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListBucketMetricsConfigurationsInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *ListBucketMetricsConfigurationsInput) SetBucket(v string) *ListBucketMetricsConfigurationsInput { + s.Bucket = &v + return s +} + +func (s *ListBucketMetricsConfigurationsInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetContinuationToken sets the ContinuationToken field's value. +func (s *ListBucketMetricsConfigurationsInput) SetContinuationToken(v string) *ListBucketMetricsConfigurationsInput { + s.ContinuationToken = &v + return s +} + +type ListBucketMetricsConfigurationsOutput struct { + _ struct{} `type:"structure"` + + // The marker that is used as a starting point for this metrics configuration + // list response. This value is present if it was sent in the request. + ContinuationToken *string `type:"string"` + + // Indicates whether the returned list of metrics configurations is complete. + // A value of true indicates that the list is not complete and the NextContinuationToken + // will be provided for a subsequent request. + IsTruncated *bool `type:"boolean"` + + // The list of metrics configurations for a bucket. + MetricsConfigurationList []*MetricsConfiguration `locationName:"MetricsConfiguration" type:"list" flattened:"true"` + + // The marker used to continue a metrics configuration listing that has been + // truncated. Use the NextContinuationToken from a previously truncated list + // response to continue the listing. The continuation token is an opaque value + // that Amazon S3 understands. + NextContinuationToken *string `type:"string"` +} + +// String returns the string representation +func (s ListBucketMetricsConfigurationsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListBucketMetricsConfigurationsOutput) GoString() string { + return s.String() +} + +// SetContinuationToken sets the ContinuationToken field's value. +func (s *ListBucketMetricsConfigurationsOutput) SetContinuationToken(v string) *ListBucketMetricsConfigurationsOutput { + s.ContinuationToken = &v + return s +} + +// SetIsTruncated sets the IsTruncated field's value. +func (s *ListBucketMetricsConfigurationsOutput) SetIsTruncated(v bool) *ListBucketMetricsConfigurationsOutput { + s.IsTruncated = &v + return s +} + +// SetMetricsConfigurationList sets the MetricsConfigurationList field's value. +func (s *ListBucketMetricsConfigurationsOutput) SetMetricsConfigurationList(v []*MetricsConfiguration) *ListBucketMetricsConfigurationsOutput { + s.MetricsConfigurationList = v + return s +} + +// SetNextContinuationToken sets the NextContinuationToken field's value. +func (s *ListBucketMetricsConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketMetricsConfigurationsOutput { + s.NextContinuationToken = &v + return s +} + +type ListBucketsInput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s ListBucketsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListBucketsInput) GoString() string { + return s.String() +} + +type ListBucketsOutput struct { + _ struct{} `type:"structure"` + + // The list of buckets owned by the requestor. + Buckets []*Bucket `locationNameList:"Bucket" type:"list"` + + // The owner of the buckets listed. + Owner *Owner `type:"structure"` +} + +// String returns the string representation +func (s ListBucketsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListBucketsOutput) GoString() string { + return s.String() +} + +// SetBuckets sets the Buckets field's value. +func (s *ListBucketsOutput) SetBuckets(v []*Bucket) *ListBucketsOutput { + s.Buckets = v + return s +} + +// SetOwner sets the Owner field's value. +func (s *ListBucketsOutput) SetOwner(v *Owner) *ListBucketsOutput { + s.Owner = v + return s +} + +type ListMultipartUploadsInput struct { + _ struct{} `locationName:"ListMultipartUploadsRequest" type:"structure"` + + // Name of the bucket to which the multipart upload was initiated. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Character you use to group keys. + // + // All keys that contain the same string between the prefix, if specified, and + // the first occurrence of the delimiter after the prefix are grouped under + // a single result element, CommonPrefixes. If you don't specify the prefix + // parameter, then the substring starts at the beginning of the key. The keys + // that are grouped under CommonPrefixes result element are not returned elsewhere + // in the response. + Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"` + + // Requests Amazon S3 to encode the object keys in the response and specifies + // the encoding method to use. An object key may contain any Unicode character; + // however, XML 1.0 parser cannot parse some characters, such as characters + // with an ASCII value from 0 to 10. For characters that are not supported in + // XML 1.0, you can add this parameter to request that Amazon S3 encode the + // keys in the response. + EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"` + + // Together with upload-id-marker, this parameter specifies the multipart upload + // after which listing should begin. + // + // If upload-id-marker is not specified, only the keys lexicographically greater + // than the specified key-marker will be included in the list. + // + // If upload-id-marker is specified, any multipart uploads for a key equal to + // the key-marker might also be included, provided those multipart uploads have + // upload IDs lexicographically greater than the specified upload-id-marker. + KeyMarker *string `location:"querystring" locationName:"key-marker" type:"string"` + + // Sets the maximum number of multipart uploads, from 1 to 1,000, to return + // in the response body. 1,000 is the maximum number of uploads that can be + // returned in a response. + MaxUploads *int64 `location:"querystring" locationName:"max-uploads" type:"integer"` + + // Lists in-progress uploads only for those keys that begin with the specified + // prefix. You can use prefixes to separate a bucket into different grouping + // of keys. (You can think of using prefix to make groups in the same way you'd + // use a folder in a file system.) + Prefix *string `location:"querystring" locationName:"prefix" type:"string"` + + // Together with key-marker, specifies the multipart upload after which listing + // should begin. If key-marker is not specified, the upload-id-marker parameter + // is ignored. Otherwise, any multipart uploads for a key equal to the key-marker + // might be included in the list only if they have an upload ID lexicographically + // greater than the specified upload-id-marker. + UploadIdMarker *string `location:"querystring" locationName:"upload-id-marker" type:"string"` +} + +// String returns the string representation +func (s ListMultipartUploadsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListMultipartUploadsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListMultipartUploadsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListMultipartUploadsInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *ListMultipartUploadsInput) SetBucket(v string) *ListMultipartUploadsInput { + s.Bucket = &v + return s +} + +func (s *ListMultipartUploadsInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetDelimiter sets the Delimiter field's value. +func (s *ListMultipartUploadsInput) SetDelimiter(v string) *ListMultipartUploadsInput { + s.Delimiter = &v + return s +} + +// SetEncodingType sets the EncodingType field's value. +func (s *ListMultipartUploadsInput) SetEncodingType(v string) *ListMultipartUploadsInput { + s.EncodingType = &v + return s +} + +// SetKeyMarker sets the KeyMarker field's value. +func (s *ListMultipartUploadsInput) SetKeyMarker(v string) *ListMultipartUploadsInput { + s.KeyMarker = &v + return s +} + +// SetMaxUploads sets the MaxUploads field's value. +func (s *ListMultipartUploadsInput) SetMaxUploads(v int64) *ListMultipartUploadsInput { + s.MaxUploads = &v + return s +} + +// SetPrefix sets the Prefix field's value. +func (s *ListMultipartUploadsInput) SetPrefix(v string) *ListMultipartUploadsInput { + s.Prefix = &v + return s +} + +// SetUploadIdMarker sets the UploadIdMarker field's value. +func (s *ListMultipartUploadsInput) SetUploadIdMarker(v string) *ListMultipartUploadsInput { + s.UploadIdMarker = &v + return s +} + +type ListMultipartUploadsOutput struct { + _ struct{} `type:"structure"` + + // Name of the bucket to which the multipart upload was initiated. + Bucket *string `type:"string"` + + // If you specify a delimiter in the request, then the result returns each distinct + // key prefix containing the delimiter in a CommonPrefixes element. The distinct + // key prefixes are returned in the Prefix child element. + CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"` + + // Contains the delimiter you specified in the request. If you don't specify + // a delimiter in your request, this element is absent from the response. + Delimiter *string `type:"string"` + + // Encoding type used by Amazon S3 to encode object keys in the response. + // + // If you specify encoding-type request parameter, Amazon S3 includes this element + // in the response, and returns encoded key name values in the following response + // elements: + // + // Delimiter, KeyMarker, Prefix, NextKeyMarker, Key. + EncodingType *string `type:"string" enum:"EncodingType"` + + // Indicates whether the returned list of multipart uploads is truncated. A + // value of true indicates that the list was truncated. The list can be truncated + // if the number of multipart uploads exceeds the limit allowed or specified + // by max uploads. + IsTruncated *bool `type:"boolean"` + + // The key at or after which the listing began. + KeyMarker *string `type:"string"` + + // Maximum number of multipart uploads that could have been included in the + // response. + MaxUploads *int64 `type:"integer"` + + // When a list is truncated, this element specifies the value that should be + // used for the key-marker request parameter in a subsequent request. + NextKeyMarker *string `type:"string"` + + // When a list is truncated, this element specifies the value that should be + // used for the upload-id-marker request parameter in a subsequent request. + NextUploadIdMarker *string `type:"string"` + + // When a prefix is provided in the request, this field contains the specified + // prefix. The result contains only keys starting with the specified prefix. + Prefix *string `type:"string"` + + // Upload ID after which listing began. + UploadIdMarker *string `type:"string"` + + // Container for elements related to a particular multipart upload. A response + // can contain zero or more Upload elements. + Uploads []*MultipartUpload `locationName:"Upload" type:"list" flattened:"true"` +} + +// String returns the string representation +func (s ListMultipartUploadsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListMultipartUploadsOutput) GoString() string { + return s.String() +} + +// SetBucket sets the Bucket field's value. +func (s *ListMultipartUploadsOutput) SetBucket(v string) *ListMultipartUploadsOutput { + s.Bucket = &v + return s +} + +func (s *ListMultipartUploadsOutput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetCommonPrefixes sets the CommonPrefixes field's value. +func (s *ListMultipartUploadsOutput) SetCommonPrefixes(v []*CommonPrefix) *ListMultipartUploadsOutput { + s.CommonPrefixes = v + return s +} + +// SetDelimiter sets the Delimiter field's value. +func (s *ListMultipartUploadsOutput) SetDelimiter(v string) *ListMultipartUploadsOutput { + s.Delimiter = &v + return s +} + +// SetEncodingType sets the EncodingType field's value. +func (s *ListMultipartUploadsOutput) SetEncodingType(v string) *ListMultipartUploadsOutput { + s.EncodingType = &v + return s +} + +// SetIsTruncated sets the IsTruncated field's value. +func (s *ListMultipartUploadsOutput) SetIsTruncated(v bool) *ListMultipartUploadsOutput { + s.IsTruncated = &v + return s +} + +// SetKeyMarker sets the KeyMarker field's value. +func (s *ListMultipartUploadsOutput) SetKeyMarker(v string) *ListMultipartUploadsOutput { + s.KeyMarker = &v + return s +} + +// SetMaxUploads sets the MaxUploads field's value. +func (s *ListMultipartUploadsOutput) SetMaxUploads(v int64) *ListMultipartUploadsOutput { + s.MaxUploads = &v + return s +} + +// SetNextKeyMarker sets the NextKeyMarker field's value. +func (s *ListMultipartUploadsOutput) SetNextKeyMarker(v string) *ListMultipartUploadsOutput { + s.NextKeyMarker = &v + return s +} + +// SetNextUploadIdMarker sets the NextUploadIdMarker field's value. +func (s *ListMultipartUploadsOutput) SetNextUploadIdMarker(v string) *ListMultipartUploadsOutput { + s.NextUploadIdMarker = &v + return s +} + +// SetPrefix sets the Prefix field's value. +func (s *ListMultipartUploadsOutput) SetPrefix(v string) *ListMultipartUploadsOutput { + s.Prefix = &v + return s +} + +// SetUploadIdMarker sets the UploadIdMarker field's value. +func (s *ListMultipartUploadsOutput) SetUploadIdMarker(v string) *ListMultipartUploadsOutput { + s.UploadIdMarker = &v + return s +} + +// SetUploads sets the Uploads field's value. +func (s *ListMultipartUploadsOutput) SetUploads(v []*MultipartUpload) *ListMultipartUploadsOutput { + s.Uploads = v + return s +} + +type ListObjectVersionsInput struct { + _ struct{} `locationName:"ListObjectVersionsRequest" type:"structure"` + + // The name of the bucket that contains the objects. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // A delimiter is a character that you specify to group keys. All keys that + // contain the same string between the prefix and the first occurrence of the + // delimiter are grouped under a single result element in CommonPrefixes. These + // groups are counted as one result against the max-keys limitation. These keys + // are not returned elsewhere in the response. + Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"` + + // Requests Amazon S3 to encode the object keys in the response and specifies + // the encoding method to use. An object key may contain any Unicode character; + // however, XML 1.0 parser cannot parse some characters, such as characters + // with an ASCII value from 0 to 10. For characters that are not supported in + // XML 1.0, you can add this parameter to request that Amazon S3 encode the + // keys in the response. + EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"` + + // Specifies the key to start with when listing objects in a bucket. + KeyMarker *string `location:"querystring" locationName:"key-marker" type:"string"` + + // Sets the maximum number of keys returned in the response. The response might + // contain fewer keys but will never contain more. If additional keys satisfy + // the search criteria, but were not returned because max-keys was exceeded, + // the response contains true. To return the additional + // keys, see key-marker and version-id-marker. + MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"` + + // Use this parameter to select only those keys that begin with the specified + // prefix. You can use prefixes to separate a bucket into different groupings + // of keys. (You can think of using prefix to make groups in the same way you'd + // use a folder in a file system.) You can use prefix with delimiter to roll + // up numerous objects into a single result under CommonPrefixes. + Prefix *string `location:"querystring" locationName:"prefix" type:"string"` + + // Specifies the object version you want to start listing from. + VersionIdMarker *string `location:"querystring" locationName:"version-id-marker" type:"string"` +} + +// String returns the string representation +func (s ListObjectVersionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListObjectVersionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListObjectVersionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListObjectVersionsInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *ListObjectVersionsInput) SetBucket(v string) *ListObjectVersionsInput { + s.Bucket = &v + return s +} + +func (s *ListObjectVersionsInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetDelimiter sets the Delimiter field's value. +func (s *ListObjectVersionsInput) SetDelimiter(v string) *ListObjectVersionsInput { + s.Delimiter = &v + return s +} + +// SetEncodingType sets the EncodingType field's value. +func (s *ListObjectVersionsInput) SetEncodingType(v string) *ListObjectVersionsInput { + s.EncodingType = &v + return s +} + +// SetKeyMarker sets the KeyMarker field's value. +func (s *ListObjectVersionsInput) SetKeyMarker(v string) *ListObjectVersionsInput { + s.KeyMarker = &v + return s +} + +// SetMaxKeys sets the MaxKeys field's value. +func (s *ListObjectVersionsInput) SetMaxKeys(v int64) *ListObjectVersionsInput { + s.MaxKeys = &v + return s +} + +// SetPrefix sets the Prefix field's value. +func (s *ListObjectVersionsInput) SetPrefix(v string) *ListObjectVersionsInput { + s.Prefix = &v + return s +} + +// SetVersionIdMarker sets the VersionIdMarker field's value. +func (s *ListObjectVersionsInput) SetVersionIdMarker(v string) *ListObjectVersionsInput { + s.VersionIdMarker = &v + return s +} + +type ListObjectVersionsOutput struct { + _ struct{} `type:"structure"` + + // All of the keys rolled up into a common prefix count as a single return when + // calculating the number of returns. + CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"` + + // Container for an object that is a delete marker. + DeleteMarkers []*DeleteMarkerEntry `locationName:"DeleteMarker" type:"list" flattened:"true"` + + // The delimeter grouping the included keys. A delimiter is a character that + // you specify to group keys. All keys that contain the same string between + // the prefix and the first occurrence of the delimiter are grouped under a + // single result element in CommonPrefixes. These groups are counted as one + // result against the max-keys limitation. These keys are not returned elsewhere + // in the response. + Delimiter *string `type:"string"` + + // Encoding type used by Amazon S3 to encode object key names in the XML response. + // + // If you specify encoding-type request parameter, Amazon S3 includes this element + // in the response, and returns encoded key name values in the following response + // elements: + // + // KeyMarker, NextKeyMarker, Prefix, Key, and Delimiter. + EncodingType *string `type:"string" enum:"EncodingType"` + + // A flag that indicates whether or not Amazon S3 returned all of the results + // that satisfied the search criteria. If your results were truncated, you can + // make a follow-up paginated request using the NextKeyMarker and NextVersionIdMarker + // response parameters as a starting place in another request to return the + // rest of the results. + IsTruncated *bool `type:"boolean"` + + // Marks the last Key returned in a truncated response. + KeyMarker *string `type:"string"` + + // Specifies the maximum number of objects to return. + MaxKeys *int64 `type:"integer"` + + // Bucket owner's name. + Name *string `type:"string"` + + // When the number of responses exceeds the value of MaxKeys, NextKeyMarker + // specifies the first key not returned that satisfies the search criteria. + // Use this value for the key-marker request parameter in a subsequent request. + NextKeyMarker *string `type:"string"` + + // When the number of responses exceeds the value of MaxKeys, NextVersionIdMarker + // specifies the first object version not returned that satisfies the search + // criteria. Use this value for the version-id-marker request parameter in a + // subsequent request. + NextVersionIdMarker *string `type:"string"` + + // Selects objects that start with the value supplied by this parameter. + Prefix *string `type:"string"` + + // Marks the last version of the Key returned in a truncated response. + VersionIdMarker *string `type:"string"` + + // Container for version information. + Versions []*ObjectVersion `locationName:"Version" type:"list" flattened:"true"` +} + +// String returns the string representation +func (s ListObjectVersionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListObjectVersionsOutput) GoString() string { + return s.String() +} + +// SetCommonPrefixes sets the CommonPrefixes field's value. +func (s *ListObjectVersionsOutput) SetCommonPrefixes(v []*CommonPrefix) *ListObjectVersionsOutput { + s.CommonPrefixes = v + return s +} + +// SetDeleteMarkers sets the DeleteMarkers field's value. +func (s *ListObjectVersionsOutput) SetDeleteMarkers(v []*DeleteMarkerEntry) *ListObjectVersionsOutput { + s.DeleteMarkers = v + return s +} + +// SetDelimiter sets the Delimiter field's value. +func (s *ListObjectVersionsOutput) SetDelimiter(v string) *ListObjectVersionsOutput { + s.Delimiter = &v + return s +} + +// SetEncodingType sets the EncodingType field's value. +func (s *ListObjectVersionsOutput) SetEncodingType(v string) *ListObjectVersionsOutput { + s.EncodingType = &v + return s +} + +// SetIsTruncated sets the IsTruncated field's value. +func (s *ListObjectVersionsOutput) SetIsTruncated(v bool) *ListObjectVersionsOutput { + s.IsTruncated = &v + return s +} + +// SetKeyMarker sets the KeyMarker field's value. +func (s *ListObjectVersionsOutput) SetKeyMarker(v string) *ListObjectVersionsOutput { + s.KeyMarker = &v + return s +} + +// SetMaxKeys sets the MaxKeys field's value. +func (s *ListObjectVersionsOutput) SetMaxKeys(v int64) *ListObjectVersionsOutput { + s.MaxKeys = &v + return s +} + +// SetName sets the Name field's value. +func (s *ListObjectVersionsOutput) SetName(v string) *ListObjectVersionsOutput { + s.Name = &v + return s +} + +// SetNextKeyMarker sets the NextKeyMarker field's value. +func (s *ListObjectVersionsOutput) SetNextKeyMarker(v string) *ListObjectVersionsOutput { + s.NextKeyMarker = &v + return s +} + +// SetNextVersionIdMarker sets the NextVersionIdMarker field's value. +func (s *ListObjectVersionsOutput) SetNextVersionIdMarker(v string) *ListObjectVersionsOutput { + s.NextVersionIdMarker = &v + return s +} + +// SetPrefix sets the Prefix field's value. +func (s *ListObjectVersionsOutput) SetPrefix(v string) *ListObjectVersionsOutput { + s.Prefix = &v + return s +} + +// SetVersionIdMarker sets the VersionIdMarker field's value. +func (s *ListObjectVersionsOutput) SetVersionIdMarker(v string) *ListObjectVersionsOutput { + s.VersionIdMarker = &v + return s +} + +// SetVersions sets the Versions field's value. +func (s *ListObjectVersionsOutput) SetVersions(v []*ObjectVersion) *ListObjectVersionsOutput { + s.Versions = v + return s +} + +type ListObjectsInput struct { + _ struct{} `locationName:"ListObjectsRequest" type:"structure"` + + // The name of the bucket containing the objects. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // A delimiter is a character you use to group keys. + Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"` + + // Requests Amazon S3 to encode the object keys in the response and specifies + // the encoding method to use. An object key may contain any Unicode character; + // however, XML 1.0 parser cannot parse some characters, such as characters + // with an ASCII value from 0 to 10. For characters that are not supported in + // XML 1.0, you can add this parameter to request that Amazon S3 encode the + // keys in the response. + EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"` + + // Specifies the key to start with when listing objects in a bucket. + Marker *string `location:"querystring" locationName:"marker" type:"string"` + + // Sets the maximum number of keys returned in the response. The response might + // contain fewer keys but will never contain more. + MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"` + + // Limits the response to keys that begin with the specified prefix. + Prefix *string `location:"querystring" locationName:"prefix" type:"string"` + + // Confirms that the requester knows that she or he will be charged for the + // list objects request. Bucket owners need not specify this parameter in their + // requests. + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` +} + +// String returns the string representation +func (s ListObjectsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListObjectsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListObjectsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListObjectsInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *ListObjectsInput) SetBucket(v string) *ListObjectsInput { + s.Bucket = &v + return s +} + +func (s *ListObjectsInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetDelimiter sets the Delimiter field's value. +func (s *ListObjectsInput) SetDelimiter(v string) *ListObjectsInput { + s.Delimiter = &v + return s +} + +// SetEncodingType sets the EncodingType field's value. +func (s *ListObjectsInput) SetEncodingType(v string) *ListObjectsInput { + s.EncodingType = &v + return s +} + +// SetMarker sets the Marker field's value. +func (s *ListObjectsInput) SetMarker(v string) *ListObjectsInput { + s.Marker = &v + return s +} + +// SetMaxKeys sets the MaxKeys field's value. +func (s *ListObjectsInput) SetMaxKeys(v int64) *ListObjectsInput { + s.MaxKeys = &v + return s +} + +// SetPrefix sets the Prefix field's value. +func (s *ListObjectsInput) SetPrefix(v string) *ListObjectsInput { + s.Prefix = &v + return s +} + +// SetRequestPayer sets the RequestPayer field's value. +func (s *ListObjectsInput) SetRequestPayer(v string) *ListObjectsInput { + s.RequestPayer = &v + return s +} + +type ListObjectsOutput struct { + _ struct{} `type:"structure"` + + // All of the keys rolled up in a common prefix count as a single return when + // calculating the number of returns. + // + // A response can contain CommonPrefixes only if you specify a delimiter. + // + // CommonPrefixes contains all (if there are any) keys between Prefix and the + // next occurrence of the string specified by the delimiter. + // + // CommonPrefixes lists keys that act like subdirectories in the directory specified + // by Prefix. + // + // For example, if the prefix is notes/ and the delimiter is a slash (/) as + // in notes/summer/july, the common prefix is notes/summer/. All of the keys + // that roll up into a common prefix count as a single return when calculating + // the number of returns. + CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"` + + // Metadata about each object returned. + Contents []*Object `type:"list" flattened:"true"` + + // Causes keys that contain the same string between the prefix and the first + // occurrence of the delimiter to be rolled up into a single result element + // in the CommonPrefixes collection. These rolled-up keys are not returned elsewhere + // in the response. Each rolled-up result counts as only one return against + // the MaxKeys value. + Delimiter *string `type:"string"` + + // Encoding type used by Amazon S3 to encode object keys in the response. + EncodingType *string `type:"string" enum:"EncodingType"` + + // A flag that indicates whether or not Amazon S3 returned all of the results + // that satisfied the search criteria. + IsTruncated *bool `type:"boolean"` + + // Indicates where in the bucket listing begins. Marker is included in the response + // if it was sent with the request. + Marker *string `type:"string"` + + // The maximum number of keys returned in the response body. + MaxKeys *int64 `type:"integer"` + + // Name of the bucket. + Name *string `type:"string"` + + // When response is truncated (the IsTruncated element value in the response + // is true), you can use the key name in this field as marker in the subsequent + // request to get next set of objects. Amazon S3 lists objects in alphabetical + // order Note: This element is returned only if you have delimiter request parameter + // specified. If response does not include the NextMaker and it is truncated, + // you can use the value of the last Key in the response as the marker in the + // subsequent request to get the next set of object keys. + NextMarker *string `type:"string"` + + // Keys that begin with the indicated prefix. + Prefix *string `type:"string"` +} + +// String returns the string representation +func (s ListObjectsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListObjectsOutput) GoString() string { + return s.String() +} + +// SetCommonPrefixes sets the CommonPrefixes field's value. +func (s *ListObjectsOutput) SetCommonPrefixes(v []*CommonPrefix) *ListObjectsOutput { + s.CommonPrefixes = v + return s +} + +// SetContents sets the Contents field's value. +func (s *ListObjectsOutput) SetContents(v []*Object) *ListObjectsOutput { + s.Contents = v + return s +} + +// SetDelimiter sets the Delimiter field's value. +func (s *ListObjectsOutput) SetDelimiter(v string) *ListObjectsOutput { + s.Delimiter = &v + return s +} + +// SetEncodingType sets the EncodingType field's value. +func (s *ListObjectsOutput) SetEncodingType(v string) *ListObjectsOutput { + s.EncodingType = &v + return s +} + +// SetIsTruncated sets the IsTruncated field's value. +func (s *ListObjectsOutput) SetIsTruncated(v bool) *ListObjectsOutput { + s.IsTruncated = &v + return s +} + +// SetMarker sets the Marker field's value. +func (s *ListObjectsOutput) SetMarker(v string) *ListObjectsOutput { + s.Marker = &v + return s +} + +// SetMaxKeys sets the MaxKeys field's value. +func (s *ListObjectsOutput) SetMaxKeys(v int64) *ListObjectsOutput { + s.MaxKeys = &v + return s +} + +// SetName sets the Name field's value. +func (s *ListObjectsOutput) SetName(v string) *ListObjectsOutput { + s.Name = &v + return s +} + +// SetNextMarker sets the NextMarker field's value. +func (s *ListObjectsOutput) SetNextMarker(v string) *ListObjectsOutput { + s.NextMarker = &v + return s +} + +// SetPrefix sets the Prefix field's value. +func (s *ListObjectsOutput) SetPrefix(v string) *ListObjectsOutput { + s.Prefix = &v + return s +} + +type ListObjectsV2Input struct { + _ struct{} `locationName:"ListObjectsV2Request" type:"structure"` + + // Name of the bucket to list. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // ContinuationToken indicates Amazon S3 that the list is being continued on + // this bucket with a token. ContinuationToken is obfuscated and is not a real + // key. + ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"` + + // A delimiter is a character you use to group keys. + Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"` + + // Encoding type used by Amazon S3 to encode object keys in the response. + EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"` + + // The owner field is not present in listV2 by default, if you want to return + // owner field with each key in the result then set the fetch owner field to + // true + FetchOwner *bool `location:"querystring" locationName:"fetch-owner" type:"boolean"` + + // Sets the maximum number of keys returned in the response. The response might + // contain fewer keys but will never contain more. + MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"` + + // Limits the response to keys that begin with the specified prefix. + Prefix *string `location:"querystring" locationName:"prefix" type:"string"` + + // Confirms that the requester knows that she or he will be charged for the + // list objects request in V2 style. Bucket owners need not specify this parameter + // in their requests. + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` + + // StartAfter is where you want Amazon S3 to start listing from. Amazon S3 starts + // listing after this specified key. StartAfter can be any key in the bucket. + StartAfter *string `location:"querystring" locationName:"start-after" type:"string"` +} + +// String returns the string representation +func (s ListObjectsV2Input) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListObjectsV2Input) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListObjectsV2Input) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListObjectsV2Input"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *ListObjectsV2Input) SetBucket(v string) *ListObjectsV2Input { + s.Bucket = &v + return s +} + +func (s *ListObjectsV2Input) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetContinuationToken sets the ContinuationToken field's value. +func (s *ListObjectsV2Input) SetContinuationToken(v string) *ListObjectsV2Input { + s.ContinuationToken = &v + return s +} + +// SetDelimiter sets the Delimiter field's value. +func (s *ListObjectsV2Input) SetDelimiter(v string) *ListObjectsV2Input { + s.Delimiter = &v + return s +} + +// SetEncodingType sets the EncodingType field's value. +func (s *ListObjectsV2Input) SetEncodingType(v string) *ListObjectsV2Input { + s.EncodingType = &v + return s +} + +// SetFetchOwner sets the FetchOwner field's value. +func (s *ListObjectsV2Input) SetFetchOwner(v bool) *ListObjectsV2Input { + s.FetchOwner = &v + return s +} + +// SetMaxKeys sets the MaxKeys field's value. +func (s *ListObjectsV2Input) SetMaxKeys(v int64) *ListObjectsV2Input { + s.MaxKeys = &v + return s +} + +// SetPrefix sets the Prefix field's value. +func (s *ListObjectsV2Input) SetPrefix(v string) *ListObjectsV2Input { + s.Prefix = &v + return s +} + +// SetRequestPayer sets the RequestPayer field's value. +func (s *ListObjectsV2Input) SetRequestPayer(v string) *ListObjectsV2Input { + s.RequestPayer = &v + return s +} + +// SetStartAfter sets the StartAfter field's value. +func (s *ListObjectsV2Input) SetStartAfter(v string) *ListObjectsV2Input { + s.StartAfter = &v + return s +} + +type ListObjectsV2Output struct { + _ struct{} `type:"structure"` + + // All of the keys rolled up into a common prefix count as a single return when + // calculating the number of returns. + // + // A response can contain CommonPrefixes only if you specify a delimiter. + // + // CommonPrefixes contains all (if there are any) keys between Prefix and the + // next occurrence of the string specified by a delimiter. + // + // CommonPrefixes lists keys that act like subdirectories in the directory specified + // by Prefix. + // + // For example, if the prefix is notes/ and the delimiter is a slash (/) as + // in notes/summer/july, the common prefix is notes/summer/. All of the keys + // that roll up into a common prefix count as a single return when calculating + // the number of returns. + CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"` + + // Metadata about each object returned. + Contents []*Object `type:"list" flattened:"true"` + + // If ContinuationToken was sent with the request, it is included in the response. + ContinuationToken *string `type:"string"` + + // Causes keys that contain the same string between the prefix and the first + // occurrence of the delimiter to be rolled up into a single result element + // in the CommonPrefixes collection. These rolled-up keys are not returned elsewhere + // in the response. Each rolled-up result counts as only one return against + // the MaxKeys value. + Delimiter *string `type:"string"` + + // Encoding type used by Amazon S3 to encode object key names in the XML response. + // + // If you specify the encoding-type request parameter, Amazon S3 includes this + // element in the response, and returns encoded key name values in the following + // response elements: + // + // Delimiter, Prefix, Key, and StartAfter. + EncodingType *string `type:"string" enum:"EncodingType"` + + // Set to false if all of the results were returned. Set to true if more keys + // are available to return. If the number of results exceeds that specified + // by MaxKeys, all of the results might not be returned. + IsTruncated *bool `type:"boolean"` + + // KeyCount is the number of keys returned with this request. KeyCount will + // always be less than equals to MaxKeys field. Say you ask for 50 keys, your + // result will include less than equals 50 keys + KeyCount *int64 `type:"integer"` + + // Sets the maximum number of keys returned in the response. The response might + // contain fewer keys but will never contain more. + MaxKeys *int64 `type:"integer"` + + // Name of the bucket. + Name *string `type:"string"` + + // NextContinuationToken is sent when isTruncated is true which means there + // are more keys in the bucket that can be listed. The next list requests to + // Amazon S3 can be continued with this NextContinuationToken. NextContinuationToken + // is obfuscated and is not a real key + NextContinuationToken *string `type:"string"` + + // Keys that begin with the indicated prefix. + Prefix *string `type:"string"` + + // If StartAfter was sent with the request, it is included in the response. + StartAfter *string `type:"string"` +} + +// String returns the string representation +func (s ListObjectsV2Output) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListObjectsV2Output) GoString() string { + return s.String() +} + +// SetCommonPrefixes sets the CommonPrefixes field's value. +func (s *ListObjectsV2Output) SetCommonPrefixes(v []*CommonPrefix) *ListObjectsV2Output { + s.CommonPrefixes = v + return s +} + +// SetContents sets the Contents field's value. +func (s *ListObjectsV2Output) SetContents(v []*Object) *ListObjectsV2Output { + s.Contents = v + return s +} + +// SetContinuationToken sets the ContinuationToken field's value. +func (s *ListObjectsV2Output) SetContinuationToken(v string) *ListObjectsV2Output { + s.ContinuationToken = &v + return s +} + +// SetDelimiter sets the Delimiter field's value. +func (s *ListObjectsV2Output) SetDelimiter(v string) *ListObjectsV2Output { + s.Delimiter = &v + return s +} + +// SetEncodingType sets the EncodingType field's value. +func (s *ListObjectsV2Output) SetEncodingType(v string) *ListObjectsV2Output { + s.EncodingType = &v + return s +} + +// SetIsTruncated sets the IsTruncated field's value. +func (s *ListObjectsV2Output) SetIsTruncated(v bool) *ListObjectsV2Output { + s.IsTruncated = &v + return s +} + +// SetKeyCount sets the KeyCount field's value. +func (s *ListObjectsV2Output) SetKeyCount(v int64) *ListObjectsV2Output { + s.KeyCount = &v + return s +} + +// SetMaxKeys sets the MaxKeys field's value. +func (s *ListObjectsV2Output) SetMaxKeys(v int64) *ListObjectsV2Output { + s.MaxKeys = &v + return s +} + +// SetName sets the Name field's value. +func (s *ListObjectsV2Output) SetName(v string) *ListObjectsV2Output { + s.Name = &v + return s +} + +// SetNextContinuationToken sets the NextContinuationToken field's value. +func (s *ListObjectsV2Output) SetNextContinuationToken(v string) *ListObjectsV2Output { + s.NextContinuationToken = &v + return s +} + +// SetPrefix sets the Prefix field's value. +func (s *ListObjectsV2Output) SetPrefix(v string) *ListObjectsV2Output { + s.Prefix = &v + return s +} + +// SetStartAfter sets the StartAfter field's value. +func (s *ListObjectsV2Output) SetStartAfter(v string) *ListObjectsV2Output { + s.StartAfter = &v + return s +} + +type ListPartsInput struct { + _ struct{} `locationName:"ListPartsRequest" type:"structure"` + + // Name of the bucket to which the parts are being uploaded.-> + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Object key for which the multipart upload was initiated. + // + // Key is a required field + Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + + // Sets the maximum number of parts to return. + MaxParts *int64 `location:"querystring" locationName:"max-parts" type:"integer"` + + // Specifies the part after which listing should begin. Only parts with higher + // part numbers will be listed. + PartNumberMarker *int64 `location:"querystring" locationName:"part-number-marker" type:"integer"` + + // Confirms that the requester knows that she or he will be charged for the + // request. Bucket owners need not specify this parameter in their requests. + // Documentation on downloading objects from requester pays buckets can be found + // at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` + + // Upload ID identifying the multipart upload whose parts are being listed. + // + // UploadId is a required field + UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"` +} + +// String returns the string representation +func (s ListPartsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListPartsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListPartsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListPartsInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + if s.UploadId == nil { + invalidParams.Add(request.NewErrParamRequired("UploadId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *ListPartsInput) SetBucket(v string) *ListPartsInput { + s.Bucket = &v + return s +} + +func (s *ListPartsInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetKey sets the Key field's value. +func (s *ListPartsInput) SetKey(v string) *ListPartsInput { + s.Key = &v + return s +} + +// SetMaxParts sets the MaxParts field's value. +func (s *ListPartsInput) SetMaxParts(v int64) *ListPartsInput { + s.MaxParts = &v + return s +} + +// SetPartNumberMarker sets the PartNumberMarker field's value. +func (s *ListPartsInput) SetPartNumberMarker(v int64) *ListPartsInput { + s.PartNumberMarker = &v + return s +} + +// SetRequestPayer sets the RequestPayer field's value. +func (s *ListPartsInput) SetRequestPayer(v string) *ListPartsInput { + s.RequestPayer = &v + return s +} + +// SetUploadId sets the UploadId field's value. +func (s *ListPartsInput) SetUploadId(v string) *ListPartsInput { + s.UploadId = &v + return s +} + +type ListPartsOutput struct { + _ struct{} `type:"structure"` + + // If the bucket has a lifecycle rule configured with an action to abort incomplete + // multipart uploads and the prefix in the lifecycle rule matches the object + // name in the request, then the response includes this header indicating when + // the initiated multipart upload will become eligible for abort operation. + // For more information, see Aborting Incomplete Multipart Uploads Using a Bucket + // Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config). + // + // The response will also include the x-amz-abort-rule-id header that will provide + // the ID of the lifecycle configuration rule that defines this action. + AbortDate *time.Time `location:"header" locationName:"x-amz-abort-date" type:"timestamp"` + + // This header is returned along with the x-amz-abort-date header. It identifies + // applicable lifecycle configuration rule that defines the action to abort + // incomplete multipart uploads. + AbortRuleId *string `location:"header" locationName:"x-amz-abort-rule-id" type:"string"` + + // Name of the bucket to which the multipart upload was initiated. + Bucket *string `type:"string"` + + // Container element that identifies who initiated the multipart upload. If + // the initiator is an AWS account, this element provides the same information + // as the Owner element. If the initiator is an IAM User, then this element + // provides the user ARN and display name. + Initiator *Initiator `type:"structure"` + + // Indicates whether the returned list of parts is truncated. A true value indicates + // that the list was truncated. A list can be truncated if the number of parts + // exceeds the limit returned in the MaxParts element. + IsTruncated *bool `type:"boolean"` + + // Object key for which the multipart upload was initiated. + Key *string `min:"1" type:"string"` + + // Maximum number of parts that were allowed in the response. + MaxParts *int64 `type:"integer"` + + // When a list is truncated, this element specifies the last part in the list, + // as well as the value to use for the part-number-marker request parameter + // in a subsequent request. + NextPartNumberMarker *int64 `type:"integer"` + + // Container element that identifies the object owner, after the object is created. + // If multipart upload is initiated by an IAM user, this element provides the + // parent account ID and display name. + Owner *Owner `type:"structure"` + + // When a list is truncated, this element specifies the last part in the list, + // as well as the value to use for the part-number-marker request parameter + // in a subsequent request. + PartNumberMarker *int64 `type:"integer"` + + // Container for elements related to a particular part. A response can contain + // zero or more Part elements. + Parts []*Part `locationName:"Part" type:"list" flattened:"true"` + + // If present, indicates that the requester was successfully charged for the + // request. + RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"` + + // Class of storage (STANDARD or REDUCED_REDUNDANCY) used to store the uploaded + // object. + StorageClass *string `type:"string" enum:"StorageClass"` + + // Upload ID identifying the multipart upload whose parts are being listed. + UploadId *string `type:"string"` +} + +// String returns the string representation +func (s ListPartsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListPartsOutput) GoString() string { + return s.String() +} + +// SetAbortDate sets the AbortDate field's value. +func (s *ListPartsOutput) SetAbortDate(v time.Time) *ListPartsOutput { + s.AbortDate = &v + return s +} + +// SetAbortRuleId sets the AbortRuleId field's value. +func (s *ListPartsOutput) SetAbortRuleId(v string) *ListPartsOutput { + s.AbortRuleId = &v + return s +} + +// SetBucket sets the Bucket field's value. +func (s *ListPartsOutput) SetBucket(v string) *ListPartsOutput { + s.Bucket = &v + return s +} + +func (s *ListPartsOutput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetInitiator sets the Initiator field's value. +func (s *ListPartsOutput) SetInitiator(v *Initiator) *ListPartsOutput { + s.Initiator = v + return s +} + +// SetIsTruncated sets the IsTruncated field's value. +func (s *ListPartsOutput) SetIsTruncated(v bool) *ListPartsOutput { + s.IsTruncated = &v + return s +} + +// SetKey sets the Key field's value. +func (s *ListPartsOutput) SetKey(v string) *ListPartsOutput { + s.Key = &v + return s +} + +// SetMaxParts sets the MaxParts field's value. +func (s *ListPartsOutput) SetMaxParts(v int64) *ListPartsOutput { + s.MaxParts = &v + return s +} + +// SetNextPartNumberMarker sets the NextPartNumberMarker field's value. +func (s *ListPartsOutput) SetNextPartNumberMarker(v int64) *ListPartsOutput { + s.NextPartNumberMarker = &v + return s +} + +// SetOwner sets the Owner field's value. +func (s *ListPartsOutput) SetOwner(v *Owner) *ListPartsOutput { + s.Owner = v + return s +} + +// SetPartNumberMarker sets the PartNumberMarker field's value. +func (s *ListPartsOutput) SetPartNumberMarker(v int64) *ListPartsOutput { + s.PartNumberMarker = &v + return s +} + +// SetParts sets the Parts field's value. +func (s *ListPartsOutput) SetParts(v []*Part) *ListPartsOutput { + s.Parts = v + return s +} + +// SetRequestCharged sets the RequestCharged field's value. +func (s *ListPartsOutput) SetRequestCharged(v string) *ListPartsOutput { + s.RequestCharged = &v + return s +} + +// SetStorageClass sets the StorageClass field's value. +func (s *ListPartsOutput) SetStorageClass(v string) *ListPartsOutput { + s.StorageClass = &v + return s +} + +// SetUploadId sets the UploadId field's value. +func (s *ListPartsOutput) SetUploadId(v string) *ListPartsOutput { + s.UploadId = &v + return s +} + +// Describes an S3 location that will receive the results of the restore request. +type Location struct { + _ struct{} `type:"structure"` + + // A list of grants that control access to the staged results. + AccessControlList []*Grant `locationNameList:"Grant" type:"list"` + + // The name of the bucket where the restore results will be placed. + // + // BucketName is a required field + BucketName *string `type:"string" required:"true"` + + // The canned ACL to apply to the restore results. + CannedACL *string `type:"string" enum:"ObjectCannedACL"` + + // Contains the type of server-side encryption used. + Encryption *Encryption `type:"structure"` + + // The prefix that is prepended to the restore results for this request. + // + // Prefix is a required field + Prefix *string `type:"string" required:"true"` + + // The class of storage used to store the restore results. + StorageClass *string `type:"string" enum:"StorageClass"` + + // The tag-set that is applied to the restore results. + Tagging *Tagging `type:"structure"` + + // A list of metadata to store with the restore results in S3. + UserMetadata []*MetadataEntry `locationNameList:"MetadataEntry" type:"list"` +} + +// String returns the string representation +func (s Location) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Location) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *Location) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "Location"} + if s.BucketName == nil { + invalidParams.Add(request.NewErrParamRequired("BucketName")) + } + if s.Prefix == nil { + invalidParams.Add(request.NewErrParamRequired("Prefix")) + } + if s.AccessControlList != nil { + for i, v := range s.AccessControlList { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AccessControlList", i), err.(request.ErrInvalidParams)) + } + } + } + if s.Encryption != nil { + if err := s.Encryption.Validate(); err != nil { + invalidParams.AddNested("Encryption", err.(request.ErrInvalidParams)) + } + } + if s.Tagging != nil { + if err := s.Tagging.Validate(); err != nil { + invalidParams.AddNested("Tagging", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAccessControlList sets the AccessControlList field's value. +func (s *Location) SetAccessControlList(v []*Grant) *Location { + s.AccessControlList = v + return s +} + +// SetBucketName sets the BucketName field's value. +func (s *Location) SetBucketName(v string) *Location { + s.BucketName = &v + return s +} + +// SetCannedACL sets the CannedACL field's value. +func (s *Location) SetCannedACL(v string) *Location { + s.CannedACL = &v + return s +} + +// SetEncryption sets the Encryption field's value. +func (s *Location) SetEncryption(v *Encryption) *Location { + s.Encryption = v + return s +} + +// SetPrefix sets the Prefix field's value. +func (s *Location) SetPrefix(v string) *Location { + s.Prefix = &v + return s +} + +// SetStorageClass sets the StorageClass field's value. +func (s *Location) SetStorageClass(v string) *Location { + s.StorageClass = &v + return s +} + +// SetTagging sets the Tagging field's value. +func (s *Location) SetTagging(v *Tagging) *Location { + s.Tagging = v + return s +} + +// SetUserMetadata sets the UserMetadata field's value. +func (s *Location) SetUserMetadata(v []*MetadataEntry) *Location { + s.UserMetadata = v + return s +} + +// Describes where logs are stored and the prefix that Amazon S3 assigns to +// all log object keys for a bucket. For more information, see PUT Bucket logging +// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html) +// in the Amazon Simple Storage Service API Reference. +type LoggingEnabled struct { + _ struct{} `type:"structure"` + + // Specifies the bucket where you want Amazon S3 to store server access logs. + // You can have your logs delivered to any bucket that you own, including the + // same bucket that is being logged. You can also configure multiple buckets + // to deliver their logs to the same target bucket. In this case you should + // choose a different TargetPrefix for each source bucket so that the delivered + // log files can be distinguished by key. + // + // TargetBucket is a required field + TargetBucket *string `type:"string" required:"true"` + + // Container for granting information. + TargetGrants []*TargetGrant `locationNameList:"Grant" type:"list"` + + // A prefix for all log object keys. If you store log files from multiple Amazon + // S3 buckets in a single bucket, you can use a prefix to distinguish which + // log files came from which bucket. + // + // TargetPrefix is a required field + TargetPrefix *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s LoggingEnabled) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LoggingEnabled) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *LoggingEnabled) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "LoggingEnabled"} + if s.TargetBucket == nil { + invalidParams.Add(request.NewErrParamRequired("TargetBucket")) + } + if s.TargetPrefix == nil { + invalidParams.Add(request.NewErrParamRequired("TargetPrefix")) + } + if s.TargetGrants != nil { + for i, v := range s.TargetGrants { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TargetGrants", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetTargetBucket sets the TargetBucket field's value. +func (s *LoggingEnabled) SetTargetBucket(v string) *LoggingEnabled { + s.TargetBucket = &v + return s +} + +// SetTargetGrants sets the TargetGrants field's value. +func (s *LoggingEnabled) SetTargetGrants(v []*TargetGrant) *LoggingEnabled { + s.TargetGrants = v + return s +} + +// SetTargetPrefix sets the TargetPrefix field's value. +func (s *LoggingEnabled) SetTargetPrefix(v string) *LoggingEnabled { + s.TargetPrefix = &v + return s +} + +// A metadata key-value pair to store with an object. +type MetadataEntry struct { + _ struct{} `type:"structure"` + + // Name of the Object. + Name *string `type:"string"` + + // Value of the Object. + Value *string `type:"string"` +} + +// String returns the string representation +func (s MetadataEntry) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s MetadataEntry) GoString() string { + return s.String() +} + +// SetName sets the Name field's value. +func (s *MetadataEntry) SetName(v string) *MetadataEntry { + s.Name = &v + return s +} + +// SetValue sets the Value field's value. +func (s *MetadataEntry) SetValue(v string) *MetadataEntry { + s.Value = &v + return s +} + +// A conjunction (logical AND) of predicates, which is used in evaluating a +// metrics filter. The operator must have at least two predicates, and an object +// must match all of the predicates in order for the filter to apply. +type MetricsAndOperator struct { + _ struct{} `type:"structure"` + + // The prefix used when evaluating an AND predicate. + Prefix *string `type:"string"` + + // The list of tags used when evaluating an AND predicate. + Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"` +} + +// String returns the string representation +func (s MetricsAndOperator) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s MetricsAndOperator) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *MetricsAndOperator) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "MetricsAndOperator"} + if s.Tags != nil { + for i, v := range s.Tags { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetPrefix sets the Prefix field's value. +func (s *MetricsAndOperator) SetPrefix(v string) *MetricsAndOperator { + s.Prefix = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *MetricsAndOperator) SetTags(v []*Tag) *MetricsAndOperator { + s.Tags = v + return s +} + +// Specifies a metrics configuration for the CloudWatch request metrics (specified +// by the metrics configuration ID) from an Amazon S3 bucket. If you're updating +// an existing metrics configuration, note that this is a full replacement of +// the existing metrics configuration. If you don't include the elements you +// want to keep, they are erased. For more information, see PUT Bucket metrics +// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTMetricConfiguration.html) +// in the Amazon Simple Storage Service API Reference. +type MetricsConfiguration struct { + _ struct{} `type:"structure"` + + // Specifies a metrics configuration filter. The metrics configuration will + // only include objects that meet the filter's criteria. A filter must be a + // prefix, a tag, or a conjunction (MetricsAndOperator). + Filter *MetricsFilter `type:"structure"` + + // The ID used to identify the metrics configuration. + // + // Id is a required field + Id *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s MetricsConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s MetricsConfiguration) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *MetricsConfiguration) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "MetricsConfiguration"} + if s.Id == nil { + invalidParams.Add(request.NewErrParamRequired("Id")) + } + if s.Filter != nil { + if err := s.Filter.Validate(); err != nil { + invalidParams.AddNested("Filter", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetFilter sets the Filter field's value. +func (s *MetricsConfiguration) SetFilter(v *MetricsFilter) *MetricsConfiguration { + s.Filter = v + return s +} + +// SetId sets the Id field's value. +func (s *MetricsConfiguration) SetId(v string) *MetricsConfiguration { + s.Id = &v + return s +} + +// Specifies a metrics configuration filter. The metrics configuration only +// includes objects that meet the filter's criteria. A filter must be a prefix, +// a tag, or a conjunction (MetricsAndOperator). +type MetricsFilter struct { + _ struct{} `type:"structure"` + + // A conjunction (logical AND) of predicates, which is used in evaluating a + // metrics filter. The operator must have at least two predicates, and an object + // must match all of the predicates in order for the filter to apply. + And *MetricsAndOperator `type:"structure"` + + // The prefix used when evaluating a metrics filter. + Prefix *string `type:"string"` + + // The tag used when evaluating a metrics filter. + Tag *Tag `type:"structure"` +} + +// String returns the string representation +func (s MetricsFilter) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s MetricsFilter) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *MetricsFilter) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "MetricsFilter"} + if s.And != nil { + if err := s.And.Validate(); err != nil { + invalidParams.AddNested("And", err.(request.ErrInvalidParams)) + } + } + if s.Tag != nil { + if err := s.Tag.Validate(); err != nil { + invalidParams.AddNested("Tag", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAnd sets the And field's value. +func (s *MetricsFilter) SetAnd(v *MetricsAndOperator) *MetricsFilter { + s.And = v + return s +} + +// SetPrefix sets the Prefix field's value. +func (s *MetricsFilter) SetPrefix(v string) *MetricsFilter { + s.Prefix = &v + return s +} + +// SetTag sets the Tag field's value. +func (s *MetricsFilter) SetTag(v *Tag) *MetricsFilter { + s.Tag = v + return s +} + +// Container for the MultipartUpload for the Amazon S3 object. +type MultipartUpload struct { + _ struct{} `type:"structure"` + + // Date and time at which the multipart upload was initiated. + Initiated *time.Time `type:"timestamp"` + + // Identifies who initiated the multipart upload. + Initiator *Initiator `type:"structure"` + + // Key of the object for which the multipart upload was initiated. + Key *string `min:"1" type:"string"` + + // Specifies the owner of the object that is part of the multipart upload. + Owner *Owner `type:"structure"` + + // The class of storage used to store the object. + StorageClass *string `type:"string" enum:"StorageClass"` + + // Upload ID that identifies the multipart upload. + UploadId *string `type:"string"` +} + +// String returns the string representation +func (s MultipartUpload) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s MultipartUpload) GoString() string { + return s.String() +} + +// SetInitiated sets the Initiated field's value. +func (s *MultipartUpload) SetInitiated(v time.Time) *MultipartUpload { + s.Initiated = &v + return s +} + +// SetInitiator sets the Initiator field's value. +func (s *MultipartUpload) SetInitiator(v *Initiator) *MultipartUpload { + s.Initiator = v + return s +} + +// SetKey sets the Key field's value. +func (s *MultipartUpload) SetKey(v string) *MultipartUpload { + s.Key = &v + return s +} + +// SetOwner sets the Owner field's value. +func (s *MultipartUpload) SetOwner(v *Owner) *MultipartUpload { + s.Owner = v + return s +} + +// SetStorageClass sets the StorageClass field's value. +func (s *MultipartUpload) SetStorageClass(v string) *MultipartUpload { + s.StorageClass = &v + return s +} + +// SetUploadId sets the UploadId field's value. +func (s *MultipartUpload) SetUploadId(v string) *MultipartUpload { + s.UploadId = &v + return s +} + +// Specifies when noncurrent object versions expire. Upon expiration, Amazon +// S3 permanently deletes the noncurrent object versions. You set this lifecycle +// configuration action on a bucket that has versioning enabled (or suspended) +// to request that Amazon S3 delete noncurrent object versions at a specific +// period in the object's lifetime. +type NoncurrentVersionExpiration struct { + _ struct{} `type:"structure"` + + // Specifies the number of days an object is noncurrent before Amazon S3 can + // perform the associated action. For information about the noncurrent days + // calculations, see How Amazon S3 Calculates When an Object Became Noncurrent + // (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations) + // in the Amazon Simple Storage Service Developer Guide. + NoncurrentDays *int64 `type:"integer"` +} + +// String returns the string representation +func (s NoncurrentVersionExpiration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s NoncurrentVersionExpiration) GoString() string { + return s.String() +} + +// SetNoncurrentDays sets the NoncurrentDays field's value. +func (s *NoncurrentVersionExpiration) SetNoncurrentDays(v int64) *NoncurrentVersionExpiration { + s.NoncurrentDays = &v + return s +} + +// Container for the transition rule that describes when noncurrent objects +// transition to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, +// or DEEP_ARCHIVE storage class. If your bucket is versioning-enabled (or versioning +// is suspended), you can set this action to request that Amazon S3 transition +// noncurrent object versions to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, +// GLACIER, or DEEP_ARCHIVE storage class at a specific period in the object's +// lifetime. +type NoncurrentVersionTransition struct { + _ struct{} `type:"structure"` + + // Specifies the number of days an object is noncurrent before Amazon S3 can + // perform the associated action. For information about the noncurrent days + // calculations, see How Amazon S3 Calculates When an Object Became Noncurrent + // (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html) + // in the Amazon Simple Storage Service Developer Guide. + NoncurrentDays *int64 `type:"integer"` + + // The class of storage used to store the object. + StorageClass *string `type:"string" enum:"TransitionStorageClass"` +} + +// String returns the string representation +func (s NoncurrentVersionTransition) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s NoncurrentVersionTransition) GoString() string { + return s.String() +} + +// SetNoncurrentDays sets the NoncurrentDays field's value. +func (s *NoncurrentVersionTransition) SetNoncurrentDays(v int64) *NoncurrentVersionTransition { + s.NoncurrentDays = &v + return s +} + +// SetStorageClass sets the StorageClass field's value. +func (s *NoncurrentVersionTransition) SetStorageClass(v string) *NoncurrentVersionTransition { + s.StorageClass = &v + return s +} + +// A container for specifying the notification configuration of the bucket. +// If this element is empty, notifications are turned off for the bucket. +type NotificationConfiguration struct { + _ struct{} `type:"structure"` + + // Describes the AWS Lambda functions to invoke and the events for which to + // invoke them. + LambdaFunctionConfigurations []*LambdaFunctionConfiguration `locationName:"CloudFunctionConfiguration" type:"list" flattened:"true"` + + // The Amazon Simple Queue Service queues to publish messages to and the events + // for which to publish messages. + QueueConfigurations []*QueueConfiguration `locationName:"QueueConfiguration" type:"list" flattened:"true"` + + // The topic to which notifications are sent and the events for which notifications + // are generated. + TopicConfigurations []*TopicConfiguration `locationName:"TopicConfiguration" type:"list" flattened:"true"` +} + +// String returns the string representation +func (s NotificationConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s NotificationConfiguration) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *NotificationConfiguration) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "NotificationConfiguration"} + if s.LambdaFunctionConfigurations != nil { + for i, v := range s.LambdaFunctionConfigurations { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "LambdaFunctionConfigurations", i), err.(request.ErrInvalidParams)) + } + } + } + if s.QueueConfigurations != nil { + for i, v := range s.QueueConfigurations { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "QueueConfigurations", i), err.(request.ErrInvalidParams)) + } + } + } + if s.TopicConfigurations != nil { + for i, v := range s.TopicConfigurations { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TopicConfigurations", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetLambdaFunctionConfigurations sets the LambdaFunctionConfigurations field's value. +func (s *NotificationConfiguration) SetLambdaFunctionConfigurations(v []*LambdaFunctionConfiguration) *NotificationConfiguration { + s.LambdaFunctionConfigurations = v + return s +} + +// SetQueueConfigurations sets the QueueConfigurations field's value. +func (s *NotificationConfiguration) SetQueueConfigurations(v []*QueueConfiguration) *NotificationConfiguration { + s.QueueConfigurations = v + return s +} + +// SetTopicConfigurations sets the TopicConfigurations field's value. +func (s *NotificationConfiguration) SetTopicConfigurations(v []*TopicConfiguration) *NotificationConfiguration { + s.TopicConfigurations = v + return s +} + +type NotificationConfigurationDeprecated struct { + _ struct{} `type:"structure"` + + // Container for specifying the AWS Lambda notification configuration. + CloudFunctionConfiguration *CloudFunctionConfiguration `type:"structure"` + + // This data type is deprecated. This data type specifies the configuration + // for publishing messages to an Amazon Simple Queue Service (Amazon SQS) queue + // when Amazon S3 detects specified events. + QueueConfiguration *QueueConfigurationDeprecated `type:"structure"` + + // This data type is deperecated. A container for specifying the configuration + // for publication of messages to an Amazon Simple Notification Service (Amazon + // SNS) topic when Amazon S3 detects specified events. + TopicConfiguration *TopicConfigurationDeprecated `type:"structure"` +} + +// String returns the string representation +func (s NotificationConfigurationDeprecated) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s NotificationConfigurationDeprecated) GoString() string { + return s.String() +} + +// SetCloudFunctionConfiguration sets the CloudFunctionConfiguration field's value. +func (s *NotificationConfigurationDeprecated) SetCloudFunctionConfiguration(v *CloudFunctionConfiguration) *NotificationConfigurationDeprecated { + s.CloudFunctionConfiguration = v + return s +} + +// SetQueueConfiguration sets the QueueConfiguration field's value. +func (s *NotificationConfigurationDeprecated) SetQueueConfiguration(v *QueueConfigurationDeprecated) *NotificationConfigurationDeprecated { + s.QueueConfiguration = v + return s +} + +// SetTopicConfiguration sets the TopicConfiguration field's value. +func (s *NotificationConfigurationDeprecated) SetTopicConfiguration(v *TopicConfigurationDeprecated) *NotificationConfigurationDeprecated { + s.TopicConfiguration = v + return s +} + +// Specifies object key name filtering rules. For information about key name +// filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html) +// in the Amazon Simple Storage Service Developer Guide. +type NotificationConfigurationFilter struct { + _ struct{} `type:"structure"` + + // A container for object key name prefix and suffix filtering rules. + Key *KeyFilter `locationName:"S3Key" type:"structure"` +} + +// String returns the string representation +func (s NotificationConfigurationFilter) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s NotificationConfigurationFilter) GoString() string { + return s.String() +} + +// SetKey sets the Key field's value. +func (s *NotificationConfigurationFilter) SetKey(v *KeyFilter) *NotificationConfigurationFilter { + s.Key = v + return s +} + +// An object consists of data and its descriptive metadata. +type Object struct { + _ struct{} `type:"structure"` + + // The entity tag is an MD5 hash of the object. ETag reflects only changes to + // the contents of an object, not its metadata. + ETag *string `type:"string"` + + // The name that you assign to an object. You use the object key to retrieve + // the object. + Key *string `min:"1" type:"string"` + + // The date the Object was Last Modified + LastModified *time.Time `type:"timestamp"` + + // The owner of the object + Owner *Owner `type:"structure"` + + // Size in bytes of the object + Size *int64 `type:"integer"` + + // The class of storage used to store the object. + StorageClass *string `type:"string" enum:"ObjectStorageClass"` +} + +// String returns the string representation +func (s Object) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Object) GoString() string { + return s.String() +} + +// SetETag sets the ETag field's value. +func (s *Object) SetETag(v string) *Object { + s.ETag = &v + return s +} + +// SetKey sets the Key field's value. +func (s *Object) SetKey(v string) *Object { + s.Key = &v + return s +} + +// SetLastModified sets the LastModified field's value. +func (s *Object) SetLastModified(v time.Time) *Object { + s.LastModified = &v + return s +} + +// SetOwner sets the Owner field's value. +func (s *Object) SetOwner(v *Owner) *Object { + s.Owner = v + return s +} + +// SetSize sets the Size field's value. +func (s *Object) SetSize(v int64) *Object { + s.Size = &v + return s +} + +// SetStorageClass sets the StorageClass field's value. +func (s *Object) SetStorageClass(v string) *Object { + s.StorageClass = &v + return s +} + +// Object Identifier is unique value to identify objects. +type ObjectIdentifier struct { + _ struct{} `type:"structure"` + + // Key name of the object to delete. + // + // Key is a required field + Key *string `min:"1" type:"string" required:"true"` + + // VersionId for the specific version of the object to delete. + VersionId *string `type:"string"` +} + +// String returns the string representation +func (s ObjectIdentifier) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ObjectIdentifier) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ObjectIdentifier) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ObjectIdentifier"} + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetKey sets the Key field's value. +func (s *ObjectIdentifier) SetKey(v string) *ObjectIdentifier { + s.Key = &v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *ObjectIdentifier) SetVersionId(v string) *ObjectIdentifier { + s.VersionId = &v + return s +} + +// The container element for Object Lock configuration parameters. +type ObjectLockConfiguration struct { + _ struct{} `type:"structure"` + + // Indicates whether this bucket has an Object Lock configuration enabled. + ObjectLockEnabled *string `type:"string" enum:"ObjectLockEnabled"` + + // The Object Lock rule in place for the specified object. + Rule *ObjectLockRule `type:"structure"` +} + +// String returns the string representation +func (s ObjectLockConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ObjectLockConfiguration) GoString() string { + return s.String() +} + +// SetObjectLockEnabled sets the ObjectLockEnabled field's value. +func (s *ObjectLockConfiguration) SetObjectLockEnabled(v string) *ObjectLockConfiguration { + s.ObjectLockEnabled = &v + return s +} + +// SetRule sets the Rule field's value. +func (s *ObjectLockConfiguration) SetRule(v *ObjectLockRule) *ObjectLockConfiguration { + s.Rule = v + return s +} + +// A Legal Hold configuration for an object. +type ObjectLockLegalHold struct { + _ struct{} `type:"structure"` + + // Indicates whether the specified object has a Legal Hold in place. + Status *string `type:"string" enum:"ObjectLockLegalHoldStatus"` +} + +// String returns the string representation +func (s ObjectLockLegalHold) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ObjectLockLegalHold) GoString() string { + return s.String() +} + +// SetStatus sets the Status field's value. +func (s *ObjectLockLegalHold) SetStatus(v string) *ObjectLockLegalHold { + s.Status = &v + return s +} + +// A Retention configuration for an object. +type ObjectLockRetention struct { + _ struct{} `type:"structure"` + + // Indicates the Retention mode for the specified object. + Mode *string `type:"string" enum:"ObjectLockRetentionMode"` + + // The date on which this Object Lock Retention will expire. + RetainUntilDate *time.Time `type:"timestamp" timestampFormat:"iso8601"` +} + +// String returns the string representation +func (s ObjectLockRetention) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ObjectLockRetention) GoString() string { + return s.String() +} + +// SetMode sets the Mode field's value. +func (s *ObjectLockRetention) SetMode(v string) *ObjectLockRetention { + s.Mode = &v + return s +} + +// SetRetainUntilDate sets the RetainUntilDate field's value. +func (s *ObjectLockRetention) SetRetainUntilDate(v time.Time) *ObjectLockRetention { + s.RetainUntilDate = &v + return s +} + +// The container element for an Object Lock rule. +type ObjectLockRule struct { + _ struct{} `type:"structure"` + + // The default retention period that you want to apply to new objects placed + // in the specified bucket. + DefaultRetention *DefaultRetention `type:"structure"` +} + +// String returns the string representation +func (s ObjectLockRule) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ObjectLockRule) GoString() string { + return s.String() +} + +// SetDefaultRetention sets the DefaultRetention field's value. +func (s *ObjectLockRule) SetDefaultRetention(v *DefaultRetention) *ObjectLockRule { + s.DefaultRetention = v + return s +} + +// The version of an object. +type ObjectVersion struct { + _ struct{} `type:"structure"` + + // The entity tag is an MD5 hash of that version of the object + ETag *string `type:"string"` + + // Specifies whether the object is (true) or is not (false) the latest version + // of an object. + IsLatest *bool `type:"boolean"` + + // The object key. + Key *string `min:"1" type:"string"` + + // Date and time the object was last modified. + LastModified *time.Time `type:"timestamp"` + + // Specifies the Owner of the object. + Owner *Owner `type:"structure"` + + // Size in bytes of the object. + Size *int64 `type:"integer"` + + // The class of storage used to store the object. + StorageClass *string `type:"string" enum:"ObjectVersionStorageClass"` + + // Version ID of an object. + VersionId *string `type:"string"` +} + +// String returns the string representation +func (s ObjectVersion) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ObjectVersion) GoString() string { + return s.String() +} + +// SetETag sets the ETag field's value. +func (s *ObjectVersion) SetETag(v string) *ObjectVersion { + s.ETag = &v + return s +} + +// SetIsLatest sets the IsLatest field's value. +func (s *ObjectVersion) SetIsLatest(v bool) *ObjectVersion { + s.IsLatest = &v + return s +} + +// SetKey sets the Key field's value. +func (s *ObjectVersion) SetKey(v string) *ObjectVersion { + s.Key = &v + return s +} + +// SetLastModified sets the LastModified field's value. +func (s *ObjectVersion) SetLastModified(v time.Time) *ObjectVersion { + s.LastModified = &v + return s +} + +// SetOwner sets the Owner field's value. +func (s *ObjectVersion) SetOwner(v *Owner) *ObjectVersion { + s.Owner = v + return s +} + +// SetSize sets the Size field's value. +func (s *ObjectVersion) SetSize(v int64) *ObjectVersion { + s.Size = &v + return s +} + +// SetStorageClass sets the StorageClass field's value. +func (s *ObjectVersion) SetStorageClass(v string) *ObjectVersion { + s.StorageClass = &v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *ObjectVersion) SetVersionId(v string) *ObjectVersion { + s.VersionId = &v + return s +} + +// Describes the location where the restore job's output is stored. +type OutputLocation struct { + _ struct{} `type:"structure"` + + // Describes an S3 location that will receive the results of the restore request. + S3 *Location `type:"structure"` +} + +// String returns the string representation +func (s OutputLocation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s OutputLocation) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *OutputLocation) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "OutputLocation"} + if s.S3 != nil { + if err := s.S3.Validate(); err != nil { + invalidParams.AddNested("S3", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetS3 sets the S3 field's value. +func (s *OutputLocation) SetS3(v *Location) *OutputLocation { + s.S3 = v + return s +} + +// Describes how results of the Select job are serialized. +type OutputSerialization struct { + _ struct{} `type:"structure"` + + // Describes the serialization of CSV-encoded Select results. + CSV *CSVOutput `type:"structure"` + + // Specifies JSON as request's output serialization format. + JSON *JSONOutput `type:"structure"` +} + +// String returns the string representation +func (s OutputSerialization) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s OutputSerialization) GoString() string { + return s.String() +} + +// SetCSV sets the CSV field's value. +func (s *OutputSerialization) SetCSV(v *CSVOutput) *OutputSerialization { + s.CSV = v + return s +} + +// SetJSON sets the JSON field's value. +func (s *OutputSerialization) SetJSON(v *JSONOutput) *OutputSerialization { + s.JSON = v + return s +} + +// Container for the owner's display name and ID +type Owner struct { + _ struct{} `type:"structure"` + + // Container for the display name of the owner + DisplayName *string `type:"string"` + + // Container for the ID of the owner + ID *string `type:"string"` +} + +// String returns the string representation +func (s Owner) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Owner) GoString() string { + return s.String() +} + +// SetDisplayName sets the DisplayName field's value. +func (s *Owner) SetDisplayName(v string) *Owner { + s.DisplayName = &v + return s +} + +// SetID sets the ID field's value. +func (s *Owner) SetID(v string) *Owner { + s.ID = &v + return s +} + +// Container for Parquet. +type ParquetInput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s ParquetInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ParquetInput) GoString() string { + return s.String() +} + +// Container for elements related to a part. +type Part struct { + _ struct{} `type:"structure"` + + // Entity tag returned when the part was uploaded. + ETag *string `type:"string"` + + // Date and time at which the part was uploaded. + LastModified *time.Time `type:"timestamp"` + + // Part number identifying the part. This is a positive integer between 1 and + // 10,000. + PartNumber *int64 `type:"integer"` + + // Size in bytes of the uploaded part data. + Size *int64 `type:"integer"` +} + +// String returns the string representation +func (s Part) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Part) GoString() string { + return s.String() +} + +// SetETag sets the ETag field's value. +func (s *Part) SetETag(v string) *Part { + s.ETag = &v + return s +} + +// SetLastModified sets the LastModified field's value. +func (s *Part) SetLastModified(v time.Time) *Part { + s.LastModified = &v + return s +} + +// SetPartNumber sets the PartNumber field's value. +func (s *Part) SetPartNumber(v int64) *Part { + s.PartNumber = &v + return s +} + +// SetSize sets the Size field's value. +func (s *Part) SetSize(v int64) *Part { + s.Size = &v + return s +} + +// The container element for a bucket's policy status. +type PolicyStatus struct { + _ struct{} `type:"structure"` + + // The policy status for this bucket. TRUE indicates that this bucket is public. + // FALSE indicates that the bucket is not public. + IsPublic *bool `locationName:"IsPublic" type:"boolean"` +} + +// String returns the string representation +func (s PolicyStatus) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PolicyStatus) GoString() string { + return s.String() +} + +// SetIsPublic sets the IsPublic field's value. +func (s *PolicyStatus) SetIsPublic(v bool) *PolicyStatus { + s.IsPublic = &v + return s +} + +// This data type contains information about progress of an operation. +type Progress struct { + _ struct{} `type:"structure"` + + // The current number of uncompressed object bytes processed. + BytesProcessed *int64 `type:"long"` + + // The current number of bytes of records payload data returned. + BytesReturned *int64 `type:"long"` + + // The current number of object bytes scanned. + BytesScanned *int64 `type:"long"` +} + +// String returns the string representation +func (s Progress) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Progress) GoString() string { + return s.String() +} + +// SetBytesProcessed sets the BytesProcessed field's value. +func (s *Progress) SetBytesProcessed(v int64) *Progress { + s.BytesProcessed = &v + return s +} + +// SetBytesReturned sets the BytesReturned field's value. +func (s *Progress) SetBytesReturned(v int64) *Progress { + s.BytesReturned = &v + return s +} + +// SetBytesScanned sets the BytesScanned field's value. +func (s *Progress) SetBytesScanned(v int64) *Progress { + s.BytesScanned = &v + return s +} + +// This data type contains information about the progress event of an operation. +type ProgressEvent struct { + _ struct{} `locationName:"ProgressEvent" type:"structure" payload:"Details"` + + // The Progress event details. + Details *Progress `locationName:"Details" type:"structure"` +} + +// String returns the string representation +func (s ProgressEvent) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ProgressEvent) GoString() string { + return s.String() +} + +// SetDetails sets the Details field's value. +func (s *ProgressEvent) SetDetails(v *Progress) *ProgressEvent { + s.Details = v + return s +} + +// The ProgressEvent is and event in the SelectObjectContentEventStream group of events. +func (s *ProgressEvent) eventSelectObjectContentEventStream() {} + +// UnmarshalEvent unmarshals the EventStream Message into the ProgressEvent value. +// This method is only used internally within the SDK's EventStream handling. +func (s *ProgressEvent) UnmarshalEvent( + payloadUnmarshaler protocol.PayloadUnmarshaler, + msg eventstream.Message, +) error { + if err := payloadUnmarshaler.UnmarshalPayload( + bytes.NewReader(msg.Payload), s, + ); err != nil { + return err + } + return nil +} + +// The PublicAccessBlock configuration that you want to apply to this Amazon +// S3 bucket. You can enable the configuration options in any combination. For +// more information about when Amazon S3 considers a bucket or object public, +// see The Meaning of "Public" (https://docs.aws.amazon.com/AmazonS3/latest/dev//access-control-block-public-access.html#access-control-block-public-access-policy-status) +// in the Amazon Simple Storage Service Developer Guide. +type PublicAccessBlockConfiguration struct { + _ struct{} `type:"structure"` + + // Specifies whether Amazon S3 should block public access control lists (ACLs) + // for this bucket and objects in this bucket. Setting this element to TRUE + // causes the following behavior: + // + // * PUT Bucket acl and PUT Object acl calls fail if the specified ACL is + // public. + // + // * PUT Object calls fail if the request includes a public ACL. + // + // * PUT Bucket calls fail if the request includes a public ACL. + // + // Enabling this setting doesn't affect existing policies or ACLs. + BlockPublicAcls *bool `locationName:"BlockPublicAcls" type:"boolean"` + + // Specifies whether Amazon S3 should block public bucket policies for this + // bucket. Setting this element to TRUE causes Amazon S3 to reject calls to + // PUT Bucket policy if the specified bucket policy allows public access. + // + // Enabling this setting doesn't affect existing bucket policies. + BlockPublicPolicy *bool `locationName:"BlockPublicPolicy" type:"boolean"` + + // Specifies whether Amazon S3 should ignore public ACLs for this bucket and + // objects in this bucket. Setting this element to TRUE causes Amazon S3 to + // ignore all public ACLs on this bucket and objects in this bucket. + // + // Enabling this setting doesn't affect the persistence of any existing ACLs + // and doesn't prevent new public ACLs from being set. + IgnorePublicAcls *bool `locationName:"IgnorePublicAcls" type:"boolean"` + + // Specifies whether Amazon S3 should restrict public bucket policies for this + // bucket. Setting this element to TRUE restricts access to this bucket to only + // AWS services and authorized users within this account if the bucket has a + // public policy. + // + // Enabling this setting doesn't affect previously stored bucket policies, except + // that public and cross-account access within any public bucket policy, including + // non-public delegation to specific accounts, is blocked. + RestrictPublicBuckets *bool `locationName:"RestrictPublicBuckets" type:"boolean"` +} + +// String returns the string representation +func (s PublicAccessBlockConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PublicAccessBlockConfiguration) GoString() string { + return s.String() +} + +// SetBlockPublicAcls sets the BlockPublicAcls field's value. +func (s *PublicAccessBlockConfiguration) SetBlockPublicAcls(v bool) *PublicAccessBlockConfiguration { + s.BlockPublicAcls = &v + return s +} + +// SetBlockPublicPolicy sets the BlockPublicPolicy field's value. +func (s *PublicAccessBlockConfiguration) SetBlockPublicPolicy(v bool) *PublicAccessBlockConfiguration { + s.BlockPublicPolicy = &v + return s +} + +// SetIgnorePublicAcls sets the IgnorePublicAcls field's value. +func (s *PublicAccessBlockConfiguration) SetIgnorePublicAcls(v bool) *PublicAccessBlockConfiguration { + s.IgnorePublicAcls = &v + return s +} + +// SetRestrictPublicBuckets sets the RestrictPublicBuckets field's value. +func (s *PublicAccessBlockConfiguration) SetRestrictPublicBuckets(v bool) *PublicAccessBlockConfiguration { + s.RestrictPublicBuckets = &v + return s +} + +type PutBucketAccelerateConfigurationInput struct { + _ struct{} `locationName:"PutBucketAccelerateConfigurationRequest" type:"structure" payload:"AccelerateConfiguration"` + + // Container for setting the transfer acceleration state. + // + // AccelerateConfiguration is a required field + AccelerateConfiguration *AccelerateConfiguration `locationName:"AccelerateConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` + + // Name of the bucket for which the accelerate configuration is set. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` +} + +// String returns the string representation +func (s PutBucketAccelerateConfigurationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketAccelerateConfigurationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutBucketAccelerateConfigurationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutBucketAccelerateConfigurationInput"} + if s.AccelerateConfiguration == nil { + invalidParams.Add(request.NewErrParamRequired("AccelerateConfiguration")) + } + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAccelerateConfiguration sets the AccelerateConfiguration field's value. +func (s *PutBucketAccelerateConfigurationInput) SetAccelerateConfiguration(v *AccelerateConfiguration) *PutBucketAccelerateConfigurationInput { + s.AccelerateConfiguration = v + return s +} + +// SetBucket sets the Bucket field's value. +func (s *PutBucketAccelerateConfigurationInput) SetBucket(v string) *PutBucketAccelerateConfigurationInput { + s.Bucket = &v + return s +} + +func (s *PutBucketAccelerateConfigurationInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +type PutBucketAccelerateConfigurationOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s PutBucketAccelerateConfigurationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketAccelerateConfigurationOutput) GoString() string { + return s.String() +} + +type PutBucketAclInput struct { + _ struct{} `locationName:"PutBucketAclRequest" type:"structure" payload:"AccessControlPolicy"` + + // The canned ACL to apply to the bucket. + ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"BucketCannedACL"` + + // Contains the elements that set the ACL permissions for an object per grantee. + AccessControlPolicy *AccessControlPolicy `locationName:"AccessControlPolicy" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` + + // The bucket to which to apply the ACL. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Allows grantee the read, write, read ACP, and write ACP permissions on the + // bucket. + GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"` + + // Allows grantee to list the objects in the bucket. + GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"` + + // Allows grantee to read the bucket ACL. + GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"` + + // Allows grantee to create, overwrite, and delete any object in the bucket. + GrantWrite *string `location:"header" locationName:"x-amz-grant-write" type:"string"` + + // Allows grantee to write the ACL for the applicable bucket. + GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"` +} + +// String returns the string representation +func (s PutBucketAclInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketAclInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutBucketAclInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutBucketAclInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.AccessControlPolicy != nil { + if err := s.AccessControlPolicy.Validate(); err != nil { + invalidParams.AddNested("AccessControlPolicy", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetACL sets the ACL field's value. +func (s *PutBucketAclInput) SetACL(v string) *PutBucketAclInput { + s.ACL = &v + return s +} + +// SetAccessControlPolicy sets the AccessControlPolicy field's value. +func (s *PutBucketAclInput) SetAccessControlPolicy(v *AccessControlPolicy) *PutBucketAclInput { + s.AccessControlPolicy = v + return s +} + +// SetBucket sets the Bucket field's value. +func (s *PutBucketAclInput) SetBucket(v string) *PutBucketAclInput { + s.Bucket = &v + return s +} + +func (s *PutBucketAclInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetGrantFullControl sets the GrantFullControl field's value. +func (s *PutBucketAclInput) SetGrantFullControl(v string) *PutBucketAclInput { + s.GrantFullControl = &v + return s +} + +// SetGrantRead sets the GrantRead field's value. +func (s *PutBucketAclInput) SetGrantRead(v string) *PutBucketAclInput { + s.GrantRead = &v + return s +} + +// SetGrantReadACP sets the GrantReadACP field's value. +func (s *PutBucketAclInput) SetGrantReadACP(v string) *PutBucketAclInput { + s.GrantReadACP = &v + return s +} + +// SetGrantWrite sets the GrantWrite field's value. +func (s *PutBucketAclInput) SetGrantWrite(v string) *PutBucketAclInput { + s.GrantWrite = &v + return s +} + +// SetGrantWriteACP sets the GrantWriteACP field's value. +func (s *PutBucketAclInput) SetGrantWriteACP(v string) *PutBucketAclInput { + s.GrantWriteACP = &v + return s +} + +type PutBucketAclOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s PutBucketAclOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketAclOutput) GoString() string { + return s.String() +} + +type PutBucketAnalyticsConfigurationInput struct { + _ struct{} `locationName:"PutBucketAnalyticsConfigurationRequest" type:"structure" payload:"AnalyticsConfiguration"` + + // The configuration and any analyses for the analytics filter. + // + // AnalyticsConfiguration is a required field + AnalyticsConfiguration *AnalyticsConfiguration `locationName:"AnalyticsConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` + + // The name of the bucket to which an analytics configuration is stored. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // The ID that identifies the analytics configuration. + // + // Id is a required field + Id *string `location:"querystring" locationName:"id" type:"string" required:"true"` +} + +// String returns the string representation +func (s PutBucketAnalyticsConfigurationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketAnalyticsConfigurationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutBucketAnalyticsConfigurationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutBucketAnalyticsConfigurationInput"} + if s.AnalyticsConfiguration == nil { + invalidParams.Add(request.NewErrParamRequired("AnalyticsConfiguration")) + } + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Id == nil { + invalidParams.Add(request.NewErrParamRequired("Id")) + } + if s.AnalyticsConfiguration != nil { + if err := s.AnalyticsConfiguration.Validate(); err != nil { + invalidParams.AddNested("AnalyticsConfiguration", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAnalyticsConfiguration sets the AnalyticsConfiguration field's value. +func (s *PutBucketAnalyticsConfigurationInput) SetAnalyticsConfiguration(v *AnalyticsConfiguration) *PutBucketAnalyticsConfigurationInput { + s.AnalyticsConfiguration = v + return s +} + +// SetBucket sets the Bucket field's value. +func (s *PutBucketAnalyticsConfigurationInput) SetBucket(v string) *PutBucketAnalyticsConfigurationInput { + s.Bucket = &v + return s +} + +func (s *PutBucketAnalyticsConfigurationInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetId sets the Id field's value. +func (s *PutBucketAnalyticsConfigurationInput) SetId(v string) *PutBucketAnalyticsConfigurationInput { + s.Id = &v + return s +} + +type PutBucketAnalyticsConfigurationOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s PutBucketAnalyticsConfigurationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketAnalyticsConfigurationOutput) GoString() string { + return s.String() +} + +type PutBucketCorsInput struct { + _ struct{} `locationName:"PutBucketCorsRequest" type:"structure" payload:"CORSConfiguration"` + + // Specifies the bucket impacted by the corsconfiguration. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Describes the cross-origin access configuration for objects in an Amazon + // S3 bucket. For more information, see Enabling Cross-Origin Resource Sharing + // (https://docs.aws.amazon.com/AmazonS3/latest/dev//cors.html) in the Amazon + // Simple Storage Service Developer Guide. + // + // CORSConfiguration is a required field + CORSConfiguration *CORSConfiguration `locationName:"CORSConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` +} + +// String returns the string representation +func (s PutBucketCorsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketCorsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutBucketCorsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutBucketCorsInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.CORSConfiguration == nil { + invalidParams.Add(request.NewErrParamRequired("CORSConfiguration")) + } + if s.CORSConfiguration != nil { + if err := s.CORSConfiguration.Validate(); err != nil { + invalidParams.AddNested("CORSConfiguration", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *PutBucketCorsInput) SetBucket(v string) *PutBucketCorsInput { + s.Bucket = &v + return s +} + +func (s *PutBucketCorsInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetCORSConfiguration sets the CORSConfiguration field's value. +func (s *PutBucketCorsInput) SetCORSConfiguration(v *CORSConfiguration) *PutBucketCorsInput { + s.CORSConfiguration = v + return s +} + +type PutBucketCorsOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s PutBucketCorsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketCorsOutput) GoString() string { + return s.String() +} + +type PutBucketEncryptionInput struct { + _ struct{} `locationName:"PutBucketEncryptionRequest" type:"structure" payload:"ServerSideEncryptionConfiguration"` + + // Specifies default encryption for a bucket using server-side encryption with + // Amazon S3-managed keys (SSE-S3) or customer master keys stored in AWS KMS + // (SSE-KMS). For information about the Amazon S3 default encryption feature, + // see Amazon S3 Default Bucket Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html) + // in the Amazon Simple Storage Service Developer Guide. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Specifies the default server-side-encryption configuration. + // + // ServerSideEncryptionConfiguration is a required field + ServerSideEncryptionConfiguration *ServerSideEncryptionConfiguration `locationName:"ServerSideEncryptionConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` +} + +// String returns the string representation +func (s PutBucketEncryptionInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketEncryptionInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutBucketEncryptionInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutBucketEncryptionInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.ServerSideEncryptionConfiguration == nil { + invalidParams.Add(request.NewErrParamRequired("ServerSideEncryptionConfiguration")) + } + if s.ServerSideEncryptionConfiguration != nil { + if err := s.ServerSideEncryptionConfiguration.Validate(); err != nil { + invalidParams.AddNested("ServerSideEncryptionConfiguration", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *PutBucketEncryptionInput) SetBucket(v string) *PutBucketEncryptionInput { + s.Bucket = &v + return s +} + +func (s *PutBucketEncryptionInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetServerSideEncryptionConfiguration sets the ServerSideEncryptionConfiguration field's value. +func (s *PutBucketEncryptionInput) SetServerSideEncryptionConfiguration(v *ServerSideEncryptionConfiguration) *PutBucketEncryptionInput { + s.ServerSideEncryptionConfiguration = v + return s +} + +type PutBucketEncryptionOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s PutBucketEncryptionOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketEncryptionOutput) GoString() string { + return s.String() +} + +type PutBucketInventoryConfigurationInput struct { + _ struct{} `locationName:"PutBucketInventoryConfigurationRequest" type:"structure" payload:"InventoryConfiguration"` + + // The name of the bucket where the inventory configuration will be stored. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // The ID used to identify the inventory configuration. + // + // Id is a required field + Id *string `location:"querystring" locationName:"id" type:"string" required:"true"` + + // Specifies the inventory configuration. + // + // InventoryConfiguration is a required field + InventoryConfiguration *InventoryConfiguration `locationName:"InventoryConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` +} + +// String returns the string representation +func (s PutBucketInventoryConfigurationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketInventoryConfigurationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutBucketInventoryConfigurationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutBucketInventoryConfigurationInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Id == nil { + invalidParams.Add(request.NewErrParamRequired("Id")) + } + if s.InventoryConfiguration == nil { + invalidParams.Add(request.NewErrParamRequired("InventoryConfiguration")) + } + if s.InventoryConfiguration != nil { + if err := s.InventoryConfiguration.Validate(); err != nil { + invalidParams.AddNested("InventoryConfiguration", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *PutBucketInventoryConfigurationInput) SetBucket(v string) *PutBucketInventoryConfigurationInput { + s.Bucket = &v + return s +} + +func (s *PutBucketInventoryConfigurationInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetId sets the Id field's value. +func (s *PutBucketInventoryConfigurationInput) SetId(v string) *PutBucketInventoryConfigurationInput { + s.Id = &v + return s +} + +// SetInventoryConfiguration sets the InventoryConfiguration field's value. +func (s *PutBucketInventoryConfigurationInput) SetInventoryConfiguration(v *InventoryConfiguration) *PutBucketInventoryConfigurationInput { + s.InventoryConfiguration = v + return s +} + +type PutBucketInventoryConfigurationOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s PutBucketInventoryConfigurationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketInventoryConfigurationOutput) GoString() string { + return s.String() +} + +type PutBucketLifecycleConfigurationInput struct { + _ struct{} `locationName:"PutBucketLifecycleConfigurationRequest" type:"structure" payload:"LifecycleConfiguration"` + + // The name of the bucket for which to set the configuration. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Container for lifecycle rules. You can add as many as 1,000 rules. + LifecycleConfiguration *BucketLifecycleConfiguration `locationName:"LifecycleConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` +} + +// String returns the string representation +func (s PutBucketLifecycleConfigurationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketLifecycleConfigurationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutBucketLifecycleConfigurationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutBucketLifecycleConfigurationInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.LifecycleConfiguration != nil { + if err := s.LifecycleConfiguration.Validate(); err != nil { + invalidParams.AddNested("LifecycleConfiguration", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *PutBucketLifecycleConfigurationInput) SetBucket(v string) *PutBucketLifecycleConfigurationInput { + s.Bucket = &v + return s +} + +func (s *PutBucketLifecycleConfigurationInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetLifecycleConfiguration sets the LifecycleConfiguration field's value. +func (s *PutBucketLifecycleConfigurationInput) SetLifecycleConfiguration(v *BucketLifecycleConfiguration) *PutBucketLifecycleConfigurationInput { + s.LifecycleConfiguration = v + return s +} + +type PutBucketLifecycleConfigurationOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s PutBucketLifecycleConfigurationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketLifecycleConfigurationOutput) GoString() string { + return s.String() +} + +type PutBucketLifecycleInput struct { + _ struct{} `locationName:"PutBucketLifecycleRequest" type:"structure" payload:"LifecycleConfiguration"` + + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Container for lifecycle rules. You can add as many as 1000 rules. + LifecycleConfiguration *LifecycleConfiguration `locationName:"LifecycleConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` +} + +// String returns the string representation +func (s PutBucketLifecycleInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketLifecycleInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutBucketLifecycleInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutBucketLifecycleInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.LifecycleConfiguration != nil { + if err := s.LifecycleConfiguration.Validate(); err != nil { + invalidParams.AddNested("LifecycleConfiguration", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *PutBucketLifecycleInput) SetBucket(v string) *PutBucketLifecycleInput { + s.Bucket = &v + return s +} + +func (s *PutBucketLifecycleInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetLifecycleConfiguration sets the LifecycleConfiguration field's value. +func (s *PutBucketLifecycleInput) SetLifecycleConfiguration(v *LifecycleConfiguration) *PutBucketLifecycleInput { + s.LifecycleConfiguration = v + return s +} + +type PutBucketLifecycleOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s PutBucketLifecycleOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketLifecycleOutput) GoString() string { + return s.String() +} + +type PutBucketLoggingInput struct { + _ struct{} `locationName:"PutBucketLoggingRequest" type:"structure" payload:"BucketLoggingStatus"` + + // The name of the bucket for which to set the logging parameters. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Container for logging status information. + // + // BucketLoggingStatus is a required field + BucketLoggingStatus *BucketLoggingStatus `locationName:"BucketLoggingStatus" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` +} + +// String returns the string representation +func (s PutBucketLoggingInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketLoggingInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutBucketLoggingInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutBucketLoggingInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.BucketLoggingStatus == nil { + invalidParams.Add(request.NewErrParamRequired("BucketLoggingStatus")) + } + if s.BucketLoggingStatus != nil { + if err := s.BucketLoggingStatus.Validate(); err != nil { + invalidParams.AddNested("BucketLoggingStatus", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *PutBucketLoggingInput) SetBucket(v string) *PutBucketLoggingInput { + s.Bucket = &v + return s +} + +func (s *PutBucketLoggingInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetBucketLoggingStatus sets the BucketLoggingStatus field's value. +func (s *PutBucketLoggingInput) SetBucketLoggingStatus(v *BucketLoggingStatus) *PutBucketLoggingInput { + s.BucketLoggingStatus = v + return s +} + +type PutBucketLoggingOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s PutBucketLoggingOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketLoggingOutput) GoString() string { + return s.String() +} + +type PutBucketMetricsConfigurationInput struct { + _ struct{} `locationName:"PutBucketMetricsConfigurationRequest" type:"structure" payload:"MetricsConfiguration"` + + // The name of the bucket for which the metrics configuration is set. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // The ID used to identify the metrics configuration. + // + // Id is a required field + Id *string `location:"querystring" locationName:"id" type:"string" required:"true"` + + // Specifies the metrics configuration. + // + // MetricsConfiguration is a required field + MetricsConfiguration *MetricsConfiguration `locationName:"MetricsConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` +} + +// String returns the string representation +func (s PutBucketMetricsConfigurationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketMetricsConfigurationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutBucketMetricsConfigurationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutBucketMetricsConfigurationInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Id == nil { + invalidParams.Add(request.NewErrParamRequired("Id")) + } + if s.MetricsConfiguration == nil { + invalidParams.Add(request.NewErrParamRequired("MetricsConfiguration")) + } + if s.MetricsConfiguration != nil { + if err := s.MetricsConfiguration.Validate(); err != nil { + invalidParams.AddNested("MetricsConfiguration", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *PutBucketMetricsConfigurationInput) SetBucket(v string) *PutBucketMetricsConfigurationInput { + s.Bucket = &v + return s +} + +func (s *PutBucketMetricsConfigurationInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetId sets the Id field's value. +func (s *PutBucketMetricsConfigurationInput) SetId(v string) *PutBucketMetricsConfigurationInput { + s.Id = &v + return s +} + +// SetMetricsConfiguration sets the MetricsConfiguration field's value. +func (s *PutBucketMetricsConfigurationInput) SetMetricsConfiguration(v *MetricsConfiguration) *PutBucketMetricsConfigurationInput { + s.MetricsConfiguration = v + return s +} + +type PutBucketMetricsConfigurationOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s PutBucketMetricsConfigurationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketMetricsConfigurationOutput) GoString() string { + return s.String() +} + +type PutBucketNotificationConfigurationInput struct { + _ struct{} `locationName:"PutBucketNotificationConfigurationRequest" type:"structure" payload:"NotificationConfiguration"` + + // The name of the bucket. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // A container for specifying the notification configuration of the bucket. + // If this element is empty, notifications are turned off for the bucket. + // + // NotificationConfiguration is a required field + NotificationConfiguration *NotificationConfiguration `locationName:"NotificationConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` +} + +// String returns the string representation +func (s PutBucketNotificationConfigurationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketNotificationConfigurationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutBucketNotificationConfigurationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutBucketNotificationConfigurationInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.NotificationConfiguration == nil { + invalidParams.Add(request.NewErrParamRequired("NotificationConfiguration")) + } + if s.NotificationConfiguration != nil { + if err := s.NotificationConfiguration.Validate(); err != nil { + invalidParams.AddNested("NotificationConfiguration", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *PutBucketNotificationConfigurationInput) SetBucket(v string) *PutBucketNotificationConfigurationInput { + s.Bucket = &v + return s +} + +func (s *PutBucketNotificationConfigurationInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetNotificationConfiguration sets the NotificationConfiguration field's value. +func (s *PutBucketNotificationConfigurationInput) SetNotificationConfiguration(v *NotificationConfiguration) *PutBucketNotificationConfigurationInput { + s.NotificationConfiguration = v + return s +} + +type PutBucketNotificationConfigurationOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s PutBucketNotificationConfigurationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketNotificationConfigurationOutput) GoString() string { + return s.String() +} + +type PutBucketNotificationInput struct { + _ struct{} `locationName:"PutBucketNotificationRequest" type:"structure" payload:"NotificationConfiguration"` + + // The name of the bucket. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // The container for the configuration. + // + // NotificationConfiguration is a required field + NotificationConfiguration *NotificationConfigurationDeprecated `locationName:"NotificationConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` +} + +// String returns the string representation +func (s PutBucketNotificationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketNotificationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutBucketNotificationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutBucketNotificationInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.NotificationConfiguration == nil { + invalidParams.Add(request.NewErrParamRequired("NotificationConfiguration")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *PutBucketNotificationInput) SetBucket(v string) *PutBucketNotificationInput { + s.Bucket = &v + return s +} + +func (s *PutBucketNotificationInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetNotificationConfiguration sets the NotificationConfiguration field's value. +func (s *PutBucketNotificationInput) SetNotificationConfiguration(v *NotificationConfigurationDeprecated) *PutBucketNotificationInput { + s.NotificationConfiguration = v + return s +} + +type PutBucketNotificationOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s PutBucketNotificationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketNotificationOutput) GoString() string { + return s.String() +} + +type PutBucketPolicyInput struct { + _ struct{} `locationName:"PutBucketPolicyRequest" type:"structure" payload:"Policy"` + + // The name of the bucket. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Set this parameter to true to confirm that you want to remove your permissions + // to change this bucket policy in the future. + ConfirmRemoveSelfBucketAccess *bool `location:"header" locationName:"x-amz-confirm-remove-self-bucket-access" type:"boolean"` + + // The bucket policy as a JSON document. + // + // Policy is a required field + Policy *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s PutBucketPolicyInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketPolicyInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutBucketPolicyInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutBucketPolicyInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Policy == nil { + invalidParams.Add(request.NewErrParamRequired("Policy")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *PutBucketPolicyInput) SetBucket(v string) *PutBucketPolicyInput { + s.Bucket = &v + return s +} + +func (s *PutBucketPolicyInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetConfirmRemoveSelfBucketAccess sets the ConfirmRemoveSelfBucketAccess field's value. +func (s *PutBucketPolicyInput) SetConfirmRemoveSelfBucketAccess(v bool) *PutBucketPolicyInput { + s.ConfirmRemoveSelfBucketAccess = &v + return s +} + +// SetPolicy sets the Policy field's value. +func (s *PutBucketPolicyInput) SetPolicy(v string) *PutBucketPolicyInput { + s.Policy = &v + return s +} + +type PutBucketPolicyOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s PutBucketPolicyOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketPolicyOutput) GoString() string { + return s.String() +} + +type PutBucketReplicationInput struct { + _ struct{} `locationName:"PutBucketReplicationRequest" type:"structure" payload:"ReplicationConfiguration"` + + // The name of the bucket + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // A container for replication rules. You can add up to 1,000 rules. The maximum + // size of a replication configuration is 2 MB. + // + // ReplicationConfiguration is a required field + ReplicationConfiguration *ReplicationConfiguration `locationName:"ReplicationConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` + + Token *string `location:"header" locationName:"x-amz-bucket-object-lock-token" type:"string"` +} + +// String returns the string representation +func (s PutBucketReplicationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketReplicationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutBucketReplicationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutBucketReplicationInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.ReplicationConfiguration == nil { + invalidParams.Add(request.NewErrParamRequired("ReplicationConfiguration")) + } + if s.ReplicationConfiguration != nil { + if err := s.ReplicationConfiguration.Validate(); err != nil { + invalidParams.AddNested("ReplicationConfiguration", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *PutBucketReplicationInput) SetBucket(v string) *PutBucketReplicationInput { + s.Bucket = &v + return s +} + +func (s *PutBucketReplicationInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetReplicationConfiguration sets the ReplicationConfiguration field's value. +func (s *PutBucketReplicationInput) SetReplicationConfiguration(v *ReplicationConfiguration) *PutBucketReplicationInput { + s.ReplicationConfiguration = v + return s +} + +// SetToken sets the Token field's value. +func (s *PutBucketReplicationInput) SetToken(v string) *PutBucketReplicationInput { + s.Token = &v + return s +} + +type PutBucketReplicationOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s PutBucketReplicationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketReplicationOutput) GoString() string { + return s.String() +} + +type PutBucketRequestPaymentInput struct { + _ struct{} `locationName:"PutBucketRequestPaymentRequest" type:"structure" payload:"RequestPaymentConfiguration"` + + // The bucket name. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Container for Payer. + // + // RequestPaymentConfiguration is a required field + RequestPaymentConfiguration *RequestPaymentConfiguration `locationName:"RequestPaymentConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` +} + +// String returns the string representation +func (s PutBucketRequestPaymentInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketRequestPaymentInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutBucketRequestPaymentInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutBucketRequestPaymentInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.RequestPaymentConfiguration == nil { + invalidParams.Add(request.NewErrParamRequired("RequestPaymentConfiguration")) + } + if s.RequestPaymentConfiguration != nil { + if err := s.RequestPaymentConfiguration.Validate(); err != nil { + invalidParams.AddNested("RequestPaymentConfiguration", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *PutBucketRequestPaymentInput) SetBucket(v string) *PutBucketRequestPaymentInput { + s.Bucket = &v + return s +} + +func (s *PutBucketRequestPaymentInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetRequestPaymentConfiguration sets the RequestPaymentConfiguration field's value. +func (s *PutBucketRequestPaymentInput) SetRequestPaymentConfiguration(v *RequestPaymentConfiguration) *PutBucketRequestPaymentInput { + s.RequestPaymentConfiguration = v + return s +} + +type PutBucketRequestPaymentOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s PutBucketRequestPaymentOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketRequestPaymentOutput) GoString() string { + return s.String() +} + +type PutBucketTaggingInput struct { + _ struct{} `locationName:"PutBucketTaggingRequest" type:"structure" payload:"Tagging"` + + // The bucket name. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Container for the TagSet and Tag elements. + // + // Tagging is a required field + Tagging *Tagging `locationName:"Tagging" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` +} + +// String returns the string representation +func (s PutBucketTaggingInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketTaggingInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutBucketTaggingInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutBucketTaggingInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Tagging == nil { + invalidParams.Add(request.NewErrParamRequired("Tagging")) + } + if s.Tagging != nil { + if err := s.Tagging.Validate(); err != nil { + invalidParams.AddNested("Tagging", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *PutBucketTaggingInput) SetBucket(v string) *PutBucketTaggingInput { + s.Bucket = &v + return s +} + +func (s *PutBucketTaggingInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetTagging sets the Tagging field's value. +func (s *PutBucketTaggingInput) SetTagging(v *Tagging) *PutBucketTaggingInput { + s.Tagging = v + return s +} + +type PutBucketTaggingOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s PutBucketTaggingOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketTaggingOutput) GoString() string { + return s.String() +} + +type PutBucketVersioningInput struct { + _ struct{} `locationName:"PutBucketVersioningRequest" type:"structure" payload:"VersioningConfiguration"` + + // The bucket name. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // The concatenation of the authentication device's serial number, a space, + // and the value that is displayed on your authentication device. + MFA *string `location:"header" locationName:"x-amz-mfa" type:"string"` + + // Container for setting the versioning state. + // + // VersioningConfiguration is a required field + VersioningConfiguration *VersioningConfiguration `locationName:"VersioningConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` +} + +// String returns the string representation +func (s PutBucketVersioningInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketVersioningInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutBucketVersioningInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutBucketVersioningInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.VersioningConfiguration == nil { + invalidParams.Add(request.NewErrParamRequired("VersioningConfiguration")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *PutBucketVersioningInput) SetBucket(v string) *PutBucketVersioningInput { + s.Bucket = &v + return s +} + +func (s *PutBucketVersioningInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetMFA sets the MFA field's value. +func (s *PutBucketVersioningInput) SetMFA(v string) *PutBucketVersioningInput { + s.MFA = &v + return s +} + +// SetVersioningConfiguration sets the VersioningConfiguration field's value. +func (s *PutBucketVersioningInput) SetVersioningConfiguration(v *VersioningConfiguration) *PutBucketVersioningInput { + s.VersioningConfiguration = v + return s +} + +type PutBucketVersioningOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s PutBucketVersioningOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketVersioningOutput) GoString() string { + return s.String() +} + +type PutBucketWebsiteInput struct { + _ struct{} `locationName:"PutBucketWebsiteRequest" type:"structure" payload:"WebsiteConfiguration"` + + // The bucket name. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Container for the request. + // + // WebsiteConfiguration is a required field + WebsiteConfiguration *WebsiteConfiguration `locationName:"WebsiteConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` +} + +// String returns the string representation +func (s PutBucketWebsiteInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketWebsiteInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutBucketWebsiteInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutBucketWebsiteInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.WebsiteConfiguration == nil { + invalidParams.Add(request.NewErrParamRequired("WebsiteConfiguration")) + } + if s.WebsiteConfiguration != nil { + if err := s.WebsiteConfiguration.Validate(); err != nil { + invalidParams.AddNested("WebsiteConfiguration", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *PutBucketWebsiteInput) SetBucket(v string) *PutBucketWebsiteInput { + s.Bucket = &v + return s +} + +func (s *PutBucketWebsiteInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetWebsiteConfiguration sets the WebsiteConfiguration field's value. +func (s *PutBucketWebsiteInput) SetWebsiteConfiguration(v *WebsiteConfiguration) *PutBucketWebsiteInput { + s.WebsiteConfiguration = v + return s +} + +type PutBucketWebsiteOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s PutBucketWebsiteOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutBucketWebsiteOutput) GoString() string { + return s.String() +} + +type PutObjectAclInput struct { + _ struct{} `locationName:"PutObjectAclRequest" type:"structure" payload:"AccessControlPolicy"` + + // The canned ACL to apply to the object. For more information, see Canned ACL + // (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL) + ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"` + + // Contains the elements that set the ACL permissions for an object per grantee. + AccessControlPolicy *AccessControlPolicy `locationName:"AccessControlPolicy" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` + + // The name of the bucket to which the ACL is being added. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Allows grantee the read, write, read ACP, and write ACP permissions on the + // bucket. + GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"` + + // Allows grantee to list the objects in the bucket. + GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"` + + // Allows grantee to read the bucket ACL. + GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"` + + // Allows grantee to create, overwrite, and delete any object in the bucket. + GrantWrite *string `location:"header" locationName:"x-amz-grant-write" type:"string"` + + // Allows grantee to write the ACL for the applicable bucket. + GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"` + + // Key for which the PUT operation was initiated. + // + // Key is a required field + Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + + // Confirms that the requester knows that she or he will be charged for the + // request. Bucket owners need not specify this parameter in their requests. + // Documentation on downloading objects from requester pays buckets can be found + // at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` + + // VersionId used to reference a specific version of the object. + VersionId *string `location:"querystring" locationName:"versionId" type:"string"` +} + +// String returns the string representation +func (s PutObjectAclInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutObjectAclInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutObjectAclInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutObjectAclInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + if s.AccessControlPolicy != nil { + if err := s.AccessControlPolicy.Validate(); err != nil { + invalidParams.AddNested("AccessControlPolicy", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetACL sets the ACL field's value. +func (s *PutObjectAclInput) SetACL(v string) *PutObjectAclInput { + s.ACL = &v + return s +} + +// SetAccessControlPolicy sets the AccessControlPolicy field's value. +func (s *PutObjectAclInput) SetAccessControlPolicy(v *AccessControlPolicy) *PutObjectAclInput { + s.AccessControlPolicy = v + return s +} + +// SetBucket sets the Bucket field's value. +func (s *PutObjectAclInput) SetBucket(v string) *PutObjectAclInput { + s.Bucket = &v + return s +} + +func (s *PutObjectAclInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetGrantFullControl sets the GrantFullControl field's value. +func (s *PutObjectAclInput) SetGrantFullControl(v string) *PutObjectAclInput { + s.GrantFullControl = &v + return s +} + +// SetGrantRead sets the GrantRead field's value. +func (s *PutObjectAclInput) SetGrantRead(v string) *PutObjectAclInput { + s.GrantRead = &v + return s +} + +// SetGrantReadACP sets the GrantReadACP field's value. +func (s *PutObjectAclInput) SetGrantReadACP(v string) *PutObjectAclInput { + s.GrantReadACP = &v + return s +} + +// SetGrantWrite sets the GrantWrite field's value. +func (s *PutObjectAclInput) SetGrantWrite(v string) *PutObjectAclInput { + s.GrantWrite = &v + return s +} + +// SetGrantWriteACP sets the GrantWriteACP field's value. +func (s *PutObjectAclInput) SetGrantWriteACP(v string) *PutObjectAclInput { + s.GrantWriteACP = &v + return s +} + +// SetKey sets the Key field's value. +func (s *PutObjectAclInput) SetKey(v string) *PutObjectAclInput { + s.Key = &v + return s +} + +// SetRequestPayer sets the RequestPayer field's value. +func (s *PutObjectAclInput) SetRequestPayer(v string) *PutObjectAclInput { + s.RequestPayer = &v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *PutObjectAclInput) SetVersionId(v string) *PutObjectAclInput { + s.VersionId = &v + return s +} + +type PutObjectAclOutput struct { + _ struct{} `type:"structure"` + + // If present, indicates that the requester was successfully charged for the + // request. + RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"` +} + +// String returns the string representation +func (s PutObjectAclOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutObjectAclOutput) GoString() string { + return s.String() +} + +// SetRequestCharged sets the RequestCharged field's value. +func (s *PutObjectAclOutput) SetRequestCharged(v string) *PutObjectAclOutput { + s.RequestCharged = &v + return s +} + +type PutObjectInput struct { + _ struct{} `locationName:"PutObjectRequest" type:"structure" payload:"Body"` + + // The canned ACL to apply to the object. For more information, see Canned ACL + // (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL). + ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"` + + // Object data. + Body io.ReadSeeker `type:"blob"` + + // Name of the bucket to which the PUT operation was initiated. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Can be used to specify caching behavior along the request/reply chain. For + // more information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9 + // (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9). + CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"` + + // Specifies presentational information for the object. For more information, + // see http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1). + ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"` + + // Specifies what content encodings have been applied to the object and thus + // what decoding mechanisms must be applied to obtain the media-type referenced + // by the Content-Type header field. For more information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11 + // (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11). + ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"` + + // The language the content is in. + ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"` + + // Size of the body in bytes. This parameter is useful when the size of the + // body cannot be determined automatically. For more information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13 + // (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13). + ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"` + + // The base64-encoded 128-bit MD5 digest of the message (without the headers) + // according to RFC 1864. This header can be used as a message integrity check + // to verify that the data is the same data that was originally sent. Although + // it is optional, we recommend using the Content-MD5 mechanism as an end-to-end + // integrity check. For more information about REST request authentication, + // see REST Authentication (https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html). + ContentMD5 *string `location:"header" locationName:"Content-MD5" type:"string"` + + // A standard MIME type describing the format of the contents. For more information, + // see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17). + ContentType *string `location:"header" locationName:"Content-Type" type:"string"` + + // The date and time at which the object is no longer cacheable. For more information, + // see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21). + Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"` + + // Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object. + GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"` + + // Allows grantee to read the object data and its metadata. + GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"` + + // Allows grantee to read the object ACL. + GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"` + + // Allows grantee to write the ACL for the applicable object. + GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"` + + // Object key for which the PUT operation was initiated. + // + // Key is a required field + Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + + // A map of metadata to store with the object in S3. + Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"` + + // Specifies whether a legal hold will be applied to this object. For more information + // about S3 Object Lock, see Object Lock (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). + ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"` + + // The Object Lock mode that you want to apply to this object. + ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"` + + // The date and time when you want this object's Object Lock to expire. + ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"` + + // Confirms that the requester knows that she or he will be charged for the + // request. Bucket owners need not specify this parameter in their requests. + // Documentation on downloading objects from requester pays buckets can be found + // at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` + + // Specifies the algorithm to use to when encrypting the object (e.g., AES256). + SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"` + + // Specifies the customer-provided encryption key for Amazon S3 to use in encrypting + // data. This value is used to store the object and then it is discarded; Amazon + // does not store the encryption key. The key must be appropriate for use with + // the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm + // header. + SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"` + + // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. + // Amazon S3 uses this header for a message integrity check to ensure the encryption + // key was transmitted without error. + SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"` + + // Specifies the AWS KMS Encryption Context to use for object encryption. The + // value of this header is a base64-encoded UTF-8 string holding JSON with the + // encryption context key-value pairs. + SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"` + + // If the x-amz-server-side-encryption is present and has the value of aws:kms, + // this header specifies the ID of the AWS Key Management Service (AWS KMS) + // customer master key (CMK) that was used for the object. + // + // If the value of x-amz-server-side-encryption is aws:kms, this header specifies + // the ID of the AWS KMS CMK that will be used for the object. If you specify + // x-amz-server-side-encryption:aws:kms, but do not provide x-amz-server-side-encryption-aws-kms-key-id, + // Amazon S3 uses the AWS managed CMK in AWS to protect the data. + SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"` + + // The Server-side encryption algorithm used when storing this object in S3 + // (e.g., AES256, aws:kms). + ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"` + + // If you don't specify, Standard is the default storage class. Amazon S3 supports + // other storage classes. + StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"` + + // The tag-set for the object. The tag-set must be encoded as URL Query parameters. + // (For example, "Key1=Value1") + Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"` + + // If the bucket is configured as a website, redirects requests for this object + // to another object in the same bucket or to an external URL. Amazon S3 stores + // the value of this header in the object metadata. For information about object + // metadata, see . + // + // In the following example, the request header sets the redirect to an object + // (anotherPage.html) in the same bucket: + // + // x-amz-website-redirect-location: /anotherPage.html + // + // In the following example, the request header sets the object redirect to + // another website: + // + // x-amz-website-redirect-location: http://www.example.com/ + // + // For more information about website hosting in Amazon S3, see Hosting Websites + // on Amazon S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html) + // and How to Configure Website Page Redirects (https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html). + WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"` +} + +// String returns the string representation +func (s PutObjectInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutObjectInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutObjectInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutObjectInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetACL sets the ACL field's value. +func (s *PutObjectInput) SetACL(v string) *PutObjectInput { + s.ACL = &v + return s +} + +// SetBody sets the Body field's value. +func (s *PutObjectInput) SetBody(v io.ReadSeeker) *PutObjectInput { + s.Body = v + return s +} + +// SetBucket sets the Bucket field's value. +func (s *PutObjectInput) SetBucket(v string) *PutObjectInput { + s.Bucket = &v + return s +} + +func (s *PutObjectInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetCacheControl sets the CacheControl field's value. +func (s *PutObjectInput) SetCacheControl(v string) *PutObjectInput { + s.CacheControl = &v + return s +} + +// SetContentDisposition sets the ContentDisposition field's value. +func (s *PutObjectInput) SetContentDisposition(v string) *PutObjectInput { + s.ContentDisposition = &v + return s +} + +// SetContentEncoding sets the ContentEncoding field's value. +func (s *PutObjectInput) SetContentEncoding(v string) *PutObjectInput { + s.ContentEncoding = &v + return s +} + +// SetContentLanguage sets the ContentLanguage field's value. +func (s *PutObjectInput) SetContentLanguage(v string) *PutObjectInput { + s.ContentLanguage = &v + return s +} + +// SetContentLength sets the ContentLength field's value. +func (s *PutObjectInput) SetContentLength(v int64) *PutObjectInput { + s.ContentLength = &v + return s +} + +// SetContentMD5 sets the ContentMD5 field's value. +func (s *PutObjectInput) SetContentMD5(v string) *PutObjectInput { + s.ContentMD5 = &v + return s +} + +// SetContentType sets the ContentType field's value. +func (s *PutObjectInput) SetContentType(v string) *PutObjectInput { + s.ContentType = &v + return s +} + +// SetExpires sets the Expires field's value. +func (s *PutObjectInput) SetExpires(v time.Time) *PutObjectInput { + s.Expires = &v + return s +} + +// SetGrantFullControl sets the GrantFullControl field's value. +func (s *PutObjectInput) SetGrantFullControl(v string) *PutObjectInput { + s.GrantFullControl = &v + return s +} + +// SetGrantRead sets the GrantRead field's value. +func (s *PutObjectInput) SetGrantRead(v string) *PutObjectInput { + s.GrantRead = &v + return s +} + +// SetGrantReadACP sets the GrantReadACP field's value. +func (s *PutObjectInput) SetGrantReadACP(v string) *PutObjectInput { + s.GrantReadACP = &v + return s +} + +// SetGrantWriteACP sets the GrantWriteACP field's value. +func (s *PutObjectInput) SetGrantWriteACP(v string) *PutObjectInput { + s.GrantWriteACP = &v + return s +} + +// SetKey sets the Key field's value. +func (s *PutObjectInput) SetKey(v string) *PutObjectInput { + s.Key = &v + return s +} + +// SetMetadata sets the Metadata field's value. +func (s *PutObjectInput) SetMetadata(v map[string]*string) *PutObjectInput { + s.Metadata = v + return s +} + +// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value. +func (s *PutObjectInput) SetObjectLockLegalHoldStatus(v string) *PutObjectInput { + s.ObjectLockLegalHoldStatus = &v + return s +} + +// SetObjectLockMode sets the ObjectLockMode field's value. +func (s *PutObjectInput) SetObjectLockMode(v string) *PutObjectInput { + s.ObjectLockMode = &v + return s +} + +// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value. +func (s *PutObjectInput) SetObjectLockRetainUntilDate(v time.Time) *PutObjectInput { + s.ObjectLockRetainUntilDate = &v + return s +} + +// SetRequestPayer sets the RequestPayer field's value. +func (s *PutObjectInput) SetRequestPayer(v string) *PutObjectInput { + s.RequestPayer = &v + return s +} + +// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value. +func (s *PutObjectInput) SetSSECustomerAlgorithm(v string) *PutObjectInput { + s.SSECustomerAlgorithm = &v + return s +} + +// SetSSECustomerKey sets the SSECustomerKey field's value. +func (s *PutObjectInput) SetSSECustomerKey(v string) *PutObjectInput { + s.SSECustomerKey = &v + return s +} + +func (s *PutObjectInput) getSSECustomerKey() (v string) { + if s.SSECustomerKey == nil { + return v + } + return *s.SSECustomerKey +} + +// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value. +func (s *PutObjectInput) SetSSECustomerKeyMD5(v string) *PutObjectInput { + s.SSECustomerKeyMD5 = &v + return s +} + +// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value. +func (s *PutObjectInput) SetSSEKMSEncryptionContext(v string) *PutObjectInput { + s.SSEKMSEncryptionContext = &v + return s +} + +// SetSSEKMSKeyId sets the SSEKMSKeyId field's value. +func (s *PutObjectInput) SetSSEKMSKeyId(v string) *PutObjectInput { + s.SSEKMSKeyId = &v + return s +} + +// SetServerSideEncryption sets the ServerSideEncryption field's value. +func (s *PutObjectInput) SetServerSideEncryption(v string) *PutObjectInput { + s.ServerSideEncryption = &v + return s +} + +// SetStorageClass sets the StorageClass field's value. +func (s *PutObjectInput) SetStorageClass(v string) *PutObjectInput { + s.StorageClass = &v + return s +} + +// SetTagging sets the Tagging field's value. +func (s *PutObjectInput) SetTagging(v string) *PutObjectInput { + s.Tagging = &v + return s +} + +// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value. +func (s *PutObjectInput) SetWebsiteRedirectLocation(v string) *PutObjectInput { + s.WebsiteRedirectLocation = &v + return s +} + +type PutObjectLegalHoldInput struct { + _ struct{} `locationName:"PutObjectLegalHoldRequest" type:"structure" payload:"LegalHold"` + + // The bucket containing the object that you want to place a Legal Hold on. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // The key name for the object that you want to place a Legal Hold on. + // + // Key is a required field + Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + + // Container element for the Legal Hold configuration you want to apply to the + // specified object. + LegalHold *ObjectLockLegalHold `locationName:"LegalHold" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` + + // Confirms that the requester knows that she or he will be charged for the + // request. Bucket owners need not specify this parameter in their requests. + // Documentation on downloading objects from requester pays buckets can be found + // at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` + + // The version ID of the object that you want to place a Legal Hold on. + VersionId *string `location:"querystring" locationName:"versionId" type:"string"` +} + +// String returns the string representation +func (s PutObjectLegalHoldInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutObjectLegalHoldInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutObjectLegalHoldInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutObjectLegalHoldInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *PutObjectLegalHoldInput) SetBucket(v string) *PutObjectLegalHoldInput { + s.Bucket = &v + return s +} + +func (s *PutObjectLegalHoldInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetKey sets the Key field's value. +func (s *PutObjectLegalHoldInput) SetKey(v string) *PutObjectLegalHoldInput { + s.Key = &v + return s +} + +// SetLegalHold sets the LegalHold field's value. +func (s *PutObjectLegalHoldInput) SetLegalHold(v *ObjectLockLegalHold) *PutObjectLegalHoldInput { + s.LegalHold = v + return s +} + +// SetRequestPayer sets the RequestPayer field's value. +func (s *PutObjectLegalHoldInput) SetRequestPayer(v string) *PutObjectLegalHoldInput { + s.RequestPayer = &v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *PutObjectLegalHoldInput) SetVersionId(v string) *PutObjectLegalHoldInput { + s.VersionId = &v + return s +} + +type PutObjectLegalHoldOutput struct { + _ struct{} `type:"structure"` + + // If present, indicates that the requester was successfully charged for the + // request. + RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"` +} + +// String returns the string representation +func (s PutObjectLegalHoldOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutObjectLegalHoldOutput) GoString() string { + return s.String() +} + +// SetRequestCharged sets the RequestCharged field's value. +func (s *PutObjectLegalHoldOutput) SetRequestCharged(v string) *PutObjectLegalHoldOutput { + s.RequestCharged = &v + return s +} + +type PutObjectLockConfigurationInput struct { + _ struct{} `locationName:"PutObjectLockConfigurationRequest" type:"structure" payload:"ObjectLockConfiguration"` + + // The bucket whose Object Lock configuration you want to create or replace. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // The Object Lock configuration that you want to apply to the specified bucket. + ObjectLockConfiguration *ObjectLockConfiguration `locationName:"ObjectLockConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` + + // Confirms that the requester knows that she or he will be charged for the + // request. Bucket owners need not specify this parameter in their requests. + // Documentation on downloading objects from requester pays buckets can be found + // at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` + + // A token to allow Object Lock to be enabled for an existing bucket. + Token *string `location:"header" locationName:"x-amz-bucket-object-lock-token" type:"string"` +} + +// String returns the string representation +func (s PutObjectLockConfigurationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutObjectLockConfigurationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutObjectLockConfigurationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutObjectLockConfigurationInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *PutObjectLockConfigurationInput) SetBucket(v string) *PutObjectLockConfigurationInput { + s.Bucket = &v + return s +} + +func (s *PutObjectLockConfigurationInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetObjectLockConfiguration sets the ObjectLockConfiguration field's value. +func (s *PutObjectLockConfigurationInput) SetObjectLockConfiguration(v *ObjectLockConfiguration) *PutObjectLockConfigurationInput { + s.ObjectLockConfiguration = v + return s +} + +// SetRequestPayer sets the RequestPayer field's value. +func (s *PutObjectLockConfigurationInput) SetRequestPayer(v string) *PutObjectLockConfigurationInput { + s.RequestPayer = &v + return s +} + +// SetToken sets the Token field's value. +func (s *PutObjectLockConfigurationInput) SetToken(v string) *PutObjectLockConfigurationInput { + s.Token = &v + return s +} + +type PutObjectLockConfigurationOutput struct { + _ struct{} `type:"structure"` + + // If present, indicates that the requester was successfully charged for the + // request. + RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"` +} + +// String returns the string representation +func (s PutObjectLockConfigurationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutObjectLockConfigurationOutput) GoString() string { + return s.String() +} + +// SetRequestCharged sets the RequestCharged field's value. +func (s *PutObjectLockConfigurationOutput) SetRequestCharged(v string) *PutObjectLockConfigurationOutput { + s.RequestCharged = &v + return s +} + +type PutObjectOutput struct { + _ struct{} `type:"structure"` + + // Entity tag for the uploaded object. + ETag *string `location:"header" locationName:"ETag" type:"string"` + + // If the expiration is configured for the object (see PutBucketLifecycleConfiguration), + // the response includes this header. It includes the expiry-date and rule-id + // key-value pairs that provide information about object expiration. The value + // of the rule-id is URL encoded. + Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"` + + // If present, indicates that the requester was successfully charged for the + // request. + RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"` + + // If server-side encryption with a customer-provided encryption key was requested, + // the response will include this header confirming the encryption algorithm + // used. + SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"` + + // If server-side encryption with a customer-provided encryption key was requested, + // the response will include this header to provide round trip message integrity + // verification of the customer-provided encryption key. + SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"` + + // If present, specifies the AWS KMS Encryption Context to use for object encryption. + // The value of this header is a base64-encoded UTF-8 string holding JSON with + // the encryption context key-value pairs. + SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"` + + // If the x-amz-server-side-encryption is present and has the value of aws:kms, + // this header specifies the ID of the AWS Key Management Service (KMS) customer + // master key (CMK) that was used for the object. + SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"` + + // If you specified server-side encryption either with an AWS KMS customer master + // key (CMK) or Amazon S3-managed encryption key in your PUT request, the response + // includes this header. It confirms the encryption algorithm that Amazon S3 + // used to encrypt the object. + ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"` + + // Version of the object. + VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"` +} + +// String returns the string representation +func (s PutObjectOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutObjectOutput) GoString() string { + return s.String() +} + +// SetETag sets the ETag field's value. +func (s *PutObjectOutput) SetETag(v string) *PutObjectOutput { + s.ETag = &v + return s +} + +// SetExpiration sets the Expiration field's value. +func (s *PutObjectOutput) SetExpiration(v string) *PutObjectOutput { + s.Expiration = &v + return s +} + +// SetRequestCharged sets the RequestCharged field's value. +func (s *PutObjectOutput) SetRequestCharged(v string) *PutObjectOutput { + s.RequestCharged = &v + return s +} + +// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value. +func (s *PutObjectOutput) SetSSECustomerAlgorithm(v string) *PutObjectOutput { + s.SSECustomerAlgorithm = &v + return s +} + +// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value. +func (s *PutObjectOutput) SetSSECustomerKeyMD5(v string) *PutObjectOutput { + s.SSECustomerKeyMD5 = &v + return s +} + +// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value. +func (s *PutObjectOutput) SetSSEKMSEncryptionContext(v string) *PutObjectOutput { + s.SSEKMSEncryptionContext = &v + return s +} + +// SetSSEKMSKeyId sets the SSEKMSKeyId field's value. +func (s *PutObjectOutput) SetSSEKMSKeyId(v string) *PutObjectOutput { + s.SSEKMSKeyId = &v + return s +} + +// SetServerSideEncryption sets the ServerSideEncryption field's value. +func (s *PutObjectOutput) SetServerSideEncryption(v string) *PutObjectOutput { + s.ServerSideEncryption = &v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *PutObjectOutput) SetVersionId(v string) *PutObjectOutput { + s.VersionId = &v + return s +} + +type PutObjectRetentionInput struct { + _ struct{} `locationName:"PutObjectRetentionRequest" type:"structure" payload:"Retention"` + + // The bucket that contains the object you want to apply this Object Retention + // configuration to. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Indicates whether this operation should bypass Governance-mode restrictions. + BypassGovernanceRetention *bool `location:"header" locationName:"x-amz-bypass-governance-retention" type:"boolean"` + + // The key name for the object that you want to apply this Object Retention + // configuration to. + // + // Key is a required field + Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + + // Confirms that the requester knows that she or he will be charged for the + // request. Bucket owners need not specify this parameter in their requests. + // Documentation on downloading objects from requester pays buckets can be found + // at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` + + // The container element for the Object Retention configuration. + Retention *ObjectLockRetention `locationName:"Retention" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` + + // The version ID for the object that you want to apply this Object Retention + // configuration to. + VersionId *string `location:"querystring" locationName:"versionId" type:"string"` +} + +// String returns the string representation +func (s PutObjectRetentionInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutObjectRetentionInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutObjectRetentionInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutObjectRetentionInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *PutObjectRetentionInput) SetBucket(v string) *PutObjectRetentionInput { + s.Bucket = &v + return s +} + +func (s *PutObjectRetentionInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetBypassGovernanceRetention sets the BypassGovernanceRetention field's value. +func (s *PutObjectRetentionInput) SetBypassGovernanceRetention(v bool) *PutObjectRetentionInput { + s.BypassGovernanceRetention = &v + return s +} + +// SetKey sets the Key field's value. +func (s *PutObjectRetentionInput) SetKey(v string) *PutObjectRetentionInput { + s.Key = &v + return s +} + +// SetRequestPayer sets the RequestPayer field's value. +func (s *PutObjectRetentionInput) SetRequestPayer(v string) *PutObjectRetentionInput { + s.RequestPayer = &v + return s +} + +// SetRetention sets the Retention field's value. +func (s *PutObjectRetentionInput) SetRetention(v *ObjectLockRetention) *PutObjectRetentionInput { + s.Retention = v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *PutObjectRetentionInput) SetVersionId(v string) *PutObjectRetentionInput { + s.VersionId = &v + return s +} + +type PutObjectRetentionOutput struct { + _ struct{} `type:"structure"` + + // If present, indicates that the requester was successfully charged for the + // request. + RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"` +} + +// String returns the string representation +func (s PutObjectRetentionOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutObjectRetentionOutput) GoString() string { + return s.String() +} + +// SetRequestCharged sets the RequestCharged field's value. +func (s *PutObjectRetentionOutput) SetRequestCharged(v string) *PutObjectRetentionOutput { + s.RequestCharged = &v + return s +} + +type PutObjectTaggingInput struct { + _ struct{} `locationName:"PutObjectTaggingRequest" type:"structure" payload:"Tagging"` + + // The bucket containing the object. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Name of the tag. + // + // Key is a required field + Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + + // Container for the TagSet and Tag elements + // + // Tagging is a required field + Tagging *Tagging `locationName:"Tagging" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` + + // The versionId of the object that the tag-set will be added to. + VersionId *string `location:"querystring" locationName:"versionId" type:"string"` +} + +// String returns the string representation +func (s PutObjectTaggingInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutObjectTaggingInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutObjectTaggingInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutObjectTaggingInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + if s.Tagging == nil { + invalidParams.Add(request.NewErrParamRequired("Tagging")) + } + if s.Tagging != nil { + if err := s.Tagging.Validate(); err != nil { + invalidParams.AddNested("Tagging", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *PutObjectTaggingInput) SetBucket(v string) *PutObjectTaggingInput { + s.Bucket = &v + return s +} + +func (s *PutObjectTaggingInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetKey sets the Key field's value. +func (s *PutObjectTaggingInput) SetKey(v string) *PutObjectTaggingInput { + s.Key = &v + return s +} + +// SetTagging sets the Tagging field's value. +func (s *PutObjectTaggingInput) SetTagging(v *Tagging) *PutObjectTaggingInput { + s.Tagging = v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *PutObjectTaggingInput) SetVersionId(v string) *PutObjectTaggingInput { + s.VersionId = &v + return s +} + +type PutObjectTaggingOutput struct { + _ struct{} `type:"structure"` + + // The versionId of the object the tag-set was added to. + VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"` +} + +// String returns the string representation +func (s PutObjectTaggingOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutObjectTaggingOutput) GoString() string { + return s.String() +} + +// SetVersionId sets the VersionId field's value. +func (s *PutObjectTaggingOutput) SetVersionId(v string) *PutObjectTaggingOutput { + s.VersionId = &v + return s +} + +type PutPublicAccessBlockInput struct { + _ struct{} `locationName:"PutPublicAccessBlockRequest" type:"structure" payload:"PublicAccessBlockConfiguration"` + + // The name of the Amazon S3 bucket whose PublicAccessBlock configuration you + // want to set. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // The PublicAccessBlock configuration that you want to apply to this Amazon + // S3 bucket. You can enable the configuration options in any combination. For + // more information about when Amazon S3 considers a bucket or object public, + // see The Meaning of "Public" (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status) + // in the Amazon Simple Storage Service Developer Guide. + // + // PublicAccessBlockConfiguration is a required field + PublicAccessBlockConfiguration *PublicAccessBlockConfiguration `locationName:"PublicAccessBlockConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` +} + +// String returns the string representation +func (s PutPublicAccessBlockInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutPublicAccessBlockInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutPublicAccessBlockInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutPublicAccessBlockInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.PublicAccessBlockConfiguration == nil { + invalidParams.Add(request.NewErrParamRequired("PublicAccessBlockConfiguration")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *PutPublicAccessBlockInput) SetBucket(v string) *PutPublicAccessBlockInput { + s.Bucket = &v + return s +} + +func (s *PutPublicAccessBlockInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetPublicAccessBlockConfiguration sets the PublicAccessBlockConfiguration field's value. +func (s *PutPublicAccessBlockInput) SetPublicAccessBlockConfiguration(v *PublicAccessBlockConfiguration) *PutPublicAccessBlockInput { + s.PublicAccessBlockConfiguration = v + return s +} + +type PutPublicAccessBlockOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s PutPublicAccessBlockOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutPublicAccessBlockOutput) GoString() string { + return s.String() +} + +// Specifies the configuration for publishing messages to an Amazon Simple Queue +// Service (Amazon SQS) queue when Amazon S3 detects specified events. +type QueueConfiguration struct { + _ struct{} `type:"structure"` + + // A collection of bucket events for which to send notiications + // + // Events is a required field + Events []*string `locationName:"Event" type:"list" flattened:"true" required:"true"` + + // Specifies object key name filtering rules. For information about key name + // filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html) + // in the Amazon Simple Storage Service Developer Guide. + Filter *NotificationConfigurationFilter `type:"structure"` + + // An optional unique identifier for configurations in a notification configuration. + // If you don't provide one, Amazon S3 will assign an ID. + Id *string `type:"string"` + + // The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3 + // publishes a message when it detects events of the specified type. + // + // QueueArn is a required field + QueueArn *string `locationName:"Queue" type:"string" required:"true"` +} + +// String returns the string representation +func (s QueueConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s QueueConfiguration) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *QueueConfiguration) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "QueueConfiguration"} + if s.Events == nil { + invalidParams.Add(request.NewErrParamRequired("Events")) + } + if s.QueueArn == nil { + invalidParams.Add(request.NewErrParamRequired("QueueArn")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetEvents sets the Events field's value. +func (s *QueueConfiguration) SetEvents(v []*string) *QueueConfiguration { + s.Events = v + return s +} + +// SetFilter sets the Filter field's value. +func (s *QueueConfiguration) SetFilter(v *NotificationConfigurationFilter) *QueueConfiguration { + s.Filter = v + return s +} + +// SetId sets the Id field's value. +func (s *QueueConfiguration) SetId(v string) *QueueConfiguration { + s.Id = &v + return s +} + +// SetQueueArn sets the QueueArn field's value. +func (s *QueueConfiguration) SetQueueArn(v string) *QueueConfiguration { + s.QueueArn = &v + return s +} + +// This data type is deprecated. Please use QueueConfiguration for the same +// purposes. This dat type specifies the configuration for publishing messages +// to an Amazon Simple Queue Service (Amazon SQS) queue when Amazon S3 detects +// specified events. +type QueueConfigurationDeprecated struct { + _ struct{} `type:"structure"` + + // The bucket event for which to send notifications. + // + // Deprecated: Event has been deprecated + Event *string `deprecated:"true" type:"string" enum:"Event"` + + // A collection of bucket events for which to send notiications + Events []*string `locationName:"Event" type:"list" flattened:"true"` + + // An optional unique identifier for configurations in a notification configuration. + // If you don't provide one, Amazon S3 will assign an ID. + Id *string `type:"string"` + + // The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3 + // publishes a message when it detects events of the specified type. + Queue *string `type:"string"` +} + +// String returns the string representation +func (s QueueConfigurationDeprecated) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s QueueConfigurationDeprecated) GoString() string { + return s.String() +} + +// SetEvent sets the Event field's value. +func (s *QueueConfigurationDeprecated) SetEvent(v string) *QueueConfigurationDeprecated { + s.Event = &v + return s +} + +// SetEvents sets the Events field's value. +func (s *QueueConfigurationDeprecated) SetEvents(v []*string) *QueueConfigurationDeprecated { + s.Events = v + return s +} + +// SetId sets the Id field's value. +func (s *QueueConfigurationDeprecated) SetId(v string) *QueueConfigurationDeprecated { + s.Id = &v + return s +} + +// SetQueue sets the Queue field's value. +func (s *QueueConfigurationDeprecated) SetQueue(v string) *QueueConfigurationDeprecated { + s.Queue = &v + return s +} + +// The container for the records event. +type RecordsEvent struct { + _ struct{} `locationName:"RecordsEvent" type:"structure" payload:"Payload"` + + // The byte array of partial, one or more result records. + // + // Payload is automatically base64 encoded/decoded by the SDK. + Payload []byte `type:"blob"` +} + +// String returns the string representation +func (s RecordsEvent) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RecordsEvent) GoString() string { + return s.String() +} + +// SetPayload sets the Payload field's value. +func (s *RecordsEvent) SetPayload(v []byte) *RecordsEvent { + s.Payload = v + return s +} + +// The RecordsEvent is and event in the SelectObjectContentEventStream group of events. +func (s *RecordsEvent) eventSelectObjectContentEventStream() {} + +// UnmarshalEvent unmarshals the EventStream Message into the RecordsEvent value. +// This method is only used internally within the SDK's EventStream handling. +func (s *RecordsEvent) UnmarshalEvent( + payloadUnmarshaler protocol.PayloadUnmarshaler, + msg eventstream.Message, +) error { + s.Payload = make([]byte, len(msg.Payload)) + copy(s.Payload, msg.Payload) + return nil +} + +// Specifies how requests are redirected. In the event of an error, you can +// specify a different error code to return. +type Redirect struct { + _ struct{} `type:"structure"` + + // The host name to use in the redirect request. + HostName *string `type:"string"` + + // The HTTP redirect code to use on the response. Not required if one of the + // siblings is present. + HttpRedirectCode *string `type:"string"` + + // Protocol to use when redirecting requests. The default is the protocol that + // is used in the original request. + Protocol *string `type:"string" enum:"Protocol"` + + // The object key prefix to use in the redirect request. For example, to redirect + // requests for all pages with prefix docs/ (objects in the docs/ folder) to + // documents/, you can set a condition block with KeyPrefixEquals set to docs/ + // and in the Redirect set ReplaceKeyPrefixWith to /documents. Not required + // if one of the siblings is present. Can be present only if ReplaceKeyWith + // is not provided. + ReplaceKeyPrefixWith *string `type:"string"` + + // The specific object key to use in the redirect request. For example, redirect + // request to error.html. Not required if one of the siblings is present. Can + // be present only if ReplaceKeyPrefixWith is not provided. + ReplaceKeyWith *string `type:"string"` +} + +// String returns the string representation +func (s Redirect) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Redirect) GoString() string { + return s.String() +} + +// SetHostName sets the HostName field's value. +func (s *Redirect) SetHostName(v string) *Redirect { + s.HostName = &v + return s +} + +// SetHttpRedirectCode sets the HttpRedirectCode field's value. +func (s *Redirect) SetHttpRedirectCode(v string) *Redirect { + s.HttpRedirectCode = &v + return s +} + +// SetProtocol sets the Protocol field's value. +func (s *Redirect) SetProtocol(v string) *Redirect { + s.Protocol = &v + return s +} + +// SetReplaceKeyPrefixWith sets the ReplaceKeyPrefixWith field's value. +func (s *Redirect) SetReplaceKeyPrefixWith(v string) *Redirect { + s.ReplaceKeyPrefixWith = &v + return s +} + +// SetReplaceKeyWith sets the ReplaceKeyWith field's value. +func (s *Redirect) SetReplaceKeyWith(v string) *Redirect { + s.ReplaceKeyWith = &v + return s +} + +// Specifies the redirect behavior of all requests to a website endpoint of +// an Amazon S3 bucket. +type RedirectAllRequestsTo struct { + _ struct{} `type:"structure"` + + // Name of the host where requests are redirected. + // + // HostName is a required field + HostName *string `type:"string" required:"true"` + + // Protocol to use when redirecting requests. The default is the protocol that + // is used in the original request. + Protocol *string `type:"string" enum:"Protocol"` +} + +// String returns the string representation +func (s RedirectAllRequestsTo) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RedirectAllRequestsTo) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RedirectAllRequestsTo) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RedirectAllRequestsTo"} + if s.HostName == nil { + invalidParams.Add(request.NewErrParamRequired("HostName")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetHostName sets the HostName field's value. +func (s *RedirectAllRequestsTo) SetHostName(v string) *RedirectAllRequestsTo { + s.HostName = &v + return s +} + +// SetProtocol sets the Protocol field's value. +func (s *RedirectAllRequestsTo) SetProtocol(v string) *RedirectAllRequestsTo { + s.Protocol = &v + return s +} + +// A container for replication rules. You can add up to 1,000 rules. The maximum +// size of a replication configuration is 2 MB. +type ReplicationConfiguration struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the AWS Identity and Access Management + // (IAM) role that Amazon S3 assumes when replicating objects. For more information, + // see How to Set Up Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-how-setup.html) + // in the Amazon Simple Storage Service Developer Guide. + // + // Role is a required field + Role *string `type:"string" required:"true"` + + // A container for one or more replication rules. A replication configuration + // must have at least one rule and can contain a maximum of 1,000 rules. + // + // Rules is a required field + Rules []*ReplicationRule `locationName:"Rule" type:"list" flattened:"true" required:"true"` +} + +// String returns the string representation +func (s ReplicationConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReplicationConfiguration) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ReplicationConfiguration) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ReplicationConfiguration"} + if s.Role == nil { + invalidParams.Add(request.NewErrParamRequired("Role")) + } + if s.Rules == nil { + invalidParams.Add(request.NewErrParamRequired("Rules")) + } + if s.Rules != nil { + for i, v := range s.Rules { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetRole sets the Role field's value. +func (s *ReplicationConfiguration) SetRole(v string) *ReplicationConfiguration { + s.Role = &v + return s +} + +// SetRules sets the Rules field's value. +func (s *ReplicationConfiguration) SetRules(v []*ReplicationRule) *ReplicationConfiguration { + s.Rules = v + return s +} + +// Specifies which Amazon S3 objects to replicate and where to store the replicas. +type ReplicationRule struct { + _ struct{} `type:"structure"` + + // Specifies whether Amazon S3 replicates the delete markers. If you specify + // a Filter, you must specify this element. However, in the latest version of + // replication configuration (when Filter is specified), Amazon S3 doesn't replicate + // delete markers. Therefore, the DeleteMarkerReplication element can contain + // only Disabled. For an example configuration, see Basic Rule + // Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-config-min-rule-config). + // + // If you don't specify the Filter element, Amazon S3 assumes the replication + // configuration is the earlier version, V1. In the earlier version, Amazon + // S3 handled replication of delete markers differently. For more information, + // see Backward Compatibility (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations). + DeleteMarkerReplication *DeleteMarkerReplication `type:"structure"` + + // A container for information about the replication destination. + // + // Destination is a required field + Destination *Destination `type:"structure" required:"true"` + + // A container that specifies information about existing object replication. + // You can choose whether to enable or disable the replication of existing objects. + ExistingObjectReplication *ExistingObjectReplication `type:"structure"` + + // A filter that identifies the subset of objects to which the replication rule + // applies. A Filter must specify exactly one Prefix, Tag, or an And child element. + Filter *ReplicationRuleFilter `type:"structure"` + + // A unique identifier for the rule. The maximum value is 255 characters. + ID *string `type:"string"` + + // An object keyname prefix that identifies the object or objects to which the + // rule applies. The maximum prefix length is 1,024 characters. To include all + // objects in a bucket, specify an empty string. + // + // Deprecated: Prefix has been deprecated + Prefix *string `deprecated:"true" type:"string"` + + // The priority associated with the rule. If you specify multiple rules in a + // replication configuration, Amazon S3 prioritizes the rules to prevent conflicts + // when filtering. If two or more rules identify the same object based on a + // specified filter, the rule with higher priority takes precedence. For example: + // + // * Same object quality prefix based filter criteria If prefixes you specified + // in multiple rules overlap + // + // * Same object qualify tag based filter criteria specified in multiple + // rules + // + // For more information, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html) + // in the Amazon S3 Developer Guide. + Priority *int64 `type:"integer"` + + // A container that describes additional filters for identifying the source + // objects that you want to replicate. You can choose to enable or disable the + // replication of these objects. Currently, Amazon S3 supports only the filter + // that you can specify for objects created with server-side encryption using + // a customer master key (CMK) stored in AWS Key Management Service (SSE-KMS). + SourceSelectionCriteria *SourceSelectionCriteria `type:"structure"` + + // Specifies whether the rule is enabled. + // + // Status is a required field + Status *string `type:"string" required:"true" enum:"ReplicationRuleStatus"` +} + +// String returns the string representation +func (s ReplicationRule) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReplicationRule) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ReplicationRule) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ReplicationRule"} + if s.Destination == nil { + invalidParams.Add(request.NewErrParamRequired("Destination")) + } + if s.Status == nil { + invalidParams.Add(request.NewErrParamRequired("Status")) + } + if s.Destination != nil { + if err := s.Destination.Validate(); err != nil { + invalidParams.AddNested("Destination", err.(request.ErrInvalidParams)) + } + } + if s.ExistingObjectReplication != nil { + if err := s.ExistingObjectReplication.Validate(); err != nil { + invalidParams.AddNested("ExistingObjectReplication", err.(request.ErrInvalidParams)) + } + } + if s.Filter != nil { + if err := s.Filter.Validate(); err != nil { + invalidParams.AddNested("Filter", err.(request.ErrInvalidParams)) + } + } + if s.SourceSelectionCriteria != nil { + if err := s.SourceSelectionCriteria.Validate(); err != nil { + invalidParams.AddNested("SourceSelectionCriteria", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDeleteMarkerReplication sets the DeleteMarkerReplication field's value. +func (s *ReplicationRule) SetDeleteMarkerReplication(v *DeleteMarkerReplication) *ReplicationRule { + s.DeleteMarkerReplication = v + return s +} + +// SetDestination sets the Destination field's value. +func (s *ReplicationRule) SetDestination(v *Destination) *ReplicationRule { + s.Destination = v + return s +} + +// SetExistingObjectReplication sets the ExistingObjectReplication field's value. +func (s *ReplicationRule) SetExistingObjectReplication(v *ExistingObjectReplication) *ReplicationRule { + s.ExistingObjectReplication = v + return s +} + +// SetFilter sets the Filter field's value. +func (s *ReplicationRule) SetFilter(v *ReplicationRuleFilter) *ReplicationRule { + s.Filter = v + return s +} + +// SetID sets the ID field's value. +func (s *ReplicationRule) SetID(v string) *ReplicationRule { + s.ID = &v + return s +} + +// SetPrefix sets the Prefix field's value. +func (s *ReplicationRule) SetPrefix(v string) *ReplicationRule { + s.Prefix = &v + return s +} + +// SetPriority sets the Priority field's value. +func (s *ReplicationRule) SetPriority(v int64) *ReplicationRule { + s.Priority = &v + return s +} + +// SetSourceSelectionCriteria sets the SourceSelectionCriteria field's value. +func (s *ReplicationRule) SetSourceSelectionCriteria(v *SourceSelectionCriteria) *ReplicationRule { + s.SourceSelectionCriteria = v + return s +} + +// SetStatus sets the Status field's value. +func (s *ReplicationRule) SetStatus(v string) *ReplicationRule { + s.Status = &v + return s +} + +// A container for specifying rule filters. The filters determine the subset +// of objects to which the rule applies. This element is required only if you +// specify more than one filter. +// +// For example: +// +// * If you specify both a Prefix and a Tag filter, wrap these filters in +// an And tag. +// +// * If you specify a filter based on multiple tags, wrap the Tag elements +// in an And tag +type ReplicationRuleAndOperator struct { + _ struct{} `type:"structure"` + + // An object keyname prefix that identifies the subset of objects to which the + // rule applies. + Prefix *string `type:"string"` + + // An array of tags containing key and value pairs. + Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"` +} + +// String returns the string representation +func (s ReplicationRuleAndOperator) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReplicationRuleAndOperator) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ReplicationRuleAndOperator) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ReplicationRuleAndOperator"} + if s.Tags != nil { + for i, v := range s.Tags { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetPrefix sets the Prefix field's value. +func (s *ReplicationRuleAndOperator) SetPrefix(v string) *ReplicationRuleAndOperator { + s.Prefix = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *ReplicationRuleAndOperator) SetTags(v []*Tag) *ReplicationRuleAndOperator { + s.Tags = v + return s +} + +// A filter that identifies the subset of objects to which the replication rule +// applies. A Filter must specify exactly one Prefix, Tag, or an And child element. +type ReplicationRuleFilter struct { + _ struct{} `type:"structure"` + + // A container for specifying rule filters. The filters determine the subset + // of objects to which the rule applies. This element is required only if you + // specify more than one filter. For example: + // + // * If you specify both a Prefix and a Tag filter, wrap these filters in + // an And tag. + // + // * If you specify a filter based on multiple tags, wrap the Tag elements + // in an And tag. + And *ReplicationRuleAndOperator `type:"structure"` + + // An object keyname prefix that identifies the subset of objects to which the + // rule applies. + Prefix *string `type:"string"` + + // A container for specifying a tag key and value. + // + // The rule applies only to objects that have the tag in their tag set. + Tag *Tag `type:"structure"` +} + +// String returns the string representation +func (s ReplicationRuleFilter) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReplicationRuleFilter) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ReplicationRuleFilter) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ReplicationRuleFilter"} + if s.And != nil { + if err := s.And.Validate(); err != nil { + invalidParams.AddNested("And", err.(request.ErrInvalidParams)) + } + } + if s.Tag != nil { + if err := s.Tag.Validate(); err != nil { + invalidParams.AddNested("Tag", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAnd sets the And field's value. +func (s *ReplicationRuleFilter) SetAnd(v *ReplicationRuleAndOperator) *ReplicationRuleFilter { + s.And = v + return s +} + +// SetPrefix sets the Prefix field's value. +func (s *ReplicationRuleFilter) SetPrefix(v string) *ReplicationRuleFilter { + s.Prefix = &v + return s +} + +// SetTag sets the Tag field's value. +func (s *ReplicationRuleFilter) SetTag(v *Tag) *ReplicationRuleFilter { + s.Tag = v + return s +} + +// Container for Payer. +type RequestPaymentConfiguration struct { + _ struct{} `type:"structure"` + + // Specifies who pays for the download and request fees. + // + // Payer is a required field + Payer *string `type:"string" required:"true" enum:"Payer"` +} + +// String returns the string representation +func (s RequestPaymentConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RequestPaymentConfiguration) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RequestPaymentConfiguration) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RequestPaymentConfiguration"} + if s.Payer == nil { + invalidParams.Add(request.NewErrParamRequired("Payer")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetPayer sets the Payer field's value. +func (s *RequestPaymentConfiguration) SetPayer(v string) *RequestPaymentConfiguration { + s.Payer = &v + return s +} + +// Container for specifiying if periodic QueryProgress messages should be sent. +type RequestProgress struct { + _ struct{} `type:"structure"` + + // Specifies whether periodic QueryProgress frames should be sent. Valid values: + // TRUE, FALSE. Default value: FALSE. + Enabled *bool `type:"boolean"` +} + +// String returns the string representation +func (s RequestProgress) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RequestProgress) GoString() string { + return s.String() +} + +// SetEnabled sets the Enabled field's value. +func (s *RequestProgress) SetEnabled(v bool) *RequestProgress { + s.Enabled = &v + return s +} + +type RestoreObjectInput struct { + _ struct{} `locationName:"RestoreObjectRequest" type:"structure" payload:"RestoreRequest"` + + // The bucket name. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Object key for which the operation was initiated. + // + // Key is a required field + Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + + // Confirms that the requester knows that she or he will be charged for the + // request. Bucket owners need not specify this parameter in their requests. + // Documentation on downloading objects from requester pays buckets can be found + // at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` + + // Container for restore job parameters. + RestoreRequest *RestoreRequest `locationName:"RestoreRequest" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` + + // VersionId used to reference a specific version of the object. + VersionId *string `location:"querystring" locationName:"versionId" type:"string"` +} + +// String returns the string representation +func (s RestoreObjectInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RestoreObjectInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RestoreObjectInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RestoreObjectInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + if s.RestoreRequest != nil { + if err := s.RestoreRequest.Validate(); err != nil { + invalidParams.AddNested("RestoreRequest", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *RestoreObjectInput) SetBucket(v string) *RestoreObjectInput { + s.Bucket = &v + return s +} + +func (s *RestoreObjectInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetKey sets the Key field's value. +func (s *RestoreObjectInput) SetKey(v string) *RestoreObjectInput { + s.Key = &v + return s +} + +// SetRequestPayer sets the RequestPayer field's value. +func (s *RestoreObjectInput) SetRequestPayer(v string) *RestoreObjectInput { + s.RequestPayer = &v + return s +} + +// SetRestoreRequest sets the RestoreRequest field's value. +func (s *RestoreObjectInput) SetRestoreRequest(v *RestoreRequest) *RestoreObjectInput { + s.RestoreRequest = v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *RestoreObjectInput) SetVersionId(v string) *RestoreObjectInput { + s.VersionId = &v + return s +} + +type RestoreObjectOutput struct { + _ struct{} `type:"structure"` + + // If present, indicates that the requester was successfully charged for the + // request. + RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"` + + // Indicates the path in the provided S3 output location where Select results + // will be restored to. + RestoreOutputPath *string `location:"header" locationName:"x-amz-restore-output-path" type:"string"` +} + +// String returns the string representation +func (s RestoreObjectOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RestoreObjectOutput) GoString() string { + return s.String() +} + +// SetRequestCharged sets the RequestCharged field's value. +func (s *RestoreObjectOutput) SetRequestCharged(v string) *RestoreObjectOutput { + s.RequestCharged = &v + return s +} + +// SetRestoreOutputPath sets the RestoreOutputPath field's value. +func (s *RestoreObjectOutput) SetRestoreOutputPath(v string) *RestoreObjectOutput { + s.RestoreOutputPath = &v + return s +} + +// Container for restore job parameters. +type RestoreRequest struct { + _ struct{} `type:"structure"` + + // Lifetime of the active copy in days. Do not use with restores that specify + // OutputLocation. + Days *int64 `type:"integer"` + + // The optional description for the job. + Description *string `type:"string"` + + // Glacier related parameters pertaining to this job. Do not use with restores + // that specify OutputLocation. + GlacierJobParameters *GlacierJobParameters `type:"structure"` + + // Describes the location where the restore job's output is stored. + OutputLocation *OutputLocation `type:"structure"` + + // Describes the parameters for Select job types. + SelectParameters *SelectParameters `type:"structure"` + + // Glacier retrieval tier at which the restore will be processed. + Tier *string `type:"string" enum:"Tier"` + + // Type of restore request. + Type *string `type:"string" enum:"RestoreRequestType"` +} + +// String returns the string representation +func (s RestoreRequest) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RestoreRequest) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RestoreRequest) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RestoreRequest"} + if s.GlacierJobParameters != nil { + if err := s.GlacierJobParameters.Validate(); err != nil { + invalidParams.AddNested("GlacierJobParameters", err.(request.ErrInvalidParams)) + } + } + if s.OutputLocation != nil { + if err := s.OutputLocation.Validate(); err != nil { + invalidParams.AddNested("OutputLocation", err.(request.ErrInvalidParams)) + } + } + if s.SelectParameters != nil { + if err := s.SelectParameters.Validate(); err != nil { + invalidParams.AddNested("SelectParameters", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDays sets the Days field's value. +func (s *RestoreRequest) SetDays(v int64) *RestoreRequest { + s.Days = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *RestoreRequest) SetDescription(v string) *RestoreRequest { + s.Description = &v + return s +} + +// SetGlacierJobParameters sets the GlacierJobParameters field's value. +func (s *RestoreRequest) SetGlacierJobParameters(v *GlacierJobParameters) *RestoreRequest { + s.GlacierJobParameters = v + return s +} + +// SetOutputLocation sets the OutputLocation field's value. +func (s *RestoreRequest) SetOutputLocation(v *OutputLocation) *RestoreRequest { + s.OutputLocation = v + return s +} + +// SetSelectParameters sets the SelectParameters field's value. +func (s *RestoreRequest) SetSelectParameters(v *SelectParameters) *RestoreRequest { + s.SelectParameters = v + return s +} + +// SetTier sets the Tier field's value. +func (s *RestoreRequest) SetTier(v string) *RestoreRequest { + s.Tier = &v + return s +} + +// SetType sets the Type field's value. +func (s *RestoreRequest) SetType(v string) *RestoreRequest { + s.Type = &v + return s +} + +// Specifies the redirect behavior and when a redirect is applied. +type RoutingRule struct { + _ struct{} `type:"structure"` + + // A container for describing a condition that must be met for the specified + // redirect to apply. For example, 1. If request is for pages in the /docs folder, + // redirect to the /documents folder. 2. If request results in HTTP error 4xx, + // redirect request to another host where you might process the error. + Condition *Condition `type:"structure"` + + // Container for redirect information. You can redirect requests to another + // host, to another page, or with another protocol. In the event of an error, + // you can specify a different error code to return. + // + // Redirect is a required field + Redirect *Redirect `type:"structure" required:"true"` +} + +// String returns the string representation +func (s RoutingRule) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RoutingRule) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RoutingRule) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RoutingRule"} + if s.Redirect == nil { + invalidParams.Add(request.NewErrParamRequired("Redirect")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCondition sets the Condition field's value. +func (s *RoutingRule) SetCondition(v *Condition) *RoutingRule { + s.Condition = v + return s +} + +// SetRedirect sets the Redirect field's value. +func (s *RoutingRule) SetRedirect(v *Redirect) *RoutingRule { + s.Redirect = v + return s +} + +// Specifies lifecycle rules for an Amazon S3 bucket. For more information, +// see PUT Bucket lifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlifecycle.html) +// in the Amazon Simple Storage Service API Reference. +type Rule struct { + _ struct{} `type:"structure"` + + // Specifies the days since the initiation of an incomplete multipart upload + // that Amazon S3 will wait before permanently removing all parts of the upload. + // For more information, see Aborting Incomplete Multipart Uploads Using a Bucket + // Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config) + // in the Amazon Simple Storage Service Developer Guide. + AbortIncompleteMultipartUpload *AbortIncompleteMultipartUpload `type:"structure"` + + // Specifies the expiration for the lifecycle of the object. + Expiration *LifecycleExpiration `type:"structure"` + + // Unique identifier for the rule. The value can't be longer than 255 characters. + ID *string `type:"string"` + + // Specifies when noncurrent object versions expire. Upon expiration, Amazon + // S3 permanently deletes the noncurrent object versions. You set this lifecycle + // configuration action on a bucket that has versioning enabled (or suspended) + // to request that Amazon S3 delete noncurrent object versions at a specific + // period in the object's lifetime. + NoncurrentVersionExpiration *NoncurrentVersionExpiration `type:"structure"` + + // Container for the transition rule that describes when noncurrent objects + // transition to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, + // or DEEP_ARCHIVE storage class. If your bucket is versioning-enabled (or versioning + // is suspended), you can set this action to request that Amazon S3 transition + // noncurrent object versions to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, + // GLACIER, or DEEP_ARCHIVE storage class at a specific period in the object's + // lifetime. + NoncurrentVersionTransition *NoncurrentVersionTransition `type:"structure"` + + // Object key prefix that identifies one or more objects to which this rule + // applies. + // + // Prefix is a required field + Prefix *string `type:"string" required:"true"` + + // If Enabled, the rule is currently being applied. If Disabled, the rule is + // not currently being applied. + // + // Status is a required field + Status *string `type:"string" required:"true" enum:"ExpirationStatus"` + + // Specifies when an object transitions to a specified storage class. + Transition *Transition `type:"structure"` +} + +// String returns the string representation +func (s Rule) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Rule) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *Rule) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "Rule"} + if s.Prefix == nil { + invalidParams.Add(request.NewErrParamRequired("Prefix")) + } + if s.Status == nil { + invalidParams.Add(request.NewErrParamRequired("Status")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAbortIncompleteMultipartUpload sets the AbortIncompleteMultipartUpload field's value. +func (s *Rule) SetAbortIncompleteMultipartUpload(v *AbortIncompleteMultipartUpload) *Rule { + s.AbortIncompleteMultipartUpload = v + return s +} + +// SetExpiration sets the Expiration field's value. +func (s *Rule) SetExpiration(v *LifecycleExpiration) *Rule { + s.Expiration = v + return s +} + +// SetID sets the ID field's value. +func (s *Rule) SetID(v string) *Rule { + s.ID = &v + return s +} + +// SetNoncurrentVersionExpiration sets the NoncurrentVersionExpiration field's value. +func (s *Rule) SetNoncurrentVersionExpiration(v *NoncurrentVersionExpiration) *Rule { + s.NoncurrentVersionExpiration = v + return s +} + +// SetNoncurrentVersionTransition sets the NoncurrentVersionTransition field's value. +func (s *Rule) SetNoncurrentVersionTransition(v *NoncurrentVersionTransition) *Rule { + s.NoncurrentVersionTransition = v + return s +} + +// SetPrefix sets the Prefix field's value. +func (s *Rule) SetPrefix(v string) *Rule { + s.Prefix = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *Rule) SetStatus(v string) *Rule { + s.Status = &v + return s +} + +// SetTransition sets the Transition field's value. +func (s *Rule) SetTransition(v *Transition) *Rule { + s.Transition = v + return s +} + +// Specifies the use of SSE-KMS to encrypt delivered Inventory reports. +type SSEKMS struct { + _ struct{} `locationName:"SSE-KMS" type:"structure"` + + // Specifies the ID of the AWS Key Management Service (KMS) customer master + // key (CMK) to use for encrypting Inventory reports. + // + // KeyId is a required field + KeyId *string `type:"string" required:"true" sensitive:"true"` +} + +// String returns the string representation +func (s SSEKMS) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SSEKMS) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *SSEKMS) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "SSEKMS"} + if s.KeyId == nil { + invalidParams.Add(request.NewErrParamRequired("KeyId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetKeyId sets the KeyId field's value. +func (s *SSEKMS) SetKeyId(v string) *SSEKMS { + s.KeyId = &v + return s +} + +// Specifies the use of SSE-S3 to encrypt delivered Inventory reports. +type SSES3 struct { + _ struct{} `locationName:"SSE-S3" type:"structure"` +} + +// String returns the string representation +func (s SSES3) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SSES3) GoString() string { + return s.String() +} + +type ScanRange struct { + _ struct{} `type:"structure"` + + // Specifies the end of the byte range. This parameter is optional. Valid values: + // non-negative integers. The default value is one less than the size of the + // object being queried. If only the End parameter is supplied, it is interpreted + // to mean scan the last N bytes of the file. For example; 50 + // means scan the last 50 bytes. + End *int64 `type:"long"` + + // Specifies the start of the byte range. This parameter is optional. Valid + // values: non-negative integers. The default value is 0. If only start is supplied, + // it means scan from that point to the end of the file.For example; 50 + // means scan from byte 50 until the end of the file. + Start *int64 `type:"long"` +} + +// String returns the string representation +func (s ScanRange) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ScanRange) GoString() string { + return s.String() +} + +// SetEnd sets the End field's value. +func (s *ScanRange) SetEnd(v int64) *ScanRange { + s.End = &v + return s +} + +// SetStart sets the Start field's value. +func (s *ScanRange) SetStart(v int64) *ScanRange { + s.Start = &v + return s +} + +// SelectObjectContentEventStream provides handling of EventStreams for +// the SelectObjectContent API. +// +// Use this type to receive SelectObjectContentEventStream events. The events +// can be read from the Events channel member. +// +// The events that can be received are: +// +// * ContinuationEvent +// * EndEvent +// * ProgressEvent +// * RecordsEvent +// * StatsEvent +type SelectObjectContentEventStream struct { + // Reader is the EventStream reader for the SelectObjectContentEventStream + // events. This value is automatically set by the SDK when the API call is made + // Use this member when unit testing your code with the SDK to mock out the + // EventStream Reader. + // + // Must not be nil. + Reader SelectObjectContentEventStreamReader + + // StreamCloser is the io.Closer for the EventStream connection. For HTTP + // EventStream this is the response Body. The stream will be closed when + // the Close method of the EventStream is called. + StreamCloser io.Closer +} + +// Close closes the EventStream. This will also cause the Events channel to be +// closed. You can use the closing of the Events channel to terminate your +// application's read from the API's EventStream. +// +// Will close the underlying EventStream reader. For EventStream over HTTP +// connection this will also close the HTTP connection. +// +// Close must be called when done using the EventStream API. Not calling Close +// may result in resource leaks. +func (es *SelectObjectContentEventStream) Close() (err error) { + es.Reader.Close() + es.StreamCloser.Close() + + return es.Err() +} + +// Err returns any error that occurred while reading EventStream Events from +// the service API's response. Returns nil if there were no errors. +func (es *SelectObjectContentEventStream) Err() error { + if err := es.Reader.Err(); err != nil { + return err + } + return nil +} + +// Events returns a channel to read EventStream Events from the +// SelectObjectContent API. +// +// These events are: +// +// * ContinuationEvent +// * EndEvent +// * ProgressEvent +// * RecordsEvent +// * StatsEvent +func (es *SelectObjectContentEventStream) Events() <-chan SelectObjectContentEventStreamEvent { + return es.Reader.Events() +} + +// SelectObjectContentEventStreamEvent groups together all EventStream +// events read from the SelectObjectContent API. +// +// These events are: +// +// * ContinuationEvent +// * EndEvent +// * ProgressEvent +// * RecordsEvent +// * StatsEvent +type SelectObjectContentEventStreamEvent interface { + eventSelectObjectContentEventStream() +} + +// SelectObjectContentEventStreamReader provides the interface for reading EventStream +// Events from the SelectObjectContent API. The +// default implementation for this interface will be SelectObjectContentEventStream. +// +// The reader's Close method must allow multiple concurrent calls. +// +// These events are: +// +// * ContinuationEvent +// * EndEvent +// * ProgressEvent +// * RecordsEvent +// * StatsEvent +type SelectObjectContentEventStreamReader interface { + // Returns a channel of events as they are read from the event stream. + Events() <-chan SelectObjectContentEventStreamEvent + + // Close will close the underlying event stream reader. For event stream over + // HTTP this will also close the HTTP connection. + Close() error + + // Returns any error that has occurred while reading from the event stream. + Err() error +} + +type readSelectObjectContentEventStream struct { + eventReader *eventstreamapi.EventReader + stream chan SelectObjectContentEventStreamEvent + errVal atomic.Value + + done chan struct{} + closeOnce sync.Once +} + +func newReadSelectObjectContentEventStream( + reader io.ReadCloser, + unmarshalers request.HandlerList, + logger aws.Logger, + logLevel aws.LogLevelType, +) *readSelectObjectContentEventStream { + r := &readSelectObjectContentEventStream{ + stream: make(chan SelectObjectContentEventStreamEvent), + done: make(chan struct{}), + } + + r.eventReader = eventstreamapi.NewEventReader( + reader, + protocol.HandlerPayloadUnmarshal{ + Unmarshalers: unmarshalers, + }, + r.unmarshalerForEventType, + ) + r.eventReader.UseLogger(logger, logLevel) + + return r +} + +// Close will close the underlying event stream reader. For EventStream over +// HTTP this will also close the HTTP connection. +func (r *readSelectObjectContentEventStream) Close() error { + r.closeOnce.Do(r.safeClose) + + return r.Err() +} + +func (r *readSelectObjectContentEventStream) safeClose() { + close(r.done) + err := r.eventReader.Close() + if err != nil { + r.errVal.Store(err) + } +} + +func (r *readSelectObjectContentEventStream) Err() error { + if v := r.errVal.Load(); v != nil { + return v.(error) + } + + return nil +} + +func (r *readSelectObjectContentEventStream) Events() <-chan SelectObjectContentEventStreamEvent { + return r.stream +} + +func (r *readSelectObjectContentEventStream) readEventStream() { + defer close(r.stream) + + for { + event, err := r.eventReader.ReadEvent() + if err != nil { + if err == io.EOF { + return + } + select { + case <-r.done: + // If closed already ignore the error + return + default: + } + r.errVal.Store(err) + return + } + + select { + case r.stream <- event.(SelectObjectContentEventStreamEvent): + case <-r.done: + return + } + } +} + +func (r *readSelectObjectContentEventStream) unmarshalerForEventType( + eventType string, +) (eventstreamapi.Unmarshaler, error) { + switch eventType { + case "Cont": + return &ContinuationEvent{}, nil + + case "End": + return &EndEvent{}, nil + + case "Progress": + return &ProgressEvent{}, nil + + case "Records": + return &RecordsEvent{}, nil + + case "Stats": + return &StatsEvent{}, nil + default: + return nil, awserr.New( + request.ErrCodeSerialization, + fmt.Sprintf("unknown event type name, %s, for SelectObjectContentEventStream", eventType), + nil, + ) + } +} + +// Request to filter the contents of an Amazon S3 object based on a simple Structured +// Query Language (SQL) statement. In the request, along with the SQL expression, +// you must specify a data serialization format (JSON or CSV) of the object. +// Amazon S3 uses this to parse object data into records. It returns only records +// that match the specified SQL expression. You must also specify the data serialization +// format for the response. For more information, see S3Select API Documentation +// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectSELECTContent.html). +type SelectObjectContentInput struct { + _ struct{} `locationName:"SelectObjectContentRequest" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` + + // The S3 bucket. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // The expression that is used to query the object. + // + // Expression is a required field + Expression *string `type:"string" required:"true"` + + // The type of the provided expression (for example., SQL). + // + // ExpressionType is a required field + ExpressionType *string `type:"string" required:"true" enum:"ExpressionType"` + + // Describes the format of the data in the object that is being queried. + // + // InputSerialization is a required field + InputSerialization *InputSerialization `type:"structure" required:"true"` + + // The object key. + // + // Key is a required field + Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + + // Describes the format of the data that you want Amazon S3 to return in response. + // + // OutputSerialization is a required field + OutputSerialization *OutputSerialization `type:"structure" required:"true"` + + // Specifies if periodic request progress information should be enabled. + RequestProgress *RequestProgress `type:"structure"` + + // The SSE Algorithm used to encrypt the object. For more information, see Server-Side + // Encryption (Using Customer-Provided Encryption Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html). + SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"` + + // The SSE Customer Key. For more information, see Server-Side Encryption (Using + // Customer-Provided Encryption Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html). + SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"` + + // The SSE Customer Key MD5. For more information, see Server-Side Encryption + // (Using Customer-Provided Encryption Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html). + SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"` + + // Specifies the byte range of the object to get the records from. A record + // is processed when its first byte is contained by the range. This parameter + // is optional, but when specified, it must not be empty. See RFC 2616, Section + // 14.35.1 about how to specify the start and end of the range. + // + // ScanRangemay be used in the following ways: + // + // * 50100 - process only + // the records starting between the bytes 50 and 100 (inclusive, counting + // from zero) + // + // * 50 - process only the records + // starting after the byte 50 + // + // * 50 - process only the records within + // the last 50 bytes of the file. + ScanRange *ScanRange `type:"structure"` +} + +// String returns the string representation +func (s SelectObjectContentInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SelectObjectContentInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *SelectObjectContentInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "SelectObjectContentInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Expression == nil { + invalidParams.Add(request.NewErrParamRequired("Expression")) + } + if s.ExpressionType == nil { + invalidParams.Add(request.NewErrParamRequired("ExpressionType")) + } + if s.InputSerialization == nil { + invalidParams.Add(request.NewErrParamRequired("InputSerialization")) + } + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + if s.OutputSerialization == nil { + invalidParams.Add(request.NewErrParamRequired("OutputSerialization")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *SelectObjectContentInput) SetBucket(v string) *SelectObjectContentInput { + s.Bucket = &v + return s +} + +func (s *SelectObjectContentInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetExpression sets the Expression field's value. +func (s *SelectObjectContentInput) SetExpression(v string) *SelectObjectContentInput { + s.Expression = &v + return s +} + +// SetExpressionType sets the ExpressionType field's value. +func (s *SelectObjectContentInput) SetExpressionType(v string) *SelectObjectContentInput { + s.ExpressionType = &v + return s +} + +// SetInputSerialization sets the InputSerialization field's value. +func (s *SelectObjectContentInput) SetInputSerialization(v *InputSerialization) *SelectObjectContentInput { + s.InputSerialization = v + return s +} + +// SetKey sets the Key field's value. +func (s *SelectObjectContentInput) SetKey(v string) *SelectObjectContentInput { + s.Key = &v + return s +} + +// SetOutputSerialization sets the OutputSerialization field's value. +func (s *SelectObjectContentInput) SetOutputSerialization(v *OutputSerialization) *SelectObjectContentInput { + s.OutputSerialization = v + return s +} + +// SetRequestProgress sets the RequestProgress field's value. +func (s *SelectObjectContentInput) SetRequestProgress(v *RequestProgress) *SelectObjectContentInput { + s.RequestProgress = v + return s +} + +// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value. +func (s *SelectObjectContentInput) SetSSECustomerAlgorithm(v string) *SelectObjectContentInput { + s.SSECustomerAlgorithm = &v + return s +} + +// SetSSECustomerKey sets the SSECustomerKey field's value. +func (s *SelectObjectContentInput) SetSSECustomerKey(v string) *SelectObjectContentInput { + s.SSECustomerKey = &v + return s +} + +func (s *SelectObjectContentInput) getSSECustomerKey() (v string) { + if s.SSECustomerKey == nil { + return v + } + return *s.SSECustomerKey +} + +// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value. +func (s *SelectObjectContentInput) SetSSECustomerKeyMD5(v string) *SelectObjectContentInput { + s.SSECustomerKeyMD5 = &v + return s +} + +// SetScanRange sets the ScanRange field's value. +func (s *SelectObjectContentInput) SetScanRange(v *ScanRange) *SelectObjectContentInput { + s.ScanRange = v + return s +} + +type SelectObjectContentOutput struct { + _ struct{} `type:"structure" payload:"Payload"` + + // Use EventStream to use the API's stream. + EventStream *SelectObjectContentEventStream `type:"structure"` +} + +// String returns the string representation +func (s SelectObjectContentOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SelectObjectContentOutput) GoString() string { + return s.String() +} + +// SetEventStream sets the EventStream field's value. +func (s *SelectObjectContentOutput) SetEventStream(v *SelectObjectContentEventStream) *SelectObjectContentOutput { + s.EventStream = v + return s +} + +func (s *SelectObjectContentOutput) runEventStreamLoop(r *request.Request) { + if r.Error != nil { + return + } + reader := newReadSelectObjectContentEventStream( + r.HTTPResponse.Body, + r.Handlers.UnmarshalStream, + r.Config.Logger, + r.Config.LogLevel.Value(), + ) + go reader.readEventStream() + + eventStream := &SelectObjectContentEventStream{ + StreamCloser: r.HTTPResponse.Body, + Reader: reader, + } + s.EventStream = eventStream +} + +// Describes the parameters for Select job types. +type SelectParameters struct { + _ struct{} `type:"structure"` + + // The expression that is used to query the object. + // + // Expression is a required field + Expression *string `type:"string" required:"true"` + + // The type of the provided expression (e.g., SQL). + // + // ExpressionType is a required field + ExpressionType *string `type:"string" required:"true" enum:"ExpressionType"` + + // Describes the serialization format of the object. + // + // InputSerialization is a required field + InputSerialization *InputSerialization `type:"structure" required:"true"` + + // Describes how the results of the Select job are serialized. + // + // OutputSerialization is a required field + OutputSerialization *OutputSerialization `type:"structure" required:"true"` +} + +// String returns the string representation +func (s SelectParameters) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SelectParameters) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *SelectParameters) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "SelectParameters"} + if s.Expression == nil { + invalidParams.Add(request.NewErrParamRequired("Expression")) + } + if s.ExpressionType == nil { + invalidParams.Add(request.NewErrParamRequired("ExpressionType")) + } + if s.InputSerialization == nil { + invalidParams.Add(request.NewErrParamRequired("InputSerialization")) + } + if s.OutputSerialization == nil { + invalidParams.Add(request.NewErrParamRequired("OutputSerialization")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetExpression sets the Expression field's value. +func (s *SelectParameters) SetExpression(v string) *SelectParameters { + s.Expression = &v + return s +} + +// SetExpressionType sets the ExpressionType field's value. +func (s *SelectParameters) SetExpressionType(v string) *SelectParameters { + s.ExpressionType = &v + return s +} + +// SetInputSerialization sets the InputSerialization field's value. +func (s *SelectParameters) SetInputSerialization(v *InputSerialization) *SelectParameters { + s.InputSerialization = v + return s +} + +// SetOutputSerialization sets the OutputSerialization field's value. +func (s *SelectParameters) SetOutputSerialization(v *OutputSerialization) *SelectParameters { + s.OutputSerialization = v + return s +} + +// Describes the default server-side encryption to apply to new objects in the +// bucket. If a PUT Object request doesn't specify any server-side encryption, +// this default encryption will be applied. For more information, see PUT Bucket +// encryption (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTencryption.html) +// in the Amazon Simple Storage Service API Reference. +type ServerSideEncryptionByDefault struct { + _ struct{} `type:"structure"` + + // KMS master key ID to use for the default encryption. This parameter is allowed + // if and only if SSEAlgorithm is set to aws:kms. + KMSMasterKeyID *string `type:"string" sensitive:"true"` + + // Server-side encryption algorithm to use for the default encryption. + // + // SSEAlgorithm is a required field + SSEAlgorithm *string `type:"string" required:"true" enum:"ServerSideEncryption"` +} + +// String returns the string representation +func (s ServerSideEncryptionByDefault) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ServerSideEncryptionByDefault) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ServerSideEncryptionByDefault) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ServerSideEncryptionByDefault"} + if s.SSEAlgorithm == nil { + invalidParams.Add(request.NewErrParamRequired("SSEAlgorithm")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetKMSMasterKeyID sets the KMSMasterKeyID field's value. +func (s *ServerSideEncryptionByDefault) SetKMSMasterKeyID(v string) *ServerSideEncryptionByDefault { + s.KMSMasterKeyID = &v + return s +} + +// SetSSEAlgorithm sets the SSEAlgorithm field's value. +func (s *ServerSideEncryptionByDefault) SetSSEAlgorithm(v string) *ServerSideEncryptionByDefault { + s.SSEAlgorithm = &v + return s +} + +// Specifies the default server-side-encryption configuration. +type ServerSideEncryptionConfiguration struct { + _ struct{} `type:"structure"` + + // Container for information about a particular server-side encryption configuration + // rule. + // + // Rules is a required field + Rules []*ServerSideEncryptionRule `locationName:"Rule" type:"list" flattened:"true" required:"true"` +} + +// String returns the string representation +func (s ServerSideEncryptionConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ServerSideEncryptionConfiguration) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ServerSideEncryptionConfiguration) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ServerSideEncryptionConfiguration"} + if s.Rules == nil { + invalidParams.Add(request.NewErrParamRequired("Rules")) + } + if s.Rules != nil { + for i, v := range s.Rules { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetRules sets the Rules field's value. +func (s *ServerSideEncryptionConfiguration) SetRules(v []*ServerSideEncryptionRule) *ServerSideEncryptionConfiguration { + s.Rules = v + return s +} + +// Specifies the default server-side encryption configuration. +type ServerSideEncryptionRule struct { + _ struct{} `type:"structure"` + + // Specifies the default server-side encryption to apply to new objects in the + // bucket. If a PUT Object request doesn't specify any server-side encryption, + // this default encryption will be applied. + ApplyServerSideEncryptionByDefault *ServerSideEncryptionByDefault `type:"structure"` +} + +// String returns the string representation +func (s ServerSideEncryptionRule) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ServerSideEncryptionRule) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ServerSideEncryptionRule) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ServerSideEncryptionRule"} + if s.ApplyServerSideEncryptionByDefault != nil { + if err := s.ApplyServerSideEncryptionByDefault.Validate(); err != nil { + invalidParams.AddNested("ApplyServerSideEncryptionByDefault", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetApplyServerSideEncryptionByDefault sets the ApplyServerSideEncryptionByDefault field's value. +func (s *ServerSideEncryptionRule) SetApplyServerSideEncryptionByDefault(v *ServerSideEncryptionByDefault) *ServerSideEncryptionRule { + s.ApplyServerSideEncryptionByDefault = v + return s +} + +// A container that describes additional filters for identifying the source +// objects that you want to replicate. You can choose to enable or disable the +// replication of these objects. Currently, Amazon S3 supports only the filter +// that you can specify for objects created with server-side encryption using +// a customer master key (CMK) stored in AWS Key Management Service (SSE-KMS). +type SourceSelectionCriteria struct { + _ struct{} `type:"structure"` + + // A container for filter information for the selection of Amazon S3 objects + // encrypted with AWS KMS. If you include SourceSelectionCriteria in the replication + // configuration, this element is required. + SseKmsEncryptedObjects *SseKmsEncryptedObjects `type:"structure"` +} + +// String returns the string representation +func (s SourceSelectionCriteria) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SourceSelectionCriteria) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *SourceSelectionCriteria) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "SourceSelectionCriteria"} + if s.SseKmsEncryptedObjects != nil { + if err := s.SseKmsEncryptedObjects.Validate(); err != nil { + invalidParams.AddNested("SseKmsEncryptedObjects", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetSseKmsEncryptedObjects sets the SseKmsEncryptedObjects field's value. +func (s *SourceSelectionCriteria) SetSseKmsEncryptedObjects(v *SseKmsEncryptedObjects) *SourceSelectionCriteria { + s.SseKmsEncryptedObjects = v + return s +} + +// A container for filter information for the selection of S3 objects encrypted +// with AWS KMS. +type SseKmsEncryptedObjects struct { + _ struct{} `type:"structure"` + + // Specifies whether Amazon S3 replicates objects created with server-side encryption + // using a customer master key (CMK) stored in AWS Key Management Service. + // + // Status is a required field + Status *string `type:"string" required:"true" enum:"SseKmsEncryptedObjectsStatus"` +} + +// String returns the string representation +func (s SseKmsEncryptedObjects) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SseKmsEncryptedObjects) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *SseKmsEncryptedObjects) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "SseKmsEncryptedObjects"} + if s.Status == nil { + invalidParams.Add(request.NewErrParamRequired("Status")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetStatus sets the Status field's value. +func (s *SseKmsEncryptedObjects) SetStatus(v string) *SseKmsEncryptedObjects { + s.Status = &v + return s +} + +// Container for the stats details. +type Stats struct { + _ struct{} `type:"structure"` + + // The total number of uncompressed object bytes processed. + BytesProcessed *int64 `type:"long"` + + // The total number of bytes of records payload data returned. + BytesReturned *int64 `type:"long"` + + // The total number of object bytes scanned. + BytesScanned *int64 `type:"long"` +} + +// String returns the string representation +func (s Stats) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Stats) GoString() string { + return s.String() +} + +// SetBytesProcessed sets the BytesProcessed field's value. +func (s *Stats) SetBytesProcessed(v int64) *Stats { + s.BytesProcessed = &v + return s +} + +// SetBytesReturned sets the BytesReturned field's value. +func (s *Stats) SetBytesReturned(v int64) *Stats { + s.BytesReturned = &v + return s +} + +// SetBytesScanned sets the BytesScanned field's value. +func (s *Stats) SetBytesScanned(v int64) *Stats { + s.BytesScanned = &v + return s +} + +// Container for the Stats Event. +type StatsEvent struct { + _ struct{} `locationName:"StatsEvent" type:"structure" payload:"Details"` + + // The Stats event details. + Details *Stats `locationName:"Details" type:"structure"` +} + +// String returns the string representation +func (s StatsEvent) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s StatsEvent) GoString() string { + return s.String() +} + +// SetDetails sets the Details field's value. +func (s *StatsEvent) SetDetails(v *Stats) *StatsEvent { + s.Details = v + return s +} + +// The StatsEvent is and event in the SelectObjectContentEventStream group of events. +func (s *StatsEvent) eventSelectObjectContentEventStream() {} + +// UnmarshalEvent unmarshals the EventStream Message into the StatsEvent value. +// This method is only used internally within the SDK's EventStream handling. +func (s *StatsEvent) UnmarshalEvent( + payloadUnmarshaler protocol.PayloadUnmarshaler, + msg eventstream.Message, +) error { + if err := payloadUnmarshaler.UnmarshalPayload( + bytes.NewReader(msg.Payload), s, + ); err != nil { + return err + } + return nil +} + +// Specifies data related to access patterns to be collected and made available +// to analyze the tradeoffs between different storage classes for an Amazon +// S3 bucket. +type StorageClassAnalysis struct { + _ struct{} `type:"structure"` + + // Specifies how data related to the storage class analysis for an Amazon S3 + // bucket should be exported. + DataExport *StorageClassAnalysisDataExport `type:"structure"` +} + +// String returns the string representation +func (s StorageClassAnalysis) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s StorageClassAnalysis) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *StorageClassAnalysis) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "StorageClassAnalysis"} + if s.DataExport != nil { + if err := s.DataExport.Validate(); err != nil { + invalidParams.AddNested("DataExport", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDataExport sets the DataExport field's value. +func (s *StorageClassAnalysis) SetDataExport(v *StorageClassAnalysisDataExport) *StorageClassAnalysis { + s.DataExport = v + return s +} + +// Container for data related to the storage class analysis for an Amazon S3 +// bucket for export. +type StorageClassAnalysisDataExport struct { + _ struct{} `type:"structure"` + + // The place to store the data for an analysis. + // + // Destination is a required field + Destination *AnalyticsExportDestination `type:"structure" required:"true"` + + // The version of the output schema to use when exporting data. Must be V_1. + // + // OutputSchemaVersion is a required field + OutputSchemaVersion *string `type:"string" required:"true" enum:"StorageClassAnalysisSchemaVersion"` +} + +// String returns the string representation +func (s StorageClassAnalysisDataExport) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s StorageClassAnalysisDataExport) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *StorageClassAnalysisDataExport) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "StorageClassAnalysisDataExport"} + if s.Destination == nil { + invalidParams.Add(request.NewErrParamRequired("Destination")) + } + if s.OutputSchemaVersion == nil { + invalidParams.Add(request.NewErrParamRequired("OutputSchemaVersion")) + } + if s.Destination != nil { + if err := s.Destination.Validate(); err != nil { + invalidParams.AddNested("Destination", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDestination sets the Destination field's value. +func (s *StorageClassAnalysisDataExport) SetDestination(v *AnalyticsExportDestination) *StorageClassAnalysisDataExport { + s.Destination = v + return s +} + +// SetOutputSchemaVersion sets the OutputSchemaVersion field's value. +func (s *StorageClassAnalysisDataExport) SetOutputSchemaVersion(v string) *StorageClassAnalysisDataExport { + s.OutputSchemaVersion = &v + return s +} + +// A container of a key value name pair. +type Tag struct { + _ struct{} `type:"structure"` + + // Name of the tag. + // + // Key is a required field + Key *string `min:"1" type:"string" required:"true"` + + // Value of the tag. + // + // Value is a required field + Value *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s Tag) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Tag) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *Tag) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "Tag"} + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + if s.Value == nil { + invalidParams.Add(request.NewErrParamRequired("Value")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetKey sets the Key field's value. +func (s *Tag) SetKey(v string) *Tag { + s.Key = &v + return s +} + +// SetValue sets the Value field's value. +func (s *Tag) SetValue(v string) *Tag { + s.Value = &v + return s +} + +// Container for TagSet elements. +type Tagging struct { + _ struct{} `type:"structure"` + + // A collection for a a set of tags + // + // TagSet is a required field + TagSet []*Tag `locationNameList:"Tag" type:"list" required:"true"` +} + +// String returns the string representation +func (s Tagging) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Tagging) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *Tagging) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "Tagging"} + if s.TagSet == nil { + invalidParams.Add(request.NewErrParamRequired("TagSet")) + } + if s.TagSet != nil { + for i, v := range s.TagSet { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TagSet", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetTagSet sets the TagSet field's value. +func (s *Tagging) SetTagSet(v []*Tag) *Tagging { + s.TagSet = v + return s +} + +// Container for granting information. +type TargetGrant struct { + _ struct{} `type:"structure"` + + // Container for the person being granted permissions. + Grantee *Grantee `type:"structure" xmlPrefix:"xsi" xmlURI:"http://www.w3.org/2001/XMLSchema-instance"` + + // Logging permissions assigned to the Grantee for the bucket. + Permission *string `type:"string" enum:"BucketLogsPermission"` +} + +// String returns the string representation +func (s TargetGrant) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TargetGrant) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *TargetGrant) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "TargetGrant"} + if s.Grantee != nil { + if err := s.Grantee.Validate(); err != nil { + invalidParams.AddNested("Grantee", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetGrantee sets the Grantee field's value. +func (s *TargetGrant) SetGrantee(v *Grantee) *TargetGrant { + s.Grantee = v + return s +} + +// SetPermission sets the Permission field's value. +func (s *TargetGrant) SetPermission(v string) *TargetGrant { + s.Permission = &v + return s +} + +// A container for specifying the configuration for publication of messages +// to an Amazon Simple Notification Service (Amazon SNS) topic when Amazon S3 +// detects specified events. +type TopicConfiguration struct { + _ struct{} `type:"structure"` + + // The Amazon S3 bucket event about which to send notifications. For more information, + // see Supported Event Types (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html) + // in the Amazon Simple Storage Service Developer Guide. + // + // Events is a required field + Events []*string `locationName:"Event" type:"list" flattened:"true" required:"true"` + + // Specifies object key name filtering rules. For information about key name + // filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html) + // in the Amazon Simple Storage Service Developer Guide. + Filter *NotificationConfigurationFilter `type:"structure"` + + // An optional unique identifier for configurations in a notification configuration. + // If you don't provide one, Amazon S3 will assign an ID. + Id *string `type:"string"` + + // The Amazon Resource Name (ARN) of the Amazon SNS topic to which Amazon S3 + // publishes a message when it detects events of the specified type. + // + // TopicArn is a required field + TopicArn *string `locationName:"Topic" type:"string" required:"true"` +} + +// String returns the string representation +func (s TopicConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TopicConfiguration) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *TopicConfiguration) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "TopicConfiguration"} + if s.Events == nil { + invalidParams.Add(request.NewErrParamRequired("Events")) + } + if s.TopicArn == nil { + invalidParams.Add(request.NewErrParamRequired("TopicArn")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetEvents sets the Events field's value. +func (s *TopicConfiguration) SetEvents(v []*string) *TopicConfiguration { + s.Events = v + return s +} + +// SetFilter sets the Filter field's value. +func (s *TopicConfiguration) SetFilter(v *NotificationConfigurationFilter) *TopicConfiguration { + s.Filter = v + return s +} + +// SetId sets the Id field's value. +func (s *TopicConfiguration) SetId(v string) *TopicConfiguration { + s.Id = &v + return s +} + +// SetTopicArn sets the TopicArn field's value. +func (s *TopicConfiguration) SetTopicArn(v string) *TopicConfiguration { + s.TopicArn = &v + return s +} + +// A container for specifying the configuration for publication of messages +// to an Amazon Simple Notification Service (Amazon SNS) topic when Amazon S3 +// detects specified events. This data type is deperecated. Please use TopicConfiguration +// instead. +type TopicConfigurationDeprecated struct { + _ struct{} `type:"structure"` + + // Bucket event for which to send notifications. + // + // Deprecated: Event has been deprecated + Event *string `deprecated:"true" type:"string" enum:"Event"` + + // A collection of events related to objects + Events []*string `locationName:"Event" type:"list" flattened:"true"` + + // An optional unique identifier for configurations in a notification configuration. + // If you don't provide one, Amazon S3 will assign an ID. + Id *string `type:"string"` + + // Amazon SNS topic to which Amazon S3 will publish a message to report the + // specified events for the bucket. + Topic *string `type:"string"` +} + +// String returns the string representation +func (s TopicConfigurationDeprecated) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TopicConfigurationDeprecated) GoString() string { + return s.String() +} + +// SetEvent sets the Event field's value. +func (s *TopicConfigurationDeprecated) SetEvent(v string) *TopicConfigurationDeprecated { + s.Event = &v + return s +} + +// SetEvents sets the Events field's value. +func (s *TopicConfigurationDeprecated) SetEvents(v []*string) *TopicConfigurationDeprecated { + s.Events = v + return s +} + +// SetId sets the Id field's value. +func (s *TopicConfigurationDeprecated) SetId(v string) *TopicConfigurationDeprecated { + s.Id = &v + return s +} + +// SetTopic sets the Topic field's value. +func (s *TopicConfigurationDeprecated) SetTopic(v string) *TopicConfigurationDeprecated { + s.Topic = &v + return s +} + +// Specifies when an object transitions to a specified storage class. +type Transition struct { + _ struct{} `type:"structure"` + + // Indicates when objects are transitioned to the specified storage class. The + // date value must be in ISO 8601 format. The time is always midnight UTC. + Date *time.Time `type:"timestamp" timestampFormat:"iso8601"` + + // Indicates the number of days after creation when objects are transitioned + // to the specified storage class. The value must be a positive integer. + Days *int64 `type:"integer"` + + // The storage class to which you want the object to transition. + StorageClass *string `type:"string" enum:"TransitionStorageClass"` +} + +// String returns the string representation +func (s Transition) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Transition) GoString() string { + return s.String() +} + +// SetDate sets the Date field's value. +func (s *Transition) SetDate(v time.Time) *Transition { + s.Date = &v + return s +} + +// SetDays sets the Days field's value. +func (s *Transition) SetDays(v int64) *Transition { + s.Days = &v + return s +} + +// SetStorageClass sets the StorageClass field's value. +func (s *Transition) SetStorageClass(v string) *Transition { + s.StorageClass = &v + return s +} + +type UploadPartCopyInput struct { + _ struct{} `locationName:"UploadPartCopyRequest" type:"structure"` + + // The bucket name. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // The name of the source bucket and key name of the source object, separated + // by a slash (/). Must be URL-encoded. + // + // CopySource is a required field + CopySource *string `location:"header" locationName:"x-amz-copy-source" type:"string" required:"true"` + + // Copies the object if its entity tag (ETag) matches the specified tag. + CopySourceIfMatch *string `location:"header" locationName:"x-amz-copy-source-if-match" type:"string"` + + // Copies the object if it has been modified since the specified time. + CopySourceIfModifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-modified-since" type:"timestamp"` + + // Copies the object if its entity tag (ETag) is different than the specified + // ETag. + CopySourceIfNoneMatch *string `location:"header" locationName:"x-amz-copy-source-if-none-match" type:"string"` + + // Copies the object if it hasn't been modified since the specified time. + CopySourceIfUnmodifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-unmodified-since" type:"timestamp"` + + // The range of bytes to copy from the source object. The range value must use + // the form bytes=first-last, where the first and last are the zero-based byte + // offsets to copy. For example, bytes=0-9 indicates that you want to copy the + // first ten bytes of the source. You can copy a range only if the source object + // is greater than 5 MB. + CopySourceRange *string `location:"header" locationName:"x-amz-copy-source-range" type:"string"` + + // Specifies the algorithm to use when decrypting the source object (e.g., AES256). + CopySourceSSECustomerAlgorithm *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-algorithm" type:"string"` + + // Specifies the customer-provided encryption key for Amazon S3 to use to decrypt + // the source object. The encryption key provided in this header must be one + // that was used when the source object was created. + CopySourceSSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key" type:"string" sensitive:"true"` + + // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. + // Amazon S3 uses this header for a message integrity check to ensure the encryption + // key was transmitted without error. + CopySourceSSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key-MD5" type:"string"` + + // Object key for which the multipart upload was initiated. + // + // Key is a required field + Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + + // Part number of part being copied. This is a positive integer between 1 and + // 10,000. + // + // PartNumber is a required field + PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer" required:"true"` + + // Confirms that the requester knows that she or he will be charged for the + // request. Bucket owners need not specify this parameter in their requests. + // Documentation on downloading objects from requester pays buckets can be found + // at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` + + // Specifies the algorithm to use to when encrypting the object (e.g., AES256). + SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"` + + // Specifies the customer-provided encryption key for Amazon S3 to use in encrypting + // data. This value is used to store the object and then it is discarded; Amazon + // does not store the encryption key. The key must be appropriate for use with + // the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm + // header. This must be the same encryption key specified in the initiate multipart + // upload request. + SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"` + + // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. + // Amazon S3 uses this header for a message integrity check to ensure the encryption + // key was transmitted without error. + SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"` + + // Upload ID identifying the multipart upload whose part is being copied. + // + // UploadId is a required field + UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"` +} + +// String returns the string representation +func (s UploadPartCopyInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UploadPartCopyInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UploadPartCopyInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UploadPartCopyInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.CopySource == nil { + invalidParams.Add(request.NewErrParamRequired("CopySource")) + } + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + if s.PartNumber == nil { + invalidParams.Add(request.NewErrParamRequired("PartNumber")) + } + if s.UploadId == nil { + invalidParams.Add(request.NewErrParamRequired("UploadId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBucket sets the Bucket field's value. +func (s *UploadPartCopyInput) SetBucket(v string) *UploadPartCopyInput { + s.Bucket = &v + return s +} + +func (s *UploadPartCopyInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetCopySource sets the CopySource field's value. +func (s *UploadPartCopyInput) SetCopySource(v string) *UploadPartCopyInput { + s.CopySource = &v + return s +} + +// SetCopySourceIfMatch sets the CopySourceIfMatch field's value. +func (s *UploadPartCopyInput) SetCopySourceIfMatch(v string) *UploadPartCopyInput { + s.CopySourceIfMatch = &v + return s +} + +// SetCopySourceIfModifiedSince sets the CopySourceIfModifiedSince field's value. +func (s *UploadPartCopyInput) SetCopySourceIfModifiedSince(v time.Time) *UploadPartCopyInput { + s.CopySourceIfModifiedSince = &v + return s +} + +// SetCopySourceIfNoneMatch sets the CopySourceIfNoneMatch field's value. +func (s *UploadPartCopyInput) SetCopySourceIfNoneMatch(v string) *UploadPartCopyInput { + s.CopySourceIfNoneMatch = &v + return s +} + +// SetCopySourceIfUnmodifiedSince sets the CopySourceIfUnmodifiedSince field's value. +func (s *UploadPartCopyInput) SetCopySourceIfUnmodifiedSince(v time.Time) *UploadPartCopyInput { + s.CopySourceIfUnmodifiedSince = &v + return s +} + +// SetCopySourceRange sets the CopySourceRange field's value. +func (s *UploadPartCopyInput) SetCopySourceRange(v string) *UploadPartCopyInput { + s.CopySourceRange = &v + return s +} + +// SetCopySourceSSECustomerAlgorithm sets the CopySourceSSECustomerAlgorithm field's value. +func (s *UploadPartCopyInput) SetCopySourceSSECustomerAlgorithm(v string) *UploadPartCopyInput { + s.CopySourceSSECustomerAlgorithm = &v + return s +} + +// SetCopySourceSSECustomerKey sets the CopySourceSSECustomerKey field's value. +func (s *UploadPartCopyInput) SetCopySourceSSECustomerKey(v string) *UploadPartCopyInput { + s.CopySourceSSECustomerKey = &v + return s +} + +func (s *UploadPartCopyInput) getCopySourceSSECustomerKey() (v string) { + if s.CopySourceSSECustomerKey == nil { + return v + } + return *s.CopySourceSSECustomerKey +} + +// SetCopySourceSSECustomerKeyMD5 sets the CopySourceSSECustomerKeyMD5 field's value. +func (s *UploadPartCopyInput) SetCopySourceSSECustomerKeyMD5(v string) *UploadPartCopyInput { + s.CopySourceSSECustomerKeyMD5 = &v + return s +} + +// SetKey sets the Key field's value. +func (s *UploadPartCopyInput) SetKey(v string) *UploadPartCopyInput { + s.Key = &v + return s +} + +// SetPartNumber sets the PartNumber field's value. +func (s *UploadPartCopyInput) SetPartNumber(v int64) *UploadPartCopyInput { + s.PartNumber = &v + return s +} + +// SetRequestPayer sets the RequestPayer field's value. +func (s *UploadPartCopyInput) SetRequestPayer(v string) *UploadPartCopyInput { + s.RequestPayer = &v + return s +} + +// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value. +func (s *UploadPartCopyInput) SetSSECustomerAlgorithm(v string) *UploadPartCopyInput { + s.SSECustomerAlgorithm = &v + return s +} + +// SetSSECustomerKey sets the SSECustomerKey field's value. +func (s *UploadPartCopyInput) SetSSECustomerKey(v string) *UploadPartCopyInput { + s.SSECustomerKey = &v + return s +} + +func (s *UploadPartCopyInput) getSSECustomerKey() (v string) { + if s.SSECustomerKey == nil { + return v + } + return *s.SSECustomerKey +} + +// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value. +func (s *UploadPartCopyInput) SetSSECustomerKeyMD5(v string) *UploadPartCopyInput { + s.SSECustomerKeyMD5 = &v + return s +} + +// SetUploadId sets the UploadId field's value. +func (s *UploadPartCopyInput) SetUploadId(v string) *UploadPartCopyInput { + s.UploadId = &v + return s +} + +type UploadPartCopyOutput struct { + _ struct{} `type:"structure" payload:"CopyPartResult"` + + // Container for all response elements. + CopyPartResult *CopyPartResult `type:"structure"` + + // The version of the source object that was copied, if you have enabled versioning + // on the source bucket. + CopySourceVersionId *string `location:"header" locationName:"x-amz-copy-source-version-id" type:"string"` + + // If present, indicates that the requester was successfully charged for the + // request. + RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"` + + // If server-side encryption with a customer-provided encryption key was requested, + // the response will include this header confirming the encryption algorithm + // used. + SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"` + + // If server-side encryption with a customer-provided encryption key was requested, + // the response will include this header to provide round trip message integrity + // verification of the customer-provided encryption key. + SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"` + + // If present, specifies the ID of the AWS Key Management Service (KMS) customer + // master key (CMK) that was used for the object. + SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"` + + // The Server-side encryption algorithm used when storing this object in S3 + // (e.g., AES256, aws:kms). + ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"` +} + +// String returns the string representation +func (s UploadPartCopyOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UploadPartCopyOutput) GoString() string { + return s.String() +} + +// SetCopyPartResult sets the CopyPartResult field's value. +func (s *UploadPartCopyOutput) SetCopyPartResult(v *CopyPartResult) *UploadPartCopyOutput { + s.CopyPartResult = v + return s +} + +// SetCopySourceVersionId sets the CopySourceVersionId field's value. +func (s *UploadPartCopyOutput) SetCopySourceVersionId(v string) *UploadPartCopyOutput { + s.CopySourceVersionId = &v + return s +} + +// SetRequestCharged sets the RequestCharged field's value. +func (s *UploadPartCopyOutput) SetRequestCharged(v string) *UploadPartCopyOutput { + s.RequestCharged = &v + return s +} + +// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value. +func (s *UploadPartCopyOutput) SetSSECustomerAlgorithm(v string) *UploadPartCopyOutput { + s.SSECustomerAlgorithm = &v + return s +} + +// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value. +func (s *UploadPartCopyOutput) SetSSECustomerKeyMD5(v string) *UploadPartCopyOutput { + s.SSECustomerKeyMD5 = &v + return s +} + +// SetSSEKMSKeyId sets the SSEKMSKeyId field's value. +func (s *UploadPartCopyOutput) SetSSEKMSKeyId(v string) *UploadPartCopyOutput { + s.SSEKMSKeyId = &v + return s +} + +// SetServerSideEncryption sets the ServerSideEncryption field's value. +func (s *UploadPartCopyOutput) SetServerSideEncryption(v string) *UploadPartCopyOutput { + s.ServerSideEncryption = &v + return s +} + +type UploadPartInput struct { + _ struct{} `locationName:"UploadPartRequest" type:"structure" payload:"Body"` + + // Object data. + Body io.ReadSeeker `type:"blob"` + + // Name of the bucket to which the multipart upload was initiated. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Size of the body in bytes. This parameter is useful when the size of the + // body cannot be determined automatically. + ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"` + + // The base64-encoded 128-bit MD5 digest of the part data. This parameter is + // auto-populated when using the command from the CLI. This parameted is required + // if object lock parameters are specified. + ContentMD5 *string `location:"header" locationName:"Content-MD5" type:"string"` + + // Object key for which the multipart upload was initiated. + // + // Key is a required field + Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + + // Part number of part being uploaded. This is a positive integer between 1 + // and 10,000. + // + // PartNumber is a required field + PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer" required:"true"` + + // Confirms that the requester knows that she or he will be charged for the + // request. Bucket owners need not specify this parameter in their requests. + // Documentation on downloading objects from requester pays buckets can be found + // at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` + + // Specifies the algorithm to use to when encrypting the object (e.g., AES256). + SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"` + + // Specifies the customer-provided encryption key for Amazon S3 to use in encrypting + // data. This value is used to store the object and then it is discarded; Amazon + // does not store the encryption key. The key must be appropriate for use with + // the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm + // header. This must be the same encryption key specified in the initiate multipart + // upload request. + SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"` + + // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. + // Amazon S3 uses this header for a message integrity check to ensure the encryption + // key was transmitted without error. + SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"` + + // Upload ID identifying the multipart upload whose part is being uploaded. + // + // UploadId is a required field + UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"` +} + +// String returns the string representation +func (s UploadPartInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UploadPartInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UploadPartInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UploadPartInput"} + if s.Bucket == nil { + invalidParams.Add(request.NewErrParamRequired("Bucket")) + } + if s.Bucket != nil && len(*s.Bucket) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Bucket", 1)) + } + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + if s.PartNumber == nil { + invalidParams.Add(request.NewErrParamRequired("PartNumber")) + } + if s.UploadId == nil { + invalidParams.Add(request.NewErrParamRequired("UploadId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBody sets the Body field's value. +func (s *UploadPartInput) SetBody(v io.ReadSeeker) *UploadPartInput { + s.Body = v + return s +} + +// SetBucket sets the Bucket field's value. +func (s *UploadPartInput) SetBucket(v string) *UploadPartInput { + s.Bucket = &v + return s +} + +func (s *UploadPartInput) getBucket() (v string) { + if s.Bucket == nil { + return v + } + return *s.Bucket +} + +// SetContentLength sets the ContentLength field's value. +func (s *UploadPartInput) SetContentLength(v int64) *UploadPartInput { + s.ContentLength = &v + return s +} + +// SetContentMD5 sets the ContentMD5 field's value. +func (s *UploadPartInput) SetContentMD5(v string) *UploadPartInput { + s.ContentMD5 = &v + return s +} + +// SetKey sets the Key field's value. +func (s *UploadPartInput) SetKey(v string) *UploadPartInput { + s.Key = &v + return s +} + +// SetPartNumber sets the PartNumber field's value. +func (s *UploadPartInput) SetPartNumber(v int64) *UploadPartInput { + s.PartNumber = &v + return s +} + +// SetRequestPayer sets the RequestPayer field's value. +func (s *UploadPartInput) SetRequestPayer(v string) *UploadPartInput { + s.RequestPayer = &v + return s +} + +// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value. +func (s *UploadPartInput) SetSSECustomerAlgorithm(v string) *UploadPartInput { + s.SSECustomerAlgorithm = &v + return s +} + +// SetSSECustomerKey sets the SSECustomerKey field's value. +func (s *UploadPartInput) SetSSECustomerKey(v string) *UploadPartInput { + s.SSECustomerKey = &v + return s +} + +func (s *UploadPartInput) getSSECustomerKey() (v string) { + if s.SSECustomerKey == nil { + return v + } + return *s.SSECustomerKey +} + +// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value. +func (s *UploadPartInput) SetSSECustomerKeyMD5(v string) *UploadPartInput { + s.SSECustomerKeyMD5 = &v + return s +} + +// SetUploadId sets the UploadId field's value. +func (s *UploadPartInput) SetUploadId(v string) *UploadPartInput { + s.UploadId = &v + return s +} + +type UploadPartOutput struct { + _ struct{} `type:"structure"` + + // Entity tag for the uploaded object. + ETag *string `location:"header" locationName:"ETag" type:"string"` + + // If present, indicates that the requester was successfully charged for the + // request. + RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"` + + // If server-side encryption with a customer-provided encryption key was requested, + // the response will include this header confirming the encryption algorithm + // used. + SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"` + + // If server-side encryption with a customer-provided encryption key was requested, + // the response will include this header to provide round trip message integrity + // verification of the customer-provided encryption key. + SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"` + + // If present, specifies the ID of the AWS Key Management Service (KMS) customer + // master key (CMK) was used for the object. + SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"` + + // The Server-side encryption algorithm used when storing this object in S3 + // (e.g., AES256, aws:kms). + ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"` +} + +// String returns the string representation +func (s UploadPartOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UploadPartOutput) GoString() string { + return s.String() +} + +// SetETag sets the ETag field's value. +func (s *UploadPartOutput) SetETag(v string) *UploadPartOutput { + s.ETag = &v + return s +} + +// SetRequestCharged sets the RequestCharged field's value. +func (s *UploadPartOutput) SetRequestCharged(v string) *UploadPartOutput { + s.RequestCharged = &v + return s +} + +// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value. +func (s *UploadPartOutput) SetSSECustomerAlgorithm(v string) *UploadPartOutput { + s.SSECustomerAlgorithm = &v + return s +} + +// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value. +func (s *UploadPartOutput) SetSSECustomerKeyMD5(v string) *UploadPartOutput { + s.SSECustomerKeyMD5 = &v + return s +} + +// SetSSEKMSKeyId sets the SSEKMSKeyId field's value. +func (s *UploadPartOutput) SetSSEKMSKeyId(v string) *UploadPartOutput { + s.SSEKMSKeyId = &v + return s +} + +// SetServerSideEncryption sets the ServerSideEncryption field's value. +func (s *UploadPartOutput) SetServerSideEncryption(v string) *UploadPartOutput { + s.ServerSideEncryption = &v + return s +} + +// Describes the versioning state of an Amazon S3 bucket. For more information, +// see PUT Bucket versioning (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTVersioningStatus.html) +// in the Amazon Simple Storage Service API Reference. +type VersioningConfiguration struct { + _ struct{} `type:"structure"` + + // Specifies whether MFA delete is enabled in the bucket versioning configuration. + // This element is only returned if the bucket has been configured with MFA + // delete. If the bucket has never been so configured, this element is not returned. + MFADelete *string `locationName:"MfaDelete" type:"string" enum:"MFADelete"` + + // The versioning state of the bucket. + Status *string `type:"string" enum:"BucketVersioningStatus"` +} + +// String returns the string representation +func (s VersioningConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s VersioningConfiguration) GoString() string { + return s.String() +} + +// SetMFADelete sets the MFADelete field's value. +func (s *VersioningConfiguration) SetMFADelete(v string) *VersioningConfiguration { + s.MFADelete = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *VersioningConfiguration) SetStatus(v string) *VersioningConfiguration { + s.Status = &v + return s +} + +// Specifies website configuration parameters for an Amazon S3 bucket. +type WebsiteConfiguration struct { + _ struct{} `type:"structure"` + + // The name of the error document for the website. + ErrorDocument *ErrorDocument `type:"structure"` + + // The name of the index document for the website. + IndexDocument *IndexDocument `type:"structure"` + + // The redirect behavior for every request to this bucket's website endpoint. + // + // If you specify this property, you can't specify any other property. + RedirectAllRequestsTo *RedirectAllRequestsTo `type:"structure"` + + // Rules that define when a redirect is applied and the redirect behavior. + RoutingRules []*RoutingRule `locationNameList:"RoutingRule" type:"list"` +} + +// String returns the string representation +func (s WebsiteConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s WebsiteConfiguration) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *WebsiteConfiguration) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "WebsiteConfiguration"} + if s.ErrorDocument != nil { + if err := s.ErrorDocument.Validate(); err != nil { + invalidParams.AddNested("ErrorDocument", err.(request.ErrInvalidParams)) + } + } + if s.IndexDocument != nil { + if err := s.IndexDocument.Validate(); err != nil { + invalidParams.AddNested("IndexDocument", err.(request.ErrInvalidParams)) + } + } + if s.RedirectAllRequestsTo != nil { + if err := s.RedirectAllRequestsTo.Validate(); err != nil { + invalidParams.AddNested("RedirectAllRequestsTo", err.(request.ErrInvalidParams)) + } + } + if s.RoutingRules != nil { + for i, v := range s.RoutingRules { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RoutingRules", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetErrorDocument sets the ErrorDocument field's value. +func (s *WebsiteConfiguration) SetErrorDocument(v *ErrorDocument) *WebsiteConfiguration { + s.ErrorDocument = v + return s +} + +// SetIndexDocument sets the IndexDocument field's value. +func (s *WebsiteConfiguration) SetIndexDocument(v *IndexDocument) *WebsiteConfiguration { + s.IndexDocument = v + return s +} + +// SetRedirectAllRequestsTo sets the RedirectAllRequestsTo field's value. +func (s *WebsiteConfiguration) SetRedirectAllRequestsTo(v *RedirectAllRequestsTo) *WebsiteConfiguration { + s.RedirectAllRequestsTo = v + return s +} + +// SetRoutingRules sets the RoutingRules field's value. +func (s *WebsiteConfiguration) SetRoutingRules(v []*RoutingRule) *WebsiteConfiguration { + s.RoutingRules = v + return s +} + +const ( + // AnalyticsS3ExportFileFormatCsv is a AnalyticsS3ExportFileFormat enum value + AnalyticsS3ExportFileFormatCsv = "CSV" +) + +const ( + // BucketAccelerateStatusEnabled is a BucketAccelerateStatus enum value + BucketAccelerateStatusEnabled = "Enabled" + + // BucketAccelerateStatusSuspended is a BucketAccelerateStatus enum value + BucketAccelerateStatusSuspended = "Suspended" +) + +const ( + // BucketCannedACLPrivate is a BucketCannedACL enum value + BucketCannedACLPrivate = "private" + + // BucketCannedACLPublicRead is a BucketCannedACL enum value + BucketCannedACLPublicRead = "public-read" + + // BucketCannedACLPublicReadWrite is a BucketCannedACL enum value + BucketCannedACLPublicReadWrite = "public-read-write" + + // BucketCannedACLAuthenticatedRead is a BucketCannedACL enum value + BucketCannedACLAuthenticatedRead = "authenticated-read" +) + +const ( + // BucketLocationConstraintEu is a BucketLocationConstraint enum value + BucketLocationConstraintEu = "EU" + + // BucketLocationConstraintEuWest1 is a BucketLocationConstraint enum value + BucketLocationConstraintEuWest1 = "eu-west-1" + + // BucketLocationConstraintUsWest1 is a BucketLocationConstraint enum value + BucketLocationConstraintUsWest1 = "us-west-1" + + // BucketLocationConstraintUsWest2 is a BucketLocationConstraint enum value + BucketLocationConstraintUsWest2 = "us-west-2" + + // BucketLocationConstraintApSouth1 is a BucketLocationConstraint enum value + BucketLocationConstraintApSouth1 = "ap-south-1" + + // BucketLocationConstraintApSoutheast1 is a BucketLocationConstraint enum value + BucketLocationConstraintApSoutheast1 = "ap-southeast-1" + + // BucketLocationConstraintApSoutheast2 is a BucketLocationConstraint enum value + BucketLocationConstraintApSoutheast2 = "ap-southeast-2" + + // BucketLocationConstraintApNortheast1 is a BucketLocationConstraint enum value + BucketLocationConstraintApNortheast1 = "ap-northeast-1" + + // BucketLocationConstraintSaEast1 is a BucketLocationConstraint enum value + BucketLocationConstraintSaEast1 = "sa-east-1" + + // BucketLocationConstraintCnNorth1 is a BucketLocationConstraint enum value + BucketLocationConstraintCnNorth1 = "cn-north-1" + + // BucketLocationConstraintEuCentral1 is a BucketLocationConstraint enum value + BucketLocationConstraintEuCentral1 = "eu-central-1" +) + +const ( + // BucketLogsPermissionFullControl is a BucketLogsPermission enum value + BucketLogsPermissionFullControl = "FULL_CONTROL" + + // BucketLogsPermissionRead is a BucketLogsPermission enum value + BucketLogsPermissionRead = "READ" + + // BucketLogsPermissionWrite is a BucketLogsPermission enum value + BucketLogsPermissionWrite = "WRITE" +) + +const ( + // BucketVersioningStatusEnabled is a BucketVersioningStatus enum value + BucketVersioningStatusEnabled = "Enabled" + + // BucketVersioningStatusSuspended is a BucketVersioningStatus enum value + BucketVersioningStatusSuspended = "Suspended" +) + +const ( + // CompressionTypeNone is a CompressionType enum value + CompressionTypeNone = "NONE" + + // CompressionTypeGzip is a CompressionType enum value + CompressionTypeGzip = "GZIP" + + // CompressionTypeBzip2 is a CompressionType enum value + CompressionTypeBzip2 = "BZIP2" +) + +const ( + // DeleteMarkerReplicationStatusEnabled is a DeleteMarkerReplicationStatus enum value + DeleteMarkerReplicationStatusEnabled = "Enabled" + + // DeleteMarkerReplicationStatusDisabled is a DeleteMarkerReplicationStatus enum value + DeleteMarkerReplicationStatusDisabled = "Disabled" +) + +// Requests Amazon S3 to encode the object keys in the response and specifies +// the encoding method to use. An object key may contain any Unicode character; +// however, XML 1.0 parser cannot parse some characters, such as characters +// with an ASCII value from 0 to 10. For characters that are not supported in +// XML 1.0, you can add this parameter to request that Amazon S3 encode the +// keys in the response. +const ( + // EncodingTypeUrl is a EncodingType enum value + EncodingTypeUrl = "url" +) + +// The bucket event for which to send notifications. +const ( + // EventS3ReducedRedundancyLostObject is a Event enum value + EventS3ReducedRedundancyLostObject = "s3:ReducedRedundancyLostObject" + + // EventS3ObjectCreated is a Event enum value + EventS3ObjectCreated = "s3:ObjectCreated:*" + + // EventS3ObjectCreatedPut is a Event enum value + EventS3ObjectCreatedPut = "s3:ObjectCreated:Put" + + // EventS3ObjectCreatedPost is a Event enum value + EventS3ObjectCreatedPost = "s3:ObjectCreated:Post" + + // EventS3ObjectCreatedCopy is a Event enum value + EventS3ObjectCreatedCopy = "s3:ObjectCreated:Copy" + + // EventS3ObjectCreatedCompleteMultipartUpload is a Event enum value + EventS3ObjectCreatedCompleteMultipartUpload = "s3:ObjectCreated:CompleteMultipartUpload" + + // EventS3ObjectRemoved is a Event enum value + EventS3ObjectRemoved = "s3:ObjectRemoved:*" + + // EventS3ObjectRemovedDelete is a Event enum value + EventS3ObjectRemovedDelete = "s3:ObjectRemoved:Delete" + + // EventS3ObjectRemovedDeleteMarkerCreated is a Event enum value + EventS3ObjectRemovedDeleteMarkerCreated = "s3:ObjectRemoved:DeleteMarkerCreated" + + // EventS3ObjectRestorePost is a Event enum value + EventS3ObjectRestorePost = "s3:ObjectRestore:Post" + + // EventS3ObjectRestoreCompleted is a Event enum value + EventS3ObjectRestoreCompleted = "s3:ObjectRestore:Completed" +) + +const ( + // ExistingObjectReplicationStatusEnabled is a ExistingObjectReplicationStatus enum value + ExistingObjectReplicationStatusEnabled = "Enabled" + + // ExistingObjectReplicationStatusDisabled is a ExistingObjectReplicationStatus enum value + ExistingObjectReplicationStatusDisabled = "Disabled" +) + +const ( + // ExpirationStatusEnabled is a ExpirationStatus enum value + ExpirationStatusEnabled = "Enabled" + + // ExpirationStatusDisabled is a ExpirationStatus enum value + ExpirationStatusDisabled = "Disabled" +) + +const ( + // ExpressionTypeSql is a ExpressionType enum value + ExpressionTypeSql = "SQL" +) + +const ( + // FileHeaderInfoUse is a FileHeaderInfo enum value + FileHeaderInfoUse = "USE" + + // FileHeaderInfoIgnore is a FileHeaderInfo enum value + FileHeaderInfoIgnore = "IGNORE" + + // FileHeaderInfoNone is a FileHeaderInfo enum value + FileHeaderInfoNone = "NONE" +) + +const ( + // FilterRuleNamePrefix is a FilterRuleName enum value + FilterRuleNamePrefix = "prefix" + + // FilterRuleNameSuffix is a FilterRuleName enum value + FilterRuleNameSuffix = "suffix" +) + +const ( + // InventoryFormatCsv is a InventoryFormat enum value + InventoryFormatCsv = "CSV" + + // InventoryFormatOrc is a InventoryFormat enum value + InventoryFormatOrc = "ORC" + + // InventoryFormatParquet is a InventoryFormat enum value + InventoryFormatParquet = "Parquet" +) + +const ( + // InventoryFrequencyDaily is a InventoryFrequency enum value + InventoryFrequencyDaily = "Daily" + + // InventoryFrequencyWeekly is a InventoryFrequency enum value + InventoryFrequencyWeekly = "Weekly" +) + +const ( + // InventoryIncludedObjectVersionsAll is a InventoryIncludedObjectVersions enum value + InventoryIncludedObjectVersionsAll = "All" + + // InventoryIncludedObjectVersionsCurrent is a InventoryIncludedObjectVersions enum value + InventoryIncludedObjectVersionsCurrent = "Current" +) + +const ( + // InventoryOptionalFieldSize is a InventoryOptionalField enum value + InventoryOptionalFieldSize = "Size" + + // InventoryOptionalFieldLastModifiedDate is a InventoryOptionalField enum value + InventoryOptionalFieldLastModifiedDate = "LastModifiedDate" + + // InventoryOptionalFieldStorageClass is a InventoryOptionalField enum value + InventoryOptionalFieldStorageClass = "StorageClass" + + // InventoryOptionalFieldEtag is a InventoryOptionalField enum value + InventoryOptionalFieldEtag = "ETag" + + // InventoryOptionalFieldIsMultipartUploaded is a InventoryOptionalField enum value + InventoryOptionalFieldIsMultipartUploaded = "IsMultipartUploaded" + + // InventoryOptionalFieldReplicationStatus is a InventoryOptionalField enum value + InventoryOptionalFieldReplicationStatus = "ReplicationStatus" + + // InventoryOptionalFieldEncryptionStatus is a InventoryOptionalField enum value + InventoryOptionalFieldEncryptionStatus = "EncryptionStatus" + + // InventoryOptionalFieldObjectLockRetainUntilDate is a InventoryOptionalField enum value + InventoryOptionalFieldObjectLockRetainUntilDate = "ObjectLockRetainUntilDate" + + // InventoryOptionalFieldObjectLockMode is a InventoryOptionalField enum value + InventoryOptionalFieldObjectLockMode = "ObjectLockMode" + + // InventoryOptionalFieldObjectLockLegalHoldStatus is a InventoryOptionalField enum value + InventoryOptionalFieldObjectLockLegalHoldStatus = "ObjectLockLegalHoldStatus" + + // InventoryOptionalFieldIntelligentTieringAccessTier is a InventoryOptionalField enum value + InventoryOptionalFieldIntelligentTieringAccessTier = "IntelligentTieringAccessTier" +) + +const ( + // JSONTypeDocument is a JSONType enum value + JSONTypeDocument = "DOCUMENT" + + // JSONTypeLines is a JSONType enum value + JSONTypeLines = "LINES" +) + +const ( + // MFADeleteEnabled is a MFADelete enum value + MFADeleteEnabled = "Enabled" + + // MFADeleteDisabled is a MFADelete enum value + MFADeleteDisabled = "Disabled" +) + +const ( + // MFADeleteStatusEnabled is a MFADeleteStatus enum value + MFADeleteStatusEnabled = "Enabled" + + // MFADeleteStatusDisabled is a MFADeleteStatus enum value + MFADeleteStatusDisabled = "Disabled" +) + +const ( + // MetadataDirectiveCopy is a MetadataDirective enum value + MetadataDirectiveCopy = "COPY" + + // MetadataDirectiveReplace is a MetadataDirective enum value + MetadataDirectiveReplace = "REPLACE" +) + +const ( + // ObjectCannedACLPrivate is a ObjectCannedACL enum value + ObjectCannedACLPrivate = "private" + + // ObjectCannedACLPublicRead is a ObjectCannedACL enum value + ObjectCannedACLPublicRead = "public-read" + + // ObjectCannedACLPublicReadWrite is a ObjectCannedACL enum value + ObjectCannedACLPublicReadWrite = "public-read-write" + + // ObjectCannedACLAuthenticatedRead is a ObjectCannedACL enum value + ObjectCannedACLAuthenticatedRead = "authenticated-read" + + // ObjectCannedACLAwsExecRead is a ObjectCannedACL enum value + ObjectCannedACLAwsExecRead = "aws-exec-read" + + // ObjectCannedACLBucketOwnerRead is a ObjectCannedACL enum value + ObjectCannedACLBucketOwnerRead = "bucket-owner-read" + + // ObjectCannedACLBucketOwnerFullControl is a ObjectCannedACL enum value + ObjectCannedACLBucketOwnerFullControl = "bucket-owner-full-control" +) + +const ( + // ObjectLockEnabledEnabled is a ObjectLockEnabled enum value + ObjectLockEnabledEnabled = "Enabled" +) + +const ( + // ObjectLockLegalHoldStatusOn is a ObjectLockLegalHoldStatus enum value + ObjectLockLegalHoldStatusOn = "ON" + + // ObjectLockLegalHoldStatusOff is a ObjectLockLegalHoldStatus enum value + ObjectLockLegalHoldStatusOff = "OFF" +) + +const ( + // ObjectLockModeGovernance is a ObjectLockMode enum value + ObjectLockModeGovernance = "GOVERNANCE" + + // ObjectLockModeCompliance is a ObjectLockMode enum value + ObjectLockModeCompliance = "COMPLIANCE" +) + +const ( + // ObjectLockRetentionModeGovernance is a ObjectLockRetentionMode enum value + ObjectLockRetentionModeGovernance = "GOVERNANCE" + + // ObjectLockRetentionModeCompliance is a ObjectLockRetentionMode enum value + ObjectLockRetentionModeCompliance = "COMPLIANCE" +) + +const ( + // ObjectStorageClassStandard is a ObjectStorageClass enum value + ObjectStorageClassStandard = "STANDARD" + + // ObjectStorageClassReducedRedundancy is a ObjectStorageClass enum value + ObjectStorageClassReducedRedundancy = "REDUCED_REDUNDANCY" + + // ObjectStorageClassGlacier is a ObjectStorageClass enum value + ObjectStorageClassGlacier = "GLACIER" + + // ObjectStorageClassStandardIa is a ObjectStorageClass enum value + ObjectStorageClassStandardIa = "STANDARD_IA" + + // ObjectStorageClassOnezoneIa is a ObjectStorageClass enum value + ObjectStorageClassOnezoneIa = "ONEZONE_IA" + + // ObjectStorageClassIntelligentTiering is a ObjectStorageClass enum value + ObjectStorageClassIntelligentTiering = "INTELLIGENT_TIERING" + + // ObjectStorageClassDeepArchive is a ObjectStorageClass enum value + ObjectStorageClassDeepArchive = "DEEP_ARCHIVE" +) + +const ( + // ObjectVersionStorageClassStandard is a ObjectVersionStorageClass enum value + ObjectVersionStorageClassStandard = "STANDARD" +) + +const ( + // OwnerOverrideDestination is a OwnerOverride enum value + OwnerOverrideDestination = "Destination" +) + +const ( + // PayerRequester is a Payer enum value + PayerRequester = "Requester" + + // PayerBucketOwner is a Payer enum value + PayerBucketOwner = "BucketOwner" +) + +const ( + // PermissionFullControl is a Permission enum value + PermissionFullControl = "FULL_CONTROL" + + // PermissionWrite is a Permission enum value + PermissionWrite = "WRITE" + + // PermissionWriteAcp is a Permission enum value + PermissionWriteAcp = "WRITE_ACP" + + // PermissionRead is a Permission enum value + PermissionRead = "READ" + + // PermissionReadAcp is a Permission enum value + PermissionReadAcp = "READ_ACP" +) + +const ( + // ProtocolHttp is a Protocol enum value + ProtocolHttp = "http" + + // ProtocolHttps is a Protocol enum value + ProtocolHttps = "https" +) + +const ( + // QuoteFieldsAlways is a QuoteFields enum value + QuoteFieldsAlways = "ALWAYS" + + // QuoteFieldsAsneeded is a QuoteFields enum value + QuoteFieldsAsneeded = "ASNEEDED" +) + +const ( + // ReplicationRuleStatusEnabled is a ReplicationRuleStatus enum value + ReplicationRuleStatusEnabled = "Enabled" + + // ReplicationRuleStatusDisabled is a ReplicationRuleStatus enum value + ReplicationRuleStatusDisabled = "Disabled" +) + +const ( + // ReplicationStatusComplete is a ReplicationStatus enum value + ReplicationStatusComplete = "COMPLETE" + + // ReplicationStatusPending is a ReplicationStatus enum value + ReplicationStatusPending = "PENDING" + + // ReplicationStatusFailed is a ReplicationStatus enum value + ReplicationStatusFailed = "FAILED" + + // ReplicationStatusReplica is a ReplicationStatus enum value + ReplicationStatusReplica = "REPLICA" +) + +// If present, indicates that the requester was successfully charged for the +// request. +const ( + // RequestChargedRequester is a RequestCharged enum value + RequestChargedRequester = "requester" +) + +// Confirms that the requester knows that she or he will be charged for the +// request. Bucket owners need not specify this parameter in their requests. +// Documentation on downloading objects from requester pays buckets can be found +// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html +const ( + // RequestPayerRequester is a RequestPayer enum value + RequestPayerRequester = "requester" +) + +const ( + // RestoreRequestTypeSelect is a RestoreRequestType enum value + RestoreRequestTypeSelect = "SELECT" +) + +const ( + // ServerSideEncryptionAes256 is a ServerSideEncryption enum value + ServerSideEncryptionAes256 = "AES256" + + // ServerSideEncryptionAwsKms is a ServerSideEncryption enum value + ServerSideEncryptionAwsKms = "aws:kms" +) + +const ( + // SseKmsEncryptedObjectsStatusEnabled is a SseKmsEncryptedObjectsStatus enum value + SseKmsEncryptedObjectsStatusEnabled = "Enabled" + + // SseKmsEncryptedObjectsStatusDisabled is a SseKmsEncryptedObjectsStatus enum value + SseKmsEncryptedObjectsStatusDisabled = "Disabled" +) + +const ( + // StorageClassStandard is a StorageClass enum value + StorageClassStandard = "STANDARD" + + // StorageClassReducedRedundancy is a StorageClass enum value + StorageClassReducedRedundancy = "REDUCED_REDUNDANCY" + + // StorageClassStandardIa is a StorageClass enum value + StorageClassStandardIa = "STANDARD_IA" + + // StorageClassOnezoneIa is a StorageClass enum value + StorageClassOnezoneIa = "ONEZONE_IA" + + // StorageClassIntelligentTiering is a StorageClass enum value + StorageClassIntelligentTiering = "INTELLIGENT_TIERING" + + // StorageClassGlacier is a StorageClass enum value + StorageClassGlacier = "GLACIER" + + // StorageClassDeepArchive is a StorageClass enum value + StorageClassDeepArchive = "DEEP_ARCHIVE" +) + +const ( + // StorageClassAnalysisSchemaVersionV1 is a StorageClassAnalysisSchemaVersion enum value + StorageClassAnalysisSchemaVersionV1 = "V_1" +) + +const ( + // TaggingDirectiveCopy is a TaggingDirective enum value + TaggingDirectiveCopy = "COPY" + + // TaggingDirectiveReplace is a TaggingDirective enum value + TaggingDirectiveReplace = "REPLACE" +) + +const ( + // TierStandard is a Tier enum value + TierStandard = "Standard" + + // TierBulk is a Tier enum value + TierBulk = "Bulk" + + // TierExpedited is a Tier enum value + TierExpedited = "Expedited" +) + +const ( + // TransitionStorageClassGlacier is a TransitionStorageClass enum value + TransitionStorageClassGlacier = "GLACIER" + + // TransitionStorageClassStandardIa is a TransitionStorageClass enum value + TransitionStorageClassStandardIa = "STANDARD_IA" + + // TransitionStorageClassOnezoneIa is a TransitionStorageClass enum value + TransitionStorageClassOnezoneIa = "ONEZONE_IA" + + // TransitionStorageClassIntelligentTiering is a TransitionStorageClass enum value + TransitionStorageClassIntelligentTiering = "INTELLIGENT_TIERING" + + // TransitionStorageClassDeepArchive is a TransitionStorageClass enum value + TransitionStorageClassDeepArchive = "DEEP_ARCHIVE" +) + +const ( + // TypeCanonicalUser is a Type enum value + TypeCanonicalUser = "CanonicalUser" + + // TypeAmazonCustomerByEmail is a Type enum value + TypeAmazonCustomerByEmail = "AmazonCustomerByEmail" + + // TypeGroup is a Type enum value + TypeGroup = "Group" +) diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/body_hash.go b/vendor/github.com/aws/aws-sdk-go/service/s3/body_hash.go new file mode 100644 index 0000000..5c8ce5c --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/body_hash.go @@ -0,0 +1,249 @@ +package s3 + +import ( + "bytes" + "crypto/md5" + "crypto/sha256" + "encoding/base64" + "encoding/hex" + "fmt" + "hash" + "io" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/internal/sdkio" +) + +const ( + contentMD5Header = "Content-Md5" + contentSha256Header = "X-Amz-Content-Sha256" + amzTeHeader = "X-Amz-Te" + amzTxEncodingHeader = "X-Amz-Transfer-Encoding" + + appendMD5TxEncoding = "append-md5" +) + +// contentMD5 computes and sets the HTTP Content-MD5 header for requests that +// require it. +func contentMD5(r *request.Request) { + h := md5.New() + + if !aws.IsReaderSeekable(r.Body) { + if r.Config.Logger != nil { + r.Config.Logger.Log(fmt.Sprintf( + "Unable to compute Content-MD5 for unseekable body, S3.%s", + r.Operation.Name)) + } + return + } + + if _, err := copySeekableBody(h, r.Body); err != nil { + r.Error = awserr.New("ContentMD5", "failed to compute body MD5", err) + return + } + + // encode the md5 checksum in base64 and set the request header. + v := base64.StdEncoding.EncodeToString(h.Sum(nil)) + r.HTTPRequest.Header.Set(contentMD5Header, v) +} + +// computeBodyHashes will add Content MD5 and Content Sha256 hashes to the +// request. If the body is not seekable or S3DisableContentMD5Validation set +// this handler will be ignored. +func computeBodyHashes(r *request.Request) { + if aws.BoolValue(r.Config.S3DisableContentMD5Validation) { + return + } + if r.IsPresigned() { + return + } + if r.Error != nil || !aws.IsReaderSeekable(r.Body) { + return + } + + var md5Hash, sha256Hash hash.Hash + hashers := make([]io.Writer, 0, 2) + + // Determine upfront which hashes can be set without overriding user + // provide header data. + if v := r.HTTPRequest.Header.Get(contentMD5Header); len(v) == 0 { + md5Hash = md5.New() + hashers = append(hashers, md5Hash) + } + + if v := r.HTTPRequest.Header.Get(contentSha256Header); len(v) == 0 { + sha256Hash = sha256.New() + hashers = append(hashers, sha256Hash) + } + + // Create the destination writer based on the hashes that are not already + // provided by the user. + var dst io.Writer + switch len(hashers) { + case 0: + return + case 1: + dst = hashers[0] + default: + dst = io.MultiWriter(hashers...) + } + + if _, err := copySeekableBody(dst, r.Body); err != nil { + r.Error = awserr.New("BodyHashError", "failed to compute body hashes", err) + return + } + + // For the hashes created, set the associated headers that the user did not + // already provide. + if md5Hash != nil { + sum := make([]byte, md5.Size) + encoded := make([]byte, md5Base64EncLen) + + base64.StdEncoding.Encode(encoded, md5Hash.Sum(sum[0:0])) + r.HTTPRequest.Header[contentMD5Header] = []string{string(encoded)} + } + + if sha256Hash != nil { + encoded := make([]byte, sha256HexEncLen) + sum := make([]byte, sha256.Size) + + hex.Encode(encoded, sha256Hash.Sum(sum[0:0])) + r.HTTPRequest.Header[contentSha256Header] = []string{string(encoded)} + } +} + +const ( + md5Base64EncLen = (md5.Size + 2) / 3 * 4 // base64.StdEncoding.EncodedLen + sha256HexEncLen = sha256.Size * 2 // hex.EncodedLen +) + +func copySeekableBody(dst io.Writer, src io.ReadSeeker) (int64, error) { + curPos, err := src.Seek(0, sdkio.SeekCurrent) + if err != nil { + return 0, err + } + + // hash the body. seek back to the first position after reading to reset + // the body for transmission. copy errors may be assumed to be from the + // body. + n, err := io.Copy(dst, src) + if err != nil { + return n, err + } + + _, err = src.Seek(curPos, sdkio.SeekStart) + if err != nil { + return n, err + } + + return n, nil +} + +// Adds the x-amz-te: append_md5 header to the request. This requests the service +// responds with a trailing MD5 checksum. +// +// Will not ask for append MD5 if disabled, the request is presigned or, +// or the API operation does not support content MD5 validation. +func askForTxEncodingAppendMD5(r *request.Request) { + if aws.BoolValue(r.Config.S3DisableContentMD5Validation) { + return + } + if r.IsPresigned() { + return + } + r.HTTPRequest.Header.Set(amzTeHeader, appendMD5TxEncoding) +} + +func useMD5ValidationReader(r *request.Request) { + if r.Error != nil { + return + } + + if v := r.HTTPResponse.Header.Get(amzTxEncodingHeader); v != appendMD5TxEncoding { + return + } + + var bodyReader *io.ReadCloser + var contentLen int64 + switch tv := r.Data.(type) { + case *GetObjectOutput: + bodyReader = &tv.Body + contentLen = aws.Int64Value(tv.ContentLength) + // Update ContentLength hiden the trailing MD5 checksum. + tv.ContentLength = aws.Int64(contentLen - md5.Size) + tv.ContentRange = aws.String(r.HTTPResponse.Header.Get("X-Amz-Content-Range")) + default: + r.Error = awserr.New("ChecksumValidationError", + fmt.Sprintf("%s: %s header received on unsupported API, %s", + amzTxEncodingHeader, appendMD5TxEncoding, r.Operation.Name, + ), nil) + return + } + + if contentLen < md5.Size { + r.Error = awserr.New("ChecksumValidationError", + fmt.Sprintf("invalid Content-Length %d for %s %s", + contentLen, appendMD5TxEncoding, amzTxEncodingHeader, + ), nil) + return + } + + // Wrap and swap the response body reader with the validation reader. + *bodyReader = newMD5ValidationReader(*bodyReader, contentLen-md5.Size) +} + +type md5ValidationReader struct { + rawReader io.ReadCloser + payload io.Reader + hash hash.Hash + + payloadLen int64 + read int64 +} + +func newMD5ValidationReader(reader io.ReadCloser, payloadLen int64) *md5ValidationReader { + h := md5.New() + return &md5ValidationReader{ + rawReader: reader, + payload: io.TeeReader(&io.LimitedReader{R: reader, N: payloadLen}, h), + hash: h, + payloadLen: payloadLen, + } +} + +func (v *md5ValidationReader) Read(p []byte) (n int, err error) { + n, err = v.payload.Read(p) + if err != nil && err != io.EOF { + return n, err + } + + v.read += int64(n) + + if err == io.EOF { + if v.read != v.payloadLen { + return n, io.ErrUnexpectedEOF + } + expectSum := make([]byte, md5.Size) + actualSum := make([]byte, md5.Size) + if _, sumReadErr := io.ReadFull(v.rawReader, expectSum); sumReadErr != nil { + return n, sumReadErr + } + actualSum = v.hash.Sum(actualSum[0:0]) + if !bytes.Equal(expectSum, actualSum) { + return n, awserr.New("InvalidChecksum", + fmt.Sprintf("expected MD5 checksum %s, got %s", + hex.EncodeToString(expectSum), + hex.EncodeToString(actualSum), + ), + nil) + } + } + + return n, err +} + +func (v *md5ValidationReader) Close() error { + return v.rawReader.Close() +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/bucket_location.go b/vendor/github.com/aws/aws-sdk-go/service/s3/bucket_location.go new file mode 100644 index 0000000..9ba8a78 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/bucket_location.go @@ -0,0 +1,107 @@ +package s3 + +import ( + "io/ioutil" + "regexp" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/awsutil" + "github.com/aws/aws-sdk-go/aws/request" +) + +var reBucketLocation = regexp.MustCompile(`>([^<>]+)<\/Location`) + +// NormalizeBucketLocation is a utility function which will update the +// passed in value to always be a region ID. Generally this would be used +// with GetBucketLocation API operation. +// +// Replaces empty string with "us-east-1", and "EU" with "eu-west-1". +// +// See http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETlocation.html +// for more information on the values that can be returned. +func NormalizeBucketLocation(loc string) string { + switch loc { + case "": + loc = "us-east-1" + case "EU": + loc = "eu-west-1" + } + + return loc +} + +// NormalizeBucketLocationHandler is a request handler which will update the +// GetBucketLocation's result LocationConstraint value to always be a region ID. +// +// Replaces empty string with "us-east-1", and "EU" with "eu-west-1". +// +// See http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETlocation.html +// for more information on the values that can be returned. +// +// req, result := svc.GetBucketLocationRequest(&s3.GetBucketLocationInput{ +// Bucket: aws.String(bucket), +// }) +// req.Handlers.Unmarshal.PushBackNamed(NormalizeBucketLocationHandler) +// err := req.Send() +var NormalizeBucketLocationHandler = request.NamedHandler{ + Name: "awssdk.s3.NormalizeBucketLocation", + Fn: func(req *request.Request) { + if req.Error != nil { + return + } + + out := req.Data.(*GetBucketLocationOutput) + loc := NormalizeBucketLocation(aws.StringValue(out.LocationConstraint)) + out.LocationConstraint = aws.String(loc) + }, +} + +// WithNormalizeBucketLocation is a request option which will update the +// GetBucketLocation's result LocationConstraint value to always be a region ID. +// +// Replaces empty string with "us-east-1", and "EU" with "eu-west-1". +// +// See http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETlocation.html +// for more information on the values that can be returned. +// +// result, err := svc.GetBucketLocationWithContext(ctx, +// &s3.GetBucketLocationInput{ +// Bucket: aws.String(bucket), +// }, +// s3.WithNormalizeBucketLocation, +// ) +func WithNormalizeBucketLocation(r *request.Request) { + r.Handlers.Unmarshal.PushBackNamed(NormalizeBucketLocationHandler) +} + +func buildGetBucketLocation(r *request.Request) { + if r.DataFilled() { + out := r.Data.(*GetBucketLocationOutput) + b, err := ioutil.ReadAll(r.HTTPResponse.Body) + if err != nil { + r.Error = awserr.New(request.ErrCodeSerialization, + "failed reading response body", err) + return + } + + match := reBucketLocation.FindSubmatch(b) + if len(match) > 1 { + loc := string(match[1]) + out.LocationConstraint = aws.String(loc) + } + } +} + +func populateLocationConstraint(r *request.Request) { + if r.ParamsFilled() && aws.StringValue(r.Config.Region) != "us-east-1" { + in := r.Params.(*CreateBucketInput) + if in.CreateBucketConfiguration == nil { + r.Params = awsutil.CopyOf(r.Params) + in = r.Params.(*CreateBucketInput) + in.CreateBucketConfiguration = &CreateBucketConfiguration{ + LocationConstraint: r.Config.Region, + } + } + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/customizations.go b/vendor/github.com/aws/aws-sdk-go/service/s3/customizations.go new file mode 100644 index 0000000..23d386b --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/customizations.go @@ -0,0 +1,75 @@ +package s3 + +import ( + "github.com/aws/aws-sdk-go/aws/client" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/internal/s3err" +) + +func init() { + initClient = defaultInitClientFn + initRequest = defaultInitRequestFn +} + +func defaultInitClientFn(c *client.Client) { + // Support building custom endpoints based on config + c.Handlers.Build.PushFront(updateEndpointForS3Config) + + // Require SSL when using SSE keys + c.Handlers.Validate.PushBack(validateSSERequiresSSL) + c.Handlers.Build.PushBack(computeSSEKeyMD5) + c.Handlers.Build.PushBack(computeCopySourceSSEKeyMD5) + + // S3 uses custom error unmarshaling logic + c.Handlers.UnmarshalError.Clear() + c.Handlers.UnmarshalError.PushBack(unmarshalError) + c.Handlers.UnmarshalError.PushBackNamed(s3err.RequestFailureWrapperHandler()) +} + +func defaultInitRequestFn(r *request.Request) { + // Add reuest handlers for specific platforms. + // e.g. 100-continue support for PUT requests using Go 1.6 + platformRequestHandlers(r) + + switch r.Operation.Name { + case opPutBucketCors, opPutBucketLifecycle, opPutBucketPolicy, + opPutBucketTagging, opDeleteObjects, opPutBucketLifecycleConfiguration, + opPutObjectLegalHold, opPutObjectRetention, opPutObjectLockConfiguration, + opPutBucketReplication: + // These S3 operations require Content-MD5 to be set + r.Handlers.Build.PushBack(contentMD5) + case opGetBucketLocation: + // GetBucketLocation has custom parsing logic + r.Handlers.Unmarshal.PushFront(buildGetBucketLocation) + case opCreateBucket: + // Auto-populate LocationConstraint with current region + r.Handlers.Validate.PushFront(populateLocationConstraint) + case opCopyObject, opUploadPartCopy, opCompleteMultipartUpload: + r.Handlers.Unmarshal.PushFront(copyMultipartStatusOKUnmarhsalError) + r.Handlers.Unmarshal.PushBackNamed(s3err.RequestFailureWrapperHandler()) + case opPutObject, opUploadPart: + r.Handlers.Build.PushBack(computeBodyHashes) + // Disabled until #1837 root issue is resolved. + // case opGetObject: + // r.Handlers.Build.PushBack(askForTxEncodingAppendMD5) + // r.Handlers.Unmarshal.PushBack(useMD5ValidationReader) + } +} + +// bucketGetter is an accessor interface to grab the "Bucket" field from +// an S3 type. +type bucketGetter interface { + getBucket() string +} + +// sseCustomerKeyGetter is an accessor interface to grab the "SSECustomerKey" +// field from an S3 type. +type sseCustomerKeyGetter interface { + getSSECustomerKey() string +} + +// copySourceSSECustomerKeyGetter is an accessor interface to grab the +// "CopySourceSSECustomerKey" field from an S3 type. +type copySourceSSECustomerKeyGetter interface { + getCopySourceSSECustomerKey() string +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/doc.go b/vendor/github.com/aws/aws-sdk-go/service/s3/doc.go new file mode 100644 index 0000000..0def022 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/doc.go @@ -0,0 +1,26 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +// Package s3 provides the client and types for making API +// requests to Amazon Simple Storage Service. +// +// See https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01 for more information on this service. +// +// See s3 package documentation for more information. +// https://docs.aws.amazon.com/sdk-for-go/api/service/s3/ +// +// Using the Client +// +// To contact Amazon Simple Storage Service with the SDK use the New function to create +// a new service client. With that client you can make API requests to the service. +// These clients are safe to use concurrently. +// +// See the SDK's documentation for more information on how to use the SDK. +// https://docs.aws.amazon.com/sdk-for-go/api/ +// +// See aws.Config documentation for more information on configuring SDK clients. +// https://docs.aws.amazon.com/sdk-for-go/api/aws/#Config +// +// See the Amazon Simple Storage Service client S3 for more +// information on creating client for this service. +// https://docs.aws.amazon.com/sdk-for-go/api/service/s3/#New +package s3 diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/doc_custom.go b/vendor/github.com/aws/aws-sdk-go/service/s3/doc_custom.go new file mode 100644 index 0000000..4b65f71 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/doc_custom.go @@ -0,0 +1,123 @@ +// Upload Managers +// +// The s3manager package's Uploader provides concurrent upload of content to S3 +// by taking advantage of S3's Multipart APIs. The Uploader also supports both +// io.Reader for streaming uploads, and will also take advantage of io.ReadSeeker +// for optimizations if the Body satisfies that type. Once the Uploader instance +// is created you can call Upload concurrently from multiple goroutines safely. +// +// // The session the S3 Uploader will use +// sess := session.Must(session.NewSession()) +// +// // Create an uploader with the session and default options +// uploader := s3manager.NewUploader(sess) +// +// f, err := os.Open(filename) +// if err != nil { +// return fmt.Errorf("failed to open file %q, %v", filename, err) +// } +// +// // Upload the file to S3. +// result, err := uploader.Upload(&s3manager.UploadInput{ +// Bucket: aws.String(myBucket), +// Key: aws.String(myString), +// Body: f, +// }) +// if err != nil { +// return fmt.Errorf("failed to upload file, %v", err) +// } +// fmt.Printf("file uploaded to, %s\n", aws.StringValue(result.Location)) +// +// See the s3manager package's Uploader type documentation for more information. +// https://docs.aws.amazon.com/sdk-for-go/api/service/s3/s3manager/#Uploader +// +// Download Manager +// +// The s3manager package's Downloader provides concurrently downloading of Objects +// from S3. The Downloader will write S3 Object content with an io.WriterAt. +// Once the Downloader instance is created you can call Download concurrently from +// multiple goroutines safely. +// +// // The session the S3 Downloader will use +// sess := session.Must(session.NewSession()) +// +// // Create a downloader with the session and default options +// downloader := s3manager.NewDownloader(sess) +// +// // Create a file to write the S3 Object contents to. +// f, err := os.Create(filename) +// if err != nil { +// return fmt.Errorf("failed to create file %q, %v", filename, err) +// } +// +// // Write the contents of S3 Object to the file +// n, err := downloader.Download(f, &s3.GetObjectInput{ +// Bucket: aws.String(myBucket), +// Key: aws.String(myString), +// }) +// if err != nil { +// return fmt.Errorf("failed to download file, %v", err) +// } +// fmt.Printf("file downloaded, %d bytes\n", n) +// +// See the s3manager package's Downloader type documentation for more information. +// https://docs.aws.amazon.com/sdk-for-go/api/service/s3/s3manager/#Downloader +// +// Automatic URI cleaning +// +// Interacting with objects whose keys contain adjacent slashes (e.g. bucketname/foo//bar/objectname) +// requires setting DisableRestProtocolURICleaning to true in the aws.Config struct +// used by the service client. +// +// svc := s3.New(sess, &aws.Config{ +// DisableRestProtocolURICleaning: aws.Bool(true), +// }) +// out, err := svc.GetObject(&s3.GetObjectInput { +// Bucket: aws.String("bucketname"), +// Key: aws.String("//foo//bar//moo"), +// }) +// +// Get Bucket Region +// +// GetBucketRegion will attempt to get the region for a bucket using a region +// hint to determine which AWS partition to perform the query on. Use this utility +// to determine the region a bucket is in. +// +// sess := session.Must(session.NewSession()) +// +// bucket := "my-bucket" +// region, err := s3manager.GetBucketRegion(ctx, sess, bucket, "us-west-2") +// if err != nil { +// if aerr, ok := err.(awserr.Error); ok && aerr.Code() == "NotFound" { +// fmt.Fprintf(os.Stderr, "unable to find bucket %s's region not found\n", bucket) +// } +// return err +// } +// fmt.Printf("Bucket %s is in %s region\n", bucket, region) +// +// See the s3manager package's GetBucketRegion function documentation for more information +// https://docs.aws.amazon.com/sdk-for-go/api/service/s3/s3manager/#GetBucketRegion +// +// S3 Crypto Client +// +// The s3crypto package provides the tools to upload and download encrypted +// content from S3. The Encryption and Decryption clients can be used concurrently +// once the client is created. +// +// sess := session.Must(session.NewSession()) +// +// // Create the decryption client. +// svc := s3crypto.NewDecryptionClient(sess) +// +// // The object will be downloaded from S3 and decrypted locally. By metadata +// // about the object's encryption will instruct the decryption client how +// // decrypt the content of the object. By default KMS is used for keys. +// result, err := svc.GetObject(&s3.GetObjectInput { +// Bucket: aws.String(myBucket), +// Key: aws.String(myKey), +// }) +// +// See the s3crypto package documentation for more information. +// https://docs.aws.amazon.com/sdk-for-go/api/service/s3/s3crypto/ +// +package s3 diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/errors.go b/vendor/github.com/aws/aws-sdk-go/service/s3/errors.go new file mode 100644 index 0000000..4db9070 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/errors.go @@ -0,0 +1,54 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +package s3 + +const ( + + // ErrCodeBucketAlreadyExists for service response error code + // "BucketAlreadyExists". + // + // The requested bucket name is not available. The bucket namespace is shared + // by all users of the system. Please select a different name and try again. + ErrCodeBucketAlreadyExists = "BucketAlreadyExists" + + // ErrCodeBucketAlreadyOwnedByYou for service response error code + // "BucketAlreadyOwnedByYou". + // + // The bucket you tried to create already exists, and you own it. Amazon S3 + // returns this error in all AWS Regions except in the North Virginia region. + // For legacy compatibility, if you re-create an existing bucket that you already + // own in the North Virginia region, Amazon S3 returns 200 OK and resets the + // bucket access control lists (ACLs). + ErrCodeBucketAlreadyOwnedByYou = "BucketAlreadyOwnedByYou" + + // ErrCodeNoSuchBucket for service response error code + // "NoSuchBucket". + // + // The specified bucket does not exist. + ErrCodeNoSuchBucket = "NoSuchBucket" + + // ErrCodeNoSuchKey for service response error code + // "NoSuchKey". + // + // The specified key does not exist. + ErrCodeNoSuchKey = "NoSuchKey" + + // ErrCodeNoSuchUpload for service response error code + // "NoSuchUpload". + // + // The specified multipart upload does not exist. + ErrCodeNoSuchUpload = "NoSuchUpload" + + // ErrCodeObjectAlreadyInActiveTierError for service response error code + // "ObjectAlreadyInActiveTierError". + // + // This operation is not allowed against this storage tier + ErrCodeObjectAlreadyInActiveTierError = "ObjectAlreadyInActiveTierError" + + // ErrCodeObjectNotInActiveTierError for service response error code + // "ObjectNotInActiveTierError". + // + // The source object of the COPY operation is not in the active tier and is + // only stored in Amazon Glacier. + ErrCodeObjectNotInActiveTierError = "ObjectNotInActiveTierError" +) diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/host_style_bucket.go b/vendor/github.com/aws/aws-sdk-go/service/s3/host_style_bucket.go new file mode 100644 index 0000000..a7fbc2d --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/host_style_bucket.go @@ -0,0 +1,155 @@ +package s3 + +import ( + "fmt" + "net/url" + "regexp" + "strings" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/request" +) + +// an operationBlacklist is a list of operation names that should a +// request handler should not be executed with. +type operationBlacklist []string + +// Continue will return true of the Request's operation name is not +// in the blacklist. False otherwise. +func (b operationBlacklist) Continue(r *request.Request) bool { + for i := 0; i < len(b); i++ { + if b[i] == r.Operation.Name { + return false + } + } + return true +} + +var accelerateOpBlacklist = operationBlacklist{ + opListBuckets, opCreateBucket, opDeleteBucket, +} + +// Request handler to automatically add the bucket name to the endpoint domain +// if possible. This style of bucket is valid for all bucket names which are +// DNS compatible and do not contain "." +func updateEndpointForS3Config(r *request.Request) { + forceHostStyle := aws.BoolValue(r.Config.S3ForcePathStyle) + accelerate := aws.BoolValue(r.Config.S3UseAccelerate) + + if accelerate && accelerateOpBlacklist.Continue(r) { + if forceHostStyle { + if r.Config.Logger != nil { + r.Config.Logger.Log("ERROR: aws.Config.S3UseAccelerate is not compatible with aws.Config.S3ForcePathStyle, ignoring S3ForcePathStyle.") + } + } + updateEndpointForAccelerate(r) + } else if !forceHostStyle && r.Operation.Name != opGetBucketLocation { + updateEndpointForHostStyle(r) + } +} + +func updateEndpointForHostStyle(r *request.Request) { + bucket, ok := bucketNameFromReqParams(r.Params) + if !ok { + // Ignore operation requests if the bucketname was not provided + // if this is an input validation error the validation handler + // will report it. + return + } + + if !hostCompatibleBucketName(r.HTTPRequest.URL, bucket) { + // bucket name must be valid to put into the host + return + } + + moveBucketToHost(r.HTTPRequest.URL, bucket) +} + +var ( + accelElem = []byte("s3-accelerate.dualstack.") +) + +func updateEndpointForAccelerate(r *request.Request) { + bucket, ok := bucketNameFromReqParams(r.Params) + if !ok { + // Ignore operation requests if the bucketname was not provided + // if this is an input validation error the validation handler + // will report it. + return + } + + if !hostCompatibleBucketName(r.HTTPRequest.URL, bucket) { + r.Error = awserr.New("InvalidParameterException", + fmt.Sprintf("bucket name %s is not compatible with S3 Accelerate", bucket), + nil) + return + } + + parts := strings.Split(r.HTTPRequest.URL.Host, ".") + if len(parts) < 3 { + r.Error = awserr.New("InvalidParameterExecption", + fmt.Sprintf("unable to update endpoint host for S3 accelerate, hostname invalid, %s", + r.HTTPRequest.URL.Host), nil) + return + } + + if parts[0] == "s3" || strings.HasPrefix(parts[0], "s3-") { + parts[0] = "s3-accelerate" + } + for i := 1; i+1 < len(parts); i++ { + if parts[i] == aws.StringValue(r.Config.Region) { + parts = append(parts[:i], parts[i+1:]...) + break + } + } + + r.HTTPRequest.URL.Host = strings.Join(parts, ".") + + moveBucketToHost(r.HTTPRequest.URL, bucket) +} + +// Attempts to retrieve the bucket name from the request input parameters. +// If no bucket is found, or the field is empty "", false will be returned. +func bucketNameFromReqParams(params interface{}) (string, bool) { + if iface, ok := params.(bucketGetter); ok { + b := iface.getBucket() + return b, len(b) > 0 + } + + return "", false +} + +// hostCompatibleBucketName returns true if the request should +// put the bucket in the host. This is false if S3ForcePathStyle is +// explicitly set or if the bucket is not DNS compatible. +func hostCompatibleBucketName(u *url.URL, bucket string) bool { + // Bucket might be DNS compatible but dots in the hostname will fail + // certificate validation, so do not use host-style. + if u.Scheme == "https" && strings.Contains(bucket, ".") { + return false + } + + // if the bucket is DNS compatible + return dnsCompatibleBucketName(bucket) +} + +var reDomain = regexp.MustCompile(`^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$`) +var reIPAddress = regexp.MustCompile(`^(\d+\.){3}\d+$`) + +// dnsCompatibleBucketName returns true if the bucket name is DNS compatible. +// Buckets created outside of the classic region MUST be DNS compatible. +func dnsCompatibleBucketName(bucket string) bool { + return reDomain.MatchString(bucket) && + !reIPAddress.MatchString(bucket) && + !strings.Contains(bucket, "..") +} + +// moveBucketToHost moves the bucket name from the URI path to URL host. +func moveBucketToHost(u *url.URL, bucket string) { + u.Host = bucket + "." + u.Host + u.Path = strings.Replace(u.Path, "/{Bucket}", "", -1) + if u.Path == "" { + u.Path = "/" + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/platform_handlers.go b/vendor/github.com/aws/aws-sdk-go/service/s3/platform_handlers.go new file mode 100644 index 0000000..8e6f330 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/platform_handlers.go @@ -0,0 +1,8 @@ +// +build !go1.6 + +package s3 + +import "github.com/aws/aws-sdk-go/aws/request" + +func platformRequestHandlers(r *request.Request) { +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/platform_handlers_go1.6.go b/vendor/github.com/aws/aws-sdk-go/service/s3/platform_handlers_go1.6.go new file mode 100644 index 0000000..14d05f7 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/platform_handlers_go1.6.go @@ -0,0 +1,28 @@ +// +build go1.6 + +package s3 + +import ( + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/request" +) + +func platformRequestHandlers(r *request.Request) { + if r.Operation.HTTPMethod == "PUT" { + // 100-Continue should only be used on put requests. + r.Handlers.Sign.PushBack(add100Continue) + } +} + +func add100Continue(r *request.Request) { + if aws.BoolValue(r.Config.S3Disable100Continue) { + return + } + if r.HTTPRequest.ContentLength < 1024*1024*2 { + // Ignore requests smaller than 2MB. This helps prevent delaying + // requests unnecessarily. + return + } + + r.HTTPRequest.Header.Set("Expect", "100-Continue") +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/s3iface/interface.go b/vendor/github.com/aws/aws-sdk-go/service/s3/s3iface/interface.go new file mode 100644 index 0000000..2646a42 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/s3iface/interface.go @@ -0,0 +1,443 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +// Package s3iface provides an interface to enable mocking the Amazon Simple Storage Service service client +// for testing your code. +// +// It is important to note that this interface will have breaking changes +// when the service model is updated and adds new API operations, paginators, +// and waiters. +package s3iface + +import ( + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/service/s3" +) + +// S3API provides an interface to enable mocking the +// s3.S3 service client's API operation, +// paginators, and waiters. This make unit testing your code that calls out +// to the SDK's service client's calls easier. +// +// The best way to use this interface is so the SDK's service client's calls +// can be stubbed out for unit testing your code with the SDK without needing +// to inject custom request handlers into the SDK's request pipeline. +// +// // myFunc uses an SDK service client to make a request to +// // Amazon Simple Storage Service. +// func myFunc(svc s3iface.S3API) bool { +// // Make svc.AbortMultipartUpload request +// } +// +// func main() { +// sess := session.New() +// svc := s3.New(sess) +// +// myFunc(svc) +// } +// +// In your _test.go file: +// +// // Define a mock struct to be used in your unit tests of myFunc. +// type mockS3Client struct { +// s3iface.S3API +// } +// func (m *mockS3Client) AbortMultipartUpload(input *s3.AbortMultipartUploadInput) (*s3.AbortMultipartUploadOutput, error) { +// // mock response/functionality +// } +// +// func TestMyFunc(t *testing.T) { +// // Setup Test +// mockSvc := &mockS3Client{} +// +// myfunc(mockSvc) +// +// // Verify myFunc's functionality +// } +// +// It is important to note that this interface will have breaking changes +// when the service model is updated and adds new API operations, paginators, +// and waiters. Its suggested to use the pattern above for testing, or using +// tooling to generate mocks to satisfy the interfaces. +type S3API interface { + AbortMultipartUpload(*s3.AbortMultipartUploadInput) (*s3.AbortMultipartUploadOutput, error) + AbortMultipartUploadWithContext(aws.Context, *s3.AbortMultipartUploadInput, ...request.Option) (*s3.AbortMultipartUploadOutput, error) + AbortMultipartUploadRequest(*s3.AbortMultipartUploadInput) (*request.Request, *s3.AbortMultipartUploadOutput) + + CompleteMultipartUpload(*s3.CompleteMultipartUploadInput) (*s3.CompleteMultipartUploadOutput, error) + CompleteMultipartUploadWithContext(aws.Context, *s3.CompleteMultipartUploadInput, ...request.Option) (*s3.CompleteMultipartUploadOutput, error) + CompleteMultipartUploadRequest(*s3.CompleteMultipartUploadInput) (*request.Request, *s3.CompleteMultipartUploadOutput) + + CopyObject(*s3.CopyObjectInput) (*s3.CopyObjectOutput, error) + CopyObjectWithContext(aws.Context, *s3.CopyObjectInput, ...request.Option) (*s3.CopyObjectOutput, error) + CopyObjectRequest(*s3.CopyObjectInput) (*request.Request, *s3.CopyObjectOutput) + + CreateBucket(*s3.CreateBucketInput) (*s3.CreateBucketOutput, error) + CreateBucketWithContext(aws.Context, *s3.CreateBucketInput, ...request.Option) (*s3.CreateBucketOutput, error) + CreateBucketRequest(*s3.CreateBucketInput) (*request.Request, *s3.CreateBucketOutput) + + CreateMultipartUpload(*s3.CreateMultipartUploadInput) (*s3.CreateMultipartUploadOutput, error) + CreateMultipartUploadWithContext(aws.Context, *s3.CreateMultipartUploadInput, ...request.Option) (*s3.CreateMultipartUploadOutput, error) + CreateMultipartUploadRequest(*s3.CreateMultipartUploadInput) (*request.Request, *s3.CreateMultipartUploadOutput) + + DeleteBucket(*s3.DeleteBucketInput) (*s3.DeleteBucketOutput, error) + DeleteBucketWithContext(aws.Context, *s3.DeleteBucketInput, ...request.Option) (*s3.DeleteBucketOutput, error) + DeleteBucketRequest(*s3.DeleteBucketInput) (*request.Request, *s3.DeleteBucketOutput) + + DeleteBucketAnalyticsConfiguration(*s3.DeleteBucketAnalyticsConfigurationInput) (*s3.DeleteBucketAnalyticsConfigurationOutput, error) + DeleteBucketAnalyticsConfigurationWithContext(aws.Context, *s3.DeleteBucketAnalyticsConfigurationInput, ...request.Option) (*s3.DeleteBucketAnalyticsConfigurationOutput, error) + DeleteBucketAnalyticsConfigurationRequest(*s3.DeleteBucketAnalyticsConfigurationInput) (*request.Request, *s3.DeleteBucketAnalyticsConfigurationOutput) + + DeleteBucketCors(*s3.DeleteBucketCorsInput) (*s3.DeleteBucketCorsOutput, error) + DeleteBucketCorsWithContext(aws.Context, *s3.DeleteBucketCorsInput, ...request.Option) (*s3.DeleteBucketCorsOutput, error) + DeleteBucketCorsRequest(*s3.DeleteBucketCorsInput) (*request.Request, *s3.DeleteBucketCorsOutput) + + DeleteBucketEncryption(*s3.DeleteBucketEncryptionInput) (*s3.DeleteBucketEncryptionOutput, error) + DeleteBucketEncryptionWithContext(aws.Context, *s3.DeleteBucketEncryptionInput, ...request.Option) (*s3.DeleteBucketEncryptionOutput, error) + DeleteBucketEncryptionRequest(*s3.DeleteBucketEncryptionInput) (*request.Request, *s3.DeleteBucketEncryptionOutput) + + DeleteBucketInventoryConfiguration(*s3.DeleteBucketInventoryConfigurationInput) (*s3.DeleteBucketInventoryConfigurationOutput, error) + DeleteBucketInventoryConfigurationWithContext(aws.Context, *s3.DeleteBucketInventoryConfigurationInput, ...request.Option) (*s3.DeleteBucketInventoryConfigurationOutput, error) + DeleteBucketInventoryConfigurationRequest(*s3.DeleteBucketInventoryConfigurationInput) (*request.Request, *s3.DeleteBucketInventoryConfigurationOutput) + + DeleteBucketLifecycle(*s3.DeleteBucketLifecycleInput) (*s3.DeleteBucketLifecycleOutput, error) + DeleteBucketLifecycleWithContext(aws.Context, *s3.DeleteBucketLifecycleInput, ...request.Option) (*s3.DeleteBucketLifecycleOutput, error) + DeleteBucketLifecycleRequest(*s3.DeleteBucketLifecycleInput) (*request.Request, *s3.DeleteBucketLifecycleOutput) + + DeleteBucketMetricsConfiguration(*s3.DeleteBucketMetricsConfigurationInput) (*s3.DeleteBucketMetricsConfigurationOutput, error) + DeleteBucketMetricsConfigurationWithContext(aws.Context, *s3.DeleteBucketMetricsConfigurationInput, ...request.Option) (*s3.DeleteBucketMetricsConfigurationOutput, error) + DeleteBucketMetricsConfigurationRequest(*s3.DeleteBucketMetricsConfigurationInput) (*request.Request, *s3.DeleteBucketMetricsConfigurationOutput) + + DeleteBucketPolicy(*s3.DeleteBucketPolicyInput) (*s3.DeleteBucketPolicyOutput, error) + DeleteBucketPolicyWithContext(aws.Context, *s3.DeleteBucketPolicyInput, ...request.Option) (*s3.DeleteBucketPolicyOutput, error) + DeleteBucketPolicyRequest(*s3.DeleteBucketPolicyInput) (*request.Request, *s3.DeleteBucketPolicyOutput) + + DeleteBucketReplication(*s3.DeleteBucketReplicationInput) (*s3.DeleteBucketReplicationOutput, error) + DeleteBucketReplicationWithContext(aws.Context, *s3.DeleteBucketReplicationInput, ...request.Option) (*s3.DeleteBucketReplicationOutput, error) + DeleteBucketReplicationRequest(*s3.DeleteBucketReplicationInput) (*request.Request, *s3.DeleteBucketReplicationOutput) + + DeleteBucketTagging(*s3.DeleteBucketTaggingInput) (*s3.DeleteBucketTaggingOutput, error) + DeleteBucketTaggingWithContext(aws.Context, *s3.DeleteBucketTaggingInput, ...request.Option) (*s3.DeleteBucketTaggingOutput, error) + DeleteBucketTaggingRequest(*s3.DeleteBucketTaggingInput) (*request.Request, *s3.DeleteBucketTaggingOutput) + + DeleteBucketWebsite(*s3.DeleteBucketWebsiteInput) (*s3.DeleteBucketWebsiteOutput, error) + DeleteBucketWebsiteWithContext(aws.Context, *s3.DeleteBucketWebsiteInput, ...request.Option) (*s3.DeleteBucketWebsiteOutput, error) + DeleteBucketWebsiteRequest(*s3.DeleteBucketWebsiteInput) (*request.Request, *s3.DeleteBucketWebsiteOutput) + + DeleteObject(*s3.DeleteObjectInput) (*s3.DeleteObjectOutput, error) + DeleteObjectWithContext(aws.Context, *s3.DeleteObjectInput, ...request.Option) (*s3.DeleteObjectOutput, error) + DeleteObjectRequest(*s3.DeleteObjectInput) (*request.Request, *s3.DeleteObjectOutput) + + DeleteObjectTagging(*s3.DeleteObjectTaggingInput) (*s3.DeleteObjectTaggingOutput, error) + DeleteObjectTaggingWithContext(aws.Context, *s3.DeleteObjectTaggingInput, ...request.Option) (*s3.DeleteObjectTaggingOutput, error) + DeleteObjectTaggingRequest(*s3.DeleteObjectTaggingInput) (*request.Request, *s3.DeleteObjectTaggingOutput) + + DeleteObjects(*s3.DeleteObjectsInput) (*s3.DeleteObjectsOutput, error) + DeleteObjectsWithContext(aws.Context, *s3.DeleteObjectsInput, ...request.Option) (*s3.DeleteObjectsOutput, error) + DeleteObjectsRequest(*s3.DeleteObjectsInput) (*request.Request, *s3.DeleteObjectsOutput) + + DeletePublicAccessBlock(*s3.DeletePublicAccessBlockInput) (*s3.DeletePublicAccessBlockOutput, error) + DeletePublicAccessBlockWithContext(aws.Context, *s3.DeletePublicAccessBlockInput, ...request.Option) (*s3.DeletePublicAccessBlockOutput, error) + DeletePublicAccessBlockRequest(*s3.DeletePublicAccessBlockInput) (*request.Request, *s3.DeletePublicAccessBlockOutput) + + GetBucketAccelerateConfiguration(*s3.GetBucketAccelerateConfigurationInput) (*s3.GetBucketAccelerateConfigurationOutput, error) + GetBucketAccelerateConfigurationWithContext(aws.Context, *s3.GetBucketAccelerateConfigurationInput, ...request.Option) (*s3.GetBucketAccelerateConfigurationOutput, error) + GetBucketAccelerateConfigurationRequest(*s3.GetBucketAccelerateConfigurationInput) (*request.Request, *s3.GetBucketAccelerateConfigurationOutput) + + GetBucketAcl(*s3.GetBucketAclInput) (*s3.GetBucketAclOutput, error) + GetBucketAclWithContext(aws.Context, *s3.GetBucketAclInput, ...request.Option) (*s3.GetBucketAclOutput, error) + GetBucketAclRequest(*s3.GetBucketAclInput) (*request.Request, *s3.GetBucketAclOutput) + + GetBucketAnalyticsConfiguration(*s3.GetBucketAnalyticsConfigurationInput) (*s3.GetBucketAnalyticsConfigurationOutput, error) + GetBucketAnalyticsConfigurationWithContext(aws.Context, *s3.GetBucketAnalyticsConfigurationInput, ...request.Option) (*s3.GetBucketAnalyticsConfigurationOutput, error) + GetBucketAnalyticsConfigurationRequest(*s3.GetBucketAnalyticsConfigurationInput) (*request.Request, *s3.GetBucketAnalyticsConfigurationOutput) + + GetBucketCors(*s3.GetBucketCorsInput) (*s3.GetBucketCorsOutput, error) + GetBucketCorsWithContext(aws.Context, *s3.GetBucketCorsInput, ...request.Option) (*s3.GetBucketCorsOutput, error) + GetBucketCorsRequest(*s3.GetBucketCorsInput) (*request.Request, *s3.GetBucketCorsOutput) + + GetBucketEncryption(*s3.GetBucketEncryptionInput) (*s3.GetBucketEncryptionOutput, error) + GetBucketEncryptionWithContext(aws.Context, *s3.GetBucketEncryptionInput, ...request.Option) (*s3.GetBucketEncryptionOutput, error) + GetBucketEncryptionRequest(*s3.GetBucketEncryptionInput) (*request.Request, *s3.GetBucketEncryptionOutput) + + GetBucketInventoryConfiguration(*s3.GetBucketInventoryConfigurationInput) (*s3.GetBucketInventoryConfigurationOutput, error) + GetBucketInventoryConfigurationWithContext(aws.Context, *s3.GetBucketInventoryConfigurationInput, ...request.Option) (*s3.GetBucketInventoryConfigurationOutput, error) + GetBucketInventoryConfigurationRequest(*s3.GetBucketInventoryConfigurationInput) (*request.Request, *s3.GetBucketInventoryConfigurationOutput) + + GetBucketLifecycle(*s3.GetBucketLifecycleInput) (*s3.GetBucketLifecycleOutput, error) + GetBucketLifecycleWithContext(aws.Context, *s3.GetBucketLifecycleInput, ...request.Option) (*s3.GetBucketLifecycleOutput, error) + GetBucketLifecycleRequest(*s3.GetBucketLifecycleInput) (*request.Request, *s3.GetBucketLifecycleOutput) + + GetBucketLifecycleConfiguration(*s3.GetBucketLifecycleConfigurationInput) (*s3.GetBucketLifecycleConfigurationOutput, error) + GetBucketLifecycleConfigurationWithContext(aws.Context, *s3.GetBucketLifecycleConfigurationInput, ...request.Option) (*s3.GetBucketLifecycleConfigurationOutput, error) + GetBucketLifecycleConfigurationRequest(*s3.GetBucketLifecycleConfigurationInput) (*request.Request, *s3.GetBucketLifecycleConfigurationOutput) + + GetBucketLocation(*s3.GetBucketLocationInput) (*s3.GetBucketLocationOutput, error) + GetBucketLocationWithContext(aws.Context, *s3.GetBucketLocationInput, ...request.Option) (*s3.GetBucketLocationOutput, error) + GetBucketLocationRequest(*s3.GetBucketLocationInput) (*request.Request, *s3.GetBucketLocationOutput) + + GetBucketLogging(*s3.GetBucketLoggingInput) (*s3.GetBucketLoggingOutput, error) + GetBucketLoggingWithContext(aws.Context, *s3.GetBucketLoggingInput, ...request.Option) (*s3.GetBucketLoggingOutput, error) + GetBucketLoggingRequest(*s3.GetBucketLoggingInput) (*request.Request, *s3.GetBucketLoggingOutput) + + GetBucketMetricsConfiguration(*s3.GetBucketMetricsConfigurationInput) (*s3.GetBucketMetricsConfigurationOutput, error) + GetBucketMetricsConfigurationWithContext(aws.Context, *s3.GetBucketMetricsConfigurationInput, ...request.Option) (*s3.GetBucketMetricsConfigurationOutput, error) + GetBucketMetricsConfigurationRequest(*s3.GetBucketMetricsConfigurationInput) (*request.Request, *s3.GetBucketMetricsConfigurationOutput) + + GetBucketNotification(*s3.GetBucketNotificationConfigurationRequest) (*s3.NotificationConfigurationDeprecated, error) + GetBucketNotificationWithContext(aws.Context, *s3.GetBucketNotificationConfigurationRequest, ...request.Option) (*s3.NotificationConfigurationDeprecated, error) + GetBucketNotificationRequest(*s3.GetBucketNotificationConfigurationRequest) (*request.Request, *s3.NotificationConfigurationDeprecated) + + GetBucketNotificationConfiguration(*s3.GetBucketNotificationConfigurationRequest) (*s3.NotificationConfiguration, error) + GetBucketNotificationConfigurationWithContext(aws.Context, *s3.GetBucketNotificationConfigurationRequest, ...request.Option) (*s3.NotificationConfiguration, error) + GetBucketNotificationConfigurationRequest(*s3.GetBucketNotificationConfigurationRequest) (*request.Request, *s3.NotificationConfiguration) + + GetBucketPolicy(*s3.GetBucketPolicyInput) (*s3.GetBucketPolicyOutput, error) + GetBucketPolicyWithContext(aws.Context, *s3.GetBucketPolicyInput, ...request.Option) (*s3.GetBucketPolicyOutput, error) + GetBucketPolicyRequest(*s3.GetBucketPolicyInput) (*request.Request, *s3.GetBucketPolicyOutput) + + GetBucketPolicyStatus(*s3.GetBucketPolicyStatusInput) (*s3.GetBucketPolicyStatusOutput, error) + GetBucketPolicyStatusWithContext(aws.Context, *s3.GetBucketPolicyStatusInput, ...request.Option) (*s3.GetBucketPolicyStatusOutput, error) + GetBucketPolicyStatusRequest(*s3.GetBucketPolicyStatusInput) (*request.Request, *s3.GetBucketPolicyStatusOutput) + + GetBucketReplication(*s3.GetBucketReplicationInput) (*s3.GetBucketReplicationOutput, error) + GetBucketReplicationWithContext(aws.Context, *s3.GetBucketReplicationInput, ...request.Option) (*s3.GetBucketReplicationOutput, error) + GetBucketReplicationRequest(*s3.GetBucketReplicationInput) (*request.Request, *s3.GetBucketReplicationOutput) + + GetBucketRequestPayment(*s3.GetBucketRequestPaymentInput) (*s3.GetBucketRequestPaymentOutput, error) + GetBucketRequestPaymentWithContext(aws.Context, *s3.GetBucketRequestPaymentInput, ...request.Option) (*s3.GetBucketRequestPaymentOutput, error) + GetBucketRequestPaymentRequest(*s3.GetBucketRequestPaymentInput) (*request.Request, *s3.GetBucketRequestPaymentOutput) + + GetBucketTagging(*s3.GetBucketTaggingInput) (*s3.GetBucketTaggingOutput, error) + GetBucketTaggingWithContext(aws.Context, *s3.GetBucketTaggingInput, ...request.Option) (*s3.GetBucketTaggingOutput, error) + GetBucketTaggingRequest(*s3.GetBucketTaggingInput) (*request.Request, *s3.GetBucketTaggingOutput) + + GetBucketVersioning(*s3.GetBucketVersioningInput) (*s3.GetBucketVersioningOutput, error) + GetBucketVersioningWithContext(aws.Context, *s3.GetBucketVersioningInput, ...request.Option) (*s3.GetBucketVersioningOutput, error) + GetBucketVersioningRequest(*s3.GetBucketVersioningInput) (*request.Request, *s3.GetBucketVersioningOutput) + + GetBucketWebsite(*s3.GetBucketWebsiteInput) (*s3.GetBucketWebsiteOutput, error) + GetBucketWebsiteWithContext(aws.Context, *s3.GetBucketWebsiteInput, ...request.Option) (*s3.GetBucketWebsiteOutput, error) + GetBucketWebsiteRequest(*s3.GetBucketWebsiteInput) (*request.Request, *s3.GetBucketWebsiteOutput) + + GetObject(*s3.GetObjectInput) (*s3.GetObjectOutput, error) + GetObjectWithContext(aws.Context, *s3.GetObjectInput, ...request.Option) (*s3.GetObjectOutput, error) + GetObjectRequest(*s3.GetObjectInput) (*request.Request, *s3.GetObjectOutput) + + GetObjectAcl(*s3.GetObjectAclInput) (*s3.GetObjectAclOutput, error) + GetObjectAclWithContext(aws.Context, *s3.GetObjectAclInput, ...request.Option) (*s3.GetObjectAclOutput, error) + GetObjectAclRequest(*s3.GetObjectAclInput) (*request.Request, *s3.GetObjectAclOutput) + + GetObjectLegalHold(*s3.GetObjectLegalHoldInput) (*s3.GetObjectLegalHoldOutput, error) + GetObjectLegalHoldWithContext(aws.Context, *s3.GetObjectLegalHoldInput, ...request.Option) (*s3.GetObjectLegalHoldOutput, error) + GetObjectLegalHoldRequest(*s3.GetObjectLegalHoldInput) (*request.Request, *s3.GetObjectLegalHoldOutput) + + GetObjectLockConfiguration(*s3.GetObjectLockConfigurationInput) (*s3.GetObjectLockConfigurationOutput, error) + GetObjectLockConfigurationWithContext(aws.Context, *s3.GetObjectLockConfigurationInput, ...request.Option) (*s3.GetObjectLockConfigurationOutput, error) + GetObjectLockConfigurationRequest(*s3.GetObjectLockConfigurationInput) (*request.Request, *s3.GetObjectLockConfigurationOutput) + + GetObjectRetention(*s3.GetObjectRetentionInput) (*s3.GetObjectRetentionOutput, error) + GetObjectRetentionWithContext(aws.Context, *s3.GetObjectRetentionInput, ...request.Option) (*s3.GetObjectRetentionOutput, error) + GetObjectRetentionRequest(*s3.GetObjectRetentionInput) (*request.Request, *s3.GetObjectRetentionOutput) + + GetObjectTagging(*s3.GetObjectTaggingInput) (*s3.GetObjectTaggingOutput, error) + GetObjectTaggingWithContext(aws.Context, *s3.GetObjectTaggingInput, ...request.Option) (*s3.GetObjectTaggingOutput, error) + GetObjectTaggingRequest(*s3.GetObjectTaggingInput) (*request.Request, *s3.GetObjectTaggingOutput) + + GetObjectTorrent(*s3.GetObjectTorrentInput) (*s3.GetObjectTorrentOutput, error) + GetObjectTorrentWithContext(aws.Context, *s3.GetObjectTorrentInput, ...request.Option) (*s3.GetObjectTorrentOutput, error) + GetObjectTorrentRequest(*s3.GetObjectTorrentInput) (*request.Request, *s3.GetObjectTorrentOutput) + + GetPublicAccessBlock(*s3.GetPublicAccessBlockInput) (*s3.GetPublicAccessBlockOutput, error) + GetPublicAccessBlockWithContext(aws.Context, *s3.GetPublicAccessBlockInput, ...request.Option) (*s3.GetPublicAccessBlockOutput, error) + GetPublicAccessBlockRequest(*s3.GetPublicAccessBlockInput) (*request.Request, *s3.GetPublicAccessBlockOutput) + + HeadBucket(*s3.HeadBucketInput) (*s3.HeadBucketOutput, error) + HeadBucketWithContext(aws.Context, *s3.HeadBucketInput, ...request.Option) (*s3.HeadBucketOutput, error) + HeadBucketRequest(*s3.HeadBucketInput) (*request.Request, *s3.HeadBucketOutput) + + HeadObject(*s3.HeadObjectInput) (*s3.HeadObjectOutput, error) + HeadObjectWithContext(aws.Context, *s3.HeadObjectInput, ...request.Option) (*s3.HeadObjectOutput, error) + HeadObjectRequest(*s3.HeadObjectInput) (*request.Request, *s3.HeadObjectOutput) + + ListBucketAnalyticsConfigurations(*s3.ListBucketAnalyticsConfigurationsInput) (*s3.ListBucketAnalyticsConfigurationsOutput, error) + ListBucketAnalyticsConfigurationsWithContext(aws.Context, *s3.ListBucketAnalyticsConfigurationsInput, ...request.Option) (*s3.ListBucketAnalyticsConfigurationsOutput, error) + ListBucketAnalyticsConfigurationsRequest(*s3.ListBucketAnalyticsConfigurationsInput) (*request.Request, *s3.ListBucketAnalyticsConfigurationsOutput) + + ListBucketInventoryConfigurations(*s3.ListBucketInventoryConfigurationsInput) (*s3.ListBucketInventoryConfigurationsOutput, error) + ListBucketInventoryConfigurationsWithContext(aws.Context, *s3.ListBucketInventoryConfigurationsInput, ...request.Option) (*s3.ListBucketInventoryConfigurationsOutput, error) + ListBucketInventoryConfigurationsRequest(*s3.ListBucketInventoryConfigurationsInput) (*request.Request, *s3.ListBucketInventoryConfigurationsOutput) + + ListBucketMetricsConfigurations(*s3.ListBucketMetricsConfigurationsInput) (*s3.ListBucketMetricsConfigurationsOutput, error) + ListBucketMetricsConfigurationsWithContext(aws.Context, *s3.ListBucketMetricsConfigurationsInput, ...request.Option) (*s3.ListBucketMetricsConfigurationsOutput, error) + ListBucketMetricsConfigurationsRequest(*s3.ListBucketMetricsConfigurationsInput) (*request.Request, *s3.ListBucketMetricsConfigurationsOutput) + + ListBuckets(*s3.ListBucketsInput) (*s3.ListBucketsOutput, error) + ListBucketsWithContext(aws.Context, *s3.ListBucketsInput, ...request.Option) (*s3.ListBucketsOutput, error) + ListBucketsRequest(*s3.ListBucketsInput) (*request.Request, *s3.ListBucketsOutput) + + ListMultipartUploads(*s3.ListMultipartUploadsInput) (*s3.ListMultipartUploadsOutput, error) + ListMultipartUploadsWithContext(aws.Context, *s3.ListMultipartUploadsInput, ...request.Option) (*s3.ListMultipartUploadsOutput, error) + ListMultipartUploadsRequest(*s3.ListMultipartUploadsInput) (*request.Request, *s3.ListMultipartUploadsOutput) + + ListMultipartUploadsPages(*s3.ListMultipartUploadsInput, func(*s3.ListMultipartUploadsOutput, bool) bool) error + ListMultipartUploadsPagesWithContext(aws.Context, *s3.ListMultipartUploadsInput, func(*s3.ListMultipartUploadsOutput, bool) bool, ...request.Option) error + + ListObjectVersions(*s3.ListObjectVersionsInput) (*s3.ListObjectVersionsOutput, error) + ListObjectVersionsWithContext(aws.Context, *s3.ListObjectVersionsInput, ...request.Option) (*s3.ListObjectVersionsOutput, error) + ListObjectVersionsRequest(*s3.ListObjectVersionsInput) (*request.Request, *s3.ListObjectVersionsOutput) + + ListObjectVersionsPages(*s3.ListObjectVersionsInput, func(*s3.ListObjectVersionsOutput, bool) bool) error + ListObjectVersionsPagesWithContext(aws.Context, *s3.ListObjectVersionsInput, func(*s3.ListObjectVersionsOutput, bool) bool, ...request.Option) error + + ListObjects(*s3.ListObjectsInput) (*s3.ListObjectsOutput, error) + ListObjectsWithContext(aws.Context, *s3.ListObjectsInput, ...request.Option) (*s3.ListObjectsOutput, error) + ListObjectsRequest(*s3.ListObjectsInput) (*request.Request, *s3.ListObjectsOutput) + + ListObjectsPages(*s3.ListObjectsInput, func(*s3.ListObjectsOutput, bool) bool) error + ListObjectsPagesWithContext(aws.Context, *s3.ListObjectsInput, func(*s3.ListObjectsOutput, bool) bool, ...request.Option) error + + ListObjectsV2(*s3.ListObjectsV2Input) (*s3.ListObjectsV2Output, error) + ListObjectsV2WithContext(aws.Context, *s3.ListObjectsV2Input, ...request.Option) (*s3.ListObjectsV2Output, error) + ListObjectsV2Request(*s3.ListObjectsV2Input) (*request.Request, *s3.ListObjectsV2Output) + + ListObjectsV2Pages(*s3.ListObjectsV2Input, func(*s3.ListObjectsV2Output, bool) bool) error + ListObjectsV2PagesWithContext(aws.Context, *s3.ListObjectsV2Input, func(*s3.ListObjectsV2Output, bool) bool, ...request.Option) error + + ListParts(*s3.ListPartsInput) (*s3.ListPartsOutput, error) + ListPartsWithContext(aws.Context, *s3.ListPartsInput, ...request.Option) (*s3.ListPartsOutput, error) + ListPartsRequest(*s3.ListPartsInput) (*request.Request, *s3.ListPartsOutput) + + ListPartsPages(*s3.ListPartsInput, func(*s3.ListPartsOutput, bool) bool) error + ListPartsPagesWithContext(aws.Context, *s3.ListPartsInput, func(*s3.ListPartsOutput, bool) bool, ...request.Option) error + + PutBucketAccelerateConfiguration(*s3.PutBucketAccelerateConfigurationInput) (*s3.PutBucketAccelerateConfigurationOutput, error) + PutBucketAccelerateConfigurationWithContext(aws.Context, *s3.PutBucketAccelerateConfigurationInput, ...request.Option) (*s3.PutBucketAccelerateConfigurationOutput, error) + PutBucketAccelerateConfigurationRequest(*s3.PutBucketAccelerateConfigurationInput) (*request.Request, *s3.PutBucketAccelerateConfigurationOutput) + + PutBucketAcl(*s3.PutBucketAclInput) (*s3.PutBucketAclOutput, error) + PutBucketAclWithContext(aws.Context, *s3.PutBucketAclInput, ...request.Option) (*s3.PutBucketAclOutput, error) + PutBucketAclRequest(*s3.PutBucketAclInput) (*request.Request, *s3.PutBucketAclOutput) + + PutBucketAnalyticsConfiguration(*s3.PutBucketAnalyticsConfigurationInput) (*s3.PutBucketAnalyticsConfigurationOutput, error) + PutBucketAnalyticsConfigurationWithContext(aws.Context, *s3.PutBucketAnalyticsConfigurationInput, ...request.Option) (*s3.PutBucketAnalyticsConfigurationOutput, error) + PutBucketAnalyticsConfigurationRequest(*s3.PutBucketAnalyticsConfigurationInput) (*request.Request, *s3.PutBucketAnalyticsConfigurationOutput) + + PutBucketCors(*s3.PutBucketCorsInput) (*s3.PutBucketCorsOutput, error) + PutBucketCorsWithContext(aws.Context, *s3.PutBucketCorsInput, ...request.Option) (*s3.PutBucketCorsOutput, error) + PutBucketCorsRequest(*s3.PutBucketCorsInput) (*request.Request, *s3.PutBucketCorsOutput) + + PutBucketEncryption(*s3.PutBucketEncryptionInput) (*s3.PutBucketEncryptionOutput, error) + PutBucketEncryptionWithContext(aws.Context, *s3.PutBucketEncryptionInput, ...request.Option) (*s3.PutBucketEncryptionOutput, error) + PutBucketEncryptionRequest(*s3.PutBucketEncryptionInput) (*request.Request, *s3.PutBucketEncryptionOutput) + + PutBucketInventoryConfiguration(*s3.PutBucketInventoryConfigurationInput) (*s3.PutBucketInventoryConfigurationOutput, error) + PutBucketInventoryConfigurationWithContext(aws.Context, *s3.PutBucketInventoryConfigurationInput, ...request.Option) (*s3.PutBucketInventoryConfigurationOutput, error) + PutBucketInventoryConfigurationRequest(*s3.PutBucketInventoryConfigurationInput) (*request.Request, *s3.PutBucketInventoryConfigurationOutput) + + PutBucketLifecycle(*s3.PutBucketLifecycleInput) (*s3.PutBucketLifecycleOutput, error) + PutBucketLifecycleWithContext(aws.Context, *s3.PutBucketLifecycleInput, ...request.Option) (*s3.PutBucketLifecycleOutput, error) + PutBucketLifecycleRequest(*s3.PutBucketLifecycleInput) (*request.Request, *s3.PutBucketLifecycleOutput) + + PutBucketLifecycleConfiguration(*s3.PutBucketLifecycleConfigurationInput) (*s3.PutBucketLifecycleConfigurationOutput, error) + PutBucketLifecycleConfigurationWithContext(aws.Context, *s3.PutBucketLifecycleConfigurationInput, ...request.Option) (*s3.PutBucketLifecycleConfigurationOutput, error) + PutBucketLifecycleConfigurationRequest(*s3.PutBucketLifecycleConfigurationInput) (*request.Request, *s3.PutBucketLifecycleConfigurationOutput) + + PutBucketLogging(*s3.PutBucketLoggingInput) (*s3.PutBucketLoggingOutput, error) + PutBucketLoggingWithContext(aws.Context, *s3.PutBucketLoggingInput, ...request.Option) (*s3.PutBucketLoggingOutput, error) + PutBucketLoggingRequest(*s3.PutBucketLoggingInput) (*request.Request, *s3.PutBucketLoggingOutput) + + PutBucketMetricsConfiguration(*s3.PutBucketMetricsConfigurationInput) (*s3.PutBucketMetricsConfigurationOutput, error) + PutBucketMetricsConfigurationWithContext(aws.Context, *s3.PutBucketMetricsConfigurationInput, ...request.Option) (*s3.PutBucketMetricsConfigurationOutput, error) + PutBucketMetricsConfigurationRequest(*s3.PutBucketMetricsConfigurationInput) (*request.Request, *s3.PutBucketMetricsConfigurationOutput) + + PutBucketNotification(*s3.PutBucketNotificationInput) (*s3.PutBucketNotificationOutput, error) + PutBucketNotificationWithContext(aws.Context, *s3.PutBucketNotificationInput, ...request.Option) (*s3.PutBucketNotificationOutput, error) + PutBucketNotificationRequest(*s3.PutBucketNotificationInput) (*request.Request, *s3.PutBucketNotificationOutput) + + PutBucketNotificationConfiguration(*s3.PutBucketNotificationConfigurationInput) (*s3.PutBucketNotificationConfigurationOutput, error) + PutBucketNotificationConfigurationWithContext(aws.Context, *s3.PutBucketNotificationConfigurationInput, ...request.Option) (*s3.PutBucketNotificationConfigurationOutput, error) + PutBucketNotificationConfigurationRequest(*s3.PutBucketNotificationConfigurationInput) (*request.Request, *s3.PutBucketNotificationConfigurationOutput) + + PutBucketPolicy(*s3.PutBucketPolicyInput) (*s3.PutBucketPolicyOutput, error) + PutBucketPolicyWithContext(aws.Context, *s3.PutBucketPolicyInput, ...request.Option) (*s3.PutBucketPolicyOutput, error) + PutBucketPolicyRequest(*s3.PutBucketPolicyInput) (*request.Request, *s3.PutBucketPolicyOutput) + + PutBucketReplication(*s3.PutBucketReplicationInput) (*s3.PutBucketReplicationOutput, error) + PutBucketReplicationWithContext(aws.Context, *s3.PutBucketReplicationInput, ...request.Option) (*s3.PutBucketReplicationOutput, error) + PutBucketReplicationRequest(*s3.PutBucketReplicationInput) (*request.Request, *s3.PutBucketReplicationOutput) + + PutBucketRequestPayment(*s3.PutBucketRequestPaymentInput) (*s3.PutBucketRequestPaymentOutput, error) + PutBucketRequestPaymentWithContext(aws.Context, *s3.PutBucketRequestPaymentInput, ...request.Option) (*s3.PutBucketRequestPaymentOutput, error) + PutBucketRequestPaymentRequest(*s3.PutBucketRequestPaymentInput) (*request.Request, *s3.PutBucketRequestPaymentOutput) + + PutBucketTagging(*s3.PutBucketTaggingInput) (*s3.PutBucketTaggingOutput, error) + PutBucketTaggingWithContext(aws.Context, *s3.PutBucketTaggingInput, ...request.Option) (*s3.PutBucketTaggingOutput, error) + PutBucketTaggingRequest(*s3.PutBucketTaggingInput) (*request.Request, *s3.PutBucketTaggingOutput) + + PutBucketVersioning(*s3.PutBucketVersioningInput) (*s3.PutBucketVersioningOutput, error) + PutBucketVersioningWithContext(aws.Context, *s3.PutBucketVersioningInput, ...request.Option) (*s3.PutBucketVersioningOutput, error) + PutBucketVersioningRequest(*s3.PutBucketVersioningInput) (*request.Request, *s3.PutBucketVersioningOutput) + + PutBucketWebsite(*s3.PutBucketWebsiteInput) (*s3.PutBucketWebsiteOutput, error) + PutBucketWebsiteWithContext(aws.Context, *s3.PutBucketWebsiteInput, ...request.Option) (*s3.PutBucketWebsiteOutput, error) + PutBucketWebsiteRequest(*s3.PutBucketWebsiteInput) (*request.Request, *s3.PutBucketWebsiteOutput) + + PutObject(*s3.PutObjectInput) (*s3.PutObjectOutput, error) + PutObjectWithContext(aws.Context, *s3.PutObjectInput, ...request.Option) (*s3.PutObjectOutput, error) + PutObjectRequest(*s3.PutObjectInput) (*request.Request, *s3.PutObjectOutput) + + PutObjectAcl(*s3.PutObjectAclInput) (*s3.PutObjectAclOutput, error) + PutObjectAclWithContext(aws.Context, *s3.PutObjectAclInput, ...request.Option) (*s3.PutObjectAclOutput, error) + PutObjectAclRequest(*s3.PutObjectAclInput) (*request.Request, *s3.PutObjectAclOutput) + + PutObjectLegalHold(*s3.PutObjectLegalHoldInput) (*s3.PutObjectLegalHoldOutput, error) + PutObjectLegalHoldWithContext(aws.Context, *s3.PutObjectLegalHoldInput, ...request.Option) (*s3.PutObjectLegalHoldOutput, error) + PutObjectLegalHoldRequest(*s3.PutObjectLegalHoldInput) (*request.Request, *s3.PutObjectLegalHoldOutput) + + PutObjectLockConfiguration(*s3.PutObjectLockConfigurationInput) (*s3.PutObjectLockConfigurationOutput, error) + PutObjectLockConfigurationWithContext(aws.Context, *s3.PutObjectLockConfigurationInput, ...request.Option) (*s3.PutObjectLockConfigurationOutput, error) + PutObjectLockConfigurationRequest(*s3.PutObjectLockConfigurationInput) (*request.Request, *s3.PutObjectLockConfigurationOutput) + + PutObjectRetention(*s3.PutObjectRetentionInput) (*s3.PutObjectRetentionOutput, error) + PutObjectRetentionWithContext(aws.Context, *s3.PutObjectRetentionInput, ...request.Option) (*s3.PutObjectRetentionOutput, error) + PutObjectRetentionRequest(*s3.PutObjectRetentionInput) (*request.Request, *s3.PutObjectRetentionOutput) + + PutObjectTagging(*s3.PutObjectTaggingInput) (*s3.PutObjectTaggingOutput, error) + PutObjectTaggingWithContext(aws.Context, *s3.PutObjectTaggingInput, ...request.Option) (*s3.PutObjectTaggingOutput, error) + PutObjectTaggingRequest(*s3.PutObjectTaggingInput) (*request.Request, *s3.PutObjectTaggingOutput) + + PutPublicAccessBlock(*s3.PutPublicAccessBlockInput) (*s3.PutPublicAccessBlockOutput, error) + PutPublicAccessBlockWithContext(aws.Context, *s3.PutPublicAccessBlockInput, ...request.Option) (*s3.PutPublicAccessBlockOutput, error) + PutPublicAccessBlockRequest(*s3.PutPublicAccessBlockInput) (*request.Request, *s3.PutPublicAccessBlockOutput) + + RestoreObject(*s3.RestoreObjectInput) (*s3.RestoreObjectOutput, error) + RestoreObjectWithContext(aws.Context, *s3.RestoreObjectInput, ...request.Option) (*s3.RestoreObjectOutput, error) + RestoreObjectRequest(*s3.RestoreObjectInput) (*request.Request, *s3.RestoreObjectOutput) + + SelectObjectContent(*s3.SelectObjectContentInput) (*s3.SelectObjectContentOutput, error) + SelectObjectContentWithContext(aws.Context, *s3.SelectObjectContentInput, ...request.Option) (*s3.SelectObjectContentOutput, error) + SelectObjectContentRequest(*s3.SelectObjectContentInput) (*request.Request, *s3.SelectObjectContentOutput) + + UploadPart(*s3.UploadPartInput) (*s3.UploadPartOutput, error) + UploadPartWithContext(aws.Context, *s3.UploadPartInput, ...request.Option) (*s3.UploadPartOutput, error) + UploadPartRequest(*s3.UploadPartInput) (*request.Request, *s3.UploadPartOutput) + + UploadPartCopy(*s3.UploadPartCopyInput) (*s3.UploadPartCopyOutput, error) + UploadPartCopyWithContext(aws.Context, *s3.UploadPartCopyInput, ...request.Option) (*s3.UploadPartCopyOutput, error) + UploadPartCopyRequest(*s3.UploadPartCopyInput) (*request.Request, *s3.UploadPartCopyOutput) + + WaitUntilBucketExists(*s3.HeadBucketInput) error + WaitUntilBucketExistsWithContext(aws.Context, *s3.HeadBucketInput, ...request.WaiterOption) error + + WaitUntilBucketNotExists(*s3.HeadBucketInput) error + WaitUntilBucketNotExistsWithContext(aws.Context, *s3.HeadBucketInput, ...request.WaiterOption) error + + WaitUntilObjectExists(*s3.HeadObjectInput) error + WaitUntilObjectExistsWithContext(aws.Context, *s3.HeadObjectInput, ...request.WaiterOption) error + + WaitUntilObjectNotExists(*s3.HeadObjectInput) error + WaitUntilObjectNotExistsWithContext(aws.Context, *s3.HeadObjectInput, ...request.WaiterOption) error +} + +var _ S3API = (*s3.S3)(nil) diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/batch.go b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/batch.go new file mode 100644 index 0000000..22bd0b7 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/batch.go @@ -0,0 +1,529 @@ +package s3manager + +import ( + "bytes" + "fmt" + "io" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/client" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/service/s3" + "github.com/aws/aws-sdk-go/service/s3/s3iface" +) + +const ( + // DefaultBatchSize is the batch size we initialize when constructing a batch delete client. + // This value is used when calling DeleteObjects. This represents how many objects to delete + // per DeleteObjects call. + DefaultBatchSize = 100 +) + +// BatchError will contain the key and bucket of the object that failed to +// either upload or download. +type BatchError struct { + Errors Errors + code string + message string +} + +// Errors is a typed alias for a slice of errors to satisfy the error +// interface. +type Errors []Error + +func (errs Errors) Error() string { + buf := bytes.NewBuffer(nil) + for i, err := range errs { + buf.WriteString(err.Error()) + if i+1 < len(errs) { + buf.WriteString("\n") + } + } + return buf.String() +} + +// Error will contain the original error, bucket, and key of the operation that failed +// during batch operations. +type Error struct { + OrigErr error + Bucket *string + Key *string +} + +func newError(err error, bucket, key *string) Error { + return Error{ + err, + bucket, + key, + } +} + +func (err *Error) Error() string { + origErr := "" + if err.OrigErr != nil { + origErr = ":\n" + err.OrigErr.Error() + } + return fmt.Sprintf("failed to perform batch operation on %q to %q%s", + aws.StringValue(err.Key), + aws.StringValue(err.Bucket), + origErr, + ) +} + +// NewBatchError will return a BatchError that satisfies the awserr.Error interface. +func NewBatchError(code, message string, err []Error) awserr.Error { + return &BatchError{ + Errors: err, + code: code, + message: message, + } +} + +// Code will return the code associated with the batch error. +func (err *BatchError) Code() string { + return err.code +} + +// Message will return the message associated with the batch error. +func (err *BatchError) Message() string { + return err.message +} + +func (err *BatchError) Error() string { + return awserr.SprintError(err.Code(), err.Message(), "", err.Errors) +} + +// OrigErr will return the original error. Which, in this case, will always be nil +// for batched operations. +func (err *BatchError) OrigErr() error { + return err.Errors +} + +// BatchDeleteIterator is an interface that uses the scanner pattern to +// iterate through what needs to be deleted. +type BatchDeleteIterator interface { + Next() bool + Err() error + DeleteObject() BatchDeleteObject +} + +// DeleteListIterator is an alternative iterator for the BatchDelete client. This will +// iterate through a list of objects and delete the objects. +// +// Example: +// iter := &s3manager.DeleteListIterator{ +// Client: svc, +// Input: &s3.ListObjectsInput{ +// Bucket: aws.String("bucket"), +// MaxKeys: aws.Int64(5), +// }, +// Paginator: request.Pagination{ +// NewRequest: func() (*request.Request, error) { +// var inCpy *ListObjectsInput +// if input != nil { +// tmp := *input +// inCpy = &tmp +// } +// req, _ := c.ListObjectsRequest(inCpy) +// return req, nil +// }, +// }, +// } +// +// batcher := s3manager.NewBatchDeleteWithClient(svc) +// if err := batcher.Delete(aws.BackgroundContext(), iter); err != nil { +// return err +// } +type DeleteListIterator struct { + Bucket *string + Paginator request.Pagination + objects []*s3.Object +} + +// NewDeleteListIterator will return a new DeleteListIterator. +func NewDeleteListIterator(svc s3iface.S3API, input *s3.ListObjectsInput, opts ...func(*DeleteListIterator)) BatchDeleteIterator { + iter := &DeleteListIterator{ + Bucket: input.Bucket, + Paginator: request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *s3.ListObjectsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := svc.ListObjectsRequest(inCpy) + return req, nil + }, + }, + } + + for _, opt := range opts { + opt(iter) + } + return iter +} + +// Next will use the S3API client to iterate through a list of objects. +func (iter *DeleteListIterator) Next() bool { + if len(iter.objects) > 0 { + iter.objects = iter.objects[1:] + } + + if len(iter.objects) == 0 && iter.Paginator.Next() { + iter.objects = iter.Paginator.Page().(*s3.ListObjectsOutput).Contents + } + + return len(iter.objects) > 0 +} + +// Err will return the last known error from Next. +func (iter *DeleteListIterator) Err() error { + return iter.Paginator.Err() +} + +// DeleteObject will return the current object to be deleted. +func (iter *DeleteListIterator) DeleteObject() BatchDeleteObject { + return BatchDeleteObject{ + Object: &s3.DeleteObjectInput{ + Bucket: iter.Bucket, + Key: iter.objects[0].Key, + }, + } +} + +// BatchDelete will use the s3 package's service client to perform a batch +// delete. +type BatchDelete struct { + Client s3iface.S3API + BatchSize int +} + +// NewBatchDeleteWithClient will return a new delete client that can delete a batched amount of +// objects. +// +// Example: +// batcher := s3manager.NewBatchDeleteWithClient(client, size) +// +// objects := []BatchDeleteObject{ +// { +// Object: &s3.DeleteObjectInput { +// Key: aws.String("key"), +// Bucket: aws.String("bucket"), +// }, +// }, +// } +// +// if err := batcher.Delete(aws.BackgroundContext(), &s3manager.DeleteObjectsIterator{ +// Objects: objects, +// }); err != nil { +// return err +// } +func NewBatchDeleteWithClient(client s3iface.S3API, options ...func(*BatchDelete)) *BatchDelete { + svc := &BatchDelete{ + Client: client, + BatchSize: DefaultBatchSize, + } + + for _, opt := range options { + opt(svc) + } + + return svc +} + +// NewBatchDelete will return a new delete client that can delete a batched amount of +// objects. +// +// Example: +// batcher := s3manager.NewBatchDelete(sess, size) +// +// objects := []BatchDeleteObject{ +// { +// Object: &s3.DeleteObjectInput { +// Key: aws.String("key"), +// Bucket: aws.String("bucket"), +// }, +// }, +// } +// +// if err := batcher.Delete(aws.BackgroundContext(), &s3manager.DeleteObjectsIterator{ +// Objects: objects, +// }); err != nil { +// return err +// } +func NewBatchDelete(c client.ConfigProvider, options ...func(*BatchDelete)) *BatchDelete { + client := s3.New(c) + return NewBatchDeleteWithClient(client, options...) +} + +// BatchDeleteObject is a wrapper object for calling the batch delete operation. +type BatchDeleteObject struct { + Object *s3.DeleteObjectInput + // After will run after each iteration during the batch process. This function will + // be executed whether or not the request was successful. + After func() error +} + +// DeleteObjectsIterator is an interface that uses the scanner pattern to iterate +// through a series of objects to be deleted. +type DeleteObjectsIterator struct { + Objects []BatchDeleteObject + index int + inc bool +} + +// Next will increment the default iterator's index and ensure that there +// is another object to iterator to. +func (iter *DeleteObjectsIterator) Next() bool { + if iter.inc { + iter.index++ + } else { + iter.inc = true + } + return iter.index < len(iter.Objects) +} + +// Err will return an error. Since this is just used to satisfy the BatchDeleteIterator interface +// this will only return nil. +func (iter *DeleteObjectsIterator) Err() error { + return nil +} + +// DeleteObject will return the BatchDeleteObject at the current batched index. +func (iter *DeleteObjectsIterator) DeleteObject() BatchDeleteObject { + object := iter.Objects[iter.index] + return object +} + +// Delete will use the iterator to queue up objects that need to be deleted. +// Once the batch size is met, this will call the deleteBatch function. +func (d *BatchDelete) Delete(ctx aws.Context, iter BatchDeleteIterator) error { + var errs []Error + objects := []BatchDeleteObject{} + var input *s3.DeleteObjectsInput + + for iter.Next() { + o := iter.DeleteObject() + + if input == nil { + input = initDeleteObjectsInput(o.Object) + } + + parity := hasParity(input, o) + if parity { + input.Delete.Objects = append(input.Delete.Objects, &s3.ObjectIdentifier{ + Key: o.Object.Key, + VersionId: o.Object.VersionId, + }) + objects = append(objects, o) + } + + if len(input.Delete.Objects) == d.BatchSize || !parity { + if err := deleteBatch(ctx, d, input, objects); err != nil { + errs = append(errs, err...) + } + + objects = objects[:0] + input = nil + + if !parity { + objects = append(objects, o) + input = initDeleteObjectsInput(o.Object) + input.Delete.Objects = append(input.Delete.Objects, &s3.ObjectIdentifier{ + Key: o.Object.Key, + VersionId: o.Object.VersionId, + }) + } + } + } + + // iter.Next() could return false (above) plus populate iter.Err() + if iter.Err() != nil { + errs = append(errs, newError(iter.Err(), nil, nil)) + } + + if input != nil && len(input.Delete.Objects) > 0 { + if err := deleteBatch(ctx, d, input, objects); err != nil { + errs = append(errs, err...) + } + } + + if len(errs) > 0 { + return NewBatchError("BatchedDeleteIncomplete", "some objects have failed to be deleted.", errs) + } + return nil +} + +func initDeleteObjectsInput(o *s3.DeleteObjectInput) *s3.DeleteObjectsInput { + return &s3.DeleteObjectsInput{ + Bucket: o.Bucket, + MFA: o.MFA, + RequestPayer: o.RequestPayer, + Delete: &s3.Delete{}, + } +} + +const ( + // ErrDeleteBatchFailCode represents an error code which will be returned + // only when DeleteObjects.Errors has an error that does not contain a code. + ErrDeleteBatchFailCode = "DeleteBatchError" + errDefaultDeleteBatchMessage = "failed to delete" +) + +// deleteBatch will delete a batch of items in the objects parameters. +func deleteBatch(ctx aws.Context, d *BatchDelete, input *s3.DeleteObjectsInput, objects []BatchDeleteObject) []Error { + errs := []Error{} + + if result, err := d.Client.DeleteObjectsWithContext(ctx, input); err != nil { + for i := 0; i < len(input.Delete.Objects); i++ { + errs = append(errs, newError(err, input.Bucket, input.Delete.Objects[i].Key)) + } + } else if len(result.Errors) > 0 { + for i := 0; i < len(result.Errors); i++ { + code := ErrDeleteBatchFailCode + msg := errDefaultDeleteBatchMessage + if result.Errors[i].Message != nil { + msg = *result.Errors[i].Message + } + if result.Errors[i].Code != nil { + code = *result.Errors[i].Code + } + + errs = append(errs, newError(awserr.New(code, msg, err), input.Bucket, result.Errors[i].Key)) + } + } + for _, object := range objects { + if object.After == nil { + continue + } + if err := object.After(); err != nil { + errs = append(errs, newError(err, object.Object.Bucket, object.Object.Key)) + } + } + + return errs +} + +func hasParity(o1 *s3.DeleteObjectsInput, o2 BatchDeleteObject) bool { + if o1.Bucket != nil && o2.Object.Bucket != nil { + if *o1.Bucket != *o2.Object.Bucket { + return false + } + } else if o1.Bucket != o2.Object.Bucket { + return false + } + + if o1.MFA != nil && o2.Object.MFA != nil { + if *o1.MFA != *o2.Object.MFA { + return false + } + } else if o1.MFA != o2.Object.MFA { + return false + } + + if o1.RequestPayer != nil && o2.Object.RequestPayer != nil { + if *o1.RequestPayer != *o2.Object.RequestPayer { + return false + } + } else if o1.RequestPayer != o2.Object.RequestPayer { + return false + } + + return true +} + +// BatchDownloadIterator is an interface that uses the scanner pattern to iterate +// through a series of objects to be downloaded. +type BatchDownloadIterator interface { + Next() bool + Err() error + DownloadObject() BatchDownloadObject +} + +// BatchDownloadObject contains all necessary information to run a batch operation once. +type BatchDownloadObject struct { + Object *s3.GetObjectInput + Writer io.WriterAt + // After will run after each iteration during the batch process. This function will + // be executed whether or not the request was successful. + After func() error +} + +// DownloadObjectsIterator implements the BatchDownloadIterator interface and allows for batched +// download of objects. +type DownloadObjectsIterator struct { + Objects []BatchDownloadObject + index int + inc bool +} + +// Next will increment the default iterator's index and ensure that there +// is another object to iterator to. +func (batcher *DownloadObjectsIterator) Next() bool { + if batcher.inc { + batcher.index++ + } else { + batcher.inc = true + } + return batcher.index < len(batcher.Objects) +} + +// DownloadObject will return the BatchDownloadObject at the current batched index. +func (batcher *DownloadObjectsIterator) DownloadObject() BatchDownloadObject { + object := batcher.Objects[batcher.index] + return object +} + +// Err will return an error. Since this is just used to satisfy the BatchDeleteIterator interface +// this will only return nil. +func (batcher *DownloadObjectsIterator) Err() error { + return nil +} + +// BatchUploadIterator is an interface that uses the scanner pattern to +// iterate through what needs to be uploaded. +type BatchUploadIterator interface { + Next() bool + Err() error + UploadObject() BatchUploadObject +} + +// UploadObjectsIterator implements the BatchUploadIterator interface and allows for batched +// upload of objects. +type UploadObjectsIterator struct { + Objects []BatchUploadObject + index int + inc bool +} + +// Next will increment the default iterator's index and ensure that there +// is another object to iterator to. +func (batcher *UploadObjectsIterator) Next() bool { + if batcher.inc { + batcher.index++ + } else { + batcher.inc = true + } + return batcher.index < len(batcher.Objects) +} + +// Err will return an error. Since this is just used to satisfy the BatchUploadIterator interface +// this will only return nil. +func (batcher *UploadObjectsIterator) Err() error { + return nil +} + +// UploadObject will return the BatchUploadObject at the current batched index. +func (batcher *UploadObjectsIterator) UploadObject() BatchUploadObject { + object := batcher.Objects[batcher.index] + return object +} + +// BatchUploadObject contains all necessary information to run a batch operation once. +type BatchUploadObject struct { + Object *UploadInput + // After will run after each iteration during the batch process. This function will + // be executed whether or not the request was successful. + After func() error +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/bucket_region.go b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/bucket_region.go new file mode 100644 index 0000000..f61665a --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/bucket_region.go @@ -0,0 +1,88 @@ +package s3manager + +import ( + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/client" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/service/s3" + "github.com/aws/aws-sdk-go/service/s3/s3iface" +) + +// GetBucketRegion will attempt to get the region for a bucket using the +// regionHint to determine which AWS partition to perform the query on. +// +// The request will not be signed, and will not use your AWS credentials. +// +// A "NotFound" error code will be returned if the bucket does not exist in the +// AWS partition the regionHint belongs to. If the regionHint parameter is an +// empty string GetBucketRegion will fallback to the ConfigProvider's region +// config. If the regionHint is empty, and the ConfigProvider does not have a +// region value, an error will be returned.. +// +// For example to get the region of a bucket which exists in "eu-central-1" +// you could provide a region hint of "us-west-2". +// +// sess := session.Must(session.NewSession()) +// +// bucket := "my-bucket" +// region, err := s3manager.GetBucketRegion(ctx, sess, bucket, "us-west-2") +// if err != nil { +// if aerr, ok := err.(awserr.Error); ok && aerr.Code() == "NotFound" { +// fmt.Fprintf(os.Stderr, "unable to find bucket %s's region not found\n", bucket) +// } +// return err +// } +// fmt.Printf("Bucket %s is in %s region\n", bucket, region) +// +func GetBucketRegion(ctx aws.Context, c client.ConfigProvider, bucket, regionHint string, opts ...request.Option) (string, error) { + var cfg aws.Config + if len(regionHint) != 0 { + cfg.Region = aws.String(regionHint) + } + svc := s3.New(c, &cfg) + return GetBucketRegionWithClient(ctx, svc, bucket, opts...) +} + +const bucketRegionHeader = "X-Amz-Bucket-Region" + +// GetBucketRegionWithClient is the same as GetBucketRegion with the exception +// that it takes a S3 service client instead of a Session. The regionHint is +// derived from the region the S3 service client was created in. +// +// See GetBucketRegion for more information. +func GetBucketRegionWithClient(ctx aws.Context, svc s3iface.S3API, bucket string, opts ...request.Option) (string, error) { + req, _ := svc.HeadBucketRequest(&s3.HeadBucketInput{ + Bucket: aws.String(bucket), + }) + req.Config.S3ForcePathStyle = aws.Bool(true) + req.Config.Credentials = credentials.AnonymousCredentials + req.SetContext(ctx) + + // Disable HTTP redirects to prevent an invalid 301 from eating the response + // because Go's HTTP client will fail, and drop the response if an 301 is + // received without a location header. S3 will return a 301 without the + // location header for HeadObject API calls. + req.DisableFollowRedirects = true + + var bucketRegion string + req.Handlers.Send.PushBack(func(r *request.Request) { + bucketRegion = r.HTTPResponse.Header.Get(bucketRegionHeader) + if len(bucketRegion) == 0 { + return + } + r.HTTPResponse.StatusCode = 200 + r.HTTPResponse.Status = "OK" + r.Error = nil + }) + + req.ApplyOptions(opts...) + + if err := req.Send(); err != nil { + return "", err + } + + bucketRegion = s3.NormalizeBucketLocation(bucketRegion) + + return bucketRegion, nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/buffered_read_seeker.go b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/buffered_read_seeker.go new file mode 100644 index 0000000..f1d9e85 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/buffered_read_seeker.go @@ -0,0 +1,81 @@ +package s3manager + +import ( + "io" + + "github.com/aws/aws-sdk-go/internal/sdkio" +) + +// BufferedReadSeeker is buffered io.ReadSeeker +type BufferedReadSeeker struct { + r io.ReadSeeker + buffer []byte + readIdx, writeIdx int +} + +// NewBufferedReadSeeker returns a new BufferedReadSeeker +// if len(b) == 0 then the buffer will be initialized to 64 KiB. +func NewBufferedReadSeeker(r io.ReadSeeker, b []byte) *BufferedReadSeeker { + if len(b) == 0 { + b = make([]byte, 64*1024) + } + return &BufferedReadSeeker{r: r, buffer: b} +} + +func (b *BufferedReadSeeker) reset(r io.ReadSeeker) { + b.r = r + b.readIdx, b.writeIdx = 0, 0 +} + +// Read will read up len(p) bytes into p and will return +// the number of bytes read and any error that occurred. +// If the len(p) > the buffer size then a single read request +// will be issued to the underlying io.ReadSeeker for len(p) bytes. +// A Read request will at most perform a single Read to the underlying +// io.ReadSeeker, and may return < len(p) if serviced from the buffer. +func (b *BufferedReadSeeker) Read(p []byte) (n int, err error) { + if len(p) == 0 { + return n, err + } + + if b.readIdx == b.writeIdx { + if len(p) >= len(b.buffer) { + n, err = b.r.Read(p) + return n, err + } + b.readIdx, b.writeIdx = 0, 0 + + n, err = b.r.Read(b.buffer) + if n == 0 { + return n, err + } + + b.writeIdx += n + } + + n = copy(p, b.buffer[b.readIdx:b.writeIdx]) + b.readIdx += n + + return n, err +} + +// Seek will position then underlying io.ReadSeeker to the given offset +// and will clear the buffer. +func (b *BufferedReadSeeker) Seek(offset int64, whence int) (int64, error) { + n, err := b.r.Seek(offset, whence) + + b.reset(b.r) + + return n, err +} + +// ReadAt will read up to len(p) bytes at the given file offset. +// This will result in the buffer being cleared. +func (b *BufferedReadSeeker) ReadAt(p []byte, off int64) (int, error) { + _, err := b.Seek(off, sdkio.SeekStart) + if err != nil { + return 0, err + } + + return b.Read(p) +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/default_read_seeker_write_to.go b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/default_read_seeker_write_to.go new file mode 100644 index 0000000..4227653 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/default_read_seeker_write_to.go @@ -0,0 +1,7 @@ +// +build !windows + +package s3manager + +func defaultUploadBufferProvider() ReadSeekerWriteToProvider { + return nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/default_read_seeker_write_to_windows.go b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/default_read_seeker_write_to_windows.go new file mode 100644 index 0000000..687082c --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/default_read_seeker_write_to_windows.go @@ -0,0 +1,5 @@ +package s3manager + +func defaultUploadBufferProvider() ReadSeekerWriteToProvider { + return NewBufferedReadSeekerWriteToPool(1024 * 1024) +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/default_writer_read_from.go b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/default_writer_read_from.go new file mode 100644 index 0000000..ada50c2 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/default_writer_read_from.go @@ -0,0 +1,7 @@ +// +build !windows + +package s3manager + +func defaultDownloadBufferProvider() WriterReadFromProvider { + return nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/default_writer_read_from_windows.go b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/default_writer_read_from_windows.go new file mode 100644 index 0000000..7e9d957 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/default_writer_read_from_windows.go @@ -0,0 +1,5 @@ +package s3manager + +func defaultDownloadBufferProvider() WriterReadFromProvider { + return NewPooledBufferedWriterReadFromProvider(1024 * 1024) +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/doc.go b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/doc.go new file mode 100644 index 0000000..229c0d6 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/doc.go @@ -0,0 +1,3 @@ +// Package s3manager provides utilities to upload and download objects from +// S3 concurrently. Helpful for when working with large objects. +package s3manager diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/download.go b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/download.go new file mode 100644 index 0000000..4b54b7c --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/download.go @@ -0,0 +1,597 @@ +package s3manager + +import ( + "fmt" + "io" + "net/http" + "strconv" + "strings" + "sync" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/awsutil" + "github.com/aws/aws-sdk-go/aws/client" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/service/s3" + "github.com/aws/aws-sdk-go/service/s3/s3iface" +) + +// DefaultDownloadPartSize is the default range of bytes to get at a time when +// using Download(). +const DefaultDownloadPartSize = 1024 * 1024 * 5 + +// DefaultDownloadConcurrency is the default number of goroutines to spin up +// when using Download(). +const DefaultDownloadConcurrency = 5 + +type errReadingBody struct { + err error +} + +func (e *errReadingBody) Error() string { + return fmt.Sprintf("failed to read part body: %v", e.err) +} + +func (e *errReadingBody) Unwrap() error { + return e.err +} + +// The Downloader structure that calls Download(). It is safe to call Download() +// on this structure for multiple objects and across concurrent goroutines. +// Mutating the Downloader's properties is not safe to be done concurrently. +type Downloader struct { + // The size (in bytes) to request from S3 for each part. + // The minimum allowed part size is 5MB, and if this value is set to zero, + // the DefaultDownloadPartSize value will be used. + // + // PartSize is ignored if the Range input parameter is provided. + PartSize int64 + + // The number of goroutines to spin up in parallel when sending parts. + // If this is set to zero, the DefaultDownloadConcurrency value will be used. + // + // Concurrency of 1 will download the parts sequentially. + // + // Concurrency is ignored if the Range input parameter is provided. + Concurrency int + + // An S3 client to use when performing downloads. + S3 s3iface.S3API + + // List of request options that will be passed down to individual API + // operation requests made by the downloader. + RequestOptions []request.Option + + // Defines the buffer strategy used when downloading a part. + // + // If a WriterReadFromProvider is given the Download manager + // will pass the io.WriterAt of the Download request to the provider + // and will use the returned WriterReadFrom from the provider as the + // destination writer when copying from http response body. + BufferProvider WriterReadFromProvider +} + +// WithDownloaderRequestOptions appends to the Downloader's API request options. +func WithDownloaderRequestOptions(opts ...request.Option) func(*Downloader) { + return func(d *Downloader) { + d.RequestOptions = append(d.RequestOptions, opts...) + } +} + +// NewDownloader creates a new Downloader instance to downloads objects from +// S3 in concurrent chunks. Pass in additional functional options to customize +// the downloader behavior. Requires a client.ConfigProvider in order to create +// a S3 service client. The session.Session satisfies the client.ConfigProvider +// interface. +// +// Example: +// // The session the S3 Downloader will use +// sess := session.Must(session.NewSession()) +// +// // Create a downloader with the session and default options +// downloader := s3manager.NewDownloader(sess) +// +// // Create a downloader with the session and custom options +// downloader := s3manager.NewDownloader(sess, func(d *s3manager.Downloader) { +// d.PartSize = 64 * 1024 * 1024 // 64MB per part +// }) +func NewDownloader(c client.ConfigProvider, options ...func(*Downloader)) *Downloader { + return newDownloader(s3.New(c), options...) +} + +func newDownloader(client s3iface.S3API, options ...func(*Downloader)) *Downloader { + d := &Downloader{ + S3: client, + PartSize: DefaultDownloadPartSize, + Concurrency: DefaultDownloadConcurrency, + BufferProvider: defaultDownloadBufferProvider(), + } + for _, option := range options { + option(d) + } + + return d +} + +// NewDownloaderWithClient creates a new Downloader instance to downloads +// objects from S3 in concurrent chunks. Pass in additional functional +// options to customize the downloader behavior. Requires a S3 service client +// to make S3 API calls. +// +// Example: +// // The session the S3 Downloader will use +// sess := session.Must(session.NewSession()) +// +// // The S3 client the S3 Downloader will use +// s3Svc := s3.New(sess) +// +// // Create a downloader with the s3 client and default options +// downloader := s3manager.NewDownloaderWithClient(s3Svc) +// +// // Create a downloader with the s3 client and custom options +// downloader := s3manager.NewDownloaderWithClient(s3Svc, func(d *s3manager.Downloader) { +// d.PartSize = 64 * 1024 * 1024 // 64MB per part +// }) +func NewDownloaderWithClient(svc s3iface.S3API, options ...func(*Downloader)) *Downloader { + return newDownloader(svc, options...) +} + +type maxRetrier interface { + MaxRetries() int +} + +// Download downloads an object in S3 and writes the payload into w using +// concurrent GET requests. The n int64 returned is the size of the object downloaded +// in bytes. +// +// Additional functional options can be provided to configure the individual +// download. These options are copies of the Downloader instance Download is called from. +// Modifying the options will not impact the original Downloader instance. +// +// It is safe to call this method concurrently across goroutines. +// +// The w io.WriterAt can be satisfied by an os.File to do multipart concurrent +// downloads, or in memory []byte wrapper using aws.WriteAtBuffer. +// +// Specifying a Downloader.Concurrency of 1 will cause the Downloader to +// download the parts from S3 sequentially. +// +// If the GetObjectInput's Range value is provided that will cause the downloader +// to perform a single GetObjectInput request for that object's range. This will +// caused the part size, and concurrency configurations to be ignored. +func (d Downloader) Download(w io.WriterAt, input *s3.GetObjectInput, options ...func(*Downloader)) (n int64, err error) { + return d.DownloadWithContext(aws.BackgroundContext(), w, input, options...) +} + +// DownloadWithContext downloads an object in S3 and writes the payload into w +// using concurrent GET requests. The n int64 returned is the size of the object downloaded +// in bytes. +// +// DownloadWithContext is the same as Download with the additional support for +// Context input parameters. The Context must not be nil. A nil Context will +// cause a panic. Use the Context to add deadlining, timeouts, etc. The +// DownloadWithContext may create sub-contexts for individual underlying +// requests. +// +// Additional functional options can be provided to configure the individual +// download. These options are copies of the Downloader instance Download is +// called from. Modifying the options will not impact the original Downloader +// instance. Use the WithDownloaderRequestOptions helper function to pass in request +// options that will be applied to all API operations made with this downloader. +// +// The w io.WriterAt can be satisfied by an os.File to do multipart concurrent +// downloads, or in memory []byte wrapper using aws.WriteAtBuffer. +// +// Specifying a Downloader.Concurrency of 1 will cause the Downloader to +// download the parts from S3 sequentially. +// +// It is safe to call this method concurrently across goroutines. +// +// If the GetObjectInput's Range value is provided that will cause the downloader +// to perform a single GetObjectInput request for that object's range. This will +// caused the part size, and concurrency configurations to be ignored. +func (d Downloader) DownloadWithContext(ctx aws.Context, w io.WriterAt, input *s3.GetObjectInput, options ...func(*Downloader)) (n int64, err error) { + impl := downloader{w: w, in: input, cfg: d, ctx: ctx} + + for _, option := range options { + option(&impl.cfg) + } + impl.cfg.RequestOptions = append(impl.cfg.RequestOptions, request.WithAppendUserAgent("S3Manager")) + + if s, ok := d.S3.(maxRetrier); ok { + impl.partBodyMaxRetries = s.MaxRetries() + } + + impl.totalBytes = -1 + if impl.cfg.Concurrency == 0 { + impl.cfg.Concurrency = DefaultDownloadConcurrency + } + + if impl.cfg.PartSize == 0 { + impl.cfg.PartSize = DefaultDownloadPartSize + } + + return impl.download() +} + +// DownloadWithIterator will download a batched amount of objects in S3 and writes them +// to the io.WriterAt specificed in the iterator. +// +// Example: +// svc := s3manager.NewDownloader(session) +// +// fooFile, err := os.Open("/tmp/foo.file") +// if err != nil { +// return err +// } +// +// barFile, err := os.Open("/tmp/bar.file") +// if err != nil { +// return err +// } +// +// objects := []s3manager.BatchDownloadObject { +// { +// Object: &s3.GetObjectInput { +// Bucket: aws.String("bucket"), +// Key: aws.String("foo"), +// }, +// Writer: fooFile, +// }, +// { +// Object: &s3.GetObjectInput { +// Bucket: aws.String("bucket"), +// Key: aws.String("bar"), +// }, +// Writer: barFile, +// }, +// } +// +// iter := &s3manager.DownloadObjectsIterator{Objects: objects} +// if err := svc.DownloadWithIterator(aws.BackgroundContext(), iter); err != nil { +// return err +// } +func (d Downloader) DownloadWithIterator(ctx aws.Context, iter BatchDownloadIterator, opts ...func(*Downloader)) error { + var errs []Error + for iter.Next() { + object := iter.DownloadObject() + if _, err := d.DownloadWithContext(ctx, object.Writer, object.Object, opts...); err != nil { + errs = append(errs, newError(err, object.Object.Bucket, object.Object.Key)) + } + + if object.After == nil { + continue + } + + if err := object.After(); err != nil { + errs = append(errs, newError(err, object.Object.Bucket, object.Object.Key)) + } + } + + if len(errs) > 0 { + return NewBatchError("BatchedDownloadIncomplete", "some objects have failed to download.", errs) + } + return nil +} + +// downloader is the implementation structure used internally by Downloader. +type downloader struct { + ctx aws.Context + cfg Downloader + + in *s3.GetObjectInput + w io.WriterAt + + wg sync.WaitGroup + m sync.Mutex + + pos int64 + totalBytes int64 + written int64 + err error + + partBodyMaxRetries int +} + +// download performs the implementation of the object download across ranged +// GETs. +func (d *downloader) download() (n int64, err error) { + // If range is specified fall back to single download of that range + // this enables the functionality of ranged gets with the downloader but + // at the cost of no multipart downloads. + if rng := aws.StringValue(d.in.Range); len(rng) > 0 { + d.downloadRange(rng) + return d.written, d.err + } + + // Spin off first worker to check additional header information + d.getChunk() + + if total := d.getTotalBytes(); total >= 0 { + // Spin up workers + ch := make(chan dlchunk, d.cfg.Concurrency) + + for i := 0; i < d.cfg.Concurrency; i++ { + d.wg.Add(1) + go d.downloadPart(ch) + } + + // Assign work + for d.getErr() == nil { + if d.pos >= total { + break // We're finished queuing chunks + } + + // Queue the next range of bytes to read. + ch <- dlchunk{w: d.w, start: d.pos, size: d.cfg.PartSize} + d.pos += d.cfg.PartSize + } + + // Wait for completion + close(ch) + d.wg.Wait() + } else { + // Checking if we read anything new + for d.err == nil { + d.getChunk() + } + + // We expect a 416 error letting us know we are done downloading the + // total bytes. Since we do not know the content's length, this will + // keep grabbing chunks of data until the range of bytes specified in + // the request is out of range of the content. Once, this happens, a + // 416 should occur. + e, ok := d.err.(awserr.RequestFailure) + if ok && e.StatusCode() == http.StatusRequestedRangeNotSatisfiable { + d.err = nil + } + } + + // Return error + return d.written, d.err +} + +// downloadPart is an individual goroutine worker reading from the ch channel +// and performing a GetObject request on the data with a given byte range. +// +// If this is the first worker, this operation also resolves the total number +// of bytes to be read so that the worker manager knows when it is finished. +func (d *downloader) downloadPart(ch chan dlchunk) { + defer d.wg.Done() + for { + chunk, ok := <-ch + if !ok { + break + } + if d.getErr() != nil { + // Drain the channel if there is an error, to prevent deadlocking + // of download producer. + continue + } + + if err := d.downloadChunk(chunk); err != nil { + d.setErr(err) + } + } +} + +// getChunk grabs a chunk of data from the body. +// Not thread safe. Should only used when grabbing data on a single thread. +func (d *downloader) getChunk() { + if d.getErr() != nil { + return + } + + chunk := dlchunk{w: d.w, start: d.pos, size: d.cfg.PartSize} + d.pos += d.cfg.PartSize + + if err := d.downloadChunk(chunk); err != nil { + d.setErr(err) + } +} + +// downloadRange downloads an Object given the passed in Byte-Range value. +// The chunk used down download the range will be configured for that range. +func (d *downloader) downloadRange(rng string) { + if d.getErr() != nil { + return + } + + chunk := dlchunk{w: d.w, start: d.pos} + // Ranges specified will short circuit the multipart download + chunk.withRange = rng + + if err := d.downloadChunk(chunk); err != nil { + d.setErr(err) + } + + // Update the position based on the amount of data received. + d.pos = d.written +} + +// downloadChunk downloads the chunk from s3 +func (d *downloader) downloadChunk(chunk dlchunk) error { + in := &s3.GetObjectInput{} + awsutil.Copy(in, d.in) + + // Get the next byte range of data + in.Range = aws.String(chunk.ByteRange()) + + var n int64 + var err error + for retry := 0; retry <= d.partBodyMaxRetries; retry++ { + n, err = d.tryDownloadChunk(in, &chunk) + if err == nil { + break + } + // Check if the returned error is an errReadingBody. + // If err is errReadingBody this indicates that an error + // occurred while copying the http response body. + // If this occurs we unwrap the err to set the underlying error + // and attempt any remaining retries. + if bodyErr, ok := err.(*errReadingBody); ok { + err = bodyErr.Unwrap() + } else { + return err + } + + chunk.cur = 0 + logMessage(d.cfg.S3, aws.LogDebugWithRequestRetries, + fmt.Sprintf("DEBUG: object part body download interrupted %s, err, %v, retrying attempt %d", + aws.StringValue(in.Key), err, retry)) + } + + d.incrWritten(n) + + return err +} + +func (d *downloader) tryDownloadChunk(in *s3.GetObjectInput, w io.Writer) (int64, error) { + cleanup := func() {} + if d.cfg.BufferProvider != nil { + w, cleanup = d.cfg.BufferProvider.GetReadFrom(w) + } + defer cleanup() + + resp, err := d.cfg.S3.GetObjectWithContext(d.ctx, in, d.cfg.RequestOptions...) + if err != nil { + return 0, err + } + d.setTotalBytes(resp) // Set total if not yet set. + + n, err := io.Copy(w, resp.Body) + resp.Body.Close() + if err != nil { + return n, &errReadingBody{err: err} + } + + return n, nil +} + +func logMessage(svc s3iface.S3API, level aws.LogLevelType, msg string) { + s, ok := svc.(*s3.S3) + if !ok { + return + } + + if s.Config.Logger == nil { + return + } + + if s.Config.LogLevel.Matches(level) { + s.Config.Logger.Log(msg) + } +} + +// getTotalBytes is a thread-safe getter for retrieving the total byte status. +func (d *downloader) getTotalBytes() int64 { + d.m.Lock() + defer d.m.Unlock() + + return d.totalBytes +} + +// setTotalBytes is a thread-safe setter for setting the total byte status. +// Will extract the object's total bytes from the Content-Range if the file +// will be chunked, or Content-Length. Content-Length is used when the response +// does not include a Content-Range. Meaning the object was not chunked. This +// occurs when the full file fits within the PartSize directive. +func (d *downloader) setTotalBytes(resp *s3.GetObjectOutput) { + d.m.Lock() + defer d.m.Unlock() + + if d.totalBytes >= 0 { + return + } + + if resp.ContentRange == nil { + // ContentRange is nil when the full file contents is provided, and + // is not chunked. Use ContentLength instead. + if resp.ContentLength != nil { + d.totalBytes = *resp.ContentLength + return + } + } else { + parts := strings.Split(*resp.ContentRange, "/") + + total := int64(-1) + var err error + // Checking for whether or not a numbered total exists + // If one does not exist, we will assume the total to be -1, undefined, + // and sequentially download each chunk until hitting a 416 error + totalStr := parts[len(parts)-1] + if totalStr != "*" { + total, err = strconv.ParseInt(totalStr, 10, 64) + if err != nil { + d.err = err + return + } + } + + d.totalBytes = total + } +} + +func (d *downloader) incrWritten(n int64) { + d.m.Lock() + defer d.m.Unlock() + + d.written += n +} + +// getErr is a thread-safe getter for the error object +func (d *downloader) getErr() error { + d.m.Lock() + defer d.m.Unlock() + + return d.err +} + +// setErr is a thread-safe setter for the error object +func (d *downloader) setErr(e error) { + d.m.Lock() + defer d.m.Unlock() + + d.err = e +} + +// dlchunk represents a single chunk of data to write by the worker routine. +// This structure also implements an io.SectionReader style interface for +// io.WriterAt, effectively making it an io.SectionWriter (which does not +// exist). +type dlchunk struct { + w io.WriterAt + start int64 + size int64 + cur int64 + + // specifies the byte range the chunk should be downloaded with. + withRange string +} + +// Write wraps io.WriterAt for the dlchunk, writing from the dlchunk's start +// position to its end (or EOF). +// +// If a range is specified on the dlchunk the size will be ignored when writing. +// as the total size may not of be known ahead of time. +func (c *dlchunk) Write(p []byte) (n int, err error) { + if c.cur >= c.size && len(c.withRange) == 0 { + return 0, io.EOF + } + + n, err = c.w.WriteAt(p, c.start+c.cur) + c.cur += int64(n) + + return +} + +// ByteRange returns a HTTP Byte-Range header value that should be used by the +// client to request the chunk's range. +func (c *dlchunk) ByteRange() string { + if len(c.withRange) != 0 { + return c.withRange + } + + return fmt.Sprintf("bytes=%d-%d", c.start, c.start+c.size-1) +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/read_seeker_write_to.go b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/read_seeker_write_to.go new file mode 100644 index 0000000..f62e1a4 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/read_seeker_write_to.go @@ -0,0 +1,65 @@ +package s3manager + +import ( + "io" + "sync" +) + +// ReadSeekerWriteTo defines an interface implementing io.WriteTo and io.ReadSeeker +type ReadSeekerWriteTo interface { + io.ReadSeeker + io.WriterTo +} + +// BufferedReadSeekerWriteTo wraps a BufferedReadSeeker with an io.WriteAt +// implementation. +type BufferedReadSeekerWriteTo struct { + *BufferedReadSeeker +} + +// WriteTo writes to the given io.Writer from BufferedReadSeeker until there's no more data to write or +// an error occurs. Returns the number of bytes written and any error encountered during the write. +func (b *BufferedReadSeekerWriteTo) WriteTo(writer io.Writer) (int64, error) { + return io.Copy(writer, b.BufferedReadSeeker) +} + +// ReadSeekerWriteToProvider provides an implementation of io.WriteTo for an io.ReadSeeker +type ReadSeekerWriteToProvider interface { + GetWriteTo(seeker io.ReadSeeker) (r ReadSeekerWriteTo, cleanup func()) +} + +// BufferedReadSeekerWriteToPool uses a sync.Pool to create and reuse +// []byte slices for buffering parts in memory +type BufferedReadSeekerWriteToPool struct { + pool sync.Pool +} + +// NewBufferedReadSeekerWriteToPool will return a new BufferedReadSeekerWriteToPool that will create +// a pool of reusable buffers . If size is less then < 64 KiB then the buffer +// will default to 64 KiB. Reason: io.Copy from writers or readers that don't support io.WriteTo or io.ReadFrom +// respectively will default to copying 32 KiB. +func NewBufferedReadSeekerWriteToPool(size int) *BufferedReadSeekerWriteToPool { + if size < 65536 { + size = 65536 + } + + return &BufferedReadSeekerWriteToPool{ + pool: sync.Pool{New: func() interface{} { + return make([]byte, size) + }}, + } +} + +// GetWriteTo will wrap the provided io.ReadSeeker with a BufferedReadSeekerWriteTo. +// The provided cleanup must be called after operations have been completed on the +// returned io.ReadSeekerWriteTo in order to signal the return of resources to the pool. +func (p *BufferedReadSeekerWriteToPool) GetWriteTo(seeker io.ReadSeeker) (r ReadSeekerWriteTo, cleanup func()) { + buffer := p.pool.Get().([]byte) + + r = &BufferedReadSeekerWriteTo{BufferedReadSeeker: NewBufferedReadSeeker(seeker, buffer)} + cleanup = func() { + p.pool.Put(buffer) + } + + return r, cleanup +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload.go b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload.go new file mode 100644 index 0000000..8debfcd --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload.go @@ -0,0 +1,774 @@ +package s3manager + +import ( + "bytes" + "fmt" + "io" + "sort" + "sync" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/awsutil" + "github.com/aws/aws-sdk-go/aws/client" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/service/s3" + "github.com/aws/aws-sdk-go/service/s3/s3iface" +) + +// MaxUploadParts is the maximum allowed number of parts in a multi-part upload +// on Amazon S3. +const MaxUploadParts = 10000 + +// MinUploadPartSize is the minimum allowed part size when uploading a part to +// Amazon S3. +const MinUploadPartSize int64 = 1024 * 1024 * 5 + +// DefaultUploadPartSize is the default part size to buffer chunks of a +// payload into. +const DefaultUploadPartSize = MinUploadPartSize + +// DefaultUploadConcurrency is the default number of goroutines to spin up when +// using Upload(). +const DefaultUploadConcurrency = 5 + +// A MultiUploadFailure wraps a failed S3 multipart upload. An error returned +// will satisfy this interface when a multi part upload failed to upload all +// chucks to S3. In the case of a failure the UploadID is needed to operate on +// the chunks, if any, which were uploaded. +// +// Example: +// +// u := s3manager.NewUploader(opts) +// output, err := u.upload(input) +// if err != nil { +// if multierr, ok := err.(s3manager.MultiUploadFailure); ok { +// // Process error and its associated uploadID +// fmt.Println("Error:", multierr.Code(), multierr.Message(), multierr.UploadID()) +// } else { +// // Process error generically +// fmt.Println("Error:", err.Error()) +// } +// } +// +type MultiUploadFailure interface { + awserr.Error + + // Returns the upload id for the S3 multipart upload that failed. + UploadID() string +} + +// So that the Error interface type can be included as an anonymous field +// in the multiUploadError struct and not conflict with the error.Error() method. +type awsError awserr.Error + +// A multiUploadError wraps the upload ID of a failed s3 multipart upload. +// Composed of BaseError for code, message, and original error +// +// Should be used for an error that occurred failing a S3 multipart upload, +// and a upload ID is available. If an uploadID is not available a more relevant +type multiUploadError struct { + awsError + + // ID for multipart upload which failed. + uploadID string +} + +// Error returns the string representation of the error. +// +// See apierr.BaseError ErrorWithExtra for output format +// +// Satisfies the error interface. +func (m multiUploadError) Error() string { + extra := fmt.Sprintf("upload id: %s", m.uploadID) + return awserr.SprintError(m.Code(), m.Message(), extra, m.OrigErr()) +} + +// String returns the string representation of the error. +// Alias for Error to satisfy the stringer interface. +func (m multiUploadError) String() string { + return m.Error() +} + +// UploadID returns the id of the S3 upload which failed. +func (m multiUploadError) UploadID() string { + return m.uploadID +} + +// UploadOutput represents a response from the Upload() call. +type UploadOutput struct { + // The URL where the object was uploaded to. + Location string + + // The version of the object that was uploaded. Will only be populated if + // the S3 Bucket is versioned. If the bucket is not versioned this field + // will not be set. + VersionID *string + + // The ID for a multipart upload to S3. In the case of an error the error + // can be cast to the MultiUploadFailure interface to extract the upload ID. + UploadID string +} + +// WithUploaderRequestOptions appends to the Uploader's API request options. +func WithUploaderRequestOptions(opts ...request.Option) func(*Uploader) { + return func(u *Uploader) { + u.RequestOptions = append(u.RequestOptions, opts...) + } +} + +// The Uploader structure that calls Upload(). It is safe to call Upload() +// on this structure for multiple objects and across concurrent goroutines. +// Mutating the Uploader's properties is not safe to be done concurrently. +type Uploader struct { + // The buffer size (in bytes) to use when buffering data into chunks and + // sending them as parts to S3. The minimum allowed part size is 5MB, and + // if this value is set to zero, the DefaultUploadPartSize value will be used. + PartSize int64 + + // The number of goroutines to spin up in parallel per call to Upload when + // sending parts. If this is set to zero, the DefaultUploadConcurrency value + // will be used. + // + // The concurrency pool is not shared between calls to Upload. + Concurrency int + + // Setting this value to true will cause the SDK to avoid calling + // AbortMultipartUpload on a failure, leaving all successfully uploaded + // parts on S3 for manual recovery. + // + // Note that storing parts of an incomplete multipart upload counts towards + // space usage on S3 and will add additional costs if not cleaned up. + LeavePartsOnError bool + + // MaxUploadParts is the max number of parts which will be uploaded to S3. + // Will be used to calculate the partsize of the object to be uploaded. + // E.g: 5GB file, with MaxUploadParts set to 100, will upload the file + // as 100, 50MB parts. With a limited of s3.MaxUploadParts (10,000 parts). + // + // MaxUploadParts must not be used to limit the total number of bytes uploaded. + // Use a type like to io.LimitReader (https://golang.org/pkg/io/#LimitedReader) + // instead. An io.LimitReader is helpful when uploading an unbounded reader + // to S3, and you know its maximum size. Otherwise the reader's io.EOF returned + // error must be used to signal end of stream. + // + // Defaults to package const's MaxUploadParts value. + MaxUploadParts int + + // The client to use when uploading to S3. + S3 s3iface.S3API + + // List of request options that will be passed down to individual API + // operation requests made by the uploader. + RequestOptions []request.Option + + // Defines the buffer strategy used when uploading a part + BufferProvider ReadSeekerWriteToProvider + + // partPool allows for the re-usage of streaming payload part buffers between upload calls + partPool *partPool +} + +// NewUploader creates a new Uploader instance to upload objects to S3. Pass In +// additional functional options to customize the uploader's behavior. Requires a +// client.ConfigProvider in order to create a S3 service client. The session.Session +// satisfies the client.ConfigProvider interface. +// +// Example: +// // The session the S3 Uploader will use +// sess := session.Must(session.NewSession()) +// +// // Create an uploader with the session and default options +// uploader := s3manager.NewUploader(sess) +// +// // Create an uploader with the session and custom options +// uploader := s3manager.NewUploader(session, func(u *s3manager.Uploader) { +// u.PartSize = 64 * 1024 * 1024 // 64MB per part +// }) +func NewUploader(c client.ConfigProvider, options ...func(*Uploader)) *Uploader { + return newUploader(s3.New(c), options...) +} + +func newUploader(client s3iface.S3API, options ...func(*Uploader)) *Uploader { + u := &Uploader{ + S3: client, + PartSize: DefaultUploadPartSize, + Concurrency: DefaultUploadConcurrency, + LeavePartsOnError: false, + MaxUploadParts: MaxUploadParts, + BufferProvider: defaultUploadBufferProvider(), + } + + for _, option := range options { + option(u) + } + + u.partPool = newPartPool(u.PartSize) + + return u +} + +// NewUploaderWithClient creates a new Uploader instance to upload objects to S3. Pass in +// additional functional options to customize the uploader's behavior. Requires +// a S3 service client to make S3 API calls. +// +// Example: +// // The session the S3 Uploader will use +// sess := session.Must(session.NewSession()) +// +// // S3 service client the Upload manager will use. +// s3Svc := s3.New(sess) +// +// // Create an uploader with S3 client and default options +// uploader := s3manager.NewUploaderWithClient(s3Svc) +// +// // Create an uploader with S3 client and custom options +// uploader := s3manager.NewUploaderWithClient(s3Svc, func(u *s3manager.Uploader) { +// u.PartSize = 64 * 1024 * 1024 // 64MB per part +// }) +func NewUploaderWithClient(svc s3iface.S3API, options ...func(*Uploader)) *Uploader { + return newUploader(svc, options...) +} + +// Upload uploads an object to S3, intelligently buffering large files into +// smaller chunks and sending them in parallel across multiple goroutines. You +// can configure the buffer size and concurrency through the Uploader's parameters. +// +// Additional functional options can be provided to configure the individual +// upload. These options are copies of the Uploader instance Upload is called from. +// Modifying the options will not impact the original Uploader instance. +// +// Use the WithUploaderRequestOptions helper function to pass in request +// options that will be applied to all API operations made with this uploader. +// +// It is safe to call this method concurrently across goroutines. +// +// Example: +// // Upload input parameters +// upParams := &s3manager.UploadInput{ +// Bucket: &bucketName, +// Key: &keyName, +// Body: file, +// } +// +// // Perform an upload. +// result, err := uploader.Upload(upParams) +// +// // Perform upload with options different than the those in the Uploader. +// result, err := uploader.Upload(upParams, func(u *s3manager.Uploader) { +// u.PartSize = 10 * 1024 * 1024 // 10MB part size +// u.LeavePartsOnError = true // Don't delete the parts if the upload fails. +// }) +func (u Uploader) Upload(input *UploadInput, options ...func(*Uploader)) (*UploadOutput, error) { + return u.UploadWithContext(aws.BackgroundContext(), input, options...) +} + +// UploadWithContext uploads an object to S3, intelligently buffering large +// files into smaller chunks and sending them in parallel across multiple +// goroutines. You can configure the buffer size and concurrency through the +// Uploader's parameters. +// +// UploadWithContext is the same as Upload with the additional support for +// Context input parameters. The Context must not be nil. A nil Context will +// cause a panic. Use the context to add deadlining, timeouts, etc. The +// UploadWithContext may create sub-contexts for individual underlying requests. +// +// Additional functional options can be provided to configure the individual +// upload. These options are copies of the Uploader instance Upload is called from. +// Modifying the options will not impact the original Uploader instance. +// +// Use the WithUploaderRequestOptions helper function to pass in request +// options that will be applied to all API operations made with this uploader. +// +// It is safe to call this method concurrently across goroutines. +func (u Uploader) UploadWithContext(ctx aws.Context, input *UploadInput, opts ...func(*Uploader)) (*UploadOutput, error) { + i := uploader{in: input, cfg: u, ctx: ctx} + + for _, opt := range opts { + opt(&i.cfg) + } + + i.cfg.RequestOptions = append(i.cfg.RequestOptions, request.WithAppendUserAgent("S3Manager")) + + return i.upload() +} + +// UploadWithIterator will upload a batched amount of objects to S3. This operation uses +// the iterator pattern to know which object to upload next. Since this is an interface this +// allows for custom defined functionality. +// +// Example: +// svc:= s3manager.NewUploader(sess) +// +// objects := []BatchUploadObject{ +// { +// Object: &s3manager.UploadInput { +// Key: aws.String("key"), +// Bucket: aws.String("bucket"), +// }, +// }, +// } +// +// iter := &s3manager.UploadObjectsIterator{Objects: objects} +// if err := svc.UploadWithIterator(aws.BackgroundContext(), iter); err != nil { +// return err +// } +func (u Uploader) UploadWithIterator(ctx aws.Context, iter BatchUploadIterator, opts ...func(*Uploader)) error { + var errs []Error + for iter.Next() { + object := iter.UploadObject() + if _, err := u.UploadWithContext(ctx, object.Object, opts...); err != nil { + s3Err := Error{ + OrigErr: err, + Bucket: object.Object.Bucket, + Key: object.Object.Key, + } + + errs = append(errs, s3Err) + } + + if object.After == nil { + continue + } + + if err := object.After(); err != nil { + s3Err := Error{ + OrigErr: err, + Bucket: object.Object.Bucket, + Key: object.Object.Key, + } + + errs = append(errs, s3Err) + } + } + + if len(errs) > 0 { + return NewBatchError("BatchedUploadIncomplete", "some objects have failed to upload.", errs) + } + return nil +} + +// internal structure to manage an upload to S3. +type uploader struct { + ctx aws.Context + cfg Uploader + + in *UploadInput + + readerPos int64 // current reader position + totalSize int64 // set to -1 if the size is not known +} + +// internal logic for deciding whether to upload a single part or use a +// multipart upload. +func (u *uploader) upload() (*UploadOutput, error) { + if err := u.init(); err != nil { + return nil, awserr.New("ReadRequestBody", "unable to initialize upload", err) + } + + if u.cfg.PartSize < MinUploadPartSize { + msg := fmt.Sprintf("part size must be at least %d bytes", MinUploadPartSize) + return nil, awserr.New("ConfigError", msg, nil) + } + + // Do one read to determine if we have more than one part + reader, _, cleanup, err := u.nextReader() + if err == io.EOF { // single part + return u.singlePart(reader, cleanup) + } else if err != nil { + cleanup() + return nil, awserr.New("ReadRequestBody", "read upload data failed", err) + } + + mu := multiuploader{uploader: u} + return mu.upload(reader, cleanup) +} + +// init will initialize all default options. +func (u *uploader) init() error { + if u.cfg.Concurrency == 0 { + u.cfg.Concurrency = DefaultUploadConcurrency + } + if u.cfg.PartSize == 0 { + u.cfg.PartSize = DefaultUploadPartSize + } + if u.cfg.MaxUploadParts == 0 { + u.cfg.MaxUploadParts = MaxUploadParts + } + + // If PartSize was changed or partPool was never setup then we need to allocated a new pool + // so that we return []byte slices of the correct size + if u.cfg.partPool == nil || u.cfg.partPool.partSize != u.cfg.PartSize { + u.cfg.partPool = newPartPool(u.cfg.PartSize) + } + + // Try to get the total size for some optimizations + return u.initSize() +} + +// initSize tries to detect the total stream size, setting u.totalSize. If +// the size is not known, totalSize is set to -1. +func (u *uploader) initSize() error { + u.totalSize = -1 + + switch r := u.in.Body.(type) { + case io.Seeker: + n, err := aws.SeekerLen(r) + if err != nil { + return err + } + u.totalSize = n + + // Try to adjust partSize if it is too small and account for + // integer division truncation. + if u.totalSize/u.cfg.PartSize >= int64(u.cfg.MaxUploadParts) { + // Add one to the part size to account for remainders + // during the size calculation. e.g odd number of bytes. + u.cfg.PartSize = (u.totalSize / int64(u.cfg.MaxUploadParts)) + 1 + } + } + + return nil +} + +// nextReader returns a seekable reader representing the next packet of data. +// This operation increases the shared u.readerPos counter, but note that it +// does not need to be wrapped in a mutex because nextReader is only called +// from the main thread. +func (u *uploader) nextReader() (io.ReadSeeker, int, func(), error) { + type readerAtSeeker interface { + io.ReaderAt + io.ReadSeeker + } + switch r := u.in.Body.(type) { + case readerAtSeeker: + var err error + + n := u.cfg.PartSize + if u.totalSize >= 0 { + bytesLeft := u.totalSize - u.readerPos + + if bytesLeft <= u.cfg.PartSize { + err = io.EOF + n = bytesLeft + } + } + + var ( + reader io.ReadSeeker + cleanup func() + ) + + reader = io.NewSectionReader(r, u.readerPos, n) + if u.cfg.BufferProvider != nil { + reader, cleanup = u.cfg.BufferProvider.GetWriteTo(reader) + } else { + cleanup = func() {} + } + + u.readerPos += n + + return reader, int(n), cleanup, err + + default: + part := u.cfg.partPool.Get().([]byte) + n, err := readFillBuf(r, part) + u.readerPos += int64(n) + + cleanup := func() { + u.cfg.partPool.Put(part) + } + + return bytes.NewReader(part[0:n]), n, cleanup, err + } +} + +func readFillBuf(r io.Reader, b []byte) (offset int, err error) { + for offset < len(b) && err == nil { + var n int + n, err = r.Read(b[offset:]) + offset += n + } + + return offset, err +} + +// singlePart contains upload logic for uploading a single chunk via +// a regular PutObject request. Multipart requests require at least two +// parts, or at least 5MB of data. +func (u *uploader) singlePart(r io.ReadSeeker, cleanup func()) (*UploadOutput, error) { + defer cleanup() + + params := &s3.PutObjectInput{} + awsutil.Copy(params, u.in) + params.Body = r + + // Need to use request form because URL generated in request is + // used in return. + req, out := u.cfg.S3.PutObjectRequest(params) + req.SetContext(u.ctx) + req.ApplyOptions(u.cfg.RequestOptions...) + if err := req.Send(); err != nil { + return nil, err + } + + url := req.HTTPRequest.URL.String() + return &UploadOutput{ + Location: url, + VersionID: out.VersionId, + }, nil +} + +// internal structure to manage a specific multipart upload to S3. +type multiuploader struct { + *uploader + wg sync.WaitGroup + m sync.Mutex + err error + uploadID string + parts completedParts +} + +// keeps track of a single chunk of data being sent to S3. +type chunk struct { + buf io.ReadSeeker + num int64 + cleanup func() +} + +// completedParts is a wrapper to make parts sortable by their part number, +// since S3 required this list to be sent in sorted order. +type completedParts []*s3.CompletedPart + +func (a completedParts) Len() int { return len(a) } +func (a completedParts) Swap(i, j int) { a[i], a[j] = a[j], a[i] } +func (a completedParts) Less(i, j int) bool { return *a[i].PartNumber < *a[j].PartNumber } + +// upload will perform a multipart upload using the firstBuf buffer containing +// the first chunk of data. +func (u *multiuploader) upload(firstBuf io.ReadSeeker, cleanup func()) (*UploadOutput, error) { + params := &s3.CreateMultipartUploadInput{} + awsutil.Copy(params, u.in) + + // Create the multipart + resp, err := u.cfg.S3.CreateMultipartUploadWithContext(u.ctx, params, u.cfg.RequestOptions...) + if err != nil { + return nil, err + } + u.uploadID = *resp.UploadId + + // Create the workers + ch := make(chan chunk, u.cfg.Concurrency) + for i := 0; i < u.cfg.Concurrency; i++ { + u.wg.Add(1) + go u.readChunk(ch) + } + + // Send part 1 to the workers + var num int64 = 1 + ch <- chunk{buf: firstBuf, num: num, cleanup: cleanup} + + // Read and queue the rest of the parts + for u.geterr() == nil && err == nil { + var ( + reader io.ReadSeeker + nextChunkLen int + ok bool + ) + + reader, nextChunkLen, cleanup, err = u.nextReader() + ok, err = u.shouldContinue(num, nextChunkLen, err) + if !ok { + cleanup() + if err != nil { + u.seterr(err) + } + break + } + + num++ + + ch <- chunk{buf: reader, num: num, cleanup: cleanup} + } + + // Close the channel, wait for workers, and complete upload + close(ch) + u.wg.Wait() + complete := u.complete() + + if err := u.geterr(); err != nil { + return nil, &multiUploadError{ + awsError: awserr.New( + "MultipartUpload", + "upload multipart failed", + err), + uploadID: u.uploadID, + } + } + + // Create a presigned URL of the S3 Get Object in order to have parity with + // single part upload. + getReq, _ := u.cfg.S3.GetObjectRequest(&s3.GetObjectInput{ + Bucket: u.in.Bucket, + Key: u.in.Key, + }) + getReq.Config.Credentials = credentials.AnonymousCredentials + uploadLocation, _, _ := getReq.PresignRequest(1) + + return &UploadOutput{ + Location: uploadLocation, + VersionID: complete.VersionId, + UploadID: u.uploadID, + }, nil +} + +func (u *multiuploader) shouldContinue(part int64, nextChunkLen int, err error) (bool, error) { + if err != nil && err != io.EOF { + return false, awserr.New("ReadRequestBody", "read multipart upload data failed", err) + } + + if nextChunkLen == 0 { + // No need to upload empty part, if file was empty to start + // with empty single part would of been created and never + // started multipart upload. + return false, nil + } + + part++ + // This upload exceeded maximum number of supported parts, error now. + if part > int64(u.cfg.MaxUploadParts) || part > int64(MaxUploadParts) { + var msg string + if part > int64(u.cfg.MaxUploadParts) { + msg = fmt.Sprintf("exceeded total allowed configured MaxUploadParts (%d). Adjust PartSize to fit in this limit", + u.cfg.MaxUploadParts) + } else { + msg = fmt.Sprintf("exceeded total allowed S3 limit MaxUploadParts (%d). Adjust PartSize to fit in this limit", + MaxUploadParts) + } + return false, awserr.New("TotalPartsExceeded", msg, nil) + } + + return true, err +} + +// readChunk runs in worker goroutines to pull chunks off of the ch channel +// and send() them as UploadPart requests. +func (u *multiuploader) readChunk(ch chan chunk) { + defer u.wg.Done() + for { + data, ok := <-ch + + if !ok { + break + } + + if u.geterr() == nil { + if err := u.send(data); err != nil { + u.seterr(err) + } + } + } +} + +// send performs an UploadPart request and keeps track of the completed +// part information. +func (u *multiuploader) send(c chunk) error { + params := &s3.UploadPartInput{ + Bucket: u.in.Bucket, + Key: u.in.Key, + Body: c.buf, + UploadId: &u.uploadID, + SSECustomerAlgorithm: u.in.SSECustomerAlgorithm, + SSECustomerKey: u.in.SSECustomerKey, + PartNumber: &c.num, + } + + resp, err := u.cfg.S3.UploadPartWithContext(u.ctx, params, u.cfg.RequestOptions...) + c.cleanup() + if err != nil { + return err + } + + n := c.num + completed := &s3.CompletedPart{ETag: resp.ETag, PartNumber: &n} + + u.m.Lock() + u.parts = append(u.parts, completed) + u.m.Unlock() + + return nil +} + +// geterr is a thread-safe getter for the error object +func (u *multiuploader) geterr() error { + u.m.Lock() + defer u.m.Unlock() + + return u.err +} + +// seterr is a thread-safe setter for the error object +func (u *multiuploader) seterr(e error) { + u.m.Lock() + defer u.m.Unlock() + + u.err = e +} + +// fail will abort the multipart unless LeavePartsOnError is set to true. +func (u *multiuploader) fail() { + if u.cfg.LeavePartsOnError { + return + } + + params := &s3.AbortMultipartUploadInput{ + Bucket: u.in.Bucket, + Key: u.in.Key, + UploadId: &u.uploadID, + } + _, err := u.cfg.S3.AbortMultipartUploadWithContext(u.ctx, params, u.cfg.RequestOptions...) + if err != nil { + logMessage(u.cfg.S3, aws.LogDebug, fmt.Sprintf("failed to abort multipart upload, %v", err)) + } +} + +// complete successfully completes a multipart upload and returns the response. +func (u *multiuploader) complete() *s3.CompleteMultipartUploadOutput { + if u.geterr() != nil { + u.fail() + return nil + } + + // Parts must be sorted in PartNumber order. + sort.Sort(u.parts) + + params := &s3.CompleteMultipartUploadInput{ + Bucket: u.in.Bucket, + Key: u.in.Key, + UploadId: &u.uploadID, + MultipartUpload: &s3.CompletedMultipartUpload{Parts: u.parts}, + } + resp, err := u.cfg.S3.CompleteMultipartUploadWithContext(u.ctx, params, u.cfg.RequestOptions...) + if err != nil { + u.seterr(err) + u.fail() + } + + return resp +} + +type partPool struct { + partSize int64 + sync.Pool +} + +func newPartPool(partSize int64) *partPool { + p := &partPool{partSize: partSize} + + p.New = func() interface{} { + return make([]byte, p.partSize) + } + + return p +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload_input.go b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload_input.go new file mode 100644 index 0000000..f1ccc24 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload_input.go @@ -0,0 +1,160 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +package s3manager + +import ( + "io" + "time" +) + +// UploadInput provides the input parameters for uploading a stream or buffer +// to an object in an Amazon S3 bucket. This type is similar to the s3 +// package's PutObjectInput with the exception that the Body member is an +// io.Reader instead of an io.ReadSeeker. +type UploadInput struct { + _ struct{} `locationName:"PutObjectRequest" type:"structure" payload:"Body"` + + // The canned ACL to apply to the object. For more information, see Canned ACL + // (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL). + ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"` + + // The readable body payload to send to S3. + Body io.Reader + + // Name of the bucket to which the PUT operation was initiated. + // + // Bucket is a required field + Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` + + // Can be used to specify caching behavior along the request/reply chain. For + // more information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9 + // (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9). + CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"` + + // Specifies presentational information for the object. For more information, + // see http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1). + ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"` + + // Specifies what content encodings have been applied to the object and thus + // what decoding mechanisms must be applied to obtain the media-type referenced + // by the Content-Type header field. For more information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11 + // (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11). + ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"` + + // The language the content is in. + ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"` + + // The base64-encoded 128-bit MD5 digest of the message (without the headers) + // according to RFC 1864. This header can be used as a message integrity check + // to verify that the data is the same data that was originally sent. Although + // it is optional, we recommend using the Content-MD5 mechanism as an end-to-end + // integrity check. For more information about REST request authentication, + // see REST Authentication (https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html). + ContentMD5 *string `location:"header" locationName:"Content-MD5" type:"string"` + + // A standard MIME type describing the format of the contents. For more information, + // see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17). + ContentType *string `location:"header" locationName:"Content-Type" type:"string"` + + // The date and time at which the object is no longer cacheable. For more information, + // see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21). + Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"` + + // Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object. + GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"` + + // Allows grantee to read the object data and its metadata. + GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"` + + // Allows grantee to read the object ACL. + GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"` + + // Allows grantee to write the ACL for the applicable object. + GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"` + + // Object key for which the PUT operation was initiated. + // + // Key is a required field + Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + + // A map of metadata to store with the object in S3. + Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"` + + // Specifies whether a legal hold will be applied to this object. For more information + // about S3 Object Lock, see Object Lock (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). + ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"` + + // The Object Lock mode that you want to apply to this object. + ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"` + + // The date and time when you want this object's Object Lock to expire. + ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"` + + // Confirms that the requester knows that she or he will be charged for the + // request. Bucket owners need not specify this parameter in their requests. + // Documentation on downloading objects from requester pays buckets can be found + // at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` + + // Specifies the algorithm to use to when encrypting the object (e.g., AES256). + SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"` + + // Specifies the customer-provided encryption key for Amazon S3 to use in encrypting + // data. This value is used to store the object and then it is discarded; Amazon + // does not store the encryption key. The key must be appropriate for use with + // the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm + // header. + SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"` + + // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. + // Amazon S3 uses this header for a message integrity check to ensure the encryption + // key was transmitted without error. + SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"` + + // Specifies the AWS KMS Encryption Context to use for object encryption. The + // value of this header is a base64-encoded UTF-8 string holding JSON with the + // encryption context key-value pairs. + SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"` + + // If the x-amz-server-side-encryption is present and has the value of aws:kms, + // this header specifies the ID of the AWS Key Management Service (AWS KMS) + // customer master key (CMK) that was used for the object. + // + // If the value of x-amz-server-side-encryption is aws:kms, this header specifies + // the ID of the AWS KMS CMK that will be used for the object. If you specify + // x-amz-server-side-encryption:aws:kms, but do not provide x-amz-server-side-encryption-aws-kms-key-id, + // Amazon S3 uses the AWS managed CMK in AWS to protect the data. + SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"` + + // The Server-side encryption algorithm used when storing this object in S3 + // (e.g., AES256, aws:kms). + ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"` + + // If you don't specify, Standard is the default storage class. Amazon S3 supports + // other storage classes. + StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"` + + // The tag-set for the object. The tag-set must be encoded as URL Query parameters. + // (For example, "Key1=Value1") + Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"` + + // If the bucket is configured as a website, redirects requests for this object + // to another object in the same bucket or to an external URL. Amazon S3 stores + // the value of this header in the object metadata. For information about object + // metadata, see . + // + // In the following example, the request header sets the redirect to an object + // (anotherPage.html) in the same bucket: + // + // x-amz-website-redirect-location: /anotherPage.html + // + // In the following example, the request header sets the object redirect to + // another website: + // + // x-amz-website-redirect-location: http://www.example.com/ + // + // For more information about website hosting in Amazon S3, see Hosting Websites + // on Amazon S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html) + // and How to Configure Website Page Redirects (https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html). + WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"` +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/writer_read_from.go b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/writer_read_from.go new file mode 100644 index 0000000..765dc07 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/writer_read_from.go @@ -0,0 +1,75 @@ +package s3manager + +import ( + "bufio" + "io" + "sync" + + "github.com/aws/aws-sdk-go/internal/sdkio" +) + +// WriterReadFrom defines an interface implementing io.Writer and io.ReaderFrom +type WriterReadFrom interface { + io.Writer + io.ReaderFrom +} + +// WriterReadFromProvider provides an implementation of io.ReadFrom for the given io.Writer +type WriterReadFromProvider interface { + GetReadFrom(writer io.Writer) (w WriterReadFrom, cleanup func()) +} + +type bufferedWriter interface { + WriterReadFrom + Flush() error + Reset(io.Writer) +} + +type bufferedReadFrom struct { + bufferedWriter +} + +func (b *bufferedReadFrom) ReadFrom(r io.Reader) (int64, error) { + n, err := b.bufferedWriter.ReadFrom(r) + if flushErr := b.Flush(); flushErr != nil && err == nil { + err = flushErr + } + return n, err +} + +// PooledBufferedReadFromProvider is a WriterReadFromProvider that uses a sync.Pool +// to manage allocation and reuse of *bufio.Writer structures. +type PooledBufferedReadFromProvider struct { + pool sync.Pool +} + +// NewPooledBufferedWriterReadFromProvider returns a new PooledBufferedReadFromProvider +// Size is used to control the size of the underlying *bufio.Writer created for +// calls to GetReadFrom. +func NewPooledBufferedWriterReadFromProvider(size int) *PooledBufferedReadFromProvider { + if size < int(32*sdkio.KibiByte) { + size = int(64 * sdkio.KibiByte) + } + + return &PooledBufferedReadFromProvider{ + pool: sync.Pool{ + New: func() interface{} { + return &bufferedReadFrom{bufferedWriter: bufio.NewWriterSize(nil, size)} + }, + }, + } +} + +// GetReadFrom takes an io.Writer and wraps it with a type which satisfies the WriterReadFrom +// interface/ Additionally a cleanup function is provided which must be called after usage of the WriterReadFrom +// has been completed in order to allow the reuse of the *bufio.Writer +func (p *PooledBufferedReadFromProvider) GetReadFrom(writer io.Writer) (r WriterReadFrom, cleanup func()) { + buffer := p.pool.Get().(*bufferedReadFrom) + buffer.Reset(writer) + r = buffer + cleanup = func() { + buffer.Reset(nil) // Reset to nil writer to release reference + p.pool.Put(buffer) + } + return r, cleanup +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/service.go b/vendor/github.com/aws/aws-sdk-go/service/s3/service.go new file mode 100644 index 0000000..07e1297 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/service.go @@ -0,0 +1,100 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +package s3 + +import ( + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/client" + "github.com/aws/aws-sdk-go/aws/client/metadata" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/aws/signer/v4" + "github.com/aws/aws-sdk-go/private/protocol/restxml" +) + +// S3 provides the API operation methods for making requests to +// Amazon Simple Storage Service. See this package's package overview docs +// for details on the service. +// +// S3 methods are safe to use concurrently. It is not safe to +// modify mutate any of the struct's properties though. +type S3 struct { + *client.Client +} + +// Used for custom client initialization logic +var initClient func(*client.Client) + +// Used for custom request initialization logic +var initRequest func(*request.Request) + +// Service information constants +const ( + ServiceName = "s3" // Name of service. + EndpointsID = ServiceName // ID to lookup a service endpoint with. + ServiceID = "S3" // ServiceID is a unique identifer of a specific service. +) + +// New creates a new instance of the S3 client with a session. +// If additional configuration is needed for the client instance use the optional +// aws.Config parameter to add your extra config. +// +// Example: +// // Create a S3 client from just a session. +// svc := s3.New(mySession) +// +// // Create a S3 client with additional configuration +// svc := s3.New(mySession, aws.NewConfig().WithRegion("us-west-2")) +func New(p client.ConfigProvider, cfgs ...*aws.Config) *S3 { + c := p.ClientConfig(EndpointsID, cfgs...) + return newClient(*c.Config, c.Handlers, c.PartitionID, c.Endpoint, c.SigningRegion, c.SigningName) +} + +// newClient creates, initializes and returns a new service client instance. +func newClient(cfg aws.Config, handlers request.Handlers, partitionID, endpoint, signingRegion, signingName string) *S3 { + svc := &S3{ + Client: client.New( + cfg, + metadata.ClientInfo{ + ServiceName: ServiceName, + ServiceID: ServiceID, + SigningName: signingName, + SigningRegion: signingRegion, + PartitionID: partitionID, + Endpoint: endpoint, + APIVersion: "2006-03-01", + }, + handlers, + ), + } + + // Handlers + svc.Handlers.Sign.PushBackNamed(v4.BuildNamedHandler(v4.SignRequestHandler.Name, func(s *v4.Signer) { + s.DisableURIPathEscaping = true + })) + svc.Handlers.Build.PushBackNamed(restxml.BuildHandler) + svc.Handlers.Unmarshal.PushBackNamed(restxml.UnmarshalHandler) + svc.Handlers.UnmarshalMeta.PushBackNamed(restxml.UnmarshalMetaHandler) + svc.Handlers.UnmarshalError.PushBackNamed(restxml.UnmarshalErrorHandler) + + svc.Handlers.UnmarshalStream.PushBackNamed(restxml.UnmarshalHandler) + + // Run custom client initialization if present + if initClient != nil { + initClient(svc.Client) + } + + return svc +} + +// newRequest creates a new request for a S3 operation and runs any +// custom request initialization. +func (c *S3) newRequest(op *request.Operation, params, data interface{}) *request.Request { + req := c.NewRequest(op, params, data) + + // Run custom request initialization if present + if initRequest != nil { + initRequest(req) + } + + return req +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/sse.go b/vendor/github.com/aws/aws-sdk-go/service/s3/sse.go new file mode 100644 index 0000000..b71c835 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/sse.go @@ -0,0 +1,84 @@ +package s3 + +import ( + "crypto/md5" + "encoding/base64" + "net/http" + + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/request" +) + +var errSSERequiresSSL = awserr.New("ConfigError", "cannot send SSE keys over HTTP.", nil) + +func validateSSERequiresSSL(r *request.Request) { + if r.HTTPRequest.URL.Scheme == "https" { + return + } + + if iface, ok := r.Params.(sseCustomerKeyGetter); ok { + if len(iface.getSSECustomerKey()) > 0 { + r.Error = errSSERequiresSSL + return + } + } + + if iface, ok := r.Params.(copySourceSSECustomerKeyGetter); ok { + if len(iface.getCopySourceSSECustomerKey()) > 0 { + r.Error = errSSERequiresSSL + return + } + } +} + +const ( + sseKeyHeader = "x-amz-server-side-encryption-customer-key" + sseKeyMD5Header = sseKeyHeader + "-md5" +) + +func computeSSEKeyMD5(r *request.Request) { + var key string + if g, ok := r.Params.(sseCustomerKeyGetter); ok { + key = g.getSSECustomerKey() + } + + computeKeyMD5(sseKeyHeader, sseKeyMD5Header, key, r.HTTPRequest) +} + +const ( + copySrcSSEKeyHeader = "x-amz-copy-source-server-side-encryption-customer-key" + copySrcSSEKeyMD5Header = copySrcSSEKeyHeader + "-md5" +) + +func computeCopySourceSSEKeyMD5(r *request.Request) { + var key string + if g, ok := r.Params.(copySourceSSECustomerKeyGetter); ok { + key = g.getCopySourceSSECustomerKey() + } + + computeKeyMD5(copySrcSSEKeyHeader, copySrcSSEKeyMD5Header, key, r.HTTPRequest) +} + +func computeKeyMD5(keyHeader, keyMD5Header, key string, r *http.Request) { + if len(key) == 0 { + // Backwards compatiablity where user just set the header value instead + // of using the API parameter, or setting the header value for an + // operation without the parameters modeled. + key = r.Header.Get(keyHeader) + if len(key) == 0 { + return + } + + // In backwards compatiable, the header's value is not base64 encoded, + // and needs to be encoded and updated by the SDK's customizations. + b64Key := base64.StdEncoding.EncodeToString([]byte(key)) + r.Header.Set(keyHeader, b64Key) + } + + // Only update Key's MD5 if not already set. + if len(r.Header.Get(keyMD5Header)) == 0 { + sum := md5.Sum([]byte(key)) + keyMD5 := base64.StdEncoding.EncodeToString(sum[:]) + r.Header.Set(keyMD5Header, keyMD5) + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/statusok_error.go b/vendor/github.com/aws/aws-sdk-go/service/s3/statusok_error.go new file mode 100644 index 0000000..f6a69ae --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/statusok_error.go @@ -0,0 +1,40 @@ +package s3 + +import ( + "bytes" + "io/ioutil" + "net/http" + + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/internal/sdkio" +) + +func copyMultipartStatusOKUnmarhsalError(r *request.Request) { + b, err := ioutil.ReadAll(r.HTTPResponse.Body) + if err != nil { + r.Error = awserr.NewRequestFailure( + awserr.New(request.ErrCodeSerialization, "unable to read response body", err), + r.HTTPResponse.StatusCode, + r.RequestID, + ) + return + } + body := bytes.NewReader(b) + r.HTTPResponse.Body = ioutil.NopCloser(body) + defer body.Seek(0, sdkio.SeekStart) + + if body.Len() == 0 { + // If there is no body don't attempt to parse the body. + return + } + + unmarshalError(r) + if err, ok := r.Error.(awserr.Error); ok && err != nil { + if err.Code() == request.ErrCodeSerialization { + r.Error = nil + return + } + r.HTTPResponse.StatusCode = http.StatusServiceUnavailable + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/unmarshal_error.go b/vendor/github.com/aws/aws-sdk-go/service/s3/unmarshal_error.go new file mode 100644 index 0000000..5b63fac --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/unmarshal_error.go @@ -0,0 +1,88 @@ +package s3 + +import ( + "encoding/xml" + "fmt" + "io" + "io/ioutil" + "net/http" + "strings" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil" +) + +type xmlErrorResponse struct { + XMLName xml.Name `xml:"Error"` + Code string `xml:"Code"` + Message string `xml:"Message"` +} + +func unmarshalError(r *request.Request) { + defer r.HTTPResponse.Body.Close() + defer io.Copy(ioutil.Discard, r.HTTPResponse.Body) + + // Bucket exists in a different region, and request needs + // to be made to the correct region. + if r.HTTPResponse.StatusCode == http.StatusMovedPermanently { + msg := fmt.Sprintf( + "incorrect region, the bucket is not in '%s' region at endpoint '%s'", + aws.StringValue(r.Config.Region), + aws.StringValue(r.Config.Endpoint), + ) + if v := r.HTTPResponse.Header.Get("x-amz-bucket-region"); len(v) != 0 { + msg += fmt.Sprintf(", bucket is in '%s' region", v) + } + r.Error = awserr.NewRequestFailure( + awserr.New("BucketRegionError", msg, nil), + r.HTTPResponse.StatusCode, + r.RequestID, + ) + return + } + + // Attempt to parse error from body if it is known + var errResp xmlErrorResponse + err := xmlutil.UnmarshalXMLError(&errResp, r.HTTPResponse.Body) + if err == io.EOF { + // Only capture the error if an unmarshal error occurs that is not EOF, + // because S3 might send an error without a error message which causes + // the XML unmarshal to fail with EOF. + err = nil + } + if err != nil { + r.Error = awserr.NewRequestFailure( + awserr.New(request.ErrCodeSerialization, + "failed to unmarshal error message", err), + r.HTTPResponse.StatusCode, + r.RequestID, + ) + return + } + + // Fallback to status code converted to message if still no error code + if len(errResp.Code) == 0 { + statusText := http.StatusText(r.HTTPResponse.StatusCode) + errResp.Code = strings.Replace(statusText, " ", "", -1) + errResp.Message = statusText + } + + r.Error = awserr.NewRequestFailure( + awserr.New(errResp.Code, errResp.Message, err), + r.HTTPResponse.StatusCode, + r.RequestID, + ) +} + +// A RequestFailure provides access to the S3 Request ID and Host ID values +// returned from API operation errors. Getting the error as a string will +// return the formated error with the same information as awserr.RequestFailure, +// while also adding the HostID value from the response. +type RequestFailure interface { + awserr.RequestFailure + + // Host ID is the S3 Host ID needed for debug, and contacting support + HostID() string +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/waiters.go b/vendor/github.com/aws/aws-sdk-go/service/s3/waiters.go new file mode 100644 index 0000000..2596c69 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/waiters.go @@ -0,0 +1,214 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +package s3 + +import ( + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/request" +) + +// WaitUntilBucketExists uses the Amazon S3 API operation +// HeadBucket to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *S3) WaitUntilBucketExists(input *HeadBucketInput) error { + return c.WaitUntilBucketExistsWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilBucketExistsWithContext is an extended version of WaitUntilBucketExists. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) WaitUntilBucketExistsWithContext(ctx aws.Context, input *HeadBucketInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilBucketExists", + MaxAttempts: 20, + Delay: request.ConstantWaiterDelay(5 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.StatusWaiterMatch, + Expected: 200, + }, + { + State: request.SuccessWaiterState, + Matcher: request.StatusWaiterMatch, + Expected: 301, + }, + { + State: request.SuccessWaiterState, + Matcher: request.StatusWaiterMatch, + Expected: 403, + }, + { + State: request.RetryWaiterState, + Matcher: request.StatusWaiterMatch, + Expected: 404, + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *HeadBucketInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.HeadBucketRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilBucketNotExists uses the Amazon S3 API operation +// HeadBucket to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *S3) WaitUntilBucketNotExists(input *HeadBucketInput) error { + return c.WaitUntilBucketNotExistsWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilBucketNotExistsWithContext is an extended version of WaitUntilBucketNotExists. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) WaitUntilBucketNotExistsWithContext(ctx aws.Context, input *HeadBucketInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilBucketNotExists", + MaxAttempts: 20, + Delay: request.ConstantWaiterDelay(5 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.StatusWaiterMatch, + Expected: 404, + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *HeadBucketInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.HeadBucketRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilObjectExists uses the Amazon S3 API operation +// HeadObject to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *S3) WaitUntilObjectExists(input *HeadObjectInput) error { + return c.WaitUntilObjectExistsWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilObjectExistsWithContext is an extended version of WaitUntilObjectExists. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) WaitUntilObjectExistsWithContext(ctx aws.Context, input *HeadObjectInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilObjectExists", + MaxAttempts: 20, + Delay: request.ConstantWaiterDelay(5 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.StatusWaiterMatch, + Expected: 200, + }, + { + State: request.RetryWaiterState, + Matcher: request.StatusWaiterMatch, + Expected: 404, + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *HeadObjectInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.HeadObjectRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} + +// WaitUntilObjectNotExists uses the Amazon S3 API operation +// HeadObject to wait for a condition to be met before returning. +// If the condition is not met within the max attempt window, an error will +// be returned. +func (c *S3) WaitUntilObjectNotExists(input *HeadObjectInput) error { + return c.WaitUntilObjectNotExistsWithContext(aws.BackgroundContext(), input) +} + +// WaitUntilObjectNotExistsWithContext is an extended version of WaitUntilObjectNotExists. +// With the support for passing in a context and options to configure the +// Waiter and the underlying request options. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) WaitUntilObjectNotExistsWithContext(ctx aws.Context, input *HeadObjectInput, opts ...request.WaiterOption) error { + w := request.Waiter{ + Name: "WaitUntilObjectNotExists", + MaxAttempts: 20, + Delay: request.ConstantWaiterDelay(5 * time.Second), + Acceptors: []request.WaiterAcceptor{ + { + State: request.SuccessWaiterState, + Matcher: request.StatusWaiterMatch, + Expected: 404, + }, + }, + Logger: c.Config.Logger, + NewRequest: func(opts []request.Option) (*request.Request, error) { + var inCpy *HeadObjectInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.HeadObjectRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + w.ApplyOptions(opts...) + + return w.WaitWithContext(ctx) +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/sts/api.go b/vendor/github.com/aws/aws-sdk-go/service/sts/api.go new file mode 100644 index 0000000..9c5ed45 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/sts/api.go @@ -0,0 +1,2750 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +package sts + +import ( + "fmt" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awsutil" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/request" +) + +const opAssumeRole = "AssumeRole" + +// AssumeRoleRequest generates a "aws/request.Request" representing the +// client's request for the AssumeRole operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AssumeRole for more information on using the AssumeRole +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AssumeRoleRequest method. +// req, resp := client.AssumeRoleRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRole +func (c *STS) AssumeRoleRequest(input *AssumeRoleInput) (req *request.Request, output *AssumeRoleOutput) { + op := &request.Operation{ + Name: opAssumeRole, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AssumeRoleInput{} + } + + output = &AssumeRoleOutput{} + req = c.newRequest(op, input, output) + return +} + +// AssumeRole API operation for AWS Security Token Service. +// +// Returns a set of temporary security credentials that you can use to access +// AWS resources that you might not normally have access to. These temporary +// credentials consist of an access key ID, a secret access key, and a security +// token. Typically, you use AssumeRole within your account or for cross-account +// access. For a comparison of AssumeRole with other API operations that produce +// temporary credentials, see Requesting Temporary Security Credentials (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) +// and Comparing the AWS STS API operations (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison) +// in the IAM User Guide. +// +// You cannot use AWS account root user credentials to call AssumeRole. You +// must use credentials for an IAM user or an IAM role to call AssumeRole. +// +// For cross-account access, imagine that you own multiple accounts and need +// to access resources in each account. You could create long-term credentials +// in each account to access those resources. However, managing all those credentials +// and remembering which one can access which account can be time consuming. +// Instead, you can create one set of long-term credentials in one account. +// Then use temporary security credentials to access all the other accounts +// by assuming roles in those accounts. For more information about roles, see +// IAM Roles (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) +// in the IAM User Guide. +// +// By default, the temporary security credentials created by AssumeRole last +// for one hour. However, you can use the optional DurationSeconds parameter +// to specify the duration of your session. You can provide a value from 900 +// seconds (15 minutes) up to the maximum session duration setting for the role. +// This setting can have a value from 1 hour to 12 hours. To learn how to view +// the maximum value for your role, see View the Maximum Session Duration Setting +// for a Role (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session) +// in the IAM User Guide. The maximum session duration limit applies when you +// use the AssumeRole* API operations or the assume-role* CLI commands. However +// the limit does not apply when you use those operations to create a console +// URL. For more information, see Using IAM Roles (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) +// in the IAM User Guide. +// +// The temporary security credentials created by AssumeRole can be used to make +// API calls to any AWS service with the following exception: You cannot call +// the AWS STS GetFederationToken or GetSessionToken API operations. +// +// (Optional) You can pass inline or managed session policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) +// to this operation. You can pass a single JSON policy document to use as an +// inline session policy. You can also specify up to 10 managed policies to +// use as managed session policies. The plain text that you use for both inline +// and managed session policies shouldn't exceed 2048 characters. Passing policies +// to this operation returns new temporary credentials. The resulting session's +// permissions are the intersection of the role's identity-based policy and +// the session policies. You can use the role's temporary credentials in subsequent +// AWS API calls to access resources in the account that owns the role. You +// cannot use session policies to grant more permissions than those allowed +// by the identity-based policy of the role that is being assumed. For more +// information, see Session Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) +// in the IAM User Guide. +// +// To assume a role from a different account, your AWS account must be trusted +// by the role. The trust relationship is defined in the role's trust policy +// when the role is created. That trust policy states which accounts are allowed +// to delegate that access to users in the account. +// +// A user who wants to access a role in a different account must also have permissions +// that are delegated from the user account administrator. The administrator +// must attach a policy that allows the user to call AssumeRole for the ARN +// of the role in the other account. If the user is in the same account as the +// role, then you can do either of the following: +// +// * Attach a policy to the user (identical to the previous user in a different +// account). +// +// * Add the user as a principal directly in the role's trust policy. +// +// In this case, the trust policy acts as an IAM resource-based policy. Users +// in the same account as the role do not need explicit permission to assume +// the role. For more information about trust policies and resource-based policies, +// see IAM Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) +// in the IAM User Guide. +// +// Using MFA with AssumeRole +// +// (Optional) You can include multi-factor authentication (MFA) information +// when you call AssumeRole. This is useful for cross-account scenarios to ensure +// that the user that assumes the role has been authenticated with an AWS MFA +// device. In that scenario, the trust policy of the role being assumed includes +// a condition that tests for MFA authentication. If the caller does not include +// valid MFA information, the request to assume the role is denied. The condition +// in a trust policy that tests for MFA authentication might look like the following +// example. +// +// "Condition": {"Bool": {"aws:MultiFactorAuthPresent": true}} +// +// For more information, see Configuring MFA-Protected API Access (https://docs.aws.amazon.com/IAM/latest/UserGuide/MFAProtectedAPI.html) +// in the IAM User Guide guide. +// +// To use MFA with AssumeRole, you pass values for the SerialNumber and TokenCode +// parameters. The SerialNumber value identifies the user's hardware or virtual +// MFA device. The TokenCode is the time-based one-time password (TOTP) that +// the MFA device produces. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Security Token Service's +// API operation AssumeRole for usage and error information. +// +// Returned Error Codes: +// * ErrCodeMalformedPolicyDocumentException "MalformedPolicyDocument" +// The request was rejected because the policy document was malformed. The error +// message describes the specific error. +// +// * ErrCodePackedPolicyTooLargeException "PackedPolicyTooLarge" +// The request was rejected because the policy document was too large. The error +// message describes how big the policy document is, in packed form, as a percentage +// of what the API allows. +// +// * ErrCodeRegionDisabledException "RegionDisabledException" +// STS is not activated in the requested region for the account that is being +// asked to generate credentials. The account administrator must use the IAM +// console to activate STS in that region. For more information, see Activating +// and Deactivating AWS STS in an AWS Region (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html) +// in the IAM User Guide. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRole +func (c *STS) AssumeRole(input *AssumeRoleInput) (*AssumeRoleOutput, error) { + req, out := c.AssumeRoleRequest(input) + return out, req.Send() +} + +// AssumeRoleWithContext is the same as AssumeRole with the addition of +// the ability to pass a context and additional request options. +// +// See AssumeRole for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *STS) AssumeRoleWithContext(ctx aws.Context, input *AssumeRoleInput, opts ...request.Option) (*AssumeRoleOutput, error) { + req, out := c.AssumeRoleRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAssumeRoleWithSAML = "AssumeRoleWithSAML" + +// AssumeRoleWithSAMLRequest generates a "aws/request.Request" representing the +// client's request for the AssumeRoleWithSAML operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AssumeRoleWithSAML for more information on using the AssumeRoleWithSAML +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AssumeRoleWithSAMLRequest method. +// req, resp := client.AssumeRoleWithSAMLRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleWithSAML +func (c *STS) AssumeRoleWithSAMLRequest(input *AssumeRoleWithSAMLInput) (req *request.Request, output *AssumeRoleWithSAMLOutput) { + op := &request.Operation{ + Name: opAssumeRoleWithSAML, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AssumeRoleWithSAMLInput{} + } + + output = &AssumeRoleWithSAMLOutput{} + req = c.newRequest(op, input, output) + req.Config.Credentials = credentials.AnonymousCredentials + return +} + +// AssumeRoleWithSAML API operation for AWS Security Token Service. +// +// Returns a set of temporary security credentials for users who have been authenticated +// via a SAML authentication response. This operation provides a mechanism for +// tying an enterprise identity store or directory to role-based AWS access +// without user-specific credentials or configuration. For a comparison of AssumeRoleWithSAML +// with the other API operations that produce temporary credentials, see Requesting +// Temporary Security Credentials (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) +// and Comparing the AWS STS API operations (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison) +// in the IAM User Guide. +// +// The temporary security credentials returned by this operation consist of +// an access key ID, a secret access key, and a security token. Applications +// can use these temporary security credentials to sign calls to AWS services. +// +// By default, the temporary security credentials created by AssumeRoleWithSAML +// last for one hour. However, you can use the optional DurationSeconds parameter +// to specify the duration of your session. Your role session lasts for the +// duration that you specify, or until the time specified in the SAML authentication +// response's SessionNotOnOrAfter value, whichever is shorter. You can provide +// a DurationSeconds value from 900 seconds (15 minutes) up to the maximum session +// duration setting for the role. This setting can have a value from 1 hour +// to 12 hours. To learn how to view the maximum value for your role, see View +// the Maximum Session Duration Setting for a Role (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session) +// in the IAM User Guide. The maximum session duration limit applies when you +// use the AssumeRole* API operations or the assume-role* CLI commands. However +// the limit does not apply when you use those operations to create a console +// URL. For more information, see Using IAM Roles (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) +// in the IAM User Guide. +// +// The temporary security credentials created by AssumeRoleWithSAML can be used +// to make API calls to any AWS service with the following exception: you cannot +// call the STS GetFederationToken or GetSessionToken API operations. +// +// (Optional) You can pass inline or managed session policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) +// to this operation. You can pass a single JSON policy document to use as an +// inline session policy. You can also specify up to 10 managed policies to +// use as managed session policies. The plain text that you use for both inline +// and managed session policies shouldn't exceed 2048 characters. Passing policies +// to this operation returns new temporary credentials. The resulting session's +// permissions are the intersection of the role's identity-based policy and +// the session policies. You can use the role's temporary credentials in subsequent +// AWS API calls to access resources in the account that owns the role. You +// cannot use session policies to grant more permissions than those allowed +// by the identity-based policy of the role that is being assumed. For more +// information, see Session Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) +// in the IAM User Guide. +// +// Before your application can call AssumeRoleWithSAML, you must configure your +// SAML identity provider (IdP) to issue the claims required by AWS. Additionally, +// you must use AWS Identity and Access Management (IAM) to create a SAML provider +// entity in your AWS account that represents your identity provider. You must +// also create an IAM role that specifies this SAML provider in its trust policy. +// +// Calling AssumeRoleWithSAML does not require the use of AWS security credentials. +// The identity of the caller is validated by using keys in the metadata document +// that is uploaded for the SAML provider entity for your identity provider. +// +// Calling AssumeRoleWithSAML can result in an entry in your AWS CloudTrail +// logs. The entry includes the value in the NameID element of the SAML assertion. +// We recommend that you use a NameIDType that is not associated with any personally +// identifiable information (PII). For example, you could instead use the Persistent +// Identifier (urn:oasis:names:tc:SAML:2.0:nameid-format:persistent). +// +// For more information, see the following resources: +// +// * About SAML 2.0-based Federation (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_saml.html) +// in the IAM User Guide. +// +// * Creating SAML Identity Providers (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html) +// in the IAM User Guide. +// +// * Configuring a Relying Party and Claims (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml_relying-party.html) +// in the IAM User Guide. +// +// * Creating a Role for SAML 2.0 Federation (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html) +// in the IAM User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Security Token Service's +// API operation AssumeRoleWithSAML for usage and error information. +// +// Returned Error Codes: +// * ErrCodeMalformedPolicyDocumentException "MalformedPolicyDocument" +// The request was rejected because the policy document was malformed. The error +// message describes the specific error. +// +// * ErrCodePackedPolicyTooLargeException "PackedPolicyTooLarge" +// The request was rejected because the policy document was too large. The error +// message describes how big the policy document is, in packed form, as a percentage +// of what the API allows. +// +// * ErrCodeIDPRejectedClaimException "IDPRejectedClaim" +// The identity provider (IdP) reported that authentication failed. This might +// be because the claim is invalid. +// +// If this error is returned for the AssumeRoleWithWebIdentity operation, it +// can also mean that the claim has expired or has been explicitly revoked. +// +// * ErrCodeInvalidIdentityTokenException "InvalidIdentityToken" +// The web identity token that was passed could not be validated by AWS. Get +// a new identity token from the identity provider and then retry the request. +// +// * ErrCodeExpiredTokenException "ExpiredTokenException" +// The web identity token that was passed is expired or is not valid. Get a +// new identity token from the identity provider and then retry the request. +// +// * ErrCodeRegionDisabledException "RegionDisabledException" +// STS is not activated in the requested region for the account that is being +// asked to generate credentials. The account administrator must use the IAM +// console to activate STS in that region. For more information, see Activating +// and Deactivating AWS STS in an AWS Region (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html) +// in the IAM User Guide. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleWithSAML +func (c *STS) AssumeRoleWithSAML(input *AssumeRoleWithSAMLInput) (*AssumeRoleWithSAMLOutput, error) { + req, out := c.AssumeRoleWithSAMLRequest(input) + return out, req.Send() +} + +// AssumeRoleWithSAMLWithContext is the same as AssumeRoleWithSAML with the addition of +// the ability to pass a context and additional request options. +// +// See AssumeRoleWithSAML for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *STS) AssumeRoleWithSAMLWithContext(ctx aws.Context, input *AssumeRoleWithSAMLInput, opts ...request.Option) (*AssumeRoleWithSAMLOutput, error) { + req, out := c.AssumeRoleWithSAMLRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opAssumeRoleWithWebIdentity = "AssumeRoleWithWebIdentity" + +// AssumeRoleWithWebIdentityRequest generates a "aws/request.Request" representing the +// client's request for the AssumeRoleWithWebIdentity operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AssumeRoleWithWebIdentity for more information on using the AssumeRoleWithWebIdentity +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AssumeRoleWithWebIdentityRequest method. +// req, resp := client.AssumeRoleWithWebIdentityRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleWithWebIdentity +func (c *STS) AssumeRoleWithWebIdentityRequest(input *AssumeRoleWithWebIdentityInput) (req *request.Request, output *AssumeRoleWithWebIdentityOutput) { + op := &request.Operation{ + Name: opAssumeRoleWithWebIdentity, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AssumeRoleWithWebIdentityInput{} + } + + output = &AssumeRoleWithWebIdentityOutput{} + req = c.newRequest(op, input, output) + req.Config.Credentials = credentials.AnonymousCredentials + return +} + +// AssumeRoleWithWebIdentity API operation for AWS Security Token Service. +// +// Returns a set of temporary security credentials for users who have been authenticated +// in a mobile or web application with a web identity provider. Example providers +// include Amazon Cognito, Login with Amazon, Facebook, Google, or any OpenID +// Connect-compatible identity provider. +// +// For mobile applications, we recommend that you use Amazon Cognito. You can +// use Amazon Cognito with the AWS SDK for iOS Developer Guide (http://aws.amazon.com/sdkforios/) +// and the AWS SDK for Android Developer Guide (http://aws.amazon.com/sdkforandroid/) +// to uniquely identify a user. You can also supply the user with a consistent +// identity throughout the lifetime of an application. +// +// To learn more about Amazon Cognito, see Amazon Cognito Overview (https://docs.aws.amazon.com/mobile/sdkforandroid/developerguide/cognito-auth.html#d0e840) +// in AWS SDK for Android Developer Guide and Amazon Cognito Overview (https://docs.aws.amazon.com/mobile/sdkforios/developerguide/cognito-auth.html#d0e664) +// in the AWS SDK for iOS Developer Guide. +// +// Calling AssumeRoleWithWebIdentity does not require the use of AWS security +// credentials. Therefore, you can distribute an application (for example, on +// mobile devices) that requests temporary security credentials without including +// long-term AWS credentials in the application. You also don't need to deploy +// server-based proxy services that use long-term AWS credentials. Instead, +// the identity of the caller is validated by using a token from the web identity +// provider. For a comparison of AssumeRoleWithWebIdentity with the other API +// operations that produce temporary credentials, see Requesting Temporary Security +// Credentials (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) +// and Comparing the AWS STS API operations (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison) +// in the IAM User Guide. +// +// The temporary security credentials returned by this API consist of an access +// key ID, a secret access key, and a security token. Applications can use these +// temporary security credentials to sign calls to AWS service API operations. +// +// By default, the temporary security credentials created by AssumeRoleWithWebIdentity +// last for one hour. However, you can use the optional DurationSeconds parameter +// to specify the duration of your session. You can provide a value from 900 +// seconds (15 minutes) up to the maximum session duration setting for the role. +// This setting can have a value from 1 hour to 12 hours. To learn how to view +// the maximum value for your role, see View the Maximum Session Duration Setting +// for a Role (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session) +// in the IAM User Guide. The maximum session duration limit applies when you +// use the AssumeRole* API operations or the assume-role* CLI commands. However +// the limit does not apply when you use those operations to create a console +// URL. For more information, see Using IAM Roles (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) +// in the IAM User Guide. +// +// The temporary security credentials created by AssumeRoleWithWebIdentity can +// be used to make API calls to any AWS service with the following exception: +// you cannot call the STS GetFederationToken or GetSessionToken API operations. +// +// (Optional) You can pass inline or managed session policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) +// to this operation. You can pass a single JSON policy document to use as an +// inline session policy. You can also specify up to 10 managed policies to +// use as managed session policies. The plain text that you use for both inline +// and managed session policies shouldn't exceed 2048 characters. Passing policies +// to this operation returns new temporary credentials. The resulting session's +// permissions are the intersection of the role's identity-based policy and +// the session policies. You can use the role's temporary credentials in subsequent +// AWS API calls to access resources in the account that owns the role. You +// cannot use session policies to grant more permissions than those allowed +// by the identity-based policy of the role that is being assumed. For more +// information, see Session Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) +// in the IAM User Guide. +// +// Before your application can call AssumeRoleWithWebIdentity, you must have +// an identity token from a supported identity provider and create a role that +// the application can assume. The role that your application assumes must trust +// the identity provider that is associated with the identity token. In other +// words, the identity provider must be specified in the role's trust policy. +// +// Calling AssumeRoleWithWebIdentity can result in an entry in your AWS CloudTrail +// logs. The entry includes the Subject (http://openid.net/specs/openid-connect-core-1_0.html#Claims) +// of the provided Web Identity Token. We recommend that you avoid using any +// personally identifiable information (PII) in this field. For example, you +// could instead use a GUID or a pairwise identifier, as suggested in the OIDC +// specification (http://openid.net/specs/openid-connect-core-1_0.html#SubjectIDTypes). +// +// For more information about how to use web identity federation and the AssumeRoleWithWebIdentity +// API, see the following resources: +// +// * Using Web Identity Federation API Operations for Mobile Apps (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc_manual.html) +// and Federation Through a Web-based Identity Provider (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_assumerolewithwebidentity). +// +// * Web Identity Federation Playground (https://web-identity-federation-playground.s3.amazonaws.com/index.html). +// Walk through the process of authenticating through Login with Amazon, +// Facebook, or Google, getting temporary security credentials, and then +// using those credentials to make a request to AWS. +// +// * AWS SDK for iOS Developer Guide (http://aws.amazon.com/sdkforios/) and +// AWS SDK for Android Developer Guide (http://aws.amazon.com/sdkforandroid/). +// These toolkits contain sample apps that show how to invoke the identity +// providers, and then how to use the information from these providers to +// get and use temporary security credentials. +// +// * Web Identity Federation with Mobile Applications (http://aws.amazon.com/articles/web-identity-federation-with-mobile-applications). +// This article discusses web identity federation and shows an example of +// how to use web identity federation to get access to content in Amazon +// S3. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Security Token Service's +// API operation AssumeRoleWithWebIdentity for usage and error information. +// +// Returned Error Codes: +// * ErrCodeMalformedPolicyDocumentException "MalformedPolicyDocument" +// The request was rejected because the policy document was malformed. The error +// message describes the specific error. +// +// * ErrCodePackedPolicyTooLargeException "PackedPolicyTooLarge" +// The request was rejected because the policy document was too large. The error +// message describes how big the policy document is, in packed form, as a percentage +// of what the API allows. +// +// * ErrCodeIDPRejectedClaimException "IDPRejectedClaim" +// The identity provider (IdP) reported that authentication failed. This might +// be because the claim is invalid. +// +// If this error is returned for the AssumeRoleWithWebIdentity operation, it +// can also mean that the claim has expired or has been explicitly revoked. +// +// * ErrCodeIDPCommunicationErrorException "IDPCommunicationError" +// The request could not be fulfilled because the non-AWS identity provider +// (IDP) that was asked to verify the incoming identity token could not be reached. +// This is often a transient error caused by network conditions. Retry the request +// a limited number of times so that you don't exceed the request rate. If the +// error persists, the non-AWS identity provider might be down or not responding. +// +// * ErrCodeInvalidIdentityTokenException "InvalidIdentityToken" +// The web identity token that was passed could not be validated by AWS. Get +// a new identity token from the identity provider and then retry the request. +// +// * ErrCodeExpiredTokenException "ExpiredTokenException" +// The web identity token that was passed is expired or is not valid. Get a +// new identity token from the identity provider and then retry the request. +// +// * ErrCodeRegionDisabledException "RegionDisabledException" +// STS is not activated in the requested region for the account that is being +// asked to generate credentials. The account administrator must use the IAM +// console to activate STS in that region. For more information, see Activating +// and Deactivating AWS STS in an AWS Region (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html) +// in the IAM User Guide. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleWithWebIdentity +func (c *STS) AssumeRoleWithWebIdentity(input *AssumeRoleWithWebIdentityInput) (*AssumeRoleWithWebIdentityOutput, error) { + req, out := c.AssumeRoleWithWebIdentityRequest(input) + return out, req.Send() +} + +// AssumeRoleWithWebIdentityWithContext is the same as AssumeRoleWithWebIdentity with the addition of +// the ability to pass a context and additional request options. +// +// See AssumeRoleWithWebIdentity for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *STS) AssumeRoleWithWebIdentityWithContext(ctx aws.Context, input *AssumeRoleWithWebIdentityInput, opts ...request.Option) (*AssumeRoleWithWebIdentityOutput, error) { + req, out := c.AssumeRoleWithWebIdentityRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDecodeAuthorizationMessage = "DecodeAuthorizationMessage" + +// DecodeAuthorizationMessageRequest generates a "aws/request.Request" representing the +// client's request for the DecodeAuthorizationMessage operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DecodeAuthorizationMessage for more information on using the DecodeAuthorizationMessage +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DecodeAuthorizationMessageRequest method. +// req, resp := client.DecodeAuthorizationMessageRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/DecodeAuthorizationMessage +func (c *STS) DecodeAuthorizationMessageRequest(input *DecodeAuthorizationMessageInput) (req *request.Request, output *DecodeAuthorizationMessageOutput) { + op := &request.Operation{ + Name: opDecodeAuthorizationMessage, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DecodeAuthorizationMessageInput{} + } + + output = &DecodeAuthorizationMessageOutput{} + req = c.newRequest(op, input, output) + return +} + +// DecodeAuthorizationMessage API operation for AWS Security Token Service. +// +// Decodes additional information about the authorization status of a request +// from an encoded message returned in response to an AWS request. +// +// For example, if a user is not authorized to perform an operation that he +// or she has requested, the request returns a Client.UnauthorizedOperation +// response (an HTTP 403 response). Some AWS operations additionally return +// an encoded message that can provide details about this authorization failure. +// +// Only certain AWS operations return an encoded authorization message. The +// documentation for an individual operation indicates whether that operation +// returns an encoded message in addition to returning an HTTP code. +// +// The message is encoded because the details of the authorization status can +// constitute privileged information that the user who requested the operation +// should not see. To decode an authorization status message, a user must be +// granted permissions via an IAM policy to request the DecodeAuthorizationMessage +// (sts:DecodeAuthorizationMessage) action. +// +// The decoded message includes the following type of information: +// +// * Whether the request was denied due to an explicit deny or due to the +// absence of an explicit allow. For more information, see Determining Whether +// a Request is Allowed or Denied (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow) +// in the IAM User Guide. +// +// * The principal who made the request. +// +// * The requested action. +// +// * The requested resource. +// +// * The values of condition keys in the context of the user's request. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Security Token Service's +// API operation DecodeAuthorizationMessage for usage and error information. +// +// Returned Error Codes: +// * ErrCodeInvalidAuthorizationMessageException "InvalidAuthorizationMessageException" +// This error is returned if the message passed to DecodeAuthorizationMessage +// was invalid. This can happen if the token contains invalid characters, such +// as linebreaks. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/DecodeAuthorizationMessage +func (c *STS) DecodeAuthorizationMessage(input *DecodeAuthorizationMessageInput) (*DecodeAuthorizationMessageOutput, error) { + req, out := c.DecodeAuthorizationMessageRequest(input) + return out, req.Send() +} + +// DecodeAuthorizationMessageWithContext is the same as DecodeAuthorizationMessage with the addition of +// the ability to pass a context and additional request options. +// +// See DecodeAuthorizationMessage for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *STS) DecodeAuthorizationMessageWithContext(ctx aws.Context, input *DecodeAuthorizationMessageInput, opts ...request.Option) (*DecodeAuthorizationMessageOutput, error) { + req, out := c.DecodeAuthorizationMessageRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetAccessKeyInfo = "GetAccessKeyInfo" + +// GetAccessKeyInfoRequest generates a "aws/request.Request" representing the +// client's request for the GetAccessKeyInfo operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetAccessKeyInfo for more information on using the GetAccessKeyInfo +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetAccessKeyInfoRequest method. +// req, resp := client.GetAccessKeyInfoRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetAccessKeyInfo +func (c *STS) GetAccessKeyInfoRequest(input *GetAccessKeyInfoInput) (req *request.Request, output *GetAccessKeyInfoOutput) { + op := &request.Operation{ + Name: opGetAccessKeyInfo, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &GetAccessKeyInfoInput{} + } + + output = &GetAccessKeyInfoOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetAccessKeyInfo API operation for AWS Security Token Service. +// +// Returns the account identifier for the specified access key ID. +// +// Access keys consist of two parts: an access key ID (for example, AKIAIOSFODNN7EXAMPLE) +// and a secret access key (for example, wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY). +// For more information about access keys, see Managing Access Keys for IAM +// Users (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) +// in the IAM User Guide. +// +// When you pass an access key ID to this operation, it returns the ID of the +// AWS account to which the keys belong. Access key IDs beginning with AKIA +// are long-term credentials for an IAM user or the AWS account root user. Access +// key IDs beginning with ASIA are temporary credentials that are created using +// STS operations. If the account in the response belongs to you, you can sign +// in as the root user and review your root user access keys. Then, you can +// pull a credentials report (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_getting-report.html) +// to learn which IAM user owns the keys. To learn who requested the temporary +// credentials for an ASIA access key, view the STS events in your CloudTrail +// logs (https://docs.aws.amazon.com/IAM/latest/UserGuide/cloudtrail-integration.html). +// +// This operation does not indicate the state of the access key. The key might +// be active, inactive, or deleted. Active keys might not have permissions to +// perform an operation. Providing a deleted access key might return an error +// that the key doesn't exist. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Security Token Service's +// API operation GetAccessKeyInfo for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetAccessKeyInfo +func (c *STS) GetAccessKeyInfo(input *GetAccessKeyInfoInput) (*GetAccessKeyInfoOutput, error) { + req, out := c.GetAccessKeyInfoRequest(input) + return out, req.Send() +} + +// GetAccessKeyInfoWithContext is the same as GetAccessKeyInfo with the addition of +// the ability to pass a context and additional request options. +// +// See GetAccessKeyInfo for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *STS) GetAccessKeyInfoWithContext(ctx aws.Context, input *GetAccessKeyInfoInput, opts ...request.Option) (*GetAccessKeyInfoOutput, error) { + req, out := c.GetAccessKeyInfoRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetCallerIdentity = "GetCallerIdentity" + +// GetCallerIdentityRequest generates a "aws/request.Request" representing the +// client's request for the GetCallerIdentity operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetCallerIdentity for more information on using the GetCallerIdentity +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetCallerIdentityRequest method. +// req, resp := client.GetCallerIdentityRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetCallerIdentity +func (c *STS) GetCallerIdentityRequest(input *GetCallerIdentityInput) (req *request.Request, output *GetCallerIdentityOutput) { + op := &request.Operation{ + Name: opGetCallerIdentity, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &GetCallerIdentityInput{} + } + + output = &GetCallerIdentityOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetCallerIdentity API operation for AWS Security Token Service. +// +// Returns details about the IAM user or role whose credentials are used to +// call the operation. +// +// No permissions are required to perform this operation. If an administrator +// adds a policy to your IAM user or role that explicitly denies access to the +// sts:GetCallerIdentity action, you can still perform this operation. Permissions +// are not required because the same information is returned when an IAM user +// or role is denied access. To view an example response, see I Am Not Authorized +// to Perform: iam:DeleteVirtualMFADevice (https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_general.html#troubleshoot_general_access-denied-delete-mfa). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Security Token Service's +// API operation GetCallerIdentity for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetCallerIdentity +func (c *STS) GetCallerIdentity(input *GetCallerIdentityInput) (*GetCallerIdentityOutput, error) { + req, out := c.GetCallerIdentityRequest(input) + return out, req.Send() +} + +// GetCallerIdentityWithContext is the same as GetCallerIdentity with the addition of +// the ability to pass a context and additional request options. +// +// See GetCallerIdentity for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *STS) GetCallerIdentityWithContext(ctx aws.Context, input *GetCallerIdentityInput, opts ...request.Option) (*GetCallerIdentityOutput, error) { + req, out := c.GetCallerIdentityRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetFederationToken = "GetFederationToken" + +// GetFederationTokenRequest generates a "aws/request.Request" representing the +// client's request for the GetFederationToken operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetFederationToken for more information on using the GetFederationToken +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetFederationTokenRequest method. +// req, resp := client.GetFederationTokenRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetFederationToken +func (c *STS) GetFederationTokenRequest(input *GetFederationTokenInput) (req *request.Request, output *GetFederationTokenOutput) { + op := &request.Operation{ + Name: opGetFederationToken, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &GetFederationTokenInput{} + } + + output = &GetFederationTokenOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetFederationToken API operation for AWS Security Token Service. +// +// Returns a set of temporary security credentials (consisting of an access +// key ID, a secret access key, and a security token) for a federated user. +// A typical use is in a proxy application that gets temporary security credentials +// on behalf of distributed applications inside a corporate network. You must +// call the GetFederationToken operation using the long-term security credentials +// of an IAM user. As a result, this call is appropriate in contexts where those +// credentials can be safely stored, usually in a server-based application. +// For a comparison of GetFederationToken with the other API operations that +// produce temporary credentials, see Requesting Temporary Security Credentials +// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) +// and Comparing the AWS STS API operations (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison) +// in the IAM User Guide. +// +// You can create a mobile-based or browser-based app that can authenticate +// users using a web identity provider like Login with Amazon, Facebook, Google, +// or an OpenID Connect-compatible identity provider. In this case, we recommend +// that you use Amazon Cognito (http://aws.amazon.com/cognito/) or AssumeRoleWithWebIdentity. +// For more information, see Federation Through a Web-based Identity Provider +// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_assumerolewithwebidentity). +// +// You can also call GetFederationToken using the security credentials of an +// AWS account root user, but we do not recommend it. Instead, we recommend +// that you create an IAM user for the purpose of the proxy application. Then +// attach a policy to the IAM user that limits federated users to only the actions +// and resources that they need to access. For more information, see IAM Best +// Practices (https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) +// in the IAM User Guide. +// +// The temporary credentials are valid for the specified duration, from 900 +// seconds (15 minutes) up to a maximum of 129,600 seconds (36 hours). The default +// is 43,200 seconds (12 hours). Temporary credentials that are obtained by +// using AWS account root user credentials have a maximum duration of 3,600 +// seconds (1 hour). +// +// The temporary security credentials created by GetFederationToken can be used +// to make API calls to any AWS service with the following exceptions: +// +// * You cannot use these credentials to call any IAM API operations. +// +// * You cannot call any STS API operations except GetCallerIdentity. +// +// Permissions +// +// You must pass an inline or managed session policy (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) +// to this operation. You can pass a single JSON policy document to use as an +// inline session policy. You can also specify up to 10 managed policies to +// use as managed session policies. The plain text that you use for both inline +// and managed session policies shouldn't exceed 2048 characters. +// +// Though the session policy parameters are optional, if you do not pass a policy, +// then the resulting federated user session has no permissions. The only exception +// is when the credentials are used to access a resource that has a resource-based +// policy that specifically references the federated user session in the Principal +// element of the policy. When you pass session policies, the session permissions +// are the intersection of the IAM user policies and the session policies that +// you pass. This gives you a way to further restrict the permissions for a +// federated user. You cannot use session policies to grant more permissions +// than those that are defined in the permissions policy of the IAM user. For +// more information, see Session Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) +// in the IAM User Guide. For information about using GetFederationToken to +// create temporary security credentials, see GetFederationToken—Federation +// Through a Custom Identity Broker (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_getfederationtoken). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Security Token Service's +// API operation GetFederationToken for usage and error information. +// +// Returned Error Codes: +// * ErrCodeMalformedPolicyDocumentException "MalformedPolicyDocument" +// The request was rejected because the policy document was malformed. The error +// message describes the specific error. +// +// * ErrCodePackedPolicyTooLargeException "PackedPolicyTooLarge" +// The request was rejected because the policy document was too large. The error +// message describes how big the policy document is, in packed form, as a percentage +// of what the API allows. +// +// * ErrCodeRegionDisabledException "RegionDisabledException" +// STS is not activated in the requested region for the account that is being +// asked to generate credentials. The account administrator must use the IAM +// console to activate STS in that region. For more information, see Activating +// and Deactivating AWS STS in an AWS Region (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html) +// in the IAM User Guide. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetFederationToken +func (c *STS) GetFederationToken(input *GetFederationTokenInput) (*GetFederationTokenOutput, error) { + req, out := c.GetFederationTokenRequest(input) + return out, req.Send() +} + +// GetFederationTokenWithContext is the same as GetFederationToken with the addition of +// the ability to pass a context and additional request options. +// +// See GetFederationToken for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *STS) GetFederationTokenWithContext(ctx aws.Context, input *GetFederationTokenInput, opts ...request.Option) (*GetFederationTokenOutput, error) { + req, out := c.GetFederationTokenRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetSessionToken = "GetSessionToken" + +// GetSessionTokenRequest generates a "aws/request.Request" representing the +// client's request for the GetSessionToken operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetSessionToken for more information on using the GetSessionToken +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetSessionTokenRequest method. +// req, resp := client.GetSessionTokenRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetSessionToken +func (c *STS) GetSessionTokenRequest(input *GetSessionTokenInput) (req *request.Request, output *GetSessionTokenOutput) { + op := &request.Operation{ + Name: opGetSessionToken, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &GetSessionTokenInput{} + } + + output = &GetSessionTokenOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetSessionToken API operation for AWS Security Token Service. +// +// Returns a set of temporary credentials for an AWS account or IAM user. The +// credentials consist of an access key ID, a secret access key, and a security +// token. Typically, you use GetSessionToken if you want to use MFA to protect +// programmatic calls to specific AWS API operations like Amazon EC2 StopInstances. +// MFA-enabled IAM users would need to call GetSessionToken and submit an MFA +// code that is associated with their MFA device. Using the temporary security +// credentials that are returned from the call, IAM users can then make programmatic +// calls to API operations that require MFA authentication. If you do not supply +// a correct MFA code, then the API returns an access denied error. For a comparison +// of GetSessionToken with the other API operations that produce temporary credentials, +// see Requesting Temporary Security Credentials (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) +// and Comparing the AWS STS API operations (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison) +// in the IAM User Guide. +// +// The GetSessionToken operation must be called by using the long-term AWS security +// credentials of the AWS account root user or an IAM user. Credentials that +// are created by IAM users are valid for the duration that you specify. This +// duration can range from 900 seconds (15 minutes) up to a maximum of 129,600 +// seconds (36 hours), with a default of 43,200 seconds (12 hours). Credentials +// based on account credentials can range from 900 seconds (15 minutes) up to +// 3,600 seconds (1 hour), with a default of 1 hour. +// +// The temporary security credentials created by GetSessionToken can be used +// to make API calls to any AWS service with the following exceptions: +// +// * You cannot call any IAM API operations unless MFA authentication information +// is included in the request. +// +// * You cannot call any STS API except AssumeRole or GetCallerIdentity. +// +// We recommend that you do not call GetSessionToken with AWS account root user +// credentials. Instead, follow our best practices (https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#create-iam-users) +// by creating one or more IAM users, giving them the necessary permissions, +// and using IAM users for everyday interaction with AWS. +// +// The credentials that are returned by GetSessionToken are based on permissions +// associated with the user whose credentials were used to call the operation. +// If GetSessionToken is called using AWS account root user credentials, the +// temporary credentials have root user permissions. Similarly, if GetSessionToken +// is called using the credentials of an IAM user, the temporary credentials +// have the same permissions as the IAM user. +// +// For more information about using GetSessionToken to create temporary credentials, +// go to Temporary Credentials for Users in Untrusted Environments (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_getsessiontoken) +// in the IAM User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Security Token Service's +// API operation GetSessionToken for usage and error information. +// +// Returned Error Codes: +// * ErrCodeRegionDisabledException "RegionDisabledException" +// STS is not activated in the requested region for the account that is being +// asked to generate credentials. The account administrator must use the IAM +// console to activate STS in that region. For more information, see Activating +// and Deactivating AWS STS in an AWS Region (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html) +// in the IAM User Guide. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetSessionToken +func (c *STS) GetSessionToken(input *GetSessionTokenInput) (*GetSessionTokenOutput, error) { + req, out := c.GetSessionTokenRequest(input) + return out, req.Send() +} + +// GetSessionTokenWithContext is the same as GetSessionToken with the addition of +// the ability to pass a context and additional request options. +// +// See GetSessionToken for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *STS) GetSessionTokenWithContext(ctx aws.Context, input *GetSessionTokenInput, opts ...request.Option) (*GetSessionTokenOutput, error) { + req, out := c.GetSessionTokenRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +type AssumeRoleInput struct { + _ struct{} `type:"structure"` + + // The duration, in seconds, of the role session. The value can range from 900 + // seconds (15 minutes) up to the maximum session duration setting for the role. + // This setting can have a value from 1 hour to 12 hours. If you specify a value + // higher than this setting, the operation fails. For example, if you specify + // a session duration of 12 hours, but your administrator set the maximum session + // duration to 6 hours, your operation fails. To learn how to view the maximum + // value for your role, see View the Maximum Session Duration Setting for a + // Role (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session) + // in the IAM User Guide. + // + // By default, the value is set to 3600 seconds. + // + // The DurationSeconds parameter is separate from the duration of a console + // session that you might request using the returned credentials. The request + // to the federation endpoint for a console sign-in token takes a SessionDuration + // parameter that specifies the maximum length of the console session. For more + // information, see Creating a URL that Enables Federated Users to Access the + // AWS Management Console (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html) + // in the IAM User Guide. + DurationSeconds *int64 `min:"900" type:"integer"` + + // A unique identifier that might be required when you assume a role in another + // account. If the administrator of the account to which the role belongs provided + // you with an external ID, then provide that value in the ExternalId parameter. + // This value can be any string, such as a passphrase or account number. A cross-account + // role is usually set up to trust everyone in an account. Therefore, the administrator + // of the trusting account might send an external ID to the administrator of + // the trusted account. That way, only someone with the ID can assume the role, + // rather than everyone in the account. For more information about the external + // ID, see How to Use an External ID When Granting Access to Your AWS Resources + // to a Third Party (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html) + // in the IAM User Guide. + // + // The regex used to validate this parameter is a string of characters consisting + // of upper- and lower-case alphanumeric characters with no spaces. You can + // also include underscores or any of the following characters: =,.@:/- + ExternalId *string `min:"2" type:"string"` + + // An IAM policy in JSON format that you want to use as an inline session policy. + // + // This parameter is optional. Passing policies to this operation returns new + // temporary credentials. The resulting session's permissions are the intersection + // of the role's identity-based policy and the session policies. You can use + // the role's temporary credentials in subsequent AWS API calls to access resources + // in the account that owns the role. You cannot use session policies to grant + // more permissions than those allowed by the identity-based policy of the role + // that is being assumed. For more information, see Session Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) + // in the IAM User Guide. + // + // The plain text that you use for both inline and managed session policies + // shouldn't exceed 2048 characters. The JSON policy characters can be any ASCII + // character from the space character to the end of the valid character list + // (\u0020 through \u00FF). It can also include the tab (\u0009), linefeed (\u000A), + // and carriage return (\u000D) characters. + // + // The characters in this parameter count towards the 2048 character session + // policy guideline. However, an AWS conversion compresses the session policies + // into a packed binary format that has a separate limit. This is the enforced + // limit. The PackedPolicySize response element indicates by percentage how + // close the policy is to the upper size limit. + Policy *string `min:"1" type:"string"` + + // The Amazon Resource Names (ARNs) of the IAM managed policies that you want + // to use as managed session policies. The policies must exist in the same account + // as the role. + // + // This parameter is optional. You can provide up to 10 managed policy ARNs. + // However, the plain text that you use for both inline and managed session + // policies shouldn't exceed 2048 characters. For more information about ARNs, + // see Amazon Resource Names (ARNs) and AWS Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // in the AWS General Reference. + // + // The characters in this parameter count towards the 2048 character session + // policy guideline. However, an AWS conversion compresses the session policies + // into a packed binary format that has a separate limit. This is the enforced + // limit. The PackedPolicySize response element indicates by percentage how + // close the policy is to the upper size limit. + // + // Passing policies to this operation returns new temporary credentials. The + // resulting session's permissions are the intersection of the role's identity-based + // policy and the session policies. You can use the role's temporary credentials + // in subsequent AWS API calls to access resources in the account that owns + // the role. You cannot use session policies to grant more permissions than + // those allowed by the identity-based policy of the role that is being assumed. + // For more information, see Session Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) + // in the IAM User Guide. + PolicyArns []*PolicyDescriptorType `type:"list"` + + // The Amazon Resource Name (ARN) of the role to assume. + // + // RoleArn is a required field + RoleArn *string `min:"20" type:"string" required:"true"` + + // An identifier for the assumed role session. + // + // Use the role session name to uniquely identify a session when the same role + // is assumed by different principals or for different reasons. In cross-account + // scenarios, the role session name is visible to, and can be logged by the + // account that owns the role. The role session name is also used in the ARN + // of the assumed role principal. This means that subsequent cross-account API + // requests that use the temporary security credentials will expose the role + // session name to the external account in their AWS CloudTrail logs. + // + // The regex used to validate this parameter is a string of characters consisting + // of upper- and lower-case alphanumeric characters with no spaces. You can + // also include underscores or any of the following characters: =,.@- + // + // RoleSessionName is a required field + RoleSessionName *string `min:"2" type:"string" required:"true"` + + // The identification number of the MFA device that is associated with the user + // who is making the AssumeRole call. Specify this value if the trust policy + // of the role being assumed includes a condition that requires MFA authentication. + // The value is either the serial number for a hardware device (such as GAHT12345678) + // or an Amazon Resource Name (ARN) for a virtual device (such as arn:aws:iam::123456789012:mfa/user). + // + // The regex used to validate this parameter is a string of characters consisting + // of upper- and lower-case alphanumeric characters with no spaces. You can + // also include underscores or any of the following characters: =,.@- + SerialNumber *string `min:"9" type:"string"` + + // The value provided by the MFA device, if the trust policy of the role being + // assumed requires MFA (that is, if the policy includes a condition that tests + // for MFA). If the role being assumed requires MFA and if the TokenCode value + // is missing or expired, the AssumeRole call returns an "access denied" error. + // + // The format for this parameter, as described by its regex pattern, is a sequence + // of six numeric digits. + TokenCode *string `min:"6" type:"string"` +} + +// String returns the string representation +func (s AssumeRoleInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssumeRoleInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AssumeRoleInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AssumeRoleInput"} + if s.DurationSeconds != nil && *s.DurationSeconds < 900 { + invalidParams.Add(request.NewErrParamMinValue("DurationSeconds", 900)) + } + if s.ExternalId != nil && len(*s.ExternalId) < 2 { + invalidParams.Add(request.NewErrParamMinLen("ExternalId", 2)) + } + if s.Policy != nil && len(*s.Policy) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Policy", 1)) + } + if s.RoleArn == nil { + invalidParams.Add(request.NewErrParamRequired("RoleArn")) + } + if s.RoleArn != nil && len(*s.RoleArn) < 20 { + invalidParams.Add(request.NewErrParamMinLen("RoleArn", 20)) + } + if s.RoleSessionName == nil { + invalidParams.Add(request.NewErrParamRequired("RoleSessionName")) + } + if s.RoleSessionName != nil && len(*s.RoleSessionName) < 2 { + invalidParams.Add(request.NewErrParamMinLen("RoleSessionName", 2)) + } + if s.SerialNumber != nil && len(*s.SerialNumber) < 9 { + invalidParams.Add(request.NewErrParamMinLen("SerialNumber", 9)) + } + if s.TokenCode != nil && len(*s.TokenCode) < 6 { + invalidParams.Add(request.NewErrParamMinLen("TokenCode", 6)) + } + if s.PolicyArns != nil { + for i, v := range s.PolicyArns { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PolicyArns", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDurationSeconds sets the DurationSeconds field's value. +func (s *AssumeRoleInput) SetDurationSeconds(v int64) *AssumeRoleInput { + s.DurationSeconds = &v + return s +} + +// SetExternalId sets the ExternalId field's value. +func (s *AssumeRoleInput) SetExternalId(v string) *AssumeRoleInput { + s.ExternalId = &v + return s +} + +// SetPolicy sets the Policy field's value. +func (s *AssumeRoleInput) SetPolicy(v string) *AssumeRoleInput { + s.Policy = &v + return s +} + +// SetPolicyArns sets the PolicyArns field's value. +func (s *AssumeRoleInput) SetPolicyArns(v []*PolicyDescriptorType) *AssumeRoleInput { + s.PolicyArns = v + return s +} + +// SetRoleArn sets the RoleArn field's value. +func (s *AssumeRoleInput) SetRoleArn(v string) *AssumeRoleInput { + s.RoleArn = &v + return s +} + +// SetRoleSessionName sets the RoleSessionName field's value. +func (s *AssumeRoleInput) SetRoleSessionName(v string) *AssumeRoleInput { + s.RoleSessionName = &v + return s +} + +// SetSerialNumber sets the SerialNumber field's value. +func (s *AssumeRoleInput) SetSerialNumber(v string) *AssumeRoleInput { + s.SerialNumber = &v + return s +} + +// SetTokenCode sets the TokenCode field's value. +func (s *AssumeRoleInput) SetTokenCode(v string) *AssumeRoleInput { + s.TokenCode = &v + return s +} + +// Contains the response to a successful AssumeRole request, including temporary +// AWS credentials that can be used to make AWS requests. +type AssumeRoleOutput struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) and the assumed role ID, which are identifiers + // that you can use to refer to the resulting temporary security credentials. + // For example, you can reference these credentials as a principal in a resource-based + // policy by using the ARN or assumed role ID. The ARN and ID include the RoleSessionName + // that you specified when you called AssumeRole. + AssumedRoleUser *AssumedRoleUser `type:"structure"` + + // The temporary security credentials, which include an access key ID, a secret + // access key, and a security (or session) token. + // + // The size of the security token that STS API operations return is not fixed. + // We strongly recommend that you make no assumptions about the maximum size. + Credentials *Credentials `type:"structure"` + + // A percentage value that indicates the size of the policy in packed form. + // The service rejects any policy with a packed size greater than 100 percent, + // which means the policy exceeded the allowed space. + PackedPolicySize *int64 `type:"integer"` +} + +// String returns the string representation +func (s AssumeRoleOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssumeRoleOutput) GoString() string { + return s.String() +} + +// SetAssumedRoleUser sets the AssumedRoleUser field's value. +func (s *AssumeRoleOutput) SetAssumedRoleUser(v *AssumedRoleUser) *AssumeRoleOutput { + s.AssumedRoleUser = v + return s +} + +// SetCredentials sets the Credentials field's value. +func (s *AssumeRoleOutput) SetCredentials(v *Credentials) *AssumeRoleOutput { + s.Credentials = v + return s +} + +// SetPackedPolicySize sets the PackedPolicySize field's value. +func (s *AssumeRoleOutput) SetPackedPolicySize(v int64) *AssumeRoleOutput { + s.PackedPolicySize = &v + return s +} + +type AssumeRoleWithSAMLInput struct { + _ struct{} `type:"structure"` + + // The duration, in seconds, of the role session. Your role session lasts for + // the duration that you specify for the DurationSeconds parameter, or until + // the time specified in the SAML authentication response's SessionNotOnOrAfter + // value, whichever is shorter. You can provide a DurationSeconds value from + // 900 seconds (15 minutes) up to the maximum session duration setting for the + // role. This setting can have a value from 1 hour to 12 hours. If you specify + // a value higher than this setting, the operation fails. For example, if you + // specify a session duration of 12 hours, but your administrator set the maximum + // session duration to 6 hours, your operation fails. To learn how to view the + // maximum value for your role, see View the Maximum Session Duration Setting + // for a Role (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session) + // in the IAM User Guide. + // + // By default, the value is set to 3600 seconds. + // + // The DurationSeconds parameter is separate from the duration of a console + // session that you might request using the returned credentials. The request + // to the federation endpoint for a console sign-in token takes a SessionDuration + // parameter that specifies the maximum length of the console session. For more + // information, see Creating a URL that Enables Federated Users to Access the + // AWS Management Console (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html) + // in the IAM User Guide. + DurationSeconds *int64 `min:"900" type:"integer"` + + // An IAM policy in JSON format that you want to use as an inline session policy. + // + // This parameter is optional. Passing policies to this operation returns new + // temporary credentials. The resulting session's permissions are the intersection + // of the role's identity-based policy and the session policies. You can use + // the role's temporary credentials in subsequent AWS API calls to access resources + // in the account that owns the role. You cannot use session policies to grant + // more permissions than those allowed by the identity-based policy of the role + // that is being assumed. For more information, see Session Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) + // in the IAM User Guide. + // + // The plain text that you use for both inline and managed session policies + // shouldn't exceed 2048 characters. The JSON policy characters can be any ASCII + // character from the space character to the end of the valid character list + // (\u0020 through \u00FF). It can also include the tab (\u0009), linefeed (\u000A), + // and carriage return (\u000D) characters. + // + // The characters in this parameter count towards the 2048 character session + // policy guideline. However, an AWS conversion compresses the session policies + // into a packed binary format that has a separate limit. This is the enforced + // limit. The PackedPolicySize response element indicates by percentage how + // close the policy is to the upper size limit. + Policy *string `min:"1" type:"string"` + + // The Amazon Resource Names (ARNs) of the IAM managed policies that you want + // to use as managed session policies. The policies must exist in the same account + // as the role. + // + // This parameter is optional. You can provide up to 10 managed policy ARNs. + // However, the plain text that you use for both inline and managed session + // policies shouldn't exceed 2048 characters. For more information about ARNs, + // see Amazon Resource Names (ARNs) and AWS Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // in the AWS General Reference. + // + // The characters in this parameter count towards the 2048 character session + // policy guideline. However, an AWS conversion compresses the session policies + // into a packed binary format that has a separate limit. This is the enforced + // limit. The PackedPolicySize response element indicates by percentage how + // close the policy is to the upper size limit. + // + // Passing policies to this operation returns new temporary credentials. The + // resulting session's permissions are the intersection of the role's identity-based + // policy and the session policies. You can use the role's temporary credentials + // in subsequent AWS API calls to access resources in the account that owns + // the role. You cannot use session policies to grant more permissions than + // those allowed by the identity-based policy of the role that is being assumed. + // For more information, see Session Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) + // in the IAM User Guide. + PolicyArns []*PolicyDescriptorType `type:"list"` + + // The Amazon Resource Name (ARN) of the SAML provider in IAM that describes + // the IdP. + // + // PrincipalArn is a required field + PrincipalArn *string `min:"20" type:"string" required:"true"` + + // The Amazon Resource Name (ARN) of the role that the caller is assuming. + // + // RoleArn is a required field + RoleArn *string `min:"20" type:"string" required:"true"` + + // The base-64 encoded SAML authentication response provided by the IdP. + // + // For more information, see Configuring a Relying Party and Adding Claims (https://docs.aws.amazon.com/IAM/latest/UserGuide/create-role-saml-IdP-tasks.html) + // in the IAM User Guide. + // + // SAMLAssertion is a required field + SAMLAssertion *string `min:"4" type:"string" required:"true"` +} + +// String returns the string representation +func (s AssumeRoleWithSAMLInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssumeRoleWithSAMLInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AssumeRoleWithSAMLInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AssumeRoleWithSAMLInput"} + if s.DurationSeconds != nil && *s.DurationSeconds < 900 { + invalidParams.Add(request.NewErrParamMinValue("DurationSeconds", 900)) + } + if s.Policy != nil && len(*s.Policy) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Policy", 1)) + } + if s.PrincipalArn == nil { + invalidParams.Add(request.NewErrParamRequired("PrincipalArn")) + } + if s.PrincipalArn != nil && len(*s.PrincipalArn) < 20 { + invalidParams.Add(request.NewErrParamMinLen("PrincipalArn", 20)) + } + if s.RoleArn == nil { + invalidParams.Add(request.NewErrParamRequired("RoleArn")) + } + if s.RoleArn != nil && len(*s.RoleArn) < 20 { + invalidParams.Add(request.NewErrParamMinLen("RoleArn", 20)) + } + if s.SAMLAssertion == nil { + invalidParams.Add(request.NewErrParamRequired("SAMLAssertion")) + } + if s.SAMLAssertion != nil && len(*s.SAMLAssertion) < 4 { + invalidParams.Add(request.NewErrParamMinLen("SAMLAssertion", 4)) + } + if s.PolicyArns != nil { + for i, v := range s.PolicyArns { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PolicyArns", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDurationSeconds sets the DurationSeconds field's value. +func (s *AssumeRoleWithSAMLInput) SetDurationSeconds(v int64) *AssumeRoleWithSAMLInput { + s.DurationSeconds = &v + return s +} + +// SetPolicy sets the Policy field's value. +func (s *AssumeRoleWithSAMLInput) SetPolicy(v string) *AssumeRoleWithSAMLInput { + s.Policy = &v + return s +} + +// SetPolicyArns sets the PolicyArns field's value. +func (s *AssumeRoleWithSAMLInput) SetPolicyArns(v []*PolicyDescriptorType) *AssumeRoleWithSAMLInput { + s.PolicyArns = v + return s +} + +// SetPrincipalArn sets the PrincipalArn field's value. +func (s *AssumeRoleWithSAMLInput) SetPrincipalArn(v string) *AssumeRoleWithSAMLInput { + s.PrincipalArn = &v + return s +} + +// SetRoleArn sets the RoleArn field's value. +func (s *AssumeRoleWithSAMLInput) SetRoleArn(v string) *AssumeRoleWithSAMLInput { + s.RoleArn = &v + return s +} + +// SetSAMLAssertion sets the SAMLAssertion field's value. +func (s *AssumeRoleWithSAMLInput) SetSAMLAssertion(v string) *AssumeRoleWithSAMLInput { + s.SAMLAssertion = &v + return s +} + +// Contains the response to a successful AssumeRoleWithSAML request, including +// temporary AWS credentials that can be used to make AWS requests. +type AssumeRoleWithSAMLOutput struct { + _ struct{} `type:"structure"` + + // The identifiers for the temporary security credentials that the operation + // returns. + AssumedRoleUser *AssumedRoleUser `type:"structure"` + + // The value of the Recipient attribute of the SubjectConfirmationData element + // of the SAML assertion. + Audience *string `type:"string"` + + // The temporary security credentials, which include an access key ID, a secret + // access key, and a security (or session) token. + // + // The size of the security token that STS API operations return is not fixed. + // We strongly recommend that you make no assumptions about the maximum size. + Credentials *Credentials `type:"structure"` + + // The value of the Issuer element of the SAML assertion. + Issuer *string `type:"string"` + + // A hash value based on the concatenation of the Issuer response value, the + // AWS account ID, and the friendly name (the last part of the ARN) of the SAML + // provider in IAM. The combination of NameQualifier and Subject can be used + // to uniquely identify a federated user. + // + // The following pseudocode shows how the hash value is calculated: + // + // BASE64 ( SHA1 ( "https://example.com/saml" + "123456789012" + "/MySAMLIdP" + // ) ) + NameQualifier *string `type:"string"` + + // A percentage value that indicates the size of the policy in packed form. + // The service rejects any policy with a packed size greater than 100 percent, + // which means the policy exceeded the allowed space. + PackedPolicySize *int64 `type:"integer"` + + // The value of the NameID element in the Subject element of the SAML assertion. + Subject *string `type:"string"` + + // The format of the name ID, as defined by the Format attribute in the NameID + // element of the SAML assertion. Typical examples of the format are transient + // or persistent. + // + // If the format includes the prefix urn:oasis:names:tc:SAML:2.0:nameid-format, + // that prefix is removed. For example, urn:oasis:names:tc:SAML:2.0:nameid-format:transient + // is returned as transient. If the format includes any other prefix, the format + // is returned with no modifications. + SubjectType *string `type:"string"` +} + +// String returns the string representation +func (s AssumeRoleWithSAMLOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssumeRoleWithSAMLOutput) GoString() string { + return s.String() +} + +// SetAssumedRoleUser sets the AssumedRoleUser field's value. +func (s *AssumeRoleWithSAMLOutput) SetAssumedRoleUser(v *AssumedRoleUser) *AssumeRoleWithSAMLOutput { + s.AssumedRoleUser = v + return s +} + +// SetAudience sets the Audience field's value. +func (s *AssumeRoleWithSAMLOutput) SetAudience(v string) *AssumeRoleWithSAMLOutput { + s.Audience = &v + return s +} + +// SetCredentials sets the Credentials field's value. +func (s *AssumeRoleWithSAMLOutput) SetCredentials(v *Credentials) *AssumeRoleWithSAMLOutput { + s.Credentials = v + return s +} + +// SetIssuer sets the Issuer field's value. +func (s *AssumeRoleWithSAMLOutput) SetIssuer(v string) *AssumeRoleWithSAMLOutput { + s.Issuer = &v + return s +} + +// SetNameQualifier sets the NameQualifier field's value. +func (s *AssumeRoleWithSAMLOutput) SetNameQualifier(v string) *AssumeRoleWithSAMLOutput { + s.NameQualifier = &v + return s +} + +// SetPackedPolicySize sets the PackedPolicySize field's value. +func (s *AssumeRoleWithSAMLOutput) SetPackedPolicySize(v int64) *AssumeRoleWithSAMLOutput { + s.PackedPolicySize = &v + return s +} + +// SetSubject sets the Subject field's value. +func (s *AssumeRoleWithSAMLOutput) SetSubject(v string) *AssumeRoleWithSAMLOutput { + s.Subject = &v + return s +} + +// SetSubjectType sets the SubjectType field's value. +func (s *AssumeRoleWithSAMLOutput) SetSubjectType(v string) *AssumeRoleWithSAMLOutput { + s.SubjectType = &v + return s +} + +type AssumeRoleWithWebIdentityInput struct { + _ struct{} `type:"structure"` + + // The duration, in seconds, of the role session. The value can range from 900 + // seconds (15 minutes) up to the maximum session duration setting for the role. + // This setting can have a value from 1 hour to 12 hours. If you specify a value + // higher than this setting, the operation fails. For example, if you specify + // a session duration of 12 hours, but your administrator set the maximum session + // duration to 6 hours, your operation fails. To learn how to view the maximum + // value for your role, see View the Maximum Session Duration Setting for a + // Role (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session) + // in the IAM User Guide. + // + // By default, the value is set to 3600 seconds. + // + // The DurationSeconds parameter is separate from the duration of a console + // session that you might request using the returned credentials. The request + // to the federation endpoint for a console sign-in token takes a SessionDuration + // parameter that specifies the maximum length of the console session. For more + // information, see Creating a URL that Enables Federated Users to Access the + // AWS Management Console (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html) + // in the IAM User Guide. + DurationSeconds *int64 `min:"900" type:"integer"` + + // An IAM policy in JSON format that you want to use as an inline session policy. + // + // This parameter is optional. Passing policies to this operation returns new + // temporary credentials. The resulting session's permissions are the intersection + // of the role's identity-based policy and the session policies. You can use + // the role's temporary credentials in subsequent AWS API calls to access resources + // in the account that owns the role. You cannot use session policies to grant + // more permissions than those allowed by the identity-based policy of the role + // that is being assumed. For more information, see Session Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) + // in the IAM User Guide. + // + // The plain text that you use for both inline and managed session policies + // shouldn't exceed 2048 characters. The JSON policy characters can be any ASCII + // character from the space character to the end of the valid character list + // (\u0020 through \u00FF). It can also include the tab (\u0009), linefeed (\u000A), + // and carriage return (\u000D) characters. + // + // The characters in this parameter count towards the 2048 character session + // policy guideline. However, an AWS conversion compresses the session policies + // into a packed binary format that has a separate limit. This is the enforced + // limit. The PackedPolicySize response element indicates by percentage how + // close the policy is to the upper size limit. + Policy *string `min:"1" type:"string"` + + // The Amazon Resource Names (ARNs) of the IAM managed policies that you want + // to use as managed session policies. The policies must exist in the same account + // as the role. + // + // This parameter is optional. You can provide up to 10 managed policy ARNs. + // However, the plain text that you use for both inline and managed session + // policies shouldn't exceed 2048 characters. For more information about ARNs, + // see Amazon Resource Names (ARNs) and AWS Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // in the AWS General Reference. + // + // The characters in this parameter count towards the 2048 character session + // policy guideline. However, an AWS conversion compresses the session policies + // into a packed binary format that has a separate limit. This is the enforced + // limit. The PackedPolicySize response element indicates by percentage how + // close the policy is to the upper size limit. + // + // Passing policies to this operation returns new temporary credentials. The + // resulting session's permissions are the intersection of the role's identity-based + // policy and the session policies. You can use the role's temporary credentials + // in subsequent AWS API calls to access resources in the account that owns + // the role. You cannot use session policies to grant more permissions than + // those allowed by the identity-based policy of the role that is being assumed. + // For more information, see Session Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) + // in the IAM User Guide. + PolicyArns []*PolicyDescriptorType `type:"list"` + + // The fully qualified host component of the domain name of the identity provider. + // + // Specify this value only for OAuth 2.0 access tokens. Currently www.amazon.com + // and graph.facebook.com are the only supported identity providers for OAuth + // 2.0 access tokens. Do not include URL schemes and port numbers. + // + // Do not specify this value for OpenID Connect ID tokens. + ProviderId *string `min:"4" type:"string"` + + // The Amazon Resource Name (ARN) of the role that the caller is assuming. + // + // RoleArn is a required field + RoleArn *string `min:"20" type:"string" required:"true"` + + // An identifier for the assumed role session. Typically, you pass the name + // or identifier that is associated with the user who is using your application. + // That way, the temporary security credentials that your application will use + // are associated with that user. This session name is included as part of the + // ARN and assumed role ID in the AssumedRoleUser response element. + // + // The regex used to validate this parameter is a string of characters consisting + // of upper- and lower-case alphanumeric characters with no spaces. You can + // also include underscores or any of the following characters: =,.@- + // + // RoleSessionName is a required field + RoleSessionName *string `min:"2" type:"string" required:"true"` + + // The OAuth 2.0 access token or OpenID Connect ID token that is provided by + // the identity provider. Your application must get this token by authenticating + // the user who is using your application with a web identity provider before + // the application makes an AssumeRoleWithWebIdentity call. + // + // WebIdentityToken is a required field + WebIdentityToken *string `min:"4" type:"string" required:"true"` +} + +// String returns the string representation +func (s AssumeRoleWithWebIdentityInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssumeRoleWithWebIdentityInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AssumeRoleWithWebIdentityInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AssumeRoleWithWebIdentityInput"} + if s.DurationSeconds != nil && *s.DurationSeconds < 900 { + invalidParams.Add(request.NewErrParamMinValue("DurationSeconds", 900)) + } + if s.Policy != nil && len(*s.Policy) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Policy", 1)) + } + if s.ProviderId != nil && len(*s.ProviderId) < 4 { + invalidParams.Add(request.NewErrParamMinLen("ProviderId", 4)) + } + if s.RoleArn == nil { + invalidParams.Add(request.NewErrParamRequired("RoleArn")) + } + if s.RoleArn != nil && len(*s.RoleArn) < 20 { + invalidParams.Add(request.NewErrParamMinLen("RoleArn", 20)) + } + if s.RoleSessionName == nil { + invalidParams.Add(request.NewErrParamRequired("RoleSessionName")) + } + if s.RoleSessionName != nil && len(*s.RoleSessionName) < 2 { + invalidParams.Add(request.NewErrParamMinLen("RoleSessionName", 2)) + } + if s.WebIdentityToken == nil { + invalidParams.Add(request.NewErrParamRequired("WebIdentityToken")) + } + if s.WebIdentityToken != nil && len(*s.WebIdentityToken) < 4 { + invalidParams.Add(request.NewErrParamMinLen("WebIdentityToken", 4)) + } + if s.PolicyArns != nil { + for i, v := range s.PolicyArns { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PolicyArns", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDurationSeconds sets the DurationSeconds field's value. +func (s *AssumeRoleWithWebIdentityInput) SetDurationSeconds(v int64) *AssumeRoleWithWebIdentityInput { + s.DurationSeconds = &v + return s +} + +// SetPolicy sets the Policy field's value. +func (s *AssumeRoleWithWebIdentityInput) SetPolicy(v string) *AssumeRoleWithWebIdentityInput { + s.Policy = &v + return s +} + +// SetPolicyArns sets the PolicyArns field's value. +func (s *AssumeRoleWithWebIdentityInput) SetPolicyArns(v []*PolicyDescriptorType) *AssumeRoleWithWebIdentityInput { + s.PolicyArns = v + return s +} + +// SetProviderId sets the ProviderId field's value. +func (s *AssumeRoleWithWebIdentityInput) SetProviderId(v string) *AssumeRoleWithWebIdentityInput { + s.ProviderId = &v + return s +} + +// SetRoleArn sets the RoleArn field's value. +func (s *AssumeRoleWithWebIdentityInput) SetRoleArn(v string) *AssumeRoleWithWebIdentityInput { + s.RoleArn = &v + return s +} + +// SetRoleSessionName sets the RoleSessionName field's value. +func (s *AssumeRoleWithWebIdentityInput) SetRoleSessionName(v string) *AssumeRoleWithWebIdentityInput { + s.RoleSessionName = &v + return s +} + +// SetWebIdentityToken sets the WebIdentityToken field's value. +func (s *AssumeRoleWithWebIdentityInput) SetWebIdentityToken(v string) *AssumeRoleWithWebIdentityInput { + s.WebIdentityToken = &v + return s +} + +// Contains the response to a successful AssumeRoleWithWebIdentity request, +// including temporary AWS credentials that can be used to make AWS requests. +type AssumeRoleWithWebIdentityOutput struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) and the assumed role ID, which are identifiers + // that you can use to refer to the resulting temporary security credentials. + // For example, you can reference these credentials as a principal in a resource-based + // policy by using the ARN or assumed role ID. The ARN and ID include the RoleSessionName + // that you specified when you called AssumeRole. + AssumedRoleUser *AssumedRoleUser `type:"structure"` + + // The intended audience (also known as client ID) of the web identity token. + // This is traditionally the client identifier issued to the application that + // requested the web identity token. + Audience *string `type:"string"` + + // The temporary security credentials, which include an access key ID, a secret + // access key, and a security token. + // + // The size of the security token that STS API operations return is not fixed. + // We strongly recommend that you make no assumptions about the maximum size. + Credentials *Credentials `type:"structure"` + + // A percentage value that indicates the size of the policy in packed form. + // The service rejects any policy with a packed size greater than 100 percent, + // which means the policy exceeded the allowed space. + PackedPolicySize *int64 `type:"integer"` + + // The issuing authority of the web identity token presented. For OpenID Connect + // ID tokens, this contains the value of the iss field. For OAuth 2.0 access + // tokens, this contains the value of the ProviderId parameter that was passed + // in the AssumeRoleWithWebIdentity request. + Provider *string `type:"string"` + + // The unique user identifier that is returned by the identity provider. This + // identifier is associated with the WebIdentityToken that was submitted with + // the AssumeRoleWithWebIdentity call. The identifier is typically unique to + // the user and the application that acquired the WebIdentityToken (pairwise + // identifier). For OpenID Connect ID tokens, this field contains the value + // returned by the identity provider as the token's sub (Subject) claim. + SubjectFromWebIdentityToken *string `min:"6" type:"string"` +} + +// String returns the string representation +func (s AssumeRoleWithWebIdentityOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssumeRoleWithWebIdentityOutput) GoString() string { + return s.String() +} + +// SetAssumedRoleUser sets the AssumedRoleUser field's value. +func (s *AssumeRoleWithWebIdentityOutput) SetAssumedRoleUser(v *AssumedRoleUser) *AssumeRoleWithWebIdentityOutput { + s.AssumedRoleUser = v + return s +} + +// SetAudience sets the Audience field's value. +func (s *AssumeRoleWithWebIdentityOutput) SetAudience(v string) *AssumeRoleWithWebIdentityOutput { + s.Audience = &v + return s +} + +// SetCredentials sets the Credentials field's value. +func (s *AssumeRoleWithWebIdentityOutput) SetCredentials(v *Credentials) *AssumeRoleWithWebIdentityOutput { + s.Credentials = v + return s +} + +// SetPackedPolicySize sets the PackedPolicySize field's value. +func (s *AssumeRoleWithWebIdentityOutput) SetPackedPolicySize(v int64) *AssumeRoleWithWebIdentityOutput { + s.PackedPolicySize = &v + return s +} + +// SetProvider sets the Provider field's value. +func (s *AssumeRoleWithWebIdentityOutput) SetProvider(v string) *AssumeRoleWithWebIdentityOutput { + s.Provider = &v + return s +} + +// SetSubjectFromWebIdentityToken sets the SubjectFromWebIdentityToken field's value. +func (s *AssumeRoleWithWebIdentityOutput) SetSubjectFromWebIdentityToken(v string) *AssumeRoleWithWebIdentityOutput { + s.SubjectFromWebIdentityToken = &v + return s +} + +// The identifiers for the temporary security credentials that the operation +// returns. +type AssumedRoleUser struct { + _ struct{} `type:"structure"` + + // The ARN of the temporary security credentials that are returned from the + // AssumeRole action. For more information about ARNs and how to use them in + // policies, see IAM Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html) + // in Using IAM. + // + // Arn is a required field + Arn *string `min:"20" type:"string" required:"true"` + + // A unique identifier that contains the role ID and the role session name of + // the role that is being assumed. The role ID is generated by AWS when the + // role is created. + // + // AssumedRoleId is a required field + AssumedRoleId *string `min:"2" type:"string" required:"true"` +} + +// String returns the string representation +func (s AssumedRoleUser) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AssumedRoleUser) GoString() string { + return s.String() +} + +// SetArn sets the Arn field's value. +func (s *AssumedRoleUser) SetArn(v string) *AssumedRoleUser { + s.Arn = &v + return s +} + +// SetAssumedRoleId sets the AssumedRoleId field's value. +func (s *AssumedRoleUser) SetAssumedRoleId(v string) *AssumedRoleUser { + s.AssumedRoleId = &v + return s +} + +// AWS credentials for API authentication. +type Credentials struct { + _ struct{} `type:"structure"` + + // The access key ID that identifies the temporary security credentials. + // + // AccessKeyId is a required field + AccessKeyId *string `min:"16" type:"string" required:"true"` + + // The date on which the current credentials expire. + // + // Expiration is a required field + Expiration *time.Time `type:"timestamp" required:"true"` + + // The secret access key that can be used to sign requests. + // + // SecretAccessKey is a required field + SecretAccessKey *string `type:"string" required:"true"` + + // The token that users must pass to the service API to use the temporary credentials. + // + // SessionToken is a required field + SessionToken *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s Credentials) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Credentials) GoString() string { + return s.String() +} + +// SetAccessKeyId sets the AccessKeyId field's value. +func (s *Credentials) SetAccessKeyId(v string) *Credentials { + s.AccessKeyId = &v + return s +} + +// SetExpiration sets the Expiration field's value. +func (s *Credentials) SetExpiration(v time.Time) *Credentials { + s.Expiration = &v + return s +} + +// SetSecretAccessKey sets the SecretAccessKey field's value. +func (s *Credentials) SetSecretAccessKey(v string) *Credentials { + s.SecretAccessKey = &v + return s +} + +// SetSessionToken sets the SessionToken field's value. +func (s *Credentials) SetSessionToken(v string) *Credentials { + s.SessionToken = &v + return s +} + +type DecodeAuthorizationMessageInput struct { + _ struct{} `type:"structure"` + + // The encoded message that was returned with the response. + // + // EncodedMessage is a required field + EncodedMessage *string `min:"1" type:"string" required:"true"` +} + +// String returns the string representation +func (s DecodeAuthorizationMessageInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DecodeAuthorizationMessageInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DecodeAuthorizationMessageInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DecodeAuthorizationMessageInput"} + if s.EncodedMessage == nil { + invalidParams.Add(request.NewErrParamRequired("EncodedMessage")) + } + if s.EncodedMessage != nil && len(*s.EncodedMessage) < 1 { + invalidParams.Add(request.NewErrParamMinLen("EncodedMessage", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetEncodedMessage sets the EncodedMessage field's value. +func (s *DecodeAuthorizationMessageInput) SetEncodedMessage(v string) *DecodeAuthorizationMessageInput { + s.EncodedMessage = &v + return s +} + +// A document that contains additional information about the authorization status +// of a request from an encoded message that is returned in response to an AWS +// request. +type DecodeAuthorizationMessageOutput struct { + _ struct{} `type:"structure"` + + // An XML document that contains the decoded message. + DecodedMessage *string `type:"string"` +} + +// String returns the string representation +func (s DecodeAuthorizationMessageOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DecodeAuthorizationMessageOutput) GoString() string { + return s.String() +} + +// SetDecodedMessage sets the DecodedMessage field's value. +func (s *DecodeAuthorizationMessageOutput) SetDecodedMessage(v string) *DecodeAuthorizationMessageOutput { + s.DecodedMessage = &v + return s +} + +// Identifiers for the federated user that is associated with the credentials. +type FederatedUser struct { + _ struct{} `type:"structure"` + + // The ARN that specifies the federated user that is associated with the credentials. + // For more information about ARNs and how to use them in policies, see IAM + // Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html) + // in Using IAM. + // + // Arn is a required field + Arn *string `min:"20" type:"string" required:"true"` + + // The string that identifies the federated user associated with the credentials, + // similar to the unique ID of an IAM user. + // + // FederatedUserId is a required field + FederatedUserId *string `min:"2" type:"string" required:"true"` +} + +// String returns the string representation +func (s FederatedUser) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s FederatedUser) GoString() string { + return s.String() +} + +// SetArn sets the Arn field's value. +func (s *FederatedUser) SetArn(v string) *FederatedUser { + s.Arn = &v + return s +} + +// SetFederatedUserId sets the FederatedUserId field's value. +func (s *FederatedUser) SetFederatedUserId(v string) *FederatedUser { + s.FederatedUserId = &v + return s +} + +type GetAccessKeyInfoInput struct { + _ struct{} `type:"structure"` + + // The identifier of an access key. + // + // This parameter allows (through its regex pattern) a string of characters + // that can consist of any upper- or lowercased letter or digit. + // + // AccessKeyId is a required field + AccessKeyId *string `min:"16" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetAccessKeyInfoInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetAccessKeyInfoInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetAccessKeyInfoInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetAccessKeyInfoInput"} + if s.AccessKeyId == nil { + invalidParams.Add(request.NewErrParamRequired("AccessKeyId")) + } + if s.AccessKeyId != nil && len(*s.AccessKeyId) < 16 { + invalidParams.Add(request.NewErrParamMinLen("AccessKeyId", 16)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAccessKeyId sets the AccessKeyId field's value. +func (s *GetAccessKeyInfoInput) SetAccessKeyId(v string) *GetAccessKeyInfoInput { + s.AccessKeyId = &v + return s +} + +type GetAccessKeyInfoOutput struct { + _ struct{} `type:"structure"` + + // The number used to identify the AWS account. + Account *string `type:"string"` +} + +// String returns the string representation +func (s GetAccessKeyInfoOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetAccessKeyInfoOutput) GoString() string { + return s.String() +} + +// SetAccount sets the Account field's value. +func (s *GetAccessKeyInfoOutput) SetAccount(v string) *GetAccessKeyInfoOutput { + s.Account = &v + return s +} + +type GetCallerIdentityInput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s GetCallerIdentityInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetCallerIdentityInput) GoString() string { + return s.String() +} + +// Contains the response to a successful GetCallerIdentity request, including +// information about the entity making the request. +type GetCallerIdentityOutput struct { + _ struct{} `type:"structure"` + + // The AWS account ID number of the account that owns or contains the calling + // entity. + Account *string `type:"string"` + + // The AWS ARN associated with the calling entity. + Arn *string `min:"20" type:"string"` + + // The unique identifier of the calling entity. The exact value depends on the + // type of entity that is making the call. The values returned are those listed + // in the aws:userid column in the Principal table (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html#principaltable) + // found on the Policy Variables reference page in the IAM User Guide. + UserId *string `type:"string"` +} + +// String returns the string representation +func (s GetCallerIdentityOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetCallerIdentityOutput) GoString() string { + return s.String() +} + +// SetAccount sets the Account field's value. +func (s *GetCallerIdentityOutput) SetAccount(v string) *GetCallerIdentityOutput { + s.Account = &v + return s +} + +// SetArn sets the Arn field's value. +func (s *GetCallerIdentityOutput) SetArn(v string) *GetCallerIdentityOutput { + s.Arn = &v + return s +} + +// SetUserId sets the UserId field's value. +func (s *GetCallerIdentityOutput) SetUserId(v string) *GetCallerIdentityOutput { + s.UserId = &v + return s +} + +type GetFederationTokenInput struct { + _ struct{} `type:"structure"` + + // The duration, in seconds, that the session should last. Acceptable durations + // for federation sessions range from 900 seconds (15 minutes) to 129,600 seconds + // (36 hours), with 43,200 seconds (12 hours) as the default. Sessions obtained + // using AWS account root user credentials are restricted to a maximum of 3,600 + // seconds (one hour). If the specified duration is longer than one hour, the + // session obtained by using root user credentials defaults to one hour. + DurationSeconds *int64 `min:"900" type:"integer"` + + // The name of the federated user. The name is used as an identifier for the + // temporary security credentials (such as Bob). For example, you can reference + // the federated user name in a resource-based policy, such as in an Amazon + // S3 bucket policy. + // + // The regex used to validate this parameter is a string of characters consisting + // of upper- and lower-case alphanumeric characters with no spaces. You can + // also include underscores or any of the following characters: =,.@- + // + // Name is a required field + Name *string `min:"2" type:"string" required:"true"` + + // An IAM policy in JSON format that you want to use as an inline session policy. + // + // You must pass an inline or managed session policy (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) + // to this operation. You can pass a single JSON policy document to use as an + // inline session policy. You can also specify up to 10 managed policies to + // use as managed session policies. + // + // This parameter is optional. However, if you do not pass any session policies, + // then the resulting federated user session has no permissions. The only exception + // is when the credentials are used to access a resource that has a resource-based + // policy that specifically references the federated user session in the Principal + // element of the policy. + // + // When you pass session policies, the session permissions are the intersection + // of the IAM user policies and the session policies that you pass. This gives + // you a way to further restrict the permissions for a federated user. You cannot + // use session policies to grant more permissions than those that are defined + // in the permissions policy of the IAM user. For more information, see Session + // Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) + // in the IAM User Guide. + // + // The plain text that you use for both inline and managed session policies + // shouldn't exceed 2048 characters. The JSON policy characters can be any ASCII + // character from the space character to the end of the valid character list + // (\u0020 through \u00FF). It can also include the tab (\u0009), linefeed (\u000A), + // and carriage return (\u000D) characters. + // + // The characters in this parameter count towards the 2048 character session + // policy guideline. However, an AWS conversion compresses the session policies + // into a packed binary format that has a separate limit. This is the enforced + // limit. The PackedPolicySize response element indicates by percentage how + // close the policy is to the upper size limit. + Policy *string `min:"1" type:"string"` + + // The Amazon Resource Names (ARNs) of the IAM managed policies that you want + // to use as a managed session policy. The policies must exist in the same account + // as the IAM user that is requesting federated access. + // + // You must pass an inline or managed session policy (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) + // to this operation. You can pass a single JSON policy document to use as an + // inline session policy. You can also specify up to 10 managed policies to + // use as managed session policies. The plain text that you use for both inline + // and managed session policies shouldn't exceed 2048 characters. You can provide + // up to 10 managed policy ARNs. For more information about ARNs, see Amazon + // Resource Names (ARNs) and AWS Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // in the AWS General Reference. + // + // This parameter is optional. However, if you do not pass any session policies, + // then the resulting federated user session has no permissions. The only exception + // is when the credentials are used to access a resource that has a resource-based + // policy that specifically references the federated user session in the Principal + // element of the policy. + // + // When you pass session policies, the session permissions are the intersection + // of the IAM user policies and the session policies that you pass. This gives + // you a way to further restrict the permissions for a federated user. You cannot + // use session policies to grant more permissions than those that are defined + // in the permissions policy of the IAM user. For more information, see Session + // Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) + // in the IAM User Guide. + // + // The characters in this parameter count towards the 2048 character session + // policy guideline. However, an AWS conversion compresses the session policies + // into a packed binary format that has a separate limit. This is the enforced + // limit. The PackedPolicySize response element indicates by percentage how + // close the policy is to the upper size limit. + PolicyArns []*PolicyDescriptorType `type:"list"` +} + +// String returns the string representation +func (s GetFederationTokenInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetFederationTokenInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetFederationTokenInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetFederationTokenInput"} + if s.DurationSeconds != nil && *s.DurationSeconds < 900 { + invalidParams.Add(request.NewErrParamMinValue("DurationSeconds", 900)) + } + if s.Name == nil { + invalidParams.Add(request.NewErrParamRequired("Name")) + } + if s.Name != nil && len(*s.Name) < 2 { + invalidParams.Add(request.NewErrParamMinLen("Name", 2)) + } + if s.Policy != nil && len(*s.Policy) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Policy", 1)) + } + if s.PolicyArns != nil { + for i, v := range s.PolicyArns { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PolicyArns", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDurationSeconds sets the DurationSeconds field's value. +func (s *GetFederationTokenInput) SetDurationSeconds(v int64) *GetFederationTokenInput { + s.DurationSeconds = &v + return s +} + +// SetName sets the Name field's value. +func (s *GetFederationTokenInput) SetName(v string) *GetFederationTokenInput { + s.Name = &v + return s +} + +// SetPolicy sets the Policy field's value. +func (s *GetFederationTokenInput) SetPolicy(v string) *GetFederationTokenInput { + s.Policy = &v + return s +} + +// SetPolicyArns sets the PolicyArns field's value. +func (s *GetFederationTokenInput) SetPolicyArns(v []*PolicyDescriptorType) *GetFederationTokenInput { + s.PolicyArns = v + return s +} + +// Contains the response to a successful GetFederationToken request, including +// temporary AWS credentials that can be used to make AWS requests. +type GetFederationTokenOutput struct { + _ struct{} `type:"structure"` + + // The temporary security credentials, which include an access key ID, a secret + // access key, and a security (or session) token. + // + // The size of the security token that STS API operations return is not fixed. + // We strongly recommend that you make no assumptions about the maximum size. + Credentials *Credentials `type:"structure"` + + // Identifiers for the federated user associated with the credentials (such + // as arn:aws:sts::123456789012:federated-user/Bob or 123456789012:Bob). You + // can use the federated user's ARN in your resource-based policies, such as + // an Amazon S3 bucket policy. + FederatedUser *FederatedUser `type:"structure"` + + // A percentage value indicating the size of the policy in packed form. The + // service rejects policies for which the packed size is greater than 100 percent + // of the allowed value. + PackedPolicySize *int64 `type:"integer"` +} + +// String returns the string representation +func (s GetFederationTokenOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetFederationTokenOutput) GoString() string { + return s.String() +} + +// SetCredentials sets the Credentials field's value. +func (s *GetFederationTokenOutput) SetCredentials(v *Credentials) *GetFederationTokenOutput { + s.Credentials = v + return s +} + +// SetFederatedUser sets the FederatedUser field's value. +func (s *GetFederationTokenOutput) SetFederatedUser(v *FederatedUser) *GetFederationTokenOutput { + s.FederatedUser = v + return s +} + +// SetPackedPolicySize sets the PackedPolicySize field's value. +func (s *GetFederationTokenOutput) SetPackedPolicySize(v int64) *GetFederationTokenOutput { + s.PackedPolicySize = &v + return s +} + +type GetSessionTokenInput struct { + _ struct{} `type:"structure"` + + // The duration, in seconds, that the credentials should remain valid. Acceptable + // durations for IAM user sessions range from 900 seconds (15 minutes) to 129,600 + // seconds (36 hours), with 43,200 seconds (12 hours) as the default. Sessions + // for AWS account owners are restricted to a maximum of 3,600 seconds (one + // hour). If the duration is longer than one hour, the session for AWS account + // owners defaults to one hour. + DurationSeconds *int64 `min:"900" type:"integer"` + + // The identification number of the MFA device that is associated with the IAM + // user who is making the GetSessionToken call. Specify this value if the IAM + // user has a policy that requires MFA authentication. The value is either the + // serial number for a hardware device (such as GAHT12345678) or an Amazon Resource + // Name (ARN) for a virtual device (such as arn:aws:iam::123456789012:mfa/user). + // You can find the device for an IAM user by going to the AWS Management Console + // and viewing the user's security credentials. + // + // The regex used to validate this parameter is a string of characters consisting + // of upper- and lower-case alphanumeric characters with no spaces. You can + // also include underscores or any of the following characters: =,.@:/- + SerialNumber *string `min:"9" type:"string"` + + // The value provided by the MFA device, if MFA is required. If any policy requires + // the IAM user to submit an MFA code, specify this value. If MFA authentication + // is required, the user must provide a code when requesting a set of temporary + // security credentials. A user who fails to provide the code receives an "access + // denied" response when requesting resources that require MFA authentication. + // + // The format for this parameter, as described by its regex pattern, is a sequence + // of six numeric digits. + TokenCode *string `min:"6" type:"string"` +} + +// String returns the string representation +func (s GetSessionTokenInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetSessionTokenInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetSessionTokenInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetSessionTokenInput"} + if s.DurationSeconds != nil && *s.DurationSeconds < 900 { + invalidParams.Add(request.NewErrParamMinValue("DurationSeconds", 900)) + } + if s.SerialNumber != nil && len(*s.SerialNumber) < 9 { + invalidParams.Add(request.NewErrParamMinLen("SerialNumber", 9)) + } + if s.TokenCode != nil && len(*s.TokenCode) < 6 { + invalidParams.Add(request.NewErrParamMinLen("TokenCode", 6)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDurationSeconds sets the DurationSeconds field's value. +func (s *GetSessionTokenInput) SetDurationSeconds(v int64) *GetSessionTokenInput { + s.DurationSeconds = &v + return s +} + +// SetSerialNumber sets the SerialNumber field's value. +func (s *GetSessionTokenInput) SetSerialNumber(v string) *GetSessionTokenInput { + s.SerialNumber = &v + return s +} + +// SetTokenCode sets the TokenCode field's value. +func (s *GetSessionTokenInput) SetTokenCode(v string) *GetSessionTokenInput { + s.TokenCode = &v + return s +} + +// Contains the response to a successful GetSessionToken request, including +// temporary AWS credentials that can be used to make AWS requests. +type GetSessionTokenOutput struct { + _ struct{} `type:"structure"` + + // The temporary security credentials, which include an access key ID, a secret + // access key, and a security (or session) token. + // + // The size of the security token that STS API operations return is not fixed. + // We strongly recommend that you make no assumptions about the maximum size. + Credentials *Credentials `type:"structure"` +} + +// String returns the string representation +func (s GetSessionTokenOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetSessionTokenOutput) GoString() string { + return s.String() +} + +// SetCredentials sets the Credentials field's value. +func (s *GetSessionTokenOutput) SetCredentials(v *Credentials) *GetSessionTokenOutput { + s.Credentials = v + return s +} + +// A reference to the IAM managed policy that is passed as a session policy +// for a role session or a federated user session. +type PolicyDescriptorType struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the IAM managed policy to use as a session + // policy for the role. For more information about ARNs, see Amazon Resource + // Names (ARNs) and AWS Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // in the AWS General Reference. + Arn *string `locationName:"arn" min:"20" type:"string"` +} + +// String returns the string representation +func (s PolicyDescriptorType) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PolicyDescriptorType) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PolicyDescriptorType) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PolicyDescriptorType"} + if s.Arn != nil && len(*s.Arn) < 20 { + invalidParams.Add(request.NewErrParamMinLen("Arn", 20)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetArn sets the Arn field's value. +func (s *PolicyDescriptorType) SetArn(v string) *PolicyDescriptorType { + s.Arn = &v + return s +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/sts/customizations.go b/vendor/github.com/aws/aws-sdk-go/service/sts/customizations.go new file mode 100644 index 0000000..d5307fc --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/sts/customizations.go @@ -0,0 +1,11 @@ +package sts + +import "github.com/aws/aws-sdk-go/aws/request" + +func init() { + initRequest = customizeRequest +} + +func customizeRequest(r *request.Request) { + r.RetryErrorCodes = append(r.RetryErrorCodes, ErrCodeIDPCommunicationErrorException) +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/sts/doc.go b/vendor/github.com/aws/aws-sdk-go/service/sts/doc.go new file mode 100644 index 0000000..fcb720d --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/sts/doc.go @@ -0,0 +1,108 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +// Package sts provides the client and types for making API +// requests to AWS Security Token Service. +// +// The AWS Security Token Service (STS) is a web service that enables you to +// request temporary, limited-privilege credentials for AWS Identity and Access +// Management (IAM) users or for users that you authenticate (federated users). +// This guide provides descriptions of the STS API. For more detailed information +// about using this service, go to Temporary Security Credentials (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html). +// +// For information about setting up signatures and authorization through the +// API, go to Signing AWS API Requests (https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html) +// in the AWS General Reference. For general information about the Query API, +// go to Making Query Requests (https://docs.aws.amazon.com/IAM/latest/UserGuide/IAM_UsingQueryAPI.html) +// in Using IAM. For information about using security tokens with other AWS +// products, go to AWS Services That Work with IAM (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) +// in the IAM User Guide. +// +// If you're new to AWS and need additional technical information about a specific +// AWS product, you can find the product's technical documentation at http://aws.amazon.com/documentation/ +// (http://aws.amazon.com/documentation/). +// +// Endpoints +// +// By default, AWS Security Token Service (STS) is available as a global service, +// and all AWS STS requests go to a single endpoint at https://sts.amazonaws.com. +// Global requests map to the US East (N. Virginia) region. AWS recommends using +// Regional AWS STS endpoints instead of the global endpoint to reduce latency, +// build in redundancy, and increase session token validity. For more information, +// see Managing AWS STS in an AWS Region (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html) +// in the IAM User Guide. +// +// Most AWS Regions are enabled for operations in all AWS services by default. +// Those Regions are automatically activated for use with AWS STS. Some Regions, +// such as Asia Pacific (Hong Kong), must be manually enabled. To learn more +// about enabling and disabling AWS Regions, see Managing AWS Regions (https://docs.aws.amazon.com/general/latest/gr/rande-manage.html) +// in the AWS General Reference. When you enable these AWS Regions, they are +// automatically activated for use with AWS STS. You cannot activate the STS +// endpoint for a Region that is disabled. Tokens that are valid in all AWS +// Regions are longer than tokens that are valid in Regions that are enabled +// by default. Changing this setting might affect existing systems where you +// temporarily store tokens. For more information, see Managing Global Endpoint +// Session Tokens (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html#sts-regions-manage-tokens) +// in the IAM User Guide. +// +// After you activate a Region for use with AWS STS, you can direct AWS STS +// API calls to that Region. AWS STS recommends that you provide both the Region +// and endpoint when you make calls to a Regional endpoint. You can provide +// the Region alone for manually enabled Regions, such as Asia Pacific (Hong +// Kong). In this case, the calls are directed to the STS Regional endpoint. +// However, if you provide the Region alone for Regions enabled by default, +// the calls are directed to the global endpoint of https://sts.amazonaws.com. +// +// To view the list of AWS STS endpoints and whether they are active by default, +// see Writing Code to Use AWS STS Regions (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html#id_credentials_temp_enable-regions_writing_code) +// in the IAM User Guide. +// +// Recording API requests +// +// STS supports AWS CloudTrail, which is a service that records AWS calls for +// your AWS account and delivers log files to an Amazon S3 bucket. By using +// information collected by CloudTrail, you can determine what requests were +// successfully made to STS, who made the request, when it was made, and so +// on. +// +// If you activate AWS STS endpoints in Regions other than the default global +// endpoint, then you must also turn on CloudTrail logging in those Regions. +// This is necessary to record any AWS STS API calls that are made in those +// Regions. For more information, see Turning On CloudTrail in Additional Regions +// (https://docs.aws.amazon.com/awscloudtrail/latest/userguide/aggregating_logs_regions_turn_on_ct.html) +// in the AWS CloudTrail User Guide. +// +// AWS Security Token Service (STS) is a global service with a single endpoint +// at https://sts.amazonaws.com. Calls to this endpoint are logged as calls +// to a global service. However, because this endpoint is physically located +// in the US East (N. Virginia) Region, your logs list us-east-1 as the event +// Region. CloudTrail does not write these logs to the US East (Ohio) Region +// unless you choose to include global service logs in that Region. CloudTrail +// writes calls to all Regional endpoints to their respective Regions. For example, +// calls to sts.us-east-2.amazonaws.com are published to the US East (Ohio) +// Region and calls to sts.eu-central-1.amazonaws.com are published to the EU +// (Frankfurt) Region. +// +// To learn more about CloudTrail, including how to turn it on and find your +// log files, see the AWS CloudTrail User Guide (https://docs.aws.amazon.com/awscloudtrail/latest/userguide/what_is_cloud_trail_top_level.html). +// +// See https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15 for more information on this service. +// +// See sts package documentation for more information. +// https://docs.aws.amazon.com/sdk-for-go/api/service/sts/ +// +// Using the Client +// +// To contact AWS Security Token Service with the SDK use the New function to create +// a new service client. With that client you can make API requests to the service. +// These clients are safe to use concurrently. +// +// See the SDK's documentation for more information on how to use the SDK. +// https://docs.aws.amazon.com/sdk-for-go/api/ +// +// See aws.Config documentation for more information on configuring SDK clients. +// https://docs.aws.amazon.com/sdk-for-go/api/aws/#Config +// +// See the AWS Security Token Service client STS for more +// information on creating client for this service. +// https://docs.aws.amazon.com/sdk-for-go/api/service/sts/#New +package sts diff --git a/vendor/github.com/aws/aws-sdk-go/service/sts/errors.go b/vendor/github.com/aws/aws-sdk-go/service/sts/errors.go new file mode 100644 index 0000000..a3e378e --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/sts/errors.go @@ -0,0 +1,73 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +package sts + +const ( + + // ErrCodeExpiredTokenException for service response error code + // "ExpiredTokenException". + // + // The web identity token that was passed is expired or is not valid. Get a + // new identity token from the identity provider and then retry the request. + ErrCodeExpiredTokenException = "ExpiredTokenException" + + // ErrCodeIDPCommunicationErrorException for service response error code + // "IDPCommunicationError". + // + // The request could not be fulfilled because the non-AWS identity provider + // (IDP) that was asked to verify the incoming identity token could not be reached. + // This is often a transient error caused by network conditions. Retry the request + // a limited number of times so that you don't exceed the request rate. If the + // error persists, the non-AWS identity provider might be down or not responding. + ErrCodeIDPCommunicationErrorException = "IDPCommunicationError" + + // ErrCodeIDPRejectedClaimException for service response error code + // "IDPRejectedClaim". + // + // The identity provider (IdP) reported that authentication failed. This might + // be because the claim is invalid. + // + // If this error is returned for the AssumeRoleWithWebIdentity operation, it + // can also mean that the claim has expired or has been explicitly revoked. + ErrCodeIDPRejectedClaimException = "IDPRejectedClaim" + + // ErrCodeInvalidAuthorizationMessageException for service response error code + // "InvalidAuthorizationMessageException". + // + // This error is returned if the message passed to DecodeAuthorizationMessage + // was invalid. This can happen if the token contains invalid characters, such + // as linebreaks. + ErrCodeInvalidAuthorizationMessageException = "InvalidAuthorizationMessageException" + + // ErrCodeInvalidIdentityTokenException for service response error code + // "InvalidIdentityToken". + // + // The web identity token that was passed could not be validated by AWS. Get + // a new identity token from the identity provider and then retry the request. + ErrCodeInvalidIdentityTokenException = "InvalidIdentityToken" + + // ErrCodeMalformedPolicyDocumentException for service response error code + // "MalformedPolicyDocument". + // + // The request was rejected because the policy document was malformed. The error + // message describes the specific error. + ErrCodeMalformedPolicyDocumentException = "MalformedPolicyDocument" + + // ErrCodePackedPolicyTooLargeException for service response error code + // "PackedPolicyTooLarge". + // + // The request was rejected because the policy document was too large. The error + // message describes how big the policy document is, in packed form, as a percentage + // of what the API allows. + ErrCodePackedPolicyTooLargeException = "PackedPolicyTooLarge" + + // ErrCodeRegionDisabledException for service response error code + // "RegionDisabledException". + // + // STS is not activated in the requested region for the account that is being + // asked to generate credentials. The account administrator must use the IAM + // console to activate STS in that region. For more information, see Activating + // and Deactivating AWS STS in an AWS Region (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html) + // in the IAM User Guide. + ErrCodeRegionDisabledException = "RegionDisabledException" +) diff --git a/vendor/github.com/aws/aws-sdk-go/service/sts/service.go b/vendor/github.com/aws/aws-sdk-go/service/sts/service.go new file mode 100644 index 0000000..2c3c3d2 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/sts/service.go @@ -0,0 +1,96 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +package sts + +import ( + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/client" + "github.com/aws/aws-sdk-go/aws/client/metadata" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/aws/signer/v4" + "github.com/aws/aws-sdk-go/private/protocol/query" +) + +// STS provides the API operation methods for making requests to +// AWS Security Token Service. See this package's package overview docs +// for details on the service. +// +// STS methods are safe to use concurrently. It is not safe to +// modify mutate any of the struct's properties though. +type STS struct { + *client.Client +} + +// Used for custom client initialization logic +var initClient func(*client.Client) + +// Used for custom request initialization logic +var initRequest func(*request.Request) + +// Service information constants +const ( + ServiceName = "sts" // Name of service. + EndpointsID = ServiceName // ID to lookup a service endpoint with. + ServiceID = "STS" // ServiceID is a unique identifer of a specific service. +) + +// New creates a new instance of the STS client with a session. +// If additional configuration is needed for the client instance use the optional +// aws.Config parameter to add your extra config. +// +// Example: +// // Create a STS client from just a session. +// svc := sts.New(mySession) +// +// // Create a STS client with additional configuration +// svc := sts.New(mySession, aws.NewConfig().WithRegion("us-west-2")) +func New(p client.ConfigProvider, cfgs ...*aws.Config) *STS { + c := p.ClientConfig(EndpointsID, cfgs...) + return newClient(*c.Config, c.Handlers, c.PartitionID, c.Endpoint, c.SigningRegion, c.SigningName) +} + +// newClient creates, initializes and returns a new service client instance. +func newClient(cfg aws.Config, handlers request.Handlers, partitionID, endpoint, signingRegion, signingName string) *STS { + svc := &STS{ + Client: client.New( + cfg, + metadata.ClientInfo{ + ServiceName: ServiceName, + ServiceID: ServiceID, + SigningName: signingName, + SigningRegion: signingRegion, + PartitionID: partitionID, + Endpoint: endpoint, + APIVersion: "2011-06-15", + }, + handlers, + ), + } + + // Handlers + svc.Handlers.Sign.PushBackNamed(v4.SignRequestHandler) + svc.Handlers.Build.PushBackNamed(query.BuildHandler) + svc.Handlers.Unmarshal.PushBackNamed(query.UnmarshalHandler) + svc.Handlers.UnmarshalMeta.PushBackNamed(query.UnmarshalMetaHandler) + svc.Handlers.UnmarshalError.PushBackNamed(query.UnmarshalErrorHandler) + + // Run custom client initialization if present + if initClient != nil { + initClient(svc.Client) + } + + return svc +} + +// newRequest creates a new request for a STS operation and runs any +// custom request initialization. +func (c *STS) newRequest(op *request.Operation, params, data interface{}) *request.Request { + req := c.NewRequest(op, params, data) + + // Run custom request initialization if present + if initRequest != nil { + initRequest(req) + } + + return req +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/sts/stsiface/interface.go b/vendor/github.com/aws/aws-sdk-go/service/sts/stsiface/interface.go new file mode 100644 index 0000000..e2e1d6e --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/sts/stsiface/interface.go @@ -0,0 +1,96 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +// Package stsiface provides an interface to enable mocking the AWS Security Token Service service client +// for testing your code. +// +// It is important to note that this interface will have breaking changes +// when the service model is updated and adds new API operations, paginators, +// and waiters. +package stsiface + +import ( + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/service/sts" +) + +// STSAPI provides an interface to enable mocking the +// sts.STS service client's API operation, +// paginators, and waiters. This make unit testing your code that calls out +// to the SDK's service client's calls easier. +// +// The best way to use this interface is so the SDK's service client's calls +// can be stubbed out for unit testing your code with the SDK without needing +// to inject custom request handlers into the SDK's request pipeline. +// +// // myFunc uses an SDK service client to make a request to +// // AWS Security Token Service. +// func myFunc(svc stsiface.STSAPI) bool { +// // Make svc.AssumeRole request +// } +// +// func main() { +// sess := session.New() +// svc := sts.New(sess) +// +// myFunc(svc) +// } +// +// In your _test.go file: +// +// // Define a mock struct to be used in your unit tests of myFunc. +// type mockSTSClient struct { +// stsiface.STSAPI +// } +// func (m *mockSTSClient) AssumeRole(input *sts.AssumeRoleInput) (*sts.AssumeRoleOutput, error) { +// // mock response/functionality +// } +// +// func TestMyFunc(t *testing.T) { +// // Setup Test +// mockSvc := &mockSTSClient{} +// +// myfunc(mockSvc) +// +// // Verify myFunc's functionality +// } +// +// It is important to note that this interface will have breaking changes +// when the service model is updated and adds new API operations, paginators, +// and waiters. Its suggested to use the pattern above for testing, or using +// tooling to generate mocks to satisfy the interfaces. +type STSAPI interface { + AssumeRole(*sts.AssumeRoleInput) (*sts.AssumeRoleOutput, error) + AssumeRoleWithContext(aws.Context, *sts.AssumeRoleInput, ...request.Option) (*sts.AssumeRoleOutput, error) + AssumeRoleRequest(*sts.AssumeRoleInput) (*request.Request, *sts.AssumeRoleOutput) + + AssumeRoleWithSAML(*sts.AssumeRoleWithSAMLInput) (*sts.AssumeRoleWithSAMLOutput, error) + AssumeRoleWithSAMLWithContext(aws.Context, *sts.AssumeRoleWithSAMLInput, ...request.Option) (*sts.AssumeRoleWithSAMLOutput, error) + AssumeRoleWithSAMLRequest(*sts.AssumeRoleWithSAMLInput) (*request.Request, *sts.AssumeRoleWithSAMLOutput) + + AssumeRoleWithWebIdentity(*sts.AssumeRoleWithWebIdentityInput) (*sts.AssumeRoleWithWebIdentityOutput, error) + AssumeRoleWithWebIdentityWithContext(aws.Context, *sts.AssumeRoleWithWebIdentityInput, ...request.Option) (*sts.AssumeRoleWithWebIdentityOutput, error) + AssumeRoleWithWebIdentityRequest(*sts.AssumeRoleWithWebIdentityInput) (*request.Request, *sts.AssumeRoleWithWebIdentityOutput) + + DecodeAuthorizationMessage(*sts.DecodeAuthorizationMessageInput) (*sts.DecodeAuthorizationMessageOutput, error) + DecodeAuthorizationMessageWithContext(aws.Context, *sts.DecodeAuthorizationMessageInput, ...request.Option) (*sts.DecodeAuthorizationMessageOutput, error) + DecodeAuthorizationMessageRequest(*sts.DecodeAuthorizationMessageInput) (*request.Request, *sts.DecodeAuthorizationMessageOutput) + + GetAccessKeyInfo(*sts.GetAccessKeyInfoInput) (*sts.GetAccessKeyInfoOutput, error) + GetAccessKeyInfoWithContext(aws.Context, *sts.GetAccessKeyInfoInput, ...request.Option) (*sts.GetAccessKeyInfoOutput, error) + GetAccessKeyInfoRequest(*sts.GetAccessKeyInfoInput) (*request.Request, *sts.GetAccessKeyInfoOutput) + + GetCallerIdentity(*sts.GetCallerIdentityInput) (*sts.GetCallerIdentityOutput, error) + GetCallerIdentityWithContext(aws.Context, *sts.GetCallerIdentityInput, ...request.Option) (*sts.GetCallerIdentityOutput, error) + GetCallerIdentityRequest(*sts.GetCallerIdentityInput) (*request.Request, *sts.GetCallerIdentityOutput) + + GetFederationToken(*sts.GetFederationTokenInput) (*sts.GetFederationTokenOutput, error) + GetFederationTokenWithContext(aws.Context, *sts.GetFederationTokenInput, ...request.Option) (*sts.GetFederationTokenOutput, error) + GetFederationTokenRequest(*sts.GetFederationTokenInput) (*request.Request, *sts.GetFederationTokenOutput) + + GetSessionToken(*sts.GetSessionTokenInput) (*sts.GetSessionTokenOutput, error) + GetSessionTokenWithContext(aws.Context, *sts.GetSessionTokenInput, ...request.Option) (*sts.GetSessionTokenOutput, error) + GetSessionTokenRequest(*sts.GetSessionTokenInput) (*request.Request, *sts.GetSessionTokenOutput) +} + +var _ STSAPI = (*sts.STS)(nil) diff --git a/vendor/github.com/coreos/go-semver/LICENSE b/vendor/github.com/coreos/go-semver/LICENSE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/vendor/github.com/coreos/go-semver/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/coreos/go-semver/NOTICE b/vendor/github.com/coreos/go-semver/NOTICE new file mode 100644 index 0000000..23a0ada --- /dev/null +++ b/vendor/github.com/coreos/go-semver/NOTICE @@ -0,0 +1,5 @@ +CoreOS Project +Copyright 2018 CoreOS, Inc + +This product includes software developed at CoreOS, Inc. +(http://www.coreos.com/). diff --git a/vendor/github.com/coreos/go-semver/semver/semver.go b/vendor/github.com/coreos/go-semver/semver/semver.go new file mode 100644 index 0000000..76cf485 --- /dev/null +++ b/vendor/github.com/coreos/go-semver/semver/semver.go @@ -0,0 +1,296 @@ +// Copyright 2013-2015 CoreOS, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Semantic Versions http://semver.org +package semver + +import ( + "bytes" + "errors" + "fmt" + "regexp" + "strconv" + "strings" +) + +type Version struct { + Major int64 + Minor int64 + Patch int64 + PreRelease PreRelease + Metadata string +} + +type PreRelease string + +func splitOff(input *string, delim string) (val string) { + parts := strings.SplitN(*input, delim, 2) + + if len(parts) == 2 { + *input = parts[0] + val = parts[1] + } + + return val +} + +func New(version string) *Version { + return Must(NewVersion(version)) +} + +func NewVersion(version string) (*Version, error) { + v := Version{} + + if err := v.Set(version); err != nil { + return nil, err + } + + return &v, nil +} + +// Must is a helper for wrapping NewVersion and will panic if err is not nil. +func Must(v *Version, err error) *Version { + if err != nil { + panic(err) + } + return v +} + +// Set parses and updates v from the given version string. Implements flag.Value +func (v *Version) Set(version string) error { + metadata := splitOff(&version, "+") + preRelease := PreRelease(splitOff(&version, "-")) + dotParts := strings.SplitN(version, ".", 3) + + if len(dotParts) != 3 { + return fmt.Errorf("%s is not in dotted-tri format", version) + } + + if err := validateIdentifier(string(preRelease)); err != nil { + return fmt.Errorf("failed to validate pre-release: %v", err) + } + + if err := validateIdentifier(metadata); err != nil { + return fmt.Errorf("failed to validate metadata: %v", err) + } + + parsed := make([]int64, 3, 3) + + for i, v := range dotParts[:3] { + val, err := strconv.ParseInt(v, 10, 64) + parsed[i] = val + if err != nil { + return err + } + } + + v.Metadata = metadata + v.PreRelease = preRelease + v.Major = parsed[0] + v.Minor = parsed[1] + v.Patch = parsed[2] + return nil +} + +func (v Version) String() string { + var buffer bytes.Buffer + + fmt.Fprintf(&buffer, "%d.%d.%d", v.Major, v.Minor, v.Patch) + + if v.PreRelease != "" { + fmt.Fprintf(&buffer, "-%s", v.PreRelease) + } + + if v.Metadata != "" { + fmt.Fprintf(&buffer, "+%s", v.Metadata) + } + + return buffer.String() +} + +func (v *Version) UnmarshalYAML(unmarshal func(interface{}) error) error { + var data string + if err := unmarshal(&data); err != nil { + return err + } + return v.Set(data) +} + +func (v Version) MarshalJSON() ([]byte, error) { + return []byte(`"` + v.String() + `"`), nil +} + +func (v *Version) UnmarshalJSON(data []byte) error { + l := len(data) + if l == 0 || string(data) == `""` { + return nil + } + if l < 2 || data[0] != '"' || data[l-1] != '"' { + return errors.New("invalid semver string") + } + return v.Set(string(data[1 : l-1])) +} + +// Compare tests if v is less than, equal to, or greater than versionB, +// returning -1, 0, or +1 respectively. +func (v Version) Compare(versionB Version) int { + if cmp := recursiveCompare(v.Slice(), versionB.Slice()); cmp != 0 { + return cmp + } + return preReleaseCompare(v, versionB) +} + +// Equal tests if v is equal to versionB. +func (v Version) Equal(versionB Version) bool { + return v.Compare(versionB) == 0 +} + +// LessThan tests if v is less than versionB. +func (v Version) LessThan(versionB Version) bool { + return v.Compare(versionB) < 0 +} + +// Slice converts the comparable parts of the semver into a slice of integers. +func (v Version) Slice() []int64 { + return []int64{v.Major, v.Minor, v.Patch} +} + +func (p PreRelease) Slice() []string { + preRelease := string(p) + return strings.Split(preRelease, ".") +} + +func preReleaseCompare(versionA Version, versionB Version) int { + a := versionA.PreRelease + b := versionB.PreRelease + + /* Handle the case where if two versions are otherwise equal it is the + * one without a PreRelease that is greater */ + if len(a) == 0 && (len(b) > 0) { + return 1 + } else if len(b) == 0 && (len(a) > 0) { + return -1 + } + + // If there is a prerelease, check and compare each part. + return recursivePreReleaseCompare(a.Slice(), b.Slice()) +} + +func recursiveCompare(versionA []int64, versionB []int64) int { + if len(versionA) == 0 { + return 0 + } + + a := versionA[0] + b := versionB[0] + + if a > b { + return 1 + } else if a < b { + return -1 + } + + return recursiveCompare(versionA[1:], versionB[1:]) +} + +func recursivePreReleaseCompare(versionA []string, versionB []string) int { + // A larger set of pre-release fields has a higher precedence than a smaller set, + // if all of the preceding identifiers are equal. + if len(versionA) == 0 { + if len(versionB) > 0 { + return -1 + } + return 0 + } else if len(versionB) == 0 { + // We're longer than versionB so return 1. + return 1 + } + + a := versionA[0] + b := versionB[0] + + aInt := false + bInt := false + + aI, err := strconv.Atoi(versionA[0]) + if err == nil { + aInt = true + } + + bI, err := strconv.Atoi(versionB[0]) + if err == nil { + bInt = true + } + + // Numeric identifiers always have lower precedence than non-numeric identifiers. + if aInt && !bInt { + return -1 + } else if !aInt && bInt { + return 1 + } + + // Handle Integer Comparison + if aInt && bInt { + if aI > bI { + return 1 + } else if aI < bI { + return -1 + } + } + + // Handle String Comparison + if a > b { + return 1 + } else if a < b { + return -1 + } + + return recursivePreReleaseCompare(versionA[1:], versionB[1:]) +} + +// BumpMajor increments the Major field by 1 and resets all other fields to their default values +func (v *Version) BumpMajor() { + v.Major += 1 + v.Minor = 0 + v.Patch = 0 + v.PreRelease = PreRelease("") + v.Metadata = "" +} + +// BumpMinor increments the Minor field by 1 and resets all other fields to their default values +func (v *Version) BumpMinor() { + v.Minor += 1 + v.Patch = 0 + v.PreRelease = PreRelease("") + v.Metadata = "" +} + +// BumpPatch increments the Patch field by 1 and resets all other fields to their default values +func (v *Version) BumpPatch() { + v.Patch += 1 + v.PreRelease = PreRelease("") + v.Metadata = "" +} + +// validateIdentifier makes sure the provided identifier satisfies semver spec +func validateIdentifier(id string) error { + if id != "" && !reIdentifier.MatchString(id) { + return fmt.Errorf("%s is not a valid semver identifier", id) + } + return nil +} + +// reIdentifier is a regular expression used to check that pre-release and metadata +// identifiers satisfy the spec requirements +var reIdentifier = regexp.MustCompile(`^[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*$`) diff --git a/vendor/github.com/coreos/go-semver/semver/sort.go b/vendor/github.com/coreos/go-semver/semver/sort.go new file mode 100644 index 0000000..e256b41 --- /dev/null +++ b/vendor/github.com/coreos/go-semver/semver/sort.go @@ -0,0 +1,38 @@ +// Copyright 2013-2015 CoreOS, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package semver + +import ( + "sort" +) + +type Versions []*Version + +func (s Versions) Len() int { + return len(s) +} + +func (s Versions) Swap(i, j int) { + s[i], s[j] = s[j], s[i] +} + +func (s Versions) Less(i, j int) bool { + return s[i].LessThan(*s[j]) +} + +// Sort sorts the given slice of Version +func Sort(versions []*Version) { + sort.Sort(Versions(versions)) +} diff --git a/vendor/github.com/coreos/go-systemd/LICENSE b/vendor/github.com/coreos/go-systemd/LICENSE new file mode 100644 index 0000000..37ec93a --- /dev/null +++ b/vendor/github.com/coreos/go-systemd/LICENSE @@ -0,0 +1,191 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and +distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright +owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities +that control, are controlled by, or are under common control with that entity. +For the purposes of this definition, "control" means (i) the power, direct or +indirect, to cause the direction or management of such entity, whether by +contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the +outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising +permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including +but not limited to software source code, documentation source, and configuration +files. + +"Object" form shall mean any form resulting from mechanical transformation or +translation of a Source form, including but not limited to compiled object code, +generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made +available under the License, as indicated by a copyright notice that is included +in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that +is based on (or derived from) the Work and for which the editorial revisions, +annotations, elaborations, or other modifications represent, as a whole, an +original work of authorship. For the purposes of this License, Derivative Works +shall not include works that remain separable from, or merely link (or bind by +name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version +of the Work and any modifications or additions to that Work or Derivative Works +thereof, that is intentionally submitted to Licensor for inclusion in the Work +by the copyright owner or by an individual or Legal Entity authorized to submit +on behalf of the copyright owner. For the purposes of this definition, +"submitted" means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, and +issue tracking systems that are managed by, or on behalf of, the Licensor for +the purpose of discussing and improving the Work, but excluding communication +that is conspicuously marked or otherwise designated in writing by the copyright +owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf +of whom a Contribution has been received by Licensor and subsequently +incorporated within the Work. + +2. Grant of Copyright License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the Work and such +Derivative Works in Source or Object form. + +3. Grant of Patent License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable (except as stated in this section) patent license to make, have +made, use, offer to sell, sell, import, and otherwise transfer the Work, where +such license applies only to those patent claims licensable by such Contributor +that are necessarily infringed by their Contribution(s) alone or by combination +of their Contribution(s) with the Work to which such Contribution(s) was +submitted. If You institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Work or a +Contribution incorporated within the Work constitutes direct or contributory +patent infringement, then any patent licenses granted to You under this License +for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. + +You may reproduce and distribute copies of the Work or Derivative Works thereof +in any medium, with or without modifications, and in Source or Object form, +provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of +this License; and +You must cause any modified files to carry prominent notices stating that You +changed the files; and +You must retain, in the Source form of any Derivative Works that You distribute, +all copyright, patent, trademark, and attribution notices from the Source form +of the Work, excluding those notices that do not pertain to any part of the +Derivative Works; and +If the Work includes a "NOTICE" text file as part of its distribution, then any +Derivative Works that You distribute must include a readable copy of the +attribution notices contained within such NOTICE file, excluding those notices +that do not pertain to any part of the Derivative Works, in at least one of the +following places: within a NOTICE text file distributed as part of the +Derivative Works; within the Source form or documentation, if provided along +with the Derivative Works; or, within a display generated by the Derivative +Works, if and wherever such third-party notices normally appear. The contents of +the NOTICE file are for informational purposes only and do not modify the +License. You may add Your own attribution notices within Derivative Works that +You distribute, alongside or as an addendum to the NOTICE text from the Work, +provided that such additional attribution notices cannot be construed as +modifying the License. +You may add Your own copyright statement to Your modifications and may provide +additional or different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works as a whole, +provided Your use, reproduction, and distribution of the Work otherwise complies +with the conditions stated in this License. + +5. Submission of Contributions. + +Unless You explicitly state otherwise, any Contribution intentionally submitted +for inclusion in the Work by You to the Licensor shall be under the terms and +conditions of this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify the terms of +any separate license agreement you may have executed with Licensor regarding +such Contributions. + +6. Trademarks. + +This License does not grant permission to use the trade names, trademarks, +service marks, or product names of the Licensor, except as required for +reasonable and customary use in describing the origin of the Work and +reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. + +Unless required by applicable law or agreed to in writing, Licensor provides the +Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, +including, without limitation, any warranties or conditions of TITLE, +NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are +solely responsible for determining the appropriateness of using or +redistributing the Work and assume any risks associated with Your exercise of +permissions under this License. + +8. Limitation of Liability. + +In no event and under no legal theory, whether in tort (including negligence), +contract, or otherwise, unless required by applicable law (such as deliberate +and grossly negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License or +out of the use or inability to use the Work (including but not limited to +damages for loss of goodwill, work stoppage, computer failure or malfunction, or +any and all other commercial damages or losses), even if such Contributor has +been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. + +While redistributing the Work or Derivative Works thereof, You may choose to +offer, and charge a fee for, acceptance of support, warranty, indemnity, or +other liability obligations and/or rights consistent with this License. However, +in accepting such obligations, You may act only on Your own behalf and on Your +sole responsibility, not on behalf of any other Contributor, and only if You +agree to indemnify, defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason of your +accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work + +To apply the Apache License to your work, attach the following boilerplate +notice, with the fields enclosed by brackets "[]" replaced with your own +identifying information. (Don't include the brackets!) The text should be +enclosed in the appropriate comment syntax for the file format. We also +recommend that a file or class name and description of purpose be included on +the same "printed page" as the copyright notice for easier identification within +third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/coreos/go-systemd/NOTICE b/vendor/github.com/coreos/go-systemd/NOTICE new file mode 100644 index 0000000..23a0ada --- /dev/null +++ b/vendor/github.com/coreos/go-systemd/NOTICE @@ -0,0 +1,5 @@ +CoreOS Project +Copyright 2018 CoreOS, Inc + +This product includes software developed at CoreOS, Inc. +(http://www.coreos.com/). diff --git a/vendor/github.com/coreos/go-systemd/activation/files.go b/vendor/github.com/coreos/go-systemd/activation/files.go new file mode 100644 index 0000000..29dd18d --- /dev/null +++ b/vendor/github.com/coreos/go-systemd/activation/files.go @@ -0,0 +1,67 @@ +// Copyright 2015 CoreOS, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package activation implements primitives for systemd socket activation. +package activation + +import ( + "os" + "strconv" + "strings" + "syscall" +) + +const ( + // listenFdsStart corresponds to `SD_LISTEN_FDS_START`. + listenFdsStart = 3 +) + +// Files returns a slice containing a `os.File` object for each +// file descriptor passed to this process via systemd fd-passing protocol. +// +// The order of the file descriptors is preserved in the returned slice. +// `unsetEnv` is typically set to `true` in order to avoid clashes in +// fd usage and to avoid leaking environment flags to child processes. +func Files(unsetEnv bool) []*os.File { + if unsetEnv { + defer os.Unsetenv("LISTEN_PID") + defer os.Unsetenv("LISTEN_FDS") + defer os.Unsetenv("LISTEN_FDNAMES") + } + + pid, err := strconv.Atoi(os.Getenv("LISTEN_PID")) + if err != nil || pid != os.Getpid() { + return nil + } + + nfds, err := strconv.Atoi(os.Getenv("LISTEN_FDS")) + if err != nil || nfds == 0 { + return nil + } + + names := strings.Split(os.Getenv("LISTEN_FDNAMES"), ":") + + files := make([]*os.File, 0, nfds) + for fd := listenFdsStart; fd < listenFdsStart+nfds; fd++ { + syscall.CloseOnExec(fd) + name := "LISTEN_FD_" + strconv.Itoa(fd) + offset := fd - listenFdsStart + if offset < len(names) && len(names[offset]) > 0 { + name = names[offset] + } + files = append(files, os.NewFile(uintptr(fd), name)) + } + + return files +} diff --git a/vendor/github.com/coreos/go-systemd/activation/listeners.go b/vendor/github.com/coreos/go-systemd/activation/listeners.go new file mode 100644 index 0000000..3dbe2b0 --- /dev/null +++ b/vendor/github.com/coreos/go-systemd/activation/listeners.go @@ -0,0 +1,103 @@ +// Copyright 2015 CoreOS, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package activation + +import ( + "crypto/tls" + "net" +) + +// Listeners returns a slice containing a net.Listener for each matching socket type +// passed to this process. +// +// The order of the file descriptors is preserved in the returned slice. +// Nil values are used to fill any gaps. For example if systemd were to return file descriptors +// corresponding with "udp, tcp, tcp", then the slice would contain {nil, net.Listener, net.Listener} +func Listeners() ([]net.Listener, error) { + files := Files(true) + listeners := make([]net.Listener, len(files)) + + for i, f := range files { + if pc, err := net.FileListener(f); err == nil { + listeners[i] = pc + f.Close() + } + } + return listeners, nil +} + +// ListenersWithNames maps a listener name to a set of net.Listener instances. +func ListenersWithNames() (map[string][]net.Listener, error) { + files := Files(true) + listeners := map[string][]net.Listener{} + + for _, f := range files { + if pc, err := net.FileListener(f); err == nil { + current, ok := listeners[f.Name()] + if !ok { + listeners[f.Name()] = []net.Listener{pc} + } else { + listeners[f.Name()] = append(current, pc) + } + f.Close() + } + } + return listeners, nil +} + +// TLSListeners returns a slice containing a net.listener for each matching TCP socket type +// passed to this process. +// It uses default Listeners func and forces TCP sockets handlers to use TLS based on tlsConfig. +func TLSListeners(tlsConfig *tls.Config) ([]net.Listener, error) { + listeners, err := Listeners() + + if listeners == nil || err != nil { + return nil, err + } + + if tlsConfig != nil { + for i, l := range listeners { + // Activate TLS only for TCP sockets + if l.Addr().Network() == "tcp" { + listeners[i] = tls.NewListener(l, tlsConfig) + } + } + } + + return listeners, err +} + +// TLSListenersWithNames maps a listener name to a net.Listener with +// the associated TLS configuration. +func TLSListenersWithNames(tlsConfig *tls.Config) (map[string][]net.Listener, error) { + listeners, err := ListenersWithNames() + + if listeners == nil || err != nil { + return nil, err + } + + if tlsConfig != nil { + for _, ll := range listeners { + // Activate TLS only for TCP sockets + for i, l := range ll { + if l.Addr().Network() == "tcp" { + ll[i] = tls.NewListener(l, tlsConfig) + } + } + } + } + + return listeners, err +} diff --git a/vendor/github.com/coreos/go-systemd/activation/packetconns.go b/vendor/github.com/coreos/go-systemd/activation/packetconns.go new file mode 100644 index 0000000..a972067 --- /dev/null +++ b/vendor/github.com/coreos/go-systemd/activation/packetconns.go @@ -0,0 +1,38 @@ +// Copyright 2015 CoreOS, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package activation + +import ( + "net" +) + +// PacketConns returns a slice containing a net.PacketConn for each matching socket type +// passed to this process. +// +// The order of the file descriptors is preserved in the returned slice. +// Nil values are used to fill any gaps. For example if systemd were to return file descriptors +// corresponding with "udp, tcp, udp", then the slice would contain {net.PacketConn, nil, net.PacketConn} +func PacketConns() ([]net.PacketConn, error) { + files := Files(true) + conns := make([]net.PacketConn, len(files)) + + for i, f := range files { + if pc, err := net.FilePacketConn(f); err == nil { + conns[i] = pc + f.Close() + } + } + return conns, nil +} diff --git a/vendor/github.com/davecgh/go-spew/LICENSE b/vendor/github.com/davecgh/go-spew/LICENSE new file mode 100644 index 0000000..c836416 --- /dev/null +++ b/vendor/github.com/davecgh/go-spew/LICENSE @@ -0,0 +1,15 @@ +ISC License + +Copyright (c) 2012-2016 Dave Collins + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/vendor/github.com/davecgh/go-spew/spew/bypass.go b/vendor/github.com/davecgh/go-spew/spew/bypass.go new file mode 100644 index 0000000..8a4a658 --- /dev/null +++ b/vendor/github.com/davecgh/go-spew/spew/bypass.go @@ -0,0 +1,152 @@ +// Copyright (c) 2015-2016 Dave Collins +// +// Permission to use, copy, modify, and distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +// NOTE: Due to the following build constraints, this file will only be compiled +// when the code is not running on Google App Engine, compiled by GopherJS, and +// "-tags safe" is not added to the go build command line. The "disableunsafe" +// tag is deprecated and thus should not be used. +// +build !js,!appengine,!safe,!disableunsafe + +package spew + +import ( + "reflect" + "unsafe" +) + +const ( + // UnsafeDisabled is a build-time constant which specifies whether or + // not access to the unsafe package is available. + UnsafeDisabled = false + + // ptrSize is the size of a pointer on the current arch. + ptrSize = unsafe.Sizeof((*byte)(nil)) +) + +var ( + // offsetPtr, offsetScalar, and offsetFlag are the offsets for the + // internal reflect.Value fields. These values are valid before golang + // commit ecccf07e7f9d which changed the format. The are also valid + // after commit 82f48826c6c7 which changed the format again to mirror + // the original format. Code in the init function updates these offsets + // as necessary. + offsetPtr = uintptr(ptrSize) + offsetScalar = uintptr(0) + offsetFlag = uintptr(ptrSize * 2) + + // flagKindWidth and flagKindShift indicate various bits that the + // reflect package uses internally to track kind information. + // + // flagRO indicates whether or not the value field of a reflect.Value is + // read-only. + // + // flagIndir indicates whether the value field of a reflect.Value is + // the actual data or a pointer to the data. + // + // These values are valid before golang commit 90a7c3c86944 which + // changed their positions. Code in the init function updates these + // flags as necessary. + flagKindWidth = uintptr(5) + flagKindShift = uintptr(flagKindWidth - 1) + flagRO = uintptr(1 << 0) + flagIndir = uintptr(1 << 1) +) + +func init() { + // Older versions of reflect.Value stored small integers directly in the + // ptr field (which is named val in the older versions). Versions + // between commits ecccf07e7f9d and 82f48826c6c7 added a new field named + // scalar for this purpose which unfortunately came before the flag + // field, so the offset of the flag field is different for those + // versions. + // + // This code constructs a new reflect.Value from a known small integer + // and checks if the size of the reflect.Value struct indicates it has + // the scalar field. When it does, the offsets are updated accordingly. + vv := reflect.ValueOf(0xf00) + if unsafe.Sizeof(vv) == (ptrSize * 4) { + offsetScalar = ptrSize * 2 + offsetFlag = ptrSize * 3 + } + + // Commit 90a7c3c86944 changed the flag positions such that the low + // order bits are the kind. This code extracts the kind from the flags + // field and ensures it's the correct type. When it's not, the flag + // order has been changed to the newer format, so the flags are updated + // accordingly. + upf := unsafe.Pointer(uintptr(unsafe.Pointer(&vv)) + offsetFlag) + upfv := *(*uintptr)(upf) + flagKindMask := uintptr((1<>flagKindShift != uintptr(reflect.Int) { + flagKindShift = 0 + flagRO = 1 << 5 + flagIndir = 1 << 6 + + // Commit adf9b30e5594 modified the flags to separate the + // flagRO flag into two bits which specifies whether or not the + // field is embedded. This causes flagIndir to move over a bit + // and means that flagRO is the combination of either of the + // original flagRO bit and the new bit. + // + // This code detects the change by extracting what used to be + // the indirect bit to ensure it's set. When it's not, the flag + // order has been changed to the newer format, so the flags are + // updated accordingly. + if upfv&flagIndir == 0 { + flagRO = 3 << 5 + flagIndir = 1 << 7 + } + } +} + +// unsafeReflectValue converts the passed reflect.Value into a one that bypasses +// the typical safety restrictions preventing access to unaddressable and +// unexported data. It works by digging the raw pointer to the underlying +// value out of the protected value and generating a new unprotected (unsafe) +// reflect.Value to it. +// +// This allows us to check for implementations of the Stringer and error +// interfaces to be used for pretty printing ordinarily unaddressable and +// inaccessible values such as unexported struct fields. +func unsafeReflectValue(v reflect.Value) (rv reflect.Value) { + indirects := 1 + vt := v.Type() + upv := unsafe.Pointer(uintptr(unsafe.Pointer(&v)) + offsetPtr) + rvf := *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&v)) + offsetFlag)) + if rvf&flagIndir != 0 { + vt = reflect.PtrTo(v.Type()) + indirects++ + } else if offsetScalar != 0 { + // The value is in the scalar field when it's not one of the + // reference types. + switch vt.Kind() { + case reflect.Uintptr: + case reflect.Chan: + case reflect.Func: + case reflect.Map: + case reflect.Ptr: + case reflect.UnsafePointer: + default: + upv = unsafe.Pointer(uintptr(unsafe.Pointer(&v)) + + offsetScalar) + } + } + + pv := reflect.NewAt(vt, upv) + rv = pv + for i := 0; i < indirects; i++ { + rv = rv.Elem() + } + return rv +} diff --git a/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go b/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go new file mode 100644 index 0000000..1fe3cf3 --- /dev/null +++ b/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go @@ -0,0 +1,38 @@ +// Copyright (c) 2015-2016 Dave Collins +// +// Permission to use, copy, modify, and distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +// NOTE: Due to the following build constraints, this file will only be compiled +// when the code is running on Google App Engine, compiled by GopherJS, or +// "-tags safe" is added to the go build command line. The "disableunsafe" +// tag is deprecated and thus should not be used. +// +build js appengine safe disableunsafe + +package spew + +import "reflect" + +const ( + // UnsafeDisabled is a build-time constant which specifies whether or + // not access to the unsafe package is available. + UnsafeDisabled = true +) + +// unsafeReflectValue typically converts the passed reflect.Value into a one +// that bypasses the typical safety restrictions preventing access to +// unaddressable and unexported data. However, doing this relies on access to +// the unsafe package. This is a stub version which simply returns the passed +// reflect.Value when the unsafe package is not available. +func unsafeReflectValue(v reflect.Value) reflect.Value { + return v +} diff --git a/vendor/github.com/davecgh/go-spew/spew/common.go b/vendor/github.com/davecgh/go-spew/spew/common.go new file mode 100644 index 0000000..7c519ff --- /dev/null +++ b/vendor/github.com/davecgh/go-spew/spew/common.go @@ -0,0 +1,341 @@ +/* + * Copyright (c) 2013-2016 Dave Collins + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +package spew + +import ( + "bytes" + "fmt" + "io" + "reflect" + "sort" + "strconv" +) + +// Some constants in the form of bytes to avoid string overhead. This mirrors +// the technique used in the fmt package. +var ( + panicBytes = []byte("(PANIC=") + plusBytes = []byte("+") + iBytes = []byte("i") + trueBytes = []byte("true") + falseBytes = []byte("false") + interfaceBytes = []byte("(interface {})") + commaNewlineBytes = []byte(",\n") + newlineBytes = []byte("\n") + openBraceBytes = []byte("{") + openBraceNewlineBytes = []byte("{\n") + closeBraceBytes = []byte("}") + asteriskBytes = []byte("*") + colonBytes = []byte(":") + colonSpaceBytes = []byte(": ") + openParenBytes = []byte("(") + closeParenBytes = []byte(")") + spaceBytes = []byte(" ") + pointerChainBytes = []byte("->") + nilAngleBytes = []byte("") + maxNewlineBytes = []byte("\n") + maxShortBytes = []byte("") + circularBytes = []byte("") + circularShortBytes = []byte("") + invalidAngleBytes = []byte("") + openBracketBytes = []byte("[") + closeBracketBytes = []byte("]") + percentBytes = []byte("%") + precisionBytes = []byte(".") + openAngleBytes = []byte("<") + closeAngleBytes = []byte(">") + openMapBytes = []byte("map[") + closeMapBytes = []byte("]") + lenEqualsBytes = []byte("len=") + capEqualsBytes = []byte("cap=") +) + +// hexDigits is used to map a decimal value to a hex digit. +var hexDigits = "0123456789abcdef" + +// catchPanic handles any panics that might occur during the handleMethods +// calls. +func catchPanic(w io.Writer, v reflect.Value) { + if err := recover(); err != nil { + w.Write(panicBytes) + fmt.Fprintf(w, "%v", err) + w.Write(closeParenBytes) + } +} + +// handleMethods attempts to call the Error and String methods on the underlying +// type the passed reflect.Value represents and outputes the result to Writer w. +// +// It handles panics in any called methods by catching and displaying the error +// as the formatted value. +func handleMethods(cs *ConfigState, w io.Writer, v reflect.Value) (handled bool) { + // We need an interface to check if the type implements the error or + // Stringer interface. However, the reflect package won't give us an + // interface on certain things like unexported struct fields in order + // to enforce visibility rules. We use unsafe, when it's available, + // to bypass these restrictions since this package does not mutate the + // values. + if !v.CanInterface() { + if UnsafeDisabled { + return false + } + + v = unsafeReflectValue(v) + } + + // Choose whether or not to do error and Stringer interface lookups against + // the base type or a pointer to the base type depending on settings. + // Technically calling one of these methods with a pointer receiver can + // mutate the value, however, types which choose to satisify an error or + // Stringer interface with a pointer receiver should not be mutating their + // state inside these interface methods. + if !cs.DisablePointerMethods && !UnsafeDisabled && !v.CanAddr() { + v = unsafeReflectValue(v) + } + if v.CanAddr() { + v = v.Addr() + } + + // Is it an error or Stringer? + switch iface := v.Interface().(type) { + case error: + defer catchPanic(w, v) + if cs.ContinueOnMethod { + w.Write(openParenBytes) + w.Write([]byte(iface.Error())) + w.Write(closeParenBytes) + w.Write(spaceBytes) + return false + } + + w.Write([]byte(iface.Error())) + return true + + case fmt.Stringer: + defer catchPanic(w, v) + if cs.ContinueOnMethod { + w.Write(openParenBytes) + w.Write([]byte(iface.String())) + w.Write(closeParenBytes) + w.Write(spaceBytes) + return false + } + w.Write([]byte(iface.String())) + return true + } + return false +} + +// printBool outputs a boolean value as true or false to Writer w. +func printBool(w io.Writer, val bool) { + if val { + w.Write(trueBytes) + } else { + w.Write(falseBytes) + } +} + +// printInt outputs a signed integer value to Writer w. +func printInt(w io.Writer, val int64, base int) { + w.Write([]byte(strconv.FormatInt(val, base))) +} + +// printUint outputs an unsigned integer value to Writer w. +func printUint(w io.Writer, val uint64, base int) { + w.Write([]byte(strconv.FormatUint(val, base))) +} + +// printFloat outputs a floating point value using the specified precision, +// which is expected to be 32 or 64bit, to Writer w. +func printFloat(w io.Writer, val float64, precision int) { + w.Write([]byte(strconv.FormatFloat(val, 'g', -1, precision))) +} + +// printComplex outputs a complex value using the specified float precision +// for the real and imaginary parts to Writer w. +func printComplex(w io.Writer, c complex128, floatPrecision int) { + r := real(c) + w.Write(openParenBytes) + w.Write([]byte(strconv.FormatFloat(r, 'g', -1, floatPrecision))) + i := imag(c) + if i >= 0 { + w.Write(plusBytes) + } + w.Write([]byte(strconv.FormatFloat(i, 'g', -1, floatPrecision))) + w.Write(iBytes) + w.Write(closeParenBytes) +} + +// printHexPtr outputs a uintptr formatted as hexidecimal with a leading '0x' +// prefix to Writer w. +func printHexPtr(w io.Writer, p uintptr) { + // Null pointer. + num := uint64(p) + if num == 0 { + w.Write(nilAngleBytes) + return + } + + // Max uint64 is 16 bytes in hex + 2 bytes for '0x' prefix + buf := make([]byte, 18) + + // It's simpler to construct the hex string right to left. + base := uint64(16) + i := len(buf) - 1 + for num >= base { + buf[i] = hexDigits[num%base] + num /= base + i-- + } + buf[i] = hexDigits[num] + + // Add '0x' prefix. + i-- + buf[i] = 'x' + i-- + buf[i] = '0' + + // Strip unused leading bytes. + buf = buf[i:] + w.Write(buf) +} + +// valuesSorter implements sort.Interface to allow a slice of reflect.Value +// elements to be sorted. +type valuesSorter struct { + values []reflect.Value + strings []string // either nil or same len and values + cs *ConfigState +} + +// newValuesSorter initializes a valuesSorter instance, which holds a set of +// surrogate keys on which the data should be sorted. It uses flags in +// ConfigState to decide if and how to populate those surrogate keys. +func newValuesSorter(values []reflect.Value, cs *ConfigState) sort.Interface { + vs := &valuesSorter{values: values, cs: cs} + if canSortSimply(vs.values[0].Kind()) { + return vs + } + if !cs.DisableMethods { + vs.strings = make([]string, len(values)) + for i := range vs.values { + b := bytes.Buffer{} + if !handleMethods(cs, &b, vs.values[i]) { + vs.strings = nil + break + } + vs.strings[i] = b.String() + } + } + if vs.strings == nil && cs.SpewKeys { + vs.strings = make([]string, len(values)) + for i := range vs.values { + vs.strings[i] = Sprintf("%#v", vs.values[i].Interface()) + } + } + return vs +} + +// canSortSimply tests whether a reflect.Kind is a primitive that can be sorted +// directly, or whether it should be considered for sorting by surrogate keys +// (if the ConfigState allows it). +func canSortSimply(kind reflect.Kind) bool { + // This switch parallels valueSortLess, except for the default case. + switch kind { + case reflect.Bool: + return true + case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: + return true + case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint: + return true + case reflect.Float32, reflect.Float64: + return true + case reflect.String: + return true + case reflect.Uintptr: + return true + case reflect.Array: + return true + } + return false +} + +// Len returns the number of values in the slice. It is part of the +// sort.Interface implementation. +func (s *valuesSorter) Len() int { + return len(s.values) +} + +// Swap swaps the values at the passed indices. It is part of the +// sort.Interface implementation. +func (s *valuesSorter) Swap(i, j int) { + s.values[i], s.values[j] = s.values[j], s.values[i] + if s.strings != nil { + s.strings[i], s.strings[j] = s.strings[j], s.strings[i] + } +} + +// valueSortLess returns whether the first value should sort before the second +// value. It is used by valueSorter.Less as part of the sort.Interface +// implementation. +func valueSortLess(a, b reflect.Value) bool { + switch a.Kind() { + case reflect.Bool: + return !a.Bool() && b.Bool() + case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: + return a.Int() < b.Int() + case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint: + return a.Uint() < b.Uint() + case reflect.Float32, reflect.Float64: + return a.Float() < b.Float() + case reflect.String: + return a.String() < b.String() + case reflect.Uintptr: + return a.Uint() < b.Uint() + case reflect.Array: + // Compare the contents of both arrays. + l := a.Len() + for i := 0; i < l; i++ { + av := a.Index(i) + bv := b.Index(i) + if av.Interface() == bv.Interface() { + continue + } + return valueSortLess(av, bv) + } + } + return a.String() < b.String() +} + +// Less returns whether the value at index i should sort before the +// value at index j. It is part of the sort.Interface implementation. +func (s *valuesSorter) Less(i, j int) bool { + if s.strings == nil { + return valueSortLess(s.values[i], s.values[j]) + } + return s.strings[i] < s.strings[j] +} + +// sortValues is a sort function that handles both native types and any type that +// can be converted to error or Stringer. Other inputs are sorted according to +// their Value.String() value to ensure display stability. +func sortValues(values []reflect.Value, cs *ConfigState) { + if len(values) == 0 { + return + } + sort.Sort(newValuesSorter(values, cs)) +} diff --git a/vendor/github.com/davecgh/go-spew/spew/config.go b/vendor/github.com/davecgh/go-spew/spew/config.go new file mode 100644 index 0000000..2e3d22f --- /dev/null +++ b/vendor/github.com/davecgh/go-spew/spew/config.go @@ -0,0 +1,306 @@ +/* + * Copyright (c) 2013-2016 Dave Collins + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +package spew + +import ( + "bytes" + "fmt" + "io" + "os" +) + +// ConfigState houses the configuration options used by spew to format and +// display values. There is a global instance, Config, that is used to control +// all top-level Formatter and Dump functionality. Each ConfigState instance +// provides methods equivalent to the top-level functions. +// +// The zero value for ConfigState provides no indentation. You would typically +// want to set it to a space or a tab. +// +// Alternatively, you can use NewDefaultConfig to get a ConfigState instance +// with default settings. See the documentation of NewDefaultConfig for default +// values. +type ConfigState struct { + // Indent specifies the string to use for each indentation level. The + // global config instance that all top-level functions use set this to a + // single space by default. If you would like more indentation, you might + // set this to a tab with "\t" or perhaps two spaces with " ". + Indent string + + // MaxDepth controls the maximum number of levels to descend into nested + // data structures. The default, 0, means there is no limit. + // + // NOTE: Circular data structures are properly detected, so it is not + // necessary to set this value unless you specifically want to limit deeply + // nested data structures. + MaxDepth int + + // DisableMethods specifies whether or not error and Stringer interfaces are + // invoked for types that implement them. + DisableMethods bool + + // DisablePointerMethods specifies whether or not to check for and invoke + // error and Stringer interfaces on types which only accept a pointer + // receiver when the current type is not a pointer. + // + // NOTE: This might be an unsafe action since calling one of these methods + // with a pointer receiver could technically mutate the value, however, + // in practice, types which choose to satisify an error or Stringer + // interface with a pointer receiver should not be mutating their state + // inside these interface methods. As a result, this option relies on + // access to the unsafe package, so it will not have any effect when + // running in environments without access to the unsafe package such as + // Google App Engine or with the "safe" build tag specified. + DisablePointerMethods bool + + // DisablePointerAddresses specifies whether to disable the printing of + // pointer addresses. This is useful when diffing data structures in tests. + DisablePointerAddresses bool + + // DisableCapacities specifies whether to disable the printing of capacities + // for arrays, slices, maps and channels. This is useful when diffing + // data structures in tests. + DisableCapacities bool + + // ContinueOnMethod specifies whether or not recursion should continue once + // a custom error or Stringer interface is invoked. The default, false, + // means it will print the results of invoking the custom error or Stringer + // interface and return immediately instead of continuing to recurse into + // the internals of the data type. + // + // NOTE: This flag does not have any effect if method invocation is disabled + // via the DisableMethods or DisablePointerMethods options. + ContinueOnMethod bool + + // SortKeys specifies map keys should be sorted before being printed. Use + // this to have a more deterministic, diffable output. Note that only + // native types (bool, int, uint, floats, uintptr and string) and types + // that support the error or Stringer interfaces (if methods are + // enabled) are supported, with other types sorted according to the + // reflect.Value.String() output which guarantees display stability. + SortKeys bool + + // SpewKeys specifies that, as a last resort attempt, map keys should + // be spewed to strings and sorted by those strings. This is only + // considered if SortKeys is true. + SpewKeys bool +} + +// Config is the active configuration of the top-level functions. +// The configuration can be changed by modifying the contents of spew.Config. +var Config = ConfigState{Indent: " "} + +// Errorf is a wrapper for fmt.Errorf that treats each argument as if it were +// passed with a Formatter interface returned by c.NewFormatter. It returns +// the formatted string as a value that satisfies error. See NewFormatter +// for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Errorf(format, c.NewFormatter(a), c.NewFormatter(b)) +func (c *ConfigState) Errorf(format string, a ...interface{}) (err error) { + return fmt.Errorf(format, c.convertArgs(a)...) +} + +// Fprint is a wrapper for fmt.Fprint that treats each argument as if it were +// passed with a Formatter interface returned by c.NewFormatter. It returns +// the number of bytes written and any write error encountered. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Fprint(w, c.NewFormatter(a), c.NewFormatter(b)) +func (c *ConfigState) Fprint(w io.Writer, a ...interface{}) (n int, err error) { + return fmt.Fprint(w, c.convertArgs(a)...) +} + +// Fprintf is a wrapper for fmt.Fprintf that treats each argument as if it were +// passed with a Formatter interface returned by c.NewFormatter. It returns +// the number of bytes written and any write error encountered. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Fprintf(w, format, c.NewFormatter(a), c.NewFormatter(b)) +func (c *ConfigState) Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error) { + return fmt.Fprintf(w, format, c.convertArgs(a)...) +} + +// Fprintln is a wrapper for fmt.Fprintln that treats each argument as if it +// passed with a Formatter interface returned by c.NewFormatter. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Fprintln(w, c.NewFormatter(a), c.NewFormatter(b)) +func (c *ConfigState) Fprintln(w io.Writer, a ...interface{}) (n int, err error) { + return fmt.Fprintln(w, c.convertArgs(a)...) +} + +// Print is a wrapper for fmt.Print that treats each argument as if it were +// passed with a Formatter interface returned by c.NewFormatter. It returns +// the number of bytes written and any write error encountered. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Print(c.NewFormatter(a), c.NewFormatter(b)) +func (c *ConfigState) Print(a ...interface{}) (n int, err error) { + return fmt.Print(c.convertArgs(a)...) +} + +// Printf is a wrapper for fmt.Printf that treats each argument as if it were +// passed with a Formatter interface returned by c.NewFormatter. It returns +// the number of bytes written and any write error encountered. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Printf(format, c.NewFormatter(a), c.NewFormatter(b)) +func (c *ConfigState) Printf(format string, a ...interface{}) (n int, err error) { + return fmt.Printf(format, c.convertArgs(a)...) +} + +// Println is a wrapper for fmt.Println that treats each argument as if it were +// passed with a Formatter interface returned by c.NewFormatter. It returns +// the number of bytes written and any write error encountered. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Println(c.NewFormatter(a), c.NewFormatter(b)) +func (c *ConfigState) Println(a ...interface{}) (n int, err error) { + return fmt.Println(c.convertArgs(a)...) +} + +// Sprint is a wrapper for fmt.Sprint that treats each argument as if it were +// passed with a Formatter interface returned by c.NewFormatter. It returns +// the resulting string. See NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Sprint(c.NewFormatter(a), c.NewFormatter(b)) +func (c *ConfigState) Sprint(a ...interface{}) string { + return fmt.Sprint(c.convertArgs(a)...) +} + +// Sprintf is a wrapper for fmt.Sprintf that treats each argument as if it were +// passed with a Formatter interface returned by c.NewFormatter. It returns +// the resulting string. See NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Sprintf(format, c.NewFormatter(a), c.NewFormatter(b)) +func (c *ConfigState) Sprintf(format string, a ...interface{}) string { + return fmt.Sprintf(format, c.convertArgs(a)...) +} + +// Sprintln is a wrapper for fmt.Sprintln that treats each argument as if it +// were passed with a Formatter interface returned by c.NewFormatter. It +// returns the resulting string. See NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Sprintln(c.NewFormatter(a), c.NewFormatter(b)) +func (c *ConfigState) Sprintln(a ...interface{}) string { + return fmt.Sprintln(c.convertArgs(a)...) +} + +/* +NewFormatter returns a custom formatter that satisfies the fmt.Formatter +interface. As a result, it integrates cleanly with standard fmt package +printing functions. The formatter is useful for inline printing of smaller data +types similar to the standard %v format specifier. + +The custom formatter only responds to the %v (most compact), %+v (adds pointer +addresses), %#v (adds types), and %#+v (adds types and pointer addresses) verb +combinations. Any other verbs such as %x and %q will be sent to the the +standard fmt package for formatting. In addition, the custom formatter ignores +the width and precision arguments (however they will still work on the format +specifiers not handled by the custom formatter). + +Typically this function shouldn't be called directly. It is much easier to make +use of the custom formatter by calling one of the convenience functions such as +c.Printf, c.Println, or c.Printf. +*/ +func (c *ConfigState) NewFormatter(v interface{}) fmt.Formatter { + return newFormatter(c, v) +} + +// Fdump formats and displays the passed arguments to io.Writer w. It formats +// exactly the same as Dump. +func (c *ConfigState) Fdump(w io.Writer, a ...interface{}) { + fdump(c, w, a...) +} + +/* +Dump displays the passed parameters to standard out with newlines, customizable +indentation, and additional debug information such as complete types and all +pointer addresses used to indirect to the final value. It provides the +following features over the built-in printing facilities provided by the fmt +package: + + * Pointers are dereferenced and followed + * Circular data structures are detected and handled properly + * Custom Stringer/error interfaces are optionally invoked, including + on unexported types + * Custom types which only implement the Stringer/error interfaces via + a pointer receiver are optionally invoked when passing non-pointer + variables + * Byte arrays and slices are dumped like the hexdump -C command which + includes offsets, byte values in hex, and ASCII output + +The configuration options are controlled by modifying the public members +of c. See ConfigState for options documentation. + +See Fdump if you would prefer dumping to an arbitrary io.Writer or Sdump to +get the formatted result as a string. +*/ +func (c *ConfigState) Dump(a ...interface{}) { + fdump(c, os.Stdout, a...) +} + +// Sdump returns a string with the passed arguments formatted exactly the same +// as Dump. +func (c *ConfigState) Sdump(a ...interface{}) string { + var buf bytes.Buffer + fdump(c, &buf, a...) + return buf.String() +} + +// convertArgs accepts a slice of arguments and returns a slice of the same +// length with each argument converted to a spew Formatter interface using +// the ConfigState associated with s. +func (c *ConfigState) convertArgs(args []interface{}) (formatters []interface{}) { + formatters = make([]interface{}, len(args)) + for index, arg := range args { + formatters[index] = newFormatter(c, arg) + } + return formatters +} + +// NewDefaultConfig returns a ConfigState with the following default settings. +// +// Indent: " " +// MaxDepth: 0 +// DisableMethods: false +// DisablePointerMethods: false +// ContinueOnMethod: false +// SortKeys: false +func NewDefaultConfig() *ConfigState { + return &ConfigState{Indent: " "} +} diff --git a/vendor/github.com/davecgh/go-spew/spew/doc.go b/vendor/github.com/davecgh/go-spew/spew/doc.go new file mode 100644 index 0000000..aacaac6 --- /dev/null +++ b/vendor/github.com/davecgh/go-spew/spew/doc.go @@ -0,0 +1,211 @@ +/* + * Copyright (c) 2013-2016 Dave Collins + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* +Package spew implements a deep pretty printer for Go data structures to aid in +debugging. + +A quick overview of the additional features spew provides over the built-in +printing facilities for Go data types are as follows: + + * Pointers are dereferenced and followed + * Circular data structures are detected and handled properly + * Custom Stringer/error interfaces are optionally invoked, including + on unexported types + * Custom types which only implement the Stringer/error interfaces via + a pointer receiver are optionally invoked when passing non-pointer + variables + * Byte arrays and slices are dumped like the hexdump -C command which + includes offsets, byte values in hex, and ASCII output (only when using + Dump style) + +There are two different approaches spew allows for dumping Go data structures: + + * Dump style which prints with newlines, customizable indentation, + and additional debug information such as types and all pointer addresses + used to indirect to the final value + * A custom Formatter interface that integrates cleanly with the standard fmt + package and replaces %v, %+v, %#v, and %#+v to provide inline printing + similar to the default %v while providing the additional functionality + outlined above and passing unsupported format verbs such as %x and %q + along to fmt + +Quick Start + +This section demonstrates how to quickly get started with spew. See the +sections below for further details on formatting and configuration options. + +To dump a variable with full newlines, indentation, type, and pointer +information use Dump, Fdump, or Sdump: + spew.Dump(myVar1, myVar2, ...) + spew.Fdump(someWriter, myVar1, myVar2, ...) + str := spew.Sdump(myVar1, myVar2, ...) + +Alternatively, if you would prefer to use format strings with a compacted inline +printing style, use the convenience wrappers Printf, Fprintf, etc with +%v (most compact), %+v (adds pointer addresses), %#v (adds types), or +%#+v (adds types and pointer addresses): + spew.Printf("myVar1: %v -- myVar2: %+v", myVar1, myVar2) + spew.Printf("myVar3: %#v -- myVar4: %#+v", myVar3, myVar4) + spew.Fprintf(someWriter, "myVar1: %v -- myVar2: %+v", myVar1, myVar2) + spew.Fprintf(someWriter, "myVar3: %#v -- myVar4: %#+v", myVar3, myVar4) + +Configuration Options + +Configuration of spew is handled by fields in the ConfigState type. For +convenience, all of the top-level functions use a global state available +via the spew.Config global. + +It is also possible to create a ConfigState instance that provides methods +equivalent to the top-level functions. This allows concurrent configuration +options. See the ConfigState documentation for more details. + +The following configuration options are available: + * Indent + String to use for each indentation level for Dump functions. + It is a single space by default. A popular alternative is "\t". + + * MaxDepth + Maximum number of levels to descend into nested data structures. + There is no limit by default. + + * DisableMethods + Disables invocation of error and Stringer interface methods. + Method invocation is enabled by default. + + * DisablePointerMethods + Disables invocation of error and Stringer interface methods on types + which only accept pointer receivers from non-pointer variables. + Pointer method invocation is enabled by default. + + * DisablePointerAddresses + DisablePointerAddresses specifies whether to disable the printing of + pointer addresses. This is useful when diffing data structures in tests. + + * DisableCapacities + DisableCapacities specifies whether to disable the printing of + capacities for arrays, slices, maps and channels. This is useful when + diffing data structures in tests. + + * ContinueOnMethod + Enables recursion into types after invoking error and Stringer interface + methods. Recursion after method invocation is disabled by default. + + * SortKeys + Specifies map keys should be sorted before being printed. Use + this to have a more deterministic, diffable output. Note that + only native types (bool, int, uint, floats, uintptr and string) + and types which implement error or Stringer interfaces are + supported with other types sorted according to the + reflect.Value.String() output which guarantees display + stability. Natural map order is used by default. + + * SpewKeys + Specifies that, as a last resort attempt, map keys should be + spewed to strings and sorted by those strings. This is only + considered if SortKeys is true. + +Dump Usage + +Simply call spew.Dump with a list of variables you want to dump: + + spew.Dump(myVar1, myVar2, ...) + +You may also call spew.Fdump if you would prefer to output to an arbitrary +io.Writer. For example, to dump to standard error: + + spew.Fdump(os.Stderr, myVar1, myVar2, ...) + +A third option is to call spew.Sdump to get the formatted output as a string: + + str := spew.Sdump(myVar1, myVar2, ...) + +Sample Dump Output + +See the Dump example for details on the setup of the types and variables being +shown here. + + (main.Foo) { + unexportedField: (*main.Bar)(0xf84002e210)({ + flag: (main.Flag) flagTwo, + data: (uintptr) + }), + ExportedField: (map[interface {}]interface {}) (len=1) { + (string) (len=3) "one": (bool) true + } + } + +Byte (and uint8) arrays and slices are displayed uniquely like the hexdump -C +command as shown. + ([]uint8) (len=32 cap=32) { + 00000000 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 |............... | + 00000010 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 |!"#$%&'()*+,-./0| + 00000020 31 32 |12| + } + +Custom Formatter + +Spew provides a custom formatter that implements the fmt.Formatter interface +so that it integrates cleanly with standard fmt package printing functions. The +formatter is useful for inline printing of smaller data types similar to the +standard %v format specifier. + +The custom formatter only responds to the %v (most compact), %+v (adds pointer +addresses), %#v (adds types), or %#+v (adds types and pointer addresses) verb +combinations. Any other verbs such as %x and %q will be sent to the the +standard fmt package for formatting. In addition, the custom formatter ignores +the width and precision arguments (however they will still work on the format +specifiers not handled by the custom formatter). + +Custom Formatter Usage + +The simplest way to make use of the spew custom formatter is to call one of the +convenience functions such as spew.Printf, spew.Println, or spew.Printf. The +functions have syntax you are most likely already familiar with: + + spew.Printf("myVar1: %v -- myVar2: %+v", myVar1, myVar2) + spew.Printf("myVar3: %#v -- myVar4: %#+v", myVar3, myVar4) + spew.Println(myVar, myVar2) + spew.Fprintf(os.Stderr, "myVar1: %v -- myVar2: %+v", myVar1, myVar2) + spew.Fprintf(os.Stderr, "myVar3: %#v -- myVar4: %#+v", myVar3, myVar4) + +See the Index for the full list convenience functions. + +Sample Formatter Output + +Double pointer to a uint8: + %v: <**>5 + %+v: <**>(0xf8400420d0->0xf8400420c8)5 + %#v: (**uint8)5 + %#+v: (**uint8)(0xf8400420d0->0xf8400420c8)5 + +Pointer to circular struct with a uint8 field and a pointer to itself: + %v: <*>{1 <*>} + %+v: <*>(0xf84003e260){ui8:1 c:<*>(0xf84003e260)} + %#v: (*main.circular){ui8:(uint8)1 c:(*main.circular)} + %#+v: (*main.circular)(0xf84003e260){ui8:(uint8)1 c:(*main.circular)(0xf84003e260)} + +See the Printf example for details on the setup of variables being shown +here. + +Errors + +Since it is possible for custom Stringer/error interfaces to panic, spew +detects them and handles them internally by printing the panic information +inline with the output. Since spew is intended to provide deep pretty printing +capabilities on structures, it intentionally does not return any errors. +*/ +package spew diff --git a/vendor/github.com/davecgh/go-spew/spew/dump.go b/vendor/github.com/davecgh/go-spew/spew/dump.go new file mode 100644 index 0000000..df1d582 --- /dev/null +++ b/vendor/github.com/davecgh/go-spew/spew/dump.go @@ -0,0 +1,509 @@ +/* + * Copyright (c) 2013-2016 Dave Collins + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +package spew + +import ( + "bytes" + "encoding/hex" + "fmt" + "io" + "os" + "reflect" + "regexp" + "strconv" + "strings" +) + +var ( + // uint8Type is a reflect.Type representing a uint8. It is used to + // convert cgo types to uint8 slices for hexdumping. + uint8Type = reflect.TypeOf(uint8(0)) + + // cCharRE is a regular expression that matches a cgo char. + // It is used to detect character arrays to hexdump them. + cCharRE = regexp.MustCompile("^.*\\._Ctype_char$") + + // cUnsignedCharRE is a regular expression that matches a cgo unsigned + // char. It is used to detect unsigned character arrays to hexdump + // them. + cUnsignedCharRE = regexp.MustCompile("^.*\\._Ctype_unsignedchar$") + + // cUint8tCharRE is a regular expression that matches a cgo uint8_t. + // It is used to detect uint8_t arrays to hexdump them. + cUint8tCharRE = regexp.MustCompile("^.*\\._Ctype_uint8_t$") +) + +// dumpState contains information about the state of a dump operation. +type dumpState struct { + w io.Writer + depth int + pointers map[uintptr]int + ignoreNextType bool + ignoreNextIndent bool + cs *ConfigState +} + +// indent performs indentation according to the depth level and cs.Indent +// option. +func (d *dumpState) indent() { + if d.ignoreNextIndent { + d.ignoreNextIndent = false + return + } + d.w.Write(bytes.Repeat([]byte(d.cs.Indent), d.depth)) +} + +// unpackValue returns values inside of non-nil interfaces when possible. +// This is useful for data types like structs, arrays, slices, and maps which +// can contain varying types packed inside an interface. +func (d *dumpState) unpackValue(v reflect.Value) reflect.Value { + if v.Kind() == reflect.Interface && !v.IsNil() { + v = v.Elem() + } + return v +} + +// dumpPtr handles formatting of pointers by indirecting them as necessary. +func (d *dumpState) dumpPtr(v reflect.Value) { + // Remove pointers at or below the current depth from map used to detect + // circular refs. + for k, depth := range d.pointers { + if depth >= d.depth { + delete(d.pointers, k) + } + } + + // Keep list of all dereferenced pointers to show later. + pointerChain := make([]uintptr, 0) + + // Figure out how many levels of indirection there are by dereferencing + // pointers and unpacking interfaces down the chain while detecting circular + // references. + nilFound := false + cycleFound := false + indirects := 0 + ve := v + for ve.Kind() == reflect.Ptr { + if ve.IsNil() { + nilFound = true + break + } + indirects++ + addr := ve.Pointer() + pointerChain = append(pointerChain, addr) + if pd, ok := d.pointers[addr]; ok && pd < d.depth { + cycleFound = true + indirects-- + break + } + d.pointers[addr] = d.depth + + ve = ve.Elem() + if ve.Kind() == reflect.Interface { + if ve.IsNil() { + nilFound = true + break + } + ve = ve.Elem() + } + } + + // Display type information. + d.w.Write(openParenBytes) + d.w.Write(bytes.Repeat(asteriskBytes, indirects)) + d.w.Write([]byte(ve.Type().String())) + d.w.Write(closeParenBytes) + + // Display pointer information. + if !d.cs.DisablePointerAddresses && len(pointerChain) > 0 { + d.w.Write(openParenBytes) + for i, addr := range pointerChain { + if i > 0 { + d.w.Write(pointerChainBytes) + } + printHexPtr(d.w, addr) + } + d.w.Write(closeParenBytes) + } + + // Display dereferenced value. + d.w.Write(openParenBytes) + switch { + case nilFound == true: + d.w.Write(nilAngleBytes) + + case cycleFound == true: + d.w.Write(circularBytes) + + default: + d.ignoreNextType = true + d.dump(ve) + } + d.w.Write(closeParenBytes) +} + +// dumpSlice handles formatting of arrays and slices. Byte (uint8 under +// reflection) arrays and slices are dumped in hexdump -C fashion. +func (d *dumpState) dumpSlice(v reflect.Value) { + // Determine whether this type should be hex dumped or not. Also, + // for types which should be hexdumped, try to use the underlying data + // first, then fall back to trying to convert them to a uint8 slice. + var buf []uint8 + doConvert := false + doHexDump := false + numEntries := v.Len() + if numEntries > 0 { + vt := v.Index(0).Type() + vts := vt.String() + switch { + // C types that need to be converted. + case cCharRE.MatchString(vts): + fallthrough + case cUnsignedCharRE.MatchString(vts): + fallthrough + case cUint8tCharRE.MatchString(vts): + doConvert = true + + // Try to use existing uint8 slices and fall back to converting + // and copying if that fails. + case vt.Kind() == reflect.Uint8: + // We need an addressable interface to convert the type + // to a byte slice. However, the reflect package won't + // give us an interface on certain things like + // unexported struct fields in order to enforce + // visibility rules. We use unsafe, when available, to + // bypass these restrictions since this package does not + // mutate the values. + vs := v + if !vs.CanInterface() || !vs.CanAddr() { + vs = unsafeReflectValue(vs) + } + if !UnsafeDisabled { + vs = vs.Slice(0, numEntries) + + // Use the existing uint8 slice if it can be + // type asserted. + iface := vs.Interface() + if slice, ok := iface.([]uint8); ok { + buf = slice + doHexDump = true + break + } + } + + // The underlying data needs to be converted if it can't + // be type asserted to a uint8 slice. + doConvert = true + } + + // Copy and convert the underlying type if needed. + if doConvert && vt.ConvertibleTo(uint8Type) { + // Convert and copy each element into a uint8 byte + // slice. + buf = make([]uint8, numEntries) + for i := 0; i < numEntries; i++ { + vv := v.Index(i) + buf[i] = uint8(vv.Convert(uint8Type).Uint()) + } + doHexDump = true + } + } + + // Hexdump the entire slice as needed. + if doHexDump { + indent := strings.Repeat(d.cs.Indent, d.depth) + str := indent + hex.Dump(buf) + str = strings.Replace(str, "\n", "\n"+indent, -1) + str = strings.TrimRight(str, d.cs.Indent) + d.w.Write([]byte(str)) + return + } + + // Recursively call dump for each item. + for i := 0; i < numEntries; i++ { + d.dump(d.unpackValue(v.Index(i))) + if i < (numEntries - 1) { + d.w.Write(commaNewlineBytes) + } else { + d.w.Write(newlineBytes) + } + } +} + +// dump is the main workhorse for dumping a value. It uses the passed reflect +// value to figure out what kind of object we are dealing with and formats it +// appropriately. It is a recursive function, however circular data structures +// are detected and handled properly. +func (d *dumpState) dump(v reflect.Value) { + // Handle invalid reflect values immediately. + kind := v.Kind() + if kind == reflect.Invalid { + d.w.Write(invalidAngleBytes) + return + } + + // Handle pointers specially. + if kind == reflect.Ptr { + d.indent() + d.dumpPtr(v) + return + } + + // Print type information unless already handled elsewhere. + if !d.ignoreNextType { + d.indent() + d.w.Write(openParenBytes) + d.w.Write([]byte(v.Type().String())) + d.w.Write(closeParenBytes) + d.w.Write(spaceBytes) + } + d.ignoreNextType = false + + // Display length and capacity if the built-in len and cap functions + // work with the value's kind and the len/cap itself is non-zero. + valueLen, valueCap := 0, 0 + switch v.Kind() { + case reflect.Array, reflect.Slice, reflect.Chan: + valueLen, valueCap = v.Len(), v.Cap() + case reflect.Map, reflect.String: + valueLen = v.Len() + } + if valueLen != 0 || !d.cs.DisableCapacities && valueCap != 0 { + d.w.Write(openParenBytes) + if valueLen != 0 { + d.w.Write(lenEqualsBytes) + printInt(d.w, int64(valueLen), 10) + } + if !d.cs.DisableCapacities && valueCap != 0 { + if valueLen != 0 { + d.w.Write(spaceBytes) + } + d.w.Write(capEqualsBytes) + printInt(d.w, int64(valueCap), 10) + } + d.w.Write(closeParenBytes) + d.w.Write(spaceBytes) + } + + // Call Stringer/error interfaces if they exist and the handle methods flag + // is enabled + if !d.cs.DisableMethods { + if (kind != reflect.Invalid) && (kind != reflect.Interface) { + if handled := handleMethods(d.cs, d.w, v); handled { + return + } + } + } + + switch kind { + case reflect.Invalid: + // Do nothing. We should never get here since invalid has already + // been handled above. + + case reflect.Bool: + printBool(d.w, v.Bool()) + + case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: + printInt(d.w, v.Int(), 10) + + case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint: + printUint(d.w, v.Uint(), 10) + + case reflect.Float32: + printFloat(d.w, v.Float(), 32) + + case reflect.Float64: + printFloat(d.w, v.Float(), 64) + + case reflect.Complex64: + printComplex(d.w, v.Complex(), 32) + + case reflect.Complex128: + printComplex(d.w, v.Complex(), 64) + + case reflect.Slice: + if v.IsNil() { + d.w.Write(nilAngleBytes) + break + } + fallthrough + + case reflect.Array: + d.w.Write(openBraceNewlineBytes) + d.depth++ + if (d.cs.MaxDepth != 0) && (d.depth > d.cs.MaxDepth) { + d.indent() + d.w.Write(maxNewlineBytes) + } else { + d.dumpSlice(v) + } + d.depth-- + d.indent() + d.w.Write(closeBraceBytes) + + case reflect.String: + d.w.Write([]byte(strconv.Quote(v.String()))) + + case reflect.Interface: + // The only time we should get here is for nil interfaces due to + // unpackValue calls. + if v.IsNil() { + d.w.Write(nilAngleBytes) + } + + case reflect.Ptr: + // Do nothing. We should never get here since pointers have already + // been handled above. + + case reflect.Map: + // nil maps should be indicated as different than empty maps + if v.IsNil() { + d.w.Write(nilAngleBytes) + break + } + + d.w.Write(openBraceNewlineBytes) + d.depth++ + if (d.cs.MaxDepth != 0) && (d.depth > d.cs.MaxDepth) { + d.indent() + d.w.Write(maxNewlineBytes) + } else { + numEntries := v.Len() + keys := v.MapKeys() + if d.cs.SortKeys { + sortValues(keys, d.cs) + } + for i, key := range keys { + d.dump(d.unpackValue(key)) + d.w.Write(colonSpaceBytes) + d.ignoreNextIndent = true + d.dump(d.unpackValue(v.MapIndex(key))) + if i < (numEntries - 1) { + d.w.Write(commaNewlineBytes) + } else { + d.w.Write(newlineBytes) + } + } + } + d.depth-- + d.indent() + d.w.Write(closeBraceBytes) + + case reflect.Struct: + d.w.Write(openBraceNewlineBytes) + d.depth++ + if (d.cs.MaxDepth != 0) && (d.depth > d.cs.MaxDepth) { + d.indent() + d.w.Write(maxNewlineBytes) + } else { + vt := v.Type() + numFields := v.NumField() + for i := 0; i < numFields; i++ { + d.indent() + vtf := vt.Field(i) + d.w.Write([]byte(vtf.Name)) + d.w.Write(colonSpaceBytes) + d.ignoreNextIndent = true + d.dump(d.unpackValue(v.Field(i))) + if i < (numFields - 1) { + d.w.Write(commaNewlineBytes) + } else { + d.w.Write(newlineBytes) + } + } + } + d.depth-- + d.indent() + d.w.Write(closeBraceBytes) + + case reflect.Uintptr: + printHexPtr(d.w, uintptr(v.Uint())) + + case reflect.UnsafePointer, reflect.Chan, reflect.Func: + printHexPtr(d.w, v.Pointer()) + + // There were not any other types at the time this code was written, but + // fall back to letting the default fmt package handle it in case any new + // types are added. + default: + if v.CanInterface() { + fmt.Fprintf(d.w, "%v", v.Interface()) + } else { + fmt.Fprintf(d.w, "%v", v.String()) + } + } +} + +// fdump is a helper function to consolidate the logic from the various public +// methods which take varying writers and config states. +func fdump(cs *ConfigState, w io.Writer, a ...interface{}) { + for _, arg := range a { + if arg == nil { + w.Write(interfaceBytes) + w.Write(spaceBytes) + w.Write(nilAngleBytes) + w.Write(newlineBytes) + continue + } + + d := dumpState{w: w, cs: cs} + d.pointers = make(map[uintptr]int) + d.dump(reflect.ValueOf(arg)) + d.w.Write(newlineBytes) + } +} + +// Fdump formats and displays the passed arguments to io.Writer w. It formats +// exactly the same as Dump. +func Fdump(w io.Writer, a ...interface{}) { + fdump(&Config, w, a...) +} + +// Sdump returns a string with the passed arguments formatted exactly the same +// as Dump. +func Sdump(a ...interface{}) string { + var buf bytes.Buffer + fdump(&Config, &buf, a...) + return buf.String() +} + +/* +Dump displays the passed parameters to standard out with newlines, customizable +indentation, and additional debug information such as complete types and all +pointer addresses used to indirect to the final value. It provides the +following features over the built-in printing facilities provided by the fmt +package: + + * Pointers are dereferenced and followed + * Circular data structures are detected and handled properly + * Custom Stringer/error interfaces are optionally invoked, including + on unexported types + * Custom types which only implement the Stringer/error interfaces via + a pointer receiver are optionally invoked when passing non-pointer + variables + * Byte arrays and slices are dumped like the hexdump -C command which + includes offsets, byte values in hex, and ASCII output + +The configuration options are controlled by an exported package global, +spew.Config. See ConfigState for options documentation. + +See Fdump if you would prefer dumping to an arbitrary io.Writer or Sdump to +get the formatted result as a string. +*/ +func Dump(a ...interface{}) { + fdump(&Config, os.Stdout, a...) +} diff --git a/vendor/github.com/davecgh/go-spew/spew/format.go b/vendor/github.com/davecgh/go-spew/spew/format.go new file mode 100644 index 0000000..c49875b --- /dev/null +++ b/vendor/github.com/davecgh/go-spew/spew/format.go @@ -0,0 +1,419 @@ +/* + * Copyright (c) 2013-2016 Dave Collins + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +package spew + +import ( + "bytes" + "fmt" + "reflect" + "strconv" + "strings" +) + +// supportedFlags is a list of all the character flags supported by fmt package. +const supportedFlags = "0-+# " + +// formatState implements the fmt.Formatter interface and contains information +// about the state of a formatting operation. The NewFormatter function can +// be used to get a new Formatter which can be used directly as arguments +// in standard fmt package printing calls. +type formatState struct { + value interface{} + fs fmt.State + depth int + pointers map[uintptr]int + ignoreNextType bool + cs *ConfigState +} + +// buildDefaultFormat recreates the original format string without precision +// and width information to pass in to fmt.Sprintf in the case of an +// unrecognized type. Unless new types are added to the language, this +// function won't ever be called. +func (f *formatState) buildDefaultFormat() (format string) { + buf := bytes.NewBuffer(percentBytes) + + for _, flag := range supportedFlags { + if f.fs.Flag(int(flag)) { + buf.WriteRune(flag) + } + } + + buf.WriteRune('v') + + format = buf.String() + return format +} + +// constructOrigFormat recreates the original format string including precision +// and width information to pass along to the standard fmt package. This allows +// automatic deferral of all format strings this package doesn't support. +func (f *formatState) constructOrigFormat(verb rune) (format string) { + buf := bytes.NewBuffer(percentBytes) + + for _, flag := range supportedFlags { + if f.fs.Flag(int(flag)) { + buf.WriteRune(flag) + } + } + + if width, ok := f.fs.Width(); ok { + buf.WriteString(strconv.Itoa(width)) + } + + if precision, ok := f.fs.Precision(); ok { + buf.Write(precisionBytes) + buf.WriteString(strconv.Itoa(precision)) + } + + buf.WriteRune(verb) + + format = buf.String() + return format +} + +// unpackValue returns values inside of non-nil interfaces when possible and +// ensures that types for values which have been unpacked from an interface +// are displayed when the show types flag is also set. +// This is useful for data types like structs, arrays, slices, and maps which +// can contain varying types packed inside an interface. +func (f *formatState) unpackValue(v reflect.Value) reflect.Value { + if v.Kind() == reflect.Interface { + f.ignoreNextType = false + if !v.IsNil() { + v = v.Elem() + } + } + return v +} + +// formatPtr handles formatting of pointers by indirecting them as necessary. +func (f *formatState) formatPtr(v reflect.Value) { + // Display nil if top level pointer is nil. + showTypes := f.fs.Flag('#') + if v.IsNil() && (!showTypes || f.ignoreNextType) { + f.fs.Write(nilAngleBytes) + return + } + + // Remove pointers at or below the current depth from map used to detect + // circular refs. + for k, depth := range f.pointers { + if depth >= f.depth { + delete(f.pointers, k) + } + } + + // Keep list of all dereferenced pointers to possibly show later. + pointerChain := make([]uintptr, 0) + + // Figure out how many levels of indirection there are by derferencing + // pointers and unpacking interfaces down the chain while detecting circular + // references. + nilFound := false + cycleFound := false + indirects := 0 + ve := v + for ve.Kind() == reflect.Ptr { + if ve.IsNil() { + nilFound = true + break + } + indirects++ + addr := ve.Pointer() + pointerChain = append(pointerChain, addr) + if pd, ok := f.pointers[addr]; ok && pd < f.depth { + cycleFound = true + indirects-- + break + } + f.pointers[addr] = f.depth + + ve = ve.Elem() + if ve.Kind() == reflect.Interface { + if ve.IsNil() { + nilFound = true + break + } + ve = ve.Elem() + } + } + + // Display type or indirection level depending on flags. + if showTypes && !f.ignoreNextType { + f.fs.Write(openParenBytes) + f.fs.Write(bytes.Repeat(asteriskBytes, indirects)) + f.fs.Write([]byte(ve.Type().String())) + f.fs.Write(closeParenBytes) + } else { + if nilFound || cycleFound { + indirects += strings.Count(ve.Type().String(), "*") + } + f.fs.Write(openAngleBytes) + f.fs.Write([]byte(strings.Repeat("*", indirects))) + f.fs.Write(closeAngleBytes) + } + + // Display pointer information depending on flags. + if f.fs.Flag('+') && (len(pointerChain) > 0) { + f.fs.Write(openParenBytes) + for i, addr := range pointerChain { + if i > 0 { + f.fs.Write(pointerChainBytes) + } + printHexPtr(f.fs, addr) + } + f.fs.Write(closeParenBytes) + } + + // Display dereferenced value. + switch { + case nilFound == true: + f.fs.Write(nilAngleBytes) + + case cycleFound == true: + f.fs.Write(circularShortBytes) + + default: + f.ignoreNextType = true + f.format(ve) + } +} + +// format is the main workhorse for providing the Formatter interface. It +// uses the passed reflect value to figure out what kind of object we are +// dealing with and formats it appropriately. It is a recursive function, +// however circular data structures are detected and handled properly. +func (f *formatState) format(v reflect.Value) { + // Handle invalid reflect values immediately. + kind := v.Kind() + if kind == reflect.Invalid { + f.fs.Write(invalidAngleBytes) + return + } + + // Handle pointers specially. + if kind == reflect.Ptr { + f.formatPtr(v) + return + } + + // Print type information unless already handled elsewhere. + if !f.ignoreNextType && f.fs.Flag('#') { + f.fs.Write(openParenBytes) + f.fs.Write([]byte(v.Type().String())) + f.fs.Write(closeParenBytes) + } + f.ignoreNextType = false + + // Call Stringer/error interfaces if they exist and the handle methods + // flag is enabled. + if !f.cs.DisableMethods { + if (kind != reflect.Invalid) && (kind != reflect.Interface) { + if handled := handleMethods(f.cs, f.fs, v); handled { + return + } + } + } + + switch kind { + case reflect.Invalid: + // Do nothing. We should never get here since invalid has already + // been handled above. + + case reflect.Bool: + printBool(f.fs, v.Bool()) + + case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: + printInt(f.fs, v.Int(), 10) + + case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint: + printUint(f.fs, v.Uint(), 10) + + case reflect.Float32: + printFloat(f.fs, v.Float(), 32) + + case reflect.Float64: + printFloat(f.fs, v.Float(), 64) + + case reflect.Complex64: + printComplex(f.fs, v.Complex(), 32) + + case reflect.Complex128: + printComplex(f.fs, v.Complex(), 64) + + case reflect.Slice: + if v.IsNil() { + f.fs.Write(nilAngleBytes) + break + } + fallthrough + + case reflect.Array: + f.fs.Write(openBracketBytes) + f.depth++ + if (f.cs.MaxDepth != 0) && (f.depth > f.cs.MaxDepth) { + f.fs.Write(maxShortBytes) + } else { + numEntries := v.Len() + for i := 0; i < numEntries; i++ { + if i > 0 { + f.fs.Write(spaceBytes) + } + f.ignoreNextType = true + f.format(f.unpackValue(v.Index(i))) + } + } + f.depth-- + f.fs.Write(closeBracketBytes) + + case reflect.String: + f.fs.Write([]byte(v.String())) + + case reflect.Interface: + // The only time we should get here is for nil interfaces due to + // unpackValue calls. + if v.IsNil() { + f.fs.Write(nilAngleBytes) + } + + case reflect.Ptr: + // Do nothing. We should never get here since pointers have already + // been handled above. + + case reflect.Map: + // nil maps should be indicated as different than empty maps + if v.IsNil() { + f.fs.Write(nilAngleBytes) + break + } + + f.fs.Write(openMapBytes) + f.depth++ + if (f.cs.MaxDepth != 0) && (f.depth > f.cs.MaxDepth) { + f.fs.Write(maxShortBytes) + } else { + keys := v.MapKeys() + if f.cs.SortKeys { + sortValues(keys, f.cs) + } + for i, key := range keys { + if i > 0 { + f.fs.Write(spaceBytes) + } + f.ignoreNextType = true + f.format(f.unpackValue(key)) + f.fs.Write(colonBytes) + f.ignoreNextType = true + f.format(f.unpackValue(v.MapIndex(key))) + } + } + f.depth-- + f.fs.Write(closeMapBytes) + + case reflect.Struct: + numFields := v.NumField() + f.fs.Write(openBraceBytes) + f.depth++ + if (f.cs.MaxDepth != 0) && (f.depth > f.cs.MaxDepth) { + f.fs.Write(maxShortBytes) + } else { + vt := v.Type() + for i := 0; i < numFields; i++ { + if i > 0 { + f.fs.Write(spaceBytes) + } + vtf := vt.Field(i) + if f.fs.Flag('+') || f.fs.Flag('#') { + f.fs.Write([]byte(vtf.Name)) + f.fs.Write(colonBytes) + } + f.format(f.unpackValue(v.Field(i))) + } + } + f.depth-- + f.fs.Write(closeBraceBytes) + + case reflect.Uintptr: + printHexPtr(f.fs, uintptr(v.Uint())) + + case reflect.UnsafePointer, reflect.Chan, reflect.Func: + printHexPtr(f.fs, v.Pointer()) + + // There were not any other types at the time this code was written, but + // fall back to letting the default fmt package handle it if any get added. + default: + format := f.buildDefaultFormat() + if v.CanInterface() { + fmt.Fprintf(f.fs, format, v.Interface()) + } else { + fmt.Fprintf(f.fs, format, v.String()) + } + } +} + +// Format satisfies the fmt.Formatter interface. See NewFormatter for usage +// details. +func (f *formatState) Format(fs fmt.State, verb rune) { + f.fs = fs + + // Use standard formatting for verbs that are not v. + if verb != 'v' { + format := f.constructOrigFormat(verb) + fmt.Fprintf(fs, format, f.value) + return + } + + if f.value == nil { + if fs.Flag('#') { + fs.Write(interfaceBytes) + } + fs.Write(nilAngleBytes) + return + } + + f.format(reflect.ValueOf(f.value)) +} + +// newFormatter is a helper function to consolidate the logic from the various +// public methods which take varying config states. +func newFormatter(cs *ConfigState, v interface{}) fmt.Formatter { + fs := &formatState{value: v, cs: cs} + fs.pointers = make(map[uintptr]int) + return fs +} + +/* +NewFormatter returns a custom formatter that satisfies the fmt.Formatter +interface. As a result, it integrates cleanly with standard fmt package +printing functions. The formatter is useful for inline printing of smaller data +types similar to the standard %v format specifier. + +The custom formatter only responds to the %v (most compact), %+v (adds pointer +addresses), %#v (adds types), or %#+v (adds types and pointer addresses) verb +combinations. Any other verbs such as %x and %q will be sent to the the +standard fmt package for formatting. In addition, the custom formatter ignores +the width and precision arguments (however they will still work on the format +specifiers not handled by the custom formatter). + +Typically this function shouldn't be called directly. It is much easier to make +use of the custom formatter by calling one of the convenience functions such as +Printf, Println, or Fprintf. +*/ +func NewFormatter(v interface{}) fmt.Formatter { + return newFormatter(&Config, v) +} diff --git a/vendor/github.com/davecgh/go-spew/spew/spew.go b/vendor/github.com/davecgh/go-spew/spew/spew.go new file mode 100644 index 0000000..32c0e33 --- /dev/null +++ b/vendor/github.com/davecgh/go-spew/spew/spew.go @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2013-2016 Dave Collins + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +package spew + +import ( + "fmt" + "io" +) + +// Errorf is a wrapper for fmt.Errorf that treats each argument as if it were +// passed with a default Formatter interface returned by NewFormatter. It +// returns the formatted string as a value that satisfies error. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Errorf(format, spew.NewFormatter(a), spew.NewFormatter(b)) +func Errorf(format string, a ...interface{}) (err error) { + return fmt.Errorf(format, convertArgs(a)...) +} + +// Fprint is a wrapper for fmt.Fprint that treats each argument as if it were +// passed with a default Formatter interface returned by NewFormatter. It +// returns the number of bytes written and any write error encountered. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Fprint(w, spew.NewFormatter(a), spew.NewFormatter(b)) +func Fprint(w io.Writer, a ...interface{}) (n int, err error) { + return fmt.Fprint(w, convertArgs(a)...) +} + +// Fprintf is a wrapper for fmt.Fprintf that treats each argument as if it were +// passed with a default Formatter interface returned by NewFormatter. It +// returns the number of bytes written and any write error encountered. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Fprintf(w, format, spew.NewFormatter(a), spew.NewFormatter(b)) +func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error) { + return fmt.Fprintf(w, format, convertArgs(a)...) +} + +// Fprintln is a wrapper for fmt.Fprintln that treats each argument as if it +// passed with a default Formatter interface returned by NewFormatter. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Fprintln(w, spew.NewFormatter(a), spew.NewFormatter(b)) +func Fprintln(w io.Writer, a ...interface{}) (n int, err error) { + return fmt.Fprintln(w, convertArgs(a)...) +} + +// Print is a wrapper for fmt.Print that treats each argument as if it were +// passed with a default Formatter interface returned by NewFormatter. It +// returns the number of bytes written and any write error encountered. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Print(spew.NewFormatter(a), spew.NewFormatter(b)) +func Print(a ...interface{}) (n int, err error) { + return fmt.Print(convertArgs(a)...) +} + +// Printf is a wrapper for fmt.Printf that treats each argument as if it were +// passed with a default Formatter interface returned by NewFormatter. It +// returns the number of bytes written and any write error encountered. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Printf(format, spew.NewFormatter(a), spew.NewFormatter(b)) +func Printf(format string, a ...interface{}) (n int, err error) { + return fmt.Printf(format, convertArgs(a)...) +} + +// Println is a wrapper for fmt.Println that treats each argument as if it were +// passed with a default Formatter interface returned by NewFormatter. It +// returns the number of bytes written and any write error encountered. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Println(spew.NewFormatter(a), spew.NewFormatter(b)) +func Println(a ...interface{}) (n int, err error) { + return fmt.Println(convertArgs(a)...) +} + +// Sprint is a wrapper for fmt.Sprint that treats each argument as if it were +// passed with a default Formatter interface returned by NewFormatter. It +// returns the resulting string. See NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Sprint(spew.NewFormatter(a), spew.NewFormatter(b)) +func Sprint(a ...interface{}) string { + return fmt.Sprint(convertArgs(a)...) +} + +// Sprintf is a wrapper for fmt.Sprintf that treats each argument as if it were +// passed with a default Formatter interface returned by NewFormatter. It +// returns the resulting string. See NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Sprintf(format, spew.NewFormatter(a), spew.NewFormatter(b)) +func Sprintf(format string, a ...interface{}) string { + return fmt.Sprintf(format, convertArgs(a)...) +} + +// Sprintln is a wrapper for fmt.Sprintln that treats each argument as if it +// were passed with a default Formatter interface returned by NewFormatter. It +// returns the resulting string. See NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Sprintln(spew.NewFormatter(a), spew.NewFormatter(b)) +func Sprintln(a ...interface{}) string { + return fmt.Sprintln(convertArgs(a)...) +} + +// convertArgs accepts a slice of arguments and returns a slice of the same +// length with each argument converted to a default spew Formatter interface. +func convertArgs(args []interface{}) (formatters []interface{}) { + formatters = make([]interface{}, len(args)) + for index, arg := range args { + formatters[index] = NewFormatter(arg) + } + return formatters +} diff --git a/vendor/github.com/dgrijalva/jwt-go/.gitignore b/vendor/github.com/dgrijalva/jwt-go/.gitignore new file mode 100644 index 0000000..80bed65 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/.gitignore @@ -0,0 +1,4 @@ +.DS_Store +bin + + diff --git a/vendor/github.com/dgrijalva/jwt-go/.travis.yml b/vendor/github.com/dgrijalva/jwt-go/.travis.yml new file mode 100644 index 0000000..1027f56 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/.travis.yml @@ -0,0 +1,13 @@ +language: go + +script: + - go vet ./... + - go test -v ./... + +go: + - 1.3 + - 1.4 + - 1.5 + - 1.6 + - 1.7 + - tip diff --git a/vendor/github.com/dgrijalva/jwt-go/LICENSE b/vendor/github.com/dgrijalva/jwt-go/LICENSE new file mode 100644 index 0000000..df83a9c --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/LICENSE @@ -0,0 +1,8 @@ +Copyright (c) 2012 Dave Grijalva + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/vendor/github.com/dgrijalva/jwt-go/MIGRATION_GUIDE.md b/vendor/github.com/dgrijalva/jwt-go/MIGRATION_GUIDE.md new file mode 100644 index 0000000..7fc1f79 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/MIGRATION_GUIDE.md @@ -0,0 +1,97 @@ +## Migration Guide from v2 -> v3 + +Version 3 adds several new, frequently requested features. To do so, it introduces a few breaking changes. We've worked to keep these as minimal as possible. This guide explains the breaking changes and how you can quickly update your code. + +### `Token.Claims` is now an interface type + +The most requested feature from the 2.0 verison of this library was the ability to provide a custom type to the JSON parser for claims. This was implemented by introducing a new interface, `Claims`, to replace `map[string]interface{}`. We also included two concrete implementations of `Claims`: `MapClaims` and `StandardClaims`. + +`MapClaims` is an alias for `map[string]interface{}` with built in validation behavior. It is the default claims type when using `Parse`. The usage is unchanged except you must type cast the claims property. + +The old example for parsing a token looked like this.. + +```go + if token, err := jwt.Parse(tokenString, keyLookupFunc); err == nil { + fmt.Printf("Token for user %v expires %v", token.Claims["user"], token.Claims["exp"]) + } +``` + +is now directly mapped to... + +```go + if token, err := jwt.Parse(tokenString, keyLookupFunc); err == nil { + claims := token.Claims.(jwt.MapClaims) + fmt.Printf("Token for user %v expires %v", claims["user"], claims["exp"]) + } +``` + +`StandardClaims` is designed to be embedded in your custom type. You can supply a custom claims type with the new `ParseWithClaims` function. Here's an example of using a custom claims type. + +```go + type MyCustomClaims struct { + User string + *StandardClaims + } + + if token, err := jwt.ParseWithClaims(tokenString, &MyCustomClaims{}, keyLookupFunc); err == nil { + claims := token.Claims.(*MyCustomClaims) + fmt.Printf("Token for user %v expires %v", claims.User, claims.StandardClaims.ExpiresAt) + } +``` + +### `ParseFromRequest` has been moved + +To keep this library focused on the tokens without becoming overburdened with complex request processing logic, `ParseFromRequest` and its new companion `ParseFromRequestWithClaims` have been moved to a subpackage, `request`. The method signatues have also been augmented to receive a new argument: `Extractor`. + +`Extractors` do the work of picking the token string out of a request. The interface is simple and composable. + +This simple parsing example: + +```go + if token, err := jwt.ParseFromRequest(tokenString, req, keyLookupFunc); err == nil { + fmt.Printf("Token for user %v expires %v", token.Claims["user"], token.Claims["exp"]) + } +``` + +is directly mapped to: + +```go + if token, err := request.ParseFromRequest(req, request.OAuth2Extractor, keyLookupFunc); err == nil { + claims := token.Claims.(jwt.MapClaims) + fmt.Printf("Token for user %v expires %v", claims["user"], claims["exp"]) + } +``` + +There are several concrete `Extractor` types provided for your convenience: + +* `HeaderExtractor` will search a list of headers until one contains content. +* `ArgumentExtractor` will search a list of keys in request query and form arguments until one contains content. +* `MultiExtractor` will try a list of `Extractors` in order until one returns content. +* `AuthorizationHeaderExtractor` will look in the `Authorization` header for a `Bearer` token. +* `OAuth2Extractor` searches the places an OAuth2 token would be specified (per the spec): `Authorization` header and `access_token` argument +* `PostExtractionFilter` wraps an `Extractor`, allowing you to process the content before it's parsed. A simple example is stripping the `Bearer ` text from a header + + +### RSA signing methods no longer accept `[]byte` keys + +Due to a [critical vulnerability](https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/), we've decided the convenience of accepting `[]byte` instead of `rsa.PublicKey` or `rsa.PrivateKey` isn't worth the risk of misuse. + +To replace this behavior, we've added two helper methods: `ParseRSAPrivateKeyFromPEM(key []byte) (*rsa.PrivateKey, error)` and `ParseRSAPublicKeyFromPEM(key []byte) (*rsa.PublicKey, error)`. These are just simple helpers for unpacking PEM encoded PKCS1 and PKCS8 keys. If your keys are encoded any other way, all you need to do is convert them to the `crypto/rsa` package's types. + +```go + func keyLookupFunc(*Token) (interface{}, error) { + // Don't forget to validate the alg is what you expect: + if _, ok := token.Method.(*jwt.SigningMethodRSA); !ok { + return nil, fmt.Errorf("Unexpected signing method: %v", token.Header["alg"]) + } + + // Look up key + key, err := lookupPublicKey(token.Header["kid"]) + if err != nil { + return nil, err + } + + // Unpack key from PEM encoded PKCS8 + return jwt.ParseRSAPublicKeyFromPEM(key) + } +``` diff --git a/vendor/github.com/dgrijalva/jwt-go/README.md b/vendor/github.com/dgrijalva/jwt-go/README.md new file mode 100644 index 0000000..d358d88 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/README.md @@ -0,0 +1,100 @@ +# jwt-go + +[![Build Status](https://travis-ci.org/dgrijalva/jwt-go.svg?branch=master)](https://travis-ci.org/dgrijalva/jwt-go) +[![GoDoc](https://godoc.org/github.com/dgrijalva/jwt-go?status.svg)](https://godoc.org/github.com/dgrijalva/jwt-go) + +A [go](http://www.golang.org) (or 'golang' for search engine friendliness) implementation of [JSON Web Tokens](http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html) + +**NEW VERSION COMING:** There have been a lot of improvements suggested since the version 3.0.0 released in 2016. I'm working now on cutting two different releases: 3.2.0 will contain any non-breaking changes or enhancements. 4.0.0 will follow shortly which will include breaking changes. See the 4.0.0 milestone to get an idea of what's coming. If you have other ideas, or would like to participate in 4.0.0, now's the time. If you depend on this library and don't want to be interrupted, I recommend you use your dependency mangement tool to pin to version 3. + +**SECURITY NOTICE:** Some older versions of Go have a security issue in the cryotp/elliptic. Recommendation is to upgrade to at least 1.8.3. See issue #216 for more detail. + +**SECURITY NOTICE:** It's important that you [validate the `alg` presented is what you expect](https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/). This library attempts to make it easy to do the right thing by requiring key types match the expected alg, but you should take the extra step to verify it in your usage. See the examples provided. + +## What the heck is a JWT? + +JWT.io has [a great introduction](https://jwt.io/introduction) to JSON Web Tokens. + +In short, it's a signed JSON object that does something useful (for example, authentication). It's commonly used for `Bearer` tokens in Oauth 2. A token is made of three parts, separated by `.`'s. The first two parts are JSON objects, that have been [base64url](http://tools.ietf.org/html/rfc4648) encoded. The last part is the signature, encoded the same way. + +The first part is called the header. It contains the necessary information for verifying the last part, the signature. For example, which encryption method was used for signing and what key was used. + +The part in the middle is the interesting bit. It's called the Claims and contains the actual stuff you care about. Refer to [the RFC](http://self-issued.info/docs/draft-jones-json-web-token.html) for information about reserved keys and the proper way to add your own. + +## What's in the box? + +This library supports the parsing and verification as well as the generation and signing of JWTs. Current supported signing algorithms are HMAC SHA, RSA, RSA-PSS, and ECDSA, though hooks are present for adding your own. + +## Examples + +See [the project documentation](https://godoc.org/github.com/dgrijalva/jwt-go) for examples of usage: + +* [Simple example of parsing and validating a token](https://godoc.org/github.com/dgrijalva/jwt-go#example-Parse--Hmac) +* [Simple example of building and signing a token](https://godoc.org/github.com/dgrijalva/jwt-go#example-New--Hmac) +* [Directory of Examples](https://godoc.org/github.com/dgrijalva/jwt-go#pkg-examples) + +## Extensions + +This library publishes all the necessary components for adding your own signing methods. Simply implement the `SigningMethod` interface and register a factory method using `RegisterSigningMethod`. + +Here's an example of an extension that integrates with the Google App Engine signing tools: https://github.com/someone1/gcp-jwt-go + +## Compliance + +This library was last reviewed to comply with [RTF 7519](http://www.rfc-editor.org/info/rfc7519) dated May 2015 with a few notable differences: + +* In order to protect against accidental use of [Unsecured JWTs](http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html#UnsecuredJWT), tokens using `alg=none` will only be accepted if the constant `jwt.UnsafeAllowNoneSignatureType` is provided as the key. + +## Project Status & Versioning + +This library is considered production ready. Feedback and feature requests are appreciated. The API should be considered stable. There should be very few backwards-incompatible changes outside of major version updates (and only with good reason). + +This project uses [Semantic Versioning 2.0.0](http://semver.org). Accepted pull requests will land on `master`. Periodically, versions will be tagged from `master`. You can find all the releases on [the project releases page](https://github.com/dgrijalva/jwt-go/releases). + +While we try to make it obvious when we make breaking changes, there isn't a great mechanism for pushing announcements out to users. You may want to use this alternative package include: `gopkg.in/dgrijalva/jwt-go.v3`. It will do the right thing WRT semantic versioning. + +**BREAKING CHANGES:*** +* Version 3.0.0 includes _a lot_ of changes from the 2.x line, including a few that break the API. We've tried to break as few things as possible, so there should just be a few type signature changes. A full list of breaking changes is available in `VERSION_HISTORY.md`. See `MIGRATION_GUIDE.md` for more information on updating your code. + +## Usage Tips + +### Signing vs Encryption + +A token is simply a JSON object that is signed by its author. this tells you exactly two things about the data: + +* The author of the token was in the possession of the signing secret +* The data has not been modified since it was signed + +It's important to know that JWT does not provide encryption, which means anyone who has access to the token can read its contents. If you need to protect (encrypt) the data, there is a companion spec, `JWE`, that provides this functionality. JWE is currently outside the scope of this library. + +### Choosing a Signing Method + +There are several signing methods available, and you should probably take the time to learn about the various options before choosing one. The principal design decision is most likely going to be symmetric vs asymmetric. + +Symmetric signing methods, such as HSA, use only a single secret. This is probably the simplest signing method to use since any `[]byte` can be used as a valid secret. They are also slightly computationally faster to use, though this rarely is enough to matter. Symmetric signing methods work the best when both producers and consumers of tokens are trusted, or even the same system. Since the same secret is used to both sign and validate tokens, you can't easily distribute the key for validation. + +Asymmetric signing methods, such as RSA, use different keys for signing and verifying tokens. This makes it possible to produce tokens with a private key, and allow any consumer to access the public key for verification. + +### Signing Methods and Key Types + +Each signing method expects a different object type for its signing keys. See the package documentation for details. Here are the most common ones: + +* The [HMAC signing method](https://godoc.org/github.com/dgrijalva/jwt-go#SigningMethodHMAC) (`HS256`,`HS384`,`HS512`) expect `[]byte` values for signing and validation +* The [RSA signing method](https://godoc.org/github.com/dgrijalva/jwt-go#SigningMethodRSA) (`RS256`,`RS384`,`RS512`) expect `*rsa.PrivateKey` for signing and `*rsa.PublicKey` for validation +* The [ECDSA signing method](https://godoc.org/github.com/dgrijalva/jwt-go#SigningMethodECDSA) (`ES256`,`ES384`,`ES512`) expect `*ecdsa.PrivateKey` for signing and `*ecdsa.PublicKey` for validation + +### JWT and OAuth + +It's worth mentioning that OAuth and JWT are not the same thing. A JWT token is simply a signed JSON object. It can be used anywhere such a thing is useful. There is some confusion, though, as JWT is the most common type of bearer token used in OAuth2 authentication. + +Without going too far down the rabbit hole, here's a description of the interaction of these technologies: + +* OAuth is a protocol for allowing an identity provider to be separate from the service a user is logging in to. For example, whenever you use Facebook to log into a different service (Yelp, Spotify, etc), you are using OAuth. +* OAuth defines several options for passing around authentication data. One popular method is called a "bearer token". A bearer token is simply a string that _should_ only be held by an authenticated user. Thus, simply presenting this token proves your identity. You can probably derive from here why a JWT might make a good bearer token. +* Because bearer tokens are used for authentication, it's important they're kept secret. This is why transactions that use bearer tokens typically happen over SSL. + +## More + +Documentation can be found [on godoc.org](http://godoc.org/github.com/dgrijalva/jwt-go). + +The command line utility included in this project (cmd/jwt) provides a straightforward example of token creation and parsing as well as a useful tool for debugging your own integration. You'll also find several implementation examples in the documentation. diff --git a/vendor/github.com/dgrijalva/jwt-go/VERSION_HISTORY.md b/vendor/github.com/dgrijalva/jwt-go/VERSION_HISTORY.md new file mode 100644 index 0000000..6370298 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/VERSION_HISTORY.md @@ -0,0 +1,118 @@ +## `jwt-go` Version History + +#### 3.2.0 + +* Added method `ParseUnverified` to allow users to split up the tasks of parsing and validation +* HMAC signing method returns `ErrInvalidKeyType` instead of `ErrInvalidKey` where appropriate +* Added options to `request.ParseFromRequest`, which allows for an arbitrary list of modifiers to parsing behavior. Initial set include `WithClaims` and `WithParser`. Existing usage of this function will continue to work as before. +* Deprecated `ParseFromRequestWithClaims` to simplify API in the future. + +#### 3.1.0 + +* Improvements to `jwt` command line tool +* Added `SkipClaimsValidation` option to `Parser` +* Documentation updates + +#### 3.0.0 + +* **Compatibility Breaking Changes**: See MIGRATION_GUIDE.md for tips on updating your code + * Dropped support for `[]byte` keys when using RSA signing methods. This convenience feature could contribute to security vulnerabilities involving mismatched key types with signing methods. + * `ParseFromRequest` has been moved to `request` subpackage and usage has changed + * The `Claims` property on `Token` is now type `Claims` instead of `map[string]interface{}`. The default value is type `MapClaims`, which is an alias to `map[string]interface{}`. This makes it possible to use a custom type when decoding claims. +* Other Additions and Changes + * Added `Claims` interface type to allow users to decode the claims into a custom type + * Added `ParseWithClaims`, which takes a third argument of type `Claims`. Use this function instead of `Parse` if you have a custom type you'd like to decode into. + * Dramatically improved the functionality and flexibility of `ParseFromRequest`, which is now in the `request` subpackage + * Added `ParseFromRequestWithClaims` which is the `FromRequest` equivalent of `ParseWithClaims` + * Added new interface type `Extractor`, which is used for extracting JWT strings from http requests. Used with `ParseFromRequest` and `ParseFromRequestWithClaims`. + * Added several new, more specific, validation errors to error type bitmask + * Moved examples from README to executable example files + * Signing method registry is now thread safe + * Added new property to `ValidationError`, which contains the raw error returned by calls made by parse/verify (such as those returned by keyfunc or json parser) + +#### 2.7.0 + +This will likely be the last backwards compatible release before 3.0.0, excluding essential bug fixes. + +* Added new option `-show` to the `jwt` command that will just output the decoded token without verifying +* Error text for expired tokens includes how long it's been expired +* Fixed incorrect error returned from `ParseRSAPublicKeyFromPEM` +* Documentation updates + +#### 2.6.0 + +* Exposed inner error within ValidationError +* Fixed validation errors when using UseJSONNumber flag +* Added several unit tests + +#### 2.5.0 + +* Added support for signing method none. You shouldn't use this. The API tries to make this clear. +* Updated/fixed some documentation +* Added more helpful error message when trying to parse tokens that begin with `BEARER ` + +#### 2.4.0 + +* Added new type, Parser, to allow for configuration of various parsing parameters + * You can now specify a list of valid signing methods. Anything outside this set will be rejected. + * You can now opt to use the `json.Number` type instead of `float64` when parsing token JSON +* Added support for [Travis CI](https://travis-ci.org/dgrijalva/jwt-go) +* Fixed some bugs with ECDSA parsing + +#### 2.3.0 + +* Added support for ECDSA signing methods +* Added support for RSA PSS signing methods (requires go v1.4) + +#### 2.2.0 + +* Gracefully handle a `nil` `Keyfunc` being passed to `Parse`. Result will now be the parsed token and an error, instead of a panic. + +#### 2.1.0 + +Backwards compatible API change that was missed in 2.0.0. + +* The `SignedString` method on `Token` now takes `interface{}` instead of `[]byte` + +#### 2.0.0 + +There were two major reasons for breaking backwards compatibility with this update. The first was a refactor required to expand the width of the RSA and HMAC-SHA signing implementations. There will likely be no required code changes to support this change. + +The second update, while unfortunately requiring a small change in integration, is required to open up this library to other signing methods. Not all keys used for all signing methods have a single standard on-disk representation. Requiring `[]byte` as the type for all keys proved too limiting. Additionally, this implementation allows for pre-parsed tokens to be reused, which might matter in an application that parses a high volume of tokens with a small set of keys. Backwards compatibilty has been maintained for passing `[]byte` to the RSA signing methods, but they will also accept `*rsa.PublicKey` and `*rsa.PrivateKey`. + +It is likely the only integration change required here will be to change `func(t *jwt.Token) ([]byte, error)` to `func(t *jwt.Token) (interface{}, error)` when calling `Parse`. + +* **Compatibility Breaking Changes** + * `SigningMethodHS256` is now `*SigningMethodHMAC` instead of `type struct` + * `SigningMethodRS256` is now `*SigningMethodRSA` instead of `type struct` + * `KeyFunc` now returns `interface{}` instead of `[]byte` + * `SigningMethod.Sign` now takes `interface{}` instead of `[]byte` for the key + * `SigningMethod.Verify` now takes `interface{}` instead of `[]byte` for the key +* Renamed type `SigningMethodHS256` to `SigningMethodHMAC`. Specific sizes are now just instances of this type. + * Added public package global `SigningMethodHS256` + * Added public package global `SigningMethodHS384` + * Added public package global `SigningMethodHS512` +* Renamed type `SigningMethodRS256` to `SigningMethodRSA`. Specific sizes are now just instances of this type. + * Added public package global `SigningMethodRS256` + * Added public package global `SigningMethodRS384` + * Added public package global `SigningMethodRS512` +* Moved sample private key for HMAC tests from an inline value to a file on disk. Value is unchanged. +* Refactored the RSA implementation to be easier to read +* Exposed helper methods `ParseRSAPrivateKeyFromPEM` and `ParseRSAPublicKeyFromPEM` + +#### 1.0.2 + +* Fixed bug in parsing public keys from certificates +* Added more tests around the parsing of keys for RS256 +* Code refactoring in RS256 implementation. No functional changes + +#### 1.0.1 + +* Fixed panic if RS256 signing method was passed an invalid key + +#### 1.0.0 + +* First versioned release +* API stabilized +* Supports creating, signing, parsing, and validating JWT tokens +* Supports RS256 and HS256 signing methods \ No newline at end of file diff --git a/vendor/github.com/dgrijalva/jwt-go/claims.go b/vendor/github.com/dgrijalva/jwt-go/claims.go new file mode 100644 index 0000000..f0228f0 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/claims.go @@ -0,0 +1,134 @@ +package jwt + +import ( + "crypto/subtle" + "fmt" + "time" +) + +// For a type to be a Claims object, it must just have a Valid method that determines +// if the token is invalid for any supported reason +type Claims interface { + Valid() error +} + +// Structured version of Claims Section, as referenced at +// https://tools.ietf.org/html/rfc7519#section-4.1 +// See examples for how to use this with your own claim types +type StandardClaims struct { + Audience string `json:"aud,omitempty"` + ExpiresAt int64 `json:"exp,omitempty"` + Id string `json:"jti,omitempty"` + IssuedAt int64 `json:"iat,omitempty"` + Issuer string `json:"iss,omitempty"` + NotBefore int64 `json:"nbf,omitempty"` + Subject string `json:"sub,omitempty"` +} + +// Validates time based claims "exp, iat, nbf". +// There is no accounting for clock skew. +// As well, if any of the above claims are not in the token, it will still +// be considered a valid claim. +func (c StandardClaims) Valid() error { + vErr := new(ValidationError) + now := TimeFunc().Unix() + + // The claims below are optional, by default, so if they are set to the + // default value in Go, let's not fail the verification for them. + if c.VerifyExpiresAt(now, false) == false { + delta := time.Unix(now, 0).Sub(time.Unix(c.ExpiresAt, 0)) + vErr.Inner = fmt.Errorf("token is expired by %v", delta) + vErr.Errors |= ValidationErrorExpired + } + + if c.VerifyIssuedAt(now, false) == false { + vErr.Inner = fmt.Errorf("Token used before issued") + vErr.Errors |= ValidationErrorIssuedAt + } + + if c.VerifyNotBefore(now, false) == false { + vErr.Inner = fmt.Errorf("token is not valid yet") + vErr.Errors |= ValidationErrorNotValidYet + } + + if vErr.valid() { + return nil + } + + return vErr +} + +// Compares the aud claim against cmp. +// If required is false, this method will return true if the value matches or is unset +func (c *StandardClaims) VerifyAudience(cmp string, req bool) bool { + return verifyAud(c.Audience, cmp, req) +} + +// Compares the exp claim against cmp. +// If required is false, this method will return true if the value matches or is unset +func (c *StandardClaims) VerifyExpiresAt(cmp int64, req bool) bool { + return verifyExp(c.ExpiresAt, cmp, req) +} + +// Compares the iat claim against cmp. +// If required is false, this method will return true if the value matches or is unset +func (c *StandardClaims) VerifyIssuedAt(cmp int64, req bool) bool { + return verifyIat(c.IssuedAt, cmp, req) +} + +// Compares the iss claim against cmp. +// If required is false, this method will return true if the value matches or is unset +func (c *StandardClaims) VerifyIssuer(cmp string, req bool) bool { + return verifyIss(c.Issuer, cmp, req) +} + +// Compares the nbf claim against cmp. +// If required is false, this method will return true if the value matches or is unset +func (c *StandardClaims) VerifyNotBefore(cmp int64, req bool) bool { + return verifyNbf(c.NotBefore, cmp, req) +} + +// ----- helpers + +func verifyAud(aud string, cmp string, required bool) bool { + if aud == "" { + return !required + } + if subtle.ConstantTimeCompare([]byte(aud), []byte(cmp)) != 0 { + return true + } else { + return false + } +} + +func verifyExp(exp int64, now int64, required bool) bool { + if exp == 0 { + return !required + } + return now <= exp +} + +func verifyIat(iat int64, now int64, required bool) bool { + if iat == 0 { + return !required + } + return now >= iat +} + +func verifyIss(iss string, cmp string, required bool) bool { + if iss == "" { + return !required + } + if subtle.ConstantTimeCompare([]byte(iss), []byte(cmp)) != 0 { + return true + } else { + return false + } +} + +func verifyNbf(nbf int64, now int64, required bool) bool { + if nbf == 0 { + return !required + } + return now >= nbf +} diff --git a/vendor/github.com/dgrijalva/jwt-go/doc.go b/vendor/github.com/dgrijalva/jwt-go/doc.go new file mode 100644 index 0000000..a86dc1a --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/doc.go @@ -0,0 +1,4 @@ +// Package jwt is a Go implementation of JSON Web Tokens: http://self-issued.info/docs/draft-jones-json-web-token.html +// +// See README.md for more info. +package jwt diff --git a/vendor/github.com/dgrijalva/jwt-go/ecdsa.go b/vendor/github.com/dgrijalva/jwt-go/ecdsa.go new file mode 100644 index 0000000..f977381 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/ecdsa.go @@ -0,0 +1,148 @@ +package jwt + +import ( + "crypto" + "crypto/ecdsa" + "crypto/rand" + "errors" + "math/big" +) + +var ( + // Sadly this is missing from crypto/ecdsa compared to crypto/rsa + ErrECDSAVerification = errors.New("crypto/ecdsa: verification error") +) + +// Implements the ECDSA family of signing methods signing methods +// Expects *ecdsa.PrivateKey for signing and *ecdsa.PublicKey for verification +type SigningMethodECDSA struct { + Name string + Hash crypto.Hash + KeySize int + CurveBits int +} + +// Specific instances for EC256 and company +var ( + SigningMethodES256 *SigningMethodECDSA + SigningMethodES384 *SigningMethodECDSA + SigningMethodES512 *SigningMethodECDSA +) + +func init() { + // ES256 + SigningMethodES256 = &SigningMethodECDSA{"ES256", crypto.SHA256, 32, 256} + RegisterSigningMethod(SigningMethodES256.Alg(), func() SigningMethod { + return SigningMethodES256 + }) + + // ES384 + SigningMethodES384 = &SigningMethodECDSA{"ES384", crypto.SHA384, 48, 384} + RegisterSigningMethod(SigningMethodES384.Alg(), func() SigningMethod { + return SigningMethodES384 + }) + + // ES512 + SigningMethodES512 = &SigningMethodECDSA{"ES512", crypto.SHA512, 66, 521} + RegisterSigningMethod(SigningMethodES512.Alg(), func() SigningMethod { + return SigningMethodES512 + }) +} + +func (m *SigningMethodECDSA) Alg() string { + return m.Name +} + +// Implements the Verify method from SigningMethod +// For this verify method, key must be an ecdsa.PublicKey struct +func (m *SigningMethodECDSA) Verify(signingString, signature string, key interface{}) error { + var err error + + // Decode the signature + var sig []byte + if sig, err = DecodeSegment(signature); err != nil { + return err + } + + // Get the key + var ecdsaKey *ecdsa.PublicKey + switch k := key.(type) { + case *ecdsa.PublicKey: + ecdsaKey = k + default: + return ErrInvalidKeyType + } + + if len(sig) != 2*m.KeySize { + return ErrECDSAVerification + } + + r := big.NewInt(0).SetBytes(sig[:m.KeySize]) + s := big.NewInt(0).SetBytes(sig[m.KeySize:]) + + // Create hasher + if !m.Hash.Available() { + return ErrHashUnavailable + } + hasher := m.Hash.New() + hasher.Write([]byte(signingString)) + + // Verify the signature + if verifystatus := ecdsa.Verify(ecdsaKey, hasher.Sum(nil), r, s); verifystatus == true { + return nil + } else { + return ErrECDSAVerification + } +} + +// Implements the Sign method from SigningMethod +// For this signing method, key must be an ecdsa.PrivateKey struct +func (m *SigningMethodECDSA) Sign(signingString string, key interface{}) (string, error) { + // Get the key + var ecdsaKey *ecdsa.PrivateKey + switch k := key.(type) { + case *ecdsa.PrivateKey: + ecdsaKey = k + default: + return "", ErrInvalidKeyType + } + + // Create the hasher + if !m.Hash.Available() { + return "", ErrHashUnavailable + } + + hasher := m.Hash.New() + hasher.Write([]byte(signingString)) + + // Sign the string and return r, s + if r, s, err := ecdsa.Sign(rand.Reader, ecdsaKey, hasher.Sum(nil)); err == nil { + curveBits := ecdsaKey.Curve.Params().BitSize + + if m.CurveBits != curveBits { + return "", ErrInvalidKey + } + + keyBytes := curveBits / 8 + if curveBits%8 > 0 { + keyBytes += 1 + } + + // We serialize the outpus (r and s) into big-endian byte arrays and pad + // them with zeros on the left to make sure the sizes work out. Both arrays + // must be keyBytes long, and the output must be 2*keyBytes long. + rBytes := r.Bytes() + rBytesPadded := make([]byte, keyBytes) + copy(rBytesPadded[keyBytes-len(rBytes):], rBytes) + + sBytes := s.Bytes() + sBytesPadded := make([]byte, keyBytes) + copy(sBytesPadded[keyBytes-len(sBytes):], sBytes) + + out := append(rBytesPadded, sBytesPadded...) + + return EncodeSegment(out), nil + } else { + return "", err + } +} diff --git a/vendor/github.com/dgrijalva/jwt-go/ecdsa_utils.go b/vendor/github.com/dgrijalva/jwt-go/ecdsa_utils.go new file mode 100644 index 0000000..d19624b --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/ecdsa_utils.go @@ -0,0 +1,67 @@ +package jwt + +import ( + "crypto/ecdsa" + "crypto/x509" + "encoding/pem" + "errors" +) + +var ( + ErrNotECPublicKey = errors.New("Key is not a valid ECDSA public key") + ErrNotECPrivateKey = errors.New("Key is not a valid ECDSA private key") +) + +// Parse PEM encoded Elliptic Curve Private Key Structure +func ParseECPrivateKeyFromPEM(key []byte) (*ecdsa.PrivateKey, error) { + var err error + + // Parse PEM block + var block *pem.Block + if block, _ = pem.Decode(key); block == nil { + return nil, ErrKeyMustBePEMEncoded + } + + // Parse the key + var parsedKey interface{} + if parsedKey, err = x509.ParseECPrivateKey(block.Bytes); err != nil { + return nil, err + } + + var pkey *ecdsa.PrivateKey + var ok bool + if pkey, ok = parsedKey.(*ecdsa.PrivateKey); !ok { + return nil, ErrNotECPrivateKey + } + + return pkey, nil +} + +// Parse PEM encoded PKCS1 or PKCS8 public key +func ParseECPublicKeyFromPEM(key []byte) (*ecdsa.PublicKey, error) { + var err error + + // Parse PEM block + var block *pem.Block + if block, _ = pem.Decode(key); block == nil { + return nil, ErrKeyMustBePEMEncoded + } + + // Parse the key + var parsedKey interface{} + if parsedKey, err = x509.ParsePKIXPublicKey(block.Bytes); err != nil { + if cert, err := x509.ParseCertificate(block.Bytes); err == nil { + parsedKey = cert.PublicKey + } else { + return nil, err + } + } + + var pkey *ecdsa.PublicKey + var ok bool + if pkey, ok = parsedKey.(*ecdsa.PublicKey); !ok { + return nil, ErrNotECPublicKey + } + + return pkey, nil +} diff --git a/vendor/github.com/dgrijalva/jwt-go/errors.go b/vendor/github.com/dgrijalva/jwt-go/errors.go new file mode 100644 index 0000000..1c93024 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/errors.go @@ -0,0 +1,59 @@ +package jwt + +import ( + "errors" +) + +// Error constants +var ( + ErrInvalidKey = errors.New("key is invalid") + ErrInvalidKeyType = errors.New("key is of invalid type") + ErrHashUnavailable = errors.New("the requested hash function is unavailable") +) + +// The errors that might occur when parsing and validating a token +const ( + ValidationErrorMalformed uint32 = 1 << iota // Token is malformed + ValidationErrorUnverifiable // Token could not be verified because of signing problems + ValidationErrorSignatureInvalid // Signature validation failed + + // Standard Claim validation errors + ValidationErrorAudience // AUD validation failed + ValidationErrorExpired // EXP validation failed + ValidationErrorIssuedAt // IAT validation failed + ValidationErrorIssuer // ISS validation failed + ValidationErrorNotValidYet // NBF validation failed + ValidationErrorId // JTI validation failed + ValidationErrorClaimsInvalid // Generic claims validation error +) + +// Helper for constructing a ValidationError with a string error message +func NewValidationError(errorText string, errorFlags uint32) *ValidationError { + return &ValidationError{ + text: errorText, + Errors: errorFlags, + } +} + +// The error from Parse if token is not valid +type ValidationError struct { + Inner error // stores the error returned by external dependencies, i.e.: KeyFunc + Errors uint32 // bitfield. see ValidationError... constants + text string // errors that do not have a valid error just have text +} + +// Validation error is an error type +func (e ValidationError) Error() string { + if e.Inner != nil { + return e.Inner.Error() + } else if e.text != "" { + return e.text + } else { + return "token is invalid" + } +} + +// No errors +func (e *ValidationError) valid() bool { + return e.Errors == 0 +} diff --git a/vendor/github.com/dgrijalva/jwt-go/hmac.go b/vendor/github.com/dgrijalva/jwt-go/hmac.go new file mode 100644 index 0000000..addbe5d --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/hmac.go @@ -0,0 +1,95 @@ +package jwt + +import ( + "crypto" + "crypto/hmac" + "errors" +) + +// Implements the HMAC-SHA family of signing methods signing methods +// Expects key type of []byte for both signing and validation +type SigningMethodHMAC struct { + Name string + Hash crypto.Hash +} + +// Specific instances for HS256 and company +var ( + SigningMethodHS256 *SigningMethodHMAC + SigningMethodHS384 *SigningMethodHMAC + SigningMethodHS512 *SigningMethodHMAC + ErrSignatureInvalid = errors.New("signature is invalid") +) + +func init() { + // HS256 + SigningMethodHS256 = &SigningMethodHMAC{"HS256", crypto.SHA256} + RegisterSigningMethod(SigningMethodHS256.Alg(), func() SigningMethod { + return SigningMethodHS256 + }) + + // HS384 + SigningMethodHS384 = &SigningMethodHMAC{"HS384", crypto.SHA384} + RegisterSigningMethod(SigningMethodHS384.Alg(), func() SigningMethod { + return SigningMethodHS384 + }) + + // HS512 + SigningMethodHS512 = &SigningMethodHMAC{"HS512", crypto.SHA512} + RegisterSigningMethod(SigningMethodHS512.Alg(), func() SigningMethod { + return SigningMethodHS512 + }) +} + +func (m *SigningMethodHMAC) Alg() string { + return m.Name +} + +// Verify the signature of HSXXX tokens. Returns nil if the signature is valid. +func (m *SigningMethodHMAC) Verify(signingString, signature string, key interface{}) error { + // Verify the key is the right type + keyBytes, ok := key.([]byte) + if !ok { + return ErrInvalidKeyType + } + + // Decode signature, for comparison + sig, err := DecodeSegment(signature) + if err != nil { + return err + } + + // Can we use the specified hashing method? + if !m.Hash.Available() { + return ErrHashUnavailable + } + + // This signing method is symmetric, so we validate the signature + // by reproducing the signature from the signing string and key, then + // comparing that against the provided signature. + hasher := hmac.New(m.Hash.New, keyBytes) + hasher.Write([]byte(signingString)) + if !hmac.Equal(sig, hasher.Sum(nil)) { + return ErrSignatureInvalid + } + + // No validation errors. Signature is good. + return nil +} + +// Implements the Sign method from SigningMethod for this signing method. +// Key must be []byte +func (m *SigningMethodHMAC) Sign(signingString string, key interface{}) (string, error) { + if keyBytes, ok := key.([]byte); ok { + if !m.Hash.Available() { + return "", ErrHashUnavailable + } + + hasher := hmac.New(m.Hash.New, keyBytes) + hasher.Write([]byte(signingString)) + + return EncodeSegment(hasher.Sum(nil)), nil + } + + return "", ErrInvalidKeyType +} diff --git a/vendor/github.com/dgrijalva/jwt-go/map_claims.go b/vendor/github.com/dgrijalva/jwt-go/map_claims.go new file mode 100644 index 0000000..291213c --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/map_claims.go @@ -0,0 +1,94 @@ +package jwt + +import ( + "encoding/json" + "errors" + // "fmt" +) + +// Claims type that uses the map[string]interface{} for JSON decoding +// This is the default claims type if you don't supply one +type MapClaims map[string]interface{} + +// Compares the aud claim against cmp. +// If required is false, this method will return true if the value matches or is unset +func (m MapClaims) VerifyAudience(cmp string, req bool) bool { + aud, _ := m["aud"].(string) + return verifyAud(aud, cmp, req) +} + +// Compares the exp claim against cmp. +// If required is false, this method will return true if the value matches or is unset +func (m MapClaims) VerifyExpiresAt(cmp int64, req bool) bool { + switch exp := m["exp"].(type) { + case float64: + return verifyExp(int64(exp), cmp, req) + case json.Number: + v, _ := exp.Int64() + return verifyExp(v, cmp, req) + } + return req == false +} + +// Compares the iat claim against cmp. +// If required is false, this method will return true if the value matches or is unset +func (m MapClaims) VerifyIssuedAt(cmp int64, req bool) bool { + switch iat := m["iat"].(type) { + case float64: + return verifyIat(int64(iat), cmp, req) + case json.Number: + v, _ := iat.Int64() + return verifyIat(v, cmp, req) + } + return req == false +} + +// Compares the iss claim against cmp. +// If required is false, this method will return true if the value matches or is unset +func (m MapClaims) VerifyIssuer(cmp string, req bool) bool { + iss, _ := m["iss"].(string) + return verifyIss(iss, cmp, req) +} + +// Compares the nbf claim against cmp. +// If required is false, this method will return true if the value matches or is unset +func (m MapClaims) VerifyNotBefore(cmp int64, req bool) bool { + switch nbf := m["nbf"].(type) { + case float64: + return verifyNbf(int64(nbf), cmp, req) + case json.Number: + v, _ := nbf.Int64() + return verifyNbf(v, cmp, req) + } + return req == false +} + +// Validates time based claims "exp, iat, nbf". +// There is no accounting for clock skew. +// As well, if any of the above claims are not in the token, it will still +// be considered a valid claim. +func (m MapClaims) Valid() error { + vErr := new(ValidationError) + now := TimeFunc().Unix() + + if m.VerifyExpiresAt(now, false) == false { + vErr.Inner = errors.New("Token is expired") + vErr.Errors |= ValidationErrorExpired + } + + if m.VerifyIssuedAt(now, false) == false { + vErr.Inner = errors.New("Token used before issued") + vErr.Errors |= ValidationErrorIssuedAt + } + + if m.VerifyNotBefore(now, false) == false { + vErr.Inner = errors.New("Token is not valid yet") + vErr.Errors |= ValidationErrorNotValidYet + } + + if vErr.valid() { + return nil + } + + return vErr +} diff --git a/vendor/github.com/dgrijalva/jwt-go/none.go b/vendor/github.com/dgrijalva/jwt-go/none.go new file mode 100644 index 0000000..f04d189 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/none.go @@ -0,0 +1,52 @@ +package jwt + +// Implements the none signing method. This is required by the spec +// but you probably should never use it. +var SigningMethodNone *signingMethodNone + +const UnsafeAllowNoneSignatureType unsafeNoneMagicConstant = "none signing method allowed" + +var NoneSignatureTypeDisallowedError error + +type signingMethodNone struct{} +type unsafeNoneMagicConstant string + +func init() { + SigningMethodNone = &signingMethodNone{} + NoneSignatureTypeDisallowedError = NewValidationError("'none' signature type is not allowed", ValidationErrorSignatureInvalid) + + RegisterSigningMethod(SigningMethodNone.Alg(), func() SigningMethod { + return SigningMethodNone + }) +} + +func (m *signingMethodNone) Alg() string { + return "none" +} + +// Only allow 'none' alg type if UnsafeAllowNoneSignatureType is specified as the key +func (m *signingMethodNone) Verify(signingString, signature string, key interface{}) (err error) { + // Key must be UnsafeAllowNoneSignatureType to prevent accidentally + // accepting 'none' signing method + if _, ok := key.(unsafeNoneMagicConstant); !ok { + return NoneSignatureTypeDisallowedError + } + // If signing method is none, signature must be an empty string + if signature != "" { + return NewValidationError( + "'none' signing method with non-empty signature", + ValidationErrorSignatureInvalid, + ) + } + + // Accept 'none' signing method. + return nil +} + +// Only allow 'none' signing if UnsafeAllowNoneSignatureType is specified as the key +func (m *signingMethodNone) Sign(signingString string, key interface{}) (string, error) { + if _, ok := key.(unsafeNoneMagicConstant); ok { + return "", nil + } + return "", NoneSignatureTypeDisallowedError +} diff --git a/vendor/github.com/dgrijalva/jwt-go/parser.go b/vendor/github.com/dgrijalva/jwt-go/parser.go new file mode 100644 index 0000000..d6901d9 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/parser.go @@ -0,0 +1,148 @@ +package jwt + +import ( + "bytes" + "encoding/json" + "fmt" + "strings" +) + +type Parser struct { + ValidMethods []string // If populated, only these methods will be considered valid + UseJSONNumber bool // Use JSON Number format in JSON decoder + SkipClaimsValidation bool // Skip claims validation during token parsing +} + +// Parse, validate, and return a token. +// keyFunc will receive the parsed token and should return the key for validating. +// If everything is kosher, err will be nil +func (p *Parser) Parse(tokenString string, keyFunc Keyfunc) (*Token, error) { + return p.ParseWithClaims(tokenString, MapClaims{}, keyFunc) +} + +func (p *Parser) ParseWithClaims(tokenString string, claims Claims, keyFunc Keyfunc) (*Token, error) { + token, parts, err := p.ParseUnverified(tokenString, claims) + if err != nil { + return token, err + } + + // Verify signing method is in the required set + if p.ValidMethods != nil { + var signingMethodValid = false + var alg = token.Method.Alg() + for _, m := range p.ValidMethods { + if m == alg { + signingMethodValid = true + break + } + } + if !signingMethodValid { + // signing method is not in the listed set + return token, NewValidationError(fmt.Sprintf("signing method %v is invalid", alg), ValidationErrorSignatureInvalid) + } + } + + // Lookup key + var key interface{} + if keyFunc == nil { + // keyFunc was not provided. short circuiting validation + return token, NewValidationError("no Keyfunc was provided.", ValidationErrorUnverifiable) + } + if key, err = keyFunc(token); err != nil { + // keyFunc returned an error + if ve, ok := err.(*ValidationError); ok { + return token, ve + } + return token, &ValidationError{Inner: err, Errors: ValidationErrorUnverifiable} + } + + vErr := &ValidationError{} + + // Validate Claims + if !p.SkipClaimsValidation { + if err := token.Claims.Valid(); err != nil { + + // If the Claims Valid returned an error, check if it is a validation error, + // If it was another error type, create a ValidationError with a generic ClaimsInvalid flag set + if e, ok := err.(*ValidationError); !ok { + vErr = &ValidationError{Inner: err, Errors: ValidationErrorClaimsInvalid} + } else { + vErr = e + } + } + } + + // Perform validation + token.Signature = parts[2] + if err = token.Method.Verify(strings.Join(parts[0:2], "."), token.Signature, key); err != nil { + vErr.Inner = err + vErr.Errors |= ValidationErrorSignatureInvalid + } + + if vErr.valid() { + token.Valid = true + return token, nil + } + + return token, vErr +} + +// WARNING: Don't use this method unless you know what you're doing +// +// This method parses the token but doesn't validate the signature. It's only +// ever useful in cases where you know the signature is valid (because it has +// been checked previously in the stack) and you want to extract values from +// it. +func (p *Parser) ParseUnverified(tokenString string, claims Claims) (token *Token, parts []string, err error) { + parts = strings.Split(tokenString, ".") + if len(parts) != 3 { + return nil, parts, NewValidationError("token contains an invalid number of segments", ValidationErrorMalformed) + } + + token = &Token{Raw: tokenString} + + // parse Header + var headerBytes []byte + if headerBytes, err = DecodeSegment(parts[0]); err != nil { + if strings.HasPrefix(strings.ToLower(tokenString), "bearer ") { + return token, parts, NewValidationError("tokenstring should not contain 'bearer '", ValidationErrorMalformed) + } + return token, parts, &ValidationError{Inner: err, Errors: ValidationErrorMalformed} + } + if err = json.Unmarshal(headerBytes, &token.Header); err != nil { + return token, parts, &ValidationError{Inner: err, Errors: ValidationErrorMalformed} + } + + // parse Claims + var claimBytes []byte + token.Claims = claims + + if claimBytes, err = DecodeSegment(parts[1]); err != nil { + return token, parts, &ValidationError{Inner: err, Errors: ValidationErrorMalformed} + } + dec := json.NewDecoder(bytes.NewBuffer(claimBytes)) + if p.UseJSONNumber { + dec.UseNumber() + } + // JSON Decode. Special case for map type to avoid weird pointer behavior + if c, ok := token.Claims.(MapClaims); ok { + err = dec.Decode(&c) + } else { + err = dec.Decode(&claims) + } + // Handle decode error + if err != nil { + return token, parts, &ValidationError{Inner: err, Errors: ValidationErrorMalformed} + } + + // Lookup signature method + if method, ok := token.Header["alg"].(string); ok { + if token.Method = GetSigningMethod(method); token.Method == nil { + return token, parts, NewValidationError("signing method (alg) is unavailable.", ValidationErrorUnverifiable) + } + } else { + return token, parts, NewValidationError("signing method (alg) is unspecified.", ValidationErrorUnverifiable) + } + + return token, parts, nil +} diff --git a/vendor/github.com/dgrijalva/jwt-go/rsa.go b/vendor/github.com/dgrijalva/jwt-go/rsa.go new file mode 100644 index 0000000..e4caf1c --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/rsa.go @@ -0,0 +1,101 @@ +package jwt + +import ( + "crypto" + "crypto/rand" + "crypto/rsa" +) + +// Implements the RSA family of signing methods signing methods +// Expects *rsa.PrivateKey for signing and *rsa.PublicKey for validation +type SigningMethodRSA struct { + Name string + Hash crypto.Hash +} + +// Specific instances for RS256 and company +var ( + SigningMethodRS256 *SigningMethodRSA + SigningMethodRS384 *SigningMethodRSA + SigningMethodRS512 *SigningMethodRSA +) + +func init() { + // RS256 + SigningMethodRS256 = &SigningMethodRSA{"RS256", crypto.SHA256} + RegisterSigningMethod(SigningMethodRS256.Alg(), func() SigningMethod { + return SigningMethodRS256 + }) + + // RS384 + SigningMethodRS384 = &SigningMethodRSA{"RS384", crypto.SHA384} + RegisterSigningMethod(SigningMethodRS384.Alg(), func() SigningMethod { + return SigningMethodRS384 + }) + + // RS512 + SigningMethodRS512 = &SigningMethodRSA{"RS512", crypto.SHA512} + RegisterSigningMethod(SigningMethodRS512.Alg(), func() SigningMethod { + return SigningMethodRS512 + }) +} + +func (m *SigningMethodRSA) Alg() string { + return m.Name +} + +// Implements the Verify method from SigningMethod +// For this signing method, must be an *rsa.PublicKey structure. +func (m *SigningMethodRSA) Verify(signingString, signature string, key interface{}) error { + var err error + + // Decode the signature + var sig []byte + if sig, err = DecodeSegment(signature); err != nil { + return err + } + + var rsaKey *rsa.PublicKey + var ok bool + + if rsaKey, ok = key.(*rsa.PublicKey); !ok { + return ErrInvalidKeyType + } + + // Create hasher + if !m.Hash.Available() { + return ErrHashUnavailable + } + hasher := m.Hash.New() + hasher.Write([]byte(signingString)) + + // Verify the signature + return rsa.VerifyPKCS1v15(rsaKey, m.Hash, hasher.Sum(nil), sig) +} + +// Implements the Sign method from SigningMethod +// For this signing method, must be an *rsa.PrivateKey structure. +func (m *SigningMethodRSA) Sign(signingString string, key interface{}) (string, error) { + var rsaKey *rsa.PrivateKey + var ok bool + + // Validate type of key + if rsaKey, ok = key.(*rsa.PrivateKey); !ok { + return "", ErrInvalidKey + } + + // Create the hasher + if !m.Hash.Available() { + return "", ErrHashUnavailable + } + + hasher := m.Hash.New() + hasher.Write([]byte(signingString)) + + // Sign the string and return the encoded bytes + if sigBytes, err := rsa.SignPKCS1v15(rand.Reader, rsaKey, m.Hash, hasher.Sum(nil)); err == nil { + return EncodeSegment(sigBytes), nil + } else { + return "", err + } +} diff --git a/vendor/github.com/dgrijalva/jwt-go/rsa_pss.go b/vendor/github.com/dgrijalva/jwt-go/rsa_pss.go new file mode 100644 index 0000000..10ee9db --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/rsa_pss.go @@ -0,0 +1,126 @@ +// +build go1.4 + +package jwt + +import ( + "crypto" + "crypto/rand" + "crypto/rsa" +) + +// Implements the RSAPSS family of signing methods signing methods +type SigningMethodRSAPSS struct { + *SigningMethodRSA + Options *rsa.PSSOptions +} + +// Specific instances for RS/PS and company +var ( + SigningMethodPS256 *SigningMethodRSAPSS + SigningMethodPS384 *SigningMethodRSAPSS + SigningMethodPS512 *SigningMethodRSAPSS +) + +func init() { + // PS256 + SigningMethodPS256 = &SigningMethodRSAPSS{ + &SigningMethodRSA{ + Name: "PS256", + Hash: crypto.SHA256, + }, + &rsa.PSSOptions{ + SaltLength: rsa.PSSSaltLengthAuto, + Hash: crypto.SHA256, + }, + } + RegisterSigningMethod(SigningMethodPS256.Alg(), func() SigningMethod { + return SigningMethodPS256 + }) + + // PS384 + SigningMethodPS384 = &SigningMethodRSAPSS{ + &SigningMethodRSA{ + Name: "PS384", + Hash: crypto.SHA384, + }, + &rsa.PSSOptions{ + SaltLength: rsa.PSSSaltLengthAuto, + Hash: crypto.SHA384, + }, + } + RegisterSigningMethod(SigningMethodPS384.Alg(), func() SigningMethod { + return SigningMethodPS384 + }) + + // PS512 + SigningMethodPS512 = &SigningMethodRSAPSS{ + &SigningMethodRSA{ + Name: "PS512", + Hash: crypto.SHA512, + }, + &rsa.PSSOptions{ + SaltLength: rsa.PSSSaltLengthAuto, + Hash: crypto.SHA512, + }, + } + RegisterSigningMethod(SigningMethodPS512.Alg(), func() SigningMethod { + return SigningMethodPS512 + }) +} + +// Implements the Verify method from SigningMethod +// For this verify method, key must be an rsa.PublicKey struct +func (m *SigningMethodRSAPSS) Verify(signingString, signature string, key interface{}) error { + var err error + + // Decode the signature + var sig []byte + if sig, err = DecodeSegment(signature); err != nil { + return err + } + + var rsaKey *rsa.PublicKey + switch k := key.(type) { + case *rsa.PublicKey: + rsaKey = k + default: + return ErrInvalidKey + } + + // Create hasher + if !m.Hash.Available() { + return ErrHashUnavailable + } + hasher := m.Hash.New() + hasher.Write([]byte(signingString)) + + return rsa.VerifyPSS(rsaKey, m.Hash, hasher.Sum(nil), sig, m.Options) +} + +// Implements the Sign method from SigningMethod +// For this signing method, key must be an rsa.PrivateKey struct +func (m *SigningMethodRSAPSS) Sign(signingString string, key interface{}) (string, error) { + var rsaKey *rsa.PrivateKey + + switch k := key.(type) { + case *rsa.PrivateKey: + rsaKey = k + default: + return "", ErrInvalidKeyType + } + + // Create the hasher + if !m.Hash.Available() { + return "", ErrHashUnavailable + } + + hasher := m.Hash.New() + hasher.Write([]byte(signingString)) + + // Sign the string and return the encoded bytes + if sigBytes, err := rsa.SignPSS(rand.Reader, rsaKey, m.Hash, hasher.Sum(nil), m.Options); err == nil { + return EncodeSegment(sigBytes), nil + } else { + return "", err + } +} diff --git a/vendor/github.com/dgrijalva/jwt-go/rsa_utils.go b/vendor/github.com/dgrijalva/jwt-go/rsa_utils.go new file mode 100644 index 0000000..a5ababf --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/rsa_utils.go @@ -0,0 +1,101 @@ +package jwt + +import ( + "crypto/rsa" + "crypto/x509" + "encoding/pem" + "errors" +) + +var ( + ErrKeyMustBePEMEncoded = errors.New("Invalid Key: Key must be PEM encoded PKCS1 or PKCS8 private key") + ErrNotRSAPrivateKey = errors.New("Key is not a valid RSA private key") + ErrNotRSAPublicKey = errors.New("Key is not a valid RSA public key") +) + +// Parse PEM encoded PKCS1 or PKCS8 private key +func ParseRSAPrivateKeyFromPEM(key []byte) (*rsa.PrivateKey, error) { + var err error + + // Parse PEM block + var block *pem.Block + if block, _ = pem.Decode(key); block == nil { + return nil, ErrKeyMustBePEMEncoded + } + + var parsedKey interface{} + if parsedKey, err = x509.ParsePKCS1PrivateKey(block.Bytes); err != nil { + if parsedKey, err = x509.ParsePKCS8PrivateKey(block.Bytes); err != nil { + return nil, err + } + } + + var pkey *rsa.PrivateKey + var ok bool + if pkey, ok = parsedKey.(*rsa.PrivateKey); !ok { + return nil, ErrNotRSAPrivateKey + } + + return pkey, nil +} + +// Parse PEM encoded PKCS1 or PKCS8 private key protected with password +func ParseRSAPrivateKeyFromPEMWithPassword(key []byte, password string) (*rsa.PrivateKey, error) { + var err error + + // Parse PEM block + var block *pem.Block + if block, _ = pem.Decode(key); block == nil { + return nil, ErrKeyMustBePEMEncoded + } + + var parsedKey interface{} + + var blockDecrypted []byte + if blockDecrypted, err = x509.DecryptPEMBlock(block, []byte(password)); err != nil { + return nil, err + } + + if parsedKey, err = x509.ParsePKCS1PrivateKey(blockDecrypted); err != nil { + if parsedKey, err = x509.ParsePKCS8PrivateKey(blockDecrypted); err != nil { + return nil, err + } + } + + var pkey *rsa.PrivateKey + var ok bool + if pkey, ok = parsedKey.(*rsa.PrivateKey); !ok { + return nil, ErrNotRSAPrivateKey + } + + return pkey, nil +} + +// Parse PEM encoded PKCS1 or PKCS8 public key +func ParseRSAPublicKeyFromPEM(key []byte) (*rsa.PublicKey, error) { + var err error + + // Parse PEM block + var block *pem.Block + if block, _ = pem.Decode(key); block == nil { + return nil, ErrKeyMustBePEMEncoded + } + + // Parse the key + var parsedKey interface{} + if parsedKey, err = x509.ParsePKIXPublicKey(block.Bytes); err != nil { + if cert, err := x509.ParseCertificate(block.Bytes); err == nil { + parsedKey = cert.PublicKey + } else { + return nil, err + } + } + + var pkey *rsa.PublicKey + var ok bool + if pkey, ok = parsedKey.(*rsa.PublicKey); !ok { + return nil, ErrNotRSAPublicKey + } + + return pkey, nil +} diff --git a/vendor/github.com/dgrijalva/jwt-go/signing_method.go b/vendor/github.com/dgrijalva/jwt-go/signing_method.go new file mode 100644 index 0000000..ed1f212 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/signing_method.go @@ -0,0 +1,35 @@ +package jwt + +import ( + "sync" +) + +var signingMethods = map[string]func() SigningMethod{} +var signingMethodLock = new(sync.RWMutex) + +// Implement SigningMethod to add new methods for signing or verifying tokens. +type SigningMethod interface { + Verify(signingString, signature string, key interface{}) error // Returns nil if signature is valid + Sign(signingString string, key interface{}) (string, error) // Returns encoded signature or error + Alg() string // returns the alg identifier for this method (example: 'HS256') +} + +// Register the "alg" name and a factory function for signing method. +// This is typically done during init() in the method's implementation +func RegisterSigningMethod(alg string, f func() SigningMethod) { + signingMethodLock.Lock() + defer signingMethodLock.Unlock() + + signingMethods[alg] = f +} + +// Get a signing method from an "alg" string +func GetSigningMethod(alg string) (method SigningMethod) { + signingMethodLock.RLock() + defer signingMethodLock.RUnlock() + + if methodF, ok := signingMethods[alg]; ok { + method = methodF() + } + return +} diff --git a/vendor/github.com/dgrijalva/jwt-go/token.go b/vendor/github.com/dgrijalva/jwt-go/token.go new file mode 100644 index 0000000..d637e08 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/token.go @@ -0,0 +1,108 @@ +package jwt + +import ( + "encoding/base64" + "encoding/json" + "strings" + "time" +) + +// TimeFunc provides the current time when parsing token to validate "exp" claim (expiration time). +// You can override it to use another time value. This is useful for testing or if your +// server uses a different time zone than your tokens. +var TimeFunc = time.Now + +// Parse methods use this callback function to supply +// the key for verification. The function receives the parsed, +// but unverified Token. This allows you to use properties in the +// Header of the token (such as `kid`) to identify which key to use. +type Keyfunc func(*Token) (interface{}, error) + +// A JWT Token. Different fields will be used depending on whether you're +// creating or parsing/verifying a token. +type Token struct { + Raw string // The raw token. Populated when you Parse a token + Method SigningMethod // The signing method used or to be used + Header map[string]interface{} // The first segment of the token + Claims Claims // The second segment of the token + Signature string // The third segment of the token. Populated when you Parse a token + Valid bool // Is the token valid? Populated when you Parse/Verify a token +} + +// Create a new Token. Takes a signing method +func New(method SigningMethod) *Token { + return NewWithClaims(method, MapClaims{}) +} + +func NewWithClaims(method SigningMethod, claims Claims) *Token { + return &Token{ + Header: map[string]interface{}{ + "typ": "JWT", + "alg": method.Alg(), + }, + Claims: claims, + Method: method, + } +} + +// Get the complete, signed token +func (t *Token) SignedString(key interface{}) (string, error) { + var sig, sstr string + var err error + if sstr, err = t.SigningString(); err != nil { + return "", err + } + if sig, err = t.Method.Sign(sstr, key); err != nil { + return "", err + } + return strings.Join([]string{sstr, sig}, "."), nil +} + +// Generate the signing string. This is the +// most expensive part of the whole deal. Unless you +// need this for something special, just go straight for +// the SignedString. +func (t *Token) SigningString() (string, error) { + var err error + parts := make([]string, 2) + for i, _ := range parts { + var jsonValue []byte + if i == 0 { + if jsonValue, err = json.Marshal(t.Header); err != nil { + return "", err + } + } else { + if jsonValue, err = json.Marshal(t.Claims); err != nil { + return "", err + } + } + + parts[i] = EncodeSegment(jsonValue) + } + return strings.Join(parts, "."), nil +} + +// Parse, validate, and return a token. +// keyFunc will receive the parsed token and should return the key for validating. +// If everything is kosher, err will be nil +func Parse(tokenString string, keyFunc Keyfunc) (*Token, error) { + return new(Parser).Parse(tokenString, keyFunc) +} + +func ParseWithClaims(tokenString string, claims Claims, keyFunc Keyfunc) (*Token, error) { + return new(Parser).ParseWithClaims(tokenString, claims, keyFunc) +} + +// Encode JWT specific base64url encoding with padding stripped +func EncodeSegment(seg []byte) string { + return strings.TrimRight(base64.URLEncoding.EncodeToString(seg), "=") +} + +// Decode JWT specific base64url encoding with padding stripped +func DecodeSegment(seg string) ([]byte, error) { + if l := len(seg) % 4; l > 0 { + seg += strings.Repeat("=", 4-l) + } + + return base64.URLEncoding.DecodeString(seg) +} diff --git a/vendor/github.com/dimchansky/utfbom/.gitignore b/vendor/github.com/dimchansky/utfbom/.gitignore new file mode 100644 index 0000000..d7ec5ce --- /dev/null +++ b/vendor/github.com/dimchansky/utfbom/.gitignore @@ -0,0 +1,37 @@ +# Binaries for programs and plugins +*.exe +*.dll +*.so +*.dylib +*.o +*.a + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.prof + +# Test binary, build with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736 +.glide/ + +# Gogland +.idea/ \ No newline at end of file diff --git a/vendor/github.com/dimchansky/utfbom/.travis.yml b/vendor/github.com/dimchansky/utfbom/.travis.yml new file mode 100644 index 0000000..3512c85 --- /dev/null +++ b/vendor/github.com/dimchansky/utfbom/.travis.yml @@ -0,0 +1,18 @@ +language: go + +go: + - '1.10' + - '1.11' + +# sudo=false makes the build run using a container +sudo: false + +before_install: + - go get github.com/mattn/goveralls + - go get golang.org/x/tools/cmd/cover + - go get golang.org/x/tools/cmd/goimports + - go get github.com/golang/lint/golint +script: + - gofiles=$(find ./ -name '*.go') && [ -z "$gofiles" ] || unformatted=$(goimports -l $gofiles) && [ -z "$unformatted" ] || (echo >&2 "Go files must be formatted with gofmt. Following files has problem:\n $unformatted" && false) + - golint ./... # This won't break the build, just show warnings + - $HOME/gopath/bin/goveralls -service=travis-ci diff --git a/vendor/github.com/dimchansky/utfbom/LICENSE b/vendor/github.com/dimchansky/utfbom/LICENSE new file mode 100644 index 0000000..8dada3e --- /dev/null +++ b/vendor/github.com/dimchansky/utfbom/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/dimchansky/utfbom/README.md b/vendor/github.com/dimchansky/utfbom/README.md new file mode 100644 index 0000000..8ece280 --- /dev/null +++ b/vendor/github.com/dimchansky/utfbom/README.md @@ -0,0 +1,66 @@ +# utfbom [![Godoc](https://godoc.org/github.com/dimchansky/utfbom?status.png)](https://godoc.org/github.com/dimchansky/utfbom) [![License](https://img.shields.io/:license-apache-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![Build Status](https://travis-ci.org/dimchansky/utfbom.svg?branch=master)](https://travis-ci.org/dimchansky/utfbom) [![Go Report Card](https://goreportcard.com/badge/github.com/dimchansky/utfbom)](https://goreportcard.com/report/github.com/dimchansky/utfbom) [![Coverage Status](https://coveralls.io/repos/github/dimchansky/utfbom/badge.svg?branch=master)](https://coveralls.io/github/dimchansky/utfbom?branch=master) + +The package utfbom implements the detection of the BOM (Unicode Byte Order Mark) and removing as necessary. It can also return the encoding detected by the BOM. + +## Installation + + go get -u github.com/dimchansky/utfbom + +## Example + +```go +package main + +import ( + "bytes" + "fmt" + "io/ioutil" + + "github.com/dimchansky/utfbom" +) + +func main() { + trySkip([]byte("\xEF\xBB\xBFhello")) + trySkip([]byte("hello")) +} + +func trySkip(byteData []byte) { + fmt.Println("Input:", byteData) + + // just skip BOM + output, err := ioutil.ReadAll(utfbom.SkipOnly(bytes.NewReader(byteData))) + if err != nil { + fmt.Println(err) + return + } + fmt.Println("ReadAll with BOM skipping", output) + + // skip BOM and detect encoding + sr, enc := utfbom.Skip(bytes.NewReader(byteData)) + fmt.Printf("Detected encoding: %s\n", enc) + output, err = ioutil.ReadAll(sr) + if err != nil { + fmt.Println(err) + return + } + fmt.Println("ReadAll with BOM detection and skipping", output) + fmt.Println() +} +``` + +Output: + +``` +$ go run main.go +Input: [239 187 191 104 101 108 108 111] +ReadAll with BOM skipping [104 101 108 108 111] +Detected encoding: UTF8 +ReadAll with BOM detection and skipping [104 101 108 108 111] + +Input: [104 101 108 108 111] +ReadAll with BOM skipping [104 101 108 108 111] +Detected encoding: Unknown +ReadAll with BOM detection and skipping [104 101 108 108 111] +``` + + diff --git a/vendor/github.com/dimchansky/utfbom/go.mod b/vendor/github.com/dimchansky/utfbom/go.mod new file mode 100644 index 0000000..4b9ecc6 --- /dev/null +++ b/vendor/github.com/dimchansky/utfbom/go.mod @@ -0,0 +1 @@ +module github.com/dimchansky/utfbom \ No newline at end of file diff --git a/vendor/github.com/dimchansky/utfbom/utfbom.go b/vendor/github.com/dimchansky/utfbom/utfbom.go new file mode 100644 index 0000000..77a303e --- /dev/null +++ b/vendor/github.com/dimchansky/utfbom/utfbom.go @@ -0,0 +1,192 @@ +// Package utfbom implements the detection of the BOM (Unicode Byte Order Mark) and removing as necessary. +// It wraps an io.Reader object, creating another object (Reader) that also implements the io.Reader +// interface but provides automatic BOM checking and removing as necessary. +package utfbom + +import ( + "errors" + "io" +) + +// Encoding is type alias for detected UTF encoding. +type Encoding int + +// Constants to identify detected UTF encodings. +const ( + // Unknown encoding, returned when no BOM was detected + Unknown Encoding = iota + + // UTF8, BOM bytes: EF BB BF + UTF8 + + // UTF-16, big-endian, BOM bytes: FE FF + UTF16BigEndian + + // UTF-16, little-endian, BOM bytes: FF FE + UTF16LittleEndian + + // UTF-32, big-endian, BOM bytes: 00 00 FE FF + UTF32BigEndian + + // UTF-32, little-endian, BOM bytes: FF FE 00 00 + UTF32LittleEndian +) + +// String returns a user-friendly string representation of the encoding. Satisfies fmt.Stringer interface. +func (e Encoding) String() string { + switch e { + case UTF8: + return "UTF8" + case UTF16BigEndian: + return "UTF16BigEndian" + case UTF16LittleEndian: + return "UTF16LittleEndian" + case UTF32BigEndian: + return "UTF32BigEndian" + case UTF32LittleEndian: + return "UTF32LittleEndian" + default: + return "Unknown" + } +} + +const maxConsecutiveEmptyReads = 100 + +// Skip creates Reader which automatically detects BOM (Unicode Byte Order Mark) and removes it as necessary. +// It also returns the encoding detected by the BOM. +// If the detected encoding is not needed, you can call the SkipOnly function. +func Skip(rd io.Reader) (*Reader, Encoding) { + // Is it already a Reader? + b, ok := rd.(*Reader) + if ok { + return b, Unknown + } + + enc, left, err := detectUtf(rd) + return &Reader{ + rd: rd, + buf: left, + err: err, + }, enc +} + +// SkipOnly creates Reader which automatically detects BOM (Unicode Byte Order Mark) and removes it as necessary. +func SkipOnly(rd io.Reader) *Reader { + r, _ := Skip(rd) + return r +} + +// Reader implements automatic BOM (Unicode Byte Order Mark) checking and +// removing as necessary for an io.Reader object. +type Reader struct { + rd io.Reader // reader provided by the client + buf []byte // buffered data + err error // last error +} + +// Read is an implementation of io.Reader interface. +// The bytes are taken from the underlying Reader, but it checks for BOMs, removing them as necessary. +func (r *Reader) Read(p []byte) (n int, err error) { + if len(p) == 0 { + return 0, nil + } + + if r.buf == nil { + if r.err != nil { + return 0, r.readErr() + } + + return r.rd.Read(p) + } + + // copy as much as we can + n = copy(p, r.buf) + r.buf = nilIfEmpty(r.buf[n:]) + return n, nil +} + +func (r *Reader) readErr() error { + err := r.err + r.err = nil + return err +} + +var errNegativeRead = errors.New("utfbom: reader returned negative count from Read") + +func detectUtf(rd io.Reader) (enc Encoding, buf []byte, err error) { + buf, err = readBOM(rd) + + if len(buf) >= 4 { + if isUTF32BigEndianBOM4(buf) { + return UTF32BigEndian, nilIfEmpty(buf[4:]), err + } + if isUTF32LittleEndianBOM4(buf) { + return UTF32LittleEndian, nilIfEmpty(buf[4:]), err + } + } + + if len(buf) > 2 && isUTF8BOM3(buf) { + return UTF8, nilIfEmpty(buf[3:]), err + } + + if (err != nil && err != io.EOF) || (len(buf) < 2) { + return Unknown, nilIfEmpty(buf), err + } + + if isUTF16BigEndianBOM2(buf) { + return UTF16BigEndian, nilIfEmpty(buf[2:]), err + } + if isUTF16LittleEndianBOM2(buf) { + return UTF16LittleEndian, nilIfEmpty(buf[2:]), err + } + + return Unknown, nilIfEmpty(buf), err +} + +func readBOM(rd io.Reader) (buf []byte, err error) { + const maxBOMSize = 4 + var bom [maxBOMSize]byte // used to read BOM + + // read as many bytes as possible + for nEmpty, n := 0, 0; err == nil && len(buf) < maxBOMSize; buf = bom[:len(buf)+n] { + if n, err = rd.Read(bom[len(buf):]); n < 0 { + panic(errNegativeRead) + } + if n > 0 { + nEmpty = 0 + } else { + nEmpty++ + if nEmpty >= maxConsecutiveEmptyReads { + err = io.ErrNoProgress + } + } + } + return +} + +func isUTF32BigEndianBOM4(buf []byte) bool { + return buf[0] == 0x00 && buf[1] == 0x00 && buf[2] == 0xFE && buf[3] == 0xFF +} + +func isUTF32LittleEndianBOM4(buf []byte) bool { + return buf[0] == 0xFF && buf[1] == 0xFE && buf[2] == 0x00 && buf[3] == 0x00 +} + +func isUTF8BOM3(buf []byte) bool { + return buf[0] == 0xEF && buf[1] == 0xBB && buf[2] == 0xBF +} + +func isUTF16BigEndianBOM2(buf []byte) bool { + return buf[0] == 0xFE && buf[1] == 0xFF +} + +func isUTF16LittleEndianBOM2(buf []byte) bool { + return buf[0] == 0xFF && buf[1] == 0xFE +} + +func nilIfEmpty(buf []byte) (res []byte) { + if len(buf) > 0 { + res = buf + } + return +} diff --git a/vendor/github.com/gobwas/glob/.gitignore b/vendor/github.com/gobwas/glob/.gitignore new file mode 100644 index 0000000..b4ae623 --- /dev/null +++ b/vendor/github.com/gobwas/glob/.gitignore @@ -0,0 +1,8 @@ +glob.iml +.idea +*.cpu +*.mem +*.test +*.dot +*.png +*.svg diff --git a/vendor/github.com/gobwas/glob/.travis.yml b/vendor/github.com/gobwas/glob/.travis.yml new file mode 100644 index 0000000..e8a2768 --- /dev/null +++ b/vendor/github.com/gobwas/glob/.travis.yml @@ -0,0 +1,9 @@ +sudo: false + +language: go + +go: + - 1.5.3 + +script: + - go test -v ./... diff --git a/vendor/github.com/gobwas/glob/LICENSE b/vendor/github.com/gobwas/glob/LICENSE new file mode 100644 index 0000000..9d4735c --- /dev/null +++ b/vendor/github.com/gobwas/glob/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Sergey Kamardin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/vendor/github.com/gobwas/glob/bench.sh b/vendor/github.com/gobwas/glob/bench.sh new file mode 100644 index 0000000..804cf22 --- /dev/null +++ b/vendor/github.com/gobwas/glob/bench.sh @@ -0,0 +1,26 @@ +#! /bin/bash + +bench() { + filename="/tmp/$1-$2.bench" + if test -e "${filename}"; + then + echo "Already exists ${filename}" + else + backup=`git rev-parse --abbrev-ref HEAD` + git checkout $1 + echo -n "Creating ${filename}... " + go test ./... -run=NONE -bench=$2 > "${filename}" -benchmem + echo "OK" + git checkout ${backup} + sleep 5 + fi +} + + +to=$1 +current=`git rev-parse --abbrev-ref HEAD` + +bench ${to} $2 +bench ${current} $2 + +benchcmp $3 "/tmp/${to}-$2.bench" "/tmp/${current}-$2.bench" diff --git a/vendor/github.com/gobwas/glob/compiler/compiler.go b/vendor/github.com/gobwas/glob/compiler/compiler.go new file mode 100644 index 0000000..02e7de8 --- /dev/null +++ b/vendor/github.com/gobwas/glob/compiler/compiler.go @@ -0,0 +1,525 @@ +package compiler + +// TODO use constructor with all matchers, and to their structs private +// TODO glue multiple Text nodes (like after QuoteMeta) + +import ( + "fmt" + "reflect" + + "github.com/gobwas/glob/match" + "github.com/gobwas/glob/syntax/ast" + "github.com/gobwas/glob/util/runes" +) + +func optimizeMatcher(matcher match.Matcher) match.Matcher { + switch m := matcher.(type) { + + case match.Any: + if len(m.Separators) == 0 { + return match.NewSuper() + } + + case match.AnyOf: + if len(m.Matchers) == 1 { + return m.Matchers[0] + } + + return m + + case match.List: + if m.Not == false && len(m.List) == 1 { + return match.NewText(string(m.List)) + } + + return m + + case match.BTree: + m.Left = optimizeMatcher(m.Left) + m.Right = optimizeMatcher(m.Right) + + r, ok := m.Value.(match.Text) + if !ok { + return m + } + + var ( + leftNil = m.Left == nil + rightNil = m.Right == nil + ) + if leftNil && rightNil { + return match.NewText(r.Str) + } + + _, leftSuper := m.Left.(match.Super) + lp, leftPrefix := m.Left.(match.Prefix) + la, leftAny := m.Left.(match.Any) + + _, rightSuper := m.Right.(match.Super) + rs, rightSuffix := m.Right.(match.Suffix) + ra, rightAny := m.Right.(match.Any) + + switch { + case leftSuper && rightSuper: + return match.NewContains(r.Str, false) + + case leftSuper && rightNil: + return match.NewSuffix(r.Str) + + case rightSuper && leftNil: + return match.NewPrefix(r.Str) + + case leftNil && rightSuffix: + return match.NewPrefixSuffix(r.Str, rs.Suffix) + + case rightNil && leftPrefix: + return match.NewPrefixSuffix(lp.Prefix, r.Str) + + case rightNil && leftAny: + return match.NewSuffixAny(r.Str, la.Separators) + + case leftNil && rightAny: + return match.NewPrefixAny(r.Str, ra.Separators) + } + + return m + } + + return matcher +} + +func compileMatchers(matchers []match.Matcher) (match.Matcher, error) { + if len(matchers) == 0 { + return nil, fmt.Errorf("compile error: need at least one matcher") + } + if len(matchers) == 1 { + return matchers[0], nil + } + if m := glueMatchers(matchers); m != nil { + return m, nil + } + + idx := -1 + maxLen := -1 + var val match.Matcher + for i, matcher := range matchers { + if l := matcher.Len(); l != -1 && l >= maxLen { + maxLen = l + idx = i + val = matcher + } + } + + if val == nil { // not found matcher with static length + r, err := compileMatchers(matchers[1:]) + if err != nil { + return nil, err + } + return match.NewBTree(matchers[0], nil, r), nil + } + + left := matchers[:idx] + var right []match.Matcher + if len(matchers) > idx+1 { + right = matchers[idx+1:] + } + + var l, r match.Matcher + var err error + if len(left) > 0 { + l, err = compileMatchers(left) + if err != nil { + return nil, err + } + } + + if len(right) > 0 { + r, err = compileMatchers(right) + if err != nil { + return nil, err + } + } + + return match.NewBTree(val, l, r), nil +} + +func glueMatchers(matchers []match.Matcher) match.Matcher { + if m := glueMatchersAsEvery(matchers); m != nil { + return m + } + if m := glueMatchersAsRow(matchers); m != nil { + return m + } + return nil +} + +func glueMatchersAsRow(matchers []match.Matcher) match.Matcher { + if len(matchers) <= 1 { + return nil + } + + var ( + c []match.Matcher + l int + ) + for _, matcher := range matchers { + if ml := matcher.Len(); ml == -1 { + return nil + } else { + c = append(c, matcher) + l += ml + } + } + return match.NewRow(l, c...) +} + +func glueMatchersAsEvery(matchers []match.Matcher) match.Matcher { + if len(matchers) <= 1 { + return nil + } + + var ( + hasAny bool + hasSuper bool + hasSingle bool + min int + separator []rune + ) + + for i, matcher := range matchers { + var sep []rune + + switch m := matcher.(type) { + case match.Super: + sep = []rune{} + hasSuper = true + + case match.Any: + sep = m.Separators + hasAny = true + + case match.Single: + sep = m.Separators + hasSingle = true + min++ + + case match.List: + if !m.Not { + return nil + } + sep = m.List + hasSingle = true + min++ + + default: + return nil + } + + // initialize + if i == 0 { + separator = sep + } + + if runes.Equal(sep, separator) { + continue + } + + return nil + } + + if hasSuper && !hasAny && !hasSingle { + return match.NewSuper() + } + + if hasAny && !hasSuper && !hasSingle { + return match.NewAny(separator) + } + + if (hasAny || hasSuper) && min > 0 && len(separator) == 0 { + return match.NewMin(min) + } + + every := match.NewEveryOf() + + if min > 0 { + every.Add(match.NewMin(min)) + + if !hasAny && !hasSuper { + every.Add(match.NewMax(min)) + } + } + + if len(separator) > 0 { + every.Add(match.NewContains(string(separator), true)) + } + + return every +} + +func minimizeMatchers(matchers []match.Matcher) []match.Matcher { + var done match.Matcher + var left, right, count int + + for l := 0; l < len(matchers); l++ { + for r := len(matchers); r > l; r-- { + if glued := glueMatchers(matchers[l:r]); glued != nil { + var swap bool + + if done == nil { + swap = true + } else { + cl, gl := done.Len(), glued.Len() + swap = cl > -1 && gl > -1 && gl > cl + swap = swap || count < r-l + } + + if swap { + done = glued + left = l + right = r + count = r - l + } + } + } + } + + if done == nil { + return matchers + } + + next := append(append([]match.Matcher{}, matchers[:left]...), done) + if right < len(matchers) { + next = append(next, matchers[right:]...) + } + + if len(next) == len(matchers) { + return next + } + + return minimizeMatchers(next) +} + +// minimizeAnyOf tries to apply some heuristics to minimize number of nodes in given tree +func minimizeTree(tree *ast.Node) *ast.Node { + switch tree.Kind { + case ast.KindAnyOf: + return minimizeTreeAnyOf(tree) + default: + return nil + } +} + +// minimizeAnyOf tries to find common children of given node of AnyOf pattern +// it searches for common children from left and from right +// if any common children are found – then it returns new optimized ast tree +// else it returns nil +func minimizeTreeAnyOf(tree *ast.Node) *ast.Node { + if !areOfSameKind(tree.Children, ast.KindPattern) { + return nil + } + + commonLeft, commonRight := commonChildren(tree.Children) + commonLeftCount, commonRightCount := len(commonLeft), len(commonRight) + if commonLeftCount == 0 && commonRightCount == 0 { // there are no common parts + return nil + } + + var result []*ast.Node + if commonLeftCount > 0 { + result = append(result, ast.NewNode(ast.KindPattern, nil, commonLeft...)) + } + + var anyOf []*ast.Node + for _, child := range tree.Children { + reuse := child.Children[commonLeftCount : len(child.Children)-commonRightCount] + var node *ast.Node + if len(reuse) == 0 { + // this pattern is completely reduced by commonLeft and commonRight patterns + // so it become nothing + node = ast.NewNode(ast.KindNothing, nil) + } else { + node = ast.NewNode(ast.KindPattern, nil, reuse...) + } + anyOf = appendIfUnique(anyOf, node) + } + switch { + case len(anyOf) == 1 && anyOf[0].Kind != ast.KindNothing: + result = append(result, anyOf[0]) + case len(anyOf) > 1: + result = append(result, ast.NewNode(ast.KindAnyOf, nil, anyOf...)) + } + + if commonRightCount > 0 { + result = append(result, ast.NewNode(ast.KindPattern, nil, commonRight...)) + } + + return ast.NewNode(ast.KindPattern, nil, result...) +} + +func commonChildren(nodes []*ast.Node) (commonLeft, commonRight []*ast.Node) { + if len(nodes) <= 1 { + return + } + + // find node that has least number of children + idx := leastChildren(nodes) + if idx == -1 { + return + } + tree := nodes[idx] + treeLength := len(tree.Children) + + // allocate max able size for rightCommon slice + // to get ability insert elements in reverse order (from end to start) + // without sorting + commonRight = make([]*ast.Node, treeLength) + lastRight := treeLength // will use this to get results as commonRight[lastRight:] + + var ( + breakLeft bool + breakRight bool + commonTotal int + ) + for i, j := 0, treeLength-1; commonTotal < treeLength && j >= 0 && !(breakLeft && breakRight); i, j = i+1, j-1 { + treeLeft := tree.Children[i] + treeRight := tree.Children[j] + + for k := 0; k < len(nodes) && !(breakLeft && breakRight); k++ { + // skip least children node + if k == idx { + continue + } + + restLeft := nodes[k].Children[i] + restRight := nodes[k].Children[j+len(nodes[k].Children)-treeLength] + + breakLeft = breakLeft || !treeLeft.Equal(restLeft) + + // disable searching for right common parts, if left part is already overlapping + breakRight = breakRight || (!breakLeft && j <= i) + breakRight = breakRight || !treeRight.Equal(restRight) + } + + if !breakLeft { + commonTotal++ + commonLeft = append(commonLeft, treeLeft) + } + if !breakRight { + commonTotal++ + lastRight = j + commonRight[j] = treeRight + } + } + + commonRight = commonRight[lastRight:] + + return +} + +func appendIfUnique(target []*ast.Node, val *ast.Node) []*ast.Node { + for _, n := range target { + if reflect.DeepEqual(n, val) { + return target + } + } + return append(target, val) +} + +func areOfSameKind(nodes []*ast.Node, kind ast.Kind) bool { + for _, n := range nodes { + if n.Kind != kind { + return false + } + } + return true +} + +func leastChildren(nodes []*ast.Node) int { + min := -1 + idx := -1 + for i, n := range nodes { + if idx == -1 || (len(n.Children) < min) { + min = len(n.Children) + idx = i + } + } + return idx +} + +func compileTreeChildren(tree *ast.Node, sep []rune) ([]match.Matcher, error) { + var matchers []match.Matcher + for _, desc := range tree.Children { + m, err := compile(desc, sep) + if err != nil { + return nil, err + } + matchers = append(matchers, optimizeMatcher(m)) + } + return matchers, nil +} + +func compile(tree *ast.Node, sep []rune) (m match.Matcher, err error) { + switch tree.Kind { + case ast.KindAnyOf: + // todo this could be faster on pattern_alternatives_combine_lite (see glob_test.go) + if n := minimizeTree(tree); n != nil { + return compile(n, sep) + } + matchers, err := compileTreeChildren(tree, sep) + if err != nil { + return nil, err + } + return match.NewAnyOf(matchers...), nil + + case ast.KindPattern: + if len(tree.Children) == 0 { + return match.NewNothing(), nil + } + matchers, err := compileTreeChildren(tree, sep) + if err != nil { + return nil, err + } + m, err = compileMatchers(minimizeMatchers(matchers)) + if err != nil { + return nil, err + } + + case ast.KindAny: + m = match.NewAny(sep) + + case ast.KindSuper: + m = match.NewSuper() + + case ast.KindSingle: + m = match.NewSingle(sep) + + case ast.KindNothing: + m = match.NewNothing() + + case ast.KindList: + l := tree.Value.(ast.List) + m = match.NewList([]rune(l.Chars), l.Not) + + case ast.KindRange: + r := tree.Value.(ast.Range) + m = match.NewRange(r.Lo, r.Hi, r.Not) + + case ast.KindText: + t := tree.Value.(ast.Text) + m = match.NewText(t.Text) + + default: + return nil, fmt.Errorf("could not compile tree: unknown node type") + } + + return optimizeMatcher(m), nil +} + +func Compile(tree *ast.Node, sep []rune) (match.Matcher, error) { + m, err := compile(tree, sep) + if err != nil { + return nil, err + } + + return m, nil +} diff --git a/vendor/github.com/gobwas/glob/glob.go b/vendor/github.com/gobwas/glob/glob.go new file mode 100644 index 0000000..2afde34 --- /dev/null +++ b/vendor/github.com/gobwas/glob/glob.go @@ -0,0 +1,80 @@ +package glob + +import ( + "github.com/gobwas/glob/compiler" + "github.com/gobwas/glob/syntax" +) + +// Glob represents compiled glob pattern. +type Glob interface { + Match(string) bool +} + +// Compile creates Glob for given pattern and strings (if any present after pattern) as separators. +// The pattern syntax is: +// +// pattern: +// { term } +// +// term: +// `*` matches any sequence of non-separator characters +// `**` matches any sequence of characters +// `?` matches any single non-separator character +// `[` [ `!` ] { character-range } `]` +// character class (must be non-empty) +// `{` pattern-list `}` +// pattern alternatives +// c matches character c (c != `*`, `**`, `?`, `\`, `[`, `{`, `}`) +// `\` c matches character c +// +// character-range: +// c matches character c (c != `\\`, `-`, `]`) +// `\` c matches character c +// lo `-` hi matches character c for lo <= c <= hi +// +// pattern-list: +// pattern { `,` pattern } +// comma-separated (without spaces) patterns +// +func Compile(pattern string, separators ...rune) (Glob, error) { + ast, err := syntax.Parse(pattern) + if err != nil { + return nil, err + } + + matcher, err := compiler.Compile(ast, separators) + if err != nil { + return nil, err + } + + return matcher, nil +} + +// MustCompile is the same as Compile, except that if Compile returns error, this will panic +func MustCompile(pattern string, separators ...rune) Glob { + g, err := Compile(pattern, separators...) + if err != nil { + panic(err) + } + + return g +} + +// QuoteMeta returns a string that quotes all glob pattern meta characters +// inside the argument text; For example, QuoteMeta(`{foo*}`) returns `\[foo\*\]`. +func QuoteMeta(s string) string { + b := make([]byte, 2*len(s)) + + // a byte loop is correct because all meta characters are ASCII + j := 0 + for i := 0; i < len(s); i++ { + if syntax.Special(s[i]) { + b[j] = '\\' + j++ + } + b[j] = s[i] + j++ + } + + return string(b[0:j]) +} diff --git a/vendor/github.com/gobwas/glob/match/any.go b/vendor/github.com/gobwas/glob/match/any.go new file mode 100644 index 0000000..514a9a5 --- /dev/null +++ b/vendor/github.com/gobwas/glob/match/any.go @@ -0,0 +1,45 @@ +package match + +import ( + "fmt" + "github.com/gobwas/glob/util/strings" +) + +type Any struct { + Separators []rune +} + +func NewAny(s []rune) Any { + return Any{s} +} + +func (self Any) Match(s string) bool { + return strings.IndexAnyRunes(s, self.Separators) == -1 +} + +func (self Any) Index(s string) (int, []int) { + found := strings.IndexAnyRunes(s, self.Separators) + switch found { + case -1: + case 0: + return 0, segments0 + default: + s = s[:found] + } + + segments := acquireSegments(len(s)) + for i := range s { + segments = append(segments, i) + } + segments = append(segments, len(s)) + + return 0, segments +} + +func (self Any) Len() int { + return lenNo +} + +func (self Any) String() string { + return fmt.Sprintf("", string(self.Separators)) +} diff --git a/vendor/github.com/gobwas/glob/match/any_of.go b/vendor/github.com/gobwas/glob/match/any_of.go new file mode 100644 index 0000000..8e65356 --- /dev/null +++ b/vendor/github.com/gobwas/glob/match/any_of.go @@ -0,0 +1,82 @@ +package match + +import "fmt" + +type AnyOf struct { + Matchers Matchers +} + +func NewAnyOf(m ...Matcher) AnyOf { + return AnyOf{Matchers(m)} +} + +func (self *AnyOf) Add(m Matcher) error { + self.Matchers = append(self.Matchers, m) + return nil +} + +func (self AnyOf) Match(s string) bool { + for _, m := range self.Matchers { + if m.Match(s) { + return true + } + } + + return false +} + +func (self AnyOf) Index(s string) (int, []int) { + index := -1 + + segments := acquireSegments(len(s)) + for _, m := range self.Matchers { + idx, seg := m.Index(s) + if idx == -1 { + continue + } + + if index == -1 || idx < index { + index = idx + segments = append(segments[:0], seg...) + continue + } + + if idx > index { + continue + } + + // here idx == index + segments = appendMerge(segments, seg) + } + + if index == -1 { + releaseSegments(segments) + return -1, nil + } + + return index, segments +} + +func (self AnyOf) Len() (l int) { + l = -1 + for _, m := range self.Matchers { + ml := m.Len() + switch { + case l == -1: + l = ml + continue + + case ml == -1: + return -1 + + case l != ml: + return -1 + } + } + + return +} + +func (self AnyOf) String() string { + return fmt.Sprintf("", self.Matchers) +} diff --git a/vendor/github.com/gobwas/glob/match/btree.go b/vendor/github.com/gobwas/glob/match/btree.go new file mode 100644 index 0000000..a8130e9 --- /dev/null +++ b/vendor/github.com/gobwas/glob/match/btree.go @@ -0,0 +1,146 @@ +package match + +import ( + "fmt" + "unicode/utf8" +) + +type BTree struct { + Value Matcher + Left Matcher + Right Matcher + ValueLengthRunes int + LeftLengthRunes int + RightLengthRunes int + LengthRunes int +} + +func NewBTree(Value, Left, Right Matcher) (tree BTree) { + tree.Value = Value + tree.Left = Left + tree.Right = Right + + lenOk := true + if tree.ValueLengthRunes = Value.Len(); tree.ValueLengthRunes == -1 { + lenOk = false + } + + if Left != nil { + if tree.LeftLengthRunes = Left.Len(); tree.LeftLengthRunes == -1 { + lenOk = false + } + } + + if Right != nil { + if tree.RightLengthRunes = Right.Len(); tree.RightLengthRunes == -1 { + lenOk = false + } + } + + if lenOk { + tree.LengthRunes = tree.LeftLengthRunes + tree.ValueLengthRunes + tree.RightLengthRunes + } else { + tree.LengthRunes = -1 + } + + return tree +} + +func (self BTree) Len() int { + return self.LengthRunes +} + +// todo? +func (self BTree) Index(s string) (int, []int) { + return -1, nil +} + +func (self BTree) Match(s string) bool { + inputLen := len(s) + + // self.Length, self.RLen and self.LLen are values meaning the length of runes for each part + // here we manipulating byte length for better optimizations + // but these checks still works, cause minLen of 1-rune string is 1 byte. + if self.LengthRunes != -1 && self.LengthRunes > inputLen { + return false + } + + // try to cut unnecessary parts + // by knowledge of length of right and left part + var offset, limit int + if self.LeftLengthRunes >= 0 { + offset = self.LeftLengthRunes + } + if self.RightLengthRunes >= 0 { + limit = inputLen - self.RightLengthRunes + } else { + limit = inputLen + } + + for offset < limit { + // search for matching part in substring + index, segments := self.Value.Index(s[offset:limit]) + if index == -1 { + releaseSegments(segments) + return false + } + + l := s[:offset+index] + var left bool + if self.Left != nil { + left = self.Left.Match(l) + } else { + left = l == "" + } + + if left { + for i := len(segments) - 1; i >= 0; i-- { + length := segments[i] + + var right bool + var r string + // if there is no string for the right branch + if inputLen <= offset+index+length { + r = "" + } else { + r = s[offset+index+length:] + } + + if self.Right != nil { + right = self.Right.Match(r) + } else { + right = r == "" + } + + if right { + releaseSegments(segments) + return true + } + } + } + + _, step := utf8.DecodeRuneInString(s[offset+index:]) + offset += index + step + + releaseSegments(segments) + } + + return false +} + +func (self BTree) String() string { + const n string = "" + var l, r string + if self.Left == nil { + l = n + } else { + l = self.Left.String() + } + if self.Right == nil { + r = n + } else { + r = self.Right.String() + } + + return fmt.Sprintf("%s]>", l, self.Value, r) +} diff --git a/vendor/github.com/gobwas/glob/match/contains.go b/vendor/github.com/gobwas/glob/match/contains.go new file mode 100644 index 0000000..0998e95 --- /dev/null +++ b/vendor/github.com/gobwas/glob/match/contains.go @@ -0,0 +1,58 @@ +package match + +import ( + "fmt" + "strings" +) + +type Contains struct { + Needle string + Not bool +} + +func NewContains(needle string, not bool) Contains { + return Contains{needle, not} +} + +func (self Contains) Match(s string) bool { + return strings.Contains(s, self.Needle) != self.Not +} + +func (self Contains) Index(s string) (int, []int) { + var offset int + + idx := strings.Index(s, self.Needle) + + if !self.Not { + if idx == -1 { + return -1, nil + } + + offset = idx + len(self.Needle) + if len(s) <= offset { + return 0, []int{offset} + } + s = s[offset:] + } else if idx != -1 { + s = s[:idx] + } + + segments := acquireSegments(len(s) + 1) + for i := range s { + segments = append(segments, offset+i) + } + + return 0, append(segments, offset+len(s)) +} + +func (self Contains) Len() int { + return lenNo +} + +func (self Contains) String() string { + var not string + if self.Not { + not = "!" + } + return fmt.Sprintf("", not, self.Needle) +} diff --git a/vendor/github.com/gobwas/glob/match/every_of.go b/vendor/github.com/gobwas/glob/match/every_of.go new file mode 100644 index 0000000..7c968ee --- /dev/null +++ b/vendor/github.com/gobwas/glob/match/every_of.go @@ -0,0 +1,99 @@ +package match + +import ( + "fmt" +) + +type EveryOf struct { + Matchers Matchers +} + +func NewEveryOf(m ...Matcher) EveryOf { + return EveryOf{Matchers(m)} +} + +func (self *EveryOf) Add(m Matcher) error { + self.Matchers = append(self.Matchers, m) + return nil +} + +func (self EveryOf) Len() (l int) { + for _, m := range self.Matchers { + if ml := m.Len(); l > 0 { + l += ml + } else { + return -1 + } + } + + return +} + +func (self EveryOf) Index(s string) (int, []int) { + var index int + var offset int + + // make `in` with cap as len(s), + // cause it is the maximum size of output segments values + next := acquireSegments(len(s)) + current := acquireSegments(len(s)) + + sub := s + for i, m := range self.Matchers { + idx, seg := m.Index(sub) + if idx == -1 { + releaseSegments(next) + releaseSegments(current) + return -1, nil + } + + if i == 0 { + // we use copy here instead of `current = seg` + // cause seg is a slice from reusable buffer `in` + // and it could be overwritten in next iteration + current = append(current, seg...) + } else { + // clear the next + next = next[:0] + + delta := index - (idx + offset) + for _, ex := range current { + for _, n := range seg { + if ex+delta == n { + next = append(next, n) + } + } + } + + if len(next) == 0 { + releaseSegments(next) + releaseSegments(current) + return -1, nil + } + + current = append(current[:0], next...) + } + + index = idx + offset + sub = s[index:] + offset += idx + } + + releaseSegments(next) + + return index, current +} + +func (self EveryOf) Match(s string) bool { + for _, m := range self.Matchers { + if !m.Match(s) { + return false + } + } + + return true +} + +func (self EveryOf) String() string { + return fmt.Sprintf("", self.Matchers) +} diff --git a/vendor/github.com/gobwas/glob/match/list.go b/vendor/github.com/gobwas/glob/match/list.go new file mode 100644 index 0000000..7fd763e --- /dev/null +++ b/vendor/github.com/gobwas/glob/match/list.go @@ -0,0 +1,49 @@ +package match + +import ( + "fmt" + "github.com/gobwas/glob/util/runes" + "unicode/utf8" +) + +type List struct { + List []rune + Not bool +} + +func NewList(list []rune, not bool) List { + return List{list, not} +} + +func (self List) Match(s string) bool { + r, w := utf8.DecodeRuneInString(s) + if len(s) > w { + return false + } + + inList := runes.IndexRune(self.List, r) != -1 + return inList == !self.Not +} + +func (self List) Len() int { + return lenOne +} + +func (self List) Index(s string) (int, []int) { + for i, r := range s { + if self.Not == (runes.IndexRune(self.List, r) == -1) { + return i, segmentsByRuneLength[utf8.RuneLen(r)] + } + } + + return -1, nil +} + +func (self List) String() string { + var not string + if self.Not { + not = "!" + } + + return fmt.Sprintf("", not, string(self.List)) +} diff --git a/vendor/github.com/gobwas/glob/match/match.go b/vendor/github.com/gobwas/glob/match/match.go new file mode 100644 index 0000000..f80e007 --- /dev/null +++ b/vendor/github.com/gobwas/glob/match/match.go @@ -0,0 +1,81 @@ +package match + +// todo common table of rune's length + +import ( + "fmt" + "strings" +) + +const lenOne = 1 +const lenZero = 0 +const lenNo = -1 + +type Matcher interface { + Match(string) bool + Index(string) (int, []int) + Len() int + String() string +} + +type Matchers []Matcher + +func (m Matchers) String() string { + var s []string + for _, matcher := range m { + s = append(s, fmt.Sprint(matcher)) + } + + return fmt.Sprintf("%s", strings.Join(s, ",")) +} + +// appendMerge merges and sorts given already SORTED and UNIQUE segments. +func appendMerge(target, sub []int) []int { + lt, ls := len(target), len(sub) + out := make([]int, 0, lt+ls) + + for x, y := 0, 0; x < lt || y < ls; { + if x >= lt { + out = append(out, sub[y:]...) + break + } + + if y >= ls { + out = append(out, target[x:]...) + break + } + + xValue := target[x] + yValue := sub[y] + + switch { + + case xValue == yValue: + out = append(out, xValue) + x++ + y++ + + case xValue < yValue: + out = append(out, xValue) + x++ + + case yValue < xValue: + out = append(out, yValue) + y++ + + } + } + + target = append(target[:0], out...) + + return target +} + +func reverseSegments(input []int) { + l := len(input) + m := l / 2 + + for i := 0; i < m; i++ { + input[i], input[l-i-1] = input[l-i-1], input[i] + } +} diff --git a/vendor/github.com/gobwas/glob/match/max.go b/vendor/github.com/gobwas/glob/match/max.go new file mode 100644 index 0000000..d72f69e --- /dev/null +++ b/vendor/github.com/gobwas/glob/match/max.go @@ -0,0 +1,49 @@ +package match + +import ( + "fmt" + "unicode/utf8" +) + +type Max struct { + Limit int +} + +func NewMax(l int) Max { + return Max{l} +} + +func (self Max) Match(s string) bool { + var l int + for range s { + l += 1 + if l > self.Limit { + return false + } + } + + return true +} + +func (self Max) Index(s string) (int, []int) { + segments := acquireSegments(self.Limit + 1) + segments = append(segments, 0) + var count int + for i, r := range s { + count++ + if count > self.Limit { + break + } + segments = append(segments, i+utf8.RuneLen(r)) + } + + return 0, segments +} + +func (self Max) Len() int { + return lenNo +} + +func (self Max) String() string { + return fmt.Sprintf("", self.Limit) +} diff --git a/vendor/github.com/gobwas/glob/match/min.go b/vendor/github.com/gobwas/glob/match/min.go new file mode 100644 index 0000000..db57ac8 --- /dev/null +++ b/vendor/github.com/gobwas/glob/match/min.go @@ -0,0 +1,57 @@ +package match + +import ( + "fmt" + "unicode/utf8" +) + +type Min struct { + Limit int +} + +func NewMin(l int) Min { + return Min{l} +} + +func (self Min) Match(s string) bool { + var l int + for range s { + l += 1 + if l >= self.Limit { + return true + } + } + + return false +} + +func (self Min) Index(s string) (int, []int) { + var count int + + c := len(s) - self.Limit + 1 + if c <= 0 { + return -1, nil + } + + segments := acquireSegments(c) + for i, r := range s { + count++ + if count >= self.Limit { + segments = append(segments, i+utf8.RuneLen(r)) + } + } + + if len(segments) == 0 { + return -1, nil + } + + return 0, segments +} + +func (self Min) Len() int { + return lenNo +} + +func (self Min) String() string { + return fmt.Sprintf("", self.Limit) +} diff --git a/vendor/github.com/gobwas/glob/match/nothing.go b/vendor/github.com/gobwas/glob/match/nothing.go new file mode 100644 index 0000000..0d4ecd3 --- /dev/null +++ b/vendor/github.com/gobwas/glob/match/nothing.go @@ -0,0 +1,27 @@ +package match + +import ( + "fmt" +) + +type Nothing struct{} + +func NewNothing() Nothing { + return Nothing{} +} + +func (self Nothing) Match(s string) bool { + return len(s) == 0 +} + +func (self Nothing) Index(s string) (int, []int) { + return 0, segments0 +} + +func (self Nothing) Len() int { + return lenZero +} + +func (self Nothing) String() string { + return fmt.Sprintf("") +} diff --git a/vendor/github.com/gobwas/glob/match/prefix.go b/vendor/github.com/gobwas/glob/match/prefix.go new file mode 100644 index 0000000..a734725 --- /dev/null +++ b/vendor/github.com/gobwas/glob/match/prefix.go @@ -0,0 +1,50 @@ +package match + +import ( + "fmt" + "strings" + "unicode/utf8" +) + +type Prefix struct { + Prefix string +} + +func NewPrefix(p string) Prefix { + return Prefix{p} +} + +func (self Prefix) Index(s string) (int, []int) { + idx := strings.Index(s, self.Prefix) + if idx == -1 { + return -1, nil + } + + length := len(self.Prefix) + var sub string + if len(s) > idx+length { + sub = s[idx+length:] + } else { + sub = "" + } + + segments := acquireSegments(len(sub) + 1) + segments = append(segments, length) + for i, r := range sub { + segments = append(segments, length+i+utf8.RuneLen(r)) + } + + return idx, segments +} + +func (self Prefix) Len() int { + return lenNo +} + +func (self Prefix) Match(s string) bool { + return strings.HasPrefix(s, self.Prefix) +} + +func (self Prefix) String() string { + return fmt.Sprintf("", self.Prefix) +} diff --git a/vendor/github.com/gobwas/glob/match/prefix_any.go b/vendor/github.com/gobwas/glob/match/prefix_any.go new file mode 100644 index 0000000..8ee58fe --- /dev/null +++ b/vendor/github.com/gobwas/glob/match/prefix_any.go @@ -0,0 +1,55 @@ +package match + +import ( + "fmt" + "strings" + "unicode/utf8" + + sutil "github.com/gobwas/glob/util/strings" +) + +type PrefixAny struct { + Prefix string + Separators []rune +} + +func NewPrefixAny(s string, sep []rune) PrefixAny { + return PrefixAny{s, sep} +} + +func (self PrefixAny) Index(s string) (int, []int) { + idx := strings.Index(s, self.Prefix) + if idx == -1 { + return -1, nil + } + + n := len(self.Prefix) + sub := s[idx+n:] + i := sutil.IndexAnyRunes(sub, self.Separators) + if i > -1 { + sub = sub[:i] + } + + seg := acquireSegments(len(sub) + 1) + seg = append(seg, n) + for i, r := range sub { + seg = append(seg, n+i+utf8.RuneLen(r)) + } + + return idx, seg +} + +func (self PrefixAny) Len() int { + return lenNo +} + +func (self PrefixAny) Match(s string) bool { + if !strings.HasPrefix(s, self.Prefix) { + return false + } + return sutil.IndexAnyRunes(s[len(self.Prefix):], self.Separators) == -1 +} + +func (self PrefixAny) String() string { + return fmt.Sprintf("", self.Prefix, string(self.Separators)) +} diff --git a/vendor/github.com/gobwas/glob/match/prefix_suffix.go b/vendor/github.com/gobwas/glob/match/prefix_suffix.go new file mode 100644 index 0000000..8208085 --- /dev/null +++ b/vendor/github.com/gobwas/glob/match/prefix_suffix.go @@ -0,0 +1,62 @@ +package match + +import ( + "fmt" + "strings" +) + +type PrefixSuffix struct { + Prefix, Suffix string +} + +func NewPrefixSuffix(p, s string) PrefixSuffix { + return PrefixSuffix{p, s} +} + +func (self PrefixSuffix) Index(s string) (int, []int) { + prefixIdx := strings.Index(s, self.Prefix) + if prefixIdx == -1 { + return -1, nil + } + + suffixLen := len(self.Suffix) + if suffixLen <= 0 { + return prefixIdx, []int{len(s) - prefixIdx} + } + + if (len(s) - prefixIdx) <= 0 { + return -1, nil + } + + segments := acquireSegments(len(s) - prefixIdx) + for sub := s[prefixIdx:]; ; { + suffixIdx := strings.LastIndex(sub, self.Suffix) + if suffixIdx == -1 { + break + } + + segments = append(segments, suffixIdx+suffixLen) + sub = sub[:suffixIdx] + } + + if len(segments) == 0 { + releaseSegments(segments) + return -1, nil + } + + reverseSegments(segments) + + return prefixIdx, segments +} + +func (self PrefixSuffix) Len() int { + return lenNo +} + +func (self PrefixSuffix) Match(s string) bool { + return strings.HasPrefix(s, self.Prefix) && strings.HasSuffix(s, self.Suffix) +} + +func (self PrefixSuffix) String() string { + return fmt.Sprintf("", self.Prefix, self.Suffix) +} diff --git a/vendor/github.com/gobwas/glob/match/range.go b/vendor/github.com/gobwas/glob/match/range.go new file mode 100644 index 0000000..ce30245 --- /dev/null +++ b/vendor/github.com/gobwas/glob/match/range.go @@ -0,0 +1,48 @@ +package match + +import ( + "fmt" + "unicode/utf8" +) + +type Range struct { + Lo, Hi rune + Not bool +} + +func NewRange(lo, hi rune, not bool) Range { + return Range{lo, hi, not} +} + +func (self Range) Len() int { + return lenOne +} + +func (self Range) Match(s string) bool { + r, w := utf8.DecodeRuneInString(s) + if len(s) > w { + return false + } + + inRange := r >= self.Lo && r <= self.Hi + + return inRange == !self.Not +} + +func (self Range) Index(s string) (int, []int) { + for i, r := range s { + if self.Not != (r >= self.Lo && r <= self.Hi) { + return i, segmentsByRuneLength[utf8.RuneLen(r)] + } + } + + return -1, nil +} + +func (self Range) String() string { + var not string + if self.Not { + not = "!" + } + return fmt.Sprintf("", not, string(self.Lo), string(self.Hi)) +} diff --git a/vendor/github.com/gobwas/glob/match/row.go b/vendor/github.com/gobwas/glob/match/row.go new file mode 100644 index 0000000..4379042 --- /dev/null +++ b/vendor/github.com/gobwas/glob/match/row.go @@ -0,0 +1,77 @@ +package match + +import ( + "fmt" +) + +type Row struct { + Matchers Matchers + RunesLength int + Segments []int +} + +func NewRow(len int, m ...Matcher) Row { + return Row{ + Matchers: Matchers(m), + RunesLength: len, + Segments: []int{len}, + } +} + +func (self Row) matchAll(s string) bool { + var idx int + for _, m := range self.Matchers { + length := m.Len() + + var next, i int + for next = range s[idx:] { + i++ + if i == length { + break + } + } + + if i < length || !m.Match(s[idx:idx+next+1]) { + return false + } + + idx += next + 1 + } + + return true +} + +func (self Row) lenOk(s string) bool { + var i int + for range s { + i++ + if i > self.RunesLength { + return false + } + } + return self.RunesLength == i +} + +func (self Row) Match(s string) bool { + return self.lenOk(s) && self.matchAll(s) +} + +func (self Row) Len() (l int) { + return self.RunesLength +} + +func (self Row) Index(s string) (int, []int) { + for i := range s { + if len(s[i:]) < self.RunesLength { + break + } + if self.matchAll(s[i:]) { + return i, self.Segments + } + } + return -1, nil +} + +func (self Row) String() string { + return fmt.Sprintf("", self.RunesLength, self.Matchers) +} diff --git a/vendor/github.com/gobwas/glob/match/segments.go b/vendor/github.com/gobwas/glob/match/segments.go new file mode 100644 index 0000000..9ea6f30 --- /dev/null +++ b/vendor/github.com/gobwas/glob/match/segments.go @@ -0,0 +1,91 @@ +package match + +import ( + "sync" +) + +type SomePool interface { + Get() []int + Put([]int) +} + +var segmentsPools [1024]sync.Pool + +func toPowerOfTwo(v int) int { + v-- + v |= v >> 1 + v |= v >> 2 + v |= v >> 4 + v |= v >> 8 + v |= v >> 16 + v++ + + return v +} + +const ( + cacheFrom = 16 + cacheToAndHigher = 1024 + cacheFromIndex = 15 + cacheToAndHigherIndex = 1023 +) + +var ( + segments0 = []int{0} + segments1 = []int{1} + segments2 = []int{2} + segments3 = []int{3} + segments4 = []int{4} +) + +var segmentsByRuneLength [5][]int = [5][]int{ + 0: segments0, + 1: segments1, + 2: segments2, + 3: segments3, + 4: segments4, +} + +func init() { + for i := cacheToAndHigher; i >= cacheFrom; i >>= 1 { + func(i int) { + segmentsPools[i-1] = sync.Pool{New: func() interface{} { + return make([]int, 0, i) + }} + }(i) + } +} + +func getTableIndex(c int) int { + p := toPowerOfTwo(c) + switch { + case p >= cacheToAndHigher: + return cacheToAndHigherIndex + case p <= cacheFrom: + return cacheFromIndex + default: + return p - 1 + } +} + +func acquireSegments(c int) []int { + // make []int with less capacity than cacheFrom + // is faster than acquiring it from pool + if c < cacheFrom { + return make([]int, 0, c) + } + + return segmentsPools[getTableIndex(c)].Get().([]int)[:0] +} + +func releaseSegments(s []int) { + c := cap(s) + + // make []int with less capacity than cacheFrom + // is faster than acquiring it from pool + if c < cacheFrom { + return + } + + segmentsPools[getTableIndex(c)].Put(s) +} diff --git a/vendor/github.com/gobwas/glob/match/single.go b/vendor/github.com/gobwas/glob/match/single.go new file mode 100644 index 0000000..ee6e395 --- /dev/null +++ b/vendor/github.com/gobwas/glob/match/single.go @@ -0,0 +1,43 @@ +package match + +import ( + "fmt" + "github.com/gobwas/glob/util/runes" + "unicode/utf8" +) + +// single represents ? +type Single struct { + Separators []rune +} + +func NewSingle(s []rune) Single { + return Single{s} +} + +func (self Single) Match(s string) bool { + r, w := utf8.DecodeRuneInString(s) + if len(s) > w { + return false + } + + return runes.IndexRune(self.Separators, r) == -1 +} + +func (self Single) Len() int { + return lenOne +} + +func (self Single) Index(s string) (int, []int) { + for i, r := range s { + if runes.IndexRune(self.Separators, r) == -1 { + return i, segmentsByRuneLength[utf8.RuneLen(r)] + } + } + + return -1, nil +} + +func (self Single) String() string { + return fmt.Sprintf("", string(self.Separators)) +} diff --git a/vendor/github.com/gobwas/glob/match/suffix.go b/vendor/github.com/gobwas/glob/match/suffix.go new file mode 100644 index 0000000..85bea8c --- /dev/null +++ b/vendor/github.com/gobwas/glob/match/suffix.go @@ -0,0 +1,35 @@ +package match + +import ( + "fmt" + "strings" +) + +type Suffix struct { + Suffix string +} + +func NewSuffix(s string) Suffix { + return Suffix{s} +} + +func (self Suffix) Len() int { + return lenNo +} + +func (self Suffix) Match(s string) bool { + return strings.HasSuffix(s, self.Suffix) +} + +func (self Suffix) Index(s string) (int, []int) { + idx := strings.Index(s, self.Suffix) + if idx == -1 { + return -1, nil + } + + return 0, []int{idx + len(self.Suffix)} +} + +func (self Suffix) String() string { + return fmt.Sprintf("", self.Suffix) +} diff --git a/vendor/github.com/gobwas/glob/match/suffix_any.go b/vendor/github.com/gobwas/glob/match/suffix_any.go new file mode 100644 index 0000000..c5106f8 --- /dev/null +++ b/vendor/github.com/gobwas/glob/match/suffix_any.go @@ -0,0 +1,43 @@ +package match + +import ( + "fmt" + "strings" + + sutil "github.com/gobwas/glob/util/strings" +) + +type SuffixAny struct { + Suffix string + Separators []rune +} + +func NewSuffixAny(s string, sep []rune) SuffixAny { + return SuffixAny{s, sep} +} + +func (self SuffixAny) Index(s string) (int, []int) { + idx := strings.Index(s, self.Suffix) + if idx == -1 { + return -1, nil + } + + i := sutil.LastIndexAnyRunes(s[:idx], self.Separators) + 1 + + return i, []int{idx + len(self.Suffix) - i} +} + +func (self SuffixAny) Len() int { + return lenNo +} + +func (self SuffixAny) Match(s string) bool { + if !strings.HasSuffix(s, self.Suffix) { + return false + } + return sutil.IndexAnyRunes(s[:len(s)-len(self.Suffix)], self.Separators) == -1 +} + +func (self SuffixAny) String() string { + return fmt.Sprintf("", string(self.Separators), self.Suffix) +} diff --git a/vendor/github.com/gobwas/glob/match/super.go b/vendor/github.com/gobwas/glob/match/super.go new file mode 100644 index 0000000..3875950 --- /dev/null +++ b/vendor/github.com/gobwas/glob/match/super.go @@ -0,0 +1,33 @@ +package match + +import ( + "fmt" +) + +type Super struct{} + +func NewSuper() Super { + return Super{} +} + +func (self Super) Match(s string) bool { + return true +} + +func (self Super) Len() int { + return lenNo +} + +func (self Super) Index(s string) (int, []int) { + segments := acquireSegments(len(s) + 1) + for i := range s { + segments = append(segments, i) + } + segments = append(segments, len(s)) + + return 0, segments +} + +func (self Super) String() string { + return fmt.Sprintf("") +} diff --git a/vendor/github.com/gobwas/glob/match/text.go b/vendor/github.com/gobwas/glob/match/text.go new file mode 100644 index 0000000..0a17616 --- /dev/null +++ b/vendor/github.com/gobwas/glob/match/text.go @@ -0,0 +1,45 @@ +package match + +import ( + "fmt" + "strings" + "unicode/utf8" +) + +// raw represents raw string to match +type Text struct { + Str string + RunesLength int + BytesLength int + Segments []int +} + +func NewText(s string) Text { + return Text{ + Str: s, + RunesLength: utf8.RuneCountInString(s), + BytesLength: len(s), + Segments: []int{len(s)}, + } +} + +func (self Text) Match(s string) bool { + return self.Str == s +} + +func (self Text) Len() int { + return self.RunesLength +} + +func (self Text) Index(s string) (int, []int) { + index := strings.Index(s, self.Str) + if index == -1 { + return -1, nil + } + + return index, self.Segments +} + +func (self Text) String() string { + return fmt.Sprintf("", self.Str) +} diff --git a/vendor/github.com/gobwas/glob/readme.md b/vendor/github.com/gobwas/glob/readme.md new file mode 100644 index 0000000..f58144e --- /dev/null +++ b/vendor/github.com/gobwas/glob/readme.md @@ -0,0 +1,148 @@ +# glob.[go](https://golang.org) + +[![GoDoc][godoc-image]][godoc-url] [![Build Status][travis-image]][travis-url] + +> Go Globbing Library. + +## Install + +```shell + go get github.com/gobwas/glob +``` + +## Example + +```go + +package main + +import "github.com/gobwas/glob" + +func main() { + var g glob.Glob + + // create simple glob + g = glob.MustCompile("*.github.com") + g.Match("api.github.com") // true + + // quote meta characters and then create simple glob + g = glob.MustCompile(glob.QuoteMeta("*.github.com")) + g.Match("*.github.com") // true + + // create new glob with set of delimiters as ["."] + g = glob.MustCompile("api.*.com", '.') + g.Match("api.github.com") // true + g.Match("api.gi.hub.com") // false + + // create new glob with set of delimiters as ["."] + // but now with super wildcard + g = glob.MustCompile("api.**.com", '.') + g.Match("api.github.com") // true + g.Match("api.gi.hub.com") // true + + // create glob with single symbol wildcard + g = glob.MustCompile("?at") + g.Match("cat") // true + g.Match("fat") // true + g.Match("at") // false + + // create glob with single symbol wildcard and delimiters ['f'] + g = glob.MustCompile("?at", 'f') + g.Match("cat") // true + g.Match("fat") // false + g.Match("at") // false + + // create glob with character-list matchers + g = glob.MustCompile("[abc]at") + g.Match("cat") // true + g.Match("bat") // true + g.Match("fat") // false + g.Match("at") // false + + // create glob with character-list matchers + g = glob.MustCompile("[!abc]at") + g.Match("cat") // false + g.Match("bat") // false + g.Match("fat") // true + g.Match("at") // false + + // create glob with character-range matchers + g = glob.MustCompile("[a-c]at") + g.Match("cat") // true + g.Match("bat") // true + g.Match("fat") // false + g.Match("at") // false + + // create glob with character-range matchers + g = glob.MustCompile("[!a-c]at") + g.Match("cat") // false + g.Match("bat") // false + g.Match("fat") // true + g.Match("at") // false + + // create glob with pattern-alternatives list + g = glob.MustCompile("{cat,bat,[fr]at}") + g.Match("cat") // true + g.Match("bat") // true + g.Match("fat") // true + g.Match("rat") // true + g.Match("at") // false + g.Match("zat") // false +} + +``` + +## Performance + +This library is created for compile-once patterns. This means, that compilation could take time, but +strings matching is done faster, than in case when always parsing template. + +If you will not use compiled `glob.Glob` object, and do `g := glob.MustCompile(pattern); g.Match(...)` every time, then your code will be much more slower. + +Run `go test -bench=.` from source root to see the benchmarks: + +Pattern | Fixture | Match | Speed (ns/op) +--------|---------|-------|-------------- +`[a-z][!a-x]*cat*[h][!b]*eyes*` | `my cat has very bright eyes` | `true` | 432 +`[a-z][!a-x]*cat*[h][!b]*eyes*` | `my dog has very bright eyes` | `false` | 199 +`https://*.google.*` | `https://account.google.com` | `true` | 96 +`https://*.google.*` | `https://google.com` | `false` | 66 +`{https://*.google.*,*yandex.*,*yahoo.*,*mail.ru}` | `http://yahoo.com` | `true` | 163 +`{https://*.google.*,*yandex.*,*yahoo.*,*mail.ru}` | `http://google.com` | `false` | 197 +`{https://*gobwas.com,http://exclude.gobwas.com}` | `https://safe.gobwas.com` | `true` | 22 +`{https://*gobwas.com,http://exclude.gobwas.com}` | `http://safe.gobwas.com` | `false` | 24 +`abc*` | `abcdef` | `true` | 8.15 +`abc*` | `af` | `false` | 5.68 +`*def` | `abcdef` | `true` | 8.84 +`*def` | `af` | `false` | 5.74 +`ab*ef` | `abcdef` | `true` | 15.2 +`ab*ef` | `af` | `false` | 10.4 + +The same things with `regexp` package: + +Pattern | Fixture | Match | Speed (ns/op) +--------|---------|-------|-------------- +`^[a-z][^a-x].*cat.*[h][^b].*eyes.*$` | `my cat has very bright eyes` | `true` | 2553 +`^[a-z][^a-x].*cat.*[h][^b].*eyes.*$` | `my dog has very bright eyes` | `false` | 1383 +`^https:\/\/.*\.google\..*$` | `https://account.google.com` | `true` | 1205 +`^https:\/\/.*\.google\..*$` | `https://google.com` | `false` | 767 +`^(https:\/\/.*\.google\..*|.*yandex\..*|.*yahoo\..*|.*mail\.ru)$` | `http://yahoo.com` | `true` | 1435 +`^(https:\/\/.*\.google\..*|.*yandex\..*|.*yahoo\..*|.*mail\.ru)$` | `http://google.com` | `false` | 1674 +`^(https:\/\/.*gobwas\.com|http://exclude.gobwas.com)$` | `https://safe.gobwas.com` | `true` | 1039 +`^(https:\/\/.*gobwas\.com|http://exclude.gobwas.com)$` | `http://safe.gobwas.com` | `false` | 272 +`^abc.*$` | `abcdef` | `true` | 237 +`^abc.*$` | `af` | `false` | 100 +`^.*def$` | `abcdef` | `true` | 464 +`^.*def$` | `af` | `false` | 265 +`^ab.*ef$` | `abcdef` | `true` | 375 +`^ab.*ef$` | `af` | `false` | 145 + +[godoc-image]: https://godoc.org/github.com/gobwas/glob?status.svg +[godoc-url]: https://godoc.org/github.com/gobwas/glob +[travis-image]: https://travis-ci.org/gobwas/glob.svg?branch=master +[travis-url]: https://travis-ci.org/gobwas/glob + +## Syntax + +Syntax is inspired by [standard wildcards](http://tldp.org/LDP/GNU-Linux-Tools-Summary/html/x11655.htm), +except that `**` is aka super-asterisk, that do not sensitive for separators. \ No newline at end of file diff --git a/vendor/github.com/gobwas/glob/syntax/ast/ast.go b/vendor/github.com/gobwas/glob/syntax/ast/ast.go new file mode 100644 index 0000000..3220a69 --- /dev/null +++ b/vendor/github.com/gobwas/glob/syntax/ast/ast.go @@ -0,0 +1,122 @@ +package ast + +import ( + "bytes" + "fmt" +) + +type Node struct { + Parent *Node + Children []*Node + Value interface{} + Kind Kind +} + +func NewNode(k Kind, v interface{}, ch ...*Node) *Node { + n := &Node{ + Kind: k, + Value: v, + } + for _, c := range ch { + Insert(n, c) + } + return n +} + +func (a *Node) Equal(b *Node) bool { + if a.Kind != b.Kind { + return false + } + if a.Value != b.Value { + return false + } + if len(a.Children) != len(b.Children) { + return false + } + for i, c := range a.Children { + if !c.Equal(b.Children[i]) { + return false + } + } + return true +} + +func (a *Node) String() string { + var buf bytes.Buffer + buf.WriteString(a.Kind.String()) + if a.Value != nil { + buf.WriteString(" =") + buf.WriteString(fmt.Sprintf("%v", a.Value)) + } + if len(a.Children) > 0 { + buf.WriteString(" [") + for i, c := range a.Children { + if i > 0 { + buf.WriteString(", ") + } + buf.WriteString(c.String()) + } + buf.WriteString("]") + } + return buf.String() +} + +func Insert(parent *Node, children ...*Node) { + parent.Children = append(parent.Children, children...) + for _, ch := range children { + ch.Parent = parent + } +} + +type List struct { + Not bool + Chars string +} + +type Range struct { + Not bool + Lo, Hi rune +} + +type Text struct { + Text string +} + +type Kind int + +const ( + KindNothing Kind = iota + KindPattern + KindList + KindRange + KindText + KindAny + KindSuper + KindSingle + KindAnyOf +) + +func (k Kind) String() string { + switch k { + case KindNothing: + return "Nothing" + case KindPattern: + return "Pattern" + case KindList: + return "List" + case KindRange: + return "Range" + case KindText: + return "Text" + case KindAny: + return "Any" + case KindSuper: + return "Super" + case KindSingle: + return "Single" + case KindAnyOf: + return "AnyOf" + default: + return "" + } +} diff --git a/vendor/github.com/gobwas/glob/syntax/ast/parser.go b/vendor/github.com/gobwas/glob/syntax/ast/parser.go new file mode 100644 index 0000000..429b409 --- /dev/null +++ b/vendor/github.com/gobwas/glob/syntax/ast/parser.go @@ -0,0 +1,157 @@ +package ast + +import ( + "errors" + "fmt" + "github.com/gobwas/glob/syntax/lexer" + "unicode/utf8" +) + +type Lexer interface { + Next() lexer.Token +} + +type parseFn func(*Node, Lexer) (parseFn, *Node, error) + +func Parse(lexer Lexer) (*Node, error) { + var parser parseFn + + root := NewNode(KindPattern, nil) + + var ( + tree *Node + err error + ) + for parser, tree = parserMain, root; parser != nil; { + parser, tree, err = parser(tree, lexer) + if err != nil { + return nil, err + } + } + + return root, nil +} + +func parserMain(tree *Node, lex Lexer) (parseFn, *Node, error) { + for { + token := lex.Next() + switch token.Type { + case lexer.EOF: + return nil, tree, nil + + case lexer.Error: + return nil, tree, errors.New(token.Raw) + + case lexer.Text: + Insert(tree, NewNode(KindText, Text{token.Raw})) + return parserMain, tree, nil + + case lexer.Any: + Insert(tree, NewNode(KindAny, nil)) + return parserMain, tree, nil + + case lexer.Super: + Insert(tree, NewNode(KindSuper, nil)) + return parserMain, tree, nil + + case lexer.Single: + Insert(tree, NewNode(KindSingle, nil)) + return parserMain, tree, nil + + case lexer.RangeOpen: + return parserRange, tree, nil + + case lexer.TermsOpen: + a := NewNode(KindAnyOf, nil) + Insert(tree, a) + + p := NewNode(KindPattern, nil) + Insert(a, p) + + return parserMain, p, nil + + case lexer.Separator: + p := NewNode(KindPattern, nil) + Insert(tree.Parent, p) + + return parserMain, p, nil + + case lexer.TermsClose: + return parserMain, tree.Parent.Parent, nil + + default: + return nil, tree, fmt.Errorf("unexpected token: %s", token) + } + } + return nil, tree, fmt.Errorf("unknown error") +} + +func parserRange(tree *Node, lex Lexer) (parseFn, *Node, error) { + var ( + not bool + lo rune + hi rune + chars string + ) + for { + token := lex.Next() + switch token.Type { + case lexer.EOF: + return nil, tree, errors.New("unexpected end") + + case lexer.Error: + return nil, tree, errors.New(token.Raw) + + case lexer.Not: + not = true + + case lexer.RangeLo: + r, w := utf8.DecodeRuneInString(token.Raw) + if len(token.Raw) > w { + return nil, tree, fmt.Errorf("unexpected length of lo character") + } + lo = r + + case lexer.RangeBetween: + // + + case lexer.RangeHi: + r, w := utf8.DecodeRuneInString(token.Raw) + if len(token.Raw) > w { + return nil, tree, fmt.Errorf("unexpected length of lo character") + } + + hi = r + + if hi < lo { + return nil, tree, fmt.Errorf("hi character '%s' should be greater than lo '%s'", string(hi), string(lo)) + } + + case lexer.Text: + chars = token.Raw + + case lexer.RangeClose: + isRange := lo != 0 && hi != 0 + isChars := chars != "" + + if isChars == isRange { + return nil, tree, fmt.Errorf("could not parse range") + } + + if isRange { + Insert(tree, NewNode(KindRange, Range{ + Lo: lo, + Hi: hi, + Not: not, + })) + } else { + Insert(tree, NewNode(KindList, List{ + Chars: chars, + Not: not, + })) + } + + return parserMain, tree, nil + } + } +} diff --git a/vendor/github.com/gobwas/glob/syntax/lexer/lexer.go b/vendor/github.com/gobwas/glob/syntax/lexer/lexer.go new file mode 100644 index 0000000..a1c8d19 --- /dev/null +++ b/vendor/github.com/gobwas/glob/syntax/lexer/lexer.go @@ -0,0 +1,273 @@ +package lexer + +import ( + "bytes" + "fmt" + "github.com/gobwas/glob/util/runes" + "unicode/utf8" +) + +const ( + char_any = '*' + char_comma = ',' + char_single = '?' + char_escape = '\\' + char_range_open = '[' + char_range_close = ']' + char_terms_open = '{' + char_terms_close = '}' + char_range_not = '!' + char_range_between = '-' +) + +var specials = []byte{ + char_any, + char_single, + char_escape, + char_range_open, + char_range_close, + char_terms_open, + char_terms_close, +} + +func Special(c byte) bool { + return bytes.IndexByte(specials, c) != -1 +} + +type tokens []Token + +func (i *tokens) shift() (ret Token) { + ret = (*i)[0] + copy(*i, (*i)[1:]) + *i = (*i)[:len(*i)-1] + return +} + +func (i *tokens) push(v Token) { + *i = append(*i, v) +} + +func (i *tokens) empty() bool { + return len(*i) == 0 +} + +var eof rune = 0 + +type lexer struct { + data string + pos int + err error + + tokens tokens + termsLevel int + + lastRune rune + lastRuneSize int + hasRune bool +} + +func NewLexer(source string) *lexer { + l := &lexer{ + data: source, + tokens: tokens(make([]Token, 0, 4)), + } + return l +} + +func (l *lexer) Next() Token { + if l.err != nil { + return Token{Error, l.err.Error()} + } + if !l.tokens.empty() { + return l.tokens.shift() + } + + l.fetchItem() + return l.Next() +} + +func (l *lexer) peek() (r rune, w int) { + if l.pos == len(l.data) { + return eof, 0 + } + + r, w = utf8.DecodeRuneInString(l.data[l.pos:]) + if r == utf8.RuneError { + l.errorf("could not read rune") + r = eof + w = 0 + } + + return +} + +func (l *lexer) read() rune { + if l.hasRune { + l.hasRune = false + l.seek(l.lastRuneSize) + return l.lastRune + } + + r, s := l.peek() + l.seek(s) + + l.lastRune = r + l.lastRuneSize = s + + return r +} + +func (l *lexer) seek(w int) { + l.pos += w +} + +func (l *lexer) unread() { + if l.hasRune { + l.errorf("could not unread rune") + return + } + l.seek(-l.lastRuneSize) + l.hasRune = true +} + +func (l *lexer) errorf(f string, v ...interface{}) { + l.err = fmt.Errorf(f, v...) +} + +func (l *lexer) inTerms() bool { + return l.termsLevel > 0 +} + +func (l *lexer) termsEnter() { + l.termsLevel++ +} + +func (l *lexer) termsLeave() { + l.termsLevel-- +} + +var inTextBreakers = []rune{char_single, char_any, char_range_open, char_terms_open} +var inTermsBreakers = append(inTextBreakers, char_terms_close, char_comma) + +func (l *lexer) fetchItem() { + r := l.read() + switch { + case r == eof: + l.tokens.push(Token{EOF, ""}) + + case r == char_terms_open: + l.termsEnter() + l.tokens.push(Token{TermsOpen, string(r)}) + + case r == char_comma && l.inTerms(): + l.tokens.push(Token{Separator, string(r)}) + + case r == char_terms_close && l.inTerms(): + l.tokens.push(Token{TermsClose, string(r)}) + l.termsLeave() + + case r == char_range_open: + l.tokens.push(Token{RangeOpen, string(r)}) + l.fetchRange() + + case r == char_single: + l.tokens.push(Token{Single, string(r)}) + + case r == char_any: + if l.read() == char_any { + l.tokens.push(Token{Super, string(r) + string(r)}) + } else { + l.unread() + l.tokens.push(Token{Any, string(r)}) + } + + default: + l.unread() + + var breakers []rune + if l.inTerms() { + breakers = inTermsBreakers + } else { + breakers = inTextBreakers + } + l.fetchText(breakers) + } +} + +func (l *lexer) fetchRange() { + var wantHi bool + var wantClose bool + var seenNot bool + for { + r := l.read() + if r == eof { + l.errorf("unexpected end of input") + return + } + + if wantClose { + if r != char_range_close { + l.errorf("expected close range character") + } else { + l.tokens.push(Token{RangeClose, string(r)}) + } + return + } + + if wantHi { + l.tokens.push(Token{RangeHi, string(r)}) + wantClose = true + continue + } + + if !seenNot && r == char_range_not { + l.tokens.push(Token{Not, string(r)}) + seenNot = true + continue + } + + if n, w := l.peek(); n == char_range_between { + l.seek(w) + l.tokens.push(Token{RangeLo, string(r)}) + l.tokens.push(Token{RangeBetween, string(n)}) + wantHi = true + continue + } + + l.unread() // unread first peek and fetch as text + l.fetchText([]rune{char_range_close}) + wantClose = true + } +} + +func (l *lexer) fetchText(breakers []rune) { + var data []rune + var escaped bool + +reading: + for { + r := l.read() + if r == eof { + break + } + + if !escaped { + if r == char_escape { + escaped = true + continue + } + + if runes.IndexRune(breakers, r) != -1 { + l.unread() + break reading + } + } + + escaped = false + data = append(data, r) + } + + if len(data) > 0 { + l.tokens.push(Token{Text, string(data)}) + } +} diff --git a/vendor/github.com/gobwas/glob/syntax/lexer/token.go b/vendor/github.com/gobwas/glob/syntax/lexer/token.go new file mode 100644 index 0000000..2797c4e --- /dev/null +++ b/vendor/github.com/gobwas/glob/syntax/lexer/token.go @@ -0,0 +1,88 @@ +package lexer + +import "fmt" + +type TokenType int + +const ( + EOF TokenType = iota + Error + Text + Char + Any + Super + Single + Not + Separator + RangeOpen + RangeClose + RangeLo + RangeHi + RangeBetween + TermsOpen + TermsClose +) + +func (tt TokenType) String() string { + switch tt { + case EOF: + return "eof" + + case Error: + return "error" + + case Text: + return "text" + + case Char: + return "char" + + case Any: + return "any" + + case Super: + return "super" + + case Single: + return "single" + + case Not: + return "not" + + case Separator: + return "separator" + + case RangeOpen: + return "range_open" + + case RangeClose: + return "range_close" + + case RangeLo: + return "range_lo" + + case RangeHi: + return "range_hi" + + case RangeBetween: + return "range_between" + + case TermsOpen: + return "terms_open" + + case TermsClose: + return "terms_close" + + default: + return "undef" + } +} + +type Token struct { + Type TokenType + Raw string +} + +func (t Token) String() string { + return fmt.Sprintf("%v<%q>", t.Type, t.Raw) +} diff --git a/vendor/github.com/gobwas/glob/syntax/syntax.go b/vendor/github.com/gobwas/glob/syntax/syntax.go new file mode 100644 index 0000000..1d168b1 --- /dev/null +++ b/vendor/github.com/gobwas/glob/syntax/syntax.go @@ -0,0 +1,14 @@ +package syntax + +import ( + "github.com/gobwas/glob/syntax/ast" + "github.com/gobwas/glob/syntax/lexer" +) + +func Parse(s string) (*ast.Node, error) { + return ast.Parse(lexer.NewLexer(s)) +} + +func Special(b byte) bool { + return lexer.Special(b) +} diff --git a/vendor/github.com/gobwas/glob/util/runes/runes.go b/vendor/github.com/gobwas/glob/util/runes/runes.go new file mode 100644 index 0000000..a723556 --- /dev/null +++ b/vendor/github.com/gobwas/glob/util/runes/runes.go @@ -0,0 +1,154 @@ +package runes + +func Index(s, needle []rune) int { + ls, ln := len(s), len(needle) + + switch { + case ln == 0: + return 0 + case ln == 1: + return IndexRune(s, needle[0]) + case ln == ls: + if Equal(s, needle) { + return 0 + } + return -1 + case ln > ls: + return -1 + } + +head: + for i := 0; i < ls && ls-i >= ln; i++ { + for y := 0; y < ln; y++ { + if s[i+y] != needle[y] { + continue head + } + } + + return i + } + + return -1 +} + +func LastIndex(s, needle []rune) int { + ls, ln := len(s), len(needle) + + switch { + case ln == 0: + if ls == 0 { + return 0 + } + return ls + case ln == 1: + return IndexLastRune(s, needle[0]) + case ln == ls: + if Equal(s, needle) { + return 0 + } + return -1 + case ln > ls: + return -1 + } + +head: + for i := ls - 1; i >= 0 && i >= ln; i-- { + for y := ln - 1; y >= 0; y-- { + if s[i-(ln-y-1)] != needle[y] { + continue head + } + } + + return i - ln + 1 + } + + return -1 +} + +// IndexAny returns the index of the first instance of any Unicode code point +// from chars in s, or -1 if no Unicode code point from chars is present in s. +func IndexAny(s, chars []rune) int { + if len(chars) > 0 { + for i, c := range s { + for _, m := range chars { + if c == m { + return i + } + } + } + } + return -1 +} + +func Contains(s, needle []rune) bool { + return Index(s, needle) >= 0 +} + +func Max(s []rune) (max rune) { + for _, r := range s { + if r > max { + max = r + } + } + + return +} + +func Min(s []rune) rune { + min := rune(-1) + for _, r := range s { + if min == -1 { + min = r + continue + } + + if r < min { + min = r + } + } + + return min +} + +func IndexRune(s []rune, r rune) int { + for i, c := range s { + if c == r { + return i + } + } + return -1 +} + +func IndexLastRune(s []rune, r rune) int { + for i := len(s) - 1; i >= 0; i-- { + if s[i] == r { + return i + } + } + + return -1 +} + +func Equal(a, b []rune) bool { + if len(a) == len(b) { + for i := 0; i < len(a); i++ { + if a[i] != b[i] { + return false + } + } + + return true + } + + return false +} + +// HasPrefix tests whether the string s begins with prefix. +func HasPrefix(s, prefix []rune) bool { + return len(s) >= len(prefix) && Equal(s[0:len(prefix)], prefix) +} + +// HasSuffix tests whether the string s ends with suffix. +func HasSuffix(s, suffix []rune) bool { + return len(s) >= len(suffix) && Equal(s[len(s)-len(suffix):], suffix) +} diff --git a/vendor/github.com/gobwas/glob/util/strings/strings.go b/vendor/github.com/gobwas/glob/util/strings/strings.go new file mode 100644 index 0000000..e8ee192 --- /dev/null +++ b/vendor/github.com/gobwas/glob/util/strings/strings.go @@ -0,0 +1,39 @@ +package strings + +import ( + "strings" + "unicode/utf8" +) + +func IndexAnyRunes(s string, rs []rune) int { + for _, r := range rs { + if i := strings.IndexRune(s, r); i != -1 { + return i + } + } + + return -1 +} + +func LastIndexAnyRunes(s string, rs []rune) int { + for _, r := range rs { + i := -1 + if 0 <= r && r < utf8.RuneSelf { + i = strings.LastIndexByte(s, byte(r)) + } else { + sub := s + for len(sub) > 0 { + j := strings.IndexRune(s, r) + if j == -1 { + break + } + i = j + sub = sub[i+1:] + } + } + if i != -1 { + return i + } + } + return -1 +} diff --git a/vendor/github.com/google/go-cmp/LICENSE b/vendor/github.com/google/go-cmp/LICENSE new file mode 100644 index 0000000..32017f8 --- /dev/null +++ b/vendor/github.com/google/go-cmp/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2017 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/google/go-cmp/cmp/compare.go b/vendor/github.com/google/go-cmp/cmp/compare.go new file mode 100644 index 0000000..2133562 --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/compare.go @@ -0,0 +1,616 @@ +// Copyright 2017, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +// Package cmp determines equality of values. +// +// This package is intended to be a more powerful and safer alternative to +// reflect.DeepEqual for comparing whether two values are semantically equal. +// +// The primary features of cmp are: +// +// • When the default behavior of equality does not suit the needs of the test, +// custom equality functions can override the equality operation. +// For example, an equality function may report floats as equal so long as they +// are within some tolerance of each other. +// +// • Types that have an Equal method may use that method to determine equality. +// This allows package authors to determine the equality operation for the types +// that they define. +// +// • If no custom equality functions are used and no Equal method is defined, +// equality is determined by recursively comparing the primitive kinds on both +// values, much like reflect.DeepEqual. Unlike reflect.DeepEqual, unexported +// fields are not compared by default; they result in panics unless suppressed +// by using an Ignore option (see cmpopts.IgnoreUnexported) or explicitly compared +// using the AllowUnexported option. +package cmp + +import ( + "fmt" + "reflect" + "strings" + + "github.com/google/go-cmp/cmp/internal/diff" + "github.com/google/go-cmp/cmp/internal/flags" + "github.com/google/go-cmp/cmp/internal/function" + "github.com/google/go-cmp/cmp/internal/value" +) + +// Equal reports whether x and y are equal by recursively applying the +// following rules in the given order to x and y and all of their sub-values: +// +// • Let S be the set of all Ignore, Transformer, and Comparer options that +// remain after applying all path filters, value filters, and type filters. +// If at least one Ignore exists in S, then the comparison is ignored. +// If the number of Transformer and Comparer options in S is greater than one, +// then Equal panics because it is ambiguous which option to use. +// If S contains a single Transformer, then use that to transform the current +// values and recursively call Equal on the output values. +// If S contains a single Comparer, then use that to compare the current values. +// Otherwise, evaluation proceeds to the next rule. +// +// • If the values have an Equal method of the form "(T) Equal(T) bool" or +// "(T) Equal(I) bool" where T is assignable to I, then use the result of +// x.Equal(y) even if x or y is nil. Otherwise, no such method exists and +// evaluation proceeds to the next rule. +// +// • Lastly, try to compare x and y based on their basic kinds. +// Simple kinds like booleans, integers, floats, complex numbers, strings, and +// channels are compared using the equivalent of the == operator in Go. +// Functions are only equal if they are both nil, otherwise they are unequal. +// +// Structs are equal if recursively calling Equal on all fields report equal. +// If a struct contains unexported fields, Equal panics unless an Ignore option +// (e.g., cmpopts.IgnoreUnexported) ignores that field or the AllowUnexported +// option explicitly permits comparing the unexported field. +// +// Slices are equal if they are both nil or both non-nil, where recursively +// calling Equal on all non-ignored slice or array elements report equal. +// Empty non-nil slices and nil slices are not equal; to equate empty slices, +// consider using cmpopts.EquateEmpty. +// +// Maps are equal if they are both nil or both non-nil, where recursively +// calling Equal on all non-ignored map entries report equal. +// Map keys are equal according to the == operator. +// To use custom comparisons for map keys, consider using cmpopts.SortMaps. +// Empty non-nil maps and nil maps are not equal; to equate empty maps, +// consider using cmpopts.EquateEmpty. +// +// Pointers and interfaces are equal if they are both nil or both non-nil, +// where they have the same underlying concrete type and recursively +// calling Equal on the underlying values reports equal. +func Equal(x, y interface{}, opts ...Option) bool { + vx := reflect.ValueOf(x) + vy := reflect.ValueOf(y) + + // If the inputs are different types, auto-wrap them in an empty interface + // so that they have the same parent type. + var t reflect.Type + if !vx.IsValid() || !vy.IsValid() || vx.Type() != vy.Type() { + t = reflect.TypeOf((*interface{})(nil)).Elem() + if vx.IsValid() { + vvx := reflect.New(t).Elem() + vvx.Set(vx) + vx = vvx + } + if vy.IsValid() { + vvy := reflect.New(t).Elem() + vvy.Set(vy) + vy = vvy + } + } else { + t = vx.Type() + } + + s := newState(opts) + s.compareAny(&pathStep{t, vx, vy}) + return s.result.Equal() +} + +// Diff returns a human-readable report of the differences between two values. +// It returns an empty string if and only if Equal returns true for the same +// input values and options. +// +// The output is displayed as a literal in pseudo-Go syntax. +// At the start of each line, a "-" prefix indicates an element removed from x, +// a "+" prefix to indicates an element added to y, and the lack of a prefix +// indicates an element common to both x and y. If possible, the output +// uses fmt.Stringer.String or error.Error methods to produce more humanly +// readable outputs. In such cases, the string is prefixed with either an +// 's' or 'e' character, respectively, to indicate that the method was called. +// +// Do not depend on this output being stable. If you need the ability to +// programmatically interpret the difference, consider using a custom Reporter. +func Diff(x, y interface{}, opts ...Option) string { + r := new(defaultReporter) + eq := Equal(x, y, Options(opts), Reporter(r)) + d := r.String() + if (d == "") != eq { + panic("inconsistent difference and equality results") + } + return d +} + +type state struct { + // These fields represent the "comparison state". + // Calling statelessCompare must not result in observable changes to these. + result diff.Result // The current result of comparison + curPath Path // The current path in the value tree + reporters []reporter // Optional reporters + + // recChecker checks for infinite cycles applying the same set of + // transformers upon the output of itself. + recChecker recChecker + + // dynChecker triggers pseudo-random checks for option correctness. + // It is safe for statelessCompare to mutate this value. + dynChecker dynChecker + + // These fields, once set by processOption, will not change. + exporters map[reflect.Type]bool // Set of structs with unexported field visibility + opts Options // List of all fundamental and filter options +} + +func newState(opts []Option) *state { + // Always ensure a validator option exists to validate the inputs. + s := &state{opts: Options{validator{}}} + s.processOption(Options(opts)) + return s +} + +func (s *state) processOption(opt Option) { + switch opt := opt.(type) { + case nil: + case Options: + for _, o := range opt { + s.processOption(o) + } + case coreOption: + type filtered interface { + isFiltered() bool + } + if fopt, ok := opt.(filtered); ok && !fopt.isFiltered() { + panic(fmt.Sprintf("cannot use an unfiltered option: %v", opt)) + } + s.opts = append(s.opts, opt) + case visibleStructs: + if s.exporters == nil { + s.exporters = make(map[reflect.Type]bool) + } + for t := range opt { + s.exporters[t] = true + } + case reporter: + s.reporters = append(s.reporters, opt) + default: + panic(fmt.Sprintf("unknown option %T", opt)) + } +} + +// statelessCompare compares two values and returns the result. +// This function is stateless in that it does not alter the current result, +// or output to any registered reporters. +func (s *state) statelessCompare(step PathStep) diff.Result { + // We do not save and restore the curPath because all of the compareX + // methods should properly push and pop from the path. + // It is an implementation bug if the contents of curPath differs from + // when calling this function to when returning from it. + + oldResult, oldReporters := s.result, s.reporters + s.result = diff.Result{} // Reset result + s.reporters = nil // Remove reporters to avoid spurious printouts + s.compareAny(step) + res := s.result + s.result, s.reporters = oldResult, oldReporters + return res +} + +func (s *state) compareAny(step PathStep) { + // Update the path stack. + s.curPath.push(step) + defer s.curPath.pop() + for _, r := range s.reporters { + r.PushStep(step) + defer r.PopStep() + } + s.recChecker.Check(s.curPath) + + // Obtain the current type and values. + t := step.Type() + vx, vy := step.Values() + + // Rule 1: Check whether an option applies on this node in the value tree. + if s.tryOptions(t, vx, vy) { + return + } + + // Rule 2: Check whether the type has a valid Equal method. + if s.tryMethod(t, vx, vy) { + return + } + + // Rule 3: Compare based on the underlying kind. + switch t.Kind() { + case reflect.Bool: + s.report(vx.Bool() == vy.Bool(), 0) + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + s.report(vx.Int() == vy.Int(), 0) + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + s.report(vx.Uint() == vy.Uint(), 0) + case reflect.Float32, reflect.Float64: + s.report(vx.Float() == vy.Float(), 0) + case reflect.Complex64, reflect.Complex128: + s.report(vx.Complex() == vy.Complex(), 0) + case reflect.String: + s.report(vx.String() == vy.String(), 0) + case reflect.Chan, reflect.UnsafePointer: + s.report(vx.Pointer() == vy.Pointer(), 0) + case reflect.Func: + s.report(vx.IsNil() && vy.IsNil(), 0) + case reflect.Struct: + s.compareStruct(t, vx, vy) + case reflect.Slice, reflect.Array: + s.compareSlice(t, vx, vy) + case reflect.Map: + s.compareMap(t, vx, vy) + case reflect.Ptr: + s.comparePtr(t, vx, vy) + case reflect.Interface: + s.compareInterface(t, vx, vy) + default: + panic(fmt.Sprintf("%v kind not handled", t.Kind())) + } +} + +func (s *state) tryOptions(t reflect.Type, vx, vy reflect.Value) bool { + // Evaluate all filters and apply the remaining options. + if opt := s.opts.filter(s, t, vx, vy); opt != nil { + opt.apply(s, vx, vy) + return true + } + return false +} + +func (s *state) tryMethod(t reflect.Type, vx, vy reflect.Value) bool { + // Check if this type even has an Equal method. + m, ok := t.MethodByName("Equal") + if !ok || !function.IsType(m.Type, function.EqualAssignable) { + return false + } + + eq := s.callTTBFunc(m.Func, vx, vy) + s.report(eq, reportByMethod) + return true +} + +func (s *state) callTRFunc(f, v reflect.Value, step Transform) reflect.Value { + v = sanitizeValue(v, f.Type().In(0)) + if !s.dynChecker.Next() { + return f.Call([]reflect.Value{v})[0] + } + + // Run the function twice and ensure that we get the same results back. + // We run in goroutines so that the race detector (if enabled) can detect + // unsafe mutations to the input. + c := make(chan reflect.Value) + go detectRaces(c, f, v) + got := <-c + want := f.Call([]reflect.Value{v})[0] + if step.vx, step.vy = got, want; !s.statelessCompare(step).Equal() { + // To avoid false-positives with non-reflexive equality operations, + // we sanity check whether a value is equal to itself. + if step.vx, step.vy = want, want; !s.statelessCompare(step).Equal() { + return want + } + panic(fmt.Sprintf("non-deterministic function detected: %s", function.NameOf(f))) + } + return want +} + +func (s *state) callTTBFunc(f, x, y reflect.Value) bool { + x = sanitizeValue(x, f.Type().In(0)) + y = sanitizeValue(y, f.Type().In(1)) + if !s.dynChecker.Next() { + return f.Call([]reflect.Value{x, y})[0].Bool() + } + + // Swapping the input arguments is sufficient to check that + // f is symmetric and deterministic. + // We run in goroutines so that the race detector (if enabled) can detect + // unsafe mutations to the input. + c := make(chan reflect.Value) + go detectRaces(c, f, y, x) + got := <-c + want := f.Call([]reflect.Value{x, y})[0].Bool() + if !got.IsValid() || got.Bool() != want { + panic(fmt.Sprintf("non-deterministic or non-symmetric function detected: %s", function.NameOf(f))) + } + return want +} + +func detectRaces(c chan<- reflect.Value, f reflect.Value, vs ...reflect.Value) { + var ret reflect.Value + defer func() { + recover() // Ignore panics, let the other call to f panic instead + c <- ret + }() + ret = f.Call(vs)[0] +} + +// sanitizeValue converts nil interfaces of type T to those of type R, +// assuming that T is assignable to R. +// Otherwise, it returns the input value as is. +func sanitizeValue(v reflect.Value, t reflect.Type) reflect.Value { + // TODO(dsnet): Workaround for reflect bug (https://golang.org/issue/22143). + if !flags.AtLeastGo110 { + if v.Kind() == reflect.Interface && v.IsNil() && v.Type() != t { + return reflect.New(t).Elem() + } + } + return v +} + +func (s *state) compareStruct(t reflect.Type, vx, vy reflect.Value) { + var vax, vay reflect.Value // Addressable versions of vx and vy + + step := StructField{&structField{}} + for i := 0; i < t.NumField(); i++ { + step.typ = t.Field(i).Type + step.vx = vx.Field(i) + step.vy = vy.Field(i) + step.name = t.Field(i).Name + step.idx = i + step.unexported = !isExported(step.name) + if step.unexported { + if step.name == "_" { + continue + } + // Defer checking of unexported fields until later to give an + // Ignore a chance to ignore the field. + if !vax.IsValid() || !vay.IsValid() { + // For retrieveUnexportedField to work, the parent struct must + // be addressable. Create a new copy of the values if + // necessary to make them addressable. + vax = makeAddressable(vx) + vay = makeAddressable(vy) + } + step.mayForce = s.exporters[t] + step.pvx = vax + step.pvy = vay + step.field = t.Field(i) + } + s.compareAny(step) + } +} + +func (s *state) compareSlice(t reflect.Type, vx, vy reflect.Value) { + isSlice := t.Kind() == reflect.Slice + if isSlice && (vx.IsNil() || vy.IsNil()) { + s.report(vx.IsNil() && vy.IsNil(), 0) + return + } + + // TODO: Support cyclic data structures. + + step := SliceIndex{&sliceIndex{pathStep: pathStep{typ: t.Elem()}}} + withIndexes := func(ix, iy int) SliceIndex { + if ix >= 0 { + step.vx, step.xkey = vx.Index(ix), ix + } else { + step.vx, step.xkey = reflect.Value{}, -1 + } + if iy >= 0 { + step.vy, step.ykey = vy.Index(iy), iy + } else { + step.vy, step.ykey = reflect.Value{}, -1 + } + return step + } + + // Ignore options are able to ignore missing elements in a slice. + // However, detecting these reliably requires an optimal differencing + // algorithm, for which diff.Difference is not. + // + // Instead, we first iterate through both slices to detect which elements + // would be ignored if standing alone. The index of non-discarded elements + // are stored in a separate slice, which diffing is then performed on. + var indexesX, indexesY []int + var ignoredX, ignoredY []bool + for ix := 0; ix < vx.Len(); ix++ { + ignored := s.statelessCompare(withIndexes(ix, -1)).NumDiff == 0 + if !ignored { + indexesX = append(indexesX, ix) + } + ignoredX = append(ignoredX, ignored) + } + for iy := 0; iy < vy.Len(); iy++ { + ignored := s.statelessCompare(withIndexes(-1, iy)).NumDiff == 0 + if !ignored { + indexesY = append(indexesY, iy) + } + ignoredY = append(ignoredY, ignored) + } + + // Compute an edit-script for slices vx and vy (excluding ignored elements). + edits := diff.Difference(len(indexesX), len(indexesY), func(ix, iy int) diff.Result { + return s.statelessCompare(withIndexes(indexesX[ix], indexesY[iy])) + }) + + // Replay the ignore-scripts and the edit-script. + var ix, iy int + for ix < vx.Len() || iy < vy.Len() { + var e diff.EditType + switch { + case ix < len(ignoredX) && ignoredX[ix]: + e = diff.UniqueX + case iy < len(ignoredY) && ignoredY[iy]: + e = diff.UniqueY + default: + e, edits = edits[0], edits[1:] + } + switch e { + case diff.UniqueX: + s.compareAny(withIndexes(ix, -1)) + ix++ + case diff.UniqueY: + s.compareAny(withIndexes(-1, iy)) + iy++ + default: + s.compareAny(withIndexes(ix, iy)) + ix++ + iy++ + } + } +} + +func (s *state) compareMap(t reflect.Type, vx, vy reflect.Value) { + if vx.IsNil() || vy.IsNil() { + s.report(vx.IsNil() && vy.IsNil(), 0) + return + } + + // TODO: Support cyclic data structures. + + // We combine and sort the two map keys so that we can perform the + // comparisons in a deterministic order. + step := MapIndex{&mapIndex{pathStep: pathStep{typ: t.Elem()}}} + for _, k := range value.SortKeys(append(vx.MapKeys(), vy.MapKeys()...)) { + step.vx = vx.MapIndex(k) + step.vy = vy.MapIndex(k) + step.key = k + if !step.vx.IsValid() && !step.vy.IsValid() { + // It is possible for both vx and vy to be invalid if the + // key contained a NaN value in it. + // + // Even with the ability to retrieve NaN keys in Go 1.12, + // there still isn't a sensible way to compare the values since + // a NaN key may map to multiple unordered values. + // The most reasonable way to compare NaNs would be to compare the + // set of values. However, this is impossible to do efficiently + // since set equality is provably an O(n^2) operation given only + // an Equal function. If we had a Less function or Hash function, + // this could be done in O(n*log(n)) or O(n), respectively. + // + // Rather than adding complex logic to deal with NaNs, make it + // the user's responsibility to compare such obscure maps. + const help = "consider providing a Comparer to compare the map" + panic(fmt.Sprintf("%#v has map key with NaNs\n%s", s.curPath, help)) + } + s.compareAny(step) + } +} + +func (s *state) comparePtr(t reflect.Type, vx, vy reflect.Value) { + if vx.IsNil() || vy.IsNil() { + s.report(vx.IsNil() && vy.IsNil(), 0) + return + } + + // TODO: Support cyclic data structures. + + vx, vy = vx.Elem(), vy.Elem() + s.compareAny(Indirect{&indirect{pathStep{t.Elem(), vx, vy}}}) +} + +func (s *state) compareInterface(t reflect.Type, vx, vy reflect.Value) { + if vx.IsNil() || vy.IsNil() { + s.report(vx.IsNil() && vy.IsNil(), 0) + return + } + vx, vy = vx.Elem(), vy.Elem() + if vx.Type() != vy.Type() { + s.report(false, 0) + return + } + s.compareAny(TypeAssertion{&typeAssertion{pathStep{vx.Type(), vx, vy}}}) +} + +func (s *state) report(eq bool, rf resultFlags) { + if rf&reportByIgnore == 0 { + if eq { + s.result.NumSame++ + rf |= reportEqual + } else { + s.result.NumDiff++ + rf |= reportUnequal + } + } + for _, r := range s.reporters { + r.Report(Result{flags: rf}) + } +} + +// recChecker tracks the state needed to periodically perform checks that +// user provided transformers are not stuck in an infinitely recursive cycle. +type recChecker struct{ next int } + +// Check scans the Path for any recursive transformers and panics when any +// recursive transformers are detected. Note that the presence of a +// recursive Transformer does not necessarily imply an infinite cycle. +// As such, this check only activates after some minimal number of path steps. +func (rc *recChecker) Check(p Path) { + const minLen = 1 << 16 + if rc.next == 0 { + rc.next = minLen + } + if len(p) < rc.next { + return + } + rc.next <<= 1 + + // Check whether the same transformer has appeared at least twice. + var ss []string + m := map[Option]int{} + for _, ps := range p { + if t, ok := ps.(Transform); ok { + t := t.Option() + if m[t] == 1 { // Transformer was used exactly once before + tf := t.(*transformer).fnc.Type() + ss = append(ss, fmt.Sprintf("%v: %v => %v", t, tf.In(0), tf.Out(0))) + } + m[t]++ + } + } + if len(ss) > 0 { + const warning = "recursive set of Transformers detected" + const help = "consider using cmpopts.AcyclicTransformer" + set := strings.Join(ss, "\n\t") + panic(fmt.Sprintf("%s:\n\t%s\n%s", warning, set, help)) + } +} + +// dynChecker tracks the state needed to periodically perform checks that +// user provided functions are symmetric and deterministic. +// The zero value is safe for immediate use. +type dynChecker struct{ curr, next int } + +// Next increments the state and reports whether a check should be performed. +// +// Checks occur every Nth function call, where N is a triangular number: +// 0 1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136 153 171 190 ... +// See https://en.wikipedia.org/wiki/Triangular_number +// +// This sequence ensures that the cost of checks drops significantly as +// the number of functions calls grows larger. +func (dc *dynChecker) Next() bool { + ok := dc.curr == dc.next + if ok { + dc.curr = 0 + dc.next++ + } + dc.curr++ + return ok +} + +// makeAddressable returns a value that is always addressable. +// It returns the input verbatim if it is already addressable, +// otherwise it creates a new value and returns an addressable copy. +func makeAddressable(v reflect.Value) reflect.Value { + if v.CanAddr() { + return v + } + vc := reflect.New(v.Type()).Elem() + vc.Set(v) + return vc +} diff --git a/vendor/github.com/google/go-cmp/cmp/export_panic.go b/vendor/github.com/google/go-cmp/cmp/export_panic.go new file mode 100644 index 0000000..abc3a1c --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/export_panic.go @@ -0,0 +1,15 @@ +// Copyright 2017, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +// +build purego + +package cmp + +import "reflect" + +const supportAllowUnexported = false + +func retrieveUnexportedField(reflect.Value, reflect.StructField) reflect.Value { + panic("retrieveUnexportedField is not implemented") +} diff --git a/vendor/github.com/google/go-cmp/cmp/export_unsafe.go b/vendor/github.com/google/go-cmp/cmp/export_unsafe.go new file mode 100644 index 0000000..59d4ee9 --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/export_unsafe.go @@ -0,0 +1,23 @@ +// Copyright 2017, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +// +build !purego + +package cmp + +import ( + "reflect" + "unsafe" +) + +const supportAllowUnexported = true + +// retrieveUnexportedField uses unsafe to forcibly retrieve any field from +// a struct such that the value has read-write permissions. +// +// The parent struct, v, must be addressable, while f must be a StructField +// describing the field to retrieve. +func retrieveUnexportedField(v reflect.Value, f reflect.StructField) reflect.Value { + return reflect.NewAt(f.Type, unsafe.Pointer(v.UnsafeAddr()+f.Offset)).Elem() +} diff --git a/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_disable.go b/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_disable.go new file mode 100644 index 0000000..fe98dcc --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_disable.go @@ -0,0 +1,17 @@ +// Copyright 2017, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +// +build !cmp_debug + +package diff + +var debug debugger + +type debugger struct{} + +func (debugger) Begin(_, _ int, f EqualFunc, _, _ *EditScript) EqualFunc { + return f +} +func (debugger) Update() {} +func (debugger) Finish() {} diff --git a/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_enable.go b/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_enable.go new file mode 100644 index 0000000..597b6ae --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_enable.go @@ -0,0 +1,122 @@ +// Copyright 2017, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +// +build cmp_debug + +package diff + +import ( + "fmt" + "strings" + "sync" + "time" +) + +// The algorithm can be seen running in real-time by enabling debugging: +// go test -tags=cmp_debug -v +// +// Example output: +// === RUN TestDifference/#34 +// ┌───────────────────────────────┐ +// │ \ · · · · · · · · · · · · · · │ +// │ · # · · · · · · · · · · · · · │ +// │ · \ · · · · · · · · · · · · · │ +// │ · · \ · · · · · · · · · · · · │ +// │ · · · X # · · · · · · · · · · │ +// │ · · · # \ · · · · · · · · · · │ +// │ · · · · · # # · · · · · · · · │ +// │ · · · · · # \ · · · · · · · · │ +// │ · · · · · · · \ · · · · · · · │ +// │ · · · · · · · · \ · · · · · · │ +// │ · · · · · · · · · \ · · · · · │ +// │ · · · · · · · · · · \ · · # · │ +// │ · · · · · · · · · · · \ # # · │ +// │ · · · · · · · · · · · # # # · │ +// │ · · · · · · · · · · # # # # · │ +// │ · · · · · · · · · # # # # # · │ +// │ · · · · · · · · · · · · · · \ │ +// └───────────────────────────────┘ +// [.Y..M.XY......YXYXY.|] +// +// The grid represents the edit-graph where the horizontal axis represents +// list X and the vertical axis represents list Y. The start of the two lists +// is the top-left, while the ends are the bottom-right. The '·' represents +// an unexplored node in the graph. The '\' indicates that the two symbols +// from list X and Y are equal. The 'X' indicates that two symbols are similar +// (but not exactly equal) to each other. The '#' indicates that the two symbols +// are different (and not similar). The algorithm traverses this graph trying to +// make the paths starting in the top-left and the bottom-right connect. +// +// The series of '.', 'X', 'Y', and 'M' characters at the bottom represents +// the currently established path from the forward and reverse searches, +// separated by a '|' character. + +const ( + updateDelay = 100 * time.Millisecond + finishDelay = 500 * time.Millisecond + ansiTerminal = true // ANSI escape codes used to move terminal cursor +) + +var debug debugger + +type debugger struct { + sync.Mutex + p1, p2 EditScript + fwdPath, revPath *EditScript + grid []byte + lines int +} + +func (dbg *debugger) Begin(nx, ny int, f EqualFunc, p1, p2 *EditScript) EqualFunc { + dbg.Lock() + dbg.fwdPath, dbg.revPath = p1, p2 + top := "┌─" + strings.Repeat("──", nx) + "┐\n" + row := "│ " + strings.Repeat("· ", nx) + "│\n" + btm := "└─" + strings.Repeat("──", nx) + "┘\n" + dbg.grid = []byte(top + strings.Repeat(row, ny) + btm) + dbg.lines = strings.Count(dbg.String(), "\n") + fmt.Print(dbg) + + // Wrap the EqualFunc so that we can intercept each result. + return func(ix, iy int) (r Result) { + cell := dbg.grid[len(top)+iy*len(row):][len("│ ")+len("· ")*ix:][:len("·")] + for i := range cell { + cell[i] = 0 // Zero out the multiple bytes of UTF-8 middle-dot + } + switch r = f(ix, iy); { + case r.Equal(): + cell[0] = '\\' + case r.Similar(): + cell[0] = 'X' + default: + cell[0] = '#' + } + return + } +} + +func (dbg *debugger) Update() { + dbg.print(updateDelay) +} + +func (dbg *debugger) Finish() { + dbg.print(finishDelay) + dbg.Unlock() +} + +func (dbg *debugger) String() string { + dbg.p1, dbg.p2 = *dbg.fwdPath, dbg.p2[:0] + for i := len(*dbg.revPath) - 1; i >= 0; i-- { + dbg.p2 = append(dbg.p2, (*dbg.revPath)[i]) + } + return fmt.Sprintf("%s[%v|%v]\n\n", dbg.grid, dbg.p1, dbg.p2) +} + +func (dbg *debugger) print(d time.Duration) { + if ansiTerminal { + fmt.Printf("\x1b[%dA", dbg.lines) // Reset terminal cursor + } + fmt.Print(dbg) + time.Sleep(d) +} diff --git a/vendor/github.com/google/go-cmp/cmp/internal/diff/diff.go b/vendor/github.com/google/go-cmp/cmp/internal/diff/diff.go new file mode 100644 index 0000000..3d2e426 --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/internal/diff/diff.go @@ -0,0 +1,372 @@ +// Copyright 2017, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +// Package diff implements an algorithm for producing edit-scripts. +// The edit-script is a sequence of operations needed to transform one list +// of symbols into another (or vice-versa). The edits allowed are insertions, +// deletions, and modifications. The summation of all edits is called the +// Levenshtein distance as this problem is well-known in computer science. +// +// This package prioritizes performance over accuracy. That is, the run time +// is more important than obtaining a minimal Levenshtein distance. +package diff + +// EditType represents a single operation within an edit-script. +type EditType uint8 + +const ( + // Identity indicates that a symbol pair is identical in both list X and Y. + Identity EditType = iota + // UniqueX indicates that a symbol only exists in X and not Y. + UniqueX + // UniqueY indicates that a symbol only exists in Y and not X. + UniqueY + // Modified indicates that a symbol pair is a modification of each other. + Modified +) + +// EditScript represents the series of differences between two lists. +type EditScript []EditType + +// String returns a human-readable string representing the edit-script where +// Identity, UniqueX, UniqueY, and Modified are represented by the +// '.', 'X', 'Y', and 'M' characters, respectively. +func (es EditScript) String() string { + b := make([]byte, len(es)) + for i, e := range es { + switch e { + case Identity: + b[i] = '.' + case UniqueX: + b[i] = 'X' + case UniqueY: + b[i] = 'Y' + case Modified: + b[i] = 'M' + default: + panic("invalid edit-type") + } + } + return string(b) +} + +// stats returns a histogram of the number of each type of edit operation. +func (es EditScript) stats() (s struct{ NI, NX, NY, NM int }) { + for _, e := range es { + switch e { + case Identity: + s.NI++ + case UniqueX: + s.NX++ + case UniqueY: + s.NY++ + case Modified: + s.NM++ + default: + panic("invalid edit-type") + } + } + return +} + +// Dist is the Levenshtein distance and is guaranteed to be 0 if and only if +// lists X and Y are equal. +func (es EditScript) Dist() int { return len(es) - es.stats().NI } + +// LenX is the length of the X list. +func (es EditScript) LenX() int { return len(es) - es.stats().NY } + +// LenY is the length of the Y list. +func (es EditScript) LenY() int { return len(es) - es.stats().NX } + +// EqualFunc reports whether the symbols at indexes ix and iy are equal. +// When called by Difference, the index is guaranteed to be within nx and ny. +type EqualFunc func(ix int, iy int) Result + +// Result is the result of comparison. +// NumSame is the number of sub-elements that are equal. +// NumDiff is the number of sub-elements that are not equal. +type Result struct{ NumSame, NumDiff int } + +// BoolResult returns a Result that is either Equal or not Equal. +func BoolResult(b bool) Result { + if b { + return Result{NumSame: 1} // Equal, Similar + } else { + return Result{NumDiff: 2} // Not Equal, not Similar + } +} + +// Equal indicates whether the symbols are equal. Two symbols are equal +// if and only if NumDiff == 0. If Equal, then they are also Similar. +func (r Result) Equal() bool { return r.NumDiff == 0 } + +// Similar indicates whether two symbols are similar and may be represented +// by using the Modified type. As a special case, we consider binary comparisons +// (i.e., those that return Result{1, 0} or Result{0, 1}) to be similar. +// +// The exact ratio of NumSame to NumDiff to determine similarity may change. +func (r Result) Similar() bool { + // Use NumSame+1 to offset NumSame so that binary comparisons are similar. + return r.NumSame+1 >= r.NumDiff +} + +// Difference reports whether two lists of lengths nx and ny are equal +// given the definition of equality provided as f. +// +// This function returns an edit-script, which is a sequence of operations +// needed to convert one list into the other. The following invariants for +// the edit-script are maintained: +// • eq == (es.Dist()==0) +// • nx == es.LenX() +// • ny == es.LenY() +// +// This algorithm is not guaranteed to be an optimal solution (i.e., one that +// produces an edit-script with a minimal Levenshtein distance). This algorithm +// favors performance over optimality. The exact output is not guaranteed to +// be stable and may change over time. +func Difference(nx, ny int, f EqualFunc) (es EditScript) { + // This algorithm is based on traversing what is known as an "edit-graph". + // See Figure 1 from "An O(ND) Difference Algorithm and Its Variations" + // by Eugene W. Myers. Since D can be as large as N itself, this is + // effectively O(N^2). Unlike the algorithm from that paper, we are not + // interested in the optimal path, but at least some "decent" path. + // + // For example, let X and Y be lists of symbols: + // X = [A B C A B B A] + // Y = [C B A B A C] + // + // The edit-graph can be drawn as the following: + // A B C A B B A + // ┌─────────────┐ + // C │_|_|\|_|_|_|_│ 0 + // B │_|\|_|_|\|\|_│ 1 + // A │\|_|_|\|_|_|\│ 2 + // B │_|\|_|_|\|\|_│ 3 + // A │\|_|_|\|_|_|\│ 4 + // C │ | |\| | | | │ 5 + // └─────────────┘ 6 + // 0 1 2 3 4 5 6 7 + // + // List X is written along the horizontal axis, while list Y is written + // along the vertical axis. At any point on this grid, if the symbol in + // list X matches the corresponding symbol in list Y, then a '\' is drawn. + // The goal of any minimal edit-script algorithm is to find a path from the + // top-left corner to the bottom-right corner, while traveling through the + // fewest horizontal or vertical edges. + // A horizontal edge is equivalent to inserting a symbol from list X. + // A vertical edge is equivalent to inserting a symbol from list Y. + // A diagonal edge is equivalent to a matching symbol between both X and Y. + + // Invariants: + // • 0 ≤ fwdPath.X ≤ (fwdFrontier.X, revFrontier.X) ≤ revPath.X ≤ nx + // • 0 ≤ fwdPath.Y ≤ (fwdFrontier.Y, revFrontier.Y) ≤ revPath.Y ≤ ny + // + // In general: + // • fwdFrontier.X < revFrontier.X + // • fwdFrontier.Y < revFrontier.Y + // Unless, it is time for the algorithm to terminate. + fwdPath := path{+1, point{0, 0}, make(EditScript, 0, (nx+ny)/2)} + revPath := path{-1, point{nx, ny}, make(EditScript, 0)} + fwdFrontier := fwdPath.point // Forward search frontier + revFrontier := revPath.point // Reverse search frontier + + // Search budget bounds the cost of searching for better paths. + // The longest sequence of non-matching symbols that can be tolerated is + // approximately the square-root of the search budget. + searchBudget := 4 * (nx + ny) // O(n) + + // The algorithm below is a greedy, meet-in-the-middle algorithm for + // computing sub-optimal edit-scripts between two lists. + // + // The algorithm is approximately as follows: + // • Searching for differences switches back-and-forth between + // a search that starts at the beginning (the top-left corner), and + // a search that starts at the end (the bottom-right corner). The goal of + // the search is connect with the search from the opposite corner. + // • As we search, we build a path in a greedy manner, where the first + // match seen is added to the path (this is sub-optimal, but provides a + // decent result in practice). When matches are found, we try the next pair + // of symbols in the lists and follow all matches as far as possible. + // • When searching for matches, we search along a diagonal going through + // through the "frontier" point. If no matches are found, we advance the + // frontier towards the opposite corner. + // • This algorithm terminates when either the X coordinates or the + // Y coordinates of the forward and reverse frontier points ever intersect. + // + // This algorithm is correct even if searching only in the forward direction + // or in the reverse direction. We do both because it is commonly observed + // that two lists commonly differ because elements were added to the front + // or end of the other list. + // + // Running the tests with the "cmp_debug" build tag prints a visualization + // of the algorithm running in real-time. This is educational for + // understanding how the algorithm works. See debug_enable.go. + f = debug.Begin(nx, ny, f, &fwdPath.es, &revPath.es) + for { + // Forward search from the beginning. + if fwdFrontier.X >= revFrontier.X || fwdFrontier.Y >= revFrontier.Y || searchBudget == 0 { + break + } + for stop1, stop2, i := false, false, 0; !(stop1 && stop2) && searchBudget > 0; i++ { + // Search in a diagonal pattern for a match. + z := zigzag(i) + p := point{fwdFrontier.X + z, fwdFrontier.Y - z} + switch { + case p.X >= revPath.X || p.Y < fwdPath.Y: + stop1 = true // Hit top-right corner + case p.Y >= revPath.Y || p.X < fwdPath.X: + stop2 = true // Hit bottom-left corner + case f(p.X, p.Y).Equal(): + // Match found, so connect the path to this point. + fwdPath.connect(p, f) + fwdPath.append(Identity) + // Follow sequence of matches as far as possible. + for fwdPath.X < revPath.X && fwdPath.Y < revPath.Y { + if !f(fwdPath.X, fwdPath.Y).Equal() { + break + } + fwdPath.append(Identity) + } + fwdFrontier = fwdPath.point + stop1, stop2 = true, true + default: + searchBudget-- // Match not found + } + debug.Update() + } + // Advance the frontier towards reverse point. + if revPath.X-fwdFrontier.X >= revPath.Y-fwdFrontier.Y { + fwdFrontier.X++ + } else { + fwdFrontier.Y++ + } + + // Reverse search from the end. + if fwdFrontier.X >= revFrontier.X || fwdFrontier.Y >= revFrontier.Y || searchBudget == 0 { + break + } + for stop1, stop2, i := false, false, 0; !(stop1 && stop2) && searchBudget > 0; i++ { + // Search in a diagonal pattern for a match. + z := zigzag(i) + p := point{revFrontier.X - z, revFrontier.Y + z} + switch { + case fwdPath.X >= p.X || revPath.Y < p.Y: + stop1 = true // Hit bottom-left corner + case fwdPath.Y >= p.Y || revPath.X < p.X: + stop2 = true // Hit top-right corner + case f(p.X-1, p.Y-1).Equal(): + // Match found, so connect the path to this point. + revPath.connect(p, f) + revPath.append(Identity) + // Follow sequence of matches as far as possible. + for fwdPath.X < revPath.X && fwdPath.Y < revPath.Y { + if !f(revPath.X-1, revPath.Y-1).Equal() { + break + } + revPath.append(Identity) + } + revFrontier = revPath.point + stop1, stop2 = true, true + default: + searchBudget-- // Match not found + } + debug.Update() + } + // Advance the frontier towards forward point. + if revFrontier.X-fwdPath.X >= revFrontier.Y-fwdPath.Y { + revFrontier.X-- + } else { + revFrontier.Y-- + } + } + + // Join the forward and reverse paths and then append the reverse path. + fwdPath.connect(revPath.point, f) + for i := len(revPath.es) - 1; i >= 0; i-- { + t := revPath.es[i] + revPath.es = revPath.es[:i] + fwdPath.append(t) + } + debug.Finish() + return fwdPath.es +} + +type path struct { + dir int // +1 if forward, -1 if reverse + point // Leading point of the EditScript path + es EditScript +} + +// connect appends any necessary Identity, Modified, UniqueX, or UniqueY types +// to the edit-script to connect p.point to dst. +func (p *path) connect(dst point, f EqualFunc) { + if p.dir > 0 { + // Connect in forward direction. + for dst.X > p.X && dst.Y > p.Y { + switch r := f(p.X, p.Y); { + case r.Equal(): + p.append(Identity) + case r.Similar(): + p.append(Modified) + case dst.X-p.X >= dst.Y-p.Y: + p.append(UniqueX) + default: + p.append(UniqueY) + } + } + for dst.X > p.X { + p.append(UniqueX) + } + for dst.Y > p.Y { + p.append(UniqueY) + } + } else { + // Connect in reverse direction. + for p.X > dst.X && p.Y > dst.Y { + switch r := f(p.X-1, p.Y-1); { + case r.Equal(): + p.append(Identity) + case r.Similar(): + p.append(Modified) + case p.Y-dst.Y >= p.X-dst.X: + p.append(UniqueY) + default: + p.append(UniqueX) + } + } + for p.X > dst.X { + p.append(UniqueX) + } + for p.Y > dst.Y { + p.append(UniqueY) + } + } +} + +func (p *path) append(t EditType) { + p.es = append(p.es, t) + switch t { + case Identity, Modified: + p.add(p.dir, p.dir) + case UniqueX: + p.add(p.dir, 0) + case UniqueY: + p.add(0, p.dir) + } + debug.Update() +} + +type point struct{ X, Y int } + +func (p *point) add(dx, dy int) { p.X += dx; p.Y += dy } + +// zigzag maps a consecutive sequence of integers to a zig-zag sequence. +// [0 1 2 3 4 5 ...] => [0 -1 +1 -2 +2 ...] +func zigzag(x int) int { + if x&1 != 0 { + x = ^x + } + return x >> 1 +} diff --git a/vendor/github.com/google/go-cmp/cmp/internal/flags/flags.go b/vendor/github.com/google/go-cmp/cmp/internal/flags/flags.go new file mode 100644 index 0000000..a9e7fc0 --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/internal/flags/flags.go @@ -0,0 +1,9 @@ +// Copyright 2019, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +package flags + +// Deterministic controls whether the output of Diff should be deterministic. +// This is only used for testing. +var Deterministic bool diff --git a/vendor/github.com/google/go-cmp/cmp/internal/flags/toolchain_legacy.go b/vendor/github.com/google/go-cmp/cmp/internal/flags/toolchain_legacy.go new file mode 100644 index 0000000..01aed0a --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/internal/flags/toolchain_legacy.go @@ -0,0 +1,10 @@ +// Copyright 2019, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +// +build !go1.10 + +package flags + +// AtLeastGo110 reports whether the Go toolchain is at least Go 1.10. +const AtLeastGo110 = false diff --git a/vendor/github.com/google/go-cmp/cmp/internal/flags/toolchain_recent.go b/vendor/github.com/google/go-cmp/cmp/internal/flags/toolchain_recent.go new file mode 100644 index 0000000..c0b667f --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/internal/flags/toolchain_recent.go @@ -0,0 +1,10 @@ +// Copyright 2019, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +// +build go1.10 + +package flags + +// AtLeastGo110 reports whether the Go toolchain is at least Go 1.10. +const AtLeastGo110 = true diff --git a/vendor/github.com/google/go-cmp/cmp/internal/function/func.go b/vendor/github.com/google/go-cmp/cmp/internal/function/func.go new file mode 100644 index 0000000..ace1dbe --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/internal/function/func.go @@ -0,0 +1,99 @@ +// Copyright 2017, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +// Package function provides functionality for identifying function types. +package function + +import ( + "reflect" + "regexp" + "runtime" + "strings" +) + +type funcType int + +const ( + _ funcType = iota + + tbFunc // func(T) bool + ttbFunc // func(T, T) bool + trbFunc // func(T, R) bool + tibFunc // func(T, I) bool + trFunc // func(T) R + + Equal = ttbFunc // func(T, T) bool + EqualAssignable = tibFunc // func(T, I) bool; encapsulates func(T, T) bool + Transformer = trFunc // func(T) R + ValueFilter = ttbFunc // func(T, T) bool + Less = ttbFunc // func(T, T) bool + ValuePredicate = tbFunc // func(T) bool + KeyValuePredicate = trbFunc // func(T, R) bool +) + +var boolType = reflect.TypeOf(true) + +// IsType reports whether the reflect.Type is of the specified function type. +func IsType(t reflect.Type, ft funcType) bool { + if t == nil || t.Kind() != reflect.Func || t.IsVariadic() { + return false + } + ni, no := t.NumIn(), t.NumOut() + switch ft { + case tbFunc: // func(T) bool + if ni == 1 && no == 1 && t.Out(0) == boolType { + return true + } + case ttbFunc: // func(T, T) bool + if ni == 2 && no == 1 && t.In(0) == t.In(1) && t.Out(0) == boolType { + return true + } + case trbFunc: // func(T, R) bool + if ni == 2 && no == 1 && t.Out(0) == boolType { + return true + } + case tibFunc: // func(T, I) bool + if ni == 2 && no == 1 && t.In(0).AssignableTo(t.In(1)) && t.Out(0) == boolType { + return true + } + case trFunc: // func(T) R + if ni == 1 && no == 1 { + return true + } + } + return false +} + +var lastIdentRx = regexp.MustCompile(`[_\p{L}][_\p{L}\p{N}]*$`) + +// NameOf returns the name of the function value. +func NameOf(v reflect.Value) string { + fnc := runtime.FuncForPC(v.Pointer()) + if fnc == nil { + return "" + } + fullName := fnc.Name() // e.g., "long/path/name/mypkg.(*MyType).(long/path/name/mypkg.myMethod)-fm" + + // Method closures have a "-fm" suffix. + fullName = strings.TrimSuffix(fullName, "-fm") + + var name string + for len(fullName) > 0 { + inParen := strings.HasSuffix(fullName, ")") + fullName = strings.TrimSuffix(fullName, ")") + + s := lastIdentRx.FindString(fullName) + if s == "" { + break + } + name = s + "." + name + fullName = strings.TrimSuffix(fullName, s) + + if i := strings.LastIndexByte(fullName, '('); inParen && i >= 0 { + fullName = fullName[:i] + } + fullName = strings.TrimSuffix(fullName, ".") + } + return strings.TrimSuffix(name, ".") +} diff --git a/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_purego.go b/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_purego.go new file mode 100644 index 0000000..0a01c47 --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_purego.go @@ -0,0 +1,23 @@ +// Copyright 2018, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +// +build purego + +package value + +import "reflect" + +// Pointer is an opaque typed pointer and is guaranteed to be comparable. +type Pointer struct { + p uintptr + t reflect.Type +} + +// PointerOf returns a Pointer from v, which must be a +// reflect.Ptr, reflect.Slice, or reflect.Map. +func PointerOf(v reflect.Value) Pointer { + // NOTE: Storing a pointer as an uintptr is technically incorrect as it + // assumes that the GC implementation does not use a moving collector. + return Pointer{v.Pointer(), v.Type()} +} diff --git a/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_unsafe.go b/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_unsafe.go new file mode 100644 index 0000000..da134ae --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_unsafe.go @@ -0,0 +1,26 @@ +// Copyright 2018, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +// +build !purego + +package value + +import ( + "reflect" + "unsafe" +) + +// Pointer is an opaque typed pointer and is guaranteed to be comparable. +type Pointer struct { + p unsafe.Pointer + t reflect.Type +} + +// PointerOf returns a Pointer from v, which must be a +// reflect.Ptr, reflect.Slice, or reflect.Map. +func PointerOf(v reflect.Value) Pointer { + // The proper representation of a pointer is unsafe.Pointer, + // which is necessary if the GC ever uses a moving collector. + return Pointer{unsafe.Pointer(v.Pointer()), v.Type()} +} diff --git a/vendor/github.com/google/go-cmp/cmp/internal/value/sort.go b/vendor/github.com/google/go-cmp/cmp/internal/value/sort.go new file mode 100644 index 0000000..24fbae6 --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/internal/value/sort.go @@ -0,0 +1,106 @@ +// Copyright 2017, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +package value + +import ( + "fmt" + "math" + "reflect" + "sort" +) + +// SortKeys sorts a list of map keys, deduplicating keys if necessary. +// The type of each value must be comparable. +func SortKeys(vs []reflect.Value) []reflect.Value { + if len(vs) == 0 { + return vs + } + + // Sort the map keys. + sort.SliceStable(vs, func(i, j int) bool { return isLess(vs[i], vs[j]) }) + + // Deduplicate keys (fails for NaNs). + vs2 := vs[:1] + for _, v := range vs[1:] { + if isLess(vs2[len(vs2)-1], v) { + vs2 = append(vs2, v) + } + } + return vs2 +} + +// isLess is a generic function for sorting arbitrary map keys. +// The inputs must be of the same type and must be comparable. +func isLess(x, y reflect.Value) bool { + switch x.Type().Kind() { + case reflect.Bool: + return !x.Bool() && y.Bool() + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return x.Int() < y.Int() + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return x.Uint() < y.Uint() + case reflect.Float32, reflect.Float64: + // NOTE: This does not sort -0 as less than +0 + // since Go maps treat -0 and +0 as equal keys. + fx, fy := x.Float(), y.Float() + return fx < fy || math.IsNaN(fx) && !math.IsNaN(fy) + case reflect.Complex64, reflect.Complex128: + cx, cy := x.Complex(), y.Complex() + rx, ix, ry, iy := real(cx), imag(cx), real(cy), imag(cy) + if rx == ry || (math.IsNaN(rx) && math.IsNaN(ry)) { + return ix < iy || math.IsNaN(ix) && !math.IsNaN(iy) + } + return rx < ry || math.IsNaN(rx) && !math.IsNaN(ry) + case reflect.Ptr, reflect.UnsafePointer, reflect.Chan: + return x.Pointer() < y.Pointer() + case reflect.String: + return x.String() < y.String() + case reflect.Array: + for i := 0; i < x.Len(); i++ { + if isLess(x.Index(i), y.Index(i)) { + return true + } + if isLess(y.Index(i), x.Index(i)) { + return false + } + } + return false + case reflect.Struct: + for i := 0; i < x.NumField(); i++ { + if isLess(x.Field(i), y.Field(i)) { + return true + } + if isLess(y.Field(i), x.Field(i)) { + return false + } + } + return false + case reflect.Interface: + vx, vy := x.Elem(), y.Elem() + if !vx.IsValid() || !vy.IsValid() { + return !vx.IsValid() && vy.IsValid() + } + tx, ty := vx.Type(), vy.Type() + if tx == ty { + return isLess(x.Elem(), y.Elem()) + } + if tx.Kind() != ty.Kind() { + return vx.Kind() < vy.Kind() + } + if tx.String() != ty.String() { + return tx.String() < ty.String() + } + if tx.PkgPath() != ty.PkgPath() { + return tx.PkgPath() < ty.PkgPath() + } + // This can happen in rare situations, so we fallback to just comparing + // the unique pointer for a reflect.Type. This guarantees deterministic + // ordering within a program, but it is obviously not stable. + return reflect.ValueOf(vx.Type()).Pointer() < reflect.ValueOf(vy.Type()).Pointer() + default: + // Must be Func, Map, or Slice; which are not comparable. + panic(fmt.Sprintf("%T is not comparable", x.Type())) + } +} diff --git a/vendor/github.com/google/go-cmp/cmp/internal/value/zero.go b/vendor/github.com/google/go-cmp/cmp/internal/value/zero.go new file mode 100644 index 0000000..06a8ffd --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/internal/value/zero.go @@ -0,0 +1,48 @@ +// Copyright 2017, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +package value + +import ( + "math" + "reflect" +) + +// IsZero reports whether v is the zero value. +// This does not rely on Interface and so can be used on unexported fields. +func IsZero(v reflect.Value) bool { + switch v.Kind() { + case reflect.Bool: + return v.Bool() == false + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return v.Int() == 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return v.Uint() == 0 + case reflect.Float32, reflect.Float64: + return math.Float64bits(v.Float()) == 0 + case reflect.Complex64, reflect.Complex128: + return math.Float64bits(real(v.Complex())) == 0 && math.Float64bits(imag(v.Complex())) == 0 + case reflect.String: + return v.String() == "" + case reflect.UnsafePointer: + return v.Pointer() == 0 + case reflect.Chan, reflect.Func, reflect.Interface, reflect.Ptr, reflect.Map, reflect.Slice: + return v.IsNil() + case reflect.Array: + for i := 0; i < v.Len(); i++ { + if !IsZero(v.Index(i)) { + return false + } + } + return true + case reflect.Struct: + for i := 0; i < v.NumField(); i++ { + if !IsZero(v.Field(i)) { + return false + } + } + return true + } + return false +} diff --git a/vendor/github.com/google/go-cmp/cmp/options.go b/vendor/github.com/google/go-cmp/cmp/options.go new file mode 100644 index 0000000..7934481 --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/options.go @@ -0,0 +1,524 @@ +// Copyright 2017, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +package cmp + +import ( + "fmt" + "reflect" + "regexp" + "strings" + + "github.com/google/go-cmp/cmp/internal/function" +) + +// Option configures for specific behavior of Equal and Diff. In particular, +// the fundamental Option functions (Ignore, Transformer, and Comparer), +// configure how equality is determined. +// +// The fundamental options may be composed with filters (FilterPath and +// FilterValues) to control the scope over which they are applied. +// +// The cmp/cmpopts package provides helper functions for creating options that +// may be used with Equal and Diff. +type Option interface { + // filter applies all filters and returns the option that remains. + // Each option may only read s.curPath and call s.callTTBFunc. + // + // An Options is returned only if multiple comparers or transformers + // can apply simultaneously and will only contain values of those types + // or sub-Options containing values of those types. + filter(s *state, t reflect.Type, vx, vy reflect.Value) applicableOption +} + +// applicableOption represents the following types: +// Fundamental: ignore | validator | *comparer | *transformer +// Grouping: Options +type applicableOption interface { + Option + + // apply executes the option, which may mutate s or panic. + apply(s *state, vx, vy reflect.Value) +} + +// coreOption represents the following types: +// Fundamental: ignore | validator | *comparer | *transformer +// Filters: *pathFilter | *valuesFilter +type coreOption interface { + Option + isCore() +} + +type core struct{} + +func (core) isCore() {} + +// Options is a list of Option values that also satisfies the Option interface. +// Helper comparison packages may return an Options value when packing multiple +// Option values into a single Option. When this package processes an Options, +// it will be implicitly expanded into a flat list. +// +// Applying a filter on an Options is equivalent to applying that same filter +// on all individual options held within. +type Options []Option + +func (opts Options) filter(s *state, t reflect.Type, vx, vy reflect.Value) (out applicableOption) { + for _, opt := range opts { + switch opt := opt.filter(s, t, vx, vy); opt.(type) { + case ignore: + return ignore{} // Only ignore can short-circuit evaluation + case validator: + out = validator{} // Takes precedence over comparer or transformer + case *comparer, *transformer, Options: + switch out.(type) { + case nil: + out = opt + case validator: + // Keep validator + case *comparer, *transformer, Options: + out = Options{out, opt} // Conflicting comparers or transformers + } + } + } + return out +} + +func (opts Options) apply(s *state, _, _ reflect.Value) { + const warning = "ambiguous set of applicable options" + const help = "consider using filters to ensure at most one Comparer or Transformer may apply" + var ss []string + for _, opt := range flattenOptions(nil, opts) { + ss = append(ss, fmt.Sprint(opt)) + } + set := strings.Join(ss, "\n\t") + panic(fmt.Sprintf("%s at %#v:\n\t%s\n%s", warning, s.curPath, set, help)) +} + +func (opts Options) String() string { + var ss []string + for _, opt := range opts { + ss = append(ss, fmt.Sprint(opt)) + } + return fmt.Sprintf("Options{%s}", strings.Join(ss, ", ")) +} + +// FilterPath returns a new Option where opt is only evaluated if filter f +// returns true for the current Path in the value tree. +// +// This filter is called even if a slice element or map entry is missing and +// provides an opportunity to ignore such cases. The filter function must be +// symmetric such that the filter result is identical regardless of whether the +// missing value is from x or y. +// +// The option passed in may be an Ignore, Transformer, Comparer, Options, or +// a previously filtered Option. +func FilterPath(f func(Path) bool, opt Option) Option { + if f == nil { + panic("invalid path filter function") + } + if opt := normalizeOption(opt); opt != nil { + return &pathFilter{fnc: f, opt: opt} + } + return nil +} + +type pathFilter struct { + core + fnc func(Path) bool + opt Option +} + +func (f pathFilter) filter(s *state, t reflect.Type, vx, vy reflect.Value) applicableOption { + if f.fnc(s.curPath) { + return f.opt.filter(s, t, vx, vy) + } + return nil +} + +func (f pathFilter) String() string { + return fmt.Sprintf("FilterPath(%s, %v)", function.NameOf(reflect.ValueOf(f.fnc)), f.opt) +} + +// FilterValues returns a new Option where opt is only evaluated if filter f, +// which is a function of the form "func(T, T) bool", returns true for the +// current pair of values being compared. If either value is invalid or +// the type of the values is not assignable to T, then this filter implicitly +// returns false. +// +// The filter function must be +// symmetric (i.e., agnostic to the order of the inputs) and +// deterministic (i.e., produces the same result when given the same inputs). +// If T is an interface, it is possible that f is called with two values with +// different concrete types that both implement T. +// +// The option passed in may be an Ignore, Transformer, Comparer, Options, or +// a previously filtered Option. +func FilterValues(f interface{}, opt Option) Option { + v := reflect.ValueOf(f) + if !function.IsType(v.Type(), function.ValueFilter) || v.IsNil() { + panic(fmt.Sprintf("invalid values filter function: %T", f)) + } + if opt := normalizeOption(opt); opt != nil { + vf := &valuesFilter{fnc: v, opt: opt} + if ti := v.Type().In(0); ti.Kind() != reflect.Interface || ti.NumMethod() > 0 { + vf.typ = ti + } + return vf + } + return nil +} + +type valuesFilter struct { + core + typ reflect.Type // T + fnc reflect.Value // func(T, T) bool + opt Option +} + +func (f valuesFilter) filter(s *state, t reflect.Type, vx, vy reflect.Value) applicableOption { + if !vx.IsValid() || !vx.CanInterface() || !vy.IsValid() || !vy.CanInterface() { + return nil + } + if (f.typ == nil || t.AssignableTo(f.typ)) && s.callTTBFunc(f.fnc, vx, vy) { + return f.opt.filter(s, t, vx, vy) + } + return nil +} + +func (f valuesFilter) String() string { + return fmt.Sprintf("FilterValues(%s, %v)", function.NameOf(f.fnc), f.opt) +} + +// Ignore is an Option that causes all comparisons to be ignored. +// This value is intended to be combined with FilterPath or FilterValues. +// It is an error to pass an unfiltered Ignore option to Equal. +func Ignore() Option { return ignore{} } + +type ignore struct{ core } + +func (ignore) isFiltered() bool { return false } +func (ignore) filter(_ *state, _ reflect.Type, _, _ reflect.Value) applicableOption { return ignore{} } +func (ignore) apply(s *state, _, _ reflect.Value) { s.report(true, reportByIgnore) } +func (ignore) String() string { return "Ignore()" } + +// validator is a sentinel Option type to indicate that some options could not +// be evaluated due to unexported fields, missing slice elements, or +// missing map entries. Both values are validator only for unexported fields. +type validator struct{ core } + +func (validator) filter(_ *state, _ reflect.Type, vx, vy reflect.Value) applicableOption { + if !vx.IsValid() || !vy.IsValid() { + return validator{} + } + if !vx.CanInterface() || !vy.CanInterface() { + return validator{} + } + return nil +} +func (validator) apply(s *state, vx, vy reflect.Value) { + // Implies missing slice element or map entry. + if !vx.IsValid() || !vy.IsValid() { + s.report(vx.IsValid() == vy.IsValid(), 0) + return + } + + // Unable to Interface implies unexported field without visibility access. + if !vx.CanInterface() || !vy.CanInterface() { + const help = "consider using a custom Comparer; if you control the implementation of type, you can also consider AllowUnexported or cmpopts.IgnoreUnexported" + panic(fmt.Sprintf("cannot handle unexported field: %#v\n%s", s.curPath, help)) + } + + panic("not reachable") +} + +// identRx represents a valid identifier according to the Go specification. +const identRx = `[_\p{L}][_\p{L}\p{N}]*` + +var identsRx = regexp.MustCompile(`^` + identRx + `(\.` + identRx + `)*$`) + +// Transformer returns an Option that applies a transformation function that +// converts values of a certain type into that of another. +// +// The transformer f must be a function "func(T) R" that converts values of +// type T to those of type R and is implicitly filtered to input values +// assignable to T. The transformer must not mutate T in any way. +// +// To help prevent some cases of infinite recursive cycles applying the +// same transform to the output of itself (e.g., in the case where the +// input and output types are the same), an implicit filter is added such that +// a transformer is applicable only if that exact transformer is not already +// in the tail of the Path since the last non-Transform step. +// For situations where the implicit filter is still insufficient, +// consider using cmpopts.AcyclicTransformer, which adds a filter +// to prevent the transformer from being recursively applied upon itself. +// +// The name is a user provided label that is used as the Transform.Name in the +// transformation PathStep (and eventually shown in the Diff output). +// The name must be a valid identifier or qualified identifier in Go syntax. +// If empty, an arbitrary name is used. +func Transformer(name string, f interface{}) Option { + v := reflect.ValueOf(f) + if !function.IsType(v.Type(), function.Transformer) || v.IsNil() { + panic(fmt.Sprintf("invalid transformer function: %T", f)) + } + if name == "" { + name = function.NameOf(v) + if !identsRx.MatchString(name) { + name = "λ" // Lambda-symbol as placeholder name + } + } else if !identsRx.MatchString(name) { + panic(fmt.Sprintf("invalid name: %q", name)) + } + tr := &transformer{name: name, fnc: reflect.ValueOf(f)} + if ti := v.Type().In(0); ti.Kind() != reflect.Interface || ti.NumMethod() > 0 { + tr.typ = ti + } + return tr +} + +type transformer struct { + core + name string + typ reflect.Type // T + fnc reflect.Value // func(T) R +} + +func (tr *transformer) isFiltered() bool { return tr.typ != nil } + +func (tr *transformer) filter(s *state, t reflect.Type, _, _ reflect.Value) applicableOption { + for i := len(s.curPath) - 1; i >= 0; i-- { + if t, ok := s.curPath[i].(Transform); !ok { + break // Hit most recent non-Transform step + } else if tr == t.trans { + return nil // Cannot directly use same Transform + } + } + if tr.typ == nil || t.AssignableTo(tr.typ) { + return tr + } + return nil +} + +func (tr *transformer) apply(s *state, vx, vy reflect.Value) { + step := Transform{&transform{pathStep{typ: tr.fnc.Type().Out(0)}, tr}} + vvx := s.callTRFunc(tr.fnc, vx, step) + vvy := s.callTRFunc(tr.fnc, vy, step) + step.vx, step.vy = vvx, vvy + s.compareAny(step) +} + +func (tr transformer) String() string { + return fmt.Sprintf("Transformer(%s, %s)", tr.name, function.NameOf(tr.fnc)) +} + +// Comparer returns an Option that determines whether two values are equal +// to each other. +// +// The comparer f must be a function "func(T, T) bool" and is implicitly +// filtered to input values assignable to T. If T is an interface, it is +// possible that f is called with two values of different concrete types that +// both implement T. +// +// The equality function must be: +// • Symmetric: equal(x, y) == equal(y, x) +// • Deterministic: equal(x, y) == equal(x, y) +// • Pure: equal(x, y) does not modify x or y +func Comparer(f interface{}) Option { + v := reflect.ValueOf(f) + if !function.IsType(v.Type(), function.Equal) || v.IsNil() { + panic(fmt.Sprintf("invalid comparer function: %T", f)) + } + cm := &comparer{fnc: v} + if ti := v.Type().In(0); ti.Kind() != reflect.Interface || ti.NumMethod() > 0 { + cm.typ = ti + } + return cm +} + +type comparer struct { + core + typ reflect.Type // T + fnc reflect.Value // func(T, T) bool +} + +func (cm *comparer) isFiltered() bool { return cm.typ != nil } + +func (cm *comparer) filter(_ *state, t reflect.Type, _, _ reflect.Value) applicableOption { + if cm.typ == nil || t.AssignableTo(cm.typ) { + return cm + } + return nil +} + +func (cm *comparer) apply(s *state, vx, vy reflect.Value) { + eq := s.callTTBFunc(cm.fnc, vx, vy) + s.report(eq, reportByFunc) +} + +func (cm comparer) String() string { + return fmt.Sprintf("Comparer(%s)", function.NameOf(cm.fnc)) +} + +// AllowUnexported returns an Option that forcibly allows operations on +// unexported fields in certain structs, which are specified by passing in a +// value of each struct type. +// +// Users of this option must understand that comparing on unexported fields +// from external packages is not safe since changes in the internal +// implementation of some external package may cause the result of Equal +// to unexpectedly change. However, it may be valid to use this option on types +// defined in an internal package where the semantic meaning of an unexported +// field is in the control of the user. +// +// In many cases, a custom Comparer should be used instead that defines +// equality as a function of the public API of a type rather than the underlying +// unexported implementation. +// +// For example, the reflect.Type documentation defines equality to be determined +// by the == operator on the interface (essentially performing a shallow pointer +// comparison) and most attempts to compare *regexp.Regexp types are interested +// in only checking that the regular expression strings are equal. +// Both of these are accomplished using Comparers: +// +// Comparer(func(x, y reflect.Type) bool { return x == y }) +// Comparer(func(x, y *regexp.Regexp) bool { return x.String() == y.String() }) +// +// In other cases, the cmpopts.IgnoreUnexported option can be used to ignore +// all unexported fields on specified struct types. +func AllowUnexported(types ...interface{}) Option { + if !supportAllowUnexported { + panic("AllowUnexported is not supported on purego builds, Google App Engine Standard, or GopherJS") + } + m := make(map[reflect.Type]bool) + for _, typ := range types { + t := reflect.TypeOf(typ) + if t.Kind() != reflect.Struct { + panic(fmt.Sprintf("invalid struct type: %T", typ)) + } + m[t] = true + } + return visibleStructs(m) +} + +type visibleStructs map[reflect.Type]bool + +func (visibleStructs) filter(_ *state, _ reflect.Type, _, _ reflect.Value) applicableOption { + panic("not implemented") +} + +// Result represents the comparison result for a single node and +// is provided by cmp when calling Result (see Reporter). +type Result struct { + _ [0]func() // Make Result incomparable + flags resultFlags +} + +// Equal reports whether the node was determined to be equal or not. +// As a special case, ignored nodes are considered equal. +func (r Result) Equal() bool { + return r.flags&(reportEqual|reportByIgnore) != 0 +} + +// ByIgnore reports whether the node is equal because it was ignored. +// This never reports true if Equal reports false. +func (r Result) ByIgnore() bool { + return r.flags&reportByIgnore != 0 +} + +// ByMethod reports whether the Equal method determined equality. +func (r Result) ByMethod() bool { + return r.flags&reportByMethod != 0 +} + +// ByFunc reports whether a Comparer function determined equality. +func (r Result) ByFunc() bool { + return r.flags&reportByFunc != 0 +} + +type resultFlags uint + +const ( + _ resultFlags = (1 << iota) / 2 + + reportEqual + reportUnequal + reportByIgnore + reportByMethod + reportByFunc +) + +// Reporter is an Option that can be passed to Equal. When Equal traverses +// the value trees, it calls PushStep as it descends into each node in the +// tree and PopStep as it ascend out of the node. The leaves of the tree are +// either compared (determined to be equal or not equal) or ignored and reported +// as such by calling the Report method. +func Reporter(r interface { + // PushStep is called when a tree-traversal operation is performed. + // The PathStep itself is only valid until the step is popped. + // The PathStep.Values are valid for the duration of the entire traversal + // and must not be mutated. + // + // Equal always calls PushStep at the start to provide an operation-less + // PathStep used to report the root values. + // + // Within a slice, the exact set of inserted, removed, or modified elements + // is unspecified and may change in future implementations. + // The entries of a map are iterated through in an unspecified order. + PushStep(PathStep) + + // Report is called exactly once on leaf nodes to report whether the + // comparison identified the node as equal, unequal, or ignored. + // A leaf node is one that is immediately preceded by and followed by + // a pair of PushStep and PopStep calls. + Report(Result) + + // PopStep ascends back up the value tree. + // There is always a matching pop call for every push call. + PopStep() +}) Option { + return reporter{r} +} + +type reporter struct{ reporterIface } +type reporterIface interface { + PushStep(PathStep) + Report(Result) + PopStep() +} + +func (reporter) filter(_ *state, _ reflect.Type, _, _ reflect.Value) applicableOption { + panic("not implemented") +} + +// normalizeOption normalizes the input options such that all Options groups +// are flattened and groups with a single element are reduced to that element. +// Only coreOptions and Options containing coreOptions are allowed. +func normalizeOption(src Option) Option { + switch opts := flattenOptions(nil, Options{src}); len(opts) { + case 0: + return nil + case 1: + return opts[0] + default: + return opts + } +} + +// flattenOptions copies all options in src to dst as a flat list. +// Only coreOptions and Options containing coreOptions are allowed. +func flattenOptions(dst, src Options) Options { + for _, opt := range src { + switch opt := opt.(type) { + case nil: + continue + case Options: + dst = flattenOptions(dst, opt) + case coreOption: + dst = append(dst, opt) + default: + panic(fmt.Sprintf("invalid option type: %T", opt)) + } + } + return dst +} diff --git a/vendor/github.com/google/go-cmp/cmp/path.go b/vendor/github.com/google/go-cmp/cmp/path.go new file mode 100644 index 0000000..96fffd2 --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/path.go @@ -0,0 +1,308 @@ +// Copyright 2017, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +package cmp + +import ( + "fmt" + "reflect" + "strings" + "unicode" + "unicode/utf8" +) + +// Path is a list of PathSteps describing the sequence of operations to get +// from some root type to the current position in the value tree. +// The first Path element is always an operation-less PathStep that exists +// simply to identify the initial type. +// +// When traversing structs with embedded structs, the embedded struct will +// always be accessed as a field before traversing the fields of the +// embedded struct themselves. That is, an exported field from the +// embedded struct will never be accessed directly from the parent struct. +type Path []PathStep + +// PathStep is a union-type for specific operations to traverse +// a value's tree structure. Users of this package never need to implement +// these types as values of this type will be returned by this package. +// +// Implementations of this interface are +// StructField, SliceIndex, MapIndex, Indirect, TypeAssertion, and Transform. +type PathStep interface { + String() string + + // Type is the resulting type after performing the path step. + Type() reflect.Type + + // Values is the resulting values after performing the path step. + // The type of each valid value is guaranteed to be identical to Type. + // + // In some cases, one or both may be invalid or have restrictions: + // • For StructField, both are not interface-able if the current field + // is unexported and the struct type is not explicitly permitted by + // AllowUnexported to traverse unexported fields. + // • For SliceIndex, one may be invalid if an element is missing from + // either the x or y slice. + // • For MapIndex, one may be invalid if an entry is missing from + // either the x or y map. + // + // The provided values must not be mutated. + Values() (vx, vy reflect.Value) +} + +var ( + _ PathStep = StructField{} + _ PathStep = SliceIndex{} + _ PathStep = MapIndex{} + _ PathStep = Indirect{} + _ PathStep = TypeAssertion{} + _ PathStep = Transform{} +) + +func (pa *Path) push(s PathStep) { + *pa = append(*pa, s) +} + +func (pa *Path) pop() { + *pa = (*pa)[:len(*pa)-1] +} + +// Last returns the last PathStep in the Path. +// If the path is empty, this returns a non-nil PathStep that reports a nil Type. +func (pa Path) Last() PathStep { + return pa.Index(-1) +} + +// Index returns the ith step in the Path and supports negative indexing. +// A negative index starts counting from the tail of the Path such that -1 +// refers to the last step, -2 refers to the second-to-last step, and so on. +// If index is invalid, this returns a non-nil PathStep that reports a nil Type. +func (pa Path) Index(i int) PathStep { + if i < 0 { + i = len(pa) + i + } + if i < 0 || i >= len(pa) { + return pathStep{} + } + return pa[i] +} + +// String returns the simplified path to a node. +// The simplified path only contains struct field accesses. +// +// For example: +// MyMap.MySlices.MyField +func (pa Path) String() string { + var ss []string + for _, s := range pa { + if _, ok := s.(StructField); ok { + ss = append(ss, s.String()) + } + } + return strings.TrimPrefix(strings.Join(ss, ""), ".") +} + +// GoString returns the path to a specific node using Go syntax. +// +// For example: +// (*root.MyMap["key"].(*mypkg.MyStruct).MySlices)[2][3].MyField +func (pa Path) GoString() string { + var ssPre, ssPost []string + var numIndirect int + for i, s := range pa { + var nextStep PathStep + if i+1 < len(pa) { + nextStep = pa[i+1] + } + switch s := s.(type) { + case Indirect: + numIndirect++ + pPre, pPost := "(", ")" + switch nextStep.(type) { + case Indirect: + continue // Next step is indirection, so let them batch up + case StructField: + numIndirect-- // Automatic indirection on struct fields + case nil: + pPre, pPost = "", "" // Last step; no need for parenthesis + } + if numIndirect > 0 { + ssPre = append(ssPre, pPre+strings.Repeat("*", numIndirect)) + ssPost = append(ssPost, pPost) + } + numIndirect = 0 + continue + case Transform: + ssPre = append(ssPre, s.trans.name+"(") + ssPost = append(ssPost, ")") + continue + } + ssPost = append(ssPost, s.String()) + } + for i, j := 0, len(ssPre)-1; i < j; i, j = i+1, j-1 { + ssPre[i], ssPre[j] = ssPre[j], ssPre[i] + } + return strings.Join(ssPre, "") + strings.Join(ssPost, "") +} + +type pathStep struct { + typ reflect.Type + vx, vy reflect.Value +} + +func (ps pathStep) Type() reflect.Type { return ps.typ } +func (ps pathStep) Values() (vx, vy reflect.Value) { return ps.vx, ps.vy } +func (ps pathStep) String() string { + if ps.typ == nil { + return "" + } + s := ps.typ.String() + if s == "" || strings.ContainsAny(s, "{}\n") { + return "root" // Type too simple or complex to print + } + return fmt.Sprintf("{%s}", s) +} + +// StructField represents a struct field access on a field called Name. +type StructField struct{ *structField } +type structField struct { + pathStep + name string + idx int + + // These fields are used for forcibly accessing an unexported field. + // pvx, pvy, and field are only valid if unexported is true. + unexported bool + mayForce bool // Forcibly allow visibility + pvx, pvy reflect.Value // Parent values + field reflect.StructField // Field information +} + +func (sf StructField) Type() reflect.Type { return sf.typ } +func (sf StructField) Values() (vx, vy reflect.Value) { + if !sf.unexported { + return sf.vx, sf.vy // CanInterface reports true + } + + // Forcibly obtain read-write access to an unexported struct field. + if sf.mayForce { + vx = retrieveUnexportedField(sf.pvx, sf.field) + vy = retrieveUnexportedField(sf.pvy, sf.field) + return vx, vy // CanInterface reports true + } + return sf.vx, sf.vy // CanInterface reports false +} +func (sf StructField) String() string { return fmt.Sprintf(".%s", sf.name) } + +// Name is the field name. +func (sf StructField) Name() string { return sf.name } + +// Index is the index of the field in the parent struct type. +// See reflect.Type.Field. +func (sf StructField) Index() int { return sf.idx } + +// SliceIndex is an index operation on a slice or array at some index Key. +type SliceIndex struct{ *sliceIndex } +type sliceIndex struct { + pathStep + xkey, ykey int +} + +func (si SliceIndex) Type() reflect.Type { return si.typ } +func (si SliceIndex) Values() (vx, vy reflect.Value) { return si.vx, si.vy } +func (si SliceIndex) String() string { + switch { + case si.xkey == si.ykey: + return fmt.Sprintf("[%d]", si.xkey) + case si.ykey == -1: + // [5->?] means "I don't know where X[5] went" + return fmt.Sprintf("[%d->?]", si.xkey) + case si.xkey == -1: + // [?->3] means "I don't know where Y[3] came from" + return fmt.Sprintf("[?->%d]", si.ykey) + default: + // [5->3] means "X[5] moved to Y[3]" + return fmt.Sprintf("[%d->%d]", si.xkey, si.ykey) + } +} + +// Key is the index key; it may return -1 if in a split state +func (si SliceIndex) Key() int { + if si.xkey != si.ykey { + return -1 + } + return si.xkey +} + +// SplitKeys are the indexes for indexing into slices in the +// x and y values, respectively. These indexes may differ due to the +// insertion or removal of an element in one of the slices, causing +// all of the indexes to be shifted. If an index is -1, then that +// indicates that the element does not exist in the associated slice. +// +// Key is guaranteed to return -1 if and only if the indexes returned +// by SplitKeys are not the same. SplitKeys will never return -1 for +// both indexes. +func (si SliceIndex) SplitKeys() (ix, iy int) { return si.xkey, si.ykey } + +// MapIndex is an index operation on a map at some index Key. +type MapIndex struct{ *mapIndex } +type mapIndex struct { + pathStep + key reflect.Value +} + +func (mi MapIndex) Type() reflect.Type { return mi.typ } +func (mi MapIndex) Values() (vx, vy reflect.Value) { return mi.vx, mi.vy } +func (mi MapIndex) String() string { return fmt.Sprintf("[%#v]", mi.key) } + +// Key is the value of the map key. +func (mi MapIndex) Key() reflect.Value { return mi.key } + +// Indirect represents pointer indirection on the parent type. +type Indirect struct{ *indirect } +type indirect struct { + pathStep +} + +func (in Indirect) Type() reflect.Type { return in.typ } +func (in Indirect) Values() (vx, vy reflect.Value) { return in.vx, in.vy } +func (in Indirect) String() string { return "*" } + +// TypeAssertion represents a type assertion on an interface. +type TypeAssertion struct{ *typeAssertion } +type typeAssertion struct { + pathStep +} + +func (ta TypeAssertion) Type() reflect.Type { return ta.typ } +func (ta TypeAssertion) Values() (vx, vy reflect.Value) { return ta.vx, ta.vy } +func (ta TypeAssertion) String() string { return fmt.Sprintf(".(%v)", ta.typ) } + +// Transform is a transformation from the parent type to the current type. +type Transform struct{ *transform } +type transform struct { + pathStep + trans *transformer +} + +func (tf Transform) Type() reflect.Type { return tf.typ } +func (tf Transform) Values() (vx, vy reflect.Value) { return tf.vx, tf.vy } +func (tf Transform) String() string { return fmt.Sprintf("%s()", tf.trans.name) } + +// Name is the name of the Transformer. +func (tf Transform) Name() string { return tf.trans.name } + +// Func is the function pointer to the transformer function. +func (tf Transform) Func() reflect.Value { return tf.trans.fnc } + +// Option returns the originally constructed Transformer option. +// The == operator can be used to detect the exact option used. +func (tf Transform) Option() Option { return tf.trans } + +// isExported reports whether the identifier is exported. +func isExported(id string) bool { + r, _ := utf8.DecodeRuneInString(id) + return unicode.IsUpper(r) +} diff --git a/vendor/github.com/google/go-cmp/cmp/report.go b/vendor/github.com/google/go-cmp/cmp/report.go new file mode 100644 index 0000000..6ddf299 --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/report.go @@ -0,0 +1,51 @@ +// Copyright 2017, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +package cmp + +// defaultReporter implements the reporter interface. +// +// As Equal serially calls the PushStep, Report, and PopStep methods, the +// defaultReporter constructs a tree-based representation of the compared value +// and the result of each comparison (see valueNode). +// +// When the String method is called, the FormatDiff method transforms the +// valueNode tree into a textNode tree, which is a tree-based representation +// of the textual output (see textNode). +// +// Lastly, the textNode.String method produces the final report as a string. +type defaultReporter struct { + root *valueNode + curr *valueNode +} + +func (r *defaultReporter) PushStep(ps PathStep) { + r.curr = r.curr.PushStep(ps) + if r.root == nil { + r.root = r.curr + } +} +func (r *defaultReporter) Report(rs Result) { + r.curr.Report(rs) +} +func (r *defaultReporter) PopStep() { + r.curr = r.curr.PopStep() +} + +// String provides a full report of the differences detected as a structured +// literal in pseudo-Go syntax. String may only be called after the entire tree +// has been traversed. +func (r *defaultReporter) String() string { + assert(r.root != nil && r.curr == nil) + if r.root.NumDiff == 0 { + return "" + } + return formatOptions{}.FormatDiff(r.root).String() +} + +func assert(ok bool) { + if !ok { + panic("assertion failure") + } +} diff --git a/vendor/github.com/google/go-cmp/cmp/report_compare.go b/vendor/github.com/google/go-cmp/cmp/report_compare.go new file mode 100644 index 0000000..17a05ee --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/report_compare.go @@ -0,0 +1,296 @@ +// Copyright 2019, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +package cmp + +import ( + "fmt" + "reflect" + + "github.com/google/go-cmp/cmp/internal/value" +) + +// TODO: Enforce limits? +// * Enforce maximum number of records to print per node? +// * Enforce maximum size in bytes allowed? +// * As a heuristic, use less verbosity for equal nodes than unequal nodes. +// TODO: Enforce unique outputs? +// * Avoid Stringer methods if it results in same output? +// * Print pointer address if outputs still equal? + +// numContextRecords is the number of surrounding equal records to print. +const numContextRecords = 2 + +type diffMode byte + +const ( + diffUnknown diffMode = 0 + diffIdentical diffMode = ' ' + diffRemoved diffMode = '-' + diffInserted diffMode = '+' +) + +type typeMode int + +const ( + // emitType always prints the type. + emitType typeMode = iota + // elideType never prints the type. + elideType + // autoType prints the type only for composite kinds + // (i.e., structs, slices, arrays, and maps). + autoType +) + +type formatOptions struct { + // DiffMode controls the output mode of FormatDiff. + // + // If diffUnknown, then produce a diff of the x and y values. + // If diffIdentical, then emit values as if they were equal. + // If diffRemoved, then only emit x values (ignoring y values). + // If diffInserted, then only emit y values (ignoring x values). + DiffMode diffMode + + // TypeMode controls whether to print the type for the current node. + // + // As a general rule of thumb, we always print the type of the next node + // after an interface, and always elide the type of the next node after + // a slice or map node. + TypeMode typeMode + + // formatValueOptions are options specific to printing reflect.Values. + formatValueOptions +} + +func (opts formatOptions) WithDiffMode(d diffMode) formatOptions { + opts.DiffMode = d + return opts +} +func (opts formatOptions) WithTypeMode(t typeMode) formatOptions { + opts.TypeMode = t + return opts +} + +// FormatDiff converts a valueNode tree into a textNode tree, where the later +// is a textual representation of the differences detected in the former. +func (opts formatOptions) FormatDiff(v *valueNode) textNode { + // Check whether we have specialized formatting for this node. + // This is not necessary, but helpful for producing more readable outputs. + if opts.CanFormatDiffSlice(v) { + return opts.FormatDiffSlice(v) + } + + // For leaf nodes, format the value based on the reflect.Values alone. + if v.MaxDepth == 0 { + switch opts.DiffMode { + case diffUnknown, diffIdentical: + // Format Equal. + if v.NumDiff == 0 { + outx := opts.FormatValue(v.ValueX, visitedPointers{}) + outy := opts.FormatValue(v.ValueY, visitedPointers{}) + if v.NumIgnored > 0 && v.NumSame == 0 { + return textEllipsis + } else if outx.Len() < outy.Len() { + return outx + } else { + return outy + } + } + + // Format unequal. + assert(opts.DiffMode == diffUnknown) + var list textList + outx := opts.WithTypeMode(elideType).FormatValue(v.ValueX, visitedPointers{}) + outy := opts.WithTypeMode(elideType).FormatValue(v.ValueY, visitedPointers{}) + if outx != nil { + list = append(list, textRecord{Diff: '-', Value: outx}) + } + if outy != nil { + list = append(list, textRecord{Diff: '+', Value: outy}) + } + return opts.WithTypeMode(emitType).FormatType(v.Type, list) + case diffRemoved: + return opts.FormatValue(v.ValueX, visitedPointers{}) + case diffInserted: + return opts.FormatValue(v.ValueY, visitedPointers{}) + default: + panic("invalid diff mode") + } + } + + // Descend into the child value node. + if v.TransformerName != "" { + out := opts.WithTypeMode(emitType).FormatDiff(v.Value) + out = textWrap{"Inverse(" + v.TransformerName + ", ", out, ")"} + return opts.FormatType(v.Type, out) + } else { + switch k := v.Type.Kind(); k { + case reflect.Struct, reflect.Array, reflect.Slice, reflect.Map: + return opts.FormatType(v.Type, opts.formatDiffList(v.Records, k)) + case reflect.Ptr: + return textWrap{"&", opts.FormatDiff(v.Value), ""} + case reflect.Interface: + return opts.WithTypeMode(emitType).FormatDiff(v.Value) + default: + panic(fmt.Sprintf("%v cannot have children", k)) + } + } +} + +func (opts formatOptions) formatDiffList(recs []reportRecord, k reflect.Kind) textNode { + // Derive record name based on the data structure kind. + var name string + var formatKey func(reflect.Value) string + switch k { + case reflect.Struct: + name = "field" + opts = opts.WithTypeMode(autoType) + formatKey = func(v reflect.Value) string { return v.String() } + case reflect.Slice, reflect.Array: + name = "element" + opts = opts.WithTypeMode(elideType) + formatKey = func(reflect.Value) string { return "" } + case reflect.Map: + name = "entry" + opts = opts.WithTypeMode(elideType) + formatKey = formatMapKey + } + + // Handle unification. + switch opts.DiffMode { + case diffIdentical, diffRemoved, diffInserted: + var list textList + var deferredEllipsis bool // Add final "..." to indicate records were dropped + for _, r := range recs { + // Elide struct fields that are zero value. + if k == reflect.Struct { + var isZero bool + switch opts.DiffMode { + case diffIdentical: + isZero = value.IsZero(r.Value.ValueX) || value.IsZero(r.Value.ValueY) + case diffRemoved: + isZero = value.IsZero(r.Value.ValueX) + case diffInserted: + isZero = value.IsZero(r.Value.ValueY) + } + if isZero { + continue + } + } + // Elide ignored nodes. + if r.Value.NumIgnored > 0 && r.Value.NumSame+r.Value.NumDiff == 0 { + deferredEllipsis = !(k == reflect.Slice || k == reflect.Array) + if !deferredEllipsis { + list.AppendEllipsis(diffStats{}) + } + continue + } + if out := opts.FormatDiff(r.Value); out != nil { + list = append(list, textRecord{Key: formatKey(r.Key), Value: out}) + } + } + if deferredEllipsis { + list.AppendEllipsis(diffStats{}) + } + return textWrap{"{", list, "}"} + case diffUnknown: + default: + panic("invalid diff mode") + } + + // Handle differencing. + var list textList + groups := coalesceAdjacentRecords(name, recs) + for i, ds := range groups { + // Handle equal records. + if ds.NumDiff() == 0 { + // Compute the number of leading and trailing records to print. + var numLo, numHi int + numEqual := ds.NumIgnored + ds.NumIdentical + for numLo < numContextRecords && numLo+numHi < numEqual && i != 0 { + if r := recs[numLo].Value; r.NumIgnored > 0 && r.NumSame+r.NumDiff == 0 { + break + } + numLo++ + } + for numHi < numContextRecords && numLo+numHi < numEqual && i != len(groups)-1 { + if r := recs[numEqual-numHi-1].Value; r.NumIgnored > 0 && r.NumSame+r.NumDiff == 0 { + break + } + numHi++ + } + if numEqual-(numLo+numHi) == 1 && ds.NumIgnored == 0 { + numHi++ // Avoid pointless coalescing of a single equal record + } + + // Format the equal values. + for _, r := range recs[:numLo] { + out := opts.WithDiffMode(diffIdentical).FormatDiff(r.Value) + list = append(list, textRecord{Key: formatKey(r.Key), Value: out}) + } + if numEqual > numLo+numHi { + ds.NumIdentical -= numLo + numHi + list.AppendEllipsis(ds) + } + for _, r := range recs[numEqual-numHi : numEqual] { + out := opts.WithDiffMode(diffIdentical).FormatDiff(r.Value) + list = append(list, textRecord{Key: formatKey(r.Key), Value: out}) + } + recs = recs[numEqual:] + continue + } + + // Handle unequal records. + for _, r := range recs[:ds.NumDiff()] { + switch { + case opts.CanFormatDiffSlice(r.Value): + out := opts.FormatDiffSlice(r.Value) + list = append(list, textRecord{Key: formatKey(r.Key), Value: out}) + case r.Value.NumChildren == r.Value.MaxDepth: + outx := opts.WithDiffMode(diffRemoved).FormatDiff(r.Value) + outy := opts.WithDiffMode(diffInserted).FormatDiff(r.Value) + if outx != nil { + list = append(list, textRecord{Diff: diffRemoved, Key: formatKey(r.Key), Value: outx}) + } + if outy != nil { + list = append(list, textRecord{Diff: diffInserted, Key: formatKey(r.Key), Value: outy}) + } + default: + out := opts.FormatDiff(r.Value) + list = append(list, textRecord{Key: formatKey(r.Key), Value: out}) + } + } + recs = recs[ds.NumDiff():] + } + assert(len(recs) == 0) + return textWrap{"{", list, "}"} +} + +// coalesceAdjacentRecords coalesces the list of records into groups of +// adjacent equal, or unequal counts. +func coalesceAdjacentRecords(name string, recs []reportRecord) (groups []diffStats) { + var prevCase int // Arbitrary index into which case last occurred + lastStats := func(i int) *diffStats { + if prevCase != i { + groups = append(groups, diffStats{Name: name}) + prevCase = i + } + return &groups[len(groups)-1] + } + for _, r := range recs { + switch rv := r.Value; { + case rv.NumIgnored > 0 && rv.NumSame+rv.NumDiff == 0: + lastStats(1).NumIgnored++ + case rv.NumDiff == 0: + lastStats(1).NumIdentical++ + case rv.NumDiff > 0 && !rv.ValueY.IsValid(): + lastStats(2).NumRemoved++ + case rv.NumDiff > 0 && !rv.ValueX.IsValid(): + lastStats(2).NumInserted++ + default: + lastStats(2).NumModified++ + } + } + return groups +} diff --git a/vendor/github.com/google/go-cmp/cmp/report_reflect.go b/vendor/github.com/google/go-cmp/cmp/report_reflect.go new file mode 100644 index 0000000..2761b62 --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/report_reflect.go @@ -0,0 +1,278 @@ +// Copyright 2019, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +package cmp + +import ( + "fmt" + "reflect" + "strconv" + "strings" + "unicode" + + "github.com/google/go-cmp/cmp/internal/flags" + "github.com/google/go-cmp/cmp/internal/value" +) + +type formatValueOptions struct { + // AvoidStringer controls whether to avoid calling custom stringer + // methods like error.Error or fmt.Stringer.String. + AvoidStringer bool + + // ShallowPointers controls whether to avoid descending into pointers. + // Useful when printing map keys, where pointer comparison is performed + // on the pointer address rather than the pointed-at value. + ShallowPointers bool + + // PrintAddresses controls whether to print the address of all pointers, + // slice elements, and maps. + PrintAddresses bool +} + +// FormatType prints the type as if it were wrapping s. +// This may return s as-is depending on the current type and TypeMode mode. +func (opts formatOptions) FormatType(t reflect.Type, s textNode) textNode { + // Check whether to emit the type or not. + switch opts.TypeMode { + case autoType: + switch t.Kind() { + case reflect.Struct, reflect.Slice, reflect.Array, reflect.Map: + if s.Equal(textNil) { + return s + } + default: + return s + } + case elideType: + return s + } + + // Determine the type label, applying special handling for unnamed types. + typeName := t.String() + if t.Name() == "" { + // According to Go grammar, certain type literals contain symbols that + // do not strongly bind to the next lexicographical token (e.g., *T). + switch t.Kind() { + case reflect.Chan, reflect.Func, reflect.Ptr: + typeName = "(" + typeName + ")" + } + typeName = strings.Replace(typeName, "struct {", "struct{", -1) + typeName = strings.Replace(typeName, "interface {", "interface{", -1) + } + + // Avoid wrap the value in parenthesis if unnecessary. + if s, ok := s.(textWrap); ok { + hasParens := strings.HasPrefix(s.Prefix, "(") && strings.HasSuffix(s.Suffix, ")") + hasBraces := strings.HasPrefix(s.Prefix, "{") && strings.HasSuffix(s.Suffix, "}") + if hasParens || hasBraces { + return textWrap{typeName, s, ""} + } + } + return textWrap{typeName + "(", s, ")"} +} + +// FormatValue prints the reflect.Value, taking extra care to avoid descending +// into pointers already in m. As pointers are visited, m is also updated. +func (opts formatOptions) FormatValue(v reflect.Value, m visitedPointers) (out textNode) { + if !v.IsValid() { + return nil + } + t := v.Type() + + // Check whether there is an Error or String method to call. + if !opts.AvoidStringer && v.CanInterface() { + // Avoid calling Error or String methods on nil receivers since many + // implementations crash when doing so. + if (t.Kind() != reflect.Ptr && t.Kind() != reflect.Interface) || !v.IsNil() { + switch v := v.Interface().(type) { + case error: + return textLine("e" + formatString(v.Error())) + case fmt.Stringer: + return textLine("s" + formatString(v.String())) + } + } + } + + // Check whether to explicitly wrap the result with the type. + var skipType bool + defer func() { + if !skipType { + out = opts.FormatType(t, out) + } + }() + + var ptr string + switch t.Kind() { + case reflect.Bool: + return textLine(fmt.Sprint(v.Bool())) + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return textLine(fmt.Sprint(v.Int())) + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + // Unnamed uints are usually bytes or words, so use hexadecimal. + if t.PkgPath() == "" || t.Kind() == reflect.Uintptr { + return textLine(formatHex(v.Uint())) + } + return textLine(fmt.Sprint(v.Uint())) + case reflect.Float32, reflect.Float64: + return textLine(fmt.Sprint(v.Float())) + case reflect.Complex64, reflect.Complex128: + return textLine(fmt.Sprint(v.Complex())) + case reflect.String: + return textLine(formatString(v.String())) + case reflect.UnsafePointer, reflect.Chan, reflect.Func: + return textLine(formatPointer(v)) + case reflect.Struct: + var list textList + for i := 0; i < v.NumField(); i++ { + vv := v.Field(i) + if value.IsZero(vv) { + continue // Elide fields with zero values + } + s := opts.WithTypeMode(autoType).FormatValue(vv, m) + list = append(list, textRecord{Key: t.Field(i).Name, Value: s}) + } + return textWrap{"{", list, "}"} + case reflect.Slice: + if v.IsNil() { + return textNil + } + if opts.PrintAddresses { + ptr = formatPointer(v) + } + fallthrough + case reflect.Array: + var list textList + for i := 0; i < v.Len(); i++ { + vi := v.Index(i) + if vi.CanAddr() { // Check for cyclic elements + p := vi.Addr() + if m.Visit(p) { + var out textNode + out = textLine(formatPointer(p)) + out = opts.WithTypeMode(emitType).FormatType(p.Type(), out) + out = textWrap{"*", out, ""} + list = append(list, textRecord{Value: out}) + continue + } + } + s := opts.WithTypeMode(elideType).FormatValue(vi, m) + list = append(list, textRecord{Value: s}) + } + return textWrap{ptr + "{", list, "}"} + case reflect.Map: + if v.IsNil() { + return textNil + } + if m.Visit(v) { + return textLine(formatPointer(v)) + } + + var list textList + for _, k := range value.SortKeys(v.MapKeys()) { + sk := formatMapKey(k) + sv := opts.WithTypeMode(elideType).FormatValue(v.MapIndex(k), m) + list = append(list, textRecord{Key: sk, Value: sv}) + } + if opts.PrintAddresses { + ptr = formatPointer(v) + } + return textWrap{ptr + "{", list, "}"} + case reflect.Ptr: + if v.IsNil() { + return textNil + } + if m.Visit(v) || opts.ShallowPointers { + return textLine(formatPointer(v)) + } + if opts.PrintAddresses { + ptr = formatPointer(v) + } + skipType = true // Let the underlying value print the type instead + return textWrap{"&" + ptr, opts.FormatValue(v.Elem(), m), ""} + case reflect.Interface: + if v.IsNil() { + return textNil + } + // Interfaces accept different concrete types, + // so configure the underlying value to explicitly print the type. + skipType = true // Print the concrete type instead + return opts.WithTypeMode(emitType).FormatValue(v.Elem(), m) + default: + panic(fmt.Sprintf("%v kind not handled", v.Kind())) + } +} + +// formatMapKey formats v as if it were a map key. +// The result is guaranteed to be a single line. +func formatMapKey(v reflect.Value) string { + var opts formatOptions + opts.TypeMode = elideType + opts.ShallowPointers = true + s := opts.FormatValue(v, visitedPointers{}).String() + return strings.TrimSpace(s) +} + +// formatString prints s as a double-quoted or backtick-quoted string. +func formatString(s string) string { + // Use quoted string if it the same length as a raw string literal. + // Otherwise, attempt to use the raw string form. + qs := strconv.Quote(s) + if len(qs) == 1+len(s)+1 { + return qs + } + + // Disallow newlines to ensure output is a single line. + // Only allow printable runes for readability purposes. + rawInvalid := func(r rune) bool { + return r == '`' || r == '\n' || !(unicode.IsPrint(r) || r == '\t') + } + if strings.IndexFunc(s, rawInvalid) < 0 { + return "`" + s + "`" + } + return qs +} + +// formatHex prints u as a hexadecimal integer in Go notation. +func formatHex(u uint64) string { + var f string + switch { + case u <= 0xff: + f = "0x%02x" + case u <= 0xffff: + f = "0x%04x" + case u <= 0xffffff: + f = "0x%06x" + case u <= 0xffffffff: + f = "0x%08x" + case u <= 0xffffffffff: + f = "0x%010x" + case u <= 0xffffffffffff: + f = "0x%012x" + case u <= 0xffffffffffffff: + f = "0x%014x" + case u <= 0xffffffffffffffff: + f = "0x%016x" + } + return fmt.Sprintf(f, u) +} + +// formatPointer prints the address of the pointer. +func formatPointer(v reflect.Value) string { + p := v.Pointer() + if flags.Deterministic { + p = 0xdeadf00f // Only used for stable testing purposes + } + return fmt.Sprintf("⟪0x%x⟫", p) +} + +type visitedPointers map[value.Pointer]struct{} + +// Visit inserts pointer v into the visited map and reports whether it had +// already been visited before. +func (m visitedPointers) Visit(v reflect.Value) bool { + p := value.PointerOf(v) + _, visited := m[p] + m[p] = struct{}{} + return visited +} diff --git a/vendor/github.com/google/go-cmp/cmp/report_slices.go b/vendor/github.com/google/go-cmp/cmp/report_slices.go new file mode 100644 index 0000000..eafcf2e --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/report_slices.go @@ -0,0 +1,333 @@ +// Copyright 2019, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +package cmp + +import ( + "bytes" + "fmt" + "reflect" + "strings" + "unicode" + "unicode/utf8" + + "github.com/google/go-cmp/cmp/internal/diff" +) + +// CanFormatDiffSlice reports whether we support custom formatting for nodes +// that are slices of primitive kinds or strings. +func (opts formatOptions) CanFormatDiffSlice(v *valueNode) bool { + switch { + case opts.DiffMode != diffUnknown: + return false // Must be formatting in diff mode + case v.NumDiff == 0: + return false // No differences detected + case v.NumIgnored+v.NumCompared+v.NumTransformed > 0: + // TODO: Handle the case where someone uses bytes.Equal on a large slice. + return false // Some custom option was used to determined equality + case !v.ValueX.IsValid() || !v.ValueY.IsValid(): + return false // Both values must be valid + } + + switch t := v.Type; t.Kind() { + case reflect.String: + case reflect.Array, reflect.Slice: + // Only slices of primitive types have specialized handling. + switch t.Elem().Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, + reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr, + reflect.Bool, reflect.Float32, reflect.Float64, reflect.Complex64, reflect.Complex128: + default: + return false + } + + // If a sufficient number of elements already differ, + // use specialized formatting even if length requirement is not met. + if v.NumDiff > v.NumSame { + return true + } + default: + return false + } + + // Use specialized string diffing for longer slices or strings. + const minLength = 64 + return v.ValueX.Len() >= minLength && v.ValueY.Len() >= minLength +} + +// FormatDiffSlice prints a diff for the slices (or strings) represented by v. +// This provides custom-tailored logic to make printing of differences in +// textual strings and slices of primitive kinds more readable. +func (opts formatOptions) FormatDiffSlice(v *valueNode) textNode { + assert(opts.DiffMode == diffUnknown) + t, vx, vy := v.Type, v.ValueX, v.ValueY + + // Auto-detect the type of the data. + var isLinedText, isText, isBinary bool + var sx, sy string + switch { + case t.Kind() == reflect.String: + sx, sy = vx.String(), vy.String() + isText = true // Initial estimate, verify later + case t.Kind() == reflect.Slice && t.Elem() == reflect.TypeOf(byte(0)): + sx, sy = string(vx.Bytes()), string(vy.Bytes()) + isBinary = true // Initial estimate, verify later + case t.Kind() == reflect.Array: + // Arrays need to be addressable for slice operations to work. + vx2, vy2 := reflect.New(t).Elem(), reflect.New(t).Elem() + vx2.Set(vx) + vy2.Set(vy) + vx, vy = vx2, vy2 + } + if isText || isBinary { + var numLines, lastLineIdx, maxLineLen int + isBinary = false + for i, r := range sx + sy { + if !(unicode.IsPrint(r) || unicode.IsSpace(r)) || r == utf8.RuneError { + isBinary = true + break + } + if r == '\n' { + if maxLineLen < i-lastLineIdx { + maxLineLen = i - lastLineIdx + } + lastLineIdx = i + 1 + numLines++ + } + } + isText = !isBinary + isLinedText = isText && numLines >= 4 && maxLineLen <= 256 + } + + // Format the string into printable records. + var list textList + var delim string + switch { + // If the text appears to be multi-lined text, + // then perform differencing across individual lines. + case isLinedText: + ssx := strings.Split(sx, "\n") + ssy := strings.Split(sy, "\n") + list = opts.formatDiffSlice( + reflect.ValueOf(ssx), reflect.ValueOf(ssy), 1, "line", + func(v reflect.Value, d diffMode) textRecord { + s := formatString(v.Index(0).String()) + return textRecord{Diff: d, Value: textLine(s)} + }, + ) + delim = "\n" + // If the text appears to be single-lined text, + // then perform differencing in approximately fixed-sized chunks. + // The output is printed as quoted strings. + case isText: + list = opts.formatDiffSlice( + reflect.ValueOf(sx), reflect.ValueOf(sy), 64, "byte", + func(v reflect.Value, d diffMode) textRecord { + s := formatString(v.String()) + return textRecord{Diff: d, Value: textLine(s)} + }, + ) + delim = "" + // If the text appears to be binary data, + // then perform differencing in approximately fixed-sized chunks. + // The output is inspired by hexdump. + case isBinary: + list = opts.formatDiffSlice( + reflect.ValueOf(sx), reflect.ValueOf(sy), 16, "byte", + func(v reflect.Value, d diffMode) textRecord { + var ss []string + for i := 0; i < v.Len(); i++ { + ss = append(ss, formatHex(v.Index(i).Uint())) + } + s := strings.Join(ss, ", ") + comment := commentString(fmt.Sprintf("%c|%v|", d, formatASCII(v.String()))) + return textRecord{Diff: d, Value: textLine(s), Comment: comment} + }, + ) + // For all other slices of primitive types, + // then perform differencing in approximately fixed-sized chunks. + // The size of each chunk depends on the width of the element kind. + default: + var chunkSize int + if t.Elem().Kind() == reflect.Bool { + chunkSize = 16 + } else { + switch t.Elem().Bits() { + case 8: + chunkSize = 16 + case 16: + chunkSize = 12 + case 32: + chunkSize = 8 + default: + chunkSize = 8 + } + } + list = opts.formatDiffSlice( + vx, vy, chunkSize, t.Elem().Kind().String(), + func(v reflect.Value, d diffMode) textRecord { + var ss []string + for i := 0; i < v.Len(); i++ { + switch t.Elem().Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + ss = append(ss, fmt.Sprint(v.Index(i).Int())) + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + ss = append(ss, formatHex(v.Index(i).Uint())) + case reflect.Bool, reflect.Float32, reflect.Float64, reflect.Complex64, reflect.Complex128: + ss = append(ss, fmt.Sprint(v.Index(i).Interface())) + } + } + s := strings.Join(ss, ", ") + return textRecord{Diff: d, Value: textLine(s)} + }, + ) + } + + // Wrap the output with appropriate type information. + var out textNode = textWrap{"{", list, "}"} + if !isText { + // The "{...}" byte-sequence literal is not valid Go syntax for strings. + // Emit the type for extra clarity (e.g. "string{...}"). + if t.Kind() == reflect.String { + opts = opts.WithTypeMode(emitType) + } + return opts.FormatType(t, out) + } + switch t.Kind() { + case reflect.String: + out = textWrap{"strings.Join(", out, fmt.Sprintf(", %q)", delim)} + if t != reflect.TypeOf(string("")) { + out = opts.FormatType(t, out) + } + case reflect.Slice: + out = textWrap{"bytes.Join(", out, fmt.Sprintf(", %q)", delim)} + if t != reflect.TypeOf([]byte(nil)) { + out = opts.FormatType(t, out) + } + } + return out +} + +// formatASCII formats s as an ASCII string. +// This is useful for printing binary strings in a semi-legible way. +func formatASCII(s string) string { + b := bytes.Repeat([]byte{'.'}, len(s)) + for i := 0; i < len(s); i++ { + if ' ' <= s[i] && s[i] <= '~' { + b[i] = s[i] + } + } + return string(b) +} + +func (opts formatOptions) formatDiffSlice( + vx, vy reflect.Value, chunkSize int, name string, + makeRec func(reflect.Value, diffMode) textRecord, +) (list textList) { + es := diff.Difference(vx.Len(), vy.Len(), func(ix int, iy int) diff.Result { + return diff.BoolResult(vx.Index(ix).Interface() == vy.Index(iy).Interface()) + }) + + appendChunks := func(v reflect.Value, d diffMode) int { + n0 := v.Len() + for v.Len() > 0 { + n := chunkSize + if n > v.Len() { + n = v.Len() + } + list = append(list, makeRec(v.Slice(0, n), d)) + v = v.Slice(n, v.Len()) + } + return n0 - v.Len() + } + + groups := coalesceAdjacentEdits(name, es) + groups = coalesceInterveningIdentical(groups, chunkSize/4) + for i, ds := range groups { + // Print equal. + if ds.NumDiff() == 0 { + // Compute the number of leading and trailing equal bytes to print. + var numLo, numHi int + numEqual := ds.NumIgnored + ds.NumIdentical + for numLo < chunkSize*numContextRecords && numLo+numHi < numEqual && i != 0 { + numLo++ + } + for numHi < chunkSize*numContextRecords && numLo+numHi < numEqual && i != len(groups)-1 { + numHi++ + } + if numEqual-(numLo+numHi) <= chunkSize && ds.NumIgnored == 0 { + numHi = numEqual - numLo // Avoid pointless coalescing of single equal row + } + + // Print the equal bytes. + appendChunks(vx.Slice(0, numLo), diffIdentical) + if numEqual > numLo+numHi { + ds.NumIdentical -= numLo + numHi + list.AppendEllipsis(ds) + } + appendChunks(vx.Slice(numEqual-numHi, numEqual), diffIdentical) + vx = vx.Slice(numEqual, vx.Len()) + vy = vy.Slice(numEqual, vy.Len()) + continue + } + + // Print unequal. + nx := appendChunks(vx.Slice(0, ds.NumIdentical+ds.NumRemoved+ds.NumModified), diffRemoved) + vx = vx.Slice(nx, vx.Len()) + ny := appendChunks(vy.Slice(0, ds.NumIdentical+ds.NumInserted+ds.NumModified), diffInserted) + vy = vy.Slice(ny, vy.Len()) + } + assert(vx.Len() == 0 && vy.Len() == 0) + return list +} + +// coalesceAdjacentEdits coalesces the list of edits into groups of adjacent +// equal or unequal counts. +func coalesceAdjacentEdits(name string, es diff.EditScript) (groups []diffStats) { + var prevCase int // Arbitrary index into which case last occurred + lastStats := func(i int) *diffStats { + if prevCase != i { + groups = append(groups, diffStats{Name: name}) + prevCase = i + } + return &groups[len(groups)-1] + } + for _, e := range es { + switch e { + case diff.Identity: + lastStats(1).NumIdentical++ + case diff.UniqueX: + lastStats(2).NumRemoved++ + case diff.UniqueY: + lastStats(2).NumInserted++ + case diff.Modified: + lastStats(2).NumModified++ + } + } + return groups +} + +// coalesceInterveningIdentical coalesces sufficiently short (<= windowSize) +// equal groups into adjacent unequal groups that currently result in a +// dual inserted/removed printout. This acts as a high-pass filter to smooth +// out high-frequency changes within the windowSize. +func coalesceInterveningIdentical(groups []diffStats, windowSize int) []diffStats { + groups, groupsOrig := groups[:0], groups + for i, ds := range groupsOrig { + if len(groups) >= 2 && ds.NumDiff() > 0 { + prev := &groups[len(groups)-2] // Unequal group + curr := &groups[len(groups)-1] // Equal group + next := &groupsOrig[i] // Unequal group + hadX, hadY := prev.NumRemoved > 0, prev.NumInserted > 0 + hasX, hasY := next.NumRemoved > 0, next.NumInserted > 0 + if ((hadX || hasX) && (hadY || hasY)) && curr.NumIdentical <= windowSize { + *prev = prev.Append(*curr).Append(*next) + groups = groups[:len(groups)-1] // Truncate off equal group + continue + } + } + groups = append(groups, ds) + } + return groups +} diff --git a/vendor/github.com/google/go-cmp/cmp/report_text.go b/vendor/github.com/google/go-cmp/cmp/report_text.go new file mode 100644 index 0000000..8b8fcab --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/report_text.go @@ -0,0 +1,387 @@ +// Copyright 2019, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +package cmp + +import ( + "bytes" + "fmt" + "math/rand" + "strings" + "time" + + "github.com/google/go-cmp/cmp/internal/flags" +) + +var randBool = rand.New(rand.NewSource(time.Now().Unix())).Intn(2) == 0 + +type indentMode int + +func (n indentMode) appendIndent(b []byte, d diffMode) []byte { + // The output of Diff is documented as being unstable to provide future + // flexibility in changing the output for more humanly readable reports. + // This logic intentionally introduces instability to the exact output + // so that users can detect accidental reliance on stability early on, + // rather than much later when an actual change to the format occurs. + if flags.Deterministic || randBool { + // Use regular spaces (U+0020). + switch d { + case diffUnknown, diffIdentical: + b = append(b, " "...) + case diffRemoved: + b = append(b, "- "...) + case diffInserted: + b = append(b, "+ "...) + } + } else { + // Use non-breaking spaces (U+00a0). + switch d { + case diffUnknown, diffIdentical: + b = append(b, "  "...) + case diffRemoved: + b = append(b, "- "...) + case diffInserted: + b = append(b, "+ "...) + } + } + return repeatCount(n).appendChar(b, '\t') +} + +type repeatCount int + +func (n repeatCount) appendChar(b []byte, c byte) []byte { + for ; n > 0; n-- { + b = append(b, c) + } + return b +} + +// textNode is a simplified tree-based representation of structured text. +// Possible node types are textWrap, textList, or textLine. +type textNode interface { + // Len reports the length in bytes of a single-line version of the tree. + // Nested textRecord.Diff and textRecord.Comment fields are ignored. + Len() int + // Equal reports whether the two trees are structurally identical. + // Nested textRecord.Diff and textRecord.Comment fields are compared. + Equal(textNode) bool + // String returns the string representation of the text tree. + // It is not guaranteed that len(x.String()) == x.Len(), + // nor that x.String() == y.String() implies that x.Equal(y). + String() string + + // formatCompactTo formats the contents of the tree as a single-line string + // to the provided buffer. Any nested textRecord.Diff and textRecord.Comment + // fields are ignored. + // + // However, not all nodes in the tree should be collapsed as a single-line. + // If a node can be collapsed as a single-line, it is replaced by a textLine + // node. Since the top-level node cannot replace itself, this also returns + // the current node itself. + // + // This does not mutate the receiver. + formatCompactTo([]byte, diffMode) ([]byte, textNode) + // formatExpandedTo formats the contents of the tree as a multi-line string + // to the provided buffer. In order for column alignment to operate well, + // formatCompactTo must be called before calling formatExpandedTo. + formatExpandedTo([]byte, diffMode, indentMode) []byte +} + +// textWrap is a wrapper that concatenates a prefix and/or a suffix +// to the underlying node. +type textWrap struct { + Prefix string // e.g., "bytes.Buffer{" + Value textNode // textWrap | textList | textLine + Suffix string // e.g., "}" +} + +func (s textWrap) Len() int { + return len(s.Prefix) + s.Value.Len() + len(s.Suffix) +} +func (s1 textWrap) Equal(s2 textNode) bool { + if s2, ok := s2.(textWrap); ok { + return s1.Prefix == s2.Prefix && s1.Value.Equal(s2.Value) && s1.Suffix == s2.Suffix + } + return false +} +func (s textWrap) String() string { + var d diffMode + var n indentMode + _, s2 := s.formatCompactTo(nil, d) + b := n.appendIndent(nil, d) // Leading indent + b = s2.formatExpandedTo(b, d, n) // Main body + b = append(b, '\n') // Trailing newline + return string(b) +} +func (s textWrap) formatCompactTo(b []byte, d diffMode) ([]byte, textNode) { + n0 := len(b) // Original buffer length + b = append(b, s.Prefix...) + b, s.Value = s.Value.formatCompactTo(b, d) + b = append(b, s.Suffix...) + if _, ok := s.Value.(textLine); ok { + return b, textLine(b[n0:]) + } + return b, s +} +func (s textWrap) formatExpandedTo(b []byte, d diffMode, n indentMode) []byte { + b = append(b, s.Prefix...) + b = s.Value.formatExpandedTo(b, d, n) + b = append(b, s.Suffix...) + return b +} + +// textList is a comma-separated list of textWrap or textLine nodes. +// The list may be formatted as multi-lines or single-line at the discretion +// of the textList.formatCompactTo method. +type textList []textRecord +type textRecord struct { + Diff diffMode // e.g., 0 or '-' or '+' + Key string // e.g., "MyField" + Value textNode // textWrap | textLine + Comment fmt.Stringer // e.g., "6 identical fields" +} + +// AppendEllipsis appends a new ellipsis node to the list if none already +// exists at the end. If cs is non-zero it coalesces the statistics with the +// previous diffStats. +func (s *textList) AppendEllipsis(ds diffStats) { + hasStats := ds != diffStats{} + if len(*s) == 0 || !(*s)[len(*s)-1].Value.Equal(textEllipsis) { + if hasStats { + *s = append(*s, textRecord{Value: textEllipsis, Comment: ds}) + } else { + *s = append(*s, textRecord{Value: textEllipsis}) + } + return + } + if hasStats { + (*s)[len(*s)-1].Comment = (*s)[len(*s)-1].Comment.(diffStats).Append(ds) + } +} + +func (s textList) Len() (n int) { + for i, r := range s { + n += len(r.Key) + if r.Key != "" { + n += len(": ") + } + n += r.Value.Len() + if i < len(s)-1 { + n += len(", ") + } + } + return n +} + +func (s1 textList) Equal(s2 textNode) bool { + if s2, ok := s2.(textList); ok { + if len(s1) != len(s2) { + return false + } + for i := range s1 { + r1, r2 := s1[i], s2[i] + if !(r1.Diff == r2.Diff && r1.Key == r2.Key && r1.Value.Equal(r2.Value) && r1.Comment == r2.Comment) { + return false + } + } + return true + } + return false +} + +func (s textList) String() string { + return textWrap{"{", s, "}"}.String() +} + +func (s textList) formatCompactTo(b []byte, d diffMode) ([]byte, textNode) { + s = append(textList(nil), s...) // Avoid mutating original + + // Determine whether we can collapse this list as a single line. + n0 := len(b) // Original buffer length + var multiLine bool + for i, r := range s { + if r.Diff == diffInserted || r.Diff == diffRemoved { + multiLine = true + } + b = append(b, r.Key...) + if r.Key != "" { + b = append(b, ": "...) + } + b, s[i].Value = r.Value.formatCompactTo(b, d|r.Diff) + if _, ok := s[i].Value.(textLine); !ok { + multiLine = true + } + if r.Comment != nil { + multiLine = true + } + if i < len(s)-1 { + b = append(b, ", "...) + } + } + // Force multi-lined output when printing a removed/inserted node that + // is sufficiently long. + if (d == diffInserted || d == diffRemoved) && len(b[n0:]) > 80 { + multiLine = true + } + if !multiLine { + return b, textLine(b[n0:]) + } + return b, s +} + +func (s textList) formatExpandedTo(b []byte, d diffMode, n indentMode) []byte { + alignKeyLens := s.alignLens( + func(r textRecord) bool { + _, isLine := r.Value.(textLine) + return r.Key == "" || !isLine + }, + func(r textRecord) int { return len(r.Key) }, + ) + alignValueLens := s.alignLens( + func(r textRecord) bool { + _, isLine := r.Value.(textLine) + return !isLine || r.Value.Equal(textEllipsis) || r.Comment == nil + }, + func(r textRecord) int { return len(r.Value.(textLine)) }, + ) + + // Format the list as a multi-lined output. + n++ + for i, r := range s { + b = n.appendIndent(append(b, '\n'), d|r.Diff) + if r.Key != "" { + b = append(b, r.Key+": "...) + } + b = alignKeyLens[i].appendChar(b, ' ') + + b = r.Value.formatExpandedTo(b, d|r.Diff, n) + if !r.Value.Equal(textEllipsis) { + b = append(b, ',') + } + b = alignValueLens[i].appendChar(b, ' ') + + if r.Comment != nil { + b = append(b, " // "+r.Comment.String()...) + } + } + n-- + + return n.appendIndent(append(b, '\n'), d) +} + +func (s textList) alignLens( + skipFunc func(textRecord) bool, + lenFunc func(textRecord) int, +) []repeatCount { + var startIdx, endIdx, maxLen int + lens := make([]repeatCount, len(s)) + for i, r := range s { + if skipFunc(r) { + for j := startIdx; j < endIdx && j < len(s); j++ { + lens[j] = repeatCount(maxLen - lenFunc(s[j])) + } + startIdx, endIdx, maxLen = i+1, i+1, 0 + } else { + if maxLen < lenFunc(r) { + maxLen = lenFunc(r) + } + endIdx = i + 1 + } + } + for j := startIdx; j < endIdx && j < len(s); j++ { + lens[j] = repeatCount(maxLen - lenFunc(s[j])) + } + return lens +} + +// textLine is a single-line segment of text and is always a leaf node +// in the textNode tree. +type textLine []byte + +var ( + textNil = textLine("nil") + textEllipsis = textLine("...") +) + +func (s textLine) Len() int { + return len(s) +} +func (s1 textLine) Equal(s2 textNode) bool { + if s2, ok := s2.(textLine); ok { + return bytes.Equal([]byte(s1), []byte(s2)) + } + return false +} +func (s textLine) String() string { + return string(s) +} +func (s textLine) formatCompactTo(b []byte, d diffMode) ([]byte, textNode) { + return append(b, s...), s +} +func (s textLine) formatExpandedTo(b []byte, _ diffMode, _ indentMode) []byte { + return append(b, s...) +} + +type diffStats struct { + Name string + NumIgnored int + NumIdentical int + NumRemoved int + NumInserted int + NumModified int +} + +func (s diffStats) NumDiff() int { + return s.NumRemoved + s.NumInserted + s.NumModified +} + +func (s diffStats) Append(ds diffStats) diffStats { + assert(s.Name == ds.Name) + s.NumIgnored += ds.NumIgnored + s.NumIdentical += ds.NumIdentical + s.NumRemoved += ds.NumRemoved + s.NumInserted += ds.NumInserted + s.NumModified += ds.NumModified + return s +} + +// String prints a humanly-readable summary of coalesced records. +// +// Example: +// diffStats{Name: "Field", NumIgnored: 5}.String() => "5 ignored fields" +func (s diffStats) String() string { + var ss []string + var sum int + labels := [...]string{"ignored", "identical", "removed", "inserted", "modified"} + counts := [...]int{s.NumIgnored, s.NumIdentical, s.NumRemoved, s.NumInserted, s.NumModified} + for i, n := range counts { + if n > 0 { + ss = append(ss, fmt.Sprintf("%d %v", n, labels[i])) + } + sum += n + } + + // Pluralize the name (adjusting for some obscure English grammar rules). + name := s.Name + if sum > 1 { + name += "s" + if strings.HasSuffix(name, "ys") { + name = name[:len(name)-2] + "ies" // e.g., "entrys" => "entries" + } + } + + // Format the list according to English grammar (with Oxford comma). + switch n := len(ss); n { + case 0: + return "" + case 1, 2: + return strings.Join(ss, " and ") + " " + name + default: + return strings.Join(ss[:n-1], ", ") + ", and " + ss[n-1] + " " + name + } +} + +type commentString string + +func (s commentString) String() string { return string(s) } diff --git a/vendor/github.com/google/go-cmp/cmp/report_value.go b/vendor/github.com/google/go-cmp/cmp/report_value.go new file mode 100644 index 0000000..83031a7 --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/report_value.go @@ -0,0 +1,121 @@ +// Copyright 2019, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +package cmp + +import "reflect" + +// valueNode represents a single node within a report, which is a +// structured representation of the value tree, containing information +// regarding which nodes are equal or not. +type valueNode struct { + parent *valueNode + + Type reflect.Type + ValueX reflect.Value + ValueY reflect.Value + + // NumSame is the number of leaf nodes that are equal. + // All descendants are equal only if NumDiff is 0. + NumSame int + // NumDiff is the number of leaf nodes that are not equal. + NumDiff int + // NumIgnored is the number of leaf nodes that are ignored. + NumIgnored int + // NumCompared is the number of leaf nodes that were compared + // using an Equal method or Comparer function. + NumCompared int + // NumTransformed is the number of non-leaf nodes that were transformed. + NumTransformed int + // NumChildren is the number of transitive descendants of this node. + // This counts from zero; thus, leaf nodes have no descendants. + NumChildren int + // MaxDepth is the maximum depth of the tree. This counts from zero; + // thus, leaf nodes have a depth of zero. + MaxDepth int + + // Records is a list of struct fields, slice elements, or map entries. + Records []reportRecord // If populated, implies Value is not populated + + // Value is the result of a transformation, pointer indirect, of + // type assertion. + Value *valueNode // If populated, implies Records is not populated + + // TransformerName is the name of the transformer. + TransformerName string // If non-empty, implies Value is populated +} +type reportRecord struct { + Key reflect.Value // Invalid for slice element + Value *valueNode +} + +func (parent *valueNode) PushStep(ps PathStep) (child *valueNode) { + vx, vy := ps.Values() + child = &valueNode{parent: parent, Type: ps.Type(), ValueX: vx, ValueY: vy} + switch s := ps.(type) { + case StructField: + assert(parent.Value == nil) + parent.Records = append(parent.Records, reportRecord{Key: reflect.ValueOf(s.Name()), Value: child}) + case SliceIndex: + assert(parent.Value == nil) + parent.Records = append(parent.Records, reportRecord{Value: child}) + case MapIndex: + assert(parent.Value == nil) + parent.Records = append(parent.Records, reportRecord{Key: s.Key(), Value: child}) + case Indirect: + assert(parent.Value == nil && parent.Records == nil) + parent.Value = child + case TypeAssertion: + assert(parent.Value == nil && parent.Records == nil) + parent.Value = child + case Transform: + assert(parent.Value == nil && parent.Records == nil) + parent.Value = child + parent.TransformerName = s.Name() + parent.NumTransformed++ + default: + assert(parent == nil) // Must be the root step + } + return child +} + +func (r *valueNode) Report(rs Result) { + assert(r.MaxDepth == 0) // May only be called on leaf nodes + + if rs.ByIgnore() { + r.NumIgnored++ + } else { + if rs.Equal() { + r.NumSame++ + } else { + r.NumDiff++ + } + } + assert(r.NumSame+r.NumDiff+r.NumIgnored == 1) + + if rs.ByMethod() { + r.NumCompared++ + } + if rs.ByFunc() { + r.NumCompared++ + } + assert(r.NumCompared <= 1) +} + +func (child *valueNode) PopStep() (parent *valueNode) { + if child.parent == nil { + return nil + } + parent = child.parent + parent.NumSame += child.NumSame + parent.NumDiff += child.NumDiff + parent.NumIgnored += child.NumIgnored + parent.NumCompared += child.NumCompared + parent.NumTransformed += child.NumTransformed + parent.NumChildren += child.NumChildren + 1 + if parent.MaxDepth < child.MaxDepth+1 { + parent.MaxDepth = child.MaxDepth + 1 + } + return parent +} diff --git a/vendor/github.com/google/uuid/.travis.yml b/vendor/github.com/google/uuid/.travis.yml new file mode 100644 index 0000000..d8156a6 --- /dev/null +++ b/vendor/github.com/google/uuid/.travis.yml @@ -0,0 +1,9 @@ +language: go + +go: + - 1.4.3 + - 1.5.3 + - tip + +script: + - go test -v ./... diff --git a/vendor/github.com/google/uuid/CONTRIBUTING.md b/vendor/github.com/google/uuid/CONTRIBUTING.md new file mode 100644 index 0000000..04fdf09 --- /dev/null +++ b/vendor/github.com/google/uuid/CONTRIBUTING.md @@ -0,0 +1,10 @@ +# How to contribute + +We definitely welcome patches and contribution to this project! + +### Legal requirements + +In order to protect both you and ourselves, you will need to sign the +[Contributor License Agreement](https://cla.developers.google.com/clas). + +You may have already signed it for other Google projects. diff --git a/vendor/github.com/google/uuid/CONTRIBUTORS b/vendor/github.com/google/uuid/CONTRIBUTORS new file mode 100644 index 0000000..b4bb97f --- /dev/null +++ b/vendor/github.com/google/uuid/CONTRIBUTORS @@ -0,0 +1,9 @@ +Paul Borman +bmatsuo +shawnps +theory +jboverfelt +dsymonds +cd1 +wallclockbuilder +dansouza diff --git a/vendor/github.com/google/uuid/LICENSE b/vendor/github.com/google/uuid/LICENSE new file mode 100644 index 0000000..5dc6826 --- /dev/null +++ b/vendor/github.com/google/uuid/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2009,2014 Google Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/google/uuid/README.md b/vendor/github.com/google/uuid/README.md new file mode 100644 index 0000000..9d92c11 --- /dev/null +++ b/vendor/github.com/google/uuid/README.md @@ -0,0 +1,19 @@ +# uuid ![build status](https://travis-ci.org/google/uuid.svg?branch=master) +The uuid package generates and inspects UUIDs based on +[RFC 4122](http://tools.ietf.org/html/rfc4122) +and DCE 1.1: Authentication and Security Services. + +This package is based on the github.com/pborman/uuid package (previously named +code.google.com/p/go-uuid). It differs from these earlier packages in that +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` + +###### Documentation +[![GoDoc](https://godoc.org/github.com/google/uuid?status.svg)](http://godoc.org/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: +http://godoc.org/github.com/google/uuid diff --git a/vendor/github.com/google/uuid/dce.go b/vendor/github.com/google/uuid/dce.go new file mode 100644 index 0000000..fa820b9 --- /dev/null +++ b/vendor/github.com/google/uuid/dce.go @@ -0,0 +1,80 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "encoding/binary" + "fmt" + "os" +) + +// A Domain represents a Version 2 domain +type Domain byte + +// Domain constants for DCE Security (Version 2) UUIDs. +const ( + Person = Domain(0) + Group = Domain(1) + Org = Domain(2) +) + +// NewDCESecurity returns a DCE Security (Version 2) UUID. +// +// The domain should be one of Person, Group or Org. +// On a POSIX system the id should be the users UID for the Person +// domain and the users GID for the Group. The meaning of id for +// the domain Org or on non-POSIX systems is site defined. +// +// For a given domain/id pair the same token may be returned for up to +// 7 minutes and 10 seconds. +func NewDCESecurity(domain Domain, id uint32) (UUID, error) { + uuid, err := NewUUID() + if err == nil { + uuid[6] = (uuid[6] & 0x0f) | 0x20 // Version 2 + uuid[9] = byte(domain) + binary.BigEndian.PutUint32(uuid[0:], id) + } + return uuid, err +} + +// NewDCEPerson returns a DCE Security (Version 2) UUID in the person +// domain with the id returned by os.Getuid. +// +// NewDCESecurity(Person, uint32(os.Getuid())) +func NewDCEPerson() (UUID, error) { + return NewDCESecurity(Person, uint32(os.Getuid())) +} + +// NewDCEGroup returns a DCE Security (Version 2) UUID in the group +// domain with the id returned by os.Getgid. +// +// NewDCESecurity(Group, uint32(os.Getgid())) +func NewDCEGroup() (UUID, error) { + return NewDCESecurity(Group, uint32(os.Getgid())) +} + +// Domain returns the domain for a Version 2 UUID. Domains are only defined +// for Version 2 UUIDs. +func (uuid UUID) Domain() Domain { + return Domain(uuid[9]) +} + +// ID returns the id for a Version 2 UUID. IDs are only defined for Version 2 +// UUIDs. +func (uuid UUID) ID() uint32 { + return binary.BigEndian.Uint32(uuid[0:4]) +} + +func (d Domain) String() string { + switch d { + case Person: + return "Person" + case Group: + return "Group" + case Org: + return "Org" + } + return fmt.Sprintf("Domain%d", int(d)) +} diff --git a/vendor/github.com/google/uuid/doc.go b/vendor/github.com/google/uuid/doc.go new file mode 100644 index 0000000..5b8a4b9 --- /dev/null +++ b/vendor/github.com/google/uuid/doc.go @@ -0,0 +1,12 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package uuid generates and inspects UUIDs. +// +// UUIDs are based on RFC 4122 and DCE 1.1: Authentication and Security +// Services. +// +// A UUID is a 16 byte (128 bit) array. UUIDs may be used as keys to +// maps or compared directly. +package uuid diff --git a/vendor/github.com/google/uuid/go.mod b/vendor/github.com/google/uuid/go.mod new file mode 100644 index 0000000..fc84cd7 --- /dev/null +++ b/vendor/github.com/google/uuid/go.mod @@ -0,0 +1 @@ +module github.com/google/uuid diff --git a/vendor/github.com/google/uuid/hash.go b/vendor/github.com/google/uuid/hash.go new file mode 100644 index 0000000..b174616 --- /dev/null +++ b/vendor/github.com/google/uuid/hash.go @@ -0,0 +1,53 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "crypto/md5" + "crypto/sha1" + "hash" +) + +// Well known namespace IDs and UUIDs +var ( + NameSpaceDNS = Must(Parse("6ba7b810-9dad-11d1-80b4-00c04fd430c8")) + NameSpaceURL = Must(Parse("6ba7b811-9dad-11d1-80b4-00c04fd430c8")) + NameSpaceOID = Must(Parse("6ba7b812-9dad-11d1-80b4-00c04fd430c8")) + NameSpaceX500 = Must(Parse("6ba7b814-9dad-11d1-80b4-00c04fd430c8")) + Nil UUID // empty UUID, all zeros +) + +// NewHash returns a new UUID derived from the hash of space concatenated with +// data generated by h. The hash should be at least 16 byte in length. The +// first 16 bytes of the hash are used to form the UUID. The version of the +// UUID will be the lower 4 bits of version. NewHash is used to implement +// NewMD5 and NewSHA1. +func NewHash(h hash.Hash, space UUID, data []byte, version int) UUID { + h.Reset() + h.Write(space[:]) + h.Write(data) + s := h.Sum(nil) + var uuid UUID + copy(uuid[:], s) + uuid[6] = (uuid[6] & 0x0f) | uint8((version&0xf)<<4) + uuid[8] = (uuid[8] & 0x3f) | 0x80 // RFC 4122 variant + return uuid +} + +// NewMD5 returns a new MD5 (Version 3) UUID based on the +// supplied name space and data. It is the same as calling: +// +// NewHash(md5.New(), space, data, 3) +func NewMD5(space UUID, data []byte) UUID { + return NewHash(md5.New(), space, data, 3) +} + +// NewSHA1 returns a new SHA1 (Version 5) UUID based on the +// supplied name space and data. It is the same as calling: +// +// NewHash(sha1.New(), space, data, 5) +func NewSHA1(space UUID, data []byte) UUID { + return NewHash(sha1.New(), space, data, 5) +} diff --git a/vendor/github.com/google/uuid/marshal.go b/vendor/github.com/google/uuid/marshal.go new file mode 100644 index 0000000..7f9e0c6 --- /dev/null +++ b/vendor/github.com/google/uuid/marshal.go @@ -0,0 +1,37 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import "fmt" + +// MarshalText implements encoding.TextMarshaler. +func (uuid UUID) MarshalText() ([]byte, error) { + var js [36]byte + encodeHex(js[:], uuid) + return js[:], nil +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (uuid *UUID) UnmarshalText(data []byte) error { + id, err := ParseBytes(data) + if err == nil { + *uuid = id + } + return err +} + +// MarshalBinary implements encoding.BinaryMarshaler. +func (uuid UUID) MarshalBinary() ([]byte, error) { + return uuid[:], nil +} + +// UnmarshalBinary implements encoding.BinaryUnmarshaler. +func (uuid *UUID) UnmarshalBinary(data []byte) error { + if len(data) != 16 { + return fmt.Errorf("invalid UUID (got %d bytes)", len(data)) + } + copy(uuid[:], data) + return nil +} diff --git a/vendor/github.com/google/uuid/node.go b/vendor/github.com/google/uuid/node.go new file mode 100644 index 0000000..d651a2b --- /dev/null +++ b/vendor/github.com/google/uuid/node.go @@ -0,0 +1,90 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "sync" +) + +var ( + nodeMu sync.Mutex + ifname string // name of interface being used + nodeID [6]byte // hardware for version 1 UUIDs + zeroID [6]byte // nodeID with only 0's +) + +// NodeInterface returns the name of the interface from which the NodeID was +// derived. The interface "user" is returned if the NodeID was set by +// SetNodeID. +func NodeInterface() string { + defer nodeMu.Unlock() + nodeMu.Lock() + return ifname +} + +// SetNodeInterface selects the hardware address to be used for Version 1 UUIDs. +// If name is "" then the first usable interface found will be used or a random +// Node ID will be generated. If a named interface cannot be found then false +// is returned. +// +// SetNodeInterface never fails when name is "". +func SetNodeInterface(name string) bool { + defer nodeMu.Unlock() + nodeMu.Lock() + return setNodeInterface(name) +} + +func setNodeInterface(name string) bool { + iname, addr := getHardwareInterface(name) // null implementation for js + if iname != "" && addr != nil { + ifname = iname + copy(nodeID[:], addr) + return true + } + + // We found no interfaces with a valid hardware address. If name + // does not specify a specific interface generate a random Node ID + // (section 4.1.6) + if name == "" { + ifname = "random" + randomBits(nodeID[:]) + return true + } + return false +} + +// NodeID returns a slice of a copy of the current Node ID, setting the Node ID +// if not already set. +func NodeID() []byte { + defer nodeMu.Unlock() + nodeMu.Lock() + if nodeID == zeroID { + setNodeInterface("") + } + nid := nodeID + return nid[:] +} + +// SetNodeID sets the Node ID to be used for Version 1 UUIDs. The first 6 bytes +// of id are used. If id is less than 6 bytes then false is returned and the +// Node ID is not set. +func SetNodeID(id []byte) bool { + if len(id) < 6 { + return false + } + defer nodeMu.Unlock() + nodeMu.Lock() + copy(nodeID[:], id) + ifname = "user" + return true +} + +// NodeID returns the 6 byte node id encoded in uuid. It returns nil if uuid is +// not valid. The NodeID is only well defined for version 1 and 2 UUIDs. +func (uuid UUID) NodeID() []byte { + var node [6]byte + copy(node[:], uuid[10:]) + return node[:] +} diff --git a/vendor/github.com/google/uuid/node_js.go b/vendor/github.com/google/uuid/node_js.go new file mode 100644 index 0000000..24b78ed --- /dev/null +++ b/vendor/github.com/google/uuid/node_js.go @@ -0,0 +1,12 @@ +// Copyright 2017 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build js + +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. +// 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/node_net.go b/vendor/github.com/google/uuid/node_net.go new file mode 100644 index 0000000..0cbbcdd --- /dev/null +++ b/vendor/github.com/google/uuid/node_net.go @@ -0,0 +1,33 @@ +// Copyright 2017 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !js + +package uuid + +import "net" + +var interfaces []net.Interface // cached list of interfaces + +// getHardwareInterface returns the name and hardware address of interface name. +// If name is "" then the name and hardware address of one of the system's +// interfaces is returned. If no interfaces are found (name does not exist or +// there are no interfaces) then "", nil is returned. +// +// Only addresses of at least 6 bytes are returned. +func getHardwareInterface(name string) (string, []byte) { + if interfaces == nil { + var err error + interfaces, err = net.Interfaces() + if err != nil { + return "", nil + } + } + for _, ifs := range interfaces { + if len(ifs.HardwareAddr) >= 6 && (name == "" || name == ifs.Name) { + return ifs.Name, ifs.HardwareAddr + } + } + return "", nil +} diff --git a/vendor/github.com/google/uuid/sql.go b/vendor/github.com/google/uuid/sql.go new file mode 100644 index 0000000..f326b54 --- /dev/null +++ b/vendor/github.com/google/uuid/sql.go @@ -0,0 +1,59 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "database/sql/driver" + "fmt" +) + +// Scan implements sql.Scanner so UUIDs can be read from databases transparently +// Currently, database types that map to string and []byte are supported. Please +// consult database-specific driver documentation for matching types. +func (uuid *UUID) Scan(src interface{}) error { + switch src := src.(type) { + case nil: + return nil + + case string: + // if an empty UUID comes from a table, we return a null UUID + if src == "" { + return nil + } + + // see Parse for required string format + u, err := Parse(src) + if err != nil { + return fmt.Errorf("Scan: %v", err) + } + + *uuid = u + + case []byte: + // if an empty UUID comes from a table, we return a null UUID + if len(src) == 0 { + return nil + } + + // assumes a simple slice of bytes if 16 bytes + // otherwise attempts to parse + if len(src) != 16 { + return uuid.Scan(string(src)) + } + copy((*uuid)[:], src) + + default: + return fmt.Errorf("Scan: unable to scan type %T into UUID", src) + } + + return nil +} + +// Value implements sql.Valuer so that UUIDs can be written to databases +// transparently. Currently, UUIDs map to strings. Please consult +// database-specific driver documentation for matching types. +func (uuid UUID) Value() (driver.Value, error) { + return uuid.String(), nil +} diff --git a/vendor/github.com/google/uuid/time.go b/vendor/github.com/google/uuid/time.go new file mode 100644 index 0000000..e6ef06c --- /dev/null +++ b/vendor/github.com/google/uuid/time.go @@ -0,0 +1,123 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "encoding/binary" + "sync" + "time" +) + +// A Time represents a time as the number of 100's of nanoseconds since 15 Oct +// 1582. +type Time int64 + +const ( + lillian = 2299160 // Julian day of 15 Oct 1582 + unix = 2440587 // Julian day of 1 Jan 1970 + epoch = unix - lillian // Days between epochs + g1582 = epoch * 86400 // seconds between epochs + g1582ns100 = g1582 * 10000000 // 100s of a nanoseconds between epochs +) + +var ( + timeMu sync.Mutex + lasttime uint64 // last time we returned + clockSeq uint16 // clock sequence for this run + + timeNow = time.Now // for testing +) + +// UnixTime converts t the number of seconds and nanoseconds using the Unix +// epoch of 1 Jan 1970. +func (t Time) UnixTime() (sec, nsec int64) { + sec = int64(t - g1582ns100) + nsec = (sec % 10000000) * 100 + sec /= 10000000 + return sec, nsec +} + +// GetTime returns the current Time (100s of nanoseconds since 15 Oct 1582) and +// clock sequence as well as adjusting the clock sequence as needed. An error +// is returned if the current time cannot be determined. +func GetTime() (Time, uint16, error) { + defer timeMu.Unlock() + timeMu.Lock() + return getTime() +} + +func getTime() (Time, uint16, error) { + t := timeNow() + + // If we don't have a clock sequence already, set one. + if clockSeq == 0 { + setClockSequence(-1) + } + now := uint64(t.UnixNano()/100) + g1582ns100 + + // If time has gone backwards with this clock sequence then we + // increment the clock sequence + if now <= lasttime { + clockSeq = ((clockSeq + 1) & 0x3fff) | 0x8000 + } + lasttime = now + return Time(now), clockSeq, nil +} + +// ClockSequence returns the current clock sequence, generating one if not +// already set. The clock sequence is only used for Version 1 UUIDs. +// +// The uuid package does not use global static storage for the clock sequence or +// the last time a UUID was generated. Unless SetClockSequence is used, a new +// random clock sequence is generated the first time a clock sequence is +// requested by ClockSequence, GetTime, or NewUUID. (section 4.2.1.1) +func ClockSequence() int { + defer timeMu.Unlock() + timeMu.Lock() + return clockSequence() +} + +func clockSequence() int { + if clockSeq == 0 { + setClockSequence(-1) + } + return int(clockSeq & 0x3fff) +} + +// SetClockSequence sets the clock sequence to the lower 14 bits of seq. Setting to +// -1 causes a new sequence to be generated. +func SetClockSequence(seq int) { + defer timeMu.Unlock() + timeMu.Lock() + setClockSequence(seq) +} + +func setClockSequence(seq int) { + if seq == -1 { + var b [2]byte + randomBits(b[:]) // clock sequence + seq = int(b[0])<<8 | int(b[1]) + } + oldSeq := clockSeq + clockSeq = uint16(seq&0x3fff) | 0x8000 // Set our variant + if oldSeq != clockSeq { + lasttime = 0 + } +} + +// Time returns the time in 100s of nanoseconds since 15 Oct 1582 encoded in +// uuid. The time is only defined for version 1 and 2 UUIDs. +func (uuid UUID) Time() Time { + time := int64(binary.BigEndian.Uint32(uuid[0:4])) + time |= int64(binary.BigEndian.Uint16(uuid[4:6])) << 32 + time |= int64(binary.BigEndian.Uint16(uuid[6:8])&0xfff) << 48 + return Time(time) +} + +// ClockSequence returns the clock sequence encoded in uuid. +// The clock sequence is only well defined for version 1 and 2 UUIDs. +func (uuid UUID) ClockSequence() int { + return int(binary.BigEndian.Uint16(uuid[8:10])) & 0x3fff +} diff --git a/vendor/github.com/google/uuid/util.go b/vendor/github.com/google/uuid/util.go new file mode 100644 index 0000000..5ea6c73 --- /dev/null +++ b/vendor/github.com/google/uuid/util.go @@ -0,0 +1,43 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "io" +) + +// randomBits completely fills slice b with random data. +func randomBits(b []byte) { + if _, err := io.ReadFull(rander, b); err != nil { + panic(err.Error()) // rand should never fail + } +} + +// xvalues returns the value of a byte as a hexadecimal digit or 255. +var xvalues = [256]byte{ + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 255, 255, 255, 255, 255, 255, + 255, 10, 11, 12, 13, 14, 15, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 10, 11, 12, 13, 14, 15, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +} + +// xtob converts hex characters x1 and x2 into a byte. +func xtob(x1, x2 byte) (byte, bool) { + b1 := xvalues[x1] + b2 := xvalues[x2] + return (b1 << 4) | b2, b1 != 255 && b2 != 255 +} diff --git a/vendor/github.com/google/uuid/uuid.go b/vendor/github.com/google/uuid/uuid.go new file mode 100644 index 0000000..524404c --- /dev/null +++ b/vendor/github.com/google/uuid/uuid.go @@ -0,0 +1,245 @@ +// Copyright 2018 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "bytes" + "crypto/rand" + "encoding/hex" + "errors" + "fmt" + "io" + "strings" +) + +// A UUID is a 128 bit (16 byte) Universal Unique IDentifier as defined in RFC +// 4122. +type UUID [16]byte + +// A Version represents a UUID's version. +type Version byte + +// A Variant represents a UUID's variant. +type Variant byte + +// Constants returned by Variant. +const ( + Invalid = Variant(iota) // Invalid UUID + RFC4122 // The variant specified in RFC4122 + Reserved // Reserved, NCS backward compatibility. + Microsoft // Reserved, Microsoft Corporation backward compatibility. + Future // Reserved for future definition. +) + +var rander = rand.Reader // random function + +// Parse decodes s into a UUID or returns an error. Both the standard UUID +// forms of xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx and +// urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx are decoded as well as the +// Microsoft encoding {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} and the raw hex +// encoding: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. +func Parse(s string) (UUID, error) { + var uuid UUID + switch len(s) { + // xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + case 36: + + // urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + case 36 + 9: + if strings.ToLower(s[:9]) != "urn:uuid:" { + return uuid, fmt.Errorf("invalid urn prefix: %q", s[:9]) + } + s = s[9:] + + // {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} + case 36 + 2: + s = s[1:] + + // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + case 32: + var ok bool + for i := range uuid { + uuid[i], ok = xtob(s[i*2], s[i*2+1]) + if !ok { + return uuid, errors.New("invalid UUID format") + } + } + return uuid, nil + default: + return uuid, fmt.Errorf("invalid UUID length: %d", len(s)) + } + // s is now at least 36 bytes long + // it must be of the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + if s[8] != '-' || s[13] != '-' || s[18] != '-' || s[23] != '-' { + return uuid, errors.New("invalid UUID format") + } + for i, x := range [16]int{ + 0, 2, 4, 6, + 9, 11, + 14, 16, + 19, 21, + 24, 26, 28, 30, 32, 34} { + v, ok := xtob(s[x], s[x+1]) + if !ok { + return uuid, errors.New("invalid UUID format") + } + uuid[i] = v + } + return uuid, nil +} + +// ParseBytes is like Parse, except it parses a byte slice instead of a string. +func ParseBytes(b []byte) (UUID, error) { + var uuid UUID + 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:")) { + return uuid, fmt.Errorf("invalid urn prefix: %q", b[:9]) + } + b = b[9:] + case 36 + 2: // {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} + b = b[1:] + case 32: // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + var ok bool + for i := 0; i < 32; i += 2 { + uuid[i/2], ok = xtob(b[i], b[i+1]) + if !ok { + return uuid, errors.New("invalid UUID format") + } + } + return uuid, nil + default: + return uuid, fmt.Errorf("invalid UUID length: %d", len(b)) + } + // s is now at least 36 bytes long + // it must be of the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + if b[8] != '-' || b[13] != '-' || b[18] != '-' || b[23] != '-' { + return uuid, errors.New("invalid UUID format") + } + for i, x := range [16]int{ + 0, 2, 4, 6, + 9, 11, + 14, 16, + 19, 21, + 24, 26, 28, 30, 32, 34} { + v, ok := xtob(b[x], b[x+1]) + if !ok { + return uuid, errors.New("invalid UUID format") + } + uuid[i] = v + } + return uuid, nil +} + +// MustParse is like Parse but panics if the string cannot be parsed. +// It simplifies safe initialization of global variables holding compiled UUIDs. +func MustParse(s string) UUID { + uuid, err := Parse(s) + if err != nil { + panic(`uuid: Parse(` + s + `): ` + err.Error()) + } + return uuid +} + +// FromBytes creates a new UUID from a byte slice. Returns an error if the slice +// does not have a length of 16. The bytes are copied from the slice. +func FromBytes(b []byte) (uuid UUID, err error) { + err = uuid.UnmarshalBinary(b) + return uuid, err +} + +// Must returns uuid if err is nil and panics otherwise. +func Must(uuid UUID, err error) UUID { + if err != nil { + panic(err) + } + return uuid +} + +// String returns the string form of uuid, xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +// , or "" if uuid is invalid. +func (uuid UUID) String() string { + var buf [36]byte + encodeHex(buf[:], uuid) + return string(buf[:]) +} + +// URN returns the RFC 2141 URN form of uuid, +// urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, or "" if uuid is invalid. +func (uuid UUID) URN() string { + var buf [36 + 9]byte + copy(buf[:], "urn:uuid:") + encodeHex(buf[9:], uuid) + return string(buf[:]) +} + +func encodeHex(dst []byte, uuid UUID) { + hex.Encode(dst, uuid[:4]) + dst[8] = '-' + hex.Encode(dst[9:13], uuid[4:6]) + dst[13] = '-' + hex.Encode(dst[14:18], uuid[6:8]) + dst[18] = '-' + hex.Encode(dst[19:23], uuid[8:10]) + dst[23] = '-' + hex.Encode(dst[24:], uuid[10:]) +} + +// Variant returns the variant encoded in uuid. +func (uuid UUID) Variant() Variant { + switch { + case (uuid[8] & 0xc0) == 0x80: + return RFC4122 + case (uuid[8] & 0xe0) == 0xc0: + return Microsoft + case (uuid[8] & 0xe0) == 0xe0: + return Future + default: + return Reserved + } +} + +// Version returns the version of uuid. +func (uuid UUID) Version() Version { + return Version(uuid[6] >> 4) +} + +func (v Version) String() string { + if v > 15 { + return fmt.Sprintf("BAD_VERSION_%d", v) + } + return fmt.Sprintf("VERSION_%d", v) +} + +func (v Variant) String() string { + switch v { + case RFC4122: + return "RFC4122" + case Reserved: + return "Reserved" + case Microsoft: + return "Microsoft" + case Future: + return "Future" + case Invalid: + return "Invalid" + } + return fmt.Sprintf("BadVariant%d", int(v)) +} + +// SetRand sets the random number generator to r, which implements io.Reader. +// If r.Read returns an error when the package requests random data then +// a panic will be issued. +// +// Calling SetRand with nil sets the random number generator to the default +// generator. +func SetRand(r io.Reader) { + if r == nil { + rander = rand.Reader + return + } + rander = r +} diff --git a/vendor/github.com/google/uuid/version1.go b/vendor/github.com/google/uuid/version1.go new file mode 100644 index 0000000..199a1ac --- /dev/null +++ b/vendor/github.com/google/uuid/version1.go @@ -0,0 +1,44 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "encoding/binary" +) + +// NewUUID returns a Version 1 UUID based on the current NodeID and clock +// sequence, and the current time. If the NodeID has not been set by SetNodeID +// or SetNodeInterface then it will be set automatically. If the NodeID cannot +// be set NewUUID returns nil. If clock sequence has not been set by +// SetClockSequence then it will be set automatically. If GetTime fails to +// return the current NewUUID returns nil and an error. +// +// In most cases, New should be used. +func NewUUID() (UUID, error) { + nodeMu.Lock() + if nodeID == zeroID { + setNodeInterface("") + } + nodeMu.Unlock() + + var uuid UUID + now, seq, err := GetTime() + if err != nil { + return uuid, err + } + + timeLow := uint32(now & 0xffffffff) + timeMid := uint16((now >> 32) & 0xffff) + timeHi := uint16((now >> 48) & 0x0fff) + timeHi |= 0x1000 // Version 1 + + binary.BigEndian.PutUint32(uuid[0:], timeLow) + binary.BigEndian.PutUint16(uuid[4:], timeMid) + binary.BigEndian.PutUint16(uuid[6:], timeHi) + binary.BigEndian.PutUint16(uuid[8:], seq) + copy(uuid[10:], nodeID[:]) + + return uuid, nil +} diff --git a/vendor/github.com/google/uuid/version4.go b/vendor/github.com/google/uuid/version4.go new file mode 100644 index 0000000..84af91c --- /dev/null +++ b/vendor/github.com/google/uuid/version4.go @@ -0,0 +1,38 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import "io" + +// New creates a new random UUID or panics. New is equivalent to +// the expression +// +// uuid.Must(uuid.NewRandom()) +func New() UUID { + return Must(NewRandom()) +} + +// NewRandom returns a Random (Version 4) UUID. +// +// The strength of the UUIDs is based on the strength of the crypto/rand +// package. +// +// A note about uniqueness derived from the UUID Wikipedia entry: +// +// Randomly generated UUIDs have 122 random bits. One's annual risk of being +// hit by a meteorite is estimated to be one chance in 17 billion, that +// means the probability is about 0.00000000006 (6 × 10−11), +// equivalent to the odds of creating a few tens of trillions of UUIDs in a +// year and having one duplicate. +func NewRandom() (UUID, error) { + var uuid UUID + _, err := io.ReadFull(rander, uuid[:]) + if err != nil { + return Nil, err + } + uuid[6] = (uuid[6] & 0x0f) | 0x40 // Version 4 + uuid[8] = (uuid[8] & 0x3f) | 0x80 // Variant is 10 + return uuid, nil +} diff --git a/vendor/github.com/gophercloud/gophercloud/.gitignore b/vendor/github.com/gophercloud/gophercloud/.gitignore new file mode 100644 index 0000000..dd91ed2 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/.gitignore @@ -0,0 +1,3 @@ +**/*.swp +.idea +.vscode diff --git a/vendor/github.com/gophercloud/gophercloud/.travis.yml b/vendor/github.com/gophercloud/gophercloud/.travis.yml new file mode 100644 index 0000000..31f80f8 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/.travis.yml @@ -0,0 +1,25 @@ +language: go +sudo: false +install: +- GO111MODULE=off go get golang.org/x/crypto/ssh +- GO111MODULE=off go get -v -tags 'fixtures acceptance' ./... +- GO111MODULE=off go get github.com/wadey/gocovmerge +- GO111MODULE=off go get github.com/mattn/goveralls +- GO111MODULE=off go get golang.org/x/tools/cmd/goimports +go: +- "1.11" +- "1.12" +- "1.13" +- "tip" +env: + global: + - secure: "xSQsAG5wlL9emjbCdxzz/hYQsSpJ/bABO1kkbwMSISVcJ3Nk0u4ywF+LS4bgeOnwPfmFvNTOqVDu3RwEvMeWXSI76t1piCPcObutb2faKLVD/hLoAS76gYX+Z8yGWGHrSB7Do5vTPj1ERe2UljdrnsSeOXzoDwFxYRaZLX4bBOB4AyoGvRniil5QXPATiA1tsWX1VMicj8a4F8X+xeESzjt1Q5Iy31e7vkptu71bhvXCaoo5QhYwT+pLR9dN0S1b7Ro0KVvkRefmr1lUOSYd2e74h6Lc34tC1h3uYZCS4h47t7v5cOXvMNxinEj2C51RvbjvZI1RLVdkuAEJD1Iz4+Ote46nXbZ//6XRZMZz/YxQ13l7ux1PFjgEB6HAapmF5Xd8PRsgeTU9LRJxpiTJ3P5QJ3leS1va8qnziM5kYipj/Rn+V8g2ad/rgkRox9LSiR9VYZD2Pe45YCb1mTKSl2aIJnV7nkOqsShY5LNB4JZSg7xIffA+9YVDktw8dJlATjZqt7WvJJ49g6A61mIUV4C15q2JPGKTkZzDiG81NtmS7hFa7k0yaE2ELgYocbcuyUcAahhxntYTC0i23nJmEHVNiZmBO3u7EgpWe4KGVfumU+lt12tIn5b3dZRBBUk3QakKKozSK1QPHGpk/AZGrhu7H6l8to6IICKWtDcyMPQ=" + - GO111MODULE=on +before_script: +- go vet ./... +script: +- ./script/coverage +- ./script/unittest +- ./script/format +after_success: +- $HOME/gopath/bin/goveralls -service=travis-ci -coverprofile=cover.out diff --git a/vendor/github.com/gophercloud/gophercloud/.zuul.yaml b/vendor/github.com/gophercloud/gophercloud/.zuul.yaml new file mode 100644 index 0000000..b6649a3 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/.zuul.yaml @@ -0,0 +1,103 @@ +- job: + name: gophercloud-unittest + parent: golang-test + description: | + Run gophercloud unit test + run: .zuul/playbooks/gophercloud-unittest/run.yaml + nodeset: ubuntu-xenial-ut + +- job: + name: gophercloud-acceptance-test + parent: golang-test + description: | + Run gophercloud acceptance test on master branch + run: .zuul/playbooks/gophercloud-acceptance-test/run.yaml + nodeset: ubuntu-bionic + +- job: + name: gophercloud-acceptance-test-ironic + parent: golang-test + description: | + Run gophercloud ironic acceptance test on master branch + run: .zuul/playbooks/gophercloud-acceptance-test-ironic/run.yaml + nodeset: ubuntu-bionic + +- job: + name: gophercloud-acceptance-test-stein + parent: gophercloud-acceptance-test + description: | + Run gophercloud acceptance test on stein branch + vars: + global_env: + OS_BRANCH: stable/stein + +- job: + name: gophercloud-acceptance-test-rocky + parent: gophercloud-acceptance-test + description: | + Run gophercloud acceptance test on rocky branch + vars: + global_env: + OS_BRANCH: stable/rocky + +- job: + name: gophercloud-acceptance-test-queens + parent: gophercloud-acceptance-test + description: | + Run gophercloud acceptance test on queens branch + vars: + global_env: + OS_BRANCH: stable/queens + +- job: + name: gophercloud-acceptance-test-pike + parent: gophercloud-acceptance-test + description: | + Run gophercloud acceptance test on pike branch + vars: + global_env: + OS_BRANCH: stable/pike + +- job: + name: gophercloud-acceptance-test-ocata + parent: gophercloud-acceptance-test + description: | + Run gophercloud acceptance test on ocata branch + vars: + global_env: + OS_BRANCH: stable/ocata + +- job: + name: gophercloud-acceptance-test-newton + parent: gophercloud-acceptance-test + description: | + Run gophercloud acceptance test on newton branch + vars: + global_env: + OS_BRANCH: stable/newton + +- project: + name: gophercloud/gophercloud + check: + jobs: + - gophercloud-unittest + - gophercloud-acceptance-test + - gophercloud-acceptance-test-ironic + recheck-newton: + jobs: + - gophercloud-acceptance-test-newton + recheck-ocata: + jobs: + - gophercloud-acceptance-test-ocata + recheck-pike: + jobs: + - gophercloud-acceptance-test-pike + recheck-queens: + jobs: + - gophercloud-acceptance-test-queens + recheck-rocky: + jobs: + - gophercloud-acceptance-test-rocky + recheck-stein: + jobs: + - gophercloud-acceptance-test-stein diff --git a/vendor/github.com/gophercloud/gophercloud/CHANGELOG.md b/vendor/github.com/gophercloud/gophercloud/CHANGELOG.md new file mode 100644 index 0000000..23af89a --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/CHANGELOG.md @@ -0,0 +1,358 @@ +## 0.12.0 (Unreleased) + +## 0.11.0 (May 14, 2020) + +UPGRADE NOTES + +* Object storage container and object names are now URL encoded [GH-1930](https://github.com/gophercloud/gophercloud/pull/1930) +* All responses now have access to the returned headers. Please report any issues this has caused [GH-1942](https://github.com/gophercloud/gophercloud/pull/1942) +* Changes have been made to the internal HTTP client to ensure response bodies are handled in a way that enables connections to be re-used more efficiently [GH-1952](https://github.com/gophercloud/gophercloud/pull/1952) + +IMPROVEMENTS + +* Added `objectstorage/v1/containers.BulkDelete` [GH-1930](https://github.com/gophercloud/gophercloud/pull/1930) +* Added `objectstorage/v1/objects.BulkDelete` [GH-1930](https://github.com/gophercloud/gophercloud/pull/1930) +* Object storage container and object names are now URL encoded [GH-1930](https://github.com/gophercloud/gophercloud/pull/1930) +* All responses now have access to the returned headers [GH-1942](https://github.com/gophercloud/gophercloud/pull/1942) +* Added `compute/v2/extensions/injectnetworkinfo.InjectNetworkInfo` [GH-1941](https://github.com/gophercloud/gophercloud/pull/1941) +* Added `compute/v2/extensions/resetnetwork.ResetNetwork` [GH-1941](https://github.com/gophercloud/gophercloud/pull/1941) +* Added `identity/v3/extensions/trusts.ListRoles` [GH-1939](https://github.com/gophercloud/gophercloud/pull/1939) +* Added `identity/v3/extensions/trusts.GetRole` [GH-1939](https://github.com/gophercloud/gophercloud/pull/1939) +* Added `identity/v3/extensions/trusts.CheckRole` [GH-1939](https://github.com/gophercloud/gophercloud/pull/1939) +* Added `identity/v3/extensions/oauth1.Create` [GH-1935](https://github.com/gophercloud/gophercloud/pull/1935) +* Added `identity/v3/extensions/oauth1.CreateConsumer` [GH-1935](https://github.com/gophercloud/gophercloud/pull/1935) +* Added `identity/v3/extensions/oauth1.DeleteConsumer` [GH-1935](https://github.com/gophercloud/gophercloud/pull/1935) +* Added `identity/v3/extensions/oauth1.ListConsumers` [GH-1935](https://github.com/gophercloud/gophercloud/pull/1935) +* Added `identity/v3/extensions/oauth1.GetConsumer` [GH-1935](https://github.com/gophercloud/gophercloud/pull/1935) +* Added `identity/v3/extensions/oauth1.UpdateConsumer` [GH-1935](https://github.com/gophercloud/gophercloud/pull/1935) +* Added `identity/v3/extensions/oauth1.RequestToken` [GH-1935](https://github.com/gophercloud/gophercloud/pull/1935) +* Added `identity/v3/extensions/oauth1.AuthorizeToken` [GH-1935](https://github.com/gophercloud/gophercloud/pull/1935) +* Added `identity/v3/extensions/oauth1.CreateAccessToken` [GH-1935](https://github.com/gophercloud/gophercloud/pull/1935) +* Added `identity/v3/extensions/oauth1.GetAccessToken` [GH-1935](https://github.com/gophercloud/gophercloud/pull/1935) +* Added `identity/v3/extensions/oauth1.RevokeAccessToken` [GH-1935](https://github.com/gophercloud/gophercloud/pull/1935) +* Added `identity/v3/extensions/oauth1.ListAccessTokens` [GH-1935](https://github.com/gophercloud/gophercloud/pull/1935) +* Added `identity/v3/extensions/oauth1.ListAccessTokenRoles` [GH-1935](https://github.com/gophercloud/gophercloud/pull/1935) +* Added `identity/v3/extensions/oauth1.GetAccessTokenRole` [GH-1935](https://github.com/gophercloud/gophercloud/pull/1935) +* Added `networking/v2/extensions/agents.Update` [GH-1954](https://github.com/gophercloud/gophercloud/pull/1954) +* Added `networking/v2/extensions/agents.Delete` [GH-1954](https://github.com/gophercloud/gophercloud/pull/1954) +* Added `networking/v2/extensions/agents.ScheduleDHCPNetwork` [GH-1954](https://github.com/gophercloud/gophercloud/pull/1954) +* Added `networking/v2/extensions/agents.RemoveDHCPNetwork` [GH-1954](https://github.com/gophercloud/gophercloud/pull/1954) +* Added `identity/v3/projects.CreateOpts.Extra` [GH-1951](https://github.com/gophercloud/gophercloud/pull/1951) +* Added `identity/v3/projects.CreateOpts.Options` [GH-1951](https://github.com/gophercloud/gophercloud/pull/1951) +* Added `identity/v3/projects.UpdateOpts.Extra` [GH-1951](https://github.com/gophercloud/gophercloud/pull/1951) +* Added `identity/v3/projects.UpdateOpts.Options` [GH-1951](https://github.com/gophercloud/gophercloud/pull/1951) +* Added `identity/v3/projects.Project.Extra` [GH-1951](https://github.com/gophercloud/gophercloud/pull/1951) +* Added `identity/v3/projects.Options.Options` [GH-1951](https://github.com/gophercloud/gophercloud/pull/1951) +* Added `imageservice/v2/images.Image.OpenStackImageImportMethods` [GH-1962](https://github.com/gophercloud/gophercloud/pull/1962) +* Added `imageservice/v2/images.Image.OpenStackImageStoreIDs` [GH-1962](https://github.com/gophercloud/gophercloud/pull/1962) + +BUG FIXES + +* Changed`identity/v3/extensions/trusts.Trust.RemainingUses` from `bool` to `int` [GH-1939](https://github.com/gophercloud/gophercloud/pull/1939) +* Changed `identity/v3/applicationcredentials.CreateOpts.ExpiresAt` from `string` to `*time.Time` [GH-1937](https://github.com/gophercloud/gophercloud/pull/1937) +* Fixed issue with unmarshalling/decoding slices of composed structs [GH-1964](https://github.com/gophercloud/gophercloud/pull/1964) + +## 0.10.0 (April 12, 2020) + +UPGRADE NOTES + +* The various `IDFromName` convenience functions have been moved to https://github.com/gophercloud/utils [GH-1897](https://github.com/gophercloud/gophercloud/pull/1897) +* `sharedfilesystems/v2/shares.GetExportLocations` was renamed to `sharedfilesystems/v2/shares.ListExportLocations` [GH-1932](https://github.com/gophercloud/gophercloud/pull/1932) + +IMPROVEMENTS + +* Added `blockstorage/extensions/volumeactions.SetBootable` [GH-1891](https://github.com/gophercloud/gophercloud/pull/1891) +* Added `blockstorage/extensions/backups.Export` [GH-1894](https://github.com/gophercloud/gophercloud/pull/1894) +* Added `blockstorage/extensions/backups.Import` [GH-1894](https://github.com/gophercloud/gophercloud/pull/1894) +* Added `placement/v1/resourceproviders.GetTraits` [GH-1899](https://github.com/gophercloud/gophercloud/pull/1899) +* Added the ability to authenticate with Amazon EC2 Credentials [GH-1900](https://github.com/gophercloud/gophercloud/pull/1900) +* Added ability to list Nova services by binary and host [GH-1904](https://github.com/gophercloud/gophercloud/pull/1904) +* Added `compute/v2/extensions/services.Update` [GH-1902](https://github.com/gophercloud/gophercloud/pull/1902) +* Added system scope to v3 authentication [GH-1908](https://github.com/gophercloud/gophercloud/pull/1908) +* Added `identity/v3/extensions/ec2tokens.ValidateS3Token` [GH-1906](https://github.com/gophercloud/gophercloud/pull/1906) +* Added `containerinfra/v1/clusters.Cluster.HealthStatus` [GH-1910](https://github.com/gophercloud/gophercloud/pull/1910) +* Added `containerinfra/v1/clusters.Cluster.HealthStatusReason` [GH-1910](https://github.com/gophercloud/gophercloud/pull/1910) +* Added `loadbalancer/v2/amphorae.Failover` [GH-1912](https://github.com/gophercloud/gophercloud/pull/1912) +* Added `identity/v3/extensions/ec2credentials.List` [GH-1916](https://github.com/gophercloud/gophercloud/pull/1916) +* Added `identity/v3/extensions/ec2credentials.Get` [GH-1916](https://github.com/gophercloud/gophercloud/pull/1916) +* Added `identity/v3/extensions/ec2credentials.Create` [GH-1916](https://github.com/gophercloud/gophercloud/pull/1916) +* Added `identity/v3/extensions/ec2credentials.Delete` [GH-1916](https://github.com/gophercloud/gophercloud/pull/1916) +* Added `ErrUnexpectedResponseCode.ResponseHeader` [GH-1919](https://github.com/gophercloud/gophercloud/pull/1919) +* Added support for TOTP authentication [GH-1922](https://github.com/gophercloud/gophercloud/pull/1922) +* `sharedfilesystems/v2/shares.GetExportLocations` was renamed to `sharedfilesystems/v2/shares.ListExportLocations` [GH-1932](https://github.com/gophercloud/gophercloud/pull/1932) +* Added `sharedfilesystems/v2/shares.GetExportLocation` [GH-1932](https://github.com/gophercloud/gophercloud/pull/1932) +* Added `sharedfilesystems/v2/shares.Revert` [GH-1931](https://github.com/gophercloud/gophercloud/pull/1931) +* Added `sharedfilesystems/v2/shares.ResetStatus` [GH-1931](https://github.com/gophercloud/gophercloud/pull/1931) +* Added `sharedfilesystems/v2/shares.ForceDelete` [GH-1931](https://github.com/gophercloud/gophercloud/pull/1931) +* Added `sharedfilesystems/v2/shares.Unmanage` [GH-1931](https://github.com/gophercloud/gophercloud/pull/1931) +* Added `blockstorage/v3/attachments.Create` [GH-1934](https://github.com/gophercloud/gophercloud/pull/1934) +* Added `blockstorage/v3/attachments.List` [GH-1934](https://github.com/gophercloud/gophercloud/pull/1934) +* Added `blockstorage/v3/attachments.Get` [GH-1934](https://github.com/gophercloud/gophercloud/pull/1934) +* Added `blockstorage/v3/attachments.Update` [GH-1934](https://github.com/gophercloud/gophercloud/pull/1934) +* Added `blockstorage/v3/attachments.Delete` [GH-1934](https://github.com/gophercloud/gophercloud/pull/1934) +* Added `blockstorage/v3/attachments.Complete` [GH-1934](https://github.com/gophercloud/gophercloud/pull/1934) + +BUG FIXES + +* Fixed issue with Orchestration `get_file` only being able to read JSON and YAML files [GH-1915](https://github.com/gophercloud/gophercloud/pull/1915) + +## 0.9.0 (March 10, 2020) + +UPGRADE NOTES + +* The way we implement new API result fields added by microversions has changed. Previously, we would declare a dedicated `ExtractFoo` function in a file called `microversions.go`. Now, we are declaring those fields inline of the original result struct as a pointer. [GH-1854](https://github.com/gophercloud/gophercloud/pull/1854) + +* `compute/v2/servers.CreateOpts.Networks` has changed from `[]Network` to `interface{}` in order to support creating servers that have no networks. [GH-1884](https://github.com/gophercloud/gophercloud/pull/1884) + +IMPROVEMENTS + +* Added `compute/v2/extensions/instanceactions.List` [GH-1848](https://github.com/gophercloud/gophercloud/pull/1848) +* Added `compute/v2/extensions/instanceactions.Get` [GH-1848](https://github.com/gophercloud/gophercloud/pull/1848) +* Added `networking/v2/ports.List.FixedIPs` [GH-1849](https://github.com/gophercloud/gophercloud/pull/1849) +* Added `identity/v3/extensions/trusts.List` [GH-1855](https://github.com/gophercloud/gophercloud/pull/1855) +* Added `identity/v3/extensions/trusts.Get` [GH-1855](https://github.com/gophercloud/gophercloud/pull/1855) +* Added `identity/v3/extensions/trusts.Trust.ExpiresAt` [GH-1857](https://github.com/gophercloud/gophercloud/pull/1857) +* Added `identity/v3/extensions/trusts.Trust.DeletedAt` [GH-1857](https://github.com/gophercloud/gophercloud/pull/1857) +* Added `compute/v2/extensions/instanceactions.InstanceActionDetail` [GH-1851](https://github.com/gophercloud/gophercloud/pull/1851) +* Added `compute/v2/extensions/instanceactions.Event` [GH-1851](https://github.com/gophercloud/gophercloud/pull/1851) +* Added `compute/v2/extensions/instanceactions.ListOpts` [GH-1858](https://github.com/gophercloud/gophercloud/pull/1858) +* Added `objectstorage/v1/containers.UpdateOpts.TempURLKey` [GH-1864](https://github.com/gophercloud/gophercloud/pull/1864) +* Added `objectstorage/v1/containers.UpdateOpts.TempURLKey2` [GH-1864](https://github.com/gophercloud/gophercloud/pull/1864) +* Added `placement/v1/resourceproviders.GetUsages` [GH-1862](https://github.com/gophercloud/gophercloud/pull/1862) +* Added `placement/v1/resourceproviders.GetInventories` [GH-1862](https://github.com/gophercloud/gophercloud/pull/1862) +* Added `imageservice/v2/images.ReplaceImageMinRam` [GH-1867](https://github.com/gophercloud/gophercloud/pull/1867) +* Added `objectstorage/v1/containers.UpdateOpts.TempURLKey` [GH-1865](https://github.com/gophercloud/gophercloud/pull/1865) +* Added `objectstorage/v1/containers.CreateOpts.TempURLKey2` [GH-1865](https://github.com/gophercloud/gophercloud/pull/1865) +* Added `blockstorage/extensions/volumetransfers.List` [GH-1869](https://github.com/gophercloud/gophercloud/pull/1869) +* Added `blockstorage/extensions/volumetransfers.Create` [GH-1869](https://github.com/gophercloud/gophercloud/pull/1869) +* Added `blockstorage/extensions/volumetransfers.Accept` [GH-1869](https://github.com/gophercloud/gophercloud/pull/1869) +* Added `blockstorage/extensions/volumetransfers.Get` [GH-1869](https://github.com/gophercloud/gophercloud/pull/1869) +* Added `blockstorage/extensions/volumetransfers.Delete` [GH-1869](https://github.com/gophercloud/gophercloud/pull/1869) +* Added `blockstorage/extensions/backups.RestoreFromBackup` [GH-1871](https://github.com/gophercloud/gophercloud/pull/1871) +* Added `blockstorage/v3/volumes.CreateOpts.BackupID` [GH-1871](https://github.com/gophercloud/gophercloud/pull/1871) +* Added `blockstorage/v3/volumes.Volume.BackupID` [GH-1871](https://github.com/gophercloud/gophercloud/pull/1871) +* Added `identity/v3/projects.ListOpts.Tags` [GH-1882](https://github.com/gophercloud/gophercloud/pull/1882) +* Added `identity/v3/projects.ListOpts.TagsAny` [GH-1882](https://github.com/gophercloud/gophercloud/pull/1882) +* Added `identity/v3/projects.ListOpts.NotTags` [GH-1882](https://github.com/gophercloud/gophercloud/pull/1882) +* Added `identity/v3/projects.ListOpts.NotTagsAny` [GH-1882](https://github.com/gophercloud/gophercloud/pull/1882) +* Added `identity/v3/projects.CreateOpts.Tags` [GH-1882](https://github.com/gophercloud/gophercloud/pull/1882) +* Added `identity/v3/projects.UpdateOpts.Tags` [GH-1882](https://github.com/gophercloud/gophercloud/pull/1882) +* Added `identity/v3/projects.Project.Tags` [GH-1882](https://github.com/gophercloud/gophercloud/pull/1882) +* Changed `compute/v2/servers.CreateOpts.Networks` from `[]Network` to `interface{}` to support creating servers with no networks. [GH-1884](https://github.com/gophercloud/gophercloud/pull/1884) + + +BUG FIXES + +* Added support for `int64` headers, which were previously being silently dropped [GH-1860](https://github.com/gophercloud/gophercloud/pull/1860) +* Allow image properties with empty values [GH-1875](https://github.com/gophercloud/gophercloud/pull/1875) +* Fixed `compute/v2/extensions/extendedserverattributes.ServerAttributesExt.Userdata` JSON tag [GH-1881](https://github.com/gophercloud/gophercloud/pull/1881) + +## 0.8.0 (February 8, 2020) + +UPGRADE NOTES + +* The behavior of `keymanager/v1/acls.SetOpts` has changed. Instead of a struct, it is now `[]SetOpt`. See [GH-1816](https://github.com/gophercloud/gophercloud/pull/1816) for implementation details. + +IMPROVEMENTS + +* The result of `containerinfra/v1/clusters.Resize` now returns only the UUID when calling `Extract`. This is a backwards-breaking change from the previous struct that was returned [GH-1649](https://github.com/gophercloud/gophercloud/pull/1649) +* Added `compute/v2/extensions/shelveunshelve.Shelve` [GH-1799](https://github.com/gophercloud/gophercloud/pull/1799) +* Added `compute/v2/extensions/shelveunshelve.ShelveOffload` [GH-1799](https://github.com/gophercloud/gophercloud/pull/1799) +* Added `compute/v2/extensions/shelveunshelve.Unshelve` [GH-1799](https://github.com/gophercloud/gophercloud/pull/1799) +* Added `containerinfra/v1/nodegroups.Get` [GH-1774](https://github.com/gophercloud/gophercloud/pull/1774) +* Added `containerinfra/v1/nodegroups.List` [GH-1774](https://github.com/gophercloud/gophercloud/pull/1774) +* Added `orchestration/v1/resourcetypes.List` [GH-1806](https://github.com/gophercloud/gophercloud/pull/1806) +* Added `orchestration/v1/resourcetypes.GetSchema` [GH-1806](https://github.com/gophercloud/gophercloud/pull/1806) +* Added `orchestration/v1/resourcetypes.GenerateTemplate` [GH-1806](https://github.com/gophercloud/gophercloud/pull/1806) +* Added `keymanager/v1/acls.SetOpt` and changed `keymanager/v1/acls.SetOpts` to `[]SetOpt` [GH-1816](https://github.com/gophercloud/gophercloud/pull/1816) +* Added `blockstorage/apiversions.List` [GH-458](https://github.com/gophercloud/gophercloud/pull/458) +* Added `blockstorage/apiversions.Get` [GH-458](https://github.com/gophercloud/gophercloud/pull/458) +* Added `StatusCodeError` interface and `GetStatusCode` convenience method [GH-1820](https://github.com/gophercloud/gophercloud/pull/1820) +* Added pagination support to `compute/v2/extensions/usage.SingleTenant` [GH-1819](https://github.com/gophercloud/gophercloud/pull/1819) +* Added pagination support to `compute/v2/extensions/usage.AllTenants` [GH-1819](https://github.com/gophercloud/gophercloud/pull/1819) +* Added `placement/v1/resourceproviders.List` [GH-1815](https://github.com/gophercloud/gophercloud/pull/1815) +* Allow `CreateMemberOptsBuilder` to be passed in `loadbalancer/v2/pools.Create` [GH-1822](https://github.com/gophercloud/gophercloud/pull/1822) +* Added `Backup` to `loadbalancer/v2/pools.CreateMemberOpts` [GH-1824](https://github.com/gophercloud/gophercloud/pull/1824) +* Added `MonitorAddress` to `loadbalancer/v2/pools.CreateMemberOpts` [GH-1824](https://github.com/gophercloud/gophercloud/pull/1824) +* Added `MonitorPort` to `loadbalancer/v2/pools.CreateMemberOpts` [GH-1824](https://github.com/gophercloud/gophercloud/pull/1824) +* Changed `Impersonation` to a non-required field in `identity/v3/extensions/trusts.CreateOpts` [GH-1818](https://github.com/gophercloud/gophercloud/pull/1818) +* Added `InsertHeaders` to `loadbalancer/v2/listeners.UpdateOpts` [GH-1835] +* Added `NUMATopology` to `baremetalintrospection/v1/introspection.Data` [GH-1842](https://github.com/gophercloud/gophercloud/pull/1842) +* Added `placement/v1/resourceproviders.Create` [GH-1841](https://github.com/gophercloud/gophercloud/pull/1841) +* Added `blockstorage/extensions/volumeactions.UploadImageOpts.Visibility` [GH-1873](https://github.com/gophercloud/gophercloud/pull/1873) +* Added `blockstorage/extensions/volumeactions.UploadImageOpts.Protected` [GH-1873](https://github.com/gophercloud/gophercloud/pull/1873) +* Added `blockstorage/extensions/volumeactions.VolumeImage.Visibility` [GH-1873](https://github.com/gophercloud/gophercloud/pull/1873) +* Added `blockstorage/extensions/volumeactions.VolumeImage.Protected` [GH-1873](https://github.com/gophercloud/gophercloud/pull/1873) + +BUG FIXES + +* Changed `sort_key` to `sort_keys` in ` workflow/v2/crontriggers.ListOpts` [GH-1809](https://github.com/gophercloud/gophercloud/pull/1809) +* Allow `blockstorage/extensions/schedulerstats.Capabilities.MaxOverSubscriptionRatio` to accept both string and int/float responses [GH-1817](https://github.com/gophercloud/gophercloud/pull/1817) +* Fixed bug in `NewLoadBalancerV2` for situations when the LBaaS service was advertised without a `/v2.0` endpoint [GH-1829](https://github.com/gophercloud/gophercloud/pull/1829) +* Fixed JSON tags in `baremetal/v1/ports.UpdateOperation` [GH-1840](https://github.com/gophercloud/gophercloud/pull/1840) +* Fixed JSON tags in `networking/v2/extensions/lbaas/vips.commonResult.Extract()` [GH-1840](https://github.com/gophercloud/gophercloud/pull/1840) + +## 0.7.0 (December 3, 2019) + +IMPROVEMENTS + +* Allow a token to be used directly for authentication instead of generating a new token based on a given token [GH-1752](https://github.com/gophercloud/gophercloud/pull/1752) +* Moved `tags.ServerTagsExt` to servers.TagsExt` [GH-1760](https://github.com/gophercloud/gophercloud/pull/1760) +* Added `tags`, `tags-any`, `not-tags`, and `not-tags-any` to `compute/v2/servers.ListOpts` [GH-1759](https://github.com/gophercloud/gophercloud/pull/1759) +* Added `AccessRule` to `identity/v3/applicationcredentials` [GH-1758](https://github.com/gophercloud/gophercloud/pull/1758) +* Gophercloud no longer returns an error when multiple endpoints are found. Instead, it will choose the first endpoint and discard the others [GH-1766](https://github.com/gophercloud/gophercloud/pull/1766) +* Added `networking/v2/extensions/fwaas_v2/rules.Create` [GH-1768](https://github.com/gophercloud/gophercloud/pull/1768) +* Added `networking/v2/extensions/fwaas_v2/rules.Delete` [GH-1771](https://github.com/gophercloud/gophercloud/pull/1771) +* Added `loadbalancer/v2/providers.List` [GH-1765](https://github.com/gophercloud/gophercloud/pull/1765) +* Added `networking/v2/extensions/fwaas_v2/rules.Get` [GH-1772](https://github.com/gophercloud/gophercloud/pull/1772) +* Added `networking/v2/extensions/fwaas_v2/rules.Update` [GH-1776](https://github.com/gophercloud/gophercloud/pull/1776) +* Added `networking/v2/extensions/fwaas_v2/rules.List` [GH-1783](https://github.com/gophercloud/gophercloud/pull/1783) +* Added `MaxRetriesDown` into `loadbalancer/v2/monitors.CreateOpts` [GH-1785](https://github.com/gophercloud/gophercloud/pull/1785) +* Added `MaxRetriesDown` into `loadbalancer/v2/monitors.UpdateOpts` [GH-1786](https://github.com/gophercloud/gophercloud/pull/1786) +* Added `MaxRetriesDown` into `loadbalancer/v2/monitors.Monitor` [GH-1787](https://github.com/gophercloud/gophercloud/pull/1787) +* Added `MaxRetriesDown` into `loadbalancer/v2/monitors.ListOpts` [GH-1788](https://github.com/gophercloud/gophercloud/pull/1788) +* Updated `go.mod` dependencies, specifically to account for CVE-2019-11840 with `golang.org/x/crypto` [GH-1793](https://github.com/gophercloud/gophercloud/pull/1788) + +## 0.6.0 (October 17, 2019) + +UPGRADE NOTES + +* The way reauthentication works has been refactored. This should not cause a problem, but please report bugs if it does. See [GH-1746](https://github.com/gophercloud/gophercloud/pull/1746) for more information. + +IMPROVEMENTS + +* Added `networking/v2/extensions/quotas.Get` [GH-1742](https://github.com/gophercloud/gophercloud/pull/1742) +* Added `networking/v2/extensions/quotas.Update` [GH-1747](https://github.com/gophercloud/gophercloud/pull/1747) +* Refactored the reauthentication implementation to use goroutines and added a check to prevent an infinite loop in certain situations. [GH-1746](https://github.com/gophercloud/gophercloud/pull/1746) + +BUG FIXES + +* Changed `Flavor` to `FlavorID` in `loadbalancer/v2/loadbalancers` [GH-1744](https://github.com/gophercloud/gophercloud/pull/1744) +* Changed `Flavor` to `FlavorID` in `networking/v2/extensions/lbaas_v2/loadbalancers` [GH-1744](https://github.com/gophercloud/gophercloud/pull/1744) +* The `go-yaml` dependency was updated to `v2.2.4` to fix possible DDOS vulnerabilities [GH-1751](https://github.com/gophercloud/gophercloud/pull/1751) + +## 0.5.0 (October 13, 2019) + +IMPROVEMENTS + +* Added `VolumeType` to `compute/v2/extensions/bootfromvolume.BlockDevice`[GH-1690](https://github.com/gophercloud/gophercloud/pull/1690) +* Added `networking/v2/extensions/layer3/portforwarding.List` [GH-1688](https://github.com/gophercloud/gophercloud/pull/1688) +* Added `networking/v2/extensions/layer3/portforwarding.Get` [GH-1698](https://github.com/gophercloud/gophercloud/pull/1696) +* Added `compute/v2/extensions/tags.ReplaceAll` [GH-1696](https://github.com/gophercloud/gophercloud/pull/1696) +* Added `compute/v2/extensions/tags.Add` [GH-1696](https://github.com/gophercloud/gophercloud/pull/1696) +* Added `networking/v2/extensions/layer3/portforwarding.Update` [GH-1703](https://github.com/gophercloud/gophercloud/pull/1703) +* Added `ExtractDomain` method to token results in `identity/v3/tokens` [GH-1712](https://github.com/gophercloud/gophercloud/pull/1712) +* Added `AllowedCIDRs` to `loadbalancer/v2/listeners.CreateOpts` [GH-1710](https://github.com/gophercloud/gophercloud/pull/1710) +* Added `AllowedCIDRs` to `loadbalancer/v2/listeners.UpdateOpts` [GH-1710](https://github.com/gophercloud/gophercloud/pull/1710) +* Added `AllowedCIDRs` to `loadbalancer/v2/listeners.Listener` [GH-1710](https://github.com/gophercloud/gophercloud/pull/1710) +* Added `compute/v2/extensions/tags.Add` [GH-1695](https://github.com/gophercloud/gophercloud/pull/1695) +* Added `compute/v2/extensions/tags.ReplaceAll` [GH-1694](https://github.com/gophercloud/gophercloud/pull/1694) +* Added `compute/v2/extensions/tags.Delete` [GH-1699](https://github.com/gophercloud/gophercloud/pull/1699) +* Added `compute/v2/extensions/tags.DeleteAll` [GH-1700](https://github.com/gophercloud/gophercloud/pull/1700) +* Added `ImageStatusImporting` as an image status [GH-1725](https://github.com/gophercloud/gophercloud/pull/1725) +* Added `ByPath` to `baremetalintrospection/v1/introspection.RootDiskType` [GH-1730](https://github.com/gophercloud/gophercloud/pull/1730) +* Added `AttachedVolumes` to `compute/v2/servers.Server` [GH-1732](https://github.com/gophercloud/gophercloud/pull/1732) +* Enable unmarshaling server tags to a `compute/v2/servers.Server` struct [GH-1734] +* Allow setting an empty members list in `loadbalancer/v2/pools.BatchUpdateMembers` [GH-1736](https://github.com/gophercloud/gophercloud/pull/1736) +* Allow unsetting members' subnet ID and name in `loadbalancer/v2/pools.BatchUpdateMemberOpts` [GH-1738](https://github.com/gophercloud/gophercloud/pull/1738) + +BUG FIXES + +* Changed struct type for options in `networking/v2/extensions/lbaas_v2/listeners` to `UpdateOptsBuilder` interface instead of specific UpdateOpts type [GH-1705](https://github.com/gophercloud/gophercloud/pull/1705) +* Changed struct type for options in `networking/v2/extensions/lbaas_v2/loadbalancers` to `UpdateOptsBuilder` interface instead of specific UpdateOpts type [GH-1706](https://github.com/gophercloud/gophercloud/pull/1706) +* Fixed issue with `blockstorage/v1/volumes.Create` where the response was expected to be 202 [GH-1720](https://github.com/gophercloud/gophercloud/pull/1720) +* Changed `DefaultTlsContainerRef` from `string` to `*string` in `loadbalancer/v2/listeners.UpdateOpts` to allow the value to be removed during update. [GH-1723](https://github.com/gophercloud/gophercloud/pull/1723) +* Changed `SniContainerRefs` from `[]string{}` to `*[]string{}` in `loadbalancer/v2/listeners.UpdateOpts` to allow the value to be removed during update. [GH-1723](https://github.com/gophercloud/gophercloud/pull/1723) +* Changed `DefaultTlsContainerRef` from `string` to `*string` in `networking/v2/extensions/lbaas_v2/listeners.UpdateOpts` to allow the value to be removed during update. [GH-1723](https://github.com/gophercloud/gophercloud/pull/1723) +* Changed `SniContainerRefs` from `[]string{}` to `*[]string{}` in `networking/v2/extensions/lbaas_v2/listeners.UpdateOpts` to allow the value to be removed during update. [GH-1723](https://github.com/gophercloud/gophercloud/pull/1723) + + +## 0.4.0 (September 3, 2019) + +IMPROVEMENTS + +* Added `blockstorage/extensions/quotasets.results.QuotaSet.Groups` [GH-1668](https://github.com/gophercloud/gophercloud/pull/1668) +* Added `blockstorage/extensions/quotasets.results.QuotaUsageSet.Groups` [GH-1668](https://github.com/gophercloud/gophercloud/pull/1668) +* Added `containerinfra/v1/clusters.CreateOpts.FixedNetwork` [GH-1674](https://github.com/gophercloud/gophercloud/pull/1674) +* Added `containerinfra/v1/clusters.CreateOpts.FixedSubnet` [GH-1676](https://github.com/gophercloud/gophercloud/pull/1676) +* Added `containerinfra/v1/clusters.CreateOpts.FloatingIPEnabled` [GH-1677](https://github.com/gophercloud/gophercloud/pull/1677) +* Added `CreatedAt` and `UpdatedAt` to `loadbalancers/v2/loadbalancers.LoadBalancer` [GH-1681](https://github.com/gophercloud/gophercloud/pull/1681) +* Added `networking/v2/extensions/layer3/portforwarding.Create` [GH-1651](https://github.com/gophercloud/gophercloud/pull/1651) +* Added `networking/v2/extensions/agents.ListDHCPNetworks` [GH-1686](https://github.com/gophercloud/gophercloud/pull/1686) +* Added `networking/v2/extensions/layer3/portforwarding.Delete` [GH-1652](https://github.com/gophercloud/gophercloud/pull/1652) +* Added `compute/v2/extensions/tags.List` [GH-1679](https://github.com/gophercloud/gophercloud/pull/1679) +* Added `compute/v2/extensions/tags.Check` [GH-1679](https://github.com/gophercloud/gophercloud/pull/1679) + +BUG FIXES + +* Changed `identity/v3/endpoints.ListOpts.RegionID` from `int` to `string` [GH-1664](https://github.com/gophercloud/gophercloud/pull/1664) +* Fixed issue where older time formats in some networking APIs/resources were unable to be parsed [GH-1671](https://github.com/gophercloud/gophercloud/pull/1664) +* Changed `SATA`, `SCSI`, and `SAS` types to `InterfaceType` in `baremetal/v1/nodes` [GH-1683] + +## 0.3.0 (July 31, 2019) + +IMPROVEMENTS + +* Added `baremetal/apiversions.List` [GH-1577](https://github.com/gophercloud/gophercloud/pull/1577) +* Added `baremetal/apiversions.Get` [GH-1577](https://github.com/gophercloud/gophercloud/pull/1577) +* Added `compute/v2/extensions/servergroups.CreateOpts.Policy` [GH-1636](https://github.com/gophercloud/gophercloud/pull/1636) +* Added `identity/v3/extensions/trusts.Create` [GH-1644](https://github.com/gophercloud/gophercloud/pull/1644) +* Added `identity/v3/extensions/trusts.Delete` [GH-1644](https://github.com/gophercloud/gophercloud/pull/1644) +* Added `CreatedAt` and `UpdatedAt` to `networking/v2/extensions/layer3/floatingips.FloatingIP` [GH-1647](https://github.com/gophercloud/gophercloud/issues/1646) +* Added `CreatedAt` and `UpdatedAt` to `networking/v2/extensions/security/groups.SecGroup` [GH-1654](https://github.com/gophercloud/gophercloud/issues/1654) +* Added `CreatedAt` and `UpdatedAt` to `networking/v2/networks.Network` [GH-1657](https://github.com/gophercloud/gophercloud/issues/1657) +* Added `keymanager/v1/containers.CreateSecretRef` [GH-1659](https://github.com/gophercloud/gophercloud/issues/1659) +* Added `keymanager/v1/containers.DeleteSecretRef` [GH-1659](https://github.com/gophercloud/gophercloud/issues/1659) +* Added `sharedfilesystems/v2/shares.GetMetadata` [GH-1656](https://github.com/gophercloud/gophercloud/issues/1656) +* Added `sharedfilesystems/v2/shares.GetMetadatum` [GH-1656](https://github.com/gophercloud/gophercloud/issues/1656) +* Added `sharedfilesystems/v2/shares.SetMetadata` [GH-1656](https://github.com/gophercloud/gophercloud/issues/1656) +* Added `sharedfilesystems/v2/shares.UpdateMetadata` [GH-1656](https://github.com/gophercloud/gophercloud/issues/1656) +* Added `sharedfilesystems/v2/shares.DeleteMetadatum` [GH-1656](https://github.com/gophercloud/gophercloud/issues/1656) +* Added `sharedfilesystems/v2/sharetypes.IDFromName` [GH-1662](https://github.com/gophercloud/gophercloud/issues/1662) + + + +BUG FIXES + +* Changed `baremetal/v1/nodes.CleanStep.Args` from `map[string]string` to `map[string]interface{}` [GH-1638](https://github.com/gophercloud/gophercloud/pull/1638) +* Removed `URLPath` and `ExpectedCodes` from `loadbalancer/v2/monitors.ToMonitorCreateMap` since Octavia now provides default values when these fields are not specified [GH-1640](https://github.com/gophercloud/gophercloud/pull/1540) + + +## 0.2.0 (June 17, 2019) + +IMPROVEMENTS + +* Added `networking/v2/extensions/qos/rules.ListBandwidthLimitRules` [GH-1584](https://github.com/gophercloud/gophercloud/pull/1584) +* Added `networking/v2/extensions/qos/rules.GetBandwidthLimitRule` [GH-1584](https://github.com/gophercloud/gophercloud/pull/1584) +* Added `networking/v2/extensions/qos/rules.CreateBandwidthLimitRule` [GH-1584](https://github.com/gophercloud/gophercloud/pull/1584) +* Added `networking/v2/extensions/qos/rules.UpdateBandwidthLimitRule` [GH-1589](https://github.com/gophercloud/gophercloud/pull/1589) +* Added `networking/v2/extensions/qos/rules.DeleteBandwidthLimitRule` [GH-1590](https://github.com/gophercloud/gophercloud/pull/1590) +* Added `networking/v2/extensions/qos/policies.List` [GH-1591](https://github.com/gophercloud/gophercloud/pull/1591) +* Added `networking/v2/extensions/qos/policies.Get` [GH-1593](https://github.com/gophercloud/gophercloud/pull/1593) +* Added `networking/v2/extensions/qos/rules.ListDSCPMarkingRules` [GH-1594](https://github.com/gophercloud/gophercloud/pull/1594) +* Added `networking/v2/extensions/qos/policies.Create` [GH-1595](https://github.com/gophercloud/gophercloud/pull/1595) +* Added `compute/v2/extensions/diagnostics.Get` [GH-1592](https://github.com/gophercloud/gophercloud/pull/1592) +* Added `networking/v2/extensions/qos/policies.Update` [GH-1603](https://github.com/gophercloud/gophercloud/pull/1603) +* Added `networking/v2/extensions/qos/policies.Delete` [GH-1603](https://github.com/gophercloud/gophercloud/pull/1603) +* Added `networking/v2/extensions/qos/rules.CreateDSCPMarkingRule` [GH-1605](https://github.com/gophercloud/gophercloud/pull/1605) +* Added `networking/v2/extensions/qos/rules.UpdateDSCPMarkingRule` [GH-1605](https://github.com/gophercloud/gophercloud/pull/1605) +* Added `networking/v2/extensions/qos/rules.GetDSCPMarkingRule` [GH-1609](https://github.com/gophercloud/gophercloud/pull/1609) +* Added `networking/v2/extensions/qos/rules.DeleteDSCPMarkingRule` [GH-1609](https://github.com/gophercloud/gophercloud/pull/1609) +* Added `networking/v2/extensions/qos/rules.ListMinimumBandwidthRules` [GH-1615](https://github.com/gophercloud/gophercloud/pull/1615) +* Added `networking/v2/extensions/qos/rules.GetMinimumBandwidthRule` [GH-1615](https://github.com/gophercloud/gophercloud/pull/1615) +* Added `networking/v2/extensions/qos/rules.CreateMinimumBandwidthRule` [GH-1615](https://github.com/gophercloud/gophercloud/pull/1615) +* Added `Hostname` to `baremetalintrospection/v1/introspection.Data` [GH-1627](https://github.com/gophercloud/gophercloud/pull/1627) +* Added `networking/v2/extensions/qos/rules.UpdateMinimumBandwidthRule` [GH-1624](https://github.com/gophercloud/gophercloud/pull/1624) +* Added `networking/v2/extensions/qos/rules.DeleteMinimumBandwidthRule` [GH-1624](https://github.com/gophercloud/gophercloud/pull/1624) +* Added `networking/v2/extensions/qos/ruletypes.GetRuleType` [GH-1625](https://github.com/gophercloud/gophercloud/pull/1625) +* Added `Extra` to `baremetalintrospection/v1/introspection.Data` [GH-1611](https://github.com/gophercloud/gophercloud/pull/1611) +* Added `blockstorage/extensions/volumeactions.SetImageMetadata` [GH-1621](https://github.com/gophercloud/gophercloud/pull/1621) + +BUG FIXES + +* Updated `networking/v2/extensions/qos/rules.UpdateBandwidthLimitRule` to use return code 200 [GH-1606](https://github.com/gophercloud/gophercloud/pull/1606) +* Fixed bug in `compute/v2/extensions/schedulerhints.SchedulerHints.Query` where contents will now be marshalled to a string [GH-1620](https://github.com/gophercloud/gophercloud/pull/1620) + +## 0.1.0 (May 27, 2019) + +Initial tagged release. diff --git a/vendor/github.com/gophercloud/gophercloud/LICENSE b/vendor/github.com/gophercloud/gophercloud/LICENSE new file mode 100644 index 0000000..fbbbc9e --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/LICENSE @@ -0,0 +1,191 @@ +Copyright 2012-2013 Rackspace, Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +CONDITIONS OF ANY KIND, either express or implied. See the License for the +specific language governing permissions and limitations under the License. + +------ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/vendor/github.com/gophercloud/gophercloud/README.md b/vendor/github.com/gophercloud/gophercloud/README.md new file mode 100644 index 0000000..ad29041 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/README.md @@ -0,0 +1,159 @@ +# Gophercloud: an OpenStack SDK for Go +[![Build Status](https://travis-ci.org/gophercloud/gophercloud.svg?branch=master)](https://travis-ci.org/gophercloud/gophercloud) +[![Coverage Status](https://coveralls.io/repos/github/gophercloud/gophercloud/badge.svg?branch=master)](https://coveralls.io/github/gophercloud/gophercloud?branch=master) + +Gophercloud is an OpenStack Go SDK. + +## Useful links + +* [Reference documentation](http://godoc.org/github.com/gophercloud/gophercloud) +* [Effective Go](https://golang.org/doc/effective_go.html) + +## How to install + +Before installing, you need to ensure that your [GOPATH environment variable](https://golang.org/doc/code.html#GOPATH) +is pointing to an appropriate directory where you want to install Gophercloud: + +```bash +mkdir $HOME/go +export GOPATH=$HOME/go +``` + +To protect yourself against changes in your dependencies, we highly recommend choosing a +[dependency management solution](https://github.com/golang/go/wiki/PackageManagementTools) for +your projects, such as [godep](https://github.com/tools/godep). Once this is set up, you can install +Gophercloud as a dependency like so: + +```bash +go get github.com/gophercloud/gophercloud + +# Edit your code to import relevant packages from "github.com/gophercloud/gophercloud" + +godep save ./... +``` + +This will install all the source files you need into a `Godeps/_workspace` directory, which is +referenceable from your own source files when you use the `godep go` command. + +## Getting started + +### Credentials + +Because you'll be hitting an API, you will need to retrieve your OpenStack +credentials and either store them as environment variables or in your local Go +files. The first method is recommended because it decouples credential +information from source code, allowing you to push the latter to your version +control system without any security risk. + +You will need to retrieve the following: + +* username +* password +* a valid Keystone identity URL + +For users that have the OpenStack dashboard installed, there's a shortcut. If +you visit the `project/access_and_security` path in Horizon and click on the +"Download OpenStack RC File" button at the top right hand corner, you will +download a bash file that exports all of your access details to environment +variables. To execute the file, run `source admin-openrc.sh` and you will be +prompted for your password. + +### Authentication + +Once you have access to your credentials, you can begin plugging them into +Gophercloud. The next step is authentication, and this is handled by a base +"Provider" struct. To get one, you can either pass in your credentials +explicitly, or tell Gophercloud to use environment variables: + +```go +import ( + "github.com/gophercloud/gophercloud" + "github.com/gophercloud/gophercloud/openstack" + "github.com/gophercloud/gophercloud/openstack/utils" +) + +// Option 1: Pass in the values yourself +opts := gophercloud.AuthOptions{ + IdentityEndpoint: "https://openstack.example.com:5000/v2.0", + Username: "{username}", + Password: "{password}", +} + +// Option 2: Use a utility function to retrieve all your environment variables +opts, err := openstack.AuthOptionsFromEnv() +``` + +Once you have the `opts` variable, you can pass it in and get back a +`ProviderClient` struct: + +```go +provider, err := openstack.AuthenticatedClient(opts) +``` + +The `ProviderClient` is the top-level client that all of your OpenStack services +derive from. The provider contains all of the authentication details that allow +your Go code to access the API - such as the base URL and token ID. + +### Provision a server + +Once we have a base Provider, we inject it as a dependency into each OpenStack +service. In order to work with the Compute API, we need a Compute service +client; which can be created like so: + +```go +client, err := openstack.NewComputeV2(provider, gophercloud.EndpointOpts{ + Region: os.Getenv("OS_REGION_NAME"), +}) +``` + +We then use this `client` for any Compute API operation we want. In our case, +we want to provision a new server - so we invoke the `Create` method and pass +in the flavor ID (hardware specification) and image ID (operating system) we're +interested in: + +```go +import "github.com/gophercloud/gophercloud/openstack/compute/v2/servers" + +server, err := servers.Create(client, servers.CreateOpts{ + Name: "My new server!", + FlavorRef: "flavor_id", + ImageRef: "image_id", +}).Extract() +``` + +The above code sample creates a new server with the parameters, and embodies the +new resource in the `server` variable (a +[`servers.Server`](http://godoc.org/github.com/gophercloud/gophercloud) struct). + +## Advanced Usage + +Have a look at the [FAQ](./docs/FAQ.md) for some tips on customizing the way Gophercloud works. + +## Backwards-Compatibility Guarantees + +None. Vendor it and write tests covering the parts you use. + +## Contributing + +See the [contributing guide](./.github/CONTRIBUTING.md). + +## Help and feedback + +If you're struggling with something or have spotted a potential bug, feel free +to submit an issue to our [bug tracker](https://github.com/gophercloud/gophercloud/issues). + +## Thank You + +We'd like to extend special thanks and appreciation to the following: + +### OpenLab + + + +OpenLab is providing a full CI environment to test each PR and merge for a variety of OpenStack releases. + +### VEXXHOST + + + +VEXXHOST is providing their services to assist with the development and testing of Gophercloud. diff --git a/vendor/github.com/gophercloud/gophercloud/auth_options.go b/vendor/github.com/gophercloud/gophercloud/auth_options.go new file mode 100644 index 0000000..4f30130 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/auth_options.go @@ -0,0 +1,514 @@ +package gophercloud + +/* +AuthOptions stores information needed to authenticate to an OpenStack Cloud. +You can populate one manually, or use a provider's AuthOptionsFromEnv() function +to read relevant information from the standard environment variables. Pass one +to a provider's AuthenticatedClient function to authenticate and obtain a +ProviderClient representing an active session on that provider. + +Its fields are the union of those recognized by each identity implementation and +provider. + +An example of manually providing authentication information: + + opts := gophercloud.AuthOptions{ + IdentityEndpoint: "https://openstack.example.com:5000/v2.0", + Username: "{username}", + Password: "{password}", + TenantID: "{tenant_id}", + } + + provider, err := openstack.AuthenticatedClient(opts) + +An example of using AuthOptionsFromEnv(), where the environment variables can +be read from a file, such as a standard openrc file: + + opts, err := openstack.AuthOptionsFromEnv() + provider, err := openstack.AuthenticatedClient(opts) +*/ +type AuthOptions struct { + // IdentityEndpoint specifies the HTTP endpoint that is required to work with + // the Identity API of the appropriate version. While it's ultimately needed by + // all of the identity services, it will often be populated by a provider-level + // function. + // + // The IdentityEndpoint is typically referred to as the "auth_url" or + // "OS_AUTH_URL" in the information provided by the cloud operator. + IdentityEndpoint string `json:"-"` + + // Username is required if using Identity V2 API. Consult with your provider's + // control panel to discover your account's username. In Identity V3, either + // UserID or a combination of Username and DomainID or DomainName are needed. + Username string `json:"username,omitempty"` + UserID string `json:"-"` + + Password string `json:"password,omitempty"` + + // Passcode is used in TOTP authentication method + Passcode string `json:"passcode,omitempty"` + + // At most one of DomainID and DomainName must be provided if using Username + // with Identity V3. Otherwise, either are optional. + DomainID string `json:"-"` + DomainName string `json:"name,omitempty"` + + // The TenantID and TenantName fields are optional for the Identity V2 API. + // The same fields are known as project_id and project_name in the Identity + // V3 API, but are collected as TenantID and TenantName here in both cases. + // Some providers allow you to specify a TenantName instead of the TenantId. + // Some require both. Your provider's authentication policies will determine + // how these fields influence authentication. + // If DomainID or DomainName are provided, they will also apply to TenantName. + // It is not currently possible to authenticate with Username and a Domain + // and scope to a Project in a different Domain by using TenantName. To + // accomplish that, the ProjectID will need to be provided as the TenantID + // option. + TenantID string `json:"tenantId,omitempty"` + TenantName string `json:"tenantName,omitempty"` + + // AllowReauth should be set to true if you grant permission for Gophercloud to + // cache your credentials in memory, and to allow Gophercloud to attempt to + // re-authenticate automatically if/when your token expires. If you set it to + // false, it will not cache these settings, but re-authentication will not be + // possible. This setting defaults to false. + // + // NOTE: The reauth function will try to re-authenticate endlessly if left + // unchecked. The way to limit the number of attempts is to provide a custom + // HTTP client to the provider client and provide a transport that implements + // the RoundTripper interface and stores the number of failed retries. For an + // example of this, see here: + // https://github.com/rackspace/rack/blob/1.0.0/auth/clients.go#L311 + AllowReauth bool `json:"-"` + + // TokenID allows users to authenticate (possibly as another user) with an + // authentication token ID. + TokenID string `json:"-"` + + // Scope determines the scoping of the authentication request. + Scope *AuthScope `json:"-"` + + // Authentication through Application Credentials requires supplying name, project and secret + // For project we can use TenantID + ApplicationCredentialID string `json:"-"` + ApplicationCredentialName string `json:"-"` + ApplicationCredentialSecret string `json:"-"` +} + +// AuthScope allows a created token to be limited to a specific domain or project. +type AuthScope struct { + ProjectID string + ProjectName string + DomainID string + DomainName string + System bool +} + +// ToTokenV2CreateMap allows AuthOptions to satisfy the AuthOptionsBuilder +// interface in the v2 tokens package +func (opts AuthOptions) ToTokenV2CreateMap() (map[string]interface{}, error) { + // Populate the request map. + authMap := make(map[string]interface{}) + + if opts.Username != "" { + if opts.Password != "" { + authMap["passwordCredentials"] = map[string]interface{}{ + "username": opts.Username, + "password": opts.Password, + } + } else { + return nil, ErrMissingInput{Argument: "Password"} + } + } else if opts.TokenID != "" { + authMap["token"] = map[string]interface{}{ + "id": opts.TokenID, + } + } else { + return nil, ErrMissingInput{Argument: "Username"} + } + + if opts.TenantID != "" { + authMap["tenantId"] = opts.TenantID + } + if opts.TenantName != "" { + authMap["tenantName"] = opts.TenantName + } + + return map[string]interface{}{"auth": authMap}, nil +} + +// ToTokenV3CreateMap allows AuthOptions to satisfy the AuthOptionsBuilder +// interface in the v3 tokens package +func (opts *AuthOptions) ToTokenV3CreateMap(scope map[string]interface{}) (map[string]interface{}, error) { + type domainReq struct { + ID *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + } + + type projectReq struct { + Domain *domainReq `json:"domain,omitempty"` + Name *string `json:"name,omitempty"` + ID *string `json:"id,omitempty"` + } + + type userReq struct { + ID *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Password *string `json:"password,omitempty"` + Passcode *string `json:"passcode,omitempty"` + Domain *domainReq `json:"domain,omitempty"` + } + + type passwordReq struct { + User userReq `json:"user"` + } + + type tokenReq struct { + ID string `json:"id"` + } + + type applicationCredentialReq struct { + ID *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + User *userReq `json:"user,omitempty"` + Secret *string `json:"secret,omitempty"` + } + + type totpReq struct { + User *userReq `json:"user,omitempty"` + } + + type identityReq struct { + Methods []string `json:"methods"` + Password *passwordReq `json:"password,omitempty"` + Token *tokenReq `json:"token,omitempty"` + ApplicationCredential *applicationCredentialReq `json:"application_credential,omitempty"` + TOTP *totpReq `json:"totp,omitempty"` + } + + type authReq struct { + Identity identityReq `json:"identity"` + } + + type request struct { + Auth authReq `json:"auth"` + } + + // Populate the request structure based on the provided arguments. Create and return an error + // if insufficient or incompatible information is present. + var req request + + if opts.Password == "" && opts.Passcode == "" { + if opts.TokenID != "" { + // Because we aren't using password authentication, it's an error to also provide any of the user-based authentication + // parameters. + if opts.Username != "" { + return nil, ErrUsernameWithToken{} + } + if opts.UserID != "" { + return nil, ErrUserIDWithToken{} + } + if opts.DomainID != "" { + return nil, ErrDomainIDWithToken{} + } + if opts.DomainName != "" { + return nil, ErrDomainNameWithToken{} + } + + // Configure the request for Token authentication. + req.Auth.Identity.Methods = []string{"token"} + req.Auth.Identity.Token = &tokenReq{ + ID: opts.TokenID, + } + + } else if opts.ApplicationCredentialID != "" { + // Configure the request for ApplicationCredentialID authentication. + // https://github.com/openstack/keystoneauth/blob/stable/rocky/keystoneauth1/identity/v3/application_credential.py#L48-L67 + // There are three kinds of possible application_credential requests + // 1. application_credential id + secret + // 2. application_credential name + secret + user_id + // 3. application_credential name + secret + username + domain_id / domain_name + if opts.ApplicationCredentialSecret == "" { + return nil, ErrAppCredMissingSecret{} + } + req.Auth.Identity.Methods = []string{"application_credential"} + req.Auth.Identity.ApplicationCredential = &applicationCredentialReq{ + ID: &opts.ApplicationCredentialID, + Secret: &opts.ApplicationCredentialSecret, + } + } else if opts.ApplicationCredentialName != "" { + if opts.ApplicationCredentialSecret == "" { + return nil, ErrAppCredMissingSecret{} + } + + var userRequest *userReq + + if opts.UserID != "" { + // UserID could be used without the domain information + userRequest = &userReq{ + ID: &opts.UserID, + } + } + + if userRequest == nil && opts.Username == "" { + // Make sure that Username or UserID are provided + return nil, ErrUsernameOrUserID{} + } + + if userRequest == nil && opts.DomainID != "" { + userRequest = &userReq{ + Name: &opts.Username, + Domain: &domainReq{ID: &opts.DomainID}, + } + } + + if userRequest == nil && opts.DomainName != "" { + userRequest = &userReq{ + Name: &opts.Username, + Domain: &domainReq{Name: &opts.DomainName}, + } + } + + // Make sure that DomainID or DomainName are provided among Username + if userRequest == nil { + return nil, ErrDomainIDOrDomainName{} + } + + req.Auth.Identity.Methods = []string{"application_credential"} + req.Auth.Identity.ApplicationCredential = &applicationCredentialReq{ + Name: &opts.ApplicationCredentialName, + User: userRequest, + Secret: &opts.ApplicationCredentialSecret, + } + } else { + // If no password or token ID or ApplicationCredential are available, authentication can't continue. + return nil, ErrMissingPassword{} + } + } else { + // Password authentication. + if opts.Password != "" { + req.Auth.Identity.Methods = append(req.Auth.Identity.Methods, "password") + } + + // TOTP authentication. + if opts.Passcode != "" { + req.Auth.Identity.Methods = append(req.Auth.Identity.Methods, "totp") + } + + // At least one of Username and UserID must be specified. + if opts.Username == "" && opts.UserID == "" { + return nil, ErrUsernameOrUserID{} + } + + if opts.Username != "" { + // If Username is provided, UserID may not be provided. + if opts.UserID != "" { + return nil, ErrUsernameOrUserID{} + } + + // Either DomainID or DomainName must also be specified. + if opts.DomainID == "" && opts.DomainName == "" { + return nil, ErrDomainIDOrDomainName{} + } + + if opts.DomainID != "" { + if opts.DomainName != "" { + return nil, ErrDomainIDOrDomainName{} + } + + // Configure the request for Username and Password authentication with a DomainID. + if opts.Password != "" { + req.Auth.Identity.Password = &passwordReq{ + User: userReq{ + Name: &opts.Username, + Password: &opts.Password, + Domain: &domainReq{ID: &opts.DomainID}, + }, + } + } + if opts.Passcode != "" { + req.Auth.Identity.TOTP = &totpReq{ + User: &userReq{ + Name: &opts.Username, + Passcode: &opts.Passcode, + Domain: &domainReq{ID: &opts.DomainID}, + }, + } + } + } + + if opts.DomainName != "" { + // Configure the request for Username and Password authentication with a DomainName. + if opts.Password != "" { + req.Auth.Identity.Password = &passwordReq{ + User: userReq{ + Name: &opts.Username, + Password: &opts.Password, + Domain: &domainReq{Name: &opts.DomainName}, + }, + } + } + + if opts.Passcode != "" { + req.Auth.Identity.TOTP = &totpReq{ + User: &userReq{ + Name: &opts.Username, + Passcode: &opts.Passcode, + Domain: &domainReq{Name: &opts.DomainName}, + }, + } + } + } + } + + if opts.UserID != "" { + // If UserID is specified, neither DomainID nor DomainName may be. + if opts.DomainID != "" { + return nil, ErrDomainIDWithUserID{} + } + if opts.DomainName != "" { + return nil, ErrDomainNameWithUserID{} + } + + // Configure the request for UserID and Password authentication. + if opts.Password != "" { + req.Auth.Identity.Password = &passwordReq{ + User: userReq{ + ID: &opts.UserID, + Password: &opts.Password, + }, + } + } + + if opts.Passcode != "" { + req.Auth.Identity.TOTP = &totpReq{ + User: &userReq{ + ID: &opts.UserID, + Passcode: &opts.Passcode, + }, + } + } + } + } + + b, err := BuildRequestBody(req, "") + if err != nil { + return nil, err + } + + if len(scope) != 0 { + b["auth"].(map[string]interface{})["scope"] = scope + } + + return b, nil +} + +// ToTokenV3ScopeMap builds a scope from AuthOptions and satisfies interface in +// the v3 tokens package. +func (opts *AuthOptions) ToTokenV3ScopeMap() (map[string]interface{}, error) { + // For backwards compatibility. + // If AuthOptions.Scope was not set, try to determine it. + // This works well for common scenarios. + if opts.Scope == nil { + opts.Scope = new(AuthScope) + if opts.TenantID != "" { + opts.Scope.ProjectID = opts.TenantID + } else { + if opts.TenantName != "" { + opts.Scope.ProjectName = opts.TenantName + opts.Scope.DomainID = opts.DomainID + opts.Scope.DomainName = opts.DomainName + } + } + } + + if opts.Scope.System { + return map[string]interface{}{ + "system": map[string]interface{}{ + "all": true, + }, + }, nil + } + + if opts.Scope.ProjectName != "" { + // ProjectName provided: either DomainID or DomainName must also be supplied. + // ProjectID may not be supplied. + if opts.Scope.DomainID == "" && opts.Scope.DomainName == "" { + return nil, ErrScopeDomainIDOrDomainName{} + } + if opts.Scope.ProjectID != "" { + return nil, ErrScopeProjectIDOrProjectName{} + } + + if opts.Scope.DomainID != "" { + // ProjectName + DomainID + return map[string]interface{}{ + "project": map[string]interface{}{ + "name": &opts.Scope.ProjectName, + "domain": map[string]interface{}{"id": &opts.Scope.DomainID}, + }, + }, nil + } + + if opts.Scope.DomainName != "" { + // ProjectName + DomainName + return map[string]interface{}{ + "project": map[string]interface{}{ + "name": &opts.Scope.ProjectName, + "domain": map[string]interface{}{"name": &opts.Scope.DomainName}, + }, + }, nil + } + } else if opts.Scope.ProjectID != "" { + // ProjectID provided. ProjectName, DomainID, and DomainName may not be provided. + if opts.Scope.DomainID != "" { + return nil, ErrScopeProjectIDAlone{} + } + if opts.Scope.DomainName != "" { + return nil, ErrScopeProjectIDAlone{} + } + + // ProjectID + return map[string]interface{}{ + "project": map[string]interface{}{ + "id": &opts.Scope.ProjectID, + }, + }, nil + } else if opts.Scope.DomainID != "" { + // DomainID provided. ProjectID, ProjectName, and DomainName may not be provided. + if opts.Scope.DomainName != "" { + return nil, ErrScopeDomainIDOrDomainName{} + } + + // DomainID + return map[string]interface{}{ + "domain": map[string]interface{}{ + "id": &opts.Scope.DomainID, + }, + }, nil + } else if opts.Scope.DomainName != "" { + // DomainName + return map[string]interface{}{ + "domain": map[string]interface{}{ + "name": &opts.Scope.DomainName, + }, + }, nil + } + + return nil, nil +} + +func (opts AuthOptions) CanReauth() bool { + if opts.Passcode != "" { + // cannot reauth using TOTP passcode + return false + } + + return opts.AllowReauth +} + +// ToTokenV3HeadersMap allows AuthOptions to satisfy the AuthOptionsBuilder +// interface in the v3 tokens package. +func (opts *AuthOptions) ToTokenV3HeadersMap(map[string]interface{}) (map[string]string, error) { + return nil, nil +} diff --git a/vendor/github.com/gophercloud/gophercloud/auth_result.go b/vendor/github.com/gophercloud/gophercloud/auth_result.go new file mode 100644 index 0000000..2e4699b --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/auth_result.go @@ -0,0 +1,52 @@ +package gophercloud + +/* +AuthResult is the result from the request that was used to obtain a provider +client's Keystone token. It is returned from ProviderClient.GetAuthResult(). + +The following types satisfy this interface: + + github.com/gophercloud/gophercloud/openstack/identity/v2/tokens.CreateResult + github.com/gophercloud/gophercloud/openstack/identity/v3/tokens.CreateResult + +Usage example: + + import ( + "github.com/gophercloud/gophercloud" + tokens2 "github.com/gophercloud/gophercloud/openstack/identity/v2/tokens" + tokens3 "github.com/gophercloud/gophercloud/openstack/identity/v3/tokens" + ) + + func GetAuthenticatedUserID(providerClient *gophercloud.ProviderClient) (string, error) { + r := providerClient.GetAuthResult() + if r == nil { + //ProviderClient did not use openstack.Authenticate(), e.g. because token + //was set manually with ProviderClient.SetToken() + return "", errors.New("no AuthResult available") + } + switch r := r.(type) { + case tokens2.CreateResult: + u, err := r.ExtractUser() + if err != nil { + return "", err + } + return u.ID, nil + case tokens3.CreateResult: + u, err := r.ExtractUser() + if err != nil { + return "", err + } + return u.ID, nil + default: + panic(fmt.Sprintf("got unexpected AuthResult type %t", r)) + } + } + +Both implementing types share a lot of methods by name, like ExtractUser() in +this example. But those methods cannot be part of the AuthResult interface +because the return types are different (in this case, type tokens2.User vs. +type tokens3.User). +*/ +type AuthResult interface { + ExtractTokenID() (string, error) +} diff --git a/vendor/github.com/gophercloud/gophercloud/doc.go b/vendor/github.com/gophercloud/gophercloud/doc.go new file mode 100644 index 0000000..953ca82 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/doc.go @@ -0,0 +1,110 @@ +/* +Package gophercloud provides a multi-vendor interface to OpenStack-compatible +clouds. The library has a three-level hierarchy: providers, services, and +resources. + +Authenticating with Providers + +Provider structs represent the cloud providers that offer and manage a +collection of services. You will generally want to create one Provider +client per OpenStack cloud. + + It is now recommended to use the `clientconfig` package found at + https://github.com/gophercloud/utils/tree/master/openstack/clientconfig + for all authentication purposes. + + The below documentation is still relevant. clientconfig simply implements + the below and presents it in an easier and more flexible way. + +Use your OpenStack credentials to create a Provider client. The +IdentityEndpoint is typically refered to as "auth_url" or "OS_AUTH_URL" in +information provided by the cloud operator. Additionally, the cloud may refer to +TenantID or TenantName as project_id and project_name. Credentials are +specified like so: + + opts := gophercloud.AuthOptions{ + IdentityEndpoint: "https://openstack.example.com:5000/v2.0", + Username: "{username}", + Password: "{password}", + TenantID: "{tenant_id}", + } + + provider, err := openstack.AuthenticatedClient(opts) + +You can authenticate with a token by doing: + + opts := gophercloud.AuthOptions{ + IdentityEndpoint: "https://openstack.example.com:5000/v2.0", + TokenID: "{token_id}", + TenantID: "{tenant_id}", + } + + provider, err := openstack.AuthenticatedClient(opts) + +You may also use the openstack.AuthOptionsFromEnv() helper function. This +function reads in standard environment variables frequently found in an +OpenStack `openrc` file. Again note that Gophercloud currently uses "tenant" +instead of "project". + + opts, err := openstack.AuthOptionsFromEnv() + provider, err := openstack.AuthenticatedClient(opts) + +Service Clients + +Service structs are specific to a provider and handle all of the logic and +operations for a particular OpenStack service. Examples of services include: +Compute, Object Storage, Block Storage. In order to define one, you need to +pass in the parent provider, like so: + + opts := gophercloud.EndpointOpts{Region: "RegionOne"} + + client, err := openstack.NewComputeV2(provider, opts) + +Resources + +Resource structs are the domain models that services make use of in order +to work with and represent the state of API resources: + + server, err := servers.Get(client, "{serverId}").Extract() + +Intermediate Result structs are returned for API operations, which allow +generic access to the HTTP headers, response body, and any errors associated +with the network transaction. To turn a result into a usable resource struct, +you must call the Extract method which is chained to the response, or an +Extract function from an applicable extension: + + result := servers.Get(client, "{serverId}") + + // Attempt to extract the disk configuration from the OS-DCF disk config + // extension: + config, err := diskconfig.ExtractGet(result) + +All requests that enumerate a collection return a Pager struct that is used to +iterate through the results one page at a time. Use the EachPage method on that +Pager to handle each successive Page in a closure, then use the appropriate +extraction method from that request's package to interpret that Page as a slice +of results: + + err := servers.List(client, nil).EachPage(func (page pagination.Page) (bool, error) { + s, err := servers.ExtractServers(page) + if err != nil { + return false, err + } + + // Handle the []servers.Server slice. + + // Return "false" or an error to prematurely stop fetching new pages. + return true, nil + }) + +If you want to obtain the entire collection of pages without doing any +intermediary processing on each page, you can use the AllPages method: + + allPages, err := servers.List(client, nil).AllPages() + allServers, err := servers.ExtractServers(allPages) + +This top-level package contains utility functions and data types that are used +throughout the provider and service packages. Of particular note for end users +are the AuthOptions and EndpointOpts structs. +*/ +package gophercloud diff --git a/vendor/github.com/gophercloud/gophercloud/endpoint_search.go b/vendor/github.com/gophercloud/gophercloud/endpoint_search.go new file mode 100644 index 0000000..2fbc3c9 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/endpoint_search.go @@ -0,0 +1,76 @@ +package gophercloud + +// Availability indicates to whom a specific service endpoint is accessible: +// the internet at large, internal networks only, or only to administrators. +// Different identity services use different terminology for these. Identity v2 +// lists them as different kinds of URLs within the service catalog ("adminURL", +// "internalURL", and "publicURL"), while v3 lists them as "Interfaces" in an +// endpoint's response. +type Availability string + +const ( + // AvailabilityAdmin indicates that an endpoint is only available to + // administrators. + AvailabilityAdmin Availability = "admin" + + // AvailabilityPublic indicates that an endpoint is available to everyone on + // the internet. + AvailabilityPublic Availability = "public" + + // AvailabilityInternal indicates that an endpoint is only available within + // the cluster's internal network. + AvailabilityInternal Availability = "internal" +) + +// EndpointOpts specifies search criteria used by queries against an +// OpenStack service catalog. The options must contain enough information to +// unambiguously identify one, and only one, endpoint within the catalog. +// +// Usually, these are passed to service client factory functions in a provider +// package, like "openstack.NewComputeV2()". +type EndpointOpts struct { + // Type [required] is the service type for the client (e.g., "compute", + // "object-store"). Generally, this will be supplied by the service client + // function, but a user-given value will be honored if provided. + Type string + + // Name [optional] is the service name for the client (e.g., "nova") as it + // appears in the service catalog. Services can have the same Type but a + // different Name, which is why both Type and Name are sometimes needed. + Name string + + // Region [required] is the geographic region in which the endpoint resides, + // generally specifying which datacenter should house your resources. + // Required only for services that span multiple regions. + Region string + + // Availability [optional] is the visibility of the endpoint to be returned. + // Valid types include the constants AvailabilityPublic, AvailabilityInternal, + // or AvailabilityAdmin from this package. + // + // Availability is not required, and defaults to AvailabilityPublic. Not all + // providers or services offer all Availability options. + Availability Availability +} + +/* +EndpointLocator is an internal function to be used by provider implementations. + +It provides an implementation that locates a single endpoint from a service +catalog for a specific ProviderClient based on user-provided EndpointOpts. The +provider then uses it to discover related ServiceClients. +*/ +type EndpointLocator func(EndpointOpts) (string, error) + +// ApplyDefaults is an internal method to be used by provider implementations. +// +// It sets EndpointOpts fields if not already set, including a default type. +// Currently, EndpointOpts.Availability defaults to the public endpoint. +func (eo *EndpointOpts) ApplyDefaults(t string) { + if eo.Type == "" { + eo.Type = t + } + if eo.Availability == "" { + eo.Availability = AvailabilityPublic + } +} diff --git a/vendor/github.com/gophercloud/gophercloud/errors.go b/vendor/github.com/gophercloud/gophercloud/errors.go new file mode 100644 index 0000000..77cabf6 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/errors.go @@ -0,0 +1,490 @@ +package gophercloud + +import ( + "fmt" + "net/http" + "strings" +) + +// BaseError is an error type that all other error types embed. +type BaseError struct { + DefaultErrString string + Info string +} + +func (e BaseError) Error() string { + e.DefaultErrString = "An error occurred while executing a Gophercloud request." + return e.choseErrString() +} + +func (e BaseError) choseErrString() string { + if e.Info != "" { + return e.Info + } + return e.DefaultErrString +} + +// ErrMissingInput is the error when input is required in a particular +// situation but not provided by the user +type ErrMissingInput struct { + BaseError + Argument string +} + +func (e ErrMissingInput) Error() string { + e.DefaultErrString = fmt.Sprintf("Missing input for argument [%s]", e.Argument) + return e.choseErrString() +} + +// ErrInvalidInput is an error type used for most non-HTTP Gophercloud errors. +type ErrInvalidInput struct { + ErrMissingInput + Value interface{} +} + +func (e ErrInvalidInput) Error() string { + e.DefaultErrString = fmt.Sprintf("Invalid input provided for argument [%s]: [%+v]", e.Argument, e.Value) + return e.choseErrString() +} + +// ErrMissingEnvironmentVariable is the error when environment variable is required +// in a particular situation but not provided by the user +type ErrMissingEnvironmentVariable struct { + BaseError + EnvironmentVariable string +} + +func (e ErrMissingEnvironmentVariable) Error() string { + e.DefaultErrString = fmt.Sprintf("Missing environment variable [%s]", e.EnvironmentVariable) + return e.choseErrString() +} + +// ErrMissingAnyoneOfEnvironmentVariables is the error when anyone of the environment variables +// is required in a particular situation but not provided by the user +type ErrMissingAnyoneOfEnvironmentVariables struct { + BaseError + EnvironmentVariables []string +} + +func (e ErrMissingAnyoneOfEnvironmentVariables) Error() string { + e.DefaultErrString = fmt.Sprintf( + "Missing one of the following environment variables [%s]", + strings.Join(e.EnvironmentVariables, ", "), + ) + return e.choseErrString() +} + +// ErrUnexpectedResponseCode is returned by the Request method when a response code other than +// those listed in OkCodes is encountered. +type ErrUnexpectedResponseCode struct { + BaseError + URL string + Method string + Expected []int + Actual int + Body []byte + ResponseHeader http.Header +} + +func (e ErrUnexpectedResponseCode) Error() string { + e.DefaultErrString = fmt.Sprintf( + "Expected HTTP response code %v when accessing [%s %s], but got %d instead\n%s", + e.Expected, e.Method, e.URL, e.Actual, e.Body, + ) + return e.choseErrString() +} + +// GetStatusCode returns the actual status code of the error. +func (e ErrUnexpectedResponseCode) GetStatusCode() int { + return e.Actual +} + +// StatusCodeError is a convenience interface to easily allow access to the +// status code field of the various ErrDefault* types. +// +// By using this interface, you only have to make a single type cast of +// the returned error to err.(StatusCodeError) and then call GetStatusCode() +// instead of having a large switch statement checking for each of the +// ErrDefault* types. +type StatusCodeError interface { + Error() string + GetStatusCode() int +} + +// ErrDefault400 is the default error type returned on a 400 HTTP response code. +type ErrDefault400 struct { + ErrUnexpectedResponseCode +} + +// ErrDefault401 is the default error type returned on a 401 HTTP response code. +type ErrDefault401 struct { + ErrUnexpectedResponseCode +} + +// ErrDefault403 is the default error type returned on a 403 HTTP response code. +type ErrDefault403 struct { + ErrUnexpectedResponseCode +} + +// ErrDefault404 is the default error type returned on a 404 HTTP response code. +type ErrDefault404 struct { + ErrUnexpectedResponseCode +} + +// ErrDefault405 is the default error type returned on a 405 HTTP response code. +type ErrDefault405 struct { + ErrUnexpectedResponseCode +} + +// ErrDefault408 is the default error type returned on a 408 HTTP response code. +type ErrDefault408 struct { + ErrUnexpectedResponseCode +} + +// ErrDefault409 is the default error type returned on a 409 HTTP response code. +type ErrDefault409 struct { + ErrUnexpectedResponseCode +} + +// ErrDefault429 is the default error type returned on a 429 HTTP response code. +type ErrDefault429 struct { + ErrUnexpectedResponseCode +} + +// ErrDefault500 is the default error type returned on a 500 HTTP response code. +type ErrDefault500 struct { + ErrUnexpectedResponseCode +} + +// ErrDefault503 is the default error type returned on a 503 HTTP response code. +type ErrDefault503 struct { + ErrUnexpectedResponseCode +} + +func (e ErrDefault400) Error() string { + e.DefaultErrString = fmt.Sprintf( + "Bad request with: [%s %s], error message: %s", + e.Method, e.URL, e.Body, + ) + return e.choseErrString() +} +func (e ErrDefault401) Error() string { + return "Authentication failed" +} +func (e ErrDefault403) Error() string { + e.DefaultErrString = fmt.Sprintf( + "Request forbidden: [%s %s], error message: %s", + e.Method, e.URL, e.Body, + ) + return e.choseErrString() +} +func (e ErrDefault404) Error() string { + return "Resource not found" +} +func (e ErrDefault405) Error() string { + return "Method not allowed" +} +func (e ErrDefault408) Error() string { + return "The server timed out waiting for the request" +} +func (e ErrDefault429) Error() string { + return "Too many requests have been sent in a given amount of time. Pause" + + " requests, wait up to one minute, and try again." +} +func (e ErrDefault500) Error() string { + return "Internal Server Error" +} +func (e ErrDefault503) Error() string { + return "The service is currently unable to handle the request due to a temporary" + + " overloading or maintenance. This is a temporary condition. Try again later." +} + +// Err400er is the interface resource error types implement to override the error message +// from a 400 error. +type Err400er interface { + Error400(ErrUnexpectedResponseCode) error +} + +// Err401er is the interface resource error types implement to override the error message +// from a 401 error. +type Err401er interface { + Error401(ErrUnexpectedResponseCode) error +} + +// Err403er is the interface resource error types implement to override the error message +// from a 403 error. +type Err403er interface { + Error403(ErrUnexpectedResponseCode) error +} + +// Err404er is the interface resource error types implement to override the error message +// from a 404 error. +type Err404er interface { + Error404(ErrUnexpectedResponseCode) error +} + +// Err405er is the interface resource error types implement to override the error message +// from a 405 error. +type Err405er interface { + Error405(ErrUnexpectedResponseCode) error +} + +// Err408er is the interface resource error types implement to override the error message +// from a 408 error. +type Err408er interface { + Error408(ErrUnexpectedResponseCode) error +} + +// Err409er is the interface resource error types implement to override the error message +// from a 409 error. +type Err409er interface { + Error409(ErrUnexpectedResponseCode) error +} + +// Err429er is the interface resource error types implement to override the error message +// from a 429 error. +type Err429er interface { + Error429(ErrUnexpectedResponseCode) error +} + +// Err500er is the interface resource error types implement to override the error message +// from a 500 error. +type Err500er interface { + Error500(ErrUnexpectedResponseCode) error +} + +// Err503er is the interface resource error types implement to override the error message +// from a 503 error. +type Err503er interface { + Error503(ErrUnexpectedResponseCode) error +} + +// ErrTimeOut is the error type returned when an operations times out. +type ErrTimeOut struct { + BaseError +} + +func (e ErrTimeOut) Error() string { + e.DefaultErrString = "A time out occurred" + return e.choseErrString() +} + +// ErrUnableToReauthenticate is the error type returned when reauthentication fails. +type ErrUnableToReauthenticate struct { + BaseError + ErrOriginal error +} + +func (e ErrUnableToReauthenticate) Error() string { + e.DefaultErrString = fmt.Sprintf("Unable to re-authenticate: %s", e.ErrOriginal) + return e.choseErrString() +} + +// ErrErrorAfterReauthentication is the error type returned when reauthentication +// succeeds, but an error occurs afterword (usually an HTTP error). +type ErrErrorAfterReauthentication struct { + BaseError + ErrOriginal error +} + +func (e ErrErrorAfterReauthentication) Error() string { + e.DefaultErrString = fmt.Sprintf("Successfully re-authenticated, but got error executing request: %s", e.ErrOriginal) + return e.choseErrString() +} + +// ErrServiceNotFound is returned when no service in a service catalog matches +// the provided EndpointOpts. This is generally returned by provider service +// factory methods like "NewComputeV2()" and can mean that a service is not +// enabled for your account. +type ErrServiceNotFound struct { + BaseError +} + +func (e ErrServiceNotFound) Error() string { + e.DefaultErrString = "No suitable service could be found in the service catalog." + return e.choseErrString() +} + +// ErrEndpointNotFound is returned when no available endpoints match the +// provided EndpointOpts. This is also generally returned by provider service +// factory methods, and usually indicates that a region was specified +// incorrectly. +type ErrEndpointNotFound struct { + BaseError +} + +func (e ErrEndpointNotFound) Error() string { + e.DefaultErrString = "No suitable endpoint could be found in the service catalog." + return e.choseErrString() +} + +// ErrResourceNotFound is the error when trying to retrieve a resource's +// ID by name and the resource doesn't exist. +type ErrResourceNotFound struct { + BaseError + Name string + ResourceType string +} + +func (e ErrResourceNotFound) Error() string { + e.DefaultErrString = fmt.Sprintf("Unable to find %s with name %s", e.ResourceType, e.Name) + return e.choseErrString() +} + +// ErrMultipleResourcesFound is the error when trying to retrieve a resource's +// ID by name and multiple resources have the user-provided name. +type ErrMultipleResourcesFound struct { + BaseError + Name string + Count int + ResourceType string +} + +func (e ErrMultipleResourcesFound) Error() string { + e.DefaultErrString = fmt.Sprintf("Found %d %ss matching %s", e.Count, e.ResourceType, e.Name) + return e.choseErrString() +} + +// ErrUnexpectedType is the error when an unexpected type is encountered +type ErrUnexpectedType struct { + BaseError + Expected string + Actual string +} + +func (e ErrUnexpectedType) Error() string { + e.DefaultErrString = fmt.Sprintf("Expected %s but got %s", e.Expected, e.Actual) + return e.choseErrString() +} + +func unacceptedAttributeErr(attribute string) string { + return fmt.Sprintf("The base Identity V3 API does not accept authentication by %s", attribute) +} + +func redundantWithTokenErr(attribute string) string { + return fmt.Sprintf("%s may not be provided when authenticating with a TokenID", attribute) +} + +func redundantWithUserID(attribute string) string { + return fmt.Sprintf("%s may not be provided when authenticating with a UserID", attribute) +} + +// ErrAPIKeyProvided indicates that an APIKey was provided but can't be used. +type ErrAPIKeyProvided struct{ BaseError } + +func (e ErrAPIKeyProvided) Error() string { + return unacceptedAttributeErr("APIKey") +} + +// ErrTenantIDProvided indicates that a TenantID was provided but can't be used. +type ErrTenantIDProvided struct{ BaseError } + +func (e ErrTenantIDProvided) Error() string { + return unacceptedAttributeErr("TenantID") +} + +// ErrTenantNameProvided indicates that a TenantName was provided but can't be used. +type ErrTenantNameProvided struct{ BaseError } + +func (e ErrTenantNameProvided) Error() string { + return unacceptedAttributeErr("TenantName") +} + +// ErrUsernameWithToken indicates that a Username was provided, but token authentication is being used instead. +type ErrUsernameWithToken struct{ BaseError } + +func (e ErrUsernameWithToken) Error() string { + return redundantWithTokenErr("Username") +} + +// ErrUserIDWithToken indicates that a UserID was provided, but token authentication is being used instead. +type ErrUserIDWithToken struct{ BaseError } + +func (e ErrUserIDWithToken) Error() string { + return redundantWithTokenErr("UserID") +} + +// ErrDomainIDWithToken indicates that a DomainID was provided, but token authentication is being used instead. +type ErrDomainIDWithToken struct{ BaseError } + +func (e ErrDomainIDWithToken) Error() string { + return redundantWithTokenErr("DomainID") +} + +// ErrDomainNameWithToken indicates that a DomainName was provided, but token authentication is being used instead.s +type ErrDomainNameWithToken struct{ BaseError } + +func (e ErrDomainNameWithToken) Error() string { + return redundantWithTokenErr("DomainName") +} + +// ErrUsernameOrUserID indicates that neither username nor userID are specified, or both are at once. +type ErrUsernameOrUserID struct{ BaseError } + +func (e ErrUsernameOrUserID) Error() string { + return "Exactly one of Username and UserID must be provided for password authentication" +} + +// ErrDomainIDWithUserID indicates that a DomainID was provided, but unnecessary because a UserID is being used. +type ErrDomainIDWithUserID struct{ BaseError } + +func (e ErrDomainIDWithUserID) Error() string { + return redundantWithUserID("DomainID") +} + +// ErrDomainNameWithUserID indicates that a DomainName was provided, but unnecessary because a UserID is being used. +type ErrDomainNameWithUserID struct{ BaseError } + +func (e ErrDomainNameWithUserID) Error() string { + return redundantWithUserID("DomainName") +} + +// ErrDomainIDOrDomainName indicates that a username was provided, but no domain to scope it. +// It may also indicate that both a DomainID and a DomainName were provided at once. +type ErrDomainIDOrDomainName struct{ BaseError } + +func (e ErrDomainIDOrDomainName) Error() string { + return "You must provide exactly one of DomainID or DomainName to authenticate by Username" +} + +// ErrMissingPassword indicates that no password was provided and no token is available. +type ErrMissingPassword struct{ BaseError } + +func (e ErrMissingPassword) Error() string { + return "You must provide a password to authenticate" +} + +// ErrScopeDomainIDOrDomainName indicates that a domain ID or Name was required in a Scope, but not present. +type ErrScopeDomainIDOrDomainName struct{ BaseError } + +func (e ErrScopeDomainIDOrDomainName) Error() string { + return "You must provide exactly one of DomainID or DomainName in a Scope with ProjectName" +} + +// ErrScopeProjectIDOrProjectName indicates that both a ProjectID and a ProjectName were provided in a Scope. +type ErrScopeProjectIDOrProjectName struct{ BaseError } + +func (e ErrScopeProjectIDOrProjectName) Error() string { + return "You must provide at most one of ProjectID or ProjectName in a Scope" +} + +// ErrScopeProjectIDAlone indicates that a ProjectID was provided with other constraints in a Scope. +type ErrScopeProjectIDAlone struct{ BaseError } + +func (e ErrScopeProjectIDAlone) Error() string { + return "ProjectID must be supplied alone in a Scope" +} + +// ErrScopeEmpty indicates that no credentials were provided in a Scope. +type ErrScopeEmpty struct{ BaseError } + +func (e ErrScopeEmpty) Error() string { + return "You must provide either a Project or Domain in a Scope" +} + +// ErrAppCredMissingSecret indicates that no Application Credential Secret was provided with Application Credential ID or Name +type ErrAppCredMissingSecret struct{ BaseError } + +func (e ErrAppCredMissingSecret) Error() string { + return "You must provide an Application Credential Secret" +} diff --git a/vendor/github.com/gophercloud/gophercloud/go.mod b/vendor/github.com/gophercloud/gophercloud/go.mod new file mode 100644 index 0000000..46e1650 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/go.mod @@ -0,0 +1,13 @@ +module github.com/gophercloud/gophercloud + +require ( + golang.org/x/crypto v0.0.0-20191202143827-86a70503ff7e + golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933 // indirect + golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e // indirect + golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9 // indirect + golang.org/x/text v0.3.2 // indirect + golang.org/x/tools v0.0.0-20191203134012-c197fd4bf371 // indirect + golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898 // indirect + gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect + gopkg.in/yaml.v2 v2.2.7 +) diff --git a/vendor/github.com/gophercloud/gophercloud/go.sum b/vendor/github.com/gophercloud/gophercloud/go.sum new file mode 100644 index 0000000..9a0b94d --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/go.sum @@ -0,0 +1,26 @@ +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191202143827-86a70503ff7e h1:egKlR8l7Nu9vHGWbcUV8lqR4987UfUbBd7GbhqGzNYU= +golang.org/x/crypto v0.0.0-20191202143827-86a70503ff7e/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191203134012-c197fd4bf371/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.7 h1:VUgggvou5XRW9mHwD/yXxIYSMtY0zoKQf/v226p2nyo= +gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/vendor/github.com/gophercloud/gophercloud/internal/pkg.go b/vendor/github.com/gophercloud/gophercloud/internal/pkg.go new file mode 100644 index 0000000..5bf0569 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/internal/pkg.go @@ -0,0 +1 @@ +package internal diff --git a/vendor/github.com/gophercloud/gophercloud/internal/util.go b/vendor/github.com/gophercloud/gophercloud/internal/util.go new file mode 100644 index 0000000..8efb283 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/internal/util.go @@ -0,0 +1,34 @@ +package internal + +import ( + "reflect" + "strings" +) + +// RemainingKeys will inspect a struct and compare it to a map. Any struct +// field that does not have a JSON tag that matches a key in the map or +// a matching lower-case field in the map will be returned as an extra. +// +// This is useful for determining the extra fields returned in response bodies +// for resources that can contain an arbitrary or dynamic number of fields. +func RemainingKeys(s interface{}, m map[string]interface{}) (extras map[string]interface{}) { + extras = make(map[string]interface{}) + for k, v := range m { + extras[k] = v + } + + valueOf := reflect.ValueOf(s) + typeOf := reflect.TypeOf(s) + for i := 0; i < valueOf.NumField(); i++ { + field := typeOf.Field(i) + + lowerField := strings.ToLower(field.Name) + delete(extras, lowerField) + + if tagValue := field.Tag.Get("json"); tagValue != "" && tagValue != "-" { + delete(extras, tagValue) + } + } + + return +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/auth_env.go b/vendor/github.com/gophercloud/gophercloud/openstack/auth_env.go new file mode 100644 index 0000000..c801de5 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/auth_env.go @@ -0,0 +1,128 @@ +package openstack + +import ( + "os" + + "github.com/gophercloud/gophercloud" +) + +var nilOptions = gophercloud.AuthOptions{} + +/* +AuthOptionsFromEnv fills out an identity.AuthOptions structure with the +settings found on the various OpenStack OS_* environment variables. + +The following variables provide sources of truth: OS_AUTH_URL, OS_USERNAME, +OS_PASSWORD and OS_PROJECT_ID. + +Of these, OS_USERNAME, OS_PASSWORD, and OS_AUTH_URL must have settings, +or an error will result. OS_PROJECT_ID, is optional. + +OS_TENANT_ID and OS_TENANT_NAME are deprecated forms of OS_PROJECT_ID and +OS_PROJECT_NAME and the latter are expected against a v3 auth api. + +If OS_PROJECT_ID and OS_PROJECT_NAME are set, they will still be referred +as "tenant" in Gophercloud. + +If OS_PROJECT_NAME is set, it requires OS_PROJECT_ID to be set as well to +handle projects not on the default domain. + +To use this function, first set the OS_* environment variables (for example, +by sourcing an `openrc` file), then: + + opts, err := openstack.AuthOptionsFromEnv() + provider, err := openstack.AuthenticatedClient(opts) +*/ +func AuthOptionsFromEnv() (gophercloud.AuthOptions, error) { + authURL := os.Getenv("OS_AUTH_URL") + username := os.Getenv("OS_USERNAME") + userID := os.Getenv("OS_USERID") + password := os.Getenv("OS_PASSWORD") + passcode := os.Getenv("OS_PASSCODE") + tenantID := os.Getenv("OS_TENANT_ID") + tenantName := os.Getenv("OS_TENANT_NAME") + domainID := os.Getenv("OS_DOMAIN_ID") + domainName := os.Getenv("OS_DOMAIN_NAME") + applicationCredentialID := os.Getenv("OS_APPLICATION_CREDENTIAL_ID") + applicationCredentialName := os.Getenv("OS_APPLICATION_CREDENTIAL_NAME") + applicationCredentialSecret := os.Getenv("OS_APPLICATION_CREDENTIAL_SECRET") + + // If OS_PROJECT_ID is set, overwrite tenantID with the value. + if v := os.Getenv("OS_PROJECT_ID"); v != "" { + tenantID = v + } + + // If OS_PROJECT_NAME is set, overwrite tenantName with the value. + if v := os.Getenv("OS_PROJECT_NAME"); v != "" { + tenantName = v + } + + if authURL == "" { + err := gophercloud.ErrMissingEnvironmentVariable{ + EnvironmentVariable: "OS_AUTH_URL", + } + return nilOptions, err + } + + if userID == "" && username == "" { + // Empty username and userID could be ignored, when applicationCredentialID and applicationCredentialSecret are set + if applicationCredentialID == "" && applicationCredentialSecret == "" { + err := gophercloud.ErrMissingAnyoneOfEnvironmentVariables{ + EnvironmentVariables: []string{"OS_USERID", "OS_USERNAME"}, + } + return nilOptions, err + } + } + + if password == "" && passcode == "" && applicationCredentialID == "" && applicationCredentialName == "" { + err := gophercloud.ErrMissingEnvironmentVariable{ + // silently ignore TOTP passcode warning, since it is not a common auth method + EnvironmentVariable: "OS_PASSWORD", + } + return nilOptions, err + } + + if (applicationCredentialID != "" || applicationCredentialName != "") && applicationCredentialSecret == "" { + err := gophercloud.ErrMissingEnvironmentVariable{ + EnvironmentVariable: "OS_APPLICATION_CREDENTIAL_SECRET", + } + return nilOptions, err + } + + if domainID == "" && domainName == "" && tenantID == "" && tenantName != "" { + err := gophercloud.ErrMissingEnvironmentVariable{ + EnvironmentVariable: "OS_PROJECT_ID", + } + return nilOptions, err + } + + if applicationCredentialID == "" && applicationCredentialName != "" && applicationCredentialSecret != "" { + if userID == "" && username == "" { + return nilOptions, gophercloud.ErrMissingAnyoneOfEnvironmentVariables{ + EnvironmentVariables: []string{"OS_USERID", "OS_USERNAME"}, + } + } + if username != "" && domainID == "" && domainName == "" { + return nilOptions, gophercloud.ErrMissingAnyoneOfEnvironmentVariables{ + EnvironmentVariables: []string{"OS_DOMAIN_ID", "OS_DOMAIN_NAME"}, + } + } + } + + ao := gophercloud.AuthOptions{ + IdentityEndpoint: authURL, + UserID: userID, + Username: username, + Password: password, + Passcode: passcode, + TenantID: tenantID, + TenantName: tenantName, + DomainID: domainID, + DomainName: domainName, + ApplicationCredentialID: applicationCredentialID, + ApplicationCredentialName: applicationCredentialName, + ApplicationCredentialSecret: applicationCredentialSecret, + } + + return ao, nil +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/client.go b/vendor/github.com/gophercloud/gophercloud/openstack/client.go new file mode 100644 index 0000000..655a9f6 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/client.go @@ -0,0 +1,503 @@ +package openstack + +import ( + "fmt" + "reflect" + "strings" + + "github.com/gophercloud/gophercloud" + tokens2 "github.com/gophercloud/gophercloud/openstack/identity/v2/tokens" + "github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/ec2tokens" + "github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/oauth1" + tokens3 "github.com/gophercloud/gophercloud/openstack/identity/v3/tokens" + "github.com/gophercloud/gophercloud/openstack/utils" +) + +const ( + // v2 represents Keystone v2. + // It should never increase beyond 2.0. + v2 = "v2.0" + + // v3 represents Keystone v3. + // The version can be anything from v3 to v3.x. + v3 = "v3" +) + +/* +NewClient prepares an unauthenticated ProviderClient instance. +Most users will probably prefer using the AuthenticatedClient function +instead. + +This is useful if you wish to explicitly control the version of the identity +service that's used for authentication explicitly, for example. + +A basic example of using this would be: + + ao, err := openstack.AuthOptionsFromEnv() + provider, err := openstack.NewClient(ao.IdentityEndpoint) + client, err := openstack.NewIdentityV3(provider, gophercloud.EndpointOpts{}) +*/ +func NewClient(endpoint string) (*gophercloud.ProviderClient, error) { + base, err := utils.BaseEndpoint(endpoint) + if err != nil { + return nil, err + } + + endpoint = gophercloud.NormalizeURL(endpoint) + base = gophercloud.NormalizeURL(base) + + p := new(gophercloud.ProviderClient) + p.IdentityBase = base + p.IdentityEndpoint = endpoint + p.UseTokenLock() + + return p, nil +} + +/* +AuthenticatedClient logs in to an OpenStack cloud found at the identity endpoint +specified by the options, acquires a token, and returns a Provider Client +instance that's ready to operate. + +If the full path to a versioned identity endpoint was specified (example: +http://example.com:5000/v3), that path will be used as the endpoint to query. + +If a versionless endpoint was specified (example: http://example.com:5000/), +the endpoint will be queried to determine which versions of the identity service +are available, then chooses the most recent or most supported version. + +Example: + + ao, err := openstack.AuthOptionsFromEnv() + provider, err := openstack.AuthenticatedClient(ao) + client, err := openstack.NewNetworkV2(provider, gophercloud.EndpointOpts{ + Region: os.Getenv("OS_REGION_NAME"), + }) +*/ +func AuthenticatedClient(options gophercloud.AuthOptions) (*gophercloud.ProviderClient, error) { + client, err := NewClient(options.IdentityEndpoint) + if err != nil { + return nil, err + } + + err = Authenticate(client, options) + if err != nil { + return nil, err + } + return client, nil +} + +// Authenticate or re-authenticate against the most recent identity service +// supported at the provided endpoint. +func Authenticate(client *gophercloud.ProviderClient, options gophercloud.AuthOptions) error { + versions := []*utils.Version{ + {ID: v2, Priority: 20, Suffix: "/v2.0/"}, + {ID: v3, Priority: 30, Suffix: "/v3/"}, + } + + chosen, endpoint, err := utils.ChooseVersion(client, versions) + if err != nil { + return err + } + + switch chosen.ID { + case v2: + return v2auth(client, endpoint, options, gophercloud.EndpointOpts{}) + case v3: + return v3auth(client, endpoint, &options, gophercloud.EndpointOpts{}) + default: + // The switch statement must be out of date from the versions list. + return fmt.Errorf("Unrecognized identity version: %s", chosen.ID) + } +} + +// AuthenticateV2 explicitly authenticates against the identity v2 endpoint. +func AuthenticateV2(client *gophercloud.ProviderClient, options gophercloud.AuthOptions, eo gophercloud.EndpointOpts) error { + return v2auth(client, "", options, eo) +} + +func v2auth(client *gophercloud.ProviderClient, endpoint string, options gophercloud.AuthOptions, eo gophercloud.EndpointOpts) error { + v2Client, err := NewIdentityV2(client, eo) + if err != nil { + return err + } + + if endpoint != "" { + v2Client.Endpoint = endpoint + } + + v2Opts := tokens2.AuthOptions{ + IdentityEndpoint: options.IdentityEndpoint, + Username: options.Username, + Password: options.Password, + TenantID: options.TenantID, + TenantName: options.TenantName, + AllowReauth: options.AllowReauth, + TokenID: options.TokenID, + } + + result := tokens2.Create(v2Client, v2Opts) + + err = client.SetTokenAndAuthResult(result) + if err != nil { + return err + } + + catalog, err := result.ExtractServiceCatalog() + if err != nil { + return err + } + + if options.AllowReauth { + // here we're creating a throw-away client (tac). it's a copy of the user's provider client, but + // with the token and reauth func zeroed out. combined with setting `AllowReauth` to `false`, + // this should retry authentication only once + tac := *client + tac.SetThrowaway(true) + tac.ReauthFunc = nil + tac.SetTokenAndAuthResult(nil) + tao := options + tao.AllowReauth = false + client.ReauthFunc = func() error { + err := v2auth(&tac, endpoint, tao, eo) + if err != nil { + return err + } + client.CopyTokenFrom(&tac) + return nil + } + } + client.EndpointLocator = func(opts gophercloud.EndpointOpts) (string, error) { + return V2EndpointURL(catalog, opts) + } + + return nil +} + +// AuthenticateV3 explicitly authenticates against the identity v3 service. +func AuthenticateV3(client *gophercloud.ProviderClient, options tokens3.AuthOptionsBuilder, eo gophercloud.EndpointOpts) error { + return v3auth(client, "", options, eo) +} + +func v3auth(client *gophercloud.ProviderClient, endpoint string, opts tokens3.AuthOptionsBuilder, eo gophercloud.EndpointOpts) error { + // Override the generated service endpoint with the one returned by the version endpoint. + v3Client, err := NewIdentityV3(client, eo) + if err != nil { + return err + } + + if endpoint != "" { + v3Client.Endpoint = endpoint + } + + var catalog *tokens3.ServiceCatalog + + var tokenID string + // passthroughToken allows to passthrough the token without a scope + var passthroughToken bool + switch v := opts.(type) { + case *gophercloud.AuthOptions: + tokenID = v.TokenID + passthroughToken = (v.Scope == nil || *v.Scope == gophercloud.AuthScope{}) + case *tokens3.AuthOptions: + tokenID = v.TokenID + passthroughToken = (v.Scope == tokens3.Scope{}) + } + + if tokenID != "" && passthroughToken { + // passing through the token ID without requesting a new scope + if opts.CanReauth() { + return fmt.Errorf("cannot use AllowReauth, when the token ID is defined and auth scope is not set") + } + + v3Client.SetToken(tokenID) + result := tokens3.Get(v3Client, tokenID) + if result.Err != nil { + return result.Err + } + + err = client.SetTokenAndAuthResult(result) + if err != nil { + return err + } + + catalog, err = result.ExtractServiceCatalog() + if err != nil { + return err + } + } else { + var result tokens3.CreateResult + switch opts.(type) { + case *ec2tokens.AuthOptions: + result = ec2tokens.Create(v3Client, opts) + case *oauth1.AuthOptions: + result = oauth1.Create(v3Client, opts) + default: + result = tokens3.Create(v3Client, opts) + } + + err = client.SetTokenAndAuthResult(result) + if err != nil { + return err + } + + catalog, err = result.ExtractServiceCatalog() + if err != nil { + return err + } + } + + if opts.CanReauth() { + // here we're creating a throw-away client (tac). it's a copy of the user's provider client, but + // with the token and reauth func zeroed out. combined with setting `AllowReauth` to `false`, + // this should retry authentication only once + tac := *client + tac.SetThrowaway(true) + tac.ReauthFunc = nil + tac.SetTokenAndAuthResult(nil) + var tao tokens3.AuthOptionsBuilder + switch ot := opts.(type) { + case *gophercloud.AuthOptions: + o := *ot + o.AllowReauth = false + tao = &o + case *tokens3.AuthOptions: + o := *ot + o.AllowReauth = false + tao = &o + case *ec2tokens.AuthOptions: + o := *ot + o.AllowReauth = false + tao = &o + case *oauth1.AuthOptions: + o := *ot + o.AllowReauth = false + tao = &o + default: + tao = opts + } + client.ReauthFunc = func() error { + err := v3auth(&tac, endpoint, tao, eo) + if err != nil { + return err + } + client.CopyTokenFrom(&tac) + return nil + } + } + client.EndpointLocator = func(opts gophercloud.EndpointOpts) (string, error) { + return V3EndpointURL(catalog, opts) + } + + return nil +} + +// NewIdentityV2 creates a ServiceClient that may be used to interact with the +// v2 identity service. +func NewIdentityV2(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { + endpoint := client.IdentityBase + "v2.0/" + clientType := "identity" + var err error + if !reflect.DeepEqual(eo, gophercloud.EndpointOpts{}) { + eo.ApplyDefaults(clientType) + endpoint, err = client.EndpointLocator(eo) + if err != nil { + return nil, err + } + } + + return &gophercloud.ServiceClient{ + ProviderClient: client, + Endpoint: endpoint, + Type: clientType, + }, nil +} + +// NewIdentityV3 creates a ServiceClient that may be used to access the v3 +// identity service. +func NewIdentityV3(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { + endpoint := client.IdentityBase + "v3/" + clientType := "identity" + var err error + if !reflect.DeepEqual(eo, gophercloud.EndpointOpts{}) { + eo.ApplyDefaults(clientType) + endpoint, err = client.EndpointLocator(eo) + if err != nil { + return nil, err + } + } + + // Ensure endpoint still has a suffix of v3. + // This is because EndpointLocator might have found a versionless + // endpoint or the published endpoint is still /v2.0. In both + // cases, we need to fix the endpoint to point to /v3. + base, err := utils.BaseEndpoint(endpoint) + if err != nil { + return nil, err + } + + base = gophercloud.NormalizeURL(base) + + endpoint = base + "v3/" + + return &gophercloud.ServiceClient{ + ProviderClient: client, + Endpoint: endpoint, + Type: clientType, + }, nil +} + +func initClientOpts(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts, clientType string) (*gophercloud.ServiceClient, error) { + sc := new(gophercloud.ServiceClient) + eo.ApplyDefaults(clientType) + url, err := client.EndpointLocator(eo) + if err != nil { + return sc, err + } + sc.ProviderClient = client + sc.Endpoint = url + sc.Type = clientType + return sc, nil +} + +// NewBareMetalV1 creates a ServiceClient that may be used with the v1 +// bare metal package. +func NewBareMetalV1(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { + return initClientOpts(client, eo, "baremetal") +} + +// NewBareMetalIntrospectionV1 creates a ServiceClient that may be used with the v1 +// bare metal introspection package. +func NewBareMetalIntrospectionV1(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { + return initClientOpts(client, eo, "baremetal-inspector") +} + +// NewObjectStorageV1 creates a ServiceClient that may be used with the v1 +// object storage package. +func NewObjectStorageV1(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { + return initClientOpts(client, eo, "object-store") +} + +// NewComputeV2 creates a ServiceClient that may be used with the v2 compute +// package. +func NewComputeV2(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { + return initClientOpts(client, eo, "compute") +} + +// NewNetworkV2 creates a ServiceClient that may be used with the v2 network +// package. +func NewNetworkV2(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { + sc, err := initClientOpts(client, eo, "network") + sc.ResourceBase = sc.Endpoint + "v2.0/" + return sc, err +} + +// NewBlockStorageV1 creates a ServiceClient that may be used to access the v1 +// block storage service. +func NewBlockStorageV1(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { + return initClientOpts(client, eo, "volume") +} + +// NewBlockStorageV2 creates a ServiceClient that may be used to access the v2 +// block storage service. +func NewBlockStorageV2(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { + return initClientOpts(client, eo, "volumev2") +} + +// NewBlockStorageV3 creates a ServiceClient that may be used to access the v3 block storage service. +func NewBlockStorageV3(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { + return initClientOpts(client, eo, "volumev3") +} + +// NewSharedFileSystemV2 creates a ServiceClient that may be used to access the v2 shared file system service. +func NewSharedFileSystemV2(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { + return initClientOpts(client, eo, "sharev2") +} + +// NewCDNV1 creates a ServiceClient that may be used to access the OpenStack v1 +// CDN service. +func NewCDNV1(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { + return initClientOpts(client, eo, "cdn") +} + +// NewOrchestrationV1 creates a ServiceClient that may be used to access the v1 +// orchestration service. +func NewOrchestrationV1(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { + return initClientOpts(client, eo, "orchestration") +} + +// NewDBV1 creates a ServiceClient that may be used to access the v1 DB service. +func NewDBV1(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { + return initClientOpts(client, eo, "database") +} + +// NewDNSV2 creates a ServiceClient that may be used to access the v2 DNS +// service. +func NewDNSV2(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { + sc, err := initClientOpts(client, eo, "dns") + sc.ResourceBase = sc.Endpoint + "v2/" + return sc, err +} + +// NewImageServiceV2 creates a ServiceClient that may be used to access the v2 +// image service. +func NewImageServiceV2(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { + sc, err := initClientOpts(client, eo, "image") + sc.ResourceBase = sc.Endpoint + "v2/" + return sc, err +} + +// NewLoadBalancerV2 creates a ServiceClient that may be used to access the v2 +// load balancer service. +func NewLoadBalancerV2(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { + sc, err := initClientOpts(client, eo, "load-balancer") + + // Fixes edge case having an OpenStack lb endpoint with trailing version number. + endpoint := strings.Replace(sc.Endpoint, "v2.0/", "", -1) + + sc.ResourceBase = endpoint + "v2.0/" + return sc, err +} + +// NewClusteringV1 creates a ServiceClient that may be used with the v1 clustering +// package. +func NewClusteringV1(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { + return initClientOpts(client, eo, "clustering") +} + +// NewMessagingV2 creates a ServiceClient that may be used with the v2 messaging +// service. +func NewMessagingV2(client *gophercloud.ProviderClient, clientID string, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { + sc, err := initClientOpts(client, eo, "messaging") + sc.MoreHeaders = map[string]string{"Client-ID": clientID} + return sc, err +} + +// NewContainerV1 creates a ServiceClient that may be used with v1 container package +func NewContainerV1(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { + return initClientOpts(client, eo, "container") +} + +// NewKeyManagerV1 creates a ServiceClient that may be used with the v1 key +// manager service. +func NewKeyManagerV1(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { + sc, err := initClientOpts(client, eo, "key-manager") + sc.ResourceBase = sc.Endpoint + "v1/" + return sc, err +} + +// NewContainerInfraV1 creates a ServiceClient that may be used with the v1 container infra management +// package. +func NewContainerInfraV1(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { + return initClientOpts(client, eo, "container-infra") +} + +// NewWorkflowV2 creates a ServiceClient that may be used with the v2 workflow management package. +func NewWorkflowV2(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { + return initClientOpts(client, eo, "workflowv2") +} + +// NewPlacementV1 creates a ServiceClient that may be used with the placement package. +func NewPlacementV1(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { + return initClientOpts(client, eo, "placement") +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers/doc.go b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers/doc.go new file mode 100644 index 0000000..3b0ab78 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers/doc.go @@ -0,0 +1,115 @@ +/* +Package servers provides information and interaction with the server API +resource in the OpenStack Compute service. + +A server is a virtual machine instance in the compute system. In order for +one to be provisioned, a valid flavor and image are required. + +Example to List Servers + + listOpts := servers.ListOpts{ + AllTenants: true, + } + + allPages, err := servers.List(computeClient, listOpts).AllPages() + if err != nil { + panic(err) + } + + allServers, err := servers.ExtractServers(allPages) + if err != nil { + panic(err) + } + + for _, server := range allServers { + fmt.Printf("%+v\n", server) + } + +Example to Create a Server + + createOpts := servers.CreateOpts{ + Name: "server_name", + ImageRef: "image-uuid", + FlavorRef: "flavor-uuid", + } + + server, err := servers.Create(computeClient, createOpts).Extract() + if err != nil { + panic(err) + } + +Example to Delete a Server + + serverID := "d9072956-1560-487c-97f2-18bdf65ec749" + err := servers.Delete(computeClient, serverID).ExtractErr() + if err != nil { + panic(err) + } + +Example to Force Delete a Server + + serverID := "d9072956-1560-487c-97f2-18bdf65ec749" + err := servers.ForceDelete(computeClient, serverID).ExtractErr() + if err != nil { + panic(err) + } + +Example to Reboot a Server + + rebootOpts := servers.RebootOpts{ + Type: servers.SoftReboot, + } + + serverID := "d9072956-1560-487c-97f2-18bdf65ec749" + + err := servers.Reboot(computeClient, serverID, rebootOpts).ExtractErr() + if err != nil { + panic(err) + } + +Example to Rebuild a Server + + rebuildOpts := servers.RebuildOpts{ + Name: "new_name", + ImageID: "image-uuid", + } + + serverID := "d9072956-1560-487c-97f2-18bdf65ec749" + + server, err := servers.Rebuilt(computeClient, serverID, rebuildOpts).Extract() + if err != nil { + panic(err) + } + +Example to Resize a Server + + resizeOpts := servers.ResizeOpts{ + FlavorRef: "flavor-uuid", + } + + serverID := "d9072956-1560-487c-97f2-18bdf65ec749" + + err := servers.Resize(computeClient, serverID, resizeOpts).ExtractErr() + if err != nil { + panic(err) + } + + err = servers.ConfirmResize(computeClient, serverID).ExtractErr() + if err != nil { + panic(err) + } + +Example to Snapshot a Server + + snapshotOpts := servers.CreateImageOpts{ + Name: "snapshot_name", + } + + serverID := "d9072956-1560-487c-97f2-18bdf65ec749" + + image, err := servers.CreateImage(computeClient, serverID, snapshotOpts).ExtractImageID() + if err != nil { + panic(err) + } +*/ +package servers diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers/errors.go b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers/errors.go new file mode 100644 index 0000000..c9f0e3c --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers/errors.go @@ -0,0 +1,71 @@ +package servers + +import ( + "fmt" + + "github.com/gophercloud/gophercloud" +) + +// ErrNeitherImageIDNorImageNameProvided is the error when neither the image +// ID nor the image name is provided for a server operation +type ErrNeitherImageIDNorImageNameProvided struct{ gophercloud.ErrMissingInput } + +func (e ErrNeitherImageIDNorImageNameProvided) Error() string { + return "One and only one of the image ID and the image name must be provided." +} + +// ErrNeitherFlavorIDNorFlavorNameProvided is the error when neither the flavor +// ID nor the flavor name is provided for a server operation +type ErrNeitherFlavorIDNorFlavorNameProvided struct{ gophercloud.ErrMissingInput } + +func (e ErrNeitherFlavorIDNorFlavorNameProvided) Error() string { + return "One and only one of the flavor ID and the flavor name must be provided." +} + +type ErrNoClientProvidedForIDByName struct{ gophercloud.ErrMissingInput } + +func (e ErrNoClientProvidedForIDByName) Error() string { + return "A service client must be provided to find a resource ID by name." +} + +// ErrInvalidHowParameterProvided is the error when an unknown value is given +// for the `how` argument +type ErrInvalidHowParameterProvided struct{ gophercloud.ErrInvalidInput } + +// ErrNoAdminPassProvided is the error when an administrative password isn't +// provided for a server operation +type ErrNoAdminPassProvided struct{ gophercloud.ErrMissingInput } + +// ErrNoImageIDProvided is the error when an image ID isn't provided for a server +// operation +type ErrNoImageIDProvided struct{ gophercloud.ErrMissingInput } + +// ErrNoIDProvided is the error when a server ID isn't provided for a server +// operation +type ErrNoIDProvided struct{ gophercloud.ErrMissingInput } + +// ErrServer is a generic error type for servers HTTP operations. +type ErrServer struct { + gophercloud.ErrUnexpectedResponseCode + ID string +} + +func (se ErrServer) Error() string { + return fmt.Sprintf("Error while executing HTTP request for server [%s]", se.ID) +} + +// Error404 overrides the generic 404 error message. +func (se ErrServer) Error404(e gophercloud.ErrUnexpectedResponseCode) error { + se.ErrUnexpectedResponseCode = e + return &ErrServerNotFound{se} +} + +// ErrServerNotFound is the error when a 404 is received during server HTTP +// operations. +type ErrServerNotFound struct { + ErrServer +} + +func (e ErrServerNotFound) Error() string { + return fmt.Sprintf("I couldn't find server [%s]", e.ID) +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers/requests.go b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers/requests.go new file mode 100644 index 0000000..db1c01c --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers/requests.go @@ -0,0 +1,752 @@ +package servers + +import ( + "encoding/base64" + "encoding/json" + "fmt" + + "github.com/gophercloud/gophercloud" + "github.com/gophercloud/gophercloud/pagination" +) + +// ListOptsBuilder allows extensions to add additional parameters to the +// List request. +type ListOptsBuilder interface { + ToServerListQuery() (string, error) +} + +// ListOpts allows the filtering and sorting of paginated collections through +// the API. Filtering is achieved by passing in struct field values that map to +// the server attributes you want to see returned. Marker and Limit are used +// for pagination. +type ListOpts struct { + // ChangesSince is a time/date stamp for when the server last changed status. + ChangesSince string `q:"changes-since"` + + // Image is the name of the image in URL format. + Image string `q:"image"` + + // Flavor is the name of the flavor in URL format. + Flavor string `q:"flavor"` + + // Name of the server as a string; can be queried with regular expressions. + // Realize that ?name=bob returns both bob and bobb. If you need to match bob + // only, you can use a regular expression matching the syntax of the + // underlying database server implemented for Compute. + Name string `q:"name"` + + // Status is the value of the status of the server so that you can filter on + // "ACTIVE" for example. + Status string `q:"status"` + + // Host is the name of the host as a string. + Host string `q:"host"` + + // Marker is a UUID of the server at which you want to set a marker. + Marker string `q:"marker"` + + // Limit is an integer value for the limit of values to return. + Limit int `q:"limit"` + + // AllTenants is a bool to show all tenants. + AllTenants bool `q:"all_tenants"` + + // TenantID lists servers for a particular tenant. + // Setting "AllTenants = true" is required. + TenantID string `q:"tenant_id"` + + // This requires the client to be set to microversion 2.26 or later. + // Tags filters on specific server tags. All tags must be present for the server. + Tags string `q:"tags"` + + // This requires the client to be set to microversion 2.26 or later. + // TagsAny filters on specific server tags. At least one of the tags must be present for the server. + TagsAny string `q:"tags-any"` + + // This requires the client to be set to microversion 2.26 or later. + // NotTags filters on specific server tags. All tags must be absent for the server. + NotTags string `q:"not-tags"` + + // This requires the client to be set to microversion 2.26 or later. + // NotTagsAny filters on specific server tags. At least one of the tags must be absent for the server. + NotTagsAny string `q:"not-tags-any"` +} + +// ToServerListQuery formats a ListOpts into a query string. +func (opts ListOpts) ToServerListQuery() (string, error) { + q, err := gophercloud.BuildQueryString(opts) + return q.String(), err +} + +// List makes a request against the API to list servers accessible to you. +func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { + url := listDetailURL(client) + if opts != nil { + query, err := opts.ToServerListQuery() + if err != nil { + return pagination.Pager{Err: err} + } + url += query + } + return pagination.NewPager(client, url, func(r pagination.PageResult) pagination.Page { + return ServerPage{pagination.LinkedPageBase{PageResult: r}} + }) +} + +// CreateOptsBuilder allows extensions to add additional parameters to the +// Create request. +type CreateOptsBuilder interface { + ToServerCreateMap() (map[string]interface{}, error) +} + +// Network is used within CreateOpts to control a new server's network +// attachments. +type Network struct { + // UUID of a network to attach to the newly provisioned server. + // Required unless Port is provided. + UUID string + + // Port of a neutron network to attach to the newly provisioned server. + // Required unless UUID is provided. + Port string + + // FixedIP specifies a fixed IPv4 address to be used on this network. + FixedIP string +} + +// Personality is an array of files that are injected into the server at launch. +type Personality []*File + +// File is used within CreateOpts and RebuildOpts to inject a file into the +// server at launch. +// File implements the json.Marshaler interface, so when a Create or Rebuild +// operation is requested, json.Marshal will call File's MarshalJSON method. +type File struct { + // Path of the file. + Path string + + // Contents of the file. Maximum content size is 255 bytes. + Contents []byte +} + +// MarshalJSON marshals the escaped file, base64 encoding the contents. +func (f *File) MarshalJSON() ([]byte, error) { + file := struct { + Path string `json:"path"` + Contents string `json:"contents"` + }{ + Path: f.Path, + Contents: base64.StdEncoding.EncodeToString(f.Contents), + } + return json.Marshal(file) +} + +// CreateOpts specifies server creation parameters. +type CreateOpts struct { + // Name is the name to assign to the newly launched server. + Name string `json:"name" required:"true"` + + // ImageRef is the ID or full URL to the image that contains the + // server's OS and initial state. + // Also optional if using the boot-from-volume extension. + ImageRef string `json:"imageRef"` + + // FlavorRef is the ID or full URL to the flavor that describes the server's specs. + FlavorRef string `json:"flavorRef"` + + // SecurityGroups lists the names of the security groups to which this server + // should belong. + SecurityGroups []string `json:"-"` + + // UserData contains configuration information or scripts to use upon launch. + // Create will base64-encode it for you, if it isn't already. + UserData []byte `json:"-"` + + // AvailabilityZone in which to launch the server. + AvailabilityZone string `json:"availability_zone,omitempty"` + + // Networks dictates how this server will be attached to available networks. + // By default, the server will be attached to all isolated networks for the + // tenant. + // Starting with microversion 2.37 networks can also be an "auto" or "none" + // string. + Networks interface{} `json:"-"` + + // Metadata contains key-value pairs (up to 255 bytes each) to attach to the + // server. + Metadata map[string]string `json:"metadata,omitempty"` + + // Personality includes files to inject into the server at launch. + // Create will base64-encode file contents for you. + Personality Personality `json:"personality,omitempty"` + + // ConfigDrive enables metadata injection through a configuration drive. + ConfigDrive *bool `json:"config_drive,omitempty"` + + // AdminPass sets the root user password. If not set, a randomly-generated + // password will be created and returned in the response. + AdminPass string `json:"adminPass,omitempty"` + + // AccessIPv4 specifies an IPv4 address for the instance. + AccessIPv4 string `json:"accessIPv4,omitempty"` + + // AccessIPv6 specifies an IPv6 address for the instance. + AccessIPv6 string `json:"accessIPv6,omitempty"` + + // Min specifies Minimum number of servers to launch. + Min int `json:"min_count,omitempty"` + + // Max specifies Maximum number of servers to launch. + Max int `json:"max_count,omitempty"` + + // ServiceClient will allow calls to be made to retrieve an image or + // flavor ID by name. + ServiceClient *gophercloud.ServiceClient `json:"-"` + + // Tags allows a server to be tagged with single-word metadata. + // Requires microversion 2.52 or later. + Tags []string `json:"tags,omitempty"` +} + +// ToServerCreateMap assembles a request body based on the contents of a +// CreateOpts. +func (opts CreateOpts) ToServerCreateMap() (map[string]interface{}, error) { + opts.ServiceClient = nil + b, err := gophercloud.BuildRequestBody(opts, "") + if err != nil { + return nil, err + } + + if opts.UserData != nil { + var userData string + if _, err := base64.StdEncoding.DecodeString(string(opts.UserData)); err != nil { + userData = base64.StdEncoding.EncodeToString(opts.UserData) + } else { + userData = string(opts.UserData) + } + b["user_data"] = &userData + } + + if len(opts.SecurityGroups) > 0 { + securityGroups := make([]map[string]interface{}, len(opts.SecurityGroups)) + for i, groupName := range opts.SecurityGroups { + securityGroups[i] = map[string]interface{}{"name": groupName} + } + b["security_groups"] = securityGroups + } + + switch v := opts.Networks.(type) { + case []Network: + if len(v) > 0 { + networks := make([]map[string]interface{}, len(v)) + for i, net := range v { + networks[i] = make(map[string]interface{}) + if net.UUID != "" { + networks[i]["uuid"] = net.UUID + } + if net.Port != "" { + networks[i]["port"] = net.Port + } + if net.FixedIP != "" { + networks[i]["fixed_ip"] = net.FixedIP + } + } + b["networks"] = networks + } + case string: + if v == "auto" || v == "none" { + b["networks"] = v + } else { + return nil, fmt.Errorf(`networks must be a slice of Network struct or a string with "auto" or "none" values, current value is %q`, v) + } + } + + if opts.Min != 0 { + b["min_count"] = opts.Min + } + + if opts.Max != 0 { + b["max_count"] = opts.Max + } + + return map[string]interface{}{"server": b}, nil +} + +// Create requests a server to be provisioned to the user in the current tenant. +func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { + reqBody, err := opts.ToServerCreateMap() + if err != nil { + r.Err = err + return + } + resp, err := client.Post(listURL(client), reqBody, &r.Body, nil) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// Delete requests that a server previously provisioned be removed from your +// account. +func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(deleteURL(client, id), nil) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// ForceDelete forces the deletion of a server. +func ForceDelete(client *gophercloud.ServiceClient, id string) (r ActionResult) { + resp, err := client.Post(actionURL(client, id), map[string]interface{}{"forceDelete": ""}, nil, nil) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// Get requests details on a single server, by ID. +func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(getURL(client, id), &r.Body, &gophercloud.RequestOpts{ + OkCodes: []int{200, 203}, + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// UpdateOptsBuilder allows extensions to add additional attributes to the +// Update request. +type UpdateOptsBuilder interface { + ToServerUpdateMap() (map[string]interface{}, error) +} + +// UpdateOpts specifies the base attributes that may be updated on an existing +// server. +type UpdateOpts struct { + // Name changes the displayed name of the server. + // The server host name will *not* change. + // Server names are not constrained to be unique, even within the same tenant. + Name string `json:"name,omitempty"` + + // AccessIPv4 provides a new IPv4 address for the instance. + AccessIPv4 string `json:"accessIPv4,omitempty"` + + // AccessIPv6 provides a new IPv6 address for the instance. + AccessIPv6 string `json:"accessIPv6,omitempty"` +} + +// ToServerUpdateMap formats an UpdateOpts structure into a request body. +func (opts UpdateOpts) ToServerUpdateMap() (map[string]interface{}, error) { + return gophercloud.BuildRequestBody(opts, "server") +} + +// Update requests that various attributes of the indicated server be changed. +func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { + b, err := opts.ToServerUpdateMap() + if err != nil { + r.Err = err + return + } + resp, err := client.Put(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + OkCodes: []int{200}, + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// ChangeAdminPassword alters the administrator or root password for a specified +// server. +func ChangeAdminPassword(client *gophercloud.ServiceClient, id, newPassword string) (r ActionResult) { + b := map[string]interface{}{ + "changePassword": map[string]string{ + "adminPass": newPassword, + }, + } + resp, err := client.Post(actionURL(client, id), b, nil, nil) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// RebootMethod describes the mechanisms by which a server reboot can be requested. +type RebootMethod string + +// These constants determine how a server should be rebooted. +// See the Reboot() function for further details. +const ( + SoftReboot RebootMethod = "SOFT" + HardReboot RebootMethod = "HARD" + OSReboot = SoftReboot + PowerCycle = HardReboot +) + +// RebootOptsBuilder allows extensions to add additional parameters to the +// reboot request. +type RebootOptsBuilder interface { + ToServerRebootMap() (map[string]interface{}, error) +} + +// RebootOpts provides options to the reboot request. +type RebootOpts struct { + // Type is the type of reboot to perform on the server. + Type RebootMethod `json:"type" required:"true"` +} + +// ToServerRebootMap builds a body for the reboot request. +func (opts RebootOpts) ToServerRebootMap() (map[string]interface{}, error) { + return gophercloud.BuildRequestBody(opts, "reboot") +} + +/* + Reboot requests that a given server reboot. + + Two methods exist for rebooting a server: + + HardReboot (aka PowerCycle) starts the server instance by physically cutting + power to the machine, or if a VM, terminating it at the hypervisor level. + It's done. Caput. Full stop. + Then, after a brief while, power is restored or the VM instance restarted. + + SoftReboot (aka OSReboot) simply tells the OS to restart under its own + procedure. + E.g., in Linux, asking it to enter runlevel 6, or executing + "sudo shutdown -r now", or by asking Windows to rtart the machine. +*/ +func Reboot(client *gophercloud.ServiceClient, id string, opts RebootOptsBuilder) (r ActionResult) { + b, err := opts.ToServerRebootMap() + if err != nil { + r.Err = err + return + } + resp, err := client.Post(actionURL(client, id), b, nil, nil) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// RebuildOptsBuilder allows extensions to provide additional parameters to the +// rebuild request. +type RebuildOptsBuilder interface { + ToServerRebuildMap() (map[string]interface{}, error) +} + +// RebuildOpts represents the configuration options used in a server rebuild +// operation. +type RebuildOpts struct { + // AdminPass is the server's admin password + AdminPass string `json:"adminPass,omitempty"` + + // ImageRef is the ID of the image you want your server to be provisioned on. + ImageRef string `json:"imageRef"` + + // Name to set the server to + Name string `json:"name,omitempty"` + + // AccessIPv4 [optional] provides a new IPv4 address for the instance. + AccessIPv4 string `json:"accessIPv4,omitempty"` + + // AccessIPv6 [optional] provides a new IPv6 address for the instance. + AccessIPv6 string `json:"accessIPv6,omitempty"` + + // Metadata [optional] contains key-value pairs (up to 255 bytes each) + // to attach to the server. + Metadata map[string]string `json:"metadata,omitempty"` + + // Personality [optional] includes files to inject into the server at launch. + // Rebuild will base64-encode file contents for you. + Personality Personality `json:"personality,omitempty"` + + // ServiceClient will allow calls to be made to retrieve an image or + // flavor ID by name. + ServiceClient *gophercloud.ServiceClient `json:"-"` +} + +// ToServerRebuildMap formats a RebuildOpts struct into a map for use in JSON +func (opts RebuildOpts) ToServerRebuildMap() (map[string]interface{}, error) { + b, err := gophercloud.BuildRequestBody(opts, "") + if err != nil { + return nil, err + } + + return map[string]interface{}{"rebuild": b}, nil +} + +// Rebuild will reprovision the server according to the configuration options +// provided in the RebuildOpts struct. +func Rebuild(client *gophercloud.ServiceClient, id string, opts RebuildOptsBuilder) (r RebuildResult) { + b, err := opts.ToServerRebuildMap() + if err != nil { + r.Err = err + return + } + resp, err := client.Post(actionURL(client, id), b, &r.Body, nil) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// ResizeOptsBuilder allows extensions to add additional parameters to the +// resize request. +type ResizeOptsBuilder interface { + ToServerResizeMap() (map[string]interface{}, error) +} + +// ResizeOpts represents the configuration options used to control a Resize +// operation. +type ResizeOpts struct { + // FlavorRef is the ID of the flavor you wish your server to become. + FlavorRef string `json:"flavorRef" required:"true"` +} + +// ToServerResizeMap formats a ResizeOpts as a map that can be used as a JSON +// request body for the Resize request. +func (opts ResizeOpts) ToServerResizeMap() (map[string]interface{}, error) { + return gophercloud.BuildRequestBody(opts, "resize") +} + +// Resize instructs the provider to change the flavor of the server. +// +// Note that this implies rebuilding it. +// +// Unfortunately, one cannot pass rebuild parameters to the resize function. +// When the resize completes, the server will be in VERIFY_RESIZE state. +// While in this state, you can explore the use of the new server's +// configuration. If you like it, call ConfirmResize() to commit the resize +// permanently. Otherwise, call RevertResize() to restore the old configuration. +func Resize(client *gophercloud.ServiceClient, id string, opts ResizeOptsBuilder) (r ActionResult) { + b, err := opts.ToServerResizeMap() + if err != nil { + r.Err = err + return + } + resp, err := client.Post(actionURL(client, id), b, nil, nil) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// ConfirmResize confirms a previous resize operation on a server. +// See Resize() for more details. +func ConfirmResize(client *gophercloud.ServiceClient, id string) (r ActionResult) { + resp, err := client.Post(actionURL(client, id), map[string]interface{}{"confirmResize": nil}, nil, &gophercloud.RequestOpts{ + OkCodes: []int{201, 202, 204}, + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// RevertResize cancels a previous resize operation on a server. +// See Resize() for more details. +func RevertResize(client *gophercloud.ServiceClient, id string) (r ActionResult) { + resp, err := client.Post(actionURL(client, id), map[string]interface{}{"revertResize": nil}, nil, nil) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// ResetMetadataOptsBuilder allows extensions to add additional parameters to +// the Reset request. +type ResetMetadataOptsBuilder interface { + ToMetadataResetMap() (map[string]interface{}, error) +} + +// MetadataOpts is a map that contains key-value pairs. +type MetadataOpts map[string]string + +// ToMetadataResetMap assembles a body for a Reset request based on the contents +// of a MetadataOpts. +func (opts MetadataOpts) ToMetadataResetMap() (map[string]interface{}, error) { + return map[string]interface{}{"metadata": opts}, nil +} + +// ToMetadataUpdateMap assembles a body for an Update request based on the +// contents of a MetadataOpts. +func (opts MetadataOpts) ToMetadataUpdateMap() (map[string]interface{}, error) { + return map[string]interface{}{"metadata": opts}, nil +} + +// ResetMetadata will create multiple new key-value pairs for the given server +// ID. +// Note: Using this operation will erase any already-existing metadata and +// create the new metadata provided. To keep any already-existing metadata, +// use the UpdateMetadatas or UpdateMetadata function. +func ResetMetadata(client *gophercloud.ServiceClient, id string, opts ResetMetadataOptsBuilder) (r ResetMetadataResult) { + b, err := opts.ToMetadataResetMap() + if err != nil { + r.Err = err + return + } + resp, err := client.Put(metadataURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + OkCodes: []int{200}, + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// Metadata requests all the metadata for the given server ID. +func Metadata(client *gophercloud.ServiceClient, id string) (r GetMetadataResult) { + resp, err := client.Get(metadataURL(client, id), &r.Body, nil) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// UpdateMetadataOptsBuilder allows extensions to add additional parameters to +// the Create request. +type UpdateMetadataOptsBuilder interface { + ToMetadataUpdateMap() (map[string]interface{}, error) +} + +// UpdateMetadata updates (or creates) all the metadata specified by opts for +// the given server ID. This operation does not affect already-existing metadata +// that is not specified by opts. +func UpdateMetadata(client *gophercloud.ServiceClient, id string, opts UpdateMetadataOptsBuilder) (r UpdateMetadataResult) { + b, err := opts.ToMetadataUpdateMap() + if err != nil { + r.Err = err + return + } + resp, err := client.Post(metadataURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + OkCodes: []int{200}, + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// MetadatumOptsBuilder allows extensions to add additional parameters to the +// Create request. +type MetadatumOptsBuilder interface { + ToMetadatumCreateMap() (map[string]interface{}, string, error) +} + +// MetadatumOpts is a map of length one that contains a key-value pair. +type MetadatumOpts map[string]string + +// ToMetadatumCreateMap assembles a body for a Create request based on the +// contents of a MetadataumOpts. +func (opts MetadatumOpts) ToMetadatumCreateMap() (map[string]interface{}, string, error) { + if len(opts) != 1 { + err := gophercloud.ErrInvalidInput{} + err.Argument = "servers.MetadatumOpts" + err.Info = "Must have 1 and only 1 key-value pair" + return nil, "", err + } + metadatum := map[string]interface{}{"meta": opts} + var key string + for k := range metadatum["meta"].(MetadatumOpts) { + key = k + } + return metadatum, key, nil +} + +// CreateMetadatum will create or update the key-value pair with the given key +// for the given server ID. +func CreateMetadatum(client *gophercloud.ServiceClient, id string, opts MetadatumOptsBuilder) (r CreateMetadatumResult) { + b, key, err := opts.ToMetadatumCreateMap() + if err != nil { + r.Err = err + return + } + resp, err := client.Put(metadatumURL(client, id, key), b, &r.Body, &gophercloud.RequestOpts{ + OkCodes: []int{200}, + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// Metadatum requests the key-value pair with the given key for the given +// server ID. +func Metadatum(client *gophercloud.ServiceClient, id, key string) (r GetMetadatumResult) { + resp, err := client.Get(metadatumURL(client, id, key), &r.Body, nil) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// DeleteMetadatum will delete the key-value pair with the given key for the +// given server ID. +func DeleteMetadatum(client *gophercloud.ServiceClient, id, key string) (r DeleteMetadatumResult) { + resp, err := client.Delete(metadatumURL(client, id, key), nil) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// ListAddresses makes a request against the API to list the servers IP +// addresses. +func ListAddresses(client *gophercloud.ServiceClient, id string) pagination.Pager { + return pagination.NewPager(client, listAddressesURL(client, id), func(r pagination.PageResult) pagination.Page { + return AddressPage{pagination.SinglePageBase(r)} + }) +} + +// ListAddressesByNetwork makes a request against the API to list the servers IP +// addresses for the given network. +func ListAddressesByNetwork(client *gophercloud.ServiceClient, id, network string) pagination.Pager { + return pagination.NewPager(client, listAddressesByNetworkURL(client, id, network), func(r pagination.PageResult) pagination.Page { + return NetworkAddressPage{pagination.SinglePageBase(r)} + }) +} + +// CreateImageOptsBuilder allows extensions to add additional parameters to the +// CreateImage request. +type CreateImageOptsBuilder interface { + ToServerCreateImageMap() (map[string]interface{}, error) +} + +// CreateImageOpts provides options to pass to the CreateImage request. +type CreateImageOpts struct { + // Name of the image/snapshot. + Name string `json:"name" required:"true"` + + // Metadata contains key-value pairs (up to 255 bytes each) to attach to + // the created image. + Metadata map[string]string `json:"metadata,omitempty"` +} + +// ToServerCreateImageMap formats a CreateImageOpts structure into a request +// body. +func (opts CreateImageOpts) ToServerCreateImageMap() (map[string]interface{}, error) { + return gophercloud.BuildRequestBody(opts, "createImage") +} + +// CreateImage makes a request against the nova API to schedule an image to be +// created of the server +func CreateImage(client *gophercloud.ServiceClient, id string, opts CreateImageOptsBuilder) (r CreateImageResult) { + b, err := opts.ToServerCreateImageMap() + if err != nil { + r.Err = err + return + } + resp, err := client.Post(actionURL(client, id), b, nil, &gophercloud.RequestOpts{ + OkCodes: []int{202}, + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// GetPassword makes a request against the nova API to get the encrypted +// administrative password. +func GetPassword(client *gophercloud.ServiceClient, serverId string) (r GetPasswordResult) { + resp, err := client.Get(passwordURL(client, serverId), &r.Body, nil) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// ShowConsoleOutputOptsBuilder is the interface types must satisfy in order to be +// used as ShowConsoleOutput options +type ShowConsoleOutputOptsBuilder interface { + ToServerShowConsoleOutputMap() (map[string]interface{}, error) +} + +// ShowConsoleOutputOpts satisfies the ShowConsoleOutputOptsBuilder +type ShowConsoleOutputOpts struct { + // The number of lines to fetch from the end of console log. + // All lines will be returned if this is not specified. + Length int `json:"length,omitempty"` +} + +// ToServerShowConsoleOutputMap formats a ShowConsoleOutputOpts structure into a request body. +func (opts ShowConsoleOutputOpts) ToServerShowConsoleOutputMap() (map[string]interface{}, error) { + return gophercloud.BuildRequestBody(opts, "os-getConsoleOutput") +} + +// ShowConsoleOutput makes a request against the nova API to get console log from the server +func ShowConsoleOutput(client *gophercloud.ServiceClient, id string, opts ShowConsoleOutputOptsBuilder) (r ShowConsoleOutputResult) { + b, err := opts.ToServerShowConsoleOutputMap() + if err != nil { + r.Err = err + return + } + resp, err := client.Post(actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + OkCodes: []int{200}, + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers/results.go b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers/results.go new file mode 100644 index 0000000..b3028be --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers/results.go @@ -0,0 +1,425 @@ +package servers + +import ( + "crypto/rsa" + "encoding/base64" + "encoding/json" + "fmt" + "net/url" + "path" + "time" + + "github.com/gophercloud/gophercloud" + "github.com/gophercloud/gophercloud/pagination" +) + +type serverResult struct { + gophercloud.Result +} + +// Extract interprets any serverResult as a Server, if possible. +func (r serverResult) Extract() (*Server, error) { + var s Server + err := r.ExtractInto(&s) + return &s, err +} + +func (r serverResult) ExtractInto(v interface{}) error { + return r.Result.ExtractIntoStructPtr(v, "server") +} + +func ExtractServersInto(r pagination.Page, v interface{}) error { + return r.(ServerPage).Result.ExtractIntoSlicePtr(v, "servers") +} + +// CreateResult is the response from a Create operation. Call its Extract +// method to interpret it as a Server. +type CreateResult struct { + serverResult +} + +// GetResult is the response from a Get operation. Call its Extract +// method to interpret it as a Server. +type GetResult struct { + serverResult +} + +// UpdateResult is the response from an Update operation. Call its Extract +// method to interpret it as a Server. +type UpdateResult struct { + serverResult +} + +// DeleteResult is the response from a Delete operation. Call its ExtractErr +// method to determine if the call succeeded or failed. +type DeleteResult struct { + gophercloud.ErrResult +} + +// RebuildResult is the response from a Rebuild operation. Call its Extract +// method to interpret it as a Server. +type RebuildResult struct { + serverResult +} + +// ActionResult represents the result of server action operations, like reboot. +// Call its ExtractErr method to determine if the action succeeded or failed. +type ActionResult struct { + gophercloud.ErrResult +} + +// CreateImageResult is the response from a CreateImage operation. Call its +// ExtractImageID method to retrieve the ID of the newly created image. +type CreateImageResult struct { + gophercloud.Result +} + +// ShowConsoleOutputResult represents the result of console output from a server +type ShowConsoleOutputResult struct { + gophercloud.Result +} + +// Extract will return the console output from a ShowConsoleOutput request. +func (r ShowConsoleOutputResult) Extract() (string, error) { + var s struct { + Output string `json:"output"` + } + + err := r.ExtractInto(&s) + return s.Output, err +} + +// GetPasswordResult represent the result of a get os-server-password operation. +// Call its ExtractPassword method to retrieve the password. +type GetPasswordResult struct { + gophercloud.Result +} + +// ExtractPassword gets the encrypted password. +// If privateKey != nil the password is decrypted with the private key. +// If privateKey == nil the encrypted password is returned and can be decrypted +// with: +// echo '' | base64 -D | openssl rsautl -decrypt -inkey +func (r GetPasswordResult) ExtractPassword(privateKey *rsa.PrivateKey) (string, error) { + var s struct { + Password string `json:"password"` + } + err := r.ExtractInto(&s) + if err == nil && privateKey != nil && s.Password != "" { + return decryptPassword(s.Password, privateKey) + } + return s.Password, err +} + +func decryptPassword(encryptedPassword string, privateKey *rsa.PrivateKey) (string, error) { + b64EncryptedPassword := make([]byte, base64.StdEncoding.DecodedLen(len(encryptedPassword))) + + n, err := base64.StdEncoding.Decode(b64EncryptedPassword, []byte(encryptedPassword)) + if err != nil { + return "", fmt.Errorf("Failed to base64 decode encrypted password: %s", err) + } + password, err := rsa.DecryptPKCS1v15(nil, privateKey, b64EncryptedPassword[0:n]) + if err != nil { + return "", fmt.Errorf("Failed to decrypt password: %s", err) + } + + return string(password), nil +} + +// ExtractImageID gets the ID of the newly created server image from the header. +func (r CreateImageResult) ExtractImageID() (string, error) { + if r.Err != nil { + return "", r.Err + } + // Get the image id from the header + u, err := url.ParseRequestURI(r.Header.Get("Location")) + if err != nil { + return "", err + } + imageID := path.Base(u.Path) + if imageID == "." || imageID == "/" { + return "", fmt.Errorf("Failed to parse the ID of newly created image: %s", u) + } + return imageID, nil +} + +// Server represents a server/instance in the OpenStack cloud. +type Server struct { + // ID uniquely identifies this server amongst all other servers, + // including those not accessible to the current tenant. + ID string `json:"id"` + + // TenantID identifies the tenant owning this server resource. + TenantID string `json:"tenant_id"` + + // UserID uniquely identifies the user account owning the tenant. + UserID string `json:"user_id"` + + // Name contains the human-readable name for the server. + Name string `json:"name"` + + // Updated and Created contain ISO-8601 timestamps of when the state of the + // server last changed, and when it was created. + Updated time.Time `json:"updated"` + Created time.Time `json:"created"` + + // HostID is the host where the server is located in the cloud. + HostID string `json:"hostid"` + + // Status contains the current operational status of the server, + // such as IN_PROGRESS or ACTIVE. + Status string `json:"status"` + + // Progress ranges from 0..100. + // A request made against the server completes only once Progress reaches 100. + Progress int `json:"progress"` + + // AccessIPv4 and AccessIPv6 contain the IP addresses of the server, + // suitable for remote access for administration. + AccessIPv4 string `json:"accessIPv4"` + AccessIPv6 string `json:"accessIPv6"` + + // Image refers to a JSON object, which itself indicates the OS image used to + // deploy the server. + Image map[string]interface{} `json:"-"` + + // Flavor refers to a JSON object, which itself indicates the hardware + // configuration of the deployed server. + Flavor map[string]interface{} `json:"flavor"` + + // Addresses includes a list of all IP addresses assigned to the server, + // keyed by pool. + Addresses map[string]interface{} `json:"addresses"` + + // Metadata includes a list of all user-specified key-value pairs attached + // to the server. + Metadata map[string]string `json:"metadata"` + + // Links includes HTTP references to the itself, useful for passing along to + // other APIs that might want a server reference. + Links []interface{} `json:"links"` + + // KeyName indicates which public key was injected into the server on launch. + KeyName string `json:"key_name"` + + // AdminPass will generally be empty (""). However, it will contain the + // administrative password chosen when provisioning a new server without a + // set AdminPass setting in the first place. + // Note that this is the ONLY time this field will be valid. + AdminPass string `json:"adminPass"` + + // SecurityGroups includes the security groups that this instance has applied + // to it. + SecurityGroups []map[string]interface{} `json:"security_groups"` + + // AttachedVolumes includes the volume attachments of this instance + AttachedVolumes []AttachedVolume `json:"os-extended-volumes:volumes_attached"` + + // Fault contains failure information about a server. + Fault Fault `json:"fault"` + + // Tags is a slice/list of string tags in a server. + // The requires microversion 2.26 or later. + Tags *[]string `json:"tags"` +} + +type AttachedVolume struct { + ID string `json:"id"` +} + +type Fault struct { + Code int `json:"code"` + Created time.Time `json:"created"` + Details string `json:"details"` + Message string `json:"message"` +} + +func (r *Server) UnmarshalJSON(b []byte) error { + type tmp Server + var s struct { + tmp + Image interface{} `json:"image"` + } + err := json.Unmarshal(b, &s) + if err != nil { + return err + } + + *r = Server(s.tmp) + + switch t := s.Image.(type) { + case map[string]interface{}: + r.Image = t + case string: + switch t { + case "": + r.Image = nil + } + } + + return err +} + +// ServerPage abstracts the raw results of making a List() request against +// the API. As OpenStack extensions may freely alter the response bodies of +// structures returned to the client, you may only safely access the data +// provided through the ExtractServers call. +type ServerPage struct { + pagination.LinkedPageBase +} + +// IsEmpty returns true if a page contains no Server results. +func (r ServerPage) IsEmpty() (bool, error) { + s, err := ExtractServers(r) + return len(s) == 0, err +} + +// NextPageURL uses the response's embedded link reference to navigate to the +// next page of results. +func (r ServerPage) NextPageURL() (string, error) { + var s struct { + Links []gophercloud.Link `json:"servers_links"` + } + err := r.ExtractInto(&s) + if err != nil { + return "", err + } + return gophercloud.ExtractNextURL(s.Links) +} + +// ExtractServers interprets the results of a single page from a List() call, +// producing a slice of Server entities. +func ExtractServers(r pagination.Page) ([]Server, error) { + var s []Server + err := ExtractServersInto(r, &s) + return s, err +} + +// MetadataResult contains the result of a call for (potentially) multiple +// key-value pairs. Call its Extract method to interpret it as a +// map[string]interface. +type MetadataResult struct { + gophercloud.Result +} + +// GetMetadataResult contains the result of a Get operation. Call its Extract +// method to interpret it as a map[string]interface. +type GetMetadataResult struct { + MetadataResult +} + +// ResetMetadataResult contains the result of a Reset operation. Call its +// Extract method to interpret it as a map[string]interface. +type ResetMetadataResult struct { + MetadataResult +} + +// UpdateMetadataResult contains the result of an Update operation. Call its +// Extract method to interpret it as a map[string]interface. +type UpdateMetadataResult struct { + MetadataResult +} + +// MetadatumResult contains the result of a call for individual a single +// key-value pair. +type MetadatumResult struct { + gophercloud.Result +} + +// GetMetadatumResult contains the result of a Get operation. Call its Extract +// method to interpret it as a map[string]interface. +type GetMetadatumResult struct { + MetadatumResult +} + +// CreateMetadatumResult contains the result of a Create operation. Call its +// Extract method to interpret it as a map[string]interface. +type CreateMetadatumResult struct { + MetadatumResult +} + +// DeleteMetadatumResult contains the result of a Delete operation. Call its +// ExtractErr method to determine if the call succeeded or failed. +type DeleteMetadatumResult struct { + gophercloud.ErrResult +} + +// Extract interprets any MetadataResult as a Metadata, if possible. +func (r MetadataResult) Extract() (map[string]string, error) { + var s struct { + Metadata map[string]string `json:"metadata"` + } + err := r.ExtractInto(&s) + return s.Metadata, err +} + +// Extract interprets any MetadatumResult as a Metadatum, if possible. +func (r MetadatumResult) Extract() (map[string]string, error) { + var s struct { + Metadatum map[string]string `json:"meta"` + } + err := r.ExtractInto(&s) + return s.Metadatum, err +} + +// Address represents an IP address. +type Address struct { + Version int `json:"version"` + Address string `json:"addr"` +} + +// AddressPage abstracts the raw results of making a ListAddresses() request +// against the API. As OpenStack extensions may freely alter the response bodies +// of structures returned to the client, you may only safely access the data +// provided through the ExtractAddresses call. +type AddressPage struct { + pagination.SinglePageBase +} + +// IsEmpty returns true if an AddressPage contains no networks. +func (r AddressPage) IsEmpty() (bool, error) { + addresses, err := ExtractAddresses(r) + return len(addresses) == 0, err +} + +// ExtractAddresses interprets the results of a single page from a +// ListAddresses() call, producing a map of addresses. +func ExtractAddresses(r pagination.Page) (map[string][]Address, error) { + var s struct { + Addresses map[string][]Address `json:"addresses"` + } + err := (r.(AddressPage)).ExtractInto(&s) + return s.Addresses, err +} + +// NetworkAddressPage abstracts the raw results of making a +// ListAddressesByNetwork() request against the API. +// As OpenStack extensions may freely alter the response bodies of structures +// returned to the client, you may only safely access the data provided through +// the ExtractAddresses call. +type NetworkAddressPage struct { + pagination.SinglePageBase +} + +// IsEmpty returns true if a NetworkAddressPage contains no addresses. +func (r NetworkAddressPage) IsEmpty() (bool, error) { + addresses, err := ExtractNetworkAddresses(r) + return len(addresses) == 0, err +} + +// ExtractNetworkAddresses interprets the results of a single page from a +// ListAddressesByNetwork() call, producing a slice of addresses. +func ExtractNetworkAddresses(r pagination.Page) ([]Address, error) { + var s map[string][]Address + err := (r.(NetworkAddressPage)).ExtractInto(&s) + if err != nil { + return nil, err + } + + var key string + for k := range s { + key = k + } + + return s[key], err +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers/urls.go b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers/urls.go new file mode 100644 index 0000000..e892e8d --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers/urls.go @@ -0,0 +1,51 @@ +package servers + +import "github.com/gophercloud/gophercloud" + +func createURL(client *gophercloud.ServiceClient) string { + return client.ServiceURL("servers") +} + +func listURL(client *gophercloud.ServiceClient) string { + return createURL(client) +} + +func listDetailURL(client *gophercloud.ServiceClient) string { + return client.ServiceURL("servers", "detail") +} + +func deleteURL(client *gophercloud.ServiceClient, id string) string { + return client.ServiceURL("servers", id) +} + +func getURL(client *gophercloud.ServiceClient, id string) string { + return deleteURL(client, id) +} + +func updateURL(client *gophercloud.ServiceClient, id string) string { + return deleteURL(client, id) +} + +func actionURL(client *gophercloud.ServiceClient, id string) string { + return client.ServiceURL("servers", id, "action") +} + +func metadatumURL(client *gophercloud.ServiceClient, id, key string) string { + return client.ServiceURL("servers", id, "metadata", key) +} + +func metadataURL(client *gophercloud.ServiceClient, id string) string { + return client.ServiceURL("servers", id, "metadata") +} + +func listAddressesURL(client *gophercloud.ServiceClient, id string) string { + return client.ServiceURL("servers", id, "ips") +} + +func listAddressesByNetworkURL(client *gophercloud.ServiceClient, id, network string) string { + return client.ServiceURL("servers", id, "ips", network) +} + +func passwordURL(client *gophercloud.ServiceClient, id string) string { + return client.ServiceURL("servers", id, "os-server-password") +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers/util.go b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers/util.go new file mode 100644 index 0000000..cadef05 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers/util.go @@ -0,0 +1,21 @@ +package servers + +import "github.com/gophercloud/gophercloud" + +// WaitForStatus will continually poll a server until it successfully +// transitions to a specified status. It will do this for at most the number +// of seconds specified. +func WaitForStatus(c *gophercloud.ServiceClient, id, status string, secs int) error { + return gophercloud.WaitFor(secs, func() (bool, error) { + current, err := Get(c, id).Extract() + if err != nil { + return false, err + } + + if current.Status == status { + return true, nil + } + + return false, nil + }) +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/doc.go b/vendor/github.com/gophercloud/gophercloud/openstack/doc.go new file mode 100644 index 0000000..af4bd51 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/doc.go @@ -0,0 +1,14 @@ +/* +Package openstack contains resources for the individual OpenStack projects +supported in Gophercloud. It also includes functions to authenticate to an +OpenStack cloud and for provisioning various service-level clients. + +Example of Creating a Service Client + + ao, err := openstack.AuthOptionsFromEnv() + provider, err := openstack.AuthenticatedClient(ao) + client, err := openstack.NewNetworkV2(provider, gophercloud.EndpointOpts{ + Region: os.Getenv("OS_REGION_NAME"), + }) +*/ +package openstack diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/endpoint_location.go b/vendor/github.com/gophercloud/gophercloud/openstack/endpoint_location.go new file mode 100644 index 0000000..5097007 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/endpoint_location.go @@ -0,0 +1,111 @@ +package openstack + +import ( + "github.com/gophercloud/gophercloud" + tokens2 "github.com/gophercloud/gophercloud/openstack/identity/v2/tokens" + tokens3 "github.com/gophercloud/gophercloud/openstack/identity/v3/tokens" +) + +/* +V2EndpointURL discovers the endpoint URL for a specific service from a +ServiceCatalog acquired during the v2 identity service. + +The specified EndpointOpts are used to identify a unique, unambiguous endpoint +to return. It's an error both when multiple endpoints match the provided +criteria and when none do. The minimum that can be specified is a Type, but you +will also often need to specify a Name and/or a Region depending on what's +available on your OpenStack deployment. +*/ +func V2EndpointURL(catalog *tokens2.ServiceCatalog, opts gophercloud.EndpointOpts) (string, error) { + // Extract Endpoints from the catalog entries that match the requested Type, Name if provided, and Region if provided. + var endpoints = make([]tokens2.Endpoint, 0, 1) + for _, entry := range catalog.Entries { + if (entry.Type == opts.Type) && (opts.Name == "" || entry.Name == opts.Name) { + for _, endpoint := range entry.Endpoints { + if opts.Region == "" || endpoint.Region == opts.Region { + endpoints = append(endpoints, endpoint) + } + } + } + } + + // If multiple endpoints were found, use the first result + // and disregard the other endpoints. + // + // This behavior matches the Python library. See GH-1764. + if len(endpoints) > 1 { + endpoints = endpoints[0:1] + } + + // Extract the appropriate URL from the matching Endpoint. + for _, endpoint := range endpoints { + switch opts.Availability { + case gophercloud.AvailabilityPublic: + return gophercloud.NormalizeURL(endpoint.PublicURL), nil + case gophercloud.AvailabilityInternal: + return gophercloud.NormalizeURL(endpoint.InternalURL), nil + case gophercloud.AvailabilityAdmin: + return gophercloud.NormalizeURL(endpoint.AdminURL), nil + default: + err := &ErrInvalidAvailabilityProvided{} + err.Argument = "Availability" + err.Value = opts.Availability + return "", err + } + } + + // Report an error if there were no matching endpoints. + err := &gophercloud.ErrEndpointNotFound{} + return "", err +} + +/* +V3EndpointURL discovers the endpoint URL for a specific service from a Catalog +acquired during the v3 identity service. + +The specified EndpointOpts are used to identify a unique, unambiguous endpoint +to return. It's an error both when multiple endpoints match the provided +criteria and when none do. The minimum that can be specified is a Type, but you +will also often need to specify a Name and/or a Region depending on what's +available on your OpenStack deployment. +*/ +func V3EndpointURL(catalog *tokens3.ServiceCatalog, opts gophercloud.EndpointOpts) (string, error) { + // Extract Endpoints from the catalog entries that match the requested Type, Interface, + // Name if provided, and Region if provided. + var endpoints = make([]tokens3.Endpoint, 0, 1) + for _, entry := range catalog.Entries { + if (entry.Type == opts.Type) && (opts.Name == "" || entry.Name == opts.Name) { + for _, endpoint := range entry.Endpoints { + if opts.Availability != gophercloud.AvailabilityAdmin && + opts.Availability != gophercloud.AvailabilityPublic && + opts.Availability != gophercloud.AvailabilityInternal { + err := &ErrInvalidAvailabilityProvided{} + err.Argument = "Availability" + err.Value = opts.Availability + return "", err + } + if (opts.Availability == gophercloud.Availability(endpoint.Interface)) && + (opts.Region == "" || endpoint.Region == opts.Region || endpoint.RegionID == opts.Region) { + endpoints = append(endpoints, endpoint) + } + } + } + } + + // If multiple endpoints were found, use the first result + // and disregard the other endpoints. + // + // This behavior matches the Python library. See GH-1764. + if len(endpoints) > 1 { + endpoints = endpoints[0:1] + } + + // Extract the URL from the matching Endpoint. + for _, endpoint := range endpoints { + return gophercloud.NormalizeURL(endpoint.URL), nil + } + + // Report an error if there were no matching endpoints. + err := &gophercloud.ErrEndpointNotFound{} + return "", err +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/errors.go b/vendor/github.com/gophercloud/gophercloud/openstack/errors.go new file mode 100644 index 0000000..cba6ae5 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/errors.go @@ -0,0 +1,47 @@ +package openstack + +import ( + "fmt" + + "github.com/gophercloud/gophercloud" +) + +// ErrEndpointNotFound is the error when no suitable endpoint can be found +// in the user's catalog +type ErrEndpointNotFound struct{ gophercloud.BaseError } + +func (e ErrEndpointNotFound) Error() string { + return "No suitable endpoint could be found in the service catalog." +} + +// ErrInvalidAvailabilityProvided is the error when an invalid endpoint +// availability is provided +type ErrInvalidAvailabilityProvided struct{ gophercloud.ErrInvalidInput } + +func (e ErrInvalidAvailabilityProvided) Error() string { + return fmt.Sprintf("Unexpected availability in endpoint query: %s", e.Value) +} + +// ErrNoAuthURL is the error when the OS_AUTH_URL environment variable is not +// found +type ErrNoAuthURL struct{ gophercloud.ErrInvalidInput } + +func (e ErrNoAuthURL) Error() string { + return "Environment variable OS_AUTH_URL needs to be set." +} + +// ErrNoUsername is the error when the OS_USERNAME environment variable is not +// found +type ErrNoUsername struct{ gophercloud.ErrInvalidInput } + +func (e ErrNoUsername) Error() string { + return "Environment variable OS_USERNAME needs to be set." +} + +// ErrNoPassword is the error when the OS_PASSWORD environment variable is not +// found +type ErrNoPassword struct{ gophercloud.ErrInvalidInput } + +func (e ErrNoPassword) Error() string { + return "Environment variable OS_PASSWORD needs to be set." +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tenants/doc.go b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tenants/doc.go new file mode 100644 index 0000000..4562336 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tenants/doc.go @@ -0,0 +1,65 @@ +/* +Package tenants provides information and interaction with the +tenants API resource for the OpenStack Identity service. + +See http://developer.openstack.org/api-ref-identity-v2.html#identity-auth-v2 +and http://developer.openstack.org/api-ref-identity-v2.html#admin-tenants +for more information. + +Example to List Tenants + + listOpts := tenants.ListOpts{ + Limit: 2, + } + + allPages, err := tenants.List(identityClient, listOpts).AllPages() + if err != nil { + panic(err) + } + + allTenants, err := tenants.ExtractTenants(allPages) + if err != nil { + panic(err) + } + + for _, tenant := range allTenants { + fmt.Printf("%+v\n", tenant) + } + +Example to Create a Tenant + + createOpts := tenants.CreateOpts{ + Name: "tenant_name", + Description: "this is a tenant", + Enabled: gophercloud.Enabled, + } + + tenant, err := tenants.Create(identityClient, createOpts).Extract() + if err != nil { + panic(err) + } + +Example to Update a Tenant + + tenantID := "e6db6ed6277c461a853458589063b295" + + updateOpts := tenants.UpdateOpts{ + Description: "this is a new description", + Enabled: gophercloud.Disabled, + } + + tenant, err := tenants.Update(identityClient, tenantID, updateOpts).Extract() + if err != nil { + panic(err) + } + +Example to Delete a Tenant + + tenantID := "e6db6ed6277c461a853458589063b295" + + err := tenants.Delete(identitYClient, tenantID).ExtractErr() + if err != nil { + panic(err) + } +*/ +package tenants diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tenants/requests.go b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tenants/requests.go new file mode 100644 index 0000000..f16df38 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tenants/requests.go @@ -0,0 +1,120 @@ +package tenants + +import ( + "github.com/gophercloud/gophercloud" + "github.com/gophercloud/gophercloud/pagination" +) + +// ListOpts filters the Tenants that are returned by the List call. +type ListOpts struct { + // Marker is the ID of the last Tenant on the previous page. + Marker string `q:"marker"` + + // Limit specifies the page size. + Limit int `q:"limit"` +} + +// List enumerates the Tenants to which the current token has access. +func List(client *gophercloud.ServiceClient, opts *ListOpts) pagination.Pager { + url := listURL(client) + if opts != nil { + q, err := gophercloud.BuildQueryString(opts) + if err != nil { + return pagination.Pager{Err: err} + } + url += q.String() + } + return pagination.NewPager(client, url, func(r pagination.PageResult) pagination.Page { + return TenantPage{pagination.LinkedPageBase{PageResult: r}} + }) +} + +// CreateOpts represents the options needed when creating new tenant. +type CreateOpts struct { + // Name is the name of the tenant. + Name string `json:"name" required:"true"` + + // Description is the description of the tenant. + Description string `json:"description,omitempty"` + + // Enabled sets the tenant status to enabled or disabled. + Enabled *bool `json:"enabled,omitempty"` +} + +// CreateOptsBuilder enables extensions to add additional parameters to the +// Create request. +type CreateOptsBuilder interface { + ToTenantCreateMap() (map[string]interface{}, error) +} + +// ToTenantCreateMap assembles a request body based on the contents of +// a CreateOpts. +func (opts CreateOpts) ToTenantCreateMap() (map[string]interface{}, error) { + return gophercloud.BuildRequestBody(opts, "tenant") +} + +// Create is the operation responsible for creating new tenant. +func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { + b, err := opts.ToTenantCreateMap() + if err != nil { + r.Err = err + return + } + resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + OkCodes: []int{200, 201}, + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// Get requests details on a single tenant by ID. +func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(getURL(client, id), &r.Body, nil) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// UpdateOptsBuilder allows extensions to add additional parameters to the +// Update request. +type UpdateOptsBuilder interface { + ToTenantUpdateMap() (map[string]interface{}, error) +} + +// UpdateOpts specifies the base attributes that may be updated on an existing +// tenant. +type UpdateOpts struct { + // Name is the name of the tenant. + Name string `json:"name,omitempty"` + + // Description is the description of the tenant. + Description *string `json:"description,omitempty"` + + // Enabled sets the tenant status to enabled or disabled. + Enabled *bool `json:"enabled,omitempty"` +} + +// ToTenantUpdateMap formats an UpdateOpts structure into a request body. +func (opts UpdateOpts) ToTenantUpdateMap() (map[string]interface{}, error) { + return gophercloud.BuildRequestBody(opts, "tenant") +} + +// Update is the operation responsible for updating exist tenants by their TenantID. +func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { + b, err := opts.ToTenantUpdateMap() + if err != nil { + r.Err = err + return + } + resp, err := client.Put(updateURL(client, id), &b, &r.Body, &gophercloud.RequestOpts{ + OkCodes: []int{200}, + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// Delete is the operation responsible for permanently deleting a tenant. +func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(deleteURL(client, id), nil) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tenants/results.go b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tenants/results.go new file mode 100644 index 0000000..bb6c2c6 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tenants/results.go @@ -0,0 +1,91 @@ +package tenants + +import ( + "github.com/gophercloud/gophercloud" + "github.com/gophercloud/gophercloud/pagination" +) + +// Tenant is a grouping of users in the identity service. +type Tenant struct { + // ID is a unique identifier for this tenant. + ID string `json:"id"` + + // Name is a friendlier user-facing name for this tenant. + Name string `json:"name"` + + // Description is a human-readable explanation of this Tenant's purpose. + Description string `json:"description"` + + // Enabled indicates whether or not a tenant is active. + Enabled bool `json:"enabled"` +} + +// TenantPage is a single page of Tenant results. +type TenantPage struct { + pagination.LinkedPageBase +} + +// IsEmpty determines whether or not a page of Tenants contains any results. +func (r TenantPage) IsEmpty() (bool, error) { + tenants, err := ExtractTenants(r) + return len(tenants) == 0, err +} + +// NextPageURL extracts the "next" link from the tenants_links section of the result. +func (r TenantPage) NextPageURL() (string, error) { + var s struct { + Links []gophercloud.Link `json:"tenants_links"` + } + err := r.ExtractInto(&s) + if err != nil { + return "", err + } + return gophercloud.ExtractNextURL(s.Links) +} + +// ExtractTenants returns a slice of Tenants contained in a single page of +// results. +func ExtractTenants(r pagination.Page) ([]Tenant, error) { + var s struct { + Tenants []Tenant `json:"tenants"` + } + err := (r.(TenantPage)).ExtractInto(&s) + return s.Tenants, err +} + +type tenantResult struct { + gophercloud.Result +} + +// Extract interprets any tenantResults as a Tenant. +func (r tenantResult) Extract() (*Tenant, error) { + var s struct { + Tenant *Tenant `json:"tenant"` + } + err := r.ExtractInto(&s) + return s.Tenant, err +} + +// GetResult is the response from a Get request. Call its Extract method to +// interpret it as a Tenant. +type GetResult struct { + tenantResult +} + +// CreateResult is the response from a Create request. Call its Extract method +// to interpret it as a Tenant. +type CreateResult struct { + tenantResult +} + +// DeleteResult is the response from a Get request. Call its ExtractErr method +// to determine if the call succeeded or failed. +type DeleteResult struct { + gophercloud.ErrResult +} + +// UpdateResult is the response from a Update request. Call its Extract method +// to interpret it as a Tenant. +type UpdateResult struct { + tenantResult +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tenants/urls.go b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tenants/urls.go new file mode 100644 index 0000000..0f02669 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tenants/urls.go @@ -0,0 +1,23 @@ +package tenants + +import "github.com/gophercloud/gophercloud" + +func listURL(client *gophercloud.ServiceClient) string { + return client.ServiceURL("tenants") +} + +func getURL(client *gophercloud.ServiceClient, tenantID string) string { + return client.ServiceURL("tenants", tenantID) +} + +func createURL(client *gophercloud.ServiceClient) string { + return client.ServiceURL("tenants") +} + +func deleteURL(client *gophercloud.ServiceClient, tenantID string) string { + return client.ServiceURL("tenants", tenantID) +} + +func updateURL(client *gophercloud.ServiceClient, tenantID string) string { + return client.ServiceURL("tenants", tenantID) +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tokens/doc.go b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tokens/doc.go new file mode 100644 index 0000000..5375eea --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tokens/doc.go @@ -0,0 +1,46 @@ +/* +Package tokens provides information and interaction with the token API +resource for the OpenStack Identity service. + +For more information, see: +http://developer.openstack.org/api-ref-identity-v2.html#identity-auth-v2 + +Example to Create an Unscoped Token from a Password + + authOpts := gophercloud.AuthOptions{ + Username: "user", + Password: "pass" + } + + token, err := tokens.Create(identityClient, authOpts).ExtractToken() + if err != nil { + panic(err) + } + +Example to Create a Token from a Tenant ID and Password + + authOpts := gophercloud.AuthOptions{ + Username: "user", + Password: "password", + TenantID: "fc394f2ab2df4114bde39905f800dc57" + } + + token, err := tokens.Create(identityClient, authOpts).ExtractToken() + if err != nil { + panic(err) + } + +Example to Create a Token from a Tenant Name and Password + + authOpts := gophercloud.AuthOptions{ + Username: "user", + Password: "password", + TenantName: "tenantname" + } + + token, err := tokens.Create(identityClient, authOpts).ExtractToken() + if err != nil { + panic(err) + } +*/ +package tokens diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tokens/requests.go b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tokens/requests.go new file mode 100644 index 0000000..2b64f10 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tokens/requests.go @@ -0,0 +1,105 @@ +package tokens + +import "github.com/gophercloud/gophercloud" + +// PasswordCredentialsV2 represents the required options to authenticate +// with a username and password. +type PasswordCredentialsV2 struct { + Username string `json:"username" required:"true"` + Password string `json:"password" required:"true"` +} + +// TokenCredentialsV2 represents the required options to authenticate +// with a token. +type TokenCredentialsV2 struct { + ID string `json:"id,omitempty" required:"true"` +} + +// AuthOptionsV2 wraps a gophercloud AuthOptions in order to adhere to the +// AuthOptionsBuilder interface. +type AuthOptionsV2 struct { + PasswordCredentials *PasswordCredentialsV2 `json:"passwordCredentials,omitempty" xor:"TokenCredentials"` + + // The TenantID and TenantName fields are optional for the Identity V2 API. + // Some providers allow you to specify a TenantName instead of the TenantId. + // Some require both. Your provider's authentication policies will determine + // how these fields influence authentication. + TenantID string `json:"tenantId,omitempty"` + TenantName string `json:"tenantName,omitempty"` + + // TokenCredentials allows users to authenticate (possibly as another user) + // with an authentication token ID. + TokenCredentials *TokenCredentialsV2 `json:"token,omitempty" xor:"PasswordCredentials"` +} + +// AuthOptionsBuilder allows extensions to add additional parameters to the +// token create request. +type AuthOptionsBuilder interface { + // ToTokenCreateMap assembles the Create request body, returning an error + // if parameters are missing or inconsistent. + ToTokenV2CreateMap() (map[string]interface{}, error) +} + +// AuthOptions are the valid options for Openstack Identity v2 authentication. +// For field descriptions, see gophercloud.AuthOptions. +type AuthOptions struct { + IdentityEndpoint string `json:"-"` + Username string `json:"username,omitempty"` + Password string `json:"password,omitempty"` + TenantID string `json:"tenantId,omitempty"` + TenantName string `json:"tenantName,omitempty"` + AllowReauth bool `json:"-"` + TokenID string +} + +// ToTokenV2CreateMap builds a token request body from the given AuthOptions. +func (opts AuthOptions) ToTokenV2CreateMap() (map[string]interface{}, error) { + v2Opts := AuthOptionsV2{ + TenantID: opts.TenantID, + TenantName: opts.TenantName, + } + + if opts.Password != "" { + v2Opts.PasswordCredentials = &PasswordCredentialsV2{ + Username: opts.Username, + Password: opts.Password, + } + } else { + v2Opts.TokenCredentials = &TokenCredentialsV2{ + ID: opts.TokenID, + } + } + + b, err := gophercloud.BuildRequestBody(v2Opts, "auth") + if err != nil { + return nil, err + } + return b, nil +} + +// Create authenticates to the identity service and attempts to acquire a Token. +// Generally, rather than interact with this call directly, end users should +// call openstack.AuthenticatedClient(), which abstracts all of the gory details +// about navigating service catalogs and such. +func Create(client *gophercloud.ServiceClient, auth AuthOptionsBuilder) (r CreateResult) { + b, err := auth.ToTokenV2CreateMap() + if err != nil { + r.Err = err + return + } + resp, err := client.Post(CreateURL(client), b, &r.Body, &gophercloud.RequestOpts{ + OkCodes: []int{200, 203}, + MoreHeaders: map[string]string{"X-Auth-Token": ""}, + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// Get validates and retrieves information for user's token. +func Get(client *gophercloud.ServiceClient, token string) (r GetResult) { + resp, err := client.Get(GetURL(client, token), &r.Body, &gophercloud.RequestOpts{ + OkCodes: []int{200, 203}, + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tokens/results.go b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tokens/results.go new file mode 100644 index 0000000..ee5da37 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tokens/results.go @@ -0,0 +1,174 @@ +package tokens + +import ( + "time" + + "github.com/gophercloud/gophercloud" + "github.com/gophercloud/gophercloud/openstack/identity/v2/tenants" +) + +// Token provides only the most basic information related to an authentication +// token. +type Token struct { + // ID provides the primary means of identifying a user to the OpenStack API. + // OpenStack defines this field as an opaque value, so do not depend on its + // content. It is safe, however, to compare for equality. + ID string + + // ExpiresAt provides a timestamp in ISO 8601 format, indicating when the + // authentication token becomes invalid. After this point in time, future + // API requests made using this authentication token will respond with + // errors. Either the caller will need to reauthenticate manually, or more + // preferably, the caller should exploit automatic re-authentication. + // See the AuthOptions structure for more details. + ExpiresAt time.Time + + // Tenant provides information about the tenant to which this token grants + // access. + Tenant tenants.Tenant +} + +// Role is a role for a user. +type Role struct { + Name string `json:"name"` +} + +// User is an OpenStack user. +type User struct { + ID string `json:"id"` + Name string `json:"name"` + UserName string `json:"username"` + Roles []Role `json:"roles"` +} + +// Endpoint represents a single API endpoint offered by a service. +// It provides the public and internal URLs, if supported, along with a region +// specifier, again if provided. +// +// The significance of the Region field will depend upon your provider. +// +// In addition, the interface offered by the service will have version +// information associated with it through the VersionId, VersionInfo, and +// VersionList fields, if provided or supported. +// +// In all cases, fields which aren't supported by the provider and service +// combined will assume a zero-value (""). +type Endpoint struct { + TenantID string `json:"tenantId"` + PublicURL string `json:"publicURL"` + InternalURL string `json:"internalURL"` + AdminURL string `json:"adminURL"` + Region string `json:"region"` + VersionID string `json:"versionId"` + VersionInfo string `json:"versionInfo"` + VersionList string `json:"versionList"` +} + +// CatalogEntry provides a type-safe interface to an Identity API V2 service +// catalog listing. +// +// Each class of service, such as cloud DNS or block storage services, will have +// a single CatalogEntry representing it. +// +// Note: when looking for the desired service, try, whenever possible, to key +// off the type field. Otherwise, you'll tie the representation of the service +// to a specific provider. +type CatalogEntry struct { + // Name will contain the provider-specified name for the service. + Name string `json:"name"` + + // Type will contain a type string if OpenStack defines a type for the + // service. Otherwise, for provider-specific services, the provider may assign + // their own type strings. + Type string `json:"type"` + + // Endpoints will let the caller iterate over all the different endpoints that + // may exist for the service. + Endpoints []Endpoint `json:"endpoints"` +} + +// ServiceCatalog provides a view into the service catalog from a previous, +// successful authentication. +type ServiceCatalog struct { + Entries []CatalogEntry +} + +// CreateResult is the response from a Create request. Use ExtractToken() to +// interpret it as a Token, or ExtractServiceCatalog() to interpret it as a +// service catalog. +type CreateResult struct { + gophercloud.Result +} + +// GetResult is the deferred response from a Get call, which is the same with a +// Created token. Use ExtractUser() to interpret it as a User. +type GetResult struct { + CreateResult +} + +// ExtractToken returns the just-created Token from a CreateResult. +func (r CreateResult) ExtractToken() (*Token, error) { + var s struct { + Access struct { + Token struct { + Expires string `json:"expires"` + ID string `json:"id"` + Tenant tenants.Tenant `json:"tenant"` + } `json:"token"` + } `json:"access"` + } + + err := r.ExtractInto(&s) + if err != nil { + return nil, err + } + + expiresTs, err := time.Parse(gophercloud.RFC3339Milli, s.Access.Token.Expires) + if err != nil { + return nil, err + } + + return &Token{ + ID: s.Access.Token.ID, + ExpiresAt: expiresTs, + Tenant: s.Access.Token.Tenant, + }, nil +} + +// ExtractTokenID implements the gophercloud.AuthResult interface. The returned +// string is the same as the ID field of the Token struct returned from +// ExtractToken(). +func (r CreateResult) ExtractTokenID() (string, error) { + var s struct { + Access struct { + Token struct { + ID string `json:"id"` + } `json:"token"` + } `json:"access"` + } + err := r.ExtractInto(&s) + return s.Access.Token.ID, err +} + +// ExtractServiceCatalog returns the ServiceCatalog that was generated along +// with the user's Token. +func (r CreateResult) ExtractServiceCatalog() (*ServiceCatalog, error) { + var s struct { + Access struct { + Entries []CatalogEntry `json:"serviceCatalog"` + } `json:"access"` + } + err := r.ExtractInto(&s) + return &ServiceCatalog{Entries: s.Access.Entries}, err +} + +// ExtractUser returns the User from a GetResult. +func (r GetResult) ExtractUser() (*User, error) { + var s struct { + Access struct { + User User `json:"user"` + } `json:"access"` + } + err := r.ExtractInto(&s) + return &s.Access.User, err +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tokens/urls.go b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tokens/urls.go new file mode 100644 index 0000000..ee0a28f --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tokens/urls.go @@ -0,0 +1,13 @@ +package tokens + +import "github.com/gophercloud/gophercloud" + +// CreateURL generates the URL used to create new Tokens. +func CreateURL(client *gophercloud.ServiceClient) string { + return client.ServiceURL("tokens") +} + +// GetURL generates the URL used to Validate Tokens. +func GetURL(client *gophercloud.ServiceClient, token string) string { + return client.ServiceURL("tokens", token) +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/ec2tokens/doc.go b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/ec2tokens/doc.go new file mode 100644 index 0000000..1f6f807 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/ec2tokens/doc.go @@ -0,0 +1,41 @@ +/* +Package tokens provides information and interaction with the EC2 token API +resource for the OpenStack Identity service. + +For more information, see: +https://docs.openstack.org/api-ref/identity/v2-ext/ + +Example to Create a Token From an EC2 access and secret keys + + var authOptions tokens.AuthOptionsBuilder + authOptions = &ec2tokens.AuthOptions{ + Access: "a7f1e798b7c2417cba4a02de97dc3cdc", + Secret: "18f4f6761ada4e3795fa5273c30349b9", + } + + token, err := ec2tokens.Create(identityClient, authOptions).ExtractToken() + if err != nil { + panic(err) + } + +Example to auth a client using EC2 access and secret keys + + client, err := openstack.NewClient("http://localhost:5000/v3") + if err != nil { + panic(err) + } + + var authOptions tokens.AuthOptionsBuilder + authOptions = &ec2tokens.AuthOptions{ + Access: "a7f1e798b7c2417cba4a02de97dc3cdc", + Secret: "18f4f6761ada4e3795fa5273c30349b9", + AllowReauth: true, + } + + err = openstack.AuthenticateV3(client, authOptions, gophercloud.EndpointOpts{}) + if err != nil { + panic(err) + } + +*/ +package ec2tokens diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/ec2tokens/requests.go b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/ec2tokens/requests.go new file mode 100644 index 0000000..32ba0e6 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/ec2tokens/requests.go @@ -0,0 +1,377 @@ +package ec2tokens + +import ( + "crypto/hmac" + "crypto/sha1" + "crypto/sha256" + "encoding/hex" + "fmt" + "math/rand" + "net/url" + "sort" + "strings" + "time" + + "github.com/gophercloud/gophercloud" + "github.com/gophercloud/gophercloud/openstack/identity/v3/tokens" +) + +const ( + // EC2CredentialsAwsRequestV4 is a constant, used to generate AWS + // Credential V4. + EC2CredentialsAwsRequestV4 = "aws4_request" + // EC2CredentialsHmacSha1V2 is a HMAC SHA1 signature method. Used to + // generate AWS Credential V2. + EC2CredentialsHmacSha1V2 = "HmacSHA1" + // EC2CredentialsHmacSha256V2 is a HMAC SHA256 signature method. Used + // to generate AWS Credential V2. + EC2CredentialsHmacSha256V2 = "HmacSHA256" + // EC2CredentialsAwsHmacV4 is an AWS signature V4 signing method. + // More details: + // https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html + EC2CredentialsAwsHmacV4 = "AWS4-HMAC-SHA256" + // EC2CredentialsTimestampFormatV4 is an AWS signature V4 timestamp + // format. + EC2CredentialsTimestampFormatV4 = "20060102T150405Z" + // EC2CredentialsDateFormatV4 is an AWS signature V4 date format. + EC2CredentialsDateFormatV4 = "20060102" +) + +// AuthOptions represents options for authenticating a user using EC2 credentials. +type AuthOptions struct { + // Access is the EC2 Credential Access ID. + Access string `json:"access" required:"true"` + // Secret is the EC2 Credential Secret, used to calculate signature. + // Not used, when a Signature is is. + Secret string `json:"-"` + // Host is a HTTP request Host header. Used to calculate an AWS + // signature V2. For signature V4 set the Host inside Headers map. + // Optional. + Host string `json:"host"` + // Path is a HTTP request path. Optional. + Path string `json:"path"` + // Verb is a HTTP request method. Optional. + Verb string `json:"verb"` + // Headers is a map of HTTP request headers. Optional. + Headers map[string]string `json:"headers"` + // Region is a region name to calculate an AWS signature V4. Optional. + Region string `json:"-"` + // Service is a service name to calculate an AWS signature V4. Optional. + Service string `json:"-"` + // Params is a map of GET method parameters. Optional. + Params map[string]string `json:"params"` + // AllowReauth allows Gophercloud to re-authenticate automatically + // if/when your token expires. + AllowReauth bool `json:"-"` + // Signature can be either a []byte (encoded to base64 automatically) or + // a string. You can set the singature explicitly, when you already know + // it. In this case default Params won't be automatically set. Optional. + Signature interface{} `json:"signature"` + // BodyHash is a HTTP request body sha256 hash. When nil and Signature + // is not set, a random hash is generated. Optional. + BodyHash *string `json:"body_hash"` + // Timestamp is a timestamp to calculate a V4 signature. Optional. + Timestamp *time.Time `json:"-"` + // Token is a []byte string (encoded to base64 automatically) which was + // signed by an EC2 secret key. Used by S3 tokens for validation only. + // Token must be set with a Signature. If a Signature is not provided, + // a Token will be generated automatically along with a Signature. + Token []byte `json:"token,omitempty"` +} + +// EC2CredentialsBuildCanonicalQueryStringV2 builds a canonical query string +// for an AWS signature V2. +// https://github.com/openstack/python-keystoneclient/blob/stable/train/keystoneclient/contrib/ec2/utils.py#L133 +func EC2CredentialsBuildCanonicalQueryStringV2(params map[string]string) string { + var keys []string + for k := range params { + keys = append(keys, k) + } + sort.Strings(keys) + + var pairs []string + for _, k := range keys { + pairs = append(pairs, fmt.Sprintf("%s=%s", k, url.QueryEscape(params[k]))) + } + + return strings.Join(pairs, "&") +} + +// EC2CredentialsBuildStringToSignV2 builds a string to sign an AWS signature +// V2. +// https://github.com/openstack/python-keystoneclient/blob/stable/train/keystoneclient/contrib/ec2/utils.py#L148 +func EC2CredentialsBuildStringToSignV2(opts AuthOptions) []byte { + stringToSign := strings.Join([]string{ + opts.Verb, + opts.Host, + opts.Path, + }, "\n") + + return []byte(strings.Join([]string{ + stringToSign, + EC2CredentialsBuildCanonicalQueryStringV2(opts.Params), + }, "\n")) +} + +// EC2CredentialsBuildCanonicalQueryStringV2 builds a canonical query string +// for an AWS signature V4. +// https://github.com/openstack/python-keystoneclient/blob/stable/train/keystoneclient/contrib/ec2/utils.py#L244 +func EC2CredentialsBuildCanonicalQueryStringV4(verb string, params map[string]string) string { + if verb == "POST" { + return "" + } + return EC2CredentialsBuildCanonicalQueryStringV2(params) +} + +// EC2CredentialsBuildCanonicalHeadersV4 builds a canonical string based on +// "headers" map and "signedHeaders" string parameters. +// https://github.com/openstack/python-keystoneclient/blob/stable/train/keystoneclient/contrib/ec2/utils.py#L216 +func EC2CredentialsBuildCanonicalHeadersV4(headers map[string]string, signedHeaders string) string { + headersLower := make(map[string]string, len(headers)) + for k, v := range headers { + headersLower[strings.ToLower(k)] = v + } + + var headersList []string + for _, h := range strings.Split(signedHeaders, ";") { + if v, ok := headersLower[h]; ok { + headersList = append(headersList, h+":"+v) + } + } + + return strings.Join(headersList, "\n") + "\n" +} + +// EC2CredentialsBuildSignatureKeyV4 builds a HMAC 256 signature key based on +// input parameters. +// https://github.com/openstack/python-keystoneclient/blob/stable/train/keystoneclient/contrib/ec2/utils.py#L169 +func EC2CredentialsBuildSignatureKeyV4(secret, region, service string, date time.Time) []byte { + kDate := sumHMAC256([]byte("AWS4"+secret), []byte(date.Format(EC2CredentialsDateFormatV4))) + kRegion := sumHMAC256(kDate, []byte(region)) + kService := sumHMAC256(kRegion, []byte(service)) + return sumHMAC256(kService, []byte(EC2CredentialsAwsRequestV4)) +} + +// EC2CredentialsBuildStringToSignV4 builds an AWS v4 signature string to sign +// based on input parameters. +// https://github.com/openstack/python-keystoneclient/blob/stable/train/keystoneclient/contrib/ec2/utils.py#L251 +func EC2CredentialsBuildStringToSignV4(opts AuthOptions, signedHeaders string, bodyHash string, date time.Time) []byte { + scope := strings.Join([]string{ + date.Format(EC2CredentialsDateFormatV4), + opts.Region, + opts.Service, + EC2CredentialsAwsRequestV4, + }, "/") + + canonicalRequest := strings.Join([]string{ + opts.Verb, + opts.Path, + EC2CredentialsBuildCanonicalQueryStringV4(opts.Verb, opts.Params), + EC2CredentialsBuildCanonicalHeadersV4(opts.Headers, signedHeaders), + signedHeaders, + bodyHash, + }, "\n") + hash := sha256.Sum256([]byte(canonicalRequest)) + + return []byte(strings.Join([]string{ + EC2CredentialsAwsHmacV4, + date.Format(EC2CredentialsTimestampFormatV4), + scope, + hex.EncodeToString(hash[:]), + }, "\n")) +} + +// EC2CredentialsBuildSignatureV4 builds an AWS v4 signature based on input +// parameters. +// https://github.com/openstack/python-keystoneclient/blob/stable/train/keystoneclient/contrib/ec2/utils.py#L285..L286 +func EC2CredentialsBuildSignatureV4(key []byte, stringToSign []byte) string { + return hex.EncodeToString(sumHMAC256(key, stringToSign)) +} + +// EC2CredentialsBuildAuthorizationHeaderV4 builds an AWS v4 Authorization +// header based on auth parameters, date and signature +func EC2CredentialsBuildAuthorizationHeaderV4(opts AuthOptions, signedHeaders string, signature string, date time.Time) string { + return fmt.Sprintf("%s Credential=%s/%s/%s/%s/%s, SignedHeaders=%s, Signature=%s", + EC2CredentialsAwsHmacV4, + opts.Access, + date.Format(EC2CredentialsDateFormatV4), + opts.Region, + opts.Service, + EC2CredentialsAwsRequestV4, + signedHeaders, + signature) +} + +// ToTokenV3ScopeMap is a dummy method to satisfy tokens.AuthOptionsBuilder +// interface. +func (opts *AuthOptions) ToTokenV3ScopeMap() (map[string]interface{}, error) { + return nil, nil +} + +// ToTokenV3HeadersMap allows AuthOptions to satisfy the AuthOptionsBuilder +// interface in the v3 tokens package. +func (opts *AuthOptions) ToTokenV3HeadersMap(map[string]interface{}) (map[string]string, error) { + return nil, nil +} + +// CanReauth is a method method to satisfy tokens.AuthOptionsBuilder interface +func (opts *AuthOptions) CanReauth() bool { + return opts.AllowReauth +} + +// ToTokenV3CreateMap formats an AuthOptions into a create request. +func (opts *AuthOptions) ToTokenV3CreateMap(map[string]interface{}) (map[string]interface{}, error) { + b, err := gophercloud.BuildRequestBody(opts, "credentials") + if err != nil { + return nil, err + } + + if opts.Signature != nil { + return b, nil + } + + // calculate signature, when it is not set + c, _ := b["credentials"].(map[string]interface{}) + h := interfaceToMap(c, "headers") + p := interfaceToMap(c, "params") + + // detect and process a signature v2 + if v, ok := p["SignatureVersion"]; ok && v == "2" { + if _, ok := c["body_hash"]; ok { + delete(c, "body_hash") + } + if _, ok := c["headers"]; ok { + delete(c, "headers") + } + if v, ok := p["SignatureMethod"]; ok { + // params is a map of strings + strToSign := EC2CredentialsBuildStringToSignV2(*opts) + switch v { + case EC2CredentialsHmacSha1V2: + // keystone uses this method only when HmacSHA256 is not available on the server side + // https://github.com/openstack/python-keystoneclient/blob/stable/train/keystoneclient/contrib/ec2/utils.py#L151..L156 + c["signature"] = sumHMAC1([]byte(opts.Secret), strToSign) + return b, nil + case EC2CredentialsHmacSha256V2: + c["signature"] = sumHMAC256([]byte(opts.Secret), strToSign) + return b, nil + } + return nil, fmt.Errorf("unsupported signature method: %s", v) + } + return nil, fmt.Errorf("signature method must be provided") + } else if ok { + return nil, fmt.Errorf("unsupported signature version: %s", v) + } + + // it is not a signature v2, but a signature v4 + date := time.Now().UTC() + if opts.Timestamp != nil { + date = *opts.Timestamp + } + if v, _ := c["body_hash"]; v == nil { + // when body_hash is not set, generate a random one + c["body_hash"] = randomBodyHash() + } + + signedHeaders, _ := h["X-Amz-SignedHeaders"] + + stringToSign := EC2CredentialsBuildStringToSignV4(*opts, signedHeaders, c["body_hash"].(string), date) + key := EC2CredentialsBuildSignatureKeyV4(opts.Secret, opts.Region, opts.Service, date) + c["signature"] = EC2CredentialsBuildSignatureV4(key, stringToSign) + h["X-Amz-Date"] = date.Format(EC2CredentialsTimestampFormatV4) + h["Authorization"] = EC2CredentialsBuildAuthorizationHeaderV4(*opts, signedHeaders, c["signature"].(string), date) + + // token is only used for S3 tokens validation and will be removed when using EC2 validation + c["token"] = stringToSign + + return b, nil +} + +// Create authenticates and either generates a new token from EC2 credentials +func Create(c *gophercloud.ServiceClient, opts tokens.AuthOptionsBuilder) (r tokens.CreateResult) { + b, err := opts.ToTokenV3CreateMap(nil) + if err != nil { + r.Err = err + return + } + + // delete "token" element, since it is used in s3tokens + deleteBodyElements(b, "token") + + resp, err := c.Post(ec2tokensURL(c), b, &r.Body, &gophercloud.RequestOpts{ + MoreHeaders: map[string]string{"X-Auth-Token": ""}, + OkCodes: []int{200}, + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// ValidateS3Token authenticates an S3 request using EC2 credentials. Doesn't +// generate a new token ID, but returns a tokens.CreateResult. +func ValidateS3Token(c *gophercloud.ServiceClient, opts tokens.AuthOptionsBuilder) (r tokens.CreateResult) { + b, err := opts.ToTokenV3CreateMap(nil) + if err != nil { + r.Err = err + return + } + + // delete unused element, since it is used in ec2tokens only + deleteBodyElements(b, "body_hash", "headers", "host", "params", "path", "verb") + + resp, err := c.Post(s3tokensURL(c), b, &r.Body, &gophercloud.RequestOpts{ + MoreHeaders: map[string]string{"X-Auth-Token": ""}, + OkCodes: []int{200}, + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// The following are small helper functions used to help build the signature. + +// sumHMAC1 is a func to implement the HMAC SHA1 signature method. +func sumHMAC1(key []byte, data []byte) []byte { + hash := hmac.New(sha1.New, key) + hash.Write(data) + return hash.Sum(nil) +} + +// sumHMAC256 is a func to implement the HMAC SHA256 signature method. +func sumHMAC256(key []byte, data []byte) []byte { + hash := hmac.New(sha256.New, key) + hash.Write(data) + return hash.Sum(nil) +} + +// randomBodyHash is a func to generate a random sha256 hexdigest. +func randomBodyHash() string { + h := make([]byte, 64) + rand.Read(h) + return hex.EncodeToString(h) +} + +// interfaceToMap is a func used to represent a "credentials" map element as a +// "map[string]string" +func interfaceToMap(c map[string]interface{}, key string) map[string]string { + // convert map[string]interface{} to map[string]string + m := make(map[string]string) + if v, _ := c[key].(map[string]interface{}); v != nil { + for k, v := range v { + m[k] = v.(string) + } + } + + c[key] = m + + return m +} + +// deleteBodyElements deletes map body elements +func deleteBodyElements(b map[string]interface{}, elements ...string) { + if c, ok := b["credentials"].(map[string]interface{}); ok { + for _, k := range elements { + if _, ok := c[k]; ok { + delete(c, k) + } + } + } +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/ec2tokens/urls.go b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/ec2tokens/urls.go new file mode 100644 index 0000000..84b33b2 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/ec2tokens/urls.go @@ -0,0 +1,11 @@ +package ec2tokens + +import "github.com/gophercloud/gophercloud" + +func ec2tokensURL(c *gophercloud.ServiceClient) string { + return c.ServiceURL("ec2tokens") +} + +func s3tokensURL(c *gophercloud.ServiceClient) string { + return c.ServiceURL("s3tokens") +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/oauth1/doc.go b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/oauth1/doc.go new file mode 100644 index 0000000..c5b0831 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/oauth1/doc.go @@ -0,0 +1,123 @@ +/* +Package oauth1 enables management of OpenStack OAuth1 tokens and Authentication. + +Example to Create an OAuth1 Consumer + + createConsumerOpts := oauth1.CreateConsumerOpts{ + Description: "My consumer", + } + consumer, err := oauth1.CreateConsumer(identityClient, createConsumerOpts).Extract() + if err != nil { + panic(err) + } + + // NOTE: Consumer secret is available only on create response + fmt.Printf("Consumer: %+v\n", consumer) + +Example to Request an unauthorized OAuth1 token + + requestTokenOpts := oauth1.RequestTokenOpts{ + OAuthConsumerKey: consumer.ID, + OAuthConsumerSecret: consumer.Secret, + OAuthSignatureMethod: oauth1.HMACSHA1, + RequestedProjectID: projectID, + } + requestToken, err := oauth1.RequestToken(identityClient, requestTokenOpts).Extract() + if err != nil { + panic(err) + } + + // NOTE: Request token secret is available only on request response + fmt.Printf("Request token: %+v\n", requestToken) + +Example to Authorize an unauthorized OAuth1 token + + authorizeTokenOpts := oauth1.AuthorizeTokenOpts{ + Roles: []oauth1.Role{ + {Name: "member"}, + }, + } + authToken, err := oauth1.AuthorizeToken(identityClient, requestToken.OAuthToken, authorizeTokenOpts).Extract() + if err != nil { + panic(err) + } + + fmt.Printf("Verifier ID of the unauthorized Token: %+v\n", authToken.OAuthVerifier) + +Example to Create an OAuth1 Access Token + + accessTokenOpts := oauth1.CreateAccessTokenOpts{ + OAuthConsumerKey: consumer.ID, + OAuthConsumerSecret: consumer.Secret, + OAuthToken: requestToken.OAuthToken, + OAuthTokenSecret: requestToken.OAuthTokenSecret, + OAuthVerifier: authToken.OAuthVerifier, + OAuthSignatureMethod: oauth1.HMACSHA1, + } + accessToken, err := oauth1.CreateAccessToken(identityClient, accessTokenOpts).Extract() + if err != nil { + panic(err) + } + + // NOTE: Access token secret is available only on create response + fmt.Printf("OAuth1 Access Token: %+v\n", accessToken) + +Example to List User's OAuth1 Access Tokens + + allPages, err := oauth1.ListAccessTokens(identityClient, userID).AllPages() + if err != nil { + panic(err) + } + accessTokens, err := oauth1.ExtractAccessTokens(allPages) + if err != nil { + panic(err) + } + + for _, accessToken := range accessTokens { + fmt.Printf("Access Token: %+v\n", accessToken) + } + +Example to Authenticate a client using OAuth1 method + + client, err := openstack.NewClient("http://localhost:5000/v3") + if err != nil { + panic(err) + } + + authOptions := &oauth1.AuthOptions{ + // consumer token, created earlier + OAuthConsumerKey: consumer.ID, + OAuthConsumerSecret: consumer.Secret, + // access token, created earlier + OAuthToken: accessToken.OAuthToken, + OAuthTokenSecret: accessToken.OAuthTokenSecret, + OAuthSignatureMethod: oauth1.HMACSHA1, + } + err = openstack.AuthenticateV3(client, authOptions, gophercloud.EndpointOpts{}) + if err != nil { + panic(err) + } + +Example to Create a Token using OAuth1 method + + var oauth1Token struct { + tokens.Token + oauth1.TokenExt + } + + createOpts := &oauth1.AuthOptions{ + // consumer token, created earlier + OAuthConsumerKey: consumer.ID, + OAuthConsumerSecret: consumer.Secret, + // access token, created earlier + OAuthToken: accessToken.OAuthToken, + OAuthTokenSecret: accessToken.OAuthTokenSecret, + OAuthSignatureMethod: oauth1.HMACSHA1, + } + err := tokens.Create(identityClient, createOpts).ExtractInto(&oauth1Token) + if err != nil { + panic(err) + } + +*/ +package oauth1 diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/oauth1/requests.go b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/oauth1/requests.go new file mode 100644 index 0000000..028b5a4 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/oauth1/requests.go @@ -0,0 +1,587 @@ +package oauth1 + +import ( + "crypto/hmac" + "crypto/sha1" + "encoding/base64" + "fmt" + "io/ioutil" + "math/rand" + "net/url" + "sort" + "strconv" + "strings" + "time" + + "github.com/gophercloud/gophercloud" + "github.com/gophercloud/gophercloud/openstack/identity/v3/tokens" + "github.com/gophercloud/gophercloud/pagination" +) + +// Type SignatureMethod is a OAuth1 SignatureMethod type. +type SignatureMethod string + +const ( + // HMACSHA1 is a recommended OAuth1 signature method. + HMACSHA1 SignatureMethod = "HMAC-SHA1" + + // PLAINTEXT signature method is not recommended to be used in + // production environment. + PLAINTEXT SignatureMethod = "PLAINTEXT" + + // OAuth1TokenContentType is a supported content type for an OAuth1 + // token. + OAuth1TokenContentType = "application/x-www-form-urlencoded" +) + +// AuthOptions represents options for authenticating a user using OAuth1 tokens. +type AuthOptions struct { + // OAuthConsumerKey is the OAuth1 Consumer Key. + OAuthConsumerKey string `q:"oauth_consumer_key" required:"true"` + + // OAuthConsumerSecret is the OAuth1 Consumer Secret. Used to generate + // an OAuth1 request signature. + OAuthConsumerSecret string `required:"true"` + + // OAuthToken is the OAuth1 Request Token. + OAuthToken string `q:"oauth_token" required:"true"` + + // OAuthTokenSecret is the OAuth1 Request Token Secret. Used to generate + // an OAuth1 request signature. + OAuthTokenSecret string `required:"true"` + + // OAuthSignatureMethod is the OAuth1 signature method the Consumer used + // to sign the request. Supported values are "HMAC-SHA1" or "PLAINTEXT". + // "PLAINTEXT" is not recommended for production usage. + OAuthSignatureMethod SignatureMethod `q:"oauth_signature_method" required:"true"` + + // OAuthTimestamp is an OAuth1 request timestamp. If nil, current Unix + // timestamp will be used. + OAuthTimestamp *time.Time + + // OAuthNonce is an OAuth1 request nonce. Nonce must be a random string, + // uniquely generated for each request. Will be generated automatically + // when it is not set. + OAuthNonce string `q:"oauth_nonce"` + + // AllowReauth allows Gophercloud to re-authenticate automatically + // if/when your token expires. + AllowReauth bool +} + +// ToTokenV3HeadersMap builds the headers required for an OAuth1-based create +// request. +func (opts AuthOptions) ToTokenV3HeadersMap(headerOpts map[string]interface{}) (map[string]string, error) { + q, err := buildOAuth1QueryString(opts, opts.OAuthTimestamp, "") + if err != nil { + return nil, err + } + + signatureKeys := []string{opts.OAuthConsumerSecret, opts.OAuthTokenSecret} + + method := headerOpts["method"].(string) + u := headerOpts["url"].(string) + stringToSign := buildStringToSign(method, u, q.Query()) + signature := url.QueryEscape(signString(opts.OAuthSignatureMethod, stringToSign, signatureKeys)) + + authHeader := buildAuthHeader(q.Query(), signature) + + headers := map[string]string{ + "Authorization": authHeader, + "X-Auth-Token": "", + } + + return headers, nil +} + +// ToTokenV3ScopeMap allows AuthOptions to satisfy the tokens.AuthOptionsBuilder +// interface. +func (opts AuthOptions) ToTokenV3ScopeMap() (map[string]interface{}, error) { + return nil, nil +} + +// CanReauth allows AuthOptions to satisfy the tokens.AuthOptionsBuilder +// interface. +func (opts AuthOptions) CanReauth() bool { + return opts.AllowReauth +} + +// ToTokenV3CreateMap builds a create request body. +func (opts AuthOptions) ToTokenV3CreateMap(map[string]interface{}) (map[string]interface{}, error) { + // identityReq defines the "identity" portion of an OAuth1-based authentication + // create request body. + type identityReq struct { + Methods []string `json:"methods"` + OAuth1 struct{} `json:"oauth1"` + } + + // authReq defines the "auth" portion of an OAuth1-based authentication + // create request body. + type authReq struct { + Identity identityReq `json:"identity"` + } + + // oauth1Request defines how an OAuth1-based authentication create + // request body looks. + type oauth1Request struct { + Auth authReq `json:"auth"` + } + + var req oauth1Request + + req.Auth.Identity.Methods = []string{"oauth1"} + return gophercloud.BuildRequestBody(req, "") +} + +// Create authenticates and either generates a new OpenStack token from an +// OAuth1 token. +func Create(client *gophercloud.ServiceClient, opts tokens.AuthOptionsBuilder) (r tokens.CreateResult) { + b, err := opts.ToTokenV3CreateMap(nil) + if err != nil { + r.Err = err + return + } + + headerOpts := map[string]interface{}{ + "method": "POST", + "url": authURL(client), + } + + h, err := opts.ToTokenV3HeadersMap(headerOpts) + if err != nil { + r.Err = err + return + } + + resp, err := client.Post(authURL(client), b, &r.Body, &gophercloud.RequestOpts{ + MoreHeaders: h, + OkCodes: []int{201}, + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// CreateConsumerOptsBuilder allows extensions to add additional parameters to +// the CreateConsumer request. +type CreateConsumerOptsBuilder interface { + ToOAuth1CreateConsumerMap() (map[string]interface{}, error) +} + +// CreateConsumerOpts provides options used to create a new Consumer. +type CreateConsumerOpts struct { + // Description is the consumer description. + Description string `json:"description"` +} + +// ToOAuth1CreateConsumerMap formats a CreateConsumerOpts into a create request. +func (opts CreateConsumerOpts) ToOAuth1CreateConsumerMap() (map[string]interface{}, error) { + return gophercloud.BuildRequestBody(opts, "consumer") +} + +// Create creates a new Consumer. +func CreateConsumer(client *gophercloud.ServiceClient, opts CreateConsumerOptsBuilder) (r CreateConsumerResult) { + b, err := opts.ToOAuth1CreateConsumerMap() + if err != nil { + r.Err = err + return + } + resp, err := client.Post(consumersURL(client), b, &r.Body, &gophercloud.RequestOpts{ + OkCodes: []int{201}, + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// Delete deletes a Consumer. +func DeleteConsumer(client *gophercloud.ServiceClient, id string) (r DeleteConsumerResult) { + resp, err := client.Delete(consumerURL(client, id), nil) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// List enumerates Consumers. +func ListConsumers(client *gophercloud.ServiceClient) pagination.Pager { + return pagination.NewPager(client, consumersURL(client), func(r pagination.PageResult) pagination.Page { + return ConsumersPage{pagination.LinkedPageBase{PageResult: r}} + }) +} + +// GetConsumer retrieves details on a single Consumer by ID. +func GetConsumer(client *gophercloud.ServiceClient, id string) (r GetConsumerResult) { + resp, err := client.Get(consumerURL(client, id), &r.Body, nil) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// UpdateConsumerOpts provides options used to update a consumer. +type UpdateConsumerOpts struct { + // Description is the consumer description. + Description string `json:"description"` +} + +// ToOAuth1UpdateConsumerMap formats an UpdateConsumerOpts into a consumer update +// request. +func (opts UpdateConsumerOpts) ToOAuth1UpdateConsumerMap() (map[string]interface{}, error) { + return gophercloud.BuildRequestBody(opts, "consumer") +} + +// UpdateConsumer updates an existing Consumer. +func UpdateConsumer(client *gophercloud.ServiceClient, id string, opts UpdateConsumerOpts) (r UpdateConsumerResult) { + b, err := opts.ToOAuth1UpdateConsumerMap() + if err != nil { + r.Err = err + return + } + resp, err := client.Patch(consumerURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + OkCodes: []int{200}, + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// RequestTokenOptsBuilder allows extensions to add additional parameters to the +// RequestToken request. +type RequestTokenOptsBuilder interface { + ToOAuth1RequestTokenHeaders(string, string) (map[string]string, error) +} + +// RequestTokenOpts provides options used to get a consumer unauthorized +// request token. +type RequestTokenOpts struct { + // OAuthConsumerKey is the OAuth1 Consumer Key. + OAuthConsumerKey string `q:"oauth_consumer_key" required:"true"` + + // OAuthConsumerSecret is the OAuth1 Consumer Secret. Used to generate + // an OAuth1 request signature. + OAuthConsumerSecret string `required:"true"` + + // OAuthSignatureMethod is the OAuth1 signature method the Consumer used + // to sign the request. Supported values are "HMAC-SHA1" or "PLAINTEXT". + // "PLAINTEXT" is not recommended for production usage. + OAuthSignatureMethod SignatureMethod `q:"oauth_signature_method" required:"true"` + + // OAuthTimestamp is an OAuth1 request timestamp. If nil, current Unix + // timestamp will be used. + OAuthTimestamp *time.Time + + // OAuthNonce is an OAuth1 request nonce. Nonce must be a random string, + // uniquely generated for each request. Will be generated automatically + // when it is not set. + OAuthNonce string `q:"oauth_nonce"` + + // RequestedProjectID is a Project ID a consumer user requested an + // access to. + RequestedProjectID string `h:"Requested-Project-Id"` +} + +// ToOAuth1RequestTokenHeaders formats a RequestTokenOpts into a map of request +// headers. +func (opts RequestTokenOpts) ToOAuth1RequestTokenHeaders(method, u string) (map[string]string, error) { + q, err := buildOAuth1QueryString(opts, opts.OAuthTimestamp, "oob") + if err != nil { + return nil, err + } + + h, err := gophercloud.BuildHeaders(opts) + if err != nil { + return nil, err + } + + signatureKeys := []string{opts.OAuthConsumerSecret} + stringToSign := buildStringToSign(method, u, q.Query()) + signature := url.QueryEscape(signString(opts.OAuthSignatureMethod, stringToSign, signatureKeys)) + authHeader := buildAuthHeader(q.Query(), signature) + + h["Authorization"] = authHeader + + return h, nil +} + +// RequestToken requests an unauthorized OAuth1 Token. +func RequestToken(client *gophercloud.ServiceClient, opts RequestTokenOptsBuilder) (r TokenResult) { + h, err := opts.ToOAuth1RequestTokenHeaders("POST", requestTokenURL(client)) + if err != nil { + r.Err = err + return + } + + resp, err := client.Post(requestTokenURL(client), nil, nil, &gophercloud.RequestOpts{ + MoreHeaders: h, + OkCodes: []int{201}, + KeepResponseBody: true, + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + if r.Err != nil { + return + } + defer resp.Body.Close() + if v := r.Header.Get("Content-Type"); v != OAuth1TokenContentType { + r.Err = fmt.Errorf("unsupported Content-Type: %q", v) + return + } + r.Body, r.Err = ioutil.ReadAll(resp.Body) + return +} + +// AuthorizeTokenOptsBuilder allows extensions to add additional parameters to +// the AuthorizeToken request. +type AuthorizeTokenOptsBuilder interface { + ToOAuth1AuthorizeTokenMap() (map[string]interface{}, error) +} + +// AuthorizeTokenOpts provides options used to authorize a request token. +type AuthorizeTokenOpts struct { + Roles []Role `json:"roles"` +} + +// Role is a struct representing a role object in a AuthorizeTokenOpts struct. +type Role struct { + ID string `json:"id,omitempty"` + Name string `json:"name,omitempty"` +} + +// ToOAuth1AuthorizeTokenMap formats an AuthorizeTokenOpts into an authorize token +// request. +func (opts AuthorizeTokenOpts) ToOAuth1AuthorizeTokenMap() (map[string]interface{}, error) { + for _, r := range opts.Roles { + if r == (Role{}) { + return nil, fmt.Errorf("role must not be empty") + } + } + return gophercloud.BuildRequestBody(opts, "") +} + +// AuthorizeToken authorizes an unauthorized consumer token. +func AuthorizeToken(client *gophercloud.ServiceClient, id string, opts AuthorizeTokenOptsBuilder) (r AuthorizeTokenResult) { + b, err := opts.ToOAuth1AuthorizeTokenMap() + if err != nil { + r.Err = err + return + } + resp, err := client.Put(authorizeTokenURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + OkCodes: []int{200}, + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// CreateAccessTokenOptsBuilder allows extensions to add additional parameters +// to the CreateAccessToken request. +type CreateAccessTokenOptsBuilder interface { + ToOAuth1CreateAccessTokenHeaders(string, string) (map[string]string, error) +} + +// CreateAccessTokenOpts provides options used to create an OAuth1 token. +type CreateAccessTokenOpts struct { + // OAuthConsumerKey is the OAuth1 Consumer Key. + OAuthConsumerKey string `q:"oauth_consumer_key" required:"true"` + + // OAuthConsumerSecret is the OAuth1 Consumer Secret. Used to generate + // an OAuth1 request signature. + OAuthConsumerSecret string `required:"true"` + + // OAuthToken is the OAuth1 Request Token. + OAuthToken string `q:"oauth_token" required:"true"` + + // OAuthTokenSecret is the OAuth1 Request Token Secret. Used to generate + // an OAuth1 request signature. + OAuthTokenSecret string `required:"true"` + + // OAuthVerifier is the OAuth1 verification code. + OAuthVerifier string `q:"oauth_verifier" required:"true"` + + // OAuthSignatureMethod is the OAuth1 signature method the Consumer used + // to sign the request. Supported values are "HMAC-SHA1" or "PLAINTEXT". + // "PLAINTEXT" is not recommended for production usage. + OAuthSignatureMethod SignatureMethod `q:"oauth_signature_method" required:"true"` + + // OAuthTimestamp is an OAuth1 request timestamp. If nil, current Unix + // timestamp will be used. + OAuthTimestamp *time.Time + + // OAuthNonce is an OAuth1 request nonce. Nonce must be a random string, + // uniquely generated for each request. Will be generated automatically + // when it is not set. + OAuthNonce string `q:"oauth_nonce"` +} + +// ToOAuth1CreateAccessTokenHeaders formats a CreateAccessTokenOpts into a map of +// request headers. +func (opts CreateAccessTokenOpts) ToOAuth1CreateAccessTokenHeaders(method, u string) (map[string]string, error) { + q, err := buildOAuth1QueryString(opts, opts.OAuthTimestamp, "") + if err != nil { + return nil, err + } + + signatureKeys := []string{opts.OAuthConsumerSecret, opts.OAuthTokenSecret} + stringToSign := buildStringToSign(method, u, q.Query()) + signature := url.QueryEscape(signString(opts.OAuthSignatureMethod, stringToSign, signatureKeys)) + authHeader := buildAuthHeader(q.Query(), signature) + + headers := map[string]string{ + "Authorization": authHeader, + } + + return headers, nil +} + +// CreateAccessToken creates a new OAuth1 Access Token +func CreateAccessToken(client *gophercloud.ServiceClient, opts CreateAccessTokenOptsBuilder) (r TokenResult) { + h, err := opts.ToOAuth1CreateAccessTokenHeaders("POST", createAccessTokenURL(client)) + if err != nil { + r.Err = err + return + } + + resp, err := client.Post(createAccessTokenURL(client), nil, nil, &gophercloud.RequestOpts{ + MoreHeaders: h, + OkCodes: []int{201}, + KeepResponseBody: true, + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + if r.Err != nil { + return + } + defer resp.Body.Close() + if v := r.Header.Get("Content-Type"); v != OAuth1TokenContentType { + r.Err = fmt.Errorf("unsupported Content-Type: %q", v) + return + } + r.Body, r.Err = ioutil.ReadAll(resp.Body) + return +} + +// GetAccessToken retrieves details on a single OAuth1 access token by an ID. +func GetAccessToken(client *gophercloud.ServiceClient, userID string, id string) (r GetAccessTokenResult) { + resp, err := client.Get(userAccessTokenURL(client, userID, id), &r.Body, nil) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// RevokeAccessToken revokes an OAuth1 access token. +func RevokeAccessToken(client *gophercloud.ServiceClient, userID string, id string) (r RevokeAccessTokenResult) { + resp, err := client.Delete(userAccessTokenURL(client, userID, id), nil) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// ListAccessTokens enumerates authorized access tokens. +func ListAccessTokens(client *gophercloud.ServiceClient, userID string) pagination.Pager { + url := userAccessTokensURL(client, userID) + return pagination.NewPager(client, url, func(r pagination.PageResult) pagination.Page { + return AccessTokensPage{pagination.LinkedPageBase{PageResult: r}} + }) +} + +// ListAccessTokenRoles enumerates authorized access token roles. +func ListAccessTokenRoles(client *gophercloud.ServiceClient, userID string, id string) pagination.Pager { + url := userAccessTokenRolesURL(client, userID, id) + return pagination.NewPager(client, url, func(r pagination.PageResult) pagination.Page { + return AccessTokenRolesPage{pagination.LinkedPageBase{PageResult: r}} + }) +} + +// GetAccessTokenRole retrieves details on a single OAuth1 access token role by +// an ID. +func GetAccessTokenRole(client *gophercloud.ServiceClient, userID string, id string, roleID string) (r GetAccessTokenRoleResult) { + resp, err := client.Get(userAccessTokenRoleURL(client, userID, id, roleID), &r.Body, nil) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// The following are small helper functions used to help build the signature. + +// buildOAuth1QueryString builds a URLEncoded parameters string specific for +// OAuth1-based requests. +func buildOAuth1QueryString(opts interface{}, timestamp *time.Time, callback string) (*url.URL, error) { + q, err := gophercloud.BuildQueryString(opts) + if err != nil { + return nil, err + } + + query := q.Query() + + if timestamp != nil { + // use provided timestamp + query.Set("oauth_timestamp", strconv.FormatInt(timestamp.Unix(), 10)) + } else { + // use current timestamp + query.Set("oauth_timestamp", strconv.FormatInt(time.Now().UTC().Unix(), 10)) + } + + if query.Get("oauth_nonce") == "" { + // when nonce is not set, generate a random one + query.Set("oauth_nonce", strconv.FormatInt(rand.Int63(), 10)+query.Get("oauth_timestamp")) + } + + if callback != "" { + query.Set("oauth_callback", callback) + } + query.Set("oauth_version", "1.0") + + return &url.URL{RawQuery: query.Encode()}, nil +} + +// buildStringToSign builds a string to be signed. +func buildStringToSign(method string, u string, query url.Values) []byte { + parsedURL, _ := url.Parse(u) + p := parsedURL.Port() + s := parsedURL.Scheme + + // Default scheme port must be stripped + if s == "http" && p == "80" || s == "https" && p == "443" { + parsedURL.Host = strings.TrimSuffix(parsedURL.Host, ":"+p) + } + + // Ensure that URL doesn't contain queries + parsedURL.RawQuery = "" + + v := strings.Join( + []string{method, url.QueryEscape(parsedURL.String()), url.QueryEscape(query.Encode())}, "&") + + return []byte(v) +} + +// signString signs a string using an OAuth1 signature method. +func signString(signatureMethod SignatureMethod, strToSign []byte, signatureKeys []string) string { + var key []byte + for i, k := range signatureKeys { + key = append(key, []byte(url.QueryEscape(k))...) + if i == 0 { + key = append(key, '&') + } + } + + var signedString string + switch signatureMethod { + case PLAINTEXT: + signedString = string(key) + default: + h := hmac.New(sha1.New, key) + h.Write(strToSign) + signedString = base64.StdEncoding.EncodeToString(h.Sum(nil)) + } + + return signedString +} + +// buildAuthHeader generates an OAuth1 Authorization header with a signature +// calculated using an OAuth1 signature method. +func buildAuthHeader(query url.Values, signature string) string { + var authHeader []string + var keys []string + for k := range query { + keys = append(keys, k) + } + sort.Strings(keys) + + for _, k := range keys { + for _, v := range query[k] { + authHeader = append(authHeader, fmt.Sprintf("%s=%q", k, url.QueryEscape(v))) + } + } + + authHeader = append(authHeader, fmt.Sprintf("oauth_signature=%q", signature)) + + return "OAuth " + strings.Join(authHeader, ", ") +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/oauth1/results.go b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/oauth1/results.go new file mode 100644 index 0000000..bb109e9 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/oauth1/results.go @@ -0,0 +1,305 @@ +package oauth1 + +import ( + "encoding/json" + "net/url" + "time" + + "github.com/gophercloud/gophercloud" + "github.com/gophercloud/gophercloud/pagination" +) + +// Consumer represents a delegated authorization request between two +// identities. +type Consumer struct { + ID string `json:"id"` + Secret string `json:"secret"` + Description string `json:"description"` +} + +type consumerResult struct { + gophercloud.Result +} + +// CreateConsumerResult is the response from a Create operation. Call its +// Extract method to interpret it as a Consumer. +type CreateConsumerResult struct { + consumerResult +} + +// UpdateConsumerResult is the response from a Create operation. Call its +// Extract method to interpret it as a Consumer. +type UpdateConsumerResult struct { + consumerResult +} + +// DeleteConsumerResult is the response from a Delete operation. Call its +// ExtractErr to determine if the request succeeded or failed. +type DeleteConsumerResult struct { + gophercloud.ErrResult +} + +// ConsumersPage is a single page of Region results. +type ConsumersPage struct { + pagination.LinkedPageBase +} + +// GetConsumerResult is the response from a Get operation. Call its Extract +// method to interpret it as a Consumer. +type GetConsumerResult struct { + consumerResult +} + +// IsEmpty determines whether or not a page of Consumers contains any results. +func (c ConsumersPage) IsEmpty() (bool, error) { + consumers, err := ExtractConsumers(c) + return len(consumers) == 0, err +} + +// NextPageURL extracts the "next" link from the links section of the result. +func (c ConsumersPage) NextPageURL() (string, error) { + var s struct { + Links struct { + Next string `json:"next"` + Previous string `json:"previous"` + } `json:"links"` + } + err := c.ExtractInto(&s) + if err != nil { + return "", err + } + return s.Links.Next, err +} + +// ExtractConsumers returns a slice of Consumers contained in a single page of +// results. +func ExtractConsumers(r pagination.Page) ([]Consumer, error) { + var s struct { + Consumers []Consumer `json:"consumers"` + } + err := (r.(ConsumersPage)).ExtractInto(&s) + return s.Consumers, err +} + +// Extract interprets any consumer result as a Consumer. +func (c consumerResult) Extract() (*Consumer, error) { + var s struct { + Consumer *Consumer `json:"consumer"` + } + err := c.ExtractInto(&s) + return s.Consumer, err +} + +// Token contains an OAuth1 token. +type Token struct { + // OAuthToken is the key value for the oauth token that the Identity API returns. + OAuthToken string `q:"oauth_token"` + // OAuthTokenSecret is the secret value associated with the OAuth Token. + OAuthTokenSecret string `q:"oauth_token_secret"` + // OAUthExpiresAt is the date and time when an OAuth token expires. + OAUthExpiresAt *time.Time `q:"-"` +} + +// TokenResult is a struct to handle +// "Content-Type: application/x-www-form-urlencoded" response. +type TokenResult struct { + gophercloud.Result + Body []byte +} + +// Extract interprets any OAuth1 token result as a Token. +func (r TokenResult) Extract() (*Token, error) { + if r.Err != nil { + return nil, r.Err + } + + values, err := url.ParseQuery(string(r.Body)) + if err != nil { + return nil, err + } + + token := &Token{ + OAuthToken: values.Get("oauth_token"), + OAuthTokenSecret: values.Get("oauth_token_secret"), + } + + if v := values.Get("oauth_expires_at"); v != "" { + if t, err := time.Parse(gophercloud.RFC3339Milli, v); err != nil { + return nil, err + } else { + token.OAUthExpiresAt = &t + } + } + + return token, nil +} + +// AuthorizedToken contains an OAuth1 authorized token info. +type AuthorizedToken struct { + // OAuthVerifier is the ID of the token verifier. + OAuthVerifier string `json:"oauth_verifier"` +} + +type AuthorizeTokenResult struct { + gophercloud.Result +} + +// Extract interprets AuthorizeTokenResult result as a AuthorizedToken. +func (r AuthorizeTokenResult) Extract() (*AuthorizedToken, error) { + var s struct { + AuthorizedToken *AuthorizedToken `json:"token"` + } + err := r.ExtractInto(&s) + return s.AuthorizedToken, err +} + +// AccessToken represents an AccessToken response as a struct. +type AccessToken struct { + ID string `json:"id"` + ConsumerID string `json:"consumer_id"` + ProjectID string `json:"project_id"` + AuthorizingUserID string `json:"authorizing_user_id"` + ExpiresAt *time.Time `json:"-"` +} + +func (r *AccessToken) UnmarshalJSON(b []byte) error { + type tmp AccessToken + var s struct { + tmp + ExpiresAt *gophercloud.JSONRFC3339Milli `json:"expires_at"` + } + err := json.Unmarshal(b, &s) + if err != nil { + return err + } + *r = AccessToken(s.tmp) + + if s.ExpiresAt != nil { + t := time.Time(*s.ExpiresAt) + r.ExpiresAt = &t + } + + return nil +} + +type GetAccessTokenResult struct { + gophercloud.Result +} + +// Extract interprets any GetAccessTokenResult result as an AccessToken. +func (r GetAccessTokenResult) Extract() (*AccessToken, error) { + var s struct { + AccessToken *AccessToken `json:"access_token"` + } + err := r.ExtractInto(&s) + return s.AccessToken, err +} + +// RevokeAccessTokenResult is the response from a Delete operation. Call its +// ExtractErr to determine if the request succeeded or failed. +type RevokeAccessTokenResult struct { + gophercloud.ErrResult +} + +// AccessTokensPage is a single page of Access Tokens results. +type AccessTokensPage struct { + pagination.LinkedPageBase +} + +// IsEmpty determines whether or not a an AccessTokensPage contains any results. +func (r AccessTokensPage) IsEmpty() (bool, error) { + accessTokens, err := ExtractAccessTokens(r) + return len(accessTokens) == 0, err +} + +// NextPageURL extracts the "next" link from the links section of the result. +func (r AccessTokensPage) NextPageURL() (string, error) { + var s struct { + Links struct { + Next string `json:"next"` + Previous string `json:"previous"` + } `json:"links"` + } + err := r.ExtractInto(&s) + if err != nil { + return "", err + } + return s.Links.Next, err +} + +// ExtractAccessTokens returns a slice of AccessTokens contained in a single +// page of results. +func ExtractAccessTokens(r pagination.Page) ([]AccessToken, error) { + var s struct { + AccessTokens []AccessToken `json:"access_tokens"` + } + err := (r.(AccessTokensPage)).ExtractInto(&s) + return s.AccessTokens, err +} + +// AccessTokenRole represents an Access Token Role struct. +type AccessTokenRole struct { + ID string `json:"id"` + Name string `json:"name"` + DomainID string `json:"domain_id"` +} + +// AccessTokenRolesPage is a single page of Access Token roles results. +type AccessTokenRolesPage struct { + pagination.LinkedPageBase +} + +// IsEmpty determines whether or not a an AccessTokensPage contains any results. +func (r AccessTokenRolesPage) IsEmpty() (bool, error) { + accessTokenRoles, err := ExtractAccessTokenRoles(r) + return len(accessTokenRoles) == 0, err +} + +// NextPageURL extracts the "next" link from the links section of the result. +func (r AccessTokenRolesPage) NextPageURL() (string, error) { + var s struct { + Links struct { + Next string `json:"next"` + Previous string `json:"previous"` + } `json:"links"` + } + err := r.ExtractInto(&s) + if err != nil { + return "", err + } + return s.Links.Next, err +} + +// ExtractAccessTokenRoles returns a slice of AccessTokenRole contained in a +// single page of results. +func ExtractAccessTokenRoles(r pagination.Page) ([]AccessTokenRole, error) { + var s struct { + AccessTokenRoles []AccessTokenRole `json:"roles"` + } + err := (r.(AccessTokenRolesPage)).ExtractInto(&s) + return s.AccessTokenRoles, err +} + +type GetAccessTokenRoleResult struct { + gophercloud.Result +} + +// Extract interprets any GetAccessTokenRoleResult result as an AccessTokenRole. +func (r GetAccessTokenRoleResult) Extract() (*AccessTokenRole, error) { + var s struct { + AccessTokenRole *AccessTokenRole `json:"role"` + } + err := r.ExtractInto(&s) + return s.AccessTokenRole, err +} + +// OAuth1 is an OAuth1 object, returned in OAuth1 token result. +type OAuth1 struct { + AccessTokenID string `json:"access_token_id"` + ConsumerID string `json:"consumer_id"` +} + +// TokenExt represents an extension of the base token result. +type TokenExt struct { + OAuth1 OAuth1 `json:"OS-OAUTH1"` +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/oauth1/urls.go b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/oauth1/urls.go new file mode 100644 index 0000000..9b51d53 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/oauth1/urls.go @@ -0,0 +1,43 @@ +package oauth1 + +import "github.com/gophercloud/gophercloud" + +func consumersURL(c *gophercloud.ServiceClient) string { + return c.ServiceURL("OS-OAUTH1", "consumers") +} + +func consumerURL(c *gophercloud.ServiceClient, id string) string { + return c.ServiceURL("OS-OAUTH1", "consumers", id) +} + +func requestTokenURL(c *gophercloud.ServiceClient) string { + return c.ServiceURL("OS-OAUTH1", "request_token") +} + +func authorizeTokenURL(c *gophercloud.ServiceClient, id string) string { + return c.ServiceURL("OS-OAUTH1", "authorize", id) +} + +func createAccessTokenURL(c *gophercloud.ServiceClient) string { + return c.ServiceURL("OS-OAUTH1", "access_token") +} + +func userAccessTokensURL(c *gophercloud.ServiceClient, userID string) string { + return c.ServiceURL("users", userID, "OS-OAUTH1", "access_tokens") +} + +func userAccessTokenURL(c *gophercloud.ServiceClient, userID string, id string) string { + return c.ServiceURL("users", userID, "OS-OAUTH1", "access_tokens", id) +} + +func userAccessTokenRolesURL(c *gophercloud.ServiceClient, userID string, id string) string { + return c.ServiceURL("users", userID, "OS-OAUTH1", "access_tokens", id, "roles") +} + +func userAccessTokenRoleURL(c *gophercloud.ServiceClient, userID string, id string, roleID string) string { + return c.ServiceURL("users", userID, "OS-OAUTH1", "access_tokens", id, "roles", roleID) +} + +func authURL(c *gophercloud.ServiceClient) string { + return c.ServiceURL("auth", "tokens") +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/tokens/doc.go b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/tokens/doc.go new file mode 100644 index 0000000..966e128 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/tokens/doc.go @@ -0,0 +1,108 @@ +/* +Package tokens provides information and interaction with the token API +resource for the OpenStack Identity service. + +For more information, see: +http://developer.openstack.org/api-ref-identity-v3.html#tokens-v3 + +Example to Create a Token From a Username and Password + + authOptions := tokens.AuthOptions{ + UserID: "username", + Password: "password", + } + + token, err := tokens.Create(identityClient, authOptions).ExtractToken() + if err != nil { + panic(err) + } + +Example to Create a Token From a Username, Password, and Domain + + authOptions := tokens.AuthOptions{ + UserID: "username", + Password: "password", + DomainID: "default", + } + + token, err := tokens.Create(identityClient, authOptions).ExtractToken() + if err != nil { + panic(err) + } + + authOptions = tokens.AuthOptions{ + UserID: "username", + Password: "password", + DomainName: "default", + } + + token, err = tokens.Create(identityClient, authOptions).ExtractToken() + if err != nil { + panic(err) + } + +Example to Create a Token From a Token + + authOptions := tokens.AuthOptions{ + TokenID: "token_id", + } + + token, err := tokens.Create(identityClient, authOptions).ExtractToken() + if err != nil { + panic(err) + } + +Example to Create a Token from a Username and Password with Project ID Scope + + scope := tokens.Scope{ + ProjectID: "0fe36e73809d46aeae6705c39077b1b3", + } + + authOptions := tokens.AuthOptions{ + Scope: &scope, + UserID: "username", + Password: "password", + } + + token, err = tokens.Create(identityClient, authOptions).ExtractToken() + if err != nil { + panic(err) + } + +Example to Create a Token from a Username and Password with Domain ID Scope + + scope := tokens.Scope{ + DomainID: "default", + } + + authOptions := tokens.AuthOptions{ + Scope: &scope, + UserID: "username", + Password: "password", + } + + token, err = tokens.Create(identityClient, authOptions).ExtractToken() + if err != nil { + panic(err) + } + +Example to Create a Token from a Username and Password with Project Name Scope + + scope := tokens.Scope{ + ProjectName: "project_name", + DomainID: "default", + } + + authOptions := tokens.AuthOptions{ + Scope: &scope, + UserID: "username", + Password: "password", + } + + token, err = tokens.Create(identityClient, authOptions).ExtractToken() + if err != nil { + panic(err) + } + +*/ +package tokens diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/tokens/requests.go b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/tokens/requests.go new file mode 100644 index 0000000..d8c455d --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/tokens/requests.go @@ -0,0 +1,174 @@ +package tokens + +import "github.com/gophercloud/gophercloud" + +// Scope allows a created token to be limited to a specific domain or project. +type Scope struct { + ProjectID string + ProjectName string + DomainID string + DomainName string + System bool +} + +// AuthOptionsBuilder provides the ability for extensions to add additional +// parameters to AuthOptions. Extensions must satisfy all required methods. +type AuthOptionsBuilder interface { + // ToTokenV3CreateMap assembles the Create request body, returning an error + // if parameters are missing or inconsistent. + ToTokenV3CreateMap(map[string]interface{}) (map[string]interface{}, error) + ToTokenV3HeadersMap(map[string]interface{}) (map[string]string, error) + ToTokenV3ScopeMap() (map[string]interface{}, error) + CanReauth() bool +} + +// AuthOptions represents options for authenticating a user. +type AuthOptions struct { + // IdentityEndpoint specifies the HTTP endpoint that is required to work with + // the Identity API of the appropriate version. While it's ultimately needed + // by all of the identity services, it will often be populated by a + // provider-level function. + IdentityEndpoint string `json:"-"` + + // Username is required if using Identity V2 API. Consult with your provider's + // control panel to discover your account's username. In Identity V3, either + // UserID or a combination of Username and DomainID or DomainName are needed. + Username string `json:"username,omitempty"` + UserID string `json:"id,omitempty"` + + Password string `json:"password,omitempty"` + + // Passcode is used in TOTP authentication method + Passcode string `json:"passcode,omitempty"` + + // At most one of DomainID and DomainName must be provided if using Username + // with Identity V3. Otherwise, either are optional. + DomainID string `json:"-"` + DomainName string `json:"name,omitempty"` + + // AllowReauth should be set to true if you grant permission for Gophercloud + // to cache your credentials in memory, and to allow Gophercloud to attempt + // to re-authenticate automatically if/when your token expires. If you set + // it to false, it will not cache these settings, but re-authentication will + // not be possible. This setting defaults to false. + AllowReauth bool `json:"-"` + + // TokenID allows users to authenticate (possibly as another user) with an + // authentication token ID. + TokenID string `json:"-"` + + // Authentication through Application Credentials requires supplying name, project and secret + // For project we can use TenantID + ApplicationCredentialID string `json:"-"` + ApplicationCredentialName string `json:"-"` + ApplicationCredentialSecret string `json:"-"` + + Scope Scope `json:"-"` +} + +// ToTokenV3CreateMap builds a request body from AuthOptions. +func (opts *AuthOptions) ToTokenV3CreateMap(scope map[string]interface{}) (map[string]interface{}, error) { + gophercloudAuthOpts := gophercloud.AuthOptions{ + Username: opts.Username, + UserID: opts.UserID, + Password: opts.Password, + Passcode: opts.Passcode, + DomainID: opts.DomainID, + DomainName: opts.DomainName, + AllowReauth: opts.AllowReauth, + TokenID: opts.TokenID, + ApplicationCredentialID: opts.ApplicationCredentialID, + ApplicationCredentialName: opts.ApplicationCredentialName, + ApplicationCredentialSecret: opts.ApplicationCredentialSecret, + } + + return gophercloudAuthOpts.ToTokenV3CreateMap(scope) +} + +// ToTokenV3ScopeMap builds a scope request body from AuthOptions. +func (opts *AuthOptions) ToTokenV3ScopeMap() (map[string]interface{}, error) { + scope := gophercloud.AuthScope(opts.Scope) + + gophercloudAuthOpts := gophercloud.AuthOptions{ + Scope: &scope, + DomainID: opts.DomainID, + DomainName: opts.DomainName, + } + + return gophercloudAuthOpts.ToTokenV3ScopeMap() +} + +func (opts *AuthOptions) CanReauth() bool { + if opts.Passcode != "" { + // cannot reauth using TOTP passcode + return false + } + + return opts.AllowReauth +} + +// ToTokenV3HeadersMap allows AuthOptions to satisfy the AuthOptionsBuilder +// interface in the v3 tokens package. +func (opts *AuthOptions) ToTokenV3HeadersMap(map[string]interface{}) (map[string]string, error) { + return nil, nil +} + +func subjectTokenHeaders(subjectToken string) map[string]string { + return map[string]string{ + "X-Subject-Token": subjectToken, + } +} + +// Create authenticates and either generates a new token, or changes the Scope +// of an existing token. +func Create(c *gophercloud.ServiceClient, opts AuthOptionsBuilder) (r CreateResult) { + scope, err := opts.ToTokenV3ScopeMap() + if err != nil { + r.Err = err + return + } + + b, err := opts.ToTokenV3CreateMap(scope) + if err != nil { + r.Err = err + return + } + + resp, err := c.Post(tokenURL(c), b, &r.Body, &gophercloud.RequestOpts{ + MoreHeaders: map[string]string{"X-Auth-Token": ""}, + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// Get validates and retrieves information about another token. +func Get(c *gophercloud.ServiceClient, token string) (r GetResult) { + resp, err := c.Get(tokenURL(c), &r.Body, &gophercloud.RequestOpts{ + MoreHeaders: subjectTokenHeaders(token), + OkCodes: []int{200, 203}, + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// Validate determines if a specified token is valid or not. +func Validate(c *gophercloud.ServiceClient, token string) (bool, error) { + resp, err := c.Head(tokenURL(c), &gophercloud.RequestOpts{ + MoreHeaders: subjectTokenHeaders(token), + OkCodes: []int{200, 204, 404}, + }) + if err != nil { + return false, err + } + + return resp.StatusCode == 200 || resp.StatusCode == 204, nil +} + +// Revoke immediately makes specified token invalid. +func Revoke(c *gophercloud.ServiceClient, token string) (r RevokeResult) { + resp, err := c.Delete(tokenURL(c), &gophercloud.RequestOpts{ + MoreHeaders: subjectTokenHeaders(token), + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/tokens/results.go b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/tokens/results.go new file mode 100644 index 0000000..f1e17e9 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/tokens/results.go @@ -0,0 +1,194 @@ +package tokens + +import ( + "time" + + "github.com/gophercloud/gophercloud" +) + +// Endpoint represents a single API endpoint offered by a service. +// It matches either a public, internal or admin URL. +// If supported, it contains a region specifier, again if provided. +// The significance of the Region field will depend upon your provider. +type Endpoint struct { + ID string `json:"id"` + Region string `json:"region"` + RegionID string `json:"region_id"` + Interface string `json:"interface"` + URL string `json:"url"` +} + +// CatalogEntry provides a type-safe interface to an Identity API V3 service +// catalog listing. Each class of service, such as cloud DNS or block storage +// services, could have multiple CatalogEntry representing it (one by interface +// type, e.g public, admin or internal). +// +// Note: when looking for the desired service, try, whenever possible, to key +// off the type field. Otherwise, you'll tie the representation of the service +// to a specific provider. +type CatalogEntry struct { + // Service ID + ID string `json:"id"` + + // Name will contain the provider-specified name for the service. + Name string `json:"name"` + + // Type will contain a type string if OpenStack defines a type for the + // service. Otherwise, for provider-specific services, the provider may + // assign their own type strings. + Type string `json:"type"` + + // Endpoints will let the caller iterate over all the different endpoints that + // may exist for the service. + Endpoints []Endpoint `json:"endpoints"` +} + +// ServiceCatalog provides a view into the service catalog from a previous, +// successful authentication. +type ServiceCatalog struct { + Entries []CatalogEntry `json:"catalog"` +} + +// Domain provides information about the domain to which this token grants +// access. +type Domain struct { + ID string `json:"id"` + Name string `json:"name"` +} + +// User represents a user resource that exists in the Identity Service. +type User struct { + Domain Domain `json:"domain"` + ID string `json:"id"` + Name string `json:"name"` +} + +// Role provides information about roles to which User is authorized. +type Role struct { + ID string `json:"id"` + Name string `json:"name"` +} + +// Project provides information about project to which User is authorized. +type Project struct { + Domain Domain `json:"domain"` + ID string `json:"id"` + Name string `json:"name"` +} + +// commonResult is the response from a request. A commonResult has various +// methods which can be used to extract different details about the result. +type commonResult struct { + gophercloud.Result +} + +// Extract is a shortcut for ExtractToken. +// This function is deprecated and still present for backward compatibility. +func (r commonResult) Extract() (*Token, error) { + return r.ExtractToken() +} + +// ExtractToken interprets a commonResult as a Token. +func (r commonResult) ExtractToken() (*Token, error) { + var s Token + err := r.ExtractInto(&s) + if err != nil { + return nil, err + } + + // Parse the token itself from the stored headers. + s.ID = r.Header.Get("X-Subject-Token") + + return &s, err +} + +// ExtractTokenID implements the gophercloud.AuthResult interface. The returned +// string is the same as the ID field of the Token struct returned from +// ExtractToken(). +func (r CreateResult) ExtractTokenID() (string, error) { + return r.Header.Get("X-Subject-Token"), r.Err +} + +// ExtractTokenID implements the gophercloud.AuthResult interface. The returned +// string is the same as the ID field of the Token struct returned from +// ExtractToken(). +func (r GetResult) ExtractTokenID() (string, error) { + return r.Header.Get("X-Subject-Token"), r.Err +} + +// ExtractServiceCatalog returns the ServiceCatalog that was generated along +// with the user's Token. +func (r commonResult) ExtractServiceCatalog() (*ServiceCatalog, error) { + var s ServiceCatalog + err := r.ExtractInto(&s) + return &s, err +} + +// ExtractUser returns the User that is the owner of the Token. +func (r commonResult) ExtractUser() (*User, error) { + var s struct { + User *User `json:"user"` + } + err := r.ExtractInto(&s) + return s.User, err +} + +// ExtractRoles returns Roles to which User is authorized. +func (r commonResult) ExtractRoles() ([]Role, error) { + var s struct { + Roles []Role `json:"roles"` + } + err := r.ExtractInto(&s) + return s.Roles, err +} + +// ExtractProject returns Project to which User is authorized. +func (r commonResult) ExtractProject() (*Project, error) { + var s struct { + Project *Project `json:"project"` + } + err := r.ExtractInto(&s) + return s.Project, err +} + +// ExtractDomain returns Domain to which User is authorized. +func (r commonResult) ExtractDomain() (*Domain, error) { + var s struct { + Domain *Domain `json:"domain"` + } + err := r.ExtractInto(&s) + return s.Domain, err +} + +// CreateResult is the response from a Create request. Use ExtractToken() +// to interpret it as a Token, or ExtractServiceCatalog() to interpret it +// as a service catalog. +type CreateResult struct { + commonResult +} + +// GetResult is the response from a Get request. Use ExtractToken() +// to interpret it as a Token, or ExtractServiceCatalog() to interpret it +// as a service catalog. +type GetResult struct { + commonResult +} + +// RevokeResult is response from a Revoke request. +type RevokeResult struct { + commonResult +} + +// Token is a string that grants a user access to a controlled set of services +// in an OpenStack provider. Each Token is valid for a set length of time. +type Token struct { + // ID is the issued token. + ID string `json:"id"` + + // ExpiresAt is the timestamp at which this token will no longer be accepted. + ExpiresAt time.Time `json:"expires_at"` +} + +func (r commonResult) ExtractInto(v interface{}) error { + return r.ExtractIntoStructPtr(v, "token") +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/tokens/urls.go b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/tokens/urls.go new file mode 100644 index 0000000..2f864a3 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/tokens/urls.go @@ -0,0 +1,7 @@ +package tokens + +import "github.com/gophercloud/gophercloud" + +func tokenURL(c *gophercloud.ServiceClient) string { + return c.ServiceURL("auth", "tokens") +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/imagedata/doc.go b/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/imagedata/doc.go new file mode 100644 index 0000000..a9d7a58 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/imagedata/doc.go @@ -0,0 +1,51 @@ +/* +Package imagedata enables management of image data. + +Example to Upload Image Data + + imageID := "da3b75d9-3f4a-40e7-8a2c-bfab23927dea" + + imageData, err := os.Open("/path/to/image/file") + if err != nil { + panic(err) + } + defer imageData.Close() + + err = imagedata.Upload(imageClient, imageID, imageData).ExtractErr() + if err != nil { + panic(err) + } + +Example to Stage Image Data + + imageID := "da3b75d9-3f4a-40e7-8a2c-bfab23927dea" + + imageData, err := os.Open("/path/to/image/file") + if err != nil { + panic(err) + } + defer imageData.Close() + + err = imagedata.Stage(imageClient, imageID, imageData).ExtractErr() + if err != nil { + panic(err) + } + +Example to Download Image Data + + imageID := "da3b75d9-3f4a-40e7-8a2c-bfab23927dea" + + image, err := imagedata.Download(imageClient, imageID).Extract() + if err != nil { + panic(err) + } + + // close the reader, when reading has finished + defer image.Close() + + imageData, err := ioutil.ReadAll(image) + if err != nil { + panic(err) + } +*/ +package imagedata diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/imagedata/requests.go b/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/imagedata/requests.go new file mode 100644 index 0000000..820a0c6 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/imagedata/requests.go @@ -0,0 +1,38 @@ +package imagedata + +import ( + "io" + + "github.com/gophercloud/gophercloud" +) + +// Upload uploads an image file. +func Upload(client *gophercloud.ServiceClient, id string, data io.Reader) (r UploadResult) { + resp, err := client.Put(uploadURL(client, id), data, nil, &gophercloud.RequestOpts{ + MoreHeaders: map[string]string{"Content-Type": "application/octet-stream"}, + OkCodes: []int{204}, + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// Stage performs PUT call on the existing image object in the Imageservice with +// the provided file. +// Existing image object must be in the "queued" status. +func Stage(client *gophercloud.ServiceClient, id string, data io.Reader) (r StageResult) { + resp, err := client.Put(stageURL(client, id), data, nil, &gophercloud.RequestOpts{ + MoreHeaders: map[string]string{"Content-Type": "application/octet-stream"}, + OkCodes: []int{204}, + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// Download retrieves an image. +func Download(client *gophercloud.ServiceClient, id string) (r DownloadResult) { + resp, err := client.Get(downloadURL(client, id), nil, &gophercloud.RequestOpts{ + KeepResponseBody: true, + }) + r.Body, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/imagedata/results.go b/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/imagedata/results.go new file mode 100644 index 0000000..d9632f2 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/imagedata/results.go @@ -0,0 +1,34 @@ +package imagedata + +import ( + "io" + + "github.com/gophercloud/gophercloud" +) + +// UploadResult is the result of an upload image operation. Call its ExtractErr +// method to determine if the request succeeded or failed. +type UploadResult struct { + gophercloud.ErrResult +} + +// StageResult is the result of a stage image operation. Call its ExtractErr +// method to determine if the request succeeded or failed. +type StageResult struct { + gophercloud.ErrResult +} + +// DownloadResult is the result of a download image operation. Call its Extract +// method to gain access to the image data. +type DownloadResult struct { + gophercloud.Result + Body io.ReadCloser +} + +// Extract builds images model from io.Reader +func (r DownloadResult) Extract() (io.ReadCloser, error) { + if r.Err != nil { + return nil, r.Err + } + return r.Body, nil +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/imagedata/urls.go b/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/imagedata/urls.go new file mode 100644 index 0000000..d9615ba --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/imagedata/urls.go @@ -0,0 +1,23 @@ +package imagedata + +import "github.com/gophercloud/gophercloud" + +const ( + rootPath = "images" + uploadPath = "file" + stagePath = "stage" +) + +// `imageDataURL(c,i)` is the URL for the binary image data for the +// image identified by ID `i` in the service `c`. +func uploadURL(c *gophercloud.ServiceClient, imageID string) string { + return c.ServiceURL(rootPath, imageID, uploadPath) +} + +func stageURL(c *gophercloud.ServiceClient, imageID string) string { + return c.ServiceURL(rootPath, imageID, stagePath) +} + +func downloadURL(c *gophercloud.ServiceClient, imageID string) string { + return uploadURL(c, imageID) +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/images/doc.go b/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/images/doc.go new file mode 100644 index 0000000..14da9ac --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/images/doc.go @@ -0,0 +1,60 @@ +/* +Package images enables management and retrieval of images from the OpenStack +Image Service. + +Example to List Images + + images.ListOpts{ + Owner: "a7509e1ae65945fda83f3e52c6296017", + } + + allPages, err := images.List(imagesClient, listOpts).AllPages() + if err != nil { + panic(err) + } + + allImages, err := images.ExtractImages(allPages) + if err != nil { + panic(err) + } + + for _, image := range allImages { + fmt.Printf("%+v\n", image) + } + +Example to Create an Image + + createOpts := images.CreateOpts{ + Name: "image_name", + Visibility: images.ImageVisibilityPrivate, + } + + image, err := images.Create(imageClient, createOpts) + if err != nil { + panic(err) + } + +Example to Update an Image + + imageID := "1bea47ed-f6a9-463b-b423-14b9cca9ad27" + + updateOpts := images.UpdateOpts{ + images.ReplaceImageName{ + NewName: "new_name", + }, + } + + image, err := images.Update(imageClient, imageID, updateOpts).Extract() + if err != nil { + panic(err) + } + +Example to Delete an Image + + imageID := "1bea47ed-f6a9-463b-b423-14b9cca9ad27" + err := images.Delete(imageClient, imageID).ExtractErr() + if err != nil { + panic(err) + } +*/ +package images diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/images/requests.go b/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/images/requests.go new file mode 100644 index 0000000..f0cd5cb --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/images/requests.go @@ -0,0 +1,384 @@ +package images + +import ( + "fmt" + "net/url" + "time" + + "github.com/gophercloud/gophercloud" + "github.com/gophercloud/gophercloud/pagination" +) + +// ListOptsBuilder allows extensions to add additional parameters to the +// List request. +type ListOptsBuilder interface { + ToImageListQuery() (string, error) +} + +// ListOpts allows the filtering and sorting of paginated collections through +// the API. Filtering is achieved by passing in struct field values that map to +// the server attributes you want to see returned. Marker and Limit are used +// for pagination. +// +// http://developer.openstack.org/api-ref-image-v2.html +type ListOpts struct { + // ID is the ID of the image. + // Multiple IDs can be specified by constructing a string + // such as "in:uuid1,uuid2,uuid3". + ID string `q:"id"` + + // Integer value for the limit of values to return. + Limit int `q:"limit"` + + // UUID of the server at which you want to set a marker. + Marker string `q:"marker"` + + // Name filters on the name of the image. + // Multiple names can be specified by constructing a string + // such as "in:name1,name2,name3". + Name string `q:"name"` + + // Visibility filters on the visibility of the image. + Visibility ImageVisibility `q:"visibility"` + + // MemberStatus filters on the member status of the image. + MemberStatus ImageMemberStatus `q:"member_status"` + + // Owner filters on the project ID of the image. + Owner string `q:"owner"` + + // Status filters on the status of the image. + // Multiple statuses can be specified by constructing a string + // such as "in:saving,queued". + Status ImageStatus `q:"status"` + + // SizeMin filters on the size_min image property. + SizeMin int64 `q:"size_min"` + + // SizeMax filters on the size_max image property. + SizeMax int64 `q:"size_max"` + + // Sort sorts the results using the new style of sorting. See the OpenStack + // Image API reference for the exact syntax. + // + // Sort cannot be used with the classic sort options (sort_key and sort_dir). + Sort string `q:"sort"` + + // SortKey will sort the results based on a specified image property. + SortKey string `q:"sort_key"` + + // SortDir will sort the list results either ascending or decending. + SortDir string `q:"sort_dir"` + + // Tags filters on specific image tags. + Tags []string `q:"tag"` + + // CreatedAtQuery filters images based on their creation date. + CreatedAtQuery *ImageDateQuery + + // UpdatedAtQuery filters images based on their updated date. + UpdatedAtQuery *ImageDateQuery + + // ContainerFormat filters images based on the container_format. + // Multiple container formats can be specified by constructing a + // string such as "in:bare,ami". + ContainerFormat string `q:"container_format"` + + // DiskFormat filters images based on the disk_format. + // Multiple disk formats can be specified by constructing a string + // such as "in:qcow2,iso". + DiskFormat string `q:"disk_format"` +} + +// ToImageListQuery formats a ListOpts into a query string. +func (opts ListOpts) ToImageListQuery() (string, error) { + q, err := gophercloud.BuildQueryString(opts) + params := q.Query() + + if opts.CreatedAtQuery != nil { + createdAt := opts.CreatedAtQuery.Date.Format(time.RFC3339) + if v := opts.CreatedAtQuery.Filter; v != "" { + createdAt = fmt.Sprintf("%s:%s", v, createdAt) + } + + params.Add("created_at", createdAt) + } + + if opts.UpdatedAtQuery != nil { + updatedAt := opts.UpdatedAtQuery.Date.Format(time.RFC3339) + if v := opts.UpdatedAtQuery.Filter; v != "" { + updatedAt = fmt.Sprintf("%s:%s", v, updatedAt) + } + + params.Add("updated_at", updatedAt) + } + + q = &url.URL{RawQuery: params.Encode()} + + return q.String(), err +} + +// List implements image list request. +func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { + url := listURL(c) + if opts != nil { + query, err := opts.ToImageListQuery() + if err != nil { + return pagination.Pager{Err: err} + } + url += query + } + return pagination.NewPager(c, url, func(r pagination.PageResult) pagination.Page { + imagePage := ImagePage{ + serviceURL: c.ServiceURL(), + LinkedPageBase: pagination.LinkedPageBase{PageResult: r}, + } + + return imagePage + }) +} + +// CreateOptsBuilder allows extensions to add parameters to the Create request. +type CreateOptsBuilder interface { + // Returns value that can be passed to json.Marshal + ToImageCreateMap() (map[string]interface{}, error) +} + +// CreateOpts represents options used to create an image. +type CreateOpts struct { + // Name is the name of the new image. + Name string `json:"name" required:"true"` + + // Id is the the image ID. + ID string `json:"id,omitempty"` + + // Visibility defines who can see/use the image. + Visibility *ImageVisibility `json:"visibility,omitempty"` + + // Tags is a set of image tags. + Tags []string `json:"tags,omitempty"` + + // ContainerFormat is the format of the + // container. Valid values are ami, ari, aki, bare, and ovf. + ContainerFormat string `json:"container_format,omitempty"` + + // DiskFormat is the format of the disk. If set, + // valid values are ami, ari, aki, vhd, vmdk, raw, qcow2, vdi, + // and iso. + DiskFormat string `json:"disk_format,omitempty"` + + // MinDisk is the amount of disk space in + // GB that is required to boot the image. + MinDisk int `json:"min_disk,omitempty"` + + // MinRAM is the amount of RAM in MB that + // is required to boot the image. + MinRAM int `json:"min_ram,omitempty"` + + // protected is whether the image is not deletable. + Protected *bool `json:"protected,omitempty"` + + // properties is a set of properties, if any, that + // are associated with the image. + Properties map[string]string `json:"-"` +} + +// ToImageCreateMap assembles a request body based on the contents of +// a CreateOpts. +func (opts CreateOpts) ToImageCreateMap() (map[string]interface{}, error) { + b, err := gophercloud.BuildRequestBody(opts, "") + if err != nil { + return nil, err + } + + if opts.Properties != nil { + for k, v := range opts.Properties { + b[k] = v + } + } + return b, nil +} + +// Create implements create image request. +func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { + b, err := opts.ToImageCreateMap() + if err != nil { + r.Err = err + return r + } + resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{OkCodes: []int{201}}) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// Delete implements image delete request. +func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(deleteURL(client, id), nil) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// Get implements image get request. +func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(getURL(client, id), &r.Body, nil) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// Update implements image updated request. +func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { + b, err := opts.ToImageUpdateMap() + if err != nil { + r.Err = err + return r + } + resp, err := client.Patch(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + OkCodes: []int{200}, + MoreHeaders: map[string]string{"Content-Type": "application/openstack-images-v2.1-json-patch"}, + }) + _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) + return +} + +// UpdateOptsBuilder allows extensions to add additional parameters to the +// Update request. +type UpdateOptsBuilder interface { + // returns value implementing json.Marshaler which when marshaled matches + // the patch schema: + // http://specs.openstack.org/openstack/glance-specs/specs/api/v2/http-patch-image-api-v2.html + ToImageUpdateMap() ([]interface{}, error) +} + +// UpdateOpts implements UpdateOpts +type UpdateOpts []Patch + +// ToImageUpdateMap assembles a request body based on the contents of +// UpdateOpts. +func (opts UpdateOpts) ToImageUpdateMap() ([]interface{}, error) { + m := make([]interface{}, len(opts)) + for i, patch := range opts { + patchJSON := patch.ToImagePatchMap() + m[i] = patchJSON + } + return m, nil +} + +// Patch represents a single update to an existing image. Multiple updates +// to an image can be submitted at the same time. +type Patch interface { + ToImagePatchMap() map[string]interface{} +} + +// UpdateVisibility represents an updated visibility property request. +type UpdateVisibility struct { + Visibility ImageVisibility +} + +// ToImagePatchMap assembles a request body based on UpdateVisibility. +func (r UpdateVisibility) ToImagePatchMap() map[string]interface{} { + return map[string]interface{}{ + "op": "replace", + "path": "/visibility", + "value": r.Visibility, + } +} + +// ReplaceImageName represents an updated image_name property request. +type ReplaceImageName struct { + NewName string +} + +// ToImagePatchMap assembles a request body based on ReplaceImageName. +func (r ReplaceImageName) ToImagePatchMap() map[string]interface{} { + return map[string]interface{}{ + "op": "replace", + "path": "/name", + "value": r.NewName, + } +} + +// ReplaceImageChecksum represents an updated checksum property request. +type ReplaceImageChecksum struct { + Checksum string +} + +// ReplaceImageChecksum assembles a request body based on ReplaceImageChecksum. +func (r ReplaceImageChecksum) ToImagePatchMap() map[string]interface{} { + return map[string]interface{}{ + "op": "replace", + "path": "/checksum", + "value": r.Checksum, + } +} + +// ReplaceImageTags represents an updated tags property request. +type ReplaceImageTags struct { + NewTags []string +} + +// ToImagePatchMap assembles a request body based on ReplaceImageTags. +func (r ReplaceImageTags) ToImagePatchMap() map[string]interface{} { + return map[string]interface{}{ + "op": "replace", + "path": "/tags", + "value": r.NewTags, + } +} + +// ReplaceImageMinDisk represents an updated min_disk property request. +type ReplaceImageMinDisk struct { + NewMinDisk int +} + +// ToImagePatchMap assembles a request body based on ReplaceImageTags. +func (r ReplaceImageMinDisk) ToImagePatchMap() map[string]interface{} { + return map[string]interface{}{ + "op": "replace", + "path": "/min_disk", + "value": r.NewMinDisk, + } +} + +// ReplaceImageMinRam represents an updated min_ram property request. +type ReplaceImageMinRam struct { + NewMinRam int +} + +// ToImagePatchMap assembles a request body based on ReplaceImageTags. +func (r ReplaceImageMinRam) ToImagePatchMap() map[string]interface{} { + return map[string]interface{}{ + "op": "replace", + "path": "/min_ram", + "value": r.NewMinRam, + } +} + +// UpdateOp represents a valid update operation. +type UpdateOp string + +const ( + AddOp UpdateOp = "add" + ReplaceOp UpdateOp = "replace" + RemoveOp UpdateOp = "remove" +) + +// UpdateImageProperty represents an update property request. +type UpdateImageProperty struct { + Op UpdateOp + Name string + Value string +} + +// ToImagePatchMap assembles a request body based on UpdateImageProperty. +func (r UpdateImageProperty) ToImagePatchMap() map[string]interface{} { + updateMap := map[string]interface{}{ + "op": r.Op, + "path": fmt.Sprintf("/%s", r.Name), + } + + if r.Op != RemoveOp { + updateMap["value"] = r.Value + } + + return updateMap +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/images/results.go b/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/images/results.go new file mode 100644 index 0000000..f445cc3 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/images/results.go @@ -0,0 +1,240 @@ +package images + +import ( + "encoding/json" + "fmt" + "reflect" + "strings" + "time" + + "github.com/gophercloud/gophercloud" + "github.com/gophercloud/gophercloud/internal" + "github.com/gophercloud/gophercloud/pagination" +) + +// Image represents an image found in the OpenStack Image service. +type Image struct { + // ID is the image UUID. + ID string `json:"id"` + + // Name is the human-readable display name for the image. + Name string `json:"name"` + + // Status is the image status. It can be "queued" or "active" + // See imageservice/v2/images/type.go + Status ImageStatus `json:"status"` + + // Tags is a list of image tags. Tags are arbitrarily defined strings + // attached to an image. + Tags []string `json:"tags"` + + // ContainerFormat is the format of the container. + // Valid values are ami, ari, aki, bare, and ovf. + ContainerFormat string `json:"container_format"` + + // DiskFormat is the format of the disk. + // If set, valid values are ami, ari, aki, vhd, vmdk, raw, qcow2, vdi, + // and iso. + DiskFormat string `json:"disk_format"` + + // MinDiskGigabytes is the amount of disk space in GB that is required to + // boot the image. + MinDiskGigabytes int `json:"min_disk"` + + // MinRAMMegabytes [optional] is the amount of RAM in MB that is required to + // boot the image. + MinRAMMegabytes int `json:"min_ram"` + + // Owner is the tenant ID the image belongs to. + Owner string `json:"owner"` + + // Protected is whether the image is deletable or not. + Protected bool `json:"protected"` + + // Visibility defines who can see/use the image. + Visibility ImageVisibility `json:"visibility"` + + // Checksum is the checksum of the data that's associated with the image. + Checksum string `json:"checksum"` + + // SizeBytes is the size of the data that's associated with the image. + SizeBytes int64 `json:"-"` + + // Metadata is a set of metadata associated with the image. + // Image metadata allow for meaningfully define the image properties + // and tags. + // See http://docs.openstack.org/developer/glance/metadefs-concepts.html. + Metadata map[string]string `json:"metadata"` + + // Properties is a set of key-value pairs, if any, that are associated with + // the image. + Properties map[string]interface{} + + // CreatedAt is the date when the image has been created. + CreatedAt time.Time `json:"created_at"` + + // UpdatedAt is the date when the last change has been made to the image or + // it's properties. + UpdatedAt time.Time `json:"updated_at"` + + // File is the trailing path after the glance endpoint that represent the + // location of the image or the path to retrieve it. + File string `json:"file"` + + // Schema is the path to the JSON-schema that represent the image or image + // entity. + Schema string `json:"schema"` + + // VirtualSize is the virtual size of the image + VirtualSize int64 `json:"virtual_size"` + + // OpenStackImageImportMethods is a slice listing the types of import + // methods available in the cloud. + OpenStackImageImportMethods []string `json:"-"` + // OpenStackImageStoreIDs is a slice listing the store IDs available in + // the cloud. + OpenStackImageStoreIDs []string `json:"-"` +} + +func (r *Image) UnmarshalJSON(b []byte) error { + type tmp Image + var s struct { + tmp + SizeBytes interface{} `json:"size"` + OpenStackImageImportMethods string `json:"openstack-image-import-methods"` + OpenStackImageStoreIDs string `json:"openstack-image-store-ids"` + } + err := json.Unmarshal(b, &s) + if err != nil { + return err + } + *r = Image(s.tmp) + + switch t := s.SizeBytes.(type) { + case nil: + r.SizeBytes = 0 + case float32: + r.SizeBytes = int64(t) + case float64: + r.SizeBytes = int64(t) + default: + return fmt.Errorf("Unknown type for SizeBytes: %v (value: %v)", reflect.TypeOf(t), t) + } + + // Bundle all other fields into Properties + var result interface{} + err = json.Unmarshal(b, &result) + if err != nil { + return err + } + if resultMap, ok := result.(map[string]interface{}); ok { + delete(resultMap, "self") + delete(resultMap, "size") + delete(resultMap, "openstack-image-import-methods") + delete(resultMap, "openstack-image-store-ids") + r.Properties = internal.RemainingKeys(Image{}, resultMap) + } + + if v := strings.FieldsFunc(strings.TrimSpace(s.OpenStackImageImportMethods), splitFunc); len(v) > 0 { + r.OpenStackImageImportMethods = v + } + if v := strings.FieldsFunc(strings.TrimSpace(s.OpenStackImageStoreIDs), splitFunc); len(v) > 0 { + r.OpenStackImageStoreIDs = v + } + + return err +} + +type commonResult struct { + gophercloud.Result +} + +// Extract interprets any commonResult as an Image. +func (r commonResult) Extract() (*Image, error) { + var s *Image + if v, ok := r.Body.(map[string]interface{}); ok { + for k, h := range r.Header { + if strings.ToLower(k) == "openstack-image-import-methods" { + for _, s := range h { + v["openstack-image-import-methods"] = s + } + } + if strings.ToLower(k) == "openstack-image-store-ids" { + for _, s := range h { + v["openstack-image-store-ids"] = s + } + } + } + } + err := r.ExtractInto(&s) + return s, err +} + +// CreateResult represents the result of a Create operation. Call its Extract +// method to interpret it as an Image. +type CreateResult struct { + commonResult +} + +// UpdateResult represents the result of an Update operation. Call its Extract +// method to interpret it as an Image. +type UpdateResult struct { + commonResult +} + +// GetResult represents the result of a Get operation. Call its Extract +// method to interpret it as an Image. +type GetResult struct { + commonResult +} + +// DeleteResult represents the result of a Delete operation. Call its +// ExtractErr method to interpret it as an Image. +type DeleteResult struct { + gophercloud.ErrResult +} + +// ImagePage represents the results of a List request. +type ImagePage struct { + serviceURL string + pagination.LinkedPageBase +} + +// IsEmpty returns true if an ImagePage contains no Images results. +func (r ImagePage) IsEmpty() (bool, error) { + images, err := ExtractImages(r) + return len(images) == 0, err +} + +// NextPageURL uses the response's embedded link reference to navigate to +// the next page of results. +func (r ImagePage) NextPageURL() (string, error) { + var s struct { + Next string `json:"next"` + } + err := r.ExtractInto(&s) + if err != nil { + return "", err + } + + if s.Next == "" { + return "", nil + } + + return nextPageURL(r.serviceURL, s.Next) +} + +// ExtractImages interprets the results of a single page from a List() call, +// producing a slice of Image entities. +func ExtractImages(r pagination.Page) ([]Image, error) { + var s struct { + Images []Image `json:"images"` + } + err := (r.(ImagePage)).ExtractInto(&s) + return s.Images, err +} + +// splitFunc is a helper function used to avoid a slice of empty strings. +func splitFunc(c rune) bool { + return c == ',' +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/images/types.go b/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/images/types.go new file mode 100644 index 0000000..147be19 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/images/types.go @@ -0,0 +1,108 @@ +package images + +import ( + "time" +) + +// ImageStatus image statuses +// http://docs.openstack.org/developer/glance/statuses.html +type ImageStatus string + +const ( + // ImageStatusQueued is a status for an image which identifier has + // been reserved for an image in the image registry. + ImageStatusQueued ImageStatus = "queued" + + // ImageStatusSaving denotes that an image’s raw data is currently being + // uploaded to Glance + ImageStatusSaving ImageStatus = "saving" + + // ImageStatusActive denotes an image that is fully available in Glance. + ImageStatusActive ImageStatus = "active" + + // ImageStatusKilled denotes that an error occurred during the uploading + // of an image’s data, and that the image is not readable. + ImageStatusKilled ImageStatus = "killed" + + // ImageStatusDeleted is used for an image that is no longer available to use. + // The image information is retained in the image registry. + ImageStatusDeleted ImageStatus = "deleted" + + // ImageStatusPendingDelete is similar to Delete, but the image is not yet + // deleted. + ImageStatusPendingDelete ImageStatus = "pending_delete" + + // ImageStatusDeactivated denotes that access to image data is not allowed to + // any non-admin user. + ImageStatusDeactivated ImageStatus = "deactivated" + + // ImageStatusImporting denotes that an import call has been made but that + // the image is not yet ready for use. + ImageStatusImporting ImageStatus = "importing" +) + +// ImageVisibility denotes an image that is fully available in Glance. +// This occurs when the image data is uploaded, or the image size is explicitly +// set to zero on creation. +// According to design +// https://wiki.openstack.org/wiki/Glance-v2-community-image-visibility-design +type ImageVisibility string + +const ( + // ImageVisibilityPublic all users + ImageVisibilityPublic ImageVisibility = "public" + + // ImageVisibilityPrivate users with tenantId == tenantId(owner) + ImageVisibilityPrivate ImageVisibility = "private" + + // ImageVisibilityShared images are visible to: + // - users with tenantId == tenantId(owner) + // - users with tenantId in the member-list of the image + // - users with tenantId in the member-list with member_status == 'accepted' + ImageVisibilityShared ImageVisibility = "shared" + + // ImageVisibilityCommunity images: + // - all users can see and boot it + // - users with tenantId in the member-list of the image with + // member_status == 'accepted' have this image in their default image-list. + ImageVisibilityCommunity ImageVisibility = "community" +) + +// MemberStatus is a status for adding a new member (tenant) to an image +// member list. +type ImageMemberStatus string + +const ( + // ImageMemberStatusAccepted is the status for an accepted image member. + ImageMemberStatusAccepted ImageMemberStatus = "accepted" + + // ImageMemberStatusPending shows that the member addition is pending + ImageMemberStatusPending ImageMemberStatus = "pending" + + // ImageMemberStatusAccepted is the status for a rejected image member + ImageMemberStatusRejected ImageMemberStatus = "rejected" + + // ImageMemberStatusAll + ImageMemberStatusAll ImageMemberStatus = "all" +) + +// ImageDateFilter represents a valid filter to use for filtering +// images by their date during a List. +type ImageDateFilter string + +const ( + FilterGT ImageDateFilter = "gt" + FilterGTE ImageDateFilter = "gte" + FilterLT ImageDateFilter = "lt" + FilterLTE ImageDateFilter = "lte" + FilterNEQ ImageDateFilter = "neq" + FilterEQ ImageDateFilter = "eq" +) + +// ImageDateQuery represents a date field to be used for listing images. +// If no filter is specified, the query will act as though FilterEQ was +// set. +type ImageDateQuery struct { + Date time.Time + Filter ImageDateFilter +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/images/urls.go b/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/images/urls.go new file mode 100644 index 0000000..1780c3c --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/images/urls.go @@ -0,0 +1,65 @@ +package images + +import ( + "net/url" + "strings" + + "github.com/gophercloud/gophercloud" + "github.com/gophercloud/gophercloud/openstack/utils" +) + +// `listURL` is a pure function. `listURL(c)` is a URL for which a GET +// request will respond with a list of images in the service `c`. +func listURL(c *gophercloud.ServiceClient) string { + return c.ServiceURL("images") +} + +func createURL(c *gophercloud.ServiceClient) string { + return c.ServiceURL("images") +} + +// `imageURL(c,i)` is the URL for the image identified by ID `i` in +// the service `c`. +func imageURL(c *gophercloud.ServiceClient, imageID string) string { + return c.ServiceURL("images", imageID) +} + +// `getURL(c,i)` is a URL for which a GET request will respond with +// information about the image identified by ID `i` in the service +// `c`. +func getURL(c *gophercloud.ServiceClient, imageID string) string { + return imageURL(c, imageID) +} + +func updateURL(c *gophercloud.ServiceClient, imageID string) string { + return imageURL(c, imageID) +} + +func deleteURL(c *gophercloud.ServiceClient, imageID string) string { + return imageURL(c, imageID) +} + +// builds next page full url based on current url +func nextPageURL(serviceURL, requestedNext string) (string, error) { + base, err := utils.BaseEndpoint(serviceURL) + if err != nil { + return "", err + } + + requestedNextURL, err := url.Parse(requestedNext) + if err != nil { + return "", err + } + + base = gophercloud.NormalizeURL(base) + nextPath := base + strings.TrimPrefix(requestedNextURL.Path, "/") + + nextURL, err := url.Parse(nextPath) + if err != nil { + return "", err + } + + nextURL.RawQuery = requestedNextURL.RawQuery + + return nextURL.String(), nil +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/utils/base_endpoint.go b/vendor/github.com/gophercloud/gophercloud/openstack/utils/base_endpoint.go new file mode 100644 index 0000000..40080f7 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/utils/base_endpoint.go @@ -0,0 +1,28 @@ +package utils + +import ( + "net/url" + "regexp" + "strings" +) + +// BaseEndpoint will return a URL without the /vX.Y +// portion of the URL. +func BaseEndpoint(endpoint string) (string, error) { + u, err := url.Parse(endpoint) + if err != nil { + return "", err + } + + u.RawQuery, u.Fragment = "", "" + + path := u.Path + versionRe := regexp.MustCompile("v[0-9.]+/?") + + if version := versionRe.FindString(path); version != "" { + versionIndex := strings.Index(path, version) + u.Path = path[:versionIndex] + } + + return u.String(), nil +} diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/utils/choose_version.go b/vendor/github.com/gophercloud/gophercloud/openstack/utils/choose_version.go new file mode 100644 index 0000000..27da19f --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/openstack/utils/choose_version.go @@ -0,0 +1,111 @@ +package utils + +import ( + "fmt" + "strings" + + "github.com/gophercloud/gophercloud" +) + +// Version is a supported API version, corresponding to a vN package within the appropriate service. +type Version struct { + ID string + Suffix string + Priority int +} + +var goodStatus = map[string]bool{ + "current": true, + "supported": true, + "stable": true, +} + +// ChooseVersion queries the base endpoint of an API to choose the most recent non-experimental alternative from a service's +// published versions. +// It returns the highest-Priority Version among the alternatives that are provided, as well as its corresponding endpoint. +func ChooseVersion(client *gophercloud.ProviderClient, recognized []*Version) (*Version, string, error) { + type linkResp struct { + Href string `json:"href"` + Rel string `json:"rel"` + } + + type valueResp struct { + ID string `json:"id"` + Status string `json:"status"` + Links []linkResp `json:"links"` + } + + type versionsResp struct { + Values []valueResp `json:"values"` + } + + type response struct { + Versions versionsResp `json:"versions"` + } + + normalize := func(endpoint string) string { + if !strings.HasSuffix(endpoint, "/") { + return endpoint + "/" + } + return endpoint + } + identityEndpoint := normalize(client.IdentityEndpoint) + + // If a full endpoint is specified, check version suffixes for a match first. + for _, v := range recognized { + if strings.HasSuffix(identityEndpoint, v.Suffix) { + return v, identityEndpoint, nil + } + } + + var resp response + _, err := client.Request("GET", client.IdentityBase, &gophercloud.RequestOpts{ + JSONResponse: &resp, + OkCodes: []int{200, 300}, + }) + + if err != nil { + return nil, "", err + } + + var highest *Version + var endpoint string + + for _, value := range resp.Versions.Values { + href := "" + for _, link := range value.Links { + if link.Rel == "self" { + href = normalize(link.Href) + } + } + + for _, version := range recognized { + if strings.Contains(value.ID, version.ID) { + // Prefer a version that exactly matches the provided endpoint. + if href == identityEndpoint { + if href == "" { + return nil, "", fmt.Errorf("Endpoint missing in version %s response from %s", value.ID, client.IdentityBase) + } + return version, href, nil + } + + // Otherwise, find the highest-priority version with a whitelisted status. + if goodStatus[strings.ToLower(value.Status)] { + if highest == nil || version.Priority > highest.Priority { + highest = version + endpoint = href + } + } + } + } + } + + if highest == nil { + return nil, "", fmt.Errorf("No supported version available from endpoint %s", client.IdentityBase) + } + if endpoint == "" { + return nil, "", fmt.Errorf("Endpoint missing in version %s response from %s", highest.ID, client.IdentityBase) + } + + return highest, endpoint, nil +} diff --git a/vendor/github.com/gophercloud/gophercloud/pagination/http.go b/vendor/github.com/gophercloud/gophercloud/pagination/http.go new file mode 100644 index 0000000..df35031 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/pagination/http.go @@ -0,0 +1,61 @@ +package pagination + +import ( + "encoding/json" + "io/ioutil" + "net/http" + "net/url" + "strings" + + "github.com/gophercloud/gophercloud" +) + +// PageResult stores the HTTP response that returned the current page of results. +type PageResult struct { + gophercloud.Result + url.URL +} + +// PageResultFrom parses an HTTP response as JSON and returns a PageResult containing the +// results, interpreting it as JSON if the content type indicates. +func PageResultFrom(resp *http.Response) (PageResult, error) { + var parsedBody interface{} + + defer resp.Body.Close() + rawBody, err := ioutil.ReadAll(resp.Body) + if err != nil { + return PageResult{}, err + } + + if strings.HasPrefix(resp.Header.Get("Content-Type"), "application/json") { + err = json.Unmarshal(rawBody, &parsedBody) + if err != nil { + return PageResult{}, err + } + } else { + parsedBody = rawBody + } + + return PageResultFromParsed(resp, parsedBody), err +} + +// PageResultFromParsed constructs a PageResult from an HTTP response that has already had its +// body parsed as JSON (and closed). +func PageResultFromParsed(resp *http.Response, body interface{}) PageResult { + return PageResult{ + Result: gophercloud.Result{ + Body: body, + Header: resp.Header, + }, + URL: *resp.Request.URL, + } +} + +// Request performs an HTTP request and extracts the http.Response from the result. +func Request(client *gophercloud.ServiceClient, headers map[string]string, url string) (*http.Response, error) { + return client.Get(url, nil, &gophercloud.RequestOpts{ + MoreHeaders: headers, + OkCodes: []int{200, 204, 300}, + KeepResponseBody: true, + }) +} diff --git a/vendor/github.com/gophercloud/gophercloud/pagination/linked.go b/vendor/github.com/gophercloud/gophercloud/pagination/linked.go new file mode 100644 index 0000000..3656fb7 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/pagination/linked.go @@ -0,0 +1,92 @@ +package pagination + +import ( + "fmt" + "reflect" + + "github.com/gophercloud/gophercloud" +) + +// LinkedPageBase may be embedded to implement a page that provides navigational "Next" and "Previous" links within its result. +type LinkedPageBase struct { + PageResult + + // LinkPath lists the keys that should be traversed within a response to arrive at the "next" pointer. + // If any link along the path is missing, an empty URL will be returned. + // If any link results in an unexpected value type, an error will be returned. + // When left as "nil", []string{"links", "next"} will be used as a default. + LinkPath []string +} + +// NextPageURL extracts the pagination structure from a JSON response and returns the "next" link, if one is present. +// It assumes that the links are available in a "links" element of the top-level response object. +// If this is not the case, override NextPageURL on your result type. +func (current LinkedPageBase) NextPageURL() (string, error) { + var path []string + var key string + + if current.LinkPath == nil { + path = []string{"links", "next"} + } else { + path = current.LinkPath + } + + submap, ok := current.Body.(map[string]interface{}) + if !ok { + err := gophercloud.ErrUnexpectedType{} + err.Expected = "map[string]interface{}" + err.Actual = fmt.Sprintf("%v", reflect.TypeOf(current.Body)) + return "", err + } + + for { + key, path = path[0], path[1:len(path)] + + value, ok := submap[key] + if !ok { + return "", nil + } + + if len(path) > 0 { + submap, ok = value.(map[string]interface{}) + if !ok { + err := gophercloud.ErrUnexpectedType{} + err.Expected = "map[string]interface{}" + err.Actual = fmt.Sprintf("%v", reflect.TypeOf(value)) + return "", err + } + } else { + if value == nil { + // Actual null element. + return "", nil + } + + url, ok := value.(string) + if !ok { + err := gophercloud.ErrUnexpectedType{} + err.Expected = "string" + err.Actual = fmt.Sprintf("%v", reflect.TypeOf(value)) + return "", err + } + + return url, nil + } + } +} + +// IsEmpty satisifies the IsEmpty method of the Page interface +func (current LinkedPageBase) IsEmpty() (bool, error) { + if b, ok := current.Body.([]interface{}); ok { + return len(b) == 0, nil + } + err := gophercloud.ErrUnexpectedType{} + err.Expected = "[]interface{}" + err.Actual = fmt.Sprintf("%v", reflect.TypeOf(current.Body)) + return true, err +} + +// GetBody returns the linked page's body. This method is needed to satisfy the +// Page interface. +func (current LinkedPageBase) GetBody() interface{} { + return current.Body +} diff --git a/vendor/github.com/gophercloud/gophercloud/pagination/marker.go b/vendor/github.com/gophercloud/gophercloud/pagination/marker.go new file mode 100644 index 0000000..52e53ba --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/pagination/marker.go @@ -0,0 +1,58 @@ +package pagination + +import ( + "fmt" + "reflect" + + "github.com/gophercloud/gophercloud" +) + +// MarkerPage is a stricter Page interface that describes additional functionality required for use with NewMarkerPager. +// For convenience, embed the MarkedPageBase struct. +type MarkerPage interface { + Page + + // LastMarker returns the last "marker" value on this page. + LastMarker() (string, error) +} + +// MarkerPageBase is a page in a collection that's paginated by "limit" and "marker" query parameters. +type MarkerPageBase struct { + PageResult + + // Owner is a reference to the embedding struct. + Owner MarkerPage +} + +// NextPageURL generates the URL for the page of results after this one. +func (current MarkerPageBase) NextPageURL() (string, error) { + currentURL := current.URL + + mark, err := current.Owner.LastMarker() + if err != nil { + return "", err + } + + q := currentURL.Query() + q.Set("marker", mark) + currentURL.RawQuery = q.Encode() + + return currentURL.String(), nil +} + +// IsEmpty satisifies the IsEmpty method of the Page interface +func (current MarkerPageBase) IsEmpty() (bool, error) { + if b, ok := current.Body.([]interface{}); ok { + return len(b) == 0, nil + } + err := gophercloud.ErrUnexpectedType{} + err.Expected = "[]interface{}" + err.Actual = fmt.Sprintf("%v", reflect.TypeOf(current.Body)) + return true, err +} + +// GetBody returns the linked page's body. This method is needed to satisfy the +// Page interface. +func (current MarkerPageBase) GetBody() interface{} { + return current.Body +} diff --git a/vendor/github.com/gophercloud/gophercloud/pagination/pager.go b/vendor/github.com/gophercloud/gophercloud/pagination/pager.go new file mode 100644 index 0000000..42c0b2d --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/pagination/pager.go @@ -0,0 +1,251 @@ +package pagination + +import ( + "errors" + "fmt" + "net/http" + "reflect" + "strings" + + "github.com/gophercloud/gophercloud" +) + +var ( + // ErrPageNotAvailable is returned from a Pager when a next or previous page is requested, but does not exist. + ErrPageNotAvailable = errors.New("The requested page does not exist.") +) + +// Page must be satisfied by the result type of any resource collection. +// It allows clients to interact with the resource uniformly, regardless of whether or not or how it's paginated. +// Generally, rather than implementing this interface directly, implementors should embed one of the concrete PageBase structs, +// instead. +// Depending on the pagination strategy of a particular resource, there may be an additional subinterface that the result type +// will need to implement. +type Page interface { + // NextPageURL generates the URL for the page of data that follows this collection. + // Return "" if no such page exists. + NextPageURL() (string, error) + + // IsEmpty returns true if this Page has no items in it. + IsEmpty() (bool, error) + + // GetBody returns the Page Body. This is used in the `AllPages` method. + GetBody() interface{} +} + +// Pager knows how to advance through a specific resource collection, one page at a time. +type Pager struct { + client *gophercloud.ServiceClient + + initialURL string + + createPage func(r PageResult) Page + + firstPage Page + + Err error + + // Headers supplies additional HTTP headers to populate on each paged request. + Headers map[string]string +} + +// NewPager constructs a manually-configured pager. +// Supply the URL for the first page, a function that requests a specific page given a URL, and a function that counts a page. +func NewPager(client *gophercloud.ServiceClient, initialURL string, createPage func(r PageResult) Page) Pager { + return Pager{ + client: client, + initialURL: initialURL, + createPage: createPage, + } +} + +// WithPageCreator returns a new Pager that substitutes a different page creation function. This is +// useful for overriding List functions in delegation. +func (p Pager) WithPageCreator(createPage func(r PageResult) Page) Pager { + return Pager{ + client: p.client, + initialURL: p.initialURL, + createPage: createPage, + } +} + +func (p Pager) fetchNextPage(url string) (Page, error) { + resp, err := Request(p.client, p.Headers, url) + if err != nil { + return nil, err + } + + remembered, err := PageResultFrom(resp) + if err != nil { + return nil, err + } + + return p.createPage(remembered), nil +} + +// EachPage iterates over each page returned by a Pager, yielding one at a time to a handler function. +// Return "false" from the handler to prematurely stop iterating. +func (p Pager) EachPage(handler func(Page) (bool, error)) error { + if p.Err != nil { + return p.Err + } + currentURL := p.initialURL + for { + var currentPage Page + + // if first page has already been fetched, no need to fetch it again + if p.firstPage != nil { + currentPage = p.firstPage + p.firstPage = nil + } else { + var err error + currentPage, err = p.fetchNextPage(currentURL) + if err != nil { + return err + } + } + + empty, err := currentPage.IsEmpty() + if err != nil { + return err + } + if empty { + return nil + } + + ok, err := handler(currentPage) + if err != nil { + return err + } + if !ok { + return nil + } + + currentURL, err = currentPage.NextPageURL() + if err != nil { + return err + } + if currentURL == "" { + return nil + } + } +} + +// AllPages returns all the pages from a `List` operation in a single page, +// allowing the user to retrieve all the pages at once. +func (p Pager) AllPages() (Page, error) { + // pagesSlice holds all the pages until they get converted into as Page Body. + var pagesSlice []interface{} + // body will contain the final concatenated Page body. + var body reflect.Value + + // Grab a first page to ascertain the page body type. + firstPage, err := p.fetchNextPage(p.initialURL) + if err != nil { + return nil, err + } + // Store the page type so we can use reflection to create a new mega-page of + // that type. + pageType := reflect.TypeOf(firstPage) + + // if it's a single page, just return the firstPage (first page) + if _, found := pageType.FieldByName("SinglePageBase"); found { + return firstPage, nil + } + + // store the first page to avoid getting it twice + p.firstPage = firstPage + + // Switch on the page body type. Recognized types are `map[string]interface{}`, + // `[]byte`, and `[]interface{}`. + switch pb := firstPage.GetBody().(type) { + case map[string]interface{}: + // key is the map key for the page body if the body type is `map[string]interface{}`. + var key string + // Iterate over the pages to concatenate the bodies. + err = p.EachPage(func(page Page) (bool, error) { + b := page.GetBody().(map[string]interface{}) + for k, v := range b { + // If it's a linked page, we don't want the `links`, we want the other one. + if !strings.HasSuffix(k, "links") { + // check the field's type. we only want []interface{} (which is really []map[string]interface{}) + switch vt := v.(type) { + case []interface{}: + key = k + pagesSlice = append(pagesSlice, vt...) + } + } + } + return true, nil + }) + if err != nil { + return nil, err + } + // Set body to value of type `map[string]interface{}` + body = reflect.MakeMap(reflect.MapOf(reflect.TypeOf(key), reflect.TypeOf(pagesSlice))) + body.SetMapIndex(reflect.ValueOf(key), reflect.ValueOf(pagesSlice)) + case []byte: + // Iterate over the pages to concatenate the bodies. + err = p.EachPage(func(page Page) (bool, error) { + b := page.GetBody().([]byte) + pagesSlice = append(pagesSlice, b) + // seperate pages with a comma + pagesSlice = append(pagesSlice, []byte{10}) + return true, nil + }) + if err != nil { + return nil, err + } + if len(pagesSlice) > 0 { + // Remove the trailing comma. + pagesSlice = pagesSlice[:len(pagesSlice)-1] + } + var b []byte + // Combine the slice of slices in to a single slice. + for _, slice := range pagesSlice { + b = append(b, slice.([]byte)...) + } + // Set body to value of type `bytes`. + body = reflect.New(reflect.TypeOf(b)).Elem() + body.SetBytes(b) + case []interface{}: + // Iterate over the pages to concatenate the bodies. + err = p.EachPage(func(page Page) (bool, error) { + b := page.GetBody().([]interface{}) + pagesSlice = append(pagesSlice, b...) + return true, nil + }) + if err != nil { + return nil, err + } + // Set body to value of type `[]interface{}` + body = reflect.MakeSlice(reflect.TypeOf(pagesSlice), len(pagesSlice), len(pagesSlice)) + for i, s := range pagesSlice { + body.Index(i).Set(reflect.ValueOf(s)) + } + default: + err := gophercloud.ErrUnexpectedType{} + err.Expected = "map[string]interface{}/[]byte/[]interface{}" + err.Actual = fmt.Sprintf("%T", pb) + return nil, err + } + + // Each `Extract*` function is expecting a specific type of page coming back, + // otherwise the type assertion in those functions will fail. pageType is needed + // to create a type in this method that has the same type that the `Extract*` + // function is expecting and set the Body of that object to the concatenated + // pages. + page := reflect.New(pageType) + // Set the page body to be the concatenated pages. + page.Elem().FieldByName("Body").Set(body) + // Set any additional headers that were pass along. The `objectstorage` pacakge, + // for example, passes a Content-Type header. + h := make(http.Header) + for k, v := range p.Headers { + h.Add(k, v) + } + page.Elem().FieldByName("Header").Set(reflect.ValueOf(h)) + // Type assert the page to a Page interface so that the type assertion in the + // `Extract*` methods will work. + return page.Elem().Interface().(Page), err +} diff --git a/vendor/github.com/gophercloud/gophercloud/pagination/pkg.go b/vendor/github.com/gophercloud/gophercloud/pagination/pkg.go new file mode 100644 index 0000000..912daea --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/pagination/pkg.go @@ -0,0 +1,4 @@ +/* +Package pagination contains utilities and convenience structs that implement common pagination idioms within OpenStack APIs. +*/ +package pagination diff --git a/vendor/github.com/gophercloud/gophercloud/pagination/single.go b/vendor/github.com/gophercloud/gophercloud/pagination/single.go new file mode 100644 index 0000000..4251d64 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/pagination/single.go @@ -0,0 +1,33 @@ +package pagination + +import ( + "fmt" + "reflect" + + "github.com/gophercloud/gophercloud" +) + +// SinglePageBase may be embedded in a Page that contains all of the results from an operation at once. +type SinglePageBase PageResult + +// NextPageURL always returns "" to indicate that there are no more pages to return. +func (current SinglePageBase) NextPageURL() (string, error) { + return "", nil +} + +// IsEmpty satisifies the IsEmpty method of the Page interface +func (current SinglePageBase) IsEmpty() (bool, error) { + if b, ok := current.Body.([]interface{}); ok { + return len(b) == 0, nil + } + err := gophercloud.ErrUnexpectedType{} + err.Expected = "[]interface{}" + err.Actual = fmt.Sprintf("%v", reflect.TypeOf(current.Body)) + return true, err +} + +// GetBody returns the single page's body. This method is needed to satisfy the +// Page interface. +func (current SinglePageBase) GetBody() interface{} { + return current.Body +} diff --git a/vendor/github.com/gophercloud/gophercloud/params.go b/vendor/github.com/gophercloud/gophercloud/params.go new file mode 100644 index 0000000..219c020 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/params.go @@ -0,0 +1,493 @@ +package gophercloud + +import ( + "encoding/json" + "fmt" + "net/url" + "reflect" + "strconv" + "strings" + "time" +) + +/* +BuildRequestBody builds a map[string]interface from the given `struct`. If +parent is not an empty string, the final map[string]interface returned will +encapsulate the built one. For example: + + disk := 1 + createOpts := flavors.CreateOpts{ + ID: "1", + Name: "m1.tiny", + Disk: &disk, + RAM: 512, + VCPUs: 1, + RxTxFactor: 1.0, + } + + body, err := gophercloud.BuildRequestBody(createOpts, "flavor") + +The above example can be run as-is, however it is recommended to look at how +BuildRequestBody is used within Gophercloud to more fully understand how it +fits within the request process as a whole rather than use it directly as shown +above. +*/ +func BuildRequestBody(opts interface{}, parent string) (map[string]interface{}, error) { + optsValue := reflect.ValueOf(opts) + if optsValue.Kind() == reflect.Ptr { + optsValue = optsValue.Elem() + } + + optsType := reflect.TypeOf(opts) + if optsType.Kind() == reflect.Ptr { + optsType = optsType.Elem() + } + + optsMap := make(map[string]interface{}) + if optsValue.Kind() == reflect.Struct { + //fmt.Printf("optsValue.Kind() is a reflect.Struct: %+v\n", optsValue.Kind()) + for i := 0; i < optsValue.NumField(); i++ { + v := optsValue.Field(i) + f := optsType.Field(i) + + if f.Name != strings.Title(f.Name) { + //fmt.Printf("Skipping field: %s...\n", f.Name) + continue + } + + //fmt.Printf("Starting on field: %s...\n", f.Name) + + zero := isZero(v) + //fmt.Printf("v is zero?: %v\n", zero) + + // if the field has a required tag that's set to "true" + if requiredTag := f.Tag.Get("required"); requiredTag == "true" { + //fmt.Printf("Checking required field [%s]:\n\tv: %+v\n\tisZero:%v\n", f.Name, v.Interface(), zero) + // if the field's value is zero, return a missing-argument error + if zero { + // if the field has a 'required' tag, it can't have a zero-value + err := ErrMissingInput{} + err.Argument = f.Name + return nil, err + } + } + + if xorTag := f.Tag.Get("xor"); xorTag != "" { + //fmt.Printf("Checking `xor` tag for field [%s] with value %+v:\n\txorTag: %s\n", f.Name, v, xorTag) + xorField := optsValue.FieldByName(xorTag) + var xorFieldIsZero bool + if reflect.ValueOf(xorField.Interface()) == reflect.Zero(xorField.Type()) { + xorFieldIsZero = true + } else { + if xorField.Kind() == reflect.Ptr { + xorField = xorField.Elem() + } + xorFieldIsZero = isZero(xorField) + } + if !(zero != xorFieldIsZero) { + err := ErrMissingInput{} + err.Argument = fmt.Sprintf("%s/%s", f.Name, xorTag) + err.Info = fmt.Sprintf("Exactly one of %s and %s must be provided", f.Name, xorTag) + return nil, err + } + } + + if orTag := f.Tag.Get("or"); orTag != "" { + //fmt.Printf("Checking `or` tag for field with:\n\tname: %+v\n\torTag:%s\n", f.Name, orTag) + //fmt.Printf("field is zero?: %v\n", zero) + if zero { + orField := optsValue.FieldByName(orTag) + var orFieldIsZero bool + if reflect.ValueOf(orField.Interface()) == reflect.Zero(orField.Type()) { + orFieldIsZero = true + } else { + if orField.Kind() == reflect.Ptr { + orField = orField.Elem() + } + orFieldIsZero = isZero(orField) + } + if orFieldIsZero { + err := ErrMissingInput{} + err.Argument = fmt.Sprintf("%s/%s", f.Name, orTag) + err.Info = fmt.Sprintf("At least one of %s and %s must be provided", f.Name, orTag) + return nil, err + } + } + } + + jsonTag := f.Tag.Get("json") + if jsonTag == "-" { + continue + } + + if v.Kind() == reflect.Slice || (v.Kind() == reflect.Ptr && v.Elem().Kind() == reflect.Slice) { + sliceValue := v + if sliceValue.Kind() == reflect.Ptr { + sliceValue = sliceValue.Elem() + } + + for i := 0; i < sliceValue.Len(); i++ { + element := sliceValue.Index(i) + if element.Kind() == reflect.Struct || (element.Kind() == reflect.Ptr && element.Elem().Kind() == reflect.Struct) { + _, err := BuildRequestBody(element.Interface(), "") + if err != nil { + return nil, err + } + } + } + } + if v.Kind() == reflect.Struct || (v.Kind() == reflect.Ptr && v.Elem().Kind() == reflect.Struct) { + if zero { + //fmt.Printf("value before change: %+v\n", optsValue.Field(i)) + if jsonTag != "" { + jsonTagPieces := strings.Split(jsonTag, ",") + if len(jsonTagPieces) > 1 && jsonTagPieces[1] == "omitempty" { + if v.CanSet() { + if !v.IsNil() { + if v.Kind() == reflect.Ptr { + v.Set(reflect.Zero(v.Type())) + } + } + //fmt.Printf("value after change: %+v\n", optsValue.Field(i)) + } + } + } + continue + } + + //fmt.Printf("Calling BuildRequestBody with:\n\tv: %+v\n\tf.Name:%s\n", v.Interface(), f.Name) + _, err := BuildRequestBody(v.Interface(), f.Name) + if err != nil { + return nil, err + } + } + } + + //fmt.Printf("opts: %+v \n", opts) + + b, err := json.Marshal(opts) + if err != nil { + return nil, err + } + + //fmt.Printf("string(b): %s\n", string(b)) + + err = json.Unmarshal(b, &optsMap) + if err != nil { + return nil, err + } + + //fmt.Printf("optsMap: %+v\n", optsMap) + + if parent != "" { + optsMap = map[string]interface{}{parent: optsMap} + } + //fmt.Printf("optsMap after parent added: %+v\n", optsMap) + return optsMap, nil + } + // Return an error if the underlying type of 'opts' isn't a struct. + return nil, fmt.Errorf("Options type is not a struct.") +} + +// EnabledState is a convenience type, mostly used in Create and Update +// operations. Because the zero value of a bool is FALSE, we need to use a +// pointer instead to indicate zero-ness. +type EnabledState *bool + +// Convenience vars for EnabledState values. +var ( + iTrue = true + iFalse = false + + Enabled EnabledState = &iTrue + Disabled EnabledState = &iFalse +) + +// IPVersion is a type for the possible IP address versions. Valid instances +// are IPv4 and IPv6 +type IPVersion int + +const ( + // IPv4 is used for IP version 4 addresses + IPv4 IPVersion = 4 + // IPv6 is used for IP version 6 addresses + IPv6 IPVersion = 6 +) + +// IntToPointer is a function for converting integers into integer pointers. +// This is useful when passing in options to operations. +func IntToPointer(i int) *int { + return &i +} + +/* +MaybeString is an internal function to be used by request methods in individual +resource packages. + +It takes a string that might be a zero value and returns either a pointer to its +address or nil. This is useful for allowing users to conveniently omit values +from an options struct by leaving them zeroed, but still pass nil to the JSON +serializer so they'll be omitted from the request body. +*/ +func MaybeString(original string) *string { + if original != "" { + return &original + } + return nil +} + +/* +MaybeInt is an internal function to be used by request methods in individual +resource packages. + +Like MaybeString, it accepts an int that may or may not be a zero value, and +returns either a pointer to its address or nil. It's intended to hint that the +JSON serializer should omit its field. +*/ +func MaybeInt(original int) *int { + if original != 0 { + return &original + } + return nil +} + +/* +func isUnderlyingStructZero(v reflect.Value) bool { + switch v.Kind() { + case reflect.Ptr: + return isUnderlyingStructZero(v.Elem()) + default: + return isZero(v) + } +} +*/ + +var t time.Time + +func isZero(v reflect.Value) bool { + //fmt.Printf("\n\nchecking isZero for value: %+v\n", v) + switch v.Kind() { + case reflect.Ptr: + if v.IsNil() { + return true + } + return false + case reflect.Func, reflect.Map, reflect.Slice: + return v.IsNil() + case reflect.Array: + z := true + for i := 0; i < v.Len(); i++ { + z = z && isZero(v.Index(i)) + } + return z + case reflect.Struct: + if v.Type() == reflect.TypeOf(t) { + if v.Interface().(time.Time).IsZero() { + return true + } + return false + } + z := true + for i := 0; i < v.NumField(); i++ { + z = z && isZero(v.Field(i)) + } + return z + } + // Compare other types directly: + z := reflect.Zero(v.Type()) + //fmt.Printf("zero type for value: %+v\n\n\n", z) + return v.Interface() == z.Interface() +} + +/* +BuildQueryString is an internal function to be used by request methods in +individual resource packages. + +It accepts a tagged structure and expands it into a URL struct. Field names are +converted into query parameters based on a "q" tag. For example: + + type struct Something { + Bar string `q:"x_bar"` + Baz int `q:"lorem_ipsum"` + } + + instance := Something{ + Bar: "AAA", + Baz: "BBB", + } + +will be converted into "?x_bar=AAA&lorem_ipsum=BBB". + +The struct's fields may be strings, integers, or boolean values. Fields left at +their type's zero value will be omitted from the query. +*/ +func BuildQueryString(opts interface{}) (*url.URL, error) { + optsValue := reflect.ValueOf(opts) + if optsValue.Kind() == reflect.Ptr { + optsValue = optsValue.Elem() + } + + optsType := reflect.TypeOf(opts) + if optsType.Kind() == reflect.Ptr { + optsType = optsType.Elem() + } + + params := url.Values{} + + if optsValue.Kind() == reflect.Struct { + for i := 0; i < optsValue.NumField(); i++ { + v := optsValue.Field(i) + f := optsType.Field(i) + qTag := f.Tag.Get("q") + + // if the field has a 'q' tag, it goes in the query string + if qTag != "" { + tags := strings.Split(qTag, ",") + + // if the field is set, add it to the slice of query pieces + if !isZero(v) { + loop: + switch v.Kind() { + case reflect.Ptr: + v = v.Elem() + goto loop + case reflect.String: + params.Add(tags[0], v.String()) + case reflect.Int: + params.Add(tags[0], strconv.FormatInt(v.Int(), 10)) + case reflect.Bool: + params.Add(tags[0], strconv.FormatBool(v.Bool())) + case reflect.Slice: + switch v.Type().Elem() { + case reflect.TypeOf(0): + for i := 0; i < v.Len(); i++ { + params.Add(tags[0], strconv.FormatInt(v.Index(i).Int(), 10)) + } + default: + for i := 0; i < v.Len(); i++ { + params.Add(tags[0], v.Index(i).String()) + } + } + case reflect.Map: + if v.Type().Key().Kind() == reflect.String && v.Type().Elem().Kind() == reflect.String { + var s []string + for _, k := range v.MapKeys() { + value := v.MapIndex(k).String() + s = append(s, fmt.Sprintf("'%s':'%s'", k.String(), value)) + } + params.Add(tags[0], fmt.Sprintf("{%s}", strings.Join(s, ", "))) + } + } + } else { + // if the field has a 'required' tag, it can't have a zero-value + if requiredTag := f.Tag.Get("required"); requiredTag == "true" { + return &url.URL{}, fmt.Errorf("Required query parameter [%s] not set.", f.Name) + } + } + } + } + + return &url.URL{RawQuery: params.Encode()}, nil + } + // Return an error if the underlying type of 'opts' isn't a struct. + return nil, fmt.Errorf("Options type is not a struct.") +} + +/* +BuildHeaders is an internal function to be used by request methods in +individual resource packages. + +It accepts an arbitrary tagged structure and produces a string map that's +suitable for use as the HTTP headers of an outgoing request. Field names are +mapped to header names based in "h" tags. + + type struct Something { + Bar string `h:"x_bar"` + Baz int `h:"lorem_ipsum"` + } + + instance := Something{ + Bar: "AAA", + Baz: "BBB", + } + +will be converted into: + + map[string]string{ + "x_bar": "AAA", + "lorem_ipsum": "BBB", + } + +Untagged fields and fields left at their zero values are skipped. Integers, +booleans and string values are supported. +*/ +func BuildHeaders(opts interface{}) (map[string]string, error) { + optsValue := reflect.ValueOf(opts) + if optsValue.Kind() == reflect.Ptr { + optsValue = optsValue.Elem() + } + + optsType := reflect.TypeOf(opts) + if optsType.Kind() == reflect.Ptr { + optsType = optsType.Elem() + } + + optsMap := make(map[string]string) + if optsValue.Kind() == reflect.Struct { + for i := 0; i < optsValue.NumField(); i++ { + v := optsValue.Field(i) + f := optsType.Field(i) + hTag := f.Tag.Get("h") + + // if the field has a 'h' tag, it goes in the header + if hTag != "" { + tags := strings.Split(hTag, ",") + + // if the field is set, add it to the slice of query pieces + if !isZero(v) { + switch v.Kind() { + case reflect.String: + optsMap[tags[0]] = v.String() + case reflect.Int: + optsMap[tags[0]] = strconv.FormatInt(v.Int(), 10) + case reflect.Int64: + optsMap[tags[0]] = strconv.FormatInt(v.Int(), 10) + case reflect.Bool: + optsMap[tags[0]] = strconv.FormatBool(v.Bool()) + } + } else { + // if the field has a 'required' tag, it can't have a zero-value + if requiredTag := f.Tag.Get("required"); requiredTag == "true" { + return optsMap, fmt.Errorf("Required header [%s] not set.", f.Name) + } + } + } + + } + return optsMap, nil + } + // Return an error if the underlying type of 'opts' isn't a struct. + return optsMap, fmt.Errorf("Options type is not a struct.") +} + +// IDSliceToQueryString takes a slice of elements and converts them into a query +// string. For example, if name=foo and slice=[]int{20, 40, 60}, then the +// result would be `?name=20&name=40&name=60' +func IDSliceToQueryString(name string, ids []int) string { + str := "" + for k, v := range ids { + if k == 0 { + str += "?" + } else { + str += "&" + } + str += fmt.Sprintf("%s=%s", name, strconv.Itoa(v)) + } + return str +} + +// IntWithinRange returns TRUE if an integer falls within a defined range, and +// FALSE if not. +func IntWithinRange(val, min, max int) bool { + return val > min && val < max +} diff --git a/vendor/github.com/gophercloud/gophercloud/provider_client.go b/vendor/github.com/gophercloud/gophercloud/provider_client.go new file mode 100644 index 0000000..4357440 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/provider_client.go @@ -0,0 +1,560 @@ +package gophercloud + +import ( + "bytes" + "context" + "encoding/json" + "errors" + "io" + "io/ioutil" + "net/http" + "strings" + "sync" +) + +// DefaultUserAgent is the default User-Agent string set in the request header. +const DefaultUserAgent = "gophercloud/2.0.0" + +// UserAgent represents a User-Agent header. +type UserAgent struct { + // prepend is the slice of User-Agent strings to prepend to DefaultUserAgent. + // All the strings to prepend are accumulated and prepended in the Join method. + prepend []string +} + +// Prepend prepends a user-defined string to the default User-Agent string. Users +// may pass in one or more strings to prepend. +func (ua *UserAgent) Prepend(s ...string) { + ua.prepend = append(s, ua.prepend...) +} + +// Join concatenates all the user-defined User-Agend strings with the default +// Gophercloud User-Agent string. +func (ua *UserAgent) Join() string { + uaSlice := append(ua.prepend, DefaultUserAgent) + return strings.Join(uaSlice, " ") +} + +// ProviderClient stores details that are required to interact with any +// services within a specific provider's API. +// +// Generally, you acquire a ProviderClient by calling the NewClient method in +// the appropriate provider's child package, providing whatever authentication +// credentials are required. +type ProviderClient struct { + // IdentityBase is the base URL used for a particular provider's identity + // service - it will be used when issuing authenticatation requests. It + // should point to the root resource of the identity service, not a specific + // identity version. + IdentityBase string + + // IdentityEndpoint is the identity endpoint. This may be a specific version + // of the identity service. If this is the case, this endpoint is used rather + // than querying versions first. + IdentityEndpoint string + + // TokenID is the ID of the most recently issued valid token. + // NOTE: Aside from within a custom ReauthFunc, this field shouldn't be set by an application. + // To safely read or write this value, call `Token` or `SetToken`, respectively + TokenID string + + // EndpointLocator describes how this provider discovers the endpoints for + // its constituent services. + EndpointLocator EndpointLocator + + // HTTPClient allows users to interject arbitrary http, https, or other transit behaviors. + HTTPClient http.Client + + // UserAgent represents the User-Agent header in the HTTP request. + UserAgent UserAgent + + // ReauthFunc is the function used to re-authenticate the user if the request + // fails with a 401 HTTP response code. This a needed because there may be multiple + // authentication functions for different Identity service versions. + ReauthFunc func() error + + // Throwaway determines whether if this client is a throw-away client. It's a copy of user's provider client + // with the token and reauth func zeroed. Such client can be used to perform reauthorization. + Throwaway bool + + // Context is the context passed to the HTTP request. + Context context.Context + + // mut is a mutex for the client. It protects read and write access to client attributes such as getting + // and setting the TokenID. + mut *sync.RWMutex + + // reauthmut is a mutex for reauthentication it attempts to ensure that only one reauthentication + // attempt happens at one time. + reauthmut *reauthlock + + authResult AuthResult +} + +// reauthlock represents a set of attributes used to help in the reauthentication process. +type reauthlock struct { + sync.RWMutex + // This channel is non-nil during reauthentication. It can be used to ask the + // goroutine doing Reauthenticate() for its result. Look at the implementation + // of Reauthenticate() for details. + ongoing chan<- (chan<- error) +} + +// AuthenticatedHeaders returns a map of HTTP headers that are common for all +// authenticated service requests. Blocks if Reauthenticate is in progress. +func (client *ProviderClient) AuthenticatedHeaders() (m map[string]string) { + if client.IsThrowaway() { + return + } + if client.reauthmut != nil { + // If a Reauthenticate is in progress, wait for it to complete. + client.reauthmut.Lock() + ongoing := client.reauthmut.ongoing + client.reauthmut.Unlock() + if ongoing != nil { + responseChannel := make(chan error) + ongoing <- responseChannel + _ = <-responseChannel + } + } + t := client.Token() + if t == "" { + return + } + return map[string]string{"X-Auth-Token": t} +} + +// UseTokenLock creates a mutex that is used to allow safe concurrent access to the auth token. +// If the application's ProviderClient is not used concurrently, this doesn't need to be called. +func (client *ProviderClient) UseTokenLock() { + client.mut = new(sync.RWMutex) + client.reauthmut = new(reauthlock) +} + +// GetAuthResult returns the result from the request that was used to obtain a +// provider client's Keystone token. +// +// The result is nil when authentication has not yet taken place, when the token +// was set manually with SetToken(), or when a ReauthFunc was used that does not +// record the AuthResult. +func (client *ProviderClient) GetAuthResult() AuthResult { + if client.mut != nil { + client.mut.RLock() + defer client.mut.RUnlock() + } + return client.authResult +} + +// Token safely reads the value of the auth token from the ProviderClient. Applications should +// call this method to access the token instead of the TokenID field +func (client *ProviderClient) Token() string { + if client.mut != nil { + client.mut.RLock() + defer client.mut.RUnlock() + } + return client.TokenID +} + +// SetToken safely sets the value of the auth token in the ProviderClient. Applications may +// use this method in a custom ReauthFunc. +// +// WARNING: This function is deprecated. Use SetTokenAndAuthResult() instead. +func (client *ProviderClient) SetToken(t string) { + if client.mut != nil { + client.mut.Lock() + defer client.mut.Unlock() + } + client.TokenID = t + client.authResult = nil +} + +// SetTokenAndAuthResult safely sets the value of the auth token in the +// ProviderClient and also records the AuthResult that was returned from the +// token creation request. Applications may call this in a custom ReauthFunc. +func (client *ProviderClient) SetTokenAndAuthResult(r AuthResult) error { + tokenID := "" + var err error + if r != nil { + tokenID, err = r.ExtractTokenID() + if err != nil { + return err + } + } + + if client.mut != nil { + client.mut.Lock() + defer client.mut.Unlock() + } + client.TokenID = tokenID + client.authResult = r + return nil +} + +// CopyTokenFrom safely copies the token from another ProviderClient into the +// this one. +func (client *ProviderClient) CopyTokenFrom(other *ProviderClient) { + if client.mut != nil { + client.mut.Lock() + defer client.mut.Unlock() + } + if other.mut != nil && other.mut != client.mut { + other.mut.RLock() + defer other.mut.RUnlock() + } + client.TokenID = other.TokenID + client.authResult = other.authResult +} + +// IsThrowaway safely reads the value of the client Throwaway field. +func (client *ProviderClient) IsThrowaway() bool { + if client.reauthmut != nil { + client.reauthmut.RLock() + defer client.reauthmut.RUnlock() + } + return client.Throwaway +} + +// SetThrowaway safely sets the value of the client Throwaway field. +func (client *ProviderClient) SetThrowaway(v bool) { + if client.reauthmut != nil { + client.reauthmut.Lock() + defer client.reauthmut.Unlock() + } + client.Throwaway = v +} + +// Reauthenticate calls client.ReauthFunc in a thread-safe way. If this is +// called because of a 401 response, the caller may pass the previous token. In +// this case, the reauthentication can be skipped if another thread has already +// reauthenticated in the meantime. If no previous token is known, an empty +// string should be passed instead to force unconditional reauthentication. +func (client *ProviderClient) Reauthenticate(previousToken string) error { + if client.ReauthFunc == nil { + return nil + } + + if client.reauthmut == nil { + return client.ReauthFunc() + } + + messages := make(chan (chan<- error)) + + // Check if a Reauthenticate is in progress, or start one if not. + client.reauthmut.Lock() + ongoing := client.reauthmut.ongoing + if ongoing == nil { + client.reauthmut.ongoing = messages + } + client.reauthmut.Unlock() + + // If Reauthenticate is running elsewhere, wait for its result. + if ongoing != nil { + responseChannel := make(chan error) + ongoing <- responseChannel + return <-responseChannel + } + + // Perform the actual reauthentication. + var err error + if previousToken == "" || client.TokenID == previousToken { + err = client.ReauthFunc() + } else { + err = nil + } + + // Mark Reauthenticate as finished. + client.reauthmut.Lock() + client.reauthmut.ongoing = nil + client.reauthmut.Unlock() + + // Report result to all other interested goroutines. + // + // This happens in a separate goroutine because another goroutine might have + // acquired a copy of `client.reauthmut.ongoing` before we cleared it, but not + // have come around to sending its request. By answering in a goroutine, we + // can have that goroutine linger until all responseChannels have been sent. + // When GC has collected all sendings ends of the channel, our receiving end + // will be closed and the goroutine will end. + go func() { + for responseChannel := range messages { + responseChannel <- err + } + }() + return err +} + +// RequestOpts customizes the behavior of the provider.Request() method. +type RequestOpts struct { + // JSONBody, if provided, will be encoded as JSON and used as the body of the HTTP request. The + // content type of the request will default to "application/json" unless overridden by MoreHeaders. + // It's an error to specify both a JSONBody and a RawBody. + JSONBody interface{} + // RawBody contains an io.Reader that will be consumed by the request directly. No content-type + // will be set unless one is provided explicitly by MoreHeaders. + RawBody io.Reader + // JSONResponse, if provided, will be populated with the contents of the response body parsed as + // JSON. + JSONResponse interface{} + // OkCodes contains a list of numeric HTTP status codes that should be interpreted as success. If + // the response has a different code, an error will be returned. + OkCodes []int + // MoreHeaders specifies additional HTTP headers to be provide on the request. If a header is + // provided with a blank value (""), that header will be *omitted* instead: use this to suppress + // the default Accept header or an inferred Content-Type, for example. + MoreHeaders map[string]string + // ErrorContext specifies the resource error type to return if an error is encountered. + // This lets resources override default error messages based on the response status code. + ErrorContext error + // KeepResponseBody specifies whether to keep the HTTP response body. Usually used, when the HTTP + // response body is considered for further use. Valid when JSONResponse is nil. + KeepResponseBody bool +} + +// requestState contains temporary state for a single ProviderClient.Request() call. +type requestState struct { + // This flag indicates if we have reauthenticated during this request because of a 401 response. + // It ensures that we don't reauthenticate multiple times for a single request. If we + // reauthenticate, but keep getting 401 responses with the fresh token, reauthenticating some more + // will just get us into an infinite loop. + hasReauthenticated bool +} + +var applicationJSON = "application/json" + +// Request performs an HTTP request using the ProviderClient's current HTTPClient. An authentication +// header will automatically be provided. +func (client *ProviderClient) Request(method, url string, options *RequestOpts) (*http.Response, error) { + return client.doRequest(method, url, options, &requestState{ + hasReauthenticated: false, + }) +} + +func (client *ProviderClient) doRequest(method, url string, options *RequestOpts, state *requestState) (*http.Response, error) { + var body io.Reader + var contentType *string + + // Derive the content body by either encoding an arbitrary object as JSON, or by taking a provided + // io.ReadSeeker as-is. Default the content-type to application/json. + if options.JSONBody != nil { + if options.RawBody != nil { + return nil, errors.New("please provide only one of JSONBody or RawBody to gophercloud.Request()") + } + + rendered, err := json.Marshal(options.JSONBody) + if err != nil { + return nil, err + } + + body = bytes.NewReader(rendered) + contentType = &applicationJSON + } + + // Return an error, when "KeepResponseBody" is true and "JSONResponse" is not nil + if options.KeepResponseBody && options.JSONResponse != nil { + return nil, errors.New("cannot use KeepResponseBody when JSONResponse is not nil") + } + + if options.RawBody != nil { + body = options.RawBody + } + + // Construct the http.Request. + req, err := http.NewRequest(method, url, body) + if err != nil { + return nil, err + } + if client.Context != nil { + req = req.WithContext(client.Context) + } + + // Populate the request headers. Apply options.MoreHeaders last, to give the caller the chance to + // modify or omit any header. + if contentType != nil { + req.Header.Set("Content-Type", *contentType) + } + req.Header.Set("Accept", applicationJSON) + + // Set the User-Agent header + req.Header.Set("User-Agent", client.UserAgent.Join()) + + if options.MoreHeaders != nil { + for k, v := range options.MoreHeaders { + if v != "" { + req.Header.Set(k, v) + } else { + req.Header.Del(k) + } + } + } + + // get latest token from client + for k, v := range client.AuthenticatedHeaders() { + req.Header.Set(k, v) + } + + prereqtok := req.Header.Get("X-Auth-Token") + + // Issue the request. + resp, err := client.HTTPClient.Do(req) + if err != nil { + return nil, err + } + + // Allow default OkCodes if none explicitly set + okc := options.OkCodes + if okc == nil { + okc = defaultOkCodes(method) + } + + // Validate the HTTP response status. + var ok bool + for _, code := range okc { + if resp.StatusCode == code { + ok = true + break + } + } + + if !ok { + body, _ := ioutil.ReadAll(resp.Body) + resp.Body.Close() + respErr := ErrUnexpectedResponseCode{ + URL: url, + Method: method, + Expected: options.OkCodes, + Actual: resp.StatusCode, + Body: body, + ResponseHeader: resp.Header, + } + + errType := options.ErrorContext + switch resp.StatusCode { + case http.StatusBadRequest: + err = ErrDefault400{respErr} + if error400er, ok := errType.(Err400er); ok { + err = error400er.Error400(respErr) + } + case http.StatusUnauthorized: + if client.ReauthFunc != nil && !state.hasReauthenticated { + err = client.Reauthenticate(prereqtok) + if err != nil { + e := &ErrUnableToReauthenticate{} + e.ErrOriginal = respErr + return nil, e + } + if options.RawBody != nil { + if seeker, ok := options.RawBody.(io.Seeker); ok { + seeker.Seek(0, 0) + } + } + state.hasReauthenticated = true + resp, err = client.doRequest(method, url, options, state) + if err != nil { + switch err.(type) { + case *ErrUnexpectedResponseCode: + e := &ErrErrorAfterReauthentication{} + e.ErrOriginal = err.(*ErrUnexpectedResponseCode) + return nil, e + default: + e := &ErrErrorAfterReauthentication{} + e.ErrOriginal = err + return nil, e + } + } + return resp, nil + } + err = ErrDefault401{respErr} + if error401er, ok := errType.(Err401er); ok { + err = error401er.Error401(respErr) + } + case http.StatusForbidden: + err = ErrDefault403{respErr} + if error403er, ok := errType.(Err403er); ok { + err = error403er.Error403(respErr) + } + case http.StatusNotFound: + err = ErrDefault404{respErr} + if error404er, ok := errType.(Err404er); ok { + err = error404er.Error404(respErr) + } + case http.StatusMethodNotAllowed: + err = ErrDefault405{respErr} + if error405er, ok := errType.(Err405er); ok { + err = error405er.Error405(respErr) + } + case http.StatusRequestTimeout: + err = ErrDefault408{respErr} + if error408er, ok := errType.(Err408er); ok { + err = error408er.Error408(respErr) + } + case http.StatusConflict: + err = ErrDefault409{respErr} + if error409er, ok := errType.(Err409er); ok { + err = error409er.Error409(respErr) + } + case 429: + err = ErrDefault429{respErr} + if error429er, ok := errType.(Err429er); ok { + err = error429er.Error429(respErr) + } + case http.StatusInternalServerError: + err = ErrDefault500{respErr} + if error500er, ok := errType.(Err500er); ok { + err = error500er.Error500(respErr) + } + case http.StatusServiceUnavailable: + err = ErrDefault503{respErr} + if error503er, ok := errType.(Err503er); ok { + err = error503er.Error503(respErr) + } + } + + if err == nil { + err = respErr + } + + return resp, err + } + + // Parse the response body as JSON, if requested to do so. + if options.JSONResponse != nil { + defer resp.Body.Close() + // Don't decode JSON when there is no content + if resp.StatusCode == http.StatusNoContent { + // read till EOF, otherwise the connection will be closed and cannot be reused + _, err = io.Copy(ioutil.Discard, resp.Body) + return resp, err + } + if err := json.NewDecoder(resp.Body).Decode(options.JSONResponse); err != nil { + return nil, err + } + } + + // Close unused body to allow the HTTP connection to be reused + if !options.KeepResponseBody && options.JSONResponse == nil { + defer resp.Body.Close() + // read till EOF, otherwise the connection will be closed and cannot be reused + if _, err := io.Copy(ioutil.Discard, resp.Body); err != nil { + return nil, err + } + } + + return resp, nil +} + +func defaultOkCodes(method string) []int { + switch method { + case "GET", "HEAD": + return []int{200} + case "POST": + return []int{201, 202} + case "PUT": + return []int{201, 202} + case "PATCH": + return []int{200, 202, 204} + case "DELETE": + return []int{202, 204} + } + + return []int{} +} diff --git a/vendor/github.com/gophercloud/gophercloud/results.go b/vendor/github.com/gophercloud/gophercloud/results.go new file mode 100644 index 0000000..1b60810 --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/results.go @@ -0,0 +1,460 @@ +package gophercloud + +import ( + "bytes" + "encoding/json" + "fmt" + "io" + "net/http" + "reflect" + "strconv" + "time" +) + +/* +Result is an internal type to be used by individual resource packages, but its +methods will be available on a wide variety of user-facing embedding types. + +It acts as a base struct that other Result types, returned from request +functions, can embed for convenience. All Results capture basic information +from the HTTP transaction that was performed, including the response body, +HTTP headers, and any errors that happened. + +Generally, each Result type will have an Extract method that can be used to +further interpret the result's payload in a specific context. Extensions or +providers can then provide additional extraction functions to pull out +provider- or extension-specific information as well. +*/ +type Result struct { + // Body is the payload of the HTTP response from the server. In most cases, + // this will be the deserialized JSON structure. + Body interface{} + + // Header contains the HTTP header structure from the original response. + Header http.Header + + // Err is an error that occurred during the operation. It's deferred until + // extraction to make it easier to chain the Extract call. + Err error +} + +// ExtractInto allows users to provide an object into which `Extract` will extract +// the `Result.Body`. This would be useful for OpenStack providers that have +// different fields in the response object than OpenStack proper. +func (r Result) ExtractInto(to interface{}) error { + if r.Err != nil { + return r.Err + } + + if reader, ok := r.Body.(io.Reader); ok { + if readCloser, ok := reader.(io.Closer); ok { + defer readCloser.Close() + } + return json.NewDecoder(reader).Decode(to) + } + + b, err := json.Marshal(r.Body) + if err != nil { + return err + } + err = json.Unmarshal(b, to) + + return err +} + +func (r Result) extractIntoPtr(to interface{}, label string) error { + if label == "" { + return r.ExtractInto(&to) + } + + var m map[string]interface{} + err := r.ExtractInto(&m) + if err != nil { + return err + } + + b, err := json.Marshal(m[label]) + if err != nil { + return err + } + + toValue := reflect.ValueOf(to) + if toValue.Kind() == reflect.Ptr { + toValue = toValue.Elem() + } + + switch toValue.Kind() { + case reflect.Slice: + typeOfV := toValue.Type().Elem() + if typeOfV.Kind() == reflect.Struct { + if typeOfV.NumField() > 0 && typeOfV.Field(0).Anonymous { + newSlice := reflect.MakeSlice(reflect.SliceOf(typeOfV), 0, 0) + + if mSlice, ok := m[label].([]interface{}); ok { + for _, v := range mSlice { + // For each iteration of the slice, we create a new struct. + // This is to work around a bug where elements of a slice + // are reused and not overwritten when the same copy of the + // struct is used: + // + // https://github.com/golang/go/issues/21092 + // https://github.com/golang/go/issues/24155 + // https://play.golang.org/p/NHo3ywlPZli + newType := reflect.New(typeOfV).Elem() + + b, err := json.Marshal(v) + if err != nil { + return err + } + + // This is needed for structs with an UnmarshalJSON method. + // Technically this is just unmarshalling the response into + // a struct that is never used, but it's good enough to + // trigger the UnmarshalJSON method. + for i := 0; i < newType.NumField(); i++ { + s := newType.Field(i).Addr().Interface() + + // Unmarshal is used rather than NewDecoder to also work + // around the above-mentioned bug. + err = json.Unmarshal(b, s) + if err != nil { + return err + } + } + + newSlice = reflect.Append(newSlice, newType) + } + } + + // "to" should now be properly modeled to receive the + // JSON response body and unmarshal into all the correct + // fields of the struct or composed extension struct + // at the end of this method. + toValue.Set(newSlice) + + // jtopjian: This was put into place to resolve the issue + // described at + // https://github.com/gophercloud/gophercloud/issues/1963 + // + // This probably isn't the best fix, but it appears to + // be resolving the issue, so I'm going to implement it + // for now. + // + // For future readers, this entire case statement could + // use a review. + return nil + } + } + case reflect.Struct: + typeOfV := toValue.Type() + if typeOfV.NumField() > 0 && typeOfV.Field(0).Anonymous { + for i := 0; i < toValue.NumField(); i++ { + toField := toValue.Field(i) + if toField.Kind() == reflect.Struct { + s := toField.Addr().Interface() + err = json.NewDecoder(bytes.NewReader(b)).Decode(s) + if err != nil { + return err + } + } + } + } + } + + err = json.Unmarshal(b, &to) + return err +} + +// ExtractIntoStructPtr will unmarshal the Result (r) into the provided +// interface{} (to). +// +// NOTE: For internal use only +// +// `to` must be a pointer to an underlying struct type +// +// If provided, `label` will be filtered out of the response +// body prior to `r` being unmarshalled into `to`. +func (r Result) ExtractIntoStructPtr(to interface{}, label string) error { + if r.Err != nil { + return r.Err + } + + t := reflect.TypeOf(to) + if k := t.Kind(); k != reflect.Ptr { + return fmt.Errorf("Expected pointer, got %v", k) + } + switch t.Elem().Kind() { + case reflect.Struct: + return r.extractIntoPtr(to, label) + default: + return fmt.Errorf("Expected pointer to struct, got: %v", t) + } +} + +// ExtractIntoSlicePtr will unmarshal the Result (r) into the provided +// interface{} (to). +// +// NOTE: For internal use only +// +// `to` must be a pointer to an underlying slice type +// +// If provided, `label` will be filtered out of the response +// body prior to `r` being unmarshalled into `to`. +func (r Result) ExtractIntoSlicePtr(to interface{}, label string) error { + if r.Err != nil { + return r.Err + } + + t := reflect.TypeOf(to) + if k := t.Kind(); k != reflect.Ptr { + return fmt.Errorf("Expected pointer, got %v", k) + } + switch t.Elem().Kind() { + case reflect.Slice: + return r.extractIntoPtr(to, label) + default: + return fmt.Errorf("Expected pointer to slice, got: %v", t) + } +} + +// PrettyPrintJSON creates a string containing the full response body as +// pretty-printed JSON. It's useful for capturing test fixtures and for +// debugging extraction bugs. If you include its output in an issue related to +// a buggy extraction function, we will all love you forever. +func (r Result) PrettyPrintJSON() string { + pretty, err := json.MarshalIndent(r.Body, "", " ") + if err != nil { + panic(err.Error()) + } + return string(pretty) +} + +// ErrResult is an internal type to be used by individual resource packages, but +// its methods will be available on a wide variety of user-facing embedding +// types. +// +// It represents results that only contain a potential error and +// nothing else. Usually, if the operation executed successfully, the Err field +// will be nil; otherwise it will be stocked with a relevant error. Use the +// ExtractErr method +// to cleanly pull it out. +type ErrResult struct { + Result +} + +// ExtractErr is a function that extracts error information, or nil, from a result. +func (r ErrResult) ExtractErr() error { + return r.Err +} + +/* +HeaderResult is an internal type to be used by individual resource packages, but +its methods will be available on a wide variety of user-facing embedding types. + +It represents a result that only contains an error (possibly nil) and an +http.Header. This is used, for example, by the objectstorage packages in +openstack, because most of the operations don't return response bodies, but do +have relevant information in headers. +*/ +type HeaderResult struct { + Result +} + +// ExtractInto allows users to provide an object into which `Extract` will +// extract the http.Header headers of the result. +func (r HeaderResult) ExtractInto(to interface{}) error { + if r.Err != nil { + return r.Err + } + + tmpHeaderMap := map[string]string{} + for k, v := range r.Header { + if len(v) > 0 { + tmpHeaderMap[k] = v[0] + } + } + + b, err := json.Marshal(tmpHeaderMap) + if err != nil { + return err + } + err = json.Unmarshal(b, to) + + return err +} + +// RFC3339Milli describes a common time format used by some API responses. +const RFC3339Milli = "2006-01-02T15:04:05.999999Z" + +type JSONRFC3339Milli time.Time + +func (jt *JSONRFC3339Milli) UnmarshalJSON(data []byte) error { + b := bytes.NewBuffer(data) + dec := json.NewDecoder(b) + var s string + if err := dec.Decode(&s); err != nil { + return err + } + t, err := time.Parse(RFC3339Milli, s) + if err != nil { + return err + } + *jt = JSONRFC3339Milli(t) + return nil +} + +const RFC3339MilliNoZ = "2006-01-02T15:04:05.999999" + +type JSONRFC3339MilliNoZ time.Time + +func (jt *JSONRFC3339MilliNoZ) UnmarshalJSON(data []byte) error { + var s string + if err := json.Unmarshal(data, &s); err != nil { + return err + } + if s == "" { + return nil + } + t, err := time.Parse(RFC3339MilliNoZ, s) + if err != nil { + return err + } + *jt = JSONRFC3339MilliNoZ(t) + return nil +} + +type JSONRFC1123 time.Time + +func (jt *JSONRFC1123) UnmarshalJSON(data []byte) error { + var s string + if err := json.Unmarshal(data, &s); err != nil { + return err + } + if s == "" { + return nil + } + t, err := time.Parse(time.RFC1123, s) + if err != nil { + return err + } + *jt = JSONRFC1123(t) + return nil +} + +type JSONUnix time.Time + +func (jt *JSONUnix) UnmarshalJSON(data []byte) error { + var s string + if err := json.Unmarshal(data, &s); err != nil { + return err + } + if s == "" { + return nil + } + unix, err := strconv.ParseInt(s, 10, 64) + if err != nil { + return err + } + t = time.Unix(unix, 0) + *jt = JSONUnix(t) + return nil +} + +// RFC3339NoZ is the time format used in Heat (Orchestration). +const RFC3339NoZ = "2006-01-02T15:04:05" + +type JSONRFC3339NoZ time.Time + +func (jt *JSONRFC3339NoZ) UnmarshalJSON(data []byte) error { + var s string + if err := json.Unmarshal(data, &s); err != nil { + return err + } + if s == "" { + return nil + } + t, err := time.Parse(RFC3339NoZ, s) + if err != nil { + return err + } + *jt = JSONRFC3339NoZ(t) + return nil +} + +// RFC3339ZNoT is the time format used in Zun (Containers Service). +const RFC3339ZNoT = "2006-01-02 15:04:05-07:00" + +type JSONRFC3339ZNoT time.Time + +func (jt *JSONRFC3339ZNoT) UnmarshalJSON(data []byte) error { + var s string + if err := json.Unmarshal(data, &s); err != nil { + return err + } + if s == "" { + return nil + } + t, err := time.Parse(RFC3339ZNoT, s) + if err != nil { + return err + } + *jt = JSONRFC3339ZNoT(t) + return nil +} + +// RFC3339ZNoTNoZ is another time format used in Zun (Containers Service). +const RFC3339ZNoTNoZ = "2006-01-02 15:04:05" + +type JSONRFC3339ZNoTNoZ time.Time + +func (jt *JSONRFC3339ZNoTNoZ) UnmarshalJSON(data []byte) error { + var s string + if err := json.Unmarshal(data, &s); err != nil { + return err + } + if s == "" { + return nil + } + t, err := time.Parse(RFC3339ZNoTNoZ, s) + if err != nil { + return err + } + *jt = JSONRFC3339ZNoTNoZ(t) + return nil +} + +/* +Link is an internal type to be used in packages of collection resources that are +paginated in a certain way. + +It's a response substructure common to many paginated collection results that is +used to point to related pages. Usually, the one we care about is the one with +Rel field set to "next". +*/ +type Link struct { + Href string `json:"href"` + Rel string `json:"rel"` +} + +/* +ExtractNextURL is an internal function useful for packages of collection +resources that are paginated in a certain way. + +It attempts to extract the "next" URL from slice of Link structs, or +"" if no such URL is present. +*/ +func ExtractNextURL(links []Link) (string, error) { + var url string + + for _, l := range links { + if l.Rel == "next" { + url = l.Href + } + } + + if url == "" { + return "", nil + } + + return url, nil +} diff --git a/vendor/github.com/gophercloud/gophercloud/service_client.go b/vendor/github.com/gophercloud/gophercloud/service_client.go new file mode 100644 index 0000000..dd54abe --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/service_client.go @@ -0,0 +1,162 @@ +package gophercloud + +import ( + "io" + "net/http" + "strings" +) + +// ServiceClient stores details required to interact with a specific service API implemented by a provider. +// Generally, you'll acquire these by calling the appropriate `New` method on a ProviderClient. +type ServiceClient struct { + // ProviderClient is a reference to the provider that implements this service. + *ProviderClient + + // Endpoint is the base URL of the service's API, acquired from a service catalog. + // It MUST end with a /. + Endpoint string + + // ResourceBase is the base URL shared by the resources within a service's API. It should include + // the API version and, like Endpoint, MUST end with a / if set. If not set, the Endpoint is used + // as-is, instead. + ResourceBase string + + // This is the service client type (e.g. compute, sharev2). + // NOTE: FOR INTERNAL USE ONLY. DO NOT SET. GOPHERCLOUD WILL SET THIS. + // It is only exported because it gets set in a different package. + Type string + + // The microversion of the service to use. Set this to use a particular microversion. + Microversion string + + // MoreHeaders allows users (or Gophercloud) to set service-wide headers on requests. Put another way, + // values set in this field will be set on all the HTTP requests the service client sends. + MoreHeaders map[string]string +} + +// ResourceBaseURL returns the base URL of any resources used by this service. It MUST end with a /. +func (client *ServiceClient) ResourceBaseURL() string { + if client.ResourceBase != "" { + return client.ResourceBase + } + return client.Endpoint +} + +// ServiceURL constructs a URL for a resource belonging to this provider. +func (client *ServiceClient) ServiceURL(parts ...string) string { + return client.ResourceBaseURL() + strings.Join(parts, "/") +} + +func (client *ServiceClient) initReqOpts(url string, JSONBody interface{}, JSONResponse interface{}, opts *RequestOpts) { + if v, ok := (JSONBody).(io.Reader); ok { + opts.RawBody = v + } else if JSONBody != nil { + opts.JSONBody = JSONBody + } + + if JSONResponse != nil { + opts.JSONResponse = JSONResponse + } + + if opts.MoreHeaders == nil { + opts.MoreHeaders = make(map[string]string) + } + + if client.Microversion != "" { + client.setMicroversionHeader(opts) + } +} + +// Get calls `Request` with the "GET" HTTP verb. +func (client *ServiceClient) Get(url string, JSONResponse interface{}, opts *RequestOpts) (*http.Response, error) { + if opts == nil { + opts = new(RequestOpts) + } + client.initReqOpts(url, nil, JSONResponse, opts) + return client.Request("GET", url, opts) +} + +// Post calls `Request` with the "POST" HTTP verb. +func (client *ServiceClient) Post(url string, JSONBody interface{}, JSONResponse interface{}, opts *RequestOpts) (*http.Response, error) { + if opts == nil { + opts = new(RequestOpts) + } + client.initReqOpts(url, JSONBody, JSONResponse, opts) + return client.Request("POST", url, opts) +} + +// Put calls `Request` with the "PUT" HTTP verb. +func (client *ServiceClient) Put(url string, JSONBody interface{}, JSONResponse interface{}, opts *RequestOpts) (*http.Response, error) { + if opts == nil { + opts = new(RequestOpts) + } + client.initReqOpts(url, JSONBody, JSONResponse, opts) + return client.Request("PUT", url, opts) +} + +// Patch calls `Request` with the "PATCH" HTTP verb. +func (client *ServiceClient) Patch(url string, JSONBody interface{}, JSONResponse interface{}, opts *RequestOpts) (*http.Response, error) { + if opts == nil { + opts = new(RequestOpts) + } + client.initReqOpts(url, JSONBody, JSONResponse, opts) + return client.Request("PATCH", url, opts) +} + +// Delete calls `Request` with the "DELETE" HTTP verb. +func (client *ServiceClient) Delete(url string, opts *RequestOpts) (*http.Response, error) { + if opts == nil { + opts = new(RequestOpts) + } + client.initReqOpts(url, nil, nil, opts) + return client.Request("DELETE", url, opts) +} + +// Head calls `Request` with the "HEAD" HTTP verb. +func (client *ServiceClient) Head(url string, opts *RequestOpts) (*http.Response, error) { + if opts == nil { + opts = new(RequestOpts) + } + client.initReqOpts(url, nil, nil, opts) + return client.Request("HEAD", url, opts) +} + +func (client *ServiceClient) setMicroversionHeader(opts *RequestOpts) { + switch client.Type { + case "compute": + opts.MoreHeaders["X-OpenStack-Nova-API-Version"] = client.Microversion + case "sharev2": + opts.MoreHeaders["X-OpenStack-Manila-API-Version"] = client.Microversion + case "volume": + opts.MoreHeaders["X-OpenStack-Volume-API-Version"] = client.Microversion + case "baremetal": + opts.MoreHeaders["X-OpenStack-Ironic-API-Version"] = client.Microversion + case "baremetal-introspection": + opts.MoreHeaders["X-OpenStack-Ironic-Inspector-API-Version"] = client.Microversion + } + + if client.Type != "" { + opts.MoreHeaders["OpenStack-API-Version"] = client.Type + " " + client.Microversion + } +} + +// Request carries out the HTTP operation for the service client +func (client *ServiceClient) Request(method, url string, options *RequestOpts) (*http.Response, error) { + if len(client.MoreHeaders) > 0 { + if options == nil { + options = new(RequestOpts) + } + for k, v := range client.MoreHeaders { + options.MoreHeaders[k] = v + } + } + return client.ProviderClient.Request(method, url, options) +} + +// ParseResponse is a helper function to parse http.Response to constituents. +func ParseResponse(resp *http.Response, err error) (io.ReadCloser, http.Header, error) { + if resp != nil { + return resp.Body, resp.Header, err + } + return nil, nil, err +} diff --git a/vendor/github.com/gophercloud/gophercloud/util.go b/vendor/github.com/gophercloud/gophercloud/util.go new file mode 100644 index 0000000..68f9a5d --- /dev/null +++ b/vendor/github.com/gophercloud/gophercloud/util.go @@ -0,0 +1,102 @@ +package gophercloud + +import ( + "fmt" + "net/url" + "path/filepath" + "strings" + "time" +) + +// WaitFor polls a predicate function, once per second, up to a timeout limit. +// This is useful to wait for a resource to transition to a certain state. +// To handle situations when the predicate might hang indefinitely, the +// predicate will be prematurely cancelled after the timeout. +// Resource packages will wrap this in a more convenient function that's +// specific to a certain resource, but it can also be useful on its own. +func WaitFor(timeout int, predicate func() (bool, error)) error { + type WaitForResult struct { + Success bool + Error error + } + + start := time.Now().Unix() + + for { + // If a timeout is set, and that's been exceeded, shut it down. + if timeout >= 0 && time.Now().Unix()-start >= int64(timeout) { + return fmt.Errorf("A timeout occurred") + } + + time.Sleep(1 * time.Second) + + var result WaitForResult + ch := make(chan bool, 1) + go func() { + defer close(ch) + satisfied, err := predicate() + result.Success = satisfied + result.Error = err + }() + + select { + case <-ch: + if result.Error != nil { + return result.Error + } + if result.Success { + return nil + } + // If the predicate has not finished by the timeout, cancel it. + case <-time.After(time.Duration(timeout) * time.Second): + return fmt.Errorf("A timeout occurred") + } + } +} + +// NormalizeURL is an internal function to be used by provider clients. +// +// It ensures that each endpoint URL has a closing `/`, as expected by +// ServiceClient's methods. +func NormalizeURL(url string) string { + if !strings.HasSuffix(url, "/") { + return url + "/" + } + return url +} + +// NormalizePathURL is used to convert rawPath to a fqdn, using basePath as +// a reference in the filesystem, if necessary. basePath is assumed to contain +// either '.' when first used, or the file:// type fqdn of the parent resource. +// e.g. myFavScript.yaml => file://opt/lib/myFavScript.yaml +func NormalizePathURL(basePath, rawPath string) (string, error) { + u, err := url.Parse(rawPath) + if err != nil { + return "", err + } + // if a scheme is defined, it must be a fqdn already + if u.Scheme != "" { + return u.String(), nil + } + // if basePath is a url, then child resources are assumed to be relative to it + bu, err := url.Parse(basePath) + if err != nil { + return "", err + } + var basePathSys, absPathSys string + if bu.Scheme != "" { + basePathSys = filepath.FromSlash(bu.Path) + absPathSys = filepath.Join(basePathSys, rawPath) + bu.Path = filepath.ToSlash(absPathSys) + return bu.String(), nil + } + + absPathSys = filepath.Join(basePath, rawPath) + u.Path = filepath.ToSlash(absPathSys) + if err != nil { + return "", err + } + u.Scheme = "file" + return u.String(), nil + +} diff --git a/vendor/github.com/jmespath/go-jmespath/.gitignore b/vendor/github.com/jmespath/go-jmespath/.gitignore new file mode 100644 index 0000000..5091fb0 --- /dev/null +++ b/vendor/github.com/jmespath/go-jmespath/.gitignore @@ -0,0 +1,4 @@ +/jpgo +jmespath-fuzz.zip +cpu.out +go-jmespath.test diff --git a/vendor/github.com/jmespath/go-jmespath/.travis.yml b/vendor/github.com/jmespath/go-jmespath/.travis.yml new file mode 100644 index 0000000..1f98077 --- /dev/null +++ b/vendor/github.com/jmespath/go-jmespath/.travis.yml @@ -0,0 +1,9 @@ +language: go + +sudo: false + +go: + - 1.4 + +install: go get -v -t ./... +script: make test diff --git a/vendor/github.com/jmespath/go-jmespath/LICENSE b/vendor/github.com/jmespath/go-jmespath/LICENSE new file mode 100644 index 0000000..b03310a --- /dev/null +++ b/vendor/github.com/jmespath/go-jmespath/LICENSE @@ -0,0 +1,13 @@ +Copyright 2015 James Saryerwinnie + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/vendor/github.com/jmespath/go-jmespath/Makefile b/vendor/github.com/jmespath/go-jmespath/Makefile new file mode 100644 index 0000000..a828d28 --- /dev/null +++ b/vendor/github.com/jmespath/go-jmespath/Makefile @@ -0,0 +1,44 @@ + +CMD = jpgo + +help: + @echo "Please use \`make ' where is one of" + @echo " test to run all the tests" + @echo " build to build the library and jp executable" + @echo " generate to run codegen" + + +generate: + go generate ./... + +build: + rm -f $(CMD) + go build ./... + rm -f cmd/$(CMD)/$(CMD) && cd cmd/$(CMD)/ && go build ./... + mv cmd/$(CMD)/$(CMD) . + +test: + go test -v ./... + +check: + go vet ./... + @echo "golint ./..." + @lint=`golint ./...`; \ + lint=`echo "$$lint" | grep -v "astnodetype_string.go" | grep -v "toktype_string.go"`; \ + echo "$$lint"; \ + if [ "$$lint" != "" ]; then exit 1; fi + +htmlc: + go test -coverprofile="/tmp/jpcov" && go tool cover -html="/tmp/jpcov" && unlink /tmp/jpcov + +buildfuzz: + go-fuzz-build github.com/jmespath/go-jmespath/fuzz + +fuzz: buildfuzz + go-fuzz -bin=./jmespath-fuzz.zip -workdir=fuzz/testdata + +bench: + go test -bench . -cpuprofile cpu.out + +pprof-cpu: + go tool pprof ./go-jmespath.test ./cpu.out diff --git a/vendor/github.com/jmespath/go-jmespath/README.md b/vendor/github.com/jmespath/go-jmespath/README.md new file mode 100644 index 0000000..187ef67 --- /dev/null +++ b/vendor/github.com/jmespath/go-jmespath/README.md @@ -0,0 +1,7 @@ +# go-jmespath - A JMESPath implementation in Go + +[![Build Status](https://img.shields.io/travis/jmespath/go-jmespath.svg)](https://travis-ci.org/jmespath/go-jmespath) + + + +See http://jmespath.org for more info. diff --git a/vendor/github.com/jmespath/go-jmespath/api.go b/vendor/github.com/jmespath/go-jmespath/api.go new file mode 100644 index 0000000..8e26ffe --- /dev/null +++ b/vendor/github.com/jmespath/go-jmespath/api.go @@ -0,0 +1,49 @@ +package jmespath + +import "strconv" + +// JMESPath is the epresentation of a compiled JMES path query. A JMESPath is +// safe for concurrent use by multiple goroutines. +type JMESPath struct { + ast ASTNode + intr *treeInterpreter +} + +// Compile parses a JMESPath expression and returns, if successful, a JMESPath +// object that can be used to match against data. +func Compile(expression string) (*JMESPath, error) { + parser := NewParser() + ast, err := parser.Parse(expression) + if err != nil { + return nil, err + } + jmespath := &JMESPath{ast: ast, intr: newInterpreter()} + return jmespath, nil +} + +// MustCompile is like Compile but panics if the expression cannot be parsed. +// It simplifies safe initialization of global variables holding compiled +// JMESPaths. +func MustCompile(expression string) *JMESPath { + jmespath, err := Compile(expression) + if err != nil { + panic(`jmespath: Compile(` + strconv.Quote(expression) + `): ` + err.Error()) + } + return jmespath +} + +// Search evaluates a JMESPath expression against input data and returns the result. +func (jp *JMESPath) Search(data interface{}) (interface{}, error) { + return jp.intr.Execute(jp.ast, data) +} + +// Search evaluates a JMESPath expression against input data and returns the result. +func Search(expression string, data interface{}) (interface{}, error) { + intr := newInterpreter() + parser := NewParser() + ast, err := parser.Parse(expression) + if err != nil { + return nil, err + } + return intr.Execute(ast, data) +} diff --git a/vendor/github.com/jmespath/go-jmespath/astnodetype_string.go b/vendor/github.com/jmespath/go-jmespath/astnodetype_string.go new file mode 100644 index 0000000..1cd2d23 --- /dev/null +++ b/vendor/github.com/jmespath/go-jmespath/astnodetype_string.go @@ -0,0 +1,16 @@ +// generated by stringer -type astNodeType; DO NOT EDIT + +package jmespath + +import "fmt" + +const _astNodeType_name = "ASTEmptyASTComparatorASTCurrentNodeASTExpRefASTFunctionExpressionASTFieldASTFilterProjectionASTFlattenASTIdentityASTIndexASTIndexExpressionASTKeyValPairASTLiteralASTMultiSelectHashASTMultiSelectListASTOrExpressionASTAndExpressionASTNotExpressionASTPipeASTProjectionASTSubexpressionASTSliceASTValueProjection" + +var _astNodeType_index = [...]uint16{0, 8, 21, 35, 44, 65, 73, 92, 102, 113, 121, 139, 152, 162, 180, 198, 213, 229, 245, 252, 265, 281, 289, 307} + +func (i astNodeType) String() string { + if i < 0 || i >= astNodeType(len(_astNodeType_index)-1) { + return fmt.Sprintf("astNodeType(%d)", i) + } + return _astNodeType_name[_astNodeType_index[i]:_astNodeType_index[i+1]] +} diff --git a/vendor/github.com/jmespath/go-jmespath/functions.go b/vendor/github.com/jmespath/go-jmespath/functions.go new file mode 100644 index 0000000..9b7cd89 --- /dev/null +++ b/vendor/github.com/jmespath/go-jmespath/functions.go @@ -0,0 +1,842 @@ +package jmespath + +import ( + "encoding/json" + "errors" + "fmt" + "math" + "reflect" + "sort" + "strconv" + "strings" + "unicode/utf8" +) + +type jpFunction func(arguments []interface{}) (interface{}, error) + +type jpType string + +const ( + jpUnknown jpType = "unknown" + jpNumber jpType = "number" + jpString jpType = "string" + jpArray jpType = "array" + jpObject jpType = "object" + jpArrayNumber jpType = "array[number]" + jpArrayString jpType = "array[string]" + jpExpref jpType = "expref" + jpAny jpType = "any" +) + +type functionEntry struct { + name string + arguments []argSpec + handler jpFunction + hasExpRef bool +} + +type argSpec struct { + types []jpType + variadic bool +} + +type byExprString struct { + intr *treeInterpreter + node ASTNode + items []interface{} + hasError bool +} + +func (a *byExprString) Len() int { + return len(a.items) +} +func (a *byExprString) Swap(i, j int) { + a.items[i], a.items[j] = a.items[j], a.items[i] +} +func (a *byExprString) Less(i, j int) bool { + first, err := a.intr.Execute(a.node, a.items[i]) + if err != nil { + a.hasError = true + // Return a dummy value. + return true + } + ith, ok := first.(string) + if !ok { + a.hasError = true + return true + } + second, err := a.intr.Execute(a.node, a.items[j]) + if err != nil { + a.hasError = true + // Return a dummy value. + return true + } + jth, ok := second.(string) + if !ok { + a.hasError = true + return true + } + return ith < jth +} + +type byExprFloat struct { + intr *treeInterpreter + node ASTNode + items []interface{} + hasError bool +} + +func (a *byExprFloat) Len() int { + return len(a.items) +} +func (a *byExprFloat) Swap(i, j int) { + a.items[i], a.items[j] = a.items[j], a.items[i] +} +func (a *byExprFloat) Less(i, j int) bool { + first, err := a.intr.Execute(a.node, a.items[i]) + if err != nil { + a.hasError = true + // Return a dummy value. + return true + } + ith, ok := first.(float64) + if !ok { + a.hasError = true + return true + } + second, err := a.intr.Execute(a.node, a.items[j]) + if err != nil { + a.hasError = true + // Return a dummy value. + return true + } + jth, ok := second.(float64) + if !ok { + a.hasError = true + return true + } + return ith < jth +} + +type functionCaller struct { + functionTable map[string]functionEntry +} + +func newFunctionCaller() *functionCaller { + caller := &functionCaller{} + caller.functionTable = map[string]functionEntry{ + "length": { + name: "length", + arguments: []argSpec{ + {types: []jpType{jpString, jpArray, jpObject}}, + }, + handler: jpfLength, + }, + "starts_with": { + name: "starts_with", + arguments: []argSpec{ + {types: []jpType{jpString}}, + {types: []jpType{jpString}}, + }, + handler: jpfStartsWith, + }, + "abs": { + name: "abs", + arguments: []argSpec{ + {types: []jpType{jpNumber}}, + }, + handler: jpfAbs, + }, + "avg": { + name: "avg", + arguments: []argSpec{ + {types: []jpType{jpArrayNumber}}, + }, + handler: jpfAvg, + }, + "ceil": { + name: "ceil", + arguments: []argSpec{ + {types: []jpType{jpNumber}}, + }, + handler: jpfCeil, + }, + "contains": { + name: "contains", + arguments: []argSpec{ + {types: []jpType{jpArray, jpString}}, + {types: []jpType{jpAny}}, + }, + handler: jpfContains, + }, + "ends_with": { + name: "ends_with", + arguments: []argSpec{ + {types: []jpType{jpString}}, + {types: []jpType{jpString}}, + }, + handler: jpfEndsWith, + }, + "floor": { + name: "floor", + arguments: []argSpec{ + {types: []jpType{jpNumber}}, + }, + handler: jpfFloor, + }, + "map": { + name: "amp", + arguments: []argSpec{ + {types: []jpType{jpExpref}}, + {types: []jpType{jpArray}}, + }, + handler: jpfMap, + hasExpRef: true, + }, + "max": { + name: "max", + arguments: []argSpec{ + {types: []jpType{jpArrayNumber, jpArrayString}}, + }, + handler: jpfMax, + }, + "merge": { + name: "merge", + arguments: []argSpec{ + {types: []jpType{jpObject}, variadic: true}, + }, + handler: jpfMerge, + }, + "max_by": { + name: "max_by", + arguments: []argSpec{ + {types: []jpType{jpArray}}, + {types: []jpType{jpExpref}}, + }, + handler: jpfMaxBy, + hasExpRef: true, + }, + "sum": { + name: "sum", + arguments: []argSpec{ + {types: []jpType{jpArrayNumber}}, + }, + handler: jpfSum, + }, + "min": { + name: "min", + arguments: []argSpec{ + {types: []jpType{jpArrayNumber, jpArrayString}}, + }, + handler: jpfMin, + }, + "min_by": { + name: "min_by", + arguments: []argSpec{ + {types: []jpType{jpArray}}, + {types: []jpType{jpExpref}}, + }, + handler: jpfMinBy, + hasExpRef: true, + }, + "type": { + name: "type", + arguments: []argSpec{ + {types: []jpType{jpAny}}, + }, + handler: jpfType, + }, + "keys": { + name: "keys", + arguments: []argSpec{ + {types: []jpType{jpObject}}, + }, + handler: jpfKeys, + }, + "values": { + name: "values", + arguments: []argSpec{ + {types: []jpType{jpObject}}, + }, + handler: jpfValues, + }, + "sort": { + name: "sort", + arguments: []argSpec{ + {types: []jpType{jpArrayString, jpArrayNumber}}, + }, + handler: jpfSort, + }, + "sort_by": { + name: "sort_by", + arguments: []argSpec{ + {types: []jpType{jpArray}}, + {types: []jpType{jpExpref}}, + }, + handler: jpfSortBy, + hasExpRef: true, + }, + "join": { + name: "join", + arguments: []argSpec{ + {types: []jpType{jpString}}, + {types: []jpType{jpArrayString}}, + }, + handler: jpfJoin, + }, + "reverse": { + name: "reverse", + arguments: []argSpec{ + {types: []jpType{jpArray, jpString}}, + }, + handler: jpfReverse, + }, + "to_array": { + name: "to_array", + arguments: []argSpec{ + {types: []jpType{jpAny}}, + }, + handler: jpfToArray, + }, + "to_string": { + name: "to_string", + arguments: []argSpec{ + {types: []jpType{jpAny}}, + }, + handler: jpfToString, + }, + "to_number": { + name: "to_number", + arguments: []argSpec{ + {types: []jpType{jpAny}}, + }, + handler: jpfToNumber, + }, + "not_null": { + name: "not_null", + arguments: []argSpec{ + {types: []jpType{jpAny}, variadic: true}, + }, + handler: jpfNotNull, + }, + } + return caller +} + +func (e *functionEntry) resolveArgs(arguments []interface{}) ([]interface{}, error) { + if len(e.arguments) == 0 { + return arguments, nil + } + if !e.arguments[len(e.arguments)-1].variadic { + if len(e.arguments) != len(arguments) { + return nil, errors.New("incorrect number of args") + } + for i, spec := range e.arguments { + userArg := arguments[i] + err := spec.typeCheck(userArg) + if err != nil { + return nil, err + } + } + return arguments, nil + } + if len(arguments) < len(e.arguments) { + return nil, errors.New("Invalid arity.") + } + return arguments, nil +} + +func (a *argSpec) typeCheck(arg interface{}) error { + for _, t := range a.types { + switch t { + case jpNumber: + if _, ok := arg.(float64); ok { + return nil + } + case jpString: + if _, ok := arg.(string); ok { + return nil + } + case jpArray: + if isSliceType(arg) { + return nil + } + case jpObject: + if _, ok := arg.(map[string]interface{}); ok { + return nil + } + case jpArrayNumber: + if _, ok := toArrayNum(arg); ok { + return nil + } + case jpArrayString: + if _, ok := toArrayStr(arg); ok { + return nil + } + case jpAny: + return nil + case jpExpref: + if _, ok := arg.(expRef); ok { + return nil + } + } + } + return fmt.Errorf("Invalid type for: %v, expected: %#v", arg, a.types) +} + +func (f *functionCaller) CallFunction(name string, arguments []interface{}, intr *treeInterpreter) (interface{}, error) { + entry, ok := f.functionTable[name] + if !ok { + return nil, errors.New("unknown function: " + name) + } + resolvedArgs, err := entry.resolveArgs(arguments) + if err != nil { + return nil, err + } + if entry.hasExpRef { + var extra []interface{} + extra = append(extra, intr) + resolvedArgs = append(extra, resolvedArgs...) + } + return entry.handler(resolvedArgs) +} + +func jpfAbs(arguments []interface{}) (interface{}, error) { + num := arguments[0].(float64) + return math.Abs(num), nil +} + +func jpfLength(arguments []interface{}) (interface{}, error) { + arg := arguments[0] + if c, ok := arg.(string); ok { + return float64(utf8.RuneCountInString(c)), nil + } else if isSliceType(arg) { + v := reflect.ValueOf(arg) + return float64(v.Len()), nil + } else if c, ok := arg.(map[string]interface{}); ok { + return float64(len(c)), nil + } + return nil, errors.New("could not compute length()") +} + +func jpfStartsWith(arguments []interface{}) (interface{}, error) { + search := arguments[0].(string) + prefix := arguments[1].(string) + return strings.HasPrefix(search, prefix), nil +} + +func jpfAvg(arguments []interface{}) (interface{}, error) { + // We've already type checked the value so we can safely use + // type assertions. + args := arguments[0].([]interface{}) + length := float64(len(args)) + numerator := 0.0 + for _, n := range args { + numerator += n.(float64) + } + return numerator / length, nil +} +func jpfCeil(arguments []interface{}) (interface{}, error) { + val := arguments[0].(float64) + return math.Ceil(val), nil +} +func jpfContains(arguments []interface{}) (interface{}, error) { + search := arguments[0] + el := arguments[1] + if searchStr, ok := search.(string); ok { + if elStr, ok := el.(string); ok { + return strings.Index(searchStr, elStr) != -1, nil + } + return false, nil + } + // Otherwise this is a generic contains for []interface{} + general := search.([]interface{}) + for _, item := range general { + if item == el { + return true, nil + } + } + return false, nil +} +func jpfEndsWith(arguments []interface{}) (interface{}, error) { + search := arguments[0].(string) + suffix := arguments[1].(string) + return strings.HasSuffix(search, suffix), nil +} +func jpfFloor(arguments []interface{}) (interface{}, error) { + val := arguments[0].(float64) + return math.Floor(val), nil +} +func jpfMap(arguments []interface{}) (interface{}, error) { + intr := arguments[0].(*treeInterpreter) + exp := arguments[1].(expRef) + node := exp.ref + arr := arguments[2].([]interface{}) + mapped := make([]interface{}, 0, len(arr)) + for _, value := range arr { + current, err := intr.Execute(node, value) + if err != nil { + return nil, err + } + mapped = append(mapped, current) + } + return mapped, nil +} +func jpfMax(arguments []interface{}) (interface{}, error) { + if items, ok := toArrayNum(arguments[0]); ok { + if len(items) == 0 { + return nil, nil + } + if len(items) == 1 { + return items[0], nil + } + best := items[0] + for _, item := range items[1:] { + if item > best { + best = item + } + } + return best, nil + } + // Otherwise we're dealing with a max() of strings. + items, _ := toArrayStr(arguments[0]) + if len(items) == 0 { + return nil, nil + } + if len(items) == 1 { + return items[0], nil + } + best := items[0] + for _, item := range items[1:] { + if item > best { + best = item + } + } + return best, nil +} +func jpfMerge(arguments []interface{}) (interface{}, error) { + final := make(map[string]interface{}) + for _, m := range arguments { + mapped := m.(map[string]interface{}) + for key, value := range mapped { + final[key] = value + } + } + return final, nil +} +func jpfMaxBy(arguments []interface{}) (interface{}, error) { + intr := arguments[0].(*treeInterpreter) + arr := arguments[1].([]interface{}) + exp := arguments[2].(expRef) + node := exp.ref + if len(arr) == 0 { + return nil, nil + } else if len(arr) == 1 { + return arr[0], nil + } + start, err := intr.Execute(node, arr[0]) + if err != nil { + return nil, err + } + switch t := start.(type) { + case float64: + bestVal := t + bestItem := arr[0] + for _, item := range arr[1:] { + result, err := intr.Execute(node, item) + if err != nil { + return nil, err + } + current, ok := result.(float64) + if !ok { + return nil, errors.New("invalid type, must be number") + } + if current > bestVal { + bestVal = current + bestItem = item + } + } + return bestItem, nil + case string: + bestVal := t + bestItem := arr[0] + for _, item := range arr[1:] { + result, err := intr.Execute(node, item) + if err != nil { + return nil, err + } + current, ok := result.(string) + if !ok { + return nil, errors.New("invalid type, must be string") + } + if current > bestVal { + bestVal = current + bestItem = item + } + } + return bestItem, nil + default: + return nil, errors.New("invalid type, must be number of string") + } +} +func jpfSum(arguments []interface{}) (interface{}, error) { + items, _ := toArrayNum(arguments[0]) + sum := 0.0 + for _, item := range items { + sum += item + } + return sum, nil +} + +func jpfMin(arguments []interface{}) (interface{}, error) { + if items, ok := toArrayNum(arguments[0]); ok { + if len(items) == 0 { + return nil, nil + } + if len(items) == 1 { + return items[0], nil + } + best := items[0] + for _, item := range items[1:] { + if item < best { + best = item + } + } + return best, nil + } + items, _ := toArrayStr(arguments[0]) + if len(items) == 0 { + return nil, nil + } + if len(items) == 1 { + return items[0], nil + } + best := items[0] + for _, item := range items[1:] { + if item < best { + best = item + } + } + return best, nil +} + +func jpfMinBy(arguments []interface{}) (interface{}, error) { + intr := arguments[0].(*treeInterpreter) + arr := arguments[1].([]interface{}) + exp := arguments[2].(expRef) + node := exp.ref + if len(arr) == 0 { + return nil, nil + } else if len(arr) == 1 { + return arr[0], nil + } + start, err := intr.Execute(node, arr[0]) + if err != nil { + return nil, err + } + if t, ok := start.(float64); ok { + bestVal := t + bestItem := arr[0] + for _, item := range arr[1:] { + result, err := intr.Execute(node, item) + if err != nil { + return nil, err + } + current, ok := result.(float64) + if !ok { + return nil, errors.New("invalid type, must be number") + } + if current < bestVal { + bestVal = current + bestItem = item + } + } + return bestItem, nil + } else if t, ok := start.(string); ok { + bestVal := t + bestItem := arr[0] + for _, item := range arr[1:] { + result, err := intr.Execute(node, item) + if err != nil { + return nil, err + } + current, ok := result.(string) + if !ok { + return nil, errors.New("invalid type, must be string") + } + if current < bestVal { + bestVal = current + bestItem = item + } + } + return bestItem, nil + } else { + return nil, errors.New("invalid type, must be number of string") + } +} +func jpfType(arguments []interface{}) (interface{}, error) { + arg := arguments[0] + if _, ok := arg.(float64); ok { + return "number", nil + } + if _, ok := arg.(string); ok { + return "string", nil + } + if _, ok := arg.([]interface{}); ok { + return "array", nil + } + if _, ok := arg.(map[string]interface{}); ok { + return "object", nil + } + if arg == nil { + return "null", nil + } + if arg == true || arg == false { + return "boolean", nil + } + return nil, errors.New("unknown type") +} +func jpfKeys(arguments []interface{}) (interface{}, error) { + arg := arguments[0].(map[string]interface{}) + collected := make([]interface{}, 0, len(arg)) + for key := range arg { + collected = append(collected, key) + } + return collected, nil +} +func jpfValues(arguments []interface{}) (interface{}, error) { + arg := arguments[0].(map[string]interface{}) + collected := make([]interface{}, 0, len(arg)) + for _, value := range arg { + collected = append(collected, value) + } + return collected, nil +} +func jpfSort(arguments []interface{}) (interface{}, error) { + if items, ok := toArrayNum(arguments[0]); ok { + d := sort.Float64Slice(items) + sort.Stable(d) + final := make([]interface{}, len(d)) + for i, val := range d { + final[i] = val + } + return final, nil + } + // Otherwise we're dealing with sort()'ing strings. + items, _ := toArrayStr(arguments[0]) + d := sort.StringSlice(items) + sort.Stable(d) + final := make([]interface{}, len(d)) + for i, val := range d { + final[i] = val + } + return final, nil +} +func jpfSortBy(arguments []interface{}) (interface{}, error) { + intr := arguments[0].(*treeInterpreter) + arr := arguments[1].([]interface{}) + exp := arguments[2].(expRef) + node := exp.ref + if len(arr) == 0 { + return arr, nil + } else if len(arr) == 1 { + return arr, nil + } + start, err := intr.Execute(node, arr[0]) + if err != nil { + return nil, err + } + if _, ok := start.(float64); ok { + sortable := &byExprFloat{intr, node, arr, false} + sort.Stable(sortable) + if sortable.hasError { + return nil, errors.New("error in sort_by comparison") + } + return arr, nil + } else if _, ok := start.(string); ok { + sortable := &byExprString{intr, node, arr, false} + sort.Stable(sortable) + if sortable.hasError { + return nil, errors.New("error in sort_by comparison") + } + return arr, nil + } else { + return nil, errors.New("invalid type, must be number of string") + } +} +func jpfJoin(arguments []interface{}) (interface{}, error) { + sep := arguments[0].(string) + // We can't just do arguments[1].([]string), we have to + // manually convert each item to a string. + arrayStr := []string{} + for _, item := range arguments[1].([]interface{}) { + arrayStr = append(arrayStr, item.(string)) + } + return strings.Join(arrayStr, sep), nil +} +func jpfReverse(arguments []interface{}) (interface{}, error) { + if s, ok := arguments[0].(string); ok { + r := []rune(s) + for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 { + r[i], r[j] = r[j], r[i] + } + return string(r), nil + } + items := arguments[0].([]interface{}) + length := len(items) + reversed := make([]interface{}, length) + for i, item := range items { + reversed[length-(i+1)] = item + } + return reversed, nil +} +func jpfToArray(arguments []interface{}) (interface{}, error) { + if _, ok := arguments[0].([]interface{}); ok { + return arguments[0], nil + } + return arguments[:1:1], nil +} +func jpfToString(arguments []interface{}) (interface{}, error) { + if v, ok := arguments[0].(string); ok { + return v, nil + } + result, err := json.Marshal(arguments[0]) + if err != nil { + return nil, err + } + return string(result), nil +} +func jpfToNumber(arguments []interface{}) (interface{}, error) { + arg := arguments[0] + if v, ok := arg.(float64); ok { + return v, nil + } + if v, ok := arg.(string); ok { + conv, err := strconv.ParseFloat(v, 64) + if err != nil { + return nil, nil + } + return conv, nil + } + if _, ok := arg.([]interface{}); ok { + return nil, nil + } + if _, ok := arg.(map[string]interface{}); ok { + return nil, nil + } + if arg == nil { + return nil, nil + } + if arg == true || arg == false { + return nil, nil + } + return nil, errors.New("unknown type") +} +func jpfNotNull(arguments []interface{}) (interface{}, error) { + for _, arg := range arguments { + if arg != nil { + return arg, nil + } + } + return nil, nil +} diff --git a/vendor/github.com/jmespath/go-jmespath/interpreter.go b/vendor/github.com/jmespath/go-jmespath/interpreter.go new file mode 100644 index 0000000..13c7460 --- /dev/null +++ b/vendor/github.com/jmespath/go-jmespath/interpreter.go @@ -0,0 +1,418 @@ +package jmespath + +import ( + "errors" + "reflect" + "unicode" + "unicode/utf8" +) + +/* This is a tree based interpreter. It walks the AST and directly + interprets the AST to search through a JSON document. +*/ + +type treeInterpreter struct { + fCall *functionCaller +} + +func newInterpreter() *treeInterpreter { + interpreter := treeInterpreter{} + interpreter.fCall = newFunctionCaller() + return &interpreter +} + +type expRef struct { + ref ASTNode +} + +// Execute takes an ASTNode and input data and interprets the AST directly. +// It will produce the result of applying the JMESPath expression associated +// with the ASTNode to the input data "value". +func (intr *treeInterpreter) Execute(node ASTNode, value interface{}) (interface{}, error) { + switch node.nodeType { + case ASTComparator: + left, err := intr.Execute(node.children[0], value) + if err != nil { + return nil, err + } + right, err := intr.Execute(node.children[1], value) + if err != nil { + return nil, err + } + switch node.value { + case tEQ: + return objsEqual(left, right), nil + case tNE: + return !objsEqual(left, right), nil + } + leftNum, ok := left.(float64) + if !ok { + return nil, nil + } + rightNum, ok := right.(float64) + if !ok { + return nil, nil + } + switch node.value { + case tGT: + return leftNum > rightNum, nil + case tGTE: + return leftNum >= rightNum, nil + case tLT: + return leftNum < rightNum, nil + case tLTE: + return leftNum <= rightNum, nil + } + case ASTExpRef: + return expRef{ref: node.children[0]}, nil + case ASTFunctionExpression: + resolvedArgs := []interface{}{} + for _, arg := range node.children { + current, err := intr.Execute(arg, value) + if err != nil { + return nil, err + } + resolvedArgs = append(resolvedArgs, current) + } + return intr.fCall.CallFunction(node.value.(string), resolvedArgs, intr) + case ASTField: + if m, ok := value.(map[string]interface{}); ok { + key := node.value.(string) + return m[key], nil + } + return intr.fieldFromStruct(node.value.(string), value) + case ASTFilterProjection: + left, err := intr.Execute(node.children[0], value) + if err != nil { + return nil, nil + } + sliceType, ok := left.([]interface{}) + if !ok { + if isSliceType(left) { + return intr.filterProjectionWithReflection(node, left) + } + return nil, nil + } + compareNode := node.children[2] + collected := []interface{}{} + for _, element := range sliceType { + result, err := intr.Execute(compareNode, element) + if err != nil { + return nil, err + } + if !isFalse(result) { + current, err := intr.Execute(node.children[1], element) + if err != nil { + return nil, err + } + if current != nil { + collected = append(collected, current) + } + } + } + return collected, nil + case ASTFlatten: + left, err := intr.Execute(node.children[0], value) + if err != nil { + return nil, nil + } + sliceType, ok := left.([]interface{}) + if !ok { + // If we can't type convert to []interface{}, there's + // a chance this could still work via reflection if we're + // dealing with user provided types. + if isSliceType(left) { + return intr.flattenWithReflection(left) + } + return nil, nil + } + flattened := []interface{}{} + for _, element := range sliceType { + if elementSlice, ok := element.([]interface{}); ok { + flattened = append(flattened, elementSlice...) + } else if isSliceType(element) { + reflectFlat := []interface{}{} + v := reflect.ValueOf(element) + for i := 0; i < v.Len(); i++ { + reflectFlat = append(reflectFlat, v.Index(i).Interface()) + } + flattened = append(flattened, reflectFlat...) + } else { + flattened = append(flattened, element) + } + } + return flattened, nil + case ASTIdentity, ASTCurrentNode: + return value, nil + case ASTIndex: + if sliceType, ok := value.([]interface{}); ok { + index := node.value.(int) + if index < 0 { + index += len(sliceType) + } + if index < len(sliceType) && index >= 0 { + return sliceType[index], nil + } + return nil, nil + } + // Otherwise try via reflection. + rv := reflect.ValueOf(value) + if rv.Kind() == reflect.Slice { + index := node.value.(int) + if index < 0 { + index += rv.Len() + } + if index < rv.Len() && index >= 0 { + v := rv.Index(index) + return v.Interface(), nil + } + } + return nil, nil + case ASTKeyValPair: + return intr.Execute(node.children[0], value) + case ASTLiteral: + return node.value, nil + case ASTMultiSelectHash: + if value == nil { + return nil, nil + } + collected := make(map[string]interface{}) + for _, child := range node.children { + current, err := intr.Execute(child, value) + if err != nil { + return nil, err + } + key := child.value.(string) + collected[key] = current + } + return collected, nil + case ASTMultiSelectList: + if value == nil { + return nil, nil + } + collected := []interface{}{} + for _, child := range node.children { + current, err := intr.Execute(child, value) + if err != nil { + return nil, err + } + collected = append(collected, current) + } + return collected, nil + case ASTOrExpression: + matched, err := intr.Execute(node.children[0], value) + if err != nil { + return nil, err + } + if isFalse(matched) { + matched, err = intr.Execute(node.children[1], value) + if err != nil { + return nil, err + } + } + return matched, nil + case ASTAndExpression: + matched, err := intr.Execute(node.children[0], value) + if err != nil { + return nil, err + } + if isFalse(matched) { + return matched, nil + } + return intr.Execute(node.children[1], value) + case ASTNotExpression: + matched, err := intr.Execute(node.children[0], value) + if err != nil { + return nil, err + } + if isFalse(matched) { + return true, nil + } + return false, nil + case ASTPipe: + result := value + var err error + for _, child := range node.children { + result, err = intr.Execute(child, result) + if err != nil { + return nil, err + } + } + return result, nil + case ASTProjection: + left, err := intr.Execute(node.children[0], value) + if err != nil { + return nil, err + } + sliceType, ok := left.([]interface{}) + if !ok { + if isSliceType(left) { + return intr.projectWithReflection(node, left) + } + return nil, nil + } + collected := []interface{}{} + var current interface{} + for _, element := range sliceType { + current, err = intr.Execute(node.children[1], element) + if err != nil { + return nil, err + } + if current != nil { + collected = append(collected, current) + } + } + return collected, nil + case ASTSubexpression, ASTIndexExpression: + left, err := intr.Execute(node.children[0], value) + if err != nil { + return nil, err + } + return intr.Execute(node.children[1], left) + case ASTSlice: + sliceType, ok := value.([]interface{}) + if !ok { + if isSliceType(value) { + return intr.sliceWithReflection(node, value) + } + return nil, nil + } + parts := node.value.([]*int) + sliceParams := make([]sliceParam, 3) + for i, part := range parts { + if part != nil { + sliceParams[i].Specified = true + sliceParams[i].N = *part + } + } + return slice(sliceType, sliceParams) + case ASTValueProjection: + left, err := intr.Execute(node.children[0], value) + if err != nil { + return nil, nil + } + mapType, ok := left.(map[string]interface{}) + if !ok { + return nil, nil + } + values := make([]interface{}, len(mapType)) + for _, value := range mapType { + values = append(values, value) + } + collected := []interface{}{} + for _, element := range values { + current, err := intr.Execute(node.children[1], element) + if err != nil { + return nil, err + } + if current != nil { + collected = append(collected, current) + } + } + return collected, nil + } + return nil, errors.New("Unknown AST node: " + node.nodeType.String()) +} + +func (intr *treeInterpreter) fieldFromStruct(key string, value interface{}) (interface{}, error) { + rv := reflect.ValueOf(value) + first, n := utf8.DecodeRuneInString(key) + fieldName := string(unicode.ToUpper(first)) + key[n:] + if rv.Kind() == reflect.Struct { + v := rv.FieldByName(fieldName) + if !v.IsValid() { + return nil, nil + } + return v.Interface(), nil + } else if rv.Kind() == reflect.Ptr { + // Handle multiple levels of indirection? + if rv.IsNil() { + return nil, nil + } + rv = rv.Elem() + v := rv.FieldByName(fieldName) + if !v.IsValid() { + return nil, nil + } + return v.Interface(), nil + } + return nil, nil +} + +func (intr *treeInterpreter) flattenWithReflection(value interface{}) (interface{}, error) { + v := reflect.ValueOf(value) + flattened := []interface{}{} + for i := 0; i < v.Len(); i++ { + element := v.Index(i).Interface() + if reflect.TypeOf(element).Kind() == reflect.Slice { + // Then insert the contents of the element + // slice into the flattened slice, + // i.e flattened = append(flattened, mySlice...) + elementV := reflect.ValueOf(element) + for j := 0; j < elementV.Len(); j++ { + flattened = append( + flattened, elementV.Index(j).Interface()) + } + } else { + flattened = append(flattened, element) + } + } + return flattened, nil +} + +func (intr *treeInterpreter) sliceWithReflection(node ASTNode, value interface{}) (interface{}, error) { + v := reflect.ValueOf(value) + parts := node.value.([]*int) + sliceParams := make([]sliceParam, 3) + for i, part := range parts { + if part != nil { + sliceParams[i].Specified = true + sliceParams[i].N = *part + } + } + final := []interface{}{} + for i := 0; i < v.Len(); i++ { + element := v.Index(i).Interface() + final = append(final, element) + } + return slice(final, sliceParams) +} + +func (intr *treeInterpreter) filterProjectionWithReflection(node ASTNode, value interface{}) (interface{}, error) { + compareNode := node.children[2] + collected := []interface{}{} + v := reflect.ValueOf(value) + for i := 0; i < v.Len(); i++ { + element := v.Index(i).Interface() + result, err := intr.Execute(compareNode, element) + if err != nil { + return nil, err + } + if !isFalse(result) { + current, err := intr.Execute(node.children[1], element) + if err != nil { + return nil, err + } + if current != nil { + collected = append(collected, current) + } + } + } + return collected, nil +} + +func (intr *treeInterpreter) projectWithReflection(node ASTNode, value interface{}) (interface{}, error) { + collected := []interface{}{} + v := reflect.ValueOf(value) + for i := 0; i < v.Len(); i++ { + element := v.Index(i).Interface() + result, err := intr.Execute(node.children[1], element) + if err != nil { + return nil, err + } + if result != nil { + collected = append(collected, result) + } + } + return collected, nil +} diff --git a/vendor/github.com/jmespath/go-jmespath/lexer.go b/vendor/github.com/jmespath/go-jmespath/lexer.go new file mode 100644 index 0000000..817900c --- /dev/null +++ b/vendor/github.com/jmespath/go-jmespath/lexer.go @@ -0,0 +1,420 @@ +package jmespath + +import ( + "bytes" + "encoding/json" + "fmt" + "strconv" + "strings" + "unicode/utf8" +) + +type token struct { + tokenType tokType + value string + position int + length int +} + +type tokType int + +const eof = -1 + +// Lexer contains information about the expression being tokenized. +type Lexer struct { + expression string // The expression provided by the user. + currentPos int // The current position in the string. + lastWidth int // The width of the current rune. This + buf bytes.Buffer // Internal buffer used for building up values. +} + +// SyntaxError is the main error used whenever a lexing or parsing error occurs. +type SyntaxError struct { + msg string // Error message displayed to user + Expression string // Expression that generated a SyntaxError + Offset int // The location in the string where the error occurred +} + +func (e SyntaxError) Error() string { + // In the future, it would be good to underline the specific + // location where the error occurred. + return "SyntaxError: " + e.msg +} + +// HighlightLocation will show where the syntax error occurred. +// It will place a "^" character on a line below the expression +// at the point where the syntax error occurred. +func (e SyntaxError) HighlightLocation() string { + return e.Expression + "\n" + strings.Repeat(" ", e.Offset) + "^" +} + +//go:generate stringer -type=tokType +const ( + tUnknown tokType = iota + tStar + tDot + tFilter + tFlatten + tLparen + tRparen + tLbracket + tRbracket + tLbrace + tRbrace + tOr + tPipe + tNumber + tUnquotedIdentifier + tQuotedIdentifier + tComma + tColon + tLT + tLTE + tGT + tGTE + tEQ + tNE + tJSONLiteral + tStringLiteral + tCurrent + tExpref + tAnd + tNot + tEOF +) + +var basicTokens = map[rune]tokType{ + '.': tDot, + '*': tStar, + ',': tComma, + ':': tColon, + '{': tLbrace, + '}': tRbrace, + ']': tRbracket, // tLbracket not included because it could be "[]" + '(': tLparen, + ')': tRparen, + '@': tCurrent, +} + +// Bit mask for [a-zA-Z_] shifted down 64 bits to fit in a single uint64. +// When using this bitmask just be sure to shift the rune down 64 bits +// before checking against identifierStartBits. +const identifierStartBits uint64 = 576460745995190270 + +// Bit mask for [a-zA-Z0-9], 128 bits -> 2 uint64s. +var identifierTrailingBits = [2]uint64{287948901175001088, 576460745995190270} + +var whiteSpace = map[rune]bool{ + ' ': true, '\t': true, '\n': true, '\r': true, +} + +func (t token) String() string { + return fmt.Sprintf("Token{%+v, %s, %d, %d}", + t.tokenType, t.value, t.position, t.length) +} + +// NewLexer creates a new JMESPath lexer. +func NewLexer() *Lexer { + lexer := Lexer{} + return &lexer +} + +func (lexer *Lexer) next() rune { + if lexer.currentPos >= len(lexer.expression) { + lexer.lastWidth = 0 + return eof + } + r, w := utf8.DecodeRuneInString(lexer.expression[lexer.currentPos:]) + lexer.lastWidth = w + lexer.currentPos += w + return r +} + +func (lexer *Lexer) back() { + lexer.currentPos -= lexer.lastWidth +} + +func (lexer *Lexer) peek() rune { + t := lexer.next() + lexer.back() + return t +} + +// tokenize takes an expression and returns corresponding tokens. +func (lexer *Lexer) tokenize(expression string) ([]token, error) { + var tokens []token + lexer.expression = expression + lexer.currentPos = 0 + lexer.lastWidth = 0 +loop: + for { + r := lexer.next() + if identifierStartBits&(1<<(uint64(r)-64)) > 0 { + t := lexer.consumeUnquotedIdentifier() + tokens = append(tokens, t) + } else if val, ok := basicTokens[r]; ok { + // Basic single char token. + t := token{ + tokenType: val, + value: string(r), + position: lexer.currentPos - lexer.lastWidth, + length: 1, + } + tokens = append(tokens, t) + } else if r == '-' || (r >= '0' && r <= '9') { + t := lexer.consumeNumber() + tokens = append(tokens, t) + } else if r == '[' { + t := lexer.consumeLBracket() + tokens = append(tokens, t) + } else if r == '"' { + t, err := lexer.consumeQuotedIdentifier() + if err != nil { + return tokens, err + } + tokens = append(tokens, t) + } else if r == '\'' { + t, err := lexer.consumeRawStringLiteral() + if err != nil { + return tokens, err + } + tokens = append(tokens, t) + } else if r == '`' { + t, err := lexer.consumeLiteral() + if err != nil { + return tokens, err + } + tokens = append(tokens, t) + } else if r == '|' { + t := lexer.matchOrElse(r, '|', tOr, tPipe) + tokens = append(tokens, t) + } else if r == '<' { + t := lexer.matchOrElse(r, '=', tLTE, tLT) + tokens = append(tokens, t) + } else if r == '>' { + t := lexer.matchOrElse(r, '=', tGTE, tGT) + tokens = append(tokens, t) + } else if r == '!' { + t := lexer.matchOrElse(r, '=', tNE, tNot) + tokens = append(tokens, t) + } else if r == '=' { + t := lexer.matchOrElse(r, '=', tEQ, tUnknown) + tokens = append(tokens, t) + } else if r == '&' { + t := lexer.matchOrElse(r, '&', tAnd, tExpref) + tokens = append(tokens, t) + } else if r == eof { + break loop + } else if _, ok := whiteSpace[r]; ok { + // Ignore whitespace + } else { + return tokens, lexer.syntaxError(fmt.Sprintf("Unknown char: %s", strconv.QuoteRuneToASCII(r))) + } + } + tokens = append(tokens, token{tEOF, "", len(lexer.expression), 0}) + return tokens, nil +} + +// Consume characters until the ending rune "r" is reached. +// If the end of the expression is reached before seeing the +// terminating rune "r", then an error is returned. +// If no error occurs then the matching substring is returned. +// The returned string will not include the ending rune. +func (lexer *Lexer) consumeUntil(end rune) (string, error) { + start := lexer.currentPos + current := lexer.next() + for current != end && current != eof { + if current == '\\' && lexer.peek() != eof { + lexer.next() + } + current = lexer.next() + } + if lexer.lastWidth == 0 { + // Then we hit an EOF so we never reached the closing + // delimiter. + return "", SyntaxError{ + msg: "Unclosed delimiter: " + string(end), + Expression: lexer.expression, + Offset: len(lexer.expression), + } + } + return lexer.expression[start : lexer.currentPos-lexer.lastWidth], nil +} + +func (lexer *Lexer) consumeLiteral() (token, error) { + start := lexer.currentPos + value, err := lexer.consumeUntil('`') + if err != nil { + return token{}, err + } + value = strings.Replace(value, "\\`", "`", -1) + return token{ + tokenType: tJSONLiteral, + value: value, + position: start, + length: len(value), + }, nil +} + +func (lexer *Lexer) consumeRawStringLiteral() (token, error) { + start := lexer.currentPos + currentIndex := start + current := lexer.next() + for current != '\'' && lexer.peek() != eof { + if current == '\\' && lexer.peek() == '\'' { + chunk := lexer.expression[currentIndex : lexer.currentPos-1] + lexer.buf.WriteString(chunk) + lexer.buf.WriteString("'") + lexer.next() + currentIndex = lexer.currentPos + } + current = lexer.next() + } + if lexer.lastWidth == 0 { + // Then we hit an EOF so we never reached the closing + // delimiter. + return token{}, SyntaxError{ + msg: "Unclosed delimiter: '", + Expression: lexer.expression, + Offset: len(lexer.expression), + } + } + if currentIndex < lexer.currentPos { + lexer.buf.WriteString(lexer.expression[currentIndex : lexer.currentPos-1]) + } + value := lexer.buf.String() + // Reset the buffer so it can reused again. + lexer.buf.Reset() + return token{ + tokenType: tStringLiteral, + value: value, + position: start, + length: len(value), + }, nil +} + +func (lexer *Lexer) syntaxError(msg string) SyntaxError { + return SyntaxError{ + msg: msg, + Expression: lexer.expression, + Offset: lexer.currentPos - 1, + } +} + +// Checks for a two char token, otherwise matches a single character +// token. This is used whenever a two char token overlaps a single +// char token, e.g. "||" -> tPipe, "|" -> tOr. +func (lexer *Lexer) matchOrElse(first rune, second rune, matchedType tokType, singleCharType tokType) token { + start := lexer.currentPos - lexer.lastWidth + nextRune := lexer.next() + var t token + if nextRune == second { + t = token{ + tokenType: matchedType, + value: string(first) + string(second), + position: start, + length: 2, + } + } else { + lexer.back() + t = token{ + tokenType: singleCharType, + value: string(first), + position: start, + length: 1, + } + } + return t +} + +func (lexer *Lexer) consumeLBracket() token { + // There's three options here: + // 1. A filter expression "[?" + // 2. A flatten operator "[]" + // 3. A bare rbracket "[" + start := lexer.currentPos - lexer.lastWidth + nextRune := lexer.next() + var t token + if nextRune == '?' { + t = token{ + tokenType: tFilter, + value: "[?", + position: start, + length: 2, + } + } else if nextRune == ']' { + t = token{ + tokenType: tFlatten, + value: "[]", + position: start, + length: 2, + } + } else { + t = token{ + tokenType: tLbracket, + value: "[", + position: start, + length: 1, + } + lexer.back() + } + return t +} + +func (lexer *Lexer) consumeQuotedIdentifier() (token, error) { + start := lexer.currentPos + value, err := lexer.consumeUntil('"') + if err != nil { + return token{}, err + } + var decoded string + asJSON := []byte("\"" + value + "\"") + if err := json.Unmarshal([]byte(asJSON), &decoded); err != nil { + return token{}, err + } + return token{ + tokenType: tQuotedIdentifier, + value: decoded, + position: start - 1, + length: len(decoded), + }, nil +} + +func (lexer *Lexer) consumeUnquotedIdentifier() token { + // Consume runes until we reach the end of an unquoted + // identifier. + start := lexer.currentPos - lexer.lastWidth + for { + r := lexer.next() + if r < 0 || r > 128 || identifierTrailingBits[uint64(r)/64]&(1<<(uint64(r)%64)) == 0 { + lexer.back() + break + } + } + value := lexer.expression[start:lexer.currentPos] + return token{ + tokenType: tUnquotedIdentifier, + value: value, + position: start, + length: lexer.currentPos - start, + } +} + +func (lexer *Lexer) consumeNumber() token { + // Consume runes until we reach something that's not a number. + start := lexer.currentPos - lexer.lastWidth + for { + r := lexer.next() + if r < '0' || r > '9' { + lexer.back() + break + } + } + value := lexer.expression[start:lexer.currentPos] + return token{ + tokenType: tNumber, + value: value, + position: start, + length: lexer.currentPos - start, + } +} diff --git a/vendor/github.com/jmespath/go-jmespath/parser.go b/vendor/github.com/jmespath/go-jmespath/parser.go new file mode 100644 index 0000000..1240a17 --- /dev/null +++ b/vendor/github.com/jmespath/go-jmespath/parser.go @@ -0,0 +1,603 @@ +package jmespath + +import ( + "encoding/json" + "fmt" + "strconv" + "strings" +) + +type astNodeType int + +//go:generate stringer -type astNodeType +const ( + ASTEmpty astNodeType = iota + ASTComparator + ASTCurrentNode + ASTExpRef + ASTFunctionExpression + ASTField + ASTFilterProjection + ASTFlatten + ASTIdentity + ASTIndex + ASTIndexExpression + ASTKeyValPair + ASTLiteral + ASTMultiSelectHash + ASTMultiSelectList + ASTOrExpression + ASTAndExpression + ASTNotExpression + ASTPipe + ASTProjection + ASTSubexpression + ASTSlice + ASTValueProjection +) + +// ASTNode represents the abstract syntax tree of a JMESPath expression. +type ASTNode struct { + nodeType astNodeType + value interface{} + children []ASTNode +} + +func (node ASTNode) String() string { + return node.PrettyPrint(0) +} + +// PrettyPrint will pretty print the parsed AST. +// The AST is an implementation detail and this pretty print +// function is provided as a convenience method to help with +// debugging. You should not rely on its output as the internal +// structure of the AST may change at any time. +func (node ASTNode) PrettyPrint(indent int) string { + spaces := strings.Repeat(" ", indent) + output := fmt.Sprintf("%s%s {\n", spaces, node.nodeType) + nextIndent := indent + 2 + if node.value != nil { + if converted, ok := node.value.(fmt.Stringer); ok { + // Account for things like comparator nodes + // that are enums with a String() method. + output += fmt.Sprintf("%svalue: %s\n", strings.Repeat(" ", nextIndent), converted.String()) + } else { + output += fmt.Sprintf("%svalue: %#v\n", strings.Repeat(" ", nextIndent), node.value) + } + } + lastIndex := len(node.children) + if lastIndex > 0 { + output += fmt.Sprintf("%schildren: {\n", strings.Repeat(" ", nextIndent)) + childIndent := nextIndent + 2 + for _, elem := range node.children { + output += elem.PrettyPrint(childIndent) + } + } + output += fmt.Sprintf("%s}\n", spaces) + return output +} + +var bindingPowers = map[tokType]int{ + tEOF: 0, + tUnquotedIdentifier: 0, + tQuotedIdentifier: 0, + tRbracket: 0, + tRparen: 0, + tComma: 0, + tRbrace: 0, + tNumber: 0, + tCurrent: 0, + tExpref: 0, + tColon: 0, + tPipe: 1, + tOr: 2, + tAnd: 3, + tEQ: 5, + tLT: 5, + tLTE: 5, + tGT: 5, + tGTE: 5, + tNE: 5, + tFlatten: 9, + tStar: 20, + tFilter: 21, + tDot: 40, + tNot: 45, + tLbrace: 50, + tLbracket: 55, + tLparen: 60, +} + +// Parser holds state about the current expression being parsed. +type Parser struct { + expression string + tokens []token + index int +} + +// NewParser creates a new JMESPath parser. +func NewParser() *Parser { + p := Parser{} + return &p +} + +// Parse will compile a JMESPath expression. +func (p *Parser) Parse(expression string) (ASTNode, error) { + lexer := NewLexer() + p.expression = expression + p.index = 0 + tokens, err := lexer.tokenize(expression) + if err != nil { + return ASTNode{}, err + } + p.tokens = tokens + parsed, err := p.parseExpression(0) + if err != nil { + return ASTNode{}, err + } + if p.current() != tEOF { + return ASTNode{}, p.syntaxError(fmt.Sprintf( + "Unexpected token at the end of the expresssion: %s", p.current())) + } + return parsed, nil +} + +func (p *Parser) parseExpression(bindingPower int) (ASTNode, error) { + var err error + leftToken := p.lookaheadToken(0) + p.advance() + leftNode, err := p.nud(leftToken) + if err != nil { + return ASTNode{}, err + } + currentToken := p.current() + for bindingPower < bindingPowers[currentToken] { + p.advance() + leftNode, err = p.led(currentToken, leftNode) + if err != nil { + return ASTNode{}, err + } + currentToken = p.current() + } + return leftNode, nil +} + +func (p *Parser) parseIndexExpression() (ASTNode, error) { + if p.lookahead(0) == tColon || p.lookahead(1) == tColon { + return p.parseSliceExpression() + } + indexStr := p.lookaheadToken(0).value + parsedInt, err := strconv.Atoi(indexStr) + if err != nil { + return ASTNode{}, err + } + indexNode := ASTNode{nodeType: ASTIndex, value: parsedInt} + p.advance() + if err := p.match(tRbracket); err != nil { + return ASTNode{}, err + } + return indexNode, nil +} + +func (p *Parser) parseSliceExpression() (ASTNode, error) { + parts := []*int{nil, nil, nil} + index := 0 + current := p.current() + for current != tRbracket && index < 3 { + if current == tColon { + index++ + p.advance() + } else if current == tNumber { + parsedInt, err := strconv.Atoi(p.lookaheadToken(0).value) + if err != nil { + return ASTNode{}, err + } + parts[index] = &parsedInt + p.advance() + } else { + return ASTNode{}, p.syntaxError( + "Expected tColon or tNumber" + ", received: " + p.current().String()) + } + current = p.current() + } + if err := p.match(tRbracket); err != nil { + return ASTNode{}, err + } + return ASTNode{ + nodeType: ASTSlice, + value: parts, + }, nil +} + +func (p *Parser) match(tokenType tokType) error { + if p.current() == tokenType { + p.advance() + return nil + } + return p.syntaxError("Expected " + tokenType.String() + ", received: " + p.current().String()) +} + +func (p *Parser) led(tokenType tokType, node ASTNode) (ASTNode, error) { + switch tokenType { + case tDot: + if p.current() != tStar { + right, err := p.parseDotRHS(bindingPowers[tDot]) + return ASTNode{ + nodeType: ASTSubexpression, + children: []ASTNode{node, right}, + }, err + } + p.advance() + right, err := p.parseProjectionRHS(bindingPowers[tDot]) + return ASTNode{ + nodeType: ASTValueProjection, + children: []ASTNode{node, right}, + }, err + case tPipe: + right, err := p.parseExpression(bindingPowers[tPipe]) + return ASTNode{nodeType: ASTPipe, children: []ASTNode{node, right}}, err + case tOr: + right, err := p.parseExpression(bindingPowers[tOr]) + return ASTNode{nodeType: ASTOrExpression, children: []ASTNode{node, right}}, err + case tAnd: + right, err := p.parseExpression(bindingPowers[tAnd]) + return ASTNode{nodeType: ASTAndExpression, children: []ASTNode{node, right}}, err + case tLparen: + name := node.value + var args []ASTNode + for p.current() != tRparen { + expression, err := p.parseExpression(0) + if err != nil { + return ASTNode{}, err + } + if p.current() == tComma { + if err := p.match(tComma); err != nil { + return ASTNode{}, err + } + } + args = append(args, expression) + } + if err := p.match(tRparen); err != nil { + return ASTNode{}, err + } + return ASTNode{ + nodeType: ASTFunctionExpression, + value: name, + children: args, + }, nil + case tFilter: + return p.parseFilter(node) + case tFlatten: + left := ASTNode{nodeType: ASTFlatten, children: []ASTNode{node}} + right, err := p.parseProjectionRHS(bindingPowers[tFlatten]) + return ASTNode{ + nodeType: ASTProjection, + children: []ASTNode{left, right}, + }, err + case tEQ, tNE, tGT, tGTE, tLT, tLTE: + right, err := p.parseExpression(bindingPowers[tokenType]) + if err != nil { + return ASTNode{}, err + } + return ASTNode{ + nodeType: ASTComparator, + value: tokenType, + children: []ASTNode{node, right}, + }, nil + case tLbracket: + tokenType := p.current() + var right ASTNode + var err error + if tokenType == tNumber || tokenType == tColon { + right, err = p.parseIndexExpression() + if err != nil { + return ASTNode{}, err + } + return p.projectIfSlice(node, right) + } + // Otherwise this is a projection. + if err := p.match(tStar); err != nil { + return ASTNode{}, err + } + if err := p.match(tRbracket); err != nil { + return ASTNode{}, err + } + right, err = p.parseProjectionRHS(bindingPowers[tStar]) + if err != nil { + return ASTNode{}, err + } + return ASTNode{ + nodeType: ASTProjection, + children: []ASTNode{node, right}, + }, nil + } + return ASTNode{}, p.syntaxError("Unexpected token: " + tokenType.String()) +} + +func (p *Parser) nud(token token) (ASTNode, error) { + switch token.tokenType { + case tJSONLiteral: + var parsed interface{} + err := json.Unmarshal([]byte(token.value), &parsed) + if err != nil { + return ASTNode{}, err + } + return ASTNode{nodeType: ASTLiteral, value: parsed}, nil + case tStringLiteral: + return ASTNode{nodeType: ASTLiteral, value: token.value}, nil + case tUnquotedIdentifier: + return ASTNode{ + nodeType: ASTField, + value: token.value, + }, nil + case tQuotedIdentifier: + node := ASTNode{nodeType: ASTField, value: token.value} + if p.current() == tLparen { + return ASTNode{}, p.syntaxErrorToken("Can't have quoted identifier as function name.", token) + } + return node, nil + case tStar: + left := ASTNode{nodeType: ASTIdentity} + var right ASTNode + var err error + if p.current() == tRbracket { + right = ASTNode{nodeType: ASTIdentity} + } else { + right, err = p.parseProjectionRHS(bindingPowers[tStar]) + } + return ASTNode{nodeType: ASTValueProjection, children: []ASTNode{left, right}}, err + case tFilter: + return p.parseFilter(ASTNode{nodeType: ASTIdentity}) + case tLbrace: + return p.parseMultiSelectHash() + case tFlatten: + left := ASTNode{ + nodeType: ASTFlatten, + children: []ASTNode{{nodeType: ASTIdentity}}, + } + right, err := p.parseProjectionRHS(bindingPowers[tFlatten]) + if err != nil { + return ASTNode{}, err + } + return ASTNode{nodeType: ASTProjection, children: []ASTNode{left, right}}, nil + case tLbracket: + tokenType := p.current() + //var right ASTNode + if tokenType == tNumber || tokenType == tColon { + right, err := p.parseIndexExpression() + if err != nil { + return ASTNode{}, nil + } + return p.projectIfSlice(ASTNode{nodeType: ASTIdentity}, right) + } else if tokenType == tStar && p.lookahead(1) == tRbracket { + p.advance() + p.advance() + right, err := p.parseProjectionRHS(bindingPowers[tStar]) + if err != nil { + return ASTNode{}, err + } + return ASTNode{ + nodeType: ASTProjection, + children: []ASTNode{{nodeType: ASTIdentity}, right}, + }, nil + } else { + return p.parseMultiSelectList() + } + case tCurrent: + return ASTNode{nodeType: ASTCurrentNode}, nil + case tExpref: + expression, err := p.parseExpression(bindingPowers[tExpref]) + if err != nil { + return ASTNode{}, err + } + return ASTNode{nodeType: ASTExpRef, children: []ASTNode{expression}}, nil + case tNot: + expression, err := p.parseExpression(bindingPowers[tNot]) + if err != nil { + return ASTNode{}, err + } + return ASTNode{nodeType: ASTNotExpression, children: []ASTNode{expression}}, nil + case tLparen: + expression, err := p.parseExpression(0) + if err != nil { + return ASTNode{}, err + } + if err := p.match(tRparen); err != nil { + return ASTNode{}, err + } + return expression, nil + case tEOF: + return ASTNode{}, p.syntaxErrorToken("Incomplete expression", token) + } + + return ASTNode{}, p.syntaxErrorToken("Invalid token: "+token.tokenType.String(), token) +} + +func (p *Parser) parseMultiSelectList() (ASTNode, error) { + var expressions []ASTNode + for { + expression, err := p.parseExpression(0) + if err != nil { + return ASTNode{}, err + } + expressions = append(expressions, expression) + if p.current() == tRbracket { + break + } + err = p.match(tComma) + if err != nil { + return ASTNode{}, err + } + } + err := p.match(tRbracket) + if err != nil { + return ASTNode{}, err + } + return ASTNode{ + nodeType: ASTMultiSelectList, + children: expressions, + }, nil +} + +func (p *Parser) parseMultiSelectHash() (ASTNode, error) { + var children []ASTNode + for { + keyToken := p.lookaheadToken(0) + if err := p.match(tUnquotedIdentifier); err != nil { + if err := p.match(tQuotedIdentifier); err != nil { + return ASTNode{}, p.syntaxError("Expected tQuotedIdentifier or tUnquotedIdentifier") + } + } + keyName := keyToken.value + err := p.match(tColon) + if err != nil { + return ASTNode{}, err + } + value, err := p.parseExpression(0) + if err != nil { + return ASTNode{}, err + } + node := ASTNode{ + nodeType: ASTKeyValPair, + value: keyName, + children: []ASTNode{value}, + } + children = append(children, node) + if p.current() == tComma { + err := p.match(tComma) + if err != nil { + return ASTNode{}, nil + } + } else if p.current() == tRbrace { + err := p.match(tRbrace) + if err != nil { + return ASTNode{}, nil + } + break + } + } + return ASTNode{ + nodeType: ASTMultiSelectHash, + children: children, + }, nil +} + +func (p *Parser) projectIfSlice(left ASTNode, right ASTNode) (ASTNode, error) { + indexExpr := ASTNode{ + nodeType: ASTIndexExpression, + children: []ASTNode{left, right}, + } + if right.nodeType == ASTSlice { + right, err := p.parseProjectionRHS(bindingPowers[tStar]) + return ASTNode{ + nodeType: ASTProjection, + children: []ASTNode{indexExpr, right}, + }, err + } + return indexExpr, nil +} +func (p *Parser) parseFilter(node ASTNode) (ASTNode, error) { + var right, condition ASTNode + var err error + condition, err = p.parseExpression(0) + if err != nil { + return ASTNode{}, err + } + if err := p.match(tRbracket); err != nil { + return ASTNode{}, err + } + if p.current() == tFlatten { + right = ASTNode{nodeType: ASTIdentity} + } else { + right, err = p.parseProjectionRHS(bindingPowers[tFilter]) + if err != nil { + return ASTNode{}, err + } + } + + return ASTNode{ + nodeType: ASTFilterProjection, + children: []ASTNode{node, right, condition}, + }, nil +} + +func (p *Parser) parseDotRHS(bindingPower int) (ASTNode, error) { + lookahead := p.current() + if tokensOneOf([]tokType{tQuotedIdentifier, tUnquotedIdentifier, tStar}, lookahead) { + return p.parseExpression(bindingPower) + } else if lookahead == tLbracket { + if err := p.match(tLbracket); err != nil { + return ASTNode{}, err + } + return p.parseMultiSelectList() + } else if lookahead == tLbrace { + if err := p.match(tLbrace); err != nil { + return ASTNode{}, err + } + return p.parseMultiSelectHash() + } + return ASTNode{}, p.syntaxError("Expected identifier, lbracket, or lbrace") +} + +func (p *Parser) parseProjectionRHS(bindingPower int) (ASTNode, error) { + current := p.current() + if bindingPowers[current] < 10 { + return ASTNode{nodeType: ASTIdentity}, nil + } else if current == tLbracket { + return p.parseExpression(bindingPower) + } else if current == tFilter { + return p.parseExpression(bindingPower) + } else if current == tDot { + err := p.match(tDot) + if err != nil { + return ASTNode{}, err + } + return p.parseDotRHS(bindingPower) + } else { + return ASTNode{}, p.syntaxError("Error") + } +} + +func (p *Parser) lookahead(number int) tokType { + return p.lookaheadToken(number).tokenType +} + +func (p *Parser) current() tokType { + return p.lookahead(0) +} + +func (p *Parser) lookaheadToken(number int) token { + return p.tokens[p.index+number] +} + +func (p *Parser) advance() { + p.index++ +} + +func tokensOneOf(elements []tokType, token tokType) bool { + for _, elem := range elements { + if elem == token { + return true + } + } + return false +} + +func (p *Parser) syntaxError(msg string) SyntaxError { + return SyntaxError{ + msg: msg, + Expression: p.expression, + Offset: p.lookaheadToken(0).position, + } +} + +// Create a SyntaxError based on the provided token. +// This differs from syntaxError() which creates a SyntaxError +// based on the current lookahead token. +func (p *Parser) syntaxErrorToken(msg string, t token) SyntaxError { + return SyntaxError{ + msg: msg, + Expression: p.expression, + Offset: t.position, + } +} diff --git a/vendor/github.com/jmespath/go-jmespath/toktype_string.go b/vendor/github.com/jmespath/go-jmespath/toktype_string.go new file mode 100644 index 0000000..dae79cb --- /dev/null +++ b/vendor/github.com/jmespath/go-jmespath/toktype_string.go @@ -0,0 +1,16 @@ +// generated by stringer -type=tokType; DO NOT EDIT + +package jmespath + +import "fmt" + +const _tokType_name = "tUnknowntStartDottFiltertFlattentLparentRparentLbrackettRbrackettLbracetRbracetOrtPipetNumbertUnquotedIdentifiertQuotedIdentifiertCommatColontLTtLTEtGTtGTEtEQtNEtJSONLiteraltStringLiteraltCurrenttExpreftAndtNottEOF" + +var _tokType_index = [...]uint8{0, 8, 13, 17, 24, 32, 39, 46, 55, 64, 71, 78, 81, 86, 93, 112, 129, 135, 141, 144, 148, 151, 155, 158, 161, 173, 187, 195, 202, 206, 210, 214} + +func (i tokType) String() string { + if i < 0 || i >= tokType(len(_tokType_index)-1) { + return fmt.Sprintf("tokType(%d)", i) + } + return _tokType_name[_tokType_index[i]:_tokType_index[i+1]] +} diff --git a/vendor/github.com/jmespath/go-jmespath/util.go b/vendor/github.com/jmespath/go-jmespath/util.go new file mode 100644 index 0000000..ddc1b7d --- /dev/null +++ b/vendor/github.com/jmespath/go-jmespath/util.go @@ -0,0 +1,185 @@ +package jmespath + +import ( + "errors" + "reflect" +) + +// IsFalse determines if an object is false based on the JMESPath spec. +// JMESPath defines false values to be any of: +// - An empty string array, or hash. +// - The boolean value false. +// - nil +func isFalse(value interface{}) bool { + switch v := value.(type) { + case bool: + return !v + case []interface{}: + return len(v) == 0 + case map[string]interface{}: + return len(v) == 0 + case string: + return len(v) == 0 + case nil: + return true + } + // Try the reflection cases before returning false. + rv := reflect.ValueOf(value) + switch rv.Kind() { + case reflect.Struct: + // A struct type will never be false, even if + // all of its values are the zero type. + return false + case reflect.Slice, reflect.Map: + return rv.Len() == 0 + case reflect.Ptr: + if rv.IsNil() { + return true + } + // If it's a pointer type, we'll try to deref the pointer + // and evaluate the pointer value for isFalse. + element := rv.Elem() + return isFalse(element.Interface()) + } + return false +} + +// ObjsEqual is a generic object equality check. +// It will take two arbitrary objects and recursively determine +// if they are equal. +func objsEqual(left interface{}, right interface{}) bool { + return reflect.DeepEqual(left, right) +} + +// SliceParam refers to a single part of a slice. +// A slice consists of a start, a stop, and a step, similar to +// python slices. +type sliceParam struct { + N int + Specified bool +} + +// Slice supports [start:stop:step] style slicing that's supported in JMESPath. +func slice(slice []interface{}, parts []sliceParam) ([]interface{}, error) { + computed, err := computeSliceParams(len(slice), parts) + if err != nil { + return nil, err + } + start, stop, step := computed[0], computed[1], computed[2] + result := []interface{}{} + if step > 0 { + for i := start; i < stop; i += step { + result = append(result, slice[i]) + } + } else { + for i := start; i > stop; i += step { + result = append(result, slice[i]) + } + } + return result, nil +} + +func computeSliceParams(length int, parts []sliceParam) ([]int, error) { + var start, stop, step int + if !parts[2].Specified { + step = 1 + } else if parts[2].N == 0 { + return nil, errors.New("Invalid slice, step cannot be 0") + } else { + step = parts[2].N + } + var stepValueNegative bool + if step < 0 { + stepValueNegative = true + } else { + stepValueNegative = false + } + + if !parts[0].Specified { + if stepValueNegative { + start = length - 1 + } else { + start = 0 + } + } else { + start = capSlice(length, parts[0].N, step) + } + + if !parts[1].Specified { + if stepValueNegative { + stop = -1 + } else { + stop = length + } + } else { + stop = capSlice(length, parts[1].N, step) + } + return []int{start, stop, step}, nil +} + +func capSlice(length int, actual int, step int) int { + if actual < 0 { + actual += length + if actual < 0 { + if step < 0 { + actual = -1 + } else { + actual = 0 + } + } + } else if actual >= length { + if step < 0 { + actual = length - 1 + } else { + actual = length + } + } + return actual +} + +// ToArrayNum converts an empty interface type to a slice of float64. +// If any element in the array cannot be converted, then nil is returned +// along with a second value of false. +func toArrayNum(data interface{}) ([]float64, bool) { + // Is there a better way to do this with reflect? + if d, ok := data.([]interface{}); ok { + result := make([]float64, len(d)) + for i, el := range d { + item, ok := el.(float64) + if !ok { + return nil, false + } + result[i] = item + } + return result, true + } + return nil, false +} + +// ToArrayStr converts an empty interface type to a slice of strings. +// If any element in the array cannot be converted, then nil is returned +// along with a second value of false. If the input data could be entirely +// converted, then the converted data, along with a second value of true, +// will be returned. +func toArrayStr(data interface{}) ([]string, bool) { + // Is there a better way to do this with reflect? + if d, ok := data.([]interface{}); ok { + result := make([]string, len(d)) + for i, el := range d { + item, ok := el.(string) + if !ok { + return nil, false + } + result[i] = item + } + return result, true + } + return nil, false +} + +func isSliceType(v interface{}) bool { + if v == nil { + return false + } + return reflect.TypeOf(v).Kind() == reflect.Slice +} diff --git a/vendor/github.com/julienschmidt/httprouter/.travis.yml b/vendor/github.com/julienschmidt/httprouter/.travis.yml new file mode 100644 index 0000000..477807d --- /dev/null +++ b/vendor/github.com/julienschmidt/httprouter/.travis.yml @@ -0,0 +1,18 @@ +sudo: false +language: go +go: + - 1.7 + - 1.8 + - 1.9 + - "1.10" + - tip +before_install: + - go get golang.org/x/tools/cmd/cover + - go get github.com/mattn/goveralls + - go get github.com/golang/lint/golint +script: + - go test -v -covermode=count -coverprofile=coverage.out + - go vet ./... + - test -z "$(gofmt -d -s . | tee /dev/stderr)" + - test -z "$(golint ./... | tee /dev/stderr)" + - $HOME/gopath/bin/goveralls -coverprofile=coverage.out -service=travis-ci diff --git a/vendor/github.com/julienschmidt/httprouter/LICENSE b/vendor/github.com/julienschmidt/httprouter/LICENSE new file mode 100644 index 0000000..b829abc --- /dev/null +++ b/vendor/github.com/julienschmidt/httprouter/LICENSE @@ -0,0 +1,24 @@ +Copyright (c) 2013 Julien Schmidt. All rights reserved. + + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * The names of the contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL JULIEN SCHMIDT BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/vendor/github.com/julienschmidt/httprouter/README.md b/vendor/github.com/julienschmidt/httprouter/README.md new file mode 100644 index 0000000..eabf4aa --- /dev/null +++ b/vendor/github.com/julienschmidt/httprouter/README.md @@ -0,0 +1,266 @@ +# HttpRouter [![Build Status](https://travis-ci.org/julienschmidt/httprouter.svg?branch=master)](https://travis-ci.org/julienschmidt/httprouter) [![Coverage Status](https://coveralls.io/repos/github/julienschmidt/httprouter/badge.svg?branch=master)](https://coveralls.io/github/julienschmidt/httprouter?branch=master) [![GoDoc](https://godoc.org/github.com/julienschmidt/httprouter?status.svg)](http://godoc.org/github.com/julienschmidt/httprouter) + +HttpRouter is a lightweight high performance HTTP request router (also called *multiplexer* or just *mux* for short) for [Go](https://golang.org/). + +In contrast to the [default mux](https://golang.org/pkg/net/http/#ServeMux) of Go's `net/http` package, this router supports variables in the routing pattern and matches against the request method. It also scales better. + +The router is optimized for high performance and a small memory footprint. It scales well even with very long paths and a large number of routes. A compressing dynamic trie (radix tree) structure is used for efficient matching. + +## Features + +**Only explicit matches:** With other routers, like [`http.ServeMux`](https://golang.org/pkg/net/http/#ServeMux), a requested URL path could match multiple patterns. Therefore they have some awkward pattern priority rules, like *longest match* or *first registered, first matched*. By design of this router, a request can only match exactly one or no route. As a result, there are also no unintended matches, which makes it great for SEO and improves the user experience. + +**Stop caring about trailing slashes:** Choose the URL style you like, the router automatically redirects the client if a trailing slash is missing or if there is one extra. Of course it only does so, if the new path has a handler. If you don't like it, you can [turn off this behavior](https://godoc.org/github.com/julienschmidt/httprouter#Router.RedirectTrailingSlash). + +**Path auto-correction:** Besides detecting the missing or additional trailing slash at no extra cost, the router can also fix wrong cases and remove superfluous path elements (like `../` or `//`). Is [CAPTAIN CAPS LOCK](http://www.urbandictionary.com/define.php?term=Captain+Caps+Lock) one of your users? HttpRouter can help him by making a case-insensitive look-up and redirecting him to the correct URL. + +**Parameters in your routing pattern:** Stop parsing the requested URL path, just give the path segment a name and the router delivers the dynamic value to you. Because of the design of the router, path parameters are very cheap. + +**Zero Garbage:** The matching and dispatching process generates zero bytes of garbage. The only heap allocations that are made are building the slice of the key-value pairs for path parameters, and building new context and request objects (the latter only in the standard `Handler`/`HandlerFunc` api). In the 3-argument API, if the request path contains no parameters not a single heap allocation is necessary. + +**Best Performance:** [Benchmarks speak for themselves](https://github.com/julienschmidt/go-http-routing-benchmark). See below for technical details of the implementation. + +**No more server crashes:** You can set a [Panic handler](https://godoc.org/github.com/julienschmidt/httprouter#Router.PanicHandler) to deal with panics occurring during handling a HTTP request. The router then recovers and lets the `PanicHandler` log what happened and deliver a nice error page. + +**Perfect for APIs:** The router design encourages to build sensible, hierarchical RESTful APIs. Moreover it has builtin native support for [OPTIONS requests](http://zacstewart.com/2012/04/14/http-options-method.html) and `405 Method Not Allowed` replies. + +Of course you can also set **custom [`NotFound`](https://godoc.org/github.com/julienschmidt/httprouter#Router.NotFound) and [`MethodNotAllowed`](https://godoc.org/github.com/julienschmidt/httprouter#Router.MethodNotAllowed) handlers** and [**serve static files**](https://godoc.org/github.com/julienschmidt/httprouter#Router.ServeFiles). + +## Usage + +This is just a quick introduction, view the [GoDoc](http://godoc.org/github.com/julienschmidt/httprouter) for details. + +Let's start with a trivial example: + +```go +package main + +import ( + "fmt" + "github.com/julienschmidt/httprouter" + "net/http" + "log" +) + +func Index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { + fmt.Fprint(w, "Welcome!\n") +} + +func Hello(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { + fmt.Fprintf(w, "hello, %s!\n", ps.ByName("name")) +} + +func main() { + router := httprouter.New() + router.GET("/", Index) + router.GET("/hello/:name", Hello) + + log.Fatal(http.ListenAndServe(":8080", router)) +} +``` + +### Named parameters + +As you can see, `:name` is a *named parameter*. The values are accessible via `httprouter.Params`, which is just a slice of `httprouter.Param`s. You can get the value of a parameter either by its index in the slice, or by using the `ByName(name)` method: `:name` can be retrived by `ByName("name")`. + +Named parameters only match a single path segment: + +``` +Pattern: /user/:user + + /user/gordon match + /user/you match + /user/gordon/profile no match + /user/ no match +``` + +**Note:** Since this router has only explicit matches, you can not register static routes and parameters for the same path segment. For example you can not register the patterns `/user/new` and `/user/:user` for the same request method at the same time. The routing of different request methods is independent from each other. + +### Catch-All parameters + +The second type are *catch-all* parameters and have the form `*name`. Like the name suggests, they match everything. Therefore they must always be at the **end** of the pattern: + +``` +Pattern: /src/*filepath + + /src/ match + /src/somefile.go match + /src/subdir/somefile.go match +``` + +## How does it work? + +The router relies on a tree structure which makes heavy use of *common prefixes*, it is basically a *compact* [*prefix tree*](https://en.wikipedia.org/wiki/Trie) (or just [*Radix tree*](https://en.wikipedia.org/wiki/Radix_tree)). Nodes with a common prefix also share a common parent. Here is a short example what the routing tree for the `GET` request method could look like: + +``` +Priority Path Handle +9 \ *<1> +3 ├s nil +2 |├earch\ *<2> +1 |└upport\ *<3> +2 ├blog\ *<4> +1 | └:post nil +1 | └\ *<5> +2 ├about-us\ *<6> +1 | └team\ *<7> +1 └contact\ *<8> +``` + +Every `*` represents the memory address of a handler function (a pointer). If you follow a path trough the tree from the root to the leaf, you get the complete route path, e.g `\blog\:post\`, where `:post` is just a placeholder ([*parameter*](#named-parameters)) for an actual post name. Unlike hash-maps, a tree structure also allows us to use dynamic parts like the `:post` parameter, since we actually match against the routing patterns instead of just comparing hashes. [As benchmarks show](https://github.com/julienschmidt/go-http-routing-benchmark), this works very well and efficient. + +Since URL paths have a hierarchical structure and make use only of a limited set of characters (byte values), it is very likely that there are a lot of common prefixes. This allows us to easily reduce the routing into ever smaller problems. Moreover the router manages a separate tree for every request method. For one thing it is more space efficient than holding a method->handle map in every single node, it also allows us to greatly reduce the routing problem before even starting the look-up in the prefix-tree. + +For even better scalability, the child nodes on each tree level are ordered by priority, where the priority is just the number of handles registered in sub nodes (children, grandchildren, and so on..). This helps in two ways: + +1. Nodes which are part of the most routing paths are evaluated first. This helps to make as much routes as possible to be reachable as fast as possible. +2. It is some sort of cost compensation. The longest reachable path (highest cost) can always be evaluated first. The following scheme visualizes the tree structure. Nodes are evaluated from top to bottom and from left to right. + +``` +├------------ +├--------- +├----- +├---- +├-- +├-- +└- +``` + +## Why doesn't this work with `http.Handler`? + +**It does!** The router itself implements the `http.Handler` interface. Moreover the router provides convenient [adapters for `http.Handler`](https://godoc.org/github.com/julienschmidt/httprouter#Router.Handler)s and [`http.HandlerFunc`](https://godoc.org/github.com/julienschmidt/httprouter#Router.HandlerFunc)s which allows them to be used as a [`httprouter.Handle`](https://godoc.org/github.com/julienschmidt/httprouter#Router.Handle) when registering a route. The only disadvantage is, that no parameter values can be retrieved when a `http.Handler` or `http.HandlerFunc` is used, since there is no efficient way to pass the values with the existing function parameters. Therefore [`httprouter.Handle`](https://godoc.org/github.com/julienschmidt/httprouter#Router.Handle) has a third function parameter. + +Just try it out for yourself, the usage of HttpRouter is very straightforward. The package is compact and minimalistic, but also probably one of the easiest routers to set up. + +## Where can I find Middleware *X*? + +This package just provides a very efficient request router with a few extra features. The router is just a [`http.Handler`](https://golang.org/pkg/net/http/#Handler), you can chain any http.Handler compatible middleware before the router, for example the [Gorilla handlers](http://www.gorillatoolkit.org/pkg/handlers). Or you could [just write your own](https://justinas.org/writing-http-middleware-in-go/), it's very easy! + +Alternatively, you could try [a web framework based on HttpRouter](#web-frameworks-based-on-httprouter). + +### Multi-domain / Sub-domains + +Here is a quick example: Does your server serve multiple domains / hosts? +You want to use sub-domains? +Define a router per host! + +```go +// We need an object that implements the http.Handler interface. +// Therefore we need a type for which we implement the ServeHTTP method. +// We just use a map here, in which we map host names (with port) to http.Handlers +type HostSwitch map[string]http.Handler + +// Implement the ServeHTTP method on our new type +func (hs HostSwitch) ServeHTTP(w http.ResponseWriter, r *http.Request) { + // Check if a http.Handler is registered for the given host. + // If yes, use it to handle the request. + if handler := hs[r.Host]; handler != nil { + handler.ServeHTTP(w, r) + } else { + // Handle host names for which no handler is registered + http.Error(w, "Forbidden", 403) // Or Redirect? + } +} + +func main() { + // Initialize a router as usual + router := httprouter.New() + router.GET("/", Index) + router.GET("/hello/:name", Hello) + + // Make a new HostSwitch and insert the router (our http handler) + // for example.com and port 12345 + hs := make(HostSwitch) + hs["example.com:12345"] = router + + // Use the HostSwitch to listen and serve on port 12345 + log.Fatal(http.ListenAndServe(":12345", hs)) +} +``` + +### Basic Authentication + +Another quick example: Basic Authentication (RFC 2617) for handles: + +```go +package main + +import ( + "fmt" + "log" + "net/http" + + "github.com/julienschmidt/httprouter" +) + +func BasicAuth(h httprouter.Handle, requiredUser, requiredPassword string) httprouter.Handle { + return func(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { + // Get the Basic Authentication credentials + user, password, hasAuth := r.BasicAuth() + + if hasAuth && user == requiredUser && password == requiredPassword { + // Delegate request to the given handle + h(w, r, ps) + } else { + // Request Basic Authentication otherwise + w.Header().Set("WWW-Authenticate", "Basic realm=Restricted") + http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized) + } + } +} + +func Index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { + fmt.Fprint(w, "Not protected!\n") +} + +func Protected(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { + fmt.Fprint(w, "Protected!\n") +} + +func main() { + user := "gordon" + pass := "secret!" + + router := httprouter.New() + router.GET("/", Index) + router.GET("/protected/", BasicAuth(Protected, user, pass)) + + log.Fatal(http.ListenAndServe(":8080", router)) +} +``` + +## Chaining with the NotFound handler + +**NOTE: It might be required to set [`Router.HandleMethodNotAllowed`](https://godoc.org/github.com/julienschmidt/httprouter#Router.HandleMethodNotAllowed) to `false` to avoid problems.** + +You can use another [`http.Handler`](https://golang.org/pkg/net/http/#Handler), for example another router, to handle requests which could not be matched by this router by using the [`Router.NotFound`](https://godoc.org/github.com/julienschmidt/httprouter#Router.NotFound) handler. This allows chaining. + +### Static files + +The `NotFound` handler can for example be used to serve static files from the root path `/` (like an `index.html` file along with other assets): + +```go +// Serve static files from the ./public directory +router.NotFound = http.FileServer(http.Dir("public")) +``` + +But this approach sidesteps the strict core rules of this router to avoid routing problems. A cleaner approach is to use a distinct sub-path for serving files, like `/static/*filepath` or `/files/*filepath`. + +## Web Frameworks based on HttpRouter + +If the HttpRouter is a bit too minimalistic for you, you might try one of the following more high-level 3rd-party web frameworks building upon the HttpRouter package: + +* [Ace](https://github.com/plimble/ace): Blazing fast Go Web Framework +* [api2go](https://github.com/manyminds/api2go): A JSON API Implementation for Go +* [Gin](https://github.com/gin-gonic/gin): Features a martini-like API with much better performance +* [Goat](https://github.com/bahlo/goat): A minimalistic REST API server in Go +* [goMiddlewareChain](https://github.com/TobiEiss/goMiddlewareChain): An express.js-like-middleware-chain +* [Hikaru](https://github.com/najeira/hikaru): Supports standalone and Google AppEngine +* [Hitch](https://github.com/nbio/hitch): Hitch ties httprouter, [httpcontext](https://github.com/nbio/httpcontext), and middleware up in a bow +* [httpway](https://github.com/corneldamian/httpway): Simple middleware extension with context for httprouter and a server with gracefully shutdown support +* [kami](https://github.com/guregu/kami): A tiny web framework using x/net/context +* [Medeina](https://github.com/imdario/medeina): Inspired by Ruby's Roda and Cuba +* [Neko](https://github.com/rocwong/neko): A lightweight web application framework for Golang +* [River](https://github.com/abiosoft/river): River is a simple and lightweight REST server +* [Roxanna](https://github.com/iamthemuffinman/Roxanna): An amalgamation of httprouter, better logging, and hot reload +* [siesta](https://github.com/VividCortex/siesta): Composable HTTP handlers with contexts +* [xmux](https://github.com/rs/xmux): xmux is a httprouter fork on top of xhandler (net/context aware) diff --git a/vendor/github.com/julienschmidt/httprouter/params_go17.go b/vendor/github.com/julienschmidt/httprouter/params_go17.go new file mode 100644 index 0000000..abb4209 --- /dev/null +++ b/vendor/github.com/julienschmidt/httprouter/params_go17.go @@ -0,0 +1,38 @@ +// +build go1.7 + +package httprouter + +import ( + "context" + "net/http" +) + +type paramsKey struct{} + +// ParamsKey is the request context key under which URL params are stored. +// +// This is only present from go 1.7. +var ParamsKey = paramsKey{} + +// Handler is an adapter which allows the usage of an http.Handler as a +// request handle. With go 1.7+, the Params will be available in the +// request context under ParamsKey. +func (r *Router) Handler(method, path string, handler http.Handler) { + r.Handle(method, path, + func(w http.ResponseWriter, req *http.Request, p Params) { + ctx := req.Context() + ctx = context.WithValue(ctx, ParamsKey, p) + req = req.WithContext(ctx) + handler.ServeHTTP(w, req) + }, + ) +} + +// ParamsFromContext pulls the URL parameters from a request context, +// or returns nil if none are present. +// +// This is only present from go 1.7. +func ParamsFromContext(ctx context.Context) Params { + p, _ := ctx.Value(ParamsKey).(Params) + return p +} diff --git a/vendor/github.com/julienschmidt/httprouter/params_legacy.go b/vendor/github.com/julienschmidt/httprouter/params_legacy.go new file mode 100644 index 0000000..0278a44 --- /dev/null +++ b/vendor/github.com/julienschmidt/httprouter/params_legacy.go @@ -0,0 +1,16 @@ +// +build !go1.7 + +package httprouter + +import "net/http" + +// Handler is an adapter which allows the usage of an http.Handler as a +// request handle. With go 1.7+, the Params will be available in the +// request context under ParamsKey. +func (r *Router) Handler(method, path string, handler http.Handler) { + r.Handle(method, path, + func(w http.ResponseWriter, req *http.Request, _ Params) { + handler.ServeHTTP(w, req) + }, + ) +} diff --git a/vendor/github.com/julienschmidt/httprouter/path.go b/vendor/github.com/julienschmidt/httprouter/path.go new file mode 100644 index 0000000..0331c7e --- /dev/null +++ b/vendor/github.com/julienschmidt/httprouter/path.go @@ -0,0 +1,123 @@ +// Copyright 2013 Julien Schmidt. All rights reserved. +// Based on the path package, Copyright 2009 The Go Authors. +// Use of this source code is governed by a BSD-style license that can be found +// in the LICENSE file. + +package httprouter + +// CleanPath is the URL version of path.Clean, it returns a canonical URL path +// for p, eliminating . and .. elements. +// +// The following rules are applied iteratively until no further processing can +// be done: +// 1. Replace multiple slashes with a single slash. +// 2. Eliminate each . path name element (the current directory). +// 3. Eliminate each inner .. path name element (the parent directory) +// along with the non-.. element that precedes it. +// 4. Eliminate .. elements that begin a rooted path: +// that is, replace "/.." by "/" at the beginning of a path. +// +// If the result of this process is an empty string, "/" is returned +func CleanPath(p string) string { + // Turn empty string into "/" + if p == "" { + return "/" + } + + n := len(p) + var buf []byte + + // Invariants: + // reading from path; r is index of next byte to process. + // writing to buf; w is index of next byte to write. + + // path must start with '/' + r := 1 + w := 1 + + if p[0] != '/' { + r = 0 + buf = make([]byte, n+1) + buf[0] = '/' + } + + trailing := n > 1 && p[n-1] == '/' + + // A bit more clunky without a 'lazybuf' like the path package, but the loop + // gets completely inlined (bufApp). So in contrast to the path package this + // loop has no expensive function calls (except 1x make) + + for r < n { + switch { + case p[r] == '/': + // empty path element, trailing slash is added after the end + r++ + + case p[r] == '.' && r+1 == n: + trailing = true + r++ + + case p[r] == '.' && p[r+1] == '/': + // . element + r += 2 + + case p[r] == '.' && p[r+1] == '.' && (r+2 == n || p[r+2] == '/'): + // .. element: remove to last / + r += 3 + + if w > 1 { + // can backtrack + w-- + + if buf == nil { + for w > 1 && p[w] != '/' { + w-- + } + } else { + for w > 1 && buf[w] != '/' { + w-- + } + } + } + + default: + // real path element. + // add slash if needed + if w > 1 { + bufApp(&buf, p, w, '/') + w++ + } + + // copy element + for r < n && p[r] != '/' { + bufApp(&buf, p, w, p[r]) + w++ + r++ + } + } + } + + // re-append trailing slash + if trailing && w > 1 { + bufApp(&buf, p, w, '/') + w++ + } + + if buf == nil { + return p[:w] + } + return string(buf[:w]) +} + +// internal helper to lazily create a buffer if necessary +func bufApp(buf *[]byte, s string, w int, c byte) { + if *buf == nil { + if s[w] == c { + return + } + + *buf = make([]byte, len(s)) + copy(*buf, s[:w]) + } + (*buf)[w] = c +} diff --git a/vendor/github.com/julienschmidt/httprouter/router.go b/vendor/github.com/julienschmidt/httprouter/router.go new file mode 100644 index 0000000..558e139 --- /dev/null +++ b/vendor/github.com/julienschmidt/httprouter/router.go @@ -0,0 +1,399 @@ +// Copyright 2013 Julien Schmidt. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be found +// in the LICENSE file. + +// Package httprouter is a trie based high performance HTTP request router. +// +// A trivial example is: +// +// package main +// +// import ( +// "fmt" +// "github.com/julienschmidt/httprouter" +// "net/http" +// "log" +// ) +// +// func Index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { +// fmt.Fprint(w, "Welcome!\n") +// } +// +// func Hello(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { +// fmt.Fprintf(w, "hello, %s!\n", ps.ByName("name")) +// } +// +// func main() { +// router := httprouter.New() +// router.GET("/", Index) +// router.GET("/hello/:name", Hello) +// +// log.Fatal(http.ListenAndServe(":8080", router)) +// } +// +// The router matches incoming requests by the request method and the path. +// If a handle is registered for this path and method, the router delegates the +// request to that function. +// For the methods GET, POST, PUT, PATCH and DELETE shortcut functions exist to +// register handles, for all other methods router.Handle can be used. +// +// The registered path, against which the router matches incoming requests, can +// contain two types of parameters: +// Syntax Type +// :name named parameter +// *name catch-all parameter +// +// Named parameters are dynamic path segments. They match anything until the +// next '/' or the path end: +// Path: /blog/:category/:post +// +// Requests: +// /blog/go/request-routers match: category="go", post="request-routers" +// /blog/go/request-routers/ no match, but the router would redirect +// /blog/go/ no match +// /blog/go/request-routers/comments no match +// +// Catch-all parameters match anything until the path end, including the +// directory index (the '/' before the catch-all). Since they match anything +// until the end, catch-all parameters must always be the final path element. +// Path: /files/*filepath +// +// Requests: +// /files/ match: filepath="/" +// /files/LICENSE match: filepath="/LICENSE" +// /files/templates/article.html match: filepath="/templates/article.html" +// /files no match, but the router would redirect +// +// The value of parameters is saved as a slice of the Param struct, consisting +// each of a key and a value. The slice is passed to the Handle func as a third +// parameter. +// There are two ways to retrieve the value of a parameter: +// // by the name of the parameter +// user := ps.ByName("user") // defined by :user or *user +// +// // by the index of the parameter. This way you can also get the name (key) +// thirdKey := ps[2].Key // the name of the 3rd parameter +// thirdValue := ps[2].Value // the value of the 3rd parameter +package httprouter + +import ( + "net/http" +) + +// Handle is a function that can be registered to a route to handle HTTP +// requests. Like http.HandlerFunc, but has a third parameter for the values of +// wildcards (variables). +type Handle func(http.ResponseWriter, *http.Request, Params) + +// Param is a single URL parameter, consisting of a key and a value. +type Param struct { + Key string + Value string +} + +// Params is a Param-slice, as returned by the router. +// The slice is ordered, the first URL parameter is also the first slice value. +// It is therefore safe to read values by the index. +type Params []Param + +// ByName returns the value of the first Param which key matches the given name. +// If no matching Param is found, an empty string is returned. +func (ps Params) ByName(name string) string { + for i := range ps { + if ps[i].Key == name { + return ps[i].Value + } + } + return "" +} + +// Router is a http.Handler which can be used to dispatch requests to different +// handler functions via configurable routes +type Router struct { + trees map[string]*node + + // Enables automatic redirection if the current route can't be matched but a + // handler for the path with (without) the trailing slash exists. + // For example if /foo/ is requested but a route only exists for /foo, the + // client is redirected to /foo with http status code 301 for GET requests + // and 307 for all other request methods. + RedirectTrailingSlash bool + + // If enabled, the router tries to fix the current request path, if no + // handle is registered for it. + // First superfluous path elements like ../ or // are removed. + // Afterwards the router does a case-insensitive lookup of the cleaned path. + // If a handle can be found for this route, the router makes a redirection + // to the corrected path with status code 301 for GET requests and 307 for + // all other request methods. + // For example /FOO and /..//Foo could be redirected to /foo. + // RedirectTrailingSlash is independent of this option. + RedirectFixedPath bool + + // If enabled, the router checks if another method is allowed for the + // current route, if the current request can not be routed. + // If this is the case, the request is answered with 'Method Not Allowed' + // and HTTP status code 405. + // If no other Method is allowed, the request is delegated to the NotFound + // handler. + HandleMethodNotAllowed bool + + // If enabled, the router automatically replies to OPTIONS requests. + // Custom OPTIONS handlers take priority over automatic replies. + HandleOPTIONS bool + + // Configurable http.Handler which is called when no matching route is + // found. If it is not set, http.NotFound is used. + NotFound http.Handler + + // Configurable http.Handler which is called when a request + // cannot be routed and HandleMethodNotAllowed is true. + // If it is not set, http.Error with http.StatusMethodNotAllowed is used. + // The "Allow" header with allowed request methods is set before the handler + // is called. + MethodNotAllowed http.Handler + + // Function to handle panics recovered from http handlers. + // It should be used to generate a error page and return the http error code + // 500 (Internal Server Error). + // The handler can be used to keep your server from crashing because of + // unrecovered panics. + PanicHandler func(http.ResponseWriter, *http.Request, interface{}) +} + +// Make sure the Router conforms with the http.Handler interface +var _ http.Handler = New() + +// New returns a new initialized Router. +// Path auto-correction, including trailing slashes, is enabled by default. +func New() *Router { + return &Router{ + RedirectTrailingSlash: true, + RedirectFixedPath: true, + HandleMethodNotAllowed: true, + HandleOPTIONS: true, + } +} + +// GET is a shortcut for router.Handle("GET", path, handle) +func (r *Router) GET(path string, handle Handle) { + r.Handle("GET", path, handle) +} + +// HEAD is a shortcut for router.Handle("HEAD", path, handle) +func (r *Router) HEAD(path string, handle Handle) { + r.Handle("HEAD", path, handle) +} + +// OPTIONS is a shortcut for router.Handle("OPTIONS", path, handle) +func (r *Router) OPTIONS(path string, handle Handle) { + r.Handle("OPTIONS", path, handle) +} + +// POST is a shortcut for router.Handle("POST", path, handle) +func (r *Router) POST(path string, handle Handle) { + r.Handle("POST", path, handle) +} + +// PUT is a shortcut for router.Handle("PUT", path, handle) +func (r *Router) PUT(path string, handle Handle) { + r.Handle("PUT", path, handle) +} + +// PATCH is a shortcut for router.Handle("PATCH", path, handle) +func (r *Router) PATCH(path string, handle Handle) { + r.Handle("PATCH", path, handle) +} + +// DELETE is a shortcut for router.Handle("DELETE", path, handle) +func (r *Router) DELETE(path string, handle Handle) { + r.Handle("DELETE", path, handle) +} + +// Handle registers a new request handle with the given path and method. +// +// For GET, POST, PUT, PATCH and DELETE requests the respective shortcut +// functions can be used. +// +// This function is intended for bulk loading and to allow the usage of less +// frequently used, non-standardized or custom methods (e.g. for internal +// communication with a proxy). +func (r *Router) Handle(method, path string, handle Handle) { + if path[0] != '/' { + panic("path must begin with '/' in path '" + path + "'") + } + + if r.trees == nil { + r.trees = make(map[string]*node) + } + + root := r.trees[method] + if root == nil { + root = new(node) + r.trees[method] = root + } + + root.addRoute(path, handle) +} + +// HandlerFunc is an adapter which allows the usage of an http.HandlerFunc as a +// request handle. +func (r *Router) HandlerFunc(method, path string, handler http.HandlerFunc) { + r.Handler(method, path, handler) +} + +// ServeFiles serves files from the given file system root. +// The path must end with "/*filepath", files are then served from the local +// path /defined/root/dir/*filepath. +// For example if root is "/etc" and *filepath is "passwd", the local file +// "/etc/passwd" would be served. +// Internally a http.FileServer is used, therefore http.NotFound is used instead +// of the Router's NotFound handler. +// To use the operating system's file system implementation, +// use http.Dir: +// router.ServeFiles("/src/*filepath", http.Dir("/var/www")) +func (r *Router) ServeFiles(path string, root http.FileSystem) { + if len(path) < 10 || path[len(path)-10:] != "/*filepath" { + panic("path must end with /*filepath in path '" + path + "'") + } + + fileServer := http.FileServer(root) + + r.GET(path, func(w http.ResponseWriter, req *http.Request, ps Params) { + req.URL.Path = ps.ByName("filepath") + fileServer.ServeHTTP(w, req) + }) +} + +func (r *Router) recv(w http.ResponseWriter, req *http.Request) { + if rcv := recover(); rcv != nil { + r.PanicHandler(w, req, rcv) + } +} + +// Lookup allows the manual lookup of a method + path combo. +// This is e.g. useful to build a framework around this router. +// If the path was found, it returns the handle function and the path parameter +// values. Otherwise the third return value indicates whether a redirection to +// the same path with an extra / without the trailing slash should be performed. +func (r *Router) Lookup(method, path string) (Handle, Params, bool) { + if root := r.trees[method]; root != nil { + return root.getValue(path) + } + return nil, nil, false +} + +func (r *Router) allowed(path, reqMethod string) (allow string) { + if path == "*" { // server-wide + for method := range r.trees { + if method == "OPTIONS" { + continue + } + + // add request method to list of allowed methods + if len(allow) == 0 { + allow = method + } else { + allow += ", " + method + } + } + } else { // specific path + for method := range r.trees { + // Skip the requested method - we already tried this one + if method == reqMethod || method == "OPTIONS" { + continue + } + + handle, _, _ := r.trees[method].getValue(path) + if handle != nil { + // add request method to list of allowed methods + if len(allow) == 0 { + allow = method + } else { + allow += ", " + method + } + } + } + } + if len(allow) > 0 { + allow += ", OPTIONS" + } + return +} + +// ServeHTTP makes the router implement the http.Handler interface. +func (r *Router) ServeHTTP(w http.ResponseWriter, req *http.Request) { + if r.PanicHandler != nil { + defer r.recv(w, req) + } + + path := req.URL.Path + + if root := r.trees[req.Method]; root != nil { + if handle, ps, tsr := root.getValue(path); handle != nil { + handle(w, req, ps) + return + } else if req.Method != "CONNECT" && path != "/" { + code := 301 // Permanent redirect, request with GET method + if req.Method != "GET" { + // Temporary redirect, request with same method + // As of Go 1.3, Go does not support status code 308. + code = 307 + } + + if tsr && r.RedirectTrailingSlash { + if len(path) > 1 && path[len(path)-1] == '/' { + req.URL.Path = path[:len(path)-1] + } else { + req.URL.Path = path + "/" + } + http.Redirect(w, req, req.URL.String(), code) + return + } + + // Try to fix the request path + if r.RedirectFixedPath { + fixedPath, found := root.findCaseInsensitivePath( + CleanPath(path), + r.RedirectTrailingSlash, + ) + if found { + req.URL.Path = string(fixedPath) + http.Redirect(w, req, req.URL.String(), code) + return + } + } + } + } + + if req.Method == "OPTIONS" && r.HandleOPTIONS { + // Handle OPTIONS requests + if allow := r.allowed(path, req.Method); len(allow) > 0 { + w.Header().Set("Allow", allow) + return + } + } else { + // Handle 405 + if r.HandleMethodNotAllowed { + if allow := r.allowed(path, req.Method); len(allow) > 0 { + w.Header().Set("Allow", allow) + if r.MethodNotAllowed != nil { + r.MethodNotAllowed.ServeHTTP(w, req) + } else { + http.Error(w, + http.StatusText(http.StatusMethodNotAllowed), + http.StatusMethodNotAllowed, + ) + } + return + } + } + } + + // Handle 404 + if r.NotFound != nil { + r.NotFound.ServeHTTP(w, req) + } else { + http.NotFound(w, req) + } +} diff --git a/vendor/github.com/julienschmidt/httprouter/tree.go b/vendor/github.com/julienschmidt/httprouter/tree.go new file mode 100644 index 0000000..a8fa98b --- /dev/null +++ b/vendor/github.com/julienschmidt/httprouter/tree.go @@ -0,0 +1,656 @@ +// Copyright 2013 Julien Schmidt. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be found +// in the LICENSE file. + +package httprouter + +import ( + "strings" + "unicode" + "unicode/utf8" +) + +func min(a, b int) int { + if a <= b { + return a + } + return b +} + +func countParams(path string) uint8 { + var n uint + for i := 0; i < len(path); i++ { + if path[i] != ':' && path[i] != '*' { + continue + } + n++ + } + if n >= 255 { + return 255 + } + return uint8(n) +} + +type nodeType uint8 + +const ( + static nodeType = iota // default + root + param + catchAll +) + +type node struct { + path string + wildChild bool + nType nodeType + maxParams uint8 + indices string + children []*node + handle Handle + priority uint32 +} + +// increments priority of the given child and reorders if necessary +func (n *node) incrementChildPrio(pos int) int { + n.children[pos].priority++ + prio := n.children[pos].priority + + // adjust position (move to front) + newPos := pos + for newPos > 0 && n.children[newPos-1].priority < prio { + // swap node positions + n.children[newPos-1], n.children[newPos] = n.children[newPos], n.children[newPos-1] + + newPos-- + } + + // build new index char string + if newPos != pos { + n.indices = n.indices[:newPos] + // unchanged prefix, might be empty + n.indices[pos:pos+1] + // the index char we move + n.indices[newPos:pos] + n.indices[pos+1:] // rest without char at 'pos' + } + + return newPos +} + +// addRoute adds a node with the given handle to the path. +// Not concurrency-safe! +func (n *node) addRoute(path string, handle Handle) { + fullPath := path + n.priority++ + numParams := countParams(path) + + // non-empty tree + if len(n.path) > 0 || len(n.children) > 0 { + walk: + for { + // Update maxParams of the current node + if numParams > n.maxParams { + n.maxParams = numParams + } + + // Find the longest common prefix. + // This also implies that the common prefix contains no ':' or '*' + // since the existing key can't contain those chars. + i := 0 + max := min(len(path), len(n.path)) + for i < max && path[i] == n.path[i] { + i++ + } + + // Split edge + if i < len(n.path) { + child := node{ + path: n.path[i:], + wildChild: n.wildChild, + nType: static, + indices: n.indices, + children: n.children, + handle: n.handle, + priority: n.priority - 1, + } + + // Update maxParams (max of all children) + for i := range child.children { + if child.children[i].maxParams > child.maxParams { + child.maxParams = child.children[i].maxParams + } + } + + n.children = []*node{&child} + // []byte for proper unicode char conversion, see #65 + n.indices = string([]byte{n.path[i]}) + n.path = path[:i] + n.handle = nil + n.wildChild = false + } + + // Make new node a child of this node + if i < len(path) { + path = path[i:] + + if n.wildChild { + n = n.children[0] + n.priority++ + + // Update maxParams of the child node + if numParams > n.maxParams { + n.maxParams = numParams + } + numParams-- + + // Check if the wildcard matches + if len(path) >= len(n.path) && n.path == path[:len(n.path)] && + // Check for longer wildcard, e.g. :name and :names + (len(n.path) >= len(path) || path[len(n.path)] == '/') { + continue walk + } else { + // Wildcard conflict + var pathSeg string + if n.nType == catchAll { + pathSeg = path + } else { + pathSeg = strings.SplitN(path, "/", 2)[0] + } + prefix := fullPath[:strings.Index(fullPath, pathSeg)] + n.path + panic("'" + pathSeg + + "' in new path '" + fullPath + + "' conflicts with existing wildcard '" + n.path + + "' in existing prefix '" + prefix + + "'") + } + } + + c := path[0] + + // slash after param + if n.nType == param && c == '/' && len(n.children) == 1 { + n = n.children[0] + n.priority++ + continue walk + } + + // Check if a child with the next path byte exists + for i := 0; i < len(n.indices); i++ { + if c == n.indices[i] { + i = n.incrementChildPrio(i) + n = n.children[i] + continue walk + } + } + + // Otherwise insert it + if c != ':' && c != '*' { + // []byte for proper unicode char conversion, see #65 + n.indices += string([]byte{c}) + child := &node{ + maxParams: numParams, + } + n.children = append(n.children, child) + n.incrementChildPrio(len(n.indices) - 1) + n = child + } + n.insertChild(numParams, path, fullPath, handle) + return + + } else if i == len(path) { // Make node a (in-path) leaf + if n.handle != nil { + panic("a handle is already registered for path '" + fullPath + "'") + } + n.handle = handle + } + return + } + } else { // Empty tree + n.insertChild(numParams, path, fullPath, handle) + n.nType = root + } +} + +func (n *node) insertChild(numParams uint8, path, fullPath string, handle Handle) { + var offset int // already handled bytes of the path + + // find prefix until first wildcard (beginning with ':'' or '*'') + for i, max := 0, len(path); numParams > 0; i++ { + c := path[i] + if c != ':' && c != '*' { + continue + } + + // find wildcard end (either '/' or path end) + end := i + 1 + for end < max && path[end] != '/' { + switch path[end] { + // the wildcard name must not contain ':' and '*' + case ':', '*': + panic("only one wildcard per path segment is allowed, has: '" + + path[i:] + "' in path '" + fullPath + "'") + default: + end++ + } + } + + // check if this Node existing children which would be + // unreachable if we insert the wildcard here + if len(n.children) > 0 { + panic("wildcard route '" + path[i:end] + + "' conflicts with existing children in path '" + fullPath + "'") + } + + // check if the wildcard has a name + if end-i < 2 { + panic("wildcards must be named with a non-empty name in path '" + fullPath + "'") + } + + if c == ':' { // param + // split path at the beginning of the wildcard + if i > 0 { + n.path = path[offset:i] + offset = i + } + + child := &node{ + nType: param, + maxParams: numParams, + } + n.children = []*node{child} + n.wildChild = true + n = child + n.priority++ + numParams-- + + // if the path doesn't end with the wildcard, then there + // will be another non-wildcard subpath starting with '/' + if end < max { + n.path = path[offset:end] + offset = end + + child := &node{ + maxParams: numParams, + priority: 1, + } + n.children = []*node{child} + n = child + } + + } else { // catchAll + if end != max || numParams > 1 { + panic("catch-all routes are only allowed at the end of the path in path '" + fullPath + "'") + } + + if len(n.path) > 0 && n.path[len(n.path)-1] == '/' { + panic("catch-all conflicts with existing handle for the path segment root in path '" + fullPath + "'") + } + + // currently fixed width 1 for '/' + i-- + if path[i] != '/' { + panic("no / before catch-all in path '" + fullPath + "'") + } + + n.path = path[offset:i] + + // first node: catchAll node with empty path + child := &node{ + wildChild: true, + nType: catchAll, + maxParams: 1, + } + n.children = []*node{child} + n.indices = string(path[i]) + n = child + n.priority++ + + // second node: node holding the variable + child = &node{ + path: path[i:], + nType: catchAll, + maxParams: 1, + handle: handle, + priority: 1, + } + n.children = []*node{child} + + return + } + } + + // insert remaining path part and handle to the leaf + n.path = path[offset:] + n.handle = handle +} + +// Returns the handle registered with the given path (key). The values of +// wildcards are saved to a map. +// If no handle can be found, a TSR (trailing slash redirect) recommendation is +// made if a handle exists with an extra (without the) trailing slash for the +// given path. +func (n *node) getValue(path string) (handle Handle, p Params, tsr bool) { +walk: // outer loop for walking the tree + for { + if len(path) > len(n.path) { + if path[:len(n.path)] == n.path { + path = path[len(n.path):] + // If this node does not have a wildcard (param or catchAll) + // child, we can just look up the next child node and continue + // to walk down the tree + if !n.wildChild { + c := path[0] + for i := 0; i < len(n.indices); i++ { + if c == n.indices[i] { + n = n.children[i] + continue walk + } + } + + // Nothing found. + // We can recommend to redirect to the same URL without a + // trailing slash if a leaf exists for that path. + tsr = (path == "/" && n.handle != nil) + return + + } + + // handle wildcard child + n = n.children[0] + switch n.nType { + case param: + // find param end (either '/' or path end) + end := 0 + for end < len(path) && path[end] != '/' { + end++ + } + + // save param value + if p == nil { + // lazy allocation + p = make(Params, 0, n.maxParams) + } + i := len(p) + p = p[:i+1] // expand slice within preallocated capacity + p[i].Key = n.path[1:] + p[i].Value = path[:end] + + // we need to go deeper! + if end < len(path) { + if len(n.children) > 0 { + path = path[end:] + n = n.children[0] + continue walk + } + + // ... but we can't + tsr = (len(path) == end+1) + return + } + + if handle = n.handle; handle != nil { + return + } else if len(n.children) == 1 { + // No handle found. Check if a handle for this path + a + // trailing slash exists for TSR recommendation + n = n.children[0] + tsr = (n.path == "/" && n.handle != nil) + } + + return + + case catchAll: + // save param value + if p == nil { + // lazy allocation + p = make(Params, 0, n.maxParams) + } + i := len(p) + p = p[:i+1] // expand slice within preallocated capacity + p[i].Key = n.path[2:] + p[i].Value = path + + handle = n.handle + return + + default: + panic("invalid node type") + } + } + } else if path == n.path { + // We should have reached the node containing the handle. + // Check if this node has a handle registered. + if handle = n.handle; handle != nil { + return + } + + if path == "/" && n.wildChild && n.nType != root { + tsr = true + return + } + + // No handle found. Check if a handle for this path + a + // trailing slash exists for trailing slash recommendation + for i := 0; i < len(n.indices); i++ { + if n.indices[i] == '/' { + n = n.children[i] + tsr = (len(n.path) == 1 && n.handle != nil) || + (n.nType == catchAll && n.children[0].handle != nil) + return + } + } + + return + } + + // Nothing found. We can recommend to redirect to the same URL with an + // extra trailing slash if a leaf exists for that path + tsr = (path == "/") || + (len(n.path) == len(path)+1 && n.path[len(path)] == '/' && + path == n.path[:len(n.path)-1] && n.handle != nil) + return + } +} + +// Makes a case-insensitive lookup of the given path and tries to find a handler. +// It can optionally also fix trailing slashes. +// It returns the case-corrected path and a bool indicating whether the lookup +// was successful. +func (n *node) findCaseInsensitivePath(path string, fixTrailingSlash bool) (ciPath []byte, found bool) { + return n.findCaseInsensitivePathRec( + path, + strings.ToLower(path), + make([]byte, 0, len(path)+1), // preallocate enough memory for new path + [4]byte{}, // empty rune buffer + fixTrailingSlash, + ) +} + +// shift bytes in array by n bytes left +func shiftNRuneBytes(rb [4]byte, n int) [4]byte { + switch n { + case 0: + return rb + case 1: + return [4]byte{rb[1], rb[2], rb[3], 0} + case 2: + return [4]byte{rb[2], rb[3]} + case 3: + return [4]byte{rb[3]} + default: + return [4]byte{} + } +} + +// recursive case-insensitive lookup function used by n.findCaseInsensitivePath +func (n *node) findCaseInsensitivePathRec(path, loPath string, ciPath []byte, rb [4]byte, fixTrailingSlash bool) ([]byte, bool) { + loNPath := strings.ToLower(n.path) + +walk: // outer loop for walking the tree + for len(loPath) >= len(loNPath) && (len(loNPath) == 0 || loPath[1:len(loNPath)] == loNPath[1:]) { + // add common path to result + ciPath = append(ciPath, n.path...) + + if path = path[len(n.path):]; len(path) > 0 { + loOld := loPath + loPath = loPath[len(loNPath):] + + // If this node does not have a wildcard (param or catchAll) child, + // we can just look up the next child node and continue to walk down + // the tree + if !n.wildChild { + // skip rune bytes already processed + rb = shiftNRuneBytes(rb, len(loNPath)) + + if rb[0] != 0 { + // old rune not finished + for i := 0; i < len(n.indices); i++ { + if n.indices[i] == rb[0] { + // continue with child node + n = n.children[i] + loNPath = strings.ToLower(n.path) + continue walk + } + } + } else { + // process a new rune + var rv rune + + // find rune start + // runes are up to 4 byte long, + // -4 would definitely be another rune + var off int + for max := min(len(loNPath), 3); off < max; off++ { + if i := len(loNPath) - off; utf8.RuneStart(loOld[i]) { + // read rune from cached lowercase path + rv, _ = utf8.DecodeRuneInString(loOld[i:]) + break + } + } + + // calculate lowercase bytes of current rune + utf8.EncodeRune(rb[:], rv) + // skipp already processed bytes + rb = shiftNRuneBytes(rb, off) + + for i := 0; i < len(n.indices); i++ { + // lowercase matches + if n.indices[i] == rb[0] { + // must use a recursive approach since both the + // uppercase byte and the lowercase byte might exist + // as an index + if out, found := n.children[i].findCaseInsensitivePathRec( + path, loPath, ciPath, rb, fixTrailingSlash, + ); found { + return out, true + } + break + } + } + + // same for uppercase rune, if it differs + if up := unicode.ToUpper(rv); up != rv { + utf8.EncodeRune(rb[:], up) + rb = shiftNRuneBytes(rb, off) + + for i := 0; i < len(n.indices); i++ { + // uppercase matches + if n.indices[i] == rb[0] { + // continue with child node + n = n.children[i] + loNPath = strings.ToLower(n.path) + continue walk + } + } + } + } + + // Nothing found. We can recommend to redirect to the same URL + // without a trailing slash if a leaf exists for that path + return ciPath, (fixTrailingSlash && path == "/" && n.handle != nil) + } + + n = n.children[0] + switch n.nType { + case param: + // find param end (either '/' or path end) + k := 0 + for k < len(path) && path[k] != '/' { + k++ + } + + // add param value to case insensitive path + ciPath = append(ciPath, path[:k]...) + + // we need to go deeper! + if k < len(path) { + if len(n.children) > 0 { + // continue with child node + n = n.children[0] + loNPath = strings.ToLower(n.path) + loPath = loPath[k:] + path = path[k:] + continue + } + + // ... but we can't + if fixTrailingSlash && len(path) == k+1 { + return ciPath, true + } + return ciPath, false + } + + if n.handle != nil { + return ciPath, true + } else if fixTrailingSlash && len(n.children) == 1 { + // No handle found. Check if a handle for this path + a + // trailing slash exists + n = n.children[0] + if n.path == "/" && n.handle != nil { + return append(ciPath, '/'), true + } + } + return ciPath, false + + case catchAll: + return append(ciPath, path...), true + + default: + panic("invalid node type") + } + } else { + // We should have reached the node containing the handle. + // Check if this node has a handle registered. + if n.handle != nil { + return ciPath, true + } + + // No handle found. + // Try to fix the path by adding a trailing slash + if fixTrailingSlash { + for i := 0; i < len(n.indices); i++ { + if n.indices[i] == '/' { + n = n.children[i] + if (len(n.path) == 1 && n.handle != nil) || + (n.nType == catchAll && n.children[0].handle != nil) { + return append(ciPath, '/'), true + } + return ciPath, false + } + } + } + return ciPath, false + } + } + + // Nothing found. + // Try to fix the path by adding / removing a trailing slash + if fixTrailingSlash { + if path == "/" { + return ciPath, true + } + if len(loPath)+1 == len(loNPath) && loNPath[len(loPath)] == '/' && + loPath[1:] == loNPath[1:len(loPath)] && n.handle != nil { + return append(ciPath, n.path...), true + } + } + return ciPath, false +} diff --git a/vendor/github.com/kolo/xmlrpc/LICENSE b/vendor/github.com/kolo/xmlrpc/LICENSE new file mode 100644 index 0000000..8103dd1 --- /dev/null +++ b/vendor/github.com/kolo/xmlrpc/LICENSE @@ -0,0 +1,19 @@ +Copyright (C) 2012 Dmitry Maksimov + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/github.com/kolo/xmlrpc/README.md b/vendor/github.com/kolo/xmlrpc/README.md new file mode 100644 index 0000000..8113cfc --- /dev/null +++ b/vendor/github.com/kolo/xmlrpc/README.md @@ -0,0 +1,89 @@ +[![GoDoc](https://godoc.org/github.com/kolo/xmlrpc?status.svg)](https://godoc.org/github.com/kolo/xmlrpc) + +## Overview + +xmlrpc is an implementation of client side part of XMLRPC protocol in Go language. + +## Status + +This project is in minimal maintenance mode with no further development. Bug fixes +are accepted, but it might take some time until they will be merged. + +## Installation + +To install xmlrpc package run `go get github.com/kolo/xmlrpc`. To use +it in application add `"github.com/kolo/xmlrpc"` string to `import` +statement. + +## Usage + + client, _ := xmlrpc.NewClient("https://bugzilla.mozilla.org/xmlrpc.cgi", nil) + result := struct{ + Version string `xmlrpc:"version"` + }{} + client.Call("Bugzilla.version", nil, &result) + fmt.Printf("Version: %s\n", result.Version) // Version: 4.2.7+ + +Second argument of NewClient function is an object that implements +[http.RoundTripper](http://golang.org/pkg/net/http/#RoundTripper) +interface, it can be used to get more control over connection options. +By default it initialized by http.DefaultTransport object. + +### Arguments encoding + +xmlrpc package supports encoding of native Go data types to method +arguments. + +Data types encoding rules: + +* int, int8, int16, int32, int64 encoded to int; +* float32, float64 encoded to double; +* bool encoded to boolean; +* string encoded to string; +* time.Time encoded to datetime.iso8601; +* xmlrpc.Base64 encoded to base64; +* slice encoded to array; + +Structs decoded to struct by following rules: + +* all public field become struct members; +* field name become member name; +* if field has xmlrpc tag, its value become member name. + +Server method can accept few arguments, to handle this case there is +special approach to handle slice of empty interfaces (`[]interface{}`). +Each value of such slice encoded as separate argument. + +### Result decoding + +Result of remote function is decoded to native Go data type. + +Data types decoding rules: + +* int, i4 decoded to int, int8, int16, int32, int64; +* double decoded to float32, float64; +* boolean decoded to bool; +* string decoded to string; +* array decoded to slice; +* structs decoded following the rules described in previous section; +* datetime.iso8601 decoded as time.Time data type; +* base64 decoded to string. + +## Implementation details + +xmlrpc package contains clientCodec type, that implements [rpc.ClientCodec](http://golang.org/pkg/net/rpc/#ClientCodec) +interface of [net/rpc](http://golang.org/pkg/net/rpc) package. + +xmlrpc package works over HTTP protocol, but some internal functions +and data type were made public to make it easier to create another +implementation of xmlrpc that works over another protocol. To encode +request body there is EncodeMethodCall function. To decode server +response Response data type can be used. + +## Contribution + +See [project status](#status). + +## Authors + +Dmitry Maksimov (dmtmax@gmail.com) diff --git a/vendor/github.com/kolo/xmlrpc/client.go b/vendor/github.com/kolo/xmlrpc/client.go new file mode 100644 index 0000000..643dc1c --- /dev/null +++ b/vendor/github.com/kolo/xmlrpc/client.go @@ -0,0 +1,161 @@ +package xmlrpc + +import ( + "errors" + "fmt" + "io/ioutil" + "net/http" + "net/http/cookiejar" + "net/rpc" + "net/url" + "sync" +) + +type Client struct { + *rpc.Client +} + +// clientCodec is rpc.ClientCodec interface implementation. +type clientCodec struct { + // url presents url of xmlrpc service + url *url.URL + + // httpClient works with HTTP protocol + httpClient *http.Client + + // cookies stores cookies received on last request + cookies http.CookieJar + + // responses presents map of active requests. It is required to return request id, that + // rpc.Client can mark them as done. + responses map[uint64]*http.Response + mutex sync.Mutex + + response Response + + // ready presents channel, that is used to link request and it`s response. + ready chan uint64 + + // close notifies codec is closed. + close chan uint64 +} + +func (codec *clientCodec) WriteRequest(request *rpc.Request, args interface{}) (err error) { + httpRequest, err := NewRequest(codec.url.String(), request.ServiceMethod, args) + + if err != nil { + return err + } + + if codec.cookies != nil { + for _, cookie := range codec.cookies.Cookies(codec.url) { + httpRequest.AddCookie(cookie) + } + } + + var httpResponse *http.Response + httpResponse, err = codec.httpClient.Do(httpRequest) + + if err != nil { + return err + } + + if codec.cookies != nil { + codec.cookies.SetCookies(codec.url, httpResponse.Cookies()) + } + + codec.mutex.Lock() + codec.responses[request.Seq] = httpResponse + codec.mutex.Unlock() + + codec.ready <- request.Seq + + return nil +} + +func (codec *clientCodec) ReadResponseHeader(response *rpc.Response) (err error) { + var seq uint64 + select { + case seq = <-codec.ready: + case <-codec.close: + return errors.New("codec is closed") + } + response.Seq = seq + + codec.mutex.Lock() + httpResponse := codec.responses[seq] + delete(codec.responses, seq) + codec.mutex.Unlock() + + defer httpResponse.Body.Close() + + if httpResponse.StatusCode < 200 || httpResponse.StatusCode >= 300 { + response.Error = fmt.Sprintf("request error: bad status code - %d", httpResponse.StatusCode) + return nil + } + + body, err := ioutil.ReadAll(httpResponse.Body) + if err != nil { + response.Error = err.Error() + return nil + } + + resp := Response(body) + if err := resp.Err(); err != nil { + response.Error = err.Error() + return nil + } + + codec.response = resp + + return nil +} + +func (codec *clientCodec) ReadResponseBody(v interface{}) (err error) { + if v == nil { + return nil + } + return codec.response.Unmarshal(v) +} + +func (codec *clientCodec) Close() error { + if transport, ok := codec.httpClient.Transport.(*http.Transport); ok { + transport.CloseIdleConnections() + } + + close(codec.close) + + return nil +} + +// NewClient returns instance of rpc.Client object, that is used to send request to xmlrpc service. +func NewClient(requrl string, transport http.RoundTripper) (*Client, error) { + if transport == nil { + transport = http.DefaultTransport + } + + httpClient := &http.Client{Transport: transport} + + jar, err := cookiejar.New(nil) + + if err != nil { + return nil, err + } + + u, err := url.Parse(requrl) + + if err != nil { + return nil, err + } + + codec := clientCodec{ + url: u, + httpClient: httpClient, + close: make(chan uint64), + ready: make(chan uint64), + responses: make(map[uint64]*http.Response), + cookies: jar, + } + + return &Client{rpc.NewClientWithCodec(&codec)}, nil +} diff --git a/vendor/github.com/kolo/xmlrpc/decoder.go b/vendor/github.com/kolo/xmlrpc/decoder.go new file mode 100644 index 0000000..d4dcb19 --- /dev/null +++ b/vendor/github.com/kolo/xmlrpc/decoder.go @@ -0,0 +1,473 @@ +package xmlrpc + +import ( + "bytes" + "encoding/xml" + "errors" + "fmt" + "io" + "reflect" + "strconv" + "strings" + "time" +) + +const ( + iso8601 = "20060102T15:04:05" + iso8601Z = "20060102T15:04:05Z07:00" + iso8601Hyphen = "2006-01-02T15:04:05" + iso8601HyphenZ = "2006-01-02T15:04:05Z07:00" +) + +var ( + // CharsetReader is a function to generate reader which converts a non UTF-8 + // charset into UTF-8. + CharsetReader func(string, io.Reader) (io.Reader, error) + + timeLayouts = []string{iso8601, iso8601Z, iso8601Hyphen, iso8601HyphenZ} + invalidXmlError = errors.New("invalid xml") +) + +type TypeMismatchError string + +func (e TypeMismatchError) Error() string { return string(e) } + +type decoder struct { + *xml.Decoder +} + +func unmarshal(data []byte, v interface{}) (err error) { + dec := &decoder{xml.NewDecoder(bytes.NewBuffer(data))} + + if CharsetReader != nil { + dec.CharsetReader = CharsetReader + } + + var tok xml.Token + for { + if tok, err = dec.Token(); err != nil { + return err + } + + if t, ok := tok.(xml.StartElement); ok { + if t.Name.Local == "value" { + val := reflect.ValueOf(v) + if val.Kind() != reflect.Ptr { + return errors.New("non-pointer value passed to unmarshal") + } + if err = dec.decodeValue(val.Elem()); err != nil { + return err + } + + break + } + } + } + + // read until end of document + err = dec.Skip() + if err != nil && err != io.EOF { + return err + } + + return nil +} + +func (dec *decoder) decodeValue(val reflect.Value) error { + var tok xml.Token + var err error + + if val.Kind() == reflect.Ptr { + if val.IsNil() { + val.Set(reflect.New(val.Type().Elem())) + } + val = val.Elem() + } + + var typeName string + for { + if tok, err = dec.Token(); err != nil { + return err + } + + if t, ok := tok.(xml.EndElement); ok { + if t.Name.Local == "value" { + return nil + } else { + return invalidXmlError + } + } + + if t, ok := tok.(xml.StartElement); ok { + typeName = t.Name.Local + break + } + + // Treat value data without type identifier as string + if t, ok := tok.(xml.CharData); ok { + if value := strings.TrimSpace(string(t)); value != "" { + if err = checkType(val, reflect.String); err != nil { + return err + } + + val.SetString(value) + return nil + } + } + } + + switch typeName { + case "struct": + ismap := false + pmap := val + valType := val.Type() + + if err = checkType(val, reflect.Struct); err != nil { + if checkType(val, reflect.Map) == nil { + if valType.Key().Kind() != reflect.String { + return fmt.Errorf("only maps with string key type can be unmarshalled") + } + ismap = true + } else if checkType(val, reflect.Interface) == nil && val.IsNil() { + var dummy map[string]interface{} + valType = reflect.TypeOf(dummy) + pmap = reflect.New(valType).Elem() + val.Set(pmap) + ismap = true + } else { + return err + } + } + + var fields map[string]reflect.Value + + if !ismap { + fields = make(map[string]reflect.Value) + + for i := 0; i < valType.NumField(); i++ { + field := valType.Field(i) + fieldVal := val.FieldByName(field.Name) + + if fieldVal.CanSet() { + if fn := field.Tag.Get("xmlrpc"); fn != "" { + fields[fn] = fieldVal + } else { + fields[field.Name] = fieldVal + } + } + } + } else { + // Create initial empty map + pmap.Set(reflect.MakeMap(valType)) + } + + // Process struct members. + StructLoop: + for { + if tok, err = dec.Token(); err != nil { + return err + } + switch t := tok.(type) { + case xml.StartElement: + if t.Name.Local != "member" { + return invalidXmlError + } + + tagName, fieldName, err := dec.readTag() + if err != nil { + return err + } + if tagName != "name" { + return invalidXmlError + } + + var fv reflect.Value + ok := true + + if !ismap { + fv, ok = fields[string(fieldName)] + } else { + fv = reflect.New(valType.Elem()) + } + + if ok { + for { + if tok, err = dec.Token(); err != nil { + return err + } + if t, ok := tok.(xml.StartElement); ok && t.Name.Local == "value" { + if err = dec.decodeValue(fv); err != nil { + return err + } + + // + if err = dec.Skip(); err != nil { + return err + } + + break + } + } + } + + // + if err = dec.Skip(); err != nil { + return err + } + + if ismap { + pmap.SetMapIndex(reflect.ValueOf(string(fieldName)), reflect.Indirect(fv)) + val.Set(pmap) + } + case xml.EndElement: + break StructLoop + } + } + case "array": + slice := val + if checkType(val, reflect.Interface) == nil && val.IsNil() { + slice = reflect.ValueOf([]interface{}{}) + } else if err = checkType(val, reflect.Slice); err != nil { + return err + } + + ArrayLoop: + for { + if tok, err = dec.Token(); err != nil { + return err + } + + switch t := tok.(type) { + case xml.StartElement: + var index int + if t.Name.Local != "data" { + return invalidXmlError + } + DataLoop: + for { + if tok, err = dec.Token(); err != nil { + return err + } + + switch tt := tok.(type) { + case xml.StartElement: + if tt.Name.Local != "value" { + return invalidXmlError + } + + if index < slice.Len() { + v := slice.Index(index) + if v.Kind() == reflect.Interface { + v = v.Elem() + } + if v.Kind() != reflect.Ptr { + return errors.New("error: cannot write to non-pointer array element") + } + if err = dec.decodeValue(v); err != nil { + return err + } + } else { + v := reflect.New(slice.Type().Elem()) + if err = dec.decodeValue(v); err != nil { + return err + } + slice = reflect.Append(slice, v.Elem()) + } + + // + if err = dec.Skip(); err != nil { + return err + } + index++ + case xml.EndElement: + val.Set(slice) + break DataLoop + } + } + case xml.EndElement: + break ArrayLoop + } + } + default: + if tok, err = dec.Token(); err != nil { + return err + } + + var data []byte + + switch t := tok.(type) { + case xml.EndElement: + return nil + case xml.CharData: + data = []byte(t.Copy()) + default: + return invalidXmlError + } + + switch typeName { + case "int", "i4", "i8": + if checkType(val, reflect.Interface) == nil && val.IsNil() { + i, err := strconv.ParseInt(string(data), 10, 64) + if err != nil { + return err + } + + pi := reflect.New(reflect.TypeOf(i)).Elem() + pi.SetInt(i) + val.Set(pi) + } else if err = checkType(val, reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64); err != nil { + return err + } else { + i, err := strconv.ParseInt(string(data), 10, val.Type().Bits()) + if err != nil { + return err + } + + val.SetInt(i) + } + case "string", "base64": + str := string(data) + if checkType(val, reflect.Interface) == nil && val.IsNil() { + pstr := reflect.New(reflect.TypeOf(str)).Elem() + pstr.SetString(str) + val.Set(pstr) + } else if err = checkType(val, reflect.String); err != nil { + return err + } else { + val.SetString(str) + } + case "dateTime.iso8601": + var t time.Time + var err error + + for _, layout := range timeLayouts { + t, err = time.Parse(layout, string(data)) + if err == nil { + break + } + } + if err != nil { + return err + } + + if checkType(val, reflect.Interface) == nil && val.IsNil() { + ptime := reflect.New(reflect.TypeOf(t)).Elem() + ptime.Set(reflect.ValueOf(t)) + val.Set(ptime) + } else if _, ok := val.Interface().(time.Time); !ok { + return TypeMismatchError(fmt.Sprintf("error: type mismatch error - can't decode %v to time", val.Kind())) + } else { + val.Set(reflect.ValueOf(t)) + } + case "boolean": + v, err := strconv.ParseBool(string(data)) + if err != nil { + return err + } + + if checkType(val, reflect.Interface) == nil && val.IsNil() { + pv := reflect.New(reflect.TypeOf(v)).Elem() + pv.SetBool(v) + val.Set(pv) + } else if err = checkType(val, reflect.Bool); err != nil { + return err + } else { + val.SetBool(v) + } + case "double": + if checkType(val, reflect.Interface) == nil && val.IsNil() { + i, err := strconv.ParseFloat(string(data), 64) + if err != nil { + return err + } + + pdouble := reflect.New(reflect.TypeOf(i)).Elem() + pdouble.SetFloat(i) + val.Set(pdouble) + } else if err = checkType(val, reflect.Float32, reflect.Float64); err != nil { + return err + } else { + i, err := strconv.ParseFloat(string(data), val.Type().Bits()) + if err != nil { + return err + } + + val.SetFloat(i) + } + default: + return errors.New("unsupported type") + } + + // + if err = dec.Skip(); err != nil { + return err + } + } + + return nil +} + +func (dec *decoder) readTag() (string, []byte, error) { + var tok xml.Token + var err error + + var name string + for { + if tok, err = dec.Token(); err != nil { + return "", nil, err + } + + if t, ok := tok.(xml.StartElement); ok { + name = t.Name.Local + break + } + } + + value, err := dec.readCharData() + if err != nil { + return "", nil, err + } + + return name, value, dec.Skip() +} + +func (dec *decoder) readCharData() ([]byte, error) { + var tok xml.Token + var err error + + if tok, err = dec.Token(); err != nil { + return nil, err + } + + if t, ok := tok.(xml.CharData); ok { + return []byte(t.Copy()), nil + } else { + return nil, invalidXmlError + } +} + +func checkType(val reflect.Value, kinds ...reflect.Kind) error { + if len(kinds) == 0 { + return nil + } + + if val.Kind() == reflect.Ptr { + val = val.Elem() + } + + match := false + + for _, kind := range kinds { + if val.Kind() == kind { + match = true + break + } + } + + if !match { + return TypeMismatchError(fmt.Sprintf("error: type mismatch - can't unmarshal %v to %v", + val.Kind(), kinds[0])) + } + + return nil +} diff --git a/vendor/github.com/kolo/xmlrpc/encoder.go b/vendor/github.com/kolo/xmlrpc/encoder.go new file mode 100644 index 0000000..22b9683 --- /dev/null +++ b/vendor/github.com/kolo/xmlrpc/encoder.go @@ -0,0 +1,174 @@ +package xmlrpc + +import ( + "bytes" + "encoding/xml" + "fmt" + "reflect" + "sort" + "strconv" + "time" +) + +// Base64 represents value in base64 encoding +type Base64 string + +type encodeFunc func(reflect.Value) ([]byte, error) + +func marshal(v interface{}) ([]byte, error) { + if v == nil { + return []byte{}, nil + } + + val := reflect.ValueOf(v) + return encodeValue(val) +} + +func encodeValue(val reflect.Value) ([]byte, error) { + var b []byte + var err error + + if val.Kind() == reflect.Ptr || val.Kind() == reflect.Interface { + if val.IsNil() { + return []byte(""), nil + } + + val = val.Elem() + } + + switch val.Kind() { + case reflect.Struct: + switch val.Interface().(type) { + case time.Time: + t := val.Interface().(time.Time) + b = []byte(fmt.Sprintf("%s", t.Format(iso8601))) + default: + b, err = encodeStruct(val) + } + case reflect.Map: + b, err = encodeMap(val) + case reflect.Slice: + b, err = encodeSlice(val) + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + b = []byte(fmt.Sprintf("%s", strconv.FormatInt(val.Int(), 10))) + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + b = []byte(fmt.Sprintf("%s", strconv.FormatUint(val.Uint(), 10))) + case reflect.Float32, reflect.Float64: + b = []byte(fmt.Sprintf("%s", + strconv.FormatFloat(val.Float(), 'f', -1, val.Type().Bits()))) + case reflect.Bool: + if val.Bool() { + b = []byte("1") + } else { + b = []byte("0") + } + case reflect.String: + var buf bytes.Buffer + + xml.Escape(&buf, []byte(val.String())) + + if _, ok := val.Interface().(Base64); ok { + b = []byte(fmt.Sprintf("%s", buf.String())) + } else { + b = []byte(fmt.Sprintf("%s", buf.String())) + } + default: + return nil, fmt.Errorf("xmlrpc encode error: unsupported type") + } + + if err != nil { + return nil, err + } + + return []byte(fmt.Sprintf("%s", string(b))), nil +} + +func encodeStruct(val reflect.Value) ([]byte, error) { + var b bytes.Buffer + + b.WriteString("") + + t := val.Type() + for i := 0; i < t.NumField(); i++ { + b.WriteString("") + f := t.Field(i) + + name := f.Tag.Get("xmlrpc") + if name == "" { + name = f.Name + } + b.WriteString(fmt.Sprintf("%s", name)) + + p, err := encodeValue(val.FieldByName(f.Name)) + if err != nil { + return nil, err + } + b.Write(p) + + b.WriteString("") + } + + b.WriteString("") + + return b.Bytes(), nil +} + +var sortMapKeys bool + +func encodeMap(val reflect.Value) ([]byte, error) { + var t = val.Type() + + if t.Key().Kind() != reflect.String { + return nil, fmt.Errorf("xmlrpc encode error: only maps with string keys are supported") + } + + var b bytes.Buffer + + b.WriteString("") + + keys := val.MapKeys() + + if sortMapKeys { + sort.Slice(keys, func(i, j int) bool { return keys[i].String() < keys[j].String() }) + } + + for i := 0; i < val.Len(); i++ { + key := keys[i] + kval := val.MapIndex(key) + + b.WriteString("") + b.WriteString(fmt.Sprintf("%s", key.String())) + + p, err := encodeValue(kval) + + if err != nil { + return nil, err + } + + b.Write(p) + b.WriteString("") + } + + b.WriteString("") + + return b.Bytes(), nil +} + +func encodeSlice(val reflect.Value) ([]byte, error) { + var b bytes.Buffer + + b.WriteString("") + + for i := 0; i < val.Len(); i++ { + p, err := encodeValue(val.Index(i)) + if err != nil { + return nil, err + } + + b.Write(p) + } + + b.WriteString("") + + return b.Bytes(), nil +} diff --git a/vendor/github.com/kolo/xmlrpc/request.go b/vendor/github.com/kolo/xmlrpc/request.go new file mode 100644 index 0000000..acb8251 --- /dev/null +++ b/vendor/github.com/kolo/xmlrpc/request.go @@ -0,0 +1,57 @@ +package xmlrpc + +import ( + "bytes" + "fmt" + "net/http" +) + +func NewRequest(url string, method string, args interface{}) (*http.Request, error) { + var t []interface{} + var ok bool + if t, ok = args.([]interface{}); !ok { + if args != nil { + t = []interface{}{args} + } + } + + body, err := EncodeMethodCall(method, t...) + if err != nil { + return nil, err + } + + request, err := http.NewRequest("POST", url, bytes.NewReader(body)) + if err != nil { + return nil, err + } + + request.Header.Set("Content-Type", "text/xml") + request.Header.Set("Content-Length", fmt.Sprintf("%d", len(body))) + + return request, nil +} + +func EncodeMethodCall(method string, args ...interface{}) ([]byte, error) { + var b bytes.Buffer + b.WriteString(``) + b.WriteString(fmt.Sprintf("%s", method)) + + if args != nil { + b.WriteString("") + + for _, arg := range args { + p, err := marshal(arg) + if err != nil { + return nil, err + } + + b.WriteString(fmt.Sprintf("%s", string(p))) + } + + b.WriteString("") + } + + b.WriteString("") + + return b.Bytes(), nil +} diff --git a/vendor/github.com/kolo/xmlrpc/response.go b/vendor/github.com/kolo/xmlrpc/response.go new file mode 100644 index 0000000..18e6d36 --- /dev/null +++ b/vendor/github.com/kolo/xmlrpc/response.go @@ -0,0 +1,42 @@ +package xmlrpc + +import ( + "fmt" + "regexp" +) + +var ( + faultRx = regexp.MustCompile(`(\s|\S)+`) +) + +// FaultError is returned from the server when an invalid call is made +type FaultError struct { + Code int `xmlrpc:"faultCode"` + String string `xmlrpc:"faultString"` +} + +// Error implements the error interface +func (e FaultError) Error() string { + return fmt.Sprintf("Fault(%d): %s", e.Code, e.String) +} + +type Response []byte + +func (r Response) Err() error { + if !faultRx.Match(r) { + return nil + } + var fault FaultError + if err := unmarshal(r, &fault); err != nil { + return err + } + return fault +} + +func (r Response) Unmarshal(v interface{}) error { + if err := unmarshal(r, v); err != nil { + return err + } + + return nil +} diff --git a/vendor/github.com/kolo/xmlrpc/test_server.rb b/vendor/github.com/kolo/xmlrpc/test_server.rb new file mode 100644 index 0000000..1ccfc9a --- /dev/null +++ b/vendor/github.com/kolo/xmlrpc/test_server.rb @@ -0,0 +1,25 @@ +# encoding: utf-8 + +require "xmlrpc/server" + +class Service + def time + Time.now + end + + def upcase(s) + s.upcase + end + + def sum(x, y) + x + y + end + + def error + raise XMLRPC::FaultException.new(500, "Server error") + end +end + +server = XMLRPC::Server.new 5001, 'localhost' +server.add_handler "service", Service.new +server.serve diff --git a/vendor/github.com/kr/pretty/.gitignore b/vendor/github.com/kr/pretty/.gitignore new file mode 100644 index 0000000..1f0a99f --- /dev/null +++ b/vendor/github.com/kr/pretty/.gitignore @@ -0,0 +1,4 @@ +[568].out +_go* +_test* +_obj diff --git a/vendor/github.com/kr/pretty/License b/vendor/github.com/kr/pretty/License new file mode 100644 index 0000000..05c783c --- /dev/null +++ b/vendor/github.com/kr/pretty/License @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright 2012 Keith Rarick + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/github.com/kr/pretty/Readme b/vendor/github.com/kr/pretty/Readme new file mode 100644 index 0000000..c589fc6 --- /dev/null +++ b/vendor/github.com/kr/pretty/Readme @@ -0,0 +1,9 @@ +package pretty + + import "github.com/kr/pretty" + + Package pretty provides pretty-printing for Go values. + +Documentation + + http://godoc.org/github.com/kr/pretty diff --git a/vendor/github.com/kr/pretty/diff.go b/vendor/github.com/kr/pretty/diff.go new file mode 100644 index 0000000..6aa7f74 --- /dev/null +++ b/vendor/github.com/kr/pretty/diff.go @@ -0,0 +1,265 @@ +package pretty + +import ( + "fmt" + "io" + "reflect" +) + +type sbuf []string + +func (p *sbuf) Printf(format string, a ...interface{}) { + s := fmt.Sprintf(format, a...) + *p = append(*p, s) +} + +// Diff returns a slice where each element describes +// a difference between a and b. +func Diff(a, b interface{}) (desc []string) { + Pdiff((*sbuf)(&desc), a, b) + return desc +} + +// wprintfer calls Fprintf on w for each Printf call +// with a trailing newline. +type wprintfer struct{ w io.Writer } + +func (p *wprintfer) Printf(format string, a ...interface{}) { + fmt.Fprintf(p.w, format+"\n", a...) +} + +// Fdiff writes to w a description of the differences between a and b. +func Fdiff(w io.Writer, a, b interface{}) { + Pdiff(&wprintfer{w}, a, b) +} + +type Printfer interface { + Printf(format string, a ...interface{}) +} + +// Pdiff prints to p a description of the differences between a and b. +// It calls Printf once for each difference, with no trailing newline. +// The standard library log.Logger is a Printfer. +func Pdiff(p Printfer, a, b interface{}) { + diffPrinter{w: p}.diff(reflect.ValueOf(a), reflect.ValueOf(b)) +} + +type Logfer interface { + Logf(format string, a ...interface{}) +} + +// logprintfer calls Fprintf on w for each Printf call +// with a trailing newline. +type logprintfer struct{ l Logfer } + +func (p *logprintfer) Printf(format string, a ...interface{}) { + p.l.Logf(format, a...) +} + +// Ldiff prints to l a description of the differences between a and b. +// It calls Logf once for each difference, with no trailing newline. +// The standard library testing.T and testing.B are Logfers. +func Ldiff(l Logfer, a, b interface{}) { + Pdiff(&logprintfer{l}, a, b) +} + +type diffPrinter struct { + w Printfer + l string // label +} + +func (w diffPrinter) printf(f string, a ...interface{}) { + var l string + if w.l != "" { + l = w.l + ": " + } + w.w.Printf(l+f, a...) +} + +func (w diffPrinter) diff(av, bv reflect.Value) { + if !av.IsValid() && bv.IsValid() { + w.printf("nil != %# v", formatter{v: bv, quote: true}) + return + } + if av.IsValid() && !bv.IsValid() { + w.printf("%# v != nil", formatter{v: av, quote: true}) + return + } + if !av.IsValid() && !bv.IsValid() { + return + } + + at := av.Type() + bt := bv.Type() + if at != bt { + w.printf("%v != %v", at, bt) + return + } + + switch kind := at.Kind(); kind { + case reflect.Bool: + if a, b := av.Bool(), bv.Bool(); a != b { + w.printf("%v != %v", a, b) + } + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + if a, b := av.Int(), bv.Int(); a != b { + w.printf("%d != %d", a, b) + } + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + if a, b := av.Uint(), bv.Uint(); a != b { + w.printf("%d != %d", a, b) + } + case reflect.Float32, reflect.Float64: + if a, b := av.Float(), bv.Float(); a != b { + w.printf("%v != %v", a, b) + } + case reflect.Complex64, reflect.Complex128: + if a, b := av.Complex(), bv.Complex(); a != b { + w.printf("%v != %v", a, b) + } + case reflect.Array: + n := av.Len() + for i := 0; i < n; i++ { + w.relabel(fmt.Sprintf("[%d]", i)).diff(av.Index(i), bv.Index(i)) + } + case reflect.Chan, reflect.Func, reflect.UnsafePointer: + if a, b := av.Pointer(), bv.Pointer(); a != b { + w.printf("%#x != %#x", a, b) + } + case reflect.Interface: + w.diff(av.Elem(), bv.Elem()) + case reflect.Map: + ak, both, bk := keyDiff(av.MapKeys(), bv.MapKeys()) + for _, k := range ak { + w := w.relabel(fmt.Sprintf("[%#v]", k)) + w.printf("%q != (missing)", av.MapIndex(k)) + } + for _, k := range both { + w := w.relabel(fmt.Sprintf("[%#v]", k)) + w.diff(av.MapIndex(k), bv.MapIndex(k)) + } + for _, k := range bk { + w := w.relabel(fmt.Sprintf("[%#v]", k)) + w.printf("(missing) != %q", bv.MapIndex(k)) + } + case reflect.Ptr: + switch { + case av.IsNil() && !bv.IsNil(): + w.printf("nil != %# v", formatter{v: bv, quote: true}) + case !av.IsNil() && bv.IsNil(): + w.printf("%# v != nil", formatter{v: av, quote: true}) + case !av.IsNil() && !bv.IsNil(): + w.diff(av.Elem(), bv.Elem()) + } + case reflect.Slice: + lenA := av.Len() + lenB := bv.Len() + if lenA != lenB { + w.printf("%s[%d] != %s[%d]", av.Type(), lenA, bv.Type(), lenB) + break + } + for i := 0; i < lenA; i++ { + w.relabel(fmt.Sprintf("[%d]", i)).diff(av.Index(i), bv.Index(i)) + } + case reflect.String: + if a, b := av.String(), bv.String(); a != b { + w.printf("%q != %q", a, b) + } + case reflect.Struct: + for i := 0; i < av.NumField(); i++ { + w.relabel(at.Field(i).Name).diff(av.Field(i), bv.Field(i)) + } + default: + panic("unknown reflect Kind: " + kind.String()) + } +} + +func (d diffPrinter) relabel(name string) (d1 diffPrinter) { + d1 = d + if d.l != "" && name[0] != '[' { + d1.l += "." + } + d1.l += name + return d1 +} + +// keyEqual compares a and b for equality. +// Both a and b must be valid map keys. +func keyEqual(av, bv reflect.Value) bool { + if !av.IsValid() && !bv.IsValid() { + return true + } + if !av.IsValid() || !bv.IsValid() || av.Type() != bv.Type() { + return false + } + switch kind := av.Kind(); kind { + case reflect.Bool: + a, b := av.Bool(), bv.Bool() + return a == b + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + a, b := av.Int(), bv.Int() + return a == b + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + a, b := av.Uint(), bv.Uint() + return a == b + case reflect.Float32, reflect.Float64: + a, b := av.Float(), bv.Float() + return a == b + case reflect.Complex64, reflect.Complex128: + a, b := av.Complex(), bv.Complex() + return a == b + case reflect.Array: + for i := 0; i < av.Len(); i++ { + if !keyEqual(av.Index(i), bv.Index(i)) { + return false + } + } + return true + case reflect.Chan, reflect.UnsafePointer, reflect.Ptr: + a, b := av.Pointer(), bv.Pointer() + return a == b + case reflect.Interface: + return keyEqual(av.Elem(), bv.Elem()) + case reflect.String: + a, b := av.String(), bv.String() + return a == b + case reflect.Struct: + for i := 0; i < av.NumField(); i++ { + if !keyEqual(av.Field(i), bv.Field(i)) { + return false + } + } + return true + default: + panic("invalid map key type " + av.Type().String()) + } +} + +func keyDiff(a, b []reflect.Value) (ak, both, bk []reflect.Value) { + for _, av := range a { + inBoth := false + for _, bv := range b { + if keyEqual(av, bv) { + inBoth = true + both = append(both, av) + break + } + } + if !inBoth { + ak = append(ak, av) + } + } + for _, bv := range b { + inBoth := false + for _, av := range a { + if keyEqual(av, bv) { + inBoth = true + break + } + } + if !inBoth { + bk = append(bk, bv) + } + } + return +} diff --git a/vendor/github.com/kr/pretty/formatter.go b/vendor/github.com/kr/pretty/formatter.go new file mode 100644 index 0000000..a317d7b --- /dev/null +++ b/vendor/github.com/kr/pretty/formatter.go @@ -0,0 +1,328 @@ +package pretty + +import ( + "fmt" + "io" + "reflect" + "strconv" + "text/tabwriter" + + "github.com/kr/text" +) + +type formatter struct { + v reflect.Value + force bool + quote bool +} + +// Formatter makes a wrapper, f, that will format x as go source with line +// breaks and tabs. Object f responds to the "%v" formatting verb when both the +// "#" and " " (space) flags are set, for example: +// +// fmt.Sprintf("%# v", Formatter(x)) +// +// If one of these two flags is not set, or any other verb is used, f will +// format x according to the usual rules of package fmt. +// In particular, if x satisfies fmt.Formatter, then x.Format will be called. +func Formatter(x interface{}) (f fmt.Formatter) { + return formatter{v: reflect.ValueOf(x), quote: true} +} + +func (fo formatter) String() string { + return fmt.Sprint(fo.v.Interface()) // unwrap it +} + +func (fo formatter) passThrough(f fmt.State, c rune) { + s := "%" + for i := 0; i < 128; i++ { + if f.Flag(i) { + s += string(i) + } + } + if w, ok := f.Width(); ok { + s += fmt.Sprintf("%d", w) + } + if p, ok := f.Precision(); ok { + s += fmt.Sprintf(".%d", p) + } + s += string(c) + fmt.Fprintf(f, s, fo.v.Interface()) +} + +func (fo formatter) Format(f fmt.State, c rune) { + if fo.force || c == 'v' && f.Flag('#') && f.Flag(' ') { + w := tabwriter.NewWriter(f, 4, 4, 1, ' ', 0) + p := &printer{tw: w, Writer: w, visited: make(map[visit]int)} + p.printValue(fo.v, true, fo.quote) + w.Flush() + return + } + fo.passThrough(f, c) +} + +type printer struct { + io.Writer + tw *tabwriter.Writer + visited map[visit]int + depth int +} + +func (p *printer) indent() *printer { + q := *p + q.tw = tabwriter.NewWriter(p.Writer, 4, 4, 1, ' ', 0) + q.Writer = text.NewIndentWriter(q.tw, []byte{'\t'}) + return &q +} + +func (p *printer) printInline(v reflect.Value, x interface{}, showType bool) { + if showType { + io.WriteString(p, v.Type().String()) + fmt.Fprintf(p, "(%#v)", x) + } else { + fmt.Fprintf(p, "%#v", x) + } +} + +// printValue must keep track of already-printed pointer values to avoid +// infinite recursion. +type visit struct { + v uintptr + typ reflect.Type +} + +func (p *printer) printValue(v reflect.Value, showType, quote bool) { + if p.depth > 10 { + io.WriteString(p, "!%v(DEPTH EXCEEDED)") + return + } + + switch v.Kind() { + case reflect.Bool: + p.printInline(v, v.Bool(), showType) + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + p.printInline(v, v.Int(), showType) + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + p.printInline(v, v.Uint(), showType) + case reflect.Float32, reflect.Float64: + p.printInline(v, v.Float(), showType) + case reflect.Complex64, reflect.Complex128: + fmt.Fprintf(p, "%#v", v.Complex()) + case reflect.String: + p.fmtString(v.String(), quote) + case reflect.Map: + t := v.Type() + if showType { + io.WriteString(p, t.String()) + } + writeByte(p, '{') + if nonzero(v) { + expand := !canInline(v.Type()) + pp := p + if expand { + writeByte(p, '\n') + pp = p.indent() + } + keys := v.MapKeys() + for i := 0; i < v.Len(); i++ { + showTypeInStruct := true + k := keys[i] + mv := v.MapIndex(k) + pp.printValue(k, false, true) + writeByte(pp, ':') + if expand { + writeByte(pp, '\t') + } + showTypeInStruct = t.Elem().Kind() == reflect.Interface + pp.printValue(mv, showTypeInStruct, true) + if expand { + io.WriteString(pp, ",\n") + } else if i < v.Len()-1 { + io.WriteString(pp, ", ") + } + } + if expand { + pp.tw.Flush() + } + } + writeByte(p, '}') + case reflect.Struct: + t := v.Type() + if v.CanAddr() { + addr := v.UnsafeAddr() + vis := visit{addr, t} + if vd, ok := p.visited[vis]; ok && vd < p.depth { + p.fmtString(t.String()+"{(CYCLIC REFERENCE)}", false) + break // don't print v again + } + p.visited[vis] = p.depth + } + + if showType { + io.WriteString(p, t.String()) + } + writeByte(p, '{') + if nonzero(v) { + expand := !canInline(v.Type()) + pp := p + if expand { + writeByte(p, '\n') + pp = p.indent() + } + for i := 0; i < v.NumField(); i++ { + showTypeInStruct := true + if f := t.Field(i); f.Name != "" { + io.WriteString(pp, f.Name) + writeByte(pp, ':') + if expand { + writeByte(pp, '\t') + } + showTypeInStruct = labelType(f.Type) + } + pp.printValue(getField(v, i), showTypeInStruct, true) + if expand { + io.WriteString(pp, ",\n") + } else if i < v.NumField()-1 { + io.WriteString(pp, ", ") + } + } + if expand { + pp.tw.Flush() + } + } + writeByte(p, '}') + case reflect.Interface: + switch e := v.Elem(); { + case e.Kind() == reflect.Invalid: + io.WriteString(p, "nil") + case e.IsValid(): + pp := *p + pp.depth++ + pp.printValue(e, showType, true) + default: + io.WriteString(p, v.Type().String()) + io.WriteString(p, "(nil)") + } + case reflect.Array, reflect.Slice: + t := v.Type() + if showType { + io.WriteString(p, t.String()) + } + if v.Kind() == reflect.Slice && v.IsNil() && showType { + io.WriteString(p, "(nil)") + break + } + if v.Kind() == reflect.Slice && v.IsNil() { + io.WriteString(p, "nil") + break + } + writeByte(p, '{') + expand := !canInline(v.Type()) + pp := p + if expand { + writeByte(p, '\n') + pp = p.indent() + } + for i := 0; i < v.Len(); i++ { + showTypeInSlice := t.Elem().Kind() == reflect.Interface + pp.printValue(v.Index(i), showTypeInSlice, true) + if expand { + io.WriteString(pp, ",\n") + } else if i < v.Len()-1 { + io.WriteString(pp, ", ") + } + } + if expand { + pp.tw.Flush() + } + writeByte(p, '}') + case reflect.Ptr: + e := v.Elem() + if !e.IsValid() { + writeByte(p, '(') + io.WriteString(p, v.Type().String()) + io.WriteString(p, ")(nil)") + } else { + pp := *p + pp.depth++ + writeByte(pp, '&') + pp.printValue(e, true, true) + } + case reflect.Chan: + x := v.Pointer() + if showType { + writeByte(p, '(') + io.WriteString(p, v.Type().String()) + fmt.Fprintf(p, ")(%#v)", x) + } else { + fmt.Fprintf(p, "%#v", x) + } + case reflect.Func: + io.WriteString(p, v.Type().String()) + io.WriteString(p, " {...}") + case reflect.UnsafePointer: + p.printInline(v, v.Pointer(), showType) + case reflect.Invalid: + io.WriteString(p, "nil") + } +} + +func canInline(t reflect.Type) bool { + switch t.Kind() { + case reflect.Map: + return !canExpand(t.Elem()) + case reflect.Struct: + for i := 0; i < t.NumField(); i++ { + if canExpand(t.Field(i).Type) { + return false + } + } + return true + case reflect.Interface: + return false + case reflect.Array, reflect.Slice: + return !canExpand(t.Elem()) + case reflect.Ptr: + return false + case reflect.Chan, reflect.Func, reflect.UnsafePointer: + return false + } + return true +} + +func canExpand(t reflect.Type) bool { + switch t.Kind() { + case reflect.Map, reflect.Struct, + reflect.Interface, reflect.Array, reflect.Slice, + reflect.Ptr: + return true + } + return false +} + +func labelType(t reflect.Type) bool { + switch t.Kind() { + case reflect.Interface, reflect.Struct: + return true + } + return false +} + +func (p *printer) fmtString(s string, quote bool) { + if quote { + s = strconv.Quote(s) + } + io.WriteString(p, s) +} + +func writeByte(w io.Writer, b byte) { + w.Write([]byte{b}) +} + +func getField(v reflect.Value, i int) reflect.Value { + val := v.Field(i) + if val.Kind() == reflect.Interface && !val.IsNil() { + val = val.Elem() + } + return val +} diff --git a/vendor/github.com/kr/pretty/go.mod b/vendor/github.com/kr/pretty/go.mod new file mode 100644 index 0000000..1e29533 --- /dev/null +++ b/vendor/github.com/kr/pretty/go.mod @@ -0,0 +1,3 @@ +module "github.com/kr/pretty" + +require "github.com/kr/text" v0.1.0 diff --git a/vendor/github.com/kr/pretty/pretty.go b/vendor/github.com/kr/pretty/pretty.go new file mode 100644 index 0000000..49423ec --- /dev/null +++ b/vendor/github.com/kr/pretty/pretty.go @@ -0,0 +1,108 @@ +// Package pretty provides pretty-printing for Go values. This is +// useful during debugging, to avoid wrapping long output lines in +// the terminal. +// +// It provides a function, Formatter, that can be used with any +// function that accepts a format string. It also provides +// convenience wrappers for functions in packages fmt and log. +package pretty + +import ( + "fmt" + "io" + "log" + "reflect" +) + +// Errorf is a convenience wrapper for fmt.Errorf. +// +// Calling Errorf(f, x, y) is equivalent to +// fmt.Errorf(f, Formatter(x), Formatter(y)). +func Errorf(format string, a ...interface{}) error { + return fmt.Errorf(format, wrap(a, false)...) +} + +// Fprintf is a convenience wrapper for fmt.Fprintf. +// +// Calling Fprintf(w, f, x, y) is equivalent to +// fmt.Fprintf(w, f, Formatter(x), Formatter(y)). +func Fprintf(w io.Writer, format string, a ...interface{}) (n int, error error) { + return fmt.Fprintf(w, format, wrap(a, false)...) +} + +// Log is a convenience wrapper for log.Printf. +// +// Calling Log(x, y) is equivalent to +// log.Print(Formatter(x), Formatter(y)), but each operand is +// formatted with "%# v". +func Log(a ...interface{}) { + log.Print(wrap(a, true)...) +} + +// Logf is a convenience wrapper for log.Printf. +// +// Calling Logf(f, x, y) is equivalent to +// log.Printf(f, Formatter(x), Formatter(y)). +func Logf(format string, a ...interface{}) { + log.Printf(format, wrap(a, false)...) +} + +// Logln is a convenience wrapper for log.Printf. +// +// Calling Logln(x, y) is equivalent to +// log.Println(Formatter(x), Formatter(y)), but each operand is +// formatted with "%# v". +func Logln(a ...interface{}) { + log.Println(wrap(a, true)...) +} + +// Print pretty-prints its operands and writes to standard output. +// +// Calling Print(x, y) is equivalent to +// fmt.Print(Formatter(x), Formatter(y)), but each operand is +// formatted with "%# v". +func Print(a ...interface{}) (n int, errno error) { + return fmt.Print(wrap(a, true)...) +} + +// Printf is a convenience wrapper for fmt.Printf. +// +// Calling Printf(f, x, y) is equivalent to +// fmt.Printf(f, Formatter(x), Formatter(y)). +func Printf(format string, a ...interface{}) (n int, errno error) { + return fmt.Printf(format, wrap(a, false)...) +} + +// Println pretty-prints its operands and writes to standard output. +// +// Calling Print(x, y) is equivalent to +// fmt.Println(Formatter(x), Formatter(y)), but each operand is +// formatted with "%# v". +func Println(a ...interface{}) (n int, errno error) { + return fmt.Println(wrap(a, true)...) +} + +// Sprint is a convenience wrapper for fmt.Sprintf. +// +// Calling Sprint(x, y) is equivalent to +// fmt.Sprint(Formatter(x), Formatter(y)), but each operand is +// formatted with "%# v". +func Sprint(a ...interface{}) string { + return fmt.Sprint(wrap(a, true)...) +} + +// Sprintf is a convenience wrapper for fmt.Sprintf. +// +// Calling Sprintf(f, x, y) is equivalent to +// fmt.Sprintf(f, Formatter(x), Formatter(y)). +func Sprintf(format string, a ...interface{}) string { + return fmt.Sprintf(format, wrap(a, false)...) +} + +func wrap(a []interface{}, force bool) []interface{} { + w := make([]interface{}, len(a)) + for i, x := range a { + w[i] = formatter{v: reflect.ValueOf(x), force: force} + } + return w +} diff --git a/vendor/github.com/kr/pretty/zero.go b/vendor/github.com/kr/pretty/zero.go new file mode 100644 index 0000000..abb5b6f --- /dev/null +++ b/vendor/github.com/kr/pretty/zero.go @@ -0,0 +1,41 @@ +package pretty + +import ( + "reflect" +) + +func nonzero(v reflect.Value) bool { + switch v.Kind() { + case reflect.Bool: + return v.Bool() + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return v.Int() != 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return v.Uint() != 0 + case reflect.Float32, reflect.Float64: + return v.Float() != 0 + case reflect.Complex64, reflect.Complex128: + return v.Complex() != complex(0, 0) + case reflect.String: + return v.String() != "" + case reflect.Struct: + for i := 0; i < v.NumField(); i++ { + if nonzero(getField(v, i)) { + return true + } + } + return false + case reflect.Array: + for i := 0; i < v.Len(); i++ { + if nonzero(v.Index(i)) { + return true + } + } + return false + case reflect.Map, reflect.Interface, reflect.Slice, reflect.Ptr, reflect.Chan, reflect.Func: + return !v.IsNil() + case reflect.UnsafePointer: + return v.Pointer() != 0 + } + return true +} diff --git a/vendor/github.com/kr/text/License b/vendor/github.com/kr/text/License new file mode 100644 index 0000000..480a328 --- /dev/null +++ b/vendor/github.com/kr/text/License @@ -0,0 +1,19 @@ +Copyright 2012 Keith Rarick + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/github.com/kr/text/Readme b/vendor/github.com/kr/text/Readme new file mode 100644 index 0000000..7e6e7c0 --- /dev/null +++ b/vendor/github.com/kr/text/Readme @@ -0,0 +1,3 @@ +This is a Go package for manipulating paragraphs of text. + +See http://go.pkgdoc.org/github.com/kr/text for full documentation. diff --git a/vendor/github.com/kr/text/doc.go b/vendor/github.com/kr/text/doc.go new file mode 100644 index 0000000..cf4c198 --- /dev/null +++ b/vendor/github.com/kr/text/doc.go @@ -0,0 +1,3 @@ +// Package text provides rudimentary functions for manipulating text in +// paragraphs. +package text diff --git a/vendor/github.com/kr/text/go.mod b/vendor/github.com/kr/text/go.mod new file mode 100644 index 0000000..fa0528b --- /dev/null +++ b/vendor/github.com/kr/text/go.mod @@ -0,0 +1,3 @@ +module "github.com/kr/text" + +require "github.com/kr/pty" v1.1.1 diff --git a/vendor/github.com/kr/text/indent.go b/vendor/github.com/kr/text/indent.go new file mode 100644 index 0000000..4ebac45 --- /dev/null +++ b/vendor/github.com/kr/text/indent.go @@ -0,0 +1,74 @@ +package text + +import ( + "io" +) + +// Indent inserts prefix at the beginning of each non-empty line of s. The +// end-of-line marker is NL. +func Indent(s, prefix string) string { + return string(IndentBytes([]byte(s), []byte(prefix))) +} + +// IndentBytes inserts prefix at the beginning of each non-empty line of b. +// The end-of-line marker is NL. +func IndentBytes(b, prefix []byte) []byte { + var res []byte + bol := true + for _, c := range b { + if bol && c != '\n' { + res = append(res, prefix...) + } + res = append(res, c) + bol = c == '\n' + } + return res +} + +// Writer indents each line of its input. +type indentWriter struct { + w io.Writer + bol bool + pre [][]byte + sel int + off int +} + +// NewIndentWriter makes a new write filter that indents the input +// lines. Each line is prefixed in order with the corresponding +// element of pre. If there are more lines than elements, the last +// element of pre is repeated for each subsequent line. +func NewIndentWriter(w io.Writer, pre ...[]byte) io.Writer { + return &indentWriter{ + w: w, + pre: pre, + bol: true, + } +} + +// The only errors returned are from the underlying indentWriter. +func (w *indentWriter) Write(p []byte) (n int, err error) { + for _, c := range p { + if w.bol { + var i int + i, err = w.w.Write(w.pre[w.sel][w.off:]) + w.off += i + if err != nil { + return n, err + } + } + _, err = w.w.Write([]byte{c}) + if err != nil { + return n, err + } + n++ + w.bol = c == '\n' + if w.bol { + w.off = 0 + if w.sel < len(w.pre)-1 { + w.sel++ + } + } + } + return n, nil +} diff --git a/vendor/github.com/kr/text/wrap.go b/vendor/github.com/kr/text/wrap.go new file mode 100644 index 0000000..b09bb03 --- /dev/null +++ b/vendor/github.com/kr/text/wrap.go @@ -0,0 +1,86 @@ +package text + +import ( + "bytes" + "math" +) + +var ( + nl = []byte{'\n'} + sp = []byte{' '} +) + +const defaultPenalty = 1e5 + +// Wrap wraps s into a paragraph of lines of length lim, with minimal +// raggedness. +func Wrap(s string, lim int) string { + return string(WrapBytes([]byte(s), lim)) +} + +// WrapBytes wraps b into a paragraph of lines of length lim, with minimal +// raggedness. +func WrapBytes(b []byte, lim int) []byte { + words := bytes.Split(bytes.Replace(bytes.TrimSpace(b), nl, sp, -1), sp) + var lines [][]byte + for _, line := range WrapWords(words, 1, lim, defaultPenalty) { + lines = append(lines, bytes.Join(line, sp)) + } + return bytes.Join(lines, nl) +} + +// WrapWords is the low-level line-breaking algorithm, useful if you need more +// control over the details of the text wrapping process. For most uses, either +// Wrap or WrapBytes will be sufficient and more convenient. +// +// WrapWords splits a list of words into lines with minimal "raggedness", +// treating each byte as one unit, accounting for spc units between adjacent +// words on each line, and attempting to limit lines to lim units. Raggedness +// is the total error over all lines, where error is the square of the +// difference of the length of the line and lim. Too-long lines (which only +// happen when a single word is longer than lim units) have pen penalty units +// added to the error. +func WrapWords(words [][]byte, spc, lim, pen int) [][][]byte { + n := len(words) + + length := make([][]int, n) + for i := 0; i < n; i++ { + length[i] = make([]int, n) + length[i][i] = len(words[i]) + for j := i + 1; j < n; j++ { + length[i][j] = length[i][j-1] + spc + len(words[j]) + } + } + + nbrk := make([]int, n) + cost := make([]int, n) + for i := range cost { + cost[i] = math.MaxInt32 + } + for i := n - 1; i >= 0; i-- { + if length[i][n-1] <= lim || i == n-1 { + cost[i] = 0 + nbrk[i] = n + } else { + for j := i + 1; j < n; j++ { + d := lim - length[i][j-1] + c := d*d + cost[j] + if length[i][j-1] > lim { + c += pen // too-long lines get a worse penalty + } + if c < cost[i] { + cost[i] = c + nbrk[i] = j + } + } + } + } + + var lines [][][]byte + i := 0 + for i < n { + lines = append(lines, words[i:nbrk[i]]) + i = nbrk[i] + } + return lines +} diff --git a/vendor/github.com/mattn/go-ieproxy/.gitignore b/vendor/github.com/mattn/go-ieproxy/.gitignore new file mode 100644 index 0000000..bc8a670 --- /dev/null +++ b/vendor/github.com/mattn/go-ieproxy/.gitignore @@ -0,0 +1 @@ +.idea/* \ No newline at end of file diff --git a/vendor/github.com/mattn/go-ieproxy/GetProxyFunc.go b/vendor/github.com/mattn/go-ieproxy/GetProxyFunc.go new file mode 100644 index 0000000..b2ff914 --- /dev/null +++ b/vendor/github.com/mattn/go-ieproxy/GetProxyFunc.go @@ -0,0 +1,11 @@ +package ieproxy + +import ( + "net/http" + "net/url" +) + +// GetProxyFunc is a forwarder for the OS-Exclusive proxyMiddleman_os.go files +func GetProxyFunc() func(*http.Request) (*url.URL, error) { + return proxyMiddleman() +} diff --git a/vendor/github.com/mattn/go-ieproxy/LICENSE b/vendor/github.com/mattn/go-ieproxy/LICENSE new file mode 100644 index 0000000..7b7c0f8 --- /dev/null +++ b/vendor/github.com/mattn/go-ieproxy/LICENSE @@ -0,0 +1,23 @@ +MIT License + +Copyright (c) 2014 mattn +Copyright (c) 2017 oliverpool +Copyright (c) 2019 Adele Reed + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/github.com/mattn/go-ieproxy/README.md b/vendor/github.com/mattn/go-ieproxy/README.md new file mode 100644 index 0000000..fbc801a --- /dev/null +++ b/vendor/github.com/mattn/go-ieproxy/README.md @@ -0,0 +1,49 @@ +# ieproxy + +Go package to detect the proxy settings on Windows platform. + +The settings are initially attempted to be read from the [`WinHttpGetIEProxyConfigForCurrentUser` DLL call](https://docs.microsoft.com/en-us/windows/desktop/api/winhttp/nf-winhttp-winhttpgetieproxyconfigforcurrentuser), but falls back to the registry (`CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings`) in the event the DLL call fails. + +For more information, take a look at the [documentation](https://godoc.org/github.com/mattn/go-ieproxy) + +## Methods + +You can either obtain a `net/http` compatible proxy function using `ieproxy.GetProxyFunc()`, set environment variables using `ieproxy.OverrideEnvWithStaticProxy()` (though no automatic configuration is available this way), or obtain the proxy settings via `ieproxy.GetConf()`. + +| Method | Supported configuration options: | +|----------------------------------------|-----------------------------------------------| +| `ieproxy.GetProxyFunc()` | Static, Specified script, and fully automatic | +| `ieproxy.OverrideEnvWithStaticProxy()` | Static | +| `ieproxy.GetConf()` | Depends on how you use it | + +## Examples + +### Using GetProxyFunc(): + +```go +func init() { + http.DefaultTransport.(*http.Transport).Proxy = ieproxy.GetProxyFunc() +} +``` + +GetProxyFunc acts as a middleman between `net/http` and `mattn/go-ieproxy` in order to select the correct proxy configuration based off the details supplied in the config. + +### Using OverrideEnvWithStaticProxy(): + +```go +func init() { + ieproxy.OverrideEnvWithStaticProxy() + http.DefaultTransport.(*http.Transport).Proxy = http.ProxyFromEnvironment +} +``` + +OverrideEnvWithStaticProxy overrides the relevant environment variables (`HTTP_PROXY`, `HTTPS_PROXY`, `NO_PROXY`) with the **static, manually configured** proxy details typically found in the registry. + +### Using GetConf(): + +```go +func main() { + conf := ieproxy.GetConf() + //Handle proxies how you want to. +} +``` diff --git a/vendor/github.com/mattn/go-ieproxy/ieproxy.go b/vendor/github.com/mattn/go-ieproxy/ieproxy.go new file mode 100644 index 0000000..51fe18e --- /dev/null +++ b/vendor/github.com/mattn/go-ieproxy/ieproxy.go @@ -0,0 +1,51 @@ +// Package ieproxy is a utility to retrieve the proxy parameters (especially of Internet Explorer on windows) +// +// On windows, it gathers the parameters from the registry (regedit), while it uses env variable on other platforms +package ieproxy + +import "os" + +// ProxyConf gathers the configuration for proxy +type ProxyConf struct { + Static StaticProxyConf // static configuration + Automatic ProxyScriptConf // script configuration +} + +// StaticProxyConf contains the configuration for static proxy +type StaticProxyConf struct { + // Is the proxy active? + Active bool + // Proxy address for each scheme (http, https) + // "" (empty string) is the fallback proxy + Protocols map[string]string + // Addresses not to be browsed via the proxy (comma-separated, linux-like) + NoProxy string +} + +// ProxyScriptConf contains the configuration for automatic proxy +type ProxyScriptConf struct { + // Is the proxy active? + Active bool + // PreConfiguredURL of the .pac file. + // If this is empty and Active is true, auto-configuration should be assumed. + PreConfiguredURL string +} + +// GetConf retrieves the proxy configuration from the Windows Regedit +func GetConf() ProxyConf { + return getConf() +} + +// OverrideEnvWithStaticProxy writes new values to the +// `http_proxy`, `https_proxy` and `no_proxy` environment variables. +// The values are taken from the Windows Regedit (should be called in `init()` function - see example) +func OverrideEnvWithStaticProxy() { + overrideEnvWithStaticProxy(GetConf(), os.Setenv) +} + +// FindProxyForURL computes the proxy for a given URL according to the pac file +func (psc *ProxyScriptConf) FindProxyForURL(URL string) string { + return psc.findProxyForURL(URL) +} + +type envSetter func(string, string) error diff --git a/vendor/github.com/mattn/go-ieproxy/ieproxy_unix.go b/vendor/github.com/mattn/go-ieproxy/ieproxy_unix.go new file mode 100644 index 0000000..dc2bccf --- /dev/null +++ b/vendor/github.com/mattn/go-ieproxy/ieproxy_unix.go @@ -0,0 +1,10 @@ +// +build !windows + +package ieproxy + +func getConf() ProxyConf { + return ProxyConf{} +} + +func overrideEnvWithStaticProxy(pc ProxyConf, setenv envSetter) { +} diff --git a/vendor/github.com/mattn/go-ieproxy/ieproxy_windows.go b/vendor/github.com/mattn/go-ieproxy/ieproxy_windows.go new file mode 100644 index 0000000..a3d4c11 --- /dev/null +++ b/vendor/github.com/mattn/go-ieproxy/ieproxy_windows.go @@ -0,0 +1,164 @@ +package ieproxy + +import ( + "strings" + "sync" + "unsafe" + + "golang.org/x/sys/windows/registry" +) + +type regeditValues struct { + ProxyServer string + ProxyOverride string + ProxyEnable uint64 + AutoConfigURL string +} + +var once sync.Once +var windowsProxyConf ProxyConf + +// GetConf retrieves the proxy configuration from the Windows Regedit +func getConf() ProxyConf { + once.Do(writeConf) + return windowsProxyConf +} + +func writeConf() { + var ( + cfg *tWINHTTP_CURRENT_USER_IE_PROXY_CONFIG + err error + ) + + if cfg, err = getUserConfigFromWindowsSyscall(); err != nil { + regedit, _ := readRegedit() // If the syscall fails, backup to manual detection. + windowsProxyConf = parseRegedit(regedit) + return + } + + defer globalFreeWrapper(cfg.lpszProxy) + defer globalFreeWrapper(cfg.lpszProxyBypass) + defer globalFreeWrapper(cfg.lpszAutoConfigUrl) + + windowsProxyConf = ProxyConf{ + Static: StaticProxyConf{ + Active: cfg.lpszProxy != nil, + }, + Automatic: ProxyScriptConf{ + Active: cfg.lpszAutoConfigUrl != nil || cfg.fAutoDetect, + }, + } + + if windowsProxyConf.Static.Active { + protocol := make(map[string]string) + for _, s := range strings.Split(StringFromUTF16Ptr(cfg.lpszProxy), ";") { + s = strings.TrimSpace(s) + if s == "" { + continue + } + pair := strings.SplitN(s, "=", 2) + if len(pair) > 1 { + protocol[pair[0]] = pair[1] + } else { + protocol[""] = pair[0] + } + } + + windowsProxyConf.Static.Protocols = protocol + if cfg.lpszProxyBypass != nil { + windowsProxyConf.Static.NoProxy = strings.Replace(StringFromUTF16Ptr(cfg.lpszProxyBypass), ";", ",", -1) + } + } + + if windowsProxyConf.Automatic.Active { + windowsProxyConf.Automatic.PreConfiguredURL = StringFromUTF16Ptr(cfg.lpszAutoConfigUrl) + } +} + +func getUserConfigFromWindowsSyscall() (*tWINHTTP_CURRENT_USER_IE_PROXY_CONFIG, error) { + handle, _, err := winHttpOpen.Call(0, 0, 0, 0, 0) + if handle == 0 { + return &tWINHTTP_CURRENT_USER_IE_PROXY_CONFIG{}, err + } + defer winHttpCloseHandle.Call(handle) + + config := new(tWINHTTP_CURRENT_USER_IE_PROXY_CONFIG) + + ret, _, err := winHttpGetIEProxyConfigForCurrentUser.Call(uintptr(unsafe.Pointer(config))) + if ret > 0 { + err = nil + } + + return config, err +} + +// OverrideEnvWithStaticProxy writes new values to the +// http_proxy, https_proxy and no_proxy environment variables. +// The values are taken from the Windows Regedit (should be called in init() function) +func overrideEnvWithStaticProxy(conf ProxyConf, setenv envSetter) { + if conf.Static.Active { + for _, scheme := range []string{"http", "https"} { + url := mapFallback(scheme, "", conf.Static.Protocols) + setenv(scheme+"_proxy", url) + } + if conf.Static.NoProxy != "" { + setenv("no_proxy", conf.Static.NoProxy) + } + } +} + +func parseRegedit(regedit regeditValues) ProxyConf { + protocol := make(map[string]string) + for _, s := range strings.Split(regedit.ProxyServer, ";") { + if s == "" { + continue + } + pair := strings.SplitN(s, "=", 2) + if len(pair) > 1 { + protocol[pair[0]] = pair[1] + } else { + protocol[""] = pair[0] + } + } + + return ProxyConf{ + Static: StaticProxyConf{ + Active: regedit.ProxyEnable > 0, + Protocols: protocol, + NoProxy: strings.Replace(regedit.ProxyOverride, ";", ",", -1), // to match linux style + }, + Automatic: ProxyScriptConf{ + Active: regedit.AutoConfigURL != "", + PreConfiguredURL: regedit.AutoConfigURL, + }, + } +} + +func readRegedit() (values regeditValues, err error) { + k, err := registry.OpenKey(registry.CURRENT_USER, `Software\Microsoft\Windows\CurrentVersion\Internet Settings`, registry.QUERY_VALUE) + if err != nil { + return + } + defer k.Close() + + values.ProxyServer, _, err = k.GetStringValue("ProxyServer") + if err != nil && err != registry.ErrNotExist { + return + } + values.ProxyOverride, _, err = k.GetStringValue("ProxyOverride") + if err != nil && err != registry.ErrNotExist { + return + } + + values.ProxyEnable, _, err = k.GetIntegerValue("ProxyEnable") + if err != nil && err != registry.ErrNotExist { + return + } + + values.AutoConfigURL, _, err = k.GetStringValue("AutoConfigURL") + if err != nil && err != registry.ErrNotExist { + return + } + err = nil + return +} diff --git a/vendor/github.com/mattn/go-ieproxy/kernel32_data_windows.go b/vendor/github.com/mattn/go-ieproxy/kernel32_data_windows.go new file mode 100644 index 0000000..cfb4349 --- /dev/null +++ b/vendor/github.com/mattn/go-ieproxy/kernel32_data_windows.go @@ -0,0 +1,15 @@ +package ieproxy + +import ( + "golang.org/x/sys/windows" + "unsafe" +) + +var kernel32 = windows.NewLazySystemDLL("kernel32.dll") +var globalFree = kernel32.NewProc("GlobalFree") + +func globalFreeWrapper(ptr *uint16) { + if ptr != nil { + _, _, _ = globalFree.Call(uintptr(unsafe.Pointer(ptr))) + } +} diff --git a/vendor/github.com/mattn/go-ieproxy/pac_unix.go b/vendor/github.com/mattn/go-ieproxy/pac_unix.go new file mode 100644 index 0000000..d44ec3c --- /dev/null +++ b/vendor/github.com/mattn/go-ieproxy/pac_unix.go @@ -0,0 +1,7 @@ +// +build !windows + +package ieproxy + +func (psc *ProxyScriptConf) findProxyForURL(URL string) string { + return "" +} diff --git a/vendor/github.com/mattn/go-ieproxy/pac_windows.go b/vendor/github.com/mattn/go-ieproxy/pac_windows.go new file mode 100644 index 0000000..6a2ee67 --- /dev/null +++ b/vendor/github.com/mattn/go-ieproxy/pac_windows.go @@ -0,0 +1,72 @@ +package ieproxy + +import ( + "strings" + "syscall" + "unsafe" +) + +func (psc *ProxyScriptConf) findProxyForURL(URL string) string { + if !psc.Active { + return "" + } + proxy, _ := getProxyForURL(psc.PreConfiguredURL, URL) + i := strings.Index(proxy, ";") + if i >= 0 { + return proxy[:i] + } + return proxy +} + +func getProxyForURL(pacfileURL, URL string) (string, error) { + pacfileURLPtr, err := syscall.UTF16PtrFromString(pacfileURL) + if err != nil { + return "", err + } + URLPtr, err := syscall.UTF16PtrFromString(URL) + if err != nil { + return "", err + } + + handle, _, err := winHttpOpen.Call(0, 0, 0, 0, 0) + if handle == 0 { + return "", err + } + defer winHttpCloseHandle.Call(handle) + + dwFlags := fWINHTTP_AUTOPROXY_CONFIG_URL + dwAutoDetectFlags := autoDetectFlag(0) + pfURLptr := pacfileURLPtr + + if pacfileURL == "" { + dwFlags = fWINHTTP_AUTOPROXY_AUTO_DETECT + dwAutoDetectFlags = fWINHTTP_AUTO_DETECT_TYPE_DNS_A | fWINHTTP_AUTO_DETECT_TYPE_DHCP + pfURLptr = nil + } + + options := tWINHTTP_AUTOPROXY_OPTIONS{ + dwFlags: dwFlags, // adding cache might cause issues: https://github.com/mattn/go-ieproxy/issues/6 + dwAutoDetectFlags: dwAutoDetectFlags, + lpszAutoConfigUrl: pfURLptr, + lpvReserved: nil, + dwReserved: 0, + fAutoLogonIfChallenged: true, // may not be optimal https://msdn.microsoft.com/en-us/library/windows/desktop/aa383153(v=vs.85).aspx + } // lpszProxyBypass isn't used as this only executes in cases where there (may) be a pac file (autodetect can fail), where lpszProxyBypass couldn't be returned. + // in the case that autodetect fails and no pre-specified pacfile is present, no proxy is returned. + + info := new(tWINHTTP_PROXY_INFO) + + ret, _, err := winHttpGetProxyForURL.Call( + handle, + uintptr(unsafe.Pointer(URLPtr)), + uintptr(unsafe.Pointer(&options)), + uintptr(unsafe.Pointer(info)), + ) + if ret > 0 { + err = nil + } + + defer globalFreeWrapper(info.lpszProxyBypass) + defer globalFreeWrapper(info.lpszProxy) + return StringFromUTF16Ptr(info.lpszProxy), err +} diff --git a/vendor/github.com/mattn/go-ieproxy/proxyMiddleman_unix.go b/vendor/github.com/mattn/go-ieproxy/proxyMiddleman_unix.go new file mode 100644 index 0000000..7ddbe2e --- /dev/null +++ b/vendor/github.com/mattn/go-ieproxy/proxyMiddleman_unix.go @@ -0,0 +1,13 @@ +//+build darwin unix linux + +package ieproxy + +import ( + "net/http" + "net/url" +) + +func proxyMiddleman() func(req *http.Request) (i *url.URL, e error) { + // Fallthrough to ProxyFromEnvironment on all other OSes. + return http.ProxyFromEnvironment +} diff --git a/vendor/github.com/mattn/go-ieproxy/proxyMiddleman_windows.go b/vendor/github.com/mattn/go-ieproxy/proxyMiddleman_windows.go new file mode 100644 index 0000000..355d432 --- /dev/null +++ b/vendor/github.com/mattn/go-ieproxy/proxyMiddleman_windows.go @@ -0,0 +1,51 @@ +package ieproxy + +import ( + "net/http" + "net/url" + + "golang.org/x/net/http/httpproxy" +) + +func proxyMiddleman() func(req *http.Request) (i *url.URL, e error) { + // Get the proxy configuration + conf := GetConf() + envcfg := httpproxy.FromEnvironment() + + if envcfg.HTTPProxy != "" || envcfg.HTTPSProxy != "" { + // If the user manually specifies environment variables, prefer those over the Windows config. + return http.ProxyFromEnvironment + } else if conf.Automatic.Active { + // If automatic proxy obtaining is specified + return func(req *http.Request) (i *url.URL, e error) { + host := conf.Automatic.FindProxyForURL(req.URL.String()) + if host == "" { + return nil, nil + } + return &url.URL{Host: host}, nil + } + } else if conf.Static.Active { + // If static proxy obtaining is specified + prox := httpproxy.Config{ + HTTPSProxy: mapFallback("https", "", conf.Static.Protocols), + HTTPProxy: mapFallback("http", "", conf.Static.Protocols), + NoProxy: conf.Static.NoProxy, + } + + return func(req *http.Request) (i *url.URL, e error) { + return prox.ProxyFunc()(req.URL) + } + } else { + // Final fallthrough case; use the environment variables. + return http.ProxyFromEnvironment + } +} + +// Return oKey or fbKey if oKey doesn't exist in the map. +func mapFallback(oKey, fbKey string, m map[string]string) string { + if v, ok := m[oKey]; ok { + return v + } else { + return m[fbKey] + } +} diff --git a/vendor/github.com/mattn/go-ieproxy/utils.go b/vendor/github.com/mattn/go-ieproxy/utils.go new file mode 100644 index 0000000..353b231 --- /dev/null +++ b/vendor/github.com/mattn/go-ieproxy/utils.go @@ -0,0 +1,23 @@ +package ieproxy + +import ( + "unicode/utf16" + "unsafe" +) + +// StringFromUTF16Ptr converts a *uint16 C string to a Go String +func StringFromUTF16Ptr(s *uint16) string { + if s == nil { + return "" + } + + p := (*[1<<30 - 1]uint16)(unsafe.Pointer(s)) + + // find the string length + sz := 0 + for p[sz] != 0 { + sz++ + } + + return string(utf16.Decode(p[:sz:sz])) +} diff --git a/vendor/github.com/mattn/go-ieproxy/winhttp_data_windows.go b/vendor/github.com/mattn/go-ieproxy/winhttp_data_windows.go new file mode 100644 index 0000000..560940d --- /dev/null +++ b/vendor/github.com/mattn/go-ieproxy/winhttp_data_windows.go @@ -0,0 +1,50 @@ +package ieproxy + +import "golang.org/x/sys/windows" + +var winHttp = windows.NewLazySystemDLL("winhttp.dll") +var winHttpGetProxyForURL = winHttp.NewProc("WinHttpGetProxyForUrl") +var winHttpOpen = winHttp.NewProc("WinHttpOpen") +var winHttpCloseHandle = winHttp.NewProc("WinHttpCloseHandle") +var winHttpGetIEProxyConfigForCurrentUser = winHttp.NewProc("WinHttpGetIEProxyConfigForCurrentUser") + +type tWINHTTP_AUTOPROXY_OPTIONS struct { + dwFlags autoProxyFlag + dwAutoDetectFlags autoDetectFlag + lpszAutoConfigUrl *uint16 + lpvReserved *uint16 + dwReserved uint32 + fAutoLogonIfChallenged bool +} +type autoProxyFlag uint32 + +const ( + fWINHTTP_AUTOPROXY_AUTO_DETECT = autoProxyFlag(0x00000001) + fWINHTTP_AUTOPROXY_CONFIG_URL = autoProxyFlag(0x00000002) + fWINHTTP_AUTOPROXY_NO_CACHE_CLIENT = autoProxyFlag(0x00080000) + fWINHTTP_AUTOPROXY_NO_CACHE_SVC = autoProxyFlag(0x00100000) + fWINHTTP_AUTOPROXY_NO_DIRECTACCESS = autoProxyFlag(0x00040000) + fWINHTTP_AUTOPROXY_RUN_INPROCESS = autoProxyFlag(0x00010000) + fWINHTTP_AUTOPROXY_RUN_OUTPROCESS_ONLY = autoProxyFlag(0x00020000) + fWINHTTP_AUTOPROXY_SORT_RESULTS = autoProxyFlag(0x00400000) +) + +type autoDetectFlag uint32 + +const ( + fWINHTTP_AUTO_DETECT_TYPE_DHCP = autoDetectFlag(0x00000001) + fWINHTTP_AUTO_DETECT_TYPE_DNS_A = autoDetectFlag(0x00000002) +) + +type tWINHTTP_PROXY_INFO struct { + dwAccessType uint32 + lpszProxy *uint16 + lpszProxyBypass *uint16 +} + +type tWINHTTP_CURRENT_USER_IE_PROXY_CONFIG struct { + fAutoDetect bool + lpszAutoConfigUrl *uint16 + lpszProxy *uint16 + lpszProxyBypass *uint16 +} diff --git a/vendor/github.com/mitchellh/go-homedir/LICENSE b/vendor/github.com/mitchellh/go-homedir/LICENSE new file mode 100644 index 0000000..f9c841a --- /dev/null +++ b/vendor/github.com/mitchellh/go-homedir/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2013 Mitchell Hashimoto + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/github.com/mitchellh/go-homedir/README.md b/vendor/github.com/mitchellh/go-homedir/README.md new file mode 100644 index 0000000..d70706d --- /dev/null +++ b/vendor/github.com/mitchellh/go-homedir/README.md @@ -0,0 +1,14 @@ +# go-homedir + +This is a Go library for detecting the user's home directory without +the use of cgo, so the library can be used in cross-compilation environments. + +Usage is incredibly simple, just call `homedir.Dir()` to get the home directory +for a user, and `homedir.Expand()` to expand the `~` in a path to the home +directory. + +**Why not just use `os/user`?** The built-in `os/user` package requires +cgo on Darwin systems. This means that any Go code that uses that package +cannot cross compile. But 99% of the time the use for `os/user` is just to +retrieve the home directory, which we can do for the current user without +cgo. This library does that, enabling cross-compilation. diff --git a/vendor/github.com/mitchellh/go-homedir/go.mod b/vendor/github.com/mitchellh/go-homedir/go.mod new file mode 100644 index 0000000..7efa09a --- /dev/null +++ b/vendor/github.com/mitchellh/go-homedir/go.mod @@ -0,0 +1 @@ +module github.com/mitchellh/go-homedir diff --git a/vendor/github.com/mitchellh/go-homedir/homedir.go b/vendor/github.com/mitchellh/go-homedir/homedir.go new file mode 100644 index 0000000..2537853 --- /dev/null +++ b/vendor/github.com/mitchellh/go-homedir/homedir.go @@ -0,0 +1,167 @@ +package homedir + +import ( + "bytes" + "errors" + "os" + "os/exec" + "path/filepath" + "runtime" + "strconv" + "strings" + "sync" +) + +// DisableCache will disable caching of the home directory. Caching is enabled +// by default. +var DisableCache bool + +var homedirCache string +var cacheLock sync.RWMutex + +// Dir returns the home directory for the executing user. +// +// This uses an OS-specific method for discovering the home directory. +// An error is returned if a home directory cannot be detected. +func Dir() (string, error) { + if !DisableCache { + cacheLock.RLock() + cached := homedirCache + cacheLock.RUnlock() + if cached != "" { + return cached, nil + } + } + + cacheLock.Lock() + defer cacheLock.Unlock() + + var result string + var err error + if runtime.GOOS == "windows" { + result, err = dirWindows() + } else { + // Unix-like system, so just assume Unix + result, err = dirUnix() + } + + if err != nil { + return "", err + } + homedirCache = result + return result, nil +} + +// Expand expands the path to include the home directory if the path +// is prefixed with `~`. If it isn't prefixed with `~`, the path is +// returned as-is. +func Expand(path string) (string, error) { + if len(path) == 0 { + return path, nil + } + + if path[0] != '~' { + return path, nil + } + + if len(path) > 1 && path[1] != '/' && path[1] != '\\' { + return "", errors.New("cannot expand user-specific home dir") + } + + dir, err := Dir() + if err != nil { + return "", err + } + + return filepath.Join(dir, path[1:]), nil +} + +// Reset clears the cache, forcing the next call to Dir to re-detect +// the home directory. This generally never has to be called, but can be +// useful in tests if you're modifying the home directory via the HOME +// env var or something. +func Reset() { + cacheLock.Lock() + defer cacheLock.Unlock() + homedirCache = "" +} + +func dirUnix() (string, error) { + homeEnv := "HOME" + if runtime.GOOS == "plan9" { + // On plan9, env vars are lowercase. + homeEnv = "home" + } + + // First prefer the HOME environmental variable + if home := os.Getenv(homeEnv); home != "" { + return home, nil + } + + var stdout bytes.Buffer + + // If that fails, try OS specific commands + if runtime.GOOS == "darwin" { + cmd := exec.Command("sh", "-c", `dscl -q . -read /Users/"$(whoami)" NFSHomeDirectory | sed 's/^[^ ]*: //'`) + cmd.Stdout = &stdout + if err := cmd.Run(); err == nil { + result := strings.TrimSpace(stdout.String()) + if result != "" { + return result, nil + } + } + } else { + cmd := exec.Command("getent", "passwd", strconv.Itoa(os.Getuid())) + cmd.Stdout = &stdout + if err := cmd.Run(); err != nil { + // If the error is ErrNotFound, we ignore it. Otherwise, return it. + if err != exec.ErrNotFound { + return "", err + } + } else { + if passwd := strings.TrimSpace(stdout.String()); passwd != "" { + // username:password:uid:gid:gecos:home:shell + passwdParts := strings.SplitN(passwd, ":", 7) + if len(passwdParts) > 5 { + return passwdParts[5], nil + } + } + } + } + + // If all else fails, try the shell + stdout.Reset() + cmd := exec.Command("sh", "-c", "cd && pwd") + cmd.Stdout = &stdout + if err := cmd.Run(); err != nil { + return "", err + } + + result := strings.TrimSpace(stdout.String()) + if result == "" { + return "", errors.New("blank output when reading home directory") + } + + return result, nil +} + +func dirWindows() (string, error) { + // First prefer the HOME environmental variable + if home := os.Getenv("HOME"); home != "" { + return home, nil + } + + // Prefer standard environment variable USERPROFILE + if home := os.Getenv("USERPROFILE"); home != "" { + return home, nil + } + + drive := os.Getenv("HOMEDRIVE") + path := os.Getenv("HOMEPATH") + home := drive + path + if drive == "" || path == "" { + return "", errors.New("HOMEDRIVE, HOMEPATH, or USERPROFILE are blank") + } + + return home, nil +} diff --git a/vendor/github.com/pmezard/go-difflib/LICENSE b/vendor/github.com/pmezard/go-difflib/LICENSE new file mode 100644 index 0000000..c67dad6 --- /dev/null +++ b/vendor/github.com/pmezard/go-difflib/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2013, Patrick Mezard +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + The names of its contributors may not be used to endorse or promote +products derived from this software without specific prior written +permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/pmezard/go-difflib/difflib/difflib.go b/vendor/github.com/pmezard/go-difflib/difflib/difflib.go new file mode 100644 index 0000000..003e99f --- /dev/null +++ b/vendor/github.com/pmezard/go-difflib/difflib/difflib.go @@ -0,0 +1,772 @@ +// Package difflib is a partial port of Python difflib module. +// +// It provides tools to compare sequences of strings and generate textual diffs. +// +// The following class and functions have been ported: +// +// - SequenceMatcher +// +// - unified_diff +// +// - context_diff +// +// Getting unified diffs was the main goal of the port. Keep in mind this code +// is mostly suitable to output text differences in a human friendly way, there +// are no guarantees generated diffs are consumable by patch(1). +package difflib + +import ( + "bufio" + "bytes" + "fmt" + "io" + "strings" +) + +func min(a, b int) int { + if a < b { + return a + } + return b +} + +func max(a, b int) int { + if a > b { + return a + } + return b +} + +func calculateRatio(matches, length int) float64 { + if length > 0 { + return 2.0 * float64(matches) / float64(length) + } + return 1.0 +} + +type Match struct { + A int + B int + Size int +} + +type OpCode struct { + Tag byte + I1 int + I2 int + J1 int + J2 int +} + +// SequenceMatcher compares sequence of strings. The basic +// algorithm predates, and is a little fancier than, an algorithm +// published in the late 1980's by Ratcliff and Obershelp under the +// hyperbolic name "gestalt pattern matching". The basic idea is to find +// the longest contiguous matching subsequence that contains no "junk" +// elements (R-O doesn't address junk). The same idea is then applied +// recursively to the pieces of the sequences to the left and to the right +// of the matching subsequence. This does not yield minimal edit +// sequences, but does tend to yield matches that "look right" to people. +// +// SequenceMatcher tries to compute a "human-friendly diff" between two +// sequences. Unlike e.g. UNIX(tm) diff, the fundamental notion is the +// longest *contiguous* & junk-free matching subsequence. That's what +// catches peoples' eyes. The Windows(tm) windiff has another interesting +// notion, pairing up elements that appear uniquely in each sequence. +// That, and the method here, appear to yield more intuitive difference +// reports than does diff. This method appears to be the least vulnerable +// to synching up on blocks of "junk lines", though (like blank lines in +// ordinary text files, or maybe "

" lines in HTML files). That may be +// because this is the only method of the 3 that has a *concept* of +// "junk" . +// +// Timing: Basic R-O is cubic time worst case and quadratic time expected +// case. SequenceMatcher is quadratic time for the worst case and has +// expected-case behavior dependent in a complicated way on how many +// elements the sequences have in common; best case time is linear. +type SequenceMatcher struct { + a []string + b []string + b2j map[string][]int + IsJunk func(string) bool + autoJunk bool + bJunk map[string]struct{} + matchingBlocks []Match + fullBCount map[string]int + bPopular map[string]struct{} + opCodes []OpCode +} + +func NewMatcher(a, b []string) *SequenceMatcher { + m := SequenceMatcher{autoJunk: true} + m.SetSeqs(a, b) + return &m +} + +func NewMatcherWithJunk(a, b []string, autoJunk bool, + isJunk func(string) bool) *SequenceMatcher { + + m := SequenceMatcher{IsJunk: isJunk, autoJunk: autoJunk} + m.SetSeqs(a, b) + return &m +} + +// Set two sequences to be compared. +func (m *SequenceMatcher) SetSeqs(a, b []string) { + m.SetSeq1(a) + m.SetSeq2(b) +} + +// Set the first sequence to be compared. The second sequence to be compared is +// not changed. +// +// SequenceMatcher computes and caches detailed information about the second +// sequence, so if you want to compare one sequence S against many sequences, +// use .SetSeq2(s) once and call .SetSeq1(x) repeatedly for each of the other +// sequences. +// +// See also SetSeqs() and SetSeq2(). +func (m *SequenceMatcher) SetSeq1(a []string) { + if &a == &m.a { + return + } + m.a = a + m.matchingBlocks = nil + m.opCodes = nil +} + +// Set the second sequence to be compared. The first sequence to be compared is +// not changed. +func (m *SequenceMatcher) SetSeq2(b []string) { + if &b == &m.b { + return + } + m.b = b + m.matchingBlocks = nil + m.opCodes = nil + m.fullBCount = nil + m.chainB() +} + +func (m *SequenceMatcher) chainB() { + // Populate line -> index mapping + b2j := map[string][]int{} + for i, s := range m.b { + indices := b2j[s] + indices = append(indices, i) + b2j[s] = indices + } + + // Purge junk elements + m.bJunk = map[string]struct{}{} + if m.IsJunk != nil { + junk := m.bJunk + for s, _ := range b2j { + if m.IsJunk(s) { + junk[s] = struct{}{} + } + } + for s, _ := range junk { + delete(b2j, s) + } + } + + // Purge remaining popular elements + popular := map[string]struct{}{} + n := len(m.b) + if m.autoJunk && n >= 200 { + ntest := n/100 + 1 + for s, indices := range b2j { + if len(indices) > ntest { + popular[s] = struct{}{} + } + } + for s, _ := range popular { + delete(b2j, s) + } + } + m.bPopular = popular + m.b2j = b2j +} + +func (m *SequenceMatcher) isBJunk(s string) bool { + _, ok := m.bJunk[s] + return ok +} + +// Find longest matching block in a[alo:ahi] and b[blo:bhi]. +// +// If IsJunk is not defined: +// +// Return (i,j,k) such that a[i:i+k] is equal to b[j:j+k], where +// alo <= i <= i+k <= ahi +// blo <= j <= j+k <= bhi +// and for all (i',j',k') meeting those conditions, +// k >= k' +// i <= i' +// and if i == i', j <= j' +// +// In other words, of all maximal matching blocks, return one that +// starts earliest in a, and of all those maximal matching blocks that +// start earliest in a, return the one that starts earliest in b. +// +// If IsJunk is defined, first the longest matching block is +// determined as above, but with the additional restriction that no +// junk element appears in the block. Then that block is extended as +// far as possible by matching (only) junk elements on both sides. So +// the resulting block never matches on junk except as identical junk +// happens to be adjacent to an "interesting" match. +// +// If no blocks match, return (alo, blo, 0). +func (m *SequenceMatcher) findLongestMatch(alo, ahi, blo, bhi int) Match { + // CAUTION: stripping common prefix or suffix would be incorrect. + // E.g., + // ab + // acab + // Longest matching block is "ab", but if common prefix is + // stripped, it's "a" (tied with "b"). UNIX(tm) diff does so + // strip, so ends up claiming that ab is changed to acab by + // inserting "ca" in the middle. That's minimal but unintuitive: + // "it's obvious" that someone inserted "ac" at the front. + // Windiff ends up at the same place as diff, but by pairing up + // the unique 'b's and then matching the first two 'a's. + besti, bestj, bestsize := alo, blo, 0 + + // find longest junk-free match + // during an iteration of the loop, j2len[j] = length of longest + // junk-free match ending with a[i-1] and b[j] + j2len := map[int]int{} + for i := alo; i != ahi; i++ { + // look at all instances of a[i] in b; note that because + // b2j has no junk keys, the loop is skipped if a[i] is junk + newj2len := map[int]int{} + for _, j := range m.b2j[m.a[i]] { + // a[i] matches b[j] + if j < blo { + continue + } + if j >= bhi { + break + } + k := j2len[j-1] + 1 + newj2len[j] = k + if k > bestsize { + besti, bestj, bestsize = i-k+1, j-k+1, k + } + } + j2len = newj2len + } + + // Extend the best by non-junk elements on each end. In particular, + // "popular" non-junk elements aren't in b2j, which greatly speeds + // the inner loop above, but also means "the best" match so far + // doesn't contain any junk *or* popular non-junk elements. + for besti > alo && bestj > blo && !m.isBJunk(m.b[bestj-1]) && + m.a[besti-1] == m.b[bestj-1] { + besti, bestj, bestsize = besti-1, bestj-1, bestsize+1 + } + for besti+bestsize < ahi && bestj+bestsize < bhi && + !m.isBJunk(m.b[bestj+bestsize]) && + m.a[besti+bestsize] == m.b[bestj+bestsize] { + bestsize += 1 + } + + // Now that we have a wholly interesting match (albeit possibly + // empty!), we may as well suck up the matching junk on each + // side of it too. Can't think of a good reason not to, and it + // saves post-processing the (possibly considerable) expense of + // figuring out what to do with it. In the case of an empty + // interesting match, this is clearly the right thing to do, + // because no other kind of match is possible in the regions. + for besti > alo && bestj > blo && m.isBJunk(m.b[bestj-1]) && + m.a[besti-1] == m.b[bestj-1] { + besti, bestj, bestsize = besti-1, bestj-1, bestsize+1 + } + for besti+bestsize < ahi && bestj+bestsize < bhi && + m.isBJunk(m.b[bestj+bestsize]) && + m.a[besti+bestsize] == m.b[bestj+bestsize] { + bestsize += 1 + } + + return Match{A: besti, B: bestj, Size: bestsize} +} + +// Return list of triples describing matching subsequences. +// +// Each triple is of the form (i, j, n), and means that +// a[i:i+n] == b[j:j+n]. The triples are monotonically increasing in +// i and in j. It's also guaranteed that if (i, j, n) and (i', j', n') are +// adjacent triples in the list, and the second is not the last triple in the +// list, then i+n != i' or j+n != j'. IOW, adjacent triples never describe +// adjacent equal blocks. +// +// The last triple is a dummy, (len(a), len(b), 0), and is the only +// triple with n==0. +func (m *SequenceMatcher) GetMatchingBlocks() []Match { + if m.matchingBlocks != nil { + return m.matchingBlocks + } + + var matchBlocks func(alo, ahi, blo, bhi int, matched []Match) []Match + matchBlocks = func(alo, ahi, blo, bhi int, matched []Match) []Match { + match := m.findLongestMatch(alo, ahi, blo, bhi) + i, j, k := match.A, match.B, match.Size + if match.Size > 0 { + if alo < i && blo < j { + matched = matchBlocks(alo, i, blo, j, matched) + } + matched = append(matched, match) + if i+k < ahi && j+k < bhi { + matched = matchBlocks(i+k, ahi, j+k, bhi, matched) + } + } + return matched + } + matched := matchBlocks(0, len(m.a), 0, len(m.b), nil) + + // It's possible that we have adjacent equal blocks in the + // matching_blocks list now. + nonAdjacent := []Match{} + i1, j1, k1 := 0, 0, 0 + for _, b := range matched { + // Is this block adjacent to i1, j1, k1? + i2, j2, k2 := b.A, b.B, b.Size + if i1+k1 == i2 && j1+k1 == j2 { + // Yes, so collapse them -- this just increases the length of + // the first block by the length of the second, and the first + // block so lengthened remains the block to compare against. + k1 += k2 + } else { + // Not adjacent. Remember the first block (k1==0 means it's + // the dummy we started with), and make the second block the + // new block to compare against. + if k1 > 0 { + nonAdjacent = append(nonAdjacent, Match{i1, j1, k1}) + } + i1, j1, k1 = i2, j2, k2 + } + } + if k1 > 0 { + nonAdjacent = append(nonAdjacent, Match{i1, j1, k1}) + } + + nonAdjacent = append(nonAdjacent, Match{len(m.a), len(m.b), 0}) + m.matchingBlocks = nonAdjacent + return m.matchingBlocks +} + +// Return list of 5-tuples describing how to turn a into b. +// +// Each tuple is of the form (tag, i1, i2, j1, j2). The first tuple +// has i1 == j1 == 0, and remaining tuples have i1 == the i2 from the +// tuple preceding it, and likewise for j1 == the previous j2. +// +// The tags are characters, with these meanings: +// +// 'r' (replace): a[i1:i2] should be replaced by b[j1:j2] +// +// 'd' (delete): a[i1:i2] should be deleted, j1==j2 in this case. +// +// 'i' (insert): b[j1:j2] should be inserted at a[i1:i1], i1==i2 in this case. +// +// 'e' (equal): a[i1:i2] == b[j1:j2] +func (m *SequenceMatcher) GetOpCodes() []OpCode { + if m.opCodes != nil { + return m.opCodes + } + i, j := 0, 0 + matching := m.GetMatchingBlocks() + opCodes := make([]OpCode, 0, len(matching)) + for _, m := range matching { + // invariant: we've pumped out correct diffs to change + // a[:i] into b[:j], and the next matching block is + // a[ai:ai+size] == b[bj:bj+size]. So we need to pump + // out a diff to change a[i:ai] into b[j:bj], pump out + // the matching block, and move (i,j) beyond the match + ai, bj, size := m.A, m.B, m.Size + tag := byte(0) + if i < ai && j < bj { + tag = 'r' + } else if i < ai { + tag = 'd' + } else if j < bj { + tag = 'i' + } + if tag > 0 { + opCodes = append(opCodes, OpCode{tag, i, ai, j, bj}) + } + i, j = ai+size, bj+size + // the list of matching blocks is terminated by a + // sentinel with size 0 + if size > 0 { + opCodes = append(opCodes, OpCode{'e', ai, i, bj, j}) + } + } + m.opCodes = opCodes + return m.opCodes +} + +// Isolate change clusters by eliminating ranges with no changes. +// +// Return a generator of groups with up to n lines of context. +// Each group is in the same format as returned by GetOpCodes(). +func (m *SequenceMatcher) GetGroupedOpCodes(n int) [][]OpCode { + if n < 0 { + n = 3 + } + codes := m.GetOpCodes() + if len(codes) == 0 { + codes = []OpCode{OpCode{'e', 0, 1, 0, 1}} + } + // Fixup leading and trailing groups if they show no changes. + if codes[0].Tag == 'e' { + c := codes[0] + i1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2 + codes[0] = OpCode{c.Tag, max(i1, i2-n), i2, max(j1, j2-n), j2} + } + if codes[len(codes)-1].Tag == 'e' { + c := codes[len(codes)-1] + i1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2 + codes[len(codes)-1] = OpCode{c.Tag, i1, min(i2, i1+n), j1, min(j2, j1+n)} + } + nn := n + n + groups := [][]OpCode{} + group := []OpCode{} + for _, c := range codes { + i1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2 + // End the current group and start a new one whenever + // there is a large range with no changes. + if c.Tag == 'e' && i2-i1 > nn { + group = append(group, OpCode{c.Tag, i1, min(i2, i1+n), + j1, min(j2, j1+n)}) + groups = append(groups, group) + group = []OpCode{} + i1, j1 = max(i1, i2-n), max(j1, j2-n) + } + group = append(group, OpCode{c.Tag, i1, i2, j1, j2}) + } + if len(group) > 0 && !(len(group) == 1 && group[0].Tag == 'e') { + groups = append(groups, group) + } + return groups +} + +// Return a measure of the sequences' similarity (float in [0,1]). +// +// Where T is the total number of elements in both sequences, and +// M is the number of matches, this is 2.0*M / T. +// Note that this is 1 if the sequences are identical, and 0 if +// they have nothing in common. +// +// .Ratio() is expensive to compute if you haven't already computed +// .GetMatchingBlocks() or .GetOpCodes(), in which case you may +// want to try .QuickRatio() or .RealQuickRation() first to get an +// upper bound. +func (m *SequenceMatcher) Ratio() float64 { + matches := 0 + for _, m := range m.GetMatchingBlocks() { + matches += m.Size + } + return calculateRatio(matches, len(m.a)+len(m.b)) +} + +// Return an upper bound on ratio() relatively quickly. +// +// This isn't defined beyond that it is an upper bound on .Ratio(), and +// is faster to compute. +func (m *SequenceMatcher) QuickRatio() float64 { + // viewing a and b as multisets, set matches to the cardinality + // of their intersection; this counts the number of matches + // without regard to order, so is clearly an upper bound + if m.fullBCount == nil { + m.fullBCount = map[string]int{} + for _, s := range m.b { + m.fullBCount[s] = m.fullBCount[s] + 1 + } + } + + // avail[x] is the number of times x appears in 'b' less the + // number of times we've seen it in 'a' so far ... kinda + avail := map[string]int{} + matches := 0 + for _, s := range m.a { + n, ok := avail[s] + if !ok { + n = m.fullBCount[s] + } + avail[s] = n - 1 + if n > 0 { + matches += 1 + } + } + return calculateRatio(matches, len(m.a)+len(m.b)) +} + +// Return an upper bound on ratio() very quickly. +// +// This isn't defined beyond that it is an upper bound on .Ratio(), and +// is faster to compute than either .Ratio() or .QuickRatio(). +func (m *SequenceMatcher) RealQuickRatio() float64 { + la, lb := len(m.a), len(m.b) + return calculateRatio(min(la, lb), la+lb) +} + +// Convert range to the "ed" format +func formatRangeUnified(start, stop int) string { + // Per the diff spec at http://www.unix.org/single_unix_specification/ + beginning := start + 1 // lines start numbering with one + length := stop - start + if length == 1 { + return fmt.Sprintf("%d", beginning) + } + if length == 0 { + beginning -= 1 // empty ranges begin at line just before the range + } + return fmt.Sprintf("%d,%d", beginning, length) +} + +// Unified diff parameters +type UnifiedDiff struct { + A []string // First sequence lines + FromFile string // First file name + FromDate string // First file time + B []string // Second sequence lines + ToFile string // Second file name + ToDate string // Second file time + Eol string // Headers end of line, defaults to LF + Context int // Number of context lines +} + +// Compare two sequences of lines; generate the delta as a unified diff. +// +// Unified diffs are a compact way of showing line changes and a few +// lines of context. The number of context lines is set by 'n' which +// defaults to three. +// +// By default, the diff control lines (those with ---, +++, or @@) are +// created with a trailing newline. This is helpful so that inputs +// created from file.readlines() result in diffs that are suitable for +// file.writelines() since both the inputs and outputs have trailing +// newlines. +// +// For inputs that do not have trailing newlines, set the lineterm +// argument to "" so that the output will be uniformly newline free. +// +// The unidiff format normally has a header for filenames and modification +// times. Any or all of these may be specified using strings for +// 'fromfile', 'tofile', 'fromfiledate', and 'tofiledate'. +// The modification times are normally expressed in the ISO 8601 format. +func WriteUnifiedDiff(writer io.Writer, diff UnifiedDiff) error { + buf := bufio.NewWriter(writer) + defer buf.Flush() + wf := func(format string, args ...interface{}) error { + _, err := buf.WriteString(fmt.Sprintf(format, args...)) + return err + } + ws := func(s string) error { + _, err := buf.WriteString(s) + return err + } + + if len(diff.Eol) == 0 { + diff.Eol = "\n" + } + + started := false + m := NewMatcher(diff.A, diff.B) + for _, g := range m.GetGroupedOpCodes(diff.Context) { + if !started { + started = true + fromDate := "" + if len(diff.FromDate) > 0 { + fromDate = "\t" + diff.FromDate + } + toDate := "" + if len(diff.ToDate) > 0 { + toDate = "\t" + diff.ToDate + } + if diff.FromFile != "" || diff.ToFile != "" { + err := wf("--- %s%s%s", diff.FromFile, fromDate, diff.Eol) + if err != nil { + return err + } + err = wf("+++ %s%s%s", diff.ToFile, toDate, diff.Eol) + if err != nil { + return err + } + } + } + first, last := g[0], g[len(g)-1] + range1 := formatRangeUnified(first.I1, last.I2) + range2 := formatRangeUnified(first.J1, last.J2) + if err := wf("@@ -%s +%s @@%s", range1, range2, diff.Eol); err != nil { + return err + } + for _, c := range g { + i1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2 + if c.Tag == 'e' { + for _, line := range diff.A[i1:i2] { + if err := ws(" " + line); err != nil { + return err + } + } + continue + } + if c.Tag == 'r' || c.Tag == 'd' { + for _, line := range diff.A[i1:i2] { + if err := ws("-" + line); err != nil { + return err + } + } + } + if c.Tag == 'r' || c.Tag == 'i' { + for _, line := range diff.B[j1:j2] { + if err := ws("+" + line); err != nil { + return err + } + } + } + } + } + return nil +} + +// Like WriteUnifiedDiff but returns the diff a string. +func GetUnifiedDiffString(diff UnifiedDiff) (string, error) { + w := &bytes.Buffer{} + err := WriteUnifiedDiff(w, diff) + return string(w.Bytes()), err +} + +// Convert range to the "ed" format. +func formatRangeContext(start, stop int) string { + // Per the diff spec at http://www.unix.org/single_unix_specification/ + beginning := start + 1 // lines start numbering with one + length := stop - start + if length == 0 { + beginning -= 1 // empty ranges begin at line just before the range + } + if length <= 1 { + return fmt.Sprintf("%d", beginning) + } + return fmt.Sprintf("%d,%d", beginning, beginning+length-1) +} + +type ContextDiff UnifiedDiff + +// Compare two sequences of lines; generate the delta as a context diff. +// +// Context diffs are a compact way of showing line changes and a few +// lines of context. The number of context lines is set by diff.Context +// which defaults to three. +// +// By default, the diff control lines (those with *** or ---) are +// created with a trailing newline. +// +// For inputs that do not have trailing newlines, set the diff.Eol +// argument to "" so that the output will be uniformly newline free. +// +// The context diff format normally has a header for filenames and +// modification times. Any or all of these may be specified using +// strings for diff.FromFile, diff.ToFile, diff.FromDate, diff.ToDate. +// The modification times are normally expressed in the ISO 8601 format. +// If not specified, the strings default to blanks. +func WriteContextDiff(writer io.Writer, diff ContextDiff) error { + buf := bufio.NewWriter(writer) + defer buf.Flush() + var diffErr error + wf := func(format string, args ...interface{}) { + _, err := buf.WriteString(fmt.Sprintf(format, args...)) + if diffErr == nil && err != nil { + diffErr = err + } + } + ws := func(s string) { + _, err := buf.WriteString(s) + if diffErr == nil && err != nil { + diffErr = err + } + } + + if len(diff.Eol) == 0 { + diff.Eol = "\n" + } + + prefix := map[byte]string{ + 'i': "+ ", + 'd': "- ", + 'r': "! ", + 'e': " ", + } + + started := false + m := NewMatcher(diff.A, diff.B) + for _, g := range m.GetGroupedOpCodes(diff.Context) { + if !started { + started = true + fromDate := "" + if len(diff.FromDate) > 0 { + fromDate = "\t" + diff.FromDate + } + toDate := "" + if len(diff.ToDate) > 0 { + toDate = "\t" + diff.ToDate + } + if diff.FromFile != "" || diff.ToFile != "" { + wf("*** %s%s%s", diff.FromFile, fromDate, diff.Eol) + wf("--- %s%s%s", diff.ToFile, toDate, diff.Eol) + } + } + + first, last := g[0], g[len(g)-1] + ws("***************" + diff.Eol) + + range1 := formatRangeContext(first.I1, last.I2) + wf("*** %s ****%s", range1, diff.Eol) + for _, c := range g { + if c.Tag == 'r' || c.Tag == 'd' { + for _, cc := range g { + if cc.Tag == 'i' { + continue + } + for _, line := range diff.A[cc.I1:cc.I2] { + ws(prefix[cc.Tag] + line) + } + } + break + } + } + + range2 := formatRangeContext(first.J1, last.J2) + wf("--- %s ----%s", range2, diff.Eol) + for _, c := range g { + if c.Tag == 'r' || c.Tag == 'i' { + for _, cc := range g { + if cc.Tag == 'd' { + continue + } + for _, line := range diff.B[cc.J1:cc.J2] { + ws(prefix[cc.Tag] + line) + } + } + break + } + } + } + return diffErr +} + +// Like WriteContextDiff but returns the diff a string. +func GetContextDiffString(diff ContextDiff) (string, error) { + w := &bytes.Buffer{} + err := WriteContextDiff(w, diff) + return string(w.Bytes()), err +} + +// Split a string on "\n" while preserving them. The output can be used +// as input for UnifiedDiff and ContextDiff structures. +func SplitLines(s string) []string { + lines := strings.SplitAfter(s, "\n") + lines[len(lines)-1] += "\n" + return lines +} diff --git a/vendor/github.com/stretchr/testify/LICENSE b/vendor/github.com/stretchr/testify/LICENSE new file mode 100644 index 0000000..f38ec59 --- /dev/null +++ b/vendor/github.com/stretchr/testify/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2012-2018 Mat Ryer and Tyler Bunnell + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/github.com/stretchr/testify/assert/assertion_format.go b/vendor/github.com/stretchr/testify/assert/assertion_format.go new file mode 100644 index 0000000..e0364e9 --- /dev/null +++ b/vendor/github.com/stretchr/testify/assert/assertion_format.go @@ -0,0 +1,566 @@ +/* +* CODE GENERATED AUTOMATICALLY WITH github.com/stretchr/testify/_codegen +* THIS FILE MUST NOT BE EDITED BY HAND + */ + +package assert + +import ( + http "net/http" + url "net/url" + time "time" +) + +// Conditionf uses a Comparison to assert a complex condition. +func Conditionf(t TestingT, comp Comparison, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Condition(t, comp, append([]interface{}{msg}, args...)...) +} + +// Containsf asserts that the specified string, list(array, slice...) or map contains the +// specified substring or element. +// +// assert.Containsf(t, "Hello World", "World", "error message %s", "formatted") +// assert.Containsf(t, ["Hello", "World"], "World", "error message %s", "formatted") +// assert.Containsf(t, {"Hello": "World"}, "Hello", "error message %s", "formatted") +func Containsf(t TestingT, s interface{}, contains interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Contains(t, s, contains, append([]interface{}{msg}, args...)...) +} + +// DirExistsf checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists. +func DirExistsf(t TestingT, path string, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return DirExists(t, path, append([]interface{}{msg}, args...)...) +} + +// ElementsMatchf asserts that the specified listA(array, slice...) is equal to specified +// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, +// the number of appearances of each of them in both lists should match. +// +// assert.ElementsMatchf(t, [1, 3, 2, 3], [1, 3, 3, 2], "error message %s", "formatted") +func ElementsMatchf(t TestingT, listA interface{}, listB interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return ElementsMatch(t, listA, listB, append([]interface{}{msg}, args...)...) +} + +// Emptyf asserts that the specified object is empty. I.e. nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// assert.Emptyf(t, obj, "error message %s", "formatted") +func Emptyf(t TestingT, object interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Empty(t, object, append([]interface{}{msg}, args...)...) +} + +// Equalf asserts that two objects are equal. +// +// assert.Equalf(t, 123, 123, "error message %s", "formatted") +// +// Pointer variable equality is determined based on the equality of the +// referenced values (as opposed to the memory addresses). Function equality +// cannot be determined and will always fail. +func Equalf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Equal(t, expected, actual, append([]interface{}{msg}, args...)...) +} + +// EqualErrorf asserts that a function returned an error (i.e. not `nil`) +// and that it is equal to the provided error. +// +// actualObj, err := SomeFunction() +// assert.EqualErrorf(t, err, expectedErrorString, "error message %s", "formatted") +func EqualErrorf(t TestingT, theError error, errString string, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return EqualError(t, theError, errString, append([]interface{}{msg}, args...)...) +} + +// EqualValuesf asserts that two objects are equal or convertable to the same types +// and equal. +// +// assert.EqualValuesf(t, uint32(123, "error message %s", "formatted"), int32(123)) +func EqualValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return EqualValues(t, expected, actual, append([]interface{}{msg}, args...)...) +} + +// Errorf asserts that a function returned an error (i.e. not `nil`). +// +// actualObj, err := SomeFunction() +// if assert.Errorf(t, err, "error message %s", "formatted") { +// assert.Equal(t, expectedErrorf, err) +// } +func Errorf(t TestingT, err error, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Error(t, err, append([]interface{}{msg}, args...)...) +} + +// Eventuallyf asserts that given condition will be met in waitFor time, +// periodically checking target function each tick. +// +// assert.Eventuallyf(t, func() bool { return true; }, time.Second, 10*time.Millisecond, "error message %s", "formatted") +func Eventuallyf(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Eventually(t, condition, waitFor, tick, append([]interface{}{msg}, args...)...) +} + +// Exactlyf asserts that two objects are equal in value and type. +// +// assert.Exactlyf(t, int32(123, "error message %s", "formatted"), int64(123)) +func Exactlyf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Exactly(t, expected, actual, append([]interface{}{msg}, args...)...) +} + +// Failf reports a failure through +func Failf(t TestingT, failureMessage string, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Fail(t, failureMessage, append([]interface{}{msg}, args...)...) +} + +// FailNowf fails test +func FailNowf(t TestingT, failureMessage string, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return FailNow(t, failureMessage, append([]interface{}{msg}, args...)...) +} + +// Falsef asserts that the specified value is false. +// +// assert.Falsef(t, myBool, "error message %s", "formatted") +func Falsef(t TestingT, value bool, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return False(t, value, append([]interface{}{msg}, args...)...) +} + +// FileExistsf checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file. +func FileExistsf(t TestingT, path string, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return FileExists(t, path, append([]interface{}{msg}, args...)...) +} + +// Greaterf asserts that the first element is greater than the second +// +// assert.Greaterf(t, 2, 1, "error message %s", "formatted") +// assert.Greaterf(t, float64(2, "error message %s", "formatted"), float64(1)) +// assert.Greaterf(t, "b", "a", "error message %s", "formatted") +func Greaterf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Greater(t, e1, e2, append([]interface{}{msg}, args...)...) +} + +// GreaterOrEqualf asserts that the first element is greater than or equal to the second +// +// assert.GreaterOrEqualf(t, 2, 1, "error message %s", "formatted") +// assert.GreaterOrEqualf(t, 2, 2, "error message %s", "formatted") +// assert.GreaterOrEqualf(t, "b", "a", "error message %s", "formatted") +// assert.GreaterOrEqualf(t, "b", "b", "error message %s", "formatted") +func GreaterOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return GreaterOrEqual(t, e1, e2, append([]interface{}{msg}, args...)...) +} + +// HTTPBodyContainsf asserts that a specified handler returns a +// body that contains a string. +// +// assert.HTTPBodyContainsf(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted") +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPBodyContainsf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return HTTPBodyContains(t, handler, method, url, values, str, append([]interface{}{msg}, args...)...) +} + +// HTTPBodyNotContainsf asserts that a specified handler returns a +// body that does not contain a string. +// +// assert.HTTPBodyNotContainsf(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted") +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPBodyNotContainsf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return HTTPBodyNotContains(t, handler, method, url, values, str, append([]interface{}{msg}, args...)...) +} + +// HTTPErrorf asserts that a specified handler returns an error status code. +// +// assert.HTTPErrorf(t, myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true, "error message %s", "formatted") or not (false). +func HTTPErrorf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return HTTPError(t, handler, method, url, values, append([]interface{}{msg}, args...)...) +} + +// HTTPRedirectf asserts that a specified handler returns a redirect status code. +// +// assert.HTTPRedirectf(t, myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true, "error message %s", "formatted") or not (false). +func HTTPRedirectf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return HTTPRedirect(t, handler, method, url, values, append([]interface{}{msg}, args...)...) +} + +// HTTPSuccessf asserts that a specified handler returns a success status code. +// +// assert.HTTPSuccessf(t, myHandler, "POST", "http://www.google.com", nil, "error message %s", "formatted") +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPSuccessf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return HTTPSuccess(t, handler, method, url, values, append([]interface{}{msg}, args...)...) +} + +// Implementsf asserts that an object is implemented by the specified interface. +// +// assert.Implementsf(t, (*MyInterface, "error message %s", "formatted")(nil), new(MyObject)) +func Implementsf(t TestingT, interfaceObject interface{}, object interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Implements(t, interfaceObject, object, append([]interface{}{msg}, args...)...) +} + +// InDeltaf asserts that the two numerals are within delta of each other. +// +// assert.InDeltaf(t, math.Pi, (22 / 7.0, "error message %s", "formatted"), 0.01) +func InDeltaf(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return InDelta(t, expected, actual, delta, append([]interface{}{msg}, args...)...) +} + +// InDeltaMapValuesf is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys. +func InDeltaMapValuesf(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return InDeltaMapValues(t, expected, actual, delta, append([]interface{}{msg}, args...)...) +} + +// InDeltaSlicef is the same as InDelta, except it compares two slices. +func InDeltaSlicef(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return InDeltaSlice(t, expected, actual, delta, append([]interface{}{msg}, args...)...) +} + +// InEpsilonf asserts that expected and actual have a relative error less than epsilon +func InEpsilonf(t TestingT, expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return InEpsilon(t, expected, actual, epsilon, append([]interface{}{msg}, args...)...) +} + +// InEpsilonSlicef is the same as InEpsilon, except it compares each value from two slices. +func InEpsilonSlicef(t TestingT, expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return InEpsilonSlice(t, expected, actual, epsilon, append([]interface{}{msg}, args...)...) +} + +// IsTypef asserts that the specified objects are of the same type. +func IsTypef(t TestingT, expectedType interface{}, object interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return IsType(t, expectedType, object, append([]interface{}{msg}, args...)...) +} + +// JSONEqf asserts that two JSON strings are equivalent. +// +// assert.JSONEqf(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`, "error message %s", "formatted") +func JSONEqf(t TestingT, expected string, actual string, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return JSONEq(t, expected, actual, append([]interface{}{msg}, args...)...) +} + +// YAMLEqf asserts that two YAML strings are equivalent. +func YAMLEqf(t TestingT, expected string, actual string, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return YAMLEq(t, expected, actual, append([]interface{}{msg}, args...)...) +} + +// Lenf asserts that the specified object has specific length. +// Lenf also fails if the object has a type that len() not accept. +// +// assert.Lenf(t, mySlice, 3, "error message %s", "formatted") +func Lenf(t TestingT, object interface{}, length int, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Len(t, object, length, append([]interface{}{msg}, args...)...) +} + +// Lessf asserts that the first element is less than the second +// +// assert.Lessf(t, 1, 2, "error message %s", "formatted") +// assert.Lessf(t, float64(1, "error message %s", "formatted"), float64(2)) +// assert.Lessf(t, "a", "b", "error message %s", "formatted") +func Lessf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Less(t, e1, e2, append([]interface{}{msg}, args...)...) +} + +// LessOrEqualf asserts that the first element is less than or equal to the second +// +// assert.LessOrEqualf(t, 1, 2, "error message %s", "formatted") +// assert.LessOrEqualf(t, 2, 2, "error message %s", "formatted") +// assert.LessOrEqualf(t, "a", "b", "error message %s", "formatted") +// assert.LessOrEqualf(t, "b", "b", "error message %s", "formatted") +func LessOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return LessOrEqual(t, e1, e2, append([]interface{}{msg}, args...)...) +} + +// Nilf asserts that the specified object is nil. +// +// assert.Nilf(t, err, "error message %s", "formatted") +func Nilf(t TestingT, object interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Nil(t, object, append([]interface{}{msg}, args...)...) +} + +// NoErrorf asserts that a function returned no error (i.e. `nil`). +// +// actualObj, err := SomeFunction() +// if assert.NoErrorf(t, err, "error message %s", "formatted") { +// assert.Equal(t, expectedObj, actualObj) +// } +func NoErrorf(t TestingT, err error, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return NoError(t, err, append([]interface{}{msg}, args...)...) +} + +// NotContainsf asserts that the specified string, list(array, slice...) or map does NOT contain the +// specified substring or element. +// +// assert.NotContainsf(t, "Hello World", "Earth", "error message %s", "formatted") +// assert.NotContainsf(t, ["Hello", "World"], "Earth", "error message %s", "formatted") +// assert.NotContainsf(t, {"Hello": "World"}, "Earth", "error message %s", "formatted") +func NotContainsf(t TestingT, s interface{}, contains interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return NotContains(t, s, contains, append([]interface{}{msg}, args...)...) +} + +// NotEmptyf asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// if assert.NotEmptyf(t, obj, "error message %s", "formatted") { +// assert.Equal(t, "two", obj[1]) +// } +func NotEmptyf(t TestingT, object interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return NotEmpty(t, object, append([]interface{}{msg}, args...)...) +} + +// NotEqualf asserts that the specified values are NOT equal. +// +// assert.NotEqualf(t, obj1, obj2, "error message %s", "formatted") +// +// Pointer variable equality is determined based on the equality of the +// referenced values (as opposed to the memory addresses). +func NotEqualf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return NotEqual(t, expected, actual, append([]interface{}{msg}, args...)...) +} + +// NotNilf asserts that the specified object is not nil. +// +// assert.NotNilf(t, err, "error message %s", "formatted") +func NotNilf(t TestingT, object interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return NotNil(t, object, append([]interface{}{msg}, args...)...) +} + +// NotPanicsf asserts that the code inside the specified PanicTestFunc does NOT panic. +// +// assert.NotPanicsf(t, func(){ RemainCalm() }, "error message %s", "formatted") +func NotPanicsf(t TestingT, f PanicTestFunc, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return NotPanics(t, f, append([]interface{}{msg}, args...)...) +} + +// NotRegexpf asserts that a specified regexp does not match a string. +// +// assert.NotRegexpf(t, regexp.MustCompile("starts", "error message %s", "formatted"), "it's starting") +// assert.NotRegexpf(t, "^start", "it's not starting", "error message %s", "formatted") +func NotRegexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return NotRegexp(t, rx, str, append([]interface{}{msg}, args...)...) +} + +// NotSubsetf asserts that the specified list(array, slice...) contains not all +// elements given in the specified subset(array, slice...). +// +// assert.NotSubsetf(t, [1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]", "error message %s", "formatted") +func NotSubsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return NotSubset(t, list, subset, append([]interface{}{msg}, args...)...) +} + +// NotZerof asserts that i is not the zero value for its type. +func NotZerof(t TestingT, i interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return NotZero(t, i, append([]interface{}{msg}, args...)...) +} + +// Panicsf asserts that the code inside the specified PanicTestFunc panics. +// +// assert.Panicsf(t, func(){ GoCrazy() }, "error message %s", "formatted") +func Panicsf(t TestingT, f PanicTestFunc, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Panics(t, f, append([]interface{}{msg}, args...)...) +} + +// PanicsWithValuef asserts that the code inside the specified PanicTestFunc panics, and that +// the recovered panic value equals the expected panic value. +// +// assert.PanicsWithValuef(t, "crazy error", func(){ GoCrazy() }, "error message %s", "formatted") +func PanicsWithValuef(t TestingT, expected interface{}, f PanicTestFunc, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return PanicsWithValue(t, expected, f, append([]interface{}{msg}, args...)...) +} + +// Regexpf asserts that a specified regexp matches a string. +// +// assert.Regexpf(t, regexp.MustCompile("start", "error message %s", "formatted"), "it's starting") +// assert.Regexpf(t, "start...$", "it's not starting", "error message %s", "formatted") +func Regexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Regexp(t, rx, str, append([]interface{}{msg}, args...)...) +} + +// Samef asserts that two pointers reference the same object. +// +// assert.Samef(t, ptr1, ptr2, "error message %s", "formatted") +// +// Both arguments must be pointer variables. Pointer variable sameness is +// determined based on the equality of both type and value. +func Samef(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Same(t, expected, actual, append([]interface{}{msg}, args...)...) +} + +// Subsetf asserts that the specified list(array, slice...) contains all +// elements given in the specified subset(array, slice...). +// +// assert.Subsetf(t, [1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]", "error message %s", "formatted") +func Subsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Subset(t, list, subset, append([]interface{}{msg}, args...)...) +} + +// Truef asserts that the specified value is true. +// +// assert.Truef(t, myBool, "error message %s", "formatted") +func Truef(t TestingT, value bool, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return True(t, value, append([]interface{}{msg}, args...)...) +} + +// WithinDurationf asserts that the two times are within duration delta of each other. +// +// assert.WithinDurationf(t, time.Now(), time.Now(), 10*time.Second, "error message %s", "formatted") +func WithinDurationf(t TestingT, expected time.Time, actual time.Time, delta time.Duration, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return WithinDuration(t, expected, actual, delta, append([]interface{}{msg}, args...)...) +} + +// Zerof asserts that i is the zero value for its type. +func Zerof(t TestingT, i interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Zero(t, i, append([]interface{}{msg}, args...)...) +} diff --git a/vendor/github.com/stretchr/testify/assert/assertion_format.go.tmpl b/vendor/github.com/stretchr/testify/assert/assertion_format.go.tmpl new file mode 100644 index 0000000..d2bb0b8 --- /dev/null +++ b/vendor/github.com/stretchr/testify/assert/assertion_format.go.tmpl @@ -0,0 +1,5 @@ +{{.CommentFormat}} +func {{.DocInfo.Name}}f(t TestingT, {{.ParamsFormat}}) bool { + if h, ok := t.(tHelper); ok { h.Helper() } + return {{.DocInfo.Name}}(t, {{.ForwardedParamsFormat}}) +} diff --git a/vendor/github.com/stretchr/testify/assert/assertion_forward.go b/vendor/github.com/stretchr/testify/assert/assertion_forward.go new file mode 100644 index 0000000..2683040 --- /dev/null +++ b/vendor/github.com/stretchr/testify/assert/assertion_forward.go @@ -0,0 +1,1120 @@ +/* +* CODE GENERATED AUTOMATICALLY WITH github.com/stretchr/testify/_codegen +* THIS FILE MUST NOT BE EDITED BY HAND + */ + +package assert + +import ( + http "net/http" + url "net/url" + time "time" +) + +// Condition uses a Comparison to assert a complex condition. +func (a *Assertions) Condition(comp Comparison, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Condition(a.t, comp, msgAndArgs...) +} + +// Conditionf uses a Comparison to assert a complex condition. +func (a *Assertions) Conditionf(comp Comparison, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Conditionf(a.t, comp, msg, args...) +} + +// Contains asserts that the specified string, list(array, slice...) or map contains the +// specified substring or element. +// +// a.Contains("Hello World", "World") +// a.Contains(["Hello", "World"], "World") +// a.Contains({"Hello": "World"}, "Hello") +func (a *Assertions) Contains(s interface{}, contains interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Contains(a.t, s, contains, msgAndArgs...) +} + +// Containsf asserts that the specified string, list(array, slice...) or map contains the +// specified substring or element. +// +// a.Containsf("Hello World", "World", "error message %s", "formatted") +// a.Containsf(["Hello", "World"], "World", "error message %s", "formatted") +// a.Containsf({"Hello": "World"}, "Hello", "error message %s", "formatted") +func (a *Assertions) Containsf(s interface{}, contains interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Containsf(a.t, s, contains, msg, args...) +} + +// DirExists checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists. +func (a *Assertions) DirExists(path string, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return DirExists(a.t, path, msgAndArgs...) +} + +// DirExistsf checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists. +func (a *Assertions) DirExistsf(path string, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return DirExistsf(a.t, path, msg, args...) +} + +// ElementsMatch asserts that the specified listA(array, slice...) is equal to specified +// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, +// the number of appearances of each of them in both lists should match. +// +// a.ElementsMatch([1, 3, 2, 3], [1, 3, 3, 2]) +func (a *Assertions) ElementsMatch(listA interface{}, listB interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return ElementsMatch(a.t, listA, listB, msgAndArgs...) +} + +// ElementsMatchf asserts that the specified listA(array, slice...) is equal to specified +// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, +// the number of appearances of each of them in both lists should match. +// +// a.ElementsMatchf([1, 3, 2, 3], [1, 3, 3, 2], "error message %s", "formatted") +func (a *Assertions) ElementsMatchf(listA interface{}, listB interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return ElementsMatchf(a.t, listA, listB, msg, args...) +} + +// Empty asserts that the specified object is empty. I.e. nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// a.Empty(obj) +func (a *Assertions) Empty(object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Empty(a.t, object, msgAndArgs...) +} + +// Emptyf asserts that the specified object is empty. I.e. nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// a.Emptyf(obj, "error message %s", "formatted") +func (a *Assertions) Emptyf(object interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Emptyf(a.t, object, msg, args...) +} + +// Equal asserts that two objects are equal. +// +// a.Equal(123, 123) +// +// Pointer variable equality is determined based on the equality of the +// referenced values (as opposed to the memory addresses). Function equality +// cannot be determined and will always fail. +func (a *Assertions) Equal(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Equal(a.t, expected, actual, msgAndArgs...) +} + +// EqualError asserts that a function returned an error (i.e. not `nil`) +// and that it is equal to the provided error. +// +// actualObj, err := SomeFunction() +// a.EqualError(err, expectedErrorString) +func (a *Assertions) EqualError(theError error, errString string, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return EqualError(a.t, theError, errString, msgAndArgs...) +} + +// EqualErrorf asserts that a function returned an error (i.e. not `nil`) +// and that it is equal to the provided error. +// +// actualObj, err := SomeFunction() +// a.EqualErrorf(err, expectedErrorString, "error message %s", "formatted") +func (a *Assertions) EqualErrorf(theError error, errString string, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return EqualErrorf(a.t, theError, errString, msg, args...) +} + +// EqualValues asserts that two objects are equal or convertable to the same types +// and equal. +// +// a.EqualValues(uint32(123), int32(123)) +func (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return EqualValues(a.t, expected, actual, msgAndArgs...) +} + +// EqualValuesf asserts that two objects are equal or convertable to the same types +// and equal. +// +// a.EqualValuesf(uint32(123, "error message %s", "formatted"), int32(123)) +func (a *Assertions) EqualValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return EqualValuesf(a.t, expected, actual, msg, args...) +} + +// Equalf asserts that two objects are equal. +// +// a.Equalf(123, 123, "error message %s", "formatted") +// +// Pointer variable equality is determined based on the equality of the +// referenced values (as opposed to the memory addresses). Function equality +// cannot be determined and will always fail. +func (a *Assertions) Equalf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Equalf(a.t, expected, actual, msg, args...) +} + +// Error asserts that a function returned an error (i.e. not `nil`). +// +// actualObj, err := SomeFunction() +// if a.Error(err) { +// assert.Equal(t, expectedError, err) +// } +func (a *Assertions) Error(err error, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Error(a.t, err, msgAndArgs...) +} + +// Errorf asserts that a function returned an error (i.e. not `nil`). +// +// actualObj, err := SomeFunction() +// if a.Errorf(err, "error message %s", "formatted") { +// assert.Equal(t, expectedErrorf, err) +// } +func (a *Assertions) Errorf(err error, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Errorf(a.t, err, msg, args...) +} + +// Eventually asserts that given condition will be met in waitFor time, +// periodically checking target function each tick. +// +// a.Eventually(func() bool { return true; }, time.Second, 10*time.Millisecond) +func (a *Assertions) Eventually(condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Eventually(a.t, condition, waitFor, tick, msgAndArgs...) +} + +// Eventuallyf asserts that given condition will be met in waitFor time, +// periodically checking target function each tick. +// +// a.Eventuallyf(func() bool { return true; }, time.Second, 10*time.Millisecond, "error message %s", "formatted") +func (a *Assertions) Eventuallyf(condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Eventuallyf(a.t, condition, waitFor, tick, msg, args...) +} + +// Exactly asserts that two objects are equal in value and type. +// +// a.Exactly(int32(123), int64(123)) +func (a *Assertions) Exactly(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Exactly(a.t, expected, actual, msgAndArgs...) +} + +// Exactlyf asserts that two objects are equal in value and type. +// +// a.Exactlyf(int32(123, "error message %s", "formatted"), int64(123)) +func (a *Assertions) Exactlyf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Exactlyf(a.t, expected, actual, msg, args...) +} + +// Fail reports a failure through +func (a *Assertions) Fail(failureMessage string, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Fail(a.t, failureMessage, msgAndArgs...) +} + +// FailNow fails test +func (a *Assertions) FailNow(failureMessage string, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return FailNow(a.t, failureMessage, msgAndArgs...) +} + +// FailNowf fails test +func (a *Assertions) FailNowf(failureMessage string, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return FailNowf(a.t, failureMessage, msg, args...) +} + +// Failf reports a failure through +func (a *Assertions) Failf(failureMessage string, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Failf(a.t, failureMessage, msg, args...) +} + +// False asserts that the specified value is false. +// +// a.False(myBool) +func (a *Assertions) False(value bool, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return False(a.t, value, msgAndArgs...) +} + +// Falsef asserts that the specified value is false. +// +// a.Falsef(myBool, "error message %s", "formatted") +func (a *Assertions) Falsef(value bool, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Falsef(a.t, value, msg, args...) +} + +// FileExists checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file. +func (a *Assertions) FileExists(path string, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return FileExists(a.t, path, msgAndArgs...) +} + +// FileExistsf checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file. +func (a *Assertions) FileExistsf(path string, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return FileExistsf(a.t, path, msg, args...) +} + +// Greater asserts that the first element is greater than the second +// +// a.Greater(2, 1) +// a.Greater(float64(2), float64(1)) +// a.Greater("b", "a") +func (a *Assertions) Greater(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Greater(a.t, e1, e2, msgAndArgs...) +} + +// GreaterOrEqual asserts that the first element is greater than or equal to the second +// +// a.GreaterOrEqual(2, 1) +// a.GreaterOrEqual(2, 2) +// a.GreaterOrEqual("b", "a") +// a.GreaterOrEqual("b", "b") +func (a *Assertions) GreaterOrEqual(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return GreaterOrEqual(a.t, e1, e2, msgAndArgs...) +} + +// GreaterOrEqualf asserts that the first element is greater than or equal to the second +// +// a.GreaterOrEqualf(2, 1, "error message %s", "formatted") +// a.GreaterOrEqualf(2, 2, "error message %s", "formatted") +// a.GreaterOrEqualf("b", "a", "error message %s", "formatted") +// a.GreaterOrEqualf("b", "b", "error message %s", "formatted") +func (a *Assertions) GreaterOrEqualf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return GreaterOrEqualf(a.t, e1, e2, msg, args...) +} + +// Greaterf asserts that the first element is greater than the second +// +// a.Greaterf(2, 1, "error message %s", "formatted") +// a.Greaterf(float64(2, "error message %s", "formatted"), float64(1)) +// a.Greaterf("b", "a", "error message %s", "formatted") +func (a *Assertions) Greaterf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Greaterf(a.t, e1, e2, msg, args...) +} + +// HTTPBodyContains asserts that a specified handler returns a +// body that contains a string. +// +// a.HTTPBodyContains(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPBodyContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return HTTPBodyContains(a.t, handler, method, url, values, str, msgAndArgs...) +} + +// HTTPBodyContainsf asserts that a specified handler returns a +// body that contains a string. +// +// a.HTTPBodyContainsf(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPBodyContainsf(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return HTTPBodyContainsf(a.t, handler, method, url, values, str, msg, args...) +} + +// HTTPBodyNotContains asserts that a specified handler returns a +// body that does not contain a string. +// +// a.HTTPBodyNotContains(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPBodyNotContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return HTTPBodyNotContains(a.t, handler, method, url, values, str, msgAndArgs...) +} + +// HTTPBodyNotContainsf asserts that a specified handler returns a +// body that does not contain a string. +// +// a.HTTPBodyNotContainsf(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPBodyNotContainsf(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return HTTPBodyNotContainsf(a.t, handler, method, url, values, str, msg, args...) +} + +// HTTPError asserts that a specified handler returns an error status code. +// +// a.HTTPError(myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPError(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return HTTPError(a.t, handler, method, url, values, msgAndArgs...) +} + +// HTTPErrorf asserts that a specified handler returns an error status code. +// +// a.HTTPErrorf(myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true, "error message %s", "formatted") or not (false). +func (a *Assertions) HTTPErrorf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return HTTPErrorf(a.t, handler, method, url, values, msg, args...) +} + +// HTTPRedirect asserts that a specified handler returns a redirect status code. +// +// a.HTTPRedirect(myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPRedirect(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return HTTPRedirect(a.t, handler, method, url, values, msgAndArgs...) +} + +// HTTPRedirectf asserts that a specified handler returns a redirect status code. +// +// a.HTTPRedirectf(myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true, "error message %s", "formatted") or not (false). +func (a *Assertions) HTTPRedirectf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return HTTPRedirectf(a.t, handler, method, url, values, msg, args...) +} + +// HTTPSuccess asserts that a specified handler returns a success status code. +// +// a.HTTPSuccess(myHandler, "POST", "http://www.google.com", nil) +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPSuccess(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return HTTPSuccess(a.t, handler, method, url, values, msgAndArgs...) +} + +// HTTPSuccessf asserts that a specified handler returns a success status code. +// +// a.HTTPSuccessf(myHandler, "POST", "http://www.google.com", nil, "error message %s", "formatted") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPSuccessf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return HTTPSuccessf(a.t, handler, method, url, values, msg, args...) +} + +// Implements asserts that an object is implemented by the specified interface. +// +// a.Implements((*MyInterface)(nil), new(MyObject)) +func (a *Assertions) Implements(interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Implements(a.t, interfaceObject, object, msgAndArgs...) +} + +// Implementsf asserts that an object is implemented by the specified interface. +// +// a.Implementsf((*MyInterface, "error message %s", "formatted")(nil), new(MyObject)) +func (a *Assertions) Implementsf(interfaceObject interface{}, object interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Implementsf(a.t, interfaceObject, object, msg, args...) +} + +// InDelta asserts that the two numerals are within delta of each other. +// +// a.InDelta(math.Pi, (22 / 7.0), 0.01) +func (a *Assertions) InDelta(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return InDelta(a.t, expected, actual, delta, msgAndArgs...) +} + +// InDeltaMapValues is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys. +func (a *Assertions) InDeltaMapValues(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return InDeltaMapValues(a.t, expected, actual, delta, msgAndArgs...) +} + +// InDeltaMapValuesf is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys. +func (a *Assertions) InDeltaMapValuesf(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return InDeltaMapValuesf(a.t, expected, actual, delta, msg, args...) +} + +// InDeltaSlice is the same as InDelta, except it compares two slices. +func (a *Assertions) InDeltaSlice(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return InDeltaSlice(a.t, expected, actual, delta, msgAndArgs...) +} + +// InDeltaSlicef is the same as InDelta, except it compares two slices. +func (a *Assertions) InDeltaSlicef(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return InDeltaSlicef(a.t, expected, actual, delta, msg, args...) +} + +// InDeltaf asserts that the two numerals are within delta of each other. +// +// a.InDeltaf(math.Pi, (22 / 7.0, "error message %s", "formatted"), 0.01) +func (a *Assertions) InDeltaf(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return InDeltaf(a.t, expected, actual, delta, msg, args...) +} + +// InEpsilon asserts that expected and actual have a relative error less than epsilon +func (a *Assertions) InEpsilon(expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return InEpsilon(a.t, expected, actual, epsilon, msgAndArgs...) +} + +// InEpsilonSlice is the same as InEpsilon, except it compares each value from two slices. +func (a *Assertions) InEpsilonSlice(expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return InEpsilonSlice(a.t, expected, actual, epsilon, msgAndArgs...) +} + +// InEpsilonSlicef is the same as InEpsilon, except it compares each value from two slices. +func (a *Assertions) InEpsilonSlicef(expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return InEpsilonSlicef(a.t, expected, actual, epsilon, msg, args...) +} + +// InEpsilonf asserts that expected and actual have a relative error less than epsilon +func (a *Assertions) InEpsilonf(expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return InEpsilonf(a.t, expected, actual, epsilon, msg, args...) +} + +// IsType asserts that the specified objects are of the same type. +func (a *Assertions) IsType(expectedType interface{}, object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return IsType(a.t, expectedType, object, msgAndArgs...) +} + +// IsTypef asserts that the specified objects are of the same type. +func (a *Assertions) IsTypef(expectedType interface{}, object interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return IsTypef(a.t, expectedType, object, msg, args...) +} + +// JSONEq asserts that two JSON strings are equivalent. +// +// a.JSONEq(`{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`) +func (a *Assertions) JSONEq(expected string, actual string, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return JSONEq(a.t, expected, actual, msgAndArgs...) +} + +// JSONEqf asserts that two JSON strings are equivalent. +// +// a.JSONEqf(`{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`, "error message %s", "formatted") +func (a *Assertions) JSONEqf(expected string, actual string, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return JSONEqf(a.t, expected, actual, msg, args...) +} + +// YAMLEq asserts that two YAML strings are equivalent. +func (a *Assertions) YAMLEq(expected string, actual string, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return YAMLEq(a.t, expected, actual, msgAndArgs...) +} + +// YAMLEqf asserts that two YAML strings are equivalent. +func (a *Assertions) YAMLEqf(expected string, actual string, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return YAMLEqf(a.t, expected, actual, msg, args...) +} + +// Len asserts that the specified object has specific length. +// Len also fails if the object has a type that len() not accept. +// +// a.Len(mySlice, 3) +func (a *Assertions) Len(object interface{}, length int, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Len(a.t, object, length, msgAndArgs...) +} + +// Lenf asserts that the specified object has specific length. +// Lenf also fails if the object has a type that len() not accept. +// +// a.Lenf(mySlice, 3, "error message %s", "formatted") +func (a *Assertions) Lenf(object interface{}, length int, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Lenf(a.t, object, length, msg, args...) +} + +// Less asserts that the first element is less than the second +// +// a.Less(1, 2) +// a.Less(float64(1), float64(2)) +// a.Less("a", "b") +func (a *Assertions) Less(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Less(a.t, e1, e2, msgAndArgs...) +} + +// LessOrEqual asserts that the first element is less than or equal to the second +// +// a.LessOrEqual(1, 2) +// a.LessOrEqual(2, 2) +// a.LessOrEqual("a", "b") +// a.LessOrEqual("b", "b") +func (a *Assertions) LessOrEqual(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return LessOrEqual(a.t, e1, e2, msgAndArgs...) +} + +// LessOrEqualf asserts that the first element is less than or equal to the second +// +// a.LessOrEqualf(1, 2, "error message %s", "formatted") +// a.LessOrEqualf(2, 2, "error message %s", "formatted") +// a.LessOrEqualf("a", "b", "error message %s", "formatted") +// a.LessOrEqualf("b", "b", "error message %s", "formatted") +func (a *Assertions) LessOrEqualf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return LessOrEqualf(a.t, e1, e2, msg, args...) +} + +// Lessf asserts that the first element is less than the second +// +// a.Lessf(1, 2, "error message %s", "formatted") +// a.Lessf(float64(1, "error message %s", "formatted"), float64(2)) +// a.Lessf("a", "b", "error message %s", "formatted") +func (a *Assertions) Lessf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Lessf(a.t, e1, e2, msg, args...) +} + +// Nil asserts that the specified object is nil. +// +// a.Nil(err) +func (a *Assertions) Nil(object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Nil(a.t, object, msgAndArgs...) +} + +// Nilf asserts that the specified object is nil. +// +// a.Nilf(err, "error message %s", "formatted") +func (a *Assertions) Nilf(object interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Nilf(a.t, object, msg, args...) +} + +// NoError asserts that a function returned no error (i.e. `nil`). +// +// actualObj, err := SomeFunction() +// if a.NoError(err) { +// assert.Equal(t, expectedObj, actualObj) +// } +func (a *Assertions) NoError(err error, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NoError(a.t, err, msgAndArgs...) +} + +// NoErrorf asserts that a function returned no error (i.e. `nil`). +// +// actualObj, err := SomeFunction() +// if a.NoErrorf(err, "error message %s", "formatted") { +// assert.Equal(t, expectedObj, actualObj) +// } +func (a *Assertions) NoErrorf(err error, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NoErrorf(a.t, err, msg, args...) +} + +// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the +// specified substring or element. +// +// a.NotContains("Hello World", "Earth") +// a.NotContains(["Hello", "World"], "Earth") +// a.NotContains({"Hello": "World"}, "Earth") +func (a *Assertions) NotContains(s interface{}, contains interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotContains(a.t, s, contains, msgAndArgs...) +} + +// NotContainsf asserts that the specified string, list(array, slice...) or map does NOT contain the +// specified substring or element. +// +// a.NotContainsf("Hello World", "Earth", "error message %s", "formatted") +// a.NotContainsf(["Hello", "World"], "Earth", "error message %s", "formatted") +// a.NotContainsf({"Hello": "World"}, "Earth", "error message %s", "formatted") +func (a *Assertions) NotContainsf(s interface{}, contains interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotContainsf(a.t, s, contains, msg, args...) +} + +// NotEmpty asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// if a.NotEmpty(obj) { +// assert.Equal(t, "two", obj[1]) +// } +func (a *Assertions) NotEmpty(object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotEmpty(a.t, object, msgAndArgs...) +} + +// NotEmptyf asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// if a.NotEmptyf(obj, "error message %s", "formatted") { +// assert.Equal(t, "two", obj[1]) +// } +func (a *Assertions) NotEmptyf(object interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotEmptyf(a.t, object, msg, args...) +} + +// NotEqual asserts that the specified values are NOT equal. +// +// a.NotEqual(obj1, obj2) +// +// Pointer variable equality is determined based on the equality of the +// referenced values (as opposed to the memory addresses). +func (a *Assertions) NotEqual(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotEqual(a.t, expected, actual, msgAndArgs...) +} + +// NotEqualf asserts that the specified values are NOT equal. +// +// a.NotEqualf(obj1, obj2, "error message %s", "formatted") +// +// Pointer variable equality is determined based on the equality of the +// referenced values (as opposed to the memory addresses). +func (a *Assertions) NotEqualf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotEqualf(a.t, expected, actual, msg, args...) +} + +// NotNil asserts that the specified object is not nil. +// +// a.NotNil(err) +func (a *Assertions) NotNil(object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotNil(a.t, object, msgAndArgs...) +} + +// NotNilf asserts that the specified object is not nil. +// +// a.NotNilf(err, "error message %s", "formatted") +func (a *Assertions) NotNilf(object interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotNilf(a.t, object, msg, args...) +} + +// NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic. +// +// a.NotPanics(func(){ RemainCalm() }) +func (a *Assertions) NotPanics(f PanicTestFunc, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotPanics(a.t, f, msgAndArgs...) +} + +// NotPanicsf asserts that the code inside the specified PanicTestFunc does NOT panic. +// +// a.NotPanicsf(func(){ RemainCalm() }, "error message %s", "formatted") +func (a *Assertions) NotPanicsf(f PanicTestFunc, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotPanicsf(a.t, f, msg, args...) +} + +// NotRegexp asserts that a specified regexp does not match a string. +// +// a.NotRegexp(regexp.MustCompile("starts"), "it's starting") +// a.NotRegexp("^start", "it's not starting") +func (a *Assertions) NotRegexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotRegexp(a.t, rx, str, msgAndArgs...) +} + +// NotRegexpf asserts that a specified regexp does not match a string. +// +// a.NotRegexpf(regexp.MustCompile("starts", "error message %s", "formatted"), "it's starting") +// a.NotRegexpf("^start", "it's not starting", "error message %s", "formatted") +func (a *Assertions) NotRegexpf(rx interface{}, str interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotRegexpf(a.t, rx, str, msg, args...) +} + +// NotSubset asserts that the specified list(array, slice...) contains not all +// elements given in the specified subset(array, slice...). +// +// a.NotSubset([1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]") +func (a *Assertions) NotSubset(list interface{}, subset interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotSubset(a.t, list, subset, msgAndArgs...) +} + +// NotSubsetf asserts that the specified list(array, slice...) contains not all +// elements given in the specified subset(array, slice...). +// +// a.NotSubsetf([1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]", "error message %s", "formatted") +func (a *Assertions) NotSubsetf(list interface{}, subset interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotSubsetf(a.t, list, subset, msg, args...) +} + +// NotZero asserts that i is not the zero value for its type. +func (a *Assertions) NotZero(i interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotZero(a.t, i, msgAndArgs...) +} + +// NotZerof asserts that i is not the zero value for its type. +func (a *Assertions) NotZerof(i interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotZerof(a.t, i, msg, args...) +} + +// Panics asserts that the code inside the specified PanicTestFunc panics. +// +// a.Panics(func(){ GoCrazy() }) +func (a *Assertions) Panics(f PanicTestFunc, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Panics(a.t, f, msgAndArgs...) +} + +// PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that +// the recovered panic value equals the expected panic value. +// +// a.PanicsWithValue("crazy error", func(){ GoCrazy() }) +func (a *Assertions) PanicsWithValue(expected interface{}, f PanicTestFunc, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return PanicsWithValue(a.t, expected, f, msgAndArgs...) +} + +// PanicsWithValuef asserts that the code inside the specified PanicTestFunc panics, and that +// the recovered panic value equals the expected panic value. +// +// a.PanicsWithValuef("crazy error", func(){ GoCrazy() }, "error message %s", "formatted") +func (a *Assertions) PanicsWithValuef(expected interface{}, f PanicTestFunc, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return PanicsWithValuef(a.t, expected, f, msg, args...) +} + +// Panicsf asserts that the code inside the specified PanicTestFunc panics. +// +// a.Panicsf(func(){ GoCrazy() }, "error message %s", "formatted") +func (a *Assertions) Panicsf(f PanicTestFunc, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Panicsf(a.t, f, msg, args...) +} + +// Regexp asserts that a specified regexp matches a string. +// +// a.Regexp(regexp.MustCompile("start"), "it's starting") +// a.Regexp("start...$", "it's not starting") +func (a *Assertions) Regexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Regexp(a.t, rx, str, msgAndArgs...) +} + +// Regexpf asserts that a specified regexp matches a string. +// +// a.Regexpf(regexp.MustCompile("start", "error message %s", "formatted"), "it's starting") +// a.Regexpf("start...$", "it's not starting", "error message %s", "formatted") +func (a *Assertions) Regexpf(rx interface{}, str interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Regexpf(a.t, rx, str, msg, args...) +} + +// Same asserts that two pointers reference the same object. +// +// a.Same(ptr1, ptr2) +// +// Both arguments must be pointer variables. Pointer variable sameness is +// determined based on the equality of both type and value. +func (a *Assertions) Same(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Same(a.t, expected, actual, msgAndArgs...) +} + +// Samef asserts that two pointers reference the same object. +// +// a.Samef(ptr1, ptr2, "error message %s", "formatted") +// +// Both arguments must be pointer variables. Pointer variable sameness is +// determined based on the equality of both type and value. +func (a *Assertions) Samef(expected interface{}, actual interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Samef(a.t, expected, actual, msg, args...) +} + +// Subset asserts that the specified list(array, slice...) contains all +// elements given in the specified subset(array, slice...). +// +// a.Subset([1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]") +func (a *Assertions) Subset(list interface{}, subset interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Subset(a.t, list, subset, msgAndArgs...) +} + +// Subsetf asserts that the specified list(array, slice...) contains all +// elements given in the specified subset(array, slice...). +// +// a.Subsetf([1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]", "error message %s", "formatted") +func (a *Assertions) Subsetf(list interface{}, subset interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Subsetf(a.t, list, subset, msg, args...) +} + +// True asserts that the specified value is true. +// +// a.True(myBool) +func (a *Assertions) True(value bool, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return True(a.t, value, msgAndArgs...) +} + +// Truef asserts that the specified value is true. +// +// a.Truef(myBool, "error message %s", "formatted") +func (a *Assertions) Truef(value bool, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Truef(a.t, value, msg, args...) +} + +// WithinDuration asserts that the two times are within duration delta of each other. +// +// a.WithinDuration(time.Now(), time.Now(), 10*time.Second) +func (a *Assertions) WithinDuration(expected time.Time, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return WithinDuration(a.t, expected, actual, delta, msgAndArgs...) +} + +// WithinDurationf asserts that the two times are within duration delta of each other. +// +// a.WithinDurationf(time.Now(), time.Now(), 10*time.Second, "error message %s", "formatted") +func (a *Assertions) WithinDurationf(expected time.Time, actual time.Time, delta time.Duration, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return WithinDurationf(a.t, expected, actual, delta, msg, args...) +} + +// Zero asserts that i is the zero value for its type. +func (a *Assertions) Zero(i interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Zero(a.t, i, msgAndArgs...) +} + +// Zerof asserts that i is the zero value for its type. +func (a *Assertions) Zerof(i interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Zerof(a.t, i, msg, args...) +} diff --git a/vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl b/vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl new file mode 100644 index 0000000..188bb9e --- /dev/null +++ b/vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl @@ -0,0 +1,5 @@ +{{.CommentWithoutT "a"}} +func (a *Assertions) {{.DocInfo.Name}}({{.Params}}) bool { + if h, ok := a.t.(tHelper); ok { h.Helper() } + return {{.DocInfo.Name}}(a.t, {{.ForwardedParams}}) +} diff --git a/vendor/github.com/stretchr/testify/assert/assertion_order.go b/vendor/github.com/stretchr/testify/assert/assertion_order.go new file mode 100644 index 0000000..15a486c --- /dev/null +++ b/vendor/github.com/stretchr/testify/assert/assertion_order.go @@ -0,0 +1,309 @@ +package assert + +import ( + "fmt" + "reflect" +) + +func compare(obj1, obj2 interface{}, kind reflect.Kind) (int, bool) { + switch kind { + case reflect.Int: + { + intobj1 := obj1.(int) + intobj2 := obj2.(int) + if intobj1 > intobj2 { + return -1, true + } + if intobj1 == intobj2 { + return 0, true + } + if intobj1 < intobj2 { + return 1, true + } + } + case reflect.Int8: + { + int8obj1 := obj1.(int8) + int8obj2 := obj2.(int8) + if int8obj1 > int8obj2 { + return -1, true + } + if int8obj1 == int8obj2 { + return 0, true + } + if int8obj1 < int8obj2 { + return 1, true + } + } + case reflect.Int16: + { + int16obj1 := obj1.(int16) + int16obj2 := obj2.(int16) + if int16obj1 > int16obj2 { + return -1, true + } + if int16obj1 == int16obj2 { + return 0, true + } + if int16obj1 < int16obj2 { + return 1, true + } + } + case reflect.Int32: + { + int32obj1 := obj1.(int32) + int32obj2 := obj2.(int32) + if int32obj1 > int32obj2 { + return -1, true + } + if int32obj1 == int32obj2 { + return 0, true + } + if int32obj1 < int32obj2 { + return 1, true + } + } + case reflect.Int64: + { + int64obj1 := obj1.(int64) + int64obj2 := obj2.(int64) + if int64obj1 > int64obj2 { + return -1, true + } + if int64obj1 == int64obj2 { + return 0, true + } + if int64obj1 < int64obj2 { + return 1, true + } + } + case reflect.Uint: + { + uintobj1 := obj1.(uint) + uintobj2 := obj2.(uint) + if uintobj1 > uintobj2 { + return -1, true + } + if uintobj1 == uintobj2 { + return 0, true + } + if uintobj1 < uintobj2 { + return 1, true + } + } + case reflect.Uint8: + { + uint8obj1 := obj1.(uint8) + uint8obj2 := obj2.(uint8) + if uint8obj1 > uint8obj2 { + return -1, true + } + if uint8obj1 == uint8obj2 { + return 0, true + } + if uint8obj1 < uint8obj2 { + return 1, true + } + } + case reflect.Uint16: + { + uint16obj1 := obj1.(uint16) + uint16obj2 := obj2.(uint16) + if uint16obj1 > uint16obj2 { + return -1, true + } + if uint16obj1 == uint16obj2 { + return 0, true + } + if uint16obj1 < uint16obj2 { + return 1, true + } + } + case reflect.Uint32: + { + uint32obj1 := obj1.(uint32) + uint32obj2 := obj2.(uint32) + if uint32obj1 > uint32obj2 { + return -1, true + } + if uint32obj1 == uint32obj2 { + return 0, true + } + if uint32obj1 < uint32obj2 { + return 1, true + } + } + case reflect.Uint64: + { + uint64obj1 := obj1.(uint64) + uint64obj2 := obj2.(uint64) + if uint64obj1 > uint64obj2 { + return -1, true + } + if uint64obj1 == uint64obj2 { + return 0, true + } + if uint64obj1 < uint64obj2 { + return 1, true + } + } + case reflect.Float32: + { + float32obj1 := obj1.(float32) + float32obj2 := obj2.(float32) + if float32obj1 > float32obj2 { + return -1, true + } + if float32obj1 == float32obj2 { + return 0, true + } + if float32obj1 < float32obj2 { + return 1, true + } + } + case reflect.Float64: + { + float64obj1 := obj1.(float64) + float64obj2 := obj2.(float64) + if float64obj1 > float64obj2 { + return -1, true + } + if float64obj1 == float64obj2 { + return 0, true + } + if float64obj1 < float64obj2 { + return 1, true + } + } + case reflect.String: + { + stringobj1 := obj1.(string) + stringobj2 := obj2.(string) + if stringobj1 > stringobj2 { + return -1, true + } + if stringobj1 == stringobj2 { + return 0, true + } + if stringobj1 < stringobj2 { + return 1, true + } + } + } + + return 0, false +} + +// Greater asserts that the first element is greater than the second +// +// assert.Greater(t, 2, 1) +// assert.Greater(t, float64(2), float64(1)) +// assert.Greater(t, "b", "a") +func Greater(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + + e1Kind := reflect.ValueOf(e1).Kind() + e2Kind := reflect.ValueOf(e2).Kind() + if e1Kind != e2Kind { + return Fail(t, "Elements should be the same type", msgAndArgs...) + } + + res, isComparable := compare(e1, e2, e1Kind) + if !isComparable { + return Fail(t, fmt.Sprintf("Can not compare type \"%s\"", reflect.TypeOf(e1)), msgAndArgs...) + } + + if res != -1 { + return Fail(t, fmt.Sprintf("\"%v\" is not greater than \"%v\"", e1, e2), msgAndArgs...) + } + + return true +} + +// GreaterOrEqual asserts that the first element is greater than or equal to the second +// +// assert.GreaterOrEqual(t, 2, 1) +// assert.GreaterOrEqual(t, 2, 2) +// assert.GreaterOrEqual(t, "b", "a") +// assert.GreaterOrEqual(t, "b", "b") +func GreaterOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + + e1Kind := reflect.ValueOf(e1).Kind() + e2Kind := reflect.ValueOf(e2).Kind() + if e1Kind != e2Kind { + return Fail(t, "Elements should be the same type", msgAndArgs...) + } + + res, isComparable := compare(e1, e2, e1Kind) + if !isComparable { + return Fail(t, fmt.Sprintf("Can not compare type \"%s\"", reflect.TypeOf(e1)), msgAndArgs...) + } + + if res != -1 && res != 0 { + return Fail(t, fmt.Sprintf("\"%v\" is not greater than or equal to \"%v\"", e1, e2), msgAndArgs...) + } + + return true +} + +// Less asserts that the first element is less than the second +// +// assert.Less(t, 1, 2) +// assert.Less(t, float64(1), float64(2)) +// assert.Less(t, "a", "b") +func Less(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + + e1Kind := reflect.ValueOf(e1).Kind() + e2Kind := reflect.ValueOf(e2).Kind() + if e1Kind != e2Kind { + return Fail(t, "Elements should be the same type", msgAndArgs...) + } + + res, isComparable := compare(e1, e2, e1Kind) + if !isComparable { + return Fail(t, fmt.Sprintf("Can not compare type \"%s\"", reflect.TypeOf(e1)), msgAndArgs...) + } + + if res != 1 { + return Fail(t, fmt.Sprintf("\"%v\" is not less than \"%v\"", e1, e2), msgAndArgs...) + } + + return true +} + +// LessOrEqual asserts that the first element is less than or equal to the second +// +// assert.LessOrEqual(t, 1, 2) +// assert.LessOrEqual(t, 2, 2) +// assert.LessOrEqual(t, "a", "b") +// assert.LessOrEqual(t, "b", "b") +func LessOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + + e1Kind := reflect.ValueOf(e1).Kind() + e2Kind := reflect.ValueOf(e2).Kind() + if e1Kind != e2Kind { + return Fail(t, "Elements should be the same type", msgAndArgs...) + } + + res, isComparable := compare(e1, e2, e1Kind) + if !isComparable { + return Fail(t, fmt.Sprintf("Can not compare type \"%s\"", reflect.TypeOf(e1)), msgAndArgs...) + } + + if res != 1 && res != 0 { + return Fail(t, fmt.Sprintf("\"%v\" is not less than or equal to \"%v\"", e1, e2), msgAndArgs...) + } + + return true +} diff --git a/vendor/github.com/stretchr/testify/assert/assertions.go b/vendor/github.com/stretchr/testify/assert/assertions.go new file mode 100644 index 0000000..044da8b --- /dev/null +++ b/vendor/github.com/stretchr/testify/assert/assertions.go @@ -0,0 +1,1498 @@ +package assert + +import ( + "bufio" + "bytes" + "encoding/json" + "errors" + "fmt" + "math" + "os" + "reflect" + "regexp" + "runtime" + "strings" + "time" + "unicode" + "unicode/utf8" + + "github.com/davecgh/go-spew/spew" + "github.com/pmezard/go-difflib/difflib" + yaml "gopkg.in/yaml.v2" +) + +//go:generate go run ../_codegen/main.go -output-package=assert -template=assertion_format.go.tmpl + +// TestingT is an interface wrapper around *testing.T +type TestingT interface { + Errorf(format string, args ...interface{}) +} + +// ComparisonAssertionFunc is a common function prototype when comparing two values. Can be useful +// for table driven tests. +type ComparisonAssertionFunc func(TestingT, interface{}, interface{}, ...interface{}) bool + +// ValueAssertionFunc is a common function prototype when validating a single value. Can be useful +// for table driven tests. +type ValueAssertionFunc func(TestingT, interface{}, ...interface{}) bool + +// BoolAssertionFunc is a common function prototype when validating a bool value. Can be useful +// for table driven tests. +type BoolAssertionFunc func(TestingT, bool, ...interface{}) bool + +// ErrorAssertionFunc is a common function prototype when validating an error value. Can be useful +// for table driven tests. +type ErrorAssertionFunc func(TestingT, error, ...interface{}) bool + +// Comparison a custom function that returns true on success and false on failure +type Comparison func() (success bool) + +/* + Helper functions +*/ + +// ObjectsAreEqual determines if two objects are considered equal. +// +// This function does no assertion of any kind. +func ObjectsAreEqual(expected, actual interface{}) bool { + if expected == nil || actual == nil { + return expected == actual + } + + exp, ok := expected.([]byte) + if !ok { + return reflect.DeepEqual(expected, actual) + } + + act, ok := actual.([]byte) + if !ok { + return false + } + if exp == nil || act == nil { + return exp == nil && act == nil + } + return bytes.Equal(exp, act) +} + +// ObjectsAreEqualValues gets whether two objects are equal, or if their +// values are equal. +func ObjectsAreEqualValues(expected, actual interface{}) bool { + if ObjectsAreEqual(expected, actual) { + return true + } + + actualType := reflect.TypeOf(actual) + if actualType == nil { + return false + } + expectedValue := reflect.ValueOf(expected) + if expectedValue.IsValid() && expectedValue.Type().ConvertibleTo(actualType) { + // Attempt comparison after type conversion + return reflect.DeepEqual(expectedValue.Convert(actualType).Interface(), actual) + } + + return false +} + +/* CallerInfo is necessary because the assert functions use the testing object +internally, causing it to print the file:line of the assert method, rather than where +the problem actually occurred in calling code.*/ + +// CallerInfo returns an array of strings containing the file and line number +// of each stack frame leading from the current test to the assert call that +// failed. +func CallerInfo() []string { + + pc := uintptr(0) + file := "" + line := 0 + ok := false + name := "" + + callers := []string{} + for i := 0; ; i++ { + pc, file, line, ok = runtime.Caller(i) + if !ok { + // The breaks below failed to terminate the loop, and we ran off the + // end of the call stack. + break + } + + // This is a huge edge case, but it will panic if this is the case, see #180 + if file == "" { + break + } + + f := runtime.FuncForPC(pc) + if f == nil { + break + } + name = f.Name() + + // testing.tRunner is the standard library function that calls + // tests. Subtests are called directly by tRunner, without going through + // the Test/Benchmark/Example function that contains the t.Run calls, so + // with subtests we should break when we hit tRunner, without adding it + // to the list of callers. + if name == "testing.tRunner" { + break + } + + parts := strings.Split(file, "/") + file = parts[len(parts)-1] + if len(parts) > 1 { + dir := parts[len(parts)-2] + if (dir != "assert" && dir != "mock" && dir != "require") || file == "mock_test.go" { + callers = append(callers, fmt.Sprintf("%s:%d", file, line)) + } + } + + // Drop the package + segments := strings.Split(name, ".") + name = segments[len(segments)-1] + if isTest(name, "Test") || + isTest(name, "Benchmark") || + isTest(name, "Example") { + break + } + } + + return callers +} + +// Stolen from the `go test` tool. +// isTest tells whether name looks like a test (or benchmark, according to prefix). +// It is a Test (say) if there is a character after Test that is not a lower-case letter. +// We don't want TesticularCancer. +func isTest(name, prefix string) bool { + if !strings.HasPrefix(name, prefix) { + return false + } + if len(name) == len(prefix) { // "Test" is ok + return true + } + rune, _ := utf8.DecodeRuneInString(name[len(prefix):]) + return !unicode.IsLower(rune) +} + +func messageFromMsgAndArgs(msgAndArgs ...interface{}) string { + if len(msgAndArgs) == 0 || msgAndArgs == nil { + return "" + } + if len(msgAndArgs) == 1 { + msg := msgAndArgs[0] + if msgAsStr, ok := msg.(string); ok { + return msgAsStr + } + return fmt.Sprintf("%+v", msg) + } + if len(msgAndArgs) > 1 { + return fmt.Sprintf(msgAndArgs[0].(string), msgAndArgs[1:]...) + } + return "" +} + +// Aligns the provided message so that all lines after the first line start at the same location as the first line. +// Assumes that the first line starts at the correct location (after carriage return, tab, label, spacer and tab). +// The longestLabelLen parameter specifies the length of the longest label in the output (required becaues this is the +// basis on which the alignment occurs). +func indentMessageLines(message string, longestLabelLen int) string { + outBuf := new(bytes.Buffer) + + for i, scanner := 0, bufio.NewScanner(strings.NewReader(message)); scanner.Scan(); i++ { + // no need to align first line because it starts at the correct location (after the label) + if i != 0 { + // append alignLen+1 spaces to align with "{{longestLabel}}:" before adding tab + outBuf.WriteString("\n\t" + strings.Repeat(" ", longestLabelLen+1) + "\t") + } + outBuf.WriteString(scanner.Text()) + } + + return outBuf.String() +} + +type failNower interface { + FailNow() +} + +// FailNow fails test +func FailNow(t TestingT, failureMessage string, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + Fail(t, failureMessage, msgAndArgs...) + + // We cannot extend TestingT with FailNow() and + // maintain backwards compatibility, so we fallback + // to panicking when FailNow is not available in + // TestingT. + // See issue #263 + + if t, ok := t.(failNower); ok { + t.FailNow() + } else { + panic("test failed and t is missing `FailNow()`") + } + return false +} + +// Fail reports a failure through +func Fail(t TestingT, failureMessage string, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + content := []labeledContent{ + {"Error Trace", strings.Join(CallerInfo(), "\n\t\t\t")}, + {"Error", failureMessage}, + } + + // Add test name if the Go version supports it + if n, ok := t.(interface { + Name() string + }); ok { + content = append(content, labeledContent{"Test", n.Name()}) + } + + message := messageFromMsgAndArgs(msgAndArgs...) + if len(message) > 0 { + content = append(content, labeledContent{"Messages", message}) + } + + t.Errorf("\n%s", ""+labeledOutput(content...)) + + return false +} + +type labeledContent struct { + label string + content string +} + +// labeledOutput returns a string consisting of the provided labeledContent. Each labeled output is appended in the following manner: +// +// \t{{label}}:{{align_spaces}}\t{{content}}\n +// +// The initial carriage return is required to undo/erase any padding added by testing.T.Errorf. The "\t{{label}}:" is for the label. +// If a label is shorter than the longest label provided, padding spaces are added to make all the labels match in length. Once this +// alignment is achieved, "\t{{content}}\n" is added for the output. +// +// If the content of the labeledOutput contains line breaks, the subsequent lines are aligned so that they start at the same location as the first line. +func labeledOutput(content ...labeledContent) string { + longestLabel := 0 + for _, v := range content { + if len(v.label) > longestLabel { + longestLabel = len(v.label) + } + } + var output string + for _, v := range content { + output += "\t" + v.label + ":" + strings.Repeat(" ", longestLabel-len(v.label)) + "\t" + indentMessageLines(v.content, longestLabel) + "\n" + } + return output +} + +// Implements asserts that an object is implemented by the specified interface. +// +// assert.Implements(t, (*MyInterface)(nil), new(MyObject)) +func Implements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + interfaceType := reflect.TypeOf(interfaceObject).Elem() + + if object == nil { + return Fail(t, fmt.Sprintf("Cannot check if nil implements %v", interfaceType), msgAndArgs...) + } + if !reflect.TypeOf(object).Implements(interfaceType) { + return Fail(t, fmt.Sprintf("%T must implement %v", object, interfaceType), msgAndArgs...) + } + + return true +} + +// IsType asserts that the specified objects are of the same type. +func IsType(t TestingT, expectedType interface{}, object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + + if !ObjectsAreEqual(reflect.TypeOf(object), reflect.TypeOf(expectedType)) { + return Fail(t, fmt.Sprintf("Object expected to be of type %v, but was %v", reflect.TypeOf(expectedType), reflect.TypeOf(object)), msgAndArgs...) + } + + return true +} + +// Equal asserts that two objects are equal. +// +// assert.Equal(t, 123, 123) +// +// Pointer variable equality is determined based on the equality of the +// referenced values (as opposed to the memory addresses). Function equality +// cannot be determined and will always fail. +func Equal(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if err := validateEqualArgs(expected, actual); err != nil { + return Fail(t, fmt.Sprintf("Invalid operation: %#v == %#v (%s)", + expected, actual, err), msgAndArgs...) + } + + if !ObjectsAreEqual(expected, actual) { + diff := diff(expected, actual) + expected, actual = formatUnequalValues(expected, actual) + return Fail(t, fmt.Sprintf("Not equal: \n"+ + "expected: %s\n"+ + "actual : %s%s", expected, actual, diff), msgAndArgs...) + } + + return true + +} + +// Same asserts that two pointers reference the same object. +// +// assert.Same(t, ptr1, ptr2) +// +// Both arguments must be pointer variables. Pointer variable sameness is +// determined based on the equality of both type and value. +func Same(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + + expectedPtr, actualPtr := reflect.ValueOf(expected), reflect.ValueOf(actual) + if expectedPtr.Kind() != reflect.Ptr || actualPtr.Kind() != reflect.Ptr { + return Fail(t, "Invalid operation: both arguments must be pointers", msgAndArgs...) + } + + expectedType, actualType := reflect.TypeOf(expected), reflect.TypeOf(actual) + if expectedType != actualType { + return Fail(t, fmt.Sprintf("Pointer expected to be of type %v, but was %v", + expectedType, actualType), msgAndArgs...) + } + + if expected != actual { + return Fail(t, fmt.Sprintf("Not same: \n"+ + "expected: %p %#v\n"+ + "actual : %p %#v", expected, expected, actual, actual), msgAndArgs...) + } + + return true +} + +// formatUnequalValues takes two values of arbitrary types and returns string +// representations appropriate to be presented to the user. +// +// If the values are not of like type, the returned strings will be prefixed +// with the type name, and the value will be enclosed in parenthesis similar +// to a type conversion in the Go grammar. +func formatUnequalValues(expected, actual interface{}) (e string, a string) { + if reflect.TypeOf(expected) != reflect.TypeOf(actual) { + return fmt.Sprintf("%T(%#v)", expected, expected), + fmt.Sprintf("%T(%#v)", actual, actual) + } + + return fmt.Sprintf("%#v", expected), + fmt.Sprintf("%#v", actual) +} + +// EqualValues asserts that two objects are equal or convertable to the same types +// and equal. +// +// assert.EqualValues(t, uint32(123), int32(123)) +func EqualValues(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + + if !ObjectsAreEqualValues(expected, actual) { + diff := diff(expected, actual) + expected, actual = formatUnequalValues(expected, actual) + return Fail(t, fmt.Sprintf("Not equal: \n"+ + "expected: %s\n"+ + "actual : %s%s", expected, actual, diff), msgAndArgs...) + } + + return true + +} + +// Exactly asserts that two objects are equal in value and type. +// +// assert.Exactly(t, int32(123), int64(123)) +func Exactly(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + + aType := reflect.TypeOf(expected) + bType := reflect.TypeOf(actual) + + if aType != bType { + return Fail(t, fmt.Sprintf("Types expected to match exactly\n\t%v != %v", aType, bType), msgAndArgs...) + } + + return Equal(t, expected, actual, msgAndArgs...) + +} + +// NotNil asserts that the specified object is not nil. +// +// assert.NotNil(t, err) +func NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if !isNil(object) { + return true + } + return Fail(t, "Expected value not to be nil.", msgAndArgs...) +} + +// containsKind checks if a specified kind in the slice of kinds. +func containsKind(kinds []reflect.Kind, kind reflect.Kind) bool { + for i := 0; i < len(kinds); i++ { + if kind == kinds[i] { + return true + } + } + + return false +} + +// isNil checks if a specified object is nil or not, without Failing. +func isNil(object interface{}) bool { + if object == nil { + return true + } + + value := reflect.ValueOf(object) + kind := value.Kind() + isNilableKind := containsKind( + []reflect.Kind{ + reflect.Chan, reflect.Func, + reflect.Interface, reflect.Map, + reflect.Ptr, reflect.Slice}, + kind) + + if isNilableKind && value.IsNil() { + return true + } + + return false +} + +// Nil asserts that the specified object is nil. +// +// assert.Nil(t, err) +func Nil(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if isNil(object) { + return true + } + return Fail(t, fmt.Sprintf("Expected nil, but got: %#v", object), msgAndArgs...) +} + +// isEmpty gets whether the specified object is considered empty or not. +func isEmpty(object interface{}) bool { + + // get nil case out of the way + if object == nil { + return true + } + + objValue := reflect.ValueOf(object) + + switch objValue.Kind() { + // collection types are empty when they have no element + case reflect.Array, reflect.Chan, reflect.Map, reflect.Slice: + return objValue.Len() == 0 + // pointers are empty if nil or if the value they point to is empty + case reflect.Ptr: + if objValue.IsNil() { + return true + } + deref := objValue.Elem().Interface() + return isEmpty(deref) + // for all other types, compare against the zero value + default: + zero := reflect.Zero(objValue.Type()) + return reflect.DeepEqual(object, zero.Interface()) + } +} + +// Empty asserts that the specified object is empty. I.e. nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// assert.Empty(t, obj) +func Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + + pass := isEmpty(object) + if !pass { + Fail(t, fmt.Sprintf("Should be empty, but was %v", object), msgAndArgs...) + } + + return pass + +} + +// NotEmpty asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// if assert.NotEmpty(t, obj) { +// assert.Equal(t, "two", obj[1]) +// } +func NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + + pass := !isEmpty(object) + if !pass { + Fail(t, fmt.Sprintf("Should NOT be empty, but was %v", object), msgAndArgs...) + } + + return pass + +} + +// getLen try to get length of object. +// return (false, 0) if impossible. +func getLen(x interface{}) (ok bool, length int) { + v := reflect.ValueOf(x) + defer func() { + if e := recover(); e != nil { + ok = false + } + }() + return true, v.Len() +} + +// Len asserts that the specified object has specific length. +// Len also fails if the object has a type that len() not accept. +// +// assert.Len(t, mySlice, 3) +func Len(t TestingT, object interface{}, length int, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + ok, l := getLen(object) + if !ok { + return Fail(t, fmt.Sprintf("\"%s\" could not be applied builtin len()", object), msgAndArgs...) + } + + if l != length { + return Fail(t, fmt.Sprintf("\"%s\" should have %d item(s), but has %d", object, length, l), msgAndArgs...) + } + return true +} + +// True asserts that the specified value is true. +// +// assert.True(t, myBool) +func True(t TestingT, value bool, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if h, ok := t.(interface { + Helper() + }); ok { + h.Helper() + } + + if value != true { + return Fail(t, "Should be true", msgAndArgs...) + } + + return true + +} + +// False asserts that the specified value is false. +// +// assert.False(t, myBool) +func False(t TestingT, value bool, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + + if value != false { + return Fail(t, "Should be false", msgAndArgs...) + } + + return true + +} + +// NotEqual asserts that the specified values are NOT equal. +// +// assert.NotEqual(t, obj1, obj2) +// +// Pointer variable equality is determined based on the equality of the +// referenced values (as opposed to the memory addresses). +func NotEqual(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if err := validateEqualArgs(expected, actual); err != nil { + return Fail(t, fmt.Sprintf("Invalid operation: %#v != %#v (%s)", + expected, actual, err), msgAndArgs...) + } + + if ObjectsAreEqual(expected, actual) { + return Fail(t, fmt.Sprintf("Should not be: %#v\n", actual), msgAndArgs...) + } + + return true + +} + +// containsElement try loop over the list check if the list includes the element. +// return (false, false) if impossible. +// return (true, false) if element was not found. +// return (true, true) if element was found. +func includeElement(list interface{}, element interface{}) (ok, found bool) { + + listValue := reflect.ValueOf(list) + listKind := reflect.TypeOf(list).Kind() + defer func() { + if e := recover(); e != nil { + ok = false + found = false + } + }() + + if listKind == reflect.String { + elementValue := reflect.ValueOf(element) + return true, strings.Contains(listValue.String(), elementValue.String()) + } + + if listKind == reflect.Map { + mapKeys := listValue.MapKeys() + for i := 0; i < len(mapKeys); i++ { + if ObjectsAreEqual(mapKeys[i].Interface(), element) { + return true, true + } + } + return true, false + } + + for i := 0; i < listValue.Len(); i++ { + if ObjectsAreEqual(listValue.Index(i).Interface(), element) { + return true, true + } + } + return true, false + +} + +// Contains asserts that the specified string, list(array, slice...) or map contains the +// specified substring or element. +// +// assert.Contains(t, "Hello World", "World") +// assert.Contains(t, ["Hello", "World"], "World") +// assert.Contains(t, {"Hello": "World"}, "Hello") +func Contains(t TestingT, s, contains interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + + ok, found := includeElement(s, contains) + if !ok { + return Fail(t, fmt.Sprintf("\"%s\" could not be applied builtin len()", s), msgAndArgs...) + } + if !found { + return Fail(t, fmt.Sprintf("\"%s\" does not contain \"%s\"", s, contains), msgAndArgs...) + } + + return true + +} + +// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the +// specified substring or element. +// +// assert.NotContains(t, "Hello World", "Earth") +// assert.NotContains(t, ["Hello", "World"], "Earth") +// assert.NotContains(t, {"Hello": "World"}, "Earth") +func NotContains(t TestingT, s, contains interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + + ok, found := includeElement(s, contains) + if !ok { + return Fail(t, fmt.Sprintf("\"%s\" could not be applied builtin len()", s), msgAndArgs...) + } + if found { + return Fail(t, fmt.Sprintf("\"%s\" should not contain \"%s\"", s, contains), msgAndArgs...) + } + + return true + +} + +// Subset asserts that the specified list(array, slice...) contains all +// elements given in the specified subset(array, slice...). +// +// assert.Subset(t, [1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]") +func Subset(t TestingT, list, subset interface{}, msgAndArgs ...interface{}) (ok bool) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if subset == nil { + return true // we consider nil to be equal to the nil set + } + + subsetValue := reflect.ValueOf(subset) + defer func() { + if e := recover(); e != nil { + ok = false + } + }() + + listKind := reflect.TypeOf(list).Kind() + subsetKind := reflect.TypeOf(subset).Kind() + + if listKind != reflect.Array && listKind != reflect.Slice { + return Fail(t, fmt.Sprintf("%q has an unsupported type %s", list, listKind), msgAndArgs...) + } + + if subsetKind != reflect.Array && subsetKind != reflect.Slice { + return Fail(t, fmt.Sprintf("%q has an unsupported type %s", subset, subsetKind), msgAndArgs...) + } + + for i := 0; i < subsetValue.Len(); i++ { + element := subsetValue.Index(i).Interface() + ok, found := includeElement(list, element) + if !ok { + return Fail(t, fmt.Sprintf("\"%s\" could not be applied builtin len()", list), msgAndArgs...) + } + if !found { + return Fail(t, fmt.Sprintf("\"%s\" does not contain \"%s\"", list, element), msgAndArgs...) + } + } + + return true +} + +// NotSubset asserts that the specified list(array, slice...) contains not all +// elements given in the specified subset(array, slice...). +// +// assert.NotSubset(t, [1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]") +func NotSubset(t TestingT, list, subset interface{}, msgAndArgs ...interface{}) (ok bool) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if subset == nil { + return Fail(t, fmt.Sprintf("nil is the empty set which is a subset of every set"), msgAndArgs...) + } + + subsetValue := reflect.ValueOf(subset) + defer func() { + if e := recover(); e != nil { + ok = false + } + }() + + listKind := reflect.TypeOf(list).Kind() + subsetKind := reflect.TypeOf(subset).Kind() + + if listKind != reflect.Array && listKind != reflect.Slice { + return Fail(t, fmt.Sprintf("%q has an unsupported type %s", list, listKind), msgAndArgs...) + } + + if subsetKind != reflect.Array && subsetKind != reflect.Slice { + return Fail(t, fmt.Sprintf("%q has an unsupported type %s", subset, subsetKind), msgAndArgs...) + } + + for i := 0; i < subsetValue.Len(); i++ { + element := subsetValue.Index(i).Interface() + ok, found := includeElement(list, element) + if !ok { + return Fail(t, fmt.Sprintf("\"%s\" could not be applied builtin len()", list), msgAndArgs...) + } + if !found { + return true + } + } + + return Fail(t, fmt.Sprintf("%q is a subset of %q", subset, list), msgAndArgs...) +} + +// ElementsMatch asserts that the specified listA(array, slice...) is equal to specified +// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, +// the number of appearances of each of them in both lists should match. +// +// assert.ElementsMatch(t, [1, 3, 2, 3], [1, 3, 3, 2]) +func ElementsMatch(t TestingT, listA, listB interface{}, msgAndArgs ...interface{}) (ok bool) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if isEmpty(listA) && isEmpty(listB) { + return true + } + + aKind := reflect.TypeOf(listA).Kind() + bKind := reflect.TypeOf(listB).Kind() + + if aKind != reflect.Array && aKind != reflect.Slice { + return Fail(t, fmt.Sprintf("%q has an unsupported type %s", listA, aKind), msgAndArgs...) + } + + if bKind != reflect.Array && bKind != reflect.Slice { + return Fail(t, fmt.Sprintf("%q has an unsupported type %s", listB, bKind), msgAndArgs...) + } + + aValue := reflect.ValueOf(listA) + bValue := reflect.ValueOf(listB) + + aLen := aValue.Len() + bLen := bValue.Len() + + if aLen != bLen { + return Fail(t, fmt.Sprintf("lengths don't match: %d != %d", aLen, bLen), msgAndArgs...) + } + + // Mark indexes in bValue that we already used + visited := make([]bool, bLen) + for i := 0; i < aLen; i++ { + element := aValue.Index(i).Interface() + found := false + for j := 0; j < bLen; j++ { + if visited[j] { + continue + } + if ObjectsAreEqual(bValue.Index(j).Interface(), element) { + visited[j] = true + found = true + break + } + } + if !found { + return Fail(t, fmt.Sprintf("element %s appears more times in %s than in %s", element, aValue, bValue), msgAndArgs...) + } + } + + return true +} + +// Condition uses a Comparison to assert a complex condition. +func Condition(t TestingT, comp Comparison, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + result := comp() + if !result { + Fail(t, "Condition failed!", msgAndArgs...) + } + return result +} + +// PanicTestFunc defines a func that should be passed to the assert.Panics and assert.NotPanics +// methods, and represents a simple func that takes no arguments, and returns nothing. +type PanicTestFunc func() + +// didPanic returns true if the function passed to it panics. Otherwise, it returns false. +func didPanic(f PanicTestFunc) (bool, interface{}) { + + didPanic := false + var message interface{} + func() { + + defer func() { + if message = recover(); message != nil { + didPanic = true + } + }() + + // call the target function + f() + + }() + + return didPanic, message + +} + +// Panics asserts that the code inside the specified PanicTestFunc panics. +// +// assert.Panics(t, func(){ GoCrazy() }) +func Panics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + + if funcDidPanic, panicValue := didPanic(f); !funcDidPanic { + return Fail(t, fmt.Sprintf("func %#v should panic\n\tPanic value:\t%#v", f, panicValue), msgAndArgs...) + } + + return true +} + +// PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that +// the recovered panic value equals the expected panic value. +// +// assert.PanicsWithValue(t, "crazy error", func(){ GoCrazy() }) +func PanicsWithValue(t TestingT, expected interface{}, f PanicTestFunc, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + + funcDidPanic, panicValue := didPanic(f) + if !funcDidPanic { + return Fail(t, fmt.Sprintf("func %#v should panic\n\tPanic value:\t%#v", f, panicValue), msgAndArgs...) + } + if panicValue != expected { + return Fail(t, fmt.Sprintf("func %#v should panic with value:\t%#v\n\tPanic value:\t%#v", f, expected, panicValue), msgAndArgs...) + } + + return true +} + +// NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic. +// +// assert.NotPanics(t, func(){ RemainCalm() }) +func NotPanics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + + if funcDidPanic, panicValue := didPanic(f); funcDidPanic { + return Fail(t, fmt.Sprintf("func %#v should not panic\n\tPanic value:\t%v", f, panicValue), msgAndArgs...) + } + + return true +} + +// WithinDuration asserts that the two times are within duration delta of each other. +// +// assert.WithinDuration(t, time.Now(), time.Now(), 10*time.Second) +func WithinDuration(t TestingT, expected, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + + dt := expected.Sub(actual) + if dt < -delta || dt > delta { + return Fail(t, fmt.Sprintf("Max difference between %v and %v allowed is %v, but difference was %v", expected, actual, delta, dt), msgAndArgs...) + } + + return true +} + +func toFloat(x interface{}) (float64, bool) { + var xf float64 + xok := true + + switch xn := x.(type) { + case uint8: + xf = float64(xn) + case uint16: + xf = float64(xn) + case uint32: + xf = float64(xn) + case uint64: + xf = float64(xn) + case int: + xf = float64(xn) + case int8: + xf = float64(xn) + case int16: + xf = float64(xn) + case int32: + xf = float64(xn) + case int64: + xf = float64(xn) + case float32: + xf = float64(xn) + case float64: + xf = float64(xn) + case time.Duration: + xf = float64(xn) + default: + xok = false + } + + return xf, xok +} + +// InDelta asserts that the two numerals are within delta of each other. +// +// assert.InDelta(t, math.Pi, (22 / 7.0), 0.01) +func InDelta(t TestingT, expected, actual interface{}, delta float64, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + + af, aok := toFloat(expected) + bf, bok := toFloat(actual) + + if !aok || !bok { + return Fail(t, fmt.Sprintf("Parameters must be numerical"), msgAndArgs...) + } + + if math.IsNaN(af) { + return Fail(t, fmt.Sprintf("Expected must not be NaN"), msgAndArgs...) + } + + if math.IsNaN(bf) { + return Fail(t, fmt.Sprintf("Expected %v with delta %v, but was NaN", expected, delta), msgAndArgs...) + } + + dt := af - bf + if dt < -delta || dt > delta { + return Fail(t, fmt.Sprintf("Max difference between %v and %v allowed is %v, but difference was %v", expected, actual, delta, dt), msgAndArgs...) + } + + return true +} + +// InDeltaSlice is the same as InDelta, except it compares two slices. +func InDeltaSlice(t TestingT, expected, actual interface{}, delta float64, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if expected == nil || actual == nil || + reflect.TypeOf(actual).Kind() != reflect.Slice || + reflect.TypeOf(expected).Kind() != reflect.Slice { + return Fail(t, fmt.Sprintf("Parameters must be slice"), msgAndArgs...) + } + + actualSlice := reflect.ValueOf(actual) + expectedSlice := reflect.ValueOf(expected) + + for i := 0; i < actualSlice.Len(); i++ { + result := InDelta(t, actualSlice.Index(i).Interface(), expectedSlice.Index(i).Interface(), delta, msgAndArgs...) + if !result { + return result + } + } + + return true +} + +// InDeltaMapValues is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys. +func InDeltaMapValues(t TestingT, expected, actual interface{}, delta float64, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if expected == nil || actual == nil || + reflect.TypeOf(actual).Kind() != reflect.Map || + reflect.TypeOf(expected).Kind() != reflect.Map { + return Fail(t, "Arguments must be maps", msgAndArgs...) + } + + expectedMap := reflect.ValueOf(expected) + actualMap := reflect.ValueOf(actual) + + if expectedMap.Len() != actualMap.Len() { + return Fail(t, "Arguments must have the same number of keys", msgAndArgs...) + } + + for _, k := range expectedMap.MapKeys() { + ev := expectedMap.MapIndex(k) + av := actualMap.MapIndex(k) + + if !ev.IsValid() { + return Fail(t, fmt.Sprintf("missing key %q in expected map", k), msgAndArgs...) + } + + if !av.IsValid() { + return Fail(t, fmt.Sprintf("missing key %q in actual map", k), msgAndArgs...) + } + + if !InDelta( + t, + ev.Interface(), + av.Interface(), + delta, + msgAndArgs..., + ) { + return false + } + } + + return true +} + +func calcRelativeError(expected, actual interface{}) (float64, error) { + af, aok := toFloat(expected) + if !aok { + return 0, fmt.Errorf("expected value %q cannot be converted to float", expected) + } + if af == 0 { + return 0, fmt.Errorf("expected value must have a value other than zero to calculate the relative error") + } + bf, bok := toFloat(actual) + if !bok { + return 0, fmt.Errorf("actual value %q cannot be converted to float", actual) + } + + return math.Abs(af-bf) / math.Abs(af), nil +} + +// InEpsilon asserts that expected and actual have a relative error less than epsilon +func InEpsilon(t TestingT, expected, actual interface{}, epsilon float64, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + actualEpsilon, err := calcRelativeError(expected, actual) + if err != nil { + return Fail(t, err.Error(), msgAndArgs...) + } + if actualEpsilon > epsilon { + return Fail(t, fmt.Sprintf("Relative error is too high: %#v (expected)\n"+ + " < %#v (actual)", epsilon, actualEpsilon), msgAndArgs...) + } + + return true +} + +// InEpsilonSlice is the same as InEpsilon, except it compares each value from two slices. +func InEpsilonSlice(t TestingT, expected, actual interface{}, epsilon float64, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if expected == nil || actual == nil || + reflect.TypeOf(actual).Kind() != reflect.Slice || + reflect.TypeOf(expected).Kind() != reflect.Slice { + return Fail(t, fmt.Sprintf("Parameters must be slice"), msgAndArgs...) + } + + actualSlice := reflect.ValueOf(actual) + expectedSlice := reflect.ValueOf(expected) + + for i := 0; i < actualSlice.Len(); i++ { + result := InEpsilon(t, actualSlice.Index(i).Interface(), expectedSlice.Index(i).Interface(), epsilon) + if !result { + return result + } + } + + return true +} + +/* + Errors +*/ + +// NoError asserts that a function returned no error (i.e. `nil`). +// +// actualObj, err := SomeFunction() +// if assert.NoError(t, err) { +// assert.Equal(t, expectedObj, actualObj) +// } +func NoError(t TestingT, err error, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if err != nil { + return Fail(t, fmt.Sprintf("Received unexpected error:\n%+v", err), msgAndArgs...) + } + + return true +} + +// Error asserts that a function returned an error (i.e. not `nil`). +// +// actualObj, err := SomeFunction() +// if assert.Error(t, err) { +// assert.Equal(t, expectedError, err) +// } +func Error(t TestingT, err error, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + + if err == nil { + return Fail(t, "An error is expected but got nil.", msgAndArgs...) + } + + return true +} + +// EqualError asserts that a function returned an error (i.e. not `nil`) +// and that it is equal to the provided error. +// +// actualObj, err := SomeFunction() +// assert.EqualError(t, err, expectedErrorString) +func EqualError(t TestingT, theError error, errString string, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if !Error(t, theError, msgAndArgs...) { + return false + } + expected := errString + actual := theError.Error() + // don't need to use deep equals here, we know they are both strings + if expected != actual { + return Fail(t, fmt.Sprintf("Error message not equal:\n"+ + "expected: %q\n"+ + "actual : %q", expected, actual), msgAndArgs...) + } + return true +} + +// matchRegexp return true if a specified regexp matches a string. +func matchRegexp(rx interface{}, str interface{}) bool { + + var r *regexp.Regexp + if rr, ok := rx.(*regexp.Regexp); ok { + r = rr + } else { + r = regexp.MustCompile(fmt.Sprint(rx)) + } + + return (r.FindStringIndex(fmt.Sprint(str)) != nil) + +} + +// Regexp asserts that a specified regexp matches a string. +// +// assert.Regexp(t, regexp.MustCompile("start"), "it's starting") +// assert.Regexp(t, "start...$", "it's not starting") +func Regexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + + match := matchRegexp(rx, str) + + if !match { + Fail(t, fmt.Sprintf("Expect \"%v\" to match \"%v\"", str, rx), msgAndArgs...) + } + + return match +} + +// NotRegexp asserts that a specified regexp does not match a string. +// +// assert.NotRegexp(t, regexp.MustCompile("starts"), "it's starting") +// assert.NotRegexp(t, "^start", "it's not starting") +func NotRegexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + match := matchRegexp(rx, str) + + if match { + Fail(t, fmt.Sprintf("Expect \"%v\" to NOT match \"%v\"", str, rx), msgAndArgs...) + } + + return !match + +} + +// Zero asserts that i is the zero value for its type. +func Zero(t TestingT, i interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if i != nil && !reflect.DeepEqual(i, reflect.Zero(reflect.TypeOf(i)).Interface()) { + return Fail(t, fmt.Sprintf("Should be zero, but was %v", i), msgAndArgs...) + } + return true +} + +// NotZero asserts that i is not the zero value for its type. +func NotZero(t TestingT, i interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if i == nil || reflect.DeepEqual(i, reflect.Zero(reflect.TypeOf(i)).Interface()) { + return Fail(t, fmt.Sprintf("Should not be zero, but was %v", i), msgAndArgs...) + } + return true +} + +// FileExists checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file. +func FileExists(t TestingT, path string, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + info, err := os.Lstat(path) + if err != nil { + if os.IsNotExist(err) { + return Fail(t, fmt.Sprintf("unable to find file %q", path), msgAndArgs...) + } + return Fail(t, fmt.Sprintf("error when running os.Lstat(%q): %s", path, err), msgAndArgs...) + } + if info.IsDir() { + return Fail(t, fmt.Sprintf("%q is a directory", path), msgAndArgs...) + } + return true +} + +// DirExists checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists. +func DirExists(t TestingT, path string, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + info, err := os.Lstat(path) + if err != nil { + if os.IsNotExist(err) { + return Fail(t, fmt.Sprintf("unable to find file %q", path), msgAndArgs...) + } + return Fail(t, fmt.Sprintf("error when running os.Lstat(%q): %s", path, err), msgAndArgs...) + } + if !info.IsDir() { + return Fail(t, fmt.Sprintf("%q is a file", path), msgAndArgs...) + } + return true +} + +// JSONEq asserts that two JSON strings are equivalent. +// +// assert.JSONEq(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`) +func JSONEq(t TestingT, expected string, actual string, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + var expectedJSONAsInterface, actualJSONAsInterface interface{} + + if err := json.Unmarshal([]byte(expected), &expectedJSONAsInterface); err != nil { + return Fail(t, fmt.Sprintf("Expected value ('%s') is not valid json.\nJSON parsing error: '%s'", expected, err.Error()), msgAndArgs...) + } + + if err := json.Unmarshal([]byte(actual), &actualJSONAsInterface); err != nil { + return Fail(t, fmt.Sprintf("Input ('%s') needs to be valid json.\nJSON parsing error: '%s'", actual, err.Error()), msgAndArgs...) + } + + return Equal(t, expectedJSONAsInterface, actualJSONAsInterface, msgAndArgs...) +} + +// YAMLEq asserts that two YAML strings are equivalent. +func YAMLEq(t TestingT, expected string, actual string, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + var expectedYAMLAsInterface, actualYAMLAsInterface interface{} + + if err := yaml.Unmarshal([]byte(expected), &expectedYAMLAsInterface); err != nil { + return Fail(t, fmt.Sprintf("Expected value ('%s') is not valid yaml.\nYAML parsing error: '%s'", expected, err.Error()), msgAndArgs...) + } + + if err := yaml.Unmarshal([]byte(actual), &actualYAMLAsInterface); err != nil { + return Fail(t, fmt.Sprintf("Input ('%s') needs to be valid yaml.\nYAML error: '%s'", actual, err.Error()), msgAndArgs...) + } + + return Equal(t, expectedYAMLAsInterface, actualYAMLAsInterface, msgAndArgs...) +} + +func typeAndKind(v interface{}) (reflect.Type, reflect.Kind) { + t := reflect.TypeOf(v) + k := t.Kind() + + if k == reflect.Ptr { + t = t.Elem() + k = t.Kind() + } + return t, k +} + +// diff returns a diff of both values as long as both are of the same type and +// are a struct, map, slice, array or string. Otherwise it returns an empty string. +func diff(expected interface{}, actual interface{}) string { + if expected == nil || actual == nil { + return "" + } + + et, ek := typeAndKind(expected) + at, _ := typeAndKind(actual) + + if et != at { + return "" + } + + if ek != reflect.Struct && ek != reflect.Map && ek != reflect.Slice && ek != reflect.Array && ek != reflect.String { + return "" + } + + var e, a string + if et != reflect.TypeOf("") { + e = spewConfig.Sdump(expected) + a = spewConfig.Sdump(actual) + } else { + e = reflect.ValueOf(expected).String() + a = reflect.ValueOf(actual).String() + } + + diff, _ := difflib.GetUnifiedDiffString(difflib.UnifiedDiff{ + A: difflib.SplitLines(e), + B: difflib.SplitLines(a), + FromFile: "Expected", + FromDate: "", + ToFile: "Actual", + ToDate: "", + Context: 1, + }) + + return "\n\nDiff:\n" + diff +} + +// validateEqualArgs checks whether provided arguments can be safely used in the +// Equal/NotEqual functions. +func validateEqualArgs(expected, actual interface{}) error { + if isFunction(expected) || isFunction(actual) { + return errors.New("cannot take func type as argument") + } + return nil +} + +func isFunction(arg interface{}) bool { + if arg == nil { + return false + } + return reflect.TypeOf(arg).Kind() == reflect.Func +} + +var spewConfig = spew.ConfigState{ + Indent: " ", + DisablePointerAddresses: true, + DisableCapacities: true, + SortKeys: true, +} + +type tHelper interface { + Helper() +} + +// Eventually asserts that given condition will be met in waitFor time, +// periodically checking target function each tick. +// +// assert.Eventually(t, func() bool { return true; }, time.Second, 10*time.Millisecond) +func Eventually(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + + timer := time.NewTimer(waitFor) + ticker := time.NewTicker(tick) + checkPassed := make(chan bool) + defer timer.Stop() + defer ticker.Stop() + defer close(checkPassed) + for { + select { + case <-timer.C: + return Fail(t, "Condition never satisfied", msgAndArgs...) + case result := <-checkPassed: + if result { + return true + } + case <-ticker.C: + go func() { + checkPassed <- condition() + }() + } + } +} diff --git a/vendor/github.com/stretchr/testify/assert/doc.go b/vendor/github.com/stretchr/testify/assert/doc.go new file mode 100644 index 0000000..c9dccc4 --- /dev/null +++ b/vendor/github.com/stretchr/testify/assert/doc.go @@ -0,0 +1,45 @@ +// Package assert provides a set of comprehensive testing tools for use with the normal Go testing system. +// +// Example Usage +// +// The following is a complete example using assert in a standard test function: +// import ( +// "testing" +// "github.com/stretchr/testify/assert" +// ) +// +// func TestSomething(t *testing.T) { +// +// var a string = "Hello" +// var b string = "Hello" +// +// assert.Equal(t, a, b, "The two words should be the same.") +// +// } +// +// if you assert many times, use the format below: +// +// import ( +// "testing" +// "github.com/stretchr/testify/assert" +// ) +// +// func TestSomething(t *testing.T) { +// assert := assert.New(t) +// +// var a string = "Hello" +// var b string = "Hello" +// +// assert.Equal(a, b, "The two words should be the same.") +// } +// +// Assertions +// +// Assertions allow you to easily write test code, and are global funcs in the `assert` package. +// All assertion functions take, as the first argument, the `*testing.T` object provided by the +// testing framework. This allows the assertion funcs to write the failings and other details to +// the correct place. +// +// Every assertion function also takes an optional string message as the final argument, +// allowing custom error messages to be appended to the message the assertion method outputs. +package assert diff --git a/vendor/github.com/stretchr/testify/assert/errors.go b/vendor/github.com/stretchr/testify/assert/errors.go new file mode 100644 index 0000000..ac9dc9d --- /dev/null +++ b/vendor/github.com/stretchr/testify/assert/errors.go @@ -0,0 +1,10 @@ +package assert + +import ( + "errors" +) + +// AnError is an error instance useful for testing. If the code does not care +// about error specifics, and only needs to return the error for example, this +// error should be used to make the test code more readable. +var AnError = errors.New("assert.AnError general error for testing") diff --git a/vendor/github.com/stretchr/testify/assert/forward_assertions.go b/vendor/github.com/stretchr/testify/assert/forward_assertions.go new file mode 100644 index 0000000..9ad5685 --- /dev/null +++ b/vendor/github.com/stretchr/testify/assert/forward_assertions.go @@ -0,0 +1,16 @@ +package assert + +// Assertions provides assertion methods around the +// TestingT interface. +type Assertions struct { + t TestingT +} + +// New makes a new Assertions object for the specified TestingT. +func New(t TestingT) *Assertions { + return &Assertions{ + t: t, + } +} + +//go:generate go run ../_codegen/main.go -output-package=assert -template=assertion_forward.go.tmpl -include-format-funcs diff --git a/vendor/github.com/stretchr/testify/assert/http_assertions.go b/vendor/github.com/stretchr/testify/assert/http_assertions.go new file mode 100644 index 0000000..df46fa7 --- /dev/null +++ b/vendor/github.com/stretchr/testify/assert/http_assertions.go @@ -0,0 +1,143 @@ +package assert + +import ( + "fmt" + "net/http" + "net/http/httptest" + "net/url" + "strings" +) + +// httpCode is a helper that returns HTTP code of the response. It returns -1 and +// an error if building a new request fails. +func httpCode(handler http.HandlerFunc, method, url string, values url.Values) (int, error) { + w := httptest.NewRecorder() + req, err := http.NewRequest(method, url, nil) + if err != nil { + return -1, err + } + req.URL.RawQuery = values.Encode() + handler(w, req) + return w.Code, nil +} + +// HTTPSuccess asserts that a specified handler returns a success status code. +// +// assert.HTTPSuccess(t, myHandler, "POST", "http://www.google.com", nil) +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPSuccess(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + code, err := httpCode(handler, method, url, values) + if err != nil { + Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err)) + return false + } + + isSuccessCode := code >= http.StatusOK && code <= http.StatusPartialContent + if !isSuccessCode { + Fail(t, fmt.Sprintf("Expected HTTP success status code for %q but received %d", url+"?"+values.Encode(), code)) + } + + return isSuccessCode +} + +// HTTPRedirect asserts that a specified handler returns a redirect status code. +// +// assert.HTTPRedirect(t, myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPRedirect(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + code, err := httpCode(handler, method, url, values) + if err != nil { + Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err)) + return false + } + + isRedirectCode := code >= http.StatusMultipleChoices && code <= http.StatusTemporaryRedirect + if !isRedirectCode { + Fail(t, fmt.Sprintf("Expected HTTP redirect status code for %q but received %d", url+"?"+values.Encode(), code)) + } + + return isRedirectCode +} + +// HTTPError asserts that a specified handler returns an error status code. +// +// assert.HTTPError(t, myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPError(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + code, err := httpCode(handler, method, url, values) + if err != nil { + Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err)) + return false + } + + isErrorCode := code >= http.StatusBadRequest + if !isErrorCode { + Fail(t, fmt.Sprintf("Expected HTTP error status code for %q but received %d", url+"?"+values.Encode(), code)) + } + + return isErrorCode +} + +// HTTPBody is a helper that returns HTTP body of the response. It returns +// empty string if building a new request fails. +func HTTPBody(handler http.HandlerFunc, method, url string, values url.Values) string { + w := httptest.NewRecorder() + req, err := http.NewRequest(method, url+"?"+values.Encode(), nil) + if err != nil { + return "" + } + handler(w, req) + return w.Body.String() +} + +// HTTPBodyContains asserts that a specified handler returns a +// body that contains a string. +// +// assert.HTTPBodyContains(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky") +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPBodyContains(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + body := HTTPBody(handler, method, url, values) + + contains := strings.Contains(body, fmt.Sprint(str)) + if !contains { + Fail(t, fmt.Sprintf("Expected response body for \"%s\" to contain \"%s\" but found \"%s\"", url+"?"+values.Encode(), str, body)) + } + + return contains +} + +// HTTPBodyNotContains asserts that a specified handler returns a +// body that does not contain a string. +// +// assert.HTTPBodyNotContains(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky") +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPBodyNotContains(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + body := HTTPBody(handler, method, url, values) + + contains := strings.Contains(body, fmt.Sprint(str)) + if contains { + Fail(t, fmt.Sprintf("Expected response body for \"%s\" to NOT contain \"%s\" but found \"%s\"", url+"?"+values.Encode(), str, body)) + } + + return !contains +} diff --git a/vendor/github.com/stretchr/testify/require/doc.go b/vendor/github.com/stretchr/testify/require/doc.go new file mode 100644 index 0000000..169de39 --- /dev/null +++ b/vendor/github.com/stretchr/testify/require/doc.go @@ -0,0 +1,28 @@ +// Package require implements the same assertions as the `assert` package but +// stops test execution when a test fails. +// +// Example Usage +// +// The following is a complete example using require in a standard test function: +// import ( +// "testing" +// "github.com/stretchr/testify/require" +// ) +// +// func TestSomething(t *testing.T) { +// +// var a string = "Hello" +// var b string = "Hello" +// +// require.Equal(t, a, b, "The two words should be the same.") +// +// } +// +// Assertions +// +// The `require` package have same global functions as in the `assert` package, +// but instead of returning a boolean result they call `t.FailNow()`. +// +// Every assertion function also takes an optional string message as the final argument, +// allowing custom error messages to be appended to the message the assertion method outputs. +package require diff --git a/vendor/github.com/stretchr/testify/require/forward_requirements.go b/vendor/github.com/stretchr/testify/require/forward_requirements.go new file mode 100644 index 0000000..ac71d40 --- /dev/null +++ b/vendor/github.com/stretchr/testify/require/forward_requirements.go @@ -0,0 +1,16 @@ +package require + +// Assertions provides assertion methods around the +// TestingT interface. +type Assertions struct { + t TestingT +} + +// New makes a new Assertions object for the specified TestingT. +func New(t TestingT) *Assertions { + return &Assertions{ + t: t, + } +} + +//go:generate go run ../_codegen/main.go -output-package=require -template=require_forward.go.tmpl -include-format-funcs diff --git a/vendor/github.com/stretchr/testify/require/require.go b/vendor/github.com/stretchr/testify/require/require.go new file mode 100644 index 0000000..c5903f5 --- /dev/null +++ b/vendor/github.com/stretchr/testify/require/require.go @@ -0,0 +1,1433 @@ +/* +* CODE GENERATED AUTOMATICALLY WITH github.com/stretchr/testify/_codegen +* THIS FILE MUST NOT BE EDITED BY HAND + */ + +package require + +import ( + assert "github.com/stretchr/testify/assert" + http "net/http" + url "net/url" + time "time" +) + +// Condition uses a Comparison to assert a complex condition. +func Condition(t TestingT, comp assert.Comparison, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Condition(t, comp, msgAndArgs...) { + return + } + t.FailNow() +} + +// Conditionf uses a Comparison to assert a complex condition. +func Conditionf(t TestingT, comp assert.Comparison, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Conditionf(t, comp, msg, args...) { + return + } + t.FailNow() +} + +// Contains asserts that the specified string, list(array, slice...) or map contains the +// specified substring or element. +// +// assert.Contains(t, "Hello World", "World") +// assert.Contains(t, ["Hello", "World"], "World") +// assert.Contains(t, {"Hello": "World"}, "Hello") +func Contains(t TestingT, s interface{}, contains interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Contains(t, s, contains, msgAndArgs...) { + return + } + t.FailNow() +} + +// Containsf asserts that the specified string, list(array, slice...) or map contains the +// specified substring or element. +// +// assert.Containsf(t, "Hello World", "World", "error message %s", "formatted") +// assert.Containsf(t, ["Hello", "World"], "World", "error message %s", "formatted") +// assert.Containsf(t, {"Hello": "World"}, "Hello", "error message %s", "formatted") +func Containsf(t TestingT, s interface{}, contains interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Containsf(t, s, contains, msg, args...) { + return + } + t.FailNow() +} + +// DirExists checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists. +func DirExists(t TestingT, path string, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.DirExists(t, path, msgAndArgs...) { + return + } + t.FailNow() +} + +// DirExistsf checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists. +func DirExistsf(t TestingT, path string, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.DirExistsf(t, path, msg, args...) { + return + } + t.FailNow() +} + +// ElementsMatch asserts that the specified listA(array, slice...) is equal to specified +// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, +// the number of appearances of each of them in both lists should match. +// +// assert.ElementsMatch(t, [1, 3, 2, 3], [1, 3, 3, 2]) +func ElementsMatch(t TestingT, listA interface{}, listB interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.ElementsMatch(t, listA, listB, msgAndArgs...) { + return + } + t.FailNow() +} + +// ElementsMatchf asserts that the specified listA(array, slice...) is equal to specified +// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, +// the number of appearances of each of them in both lists should match. +// +// assert.ElementsMatchf(t, [1, 3, 2, 3], [1, 3, 3, 2], "error message %s", "formatted") +func ElementsMatchf(t TestingT, listA interface{}, listB interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.ElementsMatchf(t, listA, listB, msg, args...) { + return + } + t.FailNow() +} + +// Empty asserts that the specified object is empty. I.e. nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// assert.Empty(t, obj) +func Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Empty(t, object, msgAndArgs...) { + return + } + t.FailNow() +} + +// Emptyf asserts that the specified object is empty. I.e. nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// assert.Emptyf(t, obj, "error message %s", "formatted") +func Emptyf(t TestingT, object interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Emptyf(t, object, msg, args...) { + return + } + t.FailNow() +} + +// Equal asserts that two objects are equal. +// +// assert.Equal(t, 123, 123) +// +// Pointer variable equality is determined based on the equality of the +// referenced values (as opposed to the memory addresses). Function equality +// cannot be determined and will always fail. +func Equal(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Equal(t, expected, actual, msgAndArgs...) { + return + } + t.FailNow() +} + +// EqualError asserts that a function returned an error (i.e. not `nil`) +// and that it is equal to the provided error. +// +// actualObj, err := SomeFunction() +// assert.EqualError(t, err, expectedErrorString) +func EqualError(t TestingT, theError error, errString string, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.EqualError(t, theError, errString, msgAndArgs...) { + return + } + t.FailNow() +} + +// EqualErrorf asserts that a function returned an error (i.e. not `nil`) +// and that it is equal to the provided error. +// +// actualObj, err := SomeFunction() +// assert.EqualErrorf(t, err, expectedErrorString, "error message %s", "formatted") +func EqualErrorf(t TestingT, theError error, errString string, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.EqualErrorf(t, theError, errString, msg, args...) { + return + } + t.FailNow() +} + +// EqualValues asserts that two objects are equal or convertable to the same types +// and equal. +// +// assert.EqualValues(t, uint32(123), int32(123)) +func EqualValues(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.EqualValues(t, expected, actual, msgAndArgs...) { + return + } + t.FailNow() +} + +// EqualValuesf asserts that two objects are equal or convertable to the same types +// and equal. +// +// assert.EqualValuesf(t, uint32(123, "error message %s", "formatted"), int32(123)) +func EqualValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.EqualValuesf(t, expected, actual, msg, args...) { + return + } + t.FailNow() +} + +// Equalf asserts that two objects are equal. +// +// assert.Equalf(t, 123, 123, "error message %s", "formatted") +// +// Pointer variable equality is determined based on the equality of the +// referenced values (as opposed to the memory addresses). Function equality +// cannot be determined and will always fail. +func Equalf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Equalf(t, expected, actual, msg, args...) { + return + } + t.FailNow() +} + +// Error asserts that a function returned an error (i.e. not `nil`). +// +// actualObj, err := SomeFunction() +// if assert.Error(t, err) { +// assert.Equal(t, expectedError, err) +// } +func Error(t TestingT, err error, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Error(t, err, msgAndArgs...) { + return + } + t.FailNow() +} + +// Errorf asserts that a function returned an error (i.e. not `nil`). +// +// actualObj, err := SomeFunction() +// if assert.Errorf(t, err, "error message %s", "formatted") { +// assert.Equal(t, expectedErrorf, err) +// } +func Errorf(t TestingT, err error, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Errorf(t, err, msg, args...) { + return + } + t.FailNow() +} + +// Eventually asserts that given condition will be met in waitFor time, +// periodically checking target function each tick. +// +// assert.Eventually(t, func() bool { return true; }, time.Second, 10*time.Millisecond) +func Eventually(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) { + if assert.Eventually(t, condition, waitFor, tick, msgAndArgs...) { + return + } + if h, ok := t.(tHelper); ok { + h.Helper() + } + t.FailNow() +} + +// Eventuallyf asserts that given condition will be met in waitFor time, +// periodically checking target function each tick. +// +// assert.Eventuallyf(t, func() bool { return true; }, time.Second, 10*time.Millisecond, "error message %s", "formatted") +func Eventuallyf(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) { + if assert.Eventuallyf(t, condition, waitFor, tick, msg, args...) { + return + } + if h, ok := t.(tHelper); ok { + h.Helper() + } + t.FailNow() +} + +// Exactly asserts that two objects are equal in value and type. +// +// assert.Exactly(t, int32(123), int64(123)) +func Exactly(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Exactly(t, expected, actual, msgAndArgs...) { + return + } + t.FailNow() +} + +// Exactlyf asserts that two objects are equal in value and type. +// +// assert.Exactlyf(t, int32(123, "error message %s", "formatted"), int64(123)) +func Exactlyf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Exactlyf(t, expected, actual, msg, args...) { + return + } + t.FailNow() +} + +// Fail reports a failure through +func Fail(t TestingT, failureMessage string, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Fail(t, failureMessage, msgAndArgs...) { + return + } + t.FailNow() +} + +// FailNow fails test +func FailNow(t TestingT, failureMessage string, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.FailNow(t, failureMessage, msgAndArgs...) { + return + } + t.FailNow() +} + +// FailNowf fails test +func FailNowf(t TestingT, failureMessage string, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.FailNowf(t, failureMessage, msg, args...) { + return + } + t.FailNow() +} + +// Failf reports a failure through +func Failf(t TestingT, failureMessage string, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Failf(t, failureMessage, msg, args...) { + return + } + t.FailNow() +} + +// False asserts that the specified value is false. +// +// assert.False(t, myBool) +func False(t TestingT, value bool, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.False(t, value, msgAndArgs...) { + return + } + t.FailNow() +} + +// Falsef asserts that the specified value is false. +// +// assert.Falsef(t, myBool, "error message %s", "formatted") +func Falsef(t TestingT, value bool, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Falsef(t, value, msg, args...) { + return + } + t.FailNow() +} + +// FileExists checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file. +func FileExists(t TestingT, path string, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.FileExists(t, path, msgAndArgs...) { + return + } + t.FailNow() +} + +// FileExistsf checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file. +func FileExistsf(t TestingT, path string, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.FileExistsf(t, path, msg, args...) { + return + } + t.FailNow() +} + +// Greater asserts that the first element is greater than the second +// +// assert.Greater(t, 2, 1) +// assert.Greater(t, float64(2), float64(1)) +// assert.Greater(t, "b", "a") +func Greater(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Greater(t, e1, e2, msgAndArgs...) { + return + } + t.FailNow() +} + +// GreaterOrEqual asserts that the first element is greater than or equal to the second +// +// assert.GreaterOrEqual(t, 2, 1) +// assert.GreaterOrEqual(t, 2, 2) +// assert.GreaterOrEqual(t, "b", "a") +// assert.GreaterOrEqual(t, "b", "b") +func GreaterOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.GreaterOrEqual(t, e1, e2, msgAndArgs...) { + return + } + t.FailNow() +} + +// GreaterOrEqualf asserts that the first element is greater than or equal to the second +// +// assert.GreaterOrEqualf(t, 2, 1, "error message %s", "formatted") +// assert.GreaterOrEqualf(t, 2, 2, "error message %s", "formatted") +// assert.GreaterOrEqualf(t, "b", "a", "error message %s", "formatted") +// assert.GreaterOrEqualf(t, "b", "b", "error message %s", "formatted") +func GreaterOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.GreaterOrEqualf(t, e1, e2, msg, args...) { + return + } + t.FailNow() +} + +// Greaterf asserts that the first element is greater than the second +// +// assert.Greaterf(t, 2, 1, "error message %s", "formatted") +// assert.Greaterf(t, float64(2, "error message %s", "formatted"), float64(1)) +// assert.Greaterf(t, "b", "a", "error message %s", "formatted") +func Greaterf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Greaterf(t, e1, e2, msg, args...) { + return + } + t.FailNow() +} + +// HTTPBodyContains asserts that a specified handler returns a +// body that contains a string. +// +// assert.HTTPBodyContains(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky") +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPBodyContains(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.HTTPBodyContains(t, handler, method, url, values, str, msgAndArgs...) { + return + } + t.FailNow() +} + +// HTTPBodyContainsf asserts that a specified handler returns a +// body that contains a string. +// +// assert.HTTPBodyContainsf(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted") +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPBodyContainsf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.HTTPBodyContainsf(t, handler, method, url, values, str, msg, args...) { + return + } + t.FailNow() +} + +// HTTPBodyNotContains asserts that a specified handler returns a +// body that does not contain a string. +// +// assert.HTTPBodyNotContains(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky") +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPBodyNotContains(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.HTTPBodyNotContains(t, handler, method, url, values, str, msgAndArgs...) { + return + } + t.FailNow() +} + +// HTTPBodyNotContainsf asserts that a specified handler returns a +// body that does not contain a string. +// +// assert.HTTPBodyNotContainsf(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted") +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPBodyNotContainsf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.HTTPBodyNotContainsf(t, handler, method, url, values, str, msg, args...) { + return + } + t.FailNow() +} + +// HTTPError asserts that a specified handler returns an error status code. +// +// assert.HTTPError(t, myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPError(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.HTTPError(t, handler, method, url, values, msgAndArgs...) { + return + } + t.FailNow() +} + +// HTTPErrorf asserts that a specified handler returns an error status code. +// +// assert.HTTPErrorf(t, myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true, "error message %s", "formatted") or not (false). +func HTTPErrorf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.HTTPErrorf(t, handler, method, url, values, msg, args...) { + return + } + t.FailNow() +} + +// HTTPRedirect asserts that a specified handler returns a redirect status code. +// +// assert.HTTPRedirect(t, myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPRedirect(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.HTTPRedirect(t, handler, method, url, values, msgAndArgs...) { + return + } + t.FailNow() +} + +// HTTPRedirectf asserts that a specified handler returns a redirect status code. +// +// assert.HTTPRedirectf(t, myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true, "error message %s", "formatted") or not (false). +func HTTPRedirectf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.HTTPRedirectf(t, handler, method, url, values, msg, args...) { + return + } + t.FailNow() +} + +// HTTPSuccess asserts that a specified handler returns a success status code. +// +// assert.HTTPSuccess(t, myHandler, "POST", "http://www.google.com", nil) +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPSuccess(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.HTTPSuccess(t, handler, method, url, values, msgAndArgs...) { + return + } + t.FailNow() +} + +// HTTPSuccessf asserts that a specified handler returns a success status code. +// +// assert.HTTPSuccessf(t, myHandler, "POST", "http://www.google.com", nil, "error message %s", "formatted") +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPSuccessf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.HTTPSuccessf(t, handler, method, url, values, msg, args...) { + return + } + t.FailNow() +} + +// Implements asserts that an object is implemented by the specified interface. +// +// assert.Implements(t, (*MyInterface)(nil), new(MyObject)) +func Implements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Implements(t, interfaceObject, object, msgAndArgs...) { + return + } + t.FailNow() +} + +// Implementsf asserts that an object is implemented by the specified interface. +// +// assert.Implementsf(t, (*MyInterface, "error message %s", "formatted")(nil), new(MyObject)) +func Implementsf(t TestingT, interfaceObject interface{}, object interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Implementsf(t, interfaceObject, object, msg, args...) { + return + } + t.FailNow() +} + +// InDelta asserts that the two numerals are within delta of each other. +// +// assert.InDelta(t, math.Pi, (22 / 7.0), 0.01) +func InDelta(t TestingT, expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.InDelta(t, expected, actual, delta, msgAndArgs...) { + return + } + t.FailNow() +} + +// InDeltaMapValues is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys. +func InDeltaMapValues(t TestingT, expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.InDeltaMapValues(t, expected, actual, delta, msgAndArgs...) { + return + } + t.FailNow() +} + +// InDeltaMapValuesf is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys. +func InDeltaMapValuesf(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.InDeltaMapValuesf(t, expected, actual, delta, msg, args...) { + return + } + t.FailNow() +} + +// InDeltaSlice is the same as InDelta, except it compares two slices. +func InDeltaSlice(t TestingT, expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.InDeltaSlice(t, expected, actual, delta, msgAndArgs...) { + return + } + t.FailNow() +} + +// InDeltaSlicef is the same as InDelta, except it compares two slices. +func InDeltaSlicef(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.InDeltaSlicef(t, expected, actual, delta, msg, args...) { + return + } + t.FailNow() +} + +// InDeltaf asserts that the two numerals are within delta of each other. +// +// assert.InDeltaf(t, math.Pi, (22 / 7.0, "error message %s", "formatted"), 0.01) +func InDeltaf(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.InDeltaf(t, expected, actual, delta, msg, args...) { + return + } + t.FailNow() +} + +// InEpsilon asserts that expected and actual have a relative error less than epsilon +func InEpsilon(t TestingT, expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.InEpsilon(t, expected, actual, epsilon, msgAndArgs...) { + return + } + t.FailNow() +} + +// InEpsilonSlice is the same as InEpsilon, except it compares each value from two slices. +func InEpsilonSlice(t TestingT, expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.InEpsilonSlice(t, expected, actual, epsilon, msgAndArgs...) { + return + } + t.FailNow() +} + +// InEpsilonSlicef is the same as InEpsilon, except it compares each value from two slices. +func InEpsilonSlicef(t TestingT, expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.InEpsilonSlicef(t, expected, actual, epsilon, msg, args...) { + return + } + t.FailNow() +} + +// InEpsilonf asserts that expected and actual have a relative error less than epsilon +func InEpsilonf(t TestingT, expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.InEpsilonf(t, expected, actual, epsilon, msg, args...) { + return + } + t.FailNow() +} + +// IsType asserts that the specified objects are of the same type. +func IsType(t TestingT, expectedType interface{}, object interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.IsType(t, expectedType, object, msgAndArgs...) { + return + } + t.FailNow() +} + +// IsTypef asserts that the specified objects are of the same type. +func IsTypef(t TestingT, expectedType interface{}, object interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.IsTypef(t, expectedType, object, msg, args...) { + return + } + t.FailNow() +} + +// JSONEq asserts that two JSON strings are equivalent. +// +// assert.JSONEq(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`) +func JSONEq(t TestingT, expected string, actual string, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.JSONEq(t, expected, actual, msgAndArgs...) { + return + } + t.FailNow() +} + +// JSONEqf asserts that two JSON strings are equivalent. +// +// assert.JSONEqf(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`, "error message %s", "formatted") +func JSONEqf(t TestingT, expected string, actual string, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.JSONEqf(t, expected, actual, msg, args...) { + return + } + t.FailNow() +} + +// YAMLEq asserts that two YAML strings are equivalent. +func YAMLEq(t TestingT, expected string, actual string, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.YAMLEq(t, expected, actual, msgAndArgs...) { + return + } + t.FailNow() +} + +// YAMLEqf asserts that two YAML strings are equivalent. +func YAMLEqf(t TestingT, expected string, actual string, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.YAMLEqf(t, expected, actual, msg, args...) { + return + } + t.FailNow() +} + +// Len asserts that the specified object has specific length. +// Len also fails if the object has a type that len() not accept. +// +// assert.Len(t, mySlice, 3) +func Len(t TestingT, object interface{}, length int, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Len(t, object, length, msgAndArgs...) { + return + } + t.FailNow() +} + +// Lenf asserts that the specified object has specific length. +// Lenf also fails if the object has a type that len() not accept. +// +// assert.Lenf(t, mySlice, 3, "error message %s", "formatted") +func Lenf(t TestingT, object interface{}, length int, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Lenf(t, object, length, msg, args...) { + return + } + t.FailNow() +} + +// Less asserts that the first element is less than the second +// +// assert.Less(t, 1, 2) +// assert.Less(t, float64(1), float64(2)) +// assert.Less(t, "a", "b") +func Less(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Less(t, e1, e2, msgAndArgs...) { + return + } + t.FailNow() +} + +// LessOrEqual asserts that the first element is less than or equal to the second +// +// assert.LessOrEqual(t, 1, 2) +// assert.LessOrEqual(t, 2, 2) +// assert.LessOrEqual(t, "a", "b") +// assert.LessOrEqual(t, "b", "b") +func LessOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.LessOrEqual(t, e1, e2, msgAndArgs...) { + return + } + t.FailNow() +} + +// LessOrEqualf asserts that the first element is less than or equal to the second +// +// assert.LessOrEqualf(t, 1, 2, "error message %s", "formatted") +// assert.LessOrEqualf(t, 2, 2, "error message %s", "formatted") +// assert.LessOrEqualf(t, "a", "b", "error message %s", "formatted") +// assert.LessOrEqualf(t, "b", "b", "error message %s", "formatted") +func LessOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.LessOrEqualf(t, e1, e2, msg, args...) { + return + } + t.FailNow() +} + +// Lessf asserts that the first element is less than the second +// +// assert.Lessf(t, 1, 2, "error message %s", "formatted") +// assert.Lessf(t, float64(1, "error message %s", "formatted"), float64(2)) +// assert.Lessf(t, "a", "b", "error message %s", "formatted") +func Lessf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Lessf(t, e1, e2, msg, args...) { + return + } + t.FailNow() +} + +// Nil asserts that the specified object is nil. +// +// assert.Nil(t, err) +func Nil(t TestingT, object interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Nil(t, object, msgAndArgs...) { + return + } + t.FailNow() +} + +// Nilf asserts that the specified object is nil. +// +// assert.Nilf(t, err, "error message %s", "formatted") +func Nilf(t TestingT, object interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Nilf(t, object, msg, args...) { + return + } + t.FailNow() +} + +// NoError asserts that a function returned no error (i.e. `nil`). +// +// actualObj, err := SomeFunction() +// if assert.NoError(t, err) { +// assert.Equal(t, expectedObj, actualObj) +// } +func NoError(t TestingT, err error, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NoError(t, err, msgAndArgs...) { + return + } + t.FailNow() +} + +// NoErrorf asserts that a function returned no error (i.e. `nil`). +// +// actualObj, err := SomeFunction() +// if assert.NoErrorf(t, err, "error message %s", "formatted") { +// assert.Equal(t, expectedObj, actualObj) +// } +func NoErrorf(t TestingT, err error, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NoErrorf(t, err, msg, args...) { + return + } + t.FailNow() +} + +// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the +// specified substring or element. +// +// assert.NotContains(t, "Hello World", "Earth") +// assert.NotContains(t, ["Hello", "World"], "Earth") +// assert.NotContains(t, {"Hello": "World"}, "Earth") +func NotContains(t TestingT, s interface{}, contains interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NotContains(t, s, contains, msgAndArgs...) { + return + } + t.FailNow() +} + +// NotContainsf asserts that the specified string, list(array, slice...) or map does NOT contain the +// specified substring or element. +// +// assert.NotContainsf(t, "Hello World", "Earth", "error message %s", "formatted") +// assert.NotContainsf(t, ["Hello", "World"], "Earth", "error message %s", "formatted") +// assert.NotContainsf(t, {"Hello": "World"}, "Earth", "error message %s", "formatted") +func NotContainsf(t TestingT, s interface{}, contains interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NotContainsf(t, s, contains, msg, args...) { + return + } + t.FailNow() +} + +// NotEmpty asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// if assert.NotEmpty(t, obj) { +// assert.Equal(t, "two", obj[1]) +// } +func NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NotEmpty(t, object, msgAndArgs...) { + return + } + t.FailNow() +} + +// NotEmptyf asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// if assert.NotEmptyf(t, obj, "error message %s", "formatted") { +// assert.Equal(t, "two", obj[1]) +// } +func NotEmptyf(t TestingT, object interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NotEmptyf(t, object, msg, args...) { + return + } + t.FailNow() +} + +// NotEqual asserts that the specified values are NOT equal. +// +// assert.NotEqual(t, obj1, obj2) +// +// Pointer variable equality is determined based on the equality of the +// referenced values (as opposed to the memory addresses). +func NotEqual(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NotEqual(t, expected, actual, msgAndArgs...) { + return + } + t.FailNow() +} + +// NotEqualf asserts that the specified values are NOT equal. +// +// assert.NotEqualf(t, obj1, obj2, "error message %s", "formatted") +// +// Pointer variable equality is determined based on the equality of the +// referenced values (as opposed to the memory addresses). +func NotEqualf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NotEqualf(t, expected, actual, msg, args...) { + return + } + t.FailNow() +} + +// NotNil asserts that the specified object is not nil. +// +// assert.NotNil(t, err) +func NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NotNil(t, object, msgAndArgs...) { + return + } + t.FailNow() +} + +// NotNilf asserts that the specified object is not nil. +// +// assert.NotNilf(t, err, "error message %s", "formatted") +func NotNilf(t TestingT, object interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NotNilf(t, object, msg, args...) { + return + } + t.FailNow() +} + +// NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic. +// +// assert.NotPanics(t, func(){ RemainCalm() }) +func NotPanics(t TestingT, f assert.PanicTestFunc, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NotPanics(t, f, msgAndArgs...) { + return + } + t.FailNow() +} + +// NotPanicsf asserts that the code inside the specified PanicTestFunc does NOT panic. +// +// assert.NotPanicsf(t, func(){ RemainCalm() }, "error message %s", "formatted") +func NotPanicsf(t TestingT, f assert.PanicTestFunc, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NotPanicsf(t, f, msg, args...) { + return + } + t.FailNow() +} + +// NotRegexp asserts that a specified regexp does not match a string. +// +// assert.NotRegexp(t, regexp.MustCompile("starts"), "it's starting") +// assert.NotRegexp(t, "^start", "it's not starting") +func NotRegexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NotRegexp(t, rx, str, msgAndArgs...) { + return + } + t.FailNow() +} + +// NotRegexpf asserts that a specified regexp does not match a string. +// +// assert.NotRegexpf(t, regexp.MustCompile("starts", "error message %s", "formatted"), "it's starting") +// assert.NotRegexpf(t, "^start", "it's not starting", "error message %s", "formatted") +func NotRegexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NotRegexpf(t, rx, str, msg, args...) { + return + } + t.FailNow() +} + +// NotSubset asserts that the specified list(array, slice...) contains not all +// elements given in the specified subset(array, slice...). +// +// assert.NotSubset(t, [1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]") +func NotSubset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NotSubset(t, list, subset, msgAndArgs...) { + return + } + t.FailNow() +} + +// NotSubsetf asserts that the specified list(array, slice...) contains not all +// elements given in the specified subset(array, slice...). +// +// assert.NotSubsetf(t, [1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]", "error message %s", "formatted") +func NotSubsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NotSubsetf(t, list, subset, msg, args...) { + return + } + t.FailNow() +} + +// NotZero asserts that i is not the zero value for its type. +func NotZero(t TestingT, i interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NotZero(t, i, msgAndArgs...) { + return + } + t.FailNow() +} + +// NotZerof asserts that i is not the zero value for its type. +func NotZerof(t TestingT, i interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NotZerof(t, i, msg, args...) { + return + } + t.FailNow() +} + +// Panics asserts that the code inside the specified PanicTestFunc panics. +// +// assert.Panics(t, func(){ GoCrazy() }) +func Panics(t TestingT, f assert.PanicTestFunc, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Panics(t, f, msgAndArgs...) { + return + } + t.FailNow() +} + +// PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that +// the recovered panic value equals the expected panic value. +// +// assert.PanicsWithValue(t, "crazy error", func(){ GoCrazy() }) +func PanicsWithValue(t TestingT, expected interface{}, f assert.PanicTestFunc, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.PanicsWithValue(t, expected, f, msgAndArgs...) { + return + } + t.FailNow() +} + +// PanicsWithValuef asserts that the code inside the specified PanicTestFunc panics, and that +// the recovered panic value equals the expected panic value. +// +// assert.PanicsWithValuef(t, "crazy error", func(){ GoCrazy() }, "error message %s", "formatted") +func PanicsWithValuef(t TestingT, expected interface{}, f assert.PanicTestFunc, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.PanicsWithValuef(t, expected, f, msg, args...) { + return + } + t.FailNow() +} + +// Panicsf asserts that the code inside the specified PanicTestFunc panics. +// +// assert.Panicsf(t, func(){ GoCrazy() }, "error message %s", "formatted") +func Panicsf(t TestingT, f assert.PanicTestFunc, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Panicsf(t, f, msg, args...) { + return + } + t.FailNow() +} + +// Regexp asserts that a specified regexp matches a string. +// +// assert.Regexp(t, regexp.MustCompile("start"), "it's starting") +// assert.Regexp(t, "start...$", "it's not starting") +func Regexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Regexp(t, rx, str, msgAndArgs...) { + return + } + t.FailNow() +} + +// Regexpf asserts that a specified regexp matches a string. +// +// assert.Regexpf(t, regexp.MustCompile("start", "error message %s", "formatted"), "it's starting") +// assert.Regexpf(t, "start...$", "it's not starting", "error message %s", "formatted") +func Regexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Regexpf(t, rx, str, msg, args...) { + return + } + t.FailNow() +} + +// Same asserts that two pointers reference the same object. +// +// assert.Same(t, ptr1, ptr2) +// +// Both arguments must be pointer variables. Pointer variable sameness is +// determined based on the equality of both type and value. +func Same(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Same(t, expected, actual, msgAndArgs...) { + return + } + t.FailNow() +} + +// Samef asserts that two pointers reference the same object. +// +// assert.Samef(t, ptr1, ptr2, "error message %s", "formatted") +// +// Both arguments must be pointer variables. Pointer variable sameness is +// determined based on the equality of both type and value. +func Samef(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Samef(t, expected, actual, msg, args...) { + return + } + t.FailNow() +} + +// Subset asserts that the specified list(array, slice...) contains all +// elements given in the specified subset(array, slice...). +// +// assert.Subset(t, [1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]") +func Subset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Subset(t, list, subset, msgAndArgs...) { + return + } + t.FailNow() +} + +// Subsetf asserts that the specified list(array, slice...) contains all +// elements given in the specified subset(array, slice...). +// +// assert.Subsetf(t, [1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]", "error message %s", "formatted") +func Subsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Subsetf(t, list, subset, msg, args...) { + return + } + t.FailNow() +} + +// True asserts that the specified value is true. +// +// assert.True(t, myBool) +func True(t TestingT, value bool, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.True(t, value, msgAndArgs...) { + return + } + t.FailNow() +} + +// Truef asserts that the specified value is true. +// +// assert.Truef(t, myBool, "error message %s", "formatted") +func Truef(t TestingT, value bool, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Truef(t, value, msg, args...) { + return + } + t.FailNow() +} + +// WithinDuration asserts that the two times are within duration delta of each other. +// +// assert.WithinDuration(t, time.Now(), time.Now(), 10*time.Second) +func WithinDuration(t TestingT, expected time.Time, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.WithinDuration(t, expected, actual, delta, msgAndArgs...) { + return + } + t.FailNow() +} + +// WithinDurationf asserts that the two times are within duration delta of each other. +// +// assert.WithinDurationf(t, time.Now(), time.Now(), 10*time.Second, "error message %s", "formatted") +func WithinDurationf(t TestingT, expected time.Time, actual time.Time, delta time.Duration, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.WithinDurationf(t, expected, actual, delta, msg, args...) { + return + } + t.FailNow() +} + +// Zero asserts that i is the zero value for its type. +func Zero(t TestingT, i interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Zero(t, i, msgAndArgs...) { + return + } + t.FailNow() +} + +// Zerof asserts that i is the zero value for its type. +func Zerof(t TestingT, i interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Zerof(t, i, msg, args...) { + return + } + t.FailNow() +} diff --git a/vendor/github.com/stretchr/testify/require/require.go.tmpl b/vendor/github.com/stretchr/testify/require/require.go.tmpl new file mode 100644 index 0000000..55e42dd --- /dev/null +++ b/vendor/github.com/stretchr/testify/require/require.go.tmpl @@ -0,0 +1,6 @@ +{{.Comment}} +func {{.DocInfo.Name}}(t TestingT, {{.Params}}) { + if h, ok := t.(tHelper); ok { h.Helper() } + if assert.{{.DocInfo.Name}}(t, {{.ForwardedParams}}) { return } + t.FailNow() +} diff --git a/vendor/github.com/stretchr/testify/require/require_forward.go b/vendor/github.com/stretchr/testify/require/require_forward.go new file mode 100644 index 0000000..804fae0 --- /dev/null +++ b/vendor/github.com/stretchr/testify/require/require_forward.go @@ -0,0 +1,1121 @@ +/* +* CODE GENERATED AUTOMATICALLY WITH github.com/stretchr/testify/_codegen +* THIS FILE MUST NOT BE EDITED BY HAND + */ + +package require + +import ( + assert "github.com/stretchr/testify/assert" + http "net/http" + url "net/url" + time "time" +) + +// Condition uses a Comparison to assert a complex condition. +func (a *Assertions) Condition(comp assert.Comparison, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Condition(a.t, comp, msgAndArgs...) +} + +// Conditionf uses a Comparison to assert a complex condition. +func (a *Assertions) Conditionf(comp assert.Comparison, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Conditionf(a.t, comp, msg, args...) +} + +// Contains asserts that the specified string, list(array, slice...) or map contains the +// specified substring or element. +// +// a.Contains("Hello World", "World") +// a.Contains(["Hello", "World"], "World") +// a.Contains({"Hello": "World"}, "Hello") +func (a *Assertions) Contains(s interface{}, contains interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Contains(a.t, s, contains, msgAndArgs...) +} + +// Containsf asserts that the specified string, list(array, slice...) or map contains the +// specified substring or element. +// +// a.Containsf("Hello World", "World", "error message %s", "formatted") +// a.Containsf(["Hello", "World"], "World", "error message %s", "formatted") +// a.Containsf({"Hello": "World"}, "Hello", "error message %s", "formatted") +func (a *Assertions) Containsf(s interface{}, contains interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Containsf(a.t, s, contains, msg, args...) +} + +// DirExists checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists. +func (a *Assertions) DirExists(path string, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + DirExists(a.t, path, msgAndArgs...) +} + +// DirExistsf checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists. +func (a *Assertions) DirExistsf(path string, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + DirExistsf(a.t, path, msg, args...) +} + +// ElementsMatch asserts that the specified listA(array, slice...) is equal to specified +// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, +// the number of appearances of each of them in both lists should match. +// +// a.ElementsMatch([1, 3, 2, 3], [1, 3, 3, 2]) +func (a *Assertions) ElementsMatch(listA interface{}, listB interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + ElementsMatch(a.t, listA, listB, msgAndArgs...) +} + +// ElementsMatchf asserts that the specified listA(array, slice...) is equal to specified +// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, +// the number of appearances of each of them in both lists should match. +// +// a.ElementsMatchf([1, 3, 2, 3], [1, 3, 3, 2], "error message %s", "formatted") +func (a *Assertions) ElementsMatchf(listA interface{}, listB interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + ElementsMatchf(a.t, listA, listB, msg, args...) +} + +// Empty asserts that the specified object is empty. I.e. nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// a.Empty(obj) +func (a *Assertions) Empty(object interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Empty(a.t, object, msgAndArgs...) +} + +// Emptyf asserts that the specified object is empty. I.e. nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// a.Emptyf(obj, "error message %s", "formatted") +func (a *Assertions) Emptyf(object interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Emptyf(a.t, object, msg, args...) +} + +// Equal asserts that two objects are equal. +// +// a.Equal(123, 123) +// +// Pointer variable equality is determined based on the equality of the +// referenced values (as opposed to the memory addresses). Function equality +// cannot be determined and will always fail. +func (a *Assertions) Equal(expected interface{}, actual interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Equal(a.t, expected, actual, msgAndArgs...) +} + +// EqualError asserts that a function returned an error (i.e. not `nil`) +// and that it is equal to the provided error. +// +// actualObj, err := SomeFunction() +// a.EqualError(err, expectedErrorString) +func (a *Assertions) EqualError(theError error, errString string, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + EqualError(a.t, theError, errString, msgAndArgs...) +} + +// EqualErrorf asserts that a function returned an error (i.e. not `nil`) +// and that it is equal to the provided error. +// +// actualObj, err := SomeFunction() +// a.EqualErrorf(err, expectedErrorString, "error message %s", "formatted") +func (a *Assertions) EqualErrorf(theError error, errString string, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + EqualErrorf(a.t, theError, errString, msg, args...) +} + +// EqualValues asserts that two objects are equal or convertable to the same types +// and equal. +// +// a.EqualValues(uint32(123), int32(123)) +func (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + EqualValues(a.t, expected, actual, msgAndArgs...) +} + +// EqualValuesf asserts that two objects are equal or convertable to the same types +// and equal. +// +// a.EqualValuesf(uint32(123, "error message %s", "formatted"), int32(123)) +func (a *Assertions) EqualValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + EqualValuesf(a.t, expected, actual, msg, args...) +} + +// Equalf asserts that two objects are equal. +// +// a.Equalf(123, 123, "error message %s", "formatted") +// +// Pointer variable equality is determined based on the equality of the +// referenced values (as opposed to the memory addresses). Function equality +// cannot be determined and will always fail. +func (a *Assertions) Equalf(expected interface{}, actual interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Equalf(a.t, expected, actual, msg, args...) +} + +// Error asserts that a function returned an error (i.e. not `nil`). +// +// actualObj, err := SomeFunction() +// if a.Error(err) { +// assert.Equal(t, expectedError, err) +// } +func (a *Assertions) Error(err error, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Error(a.t, err, msgAndArgs...) +} + +// Errorf asserts that a function returned an error (i.e. not `nil`). +// +// actualObj, err := SomeFunction() +// if a.Errorf(err, "error message %s", "formatted") { +// assert.Equal(t, expectedErrorf, err) +// } +func (a *Assertions) Errorf(err error, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Errorf(a.t, err, msg, args...) +} + +// Eventually asserts that given condition will be met in waitFor time, +// periodically checking target function each tick. +// +// a.Eventually(func() bool { return true; }, time.Second, 10*time.Millisecond) +func (a *Assertions) Eventually(condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Eventually(a.t, condition, waitFor, tick, msgAndArgs...) +} + +// Eventuallyf asserts that given condition will be met in waitFor time, +// periodically checking target function each tick. +// +// a.Eventuallyf(func() bool { return true; }, time.Second, 10*time.Millisecond, "error message %s", "formatted") +func (a *Assertions) Eventuallyf(condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Eventuallyf(a.t, condition, waitFor, tick, msg, args...) +} + +// Exactly asserts that two objects are equal in value and type. +// +// a.Exactly(int32(123), int64(123)) +func (a *Assertions) Exactly(expected interface{}, actual interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Exactly(a.t, expected, actual, msgAndArgs...) +} + +// Exactlyf asserts that two objects are equal in value and type. +// +// a.Exactlyf(int32(123, "error message %s", "formatted"), int64(123)) +func (a *Assertions) Exactlyf(expected interface{}, actual interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Exactlyf(a.t, expected, actual, msg, args...) +} + +// Fail reports a failure through +func (a *Assertions) Fail(failureMessage string, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Fail(a.t, failureMessage, msgAndArgs...) +} + +// FailNow fails test +func (a *Assertions) FailNow(failureMessage string, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + FailNow(a.t, failureMessage, msgAndArgs...) +} + +// FailNowf fails test +func (a *Assertions) FailNowf(failureMessage string, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + FailNowf(a.t, failureMessage, msg, args...) +} + +// Failf reports a failure through +func (a *Assertions) Failf(failureMessage string, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Failf(a.t, failureMessage, msg, args...) +} + +// False asserts that the specified value is false. +// +// a.False(myBool) +func (a *Assertions) False(value bool, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + False(a.t, value, msgAndArgs...) +} + +// Falsef asserts that the specified value is false. +// +// a.Falsef(myBool, "error message %s", "formatted") +func (a *Assertions) Falsef(value bool, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Falsef(a.t, value, msg, args...) +} + +// FileExists checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file. +func (a *Assertions) FileExists(path string, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + FileExists(a.t, path, msgAndArgs...) +} + +// FileExistsf checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file. +func (a *Assertions) FileExistsf(path string, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + FileExistsf(a.t, path, msg, args...) +} + +// Greater asserts that the first element is greater than the second +// +// a.Greater(2, 1) +// a.Greater(float64(2), float64(1)) +// a.Greater("b", "a") +func (a *Assertions) Greater(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Greater(a.t, e1, e2, msgAndArgs...) +} + +// GreaterOrEqual asserts that the first element is greater than or equal to the second +// +// a.GreaterOrEqual(2, 1) +// a.GreaterOrEqual(2, 2) +// a.GreaterOrEqual("b", "a") +// a.GreaterOrEqual("b", "b") +func (a *Assertions) GreaterOrEqual(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + GreaterOrEqual(a.t, e1, e2, msgAndArgs...) +} + +// GreaterOrEqualf asserts that the first element is greater than or equal to the second +// +// a.GreaterOrEqualf(2, 1, "error message %s", "formatted") +// a.GreaterOrEqualf(2, 2, "error message %s", "formatted") +// a.GreaterOrEqualf("b", "a", "error message %s", "formatted") +// a.GreaterOrEqualf("b", "b", "error message %s", "formatted") +func (a *Assertions) GreaterOrEqualf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + GreaterOrEqualf(a.t, e1, e2, msg, args...) +} + +// Greaterf asserts that the first element is greater than the second +// +// a.Greaterf(2, 1, "error message %s", "formatted") +// a.Greaterf(float64(2, "error message %s", "formatted"), float64(1)) +// a.Greaterf("b", "a", "error message %s", "formatted") +func (a *Assertions) Greaterf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Greaterf(a.t, e1, e2, msg, args...) +} + +// HTTPBodyContains asserts that a specified handler returns a +// body that contains a string. +// +// a.HTTPBodyContains(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPBodyContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + HTTPBodyContains(a.t, handler, method, url, values, str, msgAndArgs...) +} + +// HTTPBodyContainsf asserts that a specified handler returns a +// body that contains a string. +// +// a.HTTPBodyContainsf(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPBodyContainsf(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + HTTPBodyContainsf(a.t, handler, method, url, values, str, msg, args...) +} + +// HTTPBodyNotContains asserts that a specified handler returns a +// body that does not contain a string. +// +// a.HTTPBodyNotContains(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPBodyNotContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + HTTPBodyNotContains(a.t, handler, method, url, values, str, msgAndArgs...) +} + +// HTTPBodyNotContainsf asserts that a specified handler returns a +// body that does not contain a string. +// +// a.HTTPBodyNotContainsf(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPBodyNotContainsf(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + HTTPBodyNotContainsf(a.t, handler, method, url, values, str, msg, args...) +} + +// HTTPError asserts that a specified handler returns an error status code. +// +// a.HTTPError(myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPError(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + HTTPError(a.t, handler, method, url, values, msgAndArgs...) +} + +// HTTPErrorf asserts that a specified handler returns an error status code. +// +// a.HTTPErrorf(myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true, "error message %s", "formatted") or not (false). +func (a *Assertions) HTTPErrorf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + HTTPErrorf(a.t, handler, method, url, values, msg, args...) +} + +// HTTPRedirect asserts that a specified handler returns a redirect status code. +// +// a.HTTPRedirect(myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPRedirect(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + HTTPRedirect(a.t, handler, method, url, values, msgAndArgs...) +} + +// HTTPRedirectf asserts that a specified handler returns a redirect status code. +// +// a.HTTPRedirectf(myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true, "error message %s", "formatted") or not (false). +func (a *Assertions) HTTPRedirectf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + HTTPRedirectf(a.t, handler, method, url, values, msg, args...) +} + +// HTTPSuccess asserts that a specified handler returns a success status code. +// +// a.HTTPSuccess(myHandler, "POST", "http://www.google.com", nil) +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPSuccess(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + HTTPSuccess(a.t, handler, method, url, values, msgAndArgs...) +} + +// HTTPSuccessf asserts that a specified handler returns a success status code. +// +// a.HTTPSuccessf(myHandler, "POST", "http://www.google.com", nil, "error message %s", "formatted") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPSuccessf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + HTTPSuccessf(a.t, handler, method, url, values, msg, args...) +} + +// Implements asserts that an object is implemented by the specified interface. +// +// a.Implements((*MyInterface)(nil), new(MyObject)) +func (a *Assertions) Implements(interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Implements(a.t, interfaceObject, object, msgAndArgs...) +} + +// Implementsf asserts that an object is implemented by the specified interface. +// +// a.Implementsf((*MyInterface, "error message %s", "formatted")(nil), new(MyObject)) +func (a *Assertions) Implementsf(interfaceObject interface{}, object interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Implementsf(a.t, interfaceObject, object, msg, args...) +} + +// InDelta asserts that the two numerals are within delta of each other. +// +// a.InDelta(math.Pi, (22 / 7.0), 0.01) +func (a *Assertions) InDelta(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + InDelta(a.t, expected, actual, delta, msgAndArgs...) +} + +// InDeltaMapValues is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys. +func (a *Assertions) InDeltaMapValues(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + InDeltaMapValues(a.t, expected, actual, delta, msgAndArgs...) +} + +// InDeltaMapValuesf is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys. +func (a *Assertions) InDeltaMapValuesf(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + InDeltaMapValuesf(a.t, expected, actual, delta, msg, args...) +} + +// InDeltaSlice is the same as InDelta, except it compares two slices. +func (a *Assertions) InDeltaSlice(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + InDeltaSlice(a.t, expected, actual, delta, msgAndArgs...) +} + +// InDeltaSlicef is the same as InDelta, except it compares two slices. +func (a *Assertions) InDeltaSlicef(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + InDeltaSlicef(a.t, expected, actual, delta, msg, args...) +} + +// InDeltaf asserts that the two numerals are within delta of each other. +// +// a.InDeltaf(math.Pi, (22 / 7.0, "error message %s", "formatted"), 0.01) +func (a *Assertions) InDeltaf(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + InDeltaf(a.t, expected, actual, delta, msg, args...) +} + +// InEpsilon asserts that expected and actual have a relative error less than epsilon +func (a *Assertions) InEpsilon(expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + InEpsilon(a.t, expected, actual, epsilon, msgAndArgs...) +} + +// InEpsilonSlice is the same as InEpsilon, except it compares each value from two slices. +func (a *Assertions) InEpsilonSlice(expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + InEpsilonSlice(a.t, expected, actual, epsilon, msgAndArgs...) +} + +// InEpsilonSlicef is the same as InEpsilon, except it compares each value from two slices. +func (a *Assertions) InEpsilonSlicef(expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + InEpsilonSlicef(a.t, expected, actual, epsilon, msg, args...) +} + +// InEpsilonf asserts that expected and actual have a relative error less than epsilon +func (a *Assertions) InEpsilonf(expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + InEpsilonf(a.t, expected, actual, epsilon, msg, args...) +} + +// IsType asserts that the specified objects are of the same type. +func (a *Assertions) IsType(expectedType interface{}, object interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + IsType(a.t, expectedType, object, msgAndArgs...) +} + +// IsTypef asserts that the specified objects are of the same type. +func (a *Assertions) IsTypef(expectedType interface{}, object interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + IsTypef(a.t, expectedType, object, msg, args...) +} + +// JSONEq asserts that two JSON strings are equivalent. +// +// a.JSONEq(`{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`) +func (a *Assertions) JSONEq(expected string, actual string, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + JSONEq(a.t, expected, actual, msgAndArgs...) +} + +// JSONEqf asserts that two JSON strings are equivalent. +// +// a.JSONEqf(`{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`, "error message %s", "formatted") +func (a *Assertions) JSONEqf(expected string, actual string, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + JSONEqf(a.t, expected, actual, msg, args...) +} + +// YAMLEq asserts that two YAML strings are equivalent. +func (a *Assertions) YAMLEq(expected string, actual string, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + YAMLEq(a.t, expected, actual, msgAndArgs...) +} + +// YAMLEqf asserts that two YAML strings are equivalent. +func (a *Assertions) YAMLEqf(expected string, actual string, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + YAMLEqf(a.t, expected, actual, msg, args...) +} + +// Len asserts that the specified object has specific length. +// Len also fails if the object has a type that len() not accept. +// +// a.Len(mySlice, 3) +func (a *Assertions) Len(object interface{}, length int, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Len(a.t, object, length, msgAndArgs...) +} + +// Lenf asserts that the specified object has specific length. +// Lenf also fails if the object has a type that len() not accept. +// +// a.Lenf(mySlice, 3, "error message %s", "formatted") +func (a *Assertions) Lenf(object interface{}, length int, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Lenf(a.t, object, length, msg, args...) +} + +// Less asserts that the first element is less than the second +// +// a.Less(1, 2) +// a.Less(float64(1), float64(2)) +// a.Less("a", "b") +func (a *Assertions) Less(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Less(a.t, e1, e2, msgAndArgs...) +} + +// LessOrEqual asserts that the first element is less than or equal to the second +// +// a.LessOrEqual(1, 2) +// a.LessOrEqual(2, 2) +// a.LessOrEqual("a", "b") +// a.LessOrEqual("b", "b") +func (a *Assertions) LessOrEqual(e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + LessOrEqual(a.t, e1, e2, msgAndArgs...) +} + +// LessOrEqualf asserts that the first element is less than or equal to the second +// +// a.LessOrEqualf(1, 2, "error message %s", "formatted") +// a.LessOrEqualf(2, 2, "error message %s", "formatted") +// a.LessOrEqualf("a", "b", "error message %s", "formatted") +// a.LessOrEqualf("b", "b", "error message %s", "formatted") +func (a *Assertions) LessOrEqualf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + LessOrEqualf(a.t, e1, e2, msg, args...) +} + +// Lessf asserts that the first element is less than the second +// +// a.Lessf(1, 2, "error message %s", "formatted") +// a.Lessf(float64(1, "error message %s", "formatted"), float64(2)) +// a.Lessf("a", "b", "error message %s", "formatted") +func (a *Assertions) Lessf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Lessf(a.t, e1, e2, msg, args...) +} + +// Nil asserts that the specified object is nil. +// +// a.Nil(err) +func (a *Assertions) Nil(object interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Nil(a.t, object, msgAndArgs...) +} + +// Nilf asserts that the specified object is nil. +// +// a.Nilf(err, "error message %s", "formatted") +func (a *Assertions) Nilf(object interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Nilf(a.t, object, msg, args...) +} + +// NoError asserts that a function returned no error (i.e. `nil`). +// +// actualObj, err := SomeFunction() +// if a.NoError(err) { +// assert.Equal(t, expectedObj, actualObj) +// } +func (a *Assertions) NoError(err error, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NoError(a.t, err, msgAndArgs...) +} + +// NoErrorf asserts that a function returned no error (i.e. `nil`). +// +// actualObj, err := SomeFunction() +// if a.NoErrorf(err, "error message %s", "formatted") { +// assert.Equal(t, expectedObj, actualObj) +// } +func (a *Assertions) NoErrorf(err error, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NoErrorf(a.t, err, msg, args...) +} + +// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the +// specified substring or element. +// +// a.NotContains("Hello World", "Earth") +// a.NotContains(["Hello", "World"], "Earth") +// a.NotContains({"Hello": "World"}, "Earth") +func (a *Assertions) NotContains(s interface{}, contains interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NotContains(a.t, s, contains, msgAndArgs...) +} + +// NotContainsf asserts that the specified string, list(array, slice...) or map does NOT contain the +// specified substring or element. +// +// a.NotContainsf("Hello World", "Earth", "error message %s", "formatted") +// a.NotContainsf(["Hello", "World"], "Earth", "error message %s", "formatted") +// a.NotContainsf({"Hello": "World"}, "Earth", "error message %s", "formatted") +func (a *Assertions) NotContainsf(s interface{}, contains interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NotContainsf(a.t, s, contains, msg, args...) +} + +// NotEmpty asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// if a.NotEmpty(obj) { +// assert.Equal(t, "two", obj[1]) +// } +func (a *Assertions) NotEmpty(object interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NotEmpty(a.t, object, msgAndArgs...) +} + +// NotEmptyf asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// if a.NotEmptyf(obj, "error message %s", "formatted") { +// assert.Equal(t, "two", obj[1]) +// } +func (a *Assertions) NotEmptyf(object interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NotEmptyf(a.t, object, msg, args...) +} + +// NotEqual asserts that the specified values are NOT equal. +// +// a.NotEqual(obj1, obj2) +// +// Pointer variable equality is determined based on the equality of the +// referenced values (as opposed to the memory addresses). +func (a *Assertions) NotEqual(expected interface{}, actual interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NotEqual(a.t, expected, actual, msgAndArgs...) +} + +// NotEqualf asserts that the specified values are NOT equal. +// +// a.NotEqualf(obj1, obj2, "error message %s", "formatted") +// +// Pointer variable equality is determined based on the equality of the +// referenced values (as opposed to the memory addresses). +func (a *Assertions) NotEqualf(expected interface{}, actual interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NotEqualf(a.t, expected, actual, msg, args...) +} + +// NotNil asserts that the specified object is not nil. +// +// a.NotNil(err) +func (a *Assertions) NotNil(object interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NotNil(a.t, object, msgAndArgs...) +} + +// NotNilf asserts that the specified object is not nil. +// +// a.NotNilf(err, "error message %s", "formatted") +func (a *Assertions) NotNilf(object interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NotNilf(a.t, object, msg, args...) +} + +// NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic. +// +// a.NotPanics(func(){ RemainCalm() }) +func (a *Assertions) NotPanics(f assert.PanicTestFunc, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NotPanics(a.t, f, msgAndArgs...) +} + +// NotPanicsf asserts that the code inside the specified PanicTestFunc does NOT panic. +// +// a.NotPanicsf(func(){ RemainCalm() }, "error message %s", "formatted") +func (a *Assertions) NotPanicsf(f assert.PanicTestFunc, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NotPanicsf(a.t, f, msg, args...) +} + +// NotRegexp asserts that a specified regexp does not match a string. +// +// a.NotRegexp(regexp.MustCompile("starts"), "it's starting") +// a.NotRegexp("^start", "it's not starting") +func (a *Assertions) NotRegexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NotRegexp(a.t, rx, str, msgAndArgs...) +} + +// NotRegexpf asserts that a specified regexp does not match a string. +// +// a.NotRegexpf(regexp.MustCompile("starts", "error message %s", "formatted"), "it's starting") +// a.NotRegexpf("^start", "it's not starting", "error message %s", "formatted") +func (a *Assertions) NotRegexpf(rx interface{}, str interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NotRegexpf(a.t, rx, str, msg, args...) +} + +// NotSubset asserts that the specified list(array, slice...) contains not all +// elements given in the specified subset(array, slice...). +// +// a.NotSubset([1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]") +func (a *Assertions) NotSubset(list interface{}, subset interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NotSubset(a.t, list, subset, msgAndArgs...) +} + +// NotSubsetf asserts that the specified list(array, slice...) contains not all +// elements given in the specified subset(array, slice...). +// +// a.NotSubsetf([1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]", "error message %s", "formatted") +func (a *Assertions) NotSubsetf(list interface{}, subset interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NotSubsetf(a.t, list, subset, msg, args...) +} + +// NotZero asserts that i is not the zero value for its type. +func (a *Assertions) NotZero(i interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NotZero(a.t, i, msgAndArgs...) +} + +// NotZerof asserts that i is not the zero value for its type. +func (a *Assertions) NotZerof(i interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NotZerof(a.t, i, msg, args...) +} + +// Panics asserts that the code inside the specified PanicTestFunc panics. +// +// a.Panics(func(){ GoCrazy() }) +func (a *Assertions) Panics(f assert.PanicTestFunc, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Panics(a.t, f, msgAndArgs...) +} + +// PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that +// the recovered panic value equals the expected panic value. +// +// a.PanicsWithValue("crazy error", func(){ GoCrazy() }) +func (a *Assertions) PanicsWithValue(expected interface{}, f assert.PanicTestFunc, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + PanicsWithValue(a.t, expected, f, msgAndArgs...) +} + +// PanicsWithValuef asserts that the code inside the specified PanicTestFunc panics, and that +// the recovered panic value equals the expected panic value. +// +// a.PanicsWithValuef("crazy error", func(){ GoCrazy() }, "error message %s", "formatted") +func (a *Assertions) PanicsWithValuef(expected interface{}, f assert.PanicTestFunc, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + PanicsWithValuef(a.t, expected, f, msg, args...) +} + +// Panicsf asserts that the code inside the specified PanicTestFunc panics. +// +// a.Panicsf(func(){ GoCrazy() }, "error message %s", "formatted") +func (a *Assertions) Panicsf(f assert.PanicTestFunc, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Panicsf(a.t, f, msg, args...) +} + +// Regexp asserts that a specified regexp matches a string. +// +// a.Regexp(regexp.MustCompile("start"), "it's starting") +// a.Regexp("start...$", "it's not starting") +func (a *Assertions) Regexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Regexp(a.t, rx, str, msgAndArgs...) +} + +// Regexpf asserts that a specified regexp matches a string. +// +// a.Regexpf(regexp.MustCompile("start", "error message %s", "formatted"), "it's starting") +// a.Regexpf("start...$", "it's not starting", "error message %s", "formatted") +func (a *Assertions) Regexpf(rx interface{}, str interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Regexpf(a.t, rx, str, msg, args...) +} + +// Same asserts that two pointers reference the same object. +// +// a.Same(ptr1, ptr2) +// +// Both arguments must be pointer variables. Pointer variable sameness is +// determined based on the equality of both type and value. +func (a *Assertions) Same(expected interface{}, actual interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Same(a.t, expected, actual, msgAndArgs...) +} + +// Samef asserts that two pointers reference the same object. +// +// a.Samef(ptr1, ptr2, "error message %s", "formatted") +// +// Both arguments must be pointer variables. Pointer variable sameness is +// determined based on the equality of both type and value. +func (a *Assertions) Samef(expected interface{}, actual interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Samef(a.t, expected, actual, msg, args...) +} + +// Subset asserts that the specified list(array, slice...) contains all +// elements given in the specified subset(array, slice...). +// +// a.Subset([1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]") +func (a *Assertions) Subset(list interface{}, subset interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Subset(a.t, list, subset, msgAndArgs...) +} + +// Subsetf asserts that the specified list(array, slice...) contains all +// elements given in the specified subset(array, slice...). +// +// a.Subsetf([1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]", "error message %s", "formatted") +func (a *Assertions) Subsetf(list interface{}, subset interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Subsetf(a.t, list, subset, msg, args...) +} + +// True asserts that the specified value is true. +// +// a.True(myBool) +func (a *Assertions) True(value bool, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + True(a.t, value, msgAndArgs...) +} + +// Truef asserts that the specified value is true. +// +// a.Truef(myBool, "error message %s", "formatted") +func (a *Assertions) Truef(value bool, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Truef(a.t, value, msg, args...) +} + +// WithinDuration asserts that the two times are within duration delta of each other. +// +// a.WithinDuration(time.Now(), time.Now(), 10*time.Second) +func (a *Assertions) WithinDuration(expected time.Time, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + WithinDuration(a.t, expected, actual, delta, msgAndArgs...) +} + +// WithinDurationf asserts that the two times are within duration delta of each other. +// +// a.WithinDurationf(time.Now(), time.Now(), 10*time.Second, "error message %s", "formatted") +func (a *Assertions) WithinDurationf(expected time.Time, actual time.Time, delta time.Duration, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + WithinDurationf(a.t, expected, actual, delta, msg, args...) +} + +// Zero asserts that i is the zero value for its type. +func (a *Assertions) Zero(i interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Zero(a.t, i, msgAndArgs...) +} + +// Zerof asserts that i is the zero value for its type. +func (a *Assertions) Zerof(i interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Zerof(a.t, i, msg, args...) +} diff --git a/vendor/github.com/stretchr/testify/require/require_forward.go.tmpl b/vendor/github.com/stretchr/testify/require/require_forward.go.tmpl new file mode 100644 index 0000000..54124df --- /dev/null +++ b/vendor/github.com/stretchr/testify/require/require_forward.go.tmpl @@ -0,0 +1,5 @@ +{{.CommentWithoutT "a"}} +func (a *Assertions) {{.DocInfo.Name}}({{.Params}}) { + if h, ok := a.t.(tHelper); ok { h.Helper() } + {{.DocInfo.Name}}(a.t, {{.ForwardedParams}}) +} diff --git a/vendor/github.com/stretchr/testify/require/requirements.go b/vendor/github.com/stretchr/testify/require/requirements.go new file mode 100644 index 0000000..6b85c5e --- /dev/null +++ b/vendor/github.com/stretchr/testify/require/requirements.go @@ -0,0 +1,29 @@ +package require + +// TestingT is an interface wrapper around *testing.T +type TestingT interface { + Errorf(format string, args ...interface{}) + FailNow() +} + +type tHelper interface { + Helper() +} + +// ComparisonAssertionFunc is a common function prototype when comparing two values. Can be useful +// for table driven tests. +type ComparisonAssertionFunc func(TestingT, interface{}, interface{}, ...interface{}) + +// ValueAssertionFunc is a common function prototype when validating a single value. Can be useful +// for table driven tests. +type ValueAssertionFunc func(TestingT, interface{}, ...interface{}) + +// BoolAssertionFunc is a common function prototype when validating a bool value. Can be useful +// for table driven tests. +type BoolAssertionFunc func(TestingT, bool, ...interface{}) + +// ErrorAssertionFunc is a common function prototype when validating an error value. Can be useful +// for table driven tests. +type ErrorAssertionFunc func(TestingT, error, ...interface{}) + +//go:generate go run ../_codegen/main.go -output-package=require -template=require.go.tmpl -include-format-funcs diff --git a/vendor/github.com/stretchr/testify/suite/doc.go b/vendor/github.com/stretchr/testify/suite/doc.go new file mode 100644 index 0000000..f91a245 --- /dev/null +++ b/vendor/github.com/stretchr/testify/suite/doc.go @@ -0,0 +1,65 @@ +// Package suite contains logic for creating testing suite structs +// and running the methods on those structs as tests. The most useful +// piece of this package is that you can create setup/teardown methods +// on your testing suites, which will run before/after the whole suite +// or individual tests (depending on which interface(s) you +// implement). +// +// A testing suite is usually built by first extending the built-in +// suite functionality from suite.Suite in testify. Alternatively, +// you could reproduce that logic on your own if you wanted (you +// just need to implement the TestingSuite interface from +// suite/interfaces.go). +// +// After that, you can implement any of the interfaces in +// suite/interfaces.go to add setup/teardown functionality to your +// suite, and add any methods that start with "Test" to add tests. +// Methods that do not match any suite interfaces and do not begin +// with "Test" will not be run by testify, and can safely be used as +// helper methods. +// +// Once you've built your testing suite, you need to run the suite +// (using suite.Run from testify) inside any function that matches the +// identity that "go test" is already looking for (i.e. +// func(*testing.T)). +// +// Regular expression to select test suites specified command-line +// argument "-run". Regular expression to select the methods +// of test suites specified command-line argument "-m". +// Suite object has assertion methods. +// +// A crude example: +// // Basic imports +// import ( +// "testing" +// "github.com/stretchr/testify/assert" +// "github.com/stretchr/testify/suite" +// ) +// +// // Define the suite, and absorb the built-in basic suite +// // functionality from testify - including a T() method which +// // returns the current testing context +// type ExampleTestSuite struct { +// suite.Suite +// VariableThatShouldStartAtFive int +// } +// +// // Make sure that VariableThatShouldStartAtFive is set to five +// // before each test +// func (suite *ExampleTestSuite) SetupTest() { +// suite.VariableThatShouldStartAtFive = 5 +// } +// +// // All methods that begin with "Test" are run as tests within a +// // suite. +// func (suite *ExampleTestSuite) TestExample() { +// assert.Equal(suite.T(), 5, suite.VariableThatShouldStartAtFive) +// suite.Equal(5, suite.VariableThatShouldStartAtFive) +// } +// +// // In order for 'go test' to run this suite, we need to create +// // a normal test function and pass our suite to suite.Run +// func TestExampleTestSuite(t *testing.T) { +// suite.Run(t, new(ExampleTestSuite)) +// } +package suite diff --git a/vendor/github.com/stretchr/testify/suite/interfaces.go b/vendor/github.com/stretchr/testify/suite/interfaces.go new file mode 100644 index 0000000..b37cb04 --- /dev/null +++ b/vendor/github.com/stretchr/testify/suite/interfaces.go @@ -0,0 +1,46 @@ +package suite + +import "testing" + +// TestingSuite can store and return the current *testing.T context +// generated by 'go test'. +type TestingSuite interface { + T() *testing.T + SetT(*testing.T) +} + +// SetupAllSuite has a SetupSuite method, which will run before the +// tests in the suite are run. +type SetupAllSuite interface { + SetupSuite() +} + +// SetupTestSuite has a SetupTest method, which will run before each +// test in the suite. +type SetupTestSuite interface { + SetupTest() +} + +// TearDownAllSuite has a TearDownSuite method, which will run after +// all the tests in the suite have been run. +type TearDownAllSuite interface { + TearDownSuite() +} + +// TearDownTestSuite has a TearDownTest method, which will run after +// each test in the suite. +type TearDownTestSuite interface { + TearDownTest() +} + +// BeforeTest has a function to be executed right before the test +// starts and receives the suite and test names as input +type BeforeTest interface { + BeforeTest(suiteName, testName string) +} + +// AfterTest has a function to be executed right after the test +// finishes and receives the suite and test names as input +type AfterTest interface { + AfterTest(suiteName, testName string) +} diff --git a/vendor/github.com/stretchr/testify/suite/suite.go b/vendor/github.com/stretchr/testify/suite/suite.go new file mode 100644 index 0000000..d708d7d --- /dev/null +++ b/vendor/github.com/stretchr/testify/suite/suite.go @@ -0,0 +1,166 @@ +package suite + +import ( + "flag" + "fmt" + "os" + "reflect" + "regexp" + "runtime/debug" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +var allTestsFilter = func(_, _ string) (bool, error) { return true, nil } +var matchMethod = flag.String("testify.m", "", "regular expression to select tests of the testify suite to run") + +// Suite is a basic testing suite with methods for storing and +// retrieving the current *testing.T context. +type Suite struct { + *assert.Assertions + require *require.Assertions + t *testing.T +} + +// T retrieves the current *testing.T context. +func (suite *Suite) T() *testing.T { + return suite.t +} + +// SetT sets the current *testing.T context. +func (suite *Suite) SetT(t *testing.T) { + suite.t = t + suite.Assertions = assert.New(t) + suite.require = require.New(t) +} + +// Require returns a require context for suite. +func (suite *Suite) Require() *require.Assertions { + if suite.require == nil { + suite.require = require.New(suite.T()) + } + return suite.require +} + +// Assert returns an assert context for suite. Normally, you can call +// `suite.NoError(expected, actual)`, but for situations where the embedded +// methods are overridden (for example, you might want to override +// assert.Assertions with require.Assertions), this method is provided so you +// can call `suite.Assert().NoError()`. +func (suite *Suite) Assert() *assert.Assertions { + if suite.Assertions == nil { + suite.Assertions = assert.New(suite.T()) + } + return suite.Assertions +} + +func failOnPanic(t *testing.T) { + r := recover() + if r != nil { + t.Errorf("test panicked: %v\n%s", r, debug.Stack()) + t.FailNow() + } +} + +// Run provides suite functionality around golang subtests. It should be +// called in place of t.Run(name, func(t *testing.T)) in test suite code. +// The passed-in func will be executed as a subtest with a fresh instance of t. +// Provides compatibility with go test pkg -run TestSuite/TestName/SubTestName. +func (suite *Suite) Run(name string, subtest func()) bool { + oldT := suite.T() + defer suite.SetT(oldT) + return oldT.Run(name, func(t *testing.T) { + suite.SetT(t) + subtest() + }) +} + +// Run takes a testing suite and runs all of the tests attached +// to it. +func Run(t *testing.T, suite TestingSuite) { + suite.SetT(t) + defer failOnPanic(t) + + suiteSetupDone := false + + methodFinder := reflect.TypeOf(suite) + tests := []testing.InternalTest{} + for index := 0; index < methodFinder.NumMethod(); index++ { + method := methodFinder.Method(index) + ok, err := methodFilter(method.Name) + if err != nil { + fmt.Fprintf(os.Stderr, "testify: invalid regexp for -m: %s\n", err) + os.Exit(1) + } + if !ok { + continue + } + if !suiteSetupDone { + if setupAllSuite, ok := suite.(SetupAllSuite); ok { + setupAllSuite.SetupSuite() + } + defer func() { + if tearDownAllSuite, ok := suite.(TearDownAllSuite); ok { + tearDownAllSuite.TearDownSuite() + } + }() + suiteSetupDone = true + } + test := testing.InternalTest{ + Name: method.Name, + F: func(t *testing.T) { + parentT := suite.T() + suite.SetT(t) + defer failOnPanic(t) + + if setupTestSuite, ok := suite.(SetupTestSuite); ok { + setupTestSuite.SetupTest() + } + if beforeTestSuite, ok := suite.(BeforeTest); ok { + beforeTestSuite.BeforeTest(methodFinder.Elem().Name(), method.Name) + } + defer func() { + if afterTestSuite, ok := suite.(AfterTest); ok { + afterTestSuite.AfterTest(methodFinder.Elem().Name(), method.Name) + } + if tearDownTestSuite, ok := suite.(TearDownTestSuite); ok { + tearDownTestSuite.TearDownTest() + } + suite.SetT(parentT) + }() + method.Func.Call([]reflect.Value{reflect.ValueOf(suite)}) + }, + } + tests = append(tests, test) + } + runTests(t, tests) +} + +func runTests(t testing.TB, tests []testing.InternalTest) { + r, ok := t.(runner) + if !ok { // backwards compatibility with Go 1.6 and below + if !testing.RunTests(allTestsFilter, tests) { + t.Fail() + } + return + } + + for _, test := range tests { + r.Run(test.Name, test.F) + } +} + +// Filtering method according to set regular expression +// specified command-line argument -m +func methodFilter(name string) (bool, error) { + if ok, _ := regexp.MatchString("^Test", name); !ok { + return false, nil + } + return regexp.MatchString(*matchMethod, name) +} + +type runner interface { + Run(name string, f func(t *testing.T)) bool +} diff --git a/vendor/github.com/vmware/govmomi/CONTRIBUTORS b/vendor/github.com/vmware/govmomi/CONTRIBUTORS new file mode 100644 index 0000000..4d4819f --- /dev/null +++ b/vendor/github.com/vmware/govmomi/CONTRIBUTORS @@ -0,0 +1,168 @@ +# People who can (and typically have) contributed to this repository. +# +# This script is generated by contributors.sh +# + +Abhijeet Kasurde +abrarshivani +Adam Shannon +Al Biheiri +Alessandro Cortiana +Alex Bozhenko +Alex Ellis (VMware) +Alex +Alvaro Miranda +Amanda H. L. de Andrade +Amit Bathla +amit bezalel +Andrew +Andrew Chin +Andrew Kutz +Andrey Klimentyev +Anfernee Yongkun Gui +angystardust +aniketGslab +Ankit Vaidya +Anna Carrigan +Arran Walker +Artem Anisimov +Aryeh Weinreb +Austin Parker +Balu Dontu +bastienbc +Ben Corrie +Benjamin Davini +Benjamin Peterson +Bob Killen +Brad Fitzpatrick +Bruce Downs +Cédric Blomart +Cheng Cheng +Chethan Venkatesh +Chris Marchesi +Christian Höltje +Clint Greenwood +CuiHaozhi +Daniel Mueller +Dan Ilan +Danny Lockard +Dave Gress +Dave Smith-Uchida +Dave Tucker +Davide Agnello +David Gress +David Stark +Davinder Kumar +demarey +dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Deric Crago +Divyen Patel +Dnyanesh Gate +Doug MacEachern +Eloy Coto +Eric Edens +Eric Graham <16710890+Pheric@users.noreply.github.com> +Eric Gray +Eric Yutao +Erik Hollensbe +Ethan Kaley +Evan Chu +Fabio Rapposelli +Faiyaz Ahmed +Federico Pellegatta <12744504+federico-pellegatta@users.noreply.github.com> +forkbomber +François Rigault +freebsdly +Gavin Gray +Gavrie Philipson +George Hicken +Gerrit Renker +gthombare +Hasan Mahmood +Henrik Hodne +hkumar +hui luo +Isaac Rodman +Ivan Mikushin +Ivan Porto Carrero +James King +Jason Kincl +Jeremy Canady +jeremy-clerc +Jiatong Wang +jingyizPensando +João Pereira +Jonas Ausevicius +Jorge Sevilla +kayrus +Kevin George +leslie-qiwa +Lintong Jiang +Liping Xue +Louie Jiang +Luther Monson +maplain +Marc Carmier +Marcus Tan +Maria Ntalla +Marin Atanasov Nikolov +Mario Trangoni +Mark Peek +Matt Clay +Matthew Cosgrove +Matt Moore +Matt Moriarity +Mevan Samaratunga +Michal Jankowski +mingwei +Nicolas Lamirault +Omar Kohl +Parham Alvani +Pierre Gronlier +Pieter Noordhuis +prydin +rHermes +Rowan Jacobs +rsikdar +runner.mei +Sandeep Pissay Srinivasa Rao +S.Çağlar Onur +Sergey Ignatov +serokles +Shalini Bhaskara +Shawn Neal +shylasrinivas +sky-joker +Sten Feldman +Stepan Mazurov +Steve Purcell +SUMIT AGRAWAL +Takaaki Furukawa +Tamas Eger +tanishi +Ted Zlatanov +Thad Craft +Thibaut Ackermann +Tim McNamara +Tjeu Kayim <15987676+TjeuKayim@users.noreply.github.com> +Toomas Pelberg +Trevor Dawe +tshihad +Uwe Bessle +Vadim Egorov +Vikram Krishnamurthy +volanja +Volodymyr Bobyr +Waldek Maleska +William Lam +Witold Krecicki +xing-yang +yangxi +Yang Yang +Yann Hodique +ykakarap +Yuya Kusakabe +Zacharias Taubert +Zach Tucker +Zee Yang +zyuxin diff --git a/vendor/github.com/vmware/govmomi/LICENSE.txt b/vendor/github.com/vmware/govmomi/LICENSE.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/vmware/govmomi/find/doc.go b/vendor/github.com/vmware/govmomi/find/doc.go new file mode 100644 index 0000000..0c8acee --- /dev/null +++ b/vendor/github.com/vmware/govmomi/find/doc.go @@ -0,0 +1,37 @@ +/* +Copyright (c) 2014-2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Package find implements inventory listing and searching. + +The Finder is an alternative to the object.SearchIndex FindByInventoryPath() and FindChild() methods. +SearchIndex.FindByInventoryPath requires an absolute path, whereas the Finder also supports relative paths +and patterns via path.Match. +SearchIndex.FindChild requires a parent to find the child, whereas the Finder also supports an ancestor via +recursive object traversal. + +The various Finder methods accept a "path" argument, which can absolute or relative to the Folder for the object type. +The Finder supports two modes, "list" and "find". The "list" mode behaves like the "ls" command, only searching within +the immediate path. The "find" mode behaves like the "find" command, with the search starting at the immediate path but +also recursing into sub Folders relative to the Datacenter. The default mode is "list" if the given path contains a "/", +otherwise "find" mode is used. + +The exception is to use a "..." wildcard with a path to find all objects recursively underneath any root object. +For example: VirtualMachineList("/DC1/...") + +See also: https://github.com/vmware/govmomi/blob/master/govc/README.md#usage +*/ +package find diff --git a/vendor/github.com/vmware/govmomi/find/error.go b/vendor/github.com/vmware/govmomi/find/error.go new file mode 100644 index 0000000..684526d --- /dev/null +++ b/vendor/github.com/vmware/govmomi/find/error.go @@ -0,0 +1,64 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package find + +import "fmt" + +type NotFoundError struct { + kind string + path string +} + +func (e *NotFoundError) Error() string { + return fmt.Sprintf("%s '%s' not found", e.kind, e.path) +} + +type MultipleFoundError struct { + kind string + path string +} + +func (e *MultipleFoundError) Error() string { + return fmt.Sprintf("path '%s' resolves to multiple %ss", e.path, e.kind) +} + +type DefaultNotFoundError struct { + kind string +} + +func (e *DefaultNotFoundError) Error() string { + return fmt.Sprintf("no default %s found", e.kind) +} + +type DefaultMultipleFoundError struct { + kind string +} + +func (e DefaultMultipleFoundError) Error() string { + return fmt.Sprintf("default %s resolves to multiple instances, please specify", e.kind) +} + +func toDefaultError(err error) error { + switch e := err.(type) { + case *NotFoundError: + return &DefaultNotFoundError{e.kind} + case *MultipleFoundError: + return &DefaultMultipleFoundError{e.kind} + default: + return err + } +} diff --git a/vendor/github.com/vmware/govmomi/find/finder.go b/vendor/github.com/vmware/govmomi/find/finder.go new file mode 100644 index 0000000..a46c70b --- /dev/null +++ b/vendor/github.com/vmware/govmomi/find/finder.go @@ -0,0 +1,1058 @@ +/* +Copyright (c) 2014-2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package find + +import ( + "context" + "errors" + "path" + "strings" + + "github.com/vmware/govmomi/list" + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/property" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type Finder struct { + client *vim25.Client + r recurser + dc *object.Datacenter + si *object.SearchIndex + folders *object.DatacenterFolders +} + +func NewFinder(client *vim25.Client, all ...bool) *Finder { + props := false + if len(all) == 1 { + props = all[0] + } + + f := &Finder{ + client: client, + si: object.NewSearchIndex(client), + r: recurser{ + Collector: property.DefaultCollector(client), + All: props, + }, + } + + if len(all) == 0 { + // attempt to avoid SetDatacenter() requirement + f.dc, _ = f.DefaultDatacenter(context.Background()) + } + + return f +} + +func (f *Finder) SetDatacenter(dc *object.Datacenter) *Finder { + f.dc = dc + f.folders = nil + return f +} + +// findRoot makes it possible to use "find" mode with a different root path. +// Example: ResourcePoolList("/dc1/host/cluster1/...") +func (f *Finder) findRoot(ctx context.Context, root *list.Element, parts []string) bool { + if len(parts) == 0 { + return false + } + + ix := len(parts) - 1 + + if parts[ix] != "..." { + return false + } + + if ix == 0 { + return true // We already have the Object for root.Path + } + + // Lookup the Object for the new root.Path + rootPath := path.Join(root.Path, path.Join(parts[:ix]...)) + + ref, err := f.si.FindByInventoryPath(ctx, rootPath) + if err != nil || ref == nil { + // If we get an error or fail to match, fall through to find() with the original root and path + return false + } + + root.Path = rootPath + root.Object = ref + + return true +} + +func (f *Finder) find(ctx context.Context, arg string, s *spec) ([]list.Element, error) { + isPath := strings.Contains(arg, "/") + + root := list.Element{ + Path: "/", + Object: object.NewRootFolder(f.client), + } + + parts := list.ToParts(arg) + + if len(parts) > 0 { + switch parts[0] { + case "..": // Not supported; many edge case, little value + return nil, errors.New("cannot traverse up a tree") + case ".": // Relative to whatever + pivot, err := s.Relative(ctx) + if err != nil { + return nil, err + } + + mes, err := mo.Ancestors(ctx, f.client, f.client.ServiceContent.PropertyCollector, pivot.Reference()) + if err != nil { + return nil, err + } + + for _, me := range mes { + // Skip root entity in building inventory path. + if me.Parent == nil { + continue + } + root.Path = path.Join(root.Path, me.Name) + } + + root.Object = pivot + parts = parts[1:] + } + } + + if s.listMode(isPath) { + if f.findRoot(ctx, &root, parts) { + parts = []string{"*"} + } else { + return f.r.List(ctx, s, root, parts) + } + } + + s.Parents = append(s.Parents, s.Nested...) + + return f.r.Find(ctx, s, root, parts) +} + +func (f *Finder) datacenter() (*object.Datacenter, error) { + if f.dc == nil { + return nil, errors.New("please specify a datacenter") + } + + return f.dc, nil +} + +// datacenterPath returns the absolute path to the Datacenter containing the given ref +func (f *Finder) datacenterPath(ctx context.Context, ref types.ManagedObjectReference) (string, error) { + mes, err := mo.Ancestors(ctx, f.client, f.client.ServiceContent.PropertyCollector, ref) + if err != nil { + return "", err + } + + // Chop leaves under the Datacenter + for i := len(mes) - 1; i > 0; i-- { + if mes[i].Self.Type == "Datacenter" { + break + } + mes = mes[:i] + } + + var p string + + for _, me := range mes { + // Skip root entity in building inventory path. + if me.Parent == nil { + continue + } + + p = p + "/" + me.Name + } + + return p, nil +} + +func (f *Finder) dcFolders(ctx context.Context) (*object.DatacenterFolders, error) { + if f.folders != nil { + return f.folders, nil + } + + dc, err := f.datacenter() + if err != nil { + return nil, err + } + + folders, err := dc.Folders(ctx) + if err != nil { + return nil, err + } + + f.folders = folders + + return f.folders, nil +} + +func (f *Finder) dcReference(_ context.Context) (object.Reference, error) { + dc, err := f.datacenter() + if err != nil { + return nil, err + } + + return dc, nil +} + +func (f *Finder) vmFolder(ctx context.Context) (object.Reference, error) { + folders, err := f.dcFolders(ctx) + if err != nil { + return nil, err + } + + return folders.VmFolder, nil +} + +func (f *Finder) hostFolder(ctx context.Context) (object.Reference, error) { + folders, err := f.dcFolders(ctx) + if err != nil { + return nil, err + } + + return folders.HostFolder, nil +} + +func (f *Finder) datastoreFolder(ctx context.Context) (object.Reference, error) { + folders, err := f.dcFolders(ctx) + if err != nil { + return nil, err + } + + return folders.DatastoreFolder, nil +} + +func (f *Finder) networkFolder(ctx context.Context) (object.Reference, error) { + folders, err := f.dcFolders(ctx) + if err != nil { + return nil, err + } + + return folders.NetworkFolder, nil +} + +func (f *Finder) rootFolder(_ context.Context) (object.Reference, error) { + return object.NewRootFolder(f.client), nil +} + +func (f *Finder) managedObjectList(ctx context.Context, path string, tl bool, include []string) ([]list.Element, error) { + fn := f.rootFolder + + if f.dc != nil { + fn = f.dcReference + } + + if path == "" { + path = "." + } + + s := &spec{ + Relative: fn, + Parents: []string{"ComputeResource", "ClusterComputeResource", "HostSystem", "VirtualApp", "StoragePod"}, + Include: include, + } + + if tl { + s.Contents = true + s.ListMode = types.NewBool(true) + } + + return f.find(ctx, path, s) +} + +// Element returns an Element for the given ManagedObjectReference +// This method is only useful for looking up the InventoryPath of a ManagedObjectReference. +func (f *Finder) Element(ctx context.Context, ref types.ManagedObjectReference) (*list.Element, error) { + rl := func(_ context.Context) (object.Reference, error) { + return ref, nil + } + + s := &spec{ + Relative: rl, + } + + e, err := f.find(ctx, "./", s) + if err != nil { + return nil, err + } + + if len(e) == 0 { + return nil, &NotFoundError{ref.Type, ref.Value} + } + + if len(e) > 1 { + panic("ManagedObjectReference must be unique") + } + + return &e[0], nil +} + +// ObjectReference converts the given ManagedObjectReference to a type from the object package via object.NewReference +// with the object.Common.InventoryPath field set. +func (f *Finder) ObjectReference(ctx context.Context, ref types.ManagedObjectReference) (object.Reference, error) { + e, err := f.Element(ctx, ref) + if err != nil { + return nil, err + } + + r := object.NewReference(f.client, ref) + + type common interface { + SetInventoryPath(string) + } + + r.(common).SetInventoryPath(e.Path) + + if f.dc != nil { + if ds, ok := r.(*object.Datastore); ok { + ds.DatacenterPath = f.dc.InventoryPath + } + } + + return r, nil +} + +func (f *Finder) ManagedObjectList(ctx context.Context, path string, include ...string) ([]list.Element, error) { + return f.managedObjectList(ctx, path, false, include) +} + +func (f *Finder) ManagedObjectListChildren(ctx context.Context, path string, include ...string) ([]list.Element, error) { + return f.managedObjectList(ctx, path, true, include) +} + +func (f *Finder) DatacenterList(ctx context.Context, path string) ([]*object.Datacenter, error) { + s := &spec{ + Relative: f.rootFolder, + Include: []string{"Datacenter"}, + } + + es, err := f.find(ctx, path, s) + if err != nil { + return nil, err + } + + var dcs []*object.Datacenter + for _, e := range es { + ref := e.Object.Reference() + if ref.Type == "Datacenter" { + dc := object.NewDatacenter(f.client, ref) + dc.InventoryPath = e.Path + dcs = append(dcs, dc) + } + } + + if len(dcs) == 0 { + return nil, &NotFoundError{"datacenter", path} + } + + return dcs, nil +} + +func (f *Finder) Datacenter(ctx context.Context, path string) (*object.Datacenter, error) { + dcs, err := f.DatacenterList(ctx, path) + if err != nil { + return nil, err + } + + if len(dcs) > 1 { + return nil, &MultipleFoundError{"datacenter", path} + } + + return dcs[0], nil +} + +func (f *Finder) DefaultDatacenter(ctx context.Context) (*object.Datacenter, error) { + dc, err := f.Datacenter(ctx, "*") + if err != nil { + return nil, toDefaultError(err) + } + + return dc, nil +} + +func (f *Finder) DatacenterOrDefault(ctx context.Context, path string) (*object.Datacenter, error) { + if path != "" { + dc, err := f.Datacenter(ctx, path) + if err != nil { + return nil, err + } + return dc, nil + } + + return f.DefaultDatacenter(ctx) +} + +func (f *Finder) DatastoreList(ctx context.Context, path string) ([]*object.Datastore, error) { + s := &spec{ + Relative: f.datastoreFolder, + Parents: []string{"StoragePod"}, + } + + es, err := f.find(ctx, path, s) + if err != nil { + return nil, err + } + + var dss []*object.Datastore + for _, e := range es { + ref := e.Object.Reference() + if ref.Type == "Datastore" { + ds := object.NewDatastore(f.client, ref) + ds.InventoryPath = e.Path + + if f.dc == nil { + // In this case SetDatacenter was not called and path is absolute + ds.DatacenterPath, err = f.datacenterPath(ctx, ref) + if err != nil { + return nil, err + } + } else { + ds.DatacenterPath = f.dc.InventoryPath + } + + dss = append(dss, ds) + } + } + + if len(dss) == 0 { + return nil, &NotFoundError{"datastore", path} + } + + return dss, nil +} + +func (f *Finder) Datastore(ctx context.Context, path string) (*object.Datastore, error) { + dss, err := f.DatastoreList(ctx, path) + if err != nil { + return nil, err + } + + if len(dss) > 1 { + return nil, &MultipleFoundError{"datastore", path} + } + + return dss[0], nil +} + +func (f *Finder) DefaultDatastore(ctx context.Context) (*object.Datastore, error) { + ds, err := f.Datastore(ctx, "*") + if err != nil { + return nil, toDefaultError(err) + } + + return ds, nil +} + +func (f *Finder) DatastoreOrDefault(ctx context.Context, path string) (*object.Datastore, error) { + if path != "" { + ds, err := f.Datastore(ctx, path) + if err != nil { + return nil, err + } + return ds, nil + } + + return f.DefaultDatastore(ctx) +} + +func (f *Finder) DatastoreClusterList(ctx context.Context, path string) ([]*object.StoragePod, error) { + s := &spec{ + Relative: f.datastoreFolder, + } + + es, err := f.find(ctx, path, s) + if err != nil { + return nil, err + } + + var sps []*object.StoragePod + for _, e := range es { + ref := e.Object.Reference() + if ref.Type == "StoragePod" { + sp := object.NewStoragePod(f.client, ref) + sp.InventoryPath = e.Path + sps = append(sps, sp) + } + } + + if len(sps) == 0 { + return nil, &NotFoundError{"datastore cluster", path} + } + + return sps, nil +} + +func (f *Finder) DatastoreCluster(ctx context.Context, path string) (*object.StoragePod, error) { + sps, err := f.DatastoreClusterList(ctx, path) + if err != nil { + return nil, err + } + + if len(sps) > 1 { + return nil, &MultipleFoundError{"datastore cluster", path} + } + + return sps[0], nil +} + +func (f *Finder) DefaultDatastoreCluster(ctx context.Context) (*object.StoragePod, error) { + sp, err := f.DatastoreCluster(ctx, "*") + if err != nil { + return nil, toDefaultError(err) + } + + return sp, nil +} + +func (f *Finder) DatastoreClusterOrDefault(ctx context.Context, path string) (*object.StoragePod, error) { + if path != "" { + sp, err := f.DatastoreCluster(ctx, path) + if err != nil { + return nil, err + } + return sp, nil + } + + return f.DefaultDatastoreCluster(ctx) +} + +func (f *Finder) ComputeResourceList(ctx context.Context, path string) ([]*object.ComputeResource, error) { + s := &spec{ + Relative: f.hostFolder, + } + + es, err := f.find(ctx, path, s) + if err != nil { + return nil, err + } + + var crs []*object.ComputeResource + for _, e := range es { + var cr *object.ComputeResource + + switch o := e.Object.(type) { + case mo.ComputeResource, mo.ClusterComputeResource: + cr = object.NewComputeResource(f.client, o.Reference()) + default: + continue + } + + cr.InventoryPath = e.Path + crs = append(crs, cr) + } + + if len(crs) == 0 { + return nil, &NotFoundError{"compute resource", path} + } + + return crs, nil +} + +func (f *Finder) ComputeResource(ctx context.Context, path string) (*object.ComputeResource, error) { + crs, err := f.ComputeResourceList(ctx, path) + if err != nil { + return nil, err + } + + if len(crs) > 1 { + return nil, &MultipleFoundError{"compute resource", path} + } + + return crs[0], nil +} + +func (f *Finder) DefaultComputeResource(ctx context.Context) (*object.ComputeResource, error) { + cr, err := f.ComputeResource(ctx, "*") + if err != nil { + return nil, toDefaultError(err) + } + + return cr, nil +} + +func (f *Finder) ComputeResourceOrDefault(ctx context.Context, path string) (*object.ComputeResource, error) { + if path != "" { + cr, err := f.ComputeResource(ctx, path) + if err != nil { + return nil, err + } + return cr, nil + } + + return f.DefaultComputeResource(ctx) +} + +func (f *Finder) ClusterComputeResourceList(ctx context.Context, path string) ([]*object.ClusterComputeResource, error) { + s := &spec{ + Relative: f.hostFolder, + } + + es, err := f.find(ctx, path, s) + if err != nil { + return nil, err + } + + var ccrs []*object.ClusterComputeResource + for _, e := range es { + var ccr *object.ClusterComputeResource + + switch o := e.Object.(type) { + case mo.ClusterComputeResource: + ccr = object.NewClusterComputeResource(f.client, o.Reference()) + default: + continue + } + + ccr.InventoryPath = e.Path + ccrs = append(ccrs, ccr) + } + + if len(ccrs) == 0 { + return nil, &NotFoundError{"cluster", path} + } + + return ccrs, nil +} + +func (f *Finder) DefaultClusterComputeResource(ctx context.Context) (*object.ClusterComputeResource, error) { + cr, err := f.ClusterComputeResource(ctx, "*") + if err != nil { + return nil, toDefaultError(err) + } + + return cr, nil +} + +func (f *Finder) ClusterComputeResource(ctx context.Context, path string) (*object.ClusterComputeResource, error) { + ccrs, err := f.ClusterComputeResourceList(ctx, path) + if err != nil { + return nil, err + } + + if len(ccrs) > 1 { + return nil, &MultipleFoundError{"cluster", path} + } + + return ccrs[0], nil +} + +func (f *Finder) ClusterComputeResourceOrDefault(ctx context.Context, path string) (*object.ClusterComputeResource, error) { + if path != "" { + cr, err := f.ClusterComputeResource(ctx, path) + if err != nil { + return nil, err + } + return cr, nil + } + + return f.DefaultClusterComputeResource(ctx) +} + +func (f *Finder) HostSystemList(ctx context.Context, path string) ([]*object.HostSystem, error) { + s := &spec{ + Relative: f.hostFolder, + Parents: []string{"ComputeResource", "ClusterComputeResource"}, + Include: []string{"HostSystem"}, + } + + es, err := f.find(ctx, path, s) + if err != nil { + return nil, err + } + + var hss []*object.HostSystem + for _, e := range es { + var hs *object.HostSystem + + switch o := e.Object.(type) { + case mo.HostSystem: + hs = object.NewHostSystem(f.client, o.Reference()) + + hs.InventoryPath = e.Path + hss = append(hss, hs) + case mo.ComputeResource, mo.ClusterComputeResource: + cr := object.NewComputeResource(f.client, o.Reference()) + + cr.InventoryPath = e.Path + + hosts, err := cr.Hosts(ctx) + if err != nil { + return nil, err + } + + hss = append(hss, hosts...) + } + } + + if len(hss) == 0 { + return nil, &NotFoundError{"host", path} + } + + return hss, nil +} + +func (f *Finder) HostSystem(ctx context.Context, path string) (*object.HostSystem, error) { + hss, err := f.HostSystemList(ctx, path) + if err != nil { + return nil, err + } + + if len(hss) > 1 { + return nil, &MultipleFoundError{"host", path} + } + + return hss[0], nil +} + +func (f *Finder) DefaultHostSystem(ctx context.Context) (*object.HostSystem, error) { + hs, err := f.HostSystem(ctx, "*") + if err != nil { + return nil, toDefaultError(err) + } + + return hs, nil +} + +func (f *Finder) HostSystemOrDefault(ctx context.Context, path string) (*object.HostSystem, error) { + if path != "" { + hs, err := f.HostSystem(ctx, path) + if err != nil { + return nil, err + } + return hs, nil + } + + return f.DefaultHostSystem(ctx) +} + +func (f *Finder) NetworkList(ctx context.Context, path string) ([]object.NetworkReference, error) { + s := &spec{ + Relative: f.networkFolder, + } + + es, err := f.find(ctx, path, s) + if err != nil { + return nil, err + } + + var ns []object.NetworkReference + for _, e := range es { + ref := e.Object.Reference() + switch ref.Type { + case "Network": + r := object.NewNetwork(f.client, ref) + r.InventoryPath = e.Path + ns = append(ns, r) + case "OpaqueNetwork": + r := object.NewOpaqueNetwork(f.client, ref) + r.InventoryPath = e.Path + ns = append(ns, r) + case "DistributedVirtualPortgroup": + r := object.NewDistributedVirtualPortgroup(f.client, ref) + r.InventoryPath = e.Path + ns = append(ns, r) + case "DistributedVirtualSwitch", "VmwareDistributedVirtualSwitch": + r := object.NewDistributedVirtualSwitch(f.client, ref) + r.InventoryPath = e.Path + ns = append(ns, r) + } + } + + if len(ns) == 0 { + return nil, &NotFoundError{"network", path} + } + + return ns, nil +} + +func (f *Finder) Network(ctx context.Context, path string) (object.NetworkReference, error) { + networks, err := f.NetworkList(ctx, path) + if err != nil { + return nil, err + } + + if len(networks) > 1 { + return nil, &MultipleFoundError{"network", path} + } + + return networks[0], nil +} + +func (f *Finder) DefaultNetwork(ctx context.Context) (object.NetworkReference, error) { + network, err := f.Network(ctx, "*") + if err != nil { + return nil, toDefaultError(err) + } + + return network, nil +} + +func (f *Finder) NetworkOrDefault(ctx context.Context, path string) (object.NetworkReference, error) { + if path != "" { + network, err := f.Network(ctx, path) + if err != nil { + return nil, err + } + return network, nil + } + + return f.DefaultNetwork(ctx) +} + +func (f *Finder) ResourcePoolList(ctx context.Context, path string) ([]*object.ResourcePool, error) { + s := &spec{ + Relative: f.hostFolder, + Parents: []string{"ComputeResource", "ClusterComputeResource", "VirtualApp"}, + Nested: []string{"ResourcePool"}, + Contents: true, + } + + es, err := f.find(ctx, path, s) + if err != nil { + return nil, err + } + + var rps []*object.ResourcePool + for _, e := range es { + var rp *object.ResourcePool + + switch o := e.Object.(type) { + case mo.ResourcePool: + rp = object.NewResourcePool(f.client, o.Reference()) + rp.InventoryPath = e.Path + rps = append(rps, rp) + } + } + + if len(rps) == 0 { + return nil, &NotFoundError{"resource pool", path} + } + + return rps, nil +} + +func (f *Finder) ResourcePool(ctx context.Context, path string) (*object.ResourcePool, error) { + rps, err := f.ResourcePoolList(ctx, path) + if err != nil { + return nil, err + } + + if len(rps) > 1 { + return nil, &MultipleFoundError{"resource pool", path} + } + + return rps[0], nil +} + +func (f *Finder) DefaultResourcePool(ctx context.Context) (*object.ResourcePool, error) { + rp, err := f.ResourcePool(ctx, "*/Resources") + if err != nil { + return nil, toDefaultError(err) + } + + return rp, nil +} + +func (f *Finder) ResourcePoolOrDefault(ctx context.Context, path string) (*object.ResourcePool, error) { + if path != "" { + rp, err := f.ResourcePool(ctx, path) + if err != nil { + return nil, err + } + return rp, nil + } + + return f.DefaultResourcePool(ctx) +} + +// ResourcePoolListAll combines ResourcePoolList and VirtualAppList +// VirtualAppList is only called if ResourcePoolList does not find any pools with the given path. +func (f *Finder) ResourcePoolListAll(ctx context.Context, path string) ([]*object.ResourcePool, error) { + pools, err := f.ResourcePoolList(ctx, path) + if err != nil { + if _, ok := err.(*NotFoundError); !ok { + return nil, err + } + + vapps, _ := f.VirtualAppList(ctx, path) + + if len(vapps) == 0 { + return nil, err + } + + for _, vapp := range vapps { + pools = append(pools, vapp.ResourcePool) + } + } + + return pools, nil +} + +func (f *Finder) DefaultFolder(ctx context.Context) (*object.Folder, error) { + ref, err := f.vmFolder(ctx) + if err != nil { + return nil, toDefaultError(err) + } + folder := object.NewFolder(f.client, ref.Reference()) + + // Set the InventoryPath of the newly created folder object + // The default foler becomes the datacenter's "vm" folder. + // The "vm" folder always exists for a datacenter. It cannot be + // removed or replaced + folder.SetInventoryPath(path.Join(f.dc.InventoryPath, "vm")) + + return folder, nil +} + +func (f *Finder) FolderOrDefault(ctx context.Context, path string) (*object.Folder, error) { + if path != "" { + folder, err := f.Folder(ctx, path) + if err != nil { + return nil, err + } + return folder, nil + } + return f.DefaultFolder(ctx) +} + +func (f *Finder) VirtualMachineList(ctx context.Context, path string) ([]*object.VirtualMachine, error) { + s := &spec{ + Relative: f.vmFolder, + Parents: []string{"VirtualApp"}, + } + + es, err := f.find(ctx, path, s) + if err != nil { + return nil, err + } + + var vms []*object.VirtualMachine + for _, e := range es { + switch o := e.Object.(type) { + case mo.VirtualMachine: + vm := object.NewVirtualMachine(f.client, o.Reference()) + vm.InventoryPath = e.Path + vms = append(vms, vm) + } + } + + if len(vms) == 0 { + return nil, &NotFoundError{"vm", path} + } + + return vms, nil +} + +func (f *Finder) VirtualMachine(ctx context.Context, path string) (*object.VirtualMachine, error) { + vms, err := f.VirtualMachineList(ctx, path) + if err != nil { + return nil, err + } + + if len(vms) > 1 { + return nil, &MultipleFoundError{"vm", path} + } + + return vms[0], nil +} + +func (f *Finder) VirtualAppList(ctx context.Context, path string) ([]*object.VirtualApp, error) { + s := &spec{ + Relative: f.vmFolder, + } + + es, err := f.find(ctx, path, s) + if err != nil { + return nil, err + } + + var apps []*object.VirtualApp + for _, e := range es { + switch o := e.Object.(type) { + case mo.VirtualApp: + app := object.NewVirtualApp(f.client, o.Reference()) + app.InventoryPath = e.Path + apps = append(apps, app) + } + } + + if len(apps) == 0 { + return nil, &NotFoundError{"app", path} + } + + return apps, nil +} + +func (f *Finder) VirtualApp(ctx context.Context, path string) (*object.VirtualApp, error) { + apps, err := f.VirtualAppList(ctx, path) + if err != nil { + return nil, err + } + + if len(apps) > 1 { + return nil, &MultipleFoundError{"app", path} + } + + return apps[0], nil +} + +func (f *Finder) FolderList(ctx context.Context, path string) ([]*object.Folder, error) { + es, err := f.ManagedObjectList(ctx, path) + if err != nil { + return nil, err + } + + var folders []*object.Folder + + for _, e := range es { + switch o := e.Object.(type) { + case mo.Folder, mo.StoragePod: + folder := object.NewFolder(f.client, o.Reference()) + folder.InventoryPath = e.Path + folders = append(folders, folder) + case *object.Folder: + // RootFolder + folders = append(folders, o) + } + } + + if len(folders) == 0 { + return nil, &NotFoundError{"folder", path} + } + + return folders, nil +} + +func (f *Finder) Folder(ctx context.Context, path string) (*object.Folder, error) { + folders, err := f.FolderList(ctx, path) + if err != nil { + return nil, err + } + + if len(folders) > 1 { + return nil, &MultipleFoundError{"folder", path} + } + + return folders[0], nil +} diff --git a/vendor/github.com/vmware/govmomi/find/recurser.go b/vendor/github.com/vmware/govmomi/find/recurser.go new file mode 100644 index 0000000..80d958a --- /dev/null +++ b/vendor/github.com/vmware/govmomi/find/recurser.go @@ -0,0 +1,253 @@ +/* +Copyright (c) 2014-2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package find + +import ( + "context" + "os" + "path" + "strings" + + "github.com/vmware/govmomi/list" + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/property" + "github.com/vmware/govmomi/vim25/mo" +) + +// spec is used to specify per-search configuration, independent of the Finder instance. +type spec struct { + // Relative returns the root object to resolve Relative paths (starts with ".") + Relative func(ctx context.Context) (object.Reference, error) + + // ListMode can be used to optionally force "ls" behavior, rather than "find" behavior + ListMode *bool + + // Contents configures the Recurser to list the Contents of traversable leaf nodes. + // This is typically set to true when used from the ls command, where listing + // a folder means listing its Contents. This is typically set to false for + // commands that take managed entities that are not folders as input. + Contents bool + + // Parents specifies the types which can contain the child types being searched for. + // for example, when searching for a HostSystem, parent types can be + // "ComputeResource" or "ClusterComputeResource". + Parents []string + + // Include specifies which types to be included in the results, used only in "find" mode. + Include []string + + // Nested should be set to types that can be Nested, used only in "find" mode. + Nested []string + + // ChildType avoids traversing into folders that can't contain the Include types, used only in "find" mode. + ChildType []string +} + +func (s *spec) traversable(o mo.Reference) bool { + ref := o.Reference() + + switch ref.Type { + case "Datacenter": + if len(s.Include) == 1 && s.Include[0] == "Datacenter" { + // No point in traversing deeper as Datacenters cannot be nested + return false + } + return true + case "Folder": + if f, ok := o.(mo.Folder); ok { + // TODO: Not making use of this yet, but here we can optimize when searching the entire + // inventory across Datacenters for specific types, for example: 'govc ls -t VirtualMachine /**' + // should not traverse into a Datacenter's host, network or datatore folders. + if !s.traversableChildType(f.ChildType) { + return false + } + } + + return true + } + + for _, kind := range s.Parents { + if kind == ref.Type { + return true + } + } + + return false +} + +func (s *spec) traversableChildType(ctypes []string) bool { + if len(s.ChildType) == 0 { + return true + } + + for _, t := range ctypes { + for _, c := range s.ChildType { + if t == c { + return true + } + } + } + + return false +} + +func (s *spec) wanted(e list.Element) bool { + if len(s.Include) == 0 { + return true + } + + w := e.Object.Reference().Type + + for _, kind := range s.Include { + if w == kind { + return true + } + } + + return false +} + +// listMode is a global option to revert to the original Finder behavior, +// disabling the newer "find" mode. +var listMode = os.Getenv("GOVMOMI_FINDER_LIST_MODE") == "true" + +func (s *spec) listMode(isPath bool) bool { + if listMode { + return true + } + + if s.ListMode != nil { + return *s.ListMode + } + + return isPath +} + +type recurser struct { + Collector *property.Collector + + // All configures the recurses to fetch complete objects for leaf nodes. + All bool +} + +func (r recurser) List(ctx context.Context, s *spec, root list.Element, parts []string) ([]list.Element, error) { + if len(parts) == 0 { + // Include non-traversable leaf elements in result. For example, consider + // the pattern "./vm/my-vm-*", where the pattern should match the VMs and + // not try to traverse them. + // + // Include traversable leaf elements in result, if the contents + // field is set to false. + // + if !s.Contents || !s.traversable(root.Object.Reference()) { + return []list.Element{root}, nil + } + } + + k := list.Lister{ + Collector: r.Collector, + Reference: root.Object.Reference(), + Prefix: root.Path, + } + + if r.All && len(parts) < 2 { + k.All = true + } + + in, err := k.List(ctx) + if err != nil { + return nil, err + } + + // This folder is a leaf as far as the glob goes. + if len(parts) == 0 { + return in, nil + } + + all := parts + pattern := parts[0] + parts = parts[1:] + + var out []list.Element + for _, e := range in { + matched, err := path.Match(pattern, path.Base(e.Path)) + if err != nil { + return nil, err + } + + if !matched { + matched = strings.HasSuffix(e.Path, "/"+path.Join(all...)) + if matched { + // name contains a '/' + out = append(out, e) + } + + continue + } + + nres, err := r.List(ctx, s, e, parts) + if err != nil { + return nil, err + } + + out = append(out, nres...) + } + + return out, nil +} + +func (r recurser) Find(ctx context.Context, s *spec, root list.Element, parts []string) ([]list.Element, error) { + var out []list.Element + + if len(parts) > 0 { + pattern := parts[0] + matched, err := path.Match(pattern, path.Base(root.Path)) + if err != nil { + return nil, err + } + + if matched && s.wanted(root) { + out = append(out, root) + } + } + + if !s.traversable(root.Object) { + return out, nil + } + + k := list.Lister{ + Collector: r.Collector, + Reference: root.Object.Reference(), + Prefix: root.Path, + } + + in, err := k.List(ctx) + if err != nil { + return nil, err + } + + for _, e := range in { + nres, err := r.Find(ctx, s, e, parts) + if err != nil { + return nil, err + } + + out = append(out, nres...) + } + + return out, nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/cli/command.go b/vendor/github.com/vmware/govmomi/govc/cli/command.go new file mode 100644 index 0000000..e42533f --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/cli/command.go @@ -0,0 +1,199 @@ +/* +Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cli + +import ( + "context" + "flag" + "fmt" + "io" + "io/ioutil" + "os" + "sort" + "strings" + "text/tabwriter" + + "github.com/vmware/govmomi/vim25/types" +) + +type HasFlags interface { + // Register may be called more than once and should be idempotent. + Register(ctx context.Context, f *flag.FlagSet) + + // Process may be called more than once and should be idempotent. + Process(ctx context.Context) error +} + +type Command interface { + HasFlags + + Run(ctx context.Context, f *flag.FlagSet) error +} + +func generalHelp(w io.Writer, filter string) { + var cmds, matches []string + for name := range commands { + cmds = append(cmds, name) + + if filter != "" && strings.Contains(name, filter) { + matches = append(matches, name) + } + } + + if len(matches) == 0 { + fmt.Fprintf(w, "Usage of %s:\n", os.Args[0]) + } else { + fmt.Fprintf(w, "%s: command '%s' not found, did you mean:\n", os.Args[0], filter) + cmds = matches + } + + sort.Strings(cmds) + for _, name := range cmds { + fmt.Fprintf(w, " %s\n", name) + } +} + +func commandHelp(w io.Writer, name string, cmd Command, f *flag.FlagSet) { + type HasUsage interface { + Usage() string + } + + fmt.Fprintf(w, "Usage: %s %s [OPTIONS]", os.Args[0], name) + if u, ok := cmd.(HasUsage); ok { + fmt.Fprintf(w, " %s", u.Usage()) + } + fmt.Fprintf(w, "\n") + + type HasDescription interface { + Description() string + } + + if u, ok := cmd.(HasDescription); ok { + fmt.Fprintf(w, "\n%s\n", u.Description()) + } + + n := 0 + f.VisitAll(func(_ *flag.Flag) { + n += 1 + }) + + if n > 0 { + fmt.Fprintf(w, "\nOptions:\n") + tw := tabwriter.NewWriter(w, 2, 0, 2, ' ', 0) + f.VisitAll(func(f *flag.Flag) { + fmt.Fprintf(tw, "\t-%s=%s\t%s\n", f.Name, f.DefValue, f.Usage) + }) + tw.Flush() + } +} + +func clientLogout(ctx context.Context, cmd Command) error { + type logout interface { + Logout(context.Context) error + } + + if l, ok := cmd.(logout); ok { + return l.Logout(ctx) + } + + return nil +} + +func Run(args []string) int { + hw := os.Stderr + rc := 1 + hwrc := func(arg string) { + if arg == "-h" { + hw = os.Stdout + rc = 0 + } + } + + var err error + + if len(args) == 0 { + generalHelp(hw, "") + return rc + } + + // Look up real command name in aliases table. + name, ok := aliases[args[0]] + if !ok { + name = args[0] + } + + cmd, ok := commands[name] + if !ok { + hwrc(name) + generalHelp(hw, name) + return rc + } + + fs := flag.NewFlagSet("", flag.ContinueOnError) + fs.SetOutput(ioutil.Discard) + + ctx := context.Background() + + if id := os.Getenv("GOVC_OPERATION_ID"); id != "" { + ctx = context.WithValue(ctx, types.ID{}, id) + } + + cmd.Register(ctx, fs) + + if err = fs.Parse(args[1:]); err != nil { + goto error + } + + if err = cmd.Process(ctx); err != nil { + goto error + } + + if err = cmd.Run(ctx, fs); err != nil { + goto error + } + + if err = clientLogout(ctx, cmd); err != nil { + goto error + } + + return 0 + +error: + if err == flag.ErrHelp { + if len(args) == 2 { + hwrc(args[1]) + } + commandHelp(hw, args[0], cmd, fs) + } else { + if x, ok := err.(interface{ ExitCode() int }); ok { + // propagate exit code, e.g. from guest.run + rc = x.ExitCode() + } else { + w, ok := cmd.(interface{ WriteError(error) bool }) + if ok { + ok = w.WriteError(err) + } + if !ok { + fmt.Fprintf(os.Stderr, "%s: %s\n", os.Args[0], err) + } + } + } + + _ = clientLogout(ctx, cmd) + + return rc +} diff --git a/vendor/github.com/vmware/govmomi/govc/cli/register.go b/vendor/github.com/vmware/govmomi/govc/cli/register.go new file mode 100644 index 0000000..8af7f63 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/cli/register.go @@ -0,0 +1,43 @@ +/* +Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cli + +import "os" + +var commands = map[string]Command{} + +var aliases = map[string]string{} + +// hideUnreleased allows commands to be compiled into the govc binary without being registered by default. +// Unreleased commands are omitted from 'govc -h' help text and the generated govc/USAGE.md +// Setting the env var GOVC_SHOW_UNRELEASED=true enables any commands registered as unreleased. +var hideUnreleased = os.Getenv("GOVC_SHOW_UNRELEASED") != "true" + +func Register(name string, c Command, unreleased ...bool) { + if len(unreleased) != 0 && unreleased[0] && hideUnreleased { + return + } + commands[name] = c +} + +func Alias(name string, alias string) { + aliases[alias] = name +} + +func Commands() map[string]Command { + return commands +} diff --git a/vendor/github.com/vmware/govmomi/govc/datastore/cp.go b/vendor/github.com/vmware/govmomi/govc/datastore/cp.go new file mode 100644 index 0000000..e9fc774 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/datastore/cp.go @@ -0,0 +1,152 @@ +/* +Copyright (c) 2014-2018 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package datastore + +import ( + "context" + "flag" + "fmt" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/object" +) + +type cp struct { + target +} + +func init() { + cli.Register("datastore.cp", &cp{}) +} + +type target struct { + *flags.DatastoreFlag // The source Datastore and the default target Datastore + + dc *flags.DatacenterFlag // Optionally target a different Datacenter + ds *flags.DatastoreFlag // Optionally target a different Datastore + + kind bool + force bool +} + +func (cmd *target) FileManager() (*object.DatastoreFileManager, error) { + dc, err := cmd.Datacenter() + if err != nil { + return nil, err + } + + ds, err := cmd.Datastore() + if err != nil { + return nil, err + } + + m := ds.NewFileManager(dc, cmd.force) + + dc, err = cmd.dc.Datacenter() + if err != nil { + return nil, err + } + m.DatacenterTarget = dc + + return m, nil +} + +func (cmd *target) Register(ctx context.Context, f *flag.FlagSet) { + cmd.DatastoreFlag, ctx = flags.NewDatastoreFlag(ctx) + cmd.DatastoreFlag.Register(ctx, f) + + cmd.dc = &flags.DatacenterFlag{ + OutputFlag: cmd.OutputFlag, + ClientFlag: cmd.ClientFlag, + } + f.StringVar(&cmd.dc.Name, "dc-target", "", "Datacenter destination (defaults to -dc)") + + cmd.ds = &flags.DatastoreFlag{ + DatacenterFlag: cmd.dc, + } + f.StringVar(&cmd.ds.Name, "ds-target", "", "Datastore destination (defaults to -ds)") + + f.BoolVar(&cmd.kind, "t", true, "Use file type to choose disk or file manager") + f.BoolVar(&cmd.force, "f", false, "If true, overwrite any identically named file at the destination") +} + +func (cmd *target) Process(ctx context.Context) error { + if err := cmd.DatastoreFlag.Process(ctx); err != nil { + return err + } + + if cmd.dc.Name == "" { + // Use source DC as target DC + cmd.dc = cmd.DatacenterFlag + cmd.ds.DatacenterFlag = cmd.dc + } + + if cmd.ds.Name == "" { + // Use source DS as target DS + cmd.ds.Name = cmd.DatastoreFlag.Name + } + + return nil +} + +func (cmd *cp) Usage() string { + return "SRC DST" +} + +func (cmd *cp) Description() string { + return `Copy SRC to DST on DATASTORE. + +Examples: + govc datastore.cp foo/foo.vmx foo/foo.vmx.old + govc datastore.cp -f my.vmx foo/foo.vmx + govc datastore.cp disks/disk1.vmdk disks/disk2.vmdk + govc datastore.cp disks/disk1.vmdk -dc-target DC2 disks/disk2.vmdk + govc datastore.cp disks/disk1.vmdk -ds-target NFS-2 disks/disk2.vmdk` +} + +func (cmd *cp) Run(ctx context.Context, f *flag.FlagSet) error { + args := f.Args() + if len(args) != 2 { + return flag.ErrHelp + } + + m, err := cmd.FileManager() + if err != nil { + return err + } + + src, err := cmd.DatastorePath(args[0]) + if err != nil { + return err + } + + dst, err := cmd.target.ds.DatastorePath(args[1]) + if err != nil { + return err + } + + cp := m.CopyFile + if cmd.kind { + cp = m.Copy + } + + logger := cmd.ProgressLogger(fmt.Sprintf("Copying %s to %s...", src, dst)) + defer logger.Wait() + + return cp(m.WithProgress(ctx, logger), src, dst) +} diff --git a/vendor/github.com/vmware/govmomi/govc/datastore/create.go b/vendor/github.com/vmware/govmomi/govc/datastore/create.go new file mode 100644 index 0000000..a3f78d6 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/datastore/create.go @@ -0,0 +1,326 @@ +/* +Copyright (c) 2015-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package datastore + +import ( + "context" + "errors" + "flag" + "fmt" + "os" + "path/filepath" + "strings" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/vim25/soap" + "github.com/vmware/govmomi/vim25/types" +) + +type create struct { + *flags.HostSystemFlag + + // Generic options + Type typeFlag + Name string + Force bool + + // Options for NAS + RemoteHost string + RemotePath string + AccessMode string + UserName string + Password string + + // Options for VMFS + DiskCanonicalName string + Version *int32 + + // Options for local + Path string +} + +func init() { + cli.Register("datastore.create", &create{}) +} + +var nasTypes = []string{ + string(types.HostFileSystemVolumeFileSystemTypeNFS), + string(types.HostFileSystemVolumeFileSystemTypeNFS41), + string(types.HostFileSystemVolumeFileSystemTypeCIFS), +} + +var vmfsTypes = []string{ + string(types.HostFileSystemVolumeFileSystemTypeVMFS), +} + +var localTypes = []string{ + "local", +} + +var allTypes = []string{} + +func init() { + allTypes = append(allTypes, nasTypes...) + allTypes = append(allTypes, vmfsTypes...) + allTypes = append(allTypes, localTypes...) +} + +type typeFlag string + +func (t *typeFlag) Set(s string) error { + s = strings.ToLower(s) + for _, e := range allTypes { + if s == strings.ToLower(e) { + *t = typeFlag(e) + return nil + } + } + + return fmt.Errorf("unknown type") +} + +func (t *typeFlag) String() string { + return string(*t) +} + +func (t *typeFlag) partOf(m []string) bool { + for _, e := range m { + if t.String() == e { + return true + } + } + return false +} + +func (t *typeFlag) IsNasType() bool { + return t.partOf(nasTypes) +} + +func (t *typeFlag) IsVmfsType() bool { + return t.partOf(vmfsTypes) +} + +func (t *typeFlag) IsLocalType() bool { + return t.partOf(localTypes) +} + +func (cmd *create) Register(ctx context.Context, f *flag.FlagSet) { + cmd.HostSystemFlag, ctx = flags.NewHostSystemFlag(ctx) + cmd.HostSystemFlag.Register(ctx, f) + + modes := []string{ + string(types.HostMountModeReadOnly), + string(types.HostMountModeReadWrite), + } + + f.StringVar(&cmd.Name, "name", "", "Datastore name") + f.Var(&cmd.Type, "type", fmt.Sprintf("Datastore type (%s)", strings.Join(allTypes, "|"))) + f.BoolVar(&cmd.Force, "force", false, "Ignore DuplicateName error if datastore is already mounted on a host") + + // Options for NAS + f.StringVar(&cmd.RemoteHost, "remote-host", "", "Remote hostname of the NAS datastore") + f.StringVar(&cmd.RemotePath, "remote-path", "", "Remote path of the NFS mount point") + f.StringVar(&cmd.AccessMode, "mode", modes[0], + fmt.Sprintf("Access mode for the mount point (%s)", strings.Join(modes, "|"))) + f.StringVar(&cmd.UserName, "username", "", "Username to use when connecting (CIFS only)") + f.StringVar(&cmd.Password, "password", "", "Password to use when connecting (CIFS only)") + + // Options for VMFS + f.StringVar(&cmd.DiskCanonicalName, "disk", "", "Canonical name of disk (VMFS only)") + f.Var(flags.NewOptionalInt32(&cmd.Version), "version", "VMFS major version") + + // Options for Local + f.StringVar(&cmd.Path, "path", "", "Local directory path for the datastore (local only)") +} + +func (cmd *create) Process(ctx context.Context) error { + if err := cmd.HostSystemFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *create) Usage() string { + return "HOST..." +} + +func (cmd *create) Description() string { + return `Create datastore on HOST. + +Examples: + govc datastore.create -type nfs -name nfsDatastore -remote-host 10.143.2.232 -remote-path /share cluster1 + govc datastore.create -type vmfs -name vmfsDatastore -disk=mpx.vmhba0:C0:T0:L0 cluster1 + govc datastore.create -type local -name localDatastore -path /var/datastore host1` +} + +func (cmd *create) Run(ctx context.Context, f *flag.FlagSet) error { + hosts, err := cmd.HostSystems(f.Args()) + if err != nil { + return err + } + + switch { + case cmd.Type.IsNasType(): + return cmd.CreateNasDatastore(ctx, hosts) + case cmd.Type.IsVmfsType(): + return cmd.CreateVmfsDatastore(ctx, hosts) + case cmd.Type.IsLocalType(): + return cmd.CreateLocalDatastore(ctx, hosts) + default: + return fmt.Errorf("unhandled type %#v", cmd.Type) + } +} + +func (cmd *create) GetHostNasVolumeSpec() types.HostNasVolumeSpec { + localPath := cmd.Path + if localPath == "" { + localPath = cmd.Name + } + + s := types.HostNasVolumeSpec{ + LocalPath: localPath, + Type: cmd.Type.String(), + RemoteHost: cmd.RemoteHost, + RemotePath: cmd.RemotePath, + AccessMode: cmd.AccessMode, + UserName: cmd.UserName, + Password: cmd.Password, + } + + return s +} + +func (cmd *create) CreateNasDatastore(ctx context.Context, hosts []*object.HostSystem) error { + object := types.ManagedObjectReference{ + Type: "Datastore", + Value: fmt.Sprintf("%s:%s", cmd.RemoteHost, cmd.RemotePath), + } + + spec := cmd.GetHostNasVolumeSpec() + + for _, host := range hosts { + ds, err := host.ConfigManager().DatastoreSystem(ctx) + if err != nil { + return err + } + + _, err = ds.CreateNasDatastore(ctx, spec) + if err != nil { + if soap.IsSoapFault(err) { + switch fault := soap.ToSoapFault(err).VimFault().(type) { + case types.PlatformConfigFault: + if len(fault.FaultMessage) != 0 { + return errors.New(fault.FaultMessage[0].Message) + } + case types.DuplicateName: + if cmd.Force && fault.Object == object { + fmt.Fprintf(os.Stderr, "%s: '%s' already mounted\n", + host.InventoryPath, cmd.Name) + continue + } + } + } + + return fmt.Errorf("%s: %s", host.InventoryPath, err) + } + } + + return nil +} + +func (cmd *create) CreateVmfsDatastore(ctx context.Context, hosts []*object.HostSystem) error { + for _, host := range hosts { + ds, err := host.ConfigManager().DatastoreSystem(ctx) + if err != nil { + return err + } + + // Find the specified disk + disks, err := ds.QueryAvailableDisksForVmfs(ctx) + if err != nil { + return err + } + + var disk *types.HostScsiDisk + for _, e := range disks { + if e.CanonicalName == cmd.DiskCanonicalName { + disk = &e + break + } + } + + if disk == nil { + return fmt.Errorf("no eligible disk found for name %#v", cmd.DiskCanonicalName) + } + + // Query for creation options and pick the right one + options, err := ds.QueryVmfsDatastoreCreateOptions(ctx, disk.DevicePath) + if err != nil { + return err + } + + var option *types.VmfsDatastoreOption + for _, e := range options { + if _, ok := e.Info.(*types.VmfsDatastoreAllExtentOption); ok { + option = &e + break + } + } + + if option == nil { + return fmt.Errorf("cannot use entire disk for datastore for name %#v", cmd.DiskCanonicalName) + } + + spec := *option.Spec.(*types.VmfsDatastoreCreateSpec) + spec.Vmfs.VolumeName = cmd.Name + if cmd.Version != nil { + spec.Vmfs.MajorVersion = *cmd.Version + } + _, err = ds.CreateVmfsDatastore(ctx, spec) + if err != nil { + return err + } + } + + return nil +} + +func (cmd *create) CreateLocalDatastore(ctx context.Context, hosts []*object.HostSystem) error { + for _, host := range hosts { + ds, err := host.ConfigManager().DatastoreSystem(ctx) + if err != nil { + return err + } + + if cmd.Path == "" { + cmd.Path = cmd.Name + } + + if cmd.Name == "" { + cmd.Name = filepath.Base(cmd.Path) + } + + _, err = ds.CreateLocalDatastore(ctx, cmd.Name, cmd.Path) + if err != nil { + return err + } + } + + return nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/datastore/download.go b/vendor/github.com/vmware/govmomi/govc/datastore/download.go new file mode 100644 index 0000000..bb4cb8e --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/datastore/download.go @@ -0,0 +1,117 @@ +/* +Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package datastore + +import ( + "context" + "errors" + "flag" + "fmt" + "io" + "os" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/vim25/soap" +) + +type download struct { + *flags.DatastoreFlag + *flags.HostSystemFlag +} + +func init() { + cli.Register("datastore.download", &download{}) +} + +func (cmd *download) Register(ctx context.Context, f *flag.FlagSet) { + cmd.DatastoreFlag, ctx = flags.NewDatastoreFlag(ctx) + cmd.DatastoreFlag.Register(ctx, f) + + cmd.HostSystemFlag, ctx = flags.NewHostSystemFlag(ctx) + cmd.HostSystemFlag.Register(ctx, f) +} + +func (cmd *download) Process(ctx context.Context) error { + if err := cmd.DatastoreFlag.Process(ctx); err != nil { + return err + } + if err := cmd.HostSystemFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *download) Usage() string { + return "SOURCE DEST" +} + +func (cmd *download) Description() string { + return `Copy SOURCE from DS to DEST on the local system. + +If DEST name is "-", source is written to stdout. + +Examples: + govc datastore.download vm-name/vmware.log ./local.log + govc datastore.download vm-name/vmware.log - | grep -i error` +} + +func (cmd *download) Run(ctx context.Context, f *flag.FlagSet) error { + args := f.Args() + if len(args) != 2 { + return errors.New("invalid arguments") + } + + ds, err := cmd.Datastore() + if err != nil { + return err + } + + h, err := cmd.HostSystemIfSpecified() + if err != nil { + return err + } + + var via string + + if h != nil { + via = fmt.Sprintf(" via %s", h.InventoryPath) + ctx = ds.HostContext(ctx, h) + } + + p := soap.DefaultDownload + + src := args[0] + dst := args[1] + + if dst == "-" { + f, _, err := ds.Download(ctx, src, &p) + if err != nil { + return err + } + _, err = io.Copy(os.Stdout, f) + return err + } + + if cmd.DatastoreFlag.OutputFlag.TTY { + logger := cmd.DatastoreFlag.ProgressLogger(fmt.Sprintf("Downloading%s... ", via)) + p.Progress = logger + defer logger.Wait() + } + + return ds.DownloadFile(ctx, src, dst, &p) +} diff --git a/vendor/github.com/vmware/govmomi/govc/datastore/info.go b/vendor/github.com/vmware/govmomi/govc/datastore/info.go new file mode 100644 index 0000000..185469d --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/datastore/info.go @@ -0,0 +1,213 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package datastore + +import ( + "context" + "flag" + "fmt" + "io" + "os" + "text/tabwriter" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/property" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type info struct { + *flags.ClientFlag + *flags.OutputFlag + *flags.DatacenterFlag + + host bool +} + +func init() { + cli.Register("datastore.info", &info{}) +} + +func (cmd *info) Register(ctx context.Context, f *flag.FlagSet) { + cmd.ClientFlag, ctx = flags.NewClientFlag(ctx) + cmd.ClientFlag.Register(ctx, f) + + cmd.OutputFlag, ctx = flags.NewOutputFlag(ctx) + cmd.OutputFlag.Register(ctx, f) + + cmd.DatacenterFlag, ctx = flags.NewDatacenterFlag(ctx) + cmd.DatacenterFlag.Register(ctx, f) + + f.BoolVar(&cmd.host, "H", false, "Display info for Datastores shared between hosts") +} + +func (cmd *info) Process(ctx context.Context) error { + if err := cmd.ClientFlag.Process(ctx); err != nil { + return err + } + if err := cmd.OutputFlag.Process(ctx); err != nil { + return err + } + if err := cmd.DatacenterFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *info) Usage() string { + return "[PATH]..." +} + +func (cmd *info) Description() string { + return `Display info for Datastores. + +Examples: + govc datastore.info + govc datastore.info vsanDatastore + # info on Datastores shared between cluster hosts: + govc object.collect -s -d " " /dc1/host/k8s-cluster host | xargs govc datastore.info -H + # info on Datastores shared between VM hosts: + govc ls /dc1/vm/*k8s* | xargs -n1 -I% govc object.collect -s % summary.runtime.host | xargs govc datastore.info -H` +} + +func intersect(common []types.ManagedObjectReference, refs []types.ManagedObjectReference) []types.ManagedObjectReference { + var shared []types.ManagedObjectReference + for i := range common { + for j := range refs { + if common[i] == refs[j] { + shared = append(shared, common[i]) + break + } + } + } + return shared +} + +func (cmd *info) Run(ctx context.Context, f *flag.FlagSet) error { + c, err := cmd.Client() + if err != nil { + return err + } + pc := property.DefaultCollector(c) + + finder, err := cmd.Finder() + if err != nil { + return err + } + + args := f.Args() + if len(args) == 0 { + args = []string{"*"} + } + + var res infoResult + var props []string + + if cmd.OutputFlag.All() { + props = nil // Load everything + } else { + props = []string{"info", "summary"} // Load summary + } + + if cmd.host { + if f.NArg() == 0 { + return flag.ErrHelp + } + refs, err := cmd.ManagedObjects(ctx, args) + if err != nil { + return err + } + + var hosts []mo.HostSystem + err = pc.Retrieve(ctx, refs, []string{"name", "datastore"}, &hosts) + if err != nil { + return err + } + + refs = hosts[0].Datastore + for _, host := range hosts[1:] { + refs = intersect(refs, host.Datastore) + if len(refs) == 0 { + return fmt.Errorf("host %s (%s) has no shared datastores", host.Name, host.Reference()) + } + } + for i := range refs { + ds, err := finder.ObjectReference(ctx, refs[i]) + if err != nil { + return err + } + res.objects = append(res.objects, ds.(*object.Datastore)) + } + } else { + for _, arg := range args { + objects, err := finder.DatastoreList(ctx, arg) + if err != nil { + return err + } + res.objects = append(res.objects, objects...) + } + } + + if len(res.objects) != 0 { + refs := make([]types.ManagedObjectReference, 0, len(res.objects)) + for _, o := range res.objects { + refs = append(refs, o.Reference()) + } + + err = pc.Retrieve(ctx, refs, props, &res.Datastores) + if err != nil { + return err + } + } + + return cmd.WriteResult(&res) +} + +type infoResult struct { + Datastores []mo.Datastore + objects []*object.Datastore +} + +func (r *infoResult) Write(w io.Writer) error { + // Maintain order via r.objects as Property collector does not always return results in order. + objects := make(map[types.ManagedObjectReference]mo.Datastore, len(r.Datastores)) + for _, o := range r.Datastores { + objects[o.Reference()] = o + } + + tw := tabwriter.NewWriter(os.Stdout, 2, 0, 2, ' ', 0) + + for _, o := range r.objects { + ds := objects[o.Reference()] + s := ds.Summary + fmt.Fprintf(tw, "Name:\t%s\n", s.Name) + fmt.Fprintf(tw, " Path:\t%s\n", o.InventoryPath) + fmt.Fprintf(tw, " Type:\t%s\n", s.Type) + fmt.Fprintf(tw, " URL:\t%s\n", s.Url) + fmt.Fprintf(tw, " Capacity:\t%.1f GB\n", float64(s.Capacity)/(1<<30)) + fmt.Fprintf(tw, " Free:\t%.1f GB\n", float64(s.FreeSpace)/(1<<30)) + + switch info := ds.Info.(type) { + case *types.NasDatastoreInfo: + fmt.Fprintf(tw, " Remote:\t%s:%s\n", info.Nas.RemoteHost, info.Nas.RemotePath) + } + } + + return tw.Flush() +} diff --git a/vendor/github.com/vmware/govmomi/govc/datastore/ls.go b/vendor/github.com/vmware/govmomi/govc/datastore/ls.go new file mode 100644 index 0000000..48bf19d --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/datastore/ls.go @@ -0,0 +1,280 @@ +/* +Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package datastore + +import ( + "context" + "encoding/json" + "flag" + "fmt" + "io" + "path" + "strings" + "text/tabwriter" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/units" + "github.com/vmware/govmomi/vim25/types" +) + +type ls struct { + *flags.DatastoreFlag + *flags.OutputFlag + + long bool + slash bool + all bool + recurse bool +} + +func init() { + cli.Register("datastore.ls", &ls{}) +} + +func (cmd *ls) Register(ctx context.Context, f *flag.FlagSet) { + cmd.DatastoreFlag, ctx = flags.NewDatastoreFlag(ctx) + cmd.DatastoreFlag.Register(ctx, f) + + cmd.OutputFlag, ctx = flags.NewOutputFlag(ctx) + cmd.OutputFlag.Register(ctx, f) + + f.BoolVar(&cmd.long, "l", false, "Long listing format") + f.BoolVar(&cmd.slash, "p", false, "Append / indicator to directories") + f.BoolVar(&cmd.all, "a", false, "Do not ignore entries starting with .") + f.BoolVar(&cmd.recurse, "R", false, "List subdirectories recursively") +} + +func (cmd *ls) Process(ctx context.Context) error { + if err := cmd.DatastoreFlag.Process(ctx); err != nil { + return err + } + if err := cmd.OutputFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *ls) Usage() string { + return "[FILE]..." +} + +func isInvalid(err error) bool { + if f, ok := err.(types.HasFault); ok { + switch f.Fault().(type) { + case *types.InvalidArgument: + return true + } + } + + return false +} + +func (cmd *ls) Run(ctx context.Context, f *flag.FlagSet) error { + args := cmd.Args(f.Args()) + + ds, err := cmd.Datastore() + if err != nil { + return err + } + + b, err := ds.Browser(ctx) + if err != nil { + return err + } + + if len(args) == 0 { + args = append(args, object.DatastorePath{}) + } + + result := &listOutput{ + rs: make([]types.HostDatastoreBrowserSearchResults, 0), + cmd: cmd, + } + + for _, p := range args { + arg := p.Path + + spec := types.HostDatastoreBrowserSearchSpec{ + MatchPattern: []string{"*"}, + } + + if cmd.long { + spec.Details = &types.FileQueryFlags{ + FileType: true, + FileSize: true, + FileOwner: types.NewBool(true), // TODO: omitempty is generated, but seems to be required + Modification: true, + } + } + + for i := 0; ; i++ { + r, err := cmd.ListPath(b, arg, spec) + if err != nil { + // Treat the argument as a match pattern if not found as directory + if i == 0 && types.IsFileNotFound(err) || isInvalid(err) { + spec.MatchPattern[0] = path.Base(arg) + arg = path.Dir(arg) + continue + } + + return err + } + + // Treat an empty result against match pattern as file not found + if i == 1 && len(r) == 1 && len(r[0].File) == 0 { + return fmt.Errorf("file %s/%s was not found", r[0].FolderPath, spec.MatchPattern[0]) + } + + for n := range r { + result.add(r[n]) + } + + break + } + } + + return cmd.WriteResult(result) +} + +func (cmd *ls) ListPath(b *object.HostDatastoreBrowser, path string, spec types.HostDatastoreBrowserSearchSpec) ([]types.HostDatastoreBrowserSearchResults, error) { + ctx := context.TODO() + + path, err := cmd.DatastorePath(path) + if err != nil { + return nil, err + } + + search := b.SearchDatastore + if cmd.recurse { + search = b.SearchDatastoreSubFolders + } + + task, err := search(ctx, path, &spec) + if err != nil { + return nil, err + } + + info, err := task.WaitForResult(ctx, nil) + if err != nil { + return nil, err + } + + switch r := info.Result.(type) { + case types.HostDatastoreBrowserSearchResults: + return []types.HostDatastoreBrowserSearchResults{r}, nil + case types.ArrayOfHostDatastoreBrowserSearchResults: + return r.HostDatastoreBrowserSearchResults, nil + default: + panic(fmt.Sprintf("unknown result type: %T", r)) + } +} + +type listOutput struct { + rs []types.HostDatastoreBrowserSearchResults + cmd *ls +} + +func (o *listOutput) add(r types.HostDatastoreBrowserSearchResults) { + if o.cmd.recurse && !o.cmd.all { + // filter out ".hidden" directories + path := strings.SplitN(r.FolderPath, " ", 2) + if len(path) == 2 { + path = strings.Split(path[1], "/") + if path[0] == "." { + path = path[1:] + } + + for _, p := range path { + if p != "" && p[0] == '.' { + return + } + } + } + } + + res := r + res.File = nil + + for _, f := range r.File { + if f.GetFileInfo().Path[0] == '.' && !o.cmd.all { + continue + } + + if o.cmd.slash { + if d, ok := f.(*types.FolderFileInfo); ok { + d.Path += "/" + } + } + + res.File = append(res.File, f) + } + + o.rs = append(o.rs, res) +} + +// hasMultiplePaths returns whether or not the slice of search results contains +// results from more than one folder path. +func (o *listOutput) hasMultiplePaths() bool { + if len(o.rs) == 0 { + return false + } + + p := o.rs[0].FolderPath + + // Multiple paths if any entry is not equal to the first one. + for _, e := range o.rs { + if e.FolderPath != p { + return true + } + } + + return false +} + +func (o *listOutput) MarshalJSON() ([]byte, error) { + return json.Marshal(o.rs) +} + +func (o *listOutput) Write(w io.Writer) error { + // Only include path header if we're dealing with more than one path. + includeHeader := false + if o.hasMultiplePaths() { + includeHeader = true + } + + tw := tabwriter.NewWriter(w, 3, 0, 2, ' ', 0) + for i, r := range o.rs { + if includeHeader { + if i > 0 { + fmt.Fprintf(tw, "\n") + } + fmt.Fprintf(tw, "%s:\n", r.FolderPath) + } + for _, file := range r.File { + info := file.GetFileInfo() + if o.cmd.long { + fmt.Fprintf(tw, "%s\t%s\t%s\n", units.ByteSize(info.FileSize), info.Modification.Format("Mon Jan 2 15:04:05 2006"), info.Path) + } else { + fmt.Fprintf(tw, "%s\n", info.Path) + } + } + } + tw.Flush() + return nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/datastore/mkdir.go b/vendor/github.com/vmware/govmomi/govc/datastore/mkdir.go new file mode 100644 index 0000000..7cc21e7 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/datastore/mkdir.go @@ -0,0 +1,118 @@ +/* +Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package datastore + +import ( + "context" + "errors" + "flag" + "fmt" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/vim25/soap" + "github.com/vmware/govmomi/vim25/types" +) + +type mkdir struct { + *flags.DatastoreFlag + + createParents bool + isNamespace bool +} + +func init() { + cli.Register("datastore.mkdir", &mkdir{}) +} + +func (cmd *mkdir) Register(ctx context.Context, f *flag.FlagSet) { + cmd.DatastoreFlag, ctx = flags.NewDatastoreFlag(ctx) + cmd.DatastoreFlag.Register(ctx, f) + + f.BoolVar(&cmd.createParents, "p", false, "Create intermediate directories as needed") + f.BoolVar(&cmd.isNamespace, "namespace", false, "Return uuid of namespace created on vsan datastore") +} + +func (cmd *mkdir) Process(ctx context.Context) error { + if err := cmd.DatastoreFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *mkdir) Usage() string { + return "DIRECTORY" +} + +func (cmd *mkdir) Run(ctx context.Context, f *flag.FlagSet) error { + args := f.Args() + if len(args) == 0 { + return errors.New("missing operand") + } + + c, err := cmd.Client() + if err != nil { + return err + } + + if cmd.isNamespace { + var uuid string + var ds *object.Datastore + + if ds, err = cmd.Datastore(); err != nil { + return err + } + + path := args[0] + + nm := object.NewDatastoreNamespaceManager(c) + if uuid, err = nm.CreateDirectory(ctx, ds, path, ""); err != nil { + return err + } + + fmt.Println(uuid) + } else { + var dc *object.Datacenter + var path string + + dc, err = cmd.Datacenter() + if err != nil { + return err + } + + path, err = cmd.DatastorePath(args[0]) + if err != nil { + return err + } + + m := object.NewFileManager(c) + err = m.MakeDirectory(ctx, path, dc, cmd.createParents) + + // ignore EEXIST if -p flag is given + if err != nil && cmd.createParents { + if soap.IsSoapFault(err) { + soapFault := soap.ToSoapFault(err) + if _, ok := soapFault.VimFault().(types.FileAlreadyExists); ok { + return nil + } + } + } + } + + return err +} diff --git a/vendor/github.com/vmware/govmomi/govc/datastore/mv.go b/vendor/github.com/vmware/govmomi/govc/datastore/mv.go new file mode 100644 index 0000000..91ce42a --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/datastore/mv.go @@ -0,0 +1,77 @@ +/* +Copyright (c) 2014-2018 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package datastore + +import ( + "context" + "flag" + "fmt" + + "github.com/vmware/govmomi/govc/cli" +) + +type mv struct { + target +} + +func init() { + cli.Register("datastore.mv", &mv{}) +} + +func (cmd *mv) Usage() string { + return "SRC DST" +} + +func (cmd *mv) Description() string { + return `Move SRC to DST on DATASTORE. + +Examples: + govc datastore.mv foo/foo.vmx foo/foo.vmx.old + govc datastore.mv -f my.vmx foo/foo.vmx` +} + +func (cmd *mv) Run(ctx context.Context, f *flag.FlagSet) error { + args := f.Args() + if len(args) != 2 { + return flag.ErrHelp + } + + m, err := cmd.FileManager() + if err != nil { + return err + } + + src, err := cmd.DatastorePath(args[0]) + if err != nil { + return err + } + + dst, err := cmd.target.ds.DatastorePath(args[1]) + if err != nil { + return err + } + + mv := m.MoveFile + if cmd.kind { + mv = m.Move + } + + logger := cmd.ProgressLogger(fmt.Sprintf("Moving %s to %s...", src, dst)) + defer logger.Wait() + + return mv(m.WithProgress(ctx, logger), src, dst) +} diff --git a/vendor/github.com/vmware/govmomi/govc/datastore/remove.go b/vendor/github.com/vmware/govmomi/govc/datastore/remove.go new file mode 100644 index 0000000..12ec9a4 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/datastore/remove.go @@ -0,0 +1,90 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package datastore + +import ( + "context" + "flag" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" +) + +type remove struct { + *flags.HostSystemFlag + *flags.DatastoreFlag +} + +func init() { + cli.Register("datastore.remove", &remove{}) +} + +func (cmd *remove) Register(ctx context.Context, f *flag.FlagSet) { + cmd.HostSystemFlag, ctx = flags.NewHostSystemFlag(ctx) + cmd.HostSystemFlag.Register(ctx, f) + + cmd.DatastoreFlag, ctx = flags.NewDatastoreFlag(ctx) + cmd.DatastoreFlag.Register(ctx, f) +} + +func (cmd *remove) Process(ctx context.Context) error { + if err := cmd.HostSystemFlag.Process(ctx); err != nil { + return err + } + if err := cmd.DatastoreFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *remove) Usage() string { + return "HOST..." +} + +func (cmd *remove) Description() string { + return `Remove datastore from HOST. + +Examples: + govc datastore.remove -ds nfsDatastore cluster1 + govc datastore.remove -ds nasDatastore host1 host2 host3` +} + +func (cmd *remove) Run(ctx context.Context, f *flag.FlagSet) error { + ds, err := cmd.Datastore() + if err != nil { + return err + } + + hosts, err := cmd.HostSystems(f.Args()) + if err != nil { + return err + } + + for _, host := range hosts { + hds, err := host.ConfigManager().DatastoreSystem(ctx) + if err != nil { + return err + } + + err = hds.Remove(ctx, ds) + if err != nil { + return err + } + } + + return nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/datastore/rm.go b/vendor/github.com/vmware/govmomi/govc/datastore/rm.go new file mode 100644 index 0000000..9c29202 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/datastore/rm.go @@ -0,0 +1,117 @@ +/* +Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package datastore + +import ( + "context" + "flag" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/vim25/types" +) + +type rm struct { + *flags.DatastoreFlag + + kind bool + force bool + isNamespace bool +} + +func init() { + cli.Register("datastore.rm", &rm{}) + cli.Alias("datastore.rm", "datastore.delete") +} + +func (cmd *rm) Register(ctx context.Context, f *flag.FlagSet) { + cmd.DatastoreFlag, ctx = flags.NewDatastoreFlag(ctx) + cmd.DatastoreFlag.Register(ctx, f) + + f.BoolVar(&cmd.kind, "t", true, "Use file type to choose disk or file manager") + f.BoolVar(&cmd.force, "f", false, "Force; ignore nonexistent files and arguments") + f.BoolVar(&cmd.isNamespace, "namespace", false, "Path is uuid of namespace on vsan datastore") +} + +func (cmd *rm) Process(ctx context.Context) error { + if err := cmd.DatastoreFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *rm) Usage() string { + return "FILE" +} + +func (cmd *rm) Description() string { + return `Remove FILE from DATASTORE. + +Examples: + govc datastore.rm vm/vmware.log + govc datastore.rm vm + govc datastore.rm -f images/base.vmdk` +} + +func (cmd *rm) Run(ctx context.Context, f *flag.FlagSet) error { + args := f.Args() + if len(args) == 0 { + return flag.ErrHelp + } + + c, err := cmd.Client() + if err != nil { + return err + } + + var dc *object.Datacenter + dc, err = cmd.Datacenter() + if err != nil { + return err + } + + ds, err := cmd.Datastore() + if err != nil { + return err + } + + if cmd.isNamespace { + path := args[0] + + nm := object.NewDatastoreNamespaceManager(c) + err = nm.DeleteDirectory(ctx, dc, path) + } else { + fm := ds.NewFileManager(dc, cmd.force) + + remove := fm.DeleteFile // File delete + if cmd.kind { + remove = fm.Delete // VirtualDisk or File delete + } + + err = remove(ctx, args[0]) + } + + if err != nil { + if types.IsFileNotFound(err) && cmd.force { + // Ignore error + return nil + } + } + + return err +} diff --git a/vendor/github.com/vmware/govmomi/govc/datastore/tail.go b/vendor/github.com/vmware/govmomi/govc/datastore/tail.go new file mode 100644 index 0000000..5e5ef6d --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/datastore/tail.go @@ -0,0 +1,137 @@ +/* +Copyright (c) 2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package datastore + +import ( + "context" + "flag" + "io" + "os" + "time" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" +) + +type tail struct { + *flags.DatastoreFlag + *flags.HostSystemFlag + + count int64 + lines int + follow bool +} + +func init() { + cli.Register("datastore.tail", &tail{}) +} + +func (cmd *tail) Register(ctx context.Context, f *flag.FlagSet) { + cmd.DatastoreFlag, ctx = flags.NewDatastoreFlag(ctx) + cmd.DatastoreFlag.Register(ctx, f) + + cmd.HostSystemFlag, ctx = flags.NewHostSystemFlag(ctx) + cmd.HostSystemFlag.Register(ctx, f) + + f.Int64Var(&cmd.count, "c", -1, "Output the last NUM bytes") + f.IntVar(&cmd.lines, "n", 10, "Output the last NUM lines") + f.BoolVar(&cmd.follow, "f", false, "Output appended data as the file grows") +} + +func (cmd *tail) Description() string { + return `Output the last part of datastore files. + +Examples: + govc datastore.tail -n 100 vm-name/vmware.log + govc datastore.tail -n 0 -f vm-name/vmware.log` +} + +func (cmd *tail) Process(ctx context.Context) error { + if err := cmd.DatastoreFlag.Process(ctx); err != nil { + return err + } + if err := cmd.HostSystemFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *tail) Usage() string { + return "PATH" +} + +func (cmd *tail) Run(ctx context.Context, f *flag.FlagSet) error { + if f.NArg() != 1 { + return flag.ErrHelp + } + + p := cmd.Args(f.Args())[0] + + ds, err := cmd.Datastore() + if err != nil { + return err + } + + h, err := cmd.HostSystemIfSpecified() + if err != nil { + return err + } + + if h != nil { + ctx = ds.HostContext(ctx, h) + } + + file, err := ds.Open(ctx, p.Path) + if err != nil { + return err + } + + var reader io.ReadCloser = file + + var offset int64 + + if cmd.count >= 0 { + info, serr := file.Stat() + if serr != nil { + return serr + } + + if info.Size() > cmd.count { + offset = info.Size() - cmd.count + + _, err = file.Seek(offset, io.SeekStart) + if err != nil { + return err + } + } + } else if cmd.lines >= 0 { + err = file.Tail(cmd.lines) + if err != nil { + return err + } + } + + if cmd.follow { + reader = file.Follow(time.Second) + } + + _, err = io.Copy(os.Stdout, reader) + + _ = reader.Close() + + return err +} diff --git a/vendor/github.com/vmware/govmomi/govc/datastore/upload.go b/vendor/github.com/vmware/govmomi/govc/datastore/upload.go new file mode 100644 index 0000000..2d9420d --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/datastore/upload.go @@ -0,0 +1,98 @@ +/* +Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package datastore + +import ( + "context" + "errors" + "flag" + "os" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/vim25/soap" +) + +type upload struct { + *flags.OutputFlag + *flags.DatastoreFlag +} + +func init() { + cli.Register("datastore.upload", &upload{}) +} + +func (cmd *upload) Register(ctx context.Context, f *flag.FlagSet) { + cmd.OutputFlag, ctx = flags.NewOutputFlag(ctx) + cmd.OutputFlag.Register(ctx, f) + + cmd.DatastoreFlag, ctx = flags.NewDatastoreFlag(ctx) + cmd.DatastoreFlag.Register(ctx, f) +} + +func (cmd *upload) Process(ctx context.Context) error { + if err := cmd.OutputFlag.Process(ctx); err != nil { + return err + } + if err := cmd.DatastoreFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *upload) Usage() string { + return "SOURCE DEST" +} + +func (cmd *upload) Description() string { + return `Copy SOURCE from the local system to DEST on DS. + +If SOURCE name is "-", read source from stdin. + +Examples: + govc datastore.upload -ds datastore1 ./config.iso vm-name/config.iso + genisoimage ... | govc datastore.upload -ds datastore1 - vm-name/config.iso` +} + +func (cmd *upload) Run(ctx context.Context, f *flag.FlagSet) error { + args := f.Args() + if len(args) != 2 { + return errors.New("invalid arguments") + } + + ds, err := cmd.Datastore() + if err != nil { + return err + } + + p := soap.DefaultUpload + + src := args[0] + dst := args[1] + + if src == "-" { + return ds.Upload(ctx, os.Stdin, dst, &p) + } + + if cmd.OutputFlag.TTY { + logger := cmd.ProgressLogger("Uploading... ") + p.Progress = logger + defer logger.Wait() + } + + return ds.UploadFile(ctx, src, dst, &p) +} diff --git a/vendor/github.com/vmware/govmomi/govc/flags/client.go b/vendor/github.com/vmware/govmomi/govc/flags/client.go new file mode 100644 index 0000000..fe8b451 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/flags/client.go @@ -0,0 +1,508 @@ +/* +Copyright (c) 2014-2018 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flags + +import ( + "context" + "crypto/tls" + "errors" + "flag" + "fmt" + "net/url" + "os" + "os/signal" + "path/filepath" + "strings" + "syscall" + "time" + + "github.com/vmware/govmomi/session" + "github.com/vmware/govmomi/session/cache" + "github.com/vmware/govmomi/session/keepalive" + "github.com/vmware/govmomi/vapi/rest" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/soap" +) + +const ( + envURL = "GOVC_URL" + envUsername = "GOVC_USERNAME" + envPassword = "GOVC_PASSWORD" + envCertificate = "GOVC_CERTIFICATE" + envPrivateKey = "GOVC_PRIVATE_KEY" + envInsecure = "GOVC_INSECURE" + envPersist = "GOVC_PERSIST_SESSION" + envMinAPIVersion = "GOVC_MIN_API_VERSION" + envVimNamespace = "GOVC_VIM_NAMESPACE" + envVimVersion = "GOVC_VIM_VERSION" + envTLSCaCerts = "GOVC_TLS_CA_CERTS" + envTLSKnownHosts = "GOVC_TLS_KNOWN_HOSTS" + + defaultMinVimVersion = "5.5" +) + +const cDescr = "ESX or vCenter URL" + +type ClientFlag struct { + common + + *DebugFlag + + username string + password string + cert string + key string + persist bool + minAPIVersion string + vimNamespace string + vimVersion string + tlsCaCerts string + tlsKnownHosts string + client *vim25.Client + restClient *rest.Client + Session cache.Session +} + +var ( + home = os.Getenv("GOVMOMI_HOME") + clientFlagKey = flagKey("client") +) + +func init() { + if home == "" { + home = filepath.Join(os.Getenv("HOME"), ".govmomi") + } +} + +func NewClientFlag(ctx context.Context) (*ClientFlag, context.Context) { + if v := ctx.Value(clientFlagKey); v != nil { + return v.(*ClientFlag), ctx + } + + v := &ClientFlag{} + v.DebugFlag, ctx = NewDebugFlag(ctx) + ctx = context.WithValue(ctx, clientFlagKey, v) + return v, ctx +} + +func (flag *ClientFlag) String() string { + url := flag.Session.Endpoint() + if url == nil { + return "" + } + + return url.String() +} + +func (flag *ClientFlag) Set(s string) error { + var err error + + flag.Session.URL, err = soap.ParseURL(s) + + return err +} + +func (flag *ClientFlag) Register(ctx context.Context, f *flag.FlagSet) { + flag.RegisterOnce(func() { + flag.DebugFlag.Register(ctx, f) + + { + flag.Set(os.Getenv(envURL)) + usage := fmt.Sprintf("%s [%s]", cDescr, envURL) + f.Var(flag, "u", usage) + } + + { + flag.username = os.Getenv(envUsername) + flag.password = os.Getenv(envPassword) + } + + { + value := os.Getenv(envCertificate) + usage := fmt.Sprintf("Certificate [%s]", envCertificate) + f.StringVar(&flag.cert, "cert", value, usage) + } + + { + value := os.Getenv(envPrivateKey) + usage := fmt.Sprintf("Private key [%s]", envPrivateKey) + f.StringVar(&flag.key, "key", value, usage) + } + + { + insecure := false + switch env := strings.ToLower(os.Getenv(envInsecure)); env { + case "1", "true": + insecure = true + } + + usage := fmt.Sprintf("Skip verification of server certificate [%s]", envInsecure) + f.BoolVar(&flag.Session.Insecure, "k", insecure, usage) + } + + { + persist := true + switch env := strings.ToLower(os.Getenv(envPersist)); env { + case "0", "false": + persist = false + } + + usage := fmt.Sprintf("Persist session to disk [%s]", envPersist) + f.BoolVar(&flag.persist, "persist-session", persist, usage) + } + + { + env := os.Getenv(envMinAPIVersion) + if env == "" { + env = defaultMinVimVersion + } + + flag.minAPIVersion = env + } + + { + value := os.Getenv(envVimNamespace) + if value == "" { + value = vim25.Namespace + } + usage := fmt.Sprintf("Vim namespace [%s]", envVimNamespace) + f.StringVar(&flag.vimNamespace, "vim-namespace", value, usage) + } + + { + value := os.Getenv(envVimVersion) + if value == "" { + value = vim25.Version + } + usage := fmt.Sprintf("Vim version [%s]", envVimVersion) + f.StringVar(&flag.vimVersion, "vim-version", value, usage) + } + + { + value := os.Getenv(envTLSCaCerts) + usage := fmt.Sprintf("TLS CA certificates file [%s]", envTLSCaCerts) + f.StringVar(&flag.tlsCaCerts, "tls-ca-certs", value, usage) + } + + { + value := os.Getenv(envTLSKnownHosts) + usage := fmt.Sprintf("TLS known hosts file [%s]", envTLSKnownHosts) + f.StringVar(&flag.tlsKnownHosts, "tls-known-hosts", value, usage) + } + }) +} + +func (flag *ClientFlag) Process(ctx context.Context) error { + return flag.ProcessOnce(func() error { + err := flag.DebugFlag.Process(ctx) + if err != nil { + return err + } + + if flag.Session.URL == nil { + return errors.New("specify an " + cDescr) + } + + if !flag.persist { + flag.Session.Passthrough = true + } + + flag.username, err = session.Secret(flag.username) + if err != nil { + return err + } + flag.password, err = session.Secret(flag.password) + if err != nil { + return err + } + + // Override username if set + if flag.username != "" { + var password string + var ok bool + + if flag.Session.URL.User != nil { + password, ok = flag.Session.URL.User.Password() + } + + if ok { + flag.Session.URL.User = url.UserPassword(flag.username, password) + } else { + flag.Session.URL.User = url.User(flag.username) + } + } + + // Override password if set + if flag.password != "" { + var username string + + if flag.Session.URL.User != nil { + username = flag.Session.URL.User.Username() + } + + flag.Session.URL.User = url.UserPassword(username, flag.password) + } + + return nil + }) +} + +func (flag *ClientFlag) ConfigureTLS(sc *soap.Client) error { + if flag.cert != "" { + cert, err := tls.LoadX509KeyPair(flag.cert, flag.key) + if err != nil { + return fmt.Errorf("%s=%q %s=%q: %s", envCertificate, flag.cert, envPrivateKey, flag.key, err) + } + + sc.SetCertificate(cert) + } + + // Set namespace and version + sc.Namespace = "urn:" + flag.vimNamespace + sc.Version = flag.vimVersion + + sc.UserAgent = fmt.Sprintf("govc/%s", Version) + + if err := flag.SetRootCAs(sc); err != nil { + return err + } + + if err := sc.LoadThumbprints(flag.tlsKnownHosts); err != nil { + return err + } + + t := sc.DefaultTransport() + var err error + + value := os.Getenv("GOVC_TLS_HANDSHAKE_TIMEOUT") + if value != "" { + t.TLSHandshakeTimeout, err = time.ParseDuration(value) + if err != nil { + return err + } + } + + return nil +} + +func (flag *ClientFlag) SetRootCAs(c *soap.Client) error { + if flag.tlsCaCerts != "" { + return c.SetRootCAs(flag.tlsCaCerts) + } + return nil +} + +func isDevelopmentVersion(apiVersion string) bool { + // Skip version check for development builds which can be in the form of "r4A70F" or "6.5.x" + return strings.Count(apiVersion, ".") == 0 || strings.HasSuffix(apiVersion, ".x") +} + +// apiVersionValid returns whether or not the API version supported by the +// server the client is connected to is not recent enough. +func apiVersionValid(c *vim25.Client, minVersionString string) error { + if minVersionString == "-" { + // Disable version check + return nil + } + + apiVersion := c.ServiceContent.About.ApiVersion + if isDevelopmentVersion(apiVersion) { + return nil + } + + realVersion, err := ParseVersion(apiVersion) + if err != nil { + return fmt.Errorf("error parsing API version %q: %s", apiVersion, err) + } + + minVersion, err := ParseVersion(minVersionString) + if err != nil { + return fmt.Errorf("error parsing %s=%q: %s", envMinAPIVersion, minVersionString, err) + } + + if !minVersion.Lte(realVersion) { + err = fmt.Errorf("require API version %q, connected to API version %q (set %s to override)", + minVersionString, + c.ServiceContent.About.ApiVersion, + envMinAPIVersion) + return err + } + + return nil +} + +func (flag *ClientFlag) Client() (*vim25.Client, error) { + if flag.client != nil { + return flag.client, nil + } + + c := new(vim25.Client) + err := flag.Session.Login(context.Background(), c, flag.ConfigureTLS) + if err != nil { + return nil, err + } + + // Check that the endpoint has the right API version + err = apiVersionValid(c, flag.minAPIVersion) + if err != nil { + return nil, err + } + + if flag.vimVersion == "" { + err = c.UseServiceVersion() + if err != nil { + return nil, err + } + } + + // Retry twice when a temporary I/O error occurs. + // This means a maximum of 3 attempts. + c.RoundTripper = vim25.Retry(c.Client, vim25.TemporaryNetworkError(3)) + flag.client = c + + return flag.client, nil +} + +func (flag *ClientFlag) RestClient() (*rest.Client, error) { + if flag.restClient != nil { + return flag.restClient, nil + } + + c := new(rest.Client) + + err := flag.Session.Login(context.Background(), c, flag.ConfigureTLS) + if err != nil { + return nil, err + } + + flag.restClient = c + return flag.restClient, nil +} + +func (flag *ClientFlag) KeepAlive(client cache.Client) { + switch c := client.(type) { + case *vim25.Client: + keepalive.NewHandlerSOAP(c, 0, nil).Start() + case *rest.Client: + keepalive.NewHandlerREST(c, 0, nil).Start() + default: + panic(fmt.Sprintf("unsupported client type=%T", client)) + } +} + +func (flag *ClientFlag) Logout(ctx context.Context) error { + if flag.client != nil { + _ = flag.Session.Logout(ctx, flag.client) + } + + if flag.restClient != nil { + _ = flag.Session.Logout(ctx, flag.restClient) + } + + return nil +} + +// Environ returns the govc environment variables for this connection +func (flag *ClientFlag) Environ(extra bool) []string { + var env []string + add := func(k, v string) { + env = append(env, fmt.Sprintf("%s=%s", k, v)) + } + + u := *flag.Session.URL + if u.User != nil { + add(envUsername, u.User.Username()) + + if p, ok := u.User.Password(); ok { + add(envPassword, p) + } + + u.User = nil + } + + if u.Path == vim25.Path { + u.Path = "" + } + u.Fragment = "" + u.RawQuery = "" + + add(envURL, strings.TrimPrefix(u.String(), "https://")) + + keys := []string{ + envCertificate, + envPrivateKey, + envInsecure, + envPersist, + envMinAPIVersion, + envVimNamespace, + envVimVersion, + } + + for _, k := range keys { + if v := os.Getenv(k); v != "" { + add(k, v) + } + } + + if extra { + add("GOVC_URL_SCHEME", flag.Session.URL.Scheme) + + v := strings.SplitN(u.Host, ":", 2) + add("GOVC_URL_HOST", v[0]) + if len(v) == 2 { + add("GOVC_URL_PORT", v[1]) + } + + add("GOVC_URL_PATH", flag.Session.URL.Path) + + if f := flag.Session.URL.Fragment; f != "" { + add("GOVC_URL_FRAGMENT", f) + } + + if q := flag.Session.URL.RawQuery; q != "" { + add("GOVC_URL_QUERY", q) + } + } + + return env +} + +// WithCancel calls the given function, returning when complete or canceled via SIGINT. +func (flag *ClientFlag) WithCancel(ctx context.Context, f func(context.Context) error) error { + sig := make(chan os.Signal, 1) + signal.Notify(sig, syscall.SIGINT) + + wctx, cancel := context.WithCancel(ctx) + defer cancel() + + done := make(chan bool) + var werr error + + go func() { + defer close(done) + werr = f(wctx) + }() + + select { + case <-sig: + cancel() + <-done // Wait for f() to complete + case <-done: + } + + return werr +} diff --git a/vendor/github.com/vmware/govmomi/govc/flags/cluster.go b/vendor/github.com/vmware/govmomi/govc/flags/cluster.go new file mode 100644 index 0000000..a386d33 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/flags/cluster.go @@ -0,0 +1,204 @@ +/* +Copyright (c) 2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flags + +import ( + "context" + "flag" + "fmt" + "os" + + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/property" + "github.com/vmware/govmomi/view" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type ClusterFlag struct { + common + + *DatacenterFlag + + Name string + + cluster *object.ClusterComputeResource + pc *property.Collector +} + +var clusterFlagKey = flagKey("cluster") + +func NewClusterFlag(ctx context.Context) (*ClusterFlag, context.Context) { + if v := ctx.Value(clusterFlagKey); v != nil { + return v.(*ClusterFlag), ctx + } + + v := &ClusterFlag{} + v.DatacenterFlag, ctx = NewDatacenterFlag(ctx) + ctx = context.WithValue(ctx, clusterFlagKey, v) + return v, ctx +} + +func (f *ClusterFlag) Register(ctx context.Context, fs *flag.FlagSet) { + f.RegisterOnce(func() { + f.DatacenterFlag.Register(ctx, fs) + + env := "GOVC_CLUSTER" + value := os.Getenv(env) + usage := fmt.Sprintf("Cluster [%s]", env) + fs.StringVar(&f.Name, "cluster", value, usage) + }) +} + +// RegisterPlacement registers the -cluster flag without using GOVC_CLUSTER env as the default value, +// usage is specific to VM placement. +func (f *ClusterFlag) RegisterPlacement(ctx context.Context, fs *flag.FlagSet) { + f.RegisterOnce(func() { + f.DatacenterFlag.Register(ctx, fs) + + fs.StringVar(&f.Name, "cluster", "", "Use cluster for VM placement via DRS") + }) +} + +func (f *ClusterFlag) Process(ctx context.Context) error { + return f.ProcessOnce(func() error { + if err := f.DatacenterFlag.Process(ctx); err != nil { + return err + } + return nil + }) +} + +func (f *ClusterFlag) Cluster() (*object.ClusterComputeResource, error) { + if f.cluster != nil { + return f.cluster, nil + } + + finder, err := f.Finder() + if err != nil { + return nil, err + } + + if f.cluster, err = finder.ClusterComputeResourceOrDefault(context.TODO(), f.Name); err != nil { + return nil, err + } + + f.pc = property.DefaultCollector(f.cluster.Client()) + + return f.cluster, nil +} + +func (f *ClusterFlag) ClusterIfSpecified() (*object.ClusterComputeResource, error) { + if f.Name == "" { + return nil, nil + } + return f.Cluster() +} + +func (f *ClusterFlag) Reconfigure(ctx context.Context, spec types.BaseComputeResourceConfigSpec) error { + cluster, err := f.Cluster() + if err != nil { + return err + } + + task, err := cluster.Reconfigure(ctx, spec, true) + if err != nil { + return err + } + + logger := f.ProgressLogger(fmt.Sprintf("Reconfigure %s...", cluster.InventoryPath)) + defer logger.Wait() + + _, err = task.WaitForResult(ctx, logger) + return err +} + +func (f *ClusterFlag) objectMap(ctx context.Context, kind string, names []string) (map[string]types.ManagedObjectReference, error) { + cluster, err := f.Cluster() + if err != nil { + return nil, err + } + + objects := make(map[string]types.ManagedObjectReference, len(names)) + for _, name := range names { + objects[name] = types.ManagedObjectReference{} + } + + m := view.NewManager(cluster.Client()) + v, err := m.CreateContainerView(ctx, cluster.Reference(), []string{kind}, true) + if err != nil { + return nil, err + } + + defer func() { + _ = v.Destroy(ctx) + }() + + var entities []mo.ManagedEntity + + err = v.Retrieve(ctx, []string{"ManagedEntity"}, []string{"name"}, &entities) + if err != nil { + return nil, err + } + + for _, e := range entities { + if _, ok := objects[e.Name]; ok { + objects[e.Name] = e.Self + } + } + + for name, ref := range objects { + if ref.Value == "" { + return nil, fmt.Errorf("%s %q not found", kind, name) + } + } + + return objects, nil +} + +func (f *ClusterFlag) ObjectList(ctx context.Context, kind string, names []string) ([]types.ManagedObjectReference, error) { + objs, err := f.objectMap(ctx, kind, names) + if err != nil { + return nil, err + } + + var refs []types.ManagedObjectReference + + for _, name := range names { // preserve order + refs = append(refs, objs[name]) + } + + return refs, nil +} + +func (f *ClusterFlag) Names(ctx context.Context, refs []types.ManagedObjectReference) (map[types.ManagedObjectReference]string, error) { + names := make(map[types.ManagedObjectReference]string, len(refs)) + + if len(refs) != 0 { + var objs []mo.ManagedEntity + err := f.pc.Retrieve(ctx, refs, []string{"name"}, &objs) + if err != nil { + return nil, err + } + + for _, obj := range objs { + names[obj.Self] = obj.Name + } + } + + return names, nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/flags/common.go b/vendor/github.com/vmware/govmomi/govc/flags/common.go new file mode 100644 index 0000000..2b133b8 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/flags/common.go @@ -0,0 +1,38 @@ +/* +Copyright (c) 2015-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +package flags + +import "sync" + +// Key type for storing flag instances in a context.Context. +type flagKey string + +// Type to help flags out with only registering/processing once. +type common struct { + register sync.Once + process sync.Once +} + +func (c *common) RegisterOnce(fn func()) { + c.register.Do(fn) +} + +func (c *common) ProcessOnce(fn func() error) (err error) { + c.process.Do(func() { + err = fn() + }) + return err +} diff --git a/vendor/github.com/vmware/govmomi/govc/flags/datacenter.go b/vendor/github.com/vmware/govmomi/govc/flags/datacenter.go new file mode 100644 index 0000000..94dd126 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/flags/datacenter.go @@ -0,0 +1,221 @@ +/* +Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flags + +import ( + "context" + "flag" + "fmt" + "os" + "strings" + + "github.com/vmware/govmomi/find" + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/property" + "github.com/vmware/govmomi/vim25/types" +) + +type DatacenterFlag struct { + common + + *ClientFlag + *OutputFlag + + Name string + dc *object.Datacenter + finder *find.Finder + err error +} + +var datacenterFlagKey = flagKey("datacenter") + +func NewDatacenterFlag(ctx context.Context) (*DatacenterFlag, context.Context) { + if v := ctx.Value(datacenterFlagKey); v != nil { + return v.(*DatacenterFlag), ctx + } + + v := &DatacenterFlag{} + v.ClientFlag, ctx = NewClientFlag(ctx) + v.OutputFlag, ctx = NewOutputFlag(ctx) + ctx = context.WithValue(ctx, datacenterFlagKey, v) + return v, ctx +} + +func (flag *DatacenterFlag) Register(ctx context.Context, f *flag.FlagSet) { + flag.RegisterOnce(func() { + flag.ClientFlag.Register(ctx, f) + flag.OutputFlag.Register(ctx, f) + + env := "GOVC_DATACENTER" + value := os.Getenv(env) + usage := fmt.Sprintf("Datacenter [%s]", env) + f.StringVar(&flag.Name, "dc", value, usage) + }) +} + +func (flag *DatacenterFlag) Process(ctx context.Context) error { + return flag.ProcessOnce(func() error { + if err := flag.ClientFlag.Process(ctx); err != nil { + return err + } + if err := flag.OutputFlag.Process(ctx); err != nil { + return err + } + return nil + }) +} + +func (flag *DatacenterFlag) Finder(all ...bool) (*find.Finder, error) { + if flag.finder != nil { + return flag.finder, nil + } + + c, err := flag.Client() + if err != nil { + return nil, err + } + + allFlag := false + if len(all) == 1 { + allFlag = all[0] + } + finder := find.NewFinder(c, allFlag) + + // Datacenter is not required (ls command for example). + // Set for relative func if dc flag is given or + // if there is a single (default) Datacenter + ctx := context.TODO() + if flag.Name == "" { + flag.dc, flag.err = finder.DefaultDatacenter(ctx) + } else { + if flag.dc, err = finder.Datacenter(ctx, flag.Name); err != nil { + return nil, err + } + } + + finder.SetDatacenter(flag.dc) + + flag.finder = finder + + return flag.finder, nil +} + +func (flag *DatacenterFlag) Datacenter() (*object.Datacenter, error) { + if flag.dc != nil { + return flag.dc, nil + } + + _, err := flag.Finder() + if err != nil { + return nil, err + } + + if flag.err != nil { + // Should only happen if no dc is specified and len(dcs) > 1 + return nil, flag.err + } + + return flag.dc, err +} + +func (flag *DatacenterFlag) DatacenterIfSpecified() (*object.Datacenter, error) { + if flag.Name == "" { + return nil, nil + } + return flag.Datacenter() +} + +func (flag *DatacenterFlag) ManagedObject(ctx context.Context, arg string) (types.ManagedObjectReference, error) { + var ref types.ManagedObjectReference + + finder, err := flag.Finder() + if err != nil { + return ref, err + } + + if ref.FromString(arg) { + if strings.HasPrefix(ref.Type, "com.vmware.content.") { + return ref, nil // special case for content library + } + pc := property.DefaultCollector(flag.client) + var content []types.ObjectContent + err = pc.RetrieveOne(ctx, ref, []string{"name"}, &content) + if err == nil { + return ref, nil + } + } + + l, err := finder.ManagedObjectList(ctx, arg) + if err != nil { + return ref, err + } + + switch len(l) { + case 0: + return ref, fmt.Errorf("%s not found", arg) + case 1: + return l[0].Object.Reference(), nil + default: + var objs []types.ManagedObjectReference + for _, o := range l { + objs = append(objs, o.Object.Reference()) + } + return ref, fmt.Errorf("%d objects at path %q: %s", len(l), arg, objs) + } +} + +func (flag *DatacenterFlag) ManagedObjects(ctx context.Context, args []string) ([]types.ManagedObjectReference, error) { + var refs []types.ManagedObjectReference + + c, err := flag.Client() + if err != nil { + return nil, err + } + + if len(args) == 0 { + refs = append(refs, c.ServiceContent.RootFolder) + return refs, nil + } + + finder, err := flag.Finder() + if err != nil { + return nil, err + } + + for _, arg := range args { + var ref types.ManagedObjectReference + if ref.FromString(arg) { + // e.g. output from object.collect + refs = append(refs, ref) + continue + } + elements, err := finder.ManagedObjectList(ctx, arg) + if err != nil { + return nil, err + } + + if len(elements) == 0 { + return nil, fmt.Errorf("object '%s' not found", arg) + } + + for _, e := range elements { + refs = append(refs, e.Object.Reference()) + } + } + + return refs, nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/flags/datastore.go b/vendor/github.com/vmware/govmomi/govc/flags/datastore.go new file mode 100644 index 0000000..bbe7e8c --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/flags/datastore.go @@ -0,0 +1,146 @@ +/* +Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flags + +import ( + "context" + "flag" + "fmt" + "os" + + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/vim25/types" +) + +type DatastoreFlag struct { + common + + *DatacenterFlag + + Name string + + ds *object.Datastore +} + +var datastoreFlagKey = flagKey("datastore") + +// NewCustomDatastoreFlag creates and returns a new DatastoreFlag without +// trying to retrieve an existing one from the specified context. +func NewCustomDatastoreFlag(ctx context.Context) (*DatastoreFlag, context.Context) { + v := &DatastoreFlag{} + v.DatacenterFlag, ctx = NewDatacenterFlag(ctx) + return v, ctx +} + +func NewDatastoreFlag(ctx context.Context) (*DatastoreFlag, context.Context) { + if v := ctx.Value(datastoreFlagKey); v != nil { + return v.(*DatastoreFlag), ctx + } + + v, ctx := NewCustomDatastoreFlag(ctx) + ctx = context.WithValue(ctx, datastoreFlagKey, v) + return v, ctx +} + +func (f *DatastoreFlag) Register(ctx context.Context, fs *flag.FlagSet) { + f.RegisterOnce(func() { + f.DatacenterFlag.Register(ctx, fs) + + env := "GOVC_DATASTORE" + value := os.Getenv(env) + usage := fmt.Sprintf("Datastore [%s]", env) + fs.StringVar(&f.Name, "ds", value, usage) + }) +} + +func (f *DatastoreFlag) Process(ctx context.Context) error { + return f.ProcessOnce(func() error { + if err := f.DatacenterFlag.Process(ctx); err != nil { + return err + } + return nil + }) +} + +func (f *DatastoreFlag) Args(args []string) []object.DatastorePath { + var files []object.DatastorePath + + for _, arg := range args { + var p object.DatastorePath + + if p.FromString(arg) { + f.Name = p.Datastore + } else { + p.Datastore = f.Name + p.Path = arg + } + + files = append(files, p) + } + + return files +} + +func (f *DatastoreFlag) Datastore() (*object.Datastore, error) { + if f.ds != nil { + return f.ds, nil + } + + var p object.DatastorePath + if p.FromString(f.Name) { + // Example use case: + // -ds "$(govc object.collect -s vm/foo config.files.logDirectory)" + f.Name = p.Datastore + } + + finder, err := f.Finder() + if err != nil { + return nil, err + } + + if f.ds, err = finder.DatastoreOrDefault(context.TODO(), f.Name); err != nil { + return nil, err + } + + return f.ds, nil +} + +func (flag *DatastoreFlag) DatastoreIfSpecified() (*object.Datastore, error) { + if flag.Name == "" { + return nil, nil + } + return flag.Datastore() +} + +func (f *DatastoreFlag) DatastorePath(name string) (string, error) { + ds, err := f.Datastore() + if err != nil { + return "", err + } + + return ds.Path(name), nil +} + +func (f *DatastoreFlag) Stat(ctx context.Context, file string) (types.BaseFileInfo, error) { + ds, err := f.Datastore() + if err != nil { + return nil, err + } + + return ds.Stat(ctx, file) + +} diff --git a/vendor/github.com/vmware/govmomi/govc/flags/debug.go b/vendor/github.com/vmware/govmomi/govc/flags/debug.go new file mode 100644 index 0000000..36d8f80 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/flags/debug.go @@ -0,0 +1,103 @@ +/* +Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flags + +import ( + "context" + "flag" + "fmt" + "os" + "path/filepath" + "strings" + "time" + + "github.com/vmware/govmomi/vim25/debug" +) + +type DebugFlag struct { + common + + enable bool +} + +var debugFlagKey = flagKey("debug") + +func NewDebugFlag(ctx context.Context) (*DebugFlag, context.Context) { + if v := ctx.Value(debugFlagKey); v != nil { + return v.(*DebugFlag), ctx + } + + v := &DebugFlag{} + ctx = context.WithValue(ctx, debugFlagKey, v) + return v, ctx +} + +func (flag *DebugFlag) Register(ctx context.Context, f *flag.FlagSet) { + flag.RegisterOnce(func() { + env := "GOVC_DEBUG" + enable := false + switch env := strings.ToLower(os.Getenv(env)); env { + case "1", "true": + enable = true + } + + usage := fmt.Sprintf("Store debug logs [%s]", env) + f.BoolVar(&flag.enable, "debug", enable, usage) + }) +} + +func (flag *DebugFlag) Process(ctx context.Context) error { + if !flag.enable { + return nil + } + + return flag.ProcessOnce(func() error { + // Base path for storing debug logs. + r := os.Getenv("GOVC_DEBUG_PATH") + switch r { + case "-": + debug.SetProvider(&debug.LogProvider{}) + return nil + case "": + r = home + } + r = filepath.Join(r, "debug") + + // Path for this particular run. + run := os.Getenv("GOVC_DEBUG_PATH_RUN") + if run == "" { + now := time.Now().Format("2006-01-02T15-04-05.999999999") + r = filepath.Join(r, now) + } else { + // reuse the same path + r = filepath.Join(r, run) + _ = os.RemoveAll(r) + } + + err := os.MkdirAll(r, 0700) + if err != nil { + return err + } + + p := debug.FileProvider{ + Path: r, + } + + debug.SetProvider(&p) + return nil + }) +} diff --git a/vendor/github.com/vmware/govmomi/govc/flags/empty.go b/vendor/github.com/vmware/govmomi/govc/flags/empty.go new file mode 100644 index 0000000..8b17241 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/flags/empty.go @@ -0,0 +1,31 @@ +/* +Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flags + +import ( + "context" + "flag" +) + +type EmptyFlag struct{} + +func (flag *EmptyFlag) Register(ctx context.Context, f *flag.FlagSet) { +} + +func (flag *EmptyFlag) Process(ctx context.Context) error { + return nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/flags/folder.go b/vendor/github.com/vmware/govmomi/govc/flags/folder.go new file mode 100644 index 0000000..a84266a --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/flags/folder.go @@ -0,0 +1,138 @@ +/* +Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flags + +import ( + "context" + "flag" + "fmt" + "os" + + "github.com/vmware/govmomi/object" +) + +type FolderFlag struct { + common + + *DatacenterFlag + + name string + folder *object.Folder +} + +var folderFlagKey = flagKey("folder") + +func NewFolderFlag(ctx context.Context) (*FolderFlag, context.Context) { + if v := ctx.Value(folderFlagKey); v != nil { + return v.(*FolderFlag), ctx + } + + v := &FolderFlag{} + v.DatacenterFlag, ctx = NewDatacenterFlag(ctx) + ctx = context.WithValue(ctx, folderFlagKey, v) + return v, ctx +} + +func (flag *FolderFlag) Register(ctx context.Context, f *flag.FlagSet) { + flag.RegisterOnce(func() { + flag.DatacenterFlag.Register(ctx, f) + + env := "GOVC_FOLDER" + value := os.Getenv(env) + usage := fmt.Sprintf("Inventory folder [%s]", env) + f.StringVar(&flag.name, "folder", value, usage) + }) +} + +func (flag *FolderFlag) Process(ctx context.Context) error { + return flag.ProcessOnce(func() error { + if err := flag.DatacenterFlag.Process(ctx); err != nil { + return err + } + return nil + }) +} + +func (flag *FolderFlag) Folder() (*object.Folder, error) { + if flag.folder != nil { + return flag.folder, nil + } + + finder, err := flag.Finder() + if err != nil { + return nil, err + } + + if flag.folder, err = finder.FolderOrDefault(context.TODO(), flag.name); err != nil { + return nil, err + } + + return flag.folder, nil +} + +func (flag *FolderFlag) FolderIfSpecified() (*object.Folder, error) { + if flag.name == "" { + return nil, nil + } + return flag.Folder() +} + +func (flag *FolderFlag) FolderOrDefault(kind string) (*object.Folder, error) { + if flag.folder != nil { + return flag.folder, nil + } + + if flag.name != "" { + return flag.Folder() + } + + // RootFolder, no dc required + if kind == "/" { + client, err := flag.Client() + if err != nil { + return nil, err + } + + flag.folder = object.NewRootFolder(client) + return flag.folder, nil + } + + dc, err := flag.Datacenter() + if err != nil { + return nil, err + } + + folders, err := dc.Folders(context.TODO()) + if err != nil { + return nil, err + } + + switch kind { + case "vm": + flag.folder = folders.VmFolder + case "host": + flag.folder = folders.HostFolder + case "datastore": + flag.folder = folders.DatastoreFolder + case "network": + flag.folder = folders.NetworkFolder + default: + panic(kind) + } + + return flag.folder, nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/flags/host_connect.go b/vendor/github.com/vmware/govmomi/govc/flags/host_connect.go new file mode 100644 index 0000000..c64e436 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/flags/host_connect.go @@ -0,0 +1,100 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flags + +import ( + "context" + "flag" + "fmt" + "net/url" + + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/types" +) + +type HostConnectFlag struct { + common + + types.HostConnectSpec + + noverify bool +} + +var hostConnectFlagKey = flagKey("hostConnect") + +func NewHostConnectFlag(ctx context.Context) (*HostConnectFlag, context.Context) { + if v := ctx.Value(hostConnectFlagKey); v != nil { + return v.(*HostConnectFlag), ctx + } + + v := &HostConnectFlag{} + ctx = context.WithValue(ctx, hostConnectFlagKey, v) + return v, ctx +} + +func (flag *HostConnectFlag) Register(ctx context.Context, f *flag.FlagSet) { + flag.RegisterOnce(func() { + f.StringVar(&flag.HostName, "hostname", "", "Hostname or IP address of the host") + f.StringVar(&flag.UserName, "username", "", "Username of administration account on the host") + f.StringVar(&flag.Password, "password", "", "Password of administration account on the host") + f.StringVar(&flag.SslThumbprint, "thumbprint", "", "SHA-1 thumbprint of the host's SSL certificate") + f.BoolVar(&flag.Force, "force", false, "Force when host is managed by another VC") + + f.BoolVar(&flag.noverify, "noverify", false, "Accept host thumbprint without verification") + }) +} + +func (flag *HostConnectFlag) Process(ctx context.Context) error { + return nil +} + +// Spec attempts to fill in SslThumbprint if empty. +// First checks GOVC_TLS_KNOWN_HOSTS, if not found and noverify=true then +// use object.HostCertificateInfo to get the thumbprint. +func (flag *HostConnectFlag) Spec(c *vim25.Client) types.HostConnectSpec { + spec := flag.HostConnectSpec + + if spec.SslThumbprint == "" { + spec.SslThumbprint = c.Thumbprint(spec.HostName) + + if spec.SslThumbprint == "" && flag.noverify { + var info object.HostCertificateInfo + t := c.DefaultTransport() + _ = info.FromURL(&url.URL{Host: spec.HostName}, t.TLSClientConfig) + spec.SslThumbprint = info.ThumbprintSHA1 + } + } + + return spec +} + +// Fault checks if error is SSLVerifyFault, including the thumbprint if so +func (flag *HostConnectFlag) Fault(err error) error { + if err == nil { + return nil + } + + if f, ok := err.(types.HasFault); ok { + switch fault := f.Fault().(type) { + case *types.SSLVerifyFault: + return fmt.Errorf("%s thumbprint=%s", err, fault.Thumbprint) + } + } + + return err +} diff --git a/vendor/github.com/vmware/govmomi/govc/flags/host_system.go b/vendor/github.com/vmware/govmomi/govc/flags/host_system.go new file mode 100644 index 0000000..56dba96 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/flags/host_system.go @@ -0,0 +1,141 @@ +/* +Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flags + +import ( + "context" + "flag" + "fmt" + "os" + + "github.com/vmware/govmomi/object" +) + +type HostSystemFlag struct { + common + + *ClientFlag + *DatacenterFlag + *SearchFlag + + name string + host *object.HostSystem + pool *object.ResourcePool +} + +var hostSystemFlagKey = flagKey("hostSystem") + +func NewHostSystemFlag(ctx context.Context) (*HostSystemFlag, context.Context) { + if v := ctx.Value(hostSystemFlagKey); v != nil { + return v.(*HostSystemFlag), ctx + } + + v := &HostSystemFlag{} + v.ClientFlag, ctx = NewClientFlag(ctx) + v.DatacenterFlag, ctx = NewDatacenterFlag(ctx) + v.SearchFlag, ctx = NewSearchFlag(ctx, SearchHosts) + ctx = context.WithValue(ctx, hostSystemFlagKey, v) + return v, ctx +} + +func (flag *HostSystemFlag) Register(ctx context.Context, f *flag.FlagSet) { + flag.RegisterOnce(func() { + flag.ClientFlag.Register(ctx, f) + flag.DatacenterFlag.Register(ctx, f) + flag.SearchFlag.Register(ctx, f) + + env := "GOVC_HOST" + value := os.Getenv(env) + usage := fmt.Sprintf("Host system [%s]", env) + f.StringVar(&flag.name, "host", value, usage) + }) +} + +func (flag *HostSystemFlag) Process(ctx context.Context) error { + return flag.ProcessOnce(func() error { + if err := flag.ClientFlag.Process(ctx); err != nil { + return err + } + if err := flag.DatacenterFlag.Process(ctx); err != nil { + return err + } + if err := flag.SearchFlag.Process(ctx); err != nil { + return err + } + return nil + }) +} + +func (flag *HostSystemFlag) HostSystemIfSpecified() (*object.HostSystem, error) { + if flag.host != nil { + return flag.host, nil + } + + // Use search flags if specified. + if flag.SearchFlag.IsSet() { + host, err := flag.SearchFlag.HostSystem() + if err != nil { + return nil, err + } + + flag.host = host + return flag.host, nil + } + + // Never look for a default host system. + // A host system parameter is optional for vm creation. It uses a mandatory + // resource pool parameter to determine where the vm should be placed. + if flag.name == "" { + return nil, nil + } + + finder, err := flag.Finder() + if err != nil { + return nil, err + } + + flag.host, err = finder.HostSystem(context.TODO(), flag.name) + return flag.host, err +} + +func (flag *HostSystemFlag) HostSystem() (*object.HostSystem, error) { + host, err := flag.HostSystemIfSpecified() + if err != nil { + return nil, err + } + + if host != nil { + return host, nil + } + + finder, err := flag.Finder() + if err != nil { + return nil, err + } + + flag.host, err = finder.DefaultHostSystem(context.TODO()) + return flag.host, err +} + +func (flag *HostSystemFlag) HostNetworkSystem() (*object.HostNetworkSystem, error) { + host, err := flag.HostSystem() + if err != nil { + return nil, err + } + + return host.ConfigManager().NetworkSystem(context.TODO()) +} diff --git a/vendor/github.com/vmware/govmomi/govc/flags/int32.go b/vendor/github.com/vmware/govmomi/govc/flags/int32.go new file mode 100644 index 0000000..a993c3e --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/flags/int32.go @@ -0,0 +1,72 @@ +/* +Copyright (c) 2016-2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flags + +import ( + "flag" + "fmt" + "strconv" +) + +// This flag type is internal to stdlib: +// https://github.com/golang/go/blob/master/src/cmd/internal/obj/flag.go +type int32Value int32 + +func (i *int32Value) Set(s string) error { + v, err := strconv.ParseInt(s, 0, 32) + *i = int32Value(v) + return err +} + +func (i *int32Value) Get() interface{} { + return int32(*i) +} + +func (i *int32Value) String() string { + return fmt.Sprintf("%v", *i) +} + +// NewInt32 behaves as flag.IntVar, but using an int32 type. +func NewInt32(v *int32) flag.Value { + return (*int32Value)(v) +} + +type int32ptrValue struct { + val **int32 +} + +func (i *int32ptrValue) Set(s string) error { + v, err := strconv.ParseInt(s, 0, 32) + *i.val = new(int32) + **i.val = int32(v) + return err +} + +func (i *int32ptrValue) Get() interface{} { + if i.val == nil || *i.val == nil { + return nil + } + return *i.val +} + +func (i *int32ptrValue) String() string { + return fmt.Sprintf("%v", i.Get()) +} + +func NewOptionalInt32(v **int32) flag.Value { + return &int32ptrValue{val: v} +} diff --git a/vendor/github.com/vmware/govmomi/govc/flags/int64.go b/vendor/github.com/vmware/govmomi/govc/flags/int64.go new file mode 100644 index 0000000..e3b8cc5 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/flags/int64.go @@ -0,0 +1,72 @@ +/* +Copyright (c) 2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flags + +import ( + "flag" + "fmt" + "strconv" +) + +// This flag type is internal to stdlib: +// https://github.com/golang/go/blob/master/src/cmd/internal/obj/flag.go +type int64Value int64 + +func (i *int64Value) Set(s string) error { + v, err := strconv.ParseInt(s, 0, 64) + *i = int64Value(v) + return err +} + +func (i *int64Value) Get() interface{} { + return int64(*i) +} + +func (i *int64Value) String() string { + return fmt.Sprintf("%v", *i) +} + +// NewInt64 behaves as flag.IntVar, but using an int64 type. +func NewInt64(v *int64) flag.Value { + return (*int64Value)(v) +} + +type int64ptrValue struct { + val **int64 +} + +func (i *int64ptrValue) Set(s string) error { + v, err := strconv.ParseInt(s, 0, 64) + *i.val = new(int64) + **i.val = int64(v) + return err +} + +func (i *int64ptrValue) Get() interface{} { + if i.val == nil || *i.val == nil { + return nil + } + return **i.val +} + +func (i *int64ptrValue) String() string { + return fmt.Sprintf("%v", i.Get()) +} + +func NewOptionalInt64(v **int64) flag.Value { + return &int64ptrValue{val: v} +} diff --git a/vendor/github.com/vmware/govmomi/govc/flags/library.go b/vendor/github.com/vmware/govmomi/govc/flags/library.go new file mode 100644 index 0000000..16883d7 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/flags/library.go @@ -0,0 +1,93 @@ +/* +Copyright (c) 2020 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flags + +import ( + "context" + "fmt" + + "github.com/vmware/govmomi/vapi/library" + "github.com/vmware/govmomi/vapi/library/finder" + "github.com/vmware/govmomi/vapi/rest" +) + +// errContentLibraryMatch is an error returned when a query returns more than one result. +type errContentLibraryMatch struct { + // Type is the type of object being queried. + Type string + + // Key is the key used to perform the query. + Key string + + // Val is the value used to perform the query. + Val string + + // Count is the number of objects returned. + Count int +} + +// Error returns the error string. +func (e errContentLibraryMatch) Error() string { + kind := e.Type + if kind == "" { + kind = "library|item" + } + hint := "" + if e.Count > 1 { + hint = fmt.Sprintf(" (use %q ID instead of NAME)", kind) + } + return fmt.Sprintf("%q=%q matches %d items%s", e.Key, e.Val, e.Count, hint) +} + +func ContentLibraryResult(ctx context.Context, c *rest.Client, kind string, path string) (finder.FindResult, error) { + res, err := finder.NewFinder(library.NewManager(c)).Find(ctx, path) + if err != nil { + return nil, err + } + if len(res) != 1 { + return nil, errContentLibraryMatch{Type: kind, Key: "path", Val: path, Count: len(res)} + } + return res[0], nil +} + +// ContentLibrary attempts to find a content library with the given path, +// asserting 1 match of type library.Library. +func ContentLibrary(ctx context.Context, c *rest.Client, path string) (*library.Library, error) { + r, err := ContentLibraryResult(ctx, c, "library", path) + if err != nil { + return nil, err + } + lib, ok := r.GetResult().(library.Library) + if !ok { + return nil, fmt.Errorf("%q is a %T", path, r) + } + return &lib, nil +} + +// ContentLibraryItem attempts to find a content library with the given path, +// asserting 1 match of type library.Item. +func ContentLibraryItem(ctx context.Context, c *rest.Client, path string) (*library.Item, error) { + r, err := ContentLibraryResult(ctx, c, "item", path) + if err != nil { + return nil, err + } + item, ok := r.GetResult().(library.Item) + if !ok { + return nil, fmt.Errorf("%q is a %T", path, r) + } + return &item, nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/flags/list.go b/vendor/github.com/vmware/govmomi/govc/flags/list.go new file mode 100644 index 0000000..0cd874b --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/flags/list.go @@ -0,0 +1,30 @@ +/* +Copyright (c) 2019 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flags + +import "fmt" + +type StringList []string + +func (l *StringList) String() string { + return fmt.Sprint(*l) +} + +func (l *StringList) Set(value string) error { + *l = append(*l, value) + return nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/flags/network.go b/vendor/github.com/vmware/govmomi/govc/flags/network.go new file mode 100644 index 0000000..842fd31 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/flags/network.go @@ -0,0 +1,147 @@ +/* +Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flags + +import ( + "context" + "flag" + "fmt" + "os" + + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/vim25/types" +) + +type NetworkFlag struct { + common + + *DatacenterFlag + + name string + net object.NetworkReference + adapter string + address string + isset bool +} + +var networkFlagKey = flagKey("network") + +func NewNetworkFlag(ctx context.Context) (*NetworkFlag, context.Context) { + if v := ctx.Value(networkFlagKey); v != nil { + return v.(*NetworkFlag), ctx + } + + v := &NetworkFlag{} + v.DatacenterFlag, ctx = NewDatacenterFlag(ctx) + ctx = context.WithValue(ctx, networkFlagKey, v) + return v, ctx +} + +func (flag *NetworkFlag) Register(ctx context.Context, f *flag.FlagSet) { + flag.RegisterOnce(func() { + flag.DatacenterFlag.Register(ctx, f) + + env := "GOVC_NETWORK" + value := os.Getenv(env) + flag.name = value + usage := fmt.Sprintf("Network [%s]", env) + f.Var(flag, "net", usage) + f.StringVar(&flag.adapter, "net.adapter", "e1000", "Network adapter type") + f.StringVar(&flag.address, "net.address", "", "Network hardware address") + }) +} + +func (flag *NetworkFlag) Process(ctx context.Context) error { + return flag.ProcessOnce(func() error { + if err := flag.DatacenterFlag.Process(ctx); err != nil { + return err + } + return nil + }) +} + +func (flag *NetworkFlag) String() string { + return flag.name +} + +func (flag *NetworkFlag) Set(name string) error { + flag.name = name + flag.isset = true + return nil +} + +func (flag *NetworkFlag) IsSet() bool { + return flag.isset +} + +func (flag *NetworkFlag) Network() (object.NetworkReference, error) { + if flag.net != nil { + return flag.net, nil + } + + finder, err := flag.Finder() + if err != nil { + return nil, err + } + + if flag.net, err = finder.NetworkOrDefault(context.TODO(), flag.name); err != nil { + return nil, err + } + + return flag.net, nil +} + +func (flag *NetworkFlag) Device() (types.BaseVirtualDevice, error) { + net, err := flag.Network() + if err != nil { + return nil, err + } + + backing, err := net.EthernetCardBackingInfo(context.TODO()) + if err != nil { + return nil, err + } + + device, err := object.EthernetCardTypes().CreateEthernetCard(flag.adapter, backing) + if err != nil { + return nil, err + } + + if flag.address != "" { + card := device.(types.BaseVirtualEthernetCard).GetVirtualEthernetCard() + card.AddressType = string(types.VirtualEthernetCardMacTypeManual) + card.MacAddress = flag.address + } + + return device, nil +} + +// Change applies update backing and hardware address changes to the given network device. +func (flag *NetworkFlag) Change(device types.BaseVirtualDevice, update types.BaseVirtualDevice) { + current := device.(types.BaseVirtualEthernetCard).GetVirtualEthernetCard() + changed := update.(types.BaseVirtualEthernetCard).GetVirtualEthernetCard() + + current.Backing = changed.Backing + + if changed.MacAddress != "" { + current.MacAddress = changed.MacAddress + } + + if changed.AddressType != "" { + current.AddressType = changed.AddressType + } +} diff --git a/vendor/github.com/vmware/govmomi/govc/flags/optional_bool.go b/vendor/github.com/vmware/govmomi/govc/flags/optional_bool.go new file mode 100644 index 0000000..db1b81f --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/flags/optional_bool.go @@ -0,0 +1,55 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flags + +import ( + "flag" + "fmt" + "strconv" +) + +type optionalBool struct { + val **bool +} + +func (b *optionalBool) Set(s string) error { + v, err := strconv.ParseBool(s) + *b.val = &v + return err +} + +func (b *optionalBool) Get() interface{} { + if *b.val == nil { + return nil + } + return **b.val +} + +func (b *optionalBool) String() string { + if b.val == nil || *b.val == nil { + return "" + } + return fmt.Sprintf("%v", **b.val) +} + +func (b *optionalBool) IsBoolFlag() bool { return true } + +// NewOptionalBool returns a flag.Value implementation where there is no default value. +// This avoids sending a default value over the wire as using flag.BoolVar() would. +func NewOptionalBool(v **bool) flag.Value { + return &optionalBool{v} +} diff --git a/vendor/github.com/vmware/govmomi/govc/flags/output.go b/vendor/github.com/vmware/govmomi/govc/flags/output.go new file mode 100644 index 0000000..33feb50 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/flags/output.go @@ -0,0 +1,343 @@ +/* +Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flags + +import ( + "context" + "encoding/json" + "errors" + "flag" + "fmt" + "io" + "os" + "reflect" + "sync" + "time" + + "github.com/kr/pretty" + "github.com/vmware/govmomi/task" + "github.com/vmware/govmomi/vim25/progress" + "github.com/vmware/govmomi/vim25/soap" + "github.com/vmware/govmomi/vim25/xml" +) + +type OutputWriter interface { + Write(io.Writer) error +} + +type OutputFlag struct { + common + + JSON bool + XML bool + TTY bool + Dump bool + Out io.Writer + + formatError bool + formatIndent bool +} + +var outputFlagKey = flagKey("output") + +func NewOutputFlag(ctx context.Context) (*OutputFlag, context.Context) { + if v := ctx.Value(outputFlagKey); v != nil { + return v.(*OutputFlag), ctx + } + + v := &OutputFlag{Out: os.Stdout} + ctx = context.WithValue(ctx, outputFlagKey, v) + return v, ctx +} + +func (flag *OutputFlag) Register(ctx context.Context, f *flag.FlagSet) { + flag.RegisterOnce(func() { + f.BoolVar(&flag.JSON, "json", false, "Enable JSON output") + f.BoolVar(&flag.XML, "xml", false, "Enable XML output") + f.BoolVar(&flag.Dump, "dump", false, "Enable Go output") + // Avoid adding more flags for now.. + flag.formatIndent = os.Getenv("GOVC_INDENT") != "false" // Default to indented output + flag.formatError = os.Getenv("GOVC_FORMAT_ERROR") != "false" // Default to formatted errors + }) +} + +func (flag *OutputFlag) Process(ctx context.Context) error { + return flag.ProcessOnce(func() error { + if !flag.All() { + // Assume we have a tty if not outputting JSON + flag.TTY = true + } + + return nil + }) +} + +// Log outputs the specified string, prefixed with the current time. +// A newline is not automatically added. If the specified string +// starts with a '\r', the current line is cleared first. +func (flag *OutputFlag) Log(s string) (int, error) { + if len(s) > 0 && s[0] == '\r' { + flag.Write([]byte{'\r', 033, '[', 'K'}) + s = s[1:] + } + + return flag.WriteString(time.Now().Format("[02-01-06 15:04:05] ") + s) +} + +func (flag *OutputFlag) Write(b []byte) (int, error) { + if !flag.TTY { + return 0, nil + } + + n, err := os.Stdout.Write(b) + os.Stdout.Sync() + return n, err +} + +func (flag *OutputFlag) WriteString(s string) (int, error) { + return flag.Write([]byte(s)) +} + +func (flag *OutputFlag) All() bool { + return flag.JSON || flag.XML || flag.Dump +} + +func dumpValue(val interface{}) interface{} { + type dumper interface { + Dump() interface{} + } + + if d, ok := val.(dumper); ok { + return d.Dump() + } + + rval := reflect.ValueOf(val) + if rval.Type().Kind() != reflect.Ptr { + return val + } + + rval = rval.Elem() + if rval.Type().Kind() == reflect.Struct { + f := rval.Field(0) + if f.Type().Kind() == reflect.Slice { + // common case for the various 'type infoResult' + if f.Len() == 1 { + return f.Index(0).Interface() + } + return f.Interface() + } + + if rval.NumField() == 1 && rval.Type().Field(0).Anonymous { + // common case where govc type wraps govmomi type to implement OutputWriter + return f.Interface() + } + } + + return val +} + +func (flag *OutputFlag) WriteResult(result OutputWriter) error { + var err error + + switch { + case flag.Dump: + format := "%#v\n" + if flag.formatIndent { + format = "%# v\n" + } + _, err = pretty.Fprintf(flag.Out, format, dumpValue(result)) + case flag.JSON: + e := json.NewEncoder(flag.Out) + if flag.formatIndent { + e.SetIndent("", " ") + } + err = e.Encode(result) + case flag.XML: + e := xml.NewEncoder(flag.Out) + if flag.formatIndent { + e.Indent("", " ") + } + err = e.Encode(dumpValue(result)) + if err == nil { + fmt.Fprintln(flag.Out) + } + default: + err = result.Write(flag.Out) + } + + return err +} + +func (flag *OutputFlag) WriteError(err error) bool { + if flag.formatError { + flag.Out = os.Stderr + return flag.WriteResult(&errorOutput{err}) == nil + } + return false +} + +type errorOutput struct { + error +} + +func (e errorOutput) Write(w io.Writer) error { + _, ferr := fmt.Fprintf(w, "%s: %s\n", os.Args[0], e.error) + return ferr +} + +func (e errorOutput) Dump() interface{} { + if f, ok := e.error.(task.Error); ok { + return f.LocalizedMethodFault + } + if soap.IsSoapFault(e.error) { + return soap.ToSoapFault(e.error) + } + if soap.IsVimFault(e.error) { + return soap.ToVimFault(e.error) + } + return e +} + +func (e errorOutput) canEncode() bool { + switch e.error.(type) { + case task.Error: + return true + } + return soap.IsSoapFault(e.error) || soap.IsVimFault(e.error) +} + +// cannotEncode causes cli.Run to output err.Error() as it would without an error format specified +var cannotEncode = errors.New("cannot encode error") + +func (e errorOutput) MarshalJSON() ([]byte, error) { + _, ok := e.error.(json.Marshaler) + if ok || e.canEncode() { + return json.Marshal(e.error) + } + return nil, cannotEncode +} + +func (e errorOutput) MarshalXML(encoder *xml.Encoder, start xml.StartElement) error { + _, ok := e.error.(xml.Marshaler) + if ok || e.canEncode() { + return encoder.Encode(e.error) + } + return cannotEncode +} + +type progressLogger struct { + flag *OutputFlag + prefix string + + wg sync.WaitGroup + + sink chan chan progress.Report + done chan struct{} +} + +func newProgressLogger(flag *OutputFlag, prefix string) *progressLogger { + p := &progressLogger{ + flag: flag, + prefix: prefix, + + sink: make(chan chan progress.Report), + done: make(chan struct{}), + } + + p.wg.Add(1) + + go p.loopA() + + return p +} + +// loopA runs before Sink() has been called. +func (p *progressLogger) loopA() { + var err error + + defer p.wg.Done() + + tick := time.NewTicker(100 * time.Millisecond) + defer tick.Stop() + + called := false + + for stop := false; !stop; { + select { + case ch := <-p.sink: + err = p.loopB(tick, ch) + stop = true + called = true + case <-p.done: + stop = true + case <-tick.C: + line := fmt.Sprintf("\r%s", p.prefix) + p.flag.Log(line) + } + } + + if err != nil && err != io.EOF { + p.flag.Log(fmt.Sprintf("\r%sError: %s\n", p.prefix, err)) + } else if called { + p.flag.Log(fmt.Sprintf("\r%sOK\n", p.prefix)) + } +} + +// loopA runs after Sink() has been called. +func (p *progressLogger) loopB(tick *time.Ticker, ch <-chan progress.Report) error { + var r progress.Report + var ok bool + var err error + + for ok = true; ok; { + select { + case r, ok = <-ch: + if !ok { + break + } + err = r.Error() + case <-tick.C: + line := fmt.Sprintf("\r%s", p.prefix) + if r != nil { + line += fmt.Sprintf("(%.0f%%", r.Percentage()) + detail := r.Detail() + if detail != "" { + line += fmt.Sprintf(", %s", detail) + } + line += ")" + } + p.flag.Log(line) + } + } + + return err +} + +func (p *progressLogger) Sink() chan<- progress.Report { + ch := make(chan progress.Report) + p.sink <- ch + return ch +} + +func (p *progressLogger) Wait() { + close(p.done) + p.wg.Wait() +} + +func (flag *OutputFlag) ProgressLogger(prefix string) *progressLogger { + return newProgressLogger(flag, prefix) +} diff --git a/vendor/github.com/vmware/govmomi/govc/flags/resource_allocation_info.go b/vendor/github.com/vmware/govmomi/govc/flags/resource_allocation_info.go new file mode 100644 index 0000000..99a262e --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/flags/resource_allocation_info.go @@ -0,0 +1,85 @@ +/* +Copyright (c) 2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flags + +import ( + "context" + "flag" + "strconv" + "strings" + + "github.com/vmware/govmomi/vim25/types" +) + +type sharesInfo types.SharesInfo + +func (s *sharesInfo) String() string { + return string(s.Level) +} + +func (s *sharesInfo) Set(val string) error { + switch val { + case string(types.SharesLevelNormal), string(types.SharesLevelLow), string(types.SharesLevelHigh): + s.Level = types.SharesLevel(val) + default: + n, err := strconv.Atoi(val) + if err != nil { + return err + } + + s.Level = types.SharesLevelCustom + s.Shares = int32(n) + } + + return nil +} + +type ResourceAllocationFlag struct { + cpu, mem *types.ResourceAllocationInfo + ExpandableReservation bool +} + +func NewResourceAllocationFlag(cpu, mem *types.ResourceAllocationInfo) *ResourceAllocationFlag { + return &ResourceAllocationFlag{cpu, mem, true} +} + +func (r *ResourceAllocationFlag) Register(ctx context.Context, f *flag.FlagSet) { + opts := []struct { + name string + units string + *types.ResourceAllocationInfo + }{ + {"CPU", "MHz", r.cpu}, + {"Memory", "MB", r.mem}, + } + + for _, opt := range opts { + prefix := strings.ToLower(opt.name)[:3] + shares := (*sharesInfo)(opt.Shares) + + f.Var(NewOptionalInt64(&opt.Limit), prefix+".limit", opt.name+" limit in "+opt.units) + f.Var(NewOptionalInt64(&opt.Reservation), prefix+".reservation", opt.name+" reservation in "+opt.units) + if r.ExpandableReservation { + f.Var(NewOptionalBool(&opt.ExpandableReservation), prefix+".expandable", opt.name+" expandable reservation") + } + f.Var(shares, prefix+".shares", opt.name+" shares level or number") + } +} + +func (s *ResourceAllocationFlag) Process(ctx context.Context) error { + return nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/flags/resource_pool.go b/vendor/github.com/vmware/govmomi/govc/flags/resource_pool.go new file mode 100644 index 0000000..e60b5ee --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/flags/resource_pool.go @@ -0,0 +1,102 @@ +/* +Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flags + +import ( + "context" + "flag" + "fmt" + "os" + + "github.com/vmware/govmomi/find" + "github.com/vmware/govmomi/object" +) + +type ResourcePoolFlag struct { + common + + *DatacenterFlag + + name string + pool *object.ResourcePool +} + +var resourcePoolFlagKey = flagKey("resourcePool") + +func NewResourcePoolFlag(ctx context.Context) (*ResourcePoolFlag, context.Context) { + if v := ctx.Value(resourcePoolFlagKey); v != nil { + return v.(*ResourcePoolFlag), ctx + } + + v := &ResourcePoolFlag{} + v.DatacenterFlag, ctx = NewDatacenterFlag(ctx) + ctx = context.WithValue(ctx, resourcePoolFlagKey, v) + return v, ctx +} + +func (flag *ResourcePoolFlag) Register(ctx context.Context, f *flag.FlagSet) { + flag.RegisterOnce(func() { + flag.DatacenterFlag.Register(ctx, f) + + env := "GOVC_RESOURCE_POOL" + value := os.Getenv(env) + usage := fmt.Sprintf("Resource pool [%s]", env) + f.StringVar(&flag.name, "pool", value, usage) + }) +} + +func (flag *ResourcePoolFlag) Process(ctx context.Context) error { + return flag.ProcessOnce(func() error { + if err := flag.DatacenterFlag.Process(ctx); err != nil { + return err + } + return nil + }) +} + +func (flag *ResourcePoolFlag) ResourcePool() (*object.ResourcePool, error) { + if flag.pool != nil { + return flag.pool, nil + } + + finder, err := flag.Finder() + if err != nil { + return nil, err + } + + flag.pool, err = finder.ResourcePoolOrDefault(context.TODO(), flag.name) + if err != nil { + if _, ok := err.(*find.NotFoundError); ok { + vapp, verr := finder.VirtualApp(context.TODO(), flag.name) + if verr != nil { + return nil, err + } + flag.pool = vapp.ResourcePool + } else { + return nil, err + } + } + + return flag.pool, nil +} + +func (flag *ResourcePoolFlag) ResourcePoolIfSpecified() (*object.ResourcePool, error) { + if flag.name == "" { + return nil, nil + } + return flag.ResourcePool() +} diff --git a/vendor/github.com/vmware/govmomi/govc/flags/search.go b/vendor/github.com/vmware/govmomi/govc/flags/search.go new file mode 100644 index 0000000..e004000 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/flags/search.go @@ -0,0 +1,438 @@ +/* +Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flags + +import ( + "context" + "errors" + "flag" + "fmt" + "strings" + + "github.com/vmware/govmomi/find" + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/soap" + "github.com/vmware/govmomi/vim25/types" +) + +const ( + SearchVirtualMachines = iota + 1 + SearchHosts + SearchVirtualApps +) + +type SearchFlag struct { + common + + *ClientFlag + *DatacenterFlag + + t int + entity string + + byDatastorePath string + byDNSName string + byInventoryPath string + byIP string + byUUID string + + isset bool +} + +var searchFlagKey = flagKey("search") + +func NewSearchFlag(ctx context.Context, t int) (*SearchFlag, context.Context) { + if v := ctx.Value(searchFlagKey); v != nil { + return v.(*SearchFlag), ctx + } + + v := &SearchFlag{ + t: t, + } + + v.ClientFlag, ctx = NewClientFlag(ctx) + v.DatacenterFlag, ctx = NewDatacenterFlag(ctx) + + switch t { + case SearchVirtualMachines: + v.entity = "VM" + case SearchHosts: + v.entity = "host" + case SearchVirtualApps: + v.entity = "vapp" + default: + panic("invalid search type") + } + + ctx = context.WithValue(ctx, searchFlagKey, v) + return v, ctx +} + +func (flag *SearchFlag) Register(ctx context.Context, fs *flag.FlagSet) { + flag.RegisterOnce(func() { + flag.ClientFlag.Register(ctx, fs) + flag.DatacenterFlag.Register(ctx, fs) + + register := func(v *string, f string, d string) { + f = fmt.Sprintf("%s.%s", strings.ToLower(flag.entity), f) + d = fmt.Sprintf(d, flag.entity) + fs.StringVar(v, f, "", d) + } + + switch flag.t { + case SearchVirtualMachines: + register(&flag.byDatastorePath, "path", "Find %s by path to .vmx file") + } + + switch flag.t { + case SearchVirtualMachines, SearchHosts: + register(&flag.byDNSName, "dns", "Find %s by FQDN") + register(&flag.byIP, "ip", "Find %s by IP address") + register(&flag.byUUID, "uuid", "Find %s by UUID") + } + + register(&flag.byInventoryPath, "ipath", "Find %s by inventory path") + }) +} + +func (flag *SearchFlag) Process(ctx context.Context) error { + return flag.ProcessOnce(func() error { + if err := flag.ClientFlag.Process(ctx); err != nil { + return err + } + if err := flag.DatacenterFlag.Process(ctx); err != nil { + return err + } + + flags := []string{ + flag.byDatastorePath, + flag.byDNSName, + flag.byInventoryPath, + flag.byIP, + flag.byUUID, + } + + flag.isset = false + for _, f := range flags { + if f != "" { + if flag.isset { + return errors.New("cannot use more than one search flag") + } + flag.isset = true + } + } + + return nil + }) +} + +func (flag *SearchFlag) IsSet() bool { + return flag.isset +} + +func (flag *SearchFlag) searchIndex(c *vim25.Client) *object.SearchIndex { + return object.NewSearchIndex(c) +} + +func (flag *SearchFlag) searchByDatastorePath(c *vim25.Client, dc *object.Datacenter) (object.Reference, error) { + ctx := context.TODO() + switch flag.t { + case SearchVirtualMachines: + return flag.searchIndex(c).FindByDatastorePath(ctx, dc, flag.byDatastorePath) + default: + panic("unsupported type") + } +} + +func (flag *SearchFlag) searchByDNSName(c *vim25.Client, dc *object.Datacenter) (object.Reference, error) { + ctx := context.TODO() + switch flag.t { + case SearchVirtualMachines: + return flag.searchIndex(c).FindByDnsName(ctx, dc, flag.byDNSName, true) + case SearchHosts: + return flag.searchIndex(c).FindByDnsName(ctx, dc, flag.byDNSName, false) + default: + panic("unsupported type") + } +} + +func (flag *SearchFlag) searchByInventoryPath(c *vim25.Client) (object.Reference, error) { + ctx := context.TODO() + return flag.searchIndex(c).FindByInventoryPath(ctx, flag.byInventoryPath) +} + +func (flag *SearchFlag) searchByIP(c *vim25.Client, dc *object.Datacenter) (object.Reference, error) { + ctx := context.TODO() + switch flag.t { + case SearchVirtualMachines: + return flag.searchIndex(c).FindByIp(ctx, dc, flag.byIP, true) + case SearchHosts: + return flag.searchIndex(c).FindByIp(ctx, dc, flag.byIP, false) + default: + panic("unsupported type") + } +} + +func (flag *SearchFlag) searchByUUID(c *vim25.Client, dc *object.Datacenter) (object.Reference, error) { + ctx := context.TODO() + isVM := false + switch flag.t { + case SearchVirtualMachines: + isVM = true + case SearchHosts: + default: + panic("unsupported type") + } + + var ref object.Reference + var err error + + for _, iu := range []*bool{nil, types.NewBool(true)} { + ref, err = flag.searchIndex(c).FindByUuid(ctx, dc, flag.byUUID, isVM, iu) + if err != nil { + if soap.IsSoapFault(err) { + fault := soap.ToSoapFault(err).VimFault() + if _, ok := fault.(types.InvalidArgument); ok { + continue + } + } + return nil, err + } + if ref != nil { + break + } + } + + return ref, nil +} + +func (flag *SearchFlag) search() (object.Reference, error) { + ctx := context.TODO() + var ref object.Reference + var err error + var dc *object.Datacenter + + c, err := flag.Client() + if err != nil { + return nil, err + } + + isPath := flag.byInventoryPath != "" + if !isPath { + // All other SearchIndex methods require a Datacenter param + dc, err = flag.Datacenter() + if err != nil { + return nil, err + } + } + + switch { + case isPath: + ref, err = flag.searchByInventoryPath(c) + case flag.byDatastorePath != "": + ref, err = flag.searchByDatastorePath(c, dc) + case flag.byDNSName != "": + ref, err = flag.searchByDNSName(c, dc) + case flag.byIP != "": + ref, err = flag.searchByIP(c, dc) + case flag.byUUID != "": + ref, err = flag.searchByUUID(c, dc) + default: + err = errors.New("no search flag specified") + } + + if err != nil { + return nil, err + } + + if ref == nil { + return nil, fmt.Errorf("no such %s", flag.entity) + } + + // set the InventoryPath field + finder, err := flag.Finder() + if err != nil { + return nil, err + } + ref, err = finder.ObjectReference(ctx, ref.Reference()) + if err != nil { + return nil, err + } + + return ref, nil +} + +func (flag *SearchFlag) VirtualMachine() (*object.VirtualMachine, error) { + ref, err := flag.search() + if err != nil { + return nil, err + } + + vm, ok := ref.(*object.VirtualMachine) + if !ok { + return nil, fmt.Errorf("expected VirtualMachine entity, got %s", ref.Reference().Type) + } + + return vm, nil +} + +func (flag *SearchFlag) VirtualMachines(args []string) ([]*object.VirtualMachine, error) { + ctx := context.TODO() + var out []*object.VirtualMachine + + if flag.IsSet() { + vm, err := flag.VirtualMachine() + if err != nil { + return nil, err + } + + out = append(out, vm) + return out, nil + } + + // List virtual machines + if len(args) == 0 { + return nil, errors.New("no argument") + } + + finder, err := flag.Finder() + if err != nil { + return nil, err + } + + var nfe error + + // List virtual machines for every argument + for _, arg := range args { + vms, err := finder.VirtualMachineList(ctx, arg) + if err != nil { + if _, ok := err.(*find.NotFoundError); ok { + // Let caller decide how to handle NotFoundError + nfe = err + continue + } + return nil, err + } + + out = append(out, vms...) + } + + return out, nfe +} + +func (flag *SearchFlag) VirtualApp() (*object.VirtualApp, error) { + ref, err := flag.search() + if err != nil { + return nil, err + } + + app, ok := ref.(*object.VirtualApp) + if !ok { + return nil, fmt.Errorf("expected VirtualApp entity, got %s", ref.Reference().Type) + } + + return app, nil +} + +func (flag *SearchFlag) VirtualApps(args []string) ([]*object.VirtualApp, error) { + ctx := context.TODO() + var out []*object.VirtualApp + + if flag.IsSet() { + app, err := flag.VirtualApp() + if err != nil { + return nil, err + } + + out = append(out, app) + return out, nil + } + + // List virtual apps + if len(args) == 0 { + return nil, errors.New("no argument") + } + + finder, err := flag.Finder() + if err != nil { + return nil, err + } + + // List virtual apps for every argument + for _, arg := range args { + apps, err := finder.VirtualAppList(ctx, arg) + if err != nil { + return nil, err + } + + out = append(out, apps...) + } + + return out, nil +} + +func (flag *SearchFlag) HostSystem() (*object.HostSystem, error) { + ref, err := flag.search() + if err != nil { + return nil, err + } + + host, ok := ref.(*object.HostSystem) + if !ok { + return nil, fmt.Errorf("expected HostSystem entity, got %s", ref.Reference().Type) + } + + return host, nil +} + +func (flag *SearchFlag) HostSystems(args []string) ([]*object.HostSystem, error) { + ctx := context.TODO() + var out []*object.HostSystem + + if flag.IsSet() { + host, err := flag.HostSystem() + if err != nil { + return nil, err + } + + out = append(out, host) + return out, nil + } + + // List host system + if len(args) == 0 { + return nil, errors.New("no argument") + } + + finder, err := flag.Finder() + if err != nil { + return nil, err + } + + // List host systems for every argument + for _, arg := range args { + vms, err := finder.HostSystemList(ctx, arg) + if err != nil { + return nil, err + } + + out = append(out, vms...) + } + + return out, nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/flags/storage_pod.go b/vendor/github.com/vmware/govmomi/govc/flags/storage_pod.go new file mode 100644 index 0000000..0be337f --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/flags/storage_pod.go @@ -0,0 +1,78 @@ +package flags + +import ( + "context" + "flag" + "fmt" + "os" + + "github.com/vmware/govmomi/object" +) + +type StoragePodFlag struct { + common + + *DatacenterFlag + + Name string + + sp *object.StoragePod +} + +var storagePodFlagKey = flagKey("storagePod") + +func NewStoragePodFlag(ctx context.Context) (*StoragePodFlag, context.Context) { + if v := ctx.Value(storagePodFlagKey); v != nil { + return v.(*StoragePodFlag), ctx + } + + v := &StoragePodFlag{} + v.DatacenterFlag, ctx = NewDatacenterFlag(ctx) + ctx = context.WithValue(ctx, storagePodFlagKey, v) + return v, ctx +} + +func (f *StoragePodFlag) Register(ctx context.Context, fs *flag.FlagSet) { + f.RegisterOnce(func() { + f.DatacenterFlag.Register(ctx, fs) + + env := "GOVC_DATASTORE_CLUSTER" + value := os.Getenv(env) + usage := fmt.Sprintf("Datastore cluster [%s]", env) + fs.StringVar(&f.Name, "datastore-cluster", value, usage) + }) +} + +func (f *StoragePodFlag) Process(ctx context.Context) error { + return f.DatacenterFlag.Process(ctx) +} + +func (f *StoragePodFlag) Isset() bool { + return f.Name != "" +} + +func (f *StoragePodFlag) StoragePod() (*object.StoragePod, error) { + ctx := context.TODO() + if f.sp != nil { + return f.sp, nil + } + + finder, err := f.Finder() + if err != nil { + return nil, err + } + + if f.Isset() { + f.sp, err = finder.DatastoreCluster(ctx, f.Name) + if err != nil { + return nil, err + } + } else { + f.sp, err = finder.DefaultDatastoreCluster(ctx) + if err != nil { + return nil, err + } + } + + return f.sp, nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/flags/version.go b/vendor/github.com/vmware/govmomi/govc/flags/version.go new file mode 100644 index 0000000..e0180d9 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/flags/version.go @@ -0,0 +1,66 @@ +/* +Copyright (c) 2014-2020 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flags + +import ( + "strconv" + "strings" +) + +const Version = "0.23.0" + +var GitVersion string + +type version []int + +func ParseVersion(s string) (version, error) { + v := make(version, 0) + ds := strings.Split(s, "-") + ps := strings.Split(ds[0], ".") + for _, p := range ps { + i, err := strconv.Atoi(p) + if err != nil { + return nil, err + } + + v = append(v, i) + } + + return v, nil +} + +func (v version) Lte(u version) bool { + lv := len(v) + lu := len(u) + + for i := 0; i < lv; i++ { + // Everything up to here has been equal and v has more elements than u. + if i >= lu { + return false + } + + // Move to next digit if equal. + if v[i] == u[i] { + continue + } + + return v[i] < u[i] + } + + // Equal. + return true +} diff --git a/vendor/github.com/vmware/govmomi/govc/flags/virtual_app.go b/vendor/github.com/vmware/govmomi/govc/flags/virtual_app.go new file mode 100644 index 0000000..88a0b9c --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/flags/virtual_app.go @@ -0,0 +1,106 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flags + +import ( + "context" + "flag" + "fmt" + "os" + + "github.com/vmware/govmomi/object" +) + +type VirtualAppFlag struct { + common + + *DatacenterFlag + *SearchFlag + + name string + app *object.VirtualApp +} + +var virtualAppFlagKey = flagKey("virtualApp") + +func NewVirtualAppFlag(ctx context.Context) (*VirtualAppFlag, context.Context) { + if v := ctx.Value(virtualAppFlagKey); v != nil { + return v.(*VirtualAppFlag), ctx + } + + v := &VirtualAppFlag{} + v.DatacenterFlag, ctx = NewDatacenterFlag(ctx) + v.SearchFlag, ctx = NewSearchFlag(ctx, SearchVirtualApps) + ctx = context.WithValue(ctx, virtualAppFlagKey, v) + return v, ctx +} + +func (flag *VirtualAppFlag) Register(ctx context.Context, f *flag.FlagSet) { + flag.RegisterOnce(func() { + flag.DatacenterFlag.Register(ctx, f) + flag.SearchFlag.Register(ctx, f) + + env := "GOVC_VAPP" + value := os.Getenv(env) + usage := fmt.Sprintf("Virtual App [%s]", env) + f.StringVar(&flag.name, "vapp", value, usage) + }) +} + +func (flag *VirtualAppFlag) Process(ctx context.Context) error { + return flag.ProcessOnce(func() error { + if err := flag.DatacenterFlag.Process(ctx); err != nil { + return err + } + if err := flag.SearchFlag.Process(ctx); err != nil { + return err + } + return nil + }) +} + +func (flag *VirtualAppFlag) VirtualApp() (*object.VirtualApp, error) { + ctx := context.TODO() + + if flag.app != nil { + return flag.app, nil + } + + // Use search flags if specified. + if flag.SearchFlag.IsSet() { + app, err := flag.SearchFlag.VirtualApp() + if err != nil { + return nil, err + } + + flag.app = app + return flag.app, nil + } + + // Never look for a default virtual app. + if flag.name == "" { + return nil, nil + } + + finder, err := flag.Finder() + if err != nil { + return nil, err + } + + flag.app, err = finder.VirtualApp(ctx, flag.name) + return flag.app, err +} diff --git a/vendor/github.com/vmware/govmomi/govc/flags/virtual_machine.go b/vendor/github.com/vmware/govmomi/govc/flags/virtual_machine.go new file mode 100644 index 0000000..e0b1aca --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/flags/virtual_machine.go @@ -0,0 +1,112 @@ +/* +Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flags + +import ( + "context" + "flag" + "fmt" + "os" + + "github.com/vmware/govmomi/object" +) + +type VirtualMachineFlag struct { + common + + *ClientFlag + *DatacenterFlag + *SearchFlag + + name string + vm *object.VirtualMachine +} + +var virtualMachineFlagKey = flagKey("virtualMachine") + +func NewVirtualMachineFlag(ctx context.Context) (*VirtualMachineFlag, context.Context) { + if v := ctx.Value(virtualMachineFlagKey); v != nil { + return v.(*VirtualMachineFlag), ctx + } + + v := &VirtualMachineFlag{} + v.ClientFlag, ctx = NewClientFlag(ctx) + v.DatacenterFlag, ctx = NewDatacenterFlag(ctx) + v.SearchFlag, ctx = NewSearchFlag(ctx, SearchVirtualMachines) + ctx = context.WithValue(ctx, virtualMachineFlagKey, v) + return v, ctx +} + +func (flag *VirtualMachineFlag) Register(ctx context.Context, f *flag.FlagSet) { + flag.RegisterOnce(func() { + flag.ClientFlag.Register(ctx, f) + flag.DatacenterFlag.Register(ctx, f) + flag.SearchFlag.Register(ctx, f) + + env := "GOVC_VM" + value := os.Getenv(env) + usage := fmt.Sprintf("Virtual machine [%s]", env) + f.StringVar(&flag.name, "vm", value, usage) + }) +} + +func (flag *VirtualMachineFlag) Process(ctx context.Context) error { + return flag.ProcessOnce(func() error { + if err := flag.ClientFlag.Process(ctx); err != nil { + return err + } + if err := flag.DatacenterFlag.Process(ctx); err != nil { + return err + } + if err := flag.SearchFlag.Process(ctx); err != nil { + return err + } + return nil + }) +} + +func (flag *VirtualMachineFlag) VirtualMachine() (*object.VirtualMachine, error) { + ctx := context.TODO() + + if flag.vm != nil { + return flag.vm, nil + } + + // Use search flags if specified. + if flag.SearchFlag.IsSet() { + vm, err := flag.SearchFlag.VirtualMachine() + if err != nil { + return nil, err + } + + flag.vm = vm + return flag.vm, nil + } + + // Never look for a default virtual machine. + if flag.name == "" { + return nil, nil + } + + finder, err := flag.Finder() + if err != nil { + return nil, err + } + + flag.vm, err = finder.VirtualMachine(ctx, flag.name) + return flag.vm, err +} diff --git a/vendor/github.com/vmware/govmomi/govc/host/esxcli/command.go b/vendor/github.com/vmware/govmomi/govc/host/esxcli/command.go new file mode 100644 index 0000000..671a23b --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/host/esxcli/command.go @@ -0,0 +1,149 @@ +/* +Copyright (c) 2014 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package esxcli + +import ( + "flag" + "fmt" + "strings" + + "github.com/vmware/govmomi/internal" +) + +type Command struct { + name []string + args []string +} + +type CommandInfoItem struct { + Name string `xml:"name"` + DisplayName string `xml:"displayName"` + Help string `xml:"help"` +} + +type CommandInfoParam struct { + CommandInfoItem + Aliases []string `xml:"aliases"` + Flag bool `xml:"flag"` +} + +type CommandInfoHint struct { + Key string `xml:"key"` + Value string `xml:"value"` +} + +type CommandInfoHints []CommandInfoHint + +type CommandInfoMethod struct { + CommandInfoItem + Param []CommandInfoParam `xml:"param"` + Hints CommandInfoHints `xml:"hints"` +} + +type CommandInfo struct { + CommandInfoItem + Method []*CommandInfoMethod `xml:"method"` +} + +func NewCommand(args []string) *Command { + c := &Command{} + + for i, arg := range args { + if strings.HasPrefix(arg, "-") { + c.args = args[i:] + break + } else { + c.name = append(c.name, arg) + } + } + + return c +} + +func (c *Command) Namespace() string { + return strings.Join(c.name[:len(c.name)-1], ".") +} + +func (c *Command) Name() string { + return c.name[len(c.name)-1] +} + +func (c *Command) Method() string { + return "vim.EsxCLI." + strings.Join(c.name, ".") +} + +func (c *Command) Moid() string { + return "ha-cli-handler-" + strings.Join(c.name[:len(c.name)-1], "-") +} + +// Parse generates a flag.FlagSet based on the given []CommandInfoParam and +// returns arguments for use with methods.ExecuteSoap +func (c *Command) Parse(params []CommandInfoParam) ([]internal.ReflectManagedMethodExecuterSoapArgument, error) { + flags := flag.NewFlagSet(strings.Join(c.name, " "), flag.ExitOnError) + vals := make([]string, len(params)) + + for i, p := range params { + v := &vals[i] + for _, a := range p.Aliases { + a = strings.TrimPrefix(a[1:], "-") + flags.StringVar(v, a, "", p.Help) + } + } + + err := flags.Parse(c.args) + if err != nil { + return nil, err + } + + args := []internal.ReflectManagedMethodExecuterSoapArgument{} + + for i, p := range params { + if vals[i] == "" { + continue + } + args = append(args, c.Argument(p.Name, vals[i])) + } + + return args, nil +} + +func (c *Command) Argument(name string, val string) internal.ReflectManagedMethodExecuterSoapArgument { + return internal.ReflectManagedMethodExecuterSoapArgument{ + Name: name, + Val: fmt.Sprintf("<%s>%s", name, val, name), + } +} + +func (h CommandInfoHints) Formatter() string { + for _, hint := range h { + if hint.Key == "formatter" { + return hint.Value + } + } + + return "simple" +} + +func (h CommandInfoHints) Fields() []string { + for _, hint := range h { + if strings.HasPrefix(hint.Key, "fields:") { + return strings.Split(hint.Value, ",") + } + } + + return nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/host/esxcli/esxcli.go b/vendor/github.com/vmware/govmomi/govc/host/esxcli/esxcli.go new file mode 100644 index 0000000..88dc9cd --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/host/esxcli/esxcli.go @@ -0,0 +1,182 @@ +/* +Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package esxcli + +import ( + "context" + "flag" + "fmt" + "io" + "sort" + "strings" + "text/tabwriter" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" +) + +type esxcli struct { + *flags.HostSystemFlag + + hints bool +} + +func init() { + cli.Register("host.esxcli", &esxcli{}) +} + +func (cmd *esxcli) Usage() string { + return "COMMAND [ARG]..." +} + +func (cmd *esxcli) Register(ctx context.Context, f *flag.FlagSet) { + cmd.HostSystemFlag, ctx = flags.NewHostSystemFlag(ctx) + cmd.HostSystemFlag.Register(ctx, f) + + f.BoolVar(&cmd.hints, "hints", true, "Use command info hints when formatting output") +} + +func (cmd *esxcli) Description() string { + return `Invoke esxcli command on HOST. + +Output is rendered in table form when possible, unless disabled with '-hints=false'. + +Examples: + govc host.esxcli network ip connection list + govc host.esxcli system settings advanced set -o /Net/GuestIPHack -i 1 + govc host.esxcli network firewall ruleset set -r remoteSerialPort -e true + govc host.esxcli network firewall set -e false + govc host.esxcli hardware platform get` +} + +func (cmd *esxcli) Process(ctx context.Context) error { + if err := cmd.HostSystemFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *esxcli) Run(ctx context.Context, f *flag.FlagSet) error { + c, err := cmd.Client() + if err != nil { + return err + } + + host, err := cmd.HostSystem() + if err != nil { + return err + } + + e, err := NewExecutor(c, host) + if err != nil { + return err + } + + res, err := e.Run(f.Args()) + if err != nil { + return err + } + + if len(res.Values) == 0 { + if res.String != "" { + fmt.Print(res.String) + if !strings.HasSuffix(res.String, "\n") { + fmt.Println() + } + } + return nil + } + + return cmd.WriteResult(&result{res, cmd}) +} + +type result struct { + *Response + cmd *esxcli +} + +func (r *result) Write(w io.Writer) error { + var formatType string + if r.cmd.hints { + formatType = r.Info.Hints.Formatter() + } + + switch formatType { + case "table": + r.cmd.formatTable(w, r.Response) + default: + r.cmd.formatSimple(w, r.Response) + } + + return nil +} + +func (cmd *esxcli) formatSimple(w io.Writer, res *Response) { + var keys []string + for key := range res.Values[0] { + keys = append(keys, key) + } + sort.Strings(keys) + + tw := tabwriter.NewWriter(w, 2, 0, 2, ' ', 0) + + for i, rv := range res.Values { + if i > 0 { + fmt.Fprintln(tw) + _ = tw.Flush() + } + for _, key := range keys { + fmt.Fprintf(tw, "%s:\t%s\n", key, strings.Join(rv[key], ", ")) + } + } + + _ = tw.Flush() +} + +func (cmd *esxcli) formatTable(w io.Writer, res *Response) { + fields := res.Info.Hints.Fields() + if len(fields) == 0 { + cmd.formatSimple(w, res) + return + } + tw := tabwriter.NewWriter(w, len(fields), 0, 2, ' ', 0) + + var hr []string + for _, name := range fields { + hr = append(hr, strings.Repeat("-", len(name))) + } + + fmt.Fprintln(tw, strings.Join(fields, "\t")) + fmt.Fprintln(tw, strings.Join(hr, "\t")) + + for _, vals := range res.Values { + var row []string + + for _, name := range fields { + key := strings.Replace(name, " ", "", -1) + if val, ok := vals[key]; ok { + row = append(row, strings.Join(val, ", ")) + } else { + row = append(row, "") + } + } + + fmt.Fprintln(tw, strings.Join(row, "\t")) + } + + _ = tw.Flush() +} diff --git a/vendor/github.com/vmware/govmomi/govc/host/esxcli/executor.go b/vendor/github.com/vmware/govmomi/govc/host/esxcli/executor.go new file mode 100644 index 0000000..af5e9ff --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/host/esxcli/executor.go @@ -0,0 +1,167 @@ +/* +Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package esxcli + +import ( + "context" + "errors" + "fmt" + + "github.com/vmware/govmomi/internal" + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/xml" +) + +type Executor struct { + c *vim25.Client + host *object.HostSystem + mme *internal.ReflectManagedMethodExecuter + dtm *internal.InternalDynamicTypeManager + info map[string]*CommandInfo +} + +func NewExecutor(c *vim25.Client, host *object.HostSystem) (*Executor, error) { + ctx := context.TODO() + e := &Executor{ + c: c, + host: host, + info: make(map[string]*CommandInfo), + } + + { + req := internal.RetrieveManagedMethodExecuterRequest{ + This: host.Reference(), + } + + res, err := internal.RetrieveManagedMethodExecuter(ctx, c, &req) + if err != nil { + return nil, err + } + + e.mme = res.Returnval + } + + { + req := internal.RetrieveDynamicTypeManagerRequest{ + This: host.Reference(), + } + + res, err := internal.RetrieveDynamicTypeManager(ctx, c, &req) + if err != nil { + return nil, err + } + + e.dtm = res.Returnval + } + + return e, nil +} + +func (e *Executor) CommandInfo(c *Command) (*CommandInfoMethod, error) { + ns := c.Namespace() + var info *CommandInfo + var ok bool + + if info, ok = e.info[ns]; !ok { + req := internal.ExecuteSoapRequest{ + Moid: "ha-dynamic-type-manager-local-cli-cliinfo", + Method: "vim.CLIInfo.FetchCLIInfo", + Argument: []internal.ReflectManagedMethodExecuterSoapArgument{ + c.Argument("typeName", "vim.EsxCLI."+ns), + }, + } + + info = new(CommandInfo) + if err := e.Execute(&req, info); err != nil { + return nil, err + } + + e.info[ns] = info + } + + name := c.Name() + for _, method := range info.Method { + if method.Name == name { + return method, nil + } + } + + return nil, fmt.Errorf("method '%s' not found in name space '%s'", name, c.Namespace()) +} + +func (e *Executor) NewRequest(args []string) (*internal.ExecuteSoapRequest, *CommandInfoMethod, error) { + c := NewCommand(args) + + info, err := e.CommandInfo(c) + if err != nil { + return nil, nil, err + } + + sargs, err := c.Parse(info.Param) + if err != nil { + return nil, nil, err + } + + sreq := internal.ExecuteSoapRequest{ + Moid: c.Moid(), + Method: c.Method(), + Argument: sargs, + } + + return &sreq, info, nil +} + +func (e *Executor) Execute(req *internal.ExecuteSoapRequest, res interface{}) error { + ctx := context.TODO() + req.This = e.mme.ManagedObjectReference + req.Version = "urn:vim25/5.0" + + x, err := internal.ExecuteSoap(ctx, e.c, req) + if err != nil { + return err + } + + if x.Returnval != nil { + if x.Returnval.Fault != nil { + return errors.New(x.Returnval.Fault.FaultMsg) + } + + if err := xml.Unmarshal([]byte(x.Returnval.Response), res); err != nil { + return err + } + } + + return nil +} + +func (e *Executor) Run(args []string) (*Response, error) { + req, info, err := e.NewRequest(args) + if err != nil { + return nil, err + } + + res := &Response{ + Info: info, + } + + if err := e.Execute(req, res); err != nil { + return nil, err + } + + return res, nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/host/esxcli/firewall_info.go b/vendor/github.com/vmware/govmomi/govc/host/esxcli/firewall_info.go new file mode 100644 index 0000000..a3feaf5 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/host/esxcli/firewall_info.go @@ -0,0 +1,48 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package esxcli + +import "github.com/vmware/govmomi/object" + +type FirewallInfo struct { + Loaded bool + Enabled bool + DefaultAction string +} + +// GetFirewallInfo via 'esxcli network firewall get' +// The HostFirewallSystem type does not expose this data. +// This helper can be useful in particular to determine if the firewall is enabled or disabled. +func GetFirewallInfo(s *object.HostSystem) (*FirewallInfo, error) { + x, err := NewExecutor(s.Client(), s) + if err != nil { + return nil, err + } + + res, err := x.Run([]string{"network", "firewall", "get"}) + if err != nil { + return nil, err + } + + info := &FirewallInfo{ + Loaded: res.Values[0]["Loaded"][0] == "true", + Enabled: res.Values[0]["Enabled"][0] == "true", + DefaultAction: res.Values[0]["DefaultAction"][0], + } + + return info, nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/host/esxcli/guest_info.go b/vendor/github.com/vmware/govmomi/govc/host/esxcli/guest_info.go new file mode 100644 index 0000000..c310a84 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/host/esxcli/guest_info.go @@ -0,0 +1,120 @@ +/* +Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package esxcli + +import ( + "context" + "strings" + + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/property" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type hostInfo struct { + *Executor + wids map[string]string +} + +type GuestInfo struct { + c *vim25.Client + hosts map[string]*hostInfo +} + +func NewGuestInfo(c *vim25.Client) *GuestInfo { + return &GuestInfo{ + c: c, + hosts: make(map[string]*hostInfo), + } +} + +func (g *GuestInfo) hostInfo(ref *types.ManagedObjectReference) (*hostInfo, error) { + // cache exectuor and uuid -> worldid map + if h, ok := g.hosts[ref.Value]; ok { + return h, nil + } + + host := object.NewHostSystem(g.c, *ref) + + e, err := NewExecutor(g.c, host) + if err != nil { + return nil, err + } + + res, err := e.Run([]string{"vm", "process", "list"}) + if err != nil { + return nil, err + } + + ids := make(map[string]string, len(res.Values)) + + for _, process := range res.Values { + // Normalize uuid, esxcli and mo.VirtualMachine have different formats + uuid := strings.Replace(process["UUID"][0], " ", "", -1) + uuid = strings.Replace(uuid, "-", "", -1) + + ids[uuid] = process["WorldID"][0] + } + + h := &hostInfo{e, ids} + g.hosts[ref.Value] = h + + return h, nil +} + +// IpAddress attempts to find the guest IP address using esxcli. +// ESX hosts must be configured with the /Net/GuestIPHack enabled. +// For example: +// $ govc host.esxcli -- system settings advanced set -o /Net/GuestIPHack -i 1 +func (g *GuestInfo) IpAddress(vm *object.VirtualMachine) (string, error) { + ctx := context.TODO() + const any = "0.0.0.0" + var mvm mo.VirtualMachine + + pc := property.DefaultCollector(g.c) + err := pc.RetrieveOne(ctx, vm.Reference(), []string{"runtime.host", "config.uuid"}, &mvm) + if err != nil { + return "", err + } + + h, err := g.hostInfo(mvm.Runtime.Host) + if err != nil { + return "", err + } + + // Normalize uuid, esxcli and mo.VirtualMachine have different formats + uuid := strings.Replace(mvm.Config.Uuid, "-", "", -1) + + if wid, ok := h.wids[uuid]; ok { + res, err := h.Run([]string{"network", "vm", "port", "list", "--world-id", wid}) + if err != nil { + return "", err + } + + for _, val := range res.Values { + if ip, ok := val["IPAddress"]; ok { + if ip[0] != any { + return ip[0], nil + } + } + } + } + + return any, nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/host/esxcli/response.go b/vendor/github.com/vmware/govmomi/govc/host/esxcli/response.go new file mode 100644 index 0000000..e1c70b7 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/host/esxcli/response.go @@ -0,0 +1,102 @@ +/* +Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +package esxcli + +import ( + "io" + + "github.com/vmware/govmomi/vim25/xml" +) + +type Values map[string][]string + +type Response struct { + Info *CommandInfoMethod + Values []Values + String string +} + +func (v Values) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { + for { + t, err := d.Token() + if err != nil { + if err == io.EOF { + return nil + } + return err + } + + if s, ok := t.(xml.StartElement); ok { + t, err = d.Token() + if err != nil { + return err + } + + key := s.Name.Local + var val string + if c, ok := t.(xml.CharData); ok { + val = string(c) + } + v[key] = append(v[key], val) + } + } +} + +func (r *Response) Type(start xml.StartElement) string { + for _, a := range start.Attr { + if a.Name.Local == "type" { + return a.Value + } + } + return "" +} + +func (r *Response) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { + stype := r.Type(start) + + if stype != "ArrayOfDataObject" { + switch stype { + case "xsd:string": + return d.DecodeElement(&r.String, &start) + } + v := Values{} + if err := d.DecodeElement(&v, &start); err != nil { + return err + } + r.Values = append(r.Values, v) + return nil + } + + for { + t, err := d.Token() + if err != nil { + if err == io.EOF { + return nil + } + return err + } + + if s, ok := t.(xml.StartElement); ok { + if s.Name.Local == "DataObject" { + v := Values{} + if err := d.DecodeElement(&v, &s); err != nil { + return err + } + r.Values = append(r.Values, v) + } + } + } +} diff --git a/vendor/github.com/vmware/govmomi/govc/importx/archive.go b/vendor/github.com/vmware/govmomi/govc/importx/archive.go new file mode 100644 index 0000000..f8d256d --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/importx/archive.go @@ -0,0 +1,187 @@ +/* +Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package importx + +import ( + "archive/tar" + "bytes" + "context" + "errors" + "flag" + "fmt" + "io" + "io/ioutil" + "net/url" + "os" + "path" + "path/filepath" + "strings" + + "github.com/vmware/govmomi/ovf" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/soap" +) + +// ArchiveFlag doesn't register any flags; +// only encapsulates some common archive related functionality. +type ArchiveFlag struct { + Archive +} + +func newArchiveFlag(ctx context.Context) (*ArchiveFlag, context.Context) { + return &ArchiveFlag{}, ctx +} + +func (f *ArchiveFlag) Register(ctx context.Context, fs *flag.FlagSet) { +} + +func (f *ArchiveFlag) Process(ctx context.Context) error { + return nil +} + +func (f *ArchiveFlag) ReadOvf(fpath string) ([]byte, error) { + r, _, err := f.Open(fpath) + if err != nil { + return nil, err + } + defer r.Close() + + return ioutil.ReadAll(r) +} + +func (f *ArchiveFlag) ReadEnvelope(data []byte) (*ovf.Envelope, error) { + e, err := ovf.Unmarshal(bytes.NewReader(data)) + if err != nil { + return nil, fmt.Errorf("failed to parse ovf: %s", err) + } + + return e, nil +} + +type Archive interface { + Open(string) (io.ReadCloser, int64, error) +} + +type TapeArchive struct { + Path string + Opener +} + +type TapeArchiveEntry struct { + io.Reader + f io.Closer + + Name string +} + +func (t *TapeArchiveEntry) Close() error { + return t.f.Close() +} + +func (t *TapeArchive) Open(name string) (io.ReadCloser, int64, error) { + f, _, err := t.OpenFile(t.Path) + if err != nil { + return nil, 0, err + } + + r := tar.NewReader(f) + + for { + h, err := r.Next() + if err == io.EOF { + break + } + if err != nil { + return nil, 0, err + } + + matched, err := path.Match(name, path.Base(h.Name)) + if err != nil { + return nil, 0, err + } + + if matched { + return &TapeArchiveEntry{r, f, h.Name}, h.Size, nil + } + } + + _ = f.Close() + + return nil, 0, os.ErrNotExist +} + +type FileArchive struct { + Path string + Opener +} + +func (t *FileArchive) Open(name string) (io.ReadCloser, int64, error) { + fpath := name + if name != t.Path { + index := strings.LastIndex(t.Path, "/") + if index != -1 { + fpath = t.Path[:index] + "/" + name + } + } + + return t.OpenFile(fpath) +} + +type Opener struct { + *vim25.Client +} + +func isRemotePath(path string) bool { + if strings.HasPrefix(path, "http://") || strings.HasPrefix(path, "https://") { + return true + } + return false +} + +func (o Opener) OpenLocal(path string) (io.ReadCloser, int64, error) { + f, err := os.Open(filepath.Clean(path)) + if err != nil { + return nil, 0, err + } + + s, err := f.Stat() + if err != nil { + return nil, 0, err + } + + return f, s.Size(), nil +} + +func (o Opener) OpenFile(path string) (io.ReadCloser, int64, error) { + if isRemotePath(path) { + return o.OpenRemote(path) + } + return o.OpenLocal(path) +} + +func (o Opener) OpenRemote(link string) (io.ReadCloser, int64, error) { + if o.Client == nil { + return nil, 0, errors.New("remote path not supported") + } + + u, err := url.Parse(link) + if err != nil { + return nil, 0, err + } + + return o.Download(context.Background(), u, &soap.DefaultDownload) +} diff --git a/vendor/github.com/vmware/govmomi/govc/importx/importable.go b/vendor/github.com/vmware/govmomi/govc/importx/importable.go new file mode 100644 index 0000000..14e3167 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/importx/importable.go @@ -0,0 +1,59 @@ +/* +Copyright (c) 2014 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package importx + +import ( + "fmt" + "path" +) + +type importable struct { + localPath string + remotePath string +} + +func (i importable) Ext() string { + return path.Ext(i.localPath) +} + +func (i importable) Base() string { + return path.Base(i.localPath) +} + +func (i importable) BaseClean() string { + b := i.Base() + e := i.Ext() + return b[:len(b)-len(e)] +} + +func (i importable) RemoteSrcVMDK() string { + file := fmt.Sprintf("%s-src.vmdk", i.BaseClean()) + return i.toRemotePath(file) +} + +func (i importable) RemoteDstVMDK() string { + file := fmt.Sprintf("%s.vmdk", i.BaseClean()) + return i.toRemotePath(file) +} + +func (i importable) toRemotePath(p string) string { + if i.remotePath == "" { + return p + } + + return path.Join(i.remotePath, p) +} diff --git a/vendor/github.com/vmware/govmomi/govc/importx/options.go b/vendor/github.com/vmware/govmomi/govc/importx/options.go new file mode 100644 index 0000000..d45d117 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/importx/options.go @@ -0,0 +1,205 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package importx + +import ( + "context" + "encoding/json" + "flag" + "fmt" + "os" + + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/ovf" + "github.com/vmware/govmomi/vim25/types" +) + +type Property struct { + types.KeyValue + Spec *ovf.Property `json:",omitempty"` +} + +type Network struct { + Name string + Network string +} + +type Options struct { + AllDeploymentOptions []string `json:",omitempty"` + Deployment string `json:",omitempty"` + + AllDiskProvisioningOptions []string `json:",omitempty"` + DiskProvisioning string + + AllIPAllocationPolicyOptions []string `json:",omitempty"` + IPAllocationPolicy string + + AllIPProtocolOptions []string `json:",omitempty"` + IPProtocol string + + PropertyMapping []Property `json:",omitempty"` + + NetworkMapping []Network `json:",omitempty"` + + Annotation string `json:",omitempty"` + + MarkAsTemplate bool + PowerOn bool + InjectOvfEnv bool + WaitForIP bool + Name *string +} + +type OptionsFlag struct { + Options Options + + path string +} + +func newOptionsFlag(ctx context.Context) (*OptionsFlag, context.Context) { + return &OptionsFlag{}, ctx +} + +func (flag *OptionsFlag) Register(ctx context.Context, f *flag.FlagSet) { + f.StringVar(&flag.path, "options", "", "Options spec file path for VM deployment") +} + +func (flag *OptionsFlag) Process(ctx context.Context) error { + if len(flag.path) == 0 { + return nil + } + + var err error + in := os.Stdin + + if flag.path != "-" { + in, err = os.Open(flag.path) + if err != nil { + return err + } + defer in.Close() + } + + return json.NewDecoder(in).Decode(&flag.Options) +} + +func (flag *OptionsFlag) powerOn(vm *object.VirtualMachine, out *flags.OutputFlag) error { + if !flag.Options.PowerOn || flag.Options.MarkAsTemplate { + return nil + } + + out.Log("Powering on VM...\n") + + task, err := vm.PowerOn(context.Background()) + if err != nil { + return err + } + + return task.Wait(context.Background()) +} + +func (flag *OptionsFlag) markAsTemplate(vm *object.VirtualMachine, out *flags.OutputFlag) error { + if !flag.Options.MarkAsTemplate { + return nil + } + + out.Log("Marking VM as template...\n") + + return vm.MarkAsTemplate(context.Background()) +} + +func (flag *OptionsFlag) injectOvfEnv(vm *object.VirtualMachine, out *flags.OutputFlag) error { + if !flag.Options.InjectOvfEnv { + return nil + } + + out.Log("Injecting OVF environment...\n") + + var opts []types.BaseOptionValue + + a := vm.Client().ServiceContent.About + + // build up Environment in order to marshal to xml + var props []ovf.EnvProperty + for _, p := range flag.Options.PropertyMapping { + props = append(props, ovf.EnvProperty{ + Key: p.Key, + Value: p.Value, + }) + } + + env := ovf.Env{ + EsxID: vm.Reference().Value, + Platform: &ovf.PlatformSection{ + Kind: a.Name, + Version: a.Version, + Vendor: a.Vendor, + Locale: "US", + }, + Property: &ovf.PropertySection{ + Properties: props, + }, + } + + opts = append(opts, &types.OptionValue{ + Key: "guestinfo.ovfEnv", + Value: env.MarshalManual(), + }) + + task, err := vm.Reconfigure(context.Background(), types.VirtualMachineConfigSpec{ + ExtraConfig: opts, + }) + + if err != nil { + return err + } + + return task.Wait(context.Background()) +} + +func (flag *OptionsFlag) waitForIP(vm *object.VirtualMachine, out *flags.OutputFlag) error { + if !flag.Options.PowerOn || !flag.Options.WaitForIP || flag.Options.MarkAsTemplate { + return nil + } + + out.Log("Waiting for IP address...\n") + ip, err := vm.WaitForIP(context.Background()) + if err != nil { + return err + } + + out.Log(fmt.Sprintf("Received IP address: %s\n", ip)) + return nil +} + +func (flag *OptionsFlag) Deploy(vm *object.VirtualMachine, out *flags.OutputFlag) error { + deploy := []func(*object.VirtualMachine, *flags.OutputFlag) error{ + flag.injectOvfEnv, + flag.markAsTemplate, + flag.powerOn, + flag.waitForIP, + } + + for _, step := range deploy { + if err := step(vm, out); err != nil { + return err + } + } + + return nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/importx/ova.go b/vendor/github.com/vmware/govmomi/govc/importx/ova.go new file mode 100644 index 0000000..343cdcd --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/importx/ova.go @@ -0,0 +1,63 @@ +/* +Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package importx + +import ( + "context" + "flag" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/vim25/types" +) + +type ova struct { + *ovfx +} + +func init() { + cli.Register("import.ova", &ova{&ovfx{}}) +} + +func (cmd *ova) Usage() string { + return "PATH_TO_OVA" +} + +func (cmd *ova) Run(ctx context.Context, f *flag.FlagSet) error { + fpath, err := cmd.Prepare(f) + if err != nil { + return err + } + + archive := &TapeArchive{Path: fpath} + archive.Client = cmd.Client + + cmd.Archive = archive + + moref, err := cmd.Import(fpath) + if err != nil { + return err + } + + vm := object.NewVirtualMachine(cmd.Client, *moref) + return cmd.Deploy(vm, cmd.OutputFlag) +} + +func (cmd *ova) Import(fpath string) (*types.ManagedObjectReference, error) { + ovf := "*.ovf" + return cmd.ovfx.Import(ovf) +} diff --git a/vendor/github.com/vmware/govmomi/govc/importx/ovf.go b/vendor/github.com/vmware/govmomi/govc/importx/ovf.go new file mode 100644 index 0000000..9672389 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/importx/ovf.go @@ -0,0 +1,343 @@ +/* +Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package importx + +import ( + "context" + "errors" + "flag" + "fmt" + "path" + + "github.com/vmware/govmomi/find" + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/nfc" + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/ovf" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/soap" + "github.com/vmware/govmomi/vim25/types" +) + +type ovfx struct { + *flags.DatastoreFlag + *flags.HostSystemFlag + *flags.OutputFlag + *flags.ResourcePoolFlag + *flags.FolderFlag + + *ArchiveFlag + *OptionsFlag + + Name string + + Client *vim25.Client + Datacenter *object.Datacenter + Datastore *object.Datastore + ResourcePool *object.ResourcePool +} + +func init() { + cli.Register("import.ovf", &ovfx{}) +} + +func (cmd *ovfx) Register(ctx context.Context, f *flag.FlagSet) { + cmd.DatastoreFlag, ctx = flags.NewDatastoreFlag(ctx) + cmd.DatastoreFlag.Register(ctx, f) + cmd.HostSystemFlag, ctx = flags.NewHostSystemFlag(ctx) + cmd.HostSystemFlag.Register(ctx, f) + cmd.OutputFlag, ctx = flags.NewOutputFlag(ctx) + cmd.OutputFlag.Register(ctx, f) + cmd.ResourcePoolFlag, ctx = flags.NewResourcePoolFlag(ctx) + cmd.ResourcePoolFlag.Register(ctx, f) + cmd.FolderFlag, ctx = flags.NewFolderFlag(ctx) + cmd.FolderFlag.Register(ctx, f) + + cmd.ArchiveFlag, ctx = newArchiveFlag(ctx) + cmd.ArchiveFlag.Register(ctx, f) + cmd.OptionsFlag, ctx = newOptionsFlag(ctx) + cmd.OptionsFlag.Register(ctx, f) + + f.StringVar(&cmd.Name, "name", "", "Name to use for new entity") +} + +func (cmd *ovfx) Process(ctx context.Context) error { + if err := cmd.DatastoreFlag.Process(ctx); err != nil { + return err + } + if err := cmd.HostSystemFlag.Process(ctx); err != nil { + return err + } + if err := cmd.OutputFlag.Process(ctx); err != nil { + return err + } + if err := cmd.ResourcePoolFlag.Process(ctx); err != nil { + return err + } + if err := cmd.ArchiveFlag.Process(ctx); err != nil { + return err + } + if err := cmd.OptionsFlag.Process(ctx); err != nil { + return err + } + if err := cmd.FolderFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *ovfx) Usage() string { + return "PATH_TO_OVF" +} + +func (cmd *ovfx) Run(ctx context.Context, f *flag.FlagSet) error { + fpath, err := cmd.Prepare(f) + if err != nil { + return err + } + + archive := &FileArchive{Path: fpath} + archive.Client = cmd.Client + + cmd.Archive = archive + + moref, err := cmd.Import(fpath) + if err != nil { + return err + } + + vm := object.NewVirtualMachine(cmd.Client, *moref) + return cmd.Deploy(vm, cmd.OutputFlag) +} + +func (cmd *ovfx) Prepare(f *flag.FlagSet) (string, error) { + var err error + + args := f.Args() + if len(args) != 1 { + return "", errors.New("no file specified") + } + + cmd.Client, err = cmd.DatastoreFlag.Client() + if err != nil { + return "", err + } + + cmd.Datacenter, err = cmd.DatastoreFlag.Datacenter() + if err != nil { + return "", err + } + + cmd.Datastore, err = cmd.DatastoreFlag.Datastore() + if err != nil { + return "", err + } + + cmd.ResourcePool, err = cmd.ResourcePoolFlag.ResourcePoolIfSpecified() + if err != nil { + return "", err + } + + return f.Arg(0), nil +} + +func (cmd *ovfx) Map(op []Property) (p []types.KeyValue) { + for _, v := range op { + p = append(p, v.KeyValue) + } + + return +} + +func (cmd *ovfx) NetworkMap(e *ovf.Envelope) ([]types.OvfNetworkMapping, error) { + ctx := context.TODO() + finder, err := cmd.DatastoreFlag.Finder() + if err != nil { + return nil, err + } + + var nmap []types.OvfNetworkMapping + for _, m := range cmd.Options.NetworkMapping { + if m.Network == "" { + continue // Not set, let vSphere choose the default network + } + + var ref types.ManagedObjectReference + + net, err := finder.Network(ctx, m.Network) + if err != nil { + switch err.(type) { + case *find.NotFoundError: + if !ref.FromString(m.Network) { + return nil, err + } // else this is a raw MO ref + default: + return nil, err + } + } else { + ref = net.Reference() + } + + nmap = append(nmap, types.OvfNetworkMapping{ + Name: m.Name, + Network: ref, + }) + } + + return nmap, err +} + +func (cmd *ovfx) Import(fpath string) (*types.ManagedObjectReference, error) { + ctx := context.TODO() + + o, err := cmd.ReadOvf(fpath) + if err != nil { + return nil, err + } + + e, err := cmd.ReadEnvelope(o) + if err != nil { + return nil, fmt.Errorf("failed to parse ovf: %s", err) + } + + name := "Govc Virtual Appliance" + if e.VirtualSystem != nil { + name = e.VirtualSystem.ID + if e.VirtualSystem.Name != nil { + name = *e.VirtualSystem.Name + } + } + + // Override name from options if specified + if cmd.Options.Name != nil { + name = *cmd.Options.Name + } + + // Override name from arguments if specified + if cmd.Name != "" { + name = cmd.Name + } + + nmap, err := cmd.NetworkMap(e) + if err != nil { + return nil, err + } + + cisp := types.OvfCreateImportSpecParams{ + DiskProvisioning: cmd.Options.DiskProvisioning, + EntityName: name, + IpAllocationPolicy: cmd.Options.IPAllocationPolicy, + IpProtocol: cmd.Options.IPProtocol, + OvfManagerCommonParams: types.OvfManagerCommonParams{ + DeploymentOption: cmd.Options.Deployment, + Locale: "US"}, + PropertyMapping: cmd.Map(cmd.Options.PropertyMapping), + NetworkMapping: nmap, + } + + host, err := cmd.HostSystemIfSpecified() + if err != nil { + return nil, err + } + + if cmd.ResourcePool == nil { + if host == nil { + cmd.ResourcePool, err = cmd.ResourcePoolFlag.ResourcePool() + } else { + cmd.ResourcePool, err = host.ResourcePool(ctx) + } + if err != nil { + return nil, err + } + } + + m := ovf.NewManager(cmd.Client) + spec, err := m.CreateImportSpec(ctx, string(o), cmd.ResourcePool, cmd.Datastore, cisp) + if err != nil { + return nil, err + } + if spec.Error != nil { + return nil, errors.New(spec.Error[0].LocalizedMessage) + } + if spec.Warning != nil { + for _, w := range spec.Warning { + _, _ = cmd.Log(fmt.Sprintf("Warning: %s\n", w.LocalizedMessage)) + } + } + + if cmd.Options.Annotation != "" { + switch s := spec.ImportSpec.(type) { + case *types.VirtualMachineImportSpec: + s.ConfigSpec.Annotation = cmd.Options.Annotation + case *types.VirtualAppImportSpec: + s.VAppConfigSpec.Annotation = cmd.Options.Annotation + } + } + + var folder *object.Folder + // The folder argument must not be set on a VM in a vApp, otherwise causes + // InvalidArgument fault: A specified parameter was not correct: pool + if cmd.ResourcePool.Reference().Type != "VirtualApp" { + folder, err = cmd.FolderOrDefault("vm") + if err != nil { + return nil, err + } + } + + lease, err := cmd.ResourcePool.ImportVApp(ctx, spec.ImportSpec, folder, host) + if err != nil { + return nil, err + } + + info, err := lease.Wait(ctx, spec.FileItem) + if err != nil { + return nil, err + } + + u := lease.StartUpdater(ctx, info) + defer u.Done() + + for _, i := range info.Items { + err = cmd.Upload(ctx, lease, i) + if err != nil { + return nil, err + } + } + + return &info.Entity, lease.Complete(ctx) +} + +func (cmd *ovfx) Upload(ctx context.Context, lease *nfc.Lease, item nfc.FileItem) error { + file := item.Path + + f, size, err := cmd.Open(file) + if err != nil { + return err + } + defer f.Close() + + logger := cmd.ProgressLogger(fmt.Sprintf("Uploading %s... ", path.Base(file))) + defer logger.Wait() + + opts := soap.Upload{ + ContentLength: size, + Progress: logger, + } + + return lease.Upload(ctx, item, f, opts) +} diff --git a/vendor/github.com/vmware/govmomi/govc/importx/spec.go b/vendor/github.com/vmware/govmomi/govc/importx/spec.go new file mode 100644 index 0000000..0b17425 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/importx/spec.go @@ -0,0 +1,256 @@ +/* +Copyright (c) 2015-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package importx + +import ( + "context" + "flag" + "fmt" + "io" + "path" + "strings" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/ovf" + "github.com/vmware/govmomi/vim25/types" +) + +var ( + allDiskProvisioningOptions = []string{ + string(types.OvfCreateImportSpecParamsDiskProvisioningTypeFlat), + string(types.OvfCreateImportSpecParamsDiskProvisioningTypeMonolithicSparse), + string(types.OvfCreateImportSpecParamsDiskProvisioningTypeMonolithicFlat), + string(types.OvfCreateImportSpecParamsDiskProvisioningTypeTwoGbMaxExtentSparse), + string(types.OvfCreateImportSpecParamsDiskProvisioningTypeTwoGbMaxExtentFlat), + string(types.OvfCreateImportSpecParamsDiskProvisioningTypeThin), + string(types.OvfCreateImportSpecParamsDiskProvisioningTypeThick), + string(types.OvfCreateImportSpecParamsDiskProvisioningTypeSeSparse), + string(types.OvfCreateImportSpecParamsDiskProvisioningTypeEagerZeroedThick), + string(types.OvfCreateImportSpecParamsDiskProvisioningTypeSparse), + } + allIPAllocationPolicyOptions = []string{ + string(types.VAppIPAssignmentInfoIpAllocationPolicyDhcpPolicy), + string(types.VAppIPAssignmentInfoIpAllocationPolicyTransientPolicy), + string(types.VAppIPAssignmentInfoIpAllocationPolicyFixedPolicy), + string(types.VAppIPAssignmentInfoIpAllocationPolicyFixedAllocatedPolicy), + } + allIPProtocolOptions = []string{ + string(types.VAppIPAssignmentInfoProtocolsIPv4), + string(types.VAppIPAssignmentInfoProtocolsIPv6), + } +) + +type spec struct { + *ArchiveFlag + *flags.ClientFlag + *flags.OutputFlag + + verbose bool +} + +func init() { + cli.Register("import.spec", &spec{}) +} + +func (cmd *spec) Register(ctx context.Context, f *flag.FlagSet) { + cmd.ArchiveFlag, ctx = newArchiveFlag(ctx) + cmd.ArchiveFlag.Register(ctx, f) + cmd.ClientFlag, ctx = flags.NewClientFlag(ctx) + cmd.ClientFlag.Register(ctx, f) + + cmd.OutputFlag, ctx = flags.NewOutputFlag(ctx) + cmd.OutputFlag.Register(ctx, f) + + f.BoolVar(&cmd.verbose, "verbose", false, "Verbose spec output") +} + +func (cmd *spec) Process(ctx context.Context) error { + if err := cmd.ArchiveFlag.Process(ctx); err != nil { + return err + } + if err := cmd.ClientFlag.Process(ctx); err != nil { + return err + } + return cmd.OutputFlag.Process(ctx) +} + +func (cmd *spec) Usage() string { + return "PATH_TO_OVF_OR_OVA" +} + +func (cmd *spec) Run(ctx context.Context, f *flag.FlagSet) error { + fpath := "" + args := f.Args() + if len(args) == 1 { + fpath = f.Arg(0) + } + + if len(fpath) > 0 { + switch path.Ext(fpath) { + case ".ovf": + cmd.Archive = &FileArchive{Path: fpath} + case "", ".ova": + cmd.Archive = &TapeArchive{Path: fpath} + fpath = "*.ovf" + default: + return fmt.Errorf("invalid file extension %s", path.Ext(fpath)) + } + + if isRemotePath(fpath) { + client, err := cmd.Client() + if err != nil { + return err + } + switch archive := cmd.Archive.(type) { + case *FileArchive: + archive.Client = client + case *TapeArchive: + archive.Client = client + } + } + } + + env, err := cmd.Spec(fpath) + if err != nil { + return err + } + + if !cmd.All() { + cmd.JSON = true + } + return cmd.WriteResult(&specResult{env}) +} + +type specResult struct { + *Options +} + +func (*specResult) Write(w io.Writer) error { + return nil +} + +func (cmd *spec) Map(e *ovf.Envelope) (res []Property) { + if e == nil || e.VirtualSystem == nil { + return nil + } + + for _, p := range e.VirtualSystem.Product { + for i, v := range p.Property { + if v.UserConfigurable == nil || !*v.UserConfigurable { + continue + } + + d := "" + if v.Default != nil { + d = *v.Default + } + + // vSphere only accept True/False as boolean values for some reason + if v.Type == "boolean" { + d = strings.Title(d) + } + + // From OVF spec, section 9.5.1: + // key-value-env = [class-value "."] key-value-prod ["." instance-value] + k := v.Key + if p.Class != nil { + k = fmt.Sprintf("%s.%s", *p.Class, k) + } + if p.Instance != nil { + k = fmt.Sprintf("%s.%s", k, *p.Instance) + } + + np := Property{KeyValue: types.KeyValue{Key: k, Value: d}} + if cmd.verbose { + np.Spec = &p.Property[i] + } + + res = append(res, np) + } + } + + return +} + +func (cmd *spec) Spec(fpath string) (*Options, error) { + e := &ovf.Envelope{} + if fpath != "" { + d, err := cmd.ReadOvf(fpath) + if err != nil { + return nil, err + } + + if e, err = cmd.ReadEnvelope(d); err != nil { + return nil, err + } + } + + var deploymentOptions []string + if e.DeploymentOption != nil && e.DeploymentOption.Configuration != nil { + // add default first + for _, c := range e.DeploymentOption.Configuration { + if c.Default != nil && *c.Default { + deploymentOptions = append(deploymentOptions, c.ID) + } + } + + for _, c := range e.DeploymentOption.Configuration { + if c.Default == nil || !*c.Default { + deploymentOptions = append(deploymentOptions, c.ID) + } + } + } + + o := Options{ + DiskProvisioning: allDiskProvisioningOptions[0], + IPAllocationPolicy: allIPAllocationPolicyOptions[0], + IPProtocol: allIPProtocolOptions[0], + MarkAsTemplate: false, + PowerOn: false, + WaitForIP: false, + InjectOvfEnv: false, + PropertyMapping: cmd.Map(e), + } + + if deploymentOptions != nil { + o.Deployment = deploymentOptions[0] + } + + if e.VirtualSystem != nil && e.VirtualSystem.Annotation != nil { + for _, a := range e.VirtualSystem.Annotation { + o.Annotation += a.Annotation + } + } + + if e.Network != nil { + for _, net := range e.Network.Networks { + o.NetworkMapping = append(o.NetworkMapping, Network{net.Name, ""}) + } + } + + if cmd.verbose { + if deploymentOptions != nil { + o.AllDeploymentOptions = deploymentOptions + } + o.AllDiskProvisioningOptions = allDiskProvisioningOptions + o.AllIPAllocationPolicyOptions = allIPAllocationPolicyOptions + o.AllIPProtocolOptions = allIPProtocolOptions + } + + return &o, nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/importx/vmdk.go b/vendor/github.com/vmware/govmomi/govc/importx/vmdk.go new file mode 100644 index 0000000..6e0ac5f --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/importx/vmdk.go @@ -0,0 +1,132 @@ +/* +Copyright (c) 2014-2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package importx + +import ( + "context" + "errors" + "flag" + "fmt" + "path" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/vmdk" +) + +type disk struct { + *flags.DatastoreFlag + *flags.ResourcePoolFlag + *flags.FolderFlag + *flags.OutputFlag + + force bool +} + +func init() { + cli.Register("import.vmdk", &disk{}) +} + +func (cmd *disk) Register(ctx context.Context, f *flag.FlagSet) { + cmd.DatastoreFlag, ctx = flags.NewDatastoreFlag(ctx) + cmd.DatastoreFlag.Register(ctx, f) + cmd.ResourcePoolFlag, ctx = flags.NewResourcePoolFlag(ctx) + cmd.ResourcePoolFlag.Register(ctx, f) + cmd.FolderFlag, ctx = flags.NewFolderFlag(ctx) + cmd.FolderFlag.Register(ctx, f) + cmd.OutputFlag, ctx = flags.NewOutputFlag(ctx) + cmd.OutputFlag.Register(ctx, f) + + f.BoolVar(&cmd.force, "force", false, "Overwrite existing disk") +} + +func (cmd *disk) Process(ctx context.Context) error { + if err := cmd.DatastoreFlag.Process(ctx); err != nil { + return err + } + if err := cmd.ResourcePoolFlag.Process(ctx); err != nil { + return err + } + if err := cmd.FolderFlag.Process(ctx); err != nil { + return err + } + if err := cmd.OutputFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *disk) Usage() string { + return "PATH_TO_VMDK [REMOTE_DIRECTORY]" +} + +func (cmd *disk) Run(ctx context.Context, f *flag.FlagSet) error { + args := f.Args() + if len(args) < 1 { + return errors.New("no file to import") + } + + src := f.Arg(0) + + c, err := cmd.DatastoreFlag.Client() + if err != nil { + return err + } + + dc, err := cmd.DatastoreFlag.Datacenter() + if err != nil { + return err + } + + ds, err := cmd.DatastoreFlag.Datastore() + if err != nil { + return err + } + + pool, err := cmd.ResourcePoolFlag.ResourcePool() + if err != nil { + return err + } + + folder, err := cmd.FolderOrDefault("vm") + if err != nil { + return err + } + + logger := cmd.ProgressLogger(fmt.Sprintf("Uploading %s... ", path.Base(src))) + defer logger.Wait() + + p := vmdk.ImportParams{ + Path: f.Arg(1), + Logger: logger, + Type: "", // TODO: flag + Force: cmd.force, + Datacenter: dc, + Pool: pool, + Folder: folder, + } + + err = vmdk.Import(ctx, c, src, ds, p) + if err != nil && err == vmdk.ErrInvalidFormat { + return fmt.Errorf(`%s +The vmdk can be converted using one of: + vmware-vdiskmanager -t 5 -r '%s' new.vmdk + qemu-img convert -O vmdk -o subformat=streamOptimized '%s' new.vmdk`, err, src, src) + } + + return err +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/change.go b/vendor/github.com/vmware/govmomi/govc/vm/change.go new file mode 100644 index 0000000..a08df17 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/change.go @@ -0,0 +1,187 @@ +/* +Copyright (c) 2015-2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package vm + +import ( + "context" + "flag" + "fmt" + "reflect" + "strings" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/vim25/types" +) + +type extraConfig []types.BaseOptionValue + +func (e *extraConfig) String() string { + return fmt.Sprintf("%v", *e) +} + +func (e *extraConfig) Set(v string) error { + r := strings.SplitN(v, "=", 2) + if len(r) < 2 { + return fmt.Errorf("failed to parse extraConfig: %s", v) + } + *e = append(*e, &types.OptionValue{Key: r[0], Value: r[1]}) + return nil +} + +type change struct { + *flags.VirtualMachineFlag + *flags.ResourceAllocationFlag + + types.VirtualMachineConfigSpec + extraConfig extraConfig + Latency string +} + +func init() { + cli.Register("vm.change", &change{}) +} + +var latencyLevels = []string{ + string(types.LatencySensitivitySensitivityLevelLow), + string(types.LatencySensitivitySensitivityLevelNormal), + string(types.LatencySensitivitySensitivityLevelHigh), +} + +// setLatency validates latency level if set +func (cmd *change) setLatency() error { + if cmd.Latency == "" { + return nil + } + for _, l := range latencyLevels { + if l == cmd.Latency { + cmd.LatencySensitivity = &types.LatencySensitivity{ + Level: types.LatencySensitivitySensitivityLevel(cmd.Latency), + } + return nil + } + } + return fmt.Errorf("latency must be one of: %s", strings.Join(latencyLevels, "|")) +} + +// setAllocation sets *info=nil if none of the fields have been set. +// We need non-nil fields for use with flag.FlagSet, but we want the +// VirtualMachineConfigSpec fields to be nil if none of the related flags were given. +func setAllocation(info **types.ResourceAllocationInfo) { + r := *info + + if r.Shares.Level == "" { + r.Shares = nil + } else { + return + } + + if r.Limit != nil { + return + } + + if r.Reservation != nil { + return + } + + *info = nil +} + +func (cmd *change) Register(ctx context.Context, f *flag.FlagSet) { + cmd.VirtualMachineFlag, ctx = flags.NewVirtualMachineFlag(ctx) + cmd.VirtualMachineFlag.Register(ctx, f) + + cmd.CpuAllocation = &types.ResourceAllocationInfo{Shares: new(types.SharesInfo)} + cmd.MemoryAllocation = &types.ResourceAllocationInfo{Shares: new(types.SharesInfo)} + cmd.ResourceAllocationFlag = flags.NewResourceAllocationFlag(cmd.CpuAllocation, cmd.MemoryAllocation) + cmd.ResourceAllocationFlag.ExpandableReservation = false + cmd.ResourceAllocationFlag.Register(ctx, f) + + f.Int64Var(&cmd.MemoryMB, "m", 0, "Size in MB of memory") + f.Var(flags.NewInt32(&cmd.NumCPUs), "c", "Number of CPUs") + f.StringVar(&cmd.GuestId, "g", "", "Guest OS") + f.StringVar(&cmd.Name, "name", "", "Display name") + f.StringVar(&cmd.Latency, "latency", "", fmt.Sprintf("Latency sensitivity (%s)", strings.Join(latencyLevels, "|"))) + f.StringVar(&cmd.Annotation, "annotation", "", "VM description") + f.StringVar(&cmd.Uuid, "uuid", "", "BIOS UUID") + f.Var(&cmd.extraConfig, "e", "ExtraConfig. =") + + f.Var(flags.NewOptionalBool(&cmd.NestedHVEnabled), "nested-hv-enabled", "Enable nested hardware-assisted virtualization") + cmd.Tools = &types.ToolsConfigInfo{} + f.Var(flags.NewOptionalBool(&cmd.Tools.SyncTimeWithHost), "sync-time-with-host", "Enable SyncTimeWithHost") + f.Var(flags.NewOptionalBool(&cmd.VPMCEnabled), "vpmc-enabled", "Enable CPU performance counters") + f.Var(flags.NewOptionalBool(&cmd.MemoryHotAddEnabled), "memory-hot-add-enabled", "Enable memory hot add") + f.Var(flags.NewOptionalBool(&cmd.MemoryReservationLockedToMax), "memory-pin", "Reserve all guest memory") + f.Var(flags.NewOptionalBool(&cmd.CpuHotAddEnabled), "cpu-hot-add-enabled", "Enable CPU hot add") +} + +func (cmd *change) Description() string { + return `Change VM configuration. + +To add ExtraConfig variables that can read within the guest, use the 'guestinfo.' prefix. + +Examples: + govc vm.change -vm $vm -mem.reservation 2048 + govc vm.change -vm $vm -e smc.present=TRUE -e ich7m.present=TRUE + # Enable both cpu and memory hotplug on a guest: + govc vm.change -vm $vm -cpu-hot-add-enabled -memory-hot-add-enabled + govc vm.change -vm $vm -e guestinfo.vmname $vm + # Read the variable set above inside the guest: + vmware-rpctool "info-get guestinfo.vmname" + govc vm.change -vm $vm -latency high + govc vm.change -vm $vm -latency normal + govc vm.change -vm $vm -uuid 4139c345-7186-4924-a842-36b69a24159b` +} + +func (cmd *change) Process(ctx context.Context) error { + if err := cmd.VirtualMachineFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *change) Run(ctx context.Context, f *flag.FlagSet) error { + vm, err := cmd.VirtualMachine() + if err != nil { + return err + } + + if vm == nil { + return flag.ErrHelp + } + + if len(cmd.extraConfig) > 0 { + cmd.VirtualMachineConfigSpec.ExtraConfig = cmd.extraConfig + } + + setAllocation(&cmd.CpuAllocation) + setAllocation(&cmd.MemoryAllocation) + if reflect.DeepEqual(cmd.Tools, new(types.ToolsConfigInfo)) { + cmd.Tools = nil // no flags set, avoid sending in the request + } + + if err = cmd.setLatency(); err != nil { + return err + } + + task, err := vm.Reconfigure(ctx, cmd.VirtualMachineConfigSpec) + if err != nil { + return err + } + + return task.Wait(ctx) +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/clone.go b/vendor/github.com/vmware/govmomi/govc/vm/clone.go new file mode 100644 index 0000000..6f013f3 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/clone.go @@ -0,0 +1,484 @@ +/* +Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package vm + +import ( + "context" + "flag" + "fmt" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/property" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type clone struct { + *flags.ClientFlag + *flags.ClusterFlag + *flags.DatacenterFlag + *flags.DatastoreFlag + *flags.StoragePodFlag + *flags.ResourcePoolFlag + *flags.HostSystemFlag + *flags.NetworkFlag + *flags.FolderFlag + *flags.VirtualMachineFlag + + name string + memory int + cpus int + on bool + force bool + template bool + customization string + waitForIP bool + annotation string + snapshot string + link bool + + Client *vim25.Client + Cluster *object.ClusterComputeResource + Datacenter *object.Datacenter + Datastore *object.Datastore + StoragePod *object.StoragePod + ResourcePool *object.ResourcePool + HostSystem *object.HostSystem + Folder *object.Folder + VirtualMachine *object.VirtualMachine +} + +func init() { + cli.Register("vm.clone", &clone{}) +} + +func (cmd *clone) Register(ctx context.Context, f *flag.FlagSet) { + cmd.ClientFlag, ctx = flags.NewClientFlag(ctx) + cmd.ClientFlag.Register(ctx, f) + + cmd.ClusterFlag, ctx = flags.NewClusterFlag(ctx) + cmd.ClusterFlag.RegisterPlacement(ctx, f) + + cmd.DatacenterFlag, ctx = flags.NewDatacenterFlag(ctx) + cmd.DatacenterFlag.Register(ctx, f) + + cmd.DatastoreFlag, ctx = flags.NewDatastoreFlag(ctx) + cmd.DatastoreFlag.Register(ctx, f) + + cmd.StoragePodFlag, ctx = flags.NewStoragePodFlag(ctx) + cmd.StoragePodFlag.Register(ctx, f) + + cmd.ResourcePoolFlag, ctx = flags.NewResourcePoolFlag(ctx) + cmd.ResourcePoolFlag.Register(ctx, f) + + cmd.HostSystemFlag, ctx = flags.NewHostSystemFlag(ctx) + cmd.HostSystemFlag.Register(ctx, f) + + cmd.NetworkFlag, ctx = flags.NewNetworkFlag(ctx) + cmd.NetworkFlag.Register(ctx, f) + + cmd.FolderFlag, ctx = flags.NewFolderFlag(ctx) + cmd.FolderFlag.Register(ctx, f) + + cmd.VirtualMachineFlag, ctx = flags.NewVirtualMachineFlag(ctx) + cmd.VirtualMachineFlag.Register(ctx, f) + + f.IntVar(&cmd.memory, "m", 0, "Size in MB of memory") + f.IntVar(&cmd.cpus, "c", 0, "Number of CPUs") + f.BoolVar(&cmd.on, "on", true, "Power on VM") + f.BoolVar(&cmd.force, "force", false, "Create VM if vmx already exists") + f.BoolVar(&cmd.template, "template", false, "Create a Template") + f.StringVar(&cmd.customization, "customization", "", "Customization Specification Name") + f.BoolVar(&cmd.waitForIP, "waitip", false, "Wait for VM to acquire IP address") + f.StringVar(&cmd.annotation, "annotation", "", "VM description") + f.StringVar(&cmd.snapshot, "snapshot", "", "Snapshot name to clone from") + f.BoolVar(&cmd.link, "link", false, "Creates a linked clone from snapshot or source VM") +} + +func (cmd *clone) Usage() string { + return "NAME" +} + +func (cmd *clone) Description() string { + return `Clone VM or template to NAME. + +Examples: + govc vm.clone -vm template-vm new-vm + govc vm.clone -vm template-vm -link new-vm + govc vm.clone -vm template-vm -snapshot s-name new-vm + govc vm.clone -vm template-vm -link -snapshot s-name new-vm + govc vm.clone -vm template-vm -cluster cluster1 new-vm # use compute cluster placement + govc vm.clone -vm template-vm -datastore-cluster dscluster new-vm # use datastore cluster placement + govc vm.clone -vm template-vm -snapshot $(govc snapshot.tree -vm template-vm -C) new-vm + govc vm.clone -vm template-vm -template new-template # clone a VM template + govc vm.clone -vm=/ClusterName/vm/FolderName/VM_templateName -on=true -host=myesxi01 -ds=datastore01 myVM_name` +} + +func (cmd *clone) Process(ctx context.Context) error { + if err := cmd.ClientFlag.Process(ctx); err != nil { + return err + } + if err := cmd.ClusterFlag.Process(ctx); err != nil { + return err + } + if err := cmd.DatacenterFlag.Process(ctx); err != nil { + return err + } + if err := cmd.DatastoreFlag.Process(ctx); err != nil { + return err + } + if err := cmd.StoragePodFlag.Process(ctx); err != nil { + return err + } + if err := cmd.ResourcePoolFlag.Process(ctx); err != nil { + return err + } + if err := cmd.HostSystemFlag.Process(ctx); err != nil { + return err + } + if err := cmd.NetworkFlag.Process(ctx); err != nil { + return err + } + if err := cmd.FolderFlag.Process(ctx); err != nil { + return err + } + if err := cmd.VirtualMachineFlag.Process(ctx); err != nil { + return err + } + + return nil +} + +func (cmd *clone) Run(ctx context.Context, f *flag.FlagSet) error { + var err error + + if len(f.Args()) != 1 { + return flag.ErrHelp + } + + cmd.name = f.Arg(0) + if cmd.name == "" { + return flag.ErrHelp + } + + cmd.Client, err = cmd.ClientFlag.Client() + if err != nil { + return err + } + + cmd.Cluster, err = cmd.ClusterFlag.ClusterIfSpecified() + if err != nil { + return err + } + + cmd.Datacenter, err = cmd.DatacenterFlag.Datacenter() + if err != nil { + return err + } + + if cmd.StoragePodFlag.Isset() { + cmd.StoragePod, err = cmd.StoragePodFlag.StoragePod() + if err != nil { + return err + } + } else if cmd.Cluster == nil { + cmd.Datastore, err = cmd.DatastoreFlag.Datastore() + if err != nil { + return err + } + } + + cmd.HostSystem, err = cmd.HostSystemFlag.HostSystemIfSpecified() + if err != nil { + return err + } + + if cmd.HostSystem != nil { + if cmd.ResourcePool, err = cmd.HostSystem.ResourcePool(ctx); err != nil { + return err + } + } else { + if cmd.Cluster == nil { + // -host is optional + if cmd.ResourcePool, err = cmd.ResourcePoolFlag.ResourcePool(); err != nil { + return err + } + } + } + + if cmd.Folder, err = cmd.FolderFlag.Folder(); err != nil { + return err + } + + if cmd.VirtualMachine, err = cmd.VirtualMachineFlag.VirtualMachine(); err != nil { + return err + } + + if cmd.VirtualMachine == nil { + return flag.ErrHelp + } + + vm, err := cmd.cloneVM(ctx) + if err != nil { + return err + } + + if cmd.cpus > 0 || cmd.memory > 0 || cmd.annotation != "" { + vmConfigSpec := types.VirtualMachineConfigSpec{} + if cmd.cpus > 0 { + vmConfigSpec.NumCPUs = int32(cmd.cpus) + } + if cmd.memory > 0 { + vmConfigSpec.MemoryMB = int64(cmd.memory) + } + vmConfigSpec.Annotation = cmd.annotation + task, err := vm.Reconfigure(ctx, vmConfigSpec) + if err != nil { + return err + } + _, err = task.WaitForResult(ctx, nil) + if err != nil { + return err + } + } + + if cmd.template { + return nil + } + + if cmd.on { + task, err := vm.PowerOn(ctx) + if err != nil { + return err + } + + _, err = task.WaitForResult(ctx, nil) + if err != nil { + return err + } + + if cmd.waitForIP { + _, err = vm.WaitForIP(ctx) + if err != nil { + return err + } + } + } + + return nil +} + +func (cmd *clone) cloneVM(ctx context.Context) (*object.VirtualMachine, error) { + devices, err := cmd.VirtualMachine.Device(ctx) + if err != nil { + return nil, err + } + + // prepare virtual device config spec for network card + configSpecs := []types.BaseVirtualDeviceConfigSpec{} + + if cmd.NetworkFlag.IsSet() { + op := types.VirtualDeviceConfigSpecOperationAdd + card, derr := cmd.NetworkFlag.Device() + if derr != nil { + return nil, derr + } + // search for the first network card of the source + for _, device := range devices { + if _, ok := device.(types.BaseVirtualEthernetCard); ok { + op = types.VirtualDeviceConfigSpecOperationEdit + // set new backing info + cmd.NetworkFlag.Change(device, card) + card = device + break + } + } + + configSpecs = append(configSpecs, &types.VirtualDeviceConfigSpec{ + Operation: op, + Device: card, + }) + } + + folderref := cmd.Folder.Reference() + var poolref *types.ManagedObjectReference + if cmd.ResourcePool != nil { + poolref = types.NewReference(cmd.ResourcePool.Reference()) + } + + relocateSpec := types.VirtualMachineRelocateSpec{ + DeviceChange: configSpecs, + Folder: &folderref, + Pool: poolref, + } + + if cmd.HostSystem != nil { + hostref := cmd.HostSystem.Reference() + relocateSpec.Host = &hostref + } + + cloneSpec := &types.VirtualMachineCloneSpec{ + PowerOn: false, + Template: cmd.template, + } + + if cmd.snapshot == "" { + if cmd.link { + relocateSpec.DiskMoveType = string(types.VirtualMachineRelocateDiskMoveOptionsMoveAllDiskBackingsAndAllowSharing) + } + } else { + if cmd.link { + relocateSpec.DiskMoveType = string(types.VirtualMachineRelocateDiskMoveOptionsCreateNewChildDiskBacking) + } + + ref, ferr := cmd.VirtualMachine.FindSnapshot(ctx, cmd.snapshot) + if ferr != nil { + return nil, ferr + } + + cloneSpec.Snapshot = ref + } + + cloneSpec.Location = relocateSpec + vmref := cmd.VirtualMachine.Reference() + + // clone to storage pod + datastoreref := types.ManagedObjectReference{} + if cmd.StoragePod != nil && cmd.Datastore == nil { + storagePod := cmd.StoragePod.Reference() + + // Build pod selection spec from config spec + podSelectionSpec := types.StorageDrsPodSelectionSpec{ + StoragePod: &storagePod, + } + + // Build the placement spec + storagePlacementSpec := types.StoragePlacementSpec{ + Folder: &folderref, + Vm: &vmref, + CloneName: cmd.name, + CloneSpec: cloneSpec, + PodSelectionSpec: podSelectionSpec, + Type: string(types.StoragePlacementSpecPlacementTypeClone), + } + + // Get the storage placement result + storageResourceManager := object.NewStorageResourceManager(cmd.Client) + result, err := storageResourceManager.RecommendDatastores(ctx, storagePlacementSpec) + if err != nil { + return nil, err + } + + // Get the recommendations + recommendations := result.Recommendations + if len(recommendations) == 0 { + return nil, fmt.Errorf("no datastore-cluster recommendations") + } + + // Get the first recommendation + datastoreref = recommendations[0].Action[0].(*types.StoragePlacementAction).Destination + } else if cmd.StoragePod == nil && cmd.Datastore != nil { + datastoreref = cmd.Datastore.Reference() + } else if cmd.Cluster != nil { + spec := types.PlacementSpec{ + PlacementType: string(types.PlacementSpecPlacementTypeClone), + CloneName: cmd.name, + CloneSpec: cloneSpec, + RelocateSpec: &cloneSpec.Location, + Vm: &vmref, + } + result, err := cmd.Cluster.PlaceVm(ctx, spec) + if err != nil { + return nil, err + } + + recs := result.Recommendations + if len(recs) == 0 { + return nil, fmt.Errorf("no cluster recommendations") + } + + rspec := *recs[0].Action[0].(*types.PlacementAction).RelocateSpec + cloneSpec.Location.Host = rspec.Host + cloneSpec.Location.Datastore = rspec.Datastore + datastoreref = *rspec.Datastore + } else { + return nil, fmt.Errorf("please provide either a cluster, datastore or datastore-cluster") + } + + // Set the destination datastore + cloneSpec.Location.Datastore = &datastoreref + + // Check if vmx already exists + if !cmd.force { + vmxPath := fmt.Sprintf("%s/%s.vmx", cmd.name, cmd.name) + + var mds mo.Datastore + err = property.DefaultCollector(cmd.Client).RetrieveOne(ctx, datastoreref, []string{"name"}, &mds) + if err != nil { + return nil, err + } + + datastore := object.NewDatastore(cmd.Client, datastoreref) + datastore.InventoryPath = mds.Name + + _, err := datastore.Stat(ctx, vmxPath) + if err == nil { + dsPath := cmd.Datastore.Path(vmxPath) + return nil, fmt.Errorf("file %s already exists", dsPath) + } + } + + // check if customization specification requested + if len(cmd.customization) > 0 { + // get the customization spec manager + customizationSpecManager := object.NewCustomizationSpecManager(cmd.Client) + // check if customization specification exists + exists, err := customizationSpecManager.DoesCustomizationSpecExist(ctx, cmd.customization) + if err != nil { + return nil, err + } + if !exists { + return nil, fmt.Errorf("customization specification %s does not exists", cmd.customization) + } + // get the customization specification + customSpecItem, err := customizationSpecManager.GetCustomizationSpec(ctx, cmd.customization) + if err != nil { + return nil, err + } + customSpec := customSpecItem.Spec + // set the customization + cloneSpec.Customization = &customSpec + } + + task, err := cmd.VirtualMachine.Clone(ctx, cmd.Folder, cmd.name, *cloneSpec) + if err != nil { + return nil, err + } + + logger := cmd.ProgressLogger(fmt.Sprintf("Cloning %s to %s...", cmd.VirtualMachine.InventoryPath, cmd.name)) + defer logger.Wait() + + info, err := task.WaitForResult(ctx, logger) + if err != nil { + return nil, err + } + + return object.NewVirtualMachine(cmd.Client, info.Result.(types.ManagedObjectReference)), nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/console.go b/vendor/github.com/vmware/govmomi/govc/vm/console.go new file mode 100644 index 0000000..2af60d9 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/console.go @@ -0,0 +1,173 @@ +/* +Copyright (c) 2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package vm + +import ( + "context" + "flag" + "fmt" + "io" + "net/url" + "os" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/session" + "github.com/vmware/govmomi/vim25/soap" + "github.com/vmware/govmomi/vim25/types" +) + +type console struct { + *flags.VirtualMachineFlag + + h5 bool + capture string +} + +func init() { + cli.Register("vm.console", &console{}) +} + +func (cmd *console) Register(ctx context.Context, f *flag.FlagSet) { + cmd.VirtualMachineFlag, ctx = flags.NewVirtualMachineFlag(ctx) + cmd.VirtualMachineFlag.Register(ctx, f) + + f.BoolVar(&cmd.h5, "h5", false, "Generate HTML5 UI console link") + f.StringVar(&cmd.capture, "capture", "", "Capture console screen shot to file") +} + +func (cmd *console) Process(ctx context.Context) error { + if err := cmd.VirtualMachineFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *console) Usage() string { + return "VM" +} + +func (cmd *console) Description() string { + return `Generate console URL or screen capture for VM. + +One of VMRC, VMware Player, VMware Fusion or VMware Workstation must be installed to +open VMRC console URLs. + +Examples: + govc vm.console my-vm + govc vm.console -capture screen.png my-vm # screen capture + govc vm.console -capture - my-vm | display # screen capture to stdout + open $(govc vm.console my-vm) # MacOSX VMRC + open $(govc vm.console -h5 my-vm) # MacOSX H5 + xdg-open $(govc vm.console my-vm) # Linux VMRC + xdg-open $(govc vm.console -h5 my-vm) # Linux H5` +} + +func (cmd *console) Run(ctx context.Context, f *flag.FlagSet) error { + vms, err := cmd.VirtualMachines(f.Args()) + if err != nil { + return err + } + + if len(vms) != 1 { + return flag.ErrHelp + } + + vm := vms[0] + + state, err := vm.PowerState(ctx) + if err != nil { + return err + } + + if state != types.VirtualMachinePowerStatePoweredOn { + return fmt.Errorf("vm is not powered on (%s)", state) + } + + c := vm.Client() + + u := c.URL() + + if cmd.capture != "" { + u.Path = "/screen" + query := url.Values{"id": []string{vm.Reference().Value}} + u.RawQuery = query.Encode() + + param := soap.DefaultDownload + + if cmd.capture == "-" { + w, _, derr := c.Download(ctx, u, ¶m) + if derr != nil { + return derr + } + + _, err = io.Copy(os.Stdout, w) + if err != nil { + return err + } + + return w.Close() + } + + return c.DownloadFile(ctx, cmd.capture, u, ¶m) + } + + m := session.NewManager(c) + ticket, err := m.AcquireCloneTicket(ctx) + if err != nil { + return err + } + + var link string + + if cmd.h5 { + m := object.NewOptionManager(c, *c.ServiceContent.Setting) + + opt, err := m.Query(ctx, "VirtualCenter.FQDN") + if err != nil { + return err + } + + fqdn := opt[0].GetOptionValue().Value.(string) + + var info object.HostCertificateInfo + err = info.FromURL(u, nil) + if err != nil { + return err + } + + u.Path = "/ui/webconsole.html" + + u.RawQuery = url.Values{ + "vmId": []string{vm.Reference().Value}, + "vmName": []string{vm.Name()}, + "serverGuid": []string{c.ServiceContent.About.InstanceUuid}, + "host": []string{fqdn}, + "sessionTicket": []string{ticket}, + "thumbprint": []string{info.ThumbprintSHA1}, + }.Encode() + + link = u.String() + } else { + link = fmt.Sprintf("vmrc://clone:%s@%s/?moid=%s", ticket, u.Hostname(), vm.Reference().Value) + } + + fmt.Fprintln(os.Stdout, link) + + return nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/create.go b/vendor/github.com/vmware/govmomi/govc/vm/create.go new file mode 100644 index 0000000..6681c96 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/create.go @@ -0,0 +1,611 @@ +/* +Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package vm + +import ( + "context" + "flag" + "fmt" + "strings" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/property" + "github.com/vmware/govmomi/units" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +var hardwareVersions = []struct { + esx, vmx string +}{ + {"5.0", "vmx-8"}, + {"5.5", "vmx-10"}, + {"6.0", "vmx-11"}, + {"6.5", "vmx-13"}, + {"6.7", "vmx-14"}, + {"7.0", "vmx-17"}, +} + +type create struct { + *flags.ClientFlag + *flags.ClusterFlag + *flags.DatacenterFlag + *flags.DatastoreFlag + *flags.StoragePodFlag + *flags.ResourcePoolFlag + *flags.HostSystemFlag + *flags.NetworkFlag + *flags.FolderFlag + + name string + memory int + cpus int + guestID string + link bool + on bool + force bool + controller string + annotation string + firmware string + version string + + iso string + isoDatastoreFlag *flags.DatastoreFlag + isoDatastore *object.Datastore + + disk string + diskDatastoreFlag *flags.DatastoreFlag + diskDatastore *object.Datastore + + // Only set if the disk argument is a byte size, which means the disk + // doesn't exist yet and should be created + diskByteSize int64 + + Client *vim25.Client + Cluster *object.ClusterComputeResource + Datacenter *object.Datacenter + Datastore *object.Datastore + StoragePod *object.StoragePod + ResourcePool *object.ResourcePool + HostSystem *object.HostSystem + Folder *object.Folder +} + +func init() { + cli.Register("vm.create", &create{}) +} + +func (cmd *create) Register(ctx context.Context, f *flag.FlagSet) { + cmd.ClientFlag, ctx = flags.NewClientFlag(ctx) + cmd.ClientFlag.Register(ctx, f) + + cmd.ClusterFlag, ctx = flags.NewClusterFlag(ctx) + cmd.ClusterFlag.RegisterPlacement(ctx, f) + + cmd.DatacenterFlag, ctx = flags.NewDatacenterFlag(ctx) + cmd.DatacenterFlag.Register(ctx, f) + + cmd.DatastoreFlag, ctx = flags.NewDatastoreFlag(ctx) + cmd.DatastoreFlag.Register(ctx, f) + + cmd.StoragePodFlag, ctx = flags.NewStoragePodFlag(ctx) + cmd.StoragePodFlag.Register(ctx, f) + + cmd.ResourcePoolFlag, ctx = flags.NewResourcePoolFlag(ctx) + cmd.ResourcePoolFlag.Register(ctx, f) + + cmd.HostSystemFlag, ctx = flags.NewHostSystemFlag(ctx) + cmd.HostSystemFlag.Register(ctx, f) + + cmd.NetworkFlag, ctx = flags.NewNetworkFlag(ctx) + cmd.NetworkFlag.Register(ctx, f) + + cmd.FolderFlag, ctx = flags.NewFolderFlag(ctx) + cmd.FolderFlag.Register(ctx, f) + + f.IntVar(&cmd.memory, "m", 1024, "Size in MB of memory") + f.IntVar(&cmd.cpus, "c", 1, "Number of CPUs") + f.StringVar(&cmd.guestID, "g", "otherGuest", "Guest OS ID") + f.BoolVar(&cmd.link, "link", true, "Link specified disk") + f.BoolVar(&cmd.on, "on", true, "Power on VM") + f.BoolVar(&cmd.force, "force", false, "Create VM if vmx already exists") + f.StringVar(&cmd.controller, "disk.controller", "scsi", "Disk controller type") + f.StringVar(&cmd.annotation, "annotation", "", "VM description") + + firmwareTypes := []string{ + string(types.GuestOsDescriptorFirmwareTypeBios), + string(types.GuestOsDescriptorFirmwareTypeEfi), + } + + f.StringVar(&cmd.firmware, "firmware", firmwareTypes[0], + fmt.Sprintf("Firmware type [%s]", strings.Join(firmwareTypes, "|"))) + var versions []string + for i := range hardwareVersions { + versions = append(versions, hardwareVersions[i].esx) + } + f.StringVar(&cmd.version, "version", "", + fmt.Sprintf("ESXi hardware version [%s]", strings.Join(versions, "|"))) + + f.StringVar(&cmd.iso, "iso", "", "ISO path") + cmd.isoDatastoreFlag, ctx = flags.NewCustomDatastoreFlag(ctx) + f.StringVar(&cmd.isoDatastoreFlag.Name, "iso-datastore", "", "Datastore for ISO file") + + f.StringVar(&cmd.disk, "disk", "", "Disk path (to use existing) OR size (to create new, e.g. 20GB)") + cmd.diskDatastoreFlag, _ = flags.NewCustomDatastoreFlag(ctx) + f.StringVar(&cmd.diskDatastoreFlag.Name, "disk-datastore", "", "Datastore for disk file") +} + +func (cmd *create) Process(ctx context.Context) error { + if err := cmd.ClientFlag.Process(ctx); err != nil { + return err + } + if err := cmd.ClusterFlag.Process(ctx); err != nil { + return err + } + if err := cmd.DatacenterFlag.Process(ctx); err != nil { + return err + } + if err := cmd.DatastoreFlag.Process(ctx); err != nil { + return err + } + if err := cmd.StoragePodFlag.Process(ctx); err != nil { + return err + } + if err := cmd.ResourcePoolFlag.Process(ctx); err != nil { + return err + } + if err := cmd.HostSystemFlag.Process(ctx); err != nil { + return err + } + if err := cmd.NetworkFlag.Process(ctx); err != nil { + return err + } + if err := cmd.FolderFlag.Process(ctx); err != nil { + return err + } + + // Default iso/disk datastores to the VM's datastore + if cmd.isoDatastoreFlag.Name == "" { + cmd.isoDatastoreFlag = cmd.DatastoreFlag + } + if cmd.diskDatastoreFlag.Name == "" { + cmd.diskDatastoreFlag = cmd.DatastoreFlag + } + + return nil +} + +func (cmd *create) Usage() string { + return "NAME" +} + +func (cmd *create) Description() string { + return `Create VM. + +For a list of possible '-g' IDs, use 'govc vm.option.info' or see: +https://code.vmware.com/apis/358/vsphere/doc/vim.vm.GuestOsDescriptor.GuestOsIdentifier.html + +Examples: + govc vm.create -on=false vm-name + govc vm.create -cluster cluster1 vm-name # use compute cluster placement + govc vm.create -datastore-cluster dscluster vm-name # use datastore cluster placement + govc vm.create -m 2048 -c 2 -g freebsd64Guest -net.adapter vmxnet3 -disk.controller pvscsi vm-name` +} + +func (cmd *create) Run(ctx context.Context, f *flag.FlagSet) error { + var err error + + if len(f.Args()) != 1 { + return flag.ErrHelp + } + + cmd.name = f.Arg(0) + if cmd.name == "" { + return flag.ErrHelp + } + + cmd.Client, err = cmd.ClientFlag.Client() + if err != nil { + return err + } + + cmd.Cluster, err = cmd.ClusterFlag.ClusterIfSpecified() + if err != nil { + return err + } + + cmd.Datacenter, err = cmd.DatacenterFlag.Datacenter() + if err != nil { + return err + } + + if cmd.StoragePodFlag.Isset() { + cmd.StoragePod, err = cmd.StoragePodFlag.StoragePod() + if err != nil { + return err + } + } else if cmd.Cluster == nil { + cmd.Datastore, err = cmd.DatastoreFlag.Datastore() + if err != nil { + return err + } + } + + cmd.HostSystem, err = cmd.HostSystemFlag.HostSystemIfSpecified() + if err != nil { + return err + } + + if cmd.HostSystem != nil { + if cmd.ResourcePool, err = cmd.HostSystem.ResourcePool(ctx); err != nil { + return err + } + } else { + if cmd.Cluster == nil { + // -host is optional + if cmd.ResourcePool, err = cmd.ResourcePoolFlag.ResourcePool(); err != nil { + return err + } + } else { + if cmd.ResourcePool, err = cmd.Cluster.ResourcePool(ctx); err != nil { + return err + } + } + } + + if cmd.Folder, err = cmd.FolderFlag.Folder(); err != nil { + return err + } + + // Verify ISO exists + if cmd.iso != "" { + _, err = cmd.isoDatastoreFlag.Stat(ctx, cmd.iso) + if err != nil { + return err + } + + cmd.isoDatastore, err = cmd.isoDatastoreFlag.Datastore() + if err != nil { + return err + } + } + + // Verify disk exists + if cmd.disk != "" { + var b units.ByteSize + + // If disk can be parsed as byte units, don't stat + err = b.Set(cmd.disk) + if err == nil { + cmd.diskByteSize = int64(b) + } else { + _, err = cmd.diskDatastoreFlag.Stat(ctx, cmd.disk) + if err != nil { + return err + } + + cmd.diskDatastore, err = cmd.diskDatastoreFlag.Datastore() + if err != nil { + return err + } + } + } + + task, err := cmd.createVM(ctx) + if err != nil { + return err + } + + info, err := task.WaitForResult(ctx, nil) + if err != nil { + return err + } + + vm := object.NewVirtualMachine(cmd.Client, info.Result.(types.ManagedObjectReference)) + + if cmd.on { + task, err := vm.PowerOn(ctx) + if err != nil { + return err + } + + _, err = task.WaitForResult(ctx, nil) + if err != nil { + return err + } + } + + return nil +} + +func (cmd *create) createVM(ctx context.Context) (*object.Task, error) { + var devices object.VirtualDeviceList + var err error + + if cmd.version != "" { + for i := range hardwareVersions { + if hardwareVersions[i].esx == cmd.version { + cmd.version = hardwareVersions[i].vmx + break + } + } + } + + spec := &types.VirtualMachineConfigSpec{ + Name: cmd.name, + GuestId: cmd.guestID, + NumCPUs: int32(cmd.cpus), + MemoryMB: int64(cmd.memory), + Annotation: cmd.annotation, + Firmware: cmd.firmware, + Version: cmd.version, + } + + devices, err = cmd.addStorage(nil) + if err != nil { + return nil, err + } + + devices, err = cmd.addNetwork(devices) + if err != nil { + return nil, err + } + + deviceChange, err := devices.ConfigSpec(types.VirtualDeviceConfigSpecOperationAdd) + if err != nil { + return nil, err + } + + spec.DeviceChange = deviceChange + + var datastore *object.Datastore + + // If storage pod is specified, collect placement recommendations + if cmd.StoragePod != nil { + datastore, err = cmd.recommendDatastore(ctx, spec) + if err != nil { + return nil, err + } + } else if cmd.Datastore != nil { + datastore = cmd.Datastore + } else if cmd.Cluster != nil { + pspec := types.PlacementSpec{ + PlacementType: string(types.PlacementSpecPlacementTypeCreate), + ConfigSpec: spec, + } + result, err := cmd.Cluster.PlaceVm(ctx, pspec) + if err != nil { + return nil, err + } + + recs := result.Recommendations + if len(recs) == 0 { + return nil, fmt.Errorf("no cluster recommendations") + } + + rspec := *recs[0].Action[0].(*types.PlacementAction).RelocateSpec + if rspec.Datastore != nil { + datastore = object.NewDatastore(cmd.Client, *rspec.Datastore) + datastore.InventoryPath, _ = datastore.ObjectName(ctx) + cmd.Datastore = datastore + } + if rspec.Host != nil { + cmd.HostSystem = object.NewHostSystem(cmd.Client, *rspec.Host) + } + if rspec.Pool != nil { + cmd.ResourcePool = object.NewResourcePool(cmd.Client, *rspec.Pool) + } + } else { + return nil, fmt.Errorf("please provide either a cluster, datastore or datastore-cluster") + } + + if !cmd.force { + vmxPath := fmt.Sprintf("%s/%s.vmx", cmd.name, cmd.name) + + _, err := datastore.Stat(ctx, vmxPath) + if err == nil { + dsPath := cmd.Datastore.Path(vmxPath) + return nil, fmt.Errorf("file %s already exists", dsPath) + } + } + + folder := cmd.Folder + + spec.Files = &types.VirtualMachineFileInfo{ + VmPathName: fmt.Sprintf("[%s]", datastore.Name()), + } + + return folder.CreateVM(ctx, *spec, cmd.ResourcePool, cmd.HostSystem) +} + +func (cmd *create) addStorage(devices object.VirtualDeviceList) (object.VirtualDeviceList, error) { + if cmd.controller != "ide" { + if cmd.controller == "nvme" { + nvme, err := devices.CreateNVMEController() + if err != nil { + return nil, err + } + + devices = append(devices, nvme) + cmd.controller = devices.Name(nvme) + } else { + scsi, err := devices.CreateSCSIController(cmd.controller) + if err != nil { + return nil, err + } + + devices = append(devices, scsi) + cmd.controller = devices.Name(scsi) + } + } + + // If controller is specified to be IDE or if an ISO is specified, add IDE controller. + if cmd.controller == "ide" || cmd.iso != "" { + ide, err := devices.CreateIDEController() + if err != nil { + return nil, err + } + + devices = append(devices, ide) + } + + if cmd.diskByteSize != 0 { + controller, err := devices.FindDiskController(cmd.controller) + if err != nil { + return nil, err + } + + disk := &types.VirtualDisk{ + VirtualDevice: types.VirtualDevice{ + Key: devices.NewKey(), + Backing: &types.VirtualDiskFlatVer2BackingInfo{ + DiskMode: string(types.VirtualDiskModePersistent), + ThinProvisioned: types.NewBool(true), + }, + }, + CapacityInKB: cmd.diskByteSize / 1024, + } + + devices.AssignController(disk, controller) + devices = append(devices, disk) + } else if cmd.disk != "" { + controller, err := devices.FindDiskController(cmd.controller) + if err != nil { + return nil, err + } + + ds := cmd.diskDatastore.Reference() + path := cmd.diskDatastore.Path(cmd.disk) + disk := devices.CreateDisk(controller, ds, path) + + if cmd.link { + disk = devices.ChildDisk(disk) + } + + devices = append(devices, disk) + } + + if cmd.iso != "" { + ide, err := devices.FindIDEController("") + if err != nil { + return nil, err + } + + cdrom, err := devices.CreateCdrom(ide) + if err != nil { + return nil, err + } + + cdrom = devices.InsertIso(cdrom, cmd.isoDatastore.Path(cmd.iso)) + devices = append(devices, cdrom) + } + + return devices, nil +} + +func (cmd *create) addNetwork(devices object.VirtualDeviceList) (object.VirtualDeviceList, error) { + netdev, err := cmd.NetworkFlag.Device() + if err != nil { + return nil, err + } + + devices = append(devices, netdev) + return devices, nil +} + +func (cmd *create) recommendDatastore(ctx context.Context, spec *types.VirtualMachineConfigSpec) (*object.Datastore, error) { + sp := cmd.StoragePod.Reference() + + // Build pod selection spec from config spec + podSelectionSpec := types.StorageDrsPodSelectionSpec{ + StoragePod: &sp, + } + + // Keep list of disks that need to be placed + var disks []*types.VirtualDisk + + // Collect disks eligible for placement + for _, deviceConfigSpec := range spec.DeviceChange { + s := deviceConfigSpec.GetVirtualDeviceConfigSpec() + if s.Operation != types.VirtualDeviceConfigSpecOperationAdd { + continue + } + + if s.FileOperation != types.VirtualDeviceConfigSpecFileOperationCreate { + continue + } + + d, ok := s.Device.(*types.VirtualDisk) + if !ok { + continue + } + + podConfigForPlacement := types.VmPodConfigForPlacement{ + StoragePod: sp, + Disk: []types.PodDiskLocator{ + { + DiskId: d.Key, + DiskBackingInfo: d.Backing, + }, + }, + } + + podSelectionSpec.InitialVmConfig = append(podSelectionSpec.InitialVmConfig, podConfigForPlacement) + disks = append(disks, d) + } + + sps := types.StoragePlacementSpec{ + Type: string(types.StoragePlacementSpecPlacementTypeCreate), + ResourcePool: types.NewReference(cmd.ResourcePool.Reference()), + PodSelectionSpec: podSelectionSpec, + ConfigSpec: spec, + } + + srm := object.NewStorageResourceManager(cmd.Client) + result, err := srm.RecommendDatastores(ctx, sps) + if err != nil { + return nil, err + } + + // Use result to pin disks to recommended datastores + recs := result.Recommendations + if len(recs) == 0 { + return nil, fmt.Errorf("no datastore-cluster recommendations") + } + + ds := recs[0].Action[0].(*types.StoragePlacementAction).Destination + + var mds mo.Datastore + err = property.DefaultCollector(cmd.Client).RetrieveOne(ctx, ds, []string{"name"}, &mds) + if err != nil { + return nil, err + } + + datastore := object.NewDatastore(cmd.Client, ds) + datastore.InventoryPath = mds.Name + + // Apply recommendation to eligible disks + for _, disk := range disks { + backing := disk.Backing.(*types.VirtualDiskFlatVer2BackingInfo) + backing.Datastore = &ds + } + + return datastore, nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/customize.go b/vendor/github.com/vmware/govmomi/govc/vm/customize.go new file mode 100644 index 0000000..b6d918e --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/customize.go @@ -0,0 +1,243 @@ +/* +Copyright (c) 2019 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package vm + +import ( + "context" + "flag" + "fmt" + "strconv" + "strings" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/vim25/types" +) + +type customize struct { + *flags.VirtualMachineFlag + + alc int + prefix types.CustomizationPrefixName + tz string + domain string + host types.CustomizationFixedName + mac flags.StringList + ip flags.StringList + gateway flags.StringList + netmask flags.StringList + dnsserver flags.StringList + kind string +} + +func init() { + cli.Register("vm.customize", &customize{}) +} + +func (cmd *customize) Register(ctx context.Context, f *flag.FlagSet) { + cmd.VirtualMachineFlag, ctx = flags.NewVirtualMachineFlag(ctx) + cmd.VirtualMachineFlag.Register(ctx, f) + + f.IntVar(&cmd.alc, "auto-login", 0, "Number of times the VM should automatically login as an administrator") + f.StringVar(&cmd.prefix.Base, "prefix", "", "Host name generator prefix") + f.StringVar(&cmd.tz, "tz", "", "Time zone") + f.StringVar(&cmd.domain, "domain", "", "Domain name") + f.StringVar(&cmd.host.Name, "name", "", "Host name") + f.Var(&cmd.mac, "mac", "MAC address") + cmd.mac = nil + f.Var(&cmd.ip, "ip", "IP address") + cmd.ip = nil + f.Var(&cmd.gateway, "gateway", "Gateway") + cmd.gateway = nil + f.Var(&cmd.netmask, "netmask", "Netmask") + cmd.netmask = nil + f.Var(&cmd.dnsserver, "dns-server", "DNS server") + cmd.dnsserver = nil + f.StringVar(&cmd.kind, "type", "Linux", "Customization type if spec NAME is not specified (Linux|Windows)") +} + +func (cmd *customize) Usage() string { + return "[NAME]" +} + +func (cmd *customize) Description() string { + return `Customize VM. + +Optionally specify a customization spec NAME. + +The '-ip', '-netmask' and '-gateway' flags are for static IP configuration. +If the VM has multiple NICs, an '-ip' and '-netmask' must be specified for each. + +Windows -tz value requires the Index (hex): https://support.microsoft.com/en-us/help/973627/microsoft-time-zone-index-values + +Examples: + govc vm.customize -vm VM NAME + govc vm.customize -vm VM -name my-hostname -ip dhcp + govc vm.customize -vm VM -gateway GATEWAY -ip NEWIP -netmask NETMASK -dns-server DNS1,DNS2 NAME + # Multiple -ip without -mac are applied by vCenter in the order in which the NICs appear on the bus + govc vm.customize -vm VM -ip 10.0.0.178 -netmask 255.255.255.0 -ip 10.0.0.162 -netmask 255.255.255.0 + # Multiple -ip with -mac are applied by vCenter to the NIC with the given MAC address + govc vm.customize -vm VM -mac 00:50:56:be:dd:f8 -ip 10.0.0.178 -netmask 255.255.255.0 -mac 00:50:56:be:60:cf -ip 10.0.0.162 -netmask 255.255.255.0 + govc vm.customize -vm VM -auto-login 3 NAME + govc vm.customize -vm VM -prefix demo NAME + govc vm.customize -vm VM -tz America/New_York NAME` +} + +func (cmd *customize) Run(ctx context.Context, f *flag.FlagSet) error { + vm, err := cmd.VirtualMachineFlag.VirtualMachine() + if err != nil { + return err + } + + if vm == nil { + return flag.ErrHelp + } + + var spec *types.CustomizationSpec + + name := f.Arg(0) + if name == "" { + spec = &types.CustomizationSpec{ + NicSettingMap: make([]types.CustomizationAdapterMapping, len(cmd.ip)), + } + + switch cmd.kind { + case "Linux": + spec.Identity = &types.CustomizationLinuxPrep{ + HostName: new(types.CustomizationVirtualMachineName), + } + case "Windows": + spec.Identity = &types.CustomizationSysprep{ + UserData: types.CustomizationUserData{ + ComputerName: new(types.CustomizationVirtualMachineName), + }, + } + default: + return flag.ErrHelp + } + } else { + m := object.NewCustomizationSpecManager(vm.Client()) + + exists, err := m.DoesCustomizationSpecExist(ctx, name) + if err != nil { + return err + } + if !exists { + return fmt.Errorf("specification %q does not exist", name) + } + + item, err := m.GetCustomizationSpec(ctx, name) + if err != nil { + return err + } + + spec = &item.Spec + } + + if len(cmd.ip) > len(spec.NicSettingMap) { + return fmt.Errorf("%d -ip specified, spec %q has %d", len(cmd.ip), name, len(spec.NicSettingMap)) + } + + sysprep, isWindows := spec.Identity.(*types.CustomizationSysprep) + linprep, _ := spec.Identity.(*types.CustomizationLinuxPrep) + + if cmd.domain != "" { + if isWindows { + sysprep.Identification.JoinDomain = cmd.domain + } else { + linprep.Domain = cmd.domain + } + } + + if len(cmd.dnsserver) != 0 { + if !isWindows { + for _, s := range cmd.dnsserver { + spec.GlobalIPSettings.DnsServerList = + append(spec.GlobalIPSettings.DnsServerList, strings.Split(s, ",")...) + } + } + } + + if cmd.prefix.Base != "" { + if isWindows { + sysprep.UserData.ComputerName = &cmd.prefix + } else { + linprep.HostName = &cmd.prefix + } + } + + if cmd.host.Name != "" { + if isWindows { + sysprep.UserData.ComputerName = &cmd.host + } else { + linprep.HostName = &cmd.host + } + } + + if cmd.alc != 0 { + if !isWindows { + return fmt.Errorf("option '-auto-login' is Windows only") + } + sysprep.GuiUnattended.AutoLogon = true + sysprep.GuiUnattended.AutoLogonCount = int32(cmd.alc) + } + + if cmd.tz != "" { + if isWindows { + tz, err := strconv.ParseInt(cmd.tz, 16, 32) + if err != nil { + return fmt.Errorf("converting -tz=%q: %s", cmd.tz, err) + } + sysprep.GuiUnattended.TimeZone = int32(tz) + } else { + linprep.TimeZone = cmd.tz + } + } + + for i, ip := range cmd.ip { + nic := &spec.NicSettingMap[i] + switch ip { + case "dhcp": + nic.Adapter.Ip = new(types.CustomizationDhcpIpGenerator) + default: + nic.Adapter.Ip = &types.CustomizationFixedIp{IpAddress: ip} + } + + if i < len(cmd.netmask) { + nic.Adapter.SubnetMask = cmd.netmask[i] + } + if i < len(cmd.mac) { + nic.MacAddress = cmd.mac[i] + } + if i < len(cmd.gateway) { + nic.Adapter.Gateway = strings.Split(cmd.gateway[i], ",") + } + if isWindows { + if i < len(cmd.dnsserver) { + nic.Adapter.DnsServerList = strings.Split(cmd.dnsserver[i], ",") + } + } + } + + task, err := vm.Customize(ctx, *spec) + if err != nil { + return err + } + + return task.Wait(ctx) +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/destroy.go b/vendor/github.com/vmware/govmomi/govc/vm/destroy.go new file mode 100644 index 0000000..e7b2e5b --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/destroy.go @@ -0,0 +1,97 @@ +/* +Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package vm + +import ( + "context" + "flag" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" +) + +type destroy struct { + *flags.ClientFlag + *flags.SearchFlag +} + +func init() { + cli.Register("vm.destroy", &destroy{}) +} + +func (cmd *destroy) Register(ctx context.Context, f *flag.FlagSet) { + cmd.ClientFlag, ctx = flags.NewClientFlag(ctx) + cmd.ClientFlag.Register(ctx, f) + + cmd.SearchFlag, ctx = flags.NewSearchFlag(ctx, flags.SearchVirtualMachines) + cmd.SearchFlag.Register(ctx, f) +} + +func (cmd *destroy) Process(ctx context.Context) error { + if err := cmd.ClientFlag.Process(ctx); err != nil { + return err + } + if err := cmd.SearchFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *destroy) Usage() string { + return "VM..." +} + +func (cmd *destroy) Description() string { + return `Power off and delete VM. + +When a VM is destroyed, any attached virtual disks are also deleted. +Use the 'device.remove -vm VM -keep disk-*' command to detach and +keep disks if needed, prior to calling vm.destroy. + +Examples: + govc vm.destroy my-vm` +} + +func (cmd *destroy) Run(ctx context.Context, f *flag.FlagSet) error { + vms, err := cmd.VirtualMachines(f.Args()) + if err != nil { + return err + } + + for _, vm := range vms { + task, err := vm.PowerOff(ctx) + if err != nil { + return err + } + + // Ignore error since the VM may already been in powered off state. + // vm.Destroy will fail if the VM is still powered on. + _ = task.Wait(ctx) + + task, err = vm.Destroy(ctx) + if err != nil { + return err + } + + err = task.Wait(ctx) + if err != nil { + return err + } + } + + return nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/guest/auth.go b/vendor/github.com/vmware/govmomi/govc/vm/guest/auth.go new file mode 100644 index 0000000..b0c344a --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/guest/auth.go @@ -0,0 +1,74 @@ +/* +Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package guest + +import ( + "context" + "flag" + "fmt" + "os" + "strings" + + "github.com/vmware/govmomi/vim25/types" +) + +type AuthFlag struct { + auth types.NamePasswordAuthentication + proc bool +} + +func newAuthFlag(ctx context.Context) (*AuthFlag, context.Context) { + return &AuthFlag{}, ctx +} + +func (flag *AuthFlag) String() string { + return fmt.Sprintf("%s:%s", flag.auth.Username, strings.Repeat("x", len(flag.auth.Password))) +} + +func (flag *AuthFlag) Set(s string) error { + c := strings.SplitN(s, ":", 2) + if len(c) > 0 { + flag.auth.Username = c[0] + if len(c) > 1 { + flag.auth.Password = c[1] + } + } + + return nil +} + +func (flag *AuthFlag) Register(ctx context.Context, f *flag.FlagSet) { + env := "GOVC_GUEST_LOGIN" + value := os.Getenv(env) + err := flag.Set(value) + if err != nil { + fmt.Printf("couldn't set guest login values: %v", err) + } + usage := fmt.Sprintf("Guest VM credentials [%s]", env) + f.Var(flag, "l", usage) + if flag.proc { + f.BoolVar(&flag.auth.GuestAuthentication.InteractiveSession, "i", false, "Interactive session") + } +} + +func (flag *AuthFlag) Process(ctx context.Context) error { + return nil +} + +func (flag *AuthFlag) Auth() types.BaseGuestAuthentication { + return &flag.auth +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/guest/chmod.go b/vendor/github.com/vmware/govmomi/govc/vm/guest/chmod.go new file mode 100644 index 0000000..29f0745 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/guest/chmod.go @@ -0,0 +1,77 @@ +/* +Copyright (c) 2014-2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package guest + +import ( + "context" + "flag" + "strconv" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/vim25/types" +) + +type chmod struct { + *GuestFlag +} + +func init() { + cli.Register("guest.chmod", &chmod{}) +} + +func (cmd *chmod) Register(ctx context.Context, f *flag.FlagSet) { + cmd.GuestFlag, ctx = newGuestFlag(ctx) + cmd.GuestFlag.Register(ctx, f) +} + +func (cmd *chmod) Process(ctx context.Context) error { + if err := cmd.GuestFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *chmod) Usage() string { + return "MODE FILE" +} + +func (cmd *chmod) Description() string { + return `Change FILE MODE on VM. + +Examples: + govc guest.chmod -vm $name 0644 /var/log/foo.log` +} + +func (cmd *chmod) Run(ctx context.Context, f *flag.FlagSet) error { + if f.NArg() != 2 { + return flag.ErrHelp + } + + m, err := cmd.FileManager() + if err != nil { + return err + } + + var attr types.GuestPosixFileAttributes + + attr.Permissions, err = strconv.ParseInt(f.Arg(0), 0, 64) + if err != nil { + return err + } + + return m.ChangeFileAttributes(ctx, cmd.Auth(), f.Arg(1), &attr) +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/guest/chown.go b/vendor/github.com/vmware/govmomi/govc/vm/guest/chown.go new file mode 100644 index 0000000..0b6a455 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/guest/chown.go @@ -0,0 +1,96 @@ +/* +Copyright (c) 2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package guest + +import ( + "context" + "flag" + "strconv" + "strings" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/vim25/types" +) + +type chown struct { + *GuestFlag +} + +func init() { + cli.Register("guest.chown", &chown{}) +} + +func (cmd *chown) Register(ctx context.Context, f *flag.FlagSet) { + cmd.GuestFlag, ctx = newGuestFlag(ctx) + cmd.GuestFlag.Register(ctx, f) +} + +func (cmd *chown) Process(ctx context.Context) error { + if err := cmd.GuestFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *chown) Usage() string { + return "UID[:GID] FILE" +} + +func (cmd *chown) Description() string { + return `Change FILE UID and GID on VM. + +Examples: + govc guest.chown -vm $name UID[:GID] /var/log/foo.log` +} + +func (cmd *chown) Run(ctx context.Context, f *flag.FlagSet) error { + if f.NArg() != 2 { + return flag.ErrHelp + } + + m, err := cmd.FileManager() + if err != nil { + return err + } + + var attr types.GuestPosixFileAttributes + + ids := strings.SplitN(f.Arg(0), ":", 2) + if len(ids) == 0 { + return flag.ErrHelp + } + + id, err := strconv.Atoi(ids[0]) + if err != nil { + return err + } + + attr.OwnerId = new(int32) + *attr.OwnerId = int32(id) + + if len(ids) == 2 { + id, err = strconv.Atoi(ids[1]) + if err != nil { + return err + } + + attr.GroupId = new(int32) + *attr.GroupId = int32(id) + } + + return m.ChangeFileAttributes(ctx, cmd.Auth(), f.Arg(1), &attr) +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/guest/df.go b/vendor/github.com/vmware/govmomi/govc/vm/guest/df.go new file mode 100644 index 0000000..466ccaa --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/guest/df.go @@ -0,0 +1,80 @@ +/* +Copyright (c) 2019 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package guest + +import ( + "context" + "flag" + "fmt" + "io" + "text/tabwriter" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/units" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type df struct { + *flags.VirtualMachineFlag +} + +func init() { + cli.Register("guest.df", &df{}) +} + +func (cmd *df) Register(ctx context.Context, f *flag.FlagSet) { + cmd.VirtualMachineFlag, ctx = flags.NewVirtualMachineFlag(ctx) + cmd.VirtualMachineFlag.Register(ctx, f) +} + +func (cmd *df) Description() string { + return `Report file system disk space usage. + +Examples: + govc guest.df -vm $name` +} + +type dfResult []types.GuestDiskInfo + +func (r dfResult) Write(w io.Writer) error { + tw := tabwriter.NewWriter(w, 2, 0, 2, ' ', 0) + _, _ = fmt.Fprintf(tw, "%s\t%s\t%s\t%s\t%s\n", "Filesystem", "Size", "Used", "Avail", "Use%") + for _, disk := range r { + used := disk.Capacity - disk.FreeSpace + use := 100.0 * float32(used) / float32(disk.Capacity) + _, _ = fmt.Fprintf(tw, "%s\t%s\t%s\t%s\t%.0f%%\n", disk.DiskPath, + units.ByteSize(disk.Capacity), units.ByteSize(used), units.ByteSize(disk.FreeSpace), use) + } + return tw.Flush() +} + +func (cmd *df) Run(ctx context.Context, f *flag.FlagSet) error { + obj, err := cmd.VirtualMachine() + if err != nil { + return err + } + + var vm mo.VirtualMachine + err = obj.Properties(ctx, obj.Reference(), []string{"guest.disk"}, &vm) + if err != nil { + return err + } + + return cmd.WriteResult(dfResult(vm.Guest.Disk)) +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/guest/download.go b/vendor/github.com/vmware/govmomi/govc/vm/guest/download.go new file mode 100644 index 0000000..5aa031a --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/guest/download.go @@ -0,0 +1,106 @@ +/* +Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package guest + +import ( + "context" + "flag" + "io" + "os" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/vim25/progress" +) + +type download struct { + *GuestFlag + + overwrite bool +} + +func init() { + cli.Register("guest.download", &download{}) +} + +func (cmd *download) Register(ctx context.Context, f *flag.FlagSet) { + cmd.GuestFlag, ctx = newGuestFlag(ctx) + cmd.GuestFlag.Register(ctx, f) + + f.BoolVar(&cmd.overwrite, "f", false, "If set, the local destination file is clobbered") +} + +func (cmd *download) Usage() string { + return "SOURCE DEST" +} + +func (cmd *download) Description() string { + return `Copy SOURCE from the guest VM to DEST on the local system. + +If DEST name is "-", source is written to stdout. + +Examples: + govc guest.download -l user:pass -vm=my-vm /var/log/my.log ./local.log + govc guest.download -l user:pass -vm=my-vm /etc/motd - + tar -cf- foo/ | govc guest.run -d - tar -C /tmp -xf- + govc guest.run tar -C /tmp -cf- foo/ | tar -C /tmp -xf- # download directory` +} + +func (cmd *download) Process(ctx context.Context) error { + if err := cmd.GuestFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *download) Run(ctx context.Context, f *flag.FlagSet) error { + if f.NArg() != 2 { + return flag.ErrHelp + } + + src := f.Arg(0) + dst := f.Arg(1) + + _, err := os.Stat(dst) + if err == nil && !cmd.overwrite { + return os.ErrExist + } + + c, err := cmd.Toolbox() + if err != nil { + return err + } + + s, n, err := c.Download(ctx, src) + if err != nil { + return err + } + + if dst == "-" { + _, err = io.Copy(os.Stdout, s) + return err + } + + var p progress.Sinker + + if cmd.OutputFlag.TTY { + logger := cmd.ProgressLogger("Downloading... ") + p = logger + defer logger.Wait() + } + + return c.ProcessManager.Client().WriteFile(ctx, dst, s, n, p, nil) +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/guest/file_attr.go b/vendor/github.com/vmware/govmomi/govc/vm/guest/file_attr.go new file mode 100644 index 0000000..3e18602 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/guest/file_attr.go @@ -0,0 +1,47 @@ +/* +Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package guest + +import ( + "context" + "flag" + + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/vim25/types" +) + +type FileAttrFlag struct { + types.GuestPosixFileAttributes +} + +func newFileAttrFlag(ctx context.Context) (*FileAttrFlag, context.Context) { + return &FileAttrFlag{}, ctx +} + +func (flag *FileAttrFlag) Register(ctx context.Context, f *flag.FlagSet) { + f.Var(flags.NewOptionalInt32(&flag.OwnerId), "uid", "User ID") + f.Var(flags.NewOptionalInt32(&flag.GroupId), "gid", "Group ID") + f.Int64Var(&flag.Permissions, "perm", 0, "File permissions") +} + +func (flag *FileAttrFlag) Process(ctx context.Context) error { + return nil +} + +func (flag *FileAttrFlag) Attr() types.BaseGuestFileAttributes { + return &flag.GuestPosixFileAttributes +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/guest/getenv.go b/vendor/github.com/vmware/govmomi/govc/vm/guest/getenv.go new file mode 100644 index 0000000..a7b43d6 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/guest/getenv.go @@ -0,0 +1,75 @@ +/* +Copyright (c) 2014-2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package guest + +import ( + "context" + "flag" + "fmt" + + "github.com/vmware/govmomi/govc/cli" +) + +type getenv struct { + *GuestFlag +} + +func init() { + cli.Register("guest.getenv", &getenv{}) +} + +func (cmd *getenv) Register(ctx context.Context, f *flag.FlagSet) { + cmd.GuestFlag, ctx = newGuestProcessFlag(ctx) + cmd.GuestFlag.Register(ctx, f) +} + +func (cmd *getenv) Process(ctx context.Context) error { + if err := cmd.GuestFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *getenv) Usage() string { + return "[NAME]..." +} + +func (cmd *getenv) Description() string { + return `Read NAME environment variables from VM. + +Examples: + govc guest.getenv -vm $name + govc guest.getenv -vm $name HOME` +} + +func (cmd *getenv) Run(ctx context.Context, f *flag.FlagSet) error { + m, err := cmd.ProcessManager() + if err != nil { + return err + } + + vars, err := m.ReadEnvironmentVariable(ctx, cmd.Auth(), f.Args()) + if err != nil { + return err + } + + for _, v := range vars { + fmt.Printf("%s\n", v) + } + + return nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/guest/guest.go b/vendor/github.com/vmware/govmomi/govc/vm/guest/guest.go new file mode 100644 index 0000000..3ad1e8a --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/guest/guest.go @@ -0,0 +1,157 @@ +/* +Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package guest + +import ( + "context" + "errors" + "flag" + "net/url" + + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/guest" + "github.com/vmware/govmomi/guest/toolbox" + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type GuestFlag struct { + *flags.ClientFlag + *flags.VirtualMachineFlag + + *AuthFlag +} + +func newGuestFlag(ctx context.Context) (*GuestFlag, context.Context) { + f := &GuestFlag{} + f.ClientFlag, ctx = flags.NewClientFlag(ctx) + f.VirtualMachineFlag, ctx = flags.NewVirtualMachineFlag(ctx) + f.AuthFlag, ctx = newAuthFlag(ctx) + return f, ctx +} + +func newGuestProcessFlag(ctx context.Context) (*GuestFlag, context.Context) { + f, gctx := newGuestFlag(ctx) + f.proc = true + return f, gctx +} + +func (flag *GuestFlag) Register(ctx context.Context, f *flag.FlagSet) { + flag.ClientFlag.Register(ctx, f) + flag.VirtualMachineFlag.Register(ctx, f) + flag.AuthFlag.Register(ctx, f) +} + +func (flag *GuestFlag) Process(ctx context.Context) error { + if err := flag.ClientFlag.Process(ctx); err != nil { + return err + } + if err := flag.VirtualMachineFlag.Process(ctx); err != nil { + return err + } + if err := flag.AuthFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (flag *GuestFlag) Toolbox() (*toolbox.Client, error) { + pm, err := flag.ProcessManager() + if err != nil { + return nil, err + } + + fm, err := flag.FileManager() + if err != nil { + return nil, err + } + + vm, err := flag.VirtualMachine() + if err != nil { + return nil, err + } + + family := "" + var props mo.VirtualMachine + err = vm.Properties(context.Background(), vm.Reference(), []string{"guest.guestFamily"}, &props) + if err != nil { + return nil, err + } + if props.Guest != nil { + family = props.Guest.GuestFamily + } + + return &toolbox.Client{ + ProcessManager: pm, + FileManager: fm, + Authentication: flag.Auth(), + GuestFamily: types.VirtualMachineGuestOsFamily(family), + }, nil +} + +func (flag *GuestFlag) FileManager() (*guest.FileManager, error) { + ctx := context.TODO() + c, err := flag.Client() + if err != nil { + return nil, err + } + + vm, err := flag.VirtualMachine() + if err != nil { + return nil, err + } + + o := guest.NewOperationsManager(c, vm.Reference()) + return o.FileManager(ctx) +} + +func (flag *GuestFlag) ProcessManager() (*guest.ProcessManager, error) { + ctx := context.TODO() + c, err := flag.Client() + if err != nil { + return nil, err + } + + vm, err := flag.VirtualMachine() + if err != nil { + return nil, err + } + + o := guest.NewOperationsManager(c, vm.Reference()) + return o.ProcessManager(ctx) +} + +func (flag *GuestFlag) ParseURL(urlStr string) (*url.URL, error) { + c, err := flag.Client() + if err != nil { + return nil, err + } + + return c.Client.ParseURL(urlStr) +} + +func (flag *GuestFlag) VirtualMachine() (*object.VirtualMachine, error) { + vm, err := flag.VirtualMachineFlag.VirtualMachine() + if err != nil { + return nil, err + } + if vm == nil { + return nil, errors.New("no vm specified") + } + return vm, nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/guest/kill.go b/vendor/github.com/vmware/govmomi/govc/vm/guest/kill.go new file mode 100644 index 0000000..53bee80 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/guest/kill.go @@ -0,0 +1,70 @@ +/* +Copyright (c) 2014-2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package guest + +import ( + "context" + "flag" + + "github.com/vmware/govmomi/govc/cli" +) + +type kill struct { + *GuestFlag + + pids pidSelector +} + +func init() { + cli.Register("guest.kill", &kill{}) +} + +func (cmd *kill) Register(ctx context.Context, f *flag.FlagSet) { + cmd.GuestFlag, ctx = newGuestProcessFlag(ctx) + cmd.GuestFlag.Register(ctx, f) + + f.Var(&cmd.pids, "p", "Process ID") +} + +func (cmd *kill) Process(ctx context.Context) error { + if err := cmd.GuestFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *kill) Description() string { + return `Kill process ID on VM. + +Examples: + govc guest.kill -vm $name -p 12345` +} + +func (cmd *kill) Run(ctx context.Context, f *flag.FlagSet) error { + m, err := cmd.ProcessManager() + if err != nil { + return err + } + + for _, pid := range cmd.pids { + if err := m.TerminateProcess(ctx, cmd.Auth(), pid); err != nil { + return err + } + } + + return nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/guest/ls.go b/vendor/github.com/vmware/govmomi/govc/vm/guest/ls.go new file mode 100644 index 0000000..b53c368 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/guest/ls.go @@ -0,0 +1,128 @@ +/* +Copyright (c) 2014-2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package guest + +import ( + "context" + "flag" + "fmt" + "os" + "text/tabwriter" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/units" + "github.com/vmware/govmomi/vim25/types" +) + +type ls struct { + *GuestFlag + + simple bool +} + +func init() { + cli.Register("guest.ls", &ls{}) +} + +func (cmd *ls) Register(ctx context.Context, f *flag.FlagSet) { + cmd.GuestFlag, ctx = newGuestFlag(ctx) + cmd.GuestFlag.Register(ctx, f) + + f.BoolVar(&cmd.simple, "s", false, "Simple path only listing") // sadly we used '-l' for guest login +} + +func (cmd *ls) Process(ctx context.Context) error { + if err := cmd.GuestFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *ls) Usage() string { + return "PATH" +} + +func (cmd *ls) Description() string { + return `List PATH files in VM. + +Examples: + govc guest.ls -vm $name /tmp` +} + +func (cmd *ls) Run(ctx context.Context, f *flag.FlagSet) error { + m, err := cmd.FileManager() + if err != nil { + return err + } + + var offset int32 + tw := tabwriter.NewWriter(os.Stdout, 2, 0, 2, ' ', 0) + + for { + info, err := m.ListFiles(ctx, cmd.Auth(), f.Arg(0), offset, 0, f.Arg(1)) + if err != nil { + return err + } + + for _, f := range info.Files { + if cmd.simple { + fmt.Fprintln(tw, f.Path) + continue + } + + var kind byte + + switch types.GuestFileType(f.Type) { + case types.GuestFileTypeDirectory: + kind = 'd' + if f.Size == 0 { + f.Size = 4092 + } + case types.GuestFileTypeSymlink: + kind = 'l' + case types.GuestFileTypeFile: + kind = '-' + } + + switch x := f.Attributes.(type) { + case *types.GuestPosixFileAttributes: + perm := os.FileMode(x.Permissions).Perm().String()[1:] + fmt.Fprintf(tw, "%c%s\t%d\t%d\t", kind, perm, *x.OwnerId, *x.GroupId) + } + + attr := f.Attributes.GetGuestFileAttributes() + + fmt.Fprintf(tw, "%s\t%s\t%s", units.FileSize(f.Size), attr.ModificationTime.Format("Jan 2 15:04 2006"), f.Path) + if attr.SymlinkTarget != "" { + fmt.Fprintf(tw, " -> %s", attr.SymlinkTarget) + } + fmt.Fprintln(tw) + } + + err = tw.Flush() + if err != nil { + return err + } + + if info.Remaining == 0 { + break + } + offset += int32(len(info.Files)) + } + + return nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/guest/mkdir.go b/vendor/github.com/vmware/govmomi/govc/vm/guest/mkdir.go new file mode 100644 index 0000000..541f6d7 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/guest/mkdir.go @@ -0,0 +1,83 @@ +/* +Copyright (c) 2014-2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package guest + +import ( + "context" + "flag" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/vim25/soap" + "github.com/vmware/govmomi/vim25/types" +) + +type mkdir struct { + *GuestFlag + + createParents bool +} + +func init() { + cli.Register("guest.mkdir", &mkdir{}) +} + +func (cmd *mkdir) Register(ctx context.Context, f *flag.FlagSet) { + cmd.GuestFlag, ctx = newGuestFlag(ctx) + cmd.GuestFlag.Register(ctx, f) + + f.BoolVar(&cmd.createParents, "p", false, "Create intermediate directories as needed") +} + +func (cmd *mkdir) Process(ctx context.Context) error { + if err := cmd.GuestFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *mkdir) Usage() string { + return "PATH" +} + +func (cmd *mkdir) Description() string { + return `Create directory PATH in VM. + +Examples: + govc guest.mkdir -vm $name /tmp/logs + govc guest.mkdir -vm $name -p /tmp/logs/foo/bar` +} + +func (cmd *mkdir) Run(ctx context.Context, f *flag.FlagSet) error { + m, err := cmd.FileManager() + if err != nil { + return err + } + + err = m.MakeDirectory(ctx, cmd.Auth(), f.Arg(0), cmd.createParents) + + // ignore EEXIST if -p flag is given + if err != nil && cmd.createParents { + if soap.IsSoapFault(err) { + soapFault := soap.ToSoapFault(err) + if _, ok := soapFault.VimFault().(types.FileAlreadyExists); ok { + return nil + } + } + } + + return err +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/guest/mktemp.go b/vendor/github.com/vmware/govmomi/govc/vm/guest/mktemp.go new file mode 100644 index 0000000..3637bce --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/guest/mktemp.go @@ -0,0 +1,86 @@ +/* +Copyright (c) 2014-2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package guest + +import ( + "context" + "flag" + "fmt" + + "github.com/vmware/govmomi/govc/cli" +) + +type mktemp struct { + *GuestFlag + + dir bool + path string + prefix string + suffix string +} + +func init() { + cli.Register("guest.mktemp", &mktemp{}) +} + +func (cmd *mktemp) Register(ctx context.Context, f *flag.FlagSet) { + cmd.GuestFlag, ctx = newGuestFlag(ctx) + cmd.GuestFlag.Register(ctx, f) + + f.BoolVar(&cmd.dir, "d", false, "Make a directory instead of a file") + f.StringVar(&cmd.path, "p", "", "If specified, create relative to this directory") + f.StringVar(&cmd.prefix, "t", "", "Prefix") + f.StringVar(&cmd.suffix, "s", "", "Suffix") +} + +func (cmd *mktemp) Process(ctx context.Context) error { + if err := cmd.GuestFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *mktemp) Description() string { + return `Create a temporary file or directory in VM. + +Examples: + govc guest.mktemp -vm $name + govc guest.mktemp -vm $name -d + govc guest.mktemp -vm $name -t myprefix + govc guest.mktemp -vm $name -p /var/tmp/$USER` +} + +func (cmd *mktemp) Run(ctx context.Context, f *flag.FlagSet) error { + m, err := cmd.FileManager() + if err != nil { + return err + } + + mk := m.CreateTemporaryFile + if cmd.dir { + mk = m.CreateTemporaryDirectory + } + + name, err := mk(ctx, cmd.Auth(), cmd.prefix, cmd.suffix, cmd.path) + if err != nil { + return err + } + + fmt.Println(name) + + return nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/guest/mv.go b/vendor/github.com/vmware/govmomi/govc/vm/guest/mv.go new file mode 100644 index 0000000..4890a6f --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/guest/mv.go @@ -0,0 +1,85 @@ +/* +Copyright (c) 2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package guest + +import ( + "context" + "flag" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/vim25/soap" + "github.com/vmware/govmomi/vim25/types" +) + +type mv struct { + *GuestFlag + + noclobber bool +} + +func init() { + cli.Register("guest.mv", &mv{}) +} + +func (cmd *mv) Register(ctx context.Context, f *flag.FlagSet) { + cmd.GuestFlag, ctx = newGuestFlag(ctx) + cmd.GuestFlag.Register(ctx, f) + + f.BoolVar(&cmd.noclobber, "n", false, "Do not overwrite an existing file") +} + +func (cmd *mv) Process(ctx context.Context) error { + if err := cmd.GuestFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *mv) Usage() string { + return "SOURCE DEST" +} + +func (cmd *mv) Description() string { + return `Move (rename) files in VM. + +Examples: + govc guest.mv -vm $name /tmp/foo.sh /tmp/bar.sh + govc guest.mv -vm $name -n /tmp/baz.sh /tmp/bar.sh` +} + +func (cmd *mv) Run(ctx context.Context, f *flag.FlagSet) error { + m, err := cmd.FileManager() + if err != nil { + return err + } + + src := f.Arg(0) + dst := f.Arg(1) + + err = m.MoveFile(ctx, cmd.Auth(), src, dst, !cmd.noclobber) + + if err != nil { + if soap.IsSoapFault(err) { + soapFault := soap.ToSoapFault(err) + if _, ok := soapFault.VimFault().(types.NotAFile); ok { + err = m.MoveDirectory(ctx, cmd.Auth(), src, dst) + } + } + } + + return err +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/guest/ps.go b/vendor/github.com/vmware/govmomi/govc/vm/guest/ps.go new file mode 100644 index 0000000..bf30b78 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/guest/ps.go @@ -0,0 +1,199 @@ +/* +Copyright (c) 2014-2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package guest + +import ( + "context" + "flag" + "fmt" + "io" + "strconv" + "strings" + "text/tabwriter" + "time" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/vim25/types" +) + +type ps struct { + *flags.OutputFlag + *GuestFlag + + every bool + exit bool + wait bool + + pids pidSelector + uids uidSelector +} + +type pidSelector []int64 + +func (s *pidSelector) String() string { + return fmt.Sprint(*s) +} + +func (s *pidSelector) Set(value string) error { + v, err := strconv.ParseInt(value, 0, 64) + if err != nil { + return err + } + *s = append(*s, v) + return nil +} + +type uidSelector map[string]bool + +func (s uidSelector) String() string { + return "" +} + +func (s uidSelector) Set(value string) error { + s[value] = true + return nil +} + +func init() { + cli.Register("guest.ps", &ps{}) +} + +func (cmd *ps) Register(ctx context.Context, f *flag.FlagSet) { + cmd.OutputFlag, ctx = flags.NewOutputFlag(ctx) + cmd.OutputFlag.Register(ctx, f) + + cmd.GuestFlag, ctx = newGuestProcessFlag(ctx) + cmd.GuestFlag.Register(ctx, f) + + cmd.uids = make(map[string]bool) + f.BoolVar(&cmd.every, "e", false, "Select all processes") + f.BoolVar(&cmd.exit, "x", false, "Output exit time and code") + f.BoolVar(&cmd.wait, "X", false, "Wait for process to exit") + f.Var(&cmd.pids, "p", "Select by process ID") + f.Var(&cmd.uids, "U", "Select by process UID") +} + +func (cmd *ps) Process(ctx context.Context) error { + if err := cmd.OutputFlag.Process(ctx); err != nil { + return err + } + if err := cmd.GuestFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *ps) Description() string { + return `List processes in VM. + +By default, unless the '-e', '-p' or '-U' flag is specified, only processes owned +by the '-l' flag user are displayed. + +The '-x' and '-X' flags only apply to processes started by vmware-tools, +such as those started with the govc guest.start command. + +Examples: + govc guest.ps -vm $name + govc guest.ps -vm $name -e + govc guest.ps -vm $name -p 12345 + govc guest.ps -vm $name -U root` +} + +func running(procs []types.GuestProcessInfo) bool { + for _, p := range procs { + if p.EndTime == nil { + return true + } + } + return false +} + +func (cmd *ps) list(ctx context.Context) ([]types.GuestProcessInfo, error) { + m, err := cmd.ProcessManager() + if err != nil { + return nil, err + } + + auth := cmd.Auth() + + for { + procs, err := m.ListProcesses(ctx, auth, cmd.pids) + if err != nil { + return nil, err + } + + if cmd.wait && running(procs) { + <-time.After(time.Second) + continue + } + + return procs, nil + } +} + +func (cmd *ps) Run(ctx context.Context, f *flag.FlagSet) error { + procs, err := cmd.list(ctx) + if err != nil { + return err + } + + r := &psResult{cmd, procs} + + return cmd.WriteResult(r) +} + +type psResult struct { + cmd *ps + ProcessInfo []types.GuestProcessInfo +} + +func (r *psResult) Write(w io.Writer) error { + tw := tabwriter.NewWriter(w, 2, 0, 2, ' ', 0) + + fmt.Fprintf(tw, "%s\t%s\t%s", "UID", "PID", "STIME") + if r.cmd.exit { + fmt.Fprintf(tw, "\t%s\t%s", "XTIME", "XCODE") + } + fmt.Fprint(tw, "\tCMD\n") + + if len(r.cmd.pids) != 0 { + r.cmd.every = true + } + + if !r.cmd.every && len(r.cmd.uids) == 0 { + r.cmd.uids[r.cmd.auth.Username] = true + } + + for _, p := range r.ProcessInfo { + if r.cmd.every || r.cmd.uids[p.Owner] { + fmt.Fprintf(tw, "%s\t%d\t%s", p.Owner, p.Pid, p.StartTime.Format("15:04")) + if r.cmd.exit { + etime := "-" + ecode := "-" + if p.EndTime != nil { + etime = p.EndTime.Format("15:04") + ecode = strconv.Itoa(int(p.ExitCode)) + } + fmt.Fprintf(tw, "\t%s\t%s", etime, ecode) + } + fmt.Fprintf(tw, "\t%s\n", strings.TrimSpace(p.CmdLine)) + } + } + + return tw.Flush() +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/guest/rm.go b/vendor/github.com/vmware/govmomi/govc/vm/guest/rm.go new file mode 100644 index 0000000..bd21a55 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/guest/rm.go @@ -0,0 +1,64 @@ +/* +Copyright (c) 2014-2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package guest + +import ( + "context" + "flag" + + "github.com/vmware/govmomi/govc/cli" +) + +type rm struct { + *GuestFlag +} + +func init() { + cli.Register("guest.rm", &rm{}) +} + +func (cmd *rm) Register(ctx context.Context, f *flag.FlagSet) { + cmd.GuestFlag, ctx = newGuestFlag(ctx) + cmd.GuestFlag.Register(ctx, f) +} + +func (cmd *rm) Process(ctx context.Context) error { + if err := cmd.GuestFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *rm) Usage() string { + return "PATH" +} + +func (cmd *rm) Description() string { + return `Remove file PATH in VM. + +Examples: + govc guest.rm -vm $name /tmp/foo.log` +} + +func (cmd *rm) Run(ctx context.Context, f *flag.FlagSet) error { + m, err := cmd.FileManager() + if err != nil { + return err + } + + return m.DeleteFile(ctx, cmd.Auth(), f.Arg(0)) +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/guest/rmdir.go b/vendor/github.com/vmware/govmomi/govc/vm/guest/rmdir.go new file mode 100644 index 0000000..7b69a87 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/guest/rmdir.go @@ -0,0 +1,69 @@ +/* +Copyright (c) 2014-2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package guest + +import ( + "context" + "flag" + + "github.com/vmware/govmomi/govc/cli" +) + +type rmdir struct { + *GuestFlag + + recursive bool +} + +func init() { + cli.Register("guest.rmdir", &rmdir{}) +} + +func (cmd *rmdir) Register(ctx context.Context, f *flag.FlagSet) { + cmd.GuestFlag, ctx = newGuestFlag(ctx) + cmd.GuestFlag.Register(ctx, f) + + f.BoolVar(&cmd.recursive, "r", false, "Recursive removal") +} + +func (cmd *rmdir) Process(ctx context.Context) error { + if err := cmd.GuestFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *rmdir) Usage() string { + return "PATH" +} + +func (cmd *rmdir) Description() string { + return `Remove directory PATH in VM. + +Examples: + govc guest.rmdir -vm $name /tmp/empty-dir + govc guest.rmdir -vm $name -r /tmp/non-empty-dir` +} + +func (cmd *rmdir) Run(ctx context.Context, f *flag.FlagSet) error { + m, err := cmd.FileManager() + if err != nil { + return err + } + + return m.DeleteDirectory(ctx, cmd.Auth(), f.Arg(0), cmd.recursive) +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/guest/run.go b/vendor/github.com/vmware/govmomi/govc/vm/guest/run.go new file mode 100644 index 0000000..1b56401 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/guest/run.go @@ -0,0 +1,100 @@ +/* +Copyright (c) 2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package guest + +import ( + "bytes" + "context" + "flag" + "os" + "os/exec" + + "github.com/vmware/govmomi/govc/cli" +) + +type run struct { + *GuestFlag + + data string + dir string + vars env +} + +func init() { + cli.Register("guest.run", &run{}) +} + +func (cmd *run) Register(ctx context.Context, f *flag.FlagSet) { + cmd.GuestFlag, ctx = newGuestProcessFlag(ctx) + cmd.GuestFlag.Register(ctx, f) + + f.StringVar(&cmd.data, "d", "", "Input data string. A value of '-' reads from OS stdin") + f.StringVar(&cmd.dir, "C", "", "The absolute path of the working directory for the program to start") + f.Var(&cmd.vars, "e", "Set environment variables") +} + +func (cmd *run) Usage() string { + return "PATH [ARG]..." +} + +func (cmd *run) Description() string { + return `Run program PATH in VM and display output. + +The guest.run command starts a program in the VM with i/o redirected, waits for the process to exit and +propagates the exit code to the govc process exit code. Note that stdout and stderr are redirected by default, +stdin is only redirected when the '-d' flag is specified. + +Examples: + govc guest.run -vm $name ifconfig + govc guest.run -vm $name ifconfig eth0 + cal | govc guest.run -vm $name -d - cat + govc guest.run -vm $name -d "hello $USER" cat + govc guest.run -vm $name curl -s :invalid: || echo $? # exit code 6 + govc guest.run -vm $name -e FOO=bar -e BIZ=baz -C /tmp env + govc guest.run -l root:'mypassword' -vm my_vm_hostname "ntpdate -u pool.ntp.org"` +} + +func (cmd *run) Run(ctx context.Context, f *flag.FlagSet) error { + if f.NArg() == 0 { + return flag.ErrHelp + } + name := f.Arg(0) + + c, err := cmd.Toolbox() + if err != nil { + return err + } + + ecmd := &exec.Cmd{ + Path: name, + Args: f.Args()[1:], + Env: cmd.vars, + Dir: cmd.dir, + Stdout: os.Stdout, + Stderr: os.Stderr, + } + + switch cmd.data { + case "": + case "-": + ecmd.Stdin = os.Stdin + default: + ecmd.Stdin = bytes.NewBuffer([]byte(cmd.data)) + } + + return c.Run(ctx, ecmd) +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/guest/start.go b/vendor/github.com/vmware/govmomi/govc/vm/guest/start.go new file mode 100644 index 0000000..ba6a91d --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/guest/start.go @@ -0,0 +1,103 @@ +/* +Copyright (c) 2014-2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package guest + +import ( + "context" + "flag" + "fmt" + "strings" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/vim25/types" +) + +type start struct { + *GuestFlag + + dir string + vars env +} + +type env []string + +func (e *env) String() string { + return fmt.Sprint(*e) +} + +func (e *env) Set(value string) error { + *e = append(*e, value) + return nil +} + +func init() { + cli.Register("guest.start", &start{}) +} + +func (cmd *start) Register(ctx context.Context, f *flag.FlagSet) { + cmd.GuestFlag, ctx = newGuestProcessFlag(ctx) + cmd.GuestFlag.Register(ctx, f) + + f.StringVar(&cmd.dir, "C", "", "The absolute path of the working directory for the program to start") + f.Var(&cmd.vars, "e", "Set environment variable (key=val)") +} + +func (cmd *start) Process(ctx context.Context) error { + if err := cmd.GuestFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *start) Usage() string { + return "PATH [ARG]..." +} + +func (cmd *start) Description() string { + return `Start program in VM. + +The process can have its status queried with govc guest.ps. +When the process completes, its exit code and end time will be available for 5 minutes after completion. + +Examples: + govc guest.start -vm $name /bin/mount /dev/hdb1 /data + pid=$(govc guest.start -vm $name /bin/long-running-thing) + govc guest.ps -vm $name -p $pid -X` +} + +func (cmd *start) Run(ctx context.Context, f *flag.FlagSet) error { + m, err := cmd.ProcessManager() + if err != nil { + return err + } + + spec := types.GuestProgramSpec{ + ProgramPath: f.Arg(0), + Arguments: strings.Join(f.Args()[1:], " "), + WorkingDirectory: cmd.dir, + EnvVariables: cmd.vars, + } + + pid, err := m.StartProgram(ctx, cmd.Auth(), &spec) + if err != nil { + return err + } + + fmt.Printf("%d\n", pid) + + return nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/guest/tools.go b/vendor/github.com/vmware/govmomi/govc/vm/guest/tools.go new file mode 100644 index 0000000..1e1e36a --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/guest/tools.go @@ -0,0 +1,116 @@ +/* +Copyright (c) 2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package guest + +import ( + "context" + "flag" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/object" +) + +type tools struct { + *flags.ClientFlag + *flags.SearchFlag + + mount bool + upgrade bool + options string + unmount bool +} + +func init() { + cli.Register("vm.guest.tools", &tools{}) +} + +func (cmd *tools) Register(ctx context.Context, f *flag.FlagSet) { + cmd.ClientFlag, ctx = flags.NewClientFlag(ctx) + cmd.ClientFlag.Register(ctx, f) + + cmd.SearchFlag, ctx = flags.NewSearchFlag(ctx, flags.SearchVirtualMachines) + cmd.SearchFlag.Register(ctx, f) + + f.BoolVar(&cmd.mount, "mount", false, "Mount tools CD installer in the guest") + f.BoolVar(&cmd.upgrade, "upgrade", false, "Upgrade tools in the guest") + f.StringVar(&cmd.options, "options", "", "Installer options") + f.BoolVar(&cmd.unmount, "unmount", false, "Unmount tools CD installer in the guest") +} + +func (cmd *tools) Process(ctx context.Context) error { + if err := cmd.ClientFlag.Process(ctx); err != nil { + return err + } + if err := cmd.SearchFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *tools) Usage() string { + return "VM..." +} + +func (cmd *tools) Description() string { + return `Manage guest tools in VM. + +Examples: + govc vm.guest.tools -mount VM + govc vm.guest.tools -unmount VM + govc vm.guest.tools -upgrade -options "opt1 opt2" VM` +} + +func (cmd *tools) Upgrade(ctx context.Context, vm *object.VirtualMachine) error { + task, err := vm.UpgradeTools(ctx, cmd.options) + if err != nil { + return err + } + + return task.Wait(ctx) +} + +func (cmd *tools) Run(ctx context.Context, f *flag.FlagSet) error { + vms, err := cmd.VirtualMachines(f.Args()) + if err != nil { + return err + } + + for _, vm := range vms { + switch { + case cmd.mount: + err = vm.MountToolsInstaller(ctx) + if err != nil { + return err + } + case cmd.upgrade: + err = cmd.Upgrade(ctx, vm) + if err != nil { + return err + } + case cmd.unmount: + err = vm.UnmountToolsInstaller(ctx) + if err != nil { + return err + } + default: + return flag.ErrHelp + } + } + + return nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/guest/touch.go b/vendor/github.com/vmware/govmomi/govc/vm/guest/touch.go new file mode 100644 index 0000000..741bf2b --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/guest/touch.go @@ -0,0 +1,126 @@ +/* +Copyright (c) 2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package guest + +import ( + "bytes" + "context" + "flag" + "time" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/vim25/soap" + "github.com/vmware/govmomi/vim25/types" +) + +type touch struct { + *GuestFlag + + nocreate bool + atime bool + date string +} + +func init() { + cli.Register("guest.touch", &touch{}) +} + +func (cmd *touch) Register(ctx context.Context, f *flag.FlagSet) { + cmd.GuestFlag, ctx = newGuestFlag(ctx) + cmd.GuestFlag.Register(ctx, f) + + f.BoolVar(&cmd.atime, "a", false, "Change only the access time") + f.BoolVar(&cmd.nocreate, "c", false, "Do not create any files") + f.StringVar(&cmd.date, "d", "", "Use DATE instead of current time") +} + +func (cmd *touch) Process(ctx context.Context) error { + if err := cmd.GuestFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *touch) Usage() string { + return "FILE" +} + +func (cmd *touch) Description() string { + return `Change FILE times on VM. + +Examples: + govc guest.touch -vm $name /var/log/foo.log + govc guest.touch -vm $name -d "$(date -d '1 day ago')" /var/log/foo.log` +} + +func (cmd *touch) Run(ctx context.Context, f *flag.FlagSet) error { + if f.NArg() != 1 { + return flag.ErrHelp + } + + m, err := cmd.FileManager() + if err != nil { + return err + } + + name := f.Arg(0) + + var attr types.GuestFileAttributes + now := time.Now() + + if cmd.date != "" { + now, err = time.Parse(time.UnixDate, cmd.date) + if err != nil { + return err + } + } + + if cmd.atime { + attr.AccessTime = &now + } else { + attr.ModificationTime = &now + } + + err = m.ChangeFileAttributes(ctx, cmd.Auth(), name, &attr) + if err != nil && !cmd.nocreate && soap.IsSoapFault(err) { + fault := soap.ToSoapFault(err) + if _, ok := fault.VimFault().(types.FileNotFound); ok { + // create a new empty file + url, cerr := m.InitiateFileTransferToGuest(ctx, cmd.Auth(), name, &attr, 0, false) + if cerr != nil { + return cerr + } + + u, cerr := cmd.ParseURL(url) + if cerr != nil { + return cerr + } + + c, cerr := cmd.Client() + if cerr != nil { + return cerr + } + + err = c.Client.Upload(ctx, new(bytes.Buffer), u, &soap.DefaultUpload) + if err == nil && cmd.date != "" { + err = m.ChangeFileAttributes(ctx, cmd.Auth(), name, &attr) + } + } + } + + return err +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/guest/upload.go b/vendor/github.com/vmware/govmomi/govc/vm/guest/upload.go new file mode 100644 index 0000000..693f5cd --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/guest/upload.go @@ -0,0 +1,109 @@ +/* +Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package guest + +import ( + "context" + "flag" + "io" + "os" + "path/filepath" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/vim25/soap" +) + +type upload struct { + *GuestFlag + *FileAttrFlag + + overwrite bool +} + +func init() { + cli.Register("guest.upload", &upload{}) +} + +func (cmd *upload) Register(ctx context.Context, f *flag.FlagSet) { + cmd.GuestFlag, ctx = newGuestFlag(ctx) + cmd.GuestFlag.Register(ctx, f) + cmd.FileAttrFlag, ctx = newFileAttrFlag(ctx) + cmd.FileAttrFlag.Register(ctx, f) + + f.BoolVar(&cmd.overwrite, "f", false, "If set, the guest destination file is clobbered") +} + +func (cmd *upload) Usage() string { + return "SOURCE DEST" +} + +func (cmd *upload) Description() string { + return `Copy SOURCE from the local system to DEST in the guest VM. + +If SOURCE name is "-", read source from stdin. + +Examples: + govc guest.upload -l user:pass -vm=my-vm ~/.ssh/id_rsa.pub /home/$USER/.ssh/authorized_keys + cowsay "have a great day" | govc guest.upload -l user:pass -vm=my-vm - /etc/motd + tar -cf- foo/ | govc guest.run -d - tar -C /tmp -xf- # upload a directory` +} + +func (cmd *upload) Process(ctx context.Context) error { + if err := cmd.GuestFlag.Process(ctx); err != nil { + return err + } + if err := cmd.FileAttrFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *upload) Run(ctx context.Context, f *flag.FlagSet) error { + if f.NArg() != 2 { + return flag.ErrHelp + } + + c, err := cmd.Toolbox() + if err != nil { + return err + } + + src := f.Arg(0) + dst := f.Arg(1) + + p := soap.DefaultUpload + + var r io.Reader = os.Stdin + + if src != "-" { + f, err := os.Open(filepath.Clean(src)) + if err != nil { + return err + } + defer f.Close() + + r = f + + if cmd.OutputFlag.TTY { + logger := cmd.ProgressLogger("Uploading... ") + p.Progress = logger + defer logger.Wait() + } + } + + return c.Upload(ctx, r, dst, p, cmd.Attr(), cmd.overwrite) +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/info.go b/vendor/github.com/vmware/govmomi/govc/vm/info.go new file mode 100644 index 0000000..df43b34 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/info.go @@ -0,0 +1,361 @@ +/* +Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package vm + +import ( + "context" + "flag" + "fmt" + "io" + "os" + "strings" + "text/tabwriter" + + "github.com/vmware/govmomi/find" + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/property" + "github.com/vmware/govmomi/units" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type info struct { + *flags.ClientFlag + *flags.OutputFlag + *flags.SearchFlag + + WaitForIP bool + General bool + ExtraConfig bool + Resources bool + ToolsConfigInfo bool +} + +func init() { + cli.Register("vm.info", &info{}) +} + +func (cmd *info) Register(ctx context.Context, f *flag.FlagSet) { + cmd.ClientFlag, ctx = flags.NewClientFlag(ctx) + cmd.ClientFlag.Register(ctx, f) + + cmd.OutputFlag, ctx = flags.NewOutputFlag(ctx) + cmd.OutputFlag.Register(ctx, f) + + cmd.SearchFlag, ctx = flags.NewSearchFlag(ctx, flags.SearchVirtualMachines) + cmd.SearchFlag.Register(ctx, f) + + f.BoolVar(&cmd.WaitForIP, "waitip", false, "Wait for VM to acquire IP address") + f.BoolVar(&cmd.General, "g", true, "Show general summary") + f.BoolVar(&cmd.ExtraConfig, "e", false, "Show ExtraConfig") + f.BoolVar(&cmd.Resources, "r", false, "Show resource summary") + f.BoolVar(&cmd.ToolsConfigInfo, "t", false, "Show ToolsConfigInfo") +} + +func (cmd *info) Process(ctx context.Context) error { + if err := cmd.ClientFlag.Process(ctx); err != nil { + return err + } + if err := cmd.OutputFlag.Process(ctx); err != nil { + return err + } + if err := cmd.SearchFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *info) Usage() string { + return `VM...` +} + +func (cmd *info) Description() string { + return `Display info for VM. + +The '-r' flag displays additional info for CPU, memory and storage usage, +along with the VM's Datastores, Networks and PortGroups. + +Examples: + govc vm.info $vm + govc vm.info -r $vm | grep Network: + govc vm.info -json $vm + govc find . -type m -runtime.powerState poweredOn | xargs govc vm.info` +} + +func (cmd *info) Run(ctx context.Context, f *flag.FlagSet) error { + c, err := cmd.Client() + if err != nil { + return err + } + + vms, err := cmd.VirtualMachines(f.Args()) + if err != nil { + if _, ok := err.(*find.NotFoundError); ok { + // Continue with empty VM slice + } else { + return err + } + } + + refs := make([]types.ManagedObjectReference, 0, len(vms)) + for _, vm := range vms { + refs = append(refs, vm.Reference()) + } + + var res infoResult + var props []string + + if cmd.OutputFlag.All() { + props = nil // Load everything + } else { + props = []string{"summary"} // Load summary + if cmd.General { + props = append(props, "guest.ipAddress") + } + if cmd.ExtraConfig { + props = append(props, "config.extraConfig") + } + if cmd.Resources { + props = append(props, "datastore", "network") + } + if cmd.ToolsConfigInfo { + props = append(props, "config.tools") + } + } + + pc := property.DefaultCollector(c) + if len(refs) != 0 { + err = pc.Retrieve(ctx, refs, props, &res.VirtualMachines) + if err != nil { + return err + } + } + + if cmd.WaitForIP { + for i, vm := range res.VirtualMachines { + if vm.Guest == nil || vm.Guest.IpAddress == "" { + _, err = vms[i].WaitForIP(ctx) + if err != nil { + return err + } + // Reload virtual machine object + err = pc.RetrieveOne(ctx, vms[i].Reference(), props, &res.VirtualMachines[i]) + if err != nil { + return err + } + } + } + } + + if !cmd.OutputFlag.All() { + res.objects = vms + res.cmd = cmd + if err = res.collectReferences(pc, ctx); err != nil { + return err + } + } + + return cmd.WriteResult(&res) +} + +type infoResult struct { + VirtualMachines []mo.VirtualMachine + objects []*object.VirtualMachine + entities map[types.ManagedObjectReference]string + cmd *info +} + +// collectReferences builds a unique set of MORs to the set of VirtualMachines, +// so we can collect properties in a single call for each reference type {host,datastore,network}. +func (r *infoResult) collectReferences(pc *property.Collector, ctx context.Context) error { + // MOR -> Name map + r.entities = make(map[types.ManagedObjectReference]string) + + var host []mo.HostSystem + var network []mo.Network + var opaque []mo.OpaqueNetwork + var dvp []mo.DistributedVirtualPortgroup + var datastore []mo.Datastore + // Table to drive inflating refs to their mo.* counterparts (dest) + // and save() the Name to r.entities w/o using reflection here. + // Note that we cannot use a []mo.ManagedEntity here, since mo.Network has its own 'Name' field, + // the mo.Network.ManagedEntity.Name field will not be set. + vrefs := map[string]*struct { + dest interface{} + refs []types.ManagedObjectReference + save func() + }{ + "HostSystem": { + &host, nil, func() { + for _, e := range host { + r.entities[e.Reference()] = e.Name + } + }, + }, + "Network": { + &network, nil, func() { + for _, e := range network { + r.entities[e.Reference()] = e.Name + } + }, + }, + "OpaqueNetwork": { + &opaque, nil, func() { + for _, e := range opaque { + r.entities[e.Reference()] = e.Name + } + }, + }, + "DistributedVirtualPortgroup": { + &dvp, nil, func() { + for _, e := range dvp { + r.entities[e.Reference()] = e.Name + } + }, + }, + "Datastore": { + &datastore, nil, func() { + for _, e := range datastore { + r.entities[e.Reference()] = e.Name + } + }, + }, + } + + xrefs := make(map[types.ManagedObjectReference]bool) + // Add MOR to vrefs[kind].refs avoiding any duplicates. + addRef := func(refs ...types.ManagedObjectReference) { + for _, ref := range refs { + if _, exists := xrefs[ref]; exists { + return + } + xrefs[ref] = true + vref := vrefs[ref.Type] + vref.refs = append(vref.refs, ref) + } + } + + for _, vm := range r.VirtualMachines { + if r.cmd.General { + if ref := vm.Summary.Runtime.Host; ref != nil { + addRef(*ref) + } + } + + if r.cmd.Resources { + addRef(vm.Datastore...) + addRef(vm.Network...) + } + } + + for _, vref := range vrefs { + if vref.refs == nil { + continue + } + err := pc.Retrieve(ctx, vref.refs, []string{"name"}, vref.dest) + if err != nil { + return err + } + vref.save() + } + + return nil +} + +func (r *infoResult) entityNames(refs []types.ManagedObjectReference) string { + var names []string + for _, ref := range refs { + names = append(names, r.entities[ref]) + } + return strings.Join(names, ", ") +} + +func (r *infoResult) Write(w io.Writer) error { + // Maintain order via r.objects as Property collector does not always return results in order. + objects := make(map[types.ManagedObjectReference]mo.VirtualMachine, len(r.VirtualMachines)) + for _, o := range r.VirtualMachines { + objects[o.Reference()] = o + } + + tw := tabwriter.NewWriter(os.Stdout, 2, 0, 2, ' ', 0) + + for _, o := range r.objects { + vm := objects[o.Reference()] + s := vm.Summary + + fmt.Fprintf(tw, "Name:\t%s\n", s.Config.Name) + + if r.cmd.General { + hostName := "" + + if href := vm.Summary.Runtime.Host; href != nil { + if name, ok := r.entities[*href]; ok { + hostName = name + } + } + + fmt.Fprintf(tw, " Path:\t%s\n", o.InventoryPath) + fmt.Fprintf(tw, " UUID:\t%s\n", s.Config.Uuid) + fmt.Fprintf(tw, " Guest name:\t%s\n", s.Config.GuestFullName) + fmt.Fprintf(tw, " Memory:\t%dMB\n", s.Config.MemorySizeMB) + fmt.Fprintf(tw, " CPU:\t%d vCPU(s)\n", s.Config.NumCpu) + fmt.Fprintf(tw, " Power state:\t%s\n", s.Runtime.PowerState) + fmt.Fprintf(tw, " Boot time:\t%s\n", s.Runtime.BootTime) + fmt.Fprintf(tw, " IP address:\t%s\n", s.Guest.IpAddress) + fmt.Fprintf(tw, " Host:\t%s\n", hostName) + } + + if r.cmd.Resources { + if s.Storage == nil { + s.Storage = new(types.VirtualMachineStorageSummary) + } + fmt.Fprintf(tw, " CPU usage:\t%dMHz\n", s.QuickStats.OverallCpuUsage) + fmt.Fprintf(tw, " Host memory usage:\t%dMB\n", s.QuickStats.HostMemoryUsage) + fmt.Fprintf(tw, " Guest memory usage:\t%dMB\n", s.QuickStats.GuestMemoryUsage) + fmt.Fprintf(tw, " Storage uncommitted:\t%s\n", units.ByteSize(s.Storage.Uncommitted)) + fmt.Fprintf(tw, " Storage committed:\t%s\n", units.ByteSize(s.Storage.Committed)) + fmt.Fprintf(tw, " Storage unshared:\t%s\n", units.ByteSize(s.Storage.Unshared)) + fmt.Fprintf(tw, " Storage:\t%s\n", r.entityNames(vm.Datastore)) + fmt.Fprintf(tw, " Network:\t%s\n", r.entityNames(vm.Network)) + } + + if r.cmd.ExtraConfig { + fmt.Fprintf(tw, " ExtraConfig:\n") + for _, v := range vm.Config.ExtraConfig { + fmt.Fprintf(tw, " %s:\t%s\n", v.GetOptionValue().Key, v.GetOptionValue().Value) + } + } + + if r.cmd.ToolsConfigInfo { + t := vm.Config.Tools + fmt.Fprintf(tw, " ToolsConfigInfo:\n") + fmt.Fprintf(tw, " ToolsVersion:\t%d\n", t.ToolsVersion) + fmt.Fprintf(tw, " AfterPowerOn:\t%s\n", flags.NewOptionalBool(&t.AfterPowerOn).String()) + fmt.Fprintf(tw, " AfterResume:\t%s\n", flags.NewOptionalBool(&t.AfterResume).String()) + fmt.Fprintf(tw, " BeforeGuestStandby:\t%s\n", flags.NewOptionalBool(&t.BeforeGuestStandby).String()) + fmt.Fprintf(tw, " BeforeGuestShutdown:\t%s\n", flags.NewOptionalBool(&t.BeforeGuestShutdown).String()) + fmt.Fprintf(tw, " BeforeGuestReboot:\t%s\n", flags.NewOptionalBool(&t.BeforeGuestReboot).String()) + fmt.Fprintf(tw, " ToolsUpgradePolicy:\t%s\n", t.ToolsUpgradePolicy) + fmt.Fprintf(tw, " PendingCustomization:\t%s\n", t.PendingCustomization) + fmt.Fprintf(tw, " SyncTimeWithHost:\t%s\n", flags.NewOptionalBool(&t.SyncTimeWithHost).String()) + } + } + + return tw.Flush() +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/ip.go b/vendor/github.com/vmware/govmomi/govc/vm/ip.go new file mode 100644 index 0000000..a339b71 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/ip.go @@ -0,0 +1,192 @@ +/* +Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package vm + +import ( + "context" + "flag" + "fmt" + "strings" + "time" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/govc/host/esxcli" + "github.com/vmware/govmomi/object" +) + +type ip struct { + *flags.OutputFlag + *flags.SearchFlag + + esx bool + all bool + v4 bool + wait time.Duration + nic string +} + +func init() { + cli.Register("vm.ip", &ip{}) +} + +func (cmd *ip) Register(ctx context.Context, f *flag.FlagSet) { + cmd.OutputFlag, ctx = flags.NewOutputFlag(ctx) + cmd.OutputFlag.Register(ctx, f) + + cmd.SearchFlag, ctx = flags.NewSearchFlag(ctx, flags.SearchVirtualMachines) + cmd.SearchFlag.Register(ctx, f) + + f.BoolVar(&cmd.esx, "esxcli", false, "Use esxcli instead of guest tools") + f.BoolVar(&cmd.all, "a", false, "Wait for an IP address on all NICs") + f.StringVar(&cmd.nic, "n", "", "Wait for IP address on NIC, specified by device name or MAC") + f.BoolVar(&cmd.v4, "v4", false, "Only report IPv4 addresses") + f.DurationVar(&cmd.wait, "wait", time.Hour, "Wait time for the VM obtain an IP address") +} + +func (cmd *ip) Usage() string { + return "VM..." +} + +func (cmd *ip) Description() string { + return `List IPs for VM. + +By default the vm.ip command depends on vmware-tools to report the 'guest.ipAddress' field and will +wait until it has done so. This value can also be obtained using: + + govc vm.info -json $vm | jq -r .VirtualMachines[].Guest.IpAddress + +When given the '-a' flag, only IP addresses for which there is a corresponding virtual nic are listed. +If there are multiple nics, the listed addresses will be comma delimited. The '-a' flag depends on +vmware-tools to report the 'guest.net' field and will wait until it has done so for all nics. +Note that this list includes IPv6 addresses if any, use '-v4' to filter them out. IP addresses reported +by tools for which there is no virtual nic are not included, for example that of the 'docker0' interface. + +These values can also be obtained using: + + govc vm.info -json $vm | jq -r .VirtualMachines[].Guest.Net[].IpConfig.IpAddress[].IpAddress + +When given the '-n' flag, filters '-a' behavior to the nic specified by MAC address or device name. + +The 'esxcli' flag does not require vmware-tools to be installed, but does require the ESX host to +have the /Net/GuestIPHack setting enabled. + +The 'wait' flag default to 1hr (original default was infinite). If a VM does not obtain an IP within +the wait time, the command will still exit with status 0. + +Examples: + govc vm.ip $vm + govc vm.ip -wait 5m $vm + govc vm.ip -a -v4 $vm + govc vm.ip -n 00:0c:29:57:7b:c3 $vm + govc vm.ip -n ethernet-0 $vm + govc host.esxcli system settings advanced set -o /Net/GuestIPHack -i 1 + govc vm.ip -esxcli $vm` +} + +func (cmd *ip) Process(ctx context.Context) error { + if err := cmd.OutputFlag.Process(ctx); err != nil { + return err + } + if err := cmd.SearchFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *ip) Run(ctx context.Context, f *flag.FlagSet) error { + c, err := cmd.Client() + if err != nil { + return err + } + + vms, err := cmd.VirtualMachines(f.Args()) + if err != nil { + return err + } + + var get func(*object.VirtualMachine, context.Context) (string, error) + + if cmd.esx { + get = func(vm *object.VirtualMachine, deadline context.Context) (string, error) { + guest := esxcli.NewGuestInfo(c) + + ticker := time.NewTicker(time.Millisecond * 500) + defer ticker.Stop() + + for { + select { + case <-ticker.C: + ip, err := guest.IpAddress(vm) + if err != nil { + return "", err + } + + if ip != "0.0.0.0" { + return ip, nil + } + case <-deadline.Done(): + return "", nil + } + } + } + } else { + var hwaddr []string + if cmd.nic != "" { + hwaddr = strings.Split(cmd.nic, ",") + } + + get = func(vm *object.VirtualMachine, deadline context.Context) (string, error) { + if cmd.all || hwaddr != nil { + macs, err := vm.WaitForNetIP(deadline, cmd.v4, hwaddr...) + if err != nil { + return "", err + } + + var ips []string + for _, addrs := range macs { + ips = append(ips, addrs...) + } + return strings.Join(ips, ","), nil + } + return vm.WaitForIP(deadline, cmd.v4) + } + } + + for _, vm := range vms { + deadline, cancel := context.WithDeadline(ctx, time.Now().Add(cmd.wait)) + + ip, err := get(vm, deadline) + if err != nil { + if deadline.Err() != context.DeadlineExceeded { + cancel() + return err + } + } + + cancel() + + if ip == "" { + continue + } + + // TODO(PN): Display inventory path to VM + fmt.Fprintf(cmd, "%s\n", ip) + } + + return nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/keystrokes.go b/vendor/github.com/vmware/govmomi/govc/vm/keystrokes.go new file mode 100644 index 0000000..67ae4d8 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/keystrokes.go @@ -0,0 +1,710 @@ +/* +Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package vm + +import ( + "context" + "flag" + "fmt" + "sort" + "strconv" + "strings" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/vim25/types" +) + +type hidKey struct { + Code int32 + ShiftPressed bool +} + +// stolen from +// https://gist.github.com/MightyPork/6da26e382a7ad91b5496ee55fdc73db2#file-usb_hid_keys-h-L110 +const ( + KEY_MOD_LCTRL = 0x01 + KEY_MOD_LSHIFT = 0x02 + KEY_MOD_LALT = 0x04 + KEY_MOD_LMETA = 0x08 + KEY_MOD_RCTRL = 0x10 + KEY_MOD_RSHIFT = 0x20 + KEY_MOD_RALT = 0x40 + KEY_MOD_RMETA = 0x80 + KEY_NONE = 0x00 + KEY_ERR_OVF = 0x01 + KEY_A = 0x04 + KEY_B = 0x05 + KEY_C = 0x06 + KEY_D = 0x07 + KEY_E = 0x08 + KEY_F = 0x09 + KEY_G = 0x0a + KEY_H = 0x0b + KEY_I = 0x0c + KEY_J = 0x0d + KEY_K = 0x0e + KEY_L = 0x0f + KEY_M = 0x10 + KEY_N = 0x11 + KEY_O = 0x12 + KEY_P = 0x13 + KEY_Q = 0x14 + KEY_R = 0x15 + KEY_S = 0x16 + KEY_T = 0x17 + KEY_U = 0x18 + KEY_V = 0x19 + KEY_W = 0x1a + KEY_X = 0x1b + KEY_Y = 0x1c + KEY_Z = 0x1d + KEY_1 = 0x1e + KEY_2 = 0x1f + KEY_3 = 0x20 + KEY_4 = 0x21 + KEY_5 = 0x22 + KEY_6 = 0x23 + KEY_7 = 0x24 + KEY_8 = 0x25 + KEY_9 = 0x26 + KEY_0 = 0x27 + KEY_ENTER = 0x28 + KEY_ESC = 0x29 + KEY_BACKSPACE = 0x2a + KEY_TAB = 0x2b + KEY_SPACE = 0x2c + KEY_MINUS = 0x2d + KEY_EQUAL = 0x2e + KEY_LEFTBRACE = 0x2f + KEY_RIGHTBRACE = 0x30 + KEY_BACKSLASH = 0x31 + KEY_HASHTILDE = 0x32 + KEY_SEMICOLON = 0x33 + KEY_APOSTROPHE = 0x34 + KEY_GRAVE = 0x35 + KEY_COMMA = 0x36 + KEY_DOT = 0x37 + KEY_SLASH = 0x38 + KEY_CAPSLOCK = 0x39 + KEY_F1 = 0x3a + KEY_F2 = 0x3b + KEY_F3 = 0x3c + KEY_F4 = 0x3d + KEY_F5 = 0x3e + KEY_F6 = 0x3f + KEY_F7 = 0x40 + KEY_F8 = 0x41 + KEY_F9 = 0x42 + KEY_F10 = 0x43 + KEY_F11 = 0x44 + KEY_F12 = 0x45 + KEY_SYSRQ = 0x46 + KEY_SCROLLLOCK = 0x47 + KEY_PAUSE = 0x48 + KEY_INSERT = 0x49 + KEY_HOME = 0x4a + KEY_PAGEUP = 0x4b + KEY_DELETE = 0x4c + KEY_END = 0x4d + KEY_PAGEDOWN = 0x4e + KEY_RIGHT = 0x4f + KEY_LEFT = 0x50 + KEY_DOWN = 0x51 + KEY_UP = 0x52 + KEY_NUMLOCK = 0x53 + KEY_KPSLASH = 0x54 + KEY_KPASTERISK = 0x55 + KEY_KPMINUS = 0x56 + KEY_KPPLUS = 0x57 + KEY_KPENTER = 0x58 + KEY_KP1 = 0x59 + KEY_KP2 = 0x5a + KEY_KP3 = 0x5b + KEY_KP4 = 0x5c + KEY_KP5 = 0x5d + KEY_KP6 = 0x5e + KEY_KP7 = 0x5f + KEY_KP8 = 0x60 + KEY_KP9 = 0x61 + KEY_KP0 = 0x62 + KEY_KPDOT = 0x63 + KEY_102ND = 0x64 + KEY_COMPOSE = 0x65 + KEY_POWER = 0x66 + KEY_KPEQUAL = 0x67 + KEY_F13 = 0x68 + KEY_F14 = 0x69 + KEY_F15 = 0x6a + KEY_F16 = 0x6b + KEY_F17 = 0x6c + KEY_F18 = 0x6d + KEY_F19 = 0x6e + KEY_F20 = 0x6f + KEY_F21 = 0x70 + KEY_F22 = 0x71 + KEY_F23 = 0x72 + KEY_F24 = 0x73 + KEY_OPEN = 0x74 + KEY_HELP = 0x75 + KEY_PROPS = 0x76 + KEY_FRONT = 0x77 + KEY_STOP = 0x78 + KEY_AGAIN = 0x79 + KEY_UNDO = 0x7a + KEY_CUT = 0x7b + KEY_COPY = 0x7c + KEY_PASTE = 0x7d + KEY_FIND = 0x7e + KEY_MUTE = 0x7f + KEY_VOLUMEUP = 0x80 + KEY_VOLUMEDOWN = 0x81 + KEY_KPCOMMA = 0x85 + KEY_RO = 0x87 + KEY_KATAKANAHIRAGANA = 0x88 + KEY_YEN = 0x89 + KEY_HENKAN = 0x8a + KEY_MUHENKAN = 0x8b + KEY_KPJPCOMMA = 0x8c + KEY_HANGEUL = 0x90 + KEY_HANJA = 0x91 + KEY_KATAKANA = 0x92 + KEY_HIRAGANA = 0x93 + KEY_ZENKAKUHANKAKU = 0x94 + KEY_KPLEFTPAREN = 0xb6 + KEY_KPRIGHTPAREN = 0xb7 + KEY_LEFTCTRL = 0xe0 + KEY_LEFTSHIFT = 0xe1 + KEY_LEFTALT = 0xe2 + KEY_LEFTMETA = 0xe3 + KEY_RIGHTCTRL = 0xe4 + KEY_RIGHTSHIFT = 0xe5 + KEY_RIGHTALT = 0xe6 + KEY_RIGHTMETA = 0xe7 + KEY_MEDIA_PLAYPAUSE = 0xe8 + KEY_MEDIA_STOPCD = 0xe9 + KEY_MEDIA_PREVIOUSSONG = 0xea + KEY_MEDIA_NEXTSONG = 0xeb + KEY_MEDIA_EJECTCD = 0xec + KEY_MEDIA_VOLUMEUP = 0xed + KEY_MEDIA_VOLUMEDOWN = 0xee + KEY_MEDIA_MUTE = 0xef + KEY_MEDIA_WWW = 0xf0 + KEY_MEDIA_BACK = 0xf1 + KEY_MEDIA_FORWARD = 0xf2 + KEY_MEDIA_STOP = 0xf3 + KEY_MEDIA_FIND = 0xf4 + KEY_MEDIA_SCROLLUP = 0xf5 + KEY_MEDIA_SCROLLDOWN = 0xf6 + KEY_MEDIA_EDIT = 0xf7 + KEY_MEDIA_SLEEP = 0xf8 + KEY_MEDIA_COFFEE = 0xf9 + KEY_MEDIA_REFRESH = 0xfa + KEY_MEDIA_CALC = 0xfb +) + +var hidKeyMap = map[string]int32{ + "KEY_MOD_LCTRL": KEY_MOD_LCTRL, + "KEY_MOD_LSHIFT": KEY_MOD_LSHIFT, + "KEY_MOD_LALT": KEY_MOD_LALT, + "KEY_MOD_LMETA": KEY_MOD_LMETA, + "KEY_MOD_RCTRL": KEY_MOD_RCTRL, + "KEY_MOD_RSHIFT": KEY_MOD_RSHIFT, + "KEY_MOD_RALT": KEY_MOD_RALT, + "KEY_MOD_RMETA": KEY_MOD_RMETA, + "KEY_NONE": KEY_NONE, + "KEY_ERR_OVF": KEY_ERR_OVF, + "KEY_A": KEY_A, + "KEY_B": KEY_B, + "KEY_C": KEY_C, + "KEY_D": KEY_D, + "KEY_E": KEY_E, + "KEY_F": KEY_F, + "KEY_G": KEY_G, + "KEY_H": KEY_H, + "KEY_I": KEY_I, + "KEY_J": KEY_J, + "KEY_K": KEY_K, + "KEY_L": KEY_L, + "KEY_M": KEY_M, + "KEY_N": KEY_N, + "KEY_O": KEY_O, + "KEY_P": KEY_P, + "KEY_Q": KEY_Q, + "KEY_R": KEY_R, + "KEY_S": KEY_S, + "KEY_T": KEY_T, + "KEY_U": KEY_U, + "KEY_V": KEY_V, + "KEY_W": KEY_W, + "KEY_X": KEY_X, + "KEY_Y": KEY_Y, + "KEY_Z": KEY_Z, + "KEY_1": KEY_1, + "KEY_2": KEY_2, + "KEY_3": KEY_3, + "KEY_4": KEY_4, + "KEY_5": KEY_5, + "KEY_6": KEY_6, + "KEY_7": KEY_7, + "KEY_8": KEY_8, + "KEY_9": KEY_9, + "KEY_0": KEY_0, + "KEY_ENTER": KEY_ENTER, + "KEY_ESC": KEY_ESC, + "KEY_BACKSPACE": KEY_BACKSPACE, + "KEY_TAB": KEY_TAB, + "KEY_SPACE": KEY_SPACE, + "KEY_MINUS": KEY_MINUS, + "KEY_EQUAL": KEY_EQUAL, + "KEY_LEFTBRACE": KEY_LEFTBRACE, + "KEY_RIGHTBRACE": KEY_RIGHTBRACE, + "KEY_BACKSLASH": KEY_BACKSLASH, + "KEY_HASHTILDE": KEY_HASHTILDE, + "KEY_SEMICOLON": KEY_SEMICOLON, + "KEY_APOSTROPHE": KEY_APOSTROPHE, + "KEY_GRAVE": KEY_GRAVE, + "KEY_COMMA": KEY_COMMA, + "KEY_DOT": KEY_DOT, + "KEY_SLASH": KEY_SLASH, + "KEY_CAPSLOCK": KEY_CAPSLOCK, + "KEY_F1": KEY_F1, + "KEY_F2": KEY_F2, + "KEY_F3": KEY_F3, + "KEY_F4": KEY_F4, + "KEY_F5": KEY_F5, + "KEY_F6": KEY_F6, + "KEY_F7": KEY_F7, + "KEY_F8": KEY_F8, + "KEY_F9": KEY_F9, + "KEY_F10": KEY_F10, + "KEY_F11": KEY_F11, + "KEY_F12": KEY_F12, + "KEY_SYSRQ": KEY_SYSRQ, + "KEY_SCROLLLOCK": KEY_SCROLLLOCK, + "KEY_PAUSE": KEY_PAUSE, + "KEY_INSERT": KEY_INSERT, + "KEY_HOME": KEY_HOME, + "KEY_PAGEUP": KEY_PAGEUP, + "KEY_DELETE": KEY_DELETE, + "KEY_END": KEY_END, + "KEY_PAGEDOWN": KEY_PAGEDOWN, + "KEY_RIGHT": KEY_RIGHT, + "KEY_LEFT": KEY_LEFT, + "KEY_DOWN": KEY_DOWN, + "KEY_UP": KEY_UP, + "KEY_NUMLOCK": KEY_NUMLOCK, + "KEY_KPSLASH": KEY_KPSLASH, + "KEY_KPASTERISK": KEY_KPASTERISK, + "KEY_KPMINUS": KEY_KPMINUS, + "KEY_KPPLUS": KEY_KPPLUS, + "KEY_KPENTER": KEY_KPENTER, + "KEY_KP1": KEY_KP1, + "KEY_KP2": KEY_KP2, + "KEY_KP3": KEY_KP3, + "KEY_KP4": KEY_KP4, + "KEY_KP5": KEY_KP5, + "KEY_KP6": KEY_KP6, + "KEY_KP7": KEY_KP7, + "KEY_KP8": KEY_KP8, + "KEY_KP9": KEY_KP9, + "KEY_KP0": KEY_KP0, + "KEY_KPDOT": KEY_KPDOT, + "KEY_102ND": KEY_102ND, + "KEY_COMPOSE": KEY_COMPOSE, + "KEY_POWER": KEY_POWER, + "KEY_KPEQUAL": KEY_KPEQUAL, + "KEY_F13": KEY_F13, + "KEY_F14": KEY_F14, + "KEY_F15": KEY_F15, + "KEY_F16": KEY_F16, + "KEY_F17": KEY_F17, + "KEY_F18": KEY_F18, + "KEY_F19": KEY_F19, + "KEY_F20": KEY_F20, + "KEY_F21": KEY_F21, + "KEY_F22": KEY_F22, + "KEY_F23": KEY_F23, + "KEY_F24": KEY_F24, + "KEY_OPEN": KEY_OPEN, + "KEY_HELP": KEY_HELP, + "KEY_PROPS": KEY_PROPS, + "KEY_FRONT": KEY_FRONT, + "KEY_STOP": KEY_STOP, + "KEY_AGAIN": KEY_AGAIN, + "KEY_UNDO": KEY_UNDO, + "KEY_CUT": KEY_CUT, + "KEY_COPY": KEY_COPY, + "KEY_PASTE": KEY_PASTE, + "KEY_FIND": KEY_FIND, + "KEY_MUTE": KEY_MUTE, + "KEY_VOLUMEUP": KEY_VOLUMEUP, + "KEY_VOLUMEDOWN": KEY_VOLUMEDOWN, + "KEY_KPCOMMA": KEY_KPCOMMA, + "KEY_RO": KEY_RO, + "KEY_KATAKANAHIRAGANA": KEY_KATAKANAHIRAGANA, + "KEY_YEN": KEY_YEN, + "KEY_HENKAN": KEY_HENKAN, + "KEY_MUHENKAN": KEY_MUHENKAN, + "KEY_KPJPCOMMA": KEY_KPJPCOMMA, + "KEY_HANGEUL": KEY_HANGEUL, + "KEY_HANJA": KEY_HANJA, + "KEY_KATAKANA": KEY_KATAKANA, + "KEY_HIRAGANA": KEY_HIRAGANA, + "KEY_ZENKAKUHANKAKU": KEY_ZENKAKUHANKAKU, + "KEY_KPLEFTPAREN": KEY_KPLEFTPAREN, + "KEY_KPRIGHTPAREN": KEY_KPRIGHTPAREN, + "KEY_LEFTCTRL": KEY_LEFTCTRL, + "KEY_LEFTSHIFT": KEY_LEFTSHIFT, + "KEY_LEFTALT": KEY_LEFTALT, + "KEY_LEFTMETA": KEY_LEFTMETA, + "KEY_RIGHTCTRL": KEY_RIGHTCTRL, + "KEY_RIGHTSHIFT": KEY_RIGHTSHIFT, + "KEY_RIGHTALT": KEY_RIGHTALT, + "KEY_RIGHTMETA": KEY_RIGHTMETA, + "KEY_MEDIA_PLAYPAUSE": KEY_MEDIA_PLAYPAUSE, + "KEY_MEDIA_STOPCD": KEY_MEDIA_STOPCD, + "KEY_MEDIA_PREVIOUSSONG": KEY_MEDIA_PREVIOUSSONG, + "KEY_MEDIA_NEXTSONG": KEY_MEDIA_NEXTSONG, + "KEY_MEDIA_EJECTCD": KEY_MEDIA_EJECTCD, + "KEY_MEDIA_VOLUMEUP": KEY_MEDIA_VOLUMEUP, + "KEY_MEDIA_VOLUMEDOWN": KEY_MEDIA_VOLUMEDOWN, + "KEY_MEDIA_MUTE": KEY_MEDIA_MUTE, + "KEY_MEDIA_WWW": KEY_MEDIA_WWW, + "KEY_MEDIA_BACK": KEY_MEDIA_BACK, + "KEY_MEDIA_FORWARD": KEY_MEDIA_FORWARD, + "KEY_MEDIA_STOP": KEY_MEDIA_STOP, + "KEY_MEDIA_FIND": KEY_MEDIA_FIND, + "KEY_MEDIA_SCROLLUP": KEY_MEDIA_SCROLLUP, + "KEY_MEDIA_SCROLLDOWN": KEY_MEDIA_SCROLLDOWN, + "KEY_MEDIA_EDIT": KEY_MEDIA_EDIT, + "KEY_MEDIA_SLEEP": KEY_MEDIA_SLEEP, + "KEY_MEDIA_COFFEE": KEY_MEDIA_COFFEE, + "KEY_MEDIA_REFRESH": KEY_MEDIA_REFRESH, + "KEY_MEDIA_CALC": KEY_MEDIA_CALC, +} + +var hidCharacterMap = map[string]hidKey{ + "a": {KEY_A, false}, + "b": {KEY_B, false}, + "c": {KEY_C, false}, + "d": {KEY_D, false}, + "e": {KEY_E, false}, + "f": {KEY_F, false}, + "g": {KEY_G, false}, + "h": {KEY_H, false}, + "i": {KEY_I, false}, + "j": {KEY_J, false}, + "k": {KEY_K, false}, + "l": {KEY_L, false}, + "m": {KEY_M, false}, + "n": {KEY_N, false}, + "o": {KEY_O, false}, + "p": {KEY_P, false}, + "q": {KEY_Q, false}, + "r": {KEY_R, false}, + "s": {KEY_S, false}, + "t": {KEY_T, false}, + "u": {KEY_U, false}, + "v": {KEY_V, false}, + "w": {KEY_W, false}, + "x": {KEY_X, false}, + "y": {KEY_Y, false}, + "z": {KEY_Z, false}, + "1": {KEY_1, false}, + "2": {KEY_2, false}, + "3": {KEY_3, false}, + "4": {KEY_4, false}, + "5": {KEY_5, false}, + "6": {KEY_6, false}, + "7": {KEY_7, false}, + "8": {KEY_8, false}, + "9": {KEY_9, false}, + "0": {KEY_0, false}, + "A": {KEY_A, true}, + "B": {KEY_B, true}, + "C": {KEY_C, true}, + "D": {KEY_D, true}, + "E": {KEY_E, true}, + "F": {KEY_F, true}, + "G": {KEY_G, true}, + "H": {KEY_H, true}, + "I": {KEY_I, true}, + "J": {KEY_J, true}, + "K": {KEY_K, true}, + "L": {KEY_L, true}, + "M": {KEY_M, true}, + "N": {KEY_N, true}, + "O": {KEY_O, true}, + "P": {KEY_P, true}, + "Q": {KEY_Q, true}, + "R": {KEY_R, true}, + "S": {KEY_S, true}, + "T": {KEY_T, true}, + "U": {KEY_U, true}, + "V": {KEY_V, true}, + "W": {KEY_W, true}, + "X": {KEY_X, true}, + "Y": {KEY_Y, true}, + "Z": {KEY_Z, true}, + "!": {KEY_1, true}, + "@": {KEY_2, true}, + "#": {KEY_3, true}, + "$": {KEY_4, true}, + "%": {KEY_5, true}, + "^": {KEY_6, true}, + "&": {KEY_7, true}, + "*": {KEY_8, true}, + "(": {KEY_9, true}, + ")": {KEY_0, true}, + " ": {KEY_SPACE, false}, + "-": {KEY_MINUS, false}, + "_": {KEY_MINUS, true}, + "=": {KEY_EQUAL, false}, + "+": {KEY_EQUAL, true}, + "[": {KEY_LEFTBRACE, false}, + "{": {KEY_LEFTBRACE, true}, + "]": {KEY_RIGHTBRACE, false}, + "}": {KEY_RIGHTBRACE, true}, + `\`: {KEY_BACKSLASH, false}, + "|": {KEY_BACKSLASH, true}, + ";": {KEY_SEMICOLON, false}, + ":": {KEY_SEMICOLON, true}, + "'": {KEY_APOSTROPHE, false}, + `"`: {KEY_APOSTROPHE, true}, + "`": {KEY_GRAVE, false}, + "~": {KEY_GRAVE, true}, + ",": {KEY_COMMA, false}, + "<": {KEY_COMMA, true}, + ".": {KEY_DOT, false}, + ">": {KEY_DOT, true}, + "/": {KEY_SLASH, false}, + "?": {KEY_SLASH, true}, +} + +type keystrokes struct { + *flags.VirtualMachineFlag + + UsbHidCodeValue int32 + UsbHidCodes string + UsbHidString string + LeftControl bool + LeftShift bool + LeftAlt bool + LeftGui bool + RightControl bool + RightShift bool + RightAlt bool + RightGui bool +} + +func init() { + cli.Register("vm.keystrokes", &keystrokes{}) +} + +func (cmd *keystrokes) Register(ctx context.Context, f *flag.FlagSet) { + cmd.VirtualMachineFlag, ctx = flags.NewVirtualMachineFlag(ctx) + cmd.VirtualMachineFlag.Register(ctx, f) + + f.StringVar(&cmd.UsbHidString, "s", "", "Raw String to Send") + f.StringVar(&cmd.UsbHidCodes, "c", "", "USB HID Codes (hex) or aliases, comma separated") + f.Var(flags.NewInt32(&cmd.UsbHidCodeValue), "r", "Raw USB HID Code Value (int32)") + f.BoolVar(&cmd.LeftControl, "lc", false, "Enable/Disable Left Control") + f.BoolVar(&cmd.LeftShift, "ls", false, "Enable/Disable Left Shift") + f.BoolVar(&cmd.LeftAlt, "la", false, "Enable/Disable Left Alt") + f.BoolVar(&cmd.LeftGui, "lg", false, "Enable/Disable Left Gui") + f.BoolVar(&cmd.RightControl, "rc", false, "Enable/Disable Right Control") + f.BoolVar(&cmd.RightShift, "rs", false, "Enable/Disable Right Shift") + f.BoolVar(&cmd.RightAlt, "ra", false, "Enable/Disable Right Alt") + f.BoolVar(&cmd.RightGui, "rg", false, "Enable/Disable Right Gui") +} + +func (cmd *keystrokes) Usage() string { + return "VM" +} + +func (cmd *keystrokes) Description() string { + description := `Send Keystrokes to VM. + +Examples: + Default Scenario + govc vm.keystrokes -vm $vm -s "root" # writes 'root' to the console + govc vm.keystrokes -vm $vm -c 0x15 # writes an 'r' to the console + govc vm.keystrokes -vm $vm -r 1376263 # writes an 'r' to the console + govc vm.keystrokes -vm $vm -c 0x28 # presses ENTER on the console + govc vm.keystrokes -vm $vm -c 0x4c -la=true -lc=true # sends CTRL+ALT+DEL to console + govc vm.keystrokes -vm $vm -c 0x15,KEY_ENTER # writes an 'r' to the console and press ENTER + +List of available aliases: +` + keys := make([]string, 0) + for key, _ := range hidKeyMap { + keys = append(keys, key) + } + sort.Strings(keys) + for i, key := range keys { + if i > 0 { + description += ", " + } + description += key + } + return description + "\n" +} + +func (cmd *keystrokes) Process(ctx context.Context) error { + if err := cmd.VirtualMachineFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *keystrokes) Run(ctx context.Context, f *flag.FlagSet) error { + vm, err := cmd.VirtualMachine() + if err != nil { + return err + } + + if vm == nil { + return flag.ErrHelp + } + + err = cmd.processUserInput(ctx, vm) + if err != nil { + return err + } + return nil +} + +func (cmd *keystrokes) processUserInput(ctx context.Context, vm *object.VirtualMachine) error { + if err := cmd.checkValidInputs(); err != nil { + return err + } + + codes, err := cmd.processUsbCode() + + if err != nil { + return err + } + + var keyEventArray []types.UsbScanCodeSpecKeyEvent + for _, code := range codes { + leftShiftSetting := false + if code.ShiftPressed || cmd.LeftShift { + leftShiftSetting = true + } + modifiers := types.UsbScanCodeSpecModifierType{ + LeftControl: &cmd.LeftControl, + LeftShift: &leftShiftSetting, + LeftAlt: &cmd.LeftAlt, + LeftGui: &cmd.LeftGui, + RightControl: &cmd.RightControl, + RightShift: &cmd.RightShift, + RightAlt: &cmd.RightAlt, + RightGui: &cmd.RightGui, + } + keyEvent := types.UsbScanCodeSpecKeyEvent{ + UsbHidCode: code.Code, + Modifiers: &modifiers, + } + keyEventArray = append(keyEventArray, keyEvent) + } + + spec := types.UsbScanCodeSpec{ + KeyEvents: keyEventArray, + } + + _, err = vm.PutUsbScanCodes(ctx, spec) + + return err +} + +func (cmd *keystrokes) processUsbCode() ([]hidKey, error) { + if cmd.rawCodeProvided() { + return []hidKey{{cmd.UsbHidCodeValue, false}}, nil + } + + if cmd.hexCodeProvided() { + var retKeyArray []hidKey + for _, c := range strings.Split(cmd.UsbHidCodes, ",") { + var s int32 + lookupvalue, ok := hidKeyMap[c] + if ok { + s = intToHidCode(lookupvalue) + } else { + var err error + s, err = hexStringToHidCode(c) + if err != nil { + return nil, err + } + } + retKeyArray = append(retKeyArray, hidKey{s, false}) + } + return retKeyArray, nil + } + + if cmd.stringProvided() { + var retKeyArray []hidKey + for _, c := range cmd.UsbHidString { + lookupValue, ok := hidCharacterMap[string(c)] + if !ok { + return nil, fmt.Errorf("invalid Character %s in String: %s", string(c), cmd.UsbHidString) + } + lookupValue.Code = intToHidCode(lookupValue.Code) + retKeyArray = append(retKeyArray, lookupValue) + } + return retKeyArray, nil + } + return nil, nil +} + +func hexStringToHidCode(hex string) (int32, error) { + s, err := strconv.ParseInt(hex, 0, 32) + if err != nil { + return 0, err + } + return intToHidCode(int32(s)), nil +} + +func intToHidCode(v int32) int32 { + var s int32 = v << 16 + s |= 7 + return s +} + +func (cmd *keystrokes) checkValidInputs() error { + // poor man's boolean XOR -> A xor B xor C = A'BC' + AB'C' + A'B'C + ABC + if (!cmd.rawCodeProvided() && cmd.hexCodeProvided() && !cmd.stringProvided()) || // A'BC' + (cmd.rawCodeProvided() && !cmd.hexCodeProvided() && !cmd.stringProvided()) || // AB'C' + (!cmd.rawCodeProvided() && !cmd.hexCodeProvided() && cmd.stringProvided()) || // A'B'C + (cmd.rawCodeProvided() && cmd.hexCodeProvided() && cmd.stringProvided()) { // ABC + return nil + } + return fmt.Errorf("specify only 1 argument") +} + +func (cmd keystrokes) rawCodeProvided() bool { + return cmd.UsbHidCodeValue != 0 +} + +func (cmd keystrokes) hexCodeProvided() bool { + return cmd.UsbHidCodes != "" +} + +func (cmd keystrokes) stringProvided() bool { + return cmd.UsbHidString != "" +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/markastemplate.go b/vendor/github.com/vmware/govmomi/govc/vm/markastemplate.go new file mode 100644 index 0000000..eccfb77 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/markastemplate.go @@ -0,0 +1,72 @@ +/* +Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package vm + +import ( + "context" + "flag" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" +) + +type markastemplate struct { + *flags.SearchFlag +} + +func init() { + cli.Register("vm.markastemplate", &markastemplate{}) +} + +func (cmd *markastemplate) Register(ctx context.Context, f *flag.FlagSet) { + cmd.SearchFlag, ctx = flags.NewSearchFlag(ctx, flags.SearchVirtualMachines) + cmd.SearchFlag.Register(ctx, f) +} + +func (cmd *markastemplate) Process(ctx context.Context) error { + if err := cmd.SearchFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *markastemplate) Usage() string { + return "VM..." +} + +func (cmd *markastemplate) Description() string { + return `Mark VM as a virtual machine template. + +Examples: + govc vm.markastemplate $name` +} + +func (cmd *markastemplate) Run(ctx context.Context, f *flag.FlagSet) error { + vms, err := cmd.VirtualMachines(f.Args()) + if err != nil { + return err + } + + for _, vm := range vms { + err := vm.MarkAsTemplate(ctx) + if err != nil { + return err + } + } + + return nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/markasvm.go b/vendor/github.com/vmware/govmomi/govc/vm/markasvm.go new file mode 100644 index 0000000..0297863 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/markasvm.go @@ -0,0 +1,106 @@ +/* +Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package vm + +import ( + "context" + "flag" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" +) + +type markasvm struct { + *flags.SearchFlag + *flags.ResourcePoolFlag + *flags.HostSystemFlag +} + +func init() { + cli.Register("vm.markasvm", &markasvm{}) +} + +func (cmd *markasvm) Register(ctx context.Context, f *flag.FlagSet) { + cmd.SearchFlag, ctx = flags.NewSearchFlag(ctx, flags.SearchVirtualMachines) + cmd.SearchFlag.Register(ctx, f) + cmd.ResourcePoolFlag, ctx = flags.NewResourcePoolFlag(ctx) + cmd.ResourcePoolFlag.Register(ctx, f) + cmd.HostSystemFlag, ctx = flags.NewHostSystemFlag(ctx) + cmd.HostSystemFlag.Register(ctx, f) +} + +func (cmd *markasvm) Process(ctx context.Context) error { + if err := cmd.SearchFlag.Process(ctx); err != nil { + return err + } + if err := cmd.ResourcePoolFlag.Process(ctx); err != nil { + return err + } + if err := cmd.HostSystemFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *markasvm) Usage() string { + return "VM..." +} + +func (cmd *markasvm) Description() string { + return `Mark VM template as a virtual machine. + +Examples: + govc vm.markasvm $name -host host1 + govc vm.markasvm $name -pool cluster1/Resources` +} + +func (cmd *markasvm) Run(ctx context.Context, f *flag.FlagSet) error { + vms, err := cmd.VirtualMachines(f.Args()) + if err != nil { + return err + } + + pool, err := cmd.ResourcePoolIfSpecified() + if err != nil { + return err + } + + host, err := cmd.HostSystemFlag.HostSystemIfSpecified() + if err != nil { + return err + } + + if pool == nil { + if host == nil { + return flag.ErrHelp + } + + pool, err = host.ResourcePool(ctx) + if err != nil { + return err + } + } + + for _, vm := range vms { + err := vm.MarkAsVirtualMachine(ctx, *pool, host) + if err != nil { + return err + } + } + + return nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/migrate.go b/vendor/github.com/vmware/govmomi/govc/vm/migrate.go new file mode 100644 index 0000000..a43c4da --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/migrate.go @@ -0,0 +1,172 @@ +/* +Copyright (c) 2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package vm + +import ( + "context" + "flag" + "fmt" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/vim25/types" +) + +type migrate struct { + *flags.FolderFlag + *flags.ResourcePoolFlag + *flags.HostSystemFlag + *flags.DatastoreFlag + *flags.SearchFlag + + priority types.VirtualMachineMovePriority + spec types.VirtualMachineRelocateSpec +} + +func init() { + cli.Register("vm.migrate", &migrate{}) +} + +func (cmd *migrate) Register(ctx context.Context, f *flag.FlagSet) { + cmd.FolderFlag, ctx = flags.NewFolderFlag(ctx) + cmd.FolderFlag.Register(ctx, f) + + cmd.SearchFlag, ctx = flags.NewSearchFlag(ctx, flags.SearchVirtualMachines) + cmd.SearchFlag.Register(ctx, f) + + cmd.ResourcePoolFlag, ctx = flags.NewResourcePoolFlag(ctx) + cmd.ResourcePoolFlag.Register(ctx, f) + + cmd.HostSystemFlag, ctx = flags.NewHostSystemFlag(ctx) + cmd.HostSystemFlag.Register(ctx, f) + + cmd.DatastoreFlag, ctx = flags.NewDatastoreFlag(ctx) + cmd.DatastoreFlag.Register(ctx, f) + + f.StringVar((*string)(&cmd.priority), "priority", string(types.VirtualMachineMovePriorityDefaultPriority), "The task priority") +} + +func (cmd *migrate) Process(ctx context.Context) error { + if err := cmd.FolderFlag.Process(ctx); err != nil { + return err + } + if err := cmd.ResourcePoolFlag.Process(ctx); err != nil { + return err + } + if err := cmd.HostSystemFlag.Process(ctx); err != nil { + return err + } + if err := cmd.DatastoreFlag.Process(ctx); err != nil { + return err + } + + return nil +} + +func (cmd *migrate) Usage() string { + return "VM..." +} + +func (cmd *migrate) Description() string { + return `Migrates VM to a specific resource pool, host or datastore. + +Examples: + govc vm.migrate -host another-host vm-1 vm-2 vm-3 + govc vm.migrate -pool another-pool vm-1 vm-2 vm-3 + govc vm.migrate -ds another-ds vm-1 vm-2 vm-3` +} + +func (cmd *migrate) relocate(ctx context.Context, vm *object.VirtualMachine) error { + task, err := vm.Relocate(ctx, cmd.spec, cmd.priority) + if err != nil { + return err + } + + logger := cmd.DatastoreFlag.ProgressLogger(fmt.Sprintf("migrating %s... ", vm.Reference())) + _, err = task.WaitForResult(ctx, logger) + if err != nil { + return err + } + + logger.Wait() + + return nil +} + +func (cmd *migrate) Run(ctx context.Context, f *flag.FlagSet) error { + vms, err := cmd.VirtualMachines(f.Args()) + if err != nil { + return err + } + + folder, err := cmd.FolderIfSpecified() + if err != nil { + return err + } + + if folder != nil { + ref := folder.Reference() + cmd.spec.Folder = &ref + } + + host, err := cmd.HostSystemFlag.HostSystemIfSpecified() + if err != nil { + return err + } + + if host != nil { + ref := host.Reference() + cmd.spec.Host = &ref + } + + pool, err := cmd.ResourcePoolFlag.ResourcePoolIfSpecified() + if err != nil { + return err + } + + if pool == nil && host != nil { + pool, err = host.ResourcePool(ctx) + if err != nil { + return err + } + } + + if pool != nil { + ref := pool.Reference() + cmd.spec.Pool = &ref + } + + ds, err := cmd.DatastoreFlag.DatastoreIfSpecified() + if err != nil { + return err + } + + if ds != nil { + ref := ds.Reference() + cmd.spec.Datastore = &ref + } + + for _, vm := range vms { + err = cmd.relocate(ctx, vm) + if err != nil { + return err + } + } + + return nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/power.go b/vendor/github.com/vmware/govmomi/govc/vm/power.go new file mode 100644 index 0000000..0f604e8 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/power.go @@ -0,0 +1,214 @@ +/* +Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package vm + +import ( + "context" + "flag" + "fmt" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/vim25/soap" + "github.com/vmware/govmomi/vim25/types" +) + +type power struct { + *flags.ClientFlag + *flags.SearchFlag + + On bool + Off bool + Reset bool + Reboot bool + Shutdown bool + Suspend bool + Force bool + Multi bool + Wait bool +} + +func init() { + cli.Register("vm.power", &power{}) +} + +func (cmd *power) Register(ctx context.Context, f *flag.FlagSet) { + cmd.ClientFlag, ctx = flags.NewClientFlag(ctx) + cmd.ClientFlag.Register(ctx, f) + + cmd.SearchFlag, ctx = flags.NewSearchFlag(ctx, flags.SearchVirtualMachines) + cmd.SearchFlag.Register(ctx, f) + + f.BoolVar(&cmd.On, "on", false, "Power on") + f.BoolVar(&cmd.Off, "off", false, "Power off") + f.BoolVar(&cmd.Reset, "reset", false, "Power reset") + f.BoolVar(&cmd.Suspend, "suspend", false, "Power suspend") + f.BoolVar(&cmd.Reboot, "r", false, "Reboot guest") + f.BoolVar(&cmd.Shutdown, "s", false, "Shutdown guest") + f.BoolVar(&cmd.Force, "force", false, "Force (ignore state error and hard shutdown/reboot if tools unavailable)") + f.BoolVar(&cmd.Multi, "M", false, "Use Datacenter.PowerOnMultiVM method instead of VirtualMachine.PowerOnVM") + f.BoolVar(&cmd.Wait, "wait", true, "Wait for the operation to complete") +} + +func (cmd *power) Usage() string { + return "NAME..." +} + +func (cmd *power) Description() string { + return `Invoke VM power operations. + +Examples: + govc vm.power -on VM1 VM2 VM3 + govc vm.power -on -M VM1 VM2 VM3 + govc vm.power -off -force VM1` +} + +func (cmd *power) Process(ctx context.Context) error { + if err := cmd.ClientFlag.Process(ctx); err != nil { + return err + } + if err := cmd.SearchFlag.Process(ctx); err != nil { + return err + } + opts := []bool{cmd.On, cmd.Off, cmd.Reset, cmd.Suspend, cmd.Reboot, cmd.Shutdown} + selected := false + + for _, opt := range opts { + if opt { + if selected { + return flag.ErrHelp + } + selected = opt + } + } + + if !selected { + return flag.ErrHelp + } + + return nil +} + +func isToolsUnavailable(err error) bool { + if soap.IsSoapFault(err) { + soapFault := soap.ToSoapFault(err) + if _, ok := soapFault.VimFault().(types.ToolsUnavailable); ok { + return ok + } + } + + return false +} + +// this is annoying, but the likely use cases for Datacenter.PowerOnVM outside of this command would +// use []types.ManagedObjectReference via ContainerView or field such as ResourcePool.Vm rather than the Finder. +func vmReferences(vms []*object.VirtualMachine) []types.ManagedObjectReference { + refs := make([]types.ManagedObjectReference, len(vms)) + for i, vm := range vms { + refs[i] = vm.Reference() + } + return refs +} + +func (cmd *power) Run(ctx context.Context, f *flag.FlagSet) error { + vms, err := cmd.VirtualMachines(f.Args()) + if err != nil { + return err + } + + if cmd.On && cmd.Multi { + dc, derr := cmd.Datacenter() + if derr != nil { + return derr + } + + task, derr := dc.PowerOnVM(ctx, vmReferences(vms)) + if derr != nil { + return derr + } + + msg := fmt.Sprintf("Powering on %d VMs...", len(vms)) + if task == nil { + // running against ESX + fmt.Fprintf(cmd, "%s OK\n", msg) + return nil + } + + if cmd.Wait { + logger := cmd.ProgressLogger(msg) + defer logger.Wait() + + _, err = task.WaitForResult(ctx, logger) + return err + } + } + + for _, vm := range vms { + var task *object.Task + + switch { + case cmd.On: + fmt.Fprintf(cmd, "Powering on %s... ", vm.Reference()) + task, err = vm.PowerOn(ctx) + case cmd.Off: + fmt.Fprintf(cmd, "Powering off %s... ", vm.Reference()) + task, err = vm.PowerOff(ctx) + case cmd.Reset: + fmt.Fprintf(cmd, "Reset %s... ", vm.Reference()) + task, err = vm.Reset(ctx) + case cmd.Suspend: + fmt.Fprintf(cmd, "Suspend %s... ", vm.Reference()) + task, err = vm.Suspend(ctx) + case cmd.Reboot: + fmt.Fprintf(cmd, "Reboot guest %s... ", vm.Reference()) + err = vm.RebootGuest(ctx) + + if err != nil && cmd.Force && isToolsUnavailable(err) { + task, err = vm.Reset(ctx) + } + case cmd.Shutdown: + fmt.Fprintf(cmd, "Shutdown guest %s... ", vm.Reference()) + err = vm.ShutdownGuest(ctx) + + if err != nil && cmd.Force && isToolsUnavailable(err) { + task, err = vm.PowerOff(ctx) + } + } + + if err != nil { + return err + } + + if cmd.Wait && task != nil { + err = task.Wait(ctx) + } + if err == nil { + fmt.Fprintf(cmd, "OK\n") + continue + } + + if cmd.Force { + fmt.Fprintf(cmd, "Error: %s\n", err) + continue + } + + return err + } + + return nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/question.go b/vendor/github.com/vmware/govmomi/govc/vm/question.go new file mode 100644 index 0000000..1e1c8c8 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/question.go @@ -0,0 +1,98 @@ +/* +Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package vm + +import ( + "context" + "errors" + "flag" + "fmt" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/property" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type question struct { + *flags.VirtualMachineFlag + + answer string +} + +func init() { + cli.Register("vm.question", &question{}) +} + +func (cmd *question) Register(ctx context.Context, f *flag.FlagSet) { + cmd.VirtualMachineFlag, ctx = flags.NewVirtualMachineFlag(ctx) + cmd.VirtualMachineFlag.Register(ctx, f) + + f.StringVar(&cmd.answer, "answer", "", "Answer to question") +} + +func (cmd *question) Process(ctx context.Context) error { + if err := cmd.VirtualMachineFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *question) Run(ctx context.Context, f *flag.FlagSet) error { + c, err := cmd.Client() + if err != nil { + return err + } + + vm, err := cmd.VirtualMachine() + if err != nil { + return err + } + + if vm == nil { + return errors.New("no VM specified") + } + + var mvm mo.VirtualMachine + + pc := property.DefaultCollector(c) + err = pc.RetrieveOne(ctx, vm.Reference(), []string{"runtime.question"}, &mvm) + if err != nil { + return err + } + + q := mvm.Runtime.Question + if q == nil { + fmt.Printf("No pending question\n") + return nil + } + + // Print question if no answer is specified + if cmd.answer == "" { + fmt.Printf("Question:\n%s\n\n", q.Text) + fmt.Printf("Possible answers:\n") + for _, e := range q.Choice.ChoiceInfo { + ed := e.(*types.ElementDescription) + fmt.Printf("%s) %s\n", ed.Key, ed.Description.Label) + } + return nil + } + + // Answer question + return vm.Answer(ctx, q.Id, cmd.answer) +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/register.go b/vendor/github.com/vmware/govmomi/govc/vm/register.go new file mode 100644 index 0000000..aeaa6aa --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/register.go @@ -0,0 +1,139 @@ +/* +Copyright (c) 2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package vm + +import ( + "context" + "flag" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" +) + +type register struct { + *flags.DatastoreFlag + *flags.ResourcePoolFlag + *flags.HostSystemFlag + *flags.FolderFlag + + name string + template bool +} + +func init() { + cli.Register("vm.register", ®ister{}) +} + +func (cmd *register) Register(ctx context.Context, f *flag.FlagSet) { + cmd.DatastoreFlag, ctx = flags.NewDatastoreFlag(ctx) + cmd.DatastoreFlag.Register(ctx, f) + + cmd.ResourcePoolFlag, ctx = flags.NewResourcePoolFlag(ctx) + cmd.ResourcePoolFlag.Register(ctx, f) + + cmd.HostSystemFlag, ctx = flags.NewHostSystemFlag(ctx) + cmd.HostSystemFlag.Register(ctx, f) + + cmd.FolderFlag, ctx = flags.NewFolderFlag(ctx) + cmd.FolderFlag.Register(ctx, f) + + f.StringVar(&cmd.name, "name", "", "Name of the VM") + f.BoolVar(&cmd.template, "template", false, "Mark VM as template") +} + +func (cmd *register) Process(ctx context.Context) error { + if err := cmd.DatastoreFlag.Process(ctx); err != nil { + return err + } + if err := cmd.ResourcePoolFlag.Process(ctx); err != nil { + return err + } + if err := cmd.HostSystemFlag.Process(ctx); err != nil { + return err + } + if err := cmd.FolderFlag.Process(ctx); err != nil { + return err + } + + return nil +} + +func (cmd *register) Usage() string { + return "VMX" +} + +func (cmd *register) Description() string { + return `Add an existing VM to the inventory. + +VMX is a path to the vm config file, relative to DATASTORE. + +Examples: + govc vm.register path/name.vmx + govc vm.register -template -host $host path/name.vmx` +} + +func (cmd *register) Run(ctx context.Context, f *flag.FlagSet) error { + if len(f.Args()) != 1 { + return flag.ErrHelp + } + + pool, err := cmd.ResourcePoolIfSpecified() + if err != nil { + return err + } + + host, err := cmd.HostSystemFlag.HostSystemIfSpecified() + if err != nil { + return err + } + + if cmd.template { + if pool != nil || host == nil { + return flag.ErrHelp + } + } else if pool == nil { + if host != nil { + pool, err = host.ResourcePool(ctx) + if err != nil { + return err + } + } else { + // neither -host nor -pool were specified, so use the default pool (ESX) + pool, err = cmd.ResourcePool() + if err != nil { + return err + } + } + } + + folder, err := cmd.FolderFlag.Folder() + if err != nil { + return err + } + + path, err := cmd.DatastorePath(f.Arg(0)) + if err != nil { + return err + } + + task, err := folder.RegisterVM(ctx, path, cmd.name, cmd.template, pool, host) + if err != nil { + return err + } + + return task.Wait(ctx) +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/unregister.go b/vendor/github.com/vmware/govmomi/govc/vm/unregister.go new file mode 100644 index 0000000..789d1ee --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/unregister.go @@ -0,0 +1,76 @@ +/* +Copyright (c) 2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package vm + +import ( + "context" + "flag" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" +) + +type unregister struct { + *flags.ClientFlag + *flags.SearchFlag +} + +func init() { + cli.Register("vm.unregister", &unregister{}) +} + +func (cmd *unregister) Register(ctx context.Context, f *flag.FlagSet) { + cmd.ClientFlag, ctx = flags.NewClientFlag(ctx) + cmd.ClientFlag.Register(ctx, f) + + cmd.SearchFlag, ctx = flags.NewSearchFlag(ctx, flags.SearchVirtualMachines) + cmd.SearchFlag.Register(ctx, f) +} + +func (cmd *unregister) Process(ctx context.Context) error { + if err := cmd.ClientFlag.Process(ctx); err != nil { + return err + } + if err := cmd.SearchFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *unregister) Usage() string { + return "VM..." +} + +func (cmd *unregister) Description() string { + return `Remove VM from inventory without removing any of the VM files on disk.` +} + +func (cmd *unregister) Run(ctx context.Context, f *flag.FlagSet) error { + vms, err := cmd.VirtualMachines(f.Args()) + if err != nil { + return err + } + + for _, vm := range vms { + err := vm.Unregister(ctx) + if err != nil { + return err + } + } + + return nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/upgrade.go b/vendor/github.com/vmware/govmomi/govc/vm/upgrade.go new file mode 100644 index 0000000..18c65ed --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/upgrade.go @@ -0,0 +1,80 @@ +package vm + +import ( + "context" + "flag" + "fmt" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/task" + "github.com/vmware/govmomi/vim25/types" +) + +type upgrade struct { + *flags.VirtualMachineFlag + version int +} + +func init() { + cli.Register("vm.upgrade", &upgrade{}) +} + +func isAlreadyUpgraded(err error) bool { + if fault, ok := err.(task.Error); ok { + _, ok = fault.Fault().(*types.AlreadyUpgraded) + return ok + } + + return false +} + +func (cmd *upgrade) Register(ctx context.Context, f *flag.FlagSet) { + cmd.VirtualMachineFlag, ctx = flags.NewVirtualMachineFlag(ctx) + cmd.VirtualMachineFlag.Register(ctx, f) + + f.IntVar(&cmd.version, "version", 0, "Target vm hardware version, by default -- latest available") +} + +func (cmd *upgrade) Process(ctx context.Context) error { + if err := cmd.VirtualMachineFlag.Process(ctx); err != nil { + return err + } + return nil +} + +func (cmd *upgrade) Description() string { + return `Upgrade VMs to latest hardware version + +Examples: + govc vm.upgrade -vm $vm_name + govc vm.upgrade -version=$version -vm $vm_name + govc vm.upgrade -version=$version -vm.uuid $vm_uuid` +} + +func (cmd *upgrade) Run(ctx context.Context, f *flag.FlagSet) error { + vm, err := cmd.VirtualMachine() + if err != nil { + return err + } + + var version = "" + if cmd.version != 0 { + version = fmt.Sprintf("vmx-%02d", cmd.version) + } + + task, err := vm.UpgradeVM(ctx, version) + if err != nil { + return err + } + err = task.Wait(ctx) + if err != nil { + if isAlreadyUpgraded(err) { + fmt.Println(err.Error()) + } else { + return err + } + } + + return nil +} diff --git a/vendor/github.com/vmware/govmomi/govc/vm/vnc.go b/vendor/github.com/vmware/govmomi/govc/vm/vnc.go new file mode 100644 index 0000000..9e8165c --- /dev/null +++ b/vendor/github.com/vmware/govmomi/govc/vm/vnc.go @@ -0,0 +1,504 @@ +/* +Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package vm + +import ( + "context" + "encoding/json" + "flag" + "fmt" + "io" + "reflect" + "regexp" + "strconv" + "strings" + + "github.com/vmware/govmomi/govc/cli" + "github.com/vmware/govmomi/govc/flags" + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/property" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type intRange struct { + low, high int +} + +var intRangeRegexp = regexp.MustCompile("^([0-9]+)-([0-9]+)$") + +func (i *intRange) Set(s string) error { + m := intRangeRegexp.FindStringSubmatch(s) + if m == nil { + return fmt.Errorf("invalid range: %s", s) + } + + low, err := strconv.Atoi(m[1]) + if err != nil { + return fmt.Errorf("couldn't convert to integer: %v", err) + } + + high, err := strconv.Atoi(m[2]) + if err != nil { + return fmt.Errorf("couldn't convert to integer: %v", err) + } + + if low > high { + return fmt.Errorf("invalid range: low > high") + } + + i.low = low + i.high = high + return nil +} + +func (i *intRange) String() string { + return fmt.Sprintf("%d-%d", i.low, i.high) +} + +type vnc struct { + *flags.SearchFlag + + Enable bool + Disable bool + Port int + PortRange intRange + Password string +} + +func init() { + cmd := &vnc{} + err := cmd.PortRange.Set("5900-5999") + if err != nil { + fmt.Printf("Error setting port range %v", err) + } + cli.Register("vm.vnc", cmd) +} + +func (cmd *vnc) Register(ctx context.Context, f *flag.FlagSet) { + cmd.SearchFlag, ctx = flags.NewSearchFlag(ctx, flags.SearchVirtualMachines) + cmd.SearchFlag.Register(ctx, f) + + f.BoolVar(&cmd.Enable, "enable", false, "Enable VNC") + f.BoolVar(&cmd.Disable, "disable", false, "Disable VNC") + f.IntVar(&cmd.Port, "port", -1, "VNC port (-1 for auto-select)") + f.Var(&cmd.PortRange, "port-range", "VNC port auto-select range") + f.StringVar(&cmd.Password, "password", "", "VNC password") +} + +func (cmd *vnc) Process(ctx context.Context) error { + if err := cmd.SearchFlag.Process(ctx); err != nil { + return err + } + // Either may be true or none may be true. + if cmd.Enable && cmd.Disable { + return flag.ErrHelp + } + + return nil +} + +func (cmd *vnc) Usage() string { + return "VM..." +} + +func (cmd *vnc) Description() string { + return `Enable or disable VNC for VM. + +Port numbers are automatically chosen if not specified. + +If neither -enable or -disable is specified, the current state is returned. + +Examples: + govc vm.vnc -enable -password 1234 $vm | awk '{print $2}' | xargs open` +} + +func (cmd *vnc) Run(ctx context.Context, f *flag.FlagSet) error { + vms, err := cmd.loadVMs(f.Args()) + if err != nil { + return err + } + + // Actuate settings in VMs + for _, vm := range vms { + switch { + case cmd.Enable: + err = vm.enable(cmd.Port, cmd.Password) + if err != nil { + return err + } + case cmd.Disable: + err = vm.disable() + if err != nil { + return err + } + } + } + + // Reconfigure VMs to reflect updates + for _, vm := range vms { + err = vm.reconfigure() + if err != nil { + return err + } + } + + return cmd.WriteResult(vncResult(vms)) +} + +func (cmd *vnc) loadVMs(args []string) ([]*vncVM, error) { + c, err := cmd.Client() + if err != nil { + return nil, err + } + + vms, err := cmd.VirtualMachines(args) + if err != nil { + return nil, err + } + + var vncVMs []*vncVM + for _, vm := range vms { + v, err := newVNCVM(c, vm) + if err != nil { + return nil, err + } + vncVMs = append(vncVMs, v) + } + + // Assign vncHosts to vncVMs + hosts := make(map[string]*vncHost) + for _, vm := range vncVMs { + if h, ok := hosts[vm.hostReference().Value]; ok { + vm.host = h + continue + } + + hs := object.NewHostSystem(c, vm.hostReference()) + h, err := newVNCHost(c, hs, cmd.PortRange.low, cmd.PortRange.high) + if err != nil { + return nil, err + } + + hosts[vm.hostReference().Value] = h + vm.host = h + } + + return vncVMs, nil +} + +type vncVM struct { + c *vim25.Client + vm *object.VirtualMachine + mvm mo.VirtualMachine + host *vncHost + + curOptions vncOptions + newOptions vncOptions +} + +func newVNCVM(c *vim25.Client, vm *object.VirtualMachine) (*vncVM, error) { + v := &vncVM{ + c: c, + vm: vm, + } + + virtualMachineProperties := []string{ + "name", + "config.extraConfig", + "runtime.host", + } + + pc := property.DefaultCollector(c) + ctx := context.TODO() + err := pc.RetrieveOne(ctx, vm.Reference(), virtualMachineProperties, &v.mvm) + if err != nil { + return nil, err + } + + v.curOptions = vncOptionsFromExtraConfig(v.mvm.Config.ExtraConfig) + v.newOptions = vncOptionsFromExtraConfig(v.mvm.Config.ExtraConfig) + + return v, nil +} + +func (v *vncVM) hostReference() types.ManagedObjectReference { + return *v.mvm.Runtime.Host +} + +func (v *vncVM) enable(port int, password string) error { + v.newOptions["enabled"] = "true" + v.newOptions["port"] = fmt.Sprintf("%d", port) + v.newOptions["password"] = password + + // Find port if auto-select + if port == -1 { + // Reuse port if If VM already has a port, reuse it. + // Otherwise, find unused VNC port on host. + if p, ok := v.curOptions["port"]; ok && p != "" { + v.newOptions["port"] = p + } else { + port, err := v.host.popUnusedPort() + if err != nil { + return err + } + v.newOptions["port"] = fmt.Sprintf("%d", port) + } + } + return nil +} + +func (v *vncVM) disable() error { + v.newOptions["enabled"] = "false" + v.newOptions["port"] = "" + v.newOptions["password"] = "" + return nil +} + +func (v *vncVM) reconfigure() error { + if reflect.DeepEqual(v.curOptions, v.newOptions) { + // No changes to settings + return nil + } + + spec := types.VirtualMachineConfigSpec{ + ExtraConfig: v.newOptions.ToExtraConfig(), + } + + ctx := context.TODO() + task, err := v.vm.Reconfigure(ctx, spec) + if err != nil { + return err + } + + return task.Wait(ctx) +} + +func (v *vncVM) uri() (string, error) { + ip, err := v.host.managementIP() + if err != nil { + return "", err + } + + uri := fmt.Sprintf("vnc://:%s@%s:%s", + v.newOptions["password"], + ip, + v.newOptions["port"]) + + return uri, nil +} + +func (v *vncVM) write(w io.Writer) error { + if strings.EqualFold(v.newOptions["enabled"], "true") { + uri, err := v.uri() + if err != nil { + return err + } + fmt.Printf("%s: %s\n", v.mvm.Name, uri) + } else { + fmt.Printf("%s: disabled\n", v.mvm.Name) + } + return nil +} + +type vncHost struct { + c *vim25.Client + host *object.HostSystem + ports map[int]struct{} + ip string // This field is populated by `managementIP` +} + +func newVNCHost(c *vim25.Client, host *object.HostSystem, low, high int) (*vncHost, error) { + ports := make(map[int]struct{}) + for i := low; i <= high; i++ { + ports[i] = struct{}{} + } + + used, err := loadUsedPorts(c, host.Reference()) + if err != nil { + return nil, err + } + + // Remove used ports from range + for _, u := range used { + delete(ports, u) + } + + h := &vncHost{ + c: c, + host: host, + ports: ports, + } + + return h, nil +} + +func loadUsedPorts(c *vim25.Client, host types.ManagedObjectReference) ([]int, error) { + ctx := context.TODO() + ospec := types.ObjectSpec{ + Obj: host, + SelectSet: []types.BaseSelectionSpec{ + &types.TraversalSpec{ + Type: "HostSystem", + Path: "vm", + Skip: types.NewBool(false), + }, + }, + Skip: types.NewBool(false), + } + + pspec := types.PropertySpec{ + Type: "VirtualMachine", + PathSet: []string{"config.extraConfig"}, + } + + req := types.RetrieveProperties{ + This: c.ServiceContent.PropertyCollector, + SpecSet: []types.PropertyFilterSpec{ + { + ObjectSet: []types.ObjectSpec{ospec}, + PropSet: []types.PropertySpec{pspec}, + }, + }, + } + + var vms []mo.VirtualMachine + err := mo.RetrievePropertiesForRequest(ctx, c, req, &vms) + if err != nil { + return nil, err + } + + var ports []int + for _, vm := range vms { + if vm.Config == nil || vm.Config.ExtraConfig == nil { + continue + } + + options := vncOptionsFromExtraConfig(vm.Config.ExtraConfig) + if ps, ok := options["port"]; ok && ps != "" { + pi, err := strconv.Atoi(ps) + if err == nil { + ports = append(ports, pi) + } + } + } + + return ports, nil +} + +func (h *vncHost) popUnusedPort() (int, error) { + if len(h.ports) == 0 { + return 0, fmt.Errorf("no unused ports in range") + } + + // Return first port we get when iterating + var port int + for port = range h.ports { + break + } + delete(h.ports, port) + return port, nil +} + +func (h *vncHost) managementIP() (string, error) { + ctx := context.TODO() + if h.ip != "" { + return h.ip, nil + } + + ips, err := h.host.ManagementIPs(ctx) + if err != nil { + return "", err + } + + if len(ips) > 0 { + h.ip = ips[0].String() + } else { + h.ip = "" + } + + return h.ip, nil +} + +type vncResult []*vncVM + +func (vms vncResult) MarshalJSON() ([]byte, error) { + out := make(map[string]string) + for _, vm := range vms { + uri, err := vm.uri() + if err != nil { + return nil, err + } + out[vm.mvm.Name] = uri + } + return json.Marshal(out) +} + +func (vms vncResult) Write(w io.Writer) error { + for _, vm := range vms { + err := vm.write(w) + if err != nil { + return err + } + } + + return nil +} + +type vncOptions map[string]string + +var vncPrefix = "RemoteDisplay.vnc." + +func vncOptionsFromExtraConfig(ov []types.BaseOptionValue) vncOptions { + vo := make(vncOptions) + for _, b := range ov { + o := b.GetOptionValue() + if strings.HasPrefix(o.Key, vncPrefix) { + key := o.Key[len(vncPrefix):] + if key != "key" { + vo[key] = o.Value.(string) + } + } + } + return vo +} + +func (vo vncOptions) ToExtraConfig() []types.BaseOptionValue { + ov := make([]types.BaseOptionValue, 0) + for k, v := range vo { + key := vncPrefix + k + value := v + + o := types.OptionValue{ + Key: key, + Value: &value, // Pass pointer to avoid omitempty + } + + ov = append(ov, &o) + } + + // Don't know how to deal with the key option, set it to be empty... + o := types.OptionValue{ + Key: vncPrefix + "key", + Value: new(string), // Pass pointer to avoid omitempty + } + + ov = append(ov, &o) + + return ov +} diff --git a/vendor/github.com/vmware/govmomi/guest/auth_manager.go b/vendor/github.com/vmware/govmomi/guest/auth_manager.go new file mode 100644 index 0000000..ed2ebd1 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/guest/auth_manager.go @@ -0,0 +1,80 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package guest + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/types" +) + +type AuthManager struct { + types.ManagedObjectReference + + vm types.ManagedObjectReference + + c *vim25.Client +} + +func (m AuthManager) Reference() types.ManagedObjectReference { + return m.ManagedObjectReference +} + +func (m AuthManager) AcquireCredentials(ctx context.Context, requestedAuth types.BaseGuestAuthentication, sessionID int64) (types.BaseGuestAuthentication, error) { + req := types.AcquireCredentialsInGuest{ + This: m.Reference(), + Vm: m.vm, + RequestedAuth: requestedAuth, + SessionID: sessionID, + } + + res, err := methods.AcquireCredentialsInGuest(ctx, m.c, &req) + if err != nil { + return nil, err + } + + return res.Returnval, nil +} + +func (m AuthManager) ReleaseCredentials(ctx context.Context, auth types.BaseGuestAuthentication) error { + req := types.ReleaseCredentialsInGuest{ + This: m.Reference(), + Vm: m.vm, + Auth: auth, + } + + _, err := methods.ReleaseCredentialsInGuest(ctx, m.c, &req) + + return err +} + +func (m AuthManager) ValidateCredentials(ctx context.Context, auth types.BaseGuestAuthentication) error { + req := types.ValidateCredentialsInGuest{ + This: m.Reference(), + Vm: m.vm, + Auth: auth, + } + + _, err := methods.ValidateCredentialsInGuest(ctx, m.c, &req) + if err != nil { + return err + } + + return nil +} diff --git a/vendor/github.com/vmware/govmomi/guest/file_manager.go b/vendor/github.com/vmware/govmomi/guest/file_manager.go new file mode 100644 index 0000000..94b5831 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/guest/file_manager.go @@ -0,0 +1,306 @@ +/* +Copyright (c) 2015-2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package guest + +import ( + "context" + "fmt" + "net" + "net/url" + "sync" + + "github.com/vmware/govmomi/property" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type FileManager struct { + types.ManagedObjectReference + + vm types.ManagedObjectReference + + c *vim25.Client + + mu *sync.Mutex + hosts map[string]string +} + +func (m FileManager) Reference() types.ManagedObjectReference { + return m.ManagedObjectReference +} + +func (m FileManager) ChangeFileAttributes(ctx context.Context, auth types.BaseGuestAuthentication, guestFilePath string, fileAttributes types.BaseGuestFileAttributes) error { + req := types.ChangeFileAttributesInGuest{ + This: m.Reference(), + Vm: m.vm, + Auth: auth, + GuestFilePath: guestFilePath, + FileAttributes: fileAttributes, + } + + _, err := methods.ChangeFileAttributesInGuest(ctx, m.c, &req) + return err +} + +func (m FileManager) CreateTemporaryDirectory(ctx context.Context, auth types.BaseGuestAuthentication, prefix, suffix string, path string) (string, error) { + req := types.CreateTemporaryDirectoryInGuest{ + This: m.Reference(), + Vm: m.vm, + Auth: auth, + Prefix: prefix, + Suffix: suffix, + DirectoryPath: path, + } + + res, err := methods.CreateTemporaryDirectoryInGuest(ctx, m.c, &req) + if err != nil { + return "", err + } + + return res.Returnval, nil +} + +func (m FileManager) CreateTemporaryFile(ctx context.Context, auth types.BaseGuestAuthentication, prefix, suffix string, path string) (string, error) { + req := types.CreateTemporaryFileInGuest{ + This: m.Reference(), + Vm: m.vm, + Auth: auth, + Prefix: prefix, + Suffix: suffix, + DirectoryPath: path, + } + + res, err := methods.CreateTemporaryFileInGuest(ctx, m.c, &req) + if err != nil { + return "", err + } + + return res.Returnval, nil +} + +func (m FileManager) DeleteDirectory(ctx context.Context, auth types.BaseGuestAuthentication, directoryPath string, recursive bool) error { + req := types.DeleteDirectoryInGuest{ + This: m.Reference(), + Vm: m.vm, + Auth: auth, + DirectoryPath: directoryPath, + Recursive: recursive, + } + + _, err := methods.DeleteDirectoryInGuest(ctx, m.c, &req) + return err +} + +func (m FileManager) DeleteFile(ctx context.Context, auth types.BaseGuestAuthentication, filePath string) error { + req := types.DeleteFileInGuest{ + This: m.Reference(), + Vm: m.vm, + Auth: auth, + FilePath: filePath, + } + + _, err := methods.DeleteFileInGuest(ctx, m.c, &req) + return err +} + +// TransferURL rewrites the url with a valid hostname and adds the host's thumbprint. +// The InitiateFileTransfer{From,To}Guest methods return a URL with the host set to "*" when connected directly to ESX, +// but return the address of VM's runtime host when connected to vCenter. +func (m FileManager) TransferURL(ctx context.Context, u string) (*url.URL, error) { + turl, err := url.Parse(u) + if err != nil { + return nil, err + } + + if turl.Hostname() == "*" { + turl.Host = m.c.URL().Host // Also use Client's port, to support port forwarding + } + + if !m.c.IsVC() { + return turl, nil // we already connected to the ESX host and have its thumbprint + } + + name := turl.Hostname() + port := turl.Port() + + m.mu.Lock() + mname, ok := m.hosts[name] + m.mu.Unlock() + + if ok { + turl.Host = net.JoinHostPort(mname, port) + return turl, nil + } + + c := property.DefaultCollector(m.c) + + var vm mo.VirtualMachine + err = c.RetrieveOne(ctx, m.vm, []string{"name", "runtime.host"}, &vm) + if err != nil { + return nil, err + } + + if vm.Runtime.Host == nil { + return turl, nil // won't matter if the VM was powered off since the call to InitiateFileTransfer will fail + } + + props := []string{ + "name", + "runtime.connectionState", + "summary.config.sslThumbprint", + "config.virtualNicManagerInfo.netConfig", + } + + var host mo.HostSystem + err = c.RetrieveOne(ctx, *vm.Runtime.Host, props, &host) + if err != nil { + return nil, err + } + + if host.Config == nil { + return nil, fmt.Errorf("guest TransferURL failed for vm %q (%s): host %q (%s) config==nil, connectionState==%s", + vm.Name, vm.Self, + host.Name, host.Self, host.Runtime.ConnectionState) + } + + // prefer an ESX management IP, as the hostname used when adding to VC may not be valid for this client + // See also object.HostSystem.ManagementIPs which we can't use here due to import cycle + for _, nc := range host.Config.VirtualNicManagerInfo.NetConfig { + if nc.NicType != string(types.HostVirtualNicManagerNicTypeManagement) { + continue + } + for ix := range nc.CandidateVnic { + for _, selectedVnicKey := range nc.SelectedVnic { + if nc.CandidateVnic[ix].Key != selectedVnicKey { + continue + } + ip := net.ParseIP(nc.CandidateVnic[ix].Spec.Ip.IpAddress) + if ip != nil { + mname = ip.String() + m.mu.Lock() + m.hosts[name] = mname + m.mu.Unlock() + + name = mname + break + } + } + } + } + + turl.Host = net.JoinHostPort(name, port) + + m.c.SetThumbprint(turl.Host, host.Summary.Config.SslThumbprint) + + return turl, nil +} + +func (m FileManager) InitiateFileTransferFromGuest(ctx context.Context, auth types.BaseGuestAuthentication, guestFilePath string) (*types.FileTransferInformation, error) { + req := types.InitiateFileTransferFromGuest{ + This: m.Reference(), + Vm: m.vm, + Auth: auth, + GuestFilePath: guestFilePath, + } + + res, err := methods.InitiateFileTransferFromGuest(ctx, m.c, &req) + if err != nil { + return nil, err + } + + return &res.Returnval, nil +} + +func (m FileManager) InitiateFileTransferToGuest(ctx context.Context, auth types.BaseGuestAuthentication, guestFilePath string, fileAttributes types.BaseGuestFileAttributes, fileSize int64, overwrite bool) (string, error) { + req := types.InitiateFileTransferToGuest{ + This: m.Reference(), + Vm: m.vm, + Auth: auth, + GuestFilePath: guestFilePath, + FileAttributes: fileAttributes, + FileSize: fileSize, + Overwrite: overwrite, + } + + res, err := methods.InitiateFileTransferToGuest(ctx, m.c, &req) + if err != nil { + return "", err + } + + return res.Returnval, nil +} + +func (m FileManager) ListFiles(ctx context.Context, auth types.BaseGuestAuthentication, filePath string, index int32, maxResults int32, matchPattern string) (*types.GuestListFileInfo, error) { + req := types.ListFilesInGuest{ + This: m.Reference(), + Vm: m.vm, + Auth: auth, + FilePath: filePath, + Index: index, + MaxResults: maxResults, + MatchPattern: matchPattern, + } + + res, err := methods.ListFilesInGuest(ctx, m.c, &req) + if err != nil { + return nil, err + } + + return &res.Returnval, nil +} + +func (m FileManager) MakeDirectory(ctx context.Context, auth types.BaseGuestAuthentication, directoryPath string, createParentDirectories bool) error { + req := types.MakeDirectoryInGuest{ + This: m.Reference(), + Vm: m.vm, + Auth: auth, + DirectoryPath: directoryPath, + CreateParentDirectories: createParentDirectories, + } + + _, err := methods.MakeDirectoryInGuest(ctx, m.c, &req) + return err +} + +func (m FileManager) MoveDirectory(ctx context.Context, auth types.BaseGuestAuthentication, srcDirectoryPath string, dstDirectoryPath string) error { + req := types.MoveDirectoryInGuest{ + This: m.Reference(), + Vm: m.vm, + Auth: auth, + SrcDirectoryPath: srcDirectoryPath, + DstDirectoryPath: dstDirectoryPath, + } + + _, err := methods.MoveDirectoryInGuest(ctx, m.c, &req) + return err +} + +func (m FileManager) MoveFile(ctx context.Context, auth types.BaseGuestAuthentication, srcFilePath string, dstFilePath string, overwrite bool) error { + req := types.MoveFileInGuest{ + This: m.Reference(), + Vm: m.vm, + Auth: auth, + SrcFilePath: srcFilePath, + DstFilePath: dstFilePath, + Overwrite: overwrite, + } + + _, err := methods.MoveFileInGuest(ctx, m.c, &req) + return err +} diff --git a/vendor/github.com/vmware/govmomi/guest/operations_manager.go b/vendor/github.com/vmware/govmomi/guest/operations_manager.go new file mode 100644 index 0000000..fdfbc4f --- /dev/null +++ b/vendor/github.com/vmware/govmomi/guest/operations_manager.go @@ -0,0 +1,80 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package guest + +import ( + "context" + "sync" + + "github.com/vmware/govmomi/property" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type OperationsManager struct { + c *vim25.Client + vm types.ManagedObjectReference +} + +func NewOperationsManager(c *vim25.Client, vm types.ManagedObjectReference) *OperationsManager { + return &OperationsManager{c, vm} +} + +func (m OperationsManager) retrieveOne(ctx context.Context, p string, dst *mo.GuestOperationsManager) error { + pc := property.DefaultCollector(m.c) + return pc.RetrieveOne(ctx, *m.c.ServiceContent.GuestOperationsManager, []string{p}, dst) +} + +func (m OperationsManager) AuthManager(ctx context.Context) (*AuthManager, error) { + var g mo.GuestOperationsManager + + err := m.retrieveOne(ctx, "authManager", &g) + if err != nil { + return nil, err + } + + return &AuthManager{*g.AuthManager, m.vm, m.c}, nil +} + +func (m OperationsManager) FileManager(ctx context.Context) (*FileManager, error) { + var g mo.GuestOperationsManager + + err := m.retrieveOne(ctx, "fileManager", &g) + if err != nil { + return nil, err + } + + return &FileManager{ + ManagedObjectReference: *g.FileManager, + vm: m.vm, + c: m.c, + mu: new(sync.Mutex), + hosts: make(map[string]string), + }, nil +} + +func (m OperationsManager) ProcessManager(ctx context.Context) (*ProcessManager, error) { + var g mo.GuestOperationsManager + + err := m.retrieveOne(ctx, "processManager", &g) + if err != nil { + return nil, err + } + + return &ProcessManager{*g.ProcessManager, m.vm, m.c}, nil +} diff --git a/vendor/github.com/vmware/govmomi/guest/process_manager.go b/vendor/github.com/vmware/govmomi/guest/process_manager.go new file mode 100644 index 0000000..74741a1 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/guest/process_manager.go @@ -0,0 +1,101 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package guest + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/types" +) + +type ProcessManager struct { + types.ManagedObjectReference + + vm types.ManagedObjectReference + + c *vim25.Client +} + +func (m ProcessManager) Client() *vim25.Client { + return m.c +} + +func (m ProcessManager) Reference() types.ManagedObjectReference { + return m.ManagedObjectReference +} + +func (m ProcessManager) ListProcesses(ctx context.Context, auth types.BaseGuestAuthentication, pids []int64) ([]types.GuestProcessInfo, error) { + req := types.ListProcessesInGuest{ + This: m.Reference(), + Vm: m.vm, + Auth: auth, + Pids: pids, + } + + res, err := methods.ListProcessesInGuest(ctx, m.c, &req) + if err != nil { + return nil, err + } + + return res.Returnval, err +} + +func (m ProcessManager) ReadEnvironmentVariable(ctx context.Context, auth types.BaseGuestAuthentication, names []string) ([]string, error) { + req := types.ReadEnvironmentVariableInGuest{ + This: m.Reference(), + Vm: m.vm, + Auth: auth, + Names: names, + } + + res, err := methods.ReadEnvironmentVariableInGuest(ctx, m.c, &req) + if err != nil { + return nil, err + } + + return res.Returnval, err +} + +func (m ProcessManager) StartProgram(ctx context.Context, auth types.BaseGuestAuthentication, spec types.BaseGuestProgramSpec) (int64, error) { + req := types.StartProgramInGuest{ + This: m.Reference(), + Vm: m.vm, + Auth: auth, + Spec: spec, + } + + res, err := methods.StartProgramInGuest(ctx, m.c, &req) + if err != nil { + return 0, err + } + + return res.Returnval, err +} + +func (m ProcessManager) TerminateProcess(ctx context.Context, auth types.BaseGuestAuthentication, pid int64) error { + req := types.TerminateProcessInGuest{ + This: m.Reference(), + Vm: m.vm, + Auth: auth, + Pid: pid, + } + + _, err := methods.TerminateProcessInGuest(ctx, m.c, &req) + return err +} diff --git a/vendor/github.com/vmware/govmomi/guest/toolbox/client.go b/vendor/github.com/vmware/govmomi/guest/toolbox/client.go new file mode 100644 index 0000000..88c5818 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/guest/toolbox/client.go @@ -0,0 +1,302 @@ +/* +Copyright (c) 2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package toolbox + +import ( + "bytes" + "context" + "fmt" + "io" + "log" + "net/url" + "os" + "os/exec" + "strings" + "time" + + "github.com/vmware/govmomi/guest" + "github.com/vmware/govmomi/vim25/soap" + "github.com/vmware/govmomi/vim25/types" +) + +// Client attempts to expose guest.OperationsManager as idiomatic Go interfaces +type Client struct { + ProcessManager *guest.ProcessManager + FileManager *guest.FileManager + Authentication types.BaseGuestAuthentication + GuestFamily types.VirtualMachineGuestOsFamily +} + +func (c *Client) rm(ctx context.Context, path string) { + err := c.FileManager.DeleteFile(ctx, c.Authentication, path) + if err != nil { + log.Printf("rm %q: %s", path, err) + } +} + +func (c *Client) mktemp(ctx context.Context) (string, error) { + return c.FileManager.CreateTemporaryFile(ctx, c.Authentication, "govmomi-", "", "") +} + +type exitError struct { + error + exitCode int +} + +func (e *exitError) ExitCode() int { + return e.exitCode +} + +// Run implements exec.Cmd.Run over vmx guest RPC against standard vmware-tools or toolbox. +func (c *Client) Run(ctx context.Context, cmd *exec.Cmd) error { + if cmd.Stdin != nil { + dst, err := c.mktemp(ctx) + if err != nil { + return err + } + + defer c.rm(ctx, dst) + + var buf bytes.Buffer + size, err := io.Copy(&buf, cmd.Stdin) + if err != nil { + return err + } + + p := soap.DefaultUpload + p.ContentLength = size + attr := new(types.GuestPosixFileAttributes) + + err = c.Upload(ctx, &buf, dst, p, attr, true) + if err != nil { + return err + } + + cmd.Args = append(cmd.Args, "<", dst) + } + + output := []struct { + io.Writer + fd string + path string + }{ + {cmd.Stdout, "1", ""}, + {cmd.Stderr, "2", ""}, + } + + for i, out := range output { + if out.Writer == nil { + continue + } + + dst, err := c.mktemp(ctx) + if err != nil { + return err + } + + defer c.rm(ctx, dst) + + cmd.Args = append(cmd.Args, out.fd+">", dst) + output[i].path = dst + } + + path := cmd.Path + args := cmd.Args + + switch c.GuestFamily { + case types.VirtualMachineGuestOsFamilyWindowsGuest: + // Using 'cmd.exe /c' is required on Windows for i/o redirection + path = "c:\\Windows\\System32\\cmd.exe" + args = append([]string{"/c", cmd.Path}, args...) + default: + if !strings.ContainsAny(cmd.Path, "/") { + // vmware-tools requires an absolute ProgramPath + // Default to 'bash -c' as a convenience + path = "/bin/bash" + arg := "'" + strings.Join(append([]string{cmd.Path}, args...), " ") + "'" + args = []string{"-c", arg} + } + } + + spec := types.GuestProgramSpec{ + ProgramPath: path, + Arguments: strings.Join(args, " "), + EnvVariables: cmd.Env, + WorkingDirectory: cmd.Dir, + } + + pid, err := c.ProcessManager.StartProgram(ctx, c.Authentication, &spec) + if err != nil { + return err + } + + rc := 0 + for { + procs, err := c.ProcessManager.ListProcesses(ctx, c.Authentication, []int64{pid}) + if err != nil { + return err + } + + p := procs[0] + if p.EndTime == nil { + <-time.After(time.Second / 2) + continue + } + + rc = int(p.ExitCode) + + break + } + + for _, out := range output { + if out.Writer == nil { + continue + } + + f, _, err := c.Download(ctx, out.path) + if err != nil { + return err + } + + _, err = io.Copy(out.Writer, f) + _ = f.Close() + if err != nil { + return err + } + } + + if rc != 0 { + return &exitError{fmt.Errorf("%s: exit %d", cmd.Path, rc), rc} + } + + return nil +} + +// archiveReader wraps an io.ReadCloser to support streaming download +// of a guest directory, stops reading once it sees the stream trailer. +// This is only useful when guest tools is the Go toolbox. +// The trailer is required since TransferFromGuest requires a Content-Length, +// which toolbox doesn't know ahead of time as the gzip'd tarball never touches the disk. +// We opted to wrap this here for now rather than guest.FileManager so +// DownloadFile can be also be used as-is to handle this use case. +type archiveReader struct { + io.ReadCloser +} + +var ( + gzipHeader = []byte{0x1f, 0x8b, 0x08} // rfc1952 {ID1, ID2, CM} + gzipHeaderLen = len(gzipHeader) +) + +func (r *archiveReader) Read(buf []byte) (int, error) { + nr, err := r.ReadCloser.Read(buf) + + // Stop reading if the last N bytes are the gzipTrailer + if nr >= gzipHeaderLen { + if bytes.Equal(buf[nr-gzipHeaderLen:nr], gzipHeader) { + nr -= gzipHeaderLen + err = io.EOF + } + } + + return nr, err +} + +func isDir(src string) bool { + u, err := url.Parse(src) + if err != nil { + return false + } + + return strings.HasSuffix(u.Path, "/") +} + +// Download initiates a file transfer from the guest +func (c *Client) Download(ctx context.Context, src string) (io.ReadCloser, int64, error) { + vc := c.ProcessManager.Client() + + info, err := c.FileManager.InitiateFileTransferFromGuest(ctx, c.Authentication, src) + if err != nil { + return nil, 0, err + } + + u, err := c.FileManager.TransferURL(ctx, info.Url) + if err != nil { + return nil, 0, err + } + + p := soap.DefaultDownload + + f, n, err := vc.Download(ctx, u, &p) + if err != nil { + return nil, n, err + } + + if strings.HasPrefix(src, "/archive:/") || isDir(src) { + f = &archiveReader{ReadCloser: f} // look for the gzip trailer + } + + return f, n, nil +} + +// Upload transfers a file to the guest +func (c *Client) Upload(ctx context.Context, src io.Reader, dst string, p soap.Upload, attr types.BaseGuestFileAttributes, force bool) error { + vc := c.ProcessManager.Client() + + var err error + + if p.ContentLength == 0 { // Content-Length is required + switch r := src.(type) { + case *bytes.Buffer: + p.ContentLength = int64(r.Len()) + case *bytes.Reader: + p.ContentLength = int64(r.Len()) + case *strings.Reader: + p.ContentLength = int64(r.Len()) + case *os.File: + info, serr := r.Stat() + if serr != nil { + return serr + } + + p.ContentLength = info.Size() + } + + if p.ContentLength == 0 { // os.File for example could be a device (stdin) + buf := new(bytes.Buffer) + + p.ContentLength, err = io.Copy(buf, src) + if err != nil { + return err + } + + src = buf + } + } + + url, err := c.FileManager.InitiateFileTransferToGuest(ctx, c.Authentication, dst, attr, p.ContentLength, force) + if err != nil { + return err + } + + u, err := c.FileManager.TransferURL(ctx, url) + if err != nil { + return err + } + + return vc.Client.Upload(ctx, src, u, &p) +} diff --git a/vendor/github.com/vmware/govmomi/internal/methods.go b/vendor/github.com/vmware/govmomi/internal/methods.go new file mode 100644 index 0000000..95ccee8 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/internal/methods.go @@ -0,0 +1,123 @@ +/* +Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package internal + +import ( + "context" + + "github.com/vmware/govmomi/vim25/soap" +) + +type RetrieveDynamicTypeManagerBody struct { + Req *RetrieveDynamicTypeManagerRequest `xml:"urn:vim25 RetrieveDynamicTypeManager"` + Res *RetrieveDynamicTypeManagerResponse `xml:"urn:vim25 RetrieveDynamicTypeManagerResponse"` + Fault_ *soap.Fault +} + +func (b *RetrieveDynamicTypeManagerBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveDynamicTypeManager(ctx context.Context, r soap.RoundTripper, req *RetrieveDynamicTypeManagerRequest) (*RetrieveDynamicTypeManagerResponse, error) { + var reqBody, resBody RetrieveDynamicTypeManagerBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveManagedMethodExecuterBody struct { + Req *RetrieveManagedMethodExecuterRequest `xml:"urn:vim25 RetrieveManagedMethodExecuter"` + Res *RetrieveManagedMethodExecuterResponse `xml:"urn:vim25 RetrieveManagedMethodExecuterResponse"` + Fault_ *soap.Fault +} + +func (b *RetrieveManagedMethodExecuterBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveManagedMethodExecuter(ctx context.Context, r soap.RoundTripper, req *RetrieveManagedMethodExecuterRequest) (*RetrieveManagedMethodExecuterResponse, error) { + var reqBody, resBody RetrieveManagedMethodExecuterBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DynamicTypeMgrQueryMoInstancesBody struct { + Req *DynamicTypeMgrQueryMoInstancesRequest `xml:"urn:vim25 DynamicTypeMgrQueryMoInstances"` + Res *DynamicTypeMgrQueryMoInstancesResponse `xml:"urn:vim25 DynamicTypeMgrQueryMoInstancesResponse"` + Fault_ *soap.Fault +} + +func (b *DynamicTypeMgrQueryMoInstancesBody) Fault() *soap.Fault { return b.Fault_ } + +func DynamicTypeMgrQueryMoInstances(ctx context.Context, r soap.RoundTripper, req *DynamicTypeMgrQueryMoInstancesRequest) (*DynamicTypeMgrQueryMoInstancesResponse, error) { + var reqBody, resBody DynamicTypeMgrQueryMoInstancesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DynamicTypeMgrQueryTypeInfoBody struct { + Req *DynamicTypeMgrQueryTypeInfoRequest `xml:"urn:vim25 DynamicTypeMgrQueryTypeInfo"` + Res *DynamicTypeMgrQueryTypeInfoResponse `xml:"urn:vim25 DynamicTypeMgrQueryTypeInfoResponse"` + Fault_ *soap.Fault +} + +func (b *DynamicTypeMgrQueryTypeInfoBody) Fault() *soap.Fault { return b.Fault_ } + +func DynamicTypeMgrQueryTypeInfo(ctx context.Context, r soap.RoundTripper, req *DynamicTypeMgrQueryTypeInfoRequest) (*DynamicTypeMgrQueryTypeInfoResponse, error) { + var reqBody, resBody DynamicTypeMgrQueryTypeInfoBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ExecuteSoapBody struct { + Req *ExecuteSoapRequest `xml:"urn:vim25 ExecuteSoap"` + Res *ExecuteSoapResponse `xml:"urn:vim25 ExecuteSoapResponse"` + Fault_ *soap.Fault +} + +func (b *ExecuteSoapBody) Fault() *soap.Fault { return b.Fault_ } + +func ExecuteSoap(ctx context.Context, r soap.RoundTripper, req *ExecuteSoapRequest) (*ExecuteSoapResponse, error) { + var reqBody, resBody ExecuteSoapBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} diff --git a/vendor/github.com/vmware/govmomi/internal/types.go b/vendor/github.com/vmware/govmomi/internal/types.go new file mode 100644 index 0000000..b84103b --- /dev/null +++ b/vendor/github.com/vmware/govmomi/internal/types.go @@ -0,0 +1,270 @@ +/* +Copyright (c) 2014 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package internal + +import ( + "reflect" + + "github.com/vmware/govmomi/vim25/types" +) + +type DynamicTypeMgrQueryMoInstancesRequest struct { + This types.ManagedObjectReference `xml:"_this"` + FilterSpec BaseDynamicTypeMgrFilterSpec `xml:"filterSpec,omitempty,typeattr"` +} + +type DynamicTypeMgrQueryMoInstancesResponse struct { + Returnval []DynamicTypeMgrMoInstance `xml:"urn:vim25 returnval"` +} + +type DynamicTypeEnumTypeInfo struct { + types.DynamicData + + Name string `xml:"name"` + WsdlName string `xml:"wsdlName"` + Version string `xml:"version"` + Value []string `xml:"value,omitempty"` + Annotation []DynamicTypeMgrAnnotation `xml:"annotation,omitempty"` +} + +func init() { + types.Add("DynamicTypeEnumTypeInfo", reflect.TypeOf((*DynamicTypeEnumTypeInfo)(nil)).Elem()) +} + +type DynamicTypeMgrAllTypeInfoRequest struct { + types.DynamicData + + ManagedTypeInfo []DynamicTypeMgrManagedTypeInfo `xml:"managedTypeInfo,omitempty"` + EnumTypeInfo []DynamicTypeEnumTypeInfo `xml:"enumTypeInfo,omitempty"` + DataTypeInfo []DynamicTypeMgrDataTypeInfo `xml:"dataTypeInfo,omitempty"` +} + +func init() { + types.Add("DynamicTypeMgrAllTypeInfo", reflect.TypeOf((*DynamicTypeMgrAllTypeInfoRequest)(nil)).Elem()) +} + +type DynamicTypeMgrAnnotation struct { + types.DynamicData + + Name string `xml:"name"` + Parameter []string `xml:"parameter,omitempty"` +} + +func init() { + types.Add("DynamicTypeMgrAnnotation", reflect.TypeOf((*DynamicTypeMgrAnnotation)(nil)).Elem()) +} + +type DynamicTypeMgrDataTypeInfo struct { + types.DynamicData + + Name string `xml:"name"` + WsdlName string `xml:"wsdlName"` + Version string `xml:"version"` + Base []string `xml:"base,omitempty"` + Property []DynamicTypeMgrPropertyTypeInfo `xml:"property,omitempty"` + Annotation []DynamicTypeMgrAnnotation `xml:"annotation,omitempty"` +} + +func init() { + types.Add("DynamicTypeMgrDataTypeInfo", reflect.TypeOf((*DynamicTypeMgrDataTypeInfo)(nil)).Elem()) +} + +func (b *DynamicTypeMgrFilterSpec) GetDynamicTypeMgrFilterSpec() *DynamicTypeMgrFilterSpec { return b } + +type BaseDynamicTypeMgrFilterSpec interface { + GetDynamicTypeMgrFilterSpec() *DynamicTypeMgrFilterSpec +} + +type DynamicTypeMgrFilterSpec struct { + types.DynamicData +} + +func init() { + types.Add("DynamicTypeMgrFilterSpec", reflect.TypeOf((*DynamicTypeMgrFilterSpec)(nil)).Elem()) +} + +type DynamicTypeMgrManagedTypeInfo struct { + types.DynamicData + + Name string `xml:"name"` + WsdlName string `xml:"wsdlName"` + Version string `xml:"version"` + Base []string `xml:"base,omitempty"` + Property []DynamicTypeMgrPropertyTypeInfo `xml:"property,omitempty"` + Method []DynamicTypeMgrMethodTypeInfo `xml:"method,omitempty"` + Annotation []DynamicTypeMgrAnnotation `xml:"annotation,omitempty"` +} + +func init() { + types.Add("DynamicTypeMgrManagedTypeInfo", reflect.TypeOf((*DynamicTypeMgrManagedTypeInfo)(nil)).Elem()) +} + +type DynamicTypeMgrMethodTypeInfo struct { + types.DynamicData + + Name string `xml:"name"` + WsdlName string `xml:"wsdlName"` + Version string `xml:"version"` + ParamTypeInfo []DynamicTypeMgrParamTypeInfo `xml:"paramTypeInfo,omitempty"` + ReturnTypeInfo *DynamicTypeMgrParamTypeInfo `xml:"returnTypeInfo,omitempty"` + Fault []string `xml:"fault,omitempty"` + PrivId string `xml:"privId,omitempty"` + Annotation []DynamicTypeMgrAnnotation `xml:"annotation,omitempty"` +} + +func init() { + types.Add("DynamicTypeMgrMethodTypeInfo", reflect.TypeOf((*DynamicTypeMgrMethodTypeInfo)(nil)).Elem()) +} + +type DynamicTypeMgrMoFilterSpec struct { + DynamicTypeMgrFilterSpec + + Id string `xml:"id,omitempty"` + TypeSubstr string `xml:"typeSubstr,omitempty"` +} + +func init() { + types.Add("DynamicTypeMgrMoFilterSpec", reflect.TypeOf((*DynamicTypeMgrMoFilterSpec)(nil)).Elem()) +} + +type DynamicTypeMgrMoInstance struct { + types.DynamicData + + Id string `xml:"id"` + MoType string `xml:"moType"` +} + +func init() { + types.Add("DynamicTypeMgrMoInstance", reflect.TypeOf((*DynamicTypeMgrMoInstance)(nil)).Elem()) +} + +type DynamicTypeMgrParamTypeInfo struct { + types.DynamicData + + Name string `xml:"name"` + Version string `xml:"version"` + Type string `xml:"type"` + PrivId string `xml:"privId,omitempty"` + Annotation []DynamicTypeMgrAnnotation `xml:"annotation,omitempty"` +} + +func init() { + types.Add("DynamicTypeMgrParamTypeInfo", reflect.TypeOf((*DynamicTypeMgrParamTypeInfo)(nil)).Elem()) +} + +type DynamicTypeMgrPropertyTypeInfo struct { + types.DynamicData + + Name string `xml:"name"` + Version string `xml:"version"` + Type string `xml:"type"` + PrivId string `xml:"privId,omitempty"` + MsgIdFormat string `xml:"msgIdFormat,omitempty"` + Annotation []DynamicTypeMgrAnnotation `xml:"annotation,omitempty"` +} + +type DynamicTypeMgrQueryTypeInfoRequest struct { + This types.ManagedObjectReference `xml:"_this"` + FilterSpec BaseDynamicTypeMgrFilterSpec `xml:"filterSpec,omitempty,typeattr"` +} + +type DynamicTypeMgrQueryTypeInfoResponse struct { + Returnval DynamicTypeMgrAllTypeInfoRequest `xml:"urn:vim25 returnval"` +} + +func init() { + types.Add("DynamicTypeMgrPropertyTypeInfo", reflect.TypeOf((*DynamicTypeMgrPropertyTypeInfo)(nil)).Elem()) +} + +type DynamicTypeMgrTypeFilterSpec struct { + DynamicTypeMgrFilterSpec + + TypeSubstr string `xml:"typeSubstr,omitempty"` +} + +func init() { + types.Add("DynamicTypeMgrTypeFilterSpec", reflect.TypeOf((*DynamicTypeMgrTypeFilterSpec)(nil)).Elem()) +} + +type ReflectManagedMethodExecuterSoapArgument struct { + types.DynamicData + + Name string `xml:"name"` + Val string `xml:"val"` +} + +func init() { + types.Add("ReflectManagedMethodExecuterSoapArgument", reflect.TypeOf((*ReflectManagedMethodExecuterSoapArgument)(nil)).Elem()) +} + +type ReflectManagedMethodExecuterSoapFault struct { + types.DynamicData + + FaultMsg string `xml:"faultMsg"` + FaultDetail string `xml:"faultDetail,omitempty"` +} + +func init() { + types.Add("ReflectManagedMethodExecuterSoapFault", reflect.TypeOf((*ReflectManagedMethodExecuterSoapFault)(nil)).Elem()) +} + +type ReflectManagedMethodExecuterSoapResult struct { + types.DynamicData + + Response string `xml:"response,omitempty"` + Fault *ReflectManagedMethodExecuterSoapFault `xml:"fault,omitempty"` +} + +type RetrieveDynamicTypeManagerRequest struct { + This types.ManagedObjectReference `xml:"_this"` +} + +type RetrieveDynamicTypeManagerResponse struct { + Returnval *InternalDynamicTypeManager `xml:"urn:vim25 returnval"` +} + +type RetrieveManagedMethodExecuterRequest struct { + This types.ManagedObjectReference `xml:"_this"` +} + +func init() { + types.Add("RetrieveManagedMethodExecuter", reflect.TypeOf((*RetrieveManagedMethodExecuterRequest)(nil)).Elem()) +} + +type RetrieveManagedMethodExecuterResponse struct { + Returnval *ReflectManagedMethodExecuter `xml:"urn:vim25 returnval"` +} + +type InternalDynamicTypeManager struct { + types.ManagedObjectReference +} + +type ReflectManagedMethodExecuter struct { + types.ManagedObjectReference +} + +type ExecuteSoapRequest struct { + This types.ManagedObjectReference `xml:"_this"` + Moid string `xml:"moid"` + Version string `xml:"version"` + Method string `xml:"method"` + Argument []ReflectManagedMethodExecuterSoapArgument `xml:"argument,omitempty"` +} + +type ExecuteSoapResponse struct { + Returnval *ReflectManagedMethodExecuterSoapResult `xml:"urn:vim25 returnval"` +} diff --git a/vendor/github.com/vmware/govmomi/list/lister.go b/vendor/github.com/vmware/govmomi/list/lister.go new file mode 100644 index 0000000..9a4caed --- /dev/null +++ b/vendor/github.com/vmware/govmomi/list/lister.go @@ -0,0 +1,628 @@ +/* +Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package list + +import ( + "context" + "fmt" + "path" + "reflect" + + "github.com/vmware/govmomi/property" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/soap" + "github.com/vmware/govmomi/vim25/types" +) + +type Element struct { + Path string + Object mo.Reference +} + +func (e Element) String() string { + return fmt.Sprintf("%s @ %s", e.Object.Reference(), e.Path) +} + +func ToElement(r mo.Reference, prefix string) Element { + var name string + + // Comments about types to be expected in folders copied from the + // documentation of the Folder managed object: + // http://pubs.vmware.com/vsphere-55/topic/com.vmware.wssdk.apiref.doc/vim.Folder.html + switch m := r.(type) { + case mo.Folder: + name = m.Name + case mo.StoragePod: + name = m.Name + + // { "vim.Datacenter" } - Identifies the root folder and its descendant + // folders. Data center folders can contain child data center folders and + // Datacenter managed objects. Datacenter objects contain virtual machine, + // compute resource, network entity, and datastore folders. + case mo.Datacenter: + name = m.Name + + // { "vim.Virtualmachine", "vim.VirtualApp" } - Identifies a virtual machine + // folder. A virtual machine folder may contain child virtual machine + // folders. It also can contain VirtualMachine managed objects, templates, + // and VirtualApp managed objects. + case mo.VirtualMachine: + name = m.Name + case mo.VirtualApp: + name = m.Name + + // { "vim.ComputeResource" } - Identifies a compute resource + // folder, which contains child compute resource folders and ComputeResource + // hierarchies. + case mo.ComputeResource: + name = m.Name + case mo.ClusterComputeResource: + name = m.Name + case mo.HostSystem: + name = m.Name + case mo.ResourcePool: + name = m.Name + + // { "vim.Network" } - Identifies a network entity folder. + // Network entity folders on a vCenter Server can contain Network, + // DistributedVirtualSwitch, and DistributedVirtualPortgroup managed objects. + // Network entity folders on an ESXi host can contain only Network objects. + case mo.Network: + name = m.Name + case mo.OpaqueNetwork: + name = m.Name + case mo.DistributedVirtualSwitch: + name = m.Name + case mo.DistributedVirtualPortgroup: + name = m.Name + case mo.VmwareDistributedVirtualSwitch: + name = m.Name + + // { "vim.Datastore" } - Identifies a datastore folder. Datastore folders can + // contain child datastore folders and Datastore managed objects. + case mo.Datastore: + name = m.Name + + default: + panic("not implemented for type " + reflect.TypeOf(r).String()) + } + + e := Element{ + Path: path.Join(prefix, name), + Object: r, + } + + return e +} + +type Lister struct { + Collector *property.Collector + Reference types.ManagedObjectReference + Prefix string + All bool +} + +func (l Lister) retrieveProperties(ctx context.Context, req types.RetrieveProperties, dst *[]interface{}) error { + res, err := l.Collector.RetrieveProperties(ctx, req) + if err != nil { + return err + } + + // Instead of using mo.LoadRetrievePropertiesResponse, use a custom loop to + // iterate over the results and ignore entries that have properties that + // could not be retrieved (a non-empty `missingSet` property). Since the + // returned objects are enumerated by vSphere in the first place, any object + // that has a non-empty `missingSet` property is indicative of a race + // condition in vSphere where the object was enumerated initially, but was + // removed before its properties could be collected. + for _, p := range res.Returnval { + v, err := mo.ObjectContentToType(p) + if err != nil { + // Ignore fault if it is ManagedObjectNotFound + if soap.IsVimFault(err) { + switch soap.ToVimFault(err).(type) { + case *types.ManagedObjectNotFound: + continue + } + } + + return err + } + + *dst = append(*dst, v) + } + + return nil +} + +func (l Lister) List(ctx context.Context) ([]Element, error) { + switch l.Reference.Type { + case "Folder", "StoragePod": + return l.ListFolder(ctx) + case "Datacenter": + return l.ListDatacenter(ctx) + case "ComputeResource", "ClusterComputeResource": + // Treat ComputeResource and ClusterComputeResource as one and the same. + // It doesn't matter from the perspective of the lister. + return l.ListComputeResource(ctx) + case "ResourcePool": + return l.ListResourcePool(ctx) + case "HostSystem": + return l.ListHostSystem(ctx) + case "VirtualApp": + return l.ListVirtualApp(ctx) + case "VmwareDistributedVirtualSwitch", "DistributedVirtualSwitch": + return l.ListDistributedVirtualSwitch(ctx) + default: + return nil, fmt.Errorf("cannot traverse type " + l.Reference.Type) + } +} + +func (l Lister) ListFolder(ctx context.Context) ([]Element, error) { + spec := types.PropertyFilterSpec{ + ObjectSet: []types.ObjectSpec{ + { + Obj: l.Reference, + SelectSet: []types.BaseSelectionSpec{ + &types.TraversalSpec{ + Path: "childEntity", + Skip: types.NewBool(false), + Type: "Folder", + }, + }, + Skip: types.NewBool(true), + }, + }, + } + + // Retrieve all objects that we can deal with + childTypes := []string{ + "Folder", + "Datacenter", + "VirtualApp", + "VirtualMachine", + "Network", + "ComputeResource", + "ClusterComputeResource", + "Datastore", + "DistributedVirtualSwitch", + } + + for _, t := range childTypes { + pspec := types.PropertySpec{ + Type: t, + } + + if l.All { + pspec.All = types.NewBool(true) + } else { + pspec.PathSet = []string{"name"} + + // Additional basic properties. + switch t { + case "Folder": + pspec.PathSet = append(pspec.PathSet, "childType") + case "ComputeResource", "ClusterComputeResource": + // The ComputeResource and ClusterComputeResource are dereferenced in + // the ResourcePoolFlag. Make sure they always have their resourcePool + // field populated. + pspec.PathSet = append(pspec.PathSet, "resourcePool") + } + } + + spec.PropSet = append(spec.PropSet, pspec) + } + + req := types.RetrieveProperties{ + SpecSet: []types.PropertyFilterSpec{spec}, + } + + var dst []interface{} + + err := l.retrieveProperties(ctx, req, &dst) + if err != nil { + return nil, err + } + + es := []Element{} + for _, v := range dst { + es = append(es, ToElement(v.(mo.Reference), l.Prefix)) + } + + return es, nil +} + +func (l Lister) ListDatacenter(ctx context.Context) ([]Element, error) { + ospec := types.ObjectSpec{ + Obj: l.Reference, + Skip: types.NewBool(true), + } + + // Include every datastore folder in the select set + fields := []string{ + "vmFolder", + "hostFolder", + "datastoreFolder", + "networkFolder", + } + + for _, f := range fields { + tspec := types.TraversalSpec{ + Path: f, + Skip: types.NewBool(false), + Type: "Datacenter", + } + + ospec.SelectSet = append(ospec.SelectSet, &tspec) + } + + pspec := types.PropertySpec{ + Type: "Folder", + } + + if l.All { + pspec.All = types.NewBool(true) + } else { + pspec.PathSet = []string{"name", "childType"} + } + + req := types.RetrieveProperties{ + SpecSet: []types.PropertyFilterSpec{ + { + ObjectSet: []types.ObjectSpec{ospec}, + PropSet: []types.PropertySpec{pspec}, + }, + }, + } + + var dst []interface{} + + err := l.retrieveProperties(ctx, req, &dst) + if err != nil { + return nil, err + } + + es := []Element{} + for _, v := range dst { + es = append(es, ToElement(v.(mo.Reference), l.Prefix)) + } + + return es, nil +} + +func (l Lister) ListComputeResource(ctx context.Context) ([]Element, error) { + ospec := types.ObjectSpec{ + Obj: l.Reference, + Skip: types.NewBool(true), + } + + fields := []string{ + "host", + "resourcePool", + } + + for _, f := range fields { + tspec := types.TraversalSpec{ + Path: f, + Skip: types.NewBool(false), + Type: "ComputeResource", + } + + ospec.SelectSet = append(ospec.SelectSet, &tspec) + } + + childTypes := []string{ + "HostSystem", + "ResourcePool", + } + + var pspecs []types.PropertySpec + for _, t := range childTypes { + pspec := types.PropertySpec{ + Type: t, + } + + if l.All { + pspec.All = types.NewBool(true) + } else { + pspec.PathSet = []string{"name"} + } + + pspecs = append(pspecs, pspec) + } + + req := types.RetrieveProperties{ + SpecSet: []types.PropertyFilterSpec{ + { + ObjectSet: []types.ObjectSpec{ospec}, + PropSet: pspecs, + }, + }, + } + + var dst []interface{} + + err := l.retrieveProperties(ctx, req, &dst) + if err != nil { + return nil, err + } + + es := []Element{} + for _, v := range dst { + es = append(es, ToElement(v.(mo.Reference), l.Prefix)) + } + + return es, nil +} + +func (l Lister) ListResourcePool(ctx context.Context) ([]Element, error) { + ospec := types.ObjectSpec{ + Obj: l.Reference, + Skip: types.NewBool(true), + } + + fields := []string{ + "resourcePool", + } + + for _, f := range fields { + tspec := types.TraversalSpec{ + Path: f, + Skip: types.NewBool(false), + Type: "ResourcePool", + } + + ospec.SelectSet = append(ospec.SelectSet, &tspec) + } + + childTypes := []string{ + "ResourcePool", + } + + var pspecs []types.PropertySpec + for _, t := range childTypes { + pspec := types.PropertySpec{ + Type: t, + } + + if l.All { + pspec.All = types.NewBool(true) + } else { + pspec.PathSet = []string{"name"} + } + + pspecs = append(pspecs, pspec) + } + + req := types.RetrieveProperties{ + SpecSet: []types.PropertyFilterSpec{ + { + ObjectSet: []types.ObjectSpec{ospec}, + PropSet: pspecs, + }, + }, + } + + var dst []interface{} + + err := l.retrieveProperties(ctx, req, &dst) + if err != nil { + return nil, err + } + + es := []Element{} + for _, v := range dst { + es = append(es, ToElement(v.(mo.Reference), l.Prefix)) + } + + return es, nil +} + +func (l Lister) ListHostSystem(ctx context.Context) ([]Element, error) { + ospec := types.ObjectSpec{ + Obj: l.Reference, + Skip: types.NewBool(true), + } + + fields := []string{ + "datastore", + "network", + "vm", + } + + for _, f := range fields { + tspec := types.TraversalSpec{ + Path: f, + Skip: types.NewBool(false), + Type: "HostSystem", + } + + ospec.SelectSet = append(ospec.SelectSet, &tspec) + } + + childTypes := []string{ + "Datastore", + "Network", + "VirtualMachine", + } + + var pspecs []types.PropertySpec + for _, t := range childTypes { + pspec := types.PropertySpec{ + Type: t, + } + + if l.All { + pspec.All = types.NewBool(true) + } else { + pspec.PathSet = []string{"name"} + } + + pspecs = append(pspecs, pspec) + } + + req := types.RetrieveProperties{ + SpecSet: []types.PropertyFilterSpec{ + { + ObjectSet: []types.ObjectSpec{ospec}, + PropSet: pspecs, + }, + }, + } + + var dst []interface{} + + err := l.retrieveProperties(ctx, req, &dst) + if err != nil { + return nil, err + } + + es := []Element{} + for _, v := range dst { + es = append(es, ToElement(v.(mo.Reference), l.Prefix)) + } + + return es, nil +} + +func (l Lister) ListDistributedVirtualSwitch(ctx context.Context) ([]Element, error) { + ospec := types.ObjectSpec{ + Obj: l.Reference, + Skip: types.NewBool(true), + } + + fields := []string{ + "portgroup", + } + + for _, f := range fields { + tspec := types.TraversalSpec{ + Path: f, + Skip: types.NewBool(false), + Type: "DistributedVirtualSwitch", + } + + ospec.SelectSet = append(ospec.SelectSet, &tspec) + } + + childTypes := []string{ + "DistributedVirtualPortgroup", + } + + var pspecs []types.PropertySpec + for _, t := range childTypes { + pspec := types.PropertySpec{ + Type: t, + } + + if l.All { + pspec.All = types.NewBool(true) + } else { + pspec.PathSet = []string{"name"} + } + + pspecs = append(pspecs, pspec) + } + + req := types.RetrieveProperties{ + SpecSet: []types.PropertyFilterSpec{ + { + ObjectSet: []types.ObjectSpec{ospec}, + PropSet: pspecs, + }, + }, + } + + var dst []interface{} + + err := l.retrieveProperties(ctx, req, &dst) + if err != nil { + return nil, err + } + + es := []Element{} + for _, v := range dst { + es = append(es, ToElement(v.(mo.Reference), l.Prefix)) + } + + return es, nil +} + +func (l Lister) ListVirtualApp(ctx context.Context) ([]Element, error) { + ospec := types.ObjectSpec{ + Obj: l.Reference, + Skip: types.NewBool(true), + } + + fields := []string{ + "resourcePool", + "vm", + } + + for _, f := range fields { + tspec := types.TraversalSpec{ + Path: f, + Skip: types.NewBool(false), + Type: "VirtualApp", + } + + ospec.SelectSet = append(ospec.SelectSet, &tspec) + } + + childTypes := []string{ + "ResourcePool", + "VirtualMachine", + } + + var pspecs []types.PropertySpec + for _, t := range childTypes { + pspec := types.PropertySpec{ + Type: t, + } + + if l.All { + pspec.All = types.NewBool(true) + } else { + pspec.PathSet = []string{"name"} + } + + pspecs = append(pspecs, pspec) + } + + req := types.RetrieveProperties{ + SpecSet: []types.PropertyFilterSpec{ + { + ObjectSet: []types.ObjectSpec{ospec}, + PropSet: pspecs, + }, + }, + } + + var dst []interface{} + + err := l.retrieveProperties(ctx, req, &dst) + if err != nil { + return nil, err + } + + es := []Element{} + for _, v := range dst { + es = append(es, ToElement(v.(mo.Reference), l.Prefix)) + } + + return es, nil +} diff --git a/vendor/github.com/vmware/govmomi/list/path.go b/vendor/github.com/vmware/govmomi/list/path.go new file mode 100644 index 0000000..f3a1065 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/list/path.go @@ -0,0 +1,44 @@ +/* +Copyright (c) 2014 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package list + +import ( + "path" + "strings" +) + +func ToParts(p string) []string { + p = path.Clean(p) + if p == "/" { + return []string{} + } + + if len(p) > 0 { + // Prefix ./ if relative + if p[0] != '/' && p[0] != '.' { + p = "./" + p + } + } + + ps := strings.Split(p, "/") + if ps[0] == "" { + // Start at root + ps = ps[1:] + } + + return ps +} diff --git a/vendor/github.com/vmware/govmomi/nfc/lease.go b/vendor/github.com/vmware/govmomi/nfc/lease.go new file mode 100644 index 0000000..d6c90ac --- /dev/null +++ b/vendor/github.com/vmware/govmomi/nfc/lease.go @@ -0,0 +1,233 @@ +/* +Copyright (c) 2015-2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package nfc + +import ( + "context" + "errors" + "fmt" + "io" + "path" + + "github.com/vmware/govmomi/property" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/soap" + "github.com/vmware/govmomi/vim25/types" +) + +type Lease struct { + types.ManagedObjectReference + + c *vim25.Client +} + +func NewLease(c *vim25.Client, ref types.ManagedObjectReference) *Lease { + return &Lease{ref, c} +} + +// Abort wraps methods.Abort +func (l *Lease) Abort(ctx context.Context, fault *types.LocalizedMethodFault) error { + req := types.HttpNfcLeaseAbort{ + This: l.Reference(), + Fault: fault, + } + + _, err := methods.HttpNfcLeaseAbort(ctx, l.c, &req) + if err != nil { + return err + } + + return nil +} + +// Complete wraps methods.Complete +func (l *Lease) Complete(ctx context.Context) error { + req := types.HttpNfcLeaseComplete{ + This: l.Reference(), + } + + _, err := methods.HttpNfcLeaseComplete(ctx, l.c, &req) + if err != nil { + return err + } + + return nil +} + +// GetManifest wraps methods.GetManifest +func (l *Lease) GetManifest(ctx context.Context) error { + req := types.HttpNfcLeaseGetManifest{ + This: l.Reference(), + } + + _, err := methods.HttpNfcLeaseGetManifest(ctx, l.c, &req) + if err != nil { + return err + } + + return nil +} + +// Progress wraps methods.Progress +func (l *Lease) Progress(ctx context.Context, percent int32) error { + req := types.HttpNfcLeaseProgress{ + This: l.Reference(), + Percent: percent, + } + + _, err := methods.HttpNfcLeaseProgress(ctx, l.c, &req) + if err != nil { + return err + } + + return nil +} + +type LeaseInfo struct { + types.HttpNfcLeaseInfo + + Items []FileItem +} + +func (l *Lease) newLeaseInfo(li *types.HttpNfcLeaseInfo, items []types.OvfFileItem) (*LeaseInfo, error) { + info := &LeaseInfo{ + HttpNfcLeaseInfo: *li, + } + + for _, device := range li.DeviceUrl { + u, err := l.c.ParseURL(device.Url) + if err != nil { + return nil, err + } + + if device.SslThumbprint != "" { + // TODO: prefer host management IP + l.c.SetThumbprint(u.Host, device.SslThumbprint) + } + + if len(items) == 0 { + // this is an export + item := types.OvfFileItem{ + DeviceId: device.Key, + Path: device.TargetId, + Size: device.FileSize, + } + + if item.Size == 0 { + item.Size = li.TotalDiskCapacityInKB * 1024 + } + + if item.Path == "" { + item.Path = path.Base(device.Url) + } + + info.Items = append(info.Items, NewFileItem(u, item)) + + continue + } + + // this is an import + for _, item := range items { + if device.ImportKey == item.DeviceId { + info.Items = append(info.Items, NewFileItem(u, item)) + break + } + } + } + + return info, nil +} + +func (l *Lease) Wait(ctx context.Context, items []types.OvfFileItem) (*LeaseInfo, error) { + var lease mo.HttpNfcLease + + pc := property.DefaultCollector(l.c) + err := property.Wait(ctx, pc, l.Reference(), []string{"state", "info", "error"}, func(pc []types.PropertyChange) bool { + done := false + + for _, c := range pc { + if c.Val == nil { + continue + } + + switch c.Name { + case "error": + val := c.Val.(types.LocalizedMethodFault) + lease.Error = &val + done = true + case "info": + val := c.Val.(types.HttpNfcLeaseInfo) + lease.Info = &val + case "state": + lease.State = c.Val.(types.HttpNfcLeaseState) + if lease.State != types.HttpNfcLeaseStateInitializing { + done = true + } + } + } + + return done + }) + + if err != nil { + return nil, err + } + + if lease.State == types.HttpNfcLeaseStateReady { + return l.newLeaseInfo(lease.Info, items) + } + + if lease.Error != nil { + return nil, errors.New(lease.Error.LocalizedMessage) + } + + return nil, fmt.Errorf("unexpected nfc lease state: %s", lease.State) +} + +func (l *Lease) StartUpdater(ctx context.Context, info *LeaseInfo) *LeaseUpdater { + return newLeaseUpdater(ctx, l, info) +} + +func (l *Lease) Upload(ctx context.Context, item FileItem, f io.Reader, opts soap.Upload) error { + if opts.Progress == nil { + opts.Progress = item + } + + // Non-disk files (such as .iso) use the PUT method. + // Overwrite: t header is also required in this case (ovftool does the same) + if item.Create { + opts.Method = "PUT" + opts.Headers = map[string]string{ + "Overwrite": "t", + } + } else { + opts.Method = "POST" + opts.Type = "application/x-vnd.vmware-streamVmdk" + } + + return l.c.Upload(ctx, f, item.URL, &opts) +} + +func (l *Lease) DownloadFile(ctx context.Context, file string, item FileItem, opts soap.Download) error { + if opts.Progress == nil { + opts.Progress = item + } + + return l.c.DownloadFile(ctx, file, item.URL, &opts) +} diff --git a/vendor/github.com/vmware/govmomi/nfc/lease_updater.go b/vendor/github.com/vmware/govmomi/nfc/lease_updater.go new file mode 100644 index 0000000..02ce9cf --- /dev/null +++ b/vendor/github.com/vmware/govmomi/nfc/lease_updater.go @@ -0,0 +1,146 @@ +/* +Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package nfc + +import ( + "context" + "log" + "net/url" + "sync" + "sync/atomic" + "time" + + "github.com/vmware/govmomi/vim25/progress" + "github.com/vmware/govmomi/vim25/types" +) + +type FileItem struct { + types.OvfFileItem + URL *url.URL + + ch chan progress.Report +} + +func NewFileItem(u *url.URL, item types.OvfFileItem) FileItem { + return FileItem{ + OvfFileItem: item, + URL: u, + ch: make(chan progress.Report), + } +} + +func (o FileItem) Sink() chan<- progress.Report { + return o.ch +} + +// File converts the FileItem.OvfFileItem to an OvfFile +func (o FileItem) File() types.OvfFile { + return types.OvfFile{ + DeviceId: o.DeviceId, + Path: o.Path, + Size: o.Size, + } +} + +type LeaseUpdater struct { + pos int64 // Number of bytes (keep first to ensure 64 bit alignment) + total int64 // Total number of bytes (keep first to ensure 64 bit alignment) + + lease *Lease + + done chan struct{} // When lease updater should stop + + wg sync.WaitGroup // Track when update loop is done +} + +func newLeaseUpdater(ctx context.Context, lease *Lease, info *LeaseInfo) *LeaseUpdater { + l := LeaseUpdater{ + lease: lease, + + done: make(chan struct{}), + } + + for _, item := range info.Items { + l.total += item.Size + go l.waitForProgress(item) + } + + // Kickstart update loop + l.wg.Add(1) + go l.run() + + return &l +} + +func (l *LeaseUpdater) waitForProgress(item FileItem) { + var pos, total int64 + + total = item.Size + + for { + select { + case <-l.done: + return + case p, ok := <-item.ch: + // Return in case of error + if ok && p.Error() != nil { + return + } + + if !ok { + // Last element on the channel, add to total + atomic.AddInt64(&l.pos, total-pos) + return + } + + // Approximate progress in number of bytes + x := int64(float32(total) * (p.Percentage() / 100.0)) + atomic.AddInt64(&l.pos, x-pos) + pos = x + } + } +} + +func (l *LeaseUpdater) run() { + defer l.wg.Done() + + tick := time.NewTicker(2 * time.Second) + defer tick.Stop() + + for { + select { + case <-l.done: + return + case <-tick.C: + // From the vim api HttpNfcLeaseProgress(percent) doc, percent == + // "Completion status represented as an integer in the 0-100 range." + // Always report the current value of percent, as it will renew the + // lease even if the value hasn't changed or is 0. + percent := int32(float32(100*atomic.LoadInt64(&l.pos)) / float32(l.total)) + err := l.lease.Progress(context.TODO(), percent) + if err != nil { + log.Printf("NFC lease progress: %s", err) + return + } + } + } +} + +func (l *LeaseUpdater) Done() { + close(l.done) + l.wg.Wait() +} diff --git a/vendor/github.com/vmware/govmomi/object/authorization_manager.go b/vendor/github.com/vmware/govmomi/object/authorization_manager.go new file mode 100644 index 0000000..b703258 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/authorization_manager.go @@ -0,0 +1,174 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type AuthorizationManager struct { + Common +} + +func NewAuthorizationManager(c *vim25.Client) *AuthorizationManager { + m := AuthorizationManager{ + Common: NewCommon(c, *c.ServiceContent.AuthorizationManager), + } + + return &m +} + +type AuthorizationRoleList []types.AuthorizationRole + +func (l AuthorizationRoleList) ById(id int32) *types.AuthorizationRole { + for _, role := range l { + if role.RoleId == id { + return &role + } + } + + return nil +} + +func (l AuthorizationRoleList) ByName(name string) *types.AuthorizationRole { + for _, role := range l { + if role.Name == name { + return &role + } + } + + return nil +} + +func (m AuthorizationManager) RoleList(ctx context.Context) (AuthorizationRoleList, error) { + var am mo.AuthorizationManager + + err := m.Properties(ctx, m.Reference(), []string{"roleList"}, &am) + if err != nil { + return nil, err + } + + return AuthorizationRoleList(am.RoleList), nil +} + +func (m AuthorizationManager) RetrieveEntityPermissions(ctx context.Context, entity types.ManagedObjectReference, inherited bool) ([]types.Permission, error) { + req := types.RetrieveEntityPermissions{ + This: m.Reference(), + Entity: entity, + Inherited: inherited, + } + + res, err := methods.RetrieveEntityPermissions(ctx, m.Client(), &req) + if err != nil { + return nil, err + } + + return res.Returnval, nil +} + +func (m AuthorizationManager) RemoveEntityPermission(ctx context.Context, entity types.ManagedObjectReference, user string, isGroup bool) error { + req := types.RemoveEntityPermission{ + This: m.Reference(), + Entity: entity, + User: user, + IsGroup: isGroup, + } + + _, err := methods.RemoveEntityPermission(ctx, m.Client(), &req) + return err +} + +func (m AuthorizationManager) SetEntityPermissions(ctx context.Context, entity types.ManagedObjectReference, permission []types.Permission) error { + req := types.SetEntityPermissions{ + This: m.Reference(), + Entity: entity, + Permission: permission, + } + + _, err := methods.SetEntityPermissions(ctx, m.Client(), &req) + return err +} + +func (m AuthorizationManager) RetrieveRolePermissions(ctx context.Context, id int32) ([]types.Permission, error) { + req := types.RetrieveRolePermissions{ + This: m.Reference(), + RoleId: id, + } + + res, err := methods.RetrieveRolePermissions(ctx, m.Client(), &req) + if err != nil { + return nil, err + } + + return res.Returnval, nil +} + +func (m AuthorizationManager) RetrieveAllPermissions(ctx context.Context) ([]types.Permission, error) { + req := types.RetrieveAllPermissions{ + This: m.Reference(), + } + + res, err := methods.RetrieveAllPermissions(ctx, m.Client(), &req) + if err != nil { + return nil, err + } + + return res.Returnval, nil +} + +func (m AuthorizationManager) AddRole(ctx context.Context, name string, ids []string) (int32, error) { + req := types.AddAuthorizationRole{ + This: m.Reference(), + Name: name, + PrivIds: ids, + } + + res, err := methods.AddAuthorizationRole(ctx, m.Client(), &req) + if err != nil { + return -1, err + } + + return res.Returnval, nil +} + +func (m AuthorizationManager) RemoveRole(ctx context.Context, id int32, failIfUsed bool) error { + req := types.RemoveAuthorizationRole{ + This: m.Reference(), + RoleId: id, + FailIfUsed: failIfUsed, + } + + _, err := methods.RemoveAuthorizationRole(ctx, m.Client(), &req) + return err +} + +func (m AuthorizationManager) UpdateRole(ctx context.Context, id int32, name string, ids []string) error { + req := types.UpdateAuthorizationRole{ + This: m.Reference(), + RoleId: id, + NewName: name, + PrivIds: ids, + } + + _, err := methods.UpdateAuthorizationRole(ctx, m.Client(), &req) + return err +} diff --git a/vendor/github.com/vmware/govmomi/object/authorization_manager_internal.go b/vendor/github.com/vmware/govmomi/object/authorization_manager_internal.go new file mode 100644 index 0000000..4fa520f --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/authorization_manager_internal.go @@ -0,0 +1,86 @@ +/* +Copyright (c) 2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/vim25/soap" + "github.com/vmware/govmomi/vim25/types" +) + +type DisabledMethodRequest struct { + Method string `xml:"method"` + Reason string `xml:"reasonId"` +} + +type disableMethodsRequest struct { + This types.ManagedObjectReference `xml:"_this"` + Entity []types.ManagedObjectReference `xml:"entity"` + Method []DisabledMethodRequest `xml:"method"` + Source string `xml:"sourceId"` + Scope bool `xml:"sessionScope,omitempty"` +} + +type disableMethodsBody struct { + Req *disableMethodsRequest `xml:"urn:internalvim25 DisableMethods,omitempty"` + Res interface{} `xml:"urn:vim25 DisableMethodsResponse,omitempty"` + Err *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *disableMethodsBody) Fault() *soap.Fault { return b.Err } + +func (m AuthorizationManager) DisableMethods(ctx context.Context, entity []types.ManagedObjectReference, method []DisabledMethodRequest, source string) error { + var reqBody, resBody disableMethodsBody + + reqBody.Req = &disableMethodsRequest{ + This: m.Reference(), + Entity: entity, + Method: method, + Source: source, + } + + return m.Client().RoundTrip(ctx, &reqBody, &resBody) +} + +type enableMethodsRequest struct { + This types.ManagedObjectReference `xml:"_this"` + Entity []types.ManagedObjectReference `xml:"entity"` + Method []string `xml:"method"` + Source string `xml:"sourceId"` +} + +type enableMethodsBody struct { + Req *enableMethodsRequest `xml:"urn:internalvim25 EnableMethods,omitempty"` + Res interface{} `xml:"urn:vim25 EnableMethodsResponse,omitempty"` + Err *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *enableMethodsBody) Fault() *soap.Fault { return b.Err } + +func (m AuthorizationManager) EnableMethods(ctx context.Context, entity []types.ManagedObjectReference, method []string, source string) error { + var reqBody, resBody enableMethodsBody + + reqBody.Req = &enableMethodsRequest{ + This: m.Reference(), + Entity: entity, + Method: method, + Source: source, + } + + return m.Client().RoundTrip(ctx, &reqBody, &resBody) +} diff --git a/vendor/github.com/vmware/govmomi/object/cluster_compute_resource.go b/vendor/github.com/vmware/govmomi/object/cluster_compute_resource.go new file mode 100644 index 0000000..018372d --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/cluster_compute_resource.go @@ -0,0 +1,103 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type ClusterComputeResource struct { + ComputeResource +} + +func NewClusterComputeResource(c *vim25.Client, ref types.ManagedObjectReference) *ClusterComputeResource { + return &ClusterComputeResource{ + ComputeResource: *NewComputeResource(c, ref), + } +} + +func (c ClusterComputeResource) Configuration(ctx context.Context) (*types.ClusterConfigInfoEx, error) { + var obj mo.ClusterComputeResource + + err := c.Properties(ctx, c.Reference(), []string{"configurationEx"}, &obj) + if err != nil { + return nil, err + } + + return obj.ConfigurationEx.(*types.ClusterConfigInfoEx), nil +} + +func (c ClusterComputeResource) AddHost(ctx context.Context, spec types.HostConnectSpec, asConnected bool, license *string, resourcePool *types.ManagedObjectReference) (*Task, error) { + req := types.AddHost_Task{ + This: c.Reference(), + Spec: spec, + AsConnected: asConnected, + } + + if license != nil { + req.License = *license + } + + if resourcePool != nil { + req.ResourcePool = resourcePool + } + + res, err := methods.AddHost_Task(ctx, c.c, &req) + if err != nil { + return nil, err + } + + return NewTask(c.c, res.Returnval), nil +} + +func (c ClusterComputeResource) MoveInto(ctx context.Context, hosts ...*HostSystem) (*Task, error) { + req := types.MoveInto_Task{ + This: c.Reference(), + } + + hostReferences := make([]types.ManagedObjectReference, len(hosts)) + for i, host := range hosts { + hostReferences[i] = host.Reference() + } + req.Host = hostReferences + + res, err := methods.MoveInto_Task(ctx, c.c, &req) + if err != nil { + return nil, err + } + + return NewTask(c.c, res.Returnval), nil +} + +func (c ClusterComputeResource) PlaceVm(ctx context.Context, spec types.PlacementSpec) (*types.PlacementResult, error) { + req := types.PlaceVm{ + This: c.Reference(), + PlacementSpec: spec, + } + + res, err := methods.PlaceVm(ctx, c.c, &req) + if err != nil { + return nil, err + } + + return &res.Returnval, nil +} diff --git a/vendor/github.com/vmware/govmomi/object/common.go b/vendor/github.com/vmware/govmomi/object/common.go new file mode 100644 index 0000000..86db4c2 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/common.go @@ -0,0 +1,136 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + "errors" + "fmt" + "path" + + "github.com/vmware/govmomi/property" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/types" +) + +var ( + ErrNotSupported = errors.New("product/version specific feature not supported by target") +) + +// Common contains the fields and functions common to all objects. +type Common struct { + InventoryPath string + + c *vim25.Client + r types.ManagedObjectReference +} + +func (c Common) String() string { + ref := fmt.Sprintf("%v", c.Reference()) + + if c.InventoryPath == "" { + return ref + } + + return fmt.Sprintf("%s @ %s", ref, c.InventoryPath) +} + +func NewCommon(c *vim25.Client, r types.ManagedObjectReference) Common { + return Common{c: c, r: r} +} + +func (c Common) Reference() types.ManagedObjectReference { + return c.r +} + +func (c Common) Client() *vim25.Client { + return c.c +} + +// Name returns the base name of the InventoryPath field +func (c Common) Name() string { + if c.InventoryPath == "" { + return "" + } + return path.Base(c.InventoryPath) +} + +func (c *Common) SetInventoryPath(p string) { + c.InventoryPath = p +} + +// ObjectName fetches the mo.ManagedEntity.Name field via the property collector. +func (c Common) ObjectName(ctx context.Context) (string, error) { + var content []types.ObjectContent + + err := c.Properties(ctx, c.Reference(), []string{"name"}, &content) + if err != nil { + return "", err + } + + for i := range content { + for _, prop := range content[i].PropSet { + return prop.Val.(string), nil + } + } + + return "", nil +} + +// Properties is a wrapper for property.DefaultCollector().RetrieveOne() +func (c Common) Properties(ctx context.Context, r types.ManagedObjectReference, ps []string, dst interface{}) error { + return property.DefaultCollector(c.c).RetrieveOne(ctx, r, ps, dst) +} + +func (c Common) Destroy(ctx context.Context) (*Task, error) { + req := types.Destroy_Task{ + This: c.Reference(), + } + + res, err := methods.Destroy_Task(ctx, c.c, &req) + if err != nil { + return nil, err + } + + return NewTask(c.c, res.Returnval), nil +} + +func (c Common) Rename(ctx context.Context, name string) (*Task, error) { + req := types.Rename_Task{ + This: c.Reference(), + NewName: name, + } + + res, err := methods.Rename_Task(ctx, c.c, &req) + if err != nil { + return nil, err + } + + return NewTask(c.c, res.Returnval), nil +} + +func (c Common) SetCustomValue(ctx context.Context, key string, value string) error { + req := types.SetCustomValue{ + This: c.Reference(), + Key: key, + Value: value, + } + + _, err := methods.SetCustomValue(ctx, c.c, &req) + return err +} diff --git a/vendor/github.com/vmware/govmomi/object/compute_resource.go b/vendor/github.com/vmware/govmomi/object/compute_resource.go new file mode 100644 index 0000000..7645fdd --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/compute_resource.go @@ -0,0 +1,111 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + "path" + + "github.com/vmware/govmomi/property" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type ComputeResource struct { + Common +} + +func NewComputeResource(c *vim25.Client, ref types.ManagedObjectReference) *ComputeResource { + return &ComputeResource{ + Common: NewCommon(c, ref), + } +} + +func (c ComputeResource) Hosts(ctx context.Context) ([]*HostSystem, error) { + var cr mo.ComputeResource + + err := c.Properties(ctx, c.Reference(), []string{"host"}, &cr) + if err != nil { + return nil, err + } + + if len(cr.Host) == 0 { + return nil, nil + } + + var hs []mo.HostSystem + pc := property.DefaultCollector(c.Client()) + err = pc.Retrieve(ctx, cr.Host, []string{"name"}, &hs) + if err != nil { + return nil, err + } + + var hosts []*HostSystem + + for _, h := range hs { + host := NewHostSystem(c.Client(), h.Reference()) + host.InventoryPath = path.Join(c.InventoryPath, h.Name) + hosts = append(hosts, host) + } + + return hosts, nil +} + +func (c ComputeResource) Datastores(ctx context.Context) ([]*Datastore, error) { + var cr mo.ComputeResource + + err := c.Properties(ctx, c.Reference(), []string{"datastore"}, &cr) + if err != nil { + return nil, err + } + + var dss []*Datastore + for _, ref := range cr.Datastore { + ds := NewDatastore(c.c, ref) + dss = append(dss, ds) + } + + return dss, nil +} + +func (c ComputeResource) ResourcePool(ctx context.Context) (*ResourcePool, error) { + var cr mo.ComputeResource + + err := c.Properties(ctx, c.Reference(), []string{"resourcePool"}, &cr) + if err != nil { + return nil, err + } + + return NewResourcePool(c.c, *cr.ResourcePool), nil +} + +func (c ComputeResource) Reconfigure(ctx context.Context, spec types.BaseComputeResourceConfigSpec, modify bool) (*Task, error) { + req := types.ReconfigureComputeResource_Task{ + This: c.Reference(), + Spec: spec, + Modify: modify, + } + + res, err := methods.ReconfigureComputeResource_Task(ctx, c.c, &req) + if err != nil { + return nil, err + } + + return NewTask(c.c, res.Returnval), nil +} diff --git a/vendor/github.com/vmware/govmomi/object/custom_fields_manager.go b/vendor/github.com/vmware/govmomi/object/custom_fields_manager.go new file mode 100644 index 0000000..ef748ef --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/custom_fields_manager.go @@ -0,0 +1,146 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + "errors" + "strconv" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +var ( + ErrKeyNameNotFound = errors.New("key name not found") +) + +type CustomFieldsManager struct { + Common +} + +// GetCustomFieldsManager wraps NewCustomFieldsManager, returning ErrNotSupported +// when the client is not connected to a vCenter instance. +func GetCustomFieldsManager(c *vim25.Client) (*CustomFieldsManager, error) { + if c.ServiceContent.CustomFieldsManager == nil { + return nil, ErrNotSupported + } + return NewCustomFieldsManager(c), nil +} + +func NewCustomFieldsManager(c *vim25.Client) *CustomFieldsManager { + m := CustomFieldsManager{ + Common: NewCommon(c, *c.ServiceContent.CustomFieldsManager), + } + + return &m +} + +func (m CustomFieldsManager) Add(ctx context.Context, name string, moType string, fieldDefPolicy *types.PrivilegePolicyDef, fieldPolicy *types.PrivilegePolicyDef) (*types.CustomFieldDef, error) { + req := types.AddCustomFieldDef{ + This: m.Reference(), + Name: name, + MoType: moType, + FieldDefPolicy: fieldDefPolicy, + FieldPolicy: fieldPolicy, + } + + res, err := methods.AddCustomFieldDef(ctx, m.c, &req) + if err != nil { + return nil, err + } + + return &res.Returnval, nil +} + +func (m CustomFieldsManager) Remove(ctx context.Context, key int32) error { + req := types.RemoveCustomFieldDef{ + This: m.Reference(), + Key: key, + } + + _, err := methods.RemoveCustomFieldDef(ctx, m.c, &req) + return err +} + +func (m CustomFieldsManager) Rename(ctx context.Context, key int32, name string) error { + req := types.RenameCustomFieldDef{ + This: m.Reference(), + Key: key, + Name: name, + } + + _, err := methods.RenameCustomFieldDef(ctx, m.c, &req) + return err +} + +func (m CustomFieldsManager) Set(ctx context.Context, entity types.ManagedObjectReference, key int32, value string) error { + req := types.SetField{ + This: m.Reference(), + Entity: entity, + Key: key, + Value: value, + } + + _, err := methods.SetField(ctx, m.c, &req) + return err +} + +type CustomFieldDefList []types.CustomFieldDef + +func (m CustomFieldsManager) Field(ctx context.Context) (CustomFieldDefList, error) { + var fm mo.CustomFieldsManager + + err := m.Properties(ctx, m.Reference(), []string{"field"}, &fm) + if err != nil { + return nil, err + } + + return fm.Field, nil +} + +func (m CustomFieldsManager) FindKey(ctx context.Context, name string) (int32, error) { + field, err := m.Field(ctx) + if err != nil { + return -1, err + } + + for _, def := range field { + if def.Name == name { + return def.Key, nil + } + } + + k, err := strconv.Atoi(name) + if err == nil { + // assume literal int key + return int32(k), nil + } + + return -1, ErrKeyNameNotFound +} + +func (l CustomFieldDefList) ByKey(key int32) *types.CustomFieldDef { + for _, def := range l { + if def.Key == key { + return &def + } + } + return nil +} diff --git a/vendor/github.com/vmware/govmomi/object/customization_spec_manager.go b/vendor/github.com/vmware/govmomi/object/customization_spec_manager.go new file mode 100644 index 0000000..e9a3914 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/customization_spec_manager.go @@ -0,0 +1,173 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type CustomizationSpecManager struct { + Common +} + +func NewCustomizationSpecManager(c *vim25.Client) *CustomizationSpecManager { + cs := CustomizationSpecManager{ + Common: NewCommon(c, *c.ServiceContent.CustomizationSpecManager), + } + + return &cs +} + +func (cs CustomizationSpecManager) Info(ctx context.Context) ([]types.CustomizationSpecInfo, error) { + var m mo.CustomizationSpecManager + err := cs.Properties(ctx, cs.Reference(), []string{"info"}, &m) + return m.Info, err +} + +func (cs CustomizationSpecManager) DoesCustomizationSpecExist(ctx context.Context, name string) (bool, error) { + req := types.DoesCustomizationSpecExist{ + This: cs.Reference(), + Name: name, + } + + res, err := methods.DoesCustomizationSpecExist(ctx, cs.c, &req) + + if err != nil { + return false, err + } + + return res.Returnval, nil +} + +func (cs CustomizationSpecManager) GetCustomizationSpec(ctx context.Context, name string) (*types.CustomizationSpecItem, error) { + req := types.GetCustomizationSpec{ + This: cs.Reference(), + Name: name, + } + + res, err := methods.GetCustomizationSpec(ctx, cs.c, &req) + + if err != nil { + return nil, err + } + + return &res.Returnval, nil +} + +func (cs CustomizationSpecManager) CreateCustomizationSpec(ctx context.Context, item types.CustomizationSpecItem) error { + req := types.CreateCustomizationSpec{ + This: cs.Reference(), + Item: item, + } + + _, err := methods.CreateCustomizationSpec(ctx, cs.c, &req) + if err != nil { + return err + } + + return nil +} + +func (cs CustomizationSpecManager) OverwriteCustomizationSpec(ctx context.Context, item types.CustomizationSpecItem) error { + req := types.OverwriteCustomizationSpec{ + This: cs.Reference(), + Item: item, + } + + _, err := methods.OverwriteCustomizationSpec(ctx, cs.c, &req) + if err != nil { + return err + } + + return nil +} + +func (cs CustomizationSpecManager) DeleteCustomizationSpec(ctx context.Context, name string) error { + req := types.DeleteCustomizationSpec{ + This: cs.Reference(), + Name: name, + } + + _, err := methods.DeleteCustomizationSpec(ctx, cs.c, &req) + if err != nil { + return err + } + + return nil +} + +func (cs CustomizationSpecManager) DuplicateCustomizationSpec(ctx context.Context, name string, newName string) error { + req := types.DuplicateCustomizationSpec{ + This: cs.Reference(), + Name: name, + NewName: newName, + } + + _, err := methods.DuplicateCustomizationSpec(ctx, cs.c, &req) + if err != nil { + return err + } + + return nil +} + +func (cs CustomizationSpecManager) RenameCustomizationSpec(ctx context.Context, name string, newName string) error { + req := types.RenameCustomizationSpec{ + This: cs.Reference(), + Name: name, + NewName: newName, + } + + _, err := methods.RenameCustomizationSpec(ctx, cs.c, &req) + if err != nil { + return err + } + + return nil +} + +func (cs CustomizationSpecManager) CustomizationSpecItemToXml(ctx context.Context, item types.CustomizationSpecItem) (string, error) { + req := types.CustomizationSpecItemToXml{ + This: cs.Reference(), + Item: item, + } + + res, err := methods.CustomizationSpecItemToXml(ctx, cs.c, &req) + if err != nil { + return "", err + } + + return res.Returnval, nil +} + +func (cs CustomizationSpecManager) XmlToCustomizationSpecItem(ctx context.Context, xml string) (*types.CustomizationSpecItem, error) { + req := types.XmlToCustomizationSpecItem{ + This: cs.Reference(), + SpecItemXml: xml, + } + + res, err := methods.XmlToCustomizationSpecItem(ctx, cs.c, &req) + if err != nil { + return nil, err + } + return &res.Returnval, nil +} diff --git a/vendor/github.com/vmware/govmomi/object/datacenter.go b/vendor/github.com/vmware/govmomi/object/datacenter.go new file mode 100644 index 0000000..41fa352 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/datacenter.go @@ -0,0 +1,129 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + "fmt" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type DatacenterFolders struct { + VmFolder *Folder + HostFolder *Folder + DatastoreFolder *Folder + NetworkFolder *Folder +} + +type Datacenter struct { + Common +} + +func NewDatacenter(c *vim25.Client, ref types.ManagedObjectReference) *Datacenter { + return &Datacenter{ + Common: NewCommon(c, ref), + } +} + +func (d *Datacenter) Folders(ctx context.Context) (*DatacenterFolders, error) { + var md mo.Datacenter + + ps := []string{"name", "vmFolder", "hostFolder", "datastoreFolder", "networkFolder"} + err := d.Properties(ctx, d.Reference(), ps, &md) + if err != nil { + return nil, err + } + + df := &DatacenterFolders{ + VmFolder: NewFolder(d.c, md.VmFolder), + HostFolder: NewFolder(d.c, md.HostFolder), + DatastoreFolder: NewFolder(d.c, md.DatastoreFolder), + NetworkFolder: NewFolder(d.c, md.NetworkFolder), + } + + paths := []struct { + name string + path *string + }{ + {"vm", &df.VmFolder.InventoryPath}, + {"host", &df.HostFolder.InventoryPath}, + {"datastore", &df.DatastoreFolder.InventoryPath}, + {"network", &df.NetworkFolder.InventoryPath}, + } + + for _, p := range paths { + *p.path = fmt.Sprintf("/%s/%s", md.Name, p.name) + } + + return df, nil +} + +func (d Datacenter) Destroy(ctx context.Context) (*Task, error) { + req := types.Destroy_Task{ + This: d.Reference(), + } + + res, err := methods.Destroy_Task(ctx, d.c, &req) + if err != nil { + return nil, err + } + + return NewTask(d.c, res.Returnval), nil +} + +// PowerOnVM powers on multiple virtual machines with a single vCenter call. +// If called against ESX, serially powers on the list of VMs and the returned *Task will always be nil. +func (d Datacenter) PowerOnVM(ctx context.Context, vm []types.ManagedObjectReference, option ...types.BaseOptionValue) (*Task, error) { + if d.Client().IsVC() { + req := types.PowerOnMultiVM_Task{ + This: d.Reference(), + Vm: vm, + Option: option, + } + + res, err := methods.PowerOnMultiVM_Task(ctx, d.c, &req) + if err != nil { + return nil, err + } + + return NewTask(d.c, res.Returnval), nil + } + + for _, ref := range vm { + obj := NewVirtualMachine(d.Client(), ref) + task, err := obj.PowerOn(ctx) + if err != nil { + return nil, err + } + + err = task.Wait(ctx) + if err != nil { + // Ignore any InvalidPowerState fault, as it indicates the VM is already powered on + if f, ok := err.(types.HasFault); ok { + if _, ok = f.Fault().(*types.InvalidPowerState); !ok { + return nil, err + } + } + } + } + + return nil, nil +} diff --git a/vendor/github.com/vmware/govmomi/object/datastore.go b/vendor/github.com/vmware/govmomi/object/datastore.go new file mode 100644 index 0000000..65264ae --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/datastore.go @@ -0,0 +1,439 @@ +/* +Copyright (c) 2015-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + "fmt" + "io" + "math/rand" + "net/http" + "net/url" + "os" + "path" + "strings" + + "github.com/vmware/govmomi/property" + "github.com/vmware/govmomi/session" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/soap" + "github.com/vmware/govmomi/vim25/types" +) + +// DatastoreNoSuchDirectoryError is returned when a directory could not be found. +type DatastoreNoSuchDirectoryError struct { + verb string + subject string +} + +func (e DatastoreNoSuchDirectoryError) Error() string { + return fmt.Sprintf("cannot %s '%s': No such directory", e.verb, e.subject) +} + +// DatastoreNoSuchFileError is returned when a file could not be found. +type DatastoreNoSuchFileError struct { + verb string + subject string +} + +func (e DatastoreNoSuchFileError) Error() string { + return fmt.Sprintf("cannot %s '%s': No such file", e.verb, e.subject) +} + +type Datastore struct { + Common + + DatacenterPath string +} + +func NewDatastore(c *vim25.Client, ref types.ManagedObjectReference) *Datastore { + return &Datastore{ + Common: NewCommon(c, ref), + } +} + +func (d Datastore) Path(path string) string { + var p DatastorePath + if p.FromString(path) { + return p.String() // already in "[datastore] path" format + } + + return (&DatastorePath{ + Datastore: d.Name(), + Path: path, + }).String() +} + +// NewURL constructs a url.URL with the given file path for datastore access over HTTP. +func (d Datastore) NewURL(path string) *url.URL { + u := d.c.URL() + + return &url.URL{ + Scheme: u.Scheme, + Host: u.Host, + Path: fmt.Sprintf("/folder/%s", path), + RawQuery: url.Values{ + "dcPath": []string{d.DatacenterPath}, + "dsName": []string{d.Name()}, + }.Encode(), + } +} + +// URL is deprecated, use NewURL instead. +func (d Datastore) URL(ctx context.Context, dc *Datacenter, path string) (*url.URL, error) { + return d.NewURL(path), nil +} + +func (d Datastore) Browser(ctx context.Context) (*HostDatastoreBrowser, error) { + var do mo.Datastore + + err := d.Properties(ctx, d.Reference(), []string{"browser"}, &do) + if err != nil { + return nil, err + } + + return NewHostDatastoreBrowser(d.c, do.Browser), nil +} + +func (d Datastore) useServiceTicket() bool { + // If connected to workstation, service ticketing not supported + // If connected to ESX, service ticketing not needed + if !d.c.IsVC() { + return false + } + + key := "GOVMOMI_USE_SERVICE_TICKET" + + val := d.c.URL().Query().Get(key) + if val == "" { + val = os.Getenv(key) + } + + if val == "1" || val == "true" { + return true + } + + return false +} + +func (d Datastore) useServiceTicketHostName(name string) bool { + // No need if talking directly to ESX. + if !d.c.IsVC() { + return false + } + + // If version happens to be < 5.1 + if name == "" { + return false + } + + // If the HostSystem is using DHCP on a network without dynamic DNS, + // HostSystem.Config.Network.DnsConfig.HostName is set to "localhost" by default. + // This resolves to "localhost.localdomain" by default via /etc/hosts on ESX. + // In that case, we will stick with the HostSystem.Name which is the IP address that + // was used to connect the host to VC. + if name == "localhost.localdomain" { + return false + } + + // Still possible to have HostName that don't resolve via DNS, + // so we default to false. + key := "GOVMOMI_USE_SERVICE_TICKET_HOSTNAME" + + val := d.c.URL().Query().Get(key) + if val == "" { + val = os.Getenv(key) + } + + if val == "1" || val == "true" { + return true + } + + return false +} + +type datastoreServiceTicketHostKey struct{} + +// HostContext returns a Context where the given host will be used for datastore HTTP access +// via the ServiceTicket method. +func (d Datastore) HostContext(ctx context.Context, host *HostSystem) context.Context { + return context.WithValue(ctx, datastoreServiceTicketHostKey{}, host) +} + +// ServiceTicket obtains a ticket via AcquireGenericServiceTicket and returns it an http.Cookie with the url.URL +// that can be used along with the ticket cookie to access the given path. An host is chosen at random unless the +// the given Context was created with a specific host via the HostContext method. +func (d Datastore) ServiceTicket(ctx context.Context, path string, method string) (*url.URL, *http.Cookie, error) { + u := d.NewURL(path) + + host, ok := ctx.Value(datastoreServiceTicketHostKey{}).(*HostSystem) + + if !ok { + if !d.useServiceTicket() { + return u, nil, nil + } + + hosts, err := d.AttachedHosts(ctx) + if err != nil { + return nil, nil, err + } + + if len(hosts) == 0 { + // Fallback to letting vCenter choose a host + return u, nil, nil + } + + // Pick a random attached host + host = hosts[rand.Intn(len(hosts))] + } + + ips, err := host.ManagementIPs(ctx) + if err != nil { + return nil, nil, err + } + + if len(ips) > 0 { + // prefer a ManagementIP + u.Host = ips[0].String() + } else { + // fallback to inventory name + u.Host, err = host.ObjectName(ctx) + if err != nil { + return nil, nil, err + } + } + + // VC datacenter path will not be valid against ESX + q := u.Query() + delete(q, "dcPath") + u.RawQuery = q.Encode() + + spec := types.SessionManagerHttpServiceRequestSpec{ + Url: u.String(), + // See SessionManagerHttpServiceRequestSpecMethod enum + Method: fmt.Sprintf("http%s%s", method[0:1], strings.ToLower(method[1:])), + } + + sm := session.NewManager(d.Client()) + + ticket, err := sm.AcquireGenericServiceTicket(ctx, &spec) + if err != nil { + return nil, nil, err + } + + cookie := &http.Cookie{ + Name: "vmware_cgi_ticket", + Value: ticket.Id, + } + + if d.useServiceTicketHostName(ticket.HostName) { + u.Host = ticket.HostName + } + + d.Client().SetThumbprint(u.Host, ticket.SslThumbprint) + + return u, cookie, nil +} + +func (d Datastore) uploadTicket(ctx context.Context, path string, param *soap.Upload) (*url.URL, *soap.Upload, error) { + p := soap.DefaultUpload + if param != nil { + p = *param // copy + } + + u, ticket, err := d.ServiceTicket(ctx, path, p.Method) + if err != nil { + return nil, nil, err + } + + p.Ticket = ticket + + return u, &p, nil +} + +func (d Datastore) downloadTicket(ctx context.Context, path string, param *soap.Download) (*url.URL, *soap.Download, error) { + p := soap.DefaultDownload + if param != nil { + p = *param // copy + } + + u, ticket, err := d.ServiceTicket(ctx, path, p.Method) + if err != nil { + return nil, nil, err + } + + p.Ticket = ticket + + return u, &p, nil +} + +// Upload via soap.Upload with an http service ticket +func (d Datastore) Upload(ctx context.Context, f io.Reader, path string, param *soap.Upload) error { + u, p, err := d.uploadTicket(ctx, path, param) + if err != nil { + return err + } + return d.Client().Upload(ctx, f, u, p) +} + +// UploadFile via soap.Upload with an http service ticket +func (d Datastore) UploadFile(ctx context.Context, file string, path string, param *soap.Upload) error { + u, p, err := d.uploadTicket(ctx, path, param) + if err != nil { + return err + } + return d.Client().UploadFile(ctx, file, u, p) +} + +// Download via soap.Download with an http service ticket +func (d Datastore) Download(ctx context.Context, path string, param *soap.Download) (io.ReadCloser, int64, error) { + u, p, err := d.downloadTicket(ctx, path, param) + if err != nil { + return nil, 0, err + } + return d.Client().Download(ctx, u, p) +} + +// DownloadFile via soap.Download with an http service ticket +func (d Datastore) DownloadFile(ctx context.Context, path string, file string, param *soap.Download) error { + u, p, err := d.downloadTicket(ctx, path, param) + if err != nil { + return err + } + return d.Client().DownloadFile(ctx, file, u, p) +} + +// AttachedHosts returns hosts that have this Datastore attached, accessible and writable. +func (d Datastore) AttachedHosts(ctx context.Context) ([]*HostSystem, error) { + var ds mo.Datastore + var hosts []*HostSystem + + pc := property.DefaultCollector(d.Client()) + err := pc.RetrieveOne(ctx, d.Reference(), []string{"host"}, &ds) + if err != nil { + return nil, err + } + + mounts := make(map[types.ManagedObjectReference]types.DatastoreHostMount) + var refs []types.ManagedObjectReference + for _, host := range ds.Host { + refs = append(refs, host.Key) + mounts[host.Key] = host + } + + var hs []mo.HostSystem + err = pc.Retrieve(ctx, refs, []string{"runtime.connectionState", "runtime.powerState"}, &hs) + if err != nil { + return nil, err + } + + for _, host := range hs { + if host.Runtime.ConnectionState == types.HostSystemConnectionStateConnected && + host.Runtime.PowerState == types.HostSystemPowerStatePoweredOn { + + mount := mounts[host.Reference()] + info := mount.MountInfo + + if *info.Mounted && *info.Accessible && info.AccessMode == string(types.HostMountModeReadWrite) { + hosts = append(hosts, NewHostSystem(d.Client(), mount.Key)) + } + } + } + + return hosts, nil +} + +// AttachedClusterHosts returns hosts that have this Datastore attached, accessible and writable and are members of the given cluster. +func (d Datastore) AttachedClusterHosts(ctx context.Context, cluster *ComputeResource) ([]*HostSystem, error) { + var hosts []*HostSystem + + clusterHosts, err := cluster.Hosts(ctx) + if err != nil { + return nil, err + } + + attachedHosts, err := d.AttachedHosts(ctx) + if err != nil { + return nil, err + } + + refs := make(map[types.ManagedObjectReference]bool) + for _, host := range attachedHosts { + refs[host.Reference()] = true + } + + for _, host := range clusterHosts { + if refs[host.Reference()] { + hosts = append(hosts, host) + } + } + + return hosts, nil +} + +func (d Datastore) Stat(ctx context.Context, file string) (types.BaseFileInfo, error) { + b, err := d.Browser(ctx) + if err != nil { + return nil, err + } + + spec := types.HostDatastoreBrowserSearchSpec{ + Details: &types.FileQueryFlags{ + FileType: true, + FileSize: true, + Modification: true, + FileOwner: types.NewBool(true), + }, + MatchPattern: []string{path.Base(file)}, + } + + dsPath := d.Path(path.Dir(file)) + task, err := b.SearchDatastore(ctx, dsPath, &spec) + if err != nil { + return nil, err + } + + info, err := task.WaitForResult(ctx, nil) + if err != nil { + if types.IsFileNotFound(err) { + // FileNotFound means the base path doesn't exist. + return nil, DatastoreNoSuchDirectoryError{"stat", dsPath} + } + + return nil, err + } + + res := info.Result.(types.HostDatastoreBrowserSearchResults) + if len(res.File) == 0 { + // File doesn't exist + return nil, DatastoreNoSuchFileError{"stat", d.Path(file)} + } + + return res.File[0], nil + +} + +// Type returns the type of file system volume. +func (d Datastore) Type(ctx context.Context) (types.HostFileSystemVolumeFileSystemType, error) { + var mds mo.Datastore + + if err := d.Properties(ctx, d.Reference(), []string{"summary.type"}, &mds); err != nil { + return types.HostFileSystemVolumeFileSystemType(""), err + } + return types.HostFileSystemVolumeFileSystemType(mds.Summary.Type), nil +} diff --git a/vendor/github.com/vmware/govmomi/object/datastore_file.go b/vendor/github.com/vmware/govmomi/object/datastore_file.go new file mode 100644 index 0000000..86d7d9c --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/datastore_file.go @@ -0,0 +1,412 @@ +/* +Copyright (c) 2016-2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "bytes" + "context" + "errors" + "fmt" + "io" + "net/http" + "os" + "path" + "sync" + "time" + + "github.com/vmware/govmomi/vim25/soap" +) + +// DatastoreFile implements io.Reader, io.Seeker and io.Closer interfaces for datastore file access. +type DatastoreFile struct { + d Datastore + ctx context.Context + name string + + buf io.Reader + body io.ReadCloser + length int64 + offset struct { + read, seek int64 + } +} + +// Open opens the named file relative to the Datastore. +func (d Datastore) Open(ctx context.Context, name string) (*DatastoreFile, error) { + return &DatastoreFile{ + d: d, + name: name, + length: -1, + ctx: ctx, + }, nil +} + +// Read reads up to len(b) bytes from the DatastoreFile. +func (f *DatastoreFile) Read(b []byte) (int, error) { + if f.offset.read != f.offset.seek { + // A Seek() call changed the offset, we need to issue a new GET + _ = f.Close() + + f.offset.read = f.offset.seek + } else if f.buf != nil { + // f.buf + f behaves like an io.MultiReader + n, err := f.buf.Read(b) + if err == io.EOF { + f.buf = nil // buffer has been drained + } + if n > 0 { + return n, nil + } + } + + body, err := f.get() + if err != nil { + return 0, err + } + + n, err := body.Read(b) + + f.offset.read += int64(n) + f.offset.seek += int64(n) + + return n, err +} + +// Close closes the DatastoreFile. +func (f *DatastoreFile) Close() error { + var err error + + if f.body != nil { + err = f.body.Close() + f.body = nil + } + + f.buf = nil + + return err +} + +// Seek sets the offset for the next Read on the DatastoreFile. +func (f *DatastoreFile) Seek(offset int64, whence int) (int64, error) { + switch whence { + case io.SeekStart: + case io.SeekCurrent: + offset += f.offset.seek + case io.SeekEnd: + if f.length < 0 { + _, err := f.Stat() + if err != nil { + return 0, err + } + } + offset += f.length + default: + return 0, errors.New("Seek: invalid whence") + } + + // allow negative SeekStart for initial Range request + if offset < 0 { + return 0, errors.New("Seek: invalid offset") + } + + f.offset.seek = offset + + return offset, nil +} + +type fileStat struct { + file *DatastoreFile + header http.Header +} + +func (s *fileStat) Name() string { + return path.Base(s.file.name) +} + +func (s *fileStat) Size() int64 { + return s.file.length +} + +func (s *fileStat) Mode() os.FileMode { + return 0 +} + +func (s *fileStat) ModTime() time.Time { + return time.Now() // no Last-Modified +} + +func (s *fileStat) IsDir() bool { + return false +} + +func (s *fileStat) Sys() interface{} { + return s.header +} + +func statusError(res *http.Response) error { + if res.StatusCode == http.StatusNotFound { + return os.ErrNotExist + } + return errors.New(res.Status) +} + +// Stat returns the os.FileInfo interface describing file. +func (f *DatastoreFile) Stat() (os.FileInfo, error) { + // TODO: consider using Datastore.Stat() instead + u, p, err := f.d.downloadTicket(f.ctx, f.name, &soap.Download{Method: "HEAD"}) + if err != nil { + return nil, err + } + + res, err := f.d.Client().DownloadRequest(f.ctx, u, p) + if err != nil { + return nil, err + } + + if res.StatusCode != http.StatusOK { + return nil, statusError(res) + } + + f.length = res.ContentLength + + return &fileStat{f, res.Header}, nil +} + +func (f *DatastoreFile) get() (io.Reader, error) { + if f.body != nil { + return f.body, nil + } + + u, p, err := f.d.downloadTicket(f.ctx, f.name, nil) + if err != nil { + return nil, err + } + + if f.offset.read != 0 { + p.Headers = map[string]string{ + "Range": fmt.Sprintf("bytes=%d-", f.offset.read), + } + } + + res, err := f.d.Client().DownloadRequest(f.ctx, u, p) + if err != nil { + return nil, err + } + + switch res.StatusCode { + case http.StatusOK: + f.length = res.ContentLength + case http.StatusPartialContent: + var start, end int + cr := res.Header.Get("Content-Range") + _, err = fmt.Sscanf(cr, "bytes %d-%d/%d", &start, &end, &f.length) + if err != nil { + f.length = -1 + } + case http.StatusRequestedRangeNotSatisfiable: + // ok: Read() will return io.EOF + default: + return nil, statusError(res) + } + + if f.length < 0 { + _ = res.Body.Close() + return nil, errors.New("unable to determine file size") + } + + f.body = res.Body + + return f.body, nil +} + +func lastIndexLines(s []byte, line *int, include func(l int, m string) bool) (int64, bool) { + i := len(s) - 1 + done := false + + for i > 0 { + o := bytes.LastIndexByte(s[:i], '\n') + if o < 0 { + break + } + + msg := string(s[o+1 : i+1]) + if !include(*line, msg) { + done = true + break + } else { + i = o + *line++ + } + } + + return int64(i), done +} + +// Tail seeks to the position of the last N lines of the file. +func (f *DatastoreFile) Tail(n int) error { + return f.TailFunc(n, func(line int, _ string) bool { return n > line }) +} + +// TailFunc will seek backwards in the datastore file until it hits a line that does +// not satisfy the supplied `include` function. +func (f *DatastoreFile) TailFunc(lines int, include func(line int, message string) bool) error { + // Read the file in reverse using bsize chunks + const bsize = int64(1024 * 16) + + fsize, err := f.Seek(0, io.SeekEnd) + if err != nil { + return err + } + + if lines == 0 { + return nil + } + + chunk := int64(-1) + + buf := bytes.NewBuffer(make([]byte, 0, bsize)) + line := 0 + + for { + var eof bool + var pos int64 + + nread := bsize + + offset := chunk * bsize + remain := fsize + offset + + if remain < 0 { + if pos, err = f.Seek(0, io.SeekStart); err != nil { + return err + } + + nread = bsize + remain + eof = true + } else if pos, err = f.Seek(offset, io.SeekEnd); err != nil { + return err + } + + if _, err = io.CopyN(buf, f, nread); err != nil { + if err != io.EOF { + return err + } + } + + b := buf.Bytes() + idx, done := lastIndexLines(b, &line, include) + + if done { + if chunk == -1 { + // We found all N lines in the last chunk of the file. + // The seek offset is also now at the current end of file. + // Save this buffer to avoid another GET request when Read() is called. + buf.Next(int(idx + 1)) + f.buf = buf + return nil + } + + if _, err = f.Seek(pos+idx+1, io.SeekStart); err != nil { + return err + } + + break + } + + if eof { + if remain < 0 { + // We found < N lines in the entire file, so seek to the start. + _, _ = f.Seek(0, io.SeekStart) + } + break + } + + chunk-- + buf.Reset() + } + + return nil +} + +type followDatastoreFile struct { + r *DatastoreFile + c chan struct{} + i time.Duration + o sync.Once +} + +// Read reads up to len(b) bytes from the DatastoreFile being followed. +// This method will block until data is read, an error other than io.EOF is returned or Close() is called. +func (f *followDatastoreFile) Read(p []byte) (int, error) { + offset := f.r.offset.seek + stop := false + + for { + n, err := f.r.Read(p) + if err != nil && err == io.EOF { + _ = f.r.Close() // GET request body has been drained. + if stop { + return n, err + } + err = nil + } + + if n > 0 { + return n, err + } + + select { + case <-f.c: + // Wake up and stop polling once the body has been drained + stop = true + case <-time.After(f.i): + } + + info, serr := f.r.Stat() + if serr != nil { + // Return EOF rather than 404 if the file goes away + if serr == os.ErrNotExist { + _ = f.r.Close() + return 0, io.EOF + } + return 0, serr + } + + if info.Size() < offset { + // assume file has be truncated + offset, err = f.r.Seek(0, io.SeekStart) + if err != nil { + return 0, err + } + } + } +} + +// Close will stop Follow polling and close the underlying DatastoreFile. +func (f *followDatastoreFile) Close() error { + f.o.Do(func() { close(f.c) }) + return nil +} + +// Follow returns an io.ReadCloser to stream the file contents as data is appended. +func (f *DatastoreFile) Follow(interval time.Duration) io.ReadCloser { + return &followDatastoreFile{ + r: f, + c: make(chan struct{}), + i: interval, + } +} diff --git a/vendor/github.com/vmware/govmomi/object/datastore_file_manager.go b/vendor/github.com/vmware/govmomi/object/datastore_file_manager.go new file mode 100644 index 0000000..a6e29c2 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/datastore_file_manager.go @@ -0,0 +1,228 @@ +/* +Copyright (c) 2017-2018 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "bufio" + "bytes" + "context" + "fmt" + "io" + "log" + "path" + "strings" + + "github.com/vmware/govmomi/vim25/progress" + "github.com/vmware/govmomi/vim25/soap" +) + +// DatastoreFileManager combines FileManager and VirtualDiskManager to manage files on a Datastore +type DatastoreFileManager struct { + Datacenter *Datacenter + Datastore *Datastore + FileManager *FileManager + VirtualDiskManager *VirtualDiskManager + + Force bool + DatacenterTarget *Datacenter +} + +// NewFileManager creates a new instance of DatastoreFileManager +func (d Datastore) NewFileManager(dc *Datacenter, force bool) *DatastoreFileManager { + c := d.Client() + + m := &DatastoreFileManager{ + Datacenter: dc, + Datastore: &d, + FileManager: NewFileManager(c), + VirtualDiskManager: NewVirtualDiskManager(c), + Force: force, + DatacenterTarget: dc, + } + + return m +} + +func (m *DatastoreFileManager) WithProgress(ctx context.Context, s progress.Sinker) context.Context { + return context.WithValue(ctx, m, s) +} + +func (m *DatastoreFileManager) wait(ctx context.Context, task *Task) error { + var logger progress.Sinker + if s, ok := ctx.Value(m).(progress.Sinker); ok { + logger = s + } + _, err := task.WaitForResult(ctx, logger) + return err +} + +// Delete dispatches to the appropriate Delete method based on file name extension +func (m *DatastoreFileManager) Delete(ctx context.Context, name string) error { + switch path.Ext(name) { + case ".vmdk": + return m.DeleteVirtualDisk(ctx, name) + default: + return m.DeleteFile(ctx, name) + } +} + +// DeleteFile calls FileManager.DeleteDatastoreFile +func (m *DatastoreFileManager) DeleteFile(ctx context.Context, name string) error { + p := m.Path(name) + + task, err := m.FileManager.DeleteDatastoreFile(ctx, p.String(), m.Datacenter) + if err != nil { + return err + } + + return m.wait(ctx, task) +} + +// DeleteVirtualDisk calls VirtualDiskManager.DeleteVirtualDisk +// Regardless of the Datastore type, DeleteVirtualDisk will fail if 'ddb.deletable=false', +// so if Force=true this method attempts to set 'ddb.deletable=true' before starting the delete task. +func (m *DatastoreFileManager) DeleteVirtualDisk(ctx context.Context, name string) error { + p := m.Path(name) + + var merr error + + if m.Force { + merr = m.markDiskAsDeletable(ctx, p) + } + + task, err := m.VirtualDiskManager.DeleteVirtualDisk(ctx, p.String(), m.Datacenter) + if err != nil { + log.Printf("markDiskAsDeletable(%s): %s", p, merr) + return err + } + + return m.wait(ctx, task) +} + +// CopyFile calls FileManager.CopyDatastoreFile +func (m *DatastoreFileManager) CopyFile(ctx context.Context, src string, dst string) error { + srcp := m.Path(src) + dstp := m.Path(dst) + + task, err := m.FileManager.CopyDatastoreFile(ctx, srcp.String(), m.Datacenter, dstp.String(), m.DatacenterTarget, m.Force) + if err != nil { + return err + } + + return m.wait(ctx, task) +} + +// Copy dispatches to the appropriate FileManager or VirtualDiskManager Copy method based on file name extension +func (m *DatastoreFileManager) Copy(ctx context.Context, src string, dst string) error { + srcp := m.Path(src) + dstp := m.Path(dst) + + f := m.FileManager.CopyDatastoreFile + + if srcp.IsVMDK() { + // types.VirtualDiskSpec=nil as it is not implemented by vCenter + f = func(ctx context.Context, src string, srcDC *Datacenter, dst string, dstDC *Datacenter, force bool) (*Task, error) { + return m.VirtualDiskManager.CopyVirtualDisk(ctx, src, srcDC, dst, dstDC, nil, force) + } + } + + task, err := f(ctx, srcp.String(), m.Datacenter, dstp.String(), m.DatacenterTarget, m.Force) + if err != nil { + return err + } + + return m.wait(ctx, task) +} + +// MoveFile calls FileManager.MoveDatastoreFile +func (m *DatastoreFileManager) MoveFile(ctx context.Context, src string, dst string) error { + srcp := m.Path(src) + dstp := m.Path(dst) + + task, err := m.FileManager.MoveDatastoreFile(ctx, srcp.String(), m.Datacenter, dstp.String(), m.DatacenterTarget, m.Force) + if err != nil { + return err + } + + return m.wait(ctx, task) +} + +// Move dispatches to the appropriate FileManager or VirtualDiskManager Move method based on file name extension +func (m *DatastoreFileManager) Move(ctx context.Context, src string, dst string) error { + srcp := m.Path(src) + dstp := m.Path(dst) + + f := m.FileManager.MoveDatastoreFile + + if srcp.IsVMDK() { + f = m.VirtualDiskManager.MoveVirtualDisk + } + + task, err := f(ctx, srcp.String(), m.Datacenter, dstp.String(), m.DatacenterTarget, m.Force) + if err != nil { + return err + } + + return m.wait(ctx, task) +} + +// Path converts path name to a DatastorePath +func (m *DatastoreFileManager) Path(name string) *DatastorePath { + var p DatastorePath + + if !p.FromString(name) { + p.Path = name + p.Datastore = m.Datastore.Name() + } + + return &p +} + +func (m *DatastoreFileManager) markDiskAsDeletable(ctx context.Context, path *DatastorePath) error { + r, _, err := m.Datastore.Download(ctx, path.Path, &soap.DefaultDownload) + if err != nil { + return err + } + + defer r.Close() + + hasFlag := false + buf := new(bytes.Buffer) + + s := bufio.NewScanner(&io.LimitedReader{R: r, N: 2048}) // should be only a few hundred bytes, limit to be sure + + for s.Scan() { + line := s.Text() + if strings.HasPrefix(line, "ddb.deletable") { + hasFlag = true + continue + } + + fmt.Fprintln(buf, line) + } + + if err := s.Err(); err != nil { + return err // any error other than EOF + } + + if !hasFlag { + return nil // already deletable, so leave as-is + } + + // rewrite the .vmdk with ddb.deletable flag removed (the default is true) + return m.Datastore.Upload(ctx, buf, path.Path, &soap.DefaultUpload) +} diff --git a/vendor/github.com/vmware/govmomi/object/datastore_path.go b/vendor/github.com/vmware/govmomi/object/datastore_path.go new file mode 100644 index 0000000..104c7df --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/datastore_path.go @@ -0,0 +1,71 @@ +/* +Copyright (c) 2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "fmt" + "path" + "strings" +) + +// DatastorePath contains the components of a datastore path. +type DatastorePath struct { + Datastore string + Path string +} + +// FromString parses a datastore path. +// Returns true if the path could be parsed, false otherwise. +func (p *DatastorePath) FromString(s string) bool { + if s == "" { + return false + } + + s = strings.TrimSpace(s) + + if !strings.HasPrefix(s, "[") { + return false + } + + s = s[1:] + + ix := strings.Index(s, "]") + if ix < 0 { + return false + } + + p.Datastore = s[:ix] + p.Path = strings.TrimSpace(s[ix+1:]) + + return true +} + +// String formats a datastore path. +func (p *DatastorePath) String() string { + s := fmt.Sprintf("[%s]", p.Datastore) + + if p.Path == "" { + return s + } + + return strings.Join([]string{s, p.Path}, " ") +} + +// IsVMDK returns true if Path has a ".vmdk" extension +func (p *DatastorePath) IsVMDK() bool { + return path.Ext(p.Path) == ".vmdk" +} diff --git a/vendor/github.com/vmware/govmomi/object/diagnostic_log.go b/vendor/github.com/vmware/govmomi/object/diagnostic_log.go new file mode 100644 index 0000000..466d0ee --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/diagnostic_log.go @@ -0,0 +1,76 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + "fmt" + "io" + "math" +) + +// DiagnosticLog wraps DiagnosticManager.BrowseLog +type DiagnosticLog struct { + m DiagnosticManager + + Key string + Host *HostSystem + + Start int32 +} + +// Seek to log position starting at the last nlines of the log +func (l *DiagnosticLog) Seek(ctx context.Context, nlines int32) error { + h, err := l.m.BrowseLog(ctx, l.Host, l.Key, math.MaxInt32, 0) + if err != nil { + return err + } + + l.Start = h.LineEnd - nlines + + return nil +} + +// Copy log starting from l.Start to the given io.Writer +// Returns on error or when end of log is reached. +func (l *DiagnosticLog) Copy(ctx context.Context, w io.Writer) (int, error) { + const max = 500 // VC max == 500, ESX max == 1000 + written := 0 + + for { + h, err := l.m.BrowseLog(ctx, l.Host, l.Key, l.Start, max) + if err != nil { + return 0, err + } + + for _, line := range h.LineText { + n, err := fmt.Fprintln(w, line) + written += n + if err != nil { + return written, err + } + } + + l.Start += int32(len(h.LineText)) + + if l.Start >= h.LineEnd { + break + } + } + + return written, nil +} diff --git a/vendor/github.com/vmware/govmomi/object/diagnostic_manager.go b/vendor/github.com/vmware/govmomi/object/diagnostic_manager.go new file mode 100644 index 0000000..026dc1c --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/diagnostic_manager.go @@ -0,0 +1,102 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/types" +) + +type DiagnosticManager struct { + Common +} + +func NewDiagnosticManager(c *vim25.Client) *DiagnosticManager { + m := DiagnosticManager{ + Common: NewCommon(c, *c.ServiceContent.DiagnosticManager), + } + + return &m +} + +func (m DiagnosticManager) Log(ctx context.Context, host *HostSystem, key string) *DiagnosticLog { + return &DiagnosticLog{ + m: m, + Key: key, + Host: host, + } +} + +func (m DiagnosticManager) BrowseLog(ctx context.Context, host *HostSystem, key string, start, lines int32) (*types.DiagnosticManagerLogHeader, error) { + req := types.BrowseDiagnosticLog{ + This: m.Reference(), + Key: key, + Start: start, + Lines: lines, + } + + if host != nil { + ref := host.Reference() + req.Host = &ref + } + + res, err := methods.BrowseDiagnosticLog(ctx, m.Client(), &req) + if err != nil { + return nil, err + } + + return &res.Returnval, nil +} + +func (m DiagnosticManager) GenerateLogBundles(ctx context.Context, includeDefault bool, host []*HostSystem) (*Task, error) { + req := types.GenerateLogBundles_Task{ + This: m.Reference(), + IncludeDefault: includeDefault, + } + + for _, h := range host { + req.Host = append(req.Host, h.Reference()) + } + + res, err := methods.GenerateLogBundles_Task(ctx, m.c, &req) + if err != nil { + return nil, err + } + + return NewTask(m.c, res.Returnval), nil +} + +func (m DiagnosticManager) QueryDescriptions(ctx context.Context, host *HostSystem) ([]types.DiagnosticManagerLogDescriptor, error) { + req := types.QueryDescriptions{ + This: m.Reference(), + } + + if host != nil { + ref := host.Reference() + req.Host = &ref + } + + res, err := methods.QueryDescriptions(ctx, m.Client(), &req) + if err != nil { + return nil, err + } + + return res.Returnval, nil +} diff --git a/vendor/github.com/vmware/govmomi/object/distributed_virtual_portgroup.go b/vendor/github.com/vmware/govmomi/object/distributed_virtual_portgroup.go new file mode 100644 index 0000000..c2abb8f --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/distributed_virtual_portgroup.go @@ -0,0 +1,90 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + "fmt" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type DistributedVirtualPortgroup struct { + Common +} + +func NewDistributedVirtualPortgroup(c *vim25.Client, ref types.ManagedObjectReference) *DistributedVirtualPortgroup { + return &DistributedVirtualPortgroup{ + Common: NewCommon(c, ref), + } +} + +func (p DistributedVirtualPortgroup) GetInventoryPath() string { + return p.InventoryPath +} + +// EthernetCardBackingInfo returns the VirtualDeviceBackingInfo for this DistributedVirtualPortgroup +func (p DistributedVirtualPortgroup) EthernetCardBackingInfo(ctx context.Context) (types.BaseVirtualDeviceBackingInfo, error) { + var dvp mo.DistributedVirtualPortgroup + var dvs mo.DistributedVirtualSwitch + prop := "config.distributedVirtualSwitch" + + if err := p.Properties(ctx, p.Reference(), []string{"key", prop}, &dvp); err != nil { + return nil, err + } + + // From the docs at https://code.vmware.com/apis/196/vsphere/doc/vim.dvs.DistributedVirtualPortgroup.ConfigInfo.html: + // "This property should always be set unless the user's setting does not have System.Read privilege on the object referred to by this property." + // Note that "the object" refers to the Switch, not the PortGroup. + if dvp.Config.DistributedVirtualSwitch == nil { + name := p.InventoryPath + if name == "" { + name = p.Reference().String() + } + return nil, fmt.Errorf("failed to create EthernetCardBackingInfo for %s: System.Read privilege required for %s", name, prop) + } + + if err := p.Properties(ctx, *dvp.Config.DistributedVirtualSwitch, []string{"uuid"}, &dvs); err != nil { + return nil, err + } + + backing := &types.VirtualEthernetCardDistributedVirtualPortBackingInfo{ + Port: types.DistributedVirtualSwitchPortConnection{ + PortgroupKey: dvp.Key, + SwitchUuid: dvs.Uuid, + }, + } + + return backing, nil +} + +func (p DistributedVirtualPortgroup) Reconfigure(ctx context.Context, spec types.DVPortgroupConfigSpec) (*Task, error) { + req := types.ReconfigureDVPortgroup_Task{ + This: p.Reference(), + Spec: spec, + } + + res, err := methods.ReconfigureDVPortgroup_Task(ctx, p.Client(), &req) + if err != nil { + return nil, err + } + + return NewTask(p.Client(), res.Returnval), nil +} diff --git a/vendor/github.com/vmware/govmomi/object/distributed_virtual_switch.go b/vendor/github.com/vmware/govmomi/object/distributed_virtual_switch.go new file mode 100644 index 0000000..cbfc4c3 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/distributed_virtual_switch.go @@ -0,0 +1,104 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + "fmt" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/types" +) + +type DistributedVirtualSwitch struct { + Common +} + +func NewDistributedVirtualSwitch(c *vim25.Client, ref types.ManagedObjectReference) *DistributedVirtualSwitch { + return &DistributedVirtualSwitch{ + Common: NewCommon(c, ref), + } +} + +func (s DistributedVirtualSwitch) GetInventoryPath() string { + return s.InventoryPath +} + +func (s DistributedVirtualSwitch) EthernetCardBackingInfo(ctx context.Context) (types.BaseVirtualDeviceBackingInfo, error) { + ref := s.Reference() + name := s.InventoryPath + if name == "" { + name = ref.String() + } + return nil, fmt.Errorf("type %s (%s) cannot be used for EthernetCardBackingInfo", ref.Type, name) +} + +func (s DistributedVirtualSwitch) Reconfigure(ctx context.Context, spec types.BaseDVSConfigSpec) (*Task, error) { + req := types.ReconfigureDvs_Task{ + This: s.Reference(), + Spec: spec, + } + + res, err := methods.ReconfigureDvs_Task(ctx, s.Client(), &req) + if err != nil { + return nil, err + } + + return NewTask(s.Client(), res.Returnval), nil +} + +func (s DistributedVirtualSwitch) AddPortgroup(ctx context.Context, spec []types.DVPortgroupConfigSpec) (*Task, error) { + req := types.AddDVPortgroup_Task{ + This: s.Reference(), + Spec: spec, + } + + res, err := methods.AddDVPortgroup_Task(ctx, s.Client(), &req) + if err != nil { + return nil, err + } + + return NewTask(s.Client(), res.Returnval), nil +} + +func (s DistributedVirtualSwitch) FetchDVPorts(ctx context.Context, criteria *types.DistributedVirtualSwitchPortCriteria) ([]types.DistributedVirtualPort, error) { + req := &types.FetchDVPorts{ + This: s.Reference(), + Criteria: criteria, + } + + res, err := methods.FetchDVPorts(ctx, s.Client(), req) + if err != nil { + return nil, err + } + return res.Returnval, nil +} + +func (s DistributedVirtualSwitch) ReconfigureDVPort(ctx context.Context, spec []types.DVPortConfigSpec) (*Task, error) { + req := types.ReconfigureDVPort_Task{ + This: s.Reference(), + Port: spec, + } + + res, err := methods.ReconfigureDVPort_Task(ctx, s.Client(), &req) + if err != nil { + return nil, err + } + + return NewTask(s.Client(), res.Returnval), nil +} diff --git a/vendor/github.com/vmware/govmomi/object/extension_manager.go b/vendor/github.com/vmware/govmomi/object/extension_manager.go new file mode 100644 index 0000000..94ade01 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/extension_manager.go @@ -0,0 +1,113 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type ExtensionManager struct { + Common +} + +// GetExtensionManager wraps NewExtensionManager, returning ErrNotSupported +// when the client is not connected to a vCenter instance. +func GetExtensionManager(c *vim25.Client) (*ExtensionManager, error) { + if c.ServiceContent.ExtensionManager == nil { + return nil, ErrNotSupported + } + return NewExtensionManager(c), nil +} + +func NewExtensionManager(c *vim25.Client) *ExtensionManager { + o := ExtensionManager{ + Common: NewCommon(c, *c.ServiceContent.ExtensionManager), + } + + return &o +} + +func (m ExtensionManager) List(ctx context.Context) ([]types.Extension, error) { + var em mo.ExtensionManager + + err := m.Properties(ctx, m.Reference(), []string{"extensionList"}, &em) + if err != nil { + return nil, err + } + + return em.ExtensionList, nil +} + +func (m ExtensionManager) Find(ctx context.Context, key string) (*types.Extension, error) { + req := types.FindExtension{ + This: m.Reference(), + ExtensionKey: key, + } + + res, err := methods.FindExtension(ctx, m.c, &req) + if err != nil { + return nil, err + } + + return res.Returnval, nil +} + +func (m ExtensionManager) Register(ctx context.Context, extension types.Extension) error { + req := types.RegisterExtension{ + This: m.Reference(), + Extension: extension, + } + + _, err := methods.RegisterExtension(ctx, m.c, &req) + return err +} + +func (m ExtensionManager) SetCertificate(ctx context.Context, key string, certificatePem string) error { + req := types.SetExtensionCertificate{ + This: m.Reference(), + ExtensionKey: key, + CertificatePem: certificatePem, + } + + _, err := methods.SetExtensionCertificate(ctx, m.c, &req) + return err +} + +func (m ExtensionManager) Unregister(ctx context.Context, key string) error { + req := types.UnregisterExtension{ + This: m.Reference(), + ExtensionKey: key, + } + + _, err := methods.UnregisterExtension(ctx, m.c, &req) + return err +} + +func (m ExtensionManager) Update(ctx context.Context, extension types.Extension) error { + req := types.UpdateExtension{ + This: m.Reference(), + Extension: extension, + } + + _, err := methods.UpdateExtension(ctx, m.c, &req) + return err +} diff --git a/vendor/github.com/vmware/govmomi/object/file_manager.go b/vendor/github.com/vmware/govmomi/object/file_manager.go new file mode 100644 index 0000000..8e8f5d3 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/file_manager.go @@ -0,0 +1,126 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/types" +) + +type FileManager struct { + Common +} + +func NewFileManager(c *vim25.Client) *FileManager { + f := FileManager{ + Common: NewCommon(c, *c.ServiceContent.FileManager), + } + + return &f +} + +func (f FileManager) CopyDatastoreFile(ctx context.Context, sourceName string, sourceDatacenter *Datacenter, destinationName string, destinationDatacenter *Datacenter, force bool) (*Task, error) { + req := types.CopyDatastoreFile_Task{ + This: f.Reference(), + SourceName: sourceName, + DestinationName: destinationName, + Force: types.NewBool(force), + } + + if sourceDatacenter != nil { + ref := sourceDatacenter.Reference() + req.SourceDatacenter = &ref + } + + if destinationDatacenter != nil { + ref := destinationDatacenter.Reference() + req.DestinationDatacenter = &ref + } + + res, err := methods.CopyDatastoreFile_Task(ctx, f.c, &req) + if err != nil { + return nil, err + } + + return NewTask(f.c, res.Returnval), nil +} + +// DeleteDatastoreFile deletes the specified file or folder from the datastore. +func (f FileManager) DeleteDatastoreFile(ctx context.Context, name string, dc *Datacenter) (*Task, error) { + req := types.DeleteDatastoreFile_Task{ + This: f.Reference(), + Name: name, + } + + if dc != nil { + ref := dc.Reference() + req.Datacenter = &ref + } + + res, err := methods.DeleteDatastoreFile_Task(ctx, f.c, &req) + if err != nil { + return nil, err + } + + return NewTask(f.c, res.Returnval), nil +} + +// MakeDirectory creates a folder using the specified name. +func (f FileManager) MakeDirectory(ctx context.Context, name string, dc *Datacenter, createParentDirectories bool) error { + req := types.MakeDirectory{ + This: f.Reference(), + Name: name, + CreateParentDirectories: types.NewBool(createParentDirectories), + } + + if dc != nil { + ref := dc.Reference() + req.Datacenter = &ref + } + + _, err := methods.MakeDirectory(ctx, f.c, &req) + return err +} + +func (f FileManager) MoveDatastoreFile(ctx context.Context, sourceName string, sourceDatacenter *Datacenter, destinationName string, destinationDatacenter *Datacenter, force bool) (*Task, error) { + req := types.MoveDatastoreFile_Task{ + This: f.Reference(), + SourceName: sourceName, + DestinationName: destinationName, + Force: types.NewBool(force), + } + + if sourceDatacenter != nil { + ref := sourceDatacenter.Reference() + req.SourceDatacenter = &ref + } + + if destinationDatacenter != nil { + ref := destinationDatacenter.Reference() + req.DestinationDatacenter = &ref + } + + res, err := methods.MoveDatastoreFile_Task(ctx, f.c, &req) + if err != nil { + return nil, err + } + + return NewTask(f.c, res.Returnval), nil +} diff --git a/vendor/github.com/vmware/govmomi/object/folder.go b/vendor/github.com/vmware/govmomi/object/folder.go new file mode 100644 index 0000000..7a69949 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/folder.go @@ -0,0 +1,227 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type Folder struct { + Common +} + +func NewFolder(c *vim25.Client, ref types.ManagedObjectReference) *Folder { + return &Folder{ + Common: NewCommon(c, ref), + } +} + +func NewRootFolder(c *vim25.Client) *Folder { + f := NewFolder(c, c.ServiceContent.RootFolder) + f.InventoryPath = "/" + return f +} + +func (f Folder) Children(ctx context.Context) ([]Reference, error) { + var mf mo.Folder + + err := f.Properties(ctx, f.Reference(), []string{"childEntity"}, &mf) + if err != nil { + return nil, err + } + + var rs []Reference + for _, e := range mf.ChildEntity { + if r := NewReference(f.c, e); r != nil { + rs = append(rs, r) + } + } + + return rs, nil +} + +func (f Folder) CreateDatacenter(ctx context.Context, datacenter string) (*Datacenter, error) { + req := types.CreateDatacenter{ + This: f.Reference(), + Name: datacenter, + } + + res, err := methods.CreateDatacenter(ctx, f.c, &req) + if err != nil { + return nil, err + } + + // Response will be nil if this is an ESX host that does not belong to a vCenter + if res == nil { + return nil, nil + } + + return NewDatacenter(f.c, res.Returnval), nil +} + +func (f Folder) CreateCluster(ctx context.Context, cluster string, spec types.ClusterConfigSpecEx) (*ClusterComputeResource, error) { + req := types.CreateClusterEx{ + This: f.Reference(), + Name: cluster, + Spec: spec, + } + + res, err := methods.CreateClusterEx(ctx, f.c, &req) + if err != nil { + return nil, err + } + + // Response will be nil if this is an ESX host that does not belong to a vCenter + if res == nil { + return nil, nil + } + + return NewClusterComputeResource(f.c, res.Returnval), nil +} + +func (f Folder) CreateFolder(ctx context.Context, name string) (*Folder, error) { + req := types.CreateFolder{ + This: f.Reference(), + Name: name, + } + + res, err := methods.CreateFolder(ctx, f.c, &req) + if err != nil { + return nil, err + } + + return NewFolder(f.c, res.Returnval), err +} + +func (f Folder) CreateStoragePod(ctx context.Context, name string) (*StoragePod, error) { + req := types.CreateStoragePod{ + This: f.Reference(), + Name: name, + } + + res, err := methods.CreateStoragePod(ctx, f.c, &req) + if err != nil { + return nil, err + } + + return NewStoragePod(f.c, res.Returnval), err +} + +func (f Folder) AddStandaloneHost(ctx context.Context, spec types.HostConnectSpec, addConnected bool, license *string, compResSpec *types.BaseComputeResourceConfigSpec) (*Task, error) { + req := types.AddStandaloneHost_Task{ + This: f.Reference(), + Spec: spec, + AddConnected: addConnected, + } + + if license != nil { + req.License = *license + } + + if compResSpec != nil { + req.CompResSpec = *compResSpec + } + + res, err := methods.AddStandaloneHost_Task(ctx, f.c, &req) + if err != nil { + return nil, err + } + + return NewTask(f.c, res.Returnval), nil +} + +func (f Folder) CreateVM(ctx context.Context, config types.VirtualMachineConfigSpec, pool *ResourcePool, host *HostSystem) (*Task, error) { + req := types.CreateVM_Task{ + This: f.Reference(), + Config: config, + Pool: pool.Reference(), + } + + if host != nil { + ref := host.Reference() + req.Host = &ref + } + + res, err := methods.CreateVM_Task(ctx, f.c, &req) + if err != nil { + return nil, err + } + + return NewTask(f.c, res.Returnval), nil +} + +func (f Folder) RegisterVM(ctx context.Context, path string, name string, asTemplate bool, pool *ResourcePool, host *HostSystem) (*Task, error) { + req := types.RegisterVM_Task{ + This: f.Reference(), + Path: path, + AsTemplate: asTemplate, + } + + if name != "" { + req.Name = name + } + + if host != nil { + ref := host.Reference() + req.Host = &ref + } + + if pool != nil { + ref := pool.Reference() + req.Pool = &ref + } + + res, err := methods.RegisterVM_Task(ctx, f.c, &req) + if err != nil { + return nil, err + } + + return NewTask(f.c, res.Returnval), nil +} + +func (f Folder) CreateDVS(ctx context.Context, spec types.DVSCreateSpec) (*Task, error) { + req := types.CreateDVS_Task{ + This: f.Reference(), + Spec: spec, + } + + res, err := methods.CreateDVS_Task(ctx, f.c, &req) + if err != nil { + return nil, err + } + + return NewTask(f.c, res.Returnval), nil +} + +func (f Folder) MoveInto(ctx context.Context, list []types.ManagedObjectReference) (*Task, error) { + req := types.MoveIntoFolder_Task{ + This: f.Reference(), + List: list, + } + + res, err := methods.MoveIntoFolder_Task(ctx, f.c, &req) + if err != nil { + return nil, err + } + + return NewTask(f.c, res.Returnval), nil +} diff --git a/vendor/github.com/vmware/govmomi/object/history_collector.go b/vendor/github.com/vmware/govmomi/object/history_collector.go new file mode 100644 index 0000000..afdcab7 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/history_collector.go @@ -0,0 +1,72 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/types" +) + +type HistoryCollector struct { + Common +} + +func NewHistoryCollector(c *vim25.Client, ref types.ManagedObjectReference) *HistoryCollector { + return &HistoryCollector{ + Common: NewCommon(c, ref), + } +} + +func (h HistoryCollector) Destroy(ctx context.Context) error { + req := types.DestroyCollector{ + This: h.Reference(), + } + + _, err := methods.DestroyCollector(ctx, h.c, &req) + return err +} + +func (h HistoryCollector) Reset(ctx context.Context) error { + req := types.ResetCollector{ + This: h.Reference(), + } + + _, err := methods.ResetCollector(ctx, h.c, &req) + return err +} + +func (h HistoryCollector) Rewind(ctx context.Context) error { + req := types.RewindCollector{ + This: h.Reference(), + } + + _, err := methods.RewindCollector(ctx, h.c, &req) + return err +} + +func (h HistoryCollector) SetPageSize(ctx context.Context, maxCount int32) error { + req := types.SetCollectorPageSize{ + This: h.Reference(), + MaxCount: maxCount, + } + + _, err := methods.SetCollectorPageSize(ctx, h.c, &req) + return err +} diff --git a/vendor/github.com/vmware/govmomi/object/host_account_manager.go b/vendor/github.com/vmware/govmomi/object/host_account_manager.go new file mode 100644 index 0000000..640aff8 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/host_account_manager.go @@ -0,0 +1,65 @@ +/* +Copyright (c) 2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/types" +) + +type HostAccountManager struct { + Common +} + +func NewHostAccountManager(c *vim25.Client, ref types.ManagedObjectReference) *HostAccountManager { + return &HostAccountManager{ + Common: NewCommon(c, ref), + } +} + +func (m HostAccountManager) Create(ctx context.Context, user *types.HostAccountSpec) error { + req := types.CreateUser{ + This: m.Reference(), + User: user, + } + + _, err := methods.CreateUser(ctx, m.Client(), &req) + return err +} + +func (m HostAccountManager) Update(ctx context.Context, user *types.HostAccountSpec) error { + req := types.UpdateUser{ + This: m.Reference(), + User: user, + } + + _, err := methods.UpdateUser(ctx, m.Client(), &req) + return err +} + +func (m HostAccountManager) Remove(ctx context.Context, userName string) error { + req := types.RemoveUser{ + This: m.Reference(), + UserName: userName, + } + + _, err := methods.RemoveUser(ctx, m.Client(), &req) + return err +} diff --git a/vendor/github.com/vmware/govmomi/object/host_certificate_info.go b/vendor/github.com/vmware/govmomi/object/host_certificate_info.go new file mode 100644 index 0000000..52c26a9 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/host_certificate_info.go @@ -0,0 +1,250 @@ +/* +Copyright (c) 2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "crypto/sha256" + "crypto/tls" + "crypto/x509" + "crypto/x509/pkix" + "encoding/asn1" + "fmt" + "io" + "net/url" + "strings" + "text/tabwriter" + + "github.com/vmware/govmomi/vim25/soap" + "github.com/vmware/govmomi/vim25/types" +) + +// HostCertificateInfo provides helpers for types.HostCertificateManagerCertificateInfo +type HostCertificateInfo struct { + types.HostCertificateManagerCertificateInfo + + ThumbprintSHA1 string + ThumbprintSHA256 string + + Err error + Certificate *x509.Certificate `json:"-"` + + subjectName *pkix.Name + issuerName *pkix.Name +} + +// FromCertificate converts x509.Certificate to HostCertificateInfo +func (info *HostCertificateInfo) FromCertificate(cert *x509.Certificate) *HostCertificateInfo { + info.Certificate = cert + info.subjectName = &cert.Subject + info.issuerName = &cert.Issuer + + info.Issuer = info.fromName(info.issuerName) + info.NotBefore = &cert.NotBefore + info.NotAfter = &cert.NotAfter + info.Subject = info.fromName(info.subjectName) + + info.ThumbprintSHA1 = soap.ThumbprintSHA1(cert) + + // SHA-256 for info purposes only, API fields all use SHA-1 + sum := sha256.Sum256(cert.Raw) + hex := make([]string, len(sum)) + for i, b := range sum { + hex[i] = fmt.Sprintf("%02X", b) + } + info.ThumbprintSHA256 = strings.Join(hex, ":") + + if info.Status == "" { + info.Status = string(types.HostCertificateManagerCertificateInfoCertificateStatusUnknown) + } + + return info +} + +// FromURL connects to the given URL.Host via tls.Dial with the given tls.Config and populates the HostCertificateInfo +// via tls.ConnectionState. If the certificate was verified with the given tls.Config, the Err field will be nil. +// Otherwise, Err will be set to the x509.UnknownAuthorityError or x509.HostnameError. +// If tls.Dial returns an error of any other type, that error is returned. +func (info *HostCertificateInfo) FromURL(u *url.URL, config *tls.Config) error { + addr := u.Host + if !(strings.LastIndex(addr, ":") > strings.LastIndex(addr, "]")) { + addr += ":443" + } + + conn, err := tls.Dial("tcp", addr, config) + if err != nil { + switch err.(type) { + case x509.UnknownAuthorityError: + case x509.HostnameError: + default: + return err + } + + info.Err = err + + conn, err = tls.Dial("tcp", addr, &tls.Config{InsecureSkipVerify: true}) + if err != nil { + return err + } + } else { + info.Status = string(types.HostCertificateManagerCertificateInfoCertificateStatusGood) + } + + state := conn.ConnectionState() + _ = conn.Close() + info.FromCertificate(state.PeerCertificates[0]) + + return nil +} + +var emailAddressOID = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 9, 1} + +func (info *HostCertificateInfo) fromName(name *pkix.Name) string { + var attrs []string + + oids := map[string]string{ + emailAddressOID.String(): "emailAddress", + } + + for _, attr := range name.Names { + if key, ok := oids[attr.Type.String()]; ok { + attrs = append(attrs, fmt.Sprintf("%s=%s", key, attr.Value)) + } + } + + attrs = append(attrs, fmt.Sprintf("CN=%s", name.CommonName)) + + add := func(key string, vals []string) { + for _, val := range vals { + attrs = append(attrs, fmt.Sprintf("%s=%s", key, val)) + } + } + + elts := []struct { + key string + val []string + }{ + {"OU", name.OrganizationalUnit}, + {"O", name.Organization}, + {"L", name.Locality}, + {"ST", name.Province}, + {"C", name.Country}, + } + + for _, elt := range elts { + add(elt.key, elt.val) + } + + return strings.Join(attrs, ",") +} + +func (info *HostCertificateInfo) toName(s string) *pkix.Name { + var name pkix.Name + + for _, pair := range strings.Split(s, ",") { + attr := strings.SplitN(pair, "=", 2) + if len(attr) != 2 { + continue + } + + v := attr[1] + + switch strings.ToLower(attr[0]) { + case "cn": + name.CommonName = v + case "ou": + name.OrganizationalUnit = append(name.OrganizationalUnit, v) + case "o": + name.Organization = append(name.Organization, v) + case "l": + name.Locality = append(name.Locality, v) + case "st": + name.Province = append(name.Province, v) + case "c": + name.Country = append(name.Country, v) + case "emailaddress": + name.Names = append(name.Names, pkix.AttributeTypeAndValue{Type: emailAddressOID, Value: v}) + } + } + + return &name +} + +// SubjectName parses Subject into a pkix.Name +func (info *HostCertificateInfo) SubjectName() *pkix.Name { + if info.subjectName != nil { + return info.subjectName + } + + return info.toName(info.Subject) +} + +// IssuerName parses Issuer into a pkix.Name +func (info *HostCertificateInfo) IssuerName() *pkix.Name { + if info.issuerName != nil { + return info.issuerName + } + + return info.toName(info.Issuer) +} + +// Write outputs info similar to the Chrome Certificate Viewer. +func (info *HostCertificateInfo) Write(w io.Writer) error { + tw := tabwriter.NewWriter(w, 2, 0, 2, ' ', 0) + + s := func(val string) string { + if val != "" { + return val + } + return "" + } + + ss := func(val []string) string { + return s(strings.Join(val, ",")) + } + + name := func(n *pkix.Name) { + fmt.Fprintf(tw, " Common Name (CN):\t%s\n", s(n.CommonName)) + fmt.Fprintf(tw, " Organization (O):\t%s\n", ss(n.Organization)) + fmt.Fprintf(tw, " Organizational Unit (OU):\t%s\n", ss(n.OrganizationalUnit)) + } + + status := info.Status + if info.Err != nil { + status = fmt.Sprintf("ERROR %s", info.Err) + } + fmt.Fprintf(tw, "Certificate Status:\t%s\n", status) + + fmt.Fprintln(tw, "Issued To:\t") + name(info.SubjectName()) + + fmt.Fprintln(tw, "Issued By:\t") + name(info.IssuerName()) + + fmt.Fprintln(tw, "Validity Period:\t") + fmt.Fprintf(tw, " Issued On:\t%s\n", info.NotBefore) + fmt.Fprintf(tw, " Expires On:\t%s\n", info.NotAfter) + + if info.ThumbprintSHA1 != "" { + fmt.Fprintln(tw, "Thumbprints:\t") + if info.ThumbprintSHA256 != "" { + fmt.Fprintf(tw, " SHA-256 Thumbprint:\t%s\n", info.ThumbprintSHA256) + } + fmt.Fprintf(tw, " SHA-1 Thumbprint:\t%s\n", info.ThumbprintSHA1) + } + + return tw.Flush() +} diff --git a/vendor/github.com/vmware/govmomi/object/host_certificate_manager.go b/vendor/github.com/vmware/govmomi/object/host_certificate_manager.go new file mode 100644 index 0000000..ddf1d8c --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/host_certificate_manager.go @@ -0,0 +1,162 @@ +/* +Copyright (c) 2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/property" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +// HostCertificateManager provides helper methods around the HostSystem.ConfigManager.CertificateManager +type HostCertificateManager struct { + Common + Host *HostSystem +} + +// NewHostCertificateManager creates a new HostCertificateManager helper +func NewHostCertificateManager(c *vim25.Client, ref types.ManagedObjectReference, host types.ManagedObjectReference) *HostCertificateManager { + return &HostCertificateManager{ + Common: NewCommon(c, ref), + Host: NewHostSystem(c, host), + } +} + +// CertificateInfo wraps the host CertificateManager certificateInfo property with the HostCertificateInfo helper. +// The ThumbprintSHA1 field is set to HostSystem.Summary.Config.SslThumbprint if the host system is managed by a vCenter. +func (m HostCertificateManager) CertificateInfo(ctx context.Context) (*HostCertificateInfo, error) { + var hs mo.HostSystem + var cm mo.HostCertificateManager + + pc := property.DefaultCollector(m.Client()) + + err := pc.RetrieveOne(ctx, m.Reference(), []string{"certificateInfo"}, &cm) + if err != nil { + return nil, err + } + + _ = pc.RetrieveOne(ctx, m.Host.Reference(), []string{"summary.config.sslThumbprint"}, &hs) + + return &HostCertificateInfo{ + HostCertificateManagerCertificateInfo: cm.CertificateInfo, + ThumbprintSHA1: hs.Summary.Config.SslThumbprint, + }, nil +} + +// GenerateCertificateSigningRequest requests the host system to generate a certificate-signing request (CSR) for itself. +// The CSR is then typically provided to a Certificate Authority to sign and issue the SSL certificate for the host system. +// Use InstallServerCertificate to import this certificate. +func (m HostCertificateManager) GenerateCertificateSigningRequest(ctx context.Context, useIPAddressAsCommonName bool) (string, error) { + req := types.GenerateCertificateSigningRequest{ + This: m.Reference(), + UseIpAddressAsCommonName: useIPAddressAsCommonName, + } + + res, err := methods.GenerateCertificateSigningRequest(ctx, m.Client(), &req) + if err != nil { + return "", err + } + + return res.Returnval, nil +} + +// GenerateCertificateSigningRequestByDn requests the host system to generate a certificate-signing request (CSR) for itself. +// Alternative version similar to GenerateCertificateSigningRequest but takes a Distinguished Name (DN) as a parameter. +func (m HostCertificateManager) GenerateCertificateSigningRequestByDn(ctx context.Context, distinguishedName string) (string, error) { + req := types.GenerateCertificateSigningRequestByDn{ + This: m.Reference(), + DistinguishedName: distinguishedName, + } + + res, err := methods.GenerateCertificateSigningRequestByDn(ctx, m.Client(), &req) + if err != nil { + return "", err + } + + return res.Returnval, nil +} + +// InstallServerCertificate imports the given SSL certificate to the host system. +func (m HostCertificateManager) InstallServerCertificate(ctx context.Context, cert string) error { + req := types.InstallServerCertificate{ + This: m.Reference(), + Cert: cert, + } + + _, err := methods.InstallServerCertificate(ctx, m.Client(), &req) + if err != nil { + return err + } + + // NotifyAffectedService is internal, not exposing as we don't have a use case other than with InstallServerCertificate + // Without this call, hostd needs to be restarted to use the updated certificate + // Note: using Refresh as it has the same struct/signature, we just need to use different xml name tags + body := struct { + Req *types.Refresh `xml:"urn:vim25 NotifyAffectedServices,omitempty"` + Res *types.RefreshResponse `xml:"urn:vim25 NotifyAffectedServicesResponse,omitempty"` + methods.RefreshBody + }{ + Req: &types.Refresh{This: m.Reference()}, + } + + return m.Client().RoundTrip(ctx, &body, &body) +} + +// ListCACertificateRevocationLists returns the SSL CRLs of Certificate Authorities that are trusted by the host system. +func (m HostCertificateManager) ListCACertificateRevocationLists(ctx context.Context) ([]string, error) { + req := types.ListCACertificateRevocationLists{ + This: m.Reference(), + } + + res, err := methods.ListCACertificateRevocationLists(ctx, m.Client(), &req) + if err != nil { + return nil, err + } + + return res.Returnval, nil +} + +// ListCACertificates returns the SSL certificates of Certificate Authorities that are trusted by the host system. +func (m HostCertificateManager) ListCACertificates(ctx context.Context) ([]string, error) { + req := types.ListCACertificates{ + This: m.Reference(), + } + + res, err := methods.ListCACertificates(ctx, m.Client(), &req) + if err != nil { + return nil, err + } + + return res.Returnval, nil +} + +// ReplaceCACertificatesAndCRLs replaces the trusted CA certificates and CRL used by the host system. +// These determine whether the server can verify the identity of an external entity. +func (m HostCertificateManager) ReplaceCACertificatesAndCRLs(ctx context.Context, caCert []string, caCrl []string) error { + req := types.ReplaceCACertificatesAndCRLs{ + This: m.Reference(), + CaCert: caCert, + CaCrl: caCrl, + } + + _, err := methods.ReplaceCACertificatesAndCRLs(ctx, m.Client(), &req) + return err +} diff --git a/vendor/github.com/vmware/govmomi/object/host_config_manager.go b/vendor/github.com/vmware/govmomi/object/host_config_manager.go new file mode 100644 index 0000000..eac59a3 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/host_config_manager.go @@ -0,0 +1,171 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + "fmt" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/types" +) + +type HostConfigManager struct { + Common +} + +func NewHostConfigManager(c *vim25.Client, ref types.ManagedObjectReference) *HostConfigManager { + return &HostConfigManager{ + Common: NewCommon(c, ref), + } +} + +// reference returns the ManagedObjectReference for the given HostConfigManager property name. +// An error is returned if the field is nil, of type ErrNotSupported if versioned is true. +func (m HostConfigManager) reference(ctx context.Context, name string, versioned ...bool) (types.ManagedObjectReference, error) { + prop := "configManager." + name + var content []types.ObjectContent + + err := m.Properties(ctx, m.Reference(), []string{prop}, &content) + if err != nil { + return types.ManagedObjectReference{}, err + } + + for _, c := range content { + for _, p := range c.PropSet { + if p.Name != prop { + continue + } + if ref, ok := p.Val.(types.ManagedObjectReference); ok { + return ref, nil + } + } + } + + err = fmt.Errorf("%s %s is nil", m.Reference(), prop) + if len(versioned) == 1 && versioned[0] { + err = ErrNotSupported + } + return types.ManagedObjectReference{}, err +} + +func (m HostConfigManager) DatastoreSystem(ctx context.Context) (*HostDatastoreSystem, error) { + ref, err := m.reference(ctx, "datastoreSystem") + if err != nil { + return nil, err + } + return NewHostDatastoreSystem(m.c, ref), nil +} + +func (m HostConfigManager) NetworkSystem(ctx context.Context) (*HostNetworkSystem, error) { + ref, err := m.reference(ctx, "networkSystem") + if err != nil { + return nil, err + } + return NewHostNetworkSystem(m.c, ref), nil +} + +func (m HostConfigManager) FirewallSystem(ctx context.Context) (*HostFirewallSystem, error) { + ref, err := m.reference(ctx, "firewallSystem") + if err != nil { + return nil, err + } + + return NewHostFirewallSystem(m.c, ref), nil +} + +func (m HostConfigManager) StorageSystem(ctx context.Context) (*HostStorageSystem, error) { + ref, err := m.reference(ctx, "storageSystem") + if err != nil { + return nil, err + } + return NewHostStorageSystem(m.c, ref), nil +} + +func (m HostConfigManager) VirtualNicManager(ctx context.Context) (*HostVirtualNicManager, error) { + ref, err := m.reference(ctx, "virtualNicManager") + if err != nil { + return nil, err + } + return NewHostVirtualNicManager(m.c, ref, m.Reference()), nil +} + +func (m HostConfigManager) VsanSystem(ctx context.Context) (*HostVsanSystem, error) { + ref, err := m.reference(ctx, "vsanSystem", true) // Added in 5.5 + if err != nil { + return nil, err + } + return NewHostVsanSystem(m.c, ref), nil +} + +func (m HostConfigManager) VsanInternalSystem(ctx context.Context) (*HostVsanInternalSystem, error) { + ref, err := m.reference(ctx, "vsanInternalSystem", true) // Added in 5.5 + if err != nil { + return nil, err + } + return NewHostVsanInternalSystem(m.c, ref), nil +} + +func (m HostConfigManager) AccountManager(ctx context.Context) (*HostAccountManager, error) { + ref, err := m.reference(ctx, "accountManager", true) // Added in 5.5 + if err != nil { + if err == ErrNotSupported { + // Versions < 5.5 can use the ServiceContent ref, + // but only when connected directly to ESX. + if m.c.ServiceContent.AccountManager == nil { + return nil, err + } + ref = *m.c.ServiceContent.AccountManager + } else { + return nil, err + } + } + + return NewHostAccountManager(m.c, ref), nil +} + +func (m HostConfigManager) OptionManager(ctx context.Context) (*OptionManager, error) { + ref, err := m.reference(ctx, "advancedOption") + if err != nil { + return nil, err + } + return NewOptionManager(m.c, ref), nil +} + +func (m HostConfigManager) ServiceSystem(ctx context.Context) (*HostServiceSystem, error) { + ref, err := m.reference(ctx, "serviceSystem") + if err != nil { + return nil, err + } + return NewHostServiceSystem(m.c, ref), nil +} + +func (m HostConfigManager) CertificateManager(ctx context.Context) (*HostCertificateManager, error) { + ref, err := m.reference(ctx, "certificateManager", true) // Added in 6.0 + if err != nil { + return nil, err + } + return NewHostCertificateManager(m.c, ref, m.Reference()), nil +} + +func (m HostConfigManager) DateTimeSystem(ctx context.Context) (*HostDateTimeSystem, error) { + ref, err := m.reference(ctx, "dateTimeSystem") + if err != nil { + return nil, err + } + return NewHostDateTimeSystem(m.c, ref), nil +} diff --git a/vendor/github.com/vmware/govmomi/object/host_datastore_browser.go b/vendor/github.com/vmware/govmomi/object/host_datastore_browser.go new file mode 100644 index 0000000..b0c9e08 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/host_datastore_browser.go @@ -0,0 +1,65 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/types" +) + +type HostDatastoreBrowser struct { + Common +} + +func NewHostDatastoreBrowser(c *vim25.Client, ref types.ManagedObjectReference) *HostDatastoreBrowser { + return &HostDatastoreBrowser{ + Common: NewCommon(c, ref), + } +} + +func (b HostDatastoreBrowser) SearchDatastore(ctx context.Context, datastorePath string, searchSpec *types.HostDatastoreBrowserSearchSpec) (*Task, error) { + req := types.SearchDatastore_Task{ + This: b.Reference(), + DatastorePath: datastorePath, + SearchSpec: searchSpec, + } + + res, err := methods.SearchDatastore_Task(ctx, b.c, &req) + if err != nil { + return nil, err + } + + return NewTask(b.c, res.Returnval), nil +} + +func (b HostDatastoreBrowser) SearchDatastoreSubFolders(ctx context.Context, datastorePath string, searchSpec *types.HostDatastoreBrowserSearchSpec) (*Task, error) { + req := types.SearchDatastoreSubFolders_Task{ + This: b.Reference(), + DatastorePath: datastorePath, + SearchSpec: searchSpec, + } + + res, err := methods.SearchDatastoreSubFolders_Task(ctx, b.c, &req) + if err != nil { + return nil, err + } + + return NewTask(b.c, res.Returnval), nil +} diff --git a/vendor/github.com/vmware/govmomi/object/host_datastore_system.go b/vendor/github.com/vmware/govmomi/object/host_datastore_system.go new file mode 100644 index 0000000..64f3add --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/host_datastore_system.go @@ -0,0 +1,135 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/types" +) + +type HostDatastoreSystem struct { + Common +} + +func NewHostDatastoreSystem(c *vim25.Client, ref types.ManagedObjectReference) *HostDatastoreSystem { + return &HostDatastoreSystem{ + Common: NewCommon(c, ref), + } +} + +func (s HostDatastoreSystem) CreateLocalDatastore(ctx context.Context, name string, path string) (*Datastore, error) { + req := types.CreateLocalDatastore{ + This: s.Reference(), + Name: name, + Path: path, + } + + res, err := methods.CreateLocalDatastore(ctx, s.Client(), &req) + if err != nil { + return nil, err + } + + return NewDatastore(s.Client(), res.Returnval), nil +} + +func (s HostDatastoreSystem) CreateNasDatastore(ctx context.Context, spec types.HostNasVolumeSpec) (*Datastore, error) { + req := types.CreateNasDatastore{ + This: s.Reference(), + Spec: spec, + } + + res, err := methods.CreateNasDatastore(ctx, s.Client(), &req) + if err != nil { + return nil, err + } + + return NewDatastore(s.Client(), res.Returnval), nil +} + +func (s HostDatastoreSystem) CreateVmfsDatastore(ctx context.Context, spec types.VmfsDatastoreCreateSpec) (*Datastore, error) { + req := types.CreateVmfsDatastore{ + This: s.Reference(), + Spec: spec, + } + + res, err := methods.CreateVmfsDatastore(ctx, s.Client(), &req) + if err != nil { + return nil, err + } + + return NewDatastore(s.Client(), res.Returnval), nil +} + +func (s HostDatastoreSystem) Remove(ctx context.Context, ds *Datastore) error { + req := types.RemoveDatastore{ + This: s.Reference(), + Datastore: ds.Reference(), + } + + _, err := methods.RemoveDatastore(ctx, s.Client(), &req) + if err != nil { + return err + } + + return nil +} + +func (s HostDatastoreSystem) QueryAvailableDisksForVmfs(ctx context.Context) ([]types.HostScsiDisk, error) { + req := types.QueryAvailableDisksForVmfs{ + This: s.Reference(), + } + + res, err := methods.QueryAvailableDisksForVmfs(ctx, s.Client(), &req) + if err != nil { + return nil, err + } + + return res.Returnval, nil +} + +func (s HostDatastoreSystem) QueryVmfsDatastoreCreateOptions(ctx context.Context, devicePath string) ([]types.VmfsDatastoreOption, error) { + req := types.QueryVmfsDatastoreCreateOptions{ + This: s.Reference(), + DevicePath: devicePath, + } + + res, err := methods.QueryVmfsDatastoreCreateOptions(ctx, s.Client(), &req) + if err != nil { + return nil, err + } + + return res.Returnval, nil +} + +func (s HostDatastoreSystem) ResignatureUnresolvedVmfsVolumes(ctx context.Context, devicePaths []string) (*Task, error) { + req := &types.ResignatureUnresolvedVmfsVolume_Task{ + This: s.Reference(), + ResolutionSpec: types.HostUnresolvedVmfsResignatureSpec{ + ExtentDevicePath: devicePaths, + }, + } + + res, err := methods.ResignatureUnresolvedVmfsVolume_Task(ctx, s.Client(), req) + if err != nil { + return nil, err + } + + return NewTask(s.c, res.Returnval), nil +} diff --git a/vendor/github.com/vmware/govmomi/object/host_date_time_system.go b/vendor/github.com/vmware/govmomi/object/host_date_time_system.go new file mode 100644 index 0000000..7c9203d --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/host_date_time_system.go @@ -0,0 +1,69 @@ +/* +Copyright (c) 2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + "time" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/types" +) + +type HostDateTimeSystem struct { + Common +} + +func NewHostDateTimeSystem(c *vim25.Client, ref types.ManagedObjectReference) *HostDateTimeSystem { + return &HostDateTimeSystem{ + Common: NewCommon(c, ref), + } +} + +func (s HostDateTimeSystem) UpdateConfig(ctx context.Context, config types.HostDateTimeConfig) error { + req := types.UpdateDateTimeConfig{ + This: s.Reference(), + Config: config, + } + + _, err := methods.UpdateDateTimeConfig(ctx, s.c, &req) + return err +} + +func (s HostDateTimeSystem) Update(ctx context.Context, date time.Time) error { + req := types.UpdateDateTime{ + This: s.Reference(), + DateTime: date, + } + + _, err := methods.UpdateDateTime(ctx, s.c, &req) + return err +} + +func (s HostDateTimeSystem) Query(ctx context.Context) (*time.Time, error) { + req := types.QueryDateTime{ + This: s.Reference(), + } + + res, err := methods.QueryDateTime(ctx, s.c, &req) + if err != nil { + return nil, err + } + + return &res.Returnval, nil +} diff --git a/vendor/github.com/vmware/govmomi/object/host_firewall_system.go b/vendor/github.com/vmware/govmomi/object/host_firewall_system.go new file mode 100644 index 0000000..0b14402 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/host_firewall_system.go @@ -0,0 +1,181 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + "errors" + "fmt" + "strings" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type HostFirewallSystem struct { + Common +} + +func NewHostFirewallSystem(c *vim25.Client, ref types.ManagedObjectReference) *HostFirewallSystem { + return &HostFirewallSystem{ + Common: NewCommon(c, ref), + } +} + +func (s HostFirewallSystem) DisableRuleset(ctx context.Context, id string) error { + req := types.DisableRuleset{ + This: s.Reference(), + Id: id, + } + + _, err := methods.DisableRuleset(ctx, s.c, &req) + return err +} + +func (s HostFirewallSystem) EnableRuleset(ctx context.Context, id string) error { + req := types.EnableRuleset{ + This: s.Reference(), + Id: id, + } + + _, err := methods.EnableRuleset(ctx, s.c, &req) + return err +} + +func (s HostFirewallSystem) Refresh(ctx context.Context) error { + req := types.RefreshFirewall{ + This: s.Reference(), + } + + _, err := methods.RefreshFirewall(ctx, s.c, &req) + return err +} + +func (s HostFirewallSystem) Info(ctx context.Context) (*types.HostFirewallInfo, error) { + var fs mo.HostFirewallSystem + + err := s.Properties(ctx, s.Reference(), []string{"firewallInfo"}, &fs) + if err != nil { + return nil, err + } + + return fs.FirewallInfo, nil +} + +// HostFirewallRulesetList provides helpers for a slice of types.HostFirewallRuleset +type HostFirewallRulesetList []types.HostFirewallRuleset + +// ByRule returns a HostFirewallRulesetList where Direction, PortType and Protocol are equal and Port is within range +func (l HostFirewallRulesetList) ByRule(rule types.HostFirewallRule) HostFirewallRulesetList { + var matches HostFirewallRulesetList + + for _, rs := range l { + for _, r := range rs.Rule { + if r.PortType != rule.PortType || + r.Protocol != rule.Protocol || + r.Direction != rule.Direction { + continue + } + + if r.EndPort == 0 && rule.Port == r.Port || + rule.Port >= r.Port && rule.Port <= r.EndPort { + matches = append(matches, rs) + break + } + } + } + + return matches +} + +// EnabledByRule returns a HostFirewallRulesetList with Match(rule) applied and filtered via Enabled() +// if enabled param is true, otherwise filtered via Disabled(). +// An error is returned if the resulting list is empty. +func (l HostFirewallRulesetList) EnabledByRule(rule types.HostFirewallRule, enabled bool) (HostFirewallRulesetList, error) { + var matched, skipped HostFirewallRulesetList + var matchedKind, skippedKind string + + l = l.ByRule(rule) + + if enabled { + matched = l.Enabled() + matchedKind = "enabled" + + skipped = l.Disabled() + skippedKind = "disabled" + } else { + matched = l.Disabled() + matchedKind = "disabled" + + skipped = l.Enabled() + skippedKind = "enabled" + } + + if len(matched) == 0 { + msg := fmt.Sprintf("%d %s firewall rulesets match %s %s %s %d, %d %s rulesets match", + len(matched), matchedKind, + rule.Direction, rule.Protocol, rule.PortType, rule.Port, + len(skipped), skippedKind) + + if len(skipped) != 0 { + msg += fmt.Sprintf(": %s", strings.Join(skipped.Keys(), ", ")) + } + + return nil, errors.New(msg) + } + + return matched, nil +} + +// Enabled returns a HostFirewallRulesetList with enabled rules +func (l HostFirewallRulesetList) Enabled() HostFirewallRulesetList { + var matches HostFirewallRulesetList + + for _, rs := range l { + if rs.Enabled { + matches = append(matches, rs) + } + } + + return matches +} + +// Disabled returns a HostFirewallRulesetList with disabled rules +func (l HostFirewallRulesetList) Disabled() HostFirewallRulesetList { + var matches HostFirewallRulesetList + + for _, rs := range l { + if !rs.Enabled { + matches = append(matches, rs) + } + } + + return matches +} + +// Keys returns the HostFirewallRuleset.Key for each ruleset in the list +func (l HostFirewallRulesetList) Keys() []string { + var keys []string + + for _, rs := range l { + keys = append(keys, rs.Key) + } + + return keys +} diff --git a/vendor/github.com/vmware/govmomi/object/host_network_system.go b/vendor/github.com/vmware/govmomi/object/host_network_system.go new file mode 100644 index 0000000..340b764 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/host_network_system.go @@ -0,0 +1,358 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/types" +) + +type HostNetworkSystem struct { + Common +} + +func NewHostNetworkSystem(c *vim25.Client, ref types.ManagedObjectReference) *HostNetworkSystem { + return &HostNetworkSystem{ + Common: NewCommon(c, ref), + } +} + +// AddPortGroup wraps methods.AddPortGroup +func (o HostNetworkSystem) AddPortGroup(ctx context.Context, portgrp types.HostPortGroupSpec) error { + req := types.AddPortGroup{ + This: o.Reference(), + Portgrp: portgrp, + } + + _, err := methods.AddPortGroup(ctx, o.c, &req) + if err != nil { + return err + } + + return nil +} + +// AddServiceConsoleVirtualNic wraps methods.AddServiceConsoleVirtualNic +func (o HostNetworkSystem) AddServiceConsoleVirtualNic(ctx context.Context, portgroup string, nic types.HostVirtualNicSpec) (string, error) { + req := types.AddServiceConsoleVirtualNic{ + This: o.Reference(), + Portgroup: portgroup, + Nic: nic, + } + + res, err := methods.AddServiceConsoleVirtualNic(ctx, o.c, &req) + if err != nil { + return "", err + } + + return res.Returnval, nil +} + +// AddVirtualNic wraps methods.AddVirtualNic +func (o HostNetworkSystem) AddVirtualNic(ctx context.Context, portgroup string, nic types.HostVirtualNicSpec) (string, error) { + req := types.AddVirtualNic{ + This: o.Reference(), + Portgroup: portgroup, + Nic: nic, + } + + res, err := methods.AddVirtualNic(ctx, o.c, &req) + if err != nil { + return "", err + } + + return res.Returnval, nil +} + +// AddVirtualSwitch wraps methods.AddVirtualSwitch +func (o HostNetworkSystem) AddVirtualSwitch(ctx context.Context, vswitchName string, spec *types.HostVirtualSwitchSpec) error { + req := types.AddVirtualSwitch{ + This: o.Reference(), + VswitchName: vswitchName, + Spec: spec, + } + + _, err := methods.AddVirtualSwitch(ctx, o.c, &req) + if err != nil { + return err + } + + return nil +} + +// QueryNetworkHint wraps methods.QueryNetworkHint +func (o HostNetworkSystem) QueryNetworkHint(ctx context.Context, device []string) ([]types.PhysicalNicHintInfo, error) { + req := types.QueryNetworkHint{ + This: o.Reference(), + Device: device, + } + + res, err := methods.QueryNetworkHint(ctx, o.c, &req) + if err != nil { + return nil, err + } + + return res.Returnval, err +} + +// RefreshNetworkSystem wraps methods.RefreshNetworkSystem +func (o HostNetworkSystem) RefreshNetworkSystem(ctx context.Context) error { + req := types.RefreshNetworkSystem{ + This: o.Reference(), + } + + _, err := methods.RefreshNetworkSystem(ctx, o.c, &req) + if err != nil { + return err + } + + return nil +} + +// RemovePortGroup wraps methods.RemovePortGroup +func (o HostNetworkSystem) RemovePortGroup(ctx context.Context, pgName string) error { + req := types.RemovePortGroup{ + This: o.Reference(), + PgName: pgName, + } + + _, err := methods.RemovePortGroup(ctx, o.c, &req) + if err != nil { + return err + } + + return nil +} + +// RemoveServiceConsoleVirtualNic wraps methods.RemoveServiceConsoleVirtualNic +func (o HostNetworkSystem) RemoveServiceConsoleVirtualNic(ctx context.Context, device string) error { + req := types.RemoveServiceConsoleVirtualNic{ + This: o.Reference(), + Device: device, + } + + _, err := methods.RemoveServiceConsoleVirtualNic(ctx, o.c, &req) + if err != nil { + return err + } + + return nil +} + +// RemoveVirtualNic wraps methods.RemoveVirtualNic +func (o HostNetworkSystem) RemoveVirtualNic(ctx context.Context, device string) error { + req := types.RemoveVirtualNic{ + This: o.Reference(), + Device: device, + } + + _, err := methods.RemoveVirtualNic(ctx, o.c, &req) + if err != nil { + return err + } + + return nil +} + +// RemoveVirtualSwitch wraps methods.RemoveVirtualSwitch +func (o HostNetworkSystem) RemoveVirtualSwitch(ctx context.Context, vswitchName string) error { + req := types.RemoveVirtualSwitch{ + This: o.Reference(), + VswitchName: vswitchName, + } + + _, err := methods.RemoveVirtualSwitch(ctx, o.c, &req) + if err != nil { + return err + } + + return nil +} + +// RestartServiceConsoleVirtualNic wraps methods.RestartServiceConsoleVirtualNic +func (o HostNetworkSystem) RestartServiceConsoleVirtualNic(ctx context.Context, device string) error { + req := types.RestartServiceConsoleVirtualNic{ + This: o.Reference(), + Device: device, + } + + _, err := methods.RestartServiceConsoleVirtualNic(ctx, o.c, &req) + if err != nil { + return err + } + + return nil +} + +// UpdateConsoleIpRouteConfig wraps methods.UpdateConsoleIpRouteConfig +func (o HostNetworkSystem) UpdateConsoleIpRouteConfig(ctx context.Context, config types.BaseHostIpRouteConfig) error { + req := types.UpdateConsoleIpRouteConfig{ + This: o.Reference(), + Config: config, + } + + _, err := methods.UpdateConsoleIpRouteConfig(ctx, o.c, &req) + if err != nil { + return err + } + + return nil +} + +// UpdateDnsConfig wraps methods.UpdateDnsConfig +func (o HostNetworkSystem) UpdateDnsConfig(ctx context.Context, config types.BaseHostDnsConfig) error { + req := types.UpdateDnsConfig{ + This: o.Reference(), + Config: config, + } + + _, err := methods.UpdateDnsConfig(ctx, o.c, &req) + if err != nil { + return err + } + + return nil +} + +// UpdateIpRouteConfig wraps methods.UpdateIpRouteConfig +func (o HostNetworkSystem) UpdateIpRouteConfig(ctx context.Context, config types.BaseHostIpRouteConfig) error { + req := types.UpdateIpRouteConfig{ + This: o.Reference(), + Config: config, + } + + _, err := methods.UpdateIpRouteConfig(ctx, o.c, &req) + if err != nil { + return err + } + + return nil +} + +// UpdateIpRouteTableConfig wraps methods.UpdateIpRouteTableConfig +func (o HostNetworkSystem) UpdateIpRouteTableConfig(ctx context.Context, config types.HostIpRouteTableConfig) error { + req := types.UpdateIpRouteTableConfig{ + This: o.Reference(), + Config: config, + } + + _, err := methods.UpdateIpRouteTableConfig(ctx, o.c, &req) + if err != nil { + return err + } + + return nil +} + +// UpdateNetworkConfig wraps methods.UpdateNetworkConfig +func (o HostNetworkSystem) UpdateNetworkConfig(ctx context.Context, config types.HostNetworkConfig, changeMode string) (*types.HostNetworkConfigResult, error) { + req := types.UpdateNetworkConfig{ + This: o.Reference(), + Config: config, + ChangeMode: changeMode, + } + + res, err := methods.UpdateNetworkConfig(ctx, o.c, &req) + if err != nil { + return nil, err + } + + return &res.Returnval, nil +} + +// UpdatePhysicalNicLinkSpeed wraps methods.UpdatePhysicalNicLinkSpeed +func (o HostNetworkSystem) UpdatePhysicalNicLinkSpeed(ctx context.Context, device string, linkSpeed *types.PhysicalNicLinkInfo) error { + req := types.UpdatePhysicalNicLinkSpeed{ + This: o.Reference(), + Device: device, + LinkSpeed: linkSpeed, + } + + _, err := methods.UpdatePhysicalNicLinkSpeed(ctx, o.c, &req) + if err != nil { + return err + } + + return nil +} + +// UpdatePortGroup wraps methods.UpdatePortGroup +func (o HostNetworkSystem) UpdatePortGroup(ctx context.Context, pgName string, portgrp types.HostPortGroupSpec) error { + req := types.UpdatePortGroup{ + This: o.Reference(), + PgName: pgName, + Portgrp: portgrp, + } + + _, err := methods.UpdatePortGroup(ctx, o.c, &req) + if err != nil { + return err + } + + return nil +} + +// UpdateServiceConsoleVirtualNic wraps methods.UpdateServiceConsoleVirtualNic +func (o HostNetworkSystem) UpdateServiceConsoleVirtualNic(ctx context.Context, device string, nic types.HostVirtualNicSpec) error { + req := types.UpdateServiceConsoleVirtualNic{ + This: o.Reference(), + Device: device, + Nic: nic, + } + + _, err := methods.UpdateServiceConsoleVirtualNic(ctx, o.c, &req) + if err != nil { + return err + } + + return nil +} + +// UpdateVirtualNic wraps methods.UpdateVirtualNic +func (o HostNetworkSystem) UpdateVirtualNic(ctx context.Context, device string, nic types.HostVirtualNicSpec) error { + req := types.UpdateVirtualNic{ + This: o.Reference(), + Device: device, + Nic: nic, + } + + _, err := methods.UpdateVirtualNic(ctx, o.c, &req) + if err != nil { + return err + } + + return nil +} + +// UpdateVirtualSwitch wraps methods.UpdateVirtualSwitch +func (o HostNetworkSystem) UpdateVirtualSwitch(ctx context.Context, vswitchName string, spec types.HostVirtualSwitchSpec) error { + req := types.UpdateVirtualSwitch{ + This: o.Reference(), + VswitchName: vswitchName, + Spec: spec, + } + + _, err := methods.UpdateVirtualSwitch(ctx, o.c, &req) + if err != nil { + return err + } + + return nil +} diff --git a/vendor/github.com/vmware/govmomi/object/host_service_system.go b/vendor/github.com/vmware/govmomi/object/host_service_system.go new file mode 100644 index 0000000..a66b32c --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/host_service_system.go @@ -0,0 +1,88 @@ +/* +Copyright (c) 2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type HostServiceSystem struct { + Common +} + +func NewHostServiceSystem(c *vim25.Client, ref types.ManagedObjectReference) *HostServiceSystem { + return &HostServiceSystem{ + Common: NewCommon(c, ref), + } +} + +func (s HostServiceSystem) Service(ctx context.Context) ([]types.HostService, error) { + var ss mo.HostServiceSystem + + err := s.Properties(ctx, s.Reference(), []string{"serviceInfo.service"}, &ss) + if err != nil { + return nil, err + } + + return ss.ServiceInfo.Service, nil +} + +func (s HostServiceSystem) Start(ctx context.Context, id string) error { + req := types.StartService{ + This: s.Reference(), + Id: id, + } + + _, err := methods.StartService(ctx, s.Client(), &req) + return err +} + +func (s HostServiceSystem) Stop(ctx context.Context, id string) error { + req := types.StopService{ + This: s.Reference(), + Id: id, + } + + _, err := methods.StopService(ctx, s.Client(), &req) + return err +} + +func (s HostServiceSystem) Restart(ctx context.Context, id string) error { + req := types.RestartService{ + This: s.Reference(), + Id: id, + } + + _, err := methods.RestartService(ctx, s.Client(), &req) + return err +} + +func (s HostServiceSystem) UpdatePolicy(ctx context.Context, id string, policy string) error { + req := types.UpdateServicePolicy{ + This: s.Reference(), + Id: id, + Policy: policy, + } + + _, err := methods.UpdateServicePolicy(ctx, s.Client(), &req) + return err +} diff --git a/vendor/github.com/vmware/govmomi/object/host_storage_system.go b/vendor/github.com/vmware/govmomi/object/host_storage_system.go new file mode 100644 index 0000000..5c9f08e --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/host_storage_system.go @@ -0,0 +1,200 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + "errors" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/types" +) + +type HostStorageSystem struct { + Common +} + +func NewHostStorageSystem(c *vim25.Client, ref types.ManagedObjectReference) *HostStorageSystem { + return &HostStorageSystem{ + Common: NewCommon(c, ref), + } +} + +func (s HostStorageSystem) RetrieveDiskPartitionInfo(ctx context.Context, devicePath string) (*types.HostDiskPartitionInfo, error) { + req := types.RetrieveDiskPartitionInfo{ + This: s.Reference(), + DevicePath: []string{devicePath}, + } + + res, err := methods.RetrieveDiskPartitionInfo(ctx, s.c, &req) + if err != nil { + return nil, err + } + + if res.Returnval == nil || len(res.Returnval) == 0 { + return nil, errors.New("no partition info") + } + + return &res.Returnval[0], nil +} + +func (s HostStorageSystem) ComputeDiskPartitionInfo(ctx context.Context, devicePath string, layout types.HostDiskPartitionLayout) (*types.HostDiskPartitionInfo, error) { + req := types.ComputeDiskPartitionInfo{ + This: s.Reference(), + DevicePath: devicePath, + Layout: layout, + } + + res, err := methods.ComputeDiskPartitionInfo(ctx, s.c, &req) + if err != nil { + return nil, err + } + + return &res.Returnval, nil +} + +func (s HostStorageSystem) UpdateDiskPartitionInfo(ctx context.Context, devicePath string, spec types.HostDiskPartitionSpec) error { + req := types.UpdateDiskPartitions{ + This: s.Reference(), + DevicePath: devicePath, + Spec: spec, + } + + _, err := methods.UpdateDiskPartitions(ctx, s.c, &req) + return err +} + +func (s HostStorageSystem) RescanAllHba(ctx context.Context) error { + req := types.RescanAllHba{ + This: s.Reference(), + } + + _, err := methods.RescanAllHba(ctx, s.c, &req) + return err +} + +func (s HostStorageSystem) Refresh(ctx context.Context) error { + req := types.RefreshStorageSystem{ + This: s.Reference(), + } + + _, err := methods.RefreshStorageSystem(ctx, s.c, &req) + return err +} + +func (s HostStorageSystem) RescanVmfs(ctx context.Context) error { + req := types.RescanVmfs{ + This: s.Reference(), + } + + _, err := methods.RescanVmfs(ctx, s.c, &req) + return err +} + +func (s HostStorageSystem) MarkAsSsd(ctx context.Context, uuid string) (*Task, error) { + req := types.MarkAsSsd_Task{ + This: s.Reference(), + ScsiDiskUuid: uuid, + } + + res, err := methods.MarkAsSsd_Task(ctx, s.c, &req) + if err != nil { + return nil, err + } + + return NewTask(s.c, res.Returnval), nil +} + +func (s HostStorageSystem) MarkAsNonSsd(ctx context.Context, uuid string) (*Task, error) { + req := types.MarkAsNonSsd_Task{ + This: s.Reference(), + ScsiDiskUuid: uuid, + } + + res, err := methods.MarkAsNonSsd_Task(ctx, s.c, &req) + if err != nil { + return nil, err + } + + return NewTask(s.c, res.Returnval), nil +} + +func (s HostStorageSystem) MarkAsLocal(ctx context.Context, uuid string) (*Task, error) { + req := types.MarkAsLocal_Task{ + This: s.Reference(), + ScsiDiskUuid: uuid, + } + + res, err := methods.MarkAsLocal_Task(ctx, s.c, &req) + if err != nil { + return nil, err + } + + return NewTask(s.c, res.Returnval), nil +} + +func (s HostStorageSystem) MarkAsNonLocal(ctx context.Context, uuid string) (*Task, error) { + req := types.MarkAsNonLocal_Task{ + This: s.Reference(), + ScsiDiskUuid: uuid, + } + + res, err := methods.MarkAsNonLocal_Task(ctx, s.c, &req) + if err != nil { + return nil, err + } + + return NewTask(s.c, res.Returnval), nil +} + +func (s HostStorageSystem) AttachScsiLun(ctx context.Context, uuid string) error { + req := types.AttachScsiLun{ + This: s.Reference(), + LunUuid: uuid, + } + + _, err := methods.AttachScsiLun(ctx, s.c, &req) + + return err +} + +func (s HostStorageSystem) QueryUnresolvedVmfsVolumes(ctx context.Context) ([]types.HostUnresolvedVmfsVolume, error) { + req := &types.QueryUnresolvedVmfsVolume{ + This: s.Reference(), + } + + res, err := methods.QueryUnresolvedVmfsVolume(ctx, s.Client(), req) + if err != nil { + return nil, err + } + return res.Returnval, nil +} + +func (s HostStorageSystem) UnmountVmfsVolume(ctx context.Context, vmfsUuid string) error { + req := &types.UnmountVmfsVolume{ + This: s.Reference(), + VmfsUuid: vmfsUuid, + } + + _, err := methods.UnmountVmfsVolume(ctx, s.Client(), req) + if err != nil { + return err + } + + return nil +} diff --git a/vendor/github.com/vmware/govmomi/object/host_system.go b/vendor/github.com/vmware/govmomi/object/host_system.go new file mode 100644 index 0000000..6cb9b7a --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/host_system.go @@ -0,0 +1,160 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + "fmt" + "net" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type HostSystem struct { + Common +} + +func NewHostSystem(c *vim25.Client, ref types.ManagedObjectReference) *HostSystem { + return &HostSystem{ + Common: NewCommon(c, ref), + } +} + +func (h HostSystem) ConfigManager() *HostConfigManager { + return NewHostConfigManager(h.c, h.Reference()) +} + +func (h HostSystem) ResourcePool(ctx context.Context) (*ResourcePool, error) { + var mh mo.HostSystem + + err := h.Properties(ctx, h.Reference(), []string{"parent"}, &mh) + if err != nil { + return nil, err + } + + var mcr *mo.ComputeResource + var parent interface{} + + switch mh.Parent.Type { + case "ComputeResource": + mcr = new(mo.ComputeResource) + parent = mcr + case "ClusterComputeResource": + mcc := new(mo.ClusterComputeResource) + mcr = &mcc.ComputeResource + parent = mcc + default: + return nil, fmt.Errorf("unknown host parent type: %s", mh.Parent.Type) + } + + err = h.Properties(ctx, *mh.Parent, []string{"resourcePool"}, parent) + if err != nil { + return nil, err + } + + pool := NewResourcePool(h.c, *mcr.ResourcePool) + return pool, nil +} + +func (h HostSystem) ManagementIPs(ctx context.Context) ([]net.IP, error) { + var mh mo.HostSystem + + err := h.Properties(ctx, h.Reference(), []string{"config.virtualNicManagerInfo.netConfig"}, &mh) + if err != nil { + return nil, err + } + + var ips []net.IP + for _, nc := range mh.Config.VirtualNicManagerInfo.NetConfig { + if nc.NicType != string(types.HostVirtualNicManagerNicTypeManagement) { + continue + } + for ix := range nc.CandidateVnic { + for _, selectedVnicKey := range nc.SelectedVnic { + if nc.CandidateVnic[ix].Key != selectedVnicKey { + continue + } + ip := net.ParseIP(nc.CandidateVnic[ix].Spec.Ip.IpAddress) + if ip != nil { + ips = append(ips, ip) + } + } + } + } + return ips, nil +} + +func (h HostSystem) Disconnect(ctx context.Context) (*Task, error) { + req := types.DisconnectHost_Task{ + This: h.Reference(), + } + + res, err := methods.DisconnectHost_Task(ctx, h.c, &req) + if err != nil { + return nil, err + } + + return NewTask(h.c, res.Returnval), nil +} + +func (h HostSystem) Reconnect(ctx context.Context, cnxSpec *types.HostConnectSpec, reconnectSpec *types.HostSystemReconnectSpec) (*Task, error) { + req := types.ReconnectHost_Task{ + This: h.Reference(), + CnxSpec: cnxSpec, + ReconnectSpec: reconnectSpec, + } + + res, err := methods.ReconnectHost_Task(ctx, h.c, &req) + if err != nil { + return nil, err + } + + return NewTask(h.c, res.Returnval), nil +} + +func (h HostSystem) EnterMaintenanceMode(ctx context.Context, timeout int32, evacuate bool, spec *types.HostMaintenanceSpec) (*Task, error) { + req := types.EnterMaintenanceMode_Task{ + This: h.Reference(), + Timeout: timeout, + EvacuatePoweredOffVms: types.NewBool(evacuate), + MaintenanceSpec: spec, + } + + res, err := methods.EnterMaintenanceMode_Task(ctx, h.c, &req) + if err != nil { + return nil, err + } + + return NewTask(h.c, res.Returnval), nil +} + +func (h HostSystem) ExitMaintenanceMode(ctx context.Context, timeout int32) (*Task, error) { + req := types.ExitMaintenanceMode_Task{ + This: h.Reference(), + Timeout: timeout, + } + + res, err := methods.ExitMaintenanceMode_Task(ctx, h.c, &req) + if err != nil { + return nil, err + } + + return NewTask(h.c, res.Returnval), nil +} diff --git a/vendor/github.com/vmware/govmomi/object/host_virtual_nic_manager.go b/vendor/github.com/vmware/govmomi/object/host_virtual_nic_manager.go new file mode 100644 index 0000000..01e7e9c --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/host_virtual_nic_manager.go @@ -0,0 +1,93 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type HostVirtualNicManager struct { + Common + Host *HostSystem +} + +func NewHostVirtualNicManager(c *vim25.Client, ref types.ManagedObjectReference, host types.ManagedObjectReference) *HostVirtualNicManager { + return &HostVirtualNicManager{ + Common: NewCommon(c, ref), + Host: NewHostSystem(c, host), + } +} + +func (m HostVirtualNicManager) Info(ctx context.Context) (*types.HostVirtualNicManagerInfo, error) { + var vnm mo.HostVirtualNicManager + + err := m.Properties(ctx, m.Reference(), []string{"info"}, &vnm) + if err != nil { + return nil, err + } + + return &vnm.Info, nil +} + +func (m HostVirtualNicManager) DeselectVnic(ctx context.Context, nicType string, device string) error { + if nicType == string(types.HostVirtualNicManagerNicTypeVsan) { + // Avoid fault.NotSupported: + // "Error deselecting device '$device': VSAN interfaces must be deselected using vim.host.VsanSystem" + s, err := m.Host.ConfigManager().VsanSystem(ctx) + if err != nil { + return err + } + + return s.updateVnic(ctx, device, false) + } + + req := types.DeselectVnicForNicType{ + This: m.Reference(), + NicType: nicType, + Device: device, + } + + _, err := methods.DeselectVnicForNicType(ctx, m.Client(), &req) + return err +} + +func (m HostVirtualNicManager) SelectVnic(ctx context.Context, nicType string, device string) error { + if nicType == string(types.HostVirtualNicManagerNicTypeVsan) { + // Avoid fault.NotSupported: + // "Error selecting device '$device': VSAN interfaces must be selected using vim.host.VsanSystem" + s, err := m.Host.ConfigManager().VsanSystem(ctx) + if err != nil { + return err + } + + return s.updateVnic(ctx, device, true) + } + + req := types.SelectVnicForNicType{ + This: m.Reference(), + NicType: nicType, + Device: device, + } + + _, err := methods.SelectVnicForNicType(ctx, m.Client(), &req) + return err +} diff --git a/vendor/github.com/vmware/govmomi/object/host_vsan_internal_system.go b/vendor/github.com/vmware/govmomi/object/host_vsan_internal_system.go new file mode 100644 index 0000000..1430e8a --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/host_vsan_internal_system.go @@ -0,0 +1,117 @@ +/* +Copyright (c) 2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + "encoding/json" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/types" +) + +type HostVsanInternalSystem struct { + Common +} + +func NewHostVsanInternalSystem(c *vim25.Client, ref types.ManagedObjectReference) *HostVsanInternalSystem { + m := HostVsanInternalSystem{ + Common: NewCommon(c, ref), + } + + return &m +} + +// QueryVsanObjectUuidsByFilter returns vSAN DOM object uuids by filter. +func (m HostVsanInternalSystem) QueryVsanObjectUuidsByFilter(ctx context.Context, uuids []string, limit int32, version int32) ([]string, error) { + req := types.QueryVsanObjectUuidsByFilter{ + This: m.Reference(), + Uuids: uuids, + Limit: &limit, + Version: version, + } + + res, err := methods.QueryVsanObjectUuidsByFilter(ctx, m.Client(), &req) + if err != nil { + return nil, err + } + + return res.Returnval, nil +} + +type VsanObjExtAttrs struct { + Type string `json:"Object type"` + Class string `json:"Object class"` + Size string `json:"Object size"` + Path string `json:"Object path"` + Name string `json:"User friendly name"` +} + +func (a *VsanObjExtAttrs) DatastorePath(dir string) string { + l := len(dir) + path := a.Path + + if len(path) >= l { + path = a.Path[l:] + } + + if path != "" { + return path + } + + return a.Name // vmnamespace +} + +// GetVsanObjExtAttrs is internal and intended for troubleshooting/debugging situations in the field. +// WARNING: This API can be slow because we do IOs (reads) to all the objects. +func (m HostVsanInternalSystem) GetVsanObjExtAttrs(ctx context.Context, uuids []string) (map[string]VsanObjExtAttrs, error) { + req := types.GetVsanObjExtAttrs{ + This: m.Reference(), + Uuids: uuids, + } + + res, err := methods.GetVsanObjExtAttrs(ctx, m.Client(), &req) + if err != nil { + return nil, err + } + + var attrs map[string]VsanObjExtAttrs + + err = json.Unmarshal([]byte(res.Returnval), &attrs) + + return attrs, err +} + +// DeleteVsanObjects is internal and intended for troubleshooting/debugging only. +// WARNING: This API can be slow because we do IOs to all the objects. +// DOM won't allow access to objects which have lost quorum. Such objects can be deleted with the optional "force" flag. +// These objects may however re-appear with quorum if the absent components come back (network partition gets resolved, etc.) +func (m HostVsanInternalSystem) DeleteVsanObjects(ctx context.Context, uuids []string, force *bool) ([]types.HostVsanInternalSystemDeleteVsanObjectsResult, error) { + req := types.DeleteVsanObjects{ + This: m.Reference(), + Uuids: uuids, + Force: force, + } + + res, err := methods.DeleteVsanObjects(ctx, m.Client(), &req) + if err != nil { + return nil, err + } + + return res.Returnval, nil +} diff --git a/vendor/github.com/vmware/govmomi/object/host_vsan_system.go b/vendor/github.com/vmware/govmomi/object/host_vsan_system.go new file mode 100644 index 0000000..5ab234d --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/host_vsan_system.go @@ -0,0 +1,88 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type HostVsanSystem struct { + Common +} + +func NewHostVsanSystem(c *vim25.Client, ref types.ManagedObjectReference) *HostVsanSystem { + return &HostVsanSystem{ + Common: NewCommon(c, ref), + } +} + +func (s HostVsanSystem) Update(ctx context.Context, config types.VsanHostConfigInfo) (*Task, error) { + req := types.UpdateVsan_Task{ + This: s.Reference(), + Config: config, + } + + res, err := methods.UpdateVsan_Task(ctx, s.Client(), &req) + if err != nil { + return nil, err + } + + return NewTask(s.Client(), res.Returnval), nil +} + +// updateVnic in support of the HostVirtualNicManager.{SelectVnic,DeselectVnic} methods +func (s HostVsanSystem) updateVnic(ctx context.Context, device string, enable bool) error { + var vsan mo.HostVsanSystem + + err := s.Properties(ctx, s.Reference(), []string{"config.networkInfo.port"}, &vsan) + if err != nil { + return err + } + + info := vsan.Config + + var port []types.VsanHostConfigInfoNetworkInfoPortConfig + + for _, p := range info.NetworkInfo.Port { + if p.Device == device { + continue + } + + port = append(port, p) + } + + if enable { + port = append(port, types.VsanHostConfigInfoNetworkInfoPortConfig{ + Device: device, + }) + } + + info.NetworkInfo.Port = port + + task, err := s.Update(ctx, info) + if err != nil { + return err + } + + _, err = task.WaitForResult(ctx, nil) + return err +} diff --git a/vendor/github.com/vmware/govmomi/object/namespace_manager.go b/vendor/github.com/vmware/govmomi/object/namespace_manager.go new file mode 100644 index 0000000..f463b36 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/namespace_manager.go @@ -0,0 +1,76 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/types" +) + +type DatastoreNamespaceManager struct { + Common +} + +func NewDatastoreNamespaceManager(c *vim25.Client) *DatastoreNamespaceManager { + n := DatastoreNamespaceManager{ + Common: NewCommon(c, *c.ServiceContent.DatastoreNamespaceManager), + } + + return &n +} + +// CreateDirectory creates a top-level directory on the given vsan datastore, using +// the given user display name hint and opaque storage policy. +func (nm DatastoreNamespaceManager) CreateDirectory(ctx context.Context, ds *Datastore, displayName string, policy string) (string, error) { + + req := &types.CreateDirectory{ + This: nm.Reference(), + Datastore: ds.Reference(), + DisplayName: displayName, + Policy: policy, + } + + resp, err := methods.CreateDirectory(ctx, nm.c, req) + if err != nil { + return "", err + } + + return resp.Returnval, nil +} + +// DeleteDirectory deletes the given top-level directory from a vsan datastore. +func (nm DatastoreNamespaceManager) DeleteDirectory(ctx context.Context, dc *Datacenter, datastorePath string) error { + + req := &types.DeleteDirectory{ + This: nm.Reference(), + DatastorePath: datastorePath, + } + + if dc != nil { + ref := dc.Reference() + req.Datacenter = &ref + } + + if _, err := methods.DeleteDirectory(ctx, nm.c, req); err != nil { + return err + } + + return nil +} diff --git a/vendor/github.com/vmware/govmomi/object/network.go b/vendor/github.com/vmware/govmomi/object/network.go new file mode 100644 index 0000000..f209a7a --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/network.go @@ -0,0 +1,54 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/types" +) + +type Network struct { + Common +} + +func NewNetwork(c *vim25.Client, ref types.ManagedObjectReference) *Network { + return &Network{ + Common: NewCommon(c, ref), + } +} + +func (n Network) GetInventoryPath() string { + return n.InventoryPath +} + +// EthernetCardBackingInfo returns the VirtualDeviceBackingInfo for this Network +func (n Network) EthernetCardBackingInfo(ctx context.Context) (types.BaseVirtualDeviceBackingInfo, error) { + name, err := n.ObjectName(ctx) + if err != nil { + return nil, err + } + + backing := &types.VirtualEthernetCardNetworkBackingInfo{ + VirtualDeviceDeviceBackingInfo: types.VirtualDeviceDeviceBackingInfo{ + DeviceName: name, + }, + } + + return backing, nil +} diff --git a/vendor/github.com/vmware/govmomi/object/network_reference.go b/vendor/github.com/vmware/govmomi/object/network_reference.go new file mode 100644 index 0000000..f1a41cd --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/network_reference.go @@ -0,0 +1,31 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/vim25/types" +) + +// The NetworkReference interface is implemented by managed objects +// which can be used as the backing for a VirtualEthernetCard. +type NetworkReference interface { + Reference + GetInventoryPath() string + EthernetCardBackingInfo(ctx context.Context) (types.BaseVirtualDeviceBackingInfo, error) +} diff --git a/vendor/github.com/vmware/govmomi/object/opaque_network.go b/vendor/github.com/vmware/govmomi/object/opaque_network.go new file mode 100644 index 0000000..6797d32 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/opaque_network.go @@ -0,0 +1,72 @@ +/* +Copyright (c) 2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + "fmt" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type OpaqueNetwork struct { + Common +} + +func NewOpaqueNetwork(c *vim25.Client, ref types.ManagedObjectReference) *OpaqueNetwork { + return &OpaqueNetwork{ + Common: NewCommon(c, ref), + } +} + +func (n OpaqueNetwork) GetInventoryPath() string { + return n.InventoryPath +} + +// EthernetCardBackingInfo returns the VirtualDeviceBackingInfo for this Network +func (n OpaqueNetwork) EthernetCardBackingInfo(ctx context.Context) (types.BaseVirtualDeviceBackingInfo, error) { + summary, err := n.Summary(ctx) + if err != nil { + return nil, err + } + + backing := &types.VirtualEthernetCardOpaqueNetworkBackingInfo{ + OpaqueNetworkId: summary.OpaqueNetworkId, + OpaqueNetworkType: summary.OpaqueNetworkType, + } + + return backing, nil +} + +// Summary returns the mo.OpaqueNetwork.Summary property +func (n OpaqueNetwork) Summary(ctx context.Context) (*types.OpaqueNetworkSummary, error) { + var props mo.OpaqueNetwork + + err := n.Properties(ctx, n.Reference(), []string{"summary"}, &props) + if err != nil { + return nil, err + } + + summary, ok := props.Summary.(*types.OpaqueNetworkSummary) + if !ok { + return nil, fmt.Errorf("%s unsupported network summary type: %T", n, props.Summary) + } + + return summary, nil +} diff --git a/vendor/github.com/vmware/govmomi/object/option_manager.go b/vendor/github.com/vmware/govmomi/object/option_manager.go new file mode 100644 index 0000000..7f93273 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/option_manager.go @@ -0,0 +1,59 @@ +/* +Copyright (c) 2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/types" +) + +type OptionManager struct { + Common +} + +func NewOptionManager(c *vim25.Client, ref types.ManagedObjectReference) *OptionManager { + return &OptionManager{ + Common: NewCommon(c, ref), + } +} + +func (m OptionManager) Query(ctx context.Context, name string) ([]types.BaseOptionValue, error) { + req := types.QueryOptions{ + This: m.Reference(), + Name: name, + } + + res, err := methods.QueryOptions(ctx, m.Client(), &req) + if err != nil { + return nil, err + } + + return res.Returnval, nil +} + +func (m OptionManager) Update(ctx context.Context, value []types.BaseOptionValue) error { + req := types.UpdateOptions{ + This: m.Reference(), + ChangedValue: value, + } + + _, err := methods.UpdateOptions(ctx, m.Client(), &req) + return err +} diff --git a/vendor/github.com/vmware/govmomi/object/resource_pool.go b/vendor/github.com/vmware/govmomi/object/resource_pool.go new file mode 100644 index 0000000..e510006 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/resource_pool.go @@ -0,0 +1,151 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/nfc" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type ResourcePool struct { + Common +} + +func NewResourcePool(c *vim25.Client, ref types.ManagedObjectReference) *ResourcePool { + return &ResourcePool{ + Common: NewCommon(c, ref), + } +} + +// Owner returns the ResourcePool owner as a ClusterComputeResource or ComputeResource. +func (p ResourcePool) Owner(ctx context.Context) (Reference, error) { + var pool mo.ResourcePool + + err := p.Properties(ctx, p.Reference(), []string{"owner"}, &pool) + if err != nil { + return nil, err + } + + return NewReference(p.Client(), pool.Owner), nil +} + +func (p ResourcePool) ImportVApp(ctx context.Context, spec types.BaseImportSpec, folder *Folder, host *HostSystem) (*nfc.Lease, error) { + req := types.ImportVApp{ + This: p.Reference(), + Spec: spec, + } + + if folder != nil { + ref := folder.Reference() + req.Folder = &ref + } + + if host != nil { + ref := host.Reference() + req.Host = &ref + } + + res, err := methods.ImportVApp(ctx, p.c, &req) + if err != nil { + return nil, err + } + + return nfc.NewLease(p.c, res.Returnval), nil +} + +func (p ResourcePool) Create(ctx context.Context, name string, spec types.ResourceConfigSpec) (*ResourcePool, error) { + req := types.CreateResourcePool{ + This: p.Reference(), + Name: name, + Spec: spec, + } + + res, err := methods.CreateResourcePool(ctx, p.c, &req) + if err != nil { + return nil, err + } + + return NewResourcePool(p.c, res.Returnval), nil +} + +func (p ResourcePool) CreateVApp(ctx context.Context, name string, resSpec types.ResourceConfigSpec, configSpec types.VAppConfigSpec, folder *Folder) (*VirtualApp, error) { + req := types.CreateVApp{ + This: p.Reference(), + Name: name, + ResSpec: resSpec, + ConfigSpec: configSpec, + } + + if folder != nil { + ref := folder.Reference() + req.VmFolder = &ref + } + + res, err := methods.CreateVApp(ctx, p.c, &req) + if err != nil { + return nil, err + } + + return NewVirtualApp(p.c, res.Returnval), nil +} + +func (p ResourcePool) UpdateConfig(ctx context.Context, name string, config *types.ResourceConfigSpec) error { + req := types.UpdateConfig{ + This: p.Reference(), + Name: name, + Config: config, + } + + if config != nil && config.Entity == nil { + ref := p.Reference() + + // Create copy of config so changes won't leak back to the caller + newConfig := *config + newConfig.Entity = &ref + req.Config = &newConfig + } + + _, err := methods.UpdateConfig(ctx, p.c, &req) + return err +} + +func (p ResourcePool) DestroyChildren(ctx context.Context) error { + req := types.DestroyChildren{ + This: p.Reference(), + } + + _, err := methods.DestroyChildren(ctx, p.c, &req) + return err +} + +func (p ResourcePool) Destroy(ctx context.Context) (*Task, error) { + req := types.Destroy_Task{ + This: p.Reference(), + } + + res, err := methods.Destroy_Task(ctx, p.c, &req) + if err != nil { + return nil, err + } + + return NewTask(p.c, res.Returnval), nil +} diff --git a/vendor/github.com/vmware/govmomi/object/search_index.go b/vendor/github.com/vmware/govmomi/object/search_index.go new file mode 100644 index 0000000..bcf5e29 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/search_index.go @@ -0,0 +1,248 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/types" +) + +type SearchIndex struct { + Common +} + +func NewSearchIndex(c *vim25.Client) *SearchIndex { + s := SearchIndex{ + Common: NewCommon(c, *c.ServiceContent.SearchIndex), + } + + return &s +} + +// FindByDatastorePath finds a virtual machine by its location on a datastore. +func (s SearchIndex) FindByDatastorePath(ctx context.Context, dc *Datacenter, path string) (Reference, error) { + req := types.FindByDatastorePath{ + This: s.Reference(), + Datacenter: dc.Reference(), + Path: path, + } + + res, err := methods.FindByDatastorePath(ctx, s.c, &req) + if err != nil { + return nil, err + } + + if res.Returnval == nil { + return nil, nil + } + return NewReference(s.c, *res.Returnval), nil +} + +// FindByDnsName finds a virtual machine or host by DNS name. +func (s SearchIndex) FindByDnsName(ctx context.Context, dc *Datacenter, dnsName string, vmSearch bool) (Reference, error) { + req := types.FindByDnsName{ + This: s.Reference(), + DnsName: dnsName, + VmSearch: vmSearch, + } + if dc != nil { + ref := dc.Reference() + req.Datacenter = &ref + } + + res, err := methods.FindByDnsName(ctx, s.c, &req) + if err != nil { + return nil, err + } + + if res.Returnval == nil { + return nil, nil + } + return NewReference(s.c, *res.Returnval), nil +} + +// FindByInventoryPath finds a managed entity based on its location in the inventory. +func (s SearchIndex) FindByInventoryPath(ctx context.Context, path string) (Reference, error) { + req := types.FindByInventoryPath{ + This: s.Reference(), + InventoryPath: path, + } + + res, err := methods.FindByInventoryPath(ctx, s.c, &req) + if err != nil { + return nil, err + } + + if res.Returnval == nil { + return nil, nil + } + return NewReference(s.c, *res.Returnval), nil +} + +// FindByIp finds a virtual machine or host by IP address. +func (s SearchIndex) FindByIp(ctx context.Context, dc *Datacenter, ip string, vmSearch bool) (Reference, error) { + req := types.FindByIp{ + This: s.Reference(), + Ip: ip, + VmSearch: vmSearch, + } + if dc != nil { + ref := dc.Reference() + req.Datacenter = &ref + } + + res, err := methods.FindByIp(ctx, s.c, &req) + if err != nil { + return nil, err + } + + if res.Returnval == nil { + return nil, nil + } + return NewReference(s.c, *res.Returnval), nil +} + +// FindByUuid finds a virtual machine or host by UUID. +func (s SearchIndex) FindByUuid(ctx context.Context, dc *Datacenter, uuid string, vmSearch bool, instanceUuid *bool) (Reference, error) { + req := types.FindByUuid{ + This: s.Reference(), + Uuid: uuid, + VmSearch: vmSearch, + InstanceUuid: instanceUuid, + } + if dc != nil { + ref := dc.Reference() + req.Datacenter = &ref + } + + res, err := methods.FindByUuid(ctx, s.c, &req) + if err != nil { + return nil, err + } + + if res.Returnval == nil { + return nil, nil + } + return NewReference(s.c, *res.Returnval), nil +} + +// FindChild finds a particular child based on a managed entity name. +func (s SearchIndex) FindChild(ctx context.Context, entity Reference, name string) (Reference, error) { + req := types.FindChild{ + This: s.Reference(), + Entity: entity.Reference(), + Name: name, + } + + res, err := methods.FindChild(ctx, s.c, &req) + if err != nil { + return nil, err + } + + if res.Returnval == nil { + return nil, nil + } + return NewReference(s.c, *res.Returnval), nil +} + +// FindAllByDnsName finds all virtual machines or hosts by DNS name. +func (s SearchIndex) FindAllByDnsName(ctx context.Context, dc *Datacenter, dnsName string, vmSearch bool) ([]Reference, error) { + req := types.FindAllByDnsName{ + This: s.Reference(), + DnsName: dnsName, + VmSearch: vmSearch, + } + if dc != nil { + ref := dc.Reference() + req.Datacenter = &ref + } + + res, err := methods.FindAllByDnsName(ctx, s.c, &req) + if err != nil { + return nil, err + } + + if len(res.Returnval) == 0 { + return nil, nil + } + + var references []Reference + for _, returnval := range res.Returnval { + references = append(references, NewReference(s.c, returnval)) + } + return references, nil +} + +// FindAllByIp finds all virtual machines or hosts by IP address. +func (s SearchIndex) FindAllByIp(ctx context.Context, dc *Datacenter, ip string, vmSearch bool) ([]Reference, error) { + req := types.FindAllByIp{ + This: s.Reference(), + Ip: ip, + VmSearch: vmSearch, + } + if dc != nil { + ref := dc.Reference() + req.Datacenter = &ref + } + + res, err := methods.FindAllByIp(ctx, s.c, &req) + if err != nil { + return nil, err + } + + if len(res.Returnval) == 0 { + return nil, nil + } + + var references []Reference + for _, returnval := range res.Returnval { + references = append(references, NewReference(s.c, returnval)) + } + return references, nil +} + +// FindAllByUuid finds all virtual machines or hosts by UUID. +func (s SearchIndex) FindAllByUuid(ctx context.Context, dc *Datacenter, uuid string, vmSearch bool, instanceUuid *bool) ([]Reference, error) { + req := types.FindAllByUuid{ + This: s.Reference(), + Uuid: uuid, + VmSearch: vmSearch, + InstanceUuid: instanceUuid, + } + if dc != nil { + ref := dc.Reference() + req.Datacenter = &ref + } + + res, err := methods.FindAllByUuid(ctx, s.c, &req) + if err != nil { + return nil, err + } + + if len(res.Returnval) == 0 { + return nil, nil + } + + var references []Reference + for _, returnval := range res.Returnval { + references = append(references, NewReference(s.c, returnval)) + } + return references, nil +} diff --git a/vendor/github.com/vmware/govmomi/object/storage_pod.go b/vendor/github.com/vmware/govmomi/object/storage_pod.go new file mode 100644 index 0000000..188b91a --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/storage_pod.go @@ -0,0 +1,34 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/types" +) + +type StoragePod struct { + *Folder +} + +func NewStoragePod(c *vim25.Client, ref types.ManagedObjectReference) *StoragePod { + return &StoragePod{ + Folder: &Folder{ + Common: NewCommon(c, ref), + }, + } +} diff --git a/vendor/github.com/vmware/govmomi/object/storage_resource_manager.go b/vendor/github.com/vmware/govmomi/object/storage_resource_manager.go new file mode 100644 index 0000000..579bcd4 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/storage_resource_manager.go @@ -0,0 +1,179 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/types" +) + +type StorageResourceManager struct { + Common +} + +func NewStorageResourceManager(c *vim25.Client) *StorageResourceManager { + sr := StorageResourceManager{ + Common: NewCommon(c, *c.ServiceContent.StorageResourceManager), + } + + return &sr +} + +func (sr StorageResourceManager) ApplyStorageDrsRecommendation(ctx context.Context, key []string) (*Task, error) { + req := types.ApplyStorageDrsRecommendation_Task{ + This: sr.Reference(), + Key: key, + } + + res, err := methods.ApplyStorageDrsRecommendation_Task(ctx, sr.c, &req) + if err != nil { + return nil, err + } + + return NewTask(sr.c, res.Returnval), nil +} + +func (sr StorageResourceManager) ApplyStorageDrsRecommendationToPod(ctx context.Context, pod *StoragePod, key string) (*Task, error) { + req := types.ApplyStorageDrsRecommendationToPod_Task{ + This: sr.Reference(), + Key: key, + } + + if pod != nil { + req.Pod = pod.Reference() + } + + res, err := methods.ApplyStorageDrsRecommendationToPod_Task(ctx, sr.c, &req) + if err != nil { + return nil, err + } + + return NewTask(sr.c, res.Returnval), nil +} + +func (sr StorageResourceManager) CancelStorageDrsRecommendation(ctx context.Context, key []string) error { + req := types.CancelStorageDrsRecommendation{ + This: sr.Reference(), + Key: key, + } + + _, err := methods.CancelStorageDrsRecommendation(ctx, sr.c, &req) + + return err +} + +func (sr StorageResourceManager) ConfigureDatastoreIORM(ctx context.Context, datastore *Datastore, spec types.StorageIORMConfigSpec, key string) (*Task, error) { + req := types.ConfigureDatastoreIORM_Task{ + This: sr.Reference(), + Spec: spec, + } + + if datastore != nil { + req.Datastore = datastore.Reference() + } + + res, err := methods.ConfigureDatastoreIORM_Task(ctx, sr.c, &req) + if err != nil { + return nil, err + } + + return NewTask(sr.c, res.Returnval), nil +} + +func (sr StorageResourceManager) ConfigureStorageDrsForPod(ctx context.Context, pod *StoragePod, spec types.StorageDrsConfigSpec, modify bool) (*Task, error) { + req := types.ConfigureStorageDrsForPod_Task{ + This: sr.Reference(), + Spec: spec, + Modify: modify, + } + + if pod != nil { + req.Pod = pod.Reference() + } + + res, err := methods.ConfigureStorageDrsForPod_Task(ctx, sr.c, &req) + if err != nil { + return nil, err + } + + return NewTask(sr.c, res.Returnval), nil +} + +func (sr StorageResourceManager) QueryDatastorePerformanceSummary(ctx context.Context, datastore *Datastore) ([]types.StoragePerformanceSummary, error) { + req := types.QueryDatastorePerformanceSummary{ + This: sr.Reference(), + } + + if datastore != nil { + req.Datastore = datastore.Reference() + } + + res, err := methods.QueryDatastorePerformanceSummary(ctx, sr.c, &req) + if err != nil { + return nil, err + } + + return res.Returnval, nil +} + +func (sr StorageResourceManager) QueryIORMConfigOption(ctx context.Context, host *HostSystem) (*types.StorageIORMConfigOption, error) { + req := types.QueryIORMConfigOption{ + This: sr.Reference(), + } + + if host != nil { + req.Host = host.Reference() + } + + res, err := methods.QueryIORMConfigOption(ctx, sr.c, &req) + if err != nil { + return nil, err + } + + return &res.Returnval, nil +} + +func (sr StorageResourceManager) RecommendDatastores(ctx context.Context, storageSpec types.StoragePlacementSpec) (*types.StoragePlacementResult, error) { + req := types.RecommendDatastores{ + This: sr.Reference(), + StorageSpec: storageSpec, + } + + res, err := methods.RecommendDatastores(ctx, sr.c, &req) + if err != nil { + return nil, err + } + + return &res.Returnval, nil +} + +func (sr StorageResourceManager) RefreshStorageDrsRecommendation(ctx context.Context, pod *StoragePod) error { + req := types.RefreshStorageDrsRecommendation{ + This: sr.Reference(), + } + + if pod != nil { + req.Pod = pod.Reference() + } + + _, err := methods.RefreshStorageDrsRecommendation(ctx, sr.c, &req) + + return err +} diff --git a/vendor/github.com/vmware/govmomi/object/task.go b/vendor/github.com/vmware/govmomi/object/task.go new file mode 100644 index 0000000..088dd7f --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/task.go @@ -0,0 +1,100 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/property" + "github.com/vmware/govmomi/task" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/progress" + "github.com/vmware/govmomi/vim25/types" +) + +// Task is a convenience wrapper around task.Task that keeps a reference to +// the client that was used to create it. This allows users to call the Wait() +// function with only a context parameter, instead of a context parameter, a +// soap.RoundTripper, and reference to the root property collector. +type Task struct { + Common +} + +func NewTask(c *vim25.Client, ref types.ManagedObjectReference) *Task { + t := Task{ + Common: NewCommon(c, ref), + } + + return &t +} + +func (t *Task) Wait(ctx context.Context) error { + _, err := t.WaitForResult(ctx, nil) + return err +} + +func (t *Task) WaitForResult(ctx context.Context, s ...progress.Sinker) (*types.TaskInfo, error) { + var pr progress.Sinker + if len(s) == 1 { + pr = s[0] + } + p := property.DefaultCollector(t.c) + return task.Wait(ctx, t.Reference(), p, pr) +} + +func (t *Task) Cancel(ctx context.Context) error { + _, err := methods.CancelTask(ctx, t.Client(), &types.CancelTask{ + This: t.Reference(), + }) + + return err +} + +// SetState sets task state and optionally sets results or fault, as appropriate for state. +func (t *Task) SetState(ctx context.Context, state types.TaskInfoState, result types.AnyType, fault *types.LocalizedMethodFault) error { + req := types.SetTaskState{ + This: t.Reference(), + State: state, + Result: result, + Fault: fault, + } + _, err := methods.SetTaskState(ctx, t.Common.Client(), &req) + return err +} + +// SetDescription updates task description to describe the current phase of the task. +func (t *Task) SetDescription(ctx context.Context, description types.LocalizableMessage) error { + req := types.SetTaskDescription{ + This: t.Reference(), + Description: description, + } + _, err := methods.SetTaskDescription(ctx, t.Common.Client(), &req) + return err +} + +// UpdateProgress Sets percentage done for this task and recalculates overall percentage done. +// If a percentDone value of less than zero or greater than 100 is specified, +// a value of zero or 100 respectively is used. +func (t *Task) UpdateProgress(ctx context.Context, percentDone int) error { + req := types.UpdateProgress{ + This: t.Reference(), + PercentDone: int32(percentDone), + } + _, err := methods.UpdateProgress(ctx, t.Common.Client(), &req) + return err +} diff --git a/vendor/github.com/vmware/govmomi/object/types.go b/vendor/github.com/vmware/govmomi/object/types.go new file mode 100644 index 0000000..4eb8d1b --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/types.go @@ -0,0 +1,67 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/types" +) + +type Reference interface { + Reference() types.ManagedObjectReference +} + +func NewReference(c *vim25.Client, e types.ManagedObjectReference) Reference { + switch e.Type { + case "Folder": + return NewFolder(c, e) + case "StoragePod": + return &StoragePod{ + NewFolder(c, e), + } + case "Datacenter": + return NewDatacenter(c, e) + case "VirtualMachine": + return NewVirtualMachine(c, e) + case "VirtualApp": + return &VirtualApp{ + NewResourcePool(c, e), + } + case "ComputeResource": + return NewComputeResource(c, e) + case "ClusterComputeResource": + return NewClusterComputeResource(c, e) + case "HostSystem": + return NewHostSystem(c, e) + case "Network": + return NewNetwork(c, e) + case "OpaqueNetwork": + return NewOpaqueNetwork(c, e) + case "ResourcePool": + return NewResourcePool(c, e) + case "DistributedVirtualSwitch": + return NewDistributedVirtualSwitch(c, e) + case "VmwareDistributedVirtualSwitch": + return &VmwareDistributedVirtualSwitch{*NewDistributedVirtualSwitch(c, e)} + case "DistributedVirtualPortgroup": + return NewDistributedVirtualPortgroup(c, e) + case "Datastore": + return NewDatastore(c, e) + default: + panic("Unknown managed entity: " + e.Type) + } +} diff --git a/vendor/github.com/vmware/govmomi/object/virtual_app.go b/vendor/github.com/vmware/govmomi/object/virtual_app.go new file mode 100644 index 0000000..4811178 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/virtual_app.go @@ -0,0 +1,105 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/types" +) + +type VirtualApp struct { + *ResourcePool +} + +func NewVirtualApp(c *vim25.Client, ref types.ManagedObjectReference) *VirtualApp { + return &VirtualApp{ + ResourcePool: NewResourcePool(c, ref), + } +} + +func (p VirtualApp) CreateChildVM(ctx context.Context, config types.VirtualMachineConfigSpec, host *HostSystem) (*Task, error) { + req := types.CreateChildVM_Task{ + This: p.Reference(), + Config: config, + } + + if host != nil { + ref := host.Reference() + req.Host = &ref + } + + res, err := methods.CreateChildVM_Task(ctx, p.c, &req) + if err != nil { + return nil, err + } + + return NewTask(p.c, res.Returnval), nil +} + +func (p VirtualApp) UpdateConfig(ctx context.Context, spec types.VAppConfigSpec) error { + req := types.UpdateVAppConfig{ + This: p.Reference(), + Spec: spec, + } + + _, err := methods.UpdateVAppConfig(ctx, p.c, &req) + return err +} + +func (p VirtualApp) PowerOn(ctx context.Context) (*Task, error) { + req := types.PowerOnVApp_Task{ + This: p.Reference(), + } + + res, err := methods.PowerOnVApp_Task(ctx, p.c, &req) + if err != nil { + return nil, err + } + + return NewTask(p.c, res.Returnval), nil +} + +func (p VirtualApp) PowerOff(ctx context.Context, force bool) (*Task, error) { + req := types.PowerOffVApp_Task{ + This: p.Reference(), + Force: force, + } + + res, err := methods.PowerOffVApp_Task(ctx, p.c, &req) + if err != nil { + return nil, err + } + + return NewTask(p.c, res.Returnval), nil + +} + +func (p VirtualApp) Suspend(ctx context.Context) (*Task, error) { + req := types.SuspendVApp_Task{ + This: p.Reference(), + } + + res, err := methods.SuspendVApp_Task(ctx, p.c, &req) + if err != nil { + return nil, err + } + + return NewTask(p.c, res.Returnval), nil +} diff --git a/vendor/github.com/vmware/govmomi/object/virtual_device_list.go b/vendor/github.com/vmware/govmomi/object/virtual_device_list.go new file mode 100644 index 0000000..58b61f5 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/virtual_device_list.go @@ -0,0 +1,937 @@ +/* +Copyright (c) 2015-2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "errors" + "fmt" + "path/filepath" + "reflect" + "regexp" + "sort" + "strings" + + "github.com/vmware/govmomi/vim25/types" +) + +// Type values for use in BootOrder +const ( + DeviceTypeNone = "-" + DeviceTypeCdrom = "cdrom" + DeviceTypeDisk = "disk" + DeviceTypeEthernet = "ethernet" + DeviceTypeFloppy = "floppy" +) + +// VirtualDeviceList provides helper methods for working with a list of virtual devices. +type VirtualDeviceList []types.BaseVirtualDevice + +// SCSIControllerTypes are used for adding a new SCSI controller to a VM. +func SCSIControllerTypes() VirtualDeviceList { + // Return a mutable list of SCSI controller types, initialized with defaults. + return VirtualDeviceList([]types.BaseVirtualDevice{ + &types.VirtualLsiLogicController{}, + &types.VirtualBusLogicController{}, + &types.ParaVirtualSCSIController{}, + &types.VirtualLsiLogicSASController{}, + }).Select(func(device types.BaseVirtualDevice) bool { + c := device.(types.BaseVirtualSCSIController).GetVirtualSCSIController() + c.SharedBus = types.VirtualSCSISharingNoSharing + c.BusNumber = -1 + return true + }) +} + +// EthernetCardTypes are used for adding a new ethernet card to a VM. +func EthernetCardTypes() VirtualDeviceList { + return VirtualDeviceList([]types.BaseVirtualDevice{ + &types.VirtualE1000{}, + &types.VirtualE1000e{}, + &types.VirtualVmxnet2{}, + &types.VirtualVmxnet3{}, + &types.VirtualPCNet32{}, + &types.VirtualSriovEthernetCard{}, + }).Select(func(device types.BaseVirtualDevice) bool { + c := device.(types.BaseVirtualEthernetCard).GetVirtualEthernetCard() + c.GetVirtualDevice().Key = -1 + return true + }) +} + +// Select returns a new list containing all elements of the list for which the given func returns true. +func (l VirtualDeviceList) Select(f func(device types.BaseVirtualDevice) bool) VirtualDeviceList { + var found VirtualDeviceList + + for _, device := range l { + if f(device) { + found = append(found, device) + } + } + + return found +} + +// SelectByType returns a new list with devices that are equal to or extend the given type. +func (l VirtualDeviceList) SelectByType(deviceType types.BaseVirtualDevice) VirtualDeviceList { + dtype := reflect.TypeOf(deviceType) + if dtype == nil { + return nil + } + dname := dtype.Elem().Name() + + return l.Select(func(device types.BaseVirtualDevice) bool { + t := reflect.TypeOf(device) + + if t == dtype { + return true + } + + _, ok := t.Elem().FieldByName(dname) + + return ok + }) +} + +// SelectByBackingInfo returns a new list with devices matching the given backing info. +// If the value of backing is nil, any device with a backing of the same type will be returned. +func (l VirtualDeviceList) SelectByBackingInfo(backing types.BaseVirtualDeviceBackingInfo) VirtualDeviceList { + t := reflect.TypeOf(backing) + + return l.Select(func(device types.BaseVirtualDevice) bool { + db := device.GetVirtualDevice().Backing + if db == nil { + return false + } + + if reflect.TypeOf(db) != t { + return false + } + + if reflect.ValueOf(backing).IsNil() { + // selecting by backing type + return true + } + + switch a := db.(type) { + case *types.VirtualEthernetCardNetworkBackingInfo: + b := backing.(*types.VirtualEthernetCardNetworkBackingInfo) + return a.DeviceName == b.DeviceName + case *types.VirtualEthernetCardDistributedVirtualPortBackingInfo: + b := backing.(*types.VirtualEthernetCardDistributedVirtualPortBackingInfo) + return a.Port.SwitchUuid == b.Port.SwitchUuid && + a.Port.PortgroupKey == b.Port.PortgroupKey + case *types.VirtualDiskFlatVer2BackingInfo: + b := backing.(*types.VirtualDiskFlatVer2BackingInfo) + if a.Parent != nil && b.Parent != nil { + return a.Parent.FileName == b.Parent.FileName + } + return a.FileName == b.FileName + case *types.VirtualSerialPortURIBackingInfo: + b := backing.(*types.VirtualSerialPortURIBackingInfo) + return a.ServiceURI == b.ServiceURI + case types.BaseVirtualDeviceFileBackingInfo: + b := backing.(types.BaseVirtualDeviceFileBackingInfo) + return a.GetVirtualDeviceFileBackingInfo().FileName == b.GetVirtualDeviceFileBackingInfo().FileName + default: + return false + } + }) +} + +// Find returns the device matching the given name. +func (l VirtualDeviceList) Find(name string) types.BaseVirtualDevice { + for _, device := range l { + if l.Name(device) == name { + return device + } + } + return nil +} + +// FindByKey returns the device matching the given key. +func (l VirtualDeviceList) FindByKey(key int32) types.BaseVirtualDevice { + for _, device := range l { + if device.GetVirtualDevice().Key == key { + return device + } + } + return nil +} + +// FindIDEController will find the named IDE controller if given, otherwise will pick an available controller. +// An error is returned if the named controller is not found or not an IDE controller. Or, if name is not +// given and no available controller can be found. +func (l VirtualDeviceList) FindIDEController(name string) (*types.VirtualIDEController, error) { + if name != "" { + d := l.Find(name) + if d == nil { + return nil, fmt.Errorf("device '%s' not found", name) + } + if c, ok := d.(*types.VirtualIDEController); ok { + return c, nil + } + return nil, fmt.Errorf("%s is not an IDE controller", name) + } + + c := l.PickController((*types.VirtualIDEController)(nil)) + if c == nil { + return nil, errors.New("no available IDE controller") + } + + return c.(*types.VirtualIDEController), nil +} + +// CreateIDEController creates a new IDE controller. +func (l VirtualDeviceList) CreateIDEController() (types.BaseVirtualDevice, error) { + ide := &types.VirtualIDEController{} + ide.Key = l.NewKey() + return ide, nil +} + +// FindSCSIController will find the named SCSI controller if given, otherwise will pick an available controller. +// An error is returned if the named controller is not found or not an SCSI controller. Or, if name is not +// given and no available controller can be found. +func (l VirtualDeviceList) FindSCSIController(name string) (*types.VirtualSCSIController, error) { + if name != "" { + d := l.Find(name) + if d == nil { + return nil, fmt.Errorf("device '%s' not found", name) + } + if c, ok := d.(types.BaseVirtualSCSIController); ok { + return c.GetVirtualSCSIController(), nil + } + return nil, fmt.Errorf("%s is not an SCSI controller", name) + } + + c := l.PickController((*types.VirtualSCSIController)(nil)) + if c == nil { + return nil, errors.New("no available SCSI controller") + } + + return c.(types.BaseVirtualSCSIController).GetVirtualSCSIController(), nil +} + +// CreateSCSIController creates a new SCSI controller of type name if given, otherwise defaults to lsilogic. +func (l VirtualDeviceList) CreateSCSIController(name string) (types.BaseVirtualDevice, error) { + ctypes := SCSIControllerTypes() + + if name == "" || name == "scsi" { + name = ctypes.Type(ctypes[0]) + } else if name == "virtualscsi" { + name = "pvscsi" // ovf VirtualSCSI mapping + } + + found := ctypes.Select(func(device types.BaseVirtualDevice) bool { + return l.Type(device) == name + }) + + if len(found) == 0 { + return nil, fmt.Errorf("unknown SCSI controller type '%s'", name) + } + + c, ok := found[0].(types.BaseVirtualSCSIController) + if !ok { + return nil, fmt.Errorf("invalid SCSI controller type '%s'", name) + } + + scsi := c.GetVirtualSCSIController() + scsi.BusNumber = l.newSCSIBusNumber() + scsi.Key = l.NewKey() + scsi.ScsiCtlrUnitNumber = 7 + return c.(types.BaseVirtualDevice), nil +} + +var scsiBusNumbers = []int{0, 1, 2, 3} + +// newSCSIBusNumber returns the bus number to use for adding a new SCSI bus device. +// -1 is returned if there are no bus numbers available. +func (l VirtualDeviceList) newSCSIBusNumber() int32 { + var used []int + + for _, d := range l.SelectByType((*types.VirtualSCSIController)(nil)) { + num := d.(types.BaseVirtualSCSIController).GetVirtualSCSIController().BusNumber + if num >= 0 { + used = append(used, int(num)) + } // else caller is creating a new vm using SCSIControllerTypes + } + + sort.Ints(used) + + for i, n := range scsiBusNumbers { + if i == len(used) || n != used[i] { + return int32(n) + } + } + + return -1 +} + +// FindNVMEController will find the named NVME controller if given, otherwise will pick an available controller. +// An error is returned if the named controller is not found or not an NVME controller. Or, if name is not +// given and no available controller can be found. +func (l VirtualDeviceList) FindNVMEController(name string) (*types.VirtualNVMEController, error) { + if name != "" { + d := l.Find(name) + if d == nil { + return nil, fmt.Errorf("device '%s' not found", name) + } + if c, ok := d.(*types.VirtualNVMEController); ok { + return c, nil + } + return nil, fmt.Errorf("%s is not an NVME controller", name) + } + + c := l.PickController((*types.VirtualNVMEController)(nil)) + if c == nil { + return nil, errors.New("no available NVME controller") + } + + return c.(*types.VirtualNVMEController), nil +} + +// CreateNVMEController creates a new NVMWE controller. +func (l VirtualDeviceList) CreateNVMEController() (types.BaseVirtualDevice, error) { + nvme := &types.VirtualNVMEController{} + nvme.BusNumber = l.newNVMEBusNumber() + nvme.Key = l.NewKey() + + return nvme, nil +} + +var nvmeBusNumbers = []int{0, 1, 2, 3} + +// newNVMEBusNumber returns the bus number to use for adding a new NVME bus device. +// -1 is returned if there are no bus numbers available. +func (l VirtualDeviceList) newNVMEBusNumber() int32 { + var used []int + + for _, d := range l.SelectByType((*types.VirtualNVMEController)(nil)) { + num := d.(types.BaseVirtualController).GetVirtualController().BusNumber + if num >= 0 { + used = append(used, int(num)) + } // else caller is creating a new vm using NVMEControllerTypes + } + + sort.Ints(used) + + for i, n := range nvmeBusNumbers { + if i == len(used) || n != used[i] { + return int32(n) + } + } + + return -1 +} + +// FindDiskController will find an existing ide or scsi disk controller. +func (l VirtualDeviceList) FindDiskController(name string) (types.BaseVirtualController, error) { + switch { + case name == "ide": + return l.FindIDEController("") + case name == "scsi" || name == "": + return l.FindSCSIController("") + case name == "nvme": + return l.FindNVMEController("") + default: + if c, ok := l.Find(name).(types.BaseVirtualController); ok { + return c, nil + } + return nil, fmt.Errorf("%s is not a valid controller", name) + } +} + +// PickController returns a controller of the given type(s). +// If no controllers are found or have no available slots, then nil is returned. +func (l VirtualDeviceList) PickController(kind types.BaseVirtualController) types.BaseVirtualController { + l = l.SelectByType(kind.(types.BaseVirtualDevice)).Select(func(device types.BaseVirtualDevice) bool { + num := len(device.(types.BaseVirtualController).GetVirtualController().Device) + + switch device.(type) { + case types.BaseVirtualSCSIController: + return num < 15 + case *types.VirtualIDEController: + return num < 2 + case *types.VirtualNVMEController: + return num < 8 + default: + return true + } + }) + + if len(l) == 0 { + return nil + } + + return l[0].(types.BaseVirtualController) +} + +// newUnitNumber returns the unit number to use for attaching a new device to the given controller. +func (l VirtualDeviceList) newUnitNumber(c types.BaseVirtualController) int32 { + units := make([]bool, 30) + + switch sc := c.(type) { + case types.BaseVirtualSCSIController: + // The SCSI controller sits on its own bus + units[sc.GetVirtualSCSIController().ScsiCtlrUnitNumber] = true + } + + key := c.GetVirtualController().Key + + for _, device := range l { + d := device.GetVirtualDevice() + + if d.ControllerKey == key && d.UnitNumber != nil { + units[int(*d.UnitNumber)] = true + } + } + + for unit, used := range units { + if !used { + return int32(unit) + } + } + + return -1 +} + +// NewKey returns the key to use for adding a new device to the device list. +// The device list we're working with here may not be complete (e.g. when +// we're only adding new devices), so any positive keys could conflict with device keys +// that are already in use. To avoid this type of conflict, we can use negative keys +// here, which will be resolved to positive keys by vSphere as the reconfiguration is done. +func (l VirtualDeviceList) NewKey() int32 { + var key int32 = -200 + + for _, device := range l { + d := device.GetVirtualDevice() + if d.Key < key { + key = d.Key + } + } + + return key - 1 +} + +// AssignController assigns a device to a controller. +func (l VirtualDeviceList) AssignController(device types.BaseVirtualDevice, c types.BaseVirtualController) { + d := device.GetVirtualDevice() + d.ControllerKey = c.GetVirtualController().Key + d.UnitNumber = new(int32) + *d.UnitNumber = l.newUnitNumber(c) + if d.Key == 0 { + d.Key = -1 + } +} + +// CreateDisk creates a new VirtualDisk device which can be added to a VM. +func (l VirtualDeviceList) CreateDisk(c types.BaseVirtualController, ds types.ManagedObjectReference, name string) *types.VirtualDisk { + // If name is not specified, one will be chosen for you. + // But if when given, make sure it ends in .vmdk, otherwise it will be treated as a directory. + if len(name) > 0 && filepath.Ext(name) != ".vmdk" { + name += ".vmdk" + } + + device := &types.VirtualDisk{ + VirtualDevice: types.VirtualDevice{ + Backing: &types.VirtualDiskFlatVer2BackingInfo{ + DiskMode: string(types.VirtualDiskModePersistent), + ThinProvisioned: types.NewBool(true), + VirtualDeviceFileBackingInfo: types.VirtualDeviceFileBackingInfo{ + FileName: name, + Datastore: &ds, + }, + }, + }, + } + + l.AssignController(device, c) + return device +} + +// ChildDisk creates a new VirtualDisk device, linked to the given parent disk, which can be added to a VM. +func (l VirtualDeviceList) ChildDisk(parent *types.VirtualDisk) *types.VirtualDisk { + disk := *parent + backing := disk.Backing.(*types.VirtualDiskFlatVer2BackingInfo) + p := new(DatastorePath) + p.FromString(backing.FileName) + p.Path = "" + + // Use specified disk as parent backing to a new disk. + disk.Backing = &types.VirtualDiskFlatVer2BackingInfo{ + VirtualDeviceFileBackingInfo: types.VirtualDeviceFileBackingInfo{ + FileName: p.String(), + Datastore: backing.Datastore, + }, + Parent: backing, + DiskMode: backing.DiskMode, + ThinProvisioned: backing.ThinProvisioned, + } + + return &disk +} + +func (l VirtualDeviceList) connectivity(device types.BaseVirtualDevice, v bool) error { + c := device.GetVirtualDevice().Connectable + if c == nil { + return fmt.Errorf("%s is not connectable", l.Name(device)) + } + + c.Connected = v + c.StartConnected = v + + return nil +} + +// Connect changes the device to connected, returns an error if the device is not connectable. +func (l VirtualDeviceList) Connect(device types.BaseVirtualDevice) error { + return l.connectivity(device, true) +} + +// Disconnect changes the device to disconnected, returns an error if the device is not connectable. +func (l VirtualDeviceList) Disconnect(device types.BaseVirtualDevice) error { + return l.connectivity(device, false) +} + +// FindCdrom finds a cdrom device with the given name, defaulting to the first cdrom device if any. +func (l VirtualDeviceList) FindCdrom(name string) (*types.VirtualCdrom, error) { + if name != "" { + d := l.Find(name) + if d == nil { + return nil, fmt.Errorf("device '%s' not found", name) + } + if c, ok := d.(*types.VirtualCdrom); ok { + return c, nil + } + return nil, fmt.Errorf("%s is not a cdrom device", name) + } + + c := l.SelectByType((*types.VirtualCdrom)(nil)) + if len(c) == 0 { + return nil, errors.New("no cdrom device found") + } + + return c[0].(*types.VirtualCdrom), nil +} + +// CreateCdrom creates a new VirtualCdrom device which can be added to a VM. +func (l VirtualDeviceList) CreateCdrom(c *types.VirtualIDEController) (*types.VirtualCdrom, error) { + device := &types.VirtualCdrom{} + + l.AssignController(device, c) + + l.setDefaultCdromBacking(device) + + device.Connectable = &types.VirtualDeviceConnectInfo{ + AllowGuestControl: true, + Connected: true, + StartConnected: true, + } + + return device, nil +} + +// InsertIso changes the cdrom device backing to use the given iso file. +func (l VirtualDeviceList) InsertIso(device *types.VirtualCdrom, iso string) *types.VirtualCdrom { + device.Backing = &types.VirtualCdromIsoBackingInfo{ + VirtualDeviceFileBackingInfo: types.VirtualDeviceFileBackingInfo{ + FileName: iso, + }, + } + + return device +} + +// EjectIso removes the iso file based backing and replaces with the default cdrom backing. +func (l VirtualDeviceList) EjectIso(device *types.VirtualCdrom) *types.VirtualCdrom { + l.setDefaultCdromBacking(device) + return device +} + +func (l VirtualDeviceList) setDefaultCdromBacking(device *types.VirtualCdrom) { + device.Backing = &types.VirtualCdromAtapiBackingInfo{ + VirtualDeviceDeviceBackingInfo: types.VirtualDeviceDeviceBackingInfo{ + DeviceName: fmt.Sprintf("%s-%d-%d", DeviceTypeCdrom, device.ControllerKey, device.UnitNumber), + UseAutoDetect: types.NewBool(false), + }, + } +} + +// FindFloppy finds a floppy device with the given name, defaulting to the first floppy device if any. +func (l VirtualDeviceList) FindFloppy(name string) (*types.VirtualFloppy, error) { + if name != "" { + d := l.Find(name) + if d == nil { + return nil, fmt.Errorf("device '%s' not found", name) + } + if c, ok := d.(*types.VirtualFloppy); ok { + return c, nil + } + return nil, fmt.Errorf("%s is not a floppy device", name) + } + + c := l.SelectByType((*types.VirtualFloppy)(nil)) + if len(c) == 0 { + return nil, errors.New("no floppy device found") + } + + return c[0].(*types.VirtualFloppy), nil +} + +// CreateFloppy creates a new VirtualFloppy device which can be added to a VM. +func (l VirtualDeviceList) CreateFloppy() (*types.VirtualFloppy, error) { + device := &types.VirtualFloppy{} + + c := l.PickController((*types.VirtualSIOController)(nil)) + if c == nil { + return nil, errors.New("no available SIO controller") + } + + l.AssignController(device, c) + + l.setDefaultFloppyBacking(device) + + device.Connectable = &types.VirtualDeviceConnectInfo{ + AllowGuestControl: true, + Connected: true, + StartConnected: true, + } + + return device, nil +} + +// InsertImg changes the floppy device backing to use the given img file. +func (l VirtualDeviceList) InsertImg(device *types.VirtualFloppy, img string) *types.VirtualFloppy { + device.Backing = &types.VirtualFloppyImageBackingInfo{ + VirtualDeviceFileBackingInfo: types.VirtualDeviceFileBackingInfo{ + FileName: img, + }, + } + + return device +} + +// EjectImg removes the img file based backing and replaces with the default floppy backing. +func (l VirtualDeviceList) EjectImg(device *types.VirtualFloppy) *types.VirtualFloppy { + l.setDefaultFloppyBacking(device) + return device +} + +func (l VirtualDeviceList) setDefaultFloppyBacking(device *types.VirtualFloppy) { + device.Backing = &types.VirtualFloppyDeviceBackingInfo{ + VirtualDeviceDeviceBackingInfo: types.VirtualDeviceDeviceBackingInfo{ + DeviceName: fmt.Sprintf("%s-%d", DeviceTypeFloppy, device.UnitNumber), + UseAutoDetect: types.NewBool(false), + }, + } +} + +// FindSerialPort finds a serial port device with the given name, defaulting to the first serial port device if any. +func (l VirtualDeviceList) FindSerialPort(name string) (*types.VirtualSerialPort, error) { + if name != "" { + d := l.Find(name) + if d == nil { + return nil, fmt.Errorf("device '%s' not found", name) + } + if c, ok := d.(*types.VirtualSerialPort); ok { + return c, nil + } + return nil, fmt.Errorf("%s is not a serial port device", name) + } + + c := l.SelectByType((*types.VirtualSerialPort)(nil)) + if len(c) == 0 { + return nil, errors.New("no serial port device found") + } + + return c[0].(*types.VirtualSerialPort), nil +} + +// CreateSerialPort creates a new VirtualSerialPort device which can be added to a VM. +func (l VirtualDeviceList) CreateSerialPort() (*types.VirtualSerialPort, error) { + device := &types.VirtualSerialPort{ + YieldOnPoll: true, + } + + c := l.PickController((*types.VirtualSIOController)(nil)) + if c == nil { + return nil, errors.New("no available SIO controller") + } + + l.AssignController(device, c) + + l.setDefaultSerialPortBacking(device) + + return device, nil +} + +// ConnectSerialPort connects a serial port to a server or client uri. +func (l VirtualDeviceList) ConnectSerialPort(device *types.VirtualSerialPort, uri string, client bool, proxyuri string) *types.VirtualSerialPort { + if strings.HasPrefix(uri, "[") { + device.Backing = &types.VirtualSerialPortFileBackingInfo{ + VirtualDeviceFileBackingInfo: types.VirtualDeviceFileBackingInfo{ + FileName: uri, + }, + } + + return device + } + + direction := types.VirtualDeviceURIBackingOptionDirectionServer + if client { + direction = types.VirtualDeviceURIBackingOptionDirectionClient + } + + device.Backing = &types.VirtualSerialPortURIBackingInfo{ + VirtualDeviceURIBackingInfo: types.VirtualDeviceURIBackingInfo{ + Direction: string(direction), + ServiceURI: uri, + ProxyURI: proxyuri, + }, + } + + return device +} + +// DisconnectSerialPort disconnects the serial port backing. +func (l VirtualDeviceList) DisconnectSerialPort(device *types.VirtualSerialPort) *types.VirtualSerialPort { + l.setDefaultSerialPortBacking(device) + return device +} + +func (l VirtualDeviceList) setDefaultSerialPortBacking(device *types.VirtualSerialPort) { + device.Backing = &types.VirtualSerialPortURIBackingInfo{ + VirtualDeviceURIBackingInfo: types.VirtualDeviceURIBackingInfo{ + Direction: "client", + ServiceURI: "localhost:0", + }, + } +} + +// CreateEthernetCard creates a new VirtualEthernetCard of the given name name and initialized with the given backing. +func (l VirtualDeviceList) CreateEthernetCard(name string, backing types.BaseVirtualDeviceBackingInfo) (types.BaseVirtualDevice, error) { + ctypes := EthernetCardTypes() + + if name == "" { + name = ctypes.deviceName(ctypes[0]) + } + + found := ctypes.Select(func(device types.BaseVirtualDevice) bool { + return l.deviceName(device) == name + }) + + if len(found) == 0 { + return nil, fmt.Errorf("unknown ethernet card type '%s'", name) + } + + c, ok := found[0].(types.BaseVirtualEthernetCard) + if !ok { + return nil, fmt.Errorf("invalid ethernet card type '%s'", name) + } + + c.GetVirtualEthernetCard().Backing = backing + + return c.(types.BaseVirtualDevice), nil +} + +// PrimaryMacAddress returns the MacAddress field of the primary VirtualEthernetCard +func (l VirtualDeviceList) PrimaryMacAddress() string { + eth0 := l.Find("ethernet-0") + + if eth0 == nil { + return "" + } + + return eth0.(types.BaseVirtualEthernetCard).GetVirtualEthernetCard().MacAddress +} + +// convert a BaseVirtualDevice to a BaseVirtualMachineBootOptionsBootableDevice +var bootableDevices = map[string]func(device types.BaseVirtualDevice) types.BaseVirtualMachineBootOptionsBootableDevice{ + DeviceTypeNone: func(types.BaseVirtualDevice) types.BaseVirtualMachineBootOptionsBootableDevice { + return &types.VirtualMachineBootOptionsBootableDevice{} + }, + DeviceTypeCdrom: func(types.BaseVirtualDevice) types.BaseVirtualMachineBootOptionsBootableDevice { + return &types.VirtualMachineBootOptionsBootableCdromDevice{} + }, + DeviceTypeDisk: func(d types.BaseVirtualDevice) types.BaseVirtualMachineBootOptionsBootableDevice { + return &types.VirtualMachineBootOptionsBootableDiskDevice{ + DeviceKey: d.GetVirtualDevice().Key, + } + }, + DeviceTypeEthernet: func(d types.BaseVirtualDevice) types.BaseVirtualMachineBootOptionsBootableDevice { + return &types.VirtualMachineBootOptionsBootableEthernetDevice{ + DeviceKey: d.GetVirtualDevice().Key, + } + }, + DeviceTypeFloppy: func(types.BaseVirtualDevice) types.BaseVirtualMachineBootOptionsBootableDevice { + return &types.VirtualMachineBootOptionsBootableFloppyDevice{} + }, +} + +// BootOrder returns a list of devices which can be used to set boot order via VirtualMachine.SetBootOptions. +// The order can be any of "ethernet", "cdrom", "floppy" or "disk" or by specific device name. +// A value of "-" will clear the existing boot order on the VC/ESX side. +func (l VirtualDeviceList) BootOrder(order []string) []types.BaseVirtualMachineBootOptionsBootableDevice { + var devices []types.BaseVirtualMachineBootOptionsBootableDevice + + for _, name := range order { + if kind, ok := bootableDevices[name]; ok { + if name == DeviceTypeNone { + // Not covered in the API docs, nor obvious, but this clears the boot order on the VC/ESX side. + devices = append(devices, new(types.VirtualMachineBootOptionsBootableDevice)) + continue + } + + for _, device := range l { + if l.Type(device) == name { + devices = append(devices, kind(device)) + } + } + continue + } + + if d := l.Find(name); d != nil { + if kind, ok := bootableDevices[l.Type(d)]; ok { + devices = append(devices, kind(d)) + } + } + } + + return devices +} + +// SelectBootOrder returns an ordered list of devices matching the given bootable device order +func (l VirtualDeviceList) SelectBootOrder(order []types.BaseVirtualMachineBootOptionsBootableDevice) VirtualDeviceList { + var devices VirtualDeviceList + + for _, bd := range order { + for _, device := range l { + if kind, ok := bootableDevices[l.Type(device)]; ok { + if reflect.DeepEqual(kind(device), bd) { + devices = append(devices, device) + } + } + } + } + + return devices +} + +// TypeName returns the vmodl type name of the device +func (l VirtualDeviceList) TypeName(device types.BaseVirtualDevice) string { + dtype := reflect.TypeOf(device) + if dtype == nil { + return "" + } + return dtype.Elem().Name() +} + +var deviceNameRegexp = regexp.MustCompile(`(?:Virtual)?(?:Machine)?(\w+?)(?:Card|EthernetCard|Device|Controller)?$`) + +func (l VirtualDeviceList) deviceName(device types.BaseVirtualDevice) string { + name := "device" + typeName := l.TypeName(device) + + m := deviceNameRegexp.FindStringSubmatch(typeName) + if len(m) == 2 { + name = strings.ToLower(m[1]) + } + + return name +} + +// Type returns a human-readable name for the given device +func (l VirtualDeviceList) Type(device types.BaseVirtualDevice) string { + switch device.(type) { + case types.BaseVirtualEthernetCard: + return DeviceTypeEthernet + case *types.ParaVirtualSCSIController: + return "pvscsi" + case *types.VirtualLsiLogicSASController: + return "lsilogic-sas" + case *types.VirtualNVMEController: + return "nvme" + default: + return l.deviceName(device) + } +} + +// Name returns a stable, human-readable name for the given device +func (l VirtualDeviceList) Name(device types.BaseVirtualDevice) string { + var key string + var UnitNumber int32 + d := device.GetVirtualDevice() + if d.UnitNumber != nil { + UnitNumber = *d.UnitNumber + } + + dtype := l.Type(device) + switch dtype { + case DeviceTypeEthernet: + key = fmt.Sprintf("%d", UnitNumber-7) + case DeviceTypeDisk: + key = fmt.Sprintf("%d-%d", d.ControllerKey, UnitNumber) + default: + key = fmt.Sprintf("%d", d.Key) + } + + return fmt.Sprintf("%s-%s", dtype, key) +} + +// ConfigSpec creates a virtual machine configuration spec for +// the specified operation, for the list of devices in the device list. +func (l VirtualDeviceList) ConfigSpec(op types.VirtualDeviceConfigSpecOperation) ([]types.BaseVirtualDeviceConfigSpec, error) { + var fop types.VirtualDeviceConfigSpecFileOperation + switch op { + case types.VirtualDeviceConfigSpecOperationAdd: + fop = types.VirtualDeviceConfigSpecFileOperationCreate + case types.VirtualDeviceConfigSpecOperationEdit: + fop = types.VirtualDeviceConfigSpecFileOperationReplace + case types.VirtualDeviceConfigSpecOperationRemove: + fop = types.VirtualDeviceConfigSpecFileOperationDestroy + default: + panic("unknown op") + } + + var res []types.BaseVirtualDeviceConfigSpec + for _, device := range l { + config := &types.VirtualDeviceConfigSpec{ + Device: device, + Operation: op, + } + + if disk, ok := device.(*types.VirtualDisk); ok { + config.FileOperation = fop + + // Special case to attach an existing disk + if op == types.VirtualDeviceConfigSpecOperationAdd && disk.CapacityInKB == 0 { + childDisk := false + if b, ok := disk.Backing.(*types.VirtualDiskFlatVer2BackingInfo); ok { + childDisk = b.Parent != nil + } + + if !childDisk { + // Existing disk, clear file operation + config.FileOperation = "" + } + } + } + + res = append(res, config) + } + + return res, nil +} diff --git a/vendor/github.com/vmware/govmomi/object/virtual_disk_manager.go b/vendor/github.com/vmware/govmomi/object/virtual_disk_manager.go new file mode 100644 index 0000000..72439ca --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/virtual_disk_manager.go @@ -0,0 +1,227 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/types" +) + +type VirtualDiskManager struct { + Common +} + +func NewVirtualDiskManager(c *vim25.Client) *VirtualDiskManager { + m := VirtualDiskManager{ + Common: NewCommon(c, *c.ServiceContent.VirtualDiskManager), + } + + return &m +} + +// CopyVirtualDisk copies a virtual disk, performing conversions as specified in the spec. +func (m VirtualDiskManager) CopyVirtualDisk( + ctx context.Context, + sourceName string, sourceDatacenter *Datacenter, + destName string, destDatacenter *Datacenter, + destSpec *types.VirtualDiskSpec, force bool) (*Task, error) { + + req := types.CopyVirtualDisk_Task{ + This: m.Reference(), + SourceName: sourceName, + DestName: destName, + DestSpec: destSpec, + Force: types.NewBool(force), + } + + if sourceDatacenter != nil { + ref := sourceDatacenter.Reference() + req.SourceDatacenter = &ref + } + + if destDatacenter != nil { + ref := destDatacenter.Reference() + req.DestDatacenter = &ref + } + + res, err := methods.CopyVirtualDisk_Task(ctx, m.c, &req) + if err != nil { + return nil, err + } + + return NewTask(m.c, res.Returnval), nil +} + +// CreateVirtualDisk creates a new virtual disk. +func (m VirtualDiskManager) CreateVirtualDisk( + ctx context.Context, + name string, datacenter *Datacenter, + spec types.BaseVirtualDiskSpec) (*Task, error) { + + req := types.CreateVirtualDisk_Task{ + This: m.Reference(), + Name: name, + Spec: spec, + } + + if datacenter != nil { + ref := datacenter.Reference() + req.Datacenter = &ref + } + + res, err := methods.CreateVirtualDisk_Task(ctx, m.c, &req) + if err != nil { + return nil, err + } + + return NewTask(m.c, res.Returnval), nil +} + +// MoveVirtualDisk moves a virtual disk. +func (m VirtualDiskManager) MoveVirtualDisk( + ctx context.Context, + sourceName string, sourceDatacenter *Datacenter, + destName string, destDatacenter *Datacenter, + force bool) (*Task, error) { + req := types.MoveVirtualDisk_Task{ + This: m.Reference(), + SourceName: sourceName, + DestName: destName, + Force: types.NewBool(force), + } + + if sourceDatacenter != nil { + ref := sourceDatacenter.Reference() + req.SourceDatacenter = &ref + } + + if destDatacenter != nil { + ref := destDatacenter.Reference() + req.DestDatacenter = &ref + } + + res, err := methods.MoveVirtualDisk_Task(ctx, m.c, &req) + if err != nil { + return nil, err + } + + return NewTask(m.c, res.Returnval), nil +} + +// DeleteVirtualDisk deletes a virtual disk. +func (m VirtualDiskManager) DeleteVirtualDisk(ctx context.Context, name string, dc *Datacenter) (*Task, error) { + req := types.DeleteVirtualDisk_Task{ + This: m.Reference(), + Name: name, + } + + if dc != nil { + ref := dc.Reference() + req.Datacenter = &ref + } + + res, err := methods.DeleteVirtualDisk_Task(ctx, m.c, &req) + if err != nil { + return nil, err + } + + return NewTask(m.c, res.Returnval), nil +} + +// InflateVirtualDisk inflates a virtual disk. +func (m VirtualDiskManager) InflateVirtualDisk(ctx context.Context, name string, dc *Datacenter) (*Task, error) { + req := types.InflateVirtualDisk_Task{ + This: m.Reference(), + Name: name, + } + + if dc != nil { + ref := dc.Reference() + req.Datacenter = &ref + } + + res, err := methods.InflateVirtualDisk_Task(ctx, m.c, &req) + if err != nil { + return nil, err + } + + return NewTask(m.c, res.Returnval), nil +} + +// ShrinkVirtualDisk shrinks a virtual disk. +func (m VirtualDiskManager) ShrinkVirtualDisk(ctx context.Context, name string, dc *Datacenter, copy *bool) (*Task, error) { + req := types.ShrinkVirtualDisk_Task{ + This: m.Reference(), + Name: name, + Copy: copy, + } + + if dc != nil { + ref := dc.Reference() + req.Datacenter = &ref + } + + res, err := methods.ShrinkVirtualDisk_Task(ctx, m.c, &req) + if err != nil { + return nil, err + } + + return NewTask(m.c, res.Returnval), nil +} + +// Queries virtual disk uuid +func (m VirtualDiskManager) QueryVirtualDiskUuid(ctx context.Context, name string, dc *Datacenter) (string, error) { + req := types.QueryVirtualDiskUuid{ + This: m.Reference(), + Name: name, + } + + if dc != nil { + ref := dc.Reference() + req.Datacenter = &ref + } + + res, err := methods.QueryVirtualDiskUuid(ctx, m.c, &req) + if err != nil { + return "", err + } + + if res == nil { + return "", nil + } + + return res.Returnval, nil +} + +func (m VirtualDiskManager) SetVirtualDiskUuid(ctx context.Context, name string, dc *Datacenter, uuid string) error { + req := types.SetVirtualDiskUuid{ + This: m.Reference(), + Name: name, + Uuid: uuid, + } + + if dc != nil { + ref := dc.Reference() + req.Datacenter = &ref + } + + _, err := methods.SetVirtualDiskUuid(ctx, m.c, &req) + return err +} diff --git a/vendor/github.com/vmware/govmomi/object/virtual_disk_manager_internal.go b/vendor/github.com/vmware/govmomi/object/virtual_disk_manager_internal.go new file mode 100644 index 0000000..faa9eca --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/virtual_disk_manager_internal.go @@ -0,0 +1,166 @@ +/* +Copyright (c) 2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + "reflect" + + "github.com/vmware/govmomi/vim25/soap" + "github.com/vmware/govmomi/vim25/types" +) + +func init() { + types.Add("ArrayOfVirtualDiskInfo", reflect.TypeOf((*arrayOfVirtualDiskInfo)(nil)).Elem()) + + types.Add("VirtualDiskInfo", reflect.TypeOf((*VirtualDiskInfo)(nil)).Elem()) +} + +type arrayOfVirtualDiskInfo struct { + VirtualDiskInfo []VirtualDiskInfo `xml:"VirtualDiskInfo,omitempty"` +} + +type queryVirtualDiskInfoTaskRequest struct { + This types.ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + Datacenter *types.ManagedObjectReference `xml:"datacenter,omitempty"` + IncludeParents bool `xml:"includeParents"` +} + +type queryVirtualDiskInfoTaskResponse struct { + Returnval types.ManagedObjectReference `xml:"returnval"` +} + +type queryVirtualDiskInfoTaskBody struct { + Req *queryVirtualDiskInfoTaskRequest `xml:"urn:internalvim25 QueryVirtualDiskInfo_Task,omitempty"` + Res *queryVirtualDiskInfoTaskResponse `xml:"urn:vim25 QueryVirtualDiskInfo_TaskResponse,omitempty"` + InternalRes *queryVirtualDiskInfoTaskResponse `xml:"urn:internalvim25 QueryVirtualDiskInfo_TaskResponse,omitempty"` + Err *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *queryVirtualDiskInfoTaskBody) Fault() *soap.Fault { return b.Err } + +func queryVirtualDiskInfoTask(ctx context.Context, r soap.RoundTripper, req *queryVirtualDiskInfoTaskRequest) (*queryVirtualDiskInfoTaskResponse, error) { + var reqBody, resBody queryVirtualDiskInfoTaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + if resBody.Res != nil { + return resBody.Res, nil + } + + return resBody.InternalRes, nil +} + +type VirtualDiskInfo struct { + Name string `xml:"unit>name"` + DiskType string `xml:"diskType"` + Parent string `xml:"parent,omitempty"` +} + +func (m VirtualDiskManager) QueryVirtualDiskInfo(ctx context.Context, name string, dc *Datacenter, includeParents bool) ([]VirtualDiskInfo, error) { + req := queryVirtualDiskInfoTaskRequest{ + This: m.Reference(), + Name: name, + IncludeParents: includeParents, + } + + if dc != nil { + ref := dc.Reference() + req.Datacenter = &ref + } + + res, err := queryVirtualDiskInfoTask(ctx, m.Client(), &req) + if err != nil { + return nil, err + } + + info, err := NewTask(m.Client(), res.Returnval).WaitForResult(ctx, nil) + if err != nil { + return nil, err + } + + return info.Result.(arrayOfVirtualDiskInfo).VirtualDiskInfo, nil +} + +type createChildDiskTaskRequest struct { + This types.ManagedObjectReference `xml:"_this"` + ChildName string `xml:"childName"` + ChildDatacenter *types.ManagedObjectReference `xml:"childDatacenter,omitempty"` + ParentName string `xml:"parentName"` + ParentDatacenter *types.ManagedObjectReference `xml:"parentDatacenter,omitempty"` + IsLinkedClone bool `xml:"isLinkedClone"` +} + +type createChildDiskTaskResponse struct { + Returnval types.ManagedObjectReference `xml:"returnval"` +} + +type createChildDiskTaskBody struct { + Req *createChildDiskTaskRequest `xml:"urn:internalvim25 CreateChildDisk_Task,omitempty"` + Res *createChildDiskTaskResponse `xml:"urn:vim25 CreateChildDisk_TaskResponse,omitempty"` + InternalRes *createChildDiskTaskResponse `xml:"urn:internalvim25 CreateChildDisk_TaskResponse,omitempty"` + Err *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *createChildDiskTaskBody) Fault() *soap.Fault { return b.Err } + +func createChildDiskTask(ctx context.Context, r soap.RoundTripper, req *createChildDiskTaskRequest) (*createChildDiskTaskResponse, error) { + var reqBody, resBody createChildDiskTaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + if resBody.Res != nil { + return resBody.Res, nil // vim-version <= 6.5 + } + + return resBody.InternalRes, nil // vim-version >= 6.7 +} + +func (m VirtualDiskManager) CreateChildDisk(ctx context.Context, parent string, pdc *Datacenter, name string, dc *Datacenter, linked bool) (*Task, error) { + req := createChildDiskTaskRequest{ + This: m.Reference(), + ChildName: name, + ParentName: parent, + IsLinkedClone: linked, + } + + if dc != nil { + ref := dc.Reference() + req.ChildDatacenter = &ref + } + + if pdc != nil { + ref := pdc.Reference() + req.ParentDatacenter = &ref + } + + res, err := createChildDiskTask(ctx, m.Client(), &req) + if err != nil { + return nil, err + } + + return NewTask(m.Client(), res.Returnval), nil +} diff --git a/vendor/github.com/vmware/govmomi/object/virtual_machine.go b/vendor/github.com/vmware/govmomi/object/virtual_machine.go new file mode 100644 index 0000000..2bcfab6 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/virtual_machine.go @@ -0,0 +1,924 @@ +/* +Copyright (c) 2015-2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +import ( + "context" + "errors" + "fmt" + "net" + "path" + + "github.com/vmware/govmomi/nfc" + "github.com/vmware/govmomi/property" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +const ( + PropRuntimePowerState = "summary.runtime.powerState" + PropConfigTemplate = "summary.config.template" +) + +type VirtualMachine struct { + Common +} + +func NewVirtualMachine(c *vim25.Client, ref types.ManagedObjectReference) *VirtualMachine { + return &VirtualMachine{ + Common: NewCommon(c, ref), + } +} + +func (v VirtualMachine) PowerState(ctx context.Context) (types.VirtualMachinePowerState, error) { + var o mo.VirtualMachine + + err := v.Properties(ctx, v.Reference(), []string{PropRuntimePowerState}, &o) + if err != nil { + return "", err + } + + return o.Summary.Runtime.PowerState, nil +} + +func (v VirtualMachine) IsTemplate(ctx context.Context) (bool, error) { + var o mo.VirtualMachine + + err := v.Properties(ctx, v.Reference(), []string{PropConfigTemplate}, &o) + if err != nil { + return false, err + } + + return o.Summary.Config.Template, nil +} + +func (v VirtualMachine) PowerOn(ctx context.Context) (*Task, error) { + req := types.PowerOnVM_Task{ + This: v.Reference(), + } + + res, err := methods.PowerOnVM_Task(ctx, v.c, &req) + if err != nil { + return nil, err + } + + return NewTask(v.c, res.Returnval), nil +} + +func (v VirtualMachine) PowerOff(ctx context.Context) (*Task, error) { + req := types.PowerOffVM_Task{ + This: v.Reference(), + } + + res, err := methods.PowerOffVM_Task(ctx, v.c, &req) + if err != nil { + return nil, err + } + + return NewTask(v.c, res.Returnval), nil +} + +func (v VirtualMachine) PutUsbScanCodes(ctx context.Context, spec types.UsbScanCodeSpec) (int32, error) { + req := types.PutUsbScanCodes{ + This: v.Reference(), + Spec: spec, + } + + res, err := methods.PutUsbScanCodes(ctx, v.c, &req) + if err != nil { + return 0, err + } + + return res.Returnval, nil +} + +func (v VirtualMachine) Reset(ctx context.Context) (*Task, error) { + req := types.ResetVM_Task{ + This: v.Reference(), + } + + res, err := methods.ResetVM_Task(ctx, v.c, &req) + if err != nil { + return nil, err + } + + return NewTask(v.c, res.Returnval), nil +} + +func (v VirtualMachine) Suspend(ctx context.Context) (*Task, error) { + req := types.SuspendVM_Task{ + This: v.Reference(), + } + + res, err := methods.SuspendVM_Task(ctx, v.c, &req) + if err != nil { + return nil, err + } + + return NewTask(v.c, res.Returnval), nil +} + +func (v VirtualMachine) ShutdownGuest(ctx context.Context) error { + req := types.ShutdownGuest{ + This: v.Reference(), + } + + _, err := methods.ShutdownGuest(ctx, v.c, &req) + return err +} + +func (v VirtualMachine) RebootGuest(ctx context.Context) error { + req := types.RebootGuest{ + This: v.Reference(), + } + + _, err := methods.RebootGuest(ctx, v.c, &req) + return err +} + +func (v VirtualMachine) Destroy(ctx context.Context) (*Task, error) { + req := types.Destroy_Task{ + This: v.Reference(), + } + + res, err := methods.Destroy_Task(ctx, v.c, &req) + if err != nil { + return nil, err + } + + return NewTask(v.c, res.Returnval), nil +} + +func (v VirtualMachine) Clone(ctx context.Context, folder *Folder, name string, config types.VirtualMachineCloneSpec) (*Task, error) { + req := types.CloneVM_Task{ + This: v.Reference(), + Folder: folder.Reference(), + Name: name, + Spec: config, + } + + res, err := methods.CloneVM_Task(ctx, v.c, &req) + if err != nil { + return nil, err + } + + return NewTask(v.c, res.Returnval), nil +} + +func (v VirtualMachine) Customize(ctx context.Context, spec types.CustomizationSpec) (*Task, error) { + req := types.CustomizeVM_Task{ + This: v.Reference(), + Spec: spec, + } + + res, err := methods.CustomizeVM_Task(ctx, v.c, &req) + if err != nil { + return nil, err + } + + return NewTask(v.c, res.Returnval), nil +} + +func (v VirtualMachine) Relocate(ctx context.Context, config types.VirtualMachineRelocateSpec, priority types.VirtualMachineMovePriority) (*Task, error) { + req := types.RelocateVM_Task{ + This: v.Reference(), + Spec: config, + Priority: priority, + } + + res, err := methods.RelocateVM_Task(ctx, v.c, &req) + if err != nil { + return nil, err + } + + return NewTask(v.c, res.Returnval), nil +} + +func (v VirtualMachine) Reconfigure(ctx context.Context, config types.VirtualMachineConfigSpec) (*Task, error) { + req := types.ReconfigVM_Task{ + This: v.Reference(), + Spec: config, + } + + res, err := methods.ReconfigVM_Task(ctx, v.c, &req) + if err != nil { + return nil, err + } + + return NewTask(v.c, res.Returnval), nil +} + +func (v VirtualMachine) RefreshStorageInfo(ctx context.Context) error { + req := types.RefreshStorageInfo{ + This: v.Reference(), + } + + _, err := methods.RefreshStorageInfo(ctx, v.c, &req) + return err +} + +// WaitForIP waits for the VM guest.ipAddress property to report an IP address. +// Waits for an IPv4 address if the v4 param is true. +func (v VirtualMachine) WaitForIP(ctx context.Context, v4 ...bool) (string, error) { + var ip string + + p := property.DefaultCollector(v.c) + err := property.Wait(ctx, p, v.Reference(), []string{"guest.ipAddress"}, func(pc []types.PropertyChange) bool { + for _, c := range pc { + if c.Name != "guest.ipAddress" { + continue + } + if c.Op != types.PropertyChangeOpAssign { + continue + } + if c.Val == nil { + continue + } + + ip = c.Val.(string) + if len(v4) == 1 && v4[0] { + if net.ParseIP(ip).To4() == nil { + return false + } + } + return true + } + + return false + }) + + if err != nil { + return "", err + } + + return ip, nil +} + +// WaitForNetIP waits for the VM guest.net property to report an IP address for all VM NICs. +// Only consider IPv4 addresses if the v4 param is true. +// By default, wait for all NICs to get an IP address, unless 1 or more device is given. +// A device can be specified by the MAC address or the device name, e.g. "ethernet-0". +// Returns a map with MAC address as the key and IP address list as the value. +func (v VirtualMachine) WaitForNetIP(ctx context.Context, v4 bool, device ...string) (map[string][]string, error) { + macs := make(map[string][]string) + eths := make(map[string]string) + + p := property.DefaultCollector(v.c) + + // Wait for all NICs to have a MacAddress, which may not be generated yet. + err := property.Wait(ctx, p, v.Reference(), []string{"config.hardware.device"}, func(pc []types.PropertyChange) bool { + for _, c := range pc { + if c.Op != types.PropertyChangeOpAssign { + continue + } + + devices := VirtualDeviceList(c.Val.(types.ArrayOfVirtualDevice).VirtualDevice) + for _, d := range devices { + if nic, ok := d.(types.BaseVirtualEthernetCard); ok { + mac := nic.GetVirtualEthernetCard().MacAddress + if mac == "" { + return false + } + macs[mac] = nil + eths[devices.Name(d)] = mac + } + } + } + + return true + }) + + if err != nil { + return nil, err + } + + if len(device) != 0 { + // Only wait for specific NIC(s) + macs = make(map[string][]string) + for _, mac := range device { + if eth, ok := eths[mac]; ok { + mac = eth // device name, e.g. "ethernet-0" + } + macs[mac] = nil + } + } + + err = property.Wait(ctx, p, v.Reference(), []string{"guest.net"}, func(pc []types.PropertyChange) bool { + for _, c := range pc { + if c.Op != types.PropertyChangeOpAssign { + continue + } + + nics := c.Val.(types.ArrayOfGuestNicInfo).GuestNicInfo + for _, nic := range nics { + mac := nic.MacAddress + if mac == "" || nic.IpConfig == nil { + continue + } + + for _, ip := range nic.IpConfig.IpAddress { + if _, ok := macs[mac]; !ok { + continue // Ignore any that don't correspond to a VM device + } + if v4 && net.ParseIP(ip.IpAddress).To4() == nil { + continue // Ignore non IPv4 address + } + macs[mac] = append(macs[mac], ip.IpAddress) + } + } + } + + for _, ips := range macs { + if len(ips) == 0 { + return false + } + } + + return true + }) + + if err != nil { + return nil, err + } + + return macs, nil +} + +// Device returns the VirtualMachine's config.hardware.device property. +func (v VirtualMachine) Device(ctx context.Context) (VirtualDeviceList, error) { + var o mo.VirtualMachine + + err := v.Properties(ctx, v.Reference(), []string{"config.hardware.device", "summary.runtime.connectionState"}, &o) + if err != nil { + return nil, err + } + + // Quoting the SDK doc: + // The virtual machine configuration is not guaranteed to be available. + // For example, the configuration information would be unavailable if the server + // is unable to access the virtual machine files on disk, and is often also unavailable + // during the initial phases of virtual machine creation. + if o.Config == nil { + return nil, fmt.Errorf("%s Config is not available, connectionState=%s", + v.Reference(), o.Summary.Runtime.ConnectionState) + } + + return VirtualDeviceList(o.Config.Hardware.Device), nil +} + +func (v VirtualMachine) HostSystem(ctx context.Context) (*HostSystem, error) { + var o mo.VirtualMachine + + err := v.Properties(ctx, v.Reference(), []string{"summary.runtime.host"}, &o) + if err != nil { + return nil, err + } + + host := o.Summary.Runtime.Host + if host == nil { + return nil, errors.New("VM doesn't have a HostSystem") + } + + return NewHostSystem(v.c, *host), nil +} + +func (v VirtualMachine) ResourcePool(ctx context.Context) (*ResourcePool, error) { + var o mo.VirtualMachine + + err := v.Properties(ctx, v.Reference(), []string{"resourcePool"}, &o) + if err != nil { + return nil, err + } + + rp := o.ResourcePool + if rp == nil { + return nil, errors.New("VM doesn't have a resourcePool") + } + + return NewResourcePool(v.c, *rp), nil +} + +func (v VirtualMachine) configureDevice(ctx context.Context, op types.VirtualDeviceConfigSpecOperation, fop types.VirtualDeviceConfigSpecFileOperation, devices ...types.BaseVirtualDevice) error { + spec := types.VirtualMachineConfigSpec{} + + for _, device := range devices { + config := &types.VirtualDeviceConfigSpec{ + Device: device, + Operation: op, + } + + if disk, ok := device.(*types.VirtualDisk); ok { + config.FileOperation = fop + + // Special case to attach an existing disk + if op == types.VirtualDeviceConfigSpecOperationAdd && disk.CapacityInKB == 0 { + childDisk := false + if b, ok := disk.Backing.(*types.VirtualDiskFlatVer2BackingInfo); ok { + childDisk = b.Parent != nil + } + + if !childDisk { + config.FileOperation = "" // existing disk + } + } + } + + spec.DeviceChange = append(spec.DeviceChange, config) + } + + task, err := v.Reconfigure(ctx, spec) + if err != nil { + return err + } + + return task.Wait(ctx) +} + +// AddDevice adds the given devices to the VirtualMachine +func (v VirtualMachine) AddDevice(ctx context.Context, device ...types.BaseVirtualDevice) error { + return v.configureDevice(ctx, types.VirtualDeviceConfigSpecOperationAdd, types.VirtualDeviceConfigSpecFileOperationCreate, device...) +} + +// EditDevice edits the given (existing) devices on the VirtualMachine +func (v VirtualMachine) EditDevice(ctx context.Context, device ...types.BaseVirtualDevice) error { + return v.configureDevice(ctx, types.VirtualDeviceConfigSpecOperationEdit, types.VirtualDeviceConfigSpecFileOperationReplace, device...) +} + +// RemoveDevice removes the given devices on the VirtualMachine +func (v VirtualMachine) RemoveDevice(ctx context.Context, keepFiles bool, device ...types.BaseVirtualDevice) error { + fop := types.VirtualDeviceConfigSpecFileOperationDestroy + if keepFiles { + fop = "" + } + return v.configureDevice(ctx, types.VirtualDeviceConfigSpecOperationRemove, fop, device...) +} + +// BootOptions returns the VirtualMachine's config.bootOptions property. +func (v VirtualMachine) BootOptions(ctx context.Context) (*types.VirtualMachineBootOptions, error) { + var o mo.VirtualMachine + + err := v.Properties(ctx, v.Reference(), []string{"config.bootOptions"}, &o) + if err != nil { + return nil, err + } + + return o.Config.BootOptions, nil +} + +// SetBootOptions reconfigures the VirtualMachine with the given options. +func (v VirtualMachine) SetBootOptions(ctx context.Context, options *types.VirtualMachineBootOptions) error { + spec := types.VirtualMachineConfigSpec{} + + spec.BootOptions = options + + task, err := v.Reconfigure(ctx, spec) + if err != nil { + return err + } + + return task.Wait(ctx) +} + +// Answer answers a pending question. +func (v VirtualMachine) Answer(ctx context.Context, id, answer string) error { + req := types.AnswerVM{ + This: v.Reference(), + QuestionId: id, + AnswerChoice: answer, + } + + _, err := methods.AnswerVM(ctx, v.c, &req) + if err != nil { + return err + } + + return nil +} + +func (v VirtualMachine) AcquireTicket(ctx context.Context, kind string) (*types.VirtualMachineTicket, error) { + req := types.AcquireTicket{ + This: v.Reference(), + TicketType: kind, + } + + res, err := methods.AcquireTicket(ctx, v.c, &req) + if err != nil { + return nil, err + } + + return &res.Returnval, nil +} + +// CreateSnapshot creates a new snapshot of a virtual machine. +func (v VirtualMachine) CreateSnapshot(ctx context.Context, name string, description string, memory bool, quiesce bool) (*Task, error) { + req := types.CreateSnapshot_Task{ + This: v.Reference(), + Name: name, + Description: description, + Memory: memory, + Quiesce: quiesce, + } + + res, err := methods.CreateSnapshot_Task(ctx, v.c, &req) + if err != nil { + return nil, err + } + + return NewTask(v.c, res.Returnval), nil +} + +// RemoveAllSnapshot removes all snapshots of a virtual machine +func (v VirtualMachine) RemoveAllSnapshot(ctx context.Context, consolidate *bool) (*Task, error) { + req := types.RemoveAllSnapshots_Task{ + This: v.Reference(), + Consolidate: consolidate, + } + + res, err := methods.RemoveAllSnapshots_Task(ctx, v.c, &req) + if err != nil { + return nil, err + } + + return NewTask(v.c, res.Returnval), nil +} + +type snapshotMap map[string][]types.ManagedObjectReference + +func (m snapshotMap) add(parent string, tree []types.VirtualMachineSnapshotTree) { + for i, st := range tree { + sname := st.Name + names := []string{sname, st.Snapshot.Value} + + if parent != "" { + sname = path.Join(parent, sname) + // Add full path as an option to resolve duplicate names + names = append(names, sname) + } + + for _, name := range names { + m[name] = append(m[name], tree[i].Snapshot) + } + + m.add(sname, st.ChildSnapshotList) + } +} + +// FindSnapshot supports snapshot lookup by name, where name can be: +// 1) snapshot ManagedObjectReference.Value (unique) +// 2) snapshot name (may not be unique) +// 3) snapshot tree path (may not be unique) +func (v VirtualMachine) FindSnapshot(ctx context.Context, name string) (*types.ManagedObjectReference, error) { + var o mo.VirtualMachine + + err := v.Properties(ctx, v.Reference(), []string{"snapshot"}, &o) + if err != nil { + return nil, err + } + + if o.Snapshot == nil || len(o.Snapshot.RootSnapshotList) == 0 { + return nil, errors.New("no snapshots for this VM") + } + + m := make(snapshotMap) + m.add("", o.Snapshot.RootSnapshotList) + + s := m[name] + switch len(s) { + case 0: + return nil, fmt.Errorf("snapshot %q not found", name) + case 1: + return &s[0], nil + default: + return nil, fmt.Errorf("%q resolves to %d snapshots", name, len(s)) + } +} + +// RemoveSnapshot removes a named snapshot +func (v VirtualMachine) RemoveSnapshot(ctx context.Context, name string, removeChildren bool, consolidate *bool) (*Task, error) { + snapshot, err := v.FindSnapshot(ctx, name) + if err != nil { + return nil, err + } + + req := types.RemoveSnapshot_Task{ + This: snapshot.Reference(), + RemoveChildren: removeChildren, + Consolidate: consolidate, + } + + res, err := methods.RemoveSnapshot_Task(ctx, v.c, &req) + if err != nil { + return nil, err + } + + return NewTask(v.c, res.Returnval), nil +} + +// RevertToCurrentSnapshot reverts to the current snapshot +func (v VirtualMachine) RevertToCurrentSnapshot(ctx context.Context, suppressPowerOn bool) (*Task, error) { + req := types.RevertToCurrentSnapshot_Task{ + This: v.Reference(), + SuppressPowerOn: types.NewBool(suppressPowerOn), + } + + res, err := methods.RevertToCurrentSnapshot_Task(ctx, v.c, &req) + if err != nil { + return nil, err + } + + return NewTask(v.c, res.Returnval), nil +} + +// RevertToSnapshot reverts to a named snapshot +func (v VirtualMachine) RevertToSnapshot(ctx context.Context, name string, suppressPowerOn bool) (*Task, error) { + snapshot, err := v.FindSnapshot(ctx, name) + if err != nil { + return nil, err + } + + req := types.RevertToSnapshot_Task{ + This: snapshot.Reference(), + SuppressPowerOn: types.NewBool(suppressPowerOn), + } + + res, err := methods.RevertToSnapshot_Task(ctx, v.c, &req) + if err != nil { + return nil, err + } + + return NewTask(v.c, res.Returnval), nil +} + +// IsToolsRunning returns true if VMware Tools is currently running in the guest OS, and false otherwise. +func (v VirtualMachine) IsToolsRunning(ctx context.Context) (bool, error) { + var o mo.VirtualMachine + + err := v.Properties(ctx, v.Reference(), []string{"guest.toolsRunningStatus"}, &o) + if err != nil { + return false, err + } + + return o.Guest.ToolsRunningStatus == string(types.VirtualMachineToolsRunningStatusGuestToolsRunning), nil +} + +// Wait for the VirtualMachine to change to the desired power state. +func (v VirtualMachine) WaitForPowerState(ctx context.Context, state types.VirtualMachinePowerState) error { + p := property.DefaultCollector(v.c) + err := property.Wait(ctx, p, v.Reference(), []string{PropRuntimePowerState}, func(pc []types.PropertyChange) bool { + for _, c := range pc { + if c.Name != PropRuntimePowerState { + continue + } + if c.Val == nil { + continue + } + + ps := c.Val.(types.VirtualMachinePowerState) + if ps == state { + return true + } + } + return false + }) + + return err +} + +func (v VirtualMachine) MarkAsTemplate(ctx context.Context) error { + req := types.MarkAsTemplate{ + This: v.Reference(), + } + + _, err := methods.MarkAsTemplate(ctx, v.c, &req) + if err != nil { + return err + } + + return nil +} + +func (v VirtualMachine) MarkAsVirtualMachine(ctx context.Context, pool ResourcePool, host *HostSystem) error { + req := types.MarkAsVirtualMachine{ + This: v.Reference(), + Pool: pool.Reference(), + } + + if host != nil { + ref := host.Reference() + req.Host = &ref + } + + _, err := methods.MarkAsVirtualMachine(ctx, v.c, &req) + if err != nil { + return err + } + + return nil +} + +func (v VirtualMachine) Migrate(ctx context.Context, pool *ResourcePool, host *HostSystem, priority types.VirtualMachineMovePriority, state types.VirtualMachinePowerState) (*Task, error) { + req := types.MigrateVM_Task{ + This: v.Reference(), + Priority: priority, + State: state, + } + + if pool != nil { + ref := pool.Reference() + req.Pool = &ref + } + + if host != nil { + ref := host.Reference() + req.Host = &ref + } + + res, err := methods.MigrateVM_Task(ctx, v.c, &req) + if err != nil { + return nil, err + } + + return NewTask(v.c, res.Returnval), nil +} + +func (v VirtualMachine) Unregister(ctx context.Context) error { + req := types.UnregisterVM{ + This: v.Reference(), + } + + _, err := methods.UnregisterVM(ctx, v.Client(), &req) + return err +} + +// QueryEnvironmentBrowser is a helper to get the environmentBrowser property. +func (v VirtualMachine) QueryConfigTarget(ctx context.Context) (*types.ConfigTarget, error) { + var vm mo.VirtualMachine + + err := v.Properties(ctx, v.Reference(), []string{"environmentBrowser"}, &vm) + if err != nil { + return nil, err + } + + req := types.QueryConfigTarget{ + This: vm.EnvironmentBrowser, + } + + res, err := methods.QueryConfigTarget(ctx, v.Client(), &req) + if err != nil { + return nil, err + } + + return res.Returnval, nil +} + +func (v VirtualMachine) MountToolsInstaller(ctx context.Context) error { + req := types.MountToolsInstaller{ + This: v.Reference(), + } + + _, err := methods.MountToolsInstaller(ctx, v.Client(), &req) + return err +} + +func (v VirtualMachine) UnmountToolsInstaller(ctx context.Context) error { + req := types.UnmountToolsInstaller{ + This: v.Reference(), + } + + _, err := methods.UnmountToolsInstaller(ctx, v.Client(), &req) + return err +} + +func (v VirtualMachine) UpgradeTools(ctx context.Context, options string) (*Task, error) { + req := types.UpgradeTools_Task{ + This: v.Reference(), + InstallerOptions: options, + } + + res, err := methods.UpgradeTools_Task(ctx, v.Client(), &req) + if err != nil { + return nil, err + } + + return NewTask(v.c, res.Returnval), nil +} + +func (v VirtualMachine) Export(ctx context.Context) (*nfc.Lease, error) { + req := types.ExportVm{ + This: v.Reference(), + } + + res, err := methods.ExportVm(ctx, v.Client(), &req) + if err != nil { + return nil, err + } + + return nfc.NewLease(v.c, res.Returnval), nil +} + +func (v VirtualMachine) UpgradeVM(ctx context.Context, version string) (*Task, error) { + req := types.UpgradeVM_Task{ + This: v.Reference(), + Version: version, + } + + res, err := methods.UpgradeVM_Task(ctx, v.Client(), &req) + if err != nil { + return nil, err + } + + return NewTask(v.c, res.Returnval), nil +} + +// UUID is a helper to get the UUID of the VirtualMachine managed object. +// This method returns an empty string if an error occurs when retrieving UUID from the VirtualMachine object. +func (v VirtualMachine) UUID(ctx context.Context) string { + var o mo.VirtualMachine + + err := v.Properties(ctx, v.Reference(), []string{"config.uuid"}, &o) + if err != nil { + return "" + } + + return o.Config.Uuid +} + +func (v VirtualMachine) QueryChangedDiskAreas(ctx context.Context, baseSnapshot, curSnapshot *types.ManagedObjectReference, disk *types.VirtualDisk, offset int64) (types.DiskChangeInfo, error) { + var noChange types.DiskChangeInfo + var err error + + if offset > disk.CapacityInBytes { + return noChange, fmt.Errorf("offset is greater than the disk size (%#x and %#x)", offset, disk.CapacityInBytes) + } else if offset == disk.CapacityInBytes { + return types.DiskChangeInfo{StartOffset: offset, Length: 0}, nil + } + + var b mo.VirtualMachineSnapshot + err = v.Properties(ctx, baseSnapshot.Reference(), []string{"config.hardware"}, &b) + if err != nil { + return noChange, fmt.Errorf("failed to fetch config.hardware of snapshot %s: %s", baseSnapshot, err) + } + + var changeId *string + for _, vd := range b.Config.Hardware.Device { + d := vd.GetVirtualDevice() + if d.Key != disk.Key { + continue + } + + // As per VDDK programming guide, these are the four types of disks + // that support CBT, see "Gathering Changed Block Information". + if b, ok := d.Backing.(*types.VirtualDiskFlatVer2BackingInfo); ok { + changeId = &b.ChangeId + break + } + if b, ok := d.Backing.(*types.VirtualDiskSparseVer2BackingInfo); ok { + changeId = &b.ChangeId + break + } + if b, ok := d.Backing.(*types.VirtualDiskRawDiskMappingVer1BackingInfo); ok { + changeId = &b.ChangeId + break + } + if b, ok := d.Backing.(*types.VirtualDiskRawDiskVer2BackingInfo); ok { + changeId = &b.ChangeId + break + } + + return noChange, fmt.Errorf("disk %d has backing info without .ChangeId: %t", disk.Key, d.Backing) + } + if changeId == nil || *changeId == "" { + return noChange, fmt.Errorf("CBT is not enabled on disk %d", disk.Key) + } + + req := types.QueryChangedDiskAreas{ + This: v.Reference(), + Snapshot: curSnapshot, + DeviceKey: disk.Key, + StartOffset: offset, + ChangeId: *changeId, + } + + res, err := methods.QueryChangedDiskAreas(ctx, v.Client(), &req) + if err != nil { + return noChange, err + } + + return res.Returnval, nil +} diff --git a/vendor/github.com/vmware/govmomi/object/vmware_distributed_virtual_switch.go b/vendor/github.com/vmware/govmomi/object/vmware_distributed_virtual_switch.go new file mode 100644 index 0000000..8eccba1 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/object/vmware_distributed_virtual_switch.go @@ -0,0 +1,25 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package object + +type VmwareDistributedVirtualSwitch struct { + DistributedVirtualSwitch +} + +func (s VmwareDistributedVirtualSwitch) GetInventoryPath() string { + return s.InventoryPath +} diff --git a/vendor/github.com/vmware/govmomi/ovf/cim.go b/vendor/github.com/vmware/govmomi/ovf/cim.go new file mode 100644 index 0000000..4276999 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/ovf/cim.go @@ -0,0 +1,128 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package ovf + +import ( + "github.com/vmware/govmomi/vim25/types" +) + +/* +Source: http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2.24.0/CIM_VirtualSystemSettingData.xsd +*/ + +type CIMVirtualSystemSettingData struct { + ElementName string `xml:"ElementName"` + InstanceID string `xml:"InstanceID"` + + AutomaticRecoveryAction *uint8 `xml:"AutomaticRecoveryAction"` + AutomaticShutdownAction *uint8 `xml:"AutomaticShutdownAction"` + AutomaticStartupAction *uint8 `xml:"AutomaticStartupAction"` + AutomaticStartupActionDelay *string `xml:"AutomaticStartupActionDelay>Interval"` + AutomaticStartupActionSequenceNumber *uint16 `xml:"AutomaticStartupActionSequenceNumber"` + Caption *string `xml:"Caption"` + ConfigurationDataRoot *string `xml:"ConfigurationDataRoot"` + ConfigurationFile *string `xml:"ConfigurationFile"` + ConfigurationID *string `xml:"ConfigurationID"` + CreationTime *string `xml:"CreationTime"` + Description *string `xml:"Description"` + LogDataRoot *string `xml:"LogDataRoot"` + Notes []string `xml:"Notes"` + RecoveryFile *string `xml:"RecoveryFile"` + SnapshotDataRoot *string `xml:"SnapshotDataRoot"` + SuspendDataRoot *string `xml:"SuspendDataRoot"` + SwapFileDataRoot *string `xml:"SwapFileDataRoot"` + VirtualSystemIdentifier *string `xml:"VirtualSystemIdentifier"` + VirtualSystemType *string `xml:"VirtualSystemType"` +} + +/* +Source: http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2.24.0/CIM_ResourceAllocationSettingData.xsd +*/ + +type CIMResourceAllocationSettingData struct { + ElementName string `xml:"ElementName"` + InstanceID string `xml:"InstanceID"` + + ResourceType *uint16 `xml:"ResourceType"` + OtherResourceType *string `xml:"OtherResourceType"` + ResourceSubType *string `xml:"ResourceSubType"` + + AddressOnParent *string `xml:"AddressOnParent"` + Address *string `xml:"Address"` + AllocationUnits *string `xml:"AllocationUnits"` + AutomaticAllocation *bool `xml:"AutomaticAllocation"` + AutomaticDeallocation *bool `xml:"AutomaticDeallocation"` + Caption *string `xml:"Caption"` + Connection []string `xml:"Connection"` + ConsumerVisibility *uint16 `xml:"ConsumerVisibility"` + Description *string `xml:"Description"` + HostResource []string `xml:"HostResource"` + Limit *uint64 `xml:"Limit"` + MappingBehavior *uint `xml:"MappingBehavior"` + Parent *string `xml:"Parent"` + PoolID *string `xml:"PoolID"` + Reservation *uint64 `xml:"Reservation"` + VirtualQuantity *uint `xml:"VirtualQuantity"` + VirtualQuantityUnits *string `xml:"VirtualQuantityUnits"` + Weight *uint `xml:"Weight"` +} + +/* +Source: http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2.24.0/CIM_StorageAllocationSettingData.xsd +*/ +type CIMStorageAllocationSettingData struct { + ElementName string `xml:"ElementName"` + InstanceID string `xml:"InstanceID"` + + ResourceType *uint16 `xml:"ResourceType"` + OtherResourceType *string `xml:"OtherResourceType"` + ResourceSubType *string `xml:"ResourceSubType"` + + Access *uint16 `xml:"Access"` + Address *string `xml:"Address"` + AddressOnParent *string `xml:"AddressOnParent"` + AllocationUnits *string `xml:"AllocationUnits"` + AutomaticAllocation *bool `xml:"AutomaticAllocation"` + AutomaticDeallocation *bool `xml:"AutomaticDeallocation"` + Caption *string `xml:"Caption"` + ChangeableType *uint16 `xml:"ChangeableType"` + ComponentSetting []types.AnyType `xml:"ComponentSetting"` + ConfigurationName *string `xml:"ConfigurationName"` + Connection []string `xml:"Connection"` + ConsumerVisibility *uint16 `xml:"ConsumerVisibility"` + Description *string `xml:"Description"` + Generation *uint64 `xml:"Generation"` + HostExtentName *string `xml:"HostExtentName"` + HostExtentNameFormat *uint16 `xml:"HostExtentNameFormat"` + HostExtentNameNamespace *uint16 `xml:"HostExtentNameNamespace"` + HostExtentStartingAddress *uint64 `xml:"HostExtentStartingAddress"` + HostResource []string `xml:"HostResource"` + HostResourceBlockSize *uint64 `xml:"HostResourceBlockSize"` + Limit *uint64 `xml:"Limit"` + MappingBehavior *uint `xml:"MappingBehavior"` + OtherHostExtentNameFormat *string `xml:"OtherHostExtentNameFormat"` + OtherHostExtentNameNamespace *string `xml:"OtherHostExtentNameNamespace"` + Parent *string `xml:"Parent"` + PoolID *string `xml:"PoolID"` + Reservation *uint64 `xml:"Reservation"` + SoID *string `xml:"SoID"` + SoOrgID *string `xml:"SoOrgID"` + VirtualQuantity *uint `xml:"VirtualQuantity"` + VirtualQuantityUnits *string `xml:"VirtualQuantityUnits"` + VirtualResourceBlockSize *uint64 `xml:"VirtualResourceBlockSize"` + Weight *uint `xml:"Weight"` +} diff --git a/vendor/github.com/vmware/govmomi/ovf/doc.go b/vendor/github.com/vmware/govmomi/ovf/doc.go new file mode 100644 index 0000000..6284b1a --- /dev/null +++ b/vendor/github.com/vmware/govmomi/ovf/doc.go @@ -0,0 +1,25 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Package ovf provides functionality to unmarshal and inspect the structure +of an OVF file. It is not a complete implementation of the specification and +is intended to be used to import virtual infrastructure into vSphere. + +For a complete specification of the OVF standard, refer to: +https://www.dmtf.org/sites/default/files/standards/documents/DSP0243_2.1.0.pdf +*/ +package ovf diff --git a/vendor/github.com/vmware/govmomi/ovf/env.go b/vendor/github.com/vmware/govmomi/ovf/env.go new file mode 100644 index 0000000..3ec1b99 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/ovf/env.go @@ -0,0 +1,99 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package ovf + +import ( + "bytes" + "fmt" + + "github.com/vmware/govmomi/vim25/xml" +) + +const ( + ovfEnvHeader = `` + ovfEnvPlatformSection = ` + %s + %s + %s + %s + ` + ovfEnvPropertyHeader = `` + ovfEnvPropertyEntry = `` + ovfEnvPropertyFooter = `` + ovfEnvFooter = `` +) + +type Env struct { + XMLName xml.Name `xml:"http://schemas.dmtf.org/ovf/environment/1 Environment"` + ID string `xml:"id,attr"` + EsxID string `xml:"http://www.vmware.com/schema/ovfenv esxId,attr"` + + Platform *PlatformSection `xml:"PlatformSection"` + Property *PropertySection `xml:"PropertySection"` +} + +type PlatformSection struct { + Kind string `xml:"Kind"` + Version string `xml:"Version"` + Vendor string `xml:"Vendor"` + Locale string `xml:"Locale"` +} + +type PropertySection struct { + Properties []EnvProperty `xml:"Property"` +} + +type EnvProperty struct { + Key string `xml:"key,attr"` + Value string `xml:"value,attr"` +} + +// Marshal marshals Env to xml by using xml.Marshal. +func (e Env) Marshal() (string, error) { + x, err := xml.Marshal(e) + if err != nil { + return "", err + } + + return fmt.Sprintf("%s%s", xml.Header, x), nil +} + +// MarshalManual manually marshals Env to xml suitable for a vApp guest. +// It exists to overcome the lack of expressiveness in Go's XML namespaces. +func (e Env) MarshalManual() string { + var buffer bytes.Buffer + + buffer.WriteString(xml.Header) + buffer.WriteString(fmt.Sprintf(ovfEnvHeader, e.EsxID)) + buffer.WriteString(fmt.Sprintf(ovfEnvPlatformSection, e.Platform.Kind, e.Platform.Version, e.Platform.Vendor, e.Platform.Locale)) + + buffer.WriteString(fmt.Sprint(ovfEnvPropertyHeader)) + for _, p := range e.Property.Properties { + buffer.WriteString(fmt.Sprintf(ovfEnvPropertyEntry, p.Key, p.Value)) + } + buffer.WriteString(fmt.Sprint(ovfEnvPropertyFooter)) + + buffer.WriteString(fmt.Sprint(ovfEnvFooter)) + + return buffer.String() +} diff --git a/vendor/github.com/vmware/govmomi/ovf/envelope.go b/vendor/github.com/vmware/govmomi/ovf/envelope.go new file mode 100644 index 0000000..fa4690d --- /dev/null +++ b/vendor/github.com/vmware/govmomi/ovf/envelope.go @@ -0,0 +1,200 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package ovf + +type Envelope struct { + References []File `xml:"References>File"` + + // Package level meta-data + Annotation *AnnotationSection `xml:"AnnotationSection"` + Product *ProductSection `xml:"ProductSection"` + Network *NetworkSection `xml:"NetworkSection"` + Disk *DiskSection `xml:"DiskSection"` + OperatingSystem *OperatingSystemSection `xml:"OperatingSystemSection"` + Eula *EulaSection `xml:"EulaSection"` + VirtualHardware *VirtualHardwareSection `xml:"VirtualHardwareSection"` + ResourceAllocation *ResourceAllocationSection `xml:"ResourceAllocationSection"` + DeploymentOption *DeploymentOptionSection `xml:"DeploymentOptionSection"` + + // Content: A VirtualSystem or a VirtualSystemCollection + VirtualSystem *VirtualSystem `xml:"VirtualSystem"` +} + +type VirtualSystem struct { + Content + + Annotation []AnnotationSection `xml:"AnnotationSection"` + Product []ProductSection `xml:"ProductSection"` + OperatingSystem []OperatingSystemSection `xml:"OperatingSystemSection"` + Eula []EulaSection `xml:"EulaSection"` + VirtualHardware []VirtualHardwareSection `xml:"VirtualHardwareSection"` +} + +type File struct { + ID string `xml:"id,attr"` + Href string `xml:"href,attr"` + Size uint `xml:"size,attr"` + Compression *string `xml:"compression,attr"` + ChunkSize *int `xml:"chunkSize,attr"` +} + +type Content struct { + ID string `xml:"id,attr"` + Info string `xml:"Info"` + Name *string `xml:"Name"` +} + +type Section struct { + Required *bool `xml:"required,attr"` + Info string `xml:"Info"` +} + +type AnnotationSection struct { + Section + + Annotation string `xml:"Annotation"` +} + +type ProductSection struct { + Section + + Class *string `xml:"class,attr"` + Instance *string `xml:"instance,attr"` + + Product string `xml:"Product"` + Vendor string `xml:"Vendor"` + Version string `xml:"Version"` + FullVersion string `xml:"FullVersion"` + ProductURL string `xml:"ProductUrl"` + VendorURL string `xml:"VendorUrl"` + AppURL string `xml:"AppUrl"` + Property []Property `xml:"Property"` +} + +type Property struct { + Key string `xml:"key,attr"` + Type string `xml:"type,attr"` + Qualifiers *string `xml:"qualifiers,attr"` + UserConfigurable *bool `xml:"userConfigurable,attr"` + Default *string `xml:"value,attr"` + Password *bool `xml:"password,attr"` + + Label *string `xml:"Label"` + Description *string `xml:"Description"` + + Values []PropertyConfigurationValue `xml:"Value"` +} + +type PropertyConfigurationValue struct { + Value string `xml:"value,attr"` + Configuration *string `xml:"configuration,attr"` +} + +type NetworkSection struct { + Section + + Networks []Network `xml:"Network"` +} + +type Network struct { + Name string `xml:"name,attr"` + + Description string `xml:"Description"` +} + +type DiskSection struct { + Section + + Disks []VirtualDiskDesc `xml:"Disk"` +} + +type VirtualDiskDesc struct { + DiskID string `xml:"diskId,attr"` + FileRef *string `xml:"fileRef,attr"` + Capacity string `xml:"capacity,attr"` + CapacityAllocationUnits *string `xml:"capacityAllocationUnits,attr"` + Format *string `xml:"format,attr"` + PopulatedSize *int `xml:"populatedSize,attr"` + ParentRef *string `xml:"parentRef,attr"` +} + +type OperatingSystemSection struct { + Section + + ID int16 `xml:"id,attr"` + Version *string `xml:"version,attr"` + OSType *string `xml:"osType,attr"` + + Description *string `xml:"Description"` +} + +type EulaSection struct { + Section + + License string `xml:"License"` +} + +type VirtualHardwareSection struct { + Section + + ID *string `xml:"id,attr"` + Transport *string `xml:"transport,attr"` + + System *VirtualSystemSettingData `xml:"System"` + Item []ResourceAllocationSettingData `xml:"Item"` + StorageItem []StorageAllocationSettingData `xml:"StorageItem"` +} + +type VirtualSystemSettingData struct { + CIMVirtualSystemSettingData +} + +type ResourceAllocationSettingData struct { + CIMResourceAllocationSettingData + + Required *bool `xml:"required,attr"` + Configuration *string `xml:"configuration,attr"` + Bound *string `xml:"bound,attr"` +} + +type StorageAllocationSettingData struct { + CIMStorageAllocationSettingData + + Required *bool `xml:"required,attr"` + Configuration *string `xml:"configuration,attr"` + Bound *string `xml:"bound,attr"` +} + +type ResourceAllocationSection struct { + Section + + Item []ResourceAllocationSettingData `xml:"Item"` +} + +type DeploymentOptionSection struct { + Section + + Configuration []DeploymentOptionConfiguration `xml:"Configuration"` +} + +type DeploymentOptionConfiguration struct { + ID string `xml:"id,attr"` + Default *bool `xml:"default,attr"` + + Label string `xml:"Label"` + Description string `xml:"Description"` +} diff --git a/vendor/github.com/vmware/govmomi/ovf/manager.go b/vendor/github.com/vmware/govmomi/ovf/manager.go new file mode 100644 index 0000000..3ee2afd --- /dev/null +++ b/vendor/github.com/vmware/govmomi/ovf/manager.go @@ -0,0 +1,103 @@ +/* +Copyright (c) 2015-2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package ovf + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type Manager struct { + types.ManagedObjectReference + + c *vim25.Client +} + +func NewManager(c *vim25.Client) *Manager { + return &Manager{*c.ServiceContent.OvfManager, c} +} + +// CreateDescriptor wraps methods.CreateDescriptor +func (m *Manager) CreateDescriptor(ctx context.Context, obj mo.Reference, cdp types.OvfCreateDescriptorParams) (*types.OvfCreateDescriptorResult, error) { + req := types.CreateDescriptor{ + This: m.Reference(), + Obj: obj.Reference(), + Cdp: cdp, + } + + res, err := methods.CreateDescriptor(ctx, m.c, &req) + if err != nil { + return nil, err + } + + return &res.Returnval, nil +} + +// CreateImportSpec wraps methods.CreateImportSpec +func (m *Manager) CreateImportSpec(ctx context.Context, ovfDescriptor string, resourcePool mo.Reference, datastore mo.Reference, cisp types.OvfCreateImportSpecParams) (*types.OvfCreateImportSpecResult, error) { + req := types.CreateImportSpec{ + This: m.Reference(), + OvfDescriptor: ovfDescriptor, + ResourcePool: resourcePool.Reference(), + Datastore: datastore.Reference(), + Cisp: cisp, + } + + res, err := methods.CreateImportSpec(ctx, m.c, &req) + if err != nil { + return nil, err + } + + return &res.Returnval, nil +} + +// ParseDescriptor wraps methods.ParseDescriptor +func (m *Manager) ParseDescriptor(ctx context.Context, ovfDescriptor string, pdp types.OvfParseDescriptorParams) (*types.OvfParseDescriptorResult, error) { + req := types.ParseDescriptor{ + This: m.Reference(), + OvfDescriptor: ovfDescriptor, + Pdp: pdp, + } + + res, err := methods.ParseDescriptor(ctx, m.c, &req) + if err != nil { + return nil, err + } + + return &res.Returnval, nil +} + +// ValidateHost wraps methods.ValidateHost +func (m *Manager) ValidateHost(ctx context.Context, ovfDescriptor string, host mo.Reference, vhp types.OvfValidateHostParams) (*types.OvfValidateHostResult, error) { + req := types.ValidateHost{ + This: m.Reference(), + OvfDescriptor: ovfDescriptor, + Host: host.Reference(), + Vhp: vhp, + } + + res, err := methods.ValidateHost(ctx, m.c, &req) + if err != nil { + return nil, err + } + + return &res.Returnval, nil +} diff --git a/vendor/github.com/vmware/govmomi/ovf/ovf.go b/vendor/github.com/vmware/govmomi/ovf/ovf.go new file mode 100644 index 0000000..bd279e7 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/ovf/ovf.go @@ -0,0 +1,35 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package ovf + +import ( + "io" + + "github.com/vmware/govmomi/vim25/xml" +) + +func Unmarshal(r io.Reader) (*Envelope, error) { + var e Envelope + + dec := xml.NewDecoder(r) + err := dec.Decode(&e) + if err != nil { + return nil, err + } + + return &e, nil +} diff --git a/vendor/github.com/vmware/govmomi/property/collector.go b/vendor/github.com/vmware/govmomi/property/collector.go new file mode 100644 index 0000000..2c74bc6 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/property/collector.go @@ -0,0 +1,211 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package property + +import ( + "context" + "errors" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/soap" + "github.com/vmware/govmomi/vim25/types" +) + +// Collector models the PropertyCollector managed object. +// +// For more information, see: +// http://pubs.vmware.com/vsphere-60/index.jsp?topic=%2Fcom.vmware.wssdk.apiref.doc%2Fvmodl.query.PropertyCollector.html +// +type Collector struct { + roundTripper soap.RoundTripper + reference types.ManagedObjectReference +} + +// DefaultCollector returns the session's default property collector. +func DefaultCollector(c *vim25.Client) *Collector { + p := Collector{ + roundTripper: c, + reference: c.ServiceContent.PropertyCollector, + } + + return &p +} + +func (p Collector) Reference() types.ManagedObjectReference { + return p.reference +} + +// Create creates a new session-specific Collector that can be used to +// retrieve property updates independent of any other Collector. +func (p *Collector) Create(ctx context.Context) (*Collector, error) { + req := types.CreatePropertyCollector{ + This: p.Reference(), + } + + res, err := methods.CreatePropertyCollector(ctx, p.roundTripper, &req) + if err != nil { + return nil, err + } + + newp := Collector{ + roundTripper: p.roundTripper, + reference: res.Returnval, + } + + return &newp, nil +} + +// Destroy destroys this Collector. +func (p *Collector) Destroy(ctx context.Context) error { + req := types.DestroyPropertyCollector{ + This: p.Reference(), + } + + _, err := methods.DestroyPropertyCollector(ctx, p.roundTripper, &req) + if err != nil { + return err + } + + p.reference = types.ManagedObjectReference{} + return nil +} + +func (p *Collector) CreateFilter(ctx context.Context, req types.CreateFilter) error { + req.This = p.Reference() + + _, err := methods.CreateFilter(ctx, p.roundTripper, &req) + if err != nil { + return err + } + + return nil +} + +func (p *Collector) WaitForUpdates(ctx context.Context, v string) (*types.UpdateSet, error) { + req := types.WaitForUpdatesEx{ + This: p.Reference(), + Version: v, + } + + res, err := methods.WaitForUpdatesEx(ctx, p.roundTripper, &req) + if err != nil { + return nil, err + } + + return res.Returnval, nil +} + +func (p *Collector) CancelWaitForUpdates(ctx context.Context) error { + req := &types.CancelWaitForUpdates{This: p.Reference()} + _, err := methods.CancelWaitForUpdates(ctx, p.roundTripper, req) + return err +} + +func (p *Collector) RetrieveProperties(ctx context.Context, req types.RetrieveProperties) (*types.RetrievePropertiesResponse, error) { + req.This = p.Reference() + return methods.RetrieveProperties(ctx, p.roundTripper, &req) +} + +// Retrieve loads properties for a slice of managed objects. The dst argument +// must be a pointer to a []interface{}, which is populated with the instances +// of the specified managed objects, with the relevant properties filled in. If +// the properties slice is nil, all properties are loaded. +// Note that pointer types are optional fields that may be left as a nil value. +// The caller should check such fields for a nil value before dereferencing. +func (p *Collector) Retrieve(ctx context.Context, objs []types.ManagedObjectReference, ps []string, dst interface{}) error { + if len(objs) == 0 { + return errors.New("object references is empty") + } + + kinds := make(map[string]bool) + + var propSet []types.PropertySpec + var objectSet []types.ObjectSpec + + for _, obj := range objs { + if _, ok := kinds[obj.Type]; !ok { + spec := types.PropertySpec{ + Type: obj.Type, + } + if len(ps) == 0 { + spec.All = types.NewBool(true) + } else { + spec.PathSet = ps + } + propSet = append(propSet, spec) + kinds[obj.Type] = true + } + + objectSpec := types.ObjectSpec{ + Obj: obj, + Skip: types.NewBool(false), + } + + objectSet = append(objectSet, objectSpec) + } + + req := types.RetrieveProperties{ + SpecSet: []types.PropertyFilterSpec{ + { + ObjectSet: objectSet, + PropSet: propSet, + }, + }, + } + + res, err := p.RetrieveProperties(ctx, req) + if err != nil { + return err + } + + if d, ok := dst.(*[]types.ObjectContent); ok { + *d = res.Returnval + return nil + } + + return mo.LoadObjectContent(res.Returnval, dst) +} + +// RetrieveWithFilter populates dst as Retrieve does, but only for entities matching the given filter. +func (p *Collector) RetrieveWithFilter(ctx context.Context, objs []types.ManagedObjectReference, ps []string, dst interface{}, filter Filter) error { + if len(filter) == 0 { + return p.Retrieve(ctx, objs, ps, dst) + } + + var content []types.ObjectContent + + err := p.Retrieve(ctx, objs, filter.Keys(), &content) + if err != nil { + return err + } + + objs = filter.MatchObjectContent(content) + + if len(objs) == 0 { + return nil + } + + return p.Retrieve(ctx, objs, ps, dst) +} + +// RetrieveOne calls Retrieve with a single managed object reference via Collector.Retrieve(). +func (p *Collector) RetrieveOne(ctx context.Context, obj types.ManagedObjectReference, ps []string, dst interface{}) error { + var objs = []types.ManagedObjectReference{obj} + return p.Retrieve(ctx, objs, ps, dst) +} diff --git a/vendor/github.com/vmware/govmomi/property/filter.go b/vendor/github.com/vmware/govmomi/property/filter.go new file mode 100644 index 0000000..b88d197 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/property/filter.go @@ -0,0 +1,144 @@ +/* +Copyright (c) 2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package property + +import ( + "fmt" + "path" + "reflect" + "strconv" + "strings" + + "github.com/vmware/govmomi/vim25/types" +) + +// Filter provides methods for matching against types.DynamicProperty +type Filter map[string]types.AnyType + +// Keys returns the Filter map keys as a []string +func (f Filter) Keys() []string { + keys := make([]string, 0, len(f)) + + for key := range f { + keys = append(keys, key) + } + + return keys +} + +// MatchProperty returns true if a Filter entry matches the given prop. +func (f Filter) MatchProperty(prop types.DynamicProperty) bool { + if prop.Val == nil { + return false + } + match, ok := f[prop.Name] + if !ok { + return false + } + + if match == prop.Val { + return true + } + + ptype := reflect.TypeOf(prop.Val) + + if strings.HasPrefix(ptype.Name(), "ArrayOf") { + pval := reflect.ValueOf(prop.Val).Field(0) + + for i := 0; i < pval.Len(); i++ { + prop.Val = pval.Index(i).Interface() + + if f.MatchProperty(prop) { + return true + } + } + + return false + } + + if reflect.TypeOf(match) != ptype { + s, ok := match.(string) + if !ok { + return false + } + + // convert if we can + switch val := prop.Val.(type) { + case bool: + match, _ = strconv.ParseBool(s) + case int16: + x, _ := strconv.ParseInt(s, 10, 16) + match = int16(x) + case int32: + x, _ := strconv.ParseInt(s, 10, 32) + match = int32(x) + case int64: + match, _ = strconv.ParseInt(s, 10, 64) + case float32: + x, _ := strconv.ParseFloat(s, 32) + match = float32(x) + case float64: + match, _ = strconv.ParseFloat(s, 64) + case fmt.Stringer: + prop.Val = val.String() + case *types.CustomFieldStringValue: + prop.Val = fmt.Sprintf("%d:%s", val.Key, val.Value) + default: + if ptype.Kind() != reflect.String { + return false + } + // An enum type we can convert to a string type + prop.Val = reflect.ValueOf(prop.Val).String() + } + } + + switch pval := prop.Val.(type) { + case string: + s := match.(string) + if s == "*" { + return true // TODO: path.Match fails if s contains a '/' + } + m, _ := path.Match(s, pval) + return m + default: + return reflect.DeepEqual(match, pval) + } +} + +// MatchPropertyList returns true if all given props match the Filter. +func (f Filter) MatchPropertyList(props []types.DynamicProperty) bool { + for _, p := range props { + if !f.MatchProperty(p) { + return false + } + } + + return len(f) == len(props) // false if a property such as VM "guest" is unset +} + +// MatchObjectContent returns a list of ObjectContent.Obj where the ObjectContent.PropSet matches the Filter. +func (f Filter) MatchObjectContent(objects []types.ObjectContent) []types.ManagedObjectReference { + var refs []types.ManagedObjectReference + + for _, o := range objects { + if f.MatchPropertyList(o.PropSet) { + refs = append(refs, o.Obj) + } + } + + return refs +} diff --git a/vendor/github.com/vmware/govmomi/property/wait.go b/vendor/github.com/vmware/govmomi/property/wait.go new file mode 100644 index 0000000..fbb6807 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/property/wait.go @@ -0,0 +1,151 @@ +/* +Copyright (c) 2015-2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package property + +import ( + "context" + + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/soap" + "github.com/vmware/govmomi/vim25/types" +) + +// WaitFilter provides helpers to construct a types.CreateFilter for use with property.Wait +type WaitFilter struct { + types.CreateFilter + Options *types.WaitOptions + PropagateMissing bool + Truncated bool +} + +// Add a new ObjectSpec and PropertySpec to the WaitFilter +func (f *WaitFilter) Add(obj types.ManagedObjectReference, kind string, ps []string, set ...types.BaseSelectionSpec) *WaitFilter { + spec := types.ObjectSpec{ + Obj: obj, + SelectSet: set, + } + + pset := types.PropertySpec{ + Type: kind, + PathSet: ps, + } + + if len(ps) == 0 { + pset.All = types.NewBool(true) + } + + f.Spec.ObjectSet = append(f.Spec.ObjectSet, spec) + + f.Spec.PropSet = append(f.Spec.PropSet, pset) + + return f +} + +// Wait creates a new WaitFilter and calls the specified function for each ObjectUpdate via WaitForUpdates +func Wait(ctx context.Context, c *Collector, obj types.ManagedObjectReference, ps []string, f func([]types.PropertyChange) bool) error { + filter := new(WaitFilter).Add(obj, obj.Type, ps) + + return WaitForUpdates(ctx, c, filter, func(updates []types.ObjectUpdate) bool { + for _, update := range updates { + if f(update.ChangeSet) { + return true + } + } + + return false + }) +} + +// WaitForUpdates waits for any of the specified properties of the specified managed +// object to change. It calls the specified function for every update it +// receives. If this function returns false, it continues waiting for +// subsequent updates. If this function returns true, it stops waiting and +// returns. +// +// To only receive updates for the specified managed object, the function +// creates a new property collector and calls CreateFilter. A new property +// collector is required because filters can only be added, not removed. +// +// If the Context is canceled, a call to CancelWaitForUpdates() is made and its error value is returned. +// The newly created collector is destroyed before this function returns (both +// in case of success or error). +// +// By default, ObjectUpdate.MissingSet faults are not propagated to the returned error, +// set WaitFilter.PropagateMissing=true to enable MissingSet fault propagation. +func WaitForUpdates(ctx context.Context, c *Collector, filter *WaitFilter, f func([]types.ObjectUpdate) bool) error { + p, err := c.Create(ctx) + if err != nil { + return err + } + + // Attempt to destroy the collector using the background context, as the + // specified context may have timed out or have been canceled. + defer func() { + _ = p.Destroy(context.Background()) + }() + + err = p.CreateFilter(ctx, filter.CreateFilter) + if err != nil { + return err + } + + req := types.WaitForUpdatesEx{ + This: p.Reference(), + Options: filter.Options, + } + + for { + res, err := methods.WaitForUpdatesEx(ctx, p.roundTripper, &req) + if err != nil { + if ctx.Err() == context.Canceled { + werr := p.CancelWaitForUpdates(context.Background()) + return werr + } + return err + } + + set := res.Returnval + if set == nil { + if req.Options != nil && req.Options.MaxWaitSeconds != nil { + return nil // WaitOptions.MaxWaitSeconds exceeded + } + // Retry if the result came back empty + continue + } + + req.Version = set.Version + filter.Truncated = false + if set.Truncated != nil { + filter.Truncated = *set.Truncated + } + + for _, fs := range set.FilterSet { + if filter.PropagateMissing { + for i := range fs.ObjectSet { + for _, p := range fs.ObjectSet[i].MissingSet { + // Same behavior as mo.ObjectContentToType() + return soap.WrapVimFault(p.Fault.Fault) + } + } + } + + if f(fs.ObjectSet) { + return nil + } + } + } +} diff --git a/vendor/github.com/vmware/govmomi/session/cache/session.go b/vendor/github.com/vmware/govmomi/session/cache/session.go new file mode 100644 index 0000000..b4e4136 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/session/cache/session.go @@ -0,0 +1,360 @@ +/* +Copyright (c) 2020 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "context" + "crypto/sha1" + "encoding/json" + "fmt" + "io/ioutil" + "net/url" + "os" + "os/user" + "path/filepath" + + "github.com/vmware/govmomi/session" + "github.com/vmware/govmomi/vapi/rest" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/soap" + "github.com/vmware/govmomi/vim25/types" +) + +// Client interface to support client session caching +type Client interface { + json.Marshaler + json.Unmarshaler + + Valid() bool + Path() string +} + +// Session provides methods to cache authenticated vim25.Client and rest.Client sessions. +// Use of session cache avoids the expense of creating and deleting vSphere sessions. +// It also helps avoid the problem of "leaking sessions", as Session.Login will only +// create a new authenticated session if the cached session does not exist or is invalid. +// By default, username/password authentication is used to create new sessions. +// The Session.Login{SOAP,REST} fields can be set to use other methods, +// such as SAML token authentication (see govc session.login for example). +type Session struct { + URL *url.URL // URL of a vCenter or ESXi instance + DirSOAP string // DirSOAP cache directory. Defaults to "$HOME/.govmomi/sessions" + DirREST string // DirREST cache directory. Defaults to "$HOME/.govmomi/rest_sessions" + Insecure bool // Insecure param for soap.NewClient (tls.Config.InsecureSkipVerify) + Passthrough bool // Passthrough disables caching when set to true + + LoginSOAP func(context.Context, *vim25.Client) error // LoginSOAP defaults to session.Manager.Login() + LoginREST func(context.Context, *rest.Client) error // LoginREST defaults to rest.Client.Login() +} + +var ( + home = os.Getenv("GOVMOMI_HOME") +) + +func init() { + if home == "" { + dir, err := os.UserHomeDir() + if err != nil { + dir = os.Getenv("HOME") + } + home = filepath.Join(dir, ".govmomi") + } +} + +// Endpoint returns a copy of the Session.URL with Password, Query and Fragment removed. +func (s *Session) Endpoint() *url.URL { + if s.URL == nil { + return nil + } + p := &url.URL{ + Scheme: s.URL.Scheme, + Host: s.URL.Host, + Path: s.URL.Path, + } + if u := s.URL.User; u != nil { + p.User = url.User(u.Username()) // Remove password + } + return p +} + +// key is a digest of the URL scheme + username + host + Client.Path() +func (s *Session) key(path string) string { + p := s.Endpoint() + p.Path = path + + // Key session file off of full URI and insecure setting. + // Hash key to get a predictable, canonical format. + key := fmt.Sprintf("%s#insecure=%t", p.String(), s.Insecure) + return fmt.Sprintf("%040x", sha1.Sum([]byte(key))) +} + +func (s *Session) file(p string) string { + dir := "" + + switch p { + case rest.Path: + dir = s.DirREST + if dir == "" { + dir = filepath.Join(home, "rest_sessions") + } + default: + dir = s.DirSOAP + if dir == "" { + dir = filepath.Join(home, "sessions") + } + } + + return filepath.Join(dir, s.key(p)) +} + +// Save a Client in the file cache. +// Session will not be saved if Session.Passthrough is true. +func (s *Session) Save(c Client) error { + if s.Passthrough { + return nil + } + + p := s.file(c.Path()) + + err := os.MkdirAll(filepath.Dir(p), 0700) + if err != nil { + return err + } + + f, err := os.OpenFile(p, os.O_CREATE|os.O_WRONLY, 0600) + if err != nil { + return err + } + + err = json.NewEncoder(f).Encode(c) + if err != nil { + _ = f.Close() + return err + } + + return f.Close() +} + +func (s *Session) get(c Client) (bool, error) { + f, err := os.Open(s.file(c.Path())) + if err != nil { + if os.IsNotExist(err) { + return false, nil + } + + return false, err + } + + dec := json.NewDecoder(f) + err = dec.Decode(c) + if err != nil { + _ = f.Close() + return false, err + } + + return c.Valid(), f.Close() +} + +func localTicket(ctx context.Context, m *session.Manager) (*url.Userinfo, error) { + name := os.Getenv("USER") + u, err := user.Current() + if err == nil { + name = u.Username + } + + ticket, err := m.AcquireLocalTicket(ctx, name) + if err != nil { + return nil, err + } + + password, err := ioutil.ReadFile(ticket.PasswordFilePath) + if err != nil { + return nil, err + } + + return url.UserPassword(ticket.UserName, string(password)), nil +} + +func (s *Session) loginSOAP(ctx context.Context, c *vim25.Client) error { + m := session.NewManager(c) + u := s.URL.User + name := u.Username() + + if name == "" && !c.IsVC() { + // If no username is provided, try to acquire a local ticket. + // When invoked remotely, ESX returns an InvalidRequestFault. + // So, rather than return an error here, fallthrough to Login() with the original User to + // to avoid what would be a confusing error message. + luser, lerr := localTicket(ctx, m) + if lerr == nil { + // We are running directly on an ESX or Workstation host and can use the ticket with Login() + u = luser + name = u.Username() + } + } + if name == "" { + // ServiceContent does not require authentication + return nil + } + + return m.Login(ctx, u) +} + +func (s *Session) loginREST(ctx context.Context, c *rest.Client) error { + return c.Login(ctx, s.URL.User) +} + +func soapSessionValid(ctx context.Context, client *vim25.Client) (bool, error) { + m := session.NewManager(client) + u, err := m.UserSession(ctx) + if err != nil { + if soap.IsSoapFault(err) { + fault := soap.ToSoapFault(err).VimFault() + // If the PropertyCollector is not found, the saved session for this URL is not valid + if _, ok := fault.(types.ManagedObjectNotFound); ok { + return false, nil + } + } + + return false, err + } + + return u != nil, nil +} + +func restSessionValid(ctx context.Context, client *rest.Client) (bool, error) { + s, err := client.Session(ctx) + if err != nil { + return false, err + } + return s != nil, nil +} + +// Load a Client from the file cache. +// Returns false if no cache exists or is invalid. +// An error is returned if the file cannot be opened or is not json encoded. +// After loading the Client from the file: +// Returns true if the session is still valid, false otherwise indicating the client requires authentication. +// An error is returned if the session ID cannot be validated. +// Returns false if Session.Passthrough is true. +func (s *Session) Load(ctx context.Context, c Client, config func(*soap.Client) error) (bool, error) { + if s.Passthrough { + return false, nil + } + + ok, err := s.get(c) + if err != nil { + return false, err + + } + if !ok { + return false, nil + } + + switch client := c.(type) { + case *vim25.Client: + if config != nil { + if err := config(client.Client); err != nil { + return false, err + } + } + return soapSessionValid(ctx, client) + case *rest.Client: + if config != nil { + if err := config(client.Client); err != nil { + return false, err + } + } + return restSessionValid(ctx, client) + default: + panic(fmt.Sprintf("unsupported client type=%T", client)) + } +} + +// Login returns a cached session via Load() if valid. +// Otherwise, creates a new authenticated session and saves to the cache. +// The config func can be used to apply soap.Client configuration, such as TLS settings. +// When Session.Passthrough is true, Login will always create a new session. +func (s *Session) Login(ctx context.Context, c Client, config func(*soap.Client) error) error { + ok, err := s.Load(ctx, c, config) + if err != nil { + return err + } + if ok { + return nil + } + + sc := soap.NewClient(s.URL, s.Insecure) + + if config != nil { + err = config(sc) + if err != nil { + return err + } + } + + switch client := c.(type) { + case *vim25.Client: + vc, err := vim25.NewClient(ctx, sc) + if err != nil { + return err + } + + login := s.loginSOAP + if s.LoginSOAP != nil { + login = s.LoginSOAP + } + if err = login(ctx, vc); err != nil { + return err + } + + *client = *vc + c = client + case *rest.Client: + client.Client = sc.NewServiceClient(rest.Path, "") + + login := s.loginREST + if s.LoginREST != nil { + login = s.LoginREST + } + if err = login(ctx, client); err != nil { + return err + } + + c = client + default: + panic(fmt.Sprintf("unsupported client type=%T", client)) + } + + return s.Save(c) +} + +// Login calls the Logout method for the given Client if Session.Passthrough is true. +// Otherwise returns nil. +func (s *Session) Logout(ctx context.Context, c Client) error { + if s.Passthrough { + switch client := c.(type) { + case *vim25.Client: + return session.NewManager(client).Logout(ctx) + case *rest.Client: + return client.Logout(ctx) + default: + panic(fmt.Sprintf("unsupported client type=%T", client)) + } + } + return nil +} diff --git a/vendor/github.com/vmware/govmomi/session/keep_alive.go b/vendor/github.com/vmware/govmomi/session/keep_alive.go new file mode 100644 index 0000000..7c1bebf --- /dev/null +++ b/vendor/github.com/vmware/govmomi/session/keep_alive.go @@ -0,0 +1,40 @@ +/* +Copyright (c) 2015-2020 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package session + +import ( + "time" + + "github.com/vmware/govmomi/session/keepalive" + "github.com/vmware/govmomi/vim25/soap" +) + +// KeepAlive is a backward compatible wrapper around KeepAliveHandler. +func KeepAlive(roundTripper soap.RoundTripper, idleTime time.Duration) soap.RoundTripper { + return KeepAliveHandler(roundTripper, idleTime, nil) +} + +// KeepAliveHandler is a backward compatible wrapper around keepalive.NewHandlerSOAP. +func KeepAliveHandler(roundTripper soap.RoundTripper, idleTime time.Duration, handler func(soap.RoundTripper) error) soap.RoundTripper { + var f func() error + if handler != nil { + f = func() error { + return handler(roundTripper) + } + } + return keepalive.NewHandlerSOAP(roundTripper, idleTime, f) +} diff --git a/vendor/github.com/vmware/govmomi/session/keepalive/handler.go b/vendor/github.com/vmware/govmomi/session/keepalive/handler.go new file mode 100644 index 0000000..3ebf046 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/session/keepalive/handler.go @@ -0,0 +1,204 @@ +/* +Copyright (c) 2020 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package keepalive + +import ( + "context" + "errors" + "net/http" + "sync" + "time" + + "github.com/vmware/govmomi/vapi/rest" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/soap" +) + +// handler contains the generic keep alive settings and logic +type handler struct { + mu sync.Mutex + notifyStop chan struct{} + notifyWaitGroup sync.WaitGroup + + idle time.Duration + send func() error +} + +// NewHandlerSOAP returns a soap.RoundTripper for use with a vim25.Client +// The idle time specifies the interval in between send() requests. Defaults to 10 minutes. +// The send func is used to keep a session alive. Defaults to calling vim25 GetCurrentTime(). +// The keep alive goroutine starts when a Login method is called and runs until Logout is called or send returns an error. +func NewHandlerSOAP(c soap.RoundTripper, idle time.Duration, send func() error) *HandlerSOAP { + h := &handler{ + idle: idle, + send: send, + } + + if send == nil { + h.send = func() error { + return h.keepAliveSOAP(c) + } + } + + return &HandlerSOAP{h, c} +} + +// NewHandlerREST returns an http.RoundTripper for use with a rest.Client +// The idle time specifies the interval in between send() requests. Defaults to 10 minutes. +// The send func is used to keep a session alive. Defaults to calling the rest.Client.Session() method +// The keep alive goroutine starts when a Login method is called and runs until Logout is called or send returns an error. +func NewHandlerREST(c *rest.Client, idle time.Duration, send func() error) *HandlerREST { + h := &handler{ + idle: idle, + send: send, + } + + if send == nil { + h.send = func() error { + return h.keepAliveREST(c) + } + } + + return &HandlerREST{h, c.Transport} +} + +func (h *handler) keepAliveSOAP(rt soap.RoundTripper) error { + ctx := context.Background() + _, err := methods.GetCurrentTime(ctx, rt) + return err +} + +func (h *handler) keepAliveREST(c *rest.Client) error { + ctx := context.Background() + + s, err := c.Session(ctx) + if err != nil { + return err + } + if s != nil { + return nil + } + return errors.New(http.StatusText(http.StatusUnauthorized)) +} + +// Start explicitly starts the keep alive go routine. +// For use with session cache.Client, as cached sessions may not involve Login/Logout via RoundTripper. +func (h *handler) Start() { + h.mu.Lock() + defer h.mu.Unlock() + + if h.notifyStop != nil { + return + } + + if h.idle == 0 { + h.idle = time.Minute * 10 + } + + // This channel must be closed to terminate idle timer. + h.notifyStop = make(chan struct{}) + h.notifyWaitGroup.Add(1) + + go func() { + for t := time.NewTimer(h.idle); ; { + select { + case <-h.notifyStop: + h.notifyWaitGroup.Done() + t.Stop() + return + case <-t.C: + if err := h.send(); err != nil { + h.notifyWaitGroup.Done() + h.Stop() + return + } + t.Reset(h.idle) + } + } + }() +} + +// Stop explicitly stops the keep alive go routine. +// For use with session cache.Client, as cached sessions may not involve Login/Logout via RoundTripper. +func (h *handler) Stop() { + h.mu.Lock() + defer h.mu.Unlock() + + if h.notifyStop != nil { + close(h.notifyStop) + h.notifyWaitGroup.Wait() + h.notifyStop = nil + } +} + +// HandlerSOAP is a keep alive implementation for use with vim25.Client +type HandlerSOAP struct { + *handler + + roundTripper soap.RoundTripper +} + +// RoundTrip implements soap.RoundTripper +func (h *HandlerSOAP) RoundTrip(ctx context.Context, req, res soap.HasFault) error { + // Stop ticker on logout. + switch req.(type) { + case *methods.LogoutBody: + h.Stop() + } + + err := h.roundTripper.RoundTrip(ctx, req, res) + if err != nil { + return err + } + + // Start ticker on login. + switch req.(type) { + case *methods.LoginBody, *methods.LoginExtensionByCertificateBody, *methods.LoginByTokenBody: + h.Start() + } + + return nil +} + +// HandlerREST is a keep alive implementation for use with rest.Client +type HandlerREST struct { + *handler + + roundTripper http.RoundTripper +} + +// RoundTrip implements http.RoundTripper +func (h *HandlerREST) RoundTrip(req *http.Request) (*http.Response, error) { + if req.URL.Path != "/rest/com/vmware/cis/session" { + return h.roundTripper.RoundTrip(req) + } + + if req.Method == http.MethodDelete { // Logout + h.Stop() + } + + res, err := h.roundTripper.RoundTrip(req) + if err != nil { + return res, err + } + + if req.Method == http.MethodPost { // Login + h.Start() + } + + return res, err +} diff --git a/vendor/github.com/vmware/govmomi/session/manager.go b/vendor/github.com/vmware/govmomi/session/manager.go new file mode 100644 index 0000000..24c6a2d --- /dev/null +++ b/vendor/github.com/vmware/govmomi/session/manager.go @@ -0,0 +1,283 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package session + +import ( + "context" + "io/ioutil" + "net/url" + "os" + "strings" + + "github.com/vmware/govmomi/property" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +// Locale defaults to "en_US" and can be overridden via this var or the GOVMOMI_LOCALE env var. +// A value of "_" uses the server locale setting. +var Locale = os.Getenv("GOVMOMI_LOCALE") + +func init() { + if Locale == "_" { + Locale = "" + } else if Locale == "" { + Locale = "en_US" + } +} + +// Secret returns the contents if a file path value is given, otherwise returns value itself. +func Secret(value string) (string, error) { + if len(value) == 0 { + return value, nil + } + contents, err := ioutil.ReadFile(value) + if err != nil { + if os.IsPermission(err) { + return "", err + } + return value, nil + } + return strings.TrimSpace(string(contents)), nil +} + +type Manager struct { + client *vim25.Client + userSession *types.UserSession +} + +func NewManager(client *vim25.Client) *Manager { + m := Manager{ + client: client, + } + + return &m +} + +func (sm Manager) Reference() types.ManagedObjectReference { + return *sm.client.ServiceContent.SessionManager +} + +func (sm *Manager) SetLocale(ctx context.Context, locale string) error { + req := types.SetLocale{ + This: sm.Reference(), + Locale: locale, + } + + _, err := methods.SetLocale(ctx, sm.client, &req) + return err +} + +func (sm *Manager) Login(ctx context.Context, u *url.Userinfo) error { + req := types.Login{ + This: sm.Reference(), + Locale: Locale, + } + + if u != nil { + req.UserName = u.Username() + if pw, ok := u.Password(); ok { + req.Password = pw + } + } + + login, err := methods.Login(ctx, sm.client, &req) + if err != nil { + return err + } + + sm.userSession = &login.Returnval + return nil +} + +// LoginExtensionByCertificate uses the vCenter SDK tunnel to login using a client certificate. +// The client certificate can be set using the soap.Client.SetCertificate method. +// See: https://kb.vmware.com/s/article/2004305 +func (sm *Manager) LoginExtensionByCertificate(ctx context.Context, key string) error { + c := sm.client + u := c.URL() + if u.Hostname() != "sdkTunnel" { + sc := c.Tunnel() + c = &vim25.Client{ + Client: sc, + RoundTripper: sc, + ServiceContent: c.ServiceContent, + } + // When http.Transport.Proxy is used, our thumbprint checker is bypassed, resulting in: + // "Post https://sdkTunnel:8089/sdk: x509: certificate is valid for $vcenter_hostname, not sdkTunnel" + // The only easy way around this is to disable verification for the call to LoginExtensionByCertificate(). + // TODO: find a way to avoid disabling InsecureSkipVerify. + c.DefaultTransport().TLSClientConfig.InsecureSkipVerify = true + } + + req := types.LoginExtensionByCertificate{ + This: sm.Reference(), + ExtensionKey: key, + Locale: Locale, + } + + login, err := methods.LoginExtensionByCertificate(ctx, c, &req) + if err != nil { + return err + } + + // Copy the session cookie + sm.client.Jar.SetCookies(u, c.Jar.Cookies(c.URL())) + + sm.userSession = &login.Returnval + return nil +} + +func (sm *Manager) LoginByToken(ctx context.Context) error { + req := types.LoginByToken{ + This: sm.Reference(), + Locale: Locale, + } + + login, err := methods.LoginByToken(ctx, sm.client, &req) + if err != nil { + return err + } + + sm.userSession = &login.Returnval + return nil +} + +func (sm *Manager) Logout(ctx context.Context) error { + req := types.Logout{ + This: sm.Reference(), + } + + _, err := methods.Logout(ctx, sm.client, &req) + if err != nil { + return err + } + + sm.userSession = nil + return nil +} + +// UserSession retrieves and returns the SessionManager's CurrentSession field. +// Nil is returned if the session is not authenticated. +func (sm *Manager) UserSession(ctx context.Context) (*types.UserSession, error) { + var mgr mo.SessionManager + + pc := property.DefaultCollector(sm.client) + err := pc.RetrieveOne(ctx, sm.Reference(), []string{"currentSession"}, &mgr) + if err != nil { + // It's OK if we can't retrieve properties because we're not authenticated + if f, ok := err.(types.HasFault); ok { + switch f.Fault().(type) { + case *types.NotAuthenticated: + return nil, nil + } + } + + return nil, err + } + + return mgr.CurrentSession, nil +} + +func (sm *Manager) TerminateSession(ctx context.Context, sessionId []string) error { + req := types.TerminateSession{ + This: sm.Reference(), + SessionId: sessionId, + } + + _, err := methods.TerminateSession(ctx, sm.client, &req) + return err +} + +// SessionIsActive checks whether the session that was created at login is +// still valid. This function only works against vCenter. +func (sm *Manager) SessionIsActive(ctx context.Context) (bool, error) { + if sm.userSession == nil { + return false, nil + } + + req := types.SessionIsActive{ + This: sm.Reference(), + SessionID: sm.userSession.Key, + UserName: sm.userSession.UserName, + } + + active, err := methods.SessionIsActive(ctx, sm.client, &req) + if err != nil { + return false, err + } + + return active.Returnval, err +} + +func (sm *Manager) AcquireGenericServiceTicket(ctx context.Context, spec types.BaseSessionManagerServiceRequestSpec) (*types.SessionManagerGenericServiceTicket, error) { + req := types.AcquireGenericServiceTicket{ + This: sm.Reference(), + Spec: spec, + } + + res, err := methods.AcquireGenericServiceTicket(ctx, sm.client, &req) + if err != nil { + return nil, err + } + + return &res.Returnval, nil +} + +func (sm *Manager) AcquireLocalTicket(ctx context.Context, userName string) (*types.SessionManagerLocalTicket, error) { + req := types.AcquireLocalTicket{ + This: sm.Reference(), + UserName: userName, + } + + res, err := methods.AcquireLocalTicket(ctx, sm.client, &req) + if err != nil { + return nil, err + } + + return &res.Returnval, nil +} + +func (sm *Manager) AcquireCloneTicket(ctx context.Context) (string, error) { + req := types.AcquireCloneTicket{ + This: sm.Reference(), + } + + res, err := methods.AcquireCloneTicket(ctx, sm.client, &req) + if err != nil { + return "", err + } + + return res.Returnval, nil +} + +func (sm *Manager) CloneSession(ctx context.Context, ticket string) error { + req := types.CloneSession{ + This: sm.Reference(), + CloneTicket: ticket, + } + + res, err := methods.CloneSession(ctx, sm.client, &req) + if err != nil { + return err + } + + sm.userSession = &res.Returnval + return nil +} diff --git a/vendor/github.com/vmware/govmomi/task/error.go b/vendor/github.com/vmware/govmomi/task/error.go new file mode 100644 index 0000000..5f6b850 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/task/error.go @@ -0,0 +1,32 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package task + +import "github.com/vmware/govmomi/vim25/types" + +type Error struct { + *types.LocalizedMethodFault +} + +// Error returns the task's localized fault message. +func (e Error) Error() string { + return e.LocalizedMethodFault.LocalizedMessage +} + +func (e Error) Fault() types.BaseMethodFault { + return e.LocalizedMethodFault.Fault +} diff --git a/vendor/github.com/vmware/govmomi/task/wait.go b/vendor/github.com/vmware/govmomi/task/wait.go new file mode 100644 index 0000000..c1c38a8 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/task/wait.go @@ -0,0 +1,143 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package task + +import ( + "context" + + "github.com/vmware/govmomi/property" + "github.com/vmware/govmomi/vim25/progress" + "github.com/vmware/govmomi/vim25/types" +) + +type taskProgress struct { + info *types.TaskInfo +} + +func (t taskProgress) Percentage() float32 { + return float32(t.info.Progress) +} + +func (t taskProgress) Detail() string { + return "" +} + +func (t taskProgress) Error() error { + if t.info.Error != nil { + return Error{t.info.Error} + } + + return nil +} + +type taskCallback struct { + ch chan<- progress.Report + info *types.TaskInfo + err error +} + +func (t *taskCallback) fn(pc []types.PropertyChange) bool { + for _, c := range pc { + if c.Name != "info" { + continue + } + + if c.Op != types.PropertyChangeOpAssign { + continue + } + + if c.Val == nil { + continue + } + + ti := c.Val.(types.TaskInfo) + t.info = &ti + } + + // t.info could be nil if pc can't satisfy the rules above + if t.info == nil { + return false + } + + pr := taskProgress{t.info} + + // Store copy of error, so Wait() can return it as well. + t.err = pr.Error() + + switch t.info.State { + case types.TaskInfoStateQueued, types.TaskInfoStateRunning: + if t.ch != nil { + // Don't care if this is dropped + select { + case t.ch <- pr: + default: + } + } + return false + case types.TaskInfoStateSuccess, types.TaskInfoStateError: + if t.ch != nil { + // Last one must always be delivered + t.ch <- pr + } + return true + default: + panic("unknown state: " + t.info.State) + } +} + +// Wait waits for a task to finish with either success or failure. It does so +// by waiting for the "info" property of task managed object to change. The +// function returns when it finds the task in the "success" or "error" state. +// In the former case, the return value is nil. In the latter case the return +// value is an instance of this package's Error struct. +// +// Any error returned while waiting for property changes causes the function to +// return immediately and propagate the error. +// +// If the progress.Sinker argument is specified, any progress updates for the +// task are sent here. The completion percentage is passed through directly. +// The detail for the progress update is set to an empty string. If the task +// finishes in the error state, the error instance is passed through as well. +// Note that this error is the same error that is returned by this function. +// +func Wait(ctx context.Context, ref types.ManagedObjectReference, pc *property.Collector, s progress.Sinker) (*types.TaskInfo, error) { + cb := &taskCallback{} + + // Include progress sink if specified + if s != nil { + cb.ch = s.Sink() + defer close(cb.ch) + } + + filter := &property.WaitFilter{PropagateMissing: true} + filter.Add(ref, ref.Type, []string{"info"}) + + err := property.WaitForUpdates(ctx, pc, filter, func(updates []types.ObjectUpdate) bool { + for _, update := range updates { + if cb.fn(update.ChangeSet) { + return true + } + } + + return false + }) + if err != nil { + return nil, err + } + + return cb.info, cb.err +} diff --git a/vendor/github.com/vmware/govmomi/units/size.go b/vendor/github.com/vmware/govmomi/units/size.go new file mode 100644 index 0000000..f4ee3fc --- /dev/null +++ b/vendor/github.com/vmware/govmomi/units/size.go @@ -0,0 +1,109 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package units + +import ( + "errors" + "fmt" + "regexp" + "strconv" +) + +type ByteSize int64 + +const ( + _ = iota + KB = 1 << (10 * iota) + MB + GB + TB + PB + EB +) + +func (b ByteSize) String() string { + switch { + case b >= EB: + return fmt.Sprintf("%.1fEB", float32(b)/EB) + case b >= PB: + return fmt.Sprintf("%.1fPB", float32(b)/PB) + case b >= TB: + return fmt.Sprintf("%.1fTB", float32(b)/TB) + case b >= GB: + return fmt.Sprintf("%.1fGB", float32(b)/GB) + case b >= MB: + return fmt.Sprintf("%.1fMB", float32(b)/MB) + case b >= KB: + return fmt.Sprintf("%.1fKB", float32(b)/KB) + } + return fmt.Sprintf("%dB", b) +} + +type FileSize int64 + +func (b FileSize) String() string { + switch { + case b >= EB: + return fmt.Sprintf("%.1fE", float32(b)/EB) + case b >= PB: + return fmt.Sprintf("%.1fP", float32(b)/PB) + case b >= TB: + return fmt.Sprintf("%.1fT", float32(b)/TB) + case b >= GB: + return fmt.Sprintf("%.1fG", float32(b)/GB) + case b >= MB: + return fmt.Sprintf("%.1fM", float32(b)/MB) + case b >= KB: + return fmt.Sprintf("%.1fK", float32(b)/KB) + } + return fmt.Sprintf("%d", b) +} + +var bytesRegexp = regexp.MustCompile(`^(?i)(\d+)([BKMGTPE]?)(ib|b)?$`) + +func (b *ByteSize) Set(s string) error { + m := bytesRegexp.FindStringSubmatch(s) + if len(m) == 0 { + return errors.New("invalid byte value") + } + + i, err := strconv.ParseInt(m[1], 10, 64) + if err != nil { + return err + } + *b = ByteSize(i) + + switch m[2] { + case "B", "b", "": + case "K", "k": + *b *= ByteSize(KB) + case "M", "m": + *b *= ByteSize(MB) + case "G", "g": + *b *= ByteSize(GB) + case "T", "t": + *b *= ByteSize(TB) + case "P", "p": + *b *= ByteSize(PB) + case "E", "e": + *b *= ByteSize(EB) + default: + return errors.New("invalid byte suffix") + } + + return nil +} diff --git a/vendor/github.com/vmware/govmomi/vapi/internal/internal.go b/vendor/github.com/vmware/govmomi/vapi/internal/internal.go new file mode 100644 index 0000000..3203712 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vapi/internal/internal.go @@ -0,0 +1,86 @@ +/* +Copyright (c) 2018 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package internal + +import ( + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +// VAPI REST Paths +const ( + SessionPath = "/com/vmware/cis/session" + CategoryPath = "/com/vmware/cis/tagging/category" + TagPath = "/com/vmware/cis/tagging/tag" + AssociationPath = "/com/vmware/cis/tagging/tag-association" + LibraryPath = "/com/vmware/content/library" + LibraryItemFileData = "/com/vmware/cis/data" + LibraryItemPath = "/com/vmware/content/library/item" + LibraryItemFilePath = "/com/vmware/content/library/item/file" + LibraryItemUpdateSession = "/com/vmware/content/library/item/update-session" + LibraryItemUpdateSessionFile = "/com/vmware/content/library/item/updatesession/file" + LibraryItemDownloadSession = "/com/vmware/content/library/item/download-session" + LibraryItemDownloadSessionFile = "/com/vmware/content/library/item/downloadsession/file" + LocalLibraryPath = "/com/vmware/content/local-library" + SubscribedLibraryPath = "/com/vmware/content/subscribed-library" + SubscribedLibraryItem = "/com/vmware/content/library/subscribed-item" + Subscriptions = "/com/vmware/content/library/subscriptions" + VCenterOVFLibraryItem = "/com/vmware/vcenter/ovf/library-item" + VCenterVMTXLibraryItem = "/vcenter/vm-template/library-items" + VCenterVM = "/vcenter/vm" + SessionCookieName = "vmware-api-session-id" + UseHeaderAuthn = "vmware-use-header-authn" +) + +// AssociatedObject is the same structure as types.ManagedObjectReference, +// just with a different field name (ID instead of Value). +// In the API we use mo.Reference, this type is only used for wire transfer. +type AssociatedObject struct { + Type string `json:"type"` + Value string `json:"id"` +} + +// Reference implements mo.Reference +func (o AssociatedObject) Reference() types.ManagedObjectReference { + return types.ManagedObjectReference(o) +} + +// Association for tag-association requests. +type Association struct { + ObjectID *AssociatedObject `json:"object_id,omitempty"` +} + +// NewAssociation returns an Association, converting ref to an AssociatedObject. +func NewAssociation(ref mo.Reference) Association { + obj := AssociatedObject(ref.Reference()) + return Association{ + ObjectID: &obj, + } +} + +type SubscriptionDestination struct { + ID string `json:"subscription"` +} + +type SubscriptionDestinationSpec struct { + Subscriptions []SubscriptionDestination `json:"subscriptions,omitempty"` +} + +type SubscriptionItemDestinationSpec struct { + Force bool `json:"force_sync_content"` + Subscriptions []SubscriptionDestination `json:"subscriptions,omitempty"` +} diff --git a/vendor/github.com/vmware/govmomi/vapi/library/finder/README.md b/vendor/github.com/vmware/govmomi/vapi/library/finder/README.md new file mode 100644 index 0000000..12d243f --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vapi/library/finder/README.md @@ -0,0 +1,185 @@ +# The content library finder +The govmomi package now includes a finder for the content library, [`github.com/vmware/govmomi/vapi/library.Finder`](https://github.com/akutz/govmomi/blob/feature/content-library/vapi/library/finder/finder.go). This finder supports searching for objects in the content library using an inventory path design similar to the [standard govmomi finder](https://github.com/vmware/govmomi/blob/master/find/finder.go) and includes support for wildcard matching courtesy of golang's [`path.Match`](https://golang.org/pkg/path/#Match). For example: + +| Pattern | Result | +|---------|--------| +| `*` | Gets all of the content libraries | +| `*/` | Gets all of the content library items for all of the content libraries. | +| `/Public/` | Gets all of the content library items for the content library named `Public` | +| `/*/*/` | Gets all of the content library files for all of the content library items for all of the content libraries. | +| `Public/*/photon2*` | Gets all of the files that begin with `photon2` in all of the content library items for the content library named `Public` | + +The use of a wildcard character in the search string results in a full listing of content library objects for that part of the path's server-side analogue. If `Public/Photon2*` is searched, then all of the content library items for the `Public` library are listed in order to perform the wildcard matching. However, if `Public/PhotonOS-2-GA` then the server-side API call [`library:item:find`](https://vdc-repo.vmware.com/vmwb-repository/dcr-public/1cd28284-3b72-4885-9e31-d1c6d9e26686/71ef7304-a6c9-43b3-a3cd-868b2c236c81/doc/operations/com/vmware/content/library/item.find-operation.html) is used to find an item with the name `PhotonOS-2-GA`. + +## Performance +Search strings that do not use wildcard characters **should** be **more** efficient as these searches rely on server-side find calls and do not require dumping all of the objects. However, this is only true for systems with a large number of objects in the content libraries. This is due to the number of round-trips required to lookup an object with a direct path. For example: + +| Search path | Roundtrips | +|------|------------| +| `Public/Photon2` | 4 | +| `Public*/Photon2*` | 2 | + +The *absolute* search path takes twice as many roundtrips compared to the search path with wildcards: + +### Absolute path search logic +1. Find library ID for library with name using server-side find API +2. Get library with library ID +3. Find item ID for item with name using server-side find API +4. Get item with item ID + +### Wildcard search logic +1. Get all of the libraries and filter the pattern on the client-side +2. Get all of the items for the library and filter the pattern on the client-=side + +### Searches at scale +While a system that has few content library objects benefits from wildcard search logic, the fact is that the above approach regarding absolute paths proves out to be **much** more efficient for systems with large numbers of content library objects. + + +## `govc library.ls` + +### Listing all the objects in the content library +```shell +$ govc library.ls '*/*/' +/ISOs/CentOS-7-x86_64-Minimal-1804/CentOS-7-x86_64-Minimal-1804.iso +/ISOs/CoreOS Production/coreos_production_iso_image.iso +/ISOs/VMware-VCSA-all-6.7.0-8217866.iso/VMware-VCSA-all-6.7.0-8217866.iso +/ISOs/VMware-VIM-all-6.7.0-8217866.iso/VMware-VIM-all-6.7.0-8217866.iso +/ISOs/ubuntu-16.04.5-server-amd64/ubuntu-16.04.5-server-amd64.iso +/ISOs/photon-2.0-304b817/photon-2.0-304b817.iso +/OVAs/VMware-vCenter-Server-Appliance-6.7.0.10000-8217866_OVF10.ova/VMware-vCenter-Server-Appliance-6.7.0.10000-8217866_OVF10.ova +/OVAs/coreos_production_vmware_ova/coreos_production_vmware_ova.ovf +/OVAs/coreos_production_vmware_ova/coreos_production_vmware_ova-1.vmdk +/OVAs/centos_cloud_template/centos_cloud_template-2.iso +/OVAs/centos_cloud_template/centos_cloud_template.ovf +/OVAs/centos_cloud_template/centos_cloud_template-1.vmdk +/OVAs/centos_cloud_template/centos_cloud_template-3.nvram +/OVAs/photon-custom-hw13-2.0-304b817/photon-ova-disk1.vmdk +/OVAs/photon-custom-hw13-2.0-304b817/photon-ova.ovf +/OVAs/yakity-centos/yakity-centos-2.nvram +/OVAs/yakity-centos/yakity-centos-1.vmdk +/OVAs/yakity-centos/yakity-centos.ovf +/OVAs/yakity-photon/yakity-photon-1.vmdk +/OVAs/yakity-photon/yakity-photon.ovf +/OVAs/yakity-photon/yakity-photon-2.nvram +/OVAs/ubuntu-16.04-server-cloudimg-amd64/ubuntu-16.04-server-cloudimg-amd64.ovf +/OVAs/ubuntu-16.04-server-cloudimg-amd64/ubuntu-16.04-server-cloudimg-amd64-1.vmdk +/sk8-TestUploadOVA/photon2-cloud-init/photon2-cloud-init.ovf +/sk8-TestUploadOVA/photon2-cloud-init/photon2-cloud-init-1.vmdk +/Public/photon2-cloud-init/photon2-cloud-init.ovf +/Public/photon2-cloud-init/photon2-cloud-init-1.vmdk +``` + +## `govc library.info` + +### Getting the info for all the objects in the content library +```shell +$ govc library.info '*/*/' +Name: CentOS-7-x86_64-Minimal-1804.iso + Path: /ISOs/CentOS-7-x86_64-Minimal-1804/CentOS-7-x86_64-Minimal-1804.iso + Size: 824637106200 + Version: 1 +Name: coreos_production_iso_image.iso + Path: /ISOs/CoreOS Production/coreos_production_iso_image.iso + Size: 824637441624 + Version: 1 +Name: VMware-VCSA-all-6.7.0-8217866.iso + Path: /ISOs/VMware-VCSA-all-6.7.0-8217866.iso/VMware-VCSA-all-6.7.0-8217866.iso + Size: 824637106368 + Version: 1 +Name: VMware-VIM-all-6.7.0-8217866.iso + Path: /ISOs/VMware-VIM-all-6.7.0-8217866.iso/VMware-VIM-all-6.7.0-8217866.iso + Size: 824637106504 + Version: 1 +Name: ubuntu-16.04.5-server-amd64.iso + Path: /ISOs/ubuntu-16.04.5-server-amd64/ubuntu-16.04.5-server-amd64.iso + Size: 824637441944 + Version: 1 +Name: photon-2.0-304b817.iso + Path: /ISOs/photon-2.0-304b817/photon-2.0-304b817.iso + Size: 824637106672 + Version: 1 +Name: VMware-vCenter-Server-Appliance-6.7.0.10000-8217866_OVF10.ova + Path: /OVAs/VMware-vCenter-Server-Appliance-6.7.0.10000-8217866_OVF10.ova/VMware-vCenter-Server-Appliance-6.7.0.10000-8217866_OVF10.ova + Size: 824637106880 + Version: 1 +Name: coreos_production_vmware_ova.ovf + Path: /OVAs/coreos_production_vmware_ova/coreos_production_vmware_ova.ovf + Size: 824637107032 + Version: 1 +Name: coreos_production_vmware_ova-1.vmdk + Path: /OVAs/coreos_production_vmware_ova/coreos_production_vmware_ova-1.vmdk + Size: 824637107072 + Version: 1 +Name: centos_cloud_template-2.iso + Path: /OVAs/centos_cloud_template/centos_cloud_template-2.iso + Size: 824636997760 + Version: 1 +Name: centos_cloud_template.ovf + Path: /OVAs/centos_cloud_template/centos_cloud_template.ovf + Size: 824636997792 + Version: 1 +Name: centos_cloud_template-1.vmdk + Path: /OVAs/centos_cloud_template/centos_cloud_template-1.vmdk + Size: 824636997832 + Version: 1 +Name: centos_cloud_template-3.nvram + Path: /OVAs/centos_cloud_template/centos_cloud_template-3.nvram + Size: 824636997856 + Version: 1 +Name: photon-ova-disk1.vmdk + Path: /OVAs/photon-custom-hw13-2.0-304b817/photon-ova-disk1.vmdk + Size: 824637107280 + Version: 1 +Name: photon-ova.ovf + Path: /OVAs/photon-custom-hw13-2.0-304b817/photon-ova.ovf + Size: 824637107328 + Version: 1 +Name: yakity-centos-2.nvram + Path: /OVAs/yakity-centos/yakity-centos-2.nvram + Size: 824637253000 + Version: 2 +Name: yakity-centos-1.vmdk + Path: /OVAs/yakity-centos/yakity-centos-1.vmdk + Size: 824637253024 + Version: 2 +Name: yakity-centos.ovf + Path: /OVAs/yakity-centos/yakity-centos.ovf + Size: 824637253056 + Version: 2 +Name: yakity-photon-1.vmdk + Path: /OVAs/yakity-photon/yakity-photon-1.vmdk + Size: 824637107504 + Version: 5 +Name: yakity-photon.ovf + Path: /OVAs/yakity-photon/yakity-photon.ovf + Size: 824637107536 + Version: 5 +Name: yakity-photon-2.nvram + Path: /OVAs/yakity-photon/yakity-photon-2.nvram + Size: 824637107560 + Version: 5 +Name: ubuntu-16.04-server-cloudimg-amd64.ovf + Path: /OVAs/ubuntu-16.04-server-cloudimg-amd64/ubuntu-16.04-server-cloudimg-amd64.ovf + Size: 824637442112 + Version: 1 +Name: ubuntu-16.04-server-cloudimg-amd64-1.vmdk + Path: /OVAs/ubuntu-16.04-server-cloudimg-amd64/ubuntu-16.04-server-cloudimg-amd64-1.vmdk + Size: 824637442136 + Version: 1 +Name: photon2-cloud-init.ovf + Path: /sk8-TestUploadOVA/photon2-cloud-init/photon2-cloud-init.ovf + Size: 824636903184 + Version: 1 +Name: photon2-cloud-init-1.vmdk + Path: /sk8-TestUploadOVA/photon2-cloud-init/photon2-cloud-init-1.vmdk + Size: 824636903208 + Version: 1 +Name: photon2-cloud-init.ovf + Path: /Public/photon2-cloud-init/photon2-cloud-init.ovf + Size: 824637442304 + Version: 3 +Name: photon2-cloud-init-1.vmdk + Path: /Public/photon2-cloud-init/photon2-cloud-init-1.vmdk + Size: 824637442328 + Version: 3 +``` diff --git a/vendor/github.com/vmware/govmomi/vapi/library/finder/finder.go b/vendor/github.com/vmware/govmomi/vapi/library/finder/finder.go new file mode 100644 index 0000000..5f03078 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vapi/library/finder/finder.go @@ -0,0 +1,328 @@ +/* +Copyright (c) 2018 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package finder + +import ( + "context" + "encoding/json" + "fmt" + "path" + "strings" + + "github.com/vmware/govmomi/vapi/library" +) + +// Finder is a helper object for finding content library objects by their +// inventory paths: /LIBRARY/ITEM/FILE. +// +// Wildcard characters `*` and `?` are both supported. However, the use +// of a wildcard character in the search string results in a full listing of +// that part of the path's server-side items. +// +// Path parts that do not use wildcard characters rely on server-side Find +// functions to find the path token by its name. Ironically finding one +// item with a direct path takes longer than if a wildcard is used because +// of the multiple round-trips. Direct paths will be more performant on +// systems that have numerous items. +type Finder struct { + M *library.Manager +} + +// NewFinder returns a new Finder. +func NewFinder(m *library.Manager) *Finder { + return &Finder{m} +} + +// Find finds one or more items that match the provided inventory path(s). +func (f *Finder) Find( + ctx context.Context, ipath ...string) ([]FindResult, error) { + + if len(ipath) == 0 { + ipath = []string{""} + } + var result []FindResult + for _, p := range ipath { + results, err := f.find(ctx, p) + if err != nil { + return nil, err + } + result = append(result, results...) + } + return result, nil +} + +func (f *Finder) find(ctx context.Context, ipath string) ([]FindResult, error) { + + if ipath == "" { + ipath = "*" + } + + // Get the argument and remove any leading separator characters. + ipath = strings.TrimPrefix(ipath, "/") + + // Tokenize the path into its distinct parts. + parts := strings.Split(ipath, "/") + + // If there are more than three parts then the file name contains + // the "/" character. In that case collapse any additional parts + // back into the filename. + if len(parts) > 3 { + parts = []string{ + parts[0], + parts[1], + strings.Join(parts[2:], "/"), + } + } + + libs, err := f.findLibraries(ctx, parts[0]) + if err != nil { + return nil, err + } + + // If the path is a single token then the libraries are requested. + if len(parts) < 2 { + return libs, nil + } + + items, err := f.findLibraryItems(ctx, libs, parts[1]) + if err != nil { + return nil, err + } + + // If the path is two tokens then the library items are requested. + if len(parts) < 3 { + return items, nil + } + + // Get the library item files. + return f.findLibraryItemFiles(ctx, items, parts[2]) +} + +// FindResult is the type of object returned from a Find operation. +type FindResult interface { + + // GetParent returns the parent of the find result. If the find result + // is a Library then this function will return nil. + GetParent() FindResult + + // GetPath returns the inventory path of the find result. + GetPath() string + + // GetID returns the ID of the find result. + GetID() string + + // GetName returns the name of the find result. + GetName() string + + // GetResult gets the underlying library object. + GetResult() interface{} +} + +type findResult struct { + result interface{} + parent FindResult +} + +func (f findResult) GetResult() interface{} { + return f.result +} +func (f findResult) GetParent() FindResult { + return f.parent +} +func (f findResult) GetPath() string { + switch f.result.(type) { + case library.Library: + return fmt.Sprintf("/%s", f.GetName()) + case library.Item, library.File: + return fmt.Sprintf("%s/%s", f.parent.GetPath(), f.GetName()) + default: + return "" + } +} + +func (f findResult) GetID() string { + switch t := f.result.(type) { + case library.Library: + return t.ID + case library.Item: + return t.ID + default: + return "" + } +} + +func (f findResult) GetName() string { + switch t := f.result.(type) { + case library.Library: + return t.Name + case library.Item: + return t.Name + case library.File: + return t.Name + default: + return "" + } +} + +func (f findResult) MarshalJSON() ([]byte, error) { + return json.Marshal(f.GetResult()) +} + +func (f *Finder) findLibraries( + ctx context.Context, + token string) ([]FindResult, error) { + + if token == "" { + token = "*" + } + + var result []FindResult + + // If the token does not contain any wildcard characters then perform + // a lookup by name using a server side call. + if !strings.ContainsAny(token, "*?") { + libIDs, err := f.M.FindLibrary(ctx, library.Find{Name: token}) + if err != nil { + return nil, err + } + for _, id := range libIDs { + lib, err := f.M.GetLibraryByID(ctx, id) + if err != nil { + return nil, err + } + result = append(result, findResult{result: *lib}) + } + if len(result) == 0 { + lib, err := f.M.GetLibraryByID(ctx, token) + if err == nil { + result = append(result, findResult{result: *lib}) + } + } + return result, nil + } + + libs, err := f.M.GetLibraries(ctx) + if err != nil { + return nil, err + } + for _, lib := range libs { + match, err := path.Match(token, lib.Name) + if err != nil { + return nil, err + } + if match { + result = append(result, findResult{result: lib}) + } + } + return result, nil +} + +func (f *Finder) findLibraryItems( + ctx context.Context, + parents []FindResult, token string) ([]FindResult, error) { + + if token == "" { + token = "*" + } + + var result []FindResult + + for _, parent := range parents { + // If the token does not contain any wildcard characters then perform + // a lookup by name using a server side call. + if !strings.ContainsAny(token, "*?") { + childIDs, err := f.M.FindLibraryItems( + ctx, library.FindItem{ + Name: token, + LibraryID: parent.GetID(), + }) + if err != nil { + return nil, err + } + for _, id := range childIDs { + child, err := f.M.GetLibraryItem(ctx, id) + if err != nil { + return nil, err + } + result = append(result, findResult{ + result: *child, + parent: parent, + }) + } + continue + } + + children, err := f.M.GetLibraryItems(ctx, parent.GetID()) + if err != nil { + return nil, err + } + for _, child := range children { + match, err := path.Match(token, child.Name) + if err != nil { + return nil, err + } + if match { + result = append( + result, findResult{parent: parent, result: child}) + } + } + } + return result, nil +} + +func (f *Finder) findLibraryItemFiles( + ctx context.Context, + parents []FindResult, token string) ([]FindResult, error) { + + if token == "" { + token = "*" + } + + var result []FindResult + + for _, parent := range parents { + // If the token does not contain any wildcard characters then perform + // a lookup by name using a server side call. + if !strings.ContainsAny(token, "*?") { + child, err := f.M.GetLibraryItemFile(ctx, parent.GetID(), token) + if err != nil { + return nil, err + } + result = append(result, findResult{ + result: *child, + parent: parent, + }) + continue + } + + children, err := f.M.ListLibraryItemFiles(ctx, parent.GetID()) + if err != nil { + return nil, err + } + for _, child := range children { + match, err := path.Match(token, child.Name) + if err != nil { + return nil, err + } + if match { + result = append( + result, findResult{parent: parent, result: child}) + } + } + } + return result, nil +} diff --git a/vendor/github.com/vmware/govmomi/vapi/library/library.go b/vendor/github.com/vmware/govmomi/vapi/library/library.go new file mode 100644 index 0000000..7611af2 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vapi/library/library.go @@ -0,0 +1,308 @@ +/* +Copyright (c) 2018 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package library + +import ( + "context" + "fmt" + "net/http" + "net/url" + "time" + + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/vapi/internal" + "github.com/vmware/govmomi/vapi/rest" +) + +// StorageBackings for Content Libraries +type StorageBackings struct { + DatastoreID string `json:"datastore_id,omitempty"` + Type string `json:"type,omitempty"` +} + +// Library provides methods to create, read, update, delete, and enumerate libraries. +type Library struct { + CreationTime *time.Time `json:"creation_time,omitempty"` + Description string `json:"description,omitempty"` + ID string `json:"id,omitempty"` + LastModifiedTime *time.Time `json:"last_modified_time,omitempty"` + LastSyncTime *time.Time `json:"last_sync_time,omitempty"` + Name string `json:"name,omitempty"` + Storage []StorageBackings `json:"storage_backings,omitempty"` + Type string `json:"type,omitempty"` + Version string `json:"version,omitempty"` + Subscription *Subscription `json:"subscription_info,omitempty"` + Publication *Publication `json:"publish_info,omitempty"` +} + +// Subscription info +type Subscription struct { + AuthenticationMethod string `json:"authentication_method"` + AutomaticSyncEnabled *bool `json:"automatic_sync_enabled,omitempty"` + OnDemand *bool `json:"on_demand,omitempty"` + Password string `json:"password,omitempty"` + SslThumbprint string `json:"ssl_thumbprint,omitempty"` + SubscriptionURL string `json:"subscription_url,omitempty"` + UserName string `json:"user_name,omitempty"` +} + +// Publication info +type Publication struct { + AuthenticationMethod string `json:"authentication_method"` + UserName string `json:"user_name,omitempty"` + Password string `json:"password,omitempty"` + CurrentPassword string `json:"current_password,omitempty"` + PersistJSON *bool `json:"persist_json_enabled,omitempty"` + Published *bool `json:"published,omitempty"` + PublishURL string `json:"publish_url,omitempty"` +} + +// SubscriberSummary as returned by ListSubscribers +type SubscriberSummary struct { + LibraryID string `json:"subscribed_library"` + LibraryName string `json:"subscribed_library_name"` + SubscriptionID string `json:"subscription"` + LibraryVcenterHostname string `json:"subscribed_library_vcenter_hostname,omitempty"` +} + +// Placement information used to place a virtual machine template +type Placement struct { + ResourcePool string `json:"resource_pool,omitempty"` + Host string `json:"host,omitempty"` + Folder string `json:"folder,omitempty"` + Cluster string `json:"cluster,omitempty"` + Network string `json:"network,omitempty"` +} + +// Vcenter contains information about the vCenter Server instance where a subscribed library associated with a subscription exists. +type Vcenter struct { + Hostname string `json:"hostname"` + Port int `json:"https_port,omitempty"` + ServerGUID string `json:"server_guid"` +} + +// Subscriber contains the detailed info for a library subscriber. +type Subscriber struct { + LibraryID string `json:"subscribed_library"` + LibraryName string `json:"subscribed_library_name"` + LibraryLocation string `json:"subscribed_library_location"` + Placement *Placement `json:"subscribed_library_placement,omitempty"` + Vcenter *Vcenter `json:"subscribed_library_vcenter,omitempty"` +} + +// SubscriberLibrary is the specification for a subscribed library to be associated with a subscription. +type SubscriberLibrary struct { + Target string `json:"target"` + LibraryID string `json:"subscribed_library,omitempty"` + Location string `json:"location"` + Vcenter *Vcenter `json:"vcenter,omitempty"` + Placement *Placement `json:"placement,omitempty"` +} + +// Patch merges updates from the given src. +func (l *Library) Patch(src *Library) { + if src.Name != "" { + l.Name = src.Name + } + if src.Description != "" { + l.Description = src.Description + } + if src.Version != "" { + l.Version = src.Version + } +} + +// Manager extends rest.Client, adding content library related methods. +type Manager struct { + *rest.Client +} + +// NewManager creates a new Manager instance with the given client. +func NewManager(client *rest.Client) *Manager { + return &Manager{ + Client: client, + } +} + +// Find is the search criteria for finding libraries. +type Find struct { + Name string `json:"name,omitempty"` + Type string `json:"type,omitempty"` +} + +// FindLibrary returns one or more libraries that match the provided search +// criteria. +// +// The provided name is case-insensitive. +// +// Either the name or type of library may be set to empty values in order +// to search for all libraries, all libraries with a specific name, regardless +// of type, or all libraries of a specified type. +func (c *Manager) FindLibrary(ctx context.Context, search Find) ([]string, error) { + url := c.Resource(internal.LibraryPath).WithAction("find") + spec := struct { + Spec Find `json:"spec"` + }{search} + var res []string + return res, c.Do(ctx, url.Request(http.MethodPost, spec), &res) +} + +// CreateLibrary creates a new library with the given Type, Name, +// Description, and CategoryID. +func (c *Manager) CreateLibrary(ctx context.Context, library Library) (string, error) { + spec := struct { + Library Library `json:"create_spec"` + }{library} + path := internal.LocalLibraryPath + if library.Type == "SUBSCRIBED" { + path = internal.SubscribedLibraryPath + sub := library.Subscription + u, err := url.Parse(sub.SubscriptionURL) + if err != nil { + return "", err + } + if u.Scheme == "https" && sub.SslThumbprint == "" { + thumbprint := c.Thumbprint(u.Host) + if thumbprint == "" { + t := c.DefaultTransport() + if t.TLSClientConfig.InsecureSkipVerify { + var info object.HostCertificateInfo + _ = info.FromURL(u, t.TLSClientConfig) + thumbprint = info.ThumbprintSHA1 + } + sub.SslThumbprint = thumbprint + } + } + } + url := c.Resource(path) + var res string + return res, c.Do(ctx, url.Request(http.MethodPost, spec), &res) +} + +// SyncLibrary syncs a subscribed library. +func (c *Manager) SyncLibrary(ctx context.Context, library *Library) error { + path := internal.SubscribedLibraryPath + url := c.Resource(path).WithID(library.ID).WithAction("sync") + return c.Do(ctx, url.Request(http.MethodPost), nil) +} + +// PublishLibrary publishes the library to specified subscriptions. +// If no subscriptions are specified, then publishes the library to all subscriptions. +func (c *Manager) PublishLibrary(ctx context.Context, library *Library, subscriptions []string) error { + path := internal.LocalLibraryPath + var spec internal.SubscriptionDestinationSpec + for i := range subscriptions { + spec.Subscriptions = append(spec.Subscriptions, internal.SubscriptionDestination{ID: subscriptions[i]}) + } + url := c.Resource(path).WithID(library.ID).WithAction("publish") + return c.Do(ctx, url.Request(http.MethodPost, spec), nil) +} + +// DeleteLibrary deletes an existing library. +func (c *Manager) DeleteLibrary(ctx context.Context, library *Library) error { + path := internal.LocalLibraryPath + if library.Type == "SUBSCRIBED" { + path = internal.SubscribedLibraryPath + } + url := c.Resource(path).WithID(library.ID) + return c.Do(ctx, url.Request(http.MethodDelete), nil) +} + +// ListLibraries returns a list of all content library IDs in the system. +func (c *Manager) ListLibraries(ctx context.Context) ([]string, error) { + url := c.Resource(internal.LibraryPath) + var res []string + return res, c.Do(ctx, url.Request(http.MethodGet), &res) +} + +// GetLibraryByID returns information on a library for the given ID. +func (c *Manager) GetLibraryByID(ctx context.Context, id string) (*Library, error) { + url := c.Resource(internal.LibraryPath).WithID(id) + var res Library + return &res, c.Do(ctx, url.Request(http.MethodGet), &res) +} + +// GetLibraryByName returns information on a library for the given name. +func (c *Manager) GetLibraryByName(ctx context.Context, name string) (*Library, error) { + // Lookup by name + libraries, err := c.GetLibraries(ctx) + if err != nil { + return nil, err + } + for i := range libraries { + if libraries[i].Name == name { + return &libraries[i], nil + } + } + return nil, fmt.Errorf("library name (%s) not found", name) +} + +// GetLibraries returns a list of all content library details in the system. +func (c *Manager) GetLibraries(ctx context.Context) ([]Library, error) { + ids, err := c.ListLibraries(ctx) + if err != nil { + return nil, fmt.Errorf("get libraries failed for: %s", err) + } + + var libraries []Library + for _, id := range ids { + library, err := c.GetLibraryByID(ctx, id) + if err != nil { + return nil, fmt.Errorf("get library %s failed for %s", id, err) + } + + libraries = append(libraries, *library) + + } + return libraries, nil +} + +// ListSubscribers lists the subscriptions of the published library. +func (c *Manager) ListSubscribers(ctx context.Context, library *Library) ([]SubscriberSummary, error) { + url := c.Resource(internal.Subscriptions).WithParam("library", library.ID) + var res []SubscriberSummary + return res, c.Do(ctx, url.Request(http.MethodGet), &res) +} + +// CreateSubscriber creates a subscription of the published library. +func (c *Manager) CreateSubscriber(ctx context.Context, library *Library, s SubscriberLibrary) (string, error) { + var spec struct { + Sub struct { + SubscriberLibrary SubscriberLibrary `json:"subscribed_library"` + } `json:"spec"` + } + spec.Sub.SubscriberLibrary = s + url := c.Resource(internal.Subscriptions).WithID(library.ID) + var res string + return res, c.Do(ctx, url.Request(http.MethodPost, &spec), &res) +} + +// GetSubscriber returns information about the specified subscriber of the published library. +func (c *Manager) GetSubscriber(ctx context.Context, library *Library, subscriber string) (*Subscriber, error) { + id := internal.SubscriptionDestination{ID: subscriber} + url := c.Resource(internal.Subscriptions).WithID(library.ID).WithAction("get") + var res Subscriber + return &res, c.Do(ctx, url.Request(http.MethodPost, &id), &res) +} + +// DeleteSubscriber deletes the specified subscription of the published library. +// The subscribed library associated with the subscription will not be deleted. +func (c *Manager) DeleteSubscriber(ctx context.Context, library *Library, subscriber string) error { + id := internal.SubscriptionDestination{ID: subscriber} + url := c.Resource(internal.Subscriptions).WithID(library.ID).WithAction("delete") + return c.Do(ctx, url.Request(http.MethodPost, &id), nil) +} diff --git a/vendor/github.com/vmware/govmomi/vapi/library/library_file.go b/vendor/github.com/vmware/govmomi/vapi/library/library_file.go new file mode 100644 index 0000000..ba71d72 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vapi/library/library_file.go @@ -0,0 +1,56 @@ +/* +Copyright (c) 2018 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package library + +import ( + "context" + "net/http" + + "github.com/vmware/govmomi/vapi/internal" +) + +// Checksum provides checksum information on library item files. +type Checksum struct { + Algorithm string `json:"algorithm,omitempty"` + Checksum string `json:"checksum"` +} + +// File provides methods to get information on library item files. +type File struct { + Cached *bool `json:"cached,omitempty"` + Checksum *Checksum `json:"checksum_info,omitempty"` + Name string `json:"name,omitempty"` + Size *int64 `json:"size,omitempty"` + Version string `json:"version,omitempty"` +} + +// ListLibraryItemFiles returns a list of all the files for a library item. +func (c *Manager) ListLibraryItemFiles(ctx context.Context, id string) ([]File, error) { + url := c.Resource(internal.LibraryItemFilePath).WithParam("library_item_id", id) + var res []File + return res, c.Do(ctx, url.Request(http.MethodGet), &res) +} + +// GetLibraryItemFile returns a file with the provided name for a library item. +func (c *Manager) GetLibraryItemFile(ctx context.Context, id, fileName string) (*File, error) { + url := c.Resource(internal.LibraryItemFilePath).WithID(id).WithAction("get") + spec := struct { + Name string `json:"name"` + }{fileName} + var res File + return &res, c.Do(ctx, url.Request(http.MethodPost, spec), &res) +} diff --git a/vendor/github.com/vmware/govmomi/vapi/library/library_item.go b/vendor/github.com/vmware/govmomi/vapi/library/library_item.go new file mode 100644 index 0000000..57914ad --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vapi/library/library_item.go @@ -0,0 +1,180 @@ +/* +Copyright (c) 2018 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package library + +import ( + "context" + "fmt" + "net/http" + "time" + + "github.com/vmware/govmomi/vapi/internal" +) + +const ( + ItemTypeISO = "iso" + ItemTypeOVF = "ovf" + ItemTypeVMTX = "vm-template" +) + +// Item provides methods to create, read, update, delete, and enumerate library items. +type Item struct { + Cached bool `json:"cached,omitempty"` + ContentVersion string `json:"content_version,omitempty"` + CreationTime *time.Time `json:"creation_time,omitempty"` + Description string `json:"description,omitempty"` + ID string `json:"id,omitempty"` + LastModifiedTime *time.Time `json:"last_modified_time,omitempty"` + LastSyncTime *time.Time `json:"last_sync_time,omitempty"` + LibraryID string `json:"library_id,omitempty"` + MetadataVersion string `json:"metadata_version,omitempty"` + Name string `json:"name,omitempty"` + Size int64 `json:"size,omitempty"` + SourceID string `json:"source_id,omitempty"` + Type string `json:"type,omitempty"` + Version string `json:"version,omitempty"` +} + +// Patch merges updates from the given src. +func (i *Item) Patch(src *Item) { + if src.Name != "" { + i.Name = src.Name + } + if src.Description != "" { + i.Description = src.Description + } + if src.Type != "" { + i.Type = src.Type + } + if src.Version != "" { + i.Version = src.Version + } +} + +// CreateLibraryItem creates a new library item +func (c *Manager) CreateLibraryItem(ctx context.Context, item Item) (string, error) { + type createItemSpec struct { + Name string `json:"name"` + Description string `json:"description"` + LibraryID string `json:"library_id,omitempty"` + Type string `json:"type"` + } + spec := struct { + Item createItemSpec `json:"create_spec"` + }{ + Item: createItemSpec{ + Name: item.Name, + Description: item.Description, + LibraryID: item.LibraryID, + Type: item.Type, + }, + } + url := c.Resource(internal.LibraryItemPath) + var res string + return res, c.Do(ctx, url.Request(http.MethodPost, spec), &res) +} + +// CopyLibraryItem copies a library item +func (c *Manager) CopyLibraryItem(ctx context.Context, src *Item, dst Item) (string, error) { + body := struct { + Item `json:"destination_create_spec"` + }{dst} + url := c.Resource(internal.LibraryItemPath).WithID(src.ID).WithAction("copy") + var res string + return res, c.Do(ctx, url.Request(http.MethodPost, body), &res) +} + +// SyncLibraryItem syncs a subscribed library item +func (c *Manager) SyncLibraryItem(ctx context.Context, item *Item, force bool) error { + body := struct { + Force bool `json:"force_sync_content"` + }{force} + url := c.Resource(internal.SubscribedLibraryItem).WithID(item.ID).WithAction("sync") + return c.Do(ctx, url.Request(http.MethodPost, body), nil) +} + +// PublishLibraryItem publishes a library item to specified subscriptions. +// If no subscriptions are specified, then publishes the library item to all subscriptions. +func (c *Manager) PublishLibraryItem(ctx context.Context, item *Item, force bool, subscriptions []string) error { + body := internal.SubscriptionItemDestinationSpec{ + Force: force, + } + for i := range subscriptions { + body.Subscriptions = append(body.Subscriptions, internal.SubscriptionDestination{ID: subscriptions[i]}) + } + url := c.Resource(internal.LibraryItemPath).WithID(item.ID).WithAction("publish") + return c.Do(ctx, url.Request(http.MethodPost, body), nil) +} + +// DeleteLibraryItem deletes an existing library item. +func (c *Manager) DeleteLibraryItem(ctx context.Context, item *Item) error { + url := c.Resource(internal.LibraryItemPath).WithID(item.ID) + return c.Do(ctx, url.Request(http.MethodDelete), nil) +} + +// ListLibraryItems returns a list of all items in a content library. +func (c *Manager) ListLibraryItems(ctx context.Context, id string) ([]string, error) { + url := c.Resource(internal.LibraryItemPath).WithParam("library_id", id) + var res []string + return res, c.Do(ctx, url.Request(http.MethodGet), &res) +} + +// GetLibraryItem returns information on a library item for the given ID. +func (c *Manager) GetLibraryItem(ctx context.Context, id string) (*Item, error) { + url := c.Resource(internal.LibraryItemPath).WithID(id) + var res Item + return &res, c.Do(ctx, url.Request(http.MethodGet), &res) +} + +// GetLibraryItems returns a list of all the library items for the specified library. +func (c *Manager) GetLibraryItems(ctx context.Context, libraryID string) ([]Item, error) { + ids, err := c.ListLibraryItems(ctx, libraryID) + if err != nil { + return nil, fmt.Errorf("get library items failed for: %s", err) + } + var items []Item + for _, id := range ids { + item, err := c.GetLibraryItem(ctx, id) + if err != nil { + return nil, fmt.Errorf("get library item for %s failed for %s", id, err) + } + items = append(items, *item) + } + return items, nil +} + +// FindItem is the search criteria for finding library items. +type FindItem struct { + Cached *bool `json:"cached,omitempty"` + LibraryID string `json:"library_id,omitempty"` + Name string `json:"name,omitempty"` + SourceID string `json:"source_id,omitempty"` + Type string `json:"type,omitempty"` +} + +// FindLibraryItems returns the IDs of all the library items that match the +// search criteria. +func (c *Manager) FindLibraryItems( + ctx context.Context, search FindItem) ([]string, error) { + + url := c.Resource(internal.LibraryItemPath).WithAction("find") + spec := struct { + Spec FindItem `json:"spec"` + }{search} + var res []string + return res, c.Do(ctx, url.Request(http.MethodPost, spec), &res) +} diff --git a/vendor/github.com/vmware/govmomi/vapi/library/library_item_downloadsession_file.go b/vendor/github.com/vmware/govmomi/vapi/library/library_item_downloadsession_file.go new file mode 100644 index 0000000..6f432f7 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vapi/library/library_item_downloadsession_file.go @@ -0,0 +1,71 @@ +/* +Copyright (c) 2018 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package library + +import ( + "context" + "net/http" + + "github.com/vmware/govmomi/vapi/internal" + "github.com/vmware/govmomi/vapi/rest" +) + +// DownloadFile is the specification for the downloadsession +// operations file:add, file:get, and file:list. +type DownloadFile struct { + BytesTransferred int64 `json:"bytes_transferred"` + Checksum *Checksum `json:"checksum_info,omitempty"` + DownloadEndpoint *TransferEndpoint `json:"download_endpoint,omitempty"` + ErrorMessage *rest.LocalizableMessage `json:"error_message,omitempty"` + Name string `json:"name"` + Size int64 `json:"size,omitempty"` + Status string `json:"status"` +} + +// GetLibraryItemDownloadSessionFile retrieves information about a specific file that is a part of an download session. +func (c *Manager) GetLibraryItemDownloadSessionFile(ctx context.Context, sessionID string, name string) (*DownloadFile, error) { + url := c.Resource(internal.LibraryItemDownloadSessionFile).WithID(sessionID).WithAction("get") + spec := struct { + Name string `json:"file_name"` + }{name} + var res DownloadFile + err := c.Do(ctx, url.Request(http.MethodPost, spec), &res) + if err != nil { + return nil, err + } + if res.Status == "ERROR" { + return nil, res.ErrorMessage + } + return &res, nil +} + +// ListLibraryItemDownloadSessionFile retrieves information about a specific file that is a part of an download session. +func (c *Manager) ListLibraryItemDownloadSessionFile(ctx context.Context, sessionID string) ([]DownloadFile, error) { + url := c.Resource(internal.LibraryItemDownloadSessionFile).WithParam("download_session_id", sessionID) + var res []DownloadFile + return res, c.Do(ctx, url.Request(http.MethodGet), &res) +} + +// PrepareLibraryItemDownloadSessionFile retrieves information about a specific file that is a part of an download session. +func (c *Manager) PrepareLibraryItemDownloadSessionFile(ctx context.Context, sessionID string, name string) (*DownloadFile, error) { + url := c.Resource(internal.LibraryItemDownloadSessionFile).WithID(sessionID).WithAction("prepare") + spec := struct { + Name string `json:"file_name"` + }{name} + var res DownloadFile + return &res, c.Do(ctx, url.Request(http.MethodPost, spec), &res) +} diff --git a/vendor/github.com/vmware/govmomi/vapi/library/library_item_updatesession.go b/vendor/github.com/vmware/govmomi/vapi/library/library_item_updatesession.go new file mode 100644 index 0000000..df66a87 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vapi/library/library_item_updatesession.go @@ -0,0 +1,165 @@ +/* +Copyright (c) 2018 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package library + +import ( + "context" + "net/http" + "time" + + "github.com/vmware/govmomi/vapi/internal" + "github.com/vmware/govmomi/vapi/rest" +) + +// Session is used to create an initial update or download session +type Session struct { + ClientProgress int64 `json:"client_progress,omitempty"` + ErrorMessage *rest.LocalizableMessage `json:"error_message,omitempty"` + ExpirationTime *time.Time `json:"expiration_time,omitempty"` + ID string `json:"id,omitempty"` + LibraryItemContentVersion string `json:"library_item_content_version,omitempty"` + LibraryItemID string `json:"library_item_id,omitempty"` + State string `json:"state,omitempty"` +} + +// CreateLibraryItemUpdateSession creates a new library item +func (c *Manager) CreateLibraryItemUpdateSession(ctx context.Context, session Session) (string, error) { + url := c.Resource(internal.LibraryItemUpdateSession) + spec := struct { + CreateSpec Session `json:"create_spec"` + }{session} + var res string + return res, c.Do(ctx, url.Request(http.MethodPost, spec), &res) +} + +// GetLibraryItemUpdateSession gets the update session information with status +func (c *Manager) GetLibraryItemUpdateSession(ctx context.Context, id string) (*Session, error) { + url := c.Resource(internal.LibraryItemUpdateSession).WithID(id) + var res Session + return &res, c.Do(ctx, url.Request(http.MethodGet), &res) +} + +// ListLibraryItemUpdateSession gets the list of update sessions +func (c *Manager) ListLibraryItemUpdateSession(ctx context.Context) ([]string, error) { + url := c.Resource(internal.LibraryItemUpdateSession) + var res []string + return res, c.Do(ctx, url.Request(http.MethodGet), &res) +} + +// CancelLibraryItemUpdateSession cancels an update session +func (c *Manager) CancelLibraryItemUpdateSession(ctx context.Context, id string) error { + url := c.Resource(internal.LibraryItemUpdateSession).WithID(id).WithAction("cancel") + return c.Do(ctx, url.Request(http.MethodPost), nil) +} + +// CompleteLibraryItemUpdateSession completes an update session +func (c *Manager) CompleteLibraryItemUpdateSession(ctx context.Context, id string) error { + url := c.Resource(internal.LibraryItemUpdateSession).WithID(id).WithAction("complete") + return c.Do(ctx, url.Request(http.MethodPost), nil) +} + +// DeleteLibraryItemUpdateSession deletes an update session +func (c *Manager) DeleteLibraryItemUpdateSession(ctx context.Context, id string) error { + url := c.Resource(internal.LibraryItemUpdateSession).WithID(id) + return c.Do(ctx, url.Request(http.MethodDelete), nil) +} + +// FailLibraryItemUpdateSession fails an update session +func (c *Manager) FailLibraryItemUpdateSession(ctx context.Context, id string) error { + url := c.Resource(internal.LibraryItemUpdateSession).WithID(id).WithAction("fail") + return c.Do(ctx, url.Request(http.MethodPost), nil) +} + +// KeepAliveLibraryItemUpdateSession keeps an inactive update session alive. +func (c *Manager) KeepAliveLibraryItemUpdateSession(ctx context.Context, id string) error { + url := c.Resource(internal.LibraryItemUpdateSession).WithID(id).WithAction("keep-alive") + return c.Do(ctx, url.Request(http.MethodPost), nil) +} + +// WaitOnLibraryItemUpdateSession blocks until the update session is no longer +// in the ACTIVE state. +func (c *Manager) WaitOnLibraryItemUpdateSession( + ctx context.Context, sessionID string, + interval time.Duration, intervalCallback func()) error { + + // Wait until the upload operation is complete to return. + for { + session, err := c.GetLibraryItemUpdateSession(ctx, sessionID) + if err != nil { + return err + } + + if session.State != "ACTIVE" { + if session.State == "ERROR" { + return session.ErrorMessage + } + return nil + } + time.Sleep(interval) + if intervalCallback != nil { + intervalCallback() + } + } +} + +// CreateLibraryItemDownloadSession creates a new library item +func (c *Manager) CreateLibraryItemDownloadSession(ctx context.Context, session Session) (string, error) { + url := c.Resource(internal.LibraryItemDownloadSession) + spec := struct { + CreateSpec Session `json:"create_spec"` + }{session} + var res string + return res, c.Do(ctx, url.Request(http.MethodPost, spec), &res) +} + +// GetLibraryItemDownloadSession gets the download session information with status +func (c *Manager) GetLibraryItemDownloadSession(ctx context.Context, id string) (*Session, error) { + url := c.Resource(internal.LibraryItemDownloadSession).WithID(id) + var res Session + return &res, c.Do(ctx, url.Request(http.MethodGet), &res) +} + +// ListLibraryItemDownloadSession gets the list of download sessions +func (c *Manager) ListLibraryItemDownloadSession(ctx context.Context) ([]string, error) { + url := c.Resource(internal.LibraryItemDownloadSession) + var res []string + return res, c.Do(ctx, url.Request(http.MethodGet), &res) +} + +// CancelLibraryItemDownloadSession cancels an download session +func (c *Manager) CancelLibraryItemDownloadSession(ctx context.Context, id string) error { + url := c.Resource(internal.LibraryItemDownloadSession).WithID(id).WithAction("cancel") + return c.Do(ctx, url.Request(http.MethodPost), nil) +} + +// DeleteLibraryItemDownloadSession deletes an download session +func (c *Manager) DeleteLibraryItemDownloadSession(ctx context.Context, id string) error { + url := c.Resource(internal.LibraryItemDownloadSession).WithID(id) + return c.Do(ctx, url.Request(http.MethodDelete), nil) +} + +// FailLibraryItemDownloadSession fails an download session +func (c *Manager) FailLibraryItemDownloadSession(ctx context.Context, id string) error { + url := c.Resource(internal.LibraryItemDownloadSession).WithID(id).WithAction("fail") + return c.Do(ctx, url.Request(http.MethodPost), nil) +} + +// KeepAliveLibraryItemDownloadSession keeps an inactive download session alive. +func (c *Manager) KeepAliveLibraryItemDownloadSession(ctx context.Context, id string) error { + url := c.Resource(internal.LibraryItemDownloadSession).WithID(id).WithAction("keep-alive") + return c.Do(ctx, url.Request(http.MethodPost), nil) +} diff --git a/vendor/github.com/vmware/govmomi/vapi/library/library_item_updatesession_file.go b/vendor/github.com/vmware/govmomi/vapi/library/library_item_updatesession_file.go new file mode 100644 index 0000000..e34331c --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vapi/library/library_item_updatesession_file.go @@ -0,0 +1,149 @@ +/* +Copyright (c) 2018 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package library + +import ( + "bufio" + "context" + "io" + "net/http" + "strings" + + "github.com/vmware/govmomi/vapi/internal" + "github.com/vmware/govmomi/vapi/rest" + "github.com/vmware/govmomi/vim25/soap" +) + +// TransferEndpoint provides information on the source of a library item file. +type TransferEndpoint struct { + URI string `json:"uri,omitempty"` + SSLCertificateThumbprint string `json:"ssl_certificate_thumbprint,omitempty"` +} + +// UpdateFile is the specification for the updatesession +// operations file:add, file:get, and file:list. +type UpdateFile struct { + BytesTransferred int64 `json:"bytes_transferred,omitempty"` + Checksum *Checksum `json:"checksum_info,omitempty"` + ErrorMessage *rest.LocalizableMessage `json:"error_message,omitempty"` + Name string `json:"name"` + Size int64 `json:"size,omitempty"` + SourceEndpoint *TransferEndpoint `json:"source_endpoint,omitempty"` + SourceType string `json:"source_type"` + Status string `json:"status,omitempty"` + UploadEndpoint *TransferEndpoint `json:"upload_endpoint,omitempty"` +} + +// AddLibraryItemFile adds a file +func (c *Manager) AddLibraryItemFile(ctx context.Context, sessionID string, updateFile UpdateFile) (*UpdateFile, error) { + url := c.Resource(internal.LibraryItemUpdateSessionFile).WithID(sessionID).WithAction("add") + spec := struct { + FileSpec UpdateFile `json:"file_spec"` + }{updateFile} + var res UpdateFile + err := c.Do(ctx, url.Request(http.MethodPost, spec), &res) + if err != nil { + return nil, err + } + if res.Status == "ERROR" { + return nil, res.ErrorMessage + } + return &res, nil +} + +// AddLibraryItemFileFromURI adds a file from a remote URI. +func (c *Manager) AddLibraryItemFileFromURI( + ctx context.Context, + sessionID, fileName, uri string) (*UpdateFile, error) { + + n, fingerprint, err := c.getContentLengthAndFingerprint(ctx, uri) + if err != nil { + return nil, err + } + + info, err := c.AddLibraryItemFile(ctx, sessionID, UpdateFile{ + Name: fileName, + SourceType: "PULL", + Size: n, + SourceEndpoint: &TransferEndpoint{ + URI: uri, + SSLCertificateThumbprint: fingerprint, + }, + }) + if err != nil { + return nil, err + } + + return info, c.CompleteLibraryItemUpdateSession(ctx, sessionID) +} + +// GetLibraryItemUpdateSessionFile retrieves information about a specific file +// that is a part of an update session. +func (c *Manager) GetLibraryItemUpdateSessionFile(ctx context.Context, sessionID string, fileName string) (*UpdateFile, error) { + url := c.Resource(internal.LibraryItemUpdateSessionFile).WithID(sessionID).WithAction("get") + spec := struct { + Name string `json:"file_name"` + }{fileName} + var res UpdateFile + return &res, c.Do(ctx, url.Request(http.MethodPost, spec), &res) +} + +// getContentLengthAndFingerprint gets the number of bytes returned +// by the URI as well as the SHA1 fingerprint of the peer certificate +// if the URI's scheme is https. +func (c *Manager) getContentLengthAndFingerprint( + ctx context.Context, uri string) (int64, string, error) { + resp, err := c.Head(uri) + if err != nil { + return 0, "", err + } + if resp.TLS == nil || len(resp.TLS.PeerCertificates) == 0 { + return resp.ContentLength, "", nil + } + fingerprint := c.Thumbprint(resp.Request.URL.Host) + if fingerprint == "" { + if c.DefaultTransport().TLSClientConfig.InsecureSkipVerify { + fingerprint = soap.ThumbprintSHA1(resp.TLS.PeerCertificates[0]) + } + } + return resp.ContentLength, fingerprint, nil +} + +// ReadManifest converts an ovf manifest to a map of file name -> Checksum. +func ReadManifest(m io.Reader) (map[string]*Checksum, error) { + // expected format: openssl sha1 *.{ovf,vmdk} + c := make(map[string]*Checksum) + + scanner := bufio.NewScanner(m) + for scanner.Scan() { + line := strings.SplitN(scanner.Text(), ")=", 2) + if len(line) != 2 { + continue + } + name := strings.SplitN(line[0], "(", 2) + if len(name) != 2 { + continue + } + sum := &Checksum{ + Algorithm: strings.TrimSpace(name[0]), + Checksum: strings.TrimSpace(line[1]), + } + c[name[1]] = sum + } + + return c, scanner.Err() +} diff --git a/vendor/github.com/vmware/govmomi/vapi/rest/client.go b/vendor/github.com/vmware/govmomi/vapi/rest/client.go new file mode 100644 index 0000000..0cad1fb --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vapi/rest/client.go @@ -0,0 +1,289 @@ +/* +Copyright (c) 2018 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rest + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "io" + "io/ioutil" + "net/http" + "net/url" + "sync" + "time" + + "github.com/vmware/govmomi/vapi/internal" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/soap" +) + +// Client extends soap.Client to support JSON encoding, while inheriting security features, debug tracing and session persistence. +type Client struct { + mu sync.Mutex + + *soap.Client + sessionID string +} + +// Session information +type Session struct { + User string `json:"user"` + Created time.Time `json:"created_time"` + LastAccessed time.Time `json:"last_accessed_time"` +} + +// LocalizableMessage represents a localizable error +type LocalizableMessage struct { + Args []string `json:"args,omitempty"` + DefaultMessage string `json:"default_message,omitempty"` + ID string `json:"id,omitempty"` +} + +func (m *LocalizableMessage) Error() string { + return m.DefaultMessage +} + +// NewClient creates a new Client instance. +func NewClient(c *vim25.Client) *Client { + sc := c.Client.NewServiceClient(Path, "") + + return &Client{Client: sc} +} + +// SessionID is set by calling Login() or optionally with the given id param +func (c *Client) SessionID(id ...string) string { + c.mu.Lock() + defer c.mu.Unlock() + if len(id) != 0 { + c.sessionID = id[0] + } + return c.sessionID +} + +type marshaledClient struct { + SoapClient *soap.Client + SessionID string +} + +func (c *Client) MarshalJSON() ([]byte, error) { + m := marshaledClient{ + SoapClient: c.Client, + SessionID: c.sessionID, + } + + return json.Marshal(m) +} + +func (c *Client) UnmarshalJSON(b []byte) error { + var m marshaledClient + + err := json.Unmarshal(b, &m) + if err != nil { + return err + } + + *c = Client{ + Client: m.SoapClient, + sessionID: m.SessionID, + } + + return nil +} + +// Resource helper for the given path. +func (c *Client) Resource(path string) *Resource { + r := &Resource{u: c.URL()} + r.u.Path = Path + path + return r +} + +type Signer interface { + SignRequest(*http.Request) error +} + +type signerContext struct{} + +func (c *Client) WithSigner(ctx context.Context, s Signer) context.Context { + return context.WithValue(ctx, signerContext{}, s) +} + +type statusError struct { + res *http.Response +} + +func (e *statusError) Error() string { + return fmt.Sprintf("%s %s: %s", e.res.Request.Method, e.res.Request.URL, e.res.Status) +} + +// Do sends the http.Request, decoding resBody if provided. +func (c *Client) Do(ctx context.Context, req *http.Request, resBody interface{}) error { + switch req.Method { + case http.MethodPost, http.MethodPatch: + req.Header.Set("Content-Type", "application/json") + } + + req.Header.Set("Accept", "application/json") + + if id := c.SessionID(); id != "" { + req.Header.Set(internal.SessionCookieName, id) + } + + if s, ok := ctx.Value(signerContext{}).(Signer); ok { + if err := s.SignRequest(req); err != nil { + return err + } + } + + return c.Client.Do(ctx, req, func(res *http.Response) error { + switch res.StatusCode { + case http.StatusOK: + case http.StatusNoContent: + case http.StatusBadRequest: + // TODO: structured error types + detail, err := ioutil.ReadAll(res.Body) + if err != nil { + return err + } + return fmt.Errorf("%s: %s", res.Status, bytes.TrimSpace(detail)) + default: + return &statusError{res} + } + + if resBody == nil { + return nil + } + + switch b := resBody.(type) { + case io.Writer: + _, err := io.Copy(b, res.Body) + return err + default: + val := struct { + Value interface{} `json:"value,omitempty"` + }{ + resBody, + } + return json.NewDecoder(res.Body).Decode(&val) + } + }) +} + +// authHeaders ensures the given map contains a REST auth header +func (c *Client) authHeaders(h map[string]string) map[string]string { + if _, exists := h[internal.SessionCookieName]; exists { + return h + } + if h == nil { + h = make(map[string]string) + } + + h[internal.SessionCookieName] = c.SessionID() + + return h +} + +// Download wraps soap.Client.Download, adding the REST authentication header +func (c *Client) Download(ctx context.Context, u *url.URL, param *soap.Download) (io.ReadCloser, int64, error) { + p := *param + p.Headers = c.authHeaders(p.Headers) + return c.Client.Download(ctx, u, &p) +} + +// DownloadFile wraps soap.Client.DownloadFile, adding the REST authentication header +func (c *Client) DownloadFile(ctx context.Context, file string, u *url.URL, param *soap.Download) error { + p := *param + p.Headers = c.authHeaders(p.Headers) + return c.Client.DownloadFile(ctx, file, u, &p) +} + +// Upload wraps soap.Client.Upload, adding the REST authentication header +func (c *Client) Upload(ctx context.Context, f io.Reader, u *url.URL, param *soap.Upload) error { + p := *param + p.Headers = c.authHeaders(p.Headers) + return c.Client.Upload(ctx, f, u, &p) +} + +// Login creates a new session via Basic Authentication with the given url.Userinfo. +func (c *Client) Login(ctx context.Context, user *url.Userinfo) error { + req := c.Resource(internal.SessionPath).Request(http.MethodPost) + + req.Header.Set(internal.UseHeaderAuthn, "true") + + if user != nil { + if password, ok := user.Password(); ok { + req.SetBasicAuth(user.Username(), password) + } + } + + var id string + err := c.Do(ctx, req, &id) + if err != nil { + return err + } + + c.SessionID(id) + + return nil +} + +func (c *Client) LoginByToken(ctx context.Context) error { + return c.Login(ctx, nil) +} + +// Session returns the user's current session. +// Nil is returned if the session is not authenticated. +func (c *Client) Session(ctx context.Context) (*Session, error) { + var s Session + req := c.Resource(internal.SessionPath).WithAction("get").Request(http.MethodPost) + err := c.Do(ctx, req, &s) + if err != nil { + if e, ok := err.(*statusError); ok { + if e.res.StatusCode == http.StatusUnauthorized { + return nil, nil + } + } + return nil, err + } + return &s, nil +} + +// Logout deletes the current session. +func (c *Client) Logout(ctx context.Context) error { + req := c.Resource(internal.SessionPath).Request(http.MethodDelete) + return c.Do(ctx, req, nil) +} + +// Valid returns whether or not the client is valid and ready for use. +// This should be called after unmarshalling the client. +func (c *Client) Valid() bool { + if c == nil { + return false + } + + if c.Client == nil { + return false + } + + return true +} + +// Path returns rest.Path (see cache.Client) +func (c *Client) Path() string { + return Path +} diff --git a/vendor/github.com/vmware/govmomi/vapi/rest/resource.go b/vendor/github.com/vmware/govmomi/vapi/rest/resource.go new file mode 100644 index 0000000..2437896 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vapi/rest/resource.go @@ -0,0 +1,89 @@ +/* +Copyright (c) 2019 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rest + +import ( + "bytes" + "encoding/json" + "io" + "net/http" + "net/url" +) + +const ( + Path = "/rest" +) + +// Resource wraps url.URL with helpers +type Resource struct { + u *url.URL +} + +func (r *Resource) String() string { + return r.u.String() +} + +// WithID appends id to the URL.Path +func (r *Resource) WithID(id string) *Resource { + r.u.Path += "/id:" + id + return r +} + +// WithAction sets adds action to the URL.RawQuery +func (r *Resource) WithAction(action string) *Resource { + return r.WithParam("~action", action) +} + +// WithParam sets adds a parameter to the URL.RawQuery +func (r *Resource) WithParam(name string, value string) *Resource { + r.u.RawQuery = url.Values{ + name: []string{value}, + }.Encode() + return r +} + +// Request returns a new http.Request for the given method. +// An optional body can be provided for POST and PATCH methods. +func (r *Resource) Request(method string, body ...interface{}) *http.Request { + rdr := io.MultiReader() // empty body by default + if len(body) != 0 { + rdr = encode(body[0]) + } + req, err := http.NewRequest(method, r.u.String(), rdr) + if err != nil { + panic(err) + } + return req +} + +type errorReader struct { + e error +} + +func (e errorReader) Read([]byte) (int, error) { + return -1, e.e +} + +// encode body as JSON, deferring any errors until io.Reader is used. +func encode(body interface{}) io.Reader { + var b bytes.Buffer + err := json.NewEncoder(&b).Encode(body) + if err != nil { + return errorReader{err} + } + return &b +} diff --git a/vendor/github.com/vmware/govmomi/view/container_view.go b/vendor/github.com/vmware/govmomi/view/container_view.go new file mode 100644 index 0000000..37fa34c --- /dev/null +++ b/vendor/github.com/vmware/govmomi/view/container_view.go @@ -0,0 +1,130 @@ +/* +Copyright (c) 2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package view + +import ( + "context" + + "github.com/vmware/govmomi/property" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/mo" + "github.com/vmware/govmomi/vim25/types" +) + +type ContainerView struct { + ManagedObjectView +} + +func NewContainerView(c *vim25.Client, ref types.ManagedObjectReference) *ContainerView { + return &ContainerView{ + ManagedObjectView: *NewManagedObjectView(c, ref), + } +} + +// Retrieve populates dst as property.Collector.Retrieve does, for all entities in the view of types specified by kind. +func (v ContainerView) Retrieve(ctx context.Context, kind []string, ps []string, dst interface{}) error { + pc := property.DefaultCollector(v.Client()) + + ospec := types.ObjectSpec{ + Obj: v.Reference(), + Skip: types.NewBool(true), + SelectSet: []types.BaseSelectionSpec{ + &types.TraversalSpec{ + Type: v.Reference().Type, + Path: "view", + }, + }, + } + + var pspec []types.PropertySpec + + if len(kind) == 0 { + kind = []string{"ManagedEntity"} + } + + for _, t := range kind { + spec := types.PropertySpec{ + Type: t, + } + + if len(ps) == 0 { + spec.All = types.NewBool(true) + } else { + spec.PathSet = ps + } + + pspec = append(pspec, spec) + } + + req := types.RetrieveProperties{ + SpecSet: []types.PropertyFilterSpec{ + { + ObjectSet: []types.ObjectSpec{ospec}, + PropSet: pspec, + }, + }, + } + + res, err := pc.RetrieveProperties(ctx, req) + if err != nil { + return err + } + + if d, ok := dst.(*[]types.ObjectContent); ok { + *d = res.Returnval + return nil + } + + return mo.LoadObjectContent(res.Returnval, dst) +} + +// RetrieveWithFilter populates dst as Retrieve does, but only for entities matching the given filter. +func (v ContainerView) RetrieveWithFilter(ctx context.Context, kind []string, ps []string, dst interface{}, filter property.Filter) error { + if len(filter) == 0 { + return v.Retrieve(ctx, kind, ps, dst) + } + + var content []types.ObjectContent + + err := v.Retrieve(ctx, kind, filter.Keys(), &content) + if err != nil { + return err + } + + objs := filter.MatchObjectContent(content) + + pc := property.DefaultCollector(v.Client()) + + return pc.Retrieve(ctx, objs, ps, dst) +} + +// Find returns object references for entities of type kind, matching the given filter. +func (v ContainerView) Find(ctx context.Context, kind []string, filter property.Filter) ([]types.ManagedObjectReference, error) { + if len(filter) == 0 { + // Ensure we have at least 1 filter to avoid retrieving all properties. + filter = property.Filter{"name": "*"} + } + + var content []types.ObjectContent + + err := v.Retrieve(ctx, kind, filter.Keys(), &content) + if err != nil { + return nil, err + } + + return filter.MatchObjectContent(content), nil +} diff --git a/vendor/github.com/vmware/govmomi/view/list_view.go b/vendor/github.com/vmware/govmomi/view/list_view.go new file mode 100644 index 0000000..e8cfb50 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/view/list_view.go @@ -0,0 +1,62 @@ +/* +Copyright (c) 2015-2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package view + +import ( + "context" + + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/types" +) + +type ListView struct { + ManagedObjectView +} + +func NewListView(c *vim25.Client, ref types.ManagedObjectReference) *ListView { + return &ListView{ + ManagedObjectView: *NewManagedObjectView(c, ref), + } +} + +func (v ListView) Add(ctx context.Context, refs []types.ManagedObjectReference) error { + req := types.ModifyListView{ + This: v.Reference(), + Add: refs, + } + _, err := methods.ModifyListView(ctx, v.Client(), &req) + return err +} + +func (v ListView) Remove(ctx context.Context, refs []types.ManagedObjectReference) error { + req := types.ModifyListView{ + This: v.Reference(), + Remove: refs, + } + _, err := methods.ModifyListView(ctx, v.Client(), &req) + return err +} + +func (v ListView) Reset(ctx context.Context, refs []types.ManagedObjectReference) error { + req := types.ResetListView{ + This: v.Reference(), + Obj: refs, + } + _, err := methods.ResetListView(ctx, v.Client(), &req) + return err +} diff --git a/vendor/github.com/vmware/govmomi/view/managed_object_view.go b/vendor/github.com/vmware/govmomi/view/managed_object_view.go new file mode 100644 index 0000000..805c864 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/view/managed_object_view.go @@ -0,0 +1,52 @@ +/* +Copyright (c) 2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package view + +import ( + "context" + + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/types" +) + +type ManagedObjectView struct { + object.Common +} + +func NewManagedObjectView(c *vim25.Client, ref types.ManagedObjectReference) *ManagedObjectView { + return &ManagedObjectView{ + Common: object.NewCommon(c, ref), + } +} + +func (v *ManagedObjectView) TraversalSpec() *types.TraversalSpec { + return &types.TraversalSpec{ + Path: "view", + Type: v.Reference().Type, + } +} + +func (v *ManagedObjectView) Destroy(ctx context.Context) error { + req := types.DestroyView{ + This: v.Reference(), + } + + _, err := methods.DestroyView(ctx, v.Client(), &req) + return err +} diff --git a/vendor/github.com/vmware/govmomi/view/manager.go b/vendor/github.com/vmware/govmomi/view/manager.go new file mode 100644 index 0000000..d44def0 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/view/manager.go @@ -0,0 +1,69 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package view + +import ( + "context" + + "github.com/vmware/govmomi/object" + "github.com/vmware/govmomi/vim25" + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/types" +) + +type Manager struct { + object.Common +} + +func NewManager(c *vim25.Client) *Manager { + m := Manager{ + object.NewCommon(c, *c.ServiceContent.ViewManager), + } + + return &m +} + +func (m Manager) CreateListView(ctx context.Context, objects []types.ManagedObjectReference) (*ListView, error) { + req := types.CreateListView{ + This: m.Common.Reference(), + Obj: objects, + } + + res, err := methods.CreateListView(ctx, m.Client(), &req) + if err != nil { + return nil, err + } + + return NewListView(m.Client(), res.Returnval), nil +} + +func (m Manager) CreateContainerView(ctx context.Context, container types.ManagedObjectReference, managedObjectTypes []string, recursive bool) (*ContainerView, error) { + + req := types.CreateContainerView{ + This: m.Common.Reference(), + Container: container, + Recursive: recursive, + Type: managedObjectTypes, + } + + res, err := methods.CreateContainerView(ctx, m.Client(), &req) + if err != nil { + return nil, err + } + + return NewContainerView(m.Client(), res.Returnval), nil +} diff --git a/vendor/github.com/vmware/govmomi/view/task_view.go b/vendor/github.com/vmware/govmomi/view/task_view.go new file mode 100644 index 0000000..68f62f8 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/view/task_view.go @@ -0,0 +1,125 @@ +/* +Copyright (c) 2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package view + +import ( + "context" + + "github.com/vmware/govmomi/property" + "github.com/vmware/govmomi/vim25/types" +) + +// TaskView extends ListView such that it can follow a ManagedEntity's recentTask updates. +type TaskView struct { + *ListView + + Follow bool + + Watch *types.ManagedObjectReference +} + +// CreateTaskView creates a new ListView that optionally watches for a ManagedEntity's recentTask updates. +func (m Manager) CreateTaskView(ctx context.Context, watch *types.ManagedObjectReference) (*TaskView, error) { + l, err := m.CreateListView(ctx, nil) + if err != nil { + return nil, err + } + + tv := &TaskView{ + ListView: l, + Watch: watch, + } + + return tv, nil +} + +// Collect calls function f for each Task update. +func (v TaskView) Collect(ctx context.Context, f func([]types.TaskInfo)) error { + // Using TaskHistoryCollector would be less clunky, but it isn't supported on ESX at all. + ref := v.Reference() + filter := new(property.WaitFilter).Add(ref, "Task", []string{"info"}, v.TraversalSpec()) + + if v.Watch != nil { + filter.Add(*v.Watch, v.Watch.Type, []string{"recentTask"}) + } + + pc := property.DefaultCollector(v.Client()) + + completed := make(map[string]bool) + + return property.WaitForUpdates(ctx, pc, filter, func(updates []types.ObjectUpdate) bool { + var infos []types.TaskInfo + var prune []types.ManagedObjectReference + var tasks []types.ManagedObjectReference + var reset func() + + for _, update := range updates { + for _, change := range update.ChangeSet { + if change.Name == "recentTask" { + tasks = change.Val.(types.ArrayOfManagedObjectReference).ManagedObjectReference + if len(tasks) != 0 { + reset = func() { + _ = v.Reset(ctx, tasks) + + // Remember any tasks we've reported as complete already, + // to avoid reporting multiple times when Reset is triggered. + rtasks := make(map[string]bool) + for i := range tasks { + if _, ok := completed[tasks[i].Value]; ok { + rtasks[tasks[i].Value] = true + } + } + completed = rtasks + } + } + + continue + } + + info, ok := change.Val.(types.TaskInfo) + if !ok { + continue + } + + if !completed[info.Task.Value] { + infos = append(infos, info) + } + + if v.Follow && info.CompleteTime != nil { + prune = append(prune, info.Task) + completed[info.Task.Value] = true + } + } + } + + if len(infos) != 0 { + f(infos) + } + + if reset != nil { + reset() + } else if len(prune) != 0 { + _ = v.Remove(ctx, prune) + } + + if len(tasks) != 0 && len(infos) == 0 { + return false + } + + return !v.Follow + }) +} diff --git a/vendor/github.com/vmware/govmomi/vim25/client.go b/vendor/github.com/vmware/govmomi/vim25/client.go new file mode 100644 index 0000000..b14cea8 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/client.go @@ -0,0 +1,191 @@ +/* +Copyright (c) 2015-2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package vim25 + +import ( + "context" + "encoding/json" + "fmt" + "net/http" + "path" + "strings" + + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/soap" + "github.com/vmware/govmomi/vim25/types" + "github.com/vmware/govmomi/vim25/xml" +) + +const ( + Namespace = "vim25" + Version = "7.0" + Path = "/sdk" +) + +var ( + ServiceInstance = types.ManagedObjectReference{ + Type: "ServiceInstance", + Value: "ServiceInstance", + } +) + +// Client is a tiny wrapper around the vim25/soap Client that stores session +// specific state (i.e. state that only needs to be retrieved once after the +// client has been created). This means the client can be reused after +// serialization without performing additional requests for initialization. +type Client struct { + *soap.Client + + ServiceContent types.ServiceContent + + // RoundTripper is a separate field such that the client's implementation of + // the RoundTripper interface can be wrapped by separate implementations for + // extra functionality (for example, reauthentication on session timeout). + RoundTripper soap.RoundTripper +} + +// NewClient creates and returns a new client with the ServiceContent field +// filled in. +func NewClient(ctx context.Context, rt soap.RoundTripper) (*Client, error) { + c := Client{ + RoundTripper: rt, + } + + // Set client if it happens to be a soap.Client + if sc, ok := rt.(*soap.Client); ok { + c.Client = sc + + if c.Namespace == "" { + c.Namespace = "urn:" + Namespace + } else if !strings.Contains(c.Namespace, ":") { + c.Namespace = "urn:" + c.Namespace // ensure valid URI format + } + if c.Version == "" { + c.Version = Version + } + } + + var err error + c.ServiceContent, err = methods.GetServiceContent(ctx, rt) + if err != nil { + return nil, err + } + + return &c, nil +} + +// UseServiceVersion sets soap.Client.Version to the current version of the service endpoint via /sdk/vimServiceVersions.xml +func (c *Client) UseServiceVersion(kind ...string) error { + ns := "vim" + if len(kind) != 0 { + ns = kind[0] + } + + u := c.URL() + u.Path = path.Join(Path, ns+"ServiceVersions.xml") + + res, err := c.Get(u.String()) + if err != nil { + return err + } + + if res.StatusCode != http.StatusOK { + return fmt.Errorf("http.Get(%s): %s", u.Path, err) + } + + v := struct { + Namespace *string `xml:"namespace>name"` + Version *string `xml:"namespace>version"` + }{ + &c.Namespace, + &c.Version, + } + + err = xml.NewDecoder(res.Body).Decode(&v) + _ = res.Body.Close() + if err != nil { + return fmt.Errorf("xml.Decode(%s): %s", u.Path, err) + } + + return nil +} + +// RoundTrip dispatches to the RoundTripper field. +func (c *Client) RoundTrip(ctx context.Context, req, res soap.HasFault) error { + return c.RoundTripper.RoundTrip(ctx, req, res) +} + +type marshaledClient struct { + SoapClient *soap.Client + ServiceContent types.ServiceContent +} + +func (c *Client) MarshalJSON() ([]byte, error) { + m := marshaledClient{ + SoapClient: c.Client, + ServiceContent: c.ServiceContent, + } + + return json.Marshal(m) +} + +func (c *Client) UnmarshalJSON(b []byte) error { + var m marshaledClient + + err := json.Unmarshal(b, &m) + if err != nil { + return err + } + + *c = Client{ + Client: m.SoapClient, + ServiceContent: m.ServiceContent, + RoundTripper: m.SoapClient, + } + + return nil +} + +// Valid returns whether or not the client is valid and ready for use. +// This should be called after unmarshalling the client. +func (c *Client) Valid() bool { + if c == nil { + return false + } + + if c.Client == nil { + return false + } + + // Use arbitrary pointer field in the service content. + // Doesn't matter which one, as long as it is populated by default. + if c.ServiceContent.SessionManager == nil { + return false + } + + return true +} + +// Path returns vim25.Path (see cache.Client) +func (c *Client) Path() string { + return Path +} + +// IsVC returns true if we are connected to a vCenter +func (c *Client) IsVC() bool { + return c.ServiceContent.About.ApiType == "VirtualCenter" +} diff --git a/vendor/github.com/vmware/govmomi/vim25/debug/debug.go b/vendor/github.com/vmware/govmomi/vim25/debug/debug.go new file mode 100644 index 0000000..cc87d54 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/debug/debug.go @@ -0,0 +1,62 @@ +/* +Copyright (c) 2014 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package debug + +import ( + "io" + "regexp" +) + +// Provider specified the interface types must implement to be used as a +// debugging sink. Having multiple such sink implementations allows it to be +// changed externally (for example when running tests). +type Provider interface { + NewFile(s string) io.WriteCloser + Flush() +} + +var currentProvider Provider = nil +var scrubPassword = regexp.MustCompile(`(.*)`) + +func SetProvider(p Provider) { + if currentProvider != nil { + currentProvider.Flush() + } + currentProvider = p +} + +// Enabled returns whether debugging is enabled or not. +func Enabled() bool { + return currentProvider != nil +} + +// NewFile dispatches to the current provider's NewFile function. +func NewFile(s string) io.WriteCloser { + return currentProvider.NewFile(s) +} + +// Flush dispatches to the current provider's Flush function. +func Flush() { + currentProvider.Flush() +} + +func Scrub(in []byte) []byte { + out := string(in) + out = scrubPassword.ReplaceAllString(out, `********`) + + return []byte(out) +} diff --git a/vendor/github.com/vmware/govmomi/vim25/debug/file.go b/vendor/github.com/vmware/govmomi/vim25/debug/file.go new file mode 100644 index 0000000..f04a004 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/debug/file.go @@ -0,0 +1,68 @@ +/* +Copyright (c) 2014 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package debug + +import ( + "io" + "os" + "path" +) + +// FileProvider implements a debugging provider that creates a real file for +// every call to NewFile. It maintains a list of all files that it creates, +// such that it can close them when its Flush function is called. +type FileProvider struct { + Path string + files []*os.File +} + +func (fp *FileProvider) NewFile(p string) io.WriteCloser { + f, err := os.Create(path.Join(fp.Path, p)) + if err != nil { + panic(err) + } + + fp.files = append(fp.files, f) + + return NewFileWriterCloser(f, p) +} + +func (fp *FileProvider) Flush() { + for _, f := range fp.files { + f.Close() + } +} + +type FileWriterCloser struct { + f *os.File + p string +} + +func NewFileWriterCloser(f *os.File, p string) *FileWriterCloser { + return &FileWriterCloser{ + f, + p, + } +} + +func (fwc *FileWriterCloser) Write(p []byte) (n int, err error) { + return fwc.f.Write(Scrub(p)) +} + +func (fwc *FileWriterCloser) Close() error { + return fwc.f.Close() +} diff --git a/vendor/github.com/vmware/govmomi/vim25/debug/log.go b/vendor/github.com/vmware/govmomi/vim25/debug/log.go new file mode 100644 index 0000000..8335acf --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/debug/log.go @@ -0,0 +1,49 @@ +/* +Copyright (c) 2014 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package debug + +import ( + "io" + "log" +) + +type LogWriterCloser struct { +} + +func NewLogWriterCloser() *LogWriterCloser { + return &LogWriterCloser{} +} + +func (lwc *LogWriterCloser) Write(p []byte) (n int, err error) { + log.Print(string(Scrub(p))) + return len(p), nil +} + +func (lwc *LogWriterCloser) Close() error { + return nil +} + +type LogProvider struct { +} + +func (s *LogProvider) NewFile(p string) io.WriteCloser { + log.Print(p) + return NewLogWriterCloser() +} + +func (s *LogProvider) Flush() { +} diff --git a/vendor/github.com/vmware/govmomi/vim25/doc.go b/vendor/github.com/vmware/govmomi/vim25/doc.go new file mode 100644 index 0000000..acb2c9f --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/doc.go @@ -0,0 +1,29 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Package vim25 provides a minimal client implementation to use with other +packages in the vim25 tree. The code in this package intentionally does not +take any dependendies outside the vim25 tree. + +The client implementation in this package embeds the soap.Client structure. +Additionally, it stores the value of the session's ServiceContent object. This +object stores references to a variety of subsystems, such as the root property +collector, the session manager, and the search index. The client is fully +functional after serialization and deserialization, without the need for +additional requests for initialization. +*/ +package vim25 diff --git a/vendor/github.com/vmware/govmomi/vim25/methods/methods.go b/vendor/github.com/vmware/govmomi/vim25/methods/methods.go new file mode 100644 index 0000000..8c209e6 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/methods/methods.go @@ -0,0 +1,18284 @@ +/* +Copyright (c) 2014-2018 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package methods + +import ( + "context" + + "github.com/vmware/govmomi/vim25/soap" + "github.com/vmware/govmomi/vim25/types" +) + +type AbandonHciWorkflowBody struct { + Req *types.AbandonHciWorkflow `xml:"urn:vim25 AbandonHciWorkflow,omitempty"` + Res *types.AbandonHciWorkflowResponse `xml:"AbandonHciWorkflowResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AbandonHciWorkflowBody) Fault() *soap.Fault { return b.Fault_ } + +func AbandonHciWorkflow(ctx context.Context, r soap.RoundTripper, req *types.AbandonHciWorkflow) (*types.AbandonHciWorkflowResponse, error) { + var reqBody, resBody AbandonHciWorkflowBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AbdicateDomOwnershipBody struct { + Req *types.AbdicateDomOwnership `xml:"urn:vim25 AbdicateDomOwnership,omitempty"` + Res *types.AbdicateDomOwnershipResponse `xml:"AbdicateDomOwnershipResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AbdicateDomOwnershipBody) Fault() *soap.Fault { return b.Fault_ } + +func AbdicateDomOwnership(ctx context.Context, r soap.RoundTripper, req *types.AbdicateDomOwnership) (*types.AbdicateDomOwnershipResponse, error) { + var reqBody, resBody AbdicateDomOwnershipBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AbortCustomization_TaskBody struct { + Req *types.AbortCustomization_Task `xml:"urn:vim25 AbortCustomization_Task,omitempty"` + Res *types.AbortCustomization_TaskResponse `xml:"AbortCustomization_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AbortCustomization_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func AbortCustomization_Task(ctx context.Context, r soap.RoundTripper, req *types.AbortCustomization_Task) (*types.AbortCustomization_TaskResponse, error) { + var reqBody, resBody AbortCustomization_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AcknowledgeAlarmBody struct { + Req *types.AcknowledgeAlarm `xml:"urn:vim25 AcknowledgeAlarm,omitempty"` + Res *types.AcknowledgeAlarmResponse `xml:"AcknowledgeAlarmResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AcknowledgeAlarmBody) Fault() *soap.Fault { return b.Fault_ } + +func AcknowledgeAlarm(ctx context.Context, r soap.RoundTripper, req *types.AcknowledgeAlarm) (*types.AcknowledgeAlarmResponse, error) { + var reqBody, resBody AcknowledgeAlarmBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AcquireCimServicesTicketBody struct { + Req *types.AcquireCimServicesTicket `xml:"urn:vim25 AcquireCimServicesTicket,omitempty"` + Res *types.AcquireCimServicesTicketResponse `xml:"AcquireCimServicesTicketResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AcquireCimServicesTicketBody) Fault() *soap.Fault { return b.Fault_ } + +func AcquireCimServicesTicket(ctx context.Context, r soap.RoundTripper, req *types.AcquireCimServicesTicket) (*types.AcquireCimServicesTicketResponse, error) { + var reqBody, resBody AcquireCimServicesTicketBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AcquireCloneTicketBody struct { + Req *types.AcquireCloneTicket `xml:"urn:vim25 AcquireCloneTicket,omitempty"` + Res *types.AcquireCloneTicketResponse `xml:"AcquireCloneTicketResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AcquireCloneTicketBody) Fault() *soap.Fault { return b.Fault_ } + +func AcquireCloneTicket(ctx context.Context, r soap.RoundTripper, req *types.AcquireCloneTicket) (*types.AcquireCloneTicketResponse, error) { + var reqBody, resBody AcquireCloneTicketBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AcquireCredentialsInGuestBody struct { + Req *types.AcquireCredentialsInGuest `xml:"urn:vim25 AcquireCredentialsInGuest,omitempty"` + Res *types.AcquireCredentialsInGuestResponse `xml:"AcquireCredentialsInGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AcquireCredentialsInGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func AcquireCredentialsInGuest(ctx context.Context, r soap.RoundTripper, req *types.AcquireCredentialsInGuest) (*types.AcquireCredentialsInGuestResponse, error) { + var reqBody, resBody AcquireCredentialsInGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AcquireGenericServiceTicketBody struct { + Req *types.AcquireGenericServiceTicket `xml:"urn:vim25 AcquireGenericServiceTicket,omitempty"` + Res *types.AcquireGenericServiceTicketResponse `xml:"AcquireGenericServiceTicketResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AcquireGenericServiceTicketBody) Fault() *soap.Fault { return b.Fault_ } + +func AcquireGenericServiceTicket(ctx context.Context, r soap.RoundTripper, req *types.AcquireGenericServiceTicket) (*types.AcquireGenericServiceTicketResponse, error) { + var reqBody, resBody AcquireGenericServiceTicketBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AcquireLocalTicketBody struct { + Req *types.AcquireLocalTicket `xml:"urn:vim25 AcquireLocalTicket,omitempty"` + Res *types.AcquireLocalTicketResponse `xml:"AcquireLocalTicketResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AcquireLocalTicketBody) Fault() *soap.Fault { return b.Fault_ } + +func AcquireLocalTicket(ctx context.Context, r soap.RoundTripper, req *types.AcquireLocalTicket) (*types.AcquireLocalTicketResponse, error) { + var reqBody, resBody AcquireLocalTicketBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AcquireMksTicketBody struct { + Req *types.AcquireMksTicket `xml:"urn:vim25 AcquireMksTicket,omitempty"` + Res *types.AcquireMksTicketResponse `xml:"AcquireMksTicketResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AcquireMksTicketBody) Fault() *soap.Fault { return b.Fault_ } + +func AcquireMksTicket(ctx context.Context, r soap.RoundTripper, req *types.AcquireMksTicket) (*types.AcquireMksTicketResponse, error) { + var reqBody, resBody AcquireMksTicketBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AcquireTicketBody struct { + Req *types.AcquireTicket `xml:"urn:vim25 AcquireTicket,omitempty"` + Res *types.AcquireTicketResponse `xml:"AcquireTicketResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AcquireTicketBody) Fault() *soap.Fault { return b.Fault_ } + +func AcquireTicket(ctx context.Context, r soap.RoundTripper, req *types.AcquireTicket) (*types.AcquireTicketResponse, error) { + var reqBody, resBody AcquireTicketBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AddAuthorizationRoleBody struct { + Req *types.AddAuthorizationRole `xml:"urn:vim25 AddAuthorizationRole,omitempty"` + Res *types.AddAuthorizationRoleResponse `xml:"AddAuthorizationRoleResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AddAuthorizationRoleBody) Fault() *soap.Fault { return b.Fault_ } + +func AddAuthorizationRole(ctx context.Context, r soap.RoundTripper, req *types.AddAuthorizationRole) (*types.AddAuthorizationRoleResponse, error) { + var reqBody, resBody AddAuthorizationRoleBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AddCustomFieldDefBody struct { + Req *types.AddCustomFieldDef `xml:"urn:vim25 AddCustomFieldDef,omitempty"` + Res *types.AddCustomFieldDefResponse `xml:"AddCustomFieldDefResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AddCustomFieldDefBody) Fault() *soap.Fault { return b.Fault_ } + +func AddCustomFieldDef(ctx context.Context, r soap.RoundTripper, req *types.AddCustomFieldDef) (*types.AddCustomFieldDefResponse, error) { + var reqBody, resBody AddCustomFieldDefBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AddDVPortgroup_TaskBody struct { + Req *types.AddDVPortgroup_Task `xml:"urn:vim25 AddDVPortgroup_Task,omitempty"` + Res *types.AddDVPortgroup_TaskResponse `xml:"AddDVPortgroup_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AddDVPortgroup_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func AddDVPortgroup_Task(ctx context.Context, r soap.RoundTripper, req *types.AddDVPortgroup_Task) (*types.AddDVPortgroup_TaskResponse, error) { + var reqBody, resBody AddDVPortgroup_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AddDisks_TaskBody struct { + Req *types.AddDisks_Task `xml:"urn:vim25 AddDisks_Task,omitempty"` + Res *types.AddDisks_TaskResponse `xml:"AddDisks_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AddDisks_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func AddDisks_Task(ctx context.Context, r soap.RoundTripper, req *types.AddDisks_Task) (*types.AddDisks_TaskResponse, error) { + var reqBody, resBody AddDisks_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AddFilterBody struct { + Req *types.AddFilter `xml:"urn:vim25 AddFilter,omitempty"` + Res *types.AddFilterResponse `xml:"AddFilterResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AddFilterBody) Fault() *soap.Fault { return b.Fault_ } + +func AddFilter(ctx context.Context, r soap.RoundTripper, req *types.AddFilter) (*types.AddFilterResponse, error) { + var reqBody, resBody AddFilterBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AddFilterEntitiesBody struct { + Req *types.AddFilterEntities `xml:"urn:vim25 AddFilterEntities,omitempty"` + Res *types.AddFilterEntitiesResponse `xml:"AddFilterEntitiesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AddFilterEntitiesBody) Fault() *soap.Fault { return b.Fault_ } + +func AddFilterEntities(ctx context.Context, r soap.RoundTripper, req *types.AddFilterEntities) (*types.AddFilterEntitiesResponse, error) { + var reqBody, resBody AddFilterEntitiesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AddGuestAliasBody struct { + Req *types.AddGuestAlias `xml:"urn:vim25 AddGuestAlias,omitempty"` + Res *types.AddGuestAliasResponse `xml:"AddGuestAliasResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AddGuestAliasBody) Fault() *soap.Fault { return b.Fault_ } + +func AddGuestAlias(ctx context.Context, r soap.RoundTripper, req *types.AddGuestAlias) (*types.AddGuestAliasResponse, error) { + var reqBody, resBody AddGuestAliasBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AddHost_TaskBody struct { + Req *types.AddHost_Task `xml:"urn:vim25 AddHost_Task,omitempty"` + Res *types.AddHost_TaskResponse `xml:"AddHost_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AddHost_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func AddHost_Task(ctx context.Context, r soap.RoundTripper, req *types.AddHost_Task) (*types.AddHost_TaskResponse, error) { + var reqBody, resBody AddHost_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AddInternetScsiSendTargetsBody struct { + Req *types.AddInternetScsiSendTargets `xml:"urn:vim25 AddInternetScsiSendTargets,omitempty"` + Res *types.AddInternetScsiSendTargetsResponse `xml:"AddInternetScsiSendTargetsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AddInternetScsiSendTargetsBody) Fault() *soap.Fault { return b.Fault_ } + +func AddInternetScsiSendTargets(ctx context.Context, r soap.RoundTripper, req *types.AddInternetScsiSendTargets) (*types.AddInternetScsiSendTargetsResponse, error) { + var reqBody, resBody AddInternetScsiSendTargetsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AddInternetScsiStaticTargetsBody struct { + Req *types.AddInternetScsiStaticTargets `xml:"urn:vim25 AddInternetScsiStaticTargets,omitempty"` + Res *types.AddInternetScsiStaticTargetsResponse `xml:"AddInternetScsiStaticTargetsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AddInternetScsiStaticTargetsBody) Fault() *soap.Fault { return b.Fault_ } + +func AddInternetScsiStaticTargets(ctx context.Context, r soap.RoundTripper, req *types.AddInternetScsiStaticTargets) (*types.AddInternetScsiStaticTargetsResponse, error) { + var reqBody, resBody AddInternetScsiStaticTargetsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AddKeyBody struct { + Req *types.AddKey `xml:"urn:vim25 AddKey,omitempty"` + Res *types.AddKeyResponse `xml:"AddKeyResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AddKeyBody) Fault() *soap.Fault { return b.Fault_ } + +func AddKey(ctx context.Context, r soap.RoundTripper, req *types.AddKey) (*types.AddKeyResponse, error) { + var reqBody, resBody AddKeyBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AddKeysBody struct { + Req *types.AddKeys `xml:"urn:vim25 AddKeys,omitempty"` + Res *types.AddKeysResponse `xml:"AddKeysResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AddKeysBody) Fault() *soap.Fault { return b.Fault_ } + +func AddKeys(ctx context.Context, r soap.RoundTripper, req *types.AddKeys) (*types.AddKeysResponse, error) { + var reqBody, resBody AddKeysBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AddLicenseBody struct { + Req *types.AddLicense `xml:"urn:vim25 AddLicense,omitempty"` + Res *types.AddLicenseResponse `xml:"AddLicenseResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AddLicenseBody) Fault() *soap.Fault { return b.Fault_ } + +func AddLicense(ctx context.Context, r soap.RoundTripper, req *types.AddLicense) (*types.AddLicenseResponse, error) { + var reqBody, resBody AddLicenseBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AddMonitoredEntitiesBody struct { + Req *types.AddMonitoredEntities `xml:"urn:vim25 AddMonitoredEntities,omitempty"` + Res *types.AddMonitoredEntitiesResponse `xml:"AddMonitoredEntitiesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AddMonitoredEntitiesBody) Fault() *soap.Fault { return b.Fault_ } + +func AddMonitoredEntities(ctx context.Context, r soap.RoundTripper, req *types.AddMonitoredEntities) (*types.AddMonitoredEntitiesResponse, error) { + var reqBody, resBody AddMonitoredEntitiesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AddNetworkResourcePoolBody struct { + Req *types.AddNetworkResourcePool `xml:"urn:vim25 AddNetworkResourcePool,omitempty"` + Res *types.AddNetworkResourcePoolResponse `xml:"AddNetworkResourcePoolResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AddNetworkResourcePoolBody) Fault() *soap.Fault { return b.Fault_ } + +func AddNetworkResourcePool(ctx context.Context, r soap.RoundTripper, req *types.AddNetworkResourcePool) (*types.AddNetworkResourcePoolResponse, error) { + var reqBody, resBody AddNetworkResourcePoolBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AddPortGroupBody struct { + Req *types.AddPortGroup `xml:"urn:vim25 AddPortGroup,omitempty"` + Res *types.AddPortGroupResponse `xml:"AddPortGroupResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AddPortGroupBody) Fault() *soap.Fault { return b.Fault_ } + +func AddPortGroup(ctx context.Context, r soap.RoundTripper, req *types.AddPortGroup) (*types.AddPortGroupResponse, error) { + var reqBody, resBody AddPortGroupBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AddServiceConsoleVirtualNicBody struct { + Req *types.AddServiceConsoleVirtualNic `xml:"urn:vim25 AddServiceConsoleVirtualNic,omitempty"` + Res *types.AddServiceConsoleVirtualNicResponse `xml:"AddServiceConsoleVirtualNicResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AddServiceConsoleVirtualNicBody) Fault() *soap.Fault { return b.Fault_ } + +func AddServiceConsoleVirtualNic(ctx context.Context, r soap.RoundTripper, req *types.AddServiceConsoleVirtualNic) (*types.AddServiceConsoleVirtualNicResponse, error) { + var reqBody, resBody AddServiceConsoleVirtualNicBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AddStandaloneHost_TaskBody struct { + Req *types.AddStandaloneHost_Task `xml:"urn:vim25 AddStandaloneHost_Task,omitempty"` + Res *types.AddStandaloneHost_TaskResponse `xml:"AddStandaloneHost_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AddStandaloneHost_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func AddStandaloneHost_Task(ctx context.Context, r soap.RoundTripper, req *types.AddStandaloneHost_Task) (*types.AddStandaloneHost_TaskResponse, error) { + var reqBody, resBody AddStandaloneHost_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AddVirtualNicBody struct { + Req *types.AddVirtualNic `xml:"urn:vim25 AddVirtualNic,omitempty"` + Res *types.AddVirtualNicResponse `xml:"AddVirtualNicResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AddVirtualNicBody) Fault() *soap.Fault { return b.Fault_ } + +func AddVirtualNic(ctx context.Context, r soap.RoundTripper, req *types.AddVirtualNic) (*types.AddVirtualNicResponse, error) { + var reqBody, resBody AddVirtualNicBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AddVirtualSwitchBody struct { + Req *types.AddVirtualSwitch `xml:"urn:vim25 AddVirtualSwitch,omitempty"` + Res *types.AddVirtualSwitchResponse `xml:"AddVirtualSwitchResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AddVirtualSwitchBody) Fault() *soap.Fault { return b.Fault_ } + +func AddVirtualSwitch(ctx context.Context, r soap.RoundTripper, req *types.AddVirtualSwitch) (*types.AddVirtualSwitchResponse, error) { + var reqBody, resBody AddVirtualSwitchBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AllocateIpv4AddressBody struct { + Req *types.AllocateIpv4Address `xml:"urn:vim25 AllocateIpv4Address,omitempty"` + Res *types.AllocateIpv4AddressResponse `xml:"AllocateIpv4AddressResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AllocateIpv4AddressBody) Fault() *soap.Fault { return b.Fault_ } + +func AllocateIpv4Address(ctx context.Context, r soap.RoundTripper, req *types.AllocateIpv4Address) (*types.AllocateIpv4AddressResponse, error) { + var reqBody, resBody AllocateIpv4AddressBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AllocateIpv6AddressBody struct { + Req *types.AllocateIpv6Address `xml:"urn:vim25 AllocateIpv6Address,omitempty"` + Res *types.AllocateIpv6AddressResponse `xml:"AllocateIpv6AddressResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AllocateIpv6AddressBody) Fault() *soap.Fault { return b.Fault_ } + +func AllocateIpv6Address(ctx context.Context, r soap.RoundTripper, req *types.AllocateIpv6Address) (*types.AllocateIpv6AddressResponse, error) { + var reqBody, resBody AllocateIpv6AddressBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AnswerVMBody struct { + Req *types.AnswerVM `xml:"urn:vim25 AnswerVM,omitempty"` + Res *types.AnswerVMResponse `xml:"AnswerVMResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AnswerVMBody) Fault() *soap.Fault { return b.Fault_ } + +func AnswerVM(ctx context.Context, r soap.RoundTripper, req *types.AnswerVM) (*types.AnswerVMResponse, error) { + var reqBody, resBody AnswerVMBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ApplyEntitiesConfig_TaskBody struct { + Req *types.ApplyEntitiesConfig_Task `xml:"urn:vim25 ApplyEntitiesConfig_Task,omitempty"` + Res *types.ApplyEntitiesConfig_TaskResponse `xml:"ApplyEntitiesConfig_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ApplyEntitiesConfig_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ApplyEntitiesConfig_Task(ctx context.Context, r soap.RoundTripper, req *types.ApplyEntitiesConfig_Task) (*types.ApplyEntitiesConfig_TaskResponse, error) { + var reqBody, resBody ApplyEntitiesConfig_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ApplyEvcModeVM_TaskBody struct { + Req *types.ApplyEvcModeVM_Task `xml:"urn:vim25 ApplyEvcModeVM_Task,omitempty"` + Res *types.ApplyEvcModeVM_TaskResponse `xml:"ApplyEvcModeVM_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ApplyEvcModeVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ApplyEvcModeVM_Task(ctx context.Context, r soap.RoundTripper, req *types.ApplyEvcModeVM_Task) (*types.ApplyEvcModeVM_TaskResponse, error) { + var reqBody, resBody ApplyEvcModeVM_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ApplyHostConfig_TaskBody struct { + Req *types.ApplyHostConfig_Task `xml:"urn:vim25 ApplyHostConfig_Task,omitempty"` + Res *types.ApplyHostConfig_TaskResponse `xml:"ApplyHostConfig_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ApplyHostConfig_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ApplyHostConfig_Task(ctx context.Context, r soap.RoundTripper, req *types.ApplyHostConfig_Task) (*types.ApplyHostConfig_TaskResponse, error) { + var reqBody, resBody ApplyHostConfig_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ApplyRecommendationBody struct { + Req *types.ApplyRecommendation `xml:"urn:vim25 ApplyRecommendation,omitempty"` + Res *types.ApplyRecommendationResponse `xml:"ApplyRecommendationResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ApplyRecommendationBody) Fault() *soap.Fault { return b.Fault_ } + +func ApplyRecommendation(ctx context.Context, r soap.RoundTripper, req *types.ApplyRecommendation) (*types.ApplyRecommendationResponse, error) { + var reqBody, resBody ApplyRecommendationBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ApplyStorageDrsRecommendationToPod_TaskBody struct { + Req *types.ApplyStorageDrsRecommendationToPod_Task `xml:"urn:vim25 ApplyStorageDrsRecommendationToPod_Task,omitempty"` + Res *types.ApplyStorageDrsRecommendationToPod_TaskResponse `xml:"ApplyStorageDrsRecommendationToPod_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ApplyStorageDrsRecommendationToPod_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ApplyStorageDrsRecommendationToPod_Task(ctx context.Context, r soap.RoundTripper, req *types.ApplyStorageDrsRecommendationToPod_Task) (*types.ApplyStorageDrsRecommendationToPod_TaskResponse, error) { + var reqBody, resBody ApplyStorageDrsRecommendationToPod_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ApplyStorageDrsRecommendation_TaskBody struct { + Req *types.ApplyStorageDrsRecommendation_Task `xml:"urn:vim25 ApplyStorageDrsRecommendation_Task,omitempty"` + Res *types.ApplyStorageDrsRecommendation_TaskResponse `xml:"ApplyStorageDrsRecommendation_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ApplyStorageDrsRecommendation_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ApplyStorageDrsRecommendation_Task(ctx context.Context, r soap.RoundTripper, req *types.ApplyStorageDrsRecommendation_Task) (*types.ApplyStorageDrsRecommendation_TaskResponse, error) { + var reqBody, resBody ApplyStorageDrsRecommendation_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AreAlarmActionsEnabledBody struct { + Req *types.AreAlarmActionsEnabled `xml:"urn:vim25 AreAlarmActionsEnabled,omitempty"` + Res *types.AreAlarmActionsEnabledResponse `xml:"AreAlarmActionsEnabledResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AreAlarmActionsEnabledBody) Fault() *soap.Fault { return b.Fault_ } + +func AreAlarmActionsEnabled(ctx context.Context, r soap.RoundTripper, req *types.AreAlarmActionsEnabled) (*types.AreAlarmActionsEnabledResponse, error) { + var reqBody, resBody AreAlarmActionsEnabledBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AssignUserToGroupBody struct { + Req *types.AssignUserToGroup `xml:"urn:vim25 AssignUserToGroup,omitempty"` + Res *types.AssignUserToGroupResponse `xml:"AssignUserToGroupResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AssignUserToGroupBody) Fault() *soap.Fault { return b.Fault_ } + +func AssignUserToGroup(ctx context.Context, r soap.RoundTripper, req *types.AssignUserToGroup) (*types.AssignUserToGroupResponse, error) { + var reqBody, resBody AssignUserToGroupBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AssociateProfileBody struct { + Req *types.AssociateProfile `xml:"urn:vim25 AssociateProfile,omitempty"` + Res *types.AssociateProfileResponse `xml:"AssociateProfileResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AssociateProfileBody) Fault() *soap.Fault { return b.Fault_ } + +func AssociateProfile(ctx context.Context, r soap.RoundTripper, req *types.AssociateProfile) (*types.AssociateProfileResponse, error) { + var reqBody, resBody AssociateProfileBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AttachDisk_TaskBody struct { + Req *types.AttachDisk_Task `xml:"urn:vim25 AttachDisk_Task,omitempty"` + Res *types.AttachDisk_TaskResponse `xml:"AttachDisk_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AttachDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func AttachDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.AttachDisk_Task) (*types.AttachDisk_TaskResponse, error) { + var reqBody, resBody AttachDisk_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AttachScsiLunBody struct { + Req *types.AttachScsiLun `xml:"urn:vim25 AttachScsiLun,omitempty"` + Res *types.AttachScsiLunResponse `xml:"AttachScsiLunResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AttachScsiLunBody) Fault() *soap.Fault { return b.Fault_ } + +func AttachScsiLun(ctx context.Context, r soap.RoundTripper, req *types.AttachScsiLun) (*types.AttachScsiLunResponse, error) { + var reqBody, resBody AttachScsiLunBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AttachScsiLunEx_TaskBody struct { + Req *types.AttachScsiLunEx_Task `xml:"urn:vim25 AttachScsiLunEx_Task,omitempty"` + Res *types.AttachScsiLunEx_TaskResponse `xml:"AttachScsiLunEx_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AttachScsiLunEx_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func AttachScsiLunEx_Task(ctx context.Context, r soap.RoundTripper, req *types.AttachScsiLunEx_Task) (*types.AttachScsiLunEx_TaskResponse, error) { + var reqBody, resBody AttachScsiLunEx_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AttachTagToVStorageObjectBody struct { + Req *types.AttachTagToVStorageObject `xml:"urn:vim25 AttachTagToVStorageObject,omitempty"` + Res *types.AttachTagToVStorageObjectResponse `xml:"AttachTagToVStorageObjectResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AttachTagToVStorageObjectBody) Fault() *soap.Fault { return b.Fault_ } + +func AttachTagToVStorageObject(ctx context.Context, r soap.RoundTripper, req *types.AttachTagToVStorageObject) (*types.AttachTagToVStorageObjectResponse, error) { + var reqBody, resBody AttachTagToVStorageObjectBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AttachVmfsExtentBody struct { + Req *types.AttachVmfsExtent `xml:"urn:vim25 AttachVmfsExtent,omitempty"` + Res *types.AttachVmfsExtentResponse `xml:"AttachVmfsExtentResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AttachVmfsExtentBody) Fault() *soap.Fault { return b.Fault_ } + +func AttachVmfsExtent(ctx context.Context, r soap.RoundTripper, req *types.AttachVmfsExtent) (*types.AttachVmfsExtentResponse, error) { + var reqBody, resBody AttachVmfsExtentBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AutoStartPowerOffBody struct { + Req *types.AutoStartPowerOff `xml:"urn:vim25 AutoStartPowerOff,omitempty"` + Res *types.AutoStartPowerOffResponse `xml:"AutoStartPowerOffResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AutoStartPowerOffBody) Fault() *soap.Fault { return b.Fault_ } + +func AutoStartPowerOff(ctx context.Context, r soap.RoundTripper, req *types.AutoStartPowerOff) (*types.AutoStartPowerOffResponse, error) { + var reqBody, resBody AutoStartPowerOffBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type AutoStartPowerOnBody struct { + Req *types.AutoStartPowerOn `xml:"urn:vim25 AutoStartPowerOn,omitempty"` + Res *types.AutoStartPowerOnResponse `xml:"AutoStartPowerOnResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *AutoStartPowerOnBody) Fault() *soap.Fault { return b.Fault_ } + +func AutoStartPowerOn(ctx context.Context, r soap.RoundTripper, req *types.AutoStartPowerOn) (*types.AutoStartPowerOnResponse, error) { + var reqBody, resBody AutoStartPowerOnBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type BackupFirmwareConfigurationBody struct { + Req *types.BackupFirmwareConfiguration `xml:"urn:vim25 BackupFirmwareConfiguration,omitempty"` + Res *types.BackupFirmwareConfigurationResponse `xml:"BackupFirmwareConfigurationResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *BackupFirmwareConfigurationBody) Fault() *soap.Fault { return b.Fault_ } + +func BackupFirmwareConfiguration(ctx context.Context, r soap.RoundTripper, req *types.BackupFirmwareConfiguration) (*types.BackupFirmwareConfigurationResponse, error) { + var reqBody, resBody BackupFirmwareConfigurationBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type BatchAddHostsToCluster_TaskBody struct { + Req *types.BatchAddHostsToCluster_Task `xml:"urn:vim25 BatchAddHostsToCluster_Task,omitempty"` + Res *types.BatchAddHostsToCluster_TaskResponse `xml:"BatchAddHostsToCluster_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *BatchAddHostsToCluster_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func BatchAddHostsToCluster_Task(ctx context.Context, r soap.RoundTripper, req *types.BatchAddHostsToCluster_Task) (*types.BatchAddHostsToCluster_TaskResponse, error) { + var reqBody, resBody BatchAddHostsToCluster_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type BatchAddStandaloneHosts_TaskBody struct { + Req *types.BatchAddStandaloneHosts_Task `xml:"urn:vim25 BatchAddStandaloneHosts_Task,omitempty"` + Res *types.BatchAddStandaloneHosts_TaskResponse `xml:"BatchAddStandaloneHosts_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *BatchAddStandaloneHosts_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func BatchAddStandaloneHosts_Task(ctx context.Context, r soap.RoundTripper, req *types.BatchAddStandaloneHosts_Task) (*types.BatchAddStandaloneHosts_TaskResponse, error) { + var reqBody, resBody BatchAddStandaloneHosts_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type BatchQueryConnectInfoBody struct { + Req *types.BatchQueryConnectInfo `xml:"urn:vim25 BatchQueryConnectInfo,omitempty"` + Res *types.BatchQueryConnectInfoResponse `xml:"BatchQueryConnectInfoResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *BatchQueryConnectInfoBody) Fault() *soap.Fault { return b.Fault_ } + +func BatchQueryConnectInfo(ctx context.Context, r soap.RoundTripper, req *types.BatchQueryConnectInfo) (*types.BatchQueryConnectInfoResponse, error) { + var reqBody, resBody BatchQueryConnectInfoBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type BindVnicBody struct { + Req *types.BindVnic `xml:"urn:vim25 BindVnic,omitempty"` + Res *types.BindVnicResponse `xml:"BindVnicResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *BindVnicBody) Fault() *soap.Fault { return b.Fault_ } + +func BindVnic(ctx context.Context, r soap.RoundTripper, req *types.BindVnic) (*types.BindVnicResponse, error) { + var reqBody, resBody BindVnicBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type BrowseDiagnosticLogBody struct { + Req *types.BrowseDiagnosticLog `xml:"urn:vim25 BrowseDiagnosticLog,omitempty"` + Res *types.BrowseDiagnosticLogResponse `xml:"BrowseDiagnosticLogResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *BrowseDiagnosticLogBody) Fault() *soap.Fault { return b.Fault_ } + +func BrowseDiagnosticLog(ctx context.Context, r soap.RoundTripper, req *types.BrowseDiagnosticLog) (*types.BrowseDiagnosticLogResponse, error) { + var reqBody, resBody BrowseDiagnosticLogBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CanProvisionObjectsBody struct { + Req *types.CanProvisionObjects `xml:"urn:vim25 CanProvisionObjects,omitempty"` + Res *types.CanProvisionObjectsResponse `xml:"CanProvisionObjectsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CanProvisionObjectsBody) Fault() *soap.Fault { return b.Fault_ } + +func CanProvisionObjects(ctx context.Context, r soap.RoundTripper, req *types.CanProvisionObjects) (*types.CanProvisionObjectsResponse, error) { + var reqBody, resBody CanProvisionObjectsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CancelRecommendationBody struct { + Req *types.CancelRecommendation `xml:"urn:vim25 CancelRecommendation,omitempty"` + Res *types.CancelRecommendationResponse `xml:"CancelRecommendationResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CancelRecommendationBody) Fault() *soap.Fault { return b.Fault_ } + +func CancelRecommendation(ctx context.Context, r soap.RoundTripper, req *types.CancelRecommendation) (*types.CancelRecommendationResponse, error) { + var reqBody, resBody CancelRecommendationBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CancelRetrievePropertiesExBody struct { + Req *types.CancelRetrievePropertiesEx `xml:"urn:vim25 CancelRetrievePropertiesEx,omitempty"` + Res *types.CancelRetrievePropertiesExResponse `xml:"CancelRetrievePropertiesExResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CancelRetrievePropertiesExBody) Fault() *soap.Fault { return b.Fault_ } + +func CancelRetrievePropertiesEx(ctx context.Context, r soap.RoundTripper, req *types.CancelRetrievePropertiesEx) (*types.CancelRetrievePropertiesExResponse, error) { + var reqBody, resBody CancelRetrievePropertiesExBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CancelStorageDrsRecommendationBody struct { + Req *types.CancelStorageDrsRecommendation `xml:"urn:vim25 CancelStorageDrsRecommendation,omitempty"` + Res *types.CancelStorageDrsRecommendationResponse `xml:"CancelStorageDrsRecommendationResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CancelStorageDrsRecommendationBody) Fault() *soap.Fault { return b.Fault_ } + +func CancelStorageDrsRecommendation(ctx context.Context, r soap.RoundTripper, req *types.CancelStorageDrsRecommendation) (*types.CancelStorageDrsRecommendationResponse, error) { + var reqBody, resBody CancelStorageDrsRecommendationBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CancelTaskBody struct { + Req *types.CancelTask `xml:"urn:vim25 CancelTask,omitempty"` + Res *types.CancelTaskResponse `xml:"CancelTaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CancelTaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CancelTask(ctx context.Context, r soap.RoundTripper, req *types.CancelTask) (*types.CancelTaskResponse, error) { + var reqBody, resBody CancelTaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CancelWaitForUpdatesBody struct { + Req *types.CancelWaitForUpdates `xml:"urn:vim25 CancelWaitForUpdates,omitempty"` + Res *types.CancelWaitForUpdatesResponse `xml:"CancelWaitForUpdatesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CancelWaitForUpdatesBody) Fault() *soap.Fault { return b.Fault_ } + +func CancelWaitForUpdates(ctx context.Context, r soap.RoundTripper, req *types.CancelWaitForUpdates) (*types.CancelWaitForUpdatesResponse, error) { + var reqBody, resBody CancelWaitForUpdatesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CertMgrRefreshCACertificatesAndCRLs_TaskBody struct { + Req *types.CertMgrRefreshCACertificatesAndCRLs_Task `xml:"urn:vim25 CertMgrRefreshCACertificatesAndCRLs_Task,omitempty"` + Res *types.CertMgrRefreshCACertificatesAndCRLs_TaskResponse `xml:"CertMgrRefreshCACertificatesAndCRLs_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CertMgrRefreshCACertificatesAndCRLs_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CertMgrRefreshCACertificatesAndCRLs_Task(ctx context.Context, r soap.RoundTripper, req *types.CertMgrRefreshCACertificatesAndCRLs_Task) (*types.CertMgrRefreshCACertificatesAndCRLs_TaskResponse, error) { + var reqBody, resBody CertMgrRefreshCACertificatesAndCRLs_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CertMgrRefreshCertificates_TaskBody struct { + Req *types.CertMgrRefreshCertificates_Task `xml:"urn:vim25 CertMgrRefreshCertificates_Task,omitempty"` + Res *types.CertMgrRefreshCertificates_TaskResponse `xml:"CertMgrRefreshCertificates_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CertMgrRefreshCertificates_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CertMgrRefreshCertificates_Task(ctx context.Context, r soap.RoundTripper, req *types.CertMgrRefreshCertificates_Task) (*types.CertMgrRefreshCertificates_TaskResponse, error) { + var reqBody, resBody CertMgrRefreshCertificates_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CertMgrRevokeCertificates_TaskBody struct { + Req *types.CertMgrRevokeCertificates_Task `xml:"urn:vim25 CertMgrRevokeCertificates_Task,omitempty"` + Res *types.CertMgrRevokeCertificates_TaskResponse `xml:"CertMgrRevokeCertificates_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CertMgrRevokeCertificates_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CertMgrRevokeCertificates_Task(ctx context.Context, r soap.RoundTripper, req *types.CertMgrRevokeCertificates_Task) (*types.CertMgrRevokeCertificates_TaskResponse, error) { + var reqBody, resBody CertMgrRevokeCertificates_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ChangeAccessModeBody struct { + Req *types.ChangeAccessMode `xml:"urn:vim25 ChangeAccessMode,omitempty"` + Res *types.ChangeAccessModeResponse `xml:"ChangeAccessModeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ChangeAccessModeBody) Fault() *soap.Fault { return b.Fault_ } + +func ChangeAccessMode(ctx context.Context, r soap.RoundTripper, req *types.ChangeAccessMode) (*types.ChangeAccessModeResponse, error) { + var reqBody, resBody ChangeAccessModeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ChangeFileAttributesInGuestBody struct { + Req *types.ChangeFileAttributesInGuest `xml:"urn:vim25 ChangeFileAttributesInGuest,omitempty"` + Res *types.ChangeFileAttributesInGuestResponse `xml:"ChangeFileAttributesInGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ChangeFileAttributesInGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func ChangeFileAttributesInGuest(ctx context.Context, r soap.RoundTripper, req *types.ChangeFileAttributesInGuest) (*types.ChangeFileAttributesInGuestResponse, error) { + var reqBody, resBody ChangeFileAttributesInGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ChangeKey_TaskBody struct { + Req *types.ChangeKey_Task `xml:"urn:vim25 ChangeKey_Task,omitempty"` + Res *types.ChangeKey_TaskResponse `xml:"ChangeKey_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ChangeKey_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ChangeKey_Task(ctx context.Context, r soap.RoundTripper, req *types.ChangeKey_Task) (*types.ChangeKey_TaskResponse, error) { + var reqBody, resBody ChangeKey_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ChangeLockdownModeBody struct { + Req *types.ChangeLockdownMode `xml:"urn:vim25 ChangeLockdownMode,omitempty"` + Res *types.ChangeLockdownModeResponse `xml:"ChangeLockdownModeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ChangeLockdownModeBody) Fault() *soap.Fault { return b.Fault_ } + +func ChangeLockdownMode(ctx context.Context, r soap.RoundTripper, req *types.ChangeLockdownMode) (*types.ChangeLockdownModeResponse, error) { + var reqBody, resBody ChangeLockdownModeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ChangeNFSUserPasswordBody struct { + Req *types.ChangeNFSUserPassword `xml:"urn:vim25 ChangeNFSUserPassword,omitempty"` + Res *types.ChangeNFSUserPasswordResponse `xml:"ChangeNFSUserPasswordResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ChangeNFSUserPasswordBody) Fault() *soap.Fault { return b.Fault_ } + +func ChangeNFSUserPassword(ctx context.Context, r soap.RoundTripper, req *types.ChangeNFSUserPassword) (*types.ChangeNFSUserPasswordResponse, error) { + var reqBody, resBody ChangeNFSUserPasswordBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ChangeOwnerBody struct { + Req *types.ChangeOwner `xml:"urn:vim25 ChangeOwner,omitempty"` + Res *types.ChangeOwnerResponse `xml:"ChangeOwnerResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ChangeOwnerBody) Fault() *soap.Fault { return b.Fault_ } + +func ChangeOwner(ctx context.Context, r soap.RoundTripper, req *types.ChangeOwner) (*types.ChangeOwnerResponse, error) { + var reqBody, resBody ChangeOwnerBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ChangePasswordBody struct { + Req *types.ChangePassword `xml:"urn:vim25 ChangePassword,omitempty"` + Res *types.ChangePasswordResponse `xml:"ChangePasswordResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ChangePasswordBody) Fault() *soap.Fault { return b.Fault_ } + +func ChangePassword(ctx context.Context, r soap.RoundTripper, req *types.ChangePassword) (*types.ChangePasswordResponse, error) { + var reqBody, resBody ChangePasswordBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CheckAddHostEvc_TaskBody struct { + Req *types.CheckAddHostEvc_Task `xml:"urn:vim25 CheckAddHostEvc_Task,omitempty"` + Res *types.CheckAddHostEvc_TaskResponse `xml:"CheckAddHostEvc_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CheckAddHostEvc_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CheckAddHostEvc_Task(ctx context.Context, r soap.RoundTripper, req *types.CheckAddHostEvc_Task) (*types.CheckAddHostEvc_TaskResponse, error) { + var reqBody, resBody CheckAddHostEvc_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CheckAnswerFileStatus_TaskBody struct { + Req *types.CheckAnswerFileStatus_Task `xml:"urn:vim25 CheckAnswerFileStatus_Task,omitempty"` + Res *types.CheckAnswerFileStatus_TaskResponse `xml:"CheckAnswerFileStatus_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CheckAnswerFileStatus_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CheckAnswerFileStatus_Task(ctx context.Context, r soap.RoundTripper, req *types.CheckAnswerFileStatus_Task) (*types.CheckAnswerFileStatus_TaskResponse, error) { + var reqBody, resBody CheckAnswerFileStatus_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CheckClone_TaskBody struct { + Req *types.CheckClone_Task `xml:"urn:vim25 CheckClone_Task,omitempty"` + Res *types.CheckClone_TaskResponse `xml:"CheckClone_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CheckClone_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CheckClone_Task(ctx context.Context, r soap.RoundTripper, req *types.CheckClone_Task) (*types.CheckClone_TaskResponse, error) { + var reqBody, resBody CheckClone_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CheckCompatibility_TaskBody struct { + Req *types.CheckCompatibility_Task `xml:"urn:vim25 CheckCompatibility_Task,omitempty"` + Res *types.CheckCompatibility_TaskResponse `xml:"CheckCompatibility_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CheckCompatibility_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CheckCompatibility_Task(ctx context.Context, r soap.RoundTripper, req *types.CheckCompatibility_Task) (*types.CheckCompatibility_TaskResponse, error) { + var reqBody, resBody CheckCompatibility_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CheckCompliance_TaskBody struct { + Req *types.CheckCompliance_Task `xml:"urn:vim25 CheckCompliance_Task,omitempty"` + Res *types.CheckCompliance_TaskResponse `xml:"CheckCompliance_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CheckCompliance_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CheckCompliance_Task(ctx context.Context, r soap.RoundTripper, req *types.CheckCompliance_Task) (*types.CheckCompliance_TaskResponse, error) { + var reqBody, resBody CheckCompliance_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CheckConfigureEvcMode_TaskBody struct { + Req *types.CheckConfigureEvcMode_Task `xml:"urn:vim25 CheckConfigureEvcMode_Task,omitempty"` + Res *types.CheckConfigureEvcMode_TaskResponse `xml:"CheckConfigureEvcMode_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CheckConfigureEvcMode_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CheckConfigureEvcMode_Task(ctx context.Context, r soap.RoundTripper, req *types.CheckConfigureEvcMode_Task) (*types.CheckConfigureEvcMode_TaskResponse, error) { + var reqBody, resBody CheckConfigureEvcMode_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CheckCustomizationResourcesBody struct { + Req *types.CheckCustomizationResources `xml:"urn:vim25 CheckCustomizationResources,omitempty"` + Res *types.CheckCustomizationResourcesResponse `xml:"CheckCustomizationResourcesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CheckCustomizationResourcesBody) Fault() *soap.Fault { return b.Fault_ } + +func CheckCustomizationResources(ctx context.Context, r soap.RoundTripper, req *types.CheckCustomizationResources) (*types.CheckCustomizationResourcesResponse, error) { + var reqBody, resBody CheckCustomizationResourcesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CheckCustomizationSpecBody struct { + Req *types.CheckCustomizationSpec `xml:"urn:vim25 CheckCustomizationSpec,omitempty"` + Res *types.CheckCustomizationSpecResponse `xml:"CheckCustomizationSpecResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CheckCustomizationSpecBody) Fault() *soap.Fault { return b.Fault_ } + +func CheckCustomizationSpec(ctx context.Context, r soap.RoundTripper, req *types.CheckCustomizationSpec) (*types.CheckCustomizationSpecResponse, error) { + var reqBody, resBody CheckCustomizationSpecBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CheckForUpdatesBody struct { + Req *types.CheckForUpdates `xml:"urn:vim25 CheckForUpdates,omitempty"` + Res *types.CheckForUpdatesResponse `xml:"CheckForUpdatesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CheckForUpdatesBody) Fault() *soap.Fault { return b.Fault_ } + +func CheckForUpdates(ctx context.Context, r soap.RoundTripper, req *types.CheckForUpdates) (*types.CheckForUpdatesResponse, error) { + var reqBody, resBody CheckForUpdatesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CheckHostPatch_TaskBody struct { + Req *types.CheckHostPatch_Task `xml:"urn:vim25 CheckHostPatch_Task,omitempty"` + Res *types.CheckHostPatch_TaskResponse `xml:"CheckHostPatch_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CheckHostPatch_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CheckHostPatch_Task(ctx context.Context, r soap.RoundTripper, req *types.CheckHostPatch_Task) (*types.CheckHostPatch_TaskResponse, error) { + var reqBody, resBody CheckHostPatch_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CheckInstantClone_TaskBody struct { + Req *types.CheckInstantClone_Task `xml:"urn:vim25 CheckInstantClone_Task,omitempty"` + Res *types.CheckInstantClone_TaskResponse `xml:"CheckInstantClone_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CheckInstantClone_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CheckInstantClone_Task(ctx context.Context, r soap.RoundTripper, req *types.CheckInstantClone_Task) (*types.CheckInstantClone_TaskResponse, error) { + var reqBody, resBody CheckInstantClone_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CheckLicenseFeatureBody struct { + Req *types.CheckLicenseFeature `xml:"urn:vim25 CheckLicenseFeature,omitempty"` + Res *types.CheckLicenseFeatureResponse `xml:"CheckLicenseFeatureResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CheckLicenseFeatureBody) Fault() *soap.Fault { return b.Fault_ } + +func CheckLicenseFeature(ctx context.Context, r soap.RoundTripper, req *types.CheckLicenseFeature) (*types.CheckLicenseFeatureResponse, error) { + var reqBody, resBody CheckLicenseFeatureBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CheckMigrate_TaskBody struct { + Req *types.CheckMigrate_Task `xml:"urn:vim25 CheckMigrate_Task,omitempty"` + Res *types.CheckMigrate_TaskResponse `xml:"CheckMigrate_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CheckMigrate_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CheckMigrate_Task(ctx context.Context, r soap.RoundTripper, req *types.CheckMigrate_Task) (*types.CheckMigrate_TaskResponse, error) { + var reqBody, resBody CheckMigrate_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CheckPowerOn_TaskBody struct { + Req *types.CheckPowerOn_Task `xml:"urn:vim25 CheckPowerOn_Task,omitempty"` + Res *types.CheckPowerOn_TaskResponse `xml:"CheckPowerOn_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CheckPowerOn_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CheckPowerOn_Task(ctx context.Context, r soap.RoundTripper, req *types.CheckPowerOn_Task) (*types.CheckPowerOn_TaskResponse, error) { + var reqBody, resBody CheckPowerOn_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CheckProfileCompliance_TaskBody struct { + Req *types.CheckProfileCompliance_Task `xml:"urn:vim25 CheckProfileCompliance_Task,omitempty"` + Res *types.CheckProfileCompliance_TaskResponse `xml:"CheckProfileCompliance_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CheckProfileCompliance_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CheckProfileCompliance_Task(ctx context.Context, r soap.RoundTripper, req *types.CheckProfileCompliance_Task) (*types.CheckProfileCompliance_TaskResponse, error) { + var reqBody, resBody CheckProfileCompliance_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CheckRelocate_TaskBody struct { + Req *types.CheckRelocate_Task `xml:"urn:vim25 CheckRelocate_Task,omitempty"` + Res *types.CheckRelocate_TaskResponse `xml:"CheckRelocate_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CheckRelocate_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CheckRelocate_Task(ctx context.Context, r soap.RoundTripper, req *types.CheckRelocate_Task) (*types.CheckRelocate_TaskResponse, error) { + var reqBody, resBody CheckRelocate_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CheckVmConfig_TaskBody struct { + Req *types.CheckVmConfig_Task `xml:"urn:vim25 CheckVmConfig_Task,omitempty"` + Res *types.CheckVmConfig_TaskResponse `xml:"CheckVmConfig_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CheckVmConfig_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CheckVmConfig_Task(ctx context.Context, r soap.RoundTripper, req *types.CheckVmConfig_Task) (*types.CheckVmConfig_TaskResponse, error) { + var reqBody, resBody CheckVmConfig_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ClearComplianceStatusBody struct { + Req *types.ClearComplianceStatus `xml:"urn:vim25 ClearComplianceStatus,omitempty"` + Res *types.ClearComplianceStatusResponse `xml:"ClearComplianceStatusResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ClearComplianceStatusBody) Fault() *soap.Fault { return b.Fault_ } + +func ClearComplianceStatus(ctx context.Context, r soap.RoundTripper, req *types.ClearComplianceStatus) (*types.ClearComplianceStatusResponse, error) { + var reqBody, resBody ClearComplianceStatusBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ClearNFSUserBody struct { + Req *types.ClearNFSUser `xml:"urn:vim25 ClearNFSUser,omitempty"` + Res *types.ClearNFSUserResponse `xml:"ClearNFSUserResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ClearNFSUserBody) Fault() *soap.Fault { return b.Fault_ } + +func ClearNFSUser(ctx context.Context, r soap.RoundTripper, req *types.ClearNFSUser) (*types.ClearNFSUserResponse, error) { + var reqBody, resBody ClearNFSUserBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ClearSystemEventLogBody struct { + Req *types.ClearSystemEventLog `xml:"urn:vim25 ClearSystemEventLog,omitempty"` + Res *types.ClearSystemEventLogResponse `xml:"ClearSystemEventLogResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ClearSystemEventLogBody) Fault() *soap.Fault { return b.Fault_ } + +func ClearSystemEventLog(ctx context.Context, r soap.RoundTripper, req *types.ClearSystemEventLog) (*types.ClearSystemEventLogResponse, error) { + var reqBody, resBody ClearSystemEventLogBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ClearTriggeredAlarmsBody struct { + Req *types.ClearTriggeredAlarms `xml:"urn:vim25 ClearTriggeredAlarms,omitempty"` + Res *types.ClearTriggeredAlarmsResponse `xml:"ClearTriggeredAlarmsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ClearTriggeredAlarmsBody) Fault() *soap.Fault { return b.Fault_ } + +func ClearTriggeredAlarms(ctx context.Context, r soap.RoundTripper, req *types.ClearTriggeredAlarms) (*types.ClearTriggeredAlarmsResponse, error) { + var reqBody, resBody ClearTriggeredAlarmsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ClearVStorageObjectControlFlagsBody struct { + Req *types.ClearVStorageObjectControlFlags `xml:"urn:vim25 ClearVStorageObjectControlFlags,omitempty"` + Res *types.ClearVStorageObjectControlFlagsResponse `xml:"ClearVStorageObjectControlFlagsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ClearVStorageObjectControlFlagsBody) Fault() *soap.Fault { return b.Fault_ } + +func ClearVStorageObjectControlFlags(ctx context.Context, r soap.RoundTripper, req *types.ClearVStorageObjectControlFlags) (*types.ClearVStorageObjectControlFlagsResponse, error) { + var reqBody, resBody ClearVStorageObjectControlFlagsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CloneSessionBody struct { + Req *types.CloneSession `xml:"urn:vim25 CloneSession,omitempty"` + Res *types.CloneSessionResponse `xml:"CloneSessionResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CloneSessionBody) Fault() *soap.Fault { return b.Fault_ } + +func CloneSession(ctx context.Context, r soap.RoundTripper, req *types.CloneSession) (*types.CloneSessionResponse, error) { + var reqBody, resBody CloneSessionBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CloneVApp_TaskBody struct { + Req *types.CloneVApp_Task `xml:"urn:vim25 CloneVApp_Task,omitempty"` + Res *types.CloneVApp_TaskResponse `xml:"CloneVApp_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CloneVApp_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CloneVApp_Task(ctx context.Context, r soap.RoundTripper, req *types.CloneVApp_Task) (*types.CloneVApp_TaskResponse, error) { + var reqBody, resBody CloneVApp_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CloneVM_TaskBody struct { + Req *types.CloneVM_Task `xml:"urn:vim25 CloneVM_Task,omitempty"` + Res *types.CloneVM_TaskResponse `xml:"CloneVM_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CloneVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CloneVM_Task(ctx context.Context, r soap.RoundTripper, req *types.CloneVM_Task) (*types.CloneVM_TaskResponse, error) { + var reqBody, resBody CloneVM_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CloneVStorageObject_TaskBody struct { + Req *types.CloneVStorageObject_Task `xml:"urn:vim25 CloneVStorageObject_Task,omitempty"` + Res *types.CloneVStorageObject_TaskResponse `xml:"CloneVStorageObject_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CloneVStorageObject_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CloneVStorageObject_Task(ctx context.Context, r soap.RoundTripper, req *types.CloneVStorageObject_Task) (*types.CloneVStorageObject_TaskResponse, error) { + var reqBody, resBody CloneVStorageObject_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CloseInventoryViewFolderBody struct { + Req *types.CloseInventoryViewFolder `xml:"urn:vim25 CloseInventoryViewFolder,omitempty"` + Res *types.CloseInventoryViewFolderResponse `xml:"CloseInventoryViewFolderResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CloseInventoryViewFolderBody) Fault() *soap.Fault { return b.Fault_ } + +func CloseInventoryViewFolder(ctx context.Context, r soap.RoundTripper, req *types.CloseInventoryViewFolder) (*types.CloseInventoryViewFolderResponse, error) { + var reqBody, resBody CloseInventoryViewFolderBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ClusterEnterMaintenanceModeBody struct { + Req *types.ClusterEnterMaintenanceMode `xml:"urn:vim25 ClusterEnterMaintenanceMode,omitempty"` + Res *types.ClusterEnterMaintenanceModeResponse `xml:"ClusterEnterMaintenanceModeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ClusterEnterMaintenanceModeBody) Fault() *soap.Fault { return b.Fault_ } + +func ClusterEnterMaintenanceMode(ctx context.Context, r soap.RoundTripper, req *types.ClusterEnterMaintenanceMode) (*types.ClusterEnterMaintenanceModeResponse, error) { + var reqBody, resBody ClusterEnterMaintenanceModeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CompositeHostProfile_TaskBody struct { + Req *types.CompositeHostProfile_Task `xml:"urn:vim25 CompositeHostProfile_Task,omitempty"` + Res *types.CompositeHostProfile_TaskResponse `xml:"CompositeHostProfile_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CompositeHostProfile_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CompositeHostProfile_Task(ctx context.Context, r soap.RoundTripper, req *types.CompositeHostProfile_Task) (*types.CompositeHostProfile_TaskResponse, error) { + var reqBody, resBody CompositeHostProfile_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ComputeDiskPartitionInfoBody struct { + Req *types.ComputeDiskPartitionInfo `xml:"urn:vim25 ComputeDiskPartitionInfo,omitempty"` + Res *types.ComputeDiskPartitionInfoResponse `xml:"ComputeDiskPartitionInfoResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ComputeDiskPartitionInfoBody) Fault() *soap.Fault { return b.Fault_ } + +func ComputeDiskPartitionInfo(ctx context.Context, r soap.RoundTripper, req *types.ComputeDiskPartitionInfo) (*types.ComputeDiskPartitionInfoResponse, error) { + var reqBody, resBody ComputeDiskPartitionInfoBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ComputeDiskPartitionInfoForResizeBody struct { + Req *types.ComputeDiskPartitionInfoForResize `xml:"urn:vim25 ComputeDiskPartitionInfoForResize,omitempty"` + Res *types.ComputeDiskPartitionInfoForResizeResponse `xml:"ComputeDiskPartitionInfoForResizeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ComputeDiskPartitionInfoForResizeBody) Fault() *soap.Fault { return b.Fault_ } + +func ComputeDiskPartitionInfoForResize(ctx context.Context, r soap.RoundTripper, req *types.ComputeDiskPartitionInfoForResize) (*types.ComputeDiskPartitionInfoForResizeResponse, error) { + var reqBody, resBody ComputeDiskPartitionInfoForResizeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ConfigureCryptoKeyBody struct { + Req *types.ConfigureCryptoKey `xml:"urn:vim25 ConfigureCryptoKey,omitempty"` + Res *types.ConfigureCryptoKeyResponse `xml:"ConfigureCryptoKeyResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ConfigureCryptoKeyBody) Fault() *soap.Fault { return b.Fault_ } + +func ConfigureCryptoKey(ctx context.Context, r soap.RoundTripper, req *types.ConfigureCryptoKey) (*types.ConfigureCryptoKeyResponse, error) { + var reqBody, resBody ConfigureCryptoKeyBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ConfigureDatastoreIORM_TaskBody struct { + Req *types.ConfigureDatastoreIORM_Task `xml:"urn:vim25 ConfigureDatastoreIORM_Task,omitempty"` + Res *types.ConfigureDatastoreIORM_TaskResponse `xml:"ConfigureDatastoreIORM_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ConfigureDatastoreIORM_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ConfigureDatastoreIORM_Task(ctx context.Context, r soap.RoundTripper, req *types.ConfigureDatastoreIORM_Task) (*types.ConfigureDatastoreIORM_TaskResponse, error) { + var reqBody, resBody ConfigureDatastoreIORM_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ConfigureDatastorePrincipalBody struct { + Req *types.ConfigureDatastorePrincipal `xml:"urn:vim25 ConfigureDatastorePrincipal,omitempty"` + Res *types.ConfigureDatastorePrincipalResponse `xml:"ConfigureDatastorePrincipalResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ConfigureDatastorePrincipalBody) Fault() *soap.Fault { return b.Fault_ } + +func ConfigureDatastorePrincipal(ctx context.Context, r soap.RoundTripper, req *types.ConfigureDatastorePrincipal) (*types.ConfigureDatastorePrincipalResponse, error) { + var reqBody, resBody ConfigureDatastorePrincipalBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ConfigureEvcMode_TaskBody struct { + Req *types.ConfigureEvcMode_Task `xml:"urn:vim25 ConfigureEvcMode_Task,omitempty"` + Res *types.ConfigureEvcMode_TaskResponse `xml:"ConfigureEvcMode_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ConfigureEvcMode_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ConfigureEvcMode_Task(ctx context.Context, r soap.RoundTripper, req *types.ConfigureEvcMode_Task) (*types.ConfigureEvcMode_TaskResponse, error) { + var reqBody, resBody ConfigureEvcMode_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ConfigureHCI_TaskBody struct { + Req *types.ConfigureHCI_Task `xml:"urn:vim25 ConfigureHCI_Task,omitempty"` + Res *types.ConfigureHCI_TaskResponse `xml:"ConfigureHCI_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ConfigureHCI_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ConfigureHCI_Task(ctx context.Context, r soap.RoundTripper, req *types.ConfigureHCI_Task) (*types.ConfigureHCI_TaskResponse, error) { + var reqBody, resBody ConfigureHCI_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ConfigureHostCache_TaskBody struct { + Req *types.ConfigureHostCache_Task `xml:"urn:vim25 ConfigureHostCache_Task,omitempty"` + Res *types.ConfigureHostCache_TaskResponse `xml:"ConfigureHostCache_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ConfigureHostCache_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ConfigureHostCache_Task(ctx context.Context, r soap.RoundTripper, req *types.ConfigureHostCache_Task) (*types.ConfigureHostCache_TaskResponse, error) { + var reqBody, resBody ConfigureHostCache_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ConfigureLicenseSourceBody struct { + Req *types.ConfigureLicenseSource `xml:"urn:vim25 ConfigureLicenseSource,omitempty"` + Res *types.ConfigureLicenseSourceResponse `xml:"ConfigureLicenseSourceResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ConfigureLicenseSourceBody) Fault() *soap.Fault { return b.Fault_ } + +func ConfigureLicenseSource(ctx context.Context, r soap.RoundTripper, req *types.ConfigureLicenseSource) (*types.ConfigureLicenseSourceResponse, error) { + var reqBody, resBody ConfigureLicenseSourceBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ConfigurePowerPolicyBody struct { + Req *types.ConfigurePowerPolicy `xml:"urn:vim25 ConfigurePowerPolicy,omitempty"` + Res *types.ConfigurePowerPolicyResponse `xml:"ConfigurePowerPolicyResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ConfigurePowerPolicyBody) Fault() *soap.Fault { return b.Fault_ } + +func ConfigurePowerPolicy(ctx context.Context, r soap.RoundTripper, req *types.ConfigurePowerPolicy) (*types.ConfigurePowerPolicyResponse, error) { + var reqBody, resBody ConfigurePowerPolicyBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ConfigureStorageDrsForPod_TaskBody struct { + Req *types.ConfigureStorageDrsForPod_Task `xml:"urn:vim25 ConfigureStorageDrsForPod_Task,omitempty"` + Res *types.ConfigureStorageDrsForPod_TaskResponse `xml:"ConfigureStorageDrsForPod_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ConfigureStorageDrsForPod_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ConfigureStorageDrsForPod_Task(ctx context.Context, r soap.RoundTripper, req *types.ConfigureStorageDrsForPod_Task) (*types.ConfigureStorageDrsForPod_TaskResponse, error) { + var reqBody, resBody ConfigureStorageDrsForPod_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ConfigureVFlashResourceEx_TaskBody struct { + Req *types.ConfigureVFlashResourceEx_Task `xml:"urn:vim25 ConfigureVFlashResourceEx_Task,omitempty"` + Res *types.ConfigureVFlashResourceEx_TaskResponse `xml:"ConfigureVFlashResourceEx_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ConfigureVFlashResourceEx_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ConfigureVFlashResourceEx_Task(ctx context.Context, r soap.RoundTripper, req *types.ConfigureVFlashResourceEx_Task) (*types.ConfigureVFlashResourceEx_TaskResponse, error) { + var reqBody, resBody ConfigureVFlashResourceEx_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ConnectNvmeControllerBody struct { + Req *types.ConnectNvmeController `xml:"urn:vim25 ConnectNvmeController,omitempty"` + Res *types.ConnectNvmeControllerResponse `xml:"ConnectNvmeControllerResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ConnectNvmeControllerBody) Fault() *soap.Fault { return b.Fault_ } + +func ConnectNvmeController(ctx context.Context, r soap.RoundTripper, req *types.ConnectNvmeController) (*types.ConnectNvmeControllerResponse, error) { + var reqBody, resBody ConnectNvmeControllerBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ConsolidateVMDisks_TaskBody struct { + Req *types.ConsolidateVMDisks_Task `xml:"urn:vim25 ConsolidateVMDisks_Task,omitempty"` + Res *types.ConsolidateVMDisks_TaskResponse `xml:"ConsolidateVMDisks_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ConsolidateVMDisks_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ConsolidateVMDisks_Task(ctx context.Context, r soap.RoundTripper, req *types.ConsolidateVMDisks_Task) (*types.ConsolidateVMDisks_TaskResponse, error) { + var reqBody, resBody ConsolidateVMDisks_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ContinueRetrievePropertiesExBody struct { + Req *types.ContinueRetrievePropertiesEx `xml:"urn:vim25 ContinueRetrievePropertiesEx,omitempty"` + Res *types.ContinueRetrievePropertiesExResponse `xml:"ContinueRetrievePropertiesExResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ContinueRetrievePropertiesExBody) Fault() *soap.Fault { return b.Fault_ } + +func ContinueRetrievePropertiesEx(ctx context.Context, r soap.RoundTripper, req *types.ContinueRetrievePropertiesEx) (*types.ContinueRetrievePropertiesExResponse, error) { + var reqBody, resBody ContinueRetrievePropertiesExBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ConvertNamespacePathToUuidPathBody struct { + Req *types.ConvertNamespacePathToUuidPath `xml:"urn:vim25 ConvertNamespacePathToUuidPath,omitempty"` + Res *types.ConvertNamespacePathToUuidPathResponse `xml:"ConvertNamespacePathToUuidPathResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ConvertNamespacePathToUuidPathBody) Fault() *soap.Fault { return b.Fault_ } + +func ConvertNamespacePathToUuidPath(ctx context.Context, r soap.RoundTripper, req *types.ConvertNamespacePathToUuidPath) (*types.ConvertNamespacePathToUuidPathResponse, error) { + var reqBody, resBody ConvertNamespacePathToUuidPathBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CopyDatastoreFile_TaskBody struct { + Req *types.CopyDatastoreFile_Task `xml:"urn:vim25 CopyDatastoreFile_Task,omitempty"` + Res *types.CopyDatastoreFile_TaskResponse `xml:"CopyDatastoreFile_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CopyDatastoreFile_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CopyDatastoreFile_Task(ctx context.Context, r soap.RoundTripper, req *types.CopyDatastoreFile_Task) (*types.CopyDatastoreFile_TaskResponse, error) { + var reqBody, resBody CopyDatastoreFile_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CopyVirtualDisk_TaskBody struct { + Req *types.CopyVirtualDisk_Task `xml:"urn:vim25 CopyVirtualDisk_Task,omitempty"` + Res *types.CopyVirtualDisk_TaskResponse `xml:"CopyVirtualDisk_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CopyVirtualDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CopyVirtualDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.CopyVirtualDisk_Task) (*types.CopyVirtualDisk_TaskResponse, error) { + var reqBody, resBody CopyVirtualDisk_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateAlarmBody struct { + Req *types.CreateAlarm `xml:"urn:vim25 CreateAlarm,omitempty"` + Res *types.CreateAlarmResponse `xml:"CreateAlarmResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateAlarmBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateAlarm(ctx context.Context, r soap.RoundTripper, req *types.CreateAlarm) (*types.CreateAlarmResponse, error) { + var reqBody, resBody CreateAlarmBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateChildVM_TaskBody struct { + Req *types.CreateChildVM_Task `xml:"urn:vim25 CreateChildVM_Task,omitempty"` + Res *types.CreateChildVM_TaskResponse `xml:"CreateChildVM_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateChildVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateChildVM_Task(ctx context.Context, r soap.RoundTripper, req *types.CreateChildVM_Task) (*types.CreateChildVM_TaskResponse, error) { + var reqBody, resBody CreateChildVM_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateClusterBody struct { + Req *types.CreateCluster `xml:"urn:vim25 CreateCluster,omitempty"` + Res *types.CreateClusterResponse `xml:"CreateClusterResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateClusterBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateCluster(ctx context.Context, r soap.RoundTripper, req *types.CreateCluster) (*types.CreateClusterResponse, error) { + var reqBody, resBody CreateClusterBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateClusterExBody struct { + Req *types.CreateClusterEx `xml:"urn:vim25 CreateClusterEx,omitempty"` + Res *types.CreateClusterExResponse `xml:"CreateClusterExResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateClusterExBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateClusterEx(ctx context.Context, r soap.RoundTripper, req *types.CreateClusterEx) (*types.CreateClusterExResponse, error) { + var reqBody, resBody CreateClusterExBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateCollectorForEventsBody struct { + Req *types.CreateCollectorForEvents `xml:"urn:vim25 CreateCollectorForEvents,omitempty"` + Res *types.CreateCollectorForEventsResponse `xml:"CreateCollectorForEventsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateCollectorForEventsBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateCollectorForEvents(ctx context.Context, r soap.RoundTripper, req *types.CreateCollectorForEvents) (*types.CreateCollectorForEventsResponse, error) { + var reqBody, resBody CreateCollectorForEventsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateCollectorForTasksBody struct { + Req *types.CreateCollectorForTasks `xml:"urn:vim25 CreateCollectorForTasks,omitempty"` + Res *types.CreateCollectorForTasksResponse `xml:"CreateCollectorForTasksResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateCollectorForTasksBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateCollectorForTasks(ctx context.Context, r soap.RoundTripper, req *types.CreateCollectorForTasks) (*types.CreateCollectorForTasksResponse, error) { + var reqBody, resBody CreateCollectorForTasksBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateContainerViewBody struct { + Req *types.CreateContainerView `xml:"urn:vim25 CreateContainerView,omitempty"` + Res *types.CreateContainerViewResponse `xml:"CreateContainerViewResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateContainerViewBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateContainerView(ctx context.Context, r soap.RoundTripper, req *types.CreateContainerView) (*types.CreateContainerViewResponse, error) { + var reqBody, resBody CreateContainerViewBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateCustomizationSpecBody struct { + Req *types.CreateCustomizationSpec `xml:"urn:vim25 CreateCustomizationSpec,omitempty"` + Res *types.CreateCustomizationSpecResponse `xml:"CreateCustomizationSpecResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateCustomizationSpecBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateCustomizationSpec(ctx context.Context, r soap.RoundTripper, req *types.CreateCustomizationSpec) (*types.CreateCustomizationSpecResponse, error) { + var reqBody, resBody CreateCustomizationSpecBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateDVPortgroup_TaskBody struct { + Req *types.CreateDVPortgroup_Task `xml:"urn:vim25 CreateDVPortgroup_Task,omitempty"` + Res *types.CreateDVPortgroup_TaskResponse `xml:"CreateDVPortgroup_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateDVPortgroup_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateDVPortgroup_Task(ctx context.Context, r soap.RoundTripper, req *types.CreateDVPortgroup_Task) (*types.CreateDVPortgroup_TaskResponse, error) { + var reqBody, resBody CreateDVPortgroup_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateDVS_TaskBody struct { + Req *types.CreateDVS_Task `xml:"urn:vim25 CreateDVS_Task,omitempty"` + Res *types.CreateDVS_TaskResponse `xml:"CreateDVS_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateDVS_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateDVS_Task(ctx context.Context, r soap.RoundTripper, req *types.CreateDVS_Task) (*types.CreateDVS_TaskResponse, error) { + var reqBody, resBody CreateDVS_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateDatacenterBody struct { + Req *types.CreateDatacenter `xml:"urn:vim25 CreateDatacenter,omitempty"` + Res *types.CreateDatacenterResponse `xml:"CreateDatacenterResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateDatacenterBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateDatacenter(ctx context.Context, r soap.RoundTripper, req *types.CreateDatacenter) (*types.CreateDatacenterResponse, error) { + var reqBody, resBody CreateDatacenterBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateDefaultProfileBody struct { + Req *types.CreateDefaultProfile `xml:"urn:vim25 CreateDefaultProfile,omitempty"` + Res *types.CreateDefaultProfileResponse `xml:"CreateDefaultProfileResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateDefaultProfileBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateDefaultProfile(ctx context.Context, r soap.RoundTripper, req *types.CreateDefaultProfile) (*types.CreateDefaultProfileResponse, error) { + var reqBody, resBody CreateDefaultProfileBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateDescriptorBody struct { + Req *types.CreateDescriptor `xml:"urn:vim25 CreateDescriptor,omitempty"` + Res *types.CreateDescriptorResponse `xml:"CreateDescriptorResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateDescriptorBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateDescriptor(ctx context.Context, r soap.RoundTripper, req *types.CreateDescriptor) (*types.CreateDescriptorResponse, error) { + var reqBody, resBody CreateDescriptorBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateDiagnosticPartitionBody struct { + Req *types.CreateDiagnosticPartition `xml:"urn:vim25 CreateDiagnosticPartition,omitempty"` + Res *types.CreateDiagnosticPartitionResponse `xml:"CreateDiagnosticPartitionResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateDiagnosticPartitionBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateDiagnosticPartition(ctx context.Context, r soap.RoundTripper, req *types.CreateDiagnosticPartition) (*types.CreateDiagnosticPartitionResponse, error) { + var reqBody, resBody CreateDiagnosticPartitionBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateDirectoryBody struct { + Req *types.CreateDirectory `xml:"urn:vim25 CreateDirectory,omitempty"` + Res *types.CreateDirectoryResponse `xml:"CreateDirectoryResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateDirectoryBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateDirectory(ctx context.Context, r soap.RoundTripper, req *types.CreateDirectory) (*types.CreateDirectoryResponse, error) { + var reqBody, resBody CreateDirectoryBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateDiskFromSnapshot_TaskBody struct { + Req *types.CreateDiskFromSnapshot_Task `xml:"urn:vim25 CreateDiskFromSnapshot_Task,omitempty"` + Res *types.CreateDiskFromSnapshot_TaskResponse `xml:"CreateDiskFromSnapshot_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateDiskFromSnapshot_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateDiskFromSnapshot_Task(ctx context.Context, r soap.RoundTripper, req *types.CreateDiskFromSnapshot_Task) (*types.CreateDiskFromSnapshot_TaskResponse, error) { + var reqBody, resBody CreateDiskFromSnapshot_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateDisk_TaskBody struct { + Req *types.CreateDisk_Task `xml:"urn:vim25 CreateDisk_Task,omitempty"` + Res *types.CreateDisk_TaskResponse `xml:"CreateDisk_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.CreateDisk_Task) (*types.CreateDisk_TaskResponse, error) { + var reqBody, resBody CreateDisk_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateFilterBody struct { + Req *types.CreateFilter `xml:"urn:vim25 CreateFilter,omitempty"` + Res *types.CreateFilterResponse `xml:"CreateFilterResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateFilterBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateFilter(ctx context.Context, r soap.RoundTripper, req *types.CreateFilter) (*types.CreateFilterResponse, error) { + var reqBody, resBody CreateFilterBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateFolderBody struct { + Req *types.CreateFolder `xml:"urn:vim25 CreateFolder,omitempty"` + Res *types.CreateFolderResponse `xml:"CreateFolderResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateFolderBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateFolder(ctx context.Context, r soap.RoundTripper, req *types.CreateFolder) (*types.CreateFolderResponse, error) { + var reqBody, resBody CreateFolderBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateGroupBody struct { + Req *types.CreateGroup `xml:"urn:vim25 CreateGroup,omitempty"` + Res *types.CreateGroupResponse `xml:"CreateGroupResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateGroupBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateGroup(ctx context.Context, r soap.RoundTripper, req *types.CreateGroup) (*types.CreateGroupResponse, error) { + var reqBody, resBody CreateGroupBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateImportSpecBody struct { + Req *types.CreateImportSpec `xml:"urn:vim25 CreateImportSpec,omitempty"` + Res *types.CreateImportSpecResponse `xml:"CreateImportSpecResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateImportSpecBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateImportSpec(ctx context.Context, r soap.RoundTripper, req *types.CreateImportSpec) (*types.CreateImportSpecResponse, error) { + var reqBody, resBody CreateImportSpecBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateInventoryViewBody struct { + Req *types.CreateInventoryView `xml:"urn:vim25 CreateInventoryView,omitempty"` + Res *types.CreateInventoryViewResponse `xml:"CreateInventoryViewResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateInventoryViewBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateInventoryView(ctx context.Context, r soap.RoundTripper, req *types.CreateInventoryView) (*types.CreateInventoryViewResponse, error) { + var reqBody, resBody CreateInventoryViewBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateIpPoolBody struct { + Req *types.CreateIpPool `xml:"urn:vim25 CreateIpPool,omitempty"` + Res *types.CreateIpPoolResponse `xml:"CreateIpPoolResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateIpPoolBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateIpPool(ctx context.Context, r soap.RoundTripper, req *types.CreateIpPool) (*types.CreateIpPoolResponse, error) { + var reqBody, resBody CreateIpPoolBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateListViewBody struct { + Req *types.CreateListView `xml:"urn:vim25 CreateListView,omitempty"` + Res *types.CreateListViewResponse `xml:"CreateListViewResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateListViewBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateListView(ctx context.Context, r soap.RoundTripper, req *types.CreateListView) (*types.CreateListViewResponse, error) { + var reqBody, resBody CreateListViewBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateListViewFromViewBody struct { + Req *types.CreateListViewFromView `xml:"urn:vim25 CreateListViewFromView,omitempty"` + Res *types.CreateListViewFromViewResponse `xml:"CreateListViewFromViewResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateListViewFromViewBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateListViewFromView(ctx context.Context, r soap.RoundTripper, req *types.CreateListViewFromView) (*types.CreateListViewFromViewResponse, error) { + var reqBody, resBody CreateListViewFromViewBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateLocalDatastoreBody struct { + Req *types.CreateLocalDatastore `xml:"urn:vim25 CreateLocalDatastore,omitempty"` + Res *types.CreateLocalDatastoreResponse `xml:"CreateLocalDatastoreResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateLocalDatastoreBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateLocalDatastore(ctx context.Context, r soap.RoundTripper, req *types.CreateLocalDatastore) (*types.CreateLocalDatastoreResponse, error) { + var reqBody, resBody CreateLocalDatastoreBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateNasDatastoreBody struct { + Req *types.CreateNasDatastore `xml:"urn:vim25 CreateNasDatastore,omitempty"` + Res *types.CreateNasDatastoreResponse `xml:"CreateNasDatastoreResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateNasDatastoreBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateNasDatastore(ctx context.Context, r soap.RoundTripper, req *types.CreateNasDatastore) (*types.CreateNasDatastoreResponse, error) { + var reqBody, resBody CreateNasDatastoreBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateNvdimmNamespace_TaskBody struct { + Req *types.CreateNvdimmNamespace_Task `xml:"urn:vim25 CreateNvdimmNamespace_Task,omitempty"` + Res *types.CreateNvdimmNamespace_TaskResponse `xml:"CreateNvdimmNamespace_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateNvdimmNamespace_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateNvdimmNamespace_Task(ctx context.Context, r soap.RoundTripper, req *types.CreateNvdimmNamespace_Task) (*types.CreateNvdimmNamespace_TaskResponse, error) { + var reqBody, resBody CreateNvdimmNamespace_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateNvdimmPMemNamespace_TaskBody struct { + Req *types.CreateNvdimmPMemNamespace_Task `xml:"urn:vim25 CreateNvdimmPMemNamespace_Task,omitempty"` + Res *types.CreateNvdimmPMemNamespace_TaskResponse `xml:"CreateNvdimmPMemNamespace_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateNvdimmPMemNamespace_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateNvdimmPMemNamespace_Task(ctx context.Context, r soap.RoundTripper, req *types.CreateNvdimmPMemNamespace_Task) (*types.CreateNvdimmPMemNamespace_TaskResponse, error) { + var reqBody, resBody CreateNvdimmPMemNamespace_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateNvmeOverRdmaAdapterBody struct { + Req *types.CreateNvmeOverRdmaAdapter `xml:"urn:vim25 CreateNvmeOverRdmaAdapter,omitempty"` + Res *types.CreateNvmeOverRdmaAdapterResponse `xml:"CreateNvmeOverRdmaAdapterResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateNvmeOverRdmaAdapterBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateNvmeOverRdmaAdapter(ctx context.Context, r soap.RoundTripper, req *types.CreateNvmeOverRdmaAdapter) (*types.CreateNvmeOverRdmaAdapterResponse, error) { + var reqBody, resBody CreateNvmeOverRdmaAdapterBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateObjectScheduledTaskBody struct { + Req *types.CreateObjectScheduledTask `xml:"urn:vim25 CreateObjectScheduledTask,omitempty"` + Res *types.CreateObjectScheduledTaskResponse `xml:"CreateObjectScheduledTaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateObjectScheduledTaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateObjectScheduledTask(ctx context.Context, r soap.RoundTripper, req *types.CreateObjectScheduledTask) (*types.CreateObjectScheduledTaskResponse, error) { + var reqBody, resBody CreateObjectScheduledTaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreatePerfIntervalBody struct { + Req *types.CreatePerfInterval `xml:"urn:vim25 CreatePerfInterval,omitempty"` + Res *types.CreatePerfIntervalResponse `xml:"CreatePerfIntervalResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreatePerfIntervalBody) Fault() *soap.Fault { return b.Fault_ } + +func CreatePerfInterval(ctx context.Context, r soap.RoundTripper, req *types.CreatePerfInterval) (*types.CreatePerfIntervalResponse, error) { + var reqBody, resBody CreatePerfIntervalBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateProfileBody struct { + Req *types.CreateProfile `xml:"urn:vim25 CreateProfile,omitempty"` + Res *types.CreateProfileResponse `xml:"CreateProfileResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateProfileBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateProfile(ctx context.Context, r soap.RoundTripper, req *types.CreateProfile) (*types.CreateProfileResponse, error) { + var reqBody, resBody CreateProfileBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreatePropertyCollectorBody struct { + Req *types.CreatePropertyCollector `xml:"urn:vim25 CreatePropertyCollector,omitempty"` + Res *types.CreatePropertyCollectorResponse `xml:"CreatePropertyCollectorResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreatePropertyCollectorBody) Fault() *soap.Fault { return b.Fault_ } + +func CreatePropertyCollector(ctx context.Context, r soap.RoundTripper, req *types.CreatePropertyCollector) (*types.CreatePropertyCollectorResponse, error) { + var reqBody, resBody CreatePropertyCollectorBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateRegistryKeyInGuestBody struct { + Req *types.CreateRegistryKeyInGuest `xml:"urn:vim25 CreateRegistryKeyInGuest,omitempty"` + Res *types.CreateRegistryKeyInGuestResponse `xml:"CreateRegistryKeyInGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateRegistryKeyInGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateRegistryKeyInGuest(ctx context.Context, r soap.RoundTripper, req *types.CreateRegistryKeyInGuest) (*types.CreateRegistryKeyInGuestResponse, error) { + var reqBody, resBody CreateRegistryKeyInGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateResourcePoolBody struct { + Req *types.CreateResourcePool `xml:"urn:vim25 CreateResourcePool,omitempty"` + Res *types.CreateResourcePoolResponse `xml:"CreateResourcePoolResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateResourcePoolBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateResourcePool(ctx context.Context, r soap.RoundTripper, req *types.CreateResourcePool) (*types.CreateResourcePoolResponse, error) { + var reqBody, resBody CreateResourcePoolBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateScheduledTaskBody struct { + Req *types.CreateScheduledTask `xml:"urn:vim25 CreateScheduledTask,omitempty"` + Res *types.CreateScheduledTaskResponse `xml:"CreateScheduledTaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateScheduledTaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateScheduledTask(ctx context.Context, r soap.RoundTripper, req *types.CreateScheduledTask) (*types.CreateScheduledTaskResponse, error) { + var reqBody, resBody CreateScheduledTaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateScreenshot_TaskBody struct { + Req *types.CreateScreenshot_Task `xml:"urn:vim25 CreateScreenshot_Task,omitempty"` + Res *types.CreateScreenshot_TaskResponse `xml:"CreateScreenshot_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateScreenshot_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateScreenshot_Task(ctx context.Context, r soap.RoundTripper, req *types.CreateScreenshot_Task) (*types.CreateScreenshot_TaskResponse, error) { + var reqBody, resBody CreateScreenshot_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateSecondaryVMEx_TaskBody struct { + Req *types.CreateSecondaryVMEx_Task `xml:"urn:vim25 CreateSecondaryVMEx_Task,omitempty"` + Res *types.CreateSecondaryVMEx_TaskResponse `xml:"CreateSecondaryVMEx_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateSecondaryVMEx_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateSecondaryVMEx_Task(ctx context.Context, r soap.RoundTripper, req *types.CreateSecondaryVMEx_Task) (*types.CreateSecondaryVMEx_TaskResponse, error) { + var reqBody, resBody CreateSecondaryVMEx_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateSecondaryVM_TaskBody struct { + Req *types.CreateSecondaryVM_Task `xml:"urn:vim25 CreateSecondaryVM_Task,omitempty"` + Res *types.CreateSecondaryVM_TaskResponse `xml:"CreateSecondaryVM_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateSecondaryVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateSecondaryVM_Task(ctx context.Context, r soap.RoundTripper, req *types.CreateSecondaryVM_Task) (*types.CreateSecondaryVM_TaskResponse, error) { + var reqBody, resBody CreateSecondaryVM_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateSnapshotEx_TaskBody struct { + Req *types.CreateSnapshotEx_Task `xml:"urn:vim25 CreateSnapshotEx_Task,omitempty"` + Res *types.CreateSnapshotEx_TaskResponse `xml:"CreateSnapshotEx_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateSnapshotEx_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateSnapshotEx_Task(ctx context.Context, r soap.RoundTripper, req *types.CreateSnapshotEx_Task) (*types.CreateSnapshotEx_TaskResponse, error) { + var reqBody, resBody CreateSnapshotEx_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateSnapshot_TaskBody struct { + Req *types.CreateSnapshot_Task `xml:"urn:vim25 CreateSnapshot_Task,omitempty"` + Res *types.CreateSnapshot_TaskResponse `xml:"CreateSnapshot_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateSnapshot_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateSnapshot_Task(ctx context.Context, r soap.RoundTripper, req *types.CreateSnapshot_Task) (*types.CreateSnapshot_TaskResponse, error) { + var reqBody, resBody CreateSnapshot_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateStoragePodBody struct { + Req *types.CreateStoragePod `xml:"urn:vim25 CreateStoragePod,omitempty"` + Res *types.CreateStoragePodResponse `xml:"CreateStoragePodResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateStoragePodBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateStoragePod(ctx context.Context, r soap.RoundTripper, req *types.CreateStoragePod) (*types.CreateStoragePodResponse, error) { + var reqBody, resBody CreateStoragePodBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateTaskBody struct { + Req *types.CreateTask `xml:"urn:vim25 CreateTask,omitempty"` + Res *types.CreateTaskResponse `xml:"CreateTaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateTaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateTask(ctx context.Context, r soap.RoundTripper, req *types.CreateTask) (*types.CreateTaskResponse, error) { + var reqBody, resBody CreateTaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateTemporaryDirectoryInGuestBody struct { + Req *types.CreateTemporaryDirectoryInGuest `xml:"urn:vim25 CreateTemporaryDirectoryInGuest,omitempty"` + Res *types.CreateTemporaryDirectoryInGuestResponse `xml:"CreateTemporaryDirectoryInGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateTemporaryDirectoryInGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateTemporaryDirectoryInGuest(ctx context.Context, r soap.RoundTripper, req *types.CreateTemporaryDirectoryInGuest) (*types.CreateTemporaryDirectoryInGuestResponse, error) { + var reqBody, resBody CreateTemporaryDirectoryInGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateTemporaryFileInGuestBody struct { + Req *types.CreateTemporaryFileInGuest `xml:"urn:vim25 CreateTemporaryFileInGuest,omitempty"` + Res *types.CreateTemporaryFileInGuestResponse `xml:"CreateTemporaryFileInGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateTemporaryFileInGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateTemporaryFileInGuest(ctx context.Context, r soap.RoundTripper, req *types.CreateTemporaryFileInGuest) (*types.CreateTemporaryFileInGuestResponse, error) { + var reqBody, resBody CreateTemporaryFileInGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateUserBody struct { + Req *types.CreateUser `xml:"urn:vim25 CreateUser,omitempty"` + Res *types.CreateUserResponse `xml:"CreateUserResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateUserBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateUser(ctx context.Context, r soap.RoundTripper, req *types.CreateUser) (*types.CreateUserResponse, error) { + var reqBody, resBody CreateUserBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateVAppBody struct { + Req *types.CreateVApp `xml:"urn:vim25 CreateVApp,omitempty"` + Res *types.CreateVAppResponse `xml:"CreateVAppResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateVAppBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateVApp(ctx context.Context, r soap.RoundTripper, req *types.CreateVApp) (*types.CreateVAppResponse, error) { + var reqBody, resBody CreateVAppBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateVM_TaskBody struct { + Req *types.CreateVM_Task `xml:"urn:vim25 CreateVM_Task,omitempty"` + Res *types.CreateVM_TaskResponse `xml:"CreateVM_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateVM_Task(ctx context.Context, r soap.RoundTripper, req *types.CreateVM_Task) (*types.CreateVM_TaskResponse, error) { + var reqBody, resBody CreateVM_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateVirtualDisk_TaskBody struct { + Req *types.CreateVirtualDisk_Task `xml:"urn:vim25 CreateVirtualDisk_Task,omitempty"` + Res *types.CreateVirtualDisk_TaskResponse `xml:"CreateVirtualDisk_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateVirtualDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateVirtualDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.CreateVirtualDisk_Task) (*types.CreateVirtualDisk_TaskResponse, error) { + var reqBody, resBody CreateVirtualDisk_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateVmfsDatastoreBody struct { + Req *types.CreateVmfsDatastore `xml:"urn:vim25 CreateVmfsDatastore,omitempty"` + Res *types.CreateVmfsDatastoreResponse `xml:"CreateVmfsDatastoreResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateVmfsDatastoreBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateVmfsDatastore(ctx context.Context, r soap.RoundTripper, req *types.CreateVmfsDatastore) (*types.CreateVmfsDatastoreResponse, error) { + var reqBody, resBody CreateVmfsDatastoreBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateVvolDatastoreBody struct { + Req *types.CreateVvolDatastore `xml:"urn:vim25 CreateVvolDatastore,omitempty"` + Res *types.CreateVvolDatastoreResponse `xml:"CreateVvolDatastoreResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateVvolDatastoreBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateVvolDatastore(ctx context.Context, r soap.RoundTripper, req *types.CreateVvolDatastore) (*types.CreateVvolDatastoreResponse, error) { + var reqBody, resBody CreateVvolDatastoreBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CryptoManagerHostDisableBody struct { + Req *types.CryptoManagerHostDisable `xml:"urn:vim25 CryptoManagerHostDisable,omitempty"` + Res *types.CryptoManagerHostDisableResponse `xml:"CryptoManagerHostDisableResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CryptoManagerHostDisableBody) Fault() *soap.Fault { return b.Fault_ } + +func CryptoManagerHostDisable(ctx context.Context, r soap.RoundTripper, req *types.CryptoManagerHostDisable) (*types.CryptoManagerHostDisableResponse, error) { + var reqBody, resBody CryptoManagerHostDisableBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CryptoManagerHostEnableBody struct { + Req *types.CryptoManagerHostEnable `xml:"urn:vim25 CryptoManagerHostEnable,omitempty"` + Res *types.CryptoManagerHostEnableResponse `xml:"CryptoManagerHostEnableResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CryptoManagerHostEnableBody) Fault() *soap.Fault { return b.Fault_ } + +func CryptoManagerHostEnable(ctx context.Context, r soap.RoundTripper, req *types.CryptoManagerHostEnable) (*types.CryptoManagerHostEnableResponse, error) { + var reqBody, resBody CryptoManagerHostEnableBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CryptoManagerHostPrepareBody struct { + Req *types.CryptoManagerHostPrepare `xml:"urn:vim25 CryptoManagerHostPrepare,omitempty"` + Res *types.CryptoManagerHostPrepareResponse `xml:"CryptoManagerHostPrepareResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CryptoManagerHostPrepareBody) Fault() *soap.Fault { return b.Fault_ } + +func CryptoManagerHostPrepare(ctx context.Context, r soap.RoundTripper, req *types.CryptoManagerHostPrepare) (*types.CryptoManagerHostPrepareResponse, error) { + var reqBody, resBody CryptoManagerHostPrepareBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CryptoUnlock_TaskBody struct { + Req *types.CryptoUnlock_Task `xml:"urn:vim25 CryptoUnlock_Task,omitempty"` + Res *types.CryptoUnlock_TaskResponse `xml:"CryptoUnlock_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CryptoUnlock_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CryptoUnlock_Task(ctx context.Context, r soap.RoundTripper, req *types.CryptoUnlock_Task) (*types.CryptoUnlock_TaskResponse, error) { + var reqBody, resBody CryptoUnlock_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CurrentTimeBody struct { + Req *types.CurrentTime `xml:"urn:vim25 CurrentTime,omitempty"` + Res *types.CurrentTimeResponse `xml:"CurrentTimeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CurrentTimeBody) Fault() *soap.Fault { return b.Fault_ } + +func CurrentTime(ctx context.Context, r soap.RoundTripper, req *types.CurrentTime) (*types.CurrentTimeResponse, error) { + var reqBody, resBody CurrentTimeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CustomizationSpecItemToXmlBody struct { + Req *types.CustomizationSpecItemToXml `xml:"urn:vim25 CustomizationSpecItemToXml,omitempty"` + Res *types.CustomizationSpecItemToXmlResponse `xml:"CustomizationSpecItemToXmlResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CustomizationSpecItemToXmlBody) Fault() *soap.Fault { return b.Fault_ } + +func CustomizationSpecItemToXml(ctx context.Context, r soap.RoundTripper, req *types.CustomizationSpecItemToXml) (*types.CustomizationSpecItemToXmlResponse, error) { + var reqBody, resBody CustomizationSpecItemToXmlBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CustomizeGuest_TaskBody struct { + Req *types.CustomizeGuest_Task `xml:"urn:vim25 CustomizeGuest_Task,omitempty"` + Res *types.CustomizeGuest_TaskResponse `xml:"CustomizeGuest_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CustomizeGuest_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CustomizeGuest_Task(ctx context.Context, r soap.RoundTripper, req *types.CustomizeGuest_Task) (*types.CustomizeGuest_TaskResponse, error) { + var reqBody, resBody CustomizeGuest_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CustomizeVM_TaskBody struct { + Req *types.CustomizeVM_Task `xml:"urn:vim25 CustomizeVM_Task,omitempty"` + Res *types.CustomizeVM_TaskResponse `xml:"CustomizeVM_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CustomizeVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CustomizeVM_Task(ctx context.Context, r soap.RoundTripper, req *types.CustomizeVM_Task) (*types.CustomizeVM_TaskResponse, error) { + var reqBody, resBody CustomizeVM_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DVPortgroupRollback_TaskBody struct { + Req *types.DVPortgroupRollback_Task `xml:"urn:vim25 DVPortgroupRollback_Task,omitempty"` + Res *types.DVPortgroupRollback_TaskResponse `xml:"DVPortgroupRollback_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DVPortgroupRollback_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func DVPortgroupRollback_Task(ctx context.Context, r soap.RoundTripper, req *types.DVPortgroupRollback_Task) (*types.DVPortgroupRollback_TaskResponse, error) { + var reqBody, resBody DVPortgroupRollback_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DVSManagerExportEntity_TaskBody struct { + Req *types.DVSManagerExportEntity_Task `xml:"urn:vim25 DVSManagerExportEntity_Task,omitempty"` + Res *types.DVSManagerExportEntity_TaskResponse `xml:"DVSManagerExportEntity_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DVSManagerExportEntity_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func DVSManagerExportEntity_Task(ctx context.Context, r soap.RoundTripper, req *types.DVSManagerExportEntity_Task) (*types.DVSManagerExportEntity_TaskResponse, error) { + var reqBody, resBody DVSManagerExportEntity_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DVSManagerImportEntity_TaskBody struct { + Req *types.DVSManagerImportEntity_Task `xml:"urn:vim25 DVSManagerImportEntity_Task,omitempty"` + Res *types.DVSManagerImportEntity_TaskResponse `xml:"DVSManagerImportEntity_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DVSManagerImportEntity_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func DVSManagerImportEntity_Task(ctx context.Context, r soap.RoundTripper, req *types.DVSManagerImportEntity_Task) (*types.DVSManagerImportEntity_TaskResponse, error) { + var reqBody, resBody DVSManagerImportEntity_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DVSManagerLookupDvPortGroupBody struct { + Req *types.DVSManagerLookupDvPortGroup `xml:"urn:vim25 DVSManagerLookupDvPortGroup,omitempty"` + Res *types.DVSManagerLookupDvPortGroupResponse `xml:"DVSManagerLookupDvPortGroupResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DVSManagerLookupDvPortGroupBody) Fault() *soap.Fault { return b.Fault_ } + +func DVSManagerLookupDvPortGroup(ctx context.Context, r soap.RoundTripper, req *types.DVSManagerLookupDvPortGroup) (*types.DVSManagerLookupDvPortGroupResponse, error) { + var reqBody, resBody DVSManagerLookupDvPortGroupBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DVSRollback_TaskBody struct { + Req *types.DVSRollback_Task `xml:"urn:vim25 DVSRollback_Task,omitempty"` + Res *types.DVSRollback_TaskResponse `xml:"DVSRollback_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DVSRollback_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func DVSRollback_Task(ctx context.Context, r soap.RoundTripper, req *types.DVSRollback_Task) (*types.DVSRollback_TaskResponse, error) { + var reqBody, resBody DVSRollback_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DatastoreEnterMaintenanceModeBody struct { + Req *types.DatastoreEnterMaintenanceMode `xml:"urn:vim25 DatastoreEnterMaintenanceMode,omitempty"` + Res *types.DatastoreEnterMaintenanceModeResponse `xml:"DatastoreEnterMaintenanceModeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DatastoreEnterMaintenanceModeBody) Fault() *soap.Fault { return b.Fault_ } + +func DatastoreEnterMaintenanceMode(ctx context.Context, r soap.RoundTripper, req *types.DatastoreEnterMaintenanceMode) (*types.DatastoreEnterMaintenanceModeResponse, error) { + var reqBody, resBody DatastoreEnterMaintenanceModeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DatastoreExitMaintenanceMode_TaskBody struct { + Req *types.DatastoreExitMaintenanceMode_Task `xml:"urn:vim25 DatastoreExitMaintenanceMode_Task,omitempty"` + Res *types.DatastoreExitMaintenanceMode_TaskResponse `xml:"DatastoreExitMaintenanceMode_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DatastoreExitMaintenanceMode_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func DatastoreExitMaintenanceMode_Task(ctx context.Context, r soap.RoundTripper, req *types.DatastoreExitMaintenanceMode_Task) (*types.DatastoreExitMaintenanceMode_TaskResponse, error) { + var reqBody, resBody DatastoreExitMaintenanceMode_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DecodeLicenseBody struct { + Req *types.DecodeLicense `xml:"urn:vim25 DecodeLicense,omitempty"` + Res *types.DecodeLicenseResponse `xml:"DecodeLicenseResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DecodeLicenseBody) Fault() *soap.Fault { return b.Fault_ } + +func DecodeLicense(ctx context.Context, r soap.RoundTripper, req *types.DecodeLicense) (*types.DecodeLicenseResponse, error) { + var reqBody, resBody DecodeLicenseBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DefragmentAllDisksBody struct { + Req *types.DefragmentAllDisks `xml:"urn:vim25 DefragmentAllDisks,omitempty"` + Res *types.DefragmentAllDisksResponse `xml:"DefragmentAllDisksResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DefragmentAllDisksBody) Fault() *soap.Fault { return b.Fault_ } + +func DefragmentAllDisks(ctx context.Context, r soap.RoundTripper, req *types.DefragmentAllDisks) (*types.DefragmentAllDisksResponse, error) { + var reqBody, resBody DefragmentAllDisksBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DefragmentVirtualDisk_TaskBody struct { + Req *types.DefragmentVirtualDisk_Task `xml:"urn:vim25 DefragmentVirtualDisk_Task,omitempty"` + Res *types.DefragmentVirtualDisk_TaskResponse `xml:"DefragmentVirtualDisk_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DefragmentVirtualDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func DefragmentVirtualDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.DefragmentVirtualDisk_Task) (*types.DefragmentVirtualDisk_TaskResponse, error) { + var reqBody, resBody DefragmentVirtualDisk_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DeleteCustomizationSpecBody struct { + Req *types.DeleteCustomizationSpec `xml:"urn:vim25 DeleteCustomizationSpec,omitempty"` + Res *types.DeleteCustomizationSpecResponse `xml:"DeleteCustomizationSpecResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DeleteCustomizationSpecBody) Fault() *soap.Fault { return b.Fault_ } + +func DeleteCustomizationSpec(ctx context.Context, r soap.RoundTripper, req *types.DeleteCustomizationSpec) (*types.DeleteCustomizationSpecResponse, error) { + var reqBody, resBody DeleteCustomizationSpecBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DeleteDatastoreFile_TaskBody struct { + Req *types.DeleteDatastoreFile_Task `xml:"urn:vim25 DeleteDatastoreFile_Task,omitempty"` + Res *types.DeleteDatastoreFile_TaskResponse `xml:"DeleteDatastoreFile_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DeleteDatastoreFile_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func DeleteDatastoreFile_Task(ctx context.Context, r soap.RoundTripper, req *types.DeleteDatastoreFile_Task) (*types.DeleteDatastoreFile_TaskResponse, error) { + var reqBody, resBody DeleteDatastoreFile_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DeleteDirectoryBody struct { + Req *types.DeleteDirectory `xml:"urn:vim25 DeleteDirectory,omitempty"` + Res *types.DeleteDirectoryResponse `xml:"DeleteDirectoryResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DeleteDirectoryBody) Fault() *soap.Fault { return b.Fault_ } + +func DeleteDirectory(ctx context.Context, r soap.RoundTripper, req *types.DeleteDirectory) (*types.DeleteDirectoryResponse, error) { + var reqBody, resBody DeleteDirectoryBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DeleteDirectoryInGuestBody struct { + Req *types.DeleteDirectoryInGuest `xml:"urn:vim25 DeleteDirectoryInGuest,omitempty"` + Res *types.DeleteDirectoryInGuestResponse `xml:"DeleteDirectoryInGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DeleteDirectoryInGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func DeleteDirectoryInGuest(ctx context.Context, r soap.RoundTripper, req *types.DeleteDirectoryInGuest) (*types.DeleteDirectoryInGuestResponse, error) { + var reqBody, resBody DeleteDirectoryInGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DeleteFileBody struct { + Req *types.DeleteFile `xml:"urn:vim25 DeleteFile,omitempty"` + Res *types.DeleteFileResponse `xml:"DeleteFileResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DeleteFileBody) Fault() *soap.Fault { return b.Fault_ } + +func DeleteFile(ctx context.Context, r soap.RoundTripper, req *types.DeleteFile) (*types.DeleteFileResponse, error) { + var reqBody, resBody DeleteFileBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DeleteFileInGuestBody struct { + Req *types.DeleteFileInGuest `xml:"urn:vim25 DeleteFileInGuest,omitempty"` + Res *types.DeleteFileInGuestResponse `xml:"DeleteFileInGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DeleteFileInGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func DeleteFileInGuest(ctx context.Context, r soap.RoundTripper, req *types.DeleteFileInGuest) (*types.DeleteFileInGuestResponse, error) { + var reqBody, resBody DeleteFileInGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DeleteHostSpecificationBody struct { + Req *types.DeleteHostSpecification `xml:"urn:vim25 DeleteHostSpecification,omitempty"` + Res *types.DeleteHostSpecificationResponse `xml:"DeleteHostSpecificationResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DeleteHostSpecificationBody) Fault() *soap.Fault { return b.Fault_ } + +func DeleteHostSpecification(ctx context.Context, r soap.RoundTripper, req *types.DeleteHostSpecification) (*types.DeleteHostSpecificationResponse, error) { + var reqBody, resBody DeleteHostSpecificationBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DeleteHostSubSpecificationBody struct { + Req *types.DeleteHostSubSpecification `xml:"urn:vim25 DeleteHostSubSpecification,omitempty"` + Res *types.DeleteHostSubSpecificationResponse `xml:"DeleteHostSubSpecificationResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DeleteHostSubSpecificationBody) Fault() *soap.Fault { return b.Fault_ } + +func DeleteHostSubSpecification(ctx context.Context, r soap.RoundTripper, req *types.DeleteHostSubSpecification) (*types.DeleteHostSubSpecificationResponse, error) { + var reqBody, resBody DeleteHostSubSpecificationBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DeleteNvdimmBlockNamespaces_TaskBody struct { + Req *types.DeleteNvdimmBlockNamespaces_Task `xml:"urn:vim25 DeleteNvdimmBlockNamespaces_Task,omitempty"` + Res *types.DeleteNvdimmBlockNamespaces_TaskResponse `xml:"DeleteNvdimmBlockNamespaces_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DeleteNvdimmBlockNamespaces_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func DeleteNvdimmBlockNamespaces_Task(ctx context.Context, r soap.RoundTripper, req *types.DeleteNvdimmBlockNamespaces_Task) (*types.DeleteNvdimmBlockNamespaces_TaskResponse, error) { + var reqBody, resBody DeleteNvdimmBlockNamespaces_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DeleteNvdimmNamespace_TaskBody struct { + Req *types.DeleteNvdimmNamespace_Task `xml:"urn:vim25 DeleteNvdimmNamespace_Task,omitempty"` + Res *types.DeleteNvdimmNamespace_TaskResponse `xml:"DeleteNvdimmNamespace_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DeleteNvdimmNamespace_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func DeleteNvdimmNamespace_Task(ctx context.Context, r soap.RoundTripper, req *types.DeleteNvdimmNamespace_Task) (*types.DeleteNvdimmNamespace_TaskResponse, error) { + var reqBody, resBody DeleteNvdimmNamespace_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DeleteRegistryKeyInGuestBody struct { + Req *types.DeleteRegistryKeyInGuest `xml:"urn:vim25 DeleteRegistryKeyInGuest,omitempty"` + Res *types.DeleteRegistryKeyInGuestResponse `xml:"DeleteRegistryKeyInGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DeleteRegistryKeyInGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func DeleteRegistryKeyInGuest(ctx context.Context, r soap.RoundTripper, req *types.DeleteRegistryKeyInGuest) (*types.DeleteRegistryKeyInGuestResponse, error) { + var reqBody, resBody DeleteRegistryKeyInGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DeleteRegistryValueInGuestBody struct { + Req *types.DeleteRegistryValueInGuest `xml:"urn:vim25 DeleteRegistryValueInGuest,omitempty"` + Res *types.DeleteRegistryValueInGuestResponse `xml:"DeleteRegistryValueInGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DeleteRegistryValueInGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func DeleteRegistryValueInGuest(ctx context.Context, r soap.RoundTripper, req *types.DeleteRegistryValueInGuest) (*types.DeleteRegistryValueInGuestResponse, error) { + var reqBody, resBody DeleteRegistryValueInGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DeleteScsiLunStateBody struct { + Req *types.DeleteScsiLunState `xml:"urn:vim25 DeleteScsiLunState,omitempty"` + Res *types.DeleteScsiLunStateResponse `xml:"DeleteScsiLunStateResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DeleteScsiLunStateBody) Fault() *soap.Fault { return b.Fault_ } + +func DeleteScsiLunState(ctx context.Context, r soap.RoundTripper, req *types.DeleteScsiLunState) (*types.DeleteScsiLunStateResponse, error) { + var reqBody, resBody DeleteScsiLunStateBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DeleteSnapshot_TaskBody struct { + Req *types.DeleteSnapshot_Task `xml:"urn:vim25 DeleteSnapshot_Task,omitempty"` + Res *types.DeleteSnapshot_TaskResponse `xml:"DeleteSnapshot_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DeleteSnapshot_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func DeleteSnapshot_Task(ctx context.Context, r soap.RoundTripper, req *types.DeleteSnapshot_Task) (*types.DeleteSnapshot_TaskResponse, error) { + var reqBody, resBody DeleteSnapshot_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DeleteVStorageObject_TaskBody struct { + Req *types.DeleteVStorageObject_Task `xml:"urn:vim25 DeleteVStorageObject_Task,omitempty"` + Res *types.DeleteVStorageObject_TaskResponse `xml:"DeleteVStorageObject_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DeleteVStorageObject_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func DeleteVStorageObject_Task(ctx context.Context, r soap.RoundTripper, req *types.DeleteVStorageObject_Task) (*types.DeleteVStorageObject_TaskResponse, error) { + var reqBody, resBody DeleteVStorageObject_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DeleteVffsVolumeStateBody struct { + Req *types.DeleteVffsVolumeState `xml:"urn:vim25 DeleteVffsVolumeState,omitempty"` + Res *types.DeleteVffsVolumeStateResponse `xml:"DeleteVffsVolumeStateResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DeleteVffsVolumeStateBody) Fault() *soap.Fault { return b.Fault_ } + +func DeleteVffsVolumeState(ctx context.Context, r soap.RoundTripper, req *types.DeleteVffsVolumeState) (*types.DeleteVffsVolumeStateResponse, error) { + var reqBody, resBody DeleteVffsVolumeStateBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DeleteVirtualDisk_TaskBody struct { + Req *types.DeleteVirtualDisk_Task `xml:"urn:vim25 DeleteVirtualDisk_Task,omitempty"` + Res *types.DeleteVirtualDisk_TaskResponse `xml:"DeleteVirtualDisk_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DeleteVirtualDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func DeleteVirtualDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.DeleteVirtualDisk_Task) (*types.DeleteVirtualDisk_TaskResponse, error) { + var reqBody, resBody DeleteVirtualDisk_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DeleteVmfsVolumeStateBody struct { + Req *types.DeleteVmfsVolumeState `xml:"urn:vim25 DeleteVmfsVolumeState,omitempty"` + Res *types.DeleteVmfsVolumeStateResponse `xml:"DeleteVmfsVolumeStateResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DeleteVmfsVolumeStateBody) Fault() *soap.Fault { return b.Fault_ } + +func DeleteVmfsVolumeState(ctx context.Context, r soap.RoundTripper, req *types.DeleteVmfsVolumeState) (*types.DeleteVmfsVolumeStateResponse, error) { + var reqBody, resBody DeleteVmfsVolumeStateBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DeleteVsanObjectsBody struct { + Req *types.DeleteVsanObjects `xml:"urn:vim25 DeleteVsanObjects,omitempty"` + Res *types.DeleteVsanObjectsResponse `xml:"DeleteVsanObjectsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DeleteVsanObjectsBody) Fault() *soap.Fault { return b.Fault_ } + +func DeleteVsanObjects(ctx context.Context, r soap.RoundTripper, req *types.DeleteVsanObjects) (*types.DeleteVsanObjectsResponse, error) { + var reqBody, resBody DeleteVsanObjectsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DeselectVnicBody struct { + Req *types.DeselectVnic `xml:"urn:vim25 DeselectVnic,omitempty"` + Res *types.DeselectVnicResponse `xml:"DeselectVnicResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DeselectVnicBody) Fault() *soap.Fault { return b.Fault_ } + +func DeselectVnic(ctx context.Context, r soap.RoundTripper, req *types.DeselectVnic) (*types.DeselectVnicResponse, error) { + var reqBody, resBody DeselectVnicBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DeselectVnicForNicTypeBody struct { + Req *types.DeselectVnicForNicType `xml:"urn:vim25 DeselectVnicForNicType,omitempty"` + Res *types.DeselectVnicForNicTypeResponse `xml:"DeselectVnicForNicTypeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DeselectVnicForNicTypeBody) Fault() *soap.Fault { return b.Fault_ } + +func DeselectVnicForNicType(ctx context.Context, r soap.RoundTripper, req *types.DeselectVnicForNicType) (*types.DeselectVnicForNicTypeResponse, error) { + var reqBody, resBody DeselectVnicForNicTypeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DestroyChildrenBody struct { + Req *types.DestroyChildren `xml:"urn:vim25 DestroyChildren,omitempty"` + Res *types.DestroyChildrenResponse `xml:"DestroyChildrenResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DestroyChildrenBody) Fault() *soap.Fault { return b.Fault_ } + +func DestroyChildren(ctx context.Context, r soap.RoundTripper, req *types.DestroyChildren) (*types.DestroyChildrenResponse, error) { + var reqBody, resBody DestroyChildrenBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DestroyCollectorBody struct { + Req *types.DestroyCollector `xml:"urn:vim25 DestroyCollector,omitempty"` + Res *types.DestroyCollectorResponse `xml:"DestroyCollectorResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DestroyCollectorBody) Fault() *soap.Fault { return b.Fault_ } + +func DestroyCollector(ctx context.Context, r soap.RoundTripper, req *types.DestroyCollector) (*types.DestroyCollectorResponse, error) { + var reqBody, resBody DestroyCollectorBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DestroyDatastoreBody struct { + Req *types.DestroyDatastore `xml:"urn:vim25 DestroyDatastore,omitempty"` + Res *types.DestroyDatastoreResponse `xml:"DestroyDatastoreResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DestroyDatastoreBody) Fault() *soap.Fault { return b.Fault_ } + +func DestroyDatastore(ctx context.Context, r soap.RoundTripper, req *types.DestroyDatastore) (*types.DestroyDatastoreResponse, error) { + var reqBody, resBody DestroyDatastoreBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DestroyIpPoolBody struct { + Req *types.DestroyIpPool `xml:"urn:vim25 DestroyIpPool,omitempty"` + Res *types.DestroyIpPoolResponse `xml:"DestroyIpPoolResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DestroyIpPoolBody) Fault() *soap.Fault { return b.Fault_ } + +func DestroyIpPool(ctx context.Context, r soap.RoundTripper, req *types.DestroyIpPool) (*types.DestroyIpPoolResponse, error) { + var reqBody, resBody DestroyIpPoolBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DestroyNetworkBody struct { + Req *types.DestroyNetwork `xml:"urn:vim25 DestroyNetwork,omitempty"` + Res *types.DestroyNetworkResponse `xml:"DestroyNetworkResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DestroyNetworkBody) Fault() *soap.Fault { return b.Fault_ } + +func DestroyNetwork(ctx context.Context, r soap.RoundTripper, req *types.DestroyNetwork) (*types.DestroyNetworkResponse, error) { + var reqBody, resBody DestroyNetworkBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DestroyProfileBody struct { + Req *types.DestroyProfile `xml:"urn:vim25 DestroyProfile,omitempty"` + Res *types.DestroyProfileResponse `xml:"DestroyProfileResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DestroyProfileBody) Fault() *soap.Fault { return b.Fault_ } + +func DestroyProfile(ctx context.Context, r soap.RoundTripper, req *types.DestroyProfile) (*types.DestroyProfileResponse, error) { + var reqBody, resBody DestroyProfileBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DestroyPropertyCollectorBody struct { + Req *types.DestroyPropertyCollector `xml:"urn:vim25 DestroyPropertyCollector,omitempty"` + Res *types.DestroyPropertyCollectorResponse `xml:"DestroyPropertyCollectorResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DestroyPropertyCollectorBody) Fault() *soap.Fault { return b.Fault_ } + +func DestroyPropertyCollector(ctx context.Context, r soap.RoundTripper, req *types.DestroyPropertyCollector) (*types.DestroyPropertyCollectorResponse, error) { + var reqBody, resBody DestroyPropertyCollectorBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DestroyPropertyFilterBody struct { + Req *types.DestroyPropertyFilter `xml:"urn:vim25 DestroyPropertyFilter,omitempty"` + Res *types.DestroyPropertyFilterResponse `xml:"DestroyPropertyFilterResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DestroyPropertyFilterBody) Fault() *soap.Fault { return b.Fault_ } + +func DestroyPropertyFilter(ctx context.Context, r soap.RoundTripper, req *types.DestroyPropertyFilter) (*types.DestroyPropertyFilterResponse, error) { + var reqBody, resBody DestroyPropertyFilterBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DestroyVffsBody struct { + Req *types.DestroyVffs `xml:"urn:vim25 DestroyVffs,omitempty"` + Res *types.DestroyVffsResponse `xml:"DestroyVffsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DestroyVffsBody) Fault() *soap.Fault { return b.Fault_ } + +func DestroyVffs(ctx context.Context, r soap.RoundTripper, req *types.DestroyVffs) (*types.DestroyVffsResponse, error) { + var reqBody, resBody DestroyVffsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DestroyViewBody struct { + Req *types.DestroyView `xml:"urn:vim25 DestroyView,omitempty"` + Res *types.DestroyViewResponse `xml:"DestroyViewResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DestroyViewBody) Fault() *soap.Fault { return b.Fault_ } + +func DestroyView(ctx context.Context, r soap.RoundTripper, req *types.DestroyView) (*types.DestroyViewResponse, error) { + var reqBody, resBody DestroyViewBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type Destroy_TaskBody struct { + Req *types.Destroy_Task `xml:"urn:vim25 Destroy_Task,omitempty"` + Res *types.Destroy_TaskResponse `xml:"Destroy_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *Destroy_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func Destroy_Task(ctx context.Context, r soap.RoundTripper, req *types.Destroy_Task) (*types.Destroy_TaskResponse, error) { + var reqBody, resBody Destroy_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DetachDisk_TaskBody struct { + Req *types.DetachDisk_Task `xml:"urn:vim25 DetachDisk_Task,omitempty"` + Res *types.DetachDisk_TaskResponse `xml:"DetachDisk_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DetachDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func DetachDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.DetachDisk_Task) (*types.DetachDisk_TaskResponse, error) { + var reqBody, resBody DetachDisk_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DetachScsiLunBody struct { + Req *types.DetachScsiLun `xml:"urn:vim25 DetachScsiLun,omitempty"` + Res *types.DetachScsiLunResponse `xml:"DetachScsiLunResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DetachScsiLunBody) Fault() *soap.Fault { return b.Fault_ } + +func DetachScsiLun(ctx context.Context, r soap.RoundTripper, req *types.DetachScsiLun) (*types.DetachScsiLunResponse, error) { + var reqBody, resBody DetachScsiLunBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DetachScsiLunEx_TaskBody struct { + Req *types.DetachScsiLunEx_Task `xml:"urn:vim25 DetachScsiLunEx_Task,omitempty"` + Res *types.DetachScsiLunEx_TaskResponse `xml:"DetachScsiLunEx_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DetachScsiLunEx_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func DetachScsiLunEx_Task(ctx context.Context, r soap.RoundTripper, req *types.DetachScsiLunEx_Task) (*types.DetachScsiLunEx_TaskResponse, error) { + var reqBody, resBody DetachScsiLunEx_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DetachTagFromVStorageObjectBody struct { + Req *types.DetachTagFromVStorageObject `xml:"urn:vim25 DetachTagFromVStorageObject,omitempty"` + Res *types.DetachTagFromVStorageObjectResponse `xml:"DetachTagFromVStorageObjectResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DetachTagFromVStorageObjectBody) Fault() *soap.Fault { return b.Fault_ } + +func DetachTagFromVStorageObject(ctx context.Context, r soap.RoundTripper, req *types.DetachTagFromVStorageObject) (*types.DetachTagFromVStorageObjectResponse, error) { + var reqBody, resBody DetachTagFromVStorageObjectBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DisableAlarmBody struct { + Req *types.DisableAlarm `xml:"urn:vim25 DisableAlarm,omitempty"` + Res *types.DisableAlarmResponse `xml:"DisableAlarmResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DisableAlarmBody) Fault() *soap.Fault { return b.Fault_ } + +func DisableAlarm(ctx context.Context, r soap.RoundTripper, req *types.DisableAlarm) (*types.DisableAlarmResponse, error) { + var reqBody, resBody DisableAlarmBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DisableClusteredVmdkSupportBody struct { + Req *types.DisableClusteredVmdkSupport `xml:"urn:vim25 DisableClusteredVmdkSupport,omitempty"` + Res *types.DisableClusteredVmdkSupportResponse `xml:"DisableClusteredVmdkSupportResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DisableClusteredVmdkSupportBody) Fault() *soap.Fault { return b.Fault_ } + +func DisableClusteredVmdkSupport(ctx context.Context, r soap.RoundTripper, req *types.DisableClusteredVmdkSupport) (*types.DisableClusteredVmdkSupportResponse, error) { + var reqBody, resBody DisableClusteredVmdkSupportBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DisableEvcMode_TaskBody struct { + Req *types.DisableEvcMode_Task `xml:"urn:vim25 DisableEvcMode_Task,omitempty"` + Res *types.DisableEvcMode_TaskResponse `xml:"DisableEvcMode_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DisableEvcMode_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func DisableEvcMode_Task(ctx context.Context, r soap.RoundTripper, req *types.DisableEvcMode_Task) (*types.DisableEvcMode_TaskResponse, error) { + var reqBody, resBody DisableEvcMode_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DisableFeatureBody struct { + Req *types.DisableFeature `xml:"urn:vim25 DisableFeature,omitempty"` + Res *types.DisableFeatureResponse `xml:"DisableFeatureResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DisableFeatureBody) Fault() *soap.Fault { return b.Fault_ } + +func DisableFeature(ctx context.Context, r soap.RoundTripper, req *types.DisableFeature) (*types.DisableFeatureResponse, error) { + var reqBody, resBody DisableFeatureBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DisableHyperThreadingBody struct { + Req *types.DisableHyperThreading `xml:"urn:vim25 DisableHyperThreading,omitempty"` + Res *types.DisableHyperThreadingResponse `xml:"DisableHyperThreadingResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DisableHyperThreadingBody) Fault() *soap.Fault { return b.Fault_ } + +func DisableHyperThreading(ctx context.Context, r soap.RoundTripper, req *types.DisableHyperThreading) (*types.DisableHyperThreadingResponse, error) { + var reqBody, resBody DisableHyperThreadingBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DisableMultipathPathBody struct { + Req *types.DisableMultipathPath `xml:"urn:vim25 DisableMultipathPath,omitempty"` + Res *types.DisableMultipathPathResponse `xml:"DisableMultipathPathResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DisableMultipathPathBody) Fault() *soap.Fault { return b.Fault_ } + +func DisableMultipathPath(ctx context.Context, r soap.RoundTripper, req *types.DisableMultipathPath) (*types.DisableMultipathPathResponse, error) { + var reqBody, resBody DisableMultipathPathBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DisableRulesetBody struct { + Req *types.DisableRuleset `xml:"urn:vim25 DisableRuleset,omitempty"` + Res *types.DisableRulesetResponse `xml:"DisableRulesetResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DisableRulesetBody) Fault() *soap.Fault { return b.Fault_ } + +func DisableRuleset(ctx context.Context, r soap.RoundTripper, req *types.DisableRuleset) (*types.DisableRulesetResponse, error) { + var reqBody, resBody DisableRulesetBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DisableSecondaryVM_TaskBody struct { + Req *types.DisableSecondaryVM_Task `xml:"urn:vim25 DisableSecondaryVM_Task,omitempty"` + Res *types.DisableSecondaryVM_TaskResponse `xml:"DisableSecondaryVM_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DisableSecondaryVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func DisableSecondaryVM_Task(ctx context.Context, r soap.RoundTripper, req *types.DisableSecondaryVM_Task) (*types.DisableSecondaryVM_TaskResponse, error) { + var reqBody, resBody DisableSecondaryVM_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DisableSmartCardAuthenticationBody struct { + Req *types.DisableSmartCardAuthentication `xml:"urn:vim25 DisableSmartCardAuthentication,omitempty"` + Res *types.DisableSmartCardAuthenticationResponse `xml:"DisableSmartCardAuthenticationResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DisableSmartCardAuthenticationBody) Fault() *soap.Fault { return b.Fault_ } + +func DisableSmartCardAuthentication(ctx context.Context, r soap.RoundTripper, req *types.DisableSmartCardAuthentication) (*types.DisableSmartCardAuthenticationResponse, error) { + var reqBody, resBody DisableSmartCardAuthenticationBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DisconnectHost_TaskBody struct { + Req *types.DisconnectHost_Task `xml:"urn:vim25 DisconnectHost_Task,omitempty"` + Res *types.DisconnectHost_TaskResponse `xml:"DisconnectHost_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DisconnectHost_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func DisconnectHost_Task(ctx context.Context, r soap.RoundTripper, req *types.DisconnectHost_Task) (*types.DisconnectHost_TaskResponse, error) { + var reqBody, resBody DisconnectHost_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DisconnectNvmeControllerBody struct { + Req *types.DisconnectNvmeController `xml:"urn:vim25 DisconnectNvmeController,omitempty"` + Res *types.DisconnectNvmeControllerResponse `xml:"DisconnectNvmeControllerResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DisconnectNvmeControllerBody) Fault() *soap.Fault { return b.Fault_ } + +func DisconnectNvmeController(ctx context.Context, r soap.RoundTripper, req *types.DisconnectNvmeController) (*types.DisconnectNvmeControllerResponse, error) { + var reqBody, resBody DisconnectNvmeControllerBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DiscoverFcoeHbasBody struct { + Req *types.DiscoverFcoeHbas `xml:"urn:vim25 DiscoverFcoeHbas,omitempty"` + Res *types.DiscoverFcoeHbasResponse `xml:"DiscoverFcoeHbasResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DiscoverFcoeHbasBody) Fault() *soap.Fault { return b.Fault_ } + +func DiscoverFcoeHbas(ctx context.Context, r soap.RoundTripper, req *types.DiscoverFcoeHbas) (*types.DiscoverFcoeHbasResponse, error) { + var reqBody, resBody DiscoverFcoeHbasBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DiscoverNvmeControllersBody struct { + Req *types.DiscoverNvmeControllers `xml:"urn:vim25 DiscoverNvmeControllers,omitempty"` + Res *types.DiscoverNvmeControllersResponse `xml:"DiscoverNvmeControllersResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DiscoverNvmeControllersBody) Fault() *soap.Fault { return b.Fault_ } + +func DiscoverNvmeControllers(ctx context.Context, r soap.RoundTripper, req *types.DiscoverNvmeControllers) (*types.DiscoverNvmeControllersResponse, error) { + var reqBody, resBody DiscoverNvmeControllersBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DissociateProfileBody struct { + Req *types.DissociateProfile `xml:"urn:vim25 DissociateProfile,omitempty"` + Res *types.DissociateProfileResponse `xml:"DissociateProfileResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DissociateProfileBody) Fault() *soap.Fault { return b.Fault_ } + +func DissociateProfile(ctx context.Context, r soap.RoundTripper, req *types.DissociateProfile) (*types.DissociateProfileResponse, error) { + var reqBody, resBody DissociateProfileBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DoesCustomizationSpecExistBody struct { + Req *types.DoesCustomizationSpecExist `xml:"urn:vim25 DoesCustomizationSpecExist,omitempty"` + Res *types.DoesCustomizationSpecExistResponse `xml:"DoesCustomizationSpecExistResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DoesCustomizationSpecExistBody) Fault() *soap.Fault { return b.Fault_ } + +func DoesCustomizationSpecExist(ctx context.Context, r soap.RoundTripper, req *types.DoesCustomizationSpecExist) (*types.DoesCustomizationSpecExistResponse, error) { + var reqBody, resBody DoesCustomizationSpecExistBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DownloadDescriptionTreeBody struct { + Req *types.DownloadDescriptionTree `xml:"urn:vim25 DownloadDescriptionTree,omitempty"` + Res *types.DownloadDescriptionTreeResponse `xml:"DownloadDescriptionTreeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DownloadDescriptionTreeBody) Fault() *soap.Fault { return b.Fault_ } + +func DownloadDescriptionTree(ctx context.Context, r soap.RoundTripper, req *types.DownloadDescriptionTree) (*types.DownloadDescriptionTreeResponse, error) { + var reqBody, resBody DownloadDescriptionTreeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DuplicateCustomizationSpecBody struct { + Req *types.DuplicateCustomizationSpec `xml:"urn:vim25 DuplicateCustomizationSpec,omitempty"` + Res *types.DuplicateCustomizationSpecResponse `xml:"DuplicateCustomizationSpecResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DuplicateCustomizationSpecBody) Fault() *soap.Fault { return b.Fault_ } + +func DuplicateCustomizationSpec(ctx context.Context, r soap.RoundTripper, req *types.DuplicateCustomizationSpec) (*types.DuplicateCustomizationSpecResponse, error) { + var reqBody, resBody DuplicateCustomizationSpecBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DvsReconfigureVmVnicNetworkResourcePool_TaskBody struct { + Req *types.DvsReconfigureVmVnicNetworkResourcePool_Task `xml:"urn:vim25 DvsReconfigureVmVnicNetworkResourcePool_Task,omitempty"` + Res *types.DvsReconfigureVmVnicNetworkResourcePool_TaskResponse `xml:"DvsReconfigureVmVnicNetworkResourcePool_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DvsReconfigureVmVnicNetworkResourcePool_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func DvsReconfigureVmVnicNetworkResourcePool_Task(ctx context.Context, r soap.RoundTripper, req *types.DvsReconfigureVmVnicNetworkResourcePool_Task) (*types.DvsReconfigureVmVnicNetworkResourcePool_TaskResponse, error) { + var reqBody, resBody DvsReconfigureVmVnicNetworkResourcePool_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type EagerZeroVirtualDisk_TaskBody struct { + Req *types.EagerZeroVirtualDisk_Task `xml:"urn:vim25 EagerZeroVirtualDisk_Task,omitempty"` + Res *types.EagerZeroVirtualDisk_TaskResponse `xml:"EagerZeroVirtualDisk_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *EagerZeroVirtualDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func EagerZeroVirtualDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.EagerZeroVirtualDisk_Task) (*types.EagerZeroVirtualDisk_TaskResponse, error) { + var reqBody, resBody EagerZeroVirtualDisk_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type EnableAlarmBody struct { + Req *types.EnableAlarm `xml:"urn:vim25 EnableAlarm,omitempty"` + Res *types.EnableAlarmResponse `xml:"EnableAlarmResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *EnableAlarmBody) Fault() *soap.Fault { return b.Fault_ } + +func EnableAlarm(ctx context.Context, r soap.RoundTripper, req *types.EnableAlarm) (*types.EnableAlarmResponse, error) { + var reqBody, resBody EnableAlarmBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type EnableAlarmActionsBody struct { + Req *types.EnableAlarmActions `xml:"urn:vim25 EnableAlarmActions,omitempty"` + Res *types.EnableAlarmActionsResponse `xml:"EnableAlarmActionsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *EnableAlarmActionsBody) Fault() *soap.Fault { return b.Fault_ } + +func EnableAlarmActions(ctx context.Context, r soap.RoundTripper, req *types.EnableAlarmActions) (*types.EnableAlarmActionsResponse, error) { + var reqBody, resBody EnableAlarmActionsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type EnableClusteredVmdkSupportBody struct { + Req *types.EnableClusteredVmdkSupport `xml:"urn:vim25 EnableClusteredVmdkSupport,omitempty"` + Res *types.EnableClusteredVmdkSupportResponse `xml:"EnableClusteredVmdkSupportResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *EnableClusteredVmdkSupportBody) Fault() *soap.Fault { return b.Fault_ } + +func EnableClusteredVmdkSupport(ctx context.Context, r soap.RoundTripper, req *types.EnableClusteredVmdkSupport) (*types.EnableClusteredVmdkSupportResponse, error) { + var reqBody, resBody EnableClusteredVmdkSupportBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type EnableCryptoBody struct { + Req *types.EnableCrypto `xml:"urn:vim25 EnableCrypto,omitempty"` + Res *types.EnableCryptoResponse `xml:"EnableCryptoResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *EnableCryptoBody) Fault() *soap.Fault { return b.Fault_ } + +func EnableCrypto(ctx context.Context, r soap.RoundTripper, req *types.EnableCrypto) (*types.EnableCryptoResponse, error) { + var reqBody, resBody EnableCryptoBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type EnableFeatureBody struct { + Req *types.EnableFeature `xml:"urn:vim25 EnableFeature,omitempty"` + Res *types.EnableFeatureResponse `xml:"EnableFeatureResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *EnableFeatureBody) Fault() *soap.Fault { return b.Fault_ } + +func EnableFeature(ctx context.Context, r soap.RoundTripper, req *types.EnableFeature) (*types.EnableFeatureResponse, error) { + var reqBody, resBody EnableFeatureBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type EnableHyperThreadingBody struct { + Req *types.EnableHyperThreading `xml:"urn:vim25 EnableHyperThreading,omitempty"` + Res *types.EnableHyperThreadingResponse `xml:"EnableHyperThreadingResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *EnableHyperThreadingBody) Fault() *soap.Fault { return b.Fault_ } + +func EnableHyperThreading(ctx context.Context, r soap.RoundTripper, req *types.EnableHyperThreading) (*types.EnableHyperThreadingResponse, error) { + var reqBody, resBody EnableHyperThreadingBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type EnableMultipathPathBody struct { + Req *types.EnableMultipathPath `xml:"urn:vim25 EnableMultipathPath,omitempty"` + Res *types.EnableMultipathPathResponse `xml:"EnableMultipathPathResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *EnableMultipathPathBody) Fault() *soap.Fault { return b.Fault_ } + +func EnableMultipathPath(ctx context.Context, r soap.RoundTripper, req *types.EnableMultipathPath) (*types.EnableMultipathPathResponse, error) { + var reqBody, resBody EnableMultipathPathBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type EnableNetworkResourceManagementBody struct { + Req *types.EnableNetworkResourceManagement `xml:"urn:vim25 EnableNetworkResourceManagement,omitempty"` + Res *types.EnableNetworkResourceManagementResponse `xml:"EnableNetworkResourceManagementResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *EnableNetworkResourceManagementBody) Fault() *soap.Fault { return b.Fault_ } + +func EnableNetworkResourceManagement(ctx context.Context, r soap.RoundTripper, req *types.EnableNetworkResourceManagement) (*types.EnableNetworkResourceManagementResponse, error) { + var reqBody, resBody EnableNetworkResourceManagementBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type EnableRulesetBody struct { + Req *types.EnableRuleset `xml:"urn:vim25 EnableRuleset,omitempty"` + Res *types.EnableRulesetResponse `xml:"EnableRulesetResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *EnableRulesetBody) Fault() *soap.Fault { return b.Fault_ } + +func EnableRuleset(ctx context.Context, r soap.RoundTripper, req *types.EnableRuleset) (*types.EnableRulesetResponse, error) { + var reqBody, resBody EnableRulesetBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type EnableSecondaryVM_TaskBody struct { + Req *types.EnableSecondaryVM_Task `xml:"urn:vim25 EnableSecondaryVM_Task,omitempty"` + Res *types.EnableSecondaryVM_TaskResponse `xml:"EnableSecondaryVM_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *EnableSecondaryVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func EnableSecondaryVM_Task(ctx context.Context, r soap.RoundTripper, req *types.EnableSecondaryVM_Task) (*types.EnableSecondaryVM_TaskResponse, error) { + var reqBody, resBody EnableSecondaryVM_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type EnableSmartCardAuthenticationBody struct { + Req *types.EnableSmartCardAuthentication `xml:"urn:vim25 EnableSmartCardAuthentication,omitempty"` + Res *types.EnableSmartCardAuthenticationResponse `xml:"EnableSmartCardAuthenticationResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *EnableSmartCardAuthenticationBody) Fault() *soap.Fault { return b.Fault_ } + +func EnableSmartCardAuthentication(ctx context.Context, r soap.RoundTripper, req *types.EnableSmartCardAuthentication) (*types.EnableSmartCardAuthenticationResponse, error) { + var reqBody, resBody EnableSmartCardAuthenticationBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type EnterLockdownModeBody struct { + Req *types.EnterLockdownMode `xml:"urn:vim25 EnterLockdownMode,omitempty"` + Res *types.EnterLockdownModeResponse `xml:"EnterLockdownModeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *EnterLockdownModeBody) Fault() *soap.Fault { return b.Fault_ } + +func EnterLockdownMode(ctx context.Context, r soap.RoundTripper, req *types.EnterLockdownMode) (*types.EnterLockdownModeResponse, error) { + var reqBody, resBody EnterLockdownModeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type EnterMaintenanceMode_TaskBody struct { + Req *types.EnterMaintenanceMode_Task `xml:"urn:vim25 EnterMaintenanceMode_Task,omitempty"` + Res *types.EnterMaintenanceMode_TaskResponse `xml:"EnterMaintenanceMode_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *EnterMaintenanceMode_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func EnterMaintenanceMode_Task(ctx context.Context, r soap.RoundTripper, req *types.EnterMaintenanceMode_Task) (*types.EnterMaintenanceMode_TaskResponse, error) { + var reqBody, resBody EnterMaintenanceMode_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type EstimateDatabaseSizeBody struct { + Req *types.EstimateDatabaseSize `xml:"urn:vim25 EstimateDatabaseSize,omitempty"` + Res *types.EstimateDatabaseSizeResponse `xml:"EstimateDatabaseSizeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *EstimateDatabaseSizeBody) Fault() *soap.Fault { return b.Fault_ } + +func EstimateDatabaseSize(ctx context.Context, r soap.RoundTripper, req *types.EstimateDatabaseSize) (*types.EstimateDatabaseSizeResponse, error) { + var reqBody, resBody EstimateDatabaseSizeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type EstimateStorageForConsolidateSnapshots_TaskBody struct { + Req *types.EstimateStorageForConsolidateSnapshots_Task `xml:"urn:vim25 EstimateStorageForConsolidateSnapshots_Task,omitempty"` + Res *types.EstimateStorageForConsolidateSnapshots_TaskResponse `xml:"EstimateStorageForConsolidateSnapshots_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *EstimateStorageForConsolidateSnapshots_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func EstimateStorageForConsolidateSnapshots_Task(ctx context.Context, r soap.RoundTripper, req *types.EstimateStorageForConsolidateSnapshots_Task) (*types.EstimateStorageForConsolidateSnapshots_TaskResponse, error) { + var reqBody, resBody EstimateStorageForConsolidateSnapshots_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type EsxAgentHostManagerUpdateConfigBody struct { + Req *types.EsxAgentHostManagerUpdateConfig `xml:"urn:vim25 EsxAgentHostManagerUpdateConfig,omitempty"` + Res *types.EsxAgentHostManagerUpdateConfigResponse `xml:"EsxAgentHostManagerUpdateConfigResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *EsxAgentHostManagerUpdateConfigBody) Fault() *soap.Fault { return b.Fault_ } + +func EsxAgentHostManagerUpdateConfig(ctx context.Context, r soap.RoundTripper, req *types.EsxAgentHostManagerUpdateConfig) (*types.EsxAgentHostManagerUpdateConfigResponse, error) { + var reqBody, resBody EsxAgentHostManagerUpdateConfigBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type EvacuateVsanNode_TaskBody struct { + Req *types.EvacuateVsanNode_Task `xml:"urn:vim25 EvacuateVsanNode_Task,omitempty"` + Res *types.EvacuateVsanNode_TaskResponse `xml:"EvacuateVsanNode_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *EvacuateVsanNode_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func EvacuateVsanNode_Task(ctx context.Context, r soap.RoundTripper, req *types.EvacuateVsanNode_Task) (*types.EvacuateVsanNode_TaskResponse, error) { + var reqBody, resBody EvacuateVsanNode_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type EvcManagerBody struct { + Req *types.EvcManager `xml:"urn:vim25 EvcManager,omitempty"` + Res *types.EvcManagerResponse `xml:"EvcManagerResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *EvcManagerBody) Fault() *soap.Fault { return b.Fault_ } + +func EvcManager(ctx context.Context, r soap.RoundTripper, req *types.EvcManager) (*types.EvcManagerResponse, error) { + var reqBody, resBody EvcManagerBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ExecuteHostProfileBody struct { + Req *types.ExecuteHostProfile `xml:"urn:vim25 ExecuteHostProfile,omitempty"` + Res *types.ExecuteHostProfileResponse `xml:"ExecuteHostProfileResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ExecuteHostProfileBody) Fault() *soap.Fault { return b.Fault_ } + +func ExecuteHostProfile(ctx context.Context, r soap.RoundTripper, req *types.ExecuteHostProfile) (*types.ExecuteHostProfileResponse, error) { + var reqBody, resBody ExecuteHostProfileBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ExecuteSimpleCommandBody struct { + Req *types.ExecuteSimpleCommand `xml:"urn:vim25 ExecuteSimpleCommand,omitempty"` + Res *types.ExecuteSimpleCommandResponse `xml:"ExecuteSimpleCommandResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ExecuteSimpleCommandBody) Fault() *soap.Fault { return b.Fault_ } + +func ExecuteSimpleCommand(ctx context.Context, r soap.RoundTripper, req *types.ExecuteSimpleCommand) (*types.ExecuteSimpleCommandResponse, error) { + var reqBody, resBody ExecuteSimpleCommandBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ExitLockdownModeBody struct { + Req *types.ExitLockdownMode `xml:"urn:vim25 ExitLockdownMode,omitempty"` + Res *types.ExitLockdownModeResponse `xml:"ExitLockdownModeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ExitLockdownModeBody) Fault() *soap.Fault { return b.Fault_ } + +func ExitLockdownMode(ctx context.Context, r soap.RoundTripper, req *types.ExitLockdownMode) (*types.ExitLockdownModeResponse, error) { + var reqBody, resBody ExitLockdownModeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ExitMaintenanceMode_TaskBody struct { + Req *types.ExitMaintenanceMode_Task `xml:"urn:vim25 ExitMaintenanceMode_Task,omitempty"` + Res *types.ExitMaintenanceMode_TaskResponse `xml:"ExitMaintenanceMode_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ExitMaintenanceMode_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ExitMaintenanceMode_Task(ctx context.Context, r soap.RoundTripper, req *types.ExitMaintenanceMode_Task) (*types.ExitMaintenanceMode_TaskResponse, error) { + var reqBody, resBody ExitMaintenanceMode_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ExpandVmfsDatastoreBody struct { + Req *types.ExpandVmfsDatastore `xml:"urn:vim25 ExpandVmfsDatastore,omitempty"` + Res *types.ExpandVmfsDatastoreResponse `xml:"ExpandVmfsDatastoreResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ExpandVmfsDatastoreBody) Fault() *soap.Fault { return b.Fault_ } + +func ExpandVmfsDatastore(ctx context.Context, r soap.RoundTripper, req *types.ExpandVmfsDatastore) (*types.ExpandVmfsDatastoreResponse, error) { + var reqBody, resBody ExpandVmfsDatastoreBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ExpandVmfsExtentBody struct { + Req *types.ExpandVmfsExtent `xml:"urn:vim25 ExpandVmfsExtent,omitempty"` + Res *types.ExpandVmfsExtentResponse `xml:"ExpandVmfsExtentResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ExpandVmfsExtentBody) Fault() *soap.Fault { return b.Fault_ } + +func ExpandVmfsExtent(ctx context.Context, r soap.RoundTripper, req *types.ExpandVmfsExtent) (*types.ExpandVmfsExtentResponse, error) { + var reqBody, resBody ExpandVmfsExtentBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ExportAnswerFile_TaskBody struct { + Req *types.ExportAnswerFile_Task `xml:"urn:vim25 ExportAnswerFile_Task,omitempty"` + Res *types.ExportAnswerFile_TaskResponse `xml:"ExportAnswerFile_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ExportAnswerFile_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ExportAnswerFile_Task(ctx context.Context, r soap.RoundTripper, req *types.ExportAnswerFile_Task) (*types.ExportAnswerFile_TaskResponse, error) { + var reqBody, resBody ExportAnswerFile_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ExportProfileBody struct { + Req *types.ExportProfile `xml:"urn:vim25 ExportProfile,omitempty"` + Res *types.ExportProfileResponse `xml:"ExportProfileResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ExportProfileBody) Fault() *soap.Fault { return b.Fault_ } + +func ExportProfile(ctx context.Context, r soap.RoundTripper, req *types.ExportProfile) (*types.ExportProfileResponse, error) { + var reqBody, resBody ExportProfileBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ExportSnapshotBody struct { + Req *types.ExportSnapshot `xml:"urn:vim25 ExportSnapshot,omitempty"` + Res *types.ExportSnapshotResponse `xml:"ExportSnapshotResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ExportSnapshotBody) Fault() *soap.Fault { return b.Fault_ } + +func ExportSnapshot(ctx context.Context, r soap.RoundTripper, req *types.ExportSnapshot) (*types.ExportSnapshotResponse, error) { + var reqBody, resBody ExportSnapshotBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ExportVAppBody struct { + Req *types.ExportVApp `xml:"urn:vim25 ExportVApp,omitempty"` + Res *types.ExportVAppResponse `xml:"ExportVAppResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ExportVAppBody) Fault() *soap.Fault { return b.Fault_ } + +func ExportVApp(ctx context.Context, r soap.RoundTripper, req *types.ExportVApp) (*types.ExportVAppResponse, error) { + var reqBody, resBody ExportVAppBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ExportVmBody struct { + Req *types.ExportVm `xml:"urn:vim25 ExportVm,omitempty"` + Res *types.ExportVmResponse `xml:"ExportVmResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ExportVmBody) Fault() *soap.Fault { return b.Fault_ } + +func ExportVm(ctx context.Context, r soap.RoundTripper, req *types.ExportVm) (*types.ExportVmResponse, error) { + var reqBody, resBody ExportVmBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ExtendDisk_TaskBody struct { + Req *types.ExtendDisk_Task `xml:"urn:vim25 ExtendDisk_Task,omitempty"` + Res *types.ExtendDisk_TaskResponse `xml:"ExtendDisk_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ExtendDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ExtendDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.ExtendDisk_Task) (*types.ExtendDisk_TaskResponse, error) { + var reqBody, resBody ExtendDisk_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ExtendHCI_TaskBody struct { + Req *types.ExtendHCI_Task `xml:"urn:vim25 ExtendHCI_Task,omitempty"` + Res *types.ExtendHCI_TaskResponse `xml:"ExtendHCI_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ExtendHCI_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ExtendHCI_Task(ctx context.Context, r soap.RoundTripper, req *types.ExtendHCI_Task) (*types.ExtendHCI_TaskResponse, error) { + var reqBody, resBody ExtendHCI_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ExtendVffsBody struct { + Req *types.ExtendVffs `xml:"urn:vim25 ExtendVffs,omitempty"` + Res *types.ExtendVffsResponse `xml:"ExtendVffsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ExtendVffsBody) Fault() *soap.Fault { return b.Fault_ } + +func ExtendVffs(ctx context.Context, r soap.RoundTripper, req *types.ExtendVffs) (*types.ExtendVffsResponse, error) { + var reqBody, resBody ExtendVffsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ExtendVirtualDisk_TaskBody struct { + Req *types.ExtendVirtualDisk_Task `xml:"urn:vim25 ExtendVirtualDisk_Task,omitempty"` + Res *types.ExtendVirtualDisk_TaskResponse `xml:"ExtendVirtualDisk_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ExtendVirtualDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ExtendVirtualDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.ExtendVirtualDisk_Task) (*types.ExtendVirtualDisk_TaskResponse, error) { + var reqBody, resBody ExtendVirtualDisk_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ExtendVmfsDatastoreBody struct { + Req *types.ExtendVmfsDatastore `xml:"urn:vim25 ExtendVmfsDatastore,omitempty"` + Res *types.ExtendVmfsDatastoreResponse `xml:"ExtendVmfsDatastoreResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ExtendVmfsDatastoreBody) Fault() *soap.Fault { return b.Fault_ } + +func ExtendVmfsDatastore(ctx context.Context, r soap.RoundTripper, req *types.ExtendVmfsDatastore) (*types.ExtendVmfsDatastoreResponse, error) { + var reqBody, resBody ExtendVmfsDatastoreBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ExtractOvfEnvironmentBody struct { + Req *types.ExtractOvfEnvironment `xml:"urn:vim25 ExtractOvfEnvironment,omitempty"` + Res *types.ExtractOvfEnvironmentResponse `xml:"ExtractOvfEnvironmentResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ExtractOvfEnvironmentBody) Fault() *soap.Fault { return b.Fault_ } + +func ExtractOvfEnvironment(ctx context.Context, r soap.RoundTripper, req *types.ExtractOvfEnvironment) (*types.ExtractOvfEnvironmentResponse, error) { + var reqBody, resBody ExtractOvfEnvironmentBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type FetchDVPortKeysBody struct { + Req *types.FetchDVPortKeys `xml:"urn:vim25 FetchDVPortKeys,omitempty"` + Res *types.FetchDVPortKeysResponse `xml:"FetchDVPortKeysResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *FetchDVPortKeysBody) Fault() *soap.Fault { return b.Fault_ } + +func FetchDVPortKeys(ctx context.Context, r soap.RoundTripper, req *types.FetchDVPortKeys) (*types.FetchDVPortKeysResponse, error) { + var reqBody, resBody FetchDVPortKeysBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type FetchDVPortsBody struct { + Req *types.FetchDVPorts `xml:"urn:vim25 FetchDVPorts,omitempty"` + Res *types.FetchDVPortsResponse `xml:"FetchDVPortsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *FetchDVPortsBody) Fault() *soap.Fault { return b.Fault_ } + +func FetchDVPorts(ctx context.Context, r soap.RoundTripper, req *types.FetchDVPorts) (*types.FetchDVPortsResponse, error) { + var reqBody, resBody FetchDVPortsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type FetchSystemEventLogBody struct { + Req *types.FetchSystemEventLog `xml:"urn:vim25 FetchSystemEventLog,omitempty"` + Res *types.FetchSystemEventLogResponse `xml:"FetchSystemEventLogResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *FetchSystemEventLogBody) Fault() *soap.Fault { return b.Fault_ } + +func FetchSystemEventLog(ctx context.Context, r soap.RoundTripper, req *types.FetchSystemEventLog) (*types.FetchSystemEventLogResponse, error) { + var reqBody, resBody FetchSystemEventLogBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type FetchUserPrivilegeOnEntitiesBody struct { + Req *types.FetchUserPrivilegeOnEntities `xml:"urn:vim25 FetchUserPrivilegeOnEntities,omitempty"` + Res *types.FetchUserPrivilegeOnEntitiesResponse `xml:"FetchUserPrivilegeOnEntitiesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *FetchUserPrivilegeOnEntitiesBody) Fault() *soap.Fault { return b.Fault_ } + +func FetchUserPrivilegeOnEntities(ctx context.Context, r soap.RoundTripper, req *types.FetchUserPrivilegeOnEntities) (*types.FetchUserPrivilegeOnEntitiesResponse, error) { + var reqBody, resBody FetchUserPrivilegeOnEntitiesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type FindAllByDnsNameBody struct { + Req *types.FindAllByDnsName `xml:"urn:vim25 FindAllByDnsName,omitempty"` + Res *types.FindAllByDnsNameResponse `xml:"FindAllByDnsNameResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *FindAllByDnsNameBody) Fault() *soap.Fault { return b.Fault_ } + +func FindAllByDnsName(ctx context.Context, r soap.RoundTripper, req *types.FindAllByDnsName) (*types.FindAllByDnsNameResponse, error) { + var reqBody, resBody FindAllByDnsNameBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type FindAllByIpBody struct { + Req *types.FindAllByIp `xml:"urn:vim25 FindAllByIp,omitempty"` + Res *types.FindAllByIpResponse `xml:"FindAllByIpResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *FindAllByIpBody) Fault() *soap.Fault { return b.Fault_ } + +func FindAllByIp(ctx context.Context, r soap.RoundTripper, req *types.FindAllByIp) (*types.FindAllByIpResponse, error) { + var reqBody, resBody FindAllByIpBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type FindAllByUuidBody struct { + Req *types.FindAllByUuid `xml:"urn:vim25 FindAllByUuid,omitempty"` + Res *types.FindAllByUuidResponse `xml:"FindAllByUuidResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *FindAllByUuidBody) Fault() *soap.Fault { return b.Fault_ } + +func FindAllByUuid(ctx context.Context, r soap.RoundTripper, req *types.FindAllByUuid) (*types.FindAllByUuidResponse, error) { + var reqBody, resBody FindAllByUuidBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type FindAssociatedProfileBody struct { + Req *types.FindAssociatedProfile `xml:"urn:vim25 FindAssociatedProfile,omitempty"` + Res *types.FindAssociatedProfileResponse `xml:"FindAssociatedProfileResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *FindAssociatedProfileBody) Fault() *soap.Fault { return b.Fault_ } + +func FindAssociatedProfile(ctx context.Context, r soap.RoundTripper, req *types.FindAssociatedProfile) (*types.FindAssociatedProfileResponse, error) { + var reqBody, resBody FindAssociatedProfileBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type FindByDatastorePathBody struct { + Req *types.FindByDatastorePath `xml:"urn:vim25 FindByDatastorePath,omitempty"` + Res *types.FindByDatastorePathResponse `xml:"FindByDatastorePathResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *FindByDatastorePathBody) Fault() *soap.Fault { return b.Fault_ } + +func FindByDatastorePath(ctx context.Context, r soap.RoundTripper, req *types.FindByDatastorePath) (*types.FindByDatastorePathResponse, error) { + var reqBody, resBody FindByDatastorePathBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type FindByDnsNameBody struct { + Req *types.FindByDnsName `xml:"urn:vim25 FindByDnsName,omitempty"` + Res *types.FindByDnsNameResponse `xml:"FindByDnsNameResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *FindByDnsNameBody) Fault() *soap.Fault { return b.Fault_ } + +func FindByDnsName(ctx context.Context, r soap.RoundTripper, req *types.FindByDnsName) (*types.FindByDnsNameResponse, error) { + var reqBody, resBody FindByDnsNameBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type FindByInventoryPathBody struct { + Req *types.FindByInventoryPath `xml:"urn:vim25 FindByInventoryPath,omitempty"` + Res *types.FindByInventoryPathResponse `xml:"FindByInventoryPathResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *FindByInventoryPathBody) Fault() *soap.Fault { return b.Fault_ } + +func FindByInventoryPath(ctx context.Context, r soap.RoundTripper, req *types.FindByInventoryPath) (*types.FindByInventoryPathResponse, error) { + var reqBody, resBody FindByInventoryPathBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type FindByIpBody struct { + Req *types.FindByIp `xml:"urn:vim25 FindByIp,omitempty"` + Res *types.FindByIpResponse `xml:"FindByIpResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *FindByIpBody) Fault() *soap.Fault { return b.Fault_ } + +func FindByIp(ctx context.Context, r soap.RoundTripper, req *types.FindByIp) (*types.FindByIpResponse, error) { + var reqBody, resBody FindByIpBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type FindByUuidBody struct { + Req *types.FindByUuid `xml:"urn:vim25 FindByUuid,omitempty"` + Res *types.FindByUuidResponse `xml:"FindByUuidResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *FindByUuidBody) Fault() *soap.Fault { return b.Fault_ } + +func FindByUuid(ctx context.Context, r soap.RoundTripper, req *types.FindByUuid) (*types.FindByUuidResponse, error) { + var reqBody, resBody FindByUuidBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type FindChildBody struct { + Req *types.FindChild `xml:"urn:vim25 FindChild,omitempty"` + Res *types.FindChildResponse `xml:"FindChildResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *FindChildBody) Fault() *soap.Fault { return b.Fault_ } + +func FindChild(ctx context.Context, r soap.RoundTripper, req *types.FindChild) (*types.FindChildResponse, error) { + var reqBody, resBody FindChildBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type FindExtensionBody struct { + Req *types.FindExtension `xml:"urn:vim25 FindExtension,omitempty"` + Res *types.FindExtensionResponse `xml:"FindExtensionResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *FindExtensionBody) Fault() *soap.Fault { return b.Fault_ } + +func FindExtension(ctx context.Context, r soap.RoundTripper, req *types.FindExtension) (*types.FindExtensionResponse, error) { + var reqBody, resBody FindExtensionBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type FindRulesForVmBody struct { + Req *types.FindRulesForVm `xml:"urn:vim25 FindRulesForVm,omitempty"` + Res *types.FindRulesForVmResponse `xml:"FindRulesForVmResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *FindRulesForVmBody) Fault() *soap.Fault { return b.Fault_ } + +func FindRulesForVm(ctx context.Context, r soap.RoundTripper, req *types.FindRulesForVm) (*types.FindRulesForVmResponse, error) { + var reqBody, resBody FindRulesForVmBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type FormatVffsBody struct { + Req *types.FormatVffs `xml:"urn:vim25 FormatVffs,omitempty"` + Res *types.FormatVffsResponse `xml:"FormatVffsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *FormatVffsBody) Fault() *soap.Fault { return b.Fault_ } + +func FormatVffs(ctx context.Context, r soap.RoundTripper, req *types.FormatVffs) (*types.FormatVffsResponse, error) { + var reqBody, resBody FormatVffsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type FormatVmfsBody struct { + Req *types.FormatVmfs `xml:"urn:vim25 FormatVmfs,omitempty"` + Res *types.FormatVmfsResponse `xml:"FormatVmfsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *FormatVmfsBody) Fault() *soap.Fault { return b.Fault_ } + +func FormatVmfs(ctx context.Context, r soap.RoundTripper, req *types.FormatVmfs) (*types.FormatVmfsResponse, error) { + var reqBody, resBody FormatVmfsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type GenerateCertificateSigningRequestBody struct { + Req *types.GenerateCertificateSigningRequest `xml:"urn:vim25 GenerateCertificateSigningRequest,omitempty"` + Res *types.GenerateCertificateSigningRequestResponse `xml:"GenerateCertificateSigningRequestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *GenerateCertificateSigningRequestBody) Fault() *soap.Fault { return b.Fault_ } + +func GenerateCertificateSigningRequest(ctx context.Context, r soap.RoundTripper, req *types.GenerateCertificateSigningRequest) (*types.GenerateCertificateSigningRequestResponse, error) { + var reqBody, resBody GenerateCertificateSigningRequestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type GenerateCertificateSigningRequestByDnBody struct { + Req *types.GenerateCertificateSigningRequestByDn `xml:"urn:vim25 GenerateCertificateSigningRequestByDn,omitempty"` + Res *types.GenerateCertificateSigningRequestByDnResponse `xml:"GenerateCertificateSigningRequestByDnResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *GenerateCertificateSigningRequestByDnBody) Fault() *soap.Fault { return b.Fault_ } + +func GenerateCertificateSigningRequestByDn(ctx context.Context, r soap.RoundTripper, req *types.GenerateCertificateSigningRequestByDn) (*types.GenerateCertificateSigningRequestByDnResponse, error) { + var reqBody, resBody GenerateCertificateSigningRequestByDnBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type GenerateClientCsrBody struct { + Req *types.GenerateClientCsr `xml:"urn:vim25 GenerateClientCsr,omitempty"` + Res *types.GenerateClientCsrResponse `xml:"GenerateClientCsrResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *GenerateClientCsrBody) Fault() *soap.Fault { return b.Fault_ } + +func GenerateClientCsr(ctx context.Context, r soap.RoundTripper, req *types.GenerateClientCsr) (*types.GenerateClientCsrResponse, error) { + var reqBody, resBody GenerateClientCsrBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type GenerateConfigTaskListBody struct { + Req *types.GenerateConfigTaskList `xml:"urn:vim25 GenerateConfigTaskList,omitempty"` + Res *types.GenerateConfigTaskListResponse `xml:"GenerateConfigTaskListResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *GenerateConfigTaskListBody) Fault() *soap.Fault { return b.Fault_ } + +func GenerateConfigTaskList(ctx context.Context, r soap.RoundTripper, req *types.GenerateConfigTaskList) (*types.GenerateConfigTaskListResponse, error) { + var reqBody, resBody GenerateConfigTaskListBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type GenerateHostConfigTaskSpec_TaskBody struct { + Req *types.GenerateHostConfigTaskSpec_Task `xml:"urn:vim25 GenerateHostConfigTaskSpec_Task,omitempty"` + Res *types.GenerateHostConfigTaskSpec_TaskResponse `xml:"GenerateHostConfigTaskSpec_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *GenerateHostConfigTaskSpec_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func GenerateHostConfigTaskSpec_Task(ctx context.Context, r soap.RoundTripper, req *types.GenerateHostConfigTaskSpec_Task) (*types.GenerateHostConfigTaskSpec_TaskResponse, error) { + var reqBody, resBody GenerateHostConfigTaskSpec_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type GenerateHostProfileTaskList_TaskBody struct { + Req *types.GenerateHostProfileTaskList_Task `xml:"urn:vim25 GenerateHostProfileTaskList_Task,omitempty"` + Res *types.GenerateHostProfileTaskList_TaskResponse `xml:"GenerateHostProfileTaskList_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *GenerateHostProfileTaskList_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func GenerateHostProfileTaskList_Task(ctx context.Context, r soap.RoundTripper, req *types.GenerateHostProfileTaskList_Task) (*types.GenerateHostProfileTaskList_TaskResponse, error) { + var reqBody, resBody GenerateHostProfileTaskList_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type GenerateKeyBody struct { + Req *types.GenerateKey `xml:"urn:vim25 GenerateKey,omitempty"` + Res *types.GenerateKeyResponse `xml:"GenerateKeyResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *GenerateKeyBody) Fault() *soap.Fault { return b.Fault_ } + +func GenerateKey(ctx context.Context, r soap.RoundTripper, req *types.GenerateKey) (*types.GenerateKeyResponse, error) { + var reqBody, resBody GenerateKeyBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type GenerateLogBundles_TaskBody struct { + Req *types.GenerateLogBundles_Task `xml:"urn:vim25 GenerateLogBundles_Task,omitempty"` + Res *types.GenerateLogBundles_TaskResponse `xml:"GenerateLogBundles_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *GenerateLogBundles_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func GenerateLogBundles_Task(ctx context.Context, r soap.RoundTripper, req *types.GenerateLogBundles_Task) (*types.GenerateLogBundles_TaskResponse, error) { + var reqBody, resBody GenerateLogBundles_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type GenerateSelfSignedClientCertBody struct { + Req *types.GenerateSelfSignedClientCert `xml:"urn:vim25 GenerateSelfSignedClientCert,omitempty"` + Res *types.GenerateSelfSignedClientCertResponse `xml:"GenerateSelfSignedClientCertResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *GenerateSelfSignedClientCertBody) Fault() *soap.Fault { return b.Fault_ } + +func GenerateSelfSignedClientCert(ctx context.Context, r soap.RoundTripper, req *types.GenerateSelfSignedClientCert) (*types.GenerateSelfSignedClientCertResponse, error) { + var reqBody, resBody GenerateSelfSignedClientCertBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type GetAlarmBody struct { + Req *types.GetAlarm `xml:"urn:vim25 GetAlarm,omitempty"` + Res *types.GetAlarmResponse `xml:"GetAlarmResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *GetAlarmBody) Fault() *soap.Fault { return b.Fault_ } + +func GetAlarm(ctx context.Context, r soap.RoundTripper, req *types.GetAlarm) (*types.GetAlarmResponse, error) { + var reqBody, resBody GetAlarmBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type GetAlarmStateBody struct { + Req *types.GetAlarmState `xml:"urn:vim25 GetAlarmState,omitempty"` + Res *types.GetAlarmStateResponse `xml:"GetAlarmStateResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *GetAlarmStateBody) Fault() *soap.Fault { return b.Fault_ } + +func GetAlarmState(ctx context.Context, r soap.RoundTripper, req *types.GetAlarmState) (*types.GetAlarmStateResponse, error) { + var reqBody, resBody GetAlarmStateBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type GetCustomizationSpecBody struct { + Req *types.GetCustomizationSpec `xml:"urn:vim25 GetCustomizationSpec,omitempty"` + Res *types.GetCustomizationSpecResponse `xml:"GetCustomizationSpecResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *GetCustomizationSpecBody) Fault() *soap.Fault { return b.Fault_ } + +func GetCustomizationSpec(ctx context.Context, r soap.RoundTripper, req *types.GetCustomizationSpec) (*types.GetCustomizationSpecResponse, error) { + var reqBody, resBody GetCustomizationSpecBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type GetDefaultKmsClusterBody struct { + Req *types.GetDefaultKmsCluster `xml:"urn:vim25 GetDefaultKmsCluster,omitempty"` + Res *types.GetDefaultKmsClusterResponse `xml:"GetDefaultKmsClusterResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *GetDefaultKmsClusterBody) Fault() *soap.Fault { return b.Fault_ } + +func GetDefaultKmsCluster(ctx context.Context, r soap.RoundTripper, req *types.GetDefaultKmsCluster) (*types.GetDefaultKmsClusterResponse, error) { + var reqBody, resBody GetDefaultKmsClusterBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type GetPublicKeyBody struct { + Req *types.GetPublicKey `xml:"urn:vim25 GetPublicKey,omitempty"` + Res *types.GetPublicKeyResponse `xml:"GetPublicKeyResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *GetPublicKeyBody) Fault() *soap.Fault { return b.Fault_ } + +func GetPublicKey(ctx context.Context, r soap.RoundTripper, req *types.GetPublicKey) (*types.GetPublicKeyResponse, error) { + var reqBody, resBody GetPublicKeyBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type GetResourceUsageBody struct { + Req *types.GetResourceUsage `xml:"urn:vim25 GetResourceUsage,omitempty"` + Res *types.GetResourceUsageResponse `xml:"GetResourceUsageResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *GetResourceUsageBody) Fault() *soap.Fault { return b.Fault_ } + +func GetResourceUsage(ctx context.Context, r soap.RoundTripper, req *types.GetResourceUsage) (*types.GetResourceUsageResponse, error) { + var reqBody, resBody GetResourceUsageBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type GetSiteInfoBody struct { + Req *types.GetSiteInfo `xml:"urn:vim25 GetSiteInfo,omitempty"` + Res *types.GetSiteInfoResponse `xml:"GetSiteInfoResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *GetSiteInfoBody) Fault() *soap.Fault { return b.Fault_ } + +func GetSiteInfo(ctx context.Context, r soap.RoundTripper, req *types.GetSiteInfo) (*types.GetSiteInfoResponse, error) { + var reqBody, resBody GetSiteInfoBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type GetVchaClusterHealthBody struct { + Req *types.GetVchaClusterHealth `xml:"urn:vim25 GetVchaClusterHealth,omitempty"` + Res *types.GetVchaClusterHealthResponse `xml:"GetVchaClusterHealthResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *GetVchaClusterHealthBody) Fault() *soap.Fault { return b.Fault_ } + +func GetVchaClusterHealth(ctx context.Context, r soap.RoundTripper, req *types.GetVchaClusterHealth) (*types.GetVchaClusterHealthResponse, error) { + var reqBody, resBody GetVchaClusterHealthBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type GetVsanObjExtAttrsBody struct { + Req *types.GetVsanObjExtAttrs `xml:"urn:vim25 GetVsanObjExtAttrs,omitempty"` + Res *types.GetVsanObjExtAttrsResponse `xml:"GetVsanObjExtAttrsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *GetVsanObjExtAttrsBody) Fault() *soap.Fault { return b.Fault_ } + +func GetVsanObjExtAttrs(ctx context.Context, r soap.RoundTripper, req *types.GetVsanObjExtAttrs) (*types.GetVsanObjExtAttrsResponse, error) { + var reqBody, resBody GetVsanObjExtAttrsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HasMonitoredEntityBody struct { + Req *types.HasMonitoredEntity `xml:"urn:vim25 HasMonitoredEntity,omitempty"` + Res *types.HasMonitoredEntityResponse `xml:"HasMonitoredEntityResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HasMonitoredEntityBody) Fault() *soap.Fault { return b.Fault_ } + +func HasMonitoredEntity(ctx context.Context, r soap.RoundTripper, req *types.HasMonitoredEntity) (*types.HasMonitoredEntityResponse, error) { + var reqBody, resBody HasMonitoredEntityBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HasPrivilegeOnEntitiesBody struct { + Req *types.HasPrivilegeOnEntities `xml:"urn:vim25 HasPrivilegeOnEntities,omitempty"` + Res *types.HasPrivilegeOnEntitiesResponse `xml:"HasPrivilegeOnEntitiesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HasPrivilegeOnEntitiesBody) Fault() *soap.Fault { return b.Fault_ } + +func HasPrivilegeOnEntities(ctx context.Context, r soap.RoundTripper, req *types.HasPrivilegeOnEntities) (*types.HasPrivilegeOnEntitiesResponse, error) { + var reqBody, resBody HasPrivilegeOnEntitiesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HasPrivilegeOnEntityBody struct { + Req *types.HasPrivilegeOnEntity `xml:"urn:vim25 HasPrivilegeOnEntity,omitempty"` + Res *types.HasPrivilegeOnEntityResponse `xml:"HasPrivilegeOnEntityResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HasPrivilegeOnEntityBody) Fault() *soap.Fault { return b.Fault_ } + +func HasPrivilegeOnEntity(ctx context.Context, r soap.RoundTripper, req *types.HasPrivilegeOnEntity) (*types.HasPrivilegeOnEntityResponse, error) { + var reqBody, resBody HasPrivilegeOnEntityBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HasProviderBody struct { + Req *types.HasProvider `xml:"urn:vim25 HasProvider,omitempty"` + Res *types.HasProviderResponse `xml:"HasProviderResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HasProviderBody) Fault() *soap.Fault { return b.Fault_ } + +func HasProvider(ctx context.Context, r soap.RoundTripper, req *types.HasProvider) (*types.HasProviderResponse, error) { + var reqBody, resBody HasProviderBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HasUserPrivilegeOnEntitiesBody struct { + Req *types.HasUserPrivilegeOnEntities `xml:"urn:vim25 HasUserPrivilegeOnEntities,omitempty"` + Res *types.HasUserPrivilegeOnEntitiesResponse `xml:"HasUserPrivilegeOnEntitiesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HasUserPrivilegeOnEntitiesBody) Fault() *soap.Fault { return b.Fault_ } + +func HasUserPrivilegeOnEntities(ctx context.Context, r soap.RoundTripper, req *types.HasUserPrivilegeOnEntities) (*types.HasUserPrivilegeOnEntitiesResponse, error) { + var reqBody, resBody HasUserPrivilegeOnEntitiesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostClearVStorageObjectControlFlagsBody struct { + Req *types.HostClearVStorageObjectControlFlags `xml:"urn:vim25 HostClearVStorageObjectControlFlags,omitempty"` + Res *types.HostClearVStorageObjectControlFlagsResponse `xml:"HostClearVStorageObjectControlFlagsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostClearVStorageObjectControlFlagsBody) Fault() *soap.Fault { return b.Fault_ } + +func HostClearVStorageObjectControlFlags(ctx context.Context, r soap.RoundTripper, req *types.HostClearVStorageObjectControlFlags) (*types.HostClearVStorageObjectControlFlagsResponse, error) { + var reqBody, resBody HostClearVStorageObjectControlFlagsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostCloneVStorageObject_TaskBody struct { + Req *types.HostCloneVStorageObject_Task `xml:"urn:vim25 HostCloneVStorageObject_Task,omitempty"` + Res *types.HostCloneVStorageObject_TaskResponse `xml:"HostCloneVStorageObject_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostCloneVStorageObject_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func HostCloneVStorageObject_Task(ctx context.Context, r soap.RoundTripper, req *types.HostCloneVStorageObject_Task) (*types.HostCloneVStorageObject_TaskResponse, error) { + var reqBody, resBody HostCloneVStorageObject_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostConfigVFlashCacheBody struct { + Req *types.HostConfigVFlashCache `xml:"urn:vim25 HostConfigVFlashCache,omitempty"` + Res *types.HostConfigVFlashCacheResponse `xml:"HostConfigVFlashCacheResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostConfigVFlashCacheBody) Fault() *soap.Fault { return b.Fault_ } + +func HostConfigVFlashCache(ctx context.Context, r soap.RoundTripper, req *types.HostConfigVFlashCache) (*types.HostConfigVFlashCacheResponse, error) { + var reqBody, resBody HostConfigVFlashCacheBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostConfigureVFlashResourceBody struct { + Req *types.HostConfigureVFlashResource `xml:"urn:vim25 HostConfigureVFlashResource,omitempty"` + Res *types.HostConfigureVFlashResourceResponse `xml:"HostConfigureVFlashResourceResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostConfigureVFlashResourceBody) Fault() *soap.Fault { return b.Fault_ } + +func HostConfigureVFlashResource(ctx context.Context, r soap.RoundTripper, req *types.HostConfigureVFlashResource) (*types.HostConfigureVFlashResourceResponse, error) { + var reqBody, resBody HostConfigureVFlashResourceBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostCreateDisk_TaskBody struct { + Req *types.HostCreateDisk_Task `xml:"urn:vim25 HostCreateDisk_Task,omitempty"` + Res *types.HostCreateDisk_TaskResponse `xml:"HostCreateDisk_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostCreateDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func HostCreateDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.HostCreateDisk_Task) (*types.HostCreateDisk_TaskResponse, error) { + var reqBody, resBody HostCreateDisk_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostDeleteVStorageObject_TaskBody struct { + Req *types.HostDeleteVStorageObject_Task `xml:"urn:vim25 HostDeleteVStorageObject_Task,omitempty"` + Res *types.HostDeleteVStorageObject_TaskResponse `xml:"HostDeleteVStorageObject_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostDeleteVStorageObject_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func HostDeleteVStorageObject_Task(ctx context.Context, r soap.RoundTripper, req *types.HostDeleteVStorageObject_Task) (*types.HostDeleteVStorageObject_TaskResponse, error) { + var reqBody, resBody HostDeleteVStorageObject_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostExtendDisk_TaskBody struct { + Req *types.HostExtendDisk_Task `xml:"urn:vim25 HostExtendDisk_Task,omitempty"` + Res *types.HostExtendDisk_TaskResponse `xml:"HostExtendDisk_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostExtendDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func HostExtendDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.HostExtendDisk_Task) (*types.HostExtendDisk_TaskResponse, error) { + var reqBody, resBody HostExtendDisk_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostGetVFlashModuleDefaultConfigBody struct { + Req *types.HostGetVFlashModuleDefaultConfig `xml:"urn:vim25 HostGetVFlashModuleDefaultConfig,omitempty"` + Res *types.HostGetVFlashModuleDefaultConfigResponse `xml:"HostGetVFlashModuleDefaultConfigResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostGetVFlashModuleDefaultConfigBody) Fault() *soap.Fault { return b.Fault_ } + +func HostGetVFlashModuleDefaultConfig(ctx context.Context, r soap.RoundTripper, req *types.HostGetVFlashModuleDefaultConfig) (*types.HostGetVFlashModuleDefaultConfigResponse, error) { + var reqBody, resBody HostGetVFlashModuleDefaultConfigBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostImageConfigGetAcceptanceBody struct { + Req *types.HostImageConfigGetAcceptance `xml:"urn:vim25 HostImageConfigGetAcceptance,omitempty"` + Res *types.HostImageConfigGetAcceptanceResponse `xml:"HostImageConfigGetAcceptanceResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostImageConfigGetAcceptanceBody) Fault() *soap.Fault { return b.Fault_ } + +func HostImageConfigGetAcceptance(ctx context.Context, r soap.RoundTripper, req *types.HostImageConfigGetAcceptance) (*types.HostImageConfigGetAcceptanceResponse, error) { + var reqBody, resBody HostImageConfigGetAcceptanceBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostImageConfigGetProfileBody struct { + Req *types.HostImageConfigGetProfile `xml:"urn:vim25 HostImageConfigGetProfile,omitempty"` + Res *types.HostImageConfigGetProfileResponse `xml:"HostImageConfigGetProfileResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostImageConfigGetProfileBody) Fault() *soap.Fault { return b.Fault_ } + +func HostImageConfigGetProfile(ctx context.Context, r soap.RoundTripper, req *types.HostImageConfigGetProfile) (*types.HostImageConfigGetProfileResponse, error) { + var reqBody, resBody HostImageConfigGetProfileBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostInflateDisk_TaskBody struct { + Req *types.HostInflateDisk_Task `xml:"urn:vim25 HostInflateDisk_Task,omitempty"` + Res *types.HostInflateDisk_TaskResponse `xml:"HostInflateDisk_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostInflateDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func HostInflateDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.HostInflateDisk_Task) (*types.HostInflateDisk_TaskResponse, error) { + var reqBody, resBody HostInflateDisk_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostListVStorageObjectBody struct { + Req *types.HostListVStorageObject `xml:"urn:vim25 HostListVStorageObject,omitempty"` + Res *types.HostListVStorageObjectResponse `xml:"HostListVStorageObjectResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostListVStorageObjectBody) Fault() *soap.Fault { return b.Fault_ } + +func HostListVStorageObject(ctx context.Context, r soap.RoundTripper, req *types.HostListVStorageObject) (*types.HostListVStorageObjectResponse, error) { + var reqBody, resBody HostListVStorageObjectBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostProfileResetValidationStateBody struct { + Req *types.HostProfileResetValidationState `xml:"urn:vim25 HostProfileResetValidationState,omitempty"` + Res *types.HostProfileResetValidationStateResponse `xml:"HostProfileResetValidationStateResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostProfileResetValidationStateBody) Fault() *soap.Fault { return b.Fault_ } + +func HostProfileResetValidationState(ctx context.Context, r soap.RoundTripper, req *types.HostProfileResetValidationState) (*types.HostProfileResetValidationStateResponse, error) { + var reqBody, resBody HostProfileResetValidationStateBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostReconcileDatastoreInventory_TaskBody struct { + Req *types.HostReconcileDatastoreInventory_Task `xml:"urn:vim25 HostReconcileDatastoreInventory_Task,omitempty"` + Res *types.HostReconcileDatastoreInventory_TaskResponse `xml:"HostReconcileDatastoreInventory_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostReconcileDatastoreInventory_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func HostReconcileDatastoreInventory_Task(ctx context.Context, r soap.RoundTripper, req *types.HostReconcileDatastoreInventory_Task) (*types.HostReconcileDatastoreInventory_TaskResponse, error) { + var reqBody, resBody HostReconcileDatastoreInventory_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostRegisterDiskBody struct { + Req *types.HostRegisterDisk `xml:"urn:vim25 HostRegisterDisk,omitempty"` + Res *types.HostRegisterDiskResponse `xml:"HostRegisterDiskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostRegisterDiskBody) Fault() *soap.Fault { return b.Fault_ } + +func HostRegisterDisk(ctx context.Context, r soap.RoundTripper, req *types.HostRegisterDisk) (*types.HostRegisterDiskResponse, error) { + var reqBody, resBody HostRegisterDiskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostRelocateVStorageObject_TaskBody struct { + Req *types.HostRelocateVStorageObject_Task `xml:"urn:vim25 HostRelocateVStorageObject_Task,omitempty"` + Res *types.HostRelocateVStorageObject_TaskResponse `xml:"HostRelocateVStorageObject_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostRelocateVStorageObject_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func HostRelocateVStorageObject_Task(ctx context.Context, r soap.RoundTripper, req *types.HostRelocateVStorageObject_Task) (*types.HostRelocateVStorageObject_TaskResponse, error) { + var reqBody, resBody HostRelocateVStorageObject_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostRemoveVFlashResourceBody struct { + Req *types.HostRemoveVFlashResource `xml:"urn:vim25 HostRemoveVFlashResource,omitempty"` + Res *types.HostRemoveVFlashResourceResponse `xml:"HostRemoveVFlashResourceResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostRemoveVFlashResourceBody) Fault() *soap.Fault { return b.Fault_ } + +func HostRemoveVFlashResource(ctx context.Context, r soap.RoundTripper, req *types.HostRemoveVFlashResource) (*types.HostRemoveVFlashResourceResponse, error) { + var reqBody, resBody HostRemoveVFlashResourceBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostRenameVStorageObjectBody struct { + Req *types.HostRenameVStorageObject `xml:"urn:vim25 HostRenameVStorageObject,omitempty"` + Res *types.HostRenameVStorageObjectResponse `xml:"HostRenameVStorageObjectResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostRenameVStorageObjectBody) Fault() *soap.Fault { return b.Fault_ } + +func HostRenameVStorageObject(ctx context.Context, r soap.RoundTripper, req *types.HostRenameVStorageObject) (*types.HostRenameVStorageObjectResponse, error) { + var reqBody, resBody HostRenameVStorageObjectBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostRetrieveVStorageInfrastructureObjectPolicyBody struct { + Req *types.HostRetrieveVStorageInfrastructureObjectPolicy `xml:"urn:vim25 HostRetrieveVStorageInfrastructureObjectPolicy,omitempty"` + Res *types.HostRetrieveVStorageInfrastructureObjectPolicyResponse `xml:"HostRetrieveVStorageInfrastructureObjectPolicyResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostRetrieveVStorageInfrastructureObjectPolicyBody) Fault() *soap.Fault { return b.Fault_ } + +func HostRetrieveVStorageInfrastructureObjectPolicy(ctx context.Context, r soap.RoundTripper, req *types.HostRetrieveVStorageInfrastructureObjectPolicy) (*types.HostRetrieveVStorageInfrastructureObjectPolicyResponse, error) { + var reqBody, resBody HostRetrieveVStorageInfrastructureObjectPolicyBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostRetrieveVStorageObjectBody struct { + Req *types.HostRetrieveVStorageObject `xml:"urn:vim25 HostRetrieveVStorageObject,omitempty"` + Res *types.HostRetrieveVStorageObjectResponse `xml:"HostRetrieveVStorageObjectResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostRetrieveVStorageObjectBody) Fault() *soap.Fault { return b.Fault_ } + +func HostRetrieveVStorageObject(ctx context.Context, r soap.RoundTripper, req *types.HostRetrieveVStorageObject) (*types.HostRetrieveVStorageObjectResponse, error) { + var reqBody, resBody HostRetrieveVStorageObjectBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostRetrieveVStorageObjectMetadataBody struct { + Req *types.HostRetrieveVStorageObjectMetadata `xml:"urn:vim25 HostRetrieveVStorageObjectMetadata,omitempty"` + Res *types.HostRetrieveVStorageObjectMetadataResponse `xml:"HostRetrieveVStorageObjectMetadataResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostRetrieveVStorageObjectMetadataBody) Fault() *soap.Fault { return b.Fault_ } + +func HostRetrieveVStorageObjectMetadata(ctx context.Context, r soap.RoundTripper, req *types.HostRetrieveVStorageObjectMetadata) (*types.HostRetrieveVStorageObjectMetadataResponse, error) { + var reqBody, resBody HostRetrieveVStorageObjectMetadataBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostRetrieveVStorageObjectMetadataValueBody struct { + Req *types.HostRetrieveVStorageObjectMetadataValue `xml:"urn:vim25 HostRetrieveVStorageObjectMetadataValue,omitempty"` + Res *types.HostRetrieveVStorageObjectMetadataValueResponse `xml:"HostRetrieveVStorageObjectMetadataValueResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostRetrieveVStorageObjectMetadataValueBody) Fault() *soap.Fault { return b.Fault_ } + +func HostRetrieveVStorageObjectMetadataValue(ctx context.Context, r soap.RoundTripper, req *types.HostRetrieveVStorageObjectMetadataValue) (*types.HostRetrieveVStorageObjectMetadataValueResponse, error) { + var reqBody, resBody HostRetrieveVStorageObjectMetadataValueBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostRetrieveVStorageObjectStateBody struct { + Req *types.HostRetrieveVStorageObjectState `xml:"urn:vim25 HostRetrieveVStorageObjectState,omitempty"` + Res *types.HostRetrieveVStorageObjectStateResponse `xml:"HostRetrieveVStorageObjectStateResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostRetrieveVStorageObjectStateBody) Fault() *soap.Fault { return b.Fault_ } + +func HostRetrieveVStorageObjectState(ctx context.Context, r soap.RoundTripper, req *types.HostRetrieveVStorageObjectState) (*types.HostRetrieveVStorageObjectStateResponse, error) { + var reqBody, resBody HostRetrieveVStorageObjectStateBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostScheduleReconcileDatastoreInventoryBody struct { + Req *types.HostScheduleReconcileDatastoreInventory `xml:"urn:vim25 HostScheduleReconcileDatastoreInventory,omitempty"` + Res *types.HostScheduleReconcileDatastoreInventoryResponse `xml:"HostScheduleReconcileDatastoreInventoryResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostScheduleReconcileDatastoreInventoryBody) Fault() *soap.Fault { return b.Fault_ } + +func HostScheduleReconcileDatastoreInventory(ctx context.Context, r soap.RoundTripper, req *types.HostScheduleReconcileDatastoreInventory) (*types.HostScheduleReconcileDatastoreInventoryResponse, error) { + var reqBody, resBody HostScheduleReconcileDatastoreInventoryBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostSetVStorageObjectControlFlagsBody struct { + Req *types.HostSetVStorageObjectControlFlags `xml:"urn:vim25 HostSetVStorageObjectControlFlags,omitempty"` + Res *types.HostSetVStorageObjectControlFlagsResponse `xml:"HostSetVStorageObjectControlFlagsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostSetVStorageObjectControlFlagsBody) Fault() *soap.Fault { return b.Fault_ } + +func HostSetVStorageObjectControlFlags(ctx context.Context, r soap.RoundTripper, req *types.HostSetVStorageObjectControlFlags) (*types.HostSetVStorageObjectControlFlagsResponse, error) { + var reqBody, resBody HostSetVStorageObjectControlFlagsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostSpecGetUpdatedHostsBody struct { + Req *types.HostSpecGetUpdatedHosts `xml:"urn:vim25 HostSpecGetUpdatedHosts,omitempty"` + Res *types.HostSpecGetUpdatedHostsResponse `xml:"HostSpecGetUpdatedHostsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostSpecGetUpdatedHostsBody) Fault() *soap.Fault { return b.Fault_ } + +func HostSpecGetUpdatedHosts(ctx context.Context, r soap.RoundTripper, req *types.HostSpecGetUpdatedHosts) (*types.HostSpecGetUpdatedHostsResponse, error) { + var reqBody, resBody HostSpecGetUpdatedHostsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostUpdateVStorageObjectMetadata_TaskBody struct { + Req *types.HostUpdateVStorageObjectMetadata_Task `xml:"urn:vim25 HostUpdateVStorageObjectMetadata_Task,omitempty"` + Res *types.HostUpdateVStorageObjectMetadata_TaskResponse `xml:"HostUpdateVStorageObjectMetadata_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostUpdateVStorageObjectMetadata_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func HostUpdateVStorageObjectMetadata_Task(ctx context.Context, r soap.RoundTripper, req *types.HostUpdateVStorageObjectMetadata_Task) (*types.HostUpdateVStorageObjectMetadata_TaskResponse, error) { + var reqBody, resBody HostUpdateVStorageObjectMetadata_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostVStorageObjectCreateDiskFromSnapshot_TaskBody struct { + Req *types.HostVStorageObjectCreateDiskFromSnapshot_Task `xml:"urn:vim25 HostVStorageObjectCreateDiskFromSnapshot_Task,omitempty"` + Res *types.HostVStorageObjectCreateDiskFromSnapshot_TaskResponse `xml:"HostVStorageObjectCreateDiskFromSnapshot_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostVStorageObjectCreateDiskFromSnapshot_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func HostVStorageObjectCreateDiskFromSnapshot_Task(ctx context.Context, r soap.RoundTripper, req *types.HostVStorageObjectCreateDiskFromSnapshot_Task) (*types.HostVStorageObjectCreateDiskFromSnapshot_TaskResponse, error) { + var reqBody, resBody HostVStorageObjectCreateDiskFromSnapshot_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostVStorageObjectCreateSnapshot_TaskBody struct { + Req *types.HostVStorageObjectCreateSnapshot_Task `xml:"urn:vim25 HostVStorageObjectCreateSnapshot_Task,omitempty"` + Res *types.HostVStorageObjectCreateSnapshot_TaskResponse `xml:"HostVStorageObjectCreateSnapshot_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostVStorageObjectCreateSnapshot_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func HostVStorageObjectCreateSnapshot_Task(ctx context.Context, r soap.RoundTripper, req *types.HostVStorageObjectCreateSnapshot_Task) (*types.HostVStorageObjectCreateSnapshot_TaskResponse, error) { + var reqBody, resBody HostVStorageObjectCreateSnapshot_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostVStorageObjectDeleteSnapshot_TaskBody struct { + Req *types.HostVStorageObjectDeleteSnapshot_Task `xml:"urn:vim25 HostVStorageObjectDeleteSnapshot_Task,omitempty"` + Res *types.HostVStorageObjectDeleteSnapshot_TaskResponse `xml:"HostVStorageObjectDeleteSnapshot_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostVStorageObjectDeleteSnapshot_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func HostVStorageObjectDeleteSnapshot_Task(ctx context.Context, r soap.RoundTripper, req *types.HostVStorageObjectDeleteSnapshot_Task) (*types.HostVStorageObjectDeleteSnapshot_TaskResponse, error) { + var reqBody, resBody HostVStorageObjectDeleteSnapshot_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostVStorageObjectRetrieveSnapshotInfoBody struct { + Req *types.HostVStorageObjectRetrieveSnapshotInfo `xml:"urn:vim25 HostVStorageObjectRetrieveSnapshotInfo,omitempty"` + Res *types.HostVStorageObjectRetrieveSnapshotInfoResponse `xml:"HostVStorageObjectRetrieveSnapshotInfoResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostVStorageObjectRetrieveSnapshotInfoBody) Fault() *soap.Fault { return b.Fault_ } + +func HostVStorageObjectRetrieveSnapshotInfo(ctx context.Context, r soap.RoundTripper, req *types.HostVStorageObjectRetrieveSnapshotInfo) (*types.HostVStorageObjectRetrieveSnapshotInfoResponse, error) { + var reqBody, resBody HostVStorageObjectRetrieveSnapshotInfoBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HostVStorageObjectRevert_TaskBody struct { + Req *types.HostVStorageObjectRevert_Task `xml:"urn:vim25 HostVStorageObjectRevert_Task,omitempty"` + Res *types.HostVStorageObjectRevert_TaskResponse `xml:"HostVStorageObjectRevert_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HostVStorageObjectRevert_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func HostVStorageObjectRevert_Task(ctx context.Context, r soap.RoundTripper, req *types.HostVStorageObjectRevert_Task) (*types.HostVStorageObjectRevert_TaskResponse, error) { + var reqBody, resBody HostVStorageObjectRevert_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HttpNfcLeaseAbortBody struct { + Req *types.HttpNfcLeaseAbort `xml:"urn:vim25 HttpNfcLeaseAbort,omitempty"` + Res *types.HttpNfcLeaseAbortResponse `xml:"HttpNfcLeaseAbortResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HttpNfcLeaseAbortBody) Fault() *soap.Fault { return b.Fault_ } + +func HttpNfcLeaseAbort(ctx context.Context, r soap.RoundTripper, req *types.HttpNfcLeaseAbort) (*types.HttpNfcLeaseAbortResponse, error) { + var reqBody, resBody HttpNfcLeaseAbortBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HttpNfcLeaseCompleteBody struct { + Req *types.HttpNfcLeaseComplete `xml:"urn:vim25 HttpNfcLeaseComplete,omitempty"` + Res *types.HttpNfcLeaseCompleteResponse `xml:"HttpNfcLeaseCompleteResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HttpNfcLeaseCompleteBody) Fault() *soap.Fault { return b.Fault_ } + +func HttpNfcLeaseComplete(ctx context.Context, r soap.RoundTripper, req *types.HttpNfcLeaseComplete) (*types.HttpNfcLeaseCompleteResponse, error) { + var reqBody, resBody HttpNfcLeaseCompleteBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HttpNfcLeaseGetManifestBody struct { + Req *types.HttpNfcLeaseGetManifest `xml:"urn:vim25 HttpNfcLeaseGetManifest,omitempty"` + Res *types.HttpNfcLeaseGetManifestResponse `xml:"HttpNfcLeaseGetManifestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HttpNfcLeaseGetManifestBody) Fault() *soap.Fault { return b.Fault_ } + +func HttpNfcLeaseGetManifest(ctx context.Context, r soap.RoundTripper, req *types.HttpNfcLeaseGetManifest) (*types.HttpNfcLeaseGetManifestResponse, error) { + var reqBody, resBody HttpNfcLeaseGetManifestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HttpNfcLeaseProgressBody struct { + Req *types.HttpNfcLeaseProgress `xml:"urn:vim25 HttpNfcLeaseProgress,omitempty"` + Res *types.HttpNfcLeaseProgressResponse `xml:"HttpNfcLeaseProgressResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HttpNfcLeaseProgressBody) Fault() *soap.Fault { return b.Fault_ } + +func HttpNfcLeaseProgress(ctx context.Context, r soap.RoundTripper, req *types.HttpNfcLeaseProgress) (*types.HttpNfcLeaseProgressResponse, error) { + var reqBody, resBody HttpNfcLeaseProgressBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HttpNfcLeasePullFromUrls_TaskBody struct { + Req *types.HttpNfcLeasePullFromUrls_Task `xml:"urn:vim25 HttpNfcLeasePullFromUrls_Task,omitempty"` + Res *types.HttpNfcLeasePullFromUrls_TaskResponse `xml:"HttpNfcLeasePullFromUrls_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HttpNfcLeasePullFromUrls_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func HttpNfcLeasePullFromUrls_Task(ctx context.Context, r soap.RoundTripper, req *types.HttpNfcLeasePullFromUrls_Task) (*types.HttpNfcLeasePullFromUrls_TaskResponse, error) { + var reqBody, resBody HttpNfcLeasePullFromUrls_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type HttpNfcLeaseSetManifestChecksumTypeBody struct { + Req *types.HttpNfcLeaseSetManifestChecksumType `xml:"urn:vim25 HttpNfcLeaseSetManifestChecksumType,omitempty"` + Res *types.HttpNfcLeaseSetManifestChecksumTypeResponse `xml:"HttpNfcLeaseSetManifestChecksumTypeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *HttpNfcLeaseSetManifestChecksumTypeBody) Fault() *soap.Fault { return b.Fault_ } + +func HttpNfcLeaseSetManifestChecksumType(ctx context.Context, r soap.RoundTripper, req *types.HttpNfcLeaseSetManifestChecksumType) (*types.HttpNfcLeaseSetManifestChecksumTypeResponse, error) { + var reqBody, resBody HttpNfcLeaseSetManifestChecksumTypeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ImpersonateUserBody struct { + Req *types.ImpersonateUser `xml:"urn:vim25 ImpersonateUser,omitempty"` + Res *types.ImpersonateUserResponse `xml:"ImpersonateUserResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ImpersonateUserBody) Fault() *soap.Fault { return b.Fault_ } + +func ImpersonateUser(ctx context.Context, r soap.RoundTripper, req *types.ImpersonateUser) (*types.ImpersonateUserResponse, error) { + var reqBody, resBody ImpersonateUserBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ImportCertificateForCAM_TaskBody struct { + Req *types.ImportCertificateForCAM_Task `xml:"urn:vim25 ImportCertificateForCAM_Task,omitempty"` + Res *types.ImportCertificateForCAM_TaskResponse `xml:"ImportCertificateForCAM_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ImportCertificateForCAM_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ImportCertificateForCAM_Task(ctx context.Context, r soap.RoundTripper, req *types.ImportCertificateForCAM_Task) (*types.ImportCertificateForCAM_TaskResponse, error) { + var reqBody, resBody ImportCertificateForCAM_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ImportUnmanagedSnapshotBody struct { + Req *types.ImportUnmanagedSnapshot `xml:"urn:vim25 ImportUnmanagedSnapshot,omitempty"` + Res *types.ImportUnmanagedSnapshotResponse `xml:"ImportUnmanagedSnapshotResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ImportUnmanagedSnapshotBody) Fault() *soap.Fault { return b.Fault_ } + +func ImportUnmanagedSnapshot(ctx context.Context, r soap.RoundTripper, req *types.ImportUnmanagedSnapshot) (*types.ImportUnmanagedSnapshotResponse, error) { + var reqBody, resBody ImportUnmanagedSnapshotBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ImportVAppBody struct { + Req *types.ImportVApp `xml:"urn:vim25 ImportVApp,omitempty"` + Res *types.ImportVAppResponse `xml:"ImportVAppResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ImportVAppBody) Fault() *soap.Fault { return b.Fault_ } + +func ImportVApp(ctx context.Context, r soap.RoundTripper, req *types.ImportVApp) (*types.ImportVAppResponse, error) { + var reqBody, resBody ImportVAppBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type InflateDisk_TaskBody struct { + Req *types.InflateDisk_Task `xml:"urn:vim25 InflateDisk_Task,omitempty"` + Res *types.InflateDisk_TaskResponse `xml:"InflateDisk_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *InflateDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func InflateDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.InflateDisk_Task) (*types.InflateDisk_TaskResponse, error) { + var reqBody, resBody InflateDisk_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type InflateVirtualDisk_TaskBody struct { + Req *types.InflateVirtualDisk_Task `xml:"urn:vim25 InflateVirtualDisk_Task,omitempty"` + Res *types.InflateVirtualDisk_TaskResponse `xml:"InflateVirtualDisk_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *InflateVirtualDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func InflateVirtualDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.InflateVirtualDisk_Task) (*types.InflateVirtualDisk_TaskResponse, error) { + var reqBody, resBody InflateVirtualDisk_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type InitializeDisks_TaskBody struct { + Req *types.InitializeDisks_Task `xml:"urn:vim25 InitializeDisks_Task,omitempty"` + Res *types.InitializeDisks_TaskResponse `xml:"InitializeDisks_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *InitializeDisks_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func InitializeDisks_Task(ctx context.Context, r soap.RoundTripper, req *types.InitializeDisks_Task) (*types.InitializeDisks_TaskResponse, error) { + var reqBody, resBody InitializeDisks_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type InitiateFileTransferFromGuestBody struct { + Req *types.InitiateFileTransferFromGuest `xml:"urn:vim25 InitiateFileTransferFromGuest,omitempty"` + Res *types.InitiateFileTransferFromGuestResponse `xml:"InitiateFileTransferFromGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *InitiateFileTransferFromGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func InitiateFileTransferFromGuest(ctx context.Context, r soap.RoundTripper, req *types.InitiateFileTransferFromGuest) (*types.InitiateFileTransferFromGuestResponse, error) { + var reqBody, resBody InitiateFileTransferFromGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type InitiateFileTransferToGuestBody struct { + Req *types.InitiateFileTransferToGuest `xml:"urn:vim25 InitiateFileTransferToGuest,omitempty"` + Res *types.InitiateFileTransferToGuestResponse `xml:"InitiateFileTransferToGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *InitiateFileTransferToGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func InitiateFileTransferToGuest(ctx context.Context, r soap.RoundTripper, req *types.InitiateFileTransferToGuest) (*types.InitiateFileTransferToGuestResponse, error) { + var reqBody, resBody InitiateFileTransferToGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type InstallHostPatchV2_TaskBody struct { + Req *types.InstallHostPatchV2_Task `xml:"urn:vim25 InstallHostPatchV2_Task,omitempty"` + Res *types.InstallHostPatchV2_TaskResponse `xml:"InstallHostPatchV2_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *InstallHostPatchV2_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func InstallHostPatchV2_Task(ctx context.Context, r soap.RoundTripper, req *types.InstallHostPatchV2_Task) (*types.InstallHostPatchV2_TaskResponse, error) { + var reqBody, resBody InstallHostPatchV2_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type InstallHostPatch_TaskBody struct { + Req *types.InstallHostPatch_Task `xml:"urn:vim25 InstallHostPatch_Task,omitempty"` + Res *types.InstallHostPatch_TaskResponse `xml:"InstallHostPatch_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *InstallHostPatch_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func InstallHostPatch_Task(ctx context.Context, r soap.RoundTripper, req *types.InstallHostPatch_Task) (*types.InstallHostPatch_TaskResponse, error) { + var reqBody, resBody InstallHostPatch_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type InstallIoFilter_TaskBody struct { + Req *types.InstallIoFilter_Task `xml:"urn:vim25 InstallIoFilter_Task,omitempty"` + Res *types.InstallIoFilter_TaskResponse `xml:"InstallIoFilter_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *InstallIoFilter_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func InstallIoFilter_Task(ctx context.Context, r soap.RoundTripper, req *types.InstallIoFilter_Task) (*types.InstallIoFilter_TaskResponse, error) { + var reqBody, resBody InstallIoFilter_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type InstallServerCertificateBody struct { + Req *types.InstallServerCertificate `xml:"urn:vim25 InstallServerCertificate,omitempty"` + Res *types.InstallServerCertificateResponse `xml:"InstallServerCertificateResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *InstallServerCertificateBody) Fault() *soap.Fault { return b.Fault_ } + +func InstallServerCertificate(ctx context.Context, r soap.RoundTripper, req *types.InstallServerCertificate) (*types.InstallServerCertificateResponse, error) { + var reqBody, resBody InstallServerCertificateBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type InstallSmartCardTrustAnchorBody struct { + Req *types.InstallSmartCardTrustAnchor `xml:"urn:vim25 InstallSmartCardTrustAnchor,omitempty"` + Res *types.InstallSmartCardTrustAnchorResponse `xml:"InstallSmartCardTrustAnchorResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *InstallSmartCardTrustAnchorBody) Fault() *soap.Fault { return b.Fault_ } + +func InstallSmartCardTrustAnchor(ctx context.Context, r soap.RoundTripper, req *types.InstallSmartCardTrustAnchor) (*types.InstallSmartCardTrustAnchorResponse, error) { + var reqBody, resBody InstallSmartCardTrustAnchorBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type InstantClone_TaskBody struct { + Req *types.InstantClone_Task `xml:"urn:vim25 InstantClone_Task,omitempty"` + Res *types.InstantClone_TaskResponse `xml:"InstantClone_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *InstantClone_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func InstantClone_Task(ctx context.Context, r soap.RoundTripper, req *types.InstantClone_Task) (*types.InstantClone_TaskResponse, error) { + var reqBody, resBody InstantClone_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type IsKmsClusterActiveBody struct { + Req *types.IsKmsClusterActive `xml:"urn:vim25 IsKmsClusterActive,omitempty"` + Res *types.IsKmsClusterActiveResponse `xml:"IsKmsClusterActiveResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *IsKmsClusterActiveBody) Fault() *soap.Fault { return b.Fault_ } + +func IsKmsClusterActive(ctx context.Context, r soap.RoundTripper, req *types.IsKmsClusterActive) (*types.IsKmsClusterActiveResponse, error) { + var reqBody, resBody IsKmsClusterActiveBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type IsSharedGraphicsActiveBody struct { + Req *types.IsSharedGraphicsActive `xml:"urn:vim25 IsSharedGraphicsActive,omitempty"` + Res *types.IsSharedGraphicsActiveResponse `xml:"IsSharedGraphicsActiveResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *IsSharedGraphicsActiveBody) Fault() *soap.Fault { return b.Fault_ } + +func IsSharedGraphicsActive(ctx context.Context, r soap.RoundTripper, req *types.IsSharedGraphicsActive) (*types.IsSharedGraphicsActiveResponse, error) { + var reqBody, resBody IsSharedGraphicsActiveBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type JoinDomainWithCAM_TaskBody struct { + Req *types.JoinDomainWithCAM_Task `xml:"urn:vim25 JoinDomainWithCAM_Task,omitempty"` + Res *types.JoinDomainWithCAM_TaskResponse `xml:"JoinDomainWithCAM_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *JoinDomainWithCAM_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func JoinDomainWithCAM_Task(ctx context.Context, r soap.RoundTripper, req *types.JoinDomainWithCAM_Task) (*types.JoinDomainWithCAM_TaskResponse, error) { + var reqBody, resBody JoinDomainWithCAM_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type JoinDomain_TaskBody struct { + Req *types.JoinDomain_Task `xml:"urn:vim25 JoinDomain_Task,omitempty"` + Res *types.JoinDomain_TaskResponse `xml:"JoinDomain_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *JoinDomain_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func JoinDomain_Task(ctx context.Context, r soap.RoundTripper, req *types.JoinDomain_Task) (*types.JoinDomain_TaskResponse, error) { + var reqBody, resBody JoinDomain_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type LeaveCurrentDomain_TaskBody struct { + Req *types.LeaveCurrentDomain_Task `xml:"urn:vim25 LeaveCurrentDomain_Task,omitempty"` + Res *types.LeaveCurrentDomain_TaskResponse `xml:"LeaveCurrentDomain_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *LeaveCurrentDomain_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func LeaveCurrentDomain_Task(ctx context.Context, r soap.RoundTripper, req *types.LeaveCurrentDomain_Task) (*types.LeaveCurrentDomain_TaskResponse, error) { + var reqBody, resBody LeaveCurrentDomain_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ListCACertificateRevocationListsBody struct { + Req *types.ListCACertificateRevocationLists `xml:"urn:vim25 ListCACertificateRevocationLists,omitempty"` + Res *types.ListCACertificateRevocationListsResponse `xml:"ListCACertificateRevocationListsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ListCACertificateRevocationListsBody) Fault() *soap.Fault { return b.Fault_ } + +func ListCACertificateRevocationLists(ctx context.Context, r soap.RoundTripper, req *types.ListCACertificateRevocationLists) (*types.ListCACertificateRevocationListsResponse, error) { + var reqBody, resBody ListCACertificateRevocationListsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ListCACertificatesBody struct { + Req *types.ListCACertificates `xml:"urn:vim25 ListCACertificates,omitempty"` + Res *types.ListCACertificatesResponse `xml:"ListCACertificatesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ListCACertificatesBody) Fault() *soap.Fault { return b.Fault_ } + +func ListCACertificates(ctx context.Context, r soap.RoundTripper, req *types.ListCACertificates) (*types.ListCACertificatesResponse, error) { + var reqBody, resBody ListCACertificatesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ListFilesInGuestBody struct { + Req *types.ListFilesInGuest `xml:"urn:vim25 ListFilesInGuest,omitempty"` + Res *types.ListFilesInGuestResponse `xml:"ListFilesInGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ListFilesInGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func ListFilesInGuest(ctx context.Context, r soap.RoundTripper, req *types.ListFilesInGuest) (*types.ListFilesInGuestResponse, error) { + var reqBody, resBody ListFilesInGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ListGuestAliasesBody struct { + Req *types.ListGuestAliases `xml:"urn:vim25 ListGuestAliases,omitempty"` + Res *types.ListGuestAliasesResponse `xml:"ListGuestAliasesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ListGuestAliasesBody) Fault() *soap.Fault { return b.Fault_ } + +func ListGuestAliases(ctx context.Context, r soap.RoundTripper, req *types.ListGuestAliases) (*types.ListGuestAliasesResponse, error) { + var reqBody, resBody ListGuestAliasesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ListGuestMappedAliasesBody struct { + Req *types.ListGuestMappedAliases `xml:"urn:vim25 ListGuestMappedAliases,omitempty"` + Res *types.ListGuestMappedAliasesResponse `xml:"ListGuestMappedAliasesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ListGuestMappedAliasesBody) Fault() *soap.Fault { return b.Fault_ } + +func ListGuestMappedAliases(ctx context.Context, r soap.RoundTripper, req *types.ListGuestMappedAliases) (*types.ListGuestMappedAliasesResponse, error) { + var reqBody, resBody ListGuestMappedAliasesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ListKeysBody struct { + Req *types.ListKeys `xml:"urn:vim25 ListKeys,omitempty"` + Res *types.ListKeysResponse `xml:"ListKeysResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ListKeysBody) Fault() *soap.Fault { return b.Fault_ } + +func ListKeys(ctx context.Context, r soap.RoundTripper, req *types.ListKeys) (*types.ListKeysResponse, error) { + var reqBody, resBody ListKeysBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ListKmipServersBody struct { + Req *types.ListKmipServers `xml:"urn:vim25 ListKmipServers,omitempty"` + Res *types.ListKmipServersResponse `xml:"ListKmipServersResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ListKmipServersBody) Fault() *soap.Fault { return b.Fault_ } + +func ListKmipServers(ctx context.Context, r soap.RoundTripper, req *types.ListKmipServers) (*types.ListKmipServersResponse, error) { + var reqBody, resBody ListKmipServersBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ListKmsClustersBody struct { + Req *types.ListKmsClusters `xml:"urn:vim25 ListKmsClusters,omitempty"` + Res *types.ListKmsClustersResponse `xml:"ListKmsClustersResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ListKmsClustersBody) Fault() *soap.Fault { return b.Fault_ } + +func ListKmsClusters(ctx context.Context, r soap.RoundTripper, req *types.ListKmsClusters) (*types.ListKmsClustersResponse, error) { + var reqBody, resBody ListKmsClustersBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ListProcessesInGuestBody struct { + Req *types.ListProcessesInGuest `xml:"urn:vim25 ListProcessesInGuest,omitempty"` + Res *types.ListProcessesInGuestResponse `xml:"ListProcessesInGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ListProcessesInGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func ListProcessesInGuest(ctx context.Context, r soap.RoundTripper, req *types.ListProcessesInGuest) (*types.ListProcessesInGuestResponse, error) { + var reqBody, resBody ListProcessesInGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ListRegistryKeysInGuestBody struct { + Req *types.ListRegistryKeysInGuest `xml:"urn:vim25 ListRegistryKeysInGuest,omitempty"` + Res *types.ListRegistryKeysInGuestResponse `xml:"ListRegistryKeysInGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ListRegistryKeysInGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func ListRegistryKeysInGuest(ctx context.Context, r soap.RoundTripper, req *types.ListRegistryKeysInGuest) (*types.ListRegistryKeysInGuestResponse, error) { + var reqBody, resBody ListRegistryKeysInGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ListRegistryValuesInGuestBody struct { + Req *types.ListRegistryValuesInGuest `xml:"urn:vim25 ListRegistryValuesInGuest,omitempty"` + Res *types.ListRegistryValuesInGuestResponse `xml:"ListRegistryValuesInGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ListRegistryValuesInGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func ListRegistryValuesInGuest(ctx context.Context, r soap.RoundTripper, req *types.ListRegistryValuesInGuest) (*types.ListRegistryValuesInGuestResponse, error) { + var reqBody, resBody ListRegistryValuesInGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ListSmartCardTrustAnchorsBody struct { + Req *types.ListSmartCardTrustAnchors `xml:"urn:vim25 ListSmartCardTrustAnchors,omitempty"` + Res *types.ListSmartCardTrustAnchorsResponse `xml:"ListSmartCardTrustAnchorsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ListSmartCardTrustAnchorsBody) Fault() *soap.Fault { return b.Fault_ } + +func ListSmartCardTrustAnchors(ctx context.Context, r soap.RoundTripper, req *types.ListSmartCardTrustAnchors) (*types.ListSmartCardTrustAnchorsResponse, error) { + var reqBody, resBody ListSmartCardTrustAnchorsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ListTagsAttachedToVStorageObjectBody struct { + Req *types.ListTagsAttachedToVStorageObject `xml:"urn:vim25 ListTagsAttachedToVStorageObject,omitempty"` + Res *types.ListTagsAttachedToVStorageObjectResponse `xml:"ListTagsAttachedToVStorageObjectResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ListTagsAttachedToVStorageObjectBody) Fault() *soap.Fault { return b.Fault_ } + +func ListTagsAttachedToVStorageObject(ctx context.Context, r soap.RoundTripper, req *types.ListTagsAttachedToVStorageObject) (*types.ListTagsAttachedToVStorageObjectResponse, error) { + var reqBody, resBody ListTagsAttachedToVStorageObjectBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ListVStorageObjectBody struct { + Req *types.ListVStorageObject `xml:"urn:vim25 ListVStorageObject,omitempty"` + Res *types.ListVStorageObjectResponse `xml:"ListVStorageObjectResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ListVStorageObjectBody) Fault() *soap.Fault { return b.Fault_ } + +func ListVStorageObject(ctx context.Context, r soap.RoundTripper, req *types.ListVStorageObject) (*types.ListVStorageObjectResponse, error) { + var reqBody, resBody ListVStorageObjectBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ListVStorageObjectsAttachedToTagBody struct { + Req *types.ListVStorageObjectsAttachedToTag `xml:"urn:vim25 ListVStorageObjectsAttachedToTag,omitempty"` + Res *types.ListVStorageObjectsAttachedToTagResponse `xml:"ListVStorageObjectsAttachedToTagResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ListVStorageObjectsAttachedToTagBody) Fault() *soap.Fault { return b.Fault_ } + +func ListVStorageObjectsAttachedToTag(ctx context.Context, r soap.RoundTripper, req *types.ListVStorageObjectsAttachedToTag) (*types.ListVStorageObjectsAttachedToTagResponse, error) { + var reqBody, resBody ListVStorageObjectsAttachedToTagBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type LogUserEventBody struct { + Req *types.LogUserEvent `xml:"urn:vim25 LogUserEvent,omitempty"` + Res *types.LogUserEventResponse `xml:"LogUserEventResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *LogUserEventBody) Fault() *soap.Fault { return b.Fault_ } + +func LogUserEvent(ctx context.Context, r soap.RoundTripper, req *types.LogUserEvent) (*types.LogUserEventResponse, error) { + var reqBody, resBody LogUserEventBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type LoginBody struct { + Req *types.Login `xml:"urn:vim25 Login,omitempty"` + Res *types.LoginResponse `xml:"LoginResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *LoginBody) Fault() *soap.Fault { return b.Fault_ } + +func Login(ctx context.Context, r soap.RoundTripper, req *types.Login) (*types.LoginResponse, error) { + var reqBody, resBody LoginBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type LoginBySSPIBody struct { + Req *types.LoginBySSPI `xml:"urn:vim25 LoginBySSPI,omitempty"` + Res *types.LoginBySSPIResponse `xml:"LoginBySSPIResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *LoginBySSPIBody) Fault() *soap.Fault { return b.Fault_ } + +func LoginBySSPI(ctx context.Context, r soap.RoundTripper, req *types.LoginBySSPI) (*types.LoginBySSPIResponse, error) { + var reqBody, resBody LoginBySSPIBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type LoginByTokenBody struct { + Req *types.LoginByToken `xml:"urn:vim25 LoginByToken,omitempty"` + Res *types.LoginByTokenResponse `xml:"LoginByTokenResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *LoginByTokenBody) Fault() *soap.Fault { return b.Fault_ } + +func LoginByToken(ctx context.Context, r soap.RoundTripper, req *types.LoginByToken) (*types.LoginByTokenResponse, error) { + var reqBody, resBody LoginByTokenBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type LoginExtensionByCertificateBody struct { + Req *types.LoginExtensionByCertificate `xml:"urn:vim25 LoginExtensionByCertificate,omitempty"` + Res *types.LoginExtensionByCertificateResponse `xml:"LoginExtensionByCertificateResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *LoginExtensionByCertificateBody) Fault() *soap.Fault { return b.Fault_ } + +func LoginExtensionByCertificate(ctx context.Context, r soap.RoundTripper, req *types.LoginExtensionByCertificate) (*types.LoginExtensionByCertificateResponse, error) { + var reqBody, resBody LoginExtensionByCertificateBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type LoginExtensionBySubjectNameBody struct { + Req *types.LoginExtensionBySubjectName `xml:"urn:vim25 LoginExtensionBySubjectName,omitempty"` + Res *types.LoginExtensionBySubjectNameResponse `xml:"LoginExtensionBySubjectNameResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *LoginExtensionBySubjectNameBody) Fault() *soap.Fault { return b.Fault_ } + +func LoginExtensionBySubjectName(ctx context.Context, r soap.RoundTripper, req *types.LoginExtensionBySubjectName) (*types.LoginExtensionBySubjectNameResponse, error) { + var reqBody, resBody LoginExtensionBySubjectNameBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type LogoutBody struct { + Req *types.Logout `xml:"urn:vim25 Logout,omitempty"` + Res *types.LogoutResponse `xml:"LogoutResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *LogoutBody) Fault() *soap.Fault { return b.Fault_ } + +func Logout(ctx context.Context, r soap.RoundTripper, req *types.Logout) (*types.LogoutResponse, error) { + var reqBody, resBody LogoutBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type LookupDvPortGroupBody struct { + Req *types.LookupDvPortGroup `xml:"urn:vim25 LookupDvPortGroup,omitempty"` + Res *types.LookupDvPortGroupResponse `xml:"LookupDvPortGroupResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *LookupDvPortGroupBody) Fault() *soap.Fault { return b.Fault_ } + +func LookupDvPortGroup(ctx context.Context, r soap.RoundTripper, req *types.LookupDvPortGroup) (*types.LookupDvPortGroupResponse, error) { + var reqBody, resBody LookupDvPortGroupBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type LookupVmOverheadMemoryBody struct { + Req *types.LookupVmOverheadMemory `xml:"urn:vim25 LookupVmOverheadMemory,omitempty"` + Res *types.LookupVmOverheadMemoryResponse `xml:"LookupVmOverheadMemoryResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *LookupVmOverheadMemoryBody) Fault() *soap.Fault { return b.Fault_ } + +func LookupVmOverheadMemory(ctx context.Context, r soap.RoundTripper, req *types.LookupVmOverheadMemory) (*types.LookupVmOverheadMemoryResponse, error) { + var reqBody, resBody LookupVmOverheadMemoryBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MakeDirectoryBody struct { + Req *types.MakeDirectory `xml:"urn:vim25 MakeDirectory,omitempty"` + Res *types.MakeDirectoryResponse `xml:"MakeDirectoryResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MakeDirectoryBody) Fault() *soap.Fault { return b.Fault_ } + +func MakeDirectory(ctx context.Context, r soap.RoundTripper, req *types.MakeDirectory) (*types.MakeDirectoryResponse, error) { + var reqBody, resBody MakeDirectoryBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MakeDirectoryInGuestBody struct { + Req *types.MakeDirectoryInGuest `xml:"urn:vim25 MakeDirectoryInGuest,omitempty"` + Res *types.MakeDirectoryInGuestResponse `xml:"MakeDirectoryInGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MakeDirectoryInGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func MakeDirectoryInGuest(ctx context.Context, r soap.RoundTripper, req *types.MakeDirectoryInGuest) (*types.MakeDirectoryInGuestResponse, error) { + var reqBody, resBody MakeDirectoryInGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MakePrimaryVM_TaskBody struct { + Req *types.MakePrimaryVM_Task `xml:"urn:vim25 MakePrimaryVM_Task,omitempty"` + Res *types.MakePrimaryVM_TaskResponse `xml:"MakePrimaryVM_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MakePrimaryVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func MakePrimaryVM_Task(ctx context.Context, r soap.RoundTripper, req *types.MakePrimaryVM_Task) (*types.MakePrimaryVM_TaskResponse, error) { + var reqBody, resBody MakePrimaryVM_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MarkAsLocal_TaskBody struct { + Req *types.MarkAsLocal_Task `xml:"urn:vim25 MarkAsLocal_Task,omitempty"` + Res *types.MarkAsLocal_TaskResponse `xml:"MarkAsLocal_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MarkAsLocal_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func MarkAsLocal_Task(ctx context.Context, r soap.RoundTripper, req *types.MarkAsLocal_Task) (*types.MarkAsLocal_TaskResponse, error) { + var reqBody, resBody MarkAsLocal_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MarkAsNonLocal_TaskBody struct { + Req *types.MarkAsNonLocal_Task `xml:"urn:vim25 MarkAsNonLocal_Task,omitempty"` + Res *types.MarkAsNonLocal_TaskResponse `xml:"MarkAsNonLocal_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MarkAsNonLocal_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func MarkAsNonLocal_Task(ctx context.Context, r soap.RoundTripper, req *types.MarkAsNonLocal_Task) (*types.MarkAsNonLocal_TaskResponse, error) { + var reqBody, resBody MarkAsNonLocal_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MarkAsNonSsd_TaskBody struct { + Req *types.MarkAsNonSsd_Task `xml:"urn:vim25 MarkAsNonSsd_Task,omitempty"` + Res *types.MarkAsNonSsd_TaskResponse `xml:"MarkAsNonSsd_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MarkAsNonSsd_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func MarkAsNonSsd_Task(ctx context.Context, r soap.RoundTripper, req *types.MarkAsNonSsd_Task) (*types.MarkAsNonSsd_TaskResponse, error) { + var reqBody, resBody MarkAsNonSsd_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MarkAsSsd_TaskBody struct { + Req *types.MarkAsSsd_Task `xml:"urn:vim25 MarkAsSsd_Task,omitempty"` + Res *types.MarkAsSsd_TaskResponse `xml:"MarkAsSsd_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MarkAsSsd_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func MarkAsSsd_Task(ctx context.Context, r soap.RoundTripper, req *types.MarkAsSsd_Task) (*types.MarkAsSsd_TaskResponse, error) { + var reqBody, resBody MarkAsSsd_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MarkAsTemplateBody struct { + Req *types.MarkAsTemplate `xml:"urn:vim25 MarkAsTemplate,omitempty"` + Res *types.MarkAsTemplateResponse `xml:"MarkAsTemplateResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MarkAsTemplateBody) Fault() *soap.Fault { return b.Fault_ } + +func MarkAsTemplate(ctx context.Context, r soap.RoundTripper, req *types.MarkAsTemplate) (*types.MarkAsTemplateResponse, error) { + var reqBody, resBody MarkAsTemplateBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MarkAsVirtualMachineBody struct { + Req *types.MarkAsVirtualMachine `xml:"urn:vim25 MarkAsVirtualMachine,omitempty"` + Res *types.MarkAsVirtualMachineResponse `xml:"MarkAsVirtualMachineResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MarkAsVirtualMachineBody) Fault() *soap.Fault { return b.Fault_ } + +func MarkAsVirtualMachine(ctx context.Context, r soap.RoundTripper, req *types.MarkAsVirtualMachine) (*types.MarkAsVirtualMachineResponse, error) { + var reqBody, resBody MarkAsVirtualMachineBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MarkDefaultBody struct { + Req *types.MarkDefault `xml:"urn:vim25 MarkDefault,omitempty"` + Res *types.MarkDefaultResponse `xml:"MarkDefaultResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MarkDefaultBody) Fault() *soap.Fault { return b.Fault_ } + +func MarkDefault(ctx context.Context, r soap.RoundTripper, req *types.MarkDefault) (*types.MarkDefaultResponse, error) { + var reqBody, resBody MarkDefaultBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MarkForRemovalBody struct { + Req *types.MarkForRemoval `xml:"urn:vim25 MarkForRemoval,omitempty"` + Res *types.MarkForRemovalResponse `xml:"MarkForRemovalResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MarkForRemovalBody) Fault() *soap.Fault { return b.Fault_ } + +func MarkForRemoval(ctx context.Context, r soap.RoundTripper, req *types.MarkForRemoval) (*types.MarkForRemovalResponse, error) { + var reqBody, resBody MarkForRemovalBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MarkPerenniallyReservedBody struct { + Req *types.MarkPerenniallyReserved `xml:"urn:vim25 MarkPerenniallyReserved,omitempty"` + Res *types.MarkPerenniallyReservedResponse `xml:"MarkPerenniallyReservedResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MarkPerenniallyReservedBody) Fault() *soap.Fault { return b.Fault_ } + +func MarkPerenniallyReserved(ctx context.Context, r soap.RoundTripper, req *types.MarkPerenniallyReserved) (*types.MarkPerenniallyReservedResponse, error) { + var reqBody, resBody MarkPerenniallyReservedBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MarkPerenniallyReservedEx_TaskBody struct { + Req *types.MarkPerenniallyReservedEx_Task `xml:"urn:vim25 MarkPerenniallyReservedEx_Task,omitempty"` + Res *types.MarkPerenniallyReservedEx_TaskResponse `xml:"MarkPerenniallyReservedEx_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MarkPerenniallyReservedEx_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func MarkPerenniallyReservedEx_Task(ctx context.Context, r soap.RoundTripper, req *types.MarkPerenniallyReservedEx_Task) (*types.MarkPerenniallyReservedEx_TaskResponse, error) { + var reqBody, resBody MarkPerenniallyReservedEx_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MarkServiceProviderEntitiesBody struct { + Req *types.MarkServiceProviderEntities `xml:"urn:vim25 MarkServiceProviderEntities,omitempty"` + Res *types.MarkServiceProviderEntitiesResponse `xml:"MarkServiceProviderEntitiesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MarkServiceProviderEntitiesBody) Fault() *soap.Fault { return b.Fault_ } + +func MarkServiceProviderEntities(ctx context.Context, r soap.RoundTripper, req *types.MarkServiceProviderEntities) (*types.MarkServiceProviderEntitiesResponse, error) { + var reqBody, resBody MarkServiceProviderEntitiesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MergeDvs_TaskBody struct { + Req *types.MergeDvs_Task `xml:"urn:vim25 MergeDvs_Task,omitempty"` + Res *types.MergeDvs_TaskResponse `xml:"MergeDvs_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MergeDvs_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func MergeDvs_Task(ctx context.Context, r soap.RoundTripper, req *types.MergeDvs_Task) (*types.MergeDvs_TaskResponse, error) { + var reqBody, resBody MergeDvs_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MergePermissionsBody struct { + Req *types.MergePermissions `xml:"urn:vim25 MergePermissions,omitempty"` + Res *types.MergePermissionsResponse `xml:"MergePermissionsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MergePermissionsBody) Fault() *soap.Fault { return b.Fault_ } + +func MergePermissions(ctx context.Context, r soap.RoundTripper, req *types.MergePermissions) (*types.MergePermissionsResponse, error) { + var reqBody, resBody MergePermissionsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MigrateVM_TaskBody struct { + Req *types.MigrateVM_Task `xml:"urn:vim25 MigrateVM_Task,omitempty"` + Res *types.MigrateVM_TaskResponse `xml:"MigrateVM_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MigrateVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func MigrateVM_Task(ctx context.Context, r soap.RoundTripper, req *types.MigrateVM_Task) (*types.MigrateVM_TaskResponse, error) { + var reqBody, resBody MigrateVM_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ModifyListViewBody struct { + Req *types.ModifyListView `xml:"urn:vim25 ModifyListView,omitempty"` + Res *types.ModifyListViewResponse `xml:"ModifyListViewResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ModifyListViewBody) Fault() *soap.Fault { return b.Fault_ } + +func ModifyListView(ctx context.Context, r soap.RoundTripper, req *types.ModifyListView) (*types.ModifyListViewResponse, error) { + var reqBody, resBody ModifyListViewBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MountToolsInstallerBody struct { + Req *types.MountToolsInstaller `xml:"urn:vim25 MountToolsInstaller,omitempty"` + Res *types.MountToolsInstallerResponse `xml:"MountToolsInstallerResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MountToolsInstallerBody) Fault() *soap.Fault { return b.Fault_ } + +func MountToolsInstaller(ctx context.Context, r soap.RoundTripper, req *types.MountToolsInstaller) (*types.MountToolsInstallerResponse, error) { + var reqBody, resBody MountToolsInstallerBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MountVffsVolumeBody struct { + Req *types.MountVffsVolume `xml:"urn:vim25 MountVffsVolume,omitempty"` + Res *types.MountVffsVolumeResponse `xml:"MountVffsVolumeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MountVffsVolumeBody) Fault() *soap.Fault { return b.Fault_ } + +func MountVffsVolume(ctx context.Context, r soap.RoundTripper, req *types.MountVffsVolume) (*types.MountVffsVolumeResponse, error) { + var reqBody, resBody MountVffsVolumeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MountVmfsVolumeBody struct { + Req *types.MountVmfsVolume `xml:"urn:vim25 MountVmfsVolume,omitempty"` + Res *types.MountVmfsVolumeResponse `xml:"MountVmfsVolumeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MountVmfsVolumeBody) Fault() *soap.Fault { return b.Fault_ } + +func MountVmfsVolume(ctx context.Context, r soap.RoundTripper, req *types.MountVmfsVolume) (*types.MountVmfsVolumeResponse, error) { + var reqBody, resBody MountVmfsVolumeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MountVmfsVolumeEx_TaskBody struct { + Req *types.MountVmfsVolumeEx_Task `xml:"urn:vim25 MountVmfsVolumeEx_Task,omitempty"` + Res *types.MountVmfsVolumeEx_TaskResponse `xml:"MountVmfsVolumeEx_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MountVmfsVolumeEx_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func MountVmfsVolumeEx_Task(ctx context.Context, r soap.RoundTripper, req *types.MountVmfsVolumeEx_Task) (*types.MountVmfsVolumeEx_TaskResponse, error) { + var reqBody, resBody MountVmfsVolumeEx_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MoveDVPort_TaskBody struct { + Req *types.MoveDVPort_Task `xml:"urn:vim25 MoveDVPort_Task,omitempty"` + Res *types.MoveDVPort_TaskResponse `xml:"MoveDVPort_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MoveDVPort_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func MoveDVPort_Task(ctx context.Context, r soap.RoundTripper, req *types.MoveDVPort_Task) (*types.MoveDVPort_TaskResponse, error) { + var reqBody, resBody MoveDVPort_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MoveDatastoreFile_TaskBody struct { + Req *types.MoveDatastoreFile_Task `xml:"urn:vim25 MoveDatastoreFile_Task,omitempty"` + Res *types.MoveDatastoreFile_TaskResponse `xml:"MoveDatastoreFile_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MoveDatastoreFile_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func MoveDatastoreFile_Task(ctx context.Context, r soap.RoundTripper, req *types.MoveDatastoreFile_Task) (*types.MoveDatastoreFile_TaskResponse, error) { + var reqBody, resBody MoveDatastoreFile_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MoveDirectoryInGuestBody struct { + Req *types.MoveDirectoryInGuest `xml:"urn:vim25 MoveDirectoryInGuest,omitempty"` + Res *types.MoveDirectoryInGuestResponse `xml:"MoveDirectoryInGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MoveDirectoryInGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func MoveDirectoryInGuest(ctx context.Context, r soap.RoundTripper, req *types.MoveDirectoryInGuest) (*types.MoveDirectoryInGuestResponse, error) { + var reqBody, resBody MoveDirectoryInGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MoveFileInGuestBody struct { + Req *types.MoveFileInGuest `xml:"urn:vim25 MoveFileInGuest,omitempty"` + Res *types.MoveFileInGuestResponse `xml:"MoveFileInGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MoveFileInGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func MoveFileInGuest(ctx context.Context, r soap.RoundTripper, req *types.MoveFileInGuest) (*types.MoveFileInGuestResponse, error) { + var reqBody, resBody MoveFileInGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MoveHostInto_TaskBody struct { + Req *types.MoveHostInto_Task `xml:"urn:vim25 MoveHostInto_Task,omitempty"` + Res *types.MoveHostInto_TaskResponse `xml:"MoveHostInto_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MoveHostInto_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func MoveHostInto_Task(ctx context.Context, r soap.RoundTripper, req *types.MoveHostInto_Task) (*types.MoveHostInto_TaskResponse, error) { + var reqBody, resBody MoveHostInto_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MoveIntoFolder_TaskBody struct { + Req *types.MoveIntoFolder_Task `xml:"urn:vim25 MoveIntoFolder_Task,omitempty"` + Res *types.MoveIntoFolder_TaskResponse `xml:"MoveIntoFolder_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MoveIntoFolder_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func MoveIntoFolder_Task(ctx context.Context, r soap.RoundTripper, req *types.MoveIntoFolder_Task) (*types.MoveIntoFolder_TaskResponse, error) { + var reqBody, resBody MoveIntoFolder_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MoveIntoResourcePoolBody struct { + Req *types.MoveIntoResourcePool `xml:"urn:vim25 MoveIntoResourcePool,omitempty"` + Res *types.MoveIntoResourcePoolResponse `xml:"MoveIntoResourcePoolResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MoveIntoResourcePoolBody) Fault() *soap.Fault { return b.Fault_ } + +func MoveIntoResourcePool(ctx context.Context, r soap.RoundTripper, req *types.MoveIntoResourcePool) (*types.MoveIntoResourcePoolResponse, error) { + var reqBody, resBody MoveIntoResourcePoolBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MoveInto_TaskBody struct { + Req *types.MoveInto_Task `xml:"urn:vim25 MoveInto_Task,omitempty"` + Res *types.MoveInto_TaskResponse `xml:"MoveInto_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MoveInto_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func MoveInto_Task(ctx context.Context, r soap.RoundTripper, req *types.MoveInto_Task) (*types.MoveInto_TaskResponse, error) { + var reqBody, resBody MoveInto_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type MoveVirtualDisk_TaskBody struct { + Req *types.MoveVirtualDisk_Task `xml:"urn:vim25 MoveVirtualDisk_Task,omitempty"` + Res *types.MoveVirtualDisk_TaskResponse `xml:"MoveVirtualDisk_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *MoveVirtualDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func MoveVirtualDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.MoveVirtualDisk_Task) (*types.MoveVirtualDisk_TaskResponse, error) { + var reqBody, resBody MoveVirtualDisk_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type OpenInventoryViewFolderBody struct { + Req *types.OpenInventoryViewFolder `xml:"urn:vim25 OpenInventoryViewFolder,omitempty"` + Res *types.OpenInventoryViewFolderResponse `xml:"OpenInventoryViewFolderResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *OpenInventoryViewFolderBody) Fault() *soap.Fault { return b.Fault_ } + +func OpenInventoryViewFolder(ctx context.Context, r soap.RoundTripper, req *types.OpenInventoryViewFolder) (*types.OpenInventoryViewFolderResponse, error) { + var reqBody, resBody OpenInventoryViewFolderBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type OverwriteCustomizationSpecBody struct { + Req *types.OverwriteCustomizationSpec `xml:"urn:vim25 OverwriteCustomizationSpec,omitempty"` + Res *types.OverwriteCustomizationSpecResponse `xml:"OverwriteCustomizationSpecResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *OverwriteCustomizationSpecBody) Fault() *soap.Fault { return b.Fault_ } + +func OverwriteCustomizationSpec(ctx context.Context, r soap.RoundTripper, req *types.OverwriteCustomizationSpec) (*types.OverwriteCustomizationSpecResponse, error) { + var reqBody, resBody OverwriteCustomizationSpecBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ParseDescriptorBody struct { + Req *types.ParseDescriptor `xml:"urn:vim25 ParseDescriptor,omitempty"` + Res *types.ParseDescriptorResponse `xml:"ParseDescriptorResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ParseDescriptorBody) Fault() *soap.Fault { return b.Fault_ } + +func ParseDescriptor(ctx context.Context, r soap.RoundTripper, req *types.ParseDescriptor) (*types.ParseDescriptorResponse, error) { + var reqBody, resBody ParseDescriptorBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type PerformDvsProductSpecOperation_TaskBody struct { + Req *types.PerformDvsProductSpecOperation_Task `xml:"urn:vim25 PerformDvsProductSpecOperation_Task,omitempty"` + Res *types.PerformDvsProductSpecOperation_TaskResponse `xml:"PerformDvsProductSpecOperation_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *PerformDvsProductSpecOperation_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func PerformDvsProductSpecOperation_Task(ctx context.Context, r soap.RoundTripper, req *types.PerformDvsProductSpecOperation_Task) (*types.PerformDvsProductSpecOperation_TaskResponse, error) { + var reqBody, resBody PerformDvsProductSpecOperation_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type PerformVsanUpgradePreflightCheckBody struct { + Req *types.PerformVsanUpgradePreflightCheck `xml:"urn:vim25 PerformVsanUpgradePreflightCheck,omitempty"` + Res *types.PerformVsanUpgradePreflightCheckResponse `xml:"PerformVsanUpgradePreflightCheckResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *PerformVsanUpgradePreflightCheckBody) Fault() *soap.Fault { return b.Fault_ } + +func PerformVsanUpgradePreflightCheck(ctx context.Context, r soap.RoundTripper, req *types.PerformVsanUpgradePreflightCheck) (*types.PerformVsanUpgradePreflightCheckResponse, error) { + var reqBody, resBody PerformVsanUpgradePreflightCheckBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type PerformVsanUpgrade_TaskBody struct { + Req *types.PerformVsanUpgrade_Task `xml:"urn:vim25 PerformVsanUpgrade_Task,omitempty"` + Res *types.PerformVsanUpgrade_TaskResponse `xml:"PerformVsanUpgrade_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *PerformVsanUpgrade_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func PerformVsanUpgrade_Task(ctx context.Context, r soap.RoundTripper, req *types.PerformVsanUpgrade_Task) (*types.PerformVsanUpgrade_TaskResponse, error) { + var reqBody, resBody PerformVsanUpgrade_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type PlaceVmBody struct { + Req *types.PlaceVm `xml:"urn:vim25 PlaceVm,omitempty"` + Res *types.PlaceVmResponse `xml:"PlaceVmResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *PlaceVmBody) Fault() *soap.Fault { return b.Fault_ } + +func PlaceVm(ctx context.Context, r soap.RoundTripper, req *types.PlaceVm) (*types.PlaceVmResponse, error) { + var reqBody, resBody PlaceVmBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type PostEventBody struct { + Req *types.PostEvent `xml:"urn:vim25 PostEvent,omitempty"` + Res *types.PostEventResponse `xml:"PostEventResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *PostEventBody) Fault() *soap.Fault { return b.Fault_ } + +func PostEvent(ctx context.Context, r soap.RoundTripper, req *types.PostEvent) (*types.PostEventResponse, error) { + var reqBody, resBody PostEventBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type PostHealthUpdatesBody struct { + Req *types.PostHealthUpdates `xml:"urn:vim25 PostHealthUpdates,omitempty"` + Res *types.PostHealthUpdatesResponse `xml:"PostHealthUpdatesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *PostHealthUpdatesBody) Fault() *soap.Fault { return b.Fault_ } + +func PostHealthUpdates(ctx context.Context, r soap.RoundTripper, req *types.PostHealthUpdates) (*types.PostHealthUpdatesResponse, error) { + var reqBody, resBody PostHealthUpdatesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type PowerDownHostToStandBy_TaskBody struct { + Req *types.PowerDownHostToStandBy_Task `xml:"urn:vim25 PowerDownHostToStandBy_Task,omitempty"` + Res *types.PowerDownHostToStandBy_TaskResponse `xml:"PowerDownHostToStandBy_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *PowerDownHostToStandBy_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func PowerDownHostToStandBy_Task(ctx context.Context, r soap.RoundTripper, req *types.PowerDownHostToStandBy_Task) (*types.PowerDownHostToStandBy_TaskResponse, error) { + var reqBody, resBody PowerDownHostToStandBy_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type PowerOffVApp_TaskBody struct { + Req *types.PowerOffVApp_Task `xml:"urn:vim25 PowerOffVApp_Task,omitempty"` + Res *types.PowerOffVApp_TaskResponse `xml:"PowerOffVApp_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *PowerOffVApp_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func PowerOffVApp_Task(ctx context.Context, r soap.RoundTripper, req *types.PowerOffVApp_Task) (*types.PowerOffVApp_TaskResponse, error) { + var reqBody, resBody PowerOffVApp_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type PowerOffVM_TaskBody struct { + Req *types.PowerOffVM_Task `xml:"urn:vim25 PowerOffVM_Task,omitempty"` + Res *types.PowerOffVM_TaskResponse `xml:"PowerOffVM_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *PowerOffVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func PowerOffVM_Task(ctx context.Context, r soap.RoundTripper, req *types.PowerOffVM_Task) (*types.PowerOffVM_TaskResponse, error) { + var reqBody, resBody PowerOffVM_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type PowerOnMultiVM_TaskBody struct { + Req *types.PowerOnMultiVM_Task `xml:"urn:vim25 PowerOnMultiVM_Task,omitempty"` + Res *types.PowerOnMultiVM_TaskResponse `xml:"PowerOnMultiVM_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *PowerOnMultiVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func PowerOnMultiVM_Task(ctx context.Context, r soap.RoundTripper, req *types.PowerOnMultiVM_Task) (*types.PowerOnMultiVM_TaskResponse, error) { + var reqBody, resBody PowerOnMultiVM_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type PowerOnVApp_TaskBody struct { + Req *types.PowerOnVApp_Task `xml:"urn:vim25 PowerOnVApp_Task,omitempty"` + Res *types.PowerOnVApp_TaskResponse `xml:"PowerOnVApp_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *PowerOnVApp_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func PowerOnVApp_Task(ctx context.Context, r soap.RoundTripper, req *types.PowerOnVApp_Task) (*types.PowerOnVApp_TaskResponse, error) { + var reqBody, resBody PowerOnVApp_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type PowerOnVM_TaskBody struct { + Req *types.PowerOnVM_Task `xml:"urn:vim25 PowerOnVM_Task,omitempty"` + Res *types.PowerOnVM_TaskResponse `xml:"PowerOnVM_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *PowerOnVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func PowerOnVM_Task(ctx context.Context, r soap.RoundTripper, req *types.PowerOnVM_Task) (*types.PowerOnVM_TaskResponse, error) { + var reqBody, resBody PowerOnVM_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type PowerUpHostFromStandBy_TaskBody struct { + Req *types.PowerUpHostFromStandBy_Task `xml:"urn:vim25 PowerUpHostFromStandBy_Task,omitempty"` + Res *types.PowerUpHostFromStandBy_TaskResponse `xml:"PowerUpHostFromStandBy_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *PowerUpHostFromStandBy_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func PowerUpHostFromStandBy_Task(ctx context.Context, r soap.RoundTripper, req *types.PowerUpHostFromStandBy_Task) (*types.PowerUpHostFromStandBy_TaskResponse, error) { + var reqBody, resBody PowerUpHostFromStandBy_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type PrepareCryptoBody struct { + Req *types.PrepareCrypto `xml:"urn:vim25 PrepareCrypto,omitempty"` + Res *types.PrepareCryptoResponse `xml:"PrepareCryptoResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *PrepareCryptoBody) Fault() *soap.Fault { return b.Fault_ } + +func PrepareCrypto(ctx context.Context, r soap.RoundTripper, req *types.PrepareCrypto) (*types.PrepareCryptoResponse, error) { + var reqBody, resBody PrepareCryptoBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type PromoteDisks_TaskBody struct { + Req *types.PromoteDisks_Task `xml:"urn:vim25 PromoteDisks_Task,omitempty"` + Res *types.PromoteDisks_TaskResponse `xml:"PromoteDisks_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *PromoteDisks_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func PromoteDisks_Task(ctx context.Context, r soap.RoundTripper, req *types.PromoteDisks_Task) (*types.PromoteDisks_TaskResponse, error) { + var reqBody, resBody PromoteDisks_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type PutUsbScanCodesBody struct { + Req *types.PutUsbScanCodes `xml:"urn:vim25 PutUsbScanCodes,omitempty"` + Res *types.PutUsbScanCodesResponse `xml:"PutUsbScanCodesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *PutUsbScanCodesBody) Fault() *soap.Fault { return b.Fault_ } + +func PutUsbScanCodes(ctx context.Context, r soap.RoundTripper, req *types.PutUsbScanCodes) (*types.PutUsbScanCodesResponse, error) { + var reqBody, resBody PutUsbScanCodesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryAnswerFileStatusBody struct { + Req *types.QueryAnswerFileStatus `xml:"urn:vim25 QueryAnswerFileStatus,omitempty"` + Res *types.QueryAnswerFileStatusResponse `xml:"QueryAnswerFileStatusResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryAnswerFileStatusBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryAnswerFileStatus(ctx context.Context, r soap.RoundTripper, req *types.QueryAnswerFileStatus) (*types.QueryAnswerFileStatusResponse, error) { + var reqBody, resBody QueryAnswerFileStatusBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryAssignedLicensesBody struct { + Req *types.QueryAssignedLicenses `xml:"urn:vim25 QueryAssignedLicenses,omitempty"` + Res *types.QueryAssignedLicensesResponse `xml:"QueryAssignedLicensesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryAssignedLicensesBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryAssignedLicenses(ctx context.Context, r soap.RoundTripper, req *types.QueryAssignedLicenses) (*types.QueryAssignedLicensesResponse, error) { + var reqBody, resBody QueryAssignedLicensesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryAvailableDisksForVmfsBody struct { + Req *types.QueryAvailableDisksForVmfs `xml:"urn:vim25 QueryAvailableDisksForVmfs,omitempty"` + Res *types.QueryAvailableDisksForVmfsResponse `xml:"QueryAvailableDisksForVmfsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryAvailableDisksForVmfsBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryAvailableDisksForVmfs(ctx context.Context, r soap.RoundTripper, req *types.QueryAvailableDisksForVmfs) (*types.QueryAvailableDisksForVmfsResponse, error) { + var reqBody, resBody QueryAvailableDisksForVmfsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryAvailableDvsSpecBody struct { + Req *types.QueryAvailableDvsSpec `xml:"urn:vim25 QueryAvailableDvsSpec,omitempty"` + Res *types.QueryAvailableDvsSpecResponse `xml:"QueryAvailableDvsSpecResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryAvailableDvsSpecBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryAvailableDvsSpec(ctx context.Context, r soap.RoundTripper, req *types.QueryAvailableDvsSpec) (*types.QueryAvailableDvsSpecResponse, error) { + var reqBody, resBody QueryAvailableDvsSpecBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryAvailablePartitionBody struct { + Req *types.QueryAvailablePartition `xml:"urn:vim25 QueryAvailablePartition,omitempty"` + Res *types.QueryAvailablePartitionResponse `xml:"QueryAvailablePartitionResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryAvailablePartitionBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryAvailablePartition(ctx context.Context, r soap.RoundTripper, req *types.QueryAvailablePartition) (*types.QueryAvailablePartitionResponse, error) { + var reqBody, resBody QueryAvailablePartitionBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryAvailablePerfMetricBody struct { + Req *types.QueryAvailablePerfMetric `xml:"urn:vim25 QueryAvailablePerfMetric,omitempty"` + Res *types.QueryAvailablePerfMetricResponse `xml:"QueryAvailablePerfMetricResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryAvailablePerfMetricBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryAvailablePerfMetric(ctx context.Context, r soap.RoundTripper, req *types.QueryAvailablePerfMetric) (*types.QueryAvailablePerfMetricResponse, error) { + var reqBody, resBody QueryAvailablePerfMetricBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryAvailableSsdsBody struct { + Req *types.QueryAvailableSsds `xml:"urn:vim25 QueryAvailableSsds,omitempty"` + Res *types.QueryAvailableSsdsResponse `xml:"QueryAvailableSsdsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryAvailableSsdsBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryAvailableSsds(ctx context.Context, r soap.RoundTripper, req *types.QueryAvailableSsds) (*types.QueryAvailableSsdsResponse, error) { + var reqBody, resBody QueryAvailableSsdsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryAvailableTimeZonesBody struct { + Req *types.QueryAvailableTimeZones `xml:"urn:vim25 QueryAvailableTimeZones,omitempty"` + Res *types.QueryAvailableTimeZonesResponse `xml:"QueryAvailableTimeZonesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryAvailableTimeZonesBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryAvailableTimeZones(ctx context.Context, r soap.RoundTripper, req *types.QueryAvailableTimeZones) (*types.QueryAvailableTimeZonesResponse, error) { + var reqBody, resBody QueryAvailableTimeZonesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryBootDevicesBody struct { + Req *types.QueryBootDevices `xml:"urn:vim25 QueryBootDevices,omitempty"` + Res *types.QueryBootDevicesResponse `xml:"QueryBootDevicesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryBootDevicesBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryBootDevices(ctx context.Context, r soap.RoundTripper, req *types.QueryBootDevices) (*types.QueryBootDevicesResponse, error) { + var reqBody, resBody QueryBootDevicesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryBoundVnicsBody struct { + Req *types.QueryBoundVnics `xml:"urn:vim25 QueryBoundVnics,omitempty"` + Res *types.QueryBoundVnicsResponse `xml:"QueryBoundVnicsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryBoundVnicsBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryBoundVnics(ctx context.Context, r soap.RoundTripper, req *types.QueryBoundVnics) (*types.QueryBoundVnicsResponse, error) { + var reqBody, resBody QueryBoundVnicsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryCandidateNicsBody struct { + Req *types.QueryCandidateNics `xml:"urn:vim25 QueryCandidateNics,omitempty"` + Res *types.QueryCandidateNicsResponse `xml:"QueryCandidateNicsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryCandidateNicsBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryCandidateNics(ctx context.Context, r soap.RoundTripper, req *types.QueryCandidateNics) (*types.QueryCandidateNicsResponse, error) { + var reqBody, resBody QueryCandidateNicsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryChangedDiskAreasBody struct { + Req *types.QueryChangedDiskAreas `xml:"urn:vim25 QueryChangedDiskAreas,omitempty"` + Res *types.QueryChangedDiskAreasResponse `xml:"QueryChangedDiskAreasResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryChangedDiskAreasBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryChangedDiskAreas(ctx context.Context, r soap.RoundTripper, req *types.QueryChangedDiskAreas) (*types.QueryChangedDiskAreasResponse, error) { + var reqBody, resBody QueryChangedDiskAreasBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryCmmdsBody struct { + Req *types.QueryCmmds `xml:"urn:vim25 QueryCmmds,omitempty"` + Res *types.QueryCmmdsResponse `xml:"QueryCmmdsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryCmmdsBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryCmmds(ctx context.Context, r soap.RoundTripper, req *types.QueryCmmds) (*types.QueryCmmdsResponse, error) { + var reqBody, resBody QueryCmmdsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryCompatibleHostForExistingDvsBody struct { + Req *types.QueryCompatibleHostForExistingDvs `xml:"urn:vim25 QueryCompatibleHostForExistingDvs,omitempty"` + Res *types.QueryCompatibleHostForExistingDvsResponse `xml:"QueryCompatibleHostForExistingDvsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryCompatibleHostForExistingDvsBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryCompatibleHostForExistingDvs(ctx context.Context, r soap.RoundTripper, req *types.QueryCompatibleHostForExistingDvs) (*types.QueryCompatibleHostForExistingDvsResponse, error) { + var reqBody, resBody QueryCompatibleHostForExistingDvsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryCompatibleHostForNewDvsBody struct { + Req *types.QueryCompatibleHostForNewDvs `xml:"urn:vim25 QueryCompatibleHostForNewDvs,omitempty"` + Res *types.QueryCompatibleHostForNewDvsResponse `xml:"QueryCompatibleHostForNewDvsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryCompatibleHostForNewDvsBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryCompatibleHostForNewDvs(ctx context.Context, r soap.RoundTripper, req *types.QueryCompatibleHostForNewDvs) (*types.QueryCompatibleHostForNewDvsResponse, error) { + var reqBody, resBody QueryCompatibleHostForNewDvsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryComplianceStatusBody struct { + Req *types.QueryComplianceStatus `xml:"urn:vim25 QueryComplianceStatus,omitempty"` + Res *types.QueryComplianceStatusResponse `xml:"QueryComplianceStatusResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryComplianceStatusBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryComplianceStatus(ctx context.Context, r soap.RoundTripper, req *types.QueryComplianceStatus) (*types.QueryComplianceStatusResponse, error) { + var reqBody, resBody QueryComplianceStatusBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryConfigOptionBody struct { + Req *types.QueryConfigOption `xml:"urn:vim25 QueryConfigOption,omitempty"` + Res *types.QueryConfigOptionResponse `xml:"QueryConfigOptionResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryConfigOptionBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryConfigOption(ctx context.Context, r soap.RoundTripper, req *types.QueryConfigOption) (*types.QueryConfigOptionResponse, error) { + var reqBody, resBody QueryConfigOptionBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryConfigOptionDescriptorBody struct { + Req *types.QueryConfigOptionDescriptor `xml:"urn:vim25 QueryConfigOptionDescriptor,omitempty"` + Res *types.QueryConfigOptionDescriptorResponse `xml:"QueryConfigOptionDescriptorResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryConfigOptionDescriptorBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryConfigOptionDescriptor(ctx context.Context, r soap.RoundTripper, req *types.QueryConfigOptionDescriptor) (*types.QueryConfigOptionDescriptorResponse, error) { + var reqBody, resBody QueryConfigOptionDescriptorBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryConfigOptionExBody struct { + Req *types.QueryConfigOptionEx `xml:"urn:vim25 QueryConfigOptionEx,omitempty"` + Res *types.QueryConfigOptionExResponse `xml:"QueryConfigOptionExResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryConfigOptionExBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryConfigOptionEx(ctx context.Context, r soap.RoundTripper, req *types.QueryConfigOptionEx) (*types.QueryConfigOptionExResponse, error) { + var reqBody, resBody QueryConfigOptionExBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryConfigTargetBody struct { + Req *types.QueryConfigTarget `xml:"urn:vim25 QueryConfigTarget,omitempty"` + Res *types.QueryConfigTargetResponse `xml:"QueryConfigTargetResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryConfigTargetBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryConfigTarget(ctx context.Context, r soap.RoundTripper, req *types.QueryConfigTarget) (*types.QueryConfigTargetResponse, error) { + var reqBody, resBody QueryConfigTargetBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryConfiguredModuleOptionStringBody struct { + Req *types.QueryConfiguredModuleOptionString `xml:"urn:vim25 QueryConfiguredModuleOptionString,omitempty"` + Res *types.QueryConfiguredModuleOptionStringResponse `xml:"QueryConfiguredModuleOptionStringResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryConfiguredModuleOptionStringBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryConfiguredModuleOptionString(ctx context.Context, r soap.RoundTripper, req *types.QueryConfiguredModuleOptionString) (*types.QueryConfiguredModuleOptionStringResponse, error) { + var reqBody, resBody QueryConfiguredModuleOptionStringBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryConnectionInfoBody struct { + Req *types.QueryConnectionInfo `xml:"urn:vim25 QueryConnectionInfo,omitempty"` + Res *types.QueryConnectionInfoResponse `xml:"QueryConnectionInfoResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryConnectionInfoBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryConnectionInfo(ctx context.Context, r soap.RoundTripper, req *types.QueryConnectionInfo) (*types.QueryConnectionInfoResponse, error) { + var reqBody, resBody QueryConnectionInfoBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryConnectionInfoViaSpecBody struct { + Req *types.QueryConnectionInfoViaSpec `xml:"urn:vim25 QueryConnectionInfoViaSpec,omitempty"` + Res *types.QueryConnectionInfoViaSpecResponse `xml:"QueryConnectionInfoViaSpecResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryConnectionInfoViaSpecBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryConnectionInfoViaSpec(ctx context.Context, r soap.RoundTripper, req *types.QueryConnectionInfoViaSpec) (*types.QueryConnectionInfoViaSpecResponse, error) { + var reqBody, resBody QueryConnectionInfoViaSpecBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryCryptoKeyStatusBody struct { + Req *types.QueryCryptoKeyStatus `xml:"urn:vim25 QueryCryptoKeyStatus,omitempty"` + Res *types.QueryCryptoKeyStatusResponse `xml:"QueryCryptoKeyStatusResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryCryptoKeyStatusBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryCryptoKeyStatus(ctx context.Context, r soap.RoundTripper, req *types.QueryCryptoKeyStatus) (*types.QueryCryptoKeyStatusResponse, error) { + var reqBody, resBody QueryCryptoKeyStatusBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryDatastorePerformanceSummaryBody struct { + Req *types.QueryDatastorePerformanceSummary `xml:"urn:vim25 QueryDatastorePerformanceSummary,omitempty"` + Res *types.QueryDatastorePerformanceSummaryResponse `xml:"QueryDatastorePerformanceSummaryResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryDatastorePerformanceSummaryBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryDatastorePerformanceSummary(ctx context.Context, r soap.RoundTripper, req *types.QueryDatastorePerformanceSummary) (*types.QueryDatastorePerformanceSummaryResponse, error) { + var reqBody, resBody QueryDatastorePerformanceSummaryBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryDateTimeBody struct { + Req *types.QueryDateTime `xml:"urn:vim25 QueryDateTime,omitempty"` + Res *types.QueryDateTimeResponse `xml:"QueryDateTimeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryDateTimeBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryDateTime(ctx context.Context, r soap.RoundTripper, req *types.QueryDateTime) (*types.QueryDateTimeResponse, error) { + var reqBody, resBody QueryDateTimeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryDescriptionsBody struct { + Req *types.QueryDescriptions `xml:"urn:vim25 QueryDescriptions,omitempty"` + Res *types.QueryDescriptionsResponse `xml:"QueryDescriptionsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryDescriptionsBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryDescriptions(ctx context.Context, r soap.RoundTripper, req *types.QueryDescriptions) (*types.QueryDescriptionsResponse, error) { + var reqBody, resBody QueryDescriptionsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryDisksForVsanBody struct { + Req *types.QueryDisksForVsan `xml:"urn:vim25 QueryDisksForVsan,omitempty"` + Res *types.QueryDisksForVsanResponse `xml:"QueryDisksForVsanResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryDisksForVsanBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryDisksForVsan(ctx context.Context, r soap.RoundTripper, req *types.QueryDisksForVsan) (*types.QueryDisksForVsanResponse, error) { + var reqBody, resBody QueryDisksForVsanBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryDisksUsingFilterBody struct { + Req *types.QueryDisksUsingFilter `xml:"urn:vim25 QueryDisksUsingFilter,omitempty"` + Res *types.QueryDisksUsingFilterResponse `xml:"QueryDisksUsingFilterResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryDisksUsingFilterBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryDisksUsingFilter(ctx context.Context, r soap.RoundTripper, req *types.QueryDisksUsingFilter) (*types.QueryDisksUsingFilterResponse, error) { + var reqBody, resBody QueryDisksUsingFilterBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryDvsByUuidBody struct { + Req *types.QueryDvsByUuid `xml:"urn:vim25 QueryDvsByUuid,omitempty"` + Res *types.QueryDvsByUuidResponse `xml:"QueryDvsByUuidResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryDvsByUuidBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryDvsByUuid(ctx context.Context, r soap.RoundTripper, req *types.QueryDvsByUuid) (*types.QueryDvsByUuidResponse, error) { + var reqBody, resBody QueryDvsByUuidBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryDvsCheckCompatibilityBody struct { + Req *types.QueryDvsCheckCompatibility `xml:"urn:vim25 QueryDvsCheckCompatibility,omitempty"` + Res *types.QueryDvsCheckCompatibilityResponse `xml:"QueryDvsCheckCompatibilityResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryDvsCheckCompatibilityBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryDvsCheckCompatibility(ctx context.Context, r soap.RoundTripper, req *types.QueryDvsCheckCompatibility) (*types.QueryDvsCheckCompatibilityResponse, error) { + var reqBody, resBody QueryDvsCheckCompatibilityBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryDvsCompatibleHostSpecBody struct { + Req *types.QueryDvsCompatibleHostSpec `xml:"urn:vim25 QueryDvsCompatibleHostSpec,omitempty"` + Res *types.QueryDvsCompatibleHostSpecResponse `xml:"QueryDvsCompatibleHostSpecResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryDvsCompatibleHostSpecBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryDvsCompatibleHostSpec(ctx context.Context, r soap.RoundTripper, req *types.QueryDvsCompatibleHostSpec) (*types.QueryDvsCompatibleHostSpecResponse, error) { + var reqBody, resBody QueryDvsCompatibleHostSpecBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryDvsConfigTargetBody struct { + Req *types.QueryDvsConfigTarget `xml:"urn:vim25 QueryDvsConfigTarget,omitempty"` + Res *types.QueryDvsConfigTargetResponse `xml:"QueryDvsConfigTargetResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryDvsConfigTargetBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryDvsConfigTarget(ctx context.Context, r soap.RoundTripper, req *types.QueryDvsConfigTarget) (*types.QueryDvsConfigTargetResponse, error) { + var reqBody, resBody QueryDvsConfigTargetBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryDvsFeatureCapabilityBody struct { + Req *types.QueryDvsFeatureCapability `xml:"urn:vim25 QueryDvsFeatureCapability,omitempty"` + Res *types.QueryDvsFeatureCapabilityResponse `xml:"QueryDvsFeatureCapabilityResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryDvsFeatureCapabilityBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryDvsFeatureCapability(ctx context.Context, r soap.RoundTripper, req *types.QueryDvsFeatureCapability) (*types.QueryDvsFeatureCapabilityResponse, error) { + var reqBody, resBody QueryDvsFeatureCapabilityBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryEventsBody struct { + Req *types.QueryEvents `xml:"urn:vim25 QueryEvents,omitempty"` + Res *types.QueryEventsResponse `xml:"QueryEventsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryEventsBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryEvents(ctx context.Context, r soap.RoundTripper, req *types.QueryEvents) (*types.QueryEventsResponse, error) { + var reqBody, resBody QueryEventsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryExpressionMetadataBody struct { + Req *types.QueryExpressionMetadata `xml:"urn:vim25 QueryExpressionMetadata,omitempty"` + Res *types.QueryExpressionMetadataResponse `xml:"QueryExpressionMetadataResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryExpressionMetadataBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryExpressionMetadata(ctx context.Context, r soap.RoundTripper, req *types.QueryExpressionMetadata) (*types.QueryExpressionMetadataResponse, error) { + var reqBody, resBody QueryExpressionMetadataBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryExtensionIpAllocationUsageBody struct { + Req *types.QueryExtensionIpAllocationUsage `xml:"urn:vim25 QueryExtensionIpAllocationUsage,omitempty"` + Res *types.QueryExtensionIpAllocationUsageResponse `xml:"QueryExtensionIpAllocationUsageResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryExtensionIpAllocationUsageBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryExtensionIpAllocationUsage(ctx context.Context, r soap.RoundTripper, req *types.QueryExtensionIpAllocationUsage) (*types.QueryExtensionIpAllocationUsageResponse, error) { + var reqBody, resBody QueryExtensionIpAllocationUsageBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryFaultToleranceCompatibilityBody struct { + Req *types.QueryFaultToleranceCompatibility `xml:"urn:vim25 QueryFaultToleranceCompatibility,omitempty"` + Res *types.QueryFaultToleranceCompatibilityResponse `xml:"QueryFaultToleranceCompatibilityResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryFaultToleranceCompatibilityBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryFaultToleranceCompatibility(ctx context.Context, r soap.RoundTripper, req *types.QueryFaultToleranceCompatibility) (*types.QueryFaultToleranceCompatibilityResponse, error) { + var reqBody, resBody QueryFaultToleranceCompatibilityBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryFaultToleranceCompatibilityExBody struct { + Req *types.QueryFaultToleranceCompatibilityEx `xml:"urn:vim25 QueryFaultToleranceCompatibilityEx,omitempty"` + Res *types.QueryFaultToleranceCompatibilityExResponse `xml:"QueryFaultToleranceCompatibilityExResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryFaultToleranceCompatibilityExBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryFaultToleranceCompatibilityEx(ctx context.Context, r soap.RoundTripper, req *types.QueryFaultToleranceCompatibilityEx) (*types.QueryFaultToleranceCompatibilityExResponse, error) { + var reqBody, resBody QueryFaultToleranceCompatibilityExBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryFilterEntitiesBody struct { + Req *types.QueryFilterEntities `xml:"urn:vim25 QueryFilterEntities,omitempty"` + Res *types.QueryFilterEntitiesResponse `xml:"QueryFilterEntitiesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryFilterEntitiesBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryFilterEntities(ctx context.Context, r soap.RoundTripper, req *types.QueryFilterEntities) (*types.QueryFilterEntitiesResponse, error) { + var reqBody, resBody QueryFilterEntitiesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryFilterInfoIdsBody struct { + Req *types.QueryFilterInfoIds `xml:"urn:vim25 QueryFilterInfoIds,omitempty"` + Res *types.QueryFilterInfoIdsResponse `xml:"QueryFilterInfoIdsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryFilterInfoIdsBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryFilterInfoIds(ctx context.Context, r soap.RoundTripper, req *types.QueryFilterInfoIds) (*types.QueryFilterInfoIdsResponse, error) { + var reqBody, resBody QueryFilterInfoIdsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryFilterListBody struct { + Req *types.QueryFilterList `xml:"urn:vim25 QueryFilterList,omitempty"` + Res *types.QueryFilterListResponse `xml:"QueryFilterListResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryFilterListBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryFilterList(ctx context.Context, r soap.RoundTripper, req *types.QueryFilterList) (*types.QueryFilterListResponse, error) { + var reqBody, resBody QueryFilterListBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryFilterNameBody struct { + Req *types.QueryFilterName `xml:"urn:vim25 QueryFilterName,omitempty"` + Res *types.QueryFilterNameResponse `xml:"QueryFilterNameResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryFilterNameBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryFilterName(ctx context.Context, r soap.RoundTripper, req *types.QueryFilterName) (*types.QueryFilterNameResponse, error) { + var reqBody, resBody QueryFilterNameBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryFirmwareConfigUploadURLBody struct { + Req *types.QueryFirmwareConfigUploadURL `xml:"urn:vim25 QueryFirmwareConfigUploadURL,omitempty"` + Res *types.QueryFirmwareConfigUploadURLResponse `xml:"QueryFirmwareConfigUploadURLResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryFirmwareConfigUploadURLBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryFirmwareConfigUploadURL(ctx context.Context, r soap.RoundTripper, req *types.QueryFirmwareConfigUploadURL) (*types.QueryFirmwareConfigUploadURLResponse, error) { + var reqBody, resBody QueryFirmwareConfigUploadURLBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryHealthUpdateInfosBody struct { + Req *types.QueryHealthUpdateInfos `xml:"urn:vim25 QueryHealthUpdateInfos,omitempty"` + Res *types.QueryHealthUpdateInfosResponse `xml:"QueryHealthUpdateInfosResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryHealthUpdateInfosBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryHealthUpdateInfos(ctx context.Context, r soap.RoundTripper, req *types.QueryHealthUpdateInfos) (*types.QueryHealthUpdateInfosResponse, error) { + var reqBody, resBody QueryHealthUpdateInfosBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryHealthUpdatesBody struct { + Req *types.QueryHealthUpdates `xml:"urn:vim25 QueryHealthUpdates,omitempty"` + Res *types.QueryHealthUpdatesResponse `xml:"QueryHealthUpdatesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryHealthUpdatesBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryHealthUpdates(ctx context.Context, r soap.RoundTripper, req *types.QueryHealthUpdates) (*types.QueryHealthUpdatesResponse, error) { + var reqBody, resBody QueryHealthUpdatesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryHostConnectionInfoBody struct { + Req *types.QueryHostConnectionInfo `xml:"urn:vim25 QueryHostConnectionInfo,omitempty"` + Res *types.QueryHostConnectionInfoResponse `xml:"QueryHostConnectionInfoResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryHostConnectionInfoBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryHostConnectionInfo(ctx context.Context, r soap.RoundTripper, req *types.QueryHostConnectionInfo) (*types.QueryHostConnectionInfoResponse, error) { + var reqBody, resBody QueryHostConnectionInfoBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryHostPatch_TaskBody struct { + Req *types.QueryHostPatch_Task `xml:"urn:vim25 QueryHostPatch_Task,omitempty"` + Res *types.QueryHostPatch_TaskResponse `xml:"QueryHostPatch_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryHostPatch_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryHostPatch_Task(ctx context.Context, r soap.RoundTripper, req *types.QueryHostPatch_Task) (*types.QueryHostPatch_TaskResponse, error) { + var reqBody, resBody QueryHostPatch_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryHostProfileMetadataBody struct { + Req *types.QueryHostProfileMetadata `xml:"urn:vim25 QueryHostProfileMetadata,omitempty"` + Res *types.QueryHostProfileMetadataResponse `xml:"QueryHostProfileMetadataResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryHostProfileMetadataBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryHostProfileMetadata(ctx context.Context, r soap.RoundTripper, req *types.QueryHostProfileMetadata) (*types.QueryHostProfileMetadataResponse, error) { + var reqBody, resBody QueryHostProfileMetadataBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryHostStatusBody struct { + Req *types.QueryHostStatus `xml:"urn:vim25 QueryHostStatus,omitempty"` + Res *types.QueryHostStatusResponse `xml:"QueryHostStatusResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryHostStatusBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryHostStatus(ctx context.Context, r soap.RoundTripper, req *types.QueryHostStatus) (*types.QueryHostStatusResponse, error) { + var reqBody, resBody QueryHostStatusBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryHostsWithAttachedLunBody struct { + Req *types.QueryHostsWithAttachedLun `xml:"urn:vim25 QueryHostsWithAttachedLun,omitempty"` + Res *types.QueryHostsWithAttachedLunResponse `xml:"QueryHostsWithAttachedLunResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryHostsWithAttachedLunBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryHostsWithAttachedLun(ctx context.Context, r soap.RoundTripper, req *types.QueryHostsWithAttachedLun) (*types.QueryHostsWithAttachedLunResponse, error) { + var reqBody, resBody QueryHostsWithAttachedLunBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryIORMConfigOptionBody struct { + Req *types.QueryIORMConfigOption `xml:"urn:vim25 QueryIORMConfigOption,omitempty"` + Res *types.QueryIORMConfigOptionResponse `xml:"QueryIORMConfigOptionResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryIORMConfigOptionBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryIORMConfigOption(ctx context.Context, r soap.RoundTripper, req *types.QueryIORMConfigOption) (*types.QueryIORMConfigOptionResponse, error) { + var reqBody, resBody QueryIORMConfigOptionBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryIPAllocationsBody struct { + Req *types.QueryIPAllocations `xml:"urn:vim25 QueryIPAllocations,omitempty"` + Res *types.QueryIPAllocationsResponse `xml:"QueryIPAllocationsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryIPAllocationsBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryIPAllocations(ctx context.Context, r soap.RoundTripper, req *types.QueryIPAllocations) (*types.QueryIPAllocationsResponse, error) { + var reqBody, resBody QueryIPAllocationsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryIoFilterInfoBody struct { + Req *types.QueryIoFilterInfo `xml:"urn:vim25 QueryIoFilterInfo,omitempty"` + Res *types.QueryIoFilterInfoResponse `xml:"QueryIoFilterInfoResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryIoFilterInfoBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryIoFilterInfo(ctx context.Context, r soap.RoundTripper, req *types.QueryIoFilterInfo) (*types.QueryIoFilterInfoResponse, error) { + var reqBody, resBody QueryIoFilterInfoBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryIoFilterIssuesBody struct { + Req *types.QueryIoFilterIssues `xml:"urn:vim25 QueryIoFilterIssues,omitempty"` + Res *types.QueryIoFilterIssuesResponse `xml:"QueryIoFilterIssuesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryIoFilterIssuesBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryIoFilterIssues(ctx context.Context, r soap.RoundTripper, req *types.QueryIoFilterIssues) (*types.QueryIoFilterIssuesResponse, error) { + var reqBody, resBody QueryIoFilterIssuesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryIpPoolsBody struct { + Req *types.QueryIpPools `xml:"urn:vim25 QueryIpPools,omitempty"` + Res *types.QueryIpPoolsResponse `xml:"QueryIpPoolsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryIpPoolsBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryIpPools(ctx context.Context, r soap.RoundTripper, req *types.QueryIpPools) (*types.QueryIpPoolsResponse, error) { + var reqBody, resBody QueryIpPoolsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryLicenseSourceAvailabilityBody struct { + Req *types.QueryLicenseSourceAvailability `xml:"urn:vim25 QueryLicenseSourceAvailability,omitempty"` + Res *types.QueryLicenseSourceAvailabilityResponse `xml:"QueryLicenseSourceAvailabilityResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryLicenseSourceAvailabilityBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryLicenseSourceAvailability(ctx context.Context, r soap.RoundTripper, req *types.QueryLicenseSourceAvailability) (*types.QueryLicenseSourceAvailabilityResponse, error) { + var reqBody, resBody QueryLicenseSourceAvailabilityBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryLicenseUsageBody struct { + Req *types.QueryLicenseUsage `xml:"urn:vim25 QueryLicenseUsage,omitempty"` + Res *types.QueryLicenseUsageResponse `xml:"QueryLicenseUsageResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryLicenseUsageBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryLicenseUsage(ctx context.Context, r soap.RoundTripper, req *types.QueryLicenseUsage) (*types.QueryLicenseUsageResponse, error) { + var reqBody, resBody QueryLicenseUsageBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryLockdownExceptionsBody struct { + Req *types.QueryLockdownExceptions `xml:"urn:vim25 QueryLockdownExceptions,omitempty"` + Res *types.QueryLockdownExceptionsResponse `xml:"QueryLockdownExceptionsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryLockdownExceptionsBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryLockdownExceptions(ctx context.Context, r soap.RoundTripper, req *types.QueryLockdownExceptions) (*types.QueryLockdownExceptionsResponse, error) { + var reqBody, resBody QueryLockdownExceptionsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryManagedByBody struct { + Req *types.QueryManagedBy `xml:"urn:vim25 QueryManagedBy,omitempty"` + Res *types.QueryManagedByResponse `xml:"QueryManagedByResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryManagedByBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryManagedBy(ctx context.Context, r soap.RoundTripper, req *types.QueryManagedBy) (*types.QueryManagedByResponse, error) { + var reqBody, resBody QueryManagedByBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryMemoryOverheadBody struct { + Req *types.QueryMemoryOverhead `xml:"urn:vim25 QueryMemoryOverhead,omitempty"` + Res *types.QueryMemoryOverheadResponse `xml:"QueryMemoryOverheadResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryMemoryOverheadBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryMemoryOverhead(ctx context.Context, r soap.RoundTripper, req *types.QueryMemoryOverhead) (*types.QueryMemoryOverheadResponse, error) { + var reqBody, resBody QueryMemoryOverheadBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryMemoryOverheadExBody struct { + Req *types.QueryMemoryOverheadEx `xml:"urn:vim25 QueryMemoryOverheadEx,omitempty"` + Res *types.QueryMemoryOverheadExResponse `xml:"QueryMemoryOverheadExResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryMemoryOverheadExBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryMemoryOverheadEx(ctx context.Context, r soap.RoundTripper, req *types.QueryMemoryOverheadEx) (*types.QueryMemoryOverheadExResponse, error) { + var reqBody, resBody QueryMemoryOverheadExBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryMigrationDependenciesBody struct { + Req *types.QueryMigrationDependencies `xml:"urn:vim25 QueryMigrationDependencies,omitempty"` + Res *types.QueryMigrationDependenciesResponse `xml:"QueryMigrationDependenciesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryMigrationDependenciesBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryMigrationDependencies(ctx context.Context, r soap.RoundTripper, req *types.QueryMigrationDependencies) (*types.QueryMigrationDependenciesResponse, error) { + var reqBody, resBody QueryMigrationDependenciesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryModulesBody struct { + Req *types.QueryModules `xml:"urn:vim25 QueryModules,omitempty"` + Res *types.QueryModulesResponse `xml:"QueryModulesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryModulesBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryModules(ctx context.Context, r soap.RoundTripper, req *types.QueryModules) (*types.QueryModulesResponse, error) { + var reqBody, resBody QueryModulesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryMonitoredEntitiesBody struct { + Req *types.QueryMonitoredEntities `xml:"urn:vim25 QueryMonitoredEntities,omitempty"` + Res *types.QueryMonitoredEntitiesResponse `xml:"QueryMonitoredEntitiesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryMonitoredEntitiesBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryMonitoredEntities(ctx context.Context, r soap.RoundTripper, req *types.QueryMonitoredEntities) (*types.QueryMonitoredEntitiesResponse, error) { + var reqBody, resBody QueryMonitoredEntitiesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryNFSUserBody struct { + Req *types.QueryNFSUser `xml:"urn:vim25 QueryNFSUser,omitempty"` + Res *types.QueryNFSUserResponse `xml:"QueryNFSUserResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryNFSUserBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryNFSUser(ctx context.Context, r soap.RoundTripper, req *types.QueryNFSUser) (*types.QueryNFSUserResponse, error) { + var reqBody, resBody QueryNFSUserBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryNetConfigBody struct { + Req *types.QueryNetConfig `xml:"urn:vim25 QueryNetConfig,omitempty"` + Res *types.QueryNetConfigResponse `xml:"QueryNetConfigResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryNetConfigBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryNetConfig(ctx context.Context, r soap.RoundTripper, req *types.QueryNetConfig) (*types.QueryNetConfigResponse, error) { + var reqBody, resBody QueryNetConfigBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryNetworkHintBody struct { + Req *types.QueryNetworkHint `xml:"urn:vim25 QueryNetworkHint,omitempty"` + Res *types.QueryNetworkHintResponse `xml:"QueryNetworkHintResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryNetworkHintBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryNetworkHint(ctx context.Context, r soap.RoundTripper, req *types.QueryNetworkHint) (*types.QueryNetworkHintResponse, error) { + var reqBody, resBody QueryNetworkHintBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryObjectsOnPhysicalVsanDiskBody struct { + Req *types.QueryObjectsOnPhysicalVsanDisk `xml:"urn:vim25 QueryObjectsOnPhysicalVsanDisk,omitempty"` + Res *types.QueryObjectsOnPhysicalVsanDiskResponse `xml:"QueryObjectsOnPhysicalVsanDiskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryObjectsOnPhysicalVsanDiskBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryObjectsOnPhysicalVsanDisk(ctx context.Context, r soap.RoundTripper, req *types.QueryObjectsOnPhysicalVsanDisk) (*types.QueryObjectsOnPhysicalVsanDiskResponse, error) { + var reqBody, resBody QueryObjectsOnPhysicalVsanDiskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryOptionsBody struct { + Req *types.QueryOptions `xml:"urn:vim25 QueryOptions,omitempty"` + Res *types.QueryOptionsResponse `xml:"QueryOptionsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryOptionsBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryOptions(ctx context.Context, r soap.RoundTripper, req *types.QueryOptions) (*types.QueryOptionsResponse, error) { + var reqBody, resBody QueryOptionsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryPartitionCreateDescBody struct { + Req *types.QueryPartitionCreateDesc `xml:"urn:vim25 QueryPartitionCreateDesc,omitempty"` + Res *types.QueryPartitionCreateDescResponse `xml:"QueryPartitionCreateDescResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryPartitionCreateDescBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryPartitionCreateDesc(ctx context.Context, r soap.RoundTripper, req *types.QueryPartitionCreateDesc) (*types.QueryPartitionCreateDescResponse, error) { + var reqBody, resBody QueryPartitionCreateDescBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryPartitionCreateOptionsBody struct { + Req *types.QueryPartitionCreateOptions `xml:"urn:vim25 QueryPartitionCreateOptions,omitempty"` + Res *types.QueryPartitionCreateOptionsResponse `xml:"QueryPartitionCreateOptionsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryPartitionCreateOptionsBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryPartitionCreateOptions(ctx context.Context, r soap.RoundTripper, req *types.QueryPartitionCreateOptions) (*types.QueryPartitionCreateOptionsResponse, error) { + var reqBody, resBody QueryPartitionCreateOptionsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryPathSelectionPolicyOptionsBody struct { + Req *types.QueryPathSelectionPolicyOptions `xml:"urn:vim25 QueryPathSelectionPolicyOptions,omitempty"` + Res *types.QueryPathSelectionPolicyOptionsResponse `xml:"QueryPathSelectionPolicyOptionsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryPathSelectionPolicyOptionsBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryPathSelectionPolicyOptions(ctx context.Context, r soap.RoundTripper, req *types.QueryPathSelectionPolicyOptions) (*types.QueryPathSelectionPolicyOptionsResponse, error) { + var reqBody, resBody QueryPathSelectionPolicyOptionsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryPerfBody struct { + Req *types.QueryPerf `xml:"urn:vim25 QueryPerf,omitempty"` + Res *types.QueryPerfResponse `xml:"QueryPerfResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryPerfBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryPerf(ctx context.Context, r soap.RoundTripper, req *types.QueryPerf) (*types.QueryPerfResponse, error) { + var reqBody, resBody QueryPerfBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryPerfCompositeBody struct { + Req *types.QueryPerfComposite `xml:"urn:vim25 QueryPerfComposite,omitempty"` + Res *types.QueryPerfCompositeResponse `xml:"QueryPerfCompositeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryPerfCompositeBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryPerfComposite(ctx context.Context, r soap.RoundTripper, req *types.QueryPerfComposite) (*types.QueryPerfCompositeResponse, error) { + var reqBody, resBody QueryPerfCompositeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryPerfCounterBody struct { + Req *types.QueryPerfCounter `xml:"urn:vim25 QueryPerfCounter,omitempty"` + Res *types.QueryPerfCounterResponse `xml:"QueryPerfCounterResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryPerfCounterBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryPerfCounter(ctx context.Context, r soap.RoundTripper, req *types.QueryPerfCounter) (*types.QueryPerfCounterResponse, error) { + var reqBody, resBody QueryPerfCounterBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryPerfCounterByLevelBody struct { + Req *types.QueryPerfCounterByLevel `xml:"urn:vim25 QueryPerfCounterByLevel,omitempty"` + Res *types.QueryPerfCounterByLevelResponse `xml:"QueryPerfCounterByLevelResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryPerfCounterByLevelBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryPerfCounterByLevel(ctx context.Context, r soap.RoundTripper, req *types.QueryPerfCounterByLevel) (*types.QueryPerfCounterByLevelResponse, error) { + var reqBody, resBody QueryPerfCounterByLevelBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryPerfProviderSummaryBody struct { + Req *types.QueryPerfProviderSummary `xml:"urn:vim25 QueryPerfProviderSummary,omitempty"` + Res *types.QueryPerfProviderSummaryResponse `xml:"QueryPerfProviderSummaryResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryPerfProviderSummaryBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryPerfProviderSummary(ctx context.Context, r soap.RoundTripper, req *types.QueryPerfProviderSummary) (*types.QueryPerfProviderSummaryResponse, error) { + var reqBody, resBody QueryPerfProviderSummaryBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryPhysicalVsanDisksBody struct { + Req *types.QueryPhysicalVsanDisks `xml:"urn:vim25 QueryPhysicalVsanDisks,omitempty"` + Res *types.QueryPhysicalVsanDisksResponse `xml:"QueryPhysicalVsanDisksResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryPhysicalVsanDisksBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryPhysicalVsanDisks(ctx context.Context, r soap.RoundTripper, req *types.QueryPhysicalVsanDisks) (*types.QueryPhysicalVsanDisksResponse, error) { + var reqBody, resBody QueryPhysicalVsanDisksBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryPnicStatusBody struct { + Req *types.QueryPnicStatus `xml:"urn:vim25 QueryPnicStatus,omitempty"` + Res *types.QueryPnicStatusResponse `xml:"QueryPnicStatusResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryPnicStatusBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryPnicStatus(ctx context.Context, r soap.RoundTripper, req *types.QueryPnicStatus) (*types.QueryPnicStatusResponse, error) { + var reqBody, resBody QueryPnicStatusBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryPolicyMetadataBody struct { + Req *types.QueryPolicyMetadata `xml:"urn:vim25 QueryPolicyMetadata,omitempty"` + Res *types.QueryPolicyMetadataResponse `xml:"QueryPolicyMetadataResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryPolicyMetadataBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryPolicyMetadata(ctx context.Context, r soap.RoundTripper, req *types.QueryPolicyMetadata) (*types.QueryPolicyMetadataResponse, error) { + var reqBody, resBody QueryPolicyMetadataBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryProductLockerLocationBody struct { + Req *types.QueryProductLockerLocation `xml:"urn:vim25 QueryProductLockerLocation,omitempty"` + Res *types.QueryProductLockerLocationResponse `xml:"QueryProductLockerLocationResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryProductLockerLocationBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryProductLockerLocation(ctx context.Context, r soap.RoundTripper, req *types.QueryProductLockerLocation) (*types.QueryProductLockerLocationResponse, error) { + var reqBody, resBody QueryProductLockerLocationBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryProfileStructureBody struct { + Req *types.QueryProfileStructure `xml:"urn:vim25 QueryProfileStructure,omitempty"` + Res *types.QueryProfileStructureResponse `xml:"QueryProfileStructureResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryProfileStructureBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryProfileStructure(ctx context.Context, r soap.RoundTripper, req *types.QueryProfileStructure) (*types.QueryProfileStructureResponse, error) { + var reqBody, resBody QueryProfileStructureBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryProviderListBody struct { + Req *types.QueryProviderList `xml:"urn:vim25 QueryProviderList,omitempty"` + Res *types.QueryProviderListResponse `xml:"QueryProviderListResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryProviderListBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryProviderList(ctx context.Context, r soap.RoundTripper, req *types.QueryProviderList) (*types.QueryProviderListResponse, error) { + var reqBody, resBody QueryProviderListBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryProviderNameBody struct { + Req *types.QueryProviderName `xml:"urn:vim25 QueryProviderName,omitempty"` + Res *types.QueryProviderNameResponse `xml:"QueryProviderNameResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryProviderNameBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryProviderName(ctx context.Context, r soap.RoundTripper, req *types.QueryProviderName) (*types.QueryProviderNameResponse, error) { + var reqBody, resBody QueryProviderNameBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryResourceConfigOptionBody struct { + Req *types.QueryResourceConfigOption `xml:"urn:vim25 QueryResourceConfigOption,omitempty"` + Res *types.QueryResourceConfigOptionResponse `xml:"QueryResourceConfigOptionResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryResourceConfigOptionBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryResourceConfigOption(ctx context.Context, r soap.RoundTripper, req *types.QueryResourceConfigOption) (*types.QueryResourceConfigOptionResponse, error) { + var reqBody, resBody QueryResourceConfigOptionBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryServiceListBody struct { + Req *types.QueryServiceList `xml:"urn:vim25 QueryServiceList,omitempty"` + Res *types.QueryServiceListResponse `xml:"QueryServiceListResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryServiceListBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryServiceList(ctx context.Context, r soap.RoundTripper, req *types.QueryServiceList) (*types.QueryServiceListResponse, error) { + var reqBody, resBody QueryServiceListBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryStorageArrayTypePolicyOptionsBody struct { + Req *types.QueryStorageArrayTypePolicyOptions `xml:"urn:vim25 QueryStorageArrayTypePolicyOptions,omitempty"` + Res *types.QueryStorageArrayTypePolicyOptionsResponse `xml:"QueryStorageArrayTypePolicyOptionsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryStorageArrayTypePolicyOptionsBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryStorageArrayTypePolicyOptions(ctx context.Context, r soap.RoundTripper, req *types.QueryStorageArrayTypePolicyOptions) (*types.QueryStorageArrayTypePolicyOptionsResponse, error) { + var reqBody, resBody QueryStorageArrayTypePolicyOptionsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QuerySupportedFeaturesBody struct { + Req *types.QuerySupportedFeatures `xml:"urn:vim25 QuerySupportedFeatures,omitempty"` + Res *types.QuerySupportedFeaturesResponse `xml:"QuerySupportedFeaturesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QuerySupportedFeaturesBody) Fault() *soap.Fault { return b.Fault_ } + +func QuerySupportedFeatures(ctx context.Context, r soap.RoundTripper, req *types.QuerySupportedFeatures) (*types.QuerySupportedFeaturesResponse, error) { + var reqBody, resBody QuerySupportedFeaturesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QuerySyncingVsanObjectsBody struct { + Req *types.QuerySyncingVsanObjects `xml:"urn:vim25 QuerySyncingVsanObjects,omitempty"` + Res *types.QuerySyncingVsanObjectsResponse `xml:"QuerySyncingVsanObjectsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QuerySyncingVsanObjectsBody) Fault() *soap.Fault { return b.Fault_ } + +func QuerySyncingVsanObjects(ctx context.Context, r soap.RoundTripper, req *types.QuerySyncingVsanObjects) (*types.QuerySyncingVsanObjectsResponse, error) { + var reqBody, resBody QuerySyncingVsanObjectsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QuerySystemUsersBody struct { + Req *types.QuerySystemUsers `xml:"urn:vim25 QuerySystemUsers,omitempty"` + Res *types.QuerySystemUsersResponse `xml:"QuerySystemUsersResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QuerySystemUsersBody) Fault() *soap.Fault { return b.Fault_ } + +func QuerySystemUsers(ctx context.Context, r soap.RoundTripper, req *types.QuerySystemUsers) (*types.QuerySystemUsersResponse, error) { + var reqBody, resBody QuerySystemUsersBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryTargetCapabilitiesBody struct { + Req *types.QueryTargetCapabilities `xml:"urn:vim25 QueryTargetCapabilities,omitempty"` + Res *types.QueryTargetCapabilitiesResponse `xml:"QueryTargetCapabilitiesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryTargetCapabilitiesBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryTargetCapabilities(ctx context.Context, r soap.RoundTripper, req *types.QueryTargetCapabilities) (*types.QueryTargetCapabilitiesResponse, error) { + var reqBody, resBody QueryTargetCapabilitiesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryTpmAttestationReportBody struct { + Req *types.QueryTpmAttestationReport `xml:"urn:vim25 QueryTpmAttestationReport,omitempty"` + Res *types.QueryTpmAttestationReportResponse `xml:"QueryTpmAttestationReportResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryTpmAttestationReportBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryTpmAttestationReport(ctx context.Context, r soap.RoundTripper, req *types.QueryTpmAttestationReport) (*types.QueryTpmAttestationReportResponse, error) { + var reqBody, resBody QueryTpmAttestationReportBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryUnmonitoredHostsBody struct { + Req *types.QueryUnmonitoredHosts `xml:"urn:vim25 QueryUnmonitoredHosts,omitempty"` + Res *types.QueryUnmonitoredHostsResponse `xml:"QueryUnmonitoredHostsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryUnmonitoredHostsBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryUnmonitoredHosts(ctx context.Context, r soap.RoundTripper, req *types.QueryUnmonitoredHosts) (*types.QueryUnmonitoredHostsResponse, error) { + var reqBody, resBody QueryUnmonitoredHostsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryUnownedFilesBody struct { + Req *types.QueryUnownedFiles `xml:"urn:vim25 QueryUnownedFiles,omitempty"` + Res *types.QueryUnownedFilesResponse `xml:"QueryUnownedFilesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryUnownedFilesBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryUnownedFiles(ctx context.Context, r soap.RoundTripper, req *types.QueryUnownedFiles) (*types.QueryUnownedFilesResponse, error) { + var reqBody, resBody QueryUnownedFilesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryUnresolvedVmfsVolumeBody struct { + Req *types.QueryUnresolvedVmfsVolume `xml:"urn:vim25 QueryUnresolvedVmfsVolume,omitempty"` + Res *types.QueryUnresolvedVmfsVolumeResponse `xml:"QueryUnresolvedVmfsVolumeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryUnresolvedVmfsVolumeBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryUnresolvedVmfsVolume(ctx context.Context, r soap.RoundTripper, req *types.QueryUnresolvedVmfsVolume) (*types.QueryUnresolvedVmfsVolumeResponse, error) { + var reqBody, resBody QueryUnresolvedVmfsVolumeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryUnresolvedVmfsVolumesBody struct { + Req *types.QueryUnresolvedVmfsVolumes `xml:"urn:vim25 QueryUnresolvedVmfsVolumes,omitempty"` + Res *types.QueryUnresolvedVmfsVolumesResponse `xml:"QueryUnresolvedVmfsVolumesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryUnresolvedVmfsVolumesBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryUnresolvedVmfsVolumes(ctx context.Context, r soap.RoundTripper, req *types.QueryUnresolvedVmfsVolumes) (*types.QueryUnresolvedVmfsVolumesResponse, error) { + var reqBody, resBody QueryUnresolvedVmfsVolumesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryUsedVlanIdInDvsBody struct { + Req *types.QueryUsedVlanIdInDvs `xml:"urn:vim25 QueryUsedVlanIdInDvs,omitempty"` + Res *types.QueryUsedVlanIdInDvsResponse `xml:"QueryUsedVlanIdInDvsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryUsedVlanIdInDvsBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryUsedVlanIdInDvs(ctx context.Context, r soap.RoundTripper, req *types.QueryUsedVlanIdInDvs) (*types.QueryUsedVlanIdInDvsResponse, error) { + var reqBody, resBody QueryUsedVlanIdInDvsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryVMotionCompatibilityBody struct { + Req *types.QueryVMotionCompatibility `xml:"urn:vim25 QueryVMotionCompatibility,omitempty"` + Res *types.QueryVMotionCompatibilityResponse `xml:"QueryVMotionCompatibilityResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryVMotionCompatibilityBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryVMotionCompatibility(ctx context.Context, r soap.RoundTripper, req *types.QueryVMotionCompatibility) (*types.QueryVMotionCompatibilityResponse, error) { + var reqBody, resBody QueryVMotionCompatibilityBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryVMotionCompatibilityEx_TaskBody struct { + Req *types.QueryVMotionCompatibilityEx_Task `xml:"urn:vim25 QueryVMotionCompatibilityEx_Task,omitempty"` + Res *types.QueryVMotionCompatibilityEx_TaskResponse `xml:"QueryVMotionCompatibilityEx_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryVMotionCompatibilityEx_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryVMotionCompatibilityEx_Task(ctx context.Context, r soap.RoundTripper, req *types.QueryVMotionCompatibilityEx_Task) (*types.QueryVMotionCompatibilityEx_TaskResponse, error) { + var reqBody, resBody QueryVMotionCompatibilityEx_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryVirtualDiskFragmentationBody struct { + Req *types.QueryVirtualDiskFragmentation `xml:"urn:vim25 QueryVirtualDiskFragmentation,omitempty"` + Res *types.QueryVirtualDiskFragmentationResponse `xml:"QueryVirtualDiskFragmentationResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryVirtualDiskFragmentationBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryVirtualDiskFragmentation(ctx context.Context, r soap.RoundTripper, req *types.QueryVirtualDiskFragmentation) (*types.QueryVirtualDiskFragmentationResponse, error) { + var reqBody, resBody QueryVirtualDiskFragmentationBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryVirtualDiskGeometryBody struct { + Req *types.QueryVirtualDiskGeometry `xml:"urn:vim25 QueryVirtualDiskGeometry,omitempty"` + Res *types.QueryVirtualDiskGeometryResponse `xml:"QueryVirtualDiskGeometryResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryVirtualDiskGeometryBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryVirtualDiskGeometry(ctx context.Context, r soap.RoundTripper, req *types.QueryVirtualDiskGeometry) (*types.QueryVirtualDiskGeometryResponse, error) { + var reqBody, resBody QueryVirtualDiskGeometryBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryVirtualDiskUuidBody struct { + Req *types.QueryVirtualDiskUuid `xml:"urn:vim25 QueryVirtualDiskUuid,omitempty"` + Res *types.QueryVirtualDiskUuidResponse `xml:"QueryVirtualDiskUuidResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryVirtualDiskUuidBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryVirtualDiskUuid(ctx context.Context, r soap.RoundTripper, req *types.QueryVirtualDiskUuid) (*types.QueryVirtualDiskUuidResponse, error) { + var reqBody, resBody QueryVirtualDiskUuidBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryVmfsConfigOptionBody struct { + Req *types.QueryVmfsConfigOption `xml:"urn:vim25 QueryVmfsConfigOption,omitempty"` + Res *types.QueryVmfsConfigOptionResponse `xml:"QueryVmfsConfigOptionResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryVmfsConfigOptionBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryVmfsConfigOption(ctx context.Context, r soap.RoundTripper, req *types.QueryVmfsConfigOption) (*types.QueryVmfsConfigOptionResponse, error) { + var reqBody, resBody QueryVmfsConfigOptionBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryVmfsDatastoreCreateOptionsBody struct { + Req *types.QueryVmfsDatastoreCreateOptions `xml:"urn:vim25 QueryVmfsDatastoreCreateOptions,omitempty"` + Res *types.QueryVmfsDatastoreCreateOptionsResponse `xml:"QueryVmfsDatastoreCreateOptionsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryVmfsDatastoreCreateOptionsBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryVmfsDatastoreCreateOptions(ctx context.Context, r soap.RoundTripper, req *types.QueryVmfsDatastoreCreateOptions) (*types.QueryVmfsDatastoreCreateOptionsResponse, error) { + var reqBody, resBody QueryVmfsDatastoreCreateOptionsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryVmfsDatastoreExpandOptionsBody struct { + Req *types.QueryVmfsDatastoreExpandOptions `xml:"urn:vim25 QueryVmfsDatastoreExpandOptions,omitempty"` + Res *types.QueryVmfsDatastoreExpandOptionsResponse `xml:"QueryVmfsDatastoreExpandOptionsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryVmfsDatastoreExpandOptionsBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryVmfsDatastoreExpandOptions(ctx context.Context, r soap.RoundTripper, req *types.QueryVmfsDatastoreExpandOptions) (*types.QueryVmfsDatastoreExpandOptionsResponse, error) { + var reqBody, resBody QueryVmfsDatastoreExpandOptionsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryVmfsDatastoreExtendOptionsBody struct { + Req *types.QueryVmfsDatastoreExtendOptions `xml:"urn:vim25 QueryVmfsDatastoreExtendOptions,omitempty"` + Res *types.QueryVmfsDatastoreExtendOptionsResponse `xml:"QueryVmfsDatastoreExtendOptionsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryVmfsDatastoreExtendOptionsBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryVmfsDatastoreExtendOptions(ctx context.Context, r soap.RoundTripper, req *types.QueryVmfsDatastoreExtendOptions) (*types.QueryVmfsDatastoreExtendOptionsResponse, error) { + var reqBody, resBody QueryVmfsDatastoreExtendOptionsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryVnicStatusBody struct { + Req *types.QueryVnicStatus `xml:"urn:vim25 QueryVnicStatus,omitempty"` + Res *types.QueryVnicStatusResponse `xml:"QueryVnicStatusResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryVnicStatusBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryVnicStatus(ctx context.Context, r soap.RoundTripper, req *types.QueryVnicStatus) (*types.QueryVnicStatusResponse, error) { + var reqBody, resBody QueryVnicStatusBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryVsanObjectUuidsByFilterBody struct { + Req *types.QueryVsanObjectUuidsByFilter `xml:"urn:vim25 QueryVsanObjectUuidsByFilter,omitempty"` + Res *types.QueryVsanObjectUuidsByFilterResponse `xml:"QueryVsanObjectUuidsByFilterResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryVsanObjectUuidsByFilterBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryVsanObjectUuidsByFilter(ctx context.Context, r soap.RoundTripper, req *types.QueryVsanObjectUuidsByFilter) (*types.QueryVsanObjectUuidsByFilterResponse, error) { + var reqBody, resBody QueryVsanObjectUuidsByFilterBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryVsanObjectsBody struct { + Req *types.QueryVsanObjects `xml:"urn:vim25 QueryVsanObjects,omitempty"` + Res *types.QueryVsanObjectsResponse `xml:"QueryVsanObjectsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryVsanObjectsBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryVsanObjects(ctx context.Context, r soap.RoundTripper, req *types.QueryVsanObjects) (*types.QueryVsanObjectsResponse, error) { + var reqBody, resBody QueryVsanObjectsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryVsanStatisticsBody struct { + Req *types.QueryVsanStatistics `xml:"urn:vim25 QueryVsanStatistics,omitempty"` + Res *types.QueryVsanStatisticsResponse `xml:"QueryVsanStatisticsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryVsanStatisticsBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryVsanStatistics(ctx context.Context, r soap.RoundTripper, req *types.QueryVsanStatistics) (*types.QueryVsanStatisticsResponse, error) { + var reqBody, resBody QueryVsanStatisticsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryVsanUpgradeStatusBody struct { + Req *types.QueryVsanUpgradeStatus `xml:"urn:vim25 QueryVsanUpgradeStatus,omitempty"` + Res *types.QueryVsanUpgradeStatusResponse `xml:"QueryVsanUpgradeStatusResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryVsanUpgradeStatusBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryVsanUpgradeStatus(ctx context.Context, r soap.RoundTripper, req *types.QueryVsanUpgradeStatus) (*types.QueryVsanUpgradeStatusResponse, error) { + var reqBody, resBody QueryVsanUpgradeStatusBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReadEnvironmentVariableInGuestBody struct { + Req *types.ReadEnvironmentVariableInGuest `xml:"urn:vim25 ReadEnvironmentVariableInGuest,omitempty"` + Res *types.ReadEnvironmentVariableInGuestResponse `xml:"ReadEnvironmentVariableInGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReadEnvironmentVariableInGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func ReadEnvironmentVariableInGuest(ctx context.Context, r soap.RoundTripper, req *types.ReadEnvironmentVariableInGuest) (*types.ReadEnvironmentVariableInGuestResponse, error) { + var reqBody, resBody ReadEnvironmentVariableInGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReadNextEventsBody struct { + Req *types.ReadNextEvents `xml:"urn:vim25 ReadNextEvents,omitempty"` + Res *types.ReadNextEventsResponse `xml:"ReadNextEventsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReadNextEventsBody) Fault() *soap.Fault { return b.Fault_ } + +func ReadNextEvents(ctx context.Context, r soap.RoundTripper, req *types.ReadNextEvents) (*types.ReadNextEventsResponse, error) { + var reqBody, resBody ReadNextEventsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReadNextTasksBody struct { + Req *types.ReadNextTasks `xml:"urn:vim25 ReadNextTasks,omitempty"` + Res *types.ReadNextTasksResponse `xml:"ReadNextTasksResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReadNextTasksBody) Fault() *soap.Fault { return b.Fault_ } + +func ReadNextTasks(ctx context.Context, r soap.RoundTripper, req *types.ReadNextTasks) (*types.ReadNextTasksResponse, error) { + var reqBody, resBody ReadNextTasksBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReadPreviousEventsBody struct { + Req *types.ReadPreviousEvents `xml:"urn:vim25 ReadPreviousEvents,omitempty"` + Res *types.ReadPreviousEventsResponse `xml:"ReadPreviousEventsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReadPreviousEventsBody) Fault() *soap.Fault { return b.Fault_ } + +func ReadPreviousEvents(ctx context.Context, r soap.RoundTripper, req *types.ReadPreviousEvents) (*types.ReadPreviousEventsResponse, error) { + var reqBody, resBody ReadPreviousEventsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReadPreviousTasksBody struct { + Req *types.ReadPreviousTasks `xml:"urn:vim25 ReadPreviousTasks,omitempty"` + Res *types.ReadPreviousTasksResponse `xml:"ReadPreviousTasksResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReadPreviousTasksBody) Fault() *soap.Fault { return b.Fault_ } + +func ReadPreviousTasks(ctx context.Context, r soap.RoundTripper, req *types.ReadPreviousTasks) (*types.ReadPreviousTasksResponse, error) { + var reqBody, resBody ReadPreviousTasksBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RebootGuestBody struct { + Req *types.RebootGuest `xml:"urn:vim25 RebootGuest,omitempty"` + Res *types.RebootGuestResponse `xml:"RebootGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RebootGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func RebootGuest(ctx context.Context, r soap.RoundTripper, req *types.RebootGuest) (*types.RebootGuestResponse, error) { + var reqBody, resBody RebootGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RebootHost_TaskBody struct { + Req *types.RebootHost_Task `xml:"urn:vim25 RebootHost_Task,omitempty"` + Res *types.RebootHost_TaskResponse `xml:"RebootHost_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RebootHost_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func RebootHost_Task(ctx context.Context, r soap.RoundTripper, req *types.RebootHost_Task) (*types.RebootHost_TaskResponse, error) { + var reqBody, resBody RebootHost_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RecommendDatastoresBody struct { + Req *types.RecommendDatastores `xml:"urn:vim25 RecommendDatastores,omitempty"` + Res *types.RecommendDatastoresResponse `xml:"RecommendDatastoresResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RecommendDatastoresBody) Fault() *soap.Fault { return b.Fault_ } + +func RecommendDatastores(ctx context.Context, r soap.RoundTripper, req *types.RecommendDatastores) (*types.RecommendDatastoresResponse, error) { + var reqBody, resBody RecommendDatastoresBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RecommendHostsForVmBody struct { + Req *types.RecommendHostsForVm `xml:"urn:vim25 RecommendHostsForVm,omitempty"` + Res *types.RecommendHostsForVmResponse `xml:"RecommendHostsForVmResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RecommendHostsForVmBody) Fault() *soap.Fault { return b.Fault_ } + +func RecommendHostsForVm(ctx context.Context, r soap.RoundTripper, req *types.RecommendHostsForVm) (*types.RecommendHostsForVmResponse, error) { + var reqBody, resBody RecommendHostsForVmBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RecommissionVsanNode_TaskBody struct { + Req *types.RecommissionVsanNode_Task `xml:"urn:vim25 RecommissionVsanNode_Task,omitempty"` + Res *types.RecommissionVsanNode_TaskResponse `xml:"RecommissionVsanNode_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RecommissionVsanNode_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func RecommissionVsanNode_Task(ctx context.Context, r soap.RoundTripper, req *types.RecommissionVsanNode_Task) (*types.RecommissionVsanNode_TaskResponse, error) { + var reqBody, resBody RecommissionVsanNode_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReconcileDatastoreInventory_TaskBody struct { + Req *types.ReconcileDatastoreInventory_Task `xml:"urn:vim25 ReconcileDatastoreInventory_Task,omitempty"` + Res *types.ReconcileDatastoreInventory_TaskResponse `xml:"ReconcileDatastoreInventory_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReconcileDatastoreInventory_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ReconcileDatastoreInventory_Task(ctx context.Context, r soap.RoundTripper, req *types.ReconcileDatastoreInventory_Task) (*types.ReconcileDatastoreInventory_TaskResponse, error) { + var reqBody, resBody ReconcileDatastoreInventory_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReconfigVM_TaskBody struct { + Req *types.ReconfigVM_Task `xml:"urn:vim25 ReconfigVM_Task,omitempty"` + Res *types.ReconfigVM_TaskResponse `xml:"ReconfigVM_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReconfigVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ReconfigVM_Task(ctx context.Context, r soap.RoundTripper, req *types.ReconfigVM_Task) (*types.ReconfigVM_TaskResponse, error) { + var reqBody, resBody ReconfigVM_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReconfigurationSatisfiableBody struct { + Req *types.ReconfigurationSatisfiable `xml:"urn:vim25 ReconfigurationSatisfiable,omitempty"` + Res *types.ReconfigurationSatisfiableResponse `xml:"ReconfigurationSatisfiableResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReconfigurationSatisfiableBody) Fault() *soap.Fault { return b.Fault_ } + +func ReconfigurationSatisfiable(ctx context.Context, r soap.RoundTripper, req *types.ReconfigurationSatisfiable) (*types.ReconfigurationSatisfiableResponse, error) { + var reqBody, resBody ReconfigurationSatisfiableBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReconfigureAlarmBody struct { + Req *types.ReconfigureAlarm `xml:"urn:vim25 ReconfigureAlarm,omitempty"` + Res *types.ReconfigureAlarmResponse `xml:"ReconfigureAlarmResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReconfigureAlarmBody) Fault() *soap.Fault { return b.Fault_ } + +func ReconfigureAlarm(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureAlarm) (*types.ReconfigureAlarmResponse, error) { + var reqBody, resBody ReconfigureAlarmBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReconfigureAutostartBody struct { + Req *types.ReconfigureAutostart `xml:"urn:vim25 ReconfigureAutostart,omitempty"` + Res *types.ReconfigureAutostartResponse `xml:"ReconfigureAutostartResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReconfigureAutostartBody) Fault() *soap.Fault { return b.Fault_ } + +func ReconfigureAutostart(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureAutostart) (*types.ReconfigureAutostartResponse, error) { + var reqBody, resBody ReconfigureAutostartBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReconfigureCluster_TaskBody struct { + Req *types.ReconfigureCluster_Task `xml:"urn:vim25 ReconfigureCluster_Task,omitempty"` + Res *types.ReconfigureCluster_TaskResponse `xml:"ReconfigureCluster_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReconfigureCluster_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ReconfigureCluster_Task(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureCluster_Task) (*types.ReconfigureCluster_TaskResponse, error) { + var reqBody, resBody ReconfigureCluster_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReconfigureComputeResource_TaskBody struct { + Req *types.ReconfigureComputeResource_Task `xml:"urn:vim25 ReconfigureComputeResource_Task,omitempty"` + Res *types.ReconfigureComputeResource_TaskResponse `xml:"ReconfigureComputeResource_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReconfigureComputeResource_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ReconfigureComputeResource_Task(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureComputeResource_Task) (*types.ReconfigureComputeResource_TaskResponse, error) { + var reqBody, resBody ReconfigureComputeResource_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReconfigureDVPort_TaskBody struct { + Req *types.ReconfigureDVPort_Task `xml:"urn:vim25 ReconfigureDVPort_Task,omitempty"` + Res *types.ReconfigureDVPort_TaskResponse `xml:"ReconfigureDVPort_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReconfigureDVPort_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ReconfigureDVPort_Task(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureDVPort_Task) (*types.ReconfigureDVPort_TaskResponse, error) { + var reqBody, resBody ReconfigureDVPort_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReconfigureDVPortgroup_TaskBody struct { + Req *types.ReconfigureDVPortgroup_Task `xml:"urn:vim25 ReconfigureDVPortgroup_Task,omitempty"` + Res *types.ReconfigureDVPortgroup_TaskResponse `xml:"ReconfigureDVPortgroup_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReconfigureDVPortgroup_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ReconfigureDVPortgroup_Task(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureDVPortgroup_Task) (*types.ReconfigureDVPortgroup_TaskResponse, error) { + var reqBody, resBody ReconfigureDVPortgroup_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReconfigureDatacenter_TaskBody struct { + Req *types.ReconfigureDatacenter_Task `xml:"urn:vim25 ReconfigureDatacenter_Task,omitempty"` + Res *types.ReconfigureDatacenter_TaskResponse `xml:"ReconfigureDatacenter_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReconfigureDatacenter_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ReconfigureDatacenter_Task(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureDatacenter_Task) (*types.ReconfigureDatacenter_TaskResponse, error) { + var reqBody, resBody ReconfigureDatacenter_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReconfigureDomObjectBody struct { + Req *types.ReconfigureDomObject `xml:"urn:vim25 ReconfigureDomObject,omitempty"` + Res *types.ReconfigureDomObjectResponse `xml:"ReconfigureDomObjectResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReconfigureDomObjectBody) Fault() *soap.Fault { return b.Fault_ } + +func ReconfigureDomObject(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureDomObject) (*types.ReconfigureDomObjectResponse, error) { + var reqBody, resBody ReconfigureDomObjectBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReconfigureDvs_TaskBody struct { + Req *types.ReconfigureDvs_Task `xml:"urn:vim25 ReconfigureDvs_Task,omitempty"` + Res *types.ReconfigureDvs_TaskResponse `xml:"ReconfigureDvs_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReconfigureDvs_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ReconfigureDvs_Task(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureDvs_Task) (*types.ReconfigureDvs_TaskResponse, error) { + var reqBody, resBody ReconfigureDvs_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReconfigureHostForDAS_TaskBody struct { + Req *types.ReconfigureHostForDAS_Task `xml:"urn:vim25 ReconfigureHostForDAS_Task,omitempty"` + Res *types.ReconfigureHostForDAS_TaskResponse `xml:"ReconfigureHostForDAS_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReconfigureHostForDAS_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ReconfigureHostForDAS_Task(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureHostForDAS_Task) (*types.ReconfigureHostForDAS_TaskResponse, error) { + var reqBody, resBody ReconfigureHostForDAS_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReconfigureScheduledTaskBody struct { + Req *types.ReconfigureScheduledTask `xml:"urn:vim25 ReconfigureScheduledTask,omitempty"` + Res *types.ReconfigureScheduledTaskResponse `xml:"ReconfigureScheduledTaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReconfigureScheduledTaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ReconfigureScheduledTask(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureScheduledTask) (*types.ReconfigureScheduledTaskResponse, error) { + var reqBody, resBody ReconfigureScheduledTaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReconfigureServiceConsoleReservationBody struct { + Req *types.ReconfigureServiceConsoleReservation `xml:"urn:vim25 ReconfigureServiceConsoleReservation,omitempty"` + Res *types.ReconfigureServiceConsoleReservationResponse `xml:"ReconfigureServiceConsoleReservationResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReconfigureServiceConsoleReservationBody) Fault() *soap.Fault { return b.Fault_ } + +func ReconfigureServiceConsoleReservation(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureServiceConsoleReservation) (*types.ReconfigureServiceConsoleReservationResponse, error) { + var reqBody, resBody ReconfigureServiceConsoleReservationBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReconfigureSnmpAgentBody struct { + Req *types.ReconfigureSnmpAgent `xml:"urn:vim25 ReconfigureSnmpAgent,omitempty"` + Res *types.ReconfigureSnmpAgentResponse `xml:"ReconfigureSnmpAgentResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReconfigureSnmpAgentBody) Fault() *soap.Fault { return b.Fault_ } + +func ReconfigureSnmpAgent(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureSnmpAgent) (*types.ReconfigureSnmpAgentResponse, error) { + var reqBody, resBody ReconfigureSnmpAgentBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReconfigureVirtualMachineReservationBody struct { + Req *types.ReconfigureVirtualMachineReservation `xml:"urn:vim25 ReconfigureVirtualMachineReservation,omitempty"` + Res *types.ReconfigureVirtualMachineReservationResponse `xml:"ReconfigureVirtualMachineReservationResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReconfigureVirtualMachineReservationBody) Fault() *soap.Fault { return b.Fault_ } + +func ReconfigureVirtualMachineReservation(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureVirtualMachineReservation) (*types.ReconfigureVirtualMachineReservationResponse, error) { + var reqBody, resBody ReconfigureVirtualMachineReservationBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReconnectHost_TaskBody struct { + Req *types.ReconnectHost_Task `xml:"urn:vim25 ReconnectHost_Task,omitempty"` + Res *types.ReconnectHost_TaskResponse `xml:"ReconnectHost_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReconnectHost_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ReconnectHost_Task(ctx context.Context, r soap.RoundTripper, req *types.ReconnectHost_Task) (*types.ReconnectHost_TaskResponse, error) { + var reqBody, resBody ReconnectHost_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RectifyDvsHost_TaskBody struct { + Req *types.RectifyDvsHost_Task `xml:"urn:vim25 RectifyDvsHost_Task,omitempty"` + Res *types.RectifyDvsHost_TaskResponse `xml:"RectifyDvsHost_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RectifyDvsHost_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func RectifyDvsHost_Task(ctx context.Context, r soap.RoundTripper, req *types.RectifyDvsHost_Task) (*types.RectifyDvsHost_TaskResponse, error) { + var reqBody, resBody RectifyDvsHost_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RectifyDvsOnHost_TaskBody struct { + Req *types.RectifyDvsOnHost_Task `xml:"urn:vim25 RectifyDvsOnHost_Task,omitempty"` + Res *types.RectifyDvsOnHost_TaskResponse `xml:"RectifyDvsOnHost_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RectifyDvsOnHost_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func RectifyDvsOnHost_Task(ctx context.Context, r soap.RoundTripper, req *types.RectifyDvsOnHost_Task) (*types.RectifyDvsOnHost_TaskResponse, error) { + var reqBody, resBody RectifyDvsOnHost_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RefreshBody struct { + Req *types.Refresh `xml:"urn:vim25 Refresh,omitempty"` + Res *types.RefreshResponse `xml:"RefreshResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RefreshBody) Fault() *soap.Fault { return b.Fault_ } + +func Refresh(ctx context.Context, r soap.RoundTripper, req *types.Refresh) (*types.RefreshResponse, error) { + var reqBody, resBody RefreshBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RefreshDVPortStateBody struct { + Req *types.RefreshDVPortState `xml:"urn:vim25 RefreshDVPortState,omitempty"` + Res *types.RefreshDVPortStateResponse `xml:"RefreshDVPortStateResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RefreshDVPortStateBody) Fault() *soap.Fault { return b.Fault_ } + +func RefreshDVPortState(ctx context.Context, r soap.RoundTripper, req *types.RefreshDVPortState) (*types.RefreshDVPortStateResponse, error) { + var reqBody, resBody RefreshDVPortStateBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RefreshDatastoreBody struct { + Req *types.RefreshDatastore `xml:"urn:vim25 RefreshDatastore,omitempty"` + Res *types.RefreshDatastoreResponse `xml:"RefreshDatastoreResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RefreshDatastoreBody) Fault() *soap.Fault { return b.Fault_ } + +func RefreshDatastore(ctx context.Context, r soap.RoundTripper, req *types.RefreshDatastore) (*types.RefreshDatastoreResponse, error) { + var reqBody, resBody RefreshDatastoreBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RefreshDatastoreStorageInfoBody struct { + Req *types.RefreshDatastoreStorageInfo `xml:"urn:vim25 RefreshDatastoreStorageInfo,omitempty"` + Res *types.RefreshDatastoreStorageInfoResponse `xml:"RefreshDatastoreStorageInfoResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RefreshDatastoreStorageInfoBody) Fault() *soap.Fault { return b.Fault_ } + +func RefreshDatastoreStorageInfo(ctx context.Context, r soap.RoundTripper, req *types.RefreshDatastoreStorageInfo) (*types.RefreshDatastoreStorageInfoResponse, error) { + var reqBody, resBody RefreshDatastoreStorageInfoBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RefreshDateTimeSystemBody struct { + Req *types.RefreshDateTimeSystem `xml:"urn:vim25 RefreshDateTimeSystem,omitempty"` + Res *types.RefreshDateTimeSystemResponse `xml:"RefreshDateTimeSystemResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RefreshDateTimeSystemBody) Fault() *soap.Fault { return b.Fault_ } + +func RefreshDateTimeSystem(ctx context.Context, r soap.RoundTripper, req *types.RefreshDateTimeSystem) (*types.RefreshDateTimeSystemResponse, error) { + var reqBody, resBody RefreshDateTimeSystemBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RefreshFirewallBody struct { + Req *types.RefreshFirewall `xml:"urn:vim25 RefreshFirewall,omitempty"` + Res *types.RefreshFirewallResponse `xml:"RefreshFirewallResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RefreshFirewallBody) Fault() *soap.Fault { return b.Fault_ } + +func RefreshFirewall(ctx context.Context, r soap.RoundTripper, req *types.RefreshFirewall) (*types.RefreshFirewallResponse, error) { + var reqBody, resBody RefreshFirewallBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RefreshGraphicsManagerBody struct { + Req *types.RefreshGraphicsManager `xml:"urn:vim25 RefreshGraphicsManager,omitempty"` + Res *types.RefreshGraphicsManagerResponse `xml:"RefreshGraphicsManagerResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RefreshGraphicsManagerBody) Fault() *soap.Fault { return b.Fault_ } + +func RefreshGraphicsManager(ctx context.Context, r soap.RoundTripper, req *types.RefreshGraphicsManager) (*types.RefreshGraphicsManagerResponse, error) { + var reqBody, resBody RefreshGraphicsManagerBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RefreshHealthStatusSystemBody struct { + Req *types.RefreshHealthStatusSystem `xml:"urn:vim25 RefreshHealthStatusSystem,omitempty"` + Res *types.RefreshHealthStatusSystemResponse `xml:"RefreshHealthStatusSystemResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RefreshHealthStatusSystemBody) Fault() *soap.Fault { return b.Fault_ } + +func RefreshHealthStatusSystem(ctx context.Context, r soap.RoundTripper, req *types.RefreshHealthStatusSystem) (*types.RefreshHealthStatusSystemResponse, error) { + var reqBody, resBody RefreshHealthStatusSystemBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RefreshNetworkSystemBody struct { + Req *types.RefreshNetworkSystem `xml:"urn:vim25 RefreshNetworkSystem,omitempty"` + Res *types.RefreshNetworkSystemResponse `xml:"RefreshNetworkSystemResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RefreshNetworkSystemBody) Fault() *soap.Fault { return b.Fault_ } + +func RefreshNetworkSystem(ctx context.Context, r soap.RoundTripper, req *types.RefreshNetworkSystem) (*types.RefreshNetworkSystemResponse, error) { + var reqBody, resBody RefreshNetworkSystemBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RefreshRecommendationBody struct { + Req *types.RefreshRecommendation `xml:"urn:vim25 RefreshRecommendation,omitempty"` + Res *types.RefreshRecommendationResponse `xml:"RefreshRecommendationResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RefreshRecommendationBody) Fault() *soap.Fault { return b.Fault_ } + +func RefreshRecommendation(ctx context.Context, r soap.RoundTripper, req *types.RefreshRecommendation) (*types.RefreshRecommendationResponse, error) { + var reqBody, resBody RefreshRecommendationBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RefreshRuntimeBody struct { + Req *types.RefreshRuntime `xml:"urn:vim25 RefreshRuntime,omitempty"` + Res *types.RefreshRuntimeResponse `xml:"RefreshRuntimeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RefreshRuntimeBody) Fault() *soap.Fault { return b.Fault_ } + +func RefreshRuntime(ctx context.Context, r soap.RoundTripper, req *types.RefreshRuntime) (*types.RefreshRuntimeResponse, error) { + var reqBody, resBody RefreshRuntimeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RefreshServicesBody struct { + Req *types.RefreshServices `xml:"urn:vim25 RefreshServices,omitempty"` + Res *types.RefreshServicesResponse `xml:"RefreshServicesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RefreshServicesBody) Fault() *soap.Fault { return b.Fault_ } + +func RefreshServices(ctx context.Context, r soap.RoundTripper, req *types.RefreshServices) (*types.RefreshServicesResponse, error) { + var reqBody, resBody RefreshServicesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RefreshStorageDrsRecommendationBody struct { + Req *types.RefreshStorageDrsRecommendation `xml:"urn:vim25 RefreshStorageDrsRecommendation,omitempty"` + Res *types.RefreshStorageDrsRecommendationResponse `xml:"RefreshStorageDrsRecommendationResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RefreshStorageDrsRecommendationBody) Fault() *soap.Fault { return b.Fault_ } + +func RefreshStorageDrsRecommendation(ctx context.Context, r soap.RoundTripper, req *types.RefreshStorageDrsRecommendation) (*types.RefreshStorageDrsRecommendationResponse, error) { + var reqBody, resBody RefreshStorageDrsRecommendationBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RefreshStorageDrsRecommendationsForPod_TaskBody struct { + Req *types.RefreshStorageDrsRecommendationsForPod_Task `xml:"urn:vim25 RefreshStorageDrsRecommendationsForPod_Task,omitempty"` + Res *types.RefreshStorageDrsRecommendationsForPod_TaskResponse `xml:"RefreshStorageDrsRecommendationsForPod_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RefreshStorageDrsRecommendationsForPod_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func RefreshStorageDrsRecommendationsForPod_Task(ctx context.Context, r soap.RoundTripper, req *types.RefreshStorageDrsRecommendationsForPod_Task) (*types.RefreshStorageDrsRecommendationsForPod_TaskResponse, error) { + var reqBody, resBody RefreshStorageDrsRecommendationsForPod_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RefreshStorageInfoBody struct { + Req *types.RefreshStorageInfo `xml:"urn:vim25 RefreshStorageInfo,omitempty"` + Res *types.RefreshStorageInfoResponse `xml:"RefreshStorageInfoResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RefreshStorageInfoBody) Fault() *soap.Fault { return b.Fault_ } + +func RefreshStorageInfo(ctx context.Context, r soap.RoundTripper, req *types.RefreshStorageInfo) (*types.RefreshStorageInfoResponse, error) { + var reqBody, resBody RefreshStorageInfoBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RefreshStorageSystemBody struct { + Req *types.RefreshStorageSystem `xml:"urn:vim25 RefreshStorageSystem,omitempty"` + Res *types.RefreshStorageSystemResponse `xml:"RefreshStorageSystemResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RefreshStorageSystemBody) Fault() *soap.Fault { return b.Fault_ } + +func RefreshStorageSystem(ctx context.Context, r soap.RoundTripper, req *types.RefreshStorageSystem) (*types.RefreshStorageSystemResponse, error) { + var reqBody, resBody RefreshStorageSystemBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RegisterChildVM_TaskBody struct { + Req *types.RegisterChildVM_Task `xml:"urn:vim25 RegisterChildVM_Task,omitempty"` + Res *types.RegisterChildVM_TaskResponse `xml:"RegisterChildVM_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RegisterChildVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func RegisterChildVM_Task(ctx context.Context, r soap.RoundTripper, req *types.RegisterChildVM_Task) (*types.RegisterChildVM_TaskResponse, error) { + var reqBody, resBody RegisterChildVM_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RegisterDiskBody struct { + Req *types.RegisterDisk `xml:"urn:vim25 RegisterDisk,omitempty"` + Res *types.RegisterDiskResponse `xml:"RegisterDiskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RegisterDiskBody) Fault() *soap.Fault { return b.Fault_ } + +func RegisterDisk(ctx context.Context, r soap.RoundTripper, req *types.RegisterDisk) (*types.RegisterDiskResponse, error) { + var reqBody, resBody RegisterDiskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RegisterExtensionBody struct { + Req *types.RegisterExtension `xml:"urn:vim25 RegisterExtension,omitempty"` + Res *types.RegisterExtensionResponse `xml:"RegisterExtensionResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RegisterExtensionBody) Fault() *soap.Fault { return b.Fault_ } + +func RegisterExtension(ctx context.Context, r soap.RoundTripper, req *types.RegisterExtension) (*types.RegisterExtensionResponse, error) { + var reqBody, resBody RegisterExtensionBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RegisterHealthUpdateProviderBody struct { + Req *types.RegisterHealthUpdateProvider `xml:"urn:vim25 RegisterHealthUpdateProvider,omitempty"` + Res *types.RegisterHealthUpdateProviderResponse `xml:"RegisterHealthUpdateProviderResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RegisterHealthUpdateProviderBody) Fault() *soap.Fault { return b.Fault_ } + +func RegisterHealthUpdateProvider(ctx context.Context, r soap.RoundTripper, req *types.RegisterHealthUpdateProvider) (*types.RegisterHealthUpdateProviderResponse, error) { + var reqBody, resBody RegisterHealthUpdateProviderBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RegisterKmipServerBody struct { + Req *types.RegisterKmipServer `xml:"urn:vim25 RegisterKmipServer,omitempty"` + Res *types.RegisterKmipServerResponse `xml:"RegisterKmipServerResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RegisterKmipServerBody) Fault() *soap.Fault { return b.Fault_ } + +func RegisterKmipServer(ctx context.Context, r soap.RoundTripper, req *types.RegisterKmipServer) (*types.RegisterKmipServerResponse, error) { + var reqBody, resBody RegisterKmipServerBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RegisterKmsClusterBody struct { + Req *types.RegisterKmsCluster `xml:"urn:vim25 RegisterKmsCluster,omitempty"` + Res *types.RegisterKmsClusterResponse `xml:"RegisterKmsClusterResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RegisterKmsClusterBody) Fault() *soap.Fault { return b.Fault_ } + +func RegisterKmsCluster(ctx context.Context, r soap.RoundTripper, req *types.RegisterKmsCluster) (*types.RegisterKmsClusterResponse, error) { + var reqBody, resBody RegisterKmsClusterBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RegisterVM_TaskBody struct { + Req *types.RegisterVM_Task `xml:"urn:vim25 RegisterVM_Task,omitempty"` + Res *types.RegisterVM_TaskResponse `xml:"RegisterVM_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RegisterVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func RegisterVM_Task(ctx context.Context, r soap.RoundTripper, req *types.RegisterVM_Task) (*types.RegisterVM_TaskResponse, error) { + var reqBody, resBody RegisterVM_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReleaseCredentialsInGuestBody struct { + Req *types.ReleaseCredentialsInGuest `xml:"urn:vim25 ReleaseCredentialsInGuest,omitempty"` + Res *types.ReleaseCredentialsInGuestResponse `xml:"ReleaseCredentialsInGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReleaseCredentialsInGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func ReleaseCredentialsInGuest(ctx context.Context, r soap.RoundTripper, req *types.ReleaseCredentialsInGuest) (*types.ReleaseCredentialsInGuestResponse, error) { + var reqBody, resBody ReleaseCredentialsInGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReleaseIpAllocationBody struct { + Req *types.ReleaseIpAllocation `xml:"urn:vim25 ReleaseIpAllocation,omitempty"` + Res *types.ReleaseIpAllocationResponse `xml:"ReleaseIpAllocationResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReleaseIpAllocationBody) Fault() *soap.Fault { return b.Fault_ } + +func ReleaseIpAllocation(ctx context.Context, r soap.RoundTripper, req *types.ReleaseIpAllocation) (*types.ReleaseIpAllocationResponse, error) { + var reqBody, resBody ReleaseIpAllocationBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReleaseManagedSnapshotBody struct { + Req *types.ReleaseManagedSnapshot `xml:"urn:vim25 ReleaseManagedSnapshot,omitempty"` + Res *types.ReleaseManagedSnapshotResponse `xml:"ReleaseManagedSnapshotResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReleaseManagedSnapshotBody) Fault() *soap.Fault { return b.Fault_ } + +func ReleaseManagedSnapshot(ctx context.Context, r soap.RoundTripper, req *types.ReleaseManagedSnapshot) (*types.ReleaseManagedSnapshotResponse, error) { + var reqBody, resBody ReleaseManagedSnapshotBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReloadBody struct { + Req *types.Reload `xml:"urn:vim25 Reload,omitempty"` + Res *types.ReloadResponse `xml:"ReloadResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReloadBody) Fault() *soap.Fault { return b.Fault_ } + +func Reload(ctx context.Context, r soap.RoundTripper, req *types.Reload) (*types.ReloadResponse, error) { + var reqBody, resBody ReloadBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RelocateVM_TaskBody struct { + Req *types.RelocateVM_Task `xml:"urn:vim25 RelocateVM_Task,omitempty"` + Res *types.RelocateVM_TaskResponse `xml:"RelocateVM_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RelocateVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func RelocateVM_Task(ctx context.Context, r soap.RoundTripper, req *types.RelocateVM_Task) (*types.RelocateVM_TaskResponse, error) { + var reqBody, resBody RelocateVM_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RelocateVStorageObject_TaskBody struct { + Req *types.RelocateVStorageObject_Task `xml:"urn:vim25 RelocateVStorageObject_Task,omitempty"` + Res *types.RelocateVStorageObject_TaskResponse `xml:"RelocateVStorageObject_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RelocateVStorageObject_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func RelocateVStorageObject_Task(ctx context.Context, r soap.RoundTripper, req *types.RelocateVStorageObject_Task) (*types.RelocateVStorageObject_TaskResponse, error) { + var reqBody, resBody RelocateVStorageObject_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveAlarmBody struct { + Req *types.RemoveAlarm `xml:"urn:vim25 RemoveAlarm,omitempty"` + Res *types.RemoveAlarmResponse `xml:"RemoveAlarmResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveAlarmBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveAlarm(ctx context.Context, r soap.RoundTripper, req *types.RemoveAlarm) (*types.RemoveAlarmResponse, error) { + var reqBody, resBody RemoveAlarmBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveAllSnapshots_TaskBody struct { + Req *types.RemoveAllSnapshots_Task `xml:"urn:vim25 RemoveAllSnapshots_Task,omitempty"` + Res *types.RemoveAllSnapshots_TaskResponse `xml:"RemoveAllSnapshots_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveAllSnapshots_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveAllSnapshots_Task(ctx context.Context, r soap.RoundTripper, req *types.RemoveAllSnapshots_Task) (*types.RemoveAllSnapshots_TaskResponse, error) { + var reqBody, resBody RemoveAllSnapshots_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveAssignedLicenseBody struct { + Req *types.RemoveAssignedLicense `xml:"urn:vim25 RemoveAssignedLicense,omitempty"` + Res *types.RemoveAssignedLicenseResponse `xml:"RemoveAssignedLicenseResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveAssignedLicenseBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveAssignedLicense(ctx context.Context, r soap.RoundTripper, req *types.RemoveAssignedLicense) (*types.RemoveAssignedLicenseResponse, error) { + var reqBody, resBody RemoveAssignedLicenseBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveAuthorizationRoleBody struct { + Req *types.RemoveAuthorizationRole `xml:"urn:vim25 RemoveAuthorizationRole,omitempty"` + Res *types.RemoveAuthorizationRoleResponse `xml:"RemoveAuthorizationRoleResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveAuthorizationRoleBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveAuthorizationRole(ctx context.Context, r soap.RoundTripper, req *types.RemoveAuthorizationRole) (*types.RemoveAuthorizationRoleResponse, error) { + var reqBody, resBody RemoveAuthorizationRoleBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveCustomFieldDefBody struct { + Req *types.RemoveCustomFieldDef `xml:"urn:vim25 RemoveCustomFieldDef,omitempty"` + Res *types.RemoveCustomFieldDefResponse `xml:"RemoveCustomFieldDefResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveCustomFieldDefBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveCustomFieldDef(ctx context.Context, r soap.RoundTripper, req *types.RemoveCustomFieldDef) (*types.RemoveCustomFieldDefResponse, error) { + var reqBody, resBody RemoveCustomFieldDefBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveDatastoreBody struct { + Req *types.RemoveDatastore `xml:"urn:vim25 RemoveDatastore,omitempty"` + Res *types.RemoveDatastoreResponse `xml:"RemoveDatastoreResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveDatastoreBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveDatastore(ctx context.Context, r soap.RoundTripper, req *types.RemoveDatastore) (*types.RemoveDatastoreResponse, error) { + var reqBody, resBody RemoveDatastoreBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveDatastoreEx_TaskBody struct { + Req *types.RemoveDatastoreEx_Task `xml:"urn:vim25 RemoveDatastoreEx_Task,omitempty"` + Res *types.RemoveDatastoreEx_TaskResponse `xml:"RemoveDatastoreEx_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveDatastoreEx_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveDatastoreEx_Task(ctx context.Context, r soap.RoundTripper, req *types.RemoveDatastoreEx_Task) (*types.RemoveDatastoreEx_TaskResponse, error) { + var reqBody, resBody RemoveDatastoreEx_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveDiskMapping_TaskBody struct { + Req *types.RemoveDiskMapping_Task `xml:"urn:vim25 RemoveDiskMapping_Task,omitempty"` + Res *types.RemoveDiskMapping_TaskResponse `xml:"RemoveDiskMapping_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveDiskMapping_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveDiskMapping_Task(ctx context.Context, r soap.RoundTripper, req *types.RemoveDiskMapping_Task) (*types.RemoveDiskMapping_TaskResponse, error) { + var reqBody, resBody RemoveDiskMapping_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveDisk_TaskBody struct { + Req *types.RemoveDisk_Task `xml:"urn:vim25 RemoveDisk_Task,omitempty"` + Res *types.RemoveDisk_TaskResponse `xml:"RemoveDisk_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.RemoveDisk_Task) (*types.RemoveDisk_TaskResponse, error) { + var reqBody, resBody RemoveDisk_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveEntityPermissionBody struct { + Req *types.RemoveEntityPermission `xml:"urn:vim25 RemoveEntityPermission,omitempty"` + Res *types.RemoveEntityPermissionResponse `xml:"RemoveEntityPermissionResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveEntityPermissionBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveEntityPermission(ctx context.Context, r soap.RoundTripper, req *types.RemoveEntityPermission) (*types.RemoveEntityPermissionResponse, error) { + var reqBody, resBody RemoveEntityPermissionBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveFilterBody struct { + Req *types.RemoveFilter `xml:"urn:vim25 RemoveFilter,omitempty"` + Res *types.RemoveFilterResponse `xml:"RemoveFilterResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveFilterBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveFilter(ctx context.Context, r soap.RoundTripper, req *types.RemoveFilter) (*types.RemoveFilterResponse, error) { + var reqBody, resBody RemoveFilterBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveFilterEntitiesBody struct { + Req *types.RemoveFilterEntities `xml:"urn:vim25 RemoveFilterEntities,omitempty"` + Res *types.RemoveFilterEntitiesResponse `xml:"RemoveFilterEntitiesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveFilterEntitiesBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveFilterEntities(ctx context.Context, r soap.RoundTripper, req *types.RemoveFilterEntities) (*types.RemoveFilterEntitiesResponse, error) { + var reqBody, resBody RemoveFilterEntitiesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveGroupBody struct { + Req *types.RemoveGroup `xml:"urn:vim25 RemoveGroup,omitempty"` + Res *types.RemoveGroupResponse `xml:"RemoveGroupResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveGroupBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveGroup(ctx context.Context, r soap.RoundTripper, req *types.RemoveGroup) (*types.RemoveGroupResponse, error) { + var reqBody, resBody RemoveGroupBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveGuestAliasBody struct { + Req *types.RemoveGuestAlias `xml:"urn:vim25 RemoveGuestAlias,omitempty"` + Res *types.RemoveGuestAliasResponse `xml:"RemoveGuestAliasResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveGuestAliasBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveGuestAlias(ctx context.Context, r soap.RoundTripper, req *types.RemoveGuestAlias) (*types.RemoveGuestAliasResponse, error) { + var reqBody, resBody RemoveGuestAliasBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveGuestAliasByCertBody struct { + Req *types.RemoveGuestAliasByCert `xml:"urn:vim25 RemoveGuestAliasByCert,omitempty"` + Res *types.RemoveGuestAliasByCertResponse `xml:"RemoveGuestAliasByCertResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveGuestAliasByCertBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveGuestAliasByCert(ctx context.Context, r soap.RoundTripper, req *types.RemoveGuestAliasByCert) (*types.RemoveGuestAliasByCertResponse, error) { + var reqBody, resBody RemoveGuestAliasByCertBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveInternetScsiSendTargetsBody struct { + Req *types.RemoveInternetScsiSendTargets `xml:"urn:vim25 RemoveInternetScsiSendTargets,omitempty"` + Res *types.RemoveInternetScsiSendTargetsResponse `xml:"RemoveInternetScsiSendTargetsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveInternetScsiSendTargetsBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveInternetScsiSendTargets(ctx context.Context, r soap.RoundTripper, req *types.RemoveInternetScsiSendTargets) (*types.RemoveInternetScsiSendTargetsResponse, error) { + var reqBody, resBody RemoveInternetScsiSendTargetsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveInternetScsiStaticTargetsBody struct { + Req *types.RemoveInternetScsiStaticTargets `xml:"urn:vim25 RemoveInternetScsiStaticTargets,omitempty"` + Res *types.RemoveInternetScsiStaticTargetsResponse `xml:"RemoveInternetScsiStaticTargetsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveInternetScsiStaticTargetsBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveInternetScsiStaticTargets(ctx context.Context, r soap.RoundTripper, req *types.RemoveInternetScsiStaticTargets) (*types.RemoveInternetScsiStaticTargetsResponse, error) { + var reqBody, resBody RemoveInternetScsiStaticTargetsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveKeyBody struct { + Req *types.RemoveKey `xml:"urn:vim25 RemoveKey,omitempty"` + Res *types.RemoveKeyResponse `xml:"RemoveKeyResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveKeyBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveKey(ctx context.Context, r soap.RoundTripper, req *types.RemoveKey) (*types.RemoveKeyResponse, error) { + var reqBody, resBody RemoveKeyBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveKeysBody struct { + Req *types.RemoveKeys `xml:"urn:vim25 RemoveKeys,omitempty"` + Res *types.RemoveKeysResponse `xml:"RemoveKeysResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveKeysBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveKeys(ctx context.Context, r soap.RoundTripper, req *types.RemoveKeys) (*types.RemoveKeysResponse, error) { + var reqBody, resBody RemoveKeysBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveKmipServerBody struct { + Req *types.RemoveKmipServer `xml:"urn:vim25 RemoveKmipServer,omitempty"` + Res *types.RemoveKmipServerResponse `xml:"RemoveKmipServerResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveKmipServerBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveKmipServer(ctx context.Context, r soap.RoundTripper, req *types.RemoveKmipServer) (*types.RemoveKmipServerResponse, error) { + var reqBody, resBody RemoveKmipServerBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveLicenseBody struct { + Req *types.RemoveLicense `xml:"urn:vim25 RemoveLicense,omitempty"` + Res *types.RemoveLicenseResponse `xml:"RemoveLicenseResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveLicenseBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveLicense(ctx context.Context, r soap.RoundTripper, req *types.RemoveLicense) (*types.RemoveLicenseResponse, error) { + var reqBody, resBody RemoveLicenseBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveLicenseLabelBody struct { + Req *types.RemoveLicenseLabel `xml:"urn:vim25 RemoveLicenseLabel,omitempty"` + Res *types.RemoveLicenseLabelResponse `xml:"RemoveLicenseLabelResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveLicenseLabelBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveLicenseLabel(ctx context.Context, r soap.RoundTripper, req *types.RemoveLicenseLabel) (*types.RemoveLicenseLabelResponse, error) { + var reqBody, resBody RemoveLicenseLabelBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveMonitoredEntitiesBody struct { + Req *types.RemoveMonitoredEntities `xml:"urn:vim25 RemoveMonitoredEntities,omitempty"` + Res *types.RemoveMonitoredEntitiesResponse `xml:"RemoveMonitoredEntitiesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveMonitoredEntitiesBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveMonitoredEntities(ctx context.Context, r soap.RoundTripper, req *types.RemoveMonitoredEntities) (*types.RemoveMonitoredEntitiesResponse, error) { + var reqBody, resBody RemoveMonitoredEntitiesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveNetworkResourcePoolBody struct { + Req *types.RemoveNetworkResourcePool `xml:"urn:vim25 RemoveNetworkResourcePool,omitempty"` + Res *types.RemoveNetworkResourcePoolResponse `xml:"RemoveNetworkResourcePoolResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveNetworkResourcePoolBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveNetworkResourcePool(ctx context.Context, r soap.RoundTripper, req *types.RemoveNetworkResourcePool) (*types.RemoveNetworkResourcePoolResponse, error) { + var reqBody, resBody RemoveNetworkResourcePoolBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveNvmeOverRdmaAdapterBody struct { + Req *types.RemoveNvmeOverRdmaAdapter `xml:"urn:vim25 RemoveNvmeOverRdmaAdapter,omitempty"` + Res *types.RemoveNvmeOverRdmaAdapterResponse `xml:"RemoveNvmeOverRdmaAdapterResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveNvmeOverRdmaAdapterBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveNvmeOverRdmaAdapter(ctx context.Context, r soap.RoundTripper, req *types.RemoveNvmeOverRdmaAdapter) (*types.RemoveNvmeOverRdmaAdapterResponse, error) { + var reqBody, resBody RemoveNvmeOverRdmaAdapterBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemovePerfIntervalBody struct { + Req *types.RemovePerfInterval `xml:"urn:vim25 RemovePerfInterval,omitempty"` + Res *types.RemovePerfIntervalResponse `xml:"RemovePerfIntervalResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemovePerfIntervalBody) Fault() *soap.Fault { return b.Fault_ } + +func RemovePerfInterval(ctx context.Context, r soap.RoundTripper, req *types.RemovePerfInterval) (*types.RemovePerfIntervalResponse, error) { + var reqBody, resBody RemovePerfIntervalBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemovePortGroupBody struct { + Req *types.RemovePortGroup `xml:"urn:vim25 RemovePortGroup,omitempty"` + Res *types.RemovePortGroupResponse `xml:"RemovePortGroupResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemovePortGroupBody) Fault() *soap.Fault { return b.Fault_ } + +func RemovePortGroup(ctx context.Context, r soap.RoundTripper, req *types.RemovePortGroup) (*types.RemovePortGroupResponse, error) { + var reqBody, resBody RemovePortGroupBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveScheduledTaskBody struct { + Req *types.RemoveScheduledTask `xml:"urn:vim25 RemoveScheduledTask,omitempty"` + Res *types.RemoveScheduledTaskResponse `xml:"RemoveScheduledTaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveScheduledTaskBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveScheduledTask(ctx context.Context, r soap.RoundTripper, req *types.RemoveScheduledTask) (*types.RemoveScheduledTaskResponse, error) { + var reqBody, resBody RemoveScheduledTaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveServiceConsoleVirtualNicBody struct { + Req *types.RemoveServiceConsoleVirtualNic `xml:"urn:vim25 RemoveServiceConsoleVirtualNic,omitempty"` + Res *types.RemoveServiceConsoleVirtualNicResponse `xml:"RemoveServiceConsoleVirtualNicResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveServiceConsoleVirtualNicBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveServiceConsoleVirtualNic(ctx context.Context, r soap.RoundTripper, req *types.RemoveServiceConsoleVirtualNic) (*types.RemoveServiceConsoleVirtualNicResponse, error) { + var reqBody, resBody RemoveServiceConsoleVirtualNicBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveSmartCardTrustAnchorBody struct { + Req *types.RemoveSmartCardTrustAnchor `xml:"urn:vim25 RemoveSmartCardTrustAnchor,omitempty"` + Res *types.RemoveSmartCardTrustAnchorResponse `xml:"RemoveSmartCardTrustAnchorResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveSmartCardTrustAnchorBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveSmartCardTrustAnchor(ctx context.Context, r soap.RoundTripper, req *types.RemoveSmartCardTrustAnchor) (*types.RemoveSmartCardTrustAnchorResponse, error) { + var reqBody, resBody RemoveSmartCardTrustAnchorBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveSmartCardTrustAnchorByFingerprintBody struct { + Req *types.RemoveSmartCardTrustAnchorByFingerprint `xml:"urn:vim25 RemoveSmartCardTrustAnchorByFingerprint,omitempty"` + Res *types.RemoveSmartCardTrustAnchorByFingerprintResponse `xml:"RemoveSmartCardTrustAnchorByFingerprintResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveSmartCardTrustAnchorByFingerprintBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveSmartCardTrustAnchorByFingerprint(ctx context.Context, r soap.RoundTripper, req *types.RemoveSmartCardTrustAnchorByFingerprint) (*types.RemoveSmartCardTrustAnchorByFingerprintResponse, error) { + var reqBody, resBody RemoveSmartCardTrustAnchorByFingerprintBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveSnapshot_TaskBody struct { + Req *types.RemoveSnapshot_Task `xml:"urn:vim25 RemoveSnapshot_Task,omitempty"` + Res *types.RemoveSnapshot_TaskResponse `xml:"RemoveSnapshot_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveSnapshot_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveSnapshot_Task(ctx context.Context, r soap.RoundTripper, req *types.RemoveSnapshot_Task) (*types.RemoveSnapshot_TaskResponse, error) { + var reqBody, resBody RemoveSnapshot_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveUserBody struct { + Req *types.RemoveUser `xml:"urn:vim25 RemoveUser,omitempty"` + Res *types.RemoveUserResponse `xml:"RemoveUserResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveUserBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveUser(ctx context.Context, r soap.RoundTripper, req *types.RemoveUser) (*types.RemoveUserResponse, error) { + var reqBody, resBody RemoveUserBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveVirtualNicBody struct { + Req *types.RemoveVirtualNic `xml:"urn:vim25 RemoveVirtualNic,omitempty"` + Res *types.RemoveVirtualNicResponse `xml:"RemoveVirtualNicResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveVirtualNicBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveVirtualNic(ctx context.Context, r soap.RoundTripper, req *types.RemoveVirtualNic) (*types.RemoveVirtualNicResponse, error) { + var reqBody, resBody RemoveVirtualNicBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RemoveVirtualSwitchBody struct { + Req *types.RemoveVirtualSwitch `xml:"urn:vim25 RemoveVirtualSwitch,omitempty"` + Res *types.RemoveVirtualSwitchResponse `xml:"RemoveVirtualSwitchResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RemoveVirtualSwitchBody) Fault() *soap.Fault { return b.Fault_ } + +func RemoveVirtualSwitch(ctx context.Context, r soap.RoundTripper, req *types.RemoveVirtualSwitch) (*types.RemoveVirtualSwitchResponse, error) { + var reqBody, resBody RemoveVirtualSwitchBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RenameCustomFieldDefBody struct { + Req *types.RenameCustomFieldDef `xml:"urn:vim25 RenameCustomFieldDef,omitempty"` + Res *types.RenameCustomFieldDefResponse `xml:"RenameCustomFieldDefResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RenameCustomFieldDefBody) Fault() *soap.Fault { return b.Fault_ } + +func RenameCustomFieldDef(ctx context.Context, r soap.RoundTripper, req *types.RenameCustomFieldDef) (*types.RenameCustomFieldDefResponse, error) { + var reqBody, resBody RenameCustomFieldDefBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RenameCustomizationSpecBody struct { + Req *types.RenameCustomizationSpec `xml:"urn:vim25 RenameCustomizationSpec,omitempty"` + Res *types.RenameCustomizationSpecResponse `xml:"RenameCustomizationSpecResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RenameCustomizationSpecBody) Fault() *soap.Fault { return b.Fault_ } + +func RenameCustomizationSpec(ctx context.Context, r soap.RoundTripper, req *types.RenameCustomizationSpec) (*types.RenameCustomizationSpecResponse, error) { + var reqBody, resBody RenameCustomizationSpecBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RenameDatastoreBody struct { + Req *types.RenameDatastore `xml:"urn:vim25 RenameDatastore,omitempty"` + Res *types.RenameDatastoreResponse `xml:"RenameDatastoreResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RenameDatastoreBody) Fault() *soap.Fault { return b.Fault_ } + +func RenameDatastore(ctx context.Context, r soap.RoundTripper, req *types.RenameDatastore) (*types.RenameDatastoreResponse, error) { + var reqBody, resBody RenameDatastoreBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RenameSnapshotBody struct { + Req *types.RenameSnapshot `xml:"urn:vim25 RenameSnapshot,omitempty"` + Res *types.RenameSnapshotResponse `xml:"RenameSnapshotResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RenameSnapshotBody) Fault() *soap.Fault { return b.Fault_ } + +func RenameSnapshot(ctx context.Context, r soap.RoundTripper, req *types.RenameSnapshot) (*types.RenameSnapshotResponse, error) { + var reqBody, resBody RenameSnapshotBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RenameVStorageObjectBody struct { + Req *types.RenameVStorageObject `xml:"urn:vim25 RenameVStorageObject,omitempty"` + Res *types.RenameVStorageObjectResponse `xml:"RenameVStorageObjectResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RenameVStorageObjectBody) Fault() *soap.Fault { return b.Fault_ } + +func RenameVStorageObject(ctx context.Context, r soap.RoundTripper, req *types.RenameVStorageObject) (*types.RenameVStorageObjectResponse, error) { + var reqBody, resBody RenameVStorageObjectBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type Rename_TaskBody struct { + Req *types.Rename_Task `xml:"urn:vim25 Rename_Task,omitempty"` + Res *types.Rename_TaskResponse `xml:"Rename_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *Rename_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func Rename_Task(ctx context.Context, r soap.RoundTripper, req *types.Rename_Task) (*types.Rename_TaskResponse, error) { + var reqBody, resBody Rename_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReplaceCACertificatesAndCRLsBody struct { + Req *types.ReplaceCACertificatesAndCRLs `xml:"urn:vim25 ReplaceCACertificatesAndCRLs,omitempty"` + Res *types.ReplaceCACertificatesAndCRLsResponse `xml:"ReplaceCACertificatesAndCRLsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReplaceCACertificatesAndCRLsBody) Fault() *soap.Fault { return b.Fault_ } + +func ReplaceCACertificatesAndCRLs(ctx context.Context, r soap.RoundTripper, req *types.ReplaceCACertificatesAndCRLs) (*types.ReplaceCACertificatesAndCRLsResponse, error) { + var reqBody, resBody ReplaceCACertificatesAndCRLsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReplaceSmartCardTrustAnchorsBody struct { + Req *types.ReplaceSmartCardTrustAnchors `xml:"urn:vim25 ReplaceSmartCardTrustAnchors,omitempty"` + Res *types.ReplaceSmartCardTrustAnchorsResponse `xml:"ReplaceSmartCardTrustAnchorsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReplaceSmartCardTrustAnchorsBody) Fault() *soap.Fault { return b.Fault_ } + +func ReplaceSmartCardTrustAnchors(ctx context.Context, r soap.RoundTripper, req *types.ReplaceSmartCardTrustAnchors) (*types.ReplaceSmartCardTrustAnchorsResponse, error) { + var reqBody, resBody ReplaceSmartCardTrustAnchorsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RescanAllHbaBody struct { + Req *types.RescanAllHba `xml:"urn:vim25 RescanAllHba,omitempty"` + Res *types.RescanAllHbaResponse `xml:"RescanAllHbaResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RescanAllHbaBody) Fault() *soap.Fault { return b.Fault_ } + +func RescanAllHba(ctx context.Context, r soap.RoundTripper, req *types.RescanAllHba) (*types.RescanAllHbaResponse, error) { + var reqBody, resBody RescanAllHbaBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RescanHbaBody struct { + Req *types.RescanHba `xml:"urn:vim25 RescanHba,omitempty"` + Res *types.RescanHbaResponse `xml:"RescanHbaResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RescanHbaBody) Fault() *soap.Fault { return b.Fault_ } + +func RescanHba(ctx context.Context, r soap.RoundTripper, req *types.RescanHba) (*types.RescanHbaResponse, error) { + var reqBody, resBody RescanHbaBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RescanVffsBody struct { + Req *types.RescanVffs `xml:"urn:vim25 RescanVffs,omitempty"` + Res *types.RescanVffsResponse `xml:"RescanVffsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RescanVffsBody) Fault() *soap.Fault { return b.Fault_ } + +func RescanVffs(ctx context.Context, r soap.RoundTripper, req *types.RescanVffs) (*types.RescanVffsResponse, error) { + var reqBody, resBody RescanVffsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RescanVmfsBody struct { + Req *types.RescanVmfs `xml:"urn:vim25 RescanVmfs,omitempty"` + Res *types.RescanVmfsResponse `xml:"RescanVmfsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RescanVmfsBody) Fault() *soap.Fault { return b.Fault_ } + +func RescanVmfs(ctx context.Context, r soap.RoundTripper, req *types.RescanVmfs) (*types.RescanVmfsResponse, error) { + var reqBody, resBody RescanVmfsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ResetCollectorBody struct { + Req *types.ResetCollector `xml:"urn:vim25 ResetCollector,omitempty"` + Res *types.ResetCollectorResponse `xml:"ResetCollectorResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ResetCollectorBody) Fault() *soap.Fault { return b.Fault_ } + +func ResetCollector(ctx context.Context, r soap.RoundTripper, req *types.ResetCollector) (*types.ResetCollectorResponse, error) { + var reqBody, resBody ResetCollectorBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ResetCounterLevelMappingBody struct { + Req *types.ResetCounterLevelMapping `xml:"urn:vim25 ResetCounterLevelMapping,omitempty"` + Res *types.ResetCounterLevelMappingResponse `xml:"ResetCounterLevelMappingResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ResetCounterLevelMappingBody) Fault() *soap.Fault { return b.Fault_ } + +func ResetCounterLevelMapping(ctx context.Context, r soap.RoundTripper, req *types.ResetCounterLevelMapping) (*types.ResetCounterLevelMappingResponse, error) { + var reqBody, resBody ResetCounterLevelMappingBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ResetEntityPermissionsBody struct { + Req *types.ResetEntityPermissions `xml:"urn:vim25 ResetEntityPermissions,omitempty"` + Res *types.ResetEntityPermissionsResponse `xml:"ResetEntityPermissionsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ResetEntityPermissionsBody) Fault() *soap.Fault { return b.Fault_ } + +func ResetEntityPermissions(ctx context.Context, r soap.RoundTripper, req *types.ResetEntityPermissions) (*types.ResetEntityPermissionsResponse, error) { + var reqBody, resBody ResetEntityPermissionsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ResetFirmwareToFactoryDefaultsBody struct { + Req *types.ResetFirmwareToFactoryDefaults `xml:"urn:vim25 ResetFirmwareToFactoryDefaults,omitempty"` + Res *types.ResetFirmwareToFactoryDefaultsResponse `xml:"ResetFirmwareToFactoryDefaultsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ResetFirmwareToFactoryDefaultsBody) Fault() *soap.Fault { return b.Fault_ } + +func ResetFirmwareToFactoryDefaults(ctx context.Context, r soap.RoundTripper, req *types.ResetFirmwareToFactoryDefaults) (*types.ResetFirmwareToFactoryDefaultsResponse, error) { + var reqBody, resBody ResetFirmwareToFactoryDefaultsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ResetGuestInformationBody struct { + Req *types.ResetGuestInformation `xml:"urn:vim25 ResetGuestInformation,omitempty"` + Res *types.ResetGuestInformationResponse `xml:"ResetGuestInformationResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ResetGuestInformationBody) Fault() *soap.Fault { return b.Fault_ } + +func ResetGuestInformation(ctx context.Context, r soap.RoundTripper, req *types.ResetGuestInformation) (*types.ResetGuestInformationResponse, error) { + var reqBody, resBody ResetGuestInformationBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ResetListViewBody struct { + Req *types.ResetListView `xml:"urn:vim25 ResetListView,omitempty"` + Res *types.ResetListViewResponse `xml:"ResetListViewResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ResetListViewBody) Fault() *soap.Fault { return b.Fault_ } + +func ResetListView(ctx context.Context, r soap.RoundTripper, req *types.ResetListView) (*types.ResetListViewResponse, error) { + var reqBody, resBody ResetListViewBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ResetListViewFromViewBody struct { + Req *types.ResetListViewFromView `xml:"urn:vim25 ResetListViewFromView,omitempty"` + Res *types.ResetListViewFromViewResponse `xml:"ResetListViewFromViewResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ResetListViewFromViewBody) Fault() *soap.Fault { return b.Fault_ } + +func ResetListViewFromView(ctx context.Context, r soap.RoundTripper, req *types.ResetListViewFromView) (*types.ResetListViewFromViewResponse, error) { + var reqBody, resBody ResetListViewFromViewBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ResetSystemHealthInfoBody struct { + Req *types.ResetSystemHealthInfo `xml:"urn:vim25 ResetSystemHealthInfo,omitempty"` + Res *types.ResetSystemHealthInfoResponse `xml:"ResetSystemHealthInfoResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ResetSystemHealthInfoBody) Fault() *soap.Fault { return b.Fault_ } + +func ResetSystemHealthInfo(ctx context.Context, r soap.RoundTripper, req *types.ResetSystemHealthInfo) (*types.ResetSystemHealthInfoResponse, error) { + var reqBody, resBody ResetSystemHealthInfoBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ResetVM_TaskBody struct { + Req *types.ResetVM_Task `xml:"urn:vim25 ResetVM_Task,omitempty"` + Res *types.ResetVM_TaskResponse `xml:"ResetVM_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ResetVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ResetVM_Task(ctx context.Context, r soap.RoundTripper, req *types.ResetVM_Task) (*types.ResetVM_TaskResponse, error) { + var reqBody, resBody ResetVM_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ResignatureUnresolvedVmfsVolume_TaskBody struct { + Req *types.ResignatureUnresolvedVmfsVolume_Task `xml:"urn:vim25 ResignatureUnresolvedVmfsVolume_Task,omitempty"` + Res *types.ResignatureUnresolvedVmfsVolume_TaskResponse `xml:"ResignatureUnresolvedVmfsVolume_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ResignatureUnresolvedVmfsVolume_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ResignatureUnresolvedVmfsVolume_Task(ctx context.Context, r soap.RoundTripper, req *types.ResignatureUnresolvedVmfsVolume_Task) (*types.ResignatureUnresolvedVmfsVolume_TaskResponse, error) { + var reqBody, resBody ResignatureUnresolvedVmfsVolume_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ResolveInstallationErrorsOnCluster_TaskBody struct { + Req *types.ResolveInstallationErrorsOnCluster_Task `xml:"urn:vim25 ResolveInstallationErrorsOnCluster_Task,omitempty"` + Res *types.ResolveInstallationErrorsOnCluster_TaskResponse `xml:"ResolveInstallationErrorsOnCluster_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ResolveInstallationErrorsOnCluster_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ResolveInstallationErrorsOnCluster_Task(ctx context.Context, r soap.RoundTripper, req *types.ResolveInstallationErrorsOnCluster_Task) (*types.ResolveInstallationErrorsOnCluster_TaskResponse, error) { + var reqBody, resBody ResolveInstallationErrorsOnCluster_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ResolveInstallationErrorsOnHost_TaskBody struct { + Req *types.ResolveInstallationErrorsOnHost_Task `xml:"urn:vim25 ResolveInstallationErrorsOnHost_Task,omitempty"` + Res *types.ResolveInstallationErrorsOnHost_TaskResponse `xml:"ResolveInstallationErrorsOnHost_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ResolveInstallationErrorsOnHost_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ResolveInstallationErrorsOnHost_Task(ctx context.Context, r soap.RoundTripper, req *types.ResolveInstallationErrorsOnHost_Task) (*types.ResolveInstallationErrorsOnHost_TaskResponse, error) { + var reqBody, resBody ResolveInstallationErrorsOnHost_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ResolveMultipleUnresolvedVmfsVolumesBody struct { + Req *types.ResolveMultipleUnresolvedVmfsVolumes `xml:"urn:vim25 ResolveMultipleUnresolvedVmfsVolumes,omitempty"` + Res *types.ResolveMultipleUnresolvedVmfsVolumesResponse `xml:"ResolveMultipleUnresolvedVmfsVolumesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ResolveMultipleUnresolvedVmfsVolumesBody) Fault() *soap.Fault { return b.Fault_ } + +func ResolveMultipleUnresolvedVmfsVolumes(ctx context.Context, r soap.RoundTripper, req *types.ResolveMultipleUnresolvedVmfsVolumes) (*types.ResolveMultipleUnresolvedVmfsVolumesResponse, error) { + var reqBody, resBody ResolveMultipleUnresolvedVmfsVolumesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ResolveMultipleUnresolvedVmfsVolumesEx_TaskBody struct { + Req *types.ResolveMultipleUnresolvedVmfsVolumesEx_Task `xml:"urn:vim25 ResolveMultipleUnresolvedVmfsVolumesEx_Task,omitempty"` + Res *types.ResolveMultipleUnresolvedVmfsVolumesEx_TaskResponse `xml:"ResolveMultipleUnresolvedVmfsVolumesEx_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ResolveMultipleUnresolvedVmfsVolumesEx_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ResolveMultipleUnresolvedVmfsVolumesEx_Task(ctx context.Context, r soap.RoundTripper, req *types.ResolveMultipleUnresolvedVmfsVolumesEx_Task) (*types.ResolveMultipleUnresolvedVmfsVolumesEx_TaskResponse, error) { + var reqBody, resBody ResolveMultipleUnresolvedVmfsVolumesEx_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RestartServiceBody struct { + Req *types.RestartService `xml:"urn:vim25 RestartService,omitempty"` + Res *types.RestartServiceResponse `xml:"RestartServiceResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RestartServiceBody) Fault() *soap.Fault { return b.Fault_ } + +func RestartService(ctx context.Context, r soap.RoundTripper, req *types.RestartService) (*types.RestartServiceResponse, error) { + var reqBody, resBody RestartServiceBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RestartServiceConsoleVirtualNicBody struct { + Req *types.RestartServiceConsoleVirtualNic `xml:"urn:vim25 RestartServiceConsoleVirtualNic,omitempty"` + Res *types.RestartServiceConsoleVirtualNicResponse `xml:"RestartServiceConsoleVirtualNicResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RestartServiceConsoleVirtualNicBody) Fault() *soap.Fault { return b.Fault_ } + +func RestartServiceConsoleVirtualNic(ctx context.Context, r soap.RoundTripper, req *types.RestartServiceConsoleVirtualNic) (*types.RestartServiceConsoleVirtualNicResponse, error) { + var reqBody, resBody RestartServiceConsoleVirtualNicBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RestoreFirmwareConfigurationBody struct { + Req *types.RestoreFirmwareConfiguration `xml:"urn:vim25 RestoreFirmwareConfiguration,omitempty"` + Res *types.RestoreFirmwareConfigurationResponse `xml:"RestoreFirmwareConfigurationResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RestoreFirmwareConfigurationBody) Fault() *soap.Fault { return b.Fault_ } + +func RestoreFirmwareConfiguration(ctx context.Context, r soap.RoundTripper, req *types.RestoreFirmwareConfiguration) (*types.RestoreFirmwareConfigurationResponse, error) { + var reqBody, resBody RestoreFirmwareConfigurationBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveAllPermissionsBody struct { + Req *types.RetrieveAllPermissions `xml:"urn:vim25 RetrieveAllPermissions,omitempty"` + Res *types.RetrieveAllPermissionsResponse `xml:"RetrieveAllPermissionsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveAllPermissionsBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveAllPermissions(ctx context.Context, r soap.RoundTripper, req *types.RetrieveAllPermissions) (*types.RetrieveAllPermissionsResponse, error) { + var reqBody, resBody RetrieveAllPermissionsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveAnswerFileBody struct { + Req *types.RetrieveAnswerFile `xml:"urn:vim25 RetrieveAnswerFile,omitempty"` + Res *types.RetrieveAnswerFileResponse `xml:"RetrieveAnswerFileResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveAnswerFileBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveAnswerFile(ctx context.Context, r soap.RoundTripper, req *types.RetrieveAnswerFile) (*types.RetrieveAnswerFileResponse, error) { + var reqBody, resBody RetrieveAnswerFileBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveAnswerFileForProfileBody struct { + Req *types.RetrieveAnswerFileForProfile `xml:"urn:vim25 RetrieveAnswerFileForProfile,omitempty"` + Res *types.RetrieveAnswerFileForProfileResponse `xml:"RetrieveAnswerFileForProfileResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveAnswerFileForProfileBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveAnswerFileForProfile(ctx context.Context, r soap.RoundTripper, req *types.RetrieveAnswerFileForProfile) (*types.RetrieveAnswerFileForProfileResponse, error) { + var reqBody, resBody RetrieveAnswerFileForProfileBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveArgumentDescriptionBody struct { + Req *types.RetrieveArgumentDescription `xml:"urn:vim25 RetrieveArgumentDescription,omitempty"` + Res *types.RetrieveArgumentDescriptionResponse `xml:"RetrieveArgumentDescriptionResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveArgumentDescriptionBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveArgumentDescription(ctx context.Context, r soap.RoundTripper, req *types.RetrieveArgumentDescription) (*types.RetrieveArgumentDescriptionResponse, error) { + var reqBody, resBody RetrieveArgumentDescriptionBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveClientCertBody struct { + Req *types.RetrieveClientCert `xml:"urn:vim25 RetrieveClientCert,omitempty"` + Res *types.RetrieveClientCertResponse `xml:"RetrieveClientCertResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveClientCertBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveClientCert(ctx context.Context, r soap.RoundTripper, req *types.RetrieveClientCert) (*types.RetrieveClientCertResponse, error) { + var reqBody, resBody RetrieveClientCertBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveClientCsrBody struct { + Req *types.RetrieveClientCsr `xml:"urn:vim25 RetrieveClientCsr,omitempty"` + Res *types.RetrieveClientCsrResponse `xml:"RetrieveClientCsrResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveClientCsrBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveClientCsr(ctx context.Context, r soap.RoundTripper, req *types.RetrieveClientCsr) (*types.RetrieveClientCsrResponse, error) { + var reqBody, resBody RetrieveClientCsrBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveDasAdvancedRuntimeInfoBody struct { + Req *types.RetrieveDasAdvancedRuntimeInfo `xml:"urn:vim25 RetrieveDasAdvancedRuntimeInfo,omitempty"` + Res *types.RetrieveDasAdvancedRuntimeInfoResponse `xml:"RetrieveDasAdvancedRuntimeInfoResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveDasAdvancedRuntimeInfoBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveDasAdvancedRuntimeInfo(ctx context.Context, r soap.RoundTripper, req *types.RetrieveDasAdvancedRuntimeInfo) (*types.RetrieveDasAdvancedRuntimeInfoResponse, error) { + var reqBody, resBody RetrieveDasAdvancedRuntimeInfoBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveDescriptionBody struct { + Req *types.RetrieveDescription `xml:"urn:vim25 RetrieveDescription,omitempty"` + Res *types.RetrieveDescriptionResponse `xml:"RetrieveDescriptionResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveDescriptionBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveDescription(ctx context.Context, r soap.RoundTripper, req *types.RetrieveDescription) (*types.RetrieveDescriptionResponse, error) { + var reqBody, resBody RetrieveDescriptionBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveDiskPartitionInfoBody struct { + Req *types.RetrieveDiskPartitionInfo `xml:"urn:vim25 RetrieveDiskPartitionInfo,omitempty"` + Res *types.RetrieveDiskPartitionInfoResponse `xml:"RetrieveDiskPartitionInfoResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveDiskPartitionInfoBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveDiskPartitionInfo(ctx context.Context, r soap.RoundTripper, req *types.RetrieveDiskPartitionInfo) (*types.RetrieveDiskPartitionInfoResponse, error) { + var reqBody, resBody RetrieveDiskPartitionInfoBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveDynamicPassthroughInfoBody struct { + Req *types.RetrieveDynamicPassthroughInfo `xml:"urn:vim25 RetrieveDynamicPassthroughInfo,omitempty"` + Res *types.RetrieveDynamicPassthroughInfoResponse `xml:"RetrieveDynamicPassthroughInfoResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveDynamicPassthroughInfoBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveDynamicPassthroughInfo(ctx context.Context, r soap.RoundTripper, req *types.RetrieveDynamicPassthroughInfo) (*types.RetrieveDynamicPassthroughInfoResponse, error) { + var reqBody, resBody RetrieveDynamicPassthroughInfoBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveEntityPermissionsBody struct { + Req *types.RetrieveEntityPermissions `xml:"urn:vim25 RetrieveEntityPermissions,omitempty"` + Res *types.RetrieveEntityPermissionsResponse `xml:"RetrieveEntityPermissionsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveEntityPermissionsBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveEntityPermissions(ctx context.Context, r soap.RoundTripper, req *types.RetrieveEntityPermissions) (*types.RetrieveEntityPermissionsResponse, error) { + var reqBody, resBody RetrieveEntityPermissionsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveEntityScheduledTaskBody struct { + Req *types.RetrieveEntityScheduledTask `xml:"urn:vim25 RetrieveEntityScheduledTask,omitempty"` + Res *types.RetrieveEntityScheduledTaskResponse `xml:"RetrieveEntityScheduledTaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveEntityScheduledTaskBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveEntityScheduledTask(ctx context.Context, r soap.RoundTripper, req *types.RetrieveEntityScheduledTask) (*types.RetrieveEntityScheduledTaskResponse, error) { + var reqBody, resBody RetrieveEntityScheduledTaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveFreeEpcMemoryBody struct { + Req *types.RetrieveFreeEpcMemory `xml:"urn:vim25 RetrieveFreeEpcMemory,omitempty"` + Res *types.RetrieveFreeEpcMemoryResponse `xml:"RetrieveFreeEpcMemoryResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveFreeEpcMemoryBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveFreeEpcMemory(ctx context.Context, r soap.RoundTripper, req *types.RetrieveFreeEpcMemory) (*types.RetrieveFreeEpcMemoryResponse, error) { + var reqBody, resBody RetrieveFreeEpcMemoryBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveHardwareUptimeBody struct { + Req *types.RetrieveHardwareUptime `xml:"urn:vim25 RetrieveHardwareUptime,omitempty"` + Res *types.RetrieveHardwareUptimeResponse `xml:"RetrieveHardwareUptimeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveHardwareUptimeBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveHardwareUptime(ctx context.Context, r soap.RoundTripper, req *types.RetrieveHardwareUptime) (*types.RetrieveHardwareUptimeResponse, error) { + var reqBody, resBody RetrieveHardwareUptimeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveHostAccessControlEntriesBody struct { + Req *types.RetrieveHostAccessControlEntries `xml:"urn:vim25 RetrieveHostAccessControlEntries,omitempty"` + Res *types.RetrieveHostAccessControlEntriesResponse `xml:"RetrieveHostAccessControlEntriesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveHostAccessControlEntriesBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveHostAccessControlEntries(ctx context.Context, r soap.RoundTripper, req *types.RetrieveHostAccessControlEntries) (*types.RetrieveHostAccessControlEntriesResponse, error) { + var reqBody, resBody RetrieveHostAccessControlEntriesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveHostCustomizationsBody struct { + Req *types.RetrieveHostCustomizations `xml:"urn:vim25 RetrieveHostCustomizations,omitempty"` + Res *types.RetrieveHostCustomizationsResponse `xml:"RetrieveHostCustomizationsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveHostCustomizationsBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveHostCustomizations(ctx context.Context, r soap.RoundTripper, req *types.RetrieveHostCustomizations) (*types.RetrieveHostCustomizationsResponse, error) { + var reqBody, resBody RetrieveHostCustomizationsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveHostCustomizationsForProfileBody struct { + Req *types.RetrieveHostCustomizationsForProfile `xml:"urn:vim25 RetrieveHostCustomizationsForProfile,omitempty"` + Res *types.RetrieveHostCustomizationsForProfileResponse `xml:"RetrieveHostCustomizationsForProfileResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveHostCustomizationsForProfileBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveHostCustomizationsForProfile(ctx context.Context, r soap.RoundTripper, req *types.RetrieveHostCustomizationsForProfile) (*types.RetrieveHostCustomizationsForProfileResponse, error) { + var reqBody, resBody RetrieveHostCustomizationsForProfileBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveHostSpecificationBody struct { + Req *types.RetrieveHostSpecification `xml:"urn:vim25 RetrieveHostSpecification,omitempty"` + Res *types.RetrieveHostSpecificationResponse `xml:"RetrieveHostSpecificationResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveHostSpecificationBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveHostSpecification(ctx context.Context, r soap.RoundTripper, req *types.RetrieveHostSpecification) (*types.RetrieveHostSpecificationResponse, error) { + var reqBody, resBody RetrieveHostSpecificationBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveKmipServerCertBody struct { + Req *types.RetrieveKmipServerCert `xml:"urn:vim25 RetrieveKmipServerCert,omitempty"` + Res *types.RetrieveKmipServerCertResponse `xml:"RetrieveKmipServerCertResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveKmipServerCertBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveKmipServerCert(ctx context.Context, r soap.RoundTripper, req *types.RetrieveKmipServerCert) (*types.RetrieveKmipServerCertResponse, error) { + var reqBody, resBody RetrieveKmipServerCertBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveKmipServersStatus_TaskBody struct { + Req *types.RetrieveKmipServersStatus_Task `xml:"urn:vim25 RetrieveKmipServersStatus_Task,omitempty"` + Res *types.RetrieveKmipServersStatus_TaskResponse `xml:"RetrieveKmipServersStatus_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveKmipServersStatus_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveKmipServersStatus_Task(ctx context.Context, r soap.RoundTripper, req *types.RetrieveKmipServersStatus_Task) (*types.RetrieveKmipServersStatus_TaskResponse, error) { + var reqBody, resBody RetrieveKmipServersStatus_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveObjectScheduledTaskBody struct { + Req *types.RetrieveObjectScheduledTask `xml:"urn:vim25 RetrieveObjectScheduledTask,omitempty"` + Res *types.RetrieveObjectScheduledTaskResponse `xml:"RetrieveObjectScheduledTaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveObjectScheduledTaskBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveObjectScheduledTask(ctx context.Context, r soap.RoundTripper, req *types.RetrieveObjectScheduledTask) (*types.RetrieveObjectScheduledTaskResponse, error) { + var reqBody, resBody RetrieveObjectScheduledTaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveProductComponentsBody struct { + Req *types.RetrieveProductComponents `xml:"urn:vim25 RetrieveProductComponents,omitempty"` + Res *types.RetrieveProductComponentsResponse `xml:"RetrieveProductComponentsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveProductComponentsBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveProductComponents(ctx context.Context, r soap.RoundTripper, req *types.RetrieveProductComponents) (*types.RetrieveProductComponentsResponse, error) { + var reqBody, resBody RetrieveProductComponentsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrievePropertiesBody struct { + Req *types.RetrieveProperties `xml:"urn:vim25 RetrieveProperties,omitempty"` + Res *types.RetrievePropertiesResponse `xml:"RetrievePropertiesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrievePropertiesBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveProperties(ctx context.Context, r soap.RoundTripper, req *types.RetrieveProperties) (*types.RetrievePropertiesResponse, error) { + var reqBody, resBody RetrievePropertiesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrievePropertiesExBody struct { + Req *types.RetrievePropertiesEx `xml:"urn:vim25 RetrievePropertiesEx,omitempty"` + Res *types.RetrievePropertiesExResponse `xml:"RetrievePropertiesExResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrievePropertiesExBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrievePropertiesEx(ctx context.Context, r soap.RoundTripper, req *types.RetrievePropertiesEx) (*types.RetrievePropertiesExResponse, error) { + var reqBody, resBody RetrievePropertiesExBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveRolePermissionsBody struct { + Req *types.RetrieveRolePermissions `xml:"urn:vim25 RetrieveRolePermissions,omitempty"` + Res *types.RetrieveRolePermissionsResponse `xml:"RetrieveRolePermissionsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveRolePermissionsBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveRolePermissions(ctx context.Context, r soap.RoundTripper, req *types.RetrieveRolePermissions) (*types.RetrieveRolePermissionsResponse, error) { + var reqBody, resBody RetrieveRolePermissionsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveSelfSignedClientCertBody struct { + Req *types.RetrieveSelfSignedClientCert `xml:"urn:vim25 RetrieveSelfSignedClientCert,omitempty"` + Res *types.RetrieveSelfSignedClientCertResponse `xml:"RetrieveSelfSignedClientCertResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveSelfSignedClientCertBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveSelfSignedClientCert(ctx context.Context, r soap.RoundTripper, req *types.RetrieveSelfSignedClientCert) (*types.RetrieveSelfSignedClientCertResponse, error) { + var reqBody, resBody RetrieveSelfSignedClientCertBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveServiceContentBody struct { + Req *types.RetrieveServiceContent `xml:"urn:vim25 RetrieveServiceContent,omitempty"` + Res *types.RetrieveServiceContentResponse `xml:"RetrieveServiceContentResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveServiceContentBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveServiceContent(ctx context.Context, r soap.RoundTripper, req *types.RetrieveServiceContent) (*types.RetrieveServiceContentResponse, error) { + var reqBody, resBody RetrieveServiceContentBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveServiceProviderEntitiesBody struct { + Req *types.RetrieveServiceProviderEntities `xml:"urn:vim25 RetrieveServiceProviderEntities,omitempty"` + Res *types.RetrieveServiceProviderEntitiesResponse `xml:"RetrieveServiceProviderEntitiesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveServiceProviderEntitiesBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveServiceProviderEntities(ctx context.Context, r soap.RoundTripper, req *types.RetrieveServiceProviderEntities) (*types.RetrieveServiceProviderEntitiesResponse, error) { + var reqBody, resBody RetrieveServiceProviderEntitiesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveSnapshotDetailsBody struct { + Req *types.RetrieveSnapshotDetails `xml:"urn:vim25 RetrieveSnapshotDetails,omitempty"` + Res *types.RetrieveSnapshotDetailsResponse `xml:"RetrieveSnapshotDetailsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveSnapshotDetailsBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveSnapshotDetails(ctx context.Context, r soap.RoundTripper, req *types.RetrieveSnapshotDetails) (*types.RetrieveSnapshotDetailsResponse, error) { + var reqBody, resBody RetrieveSnapshotDetailsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveSnapshotInfoBody struct { + Req *types.RetrieveSnapshotInfo `xml:"urn:vim25 RetrieveSnapshotInfo,omitempty"` + Res *types.RetrieveSnapshotInfoResponse `xml:"RetrieveSnapshotInfoResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveSnapshotInfoBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveSnapshotInfo(ctx context.Context, r soap.RoundTripper, req *types.RetrieveSnapshotInfo) (*types.RetrieveSnapshotInfoResponse, error) { + var reqBody, resBody RetrieveSnapshotInfoBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveUserGroupsBody struct { + Req *types.RetrieveUserGroups `xml:"urn:vim25 RetrieveUserGroups,omitempty"` + Res *types.RetrieveUserGroupsResponse `xml:"RetrieveUserGroupsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveUserGroupsBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveUserGroups(ctx context.Context, r soap.RoundTripper, req *types.RetrieveUserGroups) (*types.RetrieveUserGroupsResponse, error) { + var reqBody, resBody RetrieveUserGroupsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveVStorageInfrastructureObjectPolicyBody struct { + Req *types.RetrieveVStorageInfrastructureObjectPolicy `xml:"urn:vim25 RetrieveVStorageInfrastructureObjectPolicy,omitempty"` + Res *types.RetrieveVStorageInfrastructureObjectPolicyResponse `xml:"RetrieveVStorageInfrastructureObjectPolicyResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveVStorageInfrastructureObjectPolicyBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveVStorageInfrastructureObjectPolicy(ctx context.Context, r soap.RoundTripper, req *types.RetrieveVStorageInfrastructureObjectPolicy) (*types.RetrieveVStorageInfrastructureObjectPolicyResponse, error) { + var reqBody, resBody RetrieveVStorageInfrastructureObjectPolicyBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveVStorageObjectBody struct { + Req *types.RetrieveVStorageObject `xml:"urn:vim25 RetrieveVStorageObject,omitempty"` + Res *types.RetrieveVStorageObjectResponse `xml:"RetrieveVStorageObjectResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveVStorageObjectBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveVStorageObject(ctx context.Context, r soap.RoundTripper, req *types.RetrieveVStorageObject) (*types.RetrieveVStorageObjectResponse, error) { + var reqBody, resBody RetrieveVStorageObjectBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveVStorageObjectAssociationsBody struct { + Req *types.RetrieveVStorageObjectAssociations `xml:"urn:vim25 RetrieveVStorageObjectAssociations,omitempty"` + Res *types.RetrieveVStorageObjectAssociationsResponse `xml:"RetrieveVStorageObjectAssociationsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveVStorageObjectAssociationsBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveVStorageObjectAssociations(ctx context.Context, r soap.RoundTripper, req *types.RetrieveVStorageObjectAssociations) (*types.RetrieveVStorageObjectAssociationsResponse, error) { + var reqBody, resBody RetrieveVStorageObjectAssociationsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RetrieveVStorageObjectStateBody struct { + Req *types.RetrieveVStorageObjectState `xml:"urn:vim25 RetrieveVStorageObjectState,omitempty"` + Res *types.RetrieveVStorageObjectStateResponse `xml:"RetrieveVStorageObjectStateResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RetrieveVStorageObjectStateBody) Fault() *soap.Fault { return b.Fault_ } + +func RetrieveVStorageObjectState(ctx context.Context, r soap.RoundTripper, req *types.RetrieveVStorageObjectState) (*types.RetrieveVStorageObjectStateResponse, error) { + var reqBody, resBody RetrieveVStorageObjectStateBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RevertToCurrentSnapshot_TaskBody struct { + Req *types.RevertToCurrentSnapshot_Task `xml:"urn:vim25 RevertToCurrentSnapshot_Task,omitempty"` + Res *types.RevertToCurrentSnapshot_TaskResponse `xml:"RevertToCurrentSnapshot_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RevertToCurrentSnapshot_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func RevertToCurrentSnapshot_Task(ctx context.Context, r soap.RoundTripper, req *types.RevertToCurrentSnapshot_Task) (*types.RevertToCurrentSnapshot_TaskResponse, error) { + var reqBody, resBody RevertToCurrentSnapshot_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RevertToSnapshot_TaskBody struct { + Req *types.RevertToSnapshot_Task `xml:"urn:vim25 RevertToSnapshot_Task,omitempty"` + Res *types.RevertToSnapshot_TaskResponse `xml:"RevertToSnapshot_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RevertToSnapshot_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func RevertToSnapshot_Task(ctx context.Context, r soap.RoundTripper, req *types.RevertToSnapshot_Task) (*types.RevertToSnapshot_TaskResponse, error) { + var reqBody, resBody RevertToSnapshot_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RevertVStorageObject_TaskBody struct { + Req *types.RevertVStorageObject_Task `xml:"urn:vim25 RevertVStorageObject_Task,omitempty"` + Res *types.RevertVStorageObject_TaskResponse `xml:"RevertVStorageObject_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RevertVStorageObject_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func RevertVStorageObject_Task(ctx context.Context, r soap.RoundTripper, req *types.RevertVStorageObject_Task) (*types.RevertVStorageObject_TaskResponse, error) { + var reqBody, resBody RevertVStorageObject_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RewindCollectorBody struct { + Req *types.RewindCollector `xml:"urn:vim25 RewindCollector,omitempty"` + Res *types.RewindCollectorResponse `xml:"RewindCollectorResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RewindCollectorBody) Fault() *soap.Fault { return b.Fault_ } + +func RewindCollector(ctx context.Context, r soap.RoundTripper, req *types.RewindCollector) (*types.RewindCollectorResponse, error) { + var reqBody, resBody RewindCollectorBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RunScheduledTaskBody struct { + Req *types.RunScheduledTask `xml:"urn:vim25 RunScheduledTask,omitempty"` + Res *types.RunScheduledTaskResponse `xml:"RunScheduledTaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RunScheduledTaskBody) Fault() *soap.Fault { return b.Fault_ } + +func RunScheduledTask(ctx context.Context, r soap.RoundTripper, req *types.RunScheduledTask) (*types.RunScheduledTaskResponse, error) { + var reqBody, resBody RunScheduledTaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type RunVsanPhysicalDiskDiagnosticsBody struct { + Req *types.RunVsanPhysicalDiskDiagnostics `xml:"urn:vim25 RunVsanPhysicalDiskDiagnostics,omitempty"` + Res *types.RunVsanPhysicalDiskDiagnosticsResponse `xml:"RunVsanPhysicalDiskDiagnosticsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *RunVsanPhysicalDiskDiagnosticsBody) Fault() *soap.Fault { return b.Fault_ } + +func RunVsanPhysicalDiskDiagnostics(ctx context.Context, r soap.RoundTripper, req *types.RunVsanPhysicalDiskDiagnostics) (*types.RunVsanPhysicalDiskDiagnosticsResponse, error) { + var reqBody, resBody RunVsanPhysicalDiskDiagnosticsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ScanHostPatchV2_TaskBody struct { + Req *types.ScanHostPatchV2_Task `xml:"urn:vim25 ScanHostPatchV2_Task,omitempty"` + Res *types.ScanHostPatchV2_TaskResponse `xml:"ScanHostPatchV2_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ScanHostPatchV2_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ScanHostPatchV2_Task(ctx context.Context, r soap.RoundTripper, req *types.ScanHostPatchV2_Task) (*types.ScanHostPatchV2_TaskResponse, error) { + var reqBody, resBody ScanHostPatchV2_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ScanHostPatch_TaskBody struct { + Req *types.ScanHostPatch_Task `xml:"urn:vim25 ScanHostPatch_Task,omitempty"` + Res *types.ScanHostPatch_TaskResponse `xml:"ScanHostPatch_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ScanHostPatch_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ScanHostPatch_Task(ctx context.Context, r soap.RoundTripper, req *types.ScanHostPatch_Task) (*types.ScanHostPatch_TaskResponse, error) { + var reqBody, resBody ScanHostPatch_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ScheduleReconcileDatastoreInventoryBody struct { + Req *types.ScheduleReconcileDatastoreInventory `xml:"urn:vim25 ScheduleReconcileDatastoreInventory,omitempty"` + Res *types.ScheduleReconcileDatastoreInventoryResponse `xml:"ScheduleReconcileDatastoreInventoryResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ScheduleReconcileDatastoreInventoryBody) Fault() *soap.Fault { return b.Fault_ } + +func ScheduleReconcileDatastoreInventory(ctx context.Context, r soap.RoundTripper, req *types.ScheduleReconcileDatastoreInventory) (*types.ScheduleReconcileDatastoreInventoryResponse, error) { + var reqBody, resBody ScheduleReconcileDatastoreInventoryBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SearchDatastoreSubFolders_TaskBody struct { + Req *types.SearchDatastoreSubFolders_Task `xml:"urn:vim25 SearchDatastoreSubFolders_Task,omitempty"` + Res *types.SearchDatastoreSubFolders_TaskResponse `xml:"SearchDatastoreSubFolders_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SearchDatastoreSubFolders_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func SearchDatastoreSubFolders_Task(ctx context.Context, r soap.RoundTripper, req *types.SearchDatastoreSubFolders_Task) (*types.SearchDatastoreSubFolders_TaskResponse, error) { + var reqBody, resBody SearchDatastoreSubFolders_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SearchDatastore_TaskBody struct { + Req *types.SearchDatastore_Task `xml:"urn:vim25 SearchDatastore_Task,omitempty"` + Res *types.SearchDatastore_TaskResponse `xml:"SearchDatastore_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SearchDatastore_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func SearchDatastore_Task(ctx context.Context, r soap.RoundTripper, req *types.SearchDatastore_Task) (*types.SearchDatastore_TaskResponse, error) { + var reqBody, resBody SearchDatastore_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SelectActivePartitionBody struct { + Req *types.SelectActivePartition `xml:"urn:vim25 SelectActivePartition,omitempty"` + Res *types.SelectActivePartitionResponse `xml:"SelectActivePartitionResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SelectActivePartitionBody) Fault() *soap.Fault { return b.Fault_ } + +func SelectActivePartition(ctx context.Context, r soap.RoundTripper, req *types.SelectActivePartition) (*types.SelectActivePartitionResponse, error) { + var reqBody, resBody SelectActivePartitionBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SelectVnicBody struct { + Req *types.SelectVnic `xml:"urn:vim25 SelectVnic,omitempty"` + Res *types.SelectVnicResponse `xml:"SelectVnicResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SelectVnicBody) Fault() *soap.Fault { return b.Fault_ } + +func SelectVnic(ctx context.Context, r soap.RoundTripper, req *types.SelectVnic) (*types.SelectVnicResponse, error) { + var reqBody, resBody SelectVnicBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SelectVnicForNicTypeBody struct { + Req *types.SelectVnicForNicType `xml:"urn:vim25 SelectVnicForNicType,omitempty"` + Res *types.SelectVnicForNicTypeResponse `xml:"SelectVnicForNicTypeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SelectVnicForNicTypeBody) Fault() *soap.Fault { return b.Fault_ } + +func SelectVnicForNicType(ctx context.Context, r soap.RoundTripper, req *types.SelectVnicForNicType) (*types.SelectVnicForNicTypeResponse, error) { + var reqBody, resBody SelectVnicForNicTypeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SendNMIBody struct { + Req *types.SendNMI `xml:"urn:vim25 SendNMI,omitempty"` + Res *types.SendNMIResponse `xml:"SendNMIResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SendNMIBody) Fault() *soap.Fault { return b.Fault_ } + +func SendNMI(ctx context.Context, r soap.RoundTripper, req *types.SendNMI) (*types.SendNMIResponse, error) { + var reqBody, resBody SendNMIBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SendTestNotificationBody struct { + Req *types.SendTestNotification `xml:"urn:vim25 SendTestNotification,omitempty"` + Res *types.SendTestNotificationResponse `xml:"SendTestNotificationResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SendTestNotificationBody) Fault() *soap.Fault { return b.Fault_ } + +func SendTestNotification(ctx context.Context, r soap.RoundTripper, req *types.SendTestNotification) (*types.SendTestNotificationResponse, error) { + var reqBody, resBody SendTestNotificationBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SessionIsActiveBody struct { + Req *types.SessionIsActive `xml:"urn:vim25 SessionIsActive,omitempty"` + Res *types.SessionIsActiveResponse `xml:"SessionIsActiveResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SessionIsActiveBody) Fault() *soap.Fault { return b.Fault_ } + +func SessionIsActive(ctx context.Context, r soap.RoundTripper, req *types.SessionIsActive) (*types.SessionIsActiveResponse, error) { + var reqBody, resBody SessionIsActiveBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SetCollectorPageSizeBody struct { + Req *types.SetCollectorPageSize `xml:"urn:vim25 SetCollectorPageSize,omitempty"` + Res *types.SetCollectorPageSizeResponse `xml:"SetCollectorPageSizeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SetCollectorPageSizeBody) Fault() *soap.Fault { return b.Fault_ } + +func SetCollectorPageSize(ctx context.Context, r soap.RoundTripper, req *types.SetCollectorPageSize) (*types.SetCollectorPageSizeResponse, error) { + var reqBody, resBody SetCollectorPageSizeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SetCryptoModeBody struct { + Req *types.SetCryptoMode `xml:"urn:vim25 SetCryptoMode,omitempty"` + Res *types.SetCryptoModeResponse `xml:"SetCryptoModeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SetCryptoModeBody) Fault() *soap.Fault { return b.Fault_ } + +func SetCryptoMode(ctx context.Context, r soap.RoundTripper, req *types.SetCryptoMode) (*types.SetCryptoModeResponse, error) { + var reqBody, resBody SetCryptoModeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SetDefaultKmsClusterBody struct { + Req *types.SetDefaultKmsCluster `xml:"urn:vim25 SetDefaultKmsCluster,omitempty"` + Res *types.SetDefaultKmsClusterResponse `xml:"SetDefaultKmsClusterResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SetDefaultKmsClusterBody) Fault() *soap.Fault { return b.Fault_ } + +func SetDefaultKmsCluster(ctx context.Context, r soap.RoundTripper, req *types.SetDefaultKmsCluster) (*types.SetDefaultKmsClusterResponse, error) { + var reqBody, resBody SetDefaultKmsClusterBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SetDisplayTopologyBody struct { + Req *types.SetDisplayTopology `xml:"urn:vim25 SetDisplayTopology,omitempty"` + Res *types.SetDisplayTopologyResponse `xml:"SetDisplayTopologyResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SetDisplayTopologyBody) Fault() *soap.Fault { return b.Fault_ } + +func SetDisplayTopology(ctx context.Context, r soap.RoundTripper, req *types.SetDisplayTopology) (*types.SetDisplayTopologyResponse, error) { + var reqBody, resBody SetDisplayTopologyBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SetEntityPermissionsBody struct { + Req *types.SetEntityPermissions `xml:"urn:vim25 SetEntityPermissions,omitempty"` + Res *types.SetEntityPermissionsResponse `xml:"SetEntityPermissionsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SetEntityPermissionsBody) Fault() *soap.Fault { return b.Fault_ } + +func SetEntityPermissions(ctx context.Context, r soap.RoundTripper, req *types.SetEntityPermissions) (*types.SetEntityPermissionsResponse, error) { + var reqBody, resBody SetEntityPermissionsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SetExtensionCertificateBody struct { + Req *types.SetExtensionCertificate `xml:"urn:vim25 SetExtensionCertificate,omitempty"` + Res *types.SetExtensionCertificateResponse `xml:"SetExtensionCertificateResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SetExtensionCertificateBody) Fault() *soap.Fault { return b.Fault_ } + +func SetExtensionCertificate(ctx context.Context, r soap.RoundTripper, req *types.SetExtensionCertificate) (*types.SetExtensionCertificateResponse, error) { + var reqBody, resBody SetExtensionCertificateBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SetFieldBody struct { + Req *types.SetField `xml:"urn:vim25 SetField,omitempty"` + Res *types.SetFieldResponse `xml:"SetFieldResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SetFieldBody) Fault() *soap.Fault { return b.Fault_ } + +func SetField(ctx context.Context, r soap.RoundTripper, req *types.SetField) (*types.SetFieldResponse, error) { + var reqBody, resBody SetFieldBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SetLicenseEditionBody struct { + Req *types.SetLicenseEdition `xml:"urn:vim25 SetLicenseEdition,omitempty"` + Res *types.SetLicenseEditionResponse `xml:"SetLicenseEditionResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SetLicenseEditionBody) Fault() *soap.Fault { return b.Fault_ } + +func SetLicenseEdition(ctx context.Context, r soap.RoundTripper, req *types.SetLicenseEdition) (*types.SetLicenseEditionResponse, error) { + var reqBody, resBody SetLicenseEditionBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SetLocaleBody struct { + Req *types.SetLocale `xml:"urn:vim25 SetLocale,omitempty"` + Res *types.SetLocaleResponse `xml:"SetLocaleResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SetLocaleBody) Fault() *soap.Fault { return b.Fault_ } + +func SetLocale(ctx context.Context, r soap.RoundTripper, req *types.SetLocale) (*types.SetLocaleResponse, error) { + var reqBody, resBody SetLocaleBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SetMultipathLunPolicyBody struct { + Req *types.SetMultipathLunPolicy `xml:"urn:vim25 SetMultipathLunPolicy,omitempty"` + Res *types.SetMultipathLunPolicyResponse `xml:"SetMultipathLunPolicyResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SetMultipathLunPolicyBody) Fault() *soap.Fault { return b.Fault_ } + +func SetMultipathLunPolicy(ctx context.Context, r soap.RoundTripper, req *types.SetMultipathLunPolicy) (*types.SetMultipathLunPolicyResponse, error) { + var reqBody, resBody SetMultipathLunPolicyBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SetNFSUserBody struct { + Req *types.SetNFSUser `xml:"urn:vim25 SetNFSUser,omitempty"` + Res *types.SetNFSUserResponse `xml:"SetNFSUserResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SetNFSUserBody) Fault() *soap.Fault { return b.Fault_ } + +func SetNFSUser(ctx context.Context, r soap.RoundTripper, req *types.SetNFSUser) (*types.SetNFSUserResponse, error) { + var reqBody, resBody SetNFSUserBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SetPublicKeyBody struct { + Req *types.SetPublicKey `xml:"urn:vim25 SetPublicKey,omitempty"` + Res *types.SetPublicKeyResponse `xml:"SetPublicKeyResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SetPublicKeyBody) Fault() *soap.Fault { return b.Fault_ } + +func SetPublicKey(ctx context.Context, r soap.RoundTripper, req *types.SetPublicKey) (*types.SetPublicKeyResponse, error) { + var reqBody, resBody SetPublicKeyBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SetRegistryValueInGuestBody struct { + Req *types.SetRegistryValueInGuest `xml:"urn:vim25 SetRegistryValueInGuest,omitempty"` + Res *types.SetRegistryValueInGuestResponse `xml:"SetRegistryValueInGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SetRegistryValueInGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func SetRegistryValueInGuest(ctx context.Context, r soap.RoundTripper, req *types.SetRegistryValueInGuest) (*types.SetRegistryValueInGuestResponse, error) { + var reqBody, resBody SetRegistryValueInGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SetScreenResolutionBody struct { + Req *types.SetScreenResolution `xml:"urn:vim25 SetScreenResolution,omitempty"` + Res *types.SetScreenResolutionResponse `xml:"SetScreenResolutionResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SetScreenResolutionBody) Fault() *soap.Fault { return b.Fault_ } + +func SetScreenResolution(ctx context.Context, r soap.RoundTripper, req *types.SetScreenResolution) (*types.SetScreenResolutionResponse, error) { + var reqBody, resBody SetScreenResolutionBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SetTaskDescriptionBody struct { + Req *types.SetTaskDescription `xml:"urn:vim25 SetTaskDescription,omitempty"` + Res *types.SetTaskDescriptionResponse `xml:"SetTaskDescriptionResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SetTaskDescriptionBody) Fault() *soap.Fault { return b.Fault_ } + +func SetTaskDescription(ctx context.Context, r soap.RoundTripper, req *types.SetTaskDescription) (*types.SetTaskDescriptionResponse, error) { + var reqBody, resBody SetTaskDescriptionBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SetTaskStateBody struct { + Req *types.SetTaskState `xml:"urn:vim25 SetTaskState,omitempty"` + Res *types.SetTaskStateResponse `xml:"SetTaskStateResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SetTaskStateBody) Fault() *soap.Fault { return b.Fault_ } + +func SetTaskState(ctx context.Context, r soap.RoundTripper, req *types.SetTaskState) (*types.SetTaskStateResponse, error) { + var reqBody, resBody SetTaskStateBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SetVStorageObjectControlFlagsBody struct { + Req *types.SetVStorageObjectControlFlags `xml:"urn:vim25 SetVStorageObjectControlFlags,omitempty"` + Res *types.SetVStorageObjectControlFlagsResponse `xml:"SetVStorageObjectControlFlagsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SetVStorageObjectControlFlagsBody) Fault() *soap.Fault { return b.Fault_ } + +func SetVStorageObjectControlFlags(ctx context.Context, r soap.RoundTripper, req *types.SetVStorageObjectControlFlags) (*types.SetVStorageObjectControlFlagsResponse, error) { + var reqBody, resBody SetVStorageObjectControlFlagsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SetVirtualDiskUuidBody struct { + Req *types.SetVirtualDiskUuid `xml:"urn:vim25 SetVirtualDiskUuid,omitempty"` + Res *types.SetVirtualDiskUuidResponse `xml:"SetVirtualDiskUuidResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SetVirtualDiskUuidBody) Fault() *soap.Fault { return b.Fault_ } + +func SetVirtualDiskUuid(ctx context.Context, r soap.RoundTripper, req *types.SetVirtualDiskUuid) (*types.SetVirtualDiskUuidResponse, error) { + var reqBody, resBody SetVirtualDiskUuidBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ShrinkVirtualDisk_TaskBody struct { + Req *types.ShrinkVirtualDisk_Task `xml:"urn:vim25 ShrinkVirtualDisk_Task,omitempty"` + Res *types.ShrinkVirtualDisk_TaskResponse `xml:"ShrinkVirtualDisk_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ShrinkVirtualDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ShrinkVirtualDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.ShrinkVirtualDisk_Task) (*types.ShrinkVirtualDisk_TaskResponse, error) { + var reqBody, resBody ShrinkVirtualDisk_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ShutdownGuestBody struct { + Req *types.ShutdownGuest `xml:"urn:vim25 ShutdownGuest,omitempty"` + Res *types.ShutdownGuestResponse `xml:"ShutdownGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ShutdownGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func ShutdownGuest(ctx context.Context, r soap.RoundTripper, req *types.ShutdownGuest) (*types.ShutdownGuestResponse, error) { + var reqBody, resBody ShutdownGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ShutdownHost_TaskBody struct { + Req *types.ShutdownHost_Task `xml:"urn:vim25 ShutdownHost_Task,omitempty"` + Res *types.ShutdownHost_TaskResponse `xml:"ShutdownHost_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ShutdownHost_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ShutdownHost_Task(ctx context.Context, r soap.RoundTripper, req *types.ShutdownHost_Task) (*types.ShutdownHost_TaskResponse, error) { + var reqBody, resBody ShutdownHost_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type StageHostPatch_TaskBody struct { + Req *types.StageHostPatch_Task `xml:"urn:vim25 StageHostPatch_Task,omitempty"` + Res *types.StageHostPatch_TaskResponse `xml:"StageHostPatch_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *StageHostPatch_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func StageHostPatch_Task(ctx context.Context, r soap.RoundTripper, req *types.StageHostPatch_Task) (*types.StageHostPatch_TaskResponse, error) { + var reqBody, resBody StageHostPatch_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type StampAllRulesWithUuid_TaskBody struct { + Req *types.StampAllRulesWithUuid_Task `xml:"urn:vim25 StampAllRulesWithUuid_Task,omitempty"` + Res *types.StampAllRulesWithUuid_TaskResponse `xml:"StampAllRulesWithUuid_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *StampAllRulesWithUuid_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func StampAllRulesWithUuid_Task(ctx context.Context, r soap.RoundTripper, req *types.StampAllRulesWithUuid_Task) (*types.StampAllRulesWithUuid_TaskResponse, error) { + var reqBody, resBody StampAllRulesWithUuid_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type StandbyGuestBody struct { + Req *types.StandbyGuest `xml:"urn:vim25 StandbyGuest,omitempty"` + Res *types.StandbyGuestResponse `xml:"StandbyGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *StandbyGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func StandbyGuest(ctx context.Context, r soap.RoundTripper, req *types.StandbyGuest) (*types.StandbyGuestResponse, error) { + var reqBody, resBody StandbyGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type StartGuestNetwork_TaskBody struct { + Req *types.StartGuestNetwork_Task `xml:"urn:vim25 StartGuestNetwork_Task,omitempty"` + Res *types.StartGuestNetwork_TaskResponse `xml:"StartGuestNetwork_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *StartGuestNetwork_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func StartGuestNetwork_Task(ctx context.Context, r soap.RoundTripper, req *types.StartGuestNetwork_Task) (*types.StartGuestNetwork_TaskResponse, error) { + var reqBody, resBody StartGuestNetwork_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type StartProgramInGuestBody struct { + Req *types.StartProgramInGuest `xml:"urn:vim25 StartProgramInGuest,omitempty"` + Res *types.StartProgramInGuestResponse `xml:"StartProgramInGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *StartProgramInGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func StartProgramInGuest(ctx context.Context, r soap.RoundTripper, req *types.StartProgramInGuest) (*types.StartProgramInGuestResponse, error) { + var reqBody, resBody StartProgramInGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type StartRecording_TaskBody struct { + Req *types.StartRecording_Task `xml:"urn:vim25 StartRecording_Task,omitempty"` + Res *types.StartRecording_TaskResponse `xml:"StartRecording_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *StartRecording_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func StartRecording_Task(ctx context.Context, r soap.RoundTripper, req *types.StartRecording_Task) (*types.StartRecording_TaskResponse, error) { + var reqBody, resBody StartRecording_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type StartReplaying_TaskBody struct { + Req *types.StartReplaying_Task `xml:"urn:vim25 StartReplaying_Task,omitempty"` + Res *types.StartReplaying_TaskResponse `xml:"StartReplaying_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *StartReplaying_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func StartReplaying_Task(ctx context.Context, r soap.RoundTripper, req *types.StartReplaying_Task) (*types.StartReplaying_TaskResponse, error) { + var reqBody, resBody StartReplaying_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type StartServiceBody struct { + Req *types.StartService `xml:"urn:vim25 StartService,omitempty"` + Res *types.StartServiceResponse `xml:"StartServiceResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *StartServiceBody) Fault() *soap.Fault { return b.Fault_ } + +func StartService(ctx context.Context, r soap.RoundTripper, req *types.StartService) (*types.StartServiceResponse, error) { + var reqBody, resBody StartServiceBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type StopRecording_TaskBody struct { + Req *types.StopRecording_Task `xml:"urn:vim25 StopRecording_Task,omitempty"` + Res *types.StopRecording_TaskResponse `xml:"StopRecording_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *StopRecording_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func StopRecording_Task(ctx context.Context, r soap.RoundTripper, req *types.StopRecording_Task) (*types.StopRecording_TaskResponse, error) { + var reqBody, resBody StopRecording_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type StopReplaying_TaskBody struct { + Req *types.StopReplaying_Task `xml:"urn:vim25 StopReplaying_Task,omitempty"` + Res *types.StopReplaying_TaskResponse `xml:"StopReplaying_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *StopReplaying_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func StopReplaying_Task(ctx context.Context, r soap.RoundTripper, req *types.StopReplaying_Task) (*types.StopReplaying_TaskResponse, error) { + var reqBody, resBody StopReplaying_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type StopServiceBody struct { + Req *types.StopService `xml:"urn:vim25 StopService,omitempty"` + Res *types.StopServiceResponse `xml:"StopServiceResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *StopServiceBody) Fault() *soap.Fault { return b.Fault_ } + +func StopService(ctx context.Context, r soap.RoundTripper, req *types.StopService) (*types.StopServiceResponse, error) { + var reqBody, resBody StopServiceBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SuspendVApp_TaskBody struct { + Req *types.SuspendVApp_Task `xml:"urn:vim25 SuspendVApp_Task,omitempty"` + Res *types.SuspendVApp_TaskResponse `xml:"SuspendVApp_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SuspendVApp_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func SuspendVApp_Task(ctx context.Context, r soap.RoundTripper, req *types.SuspendVApp_Task) (*types.SuspendVApp_TaskResponse, error) { + var reqBody, resBody SuspendVApp_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SuspendVM_TaskBody struct { + Req *types.SuspendVM_Task `xml:"urn:vim25 SuspendVM_Task,omitempty"` + Res *types.SuspendVM_TaskResponse `xml:"SuspendVM_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SuspendVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func SuspendVM_Task(ctx context.Context, r soap.RoundTripper, req *types.SuspendVM_Task) (*types.SuspendVM_TaskResponse, error) { + var reqBody, resBody SuspendVM_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type TerminateFaultTolerantVM_TaskBody struct { + Req *types.TerminateFaultTolerantVM_Task `xml:"urn:vim25 TerminateFaultTolerantVM_Task,omitempty"` + Res *types.TerminateFaultTolerantVM_TaskResponse `xml:"TerminateFaultTolerantVM_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *TerminateFaultTolerantVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func TerminateFaultTolerantVM_Task(ctx context.Context, r soap.RoundTripper, req *types.TerminateFaultTolerantVM_Task) (*types.TerminateFaultTolerantVM_TaskResponse, error) { + var reqBody, resBody TerminateFaultTolerantVM_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type TerminateProcessInGuestBody struct { + Req *types.TerminateProcessInGuest `xml:"urn:vim25 TerminateProcessInGuest,omitempty"` + Res *types.TerminateProcessInGuestResponse `xml:"TerminateProcessInGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *TerminateProcessInGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func TerminateProcessInGuest(ctx context.Context, r soap.RoundTripper, req *types.TerminateProcessInGuest) (*types.TerminateProcessInGuestResponse, error) { + var reqBody, resBody TerminateProcessInGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type TerminateSessionBody struct { + Req *types.TerminateSession `xml:"urn:vim25 TerminateSession,omitempty"` + Res *types.TerminateSessionResponse `xml:"TerminateSessionResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *TerminateSessionBody) Fault() *soap.Fault { return b.Fault_ } + +func TerminateSession(ctx context.Context, r soap.RoundTripper, req *types.TerminateSession) (*types.TerminateSessionResponse, error) { + var reqBody, resBody TerminateSessionBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type TerminateVMBody struct { + Req *types.TerminateVM `xml:"urn:vim25 TerminateVM,omitempty"` + Res *types.TerminateVMResponse `xml:"TerminateVMResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *TerminateVMBody) Fault() *soap.Fault { return b.Fault_ } + +func TerminateVM(ctx context.Context, r soap.RoundTripper, req *types.TerminateVM) (*types.TerminateVMResponse, error) { + var reqBody, resBody TerminateVMBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type TurnDiskLocatorLedOff_TaskBody struct { + Req *types.TurnDiskLocatorLedOff_Task `xml:"urn:vim25 TurnDiskLocatorLedOff_Task,omitempty"` + Res *types.TurnDiskLocatorLedOff_TaskResponse `xml:"TurnDiskLocatorLedOff_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *TurnDiskLocatorLedOff_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func TurnDiskLocatorLedOff_Task(ctx context.Context, r soap.RoundTripper, req *types.TurnDiskLocatorLedOff_Task) (*types.TurnDiskLocatorLedOff_TaskResponse, error) { + var reqBody, resBody TurnDiskLocatorLedOff_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type TurnDiskLocatorLedOn_TaskBody struct { + Req *types.TurnDiskLocatorLedOn_Task `xml:"urn:vim25 TurnDiskLocatorLedOn_Task,omitempty"` + Res *types.TurnDiskLocatorLedOn_TaskResponse `xml:"TurnDiskLocatorLedOn_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *TurnDiskLocatorLedOn_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func TurnDiskLocatorLedOn_Task(ctx context.Context, r soap.RoundTripper, req *types.TurnDiskLocatorLedOn_Task) (*types.TurnDiskLocatorLedOn_TaskResponse, error) { + var reqBody, resBody TurnDiskLocatorLedOn_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type TurnOffFaultToleranceForVM_TaskBody struct { + Req *types.TurnOffFaultToleranceForVM_Task `xml:"urn:vim25 TurnOffFaultToleranceForVM_Task,omitempty"` + Res *types.TurnOffFaultToleranceForVM_TaskResponse `xml:"TurnOffFaultToleranceForVM_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *TurnOffFaultToleranceForVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func TurnOffFaultToleranceForVM_Task(ctx context.Context, r soap.RoundTripper, req *types.TurnOffFaultToleranceForVM_Task) (*types.TurnOffFaultToleranceForVM_TaskResponse, error) { + var reqBody, resBody TurnOffFaultToleranceForVM_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UnassignUserFromGroupBody struct { + Req *types.UnassignUserFromGroup `xml:"urn:vim25 UnassignUserFromGroup,omitempty"` + Res *types.UnassignUserFromGroupResponse `xml:"UnassignUserFromGroupResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UnassignUserFromGroupBody) Fault() *soap.Fault { return b.Fault_ } + +func UnassignUserFromGroup(ctx context.Context, r soap.RoundTripper, req *types.UnassignUserFromGroup) (*types.UnassignUserFromGroupResponse, error) { + var reqBody, resBody UnassignUserFromGroupBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UnbindVnicBody struct { + Req *types.UnbindVnic `xml:"urn:vim25 UnbindVnic,omitempty"` + Res *types.UnbindVnicResponse `xml:"UnbindVnicResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UnbindVnicBody) Fault() *soap.Fault { return b.Fault_ } + +func UnbindVnic(ctx context.Context, r soap.RoundTripper, req *types.UnbindVnic) (*types.UnbindVnicResponse, error) { + var reqBody, resBody UnbindVnicBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UninstallHostPatch_TaskBody struct { + Req *types.UninstallHostPatch_Task `xml:"urn:vim25 UninstallHostPatch_Task,omitempty"` + Res *types.UninstallHostPatch_TaskResponse `xml:"UninstallHostPatch_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UninstallHostPatch_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func UninstallHostPatch_Task(ctx context.Context, r soap.RoundTripper, req *types.UninstallHostPatch_Task) (*types.UninstallHostPatch_TaskResponse, error) { + var reqBody, resBody UninstallHostPatch_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UninstallIoFilter_TaskBody struct { + Req *types.UninstallIoFilter_Task `xml:"urn:vim25 UninstallIoFilter_Task,omitempty"` + Res *types.UninstallIoFilter_TaskResponse `xml:"UninstallIoFilter_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UninstallIoFilter_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func UninstallIoFilter_Task(ctx context.Context, r soap.RoundTripper, req *types.UninstallIoFilter_Task) (*types.UninstallIoFilter_TaskResponse, error) { + var reqBody, resBody UninstallIoFilter_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UninstallServiceBody struct { + Req *types.UninstallService `xml:"urn:vim25 UninstallService,omitempty"` + Res *types.UninstallServiceResponse `xml:"UninstallServiceResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UninstallServiceBody) Fault() *soap.Fault { return b.Fault_ } + +func UninstallService(ctx context.Context, r soap.RoundTripper, req *types.UninstallService) (*types.UninstallServiceResponse, error) { + var reqBody, resBody UninstallServiceBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UnmapVmfsVolumeEx_TaskBody struct { + Req *types.UnmapVmfsVolumeEx_Task `xml:"urn:vim25 UnmapVmfsVolumeEx_Task,omitempty"` + Res *types.UnmapVmfsVolumeEx_TaskResponse `xml:"UnmapVmfsVolumeEx_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UnmapVmfsVolumeEx_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func UnmapVmfsVolumeEx_Task(ctx context.Context, r soap.RoundTripper, req *types.UnmapVmfsVolumeEx_Task) (*types.UnmapVmfsVolumeEx_TaskResponse, error) { + var reqBody, resBody UnmapVmfsVolumeEx_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UnmarkServiceProviderEntitiesBody struct { + Req *types.UnmarkServiceProviderEntities `xml:"urn:vim25 UnmarkServiceProviderEntities,omitempty"` + Res *types.UnmarkServiceProviderEntitiesResponse `xml:"UnmarkServiceProviderEntitiesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UnmarkServiceProviderEntitiesBody) Fault() *soap.Fault { return b.Fault_ } + +func UnmarkServiceProviderEntities(ctx context.Context, r soap.RoundTripper, req *types.UnmarkServiceProviderEntities) (*types.UnmarkServiceProviderEntitiesResponse, error) { + var reqBody, resBody UnmarkServiceProviderEntitiesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UnmountDiskMapping_TaskBody struct { + Req *types.UnmountDiskMapping_Task `xml:"urn:vim25 UnmountDiskMapping_Task,omitempty"` + Res *types.UnmountDiskMapping_TaskResponse `xml:"UnmountDiskMapping_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UnmountDiskMapping_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func UnmountDiskMapping_Task(ctx context.Context, r soap.RoundTripper, req *types.UnmountDiskMapping_Task) (*types.UnmountDiskMapping_TaskResponse, error) { + var reqBody, resBody UnmountDiskMapping_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UnmountForceMountedVmfsVolumeBody struct { + Req *types.UnmountForceMountedVmfsVolume `xml:"urn:vim25 UnmountForceMountedVmfsVolume,omitempty"` + Res *types.UnmountForceMountedVmfsVolumeResponse `xml:"UnmountForceMountedVmfsVolumeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UnmountForceMountedVmfsVolumeBody) Fault() *soap.Fault { return b.Fault_ } + +func UnmountForceMountedVmfsVolume(ctx context.Context, r soap.RoundTripper, req *types.UnmountForceMountedVmfsVolume) (*types.UnmountForceMountedVmfsVolumeResponse, error) { + var reqBody, resBody UnmountForceMountedVmfsVolumeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UnmountToolsInstallerBody struct { + Req *types.UnmountToolsInstaller `xml:"urn:vim25 UnmountToolsInstaller,omitempty"` + Res *types.UnmountToolsInstallerResponse `xml:"UnmountToolsInstallerResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UnmountToolsInstallerBody) Fault() *soap.Fault { return b.Fault_ } + +func UnmountToolsInstaller(ctx context.Context, r soap.RoundTripper, req *types.UnmountToolsInstaller) (*types.UnmountToolsInstallerResponse, error) { + var reqBody, resBody UnmountToolsInstallerBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UnmountVffsVolumeBody struct { + Req *types.UnmountVffsVolume `xml:"urn:vim25 UnmountVffsVolume,omitempty"` + Res *types.UnmountVffsVolumeResponse `xml:"UnmountVffsVolumeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UnmountVffsVolumeBody) Fault() *soap.Fault { return b.Fault_ } + +func UnmountVffsVolume(ctx context.Context, r soap.RoundTripper, req *types.UnmountVffsVolume) (*types.UnmountVffsVolumeResponse, error) { + var reqBody, resBody UnmountVffsVolumeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UnmountVmfsVolumeBody struct { + Req *types.UnmountVmfsVolume `xml:"urn:vim25 UnmountVmfsVolume,omitempty"` + Res *types.UnmountVmfsVolumeResponse `xml:"UnmountVmfsVolumeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UnmountVmfsVolumeBody) Fault() *soap.Fault { return b.Fault_ } + +func UnmountVmfsVolume(ctx context.Context, r soap.RoundTripper, req *types.UnmountVmfsVolume) (*types.UnmountVmfsVolumeResponse, error) { + var reqBody, resBody UnmountVmfsVolumeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UnmountVmfsVolumeEx_TaskBody struct { + Req *types.UnmountVmfsVolumeEx_Task `xml:"urn:vim25 UnmountVmfsVolumeEx_Task,omitempty"` + Res *types.UnmountVmfsVolumeEx_TaskResponse `xml:"UnmountVmfsVolumeEx_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UnmountVmfsVolumeEx_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func UnmountVmfsVolumeEx_Task(ctx context.Context, r soap.RoundTripper, req *types.UnmountVmfsVolumeEx_Task) (*types.UnmountVmfsVolumeEx_TaskResponse, error) { + var reqBody, resBody UnmountVmfsVolumeEx_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UnregisterAndDestroy_TaskBody struct { + Req *types.UnregisterAndDestroy_Task `xml:"urn:vim25 UnregisterAndDestroy_Task,omitempty"` + Res *types.UnregisterAndDestroy_TaskResponse `xml:"UnregisterAndDestroy_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UnregisterAndDestroy_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func UnregisterAndDestroy_Task(ctx context.Context, r soap.RoundTripper, req *types.UnregisterAndDestroy_Task) (*types.UnregisterAndDestroy_TaskResponse, error) { + var reqBody, resBody UnregisterAndDestroy_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UnregisterExtensionBody struct { + Req *types.UnregisterExtension `xml:"urn:vim25 UnregisterExtension,omitempty"` + Res *types.UnregisterExtensionResponse `xml:"UnregisterExtensionResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UnregisterExtensionBody) Fault() *soap.Fault { return b.Fault_ } + +func UnregisterExtension(ctx context.Context, r soap.RoundTripper, req *types.UnregisterExtension) (*types.UnregisterExtensionResponse, error) { + var reqBody, resBody UnregisterExtensionBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UnregisterHealthUpdateProviderBody struct { + Req *types.UnregisterHealthUpdateProvider `xml:"urn:vim25 UnregisterHealthUpdateProvider,omitempty"` + Res *types.UnregisterHealthUpdateProviderResponse `xml:"UnregisterHealthUpdateProviderResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UnregisterHealthUpdateProviderBody) Fault() *soap.Fault { return b.Fault_ } + +func UnregisterHealthUpdateProvider(ctx context.Context, r soap.RoundTripper, req *types.UnregisterHealthUpdateProvider) (*types.UnregisterHealthUpdateProviderResponse, error) { + var reqBody, resBody UnregisterHealthUpdateProviderBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UnregisterKmsClusterBody struct { + Req *types.UnregisterKmsCluster `xml:"urn:vim25 UnregisterKmsCluster,omitempty"` + Res *types.UnregisterKmsClusterResponse `xml:"UnregisterKmsClusterResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UnregisterKmsClusterBody) Fault() *soap.Fault { return b.Fault_ } + +func UnregisterKmsCluster(ctx context.Context, r soap.RoundTripper, req *types.UnregisterKmsCluster) (*types.UnregisterKmsClusterResponse, error) { + var reqBody, resBody UnregisterKmsClusterBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UnregisterVMBody struct { + Req *types.UnregisterVM `xml:"urn:vim25 UnregisterVM,omitempty"` + Res *types.UnregisterVMResponse `xml:"UnregisterVMResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UnregisterVMBody) Fault() *soap.Fault { return b.Fault_ } + +func UnregisterVM(ctx context.Context, r soap.RoundTripper, req *types.UnregisterVM) (*types.UnregisterVMResponse, error) { + var reqBody, resBody UnregisterVMBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateAnswerFile_TaskBody struct { + Req *types.UpdateAnswerFile_Task `xml:"urn:vim25 UpdateAnswerFile_Task,omitempty"` + Res *types.UpdateAnswerFile_TaskResponse `xml:"UpdateAnswerFile_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateAnswerFile_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateAnswerFile_Task(ctx context.Context, r soap.RoundTripper, req *types.UpdateAnswerFile_Task) (*types.UpdateAnswerFile_TaskResponse, error) { + var reqBody, resBody UpdateAnswerFile_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateAssignableHardwareConfigBody struct { + Req *types.UpdateAssignableHardwareConfig `xml:"urn:vim25 UpdateAssignableHardwareConfig,omitempty"` + Res *types.UpdateAssignableHardwareConfigResponse `xml:"UpdateAssignableHardwareConfigResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateAssignableHardwareConfigBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateAssignableHardwareConfig(ctx context.Context, r soap.RoundTripper, req *types.UpdateAssignableHardwareConfig) (*types.UpdateAssignableHardwareConfigResponse, error) { + var reqBody, resBody UpdateAssignableHardwareConfigBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateAssignedLicenseBody struct { + Req *types.UpdateAssignedLicense `xml:"urn:vim25 UpdateAssignedLicense,omitempty"` + Res *types.UpdateAssignedLicenseResponse `xml:"UpdateAssignedLicenseResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateAssignedLicenseBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateAssignedLicense(ctx context.Context, r soap.RoundTripper, req *types.UpdateAssignedLicense) (*types.UpdateAssignedLicenseResponse, error) { + var reqBody, resBody UpdateAssignedLicenseBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateAuthorizationRoleBody struct { + Req *types.UpdateAuthorizationRole `xml:"urn:vim25 UpdateAuthorizationRole,omitempty"` + Res *types.UpdateAuthorizationRoleResponse `xml:"UpdateAuthorizationRoleResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateAuthorizationRoleBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateAuthorizationRole(ctx context.Context, r soap.RoundTripper, req *types.UpdateAuthorizationRole) (*types.UpdateAuthorizationRoleResponse, error) { + var reqBody, resBody UpdateAuthorizationRoleBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateBootDeviceBody struct { + Req *types.UpdateBootDevice `xml:"urn:vim25 UpdateBootDevice,omitempty"` + Res *types.UpdateBootDeviceResponse `xml:"UpdateBootDeviceResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateBootDeviceBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateBootDevice(ctx context.Context, r soap.RoundTripper, req *types.UpdateBootDevice) (*types.UpdateBootDeviceResponse, error) { + var reqBody, resBody UpdateBootDeviceBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateChildResourceConfigurationBody struct { + Req *types.UpdateChildResourceConfiguration `xml:"urn:vim25 UpdateChildResourceConfiguration,omitempty"` + Res *types.UpdateChildResourceConfigurationResponse `xml:"UpdateChildResourceConfigurationResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateChildResourceConfigurationBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateChildResourceConfiguration(ctx context.Context, r soap.RoundTripper, req *types.UpdateChildResourceConfiguration) (*types.UpdateChildResourceConfigurationResponse, error) { + var reqBody, resBody UpdateChildResourceConfigurationBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateClusterProfileBody struct { + Req *types.UpdateClusterProfile `xml:"urn:vim25 UpdateClusterProfile,omitempty"` + Res *types.UpdateClusterProfileResponse `xml:"UpdateClusterProfileResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateClusterProfileBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateClusterProfile(ctx context.Context, r soap.RoundTripper, req *types.UpdateClusterProfile) (*types.UpdateClusterProfileResponse, error) { + var reqBody, resBody UpdateClusterProfileBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateConfigBody struct { + Req *types.UpdateConfig `xml:"urn:vim25 UpdateConfig,omitempty"` + Res *types.UpdateConfigResponse `xml:"UpdateConfigResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateConfigBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateConfig(ctx context.Context, r soap.RoundTripper, req *types.UpdateConfig) (*types.UpdateConfigResponse, error) { + var reqBody, resBody UpdateConfigBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateConsoleIpRouteConfigBody struct { + Req *types.UpdateConsoleIpRouteConfig `xml:"urn:vim25 UpdateConsoleIpRouteConfig,omitempty"` + Res *types.UpdateConsoleIpRouteConfigResponse `xml:"UpdateConsoleIpRouteConfigResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateConsoleIpRouteConfigBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateConsoleIpRouteConfig(ctx context.Context, r soap.RoundTripper, req *types.UpdateConsoleIpRouteConfig) (*types.UpdateConsoleIpRouteConfigResponse, error) { + var reqBody, resBody UpdateConsoleIpRouteConfigBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateCounterLevelMappingBody struct { + Req *types.UpdateCounterLevelMapping `xml:"urn:vim25 UpdateCounterLevelMapping,omitempty"` + Res *types.UpdateCounterLevelMappingResponse `xml:"UpdateCounterLevelMappingResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateCounterLevelMappingBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateCounterLevelMapping(ctx context.Context, r soap.RoundTripper, req *types.UpdateCounterLevelMapping) (*types.UpdateCounterLevelMappingResponse, error) { + var reqBody, resBody UpdateCounterLevelMappingBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateDVSHealthCheckConfig_TaskBody struct { + Req *types.UpdateDVSHealthCheckConfig_Task `xml:"urn:vim25 UpdateDVSHealthCheckConfig_Task,omitempty"` + Res *types.UpdateDVSHealthCheckConfig_TaskResponse `xml:"UpdateDVSHealthCheckConfig_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateDVSHealthCheckConfig_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateDVSHealthCheckConfig_Task(ctx context.Context, r soap.RoundTripper, req *types.UpdateDVSHealthCheckConfig_Task) (*types.UpdateDVSHealthCheckConfig_TaskResponse, error) { + var reqBody, resBody UpdateDVSHealthCheckConfig_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateDVSLacpGroupConfig_TaskBody struct { + Req *types.UpdateDVSLacpGroupConfig_Task `xml:"urn:vim25 UpdateDVSLacpGroupConfig_Task,omitempty"` + Res *types.UpdateDVSLacpGroupConfig_TaskResponse `xml:"UpdateDVSLacpGroupConfig_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateDVSLacpGroupConfig_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateDVSLacpGroupConfig_Task(ctx context.Context, r soap.RoundTripper, req *types.UpdateDVSLacpGroupConfig_Task) (*types.UpdateDVSLacpGroupConfig_TaskResponse, error) { + var reqBody, resBody UpdateDVSLacpGroupConfig_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateDateTimeBody struct { + Req *types.UpdateDateTime `xml:"urn:vim25 UpdateDateTime,omitempty"` + Res *types.UpdateDateTimeResponse `xml:"UpdateDateTimeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateDateTimeBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateDateTime(ctx context.Context, r soap.RoundTripper, req *types.UpdateDateTime) (*types.UpdateDateTimeResponse, error) { + var reqBody, resBody UpdateDateTimeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateDateTimeConfigBody struct { + Req *types.UpdateDateTimeConfig `xml:"urn:vim25 UpdateDateTimeConfig,omitempty"` + Res *types.UpdateDateTimeConfigResponse `xml:"UpdateDateTimeConfigResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateDateTimeConfigBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateDateTimeConfig(ctx context.Context, r soap.RoundTripper, req *types.UpdateDateTimeConfig) (*types.UpdateDateTimeConfigResponse, error) { + var reqBody, resBody UpdateDateTimeConfigBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateDefaultPolicyBody struct { + Req *types.UpdateDefaultPolicy `xml:"urn:vim25 UpdateDefaultPolicy,omitempty"` + Res *types.UpdateDefaultPolicyResponse `xml:"UpdateDefaultPolicyResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateDefaultPolicyBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateDefaultPolicy(ctx context.Context, r soap.RoundTripper, req *types.UpdateDefaultPolicy) (*types.UpdateDefaultPolicyResponse, error) { + var reqBody, resBody UpdateDefaultPolicyBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateDiskPartitionsBody struct { + Req *types.UpdateDiskPartitions `xml:"urn:vim25 UpdateDiskPartitions,omitempty"` + Res *types.UpdateDiskPartitionsResponse `xml:"UpdateDiskPartitionsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateDiskPartitionsBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateDiskPartitions(ctx context.Context, r soap.RoundTripper, req *types.UpdateDiskPartitions) (*types.UpdateDiskPartitionsResponse, error) { + var reqBody, resBody UpdateDiskPartitionsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateDnsConfigBody struct { + Req *types.UpdateDnsConfig `xml:"urn:vim25 UpdateDnsConfig,omitempty"` + Res *types.UpdateDnsConfigResponse `xml:"UpdateDnsConfigResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateDnsConfigBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateDnsConfig(ctx context.Context, r soap.RoundTripper, req *types.UpdateDnsConfig) (*types.UpdateDnsConfigResponse, error) { + var reqBody, resBody UpdateDnsConfigBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateDvsCapabilityBody struct { + Req *types.UpdateDvsCapability `xml:"urn:vim25 UpdateDvsCapability,omitempty"` + Res *types.UpdateDvsCapabilityResponse `xml:"UpdateDvsCapabilityResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateDvsCapabilityBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateDvsCapability(ctx context.Context, r soap.RoundTripper, req *types.UpdateDvsCapability) (*types.UpdateDvsCapabilityResponse, error) { + var reqBody, resBody UpdateDvsCapabilityBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateExtensionBody struct { + Req *types.UpdateExtension `xml:"urn:vim25 UpdateExtension,omitempty"` + Res *types.UpdateExtensionResponse `xml:"UpdateExtensionResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateExtensionBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateExtension(ctx context.Context, r soap.RoundTripper, req *types.UpdateExtension) (*types.UpdateExtensionResponse, error) { + var reqBody, resBody UpdateExtensionBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateFlagsBody struct { + Req *types.UpdateFlags `xml:"urn:vim25 UpdateFlags,omitempty"` + Res *types.UpdateFlagsResponse `xml:"UpdateFlagsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateFlagsBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateFlags(ctx context.Context, r soap.RoundTripper, req *types.UpdateFlags) (*types.UpdateFlagsResponse, error) { + var reqBody, resBody UpdateFlagsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateGraphicsConfigBody struct { + Req *types.UpdateGraphicsConfig `xml:"urn:vim25 UpdateGraphicsConfig,omitempty"` + Res *types.UpdateGraphicsConfigResponse `xml:"UpdateGraphicsConfigResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateGraphicsConfigBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateGraphicsConfig(ctx context.Context, r soap.RoundTripper, req *types.UpdateGraphicsConfig) (*types.UpdateGraphicsConfigResponse, error) { + var reqBody, resBody UpdateGraphicsConfigBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateHostCustomizations_TaskBody struct { + Req *types.UpdateHostCustomizations_Task `xml:"urn:vim25 UpdateHostCustomizations_Task,omitempty"` + Res *types.UpdateHostCustomizations_TaskResponse `xml:"UpdateHostCustomizations_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateHostCustomizations_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateHostCustomizations_Task(ctx context.Context, r soap.RoundTripper, req *types.UpdateHostCustomizations_Task) (*types.UpdateHostCustomizations_TaskResponse, error) { + var reqBody, resBody UpdateHostCustomizations_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateHostImageAcceptanceLevelBody struct { + Req *types.UpdateHostImageAcceptanceLevel `xml:"urn:vim25 UpdateHostImageAcceptanceLevel,omitempty"` + Res *types.UpdateHostImageAcceptanceLevelResponse `xml:"UpdateHostImageAcceptanceLevelResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateHostImageAcceptanceLevelBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateHostImageAcceptanceLevel(ctx context.Context, r soap.RoundTripper, req *types.UpdateHostImageAcceptanceLevel) (*types.UpdateHostImageAcceptanceLevelResponse, error) { + var reqBody, resBody UpdateHostImageAcceptanceLevelBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateHostProfileBody struct { + Req *types.UpdateHostProfile `xml:"urn:vim25 UpdateHostProfile,omitempty"` + Res *types.UpdateHostProfileResponse `xml:"UpdateHostProfileResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateHostProfileBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateHostProfile(ctx context.Context, r soap.RoundTripper, req *types.UpdateHostProfile) (*types.UpdateHostProfileResponse, error) { + var reqBody, resBody UpdateHostProfileBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateHostSpecificationBody struct { + Req *types.UpdateHostSpecification `xml:"urn:vim25 UpdateHostSpecification,omitempty"` + Res *types.UpdateHostSpecificationResponse `xml:"UpdateHostSpecificationResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateHostSpecificationBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateHostSpecification(ctx context.Context, r soap.RoundTripper, req *types.UpdateHostSpecification) (*types.UpdateHostSpecificationResponse, error) { + var reqBody, resBody UpdateHostSpecificationBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateHostSubSpecificationBody struct { + Req *types.UpdateHostSubSpecification `xml:"urn:vim25 UpdateHostSubSpecification,omitempty"` + Res *types.UpdateHostSubSpecificationResponse `xml:"UpdateHostSubSpecificationResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateHostSubSpecificationBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateHostSubSpecification(ctx context.Context, r soap.RoundTripper, req *types.UpdateHostSubSpecification) (*types.UpdateHostSubSpecificationResponse, error) { + var reqBody, resBody UpdateHostSubSpecificationBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateHppMultipathLunPolicyBody struct { + Req *types.UpdateHppMultipathLunPolicy `xml:"urn:vim25 UpdateHppMultipathLunPolicy,omitempty"` + Res *types.UpdateHppMultipathLunPolicyResponse `xml:"UpdateHppMultipathLunPolicyResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateHppMultipathLunPolicyBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateHppMultipathLunPolicy(ctx context.Context, r soap.RoundTripper, req *types.UpdateHppMultipathLunPolicy) (*types.UpdateHppMultipathLunPolicyResponse, error) { + var reqBody, resBody UpdateHppMultipathLunPolicyBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateInternetScsiAdvancedOptionsBody struct { + Req *types.UpdateInternetScsiAdvancedOptions `xml:"urn:vim25 UpdateInternetScsiAdvancedOptions,omitempty"` + Res *types.UpdateInternetScsiAdvancedOptionsResponse `xml:"UpdateInternetScsiAdvancedOptionsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateInternetScsiAdvancedOptionsBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateInternetScsiAdvancedOptions(ctx context.Context, r soap.RoundTripper, req *types.UpdateInternetScsiAdvancedOptions) (*types.UpdateInternetScsiAdvancedOptionsResponse, error) { + var reqBody, resBody UpdateInternetScsiAdvancedOptionsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateInternetScsiAliasBody struct { + Req *types.UpdateInternetScsiAlias `xml:"urn:vim25 UpdateInternetScsiAlias,omitempty"` + Res *types.UpdateInternetScsiAliasResponse `xml:"UpdateInternetScsiAliasResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateInternetScsiAliasBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateInternetScsiAlias(ctx context.Context, r soap.RoundTripper, req *types.UpdateInternetScsiAlias) (*types.UpdateInternetScsiAliasResponse, error) { + var reqBody, resBody UpdateInternetScsiAliasBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateInternetScsiAuthenticationPropertiesBody struct { + Req *types.UpdateInternetScsiAuthenticationProperties `xml:"urn:vim25 UpdateInternetScsiAuthenticationProperties,omitempty"` + Res *types.UpdateInternetScsiAuthenticationPropertiesResponse `xml:"UpdateInternetScsiAuthenticationPropertiesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateInternetScsiAuthenticationPropertiesBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateInternetScsiAuthenticationProperties(ctx context.Context, r soap.RoundTripper, req *types.UpdateInternetScsiAuthenticationProperties) (*types.UpdateInternetScsiAuthenticationPropertiesResponse, error) { + var reqBody, resBody UpdateInternetScsiAuthenticationPropertiesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateInternetScsiDigestPropertiesBody struct { + Req *types.UpdateInternetScsiDigestProperties `xml:"urn:vim25 UpdateInternetScsiDigestProperties,omitempty"` + Res *types.UpdateInternetScsiDigestPropertiesResponse `xml:"UpdateInternetScsiDigestPropertiesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateInternetScsiDigestPropertiesBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateInternetScsiDigestProperties(ctx context.Context, r soap.RoundTripper, req *types.UpdateInternetScsiDigestProperties) (*types.UpdateInternetScsiDigestPropertiesResponse, error) { + var reqBody, resBody UpdateInternetScsiDigestPropertiesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateInternetScsiDiscoveryPropertiesBody struct { + Req *types.UpdateInternetScsiDiscoveryProperties `xml:"urn:vim25 UpdateInternetScsiDiscoveryProperties,omitempty"` + Res *types.UpdateInternetScsiDiscoveryPropertiesResponse `xml:"UpdateInternetScsiDiscoveryPropertiesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateInternetScsiDiscoveryPropertiesBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateInternetScsiDiscoveryProperties(ctx context.Context, r soap.RoundTripper, req *types.UpdateInternetScsiDiscoveryProperties) (*types.UpdateInternetScsiDiscoveryPropertiesResponse, error) { + var reqBody, resBody UpdateInternetScsiDiscoveryPropertiesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateInternetScsiIPPropertiesBody struct { + Req *types.UpdateInternetScsiIPProperties `xml:"urn:vim25 UpdateInternetScsiIPProperties,omitempty"` + Res *types.UpdateInternetScsiIPPropertiesResponse `xml:"UpdateInternetScsiIPPropertiesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateInternetScsiIPPropertiesBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateInternetScsiIPProperties(ctx context.Context, r soap.RoundTripper, req *types.UpdateInternetScsiIPProperties) (*types.UpdateInternetScsiIPPropertiesResponse, error) { + var reqBody, resBody UpdateInternetScsiIPPropertiesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateInternetScsiNameBody struct { + Req *types.UpdateInternetScsiName `xml:"urn:vim25 UpdateInternetScsiName,omitempty"` + Res *types.UpdateInternetScsiNameResponse `xml:"UpdateInternetScsiNameResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateInternetScsiNameBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateInternetScsiName(ctx context.Context, r soap.RoundTripper, req *types.UpdateInternetScsiName) (*types.UpdateInternetScsiNameResponse, error) { + var reqBody, resBody UpdateInternetScsiNameBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateIpConfigBody struct { + Req *types.UpdateIpConfig `xml:"urn:vim25 UpdateIpConfig,omitempty"` + Res *types.UpdateIpConfigResponse `xml:"UpdateIpConfigResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateIpConfigBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateIpConfig(ctx context.Context, r soap.RoundTripper, req *types.UpdateIpConfig) (*types.UpdateIpConfigResponse, error) { + var reqBody, resBody UpdateIpConfigBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateIpPoolBody struct { + Req *types.UpdateIpPool `xml:"urn:vim25 UpdateIpPool,omitempty"` + Res *types.UpdateIpPoolResponse `xml:"UpdateIpPoolResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateIpPoolBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateIpPool(ctx context.Context, r soap.RoundTripper, req *types.UpdateIpPool) (*types.UpdateIpPoolResponse, error) { + var reqBody, resBody UpdateIpPoolBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateIpRouteConfigBody struct { + Req *types.UpdateIpRouteConfig `xml:"urn:vim25 UpdateIpRouteConfig,omitempty"` + Res *types.UpdateIpRouteConfigResponse `xml:"UpdateIpRouteConfigResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateIpRouteConfigBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateIpRouteConfig(ctx context.Context, r soap.RoundTripper, req *types.UpdateIpRouteConfig) (*types.UpdateIpRouteConfigResponse, error) { + var reqBody, resBody UpdateIpRouteConfigBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateIpRouteTableConfigBody struct { + Req *types.UpdateIpRouteTableConfig `xml:"urn:vim25 UpdateIpRouteTableConfig,omitempty"` + Res *types.UpdateIpRouteTableConfigResponse `xml:"UpdateIpRouteTableConfigResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateIpRouteTableConfigBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateIpRouteTableConfig(ctx context.Context, r soap.RoundTripper, req *types.UpdateIpRouteTableConfig) (*types.UpdateIpRouteTableConfigResponse, error) { + var reqBody, resBody UpdateIpRouteTableConfigBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateIpmiBody struct { + Req *types.UpdateIpmi `xml:"urn:vim25 UpdateIpmi,omitempty"` + Res *types.UpdateIpmiResponse `xml:"UpdateIpmiResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateIpmiBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateIpmi(ctx context.Context, r soap.RoundTripper, req *types.UpdateIpmi) (*types.UpdateIpmiResponse, error) { + var reqBody, resBody UpdateIpmiBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateKmipServerBody struct { + Req *types.UpdateKmipServer `xml:"urn:vim25 UpdateKmipServer,omitempty"` + Res *types.UpdateKmipServerResponse `xml:"UpdateKmipServerResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateKmipServerBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateKmipServer(ctx context.Context, r soap.RoundTripper, req *types.UpdateKmipServer) (*types.UpdateKmipServerResponse, error) { + var reqBody, resBody UpdateKmipServerBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateKmsSignedCsrClientCertBody struct { + Req *types.UpdateKmsSignedCsrClientCert `xml:"urn:vim25 UpdateKmsSignedCsrClientCert,omitempty"` + Res *types.UpdateKmsSignedCsrClientCertResponse `xml:"UpdateKmsSignedCsrClientCertResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateKmsSignedCsrClientCertBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateKmsSignedCsrClientCert(ctx context.Context, r soap.RoundTripper, req *types.UpdateKmsSignedCsrClientCert) (*types.UpdateKmsSignedCsrClientCertResponse, error) { + var reqBody, resBody UpdateKmsSignedCsrClientCertBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateLicenseBody struct { + Req *types.UpdateLicense `xml:"urn:vim25 UpdateLicense,omitempty"` + Res *types.UpdateLicenseResponse `xml:"UpdateLicenseResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateLicenseBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateLicense(ctx context.Context, r soap.RoundTripper, req *types.UpdateLicense) (*types.UpdateLicenseResponse, error) { + var reqBody, resBody UpdateLicenseBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateLicenseLabelBody struct { + Req *types.UpdateLicenseLabel `xml:"urn:vim25 UpdateLicenseLabel,omitempty"` + Res *types.UpdateLicenseLabelResponse `xml:"UpdateLicenseLabelResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateLicenseLabelBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateLicenseLabel(ctx context.Context, r soap.RoundTripper, req *types.UpdateLicenseLabel) (*types.UpdateLicenseLabelResponse, error) { + var reqBody, resBody UpdateLicenseLabelBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateLinkedChildrenBody struct { + Req *types.UpdateLinkedChildren `xml:"urn:vim25 UpdateLinkedChildren,omitempty"` + Res *types.UpdateLinkedChildrenResponse `xml:"UpdateLinkedChildrenResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateLinkedChildrenBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateLinkedChildren(ctx context.Context, r soap.RoundTripper, req *types.UpdateLinkedChildren) (*types.UpdateLinkedChildrenResponse, error) { + var reqBody, resBody UpdateLinkedChildrenBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateLocalSwapDatastoreBody struct { + Req *types.UpdateLocalSwapDatastore `xml:"urn:vim25 UpdateLocalSwapDatastore,omitempty"` + Res *types.UpdateLocalSwapDatastoreResponse `xml:"UpdateLocalSwapDatastoreResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateLocalSwapDatastoreBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateLocalSwapDatastore(ctx context.Context, r soap.RoundTripper, req *types.UpdateLocalSwapDatastore) (*types.UpdateLocalSwapDatastoreResponse, error) { + var reqBody, resBody UpdateLocalSwapDatastoreBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateLockdownExceptionsBody struct { + Req *types.UpdateLockdownExceptions `xml:"urn:vim25 UpdateLockdownExceptions,omitempty"` + Res *types.UpdateLockdownExceptionsResponse `xml:"UpdateLockdownExceptionsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateLockdownExceptionsBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateLockdownExceptions(ctx context.Context, r soap.RoundTripper, req *types.UpdateLockdownExceptions) (*types.UpdateLockdownExceptionsResponse, error) { + var reqBody, resBody UpdateLockdownExceptionsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateModuleOptionStringBody struct { + Req *types.UpdateModuleOptionString `xml:"urn:vim25 UpdateModuleOptionString,omitempty"` + Res *types.UpdateModuleOptionStringResponse `xml:"UpdateModuleOptionStringResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateModuleOptionStringBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateModuleOptionString(ctx context.Context, r soap.RoundTripper, req *types.UpdateModuleOptionString) (*types.UpdateModuleOptionStringResponse, error) { + var reqBody, resBody UpdateModuleOptionStringBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateNetworkConfigBody struct { + Req *types.UpdateNetworkConfig `xml:"urn:vim25 UpdateNetworkConfig,omitempty"` + Res *types.UpdateNetworkConfigResponse `xml:"UpdateNetworkConfigResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateNetworkConfigBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateNetworkConfig(ctx context.Context, r soap.RoundTripper, req *types.UpdateNetworkConfig) (*types.UpdateNetworkConfigResponse, error) { + var reqBody, resBody UpdateNetworkConfigBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateNetworkResourcePoolBody struct { + Req *types.UpdateNetworkResourcePool `xml:"urn:vim25 UpdateNetworkResourcePool,omitempty"` + Res *types.UpdateNetworkResourcePoolResponse `xml:"UpdateNetworkResourcePoolResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateNetworkResourcePoolBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateNetworkResourcePool(ctx context.Context, r soap.RoundTripper, req *types.UpdateNetworkResourcePool) (*types.UpdateNetworkResourcePoolResponse, error) { + var reqBody, resBody UpdateNetworkResourcePoolBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateOptionsBody struct { + Req *types.UpdateOptions `xml:"urn:vim25 UpdateOptions,omitempty"` + Res *types.UpdateOptionsResponse `xml:"UpdateOptionsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateOptionsBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateOptions(ctx context.Context, r soap.RoundTripper, req *types.UpdateOptions) (*types.UpdateOptionsResponse, error) { + var reqBody, resBody UpdateOptionsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdatePassthruConfigBody struct { + Req *types.UpdatePassthruConfig `xml:"urn:vim25 UpdatePassthruConfig,omitempty"` + Res *types.UpdatePassthruConfigResponse `xml:"UpdatePassthruConfigResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdatePassthruConfigBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdatePassthruConfig(ctx context.Context, r soap.RoundTripper, req *types.UpdatePassthruConfig) (*types.UpdatePassthruConfigResponse, error) { + var reqBody, resBody UpdatePassthruConfigBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdatePerfIntervalBody struct { + Req *types.UpdatePerfInterval `xml:"urn:vim25 UpdatePerfInterval,omitempty"` + Res *types.UpdatePerfIntervalResponse `xml:"UpdatePerfIntervalResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdatePerfIntervalBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdatePerfInterval(ctx context.Context, r soap.RoundTripper, req *types.UpdatePerfInterval) (*types.UpdatePerfIntervalResponse, error) { + var reqBody, resBody UpdatePerfIntervalBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdatePhysicalNicLinkSpeedBody struct { + Req *types.UpdatePhysicalNicLinkSpeed `xml:"urn:vim25 UpdatePhysicalNicLinkSpeed,omitempty"` + Res *types.UpdatePhysicalNicLinkSpeedResponse `xml:"UpdatePhysicalNicLinkSpeedResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdatePhysicalNicLinkSpeedBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdatePhysicalNicLinkSpeed(ctx context.Context, r soap.RoundTripper, req *types.UpdatePhysicalNicLinkSpeed) (*types.UpdatePhysicalNicLinkSpeedResponse, error) { + var reqBody, resBody UpdatePhysicalNicLinkSpeedBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdatePortGroupBody struct { + Req *types.UpdatePortGroup `xml:"urn:vim25 UpdatePortGroup,omitempty"` + Res *types.UpdatePortGroupResponse `xml:"UpdatePortGroupResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdatePortGroupBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdatePortGroup(ctx context.Context, r soap.RoundTripper, req *types.UpdatePortGroup) (*types.UpdatePortGroupResponse, error) { + var reqBody, resBody UpdatePortGroupBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateProductLockerLocation_TaskBody struct { + Req *types.UpdateProductLockerLocation_Task `xml:"urn:vim25 UpdateProductLockerLocation_Task,omitempty"` + Res *types.UpdateProductLockerLocation_TaskResponse `xml:"UpdateProductLockerLocation_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateProductLockerLocation_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateProductLockerLocation_Task(ctx context.Context, r soap.RoundTripper, req *types.UpdateProductLockerLocation_Task) (*types.UpdateProductLockerLocation_TaskResponse, error) { + var reqBody, resBody UpdateProductLockerLocation_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateProgressBody struct { + Req *types.UpdateProgress `xml:"urn:vim25 UpdateProgress,omitempty"` + Res *types.UpdateProgressResponse `xml:"UpdateProgressResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateProgressBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateProgress(ctx context.Context, r soap.RoundTripper, req *types.UpdateProgress) (*types.UpdateProgressResponse, error) { + var reqBody, resBody UpdateProgressBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateReferenceHostBody struct { + Req *types.UpdateReferenceHost `xml:"urn:vim25 UpdateReferenceHost,omitempty"` + Res *types.UpdateReferenceHostResponse `xml:"UpdateReferenceHostResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateReferenceHostBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateReferenceHost(ctx context.Context, r soap.RoundTripper, req *types.UpdateReferenceHost) (*types.UpdateReferenceHostResponse, error) { + var reqBody, resBody UpdateReferenceHostBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateRulesetBody struct { + Req *types.UpdateRuleset `xml:"urn:vim25 UpdateRuleset,omitempty"` + Res *types.UpdateRulesetResponse `xml:"UpdateRulesetResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateRulesetBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateRuleset(ctx context.Context, r soap.RoundTripper, req *types.UpdateRuleset) (*types.UpdateRulesetResponse, error) { + var reqBody, resBody UpdateRulesetBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateScsiLunDisplayNameBody struct { + Req *types.UpdateScsiLunDisplayName `xml:"urn:vim25 UpdateScsiLunDisplayName,omitempty"` + Res *types.UpdateScsiLunDisplayNameResponse `xml:"UpdateScsiLunDisplayNameResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateScsiLunDisplayNameBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateScsiLunDisplayName(ctx context.Context, r soap.RoundTripper, req *types.UpdateScsiLunDisplayName) (*types.UpdateScsiLunDisplayNameResponse, error) { + var reqBody, resBody UpdateScsiLunDisplayNameBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateSelfSignedClientCertBody struct { + Req *types.UpdateSelfSignedClientCert `xml:"urn:vim25 UpdateSelfSignedClientCert,omitempty"` + Res *types.UpdateSelfSignedClientCertResponse `xml:"UpdateSelfSignedClientCertResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateSelfSignedClientCertBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateSelfSignedClientCert(ctx context.Context, r soap.RoundTripper, req *types.UpdateSelfSignedClientCert) (*types.UpdateSelfSignedClientCertResponse, error) { + var reqBody, resBody UpdateSelfSignedClientCertBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateServiceConsoleVirtualNicBody struct { + Req *types.UpdateServiceConsoleVirtualNic `xml:"urn:vim25 UpdateServiceConsoleVirtualNic,omitempty"` + Res *types.UpdateServiceConsoleVirtualNicResponse `xml:"UpdateServiceConsoleVirtualNicResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateServiceConsoleVirtualNicBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateServiceConsoleVirtualNic(ctx context.Context, r soap.RoundTripper, req *types.UpdateServiceConsoleVirtualNic) (*types.UpdateServiceConsoleVirtualNicResponse, error) { + var reqBody, resBody UpdateServiceConsoleVirtualNicBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateServiceMessageBody struct { + Req *types.UpdateServiceMessage `xml:"urn:vim25 UpdateServiceMessage,omitempty"` + Res *types.UpdateServiceMessageResponse `xml:"UpdateServiceMessageResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateServiceMessageBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateServiceMessage(ctx context.Context, r soap.RoundTripper, req *types.UpdateServiceMessage) (*types.UpdateServiceMessageResponse, error) { + var reqBody, resBody UpdateServiceMessageBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateServicePolicyBody struct { + Req *types.UpdateServicePolicy `xml:"urn:vim25 UpdateServicePolicy,omitempty"` + Res *types.UpdateServicePolicyResponse `xml:"UpdateServicePolicyResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateServicePolicyBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateServicePolicy(ctx context.Context, r soap.RoundTripper, req *types.UpdateServicePolicy) (*types.UpdateServicePolicyResponse, error) { + var reqBody, resBody UpdateServicePolicyBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateSoftwareInternetScsiEnabledBody struct { + Req *types.UpdateSoftwareInternetScsiEnabled `xml:"urn:vim25 UpdateSoftwareInternetScsiEnabled,omitempty"` + Res *types.UpdateSoftwareInternetScsiEnabledResponse `xml:"UpdateSoftwareInternetScsiEnabledResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateSoftwareInternetScsiEnabledBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateSoftwareInternetScsiEnabled(ctx context.Context, r soap.RoundTripper, req *types.UpdateSoftwareInternetScsiEnabled) (*types.UpdateSoftwareInternetScsiEnabledResponse, error) { + var reqBody, resBody UpdateSoftwareInternetScsiEnabledBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateSystemResourcesBody struct { + Req *types.UpdateSystemResources `xml:"urn:vim25 UpdateSystemResources,omitempty"` + Res *types.UpdateSystemResourcesResponse `xml:"UpdateSystemResourcesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateSystemResourcesBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateSystemResources(ctx context.Context, r soap.RoundTripper, req *types.UpdateSystemResources) (*types.UpdateSystemResourcesResponse, error) { + var reqBody, resBody UpdateSystemResourcesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateSystemSwapConfigurationBody struct { + Req *types.UpdateSystemSwapConfiguration `xml:"urn:vim25 UpdateSystemSwapConfiguration,omitempty"` + Res *types.UpdateSystemSwapConfigurationResponse `xml:"UpdateSystemSwapConfigurationResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateSystemSwapConfigurationBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateSystemSwapConfiguration(ctx context.Context, r soap.RoundTripper, req *types.UpdateSystemSwapConfiguration) (*types.UpdateSystemSwapConfigurationResponse, error) { + var reqBody, resBody UpdateSystemSwapConfigurationBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateSystemUsersBody struct { + Req *types.UpdateSystemUsers `xml:"urn:vim25 UpdateSystemUsers,omitempty"` + Res *types.UpdateSystemUsersResponse `xml:"UpdateSystemUsersResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateSystemUsersBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateSystemUsers(ctx context.Context, r soap.RoundTripper, req *types.UpdateSystemUsers) (*types.UpdateSystemUsersResponse, error) { + var reqBody, resBody UpdateSystemUsersBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateUserBody struct { + Req *types.UpdateUser `xml:"urn:vim25 UpdateUser,omitempty"` + Res *types.UpdateUserResponse `xml:"UpdateUserResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateUserBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateUser(ctx context.Context, r soap.RoundTripper, req *types.UpdateUser) (*types.UpdateUserResponse, error) { + var reqBody, resBody UpdateUserBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateVAppConfigBody struct { + Req *types.UpdateVAppConfig `xml:"urn:vim25 UpdateVAppConfig,omitempty"` + Res *types.UpdateVAppConfigResponse `xml:"UpdateVAppConfigResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateVAppConfigBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateVAppConfig(ctx context.Context, r soap.RoundTripper, req *types.UpdateVAppConfig) (*types.UpdateVAppConfigResponse, error) { + var reqBody, resBody UpdateVAppConfigBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateVStorageInfrastructureObjectPolicy_TaskBody struct { + Req *types.UpdateVStorageInfrastructureObjectPolicy_Task `xml:"urn:vim25 UpdateVStorageInfrastructureObjectPolicy_Task,omitempty"` + Res *types.UpdateVStorageInfrastructureObjectPolicy_TaskResponse `xml:"UpdateVStorageInfrastructureObjectPolicy_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateVStorageInfrastructureObjectPolicy_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateVStorageInfrastructureObjectPolicy_Task(ctx context.Context, r soap.RoundTripper, req *types.UpdateVStorageInfrastructureObjectPolicy_Task) (*types.UpdateVStorageInfrastructureObjectPolicy_TaskResponse, error) { + var reqBody, resBody UpdateVStorageInfrastructureObjectPolicy_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateVStorageObjectCrypto_TaskBody struct { + Req *types.UpdateVStorageObjectCrypto_Task `xml:"urn:vim25 UpdateVStorageObjectCrypto_Task,omitempty"` + Res *types.UpdateVStorageObjectCrypto_TaskResponse `xml:"UpdateVStorageObjectCrypto_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateVStorageObjectCrypto_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateVStorageObjectCrypto_Task(ctx context.Context, r soap.RoundTripper, req *types.UpdateVStorageObjectCrypto_Task) (*types.UpdateVStorageObjectCrypto_TaskResponse, error) { + var reqBody, resBody UpdateVStorageObjectCrypto_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateVStorageObjectPolicy_TaskBody struct { + Req *types.UpdateVStorageObjectPolicy_Task `xml:"urn:vim25 UpdateVStorageObjectPolicy_Task,omitempty"` + Res *types.UpdateVStorageObjectPolicy_TaskResponse `xml:"UpdateVStorageObjectPolicy_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateVStorageObjectPolicy_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateVStorageObjectPolicy_Task(ctx context.Context, r soap.RoundTripper, req *types.UpdateVStorageObjectPolicy_Task) (*types.UpdateVStorageObjectPolicy_TaskResponse, error) { + var reqBody, resBody UpdateVStorageObjectPolicy_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateVVolVirtualMachineFiles_TaskBody struct { + Req *types.UpdateVVolVirtualMachineFiles_Task `xml:"urn:vim25 UpdateVVolVirtualMachineFiles_Task,omitempty"` + Res *types.UpdateVVolVirtualMachineFiles_TaskResponse `xml:"UpdateVVolVirtualMachineFiles_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateVVolVirtualMachineFiles_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateVVolVirtualMachineFiles_Task(ctx context.Context, r soap.RoundTripper, req *types.UpdateVVolVirtualMachineFiles_Task) (*types.UpdateVVolVirtualMachineFiles_TaskResponse, error) { + var reqBody, resBody UpdateVVolVirtualMachineFiles_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateVirtualMachineFiles_TaskBody struct { + Req *types.UpdateVirtualMachineFiles_Task `xml:"urn:vim25 UpdateVirtualMachineFiles_Task,omitempty"` + Res *types.UpdateVirtualMachineFiles_TaskResponse `xml:"UpdateVirtualMachineFiles_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateVirtualMachineFiles_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateVirtualMachineFiles_Task(ctx context.Context, r soap.RoundTripper, req *types.UpdateVirtualMachineFiles_Task) (*types.UpdateVirtualMachineFiles_TaskResponse, error) { + var reqBody, resBody UpdateVirtualMachineFiles_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateVirtualNicBody struct { + Req *types.UpdateVirtualNic `xml:"urn:vim25 UpdateVirtualNic,omitempty"` + Res *types.UpdateVirtualNicResponse `xml:"UpdateVirtualNicResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateVirtualNicBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateVirtualNic(ctx context.Context, r soap.RoundTripper, req *types.UpdateVirtualNic) (*types.UpdateVirtualNicResponse, error) { + var reqBody, resBody UpdateVirtualNicBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateVirtualSwitchBody struct { + Req *types.UpdateVirtualSwitch `xml:"urn:vim25 UpdateVirtualSwitch,omitempty"` + Res *types.UpdateVirtualSwitchResponse `xml:"UpdateVirtualSwitchResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateVirtualSwitchBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateVirtualSwitch(ctx context.Context, r soap.RoundTripper, req *types.UpdateVirtualSwitch) (*types.UpdateVirtualSwitchResponse, error) { + var reqBody, resBody UpdateVirtualSwitchBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateVmfsUnmapBandwidthBody struct { + Req *types.UpdateVmfsUnmapBandwidth `xml:"urn:vim25 UpdateVmfsUnmapBandwidth,omitempty"` + Res *types.UpdateVmfsUnmapBandwidthResponse `xml:"UpdateVmfsUnmapBandwidthResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateVmfsUnmapBandwidthBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateVmfsUnmapBandwidth(ctx context.Context, r soap.RoundTripper, req *types.UpdateVmfsUnmapBandwidth) (*types.UpdateVmfsUnmapBandwidthResponse, error) { + var reqBody, resBody UpdateVmfsUnmapBandwidthBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateVmfsUnmapPriorityBody struct { + Req *types.UpdateVmfsUnmapPriority `xml:"urn:vim25 UpdateVmfsUnmapPriority,omitempty"` + Res *types.UpdateVmfsUnmapPriorityResponse `xml:"UpdateVmfsUnmapPriorityResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateVmfsUnmapPriorityBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateVmfsUnmapPriority(ctx context.Context, r soap.RoundTripper, req *types.UpdateVmfsUnmapPriority) (*types.UpdateVmfsUnmapPriorityResponse, error) { + var reqBody, resBody UpdateVmfsUnmapPriorityBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpdateVsan_TaskBody struct { + Req *types.UpdateVsan_Task `xml:"urn:vim25 UpdateVsan_Task,omitempty"` + Res *types.UpdateVsan_TaskResponse `xml:"UpdateVsan_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpdateVsan_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func UpdateVsan_Task(ctx context.Context, r soap.RoundTripper, req *types.UpdateVsan_Task) (*types.UpdateVsan_TaskResponse, error) { + var reqBody, resBody UpdateVsan_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpgradeIoFilter_TaskBody struct { + Req *types.UpgradeIoFilter_Task `xml:"urn:vim25 UpgradeIoFilter_Task,omitempty"` + Res *types.UpgradeIoFilter_TaskResponse `xml:"UpgradeIoFilter_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpgradeIoFilter_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func UpgradeIoFilter_Task(ctx context.Context, r soap.RoundTripper, req *types.UpgradeIoFilter_Task) (*types.UpgradeIoFilter_TaskResponse, error) { + var reqBody, resBody UpgradeIoFilter_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpgradeTools_TaskBody struct { + Req *types.UpgradeTools_Task `xml:"urn:vim25 UpgradeTools_Task,omitempty"` + Res *types.UpgradeTools_TaskResponse `xml:"UpgradeTools_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpgradeTools_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func UpgradeTools_Task(ctx context.Context, r soap.RoundTripper, req *types.UpgradeTools_Task) (*types.UpgradeTools_TaskResponse, error) { + var reqBody, resBody UpgradeTools_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpgradeVM_TaskBody struct { + Req *types.UpgradeVM_Task `xml:"urn:vim25 UpgradeVM_Task,omitempty"` + Res *types.UpgradeVM_TaskResponse `xml:"UpgradeVM_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpgradeVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func UpgradeVM_Task(ctx context.Context, r soap.RoundTripper, req *types.UpgradeVM_Task) (*types.UpgradeVM_TaskResponse, error) { + var reqBody, resBody UpgradeVM_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpgradeVmLayoutBody struct { + Req *types.UpgradeVmLayout `xml:"urn:vim25 UpgradeVmLayout,omitempty"` + Res *types.UpgradeVmLayoutResponse `xml:"UpgradeVmLayoutResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpgradeVmLayoutBody) Fault() *soap.Fault { return b.Fault_ } + +func UpgradeVmLayout(ctx context.Context, r soap.RoundTripper, req *types.UpgradeVmLayout) (*types.UpgradeVmLayoutResponse, error) { + var reqBody, resBody UpgradeVmLayoutBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpgradeVmfsBody struct { + Req *types.UpgradeVmfs `xml:"urn:vim25 UpgradeVmfs,omitempty"` + Res *types.UpgradeVmfsResponse `xml:"UpgradeVmfsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpgradeVmfsBody) Fault() *soap.Fault { return b.Fault_ } + +func UpgradeVmfs(ctx context.Context, r soap.RoundTripper, req *types.UpgradeVmfs) (*types.UpgradeVmfsResponse, error) { + var reqBody, resBody UpgradeVmfsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UpgradeVsanObjectsBody struct { + Req *types.UpgradeVsanObjects `xml:"urn:vim25 UpgradeVsanObjects,omitempty"` + Res *types.UpgradeVsanObjectsResponse `xml:"UpgradeVsanObjectsResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UpgradeVsanObjectsBody) Fault() *soap.Fault { return b.Fault_ } + +func UpgradeVsanObjects(ctx context.Context, r soap.RoundTripper, req *types.UpgradeVsanObjects) (*types.UpgradeVsanObjectsResponse, error) { + var reqBody, resBody UpgradeVsanObjectsBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UploadClientCertBody struct { + Req *types.UploadClientCert `xml:"urn:vim25 UploadClientCert,omitempty"` + Res *types.UploadClientCertResponse `xml:"UploadClientCertResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UploadClientCertBody) Fault() *soap.Fault { return b.Fault_ } + +func UploadClientCert(ctx context.Context, r soap.RoundTripper, req *types.UploadClientCert) (*types.UploadClientCertResponse, error) { + var reqBody, resBody UploadClientCertBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UploadKmipServerCertBody struct { + Req *types.UploadKmipServerCert `xml:"urn:vim25 UploadKmipServerCert,omitempty"` + Res *types.UploadKmipServerCertResponse `xml:"UploadKmipServerCertResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UploadKmipServerCertBody) Fault() *soap.Fault { return b.Fault_ } + +func UploadKmipServerCert(ctx context.Context, r soap.RoundTripper, req *types.UploadKmipServerCert) (*types.UploadKmipServerCertResponse, error) { + var reqBody, resBody UploadKmipServerCertBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type VStorageObjectCreateSnapshot_TaskBody struct { + Req *types.VStorageObjectCreateSnapshot_Task `xml:"urn:vim25 VStorageObjectCreateSnapshot_Task,omitempty"` + Res *types.VStorageObjectCreateSnapshot_TaskResponse `xml:"VStorageObjectCreateSnapshot_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *VStorageObjectCreateSnapshot_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func VStorageObjectCreateSnapshot_Task(ctx context.Context, r soap.RoundTripper, req *types.VStorageObjectCreateSnapshot_Task) (*types.VStorageObjectCreateSnapshot_TaskResponse, error) { + var reqBody, resBody VStorageObjectCreateSnapshot_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ValidateCredentialsInGuestBody struct { + Req *types.ValidateCredentialsInGuest `xml:"urn:vim25 ValidateCredentialsInGuest,omitempty"` + Res *types.ValidateCredentialsInGuestResponse `xml:"ValidateCredentialsInGuestResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ValidateCredentialsInGuestBody) Fault() *soap.Fault { return b.Fault_ } + +func ValidateCredentialsInGuest(ctx context.Context, r soap.RoundTripper, req *types.ValidateCredentialsInGuest) (*types.ValidateCredentialsInGuestResponse, error) { + var reqBody, resBody ValidateCredentialsInGuestBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ValidateHCIConfigurationBody struct { + Req *types.ValidateHCIConfiguration `xml:"urn:vim25 ValidateHCIConfiguration,omitempty"` + Res *types.ValidateHCIConfigurationResponse `xml:"ValidateHCIConfigurationResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ValidateHCIConfigurationBody) Fault() *soap.Fault { return b.Fault_ } + +func ValidateHCIConfiguration(ctx context.Context, r soap.RoundTripper, req *types.ValidateHCIConfiguration) (*types.ValidateHCIConfigurationResponse, error) { + var reqBody, resBody ValidateHCIConfigurationBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ValidateHostBody struct { + Req *types.ValidateHost `xml:"urn:vim25 ValidateHost,omitempty"` + Res *types.ValidateHostResponse `xml:"ValidateHostResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ValidateHostBody) Fault() *soap.Fault { return b.Fault_ } + +func ValidateHost(ctx context.Context, r soap.RoundTripper, req *types.ValidateHost) (*types.ValidateHostResponse, error) { + var reqBody, resBody ValidateHostBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ValidateHostProfileComposition_TaskBody struct { + Req *types.ValidateHostProfileComposition_Task `xml:"urn:vim25 ValidateHostProfileComposition_Task,omitempty"` + Res *types.ValidateHostProfileComposition_TaskResponse `xml:"ValidateHostProfileComposition_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ValidateHostProfileComposition_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ValidateHostProfileComposition_Task(ctx context.Context, r soap.RoundTripper, req *types.ValidateHostProfileComposition_Task) (*types.ValidateHostProfileComposition_TaskResponse, error) { + var reqBody, resBody ValidateHostProfileComposition_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ValidateMigrationBody struct { + Req *types.ValidateMigration `xml:"urn:vim25 ValidateMigration,omitempty"` + Res *types.ValidateMigrationResponse `xml:"ValidateMigrationResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ValidateMigrationBody) Fault() *soap.Fault { return b.Fault_ } + +func ValidateMigration(ctx context.Context, r soap.RoundTripper, req *types.ValidateMigration) (*types.ValidateMigrationResponse, error) { + var reqBody, resBody ValidateMigrationBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ValidateStoragePodConfigBody struct { + Req *types.ValidateStoragePodConfig `xml:"urn:vim25 ValidateStoragePodConfig,omitempty"` + Res *types.ValidateStoragePodConfigResponse `xml:"ValidateStoragePodConfigResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ValidateStoragePodConfigBody) Fault() *soap.Fault { return b.Fault_ } + +func ValidateStoragePodConfig(ctx context.Context, r soap.RoundTripper, req *types.ValidateStoragePodConfig) (*types.ValidateStoragePodConfigResponse, error) { + var reqBody, resBody ValidateStoragePodConfigBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type VstorageObjectVCenterQueryChangedDiskAreasBody struct { + Req *types.VstorageObjectVCenterQueryChangedDiskAreas `xml:"urn:vim25 VstorageObjectVCenterQueryChangedDiskAreas,omitempty"` + Res *types.VstorageObjectVCenterQueryChangedDiskAreasResponse `xml:"VstorageObjectVCenterQueryChangedDiskAreasResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *VstorageObjectVCenterQueryChangedDiskAreasBody) Fault() *soap.Fault { return b.Fault_ } + +func VstorageObjectVCenterQueryChangedDiskAreas(ctx context.Context, r soap.RoundTripper, req *types.VstorageObjectVCenterQueryChangedDiskAreas) (*types.VstorageObjectVCenterQueryChangedDiskAreasResponse, error) { + var reqBody, resBody VstorageObjectVCenterQueryChangedDiskAreasBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type WaitForUpdatesBody struct { + Req *types.WaitForUpdates `xml:"urn:vim25 WaitForUpdates,omitempty"` + Res *types.WaitForUpdatesResponse `xml:"WaitForUpdatesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *WaitForUpdatesBody) Fault() *soap.Fault { return b.Fault_ } + +func WaitForUpdates(ctx context.Context, r soap.RoundTripper, req *types.WaitForUpdates) (*types.WaitForUpdatesResponse, error) { + var reqBody, resBody WaitForUpdatesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type WaitForUpdatesExBody struct { + Req *types.WaitForUpdatesEx `xml:"urn:vim25 WaitForUpdatesEx,omitempty"` + Res *types.WaitForUpdatesExResponse `xml:"WaitForUpdatesExResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *WaitForUpdatesExBody) Fault() *soap.Fault { return b.Fault_ } + +func WaitForUpdatesEx(ctx context.Context, r soap.RoundTripper, req *types.WaitForUpdatesEx) (*types.WaitForUpdatesExResponse, error) { + var reqBody, resBody WaitForUpdatesExBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type XmlToCustomizationSpecItemBody struct { + Req *types.XmlToCustomizationSpecItem `xml:"urn:vim25 XmlToCustomizationSpecItem,omitempty"` + Res *types.XmlToCustomizationSpecItemResponse `xml:"XmlToCustomizationSpecItemResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *XmlToCustomizationSpecItemBody) Fault() *soap.Fault { return b.Fault_ } + +func XmlToCustomizationSpecItem(ctx context.Context, r soap.RoundTripper, req *types.XmlToCustomizationSpecItem) (*types.XmlToCustomizationSpecItemResponse, error) { + var reqBody, resBody XmlToCustomizationSpecItemBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ZeroFillVirtualDisk_TaskBody struct { + Req *types.ZeroFillVirtualDisk_Task `xml:"urn:vim25 ZeroFillVirtualDisk_Task,omitempty"` + Res *types.ZeroFillVirtualDisk_TaskResponse `xml:"ZeroFillVirtualDisk_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ZeroFillVirtualDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ZeroFillVirtualDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.ZeroFillVirtualDisk_Task) (*types.ZeroFillVirtualDisk_TaskResponse, error) { + var reqBody, resBody ZeroFillVirtualDisk_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ConfigureVcha_TaskBody struct { + Req *types.ConfigureVcha_Task `xml:"urn:vim25 configureVcha_Task,omitempty"` + Res *types.ConfigureVcha_TaskResponse `xml:"configureVcha_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ConfigureVcha_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ConfigureVcha_Task(ctx context.Context, r soap.RoundTripper, req *types.ConfigureVcha_Task) (*types.ConfigureVcha_TaskResponse, error) { + var reqBody, resBody ConfigureVcha_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreatePassiveNode_TaskBody struct { + Req *types.CreatePassiveNode_Task `xml:"urn:vim25 createPassiveNode_Task,omitempty"` + Res *types.CreatePassiveNode_TaskResponse `xml:"createPassiveNode_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreatePassiveNode_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CreatePassiveNode_Task(ctx context.Context, r soap.RoundTripper, req *types.CreatePassiveNode_Task) (*types.CreatePassiveNode_TaskResponse, error) { + var reqBody, resBody CreatePassiveNode_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type CreateWitnessNode_TaskBody struct { + Req *types.CreateWitnessNode_Task `xml:"urn:vim25 createWitnessNode_Task,omitempty"` + Res *types.CreateWitnessNode_TaskResponse `xml:"createWitnessNode_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *CreateWitnessNode_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func CreateWitnessNode_Task(ctx context.Context, r soap.RoundTripper, req *types.CreateWitnessNode_Task) (*types.CreateWitnessNode_TaskResponse, error) { + var reqBody, resBody CreateWitnessNode_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DeployVcha_TaskBody struct { + Req *types.DeployVcha_Task `xml:"urn:vim25 deployVcha_Task,omitempty"` + Res *types.DeployVcha_TaskResponse `xml:"deployVcha_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DeployVcha_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func DeployVcha_Task(ctx context.Context, r soap.RoundTripper, req *types.DeployVcha_Task) (*types.DeployVcha_TaskResponse, error) { + var reqBody, resBody DeployVcha_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type DestroyVcha_TaskBody struct { + Req *types.DestroyVcha_Task `xml:"urn:vim25 destroyVcha_Task,omitempty"` + Res *types.DestroyVcha_TaskResponse `xml:"destroyVcha_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *DestroyVcha_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func DestroyVcha_Task(ctx context.Context, r soap.RoundTripper, req *types.DestroyVcha_Task) (*types.DestroyVcha_TaskResponse, error) { + var reqBody, resBody DestroyVcha_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type FetchSoftwarePackagesBody struct { + Req *types.FetchSoftwarePackages `xml:"urn:vim25 fetchSoftwarePackages,omitempty"` + Res *types.FetchSoftwarePackagesResponse `xml:"fetchSoftwarePackagesResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *FetchSoftwarePackagesBody) Fault() *soap.Fault { return b.Fault_ } + +func FetchSoftwarePackages(ctx context.Context, r soap.RoundTripper, req *types.FetchSoftwarePackages) (*types.FetchSoftwarePackagesResponse, error) { + var reqBody, resBody FetchSoftwarePackagesBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type GetClusterModeBody struct { + Req *types.GetClusterMode `xml:"urn:vim25 getClusterMode,omitempty"` + Res *types.GetClusterModeResponse `xml:"getClusterModeResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *GetClusterModeBody) Fault() *soap.Fault { return b.Fault_ } + +func GetClusterMode(ctx context.Context, r soap.RoundTripper, req *types.GetClusterMode) (*types.GetClusterModeResponse, error) { + var reqBody, resBody GetClusterModeBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type GetVchaConfigBody struct { + Req *types.GetVchaConfig `xml:"urn:vim25 getVchaConfig,omitempty"` + Res *types.GetVchaConfigResponse `xml:"getVchaConfigResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *GetVchaConfigBody) Fault() *soap.Fault { return b.Fault_ } + +func GetVchaConfig(ctx context.Context, r soap.RoundTripper, req *types.GetVchaConfig) (*types.GetVchaConfigResponse, error) { + var reqBody, resBody GetVchaConfigBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type InitiateFailover_TaskBody struct { + Req *types.InitiateFailover_Task `xml:"urn:vim25 initiateFailover_Task,omitempty"` + Res *types.InitiateFailover_TaskResponse `xml:"initiateFailover_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *InitiateFailover_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func InitiateFailover_Task(ctx context.Context, r soap.RoundTripper, req *types.InitiateFailover_Task) (*types.InitiateFailover_TaskResponse, error) { + var reqBody, resBody InitiateFailover_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type InstallDateBody struct { + Req *types.InstallDate `xml:"urn:vim25 installDate,omitempty"` + Res *types.InstallDateResponse `xml:"installDateResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *InstallDateBody) Fault() *soap.Fault { return b.Fault_ } + +func InstallDate(ctx context.Context, r soap.RoundTripper, req *types.InstallDate) (*types.InstallDateResponse, error) { + var reqBody, resBody InstallDateBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type PrepareVcha_TaskBody struct { + Req *types.PrepareVcha_Task `xml:"urn:vim25 prepareVcha_Task,omitempty"` + Res *types.PrepareVcha_TaskResponse `xml:"prepareVcha_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *PrepareVcha_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func PrepareVcha_Task(ctx context.Context, r soap.RoundTripper, req *types.PrepareVcha_Task) (*types.PrepareVcha_TaskResponse, error) { + var reqBody, resBody PrepareVcha_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type QueryDatacenterConfigOptionDescriptorBody struct { + Req *types.QueryDatacenterConfigOptionDescriptor `xml:"urn:vim25 queryDatacenterConfigOptionDescriptor,omitempty"` + Res *types.QueryDatacenterConfigOptionDescriptorResponse `xml:"queryDatacenterConfigOptionDescriptorResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *QueryDatacenterConfigOptionDescriptorBody) Fault() *soap.Fault { return b.Fault_ } + +func QueryDatacenterConfigOptionDescriptor(ctx context.Context, r soap.RoundTripper, req *types.QueryDatacenterConfigOptionDescriptor) (*types.QueryDatacenterConfigOptionDescriptorResponse, error) { + var reqBody, resBody QueryDatacenterConfigOptionDescriptorBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type ReloadVirtualMachineFromPath_TaskBody struct { + Req *types.ReloadVirtualMachineFromPath_Task `xml:"urn:vim25 reloadVirtualMachineFromPath_Task,omitempty"` + Res *types.ReloadVirtualMachineFromPath_TaskResponse `xml:"reloadVirtualMachineFromPath_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *ReloadVirtualMachineFromPath_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func ReloadVirtualMachineFromPath_Task(ctx context.Context, r soap.RoundTripper, req *types.ReloadVirtualMachineFromPath_Task) (*types.ReloadVirtualMachineFromPath_TaskResponse, error) { + var reqBody, resBody ReloadVirtualMachineFromPath_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SetClusterMode_TaskBody struct { + Req *types.SetClusterMode_Task `xml:"urn:vim25 setClusterMode_Task,omitempty"` + Res *types.SetClusterMode_TaskResponse `xml:"setClusterMode_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SetClusterMode_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func SetClusterMode_Task(ctx context.Context, r soap.RoundTripper, req *types.SetClusterMode_Task) (*types.SetClusterMode_TaskResponse, error) { + var reqBody, resBody SetClusterMode_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type SetCustomValueBody struct { + Req *types.SetCustomValue `xml:"urn:vim25 setCustomValue,omitempty"` + Res *types.SetCustomValueResponse `xml:"setCustomValueResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *SetCustomValueBody) Fault() *soap.Fault { return b.Fault_ } + +func SetCustomValue(ctx context.Context, r soap.RoundTripper, req *types.SetCustomValue) (*types.SetCustomValueResponse, error) { + var reqBody, resBody SetCustomValueBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} + +type UnregisterVApp_TaskBody struct { + Req *types.UnregisterVApp_Task `xml:"urn:vim25 unregisterVApp_Task,omitempty"` + Res *types.UnregisterVApp_TaskResponse `xml:"unregisterVApp_TaskResponse,omitempty"` + Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` +} + +func (b *UnregisterVApp_TaskBody) Fault() *soap.Fault { return b.Fault_ } + +func UnregisterVApp_Task(ctx context.Context, r soap.RoundTripper, req *types.UnregisterVApp_Task) (*types.UnregisterVApp_TaskResponse, error) { + var reqBody, resBody UnregisterVApp_TaskBody + + reqBody.Req = req + + if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { + return nil, err + } + + return resBody.Res, nil +} diff --git a/vendor/github.com/vmware/govmomi/vim25/methods/service_content.go b/vendor/github.com/vmware/govmomi/vim25/methods/service_content.go new file mode 100644 index 0000000..4016465 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/methods/service_content.go @@ -0,0 +1,57 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package methods + +import ( + "context" + "time" + + "github.com/vmware/govmomi/vim25/soap" + "github.com/vmware/govmomi/vim25/types" +) + +// copy of vim25.ServiceInstance to avoid import cycle +var serviceInstance = types.ManagedObjectReference{ + Type: "ServiceInstance", + Value: "ServiceInstance", +} + +func GetServiceContent(ctx context.Context, r soap.RoundTripper) (types.ServiceContent, error) { + req := types.RetrieveServiceContent{ + This: serviceInstance, + } + + res, err := RetrieveServiceContent(ctx, r, &req) + if err != nil { + return types.ServiceContent{}, err + } + + return res.Returnval, nil +} + +func GetCurrentTime(ctx context.Context, r soap.RoundTripper) (*time.Time, error) { + req := types.CurrentTime{ + This: serviceInstance, + } + + res, err := CurrentTime(ctx, r, &req) + if err != nil { + return nil, err + } + + return &res.Returnval, nil +} diff --git a/vendor/github.com/vmware/govmomi/vim25/mo/ancestors.go b/vendor/github.com/vmware/govmomi/vim25/mo/ancestors.go new file mode 100644 index 0000000..d3da5b1 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/mo/ancestors.go @@ -0,0 +1,137 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package mo + +import ( + "context" + "fmt" + + "github.com/vmware/govmomi/vim25/soap" + "github.com/vmware/govmomi/vim25/types" +) + +// Ancestors returns the entire ancestry tree of a specified managed object. +// The return value includes the root node and the specified object itself. +func Ancestors(ctx context.Context, rt soap.RoundTripper, pc, obj types.ManagedObjectReference) ([]ManagedEntity, error) { + ospec := types.ObjectSpec{ + Obj: obj, + SelectSet: []types.BaseSelectionSpec{ + &types.TraversalSpec{ + SelectionSpec: types.SelectionSpec{Name: "traverseParent"}, + Type: "ManagedEntity", + Path: "parent", + Skip: types.NewBool(false), + SelectSet: []types.BaseSelectionSpec{ + &types.SelectionSpec{Name: "traverseParent"}, + }, + }, + &types.TraversalSpec{ + SelectionSpec: types.SelectionSpec{}, + Type: "VirtualMachine", + Path: "parentVApp", + Skip: types.NewBool(false), + SelectSet: []types.BaseSelectionSpec{ + &types.SelectionSpec{Name: "traverseParent"}, + }, + }, + }, + Skip: types.NewBool(false), + } + + pspec := []types.PropertySpec{ + { + Type: "ManagedEntity", + PathSet: []string{"name", "parent"}, + }, + { + Type: "VirtualMachine", + PathSet: []string{"parentVApp"}, + }, + } + + req := types.RetrieveProperties{ + This: pc, + SpecSet: []types.PropertyFilterSpec{ + { + ObjectSet: []types.ObjectSpec{ospec}, + PropSet: pspec, + }, + }, + } + + var ifaces []interface{} + err := RetrievePropertiesForRequest(ctx, rt, req, &ifaces) + if err != nil { + return nil, err + } + + var out []ManagedEntity + + // Build ancestry tree by iteratively finding a new child. + for len(out) < len(ifaces) { + var find types.ManagedObjectReference + + if len(out) > 0 { + find = out[len(out)-1].Self + } + + // Find entity we're looking for given the last entity in the current tree. + for _, iface := range ifaces { + me := iface.(IsManagedEntity).GetManagedEntity() + + if me.Name == "" { + // The types below have their own 'Name' field, so ManagedEntity.Name (me.Name) is empty. + // We only hit this case when the 'obj' param is one of these types. + // In most cases, 'obj' is a Folder so Name isn't collected in this call. + switch x := iface.(type) { + case Network: + me.Name = x.Name + case DistributedVirtualSwitch: + me.Name = x.Name + case DistributedVirtualPortgroup: + me.Name = x.Name + case OpaqueNetwork: + me.Name = x.Name + default: + // ManagedEntity always has a Name, if we hit this point we missed a case above. + panic(fmt.Sprintf("%#v Name is empty", me.Reference())) + } + } + + if me.Parent == nil { + // Special case for VirtualMachine within VirtualApp, + // unlikely to hit this other than via Finder.Element() + switch x := iface.(type) { + case VirtualMachine: + me.Parent = x.ParentVApp + } + } + + if me.Parent == nil { + out = append(out, me) + break + } + + if *me.Parent == find { + out = append(out, me) + break + } + } + } + + return out, nil +} diff --git a/vendor/github.com/vmware/govmomi/vim25/mo/entity.go b/vendor/github.com/vmware/govmomi/vim25/mo/entity.go new file mode 100644 index 0000000..193e6f7 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/mo/entity.go @@ -0,0 +1,24 @@ +/* +Copyright (c) 2016 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package mo + +// Entity is the interface that is implemented by all managed objects +// that extend ManagedEntity. +type Entity interface { + Reference + Entity() *ManagedEntity +} diff --git a/vendor/github.com/vmware/govmomi/vim25/mo/extra.go b/vendor/github.com/vmware/govmomi/vim25/mo/extra.go new file mode 100644 index 0000000..254ef35 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/mo/extra.go @@ -0,0 +1,61 @@ +/* +Copyright (c) 2014 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package mo + +type IsManagedEntity interface { + GetManagedEntity() ManagedEntity +} + +func (m ComputeResource) GetManagedEntity() ManagedEntity { + return m.ManagedEntity +} + +func (m Datacenter) GetManagedEntity() ManagedEntity { + return m.ManagedEntity +} + +func (m Datastore) GetManagedEntity() ManagedEntity { + return m.ManagedEntity +} + +func (m DistributedVirtualSwitch) GetManagedEntity() ManagedEntity { + return m.ManagedEntity +} + +func (m DistributedVirtualPortgroup) GetManagedEntity() ManagedEntity { + return m.ManagedEntity +} + +func (m Folder) GetManagedEntity() ManagedEntity { + return m.ManagedEntity +} + +func (m HostSystem) GetManagedEntity() ManagedEntity { + return m.ManagedEntity +} + +func (m Network) GetManagedEntity() ManagedEntity { + return m.ManagedEntity +} + +func (m ResourcePool) GetManagedEntity() ManagedEntity { + return m.ManagedEntity +} + +func (m VirtualMachine) GetManagedEntity() ManagedEntity { + return m.ManagedEntity +} diff --git a/vendor/github.com/vmware/govmomi/vim25/mo/mo.go b/vendor/github.com/vmware/govmomi/vim25/mo/mo.go new file mode 100644 index 0000000..b557c26 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/mo/mo.go @@ -0,0 +1,1868 @@ +/* +Copyright (c) 2014-2018 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package mo + +import ( + "reflect" + "time" + + "github.com/vmware/govmomi/vim25/types" +) + +type Alarm struct { + ExtensibleManagedObject + + Info types.AlarmInfo `mo:"info"` +} + +func init() { + t["Alarm"] = reflect.TypeOf((*Alarm)(nil)).Elem() +} + +type AlarmManager struct { + Self types.ManagedObjectReference + + DefaultExpression []types.BaseAlarmExpression `mo:"defaultExpression"` + Description types.AlarmDescription `mo:"description"` +} + +func (m AlarmManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["AlarmManager"] = reflect.TypeOf((*AlarmManager)(nil)).Elem() +} + +type AuthorizationManager struct { + Self types.ManagedObjectReference + + PrivilegeList []types.AuthorizationPrivilege `mo:"privilegeList"` + RoleList []types.AuthorizationRole `mo:"roleList"` + Description types.AuthorizationDescription `mo:"description"` +} + +func (m AuthorizationManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["AuthorizationManager"] = reflect.TypeOf((*AuthorizationManager)(nil)).Elem() +} + +type CertificateManager struct { + Self types.ManagedObjectReference +} + +func (m CertificateManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["CertificateManager"] = reflect.TypeOf((*CertificateManager)(nil)).Elem() +} + +type ClusterComputeResource struct { + ComputeResource + + Configuration types.ClusterConfigInfo `mo:"configuration"` + Recommendation []types.ClusterRecommendation `mo:"recommendation"` + DrsRecommendation []types.ClusterDrsRecommendation `mo:"drsRecommendation"` + HciConfig *types.ClusterComputeResourceHCIConfigInfo `mo:"hciConfig"` + MigrationHistory []types.ClusterDrsMigration `mo:"migrationHistory"` + ActionHistory []types.ClusterActionHistory `mo:"actionHistory"` + DrsFault []types.ClusterDrsFaults `mo:"drsFault"` +} + +func init() { + t["ClusterComputeResource"] = reflect.TypeOf((*ClusterComputeResource)(nil)).Elem() +} + +type ClusterEVCManager struct { + ExtensibleManagedObject + + ManagedCluster types.ManagedObjectReference `mo:"managedCluster"` + EvcState types.ClusterEVCManagerEVCState `mo:"evcState"` +} + +func init() { + t["ClusterEVCManager"] = reflect.TypeOf((*ClusterEVCManager)(nil)).Elem() +} + +type ClusterProfile struct { + Profile +} + +func init() { + t["ClusterProfile"] = reflect.TypeOf((*ClusterProfile)(nil)).Elem() +} + +type ClusterProfileManager struct { + ProfileManager +} + +func init() { + t["ClusterProfileManager"] = reflect.TypeOf((*ClusterProfileManager)(nil)).Elem() +} + +type ComputeResource struct { + ManagedEntity + + ResourcePool *types.ManagedObjectReference `mo:"resourcePool"` + Host []types.ManagedObjectReference `mo:"host"` + Datastore []types.ManagedObjectReference `mo:"datastore"` + Network []types.ManagedObjectReference `mo:"network"` + Summary types.BaseComputeResourceSummary `mo:"summary"` + EnvironmentBrowser *types.ManagedObjectReference `mo:"environmentBrowser"` + ConfigurationEx types.BaseComputeResourceConfigInfo `mo:"configurationEx"` + LifecycleManaged *bool `mo:"lifecycleManaged"` +} + +func (m *ComputeResource) Entity() *ManagedEntity { + return &m.ManagedEntity +} + +func init() { + t["ComputeResource"] = reflect.TypeOf((*ComputeResource)(nil)).Elem() +} + +type ContainerView struct { + ManagedObjectView + + Container types.ManagedObjectReference `mo:"container"` + Type []string `mo:"type"` + Recursive bool `mo:"recursive"` +} + +func init() { + t["ContainerView"] = reflect.TypeOf((*ContainerView)(nil)).Elem() +} + +type CryptoManager struct { + Self types.ManagedObjectReference + + Enabled bool `mo:"enabled"` +} + +func (m CryptoManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["CryptoManager"] = reflect.TypeOf((*CryptoManager)(nil)).Elem() +} + +type CryptoManagerHost struct { + CryptoManager +} + +func init() { + t["CryptoManagerHost"] = reflect.TypeOf((*CryptoManagerHost)(nil)).Elem() +} + +type CryptoManagerHostKMS struct { + CryptoManagerHost +} + +func init() { + t["CryptoManagerHostKMS"] = reflect.TypeOf((*CryptoManagerHostKMS)(nil)).Elem() +} + +type CryptoManagerKmip struct { + CryptoManager + + KmipServers []types.KmipClusterInfo `mo:"kmipServers"` +} + +func init() { + t["CryptoManagerKmip"] = reflect.TypeOf((*CryptoManagerKmip)(nil)).Elem() +} + +type CustomFieldsManager struct { + Self types.ManagedObjectReference + + Field []types.CustomFieldDef `mo:"field"` +} + +func (m CustomFieldsManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["CustomFieldsManager"] = reflect.TypeOf((*CustomFieldsManager)(nil)).Elem() +} + +type CustomizationSpecManager struct { + Self types.ManagedObjectReference + + Info []types.CustomizationSpecInfo `mo:"info"` + EncryptionKey []byte `mo:"encryptionKey"` +} + +func (m CustomizationSpecManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["CustomizationSpecManager"] = reflect.TypeOf((*CustomizationSpecManager)(nil)).Elem() +} + +type Datacenter struct { + ManagedEntity + + VmFolder types.ManagedObjectReference `mo:"vmFolder"` + HostFolder types.ManagedObjectReference `mo:"hostFolder"` + DatastoreFolder types.ManagedObjectReference `mo:"datastoreFolder"` + NetworkFolder types.ManagedObjectReference `mo:"networkFolder"` + Datastore []types.ManagedObjectReference `mo:"datastore"` + Network []types.ManagedObjectReference `mo:"network"` + Configuration types.DatacenterConfigInfo `mo:"configuration"` +} + +func (m *Datacenter) Entity() *ManagedEntity { + return &m.ManagedEntity +} + +func init() { + t["Datacenter"] = reflect.TypeOf((*Datacenter)(nil)).Elem() +} + +type Datastore struct { + ManagedEntity + + Info types.BaseDatastoreInfo `mo:"info"` + Summary types.DatastoreSummary `mo:"summary"` + Host []types.DatastoreHostMount `mo:"host"` + Vm []types.ManagedObjectReference `mo:"vm"` + Browser types.ManagedObjectReference `mo:"browser"` + Capability types.DatastoreCapability `mo:"capability"` + IormConfiguration *types.StorageIORMInfo `mo:"iormConfiguration"` +} + +func (m *Datastore) Entity() *ManagedEntity { + return &m.ManagedEntity +} + +func init() { + t["Datastore"] = reflect.TypeOf((*Datastore)(nil)).Elem() +} + +type DatastoreNamespaceManager struct { + Self types.ManagedObjectReference +} + +func (m DatastoreNamespaceManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["DatastoreNamespaceManager"] = reflect.TypeOf((*DatastoreNamespaceManager)(nil)).Elem() +} + +type DiagnosticManager struct { + Self types.ManagedObjectReference +} + +func (m DiagnosticManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["DiagnosticManager"] = reflect.TypeOf((*DiagnosticManager)(nil)).Elem() +} + +type DistributedVirtualPortgroup struct { + Network + + Key string `mo:"key"` + Config types.DVPortgroupConfigInfo `mo:"config"` + PortKeys []string `mo:"portKeys"` +} + +func init() { + t["DistributedVirtualPortgroup"] = reflect.TypeOf((*DistributedVirtualPortgroup)(nil)).Elem() +} + +type DistributedVirtualSwitch struct { + ManagedEntity + + Uuid string `mo:"uuid"` + Capability types.DVSCapability `mo:"capability"` + Summary types.DVSSummary `mo:"summary"` + Config types.BaseDVSConfigInfo `mo:"config"` + NetworkResourcePool []types.DVSNetworkResourcePool `mo:"networkResourcePool"` + Portgroup []types.ManagedObjectReference `mo:"portgroup"` + Runtime *types.DVSRuntimeInfo `mo:"runtime"` +} + +func (m *DistributedVirtualSwitch) Entity() *ManagedEntity { + return &m.ManagedEntity +} + +func init() { + t["DistributedVirtualSwitch"] = reflect.TypeOf((*DistributedVirtualSwitch)(nil)).Elem() +} + +type DistributedVirtualSwitchManager struct { + Self types.ManagedObjectReference +} + +func (m DistributedVirtualSwitchManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["DistributedVirtualSwitchManager"] = reflect.TypeOf((*DistributedVirtualSwitchManager)(nil)).Elem() +} + +type EnvironmentBrowser struct { + Self types.ManagedObjectReference + + DatastoreBrowser *types.ManagedObjectReference `mo:"datastoreBrowser"` +} + +func (m EnvironmentBrowser) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["EnvironmentBrowser"] = reflect.TypeOf((*EnvironmentBrowser)(nil)).Elem() +} + +type EventHistoryCollector struct { + HistoryCollector + + LatestPage []types.BaseEvent `mo:"latestPage"` +} + +func init() { + t["EventHistoryCollector"] = reflect.TypeOf((*EventHistoryCollector)(nil)).Elem() +} + +type EventManager struct { + Self types.ManagedObjectReference + + Description types.EventDescription `mo:"description"` + LatestEvent types.BaseEvent `mo:"latestEvent"` + MaxCollector int32 `mo:"maxCollector"` +} + +func (m EventManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["EventManager"] = reflect.TypeOf((*EventManager)(nil)).Elem() +} + +type ExtensibleManagedObject struct { + Self types.ManagedObjectReference + + Value []types.BaseCustomFieldValue `mo:"value"` + AvailableField []types.CustomFieldDef `mo:"availableField"` +} + +func (m ExtensibleManagedObject) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["ExtensibleManagedObject"] = reflect.TypeOf((*ExtensibleManagedObject)(nil)).Elem() +} + +type ExtensionManager struct { + Self types.ManagedObjectReference + + ExtensionList []types.Extension `mo:"extensionList"` +} + +func (m ExtensionManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["ExtensionManager"] = reflect.TypeOf((*ExtensionManager)(nil)).Elem() +} + +type FailoverClusterConfigurator struct { + Self types.ManagedObjectReference + + DisabledConfigureMethod []string `mo:"disabledConfigureMethod"` +} + +func (m FailoverClusterConfigurator) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["FailoverClusterConfigurator"] = reflect.TypeOf((*FailoverClusterConfigurator)(nil)).Elem() +} + +type FailoverClusterManager struct { + Self types.ManagedObjectReference + + DisabledClusterMethod []string `mo:"disabledClusterMethod"` +} + +func (m FailoverClusterManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["FailoverClusterManager"] = reflect.TypeOf((*FailoverClusterManager)(nil)).Elem() +} + +type FileManager struct { + Self types.ManagedObjectReference +} + +func (m FileManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["FileManager"] = reflect.TypeOf((*FileManager)(nil)).Elem() +} + +type Folder struct { + ManagedEntity + + ChildType []string `mo:"childType"` + ChildEntity []types.ManagedObjectReference `mo:"childEntity"` + Namespace *string `mo:"namespace"` +} + +func (m *Folder) Entity() *ManagedEntity { + return &m.ManagedEntity +} + +func init() { + t["Folder"] = reflect.TypeOf((*Folder)(nil)).Elem() +} + +type GuestAliasManager struct { + Self types.ManagedObjectReference +} + +func (m GuestAliasManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["GuestAliasManager"] = reflect.TypeOf((*GuestAliasManager)(nil)).Elem() +} + +type GuestAuthManager struct { + Self types.ManagedObjectReference +} + +func (m GuestAuthManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["GuestAuthManager"] = reflect.TypeOf((*GuestAuthManager)(nil)).Elem() +} + +type GuestFileManager struct { + Self types.ManagedObjectReference +} + +func (m GuestFileManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["GuestFileManager"] = reflect.TypeOf((*GuestFileManager)(nil)).Elem() +} + +type GuestOperationsManager struct { + Self types.ManagedObjectReference + + AuthManager *types.ManagedObjectReference `mo:"authManager"` + FileManager *types.ManagedObjectReference `mo:"fileManager"` + ProcessManager *types.ManagedObjectReference `mo:"processManager"` + GuestWindowsRegistryManager *types.ManagedObjectReference `mo:"guestWindowsRegistryManager"` + AliasManager *types.ManagedObjectReference `mo:"aliasManager"` +} + +func (m GuestOperationsManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["GuestOperationsManager"] = reflect.TypeOf((*GuestOperationsManager)(nil)).Elem() +} + +type GuestProcessManager struct { + Self types.ManagedObjectReference +} + +func (m GuestProcessManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["GuestProcessManager"] = reflect.TypeOf((*GuestProcessManager)(nil)).Elem() +} + +type GuestWindowsRegistryManager struct { + Self types.ManagedObjectReference +} + +func (m GuestWindowsRegistryManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["GuestWindowsRegistryManager"] = reflect.TypeOf((*GuestWindowsRegistryManager)(nil)).Elem() +} + +type HealthUpdateManager struct { + Self types.ManagedObjectReference +} + +func (m HealthUpdateManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HealthUpdateManager"] = reflect.TypeOf((*HealthUpdateManager)(nil)).Elem() +} + +type HistoryCollector struct { + Self types.ManagedObjectReference + + Filter types.AnyType `mo:"filter"` +} + +func (m HistoryCollector) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HistoryCollector"] = reflect.TypeOf((*HistoryCollector)(nil)).Elem() +} + +type HostAccessManager struct { + Self types.ManagedObjectReference + + LockdownMode types.HostLockdownMode `mo:"lockdownMode"` +} + +func (m HostAccessManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostAccessManager"] = reflect.TypeOf((*HostAccessManager)(nil)).Elem() +} + +type HostActiveDirectoryAuthentication struct { + HostDirectoryStore +} + +func init() { + t["HostActiveDirectoryAuthentication"] = reflect.TypeOf((*HostActiveDirectoryAuthentication)(nil)).Elem() +} + +type HostAssignableHardwareManager struct { + Self types.ManagedObjectReference + + Binding []types.HostAssignableHardwareBinding `mo:"binding"` + Config types.HostAssignableHardwareConfig `mo:"config"` +} + +func (m HostAssignableHardwareManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostAssignableHardwareManager"] = reflect.TypeOf((*HostAssignableHardwareManager)(nil)).Elem() +} + +type HostAuthenticationManager struct { + Self types.ManagedObjectReference + + Info types.HostAuthenticationManagerInfo `mo:"info"` + SupportedStore []types.ManagedObjectReference `mo:"supportedStore"` +} + +func (m HostAuthenticationManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostAuthenticationManager"] = reflect.TypeOf((*HostAuthenticationManager)(nil)).Elem() +} + +type HostAuthenticationStore struct { + Self types.ManagedObjectReference + + Info types.BaseHostAuthenticationStoreInfo `mo:"info"` +} + +func (m HostAuthenticationStore) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostAuthenticationStore"] = reflect.TypeOf((*HostAuthenticationStore)(nil)).Elem() +} + +type HostAutoStartManager struct { + Self types.ManagedObjectReference + + Config types.HostAutoStartManagerConfig `mo:"config"` +} + +func (m HostAutoStartManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostAutoStartManager"] = reflect.TypeOf((*HostAutoStartManager)(nil)).Elem() +} + +type HostBootDeviceSystem struct { + Self types.ManagedObjectReference +} + +func (m HostBootDeviceSystem) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostBootDeviceSystem"] = reflect.TypeOf((*HostBootDeviceSystem)(nil)).Elem() +} + +type HostCacheConfigurationManager struct { + Self types.ManagedObjectReference + + CacheConfigurationInfo []types.HostCacheConfigurationInfo `mo:"cacheConfigurationInfo"` +} + +func (m HostCacheConfigurationManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostCacheConfigurationManager"] = reflect.TypeOf((*HostCacheConfigurationManager)(nil)).Elem() +} + +type HostCertificateManager struct { + Self types.ManagedObjectReference + + CertificateInfo types.HostCertificateManagerCertificateInfo `mo:"certificateInfo"` +} + +func (m HostCertificateManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostCertificateManager"] = reflect.TypeOf((*HostCertificateManager)(nil)).Elem() +} + +type HostCpuSchedulerSystem struct { + ExtensibleManagedObject + + HyperthreadInfo *types.HostHyperThreadScheduleInfo `mo:"hyperthreadInfo"` +} + +func init() { + t["HostCpuSchedulerSystem"] = reflect.TypeOf((*HostCpuSchedulerSystem)(nil)).Elem() +} + +type HostDatastoreBrowser struct { + Self types.ManagedObjectReference + + Datastore []types.ManagedObjectReference `mo:"datastore"` + SupportedType []types.BaseFileQuery `mo:"supportedType"` +} + +func (m HostDatastoreBrowser) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostDatastoreBrowser"] = reflect.TypeOf((*HostDatastoreBrowser)(nil)).Elem() +} + +type HostDatastoreSystem struct { + Self types.ManagedObjectReference + + Datastore []types.ManagedObjectReference `mo:"datastore"` + Capabilities types.HostDatastoreSystemCapabilities `mo:"capabilities"` +} + +func (m HostDatastoreSystem) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostDatastoreSystem"] = reflect.TypeOf((*HostDatastoreSystem)(nil)).Elem() +} + +type HostDateTimeSystem struct { + Self types.ManagedObjectReference + + DateTimeInfo types.HostDateTimeInfo `mo:"dateTimeInfo"` +} + +func (m HostDateTimeSystem) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostDateTimeSystem"] = reflect.TypeOf((*HostDateTimeSystem)(nil)).Elem() +} + +type HostDiagnosticSystem struct { + Self types.ManagedObjectReference + + ActivePartition *types.HostDiagnosticPartition `mo:"activePartition"` +} + +func (m HostDiagnosticSystem) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostDiagnosticSystem"] = reflect.TypeOf((*HostDiagnosticSystem)(nil)).Elem() +} + +type HostDirectoryStore struct { + HostAuthenticationStore +} + +func init() { + t["HostDirectoryStore"] = reflect.TypeOf((*HostDirectoryStore)(nil)).Elem() +} + +type HostEsxAgentHostManager struct { + Self types.ManagedObjectReference + + ConfigInfo types.HostEsxAgentHostManagerConfigInfo `mo:"configInfo"` +} + +func (m HostEsxAgentHostManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostEsxAgentHostManager"] = reflect.TypeOf((*HostEsxAgentHostManager)(nil)).Elem() +} + +type HostFirewallSystem struct { + ExtensibleManagedObject + + FirewallInfo *types.HostFirewallInfo `mo:"firewallInfo"` +} + +func init() { + t["HostFirewallSystem"] = reflect.TypeOf((*HostFirewallSystem)(nil)).Elem() +} + +type HostFirmwareSystem struct { + Self types.ManagedObjectReference +} + +func (m HostFirmwareSystem) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostFirmwareSystem"] = reflect.TypeOf((*HostFirmwareSystem)(nil)).Elem() +} + +type HostGraphicsManager struct { + ExtensibleManagedObject + + GraphicsInfo []types.HostGraphicsInfo `mo:"graphicsInfo"` + GraphicsConfig *types.HostGraphicsConfig `mo:"graphicsConfig"` + SharedPassthruGpuTypes []string `mo:"sharedPassthruGpuTypes"` + SharedGpuCapabilities []types.HostSharedGpuCapabilities `mo:"sharedGpuCapabilities"` +} + +func init() { + t["HostGraphicsManager"] = reflect.TypeOf((*HostGraphicsManager)(nil)).Elem() +} + +type HostHealthStatusSystem struct { + Self types.ManagedObjectReference + + Runtime types.HealthSystemRuntime `mo:"runtime"` +} + +func (m HostHealthStatusSystem) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostHealthStatusSystem"] = reflect.TypeOf((*HostHealthStatusSystem)(nil)).Elem() +} + +type HostImageConfigManager struct { + Self types.ManagedObjectReference +} + +func (m HostImageConfigManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostImageConfigManager"] = reflect.TypeOf((*HostImageConfigManager)(nil)).Elem() +} + +type HostKernelModuleSystem struct { + Self types.ManagedObjectReference +} + +func (m HostKernelModuleSystem) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostKernelModuleSystem"] = reflect.TypeOf((*HostKernelModuleSystem)(nil)).Elem() +} + +type HostLocalAccountManager struct { + Self types.ManagedObjectReference +} + +func (m HostLocalAccountManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostLocalAccountManager"] = reflect.TypeOf((*HostLocalAccountManager)(nil)).Elem() +} + +type HostLocalAuthentication struct { + HostAuthenticationStore +} + +func init() { + t["HostLocalAuthentication"] = reflect.TypeOf((*HostLocalAuthentication)(nil)).Elem() +} + +type HostMemorySystem struct { + ExtensibleManagedObject + + ConsoleReservationInfo *types.ServiceConsoleReservationInfo `mo:"consoleReservationInfo"` + VirtualMachineReservationInfo *types.VirtualMachineMemoryReservationInfo `mo:"virtualMachineReservationInfo"` +} + +func init() { + t["HostMemorySystem"] = reflect.TypeOf((*HostMemorySystem)(nil)).Elem() +} + +type HostNetworkSystem struct { + ExtensibleManagedObject + + Capabilities *types.HostNetCapabilities `mo:"capabilities"` + NetworkInfo *types.HostNetworkInfo `mo:"networkInfo"` + OffloadCapabilities *types.HostNetOffloadCapabilities `mo:"offloadCapabilities"` + NetworkConfig *types.HostNetworkConfig `mo:"networkConfig"` + DnsConfig types.BaseHostDnsConfig `mo:"dnsConfig"` + IpRouteConfig types.BaseHostIpRouteConfig `mo:"ipRouteConfig"` + ConsoleIpRouteConfig types.BaseHostIpRouteConfig `mo:"consoleIpRouteConfig"` +} + +func init() { + t["HostNetworkSystem"] = reflect.TypeOf((*HostNetworkSystem)(nil)).Elem() +} + +type HostNvdimmSystem struct { + Self types.ManagedObjectReference + + NvdimmSystemInfo types.NvdimmSystemInfo `mo:"nvdimmSystemInfo"` +} + +func (m HostNvdimmSystem) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostNvdimmSystem"] = reflect.TypeOf((*HostNvdimmSystem)(nil)).Elem() +} + +type HostPatchManager struct { + Self types.ManagedObjectReference +} + +func (m HostPatchManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostPatchManager"] = reflect.TypeOf((*HostPatchManager)(nil)).Elem() +} + +type HostPciPassthruSystem struct { + ExtensibleManagedObject + + PciPassthruInfo []types.BaseHostPciPassthruInfo `mo:"pciPassthruInfo"` + SriovDevicePoolInfo []types.BaseHostSriovDevicePoolInfo `mo:"sriovDevicePoolInfo"` +} + +func init() { + t["HostPciPassthruSystem"] = reflect.TypeOf((*HostPciPassthruSystem)(nil)).Elem() +} + +type HostPowerSystem struct { + Self types.ManagedObjectReference + + Capability types.PowerSystemCapability `mo:"capability"` + Info types.PowerSystemInfo `mo:"info"` +} + +func (m HostPowerSystem) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostPowerSystem"] = reflect.TypeOf((*HostPowerSystem)(nil)).Elem() +} + +type HostProfile struct { + Profile + + ValidationState *string `mo:"validationState"` + ValidationStateUpdateTime *time.Time `mo:"validationStateUpdateTime"` + ValidationFailureInfo *types.HostProfileValidationFailureInfo `mo:"validationFailureInfo"` + ReferenceHost *types.ManagedObjectReference `mo:"referenceHost"` +} + +func init() { + t["HostProfile"] = reflect.TypeOf((*HostProfile)(nil)).Elem() +} + +type HostProfileManager struct { + ProfileManager +} + +func init() { + t["HostProfileManager"] = reflect.TypeOf((*HostProfileManager)(nil)).Elem() +} + +type HostServiceSystem struct { + ExtensibleManagedObject + + ServiceInfo types.HostServiceInfo `mo:"serviceInfo"` +} + +func init() { + t["HostServiceSystem"] = reflect.TypeOf((*HostServiceSystem)(nil)).Elem() +} + +type HostSnmpSystem struct { + Self types.ManagedObjectReference + + Configuration types.HostSnmpConfigSpec `mo:"configuration"` + Limits types.HostSnmpSystemAgentLimits `mo:"limits"` +} + +func (m HostSnmpSystem) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostSnmpSystem"] = reflect.TypeOf((*HostSnmpSystem)(nil)).Elem() +} + +type HostSpecificationManager struct { + Self types.ManagedObjectReference +} + +func (m HostSpecificationManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostSpecificationManager"] = reflect.TypeOf((*HostSpecificationManager)(nil)).Elem() +} + +type HostStorageSystem struct { + ExtensibleManagedObject + + StorageDeviceInfo *types.HostStorageDeviceInfo `mo:"storageDeviceInfo"` + FileSystemVolumeInfo types.HostFileSystemVolumeInfo `mo:"fileSystemVolumeInfo"` + SystemFile []string `mo:"systemFile"` + MultipathStateInfo *types.HostMultipathStateInfo `mo:"multipathStateInfo"` +} + +func init() { + t["HostStorageSystem"] = reflect.TypeOf((*HostStorageSystem)(nil)).Elem() +} + +type HostSystem struct { + ManagedEntity + + Runtime types.HostRuntimeInfo `mo:"runtime"` + Summary types.HostListSummary `mo:"summary"` + Hardware *types.HostHardwareInfo `mo:"hardware"` + Capability *types.HostCapability `mo:"capability"` + LicensableResource types.HostLicensableResourceInfo `mo:"licensableResource"` + RemediationState *types.HostSystemRemediationState `mo:"remediationState"` + PrecheckRemediationResult *types.ApplyHostProfileConfigurationSpec `mo:"precheckRemediationResult"` + RemediationResult *types.ApplyHostProfileConfigurationResult `mo:"remediationResult"` + ComplianceCheckState *types.HostSystemComplianceCheckState `mo:"complianceCheckState"` + ComplianceCheckResult *types.ComplianceResult `mo:"complianceCheckResult"` + ConfigManager types.HostConfigManager `mo:"configManager"` + Config *types.HostConfigInfo `mo:"config"` + Vm []types.ManagedObjectReference `mo:"vm"` + Datastore []types.ManagedObjectReference `mo:"datastore"` + Network []types.ManagedObjectReference `mo:"network"` + DatastoreBrowser types.ManagedObjectReference `mo:"datastoreBrowser"` + SystemResources *types.HostSystemResourceInfo `mo:"systemResources"` + AnswerFileValidationState *types.AnswerFileStatusResult `mo:"answerFileValidationState"` + AnswerFileValidationResult *types.AnswerFileStatusResult `mo:"answerFileValidationResult"` +} + +func (m *HostSystem) Entity() *ManagedEntity { + return &m.ManagedEntity +} + +func init() { + t["HostSystem"] = reflect.TypeOf((*HostSystem)(nil)).Elem() +} + +type HostVFlashManager struct { + Self types.ManagedObjectReference + + VFlashConfigInfo *types.HostVFlashManagerVFlashConfigInfo `mo:"vFlashConfigInfo"` +} + +func (m HostVFlashManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostVFlashManager"] = reflect.TypeOf((*HostVFlashManager)(nil)).Elem() +} + +type HostVMotionSystem struct { + ExtensibleManagedObject + + NetConfig *types.HostVMotionNetConfig `mo:"netConfig"` + IpConfig *types.HostIpConfig `mo:"ipConfig"` +} + +func init() { + t["HostVMotionSystem"] = reflect.TypeOf((*HostVMotionSystem)(nil)).Elem() +} + +type HostVStorageObjectManager struct { + VStorageObjectManagerBase +} + +func init() { + t["HostVStorageObjectManager"] = reflect.TypeOf((*HostVStorageObjectManager)(nil)).Elem() +} + +type HostVirtualNicManager struct { + ExtensibleManagedObject + + Info types.HostVirtualNicManagerInfo `mo:"info"` +} + +func init() { + t["HostVirtualNicManager"] = reflect.TypeOf((*HostVirtualNicManager)(nil)).Elem() +} + +type HostVsanInternalSystem struct { + Self types.ManagedObjectReference +} + +func (m HostVsanInternalSystem) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostVsanInternalSystem"] = reflect.TypeOf((*HostVsanInternalSystem)(nil)).Elem() +} + +type HostVsanSystem struct { + Self types.ManagedObjectReference + + Config types.VsanHostConfigInfo `mo:"config"` +} + +func (m HostVsanSystem) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HostVsanSystem"] = reflect.TypeOf((*HostVsanSystem)(nil)).Elem() +} + +type HttpNfcLease struct { + Self types.ManagedObjectReference + + InitializeProgress int32 `mo:"initializeProgress"` + TransferProgress int32 `mo:"transferProgress"` + Mode string `mo:"mode"` + Capabilities types.HttpNfcLeaseCapabilities `mo:"capabilities"` + Info *types.HttpNfcLeaseInfo `mo:"info"` + State types.HttpNfcLeaseState `mo:"state"` + Error *types.LocalizedMethodFault `mo:"error"` +} + +func (m HttpNfcLease) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["HttpNfcLease"] = reflect.TypeOf((*HttpNfcLease)(nil)).Elem() +} + +type InventoryView struct { + ManagedObjectView +} + +func init() { + t["InventoryView"] = reflect.TypeOf((*InventoryView)(nil)).Elem() +} + +type IoFilterManager struct { + Self types.ManagedObjectReference +} + +func (m IoFilterManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["IoFilterManager"] = reflect.TypeOf((*IoFilterManager)(nil)).Elem() +} + +type IpPoolManager struct { + Self types.ManagedObjectReference +} + +func (m IpPoolManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["IpPoolManager"] = reflect.TypeOf((*IpPoolManager)(nil)).Elem() +} + +type IscsiManager struct { + Self types.ManagedObjectReference +} + +func (m IscsiManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["IscsiManager"] = reflect.TypeOf((*IscsiManager)(nil)).Elem() +} + +type LicenseAssignmentManager struct { + Self types.ManagedObjectReference +} + +func (m LicenseAssignmentManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["LicenseAssignmentManager"] = reflect.TypeOf((*LicenseAssignmentManager)(nil)).Elem() +} + +type LicenseManager struct { + Self types.ManagedObjectReference + + Source types.BaseLicenseSource `mo:"source"` + SourceAvailable bool `mo:"sourceAvailable"` + Diagnostics *types.LicenseDiagnostics `mo:"diagnostics"` + FeatureInfo []types.LicenseFeatureInfo `mo:"featureInfo"` + LicensedEdition string `mo:"licensedEdition"` + Licenses []types.LicenseManagerLicenseInfo `mo:"licenses"` + LicenseAssignmentManager *types.ManagedObjectReference `mo:"licenseAssignmentManager"` + Evaluation types.LicenseManagerEvaluationInfo `mo:"evaluation"` +} + +func (m LicenseManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["LicenseManager"] = reflect.TypeOf((*LicenseManager)(nil)).Elem() +} + +type ListView struct { + ManagedObjectView +} + +func init() { + t["ListView"] = reflect.TypeOf((*ListView)(nil)).Elem() +} + +type LocalizationManager struct { + Self types.ManagedObjectReference + + Catalog []types.LocalizationManagerMessageCatalog `mo:"catalog"` +} + +func (m LocalizationManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["LocalizationManager"] = reflect.TypeOf((*LocalizationManager)(nil)).Elem() +} + +type ManagedEntity struct { + ExtensibleManagedObject + + Parent *types.ManagedObjectReference `mo:"parent"` + CustomValue []types.BaseCustomFieldValue `mo:"customValue"` + OverallStatus types.ManagedEntityStatus `mo:"overallStatus"` + ConfigStatus types.ManagedEntityStatus `mo:"configStatus"` + ConfigIssue []types.BaseEvent `mo:"configIssue"` + EffectiveRole []int32 `mo:"effectiveRole"` + Permission []types.Permission `mo:"permission"` + Name string `mo:"name"` + DisabledMethod []string `mo:"disabledMethod"` + RecentTask []types.ManagedObjectReference `mo:"recentTask"` + DeclaredAlarmState []types.AlarmState `mo:"declaredAlarmState"` + TriggeredAlarmState []types.AlarmState `mo:"triggeredAlarmState"` + AlarmActionsEnabled *bool `mo:"alarmActionsEnabled"` + Tag []types.Tag `mo:"tag"` +} + +func init() { + t["ManagedEntity"] = reflect.TypeOf((*ManagedEntity)(nil)).Elem() +} + +type ManagedObjectView struct { + Self types.ManagedObjectReference + + View []types.ManagedObjectReference `mo:"view"` +} + +func (m ManagedObjectView) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["ManagedObjectView"] = reflect.TypeOf((*ManagedObjectView)(nil)).Elem() +} + +type MessageBusProxy struct { + Self types.ManagedObjectReference +} + +func (m MessageBusProxy) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["MessageBusProxy"] = reflect.TypeOf((*MessageBusProxy)(nil)).Elem() +} + +type Network struct { + ManagedEntity + + Summary types.BaseNetworkSummary `mo:"summary"` + Host []types.ManagedObjectReference `mo:"host"` + Vm []types.ManagedObjectReference `mo:"vm"` + Name string `mo:"name"` +} + +func (m *Network) Entity() *ManagedEntity { + return &m.ManagedEntity +} + +func init() { + t["Network"] = reflect.TypeOf((*Network)(nil)).Elem() +} + +type OpaqueNetwork struct { + Network + + Capability *types.OpaqueNetworkCapability `mo:"capability"` + ExtraConfig []types.BaseOptionValue `mo:"extraConfig"` +} + +func init() { + t["OpaqueNetwork"] = reflect.TypeOf((*OpaqueNetwork)(nil)).Elem() +} + +type OptionManager struct { + Self types.ManagedObjectReference + + SupportedOption []types.OptionDef `mo:"supportedOption"` + Setting []types.BaseOptionValue `mo:"setting"` +} + +func (m OptionManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["OptionManager"] = reflect.TypeOf((*OptionManager)(nil)).Elem() +} + +type OverheadMemoryManager struct { + Self types.ManagedObjectReference +} + +func (m OverheadMemoryManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["OverheadMemoryManager"] = reflect.TypeOf((*OverheadMemoryManager)(nil)).Elem() +} + +type OvfManager struct { + Self types.ManagedObjectReference + + OvfImportOption []types.OvfOptionInfo `mo:"ovfImportOption"` + OvfExportOption []types.OvfOptionInfo `mo:"ovfExportOption"` +} + +func (m OvfManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["OvfManager"] = reflect.TypeOf((*OvfManager)(nil)).Elem() +} + +type PerformanceManager struct { + Self types.ManagedObjectReference + + Description types.PerformanceDescription `mo:"description"` + HistoricalInterval []types.PerfInterval `mo:"historicalInterval"` + PerfCounter []types.PerfCounterInfo `mo:"perfCounter"` +} + +func (m PerformanceManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["PerformanceManager"] = reflect.TypeOf((*PerformanceManager)(nil)).Elem() +} + +type Profile struct { + Self types.ManagedObjectReference + + Config types.BaseProfileConfigInfo `mo:"config"` + Description *types.ProfileDescription `mo:"description"` + Name string `mo:"name"` + CreatedTime time.Time `mo:"createdTime"` + ModifiedTime time.Time `mo:"modifiedTime"` + Entity []types.ManagedObjectReference `mo:"entity"` + ComplianceStatus string `mo:"complianceStatus"` +} + +func (m Profile) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["Profile"] = reflect.TypeOf((*Profile)(nil)).Elem() +} + +type ProfileComplianceManager struct { + Self types.ManagedObjectReference +} + +func (m ProfileComplianceManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["ProfileComplianceManager"] = reflect.TypeOf((*ProfileComplianceManager)(nil)).Elem() +} + +type ProfileManager struct { + Self types.ManagedObjectReference + + Profile []types.ManagedObjectReference `mo:"profile"` +} + +func (m ProfileManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["ProfileManager"] = reflect.TypeOf((*ProfileManager)(nil)).Elem() +} + +type PropertyCollector struct { + Self types.ManagedObjectReference + + Filter []types.ManagedObjectReference `mo:"filter"` +} + +func (m PropertyCollector) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["PropertyCollector"] = reflect.TypeOf((*PropertyCollector)(nil)).Elem() +} + +type PropertyFilter struct { + Self types.ManagedObjectReference + + Spec types.PropertyFilterSpec `mo:"spec"` + PartialUpdates bool `mo:"partialUpdates"` +} + +func (m PropertyFilter) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["PropertyFilter"] = reflect.TypeOf((*PropertyFilter)(nil)).Elem() +} + +type ResourcePlanningManager struct { + Self types.ManagedObjectReference +} + +func (m ResourcePlanningManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["ResourcePlanningManager"] = reflect.TypeOf((*ResourcePlanningManager)(nil)).Elem() +} + +type ResourcePool struct { + ManagedEntity + + Summary types.BaseResourcePoolSummary `mo:"summary"` + Runtime types.ResourcePoolRuntimeInfo `mo:"runtime"` + Owner types.ManagedObjectReference `mo:"owner"` + ResourcePool []types.ManagedObjectReference `mo:"resourcePool"` + Vm []types.ManagedObjectReference `mo:"vm"` + Config types.ResourceConfigSpec `mo:"config"` + Namespace *string `mo:"namespace"` + ChildConfiguration []types.ResourceConfigSpec `mo:"childConfiguration"` +} + +func (m *ResourcePool) Entity() *ManagedEntity { + return &m.ManagedEntity +} + +func init() { + t["ResourcePool"] = reflect.TypeOf((*ResourcePool)(nil)).Elem() +} + +type ScheduledTask struct { + ExtensibleManagedObject + + Info types.ScheduledTaskInfo `mo:"info"` +} + +func init() { + t["ScheduledTask"] = reflect.TypeOf((*ScheduledTask)(nil)).Elem() +} + +type ScheduledTaskManager struct { + Self types.ManagedObjectReference + + ScheduledTask []types.ManagedObjectReference `mo:"scheduledTask"` + Description types.ScheduledTaskDescription `mo:"description"` +} + +func (m ScheduledTaskManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["ScheduledTaskManager"] = reflect.TypeOf((*ScheduledTaskManager)(nil)).Elem() +} + +type SearchIndex struct { + Self types.ManagedObjectReference +} + +func (m SearchIndex) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["SearchIndex"] = reflect.TypeOf((*SearchIndex)(nil)).Elem() +} + +type ServiceInstance struct { + Self types.ManagedObjectReference + + ServerClock time.Time `mo:"serverClock"` + Capability types.Capability `mo:"capability"` + Content types.ServiceContent `mo:"content"` +} + +func (m ServiceInstance) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["ServiceInstance"] = reflect.TypeOf((*ServiceInstance)(nil)).Elem() +} + +type ServiceManager struct { + Self types.ManagedObjectReference + + Service []types.ServiceManagerServiceInfo `mo:"service"` +} + +func (m ServiceManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["ServiceManager"] = reflect.TypeOf((*ServiceManager)(nil)).Elem() +} + +type SessionManager struct { + Self types.ManagedObjectReference + + SessionList []types.UserSession `mo:"sessionList"` + CurrentSession *types.UserSession `mo:"currentSession"` + Message *string `mo:"message"` + MessageLocaleList []string `mo:"messageLocaleList"` + SupportedLocaleList []string `mo:"supportedLocaleList"` + DefaultLocale string `mo:"defaultLocale"` +} + +func (m SessionManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["SessionManager"] = reflect.TypeOf((*SessionManager)(nil)).Elem() +} + +type SimpleCommand struct { + Self types.ManagedObjectReference + + EncodingType types.SimpleCommandEncoding `mo:"encodingType"` + Entity types.ServiceManagerServiceInfo `mo:"entity"` +} + +func (m SimpleCommand) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["SimpleCommand"] = reflect.TypeOf((*SimpleCommand)(nil)).Elem() +} + +type SiteInfoManager struct { + Self types.ManagedObjectReference +} + +func (m SiteInfoManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["SiteInfoManager"] = reflect.TypeOf((*SiteInfoManager)(nil)).Elem() +} + +type StoragePod struct { + Folder + + Summary *types.StoragePodSummary `mo:"summary"` + PodStorageDrsEntry *types.PodStorageDrsEntry `mo:"podStorageDrsEntry"` +} + +func init() { + t["StoragePod"] = reflect.TypeOf((*StoragePod)(nil)).Elem() +} + +type StorageQueryManager struct { + Self types.ManagedObjectReference +} + +func (m StorageQueryManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["StorageQueryManager"] = reflect.TypeOf((*StorageQueryManager)(nil)).Elem() +} + +type StorageResourceManager struct { + Self types.ManagedObjectReference +} + +func (m StorageResourceManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["StorageResourceManager"] = reflect.TypeOf((*StorageResourceManager)(nil)).Elem() +} + +type Task struct { + ExtensibleManagedObject + + Info types.TaskInfo `mo:"info"` +} + +func init() { + t["Task"] = reflect.TypeOf((*Task)(nil)).Elem() +} + +type TaskHistoryCollector struct { + HistoryCollector + + LatestPage []types.TaskInfo `mo:"latestPage"` +} + +func init() { + t["TaskHistoryCollector"] = reflect.TypeOf((*TaskHistoryCollector)(nil)).Elem() +} + +type TaskManager struct { + Self types.ManagedObjectReference + + RecentTask []types.ManagedObjectReference `mo:"recentTask"` + Description types.TaskDescription `mo:"description"` + MaxCollector int32 `mo:"maxCollector"` +} + +func (m TaskManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["TaskManager"] = reflect.TypeOf((*TaskManager)(nil)).Elem() +} + +type TenantTenantManager struct { + Self types.ManagedObjectReference +} + +func (m TenantTenantManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["TenantTenantManager"] = reflect.TypeOf((*TenantTenantManager)(nil)).Elem() +} + +type UserDirectory struct { + Self types.ManagedObjectReference + + DomainList []string `mo:"domainList"` +} + +func (m UserDirectory) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["UserDirectory"] = reflect.TypeOf((*UserDirectory)(nil)).Elem() +} + +type VStorageObjectManagerBase struct { + Self types.ManagedObjectReference +} + +func (m VStorageObjectManagerBase) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["VStorageObjectManagerBase"] = reflect.TypeOf((*VStorageObjectManagerBase)(nil)).Elem() +} + +type VcenterVStorageObjectManager struct { + VStorageObjectManagerBase +} + +func init() { + t["VcenterVStorageObjectManager"] = reflect.TypeOf((*VcenterVStorageObjectManager)(nil)).Elem() +} + +type View struct { + Self types.ManagedObjectReference +} + +func (m View) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["View"] = reflect.TypeOf((*View)(nil)).Elem() +} + +type ViewManager struct { + Self types.ManagedObjectReference + + ViewList []types.ManagedObjectReference `mo:"viewList"` +} + +func (m ViewManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["ViewManager"] = reflect.TypeOf((*ViewManager)(nil)).Elem() +} + +type VirtualApp struct { + ResourcePool + + ParentFolder *types.ManagedObjectReference `mo:"parentFolder"` + Datastore []types.ManagedObjectReference `mo:"datastore"` + Network []types.ManagedObjectReference `mo:"network"` + VAppConfig *types.VAppConfigInfo `mo:"vAppConfig"` + ParentVApp *types.ManagedObjectReference `mo:"parentVApp"` + ChildLink []types.VirtualAppLinkInfo `mo:"childLink"` +} + +func init() { + t["VirtualApp"] = reflect.TypeOf((*VirtualApp)(nil)).Elem() +} + +type VirtualDiskManager struct { + Self types.ManagedObjectReference +} + +func (m VirtualDiskManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["VirtualDiskManager"] = reflect.TypeOf((*VirtualDiskManager)(nil)).Elem() +} + +type VirtualMachine struct { + ManagedEntity + + Capability types.VirtualMachineCapability `mo:"capability"` + Config *types.VirtualMachineConfigInfo `mo:"config"` + Layout *types.VirtualMachineFileLayout `mo:"layout"` + LayoutEx *types.VirtualMachineFileLayoutEx `mo:"layoutEx"` + Storage *types.VirtualMachineStorageInfo `mo:"storage"` + EnvironmentBrowser types.ManagedObjectReference `mo:"environmentBrowser"` + ResourcePool *types.ManagedObjectReference `mo:"resourcePool"` + ParentVApp *types.ManagedObjectReference `mo:"parentVApp"` + ResourceConfig *types.ResourceConfigSpec `mo:"resourceConfig"` + Runtime types.VirtualMachineRuntimeInfo `mo:"runtime"` + Guest *types.GuestInfo `mo:"guest"` + Summary types.VirtualMachineSummary `mo:"summary"` + Datastore []types.ManagedObjectReference `mo:"datastore"` + Network []types.ManagedObjectReference `mo:"network"` + Snapshot *types.VirtualMachineSnapshotInfo `mo:"snapshot"` + RootSnapshot []types.ManagedObjectReference `mo:"rootSnapshot"` + GuestHeartbeatStatus types.ManagedEntityStatus `mo:"guestHeartbeatStatus"` +} + +func (m *VirtualMachine) Entity() *ManagedEntity { + return &m.ManagedEntity +} + +func init() { + t["VirtualMachine"] = reflect.TypeOf((*VirtualMachine)(nil)).Elem() +} + +type VirtualMachineCompatibilityChecker struct { + Self types.ManagedObjectReference +} + +func (m VirtualMachineCompatibilityChecker) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["VirtualMachineCompatibilityChecker"] = reflect.TypeOf((*VirtualMachineCompatibilityChecker)(nil)).Elem() +} + +type VirtualMachineGuestCustomizationManager struct { + Self types.ManagedObjectReference +} + +func (m VirtualMachineGuestCustomizationManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["VirtualMachineGuestCustomizationManager"] = reflect.TypeOf((*VirtualMachineGuestCustomizationManager)(nil)).Elem() +} + +type VirtualMachineProvisioningChecker struct { + Self types.ManagedObjectReference +} + +func (m VirtualMachineProvisioningChecker) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["VirtualMachineProvisioningChecker"] = reflect.TypeOf((*VirtualMachineProvisioningChecker)(nil)).Elem() +} + +type VirtualMachineSnapshot struct { + ExtensibleManagedObject + + Config types.VirtualMachineConfigInfo `mo:"config"` + ChildSnapshot []types.ManagedObjectReference `mo:"childSnapshot"` + Vm types.ManagedObjectReference `mo:"vm"` +} + +func init() { + t["VirtualMachineSnapshot"] = reflect.TypeOf((*VirtualMachineSnapshot)(nil)).Elem() +} + +type VirtualizationManager struct { + Self types.ManagedObjectReference +} + +func (m VirtualizationManager) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["VirtualizationManager"] = reflect.TypeOf((*VirtualizationManager)(nil)).Elem() +} + +type VmwareDistributedVirtualSwitch struct { + DistributedVirtualSwitch +} + +func init() { + t["VmwareDistributedVirtualSwitch"] = reflect.TypeOf((*VmwareDistributedVirtualSwitch)(nil)).Elem() +} + +type VsanUpgradeSystem struct { + Self types.ManagedObjectReference +} + +func (m VsanUpgradeSystem) Reference() types.ManagedObjectReference { + return m.Self +} + +func init() { + t["VsanUpgradeSystem"] = reflect.TypeOf((*VsanUpgradeSystem)(nil)).Elem() +} diff --git a/vendor/github.com/vmware/govmomi/vim25/mo/reference.go b/vendor/github.com/vmware/govmomi/vim25/mo/reference.go new file mode 100644 index 0000000..465edbe --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/mo/reference.go @@ -0,0 +1,26 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package mo + +import "github.com/vmware/govmomi/vim25/types" + +// Reference is the interface that is implemented by all the managed objects +// defined in this package. It specifies that these managed objects have a +// function that returns the managed object reference to themselves. +type Reference interface { + Reference() types.ManagedObjectReference +} diff --git a/vendor/github.com/vmware/govmomi/vim25/mo/registry.go b/vendor/github.com/vmware/govmomi/vim25/mo/registry.go new file mode 100644 index 0000000..deacf50 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/mo/registry.go @@ -0,0 +1,21 @@ +/* +Copyright (c) 2014 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package mo + +import "reflect" + +var t = map[string]reflect.Type{} diff --git a/vendor/github.com/vmware/govmomi/vim25/mo/retrieve.go b/vendor/github.com/vmware/govmomi/vim25/mo/retrieve.go new file mode 100644 index 0000000..e877da0 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/mo/retrieve.go @@ -0,0 +1,255 @@ +/* +Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package mo + +import ( + "context" + "reflect" + + "github.com/vmware/govmomi/vim25/methods" + "github.com/vmware/govmomi/vim25/soap" + "github.com/vmware/govmomi/vim25/types" +) + +func ignoreMissingProperty(ref types.ManagedObjectReference, p types.MissingProperty) bool { + switch ref.Type { + case "VirtualMachine": + switch p.Path { + case "environmentBrowser": + // See https://github.com/vmware/govmomi/pull/242 + return true + case "alarmActionsEnabled": + // Seen with vApp child VM + return true + } + } + + return false +} + +// ObjectContentToType loads an ObjectContent value into the value it +// represents. If the ObjectContent value has a non-empty 'MissingSet' field, +// it returns the first fault it finds there as error. If the 'MissingSet' +// field is empty, it returns a pointer to a reflect.Value. It handles contain +// nested properties, such as 'guest.ipAddress' or 'config.hardware'. +func ObjectContentToType(o types.ObjectContent, ptr ...bool) (interface{}, error) { + // Expect no properties in the missing set + for _, p := range o.MissingSet { + if ignoreMissingProperty(o.Obj, p) { + continue + } + + return nil, soap.WrapVimFault(p.Fault.Fault) + } + + ti := typeInfoForType(o.Obj.Type) + v, err := ti.LoadFromObjectContent(o) + if err != nil { + return nil, err + } + + if len(ptr) == 1 && ptr[0] { + return v.Interface(), nil + } + return v.Elem().Interface(), nil +} + +// ApplyPropertyChange converts the response of a call to WaitForUpdates +// and applies it to the given managed object. +func ApplyPropertyChange(obj Reference, changes []types.PropertyChange) { + t := typeInfoForType(obj.Reference().Type) + v := reflect.ValueOf(obj) + + for _, p := range changes { + rv, ok := t.props[p.Name] + if !ok { + continue + } + + assignValue(v, rv, reflect.ValueOf(p.Val)) + } +} + +// LoadObjectContent converts the response of a call to +// RetrieveProperties{Ex} to one or more managed objects. +func LoadObjectContent(content []types.ObjectContent, dst interface{}) error { + rt := reflect.TypeOf(dst) + if rt == nil || rt.Kind() != reflect.Ptr { + panic("need pointer") + } + + rv := reflect.ValueOf(dst).Elem() + if !rv.CanSet() { + panic("cannot set dst") + } + + isSlice := false + switch rt.Elem().Kind() { + case reflect.Struct: + case reflect.Slice: + isSlice = true + default: + panic("unexpected type") + } + + if isSlice { + for _, p := range content { + v, err := ObjectContentToType(p) + if err != nil { + return err + } + + vt := reflect.TypeOf(v) + + if !rv.Type().AssignableTo(vt) { + // For example: dst is []ManagedEntity, res is []HostSystem + if field, ok := vt.FieldByName(rt.Elem().Elem().Name()); ok && field.Anonymous { + rv.Set(reflect.Append(rv, reflect.ValueOf(v).FieldByIndex(field.Index))) + continue + } + } + + rv.Set(reflect.Append(rv, reflect.ValueOf(v))) + } + } else { + switch len(content) { + case 0: + case 1: + v, err := ObjectContentToType(content[0]) + if err != nil { + return err + } + + vt := reflect.TypeOf(v) + + if !rv.Type().AssignableTo(vt) { + // For example: dst is ComputeResource, res is ClusterComputeResource + if field, ok := vt.FieldByName(rt.Elem().Name()); ok && field.Anonymous { + rv.Set(reflect.ValueOf(v).FieldByIndex(field.Index)) + return nil + } + } + + rv.Set(reflect.ValueOf(v)) + default: + // If dst is not a slice, expect to receive 0 or 1 results + panic("more than 1 result") + } + } + + return nil +} + +// RetrievePropertiesForRequest calls the RetrieveProperties method with the +// specified request and decodes the response struct into the value pointed to +// by dst. +func RetrievePropertiesForRequest(ctx context.Context, r soap.RoundTripper, req types.RetrieveProperties, dst interface{}) error { + res, err := methods.RetrieveProperties(ctx, r, &req) + if err != nil { + return err + } + + return LoadObjectContent(res.Returnval, dst) +} + +// RetrieveProperties retrieves the properties of the managed object specified +// as obj and decodes the response struct into the value pointed to by dst. +func RetrieveProperties(ctx context.Context, r soap.RoundTripper, pc, obj types.ManagedObjectReference, dst interface{}) error { + req := types.RetrieveProperties{ + This: pc, + SpecSet: []types.PropertyFilterSpec{ + { + ObjectSet: []types.ObjectSpec{ + { + Obj: obj, + Skip: types.NewBool(false), + }, + }, + PropSet: []types.PropertySpec{ + { + All: types.NewBool(true), + Type: obj.Type, + }, + }, + }, + }, + } + + return RetrievePropertiesForRequest(ctx, r, req, dst) +} + +var morType = reflect.TypeOf((*types.ManagedObjectReference)(nil)).Elem() + +// References returns all non-nil moref field values in the given struct. +// Only Anonymous struct fields are followed by default. The optional follow +// param will follow any struct fields when true. +func References(s interface{}, follow ...bool) []types.ManagedObjectReference { + var refs []types.ManagedObjectReference + rval := reflect.ValueOf(s) + rtype := rval.Type() + + if rval.Kind() == reflect.Ptr { + rval = rval.Elem() + rtype = rval.Type() + } + + for i := 0; i < rval.NumField(); i++ { + val := rval.Field(i) + finfo := rtype.Field(i) + + if finfo.Anonymous { + refs = append(refs, References(val.Interface(), follow...)...) + continue + } + if finfo.Name == "Self" { + continue + } + + ftype := val.Type() + + if ftype.Kind() == reflect.Slice { + if ftype.Elem() == morType { + s := val.Interface().([]types.ManagedObjectReference) + for i := range s { + refs = append(refs, s[i]) + } + } + continue + } + + if ftype.Kind() == reflect.Ptr { + if val.IsNil() { + continue + } + val = val.Elem() + ftype = val.Type() + } + + if ftype == morType { + refs = append(refs, val.Interface().(types.ManagedObjectReference)) + continue + } + + if len(follow) != 0 && follow[0] { + if ftype.Kind() == reflect.Struct && val.CanSet() { + refs = append(refs, References(val.Interface(), follow...)...) + } + } + } + + return refs +} diff --git a/vendor/github.com/vmware/govmomi/vim25/mo/type_info.go b/vendor/github.com/vmware/govmomi/vim25/mo/type_info.go new file mode 100644 index 0000000..5276d0b --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/mo/type_info.go @@ -0,0 +1,258 @@ +/* +Copyright (c) 2014 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package mo + +import ( + "fmt" + "reflect" + "regexp" + "strings" + "sync" + + "github.com/vmware/govmomi/vim25/types" +) + +type typeInfo struct { + typ reflect.Type + + // Field indices of "Self" field. + self []int + + // Map property names to field indices. + props map[string][]int +} + +var typeInfoLock sync.RWMutex +var typeInfoMap = make(map[string]*typeInfo) + +func typeInfoForType(tname string) *typeInfo { + typeInfoLock.RLock() + ti, ok := typeInfoMap[tname] + typeInfoLock.RUnlock() + + if ok { + return ti + } + + // Create new typeInfo for type. + if typ, ok := t[tname]; !ok { + panic("unknown type: " + tname) + } else { + // Multiple routines may race to set it, but the result is the same. + typeInfoLock.Lock() + ti = newTypeInfo(typ) + typeInfoMap[tname] = ti + typeInfoLock.Unlock() + } + + return ti +} + +func newTypeInfo(typ reflect.Type) *typeInfo { + t := typeInfo{ + typ: typ, + props: make(map[string][]int), + } + + t.build(typ, "", []int{}) + + return &t +} + +var managedObjectRefType = reflect.TypeOf((*types.ManagedObjectReference)(nil)).Elem() + +func buildName(fn string, f reflect.StructField) string { + if fn != "" { + fn += "." + } + + motag := f.Tag.Get("mo") + if motag != "" { + return fn + motag + } + + xmltag := f.Tag.Get("xml") + if xmltag != "" { + tokens := strings.Split(xmltag, ",") + if tokens[0] != "" { + return fn + tokens[0] + } + } + + return "" +} + +func (t *typeInfo) build(typ reflect.Type, fn string, fi []int) { + if typ.Kind() == reflect.Ptr { + typ = typ.Elem() + } + + if typ.Kind() != reflect.Struct { + panic("need struct") + } + + for i := 0; i < typ.NumField(); i++ { + f := typ.Field(i) + ftyp := f.Type + + // Copy field indices so they can be passed along. + fic := make([]int, len(fi)+1) + copy(fic, fi) + fic[len(fi)] = i + + // Recurse into embedded field. + if f.Anonymous { + t.build(ftyp, fn, fic) + continue + } + + // Top level type has a "Self" field. + if f.Name == "Self" && ftyp == managedObjectRefType { + t.self = fic + continue + } + + fnc := buildName(fn, f) + if fnc == "" { + continue + } + + t.props[fnc] = fic + + // Dereference pointer. + if ftyp.Kind() == reflect.Ptr { + ftyp = ftyp.Elem() + } + + // Slices are not addressable by `foo.bar.qux`. + if ftyp.Kind() == reflect.Slice { + continue + } + + // Skip the managed reference type. + if ftyp == managedObjectRefType { + continue + } + + // Recurse into structs. + if ftyp.Kind() == reflect.Struct { + t.build(ftyp, fnc, fic) + } + } +} + +var nilValue reflect.Value + +// assignValue assigns a value 'pv' to the struct pointed to by 'val', given a +// slice of field indices. It recurses into the struct until it finds the field +// specified by the indices. It creates new values for pointer types where +// needed. +func assignValue(val reflect.Value, fi []int, pv reflect.Value) { + // Create new value if necessary. + if val.Kind() == reflect.Ptr { + if val.IsNil() { + val.Set(reflect.New(val.Type().Elem())) + } + + val = val.Elem() + } + + rv := val.Field(fi[0]) + fi = fi[1:] + if len(fi) == 0 { + if pv == nilValue { + pv = reflect.Zero(rv.Type()) + rv.Set(pv) + return + } + rt := rv.Type() + pt := pv.Type() + + // If type is a pointer, create new instance of type. + if rt.Kind() == reflect.Ptr { + rv.Set(reflect.New(rt.Elem())) + rv = rv.Elem() + rt = rv.Type() + } + + // If the target type is a slice, but the source is not, deference any ArrayOfXYZ type + if rt.Kind() == reflect.Slice && pt.Kind() != reflect.Slice { + if pt.Kind() == reflect.Ptr { + pv = pv.Elem() + pt = pt.Elem() + } + + m := arrayOfRegexp.FindStringSubmatch(pt.Name()) + if len(m) > 0 { + pv = pv.FieldByName(m[1]) // ArrayOfXYZ type has single field named XYZ + pt = pv.Type() + + if !pv.IsValid() { + panic(fmt.Sprintf("expected %s type to have field %s", m[0], m[1])) + } + } + } + + // If type is an interface, check if pv implements it. + if rt.Kind() == reflect.Interface && !pt.Implements(rt) { + // Check if pointer to pv implements it. + if reflect.PtrTo(pt).Implements(rt) { + npv := reflect.New(pt) + npv.Elem().Set(pv) + pv = npv + pt = pv.Type() + } else { + panic(fmt.Sprintf("type %s doesn't implement %s", pt.Name(), rt.Name())) + } + } else if rt.Kind() == reflect.Struct && pt.Kind() == reflect.Ptr { + pv = pv.Elem() + pt = pv.Type() + } + + if pt.AssignableTo(rt) { + rv.Set(pv) + } else if rt.ConvertibleTo(pt) { + rv.Set(pv.Convert(rt)) + } else { + panic(fmt.Sprintf("cannot assign %q (%s) to %q (%s)", rt.Name(), rt.Kind(), pt.Name(), pt.Kind())) + } + + return + } + + assignValue(rv, fi, pv) +} + +var arrayOfRegexp = regexp.MustCompile("ArrayOf(.*)$") + +// LoadObjectFromContent loads properties from the 'PropSet' field in the +// specified ObjectContent value into the value it represents, which is +// returned as a reflect.Value. +func (t *typeInfo) LoadFromObjectContent(o types.ObjectContent) (reflect.Value, error) { + v := reflect.New(t.typ) + assignValue(v, t.self, reflect.ValueOf(o.Obj)) + + for _, p := range o.PropSet { + rv, ok := t.props[p.Name] + if !ok { + continue + } + assignValue(v, rv, reflect.ValueOf(p.Val)) + } + + return v, nil +} diff --git a/vendor/github.com/vmware/govmomi/vim25/progress/aggregator.go b/vendor/github.com/vmware/govmomi/vim25/progress/aggregator.go new file mode 100644 index 0000000..24cb3d5 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/progress/aggregator.go @@ -0,0 +1,73 @@ +/* +Copyright (c) 2014 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package progress + +import "sync" + +type Aggregator struct { + downstream Sinker + upstream chan (<-chan Report) + + done chan struct{} + w sync.WaitGroup +} + +func NewAggregator(s Sinker) *Aggregator { + a := &Aggregator{ + downstream: s, + upstream: make(chan (<-chan Report)), + + done: make(chan struct{}), + } + + a.w.Add(1) + go a.loop() + + return a +} + +func (a *Aggregator) loop() { + defer a.w.Done() + + dch := a.downstream.Sink() + defer close(dch) + + for { + select { + case uch := <-a.upstream: + // Drain upstream channel + for e := range uch { + dch <- e + } + case <-a.done: + return + } + } +} + +func (a *Aggregator) Sink() chan<- Report { + ch := make(chan Report) + a.upstream <- ch + return ch +} + +// Done marks the aggregator as done. No more calls to Sink() may be made and +// the downstream progress report channel will be closed when Done() returns. +func (a *Aggregator) Done() { + close(a.done) + a.w.Wait() +} diff --git a/vendor/github.com/vmware/govmomi/vim25/progress/doc.go b/vendor/github.com/vmware/govmomi/vim25/progress/doc.go new file mode 100644 index 0000000..a0458dd --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/progress/doc.go @@ -0,0 +1,32 @@ +/* +Copyright (c) 2014 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package progress + +/* +The progress package contains functionality to deal with progress reporting. +The functionality is built to serve progress reporting for infrastructure +operations when talking the vSphere API, but is generic enough to be used +elsewhere. + +At the core of this progress reporting API lies the Sinker interface. This +interface is implemented by any object that can act as a sink for progress +reports. Callers of the Sink() function receives a send-only channel for +progress reports. They are responsible for closing the channel when done. +This semantic makes it easy to keep track of multiple progress report channels; +they are only created when Sink() is called and assumed closed when any +function that receives a Sinker parameter returns. +*/ diff --git a/vendor/github.com/vmware/govmomi/vim25/progress/prefix.go b/vendor/github.com/vmware/govmomi/vim25/progress/prefix.go new file mode 100644 index 0000000..4f842ad --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/progress/prefix.go @@ -0,0 +1,54 @@ +/* +Copyright (c) 2014 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package progress + +import "fmt" + +type prefixedReport struct { + Report + prefix string +} + +func (r prefixedReport) Detail() string { + if d := r.Report.Detail(); d != "" { + return fmt.Sprintf("%s: %s", r.prefix, d) + } + + return r.prefix +} + +func prefixLoop(upstream <-chan Report, downstream chan<- Report, prefix string) { + defer close(downstream) + + for r := range upstream { + downstream <- prefixedReport{ + Report: r, + prefix: prefix, + } + } +} + +func Prefix(s Sinker, prefix string) Sinker { + fn := func() chan<- Report { + upstream := make(chan Report) + downstream := s.Sink() + go prefixLoop(upstream, downstream, prefix) + return upstream + } + + return SinkFunc(fn) +} diff --git a/vendor/github.com/vmware/govmomi/vim25/progress/reader.go b/vendor/github.com/vmware/govmomi/vim25/progress/reader.go new file mode 100644 index 0000000..e37cd13 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/progress/reader.go @@ -0,0 +1,185 @@ +/* +Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package progress + +import ( + "container/list" + "context" + "fmt" + "io" + "sync/atomic" + "time" +) + +type readerReport struct { + pos int64 // Keep first to ensure 64-bit alignment + size int64 // Keep first to ensure 64-bit alignment + bps *uint64 // Keep first to ensure 64-bit alignment + + t time.Time + + err error +} + +func (r readerReport) Percentage() float32 { + return 100.0 * float32(r.pos) / float32(r.size) +} + +func (r readerReport) Detail() string { + const ( + KiB = 1024 + MiB = 1024 * KiB + GiB = 1024 * MiB + ) + + // Use the reader's bps field, so this report returns an up-to-date number. + // + // For example: if there hasn't been progress for the last 5 seconds, the + // most recent report should return "0B/s". + // + bps := atomic.LoadUint64(r.bps) + + switch { + case bps >= GiB: + return fmt.Sprintf("%.1fGiB/s", float32(bps)/float32(GiB)) + case bps >= MiB: + return fmt.Sprintf("%.1fMiB/s", float32(bps)/float32(MiB)) + case bps >= KiB: + return fmt.Sprintf("%.1fKiB/s", float32(bps)/float32(KiB)) + default: + return fmt.Sprintf("%dB/s", bps) + } +} + +func (p readerReport) Error() error { + return p.err +} + +// reader wraps an io.Reader and sends a progress report over a channel for +// every read it handles. +type reader struct { + r io.Reader + + pos int64 + size int64 + bps uint64 + + ch chan<- Report + ctx context.Context +} + +func NewReader(ctx context.Context, s Sinker, r io.Reader, size int64) *reader { + pr := reader{ + r: r, + ctx: ctx, + size: size, + } + + // Reports must be sent downstream and to the bps computation loop. + pr.ch = Tee(s, newBpsLoop(&pr.bps)).Sink() + + return &pr +} + +// Read calls the Read function on the underlying io.Reader. Additionally, +// every read causes a progress report to be sent to the progress reader's +// underlying channel. +func (r *reader) Read(b []byte) (int, error) { + n, err := r.r.Read(b) + r.pos += int64(n) + + if err != nil && err != io.EOF { + return n, err + } + + q := readerReport{ + t: time.Now(), + pos: r.pos, + size: r.size, + bps: &r.bps, + } + + select { + case r.ch <- q: + case <-r.ctx.Done(): + } + + return n, err +} + +// Done marks the progress reader as done, optionally including an error in the +// progress report. After sending it, the underlying channel is closed. +func (r *reader) Done(err error) { + q := readerReport{ + t: time.Now(), + pos: r.pos, + size: r.size, + bps: &r.bps, + err: err, + } + + select { + case r.ch <- q: + close(r.ch) + case <-r.ctx.Done(): + } +} + +// newBpsLoop returns a sink that monitors and stores throughput. +func newBpsLoop(dst *uint64) SinkFunc { + fn := func() chan<- Report { + sink := make(chan Report) + go bpsLoop(sink, dst) + return sink + } + + return fn +} + +func bpsLoop(ch <-chan Report, dst *uint64) { + l := list.New() + + for { + var tch <-chan time.Time + + // Setup timer for front of list to become stale. + if e := l.Front(); e != nil { + dt := time.Second - time.Since(e.Value.(readerReport).t) + tch = time.After(dt) + } + + select { + case q, ok := <-ch: + if !ok { + return + } + + l.PushBack(q) + case <-tch: + l.Remove(l.Front()) + } + + // Compute new bps + if l.Len() == 0 { + atomic.StoreUint64(dst, 0) + } else { + f := l.Front().Value.(readerReport) + b := l.Back().Value.(readerReport) + atomic.StoreUint64(dst, uint64(b.pos-f.pos)) + } + } +} diff --git a/vendor/github.com/vmware/govmomi/vim25/progress/report.go b/vendor/github.com/vmware/govmomi/vim25/progress/report.go new file mode 100644 index 0000000..bf80263 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/progress/report.go @@ -0,0 +1,26 @@ +/* +Copyright (c) 2014 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package progress + +// Report defines the interface for types that can deliver progress reports. +// Examples include uploads/downloads in the http client and the task info +// field in the task managed object. +type Report interface { + Percentage() float32 + Detail() string + Error() error +} diff --git a/vendor/github.com/vmware/govmomi/vim25/progress/scale.go b/vendor/github.com/vmware/govmomi/vim25/progress/scale.go new file mode 100644 index 0000000..9880839 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/progress/scale.go @@ -0,0 +1,76 @@ +/* +Copyright (c) 2014 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package progress + +type scaledReport struct { + Report + n int + i int +} + +func (r scaledReport) Percentage() float32 { + b := 100 * float32(r.i) / float32(r.n) + return b + (r.Report.Percentage() / float32(r.n)) +} + +type scaleOne struct { + s Sinker + n int + i int +} + +func (s scaleOne) Sink() chan<- Report { + upstream := make(chan Report) + downstream := s.s.Sink() + go s.loop(upstream, downstream) + return upstream +} + +func (s scaleOne) loop(upstream <-chan Report, downstream chan<- Report) { + defer close(downstream) + + for r := range upstream { + downstream <- scaledReport{ + Report: r, + n: s.n, + i: s.i, + } + } +} + +type scaleMany struct { + s Sinker + n int + i int +} + +func Scale(s Sinker, n int) Sinker { + return &scaleMany{ + s: s, + n: n, + } +} + +func (s *scaleMany) Sink() chan<- Report { + if s.i == s.n { + s.n++ + } + + ch := scaleOne{s: s.s, n: s.n, i: s.i}.Sink() + s.i++ + return ch +} diff --git a/vendor/github.com/vmware/govmomi/vim25/progress/sinker.go b/vendor/github.com/vmware/govmomi/vim25/progress/sinker.go new file mode 100644 index 0000000..0bd35a4 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/progress/sinker.go @@ -0,0 +1,33 @@ +/* +Copyright (c) 2014 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package progress + +// Sinker defines what is expected of a type that can act as a sink for +// progress reports. The semantics are as follows. If you call Sink(), you are +// responsible for closing the returned channel. Closing this channel means +// that the related task is done, or resulted in error. +type Sinker interface { + Sink() chan<- Report +} + +// SinkFunc defines a function that returns a progress report channel. +type SinkFunc func() chan<- Report + +// Sink makes the SinkFunc implement the Sinker interface. +func (fn SinkFunc) Sink() chan<- Report { + return fn() +} diff --git a/vendor/github.com/vmware/govmomi/vim25/progress/tee.go b/vendor/github.com/vmware/govmomi/vim25/progress/tee.go new file mode 100644 index 0000000..ab46078 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/progress/tee.go @@ -0,0 +1,41 @@ +/* +Copyright (c) 2014 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package progress + +// Tee works like Unix tee; it forwards all progress reports it receives to the +// specified sinks +func Tee(s1, s2 Sinker) Sinker { + fn := func() chan<- Report { + d1 := s1.Sink() + d2 := s2.Sink() + u := make(chan Report) + go tee(u, d1, d2) + return u + } + + return SinkFunc(fn) +} + +func tee(u <-chan Report, d1, d2 chan<- Report) { + defer close(d1) + defer close(d2) + + for r := range u { + d1 <- r + d2 <- r + } +} diff --git a/vendor/github.com/vmware/govmomi/vim25/retry.go b/vendor/github.com/vmware/govmomi/vim25/retry.go new file mode 100644 index 0000000..f10e2cb --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/retry.go @@ -0,0 +1,99 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package vim25 + +import ( + "context" + "time" + + "github.com/vmware/govmomi/vim25/soap" +) + +type RetryFunc func(err error) (retry bool, delay time.Duration) + +// TemporaryNetworkError returns a RetryFunc that retries up to a maximum of n +// times, only if the error returned by the RoundTrip function is a temporary +// network error (for example: a connect timeout). +func TemporaryNetworkError(n int) RetryFunc { + return func(err error) (retry bool, delay time.Duration) { + var ok bool + + t, ok := err.(interface { + // Temporary is implemented by url.Error and net.Error + Temporary() bool + }) + if !ok { + // Never retry if this is not a Temporary error. + return false, 0 + } + + if !t.Temporary() { + return false, 0 + } + + // Don't retry if we're out of tries. + if n--; n <= 0 { + return false, 0 + } + + return true, 0 + } +} + +type retry struct { + roundTripper soap.RoundTripper + + // fn is a custom function that is called when an error occurs. + // It returns whether or not to retry, and if so, how long to + // delay before retrying. + fn RetryFunc +} + +// Retry wraps the specified soap.RoundTripper and invokes the +// specified RetryFunc. The RetryFunc returns whether or not to +// retry the call, and if so, how long to wait before retrying. If +// the result of this function is to not retry, the original error +// is returned from the RoundTrip function. +func Retry(roundTripper soap.RoundTripper, fn RetryFunc) soap.RoundTripper { + r := &retry{ + roundTripper: roundTripper, + fn: fn, + } + + return r +} + +func (r *retry) RoundTrip(ctx context.Context, req, res soap.HasFault) error { + var err error + + for { + err = r.roundTripper.RoundTrip(ctx, req, res) + if err == nil { + break + } + + // Invoke retry function to see if another attempt should be made. + if retry, delay := r.fn(err); retry { + time.Sleep(delay) + continue + } + + break + } + + return err +} diff --git a/vendor/github.com/vmware/govmomi/vim25/soap/client.go b/vendor/github.com/vmware/govmomi/vim25/soap/client.go new file mode 100644 index 0000000..04e26f0 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/soap/client.go @@ -0,0 +1,850 @@ +/* +Copyright (c) 2014-2018 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package soap + +import ( + "bufio" + "bytes" + "context" + "crypto/sha1" + "crypto/tls" + "crypto/x509" + "encoding/json" + "errors" + "fmt" + "io" + "io/ioutil" + "log" + "net" + "net/http" + "net/http/cookiejar" + "net/url" + "os" + "path/filepath" + "reflect" + "regexp" + "strings" + "sync" + "time" + + "github.com/vmware/govmomi/vim25/progress" + "github.com/vmware/govmomi/vim25/types" + "github.com/vmware/govmomi/vim25/xml" +) + +type HasFault interface { + Fault() *Fault +} + +type RoundTripper interface { + RoundTrip(ctx context.Context, req, res HasFault) error +} + +const ( + SessionCookieName = "vmware_soap_session" +) + +type Client struct { + http.Client + + u *url.URL + k bool // Named after curl's -k flag + d *debugContainer + t *http.Transport + + hostsMu sync.Mutex + hosts map[string]string + + Namespace string // Vim namespace + Version string // Vim version + Types types.Func + UserAgent string + + cookie string +} + +var schemeMatch = regexp.MustCompile(`^\w+://`) + +type errInvalidCACertificate struct { + File string +} + +func (e errInvalidCACertificate) Error() string { + return fmt.Sprintf( + "invalid certificate '%s', cannot be used as a trusted CA certificate", + e.File, + ) +} + +// ParseURL is wrapper around url.Parse, where Scheme defaults to "https" and Path defaults to "/sdk" +func ParseURL(s string) (*url.URL, error) { + var err error + var u *url.URL + + if s != "" { + // Default the scheme to https + if !schemeMatch.MatchString(s) { + s = "https://" + s + } + + u, err = url.Parse(s) + if err != nil { + return nil, err + } + + // Default the path to /sdk + if u.Path == "" { + u.Path = "/sdk" + } + + if u.User == nil { + u.User = url.UserPassword("", "") + } + } + + return u, nil +} + +func NewClient(u *url.URL, insecure bool) *Client { + c := Client{ + u: u, + k: insecure, + d: newDebug(), + + Types: types.TypeFunc(), + } + + // Initialize http.RoundTripper on client, so we can customize it below + if t, ok := http.DefaultTransport.(*http.Transport); ok { + c.t = &http.Transport{ + Proxy: t.Proxy, + DialContext: t.DialContext, + MaxIdleConns: t.MaxIdleConns, + IdleConnTimeout: t.IdleConnTimeout, + TLSHandshakeTimeout: t.TLSHandshakeTimeout, + ExpectContinueTimeout: t.ExpectContinueTimeout, + } + } else { + c.t = new(http.Transport) + } + + c.hosts = make(map[string]string) + c.t.TLSClientConfig = &tls.Config{InsecureSkipVerify: c.k} + // Don't bother setting DialTLS if InsecureSkipVerify=true + if !c.k { + c.t.DialTLS = c.dialTLS + } + + c.Client.Transport = c.t + c.Client.Jar, _ = cookiejar.New(nil) + + // Remove user information from a copy of the URL + c.u = c.URL() + c.u.User = nil + + return &c +} + +func (c *Client) DefaultTransport() *http.Transport { + return c.t +} + +// NewServiceClient creates a NewClient with the given URL.Path and namespace. +func (c *Client) NewServiceClient(path string, namespace string) *Client { + vc := c.URL() + u, err := url.Parse(path) + if err != nil { + log.Panicf("url.Parse(%q): %s", path, err) + } + if u.Host == "" { + u.Scheme = vc.Scheme + u.Host = vc.Host + } + + client := NewClient(u, c.k) + client.Namespace = "urn:" + namespace + client.DefaultTransport().TLSClientConfig = c.DefaultTransport().TLSClientConfig + if cert := c.Certificate(); cert != nil { + client.SetCertificate(*cert) + } + + // Copy the trusted thumbprints + c.hostsMu.Lock() + for k, v := range c.hosts { + client.hosts[k] = v + } + c.hostsMu.Unlock() + + // Copy the cookies + client.Client.Jar.SetCookies(u, c.Client.Jar.Cookies(u)) + + // Set SOAP Header cookie + for _, cookie := range client.Jar.Cookies(u) { + if cookie.Name == SessionCookieName { + client.cookie = cookie.Value + break + } + } + + // Copy any query params (e.g. GOVMOMI_TUNNEL_PROXY_PORT used in testing) + client.u.RawQuery = vc.RawQuery + + client.UserAgent = c.UserAgent + + vimTypes := c.Types + client.Types = func(name string) (reflect.Type, bool) { + kind, ok := vimTypes(name) + if ok { + return kind, ok + } + // vim25/xml typeToString() does not have an option to include namespace prefix. + // Workaround this by re-trying the lookup with the namespace prefix. + return vimTypes(namespace + ":" + name) + } + + return client +} + +// SetRootCAs defines the set of root certificate authorities +// that clients use when verifying server certificates. +// By default TLS uses the host's root CA set. +// +// See: http.Client.Transport.TLSClientConfig.RootCAs +func (c *Client) SetRootCAs(file string) error { + pool := x509.NewCertPool() + + for _, name := range filepath.SplitList(file) { + pem, err := ioutil.ReadFile(filepath.Clean(name)) + if err != nil { + return err + } + + if ok := pool.AppendCertsFromPEM(pem); !ok { + return errInvalidCACertificate{ + File: name, + } + } + } + + c.t.TLSClientConfig.RootCAs = pool + + return nil +} + +// Add default https port if missing +func hostAddr(addr string) string { + _, port := splitHostPort(addr) + if port == "" { + return addr + ":443" + } + return addr +} + +// SetThumbprint sets the known certificate thumbprint for the given host. +// A custom DialTLS function is used to support thumbprint based verification. +// We first try tls.Dial with the default tls.Config, only falling back to thumbprint verification +// if it fails with an x509.UnknownAuthorityError or x509.HostnameError +// +// See: http.Client.Transport.DialTLS +func (c *Client) SetThumbprint(host string, thumbprint string) { + host = hostAddr(host) + + c.hostsMu.Lock() + if thumbprint == "" { + delete(c.hosts, host) + } else { + c.hosts[host] = thumbprint + } + c.hostsMu.Unlock() +} + +// Thumbprint returns the certificate thumbprint for the given host if known to this client. +func (c *Client) Thumbprint(host string) string { + host = hostAddr(host) + c.hostsMu.Lock() + defer c.hostsMu.Unlock() + return c.hosts[host] +} + +// LoadThumbprints from file with the give name. +// If name is empty or name does not exist this function will return nil. +func (c *Client) LoadThumbprints(file string) error { + if file == "" { + return nil + } + + for _, name := range filepath.SplitList(file) { + err := c.loadThumbprints(name) + if err != nil { + return err + } + } + + return nil +} + +func (c *Client) loadThumbprints(name string) error { + f, err := os.Open(filepath.Clean(name)) + if err != nil { + if os.IsNotExist(err) { + return nil + } + return err + } + + scanner := bufio.NewScanner(f) + + for scanner.Scan() { + e := strings.SplitN(scanner.Text(), " ", 2) + if len(e) != 2 { + continue + } + + c.SetThumbprint(e[0], e[1]) + } + + _ = f.Close() + + return scanner.Err() +} + +// ThumbprintSHA1 returns the thumbprint of the given cert in the same format used by the SDK and Client.SetThumbprint. +// +// See: SSLVerifyFault.Thumbprint, SessionManagerGenericServiceTicket.Thumbprint, HostConnectSpec.SslThumbprint +func ThumbprintSHA1(cert *x509.Certificate) string { + sum := sha1.Sum(cert.Raw) + hex := make([]string, len(sum)) + for i, b := range sum { + hex[i] = fmt.Sprintf("%02X", b) + } + return strings.Join(hex, ":") +} + +func (c *Client) dialTLS(network string, addr string) (net.Conn, error) { + // Would be nice if there was a tls.Config.Verify func, + // see tls.clientHandshakeState.doFullHandshake + + conn, err := tls.Dial(network, addr, c.t.TLSClientConfig) + + if err == nil { + return conn, nil + } + + switch err.(type) { + case x509.UnknownAuthorityError: + case x509.HostnameError: + default: + return nil, err + } + + thumbprint := c.Thumbprint(addr) + if thumbprint == "" { + return nil, err + } + + config := &tls.Config{InsecureSkipVerify: true} + conn, err = tls.Dial(network, addr, config) + if err != nil { + return nil, err + } + + cert := conn.ConnectionState().PeerCertificates[0] + peer := ThumbprintSHA1(cert) + if thumbprint != peer { + _ = conn.Close() + + return nil, fmt.Errorf("host %q thumbprint does not match %q", addr, thumbprint) + } + + return conn, nil +} + +// splitHostPort is similar to net.SplitHostPort, +// but rather than return error if there isn't a ':port', +// return an empty string for the port. +func splitHostPort(host string) (string, string) { + ix := strings.LastIndex(host, ":") + + if ix <= strings.LastIndex(host, "]") { + return host, "" + } + + name := host[:ix] + port := host[ix+1:] + + return name, port +} + +const sdkTunnel = "sdkTunnel:8089" + +func (c *Client) Certificate() *tls.Certificate { + certs := c.t.TLSClientConfig.Certificates + if len(certs) == 0 { + return nil + } + return &certs[0] +} + +func (c *Client) SetCertificate(cert tls.Certificate) { + t := c.Client.Transport.(*http.Transport) + + // Extension or HoK certificate + t.TLSClientConfig.Certificates = []tls.Certificate{cert} +} + +// Tunnel returns a Client configured to proxy requests through vCenter's http port 80, +// to the SDK tunnel virtual host. Use of the SDK tunnel is required by LoginExtensionByCertificate() +// and optional for other methods. +func (c *Client) Tunnel() *Client { + tunnel := c.NewServiceClient(c.u.Path, c.Namespace) + t := tunnel.Client.Transport.(*http.Transport) + // Proxy to vCenter host on port 80 + host := tunnel.u.Hostname() + // Should be no reason to change the default port other than testing + key := "GOVMOMI_TUNNEL_PROXY_PORT" + + port := tunnel.URL().Query().Get(key) + if port == "" { + port = os.Getenv(key) + } + + if port != "" { + host += ":" + port + } + + t.Proxy = http.ProxyURL(&url.URL{ + Scheme: "http", + Host: host, + }) + + // Rewrite url Host to use the sdk tunnel, required for a certificate request. + tunnel.u.Host = sdkTunnel + return tunnel +} + +func (c *Client) URL() *url.URL { + urlCopy := *c.u + return &urlCopy +} + +type marshaledClient struct { + Cookies []*http.Cookie + URL *url.URL + Insecure bool + Version string +} + +func (c *Client) MarshalJSON() ([]byte, error) { + m := marshaledClient{ + Cookies: c.Jar.Cookies(c.u), + URL: c.u, + Insecure: c.k, + Version: c.Version, + } + + return json.Marshal(m) +} + +func (c *Client) UnmarshalJSON(b []byte) error { + var m marshaledClient + + err := json.Unmarshal(b, &m) + if err != nil { + return err + } + + *c = *NewClient(m.URL, m.Insecure) + c.Version = m.Version + c.Jar.SetCookies(m.URL, m.Cookies) + + return nil +} + +type kindContext struct{} + +func (c *Client) Do(ctx context.Context, req *http.Request, f func(*http.Response) error) error { + if ctx == nil { + ctx = context.Background() + } + // Create debugging context for this round trip + d := c.d.newRoundTrip() + if d.enabled() { + defer d.done() + } + + if c.UserAgent != "" { + req.Header.Set(`User-Agent`, c.UserAgent) + } + + ext := "" + if d.enabled() { + ext = d.debugRequest(req) + } + + tstart := time.Now() + res, err := c.Client.Do(req.WithContext(ctx)) + tstop := time.Now() + + if d.enabled() { + var name string + if kind, ok := ctx.Value(kindContext{}).(HasFault); ok { + name = fmt.Sprintf("%T", kind) + } else { + name = fmt.Sprintf("%s %s", req.Method, req.URL) + } + d.logf("%6dms (%s)", tstop.Sub(tstart)/time.Millisecond, name) + } + + if err != nil { + return err + } + + defer res.Body.Close() + + if d.enabled() { + d.debugResponse(res, ext) + } + + return f(res) +} + +// Signer can be implemented by soap.Header.Security to sign requests. +// If the soap.Header.Security field is set to an implementation of Signer via WithHeader(), +// then Client.RoundTrip will call Sign() to marshal the SOAP request. +type Signer interface { + Sign(Envelope) ([]byte, error) +} + +type headerContext struct{} + +// WithHeader can be used to modify the outgoing request soap.Header fields. +func (c *Client) WithHeader(ctx context.Context, header Header) context.Context { + return context.WithValue(ctx, headerContext{}, header) +} + +type statusError struct { + res *http.Response +} + +// Temporary returns true for HTTP response codes that can be retried +// See vim25.TemporaryNetworkError +func (e *statusError) Temporary() bool { + switch e.res.StatusCode { + case http.StatusBadGateway: + return true + } + return false +} + +func (e *statusError) Error() string { + return e.res.Status +} + +func newStatusError(res *http.Response) error { + return &url.Error{ + Op: res.Request.Method, + URL: res.Request.URL.Path, + Err: &statusError{res}, + } +} + +func (c *Client) RoundTrip(ctx context.Context, reqBody, resBody HasFault) error { + var err error + var b []byte + + reqEnv := Envelope{Body: reqBody} + resEnv := Envelope{Body: resBody} + + h, ok := ctx.Value(headerContext{}).(Header) + if !ok { + h = Header{} + } + + // We added support for OperationID before soap.Header was exported. + if id, ok := ctx.Value(types.ID{}).(string); ok { + h.ID = id + } + + h.Cookie = c.cookie + if h.Cookie != "" || h.ID != "" || h.Security != nil { + reqEnv.Header = &h // XML marshal header only if a field is set + } + + if signer, ok := h.Security.(Signer); ok { + b, err = signer.Sign(reqEnv) + if err != nil { + return err + } + } else { + b, err = xml.Marshal(reqEnv) + if err != nil { + panic(err) + } + } + + rawReqBody := io.MultiReader(strings.NewReader(xml.Header), bytes.NewReader(b)) + req, err := http.NewRequest("POST", c.u.String(), rawReqBody) + if err != nil { + panic(err) + } + + req.Header.Set(`Content-Type`, `text/xml; charset="utf-8"`) + + action := h.Action + if action == "" { + action = fmt.Sprintf("%s/%s", c.Namespace, c.Version) + } + req.Header.Set(`SOAPAction`, action) + + return c.Do(context.WithValue(ctx, kindContext{}, resBody), req, func(res *http.Response) error { + switch res.StatusCode { + case http.StatusOK: + // OK + case http.StatusInternalServerError: + // Error, but typically includes a body explaining the error + default: + return newStatusError(res) + } + + dec := xml.NewDecoder(res.Body) + dec.TypeFunc = c.Types + err = dec.Decode(&resEnv) + if err != nil { + return err + } + + if f := resBody.Fault(); f != nil { + return WrapSoapFault(f) + } + + return err + }) +} + +func (c *Client) CloseIdleConnections() { + c.t.CloseIdleConnections() +} + +// ParseURL wraps url.Parse to rewrite the URL.Host field +// In the case of VM guest uploads or NFC lease URLs, a Host +// field with a value of "*" is rewritten to the Client's URL.Host. +func (c *Client) ParseURL(urlStr string) (*url.URL, error) { + u, err := url.Parse(urlStr) + if err != nil { + return nil, err + } + + host, _ := splitHostPort(u.Host) + if host == "*" { + // Also use Client's port, to support port forwarding + u.Host = c.URL().Host + } + + return u, nil +} + +type Upload struct { + Type string + Method string + ContentLength int64 + Headers map[string]string + Ticket *http.Cookie + Progress progress.Sinker +} + +var DefaultUpload = Upload{ + Type: "application/octet-stream", + Method: "PUT", +} + +// Upload PUTs the local file to the given URL +func (c *Client) Upload(ctx context.Context, f io.Reader, u *url.URL, param *Upload) error { + var err error + + if param.Progress != nil { + pr := progress.NewReader(ctx, param.Progress, f, param.ContentLength) + f = pr + + // Mark progress reader as done when returning from this function. + defer func() { + pr.Done(err) + }() + } + + req, err := http.NewRequest(param.Method, u.String(), f) + if err != nil { + return err + } + + req = req.WithContext(ctx) + + req.ContentLength = param.ContentLength + req.Header.Set("Content-Type", param.Type) + + for k, v := range param.Headers { + req.Header.Add(k, v) + } + + if param.Ticket != nil { + req.AddCookie(param.Ticket) + } + + res, err := c.Client.Do(req) + if err != nil { + return err + } + + defer res.Body.Close() + + switch res.StatusCode { + case http.StatusOK: + case http.StatusCreated: + default: + err = errors.New(res.Status) + } + + return err +} + +// UploadFile PUTs the local file to the given URL +func (c *Client) UploadFile(ctx context.Context, file string, u *url.URL, param *Upload) error { + if param == nil { + p := DefaultUpload // Copy since we set ContentLength + param = &p + } + + s, err := os.Stat(file) + if err != nil { + return err + } + + f, err := os.Open(filepath.Clean(file)) + if err != nil { + return err + } + defer f.Close() + + param.ContentLength = s.Size() + + return c.Upload(ctx, f, u, param) +} + +type Download struct { + Method string + Headers map[string]string + Ticket *http.Cookie + Progress progress.Sinker + Writer io.Writer +} + +var DefaultDownload = Download{ + Method: "GET", +} + +// DownloadRequest wraps http.Client.Do, returning the http.Response without checking its StatusCode +func (c *Client) DownloadRequest(ctx context.Context, u *url.URL, param *Download) (*http.Response, error) { + req, err := http.NewRequest(param.Method, u.String(), nil) + if err != nil { + return nil, err + } + + req = req.WithContext(ctx) + + for k, v := range param.Headers { + req.Header.Add(k, v) + } + + if param.Ticket != nil { + req.AddCookie(param.Ticket) + } + + return c.Client.Do(req) +} + +// Download GETs the remote file from the given URL +func (c *Client) Download(ctx context.Context, u *url.URL, param *Download) (io.ReadCloser, int64, error) { + res, err := c.DownloadRequest(ctx, u, param) + if err != nil { + return nil, 0, err + } + + switch res.StatusCode { + case http.StatusOK: + default: + err = fmt.Errorf("download(%s): %s", u, res.Status) + } + + if err != nil { + return nil, 0, err + } + + r := res.Body + + return r, res.ContentLength, nil +} + +func (c *Client) WriteFile(ctx context.Context, file string, src io.Reader, size int64, s progress.Sinker, w io.Writer) error { + var err error + + r := src + + fh, err := os.Create(file) + if err != nil { + return err + } + + if s != nil { + pr := progress.NewReader(ctx, s, src, size) + src = pr + + // Mark progress reader as done when returning from this function. + defer func() { + pr.Done(err) + }() + } + + if w == nil { + w = fh + } else { + w = io.MultiWriter(w, fh) + } + + _, err = io.Copy(w, r) + + cerr := fh.Close() + + if err == nil { + err = cerr + } + + return err +} + +// DownloadFile GETs the given URL to a local file +func (c *Client) DownloadFile(ctx context.Context, file string, u *url.URL, param *Download) error { + var err error + if param == nil { + param = &DefaultDownload + } + + rc, contentLength, err := c.Download(ctx, u, param) + if err != nil { + return err + } + + return c.WriteFile(ctx, file, rc, contentLength, param.Progress, param.Writer) +} diff --git a/vendor/github.com/vmware/govmomi/vim25/soap/debug.go b/vendor/github.com/vmware/govmomi/vim25/soap/debug.go new file mode 100644 index 0000000..3d4b577 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/soap/debug.go @@ -0,0 +1,157 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package soap + +import ( + "fmt" + "io" + "net/http" + "net/http/httputil" + "sync/atomic" + "time" + + "github.com/vmware/govmomi/vim25/debug" +) + +// teeReader wraps io.TeeReader and patches through the Close() function. +type teeReader struct { + io.Reader + io.Closer +} + +func newTeeReader(rc io.ReadCloser, w io.Writer) io.ReadCloser { + return teeReader{ + Reader: io.TeeReader(rc, w), + Closer: rc, + } +} + +// debugRoundTrip contains state and logic needed to debug a single round trip. +type debugRoundTrip struct { + cn uint64 // Client number + rn uint64 // Request number + log io.WriteCloser // Request log + cs []io.Closer // Files that need closing when done +} + +func (d *debugRoundTrip) logf(format string, a ...interface{}) { + now := time.Now().Format("2006-01-02T15-04-05.000000000") + fmt.Fprintf(d.log, "%s - %04d: ", now, d.rn) + fmt.Fprintf(d.log, format, a...) + fmt.Fprintf(d.log, "\n") +} + +func (d *debugRoundTrip) enabled() bool { + return d != nil +} + +func (d *debugRoundTrip) done() { + for _, c := range d.cs { + c.Close() + } +} + +func (d *debugRoundTrip) newFile(suffix string) io.WriteCloser { + return debug.NewFile(fmt.Sprintf("%d-%04d.%s", d.cn, d.rn, suffix)) +} + +func (d *debugRoundTrip) ext(h http.Header) string { + const json = "application/json" + ext := "xml" + if h.Get("Accept") == json || h.Get("Content-Type") == json { + ext = "json" + } + return ext +} + +func (d *debugRoundTrip) debugRequest(req *http.Request) string { + if d == nil { + return "" + } + + // Capture headers + var wc io.WriteCloser = d.newFile("req.headers") + b, _ := httputil.DumpRequest(req, false) + wc.Write(b) + wc.Close() + + ext := d.ext(req.Header) + // Capture body + wc = d.newFile("req." + ext) + req.Body = newTeeReader(req.Body, wc) + + // Delay closing until marked done + d.cs = append(d.cs, wc) + + return ext +} + +func (d *debugRoundTrip) debugResponse(res *http.Response, ext string) { + if d == nil { + return + } + + // Capture headers + var wc io.WriteCloser = d.newFile("res.headers") + b, _ := httputil.DumpResponse(res, false) + wc.Write(b) + wc.Close() + + // Capture body + wc = d.newFile("res." + ext) + res.Body = newTeeReader(res.Body, wc) + + // Delay closing until marked done + d.cs = append(d.cs, wc) +} + +var cn uint64 // Client counter + +// debugContainer wraps the debugging state for a single client. +type debugContainer struct { + cn uint64 // Client number + rn uint64 // Request counter + log io.WriteCloser // Request log +} + +func newDebug() *debugContainer { + d := debugContainer{ + cn: atomic.AddUint64(&cn, 1), + rn: 0, + } + + if !debug.Enabled() { + return nil + } + + d.log = debug.NewFile(fmt.Sprintf("%d-client.log", d.cn)) + return &d +} + +func (d *debugContainer) newRoundTrip() *debugRoundTrip { + if d == nil { + return nil + } + + drt := debugRoundTrip{ + cn: d.cn, + rn: atomic.AddUint64(&d.rn, 1), + log: d.log, + } + + return &drt +} diff --git a/vendor/github.com/vmware/govmomi/vim25/soap/error.go b/vendor/github.com/vmware/govmomi/vim25/soap/error.go new file mode 100644 index 0000000..4611155 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/soap/error.go @@ -0,0 +1,119 @@ +/* +Copyright (c) 2014 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package soap + +import ( + "fmt" + "reflect" + + "github.com/vmware/govmomi/vim25/types" +) + +type regularError struct { + err error +} + +func (r regularError) Error() string { + return r.err.Error() +} + +type soapFaultError struct { + fault *Fault +} + +func (s soapFaultError) Error() string { + msg := s.fault.String + + if msg == "" { + if s.fault.Detail.Fault == nil { + msg = "unknown fault" + } else { + msg = reflect.TypeOf(s.fault.Detail.Fault).Name() + } + } + + return fmt.Sprintf("%s: %s", s.fault.Code, msg) +} + +type vimFaultError struct { + fault types.BaseMethodFault +} + +func (v vimFaultError) Error() string { + typ := reflect.TypeOf(v.fault) + for typ.Kind() == reflect.Ptr { + typ = typ.Elem() + } + + return typ.Name() +} + +func (v vimFaultError) Fault() types.BaseMethodFault { + return v.fault +} + +func Wrap(err error) error { + switch err.(type) { + case regularError: + return err + case soapFaultError: + return err + case vimFaultError: + return err + } + + return WrapRegularError(err) +} + +func WrapRegularError(err error) error { + return regularError{err} +} + +func IsRegularError(err error) bool { + _, ok := err.(regularError) + return ok +} + +func ToRegularError(err error) error { + return err.(regularError).err +} + +func WrapSoapFault(f *Fault) error { + return soapFaultError{f} +} + +func IsSoapFault(err error) bool { + _, ok := err.(soapFaultError) + return ok +} + +func ToSoapFault(err error) *Fault { + return err.(soapFaultError).fault +} + +func WrapVimFault(v types.BaseMethodFault) error { + return vimFaultError{v} +} + +func IsVimFault(err error) bool { + _, ok := err.(vimFaultError) + return ok +} + +func ToVimFault(err error) types.BaseMethodFault { + return err.(vimFaultError).fault +} diff --git a/vendor/github.com/vmware/govmomi/vim25/soap/soap.go b/vendor/github.com/vmware/govmomi/vim25/soap/soap.go new file mode 100644 index 0000000..a8dc121 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/soap/soap.go @@ -0,0 +1,49 @@ +/* +Copyright (c) 2014-2018 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package soap + +import ( + "github.com/vmware/govmomi/vim25/types" + "github.com/vmware/govmomi/vim25/xml" +) + +// Header includes optional soap Header fields. +type Header struct { + Action string `xml:"-"` // Action is the 'SOAPAction' HTTP header value. Defaults to "Client.Namespace/Client.Version". + Cookie string `xml:"vcSessionCookie,omitempty"` // Cookie is a vCenter session cookie that can be used with other SDK endpoints (e.g. pbm). + ID string `xml:"operationID,omitempty"` // ID is the operationID used by ESX/vCenter logging for correlation. + Security interface{} `xml:",omitempty"` // Security is used for SAML token authentication and request signing. +} + +type Envelope struct { + XMLName xml.Name `xml:"http://schemas.xmlsoap.org/soap/envelope/ Envelope"` + Header *Header `xml:"http://schemas.xmlsoap.org/soap/envelope/ Header,omitempty"` + Body interface{} +} + +type Fault struct { + XMLName xml.Name `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault"` + Code string `xml:"faultcode"` + String string `xml:"faultstring"` + Detail struct { + Fault types.AnyType `xml:",any,typeattr"` + } `xml:"detail"` +} + +func (f *Fault) VimFault() types.AnyType { + return f.Detail.Fault +} diff --git a/vendor/github.com/vmware/govmomi/vim25/types/base.go b/vendor/github.com/vmware/govmomi/vim25/types/base.go new file mode 100644 index 0000000..3bb12b7 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/types/base.go @@ -0,0 +1,19 @@ +/* +Copyright (c) 2014 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package types + +type AnyType interface{} diff --git a/vendor/github.com/vmware/govmomi/vim25/types/enum.go b/vendor/github.com/vmware/govmomi/vim25/types/enum.go new file mode 100644 index 0000000..a356fff --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/types/enum.go @@ -0,0 +1,5116 @@ +/* +Copyright (c) 2014-2018 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package types + +import "reflect" + +type ActionParameter string + +const ( + ActionParameterTargetName = ActionParameter("targetName") + ActionParameterAlarmName = ActionParameter("alarmName") + ActionParameterOldStatus = ActionParameter("oldStatus") + ActionParameterNewStatus = ActionParameter("newStatus") + ActionParameterTriggeringSummary = ActionParameter("triggeringSummary") + ActionParameterDeclaringSummary = ActionParameter("declaringSummary") + ActionParameterEventDescription = ActionParameter("eventDescription") + ActionParameterTarget = ActionParameter("target") + ActionParameterAlarm = ActionParameter("alarm") +) + +func init() { + t["ActionParameter"] = reflect.TypeOf((*ActionParameter)(nil)).Elem() +} + +type ActionType string + +const ( + ActionTypeMigrationV1 = ActionType("MigrationV1") + ActionTypeVmPowerV1 = ActionType("VmPowerV1") + ActionTypeHostPowerV1 = ActionType("HostPowerV1") + ActionTypeHostMaintenanceV1 = ActionType("HostMaintenanceV1") + ActionTypeStorageMigrationV1 = ActionType("StorageMigrationV1") + ActionTypeStoragePlacementV1 = ActionType("StoragePlacementV1") + ActionTypePlacementV1 = ActionType("PlacementV1") + ActionTypeHostInfraUpdateHaV1 = ActionType("HostInfraUpdateHaV1") +) + +func init() { + t["ActionType"] = reflect.TypeOf((*ActionType)(nil)).Elem() +} + +type AffinityType string + +const ( + AffinityTypeMemory = AffinityType("memory") + AffinityTypeCpu = AffinityType("cpu") +) + +func init() { + t["AffinityType"] = reflect.TypeOf((*AffinityType)(nil)).Elem() +} + +type AgentInstallFailedReason string + +const ( + AgentInstallFailedReasonNotEnoughSpaceOnDevice = AgentInstallFailedReason("NotEnoughSpaceOnDevice") + AgentInstallFailedReasonPrepareToUpgradeFailed = AgentInstallFailedReason("PrepareToUpgradeFailed") + AgentInstallFailedReasonAgentNotRunning = AgentInstallFailedReason("AgentNotRunning") + AgentInstallFailedReasonAgentNotReachable = AgentInstallFailedReason("AgentNotReachable") + AgentInstallFailedReasonInstallTimedout = AgentInstallFailedReason("InstallTimedout") + AgentInstallFailedReasonSignatureVerificationFailed = AgentInstallFailedReason("SignatureVerificationFailed") + AgentInstallFailedReasonAgentUploadFailed = AgentInstallFailedReason("AgentUploadFailed") + AgentInstallFailedReasonAgentUploadTimedout = AgentInstallFailedReason("AgentUploadTimedout") + AgentInstallFailedReasonUnknownInstallerError = AgentInstallFailedReason("UnknownInstallerError") +) + +func init() { + t["AgentInstallFailedReason"] = reflect.TypeOf((*AgentInstallFailedReason)(nil)).Elem() +} + +type AlarmFilterSpecAlarmTypeByEntity string + +const ( + AlarmFilterSpecAlarmTypeByEntityEntityTypeAll = AlarmFilterSpecAlarmTypeByEntity("entityTypeAll") + AlarmFilterSpecAlarmTypeByEntityEntityTypeHost = AlarmFilterSpecAlarmTypeByEntity("entityTypeHost") + AlarmFilterSpecAlarmTypeByEntityEntityTypeVm = AlarmFilterSpecAlarmTypeByEntity("entityTypeVm") +) + +func init() { + t["AlarmFilterSpecAlarmTypeByEntity"] = reflect.TypeOf((*AlarmFilterSpecAlarmTypeByEntity)(nil)).Elem() +} + +type AlarmFilterSpecAlarmTypeByTrigger string + +const ( + AlarmFilterSpecAlarmTypeByTriggerTriggerTypeAll = AlarmFilterSpecAlarmTypeByTrigger("triggerTypeAll") + AlarmFilterSpecAlarmTypeByTriggerTriggerTypeEvent = AlarmFilterSpecAlarmTypeByTrigger("triggerTypeEvent") + AlarmFilterSpecAlarmTypeByTriggerTriggerTypeMetric = AlarmFilterSpecAlarmTypeByTrigger("triggerTypeMetric") +) + +func init() { + t["AlarmFilterSpecAlarmTypeByTrigger"] = reflect.TypeOf((*AlarmFilterSpecAlarmTypeByTrigger)(nil)).Elem() +} + +type AnswerFileValidationInfoStatus string + +const ( + AnswerFileValidationInfoStatusSuccess = AnswerFileValidationInfoStatus("success") + AnswerFileValidationInfoStatusFailed = AnswerFileValidationInfoStatus("failed") + AnswerFileValidationInfoStatusFailed_defaults = AnswerFileValidationInfoStatus("failed_defaults") +) + +func init() { + t["AnswerFileValidationInfoStatus"] = reflect.TypeOf((*AnswerFileValidationInfoStatus)(nil)).Elem() +} + +type ApplyHostProfileConfigurationResultStatus string + +const ( + ApplyHostProfileConfigurationResultStatusSuccess = ApplyHostProfileConfigurationResultStatus("success") + ApplyHostProfileConfigurationResultStatusFailed = ApplyHostProfileConfigurationResultStatus("failed") + ApplyHostProfileConfigurationResultStatusReboot_failed = ApplyHostProfileConfigurationResultStatus("reboot_failed") + ApplyHostProfileConfigurationResultStatusStateless_reboot_failed = ApplyHostProfileConfigurationResultStatus("stateless_reboot_failed") + ApplyHostProfileConfigurationResultStatusCheck_compliance_failed = ApplyHostProfileConfigurationResultStatus("check_compliance_failed") + ApplyHostProfileConfigurationResultStatusState_not_satisfied = ApplyHostProfileConfigurationResultStatus("state_not_satisfied") + ApplyHostProfileConfigurationResultStatusExit_maintenancemode_failed = ApplyHostProfileConfigurationResultStatus("exit_maintenancemode_failed") + ApplyHostProfileConfigurationResultStatusCanceled = ApplyHostProfileConfigurationResultStatus("canceled") +) + +func init() { + t["ApplyHostProfileConfigurationResultStatus"] = reflect.TypeOf((*ApplyHostProfileConfigurationResultStatus)(nil)).Elem() +} + +type ArrayUpdateOperation string + +const ( + ArrayUpdateOperationAdd = ArrayUpdateOperation("add") + ArrayUpdateOperationRemove = ArrayUpdateOperation("remove") + ArrayUpdateOperationEdit = ArrayUpdateOperation("edit") +) + +func init() { + t["ArrayUpdateOperation"] = reflect.TypeOf((*ArrayUpdateOperation)(nil)).Elem() +} + +type AutoStartAction string + +const ( + AutoStartActionNone = AutoStartAction("none") + AutoStartActionSystemDefault = AutoStartAction("systemDefault") + AutoStartActionPowerOn = AutoStartAction("powerOn") + AutoStartActionPowerOff = AutoStartAction("powerOff") + AutoStartActionGuestShutdown = AutoStartAction("guestShutdown") + AutoStartActionSuspend = AutoStartAction("suspend") +) + +func init() { + t["AutoStartAction"] = reflect.TypeOf((*AutoStartAction)(nil)).Elem() +} + +type AutoStartWaitHeartbeatSetting string + +const ( + AutoStartWaitHeartbeatSettingYes = AutoStartWaitHeartbeatSetting("yes") + AutoStartWaitHeartbeatSettingNo = AutoStartWaitHeartbeatSetting("no") + AutoStartWaitHeartbeatSettingSystemDefault = AutoStartWaitHeartbeatSetting("systemDefault") +) + +func init() { + t["AutoStartWaitHeartbeatSetting"] = reflect.TypeOf((*AutoStartWaitHeartbeatSetting)(nil)).Elem() +} + +type BaseConfigInfoDiskFileBackingInfoProvisioningType string + +const ( + BaseConfigInfoDiskFileBackingInfoProvisioningTypeThin = BaseConfigInfoDiskFileBackingInfoProvisioningType("thin") + BaseConfigInfoDiskFileBackingInfoProvisioningTypeEagerZeroedThick = BaseConfigInfoDiskFileBackingInfoProvisioningType("eagerZeroedThick") + BaseConfigInfoDiskFileBackingInfoProvisioningTypeLazyZeroedThick = BaseConfigInfoDiskFileBackingInfoProvisioningType("lazyZeroedThick") +) + +func init() { + t["BaseConfigInfoDiskFileBackingInfoProvisioningType"] = reflect.TypeOf((*BaseConfigInfoDiskFileBackingInfoProvisioningType)(nil)).Elem() +} + +type BatchResultResult string + +const ( + BatchResultResultSuccess = BatchResultResult("success") + BatchResultResultFail = BatchResultResult("fail") +) + +func init() { + t["BatchResultResult"] = reflect.TypeOf((*BatchResultResult)(nil)).Elem() +} + +type CannotEnableVmcpForClusterReason string + +const ( + CannotEnableVmcpForClusterReasonAPDTimeoutDisabled = CannotEnableVmcpForClusterReason("APDTimeoutDisabled") +) + +func init() { + t["CannotEnableVmcpForClusterReason"] = reflect.TypeOf((*CannotEnableVmcpForClusterReason)(nil)).Elem() +} + +type CannotMoveFaultToleranceVmMoveType string + +const ( + CannotMoveFaultToleranceVmMoveTypeResourcePool = CannotMoveFaultToleranceVmMoveType("resourcePool") + CannotMoveFaultToleranceVmMoveTypeCluster = CannotMoveFaultToleranceVmMoveType("cluster") +) + +func init() { + t["CannotMoveFaultToleranceVmMoveType"] = reflect.TypeOf((*CannotMoveFaultToleranceVmMoveType)(nil)).Elem() +} + +type CannotPowerOffVmInClusterOperation string + +const ( + CannotPowerOffVmInClusterOperationSuspend = CannotPowerOffVmInClusterOperation("suspend") + CannotPowerOffVmInClusterOperationPowerOff = CannotPowerOffVmInClusterOperation("powerOff") + CannotPowerOffVmInClusterOperationGuestShutdown = CannotPowerOffVmInClusterOperation("guestShutdown") + CannotPowerOffVmInClusterOperationGuestSuspend = CannotPowerOffVmInClusterOperation("guestSuspend") +) + +func init() { + t["CannotPowerOffVmInClusterOperation"] = reflect.TypeOf((*CannotPowerOffVmInClusterOperation)(nil)).Elem() +} + +type CannotUseNetworkReason string + +const ( + CannotUseNetworkReasonNetworkReservationNotSupported = CannotUseNetworkReason("NetworkReservationNotSupported") + CannotUseNetworkReasonMismatchedNetworkPolicies = CannotUseNetworkReason("MismatchedNetworkPolicies") + CannotUseNetworkReasonMismatchedDvsVersionOrVendor = CannotUseNetworkReason("MismatchedDvsVersionOrVendor") + CannotUseNetworkReasonVMotionToUnsupportedNetworkType = CannotUseNetworkReason("VMotionToUnsupportedNetworkType") + CannotUseNetworkReasonNetworkUnderMaintenance = CannotUseNetworkReason("NetworkUnderMaintenance") + CannotUseNetworkReasonMismatchedEnsMode = CannotUseNetworkReason("MismatchedEnsMode") +) + +func init() { + t["CannotUseNetworkReason"] = reflect.TypeOf((*CannotUseNetworkReason)(nil)).Elem() +} + +type CheckTestType string + +const ( + CheckTestTypeSourceTests = CheckTestType("sourceTests") + CheckTestTypeHostTests = CheckTestType("hostTests") + CheckTestTypeResourcePoolTests = CheckTestType("resourcePoolTests") + CheckTestTypeDatastoreTests = CheckTestType("datastoreTests") + CheckTestTypeNetworkTests = CheckTestType("networkTests") +) + +func init() { + t["CheckTestType"] = reflect.TypeOf((*CheckTestType)(nil)).Elem() +} + +type ClusterComputeResourceHCIWorkflowState string + +const ( + ClusterComputeResourceHCIWorkflowStateIn_progress = ClusterComputeResourceHCIWorkflowState("in_progress") + ClusterComputeResourceHCIWorkflowStateDone = ClusterComputeResourceHCIWorkflowState("done") + ClusterComputeResourceHCIWorkflowStateInvalid = ClusterComputeResourceHCIWorkflowState("invalid") +) + +func init() { + t["ClusterComputeResourceHCIWorkflowState"] = reflect.TypeOf((*ClusterComputeResourceHCIWorkflowState)(nil)).Elem() +} + +type ClusterCryptoConfigInfoCryptoMode string + +const ( + ClusterCryptoConfigInfoCryptoModeOnDemand = ClusterCryptoConfigInfoCryptoMode("onDemand") + ClusterCryptoConfigInfoCryptoModeForceEnable = ClusterCryptoConfigInfoCryptoMode("forceEnable") +) + +func init() { + t["ClusterCryptoConfigInfoCryptoMode"] = reflect.TypeOf((*ClusterCryptoConfigInfoCryptoMode)(nil)).Elem() +} + +type ClusterDasAamNodeStateDasState string + +const ( + ClusterDasAamNodeStateDasStateUninitialized = ClusterDasAamNodeStateDasState("uninitialized") + ClusterDasAamNodeStateDasStateInitialized = ClusterDasAamNodeStateDasState("initialized") + ClusterDasAamNodeStateDasStateConfiguring = ClusterDasAamNodeStateDasState("configuring") + ClusterDasAamNodeStateDasStateUnconfiguring = ClusterDasAamNodeStateDasState("unconfiguring") + ClusterDasAamNodeStateDasStateRunning = ClusterDasAamNodeStateDasState("running") + ClusterDasAamNodeStateDasStateError = ClusterDasAamNodeStateDasState("error") + ClusterDasAamNodeStateDasStateAgentShutdown = ClusterDasAamNodeStateDasState("agentShutdown") + ClusterDasAamNodeStateDasStateNodeFailed = ClusterDasAamNodeStateDasState("nodeFailed") +) + +func init() { + t["ClusterDasAamNodeStateDasState"] = reflect.TypeOf((*ClusterDasAamNodeStateDasState)(nil)).Elem() +} + +type ClusterDasConfigInfoHBDatastoreCandidate string + +const ( + ClusterDasConfigInfoHBDatastoreCandidateUserSelectedDs = ClusterDasConfigInfoHBDatastoreCandidate("userSelectedDs") + ClusterDasConfigInfoHBDatastoreCandidateAllFeasibleDs = ClusterDasConfigInfoHBDatastoreCandidate("allFeasibleDs") + ClusterDasConfigInfoHBDatastoreCandidateAllFeasibleDsWithUserPreference = ClusterDasConfigInfoHBDatastoreCandidate("allFeasibleDsWithUserPreference") +) + +func init() { + t["ClusterDasConfigInfoHBDatastoreCandidate"] = reflect.TypeOf((*ClusterDasConfigInfoHBDatastoreCandidate)(nil)).Elem() +} + +type ClusterDasConfigInfoServiceState string + +const ( + ClusterDasConfigInfoServiceStateDisabled = ClusterDasConfigInfoServiceState("disabled") + ClusterDasConfigInfoServiceStateEnabled = ClusterDasConfigInfoServiceState("enabled") +) + +func init() { + t["ClusterDasConfigInfoServiceState"] = reflect.TypeOf((*ClusterDasConfigInfoServiceState)(nil)).Elem() +} + +type ClusterDasConfigInfoVmMonitoringState string + +const ( + ClusterDasConfigInfoVmMonitoringStateVmMonitoringDisabled = ClusterDasConfigInfoVmMonitoringState("vmMonitoringDisabled") + ClusterDasConfigInfoVmMonitoringStateVmMonitoringOnly = ClusterDasConfigInfoVmMonitoringState("vmMonitoringOnly") + ClusterDasConfigInfoVmMonitoringStateVmAndAppMonitoring = ClusterDasConfigInfoVmMonitoringState("vmAndAppMonitoring") +) + +func init() { + t["ClusterDasConfigInfoVmMonitoringState"] = reflect.TypeOf((*ClusterDasConfigInfoVmMonitoringState)(nil)).Elem() +} + +type ClusterDasFdmAvailabilityState string + +const ( + ClusterDasFdmAvailabilityStateUninitialized = ClusterDasFdmAvailabilityState("uninitialized") + ClusterDasFdmAvailabilityStateElection = ClusterDasFdmAvailabilityState("election") + ClusterDasFdmAvailabilityStateMaster = ClusterDasFdmAvailabilityState("master") + ClusterDasFdmAvailabilityStateConnectedToMaster = ClusterDasFdmAvailabilityState("connectedToMaster") + ClusterDasFdmAvailabilityStateNetworkPartitionedFromMaster = ClusterDasFdmAvailabilityState("networkPartitionedFromMaster") + ClusterDasFdmAvailabilityStateNetworkIsolated = ClusterDasFdmAvailabilityState("networkIsolated") + ClusterDasFdmAvailabilityStateHostDown = ClusterDasFdmAvailabilityState("hostDown") + ClusterDasFdmAvailabilityStateInitializationError = ClusterDasFdmAvailabilityState("initializationError") + ClusterDasFdmAvailabilityStateUninitializationError = ClusterDasFdmAvailabilityState("uninitializationError") + ClusterDasFdmAvailabilityStateFdmUnreachable = ClusterDasFdmAvailabilityState("fdmUnreachable") +) + +func init() { + t["ClusterDasFdmAvailabilityState"] = reflect.TypeOf((*ClusterDasFdmAvailabilityState)(nil)).Elem() +} + +type ClusterDasVmSettingsIsolationResponse string + +const ( + ClusterDasVmSettingsIsolationResponseNone = ClusterDasVmSettingsIsolationResponse("none") + ClusterDasVmSettingsIsolationResponsePowerOff = ClusterDasVmSettingsIsolationResponse("powerOff") + ClusterDasVmSettingsIsolationResponseShutdown = ClusterDasVmSettingsIsolationResponse("shutdown") + ClusterDasVmSettingsIsolationResponseClusterIsolationResponse = ClusterDasVmSettingsIsolationResponse("clusterIsolationResponse") +) + +func init() { + t["ClusterDasVmSettingsIsolationResponse"] = reflect.TypeOf((*ClusterDasVmSettingsIsolationResponse)(nil)).Elem() +} + +type ClusterDasVmSettingsRestartPriority string + +const ( + ClusterDasVmSettingsRestartPriorityDisabled = ClusterDasVmSettingsRestartPriority("disabled") + ClusterDasVmSettingsRestartPriorityLowest = ClusterDasVmSettingsRestartPriority("lowest") + ClusterDasVmSettingsRestartPriorityLow = ClusterDasVmSettingsRestartPriority("low") + ClusterDasVmSettingsRestartPriorityMedium = ClusterDasVmSettingsRestartPriority("medium") + ClusterDasVmSettingsRestartPriorityHigh = ClusterDasVmSettingsRestartPriority("high") + ClusterDasVmSettingsRestartPriorityHighest = ClusterDasVmSettingsRestartPriority("highest") + ClusterDasVmSettingsRestartPriorityClusterRestartPriority = ClusterDasVmSettingsRestartPriority("clusterRestartPriority") +) + +func init() { + t["ClusterDasVmSettingsRestartPriority"] = reflect.TypeOf((*ClusterDasVmSettingsRestartPriority)(nil)).Elem() +} + +type ClusterHostInfraUpdateHaModeActionOperationType string + +const ( + ClusterHostInfraUpdateHaModeActionOperationTypeEnterQuarantine = ClusterHostInfraUpdateHaModeActionOperationType("enterQuarantine") + ClusterHostInfraUpdateHaModeActionOperationTypeExitQuarantine = ClusterHostInfraUpdateHaModeActionOperationType("exitQuarantine") + ClusterHostInfraUpdateHaModeActionOperationTypeEnterMaintenance = ClusterHostInfraUpdateHaModeActionOperationType("enterMaintenance") +) + +func init() { + t["ClusterHostInfraUpdateHaModeActionOperationType"] = reflect.TypeOf((*ClusterHostInfraUpdateHaModeActionOperationType)(nil)).Elem() +} + +type ClusterInfraUpdateHaConfigInfoBehaviorType string + +const ( + ClusterInfraUpdateHaConfigInfoBehaviorTypeManual = ClusterInfraUpdateHaConfigInfoBehaviorType("Manual") + ClusterInfraUpdateHaConfigInfoBehaviorTypeAutomated = ClusterInfraUpdateHaConfigInfoBehaviorType("Automated") +) + +func init() { + t["ClusterInfraUpdateHaConfigInfoBehaviorType"] = reflect.TypeOf((*ClusterInfraUpdateHaConfigInfoBehaviorType)(nil)).Elem() +} + +type ClusterInfraUpdateHaConfigInfoRemediationType string + +const ( + ClusterInfraUpdateHaConfigInfoRemediationTypeQuarantineMode = ClusterInfraUpdateHaConfigInfoRemediationType("QuarantineMode") + ClusterInfraUpdateHaConfigInfoRemediationTypeMaintenanceMode = ClusterInfraUpdateHaConfigInfoRemediationType("MaintenanceMode") +) + +func init() { + t["ClusterInfraUpdateHaConfigInfoRemediationType"] = reflect.TypeOf((*ClusterInfraUpdateHaConfigInfoRemediationType)(nil)).Elem() +} + +type ClusterPowerOnVmOption string + +const ( + ClusterPowerOnVmOptionOverrideAutomationLevel = ClusterPowerOnVmOption("OverrideAutomationLevel") + ClusterPowerOnVmOptionReserveResources = ClusterPowerOnVmOption("ReserveResources") +) + +func init() { + t["ClusterPowerOnVmOption"] = reflect.TypeOf((*ClusterPowerOnVmOption)(nil)).Elem() +} + +type ClusterProfileServiceType string + +const ( + ClusterProfileServiceTypeDRS = ClusterProfileServiceType("DRS") + ClusterProfileServiceTypeHA = ClusterProfileServiceType("HA") + ClusterProfileServiceTypeDPM = ClusterProfileServiceType("DPM") + ClusterProfileServiceTypeFT = ClusterProfileServiceType("FT") +) + +func init() { + t["ClusterProfileServiceType"] = reflect.TypeOf((*ClusterProfileServiceType)(nil)).Elem() +} + +type ClusterVmComponentProtectionSettingsStorageVmReaction string + +const ( + ClusterVmComponentProtectionSettingsStorageVmReactionDisabled = ClusterVmComponentProtectionSettingsStorageVmReaction("disabled") + ClusterVmComponentProtectionSettingsStorageVmReactionWarning = ClusterVmComponentProtectionSettingsStorageVmReaction("warning") + ClusterVmComponentProtectionSettingsStorageVmReactionRestartConservative = ClusterVmComponentProtectionSettingsStorageVmReaction("restartConservative") + ClusterVmComponentProtectionSettingsStorageVmReactionRestartAggressive = ClusterVmComponentProtectionSettingsStorageVmReaction("restartAggressive") + ClusterVmComponentProtectionSettingsStorageVmReactionClusterDefault = ClusterVmComponentProtectionSettingsStorageVmReaction("clusterDefault") +) + +func init() { + t["ClusterVmComponentProtectionSettingsStorageVmReaction"] = reflect.TypeOf((*ClusterVmComponentProtectionSettingsStorageVmReaction)(nil)).Elem() +} + +type ClusterVmComponentProtectionSettingsVmReactionOnAPDCleared string + +const ( + ClusterVmComponentProtectionSettingsVmReactionOnAPDClearedNone = ClusterVmComponentProtectionSettingsVmReactionOnAPDCleared("none") + ClusterVmComponentProtectionSettingsVmReactionOnAPDClearedReset = ClusterVmComponentProtectionSettingsVmReactionOnAPDCleared("reset") + ClusterVmComponentProtectionSettingsVmReactionOnAPDClearedUseClusterDefault = ClusterVmComponentProtectionSettingsVmReactionOnAPDCleared("useClusterDefault") +) + +func init() { + t["ClusterVmComponentProtectionSettingsVmReactionOnAPDCleared"] = reflect.TypeOf((*ClusterVmComponentProtectionSettingsVmReactionOnAPDCleared)(nil)).Elem() +} + +type ClusterVmReadinessReadyCondition string + +const ( + ClusterVmReadinessReadyConditionNone = ClusterVmReadinessReadyCondition("none") + ClusterVmReadinessReadyConditionPoweredOn = ClusterVmReadinessReadyCondition("poweredOn") + ClusterVmReadinessReadyConditionGuestHbStatusGreen = ClusterVmReadinessReadyCondition("guestHbStatusGreen") + ClusterVmReadinessReadyConditionAppHbStatusGreen = ClusterVmReadinessReadyCondition("appHbStatusGreen") + ClusterVmReadinessReadyConditionUseClusterDefault = ClusterVmReadinessReadyCondition("useClusterDefault") +) + +func init() { + t["ClusterVmReadinessReadyCondition"] = reflect.TypeOf((*ClusterVmReadinessReadyCondition)(nil)).Elem() +} + +type ComplianceResultStatus string + +const ( + ComplianceResultStatusCompliant = ComplianceResultStatus("compliant") + ComplianceResultStatusNonCompliant = ComplianceResultStatus("nonCompliant") + ComplianceResultStatusUnknown = ComplianceResultStatus("unknown") + ComplianceResultStatusRunning = ComplianceResultStatus("running") +) + +func init() { + t["ComplianceResultStatus"] = reflect.TypeOf((*ComplianceResultStatus)(nil)).Elem() +} + +type ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseState string + +const ( + ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseStateLicensed = ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseState("licensed") + ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseStateUnlicensed = ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseState("unlicensed") + ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseStateUnknown = ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseState("unknown") +) + +func init() { + t["ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseState"] = reflect.TypeOf((*ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseState)(nil)).Elem() +} + +type ConfigSpecOperation string + +const ( + ConfigSpecOperationAdd = ConfigSpecOperation("add") + ConfigSpecOperationEdit = ConfigSpecOperation("edit") + ConfigSpecOperationRemove = ConfigSpecOperation("remove") +) + +func init() { + t["ConfigSpecOperation"] = reflect.TypeOf((*ConfigSpecOperation)(nil)).Elem() +} + +type CryptoManagerKmipCryptoKeyStatusKeyUnavailableReason string + +const ( + CryptoManagerKmipCryptoKeyStatusKeyUnavailableReasonKeyStateMissingInCache = CryptoManagerKmipCryptoKeyStatusKeyUnavailableReason("KeyStateMissingInCache") + CryptoManagerKmipCryptoKeyStatusKeyUnavailableReasonKeyStateClusterInvalid = CryptoManagerKmipCryptoKeyStatusKeyUnavailableReason("KeyStateClusterInvalid") + CryptoManagerKmipCryptoKeyStatusKeyUnavailableReasonKeyStateClusterUnreachable = CryptoManagerKmipCryptoKeyStatusKeyUnavailableReason("KeyStateClusterUnreachable") + CryptoManagerKmipCryptoKeyStatusKeyUnavailableReasonKeyStateMissingInKMS = CryptoManagerKmipCryptoKeyStatusKeyUnavailableReason("KeyStateMissingInKMS") + CryptoManagerKmipCryptoKeyStatusKeyUnavailableReasonKeyStateNotActiveOrEnabled = CryptoManagerKmipCryptoKeyStatusKeyUnavailableReason("KeyStateNotActiveOrEnabled") + CryptoManagerKmipCryptoKeyStatusKeyUnavailableReasonKeyStateManagedByTrustAuthority = CryptoManagerKmipCryptoKeyStatusKeyUnavailableReason("KeyStateManagedByTrustAuthority") +) + +func init() { + t["CryptoManagerKmipCryptoKeyStatusKeyUnavailableReason"] = reflect.TypeOf((*CryptoManagerKmipCryptoKeyStatusKeyUnavailableReason)(nil)).Elem() +} + +type CustomizationFailedReasonCode string + +const ( + CustomizationFailedReasonCodeUserDefinedScriptDisabled = CustomizationFailedReasonCode("userDefinedScriptDisabled") +) + +func init() { + t["CustomizationFailedReasonCode"] = reflect.TypeOf((*CustomizationFailedReasonCode)(nil)).Elem() +} + +type CustomizationLicenseDataMode string + +const ( + CustomizationLicenseDataModePerServer = CustomizationLicenseDataMode("perServer") + CustomizationLicenseDataModePerSeat = CustomizationLicenseDataMode("perSeat") +) + +func init() { + t["CustomizationLicenseDataMode"] = reflect.TypeOf((*CustomizationLicenseDataMode)(nil)).Elem() +} + +type CustomizationNetBIOSMode string + +const ( + CustomizationNetBIOSModeEnableNetBIOSViaDhcp = CustomizationNetBIOSMode("enableNetBIOSViaDhcp") + CustomizationNetBIOSModeEnableNetBIOS = CustomizationNetBIOSMode("enableNetBIOS") + CustomizationNetBIOSModeDisableNetBIOS = CustomizationNetBIOSMode("disableNetBIOS") +) + +func init() { + t["CustomizationNetBIOSMode"] = reflect.TypeOf((*CustomizationNetBIOSMode)(nil)).Elem() +} + +type CustomizationSysprepRebootOption string + +const ( + CustomizationSysprepRebootOptionReboot = CustomizationSysprepRebootOption("reboot") + CustomizationSysprepRebootOptionNoreboot = CustomizationSysprepRebootOption("noreboot") + CustomizationSysprepRebootOptionShutdown = CustomizationSysprepRebootOption("shutdown") +) + +func init() { + t["CustomizationSysprepRebootOption"] = reflect.TypeOf((*CustomizationSysprepRebootOption)(nil)).Elem() +} + +type DVPortStatusVmDirectPathGen2InactiveReasonNetwork string + +const ( + DVPortStatusVmDirectPathGen2InactiveReasonNetworkPortNptIncompatibleDvs = DVPortStatusVmDirectPathGen2InactiveReasonNetwork("portNptIncompatibleDvs") + DVPortStatusVmDirectPathGen2InactiveReasonNetworkPortNptNoCompatibleNics = DVPortStatusVmDirectPathGen2InactiveReasonNetwork("portNptNoCompatibleNics") + DVPortStatusVmDirectPathGen2InactiveReasonNetworkPortNptNoVirtualFunctionsAvailable = DVPortStatusVmDirectPathGen2InactiveReasonNetwork("portNptNoVirtualFunctionsAvailable") + DVPortStatusVmDirectPathGen2InactiveReasonNetworkPortNptDisabledForPort = DVPortStatusVmDirectPathGen2InactiveReasonNetwork("portNptDisabledForPort") +) + +func init() { + t["DVPortStatusVmDirectPathGen2InactiveReasonNetwork"] = reflect.TypeOf((*DVPortStatusVmDirectPathGen2InactiveReasonNetwork)(nil)).Elem() +} + +type DVPortStatusVmDirectPathGen2InactiveReasonOther string + +const ( + DVPortStatusVmDirectPathGen2InactiveReasonOtherPortNptIncompatibleHost = DVPortStatusVmDirectPathGen2InactiveReasonOther("portNptIncompatibleHost") + DVPortStatusVmDirectPathGen2InactiveReasonOtherPortNptIncompatibleConnectee = DVPortStatusVmDirectPathGen2InactiveReasonOther("portNptIncompatibleConnectee") +) + +func init() { + t["DVPortStatusVmDirectPathGen2InactiveReasonOther"] = reflect.TypeOf((*DVPortStatusVmDirectPathGen2InactiveReasonOther)(nil)).Elem() +} + +type DVSMacLimitPolicyType string + +const ( + DVSMacLimitPolicyTypeAllow = DVSMacLimitPolicyType("allow") + DVSMacLimitPolicyTypeDrop = DVSMacLimitPolicyType("drop") +) + +func init() { + t["DVSMacLimitPolicyType"] = reflect.TypeOf((*DVSMacLimitPolicyType)(nil)).Elem() +} + +type DasConfigFaultDasConfigFaultReason string + +const ( + DasConfigFaultDasConfigFaultReasonHostNetworkMisconfiguration = DasConfigFaultDasConfigFaultReason("HostNetworkMisconfiguration") + DasConfigFaultDasConfigFaultReasonHostMisconfiguration = DasConfigFaultDasConfigFaultReason("HostMisconfiguration") + DasConfigFaultDasConfigFaultReasonInsufficientPrivileges = DasConfigFaultDasConfigFaultReason("InsufficientPrivileges") + DasConfigFaultDasConfigFaultReasonNoPrimaryAgentAvailable = DasConfigFaultDasConfigFaultReason("NoPrimaryAgentAvailable") + DasConfigFaultDasConfigFaultReasonOther = DasConfigFaultDasConfigFaultReason("Other") + DasConfigFaultDasConfigFaultReasonNoDatastoresConfigured = DasConfigFaultDasConfigFaultReason("NoDatastoresConfigured") + DasConfigFaultDasConfigFaultReasonCreateConfigVvolFailed = DasConfigFaultDasConfigFaultReason("CreateConfigVvolFailed") + DasConfigFaultDasConfigFaultReasonVSanNotSupportedOnHost = DasConfigFaultDasConfigFaultReason("VSanNotSupportedOnHost") + DasConfigFaultDasConfigFaultReasonDasNetworkMisconfiguration = DasConfigFaultDasConfigFaultReason("DasNetworkMisconfiguration") + DasConfigFaultDasConfigFaultReasonSetDesiredImageSpecFailed = DasConfigFaultDasConfigFaultReason("SetDesiredImageSpecFailed") + DasConfigFaultDasConfigFaultReasonApplyHAVibsOnClusterFailed = DasConfigFaultDasConfigFaultReason("ApplyHAVibsOnClusterFailed") +) + +func init() { + t["DasConfigFaultDasConfigFaultReason"] = reflect.TypeOf((*DasConfigFaultDasConfigFaultReason)(nil)).Elem() +} + +type DasVmPriority string + +const ( + DasVmPriorityDisabled = DasVmPriority("disabled") + DasVmPriorityLow = DasVmPriority("low") + DasVmPriorityMedium = DasVmPriority("medium") + DasVmPriorityHigh = DasVmPriority("high") +) + +func init() { + t["DasVmPriority"] = reflect.TypeOf((*DasVmPriority)(nil)).Elem() +} + +type DatastoreAccessible string + +const ( + DatastoreAccessibleTrue = DatastoreAccessible("True") + DatastoreAccessibleFalse = DatastoreAccessible("False") +) + +func init() { + t["DatastoreAccessible"] = reflect.TypeOf((*DatastoreAccessible)(nil)).Elem() +} + +type DatastoreSummaryMaintenanceModeState string + +const ( + DatastoreSummaryMaintenanceModeStateNormal = DatastoreSummaryMaintenanceModeState("normal") + DatastoreSummaryMaintenanceModeStateEnteringMaintenance = DatastoreSummaryMaintenanceModeState("enteringMaintenance") + DatastoreSummaryMaintenanceModeStateInMaintenance = DatastoreSummaryMaintenanceModeState("inMaintenance") +) + +func init() { + t["DatastoreSummaryMaintenanceModeState"] = reflect.TypeOf((*DatastoreSummaryMaintenanceModeState)(nil)).Elem() +} + +type DayOfWeek string + +const ( + DayOfWeekSunday = DayOfWeek("sunday") + DayOfWeekMonday = DayOfWeek("monday") + DayOfWeekTuesday = DayOfWeek("tuesday") + DayOfWeekWednesday = DayOfWeek("wednesday") + DayOfWeekThursday = DayOfWeek("thursday") + DayOfWeekFriday = DayOfWeek("friday") + DayOfWeekSaturday = DayOfWeek("saturday") +) + +func init() { + t["DayOfWeek"] = reflect.TypeOf((*DayOfWeek)(nil)).Elem() +} + +type DeviceNotSupportedReason string + +const ( + DeviceNotSupportedReasonHost = DeviceNotSupportedReason("host") + DeviceNotSupportedReasonGuest = DeviceNotSupportedReason("guest") +) + +func init() { + t["DeviceNotSupportedReason"] = reflect.TypeOf((*DeviceNotSupportedReason)(nil)).Elem() +} + +type DiagnosticManagerLogCreator string + +const ( + DiagnosticManagerLogCreatorVpxd = DiagnosticManagerLogCreator("vpxd") + DiagnosticManagerLogCreatorVpxa = DiagnosticManagerLogCreator("vpxa") + DiagnosticManagerLogCreatorHostd = DiagnosticManagerLogCreator("hostd") + DiagnosticManagerLogCreatorServerd = DiagnosticManagerLogCreator("serverd") + DiagnosticManagerLogCreatorInstall = DiagnosticManagerLogCreator("install") + DiagnosticManagerLogCreatorVpxClient = DiagnosticManagerLogCreator("vpxClient") + DiagnosticManagerLogCreatorRecordLog = DiagnosticManagerLogCreator("recordLog") +) + +func init() { + t["DiagnosticManagerLogCreator"] = reflect.TypeOf((*DiagnosticManagerLogCreator)(nil)).Elem() +} + +type DiagnosticManagerLogFormat string + +const ( + DiagnosticManagerLogFormatPlain = DiagnosticManagerLogFormat("plain") +) + +func init() { + t["DiagnosticManagerLogFormat"] = reflect.TypeOf((*DiagnosticManagerLogFormat)(nil)).Elem() +} + +type DiagnosticPartitionStorageType string + +const ( + DiagnosticPartitionStorageTypeDirectAttached = DiagnosticPartitionStorageType("directAttached") + DiagnosticPartitionStorageTypeNetworkAttached = DiagnosticPartitionStorageType("networkAttached") +) + +func init() { + t["DiagnosticPartitionStorageType"] = reflect.TypeOf((*DiagnosticPartitionStorageType)(nil)).Elem() +} + +type DiagnosticPartitionType string + +const ( + DiagnosticPartitionTypeSingleHost = DiagnosticPartitionType("singleHost") + DiagnosticPartitionTypeMultiHost = DiagnosticPartitionType("multiHost") +) + +func init() { + t["DiagnosticPartitionType"] = reflect.TypeOf((*DiagnosticPartitionType)(nil)).Elem() +} + +type DisallowedChangeByServiceDisallowedChange string + +const ( + DisallowedChangeByServiceDisallowedChangeHotExtendDisk = DisallowedChangeByServiceDisallowedChange("hotExtendDisk") +) + +func init() { + t["DisallowedChangeByServiceDisallowedChange"] = reflect.TypeOf((*DisallowedChangeByServiceDisallowedChange)(nil)).Elem() +} + +type DistributedVirtualPortgroupBackingType string + +const ( + DistributedVirtualPortgroupBackingTypeStandard = DistributedVirtualPortgroupBackingType("standard") + DistributedVirtualPortgroupBackingTypeNsx = DistributedVirtualPortgroupBackingType("nsx") +) + +func init() { + t["DistributedVirtualPortgroupBackingType"] = reflect.TypeOf((*DistributedVirtualPortgroupBackingType)(nil)).Elem() +} + +type DistributedVirtualPortgroupMetaTagName string + +const ( + DistributedVirtualPortgroupMetaTagNameDvsName = DistributedVirtualPortgroupMetaTagName("dvsName") + DistributedVirtualPortgroupMetaTagNamePortgroupName = DistributedVirtualPortgroupMetaTagName("portgroupName") + DistributedVirtualPortgroupMetaTagNamePortIndex = DistributedVirtualPortgroupMetaTagName("portIndex") +) + +func init() { + t["DistributedVirtualPortgroupMetaTagName"] = reflect.TypeOf((*DistributedVirtualPortgroupMetaTagName)(nil)).Elem() +} + +type DistributedVirtualPortgroupPortgroupType string + +const ( + DistributedVirtualPortgroupPortgroupTypeEarlyBinding = DistributedVirtualPortgroupPortgroupType("earlyBinding") + DistributedVirtualPortgroupPortgroupTypeLateBinding = DistributedVirtualPortgroupPortgroupType("lateBinding") + DistributedVirtualPortgroupPortgroupTypeEphemeral = DistributedVirtualPortgroupPortgroupType("ephemeral") +) + +func init() { + t["DistributedVirtualPortgroupPortgroupType"] = reflect.TypeOf((*DistributedVirtualPortgroupPortgroupType)(nil)).Elem() +} + +type DistributedVirtualSwitchHostInfrastructureTrafficClass string + +const ( + DistributedVirtualSwitchHostInfrastructureTrafficClassManagement = DistributedVirtualSwitchHostInfrastructureTrafficClass("management") + DistributedVirtualSwitchHostInfrastructureTrafficClassFaultTolerance = DistributedVirtualSwitchHostInfrastructureTrafficClass("faultTolerance") + DistributedVirtualSwitchHostInfrastructureTrafficClassVmotion = DistributedVirtualSwitchHostInfrastructureTrafficClass("vmotion") + DistributedVirtualSwitchHostInfrastructureTrafficClassVirtualMachine = DistributedVirtualSwitchHostInfrastructureTrafficClass("virtualMachine") + DistributedVirtualSwitchHostInfrastructureTrafficClassISCSI = DistributedVirtualSwitchHostInfrastructureTrafficClass("iSCSI") + DistributedVirtualSwitchHostInfrastructureTrafficClassNfs = DistributedVirtualSwitchHostInfrastructureTrafficClass("nfs") + DistributedVirtualSwitchHostInfrastructureTrafficClassHbr = DistributedVirtualSwitchHostInfrastructureTrafficClass("hbr") + DistributedVirtualSwitchHostInfrastructureTrafficClassVsan = DistributedVirtualSwitchHostInfrastructureTrafficClass("vsan") + DistributedVirtualSwitchHostInfrastructureTrafficClassVdp = DistributedVirtualSwitchHostInfrastructureTrafficClass("vdp") +) + +func init() { + t["DistributedVirtualSwitchHostInfrastructureTrafficClass"] = reflect.TypeOf((*DistributedVirtualSwitchHostInfrastructureTrafficClass)(nil)).Elem() +} + +type DistributedVirtualSwitchHostMemberHostComponentState string + +const ( + DistributedVirtualSwitchHostMemberHostComponentStateUp = DistributedVirtualSwitchHostMemberHostComponentState("up") + DistributedVirtualSwitchHostMemberHostComponentStatePending = DistributedVirtualSwitchHostMemberHostComponentState("pending") + DistributedVirtualSwitchHostMemberHostComponentStateOutOfSync = DistributedVirtualSwitchHostMemberHostComponentState("outOfSync") + DistributedVirtualSwitchHostMemberHostComponentStateWarning = DistributedVirtualSwitchHostMemberHostComponentState("warning") + DistributedVirtualSwitchHostMemberHostComponentStateDisconnected = DistributedVirtualSwitchHostMemberHostComponentState("disconnected") + DistributedVirtualSwitchHostMemberHostComponentStateDown = DistributedVirtualSwitchHostMemberHostComponentState("down") +) + +func init() { + t["DistributedVirtualSwitchHostMemberHostComponentState"] = reflect.TypeOf((*DistributedVirtualSwitchHostMemberHostComponentState)(nil)).Elem() +} + +type DistributedVirtualSwitchHostMemberTransportZoneType string + +const ( + DistributedVirtualSwitchHostMemberTransportZoneTypeVlan = DistributedVirtualSwitchHostMemberTransportZoneType("vlan") + DistributedVirtualSwitchHostMemberTransportZoneTypeOverlay = DistributedVirtualSwitchHostMemberTransportZoneType("overlay") +) + +func init() { + t["DistributedVirtualSwitchHostMemberTransportZoneType"] = reflect.TypeOf((*DistributedVirtualSwitchHostMemberTransportZoneType)(nil)).Elem() +} + +type DistributedVirtualSwitchNetworkResourceControlVersion string + +const ( + DistributedVirtualSwitchNetworkResourceControlVersionVersion2 = DistributedVirtualSwitchNetworkResourceControlVersion("version2") + DistributedVirtualSwitchNetworkResourceControlVersionVersion3 = DistributedVirtualSwitchNetworkResourceControlVersion("version3") +) + +func init() { + t["DistributedVirtualSwitchNetworkResourceControlVersion"] = reflect.TypeOf((*DistributedVirtualSwitchNetworkResourceControlVersion)(nil)).Elem() +} + +type DistributedVirtualSwitchNicTeamingPolicyMode string + +const ( + DistributedVirtualSwitchNicTeamingPolicyModeLoadbalance_ip = DistributedVirtualSwitchNicTeamingPolicyMode("loadbalance_ip") + DistributedVirtualSwitchNicTeamingPolicyModeLoadbalance_srcmac = DistributedVirtualSwitchNicTeamingPolicyMode("loadbalance_srcmac") + DistributedVirtualSwitchNicTeamingPolicyModeLoadbalance_srcid = DistributedVirtualSwitchNicTeamingPolicyMode("loadbalance_srcid") + DistributedVirtualSwitchNicTeamingPolicyModeFailover_explicit = DistributedVirtualSwitchNicTeamingPolicyMode("failover_explicit") + DistributedVirtualSwitchNicTeamingPolicyModeLoadbalance_loadbased = DistributedVirtualSwitchNicTeamingPolicyMode("loadbalance_loadbased") +) + +func init() { + t["DistributedVirtualSwitchNicTeamingPolicyMode"] = reflect.TypeOf((*DistributedVirtualSwitchNicTeamingPolicyMode)(nil)).Elem() +} + +type DistributedVirtualSwitchPortConnecteeConnecteeType string + +const ( + DistributedVirtualSwitchPortConnecteeConnecteeTypePnic = DistributedVirtualSwitchPortConnecteeConnecteeType("pnic") + DistributedVirtualSwitchPortConnecteeConnecteeTypeVmVnic = DistributedVirtualSwitchPortConnecteeConnecteeType("vmVnic") + DistributedVirtualSwitchPortConnecteeConnecteeTypeHostConsoleVnic = DistributedVirtualSwitchPortConnecteeConnecteeType("hostConsoleVnic") + DistributedVirtualSwitchPortConnecteeConnecteeTypeHostVmkVnic = DistributedVirtualSwitchPortConnecteeConnecteeType("hostVmkVnic") +) + +func init() { + t["DistributedVirtualSwitchPortConnecteeConnecteeType"] = reflect.TypeOf((*DistributedVirtualSwitchPortConnecteeConnecteeType)(nil)).Elem() +} + +type DistributedVirtualSwitchProductSpecOperationType string + +const ( + DistributedVirtualSwitchProductSpecOperationTypePreInstall = DistributedVirtualSwitchProductSpecOperationType("preInstall") + DistributedVirtualSwitchProductSpecOperationTypeUpgrade = DistributedVirtualSwitchProductSpecOperationType("upgrade") + DistributedVirtualSwitchProductSpecOperationTypeNotifyAvailableUpgrade = DistributedVirtualSwitchProductSpecOperationType("notifyAvailableUpgrade") + DistributedVirtualSwitchProductSpecOperationTypeProceedWithUpgrade = DistributedVirtualSwitchProductSpecOperationType("proceedWithUpgrade") + DistributedVirtualSwitchProductSpecOperationTypeUpdateBundleInfo = DistributedVirtualSwitchProductSpecOperationType("updateBundleInfo") +) + +func init() { + t["DistributedVirtualSwitchProductSpecOperationType"] = reflect.TypeOf((*DistributedVirtualSwitchProductSpecOperationType)(nil)).Elem() +} + +type DpmBehavior string + +const ( + DpmBehaviorManual = DpmBehavior("manual") + DpmBehaviorAutomated = DpmBehavior("automated") +) + +func init() { + t["DpmBehavior"] = reflect.TypeOf((*DpmBehavior)(nil)).Elem() +} + +type DrsBehavior string + +const ( + DrsBehaviorManual = DrsBehavior("manual") + DrsBehaviorPartiallyAutomated = DrsBehavior("partiallyAutomated") + DrsBehaviorFullyAutomated = DrsBehavior("fullyAutomated") +) + +func init() { + t["DrsBehavior"] = reflect.TypeOf((*DrsBehavior)(nil)).Elem() +} + +type DrsInjectorWorkloadCorrelationState string + +const ( + DrsInjectorWorkloadCorrelationStateCorrelated = DrsInjectorWorkloadCorrelationState("Correlated") + DrsInjectorWorkloadCorrelationStateUncorrelated = DrsInjectorWorkloadCorrelationState("Uncorrelated") +) + +func init() { + t["DrsInjectorWorkloadCorrelationState"] = reflect.TypeOf((*DrsInjectorWorkloadCorrelationState)(nil)).Elem() +} + +type DrsRecommendationReasonCode string + +const ( + DrsRecommendationReasonCodeFairnessCpuAvg = DrsRecommendationReasonCode("fairnessCpuAvg") + DrsRecommendationReasonCodeFairnessMemAvg = DrsRecommendationReasonCode("fairnessMemAvg") + DrsRecommendationReasonCodeJointAffin = DrsRecommendationReasonCode("jointAffin") + DrsRecommendationReasonCodeAntiAffin = DrsRecommendationReasonCode("antiAffin") + DrsRecommendationReasonCodeHostMaint = DrsRecommendationReasonCode("hostMaint") +) + +func init() { + t["DrsRecommendationReasonCode"] = reflect.TypeOf((*DrsRecommendationReasonCode)(nil)).Elem() +} + +type DvsEventPortBlockState string + +const ( + DvsEventPortBlockStateUnset = DvsEventPortBlockState("unset") + DvsEventPortBlockStateBlocked = DvsEventPortBlockState("blocked") + DvsEventPortBlockStateUnblocked = DvsEventPortBlockState("unblocked") + DvsEventPortBlockStateUnknown = DvsEventPortBlockState("unknown") +) + +func init() { + t["DvsEventPortBlockState"] = reflect.TypeOf((*DvsEventPortBlockState)(nil)).Elem() +} + +type DvsFilterOnFailure string + +const ( + DvsFilterOnFailureFailOpen = DvsFilterOnFailure("failOpen") + DvsFilterOnFailureFailClosed = DvsFilterOnFailure("failClosed") +) + +func init() { + t["DvsFilterOnFailure"] = reflect.TypeOf((*DvsFilterOnFailure)(nil)).Elem() +} + +type DvsNetworkRuleDirectionType string + +const ( + DvsNetworkRuleDirectionTypeIncomingPackets = DvsNetworkRuleDirectionType("incomingPackets") + DvsNetworkRuleDirectionTypeOutgoingPackets = DvsNetworkRuleDirectionType("outgoingPackets") + DvsNetworkRuleDirectionTypeBoth = DvsNetworkRuleDirectionType("both") +) + +func init() { + t["DvsNetworkRuleDirectionType"] = reflect.TypeOf((*DvsNetworkRuleDirectionType)(nil)).Elem() +} + +type EntityImportType string + +const ( + EntityImportTypeCreateEntityWithNewIdentifier = EntityImportType("createEntityWithNewIdentifier") + EntityImportTypeCreateEntityWithOriginalIdentifier = EntityImportType("createEntityWithOriginalIdentifier") + EntityImportTypeApplyToEntitySpecified = EntityImportType("applyToEntitySpecified") +) + +func init() { + t["EntityImportType"] = reflect.TypeOf((*EntityImportType)(nil)).Elem() +} + +type EntityType string + +const ( + EntityTypeDistributedVirtualSwitch = EntityType("distributedVirtualSwitch") + EntityTypeDistributedVirtualPortgroup = EntityType("distributedVirtualPortgroup") +) + +func init() { + t["EntityType"] = reflect.TypeOf((*EntityType)(nil)).Elem() +} + +type EventAlarmExpressionComparisonOperator string + +const ( + EventAlarmExpressionComparisonOperatorEquals = EventAlarmExpressionComparisonOperator("equals") + EventAlarmExpressionComparisonOperatorNotEqualTo = EventAlarmExpressionComparisonOperator("notEqualTo") + EventAlarmExpressionComparisonOperatorStartsWith = EventAlarmExpressionComparisonOperator("startsWith") + EventAlarmExpressionComparisonOperatorDoesNotStartWith = EventAlarmExpressionComparisonOperator("doesNotStartWith") + EventAlarmExpressionComparisonOperatorEndsWith = EventAlarmExpressionComparisonOperator("endsWith") + EventAlarmExpressionComparisonOperatorDoesNotEndWith = EventAlarmExpressionComparisonOperator("doesNotEndWith") +) + +func init() { + t["EventAlarmExpressionComparisonOperator"] = reflect.TypeOf((*EventAlarmExpressionComparisonOperator)(nil)).Elem() +} + +type EventCategory string + +const ( + EventCategoryInfo = EventCategory("info") + EventCategoryWarning = EventCategory("warning") + EventCategoryError = EventCategory("error") + EventCategoryUser = EventCategory("user") +) + +func init() { + t["EventCategory"] = reflect.TypeOf((*EventCategory)(nil)).Elem() +} + +type EventEventSeverity string + +const ( + EventEventSeverityError = EventEventSeverity("error") + EventEventSeverityWarning = EventEventSeverity("warning") + EventEventSeverityInfo = EventEventSeverity("info") + EventEventSeverityUser = EventEventSeverity("user") +) + +func init() { + t["EventEventSeverity"] = reflect.TypeOf((*EventEventSeverity)(nil)).Elem() +} + +type EventFilterSpecRecursionOption string + +const ( + EventFilterSpecRecursionOptionSelf = EventFilterSpecRecursionOption("self") + EventFilterSpecRecursionOptionChildren = EventFilterSpecRecursionOption("children") + EventFilterSpecRecursionOptionAll = EventFilterSpecRecursionOption("all") +) + +func init() { + t["EventFilterSpecRecursionOption"] = reflect.TypeOf((*EventFilterSpecRecursionOption)(nil)).Elem() +} + +type FibreChannelPortType string + +const ( + FibreChannelPortTypeFabric = FibreChannelPortType("fabric") + FibreChannelPortTypeLoop = FibreChannelPortType("loop") + FibreChannelPortTypePointToPoint = FibreChannelPortType("pointToPoint") + FibreChannelPortTypeUnknown = FibreChannelPortType("unknown") +) + +func init() { + t["FibreChannelPortType"] = reflect.TypeOf((*FibreChannelPortType)(nil)).Elem() +} + +type FileSystemMountInfoVStorageSupportStatus string + +const ( + FileSystemMountInfoVStorageSupportStatusVStorageSupported = FileSystemMountInfoVStorageSupportStatus("vStorageSupported") + FileSystemMountInfoVStorageSupportStatusVStorageUnsupported = FileSystemMountInfoVStorageSupportStatus("vStorageUnsupported") + FileSystemMountInfoVStorageSupportStatusVStorageUnknown = FileSystemMountInfoVStorageSupportStatus("vStorageUnknown") +) + +func init() { + t["FileSystemMountInfoVStorageSupportStatus"] = reflect.TypeOf((*FileSystemMountInfoVStorageSupportStatus)(nil)).Elem() +} + +type FolderDesiredHostState string + +const ( + FolderDesiredHostStateMaintenance = FolderDesiredHostState("maintenance") + FolderDesiredHostStateNon_maintenance = FolderDesiredHostState("non_maintenance") +) + +func init() { + t["FolderDesiredHostState"] = reflect.TypeOf((*FolderDesiredHostState)(nil)).Elem() +} + +type FtIssuesOnHostHostSelectionType string + +const ( + FtIssuesOnHostHostSelectionTypeUser = FtIssuesOnHostHostSelectionType("user") + FtIssuesOnHostHostSelectionTypeVc = FtIssuesOnHostHostSelectionType("vc") + FtIssuesOnHostHostSelectionTypeDrs = FtIssuesOnHostHostSelectionType("drs") +) + +func init() { + t["FtIssuesOnHostHostSelectionType"] = reflect.TypeOf((*FtIssuesOnHostHostSelectionType)(nil)).Elem() +} + +type GuestFileType string + +const ( + GuestFileTypeFile = GuestFileType("file") + GuestFileTypeDirectory = GuestFileType("directory") + GuestFileTypeSymlink = GuestFileType("symlink") +) + +func init() { + t["GuestFileType"] = reflect.TypeOf((*GuestFileType)(nil)).Elem() +} + +type GuestInfoAppStateType string + +const ( + GuestInfoAppStateTypeNone = GuestInfoAppStateType("none") + GuestInfoAppStateTypeAppStateOk = GuestInfoAppStateType("appStateOk") + GuestInfoAppStateTypeAppStateNeedReset = GuestInfoAppStateType("appStateNeedReset") +) + +func init() { + t["GuestInfoAppStateType"] = reflect.TypeOf((*GuestInfoAppStateType)(nil)).Elem() +} + +type GuestOsDescriptorFirmwareType string + +const ( + GuestOsDescriptorFirmwareTypeBios = GuestOsDescriptorFirmwareType("bios") + GuestOsDescriptorFirmwareTypeEfi = GuestOsDescriptorFirmwareType("efi") +) + +func init() { + t["GuestOsDescriptorFirmwareType"] = reflect.TypeOf((*GuestOsDescriptorFirmwareType)(nil)).Elem() +} + +type GuestOsDescriptorSupportLevel string + +const ( + GuestOsDescriptorSupportLevelExperimental = GuestOsDescriptorSupportLevel("experimental") + GuestOsDescriptorSupportLevelLegacy = GuestOsDescriptorSupportLevel("legacy") + GuestOsDescriptorSupportLevelTerminated = GuestOsDescriptorSupportLevel("terminated") + GuestOsDescriptorSupportLevelSupported = GuestOsDescriptorSupportLevel("supported") + GuestOsDescriptorSupportLevelUnsupported = GuestOsDescriptorSupportLevel("unsupported") + GuestOsDescriptorSupportLevelDeprecated = GuestOsDescriptorSupportLevel("deprecated") + GuestOsDescriptorSupportLevelTechPreview = GuestOsDescriptorSupportLevel("techPreview") +) + +func init() { + t["GuestOsDescriptorSupportLevel"] = reflect.TypeOf((*GuestOsDescriptorSupportLevel)(nil)).Elem() +} + +type GuestRegKeyWowSpec string + +const ( + GuestRegKeyWowSpecWOWNative = GuestRegKeyWowSpec("WOWNative") + GuestRegKeyWowSpecWOW32 = GuestRegKeyWowSpec("WOW32") + GuestRegKeyWowSpecWOW64 = GuestRegKeyWowSpec("WOW64") +) + +func init() { + t["GuestRegKeyWowSpec"] = reflect.TypeOf((*GuestRegKeyWowSpec)(nil)).Elem() +} + +type HealthUpdateInfoComponentType string + +const ( + HealthUpdateInfoComponentTypeMemory = HealthUpdateInfoComponentType("Memory") + HealthUpdateInfoComponentTypePower = HealthUpdateInfoComponentType("Power") + HealthUpdateInfoComponentTypeFan = HealthUpdateInfoComponentType("Fan") + HealthUpdateInfoComponentTypeNetwork = HealthUpdateInfoComponentType("Network") + HealthUpdateInfoComponentTypeStorage = HealthUpdateInfoComponentType("Storage") +) + +func init() { + t["HealthUpdateInfoComponentType"] = reflect.TypeOf((*HealthUpdateInfoComponentType)(nil)).Elem() +} + +type HostAccessMode string + +const ( + HostAccessModeAccessNone = HostAccessMode("accessNone") + HostAccessModeAccessAdmin = HostAccessMode("accessAdmin") + HostAccessModeAccessNoAccess = HostAccessMode("accessNoAccess") + HostAccessModeAccessReadOnly = HostAccessMode("accessReadOnly") + HostAccessModeAccessOther = HostAccessMode("accessOther") +) + +func init() { + t["HostAccessMode"] = reflect.TypeOf((*HostAccessMode)(nil)).Elem() +} + +type HostActiveDirectoryAuthenticationCertificateDigest string + +const ( + HostActiveDirectoryAuthenticationCertificateDigestSHA1 = HostActiveDirectoryAuthenticationCertificateDigest("SHA1") +) + +func init() { + t["HostActiveDirectoryAuthenticationCertificateDigest"] = reflect.TypeOf((*HostActiveDirectoryAuthenticationCertificateDigest)(nil)).Elem() +} + +type HostActiveDirectoryInfoDomainMembershipStatus string + +const ( + HostActiveDirectoryInfoDomainMembershipStatusUnknown = HostActiveDirectoryInfoDomainMembershipStatus("unknown") + HostActiveDirectoryInfoDomainMembershipStatusOk = HostActiveDirectoryInfoDomainMembershipStatus("ok") + HostActiveDirectoryInfoDomainMembershipStatusNoServers = HostActiveDirectoryInfoDomainMembershipStatus("noServers") + HostActiveDirectoryInfoDomainMembershipStatusClientTrustBroken = HostActiveDirectoryInfoDomainMembershipStatus("clientTrustBroken") + HostActiveDirectoryInfoDomainMembershipStatusServerTrustBroken = HostActiveDirectoryInfoDomainMembershipStatus("serverTrustBroken") + HostActiveDirectoryInfoDomainMembershipStatusInconsistentTrust = HostActiveDirectoryInfoDomainMembershipStatus("inconsistentTrust") + HostActiveDirectoryInfoDomainMembershipStatusOtherProblem = HostActiveDirectoryInfoDomainMembershipStatus("otherProblem") +) + +func init() { + t["HostActiveDirectoryInfoDomainMembershipStatus"] = reflect.TypeOf((*HostActiveDirectoryInfoDomainMembershipStatus)(nil)).Elem() +} + +type HostCapabilityFtUnsupportedReason string + +const ( + HostCapabilityFtUnsupportedReasonVMotionNotLicensed = HostCapabilityFtUnsupportedReason("vMotionNotLicensed") + HostCapabilityFtUnsupportedReasonMissingVMotionNic = HostCapabilityFtUnsupportedReason("missingVMotionNic") + HostCapabilityFtUnsupportedReasonMissingFTLoggingNic = HostCapabilityFtUnsupportedReason("missingFTLoggingNic") + HostCapabilityFtUnsupportedReasonFtNotLicensed = HostCapabilityFtUnsupportedReason("ftNotLicensed") + HostCapabilityFtUnsupportedReasonHaAgentIssue = HostCapabilityFtUnsupportedReason("haAgentIssue") + HostCapabilityFtUnsupportedReasonUnsupportedProduct = HostCapabilityFtUnsupportedReason("unsupportedProduct") + HostCapabilityFtUnsupportedReasonCpuHvUnsupported = HostCapabilityFtUnsupportedReason("cpuHvUnsupported") + HostCapabilityFtUnsupportedReasonCpuHwmmuUnsupported = HostCapabilityFtUnsupportedReason("cpuHwmmuUnsupported") + HostCapabilityFtUnsupportedReasonCpuHvDisabled = HostCapabilityFtUnsupportedReason("cpuHvDisabled") +) + +func init() { + t["HostCapabilityFtUnsupportedReason"] = reflect.TypeOf((*HostCapabilityFtUnsupportedReason)(nil)).Elem() +} + +type HostCapabilityUnmapMethodSupported string + +const ( + HostCapabilityUnmapMethodSupportedPriority = HostCapabilityUnmapMethodSupported("priority") + HostCapabilityUnmapMethodSupportedFixed = HostCapabilityUnmapMethodSupported("fixed") + HostCapabilityUnmapMethodSupportedDynamic = HostCapabilityUnmapMethodSupported("dynamic") +) + +func init() { + t["HostCapabilityUnmapMethodSupported"] = reflect.TypeOf((*HostCapabilityUnmapMethodSupported)(nil)).Elem() +} + +type HostCapabilityVmDirectPathGen2UnsupportedReason string + +const ( + HostCapabilityVmDirectPathGen2UnsupportedReasonHostNptIncompatibleProduct = HostCapabilityVmDirectPathGen2UnsupportedReason("hostNptIncompatibleProduct") + HostCapabilityVmDirectPathGen2UnsupportedReasonHostNptIncompatibleHardware = HostCapabilityVmDirectPathGen2UnsupportedReason("hostNptIncompatibleHardware") + HostCapabilityVmDirectPathGen2UnsupportedReasonHostNptDisabled = HostCapabilityVmDirectPathGen2UnsupportedReason("hostNptDisabled") +) + +func init() { + t["HostCapabilityVmDirectPathGen2UnsupportedReason"] = reflect.TypeOf((*HostCapabilityVmDirectPathGen2UnsupportedReason)(nil)).Elem() +} + +type HostCertificateManagerCertificateInfoCertificateStatus string + +const ( + HostCertificateManagerCertificateInfoCertificateStatusUnknown = HostCertificateManagerCertificateInfoCertificateStatus("unknown") + HostCertificateManagerCertificateInfoCertificateStatusExpired = HostCertificateManagerCertificateInfoCertificateStatus("expired") + HostCertificateManagerCertificateInfoCertificateStatusExpiring = HostCertificateManagerCertificateInfoCertificateStatus("expiring") + HostCertificateManagerCertificateInfoCertificateStatusExpiringShortly = HostCertificateManagerCertificateInfoCertificateStatus("expiringShortly") + HostCertificateManagerCertificateInfoCertificateStatusExpirationImminent = HostCertificateManagerCertificateInfoCertificateStatus("expirationImminent") + HostCertificateManagerCertificateInfoCertificateStatusGood = HostCertificateManagerCertificateInfoCertificateStatus("good") +) + +func init() { + t["HostCertificateManagerCertificateInfoCertificateStatus"] = reflect.TypeOf((*HostCertificateManagerCertificateInfoCertificateStatus)(nil)).Elem() +} + +type HostConfigChangeMode string + +const ( + HostConfigChangeModeModify = HostConfigChangeMode("modify") + HostConfigChangeModeReplace = HostConfigChangeMode("replace") +) + +func init() { + t["HostConfigChangeMode"] = reflect.TypeOf((*HostConfigChangeMode)(nil)).Elem() +} + +type HostConfigChangeOperation string + +const ( + HostConfigChangeOperationAdd = HostConfigChangeOperation("add") + HostConfigChangeOperationRemove = HostConfigChangeOperation("remove") + HostConfigChangeOperationEdit = HostConfigChangeOperation("edit") + HostConfigChangeOperationIgnore = HostConfigChangeOperation("ignore") +) + +func init() { + t["HostConfigChangeOperation"] = reflect.TypeOf((*HostConfigChangeOperation)(nil)).Elem() +} + +type HostCpuPackageVendor string + +const ( + HostCpuPackageVendorUnknown = HostCpuPackageVendor("unknown") + HostCpuPackageVendorIntel = HostCpuPackageVendor("intel") + HostCpuPackageVendorAmd = HostCpuPackageVendor("amd") + HostCpuPackageVendorHygon = HostCpuPackageVendor("hygon") +) + +func init() { + t["HostCpuPackageVendor"] = reflect.TypeOf((*HostCpuPackageVendor)(nil)).Elem() +} + +type HostCpuPowerManagementInfoPolicyType string + +const ( + HostCpuPowerManagementInfoPolicyTypeOff = HostCpuPowerManagementInfoPolicyType("off") + HostCpuPowerManagementInfoPolicyTypeStaticPolicy = HostCpuPowerManagementInfoPolicyType("staticPolicy") + HostCpuPowerManagementInfoPolicyTypeDynamicPolicy = HostCpuPowerManagementInfoPolicyType("dynamicPolicy") +) + +func init() { + t["HostCpuPowerManagementInfoPolicyType"] = reflect.TypeOf((*HostCpuPowerManagementInfoPolicyType)(nil)).Elem() +} + +type HostCryptoState string + +const ( + HostCryptoStateIncapable = HostCryptoState("incapable") + HostCryptoStatePrepared = HostCryptoState("prepared") + HostCryptoStateSafe = HostCryptoState("safe") + HostCryptoStatePendingIncapable = HostCryptoState("pendingIncapable") +) + +func init() { + t["HostCryptoState"] = reflect.TypeOf((*HostCryptoState)(nil)).Elem() +} + +type HostDasErrorEventHostDasErrorReason string + +const ( + HostDasErrorEventHostDasErrorReasonConfigFailed = HostDasErrorEventHostDasErrorReason("configFailed") + HostDasErrorEventHostDasErrorReasonTimeout = HostDasErrorEventHostDasErrorReason("timeout") + HostDasErrorEventHostDasErrorReasonCommunicationInitFailed = HostDasErrorEventHostDasErrorReason("communicationInitFailed") + HostDasErrorEventHostDasErrorReasonHealthCheckScriptFailed = HostDasErrorEventHostDasErrorReason("healthCheckScriptFailed") + HostDasErrorEventHostDasErrorReasonAgentFailed = HostDasErrorEventHostDasErrorReason("agentFailed") + HostDasErrorEventHostDasErrorReasonAgentShutdown = HostDasErrorEventHostDasErrorReason("agentShutdown") + HostDasErrorEventHostDasErrorReasonIsolationAddressUnpingable = HostDasErrorEventHostDasErrorReason("isolationAddressUnpingable") + HostDasErrorEventHostDasErrorReasonOther = HostDasErrorEventHostDasErrorReason("other") +) + +func init() { + t["HostDasErrorEventHostDasErrorReason"] = reflect.TypeOf((*HostDasErrorEventHostDasErrorReason)(nil)).Elem() +} + +type HostDateTimeInfoProtocol string + +const ( + HostDateTimeInfoProtocolNtp = HostDateTimeInfoProtocol("ntp") + HostDateTimeInfoProtocolPtp = HostDateTimeInfoProtocol("ptp") +) + +func init() { + t["HostDateTimeInfoProtocol"] = reflect.TypeOf((*HostDateTimeInfoProtocol)(nil)).Elem() +} + +type HostDigestInfoDigestMethodType string + +const ( + HostDigestInfoDigestMethodTypeSHA1 = HostDigestInfoDigestMethodType("SHA1") + HostDigestInfoDigestMethodTypeMD5 = HostDigestInfoDigestMethodType("MD5") + HostDigestInfoDigestMethodTypeSHA256 = HostDigestInfoDigestMethodType("SHA256") + HostDigestInfoDigestMethodTypeSHA384 = HostDigestInfoDigestMethodType("SHA384") + HostDigestInfoDigestMethodTypeSHA512 = HostDigestInfoDigestMethodType("SHA512") + HostDigestInfoDigestMethodTypeSM3_256 = HostDigestInfoDigestMethodType("SM3_256") +) + +func init() { + t["HostDigestInfoDigestMethodType"] = reflect.TypeOf((*HostDigestInfoDigestMethodType)(nil)).Elem() +} + +type HostDisconnectedEventReasonCode string + +const ( + HostDisconnectedEventReasonCodeSslThumbprintVerifyFailed = HostDisconnectedEventReasonCode("sslThumbprintVerifyFailed") + HostDisconnectedEventReasonCodeLicenseExpired = HostDisconnectedEventReasonCode("licenseExpired") + HostDisconnectedEventReasonCodeAgentUpgrade = HostDisconnectedEventReasonCode("agentUpgrade") + HostDisconnectedEventReasonCodeUserRequest = HostDisconnectedEventReasonCode("userRequest") + HostDisconnectedEventReasonCodeInsufficientLicenses = HostDisconnectedEventReasonCode("insufficientLicenses") + HostDisconnectedEventReasonCodeAgentOutOfDate = HostDisconnectedEventReasonCode("agentOutOfDate") + HostDisconnectedEventReasonCodePasswordDecryptFailure = HostDisconnectedEventReasonCode("passwordDecryptFailure") + HostDisconnectedEventReasonCodeUnknown = HostDisconnectedEventReasonCode("unknown") + HostDisconnectedEventReasonCodeVcVRAMCapacityExceeded = HostDisconnectedEventReasonCode("vcVRAMCapacityExceeded") +) + +func init() { + t["HostDisconnectedEventReasonCode"] = reflect.TypeOf((*HostDisconnectedEventReasonCode)(nil)).Elem() +} + +type HostDiskPartitionInfoPartitionFormat string + +const ( + HostDiskPartitionInfoPartitionFormatGpt = HostDiskPartitionInfoPartitionFormat("gpt") + HostDiskPartitionInfoPartitionFormatMbr = HostDiskPartitionInfoPartitionFormat("mbr") + HostDiskPartitionInfoPartitionFormatUnknown = HostDiskPartitionInfoPartitionFormat("unknown") +) + +func init() { + t["HostDiskPartitionInfoPartitionFormat"] = reflect.TypeOf((*HostDiskPartitionInfoPartitionFormat)(nil)).Elem() +} + +type HostDiskPartitionInfoType string + +const ( + HostDiskPartitionInfoTypeNone = HostDiskPartitionInfoType("none") + HostDiskPartitionInfoTypeVmfs = HostDiskPartitionInfoType("vmfs") + HostDiskPartitionInfoTypeLinuxNative = HostDiskPartitionInfoType("linuxNative") + HostDiskPartitionInfoTypeLinuxSwap = HostDiskPartitionInfoType("linuxSwap") + HostDiskPartitionInfoTypeExtended = HostDiskPartitionInfoType("extended") + HostDiskPartitionInfoTypeNtfs = HostDiskPartitionInfoType("ntfs") + HostDiskPartitionInfoTypeVmkDiagnostic = HostDiskPartitionInfoType("vmkDiagnostic") + HostDiskPartitionInfoTypeVffs = HostDiskPartitionInfoType("vffs") +) + +func init() { + t["HostDiskPartitionInfoType"] = reflect.TypeOf((*HostDiskPartitionInfoType)(nil)).Elem() +} + +type HostFeatureVersionKey string + +const ( + HostFeatureVersionKeyFaultTolerance = HostFeatureVersionKey("faultTolerance") +) + +func init() { + t["HostFeatureVersionKey"] = reflect.TypeOf((*HostFeatureVersionKey)(nil)).Elem() +} + +type HostFileSystemVolumeFileSystemType string + +const ( + HostFileSystemVolumeFileSystemTypeVMFS = HostFileSystemVolumeFileSystemType("VMFS") + HostFileSystemVolumeFileSystemTypeNFS = HostFileSystemVolumeFileSystemType("NFS") + HostFileSystemVolumeFileSystemTypeNFS41 = HostFileSystemVolumeFileSystemType("NFS41") + HostFileSystemVolumeFileSystemTypeCIFS = HostFileSystemVolumeFileSystemType("CIFS") + HostFileSystemVolumeFileSystemTypeVsan = HostFileSystemVolumeFileSystemType("vsan") + HostFileSystemVolumeFileSystemTypeVFFS = HostFileSystemVolumeFileSystemType("VFFS") + HostFileSystemVolumeFileSystemTypeVVOL = HostFileSystemVolumeFileSystemType("VVOL") + HostFileSystemVolumeFileSystemTypePMEM = HostFileSystemVolumeFileSystemType("PMEM") + HostFileSystemVolumeFileSystemTypeOTHER = HostFileSystemVolumeFileSystemType("OTHER") +) + +func init() { + t["HostFileSystemVolumeFileSystemType"] = reflect.TypeOf((*HostFileSystemVolumeFileSystemType)(nil)).Elem() +} + +type HostFirewallRuleDirection string + +const ( + HostFirewallRuleDirectionInbound = HostFirewallRuleDirection("inbound") + HostFirewallRuleDirectionOutbound = HostFirewallRuleDirection("outbound") +) + +func init() { + t["HostFirewallRuleDirection"] = reflect.TypeOf((*HostFirewallRuleDirection)(nil)).Elem() +} + +type HostFirewallRulePortType string + +const ( + HostFirewallRulePortTypeSrc = HostFirewallRulePortType("src") + HostFirewallRulePortTypeDst = HostFirewallRulePortType("dst") +) + +func init() { + t["HostFirewallRulePortType"] = reflect.TypeOf((*HostFirewallRulePortType)(nil)).Elem() +} + +type HostFirewallRuleProtocol string + +const ( + HostFirewallRuleProtocolTcp = HostFirewallRuleProtocol("tcp") + HostFirewallRuleProtocolUdp = HostFirewallRuleProtocol("udp") +) + +func init() { + t["HostFirewallRuleProtocol"] = reflect.TypeOf((*HostFirewallRuleProtocol)(nil)).Elem() +} + +type HostGraphicsConfigGraphicsType string + +const ( + HostGraphicsConfigGraphicsTypeShared = HostGraphicsConfigGraphicsType("shared") + HostGraphicsConfigGraphicsTypeSharedDirect = HostGraphicsConfigGraphicsType("sharedDirect") +) + +func init() { + t["HostGraphicsConfigGraphicsType"] = reflect.TypeOf((*HostGraphicsConfigGraphicsType)(nil)).Elem() +} + +type HostGraphicsConfigSharedPassthruAssignmentPolicy string + +const ( + HostGraphicsConfigSharedPassthruAssignmentPolicyPerformance = HostGraphicsConfigSharedPassthruAssignmentPolicy("performance") + HostGraphicsConfigSharedPassthruAssignmentPolicyConsolidation = HostGraphicsConfigSharedPassthruAssignmentPolicy("consolidation") +) + +func init() { + t["HostGraphicsConfigSharedPassthruAssignmentPolicy"] = reflect.TypeOf((*HostGraphicsConfigSharedPassthruAssignmentPolicy)(nil)).Elem() +} + +type HostGraphicsInfoGraphicsType string + +const ( + HostGraphicsInfoGraphicsTypeBasic = HostGraphicsInfoGraphicsType("basic") + HostGraphicsInfoGraphicsTypeShared = HostGraphicsInfoGraphicsType("shared") + HostGraphicsInfoGraphicsTypeDirect = HostGraphicsInfoGraphicsType("direct") + HostGraphicsInfoGraphicsTypeSharedDirect = HostGraphicsInfoGraphicsType("sharedDirect") +) + +func init() { + t["HostGraphicsInfoGraphicsType"] = reflect.TypeOf((*HostGraphicsInfoGraphicsType)(nil)).Elem() +} + +type HostHardwareElementStatus string + +const ( + HostHardwareElementStatusUnknown = HostHardwareElementStatus("Unknown") + HostHardwareElementStatusGreen = HostHardwareElementStatus("Green") + HostHardwareElementStatusYellow = HostHardwareElementStatus("Yellow") + HostHardwareElementStatusRed = HostHardwareElementStatus("Red") +) + +func init() { + t["HostHardwareElementStatus"] = reflect.TypeOf((*HostHardwareElementStatus)(nil)).Elem() +} + +type HostHasComponentFailureHostComponentType string + +const ( + HostHasComponentFailureHostComponentTypeDatastore = HostHasComponentFailureHostComponentType("Datastore") +) + +func init() { + t["HostHasComponentFailureHostComponentType"] = reflect.TypeOf((*HostHasComponentFailureHostComponentType)(nil)).Elem() +} + +type HostImageAcceptanceLevel string + +const ( + HostImageAcceptanceLevelVmware_certified = HostImageAcceptanceLevel("vmware_certified") + HostImageAcceptanceLevelVmware_accepted = HostImageAcceptanceLevel("vmware_accepted") + HostImageAcceptanceLevelPartner = HostImageAcceptanceLevel("partner") + HostImageAcceptanceLevelCommunity = HostImageAcceptanceLevel("community") +) + +func init() { + t["HostImageAcceptanceLevel"] = reflect.TypeOf((*HostImageAcceptanceLevel)(nil)).Elem() +} + +type HostIncompatibleForFaultToleranceReason string + +const ( + HostIncompatibleForFaultToleranceReasonProduct = HostIncompatibleForFaultToleranceReason("product") + HostIncompatibleForFaultToleranceReasonProcessor = HostIncompatibleForFaultToleranceReason("processor") +) + +func init() { + t["HostIncompatibleForFaultToleranceReason"] = reflect.TypeOf((*HostIncompatibleForFaultToleranceReason)(nil)).Elem() +} + +type HostIncompatibleForRecordReplayReason string + +const ( + HostIncompatibleForRecordReplayReasonProduct = HostIncompatibleForRecordReplayReason("product") + HostIncompatibleForRecordReplayReasonProcessor = HostIncompatibleForRecordReplayReason("processor") +) + +func init() { + t["HostIncompatibleForRecordReplayReason"] = reflect.TypeOf((*HostIncompatibleForRecordReplayReason)(nil)).Elem() +} + +type HostInternetScsiHbaChapAuthenticationType string + +const ( + HostInternetScsiHbaChapAuthenticationTypeChapProhibited = HostInternetScsiHbaChapAuthenticationType("chapProhibited") + HostInternetScsiHbaChapAuthenticationTypeChapDiscouraged = HostInternetScsiHbaChapAuthenticationType("chapDiscouraged") + HostInternetScsiHbaChapAuthenticationTypeChapPreferred = HostInternetScsiHbaChapAuthenticationType("chapPreferred") + HostInternetScsiHbaChapAuthenticationTypeChapRequired = HostInternetScsiHbaChapAuthenticationType("chapRequired") +) + +func init() { + t["HostInternetScsiHbaChapAuthenticationType"] = reflect.TypeOf((*HostInternetScsiHbaChapAuthenticationType)(nil)).Elem() +} + +type HostInternetScsiHbaDigestType string + +const ( + HostInternetScsiHbaDigestTypeDigestProhibited = HostInternetScsiHbaDigestType("digestProhibited") + HostInternetScsiHbaDigestTypeDigestDiscouraged = HostInternetScsiHbaDigestType("digestDiscouraged") + HostInternetScsiHbaDigestTypeDigestPreferred = HostInternetScsiHbaDigestType("digestPreferred") + HostInternetScsiHbaDigestTypeDigestRequired = HostInternetScsiHbaDigestType("digestRequired") +) + +func init() { + t["HostInternetScsiHbaDigestType"] = reflect.TypeOf((*HostInternetScsiHbaDigestType)(nil)).Elem() +} + +type HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationType string + +const ( + HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationTypeDHCP = HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationType("DHCP") + HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationTypeAutoConfigured = HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationType("AutoConfigured") + HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationTypeStatic = HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationType("Static") + HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationTypeOther = HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationType("Other") +) + +func init() { + t["HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationType"] = reflect.TypeOf((*HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationType)(nil)).Elem() +} + +type HostInternetScsiHbaIscsiIpv6AddressIPv6AddressOperation string + +const ( + HostInternetScsiHbaIscsiIpv6AddressIPv6AddressOperationAdd = HostInternetScsiHbaIscsiIpv6AddressIPv6AddressOperation("add") + HostInternetScsiHbaIscsiIpv6AddressIPv6AddressOperationRemove = HostInternetScsiHbaIscsiIpv6AddressIPv6AddressOperation("remove") +) + +func init() { + t["HostInternetScsiHbaIscsiIpv6AddressIPv6AddressOperation"] = reflect.TypeOf((*HostInternetScsiHbaIscsiIpv6AddressIPv6AddressOperation)(nil)).Elem() +} + +type HostInternetScsiHbaNetworkBindingSupportType string + +const ( + HostInternetScsiHbaNetworkBindingSupportTypeNotsupported = HostInternetScsiHbaNetworkBindingSupportType("notsupported") + HostInternetScsiHbaNetworkBindingSupportTypeOptional = HostInternetScsiHbaNetworkBindingSupportType("optional") + HostInternetScsiHbaNetworkBindingSupportTypeRequired = HostInternetScsiHbaNetworkBindingSupportType("required") +) + +func init() { + t["HostInternetScsiHbaNetworkBindingSupportType"] = reflect.TypeOf((*HostInternetScsiHbaNetworkBindingSupportType)(nil)).Elem() +} + +type HostInternetScsiHbaStaticTargetTargetDiscoveryMethod string + +const ( + HostInternetScsiHbaStaticTargetTargetDiscoveryMethodStaticMethod = HostInternetScsiHbaStaticTargetTargetDiscoveryMethod("staticMethod") + HostInternetScsiHbaStaticTargetTargetDiscoveryMethodSendTargetMethod = HostInternetScsiHbaStaticTargetTargetDiscoveryMethod("sendTargetMethod") + HostInternetScsiHbaStaticTargetTargetDiscoveryMethodSlpMethod = HostInternetScsiHbaStaticTargetTargetDiscoveryMethod("slpMethod") + HostInternetScsiHbaStaticTargetTargetDiscoveryMethodIsnsMethod = HostInternetScsiHbaStaticTargetTargetDiscoveryMethod("isnsMethod") + HostInternetScsiHbaStaticTargetTargetDiscoveryMethodUnknownMethod = HostInternetScsiHbaStaticTargetTargetDiscoveryMethod("unknownMethod") +) + +func init() { + t["HostInternetScsiHbaStaticTargetTargetDiscoveryMethod"] = reflect.TypeOf((*HostInternetScsiHbaStaticTargetTargetDiscoveryMethod)(nil)).Elem() +} + +type HostIpConfigIpV6AddressConfigType string + +const ( + HostIpConfigIpV6AddressConfigTypeOther = HostIpConfigIpV6AddressConfigType("other") + HostIpConfigIpV6AddressConfigTypeManual = HostIpConfigIpV6AddressConfigType("manual") + HostIpConfigIpV6AddressConfigTypeDhcp = HostIpConfigIpV6AddressConfigType("dhcp") + HostIpConfigIpV6AddressConfigTypeLinklayer = HostIpConfigIpV6AddressConfigType("linklayer") + HostIpConfigIpV6AddressConfigTypeRandom = HostIpConfigIpV6AddressConfigType("random") +) + +func init() { + t["HostIpConfigIpV6AddressConfigType"] = reflect.TypeOf((*HostIpConfigIpV6AddressConfigType)(nil)).Elem() +} + +type HostIpConfigIpV6AddressStatus string + +const ( + HostIpConfigIpV6AddressStatusPreferred = HostIpConfigIpV6AddressStatus("preferred") + HostIpConfigIpV6AddressStatusDeprecated = HostIpConfigIpV6AddressStatus("deprecated") + HostIpConfigIpV6AddressStatusInvalid = HostIpConfigIpV6AddressStatus("invalid") + HostIpConfigIpV6AddressStatusInaccessible = HostIpConfigIpV6AddressStatus("inaccessible") + HostIpConfigIpV6AddressStatusUnknown = HostIpConfigIpV6AddressStatus("unknown") + HostIpConfigIpV6AddressStatusTentative = HostIpConfigIpV6AddressStatus("tentative") + HostIpConfigIpV6AddressStatusDuplicate = HostIpConfigIpV6AddressStatus("duplicate") +) + +func init() { + t["HostIpConfigIpV6AddressStatus"] = reflect.TypeOf((*HostIpConfigIpV6AddressStatus)(nil)).Elem() +} + +type HostLicensableResourceKey string + +const ( + HostLicensableResourceKeyNumCpuPackages = HostLicensableResourceKey("numCpuPackages") + HostLicensableResourceKeyNumCpuCores = HostLicensableResourceKey("numCpuCores") + HostLicensableResourceKeyMemorySize = HostLicensableResourceKey("memorySize") + HostLicensableResourceKeyMemoryForVms = HostLicensableResourceKey("memoryForVms") + HostLicensableResourceKeyNumVmsStarted = HostLicensableResourceKey("numVmsStarted") + HostLicensableResourceKeyNumVmsStarting = HostLicensableResourceKey("numVmsStarting") +) + +func init() { + t["HostLicensableResourceKey"] = reflect.TypeOf((*HostLicensableResourceKey)(nil)).Elem() +} + +type HostLockdownMode string + +const ( + HostLockdownModeLockdownDisabled = HostLockdownMode("lockdownDisabled") + HostLockdownModeLockdownNormal = HostLockdownMode("lockdownNormal") + HostLockdownModeLockdownStrict = HostLockdownMode("lockdownStrict") +) + +func init() { + t["HostLockdownMode"] = reflect.TypeOf((*HostLockdownMode)(nil)).Elem() +} + +type HostLowLevelProvisioningManagerFileType string + +const ( + HostLowLevelProvisioningManagerFileTypeFile = HostLowLevelProvisioningManagerFileType("File") + HostLowLevelProvisioningManagerFileTypeVirtualDisk = HostLowLevelProvisioningManagerFileType("VirtualDisk") + HostLowLevelProvisioningManagerFileTypeDirectory = HostLowLevelProvisioningManagerFileType("Directory") +) + +func init() { + t["HostLowLevelProvisioningManagerFileType"] = reflect.TypeOf((*HostLowLevelProvisioningManagerFileType)(nil)).Elem() +} + +type HostLowLevelProvisioningManagerReloadTarget string + +const ( + HostLowLevelProvisioningManagerReloadTargetCurrentConfig = HostLowLevelProvisioningManagerReloadTarget("currentConfig") + HostLowLevelProvisioningManagerReloadTargetSnapshotConfig = HostLowLevelProvisioningManagerReloadTarget("snapshotConfig") +) + +func init() { + t["HostLowLevelProvisioningManagerReloadTarget"] = reflect.TypeOf((*HostLowLevelProvisioningManagerReloadTarget)(nil)).Elem() +} + +type HostMaintenanceSpecPurpose string + +const ( + HostMaintenanceSpecPurposeHostUpgrade = HostMaintenanceSpecPurpose("hostUpgrade") +) + +func init() { + t["HostMaintenanceSpecPurpose"] = reflect.TypeOf((*HostMaintenanceSpecPurpose)(nil)).Elem() +} + +type HostMountInfoInaccessibleReason string + +const ( + HostMountInfoInaccessibleReasonAllPathsDown_Start = HostMountInfoInaccessibleReason("AllPathsDown_Start") + HostMountInfoInaccessibleReasonAllPathsDown_Timeout = HostMountInfoInaccessibleReason("AllPathsDown_Timeout") + HostMountInfoInaccessibleReasonPermanentDeviceLoss = HostMountInfoInaccessibleReason("PermanentDeviceLoss") +) + +func init() { + t["HostMountInfoInaccessibleReason"] = reflect.TypeOf((*HostMountInfoInaccessibleReason)(nil)).Elem() +} + +type HostMountMode string + +const ( + HostMountModeReadWrite = HostMountMode("readWrite") + HostMountModeReadOnly = HostMountMode("readOnly") +) + +func init() { + t["HostMountMode"] = reflect.TypeOf((*HostMountMode)(nil)).Elem() +} + +type HostNasVolumeSecurityType string + +const ( + HostNasVolumeSecurityTypeAUTH_SYS = HostNasVolumeSecurityType("AUTH_SYS") + HostNasVolumeSecurityTypeSEC_KRB5 = HostNasVolumeSecurityType("SEC_KRB5") + HostNasVolumeSecurityTypeSEC_KRB5I = HostNasVolumeSecurityType("SEC_KRB5I") +) + +func init() { + t["HostNasVolumeSecurityType"] = reflect.TypeOf((*HostNasVolumeSecurityType)(nil)).Elem() +} + +type HostNetStackInstanceCongestionControlAlgorithmType string + +const ( + HostNetStackInstanceCongestionControlAlgorithmTypeNewreno = HostNetStackInstanceCongestionControlAlgorithmType("newreno") + HostNetStackInstanceCongestionControlAlgorithmTypeCubic = HostNetStackInstanceCongestionControlAlgorithmType("cubic") +) + +func init() { + t["HostNetStackInstanceCongestionControlAlgorithmType"] = reflect.TypeOf((*HostNetStackInstanceCongestionControlAlgorithmType)(nil)).Elem() +} + +type HostNetStackInstanceSystemStackKey string + +const ( + HostNetStackInstanceSystemStackKeyDefaultTcpipStack = HostNetStackInstanceSystemStackKey("defaultTcpipStack") + HostNetStackInstanceSystemStackKeyVmotion = HostNetStackInstanceSystemStackKey("vmotion") + HostNetStackInstanceSystemStackKeyVSphereProvisioning = HostNetStackInstanceSystemStackKey("vSphereProvisioning") +) + +func init() { + t["HostNetStackInstanceSystemStackKey"] = reflect.TypeOf((*HostNetStackInstanceSystemStackKey)(nil)).Elem() +} + +type HostNumericSensorHealthState string + +const ( + HostNumericSensorHealthStateUnknown = HostNumericSensorHealthState("unknown") + HostNumericSensorHealthStateGreen = HostNumericSensorHealthState("green") + HostNumericSensorHealthStateYellow = HostNumericSensorHealthState("yellow") + HostNumericSensorHealthStateRed = HostNumericSensorHealthState("red") +) + +func init() { + t["HostNumericSensorHealthState"] = reflect.TypeOf((*HostNumericSensorHealthState)(nil)).Elem() +} + +type HostNumericSensorType string + +const ( + HostNumericSensorTypeFan = HostNumericSensorType("fan") + HostNumericSensorTypePower = HostNumericSensorType("power") + HostNumericSensorTypeTemperature = HostNumericSensorType("temperature") + HostNumericSensorTypeVoltage = HostNumericSensorType("voltage") + HostNumericSensorTypeOther = HostNumericSensorType("other") + HostNumericSensorTypeProcessor = HostNumericSensorType("processor") + HostNumericSensorTypeMemory = HostNumericSensorType("memory") + HostNumericSensorTypeStorage = HostNumericSensorType("storage") + HostNumericSensorTypeSystemBoard = HostNumericSensorType("systemBoard") + HostNumericSensorTypeBattery = HostNumericSensorType("battery") + HostNumericSensorTypeBios = HostNumericSensorType("bios") + HostNumericSensorTypeCable = HostNumericSensorType("cable") + HostNumericSensorTypeWatchdog = HostNumericSensorType("watchdog") +) + +func init() { + t["HostNumericSensorType"] = reflect.TypeOf((*HostNumericSensorType)(nil)).Elem() +} + +type HostNvmeDiscoveryLogSubsystemType string + +const ( + HostNvmeDiscoveryLogSubsystemTypeDiscovery = HostNvmeDiscoveryLogSubsystemType("discovery") + HostNvmeDiscoveryLogSubsystemTypeNvm = HostNvmeDiscoveryLogSubsystemType("nvm") +) + +func init() { + t["HostNvmeDiscoveryLogSubsystemType"] = reflect.TypeOf((*HostNvmeDiscoveryLogSubsystemType)(nil)).Elem() +} + +type HostNvmeDiscoveryLogTransportRequirements string + +const ( + HostNvmeDiscoveryLogTransportRequirementsSecureChannelRequired = HostNvmeDiscoveryLogTransportRequirements("secureChannelRequired") + HostNvmeDiscoveryLogTransportRequirementsSecureChannelNotRequired = HostNvmeDiscoveryLogTransportRequirements("secureChannelNotRequired") + HostNvmeDiscoveryLogTransportRequirementsRequirementsNotSpecified = HostNvmeDiscoveryLogTransportRequirements("requirementsNotSpecified") +) + +func init() { + t["HostNvmeDiscoveryLogTransportRequirements"] = reflect.TypeOf((*HostNvmeDiscoveryLogTransportRequirements)(nil)).Elem() +} + +type HostNvmeTransportParametersNvmeAddressFamily string + +const ( + HostNvmeTransportParametersNvmeAddressFamilyIpv4 = HostNvmeTransportParametersNvmeAddressFamily("ipv4") + HostNvmeTransportParametersNvmeAddressFamilyIpv6 = HostNvmeTransportParametersNvmeAddressFamily("ipv6") + HostNvmeTransportParametersNvmeAddressFamilyInfiniBand = HostNvmeTransportParametersNvmeAddressFamily("infiniBand") + HostNvmeTransportParametersNvmeAddressFamilyFc = HostNvmeTransportParametersNvmeAddressFamily("fc") + HostNvmeTransportParametersNvmeAddressFamilyLoopback = HostNvmeTransportParametersNvmeAddressFamily("loopback") + HostNvmeTransportParametersNvmeAddressFamilyUnknown = HostNvmeTransportParametersNvmeAddressFamily("unknown") +) + +func init() { + t["HostNvmeTransportParametersNvmeAddressFamily"] = reflect.TypeOf((*HostNvmeTransportParametersNvmeAddressFamily)(nil)).Elem() +} + +type HostNvmeTransportType string + +const ( + HostNvmeTransportTypePcie = HostNvmeTransportType("pcie") + HostNvmeTransportTypeFibreChannel = HostNvmeTransportType("fibreChannel") + HostNvmeTransportTypeRdma = HostNvmeTransportType("rdma") + HostNvmeTransportTypeLoopback = HostNvmeTransportType("loopback") + HostNvmeTransportTypeUnsupported = HostNvmeTransportType("unsupported") +) + +func init() { + t["HostNvmeTransportType"] = reflect.TypeOf((*HostNvmeTransportType)(nil)).Elem() +} + +type HostOpaqueSwitchOpaqueSwitchState string + +const ( + HostOpaqueSwitchOpaqueSwitchStateUp = HostOpaqueSwitchOpaqueSwitchState("up") + HostOpaqueSwitchOpaqueSwitchStateWarning = HostOpaqueSwitchOpaqueSwitchState("warning") + HostOpaqueSwitchOpaqueSwitchStateDown = HostOpaqueSwitchOpaqueSwitchState("down") + HostOpaqueSwitchOpaqueSwitchStateMaintenance = HostOpaqueSwitchOpaqueSwitchState("maintenance") +) + +func init() { + t["HostOpaqueSwitchOpaqueSwitchState"] = reflect.TypeOf((*HostOpaqueSwitchOpaqueSwitchState)(nil)).Elem() +} + +type HostPatchManagerInstallState string + +const ( + HostPatchManagerInstallStateHostRestarted = HostPatchManagerInstallState("hostRestarted") + HostPatchManagerInstallStateImageActive = HostPatchManagerInstallState("imageActive") +) + +func init() { + t["HostPatchManagerInstallState"] = reflect.TypeOf((*HostPatchManagerInstallState)(nil)).Elem() +} + +type HostPatchManagerIntegrityStatus string + +const ( + HostPatchManagerIntegrityStatusValidated = HostPatchManagerIntegrityStatus("validated") + HostPatchManagerIntegrityStatusKeyNotFound = HostPatchManagerIntegrityStatus("keyNotFound") + HostPatchManagerIntegrityStatusKeyRevoked = HostPatchManagerIntegrityStatus("keyRevoked") + HostPatchManagerIntegrityStatusKeyExpired = HostPatchManagerIntegrityStatus("keyExpired") + HostPatchManagerIntegrityStatusDigestMismatch = HostPatchManagerIntegrityStatus("digestMismatch") + HostPatchManagerIntegrityStatusNotEnoughSignatures = HostPatchManagerIntegrityStatus("notEnoughSignatures") + HostPatchManagerIntegrityStatusValidationError = HostPatchManagerIntegrityStatus("validationError") +) + +func init() { + t["HostPatchManagerIntegrityStatus"] = reflect.TypeOf((*HostPatchManagerIntegrityStatus)(nil)).Elem() +} + +type HostPatchManagerReason string + +const ( + HostPatchManagerReasonObsoleted = HostPatchManagerReason("obsoleted") + HostPatchManagerReasonMissingPatch = HostPatchManagerReason("missingPatch") + HostPatchManagerReasonMissingLib = HostPatchManagerReason("missingLib") + HostPatchManagerReasonHasDependentPatch = HostPatchManagerReason("hasDependentPatch") + HostPatchManagerReasonConflictPatch = HostPatchManagerReason("conflictPatch") + HostPatchManagerReasonConflictLib = HostPatchManagerReason("conflictLib") +) + +func init() { + t["HostPatchManagerReason"] = reflect.TypeOf((*HostPatchManagerReason)(nil)).Elem() +} + +type HostPowerOperationType string + +const ( + HostPowerOperationTypePowerOn = HostPowerOperationType("powerOn") + HostPowerOperationTypePowerOff = HostPowerOperationType("powerOff") +) + +func init() { + t["HostPowerOperationType"] = reflect.TypeOf((*HostPowerOperationType)(nil)).Elem() +} + +type HostProfileManagerAnswerFileStatus string + +const ( + HostProfileManagerAnswerFileStatusValid = HostProfileManagerAnswerFileStatus("valid") + HostProfileManagerAnswerFileStatusInvalid = HostProfileManagerAnswerFileStatus("invalid") + HostProfileManagerAnswerFileStatusUnknown = HostProfileManagerAnswerFileStatus("unknown") +) + +func init() { + t["HostProfileManagerAnswerFileStatus"] = reflect.TypeOf((*HostProfileManagerAnswerFileStatus)(nil)).Elem() +} + +type HostProfileManagerCompositionResultResultElementStatus string + +const ( + HostProfileManagerCompositionResultResultElementStatusSuccess = HostProfileManagerCompositionResultResultElementStatus("success") + HostProfileManagerCompositionResultResultElementStatusError = HostProfileManagerCompositionResultResultElementStatus("error") +) + +func init() { + t["HostProfileManagerCompositionResultResultElementStatus"] = reflect.TypeOf((*HostProfileManagerCompositionResultResultElementStatus)(nil)).Elem() +} + +type HostProfileManagerCompositionValidationResultResultElementStatus string + +const ( + HostProfileManagerCompositionValidationResultResultElementStatusSuccess = HostProfileManagerCompositionValidationResultResultElementStatus("success") + HostProfileManagerCompositionValidationResultResultElementStatusError = HostProfileManagerCompositionValidationResultResultElementStatus("error") +) + +func init() { + t["HostProfileManagerCompositionValidationResultResultElementStatus"] = reflect.TypeOf((*HostProfileManagerCompositionValidationResultResultElementStatus)(nil)).Elem() +} + +type HostProfileManagerTaskListRequirement string + +const ( + HostProfileManagerTaskListRequirementMaintenanceModeRequired = HostProfileManagerTaskListRequirement("maintenanceModeRequired") + HostProfileManagerTaskListRequirementRebootRequired = HostProfileManagerTaskListRequirement("rebootRequired") +) + +func init() { + t["HostProfileManagerTaskListRequirement"] = reflect.TypeOf((*HostProfileManagerTaskListRequirement)(nil)).Elem() +} + +type HostProfileValidationFailureInfoUpdateType string + +const ( + HostProfileValidationFailureInfoUpdateTypeHostBased = HostProfileValidationFailureInfoUpdateType("HostBased") + HostProfileValidationFailureInfoUpdateTypeImport = HostProfileValidationFailureInfoUpdateType("Import") + HostProfileValidationFailureInfoUpdateTypeEdit = HostProfileValidationFailureInfoUpdateType("Edit") + HostProfileValidationFailureInfoUpdateTypeCompose = HostProfileValidationFailureInfoUpdateType("Compose") +) + +func init() { + t["HostProfileValidationFailureInfoUpdateType"] = reflect.TypeOf((*HostProfileValidationFailureInfoUpdateType)(nil)).Elem() +} + +type HostProfileValidationState string + +const ( + HostProfileValidationStateReady = HostProfileValidationState("Ready") + HostProfileValidationStateRunning = HostProfileValidationState("Running") + HostProfileValidationStateFailed = HostProfileValidationState("Failed") +) + +func init() { + t["HostProfileValidationState"] = reflect.TypeOf((*HostProfileValidationState)(nil)).Elem() +} + +type HostProtocolEndpointPEType string + +const ( + HostProtocolEndpointPETypeBlock = HostProtocolEndpointPEType("block") + HostProtocolEndpointPETypeNas = HostProtocolEndpointPEType("nas") +) + +func init() { + t["HostProtocolEndpointPEType"] = reflect.TypeOf((*HostProtocolEndpointPEType)(nil)).Elem() +} + +type HostProtocolEndpointProtocolEndpointType string + +const ( + HostProtocolEndpointProtocolEndpointTypeScsi = HostProtocolEndpointProtocolEndpointType("scsi") + HostProtocolEndpointProtocolEndpointTypeNfs = HostProtocolEndpointProtocolEndpointType("nfs") + HostProtocolEndpointProtocolEndpointTypeNfs4x = HostProtocolEndpointProtocolEndpointType("nfs4x") +) + +func init() { + t["HostProtocolEndpointProtocolEndpointType"] = reflect.TypeOf((*HostProtocolEndpointProtocolEndpointType)(nil)).Elem() +} + +type HostRdmaDeviceConnectionState string + +const ( + HostRdmaDeviceConnectionStateUnknown = HostRdmaDeviceConnectionState("unknown") + HostRdmaDeviceConnectionStateDown = HostRdmaDeviceConnectionState("down") + HostRdmaDeviceConnectionStateInit = HostRdmaDeviceConnectionState("init") + HostRdmaDeviceConnectionStateArmed = HostRdmaDeviceConnectionState("armed") + HostRdmaDeviceConnectionStateActive = HostRdmaDeviceConnectionState("active") + HostRdmaDeviceConnectionStateActiveDefer = HostRdmaDeviceConnectionState("activeDefer") +) + +func init() { + t["HostRdmaDeviceConnectionState"] = reflect.TypeOf((*HostRdmaDeviceConnectionState)(nil)).Elem() +} + +type HostReplayUnsupportedReason string + +const ( + HostReplayUnsupportedReasonIncompatibleProduct = HostReplayUnsupportedReason("incompatibleProduct") + HostReplayUnsupportedReasonIncompatibleCpu = HostReplayUnsupportedReason("incompatibleCpu") + HostReplayUnsupportedReasonHvDisabled = HostReplayUnsupportedReason("hvDisabled") + HostReplayUnsupportedReasonCpuidLimitSet = HostReplayUnsupportedReason("cpuidLimitSet") + HostReplayUnsupportedReasonOldBIOS = HostReplayUnsupportedReason("oldBIOS") + HostReplayUnsupportedReasonUnknown = HostReplayUnsupportedReason("unknown") +) + +func init() { + t["HostReplayUnsupportedReason"] = reflect.TypeOf((*HostReplayUnsupportedReason)(nil)).Elem() +} + +type HostRuntimeInfoNetStackInstanceRuntimeInfoState string + +const ( + HostRuntimeInfoNetStackInstanceRuntimeInfoStateInactive = HostRuntimeInfoNetStackInstanceRuntimeInfoState("inactive") + HostRuntimeInfoNetStackInstanceRuntimeInfoStateActive = HostRuntimeInfoNetStackInstanceRuntimeInfoState("active") + HostRuntimeInfoNetStackInstanceRuntimeInfoStateDeactivating = HostRuntimeInfoNetStackInstanceRuntimeInfoState("deactivating") + HostRuntimeInfoNetStackInstanceRuntimeInfoStateActivating = HostRuntimeInfoNetStackInstanceRuntimeInfoState("activating") +) + +func init() { + t["HostRuntimeInfoNetStackInstanceRuntimeInfoState"] = reflect.TypeOf((*HostRuntimeInfoNetStackInstanceRuntimeInfoState)(nil)).Elem() +} + +type HostServicePolicy string + +const ( + HostServicePolicyOn = HostServicePolicy("on") + HostServicePolicyAutomatic = HostServicePolicy("automatic") + HostServicePolicyOff = HostServicePolicy("off") +) + +func init() { + t["HostServicePolicy"] = reflect.TypeOf((*HostServicePolicy)(nil)).Elem() +} + +type HostSgxInfoFlcModes string + +const ( + HostSgxInfoFlcModesOff = HostSgxInfoFlcModes("off") + HostSgxInfoFlcModesLocked = HostSgxInfoFlcModes("locked") + HostSgxInfoFlcModesUnlocked = HostSgxInfoFlcModes("unlocked") +) + +func init() { + t["HostSgxInfoFlcModes"] = reflect.TypeOf((*HostSgxInfoFlcModes)(nil)).Elem() +} + +type HostSgxInfoSgxStates string + +const ( + HostSgxInfoSgxStatesNotPresent = HostSgxInfoSgxStates("notPresent") + HostSgxInfoSgxStatesDisabledBIOS = HostSgxInfoSgxStates("disabledBIOS") + HostSgxInfoSgxStatesDisabledCFW101 = HostSgxInfoSgxStates("disabledCFW101") + HostSgxInfoSgxStatesDisabledCPUMismatch = HostSgxInfoSgxStates("disabledCPUMismatch") + HostSgxInfoSgxStatesDisabledNoFLC = HostSgxInfoSgxStates("disabledNoFLC") + HostSgxInfoSgxStatesDisabledNUMAUnsup = HostSgxInfoSgxStates("disabledNUMAUnsup") + HostSgxInfoSgxStatesDisabledMaxEPCRegs = HostSgxInfoSgxStates("disabledMaxEPCRegs") + HostSgxInfoSgxStatesEnabled = HostSgxInfoSgxStates("enabled") +) + +func init() { + t["HostSgxInfoSgxStates"] = reflect.TypeOf((*HostSgxInfoSgxStates)(nil)).Elem() +} + +type HostSnmpAgentCapability string + +const ( + HostSnmpAgentCapabilityCOMPLETE = HostSnmpAgentCapability("COMPLETE") + HostSnmpAgentCapabilityDIAGNOSTICS = HostSnmpAgentCapability("DIAGNOSTICS") + HostSnmpAgentCapabilityCONFIGURATION = HostSnmpAgentCapability("CONFIGURATION") +) + +func init() { + t["HostSnmpAgentCapability"] = reflect.TypeOf((*HostSnmpAgentCapability)(nil)).Elem() +} + +type HostStandbyMode string + +const ( + HostStandbyModeEntering = HostStandbyMode("entering") + HostStandbyModeExiting = HostStandbyMode("exiting") + HostStandbyModeIn = HostStandbyMode("in") + HostStandbyModeNone = HostStandbyMode("none") +) + +func init() { + t["HostStandbyMode"] = reflect.TypeOf((*HostStandbyMode)(nil)).Elem() +} + +type HostStorageProtocol string + +const ( + HostStorageProtocolScsi = HostStorageProtocol("scsi") + HostStorageProtocolNvme = HostStorageProtocol("nvme") +) + +func init() { + t["HostStorageProtocol"] = reflect.TypeOf((*HostStorageProtocol)(nil)).Elem() +} + +type HostSystemConnectionState string + +const ( + HostSystemConnectionStateConnected = HostSystemConnectionState("connected") + HostSystemConnectionStateNotResponding = HostSystemConnectionState("notResponding") + HostSystemConnectionStateDisconnected = HostSystemConnectionState("disconnected") +) + +func init() { + t["HostSystemConnectionState"] = reflect.TypeOf((*HostSystemConnectionState)(nil)).Elem() +} + +type HostSystemIdentificationInfoIdentifier string + +const ( + HostSystemIdentificationInfoIdentifierAssetTag = HostSystemIdentificationInfoIdentifier("AssetTag") + HostSystemIdentificationInfoIdentifierServiceTag = HostSystemIdentificationInfoIdentifier("ServiceTag") + HostSystemIdentificationInfoIdentifierOemSpecificString = HostSystemIdentificationInfoIdentifier("OemSpecificString") + HostSystemIdentificationInfoIdentifierEnclosureSerialNumberTag = HostSystemIdentificationInfoIdentifier("EnclosureSerialNumberTag") + HostSystemIdentificationInfoIdentifierSerialNumberTag = HostSystemIdentificationInfoIdentifier("SerialNumberTag") +) + +func init() { + t["HostSystemIdentificationInfoIdentifier"] = reflect.TypeOf((*HostSystemIdentificationInfoIdentifier)(nil)).Elem() +} + +type HostSystemPowerState string + +const ( + HostSystemPowerStatePoweredOn = HostSystemPowerState("poweredOn") + HostSystemPowerStatePoweredOff = HostSystemPowerState("poweredOff") + HostSystemPowerStateStandBy = HostSystemPowerState("standBy") + HostSystemPowerStateUnknown = HostSystemPowerState("unknown") +) + +func init() { + t["HostSystemPowerState"] = reflect.TypeOf((*HostSystemPowerState)(nil)).Elem() +} + +type HostSystemRemediationStateState string + +const ( + HostSystemRemediationStateStateRemediationReady = HostSystemRemediationStateState("remediationReady") + HostSystemRemediationStateStatePrecheckRemediationRunning = HostSystemRemediationStateState("precheckRemediationRunning") + HostSystemRemediationStateStatePrecheckRemediationComplete = HostSystemRemediationStateState("precheckRemediationComplete") + HostSystemRemediationStateStatePrecheckRemediationFailed = HostSystemRemediationStateState("precheckRemediationFailed") + HostSystemRemediationStateStateRemediationRunning = HostSystemRemediationStateState("remediationRunning") + HostSystemRemediationStateStateRemediationFailed = HostSystemRemediationStateState("remediationFailed") +) + +func init() { + t["HostSystemRemediationStateState"] = reflect.TypeOf((*HostSystemRemediationStateState)(nil)).Elem() +} + +type HostTpmAttestationInfoAcceptanceStatus string + +const ( + HostTpmAttestationInfoAcceptanceStatusNotAccepted = HostTpmAttestationInfoAcceptanceStatus("notAccepted") + HostTpmAttestationInfoAcceptanceStatusAccepted = HostTpmAttestationInfoAcceptanceStatus("accepted") +) + +func init() { + t["HostTpmAttestationInfoAcceptanceStatus"] = reflect.TypeOf((*HostTpmAttestationInfoAcceptanceStatus)(nil)).Elem() +} + +type HostUnresolvedVmfsExtentUnresolvedReason string + +const ( + HostUnresolvedVmfsExtentUnresolvedReasonDiskIdMismatch = HostUnresolvedVmfsExtentUnresolvedReason("diskIdMismatch") + HostUnresolvedVmfsExtentUnresolvedReasonUuidConflict = HostUnresolvedVmfsExtentUnresolvedReason("uuidConflict") +) + +func init() { + t["HostUnresolvedVmfsExtentUnresolvedReason"] = reflect.TypeOf((*HostUnresolvedVmfsExtentUnresolvedReason)(nil)).Elem() +} + +type HostUnresolvedVmfsResolutionSpecVmfsUuidResolution string + +const ( + HostUnresolvedVmfsResolutionSpecVmfsUuidResolutionResignature = HostUnresolvedVmfsResolutionSpecVmfsUuidResolution("resignature") + HostUnresolvedVmfsResolutionSpecVmfsUuidResolutionForceMount = HostUnresolvedVmfsResolutionSpecVmfsUuidResolution("forceMount") +) + +func init() { + t["HostUnresolvedVmfsResolutionSpecVmfsUuidResolution"] = reflect.TypeOf((*HostUnresolvedVmfsResolutionSpecVmfsUuidResolution)(nil)).Elem() +} + +type HostVirtualNicManagerNicType string + +const ( + HostVirtualNicManagerNicTypeVmotion = HostVirtualNicManagerNicType("vmotion") + HostVirtualNicManagerNicTypeFaultToleranceLogging = HostVirtualNicManagerNicType("faultToleranceLogging") + HostVirtualNicManagerNicTypeVSphereReplication = HostVirtualNicManagerNicType("vSphereReplication") + HostVirtualNicManagerNicTypeVSphereReplicationNFC = HostVirtualNicManagerNicType("vSphereReplicationNFC") + HostVirtualNicManagerNicTypeManagement = HostVirtualNicManagerNicType("management") + HostVirtualNicManagerNicTypeVsan = HostVirtualNicManagerNicType("vsan") + HostVirtualNicManagerNicTypeVSphereProvisioning = HostVirtualNicManagerNicType("vSphereProvisioning") + HostVirtualNicManagerNicTypeVsanWitness = HostVirtualNicManagerNicType("vsanWitness") + HostVirtualNicManagerNicTypeVSphereBackupNFC = HostVirtualNicManagerNicType("vSphereBackupNFC") + HostVirtualNicManagerNicTypePtp = HostVirtualNicManagerNicType("ptp") +) + +func init() { + t["HostVirtualNicManagerNicType"] = reflect.TypeOf((*HostVirtualNicManagerNicType)(nil)).Elem() +} + +type HostVmciAccessManagerMode string + +const ( + HostVmciAccessManagerModeGrant = HostVmciAccessManagerMode("grant") + HostVmciAccessManagerModeReplace = HostVmciAccessManagerMode("replace") + HostVmciAccessManagerModeRevoke = HostVmciAccessManagerMode("revoke") +) + +func init() { + t["HostVmciAccessManagerMode"] = reflect.TypeOf((*HostVmciAccessManagerMode)(nil)).Elem() +} + +type HostVmfsVolumeUnmapBandwidthPolicy string + +const ( + HostVmfsVolumeUnmapBandwidthPolicyFixed = HostVmfsVolumeUnmapBandwidthPolicy("fixed") + HostVmfsVolumeUnmapBandwidthPolicyDynamic = HostVmfsVolumeUnmapBandwidthPolicy("dynamic") +) + +func init() { + t["HostVmfsVolumeUnmapBandwidthPolicy"] = reflect.TypeOf((*HostVmfsVolumeUnmapBandwidthPolicy)(nil)).Elem() +} + +type HostVmfsVolumeUnmapPriority string + +const ( + HostVmfsVolumeUnmapPriorityNone = HostVmfsVolumeUnmapPriority("none") + HostVmfsVolumeUnmapPriorityLow = HostVmfsVolumeUnmapPriority("low") +) + +func init() { + t["HostVmfsVolumeUnmapPriority"] = reflect.TypeOf((*HostVmfsVolumeUnmapPriority)(nil)).Elem() +} + +type HttpNfcLeaseManifestEntryChecksumType string + +const ( + HttpNfcLeaseManifestEntryChecksumTypeSha1 = HttpNfcLeaseManifestEntryChecksumType("sha1") + HttpNfcLeaseManifestEntryChecksumTypeSha256 = HttpNfcLeaseManifestEntryChecksumType("sha256") +) + +func init() { + t["HttpNfcLeaseManifestEntryChecksumType"] = reflect.TypeOf((*HttpNfcLeaseManifestEntryChecksumType)(nil)).Elem() +} + +type HttpNfcLeaseMode string + +const ( + HttpNfcLeaseModePushOrGet = HttpNfcLeaseMode("pushOrGet") + HttpNfcLeaseModePull = HttpNfcLeaseMode("pull") +) + +func init() { + t["HttpNfcLeaseMode"] = reflect.TypeOf((*HttpNfcLeaseMode)(nil)).Elem() +} + +type HttpNfcLeaseState string + +const ( + HttpNfcLeaseStateInitializing = HttpNfcLeaseState("initializing") + HttpNfcLeaseStateReady = HttpNfcLeaseState("ready") + HttpNfcLeaseStateDone = HttpNfcLeaseState("done") + HttpNfcLeaseStateError = HttpNfcLeaseState("error") +) + +func init() { + t["HttpNfcLeaseState"] = reflect.TypeOf((*HttpNfcLeaseState)(nil)).Elem() +} + +type IncompatibleHostForVmReplicationIncompatibleReason string + +const ( + IncompatibleHostForVmReplicationIncompatibleReasonRpo = IncompatibleHostForVmReplicationIncompatibleReason("rpo") + IncompatibleHostForVmReplicationIncompatibleReasonNetCompression = IncompatibleHostForVmReplicationIncompatibleReason("netCompression") +) + +func init() { + t["IncompatibleHostForVmReplicationIncompatibleReason"] = reflect.TypeOf((*IncompatibleHostForVmReplicationIncompatibleReason)(nil)).Elem() +} + +type InternetScsiSnsDiscoveryMethod string + +const ( + InternetScsiSnsDiscoveryMethodIsnsStatic = InternetScsiSnsDiscoveryMethod("isnsStatic") + InternetScsiSnsDiscoveryMethodIsnsDhcp = InternetScsiSnsDiscoveryMethod("isnsDhcp") + InternetScsiSnsDiscoveryMethodIsnsSlp = InternetScsiSnsDiscoveryMethod("isnsSlp") +) + +func init() { + t["InternetScsiSnsDiscoveryMethod"] = reflect.TypeOf((*InternetScsiSnsDiscoveryMethod)(nil)).Elem() +} + +type InvalidDasConfigArgumentEntryForInvalidArgument string + +const ( + InvalidDasConfigArgumentEntryForInvalidArgumentAdmissionControl = InvalidDasConfigArgumentEntryForInvalidArgument("admissionControl") + InvalidDasConfigArgumentEntryForInvalidArgumentUserHeartbeatDs = InvalidDasConfigArgumentEntryForInvalidArgument("userHeartbeatDs") + InvalidDasConfigArgumentEntryForInvalidArgumentVmConfig = InvalidDasConfigArgumentEntryForInvalidArgument("vmConfig") +) + +func init() { + t["InvalidDasConfigArgumentEntryForInvalidArgument"] = reflect.TypeOf((*InvalidDasConfigArgumentEntryForInvalidArgument)(nil)).Elem() +} + +type InvalidProfileReferenceHostReason string + +const ( + InvalidProfileReferenceHostReasonIncompatibleVersion = InvalidProfileReferenceHostReason("incompatibleVersion") + InvalidProfileReferenceHostReasonMissingReferenceHost = InvalidProfileReferenceHostReason("missingReferenceHost") +) + +func init() { + t["InvalidProfileReferenceHostReason"] = reflect.TypeOf((*InvalidProfileReferenceHostReason)(nil)).Elem() +} + +type IoFilterOperation string + +const ( + IoFilterOperationInstall = IoFilterOperation("install") + IoFilterOperationUninstall = IoFilterOperation("uninstall") + IoFilterOperationUpgrade = IoFilterOperation("upgrade") +) + +func init() { + t["IoFilterOperation"] = reflect.TypeOf((*IoFilterOperation)(nil)).Elem() +} + +type IoFilterType string + +const ( + IoFilterTypeCache = IoFilterType("cache") + IoFilterTypeReplication = IoFilterType("replication") + IoFilterTypeEncryption = IoFilterType("encryption") + IoFilterTypeCompression = IoFilterType("compression") + IoFilterTypeInspection = IoFilterType("inspection") + IoFilterTypeDatastoreIoControl = IoFilterType("datastoreIoControl") + IoFilterTypeDataProvider = IoFilterType("dataProvider") +) + +func init() { + t["IoFilterType"] = reflect.TypeOf((*IoFilterType)(nil)).Elem() +} + +type IscsiPortInfoPathStatus string + +const ( + IscsiPortInfoPathStatusNotUsed = IscsiPortInfoPathStatus("notUsed") + IscsiPortInfoPathStatusActive = IscsiPortInfoPathStatus("active") + IscsiPortInfoPathStatusStandBy = IscsiPortInfoPathStatus("standBy") + IscsiPortInfoPathStatusLastActive = IscsiPortInfoPathStatus("lastActive") +) + +func init() { + t["IscsiPortInfoPathStatus"] = reflect.TypeOf((*IscsiPortInfoPathStatus)(nil)).Elem() +} + +type KmipClusterInfoKmsManagementType string + +const ( + KmipClusterInfoKmsManagementTypeUnknown = KmipClusterInfoKmsManagementType("unknown") + KmipClusterInfoKmsManagementTypeVCenter = KmipClusterInfoKmsManagementType("vCenter") + KmipClusterInfoKmsManagementTypeTrustAuthority = KmipClusterInfoKmsManagementType("trustAuthority") +) + +func init() { + t["KmipClusterInfoKmsManagementType"] = reflect.TypeOf((*KmipClusterInfoKmsManagementType)(nil)).Elem() +} + +type LatencySensitivitySensitivityLevel string + +const ( + LatencySensitivitySensitivityLevelLow = LatencySensitivitySensitivityLevel("low") + LatencySensitivitySensitivityLevelNormal = LatencySensitivitySensitivityLevel("normal") + LatencySensitivitySensitivityLevelMedium = LatencySensitivitySensitivityLevel("medium") + LatencySensitivitySensitivityLevelHigh = LatencySensitivitySensitivityLevel("high") + LatencySensitivitySensitivityLevelCustom = LatencySensitivitySensitivityLevel("custom") +) + +func init() { + t["LatencySensitivitySensitivityLevel"] = reflect.TypeOf((*LatencySensitivitySensitivityLevel)(nil)).Elem() +} + +type LicenseAssignmentFailedReason string + +const ( + LicenseAssignmentFailedReasonKeyEntityMismatch = LicenseAssignmentFailedReason("keyEntityMismatch") + LicenseAssignmentFailedReasonDowngradeDisallowed = LicenseAssignmentFailedReason("downgradeDisallowed") + LicenseAssignmentFailedReasonInventoryNotManageableByVirtualCenter = LicenseAssignmentFailedReason("inventoryNotManageableByVirtualCenter") + LicenseAssignmentFailedReasonHostsUnmanageableByVirtualCenterWithoutLicenseServer = LicenseAssignmentFailedReason("hostsUnmanageableByVirtualCenterWithoutLicenseServer") +) + +func init() { + t["LicenseAssignmentFailedReason"] = reflect.TypeOf((*LicenseAssignmentFailedReason)(nil)).Elem() +} + +type LicenseFeatureInfoSourceRestriction string + +const ( + LicenseFeatureInfoSourceRestrictionUnrestricted = LicenseFeatureInfoSourceRestriction("unrestricted") + LicenseFeatureInfoSourceRestrictionServed = LicenseFeatureInfoSourceRestriction("served") + LicenseFeatureInfoSourceRestrictionFile = LicenseFeatureInfoSourceRestriction("file") +) + +func init() { + t["LicenseFeatureInfoSourceRestriction"] = reflect.TypeOf((*LicenseFeatureInfoSourceRestriction)(nil)).Elem() +} + +type LicenseFeatureInfoState string + +const ( + LicenseFeatureInfoStateEnabled = LicenseFeatureInfoState("enabled") + LicenseFeatureInfoStateDisabled = LicenseFeatureInfoState("disabled") + LicenseFeatureInfoStateOptional = LicenseFeatureInfoState("optional") +) + +func init() { + t["LicenseFeatureInfoState"] = reflect.TypeOf((*LicenseFeatureInfoState)(nil)).Elem() +} + +type LicenseFeatureInfoUnit string + +const ( + LicenseFeatureInfoUnitHost = LicenseFeatureInfoUnit("host") + LicenseFeatureInfoUnitCpuCore = LicenseFeatureInfoUnit("cpuCore") + LicenseFeatureInfoUnitCpuPackage = LicenseFeatureInfoUnit("cpuPackage") + LicenseFeatureInfoUnitServer = LicenseFeatureInfoUnit("server") + LicenseFeatureInfoUnitVm = LicenseFeatureInfoUnit("vm") +) + +func init() { + t["LicenseFeatureInfoUnit"] = reflect.TypeOf((*LicenseFeatureInfoUnit)(nil)).Elem() +} + +type LicenseManagerLicenseKey string + +const ( + LicenseManagerLicenseKeyEsxFull = LicenseManagerLicenseKey("esxFull") + LicenseManagerLicenseKeyEsxVmtn = LicenseManagerLicenseKey("esxVmtn") + LicenseManagerLicenseKeyEsxExpress = LicenseManagerLicenseKey("esxExpress") + LicenseManagerLicenseKeySan = LicenseManagerLicenseKey("san") + LicenseManagerLicenseKeyIscsi = LicenseManagerLicenseKey("iscsi") + LicenseManagerLicenseKeyNas = LicenseManagerLicenseKey("nas") + LicenseManagerLicenseKeyVsmp = LicenseManagerLicenseKey("vsmp") + LicenseManagerLicenseKeyBackup = LicenseManagerLicenseKey("backup") + LicenseManagerLicenseKeyVc = LicenseManagerLicenseKey("vc") + LicenseManagerLicenseKeyVcExpress = LicenseManagerLicenseKey("vcExpress") + LicenseManagerLicenseKeyEsxHost = LicenseManagerLicenseKey("esxHost") + LicenseManagerLicenseKeyGsxHost = LicenseManagerLicenseKey("gsxHost") + LicenseManagerLicenseKeyServerHost = LicenseManagerLicenseKey("serverHost") + LicenseManagerLicenseKeyDrsPower = LicenseManagerLicenseKey("drsPower") + LicenseManagerLicenseKeyVmotion = LicenseManagerLicenseKey("vmotion") + LicenseManagerLicenseKeyDrs = LicenseManagerLicenseKey("drs") + LicenseManagerLicenseKeyDas = LicenseManagerLicenseKey("das") +) + +func init() { + t["LicenseManagerLicenseKey"] = reflect.TypeOf((*LicenseManagerLicenseKey)(nil)).Elem() +} + +type LicenseManagerState string + +const ( + LicenseManagerStateInitializing = LicenseManagerState("initializing") + LicenseManagerStateNormal = LicenseManagerState("normal") + LicenseManagerStateMarginal = LicenseManagerState("marginal") + LicenseManagerStateFault = LicenseManagerState("fault") +) + +func init() { + t["LicenseManagerState"] = reflect.TypeOf((*LicenseManagerState)(nil)).Elem() +} + +type LicenseReservationInfoState string + +const ( + LicenseReservationInfoStateNotUsed = LicenseReservationInfoState("notUsed") + LicenseReservationInfoStateNoLicense = LicenseReservationInfoState("noLicense") + LicenseReservationInfoStateUnlicensedUse = LicenseReservationInfoState("unlicensedUse") + LicenseReservationInfoStateLicensed = LicenseReservationInfoState("licensed") +) + +func init() { + t["LicenseReservationInfoState"] = reflect.TypeOf((*LicenseReservationInfoState)(nil)).Elem() +} + +type LinkDiscoveryProtocolConfigOperationType string + +const ( + LinkDiscoveryProtocolConfigOperationTypeNone = LinkDiscoveryProtocolConfigOperationType("none") + LinkDiscoveryProtocolConfigOperationTypeListen = LinkDiscoveryProtocolConfigOperationType("listen") + LinkDiscoveryProtocolConfigOperationTypeAdvertise = LinkDiscoveryProtocolConfigOperationType("advertise") + LinkDiscoveryProtocolConfigOperationTypeBoth = LinkDiscoveryProtocolConfigOperationType("both") +) + +func init() { + t["LinkDiscoveryProtocolConfigOperationType"] = reflect.TypeOf((*LinkDiscoveryProtocolConfigOperationType)(nil)).Elem() +} + +type LinkDiscoveryProtocolConfigProtocolType string + +const ( + LinkDiscoveryProtocolConfigProtocolTypeCdp = LinkDiscoveryProtocolConfigProtocolType("cdp") + LinkDiscoveryProtocolConfigProtocolTypeLldp = LinkDiscoveryProtocolConfigProtocolType("lldp") +) + +func init() { + t["LinkDiscoveryProtocolConfigProtocolType"] = reflect.TypeOf((*LinkDiscoveryProtocolConfigProtocolType)(nil)).Elem() +} + +type ManagedEntityStatus string + +const ( + ManagedEntityStatusGray = ManagedEntityStatus("gray") + ManagedEntityStatusGreen = ManagedEntityStatus("green") + ManagedEntityStatusYellow = ManagedEntityStatus("yellow") + ManagedEntityStatusRed = ManagedEntityStatus("red") +) + +func init() { + t["ManagedEntityStatus"] = reflect.TypeOf((*ManagedEntityStatus)(nil)).Elem() +} + +type MetricAlarmOperator string + +const ( + MetricAlarmOperatorIsAbove = MetricAlarmOperator("isAbove") + MetricAlarmOperatorIsBelow = MetricAlarmOperator("isBelow") +) + +func init() { + t["MetricAlarmOperator"] = reflect.TypeOf((*MetricAlarmOperator)(nil)).Elem() +} + +type MultipathState string + +const ( + MultipathStateStandby = MultipathState("standby") + MultipathStateActive = MultipathState("active") + MultipathStateDisabled = MultipathState("disabled") + MultipathStateDead = MultipathState("dead") + MultipathStateUnknown = MultipathState("unknown") +) + +func init() { + t["MultipathState"] = reflect.TypeOf((*MultipathState)(nil)).Elem() +} + +type NetBIOSConfigInfoMode string + +const ( + NetBIOSConfigInfoModeUnknown = NetBIOSConfigInfoMode("unknown") + NetBIOSConfigInfoModeEnabled = NetBIOSConfigInfoMode("enabled") + NetBIOSConfigInfoModeDisabled = NetBIOSConfigInfoMode("disabled") + NetBIOSConfigInfoModeEnabledViaDHCP = NetBIOSConfigInfoMode("enabledViaDHCP") +) + +func init() { + t["NetBIOSConfigInfoMode"] = reflect.TypeOf((*NetBIOSConfigInfoMode)(nil)).Elem() +} + +type NetIpConfigInfoIpAddressOrigin string + +const ( + NetIpConfigInfoIpAddressOriginOther = NetIpConfigInfoIpAddressOrigin("other") + NetIpConfigInfoIpAddressOriginManual = NetIpConfigInfoIpAddressOrigin("manual") + NetIpConfigInfoIpAddressOriginDhcp = NetIpConfigInfoIpAddressOrigin("dhcp") + NetIpConfigInfoIpAddressOriginLinklayer = NetIpConfigInfoIpAddressOrigin("linklayer") + NetIpConfigInfoIpAddressOriginRandom = NetIpConfigInfoIpAddressOrigin("random") +) + +func init() { + t["NetIpConfigInfoIpAddressOrigin"] = reflect.TypeOf((*NetIpConfigInfoIpAddressOrigin)(nil)).Elem() +} + +type NetIpConfigInfoIpAddressStatus string + +const ( + NetIpConfigInfoIpAddressStatusPreferred = NetIpConfigInfoIpAddressStatus("preferred") + NetIpConfigInfoIpAddressStatusDeprecated = NetIpConfigInfoIpAddressStatus("deprecated") + NetIpConfigInfoIpAddressStatusInvalid = NetIpConfigInfoIpAddressStatus("invalid") + NetIpConfigInfoIpAddressStatusInaccessible = NetIpConfigInfoIpAddressStatus("inaccessible") + NetIpConfigInfoIpAddressStatusUnknown = NetIpConfigInfoIpAddressStatus("unknown") + NetIpConfigInfoIpAddressStatusTentative = NetIpConfigInfoIpAddressStatus("tentative") + NetIpConfigInfoIpAddressStatusDuplicate = NetIpConfigInfoIpAddressStatus("duplicate") +) + +func init() { + t["NetIpConfigInfoIpAddressStatus"] = reflect.TypeOf((*NetIpConfigInfoIpAddressStatus)(nil)).Elem() +} + +type NetIpStackInfoEntryType string + +const ( + NetIpStackInfoEntryTypeOther = NetIpStackInfoEntryType("other") + NetIpStackInfoEntryTypeInvalid = NetIpStackInfoEntryType("invalid") + NetIpStackInfoEntryTypeDynamic = NetIpStackInfoEntryType("dynamic") + NetIpStackInfoEntryTypeManual = NetIpStackInfoEntryType("manual") +) + +func init() { + t["NetIpStackInfoEntryType"] = reflect.TypeOf((*NetIpStackInfoEntryType)(nil)).Elem() +} + +type NetIpStackInfoPreference string + +const ( + NetIpStackInfoPreferenceReserved = NetIpStackInfoPreference("reserved") + NetIpStackInfoPreferenceLow = NetIpStackInfoPreference("low") + NetIpStackInfoPreferenceMedium = NetIpStackInfoPreference("medium") + NetIpStackInfoPreferenceHigh = NetIpStackInfoPreference("high") +) + +func init() { + t["NetIpStackInfoPreference"] = reflect.TypeOf((*NetIpStackInfoPreference)(nil)).Elem() +} + +type NotSupportedDeviceForFTDeviceType string + +const ( + NotSupportedDeviceForFTDeviceTypeVirtualVmxnet3 = NotSupportedDeviceForFTDeviceType("virtualVmxnet3") + NotSupportedDeviceForFTDeviceTypeParaVirtualSCSIController = NotSupportedDeviceForFTDeviceType("paraVirtualSCSIController") +) + +func init() { + t["NotSupportedDeviceForFTDeviceType"] = reflect.TypeOf((*NotSupportedDeviceForFTDeviceType)(nil)).Elem() +} + +type NumVirtualCpusIncompatibleReason string + +const ( + NumVirtualCpusIncompatibleReasonRecordReplay = NumVirtualCpusIncompatibleReason("recordReplay") + NumVirtualCpusIncompatibleReasonFaultTolerance = NumVirtualCpusIncompatibleReason("faultTolerance") +) + +func init() { + t["NumVirtualCpusIncompatibleReason"] = reflect.TypeOf((*NumVirtualCpusIncompatibleReason)(nil)).Elem() +} + +type NvdimmInterleaveSetState string + +const ( + NvdimmInterleaveSetStateInvalid = NvdimmInterleaveSetState("invalid") + NvdimmInterleaveSetStateActive = NvdimmInterleaveSetState("active") +) + +func init() { + t["NvdimmInterleaveSetState"] = reflect.TypeOf((*NvdimmInterleaveSetState)(nil)).Elem() +} + +type NvdimmNamespaceDetailsHealthStatus string + +const ( + NvdimmNamespaceDetailsHealthStatusNormal = NvdimmNamespaceDetailsHealthStatus("normal") + NvdimmNamespaceDetailsHealthStatusMissing = NvdimmNamespaceDetailsHealthStatus("missing") + NvdimmNamespaceDetailsHealthStatusLabelMissing = NvdimmNamespaceDetailsHealthStatus("labelMissing") + NvdimmNamespaceDetailsHealthStatusInterleaveBroken = NvdimmNamespaceDetailsHealthStatus("interleaveBroken") + NvdimmNamespaceDetailsHealthStatusLabelInconsistent = NvdimmNamespaceDetailsHealthStatus("labelInconsistent") +) + +func init() { + t["NvdimmNamespaceDetailsHealthStatus"] = reflect.TypeOf((*NvdimmNamespaceDetailsHealthStatus)(nil)).Elem() +} + +type NvdimmNamespaceDetailsState string + +const ( + NvdimmNamespaceDetailsStateInvalid = NvdimmNamespaceDetailsState("invalid") + NvdimmNamespaceDetailsStateNotInUse = NvdimmNamespaceDetailsState("notInUse") + NvdimmNamespaceDetailsStateInUse = NvdimmNamespaceDetailsState("inUse") +) + +func init() { + t["NvdimmNamespaceDetailsState"] = reflect.TypeOf((*NvdimmNamespaceDetailsState)(nil)).Elem() +} + +type NvdimmNamespaceHealthStatus string + +const ( + NvdimmNamespaceHealthStatusNormal = NvdimmNamespaceHealthStatus("normal") + NvdimmNamespaceHealthStatusMissing = NvdimmNamespaceHealthStatus("missing") + NvdimmNamespaceHealthStatusLabelMissing = NvdimmNamespaceHealthStatus("labelMissing") + NvdimmNamespaceHealthStatusInterleaveBroken = NvdimmNamespaceHealthStatus("interleaveBroken") + NvdimmNamespaceHealthStatusLabelInconsistent = NvdimmNamespaceHealthStatus("labelInconsistent") + NvdimmNamespaceHealthStatusBttCorrupt = NvdimmNamespaceHealthStatus("bttCorrupt") + NvdimmNamespaceHealthStatusBadBlockSize = NvdimmNamespaceHealthStatus("badBlockSize") +) + +func init() { + t["NvdimmNamespaceHealthStatus"] = reflect.TypeOf((*NvdimmNamespaceHealthStatus)(nil)).Elem() +} + +type NvdimmNamespaceState string + +const ( + NvdimmNamespaceStateInvalid = NvdimmNamespaceState("invalid") + NvdimmNamespaceStateNotInUse = NvdimmNamespaceState("notInUse") + NvdimmNamespaceStateInUse = NvdimmNamespaceState("inUse") +) + +func init() { + t["NvdimmNamespaceState"] = reflect.TypeOf((*NvdimmNamespaceState)(nil)).Elem() +} + +type NvdimmNamespaceType string + +const ( + NvdimmNamespaceTypeBlockNamespace = NvdimmNamespaceType("blockNamespace") + NvdimmNamespaceTypePersistentNamespace = NvdimmNamespaceType("persistentNamespace") +) + +func init() { + t["NvdimmNamespaceType"] = reflect.TypeOf((*NvdimmNamespaceType)(nil)).Elem() +} + +type NvdimmNvdimmHealthInfoState string + +const ( + NvdimmNvdimmHealthInfoStateNormal = NvdimmNvdimmHealthInfoState("normal") + NvdimmNvdimmHealthInfoStateError = NvdimmNvdimmHealthInfoState("error") +) + +func init() { + t["NvdimmNvdimmHealthInfoState"] = reflect.TypeOf((*NvdimmNvdimmHealthInfoState)(nil)).Elem() +} + +type NvdimmRangeType string + +const ( + NvdimmRangeTypeVolatileRange = NvdimmRangeType("volatileRange") + NvdimmRangeTypePersistentRange = NvdimmRangeType("persistentRange") + NvdimmRangeTypeControlRange = NvdimmRangeType("controlRange") + NvdimmRangeTypeBlockRange = NvdimmRangeType("blockRange") + NvdimmRangeTypeVolatileVirtualDiskRange = NvdimmRangeType("volatileVirtualDiskRange") + NvdimmRangeTypeVolatileVirtualCDRange = NvdimmRangeType("volatileVirtualCDRange") + NvdimmRangeTypePersistentVirtualDiskRange = NvdimmRangeType("persistentVirtualDiskRange") + NvdimmRangeTypePersistentVirtualCDRange = NvdimmRangeType("persistentVirtualCDRange") +) + +func init() { + t["NvdimmRangeType"] = reflect.TypeOf((*NvdimmRangeType)(nil)).Elem() +} + +type ObjectUpdateKind string + +const ( + ObjectUpdateKindModify = ObjectUpdateKind("modify") + ObjectUpdateKindEnter = ObjectUpdateKind("enter") + ObjectUpdateKindLeave = ObjectUpdateKind("leave") +) + +func init() { + t["ObjectUpdateKind"] = reflect.TypeOf((*ObjectUpdateKind)(nil)).Elem() +} + +type OvfConsumerOstNodeType string + +const ( + OvfConsumerOstNodeTypeEnvelope = OvfConsumerOstNodeType("envelope") + OvfConsumerOstNodeTypeVirtualSystem = OvfConsumerOstNodeType("virtualSystem") + OvfConsumerOstNodeTypeVirtualSystemCollection = OvfConsumerOstNodeType("virtualSystemCollection") +) + +func init() { + t["OvfConsumerOstNodeType"] = reflect.TypeOf((*OvfConsumerOstNodeType)(nil)).Elem() +} + +type OvfCreateImportSpecParamsDiskProvisioningType string + +const ( + OvfCreateImportSpecParamsDiskProvisioningTypeMonolithicSparse = OvfCreateImportSpecParamsDiskProvisioningType("monolithicSparse") + OvfCreateImportSpecParamsDiskProvisioningTypeMonolithicFlat = OvfCreateImportSpecParamsDiskProvisioningType("monolithicFlat") + OvfCreateImportSpecParamsDiskProvisioningTypeTwoGbMaxExtentSparse = OvfCreateImportSpecParamsDiskProvisioningType("twoGbMaxExtentSparse") + OvfCreateImportSpecParamsDiskProvisioningTypeTwoGbMaxExtentFlat = OvfCreateImportSpecParamsDiskProvisioningType("twoGbMaxExtentFlat") + OvfCreateImportSpecParamsDiskProvisioningTypeThin = OvfCreateImportSpecParamsDiskProvisioningType("thin") + OvfCreateImportSpecParamsDiskProvisioningTypeThick = OvfCreateImportSpecParamsDiskProvisioningType("thick") + OvfCreateImportSpecParamsDiskProvisioningTypeSeSparse = OvfCreateImportSpecParamsDiskProvisioningType("seSparse") + OvfCreateImportSpecParamsDiskProvisioningTypeEagerZeroedThick = OvfCreateImportSpecParamsDiskProvisioningType("eagerZeroedThick") + OvfCreateImportSpecParamsDiskProvisioningTypeSparse = OvfCreateImportSpecParamsDiskProvisioningType("sparse") + OvfCreateImportSpecParamsDiskProvisioningTypeFlat = OvfCreateImportSpecParamsDiskProvisioningType("flat") +) + +func init() { + t["OvfCreateImportSpecParamsDiskProvisioningType"] = reflect.TypeOf((*OvfCreateImportSpecParamsDiskProvisioningType)(nil)).Elem() +} + +type PerfFormat string + +const ( + PerfFormatNormal = PerfFormat("normal") + PerfFormatCsv = PerfFormat("csv") +) + +func init() { + t["PerfFormat"] = reflect.TypeOf((*PerfFormat)(nil)).Elem() +} + +type PerfStatsType string + +const ( + PerfStatsTypeAbsolute = PerfStatsType("absolute") + PerfStatsTypeDelta = PerfStatsType("delta") + PerfStatsTypeRate = PerfStatsType("rate") +) + +func init() { + t["PerfStatsType"] = reflect.TypeOf((*PerfStatsType)(nil)).Elem() +} + +type PerfSummaryType string + +const ( + PerfSummaryTypeAverage = PerfSummaryType("average") + PerfSummaryTypeMaximum = PerfSummaryType("maximum") + PerfSummaryTypeMinimum = PerfSummaryType("minimum") + PerfSummaryTypeLatest = PerfSummaryType("latest") + PerfSummaryTypeSummation = PerfSummaryType("summation") + PerfSummaryTypeNone = PerfSummaryType("none") +) + +func init() { + t["PerfSummaryType"] = reflect.TypeOf((*PerfSummaryType)(nil)).Elem() +} + +type PerformanceManagerUnit string + +const ( + PerformanceManagerUnitPercent = PerformanceManagerUnit("percent") + PerformanceManagerUnitKiloBytes = PerformanceManagerUnit("kiloBytes") + PerformanceManagerUnitMegaBytes = PerformanceManagerUnit("megaBytes") + PerformanceManagerUnitMegaHertz = PerformanceManagerUnit("megaHertz") + PerformanceManagerUnitNumber = PerformanceManagerUnit("number") + PerformanceManagerUnitMicrosecond = PerformanceManagerUnit("microsecond") + PerformanceManagerUnitMillisecond = PerformanceManagerUnit("millisecond") + PerformanceManagerUnitSecond = PerformanceManagerUnit("second") + PerformanceManagerUnitKiloBytesPerSecond = PerformanceManagerUnit("kiloBytesPerSecond") + PerformanceManagerUnitMegaBytesPerSecond = PerformanceManagerUnit("megaBytesPerSecond") + PerformanceManagerUnitWatt = PerformanceManagerUnit("watt") + PerformanceManagerUnitJoule = PerformanceManagerUnit("joule") + PerformanceManagerUnitTeraBytes = PerformanceManagerUnit("teraBytes") + PerformanceManagerUnitCelsius = PerformanceManagerUnit("celsius") +) + +func init() { + t["PerformanceManagerUnit"] = reflect.TypeOf((*PerformanceManagerUnit)(nil)).Elem() +} + +type PhysicalNicResourcePoolSchedulerDisallowedReason string + +const ( + PhysicalNicResourcePoolSchedulerDisallowedReasonUserOptOut = PhysicalNicResourcePoolSchedulerDisallowedReason("userOptOut") + PhysicalNicResourcePoolSchedulerDisallowedReasonHardwareUnsupported = PhysicalNicResourcePoolSchedulerDisallowedReason("hardwareUnsupported") +) + +func init() { + t["PhysicalNicResourcePoolSchedulerDisallowedReason"] = reflect.TypeOf((*PhysicalNicResourcePoolSchedulerDisallowedReason)(nil)).Elem() +} + +type PhysicalNicVmDirectPathGen2SupportedMode string + +const ( + PhysicalNicVmDirectPathGen2SupportedModeUpt = PhysicalNicVmDirectPathGen2SupportedMode("upt") +) + +func init() { + t["PhysicalNicVmDirectPathGen2SupportedMode"] = reflect.TypeOf((*PhysicalNicVmDirectPathGen2SupportedMode)(nil)).Elem() +} + +type PlacementAffinityRuleRuleScope string + +const ( + PlacementAffinityRuleRuleScopeCluster = PlacementAffinityRuleRuleScope("cluster") + PlacementAffinityRuleRuleScopeHost = PlacementAffinityRuleRuleScope("host") + PlacementAffinityRuleRuleScopeStoragePod = PlacementAffinityRuleRuleScope("storagePod") + PlacementAffinityRuleRuleScopeDatastore = PlacementAffinityRuleRuleScope("datastore") +) + +func init() { + t["PlacementAffinityRuleRuleScope"] = reflect.TypeOf((*PlacementAffinityRuleRuleScope)(nil)).Elem() +} + +type PlacementAffinityRuleRuleType string + +const ( + PlacementAffinityRuleRuleTypeAffinity = PlacementAffinityRuleRuleType("affinity") + PlacementAffinityRuleRuleTypeAntiAffinity = PlacementAffinityRuleRuleType("antiAffinity") + PlacementAffinityRuleRuleTypeSoftAffinity = PlacementAffinityRuleRuleType("softAffinity") + PlacementAffinityRuleRuleTypeSoftAntiAffinity = PlacementAffinityRuleRuleType("softAntiAffinity") +) + +func init() { + t["PlacementAffinityRuleRuleType"] = reflect.TypeOf((*PlacementAffinityRuleRuleType)(nil)).Elem() +} + +type PlacementSpecPlacementType string + +const ( + PlacementSpecPlacementTypeCreate = PlacementSpecPlacementType("create") + PlacementSpecPlacementTypeReconfigure = PlacementSpecPlacementType("reconfigure") + PlacementSpecPlacementTypeRelocate = PlacementSpecPlacementType("relocate") + PlacementSpecPlacementTypeClone = PlacementSpecPlacementType("clone") +) + +func init() { + t["PlacementSpecPlacementType"] = reflect.TypeOf((*PlacementSpecPlacementType)(nil)).Elem() +} + +type PortGroupConnecteeType string + +const ( + PortGroupConnecteeTypeVirtualMachine = PortGroupConnecteeType("virtualMachine") + PortGroupConnecteeTypeSystemManagement = PortGroupConnecteeType("systemManagement") + PortGroupConnecteeTypeHost = PortGroupConnecteeType("host") + PortGroupConnecteeTypeUnknown = PortGroupConnecteeType("unknown") +) + +func init() { + t["PortGroupConnecteeType"] = reflect.TypeOf((*PortGroupConnecteeType)(nil)).Elem() +} + +type ProfileExecuteResultStatus string + +const ( + ProfileExecuteResultStatusSuccess = ProfileExecuteResultStatus("success") + ProfileExecuteResultStatusNeedInput = ProfileExecuteResultStatus("needInput") + ProfileExecuteResultStatusError = ProfileExecuteResultStatus("error") +) + +func init() { + t["ProfileExecuteResultStatus"] = reflect.TypeOf((*ProfileExecuteResultStatus)(nil)).Elem() +} + +type ProfileNumericComparator string + +const ( + ProfileNumericComparatorLessThan = ProfileNumericComparator("lessThan") + ProfileNumericComparatorLessThanEqual = ProfileNumericComparator("lessThanEqual") + ProfileNumericComparatorEqual = ProfileNumericComparator("equal") + ProfileNumericComparatorNotEqual = ProfileNumericComparator("notEqual") + ProfileNumericComparatorGreaterThanEqual = ProfileNumericComparator("greaterThanEqual") + ProfileNumericComparatorGreaterThan = ProfileNumericComparator("greaterThan") +) + +func init() { + t["ProfileNumericComparator"] = reflect.TypeOf((*ProfileNumericComparator)(nil)).Elem() +} + +type ProfileParameterMetadataRelationType string + +const ( + ProfileParameterMetadataRelationTypeDynamic_relation = ProfileParameterMetadataRelationType("dynamic_relation") + ProfileParameterMetadataRelationTypeExtensible_relation = ProfileParameterMetadataRelationType("extensible_relation") + ProfileParameterMetadataRelationTypeLocalizable_relation = ProfileParameterMetadataRelationType("localizable_relation") + ProfileParameterMetadataRelationTypeStatic_relation = ProfileParameterMetadataRelationType("static_relation") + ProfileParameterMetadataRelationTypeValidation_relation = ProfileParameterMetadataRelationType("validation_relation") +) + +func init() { + t["ProfileParameterMetadataRelationType"] = reflect.TypeOf((*ProfileParameterMetadataRelationType)(nil)).Elem() +} + +type PropertyChangeOp string + +const ( + PropertyChangeOpAdd = PropertyChangeOp("add") + PropertyChangeOpRemove = PropertyChangeOp("remove") + PropertyChangeOpAssign = PropertyChangeOp("assign") + PropertyChangeOpIndirectRemove = PropertyChangeOp("indirectRemove") +) + +func init() { + t["PropertyChangeOp"] = reflect.TypeOf((*PropertyChangeOp)(nil)).Elem() +} + +type QuarantineModeFaultFaultType string + +const ( + QuarantineModeFaultFaultTypeNoCompatibleNonQuarantinedHost = QuarantineModeFaultFaultType("NoCompatibleNonQuarantinedHost") + QuarantineModeFaultFaultTypeCorrectionDisallowed = QuarantineModeFaultFaultType("CorrectionDisallowed") + QuarantineModeFaultFaultTypeCorrectionImpact = QuarantineModeFaultFaultType("CorrectionImpact") +) + +func init() { + t["QuarantineModeFaultFaultType"] = reflect.TypeOf((*QuarantineModeFaultFaultType)(nil)).Elem() +} + +type QuiesceMode string + +const ( + QuiesceModeApplication = QuiesceMode("application") + QuiesceModeFilesystem = QuiesceMode("filesystem") + QuiesceModeNone = QuiesceMode("none") +) + +func init() { + t["QuiesceMode"] = reflect.TypeOf((*QuiesceMode)(nil)).Elem() +} + +type RecommendationReasonCode string + +const ( + RecommendationReasonCodeFairnessCpuAvg = RecommendationReasonCode("fairnessCpuAvg") + RecommendationReasonCodeFairnessMemAvg = RecommendationReasonCode("fairnessMemAvg") + RecommendationReasonCodeJointAffin = RecommendationReasonCode("jointAffin") + RecommendationReasonCodeAntiAffin = RecommendationReasonCode("antiAffin") + RecommendationReasonCodeHostMaint = RecommendationReasonCode("hostMaint") + RecommendationReasonCodeEnterStandby = RecommendationReasonCode("enterStandby") + RecommendationReasonCodeReservationCpu = RecommendationReasonCode("reservationCpu") + RecommendationReasonCodeReservationMem = RecommendationReasonCode("reservationMem") + RecommendationReasonCodePowerOnVm = RecommendationReasonCode("powerOnVm") + RecommendationReasonCodePowerSaving = RecommendationReasonCode("powerSaving") + RecommendationReasonCodeIncreaseCapacity = RecommendationReasonCode("increaseCapacity") + RecommendationReasonCodeCheckResource = RecommendationReasonCode("checkResource") + RecommendationReasonCodeUnreservedCapacity = RecommendationReasonCode("unreservedCapacity") + RecommendationReasonCodeVmHostHardAffinity = RecommendationReasonCode("vmHostHardAffinity") + RecommendationReasonCodeVmHostSoftAffinity = RecommendationReasonCode("vmHostSoftAffinity") + RecommendationReasonCodeBalanceDatastoreSpaceUsage = RecommendationReasonCode("balanceDatastoreSpaceUsage") + RecommendationReasonCodeBalanceDatastoreIOLoad = RecommendationReasonCode("balanceDatastoreIOLoad") + RecommendationReasonCodeBalanceDatastoreIOPSReservation = RecommendationReasonCode("balanceDatastoreIOPSReservation") + RecommendationReasonCodeDatastoreMaint = RecommendationReasonCode("datastoreMaint") + RecommendationReasonCodeVirtualDiskJointAffin = RecommendationReasonCode("virtualDiskJointAffin") + RecommendationReasonCodeVirtualDiskAntiAffin = RecommendationReasonCode("virtualDiskAntiAffin") + RecommendationReasonCodeDatastoreSpaceOutage = RecommendationReasonCode("datastoreSpaceOutage") + RecommendationReasonCodeStoragePlacement = RecommendationReasonCode("storagePlacement") + RecommendationReasonCodeIolbDisabledInternal = RecommendationReasonCode("iolbDisabledInternal") + RecommendationReasonCodeXvmotionPlacement = RecommendationReasonCode("xvmotionPlacement") + RecommendationReasonCodeNetworkBandwidthReservation = RecommendationReasonCode("networkBandwidthReservation") + RecommendationReasonCodeHostInDegradation = RecommendationReasonCode("hostInDegradation") + RecommendationReasonCodeHostExitDegradation = RecommendationReasonCode("hostExitDegradation") + RecommendationReasonCodeMaxVmsConstraint = RecommendationReasonCode("maxVmsConstraint") + RecommendationReasonCodeFtConstraints = RecommendationReasonCode("ftConstraints") + RecommendationReasonCodeVmHostAffinityPolicy = RecommendationReasonCode("vmHostAffinityPolicy") + RecommendationReasonCodeVmHostAntiAffinityPolicy = RecommendationReasonCode("vmHostAntiAffinityPolicy") + RecommendationReasonCodeVmAntiAffinityPolicy = RecommendationReasonCode("vmAntiAffinityPolicy") +) + +func init() { + t["RecommendationReasonCode"] = reflect.TypeOf((*RecommendationReasonCode)(nil)).Elem() +} + +type RecommendationType string + +const ( + RecommendationTypeV1 = RecommendationType("V1") +) + +func init() { + t["RecommendationType"] = reflect.TypeOf((*RecommendationType)(nil)).Elem() +} + +type ReplicationDiskConfigFaultReasonForFault string + +const ( + ReplicationDiskConfigFaultReasonForFaultDiskNotFound = ReplicationDiskConfigFaultReasonForFault("diskNotFound") + ReplicationDiskConfigFaultReasonForFaultDiskTypeNotSupported = ReplicationDiskConfigFaultReasonForFault("diskTypeNotSupported") + ReplicationDiskConfigFaultReasonForFaultInvalidDiskKey = ReplicationDiskConfigFaultReasonForFault("invalidDiskKey") + ReplicationDiskConfigFaultReasonForFaultInvalidDiskReplicationId = ReplicationDiskConfigFaultReasonForFault("invalidDiskReplicationId") + ReplicationDiskConfigFaultReasonForFaultDuplicateDiskReplicationId = ReplicationDiskConfigFaultReasonForFault("duplicateDiskReplicationId") + ReplicationDiskConfigFaultReasonForFaultInvalidPersistentFilePath = ReplicationDiskConfigFaultReasonForFault("invalidPersistentFilePath") + ReplicationDiskConfigFaultReasonForFaultReconfigureDiskReplicationIdNotAllowed = ReplicationDiskConfigFaultReasonForFault("reconfigureDiskReplicationIdNotAllowed") +) + +func init() { + t["ReplicationDiskConfigFaultReasonForFault"] = reflect.TypeOf((*ReplicationDiskConfigFaultReasonForFault)(nil)).Elem() +} + +type ReplicationVmConfigFaultReasonForFault string + +const ( + ReplicationVmConfigFaultReasonForFaultIncompatibleHwVersion = ReplicationVmConfigFaultReasonForFault("incompatibleHwVersion") + ReplicationVmConfigFaultReasonForFaultInvalidVmReplicationId = ReplicationVmConfigFaultReasonForFault("invalidVmReplicationId") + ReplicationVmConfigFaultReasonForFaultInvalidGenerationNumber = ReplicationVmConfigFaultReasonForFault("invalidGenerationNumber") + ReplicationVmConfigFaultReasonForFaultOutOfBoundsRpoValue = ReplicationVmConfigFaultReasonForFault("outOfBoundsRpoValue") + ReplicationVmConfigFaultReasonForFaultInvalidDestinationIpAddress = ReplicationVmConfigFaultReasonForFault("invalidDestinationIpAddress") + ReplicationVmConfigFaultReasonForFaultInvalidDestinationPort = ReplicationVmConfigFaultReasonForFault("invalidDestinationPort") + ReplicationVmConfigFaultReasonForFaultInvalidExtraVmOptions = ReplicationVmConfigFaultReasonForFault("invalidExtraVmOptions") + ReplicationVmConfigFaultReasonForFaultStaleGenerationNumber = ReplicationVmConfigFaultReasonForFault("staleGenerationNumber") + ReplicationVmConfigFaultReasonForFaultReconfigureVmReplicationIdNotAllowed = ReplicationVmConfigFaultReasonForFault("reconfigureVmReplicationIdNotAllowed") + ReplicationVmConfigFaultReasonForFaultCannotRetrieveVmReplicationConfiguration = ReplicationVmConfigFaultReasonForFault("cannotRetrieveVmReplicationConfiguration") + ReplicationVmConfigFaultReasonForFaultReplicationAlreadyEnabled = ReplicationVmConfigFaultReasonForFault("replicationAlreadyEnabled") + ReplicationVmConfigFaultReasonForFaultInvalidPriorConfiguration = ReplicationVmConfigFaultReasonForFault("invalidPriorConfiguration") + ReplicationVmConfigFaultReasonForFaultReplicationNotEnabled = ReplicationVmConfigFaultReasonForFault("replicationNotEnabled") + ReplicationVmConfigFaultReasonForFaultReplicationConfigurationFailed = ReplicationVmConfigFaultReasonForFault("replicationConfigurationFailed") + ReplicationVmConfigFaultReasonForFaultEncryptedVm = ReplicationVmConfigFaultReasonForFault("encryptedVm") + ReplicationVmConfigFaultReasonForFaultInvalidThumbprint = ReplicationVmConfigFaultReasonForFault("invalidThumbprint") + ReplicationVmConfigFaultReasonForFaultIncompatibleDevice = ReplicationVmConfigFaultReasonForFault("incompatibleDevice") +) + +func init() { + t["ReplicationVmConfigFaultReasonForFault"] = reflect.TypeOf((*ReplicationVmConfigFaultReasonForFault)(nil)).Elem() +} + +type ReplicationVmFaultReasonForFault string + +const ( + ReplicationVmFaultReasonForFaultNotConfigured = ReplicationVmFaultReasonForFault("notConfigured") + ReplicationVmFaultReasonForFaultPoweredOff = ReplicationVmFaultReasonForFault("poweredOff") + ReplicationVmFaultReasonForFaultSuspended = ReplicationVmFaultReasonForFault("suspended") + ReplicationVmFaultReasonForFaultPoweredOn = ReplicationVmFaultReasonForFault("poweredOn") + ReplicationVmFaultReasonForFaultOfflineReplicating = ReplicationVmFaultReasonForFault("offlineReplicating") + ReplicationVmFaultReasonForFaultInvalidState = ReplicationVmFaultReasonForFault("invalidState") + ReplicationVmFaultReasonForFaultInvalidInstanceId = ReplicationVmFaultReasonForFault("invalidInstanceId") + ReplicationVmFaultReasonForFaultCloseDiskError = ReplicationVmFaultReasonForFault("closeDiskError") + ReplicationVmFaultReasonForFaultGroupExist = ReplicationVmFaultReasonForFault("groupExist") +) + +func init() { + t["ReplicationVmFaultReasonForFault"] = reflect.TypeOf((*ReplicationVmFaultReasonForFault)(nil)).Elem() +} + +type ReplicationVmInProgressFaultActivity string + +const ( + ReplicationVmInProgressFaultActivityFullSync = ReplicationVmInProgressFaultActivity("fullSync") + ReplicationVmInProgressFaultActivityDelta = ReplicationVmInProgressFaultActivity("delta") +) + +func init() { + t["ReplicationVmInProgressFaultActivity"] = reflect.TypeOf((*ReplicationVmInProgressFaultActivity)(nil)).Elem() +} + +type ReplicationVmState string + +const ( + ReplicationVmStateNone = ReplicationVmState("none") + ReplicationVmStatePaused = ReplicationVmState("paused") + ReplicationVmStateSyncing = ReplicationVmState("syncing") + ReplicationVmStateIdle = ReplicationVmState("idle") + ReplicationVmStateActive = ReplicationVmState("active") + ReplicationVmStateError = ReplicationVmState("error") +) + +func init() { + t["ReplicationVmState"] = reflect.TypeOf((*ReplicationVmState)(nil)).Elem() +} + +type ResourceConfigSpecScaleSharesBehavior string + +const ( + ResourceConfigSpecScaleSharesBehaviorDisabled = ResourceConfigSpecScaleSharesBehavior("disabled") + ResourceConfigSpecScaleSharesBehaviorScaleCpuAndMemoryShares = ResourceConfigSpecScaleSharesBehavior("scaleCpuAndMemoryShares") +) + +func init() { + t["ResourceConfigSpecScaleSharesBehavior"] = reflect.TypeOf((*ResourceConfigSpecScaleSharesBehavior)(nil)).Elem() +} + +type ScheduledHardwareUpgradeInfoHardwareUpgradePolicy string + +const ( + ScheduledHardwareUpgradeInfoHardwareUpgradePolicyNever = ScheduledHardwareUpgradeInfoHardwareUpgradePolicy("never") + ScheduledHardwareUpgradeInfoHardwareUpgradePolicyOnSoftPowerOff = ScheduledHardwareUpgradeInfoHardwareUpgradePolicy("onSoftPowerOff") + ScheduledHardwareUpgradeInfoHardwareUpgradePolicyAlways = ScheduledHardwareUpgradeInfoHardwareUpgradePolicy("always") +) + +func init() { + t["ScheduledHardwareUpgradeInfoHardwareUpgradePolicy"] = reflect.TypeOf((*ScheduledHardwareUpgradeInfoHardwareUpgradePolicy)(nil)).Elem() +} + +type ScheduledHardwareUpgradeInfoHardwareUpgradeStatus string + +const ( + ScheduledHardwareUpgradeInfoHardwareUpgradeStatusNone = ScheduledHardwareUpgradeInfoHardwareUpgradeStatus("none") + ScheduledHardwareUpgradeInfoHardwareUpgradeStatusPending = ScheduledHardwareUpgradeInfoHardwareUpgradeStatus("pending") + ScheduledHardwareUpgradeInfoHardwareUpgradeStatusSuccess = ScheduledHardwareUpgradeInfoHardwareUpgradeStatus("success") + ScheduledHardwareUpgradeInfoHardwareUpgradeStatusFailed = ScheduledHardwareUpgradeInfoHardwareUpgradeStatus("failed") +) + +func init() { + t["ScheduledHardwareUpgradeInfoHardwareUpgradeStatus"] = reflect.TypeOf((*ScheduledHardwareUpgradeInfoHardwareUpgradeStatus)(nil)).Elem() +} + +type ScsiDiskType string + +const ( + ScsiDiskTypeNative512 = ScsiDiskType("native512") + ScsiDiskTypeEmulated512 = ScsiDiskType("emulated512") + ScsiDiskTypeNative4k = ScsiDiskType("native4k") + ScsiDiskTypeSoftwareEmulated4k = ScsiDiskType("SoftwareEmulated4k") + ScsiDiskTypeUnknown = ScsiDiskType("unknown") +) + +func init() { + t["ScsiDiskType"] = reflect.TypeOf((*ScsiDiskType)(nil)).Elem() +} + +type ScsiLunDescriptorQuality string + +const ( + ScsiLunDescriptorQualityHighQuality = ScsiLunDescriptorQuality("highQuality") + ScsiLunDescriptorQualityMediumQuality = ScsiLunDescriptorQuality("mediumQuality") + ScsiLunDescriptorQualityLowQuality = ScsiLunDescriptorQuality("lowQuality") + ScsiLunDescriptorQualityUnknownQuality = ScsiLunDescriptorQuality("unknownQuality") +) + +func init() { + t["ScsiLunDescriptorQuality"] = reflect.TypeOf((*ScsiLunDescriptorQuality)(nil)).Elem() +} + +type ScsiLunState string + +const ( + ScsiLunStateUnknownState = ScsiLunState("unknownState") + ScsiLunStateOk = ScsiLunState("ok") + ScsiLunStateError = ScsiLunState("error") + ScsiLunStateOff = ScsiLunState("off") + ScsiLunStateQuiesced = ScsiLunState("quiesced") + ScsiLunStateDegraded = ScsiLunState("degraded") + ScsiLunStateLostCommunication = ScsiLunState("lostCommunication") + ScsiLunStateTimeout = ScsiLunState("timeout") +) + +func init() { + t["ScsiLunState"] = reflect.TypeOf((*ScsiLunState)(nil)).Elem() +} + +type ScsiLunType string + +const ( + ScsiLunTypeDisk = ScsiLunType("disk") + ScsiLunTypeTape = ScsiLunType("tape") + ScsiLunTypePrinter = ScsiLunType("printer") + ScsiLunTypeProcessor = ScsiLunType("processor") + ScsiLunTypeWorm = ScsiLunType("worm") + ScsiLunTypeCdrom = ScsiLunType("cdrom") + ScsiLunTypeScanner = ScsiLunType("scanner") + ScsiLunTypeOpticalDevice = ScsiLunType("opticalDevice") + ScsiLunTypeMediaChanger = ScsiLunType("mediaChanger") + ScsiLunTypeCommunications = ScsiLunType("communications") + ScsiLunTypeStorageArrayController = ScsiLunType("storageArrayController") + ScsiLunTypeEnclosure = ScsiLunType("enclosure") + ScsiLunTypeUnknown = ScsiLunType("unknown") +) + +func init() { + t["ScsiLunType"] = reflect.TypeOf((*ScsiLunType)(nil)).Elem() +} + +type ScsiLunVStorageSupportStatus string + +const ( + ScsiLunVStorageSupportStatusVStorageSupported = ScsiLunVStorageSupportStatus("vStorageSupported") + ScsiLunVStorageSupportStatusVStorageUnsupported = ScsiLunVStorageSupportStatus("vStorageUnsupported") + ScsiLunVStorageSupportStatusVStorageUnknown = ScsiLunVStorageSupportStatus("vStorageUnknown") +) + +func init() { + t["ScsiLunVStorageSupportStatus"] = reflect.TypeOf((*ScsiLunVStorageSupportStatus)(nil)).Elem() +} + +type SessionManagerHttpServiceRequestSpecMethod string + +const ( + SessionManagerHttpServiceRequestSpecMethodHttpOptions = SessionManagerHttpServiceRequestSpecMethod("httpOptions") + SessionManagerHttpServiceRequestSpecMethodHttpGet = SessionManagerHttpServiceRequestSpecMethod("httpGet") + SessionManagerHttpServiceRequestSpecMethodHttpHead = SessionManagerHttpServiceRequestSpecMethod("httpHead") + SessionManagerHttpServiceRequestSpecMethodHttpPost = SessionManagerHttpServiceRequestSpecMethod("httpPost") + SessionManagerHttpServiceRequestSpecMethodHttpPut = SessionManagerHttpServiceRequestSpecMethod("httpPut") + SessionManagerHttpServiceRequestSpecMethodHttpDelete = SessionManagerHttpServiceRequestSpecMethod("httpDelete") + SessionManagerHttpServiceRequestSpecMethodHttpTrace = SessionManagerHttpServiceRequestSpecMethod("httpTrace") + SessionManagerHttpServiceRequestSpecMethodHttpConnect = SessionManagerHttpServiceRequestSpecMethod("httpConnect") +) + +func init() { + t["SessionManagerHttpServiceRequestSpecMethod"] = reflect.TypeOf((*SessionManagerHttpServiceRequestSpecMethod)(nil)).Elem() +} + +type SharesLevel string + +const ( + SharesLevelLow = SharesLevel("low") + SharesLevelNormal = SharesLevel("normal") + SharesLevelHigh = SharesLevel("high") + SharesLevelCustom = SharesLevel("custom") +) + +func init() { + t["SharesLevel"] = reflect.TypeOf((*SharesLevel)(nil)).Elem() +} + +type SimpleCommandEncoding string + +const ( + SimpleCommandEncodingCSV = SimpleCommandEncoding("CSV") + SimpleCommandEncodingHEX = SimpleCommandEncoding("HEX") + SimpleCommandEncodingSTRING = SimpleCommandEncoding("STRING") +) + +func init() { + t["SimpleCommandEncoding"] = reflect.TypeOf((*SimpleCommandEncoding)(nil)).Elem() +} + +type SlpDiscoveryMethod string + +const ( + SlpDiscoveryMethodSlpDhcp = SlpDiscoveryMethod("slpDhcp") + SlpDiscoveryMethodSlpAutoUnicast = SlpDiscoveryMethod("slpAutoUnicast") + SlpDiscoveryMethodSlpAutoMulticast = SlpDiscoveryMethod("slpAutoMulticast") + SlpDiscoveryMethodSlpManual = SlpDiscoveryMethod("slpManual") +) + +func init() { + t["SlpDiscoveryMethod"] = reflect.TypeOf((*SlpDiscoveryMethod)(nil)).Elem() +} + +type SoftwarePackageConstraint string + +const ( + SoftwarePackageConstraintEquals = SoftwarePackageConstraint("equals") + SoftwarePackageConstraintLessThan = SoftwarePackageConstraint("lessThan") + SoftwarePackageConstraintLessThanEqual = SoftwarePackageConstraint("lessThanEqual") + SoftwarePackageConstraintGreaterThanEqual = SoftwarePackageConstraint("greaterThanEqual") + SoftwarePackageConstraintGreaterThan = SoftwarePackageConstraint("greaterThan") +) + +func init() { + t["SoftwarePackageConstraint"] = reflect.TypeOf((*SoftwarePackageConstraint)(nil)).Elem() +} + +type SoftwarePackageVibType string + +const ( + SoftwarePackageVibTypeBootbank = SoftwarePackageVibType("bootbank") + SoftwarePackageVibTypeTools = SoftwarePackageVibType("tools") + SoftwarePackageVibTypeMeta = SoftwarePackageVibType("meta") +) + +func init() { + t["SoftwarePackageVibType"] = reflect.TypeOf((*SoftwarePackageVibType)(nil)).Elem() +} + +type StateAlarmOperator string + +const ( + StateAlarmOperatorIsEqual = StateAlarmOperator("isEqual") + StateAlarmOperatorIsUnequal = StateAlarmOperator("isUnequal") +) + +func init() { + t["StateAlarmOperator"] = reflect.TypeOf((*StateAlarmOperator)(nil)).Elem() +} + +type StorageDrsPodConfigInfoBehavior string + +const ( + StorageDrsPodConfigInfoBehaviorManual = StorageDrsPodConfigInfoBehavior("manual") + StorageDrsPodConfigInfoBehaviorAutomated = StorageDrsPodConfigInfoBehavior("automated") +) + +func init() { + t["StorageDrsPodConfigInfoBehavior"] = reflect.TypeOf((*StorageDrsPodConfigInfoBehavior)(nil)).Elem() +} + +type StorageDrsSpaceLoadBalanceConfigSpaceThresholdMode string + +const ( + StorageDrsSpaceLoadBalanceConfigSpaceThresholdModeUtilization = StorageDrsSpaceLoadBalanceConfigSpaceThresholdMode("utilization") + StorageDrsSpaceLoadBalanceConfigSpaceThresholdModeFreeSpace = StorageDrsSpaceLoadBalanceConfigSpaceThresholdMode("freeSpace") +) + +func init() { + t["StorageDrsSpaceLoadBalanceConfigSpaceThresholdMode"] = reflect.TypeOf((*StorageDrsSpaceLoadBalanceConfigSpaceThresholdMode)(nil)).Elem() +} + +type StorageIORMThresholdMode string + +const ( + StorageIORMThresholdModeAutomatic = StorageIORMThresholdMode("automatic") + StorageIORMThresholdModeManual = StorageIORMThresholdMode("manual") +) + +func init() { + t["StorageIORMThresholdMode"] = reflect.TypeOf((*StorageIORMThresholdMode)(nil)).Elem() +} + +type StoragePlacementSpecPlacementType string + +const ( + StoragePlacementSpecPlacementTypeCreate = StoragePlacementSpecPlacementType("create") + StoragePlacementSpecPlacementTypeReconfigure = StoragePlacementSpecPlacementType("reconfigure") + StoragePlacementSpecPlacementTypeRelocate = StoragePlacementSpecPlacementType("relocate") + StoragePlacementSpecPlacementTypeClone = StoragePlacementSpecPlacementType("clone") +) + +func init() { + t["StoragePlacementSpecPlacementType"] = reflect.TypeOf((*StoragePlacementSpecPlacementType)(nil)).Elem() +} + +type TaskFilterSpecRecursionOption string + +const ( + TaskFilterSpecRecursionOptionSelf = TaskFilterSpecRecursionOption("self") + TaskFilterSpecRecursionOptionChildren = TaskFilterSpecRecursionOption("children") + TaskFilterSpecRecursionOptionAll = TaskFilterSpecRecursionOption("all") +) + +func init() { + t["TaskFilterSpecRecursionOption"] = reflect.TypeOf((*TaskFilterSpecRecursionOption)(nil)).Elem() +} + +type TaskFilterSpecTimeOption string + +const ( + TaskFilterSpecTimeOptionQueuedTime = TaskFilterSpecTimeOption("queuedTime") + TaskFilterSpecTimeOptionStartedTime = TaskFilterSpecTimeOption("startedTime") + TaskFilterSpecTimeOptionCompletedTime = TaskFilterSpecTimeOption("completedTime") +) + +func init() { + t["TaskFilterSpecTimeOption"] = reflect.TypeOf((*TaskFilterSpecTimeOption)(nil)).Elem() +} + +type TaskInfoState string + +const ( + TaskInfoStateQueued = TaskInfoState("queued") + TaskInfoStateRunning = TaskInfoState("running") + TaskInfoStateSuccess = TaskInfoState("success") + TaskInfoStateError = TaskInfoState("error") +) + +func init() { + t["TaskInfoState"] = reflect.TypeOf((*TaskInfoState)(nil)).Elem() +} + +type ThirdPartyLicenseAssignmentFailedReason string + +const ( + ThirdPartyLicenseAssignmentFailedReasonLicenseAssignmentFailed = ThirdPartyLicenseAssignmentFailedReason("licenseAssignmentFailed") + ThirdPartyLicenseAssignmentFailedReasonModuleNotInstalled = ThirdPartyLicenseAssignmentFailedReason("moduleNotInstalled") +) + +func init() { + t["ThirdPartyLicenseAssignmentFailedReason"] = reflect.TypeOf((*ThirdPartyLicenseAssignmentFailedReason)(nil)).Elem() +} + +type UpgradePolicy string + +const ( + UpgradePolicyManual = UpgradePolicy("manual") + UpgradePolicyUpgradeAtPowerCycle = UpgradePolicy("upgradeAtPowerCycle") +) + +func init() { + t["UpgradePolicy"] = reflect.TypeOf((*UpgradePolicy)(nil)).Elem() +} + +type VAppAutoStartAction string + +const ( + VAppAutoStartActionNone = VAppAutoStartAction("none") + VAppAutoStartActionPowerOn = VAppAutoStartAction("powerOn") + VAppAutoStartActionPowerOff = VAppAutoStartAction("powerOff") + VAppAutoStartActionGuestShutdown = VAppAutoStartAction("guestShutdown") + VAppAutoStartActionSuspend = VAppAutoStartAction("suspend") +) + +func init() { + t["VAppAutoStartAction"] = reflect.TypeOf((*VAppAutoStartAction)(nil)).Elem() +} + +type VAppCloneSpecProvisioningType string + +const ( + VAppCloneSpecProvisioningTypeSameAsSource = VAppCloneSpecProvisioningType("sameAsSource") + VAppCloneSpecProvisioningTypeThin = VAppCloneSpecProvisioningType("thin") + VAppCloneSpecProvisioningTypeThick = VAppCloneSpecProvisioningType("thick") +) + +func init() { + t["VAppCloneSpecProvisioningType"] = reflect.TypeOf((*VAppCloneSpecProvisioningType)(nil)).Elem() +} + +type VAppIPAssignmentInfoAllocationSchemes string + +const ( + VAppIPAssignmentInfoAllocationSchemesDhcp = VAppIPAssignmentInfoAllocationSchemes("dhcp") + VAppIPAssignmentInfoAllocationSchemesOvfenv = VAppIPAssignmentInfoAllocationSchemes("ovfenv") +) + +func init() { + t["VAppIPAssignmentInfoAllocationSchemes"] = reflect.TypeOf((*VAppIPAssignmentInfoAllocationSchemes)(nil)).Elem() +} + +type VAppIPAssignmentInfoIpAllocationPolicy string + +const ( + VAppIPAssignmentInfoIpAllocationPolicyDhcpPolicy = VAppIPAssignmentInfoIpAllocationPolicy("dhcpPolicy") + VAppIPAssignmentInfoIpAllocationPolicyTransientPolicy = VAppIPAssignmentInfoIpAllocationPolicy("transientPolicy") + VAppIPAssignmentInfoIpAllocationPolicyFixedPolicy = VAppIPAssignmentInfoIpAllocationPolicy("fixedPolicy") + VAppIPAssignmentInfoIpAllocationPolicyFixedAllocatedPolicy = VAppIPAssignmentInfoIpAllocationPolicy("fixedAllocatedPolicy") +) + +func init() { + t["VAppIPAssignmentInfoIpAllocationPolicy"] = reflect.TypeOf((*VAppIPAssignmentInfoIpAllocationPolicy)(nil)).Elem() +} + +type VAppIPAssignmentInfoProtocols string + +const ( + VAppIPAssignmentInfoProtocolsIPv4 = VAppIPAssignmentInfoProtocols("IPv4") + VAppIPAssignmentInfoProtocolsIPv6 = VAppIPAssignmentInfoProtocols("IPv6") +) + +func init() { + t["VAppIPAssignmentInfoProtocols"] = reflect.TypeOf((*VAppIPAssignmentInfoProtocols)(nil)).Elem() +} + +type VFlashModuleNotSupportedReason string + +const ( + VFlashModuleNotSupportedReasonCacheModeNotSupported = VFlashModuleNotSupportedReason("CacheModeNotSupported") + VFlashModuleNotSupportedReasonCacheConsistencyTypeNotSupported = VFlashModuleNotSupportedReason("CacheConsistencyTypeNotSupported") + VFlashModuleNotSupportedReasonCacheBlockSizeNotSupported = VFlashModuleNotSupportedReason("CacheBlockSizeNotSupported") + VFlashModuleNotSupportedReasonCacheReservationNotSupported = VFlashModuleNotSupportedReason("CacheReservationNotSupported") + VFlashModuleNotSupportedReasonDiskSizeNotSupported = VFlashModuleNotSupportedReason("DiskSizeNotSupported") +) + +func init() { + t["VFlashModuleNotSupportedReason"] = reflect.TypeOf((*VFlashModuleNotSupportedReason)(nil)).Elem() +} + +type VMotionCompatibilityType string + +const ( + VMotionCompatibilityTypeCpu = VMotionCompatibilityType("cpu") + VMotionCompatibilityTypeSoftware = VMotionCompatibilityType("software") +) + +func init() { + t["VMotionCompatibilityType"] = reflect.TypeOf((*VMotionCompatibilityType)(nil)).Elem() +} + +type VMwareDVSTeamingMatchStatus string + +const ( + VMwareDVSTeamingMatchStatusIphashMatch = VMwareDVSTeamingMatchStatus("iphashMatch") + VMwareDVSTeamingMatchStatusNonIphashMatch = VMwareDVSTeamingMatchStatus("nonIphashMatch") + VMwareDVSTeamingMatchStatusIphashMismatch = VMwareDVSTeamingMatchStatus("iphashMismatch") + VMwareDVSTeamingMatchStatusNonIphashMismatch = VMwareDVSTeamingMatchStatus("nonIphashMismatch") +) + +func init() { + t["VMwareDVSTeamingMatchStatus"] = reflect.TypeOf((*VMwareDVSTeamingMatchStatus)(nil)).Elem() +} + +type VMwareDVSVspanSessionEncapType string + +const ( + VMwareDVSVspanSessionEncapTypeGre = VMwareDVSVspanSessionEncapType("gre") + VMwareDVSVspanSessionEncapTypeErspan2 = VMwareDVSVspanSessionEncapType("erspan2") + VMwareDVSVspanSessionEncapTypeErspan3 = VMwareDVSVspanSessionEncapType("erspan3") +) + +func init() { + t["VMwareDVSVspanSessionEncapType"] = reflect.TypeOf((*VMwareDVSVspanSessionEncapType)(nil)).Elem() +} + +type VMwareDVSVspanSessionType string + +const ( + VMwareDVSVspanSessionTypeMixedDestMirror = VMwareDVSVspanSessionType("mixedDestMirror") + VMwareDVSVspanSessionTypeDvPortMirror = VMwareDVSVspanSessionType("dvPortMirror") + VMwareDVSVspanSessionTypeRemoteMirrorSource = VMwareDVSVspanSessionType("remoteMirrorSource") + VMwareDVSVspanSessionTypeRemoteMirrorDest = VMwareDVSVspanSessionType("remoteMirrorDest") + VMwareDVSVspanSessionTypeEncapsulatedRemoteMirrorSource = VMwareDVSVspanSessionType("encapsulatedRemoteMirrorSource") +) + +func init() { + t["VMwareDVSVspanSessionType"] = reflect.TypeOf((*VMwareDVSVspanSessionType)(nil)).Elem() +} + +type VMwareDvsLacpApiVersion string + +const ( + VMwareDvsLacpApiVersionSingleLag = VMwareDvsLacpApiVersion("singleLag") + VMwareDvsLacpApiVersionMultipleLag = VMwareDvsLacpApiVersion("multipleLag") +) + +func init() { + t["VMwareDvsLacpApiVersion"] = reflect.TypeOf((*VMwareDvsLacpApiVersion)(nil)).Elem() +} + +type VMwareDvsLacpLoadBalanceAlgorithm string + +const ( + VMwareDvsLacpLoadBalanceAlgorithmSrcMac = VMwareDvsLacpLoadBalanceAlgorithm("srcMac") + VMwareDvsLacpLoadBalanceAlgorithmDestMac = VMwareDvsLacpLoadBalanceAlgorithm("destMac") + VMwareDvsLacpLoadBalanceAlgorithmSrcDestMac = VMwareDvsLacpLoadBalanceAlgorithm("srcDestMac") + VMwareDvsLacpLoadBalanceAlgorithmDestIpVlan = VMwareDvsLacpLoadBalanceAlgorithm("destIpVlan") + VMwareDvsLacpLoadBalanceAlgorithmSrcIpVlan = VMwareDvsLacpLoadBalanceAlgorithm("srcIpVlan") + VMwareDvsLacpLoadBalanceAlgorithmSrcDestIpVlan = VMwareDvsLacpLoadBalanceAlgorithm("srcDestIpVlan") + VMwareDvsLacpLoadBalanceAlgorithmDestTcpUdpPort = VMwareDvsLacpLoadBalanceAlgorithm("destTcpUdpPort") + VMwareDvsLacpLoadBalanceAlgorithmSrcTcpUdpPort = VMwareDvsLacpLoadBalanceAlgorithm("srcTcpUdpPort") + VMwareDvsLacpLoadBalanceAlgorithmSrcDestTcpUdpPort = VMwareDvsLacpLoadBalanceAlgorithm("srcDestTcpUdpPort") + VMwareDvsLacpLoadBalanceAlgorithmDestIpTcpUdpPort = VMwareDvsLacpLoadBalanceAlgorithm("destIpTcpUdpPort") + VMwareDvsLacpLoadBalanceAlgorithmSrcIpTcpUdpPort = VMwareDvsLacpLoadBalanceAlgorithm("srcIpTcpUdpPort") + VMwareDvsLacpLoadBalanceAlgorithmSrcDestIpTcpUdpPort = VMwareDvsLacpLoadBalanceAlgorithm("srcDestIpTcpUdpPort") + VMwareDvsLacpLoadBalanceAlgorithmDestIpTcpUdpPortVlan = VMwareDvsLacpLoadBalanceAlgorithm("destIpTcpUdpPortVlan") + VMwareDvsLacpLoadBalanceAlgorithmSrcIpTcpUdpPortVlan = VMwareDvsLacpLoadBalanceAlgorithm("srcIpTcpUdpPortVlan") + VMwareDvsLacpLoadBalanceAlgorithmSrcDestIpTcpUdpPortVlan = VMwareDvsLacpLoadBalanceAlgorithm("srcDestIpTcpUdpPortVlan") + VMwareDvsLacpLoadBalanceAlgorithmDestIp = VMwareDvsLacpLoadBalanceAlgorithm("destIp") + VMwareDvsLacpLoadBalanceAlgorithmSrcIp = VMwareDvsLacpLoadBalanceAlgorithm("srcIp") + VMwareDvsLacpLoadBalanceAlgorithmSrcDestIp = VMwareDvsLacpLoadBalanceAlgorithm("srcDestIp") + VMwareDvsLacpLoadBalanceAlgorithmVlan = VMwareDvsLacpLoadBalanceAlgorithm("vlan") + VMwareDvsLacpLoadBalanceAlgorithmSrcPortId = VMwareDvsLacpLoadBalanceAlgorithm("srcPortId") +) + +func init() { + t["VMwareDvsLacpLoadBalanceAlgorithm"] = reflect.TypeOf((*VMwareDvsLacpLoadBalanceAlgorithm)(nil)).Elem() +} + +type VMwareDvsMulticastFilteringMode string + +const ( + VMwareDvsMulticastFilteringModeLegacyFiltering = VMwareDvsMulticastFilteringMode("legacyFiltering") + VMwareDvsMulticastFilteringModeSnooping = VMwareDvsMulticastFilteringMode("snooping") +) + +func init() { + t["VMwareDvsMulticastFilteringMode"] = reflect.TypeOf((*VMwareDvsMulticastFilteringMode)(nil)).Elem() +} + +type VMwareUplinkLacpMode string + +const ( + VMwareUplinkLacpModeActive = VMwareUplinkLacpMode("active") + VMwareUplinkLacpModePassive = VMwareUplinkLacpMode("passive") +) + +func init() { + t["VMwareUplinkLacpMode"] = reflect.TypeOf((*VMwareUplinkLacpMode)(nil)).Elem() +} + +type VStorageObjectConsumptionType string + +const ( + VStorageObjectConsumptionTypeDisk = VStorageObjectConsumptionType("disk") +) + +func init() { + t["VStorageObjectConsumptionType"] = reflect.TypeOf((*VStorageObjectConsumptionType)(nil)).Elem() +} + +type ValidateMigrationTestType string + +const ( + ValidateMigrationTestTypeSourceTests = ValidateMigrationTestType("sourceTests") + ValidateMigrationTestTypeCompatibilityTests = ValidateMigrationTestType("compatibilityTests") + ValidateMigrationTestTypeDiskAccessibilityTests = ValidateMigrationTestType("diskAccessibilityTests") + ValidateMigrationTestTypeResourceTests = ValidateMigrationTestType("resourceTests") +) + +func init() { + t["ValidateMigrationTestType"] = reflect.TypeOf((*ValidateMigrationTestType)(nil)).Elem() +} + +type VchaClusterMode string + +const ( + VchaClusterModeEnabled = VchaClusterMode("enabled") + VchaClusterModeDisabled = VchaClusterMode("disabled") + VchaClusterModeMaintenance = VchaClusterMode("maintenance") +) + +func init() { + t["VchaClusterMode"] = reflect.TypeOf((*VchaClusterMode)(nil)).Elem() +} + +type VchaClusterState string + +const ( + VchaClusterStateHealthy = VchaClusterState("healthy") + VchaClusterStateDegraded = VchaClusterState("degraded") + VchaClusterStateIsolated = VchaClusterState("isolated") +) + +func init() { + t["VchaClusterState"] = reflect.TypeOf((*VchaClusterState)(nil)).Elem() +} + +type VchaNodeRole string + +const ( + VchaNodeRoleActive = VchaNodeRole("active") + VchaNodeRolePassive = VchaNodeRole("passive") + VchaNodeRoleWitness = VchaNodeRole("witness") +) + +func init() { + t["VchaNodeRole"] = reflect.TypeOf((*VchaNodeRole)(nil)).Elem() +} + +type VchaNodeState string + +const ( + VchaNodeStateUp = VchaNodeState("up") + VchaNodeStateDown = VchaNodeState("down") +) + +func init() { + t["VchaNodeState"] = reflect.TypeOf((*VchaNodeState)(nil)).Elem() +} + +type VchaState string + +const ( + VchaStateConfigured = VchaState("configured") + VchaStateNotConfigured = VchaState("notConfigured") + VchaStateInvalid = VchaState("invalid") + VchaStatePrepared = VchaState("prepared") +) + +func init() { + t["VchaState"] = reflect.TypeOf((*VchaState)(nil)).Elem() +} + +type VirtualAppVAppState string + +const ( + VirtualAppVAppStateStarted = VirtualAppVAppState("started") + VirtualAppVAppStateStopped = VirtualAppVAppState("stopped") + VirtualAppVAppStateStarting = VirtualAppVAppState("starting") + VirtualAppVAppStateStopping = VirtualAppVAppState("stopping") +) + +func init() { + t["VirtualAppVAppState"] = reflect.TypeOf((*VirtualAppVAppState)(nil)).Elem() +} + +type VirtualDeviceConfigSpecFileOperation string + +const ( + VirtualDeviceConfigSpecFileOperationCreate = VirtualDeviceConfigSpecFileOperation("create") + VirtualDeviceConfigSpecFileOperationDestroy = VirtualDeviceConfigSpecFileOperation("destroy") + VirtualDeviceConfigSpecFileOperationReplace = VirtualDeviceConfigSpecFileOperation("replace") +) + +func init() { + t["VirtualDeviceConfigSpecFileOperation"] = reflect.TypeOf((*VirtualDeviceConfigSpecFileOperation)(nil)).Elem() +} + +type VirtualDeviceConfigSpecOperation string + +const ( + VirtualDeviceConfigSpecOperationAdd = VirtualDeviceConfigSpecOperation("add") + VirtualDeviceConfigSpecOperationRemove = VirtualDeviceConfigSpecOperation("remove") + VirtualDeviceConfigSpecOperationEdit = VirtualDeviceConfigSpecOperation("edit") +) + +func init() { + t["VirtualDeviceConfigSpecOperation"] = reflect.TypeOf((*VirtualDeviceConfigSpecOperation)(nil)).Elem() +} + +type VirtualDeviceConnectInfoMigrateConnectOp string + +const ( + VirtualDeviceConnectInfoMigrateConnectOpConnect = VirtualDeviceConnectInfoMigrateConnectOp("connect") + VirtualDeviceConnectInfoMigrateConnectOpDisconnect = VirtualDeviceConnectInfoMigrateConnectOp("disconnect") + VirtualDeviceConnectInfoMigrateConnectOpUnset = VirtualDeviceConnectInfoMigrateConnectOp("unset") +) + +func init() { + t["VirtualDeviceConnectInfoMigrateConnectOp"] = reflect.TypeOf((*VirtualDeviceConnectInfoMigrateConnectOp)(nil)).Elem() +} + +type VirtualDeviceConnectInfoStatus string + +const ( + VirtualDeviceConnectInfoStatusOk = VirtualDeviceConnectInfoStatus("ok") + VirtualDeviceConnectInfoStatusRecoverableError = VirtualDeviceConnectInfoStatus("recoverableError") + VirtualDeviceConnectInfoStatusUnrecoverableError = VirtualDeviceConnectInfoStatus("unrecoverableError") + VirtualDeviceConnectInfoStatusUntried = VirtualDeviceConnectInfoStatus("untried") +) + +func init() { + t["VirtualDeviceConnectInfoStatus"] = reflect.TypeOf((*VirtualDeviceConnectInfoStatus)(nil)).Elem() +} + +type VirtualDeviceFileExtension string + +const ( + VirtualDeviceFileExtensionIso = VirtualDeviceFileExtension("iso") + VirtualDeviceFileExtensionFlp = VirtualDeviceFileExtension("flp") + VirtualDeviceFileExtensionVmdk = VirtualDeviceFileExtension("vmdk") + VirtualDeviceFileExtensionDsk = VirtualDeviceFileExtension("dsk") + VirtualDeviceFileExtensionRdm = VirtualDeviceFileExtension("rdm") +) + +func init() { + t["VirtualDeviceFileExtension"] = reflect.TypeOf((*VirtualDeviceFileExtension)(nil)).Elem() +} + +type VirtualDeviceURIBackingOptionDirection string + +const ( + VirtualDeviceURIBackingOptionDirectionServer = VirtualDeviceURIBackingOptionDirection("server") + VirtualDeviceURIBackingOptionDirectionClient = VirtualDeviceURIBackingOptionDirection("client") +) + +func init() { + t["VirtualDeviceURIBackingOptionDirection"] = reflect.TypeOf((*VirtualDeviceURIBackingOptionDirection)(nil)).Elem() +} + +type VirtualDiskAdapterType string + +const ( + VirtualDiskAdapterTypeIde = VirtualDiskAdapterType("ide") + VirtualDiskAdapterTypeBusLogic = VirtualDiskAdapterType("busLogic") + VirtualDiskAdapterTypeLsiLogic = VirtualDiskAdapterType("lsiLogic") +) + +func init() { + t["VirtualDiskAdapterType"] = reflect.TypeOf((*VirtualDiskAdapterType)(nil)).Elem() +} + +type VirtualDiskCompatibilityMode string + +const ( + VirtualDiskCompatibilityModeVirtualMode = VirtualDiskCompatibilityMode("virtualMode") + VirtualDiskCompatibilityModePhysicalMode = VirtualDiskCompatibilityMode("physicalMode") +) + +func init() { + t["VirtualDiskCompatibilityMode"] = reflect.TypeOf((*VirtualDiskCompatibilityMode)(nil)).Elem() +} + +type VirtualDiskDeltaDiskFormat string + +const ( + VirtualDiskDeltaDiskFormatRedoLogFormat = VirtualDiskDeltaDiskFormat("redoLogFormat") + VirtualDiskDeltaDiskFormatNativeFormat = VirtualDiskDeltaDiskFormat("nativeFormat") + VirtualDiskDeltaDiskFormatSeSparseFormat = VirtualDiskDeltaDiskFormat("seSparseFormat") +) + +func init() { + t["VirtualDiskDeltaDiskFormat"] = reflect.TypeOf((*VirtualDiskDeltaDiskFormat)(nil)).Elem() +} + +type VirtualDiskDeltaDiskFormatVariant string + +const ( + VirtualDiskDeltaDiskFormatVariantVmfsSparseVariant = VirtualDiskDeltaDiskFormatVariant("vmfsSparseVariant") + VirtualDiskDeltaDiskFormatVariantVsanSparseVariant = VirtualDiskDeltaDiskFormatVariant("vsanSparseVariant") +) + +func init() { + t["VirtualDiskDeltaDiskFormatVariant"] = reflect.TypeOf((*VirtualDiskDeltaDiskFormatVariant)(nil)).Elem() +} + +type VirtualDiskMode string + +const ( + VirtualDiskModePersistent = VirtualDiskMode("persistent") + VirtualDiskModeNonpersistent = VirtualDiskMode("nonpersistent") + VirtualDiskModeUndoable = VirtualDiskMode("undoable") + VirtualDiskModeIndependent_persistent = VirtualDiskMode("independent_persistent") + VirtualDiskModeIndependent_nonpersistent = VirtualDiskMode("independent_nonpersistent") + VirtualDiskModeAppend = VirtualDiskMode("append") +) + +func init() { + t["VirtualDiskMode"] = reflect.TypeOf((*VirtualDiskMode)(nil)).Elem() +} + +type VirtualDiskRuleSpecRuleType string + +const ( + VirtualDiskRuleSpecRuleTypeAffinity = VirtualDiskRuleSpecRuleType("affinity") + VirtualDiskRuleSpecRuleTypeAntiAffinity = VirtualDiskRuleSpecRuleType("antiAffinity") + VirtualDiskRuleSpecRuleTypeDisabled = VirtualDiskRuleSpecRuleType("disabled") +) + +func init() { + t["VirtualDiskRuleSpecRuleType"] = reflect.TypeOf((*VirtualDiskRuleSpecRuleType)(nil)).Elem() +} + +type VirtualDiskSharing string + +const ( + VirtualDiskSharingSharingNone = VirtualDiskSharing("sharingNone") + VirtualDiskSharingSharingMultiWriter = VirtualDiskSharing("sharingMultiWriter") +) + +func init() { + t["VirtualDiskSharing"] = reflect.TypeOf((*VirtualDiskSharing)(nil)).Elem() +} + +type VirtualDiskType string + +const ( + VirtualDiskTypePreallocated = VirtualDiskType("preallocated") + VirtualDiskTypeThin = VirtualDiskType("thin") + VirtualDiskTypeSeSparse = VirtualDiskType("seSparse") + VirtualDiskTypeRdm = VirtualDiskType("rdm") + VirtualDiskTypeRdmp = VirtualDiskType("rdmp") + VirtualDiskTypeRaw = VirtualDiskType("raw") + VirtualDiskTypeDelta = VirtualDiskType("delta") + VirtualDiskTypeSparse2Gb = VirtualDiskType("sparse2Gb") + VirtualDiskTypeThick2Gb = VirtualDiskType("thick2Gb") + VirtualDiskTypeEagerZeroedThick = VirtualDiskType("eagerZeroedThick") + VirtualDiskTypeSparseMonolithic = VirtualDiskType("sparseMonolithic") + VirtualDiskTypeFlatMonolithic = VirtualDiskType("flatMonolithic") + VirtualDiskTypeThick = VirtualDiskType("thick") +) + +func init() { + t["VirtualDiskType"] = reflect.TypeOf((*VirtualDiskType)(nil)).Elem() +} + +type VirtualDiskVFlashCacheConfigInfoCacheConsistencyType string + +const ( + VirtualDiskVFlashCacheConfigInfoCacheConsistencyTypeStrong = VirtualDiskVFlashCacheConfigInfoCacheConsistencyType("strong") + VirtualDiskVFlashCacheConfigInfoCacheConsistencyTypeWeak = VirtualDiskVFlashCacheConfigInfoCacheConsistencyType("weak") +) + +func init() { + t["VirtualDiskVFlashCacheConfigInfoCacheConsistencyType"] = reflect.TypeOf((*VirtualDiskVFlashCacheConfigInfoCacheConsistencyType)(nil)).Elem() +} + +type VirtualDiskVFlashCacheConfigInfoCacheMode string + +const ( + VirtualDiskVFlashCacheConfigInfoCacheModeWrite_thru = VirtualDiskVFlashCacheConfigInfoCacheMode("write_thru") + VirtualDiskVFlashCacheConfigInfoCacheModeWrite_back = VirtualDiskVFlashCacheConfigInfoCacheMode("write_back") +) + +func init() { + t["VirtualDiskVFlashCacheConfigInfoCacheMode"] = reflect.TypeOf((*VirtualDiskVFlashCacheConfigInfoCacheMode)(nil)).Elem() +} + +type VirtualEthernetCardLegacyNetworkDeviceName string + +const ( + VirtualEthernetCardLegacyNetworkDeviceNameBridged = VirtualEthernetCardLegacyNetworkDeviceName("bridged") + VirtualEthernetCardLegacyNetworkDeviceNameNat = VirtualEthernetCardLegacyNetworkDeviceName("nat") + VirtualEthernetCardLegacyNetworkDeviceNameHostonly = VirtualEthernetCardLegacyNetworkDeviceName("hostonly") +) + +func init() { + t["VirtualEthernetCardLegacyNetworkDeviceName"] = reflect.TypeOf((*VirtualEthernetCardLegacyNetworkDeviceName)(nil)).Elem() +} + +type VirtualEthernetCardMacType string + +const ( + VirtualEthernetCardMacTypeManual = VirtualEthernetCardMacType("manual") + VirtualEthernetCardMacTypeGenerated = VirtualEthernetCardMacType("generated") + VirtualEthernetCardMacTypeAssigned = VirtualEthernetCardMacType("assigned") +) + +func init() { + t["VirtualEthernetCardMacType"] = reflect.TypeOf((*VirtualEthernetCardMacType)(nil)).Elem() +} + +type VirtualMachineAppHeartbeatStatusType string + +const ( + VirtualMachineAppHeartbeatStatusTypeAppStatusGray = VirtualMachineAppHeartbeatStatusType("appStatusGray") + VirtualMachineAppHeartbeatStatusTypeAppStatusGreen = VirtualMachineAppHeartbeatStatusType("appStatusGreen") + VirtualMachineAppHeartbeatStatusTypeAppStatusRed = VirtualMachineAppHeartbeatStatusType("appStatusRed") +) + +func init() { + t["VirtualMachineAppHeartbeatStatusType"] = reflect.TypeOf((*VirtualMachineAppHeartbeatStatusType)(nil)).Elem() +} + +type VirtualMachineBootOptionsNetworkBootProtocolType string + +const ( + VirtualMachineBootOptionsNetworkBootProtocolTypeIpv4 = VirtualMachineBootOptionsNetworkBootProtocolType("ipv4") + VirtualMachineBootOptionsNetworkBootProtocolTypeIpv6 = VirtualMachineBootOptionsNetworkBootProtocolType("ipv6") +) + +func init() { + t["VirtualMachineBootOptionsNetworkBootProtocolType"] = reflect.TypeOf((*VirtualMachineBootOptionsNetworkBootProtocolType)(nil)).Elem() +} + +type VirtualMachineConfigInfoNpivWwnType string + +const ( + VirtualMachineConfigInfoNpivWwnTypeVc = VirtualMachineConfigInfoNpivWwnType("vc") + VirtualMachineConfigInfoNpivWwnTypeHost = VirtualMachineConfigInfoNpivWwnType("host") + VirtualMachineConfigInfoNpivWwnTypeExternal = VirtualMachineConfigInfoNpivWwnType("external") +) + +func init() { + t["VirtualMachineConfigInfoNpivWwnType"] = reflect.TypeOf((*VirtualMachineConfigInfoNpivWwnType)(nil)).Elem() +} + +type VirtualMachineConfigInfoSwapPlacementType string + +const ( + VirtualMachineConfigInfoSwapPlacementTypeInherit = VirtualMachineConfigInfoSwapPlacementType("inherit") + VirtualMachineConfigInfoSwapPlacementTypeVmDirectory = VirtualMachineConfigInfoSwapPlacementType("vmDirectory") + VirtualMachineConfigInfoSwapPlacementTypeHostLocal = VirtualMachineConfigInfoSwapPlacementType("hostLocal") +) + +func init() { + t["VirtualMachineConfigInfoSwapPlacementType"] = reflect.TypeOf((*VirtualMachineConfigInfoSwapPlacementType)(nil)).Elem() +} + +type VirtualMachineConfigSpecEncryptedVMotionModes string + +const ( + VirtualMachineConfigSpecEncryptedVMotionModesDisabled = VirtualMachineConfigSpecEncryptedVMotionModes("disabled") + VirtualMachineConfigSpecEncryptedVMotionModesOpportunistic = VirtualMachineConfigSpecEncryptedVMotionModes("opportunistic") + VirtualMachineConfigSpecEncryptedVMotionModesRequired = VirtualMachineConfigSpecEncryptedVMotionModes("required") +) + +func init() { + t["VirtualMachineConfigSpecEncryptedVMotionModes"] = reflect.TypeOf((*VirtualMachineConfigSpecEncryptedVMotionModes)(nil)).Elem() +} + +type VirtualMachineConfigSpecNpivWwnOp string + +const ( + VirtualMachineConfigSpecNpivWwnOpGenerate = VirtualMachineConfigSpecNpivWwnOp("generate") + VirtualMachineConfigSpecNpivWwnOpSet = VirtualMachineConfigSpecNpivWwnOp("set") + VirtualMachineConfigSpecNpivWwnOpRemove = VirtualMachineConfigSpecNpivWwnOp("remove") + VirtualMachineConfigSpecNpivWwnOpExtend = VirtualMachineConfigSpecNpivWwnOp("extend") +) + +func init() { + t["VirtualMachineConfigSpecNpivWwnOp"] = reflect.TypeOf((*VirtualMachineConfigSpecNpivWwnOp)(nil)).Elem() +} + +type VirtualMachineConnectionState string + +const ( + VirtualMachineConnectionStateConnected = VirtualMachineConnectionState("connected") + VirtualMachineConnectionStateDisconnected = VirtualMachineConnectionState("disconnected") + VirtualMachineConnectionStateOrphaned = VirtualMachineConnectionState("orphaned") + VirtualMachineConnectionStateInaccessible = VirtualMachineConnectionState("inaccessible") + VirtualMachineConnectionStateInvalid = VirtualMachineConnectionState("invalid") +) + +func init() { + t["VirtualMachineConnectionState"] = reflect.TypeOf((*VirtualMachineConnectionState)(nil)).Elem() +} + +type VirtualMachineCryptoState string + +const ( + VirtualMachineCryptoStateUnlocked = VirtualMachineCryptoState("unlocked") + VirtualMachineCryptoStateLocked = VirtualMachineCryptoState("locked") +) + +func init() { + t["VirtualMachineCryptoState"] = reflect.TypeOf((*VirtualMachineCryptoState)(nil)).Elem() +} + +type VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonOther string + +const ( + VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonOtherVmNptIncompatibleHost = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonOther("vmNptIncompatibleHost") + VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonOtherVmNptIncompatibleNetwork = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonOther("vmNptIncompatibleNetwork") +) + +func init() { + t["VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonOther"] = reflect.TypeOf((*VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonOther)(nil)).Elem() +} + +type VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm string + +const ( + VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptIncompatibleGuest = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptIncompatibleGuest") + VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptIncompatibleGuestDriver = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptIncompatibleGuestDriver") + VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptIncompatibleAdapterType = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptIncompatibleAdapterType") + VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptDisabledOrDisconnectedAdapter = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptDisabledOrDisconnectedAdapter") + VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptIncompatibleAdapterFeatures = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptIncompatibleAdapterFeatures") + VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptIncompatibleBackingType = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptIncompatibleBackingType") + VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptInsufficientMemoryReservation = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptInsufficientMemoryReservation") + VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptFaultToleranceOrRecordReplayConfigured = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptFaultToleranceOrRecordReplayConfigured") + VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptConflictingIOChainConfigured = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptConflictingIOChainConfigured") + VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptMonitorBlocks = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptMonitorBlocks") + VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptConflictingOperationInProgress = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptConflictingOperationInProgress") + VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptRuntimeError = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptRuntimeError") + VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptOutOfIntrVector = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptOutOfIntrVector") + VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptVMCIActive = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptVMCIActive") +) + +func init() { + t["VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm"] = reflect.TypeOf((*VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm)(nil)).Elem() +} + +type VirtualMachineFaultToleranceState string + +const ( + VirtualMachineFaultToleranceStateNotConfigured = VirtualMachineFaultToleranceState("notConfigured") + VirtualMachineFaultToleranceStateDisabled = VirtualMachineFaultToleranceState("disabled") + VirtualMachineFaultToleranceStateEnabled = VirtualMachineFaultToleranceState("enabled") + VirtualMachineFaultToleranceStateNeedSecondary = VirtualMachineFaultToleranceState("needSecondary") + VirtualMachineFaultToleranceStateStarting = VirtualMachineFaultToleranceState("starting") + VirtualMachineFaultToleranceStateRunning = VirtualMachineFaultToleranceState("running") +) + +func init() { + t["VirtualMachineFaultToleranceState"] = reflect.TypeOf((*VirtualMachineFaultToleranceState)(nil)).Elem() +} + +type VirtualMachineFaultToleranceType string + +const ( + VirtualMachineFaultToleranceTypeUnset = VirtualMachineFaultToleranceType("unset") + VirtualMachineFaultToleranceTypeRecordReplay = VirtualMachineFaultToleranceType("recordReplay") + VirtualMachineFaultToleranceTypeCheckpointing = VirtualMachineFaultToleranceType("checkpointing") +) + +func init() { + t["VirtualMachineFaultToleranceType"] = reflect.TypeOf((*VirtualMachineFaultToleranceType)(nil)).Elem() +} + +type VirtualMachineFileLayoutExFileType string + +const ( + VirtualMachineFileLayoutExFileTypeConfig = VirtualMachineFileLayoutExFileType("config") + VirtualMachineFileLayoutExFileTypeExtendedConfig = VirtualMachineFileLayoutExFileType("extendedConfig") + VirtualMachineFileLayoutExFileTypeDiskDescriptor = VirtualMachineFileLayoutExFileType("diskDescriptor") + VirtualMachineFileLayoutExFileTypeDiskExtent = VirtualMachineFileLayoutExFileType("diskExtent") + VirtualMachineFileLayoutExFileTypeDigestDescriptor = VirtualMachineFileLayoutExFileType("digestDescriptor") + VirtualMachineFileLayoutExFileTypeDigestExtent = VirtualMachineFileLayoutExFileType("digestExtent") + VirtualMachineFileLayoutExFileTypeDiskReplicationState = VirtualMachineFileLayoutExFileType("diskReplicationState") + VirtualMachineFileLayoutExFileTypeLog = VirtualMachineFileLayoutExFileType("log") + VirtualMachineFileLayoutExFileTypeStat = VirtualMachineFileLayoutExFileType("stat") + VirtualMachineFileLayoutExFileTypeNamespaceData = VirtualMachineFileLayoutExFileType("namespaceData") + VirtualMachineFileLayoutExFileTypeNvram = VirtualMachineFileLayoutExFileType("nvram") + VirtualMachineFileLayoutExFileTypeSnapshotData = VirtualMachineFileLayoutExFileType("snapshotData") + VirtualMachineFileLayoutExFileTypeSnapshotMemory = VirtualMachineFileLayoutExFileType("snapshotMemory") + VirtualMachineFileLayoutExFileTypeSnapshotList = VirtualMachineFileLayoutExFileType("snapshotList") + VirtualMachineFileLayoutExFileTypeSnapshotManifestList = VirtualMachineFileLayoutExFileType("snapshotManifestList") + VirtualMachineFileLayoutExFileTypeSuspend = VirtualMachineFileLayoutExFileType("suspend") + VirtualMachineFileLayoutExFileTypeSuspendMemory = VirtualMachineFileLayoutExFileType("suspendMemory") + VirtualMachineFileLayoutExFileTypeSwap = VirtualMachineFileLayoutExFileType("swap") + VirtualMachineFileLayoutExFileTypeUwswap = VirtualMachineFileLayoutExFileType("uwswap") + VirtualMachineFileLayoutExFileTypeCore = VirtualMachineFileLayoutExFileType("core") + VirtualMachineFileLayoutExFileTypeScreenshot = VirtualMachineFileLayoutExFileType("screenshot") + VirtualMachineFileLayoutExFileTypeFtMetadata = VirtualMachineFileLayoutExFileType("ftMetadata") + VirtualMachineFileLayoutExFileTypeGuestCustomization = VirtualMachineFileLayoutExFileType("guestCustomization") +) + +func init() { + t["VirtualMachineFileLayoutExFileType"] = reflect.TypeOf((*VirtualMachineFileLayoutExFileType)(nil)).Elem() +} + +type VirtualMachineFlagInfoMonitorType string + +const ( + VirtualMachineFlagInfoMonitorTypeRelease = VirtualMachineFlagInfoMonitorType("release") + VirtualMachineFlagInfoMonitorTypeDebug = VirtualMachineFlagInfoMonitorType("debug") + VirtualMachineFlagInfoMonitorTypeStats = VirtualMachineFlagInfoMonitorType("stats") +) + +func init() { + t["VirtualMachineFlagInfoMonitorType"] = reflect.TypeOf((*VirtualMachineFlagInfoMonitorType)(nil)).Elem() +} + +type VirtualMachineFlagInfoVirtualExecUsage string + +const ( + VirtualMachineFlagInfoVirtualExecUsageHvAuto = VirtualMachineFlagInfoVirtualExecUsage("hvAuto") + VirtualMachineFlagInfoVirtualExecUsageHvOn = VirtualMachineFlagInfoVirtualExecUsage("hvOn") + VirtualMachineFlagInfoVirtualExecUsageHvOff = VirtualMachineFlagInfoVirtualExecUsage("hvOff") +) + +func init() { + t["VirtualMachineFlagInfoVirtualExecUsage"] = reflect.TypeOf((*VirtualMachineFlagInfoVirtualExecUsage)(nil)).Elem() +} + +type VirtualMachineFlagInfoVirtualMmuUsage string + +const ( + VirtualMachineFlagInfoVirtualMmuUsageAutomatic = VirtualMachineFlagInfoVirtualMmuUsage("automatic") + VirtualMachineFlagInfoVirtualMmuUsageOn = VirtualMachineFlagInfoVirtualMmuUsage("on") + VirtualMachineFlagInfoVirtualMmuUsageOff = VirtualMachineFlagInfoVirtualMmuUsage("off") +) + +func init() { + t["VirtualMachineFlagInfoVirtualMmuUsage"] = reflect.TypeOf((*VirtualMachineFlagInfoVirtualMmuUsage)(nil)).Elem() +} + +type VirtualMachineForkConfigInfoChildType string + +const ( + VirtualMachineForkConfigInfoChildTypeNone = VirtualMachineForkConfigInfoChildType("none") + VirtualMachineForkConfigInfoChildTypePersistent = VirtualMachineForkConfigInfoChildType("persistent") + VirtualMachineForkConfigInfoChildTypeNonpersistent = VirtualMachineForkConfigInfoChildType("nonpersistent") +) + +func init() { + t["VirtualMachineForkConfigInfoChildType"] = reflect.TypeOf((*VirtualMachineForkConfigInfoChildType)(nil)).Elem() +} + +type VirtualMachineGuestOsFamily string + +const ( + VirtualMachineGuestOsFamilyWindowsGuest = VirtualMachineGuestOsFamily("windowsGuest") + VirtualMachineGuestOsFamilyLinuxGuest = VirtualMachineGuestOsFamily("linuxGuest") + VirtualMachineGuestOsFamilyNetwareGuest = VirtualMachineGuestOsFamily("netwareGuest") + VirtualMachineGuestOsFamilySolarisGuest = VirtualMachineGuestOsFamily("solarisGuest") + VirtualMachineGuestOsFamilyDarwinGuestFamily = VirtualMachineGuestOsFamily("darwinGuestFamily") + VirtualMachineGuestOsFamilyOtherGuestFamily = VirtualMachineGuestOsFamily("otherGuestFamily") +) + +func init() { + t["VirtualMachineGuestOsFamily"] = reflect.TypeOf((*VirtualMachineGuestOsFamily)(nil)).Elem() +} + +type VirtualMachineGuestOsIdentifier string + +const ( + VirtualMachineGuestOsIdentifierDosGuest = VirtualMachineGuestOsIdentifier("dosGuest") + VirtualMachineGuestOsIdentifierWin31Guest = VirtualMachineGuestOsIdentifier("win31Guest") + VirtualMachineGuestOsIdentifierWin95Guest = VirtualMachineGuestOsIdentifier("win95Guest") + VirtualMachineGuestOsIdentifierWin98Guest = VirtualMachineGuestOsIdentifier("win98Guest") + VirtualMachineGuestOsIdentifierWinMeGuest = VirtualMachineGuestOsIdentifier("winMeGuest") + VirtualMachineGuestOsIdentifierWinNTGuest = VirtualMachineGuestOsIdentifier("winNTGuest") + VirtualMachineGuestOsIdentifierWin2000ProGuest = VirtualMachineGuestOsIdentifier("win2000ProGuest") + VirtualMachineGuestOsIdentifierWin2000ServGuest = VirtualMachineGuestOsIdentifier("win2000ServGuest") + VirtualMachineGuestOsIdentifierWin2000AdvServGuest = VirtualMachineGuestOsIdentifier("win2000AdvServGuest") + VirtualMachineGuestOsIdentifierWinXPHomeGuest = VirtualMachineGuestOsIdentifier("winXPHomeGuest") + VirtualMachineGuestOsIdentifierWinXPProGuest = VirtualMachineGuestOsIdentifier("winXPProGuest") + VirtualMachineGuestOsIdentifierWinXPPro64Guest = VirtualMachineGuestOsIdentifier("winXPPro64Guest") + VirtualMachineGuestOsIdentifierWinNetWebGuest = VirtualMachineGuestOsIdentifier("winNetWebGuest") + VirtualMachineGuestOsIdentifierWinNetStandardGuest = VirtualMachineGuestOsIdentifier("winNetStandardGuest") + VirtualMachineGuestOsIdentifierWinNetEnterpriseGuest = VirtualMachineGuestOsIdentifier("winNetEnterpriseGuest") + VirtualMachineGuestOsIdentifierWinNetDatacenterGuest = VirtualMachineGuestOsIdentifier("winNetDatacenterGuest") + VirtualMachineGuestOsIdentifierWinNetBusinessGuest = VirtualMachineGuestOsIdentifier("winNetBusinessGuest") + VirtualMachineGuestOsIdentifierWinNetStandard64Guest = VirtualMachineGuestOsIdentifier("winNetStandard64Guest") + VirtualMachineGuestOsIdentifierWinNetEnterprise64Guest = VirtualMachineGuestOsIdentifier("winNetEnterprise64Guest") + VirtualMachineGuestOsIdentifierWinLonghornGuest = VirtualMachineGuestOsIdentifier("winLonghornGuest") + VirtualMachineGuestOsIdentifierWinLonghorn64Guest = VirtualMachineGuestOsIdentifier("winLonghorn64Guest") + VirtualMachineGuestOsIdentifierWinNetDatacenter64Guest = VirtualMachineGuestOsIdentifier("winNetDatacenter64Guest") + VirtualMachineGuestOsIdentifierWinVistaGuest = VirtualMachineGuestOsIdentifier("winVistaGuest") + VirtualMachineGuestOsIdentifierWinVista64Guest = VirtualMachineGuestOsIdentifier("winVista64Guest") + VirtualMachineGuestOsIdentifierWindows7Guest = VirtualMachineGuestOsIdentifier("windows7Guest") + VirtualMachineGuestOsIdentifierWindows7_64Guest = VirtualMachineGuestOsIdentifier("windows7_64Guest") + VirtualMachineGuestOsIdentifierWindows7Server64Guest = VirtualMachineGuestOsIdentifier("windows7Server64Guest") + VirtualMachineGuestOsIdentifierWindows8Guest = VirtualMachineGuestOsIdentifier("windows8Guest") + VirtualMachineGuestOsIdentifierWindows8_64Guest = VirtualMachineGuestOsIdentifier("windows8_64Guest") + VirtualMachineGuestOsIdentifierWindows8Server64Guest = VirtualMachineGuestOsIdentifier("windows8Server64Guest") + VirtualMachineGuestOsIdentifierWindows9Guest = VirtualMachineGuestOsIdentifier("windows9Guest") + VirtualMachineGuestOsIdentifierWindows9_64Guest = VirtualMachineGuestOsIdentifier("windows9_64Guest") + VirtualMachineGuestOsIdentifierWindows9Server64Guest = VirtualMachineGuestOsIdentifier("windows9Server64Guest") + VirtualMachineGuestOsIdentifierWindowsHyperVGuest = VirtualMachineGuestOsIdentifier("windowsHyperVGuest") + VirtualMachineGuestOsIdentifierWindows2019srv_64Guest = VirtualMachineGuestOsIdentifier("windows2019srv_64Guest") + VirtualMachineGuestOsIdentifierFreebsdGuest = VirtualMachineGuestOsIdentifier("freebsdGuest") + VirtualMachineGuestOsIdentifierFreebsd64Guest = VirtualMachineGuestOsIdentifier("freebsd64Guest") + VirtualMachineGuestOsIdentifierFreebsd11Guest = VirtualMachineGuestOsIdentifier("freebsd11Guest") + VirtualMachineGuestOsIdentifierFreebsd11_64Guest = VirtualMachineGuestOsIdentifier("freebsd11_64Guest") + VirtualMachineGuestOsIdentifierFreebsd12Guest = VirtualMachineGuestOsIdentifier("freebsd12Guest") + VirtualMachineGuestOsIdentifierFreebsd12_64Guest = VirtualMachineGuestOsIdentifier("freebsd12_64Guest") + VirtualMachineGuestOsIdentifierRedhatGuest = VirtualMachineGuestOsIdentifier("redhatGuest") + VirtualMachineGuestOsIdentifierRhel2Guest = VirtualMachineGuestOsIdentifier("rhel2Guest") + VirtualMachineGuestOsIdentifierRhel3Guest = VirtualMachineGuestOsIdentifier("rhel3Guest") + VirtualMachineGuestOsIdentifierRhel3_64Guest = VirtualMachineGuestOsIdentifier("rhel3_64Guest") + VirtualMachineGuestOsIdentifierRhel4Guest = VirtualMachineGuestOsIdentifier("rhel4Guest") + VirtualMachineGuestOsIdentifierRhel4_64Guest = VirtualMachineGuestOsIdentifier("rhel4_64Guest") + VirtualMachineGuestOsIdentifierRhel5Guest = VirtualMachineGuestOsIdentifier("rhel5Guest") + VirtualMachineGuestOsIdentifierRhel5_64Guest = VirtualMachineGuestOsIdentifier("rhel5_64Guest") + VirtualMachineGuestOsIdentifierRhel6Guest = VirtualMachineGuestOsIdentifier("rhel6Guest") + VirtualMachineGuestOsIdentifierRhel6_64Guest = VirtualMachineGuestOsIdentifier("rhel6_64Guest") + VirtualMachineGuestOsIdentifierRhel7Guest = VirtualMachineGuestOsIdentifier("rhel7Guest") + VirtualMachineGuestOsIdentifierRhel7_64Guest = VirtualMachineGuestOsIdentifier("rhel7_64Guest") + VirtualMachineGuestOsIdentifierRhel8_64Guest = VirtualMachineGuestOsIdentifier("rhel8_64Guest") + VirtualMachineGuestOsIdentifierCentosGuest = VirtualMachineGuestOsIdentifier("centosGuest") + VirtualMachineGuestOsIdentifierCentos64Guest = VirtualMachineGuestOsIdentifier("centos64Guest") + VirtualMachineGuestOsIdentifierCentos6Guest = VirtualMachineGuestOsIdentifier("centos6Guest") + VirtualMachineGuestOsIdentifierCentos6_64Guest = VirtualMachineGuestOsIdentifier("centos6_64Guest") + VirtualMachineGuestOsIdentifierCentos7Guest = VirtualMachineGuestOsIdentifier("centos7Guest") + VirtualMachineGuestOsIdentifierCentos7_64Guest = VirtualMachineGuestOsIdentifier("centos7_64Guest") + VirtualMachineGuestOsIdentifierCentos8_64Guest = VirtualMachineGuestOsIdentifier("centos8_64Guest") + VirtualMachineGuestOsIdentifierOracleLinuxGuest = VirtualMachineGuestOsIdentifier("oracleLinuxGuest") + VirtualMachineGuestOsIdentifierOracleLinux64Guest = VirtualMachineGuestOsIdentifier("oracleLinux64Guest") + VirtualMachineGuestOsIdentifierOracleLinux6Guest = VirtualMachineGuestOsIdentifier("oracleLinux6Guest") + VirtualMachineGuestOsIdentifierOracleLinux6_64Guest = VirtualMachineGuestOsIdentifier("oracleLinux6_64Guest") + VirtualMachineGuestOsIdentifierOracleLinux7Guest = VirtualMachineGuestOsIdentifier("oracleLinux7Guest") + VirtualMachineGuestOsIdentifierOracleLinux7_64Guest = VirtualMachineGuestOsIdentifier("oracleLinux7_64Guest") + VirtualMachineGuestOsIdentifierOracleLinux8_64Guest = VirtualMachineGuestOsIdentifier("oracleLinux8_64Guest") + VirtualMachineGuestOsIdentifierSuseGuest = VirtualMachineGuestOsIdentifier("suseGuest") + VirtualMachineGuestOsIdentifierSuse64Guest = VirtualMachineGuestOsIdentifier("suse64Guest") + VirtualMachineGuestOsIdentifierSlesGuest = VirtualMachineGuestOsIdentifier("slesGuest") + VirtualMachineGuestOsIdentifierSles64Guest = VirtualMachineGuestOsIdentifier("sles64Guest") + VirtualMachineGuestOsIdentifierSles10Guest = VirtualMachineGuestOsIdentifier("sles10Guest") + VirtualMachineGuestOsIdentifierSles10_64Guest = VirtualMachineGuestOsIdentifier("sles10_64Guest") + VirtualMachineGuestOsIdentifierSles11Guest = VirtualMachineGuestOsIdentifier("sles11Guest") + VirtualMachineGuestOsIdentifierSles11_64Guest = VirtualMachineGuestOsIdentifier("sles11_64Guest") + VirtualMachineGuestOsIdentifierSles12Guest = VirtualMachineGuestOsIdentifier("sles12Guest") + VirtualMachineGuestOsIdentifierSles12_64Guest = VirtualMachineGuestOsIdentifier("sles12_64Guest") + VirtualMachineGuestOsIdentifierSles15_64Guest = VirtualMachineGuestOsIdentifier("sles15_64Guest") + VirtualMachineGuestOsIdentifierNld9Guest = VirtualMachineGuestOsIdentifier("nld9Guest") + VirtualMachineGuestOsIdentifierOesGuest = VirtualMachineGuestOsIdentifier("oesGuest") + VirtualMachineGuestOsIdentifierSjdsGuest = VirtualMachineGuestOsIdentifier("sjdsGuest") + VirtualMachineGuestOsIdentifierMandrakeGuest = VirtualMachineGuestOsIdentifier("mandrakeGuest") + VirtualMachineGuestOsIdentifierMandrivaGuest = VirtualMachineGuestOsIdentifier("mandrivaGuest") + VirtualMachineGuestOsIdentifierMandriva64Guest = VirtualMachineGuestOsIdentifier("mandriva64Guest") + VirtualMachineGuestOsIdentifierTurboLinuxGuest = VirtualMachineGuestOsIdentifier("turboLinuxGuest") + VirtualMachineGuestOsIdentifierTurboLinux64Guest = VirtualMachineGuestOsIdentifier("turboLinux64Guest") + VirtualMachineGuestOsIdentifierUbuntuGuest = VirtualMachineGuestOsIdentifier("ubuntuGuest") + VirtualMachineGuestOsIdentifierUbuntu64Guest = VirtualMachineGuestOsIdentifier("ubuntu64Guest") + VirtualMachineGuestOsIdentifierDebian4Guest = VirtualMachineGuestOsIdentifier("debian4Guest") + VirtualMachineGuestOsIdentifierDebian4_64Guest = VirtualMachineGuestOsIdentifier("debian4_64Guest") + VirtualMachineGuestOsIdentifierDebian5Guest = VirtualMachineGuestOsIdentifier("debian5Guest") + VirtualMachineGuestOsIdentifierDebian5_64Guest = VirtualMachineGuestOsIdentifier("debian5_64Guest") + VirtualMachineGuestOsIdentifierDebian6Guest = VirtualMachineGuestOsIdentifier("debian6Guest") + VirtualMachineGuestOsIdentifierDebian6_64Guest = VirtualMachineGuestOsIdentifier("debian6_64Guest") + VirtualMachineGuestOsIdentifierDebian7Guest = VirtualMachineGuestOsIdentifier("debian7Guest") + VirtualMachineGuestOsIdentifierDebian7_64Guest = VirtualMachineGuestOsIdentifier("debian7_64Guest") + VirtualMachineGuestOsIdentifierDebian8Guest = VirtualMachineGuestOsIdentifier("debian8Guest") + VirtualMachineGuestOsIdentifierDebian8_64Guest = VirtualMachineGuestOsIdentifier("debian8_64Guest") + VirtualMachineGuestOsIdentifierDebian9Guest = VirtualMachineGuestOsIdentifier("debian9Guest") + VirtualMachineGuestOsIdentifierDebian9_64Guest = VirtualMachineGuestOsIdentifier("debian9_64Guest") + VirtualMachineGuestOsIdentifierDebian10Guest = VirtualMachineGuestOsIdentifier("debian10Guest") + VirtualMachineGuestOsIdentifierDebian10_64Guest = VirtualMachineGuestOsIdentifier("debian10_64Guest") + VirtualMachineGuestOsIdentifierDebian11Guest = VirtualMachineGuestOsIdentifier("debian11Guest") + VirtualMachineGuestOsIdentifierDebian11_64Guest = VirtualMachineGuestOsIdentifier("debian11_64Guest") + VirtualMachineGuestOsIdentifierAsianux3Guest = VirtualMachineGuestOsIdentifier("asianux3Guest") + VirtualMachineGuestOsIdentifierAsianux3_64Guest = VirtualMachineGuestOsIdentifier("asianux3_64Guest") + VirtualMachineGuestOsIdentifierAsianux4Guest = VirtualMachineGuestOsIdentifier("asianux4Guest") + VirtualMachineGuestOsIdentifierAsianux4_64Guest = VirtualMachineGuestOsIdentifier("asianux4_64Guest") + VirtualMachineGuestOsIdentifierAsianux5_64Guest = VirtualMachineGuestOsIdentifier("asianux5_64Guest") + VirtualMachineGuestOsIdentifierAsianux7_64Guest = VirtualMachineGuestOsIdentifier("asianux7_64Guest") + VirtualMachineGuestOsIdentifierAsianux8_64Guest = VirtualMachineGuestOsIdentifier("asianux8_64Guest") + VirtualMachineGuestOsIdentifierOpensuseGuest = VirtualMachineGuestOsIdentifier("opensuseGuest") + VirtualMachineGuestOsIdentifierOpensuse64Guest = VirtualMachineGuestOsIdentifier("opensuse64Guest") + VirtualMachineGuestOsIdentifierFedoraGuest = VirtualMachineGuestOsIdentifier("fedoraGuest") + VirtualMachineGuestOsIdentifierFedora64Guest = VirtualMachineGuestOsIdentifier("fedora64Guest") + VirtualMachineGuestOsIdentifierCoreos64Guest = VirtualMachineGuestOsIdentifier("coreos64Guest") + VirtualMachineGuestOsIdentifierVmwarePhoton64Guest = VirtualMachineGuestOsIdentifier("vmwarePhoton64Guest") + VirtualMachineGuestOsIdentifierOther24xLinuxGuest = VirtualMachineGuestOsIdentifier("other24xLinuxGuest") + VirtualMachineGuestOsIdentifierOther26xLinuxGuest = VirtualMachineGuestOsIdentifier("other26xLinuxGuest") + VirtualMachineGuestOsIdentifierOtherLinuxGuest = VirtualMachineGuestOsIdentifier("otherLinuxGuest") + VirtualMachineGuestOsIdentifierOther3xLinuxGuest = VirtualMachineGuestOsIdentifier("other3xLinuxGuest") + VirtualMachineGuestOsIdentifierOther4xLinuxGuest = VirtualMachineGuestOsIdentifier("other4xLinuxGuest") + VirtualMachineGuestOsIdentifierGenericLinuxGuest = VirtualMachineGuestOsIdentifier("genericLinuxGuest") + VirtualMachineGuestOsIdentifierOther24xLinux64Guest = VirtualMachineGuestOsIdentifier("other24xLinux64Guest") + VirtualMachineGuestOsIdentifierOther26xLinux64Guest = VirtualMachineGuestOsIdentifier("other26xLinux64Guest") + VirtualMachineGuestOsIdentifierOther3xLinux64Guest = VirtualMachineGuestOsIdentifier("other3xLinux64Guest") + VirtualMachineGuestOsIdentifierOther4xLinux64Guest = VirtualMachineGuestOsIdentifier("other4xLinux64Guest") + VirtualMachineGuestOsIdentifierOtherLinux64Guest = VirtualMachineGuestOsIdentifier("otherLinux64Guest") + VirtualMachineGuestOsIdentifierSolaris6Guest = VirtualMachineGuestOsIdentifier("solaris6Guest") + VirtualMachineGuestOsIdentifierSolaris7Guest = VirtualMachineGuestOsIdentifier("solaris7Guest") + VirtualMachineGuestOsIdentifierSolaris8Guest = VirtualMachineGuestOsIdentifier("solaris8Guest") + VirtualMachineGuestOsIdentifierSolaris9Guest = VirtualMachineGuestOsIdentifier("solaris9Guest") + VirtualMachineGuestOsIdentifierSolaris10Guest = VirtualMachineGuestOsIdentifier("solaris10Guest") + VirtualMachineGuestOsIdentifierSolaris10_64Guest = VirtualMachineGuestOsIdentifier("solaris10_64Guest") + VirtualMachineGuestOsIdentifierSolaris11_64Guest = VirtualMachineGuestOsIdentifier("solaris11_64Guest") + VirtualMachineGuestOsIdentifierOs2Guest = VirtualMachineGuestOsIdentifier("os2Guest") + VirtualMachineGuestOsIdentifierEComStationGuest = VirtualMachineGuestOsIdentifier("eComStationGuest") + VirtualMachineGuestOsIdentifierEComStation2Guest = VirtualMachineGuestOsIdentifier("eComStation2Guest") + VirtualMachineGuestOsIdentifierNetware4Guest = VirtualMachineGuestOsIdentifier("netware4Guest") + VirtualMachineGuestOsIdentifierNetware5Guest = VirtualMachineGuestOsIdentifier("netware5Guest") + VirtualMachineGuestOsIdentifierNetware6Guest = VirtualMachineGuestOsIdentifier("netware6Guest") + VirtualMachineGuestOsIdentifierOpenServer5Guest = VirtualMachineGuestOsIdentifier("openServer5Guest") + VirtualMachineGuestOsIdentifierOpenServer6Guest = VirtualMachineGuestOsIdentifier("openServer6Guest") + VirtualMachineGuestOsIdentifierUnixWare7Guest = VirtualMachineGuestOsIdentifier("unixWare7Guest") + VirtualMachineGuestOsIdentifierDarwinGuest = VirtualMachineGuestOsIdentifier("darwinGuest") + VirtualMachineGuestOsIdentifierDarwin64Guest = VirtualMachineGuestOsIdentifier("darwin64Guest") + VirtualMachineGuestOsIdentifierDarwin10Guest = VirtualMachineGuestOsIdentifier("darwin10Guest") + VirtualMachineGuestOsIdentifierDarwin10_64Guest = VirtualMachineGuestOsIdentifier("darwin10_64Guest") + VirtualMachineGuestOsIdentifierDarwin11Guest = VirtualMachineGuestOsIdentifier("darwin11Guest") + VirtualMachineGuestOsIdentifierDarwin11_64Guest = VirtualMachineGuestOsIdentifier("darwin11_64Guest") + VirtualMachineGuestOsIdentifierDarwin12_64Guest = VirtualMachineGuestOsIdentifier("darwin12_64Guest") + VirtualMachineGuestOsIdentifierDarwin13_64Guest = VirtualMachineGuestOsIdentifier("darwin13_64Guest") + VirtualMachineGuestOsIdentifierDarwin14_64Guest = VirtualMachineGuestOsIdentifier("darwin14_64Guest") + VirtualMachineGuestOsIdentifierDarwin15_64Guest = VirtualMachineGuestOsIdentifier("darwin15_64Guest") + VirtualMachineGuestOsIdentifierDarwin16_64Guest = VirtualMachineGuestOsIdentifier("darwin16_64Guest") + VirtualMachineGuestOsIdentifierDarwin17_64Guest = VirtualMachineGuestOsIdentifier("darwin17_64Guest") + VirtualMachineGuestOsIdentifierDarwin18_64Guest = VirtualMachineGuestOsIdentifier("darwin18_64Guest") + VirtualMachineGuestOsIdentifierDarwin19_64Guest = VirtualMachineGuestOsIdentifier("darwin19_64Guest") + VirtualMachineGuestOsIdentifierVmkernelGuest = VirtualMachineGuestOsIdentifier("vmkernelGuest") + VirtualMachineGuestOsIdentifierVmkernel5Guest = VirtualMachineGuestOsIdentifier("vmkernel5Guest") + VirtualMachineGuestOsIdentifierVmkernel6Guest = VirtualMachineGuestOsIdentifier("vmkernel6Guest") + VirtualMachineGuestOsIdentifierVmkernel65Guest = VirtualMachineGuestOsIdentifier("vmkernel65Guest") + VirtualMachineGuestOsIdentifierVmkernel7Guest = VirtualMachineGuestOsIdentifier("vmkernel7Guest") + VirtualMachineGuestOsIdentifierAmazonlinux2_64Guest = VirtualMachineGuestOsIdentifier("amazonlinux2_64Guest") + VirtualMachineGuestOsIdentifierCrxPod1Guest = VirtualMachineGuestOsIdentifier("crxPod1Guest") + VirtualMachineGuestOsIdentifierOtherGuest = VirtualMachineGuestOsIdentifier("otherGuest") + VirtualMachineGuestOsIdentifierOtherGuest64 = VirtualMachineGuestOsIdentifier("otherGuest64") +) + +func init() { + t["VirtualMachineGuestOsIdentifier"] = reflect.TypeOf((*VirtualMachineGuestOsIdentifier)(nil)).Elem() +} + +type VirtualMachineGuestState string + +const ( + VirtualMachineGuestStateRunning = VirtualMachineGuestState("running") + VirtualMachineGuestStateShuttingDown = VirtualMachineGuestState("shuttingDown") + VirtualMachineGuestStateResetting = VirtualMachineGuestState("resetting") + VirtualMachineGuestStateStandby = VirtualMachineGuestState("standby") + VirtualMachineGuestStateNotRunning = VirtualMachineGuestState("notRunning") + VirtualMachineGuestStateUnknown = VirtualMachineGuestState("unknown") +) + +func init() { + t["VirtualMachineGuestState"] = reflect.TypeOf((*VirtualMachineGuestState)(nil)).Elem() +} + +type VirtualMachineHtSharing string + +const ( + VirtualMachineHtSharingAny = VirtualMachineHtSharing("any") + VirtualMachineHtSharingNone = VirtualMachineHtSharing("none") + VirtualMachineHtSharingInternal = VirtualMachineHtSharing("internal") +) + +func init() { + t["VirtualMachineHtSharing"] = reflect.TypeOf((*VirtualMachineHtSharing)(nil)).Elem() +} + +type VirtualMachineMemoryAllocationPolicy string + +const ( + VirtualMachineMemoryAllocationPolicySwapNone = VirtualMachineMemoryAllocationPolicy("swapNone") + VirtualMachineMemoryAllocationPolicySwapSome = VirtualMachineMemoryAllocationPolicy("swapSome") + VirtualMachineMemoryAllocationPolicySwapMost = VirtualMachineMemoryAllocationPolicy("swapMost") +) + +func init() { + t["VirtualMachineMemoryAllocationPolicy"] = reflect.TypeOf((*VirtualMachineMemoryAllocationPolicy)(nil)).Elem() +} + +type VirtualMachineMetadataManagerVmMetadataOp string + +const ( + VirtualMachineMetadataManagerVmMetadataOpUpdate = VirtualMachineMetadataManagerVmMetadataOp("Update") + VirtualMachineMetadataManagerVmMetadataOpRemove = VirtualMachineMetadataManagerVmMetadataOp("Remove") +) + +func init() { + t["VirtualMachineMetadataManagerVmMetadataOp"] = reflect.TypeOf((*VirtualMachineMetadataManagerVmMetadataOp)(nil)).Elem() +} + +type VirtualMachineMetadataManagerVmMetadataOwnerOwner string + +const ( + VirtualMachineMetadataManagerVmMetadataOwnerOwnerComVmwareVsphereHA = VirtualMachineMetadataManagerVmMetadataOwnerOwner("ComVmwareVsphereHA") +) + +func init() { + t["VirtualMachineMetadataManagerVmMetadataOwnerOwner"] = reflect.TypeOf((*VirtualMachineMetadataManagerVmMetadataOwnerOwner)(nil)).Elem() +} + +type VirtualMachineMovePriority string + +const ( + VirtualMachineMovePriorityLowPriority = VirtualMachineMovePriority("lowPriority") + VirtualMachineMovePriorityHighPriority = VirtualMachineMovePriority("highPriority") + VirtualMachineMovePriorityDefaultPriority = VirtualMachineMovePriority("defaultPriority") +) + +func init() { + t["VirtualMachineMovePriority"] = reflect.TypeOf((*VirtualMachineMovePriority)(nil)).Elem() +} + +type VirtualMachineNeedSecondaryReason string + +const ( + VirtualMachineNeedSecondaryReasonInitializing = VirtualMachineNeedSecondaryReason("initializing") + VirtualMachineNeedSecondaryReasonDivergence = VirtualMachineNeedSecondaryReason("divergence") + VirtualMachineNeedSecondaryReasonLostConnection = VirtualMachineNeedSecondaryReason("lostConnection") + VirtualMachineNeedSecondaryReasonPartialHardwareFailure = VirtualMachineNeedSecondaryReason("partialHardwareFailure") + VirtualMachineNeedSecondaryReasonUserAction = VirtualMachineNeedSecondaryReason("userAction") + VirtualMachineNeedSecondaryReasonCheckpointError = VirtualMachineNeedSecondaryReason("checkpointError") + VirtualMachineNeedSecondaryReasonOther = VirtualMachineNeedSecondaryReason("other") +) + +func init() { + t["VirtualMachineNeedSecondaryReason"] = reflect.TypeOf((*VirtualMachineNeedSecondaryReason)(nil)).Elem() +} + +type VirtualMachinePowerOffBehavior string + +const ( + VirtualMachinePowerOffBehaviorPowerOff = VirtualMachinePowerOffBehavior("powerOff") + VirtualMachinePowerOffBehaviorRevert = VirtualMachinePowerOffBehavior("revert") + VirtualMachinePowerOffBehaviorPrompt = VirtualMachinePowerOffBehavior("prompt") + VirtualMachinePowerOffBehaviorTake = VirtualMachinePowerOffBehavior("take") +) + +func init() { + t["VirtualMachinePowerOffBehavior"] = reflect.TypeOf((*VirtualMachinePowerOffBehavior)(nil)).Elem() +} + +type VirtualMachinePowerOpType string + +const ( + VirtualMachinePowerOpTypeSoft = VirtualMachinePowerOpType("soft") + VirtualMachinePowerOpTypeHard = VirtualMachinePowerOpType("hard") + VirtualMachinePowerOpTypePreset = VirtualMachinePowerOpType("preset") +) + +func init() { + t["VirtualMachinePowerOpType"] = reflect.TypeOf((*VirtualMachinePowerOpType)(nil)).Elem() +} + +type VirtualMachinePowerState string + +const ( + VirtualMachinePowerStatePoweredOff = VirtualMachinePowerState("poweredOff") + VirtualMachinePowerStatePoweredOn = VirtualMachinePowerState("poweredOn") + VirtualMachinePowerStateSuspended = VirtualMachinePowerState("suspended") +) + +func init() { + t["VirtualMachinePowerState"] = reflect.TypeOf((*VirtualMachinePowerState)(nil)).Elem() +} + +type VirtualMachineRecordReplayState string + +const ( + VirtualMachineRecordReplayStateRecording = VirtualMachineRecordReplayState("recording") + VirtualMachineRecordReplayStateReplaying = VirtualMachineRecordReplayState("replaying") + VirtualMachineRecordReplayStateInactive = VirtualMachineRecordReplayState("inactive") +) + +func init() { + t["VirtualMachineRecordReplayState"] = reflect.TypeOf((*VirtualMachineRecordReplayState)(nil)).Elem() +} + +type VirtualMachineRelocateDiskMoveOptions string + +const ( + VirtualMachineRelocateDiskMoveOptionsMoveAllDiskBackingsAndAllowSharing = VirtualMachineRelocateDiskMoveOptions("moveAllDiskBackingsAndAllowSharing") + VirtualMachineRelocateDiskMoveOptionsMoveAllDiskBackingsAndDisallowSharing = VirtualMachineRelocateDiskMoveOptions("moveAllDiskBackingsAndDisallowSharing") + VirtualMachineRelocateDiskMoveOptionsMoveChildMostDiskBacking = VirtualMachineRelocateDiskMoveOptions("moveChildMostDiskBacking") + VirtualMachineRelocateDiskMoveOptionsCreateNewChildDiskBacking = VirtualMachineRelocateDiskMoveOptions("createNewChildDiskBacking") + VirtualMachineRelocateDiskMoveOptionsMoveAllDiskBackingsAndConsolidate = VirtualMachineRelocateDiskMoveOptions("moveAllDiskBackingsAndConsolidate") +) + +func init() { + t["VirtualMachineRelocateDiskMoveOptions"] = reflect.TypeOf((*VirtualMachineRelocateDiskMoveOptions)(nil)).Elem() +} + +type VirtualMachineRelocateTransformation string + +const ( + VirtualMachineRelocateTransformationFlat = VirtualMachineRelocateTransformation("flat") + VirtualMachineRelocateTransformationSparse = VirtualMachineRelocateTransformation("sparse") +) + +func init() { + t["VirtualMachineRelocateTransformation"] = reflect.TypeOf((*VirtualMachineRelocateTransformation)(nil)).Elem() +} + +type VirtualMachineScsiPassthroughType string + +const ( + VirtualMachineScsiPassthroughTypeDisk = VirtualMachineScsiPassthroughType("disk") + VirtualMachineScsiPassthroughTypeTape = VirtualMachineScsiPassthroughType("tape") + VirtualMachineScsiPassthroughTypePrinter = VirtualMachineScsiPassthroughType("printer") + VirtualMachineScsiPassthroughTypeProcessor = VirtualMachineScsiPassthroughType("processor") + VirtualMachineScsiPassthroughTypeWorm = VirtualMachineScsiPassthroughType("worm") + VirtualMachineScsiPassthroughTypeCdrom = VirtualMachineScsiPassthroughType("cdrom") + VirtualMachineScsiPassthroughTypeScanner = VirtualMachineScsiPassthroughType("scanner") + VirtualMachineScsiPassthroughTypeOptical = VirtualMachineScsiPassthroughType("optical") + VirtualMachineScsiPassthroughTypeMedia = VirtualMachineScsiPassthroughType("media") + VirtualMachineScsiPassthroughTypeCom = VirtualMachineScsiPassthroughType("com") + VirtualMachineScsiPassthroughTypeRaid = VirtualMachineScsiPassthroughType("raid") + VirtualMachineScsiPassthroughTypeUnknown = VirtualMachineScsiPassthroughType("unknown") +) + +func init() { + t["VirtualMachineScsiPassthroughType"] = reflect.TypeOf((*VirtualMachineScsiPassthroughType)(nil)).Elem() +} + +type VirtualMachineSgxInfoFlcModes string + +const ( + VirtualMachineSgxInfoFlcModesLocked = VirtualMachineSgxInfoFlcModes("locked") + VirtualMachineSgxInfoFlcModesUnlocked = VirtualMachineSgxInfoFlcModes("unlocked") +) + +func init() { + t["VirtualMachineSgxInfoFlcModes"] = reflect.TypeOf((*VirtualMachineSgxInfoFlcModes)(nil)).Elem() +} + +type VirtualMachineStandbyActionType string + +const ( + VirtualMachineStandbyActionTypeCheckpoint = VirtualMachineStandbyActionType("checkpoint") + VirtualMachineStandbyActionTypePowerOnSuspend = VirtualMachineStandbyActionType("powerOnSuspend") +) + +func init() { + t["VirtualMachineStandbyActionType"] = reflect.TypeOf((*VirtualMachineStandbyActionType)(nil)).Elem() +} + +type VirtualMachineTargetInfoConfigurationTag string + +const ( + VirtualMachineTargetInfoConfigurationTagCompliant = VirtualMachineTargetInfoConfigurationTag("compliant") + VirtualMachineTargetInfoConfigurationTagClusterWide = VirtualMachineTargetInfoConfigurationTag("clusterWide") +) + +func init() { + t["VirtualMachineTargetInfoConfigurationTag"] = reflect.TypeOf((*VirtualMachineTargetInfoConfigurationTag)(nil)).Elem() +} + +type VirtualMachineTicketType string + +const ( + VirtualMachineTicketTypeMks = VirtualMachineTicketType("mks") + VirtualMachineTicketTypeDevice = VirtualMachineTicketType("device") + VirtualMachineTicketTypeGuestControl = VirtualMachineTicketType("guestControl") + VirtualMachineTicketTypeWebmks = VirtualMachineTicketType("webmks") + VirtualMachineTicketTypeGuestIntegrity = VirtualMachineTicketType("guestIntegrity") + VirtualMachineTicketTypeWebRemoteDevice = VirtualMachineTicketType("webRemoteDevice") +) + +func init() { + t["VirtualMachineTicketType"] = reflect.TypeOf((*VirtualMachineTicketType)(nil)).Elem() +} + +type VirtualMachineToolsInstallType string + +const ( + VirtualMachineToolsInstallTypeGuestToolsTypeUnknown = VirtualMachineToolsInstallType("guestToolsTypeUnknown") + VirtualMachineToolsInstallTypeGuestToolsTypeMSI = VirtualMachineToolsInstallType("guestToolsTypeMSI") + VirtualMachineToolsInstallTypeGuestToolsTypeTar = VirtualMachineToolsInstallType("guestToolsTypeTar") + VirtualMachineToolsInstallTypeGuestToolsTypeOSP = VirtualMachineToolsInstallType("guestToolsTypeOSP") + VirtualMachineToolsInstallTypeGuestToolsTypeOpenVMTools = VirtualMachineToolsInstallType("guestToolsTypeOpenVMTools") +) + +func init() { + t["VirtualMachineToolsInstallType"] = reflect.TypeOf((*VirtualMachineToolsInstallType)(nil)).Elem() +} + +type VirtualMachineToolsRunningStatus string + +const ( + VirtualMachineToolsRunningStatusGuestToolsNotRunning = VirtualMachineToolsRunningStatus("guestToolsNotRunning") + VirtualMachineToolsRunningStatusGuestToolsRunning = VirtualMachineToolsRunningStatus("guestToolsRunning") + VirtualMachineToolsRunningStatusGuestToolsExecutingScripts = VirtualMachineToolsRunningStatus("guestToolsExecutingScripts") +) + +func init() { + t["VirtualMachineToolsRunningStatus"] = reflect.TypeOf((*VirtualMachineToolsRunningStatus)(nil)).Elem() +} + +type VirtualMachineToolsStatus string + +const ( + VirtualMachineToolsStatusToolsNotInstalled = VirtualMachineToolsStatus("toolsNotInstalled") + VirtualMachineToolsStatusToolsNotRunning = VirtualMachineToolsStatus("toolsNotRunning") + VirtualMachineToolsStatusToolsOld = VirtualMachineToolsStatus("toolsOld") + VirtualMachineToolsStatusToolsOk = VirtualMachineToolsStatus("toolsOk") +) + +func init() { + t["VirtualMachineToolsStatus"] = reflect.TypeOf((*VirtualMachineToolsStatus)(nil)).Elem() +} + +type VirtualMachineToolsVersionStatus string + +const ( + VirtualMachineToolsVersionStatusGuestToolsNotInstalled = VirtualMachineToolsVersionStatus("guestToolsNotInstalled") + VirtualMachineToolsVersionStatusGuestToolsNeedUpgrade = VirtualMachineToolsVersionStatus("guestToolsNeedUpgrade") + VirtualMachineToolsVersionStatusGuestToolsCurrent = VirtualMachineToolsVersionStatus("guestToolsCurrent") + VirtualMachineToolsVersionStatusGuestToolsUnmanaged = VirtualMachineToolsVersionStatus("guestToolsUnmanaged") + VirtualMachineToolsVersionStatusGuestToolsTooOld = VirtualMachineToolsVersionStatus("guestToolsTooOld") + VirtualMachineToolsVersionStatusGuestToolsSupportedOld = VirtualMachineToolsVersionStatus("guestToolsSupportedOld") + VirtualMachineToolsVersionStatusGuestToolsSupportedNew = VirtualMachineToolsVersionStatus("guestToolsSupportedNew") + VirtualMachineToolsVersionStatusGuestToolsTooNew = VirtualMachineToolsVersionStatus("guestToolsTooNew") + VirtualMachineToolsVersionStatusGuestToolsBlacklisted = VirtualMachineToolsVersionStatus("guestToolsBlacklisted") +) + +func init() { + t["VirtualMachineToolsVersionStatus"] = reflect.TypeOf((*VirtualMachineToolsVersionStatus)(nil)).Elem() +} + +type VirtualMachineUsbInfoFamily string + +const ( + VirtualMachineUsbInfoFamilyAudio = VirtualMachineUsbInfoFamily("audio") + VirtualMachineUsbInfoFamilyHid = VirtualMachineUsbInfoFamily("hid") + VirtualMachineUsbInfoFamilyHid_bootable = VirtualMachineUsbInfoFamily("hid_bootable") + VirtualMachineUsbInfoFamilyPhysical = VirtualMachineUsbInfoFamily("physical") + VirtualMachineUsbInfoFamilyCommunication = VirtualMachineUsbInfoFamily("communication") + VirtualMachineUsbInfoFamilyImaging = VirtualMachineUsbInfoFamily("imaging") + VirtualMachineUsbInfoFamilyPrinter = VirtualMachineUsbInfoFamily("printer") + VirtualMachineUsbInfoFamilyStorage = VirtualMachineUsbInfoFamily("storage") + VirtualMachineUsbInfoFamilyHub = VirtualMachineUsbInfoFamily("hub") + VirtualMachineUsbInfoFamilySmart_card = VirtualMachineUsbInfoFamily("smart_card") + VirtualMachineUsbInfoFamilySecurity = VirtualMachineUsbInfoFamily("security") + VirtualMachineUsbInfoFamilyVideo = VirtualMachineUsbInfoFamily("video") + VirtualMachineUsbInfoFamilyWireless = VirtualMachineUsbInfoFamily("wireless") + VirtualMachineUsbInfoFamilyBluetooth = VirtualMachineUsbInfoFamily("bluetooth") + VirtualMachineUsbInfoFamilyWusb = VirtualMachineUsbInfoFamily("wusb") + VirtualMachineUsbInfoFamilyPda = VirtualMachineUsbInfoFamily("pda") + VirtualMachineUsbInfoFamilyVendor_specific = VirtualMachineUsbInfoFamily("vendor_specific") + VirtualMachineUsbInfoFamilyOther = VirtualMachineUsbInfoFamily("other") + VirtualMachineUsbInfoFamilyUnknownFamily = VirtualMachineUsbInfoFamily("unknownFamily") +) + +func init() { + t["VirtualMachineUsbInfoFamily"] = reflect.TypeOf((*VirtualMachineUsbInfoFamily)(nil)).Elem() +} + +type VirtualMachineUsbInfoSpeed string + +const ( + VirtualMachineUsbInfoSpeedLow = VirtualMachineUsbInfoSpeed("low") + VirtualMachineUsbInfoSpeedFull = VirtualMachineUsbInfoSpeed("full") + VirtualMachineUsbInfoSpeedHigh = VirtualMachineUsbInfoSpeed("high") + VirtualMachineUsbInfoSpeedSuperSpeed = VirtualMachineUsbInfoSpeed("superSpeed") + VirtualMachineUsbInfoSpeedSuperSpeedPlus = VirtualMachineUsbInfoSpeed("superSpeedPlus") + VirtualMachineUsbInfoSpeedUnknownSpeed = VirtualMachineUsbInfoSpeed("unknownSpeed") +) + +func init() { + t["VirtualMachineUsbInfoSpeed"] = reflect.TypeOf((*VirtualMachineUsbInfoSpeed)(nil)).Elem() +} + +type VirtualMachineVMCIDeviceAction string + +const ( + VirtualMachineVMCIDeviceActionAllow = VirtualMachineVMCIDeviceAction("allow") + VirtualMachineVMCIDeviceActionDeny = VirtualMachineVMCIDeviceAction("deny") +) + +func init() { + t["VirtualMachineVMCIDeviceAction"] = reflect.TypeOf((*VirtualMachineVMCIDeviceAction)(nil)).Elem() +} + +type VirtualMachineVMCIDeviceDirection string + +const ( + VirtualMachineVMCIDeviceDirectionGuest = VirtualMachineVMCIDeviceDirection("guest") + VirtualMachineVMCIDeviceDirectionHost = VirtualMachineVMCIDeviceDirection("host") + VirtualMachineVMCIDeviceDirectionAnyDirection = VirtualMachineVMCIDeviceDirection("anyDirection") +) + +func init() { + t["VirtualMachineVMCIDeviceDirection"] = reflect.TypeOf((*VirtualMachineVMCIDeviceDirection)(nil)).Elem() +} + +type VirtualMachineVMCIDeviceProtocol string + +const ( + VirtualMachineVMCIDeviceProtocolHypervisor = VirtualMachineVMCIDeviceProtocol("hypervisor") + VirtualMachineVMCIDeviceProtocolDoorbell = VirtualMachineVMCIDeviceProtocol("doorbell") + VirtualMachineVMCIDeviceProtocolQueuepair = VirtualMachineVMCIDeviceProtocol("queuepair") + VirtualMachineVMCIDeviceProtocolDatagram = VirtualMachineVMCIDeviceProtocol("datagram") + VirtualMachineVMCIDeviceProtocolStream = VirtualMachineVMCIDeviceProtocol("stream") + VirtualMachineVMCIDeviceProtocolAnyProtocol = VirtualMachineVMCIDeviceProtocol("anyProtocol") +) + +func init() { + t["VirtualMachineVMCIDeviceProtocol"] = reflect.TypeOf((*VirtualMachineVMCIDeviceProtocol)(nil)).Elem() +} + +type VirtualMachineVideoCardUse3dRenderer string + +const ( + VirtualMachineVideoCardUse3dRendererAutomatic = VirtualMachineVideoCardUse3dRenderer("automatic") + VirtualMachineVideoCardUse3dRendererSoftware = VirtualMachineVideoCardUse3dRenderer("software") + VirtualMachineVideoCardUse3dRendererHardware = VirtualMachineVideoCardUse3dRenderer("hardware") +) + +func init() { + t["VirtualMachineVideoCardUse3dRenderer"] = reflect.TypeOf((*VirtualMachineVideoCardUse3dRenderer)(nil)).Elem() +} + +type VirtualMachineWindowsQuiesceSpecVssBackupContext string + +const ( + VirtualMachineWindowsQuiesceSpecVssBackupContextCtx_auto = VirtualMachineWindowsQuiesceSpecVssBackupContext("ctx_auto") + VirtualMachineWindowsQuiesceSpecVssBackupContextCtx_backup = VirtualMachineWindowsQuiesceSpecVssBackupContext("ctx_backup") + VirtualMachineWindowsQuiesceSpecVssBackupContextCtx_file_share_backup = VirtualMachineWindowsQuiesceSpecVssBackupContext("ctx_file_share_backup") +) + +func init() { + t["VirtualMachineWindowsQuiesceSpecVssBackupContext"] = reflect.TypeOf((*VirtualMachineWindowsQuiesceSpecVssBackupContext)(nil)).Elem() +} + +type VirtualPointingDeviceHostChoice string + +const ( + VirtualPointingDeviceHostChoiceAutodetect = VirtualPointingDeviceHostChoice("autodetect") + VirtualPointingDeviceHostChoiceIntellimouseExplorer = VirtualPointingDeviceHostChoice("intellimouseExplorer") + VirtualPointingDeviceHostChoiceIntellimousePs2 = VirtualPointingDeviceHostChoice("intellimousePs2") + VirtualPointingDeviceHostChoiceLogitechMouseman = VirtualPointingDeviceHostChoice("logitechMouseman") + VirtualPointingDeviceHostChoiceMicrosoft_serial = VirtualPointingDeviceHostChoice("microsoft_serial") + VirtualPointingDeviceHostChoiceMouseSystems = VirtualPointingDeviceHostChoice("mouseSystems") + VirtualPointingDeviceHostChoiceMousemanSerial = VirtualPointingDeviceHostChoice("mousemanSerial") + VirtualPointingDeviceHostChoicePs2 = VirtualPointingDeviceHostChoice("ps2") +) + +func init() { + t["VirtualPointingDeviceHostChoice"] = reflect.TypeOf((*VirtualPointingDeviceHostChoice)(nil)).Elem() +} + +type VirtualSCSISharing string + +const ( + VirtualSCSISharingNoSharing = VirtualSCSISharing("noSharing") + VirtualSCSISharingVirtualSharing = VirtualSCSISharing("virtualSharing") + VirtualSCSISharingPhysicalSharing = VirtualSCSISharing("physicalSharing") +) + +func init() { + t["VirtualSCSISharing"] = reflect.TypeOf((*VirtualSCSISharing)(nil)).Elem() +} + +type VirtualSerialPortEndPoint string + +const ( + VirtualSerialPortEndPointClient = VirtualSerialPortEndPoint("client") + VirtualSerialPortEndPointServer = VirtualSerialPortEndPoint("server") +) + +func init() { + t["VirtualSerialPortEndPoint"] = reflect.TypeOf((*VirtualSerialPortEndPoint)(nil)).Elem() +} + +type VirtualVmxnet3VrdmaOptionDeviceProtocols string + +const ( + VirtualVmxnet3VrdmaOptionDeviceProtocolsRocev1 = VirtualVmxnet3VrdmaOptionDeviceProtocols("rocev1") + VirtualVmxnet3VrdmaOptionDeviceProtocolsRocev2 = VirtualVmxnet3VrdmaOptionDeviceProtocols("rocev2") +) + +func init() { + t["VirtualVmxnet3VrdmaOptionDeviceProtocols"] = reflect.TypeOf((*VirtualVmxnet3VrdmaOptionDeviceProtocols)(nil)).Elem() +} + +type VmDasBeingResetEventReasonCode string + +const ( + VmDasBeingResetEventReasonCodeVmtoolsHeartbeatFailure = VmDasBeingResetEventReasonCode("vmtoolsHeartbeatFailure") + VmDasBeingResetEventReasonCodeAppHeartbeatFailure = VmDasBeingResetEventReasonCode("appHeartbeatFailure") + VmDasBeingResetEventReasonCodeAppImmediateResetRequest = VmDasBeingResetEventReasonCode("appImmediateResetRequest") + VmDasBeingResetEventReasonCodeVmcpResetApdCleared = VmDasBeingResetEventReasonCode("vmcpResetApdCleared") +) + +func init() { + t["VmDasBeingResetEventReasonCode"] = reflect.TypeOf((*VmDasBeingResetEventReasonCode)(nil)).Elem() +} + +type VmFailedStartingSecondaryEventFailureReason string + +const ( + VmFailedStartingSecondaryEventFailureReasonIncompatibleHost = VmFailedStartingSecondaryEventFailureReason("incompatibleHost") + VmFailedStartingSecondaryEventFailureReasonLoginFailed = VmFailedStartingSecondaryEventFailureReason("loginFailed") + VmFailedStartingSecondaryEventFailureReasonRegisterVmFailed = VmFailedStartingSecondaryEventFailureReason("registerVmFailed") + VmFailedStartingSecondaryEventFailureReasonMigrateFailed = VmFailedStartingSecondaryEventFailureReason("migrateFailed") +) + +func init() { + t["VmFailedStartingSecondaryEventFailureReason"] = reflect.TypeOf((*VmFailedStartingSecondaryEventFailureReason)(nil)).Elem() +} + +type VmFaultToleranceConfigIssueReasonForIssue string + +const ( + VmFaultToleranceConfigIssueReasonForIssueHaNotEnabled = VmFaultToleranceConfigIssueReasonForIssue("haNotEnabled") + VmFaultToleranceConfigIssueReasonForIssueMoreThanOneSecondary = VmFaultToleranceConfigIssueReasonForIssue("moreThanOneSecondary") + VmFaultToleranceConfigIssueReasonForIssueRecordReplayNotSupported = VmFaultToleranceConfigIssueReasonForIssue("recordReplayNotSupported") + VmFaultToleranceConfigIssueReasonForIssueReplayNotSupported = VmFaultToleranceConfigIssueReasonForIssue("replayNotSupported") + VmFaultToleranceConfigIssueReasonForIssueTemplateVm = VmFaultToleranceConfigIssueReasonForIssue("templateVm") + VmFaultToleranceConfigIssueReasonForIssueMultipleVCPU = VmFaultToleranceConfigIssueReasonForIssue("multipleVCPU") + VmFaultToleranceConfigIssueReasonForIssueHostInactive = VmFaultToleranceConfigIssueReasonForIssue("hostInactive") + VmFaultToleranceConfigIssueReasonForIssueFtUnsupportedHardware = VmFaultToleranceConfigIssueReasonForIssue("ftUnsupportedHardware") + VmFaultToleranceConfigIssueReasonForIssueFtUnsupportedProduct = VmFaultToleranceConfigIssueReasonForIssue("ftUnsupportedProduct") + VmFaultToleranceConfigIssueReasonForIssueMissingVMotionNic = VmFaultToleranceConfigIssueReasonForIssue("missingVMotionNic") + VmFaultToleranceConfigIssueReasonForIssueMissingFTLoggingNic = VmFaultToleranceConfigIssueReasonForIssue("missingFTLoggingNic") + VmFaultToleranceConfigIssueReasonForIssueThinDisk = VmFaultToleranceConfigIssueReasonForIssue("thinDisk") + VmFaultToleranceConfigIssueReasonForIssueVerifySSLCertificateFlagNotSet = VmFaultToleranceConfigIssueReasonForIssue("verifySSLCertificateFlagNotSet") + VmFaultToleranceConfigIssueReasonForIssueHasSnapshots = VmFaultToleranceConfigIssueReasonForIssue("hasSnapshots") + VmFaultToleranceConfigIssueReasonForIssueNoConfig = VmFaultToleranceConfigIssueReasonForIssue("noConfig") + VmFaultToleranceConfigIssueReasonForIssueFtSecondaryVm = VmFaultToleranceConfigIssueReasonForIssue("ftSecondaryVm") + VmFaultToleranceConfigIssueReasonForIssueHasLocalDisk = VmFaultToleranceConfigIssueReasonForIssue("hasLocalDisk") + VmFaultToleranceConfigIssueReasonForIssueEsxAgentVm = VmFaultToleranceConfigIssueReasonForIssue("esxAgentVm") + VmFaultToleranceConfigIssueReasonForIssueVideo3dEnabled = VmFaultToleranceConfigIssueReasonForIssue("video3dEnabled") + VmFaultToleranceConfigIssueReasonForIssueHasUnsupportedDisk = VmFaultToleranceConfigIssueReasonForIssue("hasUnsupportedDisk") + VmFaultToleranceConfigIssueReasonForIssueInsufficientBandwidth = VmFaultToleranceConfigIssueReasonForIssue("insufficientBandwidth") + VmFaultToleranceConfigIssueReasonForIssueHasNestedHVConfiguration = VmFaultToleranceConfigIssueReasonForIssue("hasNestedHVConfiguration") + VmFaultToleranceConfigIssueReasonForIssueHasVFlashConfiguration = VmFaultToleranceConfigIssueReasonForIssue("hasVFlashConfiguration") + VmFaultToleranceConfigIssueReasonForIssueUnsupportedProduct = VmFaultToleranceConfigIssueReasonForIssue("unsupportedProduct") + VmFaultToleranceConfigIssueReasonForIssueCpuHvUnsupported = VmFaultToleranceConfigIssueReasonForIssue("cpuHvUnsupported") + VmFaultToleranceConfigIssueReasonForIssueCpuHwmmuUnsupported = VmFaultToleranceConfigIssueReasonForIssue("cpuHwmmuUnsupported") + VmFaultToleranceConfigIssueReasonForIssueCpuHvDisabled = VmFaultToleranceConfigIssueReasonForIssue("cpuHvDisabled") + VmFaultToleranceConfigIssueReasonForIssueHasEFIFirmware = VmFaultToleranceConfigIssueReasonForIssue("hasEFIFirmware") + VmFaultToleranceConfigIssueReasonForIssueTooManyVCPUs = VmFaultToleranceConfigIssueReasonForIssue("tooManyVCPUs") + VmFaultToleranceConfigIssueReasonForIssueTooMuchMemory = VmFaultToleranceConfigIssueReasonForIssue("tooMuchMemory") +) + +func init() { + t["VmFaultToleranceConfigIssueReasonForIssue"] = reflect.TypeOf((*VmFaultToleranceConfigIssueReasonForIssue)(nil)).Elem() +} + +type VmFaultToleranceInvalidFileBackingDeviceType string + +const ( + VmFaultToleranceInvalidFileBackingDeviceTypeVirtualFloppy = VmFaultToleranceInvalidFileBackingDeviceType("virtualFloppy") + VmFaultToleranceInvalidFileBackingDeviceTypeVirtualCdrom = VmFaultToleranceInvalidFileBackingDeviceType("virtualCdrom") + VmFaultToleranceInvalidFileBackingDeviceTypeVirtualSerialPort = VmFaultToleranceInvalidFileBackingDeviceType("virtualSerialPort") + VmFaultToleranceInvalidFileBackingDeviceTypeVirtualParallelPort = VmFaultToleranceInvalidFileBackingDeviceType("virtualParallelPort") + VmFaultToleranceInvalidFileBackingDeviceTypeVirtualDisk = VmFaultToleranceInvalidFileBackingDeviceType("virtualDisk") +) + +func init() { + t["VmFaultToleranceInvalidFileBackingDeviceType"] = reflect.TypeOf((*VmFaultToleranceInvalidFileBackingDeviceType)(nil)).Elem() +} + +type VmShutdownOnIsolationEventOperation string + +const ( + VmShutdownOnIsolationEventOperationShutdown = VmShutdownOnIsolationEventOperation("shutdown") + VmShutdownOnIsolationEventOperationPoweredOff = VmShutdownOnIsolationEventOperation("poweredOff") +) + +func init() { + t["VmShutdownOnIsolationEventOperation"] = reflect.TypeOf((*VmShutdownOnIsolationEventOperation)(nil)).Elem() +} + +type VmwareDistributedVirtualSwitchPvlanPortType string + +const ( + VmwareDistributedVirtualSwitchPvlanPortTypePromiscuous = VmwareDistributedVirtualSwitchPvlanPortType("promiscuous") + VmwareDistributedVirtualSwitchPvlanPortTypeIsolated = VmwareDistributedVirtualSwitchPvlanPortType("isolated") + VmwareDistributedVirtualSwitchPvlanPortTypeCommunity = VmwareDistributedVirtualSwitchPvlanPortType("community") +) + +func init() { + t["VmwareDistributedVirtualSwitchPvlanPortType"] = reflect.TypeOf((*VmwareDistributedVirtualSwitchPvlanPortType)(nil)).Elem() +} + +type VsanDiskIssueType string + +const ( + VsanDiskIssueTypeNonExist = VsanDiskIssueType("nonExist") + VsanDiskIssueTypeStampMismatch = VsanDiskIssueType("stampMismatch") + VsanDiskIssueTypeUnknown = VsanDiskIssueType("unknown") +) + +func init() { + t["VsanDiskIssueType"] = reflect.TypeOf((*VsanDiskIssueType)(nil)).Elem() +} + +type VsanHostDecommissionModeObjectAction string + +const ( + VsanHostDecommissionModeObjectActionNoAction = VsanHostDecommissionModeObjectAction("noAction") + VsanHostDecommissionModeObjectActionEnsureObjectAccessibility = VsanHostDecommissionModeObjectAction("ensureObjectAccessibility") + VsanHostDecommissionModeObjectActionEvacuateAllData = VsanHostDecommissionModeObjectAction("evacuateAllData") +) + +func init() { + t["VsanHostDecommissionModeObjectAction"] = reflect.TypeOf((*VsanHostDecommissionModeObjectAction)(nil)).Elem() +} + +type VsanHostDiskResultState string + +const ( + VsanHostDiskResultStateInUse = VsanHostDiskResultState("inUse") + VsanHostDiskResultStateEligible = VsanHostDiskResultState("eligible") + VsanHostDiskResultStateIneligible = VsanHostDiskResultState("ineligible") +) + +func init() { + t["VsanHostDiskResultState"] = reflect.TypeOf((*VsanHostDiskResultState)(nil)).Elem() +} + +type VsanHostHealthState string + +const ( + VsanHostHealthStateUnknown = VsanHostHealthState("unknown") + VsanHostHealthStateHealthy = VsanHostHealthState("healthy") + VsanHostHealthStateUnhealthy = VsanHostHealthState("unhealthy") +) + +func init() { + t["VsanHostHealthState"] = reflect.TypeOf((*VsanHostHealthState)(nil)).Elem() +} + +type VsanHostNodeState string + +const ( + VsanHostNodeStateError = VsanHostNodeState("error") + VsanHostNodeStateDisabled = VsanHostNodeState("disabled") + VsanHostNodeStateAgent = VsanHostNodeState("agent") + VsanHostNodeStateMaster = VsanHostNodeState("master") + VsanHostNodeStateBackup = VsanHostNodeState("backup") + VsanHostNodeStateStarting = VsanHostNodeState("starting") + VsanHostNodeStateStopping = VsanHostNodeState("stopping") + VsanHostNodeStateEnteringMaintenanceMode = VsanHostNodeState("enteringMaintenanceMode") + VsanHostNodeStateExitingMaintenanceMode = VsanHostNodeState("exitingMaintenanceMode") + VsanHostNodeStateDecommissioning = VsanHostNodeState("decommissioning") +) + +func init() { + t["VsanHostNodeState"] = reflect.TypeOf((*VsanHostNodeState)(nil)).Elem() +} + +type VsanUpgradeSystemUpgradeHistoryDiskGroupOpType string + +const ( + VsanUpgradeSystemUpgradeHistoryDiskGroupOpTypeAdd = VsanUpgradeSystemUpgradeHistoryDiskGroupOpType("add") + VsanUpgradeSystemUpgradeHistoryDiskGroupOpTypeRemove = VsanUpgradeSystemUpgradeHistoryDiskGroupOpType("remove") +) + +func init() { + t["VsanUpgradeSystemUpgradeHistoryDiskGroupOpType"] = reflect.TypeOf((*VsanUpgradeSystemUpgradeHistoryDiskGroupOpType)(nil)).Elem() +} + +type WeekOfMonth string + +const ( + WeekOfMonthFirst = WeekOfMonth("first") + WeekOfMonthSecond = WeekOfMonth("second") + WeekOfMonthThird = WeekOfMonth("third") + WeekOfMonthFourth = WeekOfMonth("fourth") + WeekOfMonthLast = WeekOfMonth("last") +) + +func init() { + t["WeekOfMonth"] = reflect.TypeOf((*WeekOfMonth)(nil)).Elem() +} + +type WillLoseHAProtectionResolution string + +const ( + WillLoseHAProtectionResolutionSvmotion = WillLoseHAProtectionResolution("svmotion") + WillLoseHAProtectionResolutionRelocate = WillLoseHAProtectionResolution("relocate") +) + +func init() { + t["WillLoseHAProtectionResolution"] = reflect.TypeOf((*WillLoseHAProtectionResolution)(nil)).Elem() +} + +type VslmVStorageObjectControlFlag string + +const ( + VslmVStorageObjectControlFlagKeepAfterDeleteVm = VslmVStorageObjectControlFlag("keepAfterDeleteVm") + VslmVStorageObjectControlFlagDisableRelocation = VslmVStorageObjectControlFlag("disableRelocation") + VslmVStorageObjectControlFlagEnableChangedBlockTracking = VslmVStorageObjectControlFlag("enableChangedBlockTracking") +) + +func init() { + t["vslmVStorageObjectControlFlag"] = reflect.TypeOf((*VslmVStorageObjectControlFlag)(nil)).Elem() +} diff --git a/vendor/github.com/vmware/govmomi/vim25/types/fault.go b/vendor/github.com/vmware/govmomi/vim25/types/fault.go new file mode 100644 index 0000000..c2503fa --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/types/fault.go @@ -0,0 +1,32 @@ +/* +Copyright (c) 2015 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package types + +type HasFault interface { + Fault() BaseMethodFault +} + +func IsFileNotFound(err error) bool { + if f, ok := err.(HasFault); ok { + switch f.Fault().(type) { + case *FileNotFound: + return true + } + } + + return false +} diff --git a/vendor/github.com/vmware/govmomi/vim25/types/helpers.go b/vendor/github.com/vmware/govmomi/vim25/types/helpers.go new file mode 100644 index 0000000..95c49f3 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/types/helpers.go @@ -0,0 +1,95 @@ +/* +Copyright (c) 2015-2017 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package types + +import ( + "reflect" + "strings" + "time" +) + +func NewBool(v bool) *bool { + return &v +} + +func NewInt32(v int32) *int32 { + return &v +} + +func NewInt64(v int64) *int64 { + return &v +} + +func NewTime(v time.Time) *time.Time { + return &v +} + +func NewReference(r ManagedObjectReference) *ManagedObjectReference { + return &r +} + +func (r ManagedObjectReference) Reference() ManagedObjectReference { + return r +} + +func (r ManagedObjectReference) String() string { + return strings.Join([]string{r.Type, r.Value}, ":") +} + +func (r *ManagedObjectReference) FromString(o string) bool { + s := strings.SplitN(o, ":", 2) + + if len(s) < 2 { + return false + } + + r.Type = s[0] + r.Value = s[1] + + return true +} + +func (c *PerfCounterInfo) Name() string { + return c.GroupInfo.GetElementDescription().Key + "." + c.NameInfo.GetElementDescription().Key + "." + string(c.RollupType) +} + +func defaultResourceAllocationInfo() ResourceAllocationInfo { + return ResourceAllocationInfo{ + Reservation: NewInt64(0), + ExpandableReservation: NewBool(true), + Limit: NewInt64(-1), + Shares: &SharesInfo{ + Level: SharesLevelNormal, + }, + } +} + +// DefaultResourceConfigSpec returns a ResourceConfigSpec populated with the same default field values as vCenter. +// Note that the wsdl marks these fields as optional, but they are required to be set when creating a resource pool. +// They are only optional when updating a resource pool. +func DefaultResourceConfigSpec() ResourceConfigSpec { + return ResourceConfigSpec{ + CpuAllocation: defaultResourceAllocationInfo(), + MemoryAllocation: defaultResourceAllocationInfo(), + } +} + +func init() { + // Known 6.5 issue where this event type is sent even though it is internal. + // This workaround allows us to unmarshal and avoid NPEs. + t["HostSubSpecificationUpdateEvent"] = reflect.TypeOf((*HostEvent)(nil)).Elem() +} diff --git a/vendor/github.com/vmware/govmomi/vim25/types/if.go b/vendor/github.com/vmware/govmomi/vim25/types/if.go new file mode 100644 index 0000000..9b377c9 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/types/if.go @@ -0,0 +1,3503 @@ +/* +Copyright (c) 2014-2018 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package types + +import "reflect" + +func (b *Action) GetAction() *Action { return b } + +type BaseAction interface { + GetAction() *Action +} + +func init() { + t["BaseAction"] = reflect.TypeOf((*Action)(nil)).Elem() +} + +func (b *ActiveDirectoryFault) GetActiveDirectoryFault() *ActiveDirectoryFault { return b } + +type BaseActiveDirectoryFault interface { + GetActiveDirectoryFault() *ActiveDirectoryFault +} + +func init() { + t["BaseActiveDirectoryFault"] = reflect.TypeOf((*ActiveDirectoryFault)(nil)).Elem() +} + +func (b *AlarmAction) GetAlarmAction() *AlarmAction { return b } + +type BaseAlarmAction interface { + GetAlarmAction() *AlarmAction +} + +func init() { + t["BaseAlarmAction"] = reflect.TypeOf((*AlarmAction)(nil)).Elem() +} + +func (b *AlarmEvent) GetAlarmEvent() *AlarmEvent { return b } + +type BaseAlarmEvent interface { + GetAlarmEvent() *AlarmEvent +} + +func init() { + t["BaseAlarmEvent"] = reflect.TypeOf((*AlarmEvent)(nil)).Elem() +} + +func (b *AlarmExpression) GetAlarmExpression() *AlarmExpression { return b } + +type BaseAlarmExpression interface { + GetAlarmExpression() *AlarmExpression +} + +func init() { + t["BaseAlarmExpression"] = reflect.TypeOf((*AlarmExpression)(nil)).Elem() +} + +func (b *AlarmSpec) GetAlarmSpec() *AlarmSpec { return b } + +type BaseAlarmSpec interface { + GetAlarmSpec() *AlarmSpec +} + +func init() { + t["BaseAlarmSpec"] = reflect.TypeOf((*AlarmSpec)(nil)).Elem() +} + +func (b *AnswerFileCreateSpec) GetAnswerFileCreateSpec() *AnswerFileCreateSpec { return b } + +type BaseAnswerFileCreateSpec interface { + GetAnswerFileCreateSpec() *AnswerFileCreateSpec +} + +func init() { + t["BaseAnswerFileCreateSpec"] = reflect.TypeOf((*AnswerFileCreateSpec)(nil)).Elem() +} + +func (b *ApplyProfile) GetApplyProfile() *ApplyProfile { return b } + +type BaseApplyProfile interface { + GetApplyProfile() *ApplyProfile +} + +func init() { + t["BaseApplyProfile"] = reflect.TypeOf((*ApplyProfile)(nil)).Elem() +} + +func (b *ArrayUpdateSpec) GetArrayUpdateSpec() *ArrayUpdateSpec { return b } + +type BaseArrayUpdateSpec interface { + GetArrayUpdateSpec() *ArrayUpdateSpec +} + +func init() { + t["BaseArrayUpdateSpec"] = reflect.TypeOf((*ArrayUpdateSpec)(nil)).Elem() +} + +func (b *AuthorizationEvent) GetAuthorizationEvent() *AuthorizationEvent { return b } + +type BaseAuthorizationEvent interface { + GetAuthorizationEvent() *AuthorizationEvent +} + +func init() { + t["BaseAuthorizationEvent"] = reflect.TypeOf((*AuthorizationEvent)(nil)).Elem() +} + +func (b *BaseConfigInfo) GetBaseConfigInfo() *BaseConfigInfo { return b } + +type BaseBaseConfigInfo interface { + GetBaseConfigInfo() *BaseConfigInfo +} + +func init() { + t["BaseBaseConfigInfo"] = reflect.TypeOf((*BaseConfigInfo)(nil)).Elem() +} + +func (b *BaseConfigInfoBackingInfo) GetBaseConfigInfoBackingInfo() *BaseConfigInfoBackingInfo { + return b +} + +type BaseBaseConfigInfoBackingInfo interface { + GetBaseConfigInfoBackingInfo() *BaseConfigInfoBackingInfo +} + +func init() { + t["BaseBaseConfigInfoBackingInfo"] = reflect.TypeOf((*BaseConfigInfoBackingInfo)(nil)).Elem() +} + +func (b *BaseConfigInfoFileBackingInfo) GetBaseConfigInfoFileBackingInfo() *BaseConfigInfoFileBackingInfo { + return b +} + +type BaseBaseConfigInfoFileBackingInfo interface { + GetBaseConfigInfoFileBackingInfo() *BaseConfigInfoFileBackingInfo +} + +func init() { + t["BaseBaseConfigInfoFileBackingInfo"] = reflect.TypeOf((*BaseConfigInfoFileBackingInfo)(nil)).Elem() +} + +func (b *CannotAccessNetwork) GetCannotAccessNetwork() *CannotAccessNetwork { return b } + +type BaseCannotAccessNetwork interface { + GetCannotAccessNetwork() *CannotAccessNetwork +} + +func init() { + t["BaseCannotAccessNetwork"] = reflect.TypeOf((*CannotAccessNetwork)(nil)).Elem() +} + +func (b *CannotAccessVmComponent) GetCannotAccessVmComponent() *CannotAccessVmComponent { return b } + +type BaseCannotAccessVmComponent interface { + GetCannotAccessVmComponent() *CannotAccessVmComponent +} + +func init() { + t["BaseCannotAccessVmComponent"] = reflect.TypeOf((*CannotAccessVmComponent)(nil)).Elem() +} + +func (b *CannotAccessVmDevice) GetCannotAccessVmDevice() *CannotAccessVmDevice { return b } + +type BaseCannotAccessVmDevice interface { + GetCannotAccessVmDevice() *CannotAccessVmDevice +} + +func init() { + t["BaseCannotAccessVmDevice"] = reflect.TypeOf((*CannotAccessVmDevice)(nil)).Elem() +} + +func (b *CannotAccessVmDisk) GetCannotAccessVmDisk() *CannotAccessVmDisk { return b } + +type BaseCannotAccessVmDisk interface { + GetCannotAccessVmDisk() *CannotAccessVmDisk +} + +func init() { + t["BaseCannotAccessVmDisk"] = reflect.TypeOf((*CannotAccessVmDisk)(nil)).Elem() +} + +func (b *CannotMoveVsanEnabledHost) GetCannotMoveVsanEnabledHost() *CannotMoveVsanEnabledHost { + return b +} + +type BaseCannotMoveVsanEnabledHost interface { + GetCannotMoveVsanEnabledHost() *CannotMoveVsanEnabledHost +} + +func init() { + t["BaseCannotMoveVsanEnabledHost"] = reflect.TypeOf((*CannotMoveVsanEnabledHost)(nil)).Elem() +} + +func (b *ClusterAction) GetClusterAction() *ClusterAction { return b } + +type BaseClusterAction interface { + GetClusterAction() *ClusterAction +} + +func init() { + t["BaseClusterAction"] = reflect.TypeOf((*ClusterAction)(nil)).Elem() +} + +func (b *ClusterComputeResourceValidationResultBase) GetClusterComputeResourceValidationResultBase() *ClusterComputeResourceValidationResultBase { + return b +} + +type BaseClusterComputeResourceValidationResultBase interface { + GetClusterComputeResourceValidationResultBase() *ClusterComputeResourceValidationResultBase +} + +func init() { + t["BaseClusterComputeResourceValidationResultBase"] = reflect.TypeOf((*ClusterComputeResourceValidationResultBase)(nil)).Elem() +} + +func (b *ClusterDasAdmissionControlInfo) GetClusterDasAdmissionControlInfo() *ClusterDasAdmissionControlInfo { + return b +} + +type BaseClusterDasAdmissionControlInfo interface { + GetClusterDasAdmissionControlInfo() *ClusterDasAdmissionControlInfo +} + +func init() { + t["BaseClusterDasAdmissionControlInfo"] = reflect.TypeOf((*ClusterDasAdmissionControlInfo)(nil)).Elem() +} + +func (b *ClusterDasAdmissionControlPolicy) GetClusterDasAdmissionControlPolicy() *ClusterDasAdmissionControlPolicy { + return b +} + +type BaseClusterDasAdmissionControlPolicy interface { + GetClusterDasAdmissionControlPolicy() *ClusterDasAdmissionControlPolicy +} + +func init() { + t["BaseClusterDasAdmissionControlPolicy"] = reflect.TypeOf((*ClusterDasAdmissionControlPolicy)(nil)).Elem() +} + +func (b *ClusterDasAdvancedRuntimeInfo) GetClusterDasAdvancedRuntimeInfo() *ClusterDasAdvancedRuntimeInfo { + return b +} + +type BaseClusterDasAdvancedRuntimeInfo interface { + GetClusterDasAdvancedRuntimeInfo() *ClusterDasAdvancedRuntimeInfo +} + +func init() { + t["BaseClusterDasAdvancedRuntimeInfo"] = reflect.TypeOf((*ClusterDasAdvancedRuntimeInfo)(nil)).Elem() +} + +func (b *ClusterDasData) GetClusterDasData() *ClusterDasData { return b } + +type BaseClusterDasData interface { + GetClusterDasData() *ClusterDasData +} + +func init() { + t["BaseClusterDasData"] = reflect.TypeOf((*ClusterDasData)(nil)).Elem() +} + +func (b *ClusterDasHostInfo) GetClusterDasHostInfo() *ClusterDasHostInfo { return b } + +type BaseClusterDasHostInfo interface { + GetClusterDasHostInfo() *ClusterDasHostInfo +} + +func init() { + t["BaseClusterDasHostInfo"] = reflect.TypeOf((*ClusterDasHostInfo)(nil)).Elem() +} + +func (b *ClusterDrsFaultsFaultsByVm) GetClusterDrsFaultsFaultsByVm() *ClusterDrsFaultsFaultsByVm { + return b +} + +type BaseClusterDrsFaultsFaultsByVm interface { + GetClusterDrsFaultsFaultsByVm() *ClusterDrsFaultsFaultsByVm +} + +func init() { + t["BaseClusterDrsFaultsFaultsByVm"] = reflect.TypeOf((*ClusterDrsFaultsFaultsByVm)(nil)).Elem() +} + +func (b *ClusterEvent) GetClusterEvent() *ClusterEvent { return b } + +type BaseClusterEvent interface { + GetClusterEvent() *ClusterEvent +} + +func init() { + t["BaseClusterEvent"] = reflect.TypeOf((*ClusterEvent)(nil)).Elem() +} + +func (b *ClusterGroupInfo) GetClusterGroupInfo() *ClusterGroupInfo { return b } + +type BaseClusterGroupInfo interface { + GetClusterGroupInfo() *ClusterGroupInfo +} + +func init() { + t["BaseClusterGroupInfo"] = reflect.TypeOf((*ClusterGroupInfo)(nil)).Elem() +} + +func (b *ClusterOvercommittedEvent) GetClusterOvercommittedEvent() *ClusterOvercommittedEvent { + return b +} + +type BaseClusterOvercommittedEvent interface { + GetClusterOvercommittedEvent() *ClusterOvercommittedEvent +} + +func init() { + t["BaseClusterOvercommittedEvent"] = reflect.TypeOf((*ClusterOvercommittedEvent)(nil)).Elem() +} + +func (b *ClusterProfileConfigSpec) GetClusterProfileConfigSpec() *ClusterProfileConfigSpec { return b } + +type BaseClusterProfileConfigSpec interface { + GetClusterProfileConfigSpec() *ClusterProfileConfigSpec +} + +func init() { + t["BaseClusterProfileConfigSpec"] = reflect.TypeOf((*ClusterProfileConfigSpec)(nil)).Elem() +} + +func (b *ClusterProfileCreateSpec) GetClusterProfileCreateSpec() *ClusterProfileCreateSpec { return b } + +type BaseClusterProfileCreateSpec interface { + GetClusterProfileCreateSpec() *ClusterProfileCreateSpec +} + +func init() { + t["BaseClusterProfileCreateSpec"] = reflect.TypeOf((*ClusterProfileCreateSpec)(nil)).Elem() +} + +func (b *ClusterRuleInfo) GetClusterRuleInfo() *ClusterRuleInfo { return b } + +type BaseClusterRuleInfo interface { + GetClusterRuleInfo() *ClusterRuleInfo +} + +func init() { + t["BaseClusterRuleInfo"] = reflect.TypeOf((*ClusterRuleInfo)(nil)).Elem() +} + +func (b *ClusterSlotPolicy) GetClusterSlotPolicy() *ClusterSlotPolicy { return b } + +type BaseClusterSlotPolicy interface { + GetClusterSlotPolicy() *ClusterSlotPolicy +} + +func init() { + t["BaseClusterSlotPolicy"] = reflect.TypeOf((*ClusterSlotPolicy)(nil)).Elem() +} + +func (b *ClusterStatusChangedEvent) GetClusterStatusChangedEvent() *ClusterStatusChangedEvent { + return b +} + +type BaseClusterStatusChangedEvent interface { + GetClusterStatusChangedEvent() *ClusterStatusChangedEvent +} + +func init() { + t["BaseClusterStatusChangedEvent"] = reflect.TypeOf((*ClusterStatusChangedEvent)(nil)).Elem() +} + +func (b *ComputeResourceConfigInfo) GetComputeResourceConfigInfo() *ComputeResourceConfigInfo { + return b +} + +type BaseComputeResourceConfigInfo interface { + GetComputeResourceConfigInfo() *ComputeResourceConfigInfo +} + +func init() { + t["BaseComputeResourceConfigInfo"] = reflect.TypeOf((*ComputeResourceConfigInfo)(nil)).Elem() +} + +func (b *ComputeResourceConfigSpec) GetComputeResourceConfigSpec() *ComputeResourceConfigSpec { + return b +} + +type BaseComputeResourceConfigSpec interface { + GetComputeResourceConfigSpec() *ComputeResourceConfigSpec +} + +func init() { + t["BaseComputeResourceConfigSpec"] = reflect.TypeOf((*ComputeResourceConfigSpec)(nil)).Elem() +} + +func (b *ComputeResourceSummary) GetComputeResourceSummary() *ComputeResourceSummary { return b } + +type BaseComputeResourceSummary interface { + GetComputeResourceSummary() *ComputeResourceSummary +} + +func init() { + t["BaseComputeResourceSummary"] = reflect.TypeOf((*ComputeResourceSummary)(nil)).Elem() +} + +func (b *CpuIncompatible) GetCpuIncompatible() *CpuIncompatible { return b } + +type BaseCpuIncompatible interface { + GetCpuIncompatible() *CpuIncompatible +} + +func init() { + t["BaseCpuIncompatible"] = reflect.TypeOf((*CpuIncompatible)(nil)).Elem() +} + +func (b *CryptoSpec) GetCryptoSpec() *CryptoSpec { return b } + +type BaseCryptoSpec interface { + GetCryptoSpec() *CryptoSpec +} + +func init() { + t["BaseCryptoSpec"] = reflect.TypeOf((*CryptoSpec)(nil)).Elem() +} + +func (b *CryptoSpecNoOp) GetCryptoSpecNoOp() *CryptoSpecNoOp { return b } + +type BaseCryptoSpecNoOp interface { + GetCryptoSpecNoOp() *CryptoSpecNoOp +} + +func init() { + t["BaseCryptoSpecNoOp"] = reflect.TypeOf((*CryptoSpecNoOp)(nil)).Elem() +} + +func (b *CustomFieldDefEvent) GetCustomFieldDefEvent() *CustomFieldDefEvent { return b } + +type BaseCustomFieldDefEvent interface { + GetCustomFieldDefEvent() *CustomFieldDefEvent +} + +func init() { + t["BaseCustomFieldDefEvent"] = reflect.TypeOf((*CustomFieldDefEvent)(nil)).Elem() +} + +func (b *CustomFieldEvent) GetCustomFieldEvent() *CustomFieldEvent { return b } + +type BaseCustomFieldEvent interface { + GetCustomFieldEvent() *CustomFieldEvent +} + +func init() { + t["BaseCustomFieldEvent"] = reflect.TypeOf((*CustomFieldEvent)(nil)).Elem() +} + +func (b *CustomFieldValue) GetCustomFieldValue() *CustomFieldValue { return b } + +type BaseCustomFieldValue interface { + GetCustomFieldValue() *CustomFieldValue +} + +func init() { + t["BaseCustomFieldValue"] = reflect.TypeOf((*CustomFieldValue)(nil)).Elem() +} + +func (b *CustomizationEvent) GetCustomizationEvent() *CustomizationEvent { return b } + +type BaseCustomizationEvent interface { + GetCustomizationEvent() *CustomizationEvent +} + +func init() { + t["BaseCustomizationEvent"] = reflect.TypeOf((*CustomizationEvent)(nil)).Elem() +} + +func (b *CustomizationFailed) GetCustomizationFailed() *CustomizationFailed { return b } + +type BaseCustomizationFailed interface { + GetCustomizationFailed() *CustomizationFailed +} + +func init() { + t["BaseCustomizationFailed"] = reflect.TypeOf((*CustomizationFailed)(nil)).Elem() +} + +func (b *CustomizationFault) GetCustomizationFault() *CustomizationFault { return b } + +type BaseCustomizationFault interface { + GetCustomizationFault() *CustomizationFault +} + +func init() { + t["BaseCustomizationFault"] = reflect.TypeOf((*CustomizationFault)(nil)).Elem() +} + +func (b *CustomizationIdentitySettings) GetCustomizationIdentitySettings() *CustomizationIdentitySettings { + return b +} + +type BaseCustomizationIdentitySettings interface { + GetCustomizationIdentitySettings() *CustomizationIdentitySettings +} + +func init() { + t["BaseCustomizationIdentitySettings"] = reflect.TypeOf((*CustomizationIdentitySettings)(nil)).Elem() +} + +func (b *CustomizationIpGenerator) GetCustomizationIpGenerator() *CustomizationIpGenerator { return b } + +type BaseCustomizationIpGenerator interface { + GetCustomizationIpGenerator() *CustomizationIpGenerator +} + +func init() { + t["BaseCustomizationIpGenerator"] = reflect.TypeOf((*CustomizationIpGenerator)(nil)).Elem() +} + +func (b *CustomizationIpV6Generator) GetCustomizationIpV6Generator() *CustomizationIpV6Generator { + return b +} + +type BaseCustomizationIpV6Generator interface { + GetCustomizationIpV6Generator() *CustomizationIpV6Generator +} + +func init() { + t["BaseCustomizationIpV6Generator"] = reflect.TypeOf((*CustomizationIpV6Generator)(nil)).Elem() +} + +func (b *CustomizationName) GetCustomizationName() *CustomizationName { return b } + +type BaseCustomizationName interface { + GetCustomizationName() *CustomizationName +} + +func init() { + t["BaseCustomizationName"] = reflect.TypeOf((*CustomizationName)(nil)).Elem() +} + +func (b *CustomizationOptions) GetCustomizationOptions() *CustomizationOptions { return b } + +type BaseCustomizationOptions interface { + GetCustomizationOptions() *CustomizationOptions +} + +func init() { + t["BaseCustomizationOptions"] = reflect.TypeOf((*CustomizationOptions)(nil)).Elem() +} + +func (b *DVPortSetting) GetDVPortSetting() *DVPortSetting { return b } + +type BaseDVPortSetting interface { + GetDVPortSetting() *DVPortSetting +} + +func init() { + t["BaseDVPortSetting"] = reflect.TypeOf((*DVPortSetting)(nil)).Elem() +} + +func (b *DVPortgroupEvent) GetDVPortgroupEvent() *DVPortgroupEvent { return b } + +type BaseDVPortgroupEvent interface { + GetDVPortgroupEvent() *DVPortgroupEvent +} + +func init() { + t["BaseDVPortgroupEvent"] = reflect.TypeOf((*DVPortgroupEvent)(nil)).Elem() +} + +func (b *DVPortgroupPolicy) GetDVPortgroupPolicy() *DVPortgroupPolicy { return b } + +type BaseDVPortgroupPolicy interface { + GetDVPortgroupPolicy() *DVPortgroupPolicy +} + +func init() { + t["BaseDVPortgroupPolicy"] = reflect.TypeOf((*DVPortgroupPolicy)(nil)).Elem() +} + +func (b *DVSConfigInfo) GetDVSConfigInfo() *DVSConfigInfo { return b } + +type BaseDVSConfigInfo interface { + GetDVSConfigInfo() *DVSConfigInfo +} + +func init() { + t["BaseDVSConfigInfo"] = reflect.TypeOf((*DVSConfigInfo)(nil)).Elem() +} + +func (b *DVSConfigSpec) GetDVSConfigSpec() *DVSConfigSpec { return b } + +type BaseDVSConfigSpec interface { + GetDVSConfigSpec() *DVSConfigSpec +} + +func init() { + t["BaseDVSConfigSpec"] = reflect.TypeOf((*DVSConfigSpec)(nil)).Elem() +} + +func (b *DVSFeatureCapability) GetDVSFeatureCapability() *DVSFeatureCapability { return b } + +type BaseDVSFeatureCapability interface { + GetDVSFeatureCapability() *DVSFeatureCapability +} + +func init() { + t["BaseDVSFeatureCapability"] = reflect.TypeOf((*DVSFeatureCapability)(nil)).Elem() +} + +func (b *DVSHealthCheckCapability) GetDVSHealthCheckCapability() *DVSHealthCheckCapability { return b } + +type BaseDVSHealthCheckCapability interface { + GetDVSHealthCheckCapability() *DVSHealthCheckCapability +} + +func init() { + t["BaseDVSHealthCheckCapability"] = reflect.TypeOf((*DVSHealthCheckCapability)(nil)).Elem() +} + +func (b *DVSHealthCheckConfig) GetDVSHealthCheckConfig() *DVSHealthCheckConfig { return b } + +type BaseDVSHealthCheckConfig interface { + GetDVSHealthCheckConfig() *DVSHealthCheckConfig +} + +func init() { + t["BaseDVSHealthCheckConfig"] = reflect.TypeOf((*DVSHealthCheckConfig)(nil)).Elem() +} + +func (b *DVSUplinkPortPolicy) GetDVSUplinkPortPolicy() *DVSUplinkPortPolicy { return b } + +type BaseDVSUplinkPortPolicy interface { + GetDVSUplinkPortPolicy() *DVSUplinkPortPolicy +} + +func init() { + t["BaseDVSUplinkPortPolicy"] = reflect.TypeOf((*DVSUplinkPortPolicy)(nil)).Elem() +} + +func (b *DailyTaskScheduler) GetDailyTaskScheduler() *DailyTaskScheduler { return b } + +type BaseDailyTaskScheduler interface { + GetDailyTaskScheduler() *DailyTaskScheduler +} + +func init() { + t["BaseDailyTaskScheduler"] = reflect.TypeOf((*DailyTaskScheduler)(nil)).Elem() +} + +func (b *DatacenterEvent) GetDatacenterEvent() *DatacenterEvent { return b } + +type BaseDatacenterEvent interface { + GetDatacenterEvent() *DatacenterEvent +} + +func init() { + t["BaseDatacenterEvent"] = reflect.TypeOf((*DatacenterEvent)(nil)).Elem() +} + +func (b *DatastoreEvent) GetDatastoreEvent() *DatastoreEvent { return b } + +type BaseDatastoreEvent interface { + GetDatastoreEvent() *DatastoreEvent +} + +func init() { + t["BaseDatastoreEvent"] = reflect.TypeOf((*DatastoreEvent)(nil)).Elem() +} + +func (b *DatastoreFileEvent) GetDatastoreFileEvent() *DatastoreFileEvent { return b } + +type BaseDatastoreFileEvent interface { + GetDatastoreFileEvent() *DatastoreFileEvent +} + +func init() { + t["BaseDatastoreFileEvent"] = reflect.TypeOf((*DatastoreFileEvent)(nil)).Elem() +} + +func (b *DatastoreInfo) GetDatastoreInfo() *DatastoreInfo { return b } + +type BaseDatastoreInfo interface { + GetDatastoreInfo() *DatastoreInfo +} + +func init() { + t["BaseDatastoreInfo"] = reflect.TypeOf((*DatastoreInfo)(nil)).Elem() +} + +func (b *DatastoreNotWritableOnHost) GetDatastoreNotWritableOnHost() *DatastoreNotWritableOnHost { + return b +} + +type BaseDatastoreNotWritableOnHost interface { + GetDatastoreNotWritableOnHost() *DatastoreNotWritableOnHost +} + +func init() { + t["BaseDatastoreNotWritableOnHost"] = reflect.TypeOf((*DatastoreNotWritableOnHost)(nil)).Elem() +} + +func (b *Description) GetDescription() *Description { return b } + +type BaseDescription interface { + GetDescription() *Description +} + +func init() { + t["BaseDescription"] = reflect.TypeOf((*Description)(nil)).Elem() +} + +func (b *DeviceBackingNotSupported) GetDeviceBackingNotSupported() *DeviceBackingNotSupported { + return b +} + +type BaseDeviceBackingNotSupported interface { + GetDeviceBackingNotSupported() *DeviceBackingNotSupported +} + +func init() { + t["BaseDeviceBackingNotSupported"] = reflect.TypeOf((*DeviceBackingNotSupported)(nil)).Elem() +} + +func (b *DeviceNotSupported) GetDeviceNotSupported() *DeviceNotSupported { return b } + +type BaseDeviceNotSupported interface { + GetDeviceNotSupported() *DeviceNotSupported +} + +func init() { + t["BaseDeviceNotSupported"] = reflect.TypeOf((*DeviceNotSupported)(nil)).Elem() +} + +func (b *DiskNotSupported) GetDiskNotSupported() *DiskNotSupported { return b } + +type BaseDiskNotSupported interface { + GetDiskNotSupported() *DiskNotSupported +} + +func init() { + t["BaseDiskNotSupported"] = reflect.TypeOf((*DiskNotSupported)(nil)).Elem() +} + +func (b *DistributedVirtualSwitchHostMemberBacking) GetDistributedVirtualSwitchHostMemberBacking() *DistributedVirtualSwitchHostMemberBacking { + return b +} + +type BaseDistributedVirtualSwitchHostMemberBacking interface { + GetDistributedVirtualSwitchHostMemberBacking() *DistributedVirtualSwitchHostMemberBacking +} + +func init() { + t["BaseDistributedVirtualSwitchHostMemberBacking"] = reflect.TypeOf((*DistributedVirtualSwitchHostMemberBacking)(nil)).Elem() +} + +func (b *DistributedVirtualSwitchManagerHostDvsFilterSpec) GetDistributedVirtualSwitchManagerHostDvsFilterSpec() *DistributedVirtualSwitchManagerHostDvsFilterSpec { + return b +} + +type BaseDistributedVirtualSwitchManagerHostDvsFilterSpec interface { + GetDistributedVirtualSwitchManagerHostDvsFilterSpec() *DistributedVirtualSwitchManagerHostDvsFilterSpec +} + +func init() { + t["BaseDistributedVirtualSwitchManagerHostDvsFilterSpec"] = reflect.TypeOf((*DistributedVirtualSwitchManagerHostDvsFilterSpec)(nil)).Elem() +} + +func (b *DvsEvent) GetDvsEvent() *DvsEvent { return b } + +type BaseDvsEvent interface { + GetDvsEvent() *DvsEvent +} + +func init() { + t["BaseDvsEvent"] = reflect.TypeOf((*DvsEvent)(nil)).Elem() +} + +func (b *DvsFault) GetDvsFault() *DvsFault { return b } + +type BaseDvsFault interface { + GetDvsFault() *DvsFault +} + +func init() { + t["BaseDvsFault"] = reflect.TypeOf((*DvsFault)(nil)).Elem() +} + +func (b *DvsFilterConfig) GetDvsFilterConfig() *DvsFilterConfig { return b } + +type BaseDvsFilterConfig interface { + GetDvsFilterConfig() *DvsFilterConfig + GetDvsTrafficFilterConfig() *DvsTrafficFilterConfig +} + +func init() { + t["BaseDvsFilterConfig"] = reflect.TypeOf((*DvsFilterConfig)(nil)).Elem() +} + +func (b *DvsHealthStatusChangeEvent) GetDvsHealthStatusChangeEvent() *DvsHealthStatusChangeEvent { + return b +} + +type BaseDvsHealthStatusChangeEvent interface { + GetDvsHealthStatusChangeEvent() *DvsHealthStatusChangeEvent +} + +func init() { + t["BaseDvsHealthStatusChangeEvent"] = reflect.TypeOf((*DvsHealthStatusChangeEvent)(nil)).Elem() +} + +func (b *DvsIpPort) GetDvsIpPort() *DvsIpPort { return b } + +type BaseDvsIpPort interface { + GetDvsIpPort() *DvsIpPort +} + +func init() { + t["BaseDvsIpPort"] = reflect.TypeOf((*DvsIpPort)(nil)).Elem() +} + +func (b *DvsNetworkRuleAction) GetDvsNetworkRuleAction() *DvsNetworkRuleAction { return b } + +type BaseDvsNetworkRuleAction interface { + GetDvsNetworkRuleAction() *DvsNetworkRuleAction +} + +func init() { + t["BaseDvsNetworkRuleAction"] = reflect.TypeOf((*DvsNetworkRuleAction)(nil)).Elem() +} + +func (b *DvsNetworkRuleQualifier) GetDvsNetworkRuleQualifier() *DvsNetworkRuleQualifier { return b } + +type BaseDvsNetworkRuleQualifier interface { + GetDvsNetworkRuleQualifier() *DvsNetworkRuleQualifier + GetDvsIpNetworkRuleQualifier() *DvsIpNetworkRuleQualifier +} + +func init() { + t["BaseDvsNetworkRuleQualifier"] = reflect.TypeOf((*DvsNetworkRuleQualifier)(nil)).Elem() +} + +func (b *DvsIpNetworkRuleQualifier) GetDvsIpNetworkRuleQualifier() *DvsIpNetworkRuleQualifier { + return b +} + +type BaseDvsIpNetworkRuleQualifier interface { + GetDvsIpNetworkRuleQualifier() *DvsIpNetworkRuleQualifier +} + +func (b *DvsTrafficFilterConfig) GetDvsTrafficFilterConfig() *DvsTrafficFilterConfig { return b } + +type BaseDvsTrafficFilterConfig interface { + GetDvsTrafficFilterConfig() *DvsTrafficFilterConfig +} + +func init() { + t["BaseDvsTrafficFilterConfig"] = reflect.TypeOf((*DvsTrafficFilterConfig)(nil)).Elem() +} + +func (b *DvsVNicProfile) GetDvsVNicProfile() *DvsVNicProfile { return b } + +type BaseDvsVNicProfile interface { + GetDvsVNicProfile() *DvsVNicProfile +} + +func init() { + t["BaseDvsVNicProfile"] = reflect.TypeOf((*DvsVNicProfile)(nil)).Elem() +} + +func (b *DynamicData) GetDynamicData() *DynamicData { return b } + +type BaseDynamicData interface { + GetDynamicData() *DynamicData +} + +func init() { + t["BaseDynamicData"] = reflect.TypeOf((*DynamicData)(nil)).Elem() +} + +func (b *EVCAdmissionFailed) GetEVCAdmissionFailed() *EVCAdmissionFailed { return b } + +type BaseEVCAdmissionFailed interface { + GetEVCAdmissionFailed() *EVCAdmissionFailed +} + +func init() { + t["BaseEVCAdmissionFailed"] = reflect.TypeOf((*EVCAdmissionFailed)(nil)).Elem() +} + +func (b *EVCConfigFault) GetEVCConfigFault() *EVCConfigFault { return b } + +type BaseEVCConfigFault interface { + GetEVCConfigFault() *EVCConfigFault +} + +func init() { + t["BaseEVCConfigFault"] = reflect.TypeOf((*EVCConfigFault)(nil)).Elem() +} + +func (b *ElementDescription) GetElementDescription() *ElementDescription { return b } + +type BaseElementDescription interface { + GetElementDescription() *ElementDescription +} + +func init() { + t["BaseElementDescription"] = reflect.TypeOf((*ElementDescription)(nil)).Elem() +} + +func (b *EnteredStandbyModeEvent) GetEnteredStandbyModeEvent() *EnteredStandbyModeEvent { return b } + +type BaseEnteredStandbyModeEvent interface { + GetEnteredStandbyModeEvent() *EnteredStandbyModeEvent +} + +func init() { + t["BaseEnteredStandbyModeEvent"] = reflect.TypeOf((*EnteredStandbyModeEvent)(nil)).Elem() +} + +func (b *EnteringStandbyModeEvent) GetEnteringStandbyModeEvent() *EnteringStandbyModeEvent { return b } + +type BaseEnteringStandbyModeEvent interface { + GetEnteringStandbyModeEvent() *EnteringStandbyModeEvent +} + +func init() { + t["BaseEnteringStandbyModeEvent"] = reflect.TypeOf((*EnteringStandbyModeEvent)(nil)).Elem() +} + +func (b *EntityEventArgument) GetEntityEventArgument() *EntityEventArgument { return b } + +type BaseEntityEventArgument interface { + GetEntityEventArgument() *EntityEventArgument +} + +func init() { + t["BaseEntityEventArgument"] = reflect.TypeOf((*EntityEventArgument)(nil)).Elem() +} + +func (b *Event) GetEvent() *Event { return b } + +type BaseEvent interface { + GetEvent() *Event +} + +func init() { + t["BaseEvent"] = reflect.TypeOf((*Event)(nil)).Elem() +} + +func (b *EventArgument) GetEventArgument() *EventArgument { return b } + +type BaseEventArgument interface { + GetEventArgument() *EventArgument +} + +func init() { + t["BaseEventArgument"] = reflect.TypeOf((*EventArgument)(nil)).Elem() +} + +func (b *ExitStandbyModeFailedEvent) GetExitStandbyModeFailedEvent() *ExitStandbyModeFailedEvent { + return b +} + +type BaseExitStandbyModeFailedEvent interface { + GetExitStandbyModeFailedEvent() *ExitStandbyModeFailedEvent +} + +func init() { + t["BaseExitStandbyModeFailedEvent"] = reflect.TypeOf((*ExitStandbyModeFailedEvent)(nil)).Elem() +} + +func (b *ExitedStandbyModeEvent) GetExitedStandbyModeEvent() *ExitedStandbyModeEvent { return b } + +type BaseExitedStandbyModeEvent interface { + GetExitedStandbyModeEvent() *ExitedStandbyModeEvent +} + +func init() { + t["BaseExitedStandbyModeEvent"] = reflect.TypeOf((*ExitedStandbyModeEvent)(nil)).Elem() +} + +func (b *ExitingStandbyModeEvent) GetExitingStandbyModeEvent() *ExitingStandbyModeEvent { return b } + +type BaseExitingStandbyModeEvent interface { + GetExitingStandbyModeEvent() *ExitingStandbyModeEvent +} + +func init() { + t["BaseExitingStandbyModeEvent"] = reflect.TypeOf((*ExitingStandbyModeEvent)(nil)).Elem() +} + +func (b *ExpiredFeatureLicense) GetExpiredFeatureLicense() *ExpiredFeatureLicense { return b } + +type BaseExpiredFeatureLicense interface { + GetExpiredFeatureLicense() *ExpiredFeatureLicense +} + +func init() { + t["BaseExpiredFeatureLicense"] = reflect.TypeOf((*ExpiredFeatureLicense)(nil)).Elem() +} + +func (b *FaultToleranceConfigInfo) GetFaultToleranceConfigInfo() *FaultToleranceConfigInfo { return b } + +type BaseFaultToleranceConfigInfo interface { + GetFaultToleranceConfigInfo() *FaultToleranceConfigInfo +} + +func init() { + t["BaseFaultToleranceConfigInfo"] = reflect.TypeOf((*FaultToleranceConfigInfo)(nil)).Elem() +} + +func (b *FcoeFault) GetFcoeFault() *FcoeFault { return b } + +type BaseFcoeFault interface { + GetFcoeFault() *FcoeFault +} + +func init() { + t["BaseFcoeFault"] = reflect.TypeOf((*FcoeFault)(nil)).Elem() +} + +func (b *FileBackedVirtualDiskSpec) GetFileBackedVirtualDiskSpec() *FileBackedVirtualDiskSpec { + return b +} + +type BaseFileBackedVirtualDiskSpec interface { + GetFileBackedVirtualDiskSpec() *FileBackedVirtualDiskSpec +} + +func init() { + t["BaseFileBackedVirtualDiskSpec"] = reflect.TypeOf((*FileBackedVirtualDiskSpec)(nil)).Elem() +} + +func (b *FileFault) GetFileFault() *FileFault { return b } + +type BaseFileFault interface { + GetFileFault() *FileFault +} + +func init() { + t["BaseFileFault"] = reflect.TypeOf((*FileFault)(nil)).Elem() +} + +func (b *FileInfo) GetFileInfo() *FileInfo { return b } + +type BaseFileInfo interface { + GetFileInfo() *FileInfo +} + +func init() { + t["BaseFileInfo"] = reflect.TypeOf((*FileInfo)(nil)).Elem() +} + +func (b *FileQuery) GetFileQuery() *FileQuery { return b } + +type BaseFileQuery interface { + GetFileQuery() *FileQuery +} + +func init() { + t["BaseFileQuery"] = reflect.TypeOf((*FileQuery)(nil)).Elem() +} + +func (b *GatewayConnectFault) GetGatewayConnectFault() *GatewayConnectFault { return b } + +type BaseGatewayConnectFault interface { + GetGatewayConnectFault() *GatewayConnectFault +} + +func init() { + t["BaseGatewayConnectFault"] = reflect.TypeOf((*GatewayConnectFault)(nil)).Elem() +} + +func (b *GatewayToHostConnectFault) GetGatewayToHostConnectFault() *GatewayToHostConnectFault { + return b +} + +type BaseGatewayToHostConnectFault interface { + GetGatewayToHostConnectFault() *GatewayToHostConnectFault +} + +func init() { + t["BaseGatewayToHostConnectFault"] = reflect.TypeOf((*GatewayToHostConnectFault)(nil)).Elem() +} + +func (b *GeneralEvent) GetGeneralEvent() *GeneralEvent { return b } + +type BaseGeneralEvent interface { + GetGeneralEvent() *GeneralEvent +} + +func init() { + t["BaseGeneralEvent"] = reflect.TypeOf((*GeneralEvent)(nil)).Elem() +} + +func (b *GuestAuthSubject) GetGuestAuthSubject() *GuestAuthSubject { return b } + +type BaseGuestAuthSubject interface { + GetGuestAuthSubject() *GuestAuthSubject +} + +func init() { + t["BaseGuestAuthSubject"] = reflect.TypeOf((*GuestAuthSubject)(nil)).Elem() +} + +func (b *GuestAuthentication) GetGuestAuthentication() *GuestAuthentication { return b } + +type BaseGuestAuthentication interface { + GetGuestAuthentication() *GuestAuthentication +} + +func init() { + t["BaseGuestAuthentication"] = reflect.TypeOf((*GuestAuthentication)(nil)).Elem() +} + +func (b *GuestFileAttributes) GetGuestFileAttributes() *GuestFileAttributes { return b } + +type BaseGuestFileAttributes interface { + GetGuestFileAttributes() *GuestFileAttributes +} + +func init() { + t["BaseGuestFileAttributes"] = reflect.TypeOf((*GuestFileAttributes)(nil)).Elem() +} + +func (b *GuestOperationsFault) GetGuestOperationsFault() *GuestOperationsFault { return b } + +type BaseGuestOperationsFault interface { + GetGuestOperationsFault() *GuestOperationsFault +} + +func init() { + t["BaseGuestOperationsFault"] = reflect.TypeOf((*GuestOperationsFault)(nil)).Elem() +} + +func (b *GuestProgramSpec) GetGuestProgramSpec() *GuestProgramSpec { return b } + +type BaseGuestProgramSpec interface { + GetGuestProgramSpec() *GuestProgramSpec +} + +func init() { + t["BaseGuestProgramSpec"] = reflect.TypeOf((*GuestProgramSpec)(nil)).Elem() +} + +func (b *GuestRegValueDataSpec) GetGuestRegValueDataSpec() *GuestRegValueDataSpec { return b } + +type BaseGuestRegValueDataSpec interface { + GetGuestRegValueDataSpec() *GuestRegValueDataSpec +} + +func init() { + t["BaseGuestRegValueDataSpec"] = reflect.TypeOf((*GuestRegValueDataSpec)(nil)).Elem() +} + +func (b *GuestRegistryFault) GetGuestRegistryFault() *GuestRegistryFault { return b } + +type BaseGuestRegistryFault interface { + GetGuestRegistryFault() *GuestRegistryFault +} + +func init() { + t["BaseGuestRegistryFault"] = reflect.TypeOf((*GuestRegistryFault)(nil)).Elem() +} + +func (b *GuestRegistryKeyFault) GetGuestRegistryKeyFault() *GuestRegistryKeyFault { return b } + +type BaseGuestRegistryKeyFault interface { + GetGuestRegistryKeyFault() *GuestRegistryKeyFault +} + +func init() { + t["BaseGuestRegistryKeyFault"] = reflect.TypeOf((*GuestRegistryKeyFault)(nil)).Elem() +} + +func (b *GuestRegistryValueFault) GetGuestRegistryValueFault() *GuestRegistryValueFault { return b } + +type BaseGuestRegistryValueFault interface { + GetGuestRegistryValueFault() *GuestRegistryValueFault +} + +func init() { + t["BaseGuestRegistryValueFault"] = reflect.TypeOf((*GuestRegistryValueFault)(nil)).Elem() +} + +func (b *HostAccountSpec) GetHostAccountSpec() *HostAccountSpec { return b } + +type BaseHostAccountSpec interface { + GetHostAccountSpec() *HostAccountSpec +} + +func init() { + t["BaseHostAccountSpec"] = reflect.TypeOf((*HostAccountSpec)(nil)).Elem() +} + +func (b *HostAuthenticationStoreInfo) GetHostAuthenticationStoreInfo() *HostAuthenticationStoreInfo { + return b +} + +type BaseHostAuthenticationStoreInfo interface { + GetHostAuthenticationStoreInfo() *HostAuthenticationStoreInfo +} + +func init() { + t["BaseHostAuthenticationStoreInfo"] = reflect.TypeOf((*HostAuthenticationStoreInfo)(nil)).Elem() +} + +func (b *HostCommunication) GetHostCommunication() *HostCommunication { return b } + +type BaseHostCommunication interface { + GetHostCommunication() *HostCommunication +} + +func init() { + t["BaseHostCommunication"] = reflect.TypeOf((*HostCommunication)(nil)).Elem() +} + +func (b *HostConfigFault) GetHostConfigFault() *HostConfigFault { return b } + +type BaseHostConfigFault interface { + GetHostConfigFault() *HostConfigFault +} + +func init() { + t["BaseHostConfigFault"] = reflect.TypeOf((*HostConfigFault)(nil)).Elem() +} + +func (b *HostConnectFault) GetHostConnectFault() *HostConnectFault { return b } + +type BaseHostConnectFault interface { + GetHostConnectFault() *HostConnectFault +} + +func init() { + t["BaseHostConnectFault"] = reflect.TypeOf((*HostConnectFault)(nil)).Elem() +} + +func (b *HostConnectInfoNetworkInfo) GetHostConnectInfoNetworkInfo() *HostConnectInfoNetworkInfo { + return b +} + +type BaseHostConnectInfoNetworkInfo interface { + GetHostConnectInfoNetworkInfo() *HostConnectInfoNetworkInfo +} + +func init() { + t["BaseHostConnectInfoNetworkInfo"] = reflect.TypeOf((*HostConnectInfoNetworkInfo)(nil)).Elem() +} + +func (b *HostDasEvent) GetHostDasEvent() *HostDasEvent { return b } + +type BaseHostDasEvent interface { + GetHostDasEvent() *HostDasEvent +} + +func init() { + t["BaseHostDasEvent"] = reflect.TypeOf((*HostDasEvent)(nil)).Elem() +} + +func (b *HostDatastoreConnectInfo) GetHostDatastoreConnectInfo() *HostDatastoreConnectInfo { return b } + +type BaseHostDatastoreConnectInfo interface { + GetHostDatastoreConnectInfo() *HostDatastoreConnectInfo +} + +func init() { + t["BaseHostDatastoreConnectInfo"] = reflect.TypeOf((*HostDatastoreConnectInfo)(nil)).Elem() +} + +func (b *HostDevice) GetHostDevice() *HostDevice { return b } + +type BaseHostDevice interface { + GetHostDevice() *HostDevice +} + +func init() { + t["BaseHostDevice"] = reflect.TypeOf((*HostDevice)(nil)).Elem() +} + +func (b *HostDigestInfo) GetHostDigestInfo() *HostDigestInfo { return b } + +type BaseHostDigestInfo interface { + GetHostDigestInfo() *HostDigestInfo +} + +func init() { + t["BaseHostDigestInfo"] = reflect.TypeOf((*HostDigestInfo)(nil)).Elem() +} + +func (b *HostDirectoryStoreInfo) GetHostDirectoryStoreInfo() *HostDirectoryStoreInfo { return b } + +type BaseHostDirectoryStoreInfo interface { + GetHostDirectoryStoreInfo() *HostDirectoryStoreInfo +} + +func init() { + t["BaseHostDirectoryStoreInfo"] = reflect.TypeOf((*HostDirectoryStoreInfo)(nil)).Elem() +} + +func (b *HostDnsConfig) GetHostDnsConfig() *HostDnsConfig { return b } + +type BaseHostDnsConfig interface { + GetHostDnsConfig() *HostDnsConfig +} + +func init() { + t["BaseHostDnsConfig"] = reflect.TypeOf((*HostDnsConfig)(nil)).Elem() +} + +func (b *HostEvent) GetHostEvent() *HostEvent { return b } + +type BaseHostEvent interface { + GetHostEvent() *HostEvent +} + +func init() { + t["BaseHostEvent"] = reflect.TypeOf((*HostEvent)(nil)).Elem() +} + +func (b *HostFibreChannelHba) GetHostFibreChannelHba() *HostFibreChannelHba { return b } + +type BaseHostFibreChannelHba interface { + GetHostFibreChannelHba() *HostFibreChannelHba +} + +func init() { + t["BaseHostFibreChannelHba"] = reflect.TypeOf((*HostFibreChannelHba)(nil)).Elem() +} + +func (b *HostFibreChannelTargetTransport) GetHostFibreChannelTargetTransport() *HostFibreChannelTargetTransport { + return b +} + +type BaseHostFibreChannelTargetTransport interface { + GetHostFibreChannelTargetTransport() *HostFibreChannelTargetTransport +} + +func init() { + t["BaseHostFibreChannelTargetTransport"] = reflect.TypeOf((*HostFibreChannelTargetTransport)(nil)).Elem() +} + +func (b *HostFileSystemVolume) GetHostFileSystemVolume() *HostFileSystemVolume { return b } + +type BaseHostFileSystemVolume interface { + GetHostFileSystemVolume() *HostFileSystemVolume +} + +func init() { + t["BaseHostFileSystemVolume"] = reflect.TypeOf((*HostFileSystemVolume)(nil)).Elem() +} + +func (b *HostHardwareElementInfo) GetHostHardwareElementInfo() *HostHardwareElementInfo { return b } + +type BaseHostHardwareElementInfo interface { + GetHostHardwareElementInfo() *HostHardwareElementInfo +} + +func init() { + t["BaseHostHardwareElementInfo"] = reflect.TypeOf((*HostHardwareElementInfo)(nil)).Elem() +} + +func (b *HostHostBusAdapter) GetHostHostBusAdapter() *HostHostBusAdapter { return b } + +type BaseHostHostBusAdapter interface { + GetHostHostBusAdapter() *HostHostBusAdapter +} + +func init() { + t["BaseHostHostBusAdapter"] = reflect.TypeOf((*HostHostBusAdapter)(nil)).Elem() +} + +func (b *HostIpRouteConfig) GetHostIpRouteConfig() *HostIpRouteConfig { return b } + +type BaseHostIpRouteConfig interface { + GetHostIpRouteConfig() *HostIpRouteConfig +} + +func init() { + t["BaseHostIpRouteConfig"] = reflect.TypeOf((*HostIpRouteConfig)(nil)).Elem() +} + +func (b *HostMemberHealthCheckResult) GetHostMemberHealthCheckResult() *HostMemberHealthCheckResult { + return b +} + +type BaseHostMemberHealthCheckResult interface { + GetHostMemberHealthCheckResult() *HostMemberHealthCheckResult +} + +func init() { + t["BaseHostMemberHealthCheckResult"] = reflect.TypeOf((*HostMemberHealthCheckResult)(nil)).Elem() +} + +func (b *HostMemberUplinkHealthCheckResult) GetHostMemberUplinkHealthCheckResult() *HostMemberUplinkHealthCheckResult { + return b +} + +type BaseHostMemberUplinkHealthCheckResult interface { + GetHostMemberUplinkHealthCheckResult() *HostMemberUplinkHealthCheckResult +} + +func init() { + t["BaseHostMemberUplinkHealthCheckResult"] = reflect.TypeOf((*HostMemberUplinkHealthCheckResult)(nil)).Elem() +} + +func (b *HostMultipathInfoLogicalUnitPolicy) GetHostMultipathInfoLogicalUnitPolicy() *HostMultipathInfoLogicalUnitPolicy { + return b +} + +type BaseHostMultipathInfoLogicalUnitPolicy interface { + GetHostMultipathInfoLogicalUnitPolicy() *HostMultipathInfoLogicalUnitPolicy +} + +func init() { + t["BaseHostMultipathInfoLogicalUnitPolicy"] = reflect.TypeOf((*HostMultipathInfoLogicalUnitPolicy)(nil)).Elem() +} + +func (b *HostNvmeSpec) GetHostNvmeSpec() *HostNvmeSpec { return b } + +type BaseHostNvmeSpec interface { + GetHostNvmeSpec() *HostNvmeSpec +} + +func init() { + t["BaseHostNvmeSpec"] = reflect.TypeOf((*HostNvmeSpec)(nil)).Elem() +} + +func (b *HostNvmeTransportParameters) GetHostNvmeTransportParameters() *HostNvmeTransportParameters { + return b +} + +type BaseHostNvmeTransportParameters interface { + GetHostNvmeTransportParameters() *HostNvmeTransportParameters +} + +func init() { + t["BaseHostNvmeTransportParameters"] = reflect.TypeOf((*HostNvmeTransportParameters)(nil)).Elem() +} + +func (b *HostPciPassthruConfig) GetHostPciPassthruConfig() *HostPciPassthruConfig { return b } + +type BaseHostPciPassthruConfig interface { + GetHostPciPassthruConfig() *HostPciPassthruConfig +} + +func init() { + t["BaseHostPciPassthruConfig"] = reflect.TypeOf((*HostPciPassthruConfig)(nil)).Elem() +} + +func (b *HostPciPassthruInfo) GetHostPciPassthruInfo() *HostPciPassthruInfo { return b } + +type BaseHostPciPassthruInfo interface { + GetHostPciPassthruInfo() *HostPciPassthruInfo +} + +func init() { + t["BaseHostPciPassthruInfo"] = reflect.TypeOf((*HostPciPassthruInfo)(nil)).Elem() +} + +func (b *HostPowerOpFailed) GetHostPowerOpFailed() *HostPowerOpFailed { return b } + +type BaseHostPowerOpFailed interface { + GetHostPowerOpFailed() *HostPowerOpFailed +} + +func init() { + t["BaseHostPowerOpFailed"] = reflect.TypeOf((*HostPowerOpFailed)(nil)).Elem() +} + +func (b *HostProfileConfigSpec) GetHostProfileConfigSpec() *HostProfileConfigSpec { return b } + +type BaseHostProfileConfigSpec interface { + GetHostProfileConfigSpec() *HostProfileConfigSpec +} + +func init() { + t["BaseHostProfileConfigSpec"] = reflect.TypeOf((*HostProfileConfigSpec)(nil)).Elem() +} + +func (b *HostProfilesEntityCustomizations) GetHostProfilesEntityCustomizations() *HostProfilesEntityCustomizations { + return b +} + +type BaseHostProfilesEntityCustomizations interface { + GetHostProfilesEntityCustomizations() *HostProfilesEntityCustomizations +} + +func init() { + t["BaseHostProfilesEntityCustomizations"] = reflect.TypeOf((*HostProfilesEntityCustomizations)(nil)).Elem() +} + +func (b *HostRdmaDeviceBacking) GetHostRdmaDeviceBacking() *HostRdmaDeviceBacking { return b } + +type BaseHostRdmaDeviceBacking interface { + GetHostRdmaDeviceBacking() *HostRdmaDeviceBacking +} + +func init() { + t["BaseHostRdmaDeviceBacking"] = reflect.TypeOf((*HostRdmaDeviceBacking)(nil)).Elem() +} + +func (b *HostSriovDevicePoolInfo) GetHostSriovDevicePoolInfo() *HostSriovDevicePoolInfo { return b } + +type BaseHostSriovDevicePoolInfo interface { + GetHostSriovDevicePoolInfo() *HostSriovDevicePoolInfo +} + +func init() { + t["BaseHostSriovDevicePoolInfo"] = reflect.TypeOf((*HostSriovDevicePoolInfo)(nil)).Elem() +} + +func (b *HostSystemSwapConfigurationSystemSwapOption) GetHostSystemSwapConfigurationSystemSwapOption() *HostSystemSwapConfigurationSystemSwapOption { + return b +} + +type BaseHostSystemSwapConfigurationSystemSwapOption interface { + GetHostSystemSwapConfigurationSystemSwapOption() *HostSystemSwapConfigurationSystemSwapOption +} + +func init() { + t["BaseHostSystemSwapConfigurationSystemSwapOption"] = reflect.TypeOf((*HostSystemSwapConfigurationSystemSwapOption)(nil)).Elem() +} + +func (b *HostTargetTransport) GetHostTargetTransport() *HostTargetTransport { return b } + +type BaseHostTargetTransport interface { + GetHostTargetTransport() *HostTargetTransport +} + +func init() { + t["BaseHostTargetTransport"] = reflect.TypeOf((*HostTargetTransport)(nil)).Elem() +} + +func (b *HostTpmEventDetails) GetHostTpmEventDetails() *HostTpmEventDetails { return b } + +type BaseHostTpmEventDetails interface { + GetHostTpmEventDetails() *HostTpmEventDetails +} + +func init() { + t["BaseHostTpmEventDetails"] = reflect.TypeOf((*HostTpmEventDetails)(nil)).Elem() +} + +func (b *HostVirtualSwitchBridge) GetHostVirtualSwitchBridge() *HostVirtualSwitchBridge { return b } + +type BaseHostVirtualSwitchBridge interface { + GetHostVirtualSwitchBridge() *HostVirtualSwitchBridge +} + +func init() { + t["BaseHostVirtualSwitchBridge"] = reflect.TypeOf((*HostVirtualSwitchBridge)(nil)).Elem() +} + +func (b *HourlyTaskScheduler) GetHourlyTaskScheduler() *HourlyTaskScheduler { return b } + +type BaseHourlyTaskScheduler interface { + GetHourlyTaskScheduler() *HourlyTaskScheduler +} + +func init() { + t["BaseHourlyTaskScheduler"] = reflect.TypeOf((*HourlyTaskScheduler)(nil)).Elem() +} + +func (b *ImportSpec) GetImportSpec() *ImportSpec { return b } + +type BaseImportSpec interface { + GetImportSpec() *ImportSpec +} + +func init() { + t["BaseImportSpec"] = reflect.TypeOf((*ImportSpec)(nil)).Elem() +} + +func (b *InaccessibleDatastore) GetInaccessibleDatastore() *InaccessibleDatastore { return b } + +type BaseInaccessibleDatastore interface { + GetInaccessibleDatastore() *InaccessibleDatastore +} + +func init() { + t["BaseInaccessibleDatastore"] = reflect.TypeOf((*InaccessibleDatastore)(nil)).Elem() +} + +func (b *InheritablePolicy) GetInheritablePolicy() *InheritablePolicy { return b } + +type BaseInheritablePolicy interface { + GetInheritablePolicy() *InheritablePolicy +} + +func init() { + t["BaseInheritablePolicy"] = reflect.TypeOf((*InheritablePolicy)(nil)).Elem() +} + +func (b *InsufficientHostCapacityFault) GetInsufficientHostCapacityFault() *InsufficientHostCapacityFault { + return b +} + +type BaseInsufficientHostCapacityFault interface { + GetInsufficientHostCapacityFault() *InsufficientHostCapacityFault +} + +func init() { + t["BaseInsufficientHostCapacityFault"] = reflect.TypeOf((*InsufficientHostCapacityFault)(nil)).Elem() +} + +func (b *InsufficientResourcesFault) GetInsufficientResourcesFault() *InsufficientResourcesFault { + return b +} + +type BaseInsufficientResourcesFault interface { + GetInsufficientResourcesFault() *InsufficientResourcesFault +} + +func init() { + t["BaseInsufficientResourcesFault"] = reflect.TypeOf((*InsufficientResourcesFault)(nil)).Elem() +} + +func (b *InsufficientStandbyResource) GetInsufficientStandbyResource() *InsufficientStandbyResource { + return b +} + +type BaseInsufficientStandbyResource interface { + GetInsufficientStandbyResource() *InsufficientStandbyResource +} + +func init() { + t["BaseInsufficientStandbyResource"] = reflect.TypeOf((*InsufficientStandbyResource)(nil)).Elem() +} + +func (b *InvalidArgument) GetInvalidArgument() *InvalidArgument { return b } + +type BaseInvalidArgument interface { + GetInvalidArgument() *InvalidArgument +} + +func init() { + t["BaseInvalidArgument"] = reflect.TypeOf((*InvalidArgument)(nil)).Elem() +} + +func (b *InvalidCAMServer) GetInvalidCAMServer() *InvalidCAMServer { return b } + +type BaseInvalidCAMServer interface { + GetInvalidCAMServer() *InvalidCAMServer +} + +func init() { + t["BaseInvalidCAMServer"] = reflect.TypeOf((*InvalidCAMServer)(nil)).Elem() +} + +func (b *InvalidDatastore) GetInvalidDatastore() *InvalidDatastore { return b } + +type BaseInvalidDatastore interface { + GetInvalidDatastore() *InvalidDatastore +} + +func init() { + t["BaseInvalidDatastore"] = reflect.TypeOf((*InvalidDatastore)(nil)).Elem() +} + +func (b *InvalidDeviceSpec) GetInvalidDeviceSpec() *InvalidDeviceSpec { return b } + +type BaseInvalidDeviceSpec interface { + GetInvalidDeviceSpec() *InvalidDeviceSpec +} + +func init() { + t["BaseInvalidDeviceSpec"] = reflect.TypeOf((*InvalidDeviceSpec)(nil)).Elem() +} + +func (b *InvalidFolder) GetInvalidFolder() *InvalidFolder { return b } + +type BaseInvalidFolder interface { + GetInvalidFolder() *InvalidFolder +} + +func init() { + t["BaseInvalidFolder"] = reflect.TypeOf((*InvalidFolder)(nil)).Elem() +} + +func (b *InvalidFormat) GetInvalidFormat() *InvalidFormat { return b } + +type BaseInvalidFormat interface { + GetInvalidFormat() *InvalidFormat +} + +func init() { + t["BaseInvalidFormat"] = reflect.TypeOf((*InvalidFormat)(nil)).Elem() +} + +func (b *InvalidHostState) GetInvalidHostState() *InvalidHostState { return b } + +type BaseInvalidHostState interface { + GetInvalidHostState() *InvalidHostState +} + +func init() { + t["BaseInvalidHostState"] = reflect.TypeOf((*InvalidHostState)(nil)).Elem() +} + +func (b *InvalidLogin) GetInvalidLogin() *InvalidLogin { return b } + +type BaseInvalidLogin interface { + GetInvalidLogin() *InvalidLogin +} + +func init() { + t["BaseInvalidLogin"] = reflect.TypeOf((*InvalidLogin)(nil)).Elem() +} + +func (b *InvalidPropertyValue) GetInvalidPropertyValue() *InvalidPropertyValue { return b } + +type BaseInvalidPropertyValue interface { + GetInvalidPropertyValue() *InvalidPropertyValue +} + +func init() { + t["BaseInvalidPropertyValue"] = reflect.TypeOf((*InvalidPropertyValue)(nil)).Elem() +} + +func (b *InvalidRequest) GetInvalidRequest() *InvalidRequest { return b } + +type BaseInvalidRequest interface { + GetInvalidRequest() *InvalidRequest +} + +func init() { + t["BaseInvalidRequest"] = reflect.TypeOf((*InvalidRequest)(nil)).Elem() +} + +func (b *InvalidState) GetInvalidState() *InvalidState { return b } + +type BaseInvalidState interface { + GetInvalidState() *InvalidState +} + +func init() { + t["BaseInvalidState"] = reflect.TypeOf((*InvalidState)(nil)).Elem() +} + +func (b *InvalidVmConfig) GetInvalidVmConfig() *InvalidVmConfig { return b } + +type BaseInvalidVmConfig interface { + GetInvalidVmConfig() *InvalidVmConfig +} + +func init() { + t["BaseInvalidVmConfig"] = reflect.TypeOf((*InvalidVmConfig)(nil)).Elem() +} + +func (b *IoFilterInfo) GetIoFilterInfo() *IoFilterInfo { return b } + +type BaseIoFilterInfo interface { + GetIoFilterInfo() *IoFilterInfo +} + +func init() { + t["BaseIoFilterInfo"] = reflect.TypeOf((*IoFilterInfo)(nil)).Elem() +} + +func (b *IpAddress) GetIpAddress() *IpAddress { return b } + +type BaseIpAddress interface { + GetIpAddress() *IpAddress +} + +func init() { + t["BaseIpAddress"] = reflect.TypeOf((*IpAddress)(nil)).Elem() +} + +func (b *IscsiFault) GetIscsiFault() *IscsiFault { return b } + +type BaseIscsiFault interface { + GetIscsiFault() *IscsiFault +} + +func init() { + t["BaseIscsiFault"] = reflect.TypeOf((*IscsiFault)(nil)).Elem() +} + +func (b *LicenseEvent) GetLicenseEvent() *LicenseEvent { return b } + +type BaseLicenseEvent interface { + GetLicenseEvent() *LicenseEvent +} + +func init() { + t["BaseLicenseEvent"] = reflect.TypeOf((*LicenseEvent)(nil)).Elem() +} + +func (b *LicenseSource) GetLicenseSource() *LicenseSource { return b } + +type BaseLicenseSource interface { + GetLicenseSource() *LicenseSource +} + +func init() { + t["BaseLicenseSource"] = reflect.TypeOf((*LicenseSource)(nil)).Elem() +} + +func (b *MacAddress) GetMacAddress() *MacAddress { return b } + +type BaseMacAddress interface { + GetMacAddress() *MacAddress +} + +func init() { + t["BaseMacAddress"] = reflect.TypeOf((*MacAddress)(nil)).Elem() +} + +func (b *MethodFault) GetMethodFault() *MethodFault { return b } + +type BaseMethodFault interface { + GetMethodFault() *MethodFault +} + +func init() { + t["BaseMethodFault"] = reflect.TypeOf((*MethodFault)(nil)).Elem() +} + +func (b *MigrationEvent) GetMigrationEvent() *MigrationEvent { return b } + +type BaseMigrationEvent interface { + GetMigrationEvent() *MigrationEvent +} + +func init() { + t["BaseMigrationEvent"] = reflect.TypeOf((*MigrationEvent)(nil)).Elem() +} + +func (b *MigrationFault) GetMigrationFault() *MigrationFault { return b } + +type BaseMigrationFault interface { + GetMigrationFault() *MigrationFault +} + +func init() { + t["BaseMigrationFault"] = reflect.TypeOf((*MigrationFault)(nil)).Elem() +} + +func (b *MigrationFeatureNotSupported) GetMigrationFeatureNotSupported() *MigrationFeatureNotSupported { + return b +} + +type BaseMigrationFeatureNotSupported interface { + GetMigrationFeatureNotSupported() *MigrationFeatureNotSupported +} + +func init() { + t["BaseMigrationFeatureNotSupported"] = reflect.TypeOf((*MigrationFeatureNotSupported)(nil)).Elem() +} + +func (b *MonthlyTaskScheduler) GetMonthlyTaskScheduler() *MonthlyTaskScheduler { return b } + +type BaseMonthlyTaskScheduler interface { + GetMonthlyTaskScheduler() *MonthlyTaskScheduler +} + +func init() { + t["BaseMonthlyTaskScheduler"] = reflect.TypeOf((*MonthlyTaskScheduler)(nil)).Elem() +} + +func (b *NasConfigFault) GetNasConfigFault() *NasConfigFault { return b } + +type BaseNasConfigFault interface { + GetNasConfigFault() *NasConfigFault +} + +func init() { + t["BaseNasConfigFault"] = reflect.TypeOf((*NasConfigFault)(nil)).Elem() +} + +func (b *NegatableExpression) GetNegatableExpression() *NegatableExpression { return b } + +type BaseNegatableExpression interface { + GetNegatableExpression() *NegatableExpression +} + +func init() { + t["BaseNegatableExpression"] = reflect.TypeOf((*NegatableExpression)(nil)).Elem() +} + +func (b *NetBIOSConfigInfo) GetNetBIOSConfigInfo() *NetBIOSConfigInfo { return b } + +type BaseNetBIOSConfigInfo interface { + GetNetBIOSConfigInfo() *NetBIOSConfigInfo +} + +func init() { + t["BaseNetBIOSConfigInfo"] = reflect.TypeOf((*NetBIOSConfigInfo)(nil)).Elem() +} + +func (b *NetworkSummary) GetNetworkSummary() *NetworkSummary { return b } + +type BaseNetworkSummary interface { + GetNetworkSummary() *NetworkSummary +} + +func init() { + t["BaseNetworkSummary"] = reflect.TypeOf((*NetworkSummary)(nil)).Elem() +} + +func (b *NoCompatibleHost) GetNoCompatibleHost() *NoCompatibleHost { return b } + +type BaseNoCompatibleHost interface { + GetNoCompatibleHost() *NoCompatibleHost +} + +func init() { + t["BaseNoCompatibleHost"] = reflect.TypeOf((*NoCompatibleHost)(nil)).Elem() +} + +func (b *NoPermission) GetNoPermission() *NoPermission { return b } + +type BaseNoPermission interface { + GetNoPermission() *NoPermission +} + +func init() { + t["BaseNoPermission"] = reflect.TypeOf((*NoPermission)(nil)).Elem() +} + +func (b *NodeDeploymentSpec) GetNodeDeploymentSpec() *NodeDeploymentSpec { return b } + +type BaseNodeDeploymentSpec interface { + GetNodeDeploymentSpec() *NodeDeploymentSpec +} + +func init() { + t["BaseNodeDeploymentSpec"] = reflect.TypeOf((*NodeDeploymentSpec)(nil)).Elem() +} + +func (b *NodeNetworkSpec) GetNodeNetworkSpec() *NodeNetworkSpec { return b } + +type BaseNodeNetworkSpec interface { + GetNodeNetworkSpec() *NodeNetworkSpec +} + +func init() { + t["BaseNodeNetworkSpec"] = reflect.TypeOf((*NodeNetworkSpec)(nil)).Elem() +} + +func (b *NotEnoughCpus) GetNotEnoughCpus() *NotEnoughCpus { return b } + +type BaseNotEnoughCpus interface { + GetNotEnoughCpus() *NotEnoughCpus +} + +func init() { + t["BaseNotEnoughCpus"] = reflect.TypeOf((*NotEnoughCpus)(nil)).Elem() +} + +func (b *NotEnoughLicenses) GetNotEnoughLicenses() *NotEnoughLicenses { return b } + +type BaseNotEnoughLicenses interface { + GetNotEnoughLicenses() *NotEnoughLicenses +} + +func init() { + t["BaseNotEnoughLicenses"] = reflect.TypeOf((*NotEnoughLicenses)(nil)).Elem() +} + +func (b *NotSupported) GetNotSupported() *NotSupported { return b } + +type BaseNotSupported interface { + GetNotSupported() *NotSupported +} + +func init() { + t["BaseNotSupported"] = reflect.TypeOf((*NotSupported)(nil)).Elem() +} + +func (b *NotSupportedHost) GetNotSupportedHost() *NotSupportedHost { return b } + +type BaseNotSupportedHost interface { + GetNotSupportedHost() *NotSupportedHost +} + +func init() { + t["BaseNotSupportedHost"] = reflect.TypeOf((*NotSupportedHost)(nil)).Elem() +} + +func (b *NotSupportedHostInCluster) GetNotSupportedHostInCluster() *NotSupportedHostInCluster { + return b +} + +type BaseNotSupportedHostInCluster interface { + GetNotSupportedHostInCluster() *NotSupportedHostInCluster +} + +func init() { + t["BaseNotSupportedHostInCluster"] = reflect.TypeOf((*NotSupportedHostInCluster)(nil)).Elem() +} + +func (b *OptionType) GetOptionType() *OptionType { return b } + +type BaseOptionType interface { + GetOptionType() *OptionType +} + +func init() { + t["BaseOptionType"] = reflect.TypeOf((*OptionType)(nil)).Elem() +} + +func (b *OptionValue) GetOptionValue() *OptionValue { return b } + +type BaseOptionValue interface { + GetOptionValue() *OptionValue +} + +func init() { + t["BaseOptionValue"] = reflect.TypeOf((*OptionValue)(nil)).Elem() +} + +func (b *OvfAttribute) GetOvfAttribute() *OvfAttribute { return b } + +type BaseOvfAttribute interface { + GetOvfAttribute() *OvfAttribute +} + +func init() { + t["BaseOvfAttribute"] = reflect.TypeOf((*OvfAttribute)(nil)).Elem() +} + +func (b *OvfConnectedDevice) GetOvfConnectedDevice() *OvfConnectedDevice { return b } + +type BaseOvfConnectedDevice interface { + GetOvfConnectedDevice() *OvfConnectedDevice +} + +func init() { + t["BaseOvfConnectedDevice"] = reflect.TypeOf((*OvfConnectedDevice)(nil)).Elem() +} + +func (b *OvfConstraint) GetOvfConstraint() *OvfConstraint { return b } + +type BaseOvfConstraint interface { + GetOvfConstraint() *OvfConstraint +} + +func init() { + t["BaseOvfConstraint"] = reflect.TypeOf((*OvfConstraint)(nil)).Elem() +} + +func (b *OvfConsumerCallbackFault) GetOvfConsumerCallbackFault() *OvfConsumerCallbackFault { return b } + +type BaseOvfConsumerCallbackFault interface { + GetOvfConsumerCallbackFault() *OvfConsumerCallbackFault +} + +func init() { + t["BaseOvfConsumerCallbackFault"] = reflect.TypeOf((*OvfConsumerCallbackFault)(nil)).Elem() +} + +func (b *OvfElement) GetOvfElement() *OvfElement { return b } + +type BaseOvfElement interface { + GetOvfElement() *OvfElement +} + +func init() { + t["BaseOvfElement"] = reflect.TypeOf((*OvfElement)(nil)).Elem() +} + +func (b *OvfExport) GetOvfExport() *OvfExport { return b } + +type BaseOvfExport interface { + GetOvfExport() *OvfExport +} + +func init() { + t["BaseOvfExport"] = reflect.TypeOf((*OvfExport)(nil)).Elem() +} + +func (b *OvfFault) GetOvfFault() *OvfFault { return b } + +type BaseOvfFault interface { + GetOvfFault() *OvfFault +} + +func init() { + t["BaseOvfFault"] = reflect.TypeOf((*OvfFault)(nil)).Elem() +} + +func (b *OvfHardwareExport) GetOvfHardwareExport() *OvfHardwareExport { return b } + +type BaseOvfHardwareExport interface { + GetOvfHardwareExport() *OvfHardwareExport +} + +func init() { + t["BaseOvfHardwareExport"] = reflect.TypeOf((*OvfHardwareExport)(nil)).Elem() +} + +func (b *OvfImport) GetOvfImport() *OvfImport { return b } + +type BaseOvfImport interface { + GetOvfImport() *OvfImport +} + +func init() { + t["BaseOvfImport"] = reflect.TypeOf((*OvfImport)(nil)).Elem() +} + +func (b *OvfInvalidPackage) GetOvfInvalidPackage() *OvfInvalidPackage { return b } + +type BaseOvfInvalidPackage interface { + GetOvfInvalidPackage() *OvfInvalidPackage +} + +func init() { + t["BaseOvfInvalidPackage"] = reflect.TypeOf((*OvfInvalidPackage)(nil)).Elem() +} + +func (b *OvfInvalidValue) GetOvfInvalidValue() *OvfInvalidValue { return b } + +type BaseOvfInvalidValue interface { + GetOvfInvalidValue() *OvfInvalidValue +} + +func init() { + t["BaseOvfInvalidValue"] = reflect.TypeOf((*OvfInvalidValue)(nil)).Elem() +} + +func (b *OvfManagerCommonParams) GetOvfManagerCommonParams() *OvfManagerCommonParams { return b } + +type BaseOvfManagerCommonParams interface { + GetOvfManagerCommonParams() *OvfManagerCommonParams +} + +func init() { + t["BaseOvfManagerCommonParams"] = reflect.TypeOf((*OvfManagerCommonParams)(nil)).Elem() +} + +func (b *OvfMissingElement) GetOvfMissingElement() *OvfMissingElement { return b } + +type BaseOvfMissingElement interface { + GetOvfMissingElement() *OvfMissingElement +} + +func init() { + t["BaseOvfMissingElement"] = reflect.TypeOf((*OvfMissingElement)(nil)).Elem() +} + +func (b *OvfProperty) GetOvfProperty() *OvfProperty { return b } + +type BaseOvfProperty interface { + GetOvfProperty() *OvfProperty +} + +func init() { + t["BaseOvfProperty"] = reflect.TypeOf((*OvfProperty)(nil)).Elem() +} + +func (b *OvfSystemFault) GetOvfSystemFault() *OvfSystemFault { return b } + +type BaseOvfSystemFault interface { + GetOvfSystemFault() *OvfSystemFault +} + +func init() { + t["BaseOvfSystemFault"] = reflect.TypeOf((*OvfSystemFault)(nil)).Elem() +} + +func (b *OvfUnsupportedAttribute) GetOvfUnsupportedAttribute() *OvfUnsupportedAttribute { return b } + +type BaseOvfUnsupportedAttribute interface { + GetOvfUnsupportedAttribute() *OvfUnsupportedAttribute +} + +func init() { + t["BaseOvfUnsupportedAttribute"] = reflect.TypeOf((*OvfUnsupportedAttribute)(nil)).Elem() +} + +func (b *OvfUnsupportedElement) GetOvfUnsupportedElement() *OvfUnsupportedElement { return b } + +type BaseOvfUnsupportedElement interface { + GetOvfUnsupportedElement() *OvfUnsupportedElement +} + +func init() { + t["BaseOvfUnsupportedElement"] = reflect.TypeOf((*OvfUnsupportedElement)(nil)).Elem() +} + +func (b *OvfUnsupportedPackage) GetOvfUnsupportedPackage() *OvfUnsupportedPackage { return b } + +type BaseOvfUnsupportedPackage interface { + GetOvfUnsupportedPackage() *OvfUnsupportedPackage +} + +func init() { + t["BaseOvfUnsupportedPackage"] = reflect.TypeOf((*OvfUnsupportedPackage)(nil)).Elem() +} + +func (b *PatchMetadataInvalid) GetPatchMetadataInvalid() *PatchMetadataInvalid { return b } + +type BasePatchMetadataInvalid interface { + GetPatchMetadataInvalid() *PatchMetadataInvalid +} + +func init() { + t["BasePatchMetadataInvalid"] = reflect.TypeOf((*PatchMetadataInvalid)(nil)).Elem() +} + +func (b *PatchNotApplicable) GetPatchNotApplicable() *PatchNotApplicable { return b } + +type BasePatchNotApplicable interface { + GetPatchNotApplicable() *PatchNotApplicable +} + +func init() { + t["BasePatchNotApplicable"] = reflect.TypeOf((*PatchNotApplicable)(nil)).Elem() +} + +func (b *PerfEntityMetricBase) GetPerfEntityMetricBase() *PerfEntityMetricBase { return b } + +type BasePerfEntityMetricBase interface { + GetPerfEntityMetricBase() *PerfEntityMetricBase +} + +func init() { + t["BasePerfEntityMetricBase"] = reflect.TypeOf((*PerfEntityMetricBase)(nil)).Elem() +} + +func (b *PerfMetricSeries) GetPerfMetricSeries() *PerfMetricSeries { return b } + +type BasePerfMetricSeries interface { + GetPerfMetricSeries() *PerfMetricSeries +} + +func init() { + t["BasePerfMetricSeries"] = reflect.TypeOf((*PerfMetricSeries)(nil)).Elem() +} + +func (b *PermissionEvent) GetPermissionEvent() *PermissionEvent { return b } + +type BasePermissionEvent interface { + GetPermissionEvent() *PermissionEvent +} + +func init() { + t["BasePermissionEvent"] = reflect.TypeOf((*PermissionEvent)(nil)).Elem() +} + +func (b *PhysicalNicHint) GetPhysicalNicHint() *PhysicalNicHint { return b } + +type BasePhysicalNicHint interface { + GetPhysicalNicHint() *PhysicalNicHint +} + +func init() { + t["BasePhysicalNicHint"] = reflect.TypeOf((*PhysicalNicHint)(nil)).Elem() +} + +func (b *PlatformConfigFault) GetPlatformConfigFault() *PlatformConfigFault { return b } + +type BasePlatformConfigFault interface { + GetPlatformConfigFault() *PlatformConfigFault +} + +func init() { + t["BasePlatformConfigFault"] = reflect.TypeOf((*PlatformConfigFault)(nil)).Elem() +} + +func (b *PolicyOption) GetPolicyOption() *PolicyOption { return b } + +type BasePolicyOption interface { + GetPolicyOption() *PolicyOption +} + +func init() { + t["BasePolicyOption"] = reflect.TypeOf((*PolicyOption)(nil)).Elem() +} + +func (b *PortGroupProfile) GetPortGroupProfile() *PortGroupProfile { return b } + +type BasePortGroupProfile interface { + GetPortGroupProfile() *PortGroupProfile +} + +func init() { + t["BasePortGroupProfile"] = reflect.TypeOf((*PortGroupProfile)(nil)).Elem() +} + +func (b *ProfileConfigInfo) GetProfileConfigInfo() *ProfileConfigInfo { return b } + +type BaseProfileConfigInfo interface { + GetProfileConfigInfo() *ProfileConfigInfo +} + +func init() { + t["BaseProfileConfigInfo"] = reflect.TypeOf((*ProfileConfigInfo)(nil)).Elem() +} + +func (b *ProfileCreateSpec) GetProfileCreateSpec() *ProfileCreateSpec { return b } + +type BaseProfileCreateSpec interface { + GetProfileCreateSpec() *ProfileCreateSpec +} + +func init() { + t["BaseProfileCreateSpec"] = reflect.TypeOf((*ProfileCreateSpec)(nil)).Elem() +} + +func (b *ProfileEvent) GetProfileEvent() *ProfileEvent { return b } + +type BaseProfileEvent interface { + GetProfileEvent() *ProfileEvent +} + +func init() { + t["BaseProfileEvent"] = reflect.TypeOf((*ProfileEvent)(nil)).Elem() +} + +func (b *ProfileExecuteResult) GetProfileExecuteResult() *ProfileExecuteResult { return b } + +type BaseProfileExecuteResult interface { + GetProfileExecuteResult() *ProfileExecuteResult +} + +func init() { + t["BaseProfileExecuteResult"] = reflect.TypeOf((*ProfileExecuteResult)(nil)).Elem() +} + +func (b *ProfileExpression) GetProfileExpression() *ProfileExpression { return b } + +type BaseProfileExpression interface { + GetProfileExpression() *ProfileExpression +} + +func init() { + t["BaseProfileExpression"] = reflect.TypeOf((*ProfileExpression)(nil)).Elem() +} + +func (b *ProfilePolicyOptionMetadata) GetProfilePolicyOptionMetadata() *ProfilePolicyOptionMetadata { + return b +} + +type BaseProfilePolicyOptionMetadata interface { + GetProfilePolicyOptionMetadata() *ProfilePolicyOptionMetadata +} + +func init() { + t["BaseProfilePolicyOptionMetadata"] = reflect.TypeOf((*ProfilePolicyOptionMetadata)(nil)).Elem() +} + +func (b *ProfileSerializedCreateSpec) GetProfileSerializedCreateSpec() *ProfileSerializedCreateSpec { + return b +} + +type BaseProfileSerializedCreateSpec interface { + GetProfileSerializedCreateSpec() *ProfileSerializedCreateSpec +} + +func init() { + t["BaseProfileSerializedCreateSpec"] = reflect.TypeOf((*ProfileSerializedCreateSpec)(nil)).Elem() +} + +func (b *RDMNotSupported) GetRDMNotSupported() *RDMNotSupported { return b } + +type BaseRDMNotSupported interface { + GetRDMNotSupported() *RDMNotSupported +} + +func init() { + t["BaseRDMNotSupported"] = reflect.TypeOf((*RDMNotSupported)(nil)).Elem() +} + +func (b *RecurrentTaskScheduler) GetRecurrentTaskScheduler() *RecurrentTaskScheduler { return b } + +type BaseRecurrentTaskScheduler interface { + GetRecurrentTaskScheduler() *RecurrentTaskScheduler +} + +func init() { + t["BaseRecurrentTaskScheduler"] = reflect.TypeOf((*RecurrentTaskScheduler)(nil)).Elem() +} + +func (b *ReplicationConfigFault) GetReplicationConfigFault() *ReplicationConfigFault { return b } + +type BaseReplicationConfigFault interface { + GetReplicationConfigFault() *ReplicationConfigFault +} + +func init() { + t["BaseReplicationConfigFault"] = reflect.TypeOf((*ReplicationConfigFault)(nil)).Elem() +} + +func (b *ReplicationFault) GetReplicationFault() *ReplicationFault { return b } + +type BaseReplicationFault interface { + GetReplicationFault() *ReplicationFault +} + +func init() { + t["BaseReplicationFault"] = reflect.TypeOf((*ReplicationFault)(nil)).Elem() +} + +func (b *ReplicationVmFault) GetReplicationVmFault() *ReplicationVmFault { return b } + +type BaseReplicationVmFault interface { + GetReplicationVmFault() *ReplicationVmFault +} + +func init() { + t["BaseReplicationVmFault"] = reflect.TypeOf((*ReplicationVmFault)(nil)).Elem() +} + +func (b *ResourceInUse) GetResourceInUse() *ResourceInUse { return b } + +type BaseResourceInUse interface { + GetResourceInUse() *ResourceInUse +} + +func init() { + t["BaseResourceInUse"] = reflect.TypeOf((*ResourceInUse)(nil)).Elem() +} + +func (b *ResourcePoolEvent) GetResourcePoolEvent() *ResourcePoolEvent { return b } + +type BaseResourcePoolEvent interface { + GetResourcePoolEvent() *ResourcePoolEvent +} + +func init() { + t["BaseResourcePoolEvent"] = reflect.TypeOf((*ResourcePoolEvent)(nil)).Elem() +} + +func (b *ResourcePoolSummary) GetResourcePoolSummary() *ResourcePoolSummary { return b } + +type BaseResourcePoolSummary interface { + GetResourcePoolSummary() *ResourcePoolSummary +} + +func init() { + t["BaseResourcePoolSummary"] = reflect.TypeOf((*ResourcePoolSummary)(nil)).Elem() +} + +func (b *RoleEvent) GetRoleEvent() *RoleEvent { return b } + +type BaseRoleEvent interface { + GetRoleEvent() *RoleEvent +} + +func init() { + t["BaseRoleEvent"] = reflect.TypeOf((*RoleEvent)(nil)).Elem() +} + +func (b *RuntimeFault) GetRuntimeFault() *RuntimeFault { return b } + +type BaseRuntimeFault interface { + GetRuntimeFault() *RuntimeFault +} + +func init() { + t["BaseRuntimeFault"] = reflect.TypeOf((*RuntimeFault)(nil)).Elem() +} + +func (b *ScheduledTaskEvent) GetScheduledTaskEvent() *ScheduledTaskEvent { return b } + +type BaseScheduledTaskEvent interface { + GetScheduledTaskEvent() *ScheduledTaskEvent +} + +func init() { + t["BaseScheduledTaskEvent"] = reflect.TypeOf((*ScheduledTaskEvent)(nil)).Elem() +} + +func (b *ScheduledTaskSpec) GetScheduledTaskSpec() *ScheduledTaskSpec { return b } + +type BaseScheduledTaskSpec interface { + GetScheduledTaskSpec() *ScheduledTaskSpec +} + +func init() { + t["BaseScheduledTaskSpec"] = reflect.TypeOf((*ScheduledTaskSpec)(nil)).Elem() +} + +func (b *ScsiLun) GetScsiLun() *ScsiLun { return b } + +type BaseScsiLun interface { + GetScsiLun() *ScsiLun +} + +func init() { + t["BaseScsiLun"] = reflect.TypeOf((*ScsiLun)(nil)).Elem() +} + +func (b *SecurityError) GetSecurityError() *SecurityError { return b } + +type BaseSecurityError interface { + GetSecurityError() *SecurityError +} + +func init() { + t["BaseSecurityError"] = reflect.TypeOf((*SecurityError)(nil)).Elem() +} + +func (b *SelectionSet) GetSelectionSet() *SelectionSet { return b } + +type BaseSelectionSet interface { + GetSelectionSet() *SelectionSet +} + +func init() { + t["BaseSelectionSet"] = reflect.TypeOf((*SelectionSet)(nil)).Elem() +} + +func (b *SelectionSpec) GetSelectionSpec() *SelectionSpec { return b } + +type BaseSelectionSpec interface { + GetSelectionSpec() *SelectionSpec +} + +func init() { + t["BaseSelectionSpec"] = reflect.TypeOf((*SelectionSpec)(nil)).Elem() +} + +func (b *ServiceLocatorCredential) GetServiceLocatorCredential() *ServiceLocatorCredential { return b } + +type BaseServiceLocatorCredential interface { + GetServiceLocatorCredential() *ServiceLocatorCredential +} + +func init() { + t["BaseServiceLocatorCredential"] = reflect.TypeOf((*ServiceLocatorCredential)(nil)).Elem() +} + +func (b *SessionEvent) GetSessionEvent() *SessionEvent { return b } + +type BaseSessionEvent interface { + GetSessionEvent() *SessionEvent +} + +func init() { + t["BaseSessionEvent"] = reflect.TypeOf((*SessionEvent)(nil)).Elem() +} + +func (b *SessionManagerServiceRequestSpec) GetSessionManagerServiceRequestSpec() *SessionManagerServiceRequestSpec { + return b +} + +type BaseSessionManagerServiceRequestSpec interface { + GetSessionManagerServiceRequestSpec() *SessionManagerServiceRequestSpec +} + +func init() { + t["BaseSessionManagerServiceRequestSpec"] = reflect.TypeOf((*SessionManagerServiceRequestSpec)(nil)).Elem() +} + +func (b *SnapshotCopyNotSupported) GetSnapshotCopyNotSupported() *SnapshotCopyNotSupported { return b } + +type BaseSnapshotCopyNotSupported interface { + GetSnapshotCopyNotSupported() *SnapshotCopyNotSupported +} + +func init() { + t["BaseSnapshotCopyNotSupported"] = reflect.TypeOf((*SnapshotCopyNotSupported)(nil)).Elem() +} + +func (b *SnapshotFault) GetSnapshotFault() *SnapshotFault { return b } + +type BaseSnapshotFault interface { + GetSnapshotFault() *SnapshotFault +} + +func init() { + t["BaseSnapshotFault"] = reflect.TypeOf((*SnapshotFault)(nil)).Elem() +} + +func (b *TaskEvent) GetTaskEvent() *TaskEvent { return b } + +type BaseTaskEvent interface { + GetTaskEvent() *TaskEvent +} + +func init() { + t["BaseTaskEvent"] = reflect.TypeOf((*TaskEvent)(nil)).Elem() +} + +func (b *TaskInProgress) GetTaskInProgress() *TaskInProgress { return b } + +type BaseTaskInProgress interface { + GetTaskInProgress() *TaskInProgress +} + +func init() { + t["BaseTaskInProgress"] = reflect.TypeOf((*TaskInProgress)(nil)).Elem() +} + +func (b *TaskReason) GetTaskReason() *TaskReason { return b } + +type BaseTaskReason interface { + GetTaskReason() *TaskReason +} + +func init() { + t["BaseTaskReason"] = reflect.TypeOf((*TaskReason)(nil)).Elem() +} + +func (b *TaskScheduler) GetTaskScheduler() *TaskScheduler { return b } + +type BaseTaskScheduler interface { + GetTaskScheduler() *TaskScheduler +} + +func init() { + t["BaseTaskScheduler"] = reflect.TypeOf((*TaskScheduler)(nil)).Elem() +} + +func (b *TemplateUpgradeEvent) GetTemplateUpgradeEvent() *TemplateUpgradeEvent { return b } + +type BaseTemplateUpgradeEvent interface { + GetTemplateUpgradeEvent() *TemplateUpgradeEvent +} + +func init() { + t["BaseTemplateUpgradeEvent"] = reflect.TypeOf((*TemplateUpgradeEvent)(nil)).Elem() +} + +func (b *Timedout) GetTimedout() *Timedout { return b } + +type BaseTimedout interface { + GetTimedout() *Timedout +} + +func init() { + t["BaseTimedout"] = reflect.TypeOf((*Timedout)(nil)).Elem() +} + +func (b *TypeDescription) GetTypeDescription() *TypeDescription { return b } + +type BaseTypeDescription interface { + GetTypeDescription() *TypeDescription +} + +func init() { + t["BaseTypeDescription"] = reflect.TypeOf((*TypeDescription)(nil)).Elem() +} + +func (b *UnsupportedDatastore) GetUnsupportedDatastore() *UnsupportedDatastore { return b } + +type BaseUnsupportedDatastore interface { + GetUnsupportedDatastore() *UnsupportedDatastore +} + +func init() { + t["BaseUnsupportedDatastore"] = reflect.TypeOf((*UnsupportedDatastore)(nil)).Elem() +} + +func (b *UpgradeEvent) GetUpgradeEvent() *UpgradeEvent { return b } + +type BaseUpgradeEvent interface { + GetUpgradeEvent() *UpgradeEvent +} + +func init() { + t["BaseUpgradeEvent"] = reflect.TypeOf((*UpgradeEvent)(nil)).Elem() +} + +func (b *UserSearchResult) GetUserSearchResult() *UserSearchResult { return b } + +type BaseUserSearchResult interface { + GetUserSearchResult() *UserSearchResult +} + +func init() { + t["BaseUserSearchResult"] = reflect.TypeOf((*UserSearchResult)(nil)).Elem() +} + +func (b *VAppConfigFault) GetVAppConfigFault() *VAppConfigFault { return b } + +type BaseVAppConfigFault interface { + GetVAppConfigFault() *VAppConfigFault +} + +func init() { + t["BaseVAppConfigFault"] = reflect.TypeOf((*VAppConfigFault)(nil)).Elem() +} + +func (b *VAppPropertyFault) GetVAppPropertyFault() *VAppPropertyFault { return b } + +type BaseVAppPropertyFault interface { + GetVAppPropertyFault() *VAppPropertyFault +} + +func init() { + t["BaseVAppPropertyFault"] = reflect.TypeOf((*VAppPropertyFault)(nil)).Elem() +} + +func (b *VMotionInterfaceIssue) GetVMotionInterfaceIssue() *VMotionInterfaceIssue { return b } + +type BaseVMotionInterfaceIssue interface { + GetVMotionInterfaceIssue() *VMotionInterfaceIssue +} + +func init() { + t["BaseVMotionInterfaceIssue"] = reflect.TypeOf((*VMotionInterfaceIssue)(nil)).Elem() +} + +func (b *VMwareDVSHealthCheckConfig) GetVMwareDVSHealthCheckConfig() *VMwareDVSHealthCheckConfig { + return b +} + +type BaseVMwareDVSHealthCheckConfig interface { + GetVMwareDVSHealthCheckConfig() *VMwareDVSHealthCheckConfig +} + +func init() { + t["BaseVMwareDVSHealthCheckConfig"] = reflect.TypeOf((*VMwareDVSHealthCheckConfig)(nil)).Elem() +} + +func (b *VimFault) GetVimFault() *VimFault { return b } + +type BaseVimFault interface { + GetVimFault() *VimFault +} + +func init() { + t["BaseVimFault"] = reflect.TypeOf((*VimFault)(nil)).Elem() +} + +func (b *VirtualController) GetVirtualController() *VirtualController { return b } + +type BaseVirtualController interface { + GetVirtualController() *VirtualController +} + +func init() { + t["BaseVirtualController"] = reflect.TypeOf((*VirtualController)(nil)).Elem() +} + +func (b *VirtualControllerOption) GetVirtualControllerOption() *VirtualControllerOption { return b } + +type BaseVirtualControllerOption interface { + GetVirtualControllerOption() *VirtualControllerOption +} + +func init() { + t["BaseVirtualControllerOption"] = reflect.TypeOf((*VirtualControllerOption)(nil)).Elem() +} + +func (b *VirtualDevice) GetVirtualDevice() *VirtualDevice { return b } + +type BaseVirtualDevice interface { + GetVirtualDevice() *VirtualDevice +} + +func init() { + t["BaseVirtualDevice"] = reflect.TypeOf((*VirtualDevice)(nil)).Elem() +} + +func (b *VirtualDeviceBackingInfo) GetVirtualDeviceBackingInfo() *VirtualDeviceBackingInfo { return b } + +type BaseVirtualDeviceBackingInfo interface { + GetVirtualDeviceBackingInfo() *VirtualDeviceBackingInfo +} + +func init() { + t["BaseVirtualDeviceBackingInfo"] = reflect.TypeOf((*VirtualDeviceBackingInfo)(nil)).Elem() +} + +func (b *VirtualDeviceBackingOption) GetVirtualDeviceBackingOption() *VirtualDeviceBackingOption { + return b +} + +type BaseVirtualDeviceBackingOption interface { + GetVirtualDeviceBackingOption() *VirtualDeviceBackingOption +} + +func init() { + t["BaseVirtualDeviceBackingOption"] = reflect.TypeOf((*VirtualDeviceBackingOption)(nil)).Elem() +} + +func (b *VirtualDeviceBusSlotInfo) GetVirtualDeviceBusSlotInfo() *VirtualDeviceBusSlotInfo { return b } + +type BaseVirtualDeviceBusSlotInfo interface { + GetVirtualDeviceBusSlotInfo() *VirtualDeviceBusSlotInfo +} + +func init() { + t["BaseVirtualDeviceBusSlotInfo"] = reflect.TypeOf((*VirtualDeviceBusSlotInfo)(nil)).Elem() +} + +func (b *VirtualDeviceConfigSpec) GetVirtualDeviceConfigSpec() *VirtualDeviceConfigSpec { return b } + +type BaseVirtualDeviceConfigSpec interface { + GetVirtualDeviceConfigSpec() *VirtualDeviceConfigSpec +} + +func init() { + t["BaseVirtualDeviceConfigSpec"] = reflect.TypeOf((*VirtualDeviceConfigSpec)(nil)).Elem() +} + +func (b *VirtualDeviceDeviceBackingInfo) GetVirtualDeviceDeviceBackingInfo() *VirtualDeviceDeviceBackingInfo { + return b +} + +type BaseVirtualDeviceDeviceBackingInfo interface { + GetVirtualDeviceDeviceBackingInfo() *VirtualDeviceDeviceBackingInfo +} + +func init() { + t["BaseVirtualDeviceDeviceBackingInfo"] = reflect.TypeOf((*VirtualDeviceDeviceBackingInfo)(nil)).Elem() +} + +func (b *VirtualDeviceDeviceBackingOption) GetVirtualDeviceDeviceBackingOption() *VirtualDeviceDeviceBackingOption { + return b +} + +type BaseVirtualDeviceDeviceBackingOption interface { + GetVirtualDeviceDeviceBackingOption() *VirtualDeviceDeviceBackingOption +} + +func init() { + t["BaseVirtualDeviceDeviceBackingOption"] = reflect.TypeOf((*VirtualDeviceDeviceBackingOption)(nil)).Elem() +} + +func (b *VirtualDeviceFileBackingInfo) GetVirtualDeviceFileBackingInfo() *VirtualDeviceFileBackingInfo { + return b +} + +type BaseVirtualDeviceFileBackingInfo interface { + GetVirtualDeviceFileBackingInfo() *VirtualDeviceFileBackingInfo +} + +func init() { + t["BaseVirtualDeviceFileBackingInfo"] = reflect.TypeOf((*VirtualDeviceFileBackingInfo)(nil)).Elem() +} + +func (b *VirtualDeviceFileBackingOption) GetVirtualDeviceFileBackingOption() *VirtualDeviceFileBackingOption { + return b +} + +type BaseVirtualDeviceFileBackingOption interface { + GetVirtualDeviceFileBackingOption() *VirtualDeviceFileBackingOption +} + +func init() { + t["BaseVirtualDeviceFileBackingOption"] = reflect.TypeOf((*VirtualDeviceFileBackingOption)(nil)).Elem() +} + +func (b *VirtualDeviceOption) GetVirtualDeviceOption() *VirtualDeviceOption { return b } + +type BaseVirtualDeviceOption interface { + GetVirtualDeviceOption() *VirtualDeviceOption +} + +func init() { + t["BaseVirtualDeviceOption"] = reflect.TypeOf((*VirtualDeviceOption)(nil)).Elem() +} + +func (b *VirtualDevicePciBusSlotInfo) GetVirtualDevicePciBusSlotInfo() *VirtualDevicePciBusSlotInfo { + return b +} + +type BaseVirtualDevicePciBusSlotInfo interface { + GetVirtualDevicePciBusSlotInfo() *VirtualDevicePciBusSlotInfo +} + +func init() { + t["BaseVirtualDevicePciBusSlotInfo"] = reflect.TypeOf((*VirtualDevicePciBusSlotInfo)(nil)).Elem() +} + +func (b *VirtualDevicePipeBackingInfo) GetVirtualDevicePipeBackingInfo() *VirtualDevicePipeBackingInfo { + return b +} + +type BaseVirtualDevicePipeBackingInfo interface { + GetVirtualDevicePipeBackingInfo() *VirtualDevicePipeBackingInfo +} + +func init() { + t["BaseVirtualDevicePipeBackingInfo"] = reflect.TypeOf((*VirtualDevicePipeBackingInfo)(nil)).Elem() +} + +func (b *VirtualDevicePipeBackingOption) GetVirtualDevicePipeBackingOption() *VirtualDevicePipeBackingOption { + return b +} + +type BaseVirtualDevicePipeBackingOption interface { + GetVirtualDevicePipeBackingOption() *VirtualDevicePipeBackingOption +} + +func init() { + t["BaseVirtualDevicePipeBackingOption"] = reflect.TypeOf((*VirtualDevicePipeBackingOption)(nil)).Elem() +} + +func (b *VirtualDeviceRemoteDeviceBackingInfo) GetVirtualDeviceRemoteDeviceBackingInfo() *VirtualDeviceRemoteDeviceBackingInfo { + return b +} + +type BaseVirtualDeviceRemoteDeviceBackingInfo interface { + GetVirtualDeviceRemoteDeviceBackingInfo() *VirtualDeviceRemoteDeviceBackingInfo +} + +func init() { + t["BaseVirtualDeviceRemoteDeviceBackingInfo"] = reflect.TypeOf((*VirtualDeviceRemoteDeviceBackingInfo)(nil)).Elem() +} + +func (b *VirtualDeviceRemoteDeviceBackingOption) GetVirtualDeviceRemoteDeviceBackingOption() *VirtualDeviceRemoteDeviceBackingOption { + return b +} + +type BaseVirtualDeviceRemoteDeviceBackingOption interface { + GetVirtualDeviceRemoteDeviceBackingOption() *VirtualDeviceRemoteDeviceBackingOption +} + +func init() { + t["BaseVirtualDeviceRemoteDeviceBackingOption"] = reflect.TypeOf((*VirtualDeviceRemoteDeviceBackingOption)(nil)).Elem() +} + +func (b *VirtualDeviceURIBackingInfo) GetVirtualDeviceURIBackingInfo() *VirtualDeviceURIBackingInfo { + return b +} + +type BaseVirtualDeviceURIBackingInfo interface { + GetVirtualDeviceURIBackingInfo() *VirtualDeviceURIBackingInfo +} + +func init() { + t["BaseVirtualDeviceURIBackingInfo"] = reflect.TypeOf((*VirtualDeviceURIBackingInfo)(nil)).Elem() +} + +func (b *VirtualDeviceURIBackingOption) GetVirtualDeviceURIBackingOption() *VirtualDeviceURIBackingOption { + return b +} + +type BaseVirtualDeviceURIBackingOption interface { + GetVirtualDeviceURIBackingOption() *VirtualDeviceURIBackingOption +} + +func init() { + t["BaseVirtualDeviceURIBackingOption"] = reflect.TypeOf((*VirtualDeviceURIBackingOption)(nil)).Elem() +} + +func (b *VirtualDiskRawDiskVer2BackingInfo) GetVirtualDiskRawDiskVer2BackingInfo() *VirtualDiskRawDiskVer2BackingInfo { + return b +} + +type BaseVirtualDiskRawDiskVer2BackingInfo interface { + GetVirtualDiskRawDiskVer2BackingInfo() *VirtualDiskRawDiskVer2BackingInfo +} + +func init() { + t["BaseVirtualDiskRawDiskVer2BackingInfo"] = reflect.TypeOf((*VirtualDiskRawDiskVer2BackingInfo)(nil)).Elem() +} + +func (b *VirtualDiskRawDiskVer2BackingOption) GetVirtualDiskRawDiskVer2BackingOption() *VirtualDiskRawDiskVer2BackingOption { + return b +} + +type BaseVirtualDiskRawDiskVer2BackingOption interface { + GetVirtualDiskRawDiskVer2BackingOption() *VirtualDiskRawDiskVer2BackingOption +} + +func init() { + t["BaseVirtualDiskRawDiskVer2BackingOption"] = reflect.TypeOf((*VirtualDiskRawDiskVer2BackingOption)(nil)).Elem() +} + +func (b *VirtualDiskSpec) GetVirtualDiskSpec() *VirtualDiskSpec { return b } + +type BaseVirtualDiskSpec interface { + GetVirtualDiskSpec() *VirtualDiskSpec +} + +func init() { + t["BaseVirtualDiskSpec"] = reflect.TypeOf((*VirtualDiskSpec)(nil)).Elem() +} + +func (b *VirtualEthernetCard) GetVirtualEthernetCard() *VirtualEthernetCard { return b } + +type BaseVirtualEthernetCard interface { + GetVirtualEthernetCard() *VirtualEthernetCard +} + +func init() { + t["BaseVirtualEthernetCard"] = reflect.TypeOf((*VirtualEthernetCard)(nil)).Elem() +} + +func (b *VirtualEthernetCardOption) GetVirtualEthernetCardOption() *VirtualEthernetCardOption { + return b +} + +type BaseVirtualEthernetCardOption interface { + GetVirtualEthernetCardOption() *VirtualEthernetCardOption +} + +func init() { + t["BaseVirtualEthernetCardOption"] = reflect.TypeOf((*VirtualEthernetCardOption)(nil)).Elem() +} + +func (b *VirtualHardwareCompatibilityIssue) GetVirtualHardwareCompatibilityIssue() *VirtualHardwareCompatibilityIssue { + return b +} + +type BaseVirtualHardwareCompatibilityIssue interface { + GetVirtualHardwareCompatibilityIssue() *VirtualHardwareCompatibilityIssue +} + +func init() { + t["BaseVirtualHardwareCompatibilityIssue"] = reflect.TypeOf((*VirtualHardwareCompatibilityIssue)(nil)).Elem() +} + +func (b *VirtualMachineBootOptionsBootableDevice) GetVirtualMachineBootOptionsBootableDevice() *VirtualMachineBootOptionsBootableDevice { + return b +} + +type BaseVirtualMachineBootOptionsBootableDevice interface { + GetVirtualMachineBootOptionsBootableDevice() *VirtualMachineBootOptionsBootableDevice +} + +func init() { + t["BaseVirtualMachineBootOptionsBootableDevice"] = reflect.TypeOf((*VirtualMachineBootOptionsBootableDevice)(nil)).Elem() +} + +func (b *VirtualMachineDeviceRuntimeInfoDeviceRuntimeState) GetVirtualMachineDeviceRuntimeInfoDeviceRuntimeState() *VirtualMachineDeviceRuntimeInfoDeviceRuntimeState { + return b +} + +type BaseVirtualMachineDeviceRuntimeInfoDeviceRuntimeState interface { + GetVirtualMachineDeviceRuntimeInfoDeviceRuntimeState() *VirtualMachineDeviceRuntimeInfoDeviceRuntimeState +} + +func init() { + t["BaseVirtualMachineDeviceRuntimeInfoDeviceRuntimeState"] = reflect.TypeOf((*VirtualMachineDeviceRuntimeInfoDeviceRuntimeState)(nil)).Elem() +} + +func (b *VirtualMachineDiskDeviceInfo) GetVirtualMachineDiskDeviceInfo() *VirtualMachineDiskDeviceInfo { + return b +} + +type BaseVirtualMachineDiskDeviceInfo interface { + GetVirtualMachineDiskDeviceInfo() *VirtualMachineDiskDeviceInfo +} + +func init() { + t["BaseVirtualMachineDiskDeviceInfo"] = reflect.TypeOf((*VirtualMachineDiskDeviceInfo)(nil)).Elem() +} + +func (b *VirtualMachineGuestQuiesceSpec) GetVirtualMachineGuestQuiesceSpec() *VirtualMachineGuestQuiesceSpec { + return b +} + +type BaseVirtualMachineGuestQuiesceSpec interface { + GetVirtualMachineGuestQuiesceSpec() *VirtualMachineGuestQuiesceSpec +} + +func init() { + t["BaseVirtualMachineGuestQuiesceSpec"] = reflect.TypeOf((*VirtualMachineGuestQuiesceSpec)(nil)).Elem() +} + +func (b *VirtualMachinePciPassthroughInfo) GetVirtualMachinePciPassthroughInfo() *VirtualMachinePciPassthroughInfo { + return b +} + +type BaseVirtualMachinePciPassthroughInfo interface { + GetVirtualMachinePciPassthroughInfo() *VirtualMachinePciPassthroughInfo +} + +func init() { + t["BaseVirtualMachinePciPassthroughInfo"] = reflect.TypeOf((*VirtualMachinePciPassthroughInfo)(nil)).Elem() +} + +func (b *VirtualMachineProfileSpec) GetVirtualMachineProfileSpec() *VirtualMachineProfileSpec { + return b +} + +type BaseVirtualMachineProfileSpec interface { + GetVirtualMachineProfileSpec() *VirtualMachineProfileSpec +} + +func init() { + t["BaseVirtualMachineProfileSpec"] = reflect.TypeOf((*VirtualMachineProfileSpec)(nil)).Elem() +} + +func (b *VirtualMachineSriovDevicePoolInfo) GetVirtualMachineSriovDevicePoolInfo() *VirtualMachineSriovDevicePoolInfo { + return b +} + +type BaseVirtualMachineSriovDevicePoolInfo interface { + GetVirtualMachineSriovDevicePoolInfo() *VirtualMachineSriovDevicePoolInfo +} + +func init() { + t["BaseVirtualMachineSriovDevicePoolInfo"] = reflect.TypeOf((*VirtualMachineSriovDevicePoolInfo)(nil)).Elem() +} + +func (b *VirtualMachineTargetInfo) GetVirtualMachineTargetInfo() *VirtualMachineTargetInfo { return b } + +type BaseVirtualMachineTargetInfo interface { + GetVirtualMachineTargetInfo() *VirtualMachineTargetInfo +} + +func init() { + t["BaseVirtualMachineTargetInfo"] = reflect.TypeOf((*VirtualMachineTargetInfo)(nil)).Elem() +} + +func (b *VirtualPCIPassthroughPluginBackingInfo) GetVirtualPCIPassthroughPluginBackingInfo() *VirtualPCIPassthroughPluginBackingInfo { + return b +} + +type BaseVirtualPCIPassthroughPluginBackingInfo interface { + GetVirtualPCIPassthroughPluginBackingInfo() *VirtualPCIPassthroughPluginBackingInfo +} + +func init() { + t["BaseVirtualPCIPassthroughPluginBackingInfo"] = reflect.TypeOf((*VirtualPCIPassthroughPluginBackingInfo)(nil)).Elem() +} + +func (b *VirtualPCIPassthroughPluginBackingOption) GetVirtualPCIPassthroughPluginBackingOption() *VirtualPCIPassthroughPluginBackingOption { + return b +} + +type BaseVirtualPCIPassthroughPluginBackingOption interface { + GetVirtualPCIPassthroughPluginBackingOption() *VirtualPCIPassthroughPluginBackingOption +} + +func init() { + t["BaseVirtualPCIPassthroughPluginBackingOption"] = reflect.TypeOf((*VirtualPCIPassthroughPluginBackingOption)(nil)).Elem() +} + +func (b *VirtualSATAController) GetVirtualSATAController() *VirtualSATAController { return b } + +type BaseVirtualSATAController interface { + GetVirtualSATAController() *VirtualSATAController +} + +func init() { + t["BaseVirtualSATAController"] = reflect.TypeOf((*VirtualSATAController)(nil)).Elem() +} + +func (b *VirtualSATAControllerOption) GetVirtualSATAControllerOption() *VirtualSATAControllerOption { + return b +} + +type BaseVirtualSATAControllerOption interface { + GetVirtualSATAControllerOption() *VirtualSATAControllerOption +} + +func init() { + t["BaseVirtualSATAControllerOption"] = reflect.TypeOf((*VirtualSATAControllerOption)(nil)).Elem() +} + +func (b *VirtualSCSIController) GetVirtualSCSIController() *VirtualSCSIController { return b } + +type BaseVirtualSCSIController interface { + GetVirtualSCSIController() *VirtualSCSIController +} + +func init() { + t["BaseVirtualSCSIController"] = reflect.TypeOf((*VirtualSCSIController)(nil)).Elem() +} + +func (b *VirtualSCSIControllerOption) GetVirtualSCSIControllerOption() *VirtualSCSIControllerOption { + return b +} + +type BaseVirtualSCSIControllerOption interface { + GetVirtualSCSIControllerOption() *VirtualSCSIControllerOption +} + +func init() { + t["BaseVirtualSCSIControllerOption"] = reflect.TypeOf((*VirtualSCSIControllerOption)(nil)).Elem() +} + +func (b *VirtualSoundCard) GetVirtualSoundCard() *VirtualSoundCard { return b } + +type BaseVirtualSoundCard interface { + GetVirtualSoundCard() *VirtualSoundCard +} + +func init() { + t["BaseVirtualSoundCard"] = reflect.TypeOf((*VirtualSoundCard)(nil)).Elem() +} + +func (b *VirtualSoundCardOption) GetVirtualSoundCardOption() *VirtualSoundCardOption { return b } + +type BaseVirtualSoundCardOption interface { + GetVirtualSoundCardOption() *VirtualSoundCardOption +} + +func init() { + t["BaseVirtualSoundCardOption"] = reflect.TypeOf((*VirtualSoundCardOption)(nil)).Elem() +} + +func (b *VirtualVmxnet) GetVirtualVmxnet() *VirtualVmxnet { return b } + +type BaseVirtualVmxnet interface { + GetVirtualVmxnet() *VirtualVmxnet +} + +func init() { + t["BaseVirtualVmxnet"] = reflect.TypeOf((*VirtualVmxnet)(nil)).Elem() +} + +func (b *VirtualVmxnet3) GetVirtualVmxnet3() *VirtualVmxnet3 { return b } + +type BaseVirtualVmxnet3 interface { + GetVirtualVmxnet3() *VirtualVmxnet3 +} + +func init() { + t["BaseVirtualVmxnet3"] = reflect.TypeOf((*VirtualVmxnet3)(nil)).Elem() +} + +func (b *VirtualVmxnet3Option) GetVirtualVmxnet3Option() *VirtualVmxnet3Option { return b } + +type BaseVirtualVmxnet3Option interface { + GetVirtualVmxnet3Option() *VirtualVmxnet3Option +} + +func init() { + t["BaseVirtualVmxnet3Option"] = reflect.TypeOf((*VirtualVmxnet3Option)(nil)).Elem() +} + +func (b *VirtualVmxnetOption) GetVirtualVmxnetOption() *VirtualVmxnetOption { return b } + +type BaseVirtualVmxnetOption interface { + GetVirtualVmxnetOption() *VirtualVmxnetOption +} + +func init() { + t["BaseVirtualVmxnetOption"] = reflect.TypeOf((*VirtualVmxnetOption)(nil)).Elem() +} + +func (b *VmCloneEvent) GetVmCloneEvent() *VmCloneEvent { return b } + +type BaseVmCloneEvent interface { + GetVmCloneEvent() *VmCloneEvent +} + +func init() { + t["BaseVmCloneEvent"] = reflect.TypeOf((*VmCloneEvent)(nil)).Elem() +} + +func (b *VmConfigFault) GetVmConfigFault() *VmConfigFault { return b } + +type BaseVmConfigFault interface { + GetVmConfigFault() *VmConfigFault +} + +func init() { + t["BaseVmConfigFault"] = reflect.TypeOf((*VmConfigFault)(nil)).Elem() +} + +func (b *VmConfigFileInfo) GetVmConfigFileInfo() *VmConfigFileInfo { return b } + +type BaseVmConfigFileInfo interface { + GetVmConfigFileInfo() *VmConfigFileInfo +} + +func init() { + t["BaseVmConfigFileInfo"] = reflect.TypeOf((*VmConfigFileInfo)(nil)).Elem() +} + +func (b *VmConfigFileQuery) GetVmConfigFileQuery() *VmConfigFileQuery { return b } + +type BaseVmConfigFileQuery interface { + GetVmConfigFileQuery() *VmConfigFileQuery +} + +func init() { + t["BaseVmConfigFileQuery"] = reflect.TypeOf((*VmConfigFileQuery)(nil)).Elem() +} + +func (b *VmConfigInfo) GetVmConfigInfo() *VmConfigInfo { return b } + +type BaseVmConfigInfo interface { + GetVmConfigInfo() *VmConfigInfo +} + +func init() { + t["BaseVmConfigInfo"] = reflect.TypeOf((*VmConfigInfo)(nil)).Elem() +} + +func (b *VmConfigSpec) GetVmConfigSpec() *VmConfigSpec { return b } + +type BaseVmConfigSpec interface { + GetVmConfigSpec() *VmConfigSpec +} + +func init() { + t["BaseVmConfigSpec"] = reflect.TypeOf((*VmConfigSpec)(nil)).Elem() +} + +func (b *VmDasBeingResetEvent) GetVmDasBeingResetEvent() *VmDasBeingResetEvent { return b } + +type BaseVmDasBeingResetEvent interface { + GetVmDasBeingResetEvent() *VmDasBeingResetEvent +} + +func init() { + t["BaseVmDasBeingResetEvent"] = reflect.TypeOf((*VmDasBeingResetEvent)(nil)).Elem() +} + +func (b *VmEvent) GetVmEvent() *VmEvent { return b } + +type BaseVmEvent interface { + GetVmEvent() *VmEvent +} + +func init() { + t["BaseVmEvent"] = reflect.TypeOf((*VmEvent)(nil)).Elem() +} + +func (b *VmFaultToleranceIssue) GetVmFaultToleranceIssue() *VmFaultToleranceIssue { return b } + +type BaseVmFaultToleranceIssue interface { + GetVmFaultToleranceIssue() *VmFaultToleranceIssue +} + +func init() { + t["BaseVmFaultToleranceIssue"] = reflect.TypeOf((*VmFaultToleranceIssue)(nil)).Elem() +} + +func (b *VmMigratedEvent) GetVmMigratedEvent() *VmMigratedEvent { return b } + +type BaseVmMigratedEvent interface { + GetVmMigratedEvent() *VmMigratedEvent +} + +func init() { + t["BaseVmMigratedEvent"] = reflect.TypeOf((*VmMigratedEvent)(nil)).Elem() +} + +func (b *VmPoweredOffEvent) GetVmPoweredOffEvent() *VmPoweredOffEvent { return b } + +type BaseVmPoweredOffEvent interface { + GetVmPoweredOffEvent() *VmPoweredOffEvent +} + +func init() { + t["BaseVmPoweredOffEvent"] = reflect.TypeOf((*VmPoweredOffEvent)(nil)).Elem() +} + +func (b *VmPoweredOnEvent) GetVmPoweredOnEvent() *VmPoweredOnEvent { return b } + +type BaseVmPoweredOnEvent interface { + GetVmPoweredOnEvent() *VmPoweredOnEvent +} + +func init() { + t["BaseVmPoweredOnEvent"] = reflect.TypeOf((*VmPoweredOnEvent)(nil)).Elem() +} + +func (b *VmRelocateSpecEvent) GetVmRelocateSpecEvent() *VmRelocateSpecEvent { return b } + +type BaseVmRelocateSpecEvent interface { + GetVmRelocateSpecEvent() *VmRelocateSpecEvent +} + +func init() { + t["BaseVmRelocateSpecEvent"] = reflect.TypeOf((*VmRelocateSpecEvent)(nil)).Elem() +} + +func (b *VmStartingEvent) GetVmStartingEvent() *VmStartingEvent { return b } + +type BaseVmStartingEvent interface { + GetVmStartingEvent() *VmStartingEvent +} + +func init() { + t["BaseVmStartingEvent"] = reflect.TypeOf((*VmStartingEvent)(nil)).Elem() +} + +func (b *VmToolsUpgradeFault) GetVmToolsUpgradeFault() *VmToolsUpgradeFault { return b } + +type BaseVmToolsUpgradeFault interface { + GetVmToolsUpgradeFault() *VmToolsUpgradeFault +} + +func init() { + t["BaseVmToolsUpgradeFault"] = reflect.TypeOf((*VmToolsUpgradeFault)(nil)).Elem() +} + +func (b *VmfsDatastoreBaseOption) GetVmfsDatastoreBaseOption() *VmfsDatastoreBaseOption { return b } + +type BaseVmfsDatastoreBaseOption interface { + GetVmfsDatastoreBaseOption() *VmfsDatastoreBaseOption +} + +func init() { + t["BaseVmfsDatastoreBaseOption"] = reflect.TypeOf((*VmfsDatastoreBaseOption)(nil)).Elem() +} + +func (b *VmfsDatastoreSingleExtentOption) GetVmfsDatastoreSingleExtentOption() *VmfsDatastoreSingleExtentOption { + return b +} + +type BaseVmfsDatastoreSingleExtentOption interface { + GetVmfsDatastoreSingleExtentOption() *VmfsDatastoreSingleExtentOption +} + +func init() { + t["BaseVmfsDatastoreSingleExtentOption"] = reflect.TypeOf((*VmfsDatastoreSingleExtentOption)(nil)).Elem() +} + +func (b *VmfsDatastoreSpec) GetVmfsDatastoreSpec() *VmfsDatastoreSpec { return b } + +type BaseVmfsDatastoreSpec interface { + GetVmfsDatastoreSpec() *VmfsDatastoreSpec +} + +func init() { + t["BaseVmfsDatastoreSpec"] = reflect.TypeOf((*VmfsDatastoreSpec)(nil)).Elem() +} + +func (b *VmfsMountFault) GetVmfsMountFault() *VmfsMountFault { return b } + +type BaseVmfsMountFault interface { + GetVmfsMountFault() *VmfsMountFault +} + +func init() { + t["BaseVmfsMountFault"] = reflect.TypeOf((*VmfsMountFault)(nil)).Elem() +} + +func (b *VmwareDistributedVirtualSwitchVlanSpec) GetVmwareDistributedVirtualSwitchVlanSpec() *VmwareDistributedVirtualSwitchVlanSpec { + return b +} + +type BaseVmwareDistributedVirtualSwitchVlanSpec interface { + GetVmwareDistributedVirtualSwitchVlanSpec() *VmwareDistributedVirtualSwitchVlanSpec +} + +func init() { + t["BaseVmwareDistributedVirtualSwitchVlanSpec"] = reflect.TypeOf((*VmwareDistributedVirtualSwitchVlanSpec)(nil)).Elem() +} + +func (b *VsanDiskFault) GetVsanDiskFault() *VsanDiskFault { return b } + +type BaseVsanDiskFault interface { + GetVsanDiskFault() *VsanDiskFault +} + +func init() { + t["BaseVsanDiskFault"] = reflect.TypeOf((*VsanDiskFault)(nil)).Elem() +} + +func (b *VsanFault) GetVsanFault() *VsanFault { return b } + +type BaseVsanFault interface { + GetVsanFault() *VsanFault +} + +func init() { + t["BaseVsanFault"] = reflect.TypeOf((*VsanFault)(nil)).Elem() +} + +func (b *VsanUpgradeSystemPreflightCheckIssue) GetVsanUpgradeSystemPreflightCheckIssue() *VsanUpgradeSystemPreflightCheckIssue { + return b +} + +type BaseVsanUpgradeSystemPreflightCheckIssue interface { + GetVsanUpgradeSystemPreflightCheckIssue() *VsanUpgradeSystemPreflightCheckIssue +} + +func init() { + t["BaseVsanUpgradeSystemPreflightCheckIssue"] = reflect.TypeOf((*VsanUpgradeSystemPreflightCheckIssue)(nil)).Elem() +} + +func (b *VsanUpgradeSystemUpgradeHistoryItem) GetVsanUpgradeSystemUpgradeHistoryItem() *VsanUpgradeSystemUpgradeHistoryItem { + return b +} + +type BaseVsanUpgradeSystemUpgradeHistoryItem interface { + GetVsanUpgradeSystemUpgradeHistoryItem() *VsanUpgradeSystemUpgradeHistoryItem +} + +func init() { + t["BaseVsanUpgradeSystemUpgradeHistoryItem"] = reflect.TypeOf((*VsanUpgradeSystemUpgradeHistoryItem)(nil)).Elem() +} + +func (b *VslmCreateSpecBackingSpec) GetVslmCreateSpecBackingSpec() *VslmCreateSpecBackingSpec { + return b +} + +type BaseVslmCreateSpecBackingSpec interface { + GetVslmCreateSpecBackingSpec() *VslmCreateSpecBackingSpec +} + +func init() { + t["BaseVslmCreateSpecBackingSpec"] = reflect.TypeOf((*VslmCreateSpecBackingSpec)(nil)).Elem() +} + +func (b *VslmMigrateSpec) GetVslmMigrateSpec() *VslmMigrateSpec { return b } + +type BaseVslmMigrateSpec interface { + GetVslmMigrateSpec() *VslmMigrateSpec +} + +func init() { + t["BaseVslmMigrateSpec"] = reflect.TypeOf((*VslmMigrateSpec)(nil)).Elem() +} diff --git a/vendor/github.com/vmware/govmomi/vim25/types/registry.go b/vendor/github.com/vmware/govmomi/vim25/types/registry.go new file mode 100644 index 0000000..ff7c302 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/types/registry.go @@ -0,0 +1,43 @@ +/* +Copyright (c) 2014 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package types + +import ( + "reflect" + "strings" +) + +var t = map[string]reflect.Type{} + +func Add(name string, kind reflect.Type) { + t[name] = kind +} + +type Func func(string) (reflect.Type, bool) + +func TypeFunc() Func { + return func(name string) (reflect.Type, bool) { + typ, ok := t[name] + if !ok { + // The /sdk endpoint does not prefix types with the namespace, + // but extension endpoints, such as /pbm/sdk do. + name = strings.TrimPrefix(name, "vim25:") + typ, ok = t[name] + } + return typ, ok + } +} diff --git a/vendor/github.com/vmware/govmomi/vim25/types/types.go b/vendor/github.com/vmware/govmomi/vim25/types/types.go new file mode 100644 index 0000000..e10cf82 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/types/types.go @@ -0,0 +1,57787 @@ +/* +Copyright (c) 2014-2018 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package types + +import ( + "reflect" + "time" +) + +type AbandonHciWorkflow AbandonHciWorkflowRequestType + +func init() { + t["AbandonHciWorkflow"] = reflect.TypeOf((*AbandonHciWorkflow)(nil)).Elem() +} + +type AbandonHciWorkflowRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["AbandonHciWorkflowRequestType"] = reflect.TypeOf((*AbandonHciWorkflowRequestType)(nil)).Elem() +} + +type AbandonHciWorkflowResponse struct { +} + +type AbdicateDomOwnership AbdicateDomOwnershipRequestType + +func init() { + t["AbdicateDomOwnership"] = reflect.TypeOf((*AbdicateDomOwnership)(nil)).Elem() +} + +type AbdicateDomOwnershipRequestType struct { + This ManagedObjectReference `xml:"_this"` + Uuids []string `xml:"uuids"` +} + +func init() { + t["AbdicateDomOwnershipRequestType"] = reflect.TypeOf((*AbdicateDomOwnershipRequestType)(nil)).Elem() +} + +type AbdicateDomOwnershipResponse struct { + Returnval []string `xml:"returnval,omitempty"` +} + +type AbortCustomizationRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` +} + +func init() { + t["AbortCustomizationRequestType"] = reflect.TypeOf((*AbortCustomizationRequestType)(nil)).Elem() +} + +type AbortCustomization_Task AbortCustomizationRequestType + +func init() { + t["AbortCustomization_Task"] = reflect.TypeOf((*AbortCustomization_Task)(nil)).Elem() +} + +type AbortCustomization_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type AboutInfo struct { + DynamicData + + Name string `xml:"name"` + FullName string `xml:"fullName"` + Vendor string `xml:"vendor"` + Version string `xml:"version"` + Build string `xml:"build"` + LocaleVersion string `xml:"localeVersion,omitempty"` + LocaleBuild string `xml:"localeBuild,omitempty"` + OsType string `xml:"osType"` + ProductLineId string `xml:"productLineId"` + ApiType string `xml:"apiType"` + ApiVersion string `xml:"apiVersion"` + InstanceUuid string `xml:"instanceUuid,omitempty"` + LicenseProductName string `xml:"licenseProductName,omitempty"` + LicenseProductVersion string `xml:"licenseProductVersion,omitempty"` +} + +func init() { + t["AboutInfo"] = reflect.TypeOf((*AboutInfo)(nil)).Elem() +} + +type AccountCreatedEvent struct { + HostEvent + + Spec BaseHostAccountSpec `xml:"spec,typeattr"` + Group bool `xml:"group"` +} + +func init() { + t["AccountCreatedEvent"] = reflect.TypeOf((*AccountCreatedEvent)(nil)).Elem() +} + +type AccountRemovedEvent struct { + HostEvent + + Account string `xml:"account"` + Group bool `xml:"group"` +} + +func init() { + t["AccountRemovedEvent"] = reflect.TypeOf((*AccountRemovedEvent)(nil)).Elem() +} + +type AccountUpdatedEvent struct { + HostEvent + + Spec BaseHostAccountSpec `xml:"spec,typeattr"` + Group bool `xml:"group"` + PrevDescription string `xml:"prevDescription,omitempty"` +} + +func init() { + t["AccountUpdatedEvent"] = reflect.TypeOf((*AccountUpdatedEvent)(nil)).Elem() +} + +type AcknowledgeAlarm AcknowledgeAlarmRequestType + +func init() { + t["AcknowledgeAlarm"] = reflect.TypeOf((*AcknowledgeAlarm)(nil)).Elem() +} + +type AcknowledgeAlarmRequestType struct { + This ManagedObjectReference `xml:"_this"` + Alarm ManagedObjectReference `xml:"alarm"` + Entity ManagedObjectReference `xml:"entity"` +} + +func init() { + t["AcknowledgeAlarmRequestType"] = reflect.TypeOf((*AcknowledgeAlarmRequestType)(nil)).Elem() +} + +type AcknowledgeAlarmResponse struct { +} + +type AcquireCimServicesTicket AcquireCimServicesTicketRequestType + +func init() { + t["AcquireCimServicesTicket"] = reflect.TypeOf((*AcquireCimServicesTicket)(nil)).Elem() +} + +type AcquireCimServicesTicketRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["AcquireCimServicesTicketRequestType"] = reflect.TypeOf((*AcquireCimServicesTicketRequestType)(nil)).Elem() +} + +type AcquireCimServicesTicketResponse struct { + Returnval HostServiceTicket `xml:"returnval"` +} + +type AcquireCloneTicket AcquireCloneTicketRequestType + +func init() { + t["AcquireCloneTicket"] = reflect.TypeOf((*AcquireCloneTicket)(nil)).Elem() +} + +type AcquireCloneTicketRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["AcquireCloneTicketRequestType"] = reflect.TypeOf((*AcquireCloneTicketRequestType)(nil)).Elem() +} + +type AcquireCloneTicketResponse struct { + Returnval string `xml:"returnval"` +} + +type AcquireCredentialsInGuest AcquireCredentialsInGuestRequestType + +func init() { + t["AcquireCredentialsInGuest"] = reflect.TypeOf((*AcquireCredentialsInGuest)(nil)).Elem() +} + +type AcquireCredentialsInGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + RequestedAuth BaseGuestAuthentication `xml:"requestedAuth,typeattr"` + SessionID int64 `xml:"sessionID,omitempty"` +} + +func init() { + t["AcquireCredentialsInGuestRequestType"] = reflect.TypeOf((*AcquireCredentialsInGuestRequestType)(nil)).Elem() +} + +type AcquireCredentialsInGuestResponse struct { + Returnval BaseGuestAuthentication `xml:"returnval,typeattr"` +} + +type AcquireGenericServiceTicket AcquireGenericServiceTicketRequestType + +func init() { + t["AcquireGenericServiceTicket"] = reflect.TypeOf((*AcquireGenericServiceTicket)(nil)).Elem() +} + +type AcquireGenericServiceTicketRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec BaseSessionManagerServiceRequestSpec `xml:"spec,typeattr"` +} + +func init() { + t["AcquireGenericServiceTicketRequestType"] = reflect.TypeOf((*AcquireGenericServiceTicketRequestType)(nil)).Elem() +} + +type AcquireGenericServiceTicketResponse struct { + Returnval SessionManagerGenericServiceTicket `xml:"returnval"` +} + +type AcquireLocalTicket AcquireLocalTicketRequestType + +func init() { + t["AcquireLocalTicket"] = reflect.TypeOf((*AcquireLocalTicket)(nil)).Elem() +} + +type AcquireLocalTicketRequestType struct { + This ManagedObjectReference `xml:"_this"` + UserName string `xml:"userName"` +} + +func init() { + t["AcquireLocalTicketRequestType"] = reflect.TypeOf((*AcquireLocalTicketRequestType)(nil)).Elem() +} + +type AcquireLocalTicketResponse struct { + Returnval SessionManagerLocalTicket `xml:"returnval"` +} + +type AcquireMksTicket AcquireMksTicketRequestType + +func init() { + t["AcquireMksTicket"] = reflect.TypeOf((*AcquireMksTicket)(nil)).Elem() +} + +type AcquireMksTicketRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["AcquireMksTicketRequestType"] = reflect.TypeOf((*AcquireMksTicketRequestType)(nil)).Elem() +} + +type AcquireMksTicketResponse struct { + Returnval VirtualMachineMksTicket `xml:"returnval"` +} + +type AcquireTicket AcquireTicketRequestType + +func init() { + t["AcquireTicket"] = reflect.TypeOf((*AcquireTicket)(nil)).Elem() +} + +type AcquireTicketRequestType struct { + This ManagedObjectReference `xml:"_this"` + TicketType string `xml:"ticketType"` +} + +func init() { + t["AcquireTicketRequestType"] = reflect.TypeOf((*AcquireTicketRequestType)(nil)).Elem() +} + +type AcquireTicketResponse struct { + Returnval VirtualMachineTicket `xml:"returnval"` +} + +type Action struct { + DynamicData +} + +func init() { + t["Action"] = reflect.TypeOf((*Action)(nil)).Elem() +} + +type ActiveDirectoryFault struct { + VimFault + + ErrorCode int32 `xml:"errorCode,omitempty"` +} + +func init() { + t["ActiveDirectoryFault"] = reflect.TypeOf((*ActiveDirectoryFault)(nil)).Elem() +} + +type ActiveDirectoryFaultFault BaseActiveDirectoryFault + +func init() { + t["ActiveDirectoryFaultFault"] = reflect.TypeOf((*ActiveDirectoryFaultFault)(nil)).Elem() +} + +type ActiveDirectoryProfile struct { + ApplyProfile +} + +func init() { + t["ActiveDirectoryProfile"] = reflect.TypeOf((*ActiveDirectoryProfile)(nil)).Elem() +} + +type ActiveVMsBlockingEVC struct { + EVCConfigFault + + EvcMode string `xml:"evcMode,omitempty"` + Host []ManagedObjectReference `xml:"host,omitempty"` + HostName []string `xml:"hostName,omitempty"` +} + +func init() { + t["ActiveVMsBlockingEVC"] = reflect.TypeOf((*ActiveVMsBlockingEVC)(nil)).Elem() +} + +type ActiveVMsBlockingEVCFault ActiveVMsBlockingEVC + +func init() { + t["ActiveVMsBlockingEVCFault"] = reflect.TypeOf((*ActiveVMsBlockingEVCFault)(nil)).Elem() +} + +type AddAuthorizationRole AddAuthorizationRoleRequestType + +func init() { + t["AddAuthorizationRole"] = reflect.TypeOf((*AddAuthorizationRole)(nil)).Elem() +} + +type AddAuthorizationRoleRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + PrivIds []string `xml:"privIds,omitempty"` +} + +func init() { + t["AddAuthorizationRoleRequestType"] = reflect.TypeOf((*AddAuthorizationRoleRequestType)(nil)).Elem() +} + +type AddAuthorizationRoleResponse struct { + Returnval int32 `xml:"returnval"` +} + +type AddCustomFieldDef AddCustomFieldDefRequestType + +func init() { + t["AddCustomFieldDef"] = reflect.TypeOf((*AddCustomFieldDef)(nil)).Elem() +} + +type AddCustomFieldDefRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + MoType string `xml:"moType,omitempty"` + FieldDefPolicy *PrivilegePolicyDef `xml:"fieldDefPolicy,omitempty"` + FieldPolicy *PrivilegePolicyDef `xml:"fieldPolicy,omitempty"` +} + +func init() { + t["AddCustomFieldDefRequestType"] = reflect.TypeOf((*AddCustomFieldDefRequestType)(nil)).Elem() +} + +type AddCustomFieldDefResponse struct { + Returnval CustomFieldDef `xml:"returnval"` +} + +type AddDVPortgroupRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec []DVPortgroupConfigSpec `xml:"spec"` +} + +func init() { + t["AddDVPortgroupRequestType"] = reflect.TypeOf((*AddDVPortgroupRequestType)(nil)).Elem() +} + +type AddDVPortgroup_Task AddDVPortgroupRequestType + +func init() { + t["AddDVPortgroup_Task"] = reflect.TypeOf((*AddDVPortgroup_Task)(nil)).Elem() +} + +type AddDVPortgroup_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type AddDisksRequestType struct { + This ManagedObjectReference `xml:"_this"` + Disk []HostScsiDisk `xml:"disk"` +} + +func init() { + t["AddDisksRequestType"] = reflect.TypeOf((*AddDisksRequestType)(nil)).Elem() +} + +type AddDisks_Task AddDisksRequestType + +func init() { + t["AddDisks_Task"] = reflect.TypeOf((*AddDisks_Task)(nil)).Elem() +} + +type AddDisks_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type AddFilter AddFilterRequestType + +func init() { + t["AddFilter"] = reflect.TypeOf((*AddFilter)(nil)).Elem() +} + +type AddFilterEntities AddFilterEntitiesRequestType + +func init() { + t["AddFilterEntities"] = reflect.TypeOf((*AddFilterEntities)(nil)).Elem() +} + +type AddFilterEntitiesRequestType struct { + This ManagedObjectReference `xml:"_this"` + FilterId string `xml:"filterId"` + Entities []ManagedObjectReference `xml:"entities,omitempty"` +} + +func init() { + t["AddFilterEntitiesRequestType"] = reflect.TypeOf((*AddFilterEntitiesRequestType)(nil)).Elem() +} + +type AddFilterEntitiesResponse struct { +} + +type AddFilterRequestType struct { + This ManagedObjectReference `xml:"_this"` + ProviderId string `xml:"providerId"` + FilterName string `xml:"filterName"` + InfoIds []string `xml:"infoIds,omitempty"` +} + +func init() { + t["AddFilterRequestType"] = reflect.TypeOf((*AddFilterRequestType)(nil)).Elem() +} + +type AddFilterResponse struct { + Returnval string `xml:"returnval"` +} + +type AddGuestAlias AddGuestAliasRequestType + +func init() { + t["AddGuestAlias"] = reflect.TypeOf((*AddGuestAlias)(nil)).Elem() +} + +type AddGuestAliasRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + Username string `xml:"username"` + MapCert bool `xml:"mapCert"` + Base64Cert string `xml:"base64Cert"` + AliasInfo GuestAuthAliasInfo `xml:"aliasInfo"` +} + +func init() { + t["AddGuestAliasRequestType"] = reflect.TypeOf((*AddGuestAliasRequestType)(nil)).Elem() +} + +type AddGuestAliasResponse struct { +} + +type AddHostRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec HostConnectSpec `xml:"spec"` + AsConnected bool `xml:"asConnected"` + ResourcePool *ManagedObjectReference `xml:"resourcePool,omitempty"` + License string `xml:"license,omitempty"` +} + +func init() { + t["AddHostRequestType"] = reflect.TypeOf((*AddHostRequestType)(nil)).Elem() +} + +type AddHost_Task AddHostRequestType + +func init() { + t["AddHost_Task"] = reflect.TypeOf((*AddHost_Task)(nil)).Elem() +} + +type AddHost_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type AddInternetScsiSendTargets AddInternetScsiSendTargetsRequestType + +func init() { + t["AddInternetScsiSendTargets"] = reflect.TypeOf((*AddInternetScsiSendTargets)(nil)).Elem() +} + +type AddInternetScsiSendTargetsRequestType struct { + This ManagedObjectReference `xml:"_this"` + IScsiHbaDevice string `xml:"iScsiHbaDevice"` + Targets []HostInternetScsiHbaSendTarget `xml:"targets"` +} + +func init() { + t["AddInternetScsiSendTargetsRequestType"] = reflect.TypeOf((*AddInternetScsiSendTargetsRequestType)(nil)).Elem() +} + +type AddInternetScsiSendTargetsResponse struct { +} + +type AddInternetScsiStaticTargets AddInternetScsiStaticTargetsRequestType + +func init() { + t["AddInternetScsiStaticTargets"] = reflect.TypeOf((*AddInternetScsiStaticTargets)(nil)).Elem() +} + +type AddInternetScsiStaticTargetsRequestType struct { + This ManagedObjectReference `xml:"_this"` + IScsiHbaDevice string `xml:"iScsiHbaDevice"` + Targets []HostInternetScsiHbaStaticTarget `xml:"targets"` +} + +func init() { + t["AddInternetScsiStaticTargetsRequestType"] = reflect.TypeOf((*AddInternetScsiStaticTargetsRequestType)(nil)).Elem() +} + +type AddInternetScsiStaticTargetsResponse struct { +} + +type AddKey AddKeyRequestType + +func init() { + t["AddKey"] = reflect.TypeOf((*AddKey)(nil)).Elem() +} + +type AddKeyRequestType struct { + This ManagedObjectReference `xml:"_this"` + Key CryptoKeyPlain `xml:"key"` +} + +func init() { + t["AddKeyRequestType"] = reflect.TypeOf((*AddKeyRequestType)(nil)).Elem() +} + +type AddKeyResponse struct { +} + +type AddKeys AddKeysRequestType + +func init() { + t["AddKeys"] = reflect.TypeOf((*AddKeys)(nil)).Elem() +} + +type AddKeysRequestType struct { + This ManagedObjectReference `xml:"_this"` + Keys []CryptoKeyPlain `xml:"keys,omitempty"` +} + +func init() { + t["AddKeysRequestType"] = reflect.TypeOf((*AddKeysRequestType)(nil)).Elem() +} + +type AddKeysResponse struct { + Returnval []CryptoKeyResult `xml:"returnval,omitempty"` +} + +type AddLicense AddLicenseRequestType + +func init() { + t["AddLicense"] = reflect.TypeOf((*AddLicense)(nil)).Elem() +} + +type AddLicenseRequestType struct { + This ManagedObjectReference `xml:"_this"` + LicenseKey string `xml:"licenseKey"` + Labels []KeyValue `xml:"labels,omitempty"` +} + +func init() { + t["AddLicenseRequestType"] = reflect.TypeOf((*AddLicenseRequestType)(nil)).Elem() +} + +type AddLicenseResponse struct { + Returnval LicenseManagerLicenseInfo `xml:"returnval"` +} + +type AddMonitoredEntities AddMonitoredEntitiesRequestType + +func init() { + t["AddMonitoredEntities"] = reflect.TypeOf((*AddMonitoredEntities)(nil)).Elem() +} + +type AddMonitoredEntitiesRequestType struct { + This ManagedObjectReference `xml:"_this"` + ProviderId string `xml:"providerId"` + Entities []ManagedObjectReference `xml:"entities,omitempty"` +} + +func init() { + t["AddMonitoredEntitiesRequestType"] = reflect.TypeOf((*AddMonitoredEntitiesRequestType)(nil)).Elem() +} + +type AddMonitoredEntitiesResponse struct { +} + +type AddNetworkResourcePool AddNetworkResourcePoolRequestType + +func init() { + t["AddNetworkResourcePool"] = reflect.TypeOf((*AddNetworkResourcePool)(nil)).Elem() +} + +type AddNetworkResourcePoolRequestType struct { + This ManagedObjectReference `xml:"_this"` + ConfigSpec []DVSNetworkResourcePoolConfigSpec `xml:"configSpec"` +} + +func init() { + t["AddNetworkResourcePoolRequestType"] = reflect.TypeOf((*AddNetworkResourcePoolRequestType)(nil)).Elem() +} + +type AddNetworkResourcePoolResponse struct { +} + +type AddPortGroup AddPortGroupRequestType + +func init() { + t["AddPortGroup"] = reflect.TypeOf((*AddPortGroup)(nil)).Elem() +} + +type AddPortGroupRequestType struct { + This ManagedObjectReference `xml:"_this"` + Portgrp HostPortGroupSpec `xml:"portgrp"` +} + +func init() { + t["AddPortGroupRequestType"] = reflect.TypeOf((*AddPortGroupRequestType)(nil)).Elem() +} + +type AddPortGroupResponse struct { +} + +type AddServiceConsoleVirtualNic AddServiceConsoleVirtualNicRequestType + +func init() { + t["AddServiceConsoleVirtualNic"] = reflect.TypeOf((*AddServiceConsoleVirtualNic)(nil)).Elem() +} + +type AddServiceConsoleVirtualNicRequestType struct { + This ManagedObjectReference `xml:"_this"` + Portgroup string `xml:"portgroup"` + Nic HostVirtualNicSpec `xml:"nic"` +} + +func init() { + t["AddServiceConsoleVirtualNicRequestType"] = reflect.TypeOf((*AddServiceConsoleVirtualNicRequestType)(nil)).Elem() +} + +type AddServiceConsoleVirtualNicResponse struct { + Returnval string `xml:"returnval"` +} + +type AddStandaloneHostRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec HostConnectSpec `xml:"spec"` + CompResSpec BaseComputeResourceConfigSpec `xml:"compResSpec,omitempty,typeattr"` + AddConnected bool `xml:"addConnected"` + License string `xml:"license,omitempty"` +} + +func init() { + t["AddStandaloneHostRequestType"] = reflect.TypeOf((*AddStandaloneHostRequestType)(nil)).Elem() +} + +type AddStandaloneHost_Task AddStandaloneHostRequestType + +func init() { + t["AddStandaloneHost_Task"] = reflect.TypeOf((*AddStandaloneHost_Task)(nil)).Elem() +} + +type AddStandaloneHost_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type AddVirtualNic AddVirtualNicRequestType + +func init() { + t["AddVirtualNic"] = reflect.TypeOf((*AddVirtualNic)(nil)).Elem() +} + +type AddVirtualNicRequestType struct { + This ManagedObjectReference `xml:"_this"` + Portgroup string `xml:"portgroup"` + Nic HostVirtualNicSpec `xml:"nic"` +} + +func init() { + t["AddVirtualNicRequestType"] = reflect.TypeOf((*AddVirtualNicRequestType)(nil)).Elem() +} + +type AddVirtualNicResponse struct { + Returnval string `xml:"returnval"` +} + +type AddVirtualSwitch AddVirtualSwitchRequestType + +func init() { + t["AddVirtualSwitch"] = reflect.TypeOf((*AddVirtualSwitch)(nil)).Elem() +} + +type AddVirtualSwitchRequestType struct { + This ManagedObjectReference `xml:"_this"` + VswitchName string `xml:"vswitchName"` + Spec *HostVirtualSwitchSpec `xml:"spec,omitempty"` +} + +func init() { + t["AddVirtualSwitchRequestType"] = reflect.TypeOf((*AddVirtualSwitchRequestType)(nil)).Elem() +} + +type AddVirtualSwitchResponse struct { +} + +type AdminDisabled struct { + HostConfigFault +} + +func init() { + t["AdminDisabled"] = reflect.TypeOf((*AdminDisabled)(nil)).Elem() +} + +type AdminDisabledFault AdminDisabled + +func init() { + t["AdminDisabledFault"] = reflect.TypeOf((*AdminDisabledFault)(nil)).Elem() +} + +type AdminNotDisabled struct { + HostConfigFault +} + +func init() { + t["AdminNotDisabled"] = reflect.TypeOf((*AdminNotDisabled)(nil)).Elem() +} + +type AdminNotDisabledFault AdminNotDisabled + +func init() { + t["AdminNotDisabledFault"] = reflect.TypeOf((*AdminNotDisabledFault)(nil)).Elem() +} + +type AdminPasswordNotChangedEvent struct { + HostEvent +} + +func init() { + t["AdminPasswordNotChangedEvent"] = reflect.TypeOf((*AdminPasswordNotChangedEvent)(nil)).Elem() +} + +type AffinityConfigured struct { + MigrationFault + + ConfiguredAffinity []string `xml:"configuredAffinity"` +} + +func init() { + t["AffinityConfigured"] = reflect.TypeOf((*AffinityConfigured)(nil)).Elem() +} + +type AffinityConfiguredFault AffinityConfigured + +func init() { + t["AffinityConfiguredFault"] = reflect.TypeOf((*AffinityConfiguredFault)(nil)).Elem() +} + +type AfterStartupTaskScheduler struct { + TaskScheduler + + Minute int32 `xml:"minute"` +} + +func init() { + t["AfterStartupTaskScheduler"] = reflect.TypeOf((*AfterStartupTaskScheduler)(nil)).Elem() +} + +type AgentInstallFailed struct { + HostConnectFault + + Reason string `xml:"reason,omitempty"` + StatusCode int32 `xml:"statusCode,omitempty"` + InstallerOutput string `xml:"installerOutput,omitempty"` +} + +func init() { + t["AgentInstallFailed"] = reflect.TypeOf((*AgentInstallFailed)(nil)).Elem() +} + +type AgentInstallFailedFault AgentInstallFailed + +func init() { + t["AgentInstallFailedFault"] = reflect.TypeOf((*AgentInstallFailedFault)(nil)).Elem() +} + +type AlarmAcknowledgedEvent struct { + AlarmEvent + + Source ManagedEntityEventArgument `xml:"source"` + Entity ManagedEntityEventArgument `xml:"entity"` +} + +func init() { + t["AlarmAcknowledgedEvent"] = reflect.TypeOf((*AlarmAcknowledgedEvent)(nil)).Elem() +} + +type AlarmAction struct { + DynamicData +} + +func init() { + t["AlarmAction"] = reflect.TypeOf((*AlarmAction)(nil)).Elem() +} + +type AlarmActionTriggeredEvent struct { + AlarmEvent + + Source ManagedEntityEventArgument `xml:"source"` + Entity ManagedEntityEventArgument `xml:"entity"` +} + +func init() { + t["AlarmActionTriggeredEvent"] = reflect.TypeOf((*AlarmActionTriggeredEvent)(nil)).Elem() +} + +type AlarmClearedEvent struct { + AlarmEvent + + Source ManagedEntityEventArgument `xml:"source"` + Entity ManagedEntityEventArgument `xml:"entity"` + From string `xml:"from"` +} + +func init() { + t["AlarmClearedEvent"] = reflect.TypeOf((*AlarmClearedEvent)(nil)).Elem() +} + +type AlarmCreatedEvent struct { + AlarmEvent + + Entity ManagedEntityEventArgument `xml:"entity"` +} + +func init() { + t["AlarmCreatedEvent"] = reflect.TypeOf((*AlarmCreatedEvent)(nil)).Elem() +} + +type AlarmDescription struct { + DynamicData + + Expr []BaseTypeDescription `xml:"expr,typeattr"` + StateOperator []BaseElementDescription `xml:"stateOperator,typeattr"` + MetricOperator []BaseElementDescription `xml:"metricOperator,typeattr"` + HostSystemConnectionState []BaseElementDescription `xml:"hostSystemConnectionState,typeattr"` + VirtualMachinePowerState []BaseElementDescription `xml:"virtualMachinePowerState,typeattr"` + DatastoreConnectionState []BaseElementDescription `xml:"datastoreConnectionState,omitempty,typeattr"` + HostSystemPowerState []BaseElementDescription `xml:"hostSystemPowerState,omitempty,typeattr"` + VirtualMachineGuestHeartbeatStatus []BaseElementDescription `xml:"virtualMachineGuestHeartbeatStatus,omitempty,typeattr"` + EntityStatus []BaseElementDescription `xml:"entityStatus,typeattr"` + Action []BaseTypeDescription `xml:"action,typeattr"` +} + +func init() { + t["AlarmDescription"] = reflect.TypeOf((*AlarmDescription)(nil)).Elem() +} + +type AlarmEmailCompletedEvent struct { + AlarmEvent + + Entity ManagedEntityEventArgument `xml:"entity"` + To string `xml:"to"` +} + +func init() { + t["AlarmEmailCompletedEvent"] = reflect.TypeOf((*AlarmEmailCompletedEvent)(nil)).Elem() +} + +type AlarmEmailFailedEvent struct { + AlarmEvent + + Entity ManagedEntityEventArgument `xml:"entity"` + To string `xml:"to"` + Reason LocalizedMethodFault `xml:"reason"` +} + +func init() { + t["AlarmEmailFailedEvent"] = reflect.TypeOf((*AlarmEmailFailedEvent)(nil)).Elem() +} + +type AlarmEvent struct { + Event + + Alarm AlarmEventArgument `xml:"alarm"` +} + +func init() { + t["AlarmEvent"] = reflect.TypeOf((*AlarmEvent)(nil)).Elem() +} + +type AlarmEventArgument struct { + EntityEventArgument + + Alarm ManagedObjectReference `xml:"alarm"` +} + +func init() { + t["AlarmEventArgument"] = reflect.TypeOf((*AlarmEventArgument)(nil)).Elem() +} + +type AlarmExpression struct { + DynamicData +} + +func init() { + t["AlarmExpression"] = reflect.TypeOf((*AlarmExpression)(nil)).Elem() +} + +type AlarmFilterSpec struct { + DynamicData + + Status []ManagedEntityStatus `xml:"status,omitempty"` + TypeEntity string `xml:"typeEntity,omitempty"` + TypeTrigger string `xml:"typeTrigger,omitempty"` +} + +func init() { + t["AlarmFilterSpec"] = reflect.TypeOf((*AlarmFilterSpec)(nil)).Elem() +} + +type AlarmInfo struct { + AlarmSpec + + Key string `xml:"key"` + Alarm ManagedObjectReference `xml:"alarm"` + Entity ManagedObjectReference `xml:"entity"` + LastModifiedTime time.Time `xml:"lastModifiedTime"` + LastModifiedUser string `xml:"lastModifiedUser"` + CreationEventId int32 `xml:"creationEventId"` +} + +func init() { + t["AlarmInfo"] = reflect.TypeOf((*AlarmInfo)(nil)).Elem() +} + +type AlarmReconfiguredEvent struct { + AlarmEvent + + Entity ManagedEntityEventArgument `xml:"entity"` + ConfigChanges *ChangesInfoEventArgument `xml:"configChanges,omitempty"` +} + +func init() { + t["AlarmReconfiguredEvent"] = reflect.TypeOf((*AlarmReconfiguredEvent)(nil)).Elem() +} + +type AlarmRemovedEvent struct { + AlarmEvent + + Entity ManagedEntityEventArgument `xml:"entity"` +} + +func init() { + t["AlarmRemovedEvent"] = reflect.TypeOf((*AlarmRemovedEvent)(nil)).Elem() +} + +type AlarmScriptCompleteEvent struct { + AlarmEvent + + Entity ManagedEntityEventArgument `xml:"entity"` + Script string `xml:"script"` +} + +func init() { + t["AlarmScriptCompleteEvent"] = reflect.TypeOf((*AlarmScriptCompleteEvent)(nil)).Elem() +} + +type AlarmScriptFailedEvent struct { + AlarmEvent + + Entity ManagedEntityEventArgument `xml:"entity"` + Script string `xml:"script"` + Reason LocalizedMethodFault `xml:"reason"` +} + +func init() { + t["AlarmScriptFailedEvent"] = reflect.TypeOf((*AlarmScriptFailedEvent)(nil)).Elem() +} + +type AlarmSetting struct { + DynamicData + + ToleranceRange int32 `xml:"toleranceRange"` + ReportingFrequency int32 `xml:"reportingFrequency"` +} + +func init() { + t["AlarmSetting"] = reflect.TypeOf((*AlarmSetting)(nil)).Elem() +} + +type AlarmSnmpCompletedEvent struct { + AlarmEvent + + Entity ManagedEntityEventArgument `xml:"entity"` +} + +func init() { + t["AlarmSnmpCompletedEvent"] = reflect.TypeOf((*AlarmSnmpCompletedEvent)(nil)).Elem() +} + +type AlarmSnmpFailedEvent struct { + AlarmEvent + + Entity ManagedEntityEventArgument `xml:"entity"` + Reason LocalizedMethodFault `xml:"reason"` +} + +func init() { + t["AlarmSnmpFailedEvent"] = reflect.TypeOf((*AlarmSnmpFailedEvent)(nil)).Elem() +} + +type AlarmSpec struct { + DynamicData + + Name string `xml:"name"` + SystemName string `xml:"systemName,omitempty"` + Description string `xml:"description"` + Enabled bool `xml:"enabled"` + Expression BaseAlarmExpression `xml:"expression,typeattr"` + Action BaseAlarmAction `xml:"action,omitempty,typeattr"` + ActionFrequency int32 `xml:"actionFrequency,omitempty"` + Setting *AlarmSetting `xml:"setting,omitempty"` +} + +func init() { + t["AlarmSpec"] = reflect.TypeOf((*AlarmSpec)(nil)).Elem() +} + +type AlarmState struct { + DynamicData + + Key string `xml:"key"` + Entity ManagedObjectReference `xml:"entity"` + Alarm ManagedObjectReference `xml:"alarm"` + OverallStatus ManagedEntityStatus `xml:"overallStatus"` + Time time.Time `xml:"time"` + Acknowledged *bool `xml:"acknowledged"` + AcknowledgedByUser string `xml:"acknowledgedByUser,omitempty"` + AcknowledgedTime *time.Time `xml:"acknowledgedTime"` + EventKey int32 `xml:"eventKey,omitempty"` + Disabled *bool `xml:"disabled"` +} + +func init() { + t["AlarmState"] = reflect.TypeOf((*AlarmState)(nil)).Elem() +} + +type AlarmStatusChangedEvent struct { + AlarmEvent + + Source ManagedEntityEventArgument `xml:"source"` + Entity ManagedEntityEventArgument `xml:"entity"` + From string `xml:"from"` + To string `xml:"to"` +} + +func init() { + t["AlarmStatusChangedEvent"] = reflect.TypeOf((*AlarmStatusChangedEvent)(nil)).Elem() +} + +type AlarmTriggeringAction struct { + AlarmAction + + Action BaseAction `xml:"action,typeattr"` + TransitionSpecs []AlarmTriggeringActionTransitionSpec `xml:"transitionSpecs,omitempty"` + Green2yellow bool `xml:"green2yellow"` + Yellow2red bool `xml:"yellow2red"` + Red2yellow bool `xml:"red2yellow"` + Yellow2green bool `xml:"yellow2green"` +} + +func init() { + t["AlarmTriggeringAction"] = reflect.TypeOf((*AlarmTriggeringAction)(nil)).Elem() +} + +type AlarmTriggeringActionTransitionSpec struct { + DynamicData + + StartState ManagedEntityStatus `xml:"startState"` + FinalState ManagedEntityStatus `xml:"finalState"` + Repeats bool `xml:"repeats"` +} + +func init() { + t["AlarmTriggeringActionTransitionSpec"] = reflect.TypeOf((*AlarmTriggeringActionTransitionSpec)(nil)).Elem() +} + +type AllVirtualMachinesLicensedEvent struct { + LicenseEvent +} + +func init() { + t["AllVirtualMachinesLicensedEvent"] = reflect.TypeOf((*AllVirtualMachinesLicensedEvent)(nil)).Elem() +} + +type AllocateIpv4Address AllocateIpv4AddressRequestType + +func init() { + t["AllocateIpv4Address"] = reflect.TypeOf((*AllocateIpv4Address)(nil)).Elem() +} + +type AllocateIpv4AddressRequestType struct { + This ManagedObjectReference `xml:"_this"` + Dc ManagedObjectReference `xml:"dc"` + PoolId int32 `xml:"poolId"` + AllocationId string `xml:"allocationId"` +} + +func init() { + t["AllocateIpv4AddressRequestType"] = reflect.TypeOf((*AllocateIpv4AddressRequestType)(nil)).Elem() +} + +type AllocateIpv4AddressResponse struct { + Returnval string `xml:"returnval"` +} + +type AllocateIpv6Address AllocateIpv6AddressRequestType + +func init() { + t["AllocateIpv6Address"] = reflect.TypeOf((*AllocateIpv6Address)(nil)).Elem() +} + +type AllocateIpv6AddressRequestType struct { + This ManagedObjectReference `xml:"_this"` + Dc ManagedObjectReference `xml:"dc"` + PoolId int32 `xml:"poolId"` + AllocationId string `xml:"allocationId"` +} + +func init() { + t["AllocateIpv6AddressRequestType"] = reflect.TypeOf((*AllocateIpv6AddressRequestType)(nil)).Elem() +} + +type AllocateIpv6AddressResponse struct { + Returnval string `xml:"returnval"` +} + +type AlreadyAuthenticatedSessionEvent struct { + SessionEvent +} + +func init() { + t["AlreadyAuthenticatedSessionEvent"] = reflect.TypeOf((*AlreadyAuthenticatedSessionEvent)(nil)).Elem() +} + +type AlreadyBeingManaged struct { + HostConnectFault + + IpAddress string `xml:"ipAddress"` +} + +func init() { + t["AlreadyBeingManaged"] = reflect.TypeOf((*AlreadyBeingManaged)(nil)).Elem() +} + +type AlreadyBeingManagedFault AlreadyBeingManaged + +func init() { + t["AlreadyBeingManagedFault"] = reflect.TypeOf((*AlreadyBeingManagedFault)(nil)).Elem() +} + +type AlreadyConnected struct { + HostConnectFault + + Name string `xml:"name"` +} + +func init() { + t["AlreadyConnected"] = reflect.TypeOf((*AlreadyConnected)(nil)).Elem() +} + +type AlreadyConnectedFault AlreadyConnected + +func init() { + t["AlreadyConnectedFault"] = reflect.TypeOf((*AlreadyConnectedFault)(nil)).Elem() +} + +type AlreadyExists struct { + VimFault + + Name string `xml:"name,omitempty"` +} + +func init() { + t["AlreadyExists"] = reflect.TypeOf((*AlreadyExists)(nil)).Elem() +} + +type AlreadyExistsFault AlreadyExists + +func init() { + t["AlreadyExistsFault"] = reflect.TypeOf((*AlreadyExistsFault)(nil)).Elem() +} + +type AlreadyUpgraded struct { + VimFault +} + +func init() { + t["AlreadyUpgraded"] = reflect.TypeOf((*AlreadyUpgraded)(nil)).Elem() +} + +type AlreadyUpgradedFault AlreadyUpgraded + +func init() { + t["AlreadyUpgradedFault"] = reflect.TypeOf((*AlreadyUpgradedFault)(nil)).Elem() +} + +type AndAlarmExpression struct { + AlarmExpression + + Expression []BaseAlarmExpression `xml:"expression,typeattr"` +} + +func init() { + t["AndAlarmExpression"] = reflect.TypeOf((*AndAlarmExpression)(nil)).Elem() +} + +type AnswerFile struct { + DynamicData + + UserInput []ProfileDeferredPolicyOptionParameter `xml:"userInput,omitempty"` + CreatedTime time.Time `xml:"createdTime"` + ModifiedTime time.Time `xml:"modifiedTime"` +} + +func init() { + t["AnswerFile"] = reflect.TypeOf((*AnswerFile)(nil)).Elem() +} + +type AnswerFileCreateSpec struct { + DynamicData + + Validating *bool `xml:"validating"` +} + +func init() { + t["AnswerFileCreateSpec"] = reflect.TypeOf((*AnswerFileCreateSpec)(nil)).Elem() +} + +type AnswerFileOptionsCreateSpec struct { + AnswerFileCreateSpec + + UserInput []ProfileDeferredPolicyOptionParameter `xml:"userInput,omitempty"` +} + +func init() { + t["AnswerFileOptionsCreateSpec"] = reflect.TypeOf((*AnswerFileOptionsCreateSpec)(nil)).Elem() +} + +type AnswerFileSerializedCreateSpec struct { + AnswerFileCreateSpec + + AnswerFileConfigString string `xml:"answerFileConfigString"` +} + +func init() { + t["AnswerFileSerializedCreateSpec"] = reflect.TypeOf((*AnswerFileSerializedCreateSpec)(nil)).Elem() +} + +type AnswerFileStatusError struct { + DynamicData + + UserInputPath ProfilePropertyPath `xml:"userInputPath"` + ErrMsg LocalizableMessage `xml:"errMsg"` +} + +func init() { + t["AnswerFileStatusError"] = reflect.TypeOf((*AnswerFileStatusError)(nil)).Elem() +} + +type AnswerFileStatusResult struct { + DynamicData + + CheckedTime time.Time `xml:"checkedTime"` + Host ManagedObjectReference `xml:"host"` + Status string `xml:"status"` + Error []AnswerFileStatusError `xml:"error,omitempty"` +} + +func init() { + t["AnswerFileStatusResult"] = reflect.TypeOf((*AnswerFileStatusResult)(nil)).Elem() +} + +type AnswerFileUpdateFailed struct { + VimFault + + Failure []AnswerFileUpdateFailure `xml:"failure"` +} + +func init() { + t["AnswerFileUpdateFailed"] = reflect.TypeOf((*AnswerFileUpdateFailed)(nil)).Elem() +} + +type AnswerFileUpdateFailedFault AnswerFileUpdateFailed + +func init() { + t["AnswerFileUpdateFailedFault"] = reflect.TypeOf((*AnswerFileUpdateFailedFault)(nil)).Elem() +} + +type AnswerFileUpdateFailure struct { + DynamicData + + UserInputPath ProfilePropertyPath `xml:"userInputPath"` + ErrMsg LocalizableMessage `xml:"errMsg"` +} + +func init() { + t["AnswerFileUpdateFailure"] = reflect.TypeOf((*AnswerFileUpdateFailure)(nil)).Elem() +} + +type AnswerVM AnswerVMRequestType + +func init() { + t["AnswerVM"] = reflect.TypeOf((*AnswerVM)(nil)).Elem() +} + +type AnswerVMRequestType struct { + This ManagedObjectReference `xml:"_this"` + QuestionId string `xml:"questionId"` + AnswerChoice string `xml:"answerChoice"` +} + +func init() { + t["AnswerVMRequestType"] = reflect.TypeOf((*AnswerVMRequestType)(nil)).Elem() +} + +type AnswerVMResponse struct { +} + +type ApplicationQuiesceFault struct { + SnapshotFault +} + +func init() { + t["ApplicationQuiesceFault"] = reflect.TypeOf((*ApplicationQuiesceFault)(nil)).Elem() +} + +type ApplicationQuiesceFaultFault ApplicationQuiesceFault + +func init() { + t["ApplicationQuiesceFaultFault"] = reflect.TypeOf((*ApplicationQuiesceFaultFault)(nil)).Elem() +} + +type ApplyEntitiesConfigRequestType struct { + This ManagedObjectReference `xml:"_this"` + ApplyConfigSpecs []ApplyHostProfileConfigurationSpec `xml:"applyConfigSpecs,omitempty"` +} + +func init() { + t["ApplyEntitiesConfigRequestType"] = reflect.TypeOf((*ApplyEntitiesConfigRequestType)(nil)).Elem() +} + +type ApplyEntitiesConfig_Task ApplyEntitiesConfigRequestType + +func init() { + t["ApplyEntitiesConfig_Task"] = reflect.TypeOf((*ApplyEntitiesConfig_Task)(nil)).Elem() +} + +type ApplyEntitiesConfig_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ApplyEvcModeVMRequestType struct { + This ManagedObjectReference `xml:"_this"` + Mask []HostFeatureMask `xml:"mask,omitempty"` + CompleteMasks *bool `xml:"completeMasks"` +} + +func init() { + t["ApplyEvcModeVMRequestType"] = reflect.TypeOf((*ApplyEvcModeVMRequestType)(nil)).Elem() +} + +type ApplyEvcModeVM_Task ApplyEvcModeVMRequestType + +func init() { + t["ApplyEvcModeVM_Task"] = reflect.TypeOf((*ApplyEvcModeVM_Task)(nil)).Elem() +} + +type ApplyEvcModeVM_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ApplyHostConfigRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host ManagedObjectReference `xml:"host"` + ConfigSpec HostConfigSpec `xml:"configSpec"` + UserInput []ProfileDeferredPolicyOptionParameter `xml:"userInput,omitempty"` +} + +func init() { + t["ApplyHostConfigRequestType"] = reflect.TypeOf((*ApplyHostConfigRequestType)(nil)).Elem() +} + +type ApplyHostConfig_Task ApplyHostConfigRequestType + +func init() { + t["ApplyHostConfig_Task"] = reflect.TypeOf((*ApplyHostConfig_Task)(nil)).Elem() +} + +type ApplyHostConfig_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ApplyHostProfileConfigurationResult struct { + DynamicData + + StartTime time.Time `xml:"startTime"` + CompleteTime time.Time `xml:"completeTime"` + Host ManagedObjectReference `xml:"host"` + Status string `xml:"status"` + Errors []LocalizedMethodFault `xml:"errors,omitempty"` +} + +func init() { + t["ApplyHostProfileConfigurationResult"] = reflect.TypeOf((*ApplyHostProfileConfigurationResult)(nil)).Elem() +} + +type ApplyHostProfileConfigurationSpec struct { + ProfileExecuteResult + + Host ManagedObjectReference `xml:"host"` + TaskListRequirement []string `xml:"taskListRequirement,omitempty"` + TaskDescription []LocalizableMessage `xml:"taskDescription,omitempty"` + RebootStateless *bool `xml:"rebootStateless"` + RebootHost *bool `xml:"rebootHost"` + FaultData *LocalizedMethodFault `xml:"faultData,omitempty"` +} + +func init() { + t["ApplyHostProfileConfigurationSpec"] = reflect.TypeOf((*ApplyHostProfileConfigurationSpec)(nil)).Elem() +} + +type ApplyProfile struct { + DynamicData + + Enabled bool `xml:"enabled"` + Policy []ProfilePolicy `xml:"policy,omitempty"` + ProfileTypeName string `xml:"profileTypeName,omitempty"` + ProfileVersion string `xml:"profileVersion,omitempty"` + Property []ProfileApplyProfileProperty `xml:"property,omitempty"` + Favorite *bool `xml:"favorite"` + ToBeMerged *bool `xml:"toBeMerged"` + ToReplaceWith *bool `xml:"toReplaceWith"` + ToBeDeleted *bool `xml:"toBeDeleted"` + CopyEnableStatus *bool `xml:"copyEnableStatus"` + Hidden *bool `xml:"hidden"` +} + +func init() { + t["ApplyProfile"] = reflect.TypeOf((*ApplyProfile)(nil)).Elem() +} + +type ApplyRecommendation ApplyRecommendationRequestType + +func init() { + t["ApplyRecommendation"] = reflect.TypeOf((*ApplyRecommendation)(nil)).Elem() +} + +type ApplyRecommendationRequestType struct { + This ManagedObjectReference `xml:"_this"` + Key string `xml:"key"` +} + +func init() { + t["ApplyRecommendationRequestType"] = reflect.TypeOf((*ApplyRecommendationRequestType)(nil)).Elem() +} + +type ApplyRecommendationResponse struct { +} + +type ApplyStorageDrsRecommendationRequestType struct { + This ManagedObjectReference `xml:"_this"` + Key []string `xml:"key"` +} + +func init() { + t["ApplyStorageDrsRecommendationRequestType"] = reflect.TypeOf((*ApplyStorageDrsRecommendationRequestType)(nil)).Elem() +} + +type ApplyStorageDrsRecommendationToPodRequestType struct { + This ManagedObjectReference `xml:"_this"` + Pod ManagedObjectReference `xml:"pod"` + Key string `xml:"key"` +} + +func init() { + t["ApplyStorageDrsRecommendationToPodRequestType"] = reflect.TypeOf((*ApplyStorageDrsRecommendationToPodRequestType)(nil)).Elem() +} + +type ApplyStorageDrsRecommendationToPod_Task ApplyStorageDrsRecommendationToPodRequestType + +func init() { + t["ApplyStorageDrsRecommendationToPod_Task"] = reflect.TypeOf((*ApplyStorageDrsRecommendationToPod_Task)(nil)).Elem() +} + +type ApplyStorageDrsRecommendationToPod_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ApplyStorageDrsRecommendation_Task ApplyStorageDrsRecommendationRequestType + +func init() { + t["ApplyStorageDrsRecommendation_Task"] = reflect.TypeOf((*ApplyStorageDrsRecommendation_Task)(nil)).Elem() +} + +type ApplyStorageDrsRecommendation_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ApplyStorageRecommendationResult struct { + DynamicData + + Vm *ManagedObjectReference `xml:"vm,omitempty"` +} + +func init() { + t["ApplyStorageRecommendationResult"] = reflect.TypeOf((*ApplyStorageRecommendationResult)(nil)).Elem() +} + +type AreAlarmActionsEnabled AreAlarmActionsEnabledRequestType + +func init() { + t["AreAlarmActionsEnabled"] = reflect.TypeOf((*AreAlarmActionsEnabled)(nil)).Elem() +} + +type AreAlarmActionsEnabledRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity ManagedObjectReference `xml:"entity"` +} + +func init() { + t["AreAlarmActionsEnabledRequestType"] = reflect.TypeOf((*AreAlarmActionsEnabledRequestType)(nil)).Elem() +} + +type AreAlarmActionsEnabledResponse struct { + Returnval bool `xml:"returnval"` +} + +type ArrayOfAlarmAction struct { + AlarmAction []BaseAlarmAction `xml:"AlarmAction,omitempty,typeattr"` +} + +func init() { + t["ArrayOfAlarmAction"] = reflect.TypeOf((*ArrayOfAlarmAction)(nil)).Elem() +} + +type ArrayOfAlarmExpression struct { + AlarmExpression []BaseAlarmExpression `xml:"AlarmExpression,omitempty,typeattr"` +} + +func init() { + t["ArrayOfAlarmExpression"] = reflect.TypeOf((*ArrayOfAlarmExpression)(nil)).Elem() +} + +type ArrayOfAlarmState struct { + AlarmState []AlarmState `xml:"AlarmState,omitempty"` +} + +func init() { + t["ArrayOfAlarmState"] = reflect.TypeOf((*ArrayOfAlarmState)(nil)).Elem() +} + +type ArrayOfAlarmTriggeringActionTransitionSpec struct { + AlarmTriggeringActionTransitionSpec []AlarmTriggeringActionTransitionSpec `xml:"AlarmTriggeringActionTransitionSpec,omitempty"` +} + +func init() { + t["ArrayOfAlarmTriggeringActionTransitionSpec"] = reflect.TypeOf((*ArrayOfAlarmTriggeringActionTransitionSpec)(nil)).Elem() +} + +type ArrayOfAnswerFileStatusError struct { + AnswerFileStatusError []AnswerFileStatusError `xml:"AnswerFileStatusError,omitempty"` +} + +func init() { + t["ArrayOfAnswerFileStatusError"] = reflect.TypeOf((*ArrayOfAnswerFileStatusError)(nil)).Elem() +} + +type ArrayOfAnswerFileStatusResult struct { + AnswerFileStatusResult []AnswerFileStatusResult `xml:"AnswerFileStatusResult,omitempty"` +} + +func init() { + t["ArrayOfAnswerFileStatusResult"] = reflect.TypeOf((*ArrayOfAnswerFileStatusResult)(nil)).Elem() +} + +type ArrayOfAnswerFileUpdateFailure struct { + AnswerFileUpdateFailure []AnswerFileUpdateFailure `xml:"AnswerFileUpdateFailure,omitempty"` +} + +func init() { + t["ArrayOfAnswerFileUpdateFailure"] = reflect.TypeOf((*ArrayOfAnswerFileUpdateFailure)(nil)).Elem() +} + +type ArrayOfAnyType struct { + AnyType []AnyType `xml:"anyType,omitempty,typeattr"` +} + +func init() { + t["ArrayOfAnyType"] = reflect.TypeOf((*ArrayOfAnyType)(nil)).Elem() +} + +type ArrayOfAnyURI struct { + AnyURI []string `xml:"anyURI,omitempty"` +} + +func init() { + t["ArrayOfAnyURI"] = reflect.TypeOf((*ArrayOfAnyURI)(nil)).Elem() +} + +type ArrayOfApplyHostProfileConfigurationResult struct { + ApplyHostProfileConfigurationResult []ApplyHostProfileConfigurationResult `xml:"ApplyHostProfileConfigurationResult,omitempty"` +} + +func init() { + t["ArrayOfApplyHostProfileConfigurationResult"] = reflect.TypeOf((*ArrayOfApplyHostProfileConfigurationResult)(nil)).Elem() +} + +type ArrayOfApplyHostProfileConfigurationSpec struct { + ApplyHostProfileConfigurationSpec []ApplyHostProfileConfigurationSpec `xml:"ApplyHostProfileConfigurationSpec,omitempty"` +} + +func init() { + t["ArrayOfApplyHostProfileConfigurationSpec"] = reflect.TypeOf((*ArrayOfApplyHostProfileConfigurationSpec)(nil)).Elem() +} + +type ArrayOfApplyProfile struct { + ApplyProfile []BaseApplyProfile `xml:"ApplyProfile,omitempty,typeattr"` +} + +func init() { + t["ArrayOfApplyProfile"] = reflect.TypeOf((*ArrayOfApplyProfile)(nil)).Elem() +} + +type ArrayOfAuthorizationPrivilege struct { + AuthorizationPrivilege []AuthorizationPrivilege `xml:"AuthorizationPrivilege,omitempty"` +} + +func init() { + t["ArrayOfAuthorizationPrivilege"] = reflect.TypeOf((*ArrayOfAuthorizationPrivilege)(nil)).Elem() +} + +type ArrayOfAuthorizationRole struct { + AuthorizationRole []AuthorizationRole `xml:"AuthorizationRole,omitempty"` +} + +func init() { + t["ArrayOfAuthorizationRole"] = reflect.TypeOf((*ArrayOfAuthorizationRole)(nil)).Elem() +} + +type ArrayOfAutoStartPowerInfo struct { + AutoStartPowerInfo []AutoStartPowerInfo `xml:"AutoStartPowerInfo,omitempty"` +} + +func init() { + t["ArrayOfAutoStartPowerInfo"] = reflect.TypeOf((*ArrayOfAutoStartPowerInfo)(nil)).Elem() +} + +type ArrayOfBase64Binary struct { + Base64Binary [][]byte `xml:"base64Binary,omitempty"` +} + +func init() { + t["ArrayOfBase64Binary"] = reflect.TypeOf((*ArrayOfBase64Binary)(nil)).Elem() +} + +type ArrayOfBoolean struct { + Boolean []bool `xml:"boolean,omitempty"` +} + +func init() { + t["ArrayOfBoolean"] = reflect.TypeOf((*ArrayOfBoolean)(nil)).Elem() +} + +type ArrayOfByte struct { + Byte []byte `xml:"byte,omitempty"` +} + +func init() { + t["ArrayOfByte"] = reflect.TypeOf((*ArrayOfByte)(nil)).Elem() +} + +type ArrayOfChangesInfoEventArgument struct { + ChangesInfoEventArgument []ChangesInfoEventArgument `xml:"ChangesInfoEventArgument,omitempty"` +} + +func init() { + t["ArrayOfChangesInfoEventArgument"] = reflect.TypeOf((*ArrayOfChangesInfoEventArgument)(nil)).Elem() +} + +type ArrayOfCheckResult struct { + CheckResult []CheckResult `xml:"CheckResult,omitempty"` +} + +func init() { + t["ArrayOfCheckResult"] = reflect.TypeOf((*ArrayOfCheckResult)(nil)).Elem() +} + +type ArrayOfClusterAction struct { + ClusterAction []BaseClusterAction `xml:"ClusterAction,omitempty,typeattr"` +} + +func init() { + t["ArrayOfClusterAction"] = reflect.TypeOf((*ArrayOfClusterAction)(nil)).Elem() +} + +type ArrayOfClusterActionHistory struct { + ClusterActionHistory []ClusterActionHistory `xml:"ClusterActionHistory,omitempty"` +} + +func init() { + t["ArrayOfClusterActionHistory"] = reflect.TypeOf((*ArrayOfClusterActionHistory)(nil)).Elem() +} + +type ArrayOfClusterAttemptedVmInfo struct { + ClusterAttemptedVmInfo []ClusterAttemptedVmInfo `xml:"ClusterAttemptedVmInfo,omitempty"` +} + +func init() { + t["ArrayOfClusterAttemptedVmInfo"] = reflect.TypeOf((*ArrayOfClusterAttemptedVmInfo)(nil)).Elem() +} + +type ArrayOfClusterComputeResourceDVSSetting struct { + ClusterComputeResourceDVSSetting []ClusterComputeResourceDVSSetting `xml:"ClusterComputeResourceDVSSetting,omitempty"` +} + +func init() { + t["ArrayOfClusterComputeResourceDVSSetting"] = reflect.TypeOf((*ArrayOfClusterComputeResourceDVSSetting)(nil)).Elem() +} + +type ArrayOfClusterComputeResourceDVSSettingDVPortgroupToServiceMapping struct { + ClusterComputeResourceDVSSettingDVPortgroupToServiceMapping []ClusterComputeResourceDVSSettingDVPortgroupToServiceMapping `xml:"ClusterComputeResourceDVSSettingDVPortgroupToServiceMapping,omitempty"` +} + +func init() { + t["ArrayOfClusterComputeResourceDVSSettingDVPortgroupToServiceMapping"] = reflect.TypeOf((*ArrayOfClusterComputeResourceDVSSettingDVPortgroupToServiceMapping)(nil)).Elem() +} + +type ArrayOfClusterComputeResourceDvsProfile struct { + ClusterComputeResourceDvsProfile []ClusterComputeResourceDvsProfile `xml:"ClusterComputeResourceDvsProfile,omitempty"` +} + +func init() { + t["ArrayOfClusterComputeResourceDvsProfile"] = reflect.TypeOf((*ArrayOfClusterComputeResourceDvsProfile)(nil)).Elem() +} + +type ArrayOfClusterComputeResourceDvsProfileDVPortgroupSpecToServiceMapping struct { + ClusterComputeResourceDvsProfileDVPortgroupSpecToServiceMapping []ClusterComputeResourceDvsProfileDVPortgroupSpecToServiceMapping `xml:"ClusterComputeResourceDvsProfileDVPortgroupSpecToServiceMapping,omitempty"` +} + +func init() { + t["ArrayOfClusterComputeResourceDvsProfileDVPortgroupSpecToServiceMapping"] = reflect.TypeOf((*ArrayOfClusterComputeResourceDvsProfileDVPortgroupSpecToServiceMapping)(nil)).Elem() +} + +type ArrayOfClusterComputeResourceHostConfigurationInput struct { + ClusterComputeResourceHostConfigurationInput []ClusterComputeResourceHostConfigurationInput `xml:"ClusterComputeResourceHostConfigurationInput,omitempty"` +} + +func init() { + t["ArrayOfClusterComputeResourceHostConfigurationInput"] = reflect.TypeOf((*ArrayOfClusterComputeResourceHostConfigurationInput)(nil)).Elem() +} + +type ArrayOfClusterComputeResourceHostVmkNicInfo struct { + ClusterComputeResourceHostVmkNicInfo []ClusterComputeResourceHostVmkNicInfo `xml:"ClusterComputeResourceHostVmkNicInfo,omitempty"` +} + +func init() { + t["ArrayOfClusterComputeResourceHostVmkNicInfo"] = reflect.TypeOf((*ArrayOfClusterComputeResourceHostVmkNicInfo)(nil)).Elem() +} + +type ArrayOfClusterComputeResourceValidationResultBase struct { + ClusterComputeResourceValidationResultBase []BaseClusterComputeResourceValidationResultBase `xml:"ClusterComputeResourceValidationResultBase,omitempty,typeattr"` +} + +func init() { + t["ArrayOfClusterComputeResourceValidationResultBase"] = reflect.TypeOf((*ArrayOfClusterComputeResourceValidationResultBase)(nil)).Elem() +} + +type ArrayOfClusterDasAamNodeState struct { + ClusterDasAamNodeState []ClusterDasAamNodeState `xml:"ClusterDasAamNodeState,omitempty"` +} + +func init() { + t["ArrayOfClusterDasAamNodeState"] = reflect.TypeOf((*ArrayOfClusterDasAamNodeState)(nil)).Elem() +} + +type ArrayOfClusterDasFailoverLevelAdvancedRuntimeInfoHostSlots struct { + ClusterDasFailoverLevelAdvancedRuntimeInfoHostSlots []ClusterDasFailoverLevelAdvancedRuntimeInfoHostSlots `xml:"ClusterDasFailoverLevelAdvancedRuntimeInfoHostSlots,omitempty"` +} + +func init() { + t["ArrayOfClusterDasFailoverLevelAdvancedRuntimeInfoHostSlots"] = reflect.TypeOf((*ArrayOfClusterDasFailoverLevelAdvancedRuntimeInfoHostSlots)(nil)).Elem() +} + +type ArrayOfClusterDasFailoverLevelAdvancedRuntimeInfoVmSlots struct { + ClusterDasFailoverLevelAdvancedRuntimeInfoVmSlots []ClusterDasFailoverLevelAdvancedRuntimeInfoVmSlots `xml:"ClusterDasFailoverLevelAdvancedRuntimeInfoVmSlots,omitempty"` +} + +func init() { + t["ArrayOfClusterDasFailoverLevelAdvancedRuntimeInfoVmSlots"] = reflect.TypeOf((*ArrayOfClusterDasFailoverLevelAdvancedRuntimeInfoVmSlots)(nil)).Elem() +} + +type ArrayOfClusterDasVmConfigInfo struct { + ClusterDasVmConfigInfo []ClusterDasVmConfigInfo `xml:"ClusterDasVmConfigInfo,omitempty"` +} + +func init() { + t["ArrayOfClusterDasVmConfigInfo"] = reflect.TypeOf((*ArrayOfClusterDasVmConfigInfo)(nil)).Elem() +} + +type ArrayOfClusterDasVmConfigSpec struct { + ClusterDasVmConfigSpec []ClusterDasVmConfigSpec `xml:"ClusterDasVmConfigSpec,omitempty"` +} + +func init() { + t["ArrayOfClusterDasVmConfigSpec"] = reflect.TypeOf((*ArrayOfClusterDasVmConfigSpec)(nil)).Elem() +} + +type ArrayOfClusterDpmHostConfigInfo struct { + ClusterDpmHostConfigInfo []ClusterDpmHostConfigInfo `xml:"ClusterDpmHostConfigInfo,omitempty"` +} + +func init() { + t["ArrayOfClusterDpmHostConfigInfo"] = reflect.TypeOf((*ArrayOfClusterDpmHostConfigInfo)(nil)).Elem() +} + +type ArrayOfClusterDpmHostConfigSpec struct { + ClusterDpmHostConfigSpec []ClusterDpmHostConfigSpec `xml:"ClusterDpmHostConfigSpec,omitempty"` +} + +func init() { + t["ArrayOfClusterDpmHostConfigSpec"] = reflect.TypeOf((*ArrayOfClusterDpmHostConfigSpec)(nil)).Elem() +} + +type ArrayOfClusterDrsFaults struct { + ClusterDrsFaults []ClusterDrsFaults `xml:"ClusterDrsFaults,omitempty"` +} + +func init() { + t["ArrayOfClusterDrsFaults"] = reflect.TypeOf((*ArrayOfClusterDrsFaults)(nil)).Elem() +} + +type ArrayOfClusterDrsFaultsFaultsByVm struct { + ClusterDrsFaultsFaultsByVm []BaseClusterDrsFaultsFaultsByVm `xml:"ClusterDrsFaultsFaultsByVm,omitempty,typeattr"` +} + +func init() { + t["ArrayOfClusterDrsFaultsFaultsByVm"] = reflect.TypeOf((*ArrayOfClusterDrsFaultsFaultsByVm)(nil)).Elem() +} + +type ArrayOfClusterDrsMigration struct { + ClusterDrsMigration []ClusterDrsMigration `xml:"ClusterDrsMigration,omitempty"` +} + +func init() { + t["ArrayOfClusterDrsMigration"] = reflect.TypeOf((*ArrayOfClusterDrsMigration)(nil)).Elem() +} + +type ArrayOfClusterDrsRecommendation struct { + ClusterDrsRecommendation []ClusterDrsRecommendation `xml:"ClusterDrsRecommendation,omitempty"` +} + +func init() { + t["ArrayOfClusterDrsRecommendation"] = reflect.TypeOf((*ArrayOfClusterDrsRecommendation)(nil)).Elem() +} + +type ArrayOfClusterDrsVmConfigInfo struct { + ClusterDrsVmConfigInfo []ClusterDrsVmConfigInfo `xml:"ClusterDrsVmConfigInfo,omitempty"` +} + +func init() { + t["ArrayOfClusterDrsVmConfigInfo"] = reflect.TypeOf((*ArrayOfClusterDrsVmConfigInfo)(nil)).Elem() +} + +type ArrayOfClusterDrsVmConfigSpec struct { + ClusterDrsVmConfigSpec []ClusterDrsVmConfigSpec `xml:"ClusterDrsVmConfigSpec,omitempty"` +} + +func init() { + t["ArrayOfClusterDrsVmConfigSpec"] = reflect.TypeOf((*ArrayOfClusterDrsVmConfigSpec)(nil)).Elem() +} + +type ArrayOfClusterEVCManagerCheckResult struct { + ClusterEVCManagerCheckResult []ClusterEVCManagerCheckResult `xml:"ClusterEVCManagerCheckResult,omitempty"` +} + +func init() { + t["ArrayOfClusterEVCManagerCheckResult"] = reflect.TypeOf((*ArrayOfClusterEVCManagerCheckResult)(nil)).Elem() +} + +type ArrayOfClusterFailoverHostAdmissionControlInfoHostStatus struct { + ClusterFailoverHostAdmissionControlInfoHostStatus []ClusterFailoverHostAdmissionControlInfoHostStatus `xml:"ClusterFailoverHostAdmissionControlInfoHostStatus,omitempty"` +} + +func init() { + t["ArrayOfClusterFailoverHostAdmissionControlInfoHostStatus"] = reflect.TypeOf((*ArrayOfClusterFailoverHostAdmissionControlInfoHostStatus)(nil)).Elem() +} + +type ArrayOfClusterGroupInfo struct { + ClusterGroupInfo []BaseClusterGroupInfo `xml:"ClusterGroupInfo,omitempty,typeattr"` +} + +func init() { + t["ArrayOfClusterGroupInfo"] = reflect.TypeOf((*ArrayOfClusterGroupInfo)(nil)).Elem() +} + +type ArrayOfClusterGroupSpec struct { + ClusterGroupSpec []ClusterGroupSpec `xml:"ClusterGroupSpec,omitempty"` +} + +func init() { + t["ArrayOfClusterGroupSpec"] = reflect.TypeOf((*ArrayOfClusterGroupSpec)(nil)).Elem() +} + +type ArrayOfClusterHostRecommendation struct { + ClusterHostRecommendation []ClusterHostRecommendation `xml:"ClusterHostRecommendation,omitempty"` +} + +func init() { + t["ArrayOfClusterHostRecommendation"] = reflect.TypeOf((*ArrayOfClusterHostRecommendation)(nil)).Elem() +} + +type ArrayOfClusterIoFilterInfo struct { + ClusterIoFilterInfo []ClusterIoFilterInfo `xml:"ClusterIoFilterInfo,omitempty"` +} + +func init() { + t["ArrayOfClusterIoFilterInfo"] = reflect.TypeOf((*ArrayOfClusterIoFilterInfo)(nil)).Elem() +} + +type ArrayOfClusterNotAttemptedVmInfo struct { + ClusterNotAttemptedVmInfo []ClusterNotAttemptedVmInfo `xml:"ClusterNotAttemptedVmInfo,omitempty"` +} + +func init() { + t["ArrayOfClusterNotAttemptedVmInfo"] = reflect.TypeOf((*ArrayOfClusterNotAttemptedVmInfo)(nil)).Elem() +} + +type ArrayOfClusterRecommendation struct { + ClusterRecommendation []ClusterRecommendation `xml:"ClusterRecommendation,omitempty"` +} + +func init() { + t["ArrayOfClusterRecommendation"] = reflect.TypeOf((*ArrayOfClusterRecommendation)(nil)).Elem() +} + +type ArrayOfClusterRuleInfo struct { + ClusterRuleInfo []BaseClusterRuleInfo `xml:"ClusterRuleInfo,omitempty,typeattr"` +} + +func init() { + t["ArrayOfClusterRuleInfo"] = reflect.TypeOf((*ArrayOfClusterRuleInfo)(nil)).Elem() +} + +type ArrayOfClusterRuleSpec struct { + ClusterRuleSpec []ClusterRuleSpec `xml:"ClusterRuleSpec,omitempty"` +} + +func init() { + t["ArrayOfClusterRuleSpec"] = reflect.TypeOf((*ArrayOfClusterRuleSpec)(nil)).Elem() +} + +type ArrayOfClusterVmOrchestrationInfo struct { + ClusterVmOrchestrationInfo []ClusterVmOrchestrationInfo `xml:"ClusterVmOrchestrationInfo,omitempty"` +} + +func init() { + t["ArrayOfClusterVmOrchestrationInfo"] = reflect.TypeOf((*ArrayOfClusterVmOrchestrationInfo)(nil)).Elem() +} + +type ArrayOfClusterVmOrchestrationSpec struct { + ClusterVmOrchestrationSpec []ClusterVmOrchestrationSpec `xml:"ClusterVmOrchestrationSpec,omitempty"` +} + +func init() { + t["ArrayOfClusterVmOrchestrationSpec"] = reflect.TypeOf((*ArrayOfClusterVmOrchestrationSpec)(nil)).Elem() +} + +type ArrayOfComplianceFailure struct { + ComplianceFailure []ComplianceFailure `xml:"ComplianceFailure,omitempty"` +} + +func init() { + t["ArrayOfComplianceFailure"] = reflect.TypeOf((*ArrayOfComplianceFailure)(nil)).Elem() +} + +type ArrayOfComplianceFailureComplianceFailureValues struct { + ComplianceFailureComplianceFailureValues []ComplianceFailureComplianceFailureValues `xml:"ComplianceFailureComplianceFailureValues,omitempty"` +} + +func init() { + t["ArrayOfComplianceFailureComplianceFailureValues"] = reflect.TypeOf((*ArrayOfComplianceFailureComplianceFailureValues)(nil)).Elem() +} + +type ArrayOfComplianceLocator struct { + ComplianceLocator []ComplianceLocator `xml:"ComplianceLocator,omitempty"` +} + +func init() { + t["ArrayOfComplianceLocator"] = reflect.TypeOf((*ArrayOfComplianceLocator)(nil)).Elem() +} + +type ArrayOfComplianceResult struct { + ComplianceResult []ComplianceResult `xml:"ComplianceResult,omitempty"` +} + +func init() { + t["ArrayOfComplianceResult"] = reflect.TypeOf((*ArrayOfComplianceResult)(nil)).Elem() +} + +type ArrayOfComputeResourceHostSPBMLicenseInfo struct { + ComputeResourceHostSPBMLicenseInfo []ComputeResourceHostSPBMLicenseInfo `xml:"ComputeResourceHostSPBMLicenseInfo,omitempty"` +} + +func init() { + t["ArrayOfComputeResourceHostSPBMLicenseInfo"] = reflect.TypeOf((*ArrayOfComputeResourceHostSPBMLicenseInfo)(nil)).Elem() +} + +type ArrayOfConflictingConfigurationConfig struct { + ConflictingConfigurationConfig []ConflictingConfigurationConfig `xml:"ConflictingConfigurationConfig,omitempty"` +} + +func init() { + t["ArrayOfConflictingConfigurationConfig"] = reflect.TypeOf((*ArrayOfConflictingConfigurationConfig)(nil)).Elem() +} + +type ArrayOfCryptoKeyId struct { + CryptoKeyId []CryptoKeyId `xml:"CryptoKeyId,omitempty"` +} + +func init() { + t["ArrayOfCryptoKeyId"] = reflect.TypeOf((*ArrayOfCryptoKeyId)(nil)).Elem() +} + +type ArrayOfCryptoKeyPlain struct { + CryptoKeyPlain []CryptoKeyPlain `xml:"CryptoKeyPlain,omitempty"` +} + +func init() { + t["ArrayOfCryptoKeyPlain"] = reflect.TypeOf((*ArrayOfCryptoKeyPlain)(nil)).Elem() +} + +type ArrayOfCryptoKeyResult struct { + CryptoKeyResult []CryptoKeyResult `xml:"CryptoKeyResult,omitempty"` +} + +func init() { + t["ArrayOfCryptoKeyResult"] = reflect.TypeOf((*ArrayOfCryptoKeyResult)(nil)).Elem() +} + +type ArrayOfCryptoManagerKmipClusterStatus struct { + CryptoManagerKmipClusterStatus []CryptoManagerKmipClusterStatus `xml:"CryptoManagerKmipClusterStatus,omitempty"` +} + +func init() { + t["ArrayOfCryptoManagerKmipClusterStatus"] = reflect.TypeOf((*ArrayOfCryptoManagerKmipClusterStatus)(nil)).Elem() +} + +type ArrayOfCryptoManagerKmipCryptoKeyStatus struct { + CryptoManagerKmipCryptoKeyStatus []CryptoManagerKmipCryptoKeyStatus `xml:"CryptoManagerKmipCryptoKeyStatus,omitempty"` +} + +func init() { + t["ArrayOfCryptoManagerKmipCryptoKeyStatus"] = reflect.TypeOf((*ArrayOfCryptoManagerKmipCryptoKeyStatus)(nil)).Elem() +} + +type ArrayOfCryptoManagerKmipServerStatus struct { + CryptoManagerKmipServerStatus []CryptoManagerKmipServerStatus `xml:"CryptoManagerKmipServerStatus,omitempty"` +} + +func init() { + t["ArrayOfCryptoManagerKmipServerStatus"] = reflect.TypeOf((*ArrayOfCryptoManagerKmipServerStatus)(nil)).Elem() +} + +type ArrayOfCustomFieldDef struct { + CustomFieldDef []CustomFieldDef `xml:"CustomFieldDef,omitempty"` +} + +func init() { + t["ArrayOfCustomFieldDef"] = reflect.TypeOf((*ArrayOfCustomFieldDef)(nil)).Elem() +} + +type ArrayOfCustomFieldValue struct { + CustomFieldValue []BaseCustomFieldValue `xml:"CustomFieldValue,omitempty,typeattr"` +} + +func init() { + t["ArrayOfCustomFieldValue"] = reflect.TypeOf((*ArrayOfCustomFieldValue)(nil)).Elem() +} + +type ArrayOfCustomizationAdapterMapping struct { + CustomizationAdapterMapping []CustomizationAdapterMapping `xml:"CustomizationAdapterMapping,omitempty"` +} + +func init() { + t["ArrayOfCustomizationAdapterMapping"] = reflect.TypeOf((*ArrayOfCustomizationAdapterMapping)(nil)).Elem() +} + +type ArrayOfCustomizationIpV6Generator struct { + CustomizationIpV6Generator []BaseCustomizationIpV6Generator `xml:"CustomizationIpV6Generator,omitempty,typeattr"` +} + +func init() { + t["ArrayOfCustomizationIpV6Generator"] = reflect.TypeOf((*ArrayOfCustomizationIpV6Generator)(nil)).Elem() +} + +type ArrayOfCustomizationSpecInfo struct { + CustomizationSpecInfo []CustomizationSpecInfo `xml:"CustomizationSpecInfo,omitempty"` +} + +func init() { + t["ArrayOfCustomizationSpecInfo"] = reflect.TypeOf((*ArrayOfCustomizationSpecInfo)(nil)).Elem() +} + +type ArrayOfDVPortConfigSpec struct { + DVPortConfigSpec []DVPortConfigSpec `xml:"DVPortConfigSpec,omitempty"` +} + +func init() { + t["ArrayOfDVPortConfigSpec"] = reflect.TypeOf((*ArrayOfDVPortConfigSpec)(nil)).Elem() +} + +type ArrayOfDVPortgroupConfigSpec struct { + DVPortgroupConfigSpec []DVPortgroupConfigSpec `xml:"DVPortgroupConfigSpec,omitempty"` +} + +func init() { + t["ArrayOfDVPortgroupConfigSpec"] = reflect.TypeOf((*ArrayOfDVPortgroupConfigSpec)(nil)).Elem() +} + +type ArrayOfDVSHealthCheckConfig struct { + DVSHealthCheckConfig []BaseDVSHealthCheckConfig `xml:"DVSHealthCheckConfig,omitempty,typeattr"` +} + +func init() { + t["ArrayOfDVSHealthCheckConfig"] = reflect.TypeOf((*ArrayOfDVSHealthCheckConfig)(nil)).Elem() +} + +type ArrayOfDVSNetworkResourcePool struct { + DVSNetworkResourcePool []DVSNetworkResourcePool `xml:"DVSNetworkResourcePool,omitempty"` +} + +func init() { + t["ArrayOfDVSNetworkResourcePool"] = reflect.TypeOf((*ArrayOfDVSNetworkResourcePool)(nil)).Elem() +} + +type ArrayOfDVSNetworkResourcePoolConfigSpec struct { + DVSNetworkResourcePoolConfigSpec []DVSNetworkResourcePoolConfigSpec `xml:"DVSNetworkResourcePoolConfigSpec,omitempty"` +} + +func init() { + t["ArrayOfDVSNetworkResourcePoolConfigSpec"] = reflect.TypeOf((*ArrayOfDVSNetworkResourcePoolConfigSpec)(nil)).Elem() +} + +type ArrayOfDVSVmVnicNetworkResourcePool struct { + DVSVmVnicNetworkResourcePool []DVSVmVnicNetworkResourcePool `xml:"DVSVmVnicNetworkResourcePool,omitempty"` +} + +func init() { + t["ArrayOfDVSVmVnicNetworkResourcePool"] = reflect.TypeOf((*ArrayOfDVSVmVnicNetworkResourcePool)(nil)).Elem() +} + +type ArrayOfDasHeartbeatDatastoreInfo struct { + DasHeartbeatDatastoreInfo []DasHeartbeatDatastoreInfo `xml:"DasHeartbeatDatastoreInfo,omitempty"` +} + +func init() { + t["ArrayOfDasHeartbeatDatastoreInfo"] = reflect.TypeOf((*ArrayOfDasHeartbeatDatastoreInfo)(nil)).Elem() +} + +type ArrayOfDatacenterBasicConnectInfo struct { + DatacenterBasicConnectInfo []DatacenterBasicConnectInfo `xml:"DatacenterBasicConnectInfo,omitempty"` +} + +func init() { + t["ArrayOfDatacenterBasicConnectInfo"] = reflect.TypeOf((*ArrayOfDatacenterBasicConnectInfo)(nil)).Elem() +} + +type ArrayOfDatacenterMismatchArgument struct { + DatacenterMismatchArgument []DatacenterMismatchArgument `xml:"DatacenterMismatchArgument,omitempty"` +} + +func init() { + t["ArrayOfDatacenterMismatchArgument"] = reflect.TypeOf((*ArrayOfDatacenterMismatchArgument)(nil)).Elem() +} + +type ArrayOfDatastoreHostMount struct { + DatastoreHostMount []DatastoreHostMount `xml:"DatastoreHostMount,omitempty"` +} + +func init() { + t["ArrayOfDatastoreHostMount"] = reflect.TypeOf((*ArrayOfDatastoreHostMount)(nil)).Elem() +} + +type ArrayOfDatastoreMountPathDatastorePair struct { + DatastoreMountPathDatastorePair []DatastoreMountPathDatastorePair `xml:"DatastoreMountPathDatastorePair,omitempty"` +} + +func init() { + t["ArrayOfDatastoreMountPathDatastorePair"] = reflect.TypeOf((*ArrayOfDatastoreMountPathDatastorePair)(nil)).Elem() +} + +type ArrayOfDatastoreVVolContainerFailoverPair struct { + DatastoreVVolContainerFailoverPair []DatastoreVVolContainerFailoverPair `xml:"DatastoreVVolContainerFailoverPair,omitempty"` +} + +func init() { + t["ArrayOfDatastoreVVolContainerFailoverPair"] = reflect.TypeOf((*ArrayOfDatastoreVVolContainerFailoverPair)(nil)).Elem() +} + +type ArrayOfDiagnosticManagerBundleInfo struct { + DiagnosticManagerBundleInfo []DiagnosticManagerBundleInfo `xml:"DiagnosticManagerBundleInfo,omitempty"` +} + +func init() { + t["ArrayOfDiagnosticManagerBundleInfo"] = reflect.TypeOf((*ArrayOfDiagnosticManagerBundleInfo)(nil)).Elem() +} + +type ArrayOfDiagnosticManagerLogDescriptor struct { + DiagnosticManagerLogDescriptor []DiagnosticManagerLogDescriptor `xml:"DiagnosticManagerLogDescriptor,omitempty"` +} + +func init() { + t["ArrayOfDiagnosticManagerLogDescriptor"] = reflect.TypeOf((*ArrayOfDiagnosticManagerLogDescriptor)(nil)).Elem() +} + +type ArrayOfDiskChangeExtent struct { + DiskChangeExtent []DiskChangeExtent `xml:"DiskChangeExtent,omitempty"` +} + +func init() { + t["ArrayOfDiskChangeExtent"] = reflect.TypeOf((*ArrayOfDiskChangeExtent)(nil)).Elem() +} + +type ArrayOfDistributedVirtualPort struct { + DistributedVirtualPort []DistributedVirtualPort `xml:"DistributedVirtualPort,omitempty"` +} + +func init() { + t["ArrayOfDistributedVirtualPort"] = reflect.TypeOf((*ArrayOfDistributedVirtualPort)(nil)).Elem() +} + +type ArrayOfDistributedVirtualPortgroupInfo struct { + DistributedVirtualPortgroupInfo []DistributedVirtualPortgroupInfo `xml:"DistributedVirtualPortgroupInfo,omitempty"` +} + +func init() { + t["ArrayOfDistributedVirtualPortgroupInfo"] = reflect.TypeOf((*ArrayOfDistributedVirtualPortgroupInfo)(nil)).Elem() +} + +type ArrayOfDistributedVirtualPortgroupProblem struct { + DistributedVirtualPortgroupProblem []DistributedVirtualPortgroupProblem `xml:"DistributedVirtualPortgroupProblem,omitempty"` +} + +func init() { + t["ArrayOfDistributedVirtualPortgroupProblem"] = reflect.TypeOf((*ArrayOfDistributedVirtualPortgroupProblem)(nil)).Elem() +} + +type ArrayOfDistributedVirtualSwitchHostMember struct { + DistributedVirtualSwitchHostMember []DistributedVirtualSwitchHostMember `xml:"DistributedVirtualSwitchHostMember,omitempty"` +} + +func init() { + t["ArrayOfDistributedVirtualSwitchHostMember"] = reflect.TypeOf((*ArrayOfDistributedVirtualSwitchHostMember)(nil)).Elem() +} + +type ArrayOfDistributedVirtualSwitchHostMemberConfigSpec struct { + DistributedVirtualSwitchHostMemberConfigSpec []DistributedVirtualSwitchHostMemberConfigSpec `xml:"DistributedVirtualSwitchHostMemberConfigSpec,omitempty"` +} + +func init() { + t["ArrayOfDistributedVirtualSwitchHostMemberConfigSpec"] = reflect.TypeOf((*ArrayOfDistributedVirtualSwitchHostMemberConfigSpec)(nil)).Elem() +} + +type ArrayOfDistributedVirtualSwitchHostMemberPnicSpec struct { + DistributedVirtualSwitchHostMemberPnicSpec []DistributedVirtualSwitchHostMemberPnicSpec `xml:"DistributedVirtualSwitchHostMemberPnicSpec,omitempty"` +} + +func init() { + t["ArrayOfDistributedVirtualSwitchHostMemberPnicSpec"] = reflect.TypeOf((*ArrayOfDistributedVirtualSwitchHostMemberPnicSpec)(nil)).Elem() +} + +type ArrayOfDistributedVirtualSwitchHostMemberTransportZoneInfo struct { + DistributedVirtualSwitchHostMemberTransportZoneInfo []DistributedVirtualSwitchHostMemberTransportZoneInfo `xml:"DistributedVirtualSwitchHostMemberTransportZoneInfo,omitempty"` +} + +func init() { + t["ArrayOfDistributedVirtualSwitchHostMemberTransportZoneInfo"] = reflect.TypeOf((*ArrayOfDistributedVirtualSwitchHostMemberTransportZoneInfo)(nil)).Elem() +} + +type ArrayOfDistributedVirtualSwitchHostProductSpec struct { + DistributedVirtualSwitchHostProductSpec []DistributedVirtualSwitchHostProductSpec `xml:"DistributedVirtualSwitchHostProductSpec,omitempty"` +} + +func init() { + t["ArrayOfDistributedVirtualSwitchHostProductSpec"] = reflect.TypeOf((*ArrayOfDistributedVirtualSwitchHostProductSpec)(nil)).Elem() +} + +type ArrayOfDistributedVirtualSwitchInfo struct { + DistributedVirtualSwitchInfo []DistributedVirtualSwitchInfo `xml:"DistributedVirtualSwitchInfo,omitempty"` +} + +func init() { + t["ArrayOfDistributedVirtualSwitchInfo"] = reflect.TypeOf((*ArrayOfDistributedVirtualSwitchInfo)(nil)).Elem() +} + +type ArrayOfDistributedVirtualSwitchKeyedOpaqueBlob struct { + DistributedVirtualSwitchKeyedOpaqueBlob []DistributedVirtualSwitchKeyedOpaqueBlob `xml:"DistributedVirtualSwitchKeyedOpaqueBlob,omitempty"` +} + +func init() { + t["ArrayOfDistributedVirtualSwitchKeyedOpaqueBlob"] = reflect.TypeOf((*ArrayOfDistributedVirtualSwitchKeyedOpaqueBlob)(nil)).Elem() +} + +type ArrayOfDistributedVirtualSwitchManagerCompatibilityResult struct { + DistributedVirtualSwitchManagerCompatibilityResult []DistributedVirtualSwitchManagerCompatibilityResult `xml:"DistributedVirtualSwitchManagerCompatibilityResult,omitempty"` +} + +func init() { + t["ArrayOfDistributedVirtualSwitchManagerCompatibilityResult"] = reflect.TypeOf((*ArrayOfDistributedVirtualSwitchManagerCompatibilityResult)(nil)).Elem() +} + +type ArrayOfDistributedVirtualSwitchManagerHostDvsFilterSpec struct { + DistributedVirtualSwitchManagerHostDvsFilterSpec []BaseDistributedVirtualSwitchManagerHostDvsFilterSpec `xml:"DistributedVirtualSwitchManagerHostDvsFilterSpec,omitempty,typeattr"` +} + +func init() { + t["ArrayOfDistributedVirtualSwitchManagerHostDvsFilterSpec"] = reflect.TypeOf((*ArrayOfDistributedVirtualSwitchManagerHostDvsFilterSpec)(nil)).Elem() +} + +type ArrayOfDistributedVirtualSwitchProductSpec struct { + DistributedVirtualSwitchProductSpec []DistributedVirtualSwitchProductSpec `xml:"DistributedVirtualSwitchProductSpec,omitempty"` +} + +func init() { + t["ArrayOfDistributedVirtualSwitchProductSpec"] = reflect.TypeOf((*ArrayOfDistributedVirtualSwitchProductSpec)(nil)).Elem() +} + +type ArrayOfDouble struct { + Double []float64 `xml:"double,omitempty"` +} + +func init() { + t["ArrayOfDouble"] = reflect.TypeOf((*ArrayOfDouble)(nil)).Elem() +} + +type ArrayOfDvsApplyOperationFaultFaultOnObject struct { + DvsApplyOperationFaultFaultOnObject []DvsApplyOperationFaultFaultOnObject `xml:"DvsApplyOperationFaultFaultOnObject,omitempty"` +} + +func init() { + t["ArrayOfDvsApplyOperationFaultFaultOnObject"] = reflect.TypeOf((*ArrayOfDvsApplyOperationFaultFaultOnObject)(nil)).Elem() +} + +type ArrayOfDvsFilterConfig struct { + DvsFilterConfig []BaseDvsFilterConfig `xml:"DvsFilterConfig,omitempty,typeattr"` +} + +func init() { + t["ArrayOfDvsFilterConfig"] = reflect.TypeOf((*ArrayOfDvsFilterConfig)(nil)).Elem() +} + +type ArrayOfDvsHostInfrastructureTrafficResource struct { + DvsHostInfrastructureTrafficResource []DvsHostInfrastructureTrafficResource `xml:"DvsHostInfrastructureTrafficResource,omitempty"` +} + +func init() { + t["ArrayOfDvsHostInfrastructureTrafficResource"] = reflect.TypeOf((*ArrayOfDvsHostInfrastructureTrafficResource)(nil)).Elem() +} + +type ArrayOfDvsHostVNicProfile struct { + DvsHostVNicProfile []DvsHostVNicProfile `xml:"DvsHostVNicProfile,omitempty"` +} + +func init() { + t["ArrayOfDvsHostVNicProfile"] = reflect.TypeOf((*ArrayOfDvsHostVNicProfile)(nil)).Elem() +} + +type ArrayOfDvsNetworkRuleQualifier struct { + DvsNetworkRuleQualifier []BaseDvsNetworkRuleQualifier `xml:"DvsNetworkRuleQualifier,omitempty,typeattr"` +} + +func init() { + t["ArrayOfDvsNetworkRuleQualifier"] = reflect.TypeOf((*ArrayOfDvsNetworkRuleQualifier)(nil)).Elem() +} + +type ArrayOfDvsOperationBulkFaultFaultOnHost struct { + DvsOperationBulkFaultFaultOnHost []DvsOperationBulkFaultFaultOnHost `xml:"DvsOperationBulkFaultFaultOnHost,omitempty"` +} + +func init() { + t["ArrayOfDvsOperationBulkFaultFaultOnHost"] = reflect.TypeOf((*ArrayOfDvsOperationBulkFaultFaultOnHost)(nil)).Elem() +} + +type ArrayOfDvsOutOfSyncHostArgument struct { + DvsOutOfSyncHostArgument []DvsOutOfSyncHostArgument `xml:"DvsOutOfSyncHostArgument,omitempty"` +} + +func init() { + t["ArrayOfDvsOutOfSyncHostArgument"] = reflect.TypeOf((*ArrayOfDvsOutOfSyncHostArgument)(nil)).Elem() +} + +type ArrayOfDvsProfile struct { + DvsProfile []DvsProfile `xml:"DvsProfile,omitempty"` +} + +func init() { + t["ArrayOfDvsProfile"] = reflect.TypeOf((*ArrayOfDvsProfile)(nil)).Elem() +} + +type ArrayOfDvsServiceConsoleVNicProfile struct { + DvsServiceConsoleVNicProfile []DvsServiceConsoleVNicProfile `xml:"DvsServiceConsoleVNicProfile,omitempty"` +} + +func init() { + t["ArrayOfDvsServiceConsoleVNicProfile"] = reflect.TypeOf((*ArrayOfDvsServiceConsoleVNicProfile)(nil)).Elem() +} + +type ArrayOfDvsTrafficRule struct { + DvsTrafficRule []DvsTrafficRule `xml:"DvsTrafficRule,omitempty"` +} + +func init() { + t["ArrayOfDvsTrafficRule"] = reflect.TypeOf((*ArrayOfDvsTrafficRule)(nil)).Elem() +} + +type ArrayOfDvsVmVnicNetworkResourcePoolRuntimeInfo struct { + DvsVmVnicNetworkResourcePoolRuntimeInfo []DvsVmVnicNetworkResourcePoolRuntimeInfo `xml:"DvsVmVnicNetworkResourcePoolRuntimeInfo,omitempty"` +} + +func init() { + t["ArrayOfDvsVmVnicNetworkResourcePoolRuntimeInfo"] = reflect.TypeOf((*ArrayOfDvsVmVnicNetworkResourcePoolRuntimeInfo)(nil)).Elem() +} + +type ArrayOfDvsVmVnicResourcePoolConfigSpec struct { + DvsVmVnicResourcePoolConfigSpec []DvsVmVnicResourcePoolConfigSpec `xml:"DvsVmVnicResourcePoolConfigSpec,omitempty"` +} + +func init() { + t["ArrayOfDvsVmVnicResourcePoolConfigSpec"] = reflect.TypeOf((*ArrayOfDvsVmVnicResourcePoolConfigSpec)(nil)).Elem() +} + +type ArrayOfDvsVnicAllocatedResource struct { + DvsVnicAllocatedResource []DvsVnicAllocatedResource `xml:"DvsVnicAllocatedResource,omitempty"` +} + +func init() { + t["ArrayOfDvsVnicAllocatedResource"] = reflect.TypeOf((*ArrayOfDvsVnicAllocatedResource)(nil)).Elem() +} + +type ArrayOfDynamicProperty struct { + DynamicProperty []DynamicProperty `xml:"DynamicProperty,omitempty"` +} + +func init() { + t["ArrayOfDynamicProperty"] = reflect.TypeOf((*ArrayOfDynamicProperty)(nil)).Elem() +} + +type ArrayOfEVCMode struct { + EVCMode []EVCMode `xml:"EVCMode,omitempty"` +} + +func init() { + t["ArrayOfEVCMode"] = reflect.TypeOf((*ArrayOfEVCMode)(nil)).Elem() +} + +type ArrayOfElementDescription struct { + ElementDescription []BaseElementDescription `xml:"ElementDescription,omitempty,typeattr"` +} + +func init() { + t["ArrayOfElementDescription"] = reflect.TypeOf((*ArrayOfElementDescription)(nil)).Elem() +} + +type ArrayOfEntityBackupConfig struct { + EntityBackupConfig []EntityBackupConfig `xml:"EntityBackupConfig,omitempty"` +} + +func init() { + t["ArrayOfEntityBackupConfig"] = reflect.TypeOf((*ArrayOfEntityBackupConfig)(nil)).Elem() +} + +type ArrayOfEntityPrivilege struct { + EntityPrivilege []EntityPrivilege `xml:"EntityPrivilege,omitempty"` +} + +func init() { + t["ArrayOfEntityPrivilege"] = reflect.TypeOf((*ArrayOfEntityPrivilege)(nil)).Elem() +} + +type ArrayOfEnumDescription struct { + EnumDescription []EnumDescription `xml:"EnumDescription,omitempty"` +} + +func init() { + t["ArrayOfEnumDescription"] = reflect.TypeOf((*ArrayOfEnumDescription)(nil)).Elem() +} + +type ArrayOfEvent struct { + Event []BaseEvent `xml:"Event,omitempty,typeattr"` +} + +func init() { + t["ArrayOfEvent"] = reflect.TypeOf((*ArrayOfEvent)(nil)).Elem() +} + +type ArrayOfEventAlarmExpressionComparison struct { + EventAlarmExpressionComparison []EventAlarmExpressionComparison `xml:"EventAlarmExpressionComparison,omitempty"` +} + +func init() { + t["ArrayOfEventAlarmExpressionComparison"] = reflect.TypeOf((*ArrayOfEventAlarmExpressionComparison)(nil)).Elem() +} + +type ArrayOfEventArgDesc struct { + EventArgDesc []EventArgDesc `xml:"EventArgDesc,omitempty"` +} + +func init() { + t["ArrayOfEventArgDesc"] = reflect.TypeOf((*ArrayOfEventArgDesc)(nil)).Elem() +} + +type ArrayOfEventDescriptionEventDetail struct { + EventDescriptionEventDetail []EventDescriptionEventDetail `xml:"EventDescriptionEventDetail,omitempty"` +} + +func init() { + t["ArrayOfEventDescriptionEventDetail"] = reflect.TypeOf((*ArrayOfEventDescriptionEventDetail)(nil)).Elem() +} + +type ArrayOfExtManagedEntityInfo struct { + ExtManagedEntityInfo []ExtManagedEntityInfo `xml:"ExtManagedEntityInfo,omitempty"` +} + +func init() { + t["ArrayOfExtManagedEntityInfo"] = reflect.TypeOf((*ArrayOfExtManagedEntityInfo)(nil)).Elem() +} + +type ArrayOfExtSolutionManagerInfoTabInfo struct { + ExtSolutionManagerInfoTabInfo []ExtSolutionManagerInfoTabInfo `xml:"ExtSolutionManagerInfoTabInfo,omitempty"` +} + +func init() { + t["ArrayOfExtSolutionManagerInfoTabInfo"] = reflect.TypeOf((*ArrayOfExtSolutionManagerInfoTabInfo)(nil)).Elem() +} + +type ArrayOfExtendedEventPair struct { + ExtendedEventPair []ExtendedEventPair `xml:"ExtendedEventPair,omitempty"` +} + +func init() { + t["ArrayOfExtendedEventPair"] = reflect.TypeOf((*ArrayOfExtendedEventPair)(nil)).Elem() +} + +type ArrayOfExtension struct { + Extension []Extension `xml:"Extension,omitempty"` +} + +func init() { + t["ArrayOfExtension"] = reflect.TypeOf((*ArrayOfExtension)(nil)).Elem() +} + +type ArrayOfExtensionClientInfo struct { + ExtensionClientInfo []ExtensionClientInfo `xml:"ExtensionClientInfo,omitempty"` +} + +func init() { + t["ArrayOfExtensionClientInfo"] = reflect.TypeOf((*ArrayOfExtensionClientInfo)(nil)).Elem() +} + +type ArrayOfExtensionEventTypeInfo struct { + ExtensionEventTypeInfo []ExtensionEventTypeInfo `xml:"ExtensionEventTypeInfo,omitempty"` +} + +func init() { + t["ArrayOfExtensionEventTypeInfo"] = reflect.TypeOf((*ArrayOfExtensionEventTypeInfo)(nil)).Elem() +} + +type ArrayOfExtensionFaultTypeInfo struct { + ExtensionFaultTypeInfo []ExtensionFaultTypeInfo `xml:"ExtensionFaultTypeInfo,omitempty"` +} + +func init() { + t["ArrayOfExtensionFaultTypeInfo"] = reflect.TypeOf((*ArrayOfExtensionFaultTypeInfo)(nil)).Elem() +} + +type ArrayOfExtensionManagerIpAllocationUsage struct { + ExtensionManagerIpAllocationUsage []ExtensionManagerIpAllocationUsage `xml:"ExtensionManagerIpAllocationUsage,omitempty"` +} + +func init() { + t["ArrayOfExtensionManagerIpAllocationUsage"] = reflect.TypeOf((*ArrayOfExtensionManagerIpAllocationUsage)(nil)).Elem() +} + +type ArrayOfExtensionPrivilegeInfo struct { + ExtensionPrivilegeInfo []ExtensionPrivilegeInfo `xml:"ExtensionPrivilegeInfo,omitempty"` +} + +func init() { + t["ArrayOfExtensionPrivilegeInfo"] = reflect.TypeOf((*ArrayOfExtensionPrivilegeInfo)(nil)).Elem() +} + +type ArrayOfExtensionResourceInfo struct { + ExtensionResourceInfo []ExtensionResourceInfo `xml:"ExtensionResourceInfo,omitempty"` +} + +func init() { + t["ArrayOfExtensionResourceInfo"] = reflect.TypeOf((*ArrayOfExtensionResourceInfo)(nil)).Elem() +} + +type ArrayOfExtensionServerInfo struct { + ExtensionServerInfo []ExtensionServerInfo `xml:"ExtensionServerInfo,omitempty"` +} + +func init() { + t["ArrayOfExtensionServerInfo"] = reflect.TypeOf((*ArrayOfExtensionServerInfo)(nil)).Elem() +} + +type ArrayOfExtensionTaskTypeInfo struct { + ExtensionTaskTypeInfo []ExtensionTaskTypeInfo `xml:"ExtensionTaskTypeInfo,omitempty"` +} + +func init() { + t["ArrayOfExtensionTaskTypeInfo"] = reflect.TypeOf((*ArrayOfExtensionTaskTypeInfo)(nil)).Elem() +} + +type ArrayOfFaultToleranceDiskSpec struct { + FaultToleranceDiskSpec []FaultToleranceDiskSpec `xml:"FaultToleranceDiskSpec,omitempty"` +} + +func init() { + t["ArrayOfFaultToleranceDiskSpec"] = reflect.TypeOf((*ArrayOfFaultToleranceDiskSpec)(nil)).Elem() +} + +type ArrayOfFaultsByHost struct { + FaultsByHost []FaultsByHost `xml:"FaultsByHost,omitempty"` +} + +func init() { + t["ArrayOfFaultsByHost"] = reflect.TypeOf((*ArrayOfFaultsByHost)(nil)).Elem() +} + +type ArrayOfFaultsByVM struct { + FaultsByVM []FaultsByVM `xml:"FaultsByVM,omitempty"` +} + +func init() { + t["ArrayOfFaultsByVM"] = reflect.TypeOf((*ArrayOfFaultsByVM)(nil)).Elem() +} + +type ArrayOfFcoeConfigVlanRange struct { + FcoeConfigVlanRange []FcoeConfigVlanRange `xml:"FcoeConfigVlanRange,omitempty"` +} + +func init() { + t["ArrayOfFcoeConfigVlanRange"] = reflect.TypeOf((*ArrayOfFcoeConfigVlanRange)(nil)).Elem() +} + +type ArrayOfFileInfo struct { + FileInfo []BaseFileInfo `xml:"FileInfo,omitempty,typeattr"` +} + +func init() { + t["ArrayOfFileInfo"] = reflect.TypeOf((*ArrayOfFileInfo)(nil)).Elem() +} + +type ArrayOfFileQuery struct { + FileQuery []BaseFileQuery `xml:"FileQuery,omitempty,typeattr"` +} + +func init() { + t["ArrayOfFileQuery"] = reflect.TypeOf((*ArrayOfFileQuery)(nil)).Elem() +} + +type ArrayOfFirewallProfileRulesetProfile struct { + FirewallProfileRulesetProfile []FirewallProfileRulesetProfile `xml:"FirewallProfileRulesetProfile,omitempty"` +} + +func init() { + t["ArrayOfFirewallProfileRulesetProfile"] = reflect.TypeOf((*ArrayOfFirewallProfileRulesetProfile)(nil)).Elem() +} + +type ArrayOfFolderFailedHostResult struct { + FolderFailedHostResult []FolderFailedHostResult `xml:"FolderFailedHostResult,omitempty"` +} + +func init() { + t["ArrayOfFolderFailedHostResult"] = reflect.TypeOf((*ArrayOfFolderFailedHostResult)(nil)).Elem() +} + +type ArrayOfFolderNewHostSpec struct { + FolderNewHostSpec []FolderNewHostSpec `xml:"FolderNewHostSpec,omitempty"` +} + +func init() { + t["ArrayOfFolderNewHostSpec"] = reflect.TypeOf((*ArrayOfFolderNewHostSpec)(nil)).Elem() +} + +type ArrayOfGuestAliases struct { + GuestAliases []GuestAliases `xml:"GuestAliases,omitempty"` +} + +func init() { + t["ArrayOfGuestAliases"] = reflect.TypeOf((*ArrayOfGuestAliases)(nil)).Elem() +} + +type ArrayOfGuestAuthAliasInfo struct { + GuestAuthAliasInfo []GuestAuthAliasInfo `xml:"GuestAuthAliasInfo,omitempty"` +} + +func init() { + t["ArrayOfGuestAuthAliasInfo"] = reflect.TypeOf((*ArrayOfGuestAuthAliasInfo)(nil)).Elem() +} + +type ArrayOfGuestAuthSubject struct { + GuestAuthSubject []BaseGuestAuthSubject `xml:"GuestAuthSubject,omitempty,typeattr"` +} + +func init() { + t["ArrayOfGuestAuthSubject"] = reflect.TypeOf((*ArrayOfGuestAuthSubject)(nil)).Elem() +} + +type ArrayOfGuestDiskInfo struct { + GuestDiskInfo []GuestDiskInfo `xml:"GuestDiskInfo,omitempty"` +} + +func init() { + t["ArrayOfGuestDiskInfo"] = reflect.TypeOf((*ArrayOfGuestDiskInfo)(nil)).Elem() +} + +type ArrayOfGuestFileInfo struct { + GuestFileInfo []GuestFileInfo `xml:"GuestFileInfo,omitempty"` +} + +func init() { + t["ArrayOfGuestFileInfo"] = reflect.TypeOf((*ArrayOfGuestFileInfo)(nil)).Elem() +} + +type ArrayOfGuestInfoNamespaceGenerationInfo struct { + GuestInfoNamespaceGenerationInfo []GuestInfoNamespaceGenerationInfo `xml:"GuestInfoNamespaceGenerationInfo,omitempty"` +} + +func init() { + t["ArrayOfGuestInfoNamespaceGenerationInfo"] = reflect.TypeOf((*ArrayOfGuestInfoNamespaceGenerationInfo)(nil)).Elem() +} + +type ArrayOfGuestInfoVirtualDiskMapping struct { + GuestInfoVirtualDiskMapping []GuestInfoVirtualDiskMapping `xml:"GuestInfoVirtualDiskMapping,omitempty"` +} + +func init() { + t["ArrayOfGuestInfoVirtualDiskMapping"] = reflect.TypeOf((*ArrayOfGuestInfoVirtualDiskMapping)(nil)).Elem() +} + +type ArrayOfGuestMappedAliases struct { + GuestMappedAliases []GuestMappedAliases `xml:"GuestMappedAliases,omitempty"` +} + +func init() { + t["ArrayOfGuestMappedAliases"] = reflect.TypeOf((*ArrayOfGuestMappedAliases)(nil)).Elem() +} + +type ArrayOfGuestNicInfo struct { + GuestNicInfo []GuestNicInfo `xml:"GuestNicInfo,omitempty"` +} + +func init() { + t["ArrayOfGuestNicInfo"] = reflect.TypeOf((*ArrayOfGuestNicInfo)(nil)).Elem() +} + +type ArrayOfGuestOsDescriptor struct { + GuestOsDescriptor []GuestOsDescriptor `xml:"GuestOsDescriptor,omitempty"` +} + +func init() { + t["ArrayOfGuestOsDescriptor"] = reflect.TypeOf((*ArrayOfGuestOsDescriptor)(nil)).Elem() +} + +type ArrayOfGuestProcessInfo struct { + GuestProcessInfo []GuestProcessInfo `xml:"GuestProcessInfo,omitempty"` +} + +func init() { + t["ArrayOfGuestProcessInfo"] = reflect.TypeOf((*ArrayOfGuestProcessInfo)(nil)).Elem() +} + +type ArrayOfGuestRegKeyRecordSpec struct { + GuestRegKeyRecordSpec []GuestRegKeyRecordSpec `xml:"GuestRegKeyRecordSpec,omitempty"` +} + +func init() { + t["ArrayOfGuestRegKeyRecordSpec"] = reflect.TypeOf((*ArrayOfGuestRegKeyRecordSpec)(nil)).Elem() +} + +type ArrayOfGuestRegValueSpec struct { + GuestRegValueSpec []GuestRegValueSpec `xml:"GuestRegValueSpec,omitempty"` +} + +func init() { + t["ArrayOfGuestRegValueSpec"] = reflect.TypeOf((*ArrayOfGuestRegValueSpec)(nil)).Elem() +} + +type ArrayOfGuestStackInfo struct { + GuestStackInfo []GuestStackInfo `xml:"GuestStackInfo,omitempty"` +} + +func init() { + t["ArrayOfGuestStackInfo"] = reflect.TypeOf((*ArrayOfGuestStackInfo)(nil)).Elem() +} + +type ArrayOfHbrManagerVmReplicationCapability struct { + HbrManagerVmReplicationCapability []HbrManagerVmReplicationCapability `xml:"HbrManagerVmReplicationCapability,omitempty"` +} + +func init() { + t["ArrayOfHbrManagerVmReplicationCapability"] = reflect.TypeOf((*ArrayOfHbrManagerVmReplicationCapability)(nil)).Elem() +} + +type ArrayOfHealthUpdate struct { + HealthUpdate []HealthUpdate `xml:"HealthUpdate,omitempty"` +} + +func init() { + t["ArrayOfHealthUpdate"] = reflect.TypeOf((*ArrayOfHealthUpdate)(nil)).Elem() +} + +type ArrayOfHealthUpdateInfo struct { + HealthUpdateInfo []HealthUpdateInfo `xml:"HealthUpdateInfo,omitempty"` +} + +func init() { + t["ArrayOfHealthUpdateInfo"] = reflect.TypeOf((*ArrayOfHealthUpdateInfo)(nil)).Elem() +} + +type ArrayOfHostAccessControlEntry struct { + HostAccessControlEntry []HostAccessControlEntry `xml:"HostAccessControlEntry,omitempty"` +} + +func init() { + t["ArrayOfHostAccessControlEntry"] = reflect.TypeOf((*ArrayOfHostAccessControlEntry)(nil)).Elem() +} + +type ArrayOfHostAccountSpec struct { + HostAccountSpec []BaseHostAccountSpec `xml:"HostAccountSpec,omitempty,typeattr"` +} + +func init() { + t["ArrayOfHostAccountSpec"] = reflect.TypeOf((*ArrayOfHostAccountSpec)(nil)).Elem() +} + +type ArrayOfHostActiveDirectory struct { + HostActiveDirectory []HostActiveDirectory `xml:"HostActiveDirectory,omitempty"` +} + +func init() { + t["ArrayOfHostActiveDirectory"] = reflect.TypeOf((*ArrayOfHostActiveDirectory)(nil)).Elem() +} + +type ArrayOfHostAssignableHardwareBinding struct { + HostAssignableHardwareBinding []HostAssignableHardwareBinding `xml:"HostAssignableHardwareBinding,omitempty"` +} + +func init() { + t["ArrayOfHostAssignableHardwareBinding"] = reflect.TypeOf((*ArrayOfHostAssignableHardwareBinding)(nil)).Elem() +} + +type ArrayOfHostAssignableHardwareConfigAttributeOverride struct { + HostAssignableHardwareConfigAttributeOverride []HostAssignableHardwareConfigAttributeOverride `xml:"HostAssignableHardwareConfigAttributeOverride,omitempty"` +} + +func init() { + t["ArrayOfHostAssignableHardwareConfigAttributeOverride"] = reflect.TypeOf((*ArrayOfHostAssignableHardwareConfigAttributeOverride)(nil)).Elem() +} + +type ArrayOfHostAuthenticationStoreInfo struct { + HostAuthenticationStoreInfo []BaseHostAuthenticationStoreInfo `xml:"HostAuthenticationStoreInfo,omitempty,typeattr"` +} + +func init() { + t["ArrayOfHostAuthenticationStoreInfo"] = reflect.TypeOf((*ArrayOfHostAuthenticationStoreInfo)(nil)).Elem() +} + +type ArrayOfHostBootDevice struct { + HostBootDevice []HostBootDevice `xml:"HostBootDevice,omitempty"` +} + +func init() { + t["ArrayOfHostBootDevice"] = reflect.TypeOf((*ArrayOfHostBootDevice)(nil)).Elem() +} + +type ArrayOfHostCacheConfigurationInfo struct { + HostCacheConfigurationInfo []HostCacheConfigurationInfo `xml:"HostCacheConfigurationInfo,omitempty"` +} + +func init() { + t["ArrayOfHostCacheConfigurationInfo"] = reflect.TypeOf((*ArrayOfHostCacheConfigurationInfo)(nil)).Elem() +} + +type ArrayOfHostConnectInfoNetworkInfo struct { + HostConnectInfoNetworkInfo []BaseHostConnectInfoNetworkInfo `xml:"HostConnectInfoNetworkInfo,omitempty,typeattr"` +} + +func init() { + t["ArrayOfHostConnectInfoNetworkInfo"] = reflect.TypeOf((*ArrayOfHostConnectInfoNetworkInfo)(nil)).Elem() +} + +type ArrayOfHostConnectSpec struct { + HostConnectSpec []HostConnectSpec `xml:"HostConnectSpec,omitempty"` +} + +func init() { + t["ArrayOfHostConnectSpec"] = reflect.TypeOf((*ArrayOfHostConnectSpec)(nil)).Elem() +} + +type ArrayOfHostCpuIdInfo struct { + HostCpuIdInfo []HostCpuIdInfo `xml:"HostCpuIdInfo,omitempty"` +} + +func init() { + t["ArrayOfHostCpuIdInfo"] = reflect.TypeOf((*ArrayOfHostCpuIdInfo)(nil)).Elem() +} + +type ArrayOfHostCpuPackage struct { + HostCpuPackage []HostCpuPackage `xml:"HostCpuPackage,omitempty"` +} + +func init() { + t["ArrayOfHostCpuPackage"] = reflect.TypeOf((*ArrayOfHostCpuPackage)(nil)).Elem() +} + +type ArrayOfHostDatastoreBrowserSearchResults struct { + HostDatastoreBrowserSearchResults []HostDatastoreBrowserSearchResults `xml:"HostDatastoreBrowserSearchResults,omitempty"` +} + +func init() { + t["ArrayOfHostDatastoreBrowserSearchResults"] = reflect.TypeOf((*ArrayOfHostDatastoreBrowserSearchResults)(nil)).Elem() +} + +type ArrayOfHostDatastoreConnectInfo struct { + HostDatastoreConnectInfo []BaseHostDatastoreConnectInfo `xml:"HostDatastoreConnectInfo,omitempty,typeattr"` +} + +func init() { + t["ArrayOfHostDatastoreConnectInfo"] = reflect.TypeOf((*ArrayOfHostDatastoreConnectInfo)(nil)).Elem() +} + +type ArrayOfHostDatastoreSystemDatastoreResult struct { + HostDatastoreSystemDatastoreResult []HostDatastoreSystemDatastoreResult `xml:"HostDatastoreSystemDatastoreResult,omitempty"` +} + +func init() { + t["ArrayOfHostDatastoreSystemDatastoreResult"] = reflect.TypeOf((*ArrayOfHostDatastoreSystemDatastoreResult)(nil)).Elem() +} + +type ArrayOfHostDateTimeSystemTimeZone struct { + HostDateTimeSystemTimeZone []HostDateTimeSystemTimeZone `xml:"HostDateTimeSystemTimeZone,omitempty"` +} + +func init() { + t["ArrayOfHostDateTimeSystemTimeZone"] = reflect.TypeOf((*ArrayOfHostDateTimeSystemTimeZone)(nil)).Elem() +} + +type ArrayOfHostDhcpService struct { + HostDhcpService []HostDhcpService `xml:"HostDhcpService,omitempty"` +} + +func init() { + t["ArrayOfHostDhcpService"] = reflect.TypeOf((*ArrayOfHostDhcpService)(nil)).Elem() +} + +type ArrayOfHostDhcpServiceConfig struct { + HostDhcpServiceConfig []HostDhcpServiceConfig `xml:"HostDhcpServiceConfig,omitempty"` +} + +func init() { + t["ArrayOfHostDhcpServiceConfig"] = reflect.TypeOf((*ArrayOfHostDhcpServiceConfig)(nil)).Elem() +} + +type ArrayOfHostDiagnosticPartition struct { + HostDiagnosticPartition []HostDiagnosticPartition `xml:"HostDiagnosticPartition,omitempty"` +} + +func init() { + t["ArrayOfHostDiagnosticPartition"] = reflect.TypeOf((*ArrayOfHostDiagnosticPartition)(nil)).Elem() +} + +type ArrayOfHostDiagnosticPartitionCreateOption struct { + HostDiagnosticPartitionCreateOption []HostDiagnosticPartitionCreateOption `xml:"HostDiagnosticPartitionCreateOption,omitempty"` +} + +func init() { + t["ArrayOfHostDiagnosticPartitionCreateOption"] = reflect.TypeOf((*ArrayOfHostDiagnosticPartitionCreateOption)(nil)).Elem() +} + +type ArrayOfHostDiskConfigurationResult struct { + HostDiskConfigurationResult []HostDiskConfigurationResult `xml:"HostDiskConfigurationResult,omitempty"` +} + +func init() { + t["ArrayOfHostDiskConfigurationResult"] = reflect.TypeOf((*ArrayOfHostDiskConfigurationResult)(nil)).Elem() +} + +type ArrayOfHostDiskMappingPartitionOption struct { + HostDiskMappingPartitionOption []HostDiskMappingPartitionOption `xml:"HostDiskMappingPartitionOption,omitempty"` +} + +func init() { + t["ArrayOfHostDiskMappingPartitionOption"] = reflect.TypeOf((*ArrayOfHostDiskMappingPartitionOption)(nil)).Elem() +} + +type ArrayOfHostDiskPartitionAttributes struct { + HostDiskPartitionAttributes []HostDiskPartitionAttributes `xml:"HostDiskPartitionAttributes,omitempty"` +} + +func init() { + t["ArrayOfHostDiskPartitionAttributes"] = reflect.TypeOf((*ArrayOfHostDiskPartitionAttributes)(nil)).Elem() +} + +type ArrayOfHostDiskPartitionBlockRange struct { + HostDiskPartitionBlockRange []HostDiskPartitionBlockRange `xml:"HostDiskPartitionBlockRange,omitempty"` +} + +func init() { + t["ArrayOfHostDiskPartitionBlockRange"] = reflect.TypeOf((*ArrayOfHostDiskPartitionBlockRange)(nil)).Elem() +} + +type ArrayOfHostDiskPartitionInfo struct { + HostDiskPartitionInfo []HostDiskPartitionInfo `xml:"HostDiskPartitionInfo,omitempty"` +} + +func init() { + t["ArrayOfHostDiskPartitionInfo"] = reflect.TypeOf((*ArrayOfHostDiskPartitionInfo)(nil)).Elem() +} + +type ArrayOfHostEventArgument struct { + HostEventArgument []HostEventArgument `xml:"HostEventArgument,omitempty"` +} + +func init() { + t["ArrayOfHostEventArgument"] = reflect.TypeOf((*ArrayOfHostEventArgument)(nil)).Elem() +} + +type ArrayOfHostFeatureCapability struct { + HostFeatureCapability []HostFeatureCapability `xml:"HostFeatureCapability,omitempty"` +} + +func init() { + t["ArrayOfHostFeatureCapability"] = reflect.TypeOf((*ArrayOfHostFeatureCapability)(nil)).Elem() +} + +type ArrayOfHostFeatureMask struct { + HostFeatureMask []HostFeatureMask `xml:"HostFeatureMask,omitempty"` +} + +func init() { + t["ArrayOfHostFeatureMask"] = reflect.TypeOf((*ArrayOfHostFeatureMask)(nil)).Elem() +} + +type ArrayOfHostFeatureVersionInfo struct { + HostFeatureVersionInfo []HostFeatureVersionInfo `xml:"HostFeatureVersionInfo,omitempty"` +} + +func init() { + t["ArrayOfHostFeatureVersionInfo"] = reflect.TypeOf((*ArrayOfHostFeatureVersionInfo)(nil)).Elem() +} + +type ArrayOfHostFileSystemMountInfo struct { + HostFileSystemMountInfo []HostFileSystemMountInfo `xml:"HostFileSystemMountInfo,omitempty"` +} + +func init() { + t["ArrayOfHostFileSystemMountInfo"] = reflect.TypeOf((*ArrayOfHostFileSystemMountInfo)(nil)).Elem() +} + +type ArrayOfHostFirewallConfigRuleSetConfig struct { + HostFirewallConfigRuleSetConfig []HostFirewallConfigRuleSetConfig `xml:"HostFirewallConfigRuleSetConfig,omitempty"` +} + +func init() { + t["ArrayOfHostFirewallConfigRuleSetConfig"] = reflect.TypeOf((*ArrayOfHostFirewallConfigRuleSetConfig)(nil)).Elem() +} + +type ArrayOfHostFirewallRule struct { + HostFirewallRule []HostFirewallRule `xml:"HostFirewallRule,omitempty"` +} + +func init() { + t["ArrayOfHostFirewallRule"] = reflect.TypeOf((*ArrayOfHostFirewallRule)(nil)).Elem() +} + +type ArrayOfHostFirewallRuleset struct { + HostFirewallRuleset []HostFirewallRuleset `xml:"HostFirewallRuleset,omitempty"` +} + +func init() { + t["ArrayOfHostFirewallRuleset"] = reflect.TypeOf((*ArrayOfHostFirewallRuleset)(nil)).Elem() +} + +type ArrayOfHostFirewallRulesetIpNetwork struct { + HostFirewallRulesetIpNetwork []HostFirewallRulesetIpNetwork `xml:"HostFirewallRulesetIpNetwork,omitempty"` +} + +func init() { + t["ArrayOfHostFirewallRulesetIpNetwork"] = reflect.TypeOf((*ArrayOfHostFirewallRulesetIpNetwork)(nil)).Elem() +} + +type ArrayOfHostGraphicsConfigDeviceType struct { + HostGraphicsConfigDeviceType []HostGraphicsConfigDeviceType `xml:"HostGraphicsConfigDeviceType,omitempty"` +} + +func init() { + t["ArrayOfHostGraphicsConfigDeviceType"] = reflect.TypeOf((*ArrayOfHostGraphicsConfigDeviceType)(nil)).Elem() +} + +type ArrayOfHostGraphicsInfo struct { + HostGraphicsInfo []HostGraphicsInfo `xml:"HostGraphicsInfo,omitempty"` +} + +func init() { + t["ArrayOfHostGraphicsInfo"] = reflect.TypeOf((*ArrayOfHostGraphicsInfo)(nil)).Elem() +} + +type ArrayOfHostHardwareElementInfo struct { + HostHardwareElementInfo []BaseHostHardwareElementInfo `xml:"HostHardwareElementInfo,omitempty,typeattr"` +} + +func init() { + t["ArrayOfHostHardwareElementInfo"] = reflect.TypeOf((*ArrayOfHostHardwareElementInfo)(nil)).Elem() +} + +type ArrayOfHostHostBusAdapter struct { + HostHostBusAdapter []BaseHostHostBusAdapter `xml:"HostHostBusAdapter,omitempty,typeattr"` +} + +func init() { + t["ArrayOfHostHostBusAdapter"] = reflect.TypeOf((*ArrayOfHostHostBusAdapter)(nil)).Elem() +} + +type ArrayOfHostInternetScsiHbaIscsiIpv6Address struct { + HostInternetScsiHbaIscsiIpv6Address []HostInternetScsiHbaIscsiIpv6Address `xml:"HostInternetScsiHbaIscsiIpv6Address,omitempty"` +} + +func init() { + t["ArrayOfHostInternetScsiHbaIscsiIpv6Address"] = reflect.TypeOf((*ArrayOfHostInternetScsiHbaIscsiIpv6Address)(nil)).Elem() +} + +type ArrayOfHostInternetScsiHbaParamValue struct { + HostInternetScsiHbaParamValue []HostInternetScsiHbaParamValue `xml:"HostInternetScsiHbaParamValue,omitempty"` +} + +func init() { + t["ArrayOfHostInternetScsiHbaParamValue"] = reflect.TypeOf((*ArrayOfHostInternetScsiHbaParamValue)(nil)).Elem() +} + +type ArrayOfHostInternetScsiHbaSendTarget struct { + HostInternetScsiHbaSendTarget []HostInternetScsiHbaSendTarget `xml:"HostInternetScsiHbaSendTarget,omitempty"` +} + +func init() { + t["ArrayOfHostInternetScsiHbaSendTarget"] = reflect.TypeOf((*ArrayOfHostInternetScsiHbaSendTarget)(nil)).Elem() +} + +type ArrayOfHostInternetScsiHbaStaticTarget struct { + HostInternetScsiHbaStaticTarget []HostInternetScsiHbaStaticTarget `xml:"HostInternetScsiHbaStaticTarget,omitempty"` +} + +func init() { + t["ArrayOfHostInternetScsiHbaStaticTarget"] = reflect.TypeOf((*ArrayOfHostInternetScsiHbaStaticTarget)(nil)).Elem() +} + +type ArrayOfHostIoFilterInfo struct { + HostIoFilterInfo []HostIoFilterInfo `xml:"HostIoFilterInfo,omitempty"` +} + +func init() { + t["ArrayOfHostIoFilterInfo"] = reflect.TypeOf((*ArrayOfHostIoFilterInfo)(nil)).Elem() +} + +type ArrayOfHostIpConfigIpV6Address struct { + HostIpConfigIpV6Address []HostIpConfigIpV6Address `xml:"HostIpConfigIpV6Address,omitempty"` +} + +func init() { + t["ArrayOfHostIpConfigIpV6Address"] = reflect.TypeOf((*ArrayOfHostIpConfigIpV6Address)(nil)).Elem() +} + +type ArrayOfHostIpRouteEntry struct { + HostIpRouteEntry []HostIpRouteEntry `xml:"HostIpRouteEntry,omitempty"` +} + +func init() { + t["ArrayOfHostIpRouteEntry"] = reflect.TypeOf((*ArrayOfHostIpRouteEntry)(nil)).Elem() +} + +type ArrayOfHostIpRouteOp struct { + HostIpRouteOp []HostIpRouteOp `xml:"HostIpRouteOp,omitempty"` +} + +func init() { + t["ArrayOfHostIpRouteOp"] = reflect.TypeOf((*ArrayOfHostIpRouteOp)(nil)).Elem() +} + +type ArrayOfHostLowLevelProvisioningManagerDiskLayoutSpec struct { + HostLowLevelProvisioningManagerDiskLayoutSpec []HostLowLevelProvisioningManagerDiskLayoutSpec `xml:"HostLowLevelProvisioningManagerDiskLayoutSpec,omitempty"` +} + +func init() { + t["ArrayOfHostLowLevelProvisioningManagerDiskLayoutSpec"] = reflect.TypeOf((*ArrayOfHostLowLevelProvisioningManagerDiskLayoutSpec)(nil)).Elem() +} + +type ArrayOfHostLowLevelProvisioningManagerFileDeleteResult struct { + HostLowLevelProvisioningManagerFileDeleteResult []HostLowLevelProvisioningManagerFileDeleteResult `xml:"HostLowLevelProvisioningManagerFileDeleteResult,omitempty"` +} + +func init() { + t["ArrayOfHostLowLevelProvisioningManagerFileDeleteResult"] = reflect.TypeOf((*ArrayOfHostLowLevelProvisioningManagerFileDeleteResult)(nil)).Elem() +} + +type ArrayOfHostLowLevelProvisioningManagerFileDeleteSpec struct { + HostLowLevelProvisioningManagerFileDeleteSpec []HostLowLevelProvisioningManagerFileDeleteSpec `xml:"HostLowLevelProvisioningManagerFileDeleteSpec,omitempty"` +} + +func init() { + t["ArrayOfHostLowLevelProvisioningManagerFileDeleteSpec"] = reflect.TypeOf((*ArrayOfHostLowLevelProvisioningManagerFileDeleteSpec)(nil)).Elem() +} + +type ArrayOfHostLowLevelProvisioningManagerFileReserveResult struct { + HostLowLevelProvisioningManagerFileReserveResult []HostLowLevelProvisioningManagerFileReserveResult `xml:"HostLowLevelProvisioningManagerFileReserveResult,omitempty"` +} + +func init() { + t["ArrayOfHostLowLevelProvisioningManagerFileReserveResult"] = reflect.TypeOf((*ArrayOfHostLowLevelProvisioningManagerFileReserveResult)(nil)).Elem() +} + +type ArrayOfHostLowLevelProvisioningManagerFileReserveSpec struct { + HostLowLevelProvisioningManagerFileReserveSpec []HostLowLevelProvisioningManagerFileReserveSpec `xml:"HostLowLevelProvisioningManagerFileReserveSpec,omitempty"` +} + +func init() { + t["ArrayOfHostLowLevelProvisioningManagerFileReserveSpec"] = reflect.TypeOf((*ArrayOfHostLowLevelProvisioningManagerFileReserveSpec)(nil)).Elem() +} + +type ArrayOfHostLowLevelProvisioningManagerSnapshotLayoutSpec struct { + HostLowLevelProvisioningManagerSnapshotLayoutSpec []HostLowLevelProvisioningManagerSnapshotLayoutSpec `xml:"HostLowLevelProvisioningManagerSnapshotLayoutSpec,omitempty"` +} + +func init() { + t["ArrayOfHostLowLevelProvisioningManagerSnapshotLayoutSpec"] = reflect.TypeOf((*ArrayOfHostLowLevelProvisioningManagerSnapshotLayoutSpec)(nil)).Elem() +} + +type ArrayOfHostMemberHealthCheckResult struct { + HostMemberHealthCheckResult []BaseHostMemberHealthCheckResult `xml:"HostMemberHealthCheckResult,omitempty,typeattr"` +} + +func init() { + t["ArrayOfHostMemberHealthCheckResult"] = reflect.TypeOf((*ArrayOfHostMemberHealthCheckResult)(nil)).Elem() +} + +type ArrayOfHostMemberRuntimeInfo struct { + HostMemberRuntimeInfo []HostMemberRuntimeInfo `xml:"HostMemberRuntimeInfo,omitempty"` +} + +func init() { + t["ArrayOfHostMemberRuntimeInfo"] = reflect.TypeOf((*ArrayOfHostMemberRuntimeInfo)(nil)).Elem() +} + +type ArrayOfHostMultipathInfoLogicalUnit struct { + HostMultipathInfoLogicalUnit []HostMultipathInfoLogicalUnit `xml:"HostMultipathInfoLogicalUnit,omitempty"` +} + +func init() { + t["ArrayOfHostMultipathInfoLogicalUnit"] = reflect.TypeOf((*ArrayOfHostMultipathInfoLogicalUnit)(nil)).Elem() +} + +type ArrayOfHostMultipathInfoPath struct { + HostMultipathInfoPath []HostMultipathInfoPath `xml:"HostMultipathInfoPath,omitempty"` +} + +func init() { + t["ArrayOfHostMultipathInfoPath"] = reflect.TypeOf((*ArrayOfHostMultipathInfoPath)(nil)).Elem() +} + +type ArrayOfHostMultipathStateInfoPath struct { + HostMultipathStateInfoPath []HostMultipathStateInfoPath `xml:"HostMultipathStateInfoPath,omitempty"` +} + +func init() { + t["ArrayOfHostMultipathStateInfoPath"] = reflect.TypeOf((*ArrayOfHostMultipathStateInfoPath)(nil)).Elem() +} + +type ArrayOfHostNasVolumeConfig struct { + HostNasVolumeConfig []HostNasVolumeConfig `xml:"HostNasVolumeConfig,omitempty"` +} + +func init() { + t["ArrayOfHostNasVolumeConfig"] = reflect.TypeOf((*ArrayOfHostNasVolumeConfig)(nil)).Elem() +} + +type ArrayOfHostNatService struct { + HostNatService []HostNatService `xml:"HostNatService,omitempty"` +} + +func init() { + t["ArrayOfHostNatService"] = reflect.TypeOf((*ArrayOfHostNatService)(nil)).Elem() +} + +type ArrayOfHostNatServiceConfig struct { + HostNatServiceConfig []HostNatServiceConfig `xml:"HostNatServiceConfig,omitempty"` +} + +func init() { + t["ArrayOfHostNatServiceConfig"] = reflect.TypeOf((*ArrayOfHostNatServiceConfig)(nil)).Elem() +} + +type ArrayOfHostNatServicePortForwardSpec struct { + HostNatServicePortForwardSpec []HostNatServicePortForwardSpec `xml:"HostNatServicePortForwardSpec,omitempty"` +} + +func init() { + t["ArrayOfHostNatServicePortForwardSpec"] = reflect.TypeOf((*ArrayOfHostNatServicePortForwardSpec)(nil)).Elem() +} + +type ArrayOfHostNetStackInstance struct { + HostNetStackInstance []HostNetStackInstance `xml:"HostNetStackInstance,omitempty"` +} + +func init() { + t["ArrayOfHostNetStackInstance"] = reflect.TypeOf((*ArrayOfHostNetStackInstance)(nil)).Elem() +} + +type ArrayOfHostNetworkConfigNetStackSpec struct { + HostNetworkConfigNetStackSpec []HostNetworkConfigNetStackSpec `xml:"HostNetworkConfigNetStackSpec,omitempty"` +} + +func init() { + t["ArrayOfHostNetworkConfigNetStackSpec"] = reflect.TypeOf((*ArrayOfHostNetworkConfigNetStackSpec)(nil)).Elem() +} + +type ArrayOfHostNumaNode struct { + HostNumaNode []HostNumaNode `xml:"HostNumaNode,omitempty"` +} + +func init() { + t["ArrayOfHostNumaNode"] = reflect.TypeOf((*ArrayOfHostNumaNode)(nil)).Elem() +} + +type ArrayOfHostNumericSensorInfo struct { + HostNumericSensorInfo []HostNumericSensorInfo `xml:"HostNumericSensorInfo,omitempty"` +} + +func init() { + t["ArrayOfHostNumericSensorInfo"] = reflect.TypeOf((*ArrayOfHostNumericSensorInfo)(nil)).Elem() +} + +type ArrayOfHostNvmeController struct { + HostNvmeController []HostNvmeController `xml:"HostNvmeController,omitempty"` +} + +func init() { + t["ArrayOfHostNvmeController"] = reflect.TypeOf((*ArrayOfHostNvmeController)(nil)).Elem() +} + +type ArrayOfHostNvmeDiscoveryLogEntry struct { + HostNvmeDiscoveryLogEntry []HostNvmeDiscoveryLogEntry `xml:"HostNvmeDiscoveryLogEntry,omitempty"` +} + +func init() { + t["ArrayOfHostNvmeDiscoveryLogEntry"] = reflect.TypeOf((*ArrayOfHostNvmeDiscoveryLogEntry)(nil)).Elem() +} + +type ArrayOfHostNvmeNamespace struct { + HostNvmeNamespace []HostNvmeNamespace `xml:"HostNvmeNamespace,omitempty"` +} + +func init() { + t["ArrayOfHostNvmeNamespace"] = reflect.TypeOf((*ArrayOfHostNvmeNamespace)(nil)).Elem() +} + +type ArrayOfHostNvmeTopologyInterface struct { + HostNvmeTopologyInterface []HostNvmeTopologyInterface `xml:"HostNvmeTopologyInterface,omitempty"` +} + +func init() { + t["ArrayOfHostNvmeTopologyInterface"] = reflect.TypeOf((*ArrayOfHostNvmeTopologyInterface)(nil)).Elem() +} + +type ArrayOfHostOpaqueNetworkInfo struct { + HostOpaqueNetworkInfo []HostOpaqueNetworkInfo `xml:"HostOpaqueNetworkInfo,omitempty"` +} + +func init() { + t["ArrayOfHostOpaqueNetworkInfo"] = reflect.TypeOf((*ArrayOfHostOpaqueNetworkInfo)(nil)).Elem() +} + +type ArrayOfHostOpaqueSwitch struct { + HostOpaqueSwitch []HostOpaqueSwitch `xml:"HostOpaqueSwitch,omitempty"` +} + +func init() { + t["ArrayOfHostOpaqueSwitch"] = reflect.TypeOf((*ArrayOfHostOpaqueSwitch)(nil)).Elem() +} + +type ArrayOfHostOpaqueSwitchPhysicalNicZone struct { + HostOpaqueSwitchPhysicalNicZone []HostOpaqueSwitchPhysicalNicZone `xml:"HostOpaqueSwitchPhysicalNicZone,omitempty"` +} + +func init() { + t["ArrayOfHostOpaqueSwitchPhysicalNicZone"] = reflect.TypeOf((*ArrayOfHostOpaqueSwitchPhysicalNicZone)(nil)).Elem() +} + +type ArrayOfHostPatchManagerStatus struct { + HostPatchManagerStatus []HostPatchManagerStatus `xml:"HostPatchManagerStatus,omitempty"` +} + +func init() { + t["ArrayOfHostPatchManagerStatus"] = reflect.TypeOf((*ArrayOfHostPatchManagerStatus)(nil)).Elem() +} + +type ArrayOfHostPatchManagerStatusPrerequisitePatch struct { + HostPatchManagerStatusPrerequisitePatch []HostPatchManagerStatusPrerequisitePatch `xml:"HostPatchManagerStatusPrerequisitePatch,omitempty"` +} + +func init() { + t["ArrayOfHostPatchManagerStatusPrerequisitePatch"] = reflect.TypeOf((*ArrayOfHostPatchManagerStatusPrerequisitePatch)(nil)).Elem() +} + +type ArrayOfHostPathSelectionPolicyOption struct { + HostPathSelectionPolicyOption []HostPathSelectionPolicyOption `xml:"HostPathSelectionPolicyOption,omitempty"` +} + +func init() { + t["ArrayOfHostPathSelectionPolicyOption"] = reflect.TypeOf((*ArrayOfHostPathSelectionPolicyOption)(nil)).Elem() +} + +type ArrayOfHostPciDevice struct { + HostPciDevice []HostPciDevice `xml:"HostPciDevice,omitempty"` +} + +func init() { + t["ArrayOfHostPciDevice"] = reflect.TypeOf((*ArrayOfHostPciDevice)(nil)).Elem() +} + +type ArrayOfHostPciPassthruConfig struct { + HostPciPassthruConfig []BaseHostPciPassthruConfig `xml:"HostPciPassthruConfig,omitempty,typeattr"` +} + +func init() { + t["ArrayOfHostPciPassthruConfig"] = reflect.TypeOf((*ArrayOfHostPciPassthruConfig)(nil)).Elem() +} + +type ArrayOfHostPciPassthruInfo struct { + HostPciPassthruInfo []BaseHostPciPassthruInfo `xml:"HostPciPassthruInfo,omitempty,typeattr"` +} + +func init() { + t["ArrayOfHostPciPassthruInfo"] = reflect.TypeOf((*ArrayOfHostPciPassthruInfo)(nil)).Elem() +} + +type ArrayOfHostPlacedVirtualNicIdentifier struct { + HostPlacedVirtualNicIdentifier []HostPlacedVirtualNicIdentifier `xml:"HostPlacedVirtualNicIdentifier,omitempty"` +} + +func init() { + t["ArrayOfHostPlacedVirtualNicIdentifier"] = reflect.TypeOf((*ArrayOfHostPlacedVirtualNicIdentifier)(nil)).Elem() +} + +type ArrayOfHostPlugStoreTopologyAdapter struct { + HostPlugStoreTopologyAdapter []HostPlugStoreTopologyAdapter `xml:"HostPlugStoreTopologyAdapter,omitempty"` +} + +func init() { + t["ArrayOfHostPlugStoreTopologyAdapter"] = reflect.TypeOf((*ArrayOfHostPlugStoreTopologyAdapter)(nil)).Elem() +} + +type ArrayOfHostPlugStoreTopologyDevice struct { + HostPlugStoreTopologyDevice []HostPlugStoreTopologyDevice `xml:"HostPlugStoreTopologyDevice,omitempty"` +} + +func init() { + t["ArrayOfHostPlugStoreTopologyDevice"] = reflect.TypeOf((*ArrayOfHostPlugStoreTopologyDevice)(nil)).Elem() +} + +type ArrayOfHostPlugStoreTopologyPath struct { + HostPlugStoreTopologyPath []HostPlugStoreTopologyPath `xml:"HostPlugStoreTopologyPath,omitempty"` +} + +func init() { + t["ArrayOfHostPlugStoreTopologyPath"] = reflect.TypeOf((*ArrayOfHostPlugStoreTopologyPath)(nil)).Elem() +} + +type ArrayOfHostPlugStoreTopologyPlugin struct { + HostPlugStoreTopologyPlugin []HostPlugStoreTopologyPlugin `xml:"HostPlugStoreTopologyPlugin,omitempty"` +} + +func init() { + t["ArrayOfHostPlugStoreTopologyPlugin"] = reflect.TypeOf((*ArrayOfHostPlugStoreTopologyPlugin)(nil)).Elem() +} + +type ArrayOfHostPlugStoreTopologyTarget struct { + HostPlugStoreTopologyTarget []HostPlugStoreTopologyTarget `xml:"HostPlugStoreTopologyTarget,omitempty"` +} + +func init() { + t["ArrayOfHostPlugStoreTopologyTarget"] = reflect.TypeOf((*ArrayOfHostPlugStoreTopologyTarget)(nil)).Elem() +} + +type ArrayOfHostPnicNetworkResourceInfo struct { + HostPnicNetworkResourceInfo []HostPnicNetworkResourceInfo `xml:"HostPnicNetworkResourceInfo,omitempty"` +} + +func init() { + t["ArrayOfHostPnicNetworkResourceInfo"] = reflect.TypeOf((*ArrayOfHostPnicNetworkResourceInfo)(nil)).Elem() +} + +type ArrayOfHostPortGroup struct { + HostPortGroup []HostPortGroup `xml:"HostPortGroup,omitempty"` +} + +func init() { + t["ArrayOfHostPortGroup"] = reflect.TypeOf((*ArrayOfHostPortGroup)(nil)).Elem() +} + +type ArrayOfHostPortGroupConfig struct { + HostPortGroupConfig []HostPortGroupConfig `xml:"HostPortGroupConfig,omitempty"` +} + +func init() { + t["ArrayOfHostPortGroupConfig"] = reflect.TypeOf((*ArrayOfHostPortGroupConfig)(nil)).Elem() +} + +type ArrayOfHostPortGroupPort struct { + HostPortGroupPort []HostPortGroupPort `xml:"HostPortGroupPort,omitempty"` +} + +func init() { + t["ArrayOfHostPortGroupPort"] = reflect.TypeOf((*ArrayOfHostPortGroupPort)(nil)).Elem() +} + +type ArrayOfHostPortGroupProfile struct { + HostPortGroupProfile []HostPortGroupProfile `xml:"HostPortGroupProfile,omitempty"` +} + +func init() { + t["ArrayOfHostPortGroupProfile"] = reflect.TypeOf((*ArrayOfHostPortGroupProfile)(nil)).Elem() +} + +type ArrayOfHostPowerPolicy struct { + HostPowerPolicy []HostPowerPolicy `xml:"HostPowerPolicy,omitempty"` +} + +func init() { + t["ArrayOfHostPowerPolicy"] = reflect.TypeOf((*ArrayOfHostPowerPolicy)(nil)).Elem() +} + +type ArrayOfHostProfileManagerCompositionResultResultElement struct { + HostProfileManagerCompositionResultResultElement []HostProfileManagerCompositionResultResultElement `xml:"HostProfileManagerCompositionResultResultElement,omitempty"` +} + +func init() { + t["ArrayOfHostProfileManagerCompositionResultResultElement"] = reflect.TypeOf((*ArrayOfHostProfileManagerCompositionResultResultElement)(nil)).Elem() +} + +type ArrayOfHostProfileManagerCompositionValidationResultResultElement struct { + HostProfileManagerCompositionValidationResultResultElement []HostProfileManagerCompositionValidationResultResultElement `xml:"HostProfileManagerCompositionValidationResultResultElement,omitempty"` +} + +func init() { + t["ArrayOfHostProfileManagerCompositionValidationResultResultElement"] = reflect.TypeOf((*ArrayOfHostProfileManagerCompositionValidationResultResultElement)(nil)).Elem() +} + +type ArrayOfHostProfileManagerHostToConfigSpecMap struct { + HostProfileManagerHostToConfigSpecMap []HostProfileManagerHostToConfigSpecMap `xml:"HostProfileManagerHostToConfigSpecMap,omitempty"` +} + +func init() { + t["ArrayOfHostProfileManagerHostToConfigSpecMap"] = reflect.TypeOf((*ArrayOfHostProfileManagerHostToConfigSpecMap)(nil)).Elem() +} + +type ArrayOfHostProfilesEntityCustomizations struct { + HostProfilesEntityCustomizations []BaseHostProfilesEntityCustomizations `xml:"HostProfilesEntityCustomizations,omitempty,typeattr"` +} + +func init() { + t["ArrayOfHostProfilesEntityCustomizations"] = reflect.TypeOf((*ArrayOfHostProfilesEntityCustomizations)(nil)).Elem() +} + +type ArrayOfHostProtocolEndpoint struct { + HostProtocolEndpoint []HostProtocolEndpoint `xml:"HostProtocolEndpoint,omitempty"` +} + +func init() { + t["ArrayOfHostProtocolEndpoint"] = reflect.TypeOf((*ArrayOfHostProtocolEndpoint)(nil)).Elem() +} + +type ArrayOfHostProxySwitch struct { + HostProxySwitch []HostProxySwitch `xml:"HostProxySwitch,omitempty"` +} + +func init() { + t["ArrayOfHostProxySwitch"] = reflect.TypeOf((*ArrayOfHostProxySwitch)(nil)).Elem() +} + +type ArrayOfHostProxySwitchConfig struct { + HostProxySwitchConfig []HostProxySwitchConfig `xml:"HostProxySwitchConfig,omitempty"` +} + +func init() { + t["ArrayOfHostProxySwitchConfig"] = reflect.TypeOf((*ArrayOfHostProxySwitchConfig)(nil)).Elem() +} + +type ArrayOfHostProxySwitchHostLagConfig struct { + HostProxySwitchHostLagConfig []HostProxySwitchHostLagConfig `xml:"HostProxySwitchHostLagConfig,omitempty"` +} + +func init() { + t["ArrayOfHostProxySwitchHostLagConfig"] = reflect.TypeOf((*ArrayOfHostProxySwitchHostLagConfig)(nil)).Elem() +} + +type ArrayOfHostRdmaDevice struct { + HostRdmaDevice []HostRdmaDevice `xml:"HostRdmaDevice,omitempty"` +} + +func init() { + t["ArrayOfHostRdmaDevice"] = reflect.TypeOf((*ArrayOfHostRdmaDevice)(nil)).Elem() +} + +type ArrayOfHostRuntimeInfoNetStackInstanceRuntimeInfo struct { + HostRuntimeInfoNetStackInstanceRuntimeInfo []HostRuntimeInfoNetStackInstanceRuntimeInfo `xml:"HostRuntimeInfoNetStackInstanceRuntimeInfo,omitempty"` +} + +func init() { + t["ArrayOfHostRuntimeInfoNetStackInstanceRuntimeInfo"] = reflect.TypeOf((*ArrayOfHostRuntimeInfoNetStackInstanceRuntimeInfo)(nil)).Elem() +} + +type ArrayOfHostScsiDisk struct { + HostScsiDisk []HostScsiDisk `xml:"HostScsiDisk,omitempty"` +} + +func init() { + t["ArrayOfHostScsiDisk"] = reflect.TypeOf((*ArrayOfHostScsiDisk)(nil)).Elem() +} + +type ArrayOfHostScsiDiskPartition struct { + HostScsiDiskPartition []HostScsiDiskPartition `xml:"HostScsiDiskPartition,omitempty"` +} + +func init() { + t["ArrayOfHostScsiDiskPartition"] = reflect.TypeOf((*ArrayOfHostScsiDiskPartition)(nil)).Elem() +} + +type ArrayOfHostScsiTopologyInterface struct { + HostScsiTopologyInterface []HostScsiTopologyInterface `xml:"HostScsiTopologyInterface,omitempty"` +} + +func init() { + t["ArrayOfHostScsiTopologyInterface"] = reflect.TypeOf((*ArrayOfHostScsiTopologyInterface)(nil)).Elem() +} + +type ArrayOfHostScsiTopologyLun struct { + HostScsiTopologyLun []HostScsiTopologyLun `xml:"HostScsiTopologyLun,omitempty"` +} + +func init() { + t["ArrayOfHostScsiTopologyLun"] = reflect.TypeOf((*ArrayOfHostScsiTopologyLun)(nil)).Elem() +} + +type ArrayOfHostScsiTopologyTarget struct { + HostScsiTopologyTarget []HostScsiTopologyTarget `xml:"HostScsiTopologyTarget,omitempty"` +} + +func init() { + t["ArrayOfHostScsiTopologyTarget"] = reflect.TypeOf((*ArrayOfHostScsiTopologyTarget)(nil)).Elem() +} + +type ArrayOfHostService struct { + HostService []HostService `xml:"HostService,omitempty"` +} + +func init() { + t["ArrayOfHostService"] = reflect.TypeOf((*ArrayOfHostService)(nil)).Elem() +} + +type ArrayOfHostServiceConfig struct { + HostServiceConfig []HostServiceConfig `xml:"HostServiceConfig,omitempty"` +} + +func init() { + t["ArrayOfHostServiceConfig"] = reflect.TypeOf((*ArrayOfHostServiceConfig)(nil)).Elem() +} + +type ArrayOfHostSharedGpuCapabilities struct { + HostSharedGpuCapabilities []HostSharedGpuCapabilities `xml:"HostSharedGpuCapabilities,omitempty"` +} + +func init() { + t["ArrayOfHostSharedGpuCapabilities"] = reflect.TypeOf((*ArrayOfHostSharedGpuCapabilities)(nil)).Elem() +} + +type ArrayOfHostSnmpDestination struct { + HostSnmpDestination []HostSnmpDestination `xml:"HostSnmpDestination,omitempty"` +} + +func init() { + t["ArrayOfHostSnmpDestination"] = reflect.TypeOf((*ArrayOfHostSnmpDestination)(nil)).Elem() +} + +type ArrayOfHostSriovDevicePoolInfo struct { + HostSriovDevicePoolInfo []BaseHostSriovDevicePoolInfo `xml:"HostSriovDevicePoolInfo,omitempty,typeattr"` +} + +func init() { + t["ArrayOfHostSriovDevicePoolInfo"] = reflect.TypeOf((*ArrayOfHostSriovDevicePoolInfo)(nil)).Elem() +} + +type ArrayOfHostSslThumbprintInfo struct { + HostSslThumbprintInfo []HostSslThumbprintInfo `xml:"HostSslThumbprintInfo,omitempty"` +} + +func init() { + t["ArrayOfHostSslThumbprintInfo"] = reflect.TypeOf((*ArrayOfHostSslThumbprintInfo)(nil)).Elem() +} + +type ArrayOfHostStorageArrayTypePolicyOption struct { + HostStorageArrayTypePolicyOption []HostStorageArrayTypePolicyOption `xml:"HostStorageArrayTypePolicyOption,omitempty"` +} + +func init() { + t["ArrayOfHostStorageArrayTypePolicyOption"] = reflect.TypeOf((*ArrayOfHostStorageArrayTypePolicyOption)(nil)).Elem() +} + +type ArrayOfHostStorageElementInfo struct { + HostStorageElementInfo []HostStorageElementInfo `xml:"HostStorageElementInfo,omitempty"` +} + +func init() { + t["ArrayOfHostStorageElementInfo"] = reflect.TypeOf((*ArrayOfHostStorageElementInfo)(nil)).Elem() +} + +type ArrayOfHostStorageOperationalInfo struct { + HostStorageOperationalInfo []HostStorageOperationalInfo `xml:"HostStorageOperationalInfo,omitempty"` +} + +func init() { + t["ArrayOfHostStorageOperationalInfo"] = reflect.TypeOf((*ArrayOfHostStorageOperationalInfo)(nil)).Elem() +} + +type ArrayOfHostStorageSystemDiskLocatorLedResult struct { + HostStorageSystemDiskLocatorLedResult []HostStorageSystemDiskLocatorLedResult `xml:"HostStorageSystemDiskLocatorLedResult,omitempty"` +} + +func init() { + t["ArrayOfHostStorageSystemDiskLocatorLedResult"] = reflect.TypeOf((*ArrayOfHostStorageSystemDiskLocatorLedResult)(nil)).Elem() +} + +type ArrayOfHostStorageSystemScsiLunResult struct { + HostStorageSystemScsiLunResult []HostStorageSystemScsiLunResult `xml:"HostStorageSystemScsiLunResult,omitempty"` +} + +func init() { + t["ArrayOfHostStorageSystemScsiLunResult"] = reflect.TypeOf((*ArrayOfHostStorageSystemScsiLunResult)(nil)).Elem() +} + +type ArrayOfHostStorageSystemVmfsVolumeResult struct { + HostStorageSystemVmfsVolumeResult []HostStorageSystemVmfsVolumeResult `xml:"HostStorageSystemVmfsVolumeResult,omitempty"` +} + +func init() { + t["ArrayOfHostStorageSystemVmfsVolumeResult"] = reflect.TypeOf((*ArrayOfHostStorageSystemVmfsVolumeResult)(nil)).Elem() +} + +type ArrayOfHostSubSpecification struct { + HostSubSpecification []HostSubSpecification `xml:"HostSubSpecification,omitempty"` +} + +func init() { + t["ArrayOfHostSubSpecification"] = reflect.TypeOf((*ArrayOfHostSubSpecification)(nil)).Elem() +} + +type ArrayOfHostSystemIdentificationInfo struct { + HostSystemIdentificationInfo []HostSystemIdentificationInfo `xml:"HostSystemIdentificationInfo,omitempty"` +} + +func init() { + t["ArrayOfHostSystemIdentificationInfo"] = reflect.TypeOf((*ArrayOfHostSystemIdentificationInfo)(nil)).Elem() +} + +type ArrayOfHostSystemResourceInfo struct { + HostSystemResourceInfo []HostSystemResourceInfo `xml:"HostSystemResourceInfo,omitempty"` +} + +func init() { + t["ArrayOfHostSystemResourceInfo"] = reflect.TypeOf((*ArrayOfHostSystemResourceInfo)(nil)).Elem() +} + +type ArrayOfHostSystemSwapConfigurationSystemSwapOption struct { + HostSystemSwapConfigurationSystemSwapOption []BaseHostSystemSwapConfigurationSystemSwapOption `xml:"HostSystemSwapConfigurationSystemSwapOption,omitempty,typeattr"` +} + +func init() { + t["ArrayOfHostSystemSwapConfigurationSystemSwapOption"] = reflect.TypeOf((*ArrayOfHostSystemSwapConfigurationSystemSwapOption)(nil)).Elem() +} + +type ArrayOfHostTpmDigestInfo struct { + HostTpmDigestInfo []HostTpmDigestInfo `xml:"HostTpmDigestInfo,omitempty"` +} + +func init() { + t["ArrayOfHostTpmDigestInfo"] = reflect.TypeOf((*ArrayOfHostTpmDigestInfo)(nil)).Elem() +} + +type ArrayOfHostTpmEventLogEntry struct { + HostTpmEventLogEntry []HostTpmEventLogEntry `xml:"HostTpmEventLogEntry,omitempty"` +} + +func init() { + t["ArrayOfHostTpmEventLogEntry"] = reflect.TypeOf((*ArrayOfHostTpmEventLogEntry)(nil)).Elem() +} + +type ArrayOfHostUnresolvedVmfsExtent struct { + HostUnresolvedVmfsExtent []HostUnresolvedVmfsExtent `xml:"HostUnresolvedVmfsExtent,omitempty"` +} + +func init() { + t["ArrayOfHostUnresolvedVmfsExtent"] = reflect.TypeOf((*ArrayOfHostUnresolvedVmfsExtent)(nil)).Elem() +} + +type ArrayOfHostUnresolvedVmfsResolutionResult struct { + HostUnresolvedVmfsResolutionResult []HostUnresolvedVmfsResolutionResult `xml:"HostUnresolvedVmfsResolutionResult,omitempty"` +} + +func init() { + t["ArrayOfHostUnresolvedVmfsResolutionResult"] = reflect.TypeOf((*ArrayOfHostUnresolvedVmfsResolutionResult)(nil)).Elem() +} + +type ArrayOfHostUnresolvedVmfsResolutionSpec struct { + HostUnresolvedVmfsResolutionSpec []HostUnresolvedVmfsResolutionSpec `xml:"HostUnresolvedVmfsResolutionSpec,omitempty"` +} + +func init() { + t["ArrayOfHostUnresolvedVmfsResolutionSpec"] = reflect.TypeOf((*ArrayOfHostUnresolvedVmfsResolutionSpec)(nil)).Elem() +} + +type ArrayOfHostUnresolvedVmfsVolume struct { + HostUnresolvedVmfsVolume []HostUnresolvedVmfsVolume `xml:"HostUnresolvedVmfsVolume,omitempty"` +} + +func init() { + t["ArrayOfHostUnresolvedVmfsVolume"] = reflect.TypeOf((*ArrayOfHostUnresolvedVmfsVolume)(nil)).Elem() +} + +type ArrayOfHostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption struct { + HostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption []HostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption `xml:"HostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption,omitempty"` +} + +func init() { + t["ArrayOfHostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption"] = reflect.TypeOf((*ArrayOfHostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption)(nil)).Elem() +} + +type ArrayOfHostVMotionCompatibility struct { + HostVMotionCompatibility []HostVMotionCompatibility `xml:"HostVMotionCompatibility,omitempty"` +} + +func init() { + t["ArrayOfHostVMotionCompatibility"] = reflect.TypeOf((*ArrayOfHostVMotionCompatibility)(nil)).Elem() +} + +type ArrayOfHostVirtualNic struct { + HostVirtualNic []HostVirtualNic `xml:"HostVirtualNic,omitempty"` +} + +func init() { + t["ArrayOfHostVirtualNic"] = reflect.TypeOf((*ArrayOfHostVirtualNic)(nil)).Elem() +} + +type ArrayOfHostVirtualNicConfig struct { + HostVirtualNicConfig []HostVirtualNicConfig `xml:"HostVirtualNicConfig,omitempty"` +} + +func init() { + t["ArrayOfHostVirtualNicConfig"] = reflect.TypeOf((*ArrayOfHostVirtualNicConfig)(nil)).Elem() +} + +type ArrayOfHostVirtualNicManagerNicTypeSelection struct { + HostVirtualNicManagerNicTypeSelection []HostVirtualNicManagerNicTypeSelection `xml:"HostVirtualNicManagerNicTypeSelection,omitempty"` +} + +func init() { + t["ArrayOfHostVirtualNicManagerNicTypeSelection"] = reflect.TypeOf((*ArrayOfHostVirtualNicManagerNicTypeSelection)(nil)).Elem() +} + +type ArrayOfHostVirtualSwitch struct { + HostVirtualSwitch []HostVirtualSwitch `xml:"HostVirtualSwitch,omitempty"` +} + +func init() { + t["ArrayOfHostVirtualSwitch"] = reflect.TypeOf((*ArrayOfHostVirtualSwitch)(nil)).Elem() +} + +type ArrayOfHostVirtualSwitchConfig struct { + HostVirtualSwitchConfig []HostVirtualSwitchConfig `xml:"HostVirtualSwitchConfig,omitempty"` +} + +func init() { + t["ArrayOfHostVirtualSwitchConfig"] = reflect.TypeOf((*ArrayOfHostVirtualSwitchConfig)(nil)).Elem() +} + +type ArrayOfHostVmciAccessManagerAccessSpec struct { + HostVmciAccessManagerAccessSpec []HostVmciAccessManagerAccessSpec `xml:"HostVmciAccessManagerAccessSpec,omitempty"` +} + +func init() { + t["ArrayOfHostVmciAccessManagerAccessSpec"] = reflect.TypeOf((*ArrayOfHostVmciAccessManagerAccessSpec)(nil)).Elem() +} + +type ArrayOfHostVmfsRescanResult struct { + HostVmfsRescanResult []HostVmfsRescanResult `xml:"HostVmfsRescanResult,omitempty"` +} + +func init() { + t["ArrayOfHostVmfsRescanResult"] = reflect.TypeOf((*ArrayOfHostVmfsRescanResult)(nil)).Elem() +} + +type ArrayOfHostVsanInternalSystemCmmdsQuery struct { + HostVsanInternalSystemCmmdsQuery []HostVsanInternalSystemCmmdsQuery `xml:"HostVsanInternalSystemCmmdsQuery,omitempty"` +} + +func init() { + t["ArrayOfHostVsanInternalSystemCmmdsQuery"] = reflect.TypeOf((*ArrayOfHostVsanInternalSystemCmmdsQuery)(nil)).Elem() +} + +type ArrayOfHostVsanInternalSystemDeleteVsanObjectsResult struct { + HostVsanInternalSystemDeleteVsanObjectsResult []HostVsanInternalSystemDeleteVsanObjectsResult `xml:"HostVsanInternalSystemDeleteVsanObjectsResult,omitempty"` +} + +func init() { + t["ArrayOfHostVsanInternalSystemDeleteVsanObjectsResult"] = reflect.TypeOf((*ArrayOfHostVsanInternalSystemDeleteVsanObjectsResult)(nil)).Elem() +} + +type ArrayOfHostVsanInternalSystemVsanObjectOperationResult struct { + HostVsanInternalSystemVsanObjectOperationResult []HostVsanInternalSystemVsanObjectOperationResult `xml:"HostVsanInternalSystemVsanObjectOperationResult,omitempty"` +} + +func init() { + t["ArrayOfHostVsanInternalSystemVsanObjectOperationResult"] = reflect.TypeOf((*ArrayOfHostVsanInternalSystemVsanObjectOperationResult)(nil)).Elem() +} + +type ArrayOfHostVsanInternalSystemVsanPhysicalDiskDiagnosticsResult struct { + HostVsanInternalSystemVsanPhysicalDiskDiagnosticsResult []HostVsanInternalSystemVsanPhysicalDiskDiagnosticsResult `xml:"HostVsanInternalSystemVsanPhysicalDiskDiagnosticsResult,omitempty"` +} + +func init() { + t["ArrayOfHostVsanInternalSystemVsanPhysicalDiskDiagnosticsResult"] = reflect.TypeOf((*ArrayOfHostVsanInternalSystemVsanPhysicalDiskDiagnosticsResult)(nil)).Elem() +} + +type ArrayOfHttpNfcLeaseDatastoreLeaseInfo struct { + HttpNfcLeaseDatastoreLeaseInfo []HttpNfcLeaseDatastoreLeaseInfo `xml:"HttpNfcLeaseDatastoreLeaseInfo,omitempty"` +} + +func init() { + t["ArrayOfHttpNfcLeaseDatastoreLeaseInfo"] = reflect.TypeOf((*ArrayOfHttpNfcLeaseDatastoreLeaseInfo)(nil)).Elem() +} + +type ArrayOfHttpNfcLeaseDeviceUrl struct { + HttpNfcLeaseDeviceUrl []HttpNfcLeaseDeviceUrl `xml:"HttpNfcLeaseDeviceUrl,omitempty"` +} + +func init() { + t["ArrayOfHttpNfcLeaseDeviceUrl"] = reflect.TypeOf((*ArrayOfHttpNfcLeaseDeviceUrl)(nil)).Elem() +} + +type ArrayOfHttpNfcLeaseHostInfo struct { + HttpNfcLeaseHostInfo []HttpNfcLeaseHostInfo `xml:"HttpNfcLeaseHostInfo,omitempty"` +} + +func init() { + t["ArrayOfHttpNfcLeaseHostInfo"] = reflect.TypeOf((*ArrayOfHttpNfcLeaseHostInfo)(nil)).Elem() +} + +type ArrayOfHttpNfcLeaseManifestEntry struct { + HttpNfcLeaseManifestEntry []HttpNfcLeaseManifestEntry `xml:"HttpNfcLeaseManifestEntry,omitempty"` +} + +func init() { + t["ArrayOfHttpNfcLeaseManifestEntry"] = reflect.TypeOf((*ArrayOfHttpNfcLeaseManifestEntry)(nil)).Elem() +} + +type ArrayOfHttpNfcLeaseSourceFile struct { + HttpNfcLeaseSourceFile []HttpNfcLeaseSourceFile `xml:"HttpNfcLeaseSourceFile,omitempty"` +} + +func init() { + t["ArrayOfHttpNfcLeaseSourceFile"] = reflect.TypeOf((*ArrayOfHttpNfcLeaseSourceFile)(nil)).Elem() +} + +type ArrayOfID struct { + ID []ID `xml:"ID,omitempty"` +} + +func init() { + t["ArrayOfID"] = reflect.TypeOf((*ArrayOfID)(nil)).Elem() +} + +type ArrayOfImportOperationBulkFaultFaultOnImport struct { + ImportOperationBulkFaultFaultOnImport []ImportOperationBulkFaultFaultOnImport `xml:"ImportOperationBulkFaultFaultOnImport,omitempty"` +} + +func init() { + t["ArrayOfImportOperationBulkFaultFaultOnImport"] = reflect.TypeOf((*ArrayOfImportOperationBulkFaultFaultOnImport)(nil)).Elem() +} + +type ArrayOfImportSpec struct { + ImportSpec []BaseImportSpec `xml:"ImportSpec,omitempty,typeattr"` +} + +func init() { + t["ArrayOfImportSpec"] = reflect.TypeOf((*ArrayOfImportSpec)(nil)).Elem() +} + +type ArrayOfInt struct { + Int []int32 `xml:"int,omitempty"` +} + +func init() { + t["ArrayOfInt"] = reflect.TypeOf((*ArrayOfInt)(nil)).Elem() +} + +type ArrayOfIoFilterHostIssue struct { + IoFilterHostIssue []IoFilterHostIssue `xml:"IoFilterHostIssue,omitempty"` +} + +func init() { + t["ArrayOfIoFilterHostIssue"] = reflect.TypeOf((*ArrayOfIoFilterHostIssue)(nil)).Elem() +} + +type ArrayOfIpPool struct { + IpPool []IpPool `xml:"IpPool,omitempty"` +} + +func init() { + t["ArrayOfIpPool"] = reflect.TypeOf((*ArrayOfIpPool)(nil)).Elem() +} + +type ArrayOfIpPoolAssociation struct { + IpPoolAssociation []IpPoolAssociation `xml:"IpPoolAssociation,omitempty"` +} + +func init() { + t["ArrayOfIpPoolAssociation"] = reflect.TypeOf((*ArrayOfIpPoolAssociation)(nil)).Elem() +} + +type ArrayOfIpPoolManagerIpAllocation struct { + IpPoolManagerIpAllocation []IpPoolManagerIpAllocation `xml:"IpPoolManagerIpAllocation,omitempty"` +} + +func init() { + t["ArrayOfIpPoolManagerIpAllocation"] = reflect.TypeOf((*ArrayOfIpPoolManagerIpAllocation)(nil)).Elem() +} + +type ArrayOfIscsiDependencyEntity struct { + IscsiDependencyEntity []IscsiDependencyEntity `xml:"IscsiDependencyEntity,omitempty"` +} + +func init() { + t["ArrayOfIscsiDependencyEntity"] = reflect.TypeOf((*ArrayOfIscsiDependencyEntity)(nil)).Elem() +} + +type ArrayOfIscsiPortInfo struct { + IscsiPortInfo []IscsiPortInfo `xml:"IscsiPortInfo,omitempty"` +} + +func init() { + t["ArrayOfIscsiPortInfo"] = reflect.TypeOf((*ArrayOfIscsiPortInfo)(nil)).Elem() +} + +type ArrayOfKernelModuleInfo struct { + KernelModuleInfo []KernelModuleInfo `xml:"KernelModuleInfo,omitempty"` +} + +func init() { + t["ArrayOfKernelModuleInfo"] = reflect.TypeOf((*ArrayOfKernelModuleInfo)(nil)).Elem() +} + +type ArrayOfKeyAnyValue struct { + KeyAnyValue []KeyAnyValue `xml:"KeyAnyValue,omitempty"` +} + +func init() { + t["ArrayOfKeyAnyValue"] = reflect.TypeOf((*ArrayOfKeyAnyValue)(nil)).Elem() +} + +type ArrayOfKeyValue struct { + KeyValue []KeyValue `xml:"KeyValue,omitempty"` +} + +func init() { + t["ArrayOfKeyValue"] = reflect.TypeOf((*ArrayOfKeyValue)(nil)).Elem() +} + +type ArrayOfKmipClusterInfo struct { + KmipClusterInfo []KmipClusterInfo `xml:"KmipClusterInfo,omitempty"` +} + +func init() { + t["ArrayOfKmipClusterInfo"] = reflect.TypeOf((*ArrayOfKmipClusterInfo)(nil)).Elem() +} + +type ArrayOfKmipServerInfo struct { + KmipServerInfo []KmipServerInfo `xml:"KmipServerInfo,omitempty"` +} + +func init() { + t["ArrayOfKmipServerInfo"] = reflect.TypeOf((*ArrayOfKmipServerInfo)(nil)).Elem() +} + +type ArrayOfLicenseAssignmentManagerLicenseAssignment struct { + LicenseAssignmentManagerLicenseAssignment []LicenseAssignmentManagerLicenseAssignment `xml:"LicenseAssignmentManagerLicenseAssignment,omitempty"` +} + +func init() { + t["ArrayOfLicenseAssignmentManagerLicenseAssignment"] = reflect.TypeOf((*ArrayOfLicenseAssignmentManagerLicenseAssignment)(nil)).Elem() +} + +type ArrayOfLicenseAvailabilityInfo struct { + LicenseAvailabilityInfo []LicenseAvailabilityInfo `xml:"LicenseAvailabilityInfo,omitempty"` +} + +func init() { + t["ArrayOfLicenseAvailabilityInfo"] = reflect.TypeOf((*ArrayOfLicenseAvailabilityInfo)(nil)).Elem() +} + +type ArrayOfLicenseFeatureInfo struct { + LicenseFeatureInfo []LicenseFeatureInfo `xml:"LicenseFeatureInfo,omitempty"` +} + +func init() { + t["ArrayOfLicenseFeatureInfo"] = reflect.TypeOf((*ArrayOfLicenseFeatureInfo)(nil)).Elem() +} + +type ArrayOfLicenseManagerLicenseInfo struct { + LicenseManagerLicenseInfo []LicenseManagerLicenseInfo `xml:"LicenseManagerLicenseInfo,omitempty"` +} + +func init() { + t["ArrayOfLicenseManagerLicenseInfo"] = reflect.TypeOf((*ArrayOfLicenseManagerLicenseInfo)(nil)).Elem() +} + +type ArrayOfLicenseReservationInfo struct { + LicenseReservationInfo []LicenseReservationInfo `xml:"LicenseReservationInfo,omitempty"` +} + +func init() { + t["ArrayOfLicenseReservationInfo"] = reflect.TypeOf((*ArrayOfLicenseReservationInfo)(nil)).Elem() +} + +type ArrayOfLocalizableMessage struct { + LocalizableMessage []LocalizableMessage `xml:"LocalizableMessage,omitempty"` +} + +func init() { + t["ArrayOfLocalizableMessage"] = reflect.TypeOf((*ArrayOfLocalizableMessage)(nil)).Elem() +} + +type ArrayOfLocalizationManagerMessageCatalog struct { + LocalizationManagerMessageCatalog []LocalizationManagerMessageCatalog `xml:"LocalizationManagerMessageCatalog,omitempty"` +} + +func init() { + t["ArrayOfLocalizationManagerMessageCatalog"] = reflect.TypeOf((*ArrayOfLocalizationManagerMessageCatalog)(nil)).Elem() +} + +type ArrayOfLong struct { + Long []int64 `xml:"long,omitempty"` +} + +func init() { + t["ArrayOfLong"] = reflect.TypeOf((*ArrayOfLong)(nil)).Elem() +} + +type ArrayOfManagedEntityStatus struct { + ManagedEntityStatus []ManagedEntityStatus `xml:"ManagedEntityStatus,omitempty"` +} + +func init() { + t["ArrayOfManagedEntityStatus"] = reflect.TypeOf((*ArrayOfManagedEntityStatus)(nil)).Elem() +} + +type ArrayOfManagedObjectReference struct { + ManagedObjectReference []ManagedObjectReference `xml:"ManagedObjectReference,omitempty"` +} + +func init() { + t["ArrayOfManagedObjectReference"] = reflect.TypeOf((*ArrayOfManagedObjectReference)(nil)).Elem() +} + +type ArrayOfMethodActionArgument struct { + MethodActionArgument []MethodActionArgument `xml:"MethodActionArgument,omitempty"` +} + +func init() { + t["ArrayOfMethodActionArgument"] = reflect.TypeOf((*ArrayOfMethodActionArgument)(nil)).Elem() +} + +type ArrayOfMethodFault struct { + MethodFault []BaseMethodFault `xml:"MethodFault,omitempty,typeattr"` +} + +func init() { + t["ArrayOfMethodFault"] = reflect.TypeOf((*ArrayOfMethodFault)(nil)).Elem() +} + +type ArrayOfMissingObject struct { + MissingObject []MissingObject `xml:"MissingObject,omitempty"` +} + +func init() { + t["ArrayOfMissingObject"] = reflect.TypeOf((*ArrayOfMissingObject)(nil)).Elem() +} + +type ArrayOfMissingProperty struct { + MissingProperty []MissingProperty `xml:"MissingProperty,omitempty"` +} + +func init() { + t["ArrayOfMissingProperty"] = reflect.TypeOf((*ArrayOfMissingProperty)(nil)).Elem() +} + +type ArrayOfMultipleCertificatesVerifyFaultThumbprintData struct { + MultipleCertificatesVerifyFaultThumbprintData []MultipleCertificatesVerifyFaultThumbprintData `xml:"MultipleCertificatesVerifyFaultThumbprintData,omitempty"` +} + +func init() { + t["ArrayOfMultipleCertificatesVerifyFaultThumbprintData"] = reflect.TypeOf((*ArrayOfMultipleCertificatesVerifyFaultThumbprintData)(nil)).Elem() +} + +type ArrayOfNasStorageProfile struct { + NasStorageProfile []NasStorageProfile `xml:"NasStorageProfile,omitempty"` +} + +func init() { + t["ArrayOfNasStorageProfile"] = reflect.TypeOf((*ArrayOfNasStorageProfile)(nil)).Elem() +} + +type ArrayOfNetIpConfigInfoIpAddress struct { + NetIpConfigInfoIpAddress []NetIpConfigInfoIpAddress `xml:"NetIpConfigInfoIpAddress,omitempty"` +} + +func init() { + t["ArrayOfNetIpConfigInfoIpAddress"] = reflect.TypeOf((*ArrayOfNetIpConfigInfoIpAddress)(nil)).Elem() +} + +type ArrayOfNetIpConfigSpecIpAddressSpec struct { + NetIpConfigSpecIpAddressSpec []NetIpConfigSpecIpAddressSpec `xml:"NetIpConfigSpecIpAddressSpec,omitempty"` +} + +func init() { + t["ArrayOfNetIpConfigSpecIpAddressSpec"] = reflect.TypeOf((*ArrayOfNetIpConfigSpecIpAddressSpec)(nil)).Elem() +} + +type ArrayOfNetIpRouteConfigInfoIpRoute struct { + NetIpRouteConfigInfoIpRoute []NetIpRouteConfigInfoIpRoute `xml:"NetIpRouteConfigInfoIpRoute,omitempty"` +} + +func init() { + t["ArrayOfNetIpRouteConfigInfoIpRoute"] = reflect.TypeOf((*ArrayOfNetIpRouteConfigInfoIpRoute)(nil)).Elem() +} + +type ArrayOfNetIpRouteConfigSpecIpRouteSpec struct { + NetIpRouteConfigSpecIpRouteSpec []NetIpRouteConfigSpecIpRouteSpec `xml:"NetIpRouteConfigSpecIpRouteSpec,omitempty"` +} + +func init() { + t["ArrayOfNetIpRouteConfigSpecIpRouteSpec"] = reflect.TypeOf((*ArrayOfNetIpRouteConfigSpecIpRouteSpec)(nil)).Elem() +} + +type ArrayOfNetIpStackInfoDefaultRouter struct { + NetIpStackInfoDefaultRouter []NetIpStackInfoDefaultRouter `xml:"NetIpStackInfoDefaultRouter,omitempty"` +} + +func init() { + t["ArrayOfNetIpStackInfoDefaultRouter"] = reflect.TypeOf((*ArrayOfNetIpStackInfoDefaultRouter)(nil)).Elem() +} + +type ArrayOfNetIpStackInfoNetToMedia struct { + NetIpStackInfoNetToMedia []NetIpStackInfoNetToMedia `xml:"NetIpStackInfoNetToMedia,omitempty"` +} + +func init() { + t["ArrayOfNetIpStackInfoNetToMedia"] = reflect.TypeOf((*ArrayOfNetIpStackInfoNetToMedia)(nil)).Elem() +} + +type ArrayOfNetStackInstanceProfile struct { + NetStackInstanceProfile []NetStackInstanceProfile `xml:"NetStackInstanceProfile,omitempty"` +} + +func init() { + t["ArrayOfNetStackInstanceProfile"] = reflect.TypeOf((*ArrayOfNetStackInstanceProfile)(nil)).Elem() +} + +type ArrayOfNsxHostVNicProfile struct { + NsxHostVNicProfile []NsxHostVNicProfile `xml:"NsxHostVNicProfile,omitempty"` +} + +func init() { + t["ArrayOfNsxHostVNicProfile"] = reflect.TypeOf((*ArrayOfNsxHostVNicProfile)(nil)).Elem() +} + +type ArrayOfNumericRange struct { + NumericRange []NumericRange `xml:"NumericRange,omitempty"` +} + +func init() { + t["ArrayOfNumericRange"] = reflect.TypeOf((*ArrayOfNumericRange)(nil)).Elem() +} + +type ArrayOfNvdimmDimmInfo struct { + NvdimmDimmInfo []NvdimmDimmInfo `xml:"NvdimmDimmInfo,omitempty"` +} + +func init() { + t["ArrayOfNvdimmDimmInfo"] = reflect.TypeOf((*ArrayOfNvdimmDimmInfo)(nil)).Elem() +} + +type ArrayOfNvdimmGuid struct { + NvdimmGuid []NvdimmGuid `xml:"NvdimmGuid,omitempty"` +} + +func init() { + t["ArrayOfNvdimmGuid"] = reflect.TypeOf((*ArrayOfNvdimmGuid)(nil)).Elem() +} + +type ArrayOfNvdimmInterleaveSetInfo struct { + NvdimmInterleaveSetInfo []NvdimmInterleaveSetInfo `xml:"NvdimmInterleaveSetInfo,omitempty"` +} + +func init() { + t["ArrayOfNvdimmInterleaveSetInfo"] = reflect.TypeOf((*ArrayOfNvdimmInterleaveSetInfo)(nil)).Elem() +} + +type ArrayOfNvdimmNamespaceDetails struct { + NvdimmNamespaceDetails []NvdimmNamespaceDetails `xml:"NvdimmNamespaceDetails,omitempty"` +} + +func init() { + t["ArrayOfNvdimmNamespaceDetails"] = reflect.TypeOf((*ArrayOfNvdimmNamespaceDetails)(nil)).Elem() +} + +type ArrayOfNvdimmNamespaceInfo struct { + NvdimmNamespaceInfo []NvdimmNamespaceInfo `xml:"NvdimmNamespaceInfo,omitempty"` +} + +func init() { + t["ArrayOfNvdimmNamespaceInfo"] = reflect.TypeOf((*ArrayOfNvdimmNamespaceInfo)(nil)).Elem() +} + +type ArrayOfNvdimmRegionInfo struct { + NvdimmRegionInfo []NvdimmRegionInfo `xml:"NvdimmRegionInfo,omitempty"` +} + +func init() { + t["ArrayOfNvdimmRegionInfo"] = reflect.TypeOf((*ArrayOfNvdimmRegionInfo)(nil)).Elem() +} + +type ArrayOfObjectContent struct { + ObjectContent []ObjectContent `xml:"ObjectContent,omitempty"` +} + +func init() { + t["ArrayOfObjectContent"] = reflect.TypeOf((*ArrayOfObjectContent)(nil)).Elem() +} + +type ArrayOfObjectSpec struct { + ObjectSpec []ObjectSpec `xml:"ObjectSpec,omitempty"` +} + +func init() { + t["ArrayOfObjectSpec"] = reflect.TypeOf((*ArrayOfObjectSpec)(nil)).Elem() +} + +type ArrayOfObjectUpdate struct { + ObjectUpdate []ObjectUpdate `xml:"ObjectUpdate,omitempty"` +} + +func init() { + t["ArrayOfObjectUpdate"] = reflect.TypeOf((*ArrayOfObjectUpdate)(nil)).Elem() +} + +type ArrayOfOpaqueNetworkTargetInfo struct { + OpaqueNetworkTargetInfo []OpaqueNetworkTargetInfo `xml:"OpaqueNetworkTargetInfo,omitempty"` +} + +func init() { + t["ArrayOfOpaqueNetworkTargetInfo"] = reflect.TypeOf((*ArrayOfOpaqueNetworkTargetInfo)(nil)).Elem() +} + +type ArrayOfOptionDef struct { + OptionDef []OptionDef `xml:"OptionDef,omitempty"` +} + +func init() { + t["ArrayOfOptionDef"] = reflect.TypeOf((*ArrayOfOptionDef)(nil)).Elem() +} + +type ArrayOfOptionProfile struct { + OptionProfile []OptionProfile `xml:"OptionProfile,omitempty"` +} + +func init() { + t["ArrayOfOptionProfile"] = reflect.TypeOf((*ArrayOfOptionProfile)(nil)).Elem() +} + +type ArrayOfOptionValue struct { + OptionValue []BaseOptionValue `xml:"OptionValue,omitempty,typeattr"` +} + +func init() { + t["ArrayOfOptionValue"] = reflect.TypeOf((*ArrayOfOptionValue)(nil)).Elem() +} + +type ArrayOfOvfConsumerOstNode struct { + OvfConsumerOstNode []OvfConsumerOstNode `xml:"OvfConsumerOstNode,omitempty"` +} + +func init() { + t["ArrayOfOvfConsumerOstNode"] = reflect.TypeOf((*ArrayOfOvfConsumerOstNode)(nil)).Elem() +} + +type ArrayOfOvfConsumerOvfSection struct { + OvfConsumerOvfSection []OvfConsumerOvfSection `xml:"OvfConsumerOvfSection,omitempty"` +} + +func init() { + t["ArrayOfOvfConsumerOvfSection"] = reflect.TypeOf((*ArrayOfOvfConsumerOvfSection)(nil)).Elem() +} + +type ArrayOfOvfDeploymentOption struct { + OvfDeploymentOption []OvfDeploymentOption `xml:"OvfDeploymentOption,omitempty"` +} + +func init() { + t["ArrayOfOvfDeploymentOption"] = reflect.TypeOf((*ArrayOfOvfDeploymentOption)(nil)).Elem() +} + +type ArrayOfOvfFile struct { + OvfFile []OvfFile `xml:"OvfFile,omitempty"` +} + +func init() { + t["ArrayOfOvfFile"] = reflect.TypeOf((*ArrayOfOvfFile)(nil)).Elem() +} + +type ArrayOfOvfFileItem struct { + OvfFileItem []OvfFileItem `xml:"OvfFileItem,omitempty"` +} + +func init() { + t["ArrayOfOvfFileItem"] = reflect.TypeOf((*ArrayOfOvfFileItem)(nil)).Elem() +} + +type ArrayOfOvfNetworkInfo struct { + OvfNetworkInfo []OvfNetworkInfo `xml:"OvfNetworkInfo,omitempty"` +} + +func init() { + t["ArrayOfOvfNetworkInfo"] = reflect.TypeOf((*ArrayOfOvfNetworkInfo)(nil)).Elem() +} + +type ArrayOfOvfNetworkMapping struct { + OvfNetworkMapping []OvfNetworkMapping `xml:"OvfNetworkMapping,omitempty"` +} + +func init() { + t["ArrayOfOvfNetworkMapping"] = reflect.TypeOf((*ArrayOfOvfNetworkMapping)(nil)).Elem() +} + +type ArrayOfOvfOptionInfo struct { + OvfOptionInfo []OvfOptionInfo `xml:"OvfOptionInfo,omitempty"` +} + +func init() { + t["ArrayOfOvfOptionInfo"] = reflect.TypeOf((*ArrayOfOvfOptionInfo)(nil)).Elem() +} + +type ArrayOfOvfResourceMap struct { + OvfResourceMap []OvfResourceMap `xml:"OvfResourceMap,omitempty"` +} + +func init() { + t["ArrayOfOvfResourceMap"] = reflect.TypeOf((*ArrayOfOvfResourceMap)(nil)).Elem() +} + +type ArrayOfPerfCounterInfo struct { + PerfCounterInfo []PerfCounterInfo `xml:"PerfCounterInfo,omitempty"` +} + +func init() { + t["ArrayOfPerfCounterInfo"] = reflect.TypeOf((*ArrayOfPerfCounterInfo)(nil)).Elem() +} + +type ArrayOfPerfEntityMetricBase struct { + PerfEntityMetricBase []BasePerfEntityMetricBase `xml:"PerfEntityMetricBase,omitempty,typeattr"` +} + +func init() { + t["ArrayOfPerfEntityMetricBase"] = reflect.TypeOf((*ArrayOfPerfEntityMetricBase)(nil)).Elem() +} + +type ArrayOfPerfInterval struct { + PerfInterval []PerfInterval `xml:"PerfInterval,omitempty"` +} + +func init() { + t["ArrayOfPerfInterval"] = reflect.TypeOf((*ArrayOfPerfInterval)(nil)).Elem() +} + +type ArrayOfPerfMetricId struct { + PerfMetricId []PerfMetricId `xml:"PerfMetricId,omitempty"` +} + +func init() { + t["ArrayOfPerfMetricId"] = reflect.TypeOf((*ArrayOfPerfMetricId)(nil)).Elem() +} + +type ArrayOfPerfMetricSeries struct { + PerfMetricSeries []BasePerfMetricSeries `xml:"PerfMetricSeries,omitempty,typeattr"` +} + +func init() { + t["ArrayOfPerfMetricSeries"] = reflect.TypeOf((*ArrayOfPerfMetricSeries)(nil)).Elem() +} + +type ArrayOfPerfMetricSeriesCSV struct { + PerfMetricSeriesCSV []PerfMetricSeriesCSV `xml:"PerfMetricSeriesCSV,omitempty"` +} + +func init() { + t["ArrayOfPerfMetricSeriesCSV"] = reflect.TypeOf((*ArrayOfPerfMetricSeriesCSV)(nil)).Elem() +} + +type ArrayOfPerfQuerySpec struct { + PerfQuerySpec []PerfQuerySpec `xml:"PerfQuerySpec,omitempty"` +} + +func init() { + t["ArrayOfPerfQuerySpec"] = reflect.TypeOf((*ArrayOfPerfQuerySpec)(nil)).Elem() +} + +type ArrayOfPerfSampleInfo struct { + PerfSampleInfo []PerfSampleInfo `xml:"PerfSampleInfo,omitempty"` +} + +func init() { + t["ArrayOfPerfSampleInfo"] = reflect.TypeOf((*ArrayOfPerfSampleInfo)(nil)).Elem() +} + +type ArrayOfPerformanceManagerCounterLevelMapping struct { + PerformanceManagerCounterLevelMapping []PerformanceManagerCounterLevelMapping `xml:"PerformanceManagerCounterLevelMapping,omitempty"` +} + +func init() { + t["ArrayOfPerformanceManagerCounterLevelMapping"] = reflect.TypeOf((*ArrayOfPerformanceManagerCounterLevelMapping)(nil)).Elem() +} + +type ArrayOfPermission struct { + Permission []Permission `xml:"Permission,omitempty"` +} + +func init() { + t["ArrayOfPermission"] = reflect.TypeOf((*ArrayOfPermission)(nil)).Elem() +} + +type ArrayOfPermissionProfile struct { + PermissionProfile []PermissionProfile `xml:"PermissionProfile,omitempty"` +} + +func init() { + t["ArrayOfPermissionProfile"] = reflect.TypeOf((*ArrayOfPermissionProfile)(nil)).Elem() +} + +type ArrayOfPhysicalNic struct { + PhysicalNic []PhysicalNic `xml:"PhysicalNic,omitempty"` +} + +func init() { + t["ArrayOfPhysicalNic"] = reflect.TypeOf((*ArrayOfPhysicalNic)(nil)).Elem() +} + +type ArrayOfPhysicalNicConfig struct { + PhysicalNicConfig []PhysicalNicConfig `xml:"PhysicalNicConfig,omitempty"` +} + +func init() { + t["ArrayOfPhysicalNicConfig"] = reflect.TypeOf((*ArrayOfPhysicalNicConfig)(nil)).Elem() +} + +type ArrayOfPhysicalNicHintInfo struct { + PhysicalNicHintInfo []PhysicalNicHintInfo `xml:"PhysicalNicHintInfo,omitempty"` +} + +func init() { + t["ArrayOfPhysicalNicHintInfo"] = reflect.TypeOf((*ArrayOfPhysicalNicHintInfo)(nil)).Elem() +} + +type ArrayOfPhysicalNicIpHint struct { + PhysicalNicIpHint []PhysicalNicIpHint `xml:"PhysicalNicIpHint,omitempty"` +} + +func init() { + t["ArrayOfPhysicalNicIpHint"] = reflect.TypeOf((*ArrayOfPhysicalNicIpHint)(nil)).Elem() +} + +type ArrayOfPhysicalNicLinkInfo struct { + PhysicalNicLinkInfo []PhysicalNicLinkInfo `xml:"PhysicalNicLinkInfo,omitempty"` +} + +func init() { + t["ArrayOfPhysicalNicLinkInfo"] = reflect.TypeOf((*ArrayOfPhysicalNicLinkInfo)(nil)).Elem() +} + +type ArrayOfPhysicalNicNameHint struct { + PhysicalNicNameHint []PhysicalNicNameHint `xml:"PhysicalNicNameHint,omitempty"` +} + +func init() { + t["ArrayOfPhysicalNicNameHint"] = reflect.TypeOf((*ArrayOfPhysicalNicNameHint)(nil)).Elem() +} + +type ArrayOfPhysicalNicProfile struct { + PhysicalNicProfile []PhysicalNicProfile `xml:"PhysicalNicProfile,omitempty"` +} + +func init() { + t["ArrayOfPhysicalNicProfile"] = reflect.TypeOf((*ArrayOfPhysicalNicProfile)(nil)).Elem() +} + +type ArrayOfPlacementAffinityRule struct { + PlacementAffinityRule []PlacementAffinityRule `xml:"PlacementAffinityRule,omitempty"` +} + +func init() { + t["ArrayOfPlacementAffinityRule"] = reflect.TypeOf((*ArrayOfPlacementAffinityRule)(nil)).Elem() +} + +type ArrayOfPlacementSpec struct { + PlacementSpec []PlacementSpec `xml:"PlacementSpec,omitempty"` +} + +func init() { + t["ArrayOfPlacementSpec"] = reflect.TypeOf((*ArrayOfPlacementSpec)(nil)).Elem() +} + +type ArrayOfPnicUplinkProfile struct { + PnicUplinkProfile []PnicUplinkProfile `xml:"PnicUplinkProfile,omitempty"` +} + +func init() { + t["ArrayOfPnicUplinkProfile"] = reflect.TypeOf((*ArrayOfPnicUplinkProfile)(nil)).Elem() +} + +type ArrayOfPodDiskLocator struct { + PodDiskLocator []PodDiskLocator `xml:"PodDiskLocator,omitempty"` +} + +func init() { + t["ArrayOfPodDiskLocator"] = reflect.TypeOf((*ArrayOfPodDiskLocator)(nil)).Elem() +} + +type ArrayOfPolicyOption struct { + PolicyOption []BasePolicyOption `xml:"PolicyOption,omitempty,typeattr"` +} + +func init() { + t["ArrayOfPolicyOption"] = reflect.TypeOf((*ArrayOfPolicyOption)(nil)).Elem() +} + +type ArrayOfPrivilegeAvailability struct { + PrivilegeAvailability []PrivilegeAvailability `xml:"PrivilegeAvailability,omitempty"` +} + +func init() { + t["ArrayOfPrivilegeAvailability"] = reflect.TypeOf((*ArrayOfPrivilegeAvailability)(nil)).Elem() +} + +type ArrayOfProductComponentInfo struct { + ProductComponentInfo []ProductComponentInfo `xml:"ProductComponentInfo,omitempty"` +} + +func init() { + t["ArrayOfProductComponentInfo"] = reflect.TypeOf((*ArrayOfProductComponentInfo)(nil)).Elem() +} + +type ArrayOfProfileApplyProfileProperty struct { + ProfileApplyProfileProperty []ProfileApplyProfileProperty `xml:"ProfileApplyProfileProperty,omitempty"` +} + +func init() { + t["ArrayOfProfileApplyProfileProperty"] = reflect.TypeOf((*ArrayOfProfileApplyProfileProperty)(nil)).Elem() +} + +type ArrayOfProfileDeferredPolicyOptionParameter struct { + ProfileDeferredPolicyOptionParameter []ProfileDeferredPolicyOptionParameter `xml:"ProfileDeferredPolicyOptionParameter,omitempty"` +} + +func init() { + t["ArrayOfProfileDeferredPolicyOptionParameter"] = reflect.TypeOf((*ArrayOfProfileDeferredPolicyOptionParameter)(nil)).Elem() +} + +type ArrayOfProfileDescriptionSection struct { + ProfileDescriptionSection []ProfileDescriptionSection `xml:"ProfileDescriptionSection,omitempty"` +} + +func init() { + t["ArrayOfProfileDescriptionSection"] = reflect.TypeOf((*ArrayOfProfileDescriptionSection)(nil)).Elem() +} + +type ArrayOfProfileExecuteError struct { + ProfileExecuteError []ProfileExecuteError `xml:"ProfileExecuteError,omitempty"` +} + +func init() { + t["ArrayOfProfileExecuteError"] = reflect.TypeOf((*ArrayOfProfileExecuteError)(nil)).Elem() +} + +type ArrayOfProfileExpression struct { + ProfileExpression []BaseProfileExpression `xml:"ProfileExpression,omitempty,typeattr"` +} + +func init() { + t["ArrayOfProfileExpression"] = reflect.TypeOf((*ArrayOfProfileExpression)(nil)).Elem() +} + +type ArrayOfProfileExpressionMetadata struct { + ProfileExpressionMetadata []ProfileExpressionMetadata `xml:"ProfileExpressionMetadata,omitempty"` +} + +func init() { + t["ArrayOfProfileExpressionMetadata"] = reflect.TypeOf((*ArrayOfProfileExpressionMetadata)(nil)).Elem() +} + +type ArrayOfProfileMetadata struct { + ProfileMetadata []ProfileMetadata `xml:"ProfileMetadata,omitempty"` +} + +func init() { + t["ArrayOfProfileMetadata"] = reflect.TypeOf((*ArrayOfProfileMetadata)(nil)).Elem() +} + +type ArrayOfProfileMetadataProfileOperationMessage struct { + ProfileMetadataProfileOperationMessage []ProfileMetadataProfileOperationMessage `xml:"ProfileMetadataProfileOperationMessage,omitempty"` +} + +func init() { + t["ArrayOfProfileMetadataProfileOperationMessage"] = reflect.TypeOf((*ArrayOfProfileMetadataProfileOperationMessage)(nil)).Elem() +} + +type ArrayOfProfileMetadataProfileSortSpec struct { + ProfileMetadataProfileSortSpec []ProfileMetadataProfileSortSpec `xml:"ProfileMetadataProfileSortSpec,omitempty"` +} + +func init() { + t["ArrayOfProfileMetadataProfileSortSpec"] = reflect.TypeOf((*ArrayOfProfileMetadataProfileSortSpec)(nil)).Elem() +} + +type ArrayOfProfileParameterMetadata struct { + ProfileParameterMetadata []ProfileParameterMetadata `xml:"ProfileParameterMetadata,omitempty"` +} + +func init() { + t["ArrayOfProfileParameterMetadata"] = reflect.TypeOf((*ArrayOfProfileParameterMetadata)(nil)).Elem() +} + +type ArrayOfProfileParameterMetadataParameterRelationMetadata struct { + ProfileParameterMetadataParameterRelationMetadata []ProfileParameterMetadataParameterRelationMetadata `xml:"ProfileParameterMetadataParameterRelationMetadata,omitempty"` +} + +func init() { + t["ArrayOfProfileParameterMetadataParameterRelationMetadata"] = reflect.TypeOf((*ArrayOfProfileParameterMetadataParameterRelationMetadata)(nil)).Elem() +} + +type ArrayOfProfilePolicy struct { + ProfilePolicy []ProfilePolicy `xml:"ProfilePolicy,omitempty"` +} + +func init() { + t["ArrayOfProfilePolicy"] = reflect.TypeOf((*ArrayOfProfilePolicy)(nil)).Elem() +} + +type ArrayOfProfilePolicyMetadata struct { + ProfilePolicyMetadata []ProfilePolicyMetadata `xml:"ProfilePolicyMetadata,omitempty"` +} + +func init() { + t["ArrayOfProfilePolicyMetadata"] = reflect.TypeOf((*ArrayOfProfilePolicyMetadata)(nil)).Elem() +} + +type ArrayOfProfilePolicyOptionMetadata struct { + ProfilePolicyOptionMetadata []BaseProfilePolicyOptionMetadata `xml:"ProfilePolicyOptionMetadata,omitempty,typeattr"` +} + +func init() { + t["ArrayOfProfilePolicyOptionMetadata"] = reflect.TypeOf((*ArrayOfProfilePolicyOptionMetadata)(nil)).Elem() +} + +type ArrayOfProfileProfileStructureProperty struct { + ProfileProfileStructureProperty []ProfileProfileStructureProperty `xml:"ProfileProfileStructureProperty,omitempty"` +} + +func init() { + t["ArrayOfProfileProfileStructureProperty"] = reflect.TypeOf((*ArrayOfProfileProfileStructureProperty)(nil)).Elem() +} + +type ArrayOfProfilePropertyPath struct { + ProfilePropertyPath []ProfilePropertyPath `xml:"ProfilePropertyPath,omitempty"` +} + +func init() { + t["ArrayOfProfilePropertyPath"] = reflect.TypeOf((*ArrayOfProfilePropertyPath)(nil)).Elem() +} + +type ArrayOfProfileUpdateFailedUpdateFailure struct { + ProfileUpdateFailedUpdateFailure []ProfileUpdateFailedUpdateFailure `xml:"ProfileUpdateFailedUpdateFailure,omitempty"` +} + +func init() { + t["ArrayOfProfileUpdateFailedUpdateFailure"] = reflect.TypeOf((*ArrayOfProfileUpdateFailedUpdateFailure)(nil)).Elem() +} + +type ArrayOfPropertyChange struct { + PropertyChange []PropertyChange `xml:"PropertyChange,omitempty"` +} + +func init() { + t["ArrayOfPropertyChange"] = reflect.TypeOf((*ArrayOfPropertyChange)(nil)).Elem() +} + +type ArrayOfPropertyFilterSpec struct { + PropertyFilterSpec []PropertyFilterSpec `xml:"PropertyFilterSpec,omitempty"` +} + +func init() { + t["ArrayOfPropertyFilterSpec"] = reflect.TypeOf((*ArrayOfPropertyFilterSpec)(nil)).Elem() +} + +type ArrayOfPropertyFilterUpdate struct { + PropertyFilterUpdate []PropertyFilterUpdate `xml:"PropertyFilterUpdate,omitempty"` +} + +func init() { + t["ArrayOfPropertyFilterUpdate"] = reflect.TypeOf((*ArrayOfPropertyFilterUpdate)(nil)).Elem() +} + +type ArrayOfPropertySpec struct { + PropertySpec []PropertySpec `xml:"PropertySpec,omitempty"` +} + +func init() { + t["ArrayOfPropertySpec"] = reflect.TypeOf((*ArrayOfPropertySpec)(nil)).Elem() +} + +type ArrayOfRelation struct { + Relation []Relation `xml:"Relation,omitempty"` +} + +func init() { + t["ArrayOfRelation"] = reflect.TypeOf((*ArrayOfRelation)(nil)).Elem() +} + +type ArrayOfReplicationInfoDiskSettings struct { + ReplicationInfoDiskSettings []ReplicationInfoDiskSettings `xml:"ReplicationInfoDiskSettings,omitempty"` +} + +func init() { + t["ArrayOfReplicationInfoDiskSettings"] = reflect.TypeOf((*ArrayOfReplicationInfoDiskSettings)(nil)).Elem() +} + +type ArrayOfResourceConfigSpec struct { + ResourceConfigSpec []ResourceConfigSpec `xml:"ResourceConfigSpec,omitempty"` +} + +func init() { + t["ArrayOfResourceConfigSpec"] = reflect.TypeOf((*ArrayOfResourceConfigSpec)(nil)).Elem() +} + +type ArrayOfRetrieveVStorageObjSpec struct { + RetrieveVStorageObjSpec []RetrieveVStorageObjSpec `xml:"RetrieveVStorageObjSpec,omitempty"` +} + +func init() { + t["ArrayOfRetrieveVStorageObjSpec"] = reflect.TypeOf((*ArrayOfRetrieveVStorageObjSpec)(nil)).Elem() +} + +type ArrayOfScheduledTaskDetail struct { + ScheduledTaskDetail []ScheduledTaskDetail `xml:"ScheduledTaskDetail,omitempty"` +} + +func init() { + t["ArrayOfScheduledTaskDetail"] = reflect.TypeOf((*ArrayOfScheduledTaskDetail)(nil)).Elem() +} + +type ArrayOfScsiLun struct { + ScsiLun []BaseScsiLun `xml:"ScsiLun,omitempty,typeattr"` +} + +func init() { + t["ArrayOfScsiLun"] = reflect.TypeOf((*ArrayOfScsiLun)(nil)).Elem() +} + +type ArrayOfScsiLunDescriptor struct { + ScsiLunDescriptor []ScsiLunDescriptor `xml:"ScsiLunDescriptor,omitempty"` +} + +func init() { + t["ArrayOfScsiLunDescriptor"] = reflect.TypeOf((*ArrayOfScsiLunDescriptor)(nil)).Elem() +} + +type ArrayOfScsiLunDurableName struct { + ScsiLunDurableName []ScsiLunDurableName `xml:"ScsiLunDurableName,omitempty"` +} + +func init() { + t["ArrayOfScsiLunDurableName"] = reflect.TypeOf((*ArrayOfScsiLunDurableName)(nil)).Elem() +} + +type ArrayOfSelectionSet struct { + SelectionSet []BaseSelectionSet `xml:"SelectionSet,omitempty,typeattr"` +} + +func init() { + t["ArrayOfSelectionSet"] = reflect.TypeOf((*ArrayOfSelectionSet)(nil)).Elem() +} + +type ArrayOfSelectionSpec struct { + SelectionSpec []BaseSelectionSpec `xml:"SelectionSpec,omitempty,typeattr"` +} + +func init() { + t["ArrayOfSelectionSpec"] = reflect.TypeOf((*ArrayOfSelectionSpec)(nil)).Elem() +} + +type ArrayOfServiceConsolePortGroupProfile struct { + ServiceConsolePortGroupProfile []ServiceConsolePortGroupProfile `xml:"ServiceConsolePortGroupProfile,omitempty"` +} + +func init() { + t["ArrayOfServiceConsolePortGroupProfile"] = reflect.TypeOf((*ArrayOfServiceConsolePortGroupProfile)(nil)).Elem() +} + +type ArrayOfServiceLocator struct { + ServiceLocator []ServiceLocator `xml:"ServiceLocator,omitempty"` +} + +func init() { + t["ArrayOfServiceLocator"] = reflect.TypeOf((*ArrayOfServiceLocator)(nil)).Elem() +} + +type ArrayOfServiceManagerServiceInfo struct { + ServiceManagerServiceInfo []ServiceManagerServiceInfo `xml:"ServiceManagerServiceInfo,omitempty"` +} + +func init() { + t["ArrayOfServiceManagerServiceInfo"] = reflect.TypeOf((*ArrayOfServiceManagerServiceInfo)(nil)).Elem() +} + +type ArrayOfServiceProfile struct { + ServiceProfile []ServiceProfile `xml:"ServiceProfile,omitempty"` +} + +func init() { + t["ArrayOfServiceProfile"] = reflect.TypeOf((*ArrayOfServiceProfile)(nil)).Elem() +} + +type ArrayOfShort struct { + Short []int16 `xml:"short,omitempty"` +} + +func init() { + t["ArrayOfShort"] = reflect.TypeOf((*ArrayOfShort)(nil)).Elem() +} + +type ArrayOfSoftwarePackage struct { + SoftwarePackage []SoftwarePackage `xml:"SoftwarePackage,omitempty"` +} + +func init() { + t["ArrayOfSoftwarePackage"] = reflect.TypeOf((*ArrayOfSoftwarePackage)(nil)).Elem() +} + +type ArrayOfStaticRouteProfile struct { + StaticRouteProfile []StaticRouteProfile `xml:"StaticRouteProfile,omitempty"` +} + +func init() { + t["ArrayOfStaticRouteProfile"] = reflect.TypeOf((*ArrayOfStaticRouteProfile)(nil)).Elem() +} + +type ArrayOfStorageDrsOptionSpec struct { + StorageDrsOptionSpec []StorageDrsOptionSpec `xml:"StorageDrsOptionSpec,omitempty"` +} + +func init() { + t["ArrayOfStorageDrsOptionSpec"] = reflect.TypeOf((*ArrayOfStorageDrsOptionSpec)(nil)).Elem() +} + +type ArrayOfStorageDrsPlacementRankVmSpec struct { + StorageDrsPlacementRankVmSpec []StorageDrsPlacementRankVmSpec `xml:"StorageDrsPlacementRankVmSpec,omitempty"` +} + +func init() { + t["ArrayOfStorageDrsPlacementRankVmSpec"] = reflect.TypeOf((*ArrayOfStorageDrsPlacementRankVmSpec)(nil)).Elem() +} + +type ArrayOfStorageDrsVmConfigInfo struct { + StorageDrsVmConfigInfo []StorageDrsVmConfigInfo `xml:"StorageDrsVmConfigInfo,omitempty"` +} + +func init() { + t["ArrayOfStorageDrsVmConfigInfo"] = reflect.TypeOf((*ArrayOfStorageDrsVmConfigInfo)(nil)).Elem() +} + +type ArrayOfStorageDrsVmConfigSpec struct { + StorageDrsVmConfigSpec []StorageDrsVmConfigSpec `xml:"StorageDrsVmConfigSpec,omitempty"` +} + +func init() { + t["ArrayOfStorageDrsVmConfigSpec"] = reflect.TypeOf((*ArrayOfStorageDrsVmConfigSpec)(nil)).Elem() +} + +type ArrayOfStoragePerformanceSummary struct { + StoragePerformanceSummary []StoragePerformanceSummary `xml:"StoragePerformanceSummary,omitempty"` +} + +func init() { + t["ArrayOfStoragePerformanceSummary"] = reflect.TypeOf((*ArrayOfStoragePerformanceSummary)(nil)).Elem() +} + +type ArrayOfStorageRequirement struct { + StorageRequirement []StorageRequirement `xml:"StorageRequirement,omitempty"` +} + +func init() { + t["ArrayOfStorageRequirement"] = reflect.TypeOf((*ArrayOfStorageRequirement)(nil)).Elem() +} + +type ArrayOfString struct { + String []string `xml:"string,omitempty"` +} + +func init() { + t["ArrayOfString"] = reflect.TypeOf((*ArrayOfString)(nil)).Elem() +} + +type ArrayOfStructuredCustomizations struct { + StructuredCustomizations []StructuredCustomizations `xml:"StructuredCustomizations,omitempty"` +} + +func init() { + t["ArrayOfStructuredCustomizations"] = reflect.TypeOf((*ArrayOfStructuredCustomizations)(nil)).Elem() +} + +type ArrayOfSystemEventInfo struct { + SystemEventInfo []SystemEventInfo `xml:"SystemEventInfo,omitempty"` +} + +func init() { + t["ArrayOfSystemEventInfo"] = reflect.TypeOf((*ArrayOfSystemEventInfo)(nil)).Elem() +} + +type ArrayOfTag struct { + Tag []Tag `xml:"Tag,omitempty"` +} + +func init() { + t["ArrayOfTag"] = reflect.TypeOf((*ArrayOfTag)(nil)).Elem() +} + +type ArrayOfTaskInfo struct { + TaskInfo []TaskInfo `xml:"TaskInfo,omitempty"` +} + +func init() { + t["ArrayOfTaskInfo"] = reflect.TypeOf((*ArrayOfTaskInfo)(nil)).Elem() +} + +type ArrayOfTaskInfoState struct { + TaskInfoState []TaskInfoState `xml:"TaskInfoState,omitempty"` +} + +func init() { + t["ArrayOfTaskInfoState"] = reflect.TypeOf((*ArrayOfTaskInfoState)(nil)).Elem() +} + +type ArrayOfTypeDescription struct { + TypeDescription []BaseTypeDescription `xml:"TypeDescription,omitempty,typeattr"` +} + +func init() { + t["ArrayOfTypeDescription"] = reflect.TypeOf((*ArrayOfTypeDescription)(nil)).Elem() +} + +type ArrayOfUpdateVirtualMachineFilesResultFailedVmFileInfo struct { + UpdateVirtualMachineFilesResultFailedVmFileInfo []UpdateVirtualMachineFilesResultFailedVmFileInfo `xml:"UpdateVirtualMachineFilesResultFailedVmFileInfo,omitempty"` +} + +func init() { + t["ArrayOfUpdateVirtualMachineFilesResultFailedVmFileInfo"] = reflect.TypeOf((*ArrayOfUpdateVirtualMachineFilesResultFailedVmFileInfo)(nil)).Elem() +} + +type ArrayOfUri struct { + Uri []string `xml:"uri,omitempty"` +} + +func init() { + t["ArrayOfUri"] = reflect.TypeOf((*ArrayOfUri)(nil)).Elem() +} + +type ArrayOfUsbScanCodeSpecKeyEvent struct { + UsbScanCodeSpecKeyEvent []UsbScanCodeSpecKeyEvent `xml:"UsbScanCodeSpecKeyEvent,omitempty"` +} + +func init() { + t["ArrayOfUsbScanCodeSpecKeyEvent"] = reflect.TypeOf((*ArrayOfUsbScanCodeSpecKeyEvent)(nil)).Elem() +} + +type ArrayOfUserGroupProfile struct { + UserGroupProfile []UserGroupProfile `xml:"UserGroupProfile,omitempty"` +} + +func init() { + t["ArrayOfUserGroupProfile"] = reflect.TypeOf((*ArrayOfUserGroupProfile)(nil)).Elem() +} + +type ArrayOfUserPrivilegeResult struct { + UserPrivilegeResult []UserPrivilegeResult `xml:"UserPrivilegeResult,omitempty"` +} + +func init() { + t["ArrayOfUserPrivilegeResult"] = reflect.TypeOf((*ArrayOfUserPrivilegeResult)(nil)).Elem() +} + +type ArrayOfUserProfile struct { + UserProfile []UserProfile `xml:"UserProfile,omitempty"` +} + +func init() { + t["ArrayOfUserProfile"] = reflect.TypeOf((*ArrayOfUserProfile)(nil)).Elem() +} + +type ArrayOfUserSearchResult struct { + UserSearchResult []BaseUserSearchResult `xml:"UserSearchResult,omitempty,typeattr"` +} + +func init() { + t["ArrayOfUserSearchResult"] = reflect.TypeOf((*ArrayOfUserSearchResult)(nil)).Elem() +} + +type ArrayOfUserSession struct { + UserSession []UserSession `xml:"UserSession,omitempty"` +} + +func init() { + t["ArrayOfUserSession"] = reflect.TypeOf((*ArrayOfUserSession)(nil)).Elem() +} + +type ArrayOfVASAStorageArray struct { + VASAStorageArray []VASAStorageArray `xml:"VASAStorageArray,omitempty"` +} + +func init() { + t["ArrayOfVASAStorageArray"] = reflect.TypeOf((*ArrayOfVASAStorageArray)(nil)).Elem() +} + +type ArrayOfVAppCloneSpecNetworkMappingPair struct { + VAppCloneSpecNetworkMappingPair []VAppCloneSpecNetworkMappingPair `xml:"VAppCloneSpecNetworkMappingPair,omitempty"` +} + +func init() { + t["ArrayOfVAppCloneSpecNetworkMappingPair"] = reflect.TypeOf((*ArrayOfVAppCloneSpecNetworkMappingPair)(nil)).Elem() +} + +type ArrayOfVAppCloneSpecResourceMap struct { + VAppCloneSpecResourceMap []VAppCloneSpecResourceMap `xml:"VAppCloneSpecResourceMap,omitempty"` +} + +func init() { + t["ArrayOfVAppCloneSpecResourceMap"] = reflect.TypeOf((*ArrayOfVAppCloneSpecResourceMap)(nil)).Elem() +} + +type ArrayOfVAppEntityConfigInfo struct { + VAppEntityConfigInfo []VAppEntityConfigInfo `xml:"VAppEntityConfigInfo,omitempty"` +} + +func init() { + t["ArrayOfVAppEntityConfigInfo"] = reflect.TypeOf((*ArrayOfVAppEntityConfigInfo)(nil)).Elem() +} + +type ArrayOfVAppOvfSectionInfo struct { + VAppOvfSectionInfo []VAppOvfSectionInfo `xml:"VAppOvfSectionInfo,omitempty"` +} + +func init() { + t["ArrayOfVAppOvfSectionInfo"] = reflect.TypeOf((*ArrayOfVAppOvfSectionInfo)(nil)).Elem() +} + +type ArrayOfVAppOvfSectionSpec struct { + VAppOvfSectionSpec []VAppOvfSectionSpec `xml:"VAppOvfSectionSpec,omitempty"` +} + +func init() { + t["ArrayOfVAppOvfSectionSpec"] = reflect.TypeOf((*ArrayOfVAppOvfSectionSpec)(nil)).Elem() +} + +type ArrayOfVAppProductInfo struct { + VAppProductInfo []VAppProductInfo `xml:"VAppProductInfo,omitempty"` +} + +func init() { + t["ArrayOfVAppProductInfo"] = reflect.TypeOf((*ArrayOfVAppProductInfo)(nil)).Elem() +} + +type ArrayOfVAppProductSpec struct { + VAppProductSpec []VAppProductSpec `xml:"VAppProductSpec,omitempty"` +} + +func init() { + t["ArrayOfVAppProductSpec"] = reflect.TypeOf((*ArrayOfVAppProductSpec)(nil)).Elem() +} + +type ArrayOfVAppPropertyInfo struct { + VAppPropertyInfo []VAppPropertyInfo `xml:"VAppPropertyInfo,omitempty"` +} + +func init() { + t["ArrayOfVAppPropertyInfo"] = reflect.TypeOf((*ArrayOfVAppPropertyInfo)(nil)).Elem() +} + +type ArrayOfVAppPropertySpec struct { + VAppPropertySpec []VAppPropertySpec `xml:"VAppPropertySpec,omitempty"` +} + +func init() { + t["ArrayOfVAppPropertySpec"] = reflect.TypeOf((*ArrayOfVAppPropertySpec)(nil)).Elem() +} + +type ArrayOfVMwareDVSPvlanConfigSpec struct { + VMwareDVSPvlanConfigSpec []VMwareDVSPvlanConfigSpec `xml:"VMwareDVSPvlanConfigSpec,omitempty"` +} + +func init() { + t["ArrayOfVMwareDVSPvlanConfigSpec"] = reflect.TypeOf((*ArrayOfVMwareDVSPvlanConfigSpec)(nil)).Elem() +} + +type ArrayOfVMwareDVSPvlanMapEntry struct { + VMwareDVSPvlanMapEntry []VMwareDVSPvlanMapEntry `xml:"VMwareDVSPvlanMapEntry,omitempty"` +} + +func init() { + t["ArrayOfVMwareDVSPvlanMapEntry"] = reflect.TypeOf((*ArrayOfVMwareDVSPvlanMapEntry)(nil)).Elem() +} + +type ArrayOfVMwareDVSVspanConfigSpec struct { + VMwareDVSVspanConfigSpec []VMwareDVSVspanConfigSpec `xml:"VMwareDVSVspanConfigSpec,omitempty"` +} + +func init() { + t["ArrayOfVMwareDVSVspanConfigSpec"] = reflect.TypeOf((*ArrayOfVMwareDVSVspanConfigSpec)(nil)).Elem() +} + +type ArrayOfVMwareDvsLacpGroupConfig struct { + VMwareDvsLacpGroupConfig []VMwareDvsLacpGroupConfig `xml:"VMwareDvsLacpGroupConfig,omitempty"` +} + +func init() { + t["ArrayOfVMwareDvsLacpGroupConfig"] = reflect.TypeOf((*ArrayOfVMwareDvsLacpGroupConfig)(nil)).Elem() +} + +type ArrayOfVMwareDvsLacpGroupSpec struct { + VMwareDvsLacpGroupSpec []VMwareDvsLacpGroupSpec `xml:"VMwareDvsLacpGroupSpec,omitempty"` +} + +func init() { + t["ArrayOfVMwareDvsLacpGroupSpec"] = reflect.TypeOf((*ArrayOfVMwareDvsLacpGroupSpec)(nil)).Elem() +} + +type ArrayOfVMwareVspanSession struct { + VMwareVspanSession []VMwareVspanSession `xml:"VMwareVspanSession,omitempty"` +} + +func init() { + t["ArrayOfVMwareVspanSession"] = reflect.TypeOf((*ArrayOfVMwareVspanSession)(nil)).Elem() +} + +type ArrayOfVStorageObjectAssociations struct { + VStorageObjectAssociations []VStorageObjectAssociations `xml:"VStorageObjectAssociations,omitempty"` +} + +func init() { + t["ArrayOfVStorageObjectAssociations"] = reflect.TypeOf((*ArrayOfVStorageObjectAssociations)(nil)).Elem() +} + +type ArrayOfVStorageObjectAssociationsVmDiskAssociations struct { + VStorageObjectAssociationsVmDiskAssociations []VStorageObjectAssociationsVmDiskAssociations `xml:"VStorageObjectAssociationsVmDiskAssociations,omitempty"` +} + +func init() { + t["ArrayOfVStorageObjectAssociationsVmDiskAssociations"] = reflect.TypeOf((*ArrayOfVStorageObjectAssociationsVmDiskAssociations)(nil)).Elem() +} + +type ArrayOfVStorageObjectSnapshotInfoVStorageObjectSnapshot struct { + VStorageObjectSnapshotInfoVStorageObjectSnapshot []VStorageObjectSnapshotInfoVStorageObjectSnapshot `xml:"VStorageObjectSnapshotInfoVStorageObjectSnapshot,omitempty"` +} + +func init() { + t["ArrayOfVStorageObjectSnapshotInfoVStorageObjectSnapshot"] = reflect.TypeOf((*ArrayOfVStorageObjectSnapshotInfoVStorageObjectSnapshot)(nil)).Elem() +} + +type ArrayOfVVolHostPE struct { + VVolHostPE []VVolHostPE `xml:"VVolHostPE,omitempty"` +} + +func init() { + t["ArrayOfVVolHostPE"] = reflect.TypeOf((*ArrayOfVVolHostPE)(nil)).Elem() +} + +type ArrayOfVVolVmConfigFileUpdateResultFailedVmConfigFileInfo struct { + VVolVmConfigFileUpdateResultFailedVmConfigFileInfo []VVolVmConfigFileUpdateResultFailedVmConfigFileInfo `xml:"VVolVmConfigFileUpdateResultFailedVmConfigFileInfo,omitempty"` +} + +func init() { + t["ArrayOfVVolVmConfigFileUpdateResultFailedVmConfigFileInfo"] = reflect.TypeOf((*ArrayOfVVolVmConfigFileUpdateResultFailedVmConfigFileInfo)(nil)).Elem() +} + +type ArrayOfVchaNodeRuntimeInfo struct { + VchaNodeRuntimeInfo []VchaNodeRuntimeInfo `xml:"VchaNodeRuntimeInfo,omitempty"` +} + +func init() { + t["ArrayOfVchaNodeRuntimeInfo"] = reflect.TypeOf((*ArrayOfVchaNodeRuntimeInfo)(nil)).Elem() +} + +type ArrayOfVimVasaProviderInfo struct { + VimVasaProviderInfo []VimVasaProviderInfo `xml:"VimVasaProviderInfo,omitempty"` +} + +func init() { + t["ArrayOfVimVasaProviderInfo"] = reflect.TypeOf((*ArrayOfVimVasaProviderInfo)(nil)).Elem() +} + +type ArrayOfVimVasaProviderStatePerArray struct { + VimVasaProviderStatePerArray []VimVasaProviderStatePerArray `xml:"VimVasaProviderStatePerArray,omitempty"` +} + +func init() { + t["ArrayOfVimVasaProviderStatePerArray"] = reflect.TypeOf((*ArrayOfVimVasaProviderStatePerArray)(nil)).Elem() +} + +type ArrayOfVirtualAppLinkInfo struct { + VirtualAppLinkInfo []VirtualAppLinkInfo `xml:"VirtualAppLinkInfo,omitempty"` +} + +func init() { + t["ArrayOfVirtualAppLinkInfo"] = reflect.TypeOf((*ArrayOfVirtualAppLinkInfo)(nil)).Elem() +} + +type ArrayOfVirtualDevice struct { + VirtualDevice []BaseVirtualDevice `xml:"VirtualDevice,omitempty,typeattr"` +} + +func init() { + t["ArrayOfVirtualDevice"] = reflect.TypeOf((*ArrayOfVirtualDevice)(nil)).Elem() +} + +type ArrayOfVirtualDeviceBackingOption struct { + VirtualDeviceBackingOption []BaseVirtualDeviceBackingOption `xml:"VirtualDeviceBackingOption,omitempty,typeattr"` +} + +func init() { + t["ArrayOfVirtualDeviceBackingOption"] = reflect.TypeOf((*ArrayOfVirtualDeviceBackingOption)(nil)).Elem() +} + +type ArrayOfVirtualDeviceConfigSpec struct { + VirtualDeviceConfigSpec []BaseVirtualDeviceConfigSpec `xml:"VirtualDeviceConfigSpec,omitempty,typeattr"` +} + +func init() { + t["ArrayOfVirtualDeviceConfigSpec"] = reflect.TypeOf((*ArrayOfVirtualDeviceConfigSpec)(nil)).Elem() +} + +type ArrayOfVirtualDeviceOption struct { + VirtualDeviceOption []BaseVirtualDeviceOption `xml:"VirtualDeviceOption,omitempty,typeattr"` +} + +func init() { + t["ArrayOfVirtualDeviceOption"] = reflect.TypeOf((*ArrayOfVirtualDeviceOption)(nil)).Elem() +} + +type ArrayOfVirtualDisk struct { + VirtualDisk []VirtualDisk `xml:"VirtualDisk,omitempty"` +} + +func init() { + t["ArrayOfVirtualDisk"] = reflect.TypeOf((*ArrayOfVirtualDisk)(nil)).Elem() +} + +type ArrayOfVirtualDiskDeltaDiskFormatsSupported struct { + VirtualDiskDeltaDiskFormatsSupported []VirtualDiskDeltaDiskFormatsSupported `xml:"VirtualDiskDeltaDiskFormatsSupported,omitempty"` +} + +func init() { + t["ArrayOfVirtualDiskDeltaDiskFormatsSupported"] = reflect.TypeOf((*ArrayOfVirtualDiskDeltaDiskFormatsSupported)(nil)).Elem() +} + +type ArrayOfVirtualDiskId struct { + VirtualDiskId []VirtualDiskId `xml:"VirtualDiskId,omitempty"` +} + +func init() { + t["ArrayOfVirtualDiskId"] = reflect.TypeOf((*ArrayOfVirtualDiskId)(nil)).Elem() +} + +type ArrayOfVirtualDiskRuleSpec struct { + VirtualDiskRuleSpec []VirtualDiskRuleSpec `xml:"VirtualDiskRuleSpec,omitempty"` +} + +func init() { + t["ArrayOfVirtualDiskRuleSpec"] = reflect.TypeOf((*ArrayOfVirtualDiskRuleSpec)(nil)).Elem() +} + +type ArrayOfVirtualMachineBootOptionsBootableDevice struct { + VirtualMachineBootOptionsBootableDevice []BaseVirtualMachineBootOptionsBootableDevice `xml:"VirtualMachineBootOptionsBootableDevice,omitempty,typeattr"` +} + +func init() { + t["ArrayOfVirtualMachineBootOptionsBootableDevice"] = reflect.TypeOf((*ArrayOfVirtualMachineBootOptionsBootableDevice)(nil)).Elem() +} + +type ArrayOfVirtualMachineCdromInfo struct { + VirtualMachineCdromInfo []VirtualMachineCdromInfo `xml:"VirtualMachineCdromInfo,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineCdromInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineCdromInfo)(nil)).Elem() +} + +type ArrayOfVirtualMachineConfigInfoDatastoreUrlPair struct { + VirtualMachineConfigInfoDatastoreUrlPair []VirtualMachineConfigInfoDatastoreUrlPair `xml:"VirtualMachineConfigInfoDatastoreUrlPair,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineConfigInfoDatastoreUrlPair"] = reflect.TypeOf((*ArrayOfVirtualMachineConfigInfoDatastoreUrlPair)(nil)).Elem() +} + +type ArrayOfVirtualMachineConfigOptionDescriptor struct { + VirtualMachineConfigOptionDescriptor []VirtualMachineConfigOptionDescriptor `xml:"VirtualMachineConfigOptionDescriptor,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineConfigOptionDescriptor"] = reflect.TypeOf((*ArrayOfVirtualMachineConfigOptionDescriptor)(nil)).Elem() +} + +type ArrayOfVirtualMachineConfigSpec struct { + VirtualMachineConfigSpec []VirtualMachineConfigSpec `xml:"VirtualMachineConfigSpec,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineConfigSpec"] = reflect.TypeOf((*ArrayOfVirtualMachineConfigSpec)(nil)).Elem() +} + +type ArrayOfVirtualMachineCpuIdInfoSpec struct { + VirtualMachineCpuIdInfoSpec []VirtualMachineCpuIdInfoSpec `xml:"VirtualMachineCpuIdInfoSpec,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineCpuIdInfoSpec"] = reflect.TypeOf((*ArrayOfVirtualMachineCpuIdInfoSpec)(nil)).Elem() +} + +type ArrayOfVirtualMachineDatastoreInfo struct { + VirtualMachineDatastoreInfo []VirtualMachineDatastoreInfo `xml:"VirtualMachineDatastoreInfo,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineDatastoreInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineDatastoreInfo)(nil)).Elem() +} + +type ArrayOfVirtualMachineDatastoreVolumeOption struct { + VirtualMachineDatastoreVolumeOption []VirtualMachineDatastoreVolumeOption `xml:"VirtualMachineDatastoreVolumeOption,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineDatastoreVolumeOption"] = reflect.TypeOf((*ArrayOfVirtualMachineDatastoreVolumeOption)(nil)).Elem() +} + +type ArrayOfVirtualMachineDeviceRuntimeInfo struct { + VirtualMachineDeviceRuntimeInfo []VirtualMachineDeviceRuntimeInfo `xml:"VirtualMachineDeviceRuntimeInfo,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineDeviceRuntimeInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineDeviceRuntimeInfo)(nil)).Elem() +} + +type ArrayOfVirtualMachineDisplayTopology struct { + VirtualMachineDisplayTopology []VirtualMachineDisplayTopology `xml:"VirtualMachineDisplayTopology,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineDisplayTopology"] = reflect.TypeOf((*ArrayOfVirtualMachineDisplayTopology)(nil)).Elem() +} + +type ArrayOfVirtualMachineDynamicPassthroughInfo struct { + VirtualMachineDynamicPassthroughInfo []VirtualMachineDynamicPassthroughInfo `xml:"VirtualMachineDynamicPassthroughInfo,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineDynamicPassthroughInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineDynamicPassthroughInfo)(nil)).Elem() +} + +type ArrayOfVirtualMachineFeatureRequirement struct { + VirtualMachineFeatureRequirement []VirtualMachineFeatureRequirement `xml:"VirtualMachineFeatureRequirement,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineFeatureRequirement"] = reflect.TypeOf((*ArrayOfVirtualMachineFeatureRequirement)(nil)).Elem() +} + +type ArrayOfVirtualMachineFileLayoutDiskLayout struct { + VirtualMachineFileLayoutDiskLayout []VirtualMachineFileLayoutDiskLayout `xml:"VirtualMachineFileLayoutDiskLayout,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineFileLayoutDiskLayout"] = reflect.TypeOf((*ArrayOfVirtualMachineFileLayoutDiskLayout)(nil)).Elem() +} + +type ArrayOfVirtualMachineFileLayoutExDiskLayout struct { + VirtualMachineFileLayoutExDiskLayout []VirtualMachineFileLayoutExDiskLayout `xml:"VirtualMachineFileLayoutExDiskLayout,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineFileLayoutExDiskLayout"] = reflect.TypeOf((*ArrayOfVirtualMachineFileLayoutExDiskLayout)(nil)).Elem() +} + +type ArrayOfVirtualMachineFileLayoutExDiskUnit struct { + VirtualMachineFileLayoutExDiskUnit []VirtualMachineFileLayoutExDiskUnit `xml:"VirtualMachineFileLayoutExDiskUnit,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineFileLayoutExDiskUnit"] = reflect.TypeOf((*ArrayOfVirtualMachineFileLayoutExDiskUnit)(nil)).Elem() +} + +type ArrayOfVirtualMachineFileLayoutExFileInfo struct { + VirtualMachineFileLayoutExFileInfo []VirtualMachineFileLayoutExFileInfo `xml:"VirtualMachineFileLayoutExFileInfo,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineFileLayoutExFileInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineFileLayoutExFileInfo)(nil)).Elem() +} + +type ArrayOfVirtualMachineFileLayoutExSnapshotLayout struct { + VirtualMachineFileLayoutExSnapshotLayout []VirtualMachineFileLayoutExSnapshotLayout `xml:"VirtualMachineFileLayoutExSnapshotLayout,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineFileLayoutExSnapshotLayout"] = reflect.TypeOf((*ArrayOfVirtualMachineFileLayoutExSnapshotLayout)(nil)).Elem() +} + +type ArrayOfVirtualMachineFileLayoutSnapshotLayout struct { + VirtualMachineFileLayoutSnapshotLayout []VirtualMachineFileLayoutSnapshotLayout `xml:"VirtualMachineFileLayoutSnapshotLayout,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineFileLayoutSnapshotLayout"] = reflect.TypeOf((*ArrayOfVirtualMachineFileLayoutSnapshotLayout)(nil)).Elem() +} + +type ArrayOfVirtualMachineFloppyInfo struct { + VirtualMachineFloppyInfo []VirtualMachineFloppyInfo `xml:"VirtualMachineFloppyInfo,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineFloppyInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineFloppyInfo)(nil)).Elem() +} + +type ArrayOfVirtualMachineIdeDiskDeviceInfo struct { + VirtualMachineIdeDiskDeviceInfo []VirtualMachineIdeDiskDeviceInfo `xml:"VirtualMachineIdeDiskDeviceInfo,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineIdeDiskDeviceInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineIdeDiskDeviceInfo)(nil)).Elem() +} + +type ArrayOfVirtualMachineIdeDiskDevicePartitionInfo struct { + VirtualMachineIdeDiskDevicePartitionInfo []VirtualMachineIdeDiskDevicePartitionInfo `xml:"VirtualMachineIdeDiskDevicePartitionInfo,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineIdeDiskDevicePartitionInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineIdeDiskDevicePartitionInfo)(nil)).Elem() +} + +type ArrayOfVirtualMachineLegacyNetworkSwitchInfo struct { + VirtualMachineLegacyNetworkSwitchInfo []VirtualMachineLegacyNetworkSwitchInfo `xml:"VirtualMachineLegacyNetworkSwitchInfo,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineLegacyNetworkSwitchInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineLegacyNetworkSwitchInfo)(nil)).Elem() +} + +type ArrayOfVirtualMachineMessage struct { + VirtualMachineMessage []VirtualMachineMessage `xml:"VirtualMachineMessage,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineMessage"] = reflect.TypeOf((*ArrayOfVirtualMachineMessage)(nil)).Elem() +} + +type ArrayOfVirtualMachineMetadataManagerVmMetadataInput struct { + VirtualMachineMetadataManagerVmMetadataInput []VirtualMachineMetadataManagerVmMetadataInput `xml:"VirtualMachineMetadataManagerVmMetadataInput,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineMetadataManagerVmMetadataInput"] = reflect.TypeOf((*ArrayOfVirtualMachineMetadataManagerVmMetadataInput)(nil)).Elem() +} + +type ArrayOfVirtualMachineMetadataManagerVmMetadataResult struct { + VirtualMachineMetadataManagerVmMetadataResult []VirtualMachineMetadataManagerVmMetadataResult `xml:"VirtualMachineMetadataManagerVmMetadataResult,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineMetadataManagerVmMetadataResult"] = reflect.TypeOf((*ArrayOfVirtualMachineMetadataManagerVmMetadataResult)(nil)).Elem() +} + +type ArrayOfVirtualMachineNetworkInfo struct { + VirtualMachineNetworkInfo []VirtualMachineNetworkInfo `xml:"VirtualMachineNetworkInfo,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineNetworkInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineNetworkInfo)(nil)).Elem() +} + +type ArrayOfVirtualMachineParallelInfo struct { + VirtualMachineParallelInfo []VirtualMachineParallelInfo `xml:"VirtualMachineParallelInfo,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineParallelInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineParallelInfo)(nil)).Elem() +} + +type ArrayOfVirtualMachinePciPassthroughInfo struct { + VirtualMachinePciPassthroughInfo []BaseVirtualMachinePciPassthroughInfo `xml:"VirtualMachinePciPassthroughInfo,omitempty,typeattr"` +} + +func init() { + t["ArrayOfVirtualMachinePciPassthroughInfo"] = reflect.TypeOf((*ArrayOfVirtualMachinePciPassthroughInfo)(nil)).Elem() +} + +type ArrayOfVirtualMachinePciSharedGpuPassthroughInfo struct { + VirtualMachinePciSharedGpuPassthroughInfo []VirtualMachinePciSharedGpuPassthroughInfo `xml:"VirtualMachinePciSharedGpuPassthroughInfo,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachinePciSharedGpuPassthroughInfo"] = reflect.TypeOf((*ArrayOfVirtualMachinePciSharedGpuPassthroughInfo)(nil)).Elem() +} + +type ArrayOfVirtualMachinePrecisionClockInfo struct { + VirtualMachinePrecisionClockInfo []VirtualMachinePrecisionClockInfo `xml:"VirtualMachinePrecisionClockInfo,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachinePrecisionClockInfo"] = reflect.TypeOf((*ArrayOfVirtualMachinePrecisionClockInfo)(nil)).Elem() +} + +type ArrayOfVirtualMachineProfileDetailsDiskProfileDetails struct { + VirtualMachineProfileDetailsDiskProfileDetails []VirtualMachineProfileDetailsDiskProfileDetails `xml:"VirtualMachineProfileDetailsDiskProfileDetails,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineProfileDetailsDiskProfileDetails"] = reflect.TypeOf((*ArrayOfVirtualMachineProfileDetailsDiskProfileDetails)(nil)).Elem() +} + +type ArrayOfVirtualMachineProfileSpec struct { + VirtualMachineProfileSpec []BaseVirtualMachineProfileSpec `xml:"VirtualMachineProfileSpec,omitempty,typeattr"` +} + +func init() { + t["ArrayOfVirtualMachineProfileSpec"] = reflect.TypeOf((*ArrayOfVirtualMachineProfileSpec)(nil)).Elem() +} + +type ArrayOfVirtualMachinePropertyRelation struct { + VirtualMachinePropertyRelation []VirtualMachinePropertyRelation `xml:"VirtualMachinePropertyRelation,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachinePropertyRelation"] = reflect.TypeOf((*ArrayOfVirtualMachinePropertyRelation)(nil)).Elem() +} + +type ArrayOfVirtualMachineRelocateSpecDiskLocator struct { + VirtualMachineRelocateSpecDiskLocator []VirtualMachineRelocateSpecDiskLocator `xml:"VirtualMachineRelocateSpecDiskLocator,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineRelocateSpecDiskLocator"] = reflect.TypeOf((*ArrayOfVirtualMachineRelocateSpecDiskLocator)(nil)).Elem() +} + +type ArrayOfVirtualMachineScsiDiskDeviceInfo struct { + VirtualMachineScsiDiskDeviceInfo []VirtualMachineScsiDiskDeviceInfo `xml:"VirtualMachineScsiDiskDeviceInfo,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineScsiDiskDeviceInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineScsiDiskDeviceInfo)(nil)).Elem() +} + +type ArrayOfVirtualMachineScsiPassthroughInfo struct { + VirtualMachineScsiPassthroughInfo []VirtualMachineScsiPassthroughInfo `xml:"VirtualMachineScsiPassthroughInfo,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineScsiPassthroughInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineScsiPassthroughInfo)(nil)).Elem() +} + +type ArrayOfVirtualMachineSerialInfo struct { + VirtualMachineSerialInfo []VirtualMachineSerialInfo `xml:"VirtualMachineSerialInfo,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineSerialInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineSerialInfo)(nil)).Elem() +} + +type ArrayOfVirtualMachineSnapshotTree struct { + VirtualMachineSnapshotTree []VirtualMachineSnapshotTree `xml:"VirtualMachineSnapshotTree,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineSnapshotTree"] = reflect.TypeOf((*ArrayOfVirtualMachineSnapshotTree)(nil)).Elem() +} + +type ArrayOfVirtualMachineSoundInfo struct { + VirtualMachineSoundInfo []VirtualMachineSoundInfo `xml:"VirtualMachineSoundInfo,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineSoundInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineSoundInfo)(nil)).Elem() +} + +type ArrayOfVirtualMachineSriovInfo struct { + VirtualMachineSriovInfo []VirtualMachineSriovInfo `xml:"VirtualMachineSriovInfo,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineSriovInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineSriovInfo)(nil)).Elem() +} + +type ArrayOfVirtualMachineSummary struct { + VirtualMachineSummary []VirtualMachineSummary `xml:"VirtualMachineSummary,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineSummary"] = reflect.TypeOf((*ArrayOfVirtualMachineSummary)(nil)).Elem() +} + +type ArrayOfVirtualMachineUsageOnDatastore struct { + VirtualMachineUsageOnDatastore []VirtualMachineUsageOnDatastore `xml:"VirtualMachineUsageOnDatastore,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineUsageOnDatastore"] = reflect.TypeOf((*ArrayOfVirtualMachineUsageOnDatastore)(nil)).Elem() +} + +type ArrayOfVirtualMachineUsbInfo struct { + VirtualMachineUsbInfo []VirtualMachineUsbInfo `xml:"VirtualMachineUsbInfo,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineUsbInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineUsbInfo)(nil)).Elem() +} + +type ArrayOfVirtualMachineVFlashModuleInfo struct { + VirtualMachineVFlashModuleInfo []VirtualMachineVFlashModuleInfo `xml:"VirtualMachineVFlashModuleInfo,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineVFlashModuleInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineVFlashModuleInfo)(nil)).Elem() +} + +type ArrayOfVirtualMachineVMCIDeviceFilterSpec struct { + VirtualMachineVMCIDeviceFilterSpec []VirtualMachineVMCIDeviceFilterSpec `xml:"VirtualMachineVMCIDeviceFilterSpec,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineVMCIDeviceFilterSpec"] = reflect.TypeOf((*ArrayOfVirtualMachineVMCIDeviceFilterSpec)(nil)).Elem() +} + +type ArrayOfVirtualMachineVcpuConfig struct { + VirtualMachineVcpuConfig []VirtualMachineVcpuConfig `xml:"VirtualMachineVcpuConfig,omitempty"` +} + +func init() { + t["ArrayOfVirtualMachineVcpuConfig"] = reflect.TypeOf((*ArrayOfVirtualMachineVcpuConfig)(nil)).Elem() +} + +type ArrayOfVirtualNicManagerNetConfig struct { + VirtualNicManagerNetConfig []VirtualNicManagerNetConfig `xml:"VirtualNicManagerNetConfig,omitempty"` +} + +func init() { + t["ArrayOfVirtualNicManagerNetConfig"] = reflect.TypeOf((*ArrayOfVirtualNicManagerNetConfig)(nil)).Elem() +} + +type ArrayOfVirtualPCIPassthroughAllowedDevice struct { + VirtualPCIPassthroughAllowedDevice []VirtualPCIPassthroughAllowedDevice `xml:"VirtualPCIPassthroughAllowedDevice,omitempty"` +} + +func init() { + t["ArrayOfVirtualPCIPassthroughAllowedDevice"] = reflect.TypeOf((*ArrayOfVirtualPCIPassthroughAllowedDevice)(nil)).Elem() +} + +type ArrayOfVirtualSCSISharing struct { + VirtualSCSISharing []VirtualSCSISharing `xml:"VirtualSCSISharing,omitempty"` +} + +func init() { + t["ArrayOfVirtualSCSISharing"] = reflect.TypeOf((*ArrayOfVirtualSCSISharing)(nil)).Elem() +} + +type ArrayOfVirtualSwitchProfile struct { + VirtualSwitchProfile []VirtualSwitchProfile `xml:"VirtualSwitchProfile,omitempty"` +} + +func init() { + t["ArrayOfVirtualSwitchProfile"] = reflect.TypeOf((*ArrayOfVirtualSwitchProfile)(nil)).Elem() +} + +type ArrayOfVmEventArgument struct { + VmEventArgument []VmEventArgument `xml:"VmEventArgument,omitempty"` +} + +func init() { + t["ArrayOfVmEventArgument"] = reflect.TypeOf((*ArrayOfVmEventArgument)(nil)).Elem() +} + +type ArrayOfVmPodConfigForPlacement struct { + VmPodConfigForPlacement []VmPodConfigForPlacement `xml:"VmPodConfigForPlacement,omitempty"` +} + +func init() { + t["ArrayOfVmPodConfigForPlacement"] = reflect.TypeOf((*ArrayOfVmPodConfigForPlacement)(nil)).Elem() +} + +type ArrayOfVmPortGroupProfile struct { + VmPortGroupProfile []VmPortGroupProfile `xml:"VmPortGroupProfile,omitempty"` +} + +func init() { + t["ArrayOfVmPortGroupProfile"] = reflect.TypeOf((*ArrayOfVmPortGroupProfile)(nil)).Elem() +} + +type ArrayOfVmfsConfigOption struct { + VmfsConfigOption []VmfsConfigOption `xml:"VmfsConfigOption,omitempty"` +} + +func init() { + t["ArrayOfVmfsConfigOption"] = reflect.TypeOf((*ArrayOfVmfsConfigOption)(nil)).Elem() +} + +type ArrayOfVmfsDatastoreOption struct { + VmfsDatastoreOption []VmfsDatastoreOption `xml:"VmfsDatastoreOption,omitempty"` +} + +func init() { + t["ArrayOfVmfsDatastoreOption"] = reflect.TypeOf((*ArrayOfVmfsDatastoreOption)(nil)).Elem() +} + +type ArrayOfVnicPortArgument struct { + VnicPortArgument []VnicPortArgument `xml:"VnicPortArgument,omitempty"` +} + +func init() { + t["ArrayOfVnicPortArgument"] = reflect.TypeOf((*ArrayOfVnicPortArgument)(nil)).Elem() +} + +type ArrayOfVsanHostConfigInfo struct { + VsanHostConfigInfo []VsanHostConfigInfo `xml:"VsanHostConfigInfo,omitempty"` +} + +func init() { + t["ArrayOfVsanHostConfigInfo"] = reflect.TypeOf((*ArrayOfVsanHostConfigInfo)(nil)).Elem() +} + +type ArrayOfVsanHostConfigInfoNetworkInfoPortConfig struct { + VsanHostConfigInfoNetworkInfoPortConfig []VsanHostConfigInfoNetworkInfoPortConfig `xml:"VsanHostConfigInfoNetworkInfoPortConfig,omitempty"` +} + +func init() { + t["ArrayOfVsanHostConfigInfoNetworkInfoPortConfig"] = reflect.TypeOf((*ArrayOfVsanHostConfigInfoNetworkInfoPortConfig)(nil)).Elem() +} + +type ArrayOfVsanHostDiskMapInfo struct { + VsanHostDiskMapInfo []VsanHostDiskMapInfo `xml:"VsanHostDiskMapInfo,omitempty"` +} + +func init() { + t["ArrayOfVsanHostDiskMapInfo"] = reflect.TypeOf((*ArrayOfVsanHostDiskMapInfo)(nil)).Elem() +} + +type ArrayOfVsanHostDiskMapResult struct { + VsanHostDiskMapResult []VsanHostDiskMapResult `xml:"VsanHostDiskMapResult,omitempty"` +} + +func init() { + t["ArrayOfVsanHostDiskMapResult"] = reflect.TypeOf((*ArrayOfVsanHostDiskMapResult)(nil)).Elem() +} + +type ArrayOfVsanHostDiskMapping struct { + VsanHostDiskMapping []VsanHostDiskMapping `xml:"VsanHostDiskMapping,omitempty"` +} + +func init() { + t["ArrayOfVsanHostDiskMapping"] = reflect.TypeOf((*ArrayOfVsanHostDiskMapping)(nil)).Elem() +} + +type ArrayOfVsanHostDiskResult struct { + VsanHostDiskResult []VsanHostDiskResult `xml:"VsanHostDiskResult,omitempty"` +} + +func init() { + t["ArrayOfVsanHostDiskResult"] = reflect.TypeOf((*ArrayOfVsanHostDiskResult)(nil)).Elem() +} + +type ArrayOfVsanHostMembershipInfo struct { + VsanHostMembershipInfo []VsanHostMembershipInfo `xml:"VsanHostMembershipInfo,omitempty"` +} + +func init() { + t["ArrayOfVsanHostMembershipInfo"] = reflect.TypeOf((*ArrayOfVsanHostMembershipInfo)(nil)).Elem() +} + +type ArrayOfVsanHostRuntimeInfoDiskIssue struct { + VsanHostRuntimeInfoDiskIssue []VsanHostRuntimeInfoDiskIssue `xml:"VsanHostRuntimeInfoDiskIssue,omitempty"` +} + +func init() { + t["ArrayOfVsanHostRuntimeInfoDiskIssue"] = reflect.TypeOf((*ArrayOfVsanHostRuntimeInfoDiskIssue)(nil)).Elem() +} + +type ArrayOfVsanNewPolicyBatch struct { + VsanNewPolicyBatch []VsanNewPolicyBatch `xml:"VsanNewPolicyBatch,omitempty"` +} + +func init() { + t["ArrayOfVsanNewPolicyBatch"] = reflect.TypeOf((*ArrayOfVsanNewPolicyBatch)(nil)).Elem() +} + +type ArrayOfVsanPolicyChangeBatch struct { + VsanPolicyChangeBatch []VsanPolicyChangeBatch `xml:"VsanPolicyChangeBatch,omitempty"` +} + +func init() { + t["ArrayOfVsanPolicyChangeBatch"] = reflect.TypeOf((*ArrayOfVsanPolicyChangeBatch)(nil)).Elem() +} + +type ArrayOfVsanPolicySatisfiability struct { + VsanPolicySatisfiability []VsanPolicySatisfiability `xml:"VsanPolicySatisfiability,omitempty"` +} + +func init() { + t["ArrayOfVsanPolicySatisfiability"] = reflect.TypeOf((*ArrayOfVsanPolicySatisfiability)(nil)).Elem() +} + +type ArrayOfVsanUpgradeSystemNetworkPartitionInfo struct { + VsanUpgradeSystemNetworkPartitionInfo []VsanUpgradeSystemNetworkPartitionInfo `xml:"VsanUpgradeSystemNetworkPartitionInfo,omitempty"` +} + +func init() { + t["ArrayOfVsanUpgradeSystemNetworkPartitionInfo"] = reflect.TypeOf((*ArrayOfVsanUpgradeSystemNetworkPartitionInfo)(nil)).Elem() +} + +type ArrayOfVsanUpgradeSystemPreflightCheckIssue struct { + VsanUpgradeSystemPreflightCheckIssue []BaseVsanUpgradeSystemPreflightCheckIssue `xml:"VsanUpgradeSystemPreflightCheckIssue,omitempty,typeattr"` +} + +func init() { + t["ArrayOfVsanUpgradeSystemPreflightCheckIssue"] = reflect.TypeOf((*ArrayOfVsanUpgradeSystemPreflightCheckIssue)(nil)).Elem() +} + +type ArrayOfVsanUpgradeSystemUpgradeHistoryItem struct { + VsanUpgradeSystemUpgradeHistoryItem []BaseVsanUpgradeSystemUpgradeHistoryItem `xml:"VsanUpgradeSystemUpgradeHistoryItem,omitempty,typeattr"` +} + +func init() { + t["ArrayOfVsanUpgradeSystemUpgradeHistoryItem"] = reflect.TypeOf((*ArrayOfVsanUpgradeSystemUpgradeHistoryItem)(nil)).Elem() +} + +type ArrayOfVslmTagEntry struct { + VslmTagEntry []VslmTagEntry `xml:"VslmTagEntry,omitempty"` +} + +func init() { + t["ArrayOfVslmTagEntry"] = reflect.TypeOf((*ArrayOfVslmTagEntry)(nil)).Elem() +} + +type ArrayOfVslmInfrastructureObjectPolicy struct { + VslmInfrastructureObjectPolicy []VslmInfrastructureObjectPolicy `xml:"vslmInfrastructureObjectPolicy,omitempty"` +} + +func init() { + t["ArrayOfvslmInfrastructureObjectPolicy"] = reflect.TypeOf((*ArrayOfVslmInfrastructureObjectPolicy)(nil)).Elem() +} + +type ArrayUpdateSpec struct { + DynamicData + + Operation ArrayUpdateOperation `xml:"operation"` + RemoveKey AnyType `xml:"removeKey,omitempty,typeattr"` +} + +func init() { + t["ArrayUpdateSpec"] = reflect.TypeOf((*ArrayUpdateSpec)(nil)).Elem() +} + +type AssignUserToGroup AssignUserToGroupRequestType + +func init() { + t["AssignUserToGroup"] = reflect.TypeOf((*AssignUserToGroup)(nil)).Elem() +} + +type AssignUserToGroupRequestType struct { + This ManagedObjectReference `xml:"_this"` + User string `xml:"user"` + Group string `xml:"group"` +} + +func init() { + t["AssignUserToGroupRequestType"] = reflect.TypeOf((*AssignUserToGroupRequestType)(nil)).Elem() +} + +type AssignUserToGroupResponse struct { +} + +type AssociateProfile AssociateProfileRequestType + +func init() { + t["AssociateProfile"] = reflect.TypeOf((*AssociateProfile)(nil)).Elem() +} + +type AssociateProfileRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity []ManagedObjectReference `xml:"entity"` +} + +func init() { + t["AssociateProfileRequestType"] = reflect.TypeOf((*AssociateProfileRequestType)(nil)).Elem() +} + +type AssociateProfileResponse struct { +} + +type AttachDiskRequestType struct { + This ManagedObjectReference `xml:"_this"` + DiskId ID `xml:"diskId"` + Datastore ManagedObjectReference `xml:"datastore"` + ControllerKey int32 `xml:"controllerKey,omitempty"` + UnitNumber *int32 `xml:"unitNumber"` +} + +func init() { + t["AttachDiskRequestType"] = reflect.TypeOf((*AttachDiskRequestType)(nil)).Elem() +} + +type AttachDisk_Task AttachDiskRequestType + +func init() { + t["AttachDisk_Task"] = reflect.TypeOf((*AttachDisk_Task)(nil)).Elem() +} + +type AttachDisk_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type AttachScsiLun AttachScsiLunRequestType + +func init() { + t["AttachScsiLun"] = reflect.TypeOf((*AttachScsiLun)(nil)).Elem() +} + +type AttachScsiLunExRequestType struct { + This ManagedObjectReference `xml:"_this"` + LunUuid []string `xml:"lunUuid"` +} + +func init() { + t["AttachScsiLunExRequestType"] = reflect.TypeOf((*AttachScsiLunExRequestType)(nil)).Elem() +} + +type AttachScsiLunEx_Task AttachScsiLunExRequestType + +func init() { + t["AttachScsiLunEx_Task"] = reflect.TypeOf((*AttachScsiLunEx_Task)(nil)).Elem() +} + +type AttachScsiLunEx_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type AttachScsiLunRequestType struct { + This ManagedObjectReference `xml:"_this"` + LunUuid string `xml:"lunUuid"` +} + +func init() { + t["AttachScsiLunRequestType"] = reflect.TypeOf((*AttachScsiLunRequestType)(nil)).Elem() +} + +type AttachScsiLunResponse struct { +} + +type AttachTagToVStorageObject AttachTagToVStorageObjectRequestType + +func init() { + t["AttachTagToVStorageObject"] = reflect.TypeOf((*AttachTagToVStorageObject)(nil)).Elem() +} + +type AttachTagToVStorageObjectRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Category string `xml:"category"` + Tag string `xml:"tag"` +} + +func init() { + t["AttachTagToVStorageObjectRequestType"] = reflect.TypeOf((*AttachTagToVStorageObjectRequestType)(nil)).Elem() +} + +type AttachTagToVStorageObjectResponse struct { +} + +type AttachVmfsExtent AttachVmfsExtentRequestType + +func init() { + t["AttachVmfsExtent"] = reflect.TypeOf((*AttachVmfsExtent)(nil)).Elem() +} + +type AttachVmfsExtentRequestType struct { + This ManagedObjectReference `xml:"_this"` + VmfsPath string `xml:"vmfsPath"` + Extent HostScsiDiskPartition `xml:"extent"` +} + +func init() { + t["AttachVmfsExtentRequestType"] = reflect.TypeOf((*AttachVmfsExtentRequestType)(nil)).Elem() +} + +type AttachVmfsExtentResponse struct { +} + +type AuthMinimumAdminPermission struct { + VimFault +} + +func init() { + t["AuthMinimumAdminPermission"] = reflect.TypeOf((*AuthMinimumAdminPermission)(nil)).Elem() +} + +type AuthMinimumAdminPermissionFault AuthMinimumAdminPermission + +func init() { + t["AuthMinimumAdminPermissionFault"] = reflect.TypeOf((*AuthMinimumAdminPermissionFault)(nil)).Elem() +} + +type AuthenticationProfile struct { + ApplyProfile + + ActiveDirectory *ActiveDirectoryProfile `xml:"activeDirectory,omitempty"` +} + +func init() { + t["AuthenticationProfile"] = reflect.TypeOf((*AuthenticationProfile)(nil)).Elem() +} + +type AuthorizationDescription struct { + DynamicData + + Privilege []BaseElementDescription `xml:"privilege,typeattr"` + PrivilegeGroup []BaseElementDescription `xml:"privilegeGroup,typeattr"` +} + +func init() { + t["AuthorizationDescription"] = reflect.TypeOf((*AuthorizationDescription)(nil)).Elem() +} + +type AuthorizationEvent struct { + Event +} + +func init() { + t["AuthorizationEvent"] = reflect.TypeOf((*AuthorizationEvent)(nil)).Elem() +} + +type AuthorizationPrivilege struct { + DynamicData + + PrivId string `xml:"privId"` + OnParent bool `xml:"onParent"` + Name string `xml:"name"` + PrivGroupName string `xml:"privGroupName"` +} + +func init() { + t["AuthorizationPrivilege"] = reflect.TypeOf((*AuthorizationPrivilege)(nil)).Elem() +} + +type AuthorizationRole struct { + DynamicData + + RoleId int32 `xml:"roleId"` + System bool `xml:"system"` + Name string `xml:"name"` + Info BaseDescription `xml:"info,typeattr"` + Privilege []string `xml:"privilege,omitempty"` +} + +func init() { + t["AuthorizationRole"] = reflect.TypeOf((*AuthorizationRole)(nil)).Elem() +} + +type AutoStartDefaults struct { + DynamicData + + Enabled *bool `xml:"enabled"` + StartDelay int32 `xml:"startDelay,omitempty"` + StopDelay int32 `xml:"stopDelay,omitempty"` + WaitForHeartbeat *bool `xml:"waitForHeartbeat"` + StopAction string `xml:"stopAction,omitempty"` +} + +func init() { + t["AutoStartDefaults"] = reflect.TypeOf((*AutoStartDefaults)(nil)).Elem() +} + +type AutoStartPowerInfo struct { + DynamicData + + Key ManagedObjectReference `xml:"key"` + StartOrder int32 `xml:"startOrder"` + StartDelay int32 `xml:"startDelay"` + WaitForHeartbeat AutoStartWaitHeartbeatSetting `xml:"waitForHeartbeat"` + StartAction string `xml:"startAction"` + StopDelay int32 `xml:"stopDelay"` + StopAction string `xml:"stopAction"` +} + +func init() { + t["AutoStartPowerInfo"] = reflect.TypeOf((*AutoStartPowerInfo)(nil)).Elem() +} + +type AutoStartPowerOff AutoStartPowerOffRequestType + +func init() { + t["AutoStartPowerOff"] = reflect.TypeOf((*AutoStartPowerOff)(nil)).Elem() +} + +type AutoStartPowerOffRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["AutoStartPowerOffRequestType"] = reflect.TypeOf((*AutoStartPowerOffRequestType)(nil)).Elem() +} + +type AutoStartPowerOffResponse struct { +} + +type AutoStartPowerOn AutoStartPowerOnRequestType + +func init() { + t["AutoStartPowerOn"] = reflect.TypeOf((*AutoStartPowerOn)(nil)).Elem() +} + +type AutoStartPowerOnRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["AutoStartPowerOnRequestType"] = reflect.TypeOf((*AutoStartPowerOnRequestType)(nil)).Elem() +} + +type AutoStartPowerOnResponse struct { +} + +type BackupBlobReadFailure struct { + DvsFault + + EntityName string `xml:"entityName"` + EntityType string `xml:"entityType"` + Fault LocalizedMethodFault `xml:"fault"` +} + +func init() { + t["BackupBlobReadFailure"] = reflect.TypeOf((*BackupBlobReadFailure)(nil)).Elem() +} + +type BackupBlobReadFailureFault BackupBlobReadFailure + +func init() { + t["BackupBlobReadFailureFault"] = reflect.TypeOf((*BackupBlobReadFailureFault)(nil)).Elem() +} + +type BackupBlobWriteFailure struct { + DvsFault + + EntityName string `xml:"entityName"` + EntityType string `xml:"entityType"` + Fault LocalizedMethodFault `xml:"fault"` +} + +func init() { + t["BackupBlobWriteFailure"] = reflect.TypeOf((*BackupBlobWriteFailure)(nil)).Elem() +} + +type BackupBlobWriteFailureFault BackupBlobWriteFailure + +func init() { + t["BackupBlobWriteFailureFault"] = reflect.TypeOf((*BackupBlobWriteFailureFault)(nil)).Elem() +} + +type BackupFirmwareConfiguration BackupFirmwareConfigurationRequestType + +func init() { + t["BackupFirmwareConfiguration"] = reflect.TypeOf((*BackupFirmwareConfiguration)(nil)).Elem() +} + +type BackupFirmwareConfigurationRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["BackupFirmwareConfigurationRequestType"] = reflect.TypeOf((*BackupFirmwareConfigurationRequestType)(nil)).Elem() +} + +type BackupFirmwareConfigurationResponse struct { + Returnval string `xml:"returnval"` +} + +type BadUsernameSessionEvent struct { + SessionEvent + + IpAddress string `xml:"ipAddress"` +} + +func init() { + t["BadUsernameSessionEvent"] = reflect.TypeOf((*BadUsernameSessionEvent)(nil)).Elem() +} + +type BaseConfigInfo struct { + DynamicData + + Id ID `xml:"id"` + Name string `xml:"name"` + CreateTime time.Time `xml:"createTime"` + KeepAfterDeleteVm *bool `xml:"keepAfterDeleteVm"` + RelocationDisabled *bool `xml:"relocationDisabled"` + NativeSnapshotSupported *bool `xml:"nativeSnapshotSupported"` + ChangedBlockTrackingEnabled *bool `xml:"changedBlockTrackingEnabled"` + Backing BaseBaseConfigInfoBackingInfo `xml:"backing,typeattr"` + Iofilter []string `xml:"iofilter,omitempty"` +} + +func init() { + t["BaseConfigInfo"] = reflect.TypeOf((*BaseConfigInfo)(nil)).Elem() +} + +type BaseConfigInfoBackingInfo struct { + DynamicData + + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["BaseConfigInfoBackingInfo"] = reflect.TypeOf((*BaseConfigInfoBackingInfo)(nil)).Elem() +} + +type BaseConfigInfoDiskFileBackingInfo struct { + BaseConfigInfoFileBackingInfo + + ProvisioningType string `xml:"provisioningType"` +} + +func init() { + t["BaseConfigInfoDiskFileBackingInfo"] = reflect.TypeOf((*BaseConfigInfoDiskFileBackingInfo)(nil)).Elem() +} + +type BaseConfigInfoFileBackingInfo struct { + BaseConfigInfoBackingInfo + + FilePath string `xml:"filePath"` + BackingObjectId string `xml:"backingObjectId,omitempty"` + Parent BaseBaseConfigInfoFileBackingInfo `xml:"parent,omitempty,typeattr"` + DeltaSizeInMB int64 `xml:"deltaSizeInMB,omitempty"` + KeyId *CryptoKeyId `xml:"keyId,omitempty"` +} + +func init() { + t["BaseConfigInfoFileBackingInfo"] = reflect.TypeOf((*BaseConfigInfoFileBackingInfo)(nil)).Elem() +} + +type BaseConfigInfoRawDiskMappingBackingInfo struct { + BaseConfigInfoFileBackingInfo + + LunUuid string `xml:"lunUuid"` + CompatibilityMode string `xml:"compatibilityMode"` +} + +func init() { + t["BaseConfigInfoRawDiskMappingBackingInfo"] = reflect.TypeOf((*BaseConfigInfoRawDiskMappingBackingInfo)(nil)).Elem() +} + +type BatchAddHostsToClusterRequestType struct { + This ManagedObjectReference `xml:"_this"` + Cluster ManagedObjectReference `xml:"cluster"` + NewHosts []FolderNewHostSpec `xml:"newHosts,omitempty"` + ExistingHosts []ManagedObjectReference `xml:"existingHosts,omitempty"` + CompResSpec BaseComputeResourceConfigSpec `xml:"compResSpec,omitempty,typeattr"` + DesiredState string `xml:"desiredState,omitempty"` +} + +func init() { + t["BatchAddHostsToClusterRequestType"] = reflect.TypeOf((*BatchAddHostsToClusterRequestType)(nil)).Elem() +} + +type BatchAddHostsToCluster_Task BatchAddHostsToClusterRequestType + +func init() { + t["BatchAddHostsToCluster_Task"] = reflect.TypeOf((*BatchAddHostsToCluster_Task)(nil)).Elem() +} + +type BatchAddHostsToCluster_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type BatchAddStandaloneHostsRequestType struct { + This ManagedObjectReference `xml:"_this"` + NewHosts []FolderNewHostSpec `xml:"newHosts,omitempty"` + CompResSpec BaseComputeResourceConfigSpec `xml:"compResSpec,omitempty,typeattr"` + AddConnected bool `xml:"addConnected"` +} + +func init() { + t["BatchAddStandaloneHostsRequestType"] = reflect.TypeOf((*BatchAddStandaloneHostsRequestType)(nil)).Elem() +} + +type BatchAddStandaloneHosts_Task BatchAddStandaloneHostsRequestType + +func init() { + t["BatchAddStandaloneHosts_Task"] = reflect.TypeOf((*BatchAddStandaloneHosts_Task)(nil)).Elem() +} + +type BatchAddStandaloneHosts_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type BatchQueryConnectInfo BatchQueryConnectInfoRequestType + +func init() { + t["BatchQueryConnectInfo"] = reflect.TypeOf((*BatchQueryConnectInfo)(nil)).Elem() +} + +type BatchQueryConnectInfoRequestType struct { + This ManagedObjectReference `xml:"_this"` + HostSpecs []HostConnectSpec `xml:"hostSpecs,omitempty"` +} + +func init() { + t["BatchQueryConnectInfoRequestType"] = reflect.TypeOf((*BatchQueryConnectInfoRequestType)(nil)).Elem() +} + +type BatchQueryConnectInfoResponse struct { + Returnval []DatacenterBasicConnectInfo `xml:"returnval,omitempty"` +} + +type BatchResult struct { + DynamicData + + Result string `xml:"result"` + HostKey string `xml:"hostKey"` + Ds *ManagedObjectReference `xml:"ds,omitempty"` + Fault *LocalizedMethodFault `xml:"fault,omitempty"` +} + +func init() { + t["BatchResult"] = reflect.TypeOf((*BatchResult)(nil)).Elem() +} + +type BindVnic BindVnicRequestType + +func init() { + t["BindVnic"] = reflect.TypeOf((*BindVnic)(nil)).Elem() +} + +type BindVnicRequestType struct { + This ManagedObjectReference `xml:"_this"` + IScsiHbaName string `xml:"iScsiHbaName"` + VnicDevice string `xml:"vnicDevice"` +} + +func init() { + t["BindVnicRequestType"] = reflect.TypeOf((*BindVnicRequestType)(nil)).Elem() +} + +type BindVnicResponse struct { +} + +type BlockedByFirewall struct { + HostConfigFault +} + +func init() { + t["BlockedByFirewall"] = reflect.TypeOf((*BlockedByFirewall)(nil)).Elem() +} + +type BlockedByFirewallFault BlockedByFirewall + +func init() { + t["BlockedByFirewallFault"] = reflect.TypeOf((*BlockedByFirewallFault)(nil)).Elem() +} + +type BoolOption struct { + OptionType + + Supported bool `xml:"supported"` + DefaultValue bool `xml:"defaultValue"` +} + +func init() { + t["BoolOption"] = reflect.TypeOf((*BoolOption)(nil)).Elem() +} + +type BoolPolicy struct { + InheritablePolicy + + Value *bool `xml:"value"` +} + +func init() { + t["BoolPolicy"] = reflect.TypeOf((*BoolPolicy)(nil)).Elem() +} + +type BrowseDiagnosticLog BrowseDiagnosticLogRequestType + +func init() { + t["BrowseDiagnosticLog"] = reflect.TypeOf((*BrowseDiagnosticLog)(nil)).Elem() +} + +type BrowseDiagnosticLogRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host *ManagedObjectReference `xml:"host,omitempty"` + Key string `xml:"key"` + Start int32 `xml:"start,omitempty"` + Lines int32 `xml:"lines,omitempty"` +} + +func init() { + t["BrowseDiagnosticLogRequestType"] = reflect.TypeOf((*BrowseDiagnosticLogRequestType)(nil)).Elem() +} + +type BrowseDiagnosticLogResponse struct { + Returnval DiagnosticManagerLogHeader `xml:"returnval"` +} + +type CAMServerRefusedConnection struct { + InvalidCAMServer +} + +func init() { + t["CAMServerRefusedConnection"] = reflect.TypeOf((*CAMServerRefusedConnection)(nil)).Elem() +} + +type CAMServerRefusedConnectionFault CAMServerRefusedConnection + +func init() { + t["CAMServerRefusedConnectionFault"] = reflect.TypeOf((*CAMServerRefusedConnectionFault)(nil)).Elem() +} + +type CanProvisionObjects CanProvisionObjectsRequestType + +func init() { + t["CanProvisionObjects"] = reflect.TypeOf((*CanProvisionObjects)(nil)).Elem() +} + +type CanProvisionObjectsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Npbs []VsanNewPolicyBatch `xml:"npbs"` + IgnoreSatisfiability *bool `xml:"ignoreSatisfiability"` +} + +func init() { + t["CanProvisionObjectsRequestType"] = reflect.TypeOf((*CanProvisionObjectsRequestType)(nil)).Elem() +} + +type CanProvisionObjectsResponse struct { + Returnval []VsanPolicySatisfiability `xml:"returnval"` +} + +type CancelRecommendation CancelRecommendationRequestType + +func init() { + t["CancelRecommendation"] = reflect.TypeOf((*CancelRecommendation)(nil)).Elem() +} + +type CancelRecommendationRequestType struct { + This ManagedObjectReference `xml:"_this"` + Key string `xml:"key"` +} + +func init() { + t["CancelRecommendationRequestType"] = reflect.TypeOf((*CancelRecommendationRequestType)(nil)).Elem() +} + +type CancelRecommendationResponse struct { +} + +type CancelRetrievePropertiesEx CancelRetrievePropertiesExRequestType + +func init() { + t["CancelRetrievePropertiesEx"] = reflect.TypeOf((*CancelRetrievePropertiesEx)(nil)).Elem() +} + +type CancelRetrievePropertiesExRequestType struct { + This ManagedObjectReference `xml:"_this"` + Token string `xml:"token"` +} + +func init() { + t["CancelRetrievePropertiesExRequestType"] = reflect.TypeOf((*CancelRetrievePropertiesExRequestType)(nil)).Elem() +} + +type CancelRetrievePropertiesExResponse struct { +} + +type CancelStorageDrsRecommendation CancelStorageDrsRecommendationRequestType + +func init() { + t["CancelStorageDrsRecommendation"] = reflect.TypeOf((*CancelStorageDrsRecommendation)(nil)).Elem() +} + +type CancelStorageDrsRecommendationRequestType struct { + This ManagedObjectReference `xml:"_this"` + Key []string `xml:"key"` +} + +func init() { + t["CancelStorageDrsRecommendationRequestType"] = reflect.TypeOf((*CancelStorageDrsRecommendationRequestType)(nil)).Elem() +} + +type CancelStorageDrsRecommendationResponse struct { +} + +type CancelTask CancelTaskRequestType + +func init() { + t["CancelTask"] = reflect.TypeOf((*CancelTask)(nil)).Elem() +} + +type CancelTaskRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["CancelTaskRequestType"] = reflect.TypeOf((*CancelTaskRequestType)(nil)).Elem() +} + +type CancelTaskResponse struct { +} + +type CancelWaitForUpdates CancelWaitForUpdatesRequestType + +func init() { + t["CancelWaitForUpdates"] = reflect.TypeOf((*CancelWaitForUpdates)(nil)).Elem() +} + +type CancelWaitForUpdatesRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["CancelWaitForUpdatesRequestType"] = reflect.TypeOf((*CancelWaitForUpdatesRequestType)(nil)).Elem() +} + +type CancelWaitForUpdatesResponse struct { +} + +type CanceledHostOperationEvent struct { + HostEvent +} + +func init() { + t["CanceledHostOperationEvent"] = reflect.TypeOf((*CanceledHostOperationEvent)(nil)).Elem() +} + +type CannotAccessFile struct { + FileFault +} + +func init() { + t["CannotAccessFile"] = reflect.TypeOf((*CannotAccessFile)(nil)).Elem() +} + +type CannotAccessFileFault CannotAccessFile + +func init() { + t["CannotAccessFileFault"] = reflect.TypeOf((*CannotAccessFileFault)(nil)).Elem() +} + +type CannotAccessLocalSource struct { + VimFault +} + +func init() { + t["CannotAccessLocalSource"] = reflect.TypeOf((*CannotAccessLocalSource)(nil)).Elem() +} + +type CannotAccessLocalSourceFault CannotAccessLocalSource + +func init() { + t["CannotAccessLocalSourceFault"] = reflect.TypeOf((*CannotAccessLocalSourceFault)(nil)).Elem() +} + +type CannotAccessNetwork struct { + CannotAccessVmDevice + + Network *ManagedObjectReference `xml:"network,omitempty"` +} + +func init() { + t["CannotAccessNetwork"] = reflect.TypeOf((*CannotAccessNetwork)(nil)).Elem() +} + +type CannotAccessNetworkFault BaseCannotAccessNetwork + +func init() { + t["CannotAccessNetworkFault"] = reflect.TypeOf((*CannotAccessNetworkFault)(nil)).Elem() +} + +type CannotAccessVmComponent struct { + VmConfigFault +} + +func init() { + t["CannotAccessVmComponent"] = reflect.TypeOf((*CannotAccessVmComponent)(nil)).Elem() +} + +type CannotAccessVmComponentFault BaseCannotAccessVmComponent + +func init() { + t["CannotAccessVmComponentFault"] = reflect.TypeOf((*CannotAccessVmComponentFault)(nil)).Elem() +} + +type CannotAccessVmConfig struct { + CannotAccessVmComponent + + Reason LocalizedMethodFault `xml:"reason"` +} + +func init() { + t["CannotAccessVmConfig"] = reflect.TypeOf((*CannotAccessVmConfig)(nil)).Elem() +} + +type CannotAccessVmConfigFault CannotAccessVmConfig + +func init() { + t["CannotAccessVmConfigFault"] = reflect.TypeOf((*CannotAccessVmConfigFault)(nil)).Elem() +} + +type CannotAccessVmDevice struct { + CannotAccessVmComponent + + Device string `xml:"device"` + Backing string `xml:"backing"` + Connected bool `xml:"connected"` +} + +func init() { + t["CannotAccessVmDevice"] = reflect.TypeOf((*CannotAccessVmDevice)(nil)).Elem() +} + +type CannotAccessVmDeviceFault BaseCannotAccessVmDevice + +func init() { + t["CannotAccessVmDeviceFault"] = reflect.TypeOf((*CannotAccessVmDeviceFault)(nil)).Elem() +} + +type CannotAccessVmDisk struct { + CannotAccessVmDevice + + Fault LocalizedMethodFault `xml:"fault"` +} + +func init() { + t["CannotAccessVmDisk"] = reflect.TypeOf((*CannotAccessVmDisk)(nil)).Elem() +} + +type CannotAccessVmDiskFault BaseCannotAccessVmDisk + +func init() { + t["CannotAccessVmDiskFault"] = reflect.TypeOf((*CannotAccessVmDiskFault)(nil)).Elem() +} + +type CannotAddHostWithFTVmAsStandalone struct { + HostConnectFault +} + +func init() { + t["CannotAddHostWithFTVmAsStandalone"] = reflect.TypeOf((*CannotAddHostWithFTVmAsStandalone)(nil)).Elem() +} + +type CannotAddHostWithFTVmAsStandaloneFault CannotAddHostWithFTVmAsStandalone + +func init() { + t["CannotAddHostWithFTVmAsStandaloneFault"] = reflect.TypeOf((*CannotAddHostWithFTVmAsStandaloneFault)(nil)).Elem() +} + +type CannotAddHostWithFTVmToDifferentCluster struct { + HostConnectFault +} + +func init() { + t["CannotAddHostWithFTVmToDifferentCluster"] = reflect.TypeOf((*CannotAddHostWithFTVmToDifferentCluster)(nil)).Elem() +} + +type CannotAddHostWithFTVmToDifferentClusterFault CannotAddHostWithFTVmToDifferentCluster + +func init() { + t["CannotAddHostWithFTVmToDifferentClusterFault"] = reflect.TypeOf((*CannotAddHostWithFTVmToDifferentClusterFault)(nil)).Elem() +} + +type CannotAddHostWithFTVmToNonHACluster struct { + HostConnectFault +} + +func init() { + t["CannotAddHostWithFTVmToNonHACluster"] = reflect.TypeOf((*CannotAddHostWithFTVmToNonHACluster)(nil)).Elem() +} + +type CannotAddHostWithFTVmToNonHAClusterFault CannotAddHostWithFTVmToNonHACluster + +func init() { + t["CannotAddHostWithFTVmToNonHAClusterFault"] = reflect.TypeOf((*CannotAddHostWithFTVmToNonHAClusterFault)(nil)).Elem() +} + +type CannotChangeDrsBehaviorForFtSecondary struct { + VmFaultToleranceIssue + + Vm ManagedObjectReference `xml:"vm"` + VmName string `xml:"vmName"` +} + +func init() { + t["CannotChangeDrsBehaviorForFtSecondary"] = reflect.TypeOf((*CannotChangeDrsBehaviorForFtSecondary)(nil)).Elem() +} + +type CannotChangeDrsBehaviorForFtSecondaryFault CannotChangeDrsBehaviorForFtSecondary + +func init() { + t["CannotChangeDrsBehaviorForFtSecondaryFault"] = reflect.TypeOf((*CannotChangeDrsBehaviorForFtSecondaryFault)(nil)).Elem() +} + +type CannotChangeHaSettingsForFtSecondary struct { + VmFaultToleranceIssue + + Vm ManagedObjectReference `xml:"vm"` + VmName string `xml:"vmName"` +} + +func init() { + t["CannotChangeHaSettingsForFtSecondary"] = reflect.TypeOf((*CannotChangeHaSettingsForFtSecondary)(nil)).Elem() +} + +type CannotChangeHaSettingsForFtSecondaryFault CannotChangeHaSettingsForFtSecondary + +func init() { + t["CannotChangeHaSettingsForFtSecondaryFault"] = reflect.TypeOf((*CannotChangeHaSettingsForFtSecondaryFault)(nil)).Elem() +} + +type CannotChangeVsanClusterUuid struct { + VsanFault +} + +func init() { + t["CannotChangeVsanClusterUuid"] = reflect.TypeOf((*CannotChangeVsanClusterUuid)(nil)).Elem() +} + +type CannotChangeVsanClusterUuidFault CannotChangeVsanClusterUuid + +func init() { + t["CannotChangeVsanClusterUuidFault"] = reflect.TypeOf((*CannotChangeVsanClusterUuidFault)(nil)).Elem() +} + +type CannotChangeVsanNodeUuid struct { + VsanFault +} + +func init() { + t["CannotChangeVsanNodeUuid"] = reflect.TypeOf((*CannotChangeVsanNodeUuid)(nil)).Elem() +} + +type CannotChangeVsanNodeUuidFault CannotChangeVsanNodeUuid + +func init() { + t["CannotChangeVsanNodeUuidFault"] = reflect.TypeOf((*CannotChangeVsanNodeUuidFault)(nil)).Elem() +} + +type CannotComputeFTCompatibleHosts struct { + VmFaultToleranceIssue + + Vm ManagedObjectReference `xml:"vm"` + VmName string `xml:"vmName"` +} + +func init() { + t["CannotComputeFTCompatibleHosts"] = reflect.TypeOf((*CannotComputeFTCompatibleHosts)(nil)).Elem() +} + +type CannotComputeFTCompatibleHostsFault CannotComputeFTCompatibleHosts + +func init() { + t["CannotComputeFTCompatibleHostsFault"] = reflect.TypeOf((*CannotComputeFTCompatibleHostsFault)(nil)).Elem() +} + +type CannotCreateFile struct { + FileFault +} + +func init() { + t["CannotCreateFile"] = reflect.TypeOf((*CannotCreateFile)(nil)).Elem() +} + +type CannotCreateFileFault CannotCreateFile + +func init() { + t["CannotCreateFileFault"] = reflect.TypeOf((*CannotCreateFileFault)(nil)).Elem() +} + +type CannotDecryptPasswords struct { + CustomizationFault +} + +func init() { + t["CannotDecryptPasswords"] = reflect.TypeOf((*CannotDecryptPasswords)(nil)).Elem() +} + +type CannotDecryptPasswordsFault CannotDecryptPasswords + +func init() { + t["CannotDecryptPasswordsFault"] = reflect.TypeOf((*CannotDecryptPasswordsFault)(nil)).Elem() +} + +type CannotDeleteFile struct { + FileFault +} + +func init() { + t["CannotDeleteFile"] = reflect.TypeOf((*CannotDeleteFile)(nil)).Elem() +} + +type CannotDeleteFileFault CannotDeleteFile + +func init() { + t["CannotDeleteFileFault"] = reflect.TypeOf((*CannotDeleteFileFault)(nil)).Elem() +} + +type CannotDisableDrsOnClustersWithVApps struct { + RuntimeFault +} + +func init() { + t["CannotDisableDrsOnClustersWithVApps"] = reflect.TypeOf((*CannotDisableDrsOnClustersWithVApps)(nil)).Elem() +} + +type CannotDisableDrsOnClustersWithVAppsFault CannotDisableDrsOnClustersWithVApps + +func init() { + t["CannotDisableDrsOnClustersWithVAppsFault"] = reflect.TypeOf((*CannotDisableDrsOnClustersWithVAppsFault)(nil)).Elem() +} + +type CannotDisableSnapshot struct { + VmConfigFault +} + +func init() { + t["CannotDisableSnapshot"] = reflect.TypeOf((*CannotDisableSnapshot)(nil)).Elem() +} + +type CannotDisableSnapshotFault CannotDisableSnapshot + +func init() { + t["CannotDisableSnapshotFault"] = reflect.TypeOf((*CannotDisableSnapshotFault)(nil)).Elem() +} + +type CannotDisconnectHostWithFaultToleranceVm struct { + VimFault + + HostName string `xml:"hostName"` +} + +func init() { + t["CannotDisconnectHostWithFaultToleranceVm"] = reflect.TypeOf((*CannotDisconnectHostWithFaultToleranceVm)(nil)).Elem() +} + +type CannotDisconnectHostWithFaultToleranceVmFault CannotDisconnectHostWithFaultToleranceVm + +func init() { + t["CannotDisconnectHostWithFaultToleranceVmFault"] = reflect.TypeOf((*CannotDisconnectHostWithFaultToleranceVmFault)(nil)).Elem() +} + +type CannotEnableVmcpForCluster struct { + VimFault + + Host *ManagedObjectReference `xml:"host,omitempty"` + HostName string `xml:"hostName,omitempty"` + Reason string `xml:"reason,omitempty"` +} + +func init() { + t["CannotEnableVmcpForCluster"] = reflect.TypeOf((*CannotEnableVmcpForCluster)(nil)).Elem() +} + +type CannotEnableVmcpForClusterFault CannotEnableVmcpForCluster + +func init() { + t["CannotEnableVmcpForClusterFault"] = reflect.TypeOf((*CannotEnableVmcpForClusterFault)(nil)).Elem() +} + +type CannotModifyConfigCpuRequirements struct { + MigrationFault +} + +func init() { + t["CannotModifyConfigCpuRequirements"] = reflect.TypeOf((*CannotModifyConfigCpuRequirements)(nil)).Elem() +} + +type CannotModifyConfigCpuRequirementsFault CannotModifyConfigCpuRequirements + +func init() { + t["CannotModifyConfigCpuRequirementsFault"] = reflect.TypeOf((*CannotModifyConfigCpuRequirementsFault)(nil)).Elem() +} + +type CannotMoveFaultToleranceVm struct { + VimFault + + MoveType string `xml:"moveType"` + VmName string `xml:"vmName"` +} + +func init() { + t["CannotMoveFaultToleranceVm"] = reflect.TypeOf((*CannotMoveFaultToleranceVm)(nil)).Elem() +} + +type CannotMoveFaultToleranceVmFault CannotMoveFaultToleranceVm + +func init() { + t["CannotMoveFaultToleranceVmFault"] = reflect.TypeOf((*CannotMoveFaultToleranceVmFault)(nil)).Elem() +} + +type CannotMoveHostWithFaultToleranceVm struct { + VimFault +} + +func init() { + t["CannotMoveHostWithFaultToleranceVm"] = reflect.TypeOf((*CannotMoveHostWithFaultToleranceVm)(nil)).Elem() +} + +type CannotMoveHostWithFaultToleranceVmFault CannotMoveHostWithFaultToleranceVm + +func init() { + t["CannotMoveHostWithFaultToleranceVmFault"] = reflect.TypeOf((*CannotMoveHostWithFaultToleranceVmFault)(nil)).Elem() +} + +type CannotMoveVmWithDeltaDisk struct { + MigrationFault + + Device string `xml:"device"` +} + +func init() { + t["CannotMoveVmWithDeltaDisk"] = reflect.TypeOf((*CannotMoveVmWithDeltaDisk)(nil)).Elem() +} + +type CannotMoveVmWithDeltaDiskFault CannotMoveVmWithDeltaDisk + +func init() { + t["CannotMoveVmWithDeltaDiskFault"] = reflect.TypeOf((*CannotMoveVmWithDeltaDiskFault)(nil)).Elem() +} + +type CannotMoveVmWithNativeDeltaDisk struct { + MigrationFault +} + +func init() { + t["CannotMoveVmWithNativeDeltaDisk"] = reflect.TypeOf((*CannotMoveVmWithNativeDeltaDisk)(nil)).Elem() +} + +type CannotMoveVmWithNativeDeltaDiskFault CannotMoveVmWithNativeDeltaDisk + +func init() { + t["CannotMoveVmWithNativeDeltaDiskFault"] = reflect.TypeOf((*CannotMoveVmWithNativeDeltaDiskFault)(nil)).Elem() +} + +type CannotMoveVsanEnabledHost struct { + VsanFault +} + +func init() { + t["CannotMoveVsanEnabledHost"] = reflect.TypeOf((*CannotMoveVsanEnabledHost)(nil)).Elem() +} + +type CannotMoveVsanEnabledHostFault BaseCannotMoveVsanEnabledHost + +func init() { + t["CannotMoveVsanEnabledHostFault"] = reflect.TypeOf((*CannotMoveVsanEnabledHostFault)(nil)).Elem() +} + +type CannotPlaceWithoutPrerequisiteMoves struct { + VimFault +} + +func init() { + t["CannotPlaceWithoutPrerequisiteMoves"] = reflect.TypeOf((*CannotPlaceWithoutPrerequisiteMoves)(nil)).Elem() +} + +type CannotPlaceWithoutPrerequisiteMovesFault CannotPlaceWithoutPrerequisiteMoves + +func init() { + t["CannotPlaceWithoutPrerequisiteMovesFault"] = reflect.TypeOf((*CannotPlaceWithoutPrerequisiteMovesFault)(nil)).Elem() +} + +type CannotPowerOffVmInCluster struct { + InvalidState + + Operation string `xml:"operation"` + Vm ManagedObjectReference `xml:"vm"` + VmName string `xml:"vmName"` +} + +func init() { + t["CannotPowerOffVmInCluster"] = reflect.TypeOf((*CannotPowerOffVmInCluster)(nil)).Elem() +} + +type CannotPowerOffVmInClusterFault CannotPowerOffVmInCluster + +func init() { + t["CannotPowerOffVmInClusterFault"] = reflect.TypeOf((*CannotPowerOffVmInClusterFault)(nil)).Elem() +} + +type CannotReconfigureVsanWhenHaEnabled struct { + VsanFault +} + +func init() { + t["CannotReconfigureVsanWhenHaEnabled"] = reflect.TypeOf((*CannotReconfigureVsanWhenHaEnabled)(nil)).Elem() +} + +type CannotReconfigureVsanWhenHaEnabledFault CannotReconfigureVsanWhenHaEnabled + +func init() { + t["CannotReconfigureVsanWhenHaEnabledFault"] = reflect.TypeOf((*CannotReconfigureVsanWhenHaEnabledFault)(nil)).Elem() +} + +type CannotUseNetwork struct { + VmConfigFault + + Device string `xml:"device"` + Backing string `xml:"backing"` + Connected bool `xml:"connected"` + Reason string `xml:"reason"` + Network *ManagedObjectReference `xml:"network,omitempty"` +} + +func init() { + t["CannotUseNetwork"] = reflect.TypeOf((*CannotUseNetwork)(nil)).Elem() +} + +type CannotUseNetworkFault CannotUseNetwork + +func init() { + t["CannotUseNetworkFault"] = reflect.TypeOf((*CannotUseNetworkFault)(nil)).Elem() +} + +type Capability struct { + DynamicData + + ProvisioningSupported bool `xml:"provisioningSupported"` + MultiHostSupported bool `xml:"multiHostSupported"` + UserShellAccessSupported bool `xml:"userShellAccessSupported"` + SupportedEVCMode []EVCMode `xml:"supportedEVCMode,omitempty"` + NetworkBackupAndRestoreSupported *bool `xml:"networkBackupAndRestoreSupported"` + FtDrsWithoutEvcSupported *bool `xml:"ftDrsWithoutEvcSupported"` + HciWorkflowSupported *bool `xml:"hciWorkflowSupported"` + ComputePolicyVersion int32 `xml:"computePolicyVersion,omitempty"` + ClusterPlacementSupported *bool `xml:"clusterPlacementSupported"` + LifecycleManagementSupported *bool `xml:"lifecycleManagementSupported"` + ScalableSharesSupported *bool `xml:"scalableSharesSupported"` +} + +func init() { + t["Capability"] = reflect.TypeOf((*Capability)(nil)).Elem() +} + +type CertMgrRefreshCACertificatesAndCRLsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host []ManagedObjectReference `xml:"host"` +} + +func init() { + t["CertMgrRefreshCACertificatesAndCRLsRequestType"] = reflect.TypeOf((*CertMgrRefreshCACertificatesAndCRLsRequestType)(nil)).Elem() +} + +type CertMgrRefreshCACertificatesAndCRLs_Task CertMgrRefreshCACertificatesAndCRLsRequestType + +func init() { + t["CertMgrRefreshCACertificatesAndCRLs_Task"] = reflect.TypeOf((*CertMgrRefreshCACertificatesAndCRLs_Task)(nil)).Elem() +} + +type CertMgrRefreshCACertificatesAndCRLs_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CertMgrRefreshCertificatesRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host []ManagedObjectReference `xml:"host"` +} + +func init() { + t["CertMgrRefreshCertificatesRequestType"] = reflect.TypeOf((*CertMgrRefreshCertificatesRequestType)(nil)).Elem() +} + +type CertMgrRefreshCertificates_Task CertMgrRefreshCertificatesRequestType + +func init() { + t["CertMgrRefreshCertificates_Task"] = reflect.TypeOf((*CertMgrRefreshCertificates_Task)(nil)).Elem() +} + +type CertMgrRefreshCertificates_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CertMgrRevokeCertificatesRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host []ManagedObjectReference `xml:"host"` +} + +func init() { + t["CertMgrRevokeCertificatesRequestType"] = reflect.TypeOf((*CertMgrRevokeCertificatesRequestType)(nil)).Elem() +} + +type CertMgrRevokeCertificates_Task CertMgrRevokeCertificatesRequestType + +func init() { + t["CertMgrRevokeCertificates_Task"] = reflect.TypeOf((*CertMgrRevokeCertificates_Task)(nil)).Elem() +} + +type CertMgrRevokeCertificates_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ChangeAccessMode ChangeAccessModeRequestType + +func init() { + t["ChangeAccessMode"] = reflect.TypeOf((*ChangeAccessMode)(nil)).Elem() +} + +type ChangeAccessModeRequestType struct { + This ManagedObjectReference `xml:"_this"` + Principal string `xml:"principal"` + IsGroup bool `xml:"isGroup"` + AccessMode HostAccessMode `xml:"accessMode"` +} + +func init() { + t["ChangeAccessModeRequestType"] = reflect.TypeOf((*ChangeAccessModeRequestType)(nil)).Elem() +} + +type ChangeAccessModeResponse struct { +} + +type ChangeFileAttributesInGuest ChangeFileAttributesInGuestRequestType + +func init() { + t["ChangeFileAttributesInGuest"] = reflect.TypeOf((*ChangeFileAttributesInGuest)(nil)).Elem() +} + +type ChangeFileAttributesInGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + GuestFilePath string `xml:"guestFilePath"` + FileAttributes BaseGuestFileAttributes `xml:"fileAttributes,typeattr"` +} + +func init() { + t["ChangeFileAttributesInGuestRequestType"] = reflect.TypeOf((*ChangeFileAttributesInGuestRequestType)(nil)).Elem() +} + +type ChangeFileAttributesInGuestResponse struct { +} + +type ChangeKeyRequestType struct { + This ManagedObjectReference `xml:"_this"` + NewKey CryptoKeyPlain `xml:"newKey"` +} + +func init() { + t["ChangeKeyRequestType"] = reflect.TypeOf((*ChangeKeyRequestType)(nil)).Elem() +} + +type ChangeKey_Task ChangeKeyRequestType + +func init() { + t["ChangeKey_Task"] = reflect.TypeOf((*ChangeKey_Task)(nil)).Elem() +} + +type ChangeKey_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ChangeLockdownMode ChangeLockdownModeRequestType + +func init() { + t["ChangeLockdownMode"] = reflect.TypeOf((*ChangeLockdownMode)(nil)).Elem() +} + +type ChangeLockdownModeRequestType struct { + This ManagedObjectReference `xml:"_this"` + Mode HostLockdownMode `xml:"mode"` +} + +func init() { + t["ChangeLockdownModeRequestType"] = reflect.TypeOf((*ChangeLockdownModeRequestType)(nil)).Elem() +} + +type ChangeLockdownModeResponse struct { +} + +type ChangeNFSUserPassword ChangeNFSUserPasswordRequestType + +func init() { + t["ChangeNFSUserPassword"] = reflect.TypeOf((*ChangeNFSUserPassword)(nil)).Elem() +} + +type ChangeNFSUserPasswordRequestType struct { + This ManagedObjectReference `xml:"_this"` + Password string `xml:"password"` +} + +func init() { + t["ChangeNFSUserPasswordRequestType"] = reflect.TypeOf((*ChangeNFSUserPasswordRequestType)(nil)).Elem() +} + +type ChangeNFSUserPasswordResponse struct { +} + +type ChangeOwner ChangeOwnerRequestType + +func init() { + t["ChangeOwner"] = reflect.TypeOf((*ChangeOwner)(nil)).Elem() +} + +type ChangeOwnerRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` + Owner string `xml:"owner"` +} + +func init() { + t["ChangeOwnerRequestType"] = reflect.TypeOf((*ChangeOwnerRequestType)(nil)).Elem() +} + +type ChangeOwnerResponse struct { +} + +type ChangePassword ChangePasswordRequestType + +func init() { + t["ChangePassword"] = reflect.TypeOf((*ChangePassword)(nil)).Elem() +} + +type ChangePasswordRequestType struct { + This ManagedObjectReference `xml:"_this"` + User string `xml:"user"` + OldPassword string `xml:"oldPassword"` + NewPassword string `xml:"newPassword"` +} + +func init() { + t["ChangePasswordRequestType"] = reflect.TypeOf((*ChangePasswordRequestType)(nil)).Elem() +} + +type ChangePasswordResponse struct { +} + +type ChangesInfoEventArgument struct { + DynamicData + + Modified string `xml:"modified,omitempty"` + Added string `xml:"added,omitempty"` + Deleted string `xml:"deleted,omitempty"` +} + +func init() { + t["ChangesInfoEventArgument"] = reflect.TypeOf((*ChangesInfoEventArgument)(nil)).Elem() +} + +type CheckAddHostEvcRequestType struct { + This ManagedObjectReference `xml:"_this"` + CnxSpec HostConnectSpec `xml:"cnxSpec"` +} + +func init() { + t["CheckAddHostEvcRequestType"] = reflect.TypeOf((*CheckAddHostEvcRequestType)(nil)).Elem() +} + +type CheckAddHostEvc_Task CheckAddHostEvcRequestType + +func init() { + t["CheckAddHostEvc_Task"] = reflect.TypeOf((*CheckAddHostEvc_Task)(nil)).Elem() +} + +type CheckAddHostEvc_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CheckAnswerFileStatusRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host []ManagedObjectReference `xml:"host"` +} + +func init() { + t["CheckAnswerFileStatusRequestType"] = reflect.TypeOf((*CheckAnswerFileStatusRequestType)(nil)).Elem() +} + +type CheckAnswerFileStatus_Task CheckAnswerFileStatusRequestType + +func init() { + t["CheckAnswerFileStatus_Task"] = reflect.TypeOf((*CheckAnswerFileStatus_Task)(nil)).Elem() +} + +type CheckAnswerFileStatus_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CheckCloneRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Folder ManagedObjectReference `xml:"folder"` + Name string `xml:"name"` + Spec VirtualMachineCloneSpec `xml:"spec"` + TestType []string `xml:"testType,omitempty"` +} + +func init() { + t["CheckCloneRequestType"] = reflect.TypeOf((*CheckCloneRequestType)(nil)).Elem() +} + +type CheckClone_Task CheckCloneRequestType + +func init() { + t["CheckClone_Task"] = reflect.TypeOf((*CheckClone_Task)(nil)).Elem() +} + +type CheckClone_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CheckCompatibilityRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Host *ManagedObjectReference `xml:"host,omitempty"` + Pool *ManagedObjectReference `xml:"pool,omitempty"` + TestType []string `xml:"testType,omitempty"` +} + +func init() { + t["CheckCompatibilityRequestType"] = reflect.TypeOf((*CheckCompatibilityRequestType)(nil)).Elem() +} + +type CheckCompatibility_Task CheckCompatibilityRequestType + +func init() { + t["CheckCompatibility_Task"] = reflect.TypeOf((*CheckCompatibility_Task)(nil)).Elem() +} + +type CheckCompatibility_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CheckComplianceRequestType struct { + This ManagedObjectReference `xml:"_this"` + Profile []ManagedObjectReference `xml:"profile,omitempty"` + Entity []ManagedObjectReference `xml:"entity,omitempty"` +} + +func init() { + t["CheckComplianceRequestType"] = reflect.TypeOf((*CheckComplianceRequestType)(nil)).Elem() +} + +type CheckCompliance_Task CheckComplianceRequestType + +func init() { + t["CheckCompliance_Task"] = reflect.TypeOf((*CheckCompliance_Task)(nil)).Elem() +} + +type CheckCompliance_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CheckConfigureEvcModeRequestType struct { + This ManagedObjectReference `xml:"_this"` + EvcModeKey string `xml:"evcModeKey"` +} + +func init() { + t["CheckConfigureEvcModeRequestType"] = reflect.TypeOf((*CheckConfigureEvcModeRequestType)(nil)).Elem() +} + +type CheckConfigureEvcMode_Task CheckConfigureEvcModeRequestType + +func init() { + t["CheckConfigureEvcMode_Task"] = reflect.TypeOf((*CheckConfigureEvcMode_Task)(nil)).Elem() +} + +type CheckConfigureEvcMode_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CheckCustomizationResources CheckCustomizationResourcesRequestType + +func init() { + t["CheckCustomizationResources"] = reflect.TypeOf((*CheckCustomizationResources)(nil)).Elem() +} + +type CheckCustomizationResourcesRequestType struct { + This ManagedObjectReference `xml:"_this"` + GuestOs string `xml:"guestOs"` +} + +func init() { + t["CheckCustomizationResourcesRequestType"] = reflect.TypeOf((*CheckCustomizationResourcesRequestType)(nil)).Elem() +} + +type CheckCustomizationResourcesResponse struct { +} + +type CheckCustomizationSpec CheckCustomizationSpecRequestType + +func init() { + t["CheckCustomizationSpec"] = reflect.TypeOf((*CheckCustomizationSpec)(nil)).Elem() +} + +type CheckCustomizationSpecRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec CustomizationSpec `xml:"spec"` +} + +func init() { + t["CheckCustomizationSpecRequestType"] = reflect.TypeOf((*CheckCustomizationSpecRequestType)(nil)).Elem() +} + +type CheckCustomizationSpecResponse struct { +} + +type CheckForUpdates CheckForUpdatesRequestType + +func init() { + t["CheckForUpdates"] = reflect.TypeOf((*CheckForUpdates)(nil)).Elem() +} + +type CheckForUpdatesRequestType struct { + This ManagedObjectReference `xml:"_this"` + Version string `xml:"version,omitempty"` +} + +func init() { + t["CheckForUpdatesRequestType"] = reflect.TypeOf((*CheckForUpdatesRequestType)(nil)).Elem() +} + +type CheckForUpdatesResponse struct { + Returnval *UpdateSet `xml:"returnval,omitempty"` +} + +type CheckHostPatchRequestType struct { + This ManagedObjectReference `xml:"_this"` + MetaUrls []string `xml:"metaUrls,omitempty"` + BundleUrls []string `xml:"bundleUrls,omitempty"` + Spec *HostPatchManagerPatchManagerOperationSpec `xml:"spec,omitempty"` +} + +func init() { + t["CheckHostPatchRequestType"] = reflect.TypeOf((*CheckHostPatchRequestType)(nil)).Elem() +} + +type CheckHostPatch_Task CheckHostPatchRequestType + +func init() { + t["CheckHostPatch_Task"] = reflect.TypeOf((*CheckHostPatch_Task)(nil)).Elem() +} + +type CheckHostPatch_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CheckInstantCloneRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Spec VirtualMachineInstantCloneSpec `xml:"spec"` + TestType []string `xml:"testType,omitempty"` +} + +func init() { + t["CheckInstantCloneRequestType"] = reflect.TypeOf((*CheckInstantCloneRequestType)(nil)).Elem() +} + +type CheckInstantClone_Task CheckInstantCloneRequestType + +func init() { + t["CheckInstantClone_Task"] = reflect.TypeOf((*CheckInstantClone_Task)(nil)).Elem() +} + +type CheckInstantClone_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CheckLicenseFeature CheckLicenseFeatureRequestType + +func init() { + t["CheckLicenseFeature"] = reflect.TypeOf((*CheckLicenseFeature)(nil)).Elem() +} + +type CheckLicenseFeatureRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host *ManagedObjectReference `xml:"host,omitempty"` + FeatureKey string `xml:"featureKey"` +} + +func init() { + t["CheckLicenseFeatureRequestType"] = reflect.TypeOf((*CheckLicenseFeatureRequestType)(nil)).Elem() +} + +type CheckLicenseFeatureResponse struct { + Returnval bool `xml:"returnval"` +} + +type CheckMigrateRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Host *ManagedObjectReference `xml:"host,omitempty"` + Pool *ManagedObjectReference `xml:"pool,omitempty"` + State VirtualMachinePowerState `xml:"state,omitempty"` + TestType []string `xml:"testType,omitempty"` +} + +func init() { + t["CheckMigrateRequestType"] = reflect.TypeOf((*CheckMigrateRequestType)(nil)).Elem() +} + +type CheckMigrate_Task CheckMigrateRequestType + +func init() { + t["CheckMigrate_Task"] = reflect.TypeOf((*CheckMigrate_Task)(nil)).Elem() +} + +type CheckMigrate_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CheckPowerOnRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Host *ManagedObjectReference `xml:"host,omitempty"` + Pool *ManagedObjectReference `xml:"pool,omitempty"` + TestType []string `xml:"testType,omitempty"` +} + +func init() { + t["CheckPowerOnRequestType"] = reflect.TypeOf((*CheckPowerOnRequestType)(nil)).Elem() +} + +type CheckPowerOn_Task CheckPowerOnRequestType + +func init() { + t["CheckPowerOn_Task"] = reflect.TypeOf((*CheckPowerOn_Task)(nil)).Elem() +} + +type CheckPowerOn_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CheckProfileComplianceRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity []ManagedObjectReference `xml:"entity,omitempty"` +} + +func init() { + t["CheckProfileComplianceRequestType"] = reflect.TypeOf((*CheckProfileComplianceRequestType)(nil)).Elem() +} + +type CheckProfileCompliance_Task CheckProfileComplianceRequestType + +func init() { + t["CheckProfileCompliance_Task"] = reflect.TypeOf((*CheckProfileCompliance_Task)(nil)).Elem() +} + +type CheckProfileCompliance_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CheckRelocateRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Spec VirtualMachineRelocateSpec `xml:"spec"` + TestType []string `xml:"testType,omitempty"` +} + +func init() { + t["CheckRelocateRequestType"] = reflect.TypeOf((*CheckRelocateRequestType)(nil)).Elem() +} + +type CheckRelocate_Task CheckRelocateRequestType + +func init() { + t["CheckRelocate_Task"] = reflect.TypeOf((*CheckRelocate_Task)(nil)).Elem() +} + +type CheckRelocate_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CheckResult struct { + DynamicData + + Vm *ManagedObjectReference `xml:"vm,omitempty"` + Host *ManagedObjectReference `xml:"host,omitempty"` + Warning []LocalizedMethodFault `xml:"warning,omitempty"` + Error []LocalizedMethodFault `xml:"error,omitempty"` +} + +func init() { + t["CheckResult"] = reflect.TypeOf((*CheckResult)(nil)).Elem() +} + +type CheckVmConfigRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec VirtualMachineConfigSpec `xml:"spec"` + Vm *ManagedObjectReference `xml:"vm,omitempty"` + Host *ManagedObjectReference `xml:"host,omitempty"` + Pool *ManagedObjectReference `xml:"pool,omitempty"` + TestType []string `xml:"testType,omitempty"` +} + +func init() { + t["CheckVmConfigRequestType"] = reflect.TypeOf((*CheckVmConfigRequestType)(nil)).Elem() +} + +type CheckVmConfig_Task CheckVmConfigRequestType + +func init() { + t["CheckVmConfig_Task"] = reflect.TypeOf((*CheckVmConfig_Task)(nil)).Elem() +} + +type CheckVmConfig_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ChoiceOption struct { + OptionType + + ChoiceInfo []BaseElementDescription `xml:"choiceInfo,typeattr"` + DefaultIndex int32 `xml:"defaultIndex,omitempty"` +} + +func init() { + t["ChoiceOption"] = reflect.TypeOf((*ChoiceOption)(nil)).Elem() +} + +type ClearComplianceStatus ClearComplianceStatusRequestType + +func init() { + t["ClearComplianceStatus"] = reflect.TypeOf((*ClearComplianceStatus)(nil)).Elem() +} + +type ClearComplianceStatusRequestType struct { + This ManagedObjectReference `xml:"_this"` + Profile []ManagedObjectReference `xml:"profile,omitempty"` + Entity []ManagedObjectReference `xml:"entity,omitempty"` +} + +func init() { + t["ClearComplianceStatusRequestType"] = reflect.TypeOf((*ClearComplianceStatusRequestType)(nil)).Elem() +} + +type ClearComplianceStatusResponse struct { +} + +type ClearNFSUser ClearNFSUserRequestType + +func init() { + t["ClearNFSUser"] = reflect.TypeOf((*ClearNFSUser)(nil)).Elem() +} + +type ClearNFSUserRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["ClearNFSUserRequestType"] = reflect.TypeOf((*ClearNFSUserRequestType)(nil)).Elem() +} + +type ClearNFSUserResponse struct { +} + +type ClearSystemEventLog ClearSystemEventLogRequestType + +func init() { + t["ClearSystemEventLog"] = reflect.TypeOf((*ClearSystemEventLog)(nil)).Elem() +} + +type ClearSystemEventLogRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["ClearSystemEventLogRequestType"] = reflect.TypeOf((*ClearSystemEventLogRequestType)(nil)).Elem() +} + +type ClearSystemEventLogResponse struct { +} + +type ClearTriggeredAlarms ClearTriggeredAlarmsRequestType + +func init() { + t["ClearTriggeredAlarms"] = reflect.TypeOf((*ClearTriggeredAlarms)(nil)).Elem() +} + +type ClearTriggeredAlarmsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Filter AlarmFilterSpec `xml:"filter"` +} + +func init() { + t["ClearTriggeredAlarmsRequestType"] = reflect.TypeOf((*ClearTriggeredAlarmsRequestType)(nil)).Elem() +} + +type ClearTriggeredAlarmsResponse struct { +} + +type ClearVStorageObjectControlFlags ClearVStorageObjectControlFlagsRequestType + +func init() { + t["ClearVStorageObjectControlFlags"] = reflect.TypeOf((*ClearVStorageObjectControlFlags)(nil)).Elem() +} + +type ClearVStorageObjectControlFlagsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + ControlFlags []string `xml:"controlFlags,omitempty"` +} + +func init() { + t["ClearVStorageObjectControlFlagsRequestType"] = reflect.TypeOf((*ClearVStorageObjectControlFlagsRequestType)(nil)).Elem() +} + +type ClearVStorageObjectControlFlagsResponse struct { +} + +type ClockSkew struct { + HostConfigFault +} + +func init() { + t["ClockSkew"] = reflect.TypeOf((*ClockSkew)(nil)).Elem() +} + +type ClockSkewFault ClockSkew + +func init() { + t["ClockSkewFault"] = reflect.TypeOf((*ClockSkewFault)(nil)).Elem() +} + +type CloneFromSnapshotNotSupported struct { + MigrationFault +} + +func init() { + t["CloneFromSnapshotNotSupported"] = reflect.TypeOf((*CloneFromSnapshotNotSupported)(nil)).Elem() +} + +type CloneFromSnapshotNotSupportedFault CloneFromSnapshotNotSupported + +func init() { + t["CloneFromSnapshotNotSupportedFault"] = reflect.TypeOf((*CloneFromSnapshotNotSupportedFault)(nil)).Elem() +} + +type CloneSession CloneSessionRequestType + +func init() { + t["CloneSession"] = reflect.TypeOf((*CloneSession)(nil)).Elem() +} + +type CloneSessionRequestType struct { + This ManagedObjectReference `xml:"_this"` + CloneTicket string `xml:"cloneTicket"` +} + +func init() { + t["CloneSessionRequestType"] = reflect.TypeOf((*CloneSessionRequestType)(nil)).Elem() +} + +type CloneSessionResponse struct { + Returnval UserSession `xml:"returnval"` +} + +type CloneVAppRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + Target ManagedObjectReference `xml:"target"` + Spec VAppCloneSpec `xml:"spec"` +} + +func init() { + t["CloneVAppRequestType"] = reflect.TypeOf((*CloneVAppRequestType)(nil)).Elem() +} + +type CloneVApp_Task CloneVAppRequestType + +func init() { + t["CloneVApp_Task"] = reflect.TypeOf((*CloneVApp_Task)(nil)).Elem() +} + +type CloneVApp_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CloneVMRequestType struct { + This ManagedObjectReference `xml:"_this"` + Folder ManagedObjectReference `xml:"folder"` + Name string `xml:"name"` + Spec VirtualMachineCloneSpec `xml:"spec"` +} + +func init() { + t["CloneVMRequestType"] = reflect.TypeOf((*CloneVMRequestType)(nil)).Elem() +} + +type CloneVM_Task CloneVMRequestType + +func init() { + t["CloneVM_Task"] = reflect.TypeOf((*CloneVM_Task)(nil)).Elem() +} + +type CloneVM_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CloneVStorageObjectRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + Spec VslmCloneSpec `xml:"spec"` +} + +func init() { + t["CloneVStorageObjectRequestType"] = reflect.TypeOf((*CloneVStorageObjectRequestType)(nil)).Elem() +} + +type CloneVStorageObject_Task CloneVStorageObjectRequestType + +func init() { + t["CloneVStorageObject_Task"] = reflect.TypeOf((*CloneVStorageObject_Task)(nil)).Elem() +} + +type CloneVStorageObject_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CloseInventoryViewFolder CloseInventoryViewFolderRequestType + +func init() { + t["CloseInventoryViewFolder"] = reflect.TypeOf((*CloseInventoryViewFolder)(nil)).Elem() +} + +type CloseInventoryViewFolderRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity []ManagedObjectReference `xml:"entity"` +} + +func init() { + t["CloseInventoryViewFolderRequestType"] = reflect.TypeOf((*CloseInventoryViewFolderRequestType)(nil)).Elem() +} + +type CloseInventoryViewFolderResponse struct { + Returnval []ManagedObjectReference `xml:"returnval,omitempty"` +} + +type ClusterAction struct { + DynamicData + + Type string `xml:"type"` + Target *ManagedObjectReference `xml:"target,omitempty"` +} + +func init() { + t["ClusterAction"] = reflect.TypeOf((*ClusterAction)(nil)).Elem() +} + +type ClusterActionHistory struct { + DynamicData + + Action BaseClusterAction `xml:"action,typeattr"` + Time time.Time `xml:"time"` +} + +func init() { + t["ClusterActionHistory"] = reflect.TypeOf((*ClusterActionHistory)(nil)).Elem() +} + +type ClusterAffinityRuleSpec struct { + ClusterRuleInfo + + Vm []ManagedObjectReference `xml:"vm"` +} + +func init() { + t["ClusterAffinityRuleSpec"] = reflect.TypeOf((*ClusterAffinityRuleSpec)(nil)).Elem() +} + +type ClusterAntiAffinityRuleSpec struct { + ClusterRuleInfo + + Vm []ManagedObjectReference `xml:"vm"` +} + +func init() { + t["ClusterAntiAffinityRuleSpec"] = reflect.TypeOf((*ClusterAntiAffinityRuleSpec)(nil)).Elem() +} + +type ClusterAttemptedVmInfo struct { + DynamicData + + Vm ManagedObjectReference `xml:"vm"` + Task *ManagedObjectReference `xml:"task,omitempty"` +} + +func init() { + t["ClusterAttemptedVmInfo"] = reflect.TypeOf((*ClusterAttemptedVmInfo)(nil)).Elem() +} + +type ClusterComplianceCheckedEvent struct { + ClusterEvent + + Profile ProfileEventArgument `xml:"profile"` +} + +func init() { + t["ClusterComplianceCheckedEvent"] = reflect.TypeOf((*ClusterComplianceCheckedEvent)(nil)).Elem() +} + +type ClusterComputeResourceClusterConfigResult struct { + DynamicData + + FailedHosts []FolderFailedHostResult `xml:"failedHosts,omitempty"` + ConfiguredHosts []ManagedObjectReference `xml:"configuredHosts,omitempty"` +} + +func init() { + t["ClusterComputeResourceClusterConfigResult"] = reflect.TypeOf((*ClusterComputeResourceClusterConfigResult)(nil)).Elem() +} + +type ClusterComputeResourceDVSConfigurationValidation struct { + ClusterComputeResourceValidationResultBase + + IsDvsValid bool `xml:"isDvsValid"` + IsDvpgValid bool `xml:"isDvpgValid"` +} + +func init() { + t["ClusterComputeResourceDVSConfigurationValidation"] = reflect.TypeOf((*ClusterComputeResourceDVSConfigurationValidation)(nil)).Elem() +} + +type ClusterComputeResourceDVSSetting struct { + DynamicData + + DvSwitch ManagedObjectReference `xml:"dvSwitch"` + PnicDevices []string `xml:"pnicDevices,omitempty"` + DvPortgroupSetting []ClusterComputeResourceDVSSettingDVPortgroupToServiceMapping `xml:"dvPortgroupSetting,omitempty"` +} + +func init() { + t["ClusterComputeResourceDVSSetting"] = reflect.TypeOf((*ClusterComputeResourceDVSSetting)(nil)).Elem() +} + +type ClusterComputeResourceDVSSettingDVPortgroupToServiceMapping struct { + DynamicData + + DvPortgroup ManagedObjectReference `xml:"dvPortgroup"` + Service string `xml:"service"` +} + +func init() { + t["ClusterComputeResourceDVSSettingDVPortgroupToServiceMapping"] = reflect.TypeOf((*ClusterComputeResourceDVSSettingDVPortgroupToServiceMapping)(nil)).Elem() +} + +type ClusterComputeResourceDvsProfile struct { + DynamicData + + DvsName string `xml:"dvsName,omitempty"` + DvSwitch *ManagedObjectReference `xml:"dvSwitch,omitempty"` + PnicDevices []string `xml:"pnicDevices,omitempty"` + DvPortgroupMapping []ClusterComputeResourceDvsProfileDVPortgroupSpecToServiceMapping `xml:"dvPortgroupMapping,omitempty"` +} + +func init() { + t["ClusterComputeResourceDvsProfile"] = reflect.TypeOf((*ClusterComputeResourceDvsProfile)(nil)).Elem() +} + +type ClusterComputeResourceDvsProfileDVPortgroupSpecToServiceMapping struct { + DynamicData + + DvPortgroupSpec *DVPortgroupConfigSpec `xml:"dvPortgroupSpec,omitempty"` + DvPortgroup *ManagedObjectReference `xml:"dvPortgroup,omitempty"` + Service string `xml:"service"` +} + +func init() { + t["ClusterComputeResourceDvsProfileDVPortgroupSpecToServiceMapping"] = reflect.TypeOf((*ClusterComputeResourceDvsProfileDVPortgroupSpecToServiceMapping)(nil)).Elem() +} + +type ClusterComputeResourceHCIConfigInfo struct { + DynamicData + + WorkflowState string `xml:"workflowState"` + DvsSetting []ClusterComputeResourceDVSSetting `xml:"dvsSetting,omitempty"` + ConfiguredHosts []ManagedObjectReference `xml:"configuredHosts,omitempty"` + HostConfigProfile *ClusterComputeResourceHostConfigurationProfile `xml:"hostConfigProfile,omitempty"` +} + +func init() { + t["ClusterComputeResourceHCIConfigInfo"] = reflect.TypeOf((*ClusterComputeResourceHCIConfigInfo)(nil)).Elem() +} + +type ClusterComputeResourceHCIConfigSpec struct { + DynamicData + + DvsProf []ClusterComputeResourceDvsProfile `xml:"dvsProf,omitempty"` + HostConfigProfile *ClusterComputeResourceHostConfigurationProfile `xml:"hostConfigProfile,omitempty"` + VSanConfigSpec *SDDCBase `xml:"vSanConfigSpec,omitempty"` + VcProf *ClusterComputeResourceVCProfile `xml:"vcProf,omitempty"` +} + +func init() { + t["ClusterComputeResourceHCIConfigSpec"] = reflect.TypeOf((*ClusterComputeResourceHCIConfigSpec)(nil)).Elem() +} + +type ClusterComputeResourceHostConfigurationInput struct { + DynamicData + + Host ManagedObjectReference `xml:"host"` + HostVmkNics []ClusterComputeResourceHostVmkNicInfo `xml:"hostVmkNics,omitempty"` + AllowedInNonMaintenanceMode *bool `xml:"allowedInNonMaintenanceMode"` +} + +func init() { + t["ClusterComputeResourceHostConfigurationInput"] = reflect.TypeOf((*ClusterComputeResourceHostConfigurationInput)(nil)).Elem() +} + +type ClusterComputeResourceHostConfigurationProfile struct { + DynamicData + + DateTimeConfig *HostDateTimeConfig `xml:"dateTimeConfig,omitempty"` + LockdownMode HostLockdownMode `xml:"lockdownMode,omitempty"` +} + +func init() { + t["ClusterComputeResourceHostConfigurationProfile"] = reflect.TypeOf((*ClusterComputeResourceHostConfigurationProfile)(nil)).Elem() +} + +type ClusterComputeResourceHostConfigurationValidation struct { + ClusterComputeResourceValidationResultBase + + Host ManagedObjectReference `xml:"host"` + IsDvsSettingValid *bool `xml:"isDvsSettingValid"` + IsVmknicSettingValid *bool `xml:"isVmknicSettingValid"` + IsNtpSettingValid *bool `xml:"isNtpSettingValid"` + IsLockdownModeValid *bool `xml:"isLockdownModeValid"` +} + +func init() { + t["ClusterComputeResourceHostConfigurationValidation"] = reflect.TypeOf((*ClusterComputeResourceHostConfigurationValidation)(nil)).Elem() +} + +type ClusterComputeResourceHostVmkNicInfo struct { + DynamicData + + NicSpec HostVirtualNicSpec `xml:"nicSpec"` + Service string `xml:"service"` +} + +func init() { + t["ClusterComputeResourceHostVmkNicInfo"] = reflect.TypeOf((*ClusterComputeResourceHostVmkNicInfo)(nil)).Elem() +} + +type ClusterComputeResourceSummary struct { + ComputeResourceSummary + + CurrentFailoverLevel int32 `xml:"currentFailoverLevel"` + AdmissionControlInfo BaseClusterDasAdmissionControlInfo `xml:"admissionControlInfo,omitempty,typeattr"` + NumVmotions int32 `xml:"numVmotions"` + TargetBalance int32 `xml:"targetBalance,omitempty"` + CurrentBalance int32 `xml:"currentBalance,omitempty"` + DrsScore int32 `xml:"drsScore,omitempty"` + NumVmsPerDrsScoreBucket []int32 `xml:"numVmsPerDrsScoreBucket,omitempty"` + UsageSummary *ClusterUsageSummary `xml:"usageSummary,omitempty"` + CurrentEVCModeKey string `xml:"currentEVCModeKey,omitempty"` + DasData BaseClusterDasData `xml:"dasData,omitempty,typeattr"` +} + +func init() { + t["ClusterComputeResourceSummary"] = reflect.TypeOf((*ClusterComputeResourceSummary)(nil)).Elem() +} + +type ClusterComputeResourceVCProfile struct { + DynamicData + + ClusterSpec *ClusterConfigSpecEx `xml:"clusterSpec,omitempty"` + EvcModeKey string `xml:"evcModeKey,omitempty"` +} + +func init() { + t["ClusterComputeResourceVCProfile"] = reflect.TypeOf((*ClusterComputeResourceVCProfile)(nil)).Elem() +} + +type ClusterComputeResourceValidationResultBase struct { + DynamicData + + Info []LocalizableMessage `xml:"info,omitempty"` +} + +func init() { + t["ClusterComputeResourceValidationResultBase"] = reflect.TypeOf((*ClusterComputeResourceValidationResultBase)(nil)).Elem() +} + +type ClusterConfigInfo struct { + DynamicData + + DasConfig ClusterDasConfigInfo `xml:"dasConfig"` + DasVmConfig []ClusterDasVmConfigInfo `xml:"dasVmConfig,omitempty"` + DrsConfig ClusterDrsConfigInfo `xml:"drsConfig"` + DrsVmConfig []ClusterDrsVmConfigInfo `xml:"drsVmConfig,omitempty"` + Rule []BaseClusterRuleInfo `xml:"rule,omitempty,typeattr"` +} + +func init() { + t["ClusterConfigInfo"] = reflect.TypeOf((*ClusterConfigInfo)(nil)).Elem() +} + +type ClusterConfigInfoEx struct { + ComputeResourceConfigInfo + + DasConfig ClusterDasConfigInfo `xml:"dasConfig"` + DasVmConfig []ClusterDasVmConfigInfo `xml:"dasVmConfig,omitempty"` + DrsConfig ClusterDrsConfigInfo `xml:"drsConfig"` + DrsVmConfig []ClusterDrsVmConfigInfo `xml:"drsVmConfig,omitempty"` + Rule []BaseClusterRuleInfo `xml:"rule,omitempty,typeattr"` + Orchestration *ClusterOrchestrationInfo `xml:"orchestration,omitempty"` + VmOrchestration []ClusterVmOrchestrationInfo `xml:"vmOrchestration,omitempty"` + DpmConfigInfo *ClusterDpmConfigInfo `xml:"dpmConfigInfo,omitempty"` + DpmHostConfig []ClusterDpmHostConfigInfo `xml:"dpmHostConfig,omitempty"` + VsanConfigInfo *VsanClusterConfigInfo `xml:"vsanConfigInfo,omitempty"` + VsanHostConfig []VsanHostConfigInfo `xml:"vsanHostConfig,omitempty"` + Group []BaseClusterGroupInfo `xml:"group,omitempty,typeattr"` + InfraUpdateHaConfig *ClusterInfraUpdateHaConfigInfo `xml:"infraUpdateHaConfig,omitempty"` + ProactiveDrsConfig *ClusterProactiveDrsConfigInfo `xml:"proactiveDrsConfig,omitempty"` + CryptoConfig *ClusterCryptoConfigInfo `xml:"cryptoConfig,omitempty"` +} + +func init() { + t["ClusterConfigInfoEx"] = reflect.TypeOf((*ClusterConfigInfoEx)(nil)).Elem() +} + +type ClusterConfigSpec struct { + DynamicData + + DasConfig *ClusterDasConfigInfo `xml:"dasConfig,omitempty"` + DasVmConfigSpec []ClusterDasVmConfigSpec `xml:"dasVmConfigSpec,omitempty"` + DrsConfig *ClusterDrsConfigInfo `xml:"drsConfig,omitempty"` + DrsVmConfigSpec []ClusterDrsVmConfigSpec `xml:"drsVmConfigSpec,omitempty"` + RulesSpec []ClusterRuleSpec `xml:"rulesSpec,omitempty"` +} + +func init() { + t["ClusterConfigSpec"] = reflect.TypeOf((*ClusterConfigSpec)(nil)).Elem() +} + +type ClusterConfigSpecEx struct { + ComputeResourceConfigSpec + + DasConfig *ClusterDasConfigInfo `xml:"dasConfig,omitempty"` + DasVmConfigSpec []ClusterDasVmConfigSpec `xml:"dasVmConfigSpec,omitempty"` + DrsConfig *ClusterDrsConfigInfo `xml:"drsConfig,omitempty"` + DrsVmConfigSpec []ClusterDrsVmConfigSpec `xml:"drsVmConfigSpec,omitempty"` + RulesSpec []ClusterRuleSpec `xml:"rulesSpec,omitempty"` + Orchestration *ClusterOrchestrationInfo `xml:"orchestration,omitempty"` + VmOrchestrationSpec []ClusterVmOrchestrationSpec `xml:"vmOrchestrationSpec,omitempty"` + DpmConfig *ClusterDpmConfigInfo `xml:"dpmConfig,omitempty"` + DpmHostConfigSpec []ClusterDpmHostConfigSpec `xml:"dpmHostConfigSpec,omitempty"` + VsanConfig *VsanClusterConfigInfo `xml:"vsanConfig,omitempty"` + VsanHostConfigSpec []VsanHostConfigInfo `xml:"vsanHostConfigSpec,omitempty"` + GroupSpec []ClusterGroupSpec `xml:"groupSpec,omitempty"` + InfraUpdateHaConfig *ClusterInfraUpdateHaConfigInfo `xml:"infraUpdateHaConfig,omitempty"` + ProactiveDrsConfig *ClusterProactiveDrsConfigInfo `xml:"proactiveDrsConfig,omitempty"` + InHciWorkflow *bool `xml:"inHciWorkflow"` + CryptoConfig *ClusterCryptoConfigInfo `xml:"cryptoConfig,omitempty"` +} + +func init() { + t["ClusterConfigSpecEx"] = reflect.TypeOf((*ClusterConfigSpecEx)(nil)).Elem() +} + +type ClusterCreatedEvent struct { + ClusterEvent + + Parent FolderEventArgument `xml:"parent"` +} + +func init() { + t["ClusterCreatedEvent"] = reflect.TypeOf((*ClusterCreatedEvent)(nil)).Elem() +} + +type ClusterCryptoConfigInfo struct { + DynamicData + + CryptoMode string `xml:"cryptoMode,omitempty"` +} + +func init() { + t["ClusterCryptoConfigInfo"] = reflect.TypeOf((*ClusterCryptoConfigInfo)(nil)).Elem() +} + +type ClusterDasAamHostInfo struct { + ClusterDasHostInfo + + HostDasState []ClusterDasAamNodeState `xml:"hostDasState,omitempty"` + PrimaryHosts []string `xml:"primaryHosts,omitempty"` +} + +func init() { + t["ClusterDasAamHostInfo"] = reflect.TypeOf((*ClusterDasAamHostInfo)(nil)).Elem() +} + +type ClusterDasAamNodeState struct { + DynamicData + + Host ManagedObjectReference `xml:"host"` + Name string `xml:"name"` + ConfigState string `xml:"configState"` + RuntimeState string `xml:"runtimeState"` +} + +func init() { + t["ClusterDasAamNodeState"] = reflect.TypeOf((*ClusterDasAamNodeState)(nil)).Elem() +} + +type ClusterDasAdmissionControlInfo struct { + DynamicData +} + +func init() { + t["ClusterDasAdmissionControlInfo"] = reflect.TypeOf((*ClusterDasAdmissionControlInfo)(nil)).Elem() +} + +type ClusterDasAdmissionControlPolicy struct { + DynamicData + + ResourceReductionToToleratePercent *int32 `xml:"resourceReductionToToleratePercent"` +} + +func init() { + t["ClusterDasAdmissionControlPolicy"] = reflect.TypeOf((*ClusterDasAdmissionControlPolicy)(nil)).Elem() +} + +type ClusterDasAdvancedRuntimeInfo struct { + DynamicData + + DasHostInfo BaseClusterDasHostInfo `xml:"dasHostInfo,omitempty,typeattr"` + VmcpSupported *ClusterDasAdvancedRuntimeInfoVmcpCapabilityInfo `xml:"vmcpSupported,omitempty"` + HeartbeatDatastoreInfo []DasHeartbeatDatastoreInfo `xml:"heartbeatDatastoreInfo,omitempty"` +} + +func init() { + t["ClusterDasAdvancedRuntimeInfo"] = reflect.TypeOf((*ClusterDasAdvancedRuntimeInfo)(nil)).Elem() +} + +type ClusterDasAdvancedRuntimeInfoVmcpCapabilityInfo struct { + DynamicData + + StorageAPDSupported bool `xml:"storageAPDSupported"` + StoragePDLSupported bool `xml:"storagePDLSupported"` +} + +func init() { + t["ClusterDasAdvancedRuntimeInfoVmcpCapabilityInfo"] = reflect.TypeOf((*ClusterDasAdvancedRuntimeInfoVmcpCapabilityInfo)(nil)).Elem() +} + +type ClusterDasConfigInfo struct { + DynamicData + + Enabled *bool `xml:"enabled"` + VmMonitoring string `xml:"vmMonitoring,omitempty"` + HostMonitoring string `xml:"hostMonitoring,omitempty"` + VmComponentProtecting string `xml:"vmComponentProtecting,omitempty"` + FailoverLevel int32 `xml:"failoverLevel,omitempty"` + AdmissionControlPolicy BaseClusterDasAdmissionControlPolicy `xml:"admissionControlPolicy,omitempty,typeattr"` + AdmissionControlEnabled *bool `xml:"admissionControlEnabled"` + DefaultVmSettings *ClusterDasVmSettings `xml:"defaultVmSettings,omitempty"` + Option []BaseOptionValue `xml:"option,omitempty,typeattr"` + HeartbeatDatastore []ManagedObjectReference `xml:"heartbeatDatastore,omitempty"` + HBDatastoreCandidatePolicy string `xml:"hBDatastoreCandidatePolicy,omitempty"` +} + +func init() { + t["ClusterDasConfigInfo"] = reflect.TypeOf((*ClusterDasConfigInfo)(nil)).Elem() +} + +type ClusterDasData struct { + DynamicData +} + +func init() { + t["ClusterDasData"] = reflect.TypeOf((*ClusterDasData)(nil)).Elem() +} + +type ClusterDasDataSummary struct { + ClusterDasData + + HostListVersion int64 `xml:"hostListVersion"` + ClusterConfigVersion int64 `xml:"clusterConfigVersion"` + CompatListVersion int64 `xml:"compatListVersion"` +} + +func init() { + t["ClusterDasDataSummary"] = reflect.TypeOf((*ClusterDasDataSummary)(nil)).Elem() +} + +type ClusterDasFailoverLevelAdvancedRuntimeInfo struct { + ClusterDasAdvancedRuntimeInfo + + SlotInfo ClusterDasFailoverLevelAdvancedRuntimeInfoSlotInfo `xml:"slotInfo"` + TotalSlots int32 `xml:"totalSlots"` + UsedSlots int32 `xml:"usedSlots"` + UnreservedSlots int32 `xml:"unreservedSlots"` + TotalVms int32 `xml:"totalVms"` + TotalHosts int32 `xml:"totalHosts"` + TotalGoodHosts int32 `xml:"totalGoodHosts"` + HostSlots []ClusterDasFailoverLevelAdvancedRuntimeInfoHostSlots `xml:"hostSlots,omitempty"` + VmsRequiringMultipleSlots []ClusterDasFailoverLevelAdvancedRuntimeInfoVmSlots `xml:"vmsRequiringMultipleSlots,omitempty"` +} + +func init() { + t["ClusterDasFailoverLevelAdvancedRuntimeInfo"] = reflect.TypeOf((*ClusterDasFailoverLevelAdvancedRuntimeInfo)(nil)).Elem() +} + +type ClusterDasFailoverLevelAdvancedRuntimeInfoHostSlots struct { + DynamicData + + Host ManagedObjectReference `xml:"host"` + Slots int32 `xml:"slots"` +} + +func init() { + t["ClusterDasFailoverLevelAdvancedRuntimeInfoHostSlots"] = reflect.TypeOf((*ClusterDasFailoverLevelAdvancedRuntimeInfoHostSlots)(nil)).Elem() +} + +type ClusterDasFailoverLevelAdvancedRuntimeInfoSlotInfo struct { + DynamicData + + NumVcpus int32 `xml:"numVcpus"` + CpuMHz int32 `xml:"cpuMHz"` + MemoryMB int32 `xml:"memoryMB"` +} + +func init() { + t["ClusterDasFailoverLevelAdvancedRuntimeInfoSlotInfo"] = reflect.TypeOf((*ClusterDasFailoverLevelAdvancedRuntimeInfoSlotInfo)(nil)).Elem() +} + +type ClusterDasFailoverLevelAdvancedRuntimeInfoVmSlots struct { + DynamicData + + Vm ManagedObjectReference `xml:"vm"` + Slots int32 `xml:"slots"` +} + +func init() { + t["ClusterDasFailoverLevelAdvancedRuntimeInfoVmSlots"] = reflect.TypeOf((*ClusterDasFailoverLevelAdvancedRuntimeInfoVmSlots)(nil)).Elem() +} + +type ClusterDasFdmHostState struct { + DynamicData + + State string `xml:"state"` + StateReporter *ManagedObjectReference `xml:"stateReporter,omitempty"` +} + +func init() { + t["ClusterDasFdmHostState"] = reflect.TypeOf((*ClusterDasFdmHostState)(nil)).Elem() +} + +type ClusterDasHostInfo struct { + DynamicData +} + +func init() { + t["ClusterDasHostInfo"] = reflect.TypeOf((*ClusterDasHostInfo)(nil)).Elem() +} + +type ClusterDasHostRecommendation struct { + DynamicData + + Host ManagedObjectReference `xml:"host"` + DrsRating int32 `xml:"drsRating,omitempty"` +} + +func init() { + t["ClusterDasHostRecommendation"] = reflect.TypeOf((*ClusterDasHostRecommendation)(nil)).Elem() +} + +type ClusterDasVmConfigInfo struct { + DynamicData + + Key ManagedObjectReference `xml:"key"` + RestartPriority DasVmPriority `xml:"restartPriority,omitempty"` + PowerOffOnIsolation *bool `xml:"powerOffOnIsolation"` + DasSettings *ClusterDasVmSettings `xml:"dasSettings,omitempty"` +} + +func init() { + t["ClusterDasVmConfigInfo"] = reflect.TypeOf((*ClusterDasVmConfigInfo)(nil)).Elem() +} + +type ClusterDasVmConfigSpec struct { + ArrayUpdateSpec + + Info *ClusterDasVmConfigInfo `xml:"info,omitempty"` +} + +func init() { + t["ClusterDasVmConfigSpec"] = reflect.TypeOf((*ClusterDasVmConfigSpec)(nil)).Elem() +} + +type ClusterDasVmSettings struct { + DynamicData + + RestartPriority string `xml:"restartPriority,omitempty"` + RestartPriorityTimeout int32 `xml:"restartPriorityTimeout,omitempty"` + IsolationResponse string `xml:"isolationResponse,omitempty"` + VmToolsMonitoringSettings *ClusterVmToolsMonitoringSettings `xml:"vmToolsMonitoringSettings,omitempty"` + VmComponentProtectionSettings *ClusterVmComponentProtectionSettings `xml:"vmComponentProtectionSettings,omitempty"` +} + +func init() { + t["ClusterDasVmSettings"] = reflect.TypeOf((*ClusterDasVmSettings)(nil)).Elem() +} + +type ClusterDependencyRuleInfo struct { + ClusterRuleInfo + + VmGroup string `xml:"vmGroup"` + DependsOnVmGroup string `xml:"dependsOnVmGroup"` +} + +func init() { + t["ClusterDependencyRuleInfo"] = reflect.TypeOf((*ClusterDependencyRuleInfo)(nil)).Elem() +} + +type ClusterDestroyedEvent struct { + ClusterEvent +} + +func init() { + t["ClusterDestroyedEvent"] = reflect.TypeOf((*ClusterDestroyedEvent)(nil)).Elem() +} + +type ClusterDpmConfigInfo struct { + DynamicData + + Enabled *bool `xml:"enabled"` + DefaultDpmBehavior DpmBehavior `xml:"defaultDpmBehavior,omitempty"` + HostPowerActionRate int32 `xml:"hostPowerActionRate,omitempty"` + Option []BaseOptionValue `xml:"option,omitempty,typeattr"` +} + +func init() { + t["ClusterDpmConfigInfo"] = reflect.TypeOf((*ClusterDpmConfigInfo)(nil)).Elem() +} + +type ClusterDpmHostConfigInfo struct { + DynamicData + + Key ManagedObjectReference `xml:"key"` + Enabled *bool `xml:"enabled"` + Behavior DpmBehavior `xml:"behavior,omitempty"` +} + +func init() { + t["ClusterDpmHostConfigInfo"] = reflect.TypeOf((*ClusterDpmHostConfigInfo)(nil)).Elem() +} + +type ClusterDpmHostConfigSpec struct { + ArrayUpdateSpec + + Info *ClusterDpmHostConfigInfo `xml:"info,omitempty"` +} + +func init() { + t["ClusterDpmHostConfigSpec"] = reflect.TypeOf((*ClusterDpmHostConfigSpec)(nil)).Elem() +} + +type ClusterDrsConfigInfo struct { + DynamicData + + Enabled *bool `xml:"enabled"` + EnableVmBehaviorOverrides *bool `xml:"enableVmBehaviorOverrides"` + DefaultVmBehavior DrsBehavior `xml:"defaultVmBehavior,omitempty"` + VmotionRate int32 `xml:"vmotionRate,omitempty"` + ScaleDescendantsShares string `xml:"scaleDescendantsShares,omitempty"` + Option []BaseOptionValue `xml:"option,omitempty,typeattr"` +} + +func init() { + t["ClusterDrsConfigInfo"] = reflect.TypeOf((*ClusterDrsConfigInfo)(nil)).Elem() +} + +type ClusterDrsFaults struct { + DynamicData + + Reason string `xml:"reason"` + FaultsByVm []BaseClusterDrsFaultsFaultsByVm `xml:"faultsByVm,typeattr"` +} + +func init() { + t["ClusterDrsFaults"] = reflect.TypeOf((*ClusterDrsFaults)(nil)).Elem() +} + +type ClusterDrsFaultsFaultsByVirtualDisk struct { + ClusterDrsFaultsFaultsByVm + + Disk *VirtualDiskId `xml:"disk,omitempty"` +} + +func init() { + t["ClusterDrsFaultsFaultsByVirtualDisk"] = reflect.TypeOf((*ClusterDrsFaultsFaultsByVirtualDisk)(nil)).Elem() +} + +type ClusterDrsFaultsFaultsByVm struct { + DynamicData + + Vm *ManagedObjectReference `xml:"vm,omitempty"` + Fault []LocalizedMethodFault `xml:"fault"` +} + +func init() { + t["ClusterDrsFaultsFaultsByVm"] = reflect.TypeOf((*ClusterDrsFaultsFaultsByVm)(nil)).Elem() +} + +type ClusterDrsMigration struct { + DynamicData + + Key string `xml:"key"` + Time time.Time `xml:"time"` + Vm ManagedObjectReference `xml:"vm"` + CpuLoad int32 `xml:"cpuLoad,omitempty"` + MemoryLoad int64 `xml:"memoryLoad,omitempty"` + Source ManagedObjectReference `xml:"source"` + SourceCpuLoad int32 `xml:"sourceCpuLoad,omitempty"` + SourceMemoryLoad int64 `xml:"sourceMemoryLoad,omitempty"` + Destination ManagedObjectReference `xml:"destination"` + DestinationCpuLoad int32 `xml:"destinationCpuLoad,omitempty"` + DestinationMemoryLoad int64 `xml:"destinationMemoryLoad,omitempty"` +} + +func init() { + t["ClusterDrsMigration"] = reflect.TypeOf((*ClusterDrsMigration)(nil)).Elem() +} + +type ClusterDrsRecommendation struct { + DynamicData + + Key string `xml:"key"` + Rating int32 `xml:"rating"` + Reason string `xml:"reason"` + ReasonText string `xml:"reasonText"` + MigrationList []ClusterDrsMigration `xml:"migrationList"` +} + +func init() { + t["ClusterDrsRecommendation"] = reflect.TypeOf((*ClusterDrsRecommendation)(nil)).Elem() +} + +type ClusterDrsVmConfigInfo struct { + DynamicData + + Key ManagedObjectReference `xml:"key"` + Enabled *bool `xml:"enabled"` + Behavior DrsBehavior `xml:"behavior,omitempty"` +} + +func init() { + t["ClusterDrsVmConfigInfo"] = reflect.TypeOf((*ClusterDrsVmConfigInfo)(nil)).Elem() +} + +type ClusterDrsVmConfigSpec struct { + ArrayUpdateSpec + + Info *ClusterDrsVmConfigInfo `xml:"info,omitempty"` +} + +func init() { + t["ClusterDrsVmConfigSpec"] = reflect.TypeOf((*ClusterDrsVmConfigSpec)(nil)).Elem() +} + +type ClusterEVCManagerCheckResult struct { + DynamicData + + EvcModeKey string `xml:"evcModeKey"` + Error LocalizedMethodFault `xml:"error"` + Host []ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["ClusterEVCManagerCheckResult"] = reflect.TypeOf((*ClusterEVCManagerCheckResult)(nil)).Elem() +} + +type ClusterEVCManagerEVCState struct { + DynamicData + + SupportedEVCMode []EVCMode `xml:"supportedEVCMode"` + CurrentEVCModeKey string `xml:"currentEVCModeKey,omitempty"` + GuaranteedCPUFeatures []HostCpuIdInfo `xml:"guaranteedCPUFeatures,omitempty"` + FeatureCapability []HostFeatureCapability `xml:"featureCapability,omitempty"` + FeatureMask []HostFeatureMask `xml:"featureMask,omitempty"` + FeatureRequirement []VirtualMachineFeatureRequirement `xml:"featureRequirement,omitempty"` +} + +func init() { + t["ClusterEVCManagerEVCState"] = reflect.TypeOf((*ClusterEVCManagerEVCState)(nil)).Elem() +} + +type ClusterEnterMaintenanceMode ClusterEnterMaintenanceModeRequestType + +func init() { + t["ClusterEnterMaintenanceMode"] = reflect.TypeOf((*ClusterEnterMaintenanceMode)(nil)).Elem() +} + +type ClusterEnterMaintenanceModeRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host []ManagedObjectReference `xml:"host"` + Option []BaseOptionValue `xml:"option,omitempty,typeattr"` +} + +func init() { + t["ClusterEnterMaintenanceModeRequestType"] = reflect.TypeOf((*ClusterEnterMaintenanceModeRequestType)(nil)).Elem() +} + +type ClusterEnterMaintenanceModeResponse struct { + Returnval ClusterEnterMaintenanceResult `xml:"returnval"` +} + +type ClusterEnterMaintenanceResult struct { + DynamicData + + Recommendations []ClusterRecommendation `xml:"recommendations,omitempty"` + Fault *ClusterDrsFaults `xml:"fault,omitempty"` +} + +func init() { + t["ClusterEnterMaintenanceResult"] = reflect.TypeOf((*ClusterEnterMaintenanceResult)(nil)).Elem() +} + +type ClusterEvent struct { + Event +} + +func init() { + t["ClusterEvent"] = reflect.TypeOf((*ClusterEvent)(nil)).Elem() +} + +type ClusterFailoverHostAdmissionControlInfo struct { + ClusterDasAdmissionControlInfo + + HostStatus []ClusterFailoverHostAdmissionControlInfoHostStatus `xml:"hostStatus,omitempty"` +} + +func init() { + t["ClusterFailoverHostAdmissionControlInfo"] = reflect.TypeOf((*ClusterFailoverHostAdmissionControlInfo)(nil)).Elem() +} + +type ClusterFailoverHostAdmissionControlInfoHostStatus struct { + DynamicData + + Host ManagedObjectReference `xml:"host"` + Status ManagedEntityStatus `xml:"status"` +} + +func init() { + t["ClusterFailoverHostAdmissionControlInfoHostStatus"] = reflect.TypeOf((*ClusterFailoverHostAdmissionControlInfoHostStatus)(nil)).Elem() +} + +type ClusterFailoverHostAdmissionControlPolicy struct { + ClusterDasAdmissionControlPolicy + + FailoverHosts []ManagedObjectReference `xml:"failoverHosts,omitempty"` + FailoverLevel int32 `xml:"failoverLevel,omitempty"` +} + +func init() { + t["ClusterFailoverHostAdmissionControlPolicy"] = reflect.TypeOf((*ClusterFailoverHostAdmissionControlPolicy)(nil)).Elem() +} + +type ClusterFailoverLevelAdmissionControlInfo struct { + ClusterDasAdmissionControlInfo + + CurrentFailoverLevel int32 `xml:"currentFailoverLevel"` +} + +func init() { + t["ClusterFailoverLevelAdmissionControlInfo"] = reflect.TypeOf((*ClusterFailoverLevelAdmissionControlInfo)(nil)).Elem() +} + +type ClusterFailoverLevelAdmissionControlPolicy struct { + ClusterDasAdmissionControlPolicy + + FailoverLevel int32 `xml:"failoverLevel"` + SlotPolicy BaseClusterSlotPolicy `xml:"slotPolicy,omitempty,typeattr"` +} + +func init() { + t["ClusterFailoverLevelAdmissionControlPolicy"] = reflect.TypeOf((*ClusterFailoverLevelAdmissionControlPolicy)(nil)).Elem() +} + +type ClusterFailoverResourcesAdmissionControlInfo struct { + ClusterDasAdmissionControlInfo + + CurrentCpuFailoverResourcesPercent int32 `xml:"currentCpuFailoverResourcesPercent"` + CurrentMemoryFailoverResourcesPercent int32 `xml:"currentMemoryFailoverResourcesPercent"` +} + +func init() { + t["ClusterFailoverResourcesAdmissionControlInfo"] = reflect.TypeOf((*ClusterFailoverResourcesAdmissionControlInfo)(nil)).Elem() +} + +type ClusterFailoverResourcesAdmissionControlPolicy struct { + ClusterDasAdmissionControlPolicy + + CpuFailoverResourcesPercent int32 `xml:"cpuFailoverResourcesPercent"` + MemoryFailoverResourcesPercent int32 `xml:"memoryFailoverResourcesPercent"` + FailoverLevel int32 `xml:"failoverLevel,omitempty"` + AutoComputePercentages *bool `xml:"autoComputePercentages"` +} + +func init() { + t["ClusterFailoverResourcesAdmissionControlPolicy"] = reflect.TypeOf((*ClusterFailoverResourcesAdmissionControlPolicy)(nil)).Elem() +} + +type ClusterFixedSizeSlotPolicy struct { + ClusterSlotPolicy + + Cpu int32 `xml:"cpu"` + Memory int32 `xml:"memory"` +} + +func init() { + t["ClusterFixedSizeSlotPolicy"] = reflect.TypeOf((*ClusterFixedSizeSlotPolicy)(nil)).Elem() +} + +type ClusterGroupInfo struct { + DynamicData + + Name string `xml:"name"` + UserCreated *bool `xml:"userCreated"` + UniqueID string `xml:"uniqueID,omitempty"` +} + +func init() { + t["ClusterGroupInfo"] = reflect.TypeOf((*ClusterGroupInfo)(nil)).Elem() +} + +type ClusterGroupSpec struct { + ArrayUpdateSpec + + Info BaseClusterGroupInfo `xml:"info,omitempty,typeattr"` +} + +func init() { + t["ClusterGroupSpec"] = reflect.TypeOf((*ClusterGroupSpec)(nil)).Elem() +} + +type ClusterHostGroup struct { + ClusterGroupInfo + + Host []ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["ClusterHostGroup"] = reflect.TypeOf((*ClusterHostGroup)(nil)).Elem() +} + +type ClusterHostInfraUpdateHaModeAction struct { + ClusterAction + + OperationType string `xml:"operationType"` +} + +func init() { + t["ClusterHostInfraUpdateHaModeAction"] = reflect.TypeOf((*ClusterHostInfraUpdateHaModeAction)(nil)).Elem() +} + +type ClusterHostPowerAction struct { + ClusterAction + + OperationType HostPowerOperationType `xml:"operationType"` + PowerConsumptionWatt int32 `xml:"powerConsumptionWatt,omitempty"` + CpuCapacityMHz int32 `xml:"cpuCapacityMHz,omitempty"` + MemCapacityMB int32 `xml:"memCapacityMB,omitempty"` +} + +func init() { + t["ClusterHostPowerAction"] = reflect.TypeOf((*ClusterHostPowerAction)(nil)).Elem() +} + +type ClusterHostRecommendation struct { + DynamicData + + Host ManagedObjectReference `xml:"host"` + Rating int32 `xml:"rating"` +} + +func init() { + t["ClusterHostRecommendation"] = reflect.TypeOf((*ClusterHostRecommendation)(nil)).Elem() +} + +type ClusterInfraUpdateHaConfigInfo struct { + DynamicData + + Enabled *bool `xml:"enabled"` + Behavior string `xml:"behavior,omitempty"` + ModerateRemediation string `xml:"moderateRemediation,omitempty"` + SevereRemediation string `xml:"severeRemediation,omitempty"` + Providers []string `xml:"providers,omitempty"` +} + +func init() { + t["ClusterInfraUpdateHaConfigInfo"] = reflect.TypeOf((*ClusterInfraUpdateHaConfigInfo)(nil)).Elem() +} + +type ClusterInitialPlacementAction struct { + ClusterAction + + TargetHost ManagedObjectReference `xml:"targetHost"` + Pool *ManagedObjectReference `xml:"pool,omitempty"` +} + +func init() { + t["ClusterInitialPlacementAction"] = reflect.TypeOf((*ClusterInitialPlacementAction)(nil)).Elem() +} + +type ClusterIoFilterInfo struct { + IoFilterInfo + + OpType string `xml:"opType"` + VibUrl string `xml:"vibUrl,omitempty"` +} + +func init() { + t["ClusterIoFilterInfo"] = reflect.TypeOf((*ClusterIoFilterInfo)(nil)).Elem() +} + +type ClusterMigrationAction struct { + ClusterAction + + DrsMigration *ClusterDrsMigration `xml:"drsMigration,omitempty"` +} + +func init() { + t["ClusterMigrationAction"] = reflect.TypeOf((*ClusterMigrationAction)(nil)).Elem() +} + +type ClusterNetworkConfigSpec struct { + DynamicData + + NetworkPortGroup ManagedObjectReference `xml:"networkPortGroup"` + IpSettings CustomizationIPSettings `xml:"ipSettings"` +} + +func init() { + t["ClusterNetworkConfigSpec"] = reflect.TypeOf((*ClusterNetworkConfigSpec)(nil)).Elem() +} + +type ClusterNotAttemptedVmInfo struct { + DynamicData + + Vm ManagedObjectReference `xml:"vm"` + Fault LocalizedMethodFault `xml:"fault"` +} + +func init() { + t["ClusterNotAttemptedVmInfo"] = reflect.TypeOf((*ClusterNotAttemptedVmInfo)(nil)).Elem() +} + +type ClusterOrchestrationInfo struct { + DynamicData + + DefaultVmReadiness *ClusterVmReadiness `xml:"defaultVmReadiness,omitempty"` +} + +func init() { + t["ClusterOrchestrationInfo"] = reflect.TypeOf((*ClusterOrchestrationInfo)(nil)).Elem() +} + +type ClusterOvercommittedEvent struct { + ClusterEvent +} + +func init() { + t["ClusterOvercommittedEvent"] = reflect.TypeOf((*ClusterOvercommittedEvent)(nil)).Elem() +} + +type ClusterPowerOnVmResult struct { + DynamicData + + Attempted []ClusterAttemptedVmInfo `xml:"attempted,omitempty"` + NotAttempted []ClusterNotAttemptedVmInfo `xml:"notAttempted,omitempty"` + Recommendations []ClusterRecommendation `xml:"recommendations,omitempty"` +} + +func init() { + t["ClusterPowerOnVmResult"] = reflect.TypeOf((*ClusterPowerOnVmResult)(nil)).Elem() +} + +type ClusterProactiveDrsConfigInfo struct { + DynamicData + + Enabled *bool `xml:"enabled"` +} + +func init() { + t["ClusterProactiveDrsConfigInfo"] = reflect.TypeOf((*ClusterProactiveDrsConfigInfo)(nil)).Elem() +} + +type ClusterProfileCompleteConfigSpec struct { + ClusterProfileConfigSpec + + ComplyProfile *ComplianceProfile `xml:"complyProfile,omitempty"` +} + +func init() { + t["ClusterProfileCompleteConfigSpec"] = reflect.TypeOf((*ClusterProfileCompleteConfigSpec)(nil)).Elem() +} + +type ClusterProfileConfigInfo struct { + ProfileConfigInfo + + ComplyProfile *ComplianceProfile `xml:"complyProfile,omitempty"` +} + +func init() { + t["ClusterProfileConfigInfo"] = reflect.TypeOf((*ClusterProfileConfigInfo)(nil)).Elem() +} + +type ClusterProfileConfigServiceCreateSpec struct { + ClusterProfileConfigSpec + + ServiceType []string `xml:"serviceType,omitempty"` +} + +func init() { + t["ClusterProfileConfigServiceCreateSpec"] = reflect.TypeOf((*ClusterProfileConfigServiceCreateSpec)(nil)).Elem() +} + +type ClusterProfileConfigSpec struct { + ClusterProfileCreateSpec +} + +func init() { + t["ClusterProfileConfigSpec"] = reflect.TypeOf((*ClusterProfileConfigSpec)(nil)).Elem() +} + +type ClusterProfileCreateSpec struct { + ProfileCreateSpec +} + +func init() { + t["ClusterProfileCreateSpec"] = reflect.TypeOf((*ClusterProfileCreateSpec)(nil)).Elem() +} + +type ClusterRecommendation struct { + DynamicData + + Key string `xml:"key"` + Type string `xml:"type"` + Time time.Time `xml:"time"` + Rating int32 `xml:"rating"` + Reason string `xml:"reason"` + ReasonText string `xml:"reasonText"` + WarningText string `xml:"warningText,omitempty"` + WarningDetails *LocalizableMessage `xml:"warningDetails,omitempty"` + Prerequisite []string `xml:"prerequisite,omitempty"` + Action []BaseClusterAction `xml:"action,omitempty,typeattr"` + Target *ManagedObjectReference `xml:"target,omitempty"` +} + +func init() { + t["ClusterRecommendation"] = reflect.TypeOf((*ClusterRecommendation)(nil)).Elem() +} + +type ClusterReconfiguredEvent struct { + ClusterEvent + + ConfigChanges *ChangesInfoEventArgument `xml:"configChanges,omitempty"` +} + +func init() { + t["ClusterReconfiguredEvent"] = reflect.TypeOf((*ClusterReconfiguredEvent)(nil)).Elem() +} + +type ClusterResourceUsageSummary struct { + DynamicData + + CpuUsedMHz int32 `xml:"cpuUsedMHz"` + CpuCapacityMHz int32 `xml:"cpuCapacityMHz"` + MemUsedMB int32 `xml:"memUsedMB"` + MemCapacityMB int32 `xml:"memCapacityMB"` + PMemAvailableMB int64 `xml:"pMemAvailableMB,omitempty"` + PMemCapacityMB int64 `xml:"pMemCapacityMB,omitempty"` + StorageUsedMB int64 `xml:"storageUsedMB"` + StorageCapacityMB int64 `xml:"storageCapacityMB"` +} + +func init() { + t["ClusterResourceUsageSummary"] = reflect.TypeOf((*ClusterResourceUsageSummary)(nil)).Elem() +} + +type ClusterRuleInfo struct { + DynamicData + + Key int32 `xml:"key,omitempty"` + Status ManagedEntityStatus `xml:"status,omitempty"` + Enabled *bool `xml:"enabled"` + Name string `xml:"name,omitempty"` + Mandatory *bool `xml:"mandatory"` + UserCreated *bool `xml:"userCreated"` + InCompliance *bool `xml:"inCompliance"` + RuleUuid string `xml:"ruleUuid,omitempty"` +} + +func init() { + t["ClusterRuleInfo"] = reflect.TypeOf((*ClusterRuleInfo)(nil)).Elem() +} + +type ClusterRuleSpec struct { + ArrayUpdateSpec + + Info BaseClusterRuleInfo `xml:"info,omitempty,typeattr"` +} + +func init() { + t["ClusterRuleSpec"] = reflect.TypeOf((*ClusterRuleSpec)(nil)).Elem() +} + +type ClusterSlotPolicy struct { + DynamicData +} + +func init() { + t["ClusterSlotPolicy"] = reflect.TypeOf((*ClusterSlotPolicy)(nil)).Elem() +} + +type ClusterStatusChangedEvent struct { + ClusterEvent + + OldStatus string `xml:"oldStatus"` + NewStatus string `xml:"newStatus"` +} + +func init() { + t["ClusterStatusChangedEvent"] = reflect.TypeOf((*ClusterStatusChangedEvent)(nil)).Elem() +} + +type ClusterUsageSummary struct { + DynamicData + + TotalCpuCapacityMhz int32 `xml:"totalCpuCapacityMhz"` + TotalMemCapacityMB int32 `xml:"totalMemCapacityMB"` + CpuReservationMhz int32 `xml:"cpuReservationMhz"` + MemReservationMB int32 `xml:"memReservationMB"` + PoweredOffCpuReservationMhz int32 `xml:"poweredOffCpuReservationMhz,omitempty"` + PoweredOffMemReservationMB int32 `xml:"poweredOffMemReservationMB,omitempty"` + CpuDemandMhz int32 `xml:"cpuDemandMhz"` + MemDemandMB int32 `xml:"memDemandMB"` + StatsGenNumber int64 `xml:"statsGenNumber"` + CpuEntitledMhz int32 `xml:"cpuEntitledMhz"` + MemEntitledMB int32 `xml:"memEntitledMB"` + PoweredOffVmCount int32 `xml:"poweredOffVmCount"` + TotalVmCount int32 `xml:"totalVmCount"` +} + +func init() { + t["ClusterUsageSummary"] = reflect.TypeOf((*ClusterUsageSummary)(nil)).Elem() +} + +type ClusterVmComponentProtectionSettings struct { + DynamicData + + VmStorageProtectionForAPD string `xml:"vmStorageProtectionForAPD,omitempty"` + EnableAPDTimeoutForHosts *bool `xml:"enableAPDTimeoutForHosts"` + VmTerminateDelayForAPDSec int32 `xml:"vmTerminateDelayForAPDSec,omitempty"` + VmReactionOnAPDCleared string `xml:"vmReactionOnAPDCleared,omitempty"` + VmStorageProtectionForPDL string `xml:"vmStorageProtectionForPDL,omitempty"` +} + +func init() { + t["ClusterVmComponentProtectionSettings"] = reflect.TypeOf((*ClusterVmComponentProtectionSettings)(nil)).Elem() +} + +type ClusterVmGroup struct { + ClusterGroupInfo + + Vm []ManagedObjectReference `xml:"vm,omitempty"` +} + +func init() { + t["ClusterVmGroup"] = reflect.TypeOf((*ClusterVmGroup)(nil)).Elem() +} + +type ClusterVmHostRuleInfo struct { + ClusterRuleInfo + + VmGroupName string `xml:"vmGroupName,omitempty"` + AffineHostGroupName string `xml:"affineHostGroupName,omitempty"` + AntiAffineHostGroupName string `xml:"antiAffineHostGroupName,omitempty"` +} + +func init() { + t["ClusterVmHostRuleInfo"] = reflect.TypeOf((*ClusterVmHostRuleInfo)(nil)).Elem() +} + +type ClusterVmOrchestrationInfo struct { + DynamicData + + Vm ManagedObjectReference `xml:"vm"` + VmReadiness ClusterVmReadiness `xml:"vmReadiness"` +} + +func init() { + t["ClusterVmOrchestrationInfo"] = reflect.TypeOf((*ClusterVmOrchestrationInfo)(nil)).Elem() +} + +type ClusterVmOrchestrationSpec struct { + ArrayUpdateSpec + + Info *ClusterVmOrchestrationInfo `xml:"info,omitempty"` +} + +func init() { + t["ClusterVmOrchestrationSpec"] = reflect.TypeOf((*ClusterVmOrchestrationSpec)(nil)).Elem() +} + +type ClusterVmReadiness struct { + DynamicData + + ReadyCondition string `xml:"readyCondition,omitempty"` + PostReadyDelay int32 `xml:"postReadyDelay,omitempty"` +} + +func init() { + t["ClusterVmReadiness"] = reflect.TypeOf((*ClusterVmReadiness)(nil)).Elem() +} + +type ClusterVmToolsMonitoringSettings struct { + DynamicData + + Enabled *bool `xml:"enabled"` + VmMonitoring string `xml:"vmMonitoring,omitempty"` + ClusterSettings *bool `xml:"clusterSettings"` + FailureInterval int32 `xml:"failureInterval,omitempty"` + MinUpTime int32 `xml:"minUpTime,omitempty"` + MaxFailures int32 `xml:"maxFailures,omitempty"` + MaxFailureWindow int32 `xml:"maxFailureWindow,omitempty"` +} + +func init() { + t["ClusterVmToolsMonitoringSettings"] = reflect.TypeOf((*ClusterVmToolsMonitoringSettings)(nil)).Elem() +} + +type CollectorAddressUnset struct { + DvsFault +} + +func init() { + t["CollectorAddressUnset"] = reflect.TypeOf((*CollectorAddressUnset)(nil)).Elem() +} + +type CollectorAddressUnsetFault CollectorAddressUnset + +func init() { + t["CollectorAddressUnsetFault"] = reflect.TypeOf((*CollectorAddressUnsetFault)(nil)).Elem() +} + +type ComplianceFailure struct { + DynamicData + + FailureType string `xml:"failureType"` + Message LocalizableMessage `xml:"message"` + ExpressionName string `xml:"expressionName,omitempty"` + FailureValues []ComplianceFailureComplianceFailureValues `xml:"failureValues,omitempty"` +} + +func init() { + t["ComplianceFailure"] = reflect.TypeOf((*ComplianceFailure)(nil)).Elem() +} + +type ComplianceFailureComplianceFailureValues struct { + DynamicData + + ComparisonIdentifier string `xml:"comparisonIdentifier"` + ProfileInstance string `xml:"profileInstance,omitempty"` + HostValue AnyType `xml:"hostValue,omitempty,typeattr"` + ProfileValue AnyType `xml:"profileValue,omitempty,typeattr"` +} + +func init() { + t["ComplianceFailureComplianceFailureValues"] = reflect.TypeOf((*ComplianceFailureComplianceFailureValues)(nil)).Elem() +} + +type ComplianceLocator struct { + DynamicData + + ExpressionName string `xml:"expressionName"` + ApplyPath ProfilePropertyPath `xml:"applyPath"` +} + +func init() { + t["ComplianceLocator"] = reflect.TypeOf((*ComplianceLocator)(nil)).Elem() +} + +type ComplianceProfile struct { + DynamicData + + Expression []BaseProfileExpression `xml:"expression,typeattr"` + RootExpression string `xml:"rootExpression"` +} + +func init() { + t["ComplianceProfile"] = reflect.TypeOf((*ComplianceProfile)(nil)).Elem() +} + +type ComplianceResult struct { + DynamicData + + Profile *ManagedObjectReference `xml:"profile,omitempty"` + ComplianceStatus string `xml:"complianceStatus"` + Entity *ManagedObjectReference `xml:"entity,omitempty"` + CheckTime *time.Time `xml:"checkTime"` + Failure []ComplianceFailure `xml:"failure,omitempty"` +} + +func init() { + t["ComplianceResult"] = reflect.TypeOf((*ComplianceResult)(nil)).Elem() +} + +type CompositeHostProfileRequestType struct { + This ManagedObjectReference `xml:"_this"` + Source ManagedObjectReference `xml:"source"` + Targets []ManagedObjectReference `xml:"targets,omitempty"` + ToBeMerged *HostApplyProfile `xml:"toBeMerged,omitempty"` + ToBeReplacedWith *HostApplyProfile `xml:"toBeReplacedWith,omitempty"` + ToBeDeleted *HostApplyProfile `xml:"toBeDeleted,omitempty"` + EnableStatusToBeCopied *HostApplyProfile `xml:"enableStatusToBeCopied,omitempty"` +} + +func init() { + t["CompositeHostProfileRequestType"] = reflect.TypeOf((*CompositeHostProfileRequestType)(nil)).Elem() +} + +type CompositeHostProfile_Task CompositeHostProfileRequestType + +func init() { + t["CompositeHostProfile_Task"] = reflect.TypeOf((*CompositeHostProfile_Task)(nil)).Elem() +} + +type CompositeHostProfile_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CompositePolicyOption struct { + PolicyOption + + Option []BasePolicyOption `xml:"option,omitempty,typeattr"` +} + +func init() { + t["CompositePolicyOption"] = reflect.TypeOf((*CompositePolicyOption)(nil)).Elem() +} + +type ComputeDiskPartitionInfo ComputeDiskPartitionInfoRequestType + +func init() { + t["ComputeDiskPartitionInfo"] = reflect.TypeOf((*ComputeDiskPartitionInfo)(nil)).Elem() +} + +type ComputeDiskPartitionInfoForResize ComputeDiskPartitionInfoForResizeRequestType + +func init() { + t["ComputeDiskPartitionInfoForResize"] = reflect.TypeOf((*ComputeDiskPartitionInfoForResize)(nil)).Elem() +} + +type ComputeDiskPartitionInfoForResizeRequestType struct { + This ManagedObjectReference `xml:"_this"` + Partition HostScsiDiskPartition `xml:"partition"` + BlockRange HostDiskPartitionBlockRange `xml:"blockRange"` + PartitionFormat string `xml:"partitionFormat,omitempty"` +} + +func init() { + t["ComputeDiskPartitionInfoForResizeRequestType"] = reflect.TypeOf((*ComputeDiskPartitionInfoForResizeRequestType)(nil)).Elem() +} + +type ComputeDiskPartitionInfoForResizeResponse struct { + Returnval HostDiskPartitionInfo `xml:"returnval"` +} + +type ComputeDiskPartitionInfoRequestType struct { + This ManagedObjectReference `xml:"_this"` + DevicePath string `xml:"devicePath"` + Layout HostDiskPartitionLayout `xml:"layout"` + PartitionFormat string `xml:"partitionFormat,omitempty"` +} + +func init() { + t["ComputeDiskPartitionInfoRequestType"] = reflect.TypeOf((*ComputeDiskPartitionInfoRequestType)(nil)).Elem() +} + +type ComputeDiskPartitionInfoResponse struct { + Returnval HostDiskPartitionInfo `xml:"returnval"` +} + +type ComputeResourceConfigInfo struct { + DynamicData + + VmSwapPlacement string `xml:"vmSwapPlacement"` + SpbmEnabled *bool `xml:"spbmEnabled"` + DefaultHardwareVersionKey string `xml:"defaultHardwareVersionKey,omitempty"` +} + +func init() { + t["ComputeResourceConfigInfo"] = reflect.TypeOf((*ComputeResourceConfigInfo)(nil)).Elem() +} + +type ComputeResourceConfigSpec struct { + DynamicData + + VmSwapPlacement string `xml:"vmSwapPlacement,omitempty"` + SpbmEnabled *bool `xml:"spbmEnabled"` + DefaultHardwareVersionKey string `xml:"defaultHardwareVersionKey,omitempty"` + DesiredSoftwareSpec *DesiredSoftwareSpec `xml:"desiredSoftwareSpec,omitempty"` +} + +func init() { + t["ComputeResourceConfigSpec"] = reflect.TypeOf((*ComputeResourceConfigSpec)(nil)).Elem() +} + +type ComputeResourceEventArgument struct { + EntityEventArgument + + ComputeResource ManagedObjectReference `xml:"computeResource"` +} + +func init() { + t["ComputeResourceEventArgument"] = reflect.TypeOf((*ComputeResourceEventArgument)(nil)).Elem() +} + +type ComputeResourceHostSPBMLicenseInfo struct { + DynamicData + + Host ManagedObjectReference `xml:"host"` + LicenseState ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseState `xml:"licenseState"` +} + +func init() { + t["ComputeResourceHostSPBMLicenseInfo"] = reflect.TypeOf((*ComputeResourceHostSPBMLicenseInfo)(nil)).Elem() +} + +type ComputeResourceSummary struct { + DynamicData + + TotalCpu int32 `xml:"totalCpu"` + TotalMemory int64 `xml:"totalMemory"` + NumCpuCores int16 `xml:"numCpuCores"` + NumCpuThreads int16 `xml:"numCpuThreads"` + EffectiveCpu int32 `xml:"effectiveCpu"` + EffectiveMemory int64 `xml:"effectiveMemory"` + NumHosts int32 `xml:"numHosts"` + NumEffectiveHosts int32 `xml:"numEffectiveHosts"` + OverallStatus ManagedEntityStatus `xml:"overallStatus"` +} + +func init() { + t["ComputeResourceSummary"] = reflect.TypeOf((*ComputeResourceSummary)(nil)).Elem() +} + +type ConcurrentAccess struct { + VimFault +} + +func init() { + t["ConcurrentAccess"] = reflect.TypeOf((*ConcurrentAccess)(nil)).Elem() +} + +type ConcurrentAccessFault ConcurrentAccess + +func init() { + t["ConcurrentAccessFault"] = reflect.TypeOf((*ConcurrentAccessFault)(nil)).Elem() +} + +type ConfigTarget struct { + DynamicData + + NumCpus int32 `xml:"numCpus"` + NumCpuCores int32 `xml:"numCpuCores"` + NumNumaNodes int32 `xml:"numNumaNodes"` + MaxCpusPerHost int32 `xml:"maxCpusPerHost,omitempty"` + SmcPresent *bool `xml:"smcPresent"` + Datastore []VirtualMachineDatastoreInfo `xml:"datastore,omitempty"` + Network []VirtualMachineNetworkInfo `xml:"network,omitempty"` + OpaqueNetwork []OpaqueNetworkTargetInfo `xml:"opaqueNetwork,omitempty"` + DistributedVirtualPortgroup []DistributedVirtualPortgroupInfo `xml:"distributedVirtualPortgroup,omitempty"` + DistributedVirtualSwitch []DistributedVirtualSwitchInfo `xml:"distributedVirtualSwitch,omitempty"` + CdRom []VirtualMachineCdromInfo `xml:"cdRom,omitempty"` + Serial []VirtualMachineSerialInfo `xml:"serial,omitempty"` + Parallel []VirtualMachineParallelInfo `xml:"parallel,omitempty"` + Sound []VirtualMachineSoundInfo `xml:"sound,omitempty"` + Usb []VirtualMachineUsbInfo `xml:"usb,omitempty"` + Floppy []VirtualMachineFloppyInfo `xml:"floppy,omitempty"` + LegacyNetworkInfo []VirtualMachineLegacyNetworkSwitchInfo `xml:"legacyNetworkInfo,omitempty"` + ScsiPassthrough []VirtualMachineScsiPassthroughInfo `xml:"scsiPassthrough,omitempty"` + ScsiDisk []VirtualMachineScsiDiskDeviceInfo `xml:"scsiDisk,omitempty"` + IdeDisk []VirtualMachineIdeDiskDeviceInfo `xml:"ideDisk,omitempty"` + MaxMemMBOptimalPerf int32 `xml:"maxMemMBOptimalPerf"` + SupportedMaxMemMB int32 `xml:"supportedMaxMemMB,omitempty"` + ResourcePool *ResourcePoolRuntimeInfo `xml:"resourcePool,omitempty"` + AutoVmotion *bool `xml:"autoVmotion"` + PciPassthrough []BaseVirtualMachinePciPassthroughInfo `xml:"pciPassthrough,omitempty,typeattr"` + Sriov []VirtualMachineSriovInfo `xml:"sriov,omitempty"` + VFlashModule []VirtualMachineVFlashModuleInfo `xml:"vFlashModule,omitempty"` + SharedGpuPassthroughTypes []VirtualMachinePciSharedGpuPassthroughInfo `xml:"sharedGpuPassthroughTypes,omitempty"` + AvailablePersistentMemoryReservationMB int64 `xml:"availablePersistentMemoryReservationMB,omitempty"` + DynamicPassthrough []VirtualMachineDynamicPassthroughInfo `xml:"dynamicPassthrough,omitempty"` + SgxTargetInfo *VirtualMachineSgxTargetInfo `xml:"sgxTargetInfo,omitempty"` + PrecisionClockInfo []VirtualMachinePrecisionClockInfo `xml:"precisionClockInfo,omitempty"` +} + +func init() { + t["ConfigTarget"] = reflect.TypeOf((*ConfigTarget)(nil)).Elem() +} + +type ConfigureCryptoKey ConfigureCryptoKeyRequestType + +func init() { + t["ConfigureCryptoKey"] = reflect.TypeOf((*ConfigureCryptoKey)(nil)).Elem() +} + +type ConfigureCryptoKeyRequestType struct { + This ManagedObjectReference `xml:"_this"` + KeyId *CryptoKeyId `xml:"keyId,omitempty"` +} + +func init() { + t["ConfigureCryptoKeyRequestType"] = reflect.TypeOf((*ConfigureCryptoKeyRequestType)(nil)).Elem() +} + +type ConfigureCryptoKeyResponse struct { +} + +type ConfigureDatastoreIORMRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datastore ManagedObjectReference `xml:"datastore"` + Spec StorageIORMConfigSpec `xml:"spec"` +} + +func init() { + t["ConfigureDatastoreIORMRequestType"] = reflect.TypeOf((*ConfigureDatastoreIORMRequestType)(nil)).Elem() +} + +type ConfigureDatastoreIORM_Task ConfigureDatastoreIORMRequestType + +func init() { + t["ConfigureDatastoreIORM_Task"] = reflect.TypeOf((*ConfigureDatastoreIORM_Task)(nil)).Elem() +} + +type ConfigureDatastoreIORM_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ConfigureDatastorePrincipal ConfigureDatastorePrincipalRequestType + +func init() { + t["ConfigureDatastorePrincipal"] = reflect.TypeOf((*ConfigureDatastorePrincipal)(nil)).Elem() +} + +type ConfigureDatastorePrincipalRequestType struct { + This ManagedObjectReference `xml:"_this"` + UserName string `xml:"userName"` + Password string `xml:"password,omitempty"` +} + +func init() { + t["ConfigureDatastorePrincipalRequestType"] = reflect.TypeOf((*ConfigureDatastorePrincipalRequestType)(nil)).Elem() +} + +type ConfigureDatastorePrincipalResponse struct { +} + +type ConfigureEvcModeRequestType struct { + This ManagedObjectReference `xml:"_this"` + EvcModeKey string `xml:"evcModeKey"` +} + +func init() { + t["ConfigureEvcModeRequestType"] = reflect.TypeOf((*ConfigureEvcModeRequestType)(nil)).Elem() +} + +type ConfigureEvcMode_Task ConfigureEvcModeRequestType + +func init() { + t["ConfigureEvcMode_Task"] = reflect.TypeOf((*ConfigureEvcMode_Task)(nil)).Elem() +} + +type ConfigureEvcMode_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ConfigureHCIRequestType struct { + This ManagedObjectReference `xml:"_this"` + ClusterSpec ClusterComputeResourceHCIConfigSpec `xml:"clusterSpec"` + HostInputs []ClusterComputeResourceHostConfigurationInput `xml:"hostInputs,omitempty"` +} + +func init() { + t["ConfigureHCIRequestType"] = reflect.TypeOf((*ConfigureHCIRequestType)(nil)).Elem() +} + +type ConfigureHCI_Task ConfigureHCIRequestType + +func init() { + t["ConfigureHCI_Task"] = reflect.TypeOf((*ConfigureHCI_Task)(nil)).Elem() +} + +type ConfigureHCI_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ConfigureHostCacheRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec HostCacheConfigurationSpec `xml:"spec"` +} + +func init() { + t["ConfigureHostCacheRequestType"] = reflect.TypeOf((*ConfigureHostCacheRequestType)(nil)).Elem() +} + +type ConfigureHostCache_Task ConfigureHostCacheRequestType + +func init() { + t["ConfigureHostCache_Task"] = reflect.TypeOf((*ConfigureHostCache_Task)(nil)).Elem() +} + +type ConfigureHostCache_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ConfigureLicenseSource ConfigureLicenseSourceRequestType + +func init() { + t["ConfigureLicenseSource"] = reflect.TypeOf((*ConfigureLicenseSource)(nil)).Elem() +} + +type ConfigureLicenseSourceRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host *ManagedObjectReference `xml:"host,omitempty"` + LicenseSource BaseLicenseSource `xml:"licenseSource,typeattr"` +} + +func init() { + t["ConfigureLicenseSourceRequestType"] = reflect.TypeOf((*ConfigureLicenseSourceRequestType)(nil)).Elem() +} + +type ConfigureLicenseSourceResponse struct { +} + +type ConfigurePowerPolicy ConfigurePowerPolicyRequestType + +func init() { + t["ConfigurePowerPolicy"] = reflect.TypeOf((*ConfigurePowerPolicy)(nil)).Elem() +} + +type ConfigurePowerPolicyRequestType struct { + This ManagedObjectReference `xml:"_this"` + Key int32 `xml:"key"` +} + +func init() { + t["ConfigurePowerPolicyRequestType"] = reflect.TypeOf((*ConfigurePowerPolicyRequestType)(nil)).Elem() +} + +type ConfigurePowerPolicyResponse struct { +} + +type ConfigureStorageDrsForPodRequestType struct { + This ManagedObjectReference `xml:"_this"` + Pod ManagedObjectReference `xml:"pod"` + Spec StorageDrsConfigSpec `xml:"spec"` + Modify bool `xml:"modify"` +} + +func init() { + t["ConfigureStorageDrsForPodRequestType"] = reflect.TypeOf((*ConfigureStorageDrsForPodRequestType)(nil)).Elem() +} + +type ConfigureStorageDrsForPod_Task ConfigureStorageDrsForPodRequestType + +func init() { + t["ConfigureStorageDrsForPod_Task"] = reflect.TypeOf((*ConfigureStorageDrsForPod_Task)(nil)).Elem() +} + +type ConfigureStorageDrsForPod_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ConfigureVFlashResourceExRequestType struct { + This ManagedObjectReference `xml:"_this"` + DevicePath []string `xml:"devicePath,omitempty"` +} + +func init() { + t["ConfigureVFlashResourceExRequestType"] = reflect.TypeOf((*ConfigureVFlashResourceExRequestType)(nil)).Elem() +} + +type ConfigureVFlashResourceEx_Task ConfigureVFlashResourceExRequestType + +func init() { + t["ConfigureVFlashResourceEx_Task"] = reflect.TypeOf((*ConfigureVFlashResourceEx_Task)(nil)).Elem() +} + +type ConfigureVFlashResourceEx_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ConflictingConfiguration struct { + DvsFault + + ConfigInConflict []ConflictingConfigurationConfig `xml:"configInConflict"` +} + +func init() { + t["ConflictingConfiguration"] = reflect.TypeOf((*ConflictingConfiguration)(nil)).Elem() +} + +type ConflictingConfigurationConfig struct { + DynamicData + + Entity *ManagedObjectReference `xml:"entity,omitempty"` + PropertyPath string `xml:"propertyPath"` +} + +func init() { + t["ConflictingConfigurationConfig"] = reflect.TypeOf((*ConflictingConfigurationConfig)(nil)).Elem() +} + +type ConflictingConfigurationFault ConflictingConfiguration + +func init() { + t["ConflictingConfigurationFault"] = reflect.TypeOf((*ConflictingConfigurationFault)(nil)).Elem() +} + +type ConflictingDatastoreFound struct { + RuntimeFault + + Name string `xml:"name"` + Url string `xml:"url"` +} + +func init() { + t["ConflictingDatastoreFound"] = reflect.TypeOf((*ConflictingDatastoreFound)(nil)).Elem() +} + +type ConflictingDatastoreFoundFault ConflictingDatastoreFound + +func init() { + t["ConflictingDatastoreFoundFault"] = reflect.TypeOf((*ConflictingDatastoreFoundFault)(nil)).Elem() +} + +type ConnectNvmeController ConnectNvmeControllerRequestType + +func init() { + t["ConnectNvmeController"] = reflect.TypeOf((*ConnectNvmeController)(nil)).Elem() +} + +type ConnectNvmeControllerRequestType struct { + This ManagedObjectReference `xml:"_this"` + ConnectSpec HostNvmeConnectSpec `xml:"connectSpec"` +} + +func init() { + t["ConnectNvmeControllerRequestType"] = reflect.TypeOf((*ConnectNvmeControllerRequestType)(nil)).Elem() +} + +type ConnectNvmeControllerResponse struct { +} + +type ConnectedIso struct { + OvfExport + + Cdrom VirtualCdrom `xml:"cdrom"` + Filename string `xml:"filename"` +} + +func init() { + t["ConnectedIso"] = reflect.TypeOf((*ConnectedIso)(nil)).Elem() +} + +type ConnectedIsoFault ConnectedIso + +func init() { + t["ConnectedIsoFault"] = reflect.TypeOf((*ConnectedIsoFault)(nil)).Elem() +} + +type ConsolidateVMDisksRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["ConsolidateVMDisksRequestType"] = reflect.TypeOf((*ConsolidateVMDisksRequestType)(nil)).Elem() +} + +type ConsolidateVMDisks_Task ConsolidateVMDisksRequestType + +func init() { + t["ConsolidateVMDisks_Task"] = reflect.TypeOf((*ConsolidateVMDisks_Task)(nil)).Elem() +} + +type ConsolidateVMDisks_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ContinueRetrievePropertiesEx ContinueRetrievePropertiesExRequestType + +func init() { + t["ContinueRetrievePropertiesEx"] = reflect.TypeOf((*ContinueRetrievePropertiesEx)(nil)).Elem() +} + +type ContinueRetrievePropertiesExRequestType struct { + This ManagedObjectReference `xml:"_this"` + Token string `xml:"token"` +} + +func init() { + t["ContinueRetrievePropertiesExRequestType"] = reflect.TypeOf((*ContinueRetrievePropertiesExRequestType)(nil)).Elem() +} + +type ContinueRetrievePropertiesExResponse struct { + Returnval RetrieveResult `xml:"returnval"` +} + +type ConvertNamespacePathToUuidPath ConvertNamespacePathToUuidPathRequestType + +func init() { + t["ConvertNamespacePathToUuidPath"] = reflect.TypeOf((*ConvertNamespacePathToUuidPath)(nil)).Elem() +} + +type ConvertNamespacePathToUuidPathRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` + NamespaceUrl string `xml:"namespaceUrl"` +} + +func init() { + t["ConvertNamespacePathToUuidPathRequestType"] = reflect.TypeOf((*ConvertNamespacePathToUuidPathRequestType)(nil)).Elem() +} + +type ConvertNamespacePathToUuidPathResponse struct { + Returnval string `xml:"returnval"` +} + +type CopyDatastoreFileRequestType struct { + This ManagedObjectReference `xml:"_this"` + SourceName string `xml:"sourceName"` + SourceDatacenter *ManagedObjectReference `xml:"sourceDatacenter,omitempty"` + DestinationName string `xml:"destinationName"` + DestinationDatacenter *ManagedObjectReference `xml:"destinationDatacenter,omitempty"` + Force *bool `xml:"force"` +} + +func init() { + t["CopyDatastoreFileRequestType"] = reflect.TypeOf((*CopyDatastoreFileRequestType)(nil)).Elem() +} + +type CopyDatastoreFile_Task CopyDatastoreFileRequestType + +func init() { + t["CopyDatastoreFile_Task"] = reflect.TypeOf((*CopyDatastoreFile_Task)(nil)).Elem() +} + +type CopyDatastoreFile_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CopyVirtualDiskRequestType struct { + This ManagedObjectReference `xml:"_this"` + SourceName string `xml:"sourceName"` + SourceDatacenter *ManagedObjectReference `xml:"sourceDatacenter,omitempty"` + DestName string `xml:"destName"` + DestDatacenter *ManagedObjectReference `xml:"destDatacenter,omitempty"` + DestSpec BaseVirtualDiskSpec `xml:"destSpec,omitempty,typeattr"` + Force *bool `xml:"force"` +} + +func init() { + t["CopyVirtualDiskRequestType"] = reflect.TypeOf((*CopyVirtualDiskRequestType)(nil)).Elem() +} + +type CopyVirtualDisk_Task CopyVirtualDiskRequestType + +func init() { + t["CopyVirtualDisk_Task"] = reflect.TypeOf((*CopyVirtualDisk_Task)(nil)).Elem() +} + +type CopyVirtualDisk_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CpuCompatibilityUnknown struct { + CpuIncompatible +} + +func init() { + t["CpuCompatibilityUnknown"] = reflect.TypeOf((*CpuCompatibilityUnknown)(nil)).Elem() +} + +type CpuCompatibilityUnknownFault CpuCompatibilityUnknown + +func init() { + t["CpuCompatibilityUnknownFault"] = reflect.TypeOf((*CpuCompatibilityUnknownFault)(nil)).Elem() +} + +type CpuHotPlugNotSupported struct { + VmConfigFault +} + +func init() { + t["CpuHotPlugNotSupported"] = reflect.TypeOf((*CpuHotPlugNotSupported)(nil)).Elem() +} + +type CpuHotPlugNotSupportedFault CpuHotPlugNotSupported + +func init() { + t["CpuHotPlugNotSupportedFault"] = reflect.TypeOf((*CpuHotPlugNotSupportedFault)(nil)).Elem() +} + +type CpuIncompatible struct { + VirtualHardwareCompatibilityIssue + + Level int32 `xml:"level"` + RegisterName string `xml:"registerName"` + RegisterBits string `xml:"registerBits,omitempty"` + DesiredBits string `xml:"desiredBits,omitempty"` + Host *ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["CpuIncompatible"] = reflect.TypeOf((*CpuIncompatible)(nil)).Elem() +} + +type CpuIncompatible1ECX struct { + CpuIncompatible + + Sse3 bool `xml:"sse3"` + Pclmulqdq *bool `xml:"pclmulqdq"` + Ssse3 bool `xml:"ssse3"` + Sse41 bool `xml:"sse41"` + Sse42 bool `xml:"sse42"` + Aes *bool `xml:"aes"` + Other bool `xml:"other"` + OtherOnly bool `xml:"otherOnly"` +} + +func init() { + t["CpuIncompatible1ECX"] = reflect.TypeOf((*CpuIncompatible1ECX)(nil)).Elem() +} + +type CpuIncompatible1ECXFault CpuIncompatible1ECX + +func init() { + t["CpuIncompatible1ECXFault"] = reflect.TypeOf((*CpuIncompatible1ECXFault)(nil)).Elem() +} + +type CpuIncompatible81EDX struct { + CpuIncompatible + + Nx bool `xml:"nx"` + Ffxsr bool `xml:"ffxsr"` + Rdtscp bool `xml:"rdtscp"` + Lm bool `xml:"lm"` + Other bool `xml:"other"` + OtherOnly bool `xml:"otherOnly"` +} + +func init() { + t["CpuIncompatible81EDX"] = reflect.TypeOf((*CpuIncompatible81EDX)(nil)).Elem() +} + +type CpuIncompatible81EDXFault CpuIncompatible81EDX + +func init() { + t["CpuIncompatible81EDXFault"] = reflect.TypeOf((*CpuIncompatible81EDXFault)(nil)).Elem() +} + +type CpuIncompatibleFault BaseCpuIncompatible + +func init() { + t["CpuIncompatibleFault"] = reflect.TypeOf((*CpuIncompatibleFault)(nil)).Elem() +} + +type CreateAlarm CreateAlarmRequestType + +func init() { + t["CreateAlarm"] = reflect.TypeOf((*CreateAlarm)(nil)).Elem() +} + +type CreateAlarmRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity ManagedObjectReference `xml:"entity"` + Spec BaseAlarmSpec `xml:"spec,typeattr"` +} + +func init() { + t["CreateAlarmRequestType"] = reflect.TypeOf((*CreateAlarmRequestType)(nil)).Elem() +} + +type CreateAlarmResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateChildVMRequestType struct { + This ManagedObjectReference `xml:"_this"` + Config VirtualMachineConfigSpec `xml:"config"` + Host *ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["CreateChildVMRequestType"] = reflect.TypeOf((*CreateChildVMRequestType)(nil)).Elem() +} + +type CreateChildVM_Task CreateChildVMRequestType + +func init() { + t["CreateChildVM_Task"] = reflect.TypeOf((*CreateChildVM_Task)(nil)).Elem() +} + +type CreateChildVM_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateCluster CreateClusterRequestType + +func init() { + t["CreateCluster"] = reflect.TypeOf((*CreateCluster)(nil)).Elem() +} + +type CreateClusterEx CreateClusterExRequestType + +func init() { + t["CreateClusterEx"] = reflect.TypeOf((*CreateClusterEx)(nil)).Elem() +} + +type CreateClusterExRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + Spec ClusterConfigSpecEx `xml:"spec"` +} + +func init() { + t["CreateClusterExRequestType"] = reflect.TypeOf((*CreateClusterExRequestType)(nil)).Elem() +} + +type CreateClusterExResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateClusterRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + Spec ClusterConfigSpec `xml:"spec"` +} + +func init() { + t["CreateClusterRequestType"] = reflect.TypeOf((*CreateClusterRequestType)(nil)).Elem() +} + +type CreateClusterResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateCollectorForEvents CreateCollectorForEventsRequestType + +func init() { + t["CreateCollectorForEvents"] = reflect.TypeOf((*CreateCollectorForEvents)(nil)).Elem() +} + +type CreateCollectorForEventsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Filter EventFilterSpec `xml:"filter"` +} + +func init() { + t["CreateCollectorForEventsRequestType"] = reflect.TypeOf((*CreateCollectorForEventsRequestType)(nil)).Elem() +} + +type CreateCollectorForEventsResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateCollectorForTasks CreateCollectorForTasksRequestType + +func init() { + t["CreateCollectorForTasks"] = reflect.TypeOf((*CreateCollectorForTasks)(nil)).Elem() +} + +type CreateCollectorForTasksRequestType struct { + This ManagedObjectReference `xml:"_this"` + Filter TaskFilterSpec `xml:"filter"` +} + +func init() { + t["CreateCollectorForTasksRequestType"] = reflect.TypeOf((*CreateCollectorForTasksRequestType)(nil)).Elem() +} + +type CreateCollectorForTasksResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateContainerView CreateContainerViewRequestType + +func init() { + t["CreateContainerView"] = reflect.TypeOf((*CreateContainerView)(nil)).Elem() +} + +type CreateContainerViewRequestType struct { + This ManagedObjectReference `xml:"_this"` + Container ManagedObjectReference `xml:"container"` + Type []string `xml:"type,omitempty"` + Recursive bool `xml:"recursive"` +} + +func init() { + t["CreateContainerViewRequestType"] = reflect.TypeOf((*CreateContainerViewRequestType)(nil)).Elem() +} + +type CreateContainerViewResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateCustomizationSpec CreateCustomizationSpecRequestType + +func init() { + t["CreateCustomizationSpec"] = reflect.TypeOf((*CreateCustomizationSpec)(nil)).Elem() +} + +type CreateCustomizationSpecRequestType struct { + This ManagedObjectReference `xml:"_this"` + Item CustomizationSpecItem `xml:"item"` +} + +func init() { + t["CreateCustomizationSpecRequestType"] = reflect.TypeOf((*CreateCustomizationSpecRequestType)(nil)).Elem() +} + +type CreateCustomizationSpecResponse struct { +} + +type CreateDVPortgroupRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec DVPortgroupConfigSpec `xml:"spec"` +} + +func init() { + t["CreateDVPortgroupRequestType"] = reflect.TypeOf((*CreateDVPortgroupRequestType)(nil)).Elem() +} + +type CreateDVPortgroup_Task CreateDVPortgroupRequestType + +func init() { + t["CreateDVPortgroup_Task"] = reflect.TypeOf((*CreateDVPortgroup_Task)(nil)).Elem() +} + +type CreateDVPortgroup_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateDVSRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec DVSCreateSpec `xml:"spec"` +} + +func init() { + t["CreateDVSRequestType"] = reflect.TypeOf((*CreateDVSRequestType)(nil)).Elem() +} + +type CreateDVS_Task CreateDVSRequestType + +func init() { + t["CreateDVS_Task"] = reflect.TypeOf((*CreateDVS_Task)(nil)).Elem() +} + +type CreateDVS_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateDatacenter CreateDatacenterRequestType + +func init() { + t["CreateDatacenter"] = reflect.TypeOf((*CreateDatacenter)(nil)).Elem() +} + +type CreateDatacenterRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` +} + +func init() { + t["CreateDatacenterRequestType"] = reflect.TypeOf((*CreateDatacenterRequestType)(nil)).Elem() +} + +type CreateDatacenterResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateDefaultProfile CreateDefaultProfileRequestType + +func init() { + t["CreateDefaultProfile"] = reflect.TypeOf((*CreateDefaultProfile)(nil)).Elem() +} + +type CreateDefaultProfileRequestType struct { + This ManagedObjectReference `xml:"_this"` + ProfileType string `xml:"profileType"` + ProfileTypeName string `xml:"profileTypeName,omitempty"` + Profile *ManagedObjectReference `xml:"profile,omitempty"` +} + +func init() { + t["CreateDefaultProfileRequestType"] = reflect.TypeOf((*CreateDefaultProfileRequestType)(nil)).Elem() +} + +type CreateDefaultProfileResponse struct { + Returnval BaseApplyProfile `xml:"returnval,typeattr"` +} + +type CreateDescriptor CreateDescriptorRequestType + +func init() { + t["CreateDescriptor"] = reflect.TypeOf((*CreateDescriptor)(nil)).Elem() +} + +type CreateDescriptorRequestType struct { + This ManagedObjectReference `xml:"_this"` + Obj ManagedObjectReference `xml:"obj"` + Cdp OvfCreateDescriptorParams `xml:"cdp"` +} + +func init() { + t["CreateDescriptorRequestType"] = reflect.TypeOf((*CreateDescriptorRequestType)(nil)).Elem() +} + +type CreateDescriptorResponse struct { + Returnval OvfCreateDescriptorResult `xml:"returnval"` +} + +type CreateDiagnosticPartition CreateDiagnosticPartitionRequestType + +func init() { + t["CreateDiagnosticPartition"] = reflect.TypeOf((*CreateDiagnosticPartition)(nil)).Elem() +} + +type CreateDiagnosticPartitionRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec HostDiagnosticPartitionCreateSpec `xml:"spec"` +} + +func init() { + t["CreateDiagnosticPartitionRequestType"] = reflect.TypeOf((*CreateDiagnosticPartitionRequestType)(nil)).Elem() +} + +type CreateDiagnosticPartitionResponse struct { +} + +type CreateDirectory CreateDirectoryRequestType + +func init() { + t["CreateDirectory"] = reflect.TypeOf((*CreateDirectory)(nil)).Elem() +} + +type CreateDirectoryRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datastore ManagedObjectReference `xml:"datastore"` + DisplayName string `xml:"displayName,omitempty"` + Policy string `xml:"policy,omitempty"` +} + +func init() { + t["CreateDirectoryRequestType"] = reflect.TypeOf((*CreateDirectoryRequestType)(nil)).Elem() +} + +type CreateDirectoryResponse struct { + Returnval string `xml:"returnval"` +} + +type CreateDiskFromSnapshotRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + SnapshotId ID `xml:"snapshotId"` + Name string `xml:"name"` + Profile []BaseVirtualMachineProfileSpec `xml:"profile,omitempty,typeattr"` + Crypto BaseCryptoSpec `xml:"crypto,omitempty,typeattr"` + Path string `xml:"path,omitempty"` +} + +func init() { + t["CreateDiskFromSnapshotRequestType"] = reflect.TypeOf((*CreateDiskFromSnapshotRequestType)(nil)).Elem() +} + +type CreateDiskFromSnapshot_Task CreateDiskFromSnapshotRequestType + +func init() { + t["CreateDiskFromSnapshot_Task"] = reflect.TypeOf((*CreateDiskFromSnapshot_Task)(nil)).Elem() +} + +type CreateDiskFromSnapshot_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateDiskRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec VslmCreateSpec `xml:"spec"` +} + +func init() { + t["CreateDiskRequestType"] = reflect.TypeOf((*CreateDiskRequestType)(nil)).Elem() +} + +type CreateDisk_Task CreateDiskRequestType + +func init() { + t["CreateDisk_Task"] = reflect.TypeOf((*CreateDisk_Task)(nil)).Elem() +} + +type CreateDisk_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateFilter CreateFilterRequestType + +func init() { + t["CreateFilter"] = reflect.TypeOf((*CreateFilter)(nil)).Elem() +} + +type CreateFilterRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec PropertyFilterSpec `xml:"spec"` + PartialUpdates bool `xml:"partialUpdates"` +} + +func init() { + t["CreateFilterRequestType"] = reflect.TypeOf((*CreateFilterRequestType)(nil)).Elem() +} + +type CreateFilterResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateFolder CreateFolderRequestType + +func init() { + t["CreateFolder"] = reflect.TypeOf((*CreateFolder)(nil)).Elem() +} + +type CreateFolderRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` +} + +func init() { + t["CreateFolderRequestType"] = reflect.TypeOf((*CreateFolderRequestType)(nil)).Elem() +} + +type CreateFolderResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateGroup CreateGroupRequestType + +func init() { + t["CreateGroup"] = reflect.TypeOf((*CreateGroup)(nil)).Elem() +} + +type CreateGroupRequestType struct { + This ManagedObjectReference `xml:"_this"` + Group BaseHostAccountSpec `xml:"group,typeattr"` +} + +func init() { + t["CreateGroupRequestType"] = reflect.TypeOf((*CreateGroupRequestType)(nil)).Elem() +} + +type CreateGroupResponse struct { +} + +type CreateImportSpec CreateImportSpecRequestType + +func init() { + t["CreateImportSpec"] = reflect.TypeOf((*CreateImportSpec)(nil)).Elem() +} + +type CreateImportSpecRequestType struct { + This ManagedObjectReference `xml:"_this"` + OvfDescriptor string `xml:"ovfDescriptor"` + ResourcePool ManagedObjectReference `xml:"resourcePool"` + Datastore ManagedObjectReference `xml:"datastore"` + Cisp OvfCreateImportSpecParams `xml:"cisp"` +} + +func init() { + t["CreateImportSpecRequestType"] = reflect.TypeOf((*CreateImportSpecRequestType)(nil)).Elem() +} + +type CreateImportSpecResponse struct { + Returnval OvfCreateImportSpecResult `xml:"returnval"` +} + +type CreateInventoryView CreateInventoryViewRequestType + +func init() { + t["CreateInventoryView"] = reflect.TypeOf((*CreateInventoryView)(nil)).Elem() +} + +type CreateInventoryViewRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["CreateInventoryViewRequestType"] = reflect.TypeOf((*CreateInventoryViewRequestType)(nil)).Elem() +} + +type CreateInventoryViewResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateIpPool CreateIpPoolRequestType + +func init() { + t["CreateIpPool"] = reflect.TypeOf((*CreateIpPool)(nil)).Elem() +} + +type CreateIpPoolRequestType struct { + This ManagedObjectReference `xml:"_this"` + Dc ManagedObjectReference `xml:"dc"` + Pool IpPool `xml:"pool"` +} + +func init() { + t["CreateIpPoolRequestType"] = reflect.TypeOf((*CreateIpPoolRequestType)(nil)).Elem() +} + +type CreateIpPoolResponse struct { + Returnval int32 `xml:"returnval"` +} + +type CreateListView CreateListViewRequestType + +func init() { + t["CreateListView"] = reflect.TypeOf((*CreateListView)(nil)).Elem() +} + +type CreateListViewFromView CreateListViewFromViewRequestType + +func init() { + t["CreateListViewFromView"] = reflect.TypeOf((*CreateListViewFromView)(nil)).Elem() +} + +type CreateListViewFromViewRequestType struct { + This ManagedObjectReference `xml:"_this"` + View ManagedObjectReference `xml:"view"` +} + +func init() { + t["CreateListViewFromViewRequestType"] = reflect.TypeOf((*CreateListViewFromViewRequestType)(nil)).Elem() +} + +type CreateListViewFromViewResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateListViewRequestType struct { + This ManagedObjectReference `xml:"_this"` + Obj []ManagedObjectReference `xml:"obj,omitempty"` +} + +func init() { + t["CreateListViewRequestType"] = reflect.TypeOf((*CreateListViewRequestType)(nil)).Elem() +} + +type CreateListViewResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateLocalDatastore CreateLocalDatastoreRequestType + +func init() { + t["CreateLocalDatastore"] = reflect.TypeOf((*CreateLocalDatastore)(nil)).Elem() +} + +type CreateLocalDatastoreRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + Path string `xml:"path"` +} + +func init() { + t["CreateLocalDatastoreRequestType"] = reflect.TypeOf((*CreateLocalDatastoreRequestType)(nil)).Elem() +} + +type CreateLocalDatastoreResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateNasDatastore CreateNasDatastoreRequestType + +func init() { + t["CreateNasDatastore"] = reflect.TypeOf((*CreateNasDatastore)(nil)).Elem() +} + +type CreateNasDatastoreRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec HostNasVolumeSpec `xml:"spec"` +} + +func init() { + t["CreateNasDatastoreRequestType"] = reflect.TypeOf((*CreateNasDatastoreRequestType)(nil)).Elem() +} + +type CreateNasDatastoreResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateNvdimmNamespaceRequestType struct { + This ManagedObjectReference `xml:"_this"` + CreateSpec NvdimmNamespaceCreateSpec `xml:"createSpec"` +} + +func init() { + t["CreateNvdimmNamespaceRequestType"] = reflect.TypeOf((*CreateNvdimmNamespaceRequestType)(nil)).Elem() +} + +type CreateNvdimmNamespace_Task CreateNvdimmNamespaceRequestType + +func init() { + t["CreateNvdimmNamespace_Task"] = reflect.TypeOf((*CreateNvdimmNamespace_Task)(nil)).Elem() +} + +type CreateNvdimmNamespace_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateNvdimmPMemNamespaceRequestType struct { + This ManagedObjectReference `xml:"_this"` + CreateSpec NvdimmPMemNamespaceCreateSpec `xml:"createSpec"` +} + +func init() { + t["CreateNvdimmPMemNamespaceRequestType"] = reflect.TypeOf((*CreateNvdimmPMemNamespaceRequestType)(nil)).Elem() +} + +type CreateNvdimmPMemNamespace_Task CreateNvdimmPMemNamespaceRequestType + +func init() { + t["CreateNvdimmPMemNamespace_Task"] = reflect.TypeOf((*CreateNvdimmPMemNamespace_Task)(nil)).Elem() +} + +type CreateNvdimmPMemNamespace_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateNvmeOverRdmaAdapter CreateNvmeOverRdmaAdapterRequestType + +func init() { + t["CreateNvmeOverRdmaAdapter"] = reflect.TypeOf((*CreateNvmeOverRdmaAdapter)(nil)).Elem() +} + +type CreateNvmeOverRdmaAdapterRequestType struct { + This ManagedObjectReference `xml:"_this"` + RdmaDeviceName string `xml:"rdmaDeviceName"` +} + +func init() { + t["CreateNvmeOverRdmaAdapterRequestType"] = reflect.TypeOf((*CreateNvmeOverRdmaAdapterRequestType)(nil)).Elem() +} + +type CreateNvmeOverRdmaAdapterResponse struct { +} + +type CreateObjectScheduledTask CreateObjectScheduledTaskRequestType + +func init() { + t["CreateObjectScheduledTask"] = reflect.TypeOf((*CreateObjectScheduledTask)(nil)).Elem() +} + +type CreateObjectScheduledTaskRequestType struct { + This ManagedObjectReference `xml:"_this"` + Obj ManagedObjectReference `xml:"obj"` + Spec BaseScheduledTaskSpec `xml:"spec,typeattr"` +} + +func init() { + t["CreateObjectScheduledTaskRequestType"] = reflect.TypeOf((*CreateObjectScheduledTaskRequestType)(nil)).Elem() +} + +type CreateObjectScheduledTaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreatePerfInterval CreatePerfIntervalRequestType + +func init() { + t["CreatePerfInterval"] = reflect.TypeOf((*CreatePerfInterval)(nil)).Elem() +} + +type CreatePerfIntervalRequestType struct { + This ManagedObjectReference `xml:"_this"` + IntervalId PerfInterval `xml:"intervalId"` +} + +func init() { + t["CreatePerfIntervalRequestType"] = reflect.TypeOf((*CreatePerfIntervalRequestType)(nil)).Elem() +} + +type CreatePerfIntervalResponse struct { +} + +type CreateProfile CreateProfileRequestType + +func init() { + t["CreateProfile"] = reflect.TypeOf((*CreateProfile)(nil)).Elem() +} + +type CreateProfileRequestType struct { + This ManagedObjectReference `xml:"_this"` + CreateSpec BaseProfileCreateSpec `xml:"createSpec,typeattr"` +} + +func init() { + t["CreateProfileRequestType"] = reflect.TypeOf((*CreateProfileRequestType)(nil)).Elem() +} + +type CreateProfileResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreatePropertyCollector CreatePropertyCollectorRequestType + +func init() { + t["CreatePropertyCollector"] = reflect.TypeOf((*CreatePropertyCollector)(nil)).Elem() +} + +type CreatePropertyCollectorRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["CreatePropertyCollectorRequestType"] = reflect.TypeOf((*CreatePropertyCollectorRequestType)(nil)).Elem() +} + +type CreatePropertyCollectorResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateRegistryKeyInGuest CreateRegistryKeyInGuestRequestType + +func init() { + t["CreateRegistryKeyInGuest"] = reflect.TypeOf((*CreateRegistryKeyInGuest)(nil)).Elem() +} + +type CreateRegistryKeyInGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + KeyName GuestRegKeyNameSpec `xml:"keyName"` + IsVolatile bool `xml:"isVolatile"` + ClassType string `xml:"classType,omitempty"` +} + +func init() { + t["CreateRegistryKeyInGuestRequestType"] = reflect.TypeOf((*CreateRegistryKeyInGuestRequestType)(nil)).Elem() +} + +type CreateRegistryKeyInGuestResponse struct { +} + +type CreateResourcePool CreateResourcePoolRequestType + +func init() { + t["CreateResourcePool"] = reflect.TypeOf((*CreateResourcePool)(nil)).Elem() +} + +type CreateResourcePoolRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + Spec ResourceConfigSpec `xml:"spec"` +} + +func init() { + t["CreateResourcePoolRequestType"] = reflect.TypeOf((*CreateResourcePoolRequestType)(nil)).Elem() +} + +type CreateResourcePoolResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateScheduledTask CreateScheduledTaskRequestType + +func init() { + t["CreateScheduledTask"] = reflect.TypeOf((*CreateScheduledTask)(nil)).Elem() +} + +type CreateScheduledTaskRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity ManagedObjectReference `xml:"entity"` + Spec BaseScheduledTaskSpec `xml:"spec,typeattr"` +} + +func init() { + t["CreateScheduledTaskRequestType"] = reflect.TypeOf((*CreateScheduledTaskRequestType)(nil)).Elem() +} + +type CreateScheduledTaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateScreenshotRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["CreateScreenshotRequestType"] = reflect.TypeOf((*CreateScreenshotRequestType)(nil)).Elem() +} + +type CreateScreenshot_Task CreateScreenshotRequestType + +func init() { + t["CreateScreenshot_Task"] = reflect.TypeOf((*CreateScreenshot_Task)(nil)).Elem() +} + +type CreateScreenshot_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateSecondaryVMExRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host *ManagedObjectReference `xml:"host,omitempty"` + Spec *FaultToleranceConfigSpec `xml:"spec,omitempty"` +} + +func init() { + t["CreateSecondaryVMExRequestType"] = reflect.TypeOf((*CreateSecondaryVMExRequestType)(nil)).Elem() +} + +type CreateSecondaryVMEx_Task CreateSecondaryVMExRequestType + +func init() { + t["CreateSecondaryVMEx_Task"] = reflect.TypeOf((*CreateSecondaryVMEx_Task)(nil)).Elem() +} + +type CreateSecondaryVMEx_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateSecondaryVMRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host *ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["CreateSecondaryVMRequestType"] = reflect.TypeOf((*CreateSecondaryVMRequestType)(nil)).Elem() +} + +type CreateSecondaryVM_Task CreateSecondaryVMRequestType + +func init() { + t["CreateSecondaryVM_Task"] = reflect.TypeOf((*CreateSecondaryVM_Task)(nil)).Elem() +} + +type CreateSecondaryVM_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateSnapshotExRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + Description string `xml:"description,omitempty"` + Memory bool `xml:"memory"` + QuiesceSpec BaseVirtualMachineGuestQuiesceSpec `xml:"quiesceSpec,omitempty,typeattr"` +} + +func init() { + t["CreateSnapshotExRequestType"] = reflect.TypeOf((*CreateSnapshotExRequestType)(nil)).Elem() +} + +type CreateSnapshotEx_Task CreateSnapshotExRequestType + +func init() { + t["CreateSnapshotEx_Task"] = reflect.TypeOf((*CreateSnapshotEx_Task)(nil)).Elem() +} + +type CreateSnapshotEx_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateSnapshotRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + Description string `xml:"description,omitempty"` + Memory bool `xml:"memory"` + Quiesce bool `xml:"quiesce"` +} + +func init() { + t["CreateSnapshotRequestType"] = reflect.TypeOf((*CreateSnapshotRequestType)(nil)).Elem() +} + +type CreateSnapshot_Task CreateSnapshotRequestType + +func init() { + t["CreateSnapshot_Task"] = reflect.TypeOf((*CreateSnapshot_Task)(nil)).Elem() +} + +type CreateSnapshot_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateStoragePod CreateStoragePodRequestType + +func init() { + t["CreateStoragePod"] = reflect.TypeOf((*CreateStoragePod)(nil)).Elem() +} + +type CreateStoragePodRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` +} + +func init() { + t["CreateStoragePodRequestType"] = reflect.TypeOf((*CreateStoragePodRequestType)(nil)).Elem() +} + +type CreateStoragePodResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateTask CreateTaskRequestType + +func init() { + t["CreateTask"] = reflect.TypeOf((*CreateTask)(nil)).Elem() +} + +type CreateTaskAction struct { + Action + + TaskTypeId string `xml:"taskTypeId"` + Cancelable bool `xml:"cancelable"` +} + +func init() { + t["CreateTaskAction"] = reflect.TypeOf((*CreateTaskAction)(nil)).Elem() +} + +type CreateTaskRequestType struct { + This ManagedObjectReference `xml:"_this"` + Obj ManagedObjectReference `xml:"obj"` + TaskTypeId string `xml:"taskTypeId"` + InitiatedBy string `xml:"initiatedBy,omitempty"` + Cancelable bool `xml:"cancelable"` + ParentTaskKey string `xml:"parentTaskKey,omitempty"` + ActivationId string `xml:"activationId,omitempty"` +} + +func init() { + t["CreateTaskRequestType"] = reflect.TypeOf((*CreateTaskRequestType)(nil)).Elem() +} + +type CreateTaskResponse struct { + Returnval TaskInfo `xml:"returnval"` +} + +type CreateTemporaryDirectoryInGuest CreateTemporaryDirectoryInGuestRequestType + +func init() { + t["CreateTemporaryDirectoryInGuest"] = reflect.TypeOf((*CreateTemporaryDirectoryInGuest)(nil)).Elem() +} + +type CreateTemporaryDirectoryInGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + Prefix string `xml:"prefix"` + Suffix string `xml:"suffix"` + DirectoryPath string `xml:"directoryPath,omitempty"` +} + +func init() { + t["CreateTemporaryDirectoryInGuestRequestType"] = reflect.TypeOf((*CreateTemporaryDirectoryInGuestRequestType)(nil)).Elem() +} + +type CreateTemporaryDirectoryInGuestResponse struct { + Returnval string `xml:"returnval"` +} + +type CreateTemporaryFileInGuest CreateTemporaryFileInGuestRequestType + +func init() { + t["CreateTemporaryFileInGuest"] = reflect.TypeOf((*CreateTemporaryFileInGuest)(nil)).Elem() +} + +type CreateTemporaryFileInGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + Prefix string `xml:"prefix"` + Suffix string `xml:"suffix"` + DirectoryPath string `xml:"directoryPath,omitempty"` +} + +func init() { + t["CreateTemporaryFileInGuestRequestType"] = reflect.TypeOf((*CreateTemporaryFileInGuestRequestType)(nil)).Elem() +} + +type CreateTemporaryFileInGuestResponse struct { + Returnval string `xml:"returnval"` +} + +type CreateUser CreateUserRequestType + +func init() { + t["CreateUser"] = reflect.TypeOf((*CreateUser)(nil)).Elem() +} + +type CreateUserRequestType struct { + This ManagedObjectReference `xml:"_this"` + User BaseHostAccountSpec `xml:"user,typeattr"` +} + +func init() { + t["CreateUserRequestType"] = reflect.TypeOf((*CreateUserRequestType)(nil)).Elem() +} + +type CreateUserResponse struct { +} + +type CreateVApp CreateVAppRequestType + +func init() { + t["CreateVApp"] = reflect.TypeOf((*CreateVApp)(nil)).Elem() +} + +type CreateVAppRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + ResSpec ResourceConfigSpec `xml:"resSpec"` + ConfigSpec VAppConfigSpec `xml:"configSpec"` + VmFolder *ManagedObjectReference `xml:"vmFolder,omitempty"` +} + +func init() { + t["CreateVAppRequestType"] = reflect.TypeOf((*CreateVAppRequestType)(nil)).Elem() +} + +type CreateVAppResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateVMRequestType struct { + This ManagedObjectReference `xml:"_this"` + Config VirtualMachineConfigSpec `xml:"config"` + Pool ManagedObjectReference `xml:"pool"` + Host *ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["CreateVMRequestType"] = reflect.TypeOf((*CreateVMRequestType)(nil)).Elem() +} + +type CreateVM_Task CreateVMRequestType + +func init() { + t["CreateVM_Task"] = reflect.TypeOf((*CreateVM_Task)(nil)).Elem() +} + +type CreateVM_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateVirtualDiskRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` + Spec BaseVirtualDiskSpec `xml:"spec,typeattr"` +} + +func init() { + t["CreateVirtualDiskRequestType"] = reflect.TypeOf((*CreateVirtualDiskRequestType)(nil)).Elem() +} + +type CreateVirtualDisk_Task CreateVirtualDiskRequestType + +func init() { + t["CreateVirtualDisk_Task"] = reflect.TypeOf((*CreateVirtualDisk_Task)(nil)).Elem() +} + +type CreateVirtualDisk_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateVmfsDatastore CreateVmfsDatastoreRequestType + +func init() { + t["CreateVmfsDatastore"] = reflect.TypeOf((*CreateVmfsDatastore)(nil)).Elem() +} + +type CreateVmfsDatastoreRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec VmfsDatastoreCreateSpec `xml:"spec"` +} + +func init() { + t["CreateVmfsDatastoreRequestType"] = reflect.TypeOf((*CreateVmfsDatastoreRequestType)(nil)).Elem() +} + +type CreateVmfsDatastoreResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateVvolDatastore CreateVvolDatastoreRequestType + +func init() { + t["CreateVvolDatastore"] = reflect.TypeOf((*CreateVvolDatastore)(nil)).Elem() +} + +type CreateVvolDatastoreRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec HostDatastoreSystemVvolDatastoreSpec `xml:"spec"` +} + +func init() { + t["CreateVvolDatastoreRequestType"] = reflect.TypeOf((*CreateVvolDatastoreRequestType)(nil)).Elem() +} + +type CreateVvolDatastoreResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CryptoKeyId struct { + DynamicData + + KeyId string `xml:"keyId"` + ProviderId *KeyProviderId `xml:"providerId,omitempty"` +} + +func init() { + t["CryptoKeyId"] = reflect.TypeOf((*CryptoKeyId)(nil)).Elem() +} + +type CryptoKeyPlain struct { + DynamicData + + KeyId CryptoKeyId `xml:"keyId"` + Algorithm string `xml:"algorithm"` + KeyData string `xml:"keyData"` +} + +func init() { + t["CryptoKeyPlain"] = reflect.TypeOf((*CryptoKeyPlain)(nil)).Elem() +} + +type CryptoKeyResult struct { + DynamicData + + KeyId CryptoKeyId `xml:"keyId"` + Success bool `xml:"success"` + Reason string `xml:"reason,omitempty"` +} + +func init() { + t["CryptoKeyResult"] = reflect.TypeOf((*CryptoKeyResult)(nil)).Elem() +} + +type CryptoManagerHostDisable CryptoManagerHostDisableRequestType + +func init() { + t["CryptoManagerHostDisable"] = reflect.TypeOf((*CryptoManagerHostDisable)(nil)).Elem() +} + +type CryptoManagerHostDisableRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["CryptoManagerHostDisableRequestType"] = reflect.TypeOf((*CryptoManagerHostDisableRequestType)(nil)).Elem() +} + +type CryptoManagerHostDisableResponse struct { +} + +type CryptoManagerHostEnable CryptoManagerHostEnableRequestType + +func init() { + t["CryptoManagerHostEnable"] = reflect.TypeOf((*CryptoManagerHostEnable)(nil)).Elem() +} + +type CryptoManagerHostEnableRequestType struct { + This ManagedObjectReference `xml:"_this"` + InitialKey CryptoKeyPlain `xml:"initialKey"` +} + +func init() { + t["CryptoManagerHostEnableRequestType"] = reflect.TypeOf((*CryptoManagerHostEnableRequestType)(nil)).Elem() +} + +type CryptoManagerHostEnableResponse struct { +} + +type CryptoManagerHostPrepare CryptoManagerHostPrepareRequestType + +func init() { + t["CryptoManagerHostPrepare"] = reflect.TypeOf((*CryptoManagerHostPrepare)(nil)).Elem() +} + +type CryptoManagerHostPrepareRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["CryptoManagerHostPrepareRequestType"] = reflect.TypeOf((*CryptoManagerHostPrepareRequestType)(nil)).Elem() +} + +type CryptoManagerHostPrepareResponse struct { +} + +type CryptoManagerKmipCertificateInfo struct { + DynamicData + + Subject string `xml:"subject"` + Issuer string `xml:"issuer"` + SerialNumber string `xml:"serialNumber"` + NotBefore time.Time `xml:"notBefore"` + NotAfter time.Time `xml:"notAfter"` + Fingerprint string `xml:"fingerprint"` + CheckTime time.Time `xml:"checkTime"` + SecondsSinceValid int32 `xml:"secondsSinceValid,omitempty"` + SecondsBeforeExpire int32 `xml:"secondsBeforeExpire,omitempty"` +} + +func init() { + t["CryptoManagerKmipCertificateInfo"] = reflect.TypeOf((*CryptoManagerKmipCertificateInfo)(nil)).Elem() +} + +type CryptoManagerKmipClusterStatus struct { + DynamicData + + ClusterId KeyProviderId `xml:"clusterId"` + OverallStatus ManagedEntityStatus `xml:"overallStatus,omitempty"` + ManagementType string `xml:"managementType,omitempty"` + Servers []CryptoManagerKmipServerStatus `xml:"servers"` + ClientCertInfo *CryptoManagerKmipCertificateInfo `xml:"clientCertInfo,omitempty"` +} + +func init() { + t["CryptoManagerKmipClusterStatus"] = reflect.TypeOf((*CryptoManagerKmipClusterStatus)(nil)).Elem() +} + +type CryptoManagerKmipCryptoKeyStatus struct { + DynamicData + + KeyId CryptoKeyId `xml:"keyId"` + KeyAvailable *bool `xml:"keyAvailable"` + Reason string `xml:"reason,omitempty"` + EncryptedVMs []ManagedObjectReference `xml:"encryptedVMs,omitempty"` + AffectedHosts []ManagedObjectReference `xml:"affectedHosts,omitempty"` + ReferencedByTags []string `xml:"referencedByTags,omitempty"` +} + +func init() { + t["CryptoManagerKmipCryptoKeyStatus"] = reflect.TypeOf((*CryptoManagerKmipCryptoKeyStatus)(nil)).Elem() +} + +type CryptoManagerKmipServerCertInfo struct { + DynamicData + + Certificate string `xml:"certificate"` + CertInfo *CryptoManagerKmipCertificateInfo `xml:"certInfo,omitempty"` + ClientTrustServer *bool `xml:"clientTrustServer"` +} + +func init() { + t["CryptoManagerKmipServerCertInfo"] = reflect.TypeOf((*CryptoManagerKmipServerCertInfo)(nil)).Elem() +} + +type CryptoManagerKmipServerStatus struct { + DynamicData + + Name string `xml:"name"` + Status ManagedEntityStatus `xml:"status"` + ConnectionStatus string `xml:"connectionStatus"` + CertInfo *CryptoManagerKmipCertificateInfo `xml:"certInfo,omitempty"` + ClientTrustServer *bool `xml:"clientTrustServer"` + ServerTrustClient *bool `xml:"serverTrustClient"` +} + +func init() { + t["CryptoManagerKmipServerStatus"] = reflect.TypeOf((*CryptoManagerKmipServerStatus)(nil)).Elem() +} + +type CryptoSpec struct { + DynamicData +} + +func init() { + t["CryptoSpec"] = reflect.TypeOf((*CryptoSpec)(nil)).Elem() +} + +type CryptoSpecDecrypt struct { + CryptoSpec +} + +func init() { + t["CryptoSpecDecrypt"] = reflect.TypeOf((*CryptoSpecDecrypt)(nil)).Elem() +} + +type CryptoSpecDeepRecrypt struct { + CryptoSpec + + NewKeyId CryptoKeyId `xml:"newKeyId"` +} + +func init() { + t["CryptoSpecDeepRecrypt"] = reflect.TypeOf((*CryptoSpecDeepRecrypt)(nil)).Elem() +} + +type CryptoSpecEncrypt struct { + CryptoSpec + + CryptoKeyId CryptoKeyId `xml:"cryptoKeyId"` +} + +func init() { + t["CryptoSpecEncrypt"] = reflect.TypeOf((*CryptoSpecEncrypt)(nil)).Elem() +} + +type CryptoSpecNoOp struct { + CryptoSpec +} + +func init() { + t["CryptoSpecNoOp"] = reflect.TypeOf((*CryptoSpecNoOp)(nil)).Elem() +} + +type CryptoSpecRegister struct { + CryptoSpecNoOp + + CryptoKeyId CryptoKeyId `xml:"cryptoKeyId"` +} + +func init() { + t["CryptoSpecRegister"] = reflect.TypeOf((*CryptoSpecRegister)(nil)).Elem() +} + +type CryptoSpecShallowRecrypt struct { + CryptoSpec + + NewKeyId CryptoKeyId `xml:"newKeyId"` +} + +func init() { + t["CryptoSpecShallowRecrypt"] = reflect.TypeOf((*CryptoSpecShallowRecrypt)(nil)).Elem() +} + +type CryptoUnlockRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["CryptoUnlockRequestType"] = reflect.TypeOf((*CryptoUnlockRequestType)(nil)).Elem() +} + +type CryptoUnlock_Task CryptoUnlockRequestType + +func init() { + t["CryptoUnlock_Task"] = reflect.TypeOf((*CryptoUnlock_Task)(nil)).Elem() +} + +type CryptoUnlock_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CurrentTime CurrentTimeRequestType + +func init() { + t["CurrentTime"] = reflect.TypeOf((*CurrentTime)(nil)).Elem() +} + +type CurrentTimeRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["CurrentTimeRequestType"] = reflect.TypeOf((*CurrentTimeRequestType)(nil)).Elem() +} + +type CurrentTimeResponse struct { + Returnval time.Time `xml:"returnval"` +} + +type CustomFieldDef struct { + DynamicData + + Key int32 `xml:"key"` + Name string `xml:"name"` + Type string `xml:"type"` + ManagedObjectType string `xml:"managedObjectType,omitempty"` + FieldDefPrivileges *PrivilegePolicyDef `xml:"fieldDefPrivileges,omitempty"` + FieldInstancePrivileges *PrivilegePolicyDef `xml:"fieldInstancePrivileges,omitempty"` +} + +func init() { + t["CustomFieldDef"] = reflect.TypeOf((*CustomFieldDef)(nil)).Elem() +} + +type CustomFieldDefAddedEvent struct { + CustomFieldDefEvent +} + +func init() { + t["CustomFieldDefAddedEvent"] = reflect.TypeOf((*CustomFieldDefAddedEvent)(nil)).Elem() +} + +type CustomFieldDefEvent struct { + CustomFieldEvent + + FieldKey int32 `xml:"fieldKey"` + Name string `xml:"name"` +} + +func init() { + t["CustomFieldDefEvent"] = reflect.TypeOf((*CustomFieldDefEvent)(nil)).Elem() +} + +type CustomFieldDefRemovedEvent struct { + CustomFieldDefEvent +} + +func init() { + t["CustomFieldDefRemovedEvent"] = reflect.TypeOf((*CustomFieldDefRemovedEvent)(nil)).Elem() +} + +type CustomFieldDefRenamedEvent struct { + CustomFieldDefEvent + + NewName string `xml:"newName"` +} + +func init() { + t["CustomFieldDefRenamedEvent"] = reflect.TypeOf((*CustomFieldDefRenamedEvent)(nil)).Elem() +} + +type CustomFieldEvent struct { + Event +} + +func init() { + t["CustomFieldEvent"] = reflect.TypeOf((*CustomFieldEvent)(nil)).Elem() +} + +type CustomFieldStringValue struct { + CustomFieldValue + + Value string `xml:"value"` +} + +func init() { + t["CustomFieldStringValue"] = reflect.TypeOf((*CustomFieldStringValue)(nil)).Elem() +} + +type CustomFieldValue struct { + DynamicData + + Key int32 `xml:"key"` +} + +func init() { + t["CustomFieldValue"] = reflect.TypeOf((*CustomFieldValue)(nil)).Elem() +} + +type CustomFieldValueChangedEvent struct { + CustomFieldEvent + + Entity ManagedEntityEventArgument `xml:"entity"` + FieldKey int32 `xml:"fieldKey"` + Name string `xml:"name"` + Value string `xml:"value"` + PrevState string `xml:"prevState,omitempty"` +} + +func init() { + t["CustomFieldValueChangedEvent"] = reflect.TypeOf((*CustomFieldValueChangedEvent)(nil)).Elem() +} + +type CustomizationAdapterMapping struct { + DynamicData + + MacAddress string `xml:"macAddress,omitempty"` + Adapter CustomizationIPSettings `xml:"adapter"` +} + +func init() { + t["CustomizationAdapterMapping"] = reflect.TypeOf((*CustomizationAdapterMapping)(nil)).Elem() +} + +type CustomizationAutoIpV6Generator struct { + CustomizationIpV6Generator +} + +func init() { + t["CustomizationAutoIpV6Generator"] = reflect.TypeOf((*CustomizationAutoIpV6Generator)(nil)).Elem() +} + +type CustomizationCustomIpGenerator struct { + CustomizationIpGenerator + + Argument string `xml:"argument,omitempty"` +} + +func init() { + t["CustomizationCustomIpGenerator"] = reflect.TypeOf((*CustomizationCustomIpGenerator)(nil)).Elem() +} + +type CustomizationCustomIpV6Generator struct { + CustomizationIpV6Generator + + Argument string `xml:"argument,omitempty"` +} + +func init() { + t["CustomizationCustomIpV6Generator"] = reflect.TypeOf((*CustomizationCustomIpV6Generator)(nil)).Elem() +} + +type CustomizationCustomName struct { + CustomizationName + + Argument string `xml:"argument,omitempty"` +} + +func init() { + t["CustomizationCustomName"] = reflect.TypeOf((*CustomizationCustomName)(nil)).Elem() +} + +type CustomizationDhcpIpGenerator struct { + CustomizationIpGenerator +} + +func init() { + t["CustomizationDhcpIpGenerator"] = reflect.TypeOf((*CustomizationDhcpIpGenerator)(nil)).Elem() +} + +type CustomizationDhcpIpV6Generator struct { + CustomizationIpV6Generator +} + +func init() { + t["CustomizationDhcpIpV6Generator"] = reflect.TypeOf((*CustomizationDhcpIpV6Generator)(nil)).Elem() +} + +type CustomizationEvent struct { + VmEvent + + LogLocation string `xml:"logLocation,omitempty"` +} + +func init() { + t["CustomizationEvent"] = reflect.TypeOf((*CustomizationEvent)(nil)).Elem() +} + +type CustomizationFailed struct { + CustomizationEvent + + Reason string `xml:"reason,omitempty"` +} + +func init() { + t["CustomizationFailed"] = reflect.TypeOf((*CustomizationFailed)(nil)).Elem() +} + +type CustomizationFault struct { + VimFault +} + +func init() { + t["CustomizationFault"] = reflect.TypeOf((*CustomizationFault)(nil)).Elem() +} + +type CustomizationFaultFault BaseCustomizationFault + +func init() { + t["CustomizationFaultFault"] = reflect.TypeOf((*CustomizationFaultFault)(nil)).Elem() +} + +type CustomizationFixedIp struct { + CustomizationIpGenerator + + IpAddress string `xml:"ipAddress"` +} + +func init() { + t["CustomizationFixedIp"] = reflect.TypeOf((*CustomizationFixedIp)(nil)).Elem() +} + +type CustomizationFixedIpV6 struct { + CustomizationIpV6Generator + + IpAddress string `xml:"ipAddress"` + SubnetMask int32 `xml:"subnetMask"` +} + +func init() { + t["CustomizationFixedIpV6"] = reflect.TypeOf((*CustomizationFixedIpV6)(nil)).Elem() +} + +type CustomizationFixedName struct { + CustomizationName + + Name string `xml:"name"` +} + +func init() { + t["CustomizationFixedName"] = reflect.TypeOf((*CustomizationFixedName)(nil)).Elem() +} + +type CustomizationGlobalIPSettings struct { + DynamicData + + DnsSuffixList []string `xml:"dnsSuffixList,omitempty"` + DnsServerList []string `xml:"dnsServerList,omitempty"` +} + +func init() { + t["CustomizationGlobalIPSettings"] = reflect.TypeOf((*CustomizationGlobalIPSettings)(nil)).Elem() +} + +type CustomizationGuiRunOnce struct { + DynamicData + + CommandList []string `xml:"commandList"` +} + +func init() { + t["CustomizationGuiRunOnce"] = reflect.TypeOf((*CustomizationGuiRunOnce)(nil)).Elem() +} + +type CustomizationGuiUnattended struct { + DynamicData + + Password *CustomizationPassword `xml:"password,omitempty"` + TimeZone int32 `xml:"timeZone"` + AutoLogon bool `xml:"autoLogon"` + AutoLogonCount int32 `xml:"autoLogonCount"` +} + +func init() { + t["CustomizationGuiUnattended"] = reflect.TypeOf((*CustomizationGuiUnattended)(nil)).Elem() +} + +type CustomizationIPSettings struct { + DynamicData + + Ip BaseCustomizationIpGenerator `xml:"ip,typeattr"` + SubnetMask string `xml:"subnetMask,omitempty"` + Gateway []string `xml:"gateway,omitempty"` + IpV6Spec *CustomizationIPSettingsIpV6AddressSpec `xml:"ipV6Spec,omitempty"` + DnsServerList []string `xml:"dnsServerList,omitempty"` + DnsDomain string `xml:"dnsDomain,omitempty"` + PrimaryWINS string `xml:"primaryWINS,omitempty"` + SecondaryWINS string `xml:"secondaryWINS,omitempty"` + NetBIOS CustomizationNetBIOSMode `xml:"netBIOS,omitempty"` +} + +func init() { + t["CustomizationIPSettings"] = reflect.TypeOf((*CustomizationIPSettings)(nil)).Elem() +} + +type CustomizationIPSettingsIpV6AddressSpec struct { + DynamicData + + Ip []BaseCustomizationIpV6Generator `xml:"ip,typeattr"` + Gateway []string `xml:"gateway,omitempty"` +} + +func init() { + t["CustomizationIPSettingsIpV6AddressSpec"] = reflect.TypeOf((*CustomizationIPSettingsIpV6AddressSpec)(nil)).Elem() +} + +type CustomizationIdentification struct { + DynamicData + + JoinWorkgroup string `xml:"joinWorkgroup,omitempty"` + JoinDomain string `xml:"joinDomain,omitempty"` + DomainAdmin string `xml:"domainAdmin,omitempty"` + DomainAdminPassword *CustomizationPassword `xml:"domainAdminPassword,omitempty"` +} + +func init() { + t["CustomizationIdentification"] = reflect.TypeOf((*CustomizationIdentification)(nil)).Elem() +} + +type CustomizationIdentitySettings struct { + DynamicData +} + +func init() { + t["CustomizationIdentitySettings"] = reflect.TypeOf((*CustomizationIdentitySettings)(nil)).Elem() +} + +type CustomizationIpGenerator struct { + DynamicData +} + +func init() { + t["CustomizationIpGenerator"] = reflect.TypeOf((*CustomizationIpGenerator)(nil)).Elem() +} + +type CustomizationIpV6Generator struct { + DynamicData +} + +func init() { + t["CustomizationIpV6Generator"] = reflect.TypeOf((*CustomizationIpV6Generator)(nil)).Elem() +} + +type CustomizationLicenseFilePrintData struct { + DynamicData + + AutoMode CustomizationLicenseDataMode `xml:"autoMode"` + AutoUsers int32 `xml:"autoUsers,omitempty"` +} + +func init() { + t["CustomizationLicenseFilePrintData"] = reflect.TypeOf((*CustomizationLicenseFilePrintData)(nil)).Elem() +} + +type CustomizationLinuxIdentityFailed struct { + CustomizationFailed +} + +func init() { + t["CustomizationLinuxIdentityFailed"] = reflect.TypeOf((*CustomizationLinuxIdentityFailed)(nil)).Elem() +} + +type CustomizationLinuxOptions struct { + CustomizationOptions +} + +func init() { + t["CustomizationLinuxOptions"] = reflect.TypeOf((*CustomizationLinuxOptions)(nil)).Elem() +} + +type CustomizationLinuxPrep struct { + CustomizationIdentitySettings + + HostName BaseCustomizationName `xml:"hostName,typeattr"` + Domain string `xml:"domain"` + TimeZone string `xml:"timeZone,omitempty"` + HwClockUTC *bool `xml:"hwClockUTC"` + ScriptText string `xml:"scriptText,omitempty"` +} + +func init() { + t["CustomizationLinuxPrep"] = reflect.TypeOf((*CustomizationLinuxPrep)(nil)).Elem() +} + +type CustomizationName struct { + DynamicData +} + +func init() { + t["CustomizationName"] = reflect.TypeOf((*CustomizationName)(nil)).Elem() +} + +type CustomizationNetworkSetupFailed struct { + CustomizationFailed +} + +func init() { + t["CustomizationNetworkSetupFailed"] = reflect.TypeOf((*CustomizationNetworkSetupFailed)(nil)).Elem() +} + +type CustomizationOptions struct { + DynamicData +} + +func init() { + t["CustomizationOptions"] = reflect.TypeOf((*CustomizationOptions)(nil)).Elem() +} + +type CustomizationPassword struct { + DynamicData + + Value string `xml:"value"` + PlainText bool `xml:"plainText"` +} + +func init() { + t["CustomizationPassword"] = reflect.TypeOf((*CustomizationPassword)(nil)).Elem() +} + +type CustomizationPending struct { + CustomizationFault +} + +func init() { + t["CustomizationPending"] = reflect.TypeOf((*CustomizationPending)(nil)).Elem() +} + +type CustomizationPendingFault CustomizationPending + +func init() { + t["CustomizationPendingFault"] = reflect.TypeOf((*CustomizationPendingFault)(nil)).Elem() +} + +type CustomizationPrefixName struct { + CustomizationName + + Base string `xml:"base"` +} + +func init() { + t["CustomizationPrefixName"] = reflect.TypeOf((*CustomizationPrefixName)(nil)).Elem() +} + +type CustomizationSpec struct { + DynamicData + + Options BaseCustomizationOptions `xml:"options,omitempty,typeattr"` + Identity BaseCustomizationIdentitySettings `xml:"identity,typeattr"` + GlobalIPSettings CustomizationGlobalIPSettings `xml:"globalIPSettings"` + NicSettingMap []CustomizationAdapterMapping `xml:"nicSettingMap,omitempty"` + EncryptionKey []byte `xml:"encryptionKey,omitempty"` +} + +func init() { + t["CustomizationSpec"] = reflect.TypeOf((*CustomizationSpec)(nil)).Elem() +} + +type CustomizationSpecInfo struct { + DynamicData + + Name string `xml:"name"` + Description string `xml:"description"` + Type string `xml:"type"` + ChangeVersion string `xml:"changeVersion,omitempty"` + LastUpdateTime *time.Time `xml:"lastUpdateTime"` +} + +func init() { + t["CustomizationSpecInfo"] = reflect.TypeOf((*CustomizationSpecInfo)(nil)).Elem() +} + +type CustomizationSpecItem struct { + DynamicData + + Info CustomizationSpecInfo `xml:"info"` + Spec CustomizationSpec `xml:"spec"` +} + +func init() { + t["CustomizationSpecItem"] = reflect.TypeOf((*CustomizationSpecItem)(nil)).Elem() +} + +type CustomizationSpecItemToXml CustomizationSpecItemToXmlRequestType + +func init() { + t["CustomizationSpecItemToXml"] = reflect.TypeOf((*CustomizationSpecItemToXml)(nil)).Elem() +} + +type CustomizationSpecItemToXmlRequestType struct { + This ManagedObjectReference `xml:"_this"` + Item CustomizationSpecItem `xml:"item"` +} + +func init() { + t["CustomizationSpecItemToXmlRequestType"] = reflect.TypeOf((*CustomizationSpecItemToXmlRequestType)(nil)).Elem() +} + +type CustomizationSpecItemToXmlResponse struct { + Returnval string `xml:"returnval"` +} + +type CustomizationStartedEvent struct { + CustomizationEvent +} + +func init() { + t["CustomizationStartedEvent"] = reflect.TypeOf((*CustomizationStartedEvent)(nil)).Elem() +} + +type CustomizationStatelessIpV6Generator struct { + CustomizationIpV6Generator +} + +func init() { + t["CustomizationStatelessIpV6Generator"] = reflect.TypeOf((*CustomizationStatelessIpV6Generator)(nil)).Elem() +} + +type CustomizationSucceeded struct { + CustomizationEvent +} + +func init() { + t["CustomizationSucceeded"] = reflect.TypeOf((*CustomizationSucceeded)(nil)).Elem() +} + +type CustomizationSysprep struct { + CustomizationIdentitySettings + + GuiUnattended CustomizationGuiUnattended `xml:"guiUnattended"` + UserData CustomizationUserData `xml:"userData"` + GuiRunOnce *CustomizationGuiRunOnce `xml:"guiRunOnce,omitempty"` + Identification CustomizationIdentification `xml:"identification"` + LicenseFilePrintData *CustomizationLicenseFilePrintData `xml:"licenseFilePrintData,omitempty"` +} + +func init() { + t["CustomizationSysprep"] = reflect.TypeOf((*CustomizationSysprep)(nil)).Elem() +} + +type CustomizationSysprepFailed struct { + CustomizationFailed + + SysprepVersion string `xml:"sysprepVersion"` + SystemVersion string `xml:"systemVersion"` +} + +func init() { + t["CustomizationSysprepFailed"] = reflect.TypeOf((*CustomizationSysprepFailed)(nil)).Elem() +} + +type CustomizationSysprepText struct { + CustomizationIdentitySettings + + Value string `xml:"value"` +} + +func init() { + t["CustomizationSysprepText"] = reflect.TypeOf((*CustomizationSysprepText)(nil)).Elem() +} + +type CustomizationUnknownFailure struct { + CustomizationFailed +} + +func init() { + t["CustomizationUnknownFailure"] = reflect.TypeOf((*CustomizationUnknownFailure)(nil)).Elem() +} + +type CustomizationUnknownIpGenerator struct { + CustomizationIpGenerator +} + +func init() { + t["CustomizationUnknownIpGenerator"] = reflect.TypeOf((*CustomizationUnknownIpGenerator)(nil)).Elem() +} + +type CustomizationUnknownIpV6Generator struct { + CustomizationIpV6Generator +} + +func init() { + t["CustomizationUnknownIpV6Generator"] = reflect.TypeOf((*CustomizationUnknownIpV6Generator)(nil)).Elem() +} + +type CustomizationUnknownName struct { + CustomizationName +} + +func init() { + t["CustomizationUnknownName"] = reflect.TypeOf((*CustomizationUnknownName)(nil)).Elem() +} + +type CustomizationUserData struct { + DynamicData + + FullName string `xml:"fullName"` + OrgName string `xml:"orgName"` + ComputerName BaseCustomizationName `xml:"computerName,typeattr"` + ProductId string `xml:"productId"` +} + +func init() { + t["CustomizationUserData"] = reflect.TypeOf((*CustomizationUserData)(nil)).Elem() +} + +type CustomizationVirtualMachineName struct { + CustomizationName +} + +func init() { + t["CustomizationVirtualMachineName"] = reflect.TypeOf((*CustomizationVirtualMachineName)(nil)).Elem() +} + +type CustomizationWinOptions struct { + CustomizationOptions + + ChangeSID bool `xml:"changeSID"` + DeleteAccounts bool `xml:"deleteAccounts"` + Reboot CustomizationSysprepRebootOption `xml:"reboot,omitempty"` +} + +func init() { + t["CustomizationWinOptions"] = reflect.TypeOf((*CustomizationWinOptions)(nil)).Elem() +} + +type CustomizeGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + Spec CustomizationSpec `xml:"spec"` + ConfigParams []BaseOptionValue `xml:"configParams,omitempty,typeattr"` +} + +func init() { + t["CustomizeGuestRequestType"] = reflect.TypeOf((*CustomizeGuestRequestType)(nil)).Elem() +} + +type CustomizeGuest_Task CustomizeGuestRequestType + +func init() { + t["CustomizeGuest_Task"] = reflect.TypeOf((*CustomizeGuest_Task)(nil)).Elem() +} + +type CustomizeGuest_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CustomizeVMRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec CustomizationSpec `xml:"spec"` +} + +func init() { + t["CustomizeVMRequestType"] = reflect.TypeOf((*CustomizeVMRequestType)(nil)).Elem() +} + +type CustomizeVM_Task CustomizeVMRequestType + +func init() { + t["CustomizeVM_Task"] = reflect.TypeOf((*CustomizeVM_Task)(nil)).Elem() +} + +type CustomizeVM_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type DVPortConfigInfo struct { + DynamicData + + Name string `xml:"name,omitempty"` + Scope []ManagedObjectReference `xml:"scope,omitempty"` + Description string `xml:"description,omitempty"` + Setting BaseDVPortSetting `xml:"setting,omitempty,typeattr"` + ConfigVersion string `xml:"configVersion"` +} + +func init() { + t["DVPortConfigInfo"] = reflect.TypeOf((*DVPortConfigInfo)(nil)).Elem() +} + +type DVPortConfigSpec struct { + DynamicData + + Operation string `xml:"operation"` + Key string `xml:"key,omitempty"` + Name string `xml:"name,omitempty"` + Scope []ManagedObjectReference `xml:"scope,omitempty"` + Description string `xml:"description,omitempty"` + Setting BaseDVPortSetting `xml:"setting,omitempty,typeattr"` + ConfigVersion string `xml:"configVersion,omitempty"` +} + +func init() { + t["DVPortConfigSpec"] = reflect.TypeOf((*DVPortConfigSpec)(nil)).Elem() +} + +type DVPortNotSupported struct { + DeviceBackingNotSupported +} + +func init() { + t["DVPortNotSupported"] = reflect.TypeOf((*DVPortNotSupported)(nil)).Elem() +} + +type DVPortNotSupportedFault DVPortNotSupported + +func init() { + t["DVPortNotSupportedFault"] = reflect.TypeOf((*DVPortNotSupportedFault)(nil)).Elem() +} + +type DVPortSetting struct { + DynamicData + + Blocked *BoolPolicy `xml:"blocked,omitempty"` + VmDirectPathGen2Allowed *BoolPolicy `xml:"vmDirectPathGen2Allowed,omitempty"` + InShapingPolicy *DVSTrafficShapingPolicy `xml:"inShapingPolicy,omitempty"` + OutShapingPolicy *DVSTrafficShapingPolicy `xml:"outShapingPolicy,omitempty"` + VendorSpecificConfig *DVSVendorSpecificConfig `xml:"vendorSpecificConfig,omitempty"` + NetworkResourcePoolKey *StringPolicy `xml:"networkResourcePoolKey,omitempty"` + FilterPolicy *DvsFilterPolicy `xml:"filterPolicy,omitempty"` +} + +func init() { + t["DVPortSetting"] = reflect.TypeOf((*DVPortSetting)(nil)).Elem() +} + +type DVPortState struct { + DynamicData + + RuntimeInfo *DVPortStatus `xml:"runtimeInfo,omitempty"` + Stats DistributedVirtualSwitchPortStatistics `xml:"stats"` + VendorSpecificState []DistributedVirtualSwitchKeyedOpaqueBlob `xml:"vendorSpecificState,omitempty"` +} + +func init() { + t["DVPortState"] = reflect.TypeOf((*DVPortState)(nil)).Elem() +} + +type DVPortStatus struct { + DynamicData + + LinkUp bool `xml:"linkUp"` + Blocked bool `xml:"blocked"` + VlanIds []NumericRange `xml:"vlanIds,omitempty"` + TrunkingMode *bool `xml:"trunkingMode"` + Mtu int32 `xml:"mtu,omitempty"` + LinkPeer string `xml:"linkPeer,omitempty"` + MacAddress string `xml:"macAddress,omitempty"` + StatusDetail string `xml:"statusDetail,omitempty"` + VmDirectPathGen2Active *bool `xml:"vmDirectPathGen2Active"` + VmDirectPathGen2InactiveReasonNetwork []string `xml:"vmDirectPathGen2InactiveReasonNetwork,omitempty"` + VmDirectPathGen2InactiveReasonOther []string `xml:"vmDirectPathGen2InactiveReasonOther,omitempty"` + VmDirectPathGen2InactiveReasonExtended string `xml:"vmDirectPathGen2InactiveReasonExtended,omitempty"` +} + +func init() { + t["DVPortStatus"] = reflect.TypeOf((*DVPortStatus)(nil)).Elem() +} + +type DVPortgroupConfigInfo struct { + DynamicData + + Key string `xml:"key"` + Name string `xml:"name"` + NumPorts int32 `xml:"numPorts"` + DistributedVirtualSwitch *ManagedObjectReference `xml:"distributedVirtualSwitch,omitempty"` + DefaultPortConfig BaseDVPortSetting `xml:"defaultPortConfig,omitempty,typeattr"` + Description string `xml:"description,omitempty"` + Type string `xml:"type"` + BackingType string `xml:"backingType,omitempty"` + Policy BaseDVPortgroupPolicy `xml:"policy,typeattr"` + PortNameFormat string `xml:"portNameFormat,omitempty"` + Scope []ManagedObjectReference `xml:"scope,omitempty"` + VendorSpecificConfig []DistributedVirtualSwitchKeyedOpaqueBlob `xml:"vendorSpecificConfig,omitempty"` + ConfigVersion string `xml:"configVersion,omitempty"` + AutoExpand *bool `xml:"autoExpand"` + VmVnicNetworkResourcePoolKey string `xml:"vmVnicNetworkResourcePoolKey,omitempty"` + Uplink *bool `xml:"uplink"` + TransportZoneUuid string `xml:"transportZoneUuid,omitempty"` + TransportZoneName string `xml:"transportZoneName,omitempty"` + LogicalSwitchUuid string `xml:"logicalSwitchUuid,omitempty"` + SegmentId string `xml:"segmentId,omitempty"` +} + +func init() { + t["DVPortgroupConfigInfo"] = reflect.TypeOf((*DVPortgroupConfigInfo)(nil)).Elem() +} + +type DVPortgroupConfigSpec struct { + DynamicData + + ConfigVersion string `xml:"configVersion,omitempty"` + Name string `xml:"name,omitempty"` + NumPorts int32 `xml:"numPorts,omitempty"` + PortNameFormat string `xml:"portNameFormat,omitempty"` + DefaultPortConfig BaseDVPortSetting `xml:"defaultPortConfig,omitempty,typeattr"` + Description string `xml:"description,omitempty"` + Type string `xml:"type,omitempty"` + BackingType string `xml:"backingType,omitempty"` + Scope []ManagedObjectReference `xml:"scope,omitempty"` + Policy BaseDVPortgroupPolicy `xml:"policy,omitempty,typeattr"` + VendorSpecificConfig []DistributedVirtualSwitchKeyedOpaqueBlob `xml:"vendorSpecificConfig,omitempty"` + AutoExpand *bool `xml:"autoExpand"` + VmVnicNetworkResourcePoolKey string `xml:"vmVnicNetworkResourcePoolKey,omitempty"` + TransportZoneUuid string `xml:"transportZoneUuid,omitempty"` + TransportZoneName string `xml:"transportZoneName,omitempty"` + LogicalSwitchUuid string `xml:"logicalSwitchUuid,omitempty"` + SegmentId string `xml:"segmentId,omitempty"` +} + +func init() { + t["DVPortgroupConfigSpec"] = reflect.TypeOf((*DVPortgroupConfigSpec)(nil)).Elem() +} + +type DVPortgroupCreatedEvent struct { + DVPortgroupEvent +} + +func init() { + t["DVPortgroupCreatedEvent"] = reflect.TypeOf((*DVPortgroupCreatedEvent)(nil)).Elem() +} + +type DVPortgroupDestroyedEvent struct { + DVPortgroupEvent +} + +func init() { + t["DVPortgroupDestroyedEvent"] = reflect.TypeOf((*DVPortgroupDestroyedEvent)(nil)).Elem() +} + +type DVPortgroupEvent struct { + Event +} + +func init() { + t["DVPortgroupEvent"] = reflect.TypeOf((*DVPortgroupEvent)(nil)).Elem() +} + +type DVPortgroupPolicy struct { + DynamicData + + BlockOverrideAllowed bool `xml:"blockOverrideAllowed"` + ShapingOverrideAllowed bool `xml:"shapingOverrideAllowed"` + VendorConfigOverrideAllowed bool `xml:"vendorConfigOverrideAllowed"` + LivePortMovingAllowed bool `xml:"livePortMovingAllowed"` + PortConfigResetAtDisconnect bool `xml:"portConfigResetAtDisconnect"` + NetworkResourcePoolOverrideAllowed *bool `xml:"networkResourcePoolOverrideAllowed"` + TrafficFilterOverrideAllowed *bool `xml:"trafficFilterOverrideAllowed"` +} + +func init() { + t["DVPortgroupPolicy"] = reflect.TypeOf((*DVPortgroupPolicy)(nil)).Elem() +} + +type DVPortgroupReconfiguredEvent struct { + DVPortgroupEvent + + ConfigSpec DVPortgroupConfigSpec `xml:"configSpec"` + ConfigChanges *ChangesInfoEventArgument `xml:"configChanges,omitempty"` +} + +func init() { + t["DVPortgroupReconfiguredEvent"] = reflect.TypeOf((*DVPortgroupReconfiguredEvent)(nil)).Elem() +} + +type DVPortgroupRenamedEvent struct { + DVPortgroupEvent + + OldName string `xml:"oldName"` + NewName string `xml:"newName"` +} + +func init() { + t["DVPortgroupRenamedEvent"] = reflect.TypeOf((*DVPortgroupRenamedEvent)(nil)).Elem() +} + +type DVPortgroupRollbackRequestType struct { + This ManagedObjectReference `xml:"_this"` + EntityBackup *EntityBackupConfig `xml:"entityBackup,omitempty"` +} + +func init() { + t["DVPortgroupRollbackRequestType"] = reflect.TypeOf((*DVPortgroupRollbackRequestType)(nil)).Elem() +} + +type DVPortgroupRollback_Task DVPortgroupRollbackRequestType + +func init() { + t["DVPortgroupRollback_Task"] = reflect.TypeOf((*DVPortgroupRollback_Task)(nil)).Elem() +} + +type DVPortgroupRollback_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type DVPortgroupSelection struct { + SelectionSet + + DvsUuid string `xml:"dvsUuid"` + PortgroupKey []string `xml:"portgroupKey"` +} + +func init() { + t["DVPortgroupSelection"] = reflect.TypeOf((*DVPortgroupSelection)(nil)).Elem() +} + +type DVSBackupRestoreCapability struct { + DynamicData + + BackupRestoreSupported bool `xml:"backupRestoreSupported"` +} + +func init() { + t["DVSBackupRestoreCapability"] = reflect.TypeOf((*DVSBackupRestoreCapability)(nil)).Elem() +} + +type DVSCapability struct { + DynamicData + + DvsOperationSupported *bool `xml:"dvsOperationSupported"` + DvPortGroupOperationSupported *bool `xml:"dvPortGroupOperationSupported"` + DvPortOperationSupported *bool `xml:"dvPortOperationSupported"` + CompatibleHostComponentProductInfo []DistributedVirtualSwitchHostProductSpec `xml:"compatibleHostComponentProductInfo,omitempty"` + FeaturesSupported BaseDVSFeatureCapability `xml:"featuresSupported,omitempty,typeattr"` +} + +func init() { + t["DVSCapability"] = reflect.TypeOf((*DVSCapability)(nil)).Elem() +} + +type DVSConfigInfo struct { + DynamicData + + Uuid string `xml:"uuid"` + Name string `xml:"name"` + NumStandalonePorts int32 `xml:"numStandalonePorts"` + NumPorts int32 `xml:"numPorts"` + MaxPorts int32 `xml:"maxPorts"` + UplinkPortPolicy BaseDVSUplinkPortPolicy `xml:"uplinkPortPolicy,typeattr"` + UplinkPortgroup []ManagedObjectReference `xml:"uplinkPortgroup,omitempty"` + DefaultPortConfig BaseDVPortSetting `xml:"defaultPortConfig,typeattr"` + Host []DistributedVirtualSwitchHostMember `xml:"host,omitempty"` + ProductInfo DistributedVirtualSwitchProductSpec `xml:"productInfo"` + TargetInfo *DistributedVirtualSwitchProductSpec `xml:"targetInfo,omitempty"` + ExtensionKey string `xml:"extensionKey,omitempty"` + VendorSpecificConfig []DistributedVirtualSwitchKeyedOpaqueBlob `xml:"vendorSpecificConfig,omitempty"` + Policy *DVSPolicy `xml:"policy,omitempty"` + Description string `xml:"description,omitempty"` + ConfigVersion string `xml:"configVersion"` + Contact DVSContactInfo `xml:"contact"` + SwitchIpAddress string `xml:"switchIpAddress,omitempty"` + CreateTime time.Time `xml:"createTime"` + NetworkResourceManagementEnabled *bool `xml:"networkResourceManagementEnabled"` + DefaultProxySwitchMaxNumPorts int32 `xml:"defaultProxySwitchMaxNumPorts,omitempty"` + HealthCheckConfig []BaseDVSHealthCheckConfig `xml:"healthCheckConfig,omitempty,typeattr"` + InfrastructureTrafficResourceConfig []DvsHostInfrastructureTrafficResource `xml:"infrastructureTrafficResourceConfig,omitempty"` + NetResourcePoolTrafficResourceConfig []DvsHostInfrastructureTrafficResource `xml:"netResourcePoolTrafficResourceConfig,omitempty"` + NetworkResourceControlVersion string `xml:"networkResourceControlVersion,omitempty"` + VmVnicNetworkResourcePool []DVSVmVnicNetworkResourcePool `xml:"vmVnicNetworkResourcePool,omitempty"` + PnicCapacityRatioForReservation int32 `xml:"pnicCapacityRatioForReservation,omitempty"` +} + +func init() { + t["DVSConfigInfo"] = reflect.TypeOf((*DVSConfigInfo)(nil)).Elem() +} + +type DVSConfigSpec struct { + DynamicData + + ConfigVersion string `xml:"configVersion,omitempty"` + Name string `xml:"name,omitempty"` + NumStandalonePorts int32 `xml:"numStandalonePorts,omitempty"` + MaxPorts int32 `xml:"maxPorts,omitempty"` + UplinkPortPolicy BaseDVSUplinkPortPolicy `xml:"uplinkPortPolicy,omitempty,typeattr"` + UplinkPortgroup []ManagedObjectReference `xml:"uplinkPortgroup,omitempty"` + DefaultPortConfig BaseDVPortSetting `xml:"defaultPortConfig,omitempty,typeattr"` + Host []DistributedVirtualSwitchHostMemberConfigSpec `xml:"host,omitempty"` + ExtensionKey string `xml:"extensionKey,omitempty"` + Description string `xml:"description,omitempty"` + Policy *DVSPolicy `xml:"policy,omitempty"` + VendorSpecificConfig []DistributedVirtualSwitchKeyedOpaqueBlob `xml:"vendorSpecificConfig,omitempty"` + Contact *DVSContactInfo `xml:"contact,omitempty"` + SwitchIpAddress string `xml:"switchIpAddress,omitempty"` + DefaultProxySwitchMaxNumPorts int32 `xml:"defaultProxySwitchMaxNumPorts,omitempty"` + InfrastructureTrafficResourceConfig []DvsHostInfrastructureTrafficResource `xml:"infrastructureTrafficResourceConfig,omitempty"` + NetResourcePoolTrafficResourceConfig []DvsHostInfrastructureTrafficResource `xml:"netResourcePoolTrafficResourceConfig,omitempty"` + NetworkResourceControlVersion string `xml:"networkResourceControlVersion,omitempty"` +} + +func init() { + t["DVSConfigSpec"] = reflect.TypeOf((*DVSConfigSpec)(nil)).Elem() +} + +type DVSContactInfo struct { + DynamicData + + Name string `xml:"name,omitempty"` + Contact string `xml:"contact,omitempty"` +} + +func init() { + t["DVSContactInfo"] = reflect.TypeOf((*DVSContactInfo)(nil)).Elem() +} + +type DVSCreateSpec struct { + DynamicData + + ConfigSpec BaseDVSConfigSpec `xml:"configSpec,typeattr"` + ProductInfo *DistributedVirtualSwitchProductSpec `xml:"productInfo,omitempty"` + Capability *DVSCapability `xml:"capability,omitempty"` +} + +func init() { + t["DVSCreateSpec"] = reflect.TypeOf((*DVSCreateSpec)(nil)).Elem() +} + +type DVSFailureCriteria struct { + InheritablePolicy + + CheckSpeed *StringPolicy `xml:"checkSpeed,omitempty"` + Speed *IntPolicy `xml:"speed,omitempty"` + CheckDuplex *BoolPolicy `xml:"checkDuplex,omitempty"` + FullDuplex *BoolPolicy `xml:"fullDuplex,omitempty"` + CheckErrorPercent *BoolPolicy `xml:"checkErrorPercent,omitempty"` + Percentage *IntPolicy `xml:"percentage,omitempty"` + CheckBeacon *BoolPolicy `xml:"checkBeacon,omitempty"` +} + +func init() { + t["DVSFailureCriteria"] = reflect.TypeOf((*DVSFailureCriteria)(nil)).Elem() +} + +type DVSFeatureCapability struct { + DynamicData + + NetworkResourceManagementSupported bool `xml:"networkResourceManagementSupported"` + VmDirectPathGen2Supported bool `xml:"vmDirectPathGen2Supported"` + NicTeamingPolicy []string `xml:"nicTeamingPolicy,omitempty"` + NetworkResourcePoolHighShareValue int32 `xml:"networkResourcePoolHighShareValue,omitempty"` + NetworkResourceManagementCapability *DVSNetworkResourceManagementCapability `xml:"networkResourceManagementCapability,omitempty"` + HealthCheckCapability BaseDVSHealthCheckCapability `xml:"healthCheckCapability,omitempty,typeattr"` + RollbackCapability *DVSRollbackCapability `xml:"rollbackCapability,omitempty"` + BackupRestoreCapability *DVSBackupRestoreCapability `xml:"backupRestoreCapability,omitempty"` + NetworkFilterSupported *bool `xml:"networkFilterSupported"` + MacLearningSupported *bool `xml:"macLearningSupported"` +} + +func init() { + t["DVSFeatureCapability"] = reflect.TypeOf((*DVSFeatureCapability)(nil)).Elem() +} + +type DVSHealthCheckCapability struct { + DynamicData +} + +func init() { + t["DVSHealthCheckCapability"] = reflect.TypeOf((*DVSHealthCheckCapability)(nil)).Elem() +} + +type DVSHealthCheckConfig struct { + DynamicData + + Enable *bool `xml:"enable"` + Interval int32 `xml:"interval,omitempty"` +} + +func init() { + t["DVSHealthCheckConfig"] = reflect.TypeOf((*DVSHealthCheckConfig)(nil)).Elem() +} + +type DVSHostLocalPortInfo struct { + DynamicData + + SwitchUuid string `xml:"switchUuid"` + PortKey string `xml:"portKey"` + Setting BaseDVPortSetting `xml:"setting,typeattr"` + Vnic string `xml:"vnic"` +} + +func init() { + t["DVSHostLocalPortInfo"] = reflect.TypeOf((*DVSHostLocalPortInfo)(nil)).Elem() +} + +type DVSMacLearningPolicy struct { + InheritablePolicy + + Enabled bool `xml:"enabled"` + AllowUnicastFlooding *bool `xml:"allowUnicastFlooding"` + Limit *int32 `xml:"limit"` + LimitPolicy string `xml:"limitPolicy,omitempty"` +} + +func init() { + t["DVSMacLearningPolicy"] = reflect.TypeOf((*DVSMacLearningPolicy)(nil)).Elem() +} + +type DVSMacManagementPolicy struct { + InheritablePolicy + + AllowPromiscuous *bool `xml:"allowPromiscuous"` + MacChanges *bool `xml:"macChanges"` + ForgedTransmits *bool `xml:"forgedTransmits"` + MacLearningPolicy *DVSMacLearningPolicy `xml:"macLearningPolicy,omitempty"` +} + +func init() { + t["DVSMacManagementPolicy"] = reflect.TypeOf((*DVSMacManagementPolicy)(nil)).Elem() +} + +type DVSManagerDvsConfigTarget struct { + DynamicData + + DistributedVirtualPortgroup []DistributedVirtualPortgroupInfo `xml:"distributedVirtualPortgroup,omitempty"` + DistributedVirtualSwitch []DistributedVirtualSwitchInfo `xml:"distributedVirtualSwitch,omitempty"` +} + +func init() { + t["DVSManagerDvsConfigTarget"] = reflect.TypeOf((*DVSManagerDvsConfigTarget)(nil)).Elem() +} + +type DVSManagerExportEntityRequestType struct { + This ManagedObjectReference `xml:"_this"` + SelectionSet []BaseSelectionSet `xml:"selectionSet,typeattr"` +} + +func init() { + t["DVSManagerExportEntityRequestType"] = reflect.TypeOf((*DVSManagerExportEntityRequestType)(nil)).Elem() +} + +type DVSManagerExportEntity_Task DVSManagerExportEntityRequestType + +func init() { + t["DVSManagerExportEntity_Task"] = reflect.TypeOf((*DVSManagerExportEntity_Task)(nil)).Elem() +} + +type DVSManagerExportEntity_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type DVSManagerImportEntityRequestType struct { + This ManagedObjectReference `xml:"_this"` + EntityBackup []EntityBackupConfig `xml:"entityBackup"` + ImportType string `xml:"importType"` +} + +func init() { + t["DVSManagerImportEntityRequestType"] = reflect.TypeOf((*DVSManagerImportEntityRequestType)(nil)).Elem() +} + +type DVSManagerImportEntity_Task DVSManagerImportEntityRequestType + +func init() { + t["DVSManagerImportEntity_Task"] = reflect.TypeOf((*DVSManagerImportEntity_Task)(nil)).Elem() +} + +type DVSManagerImportEntity_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type DVSManagerLookupDvPortGroup DVSManagerLookupDvPortGroupRequestType + +func init() { + t["DVSManagerLookupDvPortGroup"] = reflect.TypeOf((*DVSManagerLookupDvPortGroup)(nil)).Elem() +} + +type DVSManagerLookupDvPortGroupRequestType struct { + This ManagedObjectReference `xml:"_this"` + SwitchUuid string `xml:"switchUuid"` + PortgroupKey string `xml:"portgroupKey"` +} + +func init() { + t["DVSManagerLookupDvPortGroupRequestType"] = reflect.TypeOf((*DVSManagerLookupDvPortGroupRequestType)(nil)).Elem() +} + +type DVSManagerLookupDvPortGroupResponse struct { + Returnval *ManagedObjectReference `xml:"returnval,omitempty"` +} + +type DVSNameArrayUplinkPortPolicy struct { + DVSUplinkPortPolicy + + UplinkPortName []string `xml:"uplinkPortName"` +} + +func init() { + t["DVSNameArrayUplinkPortPolicy"] = reflect.TypeOf((*DVSNameArrayUplinkPortPolicy)(nil)).Elem() +} + +type DVSNetworkResourceManagementCapability struct { + DynamicData + + NetworkResourceManagementSupported bool `xml:"networkResourceManagementSupported"` + NetworkResourcePoolHighShareValue int32 `xml:"networkResourcePoolHighShareValue"` + QosSupported bool `xml:"qosSupported"` + UserDefinedNetworkResourcePoolsSupported bool `xml:"userDefinedNetworkResourcePoolsSupported"` + NetworkResourceControlVersion3Supported *bool `xml:"networkResourceControlVersion3Supported"` + UserDefinedInfraTrafficPoolSupported *bool `xml:"userDefinedInfraTrafficPoolSupported"` +} + +func init() { + t["DVSNetworkResourceManagementCapability"] = reflect.TypeOf((*DVSNetworkResourceManagementCapability)(nil)).Elem() +} + +type DVSNetworkResourcePool struct { + DynamicData + + Key string `xml:"key"` + Name string `xml:"name,omitempty"` + Description string `xml:"description,omitempty"` + ConfigVersion string `xml:"configVersion"` + AllocationInfo DVSNetworkResourcePoolAllocationInfo `xml:"allocationInfo"` +} + +func init() { + t["DVSNetworkResourcePool"] = reflect.TypeOf((*DVSNetworkResourcePool)(nil)).Elem() +} + +type DVSNetworkResourcePoolAllocationInfo struct { + DynamicData + + Limit *int64 `xml:"limit"` + Shares *SharesInfo `xml:"shares,omitempty"` + PriorityTag int32 `xml:"priorityTag,omitempty"` +} + +func init() { + t["DVSNetworkResourcePoolAllocationInfo"] = reflect.TypeOf((*DVSNetworkResourcePoolAllocationInfo)(nil)).Elem() +} + +type DVSNetworkResourcePoolConfigSpec struct { + DynamicData + + Key string `xml:"key"` + ConfigVersion string `xml:"configVersion,omitempty"` + AllocationInfo *DVSNetworkResourcePoolAllocationInfo `xml:"allocationInfo,omitempty"` + Name string `xml:"name,omitempty"` + Description string `xml:"description,omitempty"` +} + +func init() { + t["DVSNetworkResourcePoolConfigSpec"] = reflect.TypeOf((*DVSNetworkResourcePoolConfigSpec)(nil)).Elem() +} + +type DVSPolicy struct { + DynamicData + + AutoPreInstallAllowed *bool `xml:"autoPreInstallAllowed"` + AutoUpgradeAllowed *bool `xml:"autoUpgradeAllowed"` + PartialUpgradeAllowed *bool `xml:"partialUpgradeAllowed"` +} + +func init() { + t["DVSPolicy"] = reflect.TypeOf((*DVSPolicy)(nil)).Elem() +} + +type DVSRollbackCapability struct { + DynamicData + + RollbackSupported bool `xml:"rollbackSupported"` +} + +func init() { + t["DVSRollbackCapability"] = reflect.TypeOf((*DVSRollbackCapability)(nil)).Elem() +} + +type DVSRollbackRequestType struct { + This ManagedObjectReference `xml:"_this"` + EntityBackup *EntityBackupConfig `xml:"entityBackup,omitempty"` +} + +func init() { + t["DVSRollbackRequestType"] = reflect.TypeOf((*DVSRollbackRequestType)(nil)).Elem() +} + +type DVSRollback_Task DVSRollbackRequestType + +func init() { + t["DVSRollback_Task"] = reflect.TypeOf((*DVSRollback_Task)(nil)).Elem() +} + +type DVSRollback_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type DVSRuntimeInfo struct { + DynamicData + + HostMemberRuntime []HostMemberRuntimeInfo `xml:"hostMemberRuntime,omitempty"` + ResourceRuntimeInfo *DvsResourceRuntimeInfo `xml:"resourceRuntimeInfo,omitempty"` +} + +func init() { + t["DVSRuntimeInfo"] = reflect.TypeOf((*DVSRuntimeInfo)(nil)).Elem() +} + +type DVSSecurityPolicy struct { + InheritablePolicy + + AllowPromiscuous *BoolPolicy `xml:"allowPromiscuous,omitempty"` + MacChanges *BoolPolicy `xml:"macChanges,omitempty"` + ForgedTransmits *BoolPolicy `xml:"forgedTransmits,omitempty"` +} + +func init() { + t["DVSSecurityPolicy"] = reflect.TypeOf((*DVSSecurityPolicy)(nil)).Elem() +} + +type DVSSelection struct { + SelectionSet + + DvsUuid string `xml:"dvsUuid"` +} + +func init() { + t["DVSSelection"] = reflect.TypeOf((*DVSSelection)(nil)).Elem() +} + +type DVSSummary struct { + DynamicData + + Name string `xml:"name"` + Uuid string `xml:"uuid"` + NumPorts int32 `xml:"numPorts"` + ProductInfo *DistributedVirtualSwitchProductSpec `xml:"productInfo,omitempty"` + HostMember []ManagedObjectReference `xml:"hostMember,omitempty"` + Vm []ManagedObjectReference `xml:"vm,omitempty"` + Host []ManagedObjectReference `xml:"host,omitempty"` + PortgroupName []string `xml:"portgroupName,omitempty"` + Description string `xml:"description,omitempty"` + Contact *DVSContactInfo `xml:"contact,omitempty"` + NumHosts int32 `xml:"numHosts,omitempty"` +} + +func init() { + t["DVSSummary"] = reflect.TypeOf((*DVSSummary)(nil)).Elem() +} + +type DVSTrafficShapingPolicy struct { + InheritablePolicy + + Enabled *BoolPolicy `xml:"enabled,omitempty"` + AverageBandwidth *LongPolicy `xml:"averageBandwidth,omitempty"` + PeakBandwidth *LongPolicy `xml:"peakBandwidth,omitempty"` + BurstSize *LongPolicy `xml:"burstSize,omitempty"` +} + +func init() { + t["DVSTrafficShapingPolicy"] = reflect.TypeOf((*DVSTrafficShapingPolicy)(nil)).Elem() +} + +type DVSUplinkPortPolicy struct { + DynamicData +} + +func init() { + t["DVSUplinkPortPolicy"] = reflect.TypeOf((*DVSUplinkPortPolicy)(nil)).Elem() +} + +type DVSVendorSpecificConfig struct { + InheritablePolicy + + KeyValue []DistributedVirtualSwitchKeyedOpaqueBlob `xml:"keyValue,omitempty"` +} + +func init() { + t["DVSVendorSpecificConfig"] = reflect.TypeOf((*DVSVendorSpecificConfig)(nil)).Elem() +} + +type DVSVmVnicNetworkResourcePool struct { + DynamicData + + Key string `xml:"key"` + Name string `xml:"name,omitempty"` + Description string `xml:"description,omitempty"` + ConfigVersion string `xml:"configVersion"` + AllocationInfo *DvsVmVnicResourceAllocation `xml:"allocationInfo,omitempty"` +} + +func init() { + t["DVSVmVnicNetworkResourcePool"] = reflect.TypeOf((*DVSVmVnicNetworkResourcePool)(nil)).Elem() +} + +type DailyTaskScheduler struct { + HourlyTaskScheduler + + Hour int32 `xml:"hour"` +} + +func init() { + t["DailyTaskScheduler"] = reflect.TypeOf((*DailyTaskScheduler)(nil)).Elem() +} + +type DasAdmissionControlDisabledEvent struct { + ClusterEvent +} + +func init() { + t["DasAdmissionControlDisabledEvent"] = reflect.TypeOf((*DasAdmissionControlDisabledEvent)(nil)).Elem() +} + +type DasAdmissionControlEnabledEvent struct { + ClusterEvent +} + +func init() { + t["DasAdmissionControlEnabledEvent"] = reflect.TypeOf((*DasAdmissionControlEnabledEvent)(nil)).Elem() +} + +type DasAgentFoundEvent struct { + ClusterEvent +} + +func init() { + t["DasAgentFoundEvent"] = reflect.TypeOf((*DasAgentFoundEvent)(nil)).Elem() +} + +type DasAgentUnavailableEvent struct { + ClusterEvent +} + +func init() { + t["DasAgentUnavailableEvent"] = reflect.TypeOf((*DasAgentUnavailableEvent)(nil)).Elem() +} + +type DasClusterIsolatedEvent struct { + ClusterEvent +} + +func init() { + t["DasClusterIsolatedEvent"] = reflect.TypeOf((*DasClusterIsolatedEvent)(nil)).Elem() +} + +type DasConfigFault struct { + VimFault + + Reason string `xml:"reason,omitempty"` + Output string `xml:"output,omitempty"` + Event []BaseEvent `xml:"event,omitempty,typeattr"` +} + +func init() { + t["DasConfigFault"] = reflect.TypeOf((*DasConfigFault)(nil)).Elem() +} + +type DasConfigFaultFault DasConfigFault + +func init() { + t["DasConfigFaultFault"] = reflect.TypeOf((*DasConfigFaultFault)(nil)).Elem() +} + +type DasDisabledEvent struct { + ClusterEvent +} + +func init() { + t["DasDisabledEvent"] = reflect.TypeOf((*DasDisabledEvent)(nil)).Elem() +} + +type DasEnabledEvent struct { + ClusterEvent +} + +func init() { + t["DasEnabledEvent"] = reflect.TypeOf((*DasEnabledEvent)(nil)).Elem() +} + +type DasHeartbeatDatastoreInfo struct { + DynamicData + + Datastore ManagedObjectReference `xml:"datastore"` + Hosts []ManagedObjectReference `xml:"hosts"` +} + +func init() { + t["DasHeartbeatDatastoreInfo"] = reflect.TypeOf((*DasHeartbeatDatastoreInfo)(nil)).Elem() +} + +type DasHostFailedEvent struct { + ClusterEvent + + FailedHost HostEventArgument `xml:"failedHost"` +} + +func init() { + t["DasHostFailedEvent"] = reflect.TypeOf((*DasHostFailedEvent)(nil)).Elem() +} + +type DasHostIsolatedEvent struct { + ClusterEvent + + IsolatedHost HostEventArgument `xml:"isolatedHost"` +} + +func init() { + t["DasHostIsolatedEvent"] = reflect.TypeOf((*DasHostIsolatedEvent)(nil)).Elem() +} + +type DatabaseError struct { + RuntimeFault +} + +func init() { + t["DatabaseError"] = reflect.TypeOf((*DatabaseError)(nil)).Elem() +} + +type DatabaseErrorFault DatabaseError + +func init() { + t["DatabaseErrorFault"] = reflect.TypeOf((*DatabaseErrorFault)(nil)).Elem() +} + +type DatabaseSizeEstimate struct { + DynamicData + + Size int64 `xml:"size"` +} + +func init() { + t["DatabaseSizeEstimate"] = reflect.TypeOf((*DatabaseSizeEstimate)(nil)).Elem() +} + +type DatabaseSizeParam struct { + DynamicData + + InventoryDesc InventoryDescription `xml:"inventoryDesc"` + PerfStatsDesc *PerformanceStatisticsDescription `xml:"perfStatsDesc,omitempty"` +} + +func init() { + t["DatabaseSizeParam"] = reflect.TypeOf((*DatabaseSizeParam)(nil)).Elem() +} + +type DatacenterBasicConnectInfo struct { + DynamicData + + Hostname string `xml:"hostname,omitempty"` + Error *LocalizedMethodFault `xml:"error,omitempty"` + ServerIp string `xml:"serverIp,omitempty"` + NumVm int32 `xml:"numVm,omitempty"` + NumPoweredOnVm int32 `xml:"numPoweredOnVm,omitempty"` + HostProductInfo *AboutInfo `xml:"hostProductInfo,omitempty"` + HardwareVendor string `xml:"hardwareVendor,omitempty"` + HardwareModel string `xml:"hardwareModel,omitempty"` +} + +func init() { + t["DatacenterBasicConnectInfo"] = reflect.TypeOf((*DatacenterBasicConnectInfo)(nil)).Elem() +} + +type DatacenterConfigInfo struct { + DynamicData + + DefaultHardwareVersionKey string `xml:"defaultHardwareVersionKey,omitempty"` +} + +func init() { + t["DatacenterConfigInfo"] = reflect.TypeOf((*DatacenterConfigInfo)(nil)).Elem() +} + +type DatacenterConfigSpec struct { + DynamicData + + DefaultHardwareVersionKey string `xml:"defaultHardwareVersionKey,omitempty"` +} + +func init() { + t["DatacenterConfigSpec"] = reflect.TypeOf((*DatacenterConfigSpec)(nil)).Elem() +} + +type DatacenterCreatedEvent struct { + DatacenterEvent + + Parent FolderEventArgument `xml:"parent"` +} + +func init() { + t["DatacenterCreatedEvent"] = reflect.TypeOf((*DatacenterCreatedEvent)(nil)).Elem() +} + +type DatacenterEvent struct { + Event +} + +func init() { + t["DatacenterEvent"] = reflect.TypeOf((*DatacenterEvent)(nil)).Elem() +} + +type DatacenterEventArgument struct { + EntityEventArgument + + Datacenter ManagedObjectReference `xml:"datacenter"` +} + +func init() { + t["DatacenterEventArgument"] = reflect.TypeOf((*DatacenterEventArgument)(nil)).Elem() +} + +type DatacenterMismatch struct { + MigrationFault + + InvalidArgument []DatacenterMismatchArgument `xml:"invalidArgument"` + ExpectedDatacenter ManagedObjectReference `xml:"expectedDatacenter"` +} + +func init() { + t["DatacenterMismatch"] = reflect.TypeOf((*DatacenterMismatch)(nil)).Elem() +} + +type DatacenterMismatchArgument struct { + DynamicData + + Entity ManagedObjectReference `xml:"entity"` + InputDatacenter *ManagedObjectReference `xml:"inputDatacenter,omitempty"` +} + +func init() { + t["DatacenterMismatchArgument"] = reflect.TypeOf((*DatacenterMismatchArgument)(nil)).Elem() +} + +type DatacenterMismatchFault DatacenterMismatch + +func init() { + t["DatacenterMismatchFault"] = reflect.TypeOf((*DatacenterMismatchFault)(nil)).Elem() +} + +type DatacenterRenamedEvent struct { + DatacenterEvent + + OldName string `xml:"oldName"` + NewName string `xml:"newName"` +} + +func init() { + t["DatacenterRenamedEvent"] = reflect.TypeOf((*DatacenterRenamedEvent)(nil)).Elem() +} + +type DatastoreCapability struct { + DynamicData + + DirectoryHierarchySupported bool `xml:"directoryHierarchySupported"` + RawDiskMappingsSupported bool `xml:"rawDiskMappingsSupported"` + PerFileThinProvisioningSupported bool `xml:"perFileThinProvisioningSupported"` + StorageIORMSupported *bool `xml:"storageIORMSupported"` + NativeSnapshotSupported *bool `xml:"nativeSnapshotSupported"` + TopLevelDirectoryCreateSupported *bool `xml:"topLevelDirectoryCreateSupported"` + SeSparseSupported *bool `xml:"seSparseSupported"` + VmfsSparseSupported *bool `xml:"vmfsSparseSupported"` + VsanSparseSupported *bool `xml:"vsanSparseSupported"` + UpitSupported *bool `xml:"upitSupported"` + VmdkExpandSupported *bool `xml:"vmdkExpandSupported"` + ClusteredVmdkSupported *bool `xml:"clusteredVmdkSupported"` +} + +func init() { + t["DatastoreCapability"] = reflect.TypeOf((*DatastoreCapability)(nil)).Elem() +} + +type DatastoreCapacityIncreasedEvent struct { + DatastoreEvent + + OldCapacity int64 `xml:"oldCapacity"` + NewCapacity int64 `xml:"newCapacity"` +} + +func init() { + t["DatastoreCapacityIncreasedEvent"] = reflect.TypeOf((*DatastoreCapacityIncreasedEvent)(nil)).Elem() +} + +type DatastoreDestroyedEvent struct { + DatastoreEvent +} + +func init() { + t["DatastoreDestroyedEvent"] = reflect.TypeOf((*DatastoreDestroyedEvent)(nil)).Elem() +} + +type DatastoreDiscoveredEvent struct { + HostEvent + + Datastore DatastoreEventArgument `xml:"datastore"` +} + +func init() { + t["DatastoreDiscoveredEvent"] = reflect.TypeOf((*DatastoreDiscoveredEvent)(nil)).Elem() +} + +type DatastoreDuplicatedEvent struct { + DatastoreEvent +} + +func init() { + t["DatastoreDuplicatedEvent"] = reflect.TypeOf((*DatastoreDuplicatedEvent)(nil)).Elem() +} + +type DatastoreEnterMaintenanceMode DatastoreEnterMaintenanceModeRequestType + +func init() { + t["DatastoreEnterMaintenanceMode"] = reflect.TypeOf((*DatastoreEnterMaintenanceMode)(nil)).Elem() +} + +type DatastoreEnterMaintenanceModeRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["DatastoreEnterMaintenanceModeRequestType"] = reflect.TypeOf((*DatastoreEnterMaintenanceModeRequestType)(nil)).Elem() +} + +type DatastoreEnterMaintenanceModeResponse struct { + Returnval StoragePlacementResult `xml:"returnval"` +} + +type DatastoreEvent struct { + Event + + Datastore *DatastoreEventArgument `xml:"datastore,omitempty"` +} + +func init() { + t["DatastoreEvent"] = reflect.TypeOf((*DatastoreEvent)(nil)).Elem() +} + +type DatastoreEventArgument struct { + EntityEventArgument + + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["DatastoreEventArgument"] = reflect.TypeOf((*DatastoreEventArgument)(nil)).Elem() +} + +type DatastoreExitMaintenanceModeRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["DatastoreExitMaintenanceModeRequestType"] = reflect.TypeOf((*DatastoreExitMaintenanceModeRequestType)(nil)).Elem() +} + +type DatastoreExitMaintenanceMode_Task DatastoreExitMaintenanceModeRequestType + +func init() { + t["DatastoreExitMaintenanceMode_Task"] = reflect.TypeOf((*DatastoreExitMaintenanceMode_Task)(nil)).Elem() +} + +type DatastoreExitMaintenanceMode_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type DatastoreFileCopiedEvent struct { + DatastoreFileEvent + + SourceDatastore DatastoreEventArgument `xml:"sourceDatastore"` + SourceFile string `xml:"sourceFile"` +} + +func init() { + t["DatastoreFileCopiedEvent"] = reflect.TypeOf((*DatastoreFileCopiedEvent)(nil)).Elem() +} + +type DatastoreFileDeletedEvent struct { + DatastoreFileEvent +} + +func init() { + t["DatastoreFileDeletedEvent"] = reflect.TypeOf((*DatastoreFileDeletedEvent)(nil)).Elem() +} + +type DatastoreFileEvent struct { + DatastoreEvent + + TargetFile string `xml:"targetFile"` + SourceOfOperation string `xml:"sourceOfOperation,omitempty"` + Succeeded *bool `xml:"succeeded"` +} + +func init() { + t["DatastoreFileEvent"] = reflect.TypeOf((*DatastoreFileEvent)(nil)).Elem() +} + +type DatastoreFileMovedEvent struct { + DatastoreFileEvent + + SourceDatastore DatastoreEventArgument `xml:"sourceDatastore"` + SourceFile string `xml:"sourceFile"` +} + +func init() { + t["DatastoreFileMovedEvent"] = reflect.TypeOf((*DatastoreFileMovedEvent)(nil)).Elem() +} + +type DatastoreHostMount struct { + DynamicData + + Key ManagedObjectReference `xml:"key"` + MountInfo HostMountInfo `xml:"mountInfo"` +} + +func init() { + t["DatastoreHostMount"] = reflect.TypeOf((*DatastoreHostMount)(nil)).Elem() +} + +type DatastoreIORMReconfiguredEvent struct { + DatastoreEvent +} + +func init() { + t["DatastoreIORMReconfiguredEvent"] = reflect.TypeOf((*DatastoreIORMReconfiguredEvent)(nil)).Elem() +} + +type DatastoreInfo struct { + DynamicData + + Name string `xml:"name"` + Url string `xml:"url"` + FreeSpace int64 `xml:"freeSpace"` + MaxFileSize int64 `xml:"maxFileSize"` + MaxVirtualDiskCapacity int64 `xml:"maxVirtualDiskCapacity,omitempty"` + MaxMemoryFileSize int64 `xml:"maxMemoryFileSize,omitempty"` + Timestamp *time.Time `xml:"timestamp"` + ContainerId string `xml:"containerId,omitempty"` + AliasOf string `xml:"aliasOf,omitempty"` +} + +func init() { + t["DatastoreInfo"] = reflect.TypeOf((*DatastoreInfo)(nil)).Elem() +} + +type DatastoreMountPathDatastorePair struct { + DynamicData + + OldMountPath string `xml:"oldMountPath"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["DatastoreMountPathDatastorePair"] = reflect.TypeOf((*DatastoreMountPathDatastorePair)(nil)).Elem() +} + +type DatastoreNotWritableOnHost struct { + InvalidDatastore + + Host ManagedObjectReference `xml:"host"` +} + +func init() { + t["DatastoreNotWritableOnHost"] = reflect.TypeOf((*DatastoreNotWritableOnHost)(nil)).Elem() +} + +type DatastoreNotWritableOnHostFault BaseDatastoreNotWritableOnHost + +func init() { + t["DatastoreNotWritableOnHostFault"] = reflect.TypeOf((*DatastoreNotWritableOnHostFault)(nil)).Elem() +} + +type DatastoreOption struct { + DynamicData + + UnsupportedVolumes []VirtualMachineDatastoreVolumeOption `xml:"unsupportedVolumes,omitempty"` +} + +func init() { + t["DatastoreOption"] = reflect.TypeOf((*DatastoreOption)(nil)).Elem() +} + +type DatastorePrincipalConfigured struct { + HostEvent + + DatastorePrincipal string `xml:"datastorePrincipal"` +} + +func init() { + t["DatastorePrincipalConfigured"] = reflect.TypeOf((*DatastorePrincipalConfigured)(nil)).Elem() +} + +type DatastoreRemovedOnHostEvent struct { + HostEvent + + Datastore DatastoreEventArgument `xml:"datastore"` +} + +func init() { + t["DatastoreRemovedOnHostEvent"] = reflect.TypeOf((*DatastoreRemovedOnHostEvent)(nil)).Elem() +} + +type DatastoreRenamedEvent struct { + DatastoreEvent + + OldName string `xml:"oldName"` + NewName string `xml:"newName"` +} + +func init() { + t["DatastoreRenamedEvent"] = reflect.TypeOf((*DatastoreRenamedEvent)(nil)).Elem() +} + +type DatastoreRenamedOnHostEvent struct { + HostEvent + + OldName string `xml:"oldName"` + NewName string `xml:"newName"` +} + +func init() { + t["DatastoreRenamedOnHostEvent"] = reflect.TypeOf((*DatastoreRenamedOnHostEvent)(nil)).Elem() +} + +type DatastoreSummary struct { + DynamicData + + Datastore *ManagedObjectReference `xml:"datastore,omitempty"` + Name string `xml:"name"` + Url string `xml:"url"` + Capacity int64 `xml:"capacity"` + FreeSpace int64 `xml:"freeSpace"` + Uncommitted int64 `xml:"uncommitted,omitempty"` + Accessible bool `xml:"accessible"` + MultipleHostAccess *bool `xml:"multipleHostAccess"` + Type string `xml:"type"` + MaintenanceMode string `xml:"maintenanceMode,omitempty"` +} + +func init() { + t["DatastoreSummary"] = reflect.TypeOf((*DatastoreSummary)(nil)).Elem() +} + +type DatastoreVVolContainerFailoverPair struct { + DynamicData + + SrcContainer string `xml:"srcContainer,omitempty"` + TgtContainer string `xml:"tgtContainer"` + VvolMapping []KeyValue `xml:"vvolMapping,omitempty"` +} + +func init() { + t["DatastoreVVolContainerFailoverPair"] = reflect.TypeOf((*DatastoreVVolContainerFailoverPair)(nil)).Elem() +} + +type DateTimeProfile struct { + ApplyProfile +} + +func init() { + t["DateTimeProfile"] = reflect.TypeOf((*DateTimeProfile)(nil)).Elem() +} + +type DecodeLicense DecodeLicenseRequestType + +func init() { + t["DecodeLicense"] = reflect.TypeOf((*DecodeLicense)(nil)).Elem() +} + +type DecodeLicenseRequestType struct { + This ManagedObjectReference `xml:"_this"` + LicenseKey string `xml:"licenseKey"` +} + +func init() { + t["DecodeLicenseRequestType"] = reflect.TypeOf((*DecodeLicenseRequestType)(nil)).Elem() +} + +type DecodeLicenseResponse struct { + Returnval LicenseManagerLicenseInfo `xml:"returnval"` +} + +type DefragmentAllDisks DefragmentAllDisksRequestType + +func init() { + t["DefragmentAllDisks"] = reflect.TypeOf((*DefragmentAllDisks)(nil)).Elem() +} + +type DefragmentAllDisksRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["DefragmentAllDisksRequestType"] = reflect.TypeOf((*DefragmentAllDisksRequestType)(nil)).Elem() +} + +type DefragmentAllDisksResponse struct { +} + +type DefragmentVirtualDiskRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` +} + +func init() { + t["DefragmentVirtualDiskRequestType"] = reflect.TypeOf((*DefragmentVirtualDiskRequestType)(nil)).Elem() +} + +type DefragmentVirtualDisk_Task DefragmentVirtualDiskRequestType + +func init() { + t["DefragmentVirtualDisk_Task"] = reflect.TypeOf((*DefragmentVirtualDisk_Task)(nil)).Elem() +} + +type DefragmentVirtualDisk_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type DeleteCustomizationSpec DeleteCustomizationSpecRequestType + +func init() { + t["DeleteCustomizationSpec"] = reflect.TypeOf((*DeleteCustomizationSpec)(nil)).Elem() +} + +type DeleteCustomizationSpecRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` +} + +func init() { + t["DeleteCustomizationSpecRequestType"] = reflect.TypeOf((*DeleteCustomizationSpecRequestType)(nil)).Elem() +} + +type DeleteCustomizationSpecResponse struct { +} + +type DeleteDatastoreFileRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` +} + +func init() { + t["DeleteDatastoreFileRequestType"] = reflect.TypeOf((*DeleteDatastoreFileRequestType)(nil)).Elem() +} + +type DeleteDatastoreFile_Task DeleteDatastoreFileRequestType + +func init() { + t["DeleteDatastoreFile_Task"] = reflect.TypeOf((*DeleteDatastoreFile_Task)(nil)).Elem() +} + +type DeleteDatastoreFile_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type DeleteDirectory DeleteDirectoryRequestType + +func init() { + t["DeleteDirectory"] = reflect.TypeOf((*DeleteDirectory)(nil)).Elem() +} + +type DeleteDirectoryInGuest DeleteDirectoryInGuestRequestType + +func init() { + t["DeleteDirectoryInGuest"] = reflect.TypeOf((*DeleteDirectoryInGuest)(nil)).Elem() +} + +type DeleteDirectoryInGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + DirectoryPath string `xml:"directoryPath"` + Recursive bool `xml:"recursive"` +} + +func init() { + t["DeleteDirectoryInGuestRequestType"] = reflect.TypeOf((*DeleteDirectoryInGuestRequestType)(nil)).Elem() +} + +type DeleteDirectoryInGuestResponse struct { +} + +type DeleteDirectoryRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` + DatastorePath string `xml:"datastorePath"` +} + +func init() { + t["DeleteDirectoryRequestType"] = reflect.TypeOf((*DeleteDirectoryRequestType)(nil)).Elem() +} + +type DeleteDirectoryResponse struct { +} + +type DeleteFile DeleteFileRequestType + +func init() { + t["DeleteFile"] = reflect.TypeOf((*DeleteFile)(nil)).Elem() +} + +type DeleteFileInGuest DeleteFileInGuestRequestType + +func init() { + t["DeleteFileInGuest"] = reflect.TypeOf((*DeleteFileInGuest)(nil)).Elem() +} + +type DeleteFileInGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + FilePath string `xml:"filePath"` +} + +func init() { + t["DeleteFileInGuestRequestType"] = reflect.TypeOf((*DeleteFileInGuestRequestType)(nil)).Elem() +} + +type DeleteFileInGuestResponse struct { +} + +type DeleteFileRequestType struct { + This ManagedObjectReference `xml:"_this"` + DatastorePath string `xml:"datastorePath"` +} + +func init() { + t["DeleteFileRequestType"] = reflect.TypeOf((*DeleteFileRequestType)(nil)).Elem() +} + +type DeleteFileResponse struct { +} + +type DeleteHostSpecification DeleteHostSpecificationRequestType + +func init() { + t["DeleteHostSpecification"] = reflect.TypeOf((*DeleteHostSpecification)(nil)).Elem() +} + +type DeleteHostSpecificationRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host ManagedObjectReference `xml:"host"` +} + +func init() { + t["DeleteHostSpecificationRequestType"] = reflect.TypeOf((*DeleteHostSpecificationRequestType)(nil)).Elem() +} + +type DeleteHostSpecificationResponse struct { +} + +type DeleteHostSubSpecification DeleteHostSubSpecificationRequestType + +func init() { + t["DeleteHostSubSpecification"] = reflect.TypeOf((*DeleteHostSubSpecification)(nil)).Elem() +} + +type DeleteHostSubSpecificationRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host ManagedObjectReference `xml:"host"` + SubSpecName string `xml:"subSpecName"` +} + +func init() { + t["DeleteHostSubSpecificationRequestType"] = reflect.TypeOf((*DeleteHostSubSpecificationRequestType)(nil)).Elem() +} + +type DeleteHostSubSpecificationResponse struct { +} + +type DeleteNvdimmBlockNamespacesRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["DeleteNvdimmBlockNamespacesRequestType"] = reflect.TypeOf((*DeleteNvdimmBlockNamespacesRequestType)(nil)).Elem() +} + +type DeleteNvdimmBlockNamespaces_Task DeleteNvdimmBlockNamespacesRequestType + +func init() { + t["DeleteNvdimmBlockNamespaces_Task"] = reflect.TypeOf((*DeleteNvdimmBlockNamespaces_Task)(nil)).Elem() +} + +type DeleteNvdimmBlockNamespaces_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type DeleteNvdimmNamespaceRequestType struct { + This ManagedObjectReference `xml:"_this"` + DeleteSpec NvdimmNamespaceDeleteSpec `xml:"deleteSpec"` +} + +func init() { + t["DeleteNvdimmNamespaceRequestType"] = reflect.TypeOf((*DeleteNvdimmNamespaceRequestType)(nil)).Elem() +} + +type DeleteNvdimmNamespace_Task DeleteNvdimmNamespaceRequestType + +func init() { + t["DeleteNvdimmNamespace_Task"] = reflect.TypeOf((*DeleteNvdimmNamespace_Task)(nil)).Elem() +} + +type DeleteNvdimmNamespace_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type DeleteRegistryKeyInGuest DeleteRegistryKeyInGuestRequestType + +func init() { + t["DeleteRegistryKeyInGuest"] = reflect.TypeOf((*DeleteRegistryKeyInGuest)(nil)).Elem() +} + +type DeleteRegistryKeyInGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + KeyName GuestRegKeyNameSpec `xml:"keyName"` + Recursive bool `xml:"recursive"` +} + +func init() { + t["DeleteRegistryKeyInGuestRequestType"] = reflect.TypeOf((*DeleteRegistryKeyInGuestRequestType)(nil)).Elem() +} + +type DeleteRegistryKeyInGuestResponse struct { +} + +type DeleteRegistryValueInGuest DeleteRegistryValueInGuestRequestType + +func init() { + t["DeleteRegistryValueInGuest"] = reflect.TypeOf((*DeleteRegistryValueInGuest)(nil)).Elem() +} + +type DeleteRegistryValueInGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + ValueName GuestRegValueNameSpec `xml:"valueName"` +} + +func init() { + t["DeleteRegistryValueInGuestRequestType"] = reflect.TypeOf((*DeleteRegistryValueInGuestRequestType)(nil)).Elem() +} + +type DeleteRegistryValueInGuestResponse struct { +} + +type DeleteScsiLunState DeleteScsiLunStateRequestType + +func init() { + t["DeleteScsiLunState"] = reflect.TypeOf((*DeleteScsiLunState)(nil)).Elem() +} + +type DeleteScsiLunStateRequestType struct { + This ManagedObjectReference `xml:"_this"` + LunCanonicalName string `xml:"lunCanonicalName"` +} + +func init() { + t["DeleteScsiLunStateRequestType"] = reflect.TypeOf((*DeleteScsiLunStateRequestType)(nil)).Elem() +} + +type DeleteScsiLunStateResponse struct { +} + +type DeleteSnapshotRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + SnapshotId ID `xml:"snapshotId"` +} + +func init() { + t["DeleteSnapshotRequestType"] = reflect.TypeOf((*DeleteSnapshotRequestType)(nil)).Elem() +} + +type DeleteSnapshot_Task DeleteSnapshotRequestType + +func init() { + t["DeleteSnapshot_Task"] = reflect.TypeOf((*DeleteSnapshot_Task)(nil)).Elem() +} + +type DeleteSnapshot_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type DeleteVStorageObjectRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["DeleteVStorageObjectRequestType"] = reflect.TypeOf((*DeleteVStorageObjectRequestType)(nil)).Elem() +} + +type DeleteVStorageObject_Task DeleteVStorageObjectRequestType + +func init() { + t["DeleteVStorageObject_Task"] = reflect.TypeOf((*DeleteVStorageObject_Task)(nil)).Elem() +} + +type DeleteVStorageObject_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type DeleteVffsVolumeState DeleteVffsVolumeStateRequestType + +func init() { + t["DeleteVffsVolumeState"] = reflect.TypeOf((*DeleteVffsVolumeState)(nil)).Elem() +} + +type DeleteVffsVolumeStateRequestType struct { + This ManagedObjectReference `xml:"_this"` + VffsUuid string `xml:"vffsUuid"` +} + +func init() { + t["DeleteVffsVolumeStateRequestType"] = reflect.TypeOf((*DeleteVffsVolumeStateRequestType)(nil)).Elem() +} + +type DeleteVffsVolumeStateResponse struct { +} + +type DeleteVirtualDiskRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` +} + +func init() { + t["DeleteVirtualDiskRequestType"] = reflect.TypeOf((*DeleteVirtualDiskRequestType)(nil)).Elem() +} + +type DeleteVirtualDisk_Task DeleteVirtualDiskRequestType + +func init() { + t["DeleteVirtualDisk_Task"] = reflect.TypeOf((*DeleteVirtualDisk_Task)(nil)).Elem() +} + +type DeleteVirtualDisk_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type DeleteVmfsVolumeState DeleteVmfsVolumeStateRequestType + +func init() { + t["DeleteVmfsVolumeState"] = reflect.TypeOf((*DeleteVmfsVolumeState)(nil)).Elem() +} + +type DeleteVmfsVolumeStateRequestType struct { + This ManagedObjectReference `xml:"_this"` + VmfsUuid string `xml:"vmfsUuid"` +} + +func init() { + t["DeleteVmfsVolumeStateRequestType"] = reflect.TypeOf((*DeleteVmfsVolumeStateRequestType)(nil)).Elem() +} + +type DeleteVmfsVolumeStateResponse struct { +} + +type DeleteVsanObjects DeleteVsanObjectsRequestType + +func init() { + t["DeleteVsanObjects"] = reflect.TypeOf((*DeleteVsanObjects)(nil)).Elem() +} + +type DeleteVsanObjectsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Uuids []string `xml:"uuids"` + Force *bool `xml:"force"` +} + +func init() { + t["DeleteVsanObjectsRequestType"] = reflect.TypeOf((*DeleteVsanObjectsRequestType)(nil)).Elem() +} + +type DeleteVsanObjectsResponse struct { + Returnval []HostVsanInternalSystemDeleteVsanObjectsResult `xml:"returnval"` +} + +type DeltaDiskFormatNotSupported struct { + VmConfigFault + + Datastore []ManagedObjectReference `xml:"datastore,omitempty"` + DeltaDiskFormat string `xml:"deltaDiskFormat"` +} + +func init() { + t["DeltaDiskFormatNotSupported"] = reflect.TypeOf((*DeltaDiskFormatNotSupported)(nil)).Elem() +} + +type DeltaDiskFormatNotSupportedFault DeltaDiskFormatNotSupported + +func init() { + t["DeltaDiskFormatNotSupportedFault"] = reflect.TypeOf((*DeltaDiskFormatNotSupportedFault)(nil)).Elem() +} + +type Description struct { + DynamicData + + Label string `xml:"label"` + Summary string `xml:"summary"` +} + +func init() { + t["Description"] = reflect.TypeOf((*Description)(nil)).Elem() +} + +type DeselectVnic DeselectVnicRequestType + +func init() { + t["DeselectVnic"] = reflect.TypeOf((*DeselectVnic)(nil)).Elem() +} + +type DeselectVnicForNicType DeselectVnicForNicTypeRequestType + +func init() { + t["DeselectVnicForNicType"] = reflect.TypeOf((*DeselectVnicForNicType)(nil)).Elem() +} + +type DeselectVnicForNicTypeRequestType struct { + This ManagedObjectReference `xml:"_this"` + NicType string `xml:"nicType"` + Device string `xml:"device"` +} + +func init() { + t["DeselectVnicForNicTypeRequestType"] = reflect.TypeOf((*DeselectVnicForNicTypeRequestType)(nil)).Elem() +} + +type DeselectVnicForNicTypeResponse struct { +} + +type DeselectVnicRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["DeselectVnicRequestType"] = reflect.TypeOf((*DeselectVnicRequestType)(nil)).Elem() +} + +type DeselectVnicResponse struct { +} + +type DesiredSoftwareSpec struct { + DynamicData + + BaseImageSpec DesiredSoftwareSpecBaseImageSpec `xml:"baseImageSpec"` + VendorAddOnSpec *DesiredSoftwareSpecVendorAddOnSpec `xml:"vendorAddOnSpec,omitempty"` +} + +func init() { + t["DesiredSoftwareSpec"] = reflect.TypeOf((*DesiredSoftwareSpec)(nil)).Elem() +} + +type DesiredSoftwareSpecBaseImageSpec struct { + DynamicData + + Version string `xml:"version"` +} + +func init() { + t["DesiredSoftwareSpecBaseImageSpec"] = reflect.TypeOf((*DesiredSoftwareSpecBaseImageSpec)(nil)).Elem() +} + +type DesiredSoftwareSpecVendorAddOnSpec struct { + DynamicData + + Name string `xml:"name"` + Version string `xml:"version"` +} + +func init() { + t["DesiredSoftwareSpecVendorAddOnSpec"] = reflect.TypeOf((*DesiredSoftwareSpecVendorAddOnSpec)(nil)).Elem() +} + +type DestinationSwitchFull struct { + CannotAccessNetwork +} + +func init() { + t["DestinationSwitchFull"] = reflect.TypeOf((*DestinationSwitchFull)(nil)).Elem() +} + +type DestinationSwitchFullFault DestinationSwitchFull + +func init() { + t["DestinationSwitchFullFault"] = reflect.TypeOf((*DestinationSwitchFullFault)(nil)).Elem() +} + +type DestinationVsanDisabled struct { + CannotMoveVsanEnabledHost + + DestinationCluster string `xml:"destinationCluster"` +} + +func init() { + t["DestinationVsanDisabled"] = reflect.TypeOf((*DestinationVsanDisabled)(nil)).Elem() +} + +type DestinationVsanDisabledFault DestinationVsanDisabled + +func init() { + t["DestinationVsanDisabledFault"] = reflect.TypeOf((*DestinationVsanDisabledFault)(nil)).Elem() +} + +type DestroyChildren DestroyChildrenRequestType + +func init() { + t["DestroyChildren"] = reflect.TypeOf((*DestroyChildren)(nil)).Elem() +} + +type DestroyChildrenRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["DestroyChildrenRequestType"] = reflect.TypeOf((*DestroyChildrenRequestType)(nil)).Elem() +} + +type DestroyChildrenResponse struct { +} + +type DestroyCollector DestroyCollectorRequestType + +func init() { + t["DestroyCollector"] = reflect.TypeOf((*DestroyCollector)(nil)).Elem() +} + +type DestroyCollectorRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["DestroyCollectorRequestType"] = reflect.TypeOf((*DestroyCollectorRequestType)(nil)).Elem() +} + +type DestroyCollectorResponse struct { +} + +type DestroyDatastore DestroyDatastoreRequestType + +func init() { + t["DestroyDatastore"] = reflect.TypeOf((*DestroyDatastore)(nil)).Elem() +} + +type DestroyDatastoreRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["DestroyDatastoreRequestType"] = reflect.TypeOf((*DestroyDatastoreRequestType)(nil)).Elem() +} + +type DestroyDatastoreResponse struct { +} + +type DestroyIpPool DestroyIpPoolRequestType + +func init() { + t["DestroyIpPool"] = reflect.TypeOf((*DestroyIpPool)(nil)).Elem() +} + +type DestroyIpPoolRequestType struct { + This ManagedObjectReference `xml:"_this"` + Dc ManagedObjectReference `xml:"dc"` + Id int32 `xml:"id"` + Force bool `xml:"force"` +} + +func init() { + t["DestroyIpPoolRequestType"] = reflect.TypeOf((*DestroyIpPoolRequestType)(nil)).Elem() +} + +type DestroyIpPoolResponse struct { +} + +type DestroyNetwork DestroyNetworkRequestType + +func init() { + t["DestroyNetwork"] = reflect.TypeOf((*DestroyNetwork)(nil)).Elem() +} + +type DestroyNetworkRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["DestroyNetworkRequestType"] = reflect.TypeOf((*DestroyNetworkRequestType)(nil)).Elem() +} + +type DestroyNetworkResponse struct { +} + +type DestroyProfile DestroyProfileRequestType + +func init() { + t["DestroyProfile"] = reflect.TypeOf((*DestroyProfile)(nil)).Elem() +} + +type DestroyProfileRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["DestroyProfileRequestType"] = reflect.TypeOf((*DestroyProfileRequestType)(nil)).Elem() +} + +type DestroyProfileResponse struct { +} + +type DestroyPropertyCollector DestroyPropertyCollectorRequestType + +func init() { + t["DestroyPropertyCollector"] = reflect.TypeOf((*DestroyPropertyCollector)(nil)).Elem() +} + +type DestroyPropertyCollectorRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["DestroyPropertyCollectorRequestType"] = reflect.TypeOf((*DestroyPropertyCollectorRequestType)(nil)).Elem() +} + +type DestroyPropertyCollectorResponse struct { +} + +type DestroyPropertyFilter DestroyPropertyFilterRequestType + +func init() { + t["DestroyPropertyFilter"] = reflect.TypeOf((*DestroyPropertyFilter)(nil)).Elem() +} + +type DestroyPropertyFilterRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["DestroyPropertyFilterRequestType"] = reflect.TypeOf((*DestroyPropertyFilterRequestType)(nil)).Elem() +} + +type DestroyPropertyFilterResponse struct { +} + +type DestroyRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["DestroyRequestType"] = reflect.TypeOf((*DestroyRequestType)(nil)).Elem() +} + +type DestroyVffs DestroyVffsRequestType + +func init() { + t["DestroyVffs"] = reflect.TypeOf((*DestroyVffs)(nil)).Elem() +} + +type DestroyVffsRequestType struct { + This ManagedObjectReference `xml:"_this"` + VffsPath string `xml:"vffsPath"` +} + +func init() { + t["DestroyVffsRequestType"] = reflect.TypeOf((*DestroyVffsRequestType)(nil)).Elem() +} + +type DestroyVffsResponse struct { +} + +type DestroyView DestroyViewRequestType + +func init() { + t["DestroyView"] = reflect.TypeOf((*DestroyView)(nil)).Elem() +} + +type DestroyViewRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["DestroyViewRequestType"] = reflect.TypeOf((*DestroyViewRequestType)(nil)).Elem() +} + +type DestroyViewResponse struct { +} + +type Destroy_Task DestroyRequestType + +func init() { + t["Destroy_Task"] = reflect.TypeOf((*Destroy_Task)(nil)).Elem() +} + +type Destroy_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type DetachDiskRequestType struct { + This ManagedObjectReference `xml:"_this"` + DiskId ID `xml:"diskId"` +} + +func init() { + t["DetachDiskRequestType"] = reflect.TypeOf((*DetachDiskRequestType)(nil)).Elem() +} + +type DetachDisk_Task DetachDiskRequestType + +func init() { + t["DetachDisk_Task"] = reflect.TypeOf((*DetachDisk_Task)(nil)).Elem() +} + +type DetachDisk_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type DetachScsiLun DetachScsiLunRequestType + +func init() { + t["DetachScsiLun"] = reflect.TypeOf((*DetachScsiLun)(nil)).Elem() +} + +type DetachScsiLunExRequestType struct { + This ManagedObjectReference `xml:"_this"` + LunUuid []string `xml:"lunUuid"` +} + +func init() { + t["DetachScsiLunExRequestType"] = reflect.TypeOf((*DetachScsiLunExRequestType)(nil)).Elem() +} + +type DetachScsiLunEx_Task DetachScsiLunExRequestType + +func init() { + t["DetachScsiLunEx_Task"] = reflect.TypeOf((*DetachScsiLunEx_Task)(nil)).Elem() +} + +type DetachScsiLunEx_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type DetachScsiLunRequestType struct { + This ManagedObjectReference `xml:"_this"` + LunUuid string `xml:"lunUuid"` +} + +func init() { + t["DetachScsiLunRequestType"] = reflect.TypeOf((*DetachScsiLunRequestType)(nil)).Elem() +} + +type DetachScsiLunResponse struct { +} + +type DetachTagFromVStorageObject DetachTagFromVStorageObjectRequestType + +func init() { + t["DetachTagFromVStorageObject"] = reflect.TypeOf((*DetachTagFromVStorageObject)(nil)).Elem() +} + +type DetachTagFromVStorageObjectRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Category string `xml:"category"` + Tag string `xml:"tag"` +} + +func init() { + t["DetachTagFromVStorageObjectRequestType"] = reflect.TypeOf((*DetachTagFromVStorageObjectRequestType)(nil)).Elem() +} + +type DetachTagFromVStorageObjectResponse struct { +} + +type DeviceBackedVirtualDiskSpec struct { + VirtualDiskSpec + + Device string `xml:"device"` +} + +func init() { + t["DeviceBackedVirtualDiskSpec"] = reflect.TypeOf((*DeviceBackedVirtualDiskSpec)(nil)).Elem() +} + +type DeviceBackingNotSupported struct { + DeviceNotSupported + + Backing string `xml:"backing"` +} + +func init() { + t["DeviceBackingNotSupported"] = reflect.TypeOf((*DeviceBackingNotSupported)(nil)).Elem() +} + +type DeviceBackingNotSupportedFault BaseDeviceBackingNotSupported + +func init() { + t["DeviceBackingNotSupportedFault"] = reflect.TypeOf((*DeviceBackingNotSupportedFault)(nil)).Elem() +} + +type DeviceControllerNotSupported struct { + DeviceNotSupported + + Controller string `xml:"controller"` +} + +func init() { + t["DeviceControllerNotSupported"] = reflect.TypeOf((*DeviceControllerNotSupported)(nil)).Elem() +} + +type DeviceControllerNotSupportedFault DeviceControllerNotSupported + +func init() { + t["DeviceControllerNotSupportedFault"] = reflect.TypeOf((*DeviceControllerNotSupportedFault)(nil)).Elem() +} + +type DeviceGroupId struct { + DynamicData + + Id string `xml:"id"` +} + +func init() { + t["DeviceGroupId"] = reflect.TypeOf((*DeviceGroupId)(nil)).Elem() +} + +type DeviceHotPlugNotSupported struct { + InvalidDeviceSpec +} + +func init() { + t["DeviceHotPlugNotSupported"] = reflect.TypeOf((*DeviceHotPlugNotSupported)(nil)).Elem() +} + +type DeviceHotPlugNotSupportedFault DeviceHotPlugNotSupported + +func init() { + t["DeviceHotPlugNotSupportedFault"] = reflect.TypeOf((*DeviceHotPlugNotSupportedFault)(nil)).Elem() +} + +type DeviceNotFound struct { + InvalidDeviceSpec +} + +func init() { + t["DeviceNotFound"] = reflect.TypeOf((*DeviceNotFound)(nil)).Elem() +} + +type DeviceNotFoundFault DeviceNotFound + +func init() { + t["DeviceNotFoundFault"] = reflect.TypeOf((*DeviceNotFoundFault)(nil)).Elem() +} + +type DeviceNotSupported struct { + VirtualHardwareCompatibilityIssue + + Device string `xml:"device"` + Reason string `xml:"reason,omitempty"` +} + +func init() { + t["DeviceNotSupported"] = reflect.TypeOf((*DeviceNotSupported)(nil)).Elem() +} + +type DeviceNotSupportedFault BaseDeviceNotSupported + +func init() { + t["DeviceNotSupportedFault"] = reflect.TypeOf((*DeviceNotSupportedFault)(nil)).Elem() +} + +type DeviceUnsupportedForVmPlatform struct { + InvalidDeviceSpec +} + +func init() { + t["DeviceUnsupportedForVmPlatform"] = reflect.TypeOf((*DeviceUnsupportedForVmPlatform)(nil)).Elem() +} + +type DeviceUnsupportedForVmPlatformFault DeviceUnsupportedForVmPlatform + +func init() { + t["DeviceUnsupportedForVmPlatformFault"] = reflect.TypeOf((*DeviceUnsupportedForVmPlatformFault)(nil)).Elem() +} + +type DeviceUnsupportedForVmVersion struct { + InvalidDeviceSpec + + CurrentVersion string `xml:"currentVersion"` + ExpectedVersion string `xml:"expectedVersion"` +} + +func init() { + t["DeviceUnsupportedForVmVersion"] = reflect.TypeOf((*DeviceUnsupportedForVmVersion)(nil)).Elem() +} + +type DeviceUnsupportedForVmVersionFault DeviceUnsupportedForVmVersion + +func init() { + t["DeviceUnsupportedForVmVersionFault"] = reflect.TypeOf((*DeviceUnsupportedForVmVersionFault)(nil)).Elem() +} + +type DiagnosticManagerBundleInfo struct { + DynamicData + + System *ManagedObjectReference `xml:"system,omitempty"` + Url string `xml:"url"` +} + +func init() { + t["DiagnosticManagerBundleInfo"] = reflect.TypeOf((*DiagnosticManagerBundleInfo)(nil)).Elem() +} + +type DiagnosticManagerLogDescriptor struct { + DynamicData + + Key string `xml:"key"` + FileName string `xml:"fileName"` + Creator string `xml:"creator"` + Format string `xml:"format"` + MimeType string `xml:"mimeType"` + Info BaseDescription `xml:"info,typeattr"` +} + +func init() { + t["DiagnosticManagerLogDescriptor"] = reflect.TypeOf((*DiagnosticManagerLogDescriptor)(nil)).Elem() +} + +type DiagnosticManagerLogHeader struct { + DynamicData + + LineStart int32 `xml:"lineStart"` + LineEnd int32 `xml:"lineEnd"` + LineText []string `xml:"lineText,omitempty"` +} + +func init() { + t["DiagnosticManagerLogHeader"] = reflect.TypeOf((*DiagnosticManagerLogHeader)(nil)).Elem() +} + +type DigestNotSupported struct { + DeviceNotSupported +} + +func init() { + t["DigestNotSupported"] = reflect.TypeOf((*DigestNotSupported)(nil)).Elem() +} + +type DigestNotSupportedFault DigestNotSupported + +func init() { + t["DigestNotSupportedFault"] = reflect.TypeOf((*DigestNotSupportedFault)(nil)).Elem() +} + +type DirectoryNotEmpty struct { + FileFault +} + +func init() { + t["DirectoryNotEmpty"] = reflect.TypeOf((*DirectoryNotEmpty)(nil)).Elem() +} + +type DirectoryNotEmptyFault DirectoryNotEmpty + +func init() { + t["DirectoryNotEmptyFault"] = reflect.TypeOf((*DirectoryNotEmptyFault)(nil)).Elem() +} + +type DisableAdminNotSupported struct { + HostConfigFault +} + +func init() { + t["DisableAdminNotSupported"] = reflect.TypeOf((*DisableAdminNotSupported)(nil)).Elem() +} + +type DisableAdminNotSupportedFault DisableAdminNotSupported + +func init() { + t["DisableAdminNotSupportedFault"] = reflect.TypeOf((*DisableAdminNotSupportedFault)(nil)).Elem() +} + +type DisableAlarm DisableAlarmRequestType + +func init() { + t["DisableAlarm"] = reflect.TypeOf((*DisableAlarm)(nil)).Elem() +} + +type DisableAlarmRequestType struct { + This ManagedObjectReference `xml:"_this"` + Alarm ManagedObjectReference `xml:"alarm"` + Entity ManagedObjectReference `xml:"entity"` +} + +func init() { + t["DisableAlarmRequestType"] = reflect.TypeOf((*DisableAlarmRequestType)(nil)).Elem() +} + +type DisableAlarmResponse struct { +} + +type DisableClusteredVmdkSupport DisableClusteredVmdkSupportRequestType + +func init() { + t["DisableClusteredVmdkSupport"] = reflect.TypeOf((*DisableClusteredVmdkSupport)(nil)).Elem() +} + +type DisableClusteredVmdkSupportRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["DisableClusteredVmdkSupportRequestType"] = reflect.TypeOf((*DisableClusteredVmdkSupportRequestType)(nil)).Elem() +} + +type DisableClusteredVmdkSupportResponse struct { +} + +type DisableEvcModeRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["DisableEvcModeRequestType"] = reflect.TypeOf((*DisableEvcModeRequestType)(nil)).Elem() +} + +type DisableEvcMode_Task DisableEvcModeRequestType + +func init() { + t["DisableEvcMode_Task"] = reflect.TypeOf((*DisableEvcMode_Task)(nil)).Elem() +} + +type DisableEvcMode_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type DisableFeature DisableFeatureRequestType + +func init() { + t["DisableFeature"] = reflect.TypeOf((*DisableFeature)(nil)).Elem() +} + +type DisableFeatureRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host *ManagedObjectReference `xml:"host,omitempty"` + FeatureKey string `xml:"featureKey"` +} + +func init() { + t["DisableFeatureRequestType"] = reflect.TypeOf((*DisableFeatureRequestType)(nil)).Elem() +} + +type DisableFeatureResponse struct { + Returnval bool `xml:"returnval"` +} + +type DisableHyperThreading DisableHyperThreadingRequestType + +func init() { + t["DisableHyperThreading"] = reflect.TypeOf((*DisableHyperThreading)(nil)).Elem() +} + +type DisableHyperThreadingRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["DisableHyperThreadingRequestType"] = reflect.TypeOf((*DisableHyperThreadingRequestType)(nil)).Elem() +} + +type DisableHyperThreadingResponse struct { +} + +type DisableMultipathPath DisableMultipathPathRequestType + +func init() { + t["DisableMultipathPath"] = reflect.TypeOf((*DisableMultipathPath)(nil)).Elem() +} + +type DisableMultipathPathRequestType struct { + This ManagedObjectReference `xml:"_this"` + PathName string `xml:"pathName"` +} + +func init() { + t["DisableMultipathPathRequestType"] = reflect.TypeOf((*DisableMultipathPathRequestType)(nil)).Elem() +} + +type DisableMultipathPathResponse struct { +} + +type DisableRuleset DisableRulesetRequestType + +func init() { + t["DisableRuleset"] = reflect.TypeOf((*DisableRuleset)(nil)).Elem() +} + +type DisableRulesetRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id string `xml:"id"` +} + +func init() { + t["DisableRulesetRequestType"] = reflect.TypeOf((*DisableRulesetRequestType)(nil)).Elem() +} + +type DisableRulesetResponse struct { +} + +type DisableSecondaryVMRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` +} + +func init() { + t["DisableSecondaryVMRequestType"] = reflect.TypeOf((*DisableSecondaryVMRequestType)(nil)).Elem() +} + +type DisableSecondaryVM_Task DisableSecondaryVMRequestType + +func init() { + t["DisableSecondaryVM_Task"] = reflect.TypeOf((*DisableSecondaryVM_Task)(nil)).Elem() +} + +type DisableSecondaryVM_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type DisableSmartCardAuthentication DisableSmartCardAuthenticationRequestType + +func init() { + t["DisableSmartCardAuthentication"] = reflect.TypeOf((*DisableSmartCardAuthentication)(nil)).Elem() +} + +type DisableSmartCardAuthenticationRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["DisableSmartCardAuthenticationRequestType"] = reflect.TypeOf((*DisableSmartCardAuthenticationRequestType)(nil)).Elem() +} + +type DisableSmartCardAuthenticationResponse struct { +} + +type DisallowedChangeByService struct { + RuntimeFault + + ServiceName string `xml:"serviceName"` + DisallowedChange string `xml:"disallowedChange,omitempty"` +} + +func init() { + t["DisallowedChangeByService"] = reflect.TypeOf((*DisallowedChangeByService)(nil)).Elem() +} + +type DisallowedChangeByServiceFault DisallowedChangeByService + +func init() { + t["DisallowedChangeByServiceFault"] = reflect.TypeOf((*DisallowedChangeByServiceFault)(nil)).Elem() +} + +type DisallowedDiskModeChange struct { + InvalidDeviceSpec +} + +func init() { + t["DisallowedDiskModeChange"] = reflect.TypeOf((*DisallowedDiskModeChange)(nil)).Elem() +} + +type DisallowedDiskModeChangeFault DisallowedDiskModeChange + +func init() { + t["DisallowedDiskModeChangeFault"] = reflect.TypeOf((*DisallowedDiskModeChangeFault)(nil)).Elem() +} + +type DisallowedMigrationDeviceAttached struct { + MigrationFault + + Fault LocalizedMethodFault `xml:"fault"` +} + +func init() { + t["DisallowedMigrationDeviceAttached"] = reflect.TypeOf((*DisallowedMigrationDeviceAttached)(nil)).Elem() +} + +type DisallowedMigrationDeviceAttachedFault DisallowedMigrationDeviceAttached + +func init() { + t["DisallowedMigrationDeviceAttachedFault"] = reflect.TypeOf((*DisallowedMigrationDeviceAttachedFault)(nil)).Elem() +} + +type DisallowedOperationOnFailoverHost struct { + RuntimeFault + + Host ManagedObjectReference `xml:"host"` + Hostname string `xml:"hostname"` +} + +func init() { + t["DisallowedOperationOnFailoverHost"] = reflect.TypeOf((*DisallowedOperationOnFailoverHost)(nil)).Elem() +} + +type DisallowedOperationOnFailoverHostFault DisallowedOperationOnFailoverHost + +func init() { + t["DisallowedOperationOnFailoverHostFault"] = reflect.TypeOf((*DisallowedOperationOnFailoverHostFault)(nil)).Elem() +} + +type DisconnectHostRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["DisconnectHostRequestType"] = reflect.TypeOf((*DisconnectHostRequestType)(nil)).Elem() +} + +type DisconnectHost_Task DisconnectHostRequestType + +func init() { + t["DisconnectHost_Task"] = reflect.TypeOf((*DisconnectHost_Task)(nil)).Elem() +} + +type DisconnectHost_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type DisconnectNvmeController DisconnectNvmeControllerRequestType + +func init() { + t["DisconnectNvmeController"] = reflect.TypeOf((*DisconnectNvmeController)(nil)).Elem() +} + +type DisconnectNvmeControllerRequestType struct { + This ManagedObjectReference `xml:"_this"` + DisconnectSpec HostNvmeDisconnectSpec `xml:"disconnectSpec"` +} + +func init() { + t["DisconnectNvmeControllerRequestType"] = reflect.TypeOf((*DisconnectNvmeControllerRequestType)(nil)).Elem() +} + +type DisconnectNvmeControllerResponse struct { +} + +type DisconnectedHostsBlockingEVC struct { + EVCConfigFault +} + +func init() { + t["DisconnectedHostsBlockingEVC"] = reflect.TypeOf((*DisconnectedHostsBlockingEVC)(nil)).Elem() +} + +type DisconnectedHostsBlockingEVCFault DisconnectedHostsBlockingEVC + +func init() { + t["DisconnectedHostsBlockingEVCFault"] = reflect.TypeOf((*DisconnectedHostsBlockingEVCFault)(nil)).Elem() +} + +type DiscoverFcoeHbas DiscoverFcoeHbasRequestType + +func init() { + t["DiscoverFcoeHbas"] = reflect.TypeOf((*DiscoverFcoeHbas)(nil)).Elem() +} + +type DiscoverFcoeHbasRequestType struct { + This ManagedObjectReference `xml:"_this"` + FcoeSpec FcoeConfigFcoeSpecification `xml:"fcoeSpec"` +} + +func init() { + t["DiscoverFcoeHbasRequestType"] = reflect.TypeOf((*DiscoverFcoeHbasRequestType)(nil)).Elem() +} + +type DiscoverFcoeHbasResponse struct { +} + +type DiscoverNvmeControllers DiscoverNvmeControllersRequestType + +func init() { + t["DiscoverNvmeControllers"] = reflect.TypeOf((*DiscoverNvmeControllers)(nil)).Elem() +} + +type DiscoverNvmeControllersRequestType struct { + This ManagedObjectReference `xml:"_this"` + DiscoverSpec HostNvmeDiscoverSpec `xml:"discoverSpec"` +} + +func init() { + t["DiscoverNvmeControllersRequestType"] = reflect.TypeOf((*DiscoverNvmeControllersRequestType)(nil)).Elem() +} + +type DiscoverNvmeControllersResponse struct { + Returnval HostNvmeDiscoveryLog `xml:"returnval"` +} + +type DiskChangeExtent struct { + DynamicData + + Start int64 `xml:"start"` + Length int64 `xml:"length"` +} + +func init() { + t["DiskChangeExtent"] = reflect.TypeOf((*DiskChangeExtent)(nil)).Elem() +} + +type DiskChangeInfo struct { + DynamicData + + StartOffset int64 `xml:"startOffset"` + Length int64 `xml:"length"` + ChangedArea []DiskChangeExtent `xml:"changedArea,omitempty"` +} + +func init() { + t["DiskChangeInfo"] = reflect.TypeOf((*DiskChangeInfo)(nil)).Elem() +} + +type DiskCryptoSpec struct { + DynamicData + + Parent *DiskCryptoSpec `xml:"parent,omitempty"` + Crypto BaseCryptoSpec `xml:"crypto,typeattr"` +} + +func init() { + t["DiskCryptoSpec"] = reflect.TypeOf((*DiskCryptoSpec)(nil)).Elem() +} + +type DiskHasPartitions struct { + VsanDiskFault +} + +func init() { + t["DiskHasPartitions"] = reflect.TypeOf((*DiskHasPartitions)(nil)).Elem() +} + +type DiskHasPartitionsFault DiskHasPartitions + +func init() { + t["DiskHasPartitionsFault"] = reflect.TypeOf((*DiskHasPartitionsFault)(nil)).Elem() +} + +type DiskIsLastRemainingNonSSD struct { + VsanDiskFault +} + +func init() { + t["DiskIsLastRemainingNonSSD"] = reflect.TypeOf((*DiskIsLastRemainingNonSSD)(nil)).Elem() +} + +type DiskIsLastRemainingNonSSDFault DiskIsLastRemainingNonSSD + +func init() { + t["DiskIsLastRemainingNonSSDFault"] = reflect.TypeOf((*DiskIsLastRemainingNonSSDFault)(nil)).Elem() +} + +type DiskIsNonLocal struct { + VsanDiskFault +} + +func init() { + t["DiskIsNonLocal"] = reflect.TypeOf((*DiskIsNonLocal)(nil)).Elem() +} + +type DiskIsNonLocalFault DiskIsNonLocal + +func init() { + t["DiskIsNonLocalFault"] = reflect.TypeOf((*DiskIsNonLocalFault)(nil)).Elem() +} + +type DiskIsUSB struct { + VsanDiskFault +} + +func init() { + t["DiskIsUSB"] = reflect.TypeOf((*DiskIsUSB)(nil)).Elem() +} + +type DiskIsUSBFault DiskIsUSB + +func init() { + t["DiskIsUSBFault"] = reflect.TypeOf((*DiskIsUSBFault)(nil)).Elem() +} + +type DiskMoveTypeNotSupported struct { + MigrationFault +} + +func init() { + t["DiskMoveTypeNotSupported"] = reflect.TypeOf((*DiskMoveTypeNotSupported)(nil)).Elem() +} + +type DiskMoveTypeNotSupportedFault DiskMoveTypeNotSupported + +func init() { + t["DiskMoveTypeNotSupportedFault"] = reflect.TypeOf((*DiskMoveTypeNotSupportedFault)(nil)).Elem() +} + +type DiskNotSupported struct { + VirtualHardwareCompatibilityIssue + + Disk int32 `xml:"disk"` +} + +func init() { + t["DiskNotSupported"] = reflect.TypeOf((*DiskNotSupported)(nil)).Elem() +} + +type DiskNotSupportedFault BaseDiskNotSupported + +func init() { + t["DiskNotSupportedFault"] = reflect.TypeOf((*DiskNotSupportedFault)(nil)).Elem() +} + +type DiskTooSmall struct { + VsanDiskFault +} + +func init() { + t["DiskTooSmall"] = reflect.TypeOf((*DiskTooSmall)(nil)).Elem() +} + +type DiskTooSmallFault DiskTooSmall + +func init() { + t["DiskTooSmallFault"] = reflect.TypeOf((*DiskTooSmallFault)(nil)).Elem() +} + +type DissociateProfile DissociateProfileRequestType + +func init() { + t["DissociateProfile"] = reflect.TypeOf((*DissociateProfile)(nil)).Elem() +} + +type DissociateProfileRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity []ManagedObjectReference `xml:"entity,omitempty"` +} + +func init() { + t["DissociateProfileRequestType"] = reflect.TypeOf((*DissociateProfileRequestType)(nil)).Elem() +} + +type DissociateProfileResponse struct { +} + +type DistributedVirtualPort struct { + DynamicData + + Key string `xml:"key"` + Config DVPortConfigInfo `xml:"config"` + DvsUuid string `xml:"dvsUuid"` + PortgroupKey string `xml:"portgroupKey,omitempty"` + ProxyHost *ManagedObjectReference `xml:"proxyHost,omitempty"` + Connectee *DistributedVirtualSwitchPortConnectee `xml:"connectee,omitempty"` + Conflict bool `xml:"conflict"` + ConflictPortKey string `xml:"conflictPortKey,omitempty"` + State *DVPortState `xml:"state,omitempty"` + ConnectionCookie int32 `xml:"connectionCookie,omitempty"` + LastStatusChange time.Time `xml:"lastStatusChange"` + HostLocalPort *bool `xml:"hostLocalPort"` + ExternalId string `xml:"externalId,omitempty"` + SegmentPortId string `xml:"segmentPortId,omitempty"` +} + +func init() { + t["DistributedVirtualPort"] = reflect.TypeOf((*DistributedVirtualPort)(nil)).Elem() +} + +type DistributedVirtualPortgroupInfo struct { + DynamicData + + SwitchName string `xml:"switchName"` + SwitchUuid string `xml:"switchUuid"` + PortgroupName string `xml:"portgroupName"` + PortgroupKey string `xml:"portgroupKey"` + PortgroupType string `xml:"portgroupType"` + UplinkPortgroup bool `xml:"uplinkPortgroup"` + Portgroup ManagedObjectReference `xml:"portgroup"` + NetworkReservationSupported *bool `xml:"networkReservationSupported"` + BackingType string `xml:"backingType,omitempty"` + LogicalSwitchUuid string `xml:"logicalSwitchUuid,omitempty"` + SegmentId string `xml:"segmentId,omitempty"` +} + +func init() { + t["DistributedVirtualPortgroupInfo"] = reflect.TypeOf((*DistributedVirtualPortgroupInfo)(nil)).Elem() +} + +type DistributedVirtualPortgroupNsxPortgroupOperationResult struct { + DynamicData + + Portgroups []ManagedObjectReference `xml:"portgroups,omitempty"` + Problems []DistributedVirtualPortgroupProblem `xml:"problems,omitempty"` +} + +func init() { + t["DistributedVirtualPortgroupNsxPortgroupOperationResult"] = reflect.TypeOf((*DistributedVirtualPortgroupNsxPortgroupOperationResult)(nil)).Elem() +} + +type DistributedVirtualPortgroupProblem struct { + DynamicData + + LogicalSwitchUuid string `xml:"logicalSwitchUuid"` + Fault LocalizedMethodFault `xml:"fault"` +} + +func init() { + t["DistributedVirtualPortgroupProblem"] = reflect.TypeOf((*DistributedVirtualPortgroupProblem)(nil)).Elem() +} + +type DistributedVirtualSwitchHostMember struct { + DynamicData + + RuntimeState *DistributedVirtualSwitchHostMemberRuntimeState `xml:"runtimeState,omitempty"` + Config DistributedVirtualSwitchHostMemberConfigInfo `xml:"config"` + ProductInfo *DistributedVirtualSwitchProductSpec `xml:"productInfo,omitempty"` + UplinkPortKey []string `xml:"uplinkPortKey,omitempty"` + Status string `xml:"status"` + StatusDetail string `xml:"statusDetail,omitempty"` +} + +func init() { + t["DistributedVirtualSwitchHostMember"] = reflect.TypeOf((*DistributedVirtualSwitchHostMember)(nil)).Elem() +} + +type DistributedVirtualSwitchHostMemberBacking struct { + DynamicData +} + +func init() { + t["DistributedVirtualSwitchHostMemberBacking"] = reflect.TypeOf((*DistributedVirtualSwitchHostMemberBacking)(nil)).Elem() +} + +type DistributedVirtualSwitchHostMemberConfigInfo struct { + DynamicData + + Host *ManagedObjectReference `xml:"host,omitempty"` + MaxProxySwitchPorts int32 `xml:"maxProxySwitchPorts"` + VendorSpecificConfig []DistributedVirtualSwitchKeyedOpaqueBlob `xml:"vendorSpecificConfig,omitempty"` + Backing BaseDistributedVirtualSwitchHostMemberBacking `xml:"backing,typeattr"` + NsxSwitch *bool `xml:"nsxSwitch"` + EnsEnabled *bool `xml:"ensEnabled"` + EnsInterruptEnabled *bool `xml:"ensInterruptEnabled"` + TransportZones []DistributedVirtualSwitchHostMemberTransportZoneInfo `xml:"transportZones,omitempty"` + NsxtUsedUplinkNames []string `xml:"nsxtUsedUplinkNames,omitempty"` +} + +func init() { + t["DistributedVirtualSwitchHostMemberConfigInfo"] = reflect.TypeOf((*DistributedVirtualSwitchHostMemberConfigInfo)(nil)).Elem() +} + +type DistributedVirtualSwitchHostMemberConfigSpec struct { + DynamicData + + Operation string `xml:"operation"` + Host ManagedObjectReference `xml:"host"` + Backing BaseDistributedVirtualSwitchHostMemberBacking `xml:"backing,omitempty,typeattr"` + MaxProxySwitchPorts int32 `xml:"maxProxySwitchPorts,omitempty"` + VendorSpecificConfig []DistributedVirtualSwitchKeyedOpaqueBlob `xml:"vendorSpecificConfig,omitempty"` +} + +func init() { + t["DistributedVirtualSwitchHostMemberConfigSpec"] = reflect.TypeOf((*DistributedVirtualSwitchHostMemberConfigSpec)(nil)).Elem() +} + +type DistributedVirtualSwitchHostMemberPnicBacking struct { + DistributedVirtualSwitchHostMemberBacking + + PnicSpec []DistributedVirtualSwitchHostMemberPnicSpec `xml:"pnicSpec,omitempty"` +} + +func init() { + t["DistributedVirtualSwitchHostMemberPnicBacking"] = reflect.TypeOf((*DistributedVirtualSwitchHostMemberPnicBacking)(nil)).Elem() +} + +type DistributedVirtualSwitchHostMemberPnicSpec struct { + DynamicData + + PnicDevice string `xml:"pnicDevice"` + UplinkPortKey string `xml:"uplinkPortKey,omitempty"` + UplinkPortgroupKey string `xml:"uplinkPortgroupKey,omitempty"` + ConnectionCookie int32 `xml:"connectionCookie,omitempty"` +} + +func init() { + t["DistributedVirtualSwitchHostMemberPnicSpec"] = reflect.TypeOf((*DistributedVirtualSwitchHostMemberPnicSpec)(nil)).Elem() +} + +type DistributedVirtualSwitchHostMemberRuntimeState struct { + DynamicData + + CurrentMaxProxySwitchPorts int32 `xml:"currentMaxProxySwitchPorts"` +} + +func init() { + t["DistributedVirtualSwitchHostMemberRuntimeState"] = reflect.TypeOf((*DistributedVirtualSwitchHostMemberRuntimeState)(nil)).Elem() +} + +type DistributedVirtualSwitchHostMemberTransportZoneInfo struct { + DynamicData + + Uuid string `xml:"uuid"` + Type string `xml:"type"` +} + +func init() { + t["DistributedVirtualSwitchHostMemberTransportZoneInfo"] = reflect.TypeOf((*DistributedVirtualSwitchHostMemberTransportZoneInfo)(nil)).Elem() +} + +type DistributedVirtualSwitchHostProductSpec struct { + DynamicData + + ProductLineId string `xml:"productLineId,omitempty"` + Version string `xml:"version,omitempty"` +} + +func init() { + t["DistributedVirtualSwitchHostProductSpec"] = reflect.TypeOf((*DistributedVirtualSwitchHostProductSpec)(nil)).Elem() +} + +type DistributedVirtualSwitchInfo struct { + DynamicData + + SwitchName string `xml:"switchName"` + SwitchUuid string `xml:"switchUuid"` + DistributedVirtualSwitch ManagedObjectReference `xml:"distributedVirtualSwitch"` + NetworkReservationSupported *bool `xml:"networkReservationSupported"` +} + +func init() { + t["DistributedVirtualSwitchInfo"] = reflect.TypeOf((*DistributedVirtualSwitchInfo)(nil)).Elem() +} + +type DistributedVirtualSwitchKeyedOpaqueBlob struct { + DynamicData + + Key string `xml:"key"` + OpaqueData string `xml:"opaqueData"` +} + +func init() { + t["DistributedVirtualSwitchKeyedOpaqueBlob"] = reflect.TypeOf((*DistributedVirtualSwitchKeyedOpaqueBlob)(nil)).Elem() +} + +type DistributedVirtualSwitchManagerCompatibilityResult struct { + DynamicData + + Host ManagedObjectReference `xml:"host"` + Error []LocalizedMethodFault `xml:"error,omitempty"` +} + +func init() { + t["DistributedVirtualSwitchManagerCompatibilityResult"] = reflect.TypeOf((*DistributedVirtualSwitchManagerCompatibilityResult)(nil)).Elem() +} + +type DistributedVirtualSwitchManagerDvsProductSpec struct { + DynamicData + + NewSwitchProductSpec *DistributedVirtualSwitchProductSpec `xml:"newSwitchProductSpec,omitempty"` + DistributedVirtualSwitch *ManagedObjectReference `xml:"distributedVirtualSwitch,omitempty"` +} + +func init() { + t["DistributedVirtualSwitchManagerDvsProductSpec"] = reflect.TypeOf((*DistributedVirtualSwitchManagerDvsProductSpec)(nil)).Elem() +} + +type DistributedVirtualSwitchManagerHostArrayFilter struct { + DistributedVirtualSwitchManagerHostDvsFilterSpec + + Host []ManagedObjectReference `xml:"host"` +} + +func init() { + t["DistributedVirtualSwitchManagerHostArrayFilter"] = reflect.TypeOf((*DistributedVirtualSwitchManagerHostArrayFilter)(nil)).Elem() +} + +type DistributedVirtualSwitchManagerHostContainer struct { + DynamicData + + Container ManagedObjectReference `xml:"container"` + Recursive bool `xml:"recursive"` +} + +func init() { + t["DistributedVirtualSwitchManagerHostContainer"] = reflect.TypeOf((*DistributedVirtualSwitchManagerHostContainer)(nil)).Elem() +} + +type DistributedVirtualSwitchManagerHostContainerFilter struct { + DistributedVirtualSwitchManagerHostDvsFilterSpec + + HostContainer DistributedVirtualSwitchManagerHostContainer `xml:"hostContainer"` +} + +func init() { + t["DistributedVirtualSwitchManagerHostContainerFilter"] = reflect.TypeOf((*DistributedVirtualSwitchManagerHostContainerFilter)(nil)).Elem() +} + +type DistributedVirtualSwitchManagerHostDvsFilterSpec struct { + DynamicData + + Inclusive bool `xml:"inclusive"` +} + +func init() { + t["DistributedVirtualSwitchManagerHostDvsFilterSpec"] = reflect.TypeOf((*DistributedVirtualSwitchManagerHostDvsFilterSpec)(nil)).Elem() +} + +type DistributedVirtualSwitchManagerHostDvsMembershipFilter struct { + DistributedVirtualSwitchManagerHostDvsFilterSpec + + DistributedVirtualSwitch ManagedObjectReference `xml:"distributedVirtualSwitch"` +} + +func init() { + t["DistributedVirtualSwitchManagerHostDvsMembershipFilter"] = reflect.TypeOf((*DistributedVirtualSwitchManagerHostDvsMembershipFilter)(nil)).Elem() +} + +type DistributedVirtualSwitchManagerImportResult struct { + DynamicData + + DistributedVirtualSwitch []ManagedObjectReference `xml:"distributedVirtualSwitch,omitempty"` + DistributedVirtualPortgroup []ManagedObjectReference `xml:"distributedVirtualPortgroup,omitempty"` + ImportFault []ImportOperationBulkFaultFaultOnImport `xml:"importFault,omitempty"` +} + +func init() { + t["DistributedVirtualSwitchManagerImportResult"] = reflect.TypeOf((*DistributedVirtualSwitchManagerImportResult)(nil)).Elem() +} + +type DistributedVirtualSwitchPortConnectee struct { + DynamicData + + ConnectedEntity *ManagedObjectReference `xml:"connectedEntity,omitempty"` + NicKey string `xml:"nicKey,omitempty"` + Type string `xml:"type,omitempty"` + AddressHint string `xml:"addressHint,omitempty"` +} + +func init() { + t["DistributedVirtualSwitchPortConnectee"] = reflect.TypeOf((*DistributedVirtualSwitchPortConnectee)(nil)).Elem() +} + +type DistributedVirtualSwitchPortConnection struct { + DynamicData + + SwitchUuid string `xml:"switchUuid"` + PortgroupKey string `xml:"portgroupKey,omitempty"` + PortKey string `xml:"portKey,omitempty"` + ConnectionCookie int32 `xml:"connectionCookie,omitempty"` +} + +func init() { + t["DistributedVirtualSwitchPortConnection"] = reflect.TypeOf((*DistributedVirtualSwitchPortConnection)(nil)).Elem() +} + +type DistributedVirtualSwitchPortCriteria struct { + DynamicData + + Connected *bool `xml:"connected"` + Active *bool `xml:"active"` + UplinkPort *bool `xml:"uplinkPort"` + NsxPort *bool `xml:"nsxPort"` + Scope *ManagedObjectReference `xml:"scope,omitempty"` + PortgroupKey []string `xml:"portgroupKey,omitempty"` + Inside *bool `xml:"inside"` + PortKey []string `xml:"portKey,omitempty"` + Host []ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["DistributedVirtualSwitchPortCriteria"] = reflect.TypeOf((*DistributedVirtualSwitchPortCriteria)(nil)).Elem() +} + +type DistributedVirtualSwitchPortStatistics struct { + DynamicData + + PacketsInMulticast int64 `xml:"packetsInMulticast"` + PacketsOutMulticast int64 `xml:"packetsOutMulticast"` + BytesInMulticast int64 `xml:"bytesInMulticast"` + BytesOutMulticast int64 `xml:"bytesOutMulticast"` + PacketsInUnicast int64 `xml:"packetsInUnicast"` + PacketsOutUnicast int64 `xml:"packetsOutUnicast"` + BytesInUnicast int64 `xml:"bytesInUnicast"` + BytesOutUnicast int64 `xml:"bytesOutUnicast"` + PacketsInBroadcast int64 `xml:"packetsInBroadcast"` + PacketsOutBroadcast int64 `xml:"packetsOutBroadcast"` + BytesInBroadcast int64 `xml:"bytesInBroadcast"` + BytesOutBroadcast int64 `xml:"bytesOutBroadcast"` + PacketsInDropped int64 `xml:"packetsInDropped"` + PacketsOutDropped int64 `xml:"packetsOutDropped"` + PacketsInException int64 `xml:"packetsInException"` + PacketsOutException int64 `xml:"packetsOutException"` + BytesInFromPnic int64 `xml:"bytesInFromPnic,omitempty"` + BytesOutToPnic int64 `xml:"bytesOutToPnic,omitempty"` +} + +func init() { + t["DistributedVirtualSwitchPortStatistics"] = reflect.TypeOf((*DistributedVirtualSwitchPortStatistics)(nil)).Elem() +} + +type DistributedVirtualSwitchProductSpec struct { + DynamicData + + Name string `xml:"name,omitempty"` + Vendor string `xml:"vendor,omitempty"` + Version string `xml:"version,omitempty"` + Build string `xml:"build,omitempty"` + ForwardingClass string `xml:"forwardingClass,omitempty"` + BundleId string `xml:"bundleId,omitempty"` + BundleUrl string `xml:"bundleUrl,omitempty"` +} + +func init() { + t["DistributedVirtualSwitchProductSpec"] = reflect.TypeOf((*DistributedVirtualSwitchProductSpec)(nil)).Elem() +} + +type DoesCustomizationSpecExist DoesCustomizationSpecExistRequestType + +func init() { + t["DoesCustomizationSpecExist"] = reflect.TypeOf((*DoesCustomizationSpecExist)(nil)).Elem() +} + +type DoesCustomizationSpecExistRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` +} + +func init() { + t["DoesCustomizationSpecExistRequestType"] = reflect.TypeOf((*DoesCustomizationSpecExistRequestType)(nil)).Elem() +} + +type DoesCustomizationSpecExistResponse struct { + Returnval bool `xml:"returnval"` +} + +type DomainNotFound struct { + ActiveDirectoryFault + + DomainName string `xml:"domainName"` +} + +func init() { + t["DomainNotFound"] = reflect.TypeOf((*DomainNotFound)(nil)).Elem() +} + +type DomainNotFoundFault DomainNotFound + +func init() { + t["DomainNotFoundFault"] = reflect.TypeOf((*DomainNotFoundFault)(nil)).Elem() +} + +type DownloadDescriptionTree DownloadDescriptionTreeRequestType + +func init() { + t["DownloadDescriptionTree"] = reflect.TypeOf((*DownloadDescriptionTree)(nil)).Elem() +} + +type DownloadDescriptionTreeRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["DownloadDescriptionTreeRequestType"] = reflect.TypeOf((*DownloadDescriptionTreeRequestType)(nil)).Elem() +} + +type DownloadDescriptionTreeResponse struct { + Returnval []byte `xml:"returnval"` +} + +type DrsDisabledEvent struct { + ClusterEvent +} + +func init() { + t["DrsDisabledEvent"] = reflect.TypeOf((*DrsDisabledEvent)(nil)).Elem() +} + +type DrsDisabledOnVm struct { + VimFault +} + +func init() { + t["DrsDisabledOnVm"] = reflect.TypeOf((*DrsDisabledOnVm)(nil)).Elem() +} + +type DrsDisabledOnVmFault DrsDisabledOnVm + +func init() { + t["DrsDisabledOnVmFault"] = reflect.TypeOf((*DrsDisabledOnVmFault)(nil)).Elem() +} + +type DrsEnabledEvent struct { + ClusterEvent + + Behavior string `xml:"behavior"` +} + +func init() { + t["DrsEnabledEvent"] = reflect.TypeOf((*DrsEnabledEvent)(nil)).Elem() +} + +type DrsEnteredStandbyModeEvent struct { + EnteredStandbyModeEvent +} + +func init() { + t["DrsEnteredStandbyModeEvent"] = reflect.TypeOf((*DrsEnteredStandbyModeEvent)(nil)).Elem() +} + +type DrsEnteringStandbyModeEvent struct { + EnteringStandbyModeEvent +} + +func init() { + t["DrsEnteringStandbyModeEvent"] = reflect.TypeOf((*DrsEnteringStandbyModeEvent)(nil)).Elem() +} + +type DrsExitStandbyModeFailedEvent struct { + ExitStandbyModeFailedEvent +} + +func init() { + t["DrsExitStandbyModeFailedEvent"] = reflect.TypeOf((*DrsExitStandbyModeFailedEvent)(nil)).Elem() +} + +type DrsExitedStandbyModeEvent struct { + ExitedStandbyModeEvent +} + +func init() { + t["DrsExitedStandbyModeEvent"] = reflect.TypeOf((*DrsExitedStandbyModeEvent)(nil)).Elem() +} + +type DrsExitingStandbyModeEvent struct { + ExitingStandbyModeEvent +} + +func init() { + t["DrsExitingStandbyModeEvent"] = reflect.TypeOf((*DrsExitingStandbyModeEvent)(nil)).Elem() +} + +type DrsInvocationFailedEvent struct { + ClusterEvent +} + +func init() { + t["DrsInvocationFailedEvent"] = reflect.TypeOf((*DrsInvocationFailedEvent)(nil)).Elem() +} + +type DrsRecoveredFromFailureEvent struct { + ClusterEvent +} + +func init() { + t["DrsRecoveredFromFailureEvent"] = reflect.TypeOf((*DrsRecoveredFromFailureEvent)(nil)).Elem() +} + +type DrsResourceConfigureFailedEvent struct { + HostEvent + + Reason LocalizedMethodFault `xml:"reason"` +} + +func init() { + t["DrsResourceConfigureFailedEvent"] = reflect.TypeOf((*DrsResourceConfigureFailedEvent)(nil)).Elem() +} + +type DrsResourceConfigureSyncedEvent struct { + HostEvent +} + +func init() { + t["DrsResourceConfigureSyncedEvent"] = reflect.TypeOf((*DrsResourceConfigureSyncedEvent)(nil)).Elem() +} + +type DrsRuleComplianceEvent struct { + VmEvent +} + +func init() { + t["DrsRuleComplianceEvent"] = reflect.TypeOf((*DrsRuleComplianceEvent)(nil)).Elem() +} + +type DrsRuleViolationEvent struct { + VmEvent +} + +func init() { + t["DrsRuleViolationEvent"] = reflect.TypeOf((*DrsRuleViolationEvent)(nil)).Elem() +} + +type DrsSoftRuleViolationEvent struct { + VmEvent +} + +func init() { + t["DrsSoftRuleViolationEvent"] = reflect.TypeOf((*DrsSoftRuleViolationEvent)(nil)).Elem() +} + +type DrsVmMigratedEvent struct { + VmMigratedEvent +} + +func init() { + t["DrsVmMigratedEvent"] = reflect.TypeOf((*DrsVmMigratedEvent)(nil)).Elem() +} + +type DrsVmPoweredOnEvent struct { + VmPoweredOnEvent +} + +func init() { + t["DrsVmPoweredOnEvent"] = reflect.TypeOf((*DrsVmPoweredOnEvent)(nil)).Elem() +} + +type DrsVmotionIncompatibleFault struct { + VirtualHardwareCompatibilityIssue + + Host ManagedObjectReference `xml:"host"` +} + +func init() { + t["DrsVmotionIncompatibleFault"] = reflect.TypeOf((*DrsVmotionIncompatibleFault)(nil)).Elem() +} + +type DrsVmotionIncompatibleFaultFault DrsVmotionIncompatibleFault + +func init() { + t["DrsVmotionIncompatibleFaultFault"] = reflect.TypeOf((*DrsVmotionIncompatibleFaultFault)(nil)).Elem() +} + +type DuplicateCustomizationSpec DuplicateCustomizationSpecRequestType + +func init() { + t["DuplicateCustomizationSpec"] = reflect.TypeOf((*DuplicateCustomizationSpec)(nil)).Elem() +} + +type DuplicateCustomizationSpecRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + NewName string `xml:"newName"` +} + +func init() { + t["DuplicateCustomizationSpecRequestType"] = reflect.TypeOf((*DuplicateCustomizationSpecRequestType)(nil)).Elem() +} + +type DuplicateCustomizationSpecResponse struct { +} + +type DuplicateDisks struct { + VsanDiskFault +} + +func init() { + t["DuplicateDisks"] = reflect.TypeOf((*DuplicateDisks)(nil)).Elem() +} + +type DuplicateDisksFault DuplicateDisks + +func init() { + t["DuplicateDisksFault"] = reflect.TypeOf((*DuplicateDisksFault)(nil)).Elem() +} + +type DuplicateIpDetectedEvent struct { + HostEvent + + DuplicateIP string `xml:"duplicateIP"` + MacAddress string `xml:"macAddress"` +} + +func init() { + t["DuplicateIpDetectedEvent"] = reflect.TypeOf((*DuplicateIpDetectedEvent)(nil)).Elem() +} + +type DuplicateName struct { + VimFault + + Name string `xml:"name"` + Object ManagedObjectReference `xml:"object"` +} + +func init() { + t["DuplicateName"] = reflect.TypeOf((*DuplicateName)(nil)).Elem() +} + +type DuplicateNameFault DuplicateName + +func init() { + t["DuplicateNameFault"] = reflect.TypeOf((*DuplicateNameFault)(nil)).Elem() +} + +type DuplicateVsanNetworkInterface struct { + VsanFault + + Device string `xml:"device"` +} + +func init() { + t["DuplicateVsanNetworkInterface"] = reflect.TypeOf((*DuplicateVsanNetworkInterface)(nil)).Elem() +} + +type DuplicateVsanNetworkInterfaceFault DuplicateVsanNetworkInterface + +func init() { + t["DuplicateVsanNetworkInterfaceFault"] = reflect.TypeOf((*DuplicateVsanNetworkInterfaceFault)(nil)).Elem() +} + +type DvpgImportEvent struct { + DVPortgroupEvent + + ImportType string `xml:"importType"` +} + +func init() { + t["DvpgImportEvent"] = reflect.TypeOf((*DvpgImportEvent)(nil)).Elem() +} + +type DvpgRestoreEvent struct { + DVPortgroupEvent +} + +func init() { + t["DvpgRestoreEvent"] = reflect.TypeOf((*DvpgRestoreEvent)(nil)).Elem() +} + +type DvsAcceptNetworkRuleAction struct { + DvsNetworkRuleAction +} + +func init() { + t["DvsAcceptNetworkRuleAction"] = reflect.TypeOf((*DvsAcceptNetworkRuleAction)(nil)).Elem() +} + +type DvsApplyOperationFault struct { + DvsFault + + ObjectFault []DvsApplyOperationFaultFaultOnObject `xml:"objectFault"` +} + +func init() { + t["DvsApplyOperationFault"] = reflect.TypeOf((*DvsApplyOperationFault)(nil)).Elem() +} + +type DvsApplyOperationFaultFault DvsApplyOperationFault + +func init() { + t["DvsApplyOperationFaultFault"] = reflect.TypeOf((*DvsApplyOperationFaultFault)(nil)).Elem() +} + +type DvsApplyOperationFaultFaultOnObject struct { + DynamicData + + ObjectId string `xml:"objectId"` + Type string `xml:"type"` + Fault LocalizedMethodFault `xml:"fault"` +} + +func init() { + t["DvsApplyOperationFaultFaultOnObject"] = reflect.TypeOf((*DvsApplyOperationFaultFaultOnObject)(nil)).Elem() +} + +type DvsCopyNetworkRuleAction struct { + DvsNetworkRuleAction +} + +func init() { + t["DvsCopyNetworkRuleAction"] = reflect.TypeOf((*DvsCopyNetworkRuleAction)(nil)).Elem() +} + +type DvsCreatedEvent struct { + DvsEvent + + Parent FolderEventArgument `xml:"parent"` +} + +func init() { + t["DvsCreatedEvent"] = reflect.TypeOf((*DvsCreatedEvent)(nil)).Elem() +} + +type DvsDestroyedEvent struct { + DvsEvent +} + +func init() { + t["DvsDestroyedEvent"] = reflect.TypeOf((*DvsDestroyedEvent)(nil)).Elem() +} + +type DvsDropNetworkRuleAction struct { + DvsNetworkRuleAction +} + +func init() { + t["DvsDropNetworkRuleAction"] = reflect.TypeOf((*DvsDropNetworkRuleAction)(nil)).Elem() +} + +type DvsEvent struct { + Event +} + +func init() { + t["DvsEvent"] = reflect.TypeOf((*DvsEvent)(nil)).Elem() +} + +type DvsEventArgument struct { + EntityEventArgument + + Dvs ManagedObjectReference `xml:"dvs"` +} + +func init() { + t["DvsEventArgument"] = reflect.TypeOf((*DvsEventArgument)(nil)).Elem() +} + +type DvsFault struct { + VimFault +} + +func init() { + t["DvsFault"] = reflect.TypeOf((*DvsFault)(nil)).Elem() +} + +type DvsFaultFault BaseDvsFault + +func init() { + t["DvsFaultFault"] = reflect.TypeOf((*DvsFaultFault)(nil)).Elem() +} + +type DvsFilterConfig struct { + InheritablePolicy + + Key string `xml:"key,omitempty"` + AgentName string `xml:"agentName,omitempty"` + SlotNumber string `xml:"slotNumber,omitempty"` + Parameters *DvsFilterParameter `xml:"parameters,omitempty"` + OnFailure string `xml:"onFailure,omitempty"` +} + +func init() { + t["DvsFilterConfig"] = reflect.TypeOf((*DvsFilterConfig)(nil)).Elem() +} + +type DvsFilterConfigSpec struct { + DvsFilterConfig + + Operation string `xml:"operation"` +} + +func init() { + t["DvsFilterConfigSpec"] = reflect.TypeOf((*DvsFilterConfigSpec)(nil)).Elem() +} + +type DvsFilterParameter struct { + DynamicData + + Parameters []string `xml:"parameters,omitempty"` +} + +func init() { + t["DvsFilterParameter"] = reflect.TypeOf((*DvsFilterParameter)(nil)).Elem() +} + +type DvsFilterPolicy struct { + InheritablePolicy + + FilterConfig []BaseDvsFilterConfig `xml:"filterConfig,omitempty,typeattr"` +} + +func init() { + t["DvsFilterPolicy"] = reflect.TypeOf((*DvsFilterPolicy)(nil)).Elem() +} + +type DvsGreEncapNetworkRuleAction struct { + DvsNetworkRuleAction + + EncapsulationIp SingleIp `xml:"encapsulationIp"` +} + +func init() { + t["DvsGreEncapNetworkRuleAction"] = reflect.TypeOf((*DvsGreEncapNetworkRuleAction)(nil)).Elem() +} + +type DvsHealthStatusChangeEvent struct { + HostEvent + + SwitchUuid string `xml:"switchUuid"` + HealthResult BaseHostMemberHealthCheckResult `xml:"healthResult,omitempty,typeattr"` +} + +func init() { + t["DvsHealthStatusChangeEvent"] = reflect.TypeOf((*DvsHealthStatusChangeEvent)(nil)).Elem() +} + +type DvsHostBackInSyncEvent struct { + DvsEvent + + HostBackInSync HostEventArgument `xml:"hostBackInSync"` +} + +func init() { + t["DvsHostBackInSyncEvent"] = reflect.TypeOf((*DvsHostBackInSyncEvent)(nil)).Elem() +} + +type DvsHostInfrastructureTrafficResource struct { + DynamicData + + Key string `xml:"key"` + Description string `xml:"description,omitempty"` + AllocationInfo DvsHostInfrastructureTrafficResourceAllocation `xml:"allocationInfo"` +} + +func init() { + t["DvsHostInfrastructureTrafficResource"] = reflect.TypeOf((*DvsHostInfrastructureTrafficResource)(nil)).Elem() +} + +type DvsHostInfrastructureTrafficResourceAllocation struct { + DynamicData + + Limit *int64 `xml:"limit"` + Shares *SharesInfo `xml:"shares,omitempty"` + Reservation *int64 `xml:"reservation"` +} + +func init() { + t["DvsHostInfrastructureTrafficResourceAllocation"] = reflect.TypeOf((*DvsHostInfrastructureTrafficResourceAllocation)(nil)).Elem() +} + +type DvsHostJoinedEvent struct { + DvsEvent + + HostJoined HostEventArgument `xml:"hostJoined"` +} + +func init() { + t["DvsHostJoinedEvent"] = reflect.TypeOf((*DvsHostJoinedEvent)(nil)).Elem() +} + +type DvsHostLeftEvent struct { + DvsEvent + + HostLeft HostEventArgument `xml:"hostLeft"` +} + +func init() { + t["DvsHostLeftEvent"] = reflect.TypeOf((*DvsHostLeftEvent)(nil)).Elem() +} + +type DvsHostStatusUpdated struct { + DvsEvent + + HostMember HostEventArgument `xml:"hostMember"` + OldStatus string `xml:"oldStatus,omitempty"` + NewStatus string `xml:"newStatus,omitempty"` + OldStatusDetail string `xml:"oldStatusDetail,omitempty"` + NewStatusDetail string `xml:"newStatusDetail,omitempty"` +} + +func init() { + t["DvsHostStatusUpdated"] = reflect.TypeOf((*DvsHostStatusUpdated)(nil)).Elem() +} + +type DvsHostVNicProfile struct { + DvsVNicProfile +} + +func init() { + t["DvsHostVNicProfile"] = reflect.TypeOf((*DvsHostVNicProfile)(nil)).Elem() +} + +type DvsHostWentOutOfSyncEvent struct { + DvsEvent + + HostOutOfSync DvsOutOfSyncHostArgument `xml:"hostOutOfSync"` +} + +func init() { + t["DvsHostWentOutOfSyncEvent"] = reflect.TypeOf((*DvsHostWentOutOfSyncEvent)(nil)).Elem() +} + +type DvsImportEvent struct { + DvsEvent + + ImportType string `xml:"importType"` +} + +func init() { + t["DvsImportEvent"] = reflect.TypeOf((*DvsImportEvent)(nil)).Elem() +} + +type DvsIpNetworkRuleQualifier struct { + DvsNetworkRuleQualifier + + SourceAddress BaseIpAddress `xml:"sourceAddress,omitempty,typeattr"` + DestinationAddress BaseIpAddress `xml:"destinationAddress,omitempty,typeattr"` + Protocol *IntExpression `xml:"protocol,omitempty"` + SourceIpPort BaseDvsIpPort `xml:"sourceIpPort,omitempty,typeattr"` + DestinationIpPort BaseDvsIpPort `xml:"destinationIpPort,omitempty,typeattr"` + TcpFlags *IntExpression `xml:"tcpFlags,omitempty"` +} + +func init() { + t["DvsIpNetworkRuleQualifier"] = reflect.TypeOf((*DvsIpNetworkRuleQualifier)(nil)).Elem() +} + +type DvsIpPort struct { + NegatableExpression +} + +func init() { + t["DvsIpPort"] = reflect.TypeOf((*DvsIpPort)(nil)).Elem() +} + +type DvsIpPortRange struct { + DvsIpPort + + StartPortNumber int32 `xml:"startPortNumber"` + EndPortNumber int32 `xml:"endPortNumber"` +} + +func init() { + t["DvsIpPortRange"] = reflect.TypeOf((*DvsIpPortRange)(nil)).Elem() +} + +type DvsLogNetworkRuleAction struct { + DvsNetworkRuleAction +} + +func init() { + t["DvsLogNetworkRuleAction"] = reflect.TypeOf((*DvsLogNetworkRuleAction)(nil)).Elem() +} + +type DvsMacNetworkRuleQualifier struct { + DvsNetworkRuleQualifier + + SourceAddress BaseMacAddress `xml:"sourceAddress,omitempty,typeattr"` + DestinationAddress BaseMacAddress `xml:"destinationAddress,omitempty,typeattr"` + Protocol *IntExpression `xml:"protocol,omitempty"` + VlanId *IntExpression `xml:"vlanId,omitempty"` +} + +func init() { + t["DvsMacNetworkRuleQualifier"] = reflect.TypeOf((*DvsMacNetworkRuleQualifier)(nil)).Elem() +} + +type DvsMacRewriteNetworkRuleAction struct { + DvsNetworkRuleAction + + RewriteMac string `xml:"rewriteMac"` +} + +func init() { + t["DvsMacRewriteNetworkRuleAction"] = reflect.TypeOf((*DvsMacRewriteNetworkRuleAction)(nil)).Elem() +} + +type DvsMergedEvent struct { + DvsEvent + + SourceDvs DvsEventArgument `xml:"sourceDvs"` + DestinationDvs DvsEventArgument `xml:"destinationDvs"` +} + +func init() { + t["DvsMergedEvent"] = reflect.TypeOf((*DvsMergedEvent)(nil)).Elem() +} + +type DvsNetworkRuleAction struct { + DynamicData +} + +func init() { + t["DvsNetworkRuleAction"] = reflect.TypeOf((*DvsNetworkRuleAction)(nil)).Elem() +} + +type DvsNetworkRuleQualifier struct { + DynamicData + + Key string `xml:"key,omitempty"` +} + +func init() { + t["DvsNetworkRuleQualifier"] = reflect.TypeOf((*DvsNetworkRuleQualifier)(nil)).Elem() +} + +type DvsNotAuthorized struct { + DvsFault + + SessionExtensionKey string `xml:"sessionExtensionKey,omitempty"` + DvsExtensionKey string `xml:"dvsExtensionKey,omitempty"` +} + +func init() { + t["DvsNotAuthorized"] = reflect.TypeOf((*DvsNotAuthorized)(nil)).Elem() +} + +type DvsNotAuthorizedFault DvsNotAuthorized + +func init() { + t["DvsNotAuthorizedFault"] = reflect.TypeOf((*DvsNotAuthorizedFault)(nil)).Elem() +} + +type DvsOperationBulkFault struct { + DvsFault + + HostFault []DvsOperationBulkFaultFaultOnHost `xml:"hostFault"` +} + +func init() { + t["DvsOperationBulkFault"] = reflect.TypeOf((*DvsOperationBulkFault)(nil)).Elem() +} + +type DvsOperationBulkFaultFault DvsOperationBulkFault + +func init() { + t["DvsOperationBulkFaultFault"] = reflect.TypeOf((*DvsOperationBulkFaultFault)(nil)).Elem() +} + +type DvsOperationBulkFaultFaultOnHost struct { + DynamicData + + Host ManagedObjectReference `xml:"host"` + Fault LocalizedMethodFault `xml:"fault"` +} + +func init() { + t["DvsOperationBulkFaultFaultOnHost"] = reflect.TypeOf((*DvsOperationBulkFaultFaultOnHost)(nil)).Elem() +} + +type DvsOutOfSyncHostArgument struct { + DynamicData + + OutOfSyncHost HostEventArgument `xml:"outOfSyncHost"` + ConfigParamters []string `xml:"configParamters"` +} + +func init() { + t["DvsOutOfSyncHostArgument"] = reflect.TypeOf((*DvsOutOfSyncHostArgument)(nil)).Elem() +} + +type DvsPortBlockedEvent struct { + DvsEvent + + PortKey string `xml:"portKey"` + StatusDetail string `xml:"statusDetail,omitempty"` + RuntimeInfo *DVPortStatus `xml:"runtimeInfo,omitempty"` + PrevBlockState string `xml:"prevBlockState,omitempty"` +} + +func init() { + t["DvsPortBlockedEvent"] = reflect.TypeOf((*DvsPortBlockedEvent)(nil)).Elem() +} + +type DvsPortConnectedEvent struct { + DvsEvent + + PortKey string `xml:"portKey"` + Connectee *DistributedVirtualSwitchPortConnectee `xml:"connectee,omitempty"` +} + +func init() { + t["DvsPortConnectedEvent"] = reflect.TypeOf((*DvsPortConnectedEvent)(nil)).Elem() +} + +type DvsPortCreatedEvent struct { + DvsEvent + + PortKey []string `xml:"portKey"` +} + +func init() { + t["DvsPortCreatedEvent"] = reflect.TypeOf((*DvsPortCreatedEvent)(nil)).Elem() +} + +type DvsPortDeletedEvent struct { + DvsEvent + + PortKey []string `xml:"portKey"` +} + +func init() { + t["DvsPortDeletedEvent"] = reflect.TypeOf((*DvsPortDeletedEvent)(nil)).Elem() +} + +type DvsPortDisconnectedEvent struct { + DvsEvent + + PortKey string `xml:"portKey"` + Connectee *DistributedVirtualSwitchPortConnectee `xml:"connectee,omitempty"` +} + +func init() { + t["DvsPortDisconnectedEvent"] = reflect.TypeOf((*DvsPortDisconnectedEvent)(nil)).Elem() +} + +type DvsPortEnteredPassthruEvent struct { + DvsEvent + + PortKey string `xml:"portKey"` + RuntimeInfo *DVPortStatus `xml:"runtimeInfo,omitempty"` +} + +func init() { + t["DvsPortEnteredPassthruEvent"] = reflect.TypeOf((*DvsPortEnteredPassthruEvent)(nil)).Elem() +} + +type DvsPortExitedPassthruEvent struct { + DvsEvent + + PortKey string `xml:"portKey"` + RuntimeInfo *DVPortStatus `xml:"runtimeInfo,omitempty"` +} + +func init() { + t["DvsPortExitedPassthruEvent"] = reflect.TypeOf((*DvsPortExitedPassthruEvent)(nil)).Elem() +} + +type DvsPortJoinPortgroupEvent struct { + DvsEvent + + PortKey string `xml:"portKey"` + PortgroupKey string `xml:"portgroupKey"` + PortgroupName string `xml:"portgroupName"` +} + +func init() { + t["DvsPortJoinPortgroupEvent"] = reflect.TypeOf((*DvsPortJoinPortgroupEvent)(nil)).Elem() +} + +type DvsPortLeavePortgroupEvent struct { + DvsEvent + + PortKey string `xml:"portKey"` + PortgroupKey string `xml:"portgroupKey"` + PortgroupName string `xml:"portgroupName"` +} + +func init() { + t["DvsPortLeavePortgroupEvent"] = reflect.TypeOf((*DvsPortLeavePortgroupEvent)(nil)).Elem() +} + +type DvsPortLinkDownEvent struct { + DvsEvent + + PortKey string `xml:"portKey"` + RuntimeInfo *DVPortStatus `xml:"runtimeInfo,omitempty"` +} + +func init() { + t["DvsPortLinkDownEvent"] = reflect.TypeOf((*DvsPortLinkDownEvent)(nil)).Elem() +} + +type DvsPortLinkUpEvent struct { + DvsEvent + + PortKey string `xml:"portKey"` + RuntimeInfo *DVPortStatus `xml:"runtimeInfo,omitempty"` +} + +func init() { + t["DvsPortLinkUpEvent"] = reflect.TypeOf((*DvsPortLinkUpEvent)(nil)).Elem() +} + +type DvsPortReconfiguredEvent struct { + DvsEvent + + PortKey []string `xml:"portKey"` + ConfigChanges []ChangesInfoEventArgument `xml:"configChanges,omitempty"` +} + +func init() { + t["DvsPortReconfiguredEvent"] = reflect.TypeOf((*DvsPortReconfiguredEvent)(nil)).Elem() +} + +type DvsPortRuntimeChangeEvent struct { + DvsEvent + + PortKey string `xml:"portKey"` + RuntimeInfo DVPortStatus `xml:"runtimeInfo"` +} + +func init() { + t["DvsPortRuntimeChangeEvent"] = reflect.TypeOf((*DvsPortRuntimeChangeEvent)(nil)).Elem() +} + +type DvsPortUnblockedEvent struct { + DvsEvent + + PortKey string `xml:"portKey"` + RuntimeInfo *DVPortStatus `xml:"runtimeInfo,omitempty"` + PrevBlockState string `xml:"prevBlockState,omitempty"` +} + +func init() { + t["DvsPortUnblockedEvent"] = reflect.TypeOf((*DvsPortUnblockedEvent)(nil)).Elem() +} + +type DvsPortVendorSpecificStateChangeEvent struct { + DvsEvent + + PortKey string `xml:"portKey"` +} + +func init() { + t["DvsPortVendorSpecificStateChangeEvent"] = reflect.TypeOf((*DvsPortVendorSpecificStateChangeEvent)(nil)).Elem() +} + +type DvsProfile struct { + ApplyProfile + + Key string `xml:"key"` + Name string `xml:"name"` + Uplink []PnicUplinkProfile `xml:"uplink,omitempty"` +} + +func init() { + t["DvsProfile"] = reflect.TypeOf((*DvsProfile)(nil)).Elem() +} + +type DvsPuntNetworkRuleAction struct { + DvsNetworkRuleAction +} + +func init() { + t["DvsPuntNetworkRuleAction"] = reflect.TypeOf((*DvsPuntNetworkRuleAction)(nil)).Elem() +} + +type DvsRateLimitNetworkRuleAction struct { + DvsNetworkRuleAction + + PacketsPerSecond int32 `xml:"packetsPerSecond"` +} + +func init() { + t["DvsRateLimitNetworkRuleAction"] = reflect.TypeOf((*DvsRateLimitNetworkRuleAction)(nil)).Elem() +} + +type DvsReconfigureVmVnicNetworkResourcePoolRequestType struct { + This ManagedObjectReference `xml:"_this"` + ConfigSpec []DvsVmVnicResourcePoolConfigSpec `xml:"configSpec"` +} + +func init() { + t["DvsReconfigureVmVnicNetworkResourcePoolRequestType"] = reflect.TypeOf((*DvsReconfigureVmVnicNetworkResourcePoolRequestType)(nil)).Elem() +} + +type DvsReconfigureVmVnicNetworkResourcePool_Task DvsReconfigureVmVnicNetworkResourcePoolRequestType + +func init() { + t["DvsReconfigureVmVnicNetworkResourcePool_Task"] = reflect.TypeOf((*DvsReconfigureVmVnicNetworkResourcePool_Task)(nil)).Elem() +} + +type DvsReconfigureVmVnicNetworkResourcePool_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type DvsReconfiguredEvent struct { + DvsEvent + + ConfigSpec BaseDVSConfigSpec `xml:"configSpec,typeattr"` + ConfigChanges *ChangesInfoEventArgument `xml:"configChanges,omitempty"` +} + +func init() { + t["DvsReconfiguredEvent"] = reflect.TypeOf((*DvsReconfiguredEvent)(nil)).Elem() +} + +type DvsRenamedEvent struct { + DvsEvent + + OldName string `xml:"oldName"` + NewName string `xml:"newName"` +} + +func init() { + t["DvsRenamedEvent"] = reflect.TypeOf((*DvsRenamedEvent)(nil)).Elem() +} + +type DvsResourceRuntimeInfo struct { + DynamicData + + Capacity int32 `xml:"capacity,omitempty"` + Usage int32 `xml:"usage,omitempty"` + Available int32 `xml:"available,omitempty"` + AllocatedResource []DvsVnicAllocatedResource `xml:"allocatedResource,omitempty"` + VmVnicNetworkResourcePoolRuntime []DvsVmVnicNetworkResourcePoolRuntimeInfo `xml:"vmVnicNetworkResourcePoolRuntime,omitempty"` +} + +func init() { + t["DvsResourceRuntimeInfo"] = reflect.TypeOf((*DvsResourceRuntimeInfo)(nil)).Elem() +} + +type DvsRestoreEvent struct { + DvsEvent +} + +func init() { + t["DvsRestoreEvent"] = reflect.TypeOf((*DvsRestoreEvent)(nil)).Elem() +} + +type DvsScopeViolated struct { + DvsFault + + Scope []ManagedObjectReference `xml:"scope"` + Entity ManagedObjectReference `xml:"entity"` +} + +func init() { + t["DvsScopeViolated"] = reflect.TypeOf((*DvsScopeViolated)(nil)).Elem() +} + +type DvsScopeViolatedFault DvsScopeViolated + +func init() { + t["DvsScopeViolatedFault"] = reflect.TypeOf((*DvsScopeViolatedFault)(nil)).Elem() +} + +type DvsServiceConsoleVNicProfile struct { + DvsVNicProfile +} + +func init() { + t["DvsServiceConsoleVNicProfile"] = reflect.TypeOf((*DvsServiceConsoleVNicProfile)(nil)).Elem() +} + +type DvsSingleIpPort struct { + DvsIpPort + + PortNumber int32 `xml:"portNumber"` +} + +func init() { + t["DvsSingleIpPort"] = reflect.TypeOf((*DvsSingleIpPort)(nil)).Elem() +} + +type DvsSystemTrafficNetworkRuleQualifier struct { + DvsNetworkRuleQualifier + + TypeOfSystemTraffic *StringExpression `xml:"typeOfSystemTraffic,omitempty"` +} + +func init() { + t["DvsSystemTrafficNetworkRuleQualifier"] = reflect.TypeOf((*DvsSystemTrafficNetworkRuleQualifier)(nil)).Elem() +} + +type DvsTrafficFilterConfig struct { + DvsFilterConfig + + TrafficRuleset *DvsTrafficRuleset `xml:"trafficRuleset,omitempty"` +} + +func init() { + t["DvsTrafficFilterConfig"] = reflect.TypeOf((*DvsTrafficFilterConfig)(nil)).Elem() +} + +type DvsTrafficFilterConfigSpec struct { + DvsTrafficFilterConfig + + Operation string `xml:"operation"` +} + +func init() { + t["DvsTrafficFilterConfigSpec"] = reflect.TypeOf((*DvsTrafficFilterConfigSpec)(nil)).Elem() +} + +type DvsTrafficRule struct { + DynamicData + + Key string `xml:"key,omitempty"` + Description string `xml:"description,omitempty"` + Sequence int32 `xml:"sequence,omitempty"` + Qualifier []BaseDvsNetworkRuleQualifier `xml:"qualifier,omitempty,typeattr"` + Action BaseDvsNetworkRuleAction `xml:"action,omitempty,typeattr"` + Direction string `xml:"direction,omitempty"` +} + +func init() { + t["DvsTrafficRule"] = reflect.TypeOf((*DvsTrafficRule)(nil)).Elem() +} + +type DvsTrafficRuleset struct { + DynamicData + + Key string `xml:"key,omitempty"` + Enabled *bool `xml:"enabled"` + Precedence int32 `xml:"precedence,omitempty"` + Rules []DvsTrafficRule `xml:"rules,omitempty"` +} + +func init() { + t["DvsTrafficRuleset"] = reflect.TypeOf((*DvsTrafficRuleset)(nil)).Elem() +} + +type DvsUpdateTagNetworkRuleAction struct { + DvsNetworkRuleAction + + QosTag int32 `xml:"qosTag,omitempty"` + DscpTag int32 `xml:"dscpTag,omitempty"` +} + +func init() { + t["DvsUpdateTagNetworkRuleAction"] = reflect.TypeOf((*DvsUpdateTagNetworkRuleAction)(nil)).Elem() +} + +type DvsUpgradeAvailableEvent struct { + DvsEvent + + ProductInfo DistributedVirtualSwitchProductSpec `xml:"productInfo"` +} + +func init() { + t["DvsUpgradeAvailableEvent"] = reflect.TypeOf((*DvsUpgradeAvailableEvent)(nil)).Elem() +} + +type DvsUpgradeInProgressEvent struct { + DvsEvent + + ProductInfo DistributedVirtualSwitchProductSpec `xml:"productInfo"` +} + +func init() { + t["DvsUpgradeInProgressEvent"] = reflect.TypeOf((*DvsUpgradeInProgressEvent)(nil)).Elem() +} + +type DvsUpgradeRejectedEvent struct { + DvsEvent + + ProductInfo DistributedVirtualSwitchProductSpec `xml:"productInfo"` +} + +func init() { + t["DvsUpgradeRejectedEvent"] = reflect.TypeOf((*DvsUpgradeRejectedEvent)(nil)).Elem() +} + +type DvsUpgradedEvent struct { + DvsEvent + + ProductInfo DistributedVirtualSwitchProductSpec `xml:"productInfo"` +} + +func init() { + t["DvsUpgradedEvent"] = reflect.TypeOf((*DvsUpgradedEvent)(nil)).Elem() +} + +type DvsVNicProfile struct { + ApplyProfile + + Key string `xml:"key"` + IpConfig IpAddressProfile `xml:"ipConfig"` +} + +func init() { + t["DvsVNicProfile"] = reflect.TypeOf((*DvsVNicProfile)(nil)).Elem() +} + +type DvsVmVnicNetworkResourcePoolRuntimeInfo struct { + DynamicData + + Key string `xml:"key"` + Name string `xml:"name,omitempty"` + Capacity int32 `xml:"capacity,omitempty"` + Usage int32 `xml:"usage,omitempty"` + Available int32 `xml:"available,omitempty"` + Status string `xml:"status"` + AllocatedResource []DvsVnicAllocatedResource `xml:"allocatedResource,omitempty"` +} + +func init() { + t["DvsVmVnicNetworkResourcePoolRuntimeInfo"] = reflect.TypeOf((*DvsVmVnicNetworkResourcePoolRuntimeInfo)(nil)).Elem() +} + +type DvsVmVnicResourceAllocation struct { + DynamicData + + ReservationQuota int64 `xml:"reservationQuota,omitempty"` +} + +func init() { + t["DvsVmVnicResourceAllocation"] = reflect.TypeOf((*DvsVmVnicResourceAllocation)(nil)).Elem() +} + +type DvsVmVnicResourcePoolConfigSpec struct { + DynamicData + + Operation string `xml:"operation"` + Key string `xml:"key,omitempty"` + ConfigVersion string `xml:"configVersion,omitempty"` + AllocationInfo *DvsVmVnicResourceAllocation `xml:"allocationInfo,omitempty"` + Name string `xml:"name,omitempty"` + Description string `xml:"description,omitempty"` +} + +func init() { + t["DvsVmVnicResourcePoolConfigSpec"] = reflect.TypeOf((*DvsVmVnicResourcePoolConfigSpec)(nil)).Elem() +} + +type DvsVnicAllocatedResource struct { + DynamicData + + Vm ManagedObjectReference `xml:"vm"` + VnicKey string `xml:"vnicKey"` + Reservation *int64 `xml:"reservation"` +} + +func init() { + t["DvsVnicAllocatedResource"] = reflect.TypeOf((*DvsVnicAllocatedResource)(nil)).Elem() +} + +type DynamicArray struct { + Val []AnyType `xml:"val,typeattr"` +} + +func init() { + t["DynamicArray"] = reflect.TypeOf((*DynamicArray)(nil)).Elem() +} + +type DynamicData struct { +} + +func init() { + t["DynamicData"] = reflect.TypeOf((*DynamicData)(nil)).Elem() +} + +type DynamicProperty struct { + Name string `xml:"name"` + Val AnyType `xml:"val,typeattr"` +} + +func init() { + t["DynamicProperty"] = reflect.TypeOf((*DynamicProperty)(nil)).Elem() +} + +type EVCAdmissionFailed struct { + NotSupportedHostInCluster + + Faults []LocalizedMethodFault `xml:"faults,omitempty"` +} + +func init() { + t["EVCAdmissionFailed"] = reflect.TypeOf((*EVCAdmissionFailed)(nil)).Elem() +} + +type EVCAdmissionFailedCPUFeaturesForMode struct { + EVCAdmissionFailed + + CurrentEVCModeKey string `xml:"currentEVCModeKey"` +} + +func init() { + t["EVCAdmissionFailedCPUFeaturesForMode"] = reflect.TypeOf((*EVCAdmissionFailedCPUFeaturesForMode)(nil)).Elem() +} + +type EVCAdmissionFailedCPUFeaturesForModeFault EVCAdmissionFailedCPUFeaturesForMode + +func init() { + t["EVCAdmissionFailedCPUFeaturesForModeFault"] = reflect.TypeOf((*EVCAdmissionFailedCPUFeaturesForModeFault)(nil)).Elem() +} + +type EVCAdmissionFailedCPUModel struct { + EVCAdmissionFailed +} + +func init() { + t["EVCAdmissionFailedCPUModel"] = reflect.TypeOf((*EVCAdmissionFailedCPUModel)(nil)).Elem() +} + +type EVCAdmissionFailedCPUModelFault EVCAdmissionFailedCPUModel + +func init() { + t["EVCAdmissionFailedCPUModelFault"] = reflect.TypeOf((*EVCAdmissionFailedCPUModelFault)(nil)).Elem() +} + +type EVCAdmissionFailedCPUModelForMode struct { + EVCAdmissionFailed + + CurrentEVCModeKey string `xml:"currentEVCModeKey"` +} + +func init() { + t["EVCAdmissionFailedCPUModelForMode"] = reflect.TypeOf((*EVCAdmissionFailedCPUModelForMode)(nil)).Elem() +} + +type EVCAdmissionFailedCPUModelForModeFault EVCAdmissionFailedCPUModelForMode + +func init() { + t["EVCAdmissionFailedCPUModelForModeFault"] = reflect.TypeOf((*EVCAdmissionFailedCPUModelForModeFault)(nil)).Elem() +} + +type EVCAdmissionFailedCPUVendor struct { + EVCAdmissionFailed + + ClusterCPUVendor string `xml:"clusterCPUVendor"` + HostCPUVendor string `xml:"hostCPUVendor"` +} + +func init() { + t["EVCAdmissionFailedCPUVendor"] = reflect.TypeOf((*EVCAdmissionFailedCPUVendor)(nil)).Elem() +} + +type EVCAdmissionFailedCPUVendorFault EVCAdmissionFailedCPUVendor + +func init() { + t["EVCAdmissionFailedCPUVendorFault"] = reflect.TypeOf((*EVCAdmissionFailedCPUVendorFault)(nil)).Elem() +} + +type EVCAdmissionFailedCPUVendorUnknown struct { + EVCAdmissionFailed +} + +func init() { + t["EVCAdmissionFailedCPUVendorUnknown"] = reflect.TypeOf((*EVCAdmissionFailedCPUVendorUnknown)(nil)).Elem() +} + +type EVCAdmissionFailedCPUVendorUnknownFault EVCAdmissionFailedCPUVendorUnknown + +func init() { + t["EVCAdmissionFailedCPUVendorUnknownFault"] = reflect.TypeOf((*EVCAdmissionFailedCPUVendorUnknownFault)(nil)).Elem() +} + +type EVCAdmissionFailedFault BaseEVCAdmissionFailed + +func init() { + t["EVCAdmissionFailedFault"] = reflect.TypeOf((*EVCAdmissionFailedFault)(nil)).Elem() +} + +type EVCAdmissionFailedHostDisconnected struct { + EVCAdmissionFailed +} + +func init() { + t["EVCAdmissionFailedHostDisconnected"] = reflect.TypeOf((*EVCAdmissionFailedHostDisconnected)(nil)).Elem() +} + +type EVCAdmissionFailedHostDisconnectedFault EVCAdmissionFailedHostDisconnected + +func init() { + t["EVCAdmissionFailedHostDisconnectedFault"] = reflect.TypeOf((*EVCAdmissionFailedHostDisconnectedFault)(nil)).Elem() +} + +type EVCAdmissionFailedHostSoftware struct { + EVCAdmissionFailed +} + +func init() { + t["EVCAdmissionFailedHostSoftware"] = reflect.TypeOf((*EVCAdmissionFailedHostSoftware)(nil)).Elem() +} + +type EVCAdmissionFailedHostSoftwareFault EVCAdmissionFailedHostSoftware + +func init() { + t["EVCAdmissionFailedHostSoftwareFault"] = reflect.TypeOf((*EVCAdmissionFailedHostSoftwareFault)(nil)).Elem() +} + +type EVCAdmissionFailedHostSoftwareForMode struct { + EVCAdmissionFailed +} + +func init() { + t["EVCAdmissionFailedHostSoftwareForMode"] = reflect.TypeOf((*EVCAdmissionFailedHostSoftwareForMode)(nil)).Elem() +} + +type EVCAdmissionFailedHostSoftwareForModeFault EVCAdmissionFailedHostSoftwareForMode + +func init() { + t["EVCAdmissionFailedHostSoftwareForModeFault"] = reflect.TypeOf((*EVCAdmissionFailedHostSoftwareForModeFault)(nil)).Elem() +} + +type EVCAdmissionFailedVmActive struct { + EVCAdmissionFailed +} + +func init() { + t["EVCAdmissionFailedVmActive"] = reflect.TypeOf((*EVCAdmissionFailedVmActive)(nil)).Elem() +} + +type EVCAdmissionFailedVmActiveFault EVCAdmissionFailedVmActive + +func init() { + t["EVCAdmissionFailedVmActiveFault"] = reflect.TypeOf((*EVCAdmissionFailedVmActiveFault)(nil)).Elem() +} + +type EVCConfigFault struct { + VimFault + + Faults []LocalizedMethodFault `xml:"faults,omitempty"` +} + +func init() { + t["EVCConfigFault"] = reflect.TypeOf((*EVCConfigFault)(nil)).Elem() +} + +type EVCConfigFaultFault BaseEVCConfigFault + +func init() { + t["EVCConfigFaultFault"] = reflect.TypeOf((*EVCConfigFaultFault)(nil)).Elem() +} + +type EVCMode struct { + ElementDescription + + GuaranteedCPUFeatures []HostCpuIdInfo `xml:"guaranteedCPUFeatures,omitempty"` + FeatureCapability []HostFeatureCapability `xml:"featureCapability,omitempty"` + FeatureMask []HostFeatureMask `xml:"featureMask,omitempty"` + FeatureRequirement []VirtualMachineFeatureRequirement `xml:"featureRequirement,omitempty"` + Vendor string `xml:"vendor"` + Track []string `xml:"track,omitempty"` + VendorTier int32 `xml:"vendorTier"` +} + +func init() { + t["EVCMode"] = reflect.TypeOf((*EVCMode)(nil)).Elem() +} + +type EVCModeIllegalByVendor struct { + EVCConfigFault + + ClusterCPUVendor string `xml:"clusterCPUVendor"` + ModeCPUVendor string `xml:"modeCPUVendor"` +} + +func init() { + t["EVCModeIllegalByVendor"] = reflect.TypeOf((*EVCModeIllegalByVendor)(nil)).Elem() +} + +type EVCModeIllegalByVendorFault EVCModeIllegalByVendor + +func init() { + t["EVCModeIllegalByVendorFault"] = reflect.TypeOf((*EVCModeIllegalByVendorFault)(nil)).Elem() +} + +type EVCModeUnsupportedByHosts struct { + EVCConfigFault + + EvcMode string `xml:"evcMode,omitempty"` + Host []ManagedObjectReference `xml:"host,omitempty"` + HostName []string `xml:"hostName,omitempty"` +} + +func init() { + t["EVCModeUnsupportedByHosts"] = reflect.TypeOf((*EVCModeUnsupportedByHosts)(nil)).Elem() +} + +type EVCModeUnsupportedByHostsFault EVCModeUnsupportedByHosts + +func init() { + t["EVCModeUnsupportedByHostsFault"] = reflect.TypeOf((*EVCModeUnsupportedByHostsFault)(nil)).Elem() +} + +type EVCUnsupportedByHostHardware struct { + EVCConfigFault + + Host []ManagedObjectReference `xml:"host"` + HostName []string `xml:"hostName"` +} + +func init() { + t["EVCUnsupportedByHostHardware"] = reflect.TypeOf((*EVCUnsupportedByHostHardware)(nil)).Elem() +} + +type EVCUnsupportedByHostHardwareFault EVCUnsupportedByHostHardware + +func init() { + t["EVCUnsupportedByHostHardwareFault"] = reflect.TypeOf((*EVCUnsupportedByHostHardwareFault)(nil)).Elem() +} + +type EVCUnsupportedByHostSoftware struct { + EVCConfigFault + + Host []ManagedObjectReference `xml:"host"` + HostName []string `xml:"hostName"` +} + +func init() { + t["EVCUnsupportedByHostSoftware"] = reflect.TypeOf((*EVCUnsupportedByHostSoftware)(nil)).Elem() +} + +type EVCUnsupportedByHostSoftwareFault EVCUnsupportedByHostSoftware + +func init() { + t["EVCUnsupportedByHostSoftwareFault"] = reflect.TypeOf((*EVCUnsupportedByHostSoftwareFault)(nil)).Elem() +} + +type EagerZeroVirtualDiskRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` +} + +func init() { + t["EagerZeroVirtualDiskRequestType"] = reflect.TypeOf((*EagerZeroVirtualDiskRequestType)(nil)).Elem() +} + +type EagerZeroVirtualDisk_Task EagerZeroVirtualDiskRequestType + +func init() { + t["EagerZeroVirtualDisk_Task"] = reflect.TypeOf((*EagerZeroVirtualDisk_Task)(nil)).Elem() +} + +type EagerZeroVirtualDisk_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type EightHostLimitViolated struct { + VmConfigFault +} + +func init() { + t["EightHostLimitViolated"] = reflect.TypeOf((*EightHostLimitViolated)(nil)).Elem() +} + +type EightHostLimitViolatedFault EightHostLimitViolated + +func init() { + t["EightHostLimitViolatedFault"] = reflect.TypeOf((*EightHostLimitViolatedFault)(nil)).Elem() +} + +type ElementDescription struct { + Description + + Key string `xml:"key"` +} + +func init() { + t["ElementDescription"] = reflect.TypeOf((*ElementDescription)(nil)).Elem() +} + +type EnableAlarm EnableAlarmRequestType + +func init() { + t["EnableAlarm"] = reflect.TypeOf((*EnableAlarm)(nil)).Elem() +} + +type EnableAlarmActions EnableAlarmActionsRequestType + +func init() { + t["EnableAlarmActions"] = reflect.TypeOf((*EnableAlarmActions)(nil)).Elem() +} + +type EnableAlarmActionsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity ManagedObjectReference `xml:"entity"` + Enabled bool `xml:"enabled"` +} + +func init() { + t["EnableAlarmActionsRequestType"] = reflect.TypeOf((*EnableAlarmActionsRequestType)(nil)).Elem() +} + +type EnableAlarmActionsResponse struct { +} + +type EnableAlarmRequestType struct { + This ManagedObjectReference `xml:"_this"` + Alarm ManagedObjectReference `xml:"alarm"` + Entity ManagedObjectReference `xml:"entity"` +} + +func init() { + t["EnableAlarmRequestType"] = reflect.TypeOf((*EnableAlarmRequestType)(nil)).Elem() +} + +type EnableAlarmResponse struct { +} + +type EnableClusteredVmdkSupport EnableClusteredVmdkSupportRequestType + +func init() { + t["EnableClusteredVmdkSupport"] = reflect.TypeOf((*EnableClusteredVmdkSupport)(nil)).Elem() +} + +type EnableClusteredVmdkSupportRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["EnableClusteredVmdkSupportRequestType"] = reflect.TypeOf((*EnableClusteredVmdkSupportRequestType)(nil)).Elem() +} + +type EnableClusteredVmdkSupportResponse struct { +} + +type EnableCrypto EnableCryptoRequestType + +func init() { + t["EnableCrypto"] = reflect.TypeOf((*EnableCrypto)(nil)).Elem() +} + +type EnableCryptoRequestType struct { + This ManagedObjectReference `xml:"_this"` + KeyPlain CryptoKeyPlain `xml:"keyPlain"` +} + +func init() { + t["EnableCryptoRequestType"] = reflect.TypeOf((*EnableCryptoRequestType)(nil)).Elem() +} + +type EnableCryptoResponse struct { +} + +type EnableFeature EnableFeatureRequestType + +func init() { + t["EnableFeature"] = reflect.TypeOf((*EnableFeature)(nil)).Elem() +} + +type EnableFeatureRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host *ManagedObjectReference `xml:"host,omitempty"` + FeatureKey string `xml:"featureKey"` +} + +func init() { + t["EnableFeatureRequestType"] = reflect.TypeOf((*EnableFeatureRequestType)(nil)).Elem() +} + +type EnableFeatureResponse struct { + Returnval bool `xml:"returnval"` +} + +type EnableHyperThreading EnableHyperThreadingRequestType + +func init() { + t["EnableHyperThreading"] = reflect.TypeOf((*EnableHyperThreading)(nil)).Elem() +} + +type EnableHyperThreadingRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["EnableHyperThreadingRequestType"] = reflect.TypeOf((*EnableHyperThreadingRequestType)(nil)).Elem() +} + +type EnableHyperThreadingResponse struct { +} + +type EnableMultipathPath EnableMultipathPathRequestType + +func init() { + t["EnableMultipathPath"] = reflect.TypeOf((*EnableMultipathPath)(nil)).Elem() +} + +type EnableMultipathPathRequestType struct { + This ManagedObjectReference `xml:"_this"` + PathName string `xml:"pathName"` +} + +func init() { + t["EnableMultipathPathRequestType"] = reflect.TypeOf((*EnableMultipathPathRequestType)(nil)).Elem() +} + +type EnableMultipathPathResponse struct { +} + +type EnableNetworkResourceManagement EnableNetworkResourceManagementRequestType + +func init() { + t["EnableNetworkResourceManagement"] = reflect.TypeOf((*EnableNetworkResourceManagement)(nil)).Elem() +} + +type EnableNetworkResourceManagementRequestType struct { + This ManagedObjectReference `xml:"_this"` + Enable bool `xml:"enable"` +} + +func init() { + t["EnableNetworkResourceManagementRequestType"] = reflect.TypeOf((*EnableNetworkResourceManagementRequestType)(nil)).Elem() +} + +type EnableNetworkResourceManagementResponse struct { +} + +type EnableRuleset EnableRulesetRequestType + +func init() { + t["EnableRuleset"] = reflect.TypeOf((*EnableRuleset)(nil)).Elem() +} + +type EnableRulesetRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id string `xml:"id"` +} + +func init() { + t["EnableRulesetRequestType"] = reflect.TypeOf((*EnableRulesetRequestType)(nil)).Elem() +} + +type EnableRulesetResponse struct { +} + +type EnableSecondaryVMRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Host *ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["EnableSecondaryVMRequestType"] = reflect.TypeOf((*EnableSecondaryVMRequestType)(nil)).Elem() +} + +type EnableSecondaryVM_Task EnableSecondaryVMRequestType + +func init() { + t["EnableSecondaryVM_Task"] = reflect.TypeOf((*EnableSecondaryVM_Task)(nil)).Elem() +} + +type EnableSecondaryVM_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type EnableSmartCardAuthentication EnableSmartCardAuthenticationRequestType + +func init() { + t["EnableSmartCardAuthentication"] = reflect.TypeOf((*EnableSmartCardAuthentication)(nil)).Elem() +} + +type EnableSmartCardAuthenticationRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["EnableSmartCardAuthenticationRequestType"] = reflect.TypeOf((*EnableSmartCardAuthenticationRequestType)(nil)).Elem() +} + +type EnableSmartCardAuthenticationResponse struct { +} + +type EncryptionKeyRequired struct { + InvalidState + + RequiredKey []CryptoKeyId `xml:"requiredKey,omitempty"` +} + +func init() { + t["EncryptionKeyRequired"] = reflect.TypeOf((*EncryptionKeyRequired)(nil)).Elem() +} + +type EncryptionKeyRequiredFault EncryptionKeyRequired + +func init() { + t["EncryptionKeyRequiredFault"] = reflect.TypeOf((*EncryptionKeyRequiredFault)(nil)).Elem() +} + +type EnterLockdownMode EnterLockdownModeRequestType + +func init() { + t["EnterLockdownMode"] = reflect.TypeOf((*EnterLockdownMode)(nil)).Elem() +} + +type EnterLockdownModeRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["EnterLockdownModeRequestType"] = reflect.TypeOf((*EnterLockdownModeRequestType)(nil)).Elem() +} + +type EnterLockdownModeResponse struct { +} + +type EnterMaintenanceModeRequestType struct { + This ManagedObjectReference `xml:"_this"` + Timeout int32 `xml:"timeout"` + EvacuatePoweredOffVms *bool `xml:"evacuatePoweredOffVms"` + MaintenanceSpec *HostMaintenanceSpec `xml:"maintenanceSpec,omitempty"` +} + +func init() { + t["EnterMaintenanceModeRequestType"] = reflect.TypeOf((*EnterMaintenanceModeRequestType)(nil)).Elem() +} + +type EnterMaintenanceMode_Task EnterMaintenanceModeRequestType + +func init() { + t["EnterMaintenanceMode_Task"] = reflect.TypeOf((*EnterMaintenanceMode_Task)(nil)).Elem() +} + +type EnterMaintenanceMode_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type EnteredMaintenanceModeEvent struct { + HostEvent +} + +func init() { + t["EnteredMaintenanceModeEvent"] = reflect.TypeOf((*EnteredMaintenanceModeEvent)(nil)).Elem() +} + +type EnteredStandbyModeEvent struct { + HostEvent +} + +func init() { + t["EnteredStandbyModeEvent"] = reflect.TypeOf((*EnteredStandbyModeEvent)(nil)).Elem() +} + +type EnteringMaintenanceModeEvent struct { + HostEvent +} + +func init() { + t["EnteringMaintenanceModeEvent"] = reflect.TypeOf((*EnteringMaintenanceModeEvent)(nil)).Elem() +} + +type EnteringStandbyModeEvent struct { + HostEvent +} + +func init() { + t["EnteringStandbyModeEvent"] = reflect.TypeOf((*EnteringStandbyModeEvent)(nil)).Elem() +} + +type EntityBackup struct { + DynamicData +} + +func init() { + t["EntityBackup"] = reflect.TypeOf((*EntityBackup)(nil)).Elem() +} + +type EntityBackupConfig struct { + DynamicData + + EntityType string `xml:"entityType"` + ConfigBlob []byte `xml:"configBlob"` + Key string `xml:"key,omitempty"` + Name string `xml:"name,omitempty"` + Container *ManagedObjectReference `xml:"container,omitempty"` + ConfigVersion string `xml:"configVersion,omitempty"` +} + +func init() { + t["EntityBackupConfig"] = reflect.TypeOf((*EntityBackupConfig)(nil)).Elem() +} + +type EntityEventArgument struct { + EventArgument + + Name string `xml:"name"` +} + +func init() { + t["EntityEventArgument"] = reflect.TypeOf((*EntityEventArgument)(nil)).Elem() +} + +type EntityPrivilege struct { + DynamicData + + Entity ManagedObjectReference `xml:"entity"` + PrivAvailability []PrivilegeAvailability `xml:"privAvailability"` +} + +func init() { + t["EntityPrivilege"] = reflect.TypeOf((*EntityPrivilege)(nil)).Elem() +} + +type EnumDescription struct { + DynamicData + + Key string `xml:"key"` + Tags []BaseElementDescription `xml:"tags,typeattr"` +} + +func init() { + t["EnumDescription"] = reflect.TypeOf((*EnumDescription)(nil)).Elem() +} + +type EnvironmentBrowserConfigOptionQuerySpec struct { + DynamicData + + Key string `xml:"key,omitempty"` + Host *ManagedObjectReference `xml:"host,omitempty"` + GuestId []string `xml:"guestId,omitempty"` +} + +func init() { + t["EnvironmentBrowserConfigOptionQuerySpec"] = reflect.TypeOf((*EnvironmentBrowserConfigOptionQuerySpec)(nil)).Elem() +} + +type ErrorUpgradeEvent struct { + UpgradeEvent +} + +func init() { + t["ErrorUpgradeEvent"] = reflect.TypeOf((*ErrorUpgradeEvent)(nil)).Elem() +} + +type EstimateDatabaseSize EstimateDatabaseSizeRequestType + +func init() { + t["EstimateDatabaseSize"] = reflect.TypeOf((*EstimateDatabaseSize)(nil)).Elem() +} + +type EstimateDatabaseSizeRequestType struct { + This ManagedObjectReference `xml:"_this"` + DbSizeParam DatabaseSizeParam `xml:"dbSizeParam"` +} + +func init() { + t["EstimateDatabaseSizeRequestType"] = reflect.TypeOf((*EstimateDatabaseSizeRequestType)(nil)).Elem() +} + +type EstimateDatabaseSizeResponse struct { + Returnval DatabaseSizeEstimate `xml:"returnval"` +} + +type EstimateStorageForConsolidateSnapshotsRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["EstimateStorageForConsolidateSnapshotsRequestType"] = reflect.TypeOf((*EstimateStorageForConsolidateSnapshotsRequestType)(nil)).Elem() +} + +type EstimateStorageForConsolidateSnapshots_Task EstimateStorageForConsolidateSnapshotsRequestType + +func init() { + t["EstimateStorageForConsolidateSnapshots_Task"] = reflect.TypeOf((*EstimateStorageForConsolidateSnapshots_Task)(nil)).Elem() +} + +type EstimateStorageForConsolidateSnapshots_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type EsxAgentHostManagerUpdateConfig EsxAgentHostManagerUpdateConfigRequestType + +func init() { + t["EsxAgentHostManagerUpdateConfig"] = reflect.TypeOf((*EsxAgentHostManagerUpdateConfig)(nil)).Elem() +} + +type EsxAgentHostManagerUpdateConfigRequestType struct { + This ManagedObjectReference `xml:"_this"` + ConfigInfo HostEsxAgentHostManagerConfigInfo `xml:"configInfo"` +} + +func init() { + t["EsxAgentHostManagerUpdateConfigRequestType"] = reflect.TypeOf((*EsxAgentHostManagerUpdateConfigRequestType)(nil)).Elem() +} + +type EsxAgentHostManagerUpdateConfigResponse struct { +} + +type EvacuateVsanNodeRequestType struct { + This ManagedObjectReference `xml:"_this"` + MaintenanceSpec HostMaintenanceSpec `xml:"maintenanceSpec"` + Timeout int32 `xml:"timeout"` +} + +func init() { + t["EvacuateVsanNodeRequestType"] = reflect.TypeOf((*EvacuateVsanNodeRequestType)(nil)).Elem() +} + +type EvacuateVsanNode_Task EvacuateVsanNodeRequestType + +func init() { + t["EvacuateVsanNode_Task"] = reflect.TypeOf((*EvacuateVsanNode_Task)(nil)).Elem() +} + +type EvacuateVsanNode_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type EvaluationLicenseSource struct { + LicenseSource + + RemainingHours int64 `xml:"remainingHours,omitempty"` +} + +func init() { + t["EvaluationLicenseSource"] = reflect.TypeOf((*EvaluationLicenseSource)(nil)).Elem() +} + +type EvcManager EvcManagerRequestType + +func init() { + t["EvcManager"] = reflect.TypeOf((*EvcManager)(nil)).Elem() +} + +type EvcManagerRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["EvcManagerRequestType"] = reflect.TypeOf((*EvcManagerRequestType)(nil)).Elem() +} + +type EvcManagerResponse struct { + Returnval *ManagedObjectReference `xml:"returnval,omitempty"` +} + +type Event struct { + DynamicData + + Key int32 `xml:"key"` + ChainId int32 `xml:"chainId"` + CreatedTime time.Time `xml:"createdTime"` + UserName string `xml:"userName"` + Datacenter *DatacenterEventArgument `xml:"datacenter,omitempty"` + ComputeResource *ComputeResourceEventArgument `xml:"computeResource,omitempty"` + Host *HostEventArgument `xml:"host,omitempty"` + Vm *VmEventArgument `xml:"vm,omitempty"` + Ds *DatastoreEventArgument `xml:"ds,omitempty"` + Net *NetworkEventArgument `xml:"net,omitempty"` + Dvs *DvsEventArgument `xml:"dvs,omitempty"` + FullFormattedMessage string `xml:"fullFormattedMessage,omitempty"` + ChangeTag string `xml:"changeTag,omitempty"` +} + +func init() { + t["Event"] = reflect.TypeOf((*Event)(nil)).Elem() +} + +type EventAlarmExpression struct { + AlarmExpression + + Comparisons []EventAlarmExpressionComparison `xml:"comparisons,omitempty"` + EventType string `xml:"eventType"` + EventTypeId string `xml:"eventTypeId,omitempty"` + ObjectType string `xml:"objectType,omitempty"` + Status ManagedEntityStatus `xml:"status,omitempty"` +} + +func init() { + t["EventAlarmExpression"] = reflect.TypeOf((*EventAlarmExpression)(nil)).Elem() +} + +type EventAlarmExpressionComparison struct { + DynamicData + + AttributeName string `xml:"attributeName"` + Operator string `xml:"operator"` + Value string `xml:"value"` +} + +func init() { + t["EventAlarmExpressionComparison"] = reflect.TypeOf((*EventAlarmExpressionComparison)(nil)).Elem() +} + +type EventArgDesc struct { + DynamicData + + Name string `xml:"name"` + Type string `xml:"type"` + Description BaseElementDescription `xml:"description,omitempty,typeattr"` +} + +func init() { + t["EventArgDesc"] = reflect.TypeOf((*EventArgDesc)(nil)).Elem() +} + +type EventArgument struct { + DynamicData +} + +func init() { + t["EventArgument"] = reflect.TypeOf((*EventArgument)(nil)).Elem() +} + +type EventDescription struct { + DynamicData + + Category []BaseElementDescription `xml:"category,typeattr"` + EventInfo []EventDescriptionEventDetail `xml:"eventInfo"` + EnumeratedTypes []EnumDescription `xml:"enumeratedTypes,omitempty"` +} + +func init() { + t["EventDescription"] = reflect.TypeOf((*EventDescription)(nil)).Elem() +} + +type EventDescriptionEventDetail struct { + DynamicData + + Key string `xml:"key"` + Description string `xml:"description,omitempty"` + Category string `xml:"category"` + FormatOnDatacenter string `xml:"formatOnDatacenter"` + FormatOnComputeResource string `xml:"formatOnComputeResource"` + FormatOnHost string `xml:"formatOnHost"` + FormatOnVm string `xml:"formatOnVm"` + FullFormat string `xml:"fullFormat"` + LongDescription string `xml:"longDescription,omitempty"` +} + +func init() { + t["EventDescriptionEventDetail"] = reflect.TypeOf((*EventDescriptionEventDetail)(nil)).Elem() +} + +type EventEx struct { + Event + + EventTypeId string `xml:"eventTypeId"` + Severity string `xml:"severity,omitempty"` + Message string `xml:"message,omitempty"` + Arguments []KeyAnyValue `xml:"arguments,omitempty"` + ObjectId string `xml:"objectId,omitempty"` + ObjectType string `xml:"objectType,omitempty"` + ObjectName string `xml:"objectName,omitempty"` + Fault *LocalizedMethodFault `xml:"fault,omitempty"` +} + +func init() { + t["EventEx"] = reflect.TypeOf((*EventEx)(nil)).Elem() +} + +type EventFilterSpec struct { + DynamicData + + Entity *EventFilterSpecByEntity `xml:"entity,omitempty"` + Time *EventFilterSpecByTime `xml:"time,omitempty"` + UserName *EventFilterSpecByUsername `xml:"userName,omitempty"` + EventChainId int32 `xml:"eventChainId,omitempty"` + Alarm *ManagedObjectReference `xml:"alarm,omitempty"` + ScheduledTask *ManagedObjectReference `xml:"scheduledTask,omitempty"` + DisableFullMessage *bool `xml:"disableFullMessage"` + Category []string `xml:"category,omitempty"` + Type []string `xml:"type,omitempty"` + Tag []string `xml:"tag,omitempty"` + EventTypeId []string `xml:"eventTypeId,omitempty"` + MaxCount int32 `xml:"maxCount,omitempty"` +} + +func init() { + t["EventFilterSpec"] = reflect.TypeOf((*EventFilterSpec)(nil)).Elem() +} + +type EventFilterSpecByEntity struct { + DynamicData + + Entity ManagedObjectReference `xml:"entity"` + Recursion EventFilterSpecRecursionOption `xml:"recursion"` +} + +func init() { + t["EventFilterSpecByEntity"] = reflect.TypeOf((*EventFilterSpecByEntity)(nil)).Elem() +} + +type EventFilterSpecByTime struct { + DynamicData + + BeginTime *time.Time `xml:"beginTime"` + EndTime *time.Time `xml:"endTime"` +} + +func init() { + t["EventFilterSpecByTime"] = reflect.TypeOf((*EventFilterSpecByTime)(nil)).Elem() +} + +type EventFilterSpecByUsername struct { + DynamicData + + SystemUser bool `xml:"systemUser"` + UserList []string `xml:"userList,omitempty"` +} + +func init() { + t["EventFilterSpecByUsername"] = reflect.TypeOf((*EventFilterSpecByUsername)(nil)).Elem() +} + +type ExecuteHostProfile ExecuteHostProfileRequestType + +func init() { + t["ExecuteHostProfile"] = reflect.TypeOf((*ExecuteHostProfile)(nil)).Elem() +} + +type ExecuteHostProfileRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host ManagedObjectReference `xml:"host"` + DeferredParam []ProfileDeferredPolicyOptionParameter `xml:"deferredParam,omitempty"` +} + +func init() { + t["ExecuteHostProfileRequestType"] = reflect.TypeOf((*ExecuteHostProfileRequestType)(nil)).Elem() +} + +type ExecuteHostProfileResponse struct { + Returnval BaseProfileExecuteResult `xml:"returnval,typeattr"` +} + +type ExecuteSimpleCommand ExecuteSimpleCommandRequestType + +func init() { + t["ExecuteSimpleCommand"] = reflect.TypeOf((*ExecuteSimpleCommand)(nil)).Elem() +} + +type ExecuteSimpleCommandRequestType struct { + This ManagedObjectReference `xml:"_this"` + Arguments []string `xml:"arguments,omitempty"` +} + +func init() { + t["ExecuteSimpleCommandRequestType"] = reflect.TypeOf((*ExecuteSimpleCommandRequestType)(nil)).Elem() +} + +type ExecuteSimpleCommandResponse struct { + Returnval string `xml:"returnval"` +} + +type ExitLockdownMode ExitLockdownModeRequestType + +func init() { + t["ExitLockdownMode"] = reflect.TypeOf((*ExitLockdownMode)(nil)).Elem() +} + +type ExitLockdownModeRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["ExitLockdownModeRequestType"] = reflect.TypeOf((*ExitLockdownModeRequestType)(nil)).Elem() +} + +type ExitLockdownModeResponse struct { +} + +type ExitMaintenanceModeEvent struct { + HostEvent +} + +func init() { + t["ExitMaintenanceModeEvent"] = reflect.TypeOf((*ExitMaintenanceModeEvent)(nil)).Elem() +} + +type ExitMaintenanceModeRequestType struct { + This ManagedObjectReference `xml:"_this"` + Timeout int32 `xml:"timeout"` +} + +func init() { + t["ExitMaintenanceModeRequestType"] = reflect.TypeOf((*ExitMaintenanceModeRequestType)(nil)).Elem() +} + +type ExitMaintenanceMode_Task ExitMaintenanceModeRequestType + +func init() { + t["ExitMaintenanceMode_Task"] = reflect.TypeOf((*ExitMaintenanceMode_Task)(nil)).Elem() +} + +type ExitMaintenanceMode_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ExitStandbyModeFailedEvent struct { + HostEvent +} + +func init() { + t["ExitStandbyModeFailedEvent"] = reflect.TypeOf((*ExitStandbyModeFailedEvent)(nil)).Elem() +} + +type ExitedStandbyModeEvent struct { + HostEvent +} + +func init() { + t["ExitedStandbyModeEvent"] = reflect.TypeOf((*ExitedStandbyModeEvent)(nil)).Elem() +} + +type ExitingStandbyModeEvent struct { + HostEvent +} + +func init() { + t["ExitingStandbyModeEvent"] = reflect.TypeOf((*ExitingStandbyModeEvent)(nil)).Elem() +} + +type ExpandVmfsDatastore ExpandVmfsDatastoreRequestType + +func init() { + t["ExpandVmfsDatastore"] = reflect.TypeOf((*ExpandVmfsDatastore)(nil)).Elem() +} + +type ExpandVmfsDatastoreRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datastore ManagedObjectReference `xml:"datastore"` + Spec VmfsDatastoreExpandSpec `xml:"spec"` +} + +func init() { + t["ExpandVmfsDatastoreRequestType"] = reflect.TypeOf((*ExpandVmfsDatastoreRequestType)(nil)).Elem() +} + +type ExpandVmfsDatastoreResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ExpandVmfsExtent ExpandVmfsExtentRequestType + +func init() { + t["ExpandVmfsExtent"] = reflect.TypeOf((*ExpandVmfsExtent)(nil)).Elem() +} + +type ExpandVmfsExtentRequestType struct { + This ManagedObjectReference `xml:"_this"` + VmfsPath string `xml:"vmfsPath"` + Extent HostScsiDiskPartition `xml:"extent"` +} + +func init() { + t["ExpandVmfsExtentRequestType"] = reflect.TypeOf((*ExpandVmfsExtentRequestType)(nil)).Elem() +} + +type ExpandVmfsExtentResponse struct { +} + +type ExpiredAddonLicense struct { + ExpiredFeatureLicense +} + +func init() { + t["ExpiredAddonLicense"] = reflect.TypeOf((*ExpiredAddonLicense)(nil)).Elem() +} + +type ExpiredAddonLicenseFault ExpiredAddonLicense + +func init() { + t["ExpiredAddonLicenseFault"] = reflect.TypeOf((*ExpiredAddonLicenseFault)(nil)).Elem() +} + +type ExpiredEditionLicense struct { + ExpiredFeatureLicense +} + +func init() { + t["ExpiredEditionLicense"] = reflect.TypeOf((*ExpiredEditionLicense)(nil)).Elem() +} + +type ExpiredEditionLicenseFault ExpiredEditionLicense + +func init() { + t["ExpiredEditionLicenseFault"] = reflect.TypeOf((*ExpiredEditionLicenseFault)(nil)).Elem() +} + +type ExpiredFeatureLicense struct { + NotEnoughLicenses + + Feature string `xml:"feature"` + Count int32 `xml:"count"` + ExpirationDate time.Time `xml:"expirationDate"` +} + +func init() { + t["ExpiredFeatureLicense"] = reflect.TypeOf((*ExpiredFeatureLicense)(nil)).Elem() +} + +type ExpiredFeatureLicenseFault BaseExpiredFeatureLicense + +func init() { + t["ExpiredFeatureLicenseFault"] = reflect.TypeOf((*ExpiredFeatureLicenseFault)(nil)).Elem() +} + +type ExportAnswerFileRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host ManagedObjectReference `xml:"host"` +} + +func init() { + t["ExportAnswerFileRequestType"] = reflect.TypeOf((*ExportAnswerFileRequestType)(nil)).Elem() +} + +type ExportAnswerFile_Task ExportAnswerFileRequestType + +func init() { + t["ExportAnswerFile_Task"] = reflect.TypeOf((*ExportAnswerFile_Task)(nil)).Elem() +} + +type ExportAnswerFile_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ExportProfile ExportProfileRequestType + +func init() { + t["ExportProfile"] = reflect.TypeOf((*ExportProfile)(nil)).Elem() +} + +type ExportProfileRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["ExportProfileRequestType"] = reflect.TypeOf((*ExportProfileRequestType)(nil)).Elem() +} + +type ExportProfileResponse struct { + Returnval string `xml:"returnval"` +} + +type ExportSnapshot ExportSnapshotRequestType + +func init() { + t["ExportSnapshot"] = reflect.TypeOf((*ExportSnapshot)(nil)).Elem() +} + +type ExportSnapshotRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["ExportSnapshotRequestType"] = reflect.TypeOf((*ExportSnapshotRequestType)(nil)).Elem() +} + +type ExportSnapshotResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ExportVApp ExportVAppRequestType + +func init() { + t["ExportVApp"] = reflect.TypeOf((*ExportVApp)(nil)).Elem() +} + +type ExportVAppRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["ExportVAppRequestType"] = reflect.TypeOf((*ExportVAppRequestType)(nil)).Elem() +} + +type ExportVAppResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ExportVm ExportVmRequestType + +func init() { + t["ExportVm"] = reflect.TypeOf((*ExportVm)(nil)).Elem() +} + +type ExportVmRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["ExportVmRequestType"] = reflect.TypeOf((*ExportVmRequestType)(nil)).Elem() +} + +type ExportVmResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ExtExtendedProductInfo struct { + DynamicData + + CompanyUrl string `xml:"companyUrl,omitempty"` + ProductUrl string `xml:"productUrl,omitempty"` + ManagementUrl string `xml:"managementUrl,omitempty"` + Self *ManagedObjectReference `xml:"self,omitempty"` +} + +func init() { + t["ExtExtendedProductInfo"] = reflect.TypeOf((*ExtExtendedProductInfo)(nil)).Elem() +} + +type ExtManagedEntityInfo struct { + DynamicData + + Type string `xml:"type"` + SmallIconUrl string `xml:"smallIconUrl,omitempty"` + IconUrl string `xml:"iconUrl,omitempty"` + Description string `xml:"description,omitempty"` +} + +func init() { + t["ExtManagedEntityInfo"] = reflect.TypeOf((*ExtManagedEntityInfo)(nil)).Elem() +} + +type ExtSolutionManagerInfo struct { + DynamicData + + Tab []ExtSolutionManagerInfoTabInfo `xml:"tab,omitempty"` + SmallIconUrl string `xml:"smallIconUrl,omitempty"` +} + +func init() { + t["ExtSolutionManagerInfo"] = reflect.TypeOf((*ExtSolutionManagerInfo)(nil)).Elem() +} + +type ExtSolutionManagerInfoTabInfo struct { + DynamicData + + Label string `xml:"label"` + Url string `xml:"url"` +} + +func init() { + t["ExtSolutionManagerInfoTabInfo"] = reflect.TypeOf((*ExtSolutionManagerInfoTabInfo)(nil)).Elem() +} + +type ExtendDiskRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + NewCapacityInMB int64 `xml:"newCapacityInMB"` +} + +func init() { + t["ExtendDiskRequestType"] = reflect.TypeOf((*ExtendDiskRequestType)(nil)).Elem() +} + +type ExtendDisk_Task ExtendDiskRequestType + +func init() { + t["ExtendDisk_Task"] = reflect.TypeOf((*ExtendDisk_Task)(nil)).Elem() +} + +type ExtendDisk_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ExtendHCIRequestType struct { + This ManagedObjectReference `xml:"_this"` + HostInputs []ClusterComputeResourceHostConfigurationInput `xml:"hostInputs,omitempty"` + VSanConfigSpec *SDDCBase `xml:"vSanConfigSpec,omitempty"` +} + +func init() { + t["ExtendHCIRequestType"] = reflect.TypeOf((*ExtendHCIRequestType)(nil)).Elem() +} + +type ExtendHCI_Task ExtendHCIRequestType + +func init() { + t["ExtendHCI_Task"] = reflect.TypeOf((*ExtendHCI_Task)(nil)).Elem() +} + +type ExtendHCI_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ExtendVffs ExtendVffsRequestType + +func init() { + t["ExtendVffs"] = reflect.TypeOf((*ExtendVffs)(nil)).Elem() +} + +type ExtendVffsRequestType struct { + This ManagedObjectReference `xml:"_this"` + VffsPath string `xml:"vffsPath"` + DevicePath string `xml:"devicePath"` + Spec *HostDiskPartitionSpec `xml:"spec,omitempty"` +} + +func init() { + t["ExtendVffsRequestType"] = reflect.TypeOf((*ExtendVffsRequestType)(nil)).Elem() +} + +type ExtendVffsResponse struct { +} + +type ExtendVirtualDiskRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` + NewCapacityKb int64 `xml:"newCapacityKb"` + EagerZero *bool `xml:"eagerZero"` +} + +func init() { + t["ExtendVirtualDiskRequestType"] = reflect.TypeOf((*ExtendVirtualDiskRequestType)(nil)).Elem() +} + +type ExtendVirtualDisk_Task ExtendVirtualDiskRequestType + +func init() { + t["ExtendVirtualDisk_Task"] = reflect.TypeOf((*ExtendVirtualDisk_Task)(nil)).Elem() +} + +type ExtendVirtualDisk_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ExtendVmfsDatastore ExtendVmfsDatastoreRequestType + +func init() { + t["ExtendVmfsDatastore"] = reflect.TypeOf((*ExtendVmfsDatastore)(nil)).Elem() +} + +type ExtendVmfsDatastoreRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datastore ManagedObjectReference `xml:"datastore"` + Spec VmfsDatastoreExtendSpec `xml:"spec"` +} + +func init() { + t["ExtendVmfsDatastoreRequestType"] = reflect.TypeOf((*ExtendVmfsDatastoreRequestType)(nil)).Elem() +} + +type ExtendVmfsDatastoreResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ExtendedDescription struct { + Description + + MessageCatalogKeyPrefix string `xml:"messageCatalogKeyPrefix"` + MessageArg []KeyAnyValue `xml:"messageArg,omitempty"` +} + +func init() { + t["ExtendedDescription"] = reflect.TypeOf((*ExtendedDescription)(nil)).Elem() +} + +type ExtendedElementDescription struct { + ElementDescription + + MessageCatalogKeyPrefix string `xml:"messageCatalogKeyPrefix"` + MessageArg []KeyAnyValue `xml:"messageArg,omitempty"` +} + +func init() { + t["ExtendedElementDescription"] = reflect.TypeOf((*ExtendedElementDescription)(nil)).Elem() +} + +type ExtendedEvent struct { + GeneralEvent + + EventTypeId string `xml:"eventTypeId"` + ManagedObject ManagedObjectReference `xml:"managedObject"` + Data []ExtendedEventPair `xml:"data,omitempty"` +} + +func init() { + t["ExtendedEvent"] = reflect.TypeOf((*ExtendedEvent)(nil)).Elem() +} + +type ExtendedEventPair struct { + DynamicData + + Key string `xml:"key"` + Value string `xml:"value"` +} + +func init() { + t["ExtendedEventPair"] = reflect.TypeOf((*ExtendedEventPair)(nil)).Elem() +} + +type ExtendedFault struct { + VimFault + + FaultTypeId string `xml:"faultTypeId"` + Data []KeyValue `xml:"data,omitempty"` +} + +func init() { + t["ExtendedFault"] = reflect.TypeOf((*ExtendedFault)(nil)).Elem() +} + +type ExtendedFaultFault ExtendedFault + +func init() { + t["ExtendedFaultFault"] = reflect.TypeOf((*ExtendedFaultFault)(nil)).Elem() +} + +type Extension struct { + DynamicData + + Description BaseDescription `xml:"description,typeattr"` + Key string `xml:"key"` + Company string `xml:"company,omitempty"` + Type string `xml:"type,omitempty"` + Version string `xml:"version"` + SubjectName string `xml:"subjectName,omitempty"` + Server []ExtensionServerInfo `xml:"server,omitempty"` + Client []ExtensionClientInfo `xml:"client,omitempty"` + TaskList []ExtensionTaskTypeInfo `xml:"taskList,omitempty"` + EventList []ExtensionEventTypeInfo `xml:"eventList,omitempty"` + FaultList []ExtensionFaultTypeInfo `xml:"faultList,omitempty"` + PrivilegeList []ExtensionPrivilegeInfo `xml:"privilegeList,omitempty"` + ResourceList []ExtensionResourceInfo `xml:"resourceList,omitempty"` + LastHeartbeatTime time.Time `xml:"lastHeartbeatTime"` + HealthInfo *ExtensionHealthInfo `xml:"healthInfo,omitempty"` + OvfConsumerInfo *ExtensionOvfConsumerInfo `xml:"ovfConsumerInfo,omitempty"` + ExtendedProductInfo *ExtExtendedProductInfo `xml:"extendedProductInfo,omitempty"` + ManagedEntityInfo []ExtManagedEntityInfo `xml:"managedEntityInfo,omitempty"` + ShownInSolutionManager *bool `xml:"shownInSolutionManager"` + SolutionManagerInfo *ExtSolutionManagerInfo `xml:"solutionManagerInfo,omitempty"` +} + +func init() { + t["Extension"] = reflect.TypeOf((*Extension)(nil)).Elem() +} + +type ExtensionClientInfo struct { + DynamicData + + Version string `xml:"version"` + Description BaseDescription `xml:"description,typeattr"` + Company string `xml:"company"` + Type string `xml:"type"` + Url string `xml:"url"` +} + +func init() { + t["ExtensionClientInfo"] = reflect.TypeOf((*ExtensionClientInfo)(nil)).Elem() +} + +type ExtensionEventTypeInfo struct { + DynamicData + + EventID string `xml:"eventID"` + EventTypeSchema string `xml:"eventTypeSchema,omitempty"` +} + +func init() { + t["ExtensionEventTypeInfo"] = reflect.TypeOf((*ExtensionEventTypeInfo)(nil)).Elem() +} + +type ExtensionFaultTypeInfo struct { + DynamicData + + FaultID string `xml:"faultID"` +} + +func init() { + t["ExtensionFaultTypeInfo"] = reflect.TypeOf((*ExtensionFaultTypeInfo)(nil)).Elem() +} + +type ExtensionHealthInfo struct { + DynamicData + + Url string `xml:"url"` +} + +func init() { + t["ExtensionHealthInfo"] = reflect.TypeOf((*ExtensionHealthInfo)(nil)).Elem() +} + +type ExtensionManagerIpAllocationUsage struct { + DynamicData + + ExtensionKey string `xml:"extensionKey"` + NumAddresses int32 `xml:"numAddresses"` +} + +func init() { + t["ExtensionManagerIpAllocationUsage"] = reflect.TypeOf((*ExtensionManagerIpAllocationUsage)(nil)).Elem() +} + +type ExtensionOvfConsumerInfo struct { + DynamicData + + CallbackUrl string `xml:"callbackUrl"` + SectionType []string `xml:"sectionType"` +} + +func init() { + t["ExtensionOvfConsumerInfo"] = reflect.TypeOf((*ExtensionOvfConsumerInfo)(nil)).Elem() +} + +type ExtensionPrivilegeInfo struct { + DynamicData + + PrivID string `xml:"privID"` + PrivGroupName string `xml:"privGroupName"` +} + +func init() { + t["ExtensionPrivilegeInfo"] = reflect.TypeOf((*ExtensionPrivilegeInfo)(nil)).Elem() +} + +type ExtensionResourceInfo struct { + DynamicData + + Locale string `xml:"locale"` + Module string `xml:"module"` + Data []KeyValue `xml:"data"` +} + +func init() { + t["ExtensionResourceInfo"] = reflect.TypeOf((*ExtensionResourceInfo)(nil)).Elem() +} + +type ExtensionServerInfo struct { + DynamicData + + Url string `xml:"url"` + Description BaseDescription `xml:"description,typeattr"` + Company string `xml:"company"` + Type string `xml:"type"` + AdminEmail []string `xml:"adminEmail"` + ServerThumbprint string `xml:"serverThumbprint,omitempty"` +} + +func init() { + t["ExtensionServerInfo"] = reflect.TypeOf((*ExtensionServerInfo)(nil)).Elem() +} + +type ExtensionTaskTypeInfo struct { + DynamicData + + TaskID string `xml:"taskID"` +} + +func init() { + t["ExtensionTaskTypeInfo"] = reflect.TypeOf((*ExtensionTaskTypeInfo)(nil)).Elem() +} + +type ExtractOvfEnvironment ExtractOvfEnvironmentRequestType + +func init() { + t["ExtractOvfEnvironment"] = reflect.TypeOf((*ExtractOvfEnvironment)(nil)).Elem() +} + +type ExtractOvfEnvironmentRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["ExtractOvfEnvironmentRequestType"] = reflect.TypeOf((*ExtractOvfEnvironmentRequestType)(nil)).Elem() +} + +type ExtractOvfEnvironmentResponse struct { + Returnval string `xml:"returnval"` +} + +type FailToEnableSPBM struct { + NotEnoughLicenses + + Cs ManagedObjectReference `xml:"cs"` + CsName string `xml:"csName"` + HostLicenseStates []ComputeResourceHostSPBMLicenseInfo `xml:"hostLicenseStates"` +} + +func init() { + t["FailToEnableSPBM"] = reflect.TypeOf((*FailToEnableSPBM)(nil)).Elem() +} + +type FailToEnableSPBMFault FailToEnableSPBM + +func init() { + t["FailToEnableSPBMFault"] = reflect.TypeOf((*FailToEnableSPBMFault)(nil)).Elem() +} + +type FailToLockFaultToleranceVMs struct { + RuntimeFault + + VmName string `xml:"vmName"` + Vm ManagedObjectReference `xml:"vm"` + AlreadyLockedVm ManagedObjectReference `xml:"alreadyLockedVm"` +} + +func init() { + t["FailToLockFaultToleranceVMs"] = reflect.TypeOf((*FailToLockFaultToleranceVMs)(nil)).Elem() +} + +type FailToLockFaultToleranceVMsFault FailToLockFaultToleranceVMs + +func init() { + t["FailToLockFaultToleranceVMsFault"] = reflect.TypeOf((*FailToLockFaultToleranceVMsFault)(nil)).Elem() +} + +type FailoverLevelRestored struct { + ClusterEvent +} + +func init() { + t["FailoverLevelRestored"] = reflect.TypeOf((*FailoverLevelRestored)(nil)).Elem() +} + +type FailoverNodeInfo struct { + DynamicData + + ClusterIpSettings CustomizationIPSettings `xml:"clusterIpSettings"` + FailoverIp *CustomizationIPSettings `xml:"failoverIp,omitempty"` + BiosUuid string `xml:"biosUuid,omitempty"` +} + +func init() { + t["FailoverNodeInfo"] = reflect.TypeOf((*FailoverNodeInfo)(nil)).Elem() +} + +type FaultDomainId struct { + DynamicData + + Id string `xml:"id"` +} + +func init() { + t["FaultDomainId"] = reflect.TypeOf((*FaultDomainId)(nil)).Elem() +} + +type FaultToleranceAntiAffinityViolated struct { + MigrationFault + + HostName string `xml:"hostName"` + Host ManagedObjectReference `xml:"host"` +} + +func init() { + t["FaultToleranceAntiAffinityViolated"] = reflect.TypeOf((*FaultToleranceAntiAffinityViolated)(nil)).Elem() +} + +type FaultToleranceAntiAffinityViolatedFault FaultToleranceAntiAffinityViolated + +func init() { + t["FaultToleranceAntiAffinityViolatedFault"] = reflect.TypeOf((*FaultToleranceAntiAffinityViolatedFault)(nil)).Elem() +} + +type FaultToleranceCannotEditMem struct { + VmConfigFault + + VmName string `xml:"vmName"` + Vm ManagedObjectReference `xml:"vm"` +} + +func init() { + t["FaultToleranceCannotEditMem"] = reflect.TypeOf((*FaultToleranceCannotEditMem)(nil)).Elem() +} + +type FaultToleranceCannotEditMemFault FaultToleranceCannotEditMem + +func init() { + t["FaultToleranceCannotEditMemFault"] = reflect.TypeOf((*FaultToleranceCannotEditMemFault)(nil)).Elem() +} + +type FaultToleranceConfigInfo struct { + DynamicData + + Role int32 `xml:"role"` + InstanceUuids []string `xml:"instanceUuids"` + ConfigPaths []string `xml:"configPaths"` + Orphaned *bool `xml:"orphaned"` +} + +func init() { + t["FaultToleranceConfigInfo"] = reflect.TypeOf((*FaultToleranceConfigInfo)(nil)).Elem() +} + +type FaultToleranceConfigSpec struct { + DynamicData + + MetaDataPath *FaultToleranceMetaSpec `xml:"metaDataPath,omitempty"` + SecondaryVmSpec *FaultToleranceVMConfigSpec `xml:"secondaryVmSpec,omitempty"` +} + +func init() { + t["FaultToleranceConfigSpec"] = reflect.TypeOf((*FaultToleranceConfigSpec)(nil)).Elem() +} + +type FaultToleranceCpuIncompatible struct { + CpuIncompatible + + Model bool `xml:"model"` + Family bool `xml:"family"` + Stepping bool `xml:"stepping"` +} + +func init() { + t["FaultToleranceCpuIncompatible"] = reflect.TypeOf((*FaultToleranceCpuIncompatible)(nil)).Elem() +} + +type FaultToleranceCpuIncompatibleFault FaultToleranceCpuIncompatible + +func init() { + t["FaultToleranceCpuIncompatibleFault"] = reflect.TypeOf((*FaultToleranceCpuIncompatibleFault)(nil)).Elem() +} + +type FaultToleranceDiskSpec struct { + DynamicData + + Disk BaseVirtualDevice `xml:"disk,typeattr"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["FaultToleranceDiskSpec"] = reflect.TypeOf((*FaultToleranceDiskSpec)(nil)).Elem() +} + +type FaultToleranceMetaSpec struct { + DynamicData + + MetaDataDatastore ManagedObjectReference `xml:"metaDataDatastore"` +} + +func init() { + t["FaultToleranceMetaSpec"] = reflect.TypeOf((*FaultToleranceMetaSpec)(nil)).Elem() +} + +type FaultToleranceNeedsThickDisk struct { + MigrationFault + + VmName string `xml:"vmName"` +} + +func init() { + t["FaultToleranceNeedsThickDisk"] = reflect.TypeOf((*FaultToleranceNeedsThickDisk)(nil)).Elem() +} + +type FaultToleranceNeedsThickDiskFault FaultToleranceNeedsThickDisk + +func init() { + t["FaultToleranceNeedsThickDiskFault"] = reflect.TypeOf((*FaultToleranceNeedsThickDiskFault)(nil)).Elem() +} + +type FaultToleranceNotLicensed struct { + VmFaultToleranceIssue + + HostName string `xml:"hostName,omitempty"` +} + +func init() { + t["FaultToleranceNotLicensed"] = reflect.TypeOf((*FaultToleranceNotLicensed)(nil)).Elem() +} + +type FaultToleranceNotLicensedFault FaultToleranceNotLicensed + +func init() { + t["FaultToleranceNotLicensedFault"] = reflect.TypeOf((*FaultToleranceNotLicensedFault)(nil)).Elem() +} + +type FaultToleranceNotSameBuild struct { + MigrationFault + + Build string `xml:"build"` +} + +func init() { + t["FaultToleranceNotSameBuild"] = reflect.TypeOf((*FaultToleranceNotSameBuild)(nil)).Elem() +} + +type FaultToleranceNotSameBuildFault FaultToleranceNotSameBuild + +func init() { + t["FaultToleranceNotSameBuildFault"] = reflect.TypeOf((*FaultToleranceNotSameBuildFault)(nil)).Elem() +} + +type FaultTolerancePrimaryConfigInfo struct { + FaultToleranceConfigInfo + + Secondaries []ManagedObjectReference `xml:"secondaries"` +} + +func init() { + t["FaultTolerancePrimaryConfigInfo"] = reflect.TypeOf((*FaultTolerancePrimaryConfigInfo)(nil)).Elem() +} + +type FaultTolerancePrimaryPowerOnNotAttempted struct { + VmFaultToleranceIssue + + SecondaryVm ManagedObjectReference `xml:"secondaryVm"` + PrimaryVm ManagedObjectReference `xml:"primaryVm"` +} + +func init() { + t["FaultTolerancePrimaryPowerOnNotAttempted"] = reflect.TypeOf((*FaultTolerancePrimaryPowerOnNotAttempted)(nil)).Elem() +} + +type FaultTolerancePrimaryPowerOnNotAttemptedFault FaultTolerancePrimaryPowerOnNotAttempted + +func init() { + t["FaultTolerancePrimaryPowerOnNotAttemptedFault"] = reflect.TypeOf((*FaultTolerancePrimaryPowerOnNotAttemptedFault)(nil)).Elem() +} + +type FaultToleranceSecondaryConfigInfo struct { + FaultToleranceConfigInfo + + PrimaryVM ManagedObjectReference `xml:"primaryVM"` +} + +func init() { + t["FaultToleranceSecondaryConfigInfo"] = reflect.TypeOf((*FaultToleranceSecondaryConfigInfo)(nil)).Elem() +} + +type FaultToleranceSecondaryOpResult struct { + DynamicData + + Vm ManagedObjectReference `xml:"vm"` + PowerOnAttempted bool `xml:"powerOnAttempted"` + PowerOnResult *ClusterPowerOnVmResult `xml:"powerOnResult,omitempty"` +} + +func init() { + t["FaultToleranceSecondaryOpResult"] = reflect.TypeOf((*FaultToleranceSecondaryOpResult)(nil)).Elem() +} + +type FaultToleranceVMConfigSpec struct { + DynamicData + + VmConfig *ManagedObjectReference `xml:"vmConfig,omitempty"` + Disks []FaultToleranceDiskSpec `xml:"disks,omitempty"` +} + +func init() { + t["FaultToleranceVMConfigSpec"] = reflect.TypeOf((*FaultToleranceVMConfigSpec)(nil)).Elem() +} + +type FaultToleranceVmNotDasProtected struct { + VimFault + + Vm ManagedObjectReference `xml:"vm"` + VmName string `xml:"vmName"` +} + +func init() { + t["FaultToleranceVmNotDasProtected"] = reflect.TypeOf((*FaultToleranceVmNotDasProtected)(nil)).Elem() +} + +type FaultToleranceVmNotDasProtectedFault FaultToleranceVmNotDasProtected + +func init() { + t["FaultToleranceVmNotDasProtectedFault"] = reflect.TypeOf((*FaultToleranceVmNotDasProtectedFault)(nil)).Elem() +} + +type FaultsByHost struct { + DynamicData + + Host ManagedObjectReference `xml:"host"` + Faults []LocalizedMethodFault `xml:"faults,omitempty"` +} + +func init() { + t["FaultsByHost"] = reflect.TypeOf((*FaultsByHost)(nil)).Elem() +} + +type FaultsByVM struct { + DynamicData + + Vm ManagedObjectReference `xml:"vm"` + Faults []LocalizedMethodFault `xml:"faults,omitempty"` +} + +func init() { + t["FaultsByVM"] = reflect.TypeOf((*FaultsByVM)(nil)).Elem() +} + +type FcoeConfig struct { + DynamicData + + PriorityClass int32 `xml:"priorityClass"` + SourceMac string `xml:"sourceMac"` + VlanRange []FcoeConfigVlanRange `xml:"vlanRange"` + Capabilities FcoeConfigFcoeCapabilities `xml:"capabilities"` + FcoeActive bool `xml:"fcoeActive"` +} + +func init() { + t["FcoeConfig"] = reflect.TypeOf((*FcoeConfig)(nil)).Elem() +} + +type FcoeConfigFcoeCapabilities struct { + DynamicData + + PriorityClass bool `xml:"priorityClass"` + SourceMacAddress bool `xml:"sourceMacAddress"` + VlanRange bool `xml:"vlanRange"` +} + +func init() { + t["FcoeConfigFcoeCapabilities"] = reflect.TypeOf((*FcoeConfigFcoeCapabilities)(nil)).Elem() +} + +type FcoeConfigFcoeSpecification struct { + DynamicData + + UnderlyingPnic string `xml:"underlyingPnic"` + PriorityClass int32 `xml:"priorityClass,omitempty"` + SourceMac string `xml:"sourceMac,omitempty"` + VlanRange []FcoeConfigVlanRange `xml:"vlanRange,omitempty"` +} + +func init() { + t["FcoeConfigFcoeSpecification"] = reflect.TypeOf((*FcoeConfigFcoeSpecification)(nil)).Elem() +} + +type FcoeConfigVlanRange struct { + DynamicData + + VlanLow int32 `xml:"vlanLow"` + VlanHigh int32 `xml:"vlanHigh"` +} + +func init() { + t["FcoeConfigVlanRange"] = reflect.TypeOf((*FcoeConfigVlanRange)(nil)).Elem() +} + +type FcoeFault struct { + VimFault +} + +func init() { + t["FcoeFault"] = reflect.TypeOf((*FcoeFault)(nil)).Elem() +} + +type FcoeFaultFault BaseFcoeFault + +func init() { + t["FcoeFaultFault"] = reflect.TypeOf((*FcoeFaultFault)(nil)).Elem() +} + +type FcoeFaultPnicHasNoPortSet struct { + FcoeFault + + NicDevice string `xml:"nicDevice"` +} + +func init() { + t["FcoeFaultPnicHasNoPortSet"] = reflect.TypeOf((*FcoeFaultPnicHasNoPortSet)(nil)).Elem() +} + +type FcoeFaultPnicHasNoPortSetFault FcoeFaultPnicHasNoPortSet + +func init() { + t["FcoeFaultPnicHasNoPortSetFault"] = reflect.TypeOf((*FcoeFaultPnicHasNoPortSetFault)(nil)).Elem() +} + +type FeatureRequirementsNotMet struct { + VirtualHardwareCompatibilityIssue + + FeatureRequirement []VirtualMachineFeatureRequirement `xml:"featureRequirement,omitempty"` + Vm *ManagedObjectReference `xml:"vm,omitempty"` + Host *ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["FeatureRequirementsNotMet"] = reflect.TypeOf((*FeatureRequirementsNotMet)(nil)).Elem() +} + +type FeatureRequirementsNotMetFault FeatureRequirementsNotMet + +func init() { + t["FeatureRequirementsNotMetFault"] = reflect.TypeOf((*FeatureRequirementsNotMetFault)(nil)).Elem() +} + +type FetchDVPortKeys FetchDVPortKeysRequestType + +func init() { + t["FetchDVPortKeys"] = reflect.TypeOf((*FetchDVPortKeys)(nil)).Elem() +} + +type FetchDVPortKeysRequestType struct { + This ManagedObjectReference `xml:"_this"` + Criteria *DistributedVirtualSwitchPortCriteria `xml:"criteria,omitempty"` +} + +func init() { + t["FetchDVPortKeysRequestType"] = reflect.TypeOf((*FetchDVPortKeysRequestType)(nil)).Elem() +} + +type FetchDVPortKeysResponse struct { + Returnval []string `xml:"returnval,omitempty"` +} + +type FetchDVPorts FetchDVPortsRequestType + +func init() { + t["FetchDVPorts"] = reflect.TypeOf((*FetchDVPorts)(nil)).Elem() +} + +type FetchDVPortsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Criteria *DistributedVirtualSwitchPortCriteria `xml:"criteria,omitempty"` +} + +func init() { + t["FetchDVPortsRequestType"] = reflect.TypeOf((*FetchDVPortsRequestType)(nil)).Elem() +} + +type FetchDVPortsResponse struct { + Returnval []DistributedVirtualPort `xml:"returnval,omitempty"` +} + +type FetchSystemEventLog FetchSystemEventLogRequestType + +func init() { + t["FetchSystemEventLog"] = reflect.TypeOf((*FetchSystemEventLog)(nil)).Elem() +} + +type FetchSystemEventLogRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["FetchSystemEventLogRequestType"] = reflect.TypeOf((*FetchSystemEventLogRequestType)(nil)).Elem() +} + +type FetchSystemEventLogResponse struct { + Returnval []SystemEventInfo `xml:"returnval,omitempty"` +} + +type FetchUserPrivilegeOnEntities FetchUserPrivilegeOnEntitiesRequestType + +func init() { + t["FetchUserPrivilegeOnEntities"] = reflect.TypeOf((*FetchUserPrivilegeOnEntities)(nil)).Elem() +} + +type FetchUserPrivilegeOnEntitiesRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entities []ManagedObjectReference `xml:"entities"` + UserName string `xml:"userName"` +} + +func init() { + t["FetchUserPrivilegeOnEntitiesRequestType"] = reflect.TypeOf((*FetchUserPrivilegeOnEntitiesRequestType)(nil)).Elem() +} + +type FetchUserPrivilegeOnEntitiesResponse struct { + Returnval []UserPrivilegeResult `xml:"returnval,omitempty"` +} + +type FileAlreadyExists struct { + FileFault +} + +func init() { + t["FileAlreadyExists"] = reflect.TypeOf((*FileAlreadyExists)(nil)).Elem() +} + +type FileAlreadyExistsFault FileAlreadyExists + +func init() { + t["FileAlreadyExistsFault"] = reflect.TypeOf((*FileAlreadyExistsFault)(nil)).Elem() +} + +type FileBackedPortNotSupported struct { + DeviceNotSupported +} + +func init() { + t["FileBackedPortNotSupported"] = reflect.TypeOf((*FileBackedPortNotSupported)(nil)).Elem() +} + +type FileBackedPortNotSupportedFault FileBackedPortNotSupported + +func init() { + t["FileBackedPortNotSupportedFault"] = reflect.TypeOf((*FileBackedPortNotSupportedFault)(nil)).Elem() +} + +type FileBackedVirtualDiskSpec struct { + VirtualDiskSpec + + CapacityKb int64 `xml:"capacityKb"` + Profile []BaseVirtualMachineProfileSpec `xml:"profile,omitempty,typeattr"` + Crypto BaseCryptoSpec `xml:"crypto,omitempty,typeattr"` +} + +func init() { + t["FileBackedVirtualDiskSpec"] = reflect.TypeOf((*FileBackedVirtualDiskSpec)(nil)).Elem() +} + +type FileFault struct { + VimFault + + File string `xml:"file"` +} + +func init() { + t["FileFault"] = reflect.TypeOf((*FileFault)(nil)).Elem() +} + +type FileFaultFault BaseFileFault + +func init() { + t["FileFaultFault"] = reflect.TypeOf((*FileFaultFault)(nil)).Elem() +} + +type FileInfo struct { + DynamicData + + Path string `xml:"path"` + FriendlyName string `xml:"friendlyName,omitempty"` + FileSize int64 `xml:"fileSize,omitempty"` + Modification *time.Time `xml:"modification"` + Owner string `xml:"owner,omitempty"` +} + +func init() { + t["FileInfo"] = reflect.TypeOf((*FileInfo)(nil)).Elem() +} + +type FileLocked struct { + FileFault +} + +func init() { + t["FileLocked"] = reflect.TypeOf((*FileLocked)(nil)).Elem() +} + +type FileLockedFault FileLocked + +func init() { + t["FileLockedFault"] = reflect.TypeOf((*FileLockedFault)(nil)).Elem() +} + +type FileNameTooLong struct { + FileFault +} + +func init() { + t["FileNameTooLong"] = reflect.TypeOf((*FileNameTooLong)(nil)).Elem() +} + +type FileNameTooLongFault FileNameTooLong + +func init() { + t["FileNameTooLongFault"] = reflect.TypeOf((*FileNameTooLongFault)(nil)).Elem() +} + +type FileNotFound struct { + FileFault +} + +func init() { + t["FileNotFound"] = reflect.TypeOf((*FileNotFound)(nil)).Elem() +} + +type FileNotFoundFault FileNotFound + +func init() { + t["FileNotFoundFault"] = reflect.TypeOf((*FileNotFoundFault)(nil)).Elem() +} + +type FileNotWritable struct { + FileFault +} + +func init() { + t["FileNotWritable"] = reflect.TypeOf((*FileNotWritable)(nil)).Elem() +} + +type FileNotWritableFault FileNotWritable + +func init() { + t["FileNotWritableFault"] = reflect.TypeOf((*FileNotWritableFault)(nil)).Elem() +} + +type FileQuery struct { + DynamicData +} + +func init() { + t["FileQuery"] = reflect.TypeOf((*FileQuery)(nil)).Elem() +} + +type FileQueryFlags struct { + DynamicData + + FileType bool `xml:"fileType"` + FileSize bool `xml:"fileSize"` + Modification bool `xml:"modification"` + FileOwner *bool `xml:"fileOwner"` +} + +func init() { + t["FileQueryFlags"] = reflect.TypeOf((*FileQueryFlags)(nil)).Elem() +} + +type FileTooLarge struct { + FileFault + + Datastore string `xml:"datastore"` + FileSize int64 `xml:"fileSize"` + MaxFileSize int64 `xml:"maxFileSize,omitempty"` +} + +func init() { + t["FileTooLarge"] = reflect.TypeOf((*FileTooLarge)(nil)).Elem() +} + +type FileTooLargeFault FileTooLarge + +func init() { + t["FileTooLargeFault"] = reflect.TypeOf((*FileTooLargeFault)(nil)).Elem() +} + +type FileTransferInformation struct { + DynamicData + + Attributes BaseGuestFileAttributes `xml:"attributes,typeattr"` + Size int64 `xml:"size"` + Url string `xml:"url"` +} + +func init() { + t["FileTransferInformation"] = reflect.TypeOf((*FileTransferInformation)(nil)).Elem() +} + +type FilesystemQuiesceFault struct { + SnapshotFault +} + +func init() { + t["FilesystemQuiesceFault"] = reflect.TypeOf((*FilesystemQuiesceFault)(nil)).Elem() +} + +type FilesystemQuiesceFaultFault FilesystemQuiesceFault + +func init() { + t["FilesystemQuiesceFaultFault"] = reflect.TypeOf((*FilesystemQuiesceFaultFault)(nil)).Elem() +} + +type FilterInUse struct { + ResourceInUse + + Disk []VirtualDiskId `xml:"disk,omitempty"` +} + +func init() { + t["FilterInUse"] = reflect.TypeOf((*FilterInUse)(nil)).Elem() +} + +type FilterInUseFault FilterInUse + +func init() { + t["FilterInUseFault"] = reflect.TypeOf((*FilterInUseFault)(nil)).Elem() +} + +type FindAllByDnsName FindAllByDnsNameRequestType + +func init() { + t["FindAllByDnsName"] = reflect.TypeOf((*FindAllByDnsName)(nil)).Elem() +} + +type FindAllByDnsNameRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` + DnsName string `xml:"dnsName"` + VmSearch bool `xml:"vmSearch"` +} + +func init() { + t["FindAllByDnsNameRequestType"] = reflect.TypeOf((*FindAllByDnsNameRequestType)(nil)).Elem() +} + +type FindAllByDnsNameResponse struct { + Returnval []ManagedObjectReference `xml:"returnval"` +} + +type FindAllByIp FindAllByIpRequestType + +func init() { + t["FindAllByIp"] = reflect.TypeOf((*FindAllByIp)(nil)).Elem() +} + +type FindAllByIpRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` + Ip string `xml:"ip"` + VmSearch bool `xml:"vmSearch"` +} + +func init() { + t["FindAllByIpRequestType"] = reflect.TypeOf((*FindAllByIpRequestType)(nil)).Elem() +} + +type FindAllByIpResponse struct { + Returnval []ManagedObjectReference `xml:"returnval"` +} + +type FindAllByUuid FindAllByUuidRequestType + +func init() { + t["FindAllByUuid"] = reflect.TypeOf((*FindAllByUuid)(nil)).Elem() +} + +type FindAllByUuidRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` + Uuid string `xml:"uuid"` + VmSearch bool `xml:"vmSearch"` + InstanceUuid *bool `xml:"instanceUuid"` +} + +func init() { + t["FindAllByUuidRequestType"] = reflect.TypeOf((*FindAllByUuidRequestType)(nil)).Elem() +} + +type FindAllByUuidResponse struct { + Returnval []ManagedObjectReference `xml:"returnval"` +} + +type FindAssociatedProfile FindAssociatedProfileRequestType + +func init() { + t["FindAssociatedProfile"] = reflect.TypeOf((*FindAssociatedProfile)(nil)).Elem() +} + +type FindAssociatedProfileRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity ManagedObjectReference `xml:"entity"` +} + +func init() { + t["FindAssociatedProfileRequestType"] = reflect.TypeOf((*FindAssociatedProfileRequestType)(nil)).Elem() +} + +type FindAssociatedProfileResponse struct { + Returnval []ManagedObjectReference `xml:"returnval,omitempty"` +} + +type FindByDatastorePath FindByDatastorePathRequestType + +func init() { + t["FindByDatastorePath"] = reflect.TypeOf((*FindByDatastorePath)(nil)).Elem() +} + +type FindByDatastorePathRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datacenter ManagedObjectReference `xml:"datacenter"` + Path string `xml:"path"` +} + +func init() { + t["FindByDatastorePathRequestType"] = reflect.TypeOf((*FindByDatastorePathRequestType)(nil)).Elem() +} + +type FindByDatastorePathResponse struct { + Returnval *ManagedObjectReference `xml:"returnval,omitempty"` +} + +type FindByDnsName FindByDnsNameRequestType + +func init() { + t["FindByDnsName"] = reflect.TypeOf((*FindByDnsName)(nil)).Elem() +} + +type FindByDnsNameRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` + DnsName string `xml:"dnsName"` + VmSearch bool `xml:"vmSearch"` +} + +func init() { + t["FindByDnsNameRequestType"] = reflect.TypeOf((*FindByDnsNameRequestType)(nil)).Elem() +} + +type FindByDnsNameResponse struct { + Returnval *ManagedObjectReference `xml:"returnval,omitempty"` +} + +type FindByInventoryPath FindByInventoryPathRequestType + +func init() { + t["FindByInventoryPath"] = reflect.TypeOf((*FindByInventoryPath)(nil)).Elem() +} + +type FindByInventoryPathRequestType struct { + This ManagedObjectReference `xml:"_this"` + InventoryPath string `xml:"inventoryPath"` +} + +func init() { + t["FindByInventoryPathRequestType"] = reflect.TypeOf((*FindByInventoryPathRequestType)(nil)).Elem() +} + +type FindByInventoryPathResponse struct { + Returnval *ManagedObjectReference `xml:"returnval,omitempty"` +} + +type FindByIp FindByIpRequestType + +func init() { + t["FindByIp"] = reflect.TypeOf((*FindByIp)(nil)).Elem() +} + +type FindByIpRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` + Ip string `xml:"ip"` + VmSearch bool `xml:"vmSearch"` +} + +func init() { + t["FindByIpRequestType"] = reflect.TypeOf((*FindByIpRequestType)(nil)).Elem() +} + +type FindByIpResponse struct { + Returnval *ManagedObjectReference `xml:"returnval,omitempty"` +} + +type FindByUuid FindByUuidRequestType + +func init() { + t["FindByUuid"] = reflect.TypeOf((*FindByUuid)(nil)).Elem() +} + +type FindByUuidRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` + Uuid string `xml:"uuid"` + VmSearch bool `xml:"vmSearch"` + InstanceUuid *bool `xml:"instanceUuid"` +} + +func init() { + t["FindByUuidRequestType"] = reflect.TypeOf((*FindByUuidRequestType)(nil)).Elem() +} + +type FindByUuidResponse struct { + Returnval *ManagedObjectReference `xml:"returnval,omitempty"` +} + +type FindChild FindChildRequestType + +func init() { + t["FindChild"] = reflect.TypeOf((*FindChild)(nil)).Elem() +} + +type FindChildRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity ManagedObjectReference `xml:"entity"` + Name string `xml:"name"` +} + +func init() { + t["FindChildRequestType"] = reflect.TypeOf((*FindChildRequestType)(nil)).Elem() +} + +type FindChildResponse struct { + Returnval *ManagedObjectReference `xml:"returnval,omitempty"` +} + +type FindExtension FindExtensionRequestType + +func init() { + t["FindExtension"] = reflect.TypeOf((*FindExtension)(nil)).Elem() +} + +type FindExtensionRequestType struct { + This ManagedObjectReference `xml:"_this"` + ExtensionKey string `xml:"extensionKey"` +} + +func init() { + t["FindExtensionRequestType"] = reflect.TypeOf((*FindExtensionRequestType)(nil)).Elem() +} + +type FindExtensionResponse struct { + Returnval *Extension `xml:"returnval,omitempty"` +} + +type FindRulesForVm FindRulesForVmRequestType + +func init() { + t["FindRulesForVm"] = reflect.TypeOf((*FindRulesForVm)(nil)).Elem() +} + +type FindRulesForVmRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` +} + +func init() { + t["FindRulesForVmRequestType"] = reflect.TypeOf((*FindRulesForVmRequestType)(nil)).Elem() +} + +type FindRulesForVmResponse struct { + Returnval []BaseClusterRuleInfo `xml:"returnval,omitempty,typeattr"` +} + +type FirewallProfile struct { + ApplyProfile + + Ruleset []FirewallProfileRulesetProfile `xml:"ruleset,omitempty"` +} + +func init() { + t["FirewallProfile"] = reflect.TypeOf((*FirewallProfile)(nil)).Elem() +} + +type FirewallProfileRulesetProfile struct { + ApplyProfile + + Key string `xml:"key"` +} + +func init() { + t["FirewallProfileRulesetProfile"] = reflect.TypeOf((*FirewallProfileRulesetProfile)(nil)).Elem() +} + +type FloatOption struct { + OptionType + + Min float32 `xml:"min"` + Max float32 `xml:"max"` + DefaultValue float32 `xml:"defaultValue"` +} + +func init() { + t["FloatOption"] = reflect.TypeOf((*FloatOption)(nil)).Elem() +} + +type FloppyImageFileInfo struct { + FileInfo +} + +func init() { + t["FloppyImageFileInfo"] = reflect.TypeOf((*FloppyImageFileInfo)(nil)).Elem() +} + +type FloppyImageFileQuery struct { + FileQuery +} + +func init() { + t["FloppyImageFileQuery"] = reflect.TypeOf((*FloppyImageFileQuery)(nil)).Elem() +} + +type FolderBatchAddHostsToClusterResult struct { + DynamicData + + HostsAddedToCluster []ManagedObjectReference `xml:"hostsAddedToCluster,omitempty"` + HostsFailedInventoryAdd []FolderFailedHostResult `xml:"hostsFailedInventoryAdd,omitempty"` + HostsFailedMoveToCluster []FolderFailedHostResult `xml:"hostsFailedMoveToCluster,omitempty"` +} + +func init() { + t["FolderBatchAddHostsToClusterResult"] = reflect.TypeOf((*FolderBatchAddHostsToClusterResult)(nil)).Elem() +} + +type FolderBatchAddStandaloneHostsResult struct { + DynamicData + + AddedHosts []ManagedObjectReference `xml:"addedHosts,omitempty"` + HostsFailedInventoryAdd []FolderFailedHostResult `xml:"hostsFailedInventoryAdd,omitempty"` +} + +func init() { + t["FolderBatchAddStandaloneHostsResult"] = reflect.TypeOf((*FolderBatchAddStandaloneHostsResult)(nil)).Elem() +} + +type FolderEventArgument struct { + EntityEventArgument + + Folder ManagedObjectReference `xml:"folder"` +} + +func init() { + t["FolderEventArgument"] = reflect.TypeOf((*FolderEventArgument)(nil)).Elem() +} + +type FolderFailedHostResult struct { + DynamicData + + HostName string `xml:"hostName,omitempty"` + Host *ManagedObjectReference `xml:"host,omitempty"` + Context LocalizableMessage `xml:"context"` + Fault LocalizedMethodFault `xml:"fault"` +} + +func init() { + t["FolderFailedHostResult"] = reflect.TypeOf((*FolderFailedHostResult)(nil)).Elem() +} + +type FolderFileInfo struct { + FileInfo +} + +func init() { + t["FolderFileInfo"] = reflect.TypeOf((*FolderFileInfo)(nil)).Elem() +} + +type FolderFileQuery struct { + FileQuery +} + +func init() { + t["FolderFileQuery"] = reflect.TypeOf((*FolderFileQuery)(nil)).Elem() +} + +type FolderNewHostSpec struct { + DynamicData + + HostCnxSpec HostConnectSpec `xml:"hostCnxSpec"` + EsxLicense string `xml:"esxLicense,omitempty"` +} + +func init() { + t["FolderNewHostSpec"] = reflect.TypeOf((*FolderNewHostSpec)(nil)).Elem() +} + +type FormatVffs FormatVffsRequestType + +func init() { + t["FormatVffs"] = reflect.TypeOf((*FormatVffs)(nil)).Elem() +} + +type FormatVffsRequestType struct { + This ManagedObjectReference `xml:"_this"` + CreateSpec HostVffsSpec `xml:"createSpec"` +} + +func init() { + t["FormatVffsRequestType"] = reflect.TypeOf((*FormatVffsRequestType)(nil)).Elem() +} + +type FormatVffsResponse struct { + Returnval HostVffsVolume `xml:"returnval"` +} + +type FormatVmfs FormatVmfsRequestType + +func init() { + t["FormatVmfs"] = reflect.TypeOf((*FormatVmfs)(nil)).Elem() +} + +type FormatVmfsRequestType struct { + This ManagedObjectReference `xml:"_this"` + CreateSpec HostVmfsSpec `xml:"createSpec"` +} + +func init() { + t["FormatVmfsRequestType"] = reflect.TypeOf((*FormatVmfsRequestType)(nil)).Elem() +} + +type FormatVmfsResponse struct { + Returnval HostVmfsVolume `xml:"returnval"` +} + +type FtIssuesOnHost struct { + VmFaultToleranceIssue + + Host ManagedObjectReference `xml:"host"` + HostName string `xml:"hostName"` + Errors []LocalizedMethodFault `xml:"errors,omitempty"` +} + +func init() { + t["FtIssuesOnHost"] = reflect.TypeOf((*FtIssuesOnHost)(nil)).Elem() +} + +type FtIssuesOnHostFault FtIssuesOnHost + +func init() { + t["FtIssuesOnHostFault"] = reflect.TypeOf((*FtIssuesOnHostFault)(nil)).Elem() +} + +type FullStorageVMotionNotSupported struct { + MigrationFeatureNotSupported +} + +func init() { + t["FullStorageVMotionNotSupported"] = reflect.TypeOf((*FullStorageVMotionNotSupported)(nil)).Elem() +} + +type FullStorageVMotionNotSupportedFault FullStorageVMotionNotSupported + +func init() { + t["FullStorageVMotionNotSupportedFault"] = reflect.TypeOf((*FullStorageVMotionNotSupportedFault)(nil)).Elem() +} + +type GatewayConnectFault struct { + HostConnectFault + + GatewayType string `xml:"gatewayType"` + GatewayId string `xml:"gatewayId"` + GatewayInfo string `xml:"gatewayInfo"` + Details *LocalizableMessage `xml:"details,omitempty"` +} + +func init() { + t["GatewayConnectFault"] = reflect.TypeOf((*GatewayConnectFault)(nil)).Elem() +} + +type GatewayConnectFaultFault BaseGatewayConnectFault + +func init() { + t["GatewayConnectFaultFault"] = reflect.TypeOf((*GatewayConnectFaultFault)(nil)).Elem() +} + +type GatewayHostNotReachable struct { + GatewayToHostConnectFault +} + +func init() { + t["GatewayHostNotReachable"] = reflect.TypeOf((*GatewayHostNotReachable)(nil)).Elem() +} + +type GatewayHostNotReachableFault GatewayHostNotReachable + +func init() { + t["GatewayHostNotReachableFault"] = reflect.TypeOf((*GatewayHostNotReachableFault)(nil)).Elem() +} + +type GatewayNotFound struct { + GatewayConnectFault +} + +func init() { + t["GatewayNotFound"] = reflect.TypeOf((*GatewayNotFound)(nil)).Elem() +} + +type GatewayNotFoundFault GatewayNotFound + +func init() { + t["GatewayNotFoundFault"] = reflect.TypeOf((*GatewayNotFoundFault)(nil)).Elem() +} + +type GatewayNotReachable struct { + GatewayConnectFault +} + +func init() { + t["GatewayNotReachable"] = reflect.TypeOf((*GatewayNotReachable)(nil)).Elem() +} + +type GatewayNotReachableFault GatewayNotReachable + +func init() { + t["GatewayNotReachableFault"] = reflect.TypeOf((*GatewayNotReachableFault)(nil)).Elem() +} + +type GatewayOperationRefused struct { + GatewayConnectFault +} + +func init() { + t["GatewayOperationRefused"] = reflect.TypeOf((*GatewayOperationRefused)(nil)).Elem() +} + +type GatewayOperationRefusedFault GatewayOperationRefused + +func init() { + t["GatewayOperationRefusedFault"] = reflect.TypeOf((*GatewayOperationRefusedFault)(nil)).Elem() +} + +type GatewayToHostAuthFault struct { + GatewayToHostConnectFault + + InvalidProperties []string `xml:"invalidProperties"` + MissingProperties []string `xml:"missingProperties"` +} + +func init() { + t["GatewayToHostAuthFault"] = reflect.TypeOf((*GatewayToHostAuthFault)(nil)).Elem() +} + +type GatewayToHostAuthFaultFault GatewayToHostAuthFault + +func init() { + t["GatewayToHostAuthFaultFault"] = reflect.TypeOf((*GatewayToHostAuthFaultFault)(nil)).Elem() +} + +type GatewayToHostConnectFault struct { + GatewayConnectFault + + Hostname string `xml:"hostname"` + Port int32 `xml:"port,omitempty"` +} + +func init() { + t["GatewayToHostConnectFault"] = reflect.TypeOf((*GatewayToHostConnectFault)(nil)).Elem() +} + +type GatewayToHostConnectFaultFault BaseGatewayToHostConnectFault + +func init() { + t["GatewayToHostConnectFaultFault"] = reflect.TypeOf((*GatewayToHostConnectFaultFault)(nil)).Elem() +} + +type GatewayToHostTrustVerifyFault struct { + GatewayToHostConnectFault + + VerificationToken string `xml:"verificationToken"` + PropertiesToVerify []KeyValue `xml:"propertiesToVerify"` +} + +func init() { + t["GatewayToHostTrustVerifyFault"] = reflect.TypeOf((*GatewayToHostTrustVerifyFault)(nil)).Elem() +} + +type GatewayToHostTrustVerifyFaultFault GatewayToHostTrustVerifyFault + +func init() { + t["GatewayToHostTrustVerifyFaultFault"] = reflect.TypeOf((*GatewayToHostTrustVerifyFaultFault)(nil)).Elem() +} + +type GeneralEvent struct { + Event + + Message string `xml:"message"` +} + +func init() { + t["GeneralEvent"] = reflect.TypeOf((*GeneralEvent)(nil)).Elem() +} + +type GeneralHostErrorEvent struct { + GeneralEvent +} + +func init() { + t["GeneralHostErrorEvent"] = reflect.TypeOf((*GeneralHostErrorEvent)(nil)).Elem() +} + +type GeneralHostInfoEvent struct { + GeneralEvent +} + +func init() { + t["GeneralHostInfoEvent"] = reflect.TypeOf((*GeneralHostInfoEvent)(nil)).Elem() +} + +type GeneralHostWarningEvent struct { + GeneralEvent +} + +func init() { + t["GeneralHostWarningEvent"] = reflect.TypeOf((*GeneralHostWarningEvent)(nil)).Elem() +} + +type GeneralUserEvent struct { + GeneralEvent + + Entity *ManagedEntityEventArgument `xml:"entity,omitempty"` +} + +func init() { + t["GeneralUserEvent"] = reflect.TypeOf((*GeneralUserEvent)(nil)).Elem() +} + +type GeneralVmErrorEvent struct { + GeneralEvent +} + +func init() { + t["GeneralVmErrorEvent"] = reflect.TypeOf((*GeneralVmErrorEvent)(nil)).Elem() +} + +type GeneralVmInfoEvent struct { + GeneralEvent +} + +func init() { + t["GeneralVmInfoEvent"] = reflect.TypeOf((*GeneralVmInfoEvent)(nil)).Elem() +} + +type GeneralVmWarningEvent struct { + GeneralEvent +} + +func init() { + t["GeneralVmWarningEvent"] = reflect.TypeOf((*GeneralVmWarningEvent)(nil)).Elem() +} + +type GenerateCertificateSigningRequest GenerateCertificateSigningRequestRequestType + +func init() { + t["GenerateCertificateSigningRequest"] = reflect.TypeOf((*GenerateCertificateSigningRequest)(nil)).Elem() +} + +type GenerateCertificateSigningRequestByDn GenerateCertificateSigningRequestByDnRequestType + +func init() { + t["GenerateCertificateSigningRequestByDn"] = reflect.TypeOf((*GenerateCertificateSigningRequestByDn)(nil)).Elem() +} + +type GenerateCertificateSigningRequestByDnRequestType struct { + This ManagedObjectReference `xml:"_this"` + DistinguishedName string `xml:"distinguishedName"` +} + +func init() { + t["GenerateCertificateSigningRequestByDnRequestType"] = reflect.TypeOf((*GenerateCertificateSigningRequestByDnRequestType)(nil)).Elem() +} + +type GenerateCertificateSigningRequestByDnResponse struct { + Returnval string `xml:"returnval"` +} + +type GenerateCertificateSigningRequestRequestType struct { + This ManagedObjectReference `xml:"_this"` + UseIpAddressAsCommonName bool `xml:"useIpAddressAsCommonName"` +} + +func init() { + t["GenerateCertificateSigningRequestRequestType"] = reflect.TypeOf((*GenerateCertificateSigningRequestRequestType)(nil)).Elem() +} + +type GenerateCertificateSigningRequestResponse struct { + Returnval string `xml:"returnval"` +} + +type GenerateClientCsr GenerateClientCsrRequestType + +func init() { + t["GenerateClientCsr"] = reflect.TypeOf((*GenerateClientCsr)(nil)).Elem() +} + +type GenerateClientCsrRequestType struct { + This ManagedObjectReference `xml:"_this"` + Cluster KeyProviderId `xml:"cluster"` +} + +func init() { + t["GenerateClientCsrRequestType"] = reflect.TypeOf((*GenerateClientCsrRequestType)(nil)).Elem() +} + +type GenerateClientCsrResponse struct { + Returnval string `xml:"returnval"` +} + +type GenerateConfigTaskList GenerateConfigTaskListRequestType + +func init() { + t["GenerateConfigTaskList"] = reflect.TypeOf((*GenerateConfigTaskList)(nil)).Elem() +} + +type GenerateConfigTaskListRequestType struct { + This ManagedObjectReference `xml:"_this"` + ConfigSpec HostConfigSpec `xml:"configSpec"` + Host ManagedObjectReference `xml:"host"` +} + +func init() { + t["GenerateConfigTaskListRequestType"] = reflect.TypeOf((*GenerateConfigTaskListRequestType)(nil)).Elem() +} + +type GenerateConfigTaskListResponse struct { + Returnval HostProfileManagerConfigTaskList `xml:"returnval"` +} + +type GenerateHostConfigTaskSpecRequestType struct { + This ManagedObjectReference `xml:"_this"` + HostsInfo []StructuredCustomizations `xml:"hostsInfo,omitempty"` +} + +func init() { + t["GenerateHostConfigTaskSpecRequestType"] = reflect.TypeOf((*GenerateHostConfigTaskSpecRequestType)(nil)).Elem() +} + +type GenerateHostConfigTaskSpec_Task GenerateHostConfigTaskSpecRequestType + +func init() { + t["GenerateHostConfigTaskSpec_Task"] = reflect.TypeOf((*GenerateHostConfigTaskSpec_Task)(nil)).Elem() +} + +type GenerateHostConfigTaskSpec_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type GenerateHostProfileTaskListRequestType struct { + This ManagedObjectReference `xml:"_this"` + ConfigSpec HostConfigSpec `xml:"configSpec"` + Host ManagedObjectReference `xml:"host"` +} + +func init() { + t["GenerateHostProfileTaskListRequestType"] = reflect.TypeOf((*GenerateHostProfileTaskListRequestType)(nil)).Elem() +} + +type GenerateHostProfileTaskList_Task GenerateHostProfileTaskListRequestType + +func init() { + t["GenerateHostProfileTaskList_Task"] = reflect.TypeOf((*GenerateHostProfileTaskList_Task)(nil)).Elem() +} + +type GenerateHostProfileTaskList_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type GenerateKey GenerateKeyRequestType + +func init() { + t["GenerateKey"] = reflect.TypeOf((*GenerateKey)(nil)).Elem() +} + +type GenerateKeyRequestType struct { + This ManagedObjectReference `xml:"_this"` + KeyProvider *KeyProviderId `xml:"keyProvider,omitempty"` +} + +func init() { + t["GenerateKeyRequestType"] = reflect.TypeOf((*GenerateKeyRequestType)(nil)).Elem() +} + +type GenerateKeyResponse struct { + Returnval CryptoKeyResult `xml:"returnval"` +} + +type GenerateLogBundlesRequestType struct { + This ManagedObjectReference `xml:"_this"` + IncludeDefault bool `xml:"includeDefault"` + Host []ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["GenerateLogBundlesRequestType"] = reflect.TypeOf((*GenerateLogBundlesRequestType)(nil)).Elem() +} + +type GenerateLogBundles_Task GenerateLogBundlesRequestType + +func init() { + t["GenerateLogBundles_Task"] = reflect.TypeOf((*GenerateLogBundles_Task)(nil)).Elem() +} + +type GenerateLogBundles_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type GenerateSelfSignedClientCert GenerateSelfSignedClientCertRequestType + +func init() { + t["GenerateSelfSignedClientCert"] = reflect.TypeOf((*GenerateSelfSignedClientCert)(nil)).Elem() +} + +type GenerateSelfSignedClientCertRequestType struct { + This ManagedObjectReference `xml:"_this"` + Cluster KeyProviderId `xml:"cluster"` +} + +func init() { + t["GenerateSelfSignedClientCertRequestType"] = reflect.TypeOf((*GenerateSelfSignedClientCertRequestType)(nil)).Elem() +} + +type GenerateSelfSignedClientCertResponse struct { + Returnval string `xml:"returnval"` +} + +type GenericDrsFault struct { + VimFault + + HostFaults []LocalizedMethodFault `xml:"hostFaults,omitempty"` +} + +func init() { + t["GenericDrsFault"] = reflect.TypeOf((*GenericDrsFault)(nil)).Elem() +} + +type GenericDrsFaultFault GenericDrsFault + +func init() { + t["GenericDrsFaultFault"] = reflect.TypeOf((*GenericDrsFaultFault)(nil)).Elem() +} + +type GenericVmConfigFault struct { + VmConfigFault + + Reason string `xml:"reason"` +} + +func init() { + t["GenericVmConfigFault"] = reflect.TypeOf((*GenericVmConfigFault)(nil)).Elem() +} + +type GenericVmConfigFaultFault GenericVmConfigFault + +func init() { + t["GenericVmConfigFaultFault"] = reflect.TypeOf((*GenericVmConfigFaultFault)(nil)).Elem() +} + +type GetAlarm GetAlarmRequestType + +func init() { + t["GetAlarm"] = reflect.TypeOf((*GetAlarm)(nil)).Elem() +} + +type GetAlarmRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity *ManagedObjectReference `xml:"entity,omitempty"` +} + +func init() { + t["GetAlarmRequestType"] = reflect.TypeOf((*GetAlarmRequestType)(nil)).Elem() +} + +type GetAlarmResponse struct { + Returnval []ManagedObjectReference `xml:"returnval,omitempty"` +} + +type GetAlarmState GetAlarmStateRequestType + +func init() { + t["GetAlarmState"] = reflect.TypeOf((*GetAlarmState)(nil)).Elem() +} + +type GetAlarmStateRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity ManagedObjectReference `xml:"entity"` +} + +func init() { + t["GetAlarmStateRequestType"] = reflect.TypeOf((*GetAlarmStateRequestType)(nil)).Elem() +} + +type GetAlarmStateResponse struct { + Returnval []AlarmState `xml:"returnval,omitempty"` +} + +type GetCustomizationSpec GetCustomizationSpecRequestType + +func init() { + t["GetCustomizationSpec"] = reflect.TypeOf((*GetCustomizationSpec)(nil)).Elem() +} + +type GetCustomizationSpecRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` +} + +func init() { + t["GetCustomizationSpecRequestType"] = reflect.TypeOf((*GetCustomizationSpecRequestType)(nil)).Elem() +} + +type GetCustomizationSpecResponse struct { + Returnval CustomizationSpecItem `xml:"returnval"` +} + +type GetDefaultKmsCluster GetDefaultKmsClusterRequestType + +func init() { + t["GetDefaultKmsCluster"] = reflect.TypeOf((*GetDefaultKmsCluster)(nil)).Elem() +} + +type GetDefaultKmsClusterRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity *ManagedObjectReference `xml:"entity,omitempty"` + DefaultsToParent *bool `xml:"defaultsToParent"` +} + +func init() { + t["GetDefaultKmsClusterRequestType"] = reflect.TypeOf((*GetDefaultKmsClusterRequestType)(nil)).Elem() +} + +type GetDefaultKmsClusterResponse struct { + Returnval *KeyProviderId `xml:"returnval,omitempty"` +} + +type GetPublicKey GetPublicKeyRequestType + +func init() { + t["GetPublicKey"] = reflect.TypeOf((*GetPublicKey)(nil)).Elem() +} + +type GetPublicKeyRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["GetPublicKeyRequestType"] = reflect.TypeOf((*GetPublicKeyRequestType)(nil)).Elem() +} + +type GetPublicKeyResponse struct { + Returnval string `xml:"returnval"` +} + +type GetResourceUsage GetResourceUsageRequestType + +func init() { + t["GetResourceUsage"] = reflect.TypeOf((*GetResourceUsage)(nil)).Elem() +} + +type GetResourceUsageRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["GetResourceUsageRequestType"] = reflect.TypeOf((*GetResourceUsageRequestType)(nil)).Elem() +} + +type GetResourceUsageResponse struct { + Returnval ClusterResourceUsageSummary `xml:"returnval"` +} + +type GetSiteInfo GetSiteInfoRequestType + +func init() { + t["GetSiteInfo"] = reflect.TypeOf((*GetSiteInfo)(nil)).Elem() +} + +type GetSiteInfoRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["GetSiteInfoRequestType"] = reflect.TypeOf((*GetSiteInfoRequestType)(nil)).Elem() +} + +type GetSiteInfoResponse struct { + Returnval SiteInfo `xml:"returnval"` +} + +type GetVchaClusterHealth GetVchaClusterHealthRequestType + +func init() { + t["GetVchaClusterHealth"] = reflect.TypeOf((*GetVchaClusterHealth)(nil)).Elem() +} + +type GetVchaClusterHealthRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["GetVchaClusterHealthRequestType"] = reflect.TypeOf((*GetVchaClusterHealthRequestType)(nil)).Elem() +} + +type GetVchaClusterHealthResponse struct { + Returnval VchaClusterHealth `xml:"returnval"` +} + +type GetVsanObjExtAttrs GetVsanObjExtAttrsRequestType + +func init() { + t["GetVsanObjExtAttrs"] = reflect.TypeOf((*GetVsanObjExtAttrs)(nil)).Elem() +} + +type GetVsanObjExtAttrsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Uuids []string `xml:"uuids"` +} + +func init() { + t["GetVsanObjExtAttrsRequestType"] = reflect.TypeOf((*GetVsanObjExtAttrsRequestType)(nil)).Elem() +} + +type GetVsanObjExtAttrsResponse struct { + Returnval string `xml:"returnval"` +} + +type GhostDvsProxySwitchDetectedEvent struct { + HostEvent + + SwitchUuid []string `xml:"switchUuid"` +} + +func init() { + t["GhostDvsProxySwitchDetectedEvent"] = reflect.TypeOf((*GhostDvsProxySwitchDetectedEvent)(nil)).Elem() +} + +type GhostDvsProxySwitchRemovedEvent struct { + HostEvent + + SwitchUuid []string `xml:"switchUuid"` +} + +func init() { + t["GhostDvsProxySwitchRemovedEvent"] = reflect.TypeOf((*GhostDvsProxySwitchRemovedEvent)(nil)).Elem() +} + +type GlobalMessageChangedEvent struct { + SessionEvent + + Message string `xml:"message"` + PrevMessage string `xml:"prevMessage,omitempty"` +} + +func init() { + t["GlobalMessageChangedEvent"] = reflect.TypeOf((*GlobalMessageChangedEvent)(nil)).Elem() +} + +type GroupAlarmAction struct { + AlarmAction + + Action []BaseAlarmAction `xml:"action,typeattr"` +} + +func init() { + t["GroupAlarmAction"] = reflect.TypeOf((*GroupAlarmAction)(nil)).Elem() +} + +type GuestAliases struct { + DynamicData + + Base64Cert string `xml:"base64Cert"` + Aliases []GuestAuthAliasInfo `xml:"aliases"` +} + +func init() { + t["GuestAliases"] = reflect.TypeOf((*GuestAliases)(nil)).Elem() +} + +type GuestAuthAliasInfo struct { + DynamicData + + Subject BaseGuestAuthSubject `xml:"subject,typeattr"` + Comment string `xml:"comment"` +} + +func init() { + t["GuestAuthAliasInfo"] = reflect.TypeOf((*GuestAuthAliasInfo)(nil)).Elem() +} + +type GuestAuthAnySubject struct { + GuestAuthSubject +} + +func init() { + t["GuestAuthAnySubject"] = reflect.TypeOf((*GuestAuthAnySubject)(nil)).Elem() +} + +type GuestAuthNamedSubject struct { + GuestAuthSubject + + Name string `xml:"name"` +} + +func init() { + t["GuestAuthNamedSubject"] = reflect.TypeOf((*GuestAuthNamedSubject)(nil)).Elem() +} + +type GuestAuthSubject struct { + DynamicData +} + +func init() { + t["GuestAuthSubject"] = reflect.TypeOf((*GuestAuthSubject)(nil)).Elem() +} + +type GuestAuthentication struct { + DynamicData + + InteractiveSession bool `xml:"interactiveSession"` +} + +func init() { + t["GuestAuthentication"] = reflect.TypeOf((*GuestAuthentication)(nil)).Elem() +} + +type GuestAuthenticationChallenge struct { + GuestOperationsFault + + ServerChallenge BaseGuestAuthentication `xml:"serverChallenge,typeattr"` + SessionID int64 `xml:"sessionID"` +} + +func init() { + t["GuestAuthenticationChallenge"] = reflect.TypeOf((*GuestAuthenticationChallenge)(nil)).Elem() +} + +type GuestAuthenticationChallengeFault GuestAuthenticationChallenge + +func init() { + t["GuestAuthenticationChallengeFault"] = reflect.TypeOf((*GuestAuthenticationChallengeFault)(nil)).Elem() +} + +type GuestComponentsOutOfDate struct { + GuestOperationsFault +} + +func init() { + t["GuestComponentsOutOfDate"] = reflect.TypeOf((*GuestComponentsOutOfDate)(nil)).Elem() +} + +type GuestComponentsOutOfDateFault GuestComponentsOutOfDate + +func init() { + t["GuestComponentsOutOfDateFault"] = reflect.TypeOf((*GuestComponentsOutOfDateFault)(nil)).Elem() +} + +type GuestDiskInfo struct { + DynamicData + + DiskPath string `xml:"diskPath,omitempty"` + Capacity int64 `xml:"capacity,omitempty"` + FreeSpace int64 `xml:"freeSpace,omitempty"` + FilesystemType string `xml:"filesystemType,omitempty"` + Mappings []GuestInfoVirtualDiskMapping `xml:"mappings,omitempty"` +} + +func init() { + t["GuestDiskInfo"] = reflect.TypeOf((*GuestDiskInfo)(nil)).Elem() +} + +type GuestFileAttributes struct { + DynamicData + + ModificationTime *time.Time `xml:"modificationTime"` + AccessTime *time.Time `xml:"accessTime"` + SymlinkTarget string `xml:"symlinkTarget,omitempty"` +} + +func init() { + t["GuestFileAttributes"] = reflect.TypeOf((*GuestFileAttributes)(nil)).Elem() +} + +type GuestFileInfo struct { + DynamicData + + Path string `xml:"path"` + Type string `xml:"type"` + Size int64 `xml:"size"` + Attributes BaseGuestFileAttributes `xml:"attributes,typeattr"` +} + +func init() { + t["GuestFileInfo"] = reflect.TypeOf((*GuestFileInfo)(nil)).Elem() +} + +type GuestInfo struct { + DynamicData + + ToolsStatus VirtualMachineToolsStatus `xml:"toolsStatus,omitempty"` + ToolsVersionStatus string `xml:"toolsVersionStatus,omitempty"` + ToolsVersionStatus2 string `xml:"toolsVersionStatus2,omitempty"` + ToolsRunningStatus string `xml:"toolsRunningStatus,omitempty"` + ToolsVersion string `xml:"toolsVersion,omitempty"` + ToolsInstallType string `xml:"toolsInstallType,omitempty"` + GuestId string `xml:"guestId,omitempty"` + GuestFamily string `xml:"guestFamily,omitempty"` + GuestFullName string `xml:"guestFullName,omitempty"` + HostName string `xml:"hostName,omitempty"` + IpAddress string `xml:"ipAddress,omitempty"` + Net []GuestNicInfo `xml:"net,omitempty"` + IpStack []GuestStackInfo `xml:"ipStack,omitempty"` + Disk []GuestDiskInfo `xml:"disk,omitempty"` + Screen *GuestScreenInfo `xml:"screen,omitempty"` + GuestState string `xml:"guestState"` + AppHeartbeatStatus string `xml:"appHeartbeatStatus,omitempty"` + GuestKernelCrashed *bool `xml:"guestKernelCrashed"` + AppState string `xml:"appState,omitempty"` + GuestOperationsReady *bool `xml:"guestOperationsReady"` + InteractiveGuestOperationsReady *bool `xml:"interactiveGuestOperationsReady"` + GuestStateChangeSupported *bool `xml:"guestStateChangeSupported"` + GenerationInfo []GuestInfoNamespaceGenerationInfo `xml:"generationInfo,omitempty"` + HwVersion string `xml:"hwVersion,omitempty"` +} + +func init() { + t["GuestInfo"] = reflect.TypeOf((*GuestInfo)(nil)).Elem() +} + +type GuestInfoNamespaceGenerationInfo struct { + DynamicData + + Key string `xml:"key"` + GenerationNo int32 `xml:"generationNo"` +} + +func init() { + t["GuestInfoNamespaceGenerationInfo"] = reflect.TypeOf((*GuestInfoNamespaceGenerationInfo)(nil)).Elem() +} + +type GuestInfoVirtualDiskMapping struct { + DynamicData + + Key int32 `xml:"key"` +} + +func init() { + t["GuestInfoVirtualDiskMapping"] = reflect.TypeOf((*GuestInfoVirtualDiskMapping)(nil)).Elem() +} + +type GuestListFileInfo struct { + DynamicData + + Files []GuestFileInfo `xml:"files,omitempty"` + Remaining int32 `xml:"remaining"` +} + +func init() { + t["GuestListFileInfo"] = reflect.TypeOf((*GuestListFileInfo)(nil)).Elem() +} + +type GuestMappedAliases struct { + DynamicData + + Base64Cert string `xml:"base64Cert"` + Username string `xml:"username"` + Subjects []BaseGuestAuthSubject `xml:"subjects,typeattr"` +} + +func init() { + t["GuestMappedAliases"] = reflect.TypeOf((*GuestMappedAliases)(nil)).Elem() +} + +type GuestMultipleMappings struct { + GuestOperationsFault +} + +func init() { + t["GuestMultipleMappings"] = reflect.TypeOf((*GuestMultipleMappings)(nil)).Elem() +} + +type GuestMultipleMappingsFault GuestMultipleMappings + +func init() { + t["GuestMultipleMappingsFault"] = reflect.TypeOf((*GuestMultipleMappingsFault)(nil)).Elem() +} + +type GuestNicInfo struct { + DynamicData + + Network string `xml:"network,omitempty"` + IpAddress []string `xml:"ipAddress,omitempty"` + MacAddress string `xml:"macAddress,omitempty"` + Connected bool `xml:"connected"` + DeviceConfigId int32 `xml:"deviceConfigId"` + DnsConfig *NetDnsConfigInfo `xml:"dnsConfig,omitempty"` + IpConfig *NetIpConfigInfo `xml:"ipConfig,omitempty"` + NetBIOSConfig BaseNetBIOSConfigInfo `xml:"netBIOSConfig,omitempty,typeattr"` +} + +func init() { + t["GuestNicInfo"] = reflect.TypeOf((*GuestNicInfo)(nil)).Elem() +} + +type GuestOperationsFault struct { + VimFault +} + +func init() { + t["GuestOperationsFault"] = reflect.TypeOf((*GuestOperationsFault)(nil)).Elem() +} + +type GuestOperationsFaultFault BaseGuestOperationsFault + +func init() { + t["GuestOperationsFaultFault"] = reflect.TypeOf((*GuestOperationsFaultFault)(nil)).Elem() +} + +type GuestOperationsUnavailable struct { + GuestOperationsFault +} + +func init() { + t["GuestOperationsUnavailable"] = reflect.TypeOf((*GuestOperationsUnavailable)(nil)).Elem() +} + +type GuestOperationsUnavailableFault GuestOperationsUnavailable + +func init() { + t["GuestOperationsUnavailableFault"] = reflect.TypeOf((*GuestOperationsUnavailableFault)(nil)).Elem() +} + +type GuestOsDescriptor struct { + DynamicData + + Id string `xml:"id"` + Family string `xml:"family"` + FullName string `xml:"fullName"` + SupportedMaxCPUs int32 `xml:"supportedMaxCPUs"` + NumSupportedPhysicalSockets int32 `xml:"numSupportedPhysicalSockets,omitempty"` + NumSupportedCoresPerSocket int32 `xml:"numSupportedCoresPerSocket,omitempty"` + SupportedMinMemMB int32 `xml:"supportedMinMemMB"` + SupportedMaxMemMB int32 `xml:"supportedMaxMemMB"` + RecommendedMemMB int32 `xml:"recommendedMemMB"` + RecommendedColorDepth int32 `xml:"recommendedColorDepth"` + SupportedDiskControllerList []string `xml:"supportedDiskControllerList"` + RecommendedSCSIController string `xml:"recommendedSCSIController,omitempty"` + RecommendedDiskController string `xml:"recommendedDiskController"` + SupportedNumDisks int32 `xml:"supportedNumDisks"` + RecommendedDiskSizeMB int32 `xml:"recommendedDiskSizeMB"` + RecommendedCdromController string `xml:"recommendedCdromController,omitempty"` + SupportedEthernetCard []string `xml:"supportedEthernetCard"` + RecommendedEthernetCard string `xml:"recommendedEthernetCard,omitempty"` + SupportsSlaveDisk *bool `xml:"supportsSlaveDisk"` + CpuFeatureMask []HostCpuIdInfo `xml:"cpuFeatureMask,omitempty"` + SmcRequired *bool `xml:"smcRequired"` + SupportsWakeOnLan bool `xml:"supportsWakeOnLan"` + SupportsVMI *bool `xml:"supportsVMI"` + SupportsMemoryHotAdd *bool `xml:"supportsMemoryHotAdd"` + SupportsCpuHotAdd *bool `xml:"supportsCpuHotAdd"` + SupportsCpuHotRemove *bool `xml:"supportsCpuHotRemove"` + SupportedFirmware []string `xml:"supportedFirmware,omitempty"` + RecommendedFirmware string `xml:"recommendedFirmware,omitempty"` + SupportedUSBControllerList []string `xml:"supportedUSBControllerList,omitempty"` + RecommendedUSBController string `xml:"recommendedUSBController,omitempty"` + Supports3D *bool `xml:"supports3D"` + Recommended3D *bool `xml:"recommended3D"` + SmcRecommended *bool `xml:"smcRecommended"` + Ich7mRecommended *bool `xml:"ich7mRecommended"` + UsbRecommended *bool `xml:"usbRecommended"` + SupportLevel string `xml:"supportLevel,omitempty"` + SupportedForCreate *bool `xml:"supportedForCreate"` + VRAMSizeInKB *IntOption `xml:"vRAMSizeInKB,omitempty"` + NumSupportedFloppyDevices int32 `xml:"numSupportedFloppyDevices,omitempty"` + WakeOnLanEthernetCard []string `xml:"wakeOnLanEthernetCard,omitempty"` + SupportsPvscsiControllerForBoot *bool `xml:"supportsPvscsiControllerForBoot"` + DiskUuidEnabled *bool `xml:"diskUuidEnabled"` + SupportsHotPlugPCI *bool `xml:"supportsHotPlugPCI"` + SupportsSecureBoot *bool `xml:"supportsSecureBoot"` + DefaultSecureBoot *bool `xml:"defaultSecureBoot"` + PersistentMemorySupported *bool `xml:"persistentMemorySupported"` + SupportedMinPersistentMemoryMB int64 `xml:"supportedMinPersistentMemoryMB,omitempty"` + SupportedMaxPersistentMemoryMB int64 `xml:"supportedMaxPersistentMemoryMB,omitempty"` + RecommendedPersistentMemoryMB int64 `xml:"recommendedPersistentMemoryMB,omitempty"` + PersistentMemoryHotAddSupported *bool `xml:"persistentMemoryHotAddSupported"` + PersistentMemoryHotRemoveSupported *bool `xml:"persistentMemoryHotRemoveSupported"` + PersistentMemoryColdGrowthSupported *bool `xml:"persistentMemoryColdGrowthSupported"` + PersistentMemoryColdGrowthGranularityMB int64 `xml:"persistentMemoryColdGrowthGranularityMB,omitempty"` + PersistentMemoryHotGrowthSupported *bool `xml:"persistentMemoryHotGrowthSupported"` + PersistentMemoryHotGrowthGranularityMB int64 `xml:"persistentMemoryHotGrowthGranularityMB,omitempty"` + NumRecommendedPhysicalSockets int32 `xml:"numRecommendedPhysicalSockets,omitempty"` + NumRecommendedCoresPerSocket int32 `xml:"numRecommendedCoresPerSocket,omitempty"` + VvtdSupported *BoolOption `xml:"vvtdSupported,omitempty"` + VbsSupported *BoolOption `xml:"vbsSupported,omitempty"` + VsgxSupported *BoolOption `xml:"vsgxSupported,omitempty"` + SupportsTPM20 *bool `xml:"supportsTPM20"` + VwdtSupported *bool `xml:"vwdtSupported"` +} + +func init() { + t["GuestOsDescriptor"] = reflect.TypeOf((*GuestOsDescriptor)(nil)).Elem() +} + +type GuestPermissionDenied struct { + GuestOperationsFault +} + +func init() { + t["GuestPermissionDenied"] = reflect.TypeOf((*GuestPermissionDenied)(nil)).Elem() +} + +type GuestPermissionDeniedFault GuestPermissionDenied + +func init() { + t["GuestPermissionDeniedFault"] = reflect.TypeOf((*GuestPermissionDeniedFault)(nil)).Elem() +} + +type GuestPosixFileAttributes struct { + GuestFileAttributes + + OwnerId *int32 `xml:"ownerId"` + GroupId *int32 `xml:"groupId"` + Permissions int64 `xml:"permissions,omitempty"` +} + +func init() { + t["GuestPosixFileAttributes"] = reflect.TypeOf((*GuestPosixFileAttributes)(nil)).Elem() +} + +type GuestProcessInfo struct { + DynamicData + + Name string `xml:"name"` + Pid int64 `xml:"pid"` + Owner string `xml:"owner"` + CmdLine string `xml:"cmdLine"` + StartTime time.Time `xml:"startTime"` + EndTime *time.Time `xml:"endTime"` + ExitCode int32 `xml:"exitCode,omitempty"` +} + +func init() { + t["GuestProcessInfo"] = reflect.TypeOf((*GuestProcessInfo)(nil)).Elem() +} + +type GuestProcessNotFound struct { + GuestOperationsFault + + Pid int64 `xml:"pid"` +} + +func init() { + t["GuestProcessNotFound"] = reflect.TypeOf((*GuestProcessNotFound)(nil)).Elem() +} + +type GuestProcessNotFoundFault GuestProcessNotFound + +func init() { + t["GuestProcessNotFoundFault"] = reflect.TypeOf((*GuestProcessNotFoundFault)(nil)).Elem() +} + +type GuestProgramSpec struct { + DynamicData + + ProgramPath string `xml:"programPath"` + Arguments string `xml:"arguments"` + WorkingDirectory string `xml:"workingDirectory,omitempty"` + EnvVariables []string `xml:"envVariables,omitempty"` +} + +func init() { + t["GuestProgramSpec"] = reflect.TypeOf((*GuestProgramSpec)(nil)).Elem() +} + +type GuestRegKeyNameSpec struct { + DynamicData + + RegistryPath string `xml:"registryPath"` + WowBitness string `xml:"wowBitness"` +} + +func init() { + t["GuestRegKeyNameSpec"] = reflect.TypeOf((*GuestRegKeyNameSpec)(nil)).Elem() +} + +type GuestRegKeyRecordSpec struct { + DynamicData + + Key GuestRegKeySpec `xml:"key"` + Fault *LocalizedMethodFault `xml:"fault,omitempty"` +} + +func init() { + t["GuestRegKeyRecordSpec"] = reflect.TypeOf((*GuestRegKeyRecordSpec)(nil)).Elem() +} + +type GuestRegKeySpec struct { + DynamicData + + KeyName GuestRegKeyNameSpec `xml:"keyName"` + ClassType string `xml:"classType"` + LastWritten time.Time `xml:"lastWritten"` +} + +func init() { + t["GuestRegKeySpec"] = reflect.TypeOf((*GuestRegKeySpec)(nil)).Elem() +} + +type GuestRegValueBinarySpec struct { + GuestRegValueDataSpec + + Value []byte `xml:"value,omitempty"` +} + +func init() { + t["GuestRegValueBinarySpec"] = reflect.TypeOf((*GuestRegValueBinarySpec)(nil)).Elem() +} + +type GuestRegValueDataSpec struct { + DynamicData +} + +func init() { + t["GuestRegValueDataSpec"] = reflect.TypeOf((*GuestRegValueDataSpec)(nil)).Elem() +} + +type GuestRegValueDwordSpec struct { + GuestRegValueDataSpec + + Value int32 `xml:"value"` +} + +func init() { + t["GuestRegValueDwordSpec"] = reflect.TypeOf((*GuestRegValueDwordSpec)(nil)).Elem() +} + +type GuestRegValueExpandStringSpec struct { + GuestRegValueDataSpec + + Value string `xml:"value,omitempty"` +} + +func init() { + t["GuestRegValueExpandStringSpec"] = reflect.TypeOf((*GuestRegValueExpandStringSpec)(nil)).Elem() +} + +type GuestRegValueMultiStringSpec struct { + GuestRegValueDataSpec + + Value []string `xml:"value,omitempty"` +} + +func init() { + t["GuestRegValueMultiStringSpec"] = reflect.TypeOf((*GuestRegValueMultiStringSpec)(nil)).Elem() +} + +type GuestRegValueNameSpec struct { + DynamicData + + KeyName GuestRegKeyNameSpec `xml:"keyName"` + Name string `xml:"name"` +} + +func init() { + t["GuestRegValueNameSpec"] = reflect.TypeOf((*GuestRegValueNameSpec)(nil)).Elem() +} + +type GuestRegValueQwordSpec struct { + GuestRegValueDataSpec + + Value int64 `xml:"value"` +} + +func init() { + t["GuestRegValueQwordSpec"] = reflect.TypeOf((*GuestRegValueQwordSpec)(nil)).Elem() +} + +type GuestRegValueSpec struct { + DynamicData + + Name GuestRegValueNameSpec `xml:"name"` + Data BaseGuestRegValueDataSpec `xml:"data,typeattr"` +} + +func init() { + t["GuestRegValueSpec"] = reflect.TypeOf((*GuestRegValueSpec)(nil)).Elem() +} + +type GuestRegValueStringSpec struct { + GuestRegValueDataSpec + + Value string `xml:"value,omitempty"` +} + +func init() { + t["GuestRegValueStringSpec"] = reflect.TypeOf((*GuestRegValueStringSpec)(nil)).Elem() +} + +type GuestRegistryFault struct { + GuestOperationsFault + + WindowsSystemErrorCode int64 `xml:"windowsSystemErrorCode"` +} + +func init() { + t["GuestRegistryFault"] = reflect.TypeOf((*GuestRegistryFault)(nil)).Elem() +} + +type GuestRegistryFaultFault BaseGuestRegistryFault + +func init() { + t["GuestRegistryFaultFault"] = reflect.TypeOf((*GuestRegistryFaultFault)(nil)).Elem() +} + +type GuestRegistryKeyAlreadyExists struct { + GuestRegistryKeyFault +} + +func init() { + t["GuestRegistryKeyAlreadyExists"] = reflect.TypeOf((*GuestRegistryKeyAlreadyExists)(nil)).Elem() +} + +type GuestRegistryKeyAlreadyExistsFault GuestRegistryKeyAlreadyExists + +func init() { + t["GuestRegistryKeyAlreadyExistsFault"] = reflect.TypeOf((*GuestRegistryKeyAlreadyExistsFault)(nil)).Elem() +} + +type GuestRegistryKeyFault struct { + GuestRegistryFault + + KeyName string `xml:"keyName"` +} + +func init() { + t["GuestRegistryKeyFault"] = reflect.TypeOf((*GuestRegistryKeyFault)(nil)).Elem() +} + +type GuestRegistryKeyFaultFault BaseGuestRegistryKeyFault + +func init() { + t["GuestRegistryKeyFaultFault"] = reflect.TypeOf((*GuestRegistryKeyFaultFault)(nil)).Elem() +} + +type GuestRegistryKeyHasSubkeys struct { + GuestRegistryKeyFault +} + +func init() { + t["GuestRegistryKeyHasSubkeys"] = reflect.TypeOf((*GuestRegistryKeyHasSubkeys)(nil)).Elem() +} + +type GuestRegistryKeyHasSubkeysFault GuestRegistryKeyHasSubkeys + +func init() { + t["GuestRegistryKeyHasSubkeysFault"] = reflect.TypeOf((*GuestRegistryKeyHasSubkeysFault)(nil)).Elem() +} + +type GuestRegistryKeyInvalid struct { + GuestRegistryKeyFault +} + +func init() { + t["GuestRegistryKeyInvalid"] = reflect.TypeOf((*GuestRegistryKeyInvalid)(nil)).Elem() +} + +type GuestRegistryKeyInvalidFault GuestRegistryKeyInvalid + +func init() { + t["GuestRegistryKeyInvalidFault"] = reflect.TypeOf((*GuestRegistryKeyInvalidFault)(nil)).Elem() +} + +type GuestRegistryKeyParentVolatile struct { + GuestRegistryKeyFault +} + +func init() { + t["GuestRegistryKeyParentVolatile"] = reflect.TypeOf((*GuestRegistryKeyParentVolatile)(nil)).Elem() +} + +type GuestRegistryKeyParentVolatileFault GuestRegistryKeyParentVolatile + +func init() { + t["GuestRegistryKeyParentVolatileFault"] = reflect.TypeOf((*GuestRegistryKeyParentVolatileFault)(nil)).Elem() +} + +type GuestRegistryValueFault struct { + GuestRegistryFault + + KeyName string `xml:"keyName"` + ValueName string `xml:"valueName"` +} + +func init() { + t["GuestRegistryValueFault"] = reflect.TypeOf((*GuestRegistryValueFault)(nil)).Elem() +} + +type GuestRegistryValueFaultFault BaseGuestRegistryValueFault + +func init() { + t["GuestRegistryValueFaultFault"] = reflect.TypeOf((*GuestRegistryValueFaultFault)(nil)).Elem() +} + +type GuestRegistryValueNotFound struct { + GuestRegistryValueFault +} + +func init() { + t["GuestRegistryValueNotFound"] = reflect.TypeOf((*GuestRegistryValueNotFound)(nil)).Elem() +} + +type GuestRegistryValueNotFoundFault GuestRegistryValueNotFound + +func init() { + t["GuestRegistryValueNotFoundFault"] = reflect.TypeOf((*GuestRegistryValueNotFoundFault)(nil)).Elem() +} + +type GuestScreenInfo struct { + DynamicData + + Width int32 `xml:"width"` + Height int32 `xml:"height"` +} + +func init() { + t["GuestScreenInfo"] = reflect.TypeOf((*GuestScreenInfo)(nil)).Elem() +} + +type GuestStackInfo struct { + DynamicData + + DnsConfig *NetDnsConfigInfo `xml:"dnsConfig,omitempty"` + IpRouteConfig *NetIpRouteConfigInfo `xml:"ipRouteConfig,omitempty"` + IpStackConfig []KeyValue `xml:"ipStackConfig,omitempty"` + DhcpConfig *NetDhcpConfigInfo `xml:"dhcpConfig,omitempty"` +} + +func init() { + t["GuestStackInfo"] = reflect.TypeOf((*GuestStackInfo)(nil)).Elem() +} + +type GuestWindowsFileAttributes struct { + GuestFileAttributes + + Hidden *bool `xml:"hidden"` + ReadOnly *bool `xml:"readOnly"` + CreateTime *time.Time `xml:"createTime"` +} + +func init() { + t["GuestWindowsFileAttributes"] = reflect.TypeOf((*GuestWindowsFileAttributes)(nil)).Elem() +} + +type GuestWindowsProgramSpec struct { + GuestProgramSpec + + StartMinimized bool `xml:"startMinimized"` +} + +func init() { + t["GuestWindowsProgramSpec"] = reflect.TypeOf((*GuestWindowsProgramSpec)(nil)).Elem() +} + +type HAErrorsAtDest struct { + MigrationFault +} + +func init() { + t["HAErrorsAtDest"] = reflect.TypeOf((*HAErrorsAtDest)(nil)).Elem() +} + +type HAErrorsAtDestFault HAErrorsAtDest + +func init() { + t["HAErrorsAtDestFault"] = reflect.TypeOf((*HAErrorsAtDestFault)(nil)).Elem() +} + +type HasMonitoredEntity HasMonitoredEntityRequestType + +func init() { + t["HasMonitoredEntity"] = reflect.TypeOf((*HasMonitoredEntity)(nil)).Elem() +} + +type HasMonitoredEntityRequestType struct { + This ManagedObjectReference `xml:"_this"` + ProviderId string `xml:"providerId"` + Entity ManagedObjectReference `xml:"entity"` +} + +func init() { + t["HasMonitoredEntityRequestType"] = reflect.TypeOf((*HasMonitoredEntityRequestType)(nil)).Elem() +} + +type HasMonitoredEntityResponse struct { + Returnval bool `xml:"returnval"` +} + +type HasPrivilegeOnEntities HasPrivilegeOnEntitiesRequestType + +func init() { + t["HasPrivilegeOnEntities"] = reflect.TypeOf((*HasPrivilegeOnEntities)(nil)).Elem() +} + +type HasPrivilegeOnEntitiesRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity []ManagedObjectReference `xml:"entity"` + SessionId string `xml:"sessionId"` + PrivId []string `xml:"privId,omitempty"` +} + +func init() { + t["HasPrivilegeOnEntitiesRequestType"] = reflect.TypeOf((*HasPrivilegeOnEntitiesRequestType)(nil)).Elem() +} + +type HasPrivilegeOnEntitiesResponse struct { + Returnval []EntityPrivilege `xml:"returnval,omitempty"` +} + +type HasPrivilegeOnEntity HasPrivilegeOnEntityRequestType + +func init() { + t["HasPrivilegeOnEntity"] = reflect.TypeOf((*HasPrivilegeOnEntity)(nil)).Elem() +} + +type HasPrivilegeOnEntityRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity ManagedObjectReference `xml:"entity"` + SessionId string `xml:"sessionId"` + PrivId []string `xml:"privId,omitempty"` +} + +func init() { + t["HasPrivilegeOnEntityRequestType"] = reflect.TypeOf((*HasPrivilegeOnEntityRequestType)(nil)).Elem() +} + +type HasPrivilegeOnEntityResponse struct { + Returnval []bool `xml:"returnval,omitempty"` +} + +type HasProvider HasProviderRequestType + +func init() { + t["HasProvider"] = reflect.TypeOf((*HasProvider)(nil)).Elem() +} + +type HasProviderRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id string `xml:"id"` +} + +func init() { + t["HasProviderRequestType"] = reflect.TypeOf((*HasProviderRequestType)(nil)).Elem() +} + +type HasProviderResponse struct { + Returnval bool `xml:"returnval"` +} + +type HasUserPrivilegeOnEntities HasUserPrivilegeOnEntitiesRequestType + +func init() { + t["HasUserPrivilegeOnEntities"] = reflect.TypeOf((*HasUserPrivilegeOnEntities)(nil)).Elem() +} + +type HasUserPrivilegeOnEntitiesRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entities []ManagedObjectReference `xml:"entities"` + UserName string `xml:"userName"` + PrivId []string `xml:"privId,omitempty"` +} + +func init() { + t["HasUserPrivilegeOnEntitiesRequestType"] = reflect.TypeOf((*HasUserPrivilegeOnEntitiesRequestType)(nil)).Elem() +} + +type HasUserPrivilegeOnEntitiesResponse struct { + Returnval []EntityPrivilege `xml:"returnval,omitempty"` +} + +type HbrDiskMigrationAction struct { + ClusterAction + + CollectionId string `xml:"collectionId"` + CollectionName string `xml:"collectionName"` + DiskIds []string `xml:"diskIds"` + Source ManagedObjectReference `xml:"source"` + Destination ManagedObjectReference `xml:"destination"` + SizeTransferred int64 `xml:"sizeTransferred"` + SpaceUtilSrcBefore float32 `xml:"spaceUtilSrcBefore,omitempty"` + SpaceUtilDstBefore float32 `xml:"spaceUtilDstBefore,omitempty"` + SpaceUtilSrcAfter float32 `xml:"spaceUtilSrcAfter,omitempty"` + SpaceUtilDstAfter float32 `xml:"spaceUtilDstAfter,omitempty"` + IoLatencySrcBefore float32 `xml:"ioLatencySrcBefore,omitempty"` + IoLatencyDstBefore float32 `xml:"ioLatencyDstBefore,omitempty"` +} + +func init() { + t["HbrDiskMigrationAction"] = reflect.TypeOf((*HbrDiskMigrationAction)(nil)).Elem() +} + +type HbrManagerReplicationVmInfo struct { + DynamicData + + State string `xml:"state"` + ProgressInfo *ReplicationVmProgressInfo `xml:"progressInfo,omitempty"` + ImageId string `xml:"imageId,omitempty"` + LastError *LocalizedMethodFault `xml:"lastError,omitempty"` +} + +func init() { + t["HbrManagerReplicationVmInfo"] = reflect.TypeOf((*HbrManagerReplicationVmInfo)(nil)).Elem() +} + +type HbrManagerVmReplicationCapability struct { + DynamicData + + Vm ManagedObjectReference `xml:"vm"` + SupportedQuiesceMode string `xml:"supportedQuiesceMode"` + CompressionSupported bool `xml:"compressionSupported"` + MaxSupportedSourceDiskCapacity int64 `xml:"maxSupportedSourceDiskCapacity"` + MinRpo int64 `xml:"minRpo,omitempty"` + Fault *LocalizedMethodFault `xml:"fault,omitempty"` +} + +func init() { + t["HbrManagerVmReplicationCapability"] = reflect.TypeOf((*HbrManagerVmReplicationCapability)(nil)).Elem() +} + +type HealthStatusChangedEvent struct { + Event + + ComponentId string `xml:"componentId"` + OldStatus string `xml:"oldStatus"` + NewStatus string `xml:"newStatus"` + ComponentName string `xml:"componentName"` + ServiceId string `xml:"serviceId,omitempty"` +} + +func init() { + t["HealthStatusChangedEvent"] = reflect.TypeOf((*HealthStatusChangedEvent)(nil)).Elem() +} + +type HealthSystemRuntime struct { + DynamicData + + SystemHealthInfo *HostSystemHealthInfo `xml:"systemHealthInfo,omitempty"` + HardwareStatusInfo *HostHardwareStatusInfo `xml:"hardwareStatusInfo,omitempty"` +} + +func init() { + t["HealthSystemRuntime"] = reflect.TypeOf((*HealthSystemRuntime)(nil)).Elem() +} + +type HealthUpdate struct { + DynamicData + + Entity ManagedObjectReference `xml:"entity"` + HealthUpdateInfoId string `xml:"healthUpdateInfoId"` + Id string `xml:"id"` + Status ManagedEntityStatus `xml:"status"` + Remediation string `xml:"remediation"` +} + +func init() { + t["HealthUpdate"] = reflect.TypeOf((*HealthUpdate)(nil)).Elem() +} + +type HealthUpdateInfo struct { + DynamicData + + Id string `xml:"id"` + ComponentType string `xml:"componentType"` + Description string `xml:"description"` +} + +func init() { + t["HealthUpdateInfo"] = reflect.TypeOf((*HealthUpdateInfo)(nil)).Elem() +} + +type HeterogenousHostsBlockingEVC struct { + EVCConfigFault +} + +func init() { + t["HeterogenousHostsBlockingEVC"] = reflect.TypeOf((*HeterogenousHostsBlockingEVC)(nil)).Elem() +} + +type HeterogenousHostsBlockingEVCFault HeterogenousHostsBlockingEVC + +func init() { + t["HeterogenousHostsBlockingEVCFault"] = reflect.TypeOf((*HeterogenousHostsBlockingEVCFault)(nil)).Elem() +} + +type HostAccessControlEntry struct { + DynamicData + + Principal string `xml:"principal"` + Group bool `xml:"group"` + AccessMode HostAccessMode `xml:"accessMode"` +} + +func init() { + t["HostAccessControlEntry"] = reflect.TypeOf((*HostAccessControlEntry)(nil)).Elem() +} + +type HostAccessRestrictedToManagementServer struct { + NotSupported + + ManagementServer string `xml:"managementServer"` +} + +func init() { + t["HostAccessRestrictedToManagementServer"] = reflect.TypeOf((*HostAccessRestrictedToManagementServer)(nil)).Elem() +} + +type HostAccessRestrictedToManagementServerFault HostAccessRestrictedToManagementServer + +func init() { + t["HostAccessRestrictedToManagementServerFault"] = reflect.TypeOf((*HostAccessRestrictedToManagementServerFault)(nil)).Elem() +} + +type HostAccountSpec struct { + DynamicData + + Id string `xml:"id"` + Password string `xml:"password,omitempty"` + Description string `xml:"description,omitempty"` +} + +func init() { + t["HostAccountSpec"] = reflect.TypeOf((*HostAccountSpec)(nil)).Elem() +} + +type HostActiveDirectory struct { + DynamicData + + ChangeOperation string `xml:"changeOperation"` + Spec *HostActiveDirectorySpec `xml:"spec,omitempty"` +} + +func init() { + t["HostActiveDirectory"] = reflect.TypeOf((*HostActiveDirectory)(nil)).Elem() +} + +type HostActiveDirectoryInfo struct { + HostDirectoryStoreInfo + + JoinedDomain string `xml:"joinedDomain,omitempty"` + TrustedDomain []string `xml:"trustedDomain,omitempty"` + DomainMembershipStatus string `xml:"domainMembershipStatus,omitempty"` + SmartCardAuthenticationEnabled *bool `xml:"smartCardAuthenticationEnabled"` +} + +func init() { + t["HostActiveDirectoryInfo"] = reflect.TypeOf((*HostActiveDirectoryInfo)(nil)).Elem() +} + +type HostActiveDirectorySpec struct { + DynamicData + + DomainName string `xml:"domainName,omitempty"` + UserName string `xml:"userName,omitempty"` + Password string `xml:"password,omitempty"` + CamServer string `xml:"camServer,omitempty"` + Thumbprint string `xml:"thumbprint,omitempty"` + SmartCardAuthenticationEnabled *bool `xml:"smartCardAuthenticationEnabled"` + SmartCardTrustAnchors []string `xml:"smartCardTrustAnchors,omitempty"` +} + +func init() { + t["HostActiveDirectorySpec"] = reflect.TypeOf((*HostActiveDirectorySpec)(nil)).Elem() +} + +type HostAddFailedEvent struct { + HostEvent + + Hostname string `xml:"hostname"` +} + +func init() { + t["HostAddFailedEvent"] = reflect.TypeOf((*HostAddFailedEvent)(nil)).Elem() +} + +type HostAddedEvent struct { + HostEvent +} + +func init() { + t["HostAddedEvent"] = reflect.TypeOf((*HostAddedEvent)(nil)).Elem() +} + +type HostAdminDisableEvent struct { + HostEvent +} + +func init() { + t["HostAdminDisableEvent"] = reflect.TypeOf((*HostAdminDisableEvent)(nil)).Elem() +} + +type HostAdminEnableEvent struct { + HostEvent +} + +func init() { + t["HostAdminEnableEvent"] = reflect.TypeOf((*HostAdminEnableEvent)(nil)).Elem() +} + +type HostApplyProfile struct { + ApplyProfile + + Memory *HostMemoryProfile `xml:"memory,omitempty"` + Storage *StorageProfile `xml:"storage,omitempty"` + Network *NetworkProfile `xml:"network,omitempty"` + Datetime *DateTimeProfile `xml:"datetime,omitempty"` + Firewall *FirewallProfile `xml:"firewall,omitempty"` + Security *SecurityProfile `xml:"security,omitempty"` + Service []ServiceProfile `xml:"service,omitempty"` + Option []OptionProfile `xml:"option,omitempty"` + UserAccount []UserProfile `xml:"userAccount,omitempty"` + UsergroupAccount []UserGroupProfile `xml:"usergroupAccount,omitempty"` + Authentication *AuthenticationProfile `xml:"authentication,omitempty"` +} + +func init() { + t["HostApplyProfile"] = reflect.TypeOf((*HostApplyProfile)(nil)).Elem() +} + +type HostAssignableHardwareBinding struct { + DynamicData + + InstanceId string `xml:"instanceId"` + Vm ManagedObjectReference `xml:"vm"` +} + +func init() { + t["HostAssignableHardwareBinding"] = reflect.TypeOf((*HostAssignableHardwareBinding)(nil)).Elem() +} + +type HostAssignableHardwareConfig struct { + DynamicData + + AttributeOverride []HostAssignableHardwareConfigAttributeOverride `xml:"attributeOverride,omitempty"` +} + +func init() { + t["HostAssignableHardwareConfig"] = reflect.TypeOf((*HostAssignableHardwareConfig)(nil)).Elem() +} + +type HostAssignableHardwareConfigAttributeOverride struct { + DynamicData + + InstanceId string `xml:"instanceId"` + Name string `xml:"name"` + Value AnyType `xml:"value,typeattr"` +} + +func init() { + t["HostAssignableHardwareConfigAttributeOverride"] = reflect.TypeOf((*HostAssignableHardwareConfigAttributeOverride)(nil)).Elem() +} + +type HostAuthenticationManagerInfo struct { + DynamicData + + AuthConfig []BaseHostAuthenticationStoreInfo `xml:"authConfig,typeattr"` +} + +func init() { + t["HostAuthenticationManagerInfo"] = reflect.TypeOf((*HostAuthenticationManagerInfo)(nil)).Elem() +} + +type HostAuthenticationStoreInfo struct { + DynamicData + + Enabled bool `xml:"enabled"` +} + +func init() { + t["HostAuthenticationStoreInfo"] = reflect.TypeOf((*HostAuthenticationStoreInfo)(nil)).Elem() +} + +type HostAutoStartManagerConfig struct { + DynamicData + + Defaults *AutoStartDefaults `xml:"defaults,omitempty"` + PowerInfo []AutoStartPowerInfo `xml:"powerInfo,omitempty"` +} + +func init() { + t["HostAutoStartManagerConfig"] = reflect.TypeOf((*HostAutoStartManagerConfig)(nil)).Elem() +} + +type HostBIOSInfo struct { + DynamicData + + BiosVersion string `xml:"biosVersion,omitempty"` + ReleaseDate *time.Time `xml:"releaseDate"` + Vendor string `xml:"vendor,omitempty"` + MajorRelease int32 `xml:"majorRelease,omitempty"` + MinorRelease int32 `xml:"minorRelease,omitempty"` + FirmwareMajorRelease int32 `xml:"firmwareMajorRelease,omitempty"` + FirmwareMinorRelease int32 `xml:"firmwareMinorRelease,omitempty"` +} + +func init() { + t["HostBIOSInfo"] = reflect.TypeOf((*HostBIOSInfo)(nil)).Elem() +} + +type HostBlockAdapterTargetTransport struct { + HostTargetTransport +} + +func init() { + t["HostBlockAdapterTargetTransport"] = reflect.TypeOf((*HostBlockAdapterTargetTransport)(nil)).Elem() +} + +type HostBlockHba struct { + HostHostBusAdapter +} + +func init() { + t["HostBlockHba"] = reflect.TypeOf((*HostBlockHba)(nil)).Elem() +} + +type HostBootDevice struct { + DynamicData + + Key string `xml:"key"` + Description string `xml:"description"` +} + +func init() { + t["HostBootDevice"] = reflect.TypeOf((*HostBootDevice)(nil)).Elem() +} + +type HostBootDeviceInfo struct { + DynamicData + + BootDevices []HostBootDevice `xml:"bootDevices,omitempty"` + CurrentBootDeviceKey string `xml:"currentBootDeviceKey,omitempty"` +} + +func init() { + t["HostBootDeviceInfo"] = reflect.TypeOf((*HostBootDeviceInfo)(nil)).Elem() +} + +type HostCacheConfigurationInfo struct { + DynamicData + + Key ManagedObjectReference `xml:"key"` + SwapSize int64 `xml:"swapSize"` +} + +func init() { + t["HostCacheConfigurationInfo"] = reflect.TypeOf((*HostCacheConfigurationInfo)(nil)).Elem() +} + +type HostCacheConfigurationSpec struct { + DynamicData + + Datastore ManagedObjectReference `xml:"datastore"` + SwapSize int64 `xml:"swapSize"` +} + +func init() { + t["HostCacheConfigurationSpec"] = reflect.TypeOf((*HostCacheConfigurationSpec)(nil)).Elem() +} + +type HostCapability struct { + DynamicData + + RecursiveResourcePoolsSupported bool `xml:"recursiveResourcePoolsSupported"` + CpuMemoryResourceConfigurationSupported bool `xml:"cpuMemoryResourceConfigurationSupported"` + RebootSupported bool `xml:"rebootSupported"` + ShutdownSupported bool `xml:"shutdownSupported"` + VmotionSupported bool `xml:"vmotionSupported"` + StandbySupported bool `xml:"standbySupported"` + IpmiSupported *bool `xml:"ipmiSupported"` + MaxSupportedVMs int32 `xml:"maxSupportedVMs,omitempty"` + MaxRunningVMs int32 `xml:"maxRunningVMs,omitempty"` + MaxSupportedVcpus int32 `xml:"maxSupportedVcpus,omitempty"` + MaxRegisteredVMs int32 `xml:"maxRegisteredVMs,omitempty"` + DatastorePrincipalSupported bool `xml:"datastorePrincipalSupported"` + SanSupported bool `xml:"sanSupported"` + NfsSupported bool `xml:"nfsSupported"` + IscsiSupported bool `xml:"iscsiSupported"` + VlanTaggingSupported bool `xml:"vlanTaggingSupported"` + NicTeamingSupported bool `xml:"nicTeamingSupported"` + HighGuestMemSupported bool `xml:"highGuestMemSupported"` + MaintenanceModeSupported bool `xml:"maintenanceModeSupported"` + SuspendedRelocateSupported bool `xml:"suspendedRelocateSupported"` + RestrictedSnapshotRelocateSupported bool `xml:"restrictedSnapshotRelocateSupported"` + PerVmSwapFiles bool `xml:"perVmSwapFiles"` + LocalSwapDatastoreSupported bool `xml:"localSwapDatastoreSupported"` + UnsharedSwapVMotionSupported bool `xml:"unsharedSwapVMotionSupported"` + BackgroundSnapshotsSupported bool `xml:"backgroundSnapshotsSupported"` + PreAssignedPCIUnitNumbersSupported bool `xml:"preAssignedPCIUnitNumbersSupported"` + ScreenshotSupported bool `xml:"screenshotSupported"` + ScaledScreenshotSupported bool `xml:"scaledScreenshotSupported"` + StorageVMotionSupported *bool `xml:"storageVMotionSupported"` + VmotionWithStorageVMotionSupported *bool `xml:"vmotionWithStorageVMotionSupported"` + VmotionAcrossNetworkSupported *bool `xml:"vmotionAcrossNetworkSupported"` + MaxNumDisksSVMotion int32 `xml:"maxNumDisksSVMotion,omitempty"` + HbrNicSelectionSupported *bool `xml:"hbrNicSelectionSupported"` + VrNfcNicSelectionSupported *bool `xml:"vrNfcNicSelectionSupported"` + RecordReplaySupported *bool `xml:"recordReplaySupported"` + FtSupported *bool `xml:"ftSupported"` + ReplayUnsupportedReason string `xml:"replayUnsupportedReason,omitempty"` + ReplayCompatibilityIssues []string `xml:"replayCompatibilityIssues,omitempty"` + SmpFtSupported *bool `xml:"smpFtSupported"` + FtCompatibilityIssues []string `xml:"ftCompatibilityIssues,omitempty"` + SmpFtCompatibilityIssues []string `xml:"smpFtCompatibilityIssues,omitempty"` + MaxVcpusPerFtVm int32 `xml:"maxVcpusPerFtVm,omitempty"` + LoginBySSLThumbprintSupported *bool `xml:"loginBySSLThumbprintSupported"` + CloneFromSnapshotSupported *bool `xml:"cloneFromSnapshotSupported"` + DeltaDiskBackingsSupported *bool `xml:"deltaDiskBackingsSupported"` + PerVMNetworkTrafficShapingSupported *bool `xml:"perVMNetworkTrafficShapingSupported"` + TpmSupported *bool `xml:"tpmSupported"` + TpmVersion string `xml:"tpmVersion,omitempty"` + TxtEnabled *bool `xml:"txtEnabled"` + SupportedCpuFeature []HostCpuIdInfo `xml:"supportedCpuFeature,omitempty"` + VirtualExecUsageSupported *bool `xml:"virtualExecUsageSupported"` + StorageIORMSupported *bool `xml:"storageIORMSupported"` + VmDirectPathGen2Supported *bool `xml:"vmDirectPathGen2Supported"` + VmDirectPathGen2UnsupportedReason []string `xml:"vmDirectPathGen2UnsupportedReason,omitempty"` + VmDirectPathGen2UnsupportedReasonExtended string `xml:"vmDirectPathGen2UnsupportedReasonExtended,omitempty"` + SupportedVmfsMajorVersion []int32 `xml:"supportedVmfsMajorVersion,omitempty"` + VStorageCapable *bool `xml:"vStorageCapable"` + SnapshotRelayoutSupported *bool `xml:"snapshotRelayoutSupported"` + FirewallIpRulesSupported *bool `xml:"firewallIpRulesSupported"` + ServicePackageInfoSupported *bool `xml:"servicePackageInfoSupported"` + MaxHostRunningVms int32 `xml:"maxHostRunningVms,omitempty"` + MaxHostSupportedVcpus int32 `xml:"maxHostSupportedVcpus,omitempty"` + VmfsDatastoreMountCapable *bool `xml:"vmfsDatastoreMountCapable"` + EightPlusHostVmfsSharedAccessSupported *bool `xml:"eightPlusHostVmfsSharedAccessSupported"` + NestedHVSupported *bool `xml:"nestedHVSupported"` + VPMCSupported *bool `xml:"vPMCSupported"` + InterVMCommunicationThroughVMCISupported *bool `xml:"interVMCommunicationThroughVMCISupported"` + ScheduledHardwareUpgradeSupported *bool `xml:"scheduledHardwareUpgradeSupported"` + FeatureCapabilitiesSupported *bool `xml:"featureCapabilitiesSupported"` + LatencySensitivitySupported *bool `xml:"latencySensitivitySupported"` + StoragePolicySupported *bool `xml:"storagePolicySupported"` + Accel3dSupported *bool `xml:"accel3dSupported"` + ReliableMemoryAware *bool `xml:"reliableMemoryAware"` + MultipleNetworkStackInstanceSupported *bool `xml:"multipleNetworkStackInstanceSupported"` + MessageBusProxySupported *bool `xml:"messageBusProxySupported"` + VsanSupported *bool `xml:"vsanSupported"` + VFlashSupported *bool `xml:"vFlashSupported"` + HostAccessManagerSupported *bool `xml:"hostAccessManagerSupported"` + ProvisioningNicSelectionSupported *bool `xml:"provisioningNicSelectionSupported"` + Nfs41Supported *bool `xml:"nfs41Supported"` + Nfs41Krb5iSupported *bool `xml:"nfs41Krb5iSupported"` + TurnDiskLocatorLedSupported *bool `xml:"turnDiskLocatorLedSupported"` + VirtualVolumeDatastoreSupported *bool `xml:"virtualVolumeDatastoreSupported"` + MarkAsSsdSupported *bool `xml:"markAsSsdSupported"` + MarkAsLocalSupported *bool `xml:"markAsLocalSupported"` + SmartCardAuthenticationSupported *bool `xml:"smartCardAuthenticationSupported"` + PMemSupported *bool `xml:"pMemSupported"` + PMemSnapshotSupported *bool `xml:"pMemSnapshotSupported"` + CryptoSupported *bool `xml:"cryptoSupported"` + OneKVolumeAPIsSupported *bool `xml:"oneKVolumeAPIsSupported"` + GatewayOnNicSupported *bool `xml:"gatewayOnNicSupported"` + UpitSupported *bool `xml:"upitSupported"` + CpuHwMmuSupported *bool `xml:"cpuHwMmuSupported"` + EncryptedVMotionSupported *bool `xml:"encryptedVMotionSupported"` + EncryptionChangeOnAddRemoveSupported *bool `xml:"encryptionChangeOnAddRemoveSupported"` + EncryptionHotOperationSupported *bool `xml:"encryptionHotOperationSupported"` + EncryptionWithSnapshotsSupported *bool `xml:"encryptionWithSnapshotsSupported"` + EncryptionFaultToleranceSupported *bool `xml:"encryptionFaultToleranceSupported"` + EncryptionMemorySaveSupported *bool `xml:"encryptionMemorySaveSupported"` + EncryptionRDMSupported *bool `xml:"encryptionRDMSupported"` + EncryptionVFlashSupported *bool `xml:"encryptionVFlashSupported"` + EncryptionCBRCSupported *bool `xml:"encryptionCBRCSupported"` + EncryptionHBRSupported *bool `xml:"encryptionHBRSupported"` + FtEfiSupported *bool `xml:"ftEfiSupported"` + UnmapMethodSupported string `xml:"unmapMethodSupported,omitempty"` + MaxMemMBPerFtVm int32 `xml:"maxMemMBPerFtVm,omitempty"` + VirtualMmuUsageIgnored *bool `xml:"virtualMmuUsageIgnored"` + VirtualExecUsageIgnored *bool `xml:"virtualExecUsageIgnored"` + VmCreateDateSupported *bool `xml:"vmCreateDateSupported"` + Vmfs3EOLSupported *bool `xml:"vmfs3EOLSupported"` + FtVmcpSupported *bool `xml:"ftVmcpSupported"` + QuickBootSupported *bool `xml:"quickBootSupported"` + AssignableHardwareSupported *bool `xml:"assignableHardwareSupported"` + UseFeatureReqsForOldHWv *bool `xml:"useFeatureReqsForOldHWv"` + MarkPerenniallyReservedSupported *bool `xml:"markPerenniallyReservedSupported"` + HppPspSupported *bool `xml:"hppPspSupported"` + DeviceRebindWithoutRebootSupported *bool `xml:"deviceRebindWithoutRebootSupported"` + StoragePolicyChangeSupported *bool `xml:"storagePolicyChangeSupported"` + PrecisionTimeProtocolSupported *bool `xml:"precisionTimeProtocolSupported"` + RemoteDeviceVMotionSupported *bool `xml:"remoteDeviceVMotionSupported"` + MaxSupportedVmMemory int32 `xml:"maxSupportedVmMemory,omitempty"` +} + +func init() { + t["HostCapability"] = reflect.TypeOf((*HostCapability)(nil)).Elem() +} + +type HostCertificateManagerCertificateInfo struct { + DynamicData + + Issuer string `xml:"issuer,omitempty"` + NotBefore *time.Time `xml:"notBefore"` + NotAfter *time.Time `xml:"notAfter"` + Subject string `xml:"subject,omitempty"` + Status string `xml:"status"` +} + +func init() { + t["HostCertificateManagerCertificateInfo"] = reflect.TypeOf((*HostCertificateManagerCertificateInfo)(nil)).Elem() +} + +type HostClearVStorageObjectControlFlags HostClearVStorageObjectControlFlagsRequestType + +func init() { + t["HostClearVStorageObjectControlFlags"] = reflect.TypeOf((*HostClearVStorageObjectControlFlags)(nil)).Elem() +} + +type HostClearVStorageObjectControlFlagsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + ControlFlags []string `xml:"controlFlags,omitempty"` +} + +func init() { + t["HostClearVStorageObjectControlFlagsRequestType"] = reflect.TypeOf((*HostClearVStorageObjectControlFlagsRequestType)(nil)).Elem() +} + +type HostClearVStorageObjectControlFlagsResponse struct { +} + +type HostCloneVStorageObjectRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + Spec VslmCloneSpec `xml:"spec"` +} + +func init() { + t["HostCloneVStorageObjectRequestType"] = reflect.TypeOf((*HostCloneVStorageObjectRequestType)(nil)).Elem() +} + +type HostCloneVStorageObject_Task HostCloneVStorageObjectRequestType + +func init() { + t["HostCloneVStorageObject_Task"] = reflect.TypeOf((*HostCloneVStorageObject_Task)(nil)).Elem() +} + +type HostCloneVStorageObject_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type HostCnxFailedAccountFailedEvent struct { + HostEvent +} + +func init() { + t["HostCnxFailedAccountFailedEvent"] = reflect.TypeOf((*HostCnxFailedAccountFailedEvent)(nil)).Elem() +} + +type HostCnxFailedAlreadyManagedEvent struct { + HostEvent + + ServerName string `xml:"serverName"` +} + +func init() { + t["HostCnxFailedAlreadyManagedEvent"] = reflect.TypeOf((*HostCnxFailedAlreadyManagedEvent)(nil)).Elem() +} + +type HostCnxFailedBadCcagentEvent struct { + HostEvent +} + +func init() { + t["HostCnxFailedBadCcagentEvent"] = reflect.TypeOf((*HostCnxFailedBadCcagentEvent)(nil)).Elem() +} + +type HostCnxFailedBadUsernameEvent struct { + HostEvent +} + +func init() { + t["HostCnxFailedBadUsernameEvent"] = reflect.TypeOf((*HostCnxFailedBadUsernameEvent)(nil)).Elem() +} + +type HostCnxFailedBadVersionEvent struct { + HostEvent +} + +func init() { + t["HostCnxFailedBadVersionEvent"] = reflect.TypeOf((*HostCnxFailedBadVersionEvent)(nil)).Elem() +} + +type HostCnxFailedCcagentUpgradeEvent struct { + HostEvent +} + +func init() { + t["HostCnxFailedCcagentUpgradeEvent"] = reflect.TypeOf((*HostCnxFailedCcagentUpgradeEvent)(nil)).Elem() +} + +type HostCnxFailedEvent struct { + HostEvent +} + +func init() { + t["HostCnxFailedEvent"] = reflect.TypeOf((*HostCnxFailedEvent)(nil)).Elem() +} + +type HostCnxFailedNetworkErrorEvent struct { + HostEvent +} + +func init() { + t["HostCnxFailedNetworkErrorEvent"] = reflect.TypeOf((*HostCnxFailedNetworkErrorEvent)(nil)).Elem() +} + +type HostCnxFailedNoAccessEvent struct { + HostEvent +} + +func init() { + t["HostCnxFailedNoAccessEvent"] = reflect.TypeOf((*HostCnxFailedNoAccessEvent)(nil)).Elem() +} + +type HostCnxFailedNoConnectionEvent struct { + HostEvent +} + +func init() { + t["HostCnxFailedNoConnectionEvent"] = reflect.TypeOf((*HostCnxFailedNoConnectionEvent)(nil)).Elem() +} + +type HostCnxFailedNoLicenseEvent struct { + HostEvent +} + +func init() { + t["HostCnxFailedNoLicenseEvent"] = reflect.TypeOf((*HostCnxFailedNoLicenseEvent)(nil)).Elem() +} + +type HostCnxFailedNotFoundEvent struct { + HostEvent +} + +func init() { + t["HostCnxFailedNotFoundEvent"] = reflect.TypeOf((*HostCnxFailedNotFoundEvent)(nil)).Elem() +} + +type HostCnxFailedTimeoutEvent struct { + HostEvent +} + +func init() { + t["HostCnxFailedTimeoutEvent"] = reflect.TypeOf((*HostCnxFailedTimeoutEvent)(nil)).Elem() +} + +type HostCommunication struct { + RuntimeFault +} + +func init() { + t["HostCommunication"] = reflect.TypeOf((*HostCommunication)(nil)).Elem() +} + +type HostCommunicationFault BaseHostCommunication + +func init() { + t["HostCommunicationFault"] = reflect.TypeOf((*HostCommunicationFault)(nil)).Elem() +} + +type HostComplianceCheckedEvent struct { + HostEvent + + Profile ProfileEventArgument `xml:"profile"` +} + +func init() { + t["HostComplianceCheckedEvent"] = reflect.TypeOf((*HostComplianceCheckedEvent)(nil)).Elem() +} + +type HostCompliantEvent struct { + HostEvent +} + +func init() { + t["HostCompliantEvent"] = reflect.TypeOf((*HostCompliantEvent)(nil)).Elem() +} + +type HostConfigAppliedEvent struct { + HostEvent +} + +func init() { + t["HostConfigAppliedEvent"] = reflect.TypeOf((*HostConfigAppliedEvent)(nil)).Elem() +} + +type HostConfigChange struct { + DynamicData +} + +func init() { + t["HostConfigChange"] = reflect.TypeOf((*HostConfigChange)(nil)).Elem() +} + +type HostConfigFailed struct { + HostConfigFault + + Failure []LocalizedMethodFault `xml:"failure"` +} + +func init() { + t["HostConfigFailed"] = reflect.TypeOf((*HostConfigFailed)(nil)).Elem() +} + +type HostConfigFailedFault HostConfigFailed + +func init() { + t["HostConfigFailedFault"] = reflect.TypeOf((*HostConfigFailedFault)(nil)).Elem() +} + +type HostConfigFault struct { + VimFault +} + +func init() { + t["HostConfigFault"] = reflect.TypeOf((*HostConfigFault)(nil)).Elem() +} + +type HostConfigFaultFault BaseHostConfigFault + +func init() { + t["HostConfigFaultFault"] = reflect.TypeOf((*HostConfigFaultFault)(nil)).Elem() +} + +type HostConfigInfo struct { + DynamicData + + Host ManagedObjectReference `xml:"host"` + Product AboutInfo `xml:"product"` + DeploymentInfo *HostDeploymentInfo `xml:"deploymentInfo,omitempty"` + HyperThread *HostHyperThreadScheduleInfo `xml:"hyperThread,omitempty"` + ConsoleReservation *ServiceConsoleReservationInfo `xml:"consoleReservation,omitempty"` + VirtualMachineReservation *VirtualMachineMemoryReservationInfo `xml:"virtualMachineReservation,omitempty"` + StorageDevice *HostStorageDeviceInfo `xml:"storageDevice,omitempty"` + MultipathState *HostMultipathStateInfo `xml:"multipathState,omitempty"` + FileSystemVolume *HostFileSystemVolumeInfo `xml:"fileSystemVolume,omitempty"` + SystemFile []string `xml:"systemFile,omitempty"` + Network *HostNetworkInfo `xml:"network,omitempty"` + Vmotion *HostVMotionInfo `xml:"vmotion,omitempty"` + VirtualNicManagerInfo *HostVirtualNicManagerInfo `xml:"virtualNicManagerInfo,omitempty"` + Capabilities *HostNetCapabilities `xml:"capabilities,omitempty"` + DatastoreCapabilities *HostDatastoreSystemCapabilities `xml:"datastoreCapabilities,omitempty"` + OffloadCapabilities *HostNetOffloadCapabilities `xml:"offloadCapabilities,omitempty"` + Service *HostServiceInfo `xml:"service,omitempty"` + Firewall *HostFirewallInfo `xml:"firewall,omitempty"` + AutoStart *HostAutoStartManagerConfig `xml:"autoStart,omitempty"` + ActiveDiagnosticPartition *HostDiagnosticPartition `xml:"activeDiagnosticPartition,omitempty"` + Option []BaseOptionValue `xml:"option,omitempty,typeattr"` + OptionDef []OptionDef `xml:"optionDef,omitempty"` + DatastorePrincipal string `xml:"datastorePrincipal,omitempty"` + LocalSwapDatastore *ManagedObjectReference `xml:"localSwapDatastore,omitempty"` + SystemSwapConfiguration *HostSystemSwapConfiguration `xml:"systemSwapConfiguration,omitempty"` + SystemResources *HostSystemResourceInfo `xml:"systemResources,omitempty"` + DateTimeInfo *HostDateTimeInfo `xml:"dateTimeInfo,omitempty"` + Flags *HostFlagInfo `xml:"flags,omitempty"` + AdminDisabled *bool `xml:"adminDisabled"` + LockdownMode HostLockdownMode `xml:"lockdownMode,omitempty"` + Ipmi *HostIpmiInfo `xml:"ipmi,omitempty"` + SslThumbprintInfo *HostSslThumbprintInfo `xml:"sslThumbprintInfo,omitempty"` + SslThumbprintData []HostSslThumbprintInfo `xml:"sslThumbprintData,omitempty"` + Certificate []byte `xml:"certificate,omitempty"` + PciPassthruInfo []BaseHostPciPassthruInfo `xml:"pciPassthruInfo,omitempty,typeattr"` + AuthenticationManagerInfo *HostAuthenticationManagerInfo `xml:"authenticationManagerInfo,omitempty"` + FeatureVersion []HostFeatureVersionInfo `xml:"featureVersion,omitempty"` + PowerSystemCapability *PowerSystemCapability `xml:"powerSystemCapability,omitempty"` + PowerSystemInfo *PowerSystemInfo `xml:"powerSystemInfo,omitempty"` + CacheConfigurationInfo []HostCacheConfigurationInfo `xml:"cacheConfigurationInfo,omitempty"` + WakeOnLanCapable *bool `xml:"wakeOnLanCapable"` + FeatureCapability []HostFeatureCapability `xml:"featureCapability,omitempty"` + MaskedFeatureCapability []HostFeatureCapability `xml:"maskedFeatureCapability,omitempty"` + VFlashConfigInfo *HostVFlashManagerVFlashConfigInfo `xml:"vFlashConfigInfo,omitempty"` + VsanHostConfig *VsanHostConfigInfo `xml:"vsanHostConfig,omitempty"` + DomainList []string `xml:"domainList,omitempty"` + ScriptCheckSum []byte `xml:"scriptCheckSum,omitempty"` + HostConfigCheckSum []byte `xml:"hostConfigCheckSum,omitempty"` + DescriptionTreeCheckSum []byte `xml:"descriptionTreeCheckSum,omitempty"` + GraphicsInfo []HostGraphicsInfo `xml:"graphicsInfo,omitempty"` + SharedPassthruGpuTypes []string `xml:"sharedPassthruGpuTypes,omitempty"` + GraphicsConfig *HostGraphicsConfig `xml:"graphicsConfig,omitempty"` + SharedGpuCapabilities []HostSharedGpuCapabilities `xml:"sharedGpuCapabilities,omitempty"` + IoFilterInfo []HostIoFilterInfo `xml:"ioFilterInfo,omitempty"` + SriovDevicePool []BaseHostSriovDevicePoolInfo `xml:"sriovDevicePool,omitempty,typeattr"` + AssignableHardwareBinding []HostAssignableHardwareBinding `xml:"assignableHardwareBinding,omitempty"` + AssignableHardwareConfig *HostAssignableHardwareConfig `xml:"assignableHardwareConfig,omitempty"` +} + +func init() { + t["HostConfigInfo"] = reflect.TypeOf((*HostConfigInfo)(nil)).Elem() +} + +type HostConfigManager struct { + DynamicData + + CpuScheduler *ManagedObjectReference `xml:"cpuScheduler,omitempty"` + DatastoreSystem *ManagedObjectReference `xml:"datastoreSystem,omitempty"` + MemoryManager *ManagedObjectReference `xml:"memoryManager,omitempty"` + StorageSystem *ManagedObjectReference `xml:"storageSystem,omitempty"` + NetworkSystem *ManagedObjectReference `xml:"networkSystem,omitempty"` + VmotionSystem *ManagedObjectReference `xml:"vmotionSystem,omitempty"` + VirtualNicManager *ManagedObjectReference `xml:"virtualNicManager,omitempty"` + ServiceSystem *ManagedObjectReference `xml:"serviceSystem,omitempty"` + FirewallSystem *ManagedObjectReference `xml:"firewallSystem,omitempty"` + AdvancedOption *ManagedObjectReference `xml:"advancedOption,omitempty"` + DiagnosticSystem *ManagedObjectReference `xml:"diagnosticSystem,omitempty"` + AutoStartManager *ManagedObjectReference `xml:"autoStartManager,omitempty"` + SnmpSystem *ManagedObjectReference `xml:"snmpSystem,omitempty"` + DateTimeSystem *ManagedObjectReference `xml:"dateTimeSystem,omitempty"` + PatchManager *ManagedObjectReference `xml:"patchManager,omitempty"` + ImageConfigManager *ManagedObjectReference `xml:"imageConfigManager,omitempty"` + BootDeviceSystem *ManagedObjectReference `xml:"bootDeviceSystem,omitempty"` + FirmwareSystem *ManagedObjectReference `xml:"firmwareSystem,omitempty"` + HealthStatusSystem *ManagedObjectReference `xml:"healthStatusSystem,omitempty"` + PciPassthruSystem *ManagedObjectReference `xml:"pciPassthruSystem,omitempty"` + LicenseManager *ManagedObjectReference `xml:"licenseManager,omitempty"` + KernelModuleSystem *ManagedObjectReference `xml:"kernelModuleSystem,omitempty"` + AuthenticationManager *ManagedObjectReference `xml:"authenticationManager,omitempty"` + PowerSystem *ManagedObjectReference `xml:"powerSystem,omitempty"` + CacheConfigurationManager *ManagedObjectReference `xml:"cacheConfigurationManager,omitempty"` + EsxAgentHostManager *ManagedObjectReference `xml:"esxAgentHostManager,omitempty"` + IscsiManager *ManagedObjectReference `xml:"iscsiManager,omitempty"` + VFlashManager *ManagedObjectReference `xml:"vFlashManager,omitempty"` + VsanSystem *ManagedObjectReference `xml:"vsanSystem,omitempty"` + MessageBusProxy *ManagedObjectReference `xml:"messageBusProxy,omitempty"` + UserDirectory *ManagedObjectReference `xml:"userDirectory,omitempty"` + AccountManager *ManagedObjectReference `xml:"accountManager,omitempty"` + HostAccessManager *ManagedObjectReference `xml:"hostAccessManager,omitempty"` + GraphicsManager *ManagedObjectReference `xml:"graphicsManager,omitempty"` + VsanInternalSystem *ManagedObjectReference `xml:"vsanInternalSystem,omitempty"` + CertificateManager *ManagedObjectReference `xml:"certificateManager,omitempty"` + CryptoManager *ManagedObjectReference `xml:"cryptoManager,omitempty"` + NvdimmSystem *ManagedObjectReference `xml:"nvdimmSystem,omitempty"` + AssignableHardwareManager *ManagedObjectReference `xml:"assignableHardwareManager,omitempty"` +} + +func init() { + t["HostConfigManager"] = reflect.TypeOf((*HostConfigManager)(nil)).Elem() +} + +type HostConfigSpec struct { + DynamicData + + NasDatastore []HostNasVolumeConfig `xml:"nasDatastore,omitempty"` + Network *HostNetworkConfig `xml:"network,omitempty"` + NicTypeSelection []HostVirtualNicManagerNicTypeSelection `xml:"nicTypeSelection,omitempty"` + Service []HostServiceConfig `xml:"service,omitempty"` + Firewall *HostFirewallConfig `xml:"firewall,omitempty"` + Option []BaseOptionValue `xml:"option,omitempty,typeattr"` + DatastorePrincipal string `xml:"datastorePrincipal,omitempty"` + DatastorePrincipalPasswd string `xml:"datastorePrincipalPasswd,omitempty"` + Datetime *HostDateTimeConfig `xml:"datetime,omitempty"` + StorageDevice *HostStorageDeviceInfo `xml:"storageDevice,omitempty"` + License *HostLicenseSpec `xml:"license,omitempty"` + Security *HostSecuritySpec `xml:"security,omitempty"` + UserAccount []BaseHostAccountSpec `xml:"userAccount,omitempty,typeattr"` + UsergroupAccount []BaseHostAccountSpec `xml:"usergroupAccount,omitempty,typeattr"` + Memory *HostMemorySpec `xml:"memory,omitempty"` + ActiveDirectory []HostActiveDirectory `xml:"activeDirectory,omitempty"` + GenericConfig []KeyAnyValue `xml:"genericConfig,omitempty"` + GraphicsConfig *HostGraphicsConfig `xml:"graphicsConfig,omitempty"` + AssignableHardwareConfig *HostAssignableHardwareConfig `xml:"assignableHardwareConfig,omitempty"` +} + +func init() { + t["HostConfigSpec"] = reflect.TypeOf((*HostConfigSpec)(nil)).Elem() +} + +type HostConfigSummary struct { + DynamicData + + Name string `xml:"name"` + Port int32 `xml:"port"` + SslThumbprint string `xml:"sslThumbprint,omitempty"` + Product *AboutInfo `xml:"product,omitempty"` + VmotionEnabled bool `xml:"vmotionEnabled"` + FaultToleranceEnabled *bool `xml:"faultToleranceEnabled"` + FeatureVersion []HostFeatureVersionInfo `xml:"featureVersion,omitempty"` + AgentVmDatastore *ManagedObjectReference `xml:"agentVmDatastore,omitempty"` + AgentVmNetwork *ManagedObjectReference `xml:"agentVmNetwork,omitempty"` +} + +func init() { + t["HostConfigSummary"] = reflect.TypeOf((*HostConfigSummary)(nil)).Elem() +} + +type HostConfigVFlashCache HostConfigVFlashCacheRequestType + +func init() { + t["HostConfigVFlashCache"] = reflect.TypeOf((*HostConfigVFlashCache)(nil)).Elem() +} + +type HostConfigVFlashCacheRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec HostVFlashManagerVFlashCacheConfigSpec `xml:"spec"` +} + +func init() { + t["HostConfigVFlashCacheRequestType"] = reflect.TypeOf((*HostConfigVFlashCacheRequestType)(nil)).Elem() +} + +type HostConfigVFlashCacheResponse struct { +} + +type HostConfigureVFlashResource HostConfigureVFlashResourceRequestType + +func init() { + t["HostConfigureVFlashResource"] = reflect.TypeOf((*HostConfigureVFlashResource)(nil)).Elem() +} + +type HostConfigureVFlashResourceRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec HostVFlashManagerVFlashResourceConfigSpec `xml:"spec"` +} + +func init() { + t["HostConfigureVFlashResourceRequestType"] = reflect.TypeOf((*HostConfigureVFlashResourceRequestType)(nil)).Elem() +} + +type HostConfigureVFlashResourceResponse struct { +} + +type HostConnectFault struct { + VimFault +} + +func init() { + t["HostConnectFault"] = reflect.TypeOf((*HostConnectFault)(nil)).Elem() +} + +type HostConnectFaultFault BaseHostConnectFault + +func init() { + t["HostConnectFaultFault"] = reflect.TypeOf((*HostConnectFaultFault)(nil)).Elem() +} + +type HostConnectInfo struct { + DynamicData + + ServerIp string `xml:"serverIp,omitempty"` + InDasCluster *bool `xml:"inDasCluster"` + Host HostListSummary `xml:"host"` + Vm []VirtualMachineSummary `xml:"vm,omitempty"` + VimAccountNameRequired *bool `xml:"vimAccountNameRequired"` + ClusterSupported *bool `xml:"clusterSupported"` + Network []BaseHostConnectInfoNetworkInfo `xml:"network,omitempty,typeattr"` + Datastore []BaseHostDatastoreConnectInfo `xml:"datastore,omitempty,typeattr"` + License *HostLicenseConnectInfo `xml:"license,omitempty"` + Capability *HostCapability `xml:"capability,omitempty"` +} + +func init() { + t["HostConnectInfo"] = reflect.TypeOf((*HostConnectInfo)(nil)).Elem() +} + +type HostConnectInfoNetworkInfo struct { + DynamicData + + Summary BaseNetworkSummary `xml:"summary,typeattr"` +} + +func init() { + t["HostConnectInfoNetworkInfo"] = reflect.TypeOf((*HostConnectInfoNetworkInfo)(nil)).Elem() +} + +type HostConnectSpec struct { + DynamicData + + HostName string `xml:"hostName,omitempty"` + Port int32 `xml:"port,omitempty"` + SslThumbprint string `xml:"sslThumbprint,omitempty"` + UserName string `xml:"userName,omitempty"` + Password string `xml:"password,omitempty"` + VmFolder *ManagedObjectReference `xml:"vmFolder,omitempty"` + Force bool `xml:"force"` + VimAccountName string `xml:"vimAccountName,omitempty"` + VimAccountPassword string `xml:"vimAccountPassword,omitempty"` + ManagementIp string `xml:"managementIp,omitempty"` + LockdownMode HostLockdownMode `xml:"lockdownMode,omitempty"` + HostGateway *HostGatewaySpec `xml:"hostGateway,omitempty"` +} + +func init() { + t["HostConnectSpec"] = reflect.TypeOf((*HostConnectSpec)(nil)).Elem() +} + +type HostConnectedEvent struct { + HostEvent +} + +func init() { + t["HostConnectedEvent"] = reflect.TypeOf((*HostConnectedEvent)(nil)).Elem() +} + +type HostConnectionLostEvent struct { + HostEvent +} + +func init() { + t["HostConnectionLostEvent"] = reflect.TypeOf((*HostConnectionLostEvent)(nil)).Elem() +} + +type HostCpuIdInfo struct { + DynamicData + + Level int32 `xml:"level"` + Vendor string `xml:"vendor,omitempty"` + Eax string `xml:"eax,omitempty"` + Ebx string `xml:"ebx,omitempty"` + Ecx string `xml:"ecx,omitempty"` + Edx string `xml:"edx,omitempty"` +} + +func init() { + t["HostCpuIdInfo"] = reflect.TypeOf((*HostCpuIdInfo)(nil)).Elem() +} + +type HostCpuInfo struct { + DynamicData + + NumCpuPackages int16 `xml:"numCpuPackages"` + NumCpuCores int16 `xml:"numCpuCores"` + NumCpuThreads int16 `xml:"numCpuThreads"` + Hz int64 `xml:"hz"` +} + +func init() { + t["HostCpuInfo"] = reflect.TypeOf((*HostCpuInfo)(nil)).Elem() +} + +type HostCpuPackage struct { + DynamicData + + Index int16 `xml:"index"` + Vendor string `xml:"vendor"` + Hz int64 `xml:"hz"` + BusHz int64 `xml:"busHz"` + Description string `xml:"description"` + ThreadId []int16 `xml:"threadId"` + CpuFeature []HostCpuIdInfo `xml:"cpuFeature,omitempty"` +} + +func init() { + t["HostCpuPackage"] = reflect.TypeOf((*HostCpuPackage)(nil)).Elem() +} + +type HostCpuPowerManagementInfo struct { + DynamicData + + CurrentPolicy string `xml:"currentPolicy,omitempty"` + HardwareSupport string `xml:"hardwareSupport,omitempty"` +} + +func init() { + t["HostCpuPowerManagementInfo"] = reflect.TypeOf((*HostCpuPowerManagementInfo)(nil)).Elem() +} + +type HostCreateDiskRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec VslmCreateSpec `xml:"spec"` +} + +func init() { + t["HostCreateDiskRequestType"] = reflect.TypeOf((*HostCreateDiskRequestType)(nil)).Elem() +} + +type HostCreateDisk_Task HostCreateDiskRequestType + +func init() { + t["HostCreateDisk_Task"] = reflect.TypeOf((*HostCreateDisk_Task)(nil)).Elem() +} + +type HostCreateDisk_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type HostDasDisabledEvent struct { + HostEvent +} + +func init() { + t["HostDasDisabledEvent"] = reflect.TypeOf((*HostDasDisabledEvent)(nil)).Elem() +} + +type HostDasDisablingEvent struct { + HostEvent +} + +func init() { + t["HostDasDisablingEvent"] = reflect.TypeOf((*HostDasDisablingEvent)(nil)).Elem() +} + +type HostDasEnabledEvent struct { + HostEvent +} + +func init() { + t["HostDasEnabledEvent"] = reflect.TypeOf((*HostDasEnabledEvent)(nil)).Elem() +} + +type HostDasEnablingEvent struct { + HostEvent +} + +func init() { + t["HostDasEnablingEvent"] = reflect.TypeOf((*HostDasEnablingEvent)(nil)).Elem() +} + +type HostDasErrorEvent struct { + HostEvent + + Message string `xml:"message,omitempty"` + Reason string `xml:"reason,omitempty"` +} + +func init() { + t["HostDasErrorEvent"] = reflect.TypeOf((*HostDasErrorEvent)(nil)).Elem() +} + +type HostDasEvent struct { + HostEvent +} + +func init() { + t["HostDasEvent"] = reflect.TypeOf((*HostDasEvent)(nil)).Elem() +} + +type HostDasOkEvent struct { + HostEvent +} + +func init() { + t["HostDasOkEvent"] = reflect.TypeOf((*HostDasOkEvent)(nil)).Elem() +} + +type HostDatastoreBrowserSearchResults struct { + DynamicData + + Datastore *ManagedObjectReference `xml:"datastore,omitempty"` + FolderPath string `xml:"folderPath,omitempty"` + File []BaseFileInfo `xml:"file,omitempty,typeattr"` +} + +func init() { + t["HostDatastoreBrowserSearchResults"] = reflect.TypeOf((*HostDatastoreBrowserSearchResults)(nil)).Elem() +} + +type HostDatastoreBrowserSearchSpec struct { + DynamicData + + Query []BaseFileQuery `xml:"query,omitempty,typeattr"` + Details *FileQueryFlags `xml:"details,omitempty"` + SearchCaseInsensitive *bool `xml:"searchCaseInsensitive"` + MatchPattern []string `xml:"matchPattern,omitempty"` + SortFoldersFirst *bool `xml:"sortFoldersFirst"` +} + +func init() { + t["HostDatastoreBrowserSearchSpec"] = reflect.TypeOf((*HostDatastoreBrowserSearchSpec)(nil)).Elem() +} + +type HostDatastoreConnectInfo struct { + DynamicData + + Summary DatastoreSummary `xml:"summary"` +} + +func init() { + t["HostDatastoreConnectInfo"] = reflect.TypeOf((*HostDatastoreConnectInfo)(nil)).Elem() +} + +type HostDatastoreExistsConnectInfo struct { + HostDatastoreConnectInfo + + NewDatastoreName string `xml:"newDatastoreName"` +} + +func init() { + t["HostDatastoreExistsConnectInfo"] = reflect.TypeOf((*HostDatastoreExistsConnectInfo)(nil)).Elem() +} + +type HostDatastoreNameConflictConnectInfo struct { + HostDatastoreConnectInfo + + NewDatastoreName string `xml:"newDatastoreName"` +} + +func init() { + t["HostDatastoreNameConflictConnectInfo"] = reflect.TypeOf((*HostDatastoreNameConflictConnectInfo)(nil)).Elem() +} + +type HostDatastoreSystemCapabilities struct { + DynamicData + + NfsMountCreationRequired bool `xml:"nfsMountCreationRequired"` + NfsMountCreationSupported bool `xml:"nfsMountCreationSupported"` + LocalDatastoreSupported bool `xml:"localDatastoreSupported"` + VmfsExtentExpansionSupported *bool `xml:"vmfsExtentExpansionSupported"` +} + +func init() { + t["HostDatastoreSystemCapabilities"] = reflect.TypeOf((*HostDatastoreSystemCapabilities)(nil)).Elem() +} + +type HostDatastoreSystemDatastoreResult struct { + DynamicData + + Key ManagedObjectReference `xml:"key"` + Fault *LocalizedMethodFault `xml:"fault,omitempty"` +} + +func init() { + t["HostDatastoreSystemDatastoreResult"] = reflect.TypeOf((*HostDatastoreSystemDatastoreResult)(nil)).Elem() +} + +type HostDatastoreSystemVvolDatastoreSpec struct { + DynamicData + + Name string `xml:"name"` + ScId string `xml:"scId"` +} + +func init() { + t["HostDatastoreSystemVvolDatastoreSpec"] = reflect.TypeOf((*HostDatastoreSystemVvolDatastoreSpec)(nil)).Elem() +} + +type HostDateTimeConfig struct { + DynamicData + + TimeZone string `xml:"timeZone,omitempty"` + NtpConfig *HostNtpConfig `xml:"ntpConfig,omitempty"` +} + +func init() { + t["HostDateTimeConfig"] = reflect.TypeOf((*HostDateTimeConfig)(nil)).Elem() +} + +type HostDateTimeInfo struct { + DynamicData + + TimeZone HostDateTimeSystemTimeZone `xml:"timeZone"` + SystemClockProtocol string `xml:"systemClockProtocol,omitempty"` + NtpConfig *HostNtpConfig `xml:"ntpConfig,omitempty"` +} + +func init() { + t["HostDateTimeInfo"] = reflect.TypeOf((*HostDateTimeInfo)(nil)).Elem() +} + +type HostDateTimeSystemTimeZone struct { + DynamicData + + Key string `xml:"key"` + Name string `xml:"name"` + Description string `xml:"description"` + GmtOffset int32 `xml:"gmtOffset"` +} + +func init() { + t["HostDateTimeSystemTimeZone"] = reflect.TypeOf((*HostDateTimeSystemTimeZone)(nil)).Elem() +} + +type HostDeleteVStorageObjectRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["HostDeleteVStorageObjectRequestType"] = reflect.TypeOf((*HostDeleteVStorageObjectRequestType)(nil)).Elem() +} + +type HostDeleteVStorageObject_Task HostDeleteVStorageObjectRequestType + +func init() { + t["HostDeleteVStorageObject_Task"] = reflect.TypeOf((*HostDeleteVStorageObject_Task)(nil)).Elem() +} + +type HostDeleteVStorageObject_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type HostDeploymentInfo struct { + DynamicData + + BootedFromStatelessCache *bool `xml:"bootedFromStatelessCache"` +} + +func init() { + t["HostDeploymentInfo"] = reflect.TypeOf((*HostDeploymentInfo)(nil)).Elem() +} + +type HostDevice struct { + DynamicData + + DeviceName string `xml:"deviceName"` + DeviceType string `xml:"deviceType"` +} + +func init() { + t["HostDevice"] = reflect.TypeOf((*HostDevice)(nil)).Elem() +} + +type HostDhcpService struct { + DynamicData + + Key string `xml:"key"` + Spec HostDhcpServiceSpec `xml:"spec"` +} + +func init() { + t["HostDhcpService"] = reflect.TypeOf((*HostDhcpService)(nil)).Elem() +} + +type HostDhcpServiceConfig struct { + DynamicData + + ChangeOperation string `xml:"changeOperation,omitempty"` + Key string `xml:"key"` + Spec HostDhcpServiceSpec `xml:"spec"` +} + +func init() { + t["HostDhcpServiceConfig"] = reflect.TypeOf((*HostDhcpServiceConfig)(nil)).Elem() +} + +type HostDhcpServiceSpec struct { + DynamicData + + VirtualSwitch string `xml:"virtualSwitch"` + DefaultLeaseDuration int32 `xml:"defaultLeaseDuration"` + LeaseBeginIp string `xml:"leaseBeginIp"` + LeaseEndIp string `xml:"leaseEndIp"` + MaxLeaseDuration int32 `xml:"maxLeaseDuration"` + UnlimitedLease bool `xml:"unlimitedLease"` + IpSubnetAddr string `xml:"ipSubnetAddr"` + IpSubnetMask string `xml:"ipSubnetMask"` +} + +func init() { + t["HostDhcpServiceSpec"] = reflect.TypeOf((*HostDhcpServiceSpec)(nil)).Elem() +} + +type HostDiagnosticPartition struct { + DynamicData + + StorageType string `xml:"storageType"` + DiagnosticType string `xml:"diagnosticType"` + Slots int32 `xml:"slots"` + Id HostScsiDiskPartition `xml:"id"` +} + +func init() { + t["HostDiagnosticPartition"] = reflect.TypeOf((*HostDiagnosticPartition)(nil)).Elem() +} + +type HostDiagnosticPartitionCreateDescription struct { + DynamicData + + Layout HostDiskPartitionLayout `xml:"layout"` + DiskUuid string `xml:"diskUuid"` + Spec HostDiagnosticPartitionCreateSpec `xml:"spec"` +} + +func init() { + t["HostDiagnosticPartitionCreateDescription"] = reflect.TypeOf((*HostDiagnosticPartitionCreateDescription)(nil)).Elem() +} + +type HostDiagnosticPartitionCreateOption struct { + DynamicData + + StorageType string `xml:"storageType"` + DiagnosticType string `xml:"diagnosticType"` + Disk HostScsiDisk `xml:"disk"` +} + +func init() { + t["HostDiagnosticPartitionCreateOption"] = reflect.TypeOf((*HostDiagnosticPartitionCreateOption)(nil)).Elem() +} + +type HostDiagnosticPartitionCreateSpec struct { + DynamicData + + StorageType string `xml:"storageType"` + DiagnosticType string `xml:"diagnosticType"` + Id HostScsiDiskPartition `xml:"id"` + Partition HostDiskPartitionSpec `xml:"partition"` + Active *bool `xml:"active"` +} + +func init() { + t["HostDiagnosticPartitionCreateSpec"] = reflect.TypeOf((*HostDiagnosticPartitionCreateSpec)(nil)).Elem() +} + +type HostDigestInfo struct { + DynamicData + + DigestMethod string `xml:"digestMethod"` + DigestValue []byte `xml:"digestValue"` + ObjectName string `xml:"objectName,omitempty"` +} + +func init() { + t["HostDigestInfo"] = reflect.TypeOf((*HostDigestInfo)(nil)).Elem() +} + +type HostDirectoryStoreInfo struct { + HostAuthenticationStoreInfo +} + +func init() { + t["HostDirectoryStoreInfo"] = reflect.TypeOf((*HostDirectoryStoreInfo)(nil)).Elem() +} + +type HostDisconnectedEvent struct { + HostEvent + + Reason string `xml:"reason,omitempty"` +} + +func init() { + t["HostDisconnectedEvent"] = reflect.TypeOf((*HostDisconnectedEvent)(nil)).Elem() +} + +type HostDiskConfigurationResult struct { + DynamicData + + DevicePath string `xml:"devicePath,omitempty"` + Success *bool `xml:"success"` + Fault *LocalizedMethodFault `xml:"fault,omitempty"` +} + +func init() { + t["HostDiskConfigurationResult"] = reflect.TypeOf((*HostDiskConfigurationResult)(nil)).Elem() +} + +type HostDiskDimensions struct { + DynamicData +} + +func init() { + t["HostDiskDimensions"] = reflect.TypeOf((*HostDiskDimensions)(nil)).Elem() +} + +type HostDiskDimensionsChs struct { + DynamicData + + Cylinder int64 `xml:"cylinder"` + Head int32 `xml:"head"` + Sector int32 `xml:"sector"` +} + +func init() { + t["HostDiskDimensionsChs"] = reflect.TypeOf((*HostDiskDimensionsChs)(nil)).Elem() +} + +type HostDiskDimensionsLba struct { + DynamicData + + BlockSize int32 `xml:"blockSize"` + Block int64 `xml:"block"` +} + +func init() { + t["HostDiskDimensionsLba"] = reflect.TypeOf((*HostDiskDimensionsLba)(nil)).Elem() +} + +type HostDiskMappingInfo struct { + DynamicData + + PhysicalPartition *HostDiskMappingPartitionInfo `xml:"physicalPartition,omitempty"` + Name string `xml:"name"` + Exclusive *bool `xml:"exclusive"` +} + +func init() { + t["HostDiskMappingInfo"] = reflect.TypeOf((*HostDiskMappingInfo)(nil)).Elem() +} + +type HostDiskMappingOption struct { + DynamicData + + PhysicalPartition []HostDiskMappingPartitionOption `xml:"physicalPartition,omitempty"` + Name string `xml:"name"` +} + +func init() { + t["HostDiskMappingOption"] = reflect.TypeOf((*HostDiskMappingOption)(nil)).Elem() +} + +type HostDiskMappingPartitionInfo struct { + DynamicData + + Name string `xml:"name"` + FileSystem string `xml:"fileSystem"` + CapacityInKb int64 `xml:"capacityInKb"` +} + +func init() { + t["HostDiskMappingPartitionInfo"] = reflect.TypeOf((*HostDiskMappingPartitionInfo)(nil)).Elem() +} + +type HostDiskMappingPartitionOption struct { + DynamicData + + Name string `xml:"name"` + FileSystem string `xml:"fileSystem"` + CapacityInKb int64 `xml:"capacityInKb"` +} + +func init() { + t["HostDiskMappingPartitionOption"] = reflect.TypeOf((*HostDiskMappingPartitionOption)(nil)).Elem() +} + +type HostDiskPartitionAttributes struct { + DynamicData + + Partition int32 `xml:"partition"` + StartSector int64 `xml:"startSector"` + EndSector int64 `xml:"endSector"` + Type string `xml:"type"` + Guid string `xml:"guid,omitempty"` + Logical bool `xml:"logical"` + Attributes byte `xml:"attributes"` + PartitionAlignment int64 `xml:"partitionAlignment,omitempty"` +} + +func init() { + t["HostDiskPartitionAttributes"] = reflect.TypeOf((*HostDiskPartitionAttributes)(nil)).Elem() +} + +type HostDiskPartitionBlockRange struct { + DynamicData + + Partition int32 `xml:"partition,omitempty"` + Type string `xml:"type"` + Start HostDiskDimensionsLba `xml:"start"` + End HostDiskDimensionsLba `xml:"end"` +} + +func init() { + t["HostDiskPartitionBlockRange"] = reflect.TypeOf((*HostDiskPartitionBlockRange)(nil)).Elem() +} + +type HostDiskPartitionInfo struct { + DynamicData + + DeviceName string `xml:"deviceName"` + Spec HostDiskPartitionSpec `xml:"spec"` + Layout HostDiskPartitionLayout `xml:"layout"` +} + +func init() { + t["HostDiskPartitionInfo"] = reflect.TypeOf((*HostDiskPartitionInfo)(nil)).Elem() +} + +type HostDiskPartitionLayout struct { + DynamicData + + Total *HostDiskDimensionsLba `xml:"total,omitempty"` + Partition []HostDiskPartitionBlockRange `xml:"partition"` +} + +func init() { + t["HostDiskPartitionLayout"] = reflect.TypeOf((*HostDiskPartitionLayout)(nil)).Elem() +} + +type HostDiskPartitionSpec struct { + DynamicData + + PartitionFormat string `xml:"partitionFormat,omitempty"` + Chs *HostDiskDimensionsChs `xml:"chs,omitempty"` + TotalSectors int64 `xml:"totalSectors,omitempty"` + Partition []HostDiskPartitionAttributes `xml:"partition,omitempty"` +} + +func init() { + t["HostDiskPartitionSpec"] = reflect.TypeOf((*HostDiskPartitionSpec)(nil)).Elem() +} + +type HostDnsConfig struct { + DynamicData + + Dhcp bool `xml:"dhcp"` + VirtualNicDevice string `xml:"virtualNicDevice,omitempty"` + Ipv6VirtualNicDevice string `xml:"ipv6VirtualNicDevice,omitempty"` + HostName string `xml:"hostName"` + DomainName string `xml:"domainName"` + Address []string `xml:"address,omitempty"` + SearchDomain []string `xml:"searchDomain,omitempty"` +} + +func init() { + t["HostDnsConfig"] = reflect.TypeOf((*HostDnsConfig)(nil)).Elem() +} + +type HostDnsConfigSpec struct { + HostDnsConfig + + VirtualNicConnection *HostVirtualNicConnection `xml:"virtualNicConnection,omitempty"` + VirtualNicConnectionV6 *HostVirtualNicConnection `xml:"virtualNicConnectionV6,omitempty"` +} + +func init() { + t["HostDnsConfigSpec"] = reflect.TypeOf((*HostDnsConfigSpec)(nil)).Elem() +} + +type HostEnableAdminFailedEvent struct { + HostEvent + + Permissions []Permission `xml:"permissions"` +} + +func init() { + t["HostEnableAdminFailedEvent"] = reflect.TypeOf((*HostEnableAdminFailedEvent)(nil)).Elem() +} + +type HostEnterMaintenanceResult struct { + DynamicData + + VmFaults []FaultsByVM `xml:"vmFaults,omitempty"` + HostFaults []FaultsByHost `xml:"hostFaults,omitempty"` +} + +func init() { + t["HostEnterMaintenanceResult"] = reflect.TypeOf((*HostEnterMaintenanceResult)(nil)).Elem() +} + +type HostEsxAgentHostManagerConfigInfo struct { + DynamicData + + AgentVmDatastore *ManagedObjectReference `xml:"agentVmDatastore,omitempty"` + AgentVmNetwork *ManagedObjectReference `xml:"agentVmNetwork,omitempty"` +} + +func init() { + t["HostEsxAgentHostManagerConfigInfo"] = reflect.TypeOf((*HostEsxAgentHostManagerConfigInfo)(nil)).Elem() +} + +type HostEvent struct { + Event +} + +func init() { + t["HostEvent"] = reflect.TypeOf((*HostEvent)(nil)).Elem() +} + +type HostEventArgument struct { + EntityEventArgument + + Host ManagedObjectReference `xml:"host"` +} + +func init() { + t["HostEventArgument"] = reflect.TypeOf((*HostEventArgument)(nil)).Elem() +} + +type HostExtendDiskRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + NewCapacityInMB int64 `xml:"newCapacityInMB"` +} + +func init() { + t["HostExtendDiskRequestType"] = reflect.TypeOf((*HostExtendDiskRequestType)(nil)).Elem() +} + +type HostExtendDisk_Task HostExtendDiskRequestType + +func init() { + t["HostExtendDisk_Task"] = reflect.TypeOf((*HostExtendDisk_Task)(nil)).Elem() +} + +type HostExtendDisk_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type HostExtraNetworksEvent struct { + HostDasEvent + + Ips string `xml:"ips,omitempty"` +} + +func init() { + t["HostExtraNetworksEvent"] = reflect.TypeOf((*HostExtraNetworksEvent)(nil)).Elem() +} + +type HostFaultToleranceManagerComponentHealthInfo struct { + DynamicData + + IsStorageHealthy bool `xml:"isStorageHealthy"` + IsNetworkHealthy bool `xml:"isNetworkHealthy"` +} + +func init() { + t["HostFaultToleranceManagerComponentHealthInfo"] = reflect.TypeOf((*HostFaultToleranceManagerComponentHealthInfo)(nil)).Elem() +} + +type HostFeatureCapability struct { + DynamicData + + Key string `xml:"key"` + FeatureName string `xml:"featureName"` + Value string `xml:"value"` +} + +func init() { + t["HostFeatureCapability"] = reflect.TypeOf((*HostFeatureCapability)(nil)).Elem() +} + +type HostFeatureMask struct { + DynamicData + + Key string `xml:"key"` + FeatureName string `xml:"featureName"` + Value string `xml:"value"` +} + +func init() { + t["HostFeatureMask"] = reflect.TypeOf((*HostFeatureMask)(nil)).Elem() +} + +type HostFeatureVersionInfo struct { + DynamicData + + Key string `xml:"key"` + Value string `xml:"value"` +} + +func init() { + t["HostFeatureVersionInfo"] = reflect.TypeOf((*HostFeatureVersionInfo)(nil)).Elem() +} + +type HostFibreChannelHba struct { + HostHostBusAdapter + + PortWorldWideName int64 `xml:"portWorldWideName"` + NodeWorldWideName int64 `xml:"nodeWorldWideName"` + PortType FibreChannelPortType `xml:"portType"` + Speed int64 `xml:"speed"` +} + +func init() { + t["HostFibreChannelHba"] = reflect.TypeOf((*HostFibreChannelHba)(nil)).Elem() +} + +type HostFibreChannelOverEthernetHba struct { + HostFibreChannelHba + + UnderlyingNic string `xml:"underlyingNic"` + LinkInfo HostFibreChannelOverEthernetHbaLinkInfo `xml:"linkInfo"` + IsSoftwareFcoe bool `xml:"isSoftwareFcoe"` + MarkedForRemoval bool `xml:"markedForRemoval"` +} + +func init() { + t["HostFibreChannelOverEthernetHba"] = reflect.TypeOf((*HostFibreChannelOverEthernetHba)(nil)).Elem() +} + +type HostFibreChannelOverEthernetHbaLinkInfo struct { + DynamicData + + VnportMac string `xml:"vnportMac"` + FcfMac string `xml:"fcfMac"` + VlanId int32 `xml:"vlanId"` +} + +func init() { + t["HostFibreChannelOverEthernetHbaLinkInfo"] = reflect.TypeOf((*HostFibreChannelOverEthernetHbaLinkInfo)(nil)).Elem() +} + +type HostFibreChannelOverEthernetTargetTransport struct { + HostFibreChannelTargetTransport + + VnportMac string `xml:"vnportMac"` + FcfMac string `xml:"fcfMac"` + VlanId int32 `xml:"vlanId"` +} + +func init() { + t["HostFibreChannelOverEthernetTargetTransport"] = reflect.TypeOf((*HostFibreChannelOverEthernetTargetTransport)(nil)).Elem() +} + +type HostFibreChannelTargetTransport struct { + HostTargetTransport + + PortWorldWideName int64 `xml:"portWorldWideName"` + NodeWorldWideName int64 `xml:"nodeWorldWideName"` +} + +func init() { + t["HostFibreChannelTargetTransport"] = reflect.TypeOf((*HostFibreChannelTargetTransport)(nil)).Elem() +} + +type HostFileAccess struct { + DynamicData + + Who string `xml:"who"` + What string `xml:"what"` +} + +func init() { + t["HostFileAccess"] = reflect.TypeOf((*HostFileAccess)(nil)).Elem() +} + +type HostFileSystemMountInfo struct { + DynamicData + + MountInfo HostMountInfo `xml:"mountInfo"` + Volume BaseHostFileSystemVolume `xml:"volume,typeattr"` + VStorageSupport string `xml:"vStorageSupport,omitempty"` +} + +func init() { + t["HostFileSystemMountInfo"] = reflect.TypeOf((*HostFileSystemMountInfo)(nil)).Elem() +} + +type HostFileSystemVolume struct { + DynamicData + + Type string `xml:"type"` + Name string `xml:"name"` + Capacity int64 `xml:"capacity"` +} + +func init() { + t["HostFileSystemVolume"] = reflect.TypeOf((*HostFileSystemVolume)(nil)).Elem() +} + +type HostFileSystemVolumeInfo struct { + DynamicData + + VolumeTypeList []string `xml:"volumeTypeList,omitempty"` + MountInfo []HostFileSystemMountInfo `xml:"mountInfo,omitempty"` +} + +func init() { + t["HostFileSystemVolumeInfo"] = reflect.TypeOf((*HostFileSystemVolumeInfo)(nil)).Elem() +} + +type HostFirewallConfig struct { + DynamicData + + Rule []HostFirewallConfigRuleSetConfig `xml:"rule,omitempty"` + DefaultBlockingPolicy HostFirewallDefaultPolicy `xml:"defaultBlockingPolicy"` +} + +func init() { + t["HostFirewallConfig"] = reflect.TypeOf((*HostFirewallConfig)(nil)).Elem() +} + +type HostFirewallConfigRuleSetConfig struct { + DynamicData + + RulesetId string `xml:"rulesetId"` + Enabled bool `xml:"enabled"` + AllowedHosts *HostFirewallRulesetIpList `xml:"allowedHosts,omitempty"` +} + +func init() { + t["HostFirewallConfigRuleSetConfig"] = reflect.TypeOf((*HostFirewallConfigRuleSetConfig)(nil)).Elem() +} + +type HostFirewallDefaultPolicy struct { + DynamicData + + IncomingBlocked *bool `xml:"incomingBlocked"` + OutgoingBlocked *bool `xml:"outgoingBlocked"` +} + +func init() { + t["HostFirewallDefaultPolicy"] = reflect.TypeOf((*HostFirewallDefaultPolicy)(nil)).Elem() +} + +type HostFirewallInfo struct { + DynamicData + + DefaultPolicy HostFirewallDefaultPolicy `xml:"defaultPolicy"` + Ruleset []HostFirewallRuleset `xml:"ruleset,omitempty"` +} + +func init() { + t["HostFirewallInfo"] = reflect.TypeOf((*HostFirewallInfo)(nil)).Elem() +} + +type HostFirewallRule struct { + DynamicData + + Port int32 `xml:"port"` + EndPort int32 `xml:"endPort,omitempty"` + Direction HostFirewallRuleDirection `xml:"direction"` + PortType HostFirewallRulePortType `xml:"portType,omitempty"` + Protocol string `xml:"protocol"` +} + +func init() { + t["HostFirewallRule"] = reflect.TypeOf((*HostFirewallRule)(nil)).Elem() +} + +type HostFirewallRuleset struct { + DynamicData + + Key string `xml:"key"` + Label string `xml:"label"` + Required bool `xml:"required"` + Rule []HostFirewallRule `xml:"rule"` + Service string `xml:"service,omitempty"` + Enabled bool `xml:"enabled"` + AllowedHosts *HostFirewallRulesetIpList `xml:"allowedHosts,omitempty"` +} + +func init() { + t["HostFirewallRuleset"] = reflect.TypeOf((*HostFirewallRuleset)(nil)).Elem() +} + +type HostFirewallRulesetIpList struct { + DynamicData + + IpAddress []string `xml:"ipAddress,omitempty"` + IpNetwork []HostFirewallRulesetIpNetwork `xml:"ipNetwork,omitempty"` + AllIp bool `xml:"allIp"` +} + +func init() { + t["HostFirewallRulesetIpList"] = reflect.TypeOf((*HostFirewallRulesetIpList)(nil)).Elem() +} + +type HostFirewallRulesetIpNetwork struct { + DynamicData + + Network string `xml:"network"` + PrefixLength int32 `xml:"prefixLength"` +} + +func init() { + t["HostFirewallRulesetIpNetwork"] = reflect.TypeOf((*HostFirewallRulesetIpNetwork)(nil)).Elem() +} + +type HostFirewallRulesetRulesetSpec struct { + DynamicData + + AllowedHosts HostFirewallRulesetIpList `xml:"allowedHosts"` +} + +func init() { + t["HostFirewallRulesetRulesetSpec"] = reflect.TypeOf((*HostFirewallRulesetRulesetSpec)(nil)).Elem() +} + +type HostFlagInfo struct { + DynamicData + + BackgroundSnapshotsEnabled *bool `xml:"backgroundSnapshotsEnabled"` +} + +func init() { + t["HostFlagInfo"] = reflect.TypeOf((*HostFlagInfo)(nil)).Elem() +} + +type HostForceMountedInfo struct { + DynamicData + + Persist bool `xml:"persist"` + Mounted bool `xml:"mounted"` +} + +func init() { + t["HostForceMountedInfo"] = reflect.TypeOf((*HostForceMountedInfo)(nil)).Elem() +} + +type HostGatewaySpec struct { + DynamicData + + GatewayType string `xml:"gatewayType"` + GatewayId string `xml:"gatewayId,omitempty"` + TrustVerificationToken string `xml:"trustVerificationToken,omitempty"` + HostAuthParams []KeyValue `xml:"hostAuthParams,omitempty"` +} + +func init() { + t["HostGatewaySpec"] = reflect.TypeOf((*HostGatewaySpec)(nil)).Elem() +} + +type HostGetShortNameFailedEvent struct { + HostEvent +} + +func init() { + t["HostGetShortNameFailedEvent"] = reflect.TypeOf((*HostGetShortNameFailedEvent)(nil)).Elem() +} + +type HostGetVFlashModuleDefaultConfig HostGetVFlashModuleDefaultConfigRequestType + +func init() { + t["HostGetVFlashModuleDefaultConfig"] = reflect.TypeOf((*HostGetVFlashModuleDefaultConfig)(nil)).Elem() +} + +type HostGetVFlashModuleDefaultConfigRequestType struct { + This ManagedObjectReference `xml:"_this"` + VFlashModule string `xml:"vFlashModule"` +} + +func init() { + t["HostGetVFlashModuleDefaultConfigRequestType"] = reflect.TypeOf((*HostGetVFlashModuleDefaultConfigRequestType)(nil)).Elem() +} + +type HostGetVFlashModuleDefaultConfigResponse struct { + Returnval VirtualDiskVFlashCacheConfigInfo `xml:"returnval"` +} + +type HostGraphicsConfig struct { + DynamicData + + HostDefaultGraphicsType string `xml:"hostDefaultGraphicsType"` + SharedPassthruAssignmentPolicy string `xml:"sharedPassthruAssignmentPolicy"` + DeviceType []HostGraphicsConfigDeviceType `xml:"deviceType,omitempty"` +} + +func init() { + t["HostGraphicsConfig"] = reflect.TypeOf((*HostGraphicsConfig)(nil)).Elem() +} + +type HostGraphicsConfigDeviceType struct { + DynamicData + + DeviceId string `xml:"deviceId"` + GraphicsType string `xml:"graphicsType"` +} + +func init() { + t["HostGraphicsConfigDeviceType"] = reflect.TypeOf((*HostGraphicsConfigDeviceType)(nil)).Elem() +} + +type HostGraphicsInfo struct { + DynamicData + + DeviceName string `xml:"deviceName"` + VendorName string `xml:"vendorName"` + PciId string `xml:"pciId"` + GraphicsType string `xml:"graphicsType"` + MemorySizeInKB int64 `xml:"memorySizeInKB"` + Vm []ManagedObjectReference `xml:"vm,omitempty"` +} + +func init() { + t["HostGraphicsInfo"] = reflect.TypeOf((*HostGraphicsInfo)(nil)).Elem() +} + +type HostHardwareElementInfo struct { + DynamicData + + Name string `xml:"name"` + Status BaseElementDescription `xml:"status,typeattr"` +} + +func init() { + t["HostHardwareElementInfo"] = reflect.TypeOf((*HostHardwareElementInfo)(nil)).Elem() +} + +type HostHardwareInfo struct { + DynamicData + + SystemInfo HostSystemInfo `xml:"systemInfo"` + CpuPowerManagementInfo *HostCpuPowerManagementInfo `xml:"cpuPowerManagementInfo,omitempty"` + CpuInfo HostCpuInfo `xml:"cpuInfo"` + CpuPkg []HostCpuPackage `xml:"cpuPkg"` + MemorySize int64 `xml:"memorySize"` + NumaInfo *HostNumaInfo `xml:"numaInfo,omitempty"` + SmcPresent *bool `xml:"smcPresent"` + PciDevice []HostPciDevice `xml:"pciDevice,omitempty"` + CpuFeature []HostCpuIdInfo `xml:"cpuFeature,omitempty"` + BiosInfo *HostBIOSInfo `xml:"biosInfo,omitempty"` + ReliableMemoryInfo *HostReliableMemoryInfo `xml:"reliableMemoryInfo,omitempty"` + PersistentMemoryInfo *HostPersistentMemoryInfo `xml:"persistentMemoryInfo,omitempty"` + SgxInfo *HostSgxInfo `xml:"sgxInfo,omitempty"` +} + +func init() { + t["HostHardwareInfo"] = reflect.TypeOf((*HostHardwareInfo)(nil)).Elem() +} + +type HostHardwareStatusInfo struct { + DynamicData + + MemoryStatusInfo []BaseHostHardwareElementInfo `xml:"memoryStatusInfo,omitempty,typeattr"` + CpuStatusInfo []BaseHostHardwareElementInfo `xml:"cpuStatusInfo,omitempty,typeattr"` + StorageStatusInfo []HostStorageElementInfo `xml:"storageStatusInfo,omitempty"` +} + +func init() { + t["HostHardwareStatusInfo"] = reflect.TypeOf((*HostHardwareStatusInfo)(nil)).Elem() +} + +type HostHardwareSummary struct { + DynamicData + + Vendor string `xml:"vendor"` + Model string `xml:"model"` + Uuid string `xml:"uuid"` + OtherIdentifyingInfo []HostSystemIdentificationInfo `xml:"otherIdentifyingInfo,omitempty"` + MemorySize int64 `xml:"memorySize"` + CpuModel string `xml:"cpuModel"` + CpuMhz int32 `xml:"cpuMhz"` + NumCpuPkgs int16 `xml:"numCpuPkgs"` + NumCpuCores int16 `xml:"numCpuCores"` + NumCpuThreads int16 `xml:"numCpuThreads"` + NumNics int32 `xml:"numNics"` + NumHBAs int32 `xml:"numHBAs"` +} + +func init() { + t["HostHardwareSummary"] = reflect.TypeOf((*HostHardwareSummary)(nil)).Elem() +} + +type HostHasComponentFailure struct { + VimFault + + HostName string `xml:"hostName"` + ComponentType string `xml:"componentType"` + ComponentName string `xml:"componentName"` +} + +func init() { + t["HostHasComponentFailure"] = reflect.TypeOf((*HostHasComponentFailure)(nil)).Elem() +} + +type HostHasComponentFailureFault HostHasComponentFailure + +func init() { + t["HostHasComponentFailureFault"] = reflect.TypeOf((*HostHasComponentFailureFault)(nil)).Elem() +} + +type HostHostBusAdapter struct { + DynamicData + + Key string `xml:"key,omitempty"` + Device string `xml:"device"` + Bus int32 `xml:"bus"` + Status string `xml:"status"` + Model string `xml:"model"` + Driver string `xml:"driver,omitempty"` + Pci string `xml:"pci,omitempty"` + StorageProtocol string `xml:"storageProtocol,omitempty"` +} + +func init() { + t["HostHostBusAdapter"] = reflect.TypeOf((*HostHostBusAdapter)(nil)).Elem() +} + +type HostHyperThreadScheduleInfo struct { + DynamicData + + Available bool `xml:"available"` + Active bool `xml:"active"` + Config bool `xml:"config"` +} + +func init() { + t["HostHyperThreadScheduleInfo"] = reflect.TypeOf((*HostHyperThreadScheduleInfo)(nil)).Elem() +} + +type HostImageConfigGetAcceptance HostImageConfigGetAcceptanceRequestType + +func init() { + t["HostImageConfigGetAcceptance"] = reflect.TypeOf((*HostImageConfigGetAcceptance)(nil)).Elem() +} + +type HostImageConfigGetAcceptanceRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["HostImageConfigGetAcceptanceRequestType"] = reflect.TypeOf((*HostImageConfigGetAcceptanceRequestType)(nil)).Elem() +} + +type HostImageConfigGetAcceptanceResponse struct { + Returnval string `xml:"returnval"` +} + +type HostImageConfigGetProfile HostImageConfigGetProfileRequestType + +func init() { + t["HostImageConfigGetProfile"] = reflect.TypeOf((*HostImageConfigGetProfile)(nil)).Elem() +} + +type HostImageConfigGetProfileRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["HostImageConfigGetProfileRequestType"] = reflect.TypeOf((*HostImageConfigGetProfileRequestType)(nil)).Elem() +} + +type HostImageConfigGetProfileResponse struct { + Returnval HostImageProfileSummary `xml:"returnval"` +} + +type HostImageProfileSummary struct { + DynamicData + + Name string `xml:"name"` + Vendor string `xml:"vendor"` +} + +func init() { + t["HostImageProfileSummary"] = reflect.TypeOf((*HostImageProfileSummary)(nil)).Elem() +} + +type HostInAuditModeEvent struct { + HostEvent +} + +func init() { + t["HostInAuditModeEvent"] = reflect.TypeOf((*HostInAuditModeEvent)(nil)).Elem() +} + +type HostInDomain struct { + HostConfigFault +} + +func init() { + t["HostInDomain"] = reflect.TypeOf((*HostInDomain)(nil)).Elem() +} + +type HostInDomainFault HostInDomain + +func init() { + t["HostInDomainFault"] = reflect.TypeOf((*HostInDomainFault)(nil)).Elem() +} + +type HostIncompatibleForFaultTolerance struct { + VmFaultToleranceIssue + + HostName string `xml:"hostName,omitempty"` + Reason string `xml:"reason,omitempty"` +} + +func init() { + t["HostIncompatibleForFaultTolerance"] = reflect.TypeOf((*HostIncompatibleForFaultTolerance)(nil)).Elem() +} + +type HostIncompatibleForFaultToleranceFault HostIncompatibleForFaultTolerance + +func init() { + t["HostIncompatibleForFaultToleranceFault"] = reflect.TypeOf((*HostIncompatibleForFaultToleranceFault)(nil)).Elem() +} + +type HostIncompatibleForRecordReplay struct { + VimFault + + HostName string `xml:"hostName,omitempty"` + Reason string `xml:"reason,omitempty"` +} + +func init() { + t["HostIncompatibleForRecordReplay"] = reflect.TypeOf((*HostIncompatibleForRecordReplay)(nil)).Elem() +} + +type HostIncompatibleForRecordReplayFault HostIncompatibleForRecordReplay + +func init() { + t["HostIncompatibleForRecordReplayFault"] = reflect.TypeOf((*HostIncompatibleForRecordReplayFault)(nil)).Elem() +} + +type HostInflateDiskRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["HostInflateDiskRequestType"] = reflect.TypeOf((*HostInflateDiskRequestType)(nil)).Elem() +} + +type HostInflateDisk_Task HostInflateDiskRequestType + +func init() { + t["HostInflateDisk_Task"] = reflect.TypeOf((*HostInflateDisk_Task)(nil)).Elem() +} + +type HostInflateDisk_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type HostInternetScsiHba struct { + HostHostBusAdapter + + IsSoftwareBased bool `xml:"isSoftwareBased"` + CanBeDisabled *bool `xml:"canBeDisabled"` + NetworkBindingSupport HostInternetScsiHbaNetworkBindingSupportType `xml:"networkBindingSupport,omitempty"` + DiscoveryCapabilities HostInternetScsiHbaDiscoveryCapabilities `xml:"discoveryCapabilities"` + DiscoveryProperties HostInternetScsiHbaDiscoveryProperties `xml:"discoveryProperties"` + AuthenticationCapabilities HostInternetScsiHbaAuthenticationCapabilities `xml:"authenticationCapabilities"` + AuthenticationProperties HostInternetScsiHbaAuthenticationProperties `xml:"authenticationProperties"` + DigestCapabilities *HostInternetScsiHbaDigestCapabilities `xml:"digestCapabilities,omitempty"` + DigestProperties *HostInternetScsiHbaDigestProperties `xml:"digestProperties,omitempty"` + IpCapabilities HostInternetScsiHbaIPCapabilities `xml:"ipCapabilities"` + IpProperties HostInternetScsiHbaIPProperties `xml:"ipProperties"` + SupportedAdvancedOptions []OptionDef `xml:"supportedAdvancedOptions,omitempty"` + AdvancedOptions []HostInternetScsiHbaParamValue `xml:"advancedOptions,omitempty"` + IScsiName string `xml:"iScsiName"` + IScsiAlias string `xml:"iScsiAlias,omitempty"` + ConfiguredSendTarget []HostInternetScsiHbaSendTarget `xml:"configuredSendTarget,omitempty"` + ConfiguredStaticTarget []HostInternetScsiHbaStaticTarget `xml:"configuredStaticTarget,omitempty"` + MaxSpeedMb int32 `xml:"maxSpeedMb,omitempty"` + CurrentSpeedMb int32 `xml:"currentSpeedMb,omitempty"` +} + +func init() { + t["HostInternetScsiHba"] = reflect.TypeOf((*HostInternetScsiHba)(nil)).Elem() +} + +type HostInternetScsiHbaAuthenticationCapabilities struct { + DynamicData + + ChapAuthSettable bool `xml:"chapAuthSettable"` + Krb5AuthSettable bool `xml:"krb5AuthSettable"` + SrpAuthSettable bool `xml:"srpAuthSettable"` + SpkmAuthSettable bool `xml:"spkmAuthSettable"` + MutualChapSettable *bool `xml:"mutualChapSettable"` + TargetChapSettable *bool `xml:"targetChapSettable"` + TargetMutualChapSettable *bool `xml:"targetMutualChapSettable"` +} + +func init() { + t["HostInternetScsiHbaAuthenticationCapabilities"] = reflect.TypeOf((*HostInternetScsiHbaAuthenticationCapabilities)(nil)).Elem() +} + +type HostInternetScsiHbaAuthenticationProperties struct { + DynamicData + + ChapAuthEnabled bool `xml:"chapAuthEnabled"` + ChapName string `xml:"chapName,omitempty"` + ChapSecret string `xml:"chapSecret,omitempty"` + ChapAuthenticationType string `xml:"chapAuthenticationType,omitempty"` + ChapInherited *bool `xml:"chapInherited"` + MutualChapName string `xml:"mutualChapName,omitempty"` + MutualChapSecret string `xml:"mutualChapSecret,omitempty"` + MutualChapAuthenticationType string `xml:"mutualChapAuthenticationType,omitempty"` + MutualChapInherited *bool `xml:"mutualChapInherited"` +} + +func init() { + t["HostInternetScsiHbaAuthenticationProperties"] = reflect.TypeOf((*HostInternetScsiHbaAuthenticationProperties)(nil)).Elem() +} + +type HostInternetScsiHbaDigestCapabilities struct { + DynamicData + + HeaderDigestSettable *bool `xml:"headerDigestSettable"` + DataDigestSettable *bool `xml:"dataDigestSettable"` + TargetHeaderDigestSettable *bool `xml:"targetHeaderDigestSettable"` + TargetDataDigestSettable *bool `xml:"targetDataDigestSettable"` +} + +func init() { + t["HostInternetScsiHbaDigestCapabilities"] = reflect.TypeOf((*HostInternetScsiHbaDigestCapabilities)(nil)).Elem() +} + +type HostInternetScsiHbaDigestProperties struct { + DynamicData + + HeaderDigestType string `xml:"headerDigestType,omitempty"` + HeaderDigestInherited *bool `xml:"headerDigestInherited"` + DataDigestType string `xml:"dataDigestType,omitempty"` + DataDigestInherited *bool `xml:"dataDigestInherited"` +} + +func init() { + t["HostInternetScsiHbaDigestProperties"] = reflect.TypeOf((*HostInternetScsiHbaDigestProperties)(nil)).Elem() +} + +type HostInternetScsiHbaDiscoveryCapabilities struct { + DynamicData + + ISnsDiscoverySettable bool `xml:"iSnsDiscoverySettable"` + SlpDiscoverySettable bool `xml:"slpDiscoverySettable"` + StaticTargetDiscoverySettable bool `xml:"staticTargetDiscoverySettable"` + SendTargetsDiscoverySettable bool `xml:"sendTargetsDiscoverySettable"` +} + +func init() { + t["HostInternetScsiHbaDiscoveryCapabilities"] = reflect.TypeOf((*HostInternetScsiHbaDiscoveryCapabilities)(nil)).Elem() +} + +type HostInternetScsiHbaDiscoveryProperties struct { + DynamicData + + ISnsDiscoveryEnabled bool `xml:"iSnsDiscoveryEnabled"` + ISnsDiscoveryMethod string `xml:"iSnsDiscoveryMethod,omitempty"` + ISnsHost string `xml:"iSnsHost,omitempty"` + SlpDiscoveryEnabled bool `xml:"slpDiscoveryEnabled"` + SlpDiscoveryMethod string `xml:"slpDiscoveryMethod,omitempty"` + SlpHost string `xml:"slpHost,omitempty"` + StaticTargetDiscoveryEnabled bool `xml:"staticTargetDiscoveryEnabled"` + SendTargetsDiscoveryEnabled bool `xml:"sendTargetsDiscoveryEnabled"` +} + +func init() { + t["HostInternetScsiHbaDiscoveryProperties"] = reflect.TypeOf((*HostInternetScsiHbaDiscoveryProperties)(nil)).Elem() +} + +type HostInternetScsiHbaIPCapabilities struct { + DynamicData + + AddressSettable bool `xml:"addressSettable"` + IpConfigurationMethodSettable bool `xml:"ipConfigurationMethodSettable"` + SubnetMaskSettable bool `xml:"subnetMaskSettable"` + DefaultGatewaySettable bool `xml:"defaultGatewaySettable"` + PrimaryDnsServerAddressSettable bool `xml:"primaryDnsServerAddressSettable"` + AlternateDnsServerAddressSettable bool `xml:"alternateDnsServerAddressSettable"` + Ipv6Supported *bool `xml:"ipv6Supported"` + ArpRedirectSettable *bool `xml:"arpRedirectSettable"` + MtuSettable *bool `xml:"mtuSettable"` + HostNameAsTargetAddress *bool `xml:"hostNameAsTargetAddress"` + NameAliasSettable *bool `xml:"nameAliasSettable"` + Ipv4EnableSettable *bool `xml:"ipv4EnableSettable"` + Ipv6EnableSettable *bool `xml:"ipv6EnableSettable"` + Ipv6PrefixLengthSettable *bool `xml:"ipv6PrefixLengthSettable"` + Ipv6PrefixLength int32 `xml:"ipv6PrefixLength,omitempty"` + Ipv6DhcpConfigurationSettable *bool `xml:"ipv6DhcpConfigurationSettable"` + Ipv6LinkLocalAutoConfigurationSettable *bool `xml:"ipv6LinkLocalAutoConfigurationSettable"` + Ipv6RouterAdvertisementConfigurationSettable *bool `xml:"ipv6RouterAdvertisementConfigurationSettable"` + Ipv6DefaultGatewaySettable *bool `xml:"ipv6DefaultGatewaySettable"` + Ipv6MaxStaticAddressesSupported int32 `xml:"ipv6MaxStaticAddressesSupported,omitempty"` +} + +func init() { + t["HostInternetScsiHbaIPCapabilities"] = reflect.TypeOf((*HostInternetScsiHbaIPCapabilities)(nil)).Elem() +} + +type HostInternetScsiHbaIPProperties struct { + DynamicData + + Mac string `xml:"mac,omitempty"` + Address string `xml:"address,omitempty"` + DhcpConfigurationEnabled bool `xml:"dhcpConfigurationEnabled"` + SubnetMask string `xml:"subnetMask,omitempty"` + DefaultGateway string `xml:"defaultGateway,omitempty"` + PrimaryDnsServerAddress string `xml:"primaryDnsServerAddress,omitempty"` + AlternateDnsServerAddress string `xml:"alternateDnsServerAddress,omitempty"` + Ipv6Address string `xml:"ipv6Address,omitempty"` + Ipv6SubnetMask string `xml:"ipv6SubnetMask,omitempty"` + Ipv6DefaultGateway string `xml:"ipv6DefaultGateway,omitempty"` + ArpRedirectEnabled *bool `xml:"arpRedirectEnabled"` + Mtu int32 `xml:"mtu,omitempty"` + JumboFramesEnabled *bool `xml:"jumboFramesEnabled"` + Ipv4Enabled *bool `xml:"ipv4Enabled"` + Ipv6Enabled *bool `xml:"ipv6Enabled"` + Ipv6properties *HostInternetScsiHbaIPv6Properties `xml:"ipv6properties,omitempty"` +} + +func init() { + t["HostInternetScsiHbaIPProperties"] = reflect.TypeOf((*HostInternetScsiHbaIPProperties)(nil)).Elem() +} + +type HostInternetScsiHbaIPv6Properties struct { + DynamicData + + IscsiIpv6Address []HostInternetScsiHbaIscsiIpv6Address `xml:"iscsiIpv6Address,omitempty"` + Ipv6DhcpConfigurationEnabled *bool `xml:"ipv6DhcpConfigurationEnabled"` + Ipv6LinkLocalAutoConfigurationEnabled *bool `xml:"ipv6LinkLocalAutoConfigurationEnabled"` + Ipv6RouterAdvertisementConfigurationEnabled *bool `xml:"ipv6RouterAdvertisementConfigurationEnabled"` + Ipv6DefaultGateway string `xml:"ipv6DefaultGateway,omitempty"` +} + +func init() { + t["HostInternetScsiHbaIPv6Properties"] = reflect.TypeOf((*HostInternetScsiHbaIPv6Properties)(nil)).Elem() +} + +type HostInternetScsiHbaIscsiIpv6Address struct { + DynamicData + + Address string `xml:"address"` + PrefixLength int32 `xml:"prefixLength"` + Origin string `xml:"origin"` + Operation string `xml:"operation,omitempty"` +} + +func init() { + t["HostInternetScsiHbaIscsiIpv6Address"] = reflect.TypeOf((*HostInternetScsiHbaIscsiIpv6Address)(nil)).Elem() +} + +type HostInternetScsiHbaParamValue struct { + OptionValue + + IsInherited *bool `xml:"isInherited"` +} + +func init() { + t["HostInternetScsiHbaParamValue"] = reflect.TypeOf((*HostInternetScsiHbaParamValue)(nil)).Elem() +} + +type HostInternetScsiHbaSendTarget struct { + DynamicData + + Address string `xml:"address"` + Port int32 `xml:"port,omitempty"` + AuthenticationProperties *HostInternetScsiHbaAuthenticationProperties `xml:"authenticationProperties,omitempty"` + DigestProperties *HostInternetScsiHbaDigestProperties `xml:"digestProperties,omitempty"` + SupportedAdvancedOptions []OptionDef `xml:"supportedAdvancedOptions,omitempty"` + AdvancedOptions []HostInternetScsiHbaParamValue `xml:"advancedOptions,omitempty"` + Parent string `xml:"parent,omitempty"` +} + +func init() { + t["HostInternetScsiHbaSendTarget"] = reflect.TypeOf((*HostInternetScsiHbaSendTarget)(nil)).Elem() +} + +type HostInternetScsiHbaStaticTarget struct { + DynamicData + + Address string `xml:"address"` + Port int32 `xml:"port,omitempty"` + IScsiName string `xml:"iScsiName"` + DiscoveryMethod string `xml:"discoveryMethod,omitempty"` + AuthenticationProperties *HostInternetScsiHbaAuthenticationProperties `xml:"authenticationProperties,omitempty"` + DigestProperties *HostInternetScsiHbaDigestProperties `xml:"digestProperties,omitempty"` + SupportedAdvancedOptions []OptionDef `xml:"supportedAdvancedOptions,omitempty"` + AdvancedOptions []HostInternetScsiHbaParamValue `xml:"advancedOptions,omitempty"` + Parent string `xml:"parent,omitempty"` +} + +func init() { + t["HostInternetScsiHbaStaticTarget"] = reflect.TypeOf((*HostInternetScsiHbaStaticTarget)(nil)).Elem() +} + +type HostInternetScsiHbaTargetSet struct { + DynamicData + + StaticTargets []HostInternetScsiHbaStaticTarget `xml:"staticTargets,omitempty"` + SendTargets []HostInternetScsiHbaSendTarget `xml:"sendTargets,omitempty"` +} + +func init() { + t["HostInternetScsiHbaTargetSet"] = reflect.TypeOf((*HostInternetScsiHbaTargetSet)(nil)).Elem() +} + +type HostInternetScsiTargetTransport struct { + HostTargetTransport + + IScsiName string `xml:"iScsiName"` + IScsiAlias string `xml:"iScsiAlias"` + Address []string `xml:"address,omitempty"` +} + +func init() { + t["HostInternetScsiTargetTransport"] = reflect.TypeOf((*HostInternetScsiTargetTransport)(nil)).Elem() +} + +type HostInventoryFull struct { + NotEnoughLicenses + + Capacity int32 `xml:"capacity"` +} + +func init() { + t["HostInventoryFull"] = reflect.TypeOf((*HostInventoryFull)(nil)).Elem() +} + +type HostInventoryFullEvent struct { + LicenseEvent + + Capacity int32 `xml:"capacity"` +} + +func init() { + t["HostInventoryFullEvent"] = reflect.TypeOf((*HostInventoryFullEvent)(nil)).Elem() +} + +type HostInventoryFullFault HostInventoryFull + +func init() { + t["HostInventoryFullFault"] = reflect.TypeOf((*HostInventoryFullFault)(nil)).Elem() +} + +type HostInventoryUnreadableEvent struct { + Event +} + +func init() { + t["HostInventoryUnreadableEvent"] = reflect.TypeOf((*HostInventoryUnreadableEvent)(nil)).Elem() +} + +type HostIoFilterInfo struct { + IoFilterInfo + + Available bool `xml:"available"` +} + +func init() { + t["HostIoFilterInfo"] = reflect.TypeOf((*HostIoFilterInfo)(nil)).Elem() +} + +type HostIpChangedEvent struct { + HostEvent + + OldIP string `xml:"oldIP"` + NewIP string `xml:"newIP"` +} + +func init() { + t["HostIpChangedEvent"] = reflect.TypeOf((*HostIpChangedEvent)(nil)).Elem() +} + +type HostIpConfig struct { + DynamicData + + Dhcp bool `xml:"dhcp"` + IpAddress string `xml:"ipAddress,omitempty"` + SubnetMask string `xml:"subnetMask,omitempty"` + IpV6Config *HostIpConfigIpV6AddressConfiguration `xml:"ipV6Config,omitempty"` +} + +func init() { + t["HostIpConfig"] = reflect.TypeOf((*HostIpConfig)(nil)).Elem() +} + +type HostIpConfigIpV6Address struct { + DynamicData + + IpAddress string `xml:"ipAddress"` + PrefixLength int32 `xml:"prefixLength"` + Origin string `xml:"origin,omitempty"` + DadState string `xml:"dadState,omitempty"` + Lifetime *time.Time `xml:"lifetime"` + Operation string `xml:"operation,omitempty"` +} + +func init() { + t["HostIpConfigIpV6Address"] = reflect.TypeOf((*HostIpConfigIpV6Address)(nil)).Elem() +} + +type HostIpConfigIpV6AddressConfiguration struct { + DynamicData + + IpV6Address []HostIpConfigIpV6Address `xml:"ipV6Address,omitempty"` + AutoConfigurationEnabled *bool `xml:"autoConfigurationEnabled"` + DhcpV6Enabled *bool `xml:"dhcpV6Enabled"` +} + +func init() { + t["HostIpConfigIpV6AddressConfiguration"] = reflect.TypeOf((*HostIpConfigIpV6AddressConfiguration)(nil)).Elem() +} + +type HostIpInconsistentEvent struct { + HostEvent + + IpAddress string `xml:"ipAddress"` + IpAddress2 string `xml:"ipAddress2"` +} + +func init() { + t["HostIpInconsistentEvent"] = reflect.TypeOf((*HostIpInconsistentEvent)(nil)).Elem() +} + +type HostIpRouteConfig struct { + DynamicData + + DefaultGateway string `xml:"defaultGateway,omitempty"` + GatewayDevice string `xml:"gatewayDevice,omitempty"` + IpV6DefaultGateway string `xml:"ipV6DefaultGateway,omitempty"` + IpV6GatewayDevice string `xml:"ipV6GatewayDevice,omitempty"` +} + +func init() { + t["HostIpRouteConfig"] = reflect.TypeOf((*HostIpRouteConfig)(nil)).Elem() +} + +type HostIpRouteConfigSpec struct { + HostIpRouteConfig + + GatewayDeviceConnection *HostVirtualNicConnection `xml:"gatewayDeviceConnection,omitempty"` + IpV6GatewayDeviceConnection *HostVirtualNicConnection `xml:"ipV6GatewayDeviceConnection,omitempty"` +} + +func init() { + t["HostIpRouteConfigSpec"] = reflect.TypeOf((*HostIpRouteConfigSpec)(nil)).Elem() +} + +type HostIpRouteEntry struct { + DynamicData + + Network string `xml:"network"` + PrefixLength int32 `xml:"prefixLength"` + Gateway string `xml:"gateway"` + DeviceName string `xml:"deviceName,omitempty"` +} + +func init() { + t["HostIpRouteEntry"] = reflect.TypeOf((*HostIpRouteEntry)(nil)).Elem() +} + +type HostIpRouteOp struct { + DynamicData + + ChangeOperation string `xml:"changeOperation"` + Route HostIpRouteEntry `xml:"route"` +} + +func init() { + t["HostIpRouteOp"] = reflect.TypeOf((*HostIpRouteOp)(nil)).Elem() +} + +type HostIpRouteTableConfig struct { + DynamicData + + IpRoute []HostIpRouteOp `xml:"ipRoute,omitempty"` + Ipv6Route []HostIpRouteOp `xml:"ipv6Route,omitempty"` +} + +func init() { + t["HostIpRouteTableConfig"] = reflect.TypeOf((*HostIpRouteTableConfig)(nil)).Elem() +} + +type HostIpRouteTableInfo struct { + DynamicData + + IpRoute []HostIpRouteEntry `xml:"ipRoute,omitempty"` + Ipv6Route []HostIpRouteEntry `xml:"ipv6Route,omitempty"` +} + +func init() { + t["HostIpRouteTableInfo"] = reflect.TypeOf((*HostIpRouteTableInfo)(nil)).Elem() +} + +type HostIpToShortNameFailedEvent struct { + HostEvent +} + +func init() { + t["HostIpToShortNameFailedEvent"] = reflect.TypeOf((*HostIpToShortNameFailedEvent)(nil)).Elem() +} + +type HostIpmiInfo struct { + DynamicData + + BmcIpAddress string `xml:"bmcIpAddress,omitempty"` + BmcMacAddress string `xml:"bmcMacAddress,omitempty"` + Login string `xml:"login,omitempty"` + Password string `xml:"password,omitempty"` +} + +func init() { + t["HostIpmiInfo"] = reflect.TypeOf((*HostIpmiInfo)(nil)).Elem() +} + +type HostIsolationIpPingFailedEvent struct { + HostDasEvent + + IsolationIp string `xml:"isolationIp"` +} + +func init() { + t["HostIsolationIpPingFailedEvent"] = reflect.TypeOf((*HostIsolationIpPingFailedEvent)(nil)).Elem() +} + +type HostLicensableResourceInfo struct { + DynamicData + + Resource []KeyAnyValue `xml:"resource"` +} + +func init() { + t["HostLicensableResourceInfo"] = reflect.TypeOf((*HostLicensableResourceInfo)(nil)).Elem() +} + +type HostLicenseConnectInfo struct { + DynamicData + + License LicenseManagerLicenseInfo `xml:"license"` + Evaluation LicenseManagerEvaluationInfo `xml:"evaluation"` + Resource *HostLicensableResourceInfo `xml:"resource,omitempty"` +} + +func init() { + t["HostLicenseConnectInfo"] = reflect.TypeOf((*HostLicenseConnectInfo)(nil)).Elem() +} + +type HostLicenseExpiredEvent struct { + LicenseEvent +} + +func init() { + t["HostLicenseExpiredEvent"] = reflect.TypeOf((*HostLicenseExpiredEvent)(nil)).Elem() +} + +type HostLicenseSpec struct { + DynamicData + + Source BaseLicenseSource `xml:"source,omitempty,typeattr"` + EditionKey string `xml:"editionKey,omitempty"` + DisabledFeatureKey []string `xml:"disabledFeatureKey,omitempty"` + EnabledFeatureKey []string `xml:"enabledFeatureKey,omitempty"` +} + +func init() { + t["HostLicenseSpec"] = reflect.TypeOf((*HostLicenseSpec)(nil)).Elem() +} + +type HostListSummary struct { + DynamicData + + Host *ManagedObjectReference `xml:"host,omitempty"` + Hardware *HostHardwareSummary `xml:"hardware,omitempty"` + Runtime *HostRuntimeInfo `xml:"runtime,omitempty"` + Config HostConfigSummary `xml:"config"` + QuickStats HostListSummaryQuickStats `xml:"quickStats"` + OverallStatus ManagedEntityStatus `xml:"overallStatus"` + RebootRequired bool `xml:"rebootRequired"` + CustomValue []BaseCustomFieldValue `xml:"customValue,omitempty,typeattr"` + ManagementServerIp string `xml:"managementServerIp,omitempty"` + MaxEVCModeKey string `xml:"maxEVCModeKey,omitempty"` + CurrentEVCModeKey string `xml:"currentEVCModeKey,omitempty"` + Gateway *HostListSummaryGatewaySummary `xml:"gateway,omitempty"` + TpmAttestation *HostTpmAttestationInfo `xml:"tpmAttestation,omitempty"` +} + +func init() { + t["HostListSummary"] = reflect.TypeOf((*HostListSummary)(nil)).Elem() +} + +type HostListSummaryGatewaySummary struct { + DynamicData + + GatewayType string `xml:"gatewayType"` + GatewayId string `xml:"gatewayId"` +} + +func init() { + t["HostListSummaryGatewaySummary"] = reflect.TypeOf((*HostListSummaryGatewaySummary)(nil)).Elem() +} + +type HostListSummaryQuickStats struct { + DynamicData + + OverallCpuUsage int32 `xml:"overallCpuUsage,omitempty"` + OverallMemoryUsage int32 `xml:"overallMemoryUsage,omitempty"` + DistributedCpuFairness int32 `xml:"distributedCpuFairness,omitempty"` + DistributedMemoryFairness int32 `xml:"distributedMemoryFairness,omitempty"` + AvailablePMemCapacity int32 `xml:"availablePMemCapacity,omitempty"` + Uptime int32 `xml:"uptime,omitempty"` +} + +func init() { + t["HostListSummaryQuickStats"] = reflect.TypeOf((*HostListSummaryQuickStats)(nil)).Elem() +} + +type HostListVStorageObject HostListVStorageObjectRequestType + +func init() { + t["HostListVStorageObject"] = reflect.TypeOf((*HostListVStorageObject)(nil)).Elem() +} + +type HostListVStorageObjectRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["HostListVStorageObjectRequestType"] = reflect.TypeOf((*HostListVStorageObjectRequestType)(nil)).Elem() +} + +type HostListVStorageObjectResponse struct { + Returnval []ID `xml:"returnval,omitempty"` +} + +type HostLocalAuthenticationInfo struct { + HostAuthenticationStoreInfo +} + +func init() { + t["HostLocalAuthenticationInfo"] = reflect.TypeOf((*HostLocalAuthenticationInfo)(nil)).Elem() +} + +type HostLocalFileSystemVolume struct { + HostFileSystemVolume + + Device string `xml:"device"` +} + +func init() { + t["HostLocalFileSystemVolume"] = reflect.TypeOf((*HostLocalFileSystemVolume)(nil)).Elem() +} + +type HostLocalFileSystemVolumeSpec struct { + DynamicData + + Device string `xml:"device"` + LocalPath string `xml:"localPath"` +} + +func init() { + t["HostLocalFileSystemVolumeSpec"] = reflect.TypeOf((*HostLocalFileSystemVolumeSpec)(nil)).Elem() +} + +type HostLocalPortCreatedEvent struct { + DvsEvent + + HostLocalPort DVSHostLocalPortInfo `xml:"hostLocalPort"` +} + +func init() { + t["HostLocalPortCreatedEvent"] = reflect.TypeOf((*HostLocalPortCreatedEvent)(nil)).Elem() +} + +type HostLowLevelProvisioningManagerDiskLayoutSpec struct { + DynamicData + + ControllerType string `xml:"controllerType"` + BusNumber int32 `xml:"busNumber"` + UnitNumber *int32 `xml:"unitNumber"` + SrcFilename string `xml:"srcFilename"` + DstFilename string `xml:"dstFilename"` +} + +func init() { + t["HostLowLevelProvisioningManagerDiskLayoutSpec"] = reflect.TypeOf((*HostLowLevelProvisioningManagerDiskLayoutSpec)(nil)).Elem() +} + +type HostLowLevelProvisioningManagerFileDeleteResult struct { + DynamicData + + FileName string `xml:"fileName"` + Fault LocalizedMethodFault `xml:"fault"` +} + +func init() { + t["HostLowLevelProvisioningManagerFileDeleteResult"] = reflect.TypeOf((*HostLowLevelProvisioningManagerFileDeleteResult)(nil)).Elem() +} + +type HostLowLevelProvisioningManagerFileDeleteSpec struct { + DynamicData + + FileName string `xml:"fileName"` + FileType string `xml:"fileType"` +} + +func init() { + t["HostLowLevelProvisioningManagerFileDeleteSpec"] = reflect.TypeOf((*HostLowLevelProvisioningManagerFileDeleteSpec)(nil)).Elem() +} + +type HostLowLevelProvisioningManagerFileReserveResult struct { + DynamicData + + BaseName string `xml:"baseName"` + ParentDir string `xml:"parentDir"` + ReservedName string `xml:"reservedName"` +} + +func init() { + t["HostLowLevelProvisioningManagerFileReserveResult"] = reflect.TypeOf((*HostLowLevelProvisioningManagerFileReserveResult)(nil)).Elem() +} + +type HostLowLevelProvisioningManagerFileReserveSpec struct { + DynamicData + + BaseName string `xml:"baseName"` + ParentDir string `xml:"parentDir"` + FileType string `xml:"fileType"` + StorageProfile string `xml:"storageProfile"` +} + +func init() { + t["HostLowLevelProvisioningManagerFileReserveSpec"] = reflect.TypeOf((*HostLowLevelProvisioningManagerFileReserveSpec)(nil)).Elem() +} + +type HostLowLevelProvisioningManagerSnapshotLayoutSpec struct { + DynamicData + + Id int32 `xml:"id"` + SrcFilename string `xml:"srcFilename"` + DstFilename string `xml:"dstFilename"` + Disk []HostLowLevelProvisioningManagerDiskLayoutSpec `xml:"disk,omitempty"` +} + +func init() { + t["HostLowLevelProvisioningManagerSnapshotLayoutSpec"] = reflect.TypeOf((*HostLowLevelProvisioningManagerSnapshotLayoutSpec)(nil)).Elem() +} + +type HostLowLevelProvisioningManagerVmMigrationStatus struct { + DynamicData + + MigrationId int64 `xml:"migrationId"` + Type string `xml:"type"` + Source bool `xml:"source"` + ConsideredSuccessful bool `xml:"consideredSuccessful"` +} + +func init() { + t["HostLowLevelProvisioningManagerVmMigrationStatus"] = reflect.TypeOf((*HostLowLevelProvisioningManagerVmMigrationStatus)(nil)).Elem() +} + +type HostLowLevelProvisioningManagerVmRecoveryInfo struct { + DynamicData + + Version string `xml:"version"` + BiosUUID string `xml:"biosUUID"` + InstanceUUID string `xml:"instanceUUID"` + FtInfo BaseFaultToleranceConfigInfo `xml:"ftInfo,omitempty,typeattr"` +} + +func init() { + t["HostLowLevelProvisioningManagerVmRecoveryInfo"] = reflect.TypeOf((*HostLowLevelProvisioningManagerVmRecoveryInfo)(nil)).Elem() +} + +type HostMaintenanceSpec struct { + DynamicData + + VsanMode *VsanHostDecommissionMode `xml:"vsanMode,omitempty"` + Purpose string `xml:"purpose,omitempty"` +} + +func init() { + t["HostMaintenanceSpec"] = reflect.TypeOf((*HostMaintenanceSpec)(nil)).Elem() +} + +type HostMemberHealthCheckResult struct { + DynamicData + + Summary string `xml:"summary,omitempty"` +} + +func init() { + t["HostMemberHealthCheckResult"] = reflect.TypeOf((*HostMemberHealthCheckResult)(nil)).Elem() +} + +type HostMemberRuntimeInfo struct { + DynamicData + + Host ManagedObjectReference `xml:"host"` + Status string `xml:"status,omitempty"` + StatusDetail string `xml:"statusDetail,omitempty"` + NsxtStatus string `xml:"nsxtStatus,omitempty"` + NsxtStatusDetail string `xml:"nsxtStatusDetail,omitempty"` + HealthCheckResult []BaseHostMemberHealthCheckResult `xml:"healthCheckResult,omitempty,typeattr"` +} + +func init() { + t["HostMemberRuntimeInfo"] = reflect.TypeOf((*HostMemberRuntimeInfo)(nil)).Elem() +} + +type HostMemberUplinkHealthCheckResult struct { + HostMemberHealthCheckResult + + UplinkPortKey string `xml:"uplinkPortKey"` +} + +func init() { + t["HostMemberUplinkHealthCheckResult"] = reflect.TypeOf((*HostMemberUplinkHealthCheckResult)(nil)).Elem() +} + +type HostMemoryProfile struct { + ApplyProfile +} + +func init() { + t["HostMemoryProfile"] = reflect.TypeOf((*HostMemoryProfile)(nil)).Elem() +} + +type HostMemorySpec struct { + DynamicData + + ServiceConsoleReservation int64 `xml:"serviceConsoleReservation,omitempty"` +} + +func init() { + t["HostMemorySpec"] = reflect.TypeOf((*HostMemorySpec)(nil)).Elem() +} + +type HostMissingNetworksEvent struct { + HostDasEvent + + Ips string `xml:"ips,omitempty"` +} + +func init() { + t["HostMissingNetworksEvent"] = reflect.TypeOf((*HostMissingNetworksEvent)(nil)).Elem() +} + +type HostMonitoringStateChangedEvent struct { + ClusterEvent + + State string `xml:"state"` + PrevState string `xml:"prevState,omitempty"` +} + +func init() { + t["HostMonitoringStateChangedEvent"] = reflect.TypeOf((*HostMonitoringStateChangedEvent)(nil)).Elem() +} + +type HostMountInfo struct { + DynamicData + + Path string `xml:"path,omitempty"` + AccessMode string `xml:"accessMode"` + Mounted *bool `xml:"mounted"` + Accessible *bool `xml:"accessible"` + InaccessibleReason string `xml:"inaccessibleReason,omitempty"` +} + +func init() { + t["HostMountInfo"] = reflect.TypeOf((*HostMountInfo)(nil)).Elem() +} + +type HostMultipathInfo struct { + DynamicData + + Lun []HostMultipathInfoLogicalUnit `xml:"lun,omitempty"` +} + +func init() { + t["HostMultipathInfo"] = reflect.TypeOf((*HostMultipathInfo)(nil)).Elem() +} + +type HostMultipathInfoFixedLogicalUnitPolicy struct { + HostMultipathInfoLogicalUnitPolicy + + Prefer string `xml:"prefer"` +} + +func init() { + t["HostMultipathInfoFixedLogicalUnitPolicy"] = reflect.TypeOf((*HostMultipathInfoFixedLogicalUnitPolicy)(nil)).Elem() +} + +type HostMultipathInfoHppLogicalUnitPolicy struct { + HostMultipathInfoLogicalUnitPolicy + + Bytes int64 `xml:"bytes,omitempty"` + Iops int64 `xml:"iops,omitempty"` + Path string `xml:"path,omitempty"` + LatencyEvalTime int64 `xml:"latencyEvalTime,omitempty"` + SamplingIosPerPath int64 `xml:"samplingIosPerPath,omitempty"` +} + +func init() { + t["HostMultipathInfoHppLogicalUnitPolicy"] = reflect.TypeOf((*HostMultipathInfoHppLogicalUnitPolicy)(nil)).Elem() +} + +type HostMultipathInfoLogicalUnit struct { + DynamicData + + Key string `xml:"key"` + Id string `xml:"id"` + Lun string `xml:"lun"` + Path []HostMultipathInfoPath `xml:"path"` + Policy BaseHostMultipathInfoLogicalUnitPolicy `xml:"policy,typeattr"` + StorageArrayTypePolicy *HostMultipathInfoLogicalUnitStorageArrayTypePolicy `xml:"storageArrayTypePolicy,omitempty"` +} + +func init() { + t["HostMultipathInfoLogicalUnit"] = reflect.TypeOf((*HostMultipathInfoLogicalUnit)(nil)).Elem() +} + +type HostMultipathInfoLogicalUnitPolicy struct { + DynamicData + + Policy string `xml:"policy"` +} + +func init() { + t["HostMultipathInfoLogicalUnitPolicy"] = reflect.TypeOf((*HostMultipathInfoLogicalUnitPolicy)(nil)).Elem() +} + +type HostMultipathInfoLogicalUnitStorageArrayTypePolicy struct { + DynamicData + + Policy string `xml:"policy"` +} + +func init() { + t["HostMultipathInfoLogicalUnitStorageArrayTypePolicy"] = reflect.TypeOf((*HostMultipathInfoLogicalUnitStorageArrayTypePolicy)(nil)).Elem() +} + +type HostMultipathInfoPath struct { + DynamicData + + Key string `xml:"key"` + Name string `xml:"name"` + PathState string `xml:"pathState"` + State string `xml:"state,omitempty"` + IsWorkingPath *bool `xml:"isWorkingPath"` + Adapter string `xml:"adapter"` + Lun string `xml:"lun"` + Transport BaseHostTargetTransport `xml:"transport,omitempty,typeattr"` +} + +func init() { + t["HostMultipathInfoPath"] = reflect.TypeOf((*HostMultipathInfoPath)(nil)).Elem() +} + +type HostMultipathStateInfo struct { + DynamicData + + Path []HostMultipathStateInfoPath `xml:"path,omitempty"` +} + +func init() { + t["HostMultipathStateInfo"] = reflect.TypeOf((*HostMultipathStateInfo)(nil)).Elem() +} + +type HostMultipathStateInfoPath struct { + DynamicData + + Name string `xml:"name"` + PathState string `xml:"pathState"` +} + +func init() { + t["HostMultipathStateInfoPath"] = reflect.TypeOf((*HostMultipathStateInfoPath)(nil)).Elem() +} + +type HostNasVolume struct { + HostFileSystemVolume + + RemoteHost string `xml:"remoteHost"` + RemotePath string `xml:"remotePath"` + UserName string `xml:"userName,omitempty"` + RemoteHostNames []string `xml:"remoteHostNames,omitempty"` + SecurityType string `xml:"securityType,omitempty"` + ProtocolEndpoint *bool `xml:"protocolEndpoint"` +} + +func init() { + t["HostNasVolume"] = reflect.TypeOf((*HostNasVolume)(nil)).Elem() +} + +type HostNasVolumeConfig struct { + DynamicData + + ChangeOperation string `xml:"changeOperation,omitempty"` + Spec *HostNasVolumeSpec `xml:"spec,omitempty"` +} + +func init() { + t["HostNasVolumeConfig"] = reflect.TypeOf((*HostNasVolumeConfig)(nil)).Elem() +} + +type HostNasVolumeSpec struct { + DynamicData + + RemoteHost string `xml:"remoteHost"` + RemotePath string `xml:"remotePath"` + LocalPath string `xml:"localPath"` + AccessMode string `xml:"accessMode"` + Type string `xml:"type,omitempty"` + UserName string `xml:"userName,omitempty"` + Password string `xml:"password,omitempty"` + RemoteHostNames []string `xml:"remoteHostNames,omitempty"` + SecurityType string `xml:"securityType,omitempty"` +} + +func init() { + t["HostNasVolumeSpec"] = reflect.TypeOf((*HostNasVolumeSpec)(nil)).Elem() +} + +type HostNasVolumeUserInfo struct { + DynamicData + + User string `xml:"user"` +} + +func init() { + t["HostNasVolumeUserInfo"] = reflect.TypeOf((*HostNasVolumeUserInfo)(nil)).Elem() +} + +type HostNatService struct { + DynamicData + + Key string `xml:"key"` + Spec HostNatServiceSpec `xml:"spec"` +} + +func init() { + t["HostNatService"] = reflect.TypeOf((*HostNatService)(nil)).Elem() +} + +type HostNatServiceConfig struct { + DynamicData + + ChangeOperation string `xml:"changeOperation,omitempty"` + Key string `xml:"key"` + Spec HostNatServiceSpec `xml:"spec"` +} + +func init() { + t["HostNatServiceConfig"] = reflect.TypeOf((*HostNatServiceConfig)(nil)).Elem() +} + +type HostNatServiceNameServiceSpec struct { + DynamicData + + DnsAutoDetect bool `xml:"dnsAutoDetect"` + DnsPolicy string `xml:"dnsPolicy"` + DnsRetries int32 `xml:"dnsRetries"` + DnsTimeout int32 `xml:"dnsTimeout"` + DnsNameServer []string `xml:"dnsNameServer,omitempty"` + NbdsTimeout int32 `xml:"nbdsTimeout"` + NbnsRetries int32 `xml:"nbnsRetries"` + NbnsTimeout int32 `xml:"nbnsTimeout"` +} + +func init() { + t["HostNatServiceNameServiceSpec"] = reflect.TypeOf((*HostNatServiceNameServiceSpec)(nil)).Elem() +} + +type HostNatServicePortForwardSpec struct { + DynamicData + + Type string `xml:"type"` + Name string `xml:"name"` + HostPort int32 `xml:"hostPort"` + GuestPort int32 `xml:"guestPort"` + GuestIpAddress string `xml:"guestIpAddress"` +} + +func init() { + t["HostNatServicePortForwardSpec"] = reflect.TypeOf((*HostNatServicePortForwardSpec)(nil)).Elem() +} + +type HostNatServiceSpec struct { + DynamicData + + VirtualSwitch string `xml:"virtualSwitch"` + ActiveFtp bool `xml:"activeFtp"` + AllowAnyOui bool `xml:"allowAnyOui"` + ConfigPort bool `xml:"configPort"` + IpGatewayAddress string `xml:"ipGatewayAddress"` + UdpTimeout int32 `xml:"udpTimeout"` + PortForward []HostNatServicePortForwardSpec `xml:"portForward,omitempty"` + NameService *HostNatServiceNameServiceSpec `xml:"nameService,omitempty"` +} + +func init() { + t["HostNatServiceSpec"] = reflect.TypeOf((*HostNatServiceSpec)(nil)).Elem() +} + +type HostNetCapabilities struct { + DynamicData + + CanSetPhysicalNicLinkSpeed bool `xml:"canSetPhysicalNicLinkSpeed"` + SupportsNicTeaming bool `xml:"supportsNicTeaming"` + NicTeamingPolicy []string `xml:"nicTeamingPolicy,omitempty"` + SupportsVlan bool `xml:"supportsVlan"` + UsesServiceConsoleNic bool `xml:"usesServiceConsoleNic"` + SupportsNetworkHints bool `xml:"supportsNetworkHints"` + MaxPortGroupsPerVswitch int32 `xml:"maxPortGroupsPerVswitch,omitempty"` + VswitchConfigSupported bool `xml:"vswitchConfigSupported"` + VnicConfigSupported bool `xml:"vnicConfigSupported"` + IpRouteConfigSupported bool `xml:"ipRouteConfigSupported"` + DnsConfigSupported bool `xml:"dnsConfigSupported"` + DhcpOnVnicSupported bool `xml:"dhcpOnVnicSupported"` + IpV6Supported *bool `xml:"ipV6Supported"` +} + +func init() { + t["HostNetCapabilities"] = reflect.TypeOf((*HostNetCapabilities)(nil)).Elem() +} + +type HostNetOffloadCapabilities struct { + DynamicData + + CsumOffload *bool `xml:"csumOffload"` + TcpSegmentation *bool `xml:"tcpSegmentation"` + ZeroCopyXmit *bool `xml:"zeroCopyXmit"` +} + +func init() { + t["HostNetOffloadCapabilities"] = reflect.TypeOf((*HostNetOffloadCapabilities)(nil)).Elem() +} + +type HostNetStackInstance struct { + DynamicData + + Key string `xml:"key,omitempty"` + Name string `xml:"name,omitempty"` + DnsConfig BaseHostDnsConfig `xml:"dnsConfig,omitempty,typeattr"` + IpRouteConfig BaseHostIpRouteConfig `xml:"ipRouteConfig,omitempty,typeattr"` + RequestedMaxNumberOfConnections int32 `xml:"requestedMaxNumberOfConnections,omitempty"` + CongestionControlAlgorithm string `xml:"congestionControlAlgorithm,omitempty"` + IpV6Enabled *bool `xml:"ipV6Enabled"` + RouteTableConfig *HostIpRouteTableConfig `xml:"routeTableConfig,omitempty"` +} + +func init() { + t["HostNetStackInstance"] = reflect.TypeOf((*HostNetStackInstance)(nil)).Elem() +} + +type HostNetworkConfig struct { + DynamicData + + Vswitch []HostVirtualSwitchConfig `xml:"vswitch,omitempty"` + ProxySwitch []HostProxySwitchConfig `xml:"proxySwitch,omitempty"` + Portgroup []HostPortGroupConfig `xml:"portgroup,omitempty"` + Pnic []PhysicalNicConfig `xml:"pnic,omitempty"` + Vnic []HostVirtualNicConfig `xml:"vnic,omitempty"` + ConsoleVnic []HostVirtualNicConfig `xml:"consoleVnic,omitempty"` + DnsConfig BaseHostDnsConfig `xml:"dnsConfig,omitempty,typeattr"` + IpRouteConfig BaseHostIpRouteConfig `xml:"ipRouteConfig,omitempty,typeattr"` + ConsoleIpRouteConfig BaseHostIpRouteConfig `xml:"consoleIpRouteConfig,omitempty,typeattr"` + RouteTableConfig *HostIpRouteTableConfig `xml:"routeTableConfig,omitempty"` + Dhcp []HostDhcpServiceConfig `xml:"dhcp,omitempty"` + Nat []HostNatServiceConfig `xml:"nat,omitempty"` + IpV6Enabled *bool `xml:"ipV6Enabled"` + NetStackSpec []HostNetworkConfigNetStackSpec `xml:"netStackSpec,omitempty"` +} + +func init() { + t["HostNetworkConfig"] = reflect.TypeOf((*HostNetworkConfig)(nil)).Elem() +} + +type HostNetworkConfigNetStackSpec struct { + DynamicData + + NetStackInstance HostNetStackInstance `xml:"netStackInstance"` + Operation string `xml:"operation,omitempty"` +} + +func init() { + t["HostNetworkConfigNetStackSpec"] = reflect.TypeOf((*HostNetworkConfigNetStackSpec)(nil)).Elem() +} + +type HostNetworkConfigResult struct { + DynamicData + + VnicDevice []string `xml:"vnicDevice,omitempty"` + ConsoleVnicDevice []string `xml:"consoleVnicDevice,omitempty"` +} + +func init() { + t["HostNetworkConfigResult"] = reflect.TypeOf((*HostNetworkConfigResult)(nil)).Elem() +} + +type HostNetworkInfo struct { + DynamicData + + Vswitch []HostVirtualSwitch `xml:"vswitch,omitempty"` + ProxySwitch []HostProxySwitch `xml:"proxySwitch,omitempty"` + Portgroup []HostPortGroup `xml:"portgroup,omitempty"` + Pnic []PhysicalNic `xml:"pnic,omitempty"` + RdmaDevice []HostRdmaDevice `xml:"rdmaDevice,omitempty"` + Vnic []HostVirtualNic `xml:"vnic,omitempty"` + ConsoleVnic []HostVirtualNic `xml:"consoleVnic,omitempty"` + DnsConfig BaseHostDnsConfig `xml:"dnsConfig,omitempty,typeattr"` + IpRouteConfig BaseHostIpRouteConfig `xml:"ipRouteConfig,omitempty,typeattr"` + ConsoleIpRouteConfig BaseHostIpRouteConfig `xml:"consoleIpRouteConfig,omitempty,typeattr"` + RouteTableInfo *HostIpRouteTableInfo `xml:"routeTableInfo,omitempty"` + Dhcp []HostDhcpService `xml:"dhcp,omitempty"` + Nat []HostNatService `xml:"nat,omitempty"` + IpV6Enabled *bool `xml:"ipV6Enabled"` + AtBootIpV6Enabled *bool `xml:"atBootIpV6Enabled"` + NetStackInstance []HostNetStackInstance `xml:"netStackInstance,omitempty"` + OpaqueSwitch []HostOpaqueSwitch `xml:"opaqueSwitch,omitempty"` + OpaqueNetwork []HostOpaqueNetworkInfo `xml:"opaqueNetwork,omitempty"` + NsxTransportNodeId string `xml:"nsxTransportNodeId,omitempty"` +} + +func init() { + t["HostNetworkInfo"] = reflect.TypeOf((*HostNetworkInfo)(nil)).Elem() +} + +type HostNetworkPolicy struct { + DynamicData + + Security *HostNetworkSecurityPolicy `xml:"security,omitempty"` + NicTeaming *HostNicTeamingPolicy `xml:"nicTeaming,omitempty"` + OffloadPolicy *HostNetOffloadCapabilities `xml:"offloadPolicy,omitempty"` + ShapingPolicy *HostNetworkTrafficShapingPolicy `xml:"shapingPolicy,omitempty"` +} + +func init() { + t["HostNetworkPolicy"] = reflect.TypeOf((*HostNetworkPolicy)(nil)).Elem() +} + +type HostNetworkResourceRuntime struct { + DynamicData + + PnicResourceInfo []HostPnicNetworkResourceInfo `xml:"pnicResourceInfo"` +} + +func init() { + t["HostNetworkResourceRuntime"] = reflect.TypeOf((*HostNetworkResourceRuntime)(nil)).Elem() +} + +type HostNetworkSecurityPolicy struct { + DynamicData + + AllowPromiscuous *bool `xml:"allowPromiscuous"` + MacChanges *bool `xml:"macChanges"` + ForgedTransmits *bool `xml:"forgedTransmits"` +} + +func init() { + t["HostNetworkSecurityPolicy"] = reflect.TypeOf((*HostNetworkSecurityPolicy)(nil)).Elem() +} + +type HostNetworkTrafficShapingPolicy struct { + DynamicData + + Enabled *bool `xml:"enabled"` + AverageBandwidth int64 `xml:"averageBandwidth,omitempty"` + PeakBandwidth int64 `xml:"peakBandwidth,omitempty"` + BurstSize int64 `xml:"burstSize,omitempty"` +} + +func init() { + t["HostNetworkTrafficShapingPolicy"] = reflect.TypeOf((*HostNetworkTrafficShapingPolicy)(nil)).Elem() +} + +type HostNewNetworkConnectInfo struct { + HostConnectInfoNetworkInfo +} + +func init() { + t["HostNewNetworkConnectInfo"] = reflect.TypeOf((*HostNewNetworkConnectInfo)(nil)).Elem() +} + +type HostNicFailureCriteria struct { + DynamicData + + CheckSpeed string `xml:"checkSpeed,omitempty"` + Speed int32 `xml:"speed,omitempty"` + CheckDuplex *bool `xml:"checkDuplex"` + FullDuplex *bool `xml:"fullDuplex"` + CheckErrorPercent *bool `xml:"checkErrorPercent"` + Percentage int32 `xml:"percentage,omitempty"` + CheckBeacon *bool `xml:"checkBeacon"` +} + +func init() { + t["HostNicFailureCriteria"] = reflect.TypeOf((*HostNicFailureCriteria)(nil)).Elem() +} + +type HostNicOrderPolicy struct { + DynamicData + + ActiveNic []string `xml:"activeNic,omitempty"` + StandbyNic []string `xml:"standbyNic,omitempty"` +} + +func init() { + t["HostNicOrderPolicy"] = reflect.TypeOf((*HostNicOrderPolicy)(nil)).Elem() +} + +type HostNicTeamingPolicy struct { + DynamicData + + Policy string `xml:"policy,omitempty"` + ReversePolicy *bool `xml:"reversePolicy"` + NotifySwitches *bool `xml:"notifySwitches"` + RollingOrder *bool `xml:"rollingOrder"` + FailureCriteria *HostNicFailureCriteria `xml:"failureCriteria,omitempty"` + NicOrder *HostNicOrderPolicy `xml:"nicOrder,omitempty"` +} + +func init() { + t["HostNicTeamingPolicy"] = reflect.TypeOf((*HostNicTeamingPolicy)(nil)).Elem() +} + +type HostNoAvailableNetworksEvent struct { + HostDasEvent + + Ips string `xml:"ips,omitempty"` +} + +func init() { + t["HostNoAvailableNetworksEvent"] = reflect.TypeOf((*HostNoAvailableNetworksEvent)(nil)).Elem() +} + +type HostNoHAEnabledPortGroupsEvent struct { + HostDasEvent +} + +func init() { + t["HostNoHAEnabledPortGroupsEvent"] = reflect.TypeOf((*HostNoHAEnabledPortGroupsEvent)(nil)).Elem() +} + +type HostNoRedundantManagementNetworkEvent struct { + HostDasEvent +} + +func init() { + t["HostNoRedundantManagementNetworkEvent"] = reflect.TypeOf((*HostNoRedundantManagementNetworkEvent)(nil)).Elem() +} + +type HostNonCompliantEvent struct { + HostEvent +} + +func init() { + t["HostNonCompliantEvent"] = reflect.TypeOf((*HostNonCompliantEvent)(nil)).Elem() +} + +type HostNotConnected struct { + HostCommunication +} + +func init() { + t["HostNotConnected"] = reflect.TypeOf((*HostNotConnected)(nil)).Elem() +} + +type HostNotConnectedFault HostNotConnected + +func init() { + t["HostNotConnectedFault"] = reflect.TypeOf((*HostNotConnectedFault)(nil)).Elem() +} + +type HostNotInClusterEvent struct { + HostDasEvent +} + +func init() { + t["HostNotInClusterEvent"] = reflect.TypeOf((*HostNotInClusterEvent)(nil)).Elem() +} + +type HostNotReachable struct { + HostCommunication +} + +func init() { + t["HostNotReachable"] = reflect.TypeOf((*HostNotReachable)(nil)).Elem() +} + +type HostNotReachableFault HostNotReachable + +func init() { + t["HostNotReachableFault"] = reflect.TypeOf((*HostNotReachableFault)(nil)).Elem() +} + +type HostNtpConfig struct { + DynamicData + + Server []string `xml:"server,omitempty"` + ConfigFile []string `xml:"configFile,omitempty"` +} + +func init() { + t["HostNtpConfig"] = reflect.TypeOf((*HostNtpConfig)(nil)).Elem() +} + +type HostNumaInfo struct { + DynamicData + + Type string `xml:"type"` + NumNodes int32 `xml:"numNodes"` + NumaNode []HostNumaNode `xml:"numaNode,omitempty"` +} + +func init() { + t["HostNumaInfo"] = reflect.TypeOf((*HostNumaInfo)(nil)).Elem() +} + +type HostNumaNode struct { + DynamicData + + TypeId byte `xml:"typeId"` + CpuID []int16 `xml:"cpuID"` + MemoryRangeBegin int64 `xml:"memoryRangeBegin"` + MemoryRangeLength int64 `xml:"memoryRangeLength"` + PciId []string `xml:"pciId,omitempty"` +} + +func init() { + t["HostNumaNode"] = reflect.TypeOf((*HostNumaNode)(nil)).Elem() +} + +type HostNumericSensorInfo struct { + DynamicData + + Name string `xml:"name"` + HealthState BaseElementDescription `xml:"healthState,omitempty,typeattr"` + CurrentReading int64 `xml:"currentReading"` + UnitModifier int32 `xml:"unitModifier"` + BaseUnits string `xml:"baseUnits"` + RateUnits string `xml:"rateUnits,omitempty"` + SensorType string `xml:"sensorType"` + Id string `xml:"id,omitempty"` + TimeStamp string `xml:"timeStamp,omitempty"` +} + +func init() { + t["HostNumericSensorInfo"] = reflect.TypeOf((*HostNumericSensorInfo)(nil)).Elem() +} + +type HostNvmeConnectSpec struct { + HostNvmeSpec + + Subnqn string `xml:"subnqn"` + ControllerId int32 `xml:"controllerId,omitempty"` + AdminQueueSize int32 `xml:"adminQueueSize,omitempty"` + KeepAliveTimeout int32 `xml:"keepAliveTimeout,omitempty"` +} + +func init() { + t["HostNvmeConnectSpec"] = reflect.TypeOf((*HostNvmeConnectSpec)(nil)).Elem() +} + +type HostNvmeController struct { + DynamicData + + Key string `xml:"key"` + ControllerNumber int32 `xml:"controllerNumber"` + Subnqn string `xml:"subnqn"` + Name string `xml:"name"` + AssociatedAdapter string `xml:"associatedAdapter"` + TransportType string `xml:"transportType"` + FusedOperationSupported bool `xml:"fusedOperationSupported"` + NumberOfQueues int32 `xml:"numberOfQueues"` + QueueSize int32 `xml:"queueSize"` + AttachedNamespace []HostNvmeNamespace `xml:"attachedNamespace,omitempty"` + VendorId string `xml:"vendorId,omitempty"` + Model string `xml:"model,omitempty"` + SerialNumber string `xml:"serialNumber,omitempty"` + FirmwareVersion string `xml:"firmwareVersion,omitempty"` +} + +func init() { + t["HostNvmeController"] = reflect.TypeOf((*HostNvmeController)(nil)).Elem() +} + +type HostNvmeDisconnectSpec struct { + DynamicData + + HbaName string `xml:"hbaName"` + Subnqn string `xml:"subnqn,omitempty"` + ControllerNumber int32 `xml:"controllerNumber,omitempty"` +} + +func init() { + t["HostNvmeDisconnectSpec"] = reflect.TypeOf((*HostNvmeDisconnectSpec)(nil)).Elem() +} + +type HostNvmeDiscoverSpec struct { + HostNvmeSpec + + AutoConnect *bool `xml:"autoConnect"` +} + +func init() { + t["HostNvmeDiscoverSpec"] = reflect.TypeOf((*HostNvmeDiscoverSpec)(nil)).Elem() +} + +type HostNvmeDiscoveryLog struct { + DynamicData + + Entry []HostNvmeDiscoveryLogEntry `xml:"entry,omitempty"` + Complete bool `xml:"complete"` +} + +func init() { + t["HostNvmeDiscoveryLog"] = reflect.TypeOf((*HostNvmeDiscoveryLog)(nil)).Elem() +} + +type HostNvmeDiscoveryLogEntry struct { + DynamicData + + Subnqn string `xml:"subnqn"` + SubsystemType string `xml:"subsystemType"` + SubsystemPortId int32 `xml:"subsystemPortId"` + ControllerId int32 `xml:"controllerId"` + AdminQueueMaxSize int32 `xml:"adminQueueMaxSize"` + TransportParameters BaseHostNvmeTransportParameters `xml:"transportParameters,typeattr"` + TransportRequirements string `xml:"transportRequirements"` + Connected bool `xml:"connected"` +} + +func init() { + t["HostNvmeDiscoveryLogEntry"] = reflect.TypeOf((*HostNvmeDiscoveryLogEntry)(nil)).Elem() +} + +type HostNvmeNamespace struct { + DynamicData + + Key string `xml:"key"` + Name string `xml:"name"` + Id int32 `xml:"id"` + BlockSize int32 `xml:"blockSize"` + CapacityInBlocks int64 `xml:"capacityInBlocks"` +} + +func init() { + t["HostNvmeNamespace"] = reflect.TypeOf((*HostNvmeNamespace)(nil)).Elem() +} + +type HostNvmeOpaqueTransportParameters struct { + HostNvmeTransportParameters + + Trtype string `xml:"trtype"` + Traddr string `xml:"traddr"` + Adrfam string `xml:"adrfam"` + Trsvcid string `xml:"trsvcid"` + Tsas []byte `xml:"tsas"` +} + +func init() { + t["HostNvmeOpaqueTransportParameters"] = reflect.TypeOf((*HostNvmeOpaqueTransportParameters)(nil)).Elem() +} + +type HostNvmeOverFibreChannelParameters struct { + HostNvmeTransportParameters + + NodeWorldWideName int64 `xml:"nodeWorldWideName"` + PortWorldWideName int64 `xml:"portWorldWideName"` +} + +func init() { + t["HostNvmeOverFibreChannelParameters"] = reflect.TypeOf((*HostNvmeOverFibreChannelParameters)(nil)).Elem() +} + +type HostNvmeOverRdmaParameters struct { + HostNvmeTransportParameters + + Address string `xml:"address"` + AddressFamily string `xml:"addressFamily,omitempty"` + PortNumber int32 `xml:"portNumber,omitempty"` +} + +func init() { + t["HostNvmeOverRdmaParameters"] = reflect.TypeOf((*HostNvmeOverRdmaParameters)(nil)).Elem() +} + +type HostNvmeSpec struct { + DynamicData + + HbaName string `xml:"hbaName"` + TransportParameters BaseHostNvmeTransportParameters `xml:"transportParameters,typeattr"` +} + +func init() { + t["HostNvmeSpec"] = reflect.TypeOf((*HostNvmeSpec)(nil)).Elem() +} + +type HostNvmeTopology struct { + DynamicData + + Adapter []HostNvmeTopologyInterface `xml:"adapter,omitempty"` +} + +func init() { + t["HostNvmeTopology"] = reflect.TypeOf((*HostNvmeTopology)(nil)).Elem() +} + +type HostNvmeTopologyInterface struct { + DynamicData + + Key string `xml:"key"` + Adapter string `xml:"adapter"` + ConnectedController []HostNvmeController `xml:"connectedController,omitempty"` +} + +func init() { + t["HostNvmeTopologyInterface"] = reflect.TypeOf((*HostNvmeTopologyInterface)(nil)).Elem() +} + +type HostNvmeTransportParameters struct { + DynamicData +} + +func init() { + t["HostNvmeTransportParameters"] = reflect.TypeOf((*HostNvmeTransportParameters)(nil)).Elem() +} + +type HostOpaqueNetworkInfo struct { + DynamicData + + OpaqueNetworkId string `xml:"opaqueNetworkId"` + OpaqueNetworkName string `xml:"opaqueNetworkName"` + OpaqueNetworkType string `xml:"opaqueNetworkType"` + PnicZone []string `xml:"pnicZone,omitempty"` + Capability *OpaqueNetworkCapability `xml:"capability,omitempty"` + ExtraConfig []BaseOptionValue `xml:"extraConfig,omitempty,typeattr"` +} + +func init() { + t["HostOpaqueNetworkInfo"] = reflect.TypeOf((*HostOpaqueNetworkInfo)(nil)).Elem() +} + +type HostOpaqueSwitch struct { + DynamicData + + Key string `xml:"key"` + Name string `xml:"name,omitempty"` + Pnic []string `xml:"pnic,omitempty"` + PnicZone []HostOpaqueSwitchPhysicalNicZone `xml:"pnicZone,omitempty"` + Status string `xml:"status,omitempty"` + Vtep []HostVirtualNic `xml:"vtep,omitempty"` + ExtraConfig []BaseOptionValue `xml:"extraConfig,omitempty,typeattr"` + FeatureCapability []HostFeatureCapability `xml:"featureCapability,omitempty"` +} + +func init() { + t["HostOpaqueSwitch"] = reflect.TypeOf((*HostOpaqueSwitch)(nil)).Elem() +} + +type HostOpaqueSwitchPhysicalNicZone struct { + DynamicData + + Key string `xml:"key"` + PnicDevice []string `xml:"pnicDevice,omitempty"` +} + +func init() { + t["HostOpaqueSwitchPhysicalNicZone"] = reflect.TypeOf((*HostOpaqueSwitchPhysicalNicZone)(nil)).Elem() +} + +type HostOvercommittedEvent struct { + ClusterOvercommittedEvent +} + +func init() { + t["HostOvercommittedEvent"] = reflect.TypeOf((*HostOvercommittedEvent)(nil)).Elem() +} + +type HostPMemVolume struct { + HostFileSystemVolume + + Uuid string `xml:"uuid"` + Version string `xml:"version"` +} + +func init() { + t["HostPMemVolume"] = reflect.TypeOf((*HostPMemVolume)(nil)).Elem() +} + +type HostParallelScsiHba struct { + HostHostBusAdapter +} + +func init() { + t["HostParallelScsiHba"] = reflect.TypeOf((*HostParallelScsiHba)(nil)).Elem() +} + +type HostParallelScsiTargetTransport struct { + HostTargetTransport +} + +func init() { + t["HostParallelScsiTargetTransport"] = reflect.TypeOf((*HostParallelScsiTargetTransport)(nil)).Elem() +} + +type HostPatchManagerLocator struct { + DynamicData + + Url string `xml:"url"` + Proxy string `xml:"proxy,omitempty"` +} + +func init() { + t["HostPatchManagerLocator"] = reflect.TypeOf((*HostPatchManagerLocator)(nil)).Elem() +} + +type HostPatchManagerPatchManagerOperationSpec struct { + DynamicData + + Proxy string `xml:"proxy,omitempty"` + Port int32 `xml:"port,omitempty"` + UserName string `xml:"userName,omitempty"` + Password string `xml:"password,omitempty"` + CmdOption string `xml:"cmdOption,omitempty"` +} + +func init() { + t["HostPatchManagerPatchManagerOperationSpec"] = reflect.TypeOf((*HostPatchManagerPatchManagerOperationSpec)(nil)).Elem() +} + +type HostPatchManagerResult struct { + DynamicData + + Version string `xml:"version"` + Status []HostPatchManagerStatus `xml:"status,omitempty"` + XmlResult string `xml:"xmlResult,omitempty"` +} + +func init() { + t["HostPatchManagerResult"] = reflect.TypeOf((*HostPatchManagerResult)(nil)).Elem() +} + +type HostPatchManagerStatus struct { + DynamicData + + Id string `xml:"id"` + Applicable bool `xml:"applicable"` + Reason []string `xml:"reason,omitempty"` + Integrity string `xml:"integrity,omitempty"` + Installed bool `xml:"installed"` + InstallState []string `xml:"installState,omitempty"` + PrerequisitePatch []HostPatchManagerStatusPrerequisitePatch `xml:"prerequisitePatch,omitempty"` + RestartRequired bool `xml:"restartRequired"` + ReconnectRequired bool `xml:"reconnectRequired"` + VmOffRequired bool `xml:"vmOffRequired"` + SupersededPatchIds []string `xml:"supersededPatchIds,omitempty"` +} + +func init() { + t["HostPatchManagerStatus"] = reflect.TypeOf((*HostPatchManagerStatus)(nil)).Elem() +} + +type HostPatchManagerStatusPrerequisitePatch struct { + DynamicData + + Id string `xml:"id"` + InstallState []string `xml:"installState,omitempty"` +} + +func init() { + t["HostPatchManagerStatusPrerequisitePatch"] = reflect.TypeOf((*HostPatchManagerStatusPrerequisitePatch)(nil)).Elem() +} + +type HostPathSelectionPolicyOption struct { + DynamicData + + Policy BaseElementDescription `xml:"policy,typeattr"` +} + +func init() { + t["HostPathSelectionPolicyOption"] = reflect.TypeOf((*HostPathSelectionPolicyOption)(nil)).Elem() +} + +type HostPciDevice struct { + DynamicData + + Id string `xml:"id"` + ClassId int16 `xml:"classId"` + Bus byte `xml:"bus"` + Slot byte `xml:"slot"` + Function byte `xml:"function"` + VendorId int16 `xml:"vendorId"` + SubVendorId int16 `xml:"subVendorId"` + VendorName string `xml:"vendorName"` + DeviceId int16 `xml:"deviceId"` + SubDeviceId int16 `xml:"subDeviceId"` + ParentBridge string `xml:"parentBridge,omitempty"` + DeviceName string `xml:"deviceName"` +} + +func init() { + t["HostPciDevice"] = reflect.TypeOf((*HostPciDevice)(nil)).Elem() +} + +type HostPciPassthruConfig struct { + DynamicData + + Id string `xml:"id"` + PassthruEnabled bool `xml:"passthruEnabled"` + ApplyNow *bool `xml:"applyNow"` +} + +func init() { + t["HostPciPassthruConfig"] = reflect.TypeOf((*HostPciPassthruConfig)(nil)).Elem() +} + +type HostPciPassthruInfo struct { + DynamicData + + Id string `xml:"id"` + DependentDevice string `xml:"dependentDevice"` + PassthruEnabled bool `xml:"passthruEnabled"` + PassthruCapable bool `xml:"passthruCapable"` + PassthruActive bool `xml:"passthruActive"` +} + +func init() { + t["HostPciPassthruInfo"] = reflect.TypeOf((*HostPciPassthruInfo)(nil)).Elem() +} + +type HostPcieHba struct { + HostHostBusAdapter +} + +func init() { + t["HostPcieHba"] = reflect.TypeOf((*HostPcieHba)(nil)).Elem() +} + +type HostPcieTargetTransport struct { + HostTargetTransport +} + +func init() { + t["HostPcieTargetTransport"] = reflect.TypeOf((*HostPcieTargetTransport)(nil)).Elem() +} + +type HostPersistentMemoryInfo struct { + DynamicData + + CapacityInMB int64 `xml:"capacityInMB,omitempty"` + VolumeUUID string `xml:"volumeUUID,omitempty"` +} + +func init() { + t["HostPersistentMemoryInfo"] = reflect.TypeOf((*HostPersistentMemoryInfo)(nil)).Elem() +} + +type HostPlacedVirtualNicIdentifier struct { + DynamicData + + Vm ManagedObjectReference `xml:"vm"` + VnicKey string `xml:"vnicKey"` + Reservation *int32 `xml:"reservation"` +} + +func init() { + t["HostPlacedVirtualNicIdentifier"] = reflect.TypeOf((*HostPlacedVirtualNicIdentifier)(nil)).Elem() +} + +type HostPlugStoreTopology struct { + DynamicData + + Adapter []HostPlugStoreTopologyAdapter `xml:"adapter,omitempty"` + Path []HostPlugStoreTopologyPath `xml:"path,omitempty"` + Target []HostPlugStoreTopologyTarget `xml:"target,omitempty"` + Device []HostPlugStoreTopologyDevice `xml:"device,omitempty"` + Plugin []HostPlugStoreTopologyPlugin `xml:"plugin,omitempty"` +} + +func init() { + t["HostPlugStoreTopology"] = reflect.TypeOf((*HostPlugStoreTopology)(nil)).Elem() +} + +type HostPlugStoreTopologyAdapter struct { + DynamicData + + Key string `xml:"key"` + Adapter string `xml:"adapter"` + Path []string `xml:"path,omitempty"` +} + +func init() { + t["HostPlugStoreTopologyAdapter"] = reflect.TypeOf((*HostPlugStoreTopologyAdapter)(nil)).Elem() +} + +type HostPlugStoreTopologyDevice struct { + DynamicData + + Key string `xml:"key"` + Lun string `xml:"lun"` + Path []string `xml:"path,omitempty"` +} + +func init() { + t["HostPlugStoreTopologyDevice"] = reflect.TypeOf((*HostPlugStoreTopologyDevice)(nil)).Elem() +} + +type HostPlugStoreTopologyPath struct { + DynamicData + + Key string `xml:"key"` + Name string `xml:"name"` + ChannelNumber int32 `xml:"channelNumber,omitempty"` + TargetNumber int32 `xml:"targetNumber,omitempty"` + LunNumber int32 `xml:"lunNumber,omitempty"` + Adapter string `xml:"adapter,omitempty"` + Target string `xml:"target,omitempty"` + Device string `xml:"device,omitempty"` +} + +func init() { + t["HostPlugStoreTopologyPath"] = reflect.TypeOf((*HostPlugStoreTopologyPath)(nil)).Elem() +} + +type HostPlugStoreTopologyPlugin struct { + DynamicData + + Key string `xml:"key"` + Name string `xml:"name"` + Device []string `xml:"device,omitempty"` + ClaimedPath []string `xml:"claimedPath,omitempty"` +} + +func init() { + t["HostPlugStoreTopologyPlugin"] = reflect.TypeOf((*HostPlugStoreTopologyPlugin)(nil)).Elem() +} + +type HostPlugStoreTopologyTarget struct { + DynamicData + + Key string `xml:"key"` + Transport BaseHostTargetTransport `xml:"transport,omitempty,typeattr"` +} + +func init() { + t["HostPlugStoreTopologyTarget"] = reflect.TypeOf((*HostPlugStoreTopologyTarget)(nil)).Elem() +} + +type HostPnicNetworkResourceInfo struct { + DynamicData + + PnicDevice string `xml:"pnicDevice"` + AvailableBandwidthForVMTraffic int64 `xml:"availableBandwidthForVMTraffic,omitempty"` + UnusedBandwidthForVMTraffic int64 `xml:"unusedBandwidthForVMTraffic,omitempty"` + PlacedVirtualNics []HostPlacedVirtualNicIdentifier `xml:"placedVirtualNics,omitempty"` +} + +func init() { + t["HostPnicNetworkResourceInfo"] = reflect.TypeOf((*HostPnicNetworkResourceInfo)(nil)).Elem() +} + +type HostPortGroup struct { + DynamicData + + Key string `xml:"key,omitempty"` + Port []HostPortGroupPort `xml:"port,omitempty"` + Vswitch string `xml:"vswitch,omitempty"` + ComputedPolicy HostNetworkPolicy `xml:"computedPolicy"` + Spec HostPortGroupSpec `xml:"spec"` +} + +func init() { + t["HostPortGroup"] = reflect.TypeOf((*HostPortGroup)(nil)).Elem() +} + +type HostPortGroupConfig struct { + DynamicData + + ChangeOperation string `xml:"changeOperation,omitempty"` + Spec *HostPortGroupSpec `xml:"spec,omitempty"` +} + +func init() { + t["HostPortGroupConfig"] = reflect.TypeOf((*HostPortGroupConfig)(nil)).Elem() +} + +type HostPortGroupPort struct { + DynamicData + + Key string `xml:"key,omitempty"` + Mac []string `xml:"mac,omitempty"` + Type string `xml:"type"` +} + +func init() { + t["HostPortGroupPort"] = reflect.TypeOf((*HostPortGroupPort)(nil)).Elem() +} + +type HostPortGroupProfile struct { + PortGroupProfile + + IpConfig IpAddressProfile `xml:"ipConfig"` +} + +func init() { + t["HostPortGroupProfile"] = reflect.TypeOf((*HostPortGroupProfile)(nil)).Elem() +} + +type HostPortGroupSpec struct { + DynamicData + + Name string `xml:"name"` + VlanId int32 `xml:"vlanId"` + VswitchName string `xml:"vswitchName"` + Policy HostNetworkPolicy `xml:"policy"` +} + +func init() { + t["HostPortGroupSpec"] = reflect.TypeOf((*HostPortGroupSpec)(nil)).Elem() +} + +type HostPosixAccountSpec struct { + HostAccountSpec + + PosixId int32 `xml:"posixId,omitempty"` + ShellAccess *bool `xml:"shellAccess"` +} + +func init() { + t["HostPosixAccountSpec"] = reflect.TypeOf((*HostPosixAccountSpec)(nil)).Elem() +} + +type HostPowerOpFailed struct { + VimFault +} + +func init() { + t["HostPowerOpFailed"] = reflect.TypeOf((*HostPowerOpFailed)(nil)).Elem() +} + +type HostPowerOpFailedFault BaseHostPowerOpFailed + +func init() { + t["HostPowerOpFailedFault"] = reflect.TypeOf((*HostPowerOpFailedFault)(nil)).Elem() +} + +type HostPowerPolicy struct { + DynamicData + + Key int32 `xml:"key"` + Name string `xml:"name"` + ShortName string `xml:"shortName"` + Description string `xml:"description"` +} + +func init() { + t["HostPowerPolicy"] = reflect.TypeOf((*HostPowerPolicy)(nil)).Elem() +} + +type HostPrimaryAgentNotShortNameEvent struct { + HostDasEvent + + PrimaryAgent string `xml:"primaryAgent"` +} + +func init() { + t["HostPrimaryAgentNotShortNameEvent"] = reflect.TypeOf((*HostPrimaryAgentNotShortNameEvent)(nil)).Elem() +} + +type HostProfileAppliedEvent struct { + HostEvent + + Profile ProfileEventArgument `xml:"profile"` +} + +func init() { + t["HostProfileAppliedEvent"] = reflect.TypeOf((*HostProfileAppliedEvent)(nil)).Elem() +} + +type HostProfileCompleteConfigSpec struct { + HostProfileConfigSpec + + ApplyProfile *HostApplyProfile `xml:"applyProfile,omitempty"` + CustomComplyProfile *ComplianceProfile `xml:"customComplyProfile,omitempty"` + DisabledExpressionListChanged bool `xml:"disabledExpressionListChanged"` + DisabledExpressionList []string `xml:"disabledExpressionList,omitempty"` + ValidatorHost *ManagedObjectReference `xml:"validatorHost,omitempty"` + Validating *bool `xml:"validating"` + HostConfig *HostProfileConfigInfo `xml:"hostConfig,omitempty"` +} + +func init() { + t["HostProfileCompleteConfigSpec"] = reflect.TypeOf((*HostProfileCompleteConfigSpec)(nil)).Elem() +} + +type HostProfileConfigInfo struct { + ProfileConfigInfo + + ApplyProfile *HostApplyProfile `xml:"applyProfile,omitempty"` + DefaultComplyProfile *ComplianceProfile `xml:"defaultComplyProfile,omitempty"` + DefaultComplyLocator []ComplianceLocator `xml:"defaultComplyLocator,omitempty"` + CustomComplyProfile *ComplianceProfile `xml:"customComplyProfile,omitempty"` + DisabledExpressionList []string `xml:"disabledExpressionList,omitempty"` + Description *ProfileDescription `xml:"description,omitempty"` +} + +func init() { + t["HostProfileConfigInfo"] = reflect.TypeOf((*HostProfileConfigInfo)(nil)).Elem() +} + +type HostProfileConfigSpec struct { + ProfileCreateSpec +} + +func init() { + t["HostProfileConfigSpec"] = reflect.TypeOf((*HostProfileConfigSpec)(nil)).Elem() +} + +type HostProfileHostBasedConfigSpec struct { + HostProfileConfigSpec + + Host ManagedObjectReference `xml:"host"` + UseHostProfileEngine *bool `xml:"useHostProfileEngine"` +} + +func init() { + t["HostProfileHostBasedConfigSpec"] = reflect.TypeOf((*HostProfileHostBasedConfigSpec)(nil)).Elem() +} + +type HostProfileManagerCompositionResult struct { + DynamicData + + Errors []LocalizableMessage `xml:"errors,omitempty"` + Results []HostProfileManagerCompositionResultResultElement `xml:"results,omitempty"` +} + +func init() { + t["HostProfileManagerCompositionResult"] = reflect.TypeOf((*HostProfileManagerCompositionResult)(nil)).Elem() +} + +type HostProfileManagerCompositionResultResultElement struct { + DynamicData + + Target ManagedObjectReference `xml:"target"` + Status string `xml:"status"` + Errors []LocalizableMessage `xml:"errors,omitempty"` +} + +func init() { + t["HostProfileManagerCompositionResultResultElement"] = reflect.TypeOf((*HostProfileManagerCompositionResultResultElement)(nil)).Elem() +} + +type HostProfileManagerCompositionValidationResult struct { + DynamicData + + Results []HostProfileManagerCompositionValidationResultResultElement `xml:"results,omitempty"` + Errors []LocalizableMessage `xml:"errors,omitempty"` +} + +func init() { + t["HostProfileManagerCompositionValidationResult"] = reflect.TypeOf((*HostProfileManagerCompositionValidationResult)(nil)).Elem() +} + +type HostProfileManagerCompositionValidationResultResultElement struct { + DynamicData + + Target ManagedObjectReference `xml:"target"` + Status string `xml:"status"` + Errors []LocalizableMessage `xml:"errors,omitempty"` + SourceDiffForToBeMerged *HostApplyProfile `xml:"sourceDiffForToBeMerged,omitempty"` + TargetDiffForToBeMerged *HostApplyProfile `xml:"targetDiffForToBeMerged,omitempty"` + ToBeAdded *HostApplyProfile `xml:"toBeAdded,omitempty"` + ToBeDeleted *HostApplyProfile `xml:"toBeDeleted,omitempty"` + ToBeDisabled *HostApplyProfile `xml:"toBeDisabled,omitempty"` + ToBeEnabled *HostApplyProfile `xml:"toBeEnabled,omitempty"` + ToBeReenableCC *HostApplyProfile `xml:"toBeReenableCC,omitempty"` +} + +func init() { + t["HostProfileManagerCompositionValidationResultResultElement"] = reflect.TypeOf((*HostProfileManagerCompositionValidationResultResultElement)(nil)).Elem() +} + +type HostProfileManagerConfigTaskList struct { + DynamicData + + ConfigSpec *HostConfigSpec `xml:"configSpec,omitempty"` + TaskDescription []LocalizableMessage `xml:"taskDescription,omitempty"` + TaskListRequirement []string `xml:"taskListRequirement,omitempty"` +} + +func init() { + t["HostProfileManagerConfigTaskList"] = reflect.TypeOf((*HostProfileManagerConfigTaskList)(nil)).Elem() +} + +type HostProfileManagerHostToConfigSpecMap struct { + DynamicData + + Host ManagedObjectReference `xml:"host"` + ConfigSpec BaseAnswerFileCreateSpec `xml:"configSpec,typeattr"` +} + +func init() { + t["HostProfileManagerHostToConfigSpecMap"] = reflect.TypeOf((*HostProfileManagerHostToConfigSpecMap)(nil)).Elem() +} + +type HostProfileResetValidationState HostProfileResetValidationStateRequestType + +func init() { + t["HostProfileResetValidationState"] = reflect.TypeOf((*HostProfileResetValidationState)(nil)).Elem() +} + +type HostProfileResetValidationStateRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["HostProfileResetValidationStateRequestType"] = reflect.TypeOf((*HostProfileResetValidationStateRequestType)(nil)).Elem() +} + +type HostProfileResetValidationStateResponse struct { +} + +type HostProfileSerializedHostProfileSpec struct { + ProfileSerializedCreateSpec + + ValidatorHost *ManagedObjectReference `xml:"validatorHost,omitempty"` + Validating *bool `xml:"validating"` +} + +func init() { + t["HostProfileSerializedHostProfileSpec"] = reflect.TypeOf((*HostProfileSerializedHostProfileSpec)(nil)).Elem() +} + +type HostProfileValidationFailureInfo struct { + DynamicData + + Name string `xml:"name"` + Annotation string `xml:"annotation"` + UpdateType string `xml:"updateType"` + Host *ManagedObjectReference `xml:"host,omitempty"` + ApplyProfile *HostApplyProfile `xml:"applyProfile,omitempty"` + Failures []ProfileUpdateFailedUpdateFailure `xml:"failures,omitempty"` + Faults []LocalizedMethodFault `xml:"faults,omitempty"` +} + +func init() { + t["HostProfileValidationFailureInfo"] = reflect.TypeOf((*HostProfileValidationFailureInfo)(nil)).Elem() +} + +type HostProfilesEntityCustomizations struct { + DynamicData +} + +func init() { + t["HostProfilesEntityCustomizations"] = reflect.TypeOf((*HostProfilesEntityCustomizations)(nil)).Elem() +} + +type HostProtocolEndpoint struct { + DynamicData + + PeType string `xml:"peType"` + Type string `xml:"type,omitempty"` + Uuid string `xml:"uuid"` + HostKey []ManagedObjectReference `xml:"hostKey,omitempty"` + StorageArray string `xml:"storageArray,omitempty"` + NfsServer string `xml:"nfsServer,omitempty"` + NfsDir string `xml:"nfsDir,omitempty"` + NfsServerScope string `xml:"nfsServerScope,omitempty"` + NfsServerMajor string `xml:"nfsServerMajor,omitempty"` + NfsServerAuthType string `xml:"nfsServerAuthType,omitempty"` + NfsServerUser string `xml:"nfsServerUser,omitempty"` + DeviceId string `xml:"deviceId,omitempty"` +} + +func init() { + t["HostProtocolEndpoint"] = reflect.TypeOf((*HostProtocolEndpoint)(nil)).Elem() +} + +type HostProxySwitch struct { + DynamicData + + DvsUuid string `xml:"dvsUuid"` + DvsName string `xml:"dvsName"` + Key string `xml:"key"` + NumPorts int32 `xml:"numPorts"` + ConfigNumPorts int32 `xml:"configNumPorts,omitempty"` + NumPortsAvailable int32 `xml:"numPortsAvailable"` + UplinkPort []KeyValue `xml:"uplinkPort,omitempty"` + Mtu int32 `xml:"mtu,omitempty"` + Pnic []string `xml:"pnic,omitempty"` + Spec HostProxySwitchSpec `xml:"spec"` + HostLag []HostProxySwitchHostLagConfig `xml:"hostLag,omitempty"` + NetworkReservationSupported *bool `xml:"networkReservationSupported"` + NsxtEnabled *bool `xml:"nsxtEnabled"` + EnsEnabled *bool `xml:"ensEnabled"` + EnsInterruptEnabled *bool `xml:"ensInterruptEnabled"` + TransportZones []DistributedVirtualSwitchHostMemberTransportZoneInfo `xml:"transportZones,omitempty"` + NsxUsedUplinkPort []string `xml:"nsxUsedUplinkPort,omitempty"` + NsxtStatus string `xml:"nsxtStatus,omitempty"` + NsxtStatusDetail string `xml:"nsxtStatusDetail,omitempty"` +} + +func init() { + t["HostProxySwitch"] = reflect.TypeOf((*HostProxySwitch)(nil)).Elem() +} + +type HostProxySwitchConfig struct { + DynamicData + + ChangeOperation string `xml:"changeOperation,omitempty"` + Uuid string `xml:"uuid"` + Spec *HostProxySwitchSpec `xml:"spec,omitempty"` +} + +func init() { + t["HostProxySwitchConfig"] = reflect.TypeOf((*HostProxySwitchConfig)(nil)).Elem() +} + +type HostProxySwitchHostLagConfig struct { + DynamicData + + LagKey string `xml:"lagKey"` + LagName string `xml:"lagName,omitempty"` + UplinkPort []KeyValue `xml:"uplinkPort,omitempty"` +} + +func init() { + t["HostProxySwitchHostLagConfig"] = reflect.TypeOf((*HostProxySwitchHostLagConfig)(nil)).Elem() +} + +type HostProxySwitchSpec struct { + DynamicData + + Backing BaseDistributedVirtualSwitchHostMemberBacking `xml:"backing,omitempty,typeattr"` +} + +func init() { + t["HostProxySwitchSpec"] = reflect.TypeOf((*HostProxySwitchSpec)(nil)).Elem() +} + +type HostRdmaDevice struct { + DynamicData + + Key string `xml:"key"` + Device string `xml:"device"` + Driver string `xml:"driver,omitempty"` + Description string `xml:"description,omitempty"` + Backing BaseHostRdmaDeviceBacking `xml:"backing,omitempty,typeattr"` + ConnectionInfo HostRdmaDeviceConnectionInfo `xml:"connectionInfo"` + Capability HostRdmaDeviceCapability `xml:"capability"` +} + +func init() { + t["HostRdmaDevice"] = reflect.TypeOf((*HostRdmaDevice)(nil)).Elem() +} + +type HostRdmaDeviceBacking struct { + DynamicData +} + +func init() { + t["HostRdmaDeviceBacking"] = reflect.TypeOf((*HostRdmaDeviceBacking)(nil)).Elem() +} + +type HostRdmaDeviceCapability struct { + DynamicData + + RoceV1Capable bool `xml:"roceV1Capable"` + RoceV2Capable bool `xml:"roceV2Capable"` + IWarpCapable bool `xml:"iWarpCapable"` +} + +func init() { + t["HostRdmaDeviceCapability"] = reflect.TypeOf((*HostRdmaDeviceCapability)(nil)).Elem() +} + +type HostRdmaDeviceConnectionInfo struct { + DynamicData + + State string `xml:"state"` + Mtu int32 `xml:"mtu"` + SpeedInMbps int32 `xml:"speedInMbps"` +} + +func init() { + t["HostRdmaDeviceConnectionInfo"] = reflect.TypeOf((*HostRdmaDeviceConnectionInfo)(nil)).Elem() +} + +type HostRdmaDevicePnicBacking struct { + HostRdmaDeviceBacking + + PairedUplink string `xml:"pairedUplink"` +} + +func init() { + t["HostRdmaDevicePnicBacking"] = reflect.TypeOf((*HostRdmaDevicePnicBacking)(nil)).Elem() +} + +type HostRdmaHba struct { + HostHostBusAdapter + + AssociatedRdmaDevice string `xml:"associatedRdmaDevice,omitempty"` +} + +func init() { + t["HostRdmaHba"] = reflect.TypeOf((*HostRdmaHba)(nil)).Elem() +} + +type HostRdmaTargetTransport struct { + HostTargetTransport +} + +func init() { + t["HostRdmaTargetTransport"] = reflect.TypeOf((*HostRdmaTargetTransport)(nil)).Elem() +} + +type HostReconcileDatastoreInventoryRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["HostReconcileDatastoreInventoryRequestType"] = reflect.TypeOf((*HostReconcileDatastoreInventoryRequestType)(nil)).Elem() +} + +type HostReconcileDatastoreInventory_Task HostReconcileDatastoreInventoryRequestType + +func init() { + t["HostReconcileDatastoreInventory_Task"] = reflect.TypeOf((*HostReconcileDatastoreInventory_Task)(nil)).Elem() +} + +type HostReconcileDatastoreInventory_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type HostReconnectionFailedEvent struct { + HostEvent +} + +func init() { + t["HostReconnectionFailedEvent"] = reflect.TypeOf((*HostReconnectionFailedEvent)(nil)).Elem() +} + +type HostRegisterDisk HostRegisterDiskRequestType + +func init() { + t["HostRegisterDisk"] = reflect.TypeOf((*HostRegisterDisk)(nil)).Elem() +} + +type HostRegisterDiskRequestType struct { + This ManagedObjectReference `xml:"_this"` + Path string `xml:"path"` + Name string `xml:"name,omitempty"` +} + +func init() { + t["HostRegisterDiskRequestType"] = reflect.TypeOf((*HostRegisterDiskRequestType)(nil)).Elem() +} + +type HostRegisterDiskResponse struct { + Returnval VStorageObject `xml:"returnval"` +} + +type HostReliableMemoryInfo struct { + DynamicData + + MemorySize int64 `xml:"memorySize"` +} + +func init() { + t["HostReliableMemoryInfo"] = reflect.TypeOf((*HostReliableMemoryInfo)(nil)).Elem() +} + +type HostRelocateVStorageObjectRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + Spec VslmRelocateSpec `xml:"spec"` +} + +func init() { + t["HostRelocateVStorageObjectRequestType"] = reflect.TypeOf((*HostRelocateVStorageObjectRequestType)(nil)).Elem() +} + +type HostRelocateVStorageObject_Task HostRelocateVStorageObjectRequestType + +func init() { + t["HostRelocateVStorageObject_Task"] = reflect.TypeOf((*HostRelocateVStorageObject_Task)(nil)).Elem() +} + +type HostRelocateVStorageObject_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type HostRemoveVFlashResource HostRemoveVFlashResourceRequestType + +func init() { + t["HostRemoveVFlashResource"] = reflect.TypeOf((*HostRemoveVFlashResource)(nil)).Elem() +} + +type HostRemoveVFlashResourceRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["HostRemoveVFlashResourceRequestType"] = reflect.TypeOf((*HostRemoveVFlashResourceRequestType)(nil)).Elem() +} + +type HostRemoveVFlashResourceResponse struct { +} + +type HostRemovedEvent struct { + HostEvent +} + +func init() { + t["HostRemovedEvent"] = reflect.TypeOf((*HostRemovedEvent)(nil)).Elem() +} + +type HostRenameVStorageObject HostRenameVStorageObjectRequestType + +func init() { + t["HostRenameVStorageObject"] = reflect.TypeOf((*HostRenameVStorageObject)(nil)).Elem() +} + +type HostRenameVStorageObjectRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + Name string `xml:"name"` +} + +func init() { + t["HostRenameVStorageObjectRequestType"] = reflect.TypeOf((*HostRenameVStorageObjectRequestType)(nil)).Elem() +} + +type HostRenameVStorageObjectResponse struct { +} + +type HostResignatureRescanResult struct { + DynamicData + + Rescan []HostVmfsRescanResult `xml:"rescan,omitempty"` + Result ManagedObjectReference `xml:"result"` +} + +func init() { + t["HostResignatureRescanResult"] = reflect.TypeOf((*HostResignatureRescanResult)(nil)).Elem() +} + +type HostRetrieveVStorageInfrastructureObjectPolicy HostRetrieveVStorageInfrastructureObjectPolicyRequestType + +func init() { + t["HostRetrieveVStorageInfrastructureObjectPolicy"] = reflect.TypeOf((*HostRetrieveVStorageInfrastructureObjectPolicy)(nil)).Elem() +} + +type HostRetrieveVStorageInfrastructureObjectPolicyRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["HostRetrieveVStorageInfrastructureObjectPolicyRequestType"] = reflect.TypeOf((*HostRetrieveVStorageInfrastructureObjectPolicyRequestType)(nil)).Elem() +} + +type HostRetrieveVStorageInfrastructureObjectPolicyResponse struct { + Returnval []VslmInfrastructureObjectPolicy `xml:"returnval,omitempty"` +} + +type HostRetrieveVStorageObject HostRetrieveVStorageObjectRequestType + +func init() { + t["HostRetrieveVStorageObject"] = reflect.TypeOf((*HostRetrieveVStorageObject)(nil)).Elem() +} + +type HostRetrieveVStorageObjectMetadata HostRetrieveVStorageObjectMetadataRequestType + +func init() { + t["HostRetrieveVStorageObjectMetadata"] = reflect.TypeOf((*HostRetrieveVStorageObjectMetadata)(nil)).Elem() +} + +type HostRetrieveVStorageObjectMetadataRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + SnapshotId *ID `xml:"snapshotId,omitempty"` + Prefix string `xml:"prefix,omitempty"` +} + +func init() { + t["HostRetrieveVStorageObjectMetadataRequestType"] = reflect.TypeOf((*HostRetrieveVStorageObjectMetadataRequestType)(nil)).Elem() +} + +type HostRetrieveVStorageObjectMetadataResponse struct { + Returnval []KeyValue `xml:"returnval,omitempty"` +} + +type HostRetrieveVStorageObjectMetadataValue HostRetrieveVStorageObjectMetadataValueRequestType + +func init() { + t["HostRetrieveVStorageObjectMetadataValue"] = reflect.TypeOf((*HostRetrieveVStorageObjectMetadataValue)(nil)).Elem() +} + +type HostRetrieveVStorageObjectMetadataValueRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + SnapshotId *ID `xml:"snapshotId,omitempty"` + Key string `xml:"key"` +} + +func init() { + t["HostRetrieveVStorageObjectMetadataValueRequestType"] = reflect.TypeOf((*HostRetrieveVStorageObjectMetadataValueRequestType)(nil)).Elem() +} + +type HostRetrieveVStorageObjectMetadataValueResponse struct { + Returnval string `xml:"returnval"` +} + +type HostRetrieveVStorageObjectRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["HostRetrieveVStorageObjectRequestType"] = reflect.TypeOf((*HostRetrieveVStorageObjectRequestType)(nil)).Elem() +} + +type HostRetrieveVStorageObjectResponse struct { + Returnval VStorageObject `xml:"returnval"` +} + +type HostRetrieveVStorageObjectState HostRetrieveVStorageObjectStateRequestType + +func init() { + t["HostRetrieveVStorageObjectState"] = reflect.TypeOf((*HostRetrieveVStorageObjectState)(nil)).Elem() +} + +type HostRetrieveVStorageObjectStateRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["HostRetrieveVStorageObjectStateRequestType"] = reflect.TypeOf((*HostRetrieveVStorageObjectStateRequestType)(nil)).Elem() +} + +type HostRetrieveVStorageObjectStateResponse struct { + Returnval VStorageObjectStateInfo `xml:"returnval"` +} + +type HostRuntimeInfo struct { + DynamicData + + ConnectionState HostSystemConnectionState `xml:"connectionState"` + PowerState HostSystemPowerState `xml:"powerState"` + StandbyMode string `xml:"standbyMode,omitempty"` + InMaintenanceMode bool `xml:"inMaintenanceMode"` + InQuarantineMode *bool `xml:"inQuarantineMode"` + BootTime *time.Time `xml:"bootTime"` + HealthSystemRuntime *HealthSystemRuntime `xml:"healthSystemRuntime,omitempty"` + DasHostState *ClusterDasFdmHostState `xml:"dasHostState,omitempty"` + TpmPcrValues []HostTpmDigestInfo `xml:"tpmPcrValues,omitempty"` + VsanRuntimeInfo *VsanHostRuntimeInfo `xml:"vsanRuntimeInfo,omitempty"` + NetworkRuntimeInfo *HostRuntimeInfoNetworkRuntimeInfo `xml:"networkRuntimeInfo,omitempty"` + VFlashResourceRuntimeInfo *HostVFlashManagerVFlashResourceRunTimeInfo `xml:"vFlashResourceRuntimeInfo,omitempty"` + HostMaxVirtualDiskCapacity int64 `xml:"hostMaxVirtualDiskCapacity,omitempty"` + CryptoState string `xml:"cryptoState,omitempty"` + CryptoKeyId *CryptoKeyId `xml:"cryptoKeyId,omitempty"` +} + +func init() { + t["HostRuntimeInfo"] = reflect.TypeOf((*HostRuntimeInfo)(nil)).Elem() +} + +type HostRuntimeInfoNetStackInstanceRuntimeInfo struct { + DynamicData + + NetStackInstanceKey string `xml:"netStackInstanceKey"` + State string `xml:"state,omitempty"` + VmknicKeys []string `xml:"vmknicKeys,omitempty"` + MaxNumberOfConnections int32 `xml:"maxNumberOfConnections,omitempty"` + CurrentIpV6Enabled *bool `xml:"currentIpV6Enabled"` +} + +func init() { + t["HostRuntimeInfoNetStackInstanceRuntimeInfo"] = reflect.TypeOf((*HostRuntimeInfoNetStackInstanceRuntimeInfo)(nil)).Elem() +} + +type HostRuntimeInfoNetworkRuntimeInfo struct { + DynamicData + + NetStackInstanceRuntimeInfo []HostRuntimeInfoNetStackInstanceRuntimeInfo `xml:"netStackInstanceRuntimeInfo,omitempty"` + NetworkResourceRuntime *HostNetworkResourceRuntime `xml:"networkResourceRuntime,omitempty"` +} + +func init() { + t["HostRuntimeInfoNetworkRuntimeInfo"] = reflect.TypeOf((*HostRuntimeInfoNetworkRuntimeInfo)(nil)).Elem() +} + +type HostScheduleReconcileDatastoreInventory HostScheduleReconcileDatastoreInventoryRequestType + +func init() { + t["HostScheduleReconcileDatastoreInventory"] = reflect.TypeOf((*HostScheduleReconcileDatastoreInventory)(nil)).Elem() +} + +type HostScheduleReconcileDatastoreInventoryRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["HostScheduleReconcileDatastoreInventoryRequestType"] = reflect.TypeOf((*HostScheduleReconcileDatastoreInventoryRequestType)(nil)).Elem() +} + +type HostScheduleReconcileDatastoreInventoryResponse struct { +} + +type HostScsiDisk struct { + ScsiLun + + Capacity HostDiskDimensionsLba `xml:"capacity"` + DevicePath string `xml:"devicePath"` + Ssd *bool `xml:"ssd"` + LocalDisk *bool `xml:"localDisk"` + PhysicalLocation []string `xml:"physicalLocation,omitempty"` + EmulatedDIXDIFEnabled *bool `xml:"emulatedDIXDIFEnabled"` + VsanDiskInfo *VsanHostVsanDiskInfo `xml:"vsanDiskInfo,omitempty"` + ScsiDiskType string `xml:"scsiDiskType,omitempty"` +} + +func init() { + t["HostScsiDisk"] = reflect.TypeOf((*HostScsiDisk)(nil)).Elem() +} + +type HostScsiDiskPartition struct { + DynamicData + + DiskName string `xml:"diskName"` + Partition int32 `xml:"partition"` +} + +func init() { + t["HostScsiDiskPartition"] = reflect.TypeOf((*HostScsiDiskPartition)(nil)).Elem() +} + +type HostScsiTopology struct { + DynamicData + + Adapter []HostScsiTopologyInterface `xml:"adapter,omitempty"` +} + +func init() { + t["HostScsiTopology"] = reflect.TypeOf((*HostScsiTopology)(nil)).Elem() +} + +type HostScsiTopologyInterface struct { + DynamicData + + Key string `xml:"key"` + Adapter string `xml:"adapter"` + Target []HostScsiTopologyTarget `xml:"target,omitempty"` +} + +func init() { + t["HostScsiTopologyInterface"] = reflect.TypeOf((*HostScsiTopologyInterface)(nil)).Elem() +} + +type HostScsiTopologyLun struct { + DynamicData + + Key string `xml:"key"` + Lun int32 `xml:"lun"` + ScsiLun string `xml:"scsiLun"` +} + +func init() { + t["HostScsiTopologyLun"] = reflect.TypeOf((*HostScsiTopologyLun)(nil)).Elem() +} + +type HostScsiTopologyTarget struct { + DynamicData + + Key string `xml:"key"` + Target int32 `xml:"target"` + Lun []HostScsiTopologyLun `xml:"lun,omitempty"` + Transport BaseHostTargetTransport `xml:"transport,omitempty,typeattr"` +} + +func init() { + t["HostScsiTopologyTarget"] = reflect.TypeOf((*HostScsiTopologyTarget)(nil)).Elem() +} + +type HostSecuritySpec struct { + DynamicData + + AdminPassword string `xml:"adminPassword,omitempty"` + RemovePermission []Permission `xml:"removePermission,omitempty"` + AddPermission []Permission `xml:"addPermission,omitempty"` +} + +func init() { + t["HostSecuritySpec"] = reflect.TypeOf((*HostSecuritySpec)(nil)).Elem() +} + +type HostSerialAttachedHba struct { + HostHostBusAdapter + + NodeWorldWideName string `xml:"nodeWorldWideName"` +} + +func init() { + t["HostSerialAttachedHba"] = reflect.TypeOf((*HostSerialAttachedHba)(nil)).Elem() +} + +type HostSerialAttachedTargetTransport struct { + HostTargetTransport +} + +func init() { + t["HostSerialAttachedTargetTransport"] = reflect.TypeOf((*HostSerialAttachedTargetTransport)(nil)).Elem() +} + +type HostService struct { + DynamicData + + Key string `xml:"key"` + Label string `xml:"label"` + Required bool `xml:"required"` + Uninstallable bool `xml:"uninstallable"` + Running bool `xml:"running"` + Ruleset []string `xml:"ruleset,omitempty"` + Policy string `xml:"policy"` + SourcePackage *HostServiceSourcePackage `xml:"sourcePackage,omitempty"` +} + +func init() { + t["HostService"] = reflect.TypeOf((*HostService)(nil)).Elem() +} + +type HostServiceConfig struct { + DynamicData + + ServiceId string `xml:"serviceId"` + StartupPolicy string `xml:"startupPolicy"` +} + +func init() { + t["HostServiceConfig"] = reflect.TypeOf((*HostServiceConfig)(nil)).Elem() +} + +type HostServiceInfo struct { + DynamicData + + Service []HostService `xml:"service,omitempty"` +} + +func init() { + t["HostServiceInfo"] = reflect.TypeOf((*HostServiceInfo)(nil)).Elem() +} + +type HostServiceSourcePackage struct { + DynamicData + + SourcePackageName string `xml:"sourcePackageName"` + Description string `xml:"description"` +} + +func init() { + t["HostServiceSourcePackage"] = reflect.TypeOf((*HostServiceSourcePackage)(nil)).Elem() +} + +type HostServiceTicket struct { + DynamicData + + Host string `xml:"host,omitempty"` + Port int32 `xml:"port,omitempty"` + SslThumbprint string `xml:"sslThumbprint,omitempty"` + Service string `xml:"service"` + ServiceVersion string `xml:"serviceVersion"` + SessionId string `xml:"sessionId"` +} + +func init() { + t["HostServiceTicket"] = reflect.TypeOf((*HostServiceTicket)(nil)).Elem() +} + +type HostSetVStorageObjectControlFlags HostSetVStorageObjectControlFlagsRequestType + +func init() { + t["HostSetVStorageObjectControlFlags"] = reflect.TypeOf((*HostSetVStorageObjectControlFlags)(nil)).Elem() +} + +type HostSetVStorageObjectControlFlagsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + ControlFlags []string `xml:"controlFlags,omitempty"` +} + +func init() { + t["HostSetVStorageObjectControlFlagsRequestType"] = reflect.TypeOf((*HostSetVStorageObjectControlFlagsRequestType)(nil)).Elem() +} + +type HostSetVStorageObjectControlFlagsResponse struct { +} + +type HostSgxInfo struct { + DynamicData + + SgxState string `xml:"sgxState"` + TotalEpcMemory int64 `xml:"totalEpcMemory"` + FlcMode string `xml:"flcMode"` + LePubKeyHash string `xml:"lePubKeyHash,omitempty"` +} + +func init() { + t["HostSgxInfo"] = reflect.TypeOf((*HostSgxInfo)(nil)).Elem() +} + +type HostSharedGpuCapabilities struct { + DynamicData + + Vgpu string `xml:"vgpu"` + DiskSnapshotSupported bool `xml:"diskSnapshotSupported"` + MemorySnapshotSupported bool `xml:"memorySnapshotSupported"` + SuspendSupported bool `xml:"suspendSupported"` + MigrateSupported bool `xml:"migrateSupported"` +} + +func init() { + t["HostSharedGpuCapabilities"] = reflect.TypeOf((*HostSharedGpuCapabilities)(nil)).Elem() +} + +type HostShortNameInconsistentEvent struct { + HostDasEvent + + ShortName string `xml:"shortName"` + ShortName2 string `xml:"shortName2"` +} + +func init() { + t["HostShortNameInconsistentEvent"] = reflect.TypeOf((*HostShortNameInconsistentEvent)(nil)).Elem() +} + +type HostShortNameToIpFailedEvent struct { + HostEvent + + ShortName string `xml:"shortName"` +} + +func init() { + t["HostShortNameToIpFailedEvent"] = reflect.TypeOf((*HostShortNameToIpFailedEvent)(nil)).Elem() +} + +type HostShutdownEvent struct { + HostEvent + + Reason string `xml:"reason"` +} + +func init() { + t["HostShutdownEvent"] = reflect.TypeOf((*HostShutdownEvent)(nil)).Elem() +} + +type HostSnmpConfigSpec struct { + DynamicData + + Enabled *bool `xml:"enabled"` + Port int32 `xml:"port,omitempty"` + ReadOnlyCommunities []string `xml:"readOnlyCommunities,omitempty"` + TrapTargets []HostSnmpDestination `xml:"trapTargets,omitempty"` + Option []KeyValue `xml:"option,omitempty"` +} + +func init() { + t["HostSnmpConfigSpec"] = reflect.TypeOf((*HostSnmpConfigSpec)(nil)).Elem() +} + +type HostSnmpDestination struct { + DynamicData + + HostName string `xml:"hostName"` + Port int32 `xml:"port"` + Community string `xml:"community"` +} + +func init() { + t["HostSnmpDestination"] = reflect.TypeOf((*HostSnmpDestination)(nil)).Elem() +} + +type HostSnmpSystemAgentLimits struct { + DynamicData + + MaxReadOnlyCommunities int32 `xml:"maxReadOnlyCommunities"` + MaxTrapDestinations int32 `xml:"maxTrapDestinations"` + MaxCommunityLength int32 `xml:"maxCommunityLength"` + MaxBufferSize int32 `xml:"maxBufferSize"` + Capability HostSnmpAgentCapability `xml:"capability,omitempty"` +} + +func init() { + t["HostSnmpSystemAgentLimits"] = reflect.TypeOf((*HostSnmpSystemAgentLimits)(nil)).Elem() +} + +type HostSpecGetUpdatedHosts HostSpecGetUpdatedHostsRequestType + +func init() { + t["HostSpecGetUpdatedHosts"] = reflect.TypeOf((*HostSpecGetUpdatedHosts)(nil)).Elem() +} + +type HostSpecGetUpdatedHostsRequestType struct { + This ManagedObjectReference `xml:"_this"` + StartChangeID string `xml:"startChangeID,omitempty"` + EndChangeID string `xml:"endChangeID,omitempty"` +} + +func init() { + t["HostSpecGetUpdatedHostsRequestType"] = reflect.TypeOf((*HostSpecGetUpdatedHostsRequestType)(nil)).Elem() +} + +type HostSpecGetUpdatedHostsResponse struct { + Returnval []ManagedObjectReference `xml:"returnval,omitempty"` +} + +type HostSpecification struct { + DynamicData + + CreatedTime time.Time `xml:"createdTime"` + LastModified *time.Time `xml:"lastModified"` + Host ManagedObjectReference `xml:"host"` + SubSpecs []HostSubSpecification `xml:"subSpecs,omitempty"` + ChangeID string `xml:"changeID,omitempty"` +} + +func init() { + t["HostSpecification"] = reflect.TypeOf((*HostSpecification)(nil)).Elem() +} + +type HostSpecificationChangedEvent struct { + HostEvent +} + +func init() { + t["HostSpecificationChangedEvent"] = reflect.TypeOf((*HostSpecificationChangedEvent)(nil)).Elem() +} + +type HostSpecificationOperationFailed struct { + VimFault + + Host ManagedObjectReference `xml:"host"` +} + +func init() { + t["HostSpecificationOperationFailed"] = reflect.TypeOf((*HostSpecificationOperationFailed)(nil)).Elem() +} + +type HostSpecificationOperationFailedFault HostSpecificationOperationFailed + +func init() { + t["HostSpecificationOperationFailedFault"] = reflect.TypeOf((*HostSpecificationOperationFailedFault)(nil)).Elem() +} + +type HostSpecificationRequireEvent struct { + HostEvent +} + +func init() { + t["HostSpecificationRequireEvent"] = reflect.TypeOf((*HostSpecificationRequireEvent)(nil)).Elem() +} + +type HostSpecificationUpdateEvent struct { + HostEvent + + HostSpec HostSpecification `xml:"hostSpec"` +} + +func init() { + t["HostSpecificationUpdateEvent"] = reflect.TypeOf((*HostSpecificationUpdateEvent)(nil)).Elem() +} + +type HostSriovConfig struct { + HostPciPassthruConfig + + SriovEnabled bool `xml:"sriovEnabled"` + NumVirtualFunction int32 `xml:"numVirtualFunction"` +} + +func init() { + t["HostSriovConfig"] = reflect.TypeOf((*HostSriovConfig)(nil)).Elem() +} + +type HostSriovDevicePoolInfo struct { + DynamicData + + Key string `xml:"key"` +} + +func init() { + t["HostSriovDevicePoolInfo"] = reflect.TypeOf((*HostSriovDevicePoolInfo)(nil)).Elem() +} + +type HostSriovInfo struct { + HostPciPassthruInfo + + SriovEnabled bool `xml:"sriovEnabled"` + SriovCapable bool `xml:"sriovCapable"` + SriovActive bool `xml:"sriovActive"` + NumVirtualFunctionRequested int32 `xml:"numVirtualFunctionRequested"` + NumVirtualFunction int32 `xml:"numVirtualFunction"` + MaxVirtualFunctionSupported int32 `xml:"maxVirtualFunctionSupported"` +} + +func init() { + t["HostSriovInfo"] = reflect.TypeOf((*HostSriovInfo)(nil)).Elem() +} + +type HostSriovNetworkDevicePoolInfo struct { + HostSriovDevicePoolInfo + + SwitchKey string `xml:"switchKey,omitempty"` + SwitchUuid string `xml:"switchUuid,omitempty"` + Pnic []PhysicalNic `xml:"pnic,omitempty"` +} + +func init() { + t["HostSriovNetworkDevicePoolInfo"] = reflect.TypeOf((*HostSriovNetworkDevicePoolInfo)(nil)).Elem() +} + +type HostSslThumbprintInfo struct { + DynamicData + + Principal string `xml:"principal"` + OwnerTag string `xml:"ownerTag,omitempty"` + SslThumbprints []string `xml:"sslThumbprints,omitempty"` +} + +func init() { + t["HostSslThumbprintInfo"] = reflect.TypeOf((*HostSslThumbprintInfo)(nil)).Elem() +} + +type HostStatusChangedEvent struct { + ClusterStatusChangedEvent +} + +func init() { + t["HostStatusChangedEvent"] = reflect.TypeOf((*HostStatusChangedEvent)(nil)).Elem() +} + +type HostStorageArrayTypePolicyOption struct { + DynamicData + + Policy BaseElementDescription `xml:"policy,typeattr"` +} + +func init() { + t["HostStorageArrayTypePolicyOption"] = reflect.TypeOf((*HostStorageArrayTypePolicyOption)(nil)).Elem() +} + +type HostStorageDeviceInfo struct { + DynamicData + + HostBusAdapter []BaseHostHostBusAdapter `xml:"hostBusAdapter,omitempty,typeattr"` + ScsiLun []BaseScsiLun `xml:"scsiLun,omitempty,typeattr"` + ScsiTopology *HostScsiTopology `xml:"scsiTopology,omitempty"` + NvmeTopology *HostNvmeTopology `xml:"nvmeTopology,omitempty"` + MultipathInfo *HostMultipathInfo `xml:"multipathInfo,omitempty"` + PlugStoreTopology *HostPlugStoreTopology `xml:"plugStoreTopology,omitempty"` + SoftwareInternetScsiEnabled bool `xml:"softwareInternetScsiEnabled"` +} + +func init() { + t["HostStorageDeviceInfo"] = reflect.TypeOf((*HostStorageDeviceInfo)(nil)).Elem() +} + +type HostStorageElementInfo struct { + HostHardwareElementInfo + + OperationalInfo []HostStorageOperationalInfo `xml:"operationalInfo,omitempty"` +} + +func init() { + t["HostStorageElementInfo"] = reflect.TypeOf((*HostStorageElementInfo)(nil)).Elem() +} + +type HostStorageOperationalInfo struct { + DynamicData + + Property string `xml:"property"` + Value string `xml:"value"` +} + +func init() { + t["HostStorageOperationalInfo"] = reflect.TypeOf((*HostStorageOperationalInfo)(nil)).Elem() +} + +type HostStorageSystemDiskLocatorLedResult struct { + DynamicData + + Key string `xml:"key"` + Fault LocalizedMethodFault `xml:"fault"` +} + +func init() { + t["HostStorageSystemDiskLocatorLedResult"] = reflect.TypeOf((*HostStorageSystemDiskLocatorLedResult)(nil)).Elem() +} + +type HostStorageSystemScsiLunResult struct { + DynamicData + + Key string `xml:"key"` + Fault *LocalizedMethodFault `xml:"fault,omitempty"` +} + +func init() { + t["HostStorageSystemScsiLunResult"] = reflect.TypeOf((*HostStorageSystemScsiLunResult)(nil)).Elem() +} + +type HostStorageSystemVmfsVolumeResult struct { + DynamicData + + Key string `xml:"key"` + Fault *LocalizedMethodFault `xml:"fault,omitempty"` +} + +func init() { + t["HostStorageSystemVmfsVolumeResult"] = reflect.TypeOf((*HostStorageSystemVmfsVolumeResult)(nil)).Elem() +} + +type HostSubSpecification struct { + DynamicData + + Name string `xml:"name"` + CreatedTime time.Time `xml:"createdTime"` + Data []byte `xml:"data,omitempty"` + BinaryData []byte `xml:"binaryData,omitempty"` +} + +func init() { + t["HostSubSpecification"] = reflect.TypeOf((*HostSubSpecification)(nil)).Elem() +} + +type HostSubSpecificationDeleteEvent struct { + HostEvent + + SubSpecName string `xml:"subSpecName"` +} + +func init() { + t["HostSubSpecificationDeleteEvent"] = reflect.TypeOf((*HostSubSpecificationDeleteEvent)(nil)).Elem() +} + +type HostSubSpecificationUpdateEvent struct { + HostEvent + + HostSubSpec HostSubSpecification `xml:"hostSubSpec"` +} + +func init() { + t["HostSubSpecificationUpdateEvent"] = reflect.TypeOf((*HostSubSpecificationUpdateEvent)(nil)).Elem() +} + +type HostSyncFailedEvent struct { + HostEvent + + Reason LocalizedMethodFault `xml:"reason"` +} + +func init() { + t["HostSyncFailedEvent"] = reflect.TypeOf((*HostSyncFailedEvent)(nil)).Elem() +} + +type HostSystemComplianceCheckState struct { + DynamicData + + State string `xml:"state"` + CheckTime time.Time `xml:"checkTime"` +} + +func init() { + t["HostSystemComplianceCheckState"] = reflect.TypeOf((*HostSystemComplianceCheckState)(nil)).Elem() +} + +type HostSystemHealthInfo struct { + DynamicData + + NumericSensorInfo []HostNumericSensorInfo `xml:"numericSensorInfo,omitempty"` +} + +func init() { + t["HostSystemHealthInfo"] = reflect.TypeOf((*HostSystemHealthInfo)(nil)).Elem() +} + +type HostSystemIdentificationInfo struct { + DynamicData + + IdentifierValue string `xml:"identifierValue"` + IdentifierType BaseElementDescription `xml:"identifierType,typeattr"` +} + +func init() { + t["HostSystemIdentificationInfo"] = reflect.TypeOf((*HostSystemIdentificationInfo)(nil)).Elem() +} + +type HostSystemInfo struct { + DynamicData + + Vendor string `xml:"vendor"` + Model string `xml:"model"` + Uuid string `xml:"uuid"` + OtherIdentifyingInfo []HostSystemIdentificationInfo `xml:"otherIdentifyingInfo,omitempty"` + SerialNumber string `xml:"serialNumber,omitempty"` +} + +func init() { + t["HostSystemInfo"] = reflect.TypeOf((*HostSystemInfo)(nil)).Elem() +} + +type HostSystemReconnectSpec struct { + DynamicData + + SyncState *bool `xml:"syncState"` +} + +func init() { + t["HostSystemReconnectSpec"] = reflect.TypeOf((*HostSystemReconnectSpec)(nil)).Elem() +} + +type HostSystemRemediationState struct { + DynamicData + + State string `xml:"state"` + OperationTime time.Time `xml:"operationTime"` +} + +func init() { + t["HostSystemRemediationState"] = reflect.TypeOf((*HostSystemRemediationState)(nil)).Elem() +} + +type HostSystemResourceInfo struct { + DynamicData + + Key string `xml:"key"` + Config *ResourceConfigSpec `xml:"config,omitempty"` + Child []HostSystemResourceInfo `xml:"child,omitempty"` +} + +func init() { + t["HostSystemResourceInfo"] = reflect.TypeOf((*HostSystemResourceInfo)(nil)).Elem() +} + +type HostSystemSwapConfiguration struct { + DynamicData + + Option []BaseHostSystemSwapConfigurationSystemSwapOption `xml:"option,omitempty,typeattr"` +} + +func init() { + t["HostSystemSwapConfiguration"] = reflect.TypeOf((*HostSystemSwapConfiguration)(nil)).Elem() +} + +type HostSystemSwapConfigurationDatastoreOption struct { + HostSystemSwapConfigurationSystemSwapOption + + Datastore string `xml:"datastore"` +} + +func init() { + t["HostSystemSwapConfigurationDatastoreOption"] = reflect.TypeOf((*HostSystemSwapConfigurationDatastoreOption)(nil)).Elem() +} + +type HostSystemSwapConfigurationDisabledOption struct { + HostSystemSwapConfigurationSystemSwapOption +} + +func init() { + t["HostSystemSwapConfigurationDisabledOption"] = reflect.TypeOf((*HostSystemSwapConfigurationDisabledOption)(nil)).Elem() +} + +type HostSystemSwapConfigurationHostCacheOption struct { + HostSystemSwapConfigurationSystemSwapOption +} + +func init() { + t["HostSystemSwapConfigurationHostCacheOption"] = reflect.TypeOf((*HostSystemSwapConfigurationHostCacheOption)(nil)).Elem() +} + +type HostSystemSwapConfigurationHostLocalSwapOption struct { + HostSystemSwapConfigurationSystemSwapOption +} + +func init() { + t["HostSystemSwapConfigurationHostLocalSwapOption"] = reflect.TypeOf((*HostSystemSwapConfigurationHostLocalSwapOption)(nil)).Elem() +} + +type HostSystemSwapConfigurationSystemSwapOption struct { + DynamicData + + Key int32 `xml:"key"` +} + +func init() { + t["HostSystemSwapConfigurationSystemSwapOption"] = reflect.TypeOf((*HostSystemSwapConfigurationSystemSwapOption)(nil)).Elem() +} + +type HostTargetTransport struct { + DynamicData +} + +func init() { + t["HostTargetTransport"] = reflect.TypeOf((*HostTargetTransport)(nil)).Elem() +} + +type HostTpmAttestationInfo struct { + DynamicData + + Time time.Time `xml:"time"` + Status HostTpmAttestationInfoAcceptanceStatus `xml:"status"` + Message *LocalizableMessage `xml:"message,omitempty"` +} + +func init() { + t["HostTpmAttestationInfo"] = reflect.TypeOf((*HostTpmAttestationInfo)(nil)).Elem() +} + +type HostTpmAttestationReport struct { + DynamicData + + TpmPcrValues []HostTpmDigestInfo `xml:"tpmPcrValues"` + TpmEvents []HostTpmEventLogEntry `xml:"tpmEvents"` + TpmLogReliable bool `xml:"tpmLogReliable"` +} + +func init() { + t["HostTpmAttestationReport"] = reflect.TypeOf((*HostTpmAttestationReport)(nil)).Elem() +} + +type HostTpmBootSecurityOptionEventDetails struct { + HostTpmEventDetails + + BootSecurityOption string `xml:"bootSecurityOption"` +} + +func init() { + t["HostTpmBootSecurityOptionEventDetails"] = reflect.TypeOf((*HostTpmBootSecurityOptionEventDetails)(nil)).Elem() +} + +type HostTpmCommandEventDetails struct { + HostTpmEventDetails + + CommandLine string `xml:"commandLine"` +} + +func init() { + t["HostTpmCommandEventDetails"] = reflect.TypeOf((*HostTpmCommandEventDetails)(nil)).Elem() +} + +type HostTpmDigestInfo struct { + HostDigestInfo + + PcrNumber int32 `xml:"pcrNumber"` +} + +func init() { + t["HostTpmDigestInfo"] = reflect.TypeOf((*HostTpmDigestInfo)(nil)).Elem() +} + +type HostTpmEventDetails struct { + DynamicData + + DataHash []byte `xml:"dataHash"` + DataHashMethod string `xml:"dataHashMethod,omitempty"` +} + +func init() { + t["HostTpmEventDetails"] = reflect.TypeOf((*HostTpmEventDetails)(nil)).Elem() +} + +type HostTpmEventLogEntry struct { + DynamicData + + PcrIndex int32 `xml:"pcrIndex"` + EventDetails BaseHostTpmEventDetails `xml:"eventDetails,typeattr"` +} + +func init() { + t["HostTpmEventLogEntry"] = reflect.TypeOf((*HostTpmEventLogEntry)(nil)).Elem() +} + +type HostTpmOptionEventDetails struct { + HostTpmEventDetails + + OptionsFileName string `xml:"optionsFileName"` + BootOptions []byte `xml:"bootOptions,omitempty"` +} + +func init() { + t["HostTpmOptionEventDetails"] = reflect.TypeOf((*HostTpmOptionEventDetails)(nil)).Elem() +} + +type HostTpmSoftwareComponentEventDetails struct { + HostTpmEventDetails + + ComponentName string `xml:"componentName"` + VibName string `xml:"vibName"` + VibVersion string `xml:"vibVersion"` + VibVendor string `xml:"vibVendor"` +} + +func init() { + t["HostTpmSoftwareComponentEventDetails"] = reflect.TypeOf((*HostTpmSoftwareComponentEventDetails)(nil)).Elem() +} + +type HostUnresolvedVmfsExtent struct { + DynamicData + + Device HostScsiDiskPartition `xml:"device"` + DevicePath string `xml:"devicePath"` + VmfsUuid string `xml:"vmfsUuid"` + IsHeadExtent bool `xml:"isHeadExtent"` + Ordinal int32 `xml:"ordinal"` + StartBlock int32 `xml:"startBlock"` + EndBlock int32 `xml:"endBlock"` + Reason string `xml:"reason"` +} + +func init() { + t["HostUnresolvedVmfsExtent"] = reflect.TypeOf((*HostUnresolvedVmfsExtent)(nil)).Elem() +} + +type HostUnresolvedVmfsResignatureSpec struct { + DynamicData + + ExtentDevicePath []string `xml:"extentDevicePath"` +} + +func init() { + t["HostUnresolvedVmfsResignatureSpec"] = reflect.TypeOf((*HostUnresolvedVmfsResignatureSpec)(nil)).Elem() +} + +type HostUnresolvedVmfsResolutionResult struct { + DynamicData + + Spec HostUnresolvedVmfsResolutionSpec `xml:"spec"` + Vmfs *HostVmfsVolume `xml:"vmfs,omitempty"` + Fault *LocalizedMethodFault `xml:"fault,omitempty"` +} + +func init() { + t["HostUnresolvedVmfsResolutionResult"] = reflect.TypeOf((*HostUnresolvedVmfsResolutionResult)(nil)).Elem() +} + +type HostUnresolvedVmfsResolutionSpec struct { + DynamicData + + ExtentDevicePath []string `xml:"extentDevicePath"` + UuidResolution string `xml:"uuidResolution"` +} + +func init() { + t["HostUnresolvedVmfsResolutionSpec"] = reflect.TypeOf((*HostUnresolvedVmfsResolutionSpec)(nil)).Elem() +} + +type HostUnresolvedVmfsVolume struct { + DynamicData + + Extent []HostUnresolvedVmfsExtent `xml:"extent"` + VmfsLabel string `xml:"vmfsLabel"` + VmfsUuid string `xml:"vmfsUuid"` + TotalBlocks int32 `xml:"totalBlocks"` + ResolveStatus HostUnresolvedVmfsVolumeResolveStatus `xml:"resolveStatus"` +} + +func init() { + t["HostUnresolvedVmfsVolume"] = reflect.TypeOf((*HostUnresolvedVmfsVolume)(nil)).Elem() +} + +type HostUnresolvedVmfsVolumeResolveStatus struct { + DynamicData + + Resolvable bool `xml:"resolvable"` + IncompleteExtents *bool `xml:"incompleteExtents"` + MultipleCopies *bool `xml:"multipleCopies"` +} + +func init() { + t["HostUnresolvedVmfsVolumeResolveStatus"] = reflect.TypeOf((*HostUnresolvedVmfsVolumeResolveStatus)(nil)).Elem() +} + +type HostUpdateVStorageObjectMetadataRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + Metadata []KeyValue `xml:"metadata,omitempty"` + DeleteKeys []string `xml:"deleteKeys,omitempty"` +} + +func init() { + t["HostUpdateVStorageObjectMetadataRequestType"] = reflect.TypeOf((*HostUpdateVStorageObjectMetadataRequestType)(nil)).Elem() +} + +type HostUpdateVStorageObjectMetadata_Task HostUpdateVStorageObjectMetadataRequestType + +func init() { + t["HostUpdateVStorageObjectMetadata_Task"] = reflect.TypeOf((*HostUpdateVStorageObjectMetadata_Task)(nil)).Elem() +} + +type HostUpdateVStorageObjectMetadata_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type HostUpgradeFailedEvent struct { + HostEvent +} + +func init() { + t["HostUpgradeFailedEvent"] = reflect.TypeOf((*HostUpgradeFailedEvent)(nil)).Elem() +} + +type HostUserWorldSwapNotEnabledEvent struct { + HostEvent +} + +func init() { + t["HostUserWorldSwapNotEnabledEvent"] = reflect.TypeOf((*HostUserWorldSwapNotEnabledEvent)(nil)).Elem() +} + +type HostVFlashManagerVFlashCacheConfigInfo struct { + DynamicData + + VFlashModuleConfigOption []HostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption `xml:"vFlashModuleConfigOption,omitempty"` + DefaultVFlashModule string `xml:"defaultVFlashModule,omitempty"` + SwapCacheReservationInGB int64 `xml:"swapCacheReservationInGB,omitempty"` +} + +func init() { + t["HostVFlashManagerVFlashCacheConfigInfo"] = reflect.TypeOf((*HostVFlashManagerVFlashCacheConfigInfo)(nil)).Elem() +} + +type HostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption struct { + DynamicData + + VFlashModule string `xml:"vFlashModule"` + VFlashModuleVersion string `xml:"vFlashModuleVersion"` + MinSupportedModuleVersion string `xml:"minSupportedModuleVersion"` + CacheConsistencyType ChoiceOption `xml:"cacheConsistencyType"` + CacheMode ChoiceOption `xml:"cacheMode"` + BlockSizeInKBOption LongOption `xml:"blockSizeInKBOption"` + ReservationInMBOption LongOption `xml:"reservationInMBOption"` + MaxDiskSizeInKB int64 `xml:"maxDiskSizeInKB"` +} + +func init() { + t["HostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption"] = reflect.TypeOf((*HostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption)(nil)).Elem() +} + +type HostVFlashManagerVFlashCacheConfigSpec struct { + DynamicData + + DefaultVFlashModule string `xml:"defaultVFlashModule"` + SwapCacheReservationInGB int64 `xml:"swapCacheReservationInGB"` +} + +func init() { + t["HostVFlashManagerVFlashCacheConfigSpec"] = reflect.TypeOf((*HostVFlashManagerVFlashCacheConfigSpec)(nil)).Elem() +} + +type HostVFlashManagerVFlashConfigInfo struct { + DynamicData + + VFlashResourceConfigInfo *HostVFlashManagerVFlashResourceConfigInfo `xml:"vFlashResourceConfigInfo,omitempty"` + VFlashCacheConfigInfo *HostVFlashManagerVFlashCacheConfigInfo `xml:"vFlashCacheConfigInfo,omitempty"` +} + +func init() { + t["HostVFlashManagerVFlashConfigInfo"] = reflect.TypeOf((*HostVFlashManagerVFlashConfigInfo)(nil)).Elem() +} + +type HostVFlashManagerVFlashResourceConfigInfo struct { + DynamicData + + Vffs *HostVffsVolume `xml:"vffs,omitempty"` + Capacity int64 `xml:"capacity"` +} + +func init() { + t["HostVFlashManagerVFlashResourceConfigInfo"] = reflect.TypeOf((*HostVFlashManagerVFlashResourceConfigInfo)(nil)).Elem() +} + +type HostVFlashManagerVFlashResourceConfigSpec struct { + DynamicData + + VffsUuid string `xml:"vffsUuid"` +} + +func init() { + t["HostVFlashManagerVFlashResourceConfigSpec"] = reflect.TypeOf((*HostVFlashManagerVFlashResourceConfigSpec)(nil)).Elem() +} + +type HostVFlashManagerVFlashResourceRunTimeInfo struct { + DynamicData + + Usage int64 `xml:"usage"` + Capacity int64 `xml:"capacity"` + Accessible bool `xml:"accessible"` + CapacityForVmCache int64 `xml:"capacityForVmCache"` + FreeForVmCache int64 `xml:"freeForVmCache"` +} + +func init() { + t["HostVFlashManagerVFlashResourceRunTimeInfo"] = reflect.TypeOf((*HostVFlashManagerVFlashResourceRunTimeInfo)(nil)).Elem() +} + +type HostVFlashResourceConfigurationResult struct { + DynamicData + + DevicePath []string `xml:"devicePath,omitempty"` + Vffs *HostVffsVolume `xml:"vffs,omitempty"` + DiskConfigurationResult []HostDiskConfigurationResult `xml:"diskConfigurationResult,omitempty"` +} + +func init() { + t["HostVFlashResourceConfigurationResult"] = reflect.TypeOf((*HostVFlashResourceConfigurationResult)(nil)).Elem() +} + +type HostVMotionCompatibility struct { + DynamicData + + Host ManagedObjectReference `xml:"host"` + Compatibility []string `xml:"compatibility,omitempty"` +} + +func init() { + t["HostVMotionCompatibility"] = reflect.TypeOf((*HostVMotionCompatibility)(nil)).Elem() +} + +type HostVMotionConfig struct { + DynamicData + + VmotionNicKey string `xml:"vmotionNicKey,omitempty"` + Enabled bool `xml:"enabled"` +} + +func init() { + t["HostVMotionConfig"] = reflect.TypeOf((*HostVMotionConfig)(nil)).Elem() +} + +type HostVMotionInfo struct { + DynamicData + + NetConfig *HostVMotionNetConfig `xml:"netConfig,omitempty"` + IpConfig *HostIpConfig `xml:"ipConfig,omitempty"` +} + +func init() { + t["HostVMotionInfo"] = reflect.TypeOf((*HostVMotionInfo)(nil)).Elem() +} + +type HostVMotionManagerDstInstantCloneResult struct { + DynamicData + + DstVmId int32 `xml:"dstVmId,omitempty"` + StartTime int64 `xml:"startTime,omitempty"` + CptLoadTime int64 `xml:"cptLoadTime,omitempty"` + CptLoadDoneTime int64 `xml:"cptLoadDoneTime,omitempty"` + ReplicateMemDoneTime int64 `xml:"replicateMemDoneTime,omitempty"` + EndTime int64 `xml:"endTime,omitempty"` + CptXferTime int64 `xml:"cptXferTime,omitempty"` + CptCacheUsed int64 `xml:"cptCacheUsed,omitempty"` + DevCptStreamSize int64 `xml:"devCptStreamSize,omitempty"` + DevCptStreamTime int64 `xml:"devCptStreamTime,omitempty"` +} + +func init() { + t["HostVMotionManagerDstInstantCloneResult"] = reflect.TypeOf((*HostVMotionManagerDstInstantCloneResult)(nil)).Elem() +} + +type HostVMotionManagerSrcInstantCloneResult struct { + DynamicData + + StartTime int64 `xml:"startTime,omitempty"` + QuiesceTime int64 `xml:"quiesceTime,omitempty"` + QuiesceDoneTime int64 `xml:"quiesceDoneTime,omitempty"` + ResumeDoneTime int64 `xml:"resumeDoneTime,omitempty"` + EndTime int64 `xml:"endTime,omitempty"` +} + +func init() { + t["HostVMotionManagerSrcInstantCloneResult"] = reflect.TypeOf((*HostVMotionManagerSrcInstantCloneResult)(nil)).Elem() +} + +type HostVMotionNetConfig struct { + DynamicData + + CandidateVnic []HostVirtualNic `xml:"candidateVnic,omitempty"` + SelectedVnic string `xml:"selectedVnic,omitempty"` +} + +func init() { + t["HostVMotionNetConfig"] = reflect.TypeOf((*HostVMotionNetConfig)(nil)).Elem() +} + +type HostVStorageObjectCreateDiskFromSnapshotRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + SnapshotId ID `xml:"snapshotId"` + Name string `xml:"name"` + Profile []BaseVirtualMachineProfileSpec `xml:"profile,omitempty,typeattr"` + Crypto BaseCryptoSpec `xml:"crypto,omitempty,typeattr"` + Path string `xml:"path,omitempty"` +} + +func init() { + t["HostVStorageObjectCreateDiskFromSnapshotRequestType"] = reflect.TypeOf((*HostVStorageObjectCreateDiskFromSnapshotRequestType)(nil)).Elem() +} + +type HostVStorageObjectCreateDiskFromSnapshot_Task HostVStorageObjectCreateDiskFromSnapshotRequestType + +func init() { + t["HostVStorageObjectCreateDiskFromSnapshot_Task"] = reflect.TypeOf((*HostVStorageObjectCreateDiskFromSnapshot_Task)(nil)).Elem() +} + +type HostVStorageObjectCreateDiskFromSnapshot_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type HostVStorageObjectCreateSnapshotRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + Description string `xml:"description"` +} + +func init() { + t["HostVStorageObjectCreateSnapshotRequestType"] = reflect.TypeOf((*HostVStorageObjectCreateSnapshotRequestType)(nil)).Elem() +} + +type HostVStorageObjectCreateSnapshot_Task HostVStorageObjectCreateSnapshotRequestType + +func init() { + t["HostVStorageObjectCreateSnapshot_Task"] = reflect.TypeOf((*HostVStorageObjectCreateSnapshot_Task)(nil)).Elem() +} + +type HostVStorageObjectCreateSnapshot_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type HostVStorageObjectDeleteSnapshotRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + SnapshotId ID `xml:"snapshotId"` +} + +func init() { + t["HostVStorageObjectDeleteSnapshotRequestType"] = reflect.TypeOf((*HostVStorageObjectDeleteSnapshotRequestType)(nil)).Elem() +} + +type HostVStorageObjectDeleteSnapshot_Task HostVStorageObjectDeleteSnapshotRequestType + +func init() { + t["HostVStorageObjectDeleteSnapshot_Task"] = reflect.TypeOf((*HostVStorageObjectDeleteSnapshot_Task)(nil)).Elem() +} + +type HostVStorageObjectDeleteSnapshot_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type HostVStorageObjectRetrieveSnapshotInfo HostVStorageObjectRetrieveSnapshotInfoRequestType + +func init() { + t["HostVStorageObjectRetrieveSnapshotInfo"] = reflect.TypeOf((*HostVStorageObjectRetrieveSnapshotInfo)(nil)).Elem() +} + +type HostVStorageObjectRetrieveSnapshotInfoRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["HostVStorageObjectRetrieveSnapshotInfoRequestType"] = reflect.TypeOf((*HostVStorageObjectRetrieveSnapshotInfoRequestType)(nil)).Elem() +} + +type HostVStorageObjectRetrieveSnapshotInfoResponse struct { + Returnval VStorageObjectSnapshotInfo `xml:"returnval"` +} + +type HostVStorageObjectRevertRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + SnapshotId ID `xml:"snapshotId"` +} + +func init() { + t["HostVStorageObjectRevertRequestType"] = reflect.TypeOf((*HostVStorageObjectRevertRequestType)(nil)).Elem() +} + +type HostVStorageObjectRevert_Task HostVStorageObjectRevertRequestType + +func init() { + t["HostVStorageObjectRevert_Task"] = reflect.TypeOf((*HostVStorageObjectRevert_Task)(nil)).Elem() +} + +type HostVStorageObjectRevert_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type HostVfatVolume struct { + HostFileSystemVolume +} + +func init() { + t["HostVfatVolume"] = reflect.TypeOf((*HostVfatVolume)(nil)).Elem() +} + +type HostVffsSpec struct { + DynamicData + + DevicePath string `xml:"devicePath"` + Partition *HostDiskPartitionSpec `xml:"partition,omitempty"` + MajorVersion int32 `xml:"majorVersion"` + VolumeName string `xml:"volumeName"` +} + +func init() { + t["HostVffsSpec"] = reflect.TypeOf((*HostVffsSpec)(nil)).Elem() +} + +type HostVffsVolume struct { + HostFileSystemVolume + + MajorVersion int32 `xml:"majorVersion"` + Version string `xml:"version"` + Uuid string `xml:"uuid"` + Extent []HostScsiDiskPartition `xml:"extent"` +} + +func init() { + t["HostVffsVolume"] = reflect.TypeOf((*HostVffsVolume)(nil)).Elem() +} + +type HostVirtualNic struct { + DynamicData + + Device string `xml:"device"` + Key string `xml:"key"` + Portgroup string `xml:"portgroup"` + Spec HostVirtualNicSpec `xml:"spec"` + Port string `xml:"port,omitempty"` +} + +func init() { + t["HostVirtualNic"] = reflect.TypeOf((*HostVirtualNic)(nil)).Elem() +} + +type HostVirtualNicConfig struct { + DynamicData + + ChangeOperation string `xml:"changeOperation,omitempty"` + Device string `xml:"device,omitempty"` + Portgroup string `xml:"portgroup"` + Spec *HostVirtualNicSpec `xml:"spec,omitempty"` +} + +func init() { + t["HostVirtualNicConfig"] = reflect.TypeOf((*HostVirtualNicConfig)(nil)).Elem() +} + +type HostVirtualNicConnection struct { + DynamicData + + Portgroup string `xml:"portgroup,omitempty"` + DvPort *DistributedVirtualSwitchPortConnection `xml:"dvPort,omitempty"` + OpNetwork *HostVirtualNicOpaqueNetworkSpec `xml:"opNetwork,omitempty"` +} + +func init() { + t["HostVirtualNicConnection"] = reflect.TypeOf((*HostVirtualNicConnection)(nil)).Elem() +} + +type HostVirtualNicIpRouteSpec struct { + DynamicData + + IpRouteConfig BaseHostIpRouteConfig `xml:"ipRouteConfig,omitempty,typeattr"` +} + +func init() { + t["HostVirtualNicIpRouteSpec"] = reflect.TypeOf((*HostVirtualNicIpRouteSpec)(nil)).Elem() +} + +type HostVirtualNicManagerInfo struct { + DynamicData + + NetConfig []VirtualNicManagerNetConfig `xml:"netConfig,omitempty"` +} + +func init() { + t["HostVirtualNicManagerInfo"] = reflect.TypeOf((*HostVirtualNicManagerInfo)(nil)).Elem() +} + +type HostVirtualNicManagerNicTypeSelection struct { + DynamicData + + Vnic HostVirtualNicConnection `xml:"vnic"` + NicType []string `xml:"nicType,omitempty"` +} + +func init() { + t["HostVirtualNicManagerNicTypeSelection"] = reflect.TypeOf((*HostVirtualNicManagerNicTypeSelection)(nil)).Elem() +} + +type HostVirtualNicOpaqueNetworkSpec struct { + DynamicData + + OpaqueNetworkId string `xml:"opaqueNetworkId"` + OpaqueNetworkType string `xml:"opaqueNetworkType"` +} + +func init() { + t["HostVirtualNicOpaqueNetworkSpec"] = reflect.TypeOf((*HostVirtualNicOpaqueNetworkSpec)(nil)).Elem() +} + +type HostVirtualNicSpec struct { + DynamicData + + Ip *HostIpConfig `xml:"ip,omitempty"` + Mac string `xml:"mac,omitempty"` + DistributedVirtualPort *DistributedVirtualSwitchPortConnection `xml:"distributedVirtualPort,omitempty"` + Portgroup string `xml:"portgroup,omitempty"` + Mtu int32 `xml:"mtu,omitempty"` + TsoEnabled *bool `xml:"tsoEnabled"` + NetStackInstanceKey string `xml:"netStackInstanceKey,omitempty"` + OpaqueNetwork *HostVirtualNicOpaqueNetworkSpec `xml:"opaqueNetwork,omitempty"` + ExternalId string `xml:"externalId,omitempty"` + PinnedPnic string `xml:"pinnedPnic,omitempty"` + IpRouteSpec *HostVirtualNicIpRouteSpec `xml:"ipRouteSpec,omitempty"` + SystemOwned *bool `xml:"systemOwned"` +} + +func init() { + t["HostVirtualNicSpec"] = reflect.TypeOf((*HostVirtualNicSpec)(nil)).Elem() +} + +type HostVirtualSwitch struct { + DynamicData + + Name string `xml:"name"` + Key string `xml:"key"` + NumPorts int32 `xml:"numPorts"` + NumPortsAvailable int32 `xml:"numPortsAvailable"` + Mtu int32 `xml:"mtu,omitempty"` + Portgroup []string `xml:"portgroup,omitempty"` + Pnic []string `xml:"pnic,omitempty"` + Spec HostVirtualSwitchSpec `xml:"spec"` +} + +func init() { + t["HostVirtualSwitch"] = reflect.TypeOf((*HostVirtualSwitch)(nil)).Elem() +} + +type HostVirtualSwitchAutoBridge struct { + HostVirtualSwitchBridge + + ExcludedNicDevice []string `xml:"excludedNicDevice,omitempty"` +} + +func init() { + t["HostVirtualSwitchAutoBridge"] = reflect.TypeOf((*HostVirtualSwitchAutoBridge)(nil)).Elem() +} + +type HostVirtualSwitchBeaconConfig struct { + DynamicData + + Interval int32 `xml:"interval"` +} + +func init() { + t["HostVirtualSwitchBeaconConfig"] = reflect.TypeOf((*HostVirtualSwitchBeaconConfig)(nil)).Elem() +} + +type HostVirtualSwitchBondBridge struct { + HostVirtualSwitchBridge + + NicDevice []string `xml:"nicDevice"` + Beacon *HostVirtualSwitchBeaconConfig `xml:"beacon,omitempty"` + LinkDiscoveryProtocolConfig *LinkDiscoveryProtocolConfig `xml:"linkDiscoveryProtocolConfig,omitempty"` +} + +func init() { + t["HostVirtualSwitchBondBridge"] = reflect.TypeOf((*HostVirtualSwitchBondBridge)(nil)).Elem() +} + +type HostVirtualSwitchBridge struct { + DynamicData +} + +func init() { + t["HostVirtualSwitchBridge"] = reflect.TypeOf((*HostVirtualSwitchBridge)(nil)).Elem() +} + +type HostVirtualSwitchConfig struct { + DynamicData + + ChangeOperation string `xml:"changeOperation,omitempty"` + Name string `xml:"name"` + Spec *HostVirtualSwitchSpec `xml:"spec,omitempty"` +} + +func init() { + t["HostVirtualSwitchConfig"] = reflect.TypeOf((*HostVirtualSwitchConfig)(nil)).Elem() +} + +type HostVirtualSwitchSimpleBridge struct { + HostVirtualSwitchBridge + + NicDevice string `xml:"nicDevice"` +} + +func init() { + t["HostVirtualSwitchSimpleBridge"] = reflect.TypeOf((*HostVirtualSwitchSimpleBridge)(nil)).Elem() +} + +type HostVirtualSwitchSpec struct { + DynamicData + + NumPorts int32 `xml:"numPorts"` + Bridge BaseHostVirtualSwitchBridge `xml:"bridge,omitempty,typeattr"` + Policy *HostNetworkPolicy `xml:"policy,omitempty"` + Mtu int32 `xml:"mtu,omitempty"` +} + +func init() { + t["HostVirtualSwitchSpec"] = reflect.TypeOf((*HostVirtualSwitchSpec)(nil)).Elem() +} + +type HostVmciAccessManagerAccessSpec struct { + DynamicData + + Vm ManagedObjectReference `xml:"vm"` + Services []string `xml:"services,omitempty"` + Mode string `xml:"mode"` +} + +func init() { + t["HostVmciAccessManagerAccessSpec"] = reflect.TypeOf((*HostVmciAccessManagerAccessSpec)(nil)).Elem() +} + +type HostVmfsRescanResult struct { + DynamicData + + Host ManagedObjectReference `xml:"host"` + Fault *LocalizedMethodFault `xml:"fault,omitempty"` +} + +func init() { + t["HostVmfsRescanResult"] = reflect.TypeOf((*HostVmfsRescanResult)(nil)).Elem() +} + +type HostVmfsSpec struct { + DynamicData + + Extent HostScsiDiskPartition `xml:"extent"` + BlockSizeMb int32 `xml:"blockSizeMb,omitempty"` + MajorVersion int32 `xml:"majorVersion"` + VolumeName string `xml:"volumeName"` + BlockSize int32 `xml:"blockSize,omitempty"` + UnmapGranularity int32 `xml:"unmapGranularity,omitempty"` + UnmapPriority string `xml:"unmapPriority,omitempty"` + UnmapBandwidthSpec *VmfsUnmapBandwidthSpec `xml:"unmapBandwidthSpec,omitempty"` +} + +func init() { + t["HostVmfsSpec"] = reflect.TypeOf((*HostVmfsSpec)(nil)).Elem() +} + +type HostVmfsVolume struct { + HostFileSystemVolume + + BlockSizeMb int32 `xml:"blockSizeMb"` + BlockSize int32 `xml:"blockSize,omitempty"` + UnmapGranularity int32 `xml:"unmapGranularity,omitempty"` + UnmapPriority string `xml:"unmapPriority,omitempty"` + UnmapBandwidthSpec *VmfsUnmapBandwidthSpec `xml:"unmapBandwidthSpec,omitempty"` + MaxBlocks int32 `xml:"maxBlocks"` + MajorVersion int32 `xml:"majorVersion"` + Version string `xml:"version"` + Uuid string `xml:"uuid"` + Extent []HostScsiDiskPartition `xml:"extent"` + VmfsUpgradable bool `xml:"vmfsUpgradable"` + ForceMountedInfo *HostForceMountedInfo `xml:"forceMountedInfo,omitempty"` + Ssd *bool `xml:"ssd"` + Local *bool `xml:"local"` + ScsiDiskType string `xml:"scsiDiskType,omitempty"` +} + +func init() { + t["HostVmfsVolume"] = reflect.TypeOf((*HostVmfsVolume)(nil)).Elem() +} + +type HostVnicConnectedToCustomizedDVPortEvent struct { + HostEvent + + Vnic VnicPortArgument `xml:"vnic"` + PrevPortKey string `xml:"prevPortKey,omitempty"` +} + +func init() { + t["HostVnicConnectedToCustomizedDVPortEvent"] = reflect.TypeOf((*HostVnicConnectedToCustomizedDVPortEvent)(nil)).Elem() +} + +type HostVsanInternalSystemCmmdsQuery struct { + DynamicData + + Type string `xml:"type,omitempty"` + Uuid string `xml:"uuid,omitempty"` + Owner string `xml:"owner,omitempty"` +} + +func init() { + t["HostVsanInternalSystemCmmdsQuery"] = reflect.TypeOf((*HostVsanInternalSystemCmmdsQuery)(nil)).Elem() +} + +type HostVsanInternalSystemDeleteVsanObjectsResult struct { + DynamicData + + Uuid string `xml:"uuid"` + Success bool `xml:"success"` + FailureReason []LocalizableMessage `xml:"failureReason,omitempty"` +} + +func init() { + t["HostVsanInternalSystemDeleteVsanObjectsResult"] = reflect.TypeOf((*HostVsanInternalSystemDeleteVsanObjectsResult)(nil)).Elem() +} + +type HostVsanInternalSystemVsanObjectOperationResult struct { + DynamicData + + Uuid string `xml:"uuid"` + FailureReason []LocalizableMessage `xml:"failureReason,omitempty"` +} + +func init() { + t["HostVsanInternalSystemVsanObjectOperationResult"] = reflect.TypeOf((*HostVsanInternalSystemVsanObjectOperationResult)(nil)).Elem() +} + +type HostVsanInternalSystemVsanPhysicalDiskDiagnosticsResult struct { + DynamicData + + DiskUuid string `xml:"diskUuid"` + Success bool `xml:"success"` + FailureReason string `xml:"failureReason,omitempty"` +} + +func init() { + t["HostVsanInternalSystemVsanPhysicalDiskDiagnosticsResult"] = reflect.TypeOf((*HostVsanInternalSystemVsanPhysicalDiskDiagnosticsResult)(nil)).Elem() +} + +type HostVvolVolume struct { + HostFileSystemVolume + + ScId string `xml:"scId"` + HostPE []VVolHostPE `xml:"hostPE,omitempty"` + VasaProviderInfo []VimVasaProviderInfo `xml:"vasaProviderInfo,omitempty"` + StorageArray []VASAStorageArray `xml:"storageArray,omitempty"` +} + +func init() { + t["HostVvolVolume"] = reflect.TypeOf((*HostVvolVolume)(nil)).Elem() +} + +type HostVvolVolumeSpecification struct { + DynamicData + + MaxSizeInMB int64 `xml:"maxSizeInMB"` + VolumeName string `xml:"volumeName"` + VasaProviderInfo []VimVasaProviderInfo `xml:"vasaProviderInfo,omitempty"` + StorageArray []VASAStorageArray `xml:"storageArray,omitempty"` + Uuid string `xml:"uuid"` +} + +func init() { + t["HostVvolVolumeSpecification"] = reflect.TypeOf((*HostVvolVolumeSpecification)(nil)).Elem() +} + +type HostWwnChangedEvent struct { + HostEvent + + OldNodeWwns []int64 `xml:"oldNodeWwns,omitempty"` + OldPortWwns []int64 `xml:"oldPortWwns,omitempty"` + NewNodeWwns []int64 `xml:"newNodeWwns,omitempty"` + NewPortWwns []int64 `xml:"newPortWwns,omitempty"` +} + +func init() { + t["HostWwnChangedEvent"] = reflect.TypeOf((*HostWwnChangedEvent)(nil)).Elem() +} + +type HostWwnConflictEvent struct { + HostEvent + + ConflictedVms []VmEventArgument `xml:"conflictedVms,omitempty"` + ConflictedHosts []HostEventArgument `xml:"conflictedHosts,omitempty"` + Wwn int64 `xml:"wwn"` +} + +func init() { + t["HostWwnConflictEvent"] = reflect.TypeOf((*HostWwnConflictEvent)(nil)).Elem() +} + +type HotSnapshotMoveNotSupported struct { + SnapshotCopyNotSupported +} + +func init() { + t["HotSnapshotMoveNotSupported"] = reflect.TypeOf((*HotSnapshotMoveNotSupported)(nil)).Elem() +} + +type HotSnapshotMoveNotSupportedFault HotSnapshotMoveNotSupported + +func init() { + t["HotSnapshotMoveNotSupportedFault"] = reflect.TypeOf((*HotSnapshotMoveNotSupportedFault)(nil)).Elem() +} + +type HourlyTaskScheduler struct { + RecurrentTaskScheduler + + Minute int32 `xml:"minute"` +} + +func init() { + t["HourlyTaskScheduler"] = reflect.TypeOf((*HourlyTaskScheduler)(nil)).Elem() +} + +type HttpFault struct { + VimFault + + StatusCode int32 `xml:"statusCode"` + StatusMessage string `xml:"statusMessage"` +} + +func init() { + t["HttpFault"] = reflect.TypeOf((*HttpFault)(nil)).Elem() +} + +type HttpFaultFault HttpFault + +func init() { + t["HttpFaultFault"] = reflect.TypeOf((*HttpFaultFault)(nil)).Elem() +} + +type HttpNfcLeaseAbort HttpNfcLeaseAbortRequestType + +func init() { + t["HttpNfcLeaseAbort"] = reflect.TypeOf((*HttpNfcLeaseAbort)(nil)).Elem() +} + +type HttpNfcLeaseAbortRequestType struct { + This ManagedObjectReference `xml:"_this"` + Fault *LocalizedMethodFault `xml:"fault,omitempty"` +} + +func init() { + t["HttpNfcLeaseAbortRequestType"] = reflect.TypeOf((*HttpNfcLeaseAbortRequestType)(nil)).Elem() +} + +type HttpNfcLeaseAbortResponse struct { +} + +type HttpNfcLeaseCapabilities struct { + DynamicData + + PullModeSupported bool `xml:"pullModeSupported"` + CorsSupported bool `xml:"corsSupported"` +} + +func init() { + t["HttpNfcLeaseCapabilities"] = reflect.TypeOf((*HttpNfcLeaseCapabilities)(nil)).Elem() +} + +type HttpNfcLeaseComplete HttpNfcLeaseCompleteRequestType + +func init() { + t["HttpNfcLeaseComplete"] = reflect.TypeOf((*HttpNfcLeaseComplete)(nil)).Elem() +} + +type HttpNfcLeaseCompleteRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["HttpNfcLeaseCompleteRequestType"] = reflect.TypeOf((*HttpNfcLeaseCompleteRequestType)(nil)).Elem() +} + +type HttpNfcLeaseCompleteResponse struct { +} + +type HttpNfcLeaseDatastoreLeaseInfo struct { + DynamicData + + DatastoreKey string `xml:"datastoreKey"` + Hosts []HttpNfcLeaseHostInfo `xml:"hosts"` +} + +func init() { + t["HttpNfcLeaseDatastoreLeaseInfo"] = reflect.TypeOf((*HttpNfcLeaseDatastoreLeaseInfo)(nil)).Elem() +} + +type HttpNfcLeaseDeviceUrl struct { + DynamicData + + Key string `xml:"key"` + ImportKey string `xml:"importKey"` + Url string `xml:"url"` + SslThumbprint string `xml:"sslThumbprint"` + Disk *bool `xml:"disk"` + TargetId string `xml:"targetId,omitempty"` + DatastoreKey string `xml:"datastoreKey,omitempty"` + FileSize int64 `xml:"fileSize,omitempty"` +} + +func init() { + t["HttpNfcLeaseDeviceUrl"] = reflect.TypeOf((*HttpNfcLeaseDeviceUrl)(nil)).Elem() +} + +type HttpNfcLeaseGetManifest HttpNfcLeaseGetManifestRequestType + +func init() { + t["HttpNfcLeaseGetManifest"] = reflect.TypeOf((*HttpNfcLeaseGetManifest)(nil)).Elem() +} + +type HttpNfcLeaseGetManifestRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["HttpNfcLeaseGetManifestRequestType"] = reflect.TypeOf((*HttpNfcLeaseGetManifestRequestType)(nil)).Elem() +} + +type HttpNfcLeaseGetManifestResponse struct { + Returnval []HttpNfcLeaseManifestEntry `xml:"returnval,omitempty"` +} + +type HttpNfcLeaseHostInfo struct { + DynamicData + + Url string `xml:"url"` + SslThumbprint string `xml:"sslThumbprint"` +} + +func init() { + t["HttpNfcLeaseHostInfo"] = reflect.TypeOf((*HttpNfcLeaseHostInfo)(nil)).Elem() +} + +type HttpNfcLeaseInfo struct { + DynamicData + + Lease ManagedObjectReference `xml:"lease"` + Entity ManagedObjectReference `xml:"entity"` + DeviceUrl []HttpNfcLeaseDeviceUrl `xml:"deviceUrl,omitempty"` + TotalDiskCapacityInKB int64 `xml:"totalDiskCapacityInKB"` + LeaseTimeout int32 `xml:"leaseTimeout"` + HostMap []HttpNfcLeaseDatastoreLeaseInfo `xml:"hostMap,omitempty"` +} + +func init() { + t["HttpNfcLeaseInfo"] = reflect.TypeOf((*HttpNfcLeaseInfo)(nil)).Elem() +} + +type HttpNfcLeaseManifestEntry struct { + DynamicData + + Key string `xml:"key"` + Sha1 string `xml:"sha1"` + Checksum string `xml:"checksum,omitempty"` + ChecksumType string `xml:"checksumType,omitempty"` + Size int64 `xml:"size"` + Disk bool `xml:"disk"` + Capacity int64 `xml:"capacity,omitempty"` + PopulatedSize int64 `xml:"populatedSize,omitempty"` +} + +func init() { + t["HttpNfcLeaseManifestEntry"] = reflect.TypeOf((*HttpNfcLeaseManifestEntry)(nil)).Elem() +} + +type HttpNfcLeaseProgress HttpNfcLeaseProgressRequestType + +func init() { + t["HttpNfcLeaseProgress"] = reflect.TypeOf((*HttpNfcLeaseProgress)(nil)).Elem() +} + +type HttpNfcLeaseProgressRequestType struct { + This ManagedObjectReference `xml:"_this"` + Percent int32 `xml:"percent"` +} + +func init() { + t["HttpNfcLeaseProgressRequestType"] = reflect.TypeOf((*HttpNfcLeaseProgressRequestType)(nil)).Elem() +} + +type HttpNfcLeaseProgressResponse struct { +} + +type HttpNfcLeasePullFromUrlsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Files []HttpNfcLeaseSourceFile `xml:"files,omitempty"` +} + +func init() { + t["HttpNfcLeasePullFromUrlsRequestType"] = reflect.TypeOf((*HttpNfcLeasePullFromUrlsRequestType)(nil)).Elem() +} + +type HttpNfcLeasePullFromUrls_Task HttpNfcLeasePullFromUrlsRequestType + +func init() { + t["HttpNfcLeasePullFromUrls_Task"] = reflect.TypeOf((*HttpNfcLeasePullFromUrls_Task)(nil)).Elem() +} + +type HttpNfcLeasePullFromUrls_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type HttpNfcLeaseSetManifestChecksumType HttpNfcLeaseSetManifestChecksumTypeRequestType + +func init() { + t["HttpNfcLeaseSetManifestChecksumType"] = reflect.TypeOf((*HttpNfcLeaseSetManifestChecksumType)(nil)).Elem() +} + +type HttpNfcLeaseSetManifestChecksumTypeRequestType struct { + This ManagedObjectReference `xml:"_this"` + DeviceUrlsToChecksumTypes []KeyValue `xml:"deviceUrlsToChecksumTypes,omitempty"` +} + +func init() { + t["HttpNfcLeaseSetManifestChecksumTypeRequestType"] = reflect.TypeOf((*HttpNfcLeaseSetManifestChecksumTypeRequestType)(nil)).Elem() +} + +type HttpNfcLeaseSetManifestChecksumTypeResponse struct { +} + +type HttpNfcLeaseSourceFile struct { + DynamicData + + TargetDeviceId string `xml:"targetDeviceId"` + Url string `xml:"url"` + MemberName string `xml:"memberName,omitempty"` + Create bool `xml:"create"` + SslThumbprint string `xml:"sslThumbprint,omitempty"` + HttpHeaders []KeyValue `xml:"httpHeaders,omitempty"` + Size int64 `xml:"size,omitempty"` +} + +func init() { + t["HttpNfcLeaseSourceFile"] = reflect.TypeOf((*HttpNfcLeaseSourceFile)(nil)).Elem() +} + +type ID struct { + DynamicData + + Id string `xml:"id"` +} + +func init() { + t["ID"] = reflect.TypeOf((*ID)(nil)).Elem() +} + +type IDEDiskNotSupported struct { + DiskNotSupported +} + +func init() { + t["IDEDiskNotSupported"] = reflect.TypeOf((*IDEDiskNotSupported)(nil)).Elem() +} + +type IDEDiskNotSupportedFault IDEDiskNotSupported + +func init() { + t["IDEDiskNotSupportedFault"] = reflect.TypeOf((*IDEDiskNotSupportedFault)(nil)).Elem() +} + +type IORMNotSupportedHostOnDatastore struct { + VimFault + + Datastore ManagedObjectReference `xml:"datastore"` + DatastoreName string `xml:"datastoreName"` + Host []ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["IORMNotSupportedHostOnDatastore"] = reflect.TypeOf((*IORMNotSupportedHostOnDatastore)(nil)).Elem() +} + +type IORMNotSupportedHostOnDatastoreFault IORMNotSupportedHostOnDatastore + +func init() { + t["IORMNotSupportedHostOnDatastoreFault"] = reflect.TypeOf((*IORMNotSupportedHostOnDatastoreFault)(nil)).Elem() +} + +type IScsiBootFailureEvent struct { + HostEvent +} + +func init() { + t["IScsiBootFailureEvent"] = reflect.TypeOf((*IScsiBootFailureEvent)(nil)).Elem() +} + +type ImpersonateUser ImpersonateUserRequestType + +func init() { + t["ImpersonateUser"] = reflect.TypeOf((*ImpersonateUser)(nil)).Elem() +} + +type ImpersonateUserRequestType struct { + This ManagedObjectReference `xml:"_this"` + UserName string `xml:"userName"` + Locale string `xml:"locale,omitempty"` +} + +func init() { + t["ImpersonateUserRequestType"] = reflect.TypeOf((*ImpersonateUserRequestType)(nil)).Elem() +} + +type ImpersonateUserResponse struct { + Returnval UserSession `xml:"returnval"` +} + +type ImportCertificateForCAMRequestType struct { + This ManagedObjectReference `xml:"_this"` + CertPath string `xml:"certPath"` + CamServer string `xml:"camServer"` +} + +func init() { + t["ImportCertificateForCAMRequestType"] = reflect.TypeOf((*ImportCertificateForCAMRequestType)(nil)).Elem() +} + +type ImportCertificateForCAM_Task ImportCertificateForCAMRequestType + +func init() { + t["ImportCertificateForCAM_Task"] = reflect.TypeOf((*ImportCertificateForCAM_Task)(nil)).Elem() +} + +type ImportCertificateForCAM_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ImportHostAddFailure struct { + DvsFault + + HostIp []string `xml:"hostIp"` +} + +func init() { + t["ImportHostAddFailure"] = reflect.TypeOf((*ImportHostAddFailure)(nil)).Elem() +} + +type ImportHostAddFailureFault ImportHostAddFailure + +func init() { + t["ImportHostAddFailureFault"] = reflect.TypeOf((*ImportHostAddFailureFault)(nil)).Elem() +} + +type ImportOperationBulkFault struct { + DvsFault + + ImportFaults []ImportOperationBulkFaultFaultOnImport `xml:"importFaults"` +} + +func init() { + t["ImportOperationBulkFault"] = reflect.TypeOf((*ImportOperationBulkFault)(nil)).Elem() +} + +type ImportOperationBulkFaultFault ImportOperationBulkFault + +func init() { + t["ImportOperationBulkFaultFault"] = reflect.TypeOf((*ImportOperationBulkFaultFault)(nil)).Elem() +} + +type ImportOperationBulkFaultFaultOnImport struct { + DynamicData + + EntityType string `xml:"entityType,omitempty"` + Key string `xml:"key,omitempty"` + Fault LocalizedMethodFault `xml:"fault"` +} + +func init() { + t["ImportOperationBulkFaultFaultOnImport"] = reflect.TypeOf((*ImportOperationBulkFaultFaultOnImport)(nil)).Elem() +} + +type ImportSpec struct { + DynamicData + + EntityConfig *VAppEntityConfigInfo `xml:"entityConfig,omitempty"` + InstantiationOst *OvfConsumerOstNode `xml:"instantiationOst,omitempty"` +} + +func init() { + t["ImportSpec"] = reflect.TypeOf((*ImportSpec)(nil)).Elem() +} + +type ImportUnmanagedSnapshot ImportUnmanagedSnapshotRequestType + +func init() { + t["ImportUnmanagedSnapshot"] = reflect.TypeOf((*ImportUnmanagedSnapshot)(nil)).Elem() +} + +type ImportUnmanagedSnapshotRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vdisk string `xml:"vdisk"` + Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` + VvolId string `xml:"vvolId"` +} + +func init() { + t["ImportUnmanagedSnapshotRequestType"] = reflect.TypeOf((*ImportUnmanagedSnapshotRequestType)(nil)).Elem() +} + +type ImportUnmanagedSnapshotResponse struct { +} + +type ImportVApp ImportVAppRequestType + +func init() { + t["ImportVApp"] = reflect.TypeOf((*ImportVApp)(nil)).Elem() +} + +type ImportVAppRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec BaseImportSpec `xml:"spec,typeattr"` + Folder *ManagedObjectReference `xml:"folder,omitempty"` + Host *ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["ImportVAppRequestType"] = reflect.TypeOf((*ImportVAppRequestType)(nil)).Elem() +} + +type ImportVAppResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type InUseFeatureManipulationDisallowed struct { + NotEnoughLicenses +} + +func init() { + t["InUseFeatureManipulationDisallowed"] = reflect.TypeOf((*InUseFeatureManipulationDisallowed)(nil)).Elem() +} + +type InUseFeatureManipulationDisallowedFault InUseFeatureManipulationDisallowed + +func init() { + t["InUseFeatureManipulationDisallowedFault"] = reflect.TypeOf((*InUseFeatureManipulationDisallowedFault)(nil)).Elem() +} + +type InaccessibleDatastore struct { + InvalidDatastore + + Detail string `xml:"detail,omitempty"` +} + +func init() { + t["InaccessibleDatastore"] = reflect.TypeOf((*InaccessibleDatastore)(nil)).Elem() +} + +type InaccessibleDatastoreFault BaseInaccessibleDatastore + +func init() { + t["InaccessibleDatastoreFault"] = reflect.TypeOf((*InaccessibleDatastoreFault)(nil)).Elem() +} + +type InaccessibleFTMetadataDatastore struct { + InaccessibleDatastore +} + +func init() { + t["InaccessibleFTMetadataDatastore"] = reflect.TypeOf((*InaccessibleFTMetadataDatastore)(nil)).Elem() +} + +type InaccessibleFTMetadataDatastoreFault InaccessibleFTMetadataDatastore + +func init() { + t["InaccessibleFTMetadataDatastoreFault"] = reflect.TypeOf((*InaccessibleFTMetadataDatastoreFault)(nil)).Elem() +} + +type InaccessibleVFlashSource struct { + VimFault + + HostName string `xml:"hostName"` +} + +func init() { + t["InaccessibleVFlashSource"] = reflect.TypeOf((*InaccessibleVFlashSource)(nil)).Elem() +} + +type InaccessibleVFlashSourceFault InaccessibleVFlashSource + +func init() { + t["InaccessibleVFlashSourceFault"] = reflect.TypeOf((*InaccessibleVFlashSourceFault)(nil)).Elem() +} + +type IncompatibleDefaultDevice struct { + MigrationFault + + Device string `xml:"device"` +} + +func init() { + t["IncompatibleDefaultDevice"] = reflect.TypeOf((*IncompatibleDefaultDevice)(nil)).Elem() +} + +type IncompatibleDefaultDeviceFault IncompatibleDefaultDevice + +func init() { + t["IncompatibleDefaultDeviceFault"] = reflect.TypeOf((*IncompatibleDefaultDeviceFault)(nil)).Elem() +} + +type IncompatibleHostForFtSecondary struct { + VmFaultToleranceIssue + + Host ManagedObjectReference `xml:"host"` + Error []LocalizedMethodFault `xml:"error,omitempty"` +} + +func init() { + t["IncompatibleHostForFtSecondary"] = reflect.TypeOf((*IncompatibleHostForFtSecondary)(nil)).Elem() +} + +type IncompatibleHostForFtSecondaryFault IncompatibleHostForFtSecondary + +func init() { + t["IncompatibleHostForFtSecondaryFault"] = reflect.TypeOf((*IncompatibleHostForFtSecondaryFault)(nil)).Elem() +} + +type IncompatibleHostForVmReplication struct { + ReplicationFault + + VmName string `xml:"vmName"` + HostName string `xml:"hostName"` + Reason string `xml:"reason"` +} + +func init() { + t["IncompatibleHostForVmReplication"] = reflect.TypeOf((*IncompatibleHostForVmReplication)(nil)).Elem() +} + +type IncompatibleHostForVmReplicationFault IncompatibleHostForVmReplication + +func init() { + t["IncompatibleHostForVmReplicationFault"] = reflect.TypeOf((*IncompatibleHostForVmReplicationFault)(nil)).Elem() +} + +type IncompatibleSetting struct { + InvalidArgument + + ConflictingProperty string `xml:"conflictingProperty"` +} + +func init() { + t["IncompatibleSetting"] = reflect.TypeOf((*IncompatibleSetting)(nil)).Elem() +} + +type IncompatibleSettingFault IncompatibleSetting + +func init() { + t["IncompatibleSettingFault"] = reflect.TypeOf((*IncompatibleSettingFault)(nil)).Elem() +} + +type IncorrectFileType struct { + FileFault +} + +func init() { + t["IncorrectFileType"] = reflect.TypeOf((*IncorrectFileType)(nil)).Elem() +} + +type IncorrectFileTypeFault IncorrectFileType + +func init() { + t["IncorrectFileTypeFault"] = reflect.TypeOf((*IncorrectFileTypeFault)(nil)).Elem() +} + +type IncorrectHostInformation struct { + NotEnoughLicenses +} + +func init() { + t["IncorrectHostInformation"] = reflect.TypeOf((*IncorrectHostInformation)(nil)).Elem() +} + +type IncorrectHostInformationEvent struct { + LicenseEvent +} + +func init() { + t["IncorrectHostInformationEvent"] = reflect.TypeOf((*IncorrectHostInformationEvent)(nil)).Elem() +} + +type IncorrectHostInformationFault IncorrectHostInformation + +func init() { + t["IncorrectHostInformationFault"] = reflect.TypeOf((*IncorrectHostInformationFault)(nil)).Elem() +} + +type IndependentDiskVMotionNotSupported struct { + MigrationFeatureNotSupported +} + +func init() { + t["IndependentDiskVMotionNotSupported"] = reflect.TypeOf((*IndependentDiskVMotionNotSupported)(nil)).Elem() +} + +type IndependentDiskVMotionNotSupportedFault IndependentDiskVMotionNotSupported + +func init() { + t["IndependentDiskVMotionNotSupportedFault"] = reflect.TypeOf((*IndependentDiskVMotionNotSupportedFault)(nil)).Elem() +} + +type InflateDiskRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["InflateDiskRequestType"] = reflect.TypeOf((*InflateDiskRequestType)(nil)).Elem() +} + +type InflateDisk_Task InflateDiskRequestType + +func init() { + t["InflateDisk_Task"] = reflect.TypeOf((*InflateDisk_Task)(nil)).Elem() +} + +type InflateDisk_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type InflateVirtualDiskRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` +} + +func init() { + t["InflateVirtualDiskRequestType"] = reflect.TypeOf((*InflateVirtualDiskRequestType)(nil)).Elem() +} + +type InflateVirtualDisk_Task InflateVirtualDiskRequestType + +func init() { + t["InflateVirtualDisk_Task"] = reflect.TypeOf((*InflateVirtualDisk_Task)(nil)).Elem() +} + +type InflateVirtualDisk_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type InfoUpgradeEvent struct { + UpgradeEvent +} + +func init() { + t["InfoUpgradeEvent"] = reflect.TypeOf((*InfoUpgradeEvent)(nil)).Elem() +} + +type InheritablePolicy struct { + DynamicData + + Inherited bool `xml:"inherited"` +} + +func init() { + t["InheritablePolicy"] = reflect.TypeOf((*InheritablePolicy)(nil)).Elem() +} + +type InitializeDisksRequestType struct { + This ManagedObjectReference `xml:"_this"` + Mapping []VsanHostDiskMapping `xml:"mapping"` +} + +func init() { + t["InitializeDisksRequestType"] = reflect.TypeOf((*InitializeDisksRequestType)(nil)).Elem() +} + +type InitializeDisks_Task InitializeDisksRequestType + +func init() { + t["InitializeDisks_Task"] = reflect.TypeOf((*InitializeDisks_Task)(nil)).Elem() +} + +type InitializeDisks_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type InitiateFileTransferFromGuest InitiateFileTransferFromGuestRequestType + +func init() { + t["InitiateFileTransferFromGuest"] = reflect.TypeOf((*InitiateFileTransferFromGuest)(nil)).Elem() +} + +type InitiateFileTransferFromGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + GuestFilePath string `xml:"guestFilePath"` +} + +func init() { + t["InitiateFileTransferFromGuestRequestType"] = reflect.TypeOf((*InitiateFileTransferFromGuestRequestType)(nil)).Elem() +} + +type InitiateFileTransferFromGuestResponse struct { + Returnval FileTransferInformation `xml:"returnval"` +} + +type InitiateFileTransferToGuest InitiateFileTransferToGuestRequestType + +func init() { + t["InitiateFileTransferToGuest"] = reflect.TypeOf((*InitiateFileTransferToGuest)(nil)).Elem() +} + +type InitiateFileTransferToGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + GuestFilePath string `xml:"guestFilePath"` + FileAttributes BaseGuestFileAttributes `xml:"fileAttributes,typeattr"` + FileSize int64 `xml:"fileSize"` + Overwrite bool `xml:"overwrite"` +} + +func init() { + t["InitiateFileTransferToGuestRequestType"] = reflect.TypeOf((*InitiateFileTransferToGuestRequestType)(nil)).Elem() +} + +type InitiateFileTransferToGuestResponse struct { + Returnval string `xml:"returnval"` +} + +type InstallHostPatchRequestType struct { + This ManagedObjectReference `xml:"_this"` + Repository HostPatchManagerLocator `xml:"repository"` + UpdateID string `xml:"updateID"` + Force *bool `xml:"force"` +} + +func init() { + t["InstallHostPatchRequestType"] = reflect.TypeOf((*InstallHostPatchRequestType)(nil)).Elem() +} + +type InstallHostPatchV2RequestType struct { + This ManagedObjectReference `xml:"_this"` + MetaUrls []string `xml:"metaUrls,omitempty"` + BundleUrls []string `xml:"bundleUrls,omitempty"` + VibUrls []string `xml:"vibUrls,omitempty"` + Spec *HostPatchManagerPatchManagerOperationSpec `xml:"spec,omitempty"` +} + +func init() { + t["InstallHostPatchV2RequestType"] = reflect.TypeOf((*InstallHostPatchV2RequestType)(nil)).Elem() +} + +type InstallHostPatchV2_Task InstallHostPatchV2RequestType + +func init() { + t["InstallHostPatchV2_Task"] = reflect.TypeOf((*InstallHostPatchV2_Task)(nil)).Elem() +} + +type InstallHostPatchV2_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type InstallHostPatch_Task InstallHostPatchRequestType + +func init() { + t["InstallHostPatch_Task"] = reflect.TypeOf((*InstallHostPatch_Task)(nil)).Elem() +} + +type InstallHostPatch_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type InstallIoFilterRequestType struct { + This ManagedObjectReference `xml:"_this"` + VibUrl string `xml:"vibUrl"` + CompRes ManagedObjectReference `xml:"compRes"` +} + +func init() { + t["InstallIoFilterRequestType"] = reflect.TypeOf((*InstallIoFilterRequestType)(nil)).Elem() +} + +type InstallIoFilter_Task InstallIoFilterRequestType + +func init() { + t["InstallIoFilter_Task"] = reflect.TypeOf((*InstallIoFilter_Task)(nil)).Elem() +} + +type InstallIoFilter_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type InstallServerCertificate InstallServerCertificateRequestType + +func init() { + t["InstallServerCertificate"] = reflect.TypeOf((*InstallServerCertificate)(nil)).Elem() +} + +type InstallServerCertificateRequestType struct { + This ManagedObjectReference `xml:"_this"` + Cert string `xml:"cert"` +} + +func init() { + t["InstallServerCertificateRequestType"] = reflect.TypeOf((*InstallServerCertificateRequestType)(nil)).Elem() +} + +type InstallServerCertificateResponse struct { +} + +type InstallSmartCardTrustAnchor InstallSmartCardTrustAnchorRequestType + +func init() { + t["InstallSmartCardTrustAnchor"] = reflect.TypeOf((*InstallSmartCardTrustAnchor)(nil)).Elem() +} + +type InstallSmartCardTrustAnchorRequestType struct { + This ManagedObjectReference `xml:"_this"` + Cert string `xml:"cert"` +} + +func init() { + t["InstallSmartCardTrustAnchorRequestType"] = reflect.TypeOf((*InstallSmartCardTrustAnchorRequestType)(nil)).Elem() +} + +type InstallSmartCardTrustAnchorResponse struct { +} + +type InstantCloneRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec VirtualMachineInstantCloneSpec `xml:"spec"` +} + +func init() { + t["InstantCloneRequestType"] = reflect.TypeOf((*InstantCloneRequestType)(nil)).Elem() +} + +type InstantClone_Task InstantCloneRequestType + +func init() { + t["InstantClone_Task"] = reflect.TypeOf((*InstantClone_Task)(nil)).Elem() +} + +type InstantClone_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type InsufficientAgentVmsDeployed struct { + InsufficientResourcesFault + + HostName string `xml:"hostName"` + RequiredNumAgentVms int32 `xml:"requiredNumAgentVms"` + CurrentNumAgentVms int32 `xml:"currentNumAgentVms"` +} + +func init() { + t["InsufficientAgentVmsDeployed"] = reflect.TypeOf((*InsufficientAgentVmsDeployed)(nil)).Elem() +} + +type InsufficientAgentVmsDeployedFault InsufficientAgentVmsDeployed + +func init() { + t["InsufficientAgentVmsDeployedFault"] = reflect.TypeOf((*InsufficientAgentVmsDeployedFault)(nil)).Elem() +} + +type InsufficientCpuResourcesFault struct { + InsufficientResourcesFault + + Unreserved int64 `xml:"unreserved"` + Requested int64 `xml:"requested"` +} + +func init() { + t["InsufficientCpuResourcesFault"] = reflect.TypeOf((*InsufficientCpuResourcesFault)(nil)).Elem() +} + +type InsufficientCpuResourcesFaultFault InsufficientCpuResourcesFault + +func init() { + t["InsufficientCpuResourcesFaultFault"] = reflect.TypeOf((*InsufficientCpuResourcesFaultFault)(nil)).Elem() +} + +type InsufficientDisks struct { + VsanDiskFault +} + +func init() { + t["InsufficientDisks"] = reflect.TypeOf((*InsufficientDisks)(nil)).Elem() +} + +type InsufficientDisksFault InsufficientDisks + +func init() { + t["InsufficientDisksFault"] = reflect.TypeOf((*InsufficientDisksFault)(nil)).Elem() +} + +type InsufficientFailoverResourcesEvent struct { + ClusterEvent +} + +func init() { + t["InsufficientFailoverResourcesEvent"] = reflect.TypeOf((*InsufficientFailoverResourcesEvent)(nil)).Elem() +} + +type InsufficientFailoverResourcesFault struct { + InsufficientResourcesFault +} + +func init() { + t["InsufficientFailoverResourcesFault"] = reflect.TypeOf((*InsufficientFailoverResourcesFault)(nil)).Elem() +} + +type InsufficientFailoverResourcesFaultFault InsufficientFailoverResourcesFault + +func init() { + t["InsufficientFailoverResourcesFaultFault"] = reflect.TypeOf((*InsufficientFailoverResourcesFaultFault)(nil)).Elem() +} + +type InsufficientGraphicsResourcesFault struct { + InsufficientResourcesFault +} + +func init() { + t["InsufficientGraphicsResourcesFault"] = reflect.TypeOf((*InsufficientGraphicsResourcesFault)(nil)).Elem() +} + +type InsufficientGraphicsResourcesFaultFault InsufficientGraphicsResourcesFault + +func init() { + t["InsufficientGraphicsResourcesFaultFault"] = reflect.TypeOf((*InsufficientGraphicsResourcesFaultFault)(nil)).Elem() +} + +type InsufficientHostCapacityFault struct { + InsufficientResourcesFault + + Host *ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["InsufficientHostCapacityFault"] = reflect.TypeOf((*InsufficientHostCapacityFault)(nil)).Elem() +} + +type InsufficientHostCapacityFaultFault BaseInsufficientHostCapacityFault + +func init() { + t["InsufficientHostCapacityFaultFault"] = reflect.TypeOf((*InsufficientHostCapacityFaultFault)(nil)).Elem() +} + +type InsufficientHostCpuCapacityFault struct { + InsufficientHostCapacityFault + + Unreserved int64 `xml:"unreserved"` + Requested int64 `xml:"requested"` +} + +func init() { + t["InsufficientHostCpuCapacityFault"] = reflect.TypeOf((*InsufficientHostCpuCapacityFault)(nil)).Elem() +} + +type InsufficientHostCpuCapacityFaultFault InsufficientHostCpuCapacityFault + +func init() { + t["InsufficientHostCpuCapacityFaultFault"] = reflect.TypeOf((*InsufficientHostCpuCapacityFaultFault)(nil)).Elem() +} + +type InsufficientHostMemoryCapacityFault struct { + InsufficientHostCapacityFault + + Unreserved int64 `xml:"unreserved"` + Requested int64 `xml:"requested"` +} + +func init() { + t["InsufficientHostMemoryCapacityFault"] = reflect.TypeOf((*InsufficientHostMemoryCapacityFault)(nil)).Elem() +} + +type InsufficientHostMemoryCapacityFaultFault InsufficientHostMemoryCapacityFault + +func init() { + t["InsufficientHostMemoryCapacityFaultFault"] = reflect.TypeOf((*InsufficientHostMemoryCapacityFaultFault)(nil)).Elem() +} + +type InsufficientMemoryResourcesFault struct { + InsufficientResourcesFault + + Unreserved int64 `xml:"unreserved"` + Requested int64 `xml:"requested"` +} + +func init() { + t["InsufficientMemoryResourcesFault"] = reflect.TypeOf((*InsufficientMemoryResourcesFault)(nil)).Elem() +} + +type InsufficientMemoryResourcesFaultFault InsufficientMemoryResourcesFault + +func init() { + t["InsufficientMemoryResourcesFaultFault"] = reflect.TypeOf((*InsufficientMemoryResourcesFaultFault)(nil)).Elem() +} + +type InsufficientNetworkCapacity struct { + InsufficientResourcesFault +} + +func init() { + t["InsufficientNetworkCapacity"] = reflect.TypeOf((*InsufficientNetworkCapacity)(nil)).Elem() +} + +type InsufficientNetworkCapacityFault InsufficientNetworkCapacity + +func init() { + t["InsufficientNetworkCapacityFault"] = reflect.TypeOf((*InsufficientNetworkCapacityFault)(nil)).Elem() +} + +type InsufficientNetworkResourcePoolCapacity struct { + InsufficientResourcesFault + + DvsName string `xml:"dvsName"` + DvsUuid string `xml:"dvsUuid"` + ResourcePoolKey string `xml:"resourcePoolKey"` + Available int64 `xml:"available"` + Requested int64 `xml:"requested"` + Device []string `xml:"device"` +} + +func init() { + t["InsufficientNetworkResourcePoolCapacity"] = reflect.TypeOf((*InsufficientNetworkResourcePoolCapacity)(nil)).Elem() +} + +type InsufficientNetworkResourcePoolCapacityFault InsufficientNetworkResourcePoolCapacity + +func init() { + t["InsufficientNetworkResourcePoolCapacityFault"] = reflect.TypeOf((*InsufficientNetworkResourcePoolCapacityFault)(nil)).Elem() +} + +type InsufficientPerCpuCapacity struct { + InsufficientHostCapacityFault +} + +func init() { + t["InsufficientPerCpuCapacity"] = reflect.TypeOf((*InsufficientPerCpuCapacity)(nil)).Elem() +} + +type InsufficientPerCpuCapacityFault InsufficientPerCpuCapacity + +func init() { + t["InsufficientPerCpuCapacityFault"] = reflect.TypeOf((*InsufficientPerCpuCapacityFault)(nil)).Elem() +} + +type InsufficientResourcesFault struct { + VimFault +} + +func init() { + t["InsufficientResourcesFault"] = reflect.TypeOf((*InsufficientResourcesFault)(nil)).Elem() +} + +type InsufficientResourcesFaultFault BaseInsufficientResourcesFault + +func init() { + t["InsufficientResourcesFaultFault"] = reflect.TypeOf((*InsufficientResourcesFaultFault)(nil)).Elem() +} + +type InsufficientStandbyCpuResource struct { + InsufficientStandbyResource + + Available int64 `xml:"available"` + Requested int64 `xml:"requested"` +} + +func init() { + t["InsufficientStandbyCpuResource"] = reflect.TypeOf((*InsufficientStandbyCpuResource)(nil)).Elem() +} + +type InsufficientStandbyCpuResourceFault InsufficientStandbyCpuResource + +func init() { + t["InsufficientStandbyCpuResourceFault"] = reflect.TypeOf((*InsufficientStandbyCpuResourceFault)(nil)).Elem() +} + +type InsufficientStandbyMemoryResource struct { + InsufficientStandbyResource + + Available int64 `xml:"available"` + Requested int64 `xml:"requested"` +} + +func init() { + t["InsufficientStandbyMemoryResource"] = reflect.TypeOf((*InsufficientStandbyMemoryResource)(nil)).Elem() +} + +type InsufficientStandbyMemoryResourceFault InsufficientStandbyMemoryResource + +func init() { + t["InsufficientStandbyMemoryResourceFault"] = reflect.TypeOf((*InsufficientStandbyMemoryResourceFault)(nil)).Elem() +} + +type InsufficientStandbyResource struct { + InsufficientResourcesFault +} + +func init() { + t["InsufficientStandbyResource"] = reflect.TypeOf((*InsufficientStandbyResource)(nil)).Elem() +} + +type InsufficientStandbyResourceFault BaseInsufficientStandbyResource + +func init() { + t["InsufficientStandbyResourceFault"] = reflect.TypeOf((*InsufficientStandbyResourceFault)(nil)).Elem() +} + +type InsufficientStorageIops struct { + VimFault + + UnreservedIops int64 `xml:"unreservedIops"` + RequestedIops int64 `xml:"requestedIops"` + DatastoreName string `xml:"datastoreName"` +} + +func init() { + t["InsufficientStorageIops"] = reflect.TypeOf((*InsufficientStorageIops)(nil)).Elem() +} + +type InsufficientStorageIopsFault InsufficientStorageIops + +func init() { + t["InsufficientStorageIopsFault"] = reflect.TypeOf((*InsufficientStorageIopsFault)(nil)).Elem() +} + +type InsufficientStorageSpace struct { + InsufficientResourcesFault +} + +func init() { + t["InsufficientStorageSpace"] = reflect.TypeOf((*InsufficientStorageSpace)(nil)).Elem() +} + +type InsufficientStorageSpaceFault InsufficientStorageSpace + +func init() { + t["InsufficientStorageSpaceFault"] = reflect.TypeOf((*InsufficientStorageSpaceFault)(nil)).Elem() +} + +type InsufficientVFlashResourcesFault struct { + InsufficientResourcesFault + + FreeSpaceInMB int64 `xml:"freeSpaceInMB,omitempty"` + FreeSpace int64 `xml:"freeSpace"` + RequestedSpaceInMB int64 `xml:"requestedSpaceInMB,omitempty"` + RequestedSpace int64 `xml:"requestedSpace"` +} + +func init() { + t["InsufficientVFlashResourcesFault"] = reflect.TypeOf((*InsufficientVFlashResourcesFault)(nil)).Elem() +} + +type InsufficientVFlashResourcesFaultFault InsufficientVFlashResourcesFault + +func init() { + t["InsufficientVFlashResourcesFaultFault"] = reflect.TypeOf((*InsufficientVFlashResourcesFaultFault)(nil)).Elem() +} + +type IntExpression struct { + NegatableExpression + + Value int32 `xml:"value,omitempty"` +} + +func init() { + t["IntExpression"] = reflect.TypeOf((*IntExpression)(nil)).Elem() +} + +type IntOption struct { + OptionType + + Min int32 `xml:"min"` + Max int32 `xml:"max"` + DefaultValue int32 `xml:"defaultValue"` +} + +func init() { + t["IntOption"] = reflect.TypeOf((*IntOption)(nil)).Elem() +} + +type IntPolicy struct { + InheritablePolicy + + Value int32 `xml:"value,omitempty"` +} + +func init() { + t["IntPolicy"] = reflect.TypeOf((*IntPolicy)(nil)).Elem() +} + +type InvalidAffinitySettingFault struct { + VimFault +} + +func init() { + t["InvalidAffinitySettingFault"] = reflect.TypeOf((*InvalidAffinitySettingFault)(nil)).Elem() +} + +type InvalidAffinitySettingFaultFault InvalidAffinitySettingFault + +func init() { + t["InvalidAffinitySettingFaultFault"] = reflect.TypeOf((*InvalidAffinitySettingFaultFault)(nil)).Elem() +} + +type InvalidArgument struct { + RuntimeFault + + InvalidProperty string `xml:"invalidProperty,omitempty"` +} + +func init() { + t["InvalidArgument"] = reflect.TypeOf((*InvalidArgument)(nil)).Elem() +} + +type InvalidArgumentFault BaseInvalidArgument + +func init() { + t["InvalidArgumentFault"] = reflect.TypeOf((*InvalidArgumentFault)(nil)).Elem() +} + +type InvalidBmcRole struct { + VimFault +} + +func init() { + t["InvalidBmcRole"] = reflect.TypeOf((*InvalidBmcRole)(nil)).Elem() +} + +type InvalidBmcRoleFault InvalidBmcRole + +func init() { + t["InvalidBmcRoleFault"] = reflect.TypeOf((*InvalidBmcRoleFault)(nil)).Elem() +} + +type InvalidBundle struct { + PlatformConfigFault +} + +func init() { + t["InvalidBundle"] = reflect.TypeOf((*InvalidBundle)(nil)).Elem() +} + +type InvalidBundleFault InvalidBundle + +func init() { + t["InvalidBundleFault"] = reflect.TypeOf((*InvalidBundleFault)(nil)).Elem() +} + +type InvalidCAMCertificate struct { + InvalidCAMServer +} + +func init() { + t["InvalidCAMCertificate"] = reflect.TypeOf((*InvalidCAMCertificate)(nil)).Elem() +} + +type InvalidCAMCertificateFault InvalidCAMCertificate + +func init() { + t["InvalidCAMCertificateFault"] = reflect.TypeOf((*InvalidCAMCertificateFault)(nil)).Elem() +} + +type InvalidCAMServer struct { + ActiveDirectoryFault + + CamServer string `xml:"camServer"` +} + +func init() { + t["InvalidCAMServer"] = reflect.TypeOf((*InvalidCAMServer)(nil)).Elem() +} + +type InvalidCAMServerFault BaseInvalidCAMServer + +func init() { + t["InvalidCAMServerFault"] = reflect.TypeOf((*InvalidCAMServerFault)(nil)).Elem() +} + +type InvalidClientCertificate struct { + InvalidLogin +} + +func init() { + t["InvalidClientCertificate"] = reflect.TypeOf((*InvalidClientCertificate)(nil)).Elem() +} + +type InvalidClientCertificateFault InvalidClientCertificate + +func init() { + t["InvalidClientCertificateFault"] = reflect.TypeOf((*InvalidClientCertificateFault)(nil)).Elem() +} + +type InvalidCollectorVersion struct { + MethodFault +} + +func init() { + t["InvalidCollectorVersion"] = reflect.TypeOf((*InvalidCollectorVersion)(nil)).Elem() +} + +type InvalidCollectorVersionFault InvalidCollectorVersion + +func init() { + t["InvalidCollectorVersionFault"] = reflect.TypeOf((*InvalidCollectorVersionFault)(nil)).Elem() +} + +type InvalidController struct { + InvalidDeviceSpec + + ControllerKey int32 `xml:"controllerKey"` +} + +func init() { + t["InvalidController"] = reflect.TypeOf((*InvalidController)(nil)).Elem() +} + +type InvalidControllerFault InvalidController + +func init() { + t["InvalidControllerFault"] = reflect.TypeOf((*InvalidControllerFault)(nil)).Elem() +} + +type InvalidDasConfigArgument struct { + InvalidArgument + + Entry string `xml:"entry,omitempty"` + ClusterName string `xml:"clusterName,omitempty"` +} + +func init() { + t["InvalidDasConfigArgument"] = reflect.TypeOf((*InvalidDasConfigArgument)(nil)).Elem() +} + +type InvalidDasConfigArgumentFault InvalidDasConfigArgument + +func init() { + t["InvalidDasConfigArgumentFault"] = reflect.TypeOf((*InvalidDasConfigArgumentFault)(nil)).Elem() +} + +type InvalidDasRestartPriorityForFtVm struct { + InvalidArgument + + Vm ManagedObjectReference `xml:"vm"` + VmName string `xml:"vmName"` +} + +func init() { + t["InvalidDasRestartPriorityForFtVm"] = reflect.TypeOf((*InvalidDasRestartPriorityForFtVm)(nil)).Elem() +} + +type InvalidDasRestartPriorityForFtVmFault InvalidDasRestartPriorityForFtVm + +func init() { + t["InvalidDasRestartPriorityForFtVmFault"] = reflect.TypeOf((*InvalidDasRestartPriorityForFtVmFault)(nil)).Elem() +} + +type InvalidDatastore struct { + VimFault + + Datastore *ManagedObjectReference `xml:"datastore,omitempty"` + Name string `xml:"name,omitempty"` +} + +func init() { + t["InvalidDatastore"] = reflect.TypeOf((*InvalidDatastore)(nil)).Elem() +} + +type InvalidDatastoreFault BaseInvalidDatastore + +func init() { + t["InvalidDatastoreFault"] = reflect.TypeOf((*InvalidDatastoreFault)(nil)).Elem() +} + +type InvalidDatastorePath struct { + InvalidDatastore + + DatastorePath string `xml:"datastorePath"` +} + +func init() { + t["InvalidDatastorePath"] = reflect.TypeOf((*InvalidDatastorePath)(nil)).Elem() +} + +type InvalidDatastorePathFault InvalidDatastorePath + +func init() { + t["InvalidDatastorePathFault"] = reflect.TypeOf((*InvalidDatastorePathFault)(nil)).Elem() +} + +type InvalidDatastoreState struct { + InvalidState + + DatastoreName string `xml:"datastoreName,omitempty"` +} + +func init() { + t["InvalidDatastoreState"] = reflect.TypeOf((*InvalidDatastoreState)(nil)).Elem() +} + +type InvalidDatastoreStateFault InvalidDatastoreState + +func init() { + t["InvalidDatastoreStateFault"] = reflect.TypeOf((*InvalidDatastoreStateFault)(nil)).Elem() +} + +type InvalidDeviceBacking struct { + InvalidDeviceSpec +} + +func init() { + t["InvalidDeviceBacking"] = reflect.TypeOf((*InvalidDeviceBacking)(nil)).Elem() +} + +type InvalidDeviceBackingFault InvalidDeviceBacking + +func init() { + t["InvalidDeviceBackingFault"] = reflect.TypeOf((*InvalidDeviceBackingFault)(nil)).Elem() +} + +type InvalidDeviceOperation struct { + InvalidDeviceSpec + + BadOp VirtualDeviceConfigSpecOperation `xml:"badOp,omitempty"` + BadFileOp VirtualDeviceConfigSpecFileOperation `xml:"badFileOp,omitempty"` +} + +func init() { + t["InvalidDeviceOperation"] = reflect.TypeOf((*InvalidDeviceOperation)(nil)).Elem() +} + +type InvalidDeviceOperationFault InvalidDeviceOperation + +func init() { + t["InvalidDeviceOperationFault"] = reflect.TypeOf((*InvalidDeviceOperationFault)(nil)).Elem() +} + +type InvalidDeviceSpec struct { + InvalidVmConfig + + DeviceIndex int32 `xml:"deviceIndex"` +} + +func init() { + t["InvalidDeviceSpec"] = reflect.TypeOf((*InvalidDeviceSpec)(nil)).Elem() +} + +type InvalidDeviceSpecFault BaseInvalidDeviceSpec + +func init() { + t["InvalidDeviceSpecFault"] = reflect.TypeOf((*InvalidDeviceSpecFault)(nil)).Elem() +} + +type InvalidDiskFormat struct { + InvalidFormat +} + +func init() { + t["InvalidDiskFormat"] = reflect.TypeOf((*InvalidDiskFormat)(nil)).Elem() +} + +type InvalidDiskFormatFault InvalidDiskFormat + +func init() { + t["InvalidDiskFormatFault"] = reflect.TypeOf((*InvalidDiskFormatFault)(nil)).Elem() +} + +type InvalidDrsBehaviorForFtVm struct { + InvalidArgument + + Vm ManagedObjectReference `xml:"vm"` + VmName string `xml:"vmName"` +} + +func init() { + t["InvalidDrsBehaviorForFtVm"] = reflect.TypeOf((*InvalidDrsBehaviorForFtVm)(nil)).Elem() +} + +type InvalidDrsBehaviorForFtVmFault InvalidDrsBehaviorForFtVm + +func init() { + t["InvalidDrsBehaviorForFtVmFault"] = reflect.TypeOf((*InvalidDrsBehaviorForFtVmFault)(nil)).Elem() +} + +type InvalidEditionEvent struct { + LicenseEvent + + Feature string `xml:"feature"` +} + +func init() { + t["InvalidEditionEvent"] = reflect.TypeOf((*InvalidEditionEvent)(nil)).Elem() +} + +type InvalidEditionLicense struct { + NotEnoughLicenses + + Feature string `xml:"feature"` +} + +func init() { + t["InvalidEditionLicense"] = reflect.TypeOf((*InvalidEditionLicense)(nil)).Elem() +} + +type InvalidEditionLicenseFault InvalidEditionLicense + +func init() { + t["InvalidEditionLicenseFault"] = reflect.TypeOf((*InvalidEditionLicenseFault)(nil)).Elem() +} + +type InvalidEvent struct { + VimFault +} + +func init() { + t["InvalidEvent"] = reflect.TypeOf((*InvalidEvent)(nil)).Elem() +} + +type InvalidEventFault InvalidEvent + +func init() { + t["InvalidEventFault"] = reflect.TypeOf((*InvalidEventFault)(nil)).Elem() +} + +type InvalidFolder struct { + VimFault + + Target ManagedObjectReference `xml:"target"` +} + +func init() { + t["InvalidFolder"] = reflect.TypeOf((*InvalidFolder)(nil)).Elem() +} + +type InvalidFolderFault BaseInvalidFolder + +func init() { + t["InvalidFolderFault"] = reflect.TypeOf((*InvalidFolderFault)(nil)).Elem() +} + +type InvalidFormat struct { + VmConfigFault +} + +func init() { + t["InvalidFormat"] = reflect.TypeOf((*InvalidFormat)(nil)).Elem() +} + +type InvalidFormatFault BaseInvalidFormat + +func init() { + t["InvalidFormatFault"] = reflect.TypeOf((*InvalidFormatFault)(nil)).Elem() +} + +type InvalidGuestLogin struct { + GuestOperationsFault +} + +func init() { + t["InvalidGuestLogin"] = reflect.TypeOf((*InvalidGuestLogin)(nil)).Elem() +} + +type InvalidGuestLoginFault InvalidGuestLogin + +func init() { + t["InvalidGuestLoginFault"] = reflect.TypeOf((*InvalidGuestLoginFault)(nil)).Elem() +} + +type InvalidHostConnectionState struct { + InvalidHostState +} + +func init() { + t["InvalidHostConnectionState"] = reflect.TypeOf((*InvalidHostConnectionState)(nil)).Elem() +} + +type InvalidHostConnectionStateFault InvalidHostConnectionState + +func init() { + t["InvalidHostConnectionStateFault"] = reflect.TypeOf((*InvalidHostConnectionStateFault)(nil)).Elem() +} + +type InvalidHostName struct { + HostConfigFault +} + +func init() { + t["InvalidHostName"] = reflect.TypeOf((*InvalidHostName)(nil)).Elem() +} + +type InvalidHostNameFault InvalidHostName + +func init() { + t["InvalidHostNameFault"] = reflect.TypeOf((*InvalidHostNameFault)(nil)).Elem() +} + +type InvalidHostState struct { + InvalidState + + Host *ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["InvalidHostState"] = reflect.TypeOf((*InvalidHostState)(nil)).Elem() +} + +type InvalidHostStateFault BaseInvalidHostState + +func init() { + t["InvalidHostStateFault"] = reflect.TypeOf((*InvalidHostStateFault)(nil)).Elem() +} + +type InvalidIndexArgument struct { + InvalidArgument + + Key string `xml:"key"` +} + +func init() { + t["InvalidIndexArgument"] = reflect.TypeOf((*InvalidIndexArgument)(nil)).Elem() +} + +type InvalidIndexArgumentFault InvalidIndexArgument + +func init() { + t["InvalidIndexArgumentFault"] = reflect.TypeOf((*InvalidIndexArgumentFault)(nil)).Elem() +} + +type InvalidIpfixConfig struct { + DvsFault + + Property string `xml:"property,omitempty"` +} + +func init() { + t["InvalidIpfixConfig"] = reflect.TypeOf((*InvalidIpfixConfig)(nil)).Elem() +} + +type InvalidIpfixConfigFault InvalidIpfixConfig + +func init() { + t["InvalidIpfixConfigFault"] = reflect.TypeOf((*InvalidIpfixConfigFault)(nil)).Elem() +} + +type InvalidIpmiLoginInfo struct { + VimFault +} + +func init() { + t["InvalidIpmiLoginInfo"] = reflect.TypeOf((*InvalidIpmiLoginInfo)(nil)).Elem() +} + +type InvalidIpmiLoginInfoFault InvalidIpmiLoginInfo + +func init() { + t["InvalidIpmiLoginInfoFault"] = reflect.TypeOf((*InvalidIpmiLoginInfoFault)(nil)).Elem() +} + +type InvalidIpmiMacAddress struct { + VimFault + + UserProvidedMacAddress string `xml:"userProvidedMacAddress"` + ObservedMacAddress string `xml:"observedMacAddress"` +} + +func init() { + t["InvalidIpmiMacAddress"] = reflect.TypeOf((*InvalidIpmiMacAddress)(nil)).Elem() +} + +type InvalidIpmiMacAddressFault InvalidIpmiMacAddress + +func init() { + t["InvalidIpmiMacAddressFault"] = reflect.TypeOf((*InvalidIpmiMacAddressFault)(nil)).Elem() +} + +type InvalidLicense struct { + VimFault + + LicenseContent string `xml:"licenseContent"` +} + +func init() { + t["InvalidLicense"] = reflect.TypeOf((*InvalidLicense)(nil)).Elem() +} + +type InvalidLicenseFault InvalidLicense + +func init() { + t["InvalidLicenseFault"] = reflect.TypeOf((*InvalidLicenseFault)(nil)).Elem() +} + +type InvalidLocale struct { + VimFault +} + +func init() { + t["InvalidLocale"] = reflect.TypeOf((*InvalidLocale)(nil)).Elem() +} + +type InvalidLocaleFault InvalidLocale + +func init() { + t["InvalidLocaleFault"] = reflect.TypeOf((*InvalidLocaleFault)(nil)).Elem() +} + +type InvalidLogin struct { + VimFault +} + +func init() { + t["InvalidLogin"] = reflect.TypeOf((*InvalidLogin)(nil)).Elem() +} + +type InvalidLoginFault BaseInvalidLogin + +func init() { + t["InvalidLoginFault"] = reflect.TypeOf((*InvalidLoginFault)(nil)).Elem() +} + +type InvalidName struct { + VimFault + + Name string `xml:"name"` + Entity *ManagedObjectReference `xml:"entity,omitempty"` +} + +func init() { + t["InvalidName"] = reflect.TypeOf((*InvalidName)(nil)).Elem() +} + +type InvalidNameFault InvalidName + +func init() { + t["InvalidNameFault"] = reflect.TypeOf((*InvalidNameFault)(nil)).Elem() +} + +type InvalidNasCredentials struct { + NasConfigFault + + UserName string `xml:"userName"` +} + +func init() { + t["InvalidNasCredentials"] = reflect.TypeOf((*InvalidNasCredentials)(nil)).Elem() +} + +type InvalidNasCredentialsFault InvalidNasCredentials + +func init() { + t["InvalidNasCredentialsFault"] = reflect.TypeOf((*InvalidNasCredentialsFault)(nil)).Elem() +} + +type InvalidNetworkInType struct { + VAppPropertyFault +} + +func init() { + t["InvalidNetworkInType"] = reflect.TypeOf((*InvalidNetworkInType)(nil)).Elem() +} + +type InvalidNetworkInTypeFault InvalidNetworkInType + +func init() { + t["InvalidNetworkInTypeFault"] = reflect.TypeOf((*InvalidNetworkInTypeFault)(nil)).Elem() +} + +type InvalidNetworkResource struct { + NasConfigFault + + RemoteHost string `xml:"remoteHost"` + RemotePath string `xml:"remotePath"` +} + +func init() { + t["InvalidNetworkResource"] = reflect.TypeOf((*InvalidNetworkResource)(nil)).Elem() +} + +type InvalidNetworkResourceFault InvalidNetworkResource + +func init() { + t["InvalidNetworkResourceFault"] = reflect.TypeOf((*InvalidNetworkResourceFault)(nil)).Elem() +} + +type InvalidOperationOnSecondaryVm struct { + VmFaultToleranceIssue + + InstanceUuid string `xml:"instanceUuid"` +} + +func init() { + t["InvalidOperationOnSecondaryVm"] = reflect.TypeOf((*InvalidOperationOnSecondaryVm)(nil)).Elem() +} + +type InvalidOperationOnSecondaryVmFault InvalidOperationOnSecondaryVm + +func init() { + t["InvalidOperationOnSecondaryVmFault"] = reflect.TypeOf((*InvalidOperationOnSecondaryVmFault)(nil)).Elem() +} + +type InvalidPowerState struct { + InvalidState + + RequestedState VirtualMachinePowerState `xml:"requestedState,omitempty"` + ExistingState VirtualMachinePowerState `xml:"existingState"` +} + +func init() { + t["InvalidPowerState"] = reflect.TypeOf((*InvalidPowerState)(nil)).Elem() +} + +type InvalidPowerStateFault InvalidPowerState + +func init() { + t["InvalidPowerStateFault"] = reflect.TypeOf((*InvalidPowerStateFault)(nil)).Elem() +} + +type InvalidPrivilege struct { + VimFault + + Privilege string `xml:"privilege"` +} + +func init() { + t["InvalidPrivilege"] = reflect.TypeOf((*InvalidPrivilege)(nil)).Elem() +} + +type InvalidPrivilegeFault InvalidPrivilege + +func init() { + t["InvalidPrivilegeFault"] = reflect.TypeOf((*InvalidPrivilegeFault)(nil)).Elem() +} + +type InvalidProfileReferenceHost struct { + RuntimeFault + + Reason string `xml:"reason,omitempty"` + Host *ManagedObjectReference `xml:"host,omitempty"` + Profile *ManagedObjectReference `xml:"profile,omitempty"` + ProfileName string `xml:"profileName,omitempty"` +} + +func init() { + t["InvalidProfileReferenceHost"] = reflect.TypeOf((*InvalidProfileReferenceHost)(nil)).Elem() +} + +type InvalidProfileReferenceHostFault InvalidProfileReferenceHost + +func init() { + t["InvalidProfileReferenceHostFault"] = reflect.TypeOf((*InvalidProfileReferenceHostFault)(nil)).Elem() +} + +type InvalidProperty struct { + MethodFault + + Name string `xml:"name"` +} + +func init() { + t["InvalidProperty"] = reflect.TypeOf((*InvalidProperty)(nil)).Elem() +} + +type InvalidPropertyFault InvalidProperty + +func init() { + t["InvalidPropertyFault"] = reflect.TypeOf((*InvalidPropertyFault)(nil)).Elem() +} + +type InvalidPropertyType struct { + VAppPropertyFault +} + +func init() { + t["InvalidPropertyType"] = reflect.TypeOf((*InvalidPropertyType)(nil)).Elem() +} + +type InvalidPropertyTypeFault InvalidPropertyType + +func init() { + t["InvalidPropertyTypeFault"] = reflect.TypeOf((*InvalidPropertyTypeFault)(nil)).Elem() +} + +type InvalidPropertyValue struct { + VAppPropertyFault +} + +func init() { + t["InvalidPropertyValue"] = reflect.TypeOf((*InvalidPropertyValue)(nil)).Elem() +} + +type InvalidPropertyValueFault BaseInvalidPropertyValue + +func init() { + t["InvalidPropertyValueFault"] = reflect.TypeOf((*InvalidPropertyValueFault)(nil)).Elem() +} + +type InvalidRequest struct { + RuntimeFault +} + +func init() { + t["InvalidRequest"] = reflect.TypeOf((*InvalidRequest)(nil)).Elem() +} + +type InvalidRequestFault BaseInvalidRequest + +func init() { + t["InvalidRequestFault"] = reflect.TypeOf((*InvalidRequestFault)(nil)).Elem() +} + +type InvalidResourcePoolStructureFault struct { + InsufficientResourcesFault +} + +func init() { + t["InvalidResourcePoolStructureFault"] = reflect.TypeOf((*InvalidResourcePoolStructureFault)(nil)).Elem() +} + +type InvalidResourcePoolStructureFaultFault InvalidResourcePoolStructureFault + +func init() { + t["InvalidResourcePoolStructureFaultFault"] = reflect.TypeOf((*InvalidResourcePoolStructureFaultFault)(nil)).Elem() +} + +type InvalidSnapshotFormat struct { + InvalidFormat +} + +func init() { + t["InvalidSnapshotFormat"] = reflect.TypeOf((*InvalidSnapshotFormat)(nil)).Elem() +} + +type InvalidSnapshotFormatFault InvalidSnapshotFormat + +func init() { + t["InvalidSnapshotFormatFault"] = reflect.TypeOf((*InvalidSnapshotFormatFault)(nil)).Elem() +} + +type InvalidState struct { + VimFault +} + +func init() { + t["InvalidState"] = reflect.TypeOf((*InvalidState)(nil)).Elem() +} + +type InvalidStateFault BaseInvalidState + +func init() { + t["InvalidStateFault"] = reflect.TypeOf((*InvalidStateFault)(nil)).Elem() +} + +type InvalidType struct { + InvalidRequest + + Argument string `xml:"argument,omitempty"` +} + +func init() { + t["InvalidType"] = reflect.TypeOf((*InvalidType)(nil)).Elem() +} + +type InvalidTypeFault InvalidType + +func init() { + t["InvalidTypeFault"] = reflect.TypeOf((*InvalidTypeFault)(nil)).Elem() +} + +type InvalidVmConfig struct { + VmConfigFault + + Property string `xml:"property,omitempty"` +} + +func init() { + t["InvalidVmConfig"] = reflect.TypeOf((*InvalidVmConfig)(nil)).Elem() +} + +type InvalidVmConfigFault BaseInvalidVmConfig + +func init() { + t["InvalidVmConfigFault"] = reflect.TypeOf((*InvalidVmConfigFault)(nil)).Elem() +} + +type InvalidVmState struct { + InvalidState + + Vm ManagedObjectReference `xml:"vm"` +} + +func init() { + t["InvalidVmState"] = reflect.TypeOf((*InvalidVmState)(nil)).Elem() +} + +type InvalidVmStateFault InvalidVmState + +func init() { + t["InvalidVmStateFault"] = reflect.TypeOf((*InvalidVmStateFault)(nil)).Elem() +} + +type InventoryDescription struct { + DynamicData + + NumHosts int32 `xml:"numHosts"` + NumVirtualMachines int32 `xml:"numVirtualMachines"` + NumResourcePools int32 `xml:"numResourcePools,omitempty"` + NumClusters int32 `xml:"numClusters,omitempty"` + NumCpuDev int32 `xml:"numCpuDev,omitempty"` + NumNetDev int32 `xml:"numNetDev,omitempty"` + NumDiskDev int32 `xml:"numDiskDev,omitempty"` + NumvCpuDev int32 `xml:"numvCpuDev,omitempty"` + NumvNetDev int32 `xml:"numvNetDev,omitempty"` + NumvDiskDev int32 `xml:"numvDiskDev,omitempty"` +} + +func init() { + t["InventoryDescription"] = reflect.TypeOf((*InventoryDescription)(nil)).Elem() +} + +type InventoryHasStandardAloneHosts struct { + NotEnoughLicenses + + Hosts []string `xml:"hosts"` +} + +func init() { + t["InventoryHasStandardAloneHosts"] = reflect.TypeOf((*InventoryHasStandardAloneHosts)(nil)).Elem() +} + +type InventoryHasStandardAloneHostsFault InventoryHasStandardAloneHosts + +func init() { + t["InventoryHasStandardAloneHostsFault"] = reflect.TypeOf((*InventoryHasStandardAloneHostsFault)(nil)).Elem() +} + +type IoFilterHostIssue struct { + DynamicData + + Host ManagedObjectReference `xml:"host"` + Issue []LocalizedMethodFault `xml:"issue"` +} + +func init() { + t["IoFilterHostIssue"] = reflect.TypeOf((*IoFilterHostIssue)(nil)).Elem() +} + +type IoFilterInfo struct { + DynamicData + + Id string `xml:"id"` + Name string `xml:"name"` + Vendor string `xml:"vendor"` + Version string `xml:"version"` + Type string `xml:"type,omitempty"` + Summary string `xml:"summary,omitempty"` + ReleaseDate string `xml:"releaseDate,omitempty"` +} + +func init() { + t["IoFilterInfo"] = reflect.TypeOf((*IoFilterInfo)(nil)).Elem() +} + +type IoFilterQueryIssueResult struct { + DynamicData + + OpType string `xml:"opType"` + HostIssue []IoFilterHostIssue `xml:"hostIssue,omitempty"` +} + +func init() { + t["IoFilterQueryIssueResult"] = reflect.TypeOf((*IoFilterQueryIssueResult)(nil)).Elem() +} + +type IpAddress struct { + NegatableExpression +} + +func init() { + t["IpAddress"] = reflect.TypeOf((*IpAddress)(nil)).Elem() +} + +type IpAddressProfile struct { + ApplyProfile +} + +func init() { + t["IpAddressProfile"] = reflect.TypeOf((*IpAddressProfile)(nil)).Elem() +} + +type IpHostnameGeneratorError struct { + CustomizationFault +} + +func init() { + t["IpHostnameGeneratorError"] = reflect.TypeOf((*IpHostnameGeneratorError)(nil)).Elem() +} + +type IpHostnameGeneratorErrorFault IpHostnameGeneratorError + +func init() { + t["IpHostnameGeneratorErrorFault"] = reflect.TypeOf((*IpHostnameGeneratorErrorFault)(nil)).Elem() +} + +type IpPool struct { + DynamicData + + Id int32 `xml:"id,omitempty"` + Name string `xml:"name,omitempty"` + Ipv4Config *IpPoolIpPoolConfigInfo `xml:"ipv4Config,omitempty"` + Ipv6Config *IpPoolIpPoolConfigInfo `xml:"ipv6Config,omitempty"` + DnsDomain string `xml:"dnsDomain,omitempty"` + DnsSearchPath string `xml:"dnsSearchPath,omitempty"` + HostPrefix string `xml:"hostPrefix,omitempty"` + HttpProxy string `xml:"httpProxy,omitempty"` + NetworkAssociation []IpPoolAssociation `xml:"networkAssociation,omitempty"` + AvailableIpv4Addresses int32 `xml:"availableIpv4Addresses,omitempty"` + AvailableIpv6Addresses int32 `xml:"availableIpv6Addresses,omitempty"` + AllocatedIpv4Addresses int32 `xml:"allocatedIpv4Addresses,omitempty"` + AllocatedIpv6Addresses int32 `xml:"allocatedIpv6Addresses,omitempty"` +} + +func init() { + t["IpPool"] = reflect.TypeOf((*IpPool)(nil)).Elem() +} + +type IpPoolAssociation struct { + DynamicData + + Network *ManagedObjectReference `xml:"network,omitempty"` + NetworkName string `xml:"networkName"` +} + +func init() { + t["IpPoolAssociation"] = reflect.TypeOf((*IpPoolAssociation)(nil)).Elem() +} + +type IpPoolIpPoolConfigInfo struct { + DynamicData + + SubnetAddress string `xml:"subnetAddress,omitempty"` + Netmask string `xml:"netmask,omitempty"` + Gateway string `xml:"gateway,omitempty"` + Range string `xml:"range,omitempty"` + Dns []string `xml:"dns,omitempty"` + DhcpServerAvailable *bool `xml:"dhcpServerAvailable"` + IpPoolEnabled *bool `xml:"ipPoolEnabled"` +} + +func init() { + t["IpPoolIpPoolConfigInfo"] = reflect.TypeOf((*IpPoolIpPoolConfigInfo)(nil)).Elem() +} + +type IpPoolManagerIpAllocation struct { + DynamicData + + IpAddress string `xml:"ipAddress"` + AllocationId string `xml:"allocationId"` +} + +func init() { + t["IpPoolManagerIpAllocation"] = reflect.TypeOf((*IpPoolManagerIpAllocation)(nil)).Elem() +} + +type IpRange struct { + IpAddress + + AddressPrefix string `xml:"addressPrefix"` + PrefixLength int32 `xml:"prefixLength,omitempty"` +} + +func init() { + t["IpRange"] = reflect.TypeOf((*IpRange)(nil)).Elem() +} + +type IpRouteProfile struct { + ApplyProfile + + StaticRoute []StaticRouteProfile `xml:"staticRoute,omitempty"` +} + +func init() { + t["IpRouteProfile"] = reflect.TypeOf((*IpRouteProfile)(nil)).Elem() +} + +type IsKmsClusterActive IsKmsClusterActiveRequestType + +func init() { + t["IsKmsClusterActive"] = reflect.TypeOf((*IsKmsClusterActive)(nil)).Elem() +} + +type IsKmsClusterActiveRequestType struct { + This ManagedObjectReference `xml:"_this"` + Cluster *KeyProviderId `xml:"cluster,omitempty"` +} + +func init() { + t["IsKmsClusterActiveRequestType"] = reflect.TypeOf((*IsKmsClusterActiveRequestType)(nil)).Elem() +} + +type IsKmsClusterActiveResponse struct { + Returnval bool `xml:"returnval"` +} + +type IsSharedGraphicsActive IsSharedGraphicsActiveRequestType + +func init() { + t["IsSharedGraphicsActive"] = reflect.TypeOf((*IsSharedGraphicsActive)(nil)).Elem() +} + +type IsSharedGraphicsActiveRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["IsSharedGraphicsActiveRequestType"] = reflect.TypeOf((*IsSharedGraphicsActiveRequestType)(nil)).Elem() +} + +type IsSharedGraphicsActiveResponse struct { + Returnval bool `xml:"returnval"` +} + +type IscsiDependencyEntity struct { + DynamicData + + PnicDevice string `xml:"pnicDevice"` + VnicDevice string `xml:"vnicDevice"` + VmhbaName string `xml:"vmhbaName"` +} + +func init() { + t["IscsiDependencyEntity"] = reflect.TypeOf((*IscsiDependencyEntity)(nil)).Elem() +} + +type IscsiFault struct { + VimFault +} + +func init() { + t["IscsiFault"] = reflect.TypeOf((*IscsiFault)(nil)).Elem() +} + +type IscsiFaultFault BaseIscsiFault + +func init() { + t["IscsiFaultFault"] = reflect.TypeOf((*IscsiFaultFault)(nil)).Elem() +} + +type IscsiFaultInvalidVnic struct { + IscsiFault + + VnicDevice string `xml:"vnicDevice"` +} + +func init() { + t["IscsiFaultInvalidVnic"] = reflect.TypeOf((*IscsiFaultInvalidVnic)(nil)).Elem() +} + +type IscsiFaultInvalidVnicFault IscsiFaultInvalidVnic + +func init() { + t["IscsiFaultInvalidVnicFault"] = reflect.TypeOf((*IscsiFaultInvalidVnicFault)(nil)).Elem() +} + +type IscsiFaultPnicInUse struct { + IscsiFault + + PnicDevice string `xml:"pnicDevice"` +} + +func init() { + t["IscsiFaultPnicInUse"] = reflect.TypeOf((*IscsiFaultPnicInUse)(nil)).Elem() +} + +type IscsiFaultPnicInUseFault IscsiFaultPnicInUse + +func init() { + t["IscsiFaultPnicInUseFault"] = reflect.TypeOf((*IscsiFaultPnicInUseFault)(nil)).Elem() +} + +type IscsiFaultVnicAlreadyBound struct { + IscsiFault + + VnicDevice string `xml:"vnicDevice"` +} + +func init() { + t["IscsiFaultVnicAlreadyBound"] = reflect.TypeOf((*IscsiFaultVnicAlreadyBound)(nil)).Elem() +} + +type IscsiFaultVnicAlreadyBoundFault IscsiFaultVnicAlreadyBound + +func init() { + t["IscsiFaultVnicAlreadyBoundFault"] = reflect.TypeOf((*IscsiFaultVnicAlreadyBoundFault)(nil)).Elem() +} + +type IscsiFaultVnicHasActivePaths struct { + IscsiFault + + VnicDevice string `xml:"vnicDevice"` +} + +func init() { + t["IscsiFaultVnicHasActivePaths"] = reflect.TypeOf((*IscsiFaultVnicHasActivePaths)(nil)).Elem() +} + +type IscsiFaultVnicHasActivePathsFault IscsiFaultVnicHasActivePaths + +func init() { + t["IscsiFaultVnicHasActivePathsFault"] = reflect.TypeOf((*IscsiFaultVnicHasActivePathsFault)(nil)).Elem() +} + +type IscsiFaultVnicHasMultipleUplinks struct { + IscsiFault + + VnicDevice string `xml:"vnicDevice"` +} + +func init() { + t["IscsiFaultVnicHasMultipleUplinks"] = reflect.TypeOf((*IscsiFaultVnicHasMultipleUplinks)(nil)).Elem() +} + +type IscsiFaultVnicHasMultipleUplinksFault IscsiFaultVnicHasMultipleUplinks + +func init() { + t["IscsiFaultVnicHasMultipleUplinksFault"] = reflect.TypeOf((*IscsiFaultVnicHasMultipleUplinksFault)(nil)).Elem() +} + +type IscsiFaultVnicHasNoUplinks struct { + IscsiFault + + VnicDevice string `xml:"vnicDevice"` +} + +func init() { + t["IscsiFaultVnicHasNoUplinks"] = reflect.TypeOf((*IscsiFaultVnicHasNoUplinks)(nil)).Elem() +} + +type IscsiFaultVnicHasNoUplinksFault IscsiFaultVnicHasNoUplinks + +func init() { + t["IscsiFaultVnicHasNoUplinksFault"] = reflect.TypeOf((*IscsiFaultVnicHasNoUplinksFault)(nil)).Elem() +} + +type IscsiFaultVnicHasWrongUplink struct { + IscsiFault + + VnicDevice string `xml:"vnicDevice"` +} + +func init() { + t["IscsiFaultVnicHasWrongUplink"] = reflect.TypeOf((*IscsiFaultVnicHasWrongUplink)(nil)).Elem() +} + +type IscsiFaultVnicHasWrongUplinkFault IscsiFaultVnicHasWrongUplink + +func init() { + t["IscsiFaultVnicHasWrongUplinkFault"] = reflect.TypeOf((*IscsiFaultVnicHasWrongUplinkFault)(nil)).Elem() +} + +type IscsiFaultVnicInUse struct { + IscsiFault + + VnicDevice string `xml:"vnicDevice"` +} + +func init() { + t["IscsiFaultVnicInUse"] = reflect.TypeOf((*IscsiFaultVnicInUse)(nil)).Elem() +} + +type IscsiFaultVnicInUseFault IscsiFaultVnicInUse + +func init() { + t["IscsiFaultVnicInUseFault"] = reflect.TypeOf((*IscsiFaultVnicInUseFault)(nil)).Elem() +} + +type IscsiFaultVnicIsLastPath struct { + IscsiFault + + VnicDevice string `xml:"vnicDevice"` +} + +func init() { + t["IscsiFaultVnicIsLastPath"] = reflect.TypeOf((*IscsiFaultVnicIsLastPath)(nil)).Elem() +} + +type IscsiFaultVnicIsLastPathFault IscsiFaultVnicIsLastPath + +func init() { + t["IscsiFaultVnicIsLastPathFault"] = reflect.TypeOf((*IscsiFaultVnicIsLastPathFault)(nil)).Elem() +} + +type IscsiFaultVnicNotBound struct { + IscsiFault + + VnicDevice string `xml:"vnicDevice"` +} + +func init() { + t["IscsiFaultVnicNotBound"] = reflect.TypeOf((*IscsiFaultVnicNotBound)(nil)).Elem() +} + +type IscsiFaultVnicNotBoundFault IscsiFaultVnicNotBound + +func init() { + t["IscsiFaultVnicNotBoundFault"] = reflect.TypeOf((*IscsiFaultVnicNotBoundFault)(nil)).Elem() +} + +type IscsiFaultVnicNotFound struct { + IscsiFault + + VnicDevice string `xml:"vnicDevice"` +} + +func init() { + t["IscsiFaultVnicNotFound"] = reflect.TypeOf((*IscsiFaultVnicNotFound)(nil)).Elem() +} + +type IscsiFaultVnicNotFoundFault IscsiFaultVnicNotFound + +func init() { + t["IscsiFaultVnicNotFoundFault"] = reflect.TypeOf((*IscsiFaultVnicNotFoundFault)(nil)).Elem() +} + +type IscsiMigrationDependency struct { + DynamicData + + MigrationAllowed bool `xml:"migrationAllowed"` + DisallowReason *IscsiStatus `xml:"disallowReason,omitempty"` + Dependency []IscsiDependencyEntity `xml:"dependency,omitempty"` +} + +func init() { + t["IscsiMigrationDependency"] = reflect.TypeOf((*IscsiMigrationDependency)(nil)).Elem() +} + +type IscsiPortInfo struct { + DynamicData + + VnicDevice string `xml:"vnicDevice,omitempty"` + Vnic *HostVirtualNic `xml:"vnic,omitempty"` + PnicDevice string `xml:"pnicDevice,omitempty"` + Pnic *PhysicalNic `xml:"pnic,omitempty"` + SwitchName string `xml:"switchName,omitempty"` + SwitchUuid string `xml:"switchUuid,omitempty"` + PortgroupName string `xml:"portgroupName,omitempty"` + PortgroupKey string `xml:"portgroupKey,omitempty"` + PortKey string `xml:"portKey,omitempty"` + OpaqueNetworkId string `xml:"opaqueNetworkId,omitempty"` + OpaqueNetworkType string `xml:"opaqueNetworkType,omitempty"` + OpaqueNetworkName string `xml:"opaqueNetworkName,omitempty"` + ExternalId string `xml:"externalId,omitempty"` + ComplianceStatus *IscsiStatus `xml:"complianceStatus,omitempty"` + PathStatus string `xml:"pathStatus,omitempty"` +} + +func init() { + t["IscsiPortInfo"] = reflect.TypeOf((*IscsiPortInfo)(nil)).Elem() +} + +type IscsiStatus struct { + DynamicData + + Reason []LocalizedMethodFault `xml:"reason,omitempty"` +} + +func init() { + t["IscsiStatus"] = reflect.TypeOf((*IscsiStatus)(nil)).Elem() +} + +type IsoImageFileInfo struct { + FileInfo +} + +func init() { + t["IsoImageFileInfo"] = reflect.TypeOf((*IsoImageFileInfo)(nil)).Elem() +} + +type IsoImageFileQuery struct { + FileQuery +} + +func init() { + t["IsoImageFileQuery"] = reflect.TypeOf((*IsoImageFileQuery)(nil)).Elem() +} + +type JoinDomainRequestType struct { + This ManagedObjectReference `xml:"_this"` + DomainName string `xml:"domainName"` + UserName string `xml:"userName"` + Password string `xml:"password"` +} + +func init() { + t["JoinDomainRequestType"] = reflect.TypeOf((*JoinDomainRequestType)(nil)).Elem() +} + +type JoinDomainWithCAMRequestType struct { + This ManagedObjectReference `xml:"_this"` + DomainName string `xml:"domainName"` + CamServer string `xml:"camServer"` +} + +func init() { + t["JoinDomainWithCAMRequestType"] = reflect.TypeOf((*JoinDomainWithCAMRequestType)(nil)).Elem() +} + +type JoinDomainWithCAM_Task JoinDomainWithCAMRequestType + +func init() { + t["JoinDomainWithCAM_Task"] = reflect.TypeOf((*JoinDomainWithCAM_Task)(nil)).Elem() +} + +type JoinDomainWithCAM_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type JoinDomain_Task JoinDomainRequestType + +func init() { + t["JoinDomain_Task"] = reflect.TypeOf((*JoinDomain_Task)(nil)).Elem() +} + +type JoinDomain_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type KernelModuleInfo struct { + DynamicData + + Id int32 `xml:"id"` + Name string `xml:"name"` + Version string `xml:"version"` + Filename string `xml:"filename"` + OptionString string `xml:"optionString"` + Loaded bool `xml:"loaded"` + Enabled bool `xml:"enabled"` + UseCount int32 `xml:"useCount"` + ReadOnlySection KernelModuleSectionInfo `xml:"readOnlySection"` + WritableSection KernelModuleSectionInfo `xml:"writableSection"` + TextSection KernelModuleSectionInfo `xml:"textSection"` + DataSection KernelModuleSectionInfo `xml:"dataSection"` + BssSection KernelModuleSectionInfo `xml:"bssSection"` +} + +func init() { + t["KernelModuleInfo"] = reflect.TypeOf((*KernelModuleInfo)(nil)).Elem() +} + +type KernelModuleSectionInfo struct { + DynamicData + + Address int64 `xml:"address"` + Length int32 `xml:"length,omitempty"` +} + +func init() { + t["KernelModuleSectionInfo"] = reflect.TypeOf((*KernelModuleSectionInfo)(nil)).Elem() +} + +type KeyAnyValue struct { + DynamicData + + Key string `xml:"key"` + Value AnyType `xml:"value,typeattr"` +} + +func init() { + t["KeyAnyValue"] = reflect.TypeOf((*KeyAnyValue)(nil)).Elem() +} + +type KeyNotFound struct { + VimFault + + Key string `xml:"key"` +} + +func init() { + t["KeyNotFound"] = reflect.TypeOf((*KeyNotFound)(nil)).Elem() +} + +type KeyNotFoundFault KeyNotFound + +func init() { + t["KeyNotFoundFault"] = reflect.TypeOf((*KeyNotFoundFault)(nil)).Elem() +} + +type KeyProviderId struct { + DynamicData + + Id string `xml:"id"` +} + +func init() { + t["KeyProviderId"] = reflect.TypeOf((*KeyProviderId)(nil)).Elem() +} + +type KeyValue struct { + DynamicData + + Key string `xml:"key"` + Value string `xml:"value"` +} + +func init() { + t["KeyValue"] = reflect.TypeOf((*KeyValue)(nil)).Elem() +} + +type KmipClusterInfo struct { + DynamicData + + ClusterId KeyProviderId `xml:"clusterId"` + Servers []KmipServerInfo `xml:"servers,omitempty"` + UseAsDefault bool `xml:"useAsDefault"` + ManagementType string `xml:"managementType,omitempty"` + UseAsEntityDefault []ManagedObjectReference `xml:"useAsEntityDefault,omitempty"` +} + +func init() { + t["KmipClusterInfo"] = reflect.TypeOf((*KmipClusterInfo)(nil)).Elem() +} + +type KmipServerInfo struct { + DynamicData + + Name string `xml:"name"` + Address string `xml:"address"` + Port int32 `xml:"port"` + ProxyAddress string `xml:"proxyAddress,omitempty"` + ProxyPort int32 `xml:"proxyPort,omitempty"` + Reconnect int32 `xml:"reconnect,omitempty"` + Protocol string `xml:"protocol,omitempty"` + Nbio int32 `xml:"nbio,omitempty"` + Timeout int32 `xml:"timeout,omitempty"` + UserName string `xml:"userName,omitempty"` +} + +func init() { + t["KmipServerInfo"] = reflect.TypeOf((*KmipServerInfo)(nil)).Elem() +} + +type KmipServerSpec struct { + DynamicData + + ClusterId KeyProviderId `xml:"clusterId"` + Info KmipServerInfo `xml:"info"` + Password string `xml:"password,omitempty"` +} + +func init() { + t["KmipServerSpec"] = reflect.TypeOf((*KmipServerSpec)(nil)).Elem() +} + +type KmipServerStatus struct { + DynamicData + + ClusterId KeyProviderId `xml:"clusterId"` + Name string `xml:"name"` + Status ManagedEntityStatus `xml:"status"` + Description string `xml:"description"` +} + +func init() { + t["KmipServerStatus"] = reflect.TypeOf((*KmipServerStatus)(nil)).Elem() +} + +type LargeRDMConversionNotSupported struct { + MigrationFault + + Device string `xml:"device"` +} + +func init() { + t["LargeRDMConversionNotSupported"] = reflect.TypeOf((*LargeRDMConversionNotSupported)(nil)).Elem() +} + +type LargeRDMConversionNotSupportedFault LargeRDMConversionNotSupported + +func init() { + t["LargeRDMConversionNotSupportedFault"] = reflect.TypeOf((*LargeRDMConversionNotSupportedFault)(nil)).Elem() +} + +type LargeRDMNotSupportedOnDatastore struct { + VmConfigFault + + Device string `xml:"device"` + Datastore ManagedObjectReference `xml:"datastore"` + DatastoreName string `xml:"datastoreName"` +} + +func init() { + t["LargeRDMNotSupportedOnDatastore"] = reflect.TypeOf((*LargeRDMNotSupportedOnDatastore)(nil)).Elem() +} + +type LargeRDMNotSupportedOnDatastoreFault LargeRDMNotSupportedOnDatastore + +func init() { + t["LargeRDMNotSupportedOnDatastoreFault"] = reflect.TypeOf((*LargeRDMNotSupportedOnDatastoreFault)(nil)).Elem() +} + +type LatencySensitivity struct { + DynamicData + + Level LatencySensitivitySensitivityLevel `xml:"level"` + Sensitivity int32 `xml:"sensitivity,omitempty"` +} + +func init() { + t["LatencySensitivity"] = reflect.TypeOf((*LatencySensitivity)(nil)).Elem() +} + +type LeaveCurrentDomainRequestType struct { + This ManagedObjectReference `xml:"_this"` + Force bool `xml:"force"` +} + +func init() { + t["LeaveCurrentDomainRequestType"] = reflect.TypeOf((*LeaveCurrentDomainRequestType)(nil)).Elem() +} + +type LeaveCurrentDomain_Task LeaveCurrentDomainRequestType + +func init() { + t["LeaveCurrentDomain_Task"] = reflect.TypeOf((*LeaveCurrentDomain_Task)(nil)).Elem() +} + +type LeaveCurrentDomain_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type LegacyNetworkInterfaceInUse struct { + CannotAccessNetwork +} + +func init() { + t["LegacyNetworkInterfaceInUse"] = reflect.TypeOf((*LegacyNetworkInterfaceInUse)(nil)).Elem() +} + +type LegacyNetworkInterfaceInUseFault LegacyNetworkInterfaceInUse + +func init() { + t["LegacyNetworkInterfaceInUseFault"] = reflect.TypeOf((*LegacyNetworkInterfaceInUseFault)(nil)).Elem() +} + +type LicenseAssignmentFailed struct { + RuntimeFault + + Reason string `xml:"reason,omitempty"` +} + +func init() { + t["LicenseAssignmentFailed"] = reflect.TypeOf((*LicenseAssignmentFailed)(nil)).Elem() +} + +type LicenseAssignmentFailedFault LicenseAssignmentFailed + +func init() { + t["LicenseAssignmentFailedFault"] = reflect.TypeOf((*LicenseAssignmentFailedFault)(nil)).Elem() +} + +type LicenseAssignmentManagerLicenseAssignment struct { + DynamicData + + EntityId string `xml:"entityId"` + Scope string `xml:"scope,omitempty"` + EntityDisplayName string `xml:"entityDisplayName,omitempty"` + AssignedLicense LicenseManagerLicenseInfo `xml:"assignedLicense"` + Properties []KeyAnyValue `xml:"properties,omitempty"` +} + +func init() { + t["LicenseAssignmentManagerLicenseAssignment"] = reflect.TypeOf((*LicenseAssignmentManagerLicenseAssignment)(nil)).Elem() +} + +type LicenseAvailabilityInfo struct { + DynamicData + + Feature LicenseFeatureInfo `xml:"feature"` + Total int32 `xml:"total"` + Available int32 `xml:"available"` +} + +func init() { + t["LicenseAvailabilityInfo"] = reflect.TypeOf((*LicenseAvailabilityInfo)(nil)).Elem() +} + +type LicenseDiagnostics struct { + DynamicData + + SourceLastChanged time.Time `xml:"sourceLastChanged"` + SourceLost string `xml:"sourceLost"` + SourceLatency float32 `xml:"sourceLatency"` + LicenseRequests string `xml:"licenseRequests"` + LicenseRequestFailures string `xml:"licenseRequestFailures"` + LicenseFeatureUnknowns string `xml:"licenseFeatureUnknowns"` + OpState LicenseManagerState `xml:"opState"` + LastStatusUpdate time.Time `xml:"lastStatusUpdate"` + OpFailureMessage string `xml:"opFailureMessage"` +} + +func init() { + t["LicenseDiagnostics"] = reflect.TypeOf((*LicenseDiagnostics)(nil)).Elem() +} + +type LicenseDowngradeDisallowed struct { + NotEnoughLicenses + + Edition string `xml:"edition"` + EntityId string `xml:"entityId"` + Features []KeyAnyValue `xml:"features"` +} + +func init() { + t["LicenseDowngradeDisallowed"] = reflect.TypeOf((*LicenseDowngradeDisallowed)(nil)).Elem() +} + +type LicenseDowngradeDisallowedFault LicenseDowngradeDisallowed + +func init() { + t["LicenseDowngradeDisallowedFault"] = reflect.TypeOf((*LicenseDowngradeDisallowedFault)(nil)).Elem() +} + +type LicenseEntityNotFound struct { + VimFault + + EntityId string `xml:"entityId"` +} + +func init() { + t["LicenseEntityNotFound"] = reflect.TypeOf((*LicenseEntityNotFound)(nil)).Elem() +} + +type LicenseEntityNotFoundFault LicenseEntityNotFound + +func init() { + t["LicenseEntityNotFoundFault"] = reflect.TypeOf((*LicenseEntityNotFoundFault)(nil)).Elem() +} + +type LicenseEvent struct { + Event +} + +func init() { + t["LicenseEvent"] = reflect.TypeOf((*LicenseEvent)(nil)).Elem() +} + +type LicenseExpired struct { + NotEnoughLicenses + + LicenseKey string `xml:"licenseKey"` +} + +func init() { + t["LicenseExpired"] = reflect.TypeOf((*LicenseExpired)(nil)).Elem() +} + +type LicenseExpiredEvent struct { + Event + + Feature LicenseFeatureInfo `xml:"feature"` +} + +func init() { + t["LicenseExpiredEvent"] = reflect.TypeOf((*LicenseExpiredEvent)(nil)).Elem() +} + +type LicenseExpiredFault LicenseExpired + +func init() { + t["LicenseExpiredFault"] = reflect.TypeOf((*LicenseExpiredFault)(nil)).Elem() +} + +type LicenseFeatureInfo struct { + DynamicData + + Key string `xml:"key"` + FeatureName string `xml:"featureName"` + FeatureDescription string `xml:"featureDescription,omitempty"` + State LicenseFeatureInfoState `xml:"state,omitempty"` + CostUnit string `xml:"costUnit"` + SourceRestriction string `xml:"sourceRestriction,omitempty"` + DependentKey []string `xml:"dependentKey,omitempty"` + Edition *bool `xml:"edition"` + ExpiresOn *time.Time `xml:"expiresOn"` +} + +func init() { + t["LicenseFeatureInfo"] = reflect.TypeOf((*LicenseFeatureInfo)(nil)).Elem() +} + +type LicenseKeyEntityMismatch struct { + NotEnoughLicenses +} + +func init() { + t["LicenseKeyEntityMismatch"] = reflect.TypeOf((*LicenseKeyEntityMismatch)(nil)).Elem() +} + +type LicenseKeyEntityMismatchFault LicenseKeyEntityMismatch + +func init() { + t["LicenseKeyEntityMismatchFault"] = reflect.TypeOf((*LicenseKeyEntityMismatchFault)(nil)).Elem() +} + +type LicenseManagerEvaluationInfo struct { + DynamicData + + Properties []KeyAnyValue `xml:"properties"` +} + +func init() { + t["LicenseManagerEvaluationInfo"] = reflect.TypeOf((*LicenseManagerEvaluationInfo)(nil)).Elem() +} + +type LicenseManagerLicenseInfo struct { + DynamicData + + LicenseKey string `xml:"licenseKey"` + EditionKey string `xml:"editionKey"` + Name string `xml:"name"` + Total int32 `xml:"total"` + Used int32 `xml:"used,omitempty"` + CostUnit string `xml:"costUnit"` + Properties []KeyAnyValue `xml:"properties,omitempty"` + Labels []KeyValue `xml:"labels,omitempty"` +} + +func init() { + t["LicenseManagerLicenseInfo"] = reflect.TypeOf((*LicenseManagerLicenseInfo)(nil)).Elem() +} + +type LicenseNonComplianceEvent struct { + LicenseEvent + + Url string `xml:"url"` +} + +func init() { + t["LicenseNonComplianceEvent"] = reflect.TypeOf((*LicenseNonComplianceEvent)(nil)).Elem() +} + +type LicenseReservationInfo struct { + DynamicData + + Key string `xml:"key"` + State LicenseReservationInfoState `xml:"state"` + Required int32 `xml:"required"` +} + +func init() { + t["LicenseReservationInfo"] = reflect.TypeOf((*LicenseReservationInfo)(nil)).Elem() +} + +type LicenseRestricted struct { + NotEnoughLicenses +} + +func init() { + t["LicenseRestricted"] = reflect.TypeOf((*LicenseRestricted)(nil)).Elem() +} + +type LicenseRestrictedEvent struct { + LicenseEvent +} + +func init() { + t["LicenseRestrictedEvent"] = reflect.TypeOf((*LicenseRestrictedEvent)(nil)).Elem() +} + +type LicenseRestrictedFault LicenseRestricted + +func init() { + t["LicenseRestrictedFault"] = reflect.TypeOf((*LicenseRestrictedFault)(nil)).Elem() +} + +type LicenseServerAvailableEvent struct { + LicenseEvent + + LicenseServer string `xml:"licenseServer"` +} + +func init() { + t["LicenseServerAvailableEvent"] = reflect.TypeOf((*LicenseServerAvailableEvent)(nil)).Elem() +} + +type LicenseServerSource struct { + LicenseSource + + LicenseServer string `xml:"licenseServer"` +} + +func init() { + t["LicenseServerSource"] = reflect.TypeOf((*LicenseServerSource)(nil)).Elem() +} + +type LicenseServerUnavailable struct { + VimFault + + LicenseServer string `xml:"licenseServer"` +} + +func init() { + t["LicenseServerUnavailable"] = reflect.TypeOf((*LicenseServerUnavailable)(nil)).Elem() +} + +type LicenseServerUnavailableEvent struct { + LicenseEvent + + LicenseServer string `xml:"licenseServer"` +} + +func init() { + t["LicenseServerUnavailableEvent"] = reflect.TypeOf((*LicenseServerUnavailableEvent)(nil)).Elem() +} + +type LicenseServerUnavailableFault LicenseServerUnavailable + +func init() { + t["LicenseServerUnavailableFault"] = reflect.TypeOf((*LicenseServerUnavailableFault)(nil)).Elem() +} + +type LicenseSource struct { + DynamicData +} + +func init() { + t["LicenseSource"] = reflect.TypeOf((*LicenseSource)(nil)).Elem() +} + +type LicenseSourceUnavailable struct { + NotEnoughLicenses + + LicenseSource BaseLicenseSource `xml:"licenseSource,typeattr"` +} + +func init() { + t["LicenseSourceUnavailable"] = reflect.TypeOf((*LicenseSourceUnavailable)(nil)).Elem() +} + +type LicenseSourceUnavailableFault LicenseSourceUnavailable + +func init() { + t["LicenseSourceUnavailableFault"] = reflect.TypeOf((*LicenseSourceUnavailableFault)(nil)).Elem() +} + +type LicenseUsageInfo struct { + DynamicData + + Source BaseLicenseSource `xml:"source,typeattr"` + SourceAvailable bool `xml:"sourceAvailable"` + ReservationInfo []LicenseReservationInfo `xml:"reservationInfo,omitempty"` + FeatureInfo []LicenseFeatureInfo `xml:"featureInfo,omitempty"` +} + +func init() { + t["LicenseUsageInfo"] = reflect.TypeOf((*LicenseUsageInfo)(nil)).Elem() +} + +type LimitExceeded struct { + VimFault + + Property string `xml:"property,omitempty"` + Limit *int32 `xml:"limit"` +} + +func init() { + t["LimitExceeded"] = reflect.TypeOf((*LimitExceeded)(nil)).Elem() +} + +type LimitExceededFault LimitExceeded + +func init() { + t["LimitExceededFault"] = reflect.TypeOf((*LimitExceededFault)(nil)).Elem() +} + +type LinkDiscoveryProtocolConfig struct { + DynamicData + + Protocol string `xml:"protocol"` + Operation string `xml:"operation"` +} + +func init() { + t["LinkDiscoveryProtocolConfig"] = reflect.TypeOf((*LinkDiscoveryProtocolConfig)(nil)).Elem() +} + +type LinkLayerDiscoveryProtocolInfo struct { + DynamicData + + ChassisId string `xml:"chassisId"` + PortId string `xml:"portId"` + TimeToLive int32 `xml:"timeToLive"` + Parameter []KeyAnyValue `xml:"parameter,omitempty"` +} + +func init() { + t["LinkLayerDiscoveryProtocolInfo"] = reflect.TypeOf((*LinkLayerDiscoveryProtocolInfo)(nil)).Elem() +} + +type LinkProfile struct { + ApplyProfile +} + +func init() { + t["LinkProfile"] = reflect.TypeOf((*LinkProfile)(nil)).Elem() +} + +type LinuxVolumeNotClean struct { + CustomizationFault +} + +func init() { + t["LinuxVolumeNotClean"] = reflect.TypeOf((*LinuxVolumeNotClean)(nil)).Elem() +} + +type LinuxVolumeNotCleanFault LinuxVolumeNotClean + +func init() { + t["LinuxVolumeNotCleanFault"] = reflect.TypeOf((*LinuxVolumeNotCleanFault)(nil)).Elem() +} + +type ListCACertificateRevocationLists ListCACertificateRevocationListsRequestType + +func init() { + t["ListCACertificateRevocationLists"] = reflect.TypeOf((*ListCACertificateRevocationLists)(nil)).Elem() +} + +type ListCACertificateRevocationListsRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["ListCACertificateRevocationListsRequestType"] = reflect.TypeOf((*ListCACertificateRevocationListsRequestType)(nil)).Elem() +} + +type ListCACertificateRevocationListsResponse struct { + Returnval []string `xml:"returnval,omitempty"` +} + +type ListCACertificates ListCACertificatesRequestType + +func init() { + t["ListCACertificates"] = reflect.TypeOf((*ListCACertificates)(nil)).Elem() +} + +type ListCACertificatesRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["ListCACertificatesRequestType"] = reflect.TypeOf((*ListCACertificatesRequestType)(nil)).Elem() +} + +type ListCACertificatesResponse struct { + Returnval []string `xml:"returnval,omitempty"` +} + +type ListFilesInGuest ListFilesInGuestRequestType + +func init() { + t["ListFilesInGuest"] = reflect.TypeOf((*ListFilesInGuest)(nil)).Elem() +} + +type ListFilesInGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + FilePath string `xml:"filePath"` + Index int32 `xml:"index,omitempty"` + MaxResults int32 `xml:"maxResults,omitempty"` + MatchPattern string `xml:"matchPattern,omitempty"` +} + +func init() { + t["ListFilesInGuestRequestType"] = reflect.TypeOf((*ListFilesInGuestRequestType)(nil)).Elem() +} + +type ListFilesInGuestResponse struct { + Returnval GuestListFileInfo `xml:"returnval"` +} + +type ListGuestAliases ListGuestAliasesRequestType + +func init() { + t["ListGuestAliases"] = reflect.TypeOf((*ListGuestAliases)(nil)).Elem() +} + +type ListGuestAliasesRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + Username string `xml:"username"` +} + +func init() { + t["ListGuestAliasesRequestType"] = reflect.TypeOf((*ListGuestAliasesRequestType)(nil)).Elem() +} + +type ListGuestAliasesResponse struct { + Returnval []GuestAliases `xml:"returnval,omitempty"` +} + +type ListGuestMappedAliases ListGuestMappedAliasesRequestType + +func init() { + t["ListGuestMappedAliases"] = reflect.TypeOf((*ListGuestMappedAliases)(nil)).Elem() +} + +type ListGuestMappedAliasesRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` +} + +func init() { + t["ListGuestMappedAliasesRequestType"] = reflect.TypeOf((*ListGuestMappedAliasesRequestType)(nil)).Elem() +} + +type ListGuestMappedAliasesResponse struct { + Returnval []GuestMappedAliases `xml:"returnval,omitempty"` +} + +type ListKeys ListKeysRequestType + +func init() { + t["ListKeys"] = reflect.TypeOf((*ListKeys)(nil)).Elem() +} + +type ListKeysRequestType struct { + This ManagedObjectReference `xml:"_this"` + Limit *int32 `xml:"limit"` +} + +func init() { + t["ListKeysRequestType"] = reflect.TypeOf((*ListKeysRequestType)(nil)).Elem() +} + +type ListKeysResponse struct { + Returnval []CryptoKeyId `xml:"returnval,omitempty"` +} + +type ListKmipServers ListKmipServersRequestType + +func init() { + t["ListKmipServers"] = reflect.TypeOf((*ListKmipServers)(nil)).Elem() +} + +type ListKmipServersRequestType struct { + This ManagedObjectReference `xml:"_this"` + Limit *int32 `xml:"limit"` +} + +func init() { + t["ListKmipServersRequestType"] = reflect.TypeOf((*ListKmipServersRequestType)(nil)).Elem() +} + +type ListKmipServersResponse struct { + Returnval []KmipClusterInfo `xml:"returnval,omitempty"` +} + +type ListKmsClusters ListKmsClustersRequestType + +func init() { + t["ListKmsClusters"] = reflect.TypeOf((*ListKmsClusters)(nil)).Elem() +} + +type ListKmsClustersRequestType struct { + This ManagedObjectReference `xml:"_this"` + IncludeKmsServers *bool `xml:"includeKmsServers"` + ManagementTypeFilter int32 `xml:"managementTypeFilter,omitempty"` + StatusFilter int32 `xml:"statusFilter,omitempty"` +} + +func init() { + t["ListKmsClustersRequestType"] = reflect.TypeOf((*ListKmsClustersRequestType)(nil)).Elem() +} + +type ListKmsClustersResponse struct { + Returnval []KmipClusterInfo `xml:"returnval,omitempty"` +} + +type ListProcessesInGuest ListProcessesInGuestRequestType + +func init() { + t["ListProcessesInGuest"] = reflect.TypeOf((*ListProcessesInGuest)(nil)).Elem() +} + +type ListProcessesInGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + Pids []int64 `xml:"pids,omitempty"` +} + +func init() { + t["ListProcessesInGuestRequestType"] = reflect.TypeOf((*ListProcessesInGuestRequestType)(nil)).Elem() +} + +type ListProcessesInGuestResponse struct { + Returnval []GuestProcessInfo `xml:"returnval,omitempty"` +} + +type ListRegistryKeysInGuest ListRegistryKeysInGuestRequestType + +func init() { + t["ListRegistryKeysInGuest"] = reflect.TypeOf((*ListRegistryKeysInGuest)(nil)).Elem() +} + +type ListRegistryKeysInGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + KeyName GuestRegKeyNameSpec `xml:"keyName"` + Recursive bool `xml:"recursive"` + MatchPattern string `xml:"matchPattern,omitempty"` +} + +func init() { + t["ListRegistryKeysInGuestRequestType"] = reflect.TypeOf((*ListRegistryKeysInGuestRequestType)(nil)).Elem() +} + +type ListRegistryKeysInGuestResponse struct { + Returnval []GuestRegKeyRecordSpec `xml:"returnval,omitempty"` +} + +type ListRegistryValuesInGuest ListRegistryValuesInGuestRequestType + +func init() { + t["ListRegistryValuesInGuest"] = reflect.TypeOf((*ListRegistryValuesInGuest)(nil)).Elem() +} + +type ListRegistryValuesInGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + KeyName GuestRegKeyNameSpec `xml:"keyName"` + ExpandStrings bool `xml:"expandStrings"` + MatchPattern string `xml:"matchPattern,omitempty"` +} + +func init() { + t["ListRegistryValuesInGuestRequestType"] = reflect.TypeOf((*ListRegistryValuesInGuestRequestType)(nil)).Elem() +} + +type ListRegistryValuesInGuestResponse struct { + Returnval []GuestRegValueSpec `xml:"returnval,omitempty"` +} + +type ListSmartCardTrustAnchors ListSmartCardTrustAnchorsRequestType + +func init() { + t["ListSmartCardTrustAnchors"] = reflect.TypeOf((*ListSmartCardTrustAnchors)(nil)).Elem() +} + +type ListSmartCardTrustAnchorsRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["ListSmartCardTrustAnchorsRequestType"] = reflect.TypeOf((*ListSmartCardTrustAnchorsRequestType)(nil)).Elem() +} + +type ListSmartCardTrustAnchorsResponse struct { + Returnval []string `xml:"returnval,omitempty"` +} + +type ListTagsAttachedToVStorageObject ListTagsAttachedToVStorageObjectRequestType + +func init() { + t["ListTagsAttachedToVStorageObject"] = reflect.TypeOf((*ListTagsAttachedToVStorageObject)(nil)).Elem() +} + +type ListTagsAttachedToVStorageObjectRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` +} + +func init() { + t["ListTagsAttachedToVStorageObjectRequestType"] = reflect.TypeOf((*ListTagsAttachedToVStorageObjectRequestType)(nil)).Elem() +} + +type ListTagsAttachedToVStorageObjectResponse struct { + Returnval []VslmTagEntry `xml:"returnval,omitempty"` +} + +type ListVStorageObject ListVStorageObjectRequestType + +func init() { + t["ListVStorageObject"] = reflect.TypeOf((*ListVStorageObject)(nil)).Elem() +} + +type ListVStorageObjectRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["ListVStorageObjectRequestType"] = reflect.TypeOf((*ListVStorageObjectRequestType)(nil)).Elem() +} + +type ListVStorageObjectResponse struct { + Returnval []ID `xml:"returnval,omitempty"` +} + +type ListVStorageObjectsAttachedToTag ListVStorageObjectsAttachedToTagRequestType + +func init() { + t["ListVStorageObjectsAttachedToTag"] = reflect.TypeOf((*ListVStorageObjectsAttachedToTag)(nil)).Elem() +} + +type ListVStorageObjectsAttachedToTagRequestType struct { + This ManagedObjectReference `xml:"_this"` + Category string `xml:"category"` + Tag string `xml:"tag"` +} + +func init() { + t["ListVStorageObjectsAttachedToTagRequestType"] = reflect.TypeOf((*ListVStorageObjectsAttachedToTagRequestType)(nil)).Elem() +} + +type ListVStorageObjectsAttachedToTagResponse struct { + Returnval []ID `xml:"returnval,omitempty"` +} + +type LocalDatastoreCreatedEvent struct { + HostEvent + + Datastore DatastoreEventArgument `xml:"datastore"` + DatastoreUrl string `xml:"datastoreUrl,omitempty"` +} + +func init() { + t["LocalDatastoreCreatedEvent"] = reflect.TypeOf((*LocalDatastoreCreatedEvent)(nil)).Elem() +} + +type LocalDatastoreInfo struct { + DatastoreInfo + + Path string `xml:"path,omitempty"` +} + +func init() { + t["LocalDatastoreInfo"] = reflect.TypeOf((*LocalDatastoreInfo)(nil)).Elem() +} + +type LocalLicenseSource struct { + LicenseSource + + LicenseKeys string `xml:"licenseKeys"` +} + +func init() { + t["LocalLicenseSource"] = reflect.TypeOf((*LocalLicenseSource)(nil)).Elem() +} + +type LocalTSMEnabledEvent struct { + HostEvent +} + +func init() { + t["LocalTSMEnabledEvent"] = reflect.TypeOf((*LocalTSMEnabledEvent)(nil)).Elem() +} + +type LocalizableMessage struct { + DynamicData + + Key string `xml:"key"` + Arg []KeyAnyValue `xml:"arg,omitempty"` + Message string `xml:"message,omitempty"` +} + +func init() { + t["LocalizableMessage"] = reflect.TypeOf((*LocalizableMessage)(nil)).Elem() +} + +type LocalizationManagerMessageCatalog struct { + DynamicData + + ModuleName string `xml:"moduleName"` + CatalogName string `xml:"catalogName"` + Locale string `xml:"locale"` + CatalogUri string `xml:"catalogUri"` + LastModified *time.Time `xml:"lastModified"` + Md5sum string `xml:"md5sum,omitempty"` + Version string `xml:"version,omitempty"` +} + +func init() { + t["LocalizationManagerMessageCatalog"] = reflect.TypeOf((*LocalizationManagerMessageCatalog)(nil)).Elem() +} + +type LocalizedMethodFault struct { + DynamicData + + Fault BaseMethodFault `xml:"fault,typeattr"` + LocalizedMessage string `xml:"localizedMessage,omitempty"` +} + +func init() { + t["LocalizedMethodFault"] = reflect.TypeOf((*LocalizedMethodFault)(nil)).Elem() +} + +type LockerMisconfiguredEvent struct { + Event + + Datastore DatastoreEventArgument `xml:"datastore"` +} + +func init() { + t["LockerMisconfiguredEvent"] = reflect.TypeOf((*LockerMisconfiguredEvent)(nil)).Elem() +} + +type LockerReconfiguredEvent struct { + Event + + OldDatastore *DatastoreEventArgument `xml:"oldDatastore,omitempty"` + NewDatastore *DatastoreEventArgument `xml:"newDatastore,omitempty"` +} + +func init() { + t["LockerReconfiguredEvent"] = reflect.TypeOf((*LockerReconfiguredEvent)(nil)).Elem() +} + +type LogBundlingFailed struct { + VimFault +} + +func init() { + t["LogBundlingFailed"] = reflect.TypeOf((*LogBundlingFailed)(nil)).Elem() +} + +type LogBundlingFailedFault LogBundlingFailed + +func init() { + t["LogBundlingFailedFault"] = reflect.TypeOf((*LogBundlingFailedFault)(nil)).Elem() +} + +type LogUserEvent LogUserEventRequestType + +func init() { + t["LogUserEvent"] = reflect.TypeOf((*LogUserEvent)(nil)).Elem() +} + +type LogUserEventRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity ManagedObjectReference `xml:"entity"` + Msg string `xml:"msg"` +} + +func init() { + t["LogUserEventRequestType"] = reflect.TypeOf((*LogUserEventRequestType)(nil)).Elem() +} + +type LogUserEventResponse struct { +} + +type Login LoginRequestType + +func init() { + t["Login"] = reflect.TypeOf((*Login)(nil)).Elem() +} + +type LoginBySSPI LoginBySSPIRequestType + +func init() { + t["LoginBySSPI"] = reflect.TypeOf((*LoginBySSPI)(nil)).Elem() +} + +type LoginBySSPIRequestType struct { + This ManagedObjectReference `xml:"_this"` + Base64Token string `xml:"base64Token"` + Locale string `xml:"locale,omitempty"` +} + +func init() { + t["LoginBySSPIRequestType"] = reflect.TypeOf((*LoginBySSPIRequestType)(nil)).Elem() +} + +type LoginBySSPIResponse struct { + Returnval UserSession `xml:"returnval"` +} + +type LoginByToken LoginByTokenRequestType + +func init() { + t["LoginByToken"] = reflect.TypeOf((*LoginByToken)(nil)).Elem() +} + +type LoginByTokenRequestType struct { + This ManagedObjectReference `xml:"_this"` + Locale string `xml:"locale,omitempty"` +} + +func init() { + t["LoginByTokenRequestType"] = reflect.TypeOf((*LoginByTokenRequestType)(nil)).Elem() +} + +type LoginByTokenResponse struct { + Returnval UserSession `xml:"returnval"` +} + +type LoginExtensionByCertificate LoginExtensionByCertificateRequestType + +func init() { + t["LoginExtensionByCertificate"] = reflect.TypeOf((*LoginExtensionByCertificate)(nil)).Elem() +} + +type LoginExtensionByCertificateRequestType struct { + This ManagedObjectReference `xml:"_this"` + ExtensionKey string `xml:"extensionKey"` + Locale string `xml:"locale,omitempty"` +} + +func init() { + t["LoginExtensionByCertificateRequestType"] = reflect.TypeOf((*LoginExtensionByCertificateRequestType)(nil)).Elem() +} + +type LoginExtensionByCertificateResponse struct { + Returnval UserSession `xml:"returnval"` +} + +type LoginExtensionBySubjectName LoginExtensionBySubjectNameRequestType + +func init() { + t["LoginExtensionBySubjectName"] = reflect.TypeOf((*LoginExtensionBySubjectName)(nil)).Elem() +} + +type LoginExtensionBySubjectNameRequestType struct { + This ManagedObjectReference `xml:"_this"` + ExtensionKey string `xml:"extensionKey"` + Locale string `xml:"locale,omitempty"` +} + +func init() { + t["LoginExtensionBySubjectNameRequestType"] = reflect.TypeOf((*LoginExtensionBySubjectNameRequestType)(nil)).Elem() +} + +type LoginExtensionBySubjectNameResponse struct { + Returnval UserSession `xml:"returnval"` +} + +type LoginRequestType struct { + This ManagedObjectReference `xml:"_this"` + UserName string `xml:"userName"` + Password string `xml:"password"` + Locale string `xml:"locale,omitempty"` +} + +func init() { + t["LoginRequestType"] = reflect.TypeOf((*LoginRequestType)(nil)).Elem() +} + +type LoginResponse struct { + Returnval UserSession `xml:"returnval"` +} + +type Logout LogoutRequestType + +func init() { + t["Logout"] = reflect.TypeOf((*Logout)(nil)).Elem() +} + +type LogoutRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["LogoutRequestType"] = reflect.TypeOf((*LogoutRequestType)(nil)).Elem() +} + +type LogoutResponse struct { +} + +type LongOption struct { + OptionType + + Min int64 `xml:"min"` + Max int64 `xml:"max"` + DefaultValue int64 `xml:"defaultValue"` +} + +func init() { + t["LongOption"] = reflect.TypeOf((*LongOption)(nil)).Elem() +} + +type LongPolicy struct { + InheritablePolicy + + Value int64 `xml:"value,omitempty"` +} + +func init() { + t["LongPolicy"] = reflect.TypeOf((*LongPolicy)(nil)).Elem() +} + +type LookupDvPortGroup LookupDvPortGroupRequestType + +func init() { + t["LookupDvPortGroup"] = reflect.TypeOf((*LookupDvPortGroup)(nil)).Elem() +} + +type LookupDvPortGroupRequestType struct { + This ManagedObjectReference `xml:"_this"` + PortgroupKey string `xml:"portgroupKey"` +} + +func init() { + t["LookupDvPortGroupRequestType"] = reflect.TypeOf((*LookupDvPortGroupRequestType)(nil)).Elem() +} + +type LookupDvPortGroupResponse struct { + Returnval *ManagedObjectReference `xml:"returnval,omitempty"` +} + +type LookupVmOverheadMemory LookupVmOverheadMemoryRequestType + +func init() { + t["LookupVmOverheadMemory"] = reflect.TypeOf((*LookupVmOverheadMemory)(nil)).Elem() +} + +type LookupVmOverheadMemoryRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Host ManagedObjectReference `xml:"host"` +} + +func init() { + t["LookupVmOverheadMemoryRequestType"] = reflect.TypeOf((*LookupVmOverheadMemoryRequestType)(nil)).Elem() +} + +type LookupVmOverheadMemoryResponse struct { + Returnval int64 `xml:"returnval"` +} + +type MacAddress struct { + NegatableExpression +} + +func init() { + t["MacAddress"] = reflect.TypeOf((*MacAddress)(nil)).Elem() +} + +type MacRange struct { + MacAddress + + Address string `xml:"address"` + Mask string `xml:"mask"` +} + +func init() { + t["MacRange"] = reflect.TypeOf((*MacRange)(nil)).Elem() +} + +type MaintenanceModeFileMove struct { + MigrationFault +} + +func init() { + t["MaintenanceModeFileMove"] = reflect.TypeOf((*MaintenanceModeFileMove)(nil)).Elem() +} + +type MaintenanceModeFileMoveFault MaintenanceModeFileMove + +func init() { + t["MaintenanceModeFileMoveFault"] = reflect.TypeOf((*MaintenanceModeFileMoveFault)(nil)).Elem() +} + +type MakeDirectory MakeDirectoryRequestType + +func init() { + t["MakeDirectory"] = reflect.TypeOf((*MakeDirectory)(nil)).Elem() +} + +type MakeDirectoryInGuest MakeDirectoryInGuestRequestType + +func init() { + t["MakeDirectoryInGuest"] = reflect.TypeOf((*MakeDirectoryInGuest)(nil)).Elem() +} + +type MakeDirectoryInGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + DirectoryPath string `xml:"directoryPath"` + CreateParentDirectories bool `xml:"createParentDirectories"` +} + +func init() { + t["MakeDirectoryInGuestRequestType"] = reflect.TypeOf((*MakeDirectoryInGuestRequestType)(nil)).Elem() +} + +type MakeDirectoryInGuestResponse struct { +} + +type MakeDirectoryRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` + CreateParentDirectories *bool `xml:"createParentDirectories"` +} + +func init() { + t["MakeDirectoryRequestType"] = reflect.TypeOf((*MakeDirectoryRequestType)(nil)).Elem() +} + +type MakeDirectoryResponse struct { +} + +type MakePrimaryVMRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` +} + +func init() { + t["MakePrimaryVMRequestType"] = reflect.TypeOf((*MakePrimaryVMRequestType)(nil)).Elem() +} + +type MakePrimaryVM_Task MakePrimaryVMRequestType + +func init() { + t["MakePrimaryVM_Task"] = reflect.TypeOf((*MakePrimaryVM_Task)(nil)).Elem() +} + +type MakePrimaryVM_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ManagedByInfo struct { + DynamicData + + ExtensionKey string `xml:"extensionKey"` + Type string `xml:"type"` +} + +func init() { + t["ManagedByInfo"] = reflect.TypeOf((*ManagedByInfo)(nil)).Elem() +} + +type ManagedEntityEventArgument struct { + EntityEventArgument + + Entity ManagedObjectReference `xml:"entity"` +} + +func init() { + t["ManagedEntityEventArgument"] = reflect.TypeOf((*ManagedEntityEventArgument)(nil)).Elem() +} + +type ManagedObjectNotFound struct { + RuntimeFault + + Obj ManagedObjectReference `xml:"obj"` +} + +func init() { + t["ManagedObjectNotFound"] = reflect.TypeOf((*ManagedObjectNotFound)(nil)).Elem() +} + +type ManagedObjectNotFoundFault ManagedObjectNotFound + +func init() { + t["ManagedObjectNotFoundFault"] = reflect.TypeOf((*ManagedObjectNotFoundFault)(nil)).Elem() +} + +type ManagedObjectReference struct { + Type string `xml:"type,attr"` + Value string `xml:",chardata"` +} + +func init() { + t["ManagedObjectReference"] = reflect.TypeOf((*ManagedObjectReference)(nil)).Elem() +} + +type MarkAsLocalRequestType struct { + This ManagedObjectReference `xml:"_this"` + ScsiDiskUuid string `xml:"scsiDiskUuid"` +} + +func init() { + t["MarkAsLocalRequestType"] = reflect.TypeOf((*MarkAsLocalRequestType)(nil)).Elem() +} + +type MarkAsLocal_Task MarkAsLocalRequestType + +func init() { + t["MarkAsLocal_Task"] = reflect.TypeOf((*MarkAsLocal_Task)(nil)).Elem() +} + +type MarkAsLocal_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type MarkAsNonLocalRequestType struct { + This ManagedObjectReference `xml:"_this"` + ScsiDiskUuid string `xml:"scsiDiskUuid"` +} + +func init() { + t["MarkAsNonLocalRequestType"] = reflect.TypeOf((*MarkAsNonLocalRequestType)(nil)).Elem() +} + +type MarkAsNonLocal_Task MarkAsNonLocalRequestType + +func init() { + t["MarkAsNonLocal_Task"] = reflect.TypeOf((*MarkAsNonLocal_Task)(nil)).Elem() +} + +type MarkAsNonLocal_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type MarkAsNonSsdRequestType struct { + This ManagedObjectReference `xml:"_this"` + ScsiDiskUuid string `xml:"scsiDiskUuid"` +} + +func init() { + t["MarkAsNonSsdRequestType"] = reflect.TypeOf((*MarkAsNonSsdRequestType)(nil)).Elem() +} + +type MarkAsNonSsd_Task MarkAsNonSsdRequestType + +func init() { + t["MarkAsNonSsd_Task"] = reflect.TypeOf((*MarkAsNonSsd_Task)(nil)).Elem() +} + +type MarkAsNonSsd_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type MarkAsSsdRequestType struct { + This ManagedObjectReference `xml:"_this"` + ScsiDiskUuid string `xml:"scsiDiskUuid"` +} + +func init() { + t["MarkAsSsdRequestType"] = reflect.TypeOf((*MarkAsSsdRequestType)(nil)).Elem() +} + +type MarkAsSsd_Task MarkAsSsdRequestType + +func init() { + t["MarkAsSsd_Task"] = reflect.TypeOf((*MarkAsSsd_Task)(nil)).Elem() +} + +type MarkAsSsd_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type MarkAsTemplate MarkAsTemplateRequestType + +func init() { + t["MarkAsTemplate"] = reflect.TypeOf((*MarkAsTemplate)(nil)).Elem() +} + +type MarkAsTemplateRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["MarkAsTemplateRequestType"] = reflect.TypeOf((*MarkAsTemplateRequestType)(nil)).Elem() +} + +type MarkAsTemplateResponse struct { +} + +type MarkAsVirtualMachine MarkAsVirtualMachineRequestType + +func init() { + t["MarkAsVirtualMachine"] = reflect.TypeOf((*MarkAsVirtualMachine)(nil)).Elem() +} + +type MarkAsVirtualMachineRequestType struct { + This ManagedObjectReference `xml:"_this"` + Pool ManagedObjectReference `xml:"pool"` + Host *ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["MarkAsVirtualMachineRequestType"] = reflect.TypeOf((*MarkAsVirtualMachineRequestType)(nil)).Elem() +} + +type MarkAsVirtualMachineResponse struct { +} + +type MarkDefault MarkDefaultRequestType + +func init() { + t["MarkDefault"] = reflect.TypeOf((*MarkDefault)(nil)).Elem() +} + +type MarkDefaultRequestType struct { + This ManagedObjectReference `xml:"_this"` + ClusterId KeyProviderId `xml:"clusterId"` +} + +func init() { + t["MarkDefaultRequestType"] = reflect.TypeOf((*MarkDefaultRequestType)(nil)).Elem() +} + +type MarkDefaultResponse struct { +} + +type MarkForRemoval MarkForRemovalRequestType + +func init() { + t["MarkForRemoval"] = reflect.TypeOf((*MarkForRemoval)(nil)).Elem() +} + +type MarkForRemovalRequestType struct { + This ManagedObjectReference `xml:"_this"` + HbaName string `xml:"hbaName"` + Remove bool `xml:"remove"` +} + +func init() { + t["MarkForRemovalRequestType"] = reflect.TypeOf((*MarkForRemovalRequestType)(nil)).Elem() +} + +type MarkForRemovalResponse struct { +} + +type MarkPerenniallyReserved MarkPerenniallyReservedRequestType + +func init() { + t["MarkPerenniallyReserved"] = reflect.TypeOf((*MarkPerenniallyReserved)(nil)).Elem() +} + +type MarkPerenniallyReservedExRequestType struct { + This ManagedObjectReference `xml:"_this"` + LunUuid []string `xml:"lunUuid,omitempty"` + State bool `xml:"state"` +} + +func init() { + t["MarkPerenniallyReservedExRequestType"] = reflect.TypeOf((*MarkPerenniallyReservedExRequestType)(nil)).Elem() +} + +type MarkPerenniallyReservedEx_Task MarkPerenniallyReservedExRequestType + +func init() { + t["MarkPerenniallyReservedEx_Task"] = reflect.TypeOf((*MarkPerenniallyReservedEx_Task)(nil)).Elem() +} + +type MarkPerenniallyReservedEx_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type MarkPerenniallyReservedRequestType struct { + This ManagedObjectReference `xml:"_this"` + LunUuid string `xml:"lunUuid"` + State bool `xml:"state"` +} + +func init() { + t["MarkPerenniallyReservedRequestType"] = reflect.TypeOf((*MarkPerenniallyReservedRequestType)(nil)).Elem() +} + +type MarkPerenniallyReservedResponse struct { +} + +type MarkServiceProviderEntities MarkServiceProviderEntitiesRequestType + +func init() { + t["MarkServiceProviderEntities"] = reflect.TypeOf((*MarkServiceProviderEntities)(nil)).Elem() +} + +type MarkServiceProviderEntitiesRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity []ManagedObjectReference `xml:"entity,omitempty"` +} + +func init() { + t["MarkServiceProviderEntitiesRequestType"] = reflect.TypeOf((*MarkServiceProviderEntitiesRequestType)(nil)).Elem() +} + +type MarkServiceProviderEntitiesResponse struct { +} + +type MemoryFileFormatNotSupportedByDatastore struct { + UnsupportedDatastore + + DatastoreName string `xml:"datastoreName"` + Type string `xml:"type"` +} + +func init() { + t["MemoryFileFormatNotSupportedByDatastore"] = reflect.TypeOf((*MemoryFileFormatNotSupportedByDatastore)(nil)).Elem() +} + +type MemoryFileFormatNotSupportedByDatastoreFault MemoryFileFormatNotSupportedByDatastore + +func init() { + t["MemoryFileFormatNotSupportedByDatastoreFault"] = reflect.TypeOf((*MemoryFileFormatNotSupportedByDatastoreFault)(nil)).Elem() +} + +type MemoryHotPlugNotSupported struct { + VmConfigFault +} + +func init() { + t["MemoryHotPlugNotSupported"] = reflect.TypeOf((*MemoryHotPlugNotSupported)(nil)).Elem() +} + +type MemoryHotPlugNotSupportedFault MemoryHotPlugNotSupported + +func init() { + t["MemoryHotPlugNotSupportedFault"] = reflect.TypeOf((*MemoryHotPlugNotSupportedFault)(nil)).Elem() +} + +type MemorySizeNotRecommended struct { + VirtualHardwareCompatibilityIssue + + MemorySizeMB int32 `xml:"memorySizeMB"` + MinMemorySizeMB int32 `xml:"minMemorySizeMB"` + MaxMemorySizeMB int32 `xml:"maxMemorySizeMB"` +} + +func init() { + t["MemorySizeNotRecommended"] = reflect.TypeOf((*MemorySizeNotRecommended)(nil)).Elem() +} + +type MemorySizeNotRecommendedFault MemorySizeNotRecommended + +func init() { + t["MemorySizeNotRecommendedFault"] = reflect.TypeOf((*MemorySizeNotRecommendedFault)(nil)).Elem() +} + +type MemorySizeNotSupported struct { + VirtualHardwareCompatibilityIssue + + MemorySizeMB int32 `xml:"memorySizeMB"` + MinMemorySizeMB int32 `xml:"minMemorySizeMB"` + MaxMemorySizeMB int32 `xml:"maxMemorySizeMB"` +} + +func init() { + t["MemorySizeNotSupported"] = reflect.TypeOf((*MemorySizeNotSupported)(nil)).Elem() +} + +type MemorySizeNotSupportedByDatastore struct { + VirtualHardwareCompatibilityIssue + + Datastore ManagedObjectReference `xml:"datastore"` + MemorySizeMB int32 `xml:"memorySizeMB"` + MaxMemorySizeMB int32 `xml:"maxMemorySizeMB"` +} + +func init() { + t["MemorySizeNotSupportedByDatastore"] = reflect.TypeOf((*MemorySizeNotSupportedByDatastore)(nil)).Elem() +} + +type MemorySizeNotSupportedByDatastoreFault MemorySizeNotSupportedByDatastore + +func init() { + t["MemorySizeNotSupportedByDatastoreFault"] = reflect.TypeOf((*MemorySizeNotSupportedByDatastoreFault)(nil)).Elem() +} + +type MemorySizeNotSupportedFault MemorySizeNotSupported + +func init() { + t["MemorySizeNotSupportedFault"] = reflect.TypeOf((*MemorySizeNotSupportedFault)(nil)).Elem() +} + +type MemorySnapshotOnIndependentDisk struct { + SnapshotFault +} + +func init() { + t["MemorySnapshotOnIndependentDisk"] = reflect.TypeOf((*MemorySnapshotOnIndependentDisk)(nil)).Elem() +} + +type MemorySnapshotOnIndependentDiskFault MemorySnapshotOnIndependentDisk + +func init() { + t["MemorySnapshotOnIndependentDiskFault"] = reflect.TypeOf((*MemorySnapshotOnIndependentDiskFault)(nil)).Elem() +} + +type MergeDvsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Dvs ManagedObjectReference `xml:"dvs"` +} + +func init() { + t["MergeDvsRequestType"] = reflect.TypeOf((*MergeDvsRequestType)(nil)).Elem() +} + +type MergeDvs_Task MergeDvsRequestType + +func init() { + t["MergeDvs_Task"] = reflect.TypeOf((*MergeDvs_Task)(nil)).Elem() +} + +type MergeDvs_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type MergePermissions MergePermissionsRequestType + +func init() { + t["MergePermissions"] = reflect.TypeOf((*MergePermissions)(nil)).Elem() +} + +type MergePermissionsRequestType struct { + This ManagedObjectReference `xml:"_this"` + SrcRoleId int32 `xml:"srcRoleId"` + DstRoleId int32 `xml:"dstRoleId"` +} + +func init() { + t["MergePermissionsRequestType"] = reflect.TypeOf((*MergePermissionsRequestType)(nil)).Elem() +} + +type MergePermissionsResponse struct { +} + +type MethodAction struct { + Action + + Name string `xml:"name"` + Argument []MethodActionArgument `xml:"argument,omitempty"` +} + +func init() { + t["MethodAction"] = reflect.TypeOf((*MethodAction)(nil)).Elem() +} + +type MethodActionArgument struct { + DynamicData + + Value AnyType `xml:"value,typeattr"` +} + +func init() { + t["MethodActionArgument"] = reflect.TypeOf((*MethodActionArgument)(nil)).Elem() +} + +type MethodAlreadyDisabledFault struct { + RuntimeFault + + SourceId string `xml:"sourceId"` +} + +func init() { + t["MethodAlreadyDisabledFault"] = reflect.TypeOf((*MethodAlreadyDisabledFault)(nil)).Elem() +} + +type MethodAlreadyDisabledFaultFault MethodAlreadyDisabledFault + +func init() { + t["MethodAlreadyDisabledFaultFault"] = reflect.TypeOf((*MethodAlreadyDisabledFaultFault)(nil)).Elem() +} + +type MethodDescription struct { + Description + + Key string `xml:"key"` +} + +func init() { + t["MethodDescription"] = reflect.TypeOf((*MethodDescription)(nil)).Elem() +} + +type MethodDisabled struct { + RuntimeFault + + Source string `xml:"source,omitempty"` +} + +func init() { + t["MethodDisabled"] = reflect.TypeOf((*MethodDisabled)(nil)).Elem() +} + +type MethodDisabledFault MethodDisabled + +func init() { + t["MethodDisabledFault"] = reflect.TypeOf((*MethodDisabledFault)(nil)).Elem() +} + +type MethodFault struct { + FaultCause *LocalizedMethodFault `xml:"faultCause,omitempty"` + FaultMessage []LocalizableMessage `xml:"faultMessage,omitempty"` +} + +func init() { + t["MethodFault"] = reflect.TypeOf((*MethodFault)(nil)).Elem() +} + +type MethodFaultFault BaseMethodFault + +func init() { + t["MethodFaultFault"] = reflect.TypeOf((*MethodFaultFault)(nil)).Elem() +} + +type MethodNotFound struct { + InvalidRequest + + Receiver ManagedObjectReference `xml:"receiver"` + Method string `xml:"method"` +} + +func init() { + t["MethodNotFound"] = reflect.TypeOf((*MethodNotFound)(nil)).Elem() +} + +type MethodNotFoundFault MethodNotFound + +func init() { + t["MethodNotFoundFault"] = reflect.TypeOf((*MethodNotFoundFault)(nil)).Elem() +} + +type MetricAlarmExpression struct { + AlarmExpression + + Operator MetricAlarmOperator `xml:"operator"` + Type string `xml:"type"` + Metric PerfMetricId `xml:"metric"` + Yellow int32 `xml:"yellow,omitempty"` + YellowInterval int32 `xml:"yellowInterval,omitempty"` + Red int32 `xml:"red,omitempty"` + RedInterval int32 `xml:"redInterval,omitempty"` +} + +func init() { + t["MetricAlarmExpression"] = reflect.TypeOf((*MetricAlarmExpression)(nil)).Elem() +} + +type MigrateVMRequestType struct { + This ManagedObjectReference `xml:"_this"` + Pool *ManagedObjectReference `xml:"pool,omitempty"` + Host *ManagedObjectReference `xml:"host,omitempty"` + Priority VirtualMachineMovePriority `xml:"priority"` + State VirtualMachinePowerState `xml:"state,omitempty"` +} + +func init() { + t["MigrateVMRequestType"] = reflect.TypeOf((*MigrateVMRequestType)(nil)).Elem() +} + +type MigrateVM_Task MigrateVMRequestType + +func init() { + t["MigrateVM_Task"] = reflect.TypeOf((*MigrateVM_Task)(nil)).Elem() +} + +type MigrateVM_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type MigrationDisabled struct { + MigrationFault +} + +func init() { + t["MigrationDisabled"] = reflect.TypeOf((*MigrationDisabled)(nil)).Elem() +} + +type MigrationDisabledFault MigrationDisabled + +func init() { + t["MigrationDisabledFault"] = reflect.TypeOf((*MigrationDisabledFault)(nil)).Elem() +} + +type MigrationErrorEvent struct { + MigrationEvent +} + +func init() { + t["MigrationErrorEvent"] = reflect.TypeOf((*MigrationErrorEvent)(nil)).Elem() +} + +type MigrationEvent struct { + VmEvent + + Fault LocalizedMethodFault `xml:"fault"` +} + +func init() { + t["MigrationEvent"] = reflect.TypeOf((*MigrationEvent)(nil)).Elem() +} + +type MigrationFault struct { + VimFault +} + +func init() { + t["MigrationFault"] = reflect.TypeOf((*MigrationFault)(nil)).Elem() +} + +type MigrationFaultFault BaseMigrationFault + +func init() { + t["MigrationFaultFault"] = reflect.TypeOf((*MigrationFaultFault)(nil)).Elem() +} + +type MigrationFeatureNotSupported struct { + MigrationFault + + AtSourceHost bool `xml:"atSourceHost"` + FailedHostName string `xml:"failedHostName"` + FailedHost ManagedObjectReference `xml:"failedHost"` +} + +func init() { + t["MigrationFeatureNotSupported"] = reflect.TypeOf((*MigrationFeatureNotSupported)(nil)).Elem() +} + +type MigrationFeatureNotSupportedFault BaseMigrationFeatureNotSupported + +func init() { + t["MigrationFeatureNotSupportedFault"] = reflect.TypeOf((*MigrationFeatureNotSupportedFault)(nil)).Elem() +} + +type MigrationHostErrorEvent struct { + MigrationEvent + + DstHost HostEventArgument `xml:"dstHost"` +} + +func init() { + t["MigrationHostErrorEvent"] = reflect.TypeOf((*MigrationHostErrorEvent)(nil)).Elem() +} + +type MigrationHostWarningEvent struct { + MigrationEvent + + DstHost HostEventArgument `xml:"dstHost"` +} + +func init() { + t["MigrationHostWarningEvent"] = reflect.TypeOf((*MigrationHostWarningEvent)(nil)).Elem() +} + +type MigrationNotReady struct { + MigrationFault + + Reason string `xml:"reason"` +} + +func init() { + t["MigrationNotReady"] = reflect.TypeOf((*MigrationNotReady)(nil)).Elem() +} + +type MigrationNotReadyFault MigrationNotReady + +func init() { + t["MigrationNotReadyFault"] = reflect.TypeOf((*MigrationNotReadyFault)(nil)).Elem() +} + +type MigrationResourceErrorEvent struct { + MigrationEvent + + DstPool ResourcePoolEventArgument `xml:"dstPool"` + DstHost HostEventArgument `xml:"dstHost"` +} + +func init() { + t["MigrationResourceErrorEvent"] = reflect.TypeOf((*MigrationResourceErrorEvent)(nil)).Elem() +} + +type MigrationResourceWarningEvent struct { + MigrationEvent + + DstPool ResourcePoolEventArgument `xml:"dstPool"` + DstHost HostEventArgument `xml:"dstHost"` +} + +func init() { + t["MigrationResourceWarningEvent"] = reflect.TypeOf((*MigrationResourceWarningEvent)(nil)).Elem() +} + +type MigrationWarningEvent struct { + MigrationEvent +} + +func init() { + t["MigrationWarningEvent"] = reflect.TypeOf((*MigrationWarningEvent)(nil)).Elem() +} + +type MismatchedBundle struct { + VimFault + + BundleUuid string `xml:"bundleUuid"` + HostUuid string `xml:"hostUuid"` + BundleBuildNumber int32 `xml:"bundleBuildNumber"` + HostBuildNumber int32 `xml:"hostBuildNumber"` +} + +func init() { + t["MismatchedBundle"] = reflect.TypeOf((*MismatchedBundle)(nil)).Elem() +} + +type MismatchedBundleFault MismatchedBundle + +func init() { + t["MismatchedBundleFault"] = reflect.TypeOf((*MismatchedBundleFault)(nil)).Elem() +} + +type MismatchedNetworkPolicies struct { + MigrationFault + + Device string `xml:"device"` + Backing string `xml:"backing"` + Connected bool `xml:"connected"` +} + +func init() { + t["MismatchedNetworkPolicies"] = reflect.TypeOf((*MismatchedNetworkPolicies)(nil)).Elem() +} + +type MismatchedNetworkPoliciesFault MismatchedNetworkPolicies + +func init() { + t["MismatchedNetworkPoliciesFault"] = reflect.TypeOf((*MismatchedNetworkPoliciesFault)(nil)).Elem() +} + +type MismatchedVMotionNetworkNames struct { + MigrationFault + + SourceNetwork string `xml:"sourceNetwork"` + DestNetwork string `xml:"destNetwork"` +} + +func init() { + t["MismatchedVMotionNetworkNames"] = reflect.TypeOf((*MismatchedVMotionNetworkNames)(nil)).Elem() +} + +type MismatchedVMotionNetworkNamesFault MismatchedVMotionNetworkNames + +func init() { + t["MismatchedVMotionNetworkNamesFault"] = reflect.TypeOf((*MismatchedVMotionNetworkNamesFault)(nil)).Elem() +} + +type MissingBmcSupport struct { + VimFault +} + +func init() { + t["MissingBmcSupport"] = reflect.TypeOf((*MissingBmcSupport)(nil)).Elem() +} + +type MissingBmcSupportFault MissingBmcSupport + +func init() { + t["MissingBmcSupportFault"] = reflect.TypeOf((*MissingBmcSupportFault)(nil)).Elem() +} + +type MissingController struct { + InvalidDeviceSpec +} + +func init() { + t["MissingController"] = reflect.TypeOf((*MissingController)(nil)).Elem() +} + +type MissingControllerFault MissingController + +func init() { + t["MissingControllerFault"] = reflect.TypeOf((*MissingControllerFault)(nil)).Elem() +} + +type MissingIpPool struct { + VAppPropertyFault +} + +func init() { + t["MissingIpPool"] = reflect.TypeOf((*MissingIpPool)(nil)).Elem() +} + +type MissingIpPoolFault MissingIpPool + +func init() { + t["MissingIpPoolFault"] = reflect.TypeOf((*MissingIpPoolFault)(nil)).Elem() +} + +type MissingLinuxCustResources struct { + CustomizationFault +} + +func init() { + t["MissingLinuxCustResources"] = reflect.TypeOf((*MissingLinuxCustResources)(nil)).Elem() +} + +type MissingLinuxCustResourcesFault MissingLinuxCustResources + +func init() { + t["MissingLinuxCustResourcesFault"] = reflect.TypeOf((*MissingLinuxCustResourcesFault)(nil)).Elem() +} + +type MissingNetworkIpConfig struct { + VAppPropertyFault +} + +func init() { + t["MissingNetworkIpConfig"] = reflect.TypeOf((*MissingNetworkIpConfig)(nil)).Elem() +} + +type MissingNetworkIpConfigFault MissingNetworkIpConfig + +func init() { + t["MissingNetworkIpConfigFault"] = reflect.TypeOf((*MissingNetworkIpConfigFault)(nil)).Elem() +} + +type MissingObject struct { + DynamicData + + Obj ManagedObjectReference `xml:"obj"` + Fault LocalizedMethodFault `xml:"fault"` +} + +func init() { + t["MissingObject"] = reflect.TypeOf((*MissingObject)(nil)).Elem() +} + +type MissingPowerOffConfiguration struct { + VAppConfigFault +} + +func init() { + t["MissingPowerOffConfiguration"] = reflect.TypeOf((*MissingPowerOffConfiguration)(nil)).Elem() +} + +type MissingPowerOffConfigurationFault MissingPowerOffConfiguration + +func init() { + t["MissingPowerOffConfigurationFault"] = reflect.TypeOf((*MissingPowerOffConfigurationFault)(nil)).Elem() +} + +type MissingPowerOnConfiguration struct { + VAppConfigFault +} + +func init() { + t["MissingPowerOnConfiguration"] = reflect.TypeOf((*MissingPowerOnConfiguration)(nil)).Elem() +} + +type MissingPowerOnConfigurationFault MissingPowerOnConfiguration + +func init() { + t["MissingPowerOnConfigurationFault"] = reflect.TypeOf((*MissingPowerOnConfigurationFault)(nil)).Elem() +} + +type MissingProperty struct { + DynamicData + + Path string `xml:"path"` + Fault LocalizedMethodFault `xml:"fault"` +} + +func init() { + t["MissingProperty"] = reflect.TypeOf((*MissingProperty)(nil)).Elem() +} + +type MissingWindowsCustResources struct { + CustomizationFault +} + +func init() { + t["MissingWindowsCustResources"] = reflect.TypeOf((*MissingWindowsCustResources)(nil)).Elem() +} + +type MissingWindowsCustResourcesFault MissingWindowsCustResources + +func init() { + t["MissingWindowsCustResourcesFault"] = reflect.TypeOf((*MissingWindowsCustResourcesFault)(nil)).Elem() +} + +type MksConnectionLimitReached struct { + InvalidState + + ConnectionLimit int32 `xml:"connectionLimit"` +} + +func init() { + t["MksConnectionLimitReached"] = reflect.TypeOf((*MksConnectionLimitReached)(nil)).Elem() +} + +type MksConnectionLimitReachedFault MksConnectionLimitReached + +func init() { + t["MksConnectionLimitReachedFault"] = reflect.TypeOf((*MksConnectionLimitReachedFault)(nil)).Elem() +} + +type ModeInfo struct { + DynamicData + + Browse string `xml:"browse,omitempty"` + Read string `xml:"read"` + Modify string `xml:"modify"` + Use string `xml:"use"` + Admin string `xml:"admin,omitempty"` + Full string `xml:"full"` +} + +func init() { + t["ModeInfo"] = reflect.TypeOf((*ModeInfo)(nil)).Elem() +} + +type ModifyListView ModifyListViewRequestType + +func init() { + t["ModifyListView"] = reflect.TypeOf((*ModifyListView)(nil)).Elem() +} + +type ModifyListViewRequestType struct { + This ManagedObjectReference `xml:"_this"` + Add []ManagedObjectReference `xml:"add,omitempty"` + Remove []ManagedObjectReference `xml:"remove,omitempty"` +} + +func init() { + t["ModifyListViewRequestType"] = reflect.TypeOf((*ModifyListViewRequestType)(nil)).Elem() +} + +type ModifyListViewResponse struct { + Returnval []ManagedObjectReference `xml:"returnval,omitempty"` +} + +type MonthlyByDayTaskScheduler struct { + MonthlyTaskScheduler + + Day int32 `xml:"day"` +} + +func init() { + t["MonthlyByDayTaskScheduler"] = reflect.TypeOf((*MonthlyByDayTaskScheduler)(nil)).Elem() +} + +type MonthlyByWeekdayTaskScheduler struct { + MonthlyTaskScheduler + + Offset WeekOfMonth `xml:"offset"` + Weekday DayOfWeek `xml:"weekday"` +} + +func init() { + t["MonthlyByWeekdayTaskScheduler"] = reflect.TypeOf((*MonthlyByWeekdayTaskScheduler)(nil)).Elem() +} + +type MonthlyTaskScheduler struct { + DailyTaskScheduler +} + +func init() { + t["MonthlyTaskScheduler"] = reflect.TypeOf((*MonthlyTaskScheduler)(nil)).Elem() +} + +type MountError struct { + CustomizationFault + + Vm ManagedObjectReference `xml:"vm"` + DiskIndex int32 `xml:"diskIndex"` +} + +func init() { + t["MountError"] = reflect.TypeOf((*MountError)(nil)).Elem() +} + +type MountErrorFault MountError + +func init() { + t["MountErrorFault"] = reflect.TypeOf((*MountErrorFault)(nil)).Elem() +} + +type MountToolsInstaller MountToolsInstallerRequestType + +func init() { + t["MountToolsInstaller"] = reflect.TypeOf((*MountToolsInstaller)(nil)).Elem() +} + +type MountToolsInstallerRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["MountToolsInstallerRequestType"] = reflect.TypeOf((*MountToolsInstallerRequestType)(nil)).Elem() +} + +type MountToolsInstallerResponse struct { +} + +type MountVffsVolume MountVffsVolumeRequestType + +func init() { + t["MountVffsVolume"] = reflect.TypeOf((*MountVffsVolume)(nil)).Elem() +} + +type MountVffsVolumeRequestType struct { + This ManagedObjectReference `xml:"_this"` + VffsUuid string `xml:"vffsUuid"` +} + +func init() { + t["MountVffsVolumeRequestType"] = reflect.TypeOf((*MountVffsVolumeRequestType)(nil)).Elem() +} + +type MountVffsVolumeResponse struct { +} + +type MountVmfsVolume MountVmfsVolumeRequestType + +func init() { + t["MountVmfsVolume"] = reflect.TypeOf((*MountVmfsVolume)(nil)).Elem() +} + +type MountVmfsVolumeExRequestType struct { + This ManagedObjectReference `xml:"_this"` + VmfsUuid []string `xml:"vmfsUuid"` +} + +func init() { + t["MountVmfsVolumeExRequestType"] = reflect.TypeOf((*MountVmfsVolumeExRequestType)(nil)).Elem() +} + +type MountVmfsVolumeEx_Task MountVmfsVolumeExRequestType + +func init() { + t["MountVmfsVolumeEx_Task"] = reflect.TypeOf((*MountVmfsVolumeEx_Task)(nil)).Elem() +} + +type MountVmfsVolumeEx_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type MountVmfsVolumeRequestType struct { + This ManagedObjectReference `xml:"_this"` + VmfsUuid string `xml:"vmfsUuid"` +} + +func init() { + t["MountVmfsVolumeRequestType"] = reflect.TypeOf((*MountVmfsVolumeRequestType)(nil)).Elem() +} + +type MountVmfsVolumeResponse struct { +} + +type MoveDVPortRequestType struct { + This ManagedObjectReference `xml:"_this"` + PortKey []string `xml:"portKey"` + DestinationPortgroupKey string `xml:"destinationPortgroupKey,omitempty"` +} + +func init() { + t["MoveDVPortRequestType"] = reflect.TypeOf((*MoveDVPortRequestType)(nil)).Elem() +} + +type MoveDVPort_Task MoveDVPortRequestType + +func init() { + t["MoveDVPort_Task"] = reflect.TypeOf((*MoveDVPort_Task)(nil)).Elem() +} + +type MoveDVPort_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type MoveDatastoreFileRequestType struct { + This ManagedObjectReference `xml:"_this"` + SourceName string `xml:"sourceName"` + SourceDatacenter *ManagedObjectReference `xml:"sourceDatacenter,omitempty"` + DestinationName string `xml:"destinationName"` + DestinationDatacenter *ManagedObjectReference `xml:"destinationDatacenter,omitempty"` + Force *bool `xml:"force"` +} + +func init() { + t["MoveDatastoreFileRequestType"] = reflect.TypeOf((*MoveDatastoreFileRequestType)(nil)).Elem() +} + +type MoveDatastoreFile_Task MoveDatastoreFileRequestType + +func init() { + t["MoveDatastoreFile_Task"] = reflect.TypeOf((*MoveDatastoreFile_Task)(nil)).Elem() +} + +type MoveDatastoreFile_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type MoveDirectoryInGuest MoveDirectoryInGuestRequestType + +func init() { + t["MoveDirectoryInGuest"] = reflect.TypeOf((*MoveDirectoryInGuest)(nil)).Elem() +} + +type MoveDirectoryInGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + SrcDirectoryPath string `xml:"srcDirectoryPath"` + DstDirectoryPath string `xml:"dstDirectoryPath"` +} + +func init() { + t["MoveDirectoryInGuestRequestType"] = reflect.TypeOf((*MoveDirectoryInGuestRequestType)(nil)).Elem() +} + +type MoveDirectoryInGuestResponse struct { +} + +type MoveFileInGuest MoveFileInGuestRequestType + +func init() { + t["MoveFileInGuest"] = reflect.TypeOf((*MoveFileInGuest)(nil)).Elem() +} + +type MoveFileInGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + SrcFilePath string `xml:"srcFilePath"` + DstFilePath string `xml:"dstFilePath"` + Overwrite bool `xml:"overwrite"` +} + +func init() { + t["MoveFileInGuestRequestType"] = reflect.TypeOf((*MoveFileInGuestRequestType)(nil)).Elem() +} + +type MoveFileInGuestResponse struct { +} + +type MoveHostIntoRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host ManagedObjectReference `xml:"host"` + ResourcePool *ManagedObjectReference `xml:"resourcePool,omitempty"` +} + +func init() { + t["MoveHostIntoRequestType"] = reflect.TypeOf((*MoveHostIntoRequestType)(nil)).Elem() +} + +type MoveHostInto_Task MoveHostIntoRequestType + +func init() { + t["MoveHostInto_Task"] = reflect.TypeOf((*MoveHostInto_Task)(nil)).Elem() +} + +type MoveHostInto_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type MoveIntoFolderRequestType struct { + This ManagedObjectReference `xml:"_this"` + List []ManagedObjectReference `xml:"list"` +} + +func init() { + t["MoveIntoFolderRequestType"] = reflect.TypeOf((*MoveIntoFolderRequestType)(nil)).Elem() +} + +type MoveIntoFolder_Task MoveIntoFolderRequestType + +func init() { + t["MoveIntoFolder_Task"] = reflect.TypeOf((*MoveIntoFolder_Task)(nil)).Elem() +} + +type MoveIntoFolder_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type MoveIntoRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host []ManagedObjectReference `xml:"host"` +} + +func init() { + t["MoveIntoRequestType"] = reflect.TypeOf((*MoveIntoRequestType)(nil)).Elem() +} + +type MoveIntoResourcePool MoveIntoResourcePoolRequestType + +func init() { + t["MoveIntoResourcePool"] = reflect.TypeOf((*MoveIntoResourcePool)(nil)).Elem() +} + +type MoveIntoResourcePoolRequestType struct { + This ManagedObjectReference `xml:"_this"` + List []ManagedObjectReference `xml:"list"` +} + +func init() { + t["MoveIntoResourcePoolRequestType"] = reflect.TypeOf((*MoveIntoResourcePoolRequestType)(nil)).Elem() +} + +type MoveIntoResourcePoolResponse struct { +} + +type MoveInto_Task MoveIntoRequestType + +func init() { + t["MoveInto_Task"] = reflect.TypeOf((*MoveInto_Task)(nil)).Elem() +} + +type MoveInto_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type MoveVirtualDiskRequestType struct { + This ManagedObjectReference `xml:"_this"` + SourceName string `xml:"sourceName"` + SourceDatacenter *ManagedObjectReference `xml:"sourceDatacenter,omitempty"` + DestName string `xml:"destName"` + DestDatacenter *ManagedObjectReference `xml:"destDatacenter,omitempty"` + Force *bool `xml:"force"` + Profile []BaseVirtualMachineProfileSpec `xml:"profile,omitempty,typeattr"` +} + +func init() { + t["MoveVirtualDiskRequestType"] = reflect.TypeOf((*MoveVirtualDiskRequestType)(nil)).Elem() +} + +type MoveVirtualDisk_Task MoveVirtualDiskRequestType + +func init() { + t["MoveVirtualDisk_Task"] = reflect.TypeOf((*MoveVirtualDisk_Task)(nil)).Elem() +} + +type MoveVirtualDisk_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type MtuMatchEvent struct { + DvsHealthStatusChangeEvent +} + +func init() { + t["MtuMatchEvent"] = reflect.TypeOf((*MtuMatchEvent)(nil)).Elem() +} + +type MtuMismatchEvent struct { + DvsHealthStatusChangeEvent +} + +func init() { + t["MtuMismatchEvent"] = reflect.TypeOf((*MtuMismatchEvent)(nil)).Elem() +} + +type MultiWriterNotSupported struct { + DeviceNotSupported +} + +func init() { + t["MultiWriterNotSupported"] = reflect.TypeOf((*MultiWriterNotSupported)(nil)).Elem() +} + +type MultiWriterNotSupportedFault MultiWriterNotSupported + +func init() { + t["MultiWriterNotSupportedFault"] = reflect.TypeOf((*MultiWriterNotSupportedFault)(nil)).Elem() +} + +type MultipleCertificatesVerifyFault struct { + HostConnectFault + + ThumbprintData []MultipleCertificatesVerifyFaultThumbprintData `xml:"thumbprintData"` +} + +func init() { + t["MultipleCertificatesVerifyFault"] = reflect.TypeOf((*MultipleCertificatesVerifyFault)(nil)).Elem() +} + +type MultipleCertificatesVerifyFaultFault MultipleCertificatesVerifyFault + +func init() { + t["MultipleCertificatesVerifyFaultFault"] = reflect.TypeOf((*MultipleCertificatesVerifyFaultFault)(nil)).Elem() +} + +type MultipleCertificatesVerifyFaultThumbprintData struct { + DynamicData + + Port int32 `xml:"port"` + Thumbprint string `xml:"thumbprint"` +} + +func init() { + t["MultipleCertificatesVerifyFaultThumbprintData"] = reflect.TypeOf((*MultipleCertificatesVerifyFaultThumbprintData)(nil)).Elem() +} + +type MultipleSnapshotsNotSupported struct { + SnapshotFault +} + +func init() { + t["MultipleSnapshotsNotSupported"] = reflect.TypeOf((*MultipleSnapshotsNotSupported)(nil)).Elem() +} + +type MultipleSnapshotsNotSupportedFault MultipleSnapshotsNotSupported + +func init() { + t["MultipleSnapshotsNotSupportedFault"] = reflect.TypeOf((*MultipleSnapshotsNotSupportedFault)(nil)).Elem() +} + +type NASDatastoreCreatedEvent struct { + HostEvent + + Datastore DatastoreEventArgument `xml:"datastore"` + DatastoreUrl string `xml:"datastoreUrl,omitempty"` +} + +func init() { + t["NASDatastoreCreatedEvent"] = reflect.TypeOf((*NASDatastoreCreatedEvent)(nil)).Elem() +} + +type NamePasswordAuthentication struct { + GuestAuthentication + + Username string `xml:"username"` + Password string `xml:"password"` +} + +func init() { + t["NamePasswordAuthentication"] = reflect.TypeOf((*NamePasswordAuthentication)(nil)).Elem() +} + +type NamespaceFull struct { + VimFault + + Name string `xml:"name"` + CurrentMaxSize int64 `xml:"currentMaxSize"` + RequiredSize int64 `xml:"requiredSize,omitempty"` +} + +func init() { + t["NamespaceFull"] = reflect.TypeOf((*NamespaceFull)(nil)).Elem() +} + +type NamespaceFullFault NamespaceFull + +func init() { + t["NamespaceFullFault"] = reflect.TypeOf((*NamespaceFullFault)(nil)).Elem() +} + +type NamespaceLimitReached struct { + VimFault + + Limit *int32 `xml:"limit"` +} + +func init() { + t["NamespaceLimitReached"] = reflect.TypeOf((*NamespaceLimitReached)(nil)).Elem() +} + +type NamespaceLimitReachedFault NamespaceLimitReached + +func init() { + t["NamespaceLimitReachedFault"] = reflect.TypeOf((*NamespaceLimitReachedFault)(nil)).Elem() +} + +type NamespaceWriteProtected struct { + VimFault + + Name string `xml:"name"` +} + +func init() { + t["NamespaceWriteProtected"] = reflect.TypeOf((*NamespaceWriteProtected)(nil)).Elem() +} + +type NamespaceWriteProtectedFault NamespaceWriteProtected + +func init() { + t["NamespaceWriteProtectedFault"] = reflect.TypeOf((*NamespaceWriteProtectedFault)(nil)).Elem() +} + +type NasConfigFault struct { + HostConfigFault + + Name string `xml:"name"` +} + +func init() { + t["NasConfigFault"] = reflect.TypeOf((*NasConfigFault)(nil)).Elem() +} + +type NasConfigFaultFault BaseNasConfigFault + +func init() { + t["NasConfigFaultFault"] = reflect.TypeOf((*NasConfigFaultFault)(nil)).Elem() +} + +type NasConnectionLimitReached struct { + NasConfigFault + + RemoteHost string `xml:"remoteHost"` + RemotePath string `xml:"remotePath"` +} + +func init() { + t["NasConnectionLimitReached"] = reflect.TypeOf((*NasConnectionLimitReached)(nil)).Elem() +} + +type NasConnectionLimitReachedFault NasConnectionLimitReached + +func init() { + t["NasConnectionLimitReachedFault"] = reflect.TypeOf((*NasConnectionLimitReachedFault)(nil)).Elem() +} + +type NasDatastoreInfo struct { + DatastoreInfo + + Nas *HostNasVolume `xml:"nas,omitempty"` +} + +func init() { + t["NasDatastoreInfo"] = reflect.TypeOf((*NasDatastoreInfo)(nil)).Elem() +} + +type NasSessionCredentialConflict struct { + NasConfigFault + + RemoteHost string `xml:"remoteHost"` + RemotePath string `xml:"remotePath"` + UserName string `xml:"userName"` +} + +func init() { + t["NasSessionCredentialConflict"] = reflect.TypeOf((*NasSessionCredentialConflict)(nil)).Elem() +} + +type NasSessionCredentialConflictFault NasSessionCredentialConflict + +func init() { + t["NasSessionCredentialConflictFault"] = reflect.TypeOf((*NasSessionCredentialConflictFault)(nil)).Elem() +} + +type NasStorageProfile struct { + ApplyProfile + + Key string `xml:"key"` +} + +func init() { + t["NasStorageProfile"] = reflect.TypeOf((*NasStorageProfile)(nil)).Elem() +} + +type NasVolumeNotMounted struct { + NasConfigFault + + RemoteHost string `xml:"remoteHost"` + RemotePath string `xml:"remotePath"` +} + +func init() { + t["NasVolumeNotMounted"] = reflect.TypeOf((*NasVolumeNotMounted)(nil)).Elem() +} + +type NasVolumeNotMountedFault NasVolumeNotMounted + +func init() { + t["NasVolumeNotMountedFault"] = reflect.TypeOf((*NasVolumeNotMountedFault)(nil)).Elem() +} + +type NegatableExpression struct { + DynamicData + + Negate *bool `xml:"negate"` +} + +func init() { + t["NegatableExpression"] = reflect.TypeOf((*NegatableExpression)(nil)).Elem() +} + +type NetBIOSConfigInfo struct { + DynamicData + + Mode string `xml:"mode"` +} + +func init() { + t["NetBIOSConfigInfo"] = reflect.TypeOf((*NetBIOSConfigInfo)(nil)).Elem() +} + +type NetDhcpConfigInfo struct { + DynamicData + + Ipv6 *NetDhcpConfigInfoDhcpOptions `xml:"ipv6,omitempty"` + Ipv4 *NetDhcpConfigInfoDhcpOptions `xml:"ipv4,omitempty"` +} + +func init() { + t["NetDhcpConfigInfo"] = reflect.TypeOf((*NetDhcpConfigInfo)(nil)).Elem() +} + +type NetDhcpConfigInfoDhcpOptions struct { + DynamicData + + Enable bool `xml:"enable"` + Config []KeyValue `xml:"config,omitempty"` +} + +func init() { + t["NetDhcpConfigInfoDhcpOptions"] = reflect.TypeOf((*NetDhcpConfigInfoDhcpOptions)(nil)).Elem() +} + +type NetDhcpConfigSpec struct { + DynamicData + + Ipv6 *NetDhcpConfigSpecDhcpOptionsSpec `xml:"ipv6,omitempty"` + Ipv4 *NetDhcpConfigSpecDhcpOptionsSpec `xml:"ipv4,omitempty"` +} + +func init() { + t["NetDhcpConfigSpec"] = reflect.TypeOf((*NetDhcpConfigSpec)(nil)).Elem() +} + +type NetDhcpConfigSpecDhcpOptionsSpec struct { + DynamicData + + Enable *bool `xml:"enable"` + Config []KeyValue `xml:"config"` + Operation string `xml:"operation"` +} + +func init() { + t["NetDhcpConfigSpecDhcpOptionsSpec"] = reflect.TypeOf((*NetDhcpConfigSpecDhcpOptionsSpec)(nil)).Elem() +} + +type NetDnsConfigInfo struct { + DynamicData + + Dhcp bool `xml:"dhcp"` + HostName string `xml:"hostName"` + DomainName string `xml:"domainName"` + IpAddress []string `xml:"ipAddress,omitempty"` + SearchDomain []string `xml:"searchDomain,omitempty"` +} + +func init() { + t["NetDnsConfigInfo"] = reflect.TypeOf((*NetDnsConfigInfo)(nil)).Elem() +} + +type NetDnsConfigSpec struct { + DynamicData + + Dhcp *bool `xml:"dhcp"` + HostName string `xml:"hostName,omitempty"` + DomainName string `xml:"domainName,omitempty"` + IpAddress []string `xml:"ipAddress,omitempty"` + SearchDomain []string `xml:"searchDomain,omitempty"` +} + +func init() { + t["NetDnsConfigSpec"] = reflect.TypeOf((*NetDnsConfigSpec)(nil)).Elem() +} + +type NetIpConfigInfo struct { + DynamicData + + IpAddress []NetIpConfigInfoIpAddress `xml:"ipAddress,omitempty"` + Dhcp *NetDhcpConfigInfo `xml:"dhcp,omitempty"` + AutoConfigurationEnabled *bool `xml:"autoConfigurationEnabled"` +} + +func init() { + t["NetIpConfigInfo"] = reflect.TypeOf((*NetIpConfigInfo)(nil)).Elem() +} + +type NetIpConfigInfoIpAddress struct { + DynamicData + + IpAddress string `xml:"ipAddress"` + PrefixLength int32 `xml:"prefixLength"` + Origin string `xml:"origin,omitempty"` + State string `xml:"state,omitempty"` + Lifetime *time.Time `xml:"lifetime"` +} + +func init() { + t["NetIpConfigInfoIpAddress"] = reflect.TypeOf((*NetIpConfigInfoIpAddress)(nil)).Elem() +} + +type NetIpConfigSpec struct { + DynamicData + + IpAddress []NetIpConfigSpecIpAddressSpec `xml:"ipAddress,omitempty"` + Dhcp *NetDhcpConfigSpec `xml:"dhcp,omitempty"` + AutoConfigurationEnabled *bool `xml:"autoConfigurationEnabled"` +} + +func init() { + t["NetIpConfigSpec"] = reflect.TypeOf((*NetIpConfigSpec)(nil)).Elem() +} + +type NetIpConfigSpecIpAddressSpec struct { + DynamicData + + IpAddress string `xml:"ipAddress"` + PrefixLength int32 `xml:"prefixLength"` + Operation string `xml:"operation"` +} + +func init() { + t["NetIpConfigSpecIpAddressSpec"] = reflect.TypeOf((*NetIpConfigSpecIpAddressSpec)(nil)).Elem() +} + +type NetIpRouteConfigInfo struct { + DynamicData + + IpRoute []NetIpRouteConfigInfoIpRoute `xml:"ipRoute,omitempty"` +} + +func init() { + t["NetIpRouteConfigInfo"] = reflect.TypeOf((*NetIpRouteConfigInfo)(nil)).Elem() +} + +type NetIpRouteConfigInfoGateway struct { + DynamicData + + IpAddress string `xml:"ipAddress,omitempty"` + Device string `xml:"device,omitempty"` +} + +func init() { + t["NetIpRouteConfigInfoGateway"] = reflect.TypeOf((*NetIpRouteConfigInfoGateway)(nil)).Elem() +} + +type NetIpRouteConfigInfoIpRoute struct { + DynamicData + + Network string `xml:"network"` + PrefixLength int32 `xml:"prefixLength"` + Gateway NetIpRouteConfigInfoGateway `xml:"gateway"` +} + +func init() { + t["NetIpRouteConfigInfoIpRoute"] = reflect.TypeOf((*NetIpRouteConfigInfoIpRoute)(nil)).Elem() +} + +type NetIpRouteConfigSpec struct { + DynamicData + + IpRoute []NetIpRouteConfigSpecIpRouteSpec `xml:"ipRoute,omitempty"` +} + +func init() { + t["NetIpRouteConfigSpec"] = reflect.TypeOf((*NetIpRouteConfigSpec)(nil)).Elem() +} + +type NetIpRouteConfigSpecGatewaySpec struct { + DynamicData + + IpAddress string `xml:"ipAddress,omitempty"` + Device string `xml:"device,omitempty"` +} + +func init() { + t["NetIpRouteConfigSpecGatewaySpec"] = reflect.TypeOf((*NetIpRouteConfigSpecGatewaySpec)(nil)).Elem() +} + +type NetIpRouteConfigSpecIpRouteSpec struct { + DynamicData + + Network string `xml:"network"` + PrefixLength int32 `xml:"prefixLength"` + Gateway NetIpRouteConfigSpecGatewaySpec `xml:"gateway"` + Operation string `xml:"operation"` +} + +func init() { + t["NetIpRouteConfigSpecIpRouteSpec"] = reflect.TypeOf((*NetIpRouteConfigSpecIpRouteSpec)(nil)).Elem() +} + +type NetIpStackInfo struct { + DynamicData + + Neighbor []NetIpStackInfoNetToMedia `xml:"neighbor,omitempty"` + DefaultRouter []NetIpStackInfoDefaultRouter `xml:"defaultRouter,omitempty"` +} + +func init() { + t["NetIpStackInfo"] = reflect.TypeOf((*NetIpStackInfo)(nil)).Elem() +} + +type NetIpStackInfoDefaultRouter struct { + DynamicData + + IpAddress string `xml:"ipAddress"` + Device string `xml:"device"` + Lifetime time.Time `xml:"lifetime"` + Preference string `xml:"preference"` +} + +func init() { + t["NetIpStackInfoDefaultRouter"] = reflect.TypeOf((*NetIpStackInfoDefaultRouter)(nil)).Elem() +} + +type NetIpStackInfoNetToMedia struct { + DynamicData + + IpAddress string `xml:"ipAddress"` + PhysicalAddress string `xml:"physicalAddress"` + Device string `xml:"device"` + Type string `xml:"type"` +} + +func init() { + t["NetIpStackInfoNetToMedia"] = reflect.TypeOf((*NetIpStackInfoNetToMedia)(nil)).Elem() +} + +type NetStackInstanceProfile struct { + ApplyProfile + + Key string `xml:"key"` + DnsConfig NetworkProfileDnsConfigProfile `xml:"dnsConfig"` + IpRouteConfig IpRouteProfile `xml:"ipRouteConfig"` +} + +func init() { + t["NetStackInstanceProfile"] = reflect.TypeOf((*NetStackInstanceProfile)(nil)).Elem() +} + +type NetworkCopyFault struct { + FileFault +} + +func init() { + t["NetworkCopyFault"] = reflect.TypeOf((*NetworkCopyFault)(nil)).Elem() +} + +type NetworkCopyFaultFault NetworkCopyFault + +func init() { + t["NetworkCopyFaultFault"] = reflect.TypeOf((*NetworkCopyFaultFault)(nil)).Elem() +} + +type NetworkDisruptedAndConfigRolledBack struct { + VimFault + + Host string `xml:"host"` +} + +func init() { + t["NetworkDisruptedAndConfigRolledBack"] = reflect.TypeOf((*NetworkDisruptedAndConfigRolledBack)(nil)).Elem() +} + +type NetworkDisruptedAndConfigRolledBackFault NetworkDisruptedAndConfigRolledBack + +func init() { + t["NetworkDisruptedAndConfigRolledBackFault"] = reflect.TypeOf((*NetworkDisruptedAndConfigRolledBackFault)(nil)).Elem() +} + +type NetworkEventArgument struct { + EntityEventArgument + + Network ManagedObjectReference `xml:"network"` +} + +func init() { + t["NetworkEventArgument"] = reflect.TypeOf((*NetworkEventArgument)(nil)).Elem() +} + +type NetworkInaccessible struct { + NasConfigFault +} + +func init() { + t["NetworkInaccessible"] = reflect.TypeOf((*NetworkInaccessible)(nil)).Elem() +} + +type NetworkInaccessibleFault NetworkInaccessible + +func init() { + t["NetworkInaccessibleFault"] = reflect.TypeOf((*NetworkInaccessibleFault)(nil)).Elem() +} + +type NetworkPolicyProfile struct { + ApplyProfile +} + +func init() { + t["NetworkPolicyProfile"] = reflect.TypeOf((*NetworkPolicyProfile)(nil)).Elem() +} + +type NetworkProfile struct { + ApplyProfile + + Vswitch []VirtualSwitchProfile `xml:"vswitch,omitempty"` + VmPortGroup []VmPortGroupProfile `xml:"vmPortGroup,omitempty"` + HostPortGroup []HostPortGroupProfile `xml:"hostPortGroup,omitempty"` + ServiceConsolePortGroup []ServiceConsolePortGroupProfile `xml:"serviceConsolePortGroup,omitempty"` + DnsConfig *NetworkProfileDnsConfigProfile `xml:"dnsConfig,omitempty"` + IpRouteConfig *IpRouteProfile `xml:"ipRouteConfig,omitempty"` + ConsoleIpRouteConfig *IpRouteProfile `xml:"consoleIpRouteConfig,omitempty"` + Pnic []PhysicalNicProfile `xml:"pnic,omitempty"` + Dvswitch []DvsProfile `xml:"dvswitch,omitempty"` + DvsServiceConsoleNic []DvsServiceConsoleVNicProfile `xml:"dvsServiceConsoleNic,omitempty"` + DvsHostNic []DvsHostVNicProfile `xml:"dvsHostNic,omitempty"` + NsxHostNic []NsxHostVNicProfile `xml:"nsxHostNic,omitempty"` + NetStackInstance []NetStackInstanceProfile `xml:"netStackInstance,omitempty"` + OpaqueSwitch *OpaqueSwitchProfile `xml:"opaqueSwitch,omitempty"` +} + +func init() { + t["NetworkProfile"] = reflect.TypeOf((*NetworkProfile)(nil)).Elem() +} + +type NetworkProfileDnsConfigProfile struct { + ApplyProfile +} + +func init() { + t["NetworkProfileDnsConfigProfile"] = reflect.TypeOf((*NetworkProfileDnsConfigProfile)(nil)).Elem() +} + +type NetworkRollbackEvent struct { + Event + + MethodName string `xml:"methodName"` + TransactionId string `xml:"transactionId"` +} + +func init() { + t["NetworkRollbackEvent"] = reflect.TypeOf((*NetworkRollbackEvent)(nil)).Elem() +} + +type NetworkSummary struct { + DynamicData + + Network *ManagedObjectReference `xml:"network,omitempty"` + Name string `xml:"name"` + Accessible bool `xml:"accessible"` + IpPoolName string `xml:"ipPoolName"` + IpPoolId int32 `xml:"ipPoolId,omitempty"` +} + +func init() { + t["NetworkSummary"] = reflect.TypeOf((*NetworkSummary)(nil)).Elem() +} + +type NetworksMayNotBeTheSame struct { + MigrationFault + + Name string `xml:"name,omitempty"` +} + +func init() { + t["NetworksMayNotBeTheSame"] = reflect.TypeOf((*NetworksMayNotBeTheSame)(nil)).Elem() +} + +type NetworksMayNotBeTheSameFault NetworksMayNotBeTheSame + +func init() { + t["NetworksMayNotBeTheSameFault"] = reflect.TypeOf((*NetworksMayNotBeTheSameFault)(nil)).Elem() +} + +type NicSettingMismatch struct { + CustomizationFault + + NumberOfNicsInSpec int32 `xml:"numberOfNicsInSpec"` + NumberOfNicsInVM int32 `xml:"numberOfNicsInVM"` +} + +func init() { + t["NicSettingMismatch"] = reflect.TypeOf((*NicSettingMismatch)(nil)).Elem() +} + +type NicSettingMismatchFault NicSettingMismatch + +func init() { + t["NicSettingMismatchFault"] = reflect.TypeOf((*NicSettingMismatchFault)(nil)).Elem() +} + +type NoAccessUserEvent struct { + SessionEvent + + IpAddress string `xml:"ipAddress"` +} + +func init() { + t["NoAccessUserEvent"] = reflect.TypeOf((*NoAccessUserEvent)(nil)).Elem() +} + +type NoActiveHostInCluster struct { + InvalidState + + ComputeResource ManagedObjectReference `xml:"computeResource"` +} + +func init() { + t["NoActiveHostInCluster"] = reflect.TypeOf((*NoActiveHostInCluster)(nil)).Elem() +} + +type NoActiveHostInClusterFault NoActiveHostInCluster + +func init() { + t["NoActiveHostInClusterFault"] = reflect.TypeOf((*NoActiveHostInClusterFault)(nil)).Elem() +} + +type NoAvailableIp struct { + VAppPropertyFault + + Network ManagedObjectReference `xml:"network"` +} + +func init() { + t["NoAvailableIp"] = reflect.TypeOf((*NoAvailableIp)(nil)).Elem() +} + +type NoAvailableIpFault NoAvailableIp + +func init() { + t["NoAvailableIpFault"] = reflect.TypeOf((*NoAvailableIpFault)(nil)).Elem() +} + +type NoClientCertificate struct { + VimFault +} + +func init() { + t["NoClientCertificate"] = reflect.TypeOf((*NoClientCertificate)(nil)).Elem() +} + +type NoClientCertificateFault NoClientCertificate + +func init() { + t["NoClientCertificateFault"] = reflect.TypeOf((*NoClientCertificateFault)(nil)).Elem() +} + +type NoCompatibleDatastore struct { + VimFault +} + +func init() { + t["NoCompatibleDatastore"] = reflect.TypeOf((*NoCompatibleDatastore)(nil)).Elem() +} + +type NoCompatibleDatastoreFault NoCompatibleDatastore + +func init() { + t["NoCompatibleDatastoreFault"] = reflect.TypeOf((*NoCompatibleDatastoreFault)(nil)).Elem() +} + +type NoCompatibleHardAffinityHost struct { + VmConfigFault + + VmName string `xml:"vmName"` +} + +func init() { + t["NoCompatibleHardAffinityHost"] = reflect.TypeOf((*NoCompatibleHardAffinityHost)(nil)).Elem() +} + +type NoCompatibleHardAffinityHostFault NoCompatibleHardAffinityHost + +func init() { + t["NoCompatibleHardAffinityHostFault"] = reflect.TypeOf((*NoCompatibleHardAffinityHostFault)(nil)).Elem() +} + +type NoCompatibleHost struct { + VimFault + + Host []ManagedObjectReference `xml:"host,omitempty"` + Error []LocalizedMethodFault `xml:"error,omitempty"` +} + +func init() { + t["NoCompatibleHost"] = reflect.TypeOf((*NoCompatibleHost)(nil)).Elem() +} + +type NoCompatibleHostFault BaseNoCompatibleHost + +func init() { + t["NoCompatibleHostFault"] = reflect.TypeOf((*NoCompatibleHostFault)(nil)).Elem() +} + +type NoCompatibleHostWithAccessToDevice struct { + NoCompatibleHost +} + +func init() { + t["NoCompatibleHostWithAccessToDevice"] = reflect.TypeOf((*NoCompatibleHostWithAccessToDevice)(nil)).Elem() +} + +type NoCompatibleHostWithAccessToDeviceFault NoCompatibleHostWithAccessToDevice + +func init() { + t["NoCompatibleHostWithAccessToDeviceFault"] = reflect.TypeOf((*NoCompatibleHostWithAccessToDeviceFault)(nil)).Elem() +} + +type NoCompatibleSoftAffinityHost struct { + VmConfigFault + + VmName string `xml:"vmName"` +} + +func init() { + t["NoCompatibleSoftAffinityHost"] = reflect.TypeOf((*NoCompatibleSoftAffinityHost)(nil)).Elem() +} + +type NoCompatibleSoftAffinityHostFault NoCompatibleSoftAffinityHost + +func init() { + t["NoCompatibleSoftAffinityHostFault"] = reflect.TypeOf((*NoCompatibleSoftAffinityHostFault)(nil)).Elem() +} + +type NoConnectedDatastore struct { + VimFault +} + +func init() { + t["NoConnectedDatastore"] = reflect.TypeOf((*NoConnectedDatastore)(nil)).Elem() +} + +type NoConnectedDatastoreFault NoConnectedDatastore + +func init() { + t["NoConnectedDatastoreFault"] = reflect.TypeOf((*NoConnectedDatastoreFault)(nil)).Elem() +} + +type NoDatastoresConfiguredEvent struct { + HostEvent +} + +func init() { + t["NoDatastoresConfiguredEvent"] = reflect.TypeOf((*NoDatastoresConfiguredEvent)(nil)).Elem() +} + +type NoDiskFound struct { + VimFault +} + +func init() { + t["NoDiskFound"] = reflect.TypeOf((*NoDiskFound)(nil)).Elem() +} + +type NoDiskFoundFault NoDiskFound + +func init() { + t["NoDiskFoundFault"] = reflect.TypeOf((*NoDiskFoundFault)(nil)).Elem() +} + +type NoDiskSpace struct { + FileFault + + Datastore string `xml:"datastore"` +} + +func init() { + t["NoDiskSpace"] = reflect.TypeOf((*NoDiskSpace)(nil)).Elem() +} + +type NoDiskSpaceFault NoDiskSpace + +func init() { + t["NoDiskSpaceFault"] = reflect.TypeOf((*NoDiskSpaceFault)(nil)).Elem() +} + +type NoDisksToCustomize struct { + CustomizationFault +} + +func init() { + t["NoDisksToCustomize"] = reflect.TypeOf((*NoDisksToCustomize)(nil)).Elem() +} + +type NoDisksToCustomizeFault NoDisksToCustomize + +func init() { + t["NoDisksToCustomizeFault"] = reflect.TypeOf((*NoDisksToCustomizeFault)(nil)).Elem() +} + +type NoGateway struct { + HostConfigFault +} + +func init() { + t["NoGateway"] = reflect.TypeOf((*NoGateway)(nil)).Elem() +} + +type NoGatewayFault NoGateway + +func init() { + t["NoGatewayFault"] = reflect.TypeOf((*NoGatewayFault)(nil)).Elem() +} + +type NoGuestHeartbeat struct { + MigrationFault +} + +func init() { + t["NoGuestHeartbeat"] = reflect.TypeOf((*NoGuestHeartbeat)(nil)).Elem() +} + +type NoGuestHeartbeatFault NoGuestHeartbeat + +func init() { + t["NoGuestHeartbeatFault"] = reflect.TypeOf((*NoGuestHeartbeatFault)(nil)).Elem() +} + +type NoHost struct { + HostConnectFault + + Name string `xml:"name,omitempty"` +} + +func init() { + t["NoHost"] = reflect.TypeOf((*NoHost)(nil)).Elem() +} + +type NoHostFault NoHost + +func init() { + t["NoHostFault"] = reflect.TypeOf((*NoHostFault)(nil)).Elem() +} + +type NoHostSuitableForFtSecondary struct { + VmFaultToleranceIssue + + Vm ManagedObjectReference `xml:"vm"` + VmName string `xml:"vmName"` +} + +func init() { + t["NoHostSuitableForFtSecondary"] = reflect.TypeOf((*NoHostSuitableForFtSecondary)(nil)).Elem() +} + +type NoHostSuitableForFtSecondaryFault NoHostSuitableForFtSecondary + +func init() { + t["NoHostSuitableForFtSecondaryFault"] = reflect.TypeOf((*NoHostSuitableForFtSecondaryFault)(nil)).Elem() +} + +type NoLicenseEvent struct { + LicenseEvent + + Feature LicenseFeatureInfo `xml:"feature"` +} + +func init() { + t["NoLicenseEvent"] = reflect.TypeOf((*NoLicenseEvent)(nil)).Elem() +} + +type NoLicenseServerConfigured struct { + NotEnoughLicenses +} + +func init() { + t["NoLicenseServerConfigured"] = reflect.TypeOf((*NoLicenseServerConfigured)(nil)).Elem() +} + +type NoLicenseServerConfiguredFault NoLicenseServerConfigured + +func init() { + t["NoLicenseServerConfiguredFault"] = reflect.TypeOf((*NoLicenseServerConfiguredFault)(nil)).Elem() +} + +type NoMaintenanceModeDrsRecommendationForVM struct { + VmEvent +} + +func init() { + t["NoMaintenanceModeDrsRecommendationForVM"] = reflect.TypeOf((*NoMaintenanceModeDrsRecommendationForVM)(nil)).Elem() +} + +type NoPeerHostFound struct { + HostPowerOpFailed +} + +func init() { + t["NoPeerHostFound"] = reflect.TypeOf((*NoPeerHostFound)(nil)).Elem() +} + +type NoPeerHostFoundFault NoPeerHostFound + +func init() { + t["NoPeerHostFoundFault"] = reflect.TypeOf((*NoPeerHostFoundFault)(nil)).Elem() +} + +type NoPermission struct { + SecurityError + + Object ManagedObjectReference `xml:"object"` + PrivilegeId string `xml:"privilegeId"` +} + +func init() { + t["NoPermission"] = reflect.TypeOf((*NoPermission)(nil)).Elem() +} + +type NoPermissionFault BaseNoPermission + +func init() { + t["NoPermissionFault"] = reflect.TypeOf((*NoPermissionFault)(nil)).Elem() +} + +type NoPermissionOnAD struct { + ActiveDirectoryFault +} + +func init() { + t["NoPermissionOnAD"] = reflect.TypeOf((*NoPermissionOnAD)(nil)).Elem() +} + +type NoPermissionOnADFault NoPermissionOnAD + +func init() { + t["NoPermissionOnADFault"] = reflect.TypeOf((*NoPermissionOnADFault)(nil)).Elem() +} + +type NoPermissionOnHost struct { + HostConnectFault +} + +func init() { + t["NoPermissionOnHost"] = reflect.TypeOf((*NoPermissionOnHost)(nil)).Elem() +} + +type NoPermissionOnHostFault NoPermissionOnHost + +func init() { + t["NoPermissionOnHostFault"] = reflect.TypeOf((*NoPermissionOnHostFault)(nil)).Elem() +} + +type NoPermissionOnNasVolume struct { + NasConfigFault + + UserName string `xml:"userName,omitempty"` +} + +func init() { + t["NoPermissionOnNasVolume"] = reflect.TypeOf((*NoPermissionOnNasVolume)(nil)).Elem() +} + +type NoPermissionOnNasVolumeFault NoPermissionOnNasVolume + +func init() { + t["NoPermissionOnNasVolumeFault"] = reflect.TypeOf((*NoPermissionOnNasVolumeFault)(nil)).Elem() +} + +type NoSubjectName struct { + VimFault +} + +func init() { + t["NoSubjectName"] = reflect.TypeOf((*NoSubjectName)(nil)).Elem() +} + +type NoSubjectNameFault NoSubjectName + +func init() { + t["NoSubjectNameFault"] = reflect.TypeOf((*NoSubjectNameFault)(nil)).Elem() +} + +type NoVcManagedIpConfigured struct { + VAppPropertyFault +} + +func init() { + t["NoVcManagedIpConfigured"] = reflect.TypeOf((*NoVcManagedIpConfigured)(nil)).Elem() +} + +type NoVcManagedIpConfiguredFault NoVcManagedIpConfigured + +func init() { + t["NoVcManagedIpConfiguredFault"] = reflect.TypeOf((*NoVcManagedIpConfiguredFault)(nil)).Elem() +} + +type NoVirtualNic struct { + HostConfigFault +} + +func init() { + t["NoVirtualNic"] = reflect.TypeOf((*NoVirtualNic)(nil)).Elem() +} + +type NoVirtualNicFault NoVirtualNic + +func init() { + t["NoVirtualNicFault"] = reflect.TypeOf((*NoVirtualNicFault)(nil)).Elem() +} + +type NoVmInVApp struct { + VAppConfigFault +} + +func init() { + t["NoVmInVApp"] = reflect.TypeOf((*NoVmInVApp)(nil)).Elem() +} + +type NoVmInVAppFault NoVmInVApp + +func init() { + t["NoVmInVAppFault"] = reflect.TypeOf((*NoVmInVAppFault)(nil)).Elem() +} + +type NodeDeploymentSpec struct { + DynamicData + + EsxHost *ManagedObjectReference `xml:"esxHost,omitempty"` + Datastore *ManagedObjectReference `xml:"datastore,omitempty"` + PublicNetworkPortGroup *ManagedObjectReference `xml:"publicNetworkPortGroup,omitempty"` + ClusterNetworkPortGroup *ManagedObjectReference `xml:"clusterNetworkPortGroup,omitempty"` + Folder ManagedObjectReference `xml:"folder"` + ResourcePool *ManagedObjectReference `xml:"resourcePool,omitempty"` + ManagementVc *ServiceLocator `xml:"managementVc,omitempty"` + NodeName string `xml:"nodeName"` + IpSettings CustomizationIPSettings `xml:"ipSettings"` +} + +func init() { + t["NodeDeploymentSpec"] = reflect.TypeOf((*NodeDeploymentSpec)(nil)).Elem() +} + +type NodeNetworkSpec struct { + DynamicData + + IpSettings CustomizationIPSettings `xml:"ipSettings"` +} + +func init() { + t["NodeNetworkSpec"] = reflect.TypeOf((*NodeNetworkSpec)(nil)).Elem() +} + +type NonADUserRequired struct { + ActiveDirectoryFault +} + +func init() { + t["NonADUserRequired"] = reflect.TypeOf((*NonADUserRequired)(nil)).Elem() +} + +type NonADUserRequiredFault NonADUserRequired + +func init() { + t["NonADUserRequiredFault"] = reflect.TypeOf((*NonADUserRequiredFault)(nil)).Elem() +} + +type NonHomeRDMVMotionNotSupported struct { + MigrationFeatureNotSupported + + Device string `xml:"device"` +} + +func init() { + t["NonHomeRDMVMotionNotSupported"] = reflect.TypeOf((*NonHomeRDMVMotionNotSupported)(nil)).Elem() +} + +type NonHomeRDMVMotionNotSupportedFault NonHomeRDMVMotionNotSupported + +func init() { + t["NonHomeRDMVMotionNotSupportedFault"] = reflect.TypeOf((*NonHomeRDMVMotionNotSupportedFault)(nil)).Elem() +} + +type NonPersistentDisksNotSupported struct { + DeviceNotSupported +} + +func init() { + t["NonPersistentDisksNotSupported"] = reflect.TypeOf((*NonPersistentDisksNotSupported)(nil)).Elem() +} + +type NonPersistentDisksNotSupportedFault NonPersistentDisksNotSupported + +func init() { + t["NonPersistentDisksNotSupportedFault"] = reflect.TypeOf((*NonPersistentDisksNotSupportedFault)(nil)).Elem() +} + +type NonVIWorkloadDetectedOnDatastoreEvent struct { + DatastoreEvent +} + +func init() { + t["NonVIWorkloadDetectedOnDatastoreEvent"] = reflect.TypeOf((*NonVIWorkloadDetectedOnDatastoreEvent)(nil)).Elem() +} + +type NonVmwareOuiMacNotSupportedHost struct { + NotSupportedHost + + HostName string `xml:"hostName"` +} + +func init() { + t["NonVmwareOuiMacNotSupportedHost"] = reflect.TypeOf((*NonVmwareOuiMacNotSupportedHost)(nil)).Elem() +} + +type NonVmwareOuiMacNotSupportedHostFault NonVmwareOuiMacNotSupportedHost + +func init() { + t["NonVmwareOuiMacNotSupportedHostFault"] = reflect.TypeOf((*NonVmwareOuiMacNotSupportedHostFault)(nil)).Elem() +} + +type NotADirectory struct { + FileFault +} + +func init() { + t["NotADirectory"] = reflect.TypeOf((*NotADirectory)(nil)).Elem() +} + +type NotADirectoryFault NotADirectory + +func init() { + t["NotADirectoryFault"] = reflect.TypeOf((*NotADirectoryFault)(nil)).Elem() +} + +type NotAFile struct { + FileFault +} + +func init() { + t["NotAFile"] = reflect.TypeOf((*NotAFile)(nil)).Elem() +} + +type NotAFileFault NotAFile + +func init() { + t["NotAFileFault"] = reflect.TypeOf((*NotAFileFault)(nil)).Elem() +} + +type NotAuthenticated struct { + NoPermission +} + +func init() { + t["NotAuthenticated"] = reflect.TypeOf((*NotAuthenticated)(nil)).Elem() +} + +type NotAuthenticatedFault NotAuthenticated + +func init() { + t["NotAuthenticatedFault"] = reflect.TypeOf((*NotAuthenticatedFault)(nil)).Elem() +} + +type NotEnoughCpus struct { + VirtualHardwareCompatibilityIssue + + NumCpuDest int32 `xml:"numCpuDest"` + NumCpuVm int32 `xml:"numCpuVm"` +} + +func init() { + t["NotEnoughCpus"] = reflect.TypeOf((*NotEnoughCpus)(nil)).Elem() +} + +type NotEnoughCpusFault BaseNotEnoughCpus + +func init() { + t["NotEnoughCpusFault"] = reflect.TypeOf((*NotEnoughCpusFault)(nil)).Elem() +} + +type NotEnoughLicenses struct { + RuntimeFault +} + +func init() { + t["NotEnoughLicenses"] = reflect.TypeOf((*NotEnoughLicenses)(nil)).Elem() +} + +type NotEnoughLicensesFault BaseNotEnoughLicenses + +func init() { + t["NotEnoughLicensesFault"] = reflect.TypeOf((*NotEnoughLicensesFault)(nil)).Elem() +} + +type NotEnoughLogicalCpus struct { + NotEnoughCpus + + Host *ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["NotEnoughLogicalCpus"] = reflect.TypeOf((*NotEnoughLogicalCpus)(nil)).Elem() +} + +type NotEnoughLogicalCpusFault NotEnoughLogicalCpus + +func init() { + t["NotEnoughLogicalCpusFault"] = reflect.TypeOf((*NotEnoughLogicalCpusFault)(nil)).Elem() +} + +type NotEnoughResourcesToStartVmEvent struct { + VmEvent + + Reason string `xml:"reason,omitempty"` +} + +func init() { + t["NotEnoughResourcesToStartVmEvent"] = reflect.TypeOf((*NotEnoughResourcesToStartVmEvent)(nil)).Elem() +} + +type NotFound struct { + VimFault +} + +func init() { + t["NotFound"] = reflect.TypeOf((*NotFound)(nil)).Elem() +} + +type NotFoundFault NotFound + +func init() { + t["NotFoundFault"] = reflect.TypeOf((*NotFoundFault)(nil)).Elem() +} + +type NotImplemented struct { + RuntimeFault +} + +func init() { + t["NotImplemented"] = reflect.TypeOf((*NotImplemented)(nil)).Elem() +} + +type NotImplementedFault NotImplemented + +func init() { + t["NotImplementedFault"] = reflect.TypeOf((*NotImplementedFault)(nil)).Elem() +} + +type NotSupported struct { + RuntimeFault +} + +func init() { + t["NotSupported"] = reflect.TypeOf((*NotSupported)(nil)).Elem() +} + +type NotSupportedDeviceForFT struct { + VmFaultToleranceIssue + + Host ManagedObjectReference `xml:"host"` + HostName string `xml:"hostName,omitempty"` + Vm ManagedObjectReference `xml:"vm"` + VmName string `xml:"vmName,omitempty"` + DeviceType string `xml:"deviceType"` + DeviceLabel string `xml:"deviceLabel,omitempty"` +} + +func init() { + t["NotSupportedDeviceForFT"] = reflect.TypeOf((*NotSupportedDeviceForFT)(nil)).Elem() +} + +type NotSupportedDeviceForFTFault NotSupportedDeviceForFT + +func init() { + t["NotSupportedDeviceForFTFault"] = reflect.TypeOf((*NotSupportedDeviceForFTFault)(nil)).Elem() +} + +type NotSupportedFault BaseNotSupported + +func init() { + t["NotSupportedFault"] = reflect.TypeOf((*NotSupportedFault)(nil)).Elem() +} + +type NotSupportedHost struct { + HostConnectFault + + ProductName string `xml:"productName,omitempty"` + ProductVersion string `xml:"productVersion,omitempty"` +} + +func init() { + t["NotSupportedHost"] = reflect.TypeOf((*NotSupportedHost)(nil)).Elem() +} + +type NotSupportedHostFault BaseNotSupportedHost + +func init() { + t["NotSupportedHostFault"] = reflect.TypeOf((*NotSupportedHostFault)(nil)).Elem() +} + +type NotSupportedHostForChecksum struct { + VimFault +} + +func init() { + t["NotSupportedHostForChecksum"] = reflect.TypeOf((*NotSupportedHostForChecksum)(nil)).Elem() +} + +type NotSupportedHostForChecksumFault NotSupportedHostForChecksum + +func init() { + t["NotSupportedHostForChecksumFault"] = reflect.TypeOf((*NotSupportedHostForChecksumFault)(nil)).Elem() +} + +type NotSupportedHostForVFlash struct { + NotSupportedHost + + HostName string `xml:"hostName"` +} + +func init() { + t["NotSupportedHostForVFlash"] = reflect.TypeOf((*NotSupportedHostForVFlash)(nil)).Elem() +} + +type NotSupportedHostForVFlashFault NotSupportedHostForVFlash + +func init() { + t["NotSupportedHostForVFlashFault"] = reflect.TypeOf((*NotSupportedHostForVFlashFault)(nil)).Elem() +} + +type NotSupportedHostForVmcp struct { + NotSupportedHost + + HostName string `xml:"hostName"` +} + +func init() { + t["NotSupportedHostForVmcp"] = reflect.TypeOf((*NotSupportedHostForVmcp)(nil)).Elem() +} + +type NotSupportedHostForVmcpFault NotSupportedHostForVmcp + +func init() { + t["NotSupportedHostForVmcpFault"] = reflect.TypeOf((*NotSupportedHostForVmcpFault)(nil)).Elem() +} + +type NotSupportedHostForVmemFile struct { + NotSupportedHost + + HostName string `xml:"hostName"` +} + +func init() { + t["NotSupportedHostForVmemFile"] = reflect.TypeOf((*NotSupportedHostForVmemFile)(nil)).Elem() +} + +type NotSupportedHostForVmemFileFault NotSupportedHostForVmemFile + +func init() { + t["NotSupportedHostForVmemFileFault"] = reflect.TypeOf((*NotSupportedHostForVmemFileFault)(nil)).Elem() +} + +type NotSupportedHostForVsan struct { + NotSupportedHost + + HostName string `xml:"hostName"` +} + +func init() { + t["NotSupportedHostForVsan"] = reflect.TypeOf((*NotSupportedHostForVsan)(nil)).Elem() +} + +type NotSupportedHostForVsanFault NotSupportedHostForVsan + +func init() { + t["NotSupportedHostForVsanFault"] = reflect.TypeOf((*NotSupportedHostForVsanFault)(nil)).Elem() +} + +type NotSupportedHostInCluster struct { + NotSupportedHost +} + +func init() { + t["NotSupportedHostInCluster"] = reflect.TypeOf((*NotSupportedHostInCluster)(nil)).Elem() +} + +type NotSupportedHostInClusterFault BaseNotSupportedHostInCluster + +func init() { + t["NotSupportedHostInClusterFault"] = reflect.TypeOf((*NotSupportedHostInClusterFault)(nil)).Elem() +} + +type NotSupportedHostInDvs struct { + NotSupportedHost + + SwitchProductSpec DistributedVirtualSwitchProductSpec `xml:"switchProductSpec"` +} + +func init() { + t["NotSupportedHostInDvs"] = reflect.TypeOf((*NotSupportedHostInDvs)(nil)).Elem() +} + +type NotSupportedHostInDvsFault NotSupportedHostInDvs + +func init() { + t["NotSupportedHostInDvsFault"] = reflect.TypeOf((*NotSupportedHostInDvsFault)(nil)).Elem() +} + +type NotSupportedHostInHACluster struct { + NotSupportedHost + + HostName string `xml:"hostName"` + Build string `xml:"build"` +} + +func init() { + t["NotSupportedHostInHACluster"] = reflect.TypeOf((*NotSupportedHostInHACluster)(nil)).Elem() +} + +type NotSupportedHostInHAClusterFault NotSupportedHostInHACluster + +func init() { + t["NotSupportedHostInHAClusterFault"] = reflect.TypeOf((*NotSupportedHostInHAClusterFault)(nil)).Elem() +} + +type NotUserConfigurableProperty struct { + VAppPropertyFault +} + +func init() { + t["NotUserConfigurableProperty"] = reflect.TypeOf((*NotUserConfigurableProperty)(nil)).Elem() +} + +type NotUserConfigurablePropertyFault NotUserConfigurableProperty + +func init() { + t["NotUserConfigurablePropertyFault"] = reflect.TypeOf((*NotUserConfigurablePropertyFault)(nil)).Elem() +} + +type NsxHostVNicProfile struct { + ApplyProfile + + Key string `xml:"key"` + IpConfig IpAddressProfile `xml:"ipConfig"` +} + +func init() { + t["NsxHostVNicProfile"] = reflect.TypeOf((*NsxHostVNicProfile)(nil)).Elem() +} + +type NumPortsProfile struct { + ApplyProfile +} + +func init() { + t["NumPortsProfile"] = reflect.TypeOf((*NumPortsProfile)(nil)).Elem() +} + +type NumVirtualCoresPerSocketNotSupported struct { + VirtualHardwareCompatibilityIssue + + MaxSupportedCoresPerSocketDest int32 `xml:"maxSupportedCoresPerSocketDest"` + NumCoresPerSocketVm int32 `xml:"numCoresPerSocketVm"` +} + +func init() { + t["NumVirtualCoresPerSocketNotSupported"] = reflect.TypeOf((*NumVirtualCoresPerSocketNotSupported)(nil)).Elem() +} + +type NumVirtualCoresPerSocketNotSupportedFault NumVirtualCoresPerSocketNotSupported + +func init() { + t["NumVirtualCoresPerSocketNotSupportedFault"] = reflect.TypeOf((*NumVirtualCoresPerSocketNotSupportedFault)(nil)).Elem() +} + +type NumVirtualCpusExceedsLimit struct { + InsufficientResourcesFault + + MaxSupportedVcpus int32 `xml:"maxSupportedVcpus"` +} + +func init() { + t["NumVirtualCpusExceedsLimit"] = reflect.TypeOf((*NumVirtualCpusExceedsLimit)(nil)).Elem() +} + +type NumVirtualCpusExceedsLimitFault NumVirtualCpusExceedsLimit + +func init() { + t["NumVirtualCpusExceedsLimitFault"] = reflect.TypeOf((*NumVirtualCpusExceedsLimitFault)(nil)).Elem() +} + +type NumVirtualCpusIncompatible struct { + VmConfigFault + + Reason string `xml:"reason"` + NumCpu int32 `xml:"numCpu"` +} + +func init() { + t["NumVirtualCpusIncompatible"] = reflect.TypeOf((*NumVirtualCpusIncompatible)(nil)).Elem() +} + +type NumVirtualCpusIncompatibleFault NumVirtualCpusIncompatible + +func init() { + t["NumVirtualCpusIncompatibleFault"] = reflect.TypeOf((*NumVirtualCpusIncompatibleFault)(nil)).Elem() +} + +type NumVirtualCpusNotSupported struct { + VirtualHardwareCompatibilityIssue + + MaxSupportedVcpusDest int32 `xml:"maxSupportedVcpusDest"` + NumCpuVm int32 `xml:"numCpuVm"` +} + +func init() { + t["NumVirtualCpusNotSupported"] = reflect.TypeOf((*NumVirtualCpusNotSupported)(nil)).Elem() +} + +type NumVirtualCpusNotSupportedFault NumVirtualCpusNotSupported + +func init() { + t["NumVirtualCpusNotSupportedFault"] = reflect.TypeOf((*NumVirtualCpusNotSupportedFault)(nil)).Elem() +} + +type NumericRange struct { + DynamicData + + Start int32 `xml:"start"` + End int32 `xml:"end"` +} + +func init() { + t["NumericRange"] = reflect.TypeOf((*NumericRange)(nil)).Elem() +} + +type NvdimmDimmInfo struct { + DynamicData + + DimmHandle int32 `xml:"dimmHandle"` + HealthInfo NvdimmHealthInfo `xml:"healthInfo"` + TotalCapacity int64 `xml:"totalCapacity"` + PersistentCapacity int64 `xml:"persistentCapacity"` + AvailablePersistentCapacity int64 `xml:"availablePersistentCapacity"` + VolatileCapacity int64 `xml:"volatileCapacity"` + AvailableVolatileCapacity int64 `xml:"availableVolatileCapacity"` + BlockCapacity int64 `xml:"blockCapacity"` + RegionInfo []NvdimmRegionInfo `xml:"regionInfo,omitempty"` + RepresentationString string `xml:"representationString"` +} + +func init() { + t["NvdimmDimmInfo"] = reflect.TypeOf((*NvdimmDimmInfo)(nil)).Elem() +} + +type NvdimmGuid struct { + DynamicData + + Uuid string `xml:"uuid"` +} + +func init() { + t["NvdimmGuid"] = reflect.TypeOf((*NvdimmGuid)(nil)).Elem() +} + +type NvdimmHealthInfo struct { + DynamicData + + HealthStatus string `xml:"healthStatus"` + HealthInformation string `xml:"healthInformation"` + StateFlagInfo []string `xml:"stateFlagInfo,omitempty"` + DimmTemperature int32 `xml:"dimmTemperature"` + DimmTemperatureThreshold int32 `xml:"dimmTemperatureThreshold"` + SpareBlocksPercentage int32 `xml:"spareBlocksPercentage"` + SpareBlockThreshold int32 `xml:"spareBlockThreshold"` + DimmLifespanPercentage int32 `xml:"dimmLifespanPercentage"` + EsTemperature int32 `xml:"esTemperature,omitempty"` + EsTemperatureThreshold int32 `xml:"esTemperatureThreshold,omitempty"` + EsLifespanPercentage int32 `xml:"esLifespanPercentage,omitempty"` +} + +func init() { + t["NvdimmHealthInfo"] = reflect.TypeOf((*NvdimmHealthInfo)(nil)).Elem() +} + +type NvdimmInterleaveSetInfo struct { + DynamicData + + SetId int32 `xml:"setId"` + RangeType string `xml:"rangeType"` + BaseAddress int64 `xml:"baseAddress"` + Size int64 `xml:"size"` + AvailableSize int64 `xml:"availableSize"` + DeviceList []int32 `xml:"deviceList,omitempty"` + State string `xml:"state"` +} + +func init() { + t["NvdimmInterleaveSetInfo"] = reflect.TypeOf((*NvdimmInterleaveSetInfo)(nil)).Elem() +} + +type NvdimmNamespaceCreateSpec struct { + DynamicData + + FriendlyName string `xml:"friendlyName,omitempty"` + BlockSize int64 `xml:"blockSize"` + BlockCount int64 `xml:"blockCount"` + Type string `xml:"type"` + LocationID int32 `xml:"locationID"` +} + +func init() { + t["NvdimmNamespaceCreateSpec"] = reflect.TypeOf((*NvdimmNamespaceCreateSpec)(nil)).Elem() +} + +type NvdimmNamespaceDeleteSpec struct { + DynamicData + + Uuid string `xml:"uuid"` +} + +func init() { + t["NvdimmNamespaceDeleteSpec"] = reflect.TypeOf((*NvdimmNamespaceDeleteSpec)(nil)).Elem() +} + +type NvdimmNamespaceDetails struct { + DynamicData + + Uuid string `xml:"uuid"` + FriendlyName string `xml:"friendlyName"` + Size int64 `xml:"size"` + Type string `xml:"type"` + NamespaceHealthStatus string `xml:"namespaceHealthStatus"` + InterleavesetID int32 `xml:"interleavesetID"` + State string `xml:"state"` +} + +func init() { + t["NvdimmNamespaceDetails"] = reflect.TypeOf((*NvdimmNamespaceDetails)(nil)).Elem() +} + +type NvdimmNamespaceInfo struct { + DynamicData + + Uuid string `xml:"uuid"` + FriendlyName string `xml:"friendlyName"` + BlockSize int64 `xml:"blockSize"` + BlockCount int64 `xml:"blockCount"` + Type string `xml:"type"` + NamespaceHealthStatus string `xml:"namespaceHealthStatus"` + LocationID int32 `xml:"locationID"` + State string `xml:"state"` +} + +func init() { + t["NvdimmNamespaceInfo"] = reflect.TypeOf((*NvdimmNamespaceInfo)(nil)).Elem() +} + +type NvdimmPMemNamespaceCreateSpec struct { + DynamicData + + FriendlyName string `xml:"friendlyName,omitempty"` + Size int64 `xml:"size"` + InterleavesetID int32 `xml:"interleavesetID"` +} + +func init() { + t["NvdimmPMemNamespaceCreateSpec"] = reflect.TypeOf((*NvdimmPMemNamespaceCreateSpec)(nil)).Elem() +} + +type NvdimmRegionInfo struct { + DynamicData + + RegionId int32 `xml:"regionId"` + SetId int32 `xml:"setId"` + RangeType string `xml:"rangeType"` + StartAddr int64 `xml:"startAddr"` + Size int64 `xml:"size"` + Offset int64 `xml:"offset"` +} + +func init() { + t["NvdimmRegionInfo"] = reflect.TypeOf((*NvdimmRegionInfo)(nil)).Elem() +} + +type NvdimmSummary struct { + DynamicData + + NumDimms int32 `xml:"numDimms"` + HealthStatus string `xml:"healthStatus"` + TotalCapacity int64 `xml:"totalCapacity"` + PersistentCapacity int64 `xml:"persistentCapacity"` + BlockCapacity int64 `xml:"blockCapacity"` + AvailableCapacity int64 `xml:"availableCapacity"` + NumInterleavesets int32 `xml:"numInterleavesets"` + NumNamespaces int32 `xml:"numNamespaces"` +} + +func init() { + t["NvdimmSummary"] = reflect.TypeOf((*NvdimmSummary)(nil)).Elem() +} + +type NvdimmSystemInfo struct { + DynamicData + + Summary *NvdimmSummary `xml:"summary,omitempty"` + Dimms []int32 `xml:"dimms,omitempty"` + DimmInfo []NvdimmDimmInfo `xml:"dimmInfo,omitempty"` + InterleaveSet []int32 `xml:"interleaveSet,omitempty"` + ISetInfo []NvdimmInterleaveSetInfo `xml:"iSetInfo,omitempty"` + Namespace []NvdimmGuid `xml:"namespace,omitempty"` + NsInfo []NvdimmNamespaceInfo `xml:"nsInfo,omitempty"` + NsDetails []NvdimmNamespaceDetails `xml:"nsDetails,omitempty"` +} + +func init() { + t["NvdimmSystemInfo"] = reflect.TypeOf((*NvdimmSystemInfo)(nil)).Elem() +} + +type ObjectContent struct { + DynamicData + + Obj ManagedObjectReference `xml:"obj"` + PropSet []DynamicProperty `xml:"propSet,omitempty"` + MissingSet []MissingProperty `xml:"missingSet,omitempty"` +} + +func init() { + t["ObjectContent"] = reflect.TypeOf((*ObjectContent)(nil)).Elem() +} + +type ObjectSpec struct { + DynamicData + + Obj ManagedObjectReference `xml:"obj"` + Skip *bool `xml:"skip"` + SelectSet []BaseSelectionSpec `xml:"selectSet,omitempty,typeattr"` +} + +func init() { + t["ObjectSpec"] = reflect.TypeOf((*ObjectSpec)(nil)).Elem() +} + +type ObjectUpdate struct { + DynamicData + + Kind ObjectUpdateKind `xml:"kind"` + Obj ManagedObjectReference `xml:"obj"` + ChangeSet []PropertyChange `xml:"changeSet,omitempty"` + MissingSet []MissingProperty `xml:"missingSet,omitempty"` +} + +func init() { + t["ObjectUpdate"] = reflect.TypeOf((*ObjectUpdate)(nil)).Elem() +} + +type OnceTaskScheduler struct { + TaskScheduler + + RunAt *time.Time `xml:"runAt"` +} + +func init() { + t["OnceTaskScheduler"] = reflect.TypeOf((*OnceTaskScheduler)(nil)).Elem() +} + +type OpaqueNetworkCapability struct { + DynamicData + + NetworkReservationSupported bool `xml:"networkReservationSupported"` +} + +func init() { + t["OpaqueNetworkCapability"] = reflect.TypeOf((*OpaqueNetworkCapability)(nil)).Elem() +} + +type OpaqueNetworkSummary struct { + NetworkSummary + + OpaqueNetworkId string `xml:"opaqueNetworkId"` + OpaqueNetworkType string `xml:"opaqueNetworkType"` +} + +func init() { + t["OpaqueNetworkSummary"] = reflect.TypeOf((*OpaqueNetworkSummary)(nil)).Elem() +} + +type OpaqueNetworkTargetInfo struct { + VirtualMachineTargetInfo + + Network OpaqueNetworkSummary `xml:"network"` + NetworkReservationSupported *bool `xml:"networkReservationSupported"` +} + +func init() { + t["OpaqueNetworkTargetInfo"] = reflect.TypeOf((*OpaqueNetworkTargetInfo)(nil)).Elem() +} + +type OpaqueSwitchProfile struct { + ApplyProfile +} + +func init() { + t["OpaqueSwitchProfile"] = reflect.TypeOf((*OpaqueSwitchProfile)(nil)).Elem() +} + +type OpenInventoryViewFolder OpenInventoryViewFolderRequestType + +func init() { + t["OpenInventoryViewFolder"] = reflect.TypeOf((*OpenInventoryViewFolder)(nil)).Elem() +} + +type OpenInventoryViewFolderRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity []ManagedObjectReference `xml:"entity"` +} + +func init() { + t["OpenInventoryViewFolderRequestType"] = reflect.TypeOf((*OpenInventoryViewFolderRequestType)(nil)).Elem() +} + +type OpenInventoryViewFolderResponse struct { + Returnval []ManagedObjectReference `xml:"returnval,omitempty"` +} + +type OperationDisabledByGuest struct { + GuestOperationsFault +} + +func init() { + t["OperationDisabledByGuest"] = reflect.TypeOf((*OperationDisabledByGuest)(nil)).Elem() +} + +type OperationDisabledByGuestFault OperationDisabledByGuest + +func init() { + t["OperationDisabledByGuestFault"] = reflect.TypeOf((*OperationDisabledByGuestFault)(nil)).Elem() +} + +type OperationDisallowedOnHost struct { + RuntimeFault +} + +func init() { + t["OperationDisallowedOnHost"] = reflect.TypeOf((*OperationDisallowedOnHost)(nil)).Elem() +} + +type OperationDisallowedOnHostFault OperationDisallowedOnHost + +func init() { + t["OperationDisallowedOnHostFault"] = reflect.TypeOf((*OperationDisallowedOnHostFault)(nil)).Elem() +} + +type OperationNotSupportedByGuest struct { + GuestOperationsFault +} + +func init() { + t["OperationNotSupportedByGuest"] = reflect.TypeOf((*OperationNotSupportedByGuest)(nil)).Elem() +} + +type OperationNotSupportedByGuestFault OperationNotSupportedByGuest + +func init() { + t["OperationNotSupportedByGuestFault"] = reflect.TypeOf((*OperationNotSupportedByGuestFault)(nil)).Elem() +} + +type OptionDef struct { + ElementDescription + + OptionType BaseOptionType `xml:"optionType,typeattr"` +} + +func init() { + t["OptionDef"] = reflect.TypeOf((*OptionDef)(nil)).Elem() +} + +type OptionProfile struct { + ApplyProfile + + Key string `xml:"key"` +} + +func init() { + t["OptionProfile"] = reflect.TypeOf((*OptionProfile)(nil)).Elem() +} + +type OptionType struct { + DynamicData + + ValueIsReadonly *bool `xml:"valueIsReadonly"` +} + +func init() { + t["OptionType"] = reflect.TypeOf((*OptionType)(nil)).Elem() +} + +type OptionValue struct { + DynamicData + + Key string `xml:"key"` + Value AnyType `xml:"value,typeattr"` +} + +func init() { + t["OptionValue"] = reflect.TypeOf((*OptionValue)(nil)).Elem() +} + +type OrAlarmExpression struct { + AlarmExpression + + Expression []BaseAlarmExpression `xml:"expression,typeattr"` +} + +func init() { + t["OrAlarmExpression"] = reflect.TypeOf((*OrAlarmExpression)(nil)).Elem() +} + +type OutOfBounds struct { + VimFault + + ArgumentName string `xml:"argumentName"` +} + +func init() { + t["OutOfBounds"] = reflect.TypeOf((*OutOfBounds)(nil)).Elem() +} + +type OutOfBoundsFault OutOfBounds + +func init() { + t["OutOfBoundsFault"] = reflect.TypeOf((*OutOfBoundsFault)(nil)).Elem() +} + +type OutOfSyncDvsHost struct { + DvsEvent + + HostOutOfSync []DvsOutOfSyncHostArgument `xml:"hostOutOfSync"` +} + +func init() { + t["OutOfSyncDvsHost"] = reflect.TypeOf((*OutOfSyncDvsHost)(nil)).Elem() +} + +type OverwriteCustomizationSpec OverwriteCustomizationSpecRequestType + +func init() { + t["OverwriteCustomizationSpec"] = reflect.TypeOf((*OverwriteCustomizationSpec)(nil)).Elem() +} + +type OverwriteCustomizationSpecRequestType struct { + This ManagedObjectReference `xml:"_this"` + Item CustomizationSpecItem `xml:"item"` +} + +func init() { + t["OverwriteCustomizationSpecRequestType"] = reflect.TypeOf((*OverwriteCustomizationSpecRequestType)(nil)).Elem() +} + +type OverwriteCustomizationSpecResponse struct { +} + +type OvfAttribute struct { + OvfInvalidPackage + + ElementName string `xml:"elementName"` + AttributeName string `xml:"attributeName"` +} + +func init() { + t["OvfAttribute"] = reflect.TypeOf((*OvfAttribute)(nil)).Elem() +} + +type OvfAttributeFault BaseOvfAttribute + +func init() { + t["OvfAttributeFault"] = reflect.TypeOf((*OvfAttributeFault)(nil)).Elem() +} + +type OvfConnectedDevice struct { + OvfHardwareExport +} + +func init() { + t["OvfConnectedDevice"] = reflect.TypeOf((*OvfConnectedDevice)(nil)).Elem() +} + +type OvfConnectedDeviceFault BaseOvfConnectedDevice + +func init() { + t["OvfConnectedDeviceFault"] = reflect.TypeOf((*OvfConnectedDeviceFault)(nil)).Elem() +} + +type OvfConnectedDeviceFloppy struct { + OvfConnectedDevice + + Filename string `xml:"filename"` +} + +func init() { + t["OvfConnectedDeviceFloppy"] = reflect.TypeOf((*OvfConnectedDeviceFloppy)(nil)).Elem() +} + +type OvfConnectedDeviceFloppyFault OvfConnectedDeviceFloppy + +func init() { + t["OvfConnectedDeviceFloppyFault"] = reflect.TypeOf((*OvfConnectedDeviceFloppyFault)(nil)).Elem() +} + +type OvfConnectedDeviceIso struct { + OvfConnectedDevice + + Filename string `xml:"filename"` +} + +func init() { + t["OvfConnectedDeviceIso"] = reflect.TypeOf((*OvfConnectedDeviceIso)(nil)).Elem() +} + +type OvfConnectedDeviceIsoFault OvfConnectedDeviceIso + +func init() { + t["OvfConnectedDeviceIsoFault"] = reflect.TypeOf((*OvfConnectedDeviceIsoFault)(nil)).Elem() +} + +type OvfConstraint struct { + OvfInvalidPackage + + Name string `xml:"name"` +} + +func init() { + t["OvfConstraint"] = reflect.TypeOf((*OvfConstraint)(nil)).Elem() +} + +type OvfConstraintFault BaseOvfConstraint + +func init() { + t["OvfConstraintFault"] = reflect.TypeOf((*OvfConstraintFault)(nil)).Elem() +} + +type OvfConsumerCallbackFault struct { + OvfFault + + ExtensionKey string `xml:"extensionKey"` + ExtensionName string `xml:"extensionName"` +} + +func init() { + t["OvfConsumerCallbackFault"] = reflect.TypeOf((*OvfConsumerCallbackFault)(nil)).Elem() +} + +type OvfConsumerCallbackFaultFault BaseOvfConsumerCallbackFault + +func init() { + t["OvfConsumerCallbackFaultFault"] = reflect.TypeOf((*OvfConsumerCallbackFaultFault)(nil)).Elem() +} + +type OvfConsumerCommunicationError struct { + OvfConsumerCallbackFault + + Description string `xml:"description"` +} + +func init() { + t["OvfConsumerCommunicationError"] = reflect.TypeOf((*OvfConsumerCommunicationError)(nil)).Elem() +} + +type OvfConsumerCommunicationErrorFault OvfConsumerCommunicationError + +func init() { + t["OvfConsumerCommunicationErrorFault"] = reflect.TypeOf((*OvfConsumerCommunicationErrorFault)(nil)).Elem() +} + +type OvfConsumerFault struct { + OvfConsumerCallbackFault + + ErrorKey string `xml:"errorKey"` + Message string `xml:"message"` + Params []KeyValue `xml:"params,omitempty"` +} + +func init() { + t["OvfConsumerFault"] = reflect.TypeOf((*OvfConsumerFault)(nil)).Elem() +} + +type OvfConsumerFaultFault OvfConsumerFault + +func init() { + t["OvfConsumerFaultFault"] = reflect.TypeOf((*OvfConsumerFaultFault)(nil)).Elem() +} + +type OvfConsumerInvalidSection struct { + OvfConsumerCallbackFault + + LineNumber int32 `xml:"lineNumber"` + Description string `xml:"description"` +} + +func init() { + t["OvfConsumerInvalidSection"] = reflect.TypeOf((*OvfConsumerInvalidSection)(nil)).Elem() +} + +type OvfConsumerInvalidSectionFault OvfConsumerInvalidSection + +func init() { + t["OvfConsumerInvalidSectionFault"] = reflect.TypeOf((*OvfConsumerInvalidSectionFault)(nil)).Elem() +} + +type OvfConsumerOstNode struct { + DynamicData + + Id string `xml:"id"` + Type string `xml:"type"` + Section []OvfConsumerOvfSection `xml:"section,omitempty"` + Child []OvfConsumerOstNode `xml:"child,omitempty"` + Entity *ManagedObjectReference `xml:"entity,omitempty"` +} + +func init() { + t["OvfConsumerOstNode"] = reflect.TypeOf((*OvfConsumerOstNode)(nil)).Elem() +} + +type OvfConsumerOvfSection struct { + DynamicData + + LineNumber int32 `xml:"lineNumber"` + Xml string `xml:"xml"` +} + +func init() { + t["OvfConsumerOvfSection"] = reflect.TypeOf((*OvfConsumerOvfSection)(nil)).Elem() +} + +type OvfConsumerPowerOnFault struct { + InvalidState + + ExtensionKey string `xml:"extensionKey"` + ExtensionName string `xml:"extensionName"` + Description string `xml:"description"` +} + +func init() { + t["OvfConsumerPowerOnFault"] = reflect.TypeOf((*OvfConsumerPowerOnFault)(nil)).Elem() +} + +type OvfConsumerPowerOnFaultFault OvfConsumerPowerOnFault + +func init() { + t["OvfConsumerPowerOnFaultFault"] = reflect.TypeOf((*OvfConsumerPowerOnFaultFault)(nil)).Elem() +} + +type OvfConsumerUndeclaredSection struct { + OvfConsumerCallbackFault + + QualifiedSectionType string `xml:"qualifiedSectionType"` +} + +func init() { + t["OvfConsumerUndeclaredSection"] = reflect.TypeOf((*OvfConsumerUndeclaredSection)(nil)).Elem() +} + +type OvfConsumerUndeclaredSectionFault OvfConsumerUndeclaredSection + +func init() { + t["OvfConsumerUndeclaredSectionFault"] = reflect.TypeOf((*OvfConsumerUndeclaredSectionFault)(nil)).Elem() +} + +type OvfConsumerUndefinedPrefix struct { + OvfConsumerCallbackFault + + Prefix string `xml:"prefix"` +} + +func init() { + t["OvfConsumerUndefinedPrefix"] = reflect.TypeOf((*OvfConsumerUndefinedPrefix)(nil)).Elem() +} + +type OvfConsumerUndefinedPrefixFault OvfConsumerUndefinedPrefix + +func init() { + t["OvfConsumerUndefinedPrefixFault"] = reflect.TypeOf((*OvfConsumerUndefinedPrefixFault)(nil)).Elem() +} + +type OvfConsumerValidationFault struct { + VmConfigFault + + ExtensionKey string `xml:"extensionKey"` + ExtensionName string `xml:"extensionName"` + Message string `xml:"message"` +} + +func init() { + t["OvfConsumerValidationFault"] = reflect.TypeOf((*OvfConsumerValidationFault)(nil)).Elem() +} + +type OvfConsumerValidationFaultFault OvfConsumerValidationFault + +func init() { + t["OvfConsumerValidationFaultFault"] = reflect.TypeOf((*OvfConsumerValidationFaultFault)(nil)).Elem() +} + +type OvfCpuCompatibility struct { + OvfImport + + RegisterName string `xml:"registerName"` + Level int32 `xml:"level"` + RegisterValue string `xml:"registerValue"` + DesiredRegisterValue string `xml:"desiredRegisterValue"` +} + +func init() { + t["OvfCpuCompatibility"] = reflect.TypeOf((*OvfCpuCompatibility)(nil)).Elem() +} + +type OvfCpuCompatibilityCheckNotSupported struct { + OvfImport +} + +func init() { + t["OvfCpuCompatibilityCheckNotSupported"] = reflect.TypeOf((*OvfCpuCompatibilityCheckNotSupported)(nil)).Elem() +} + +type OvfCpuCompatibilityCheckNotSupportedFault OvfCpuCompatibilityCheckNotSupported + +func init() { + t["OvfCpuCompatibilityCheckNotSupportedFault"] = reflect.TypeOf((*OvfCpuCompatibilityCheckNotSupportedFault)(nil)).Elem() +} + +type OvfCpuCompatibilityFault OvfCpuCompatibility + +func init() { + t["OvfCpuCompatibilityFault"] = reflect.TypeOf((*OvfCpuCompatibilityFault)(nil)).Elem() +} + +type OvfCreateDescriptorParams struct { + DynamicData + + OvfFiles []OvfFile `xml:"ovfFiles,omitempty"` + Name string `xml:"name,omitempty"` + Description string `xml:"description,omitempty"` + IncludeImageFiles *bool `xml:"includeImageFiles"` + ExportOption []string `xml:"exportOption,omitempty"` + Snapshot *ManagedObjectReference `xml:"snapshot,omitempty"` +} + +func init() { + t["OvfCreateDescriptorParams"] = reflect.TypeOf((*OvfCreateDescriptorParams)(nil)).Elem() +} + +type OvfCreateDescriptorResult struct { + DynamicData + + OvfDescriptor string `xml:"ovfDescriptor"` + Error []LocalizedMethodFault `xml:"error,omitempty"` + Warning []LocalizedMethodFault `xml:"warning,omitempty"` + IncludeImageFiles *bool `xml:"includeImageFiles"` +} + +func init() { + t["OvfCreateDescriptorResult"] = reflect.TypeOf((*OvfCreateDescriptorResult)(nil)).Elem() +} + +type OvfCreateImportSpecParams struct { + OvfManagerCommonParams + + EntityName string `xml:"entityName"` + HostSystem *ManagedObjectReference `xml:"hostSystem,omitempty"` + NetworkMapping []OvfNetworkMapping `xml:"networkMapping,omitempty"` + IpAllocationPolicy string `xml:"ipAllocationPolicy,omitempty"` + IpProtocol string `xml:"ipProtocol,omitempty"` + PropertyMapping []KeyValue `xml:"propertyMapping,omitempty"` + ResourceMapping []OvfResourceMap `xml:"resourceMapping,omitempty"` + DiskProvisioning string `xml:"diskProvisioning,omitempty"` + InstantiationOst *OvfConsumerOstNode `xml:"instantiationOst,omitempty"` +} + +func init() { + t["OvfCreateImportSpecParams"] = reflect.TypeOf((*OvfCreateImportSpecParams)(nil)).Elem() +} + +type OvfCreateImportSpecResult struct { + DynamicData + + ImportSpec BaseImportSpec `xml:"importSpec,omitempty,typeattr"` + FileItem []OvfFileItem `xml:"fileItem,omitempty"` + Warning []LocalizedMethodFault `xml:"warning,omitempty"` + Error []LocalizedMethodFault `xml:"error,omitempty"` +} + +func init() { + t["OvfCreateImportSpecResult"] = reflect.TypeOf((*OvfCreateImportSpecResult)(nil)).Elem() +} + +type OvfDeploymentOption struct { + DynamicData + + Key string `xml:"key"` + Label string `xml:"label"` + Description string `xml:"description"` +} + +func init() { + t["OvfDeploymentOption"] = reflect.TypeOf((*OvfDeploymentOption)(nil)).Elem() +} + +type OvfDiskMappingNotFound struct { + OvfSystemFault + + DiskName string `xml:"diskName"` + VmName string `xml:"vmName"` +} + +func init() { + t["OvfDiskMappingNotFound"] = reflect.TypeOf((*OvfDiskMappingNotFound)(nil)).Elem() +} + +type OvfDiskMappingNotFoundFault OvfDiskMappingNotFound + +func init() { + t["OvfDiskMappingNotFoundFault"] = reflect.TypeOf((*OvfDiskMappingNotFoundFault)(nil)).Elem() +} + +type OvfDiskOrderConstraint struct { + OvfConstraint +} + +func init() { + t["OvfDiskOrderConstraint"] = reflect.TypeOf((*OvfDiskOrderConstraint)(nil)).Elem() +} + +type OvfDiskOrderConstraintFault OvfDiskOrderConstraint + +func init() { + t["OvfDiskOrderConstraintFault"] = reflect.TypeOf((*OvfDiskOrderConstraintFault)(nil)).Elem() +} + +type OvfDuplicateElement struct { + OvfElement +} + +func init() { + t["OvfDuplicateElement"] = reflect.TypeOf((*OvfDuplicateElement)(nil)).Elem() +} + +type OvfDuplicateElementFault OvfDuplicateElement + +func init() { + t["OvfDuplicateElementFault"] = reflect.TypeOf((*OvfDuplicateElementFault)(nil)).Elem() +} + +type OvfDuplicatedElementBoundary struct { + OvfElement + + Boundary string `xml:"boundary"` +} + +func init() { + t["OvfDuplicatedElementBoundary"] = reflect.TypeOf((*OvfDuplicatedElementBoundary)(nil)).Elem() +} + +type OvfDuplicatedElementBoundaryFault OvfDuplicatedElementBoundary + +func init() { + t["OvfDuplicatedElementBoundaryFault"] = reflect.TypeOf((*OvfDuplicatedElementBoundaryFault)(nil)).Elem() +} + +type OvfDuplicatedPropertyIdExport struct { + OvfExport + + Fqid string `xml:"fqid"` +} + +func init() { + t["OvfDuplicatedPropertyIdExport"] = reflect.TypeOf((*OvfDuplicatedPropertyIdExport)(nil)).Elem() +} + +type OvfDuplicatedPropertyIdExportFault OvfDuplicatedPropertyIdExport + +func init() { + t["OvfDuplicatedPropertyIdExportFault"] = reflect.TypeOf((*OvfDuplicatedPropertyIdExportFault)(nil)).Elem() +} + +type OvfDuplicatedPropertyIdImport struct { + OvfExport +} + +func init() { + t["OvfDuplicatedPropertyIdImport"] = reflect.TypeOf((*OvfDuplicatedPropertyIdImport)(nil)).Elem() +} + +type OvfDuplicatedPropertyIdImportFault OvfDuplicatedPropertyIdImport + +func init() { + t["OvfDuplicatedPropertyIdImportFault"] = reflect.TypeOf((*OvfDuplicatedPropertyIdImportFault)(nil)).Elem() +} + +type OvfElement struct { + OvfInvalidPackage + + Name string `xml:"name"` +} + +func init() { + t["OvfElement"] = reflect.TypeOf((*OvfElement)(nil)).Elem() +} + +type OvfElementFault BaseOvfElement + +func init() { + t["OvfElementFault"] = reflect.TypeOf((*OvfElementFault)(nil)).Elem() +} + +type OvfElementInvalidValue struct { + OvfElement + + Value string `xml:"value"` +} + +func init() { + t["OvfElementInvalidValue"] = reflect.TypeOf((*OvfElementInvalidValue)(nil)).Elem() +} + +type OvfElementInvalidValueFault OvfElementInvalidValue + +func init() { + t["OvfElementInvalidValueFault"] = reflect.TypeOf((*OvfElementInvalidValueFault)(nil)).Elem() +} + +type OvfExport struct { + OvfFault +} + +func init() { + t["OvfExport"] = reflect.TypeOf((*OvfExport)(nil)).Elem() +} + +type OvfExportFailed struct { + OvfExport +} + +func init() { + t["OvfExportFailed"] = reflect.TypeOf((*OvfExportFailed)(nil)).Elem() +} + +type OvfExportFailedFault OvfExportFailed + +func init() { + t["OvfExportFailedFault"] = reflect.TypeOf((*OvfExportFailedFault)(nil)).Elem() +} + +type OvfExportFault BaseOvfExport + +func init() { + t["OvfExportFault"] = reflect.TypeOf((*OvfExportFault)(nil)).Elem() +} + +type OvfFault struct { + VimFault +} + +func init() { + t["OvfFault"] = reflect.TypeOf((*OvfFault)(nil)).Elem() +} + +type OvfFaultFault BaseOvfFault + +func init() { + t["OvfFaultFault"] = reflect.TypeOf((*OvfFaultFault)(nil)).Elem() +} + +type OvfFile struct { + DynamicData + + DeviceId string `xml:"deviceId"` + Path string `xml:"path"` + CompressionMethod string `xml:"compressionMethod,omitempty"` + ChunkSize int64 `xml:"chunkSize,omitempty"` + Size int64 `xml:"size"` + Capacity int64 `xml:"capacity,omitempty"` + PopulatedSize int64 `xml:"populatedSize,omitempty"` +} + +func init() { + t["OvfFile"] = reflect.TypeOf((*OvfFile)(nil)).Elem() +} + +type OvfFileItem struct { + DynamicData + + DeviceId string `xml:"deviceId"` + Path string `xml:"path"` + CompressionMethod string `xml:"compressionMethod,omitempty"` + ChunkSize int64 `xml:"chunkSize,omitempty"` + Size int64 `xml:"size,omitempty"` + CimType int32 `xml:"cimType"` + Create bool `xml:"create"` +} + +func init() { + t["OvfFileItem"] = reflect.TypeOf((*OvfFileItem)(nil)).Elem() +} + +type OvfHardwareCheck struct { + OvfImport +} + +func init() { + t["OvfHardwareCheck"] = reflect.TypeOf((*OvfHardwareCheck)(nil)).Elem() +} + +type OvfHardwareCheckFault OvfHardwareCheck + +func init() { + t["OvfHardwareCheckFault"] = reflect.TypeOf((*OvfHardwareCheckFault)(nil)).Elem() +} + +type OvfHardwareExport struct { + OvfExport + + Device BaseVirtualDevice `xml:"device,omitempty,typeattr"` + VmPath string `xml:"vmPath"` +} + +func init() { + t["OvfHardwareExport"] = reflect.TypeOf((*OvfHardwareExport)(nil)).Elem() +} + +type OvfHardwareExportFault BaseOvfHardwareExport + +func init() { + t["OvfHardwareExportFault"] = reflect.TypeOf((*OvfHardwareExportFault)(nil)).Elem() +} + +type OvfHostResourceConstraint struct { + OvfConstraint + + Value string `xml:"value"` +} + +func init() { + t["OvfHostResourceConstraint"] = reflect.TypeOf((*OvfHostResourceConstraint)(nil)).Elem() +} + +type OvfHostResourceConstraintFault OvfHostResourceConstraint + +func init() { + t["OvfHostResourceConstraintFault"] = reflect.TypeOf((*OvfHostResourceConstraintFault)(nil)).Elem() +} + +type OvfHostValueNotParsed struct { + OvfSystemFault + + Property string `xml:"property"` + Value string `xml:"value"` +} + +func init() { + t["OvfHostValueNotParsed"] = reflect.TypeOf((*OvfHostValueNotParsed)(nil)).Elem() +} + +type OvfHostValueNotParsedFault OvfHostValueNotParsed + +func init() { + t["OvfHostValueNotParsedFault"] = reflect.TypeOf((*OvfHostValueNotParsedFault)(nil)).Elem() +} + +type OvfImport struct { + OvfFault +} + +func init() { + t["OvfImport"] = reflect.TypeOf((*OvfImport)(nil)).Elem() +} + +type OvfImportFailed struct { + OvfImport +} + +func init() { + t["OvfImportFailed"] = reflect.TypeOf((*OvfImportFailed)(nil)).Elem() +} + +type OvfImportFailedFault OvfImportFailed + +func init() { + t["OvfImportFailedFault"] = reflect.TypeOf((*OvfImportFailedFault)(nil)).Elem() +} + +type OvfImportFault BaseOvfImport + +func init() { + t["OvfImportFault"] = reflect.TypeOf((*OvfImportFault)(nil)).Elem() +} + +type OvfInternalError struct { + OvfSystemFault +} + +func init() { + t["OvfInternalError"] = reflect.TypeOf((*OvfInternalError)(nil)).Elem() +} + +type OvfInternalErrorFault OvfInternalError + +func init() { + t["OvfInternalErrorFault"] = reflect.TypeOf((*OvfInternalErrorFault)(nil)).Elem() +} + +type OvfInvalidPackage struct { + OvfFault + + LineNumber int32 `xml:"lineNumber"` +} + +func init() { + t["OvfInvalidPackage"] = reflect.TypeOf((*OvfInvalidPackage)(nil)).Elem() +} + +type OvfInvalidPackageFault BaseOvfInvalidPackage + +func init() { + t["OvfInvalidPackageFault"] = reflect.TypeOf((*OvfInvalidPackageFault)(nil)).Elem() +} + +type OvfInvalidValue struct { + OvfAttribute + + Value string `xml:"value"` +} + +func init() { + t["OvfInvalidValue"] = reflect.TypeOf((*OvfInvalidValue)(nil)).Elem() +} + +type OvfInvalidValueConfiguration struct { + OvfInvalidValue +} + +func init() { + t["OvfInvalidValueConfiguration"] = reflect.TypeOf((*OvfInvalidValueConfiguration)(nil)).Elem() +} + +type OvfInvalidValueConfigurationFault OvfInvalidValueConfiguration + +func init() { + t["OvfInvalidValueConfigurationFault"] = reflect.TypeOf((*OvfInvalidValueConfigurationFault)(nil)).Elem() +} + +type OvfInvalidValueEmpty struct { + OvfInvalidValue +} + +func init() { + t["OvfInvalidValueEmpty"] = reflect.TypeOf((*OvfInvalidValueEmpty)(nil)).Elem() +} + +type OvfInvalidValueEmptyFault OvfInvalidValueEmpty + +func init() { + t["OvfInvalidValueEmptyFault"] = reflect.TypeOf((*OvfInvalidValueEmptyFault)(nil)).Elem() +} + +type OvfInvalidValueFault BaseOvfInvalidValue + +func init() { + t["OvfInvalidValueFault"] = reflect.TypeOf((*OvfInvalidValueFault)(nil)).Elem() +} + +type OvfInvalidValueFormatMalformed struct { + OvfInvalidValue +} + +func init() { + t["OvfInvalidValueFormatMalformed"] = reflect.TypeOf((*OvfInvalidValueFormatMalformed)(nil)).Elem() +} + +type OvfInvalidValueFormatMalformedFault OvfInvalidValueFormatMalformed + +func init() { + t["OvfInvalidValueFormatMalformedFault"] = reflect.TypeOf((*OvfInvalidValueFormatMalformedFault)(nil)).Elem() +} + +type OvfInvalidValueReference struct { + OvfInvalidValue +} + +func init() { + t["OvfInvalidValueReference"] = reflect.TypeOf((*OvfInvalidValueReference)(nil)).Elem() +} + +type OvfInvalidValueReferenceFault OvfInvalidValueReference + +func init() { + t["OvfInvalidValueReferenceFault"] = reflect.TypeOf((*OvfInvalidValueReferenceFault)(nil)).Elem() +} + +type OvfInvalidVmName struct { + OvfUnsupportedPackage + + Name string `xml:"name"` +} + +func init() { + t["OvfInvalidVmName"] = reflect.TypeOf((*OvfInvalidVmName)(nil)).Elem() +} + +type OvfInvalidVmNameFault OvfInvalidVmName + +func init() { + t["OvfInvalidVmNameFault"] = reflect.TypeOf((*OvfInvalidVmNameFault)(nil)).Elem() +} + +type OvfManagerCommonParams struct { + DynamicData + + Locale string `xml:"locale"` + DeploymentOption string `xml:"deploymentOption"` + MsgBundle []KeyValue `xml:"msgBundle,omitempty"` + ImportOption []string `xml:"importOption,omitempty"` +} + +func init() { + t["OvfManagerCommonParams"] = reflect.TypeOf((*OvfManagerCommonParams)(nil)).Elem() +} + +type OvfMappedOsId struct { + OvfImport + + OvfId int32 `xml:"ovfId"` + OvfDescription string `xml:"ovfDescription"` + TargetDescription string `xml:"targetDescription"` +} + +func init() { + t["OvfMappedOsId"] = reflect.TypeOf((*OvfMappedOsId)(nil)).Elem() +} + +type OvfMappedOsIdFault OvfMappedOsId + +func init() { + t["OvfMappedOsIdFault"] = reflect.TypeOf((*OvfMappedOsIdFault)(nil)).Elem() +} + +type OvfMissingAttribute struct { + OvfAttribute +} + +func init() { + t["OvfMissingAttribute"] = reflect.TypeOf((*OvfMissingAttribute)(nil)).Elem() +} + +type OvfMissingAttributeFault OvfMissingAttribute + +func init() { + t["OvfMissingAttributeFault"] = reflect.TypeOf((*OvfMissingAttributeFault)(nil)).Elem() +} + +type OvfMissingElement struct { + OvfElement +} + +func init() { + t["OvfMissingElement"] = reflect.TypeOf((*OvfMissingElement)(nil)).Elem() +} + +type OvfMissingElementFault BaseOvfMissingElement + +func init() { + t["OvfMissingElementFault"] = reflect.TypeOf((*OvfMissingElementFault)(nil)).Elem() +} + +type OvfMissingElementNormalBoundary struct { + OvfMissingElement + + Boundary string `xml:"boundary"` +} + +func init() { + t["OvfMissingElementNormalBoundary"] = reflect.TypeOf((*OvfMissingElementNormalBoundary)(nil)).Elem() +} + +type OvfMissingElementNormalBoundaryFault OvfMissingElementNormalBoundary + +func init() { + t["OvfMissingElementNormalBoundaryFault"] = reflect.TypeOf((*OvfMissingElementNormalBoundaryFault)(nil)).Elem() +} + +type OvfMissingHardware struct { + OvfImport + + Name string `xml:"name"` + ResourceType int32 `xml:"resourceType"` +} + +func init() { + t["OvfMissingHardware"] = reflect.TypeOf((*OvfMissingHardware)(nil)).Elem() +} + +type OvfMissingHardwareFault OvfMissingHardware + +func init() { + t["OvfMissingHardwareFault"] = reflect.TypeOf((*OvfMissingHardwareFault)(nil)).Elem() +} + +type OvfNetworkInfo struct { + DynamicData + + Name string `xml:"name"` + Description string `xml:"description"` +} + +func init() { + t["OvfNetworkInfo"] = reflect.TypeOf((*OvfNetworkInfo)(nil)).Elem() +} + +type OvfNetworkMapping struct { + DynamicData + + Name string `xml:"name"` + Network ManagedObjectReference `xml:"network"` +} + +func init() { + t["OvfNetworkMapping"] = reflect.TypeOf((*OvfNetworkMapping)(nil)).Elem() +} + +type OvfNetworkMappingNotSupported struct { + OvfImport +} + +func init() { + t["OvfNetworkMappingNotSupported"] = reflect.TypeOf((*OvfNetworkMappingNotSupported)(nil)).Elem() +} + +type OvfNetworkMappingNotSupportedFault OvfNetworkMappingNotSupported + +func init() { + t["OvfNetworkMappingNotSupportedFault"] = reflect.TypeOf((*OvfNetworkMappingNotSupportedFault)(nil)).Elem() +} + +type OvfNoHostNic struct { + OvfUnsupportedPackage +} + +func init() { + t["OvfNoHostNic"] = reflect.TypeOf((*OvfNoHostNic)(nil)).Elem() +} + +type OvfNoHostNicFault OvfNoHostNic + +func init() { + t["OvfNoHostNicFault"] = reflect.TypeOf((*OvfNoHostNicFault)(nil)).Elem() +} + +type OvfNoSpaceOnController struct { + OvfUnsupportedElement + + Parent string `xml:"parent"` +} + +func init() { + t["OvfNoSpaceOnController"] = reflect.TypeOf((*OvfNoSpaceOnController)(nil)).Elem() +} + +type OvfNoSpaceOnControllerFault OvfNoSpaceOnController + +func init() { + t["OvfNoSpaceOnControllerFault"] = reflect.TypeOf((*OvfNoSpaceOnControllerFault)(nil)).Elem() +} + +type OvfNoSupportedHardwareFamily struct { + OvfUnsupportedPackage + + Version string `xml:"version"` +} + +func init() { + t["OvfNoSupportedHardwareFamily"] = reflect.TypeOf((*OvfNoSupportedHardwareFamily)(nil)).Elem() +} + +type OvfNoSupportedHardwareFamilyFault OvfNoSupportedHardwareFamily + +func init() { + t["OvfNoSupportedHardwareFamilyFault"] = reflect.TypeOf((*OvfNoSupportedHardwareFamilyFault)(nil)).Elem() +} + +type OvfOptionInfo struct { + DynamicData + + Option string `xml:"option"` + Description LocalizableMessage `xml:"description"` +} + +func init() { + t["OvfOptionInfo"] = reflect.TypeOf((*OvfOptionInfo)(nil)).Elem() +} + +type OvfParseDescriptorParams struct { + OvfManagerCommonParams +} + +func init() { + t["OvfParseDescriptorParams"] = reflect.TypeOf((*OvfParseDescriptorParams)(nil)).Elem() +} + +type OvfParseDescriptorResult struct { + DynamicData + + Eula []string `xml:"eula,omitempty"` + Network []OvfNetworkInfo `xml:"network,omitempty"` + IpAllocationScheme []string `xml:"ipAllocationScheme,omitempty"` + IpProtocols []string `xml:"ipProtocols,omitempty"` + Property []VAppPropertyInfo `xml:"property,omitempty"` + ProductInfo *VAppProductInfo `xml:"productInfo,omitempty"` + Annotation string `xml:"annotation"` + ApproximateDownloadSize int64 `xml:"approximateDownloadSize,omitempty"` + ApproximateFlatDeploymentSize int64 `xml:"approximateFlatDeploymentSize,omitempty"` + ApproximateSparseDeploymentSize int64 `xml:"approximateSparseDeploymentSize,omitempty"` + DefaultEntityName string `xml:"defaultEntityName"` + VirtualApp bool `xml:"virtualApp"` + DeploymentOption []OvfDeploymentOption `xml:"deploymentOption,omitempty"` + DefaultDeploymentOption string `xml:"defaultDeploymentOption"` + EntityName []KeyValue `xml:"entityName,omitempty"` + AnnotatedOst *OvfConsumerOstNode `xml:"annotatedOst,omitempty"` + Error []LocalizedMethodFault `xml:"error,omitempty"` + Warning []LocalizedMethodFault `xml:"warning,omitempty"` +} + +func init() { + t["OvfParseDescriptorResult"] = reflect.TypeOf((*OvfParseDescriptorResult)(nil)).Elem() +} + +type OvfProperty struct { + OvfInvalidPackage + + Type string `xml:"type"` + Value string `xml:"value"` +} + +func init() { + t["OvfProperty"] = reflect.TypeOf((*OvfProperty)(nil)).Elem() +} + +type OvfPropertyExport struct { + OvfExport + + Type string `xml:"type"` + Value string `xml:"value"` +} + +func init() { + t["OvfPropertyExport"] = reflect.TypeOf((*OvfPropertyExport)(nil)).Elem() +} + +type OvfPropertyExportFault OvfPropertyExport + +func init() { + t["OvfPropertyExportFault"] = reflect.TypeOf((*OvfPropertyExportFault)(nil)).Elem() +} + +type OvfPropertyFault BaseOvfProperty + +func init() { + t["OvfPropertyFault"] = reflect.TypeOf((*OvfPropertyFault)(nil)).Elem() +} + +type OvfPropertyNetwork struct { + OvfProperty +} + +func init() { + t["OvfPropertyNetwork"] = reflect.TypeOf((*OvfPropertyNetwork)(nil)).Elem() +} + +type OvfPropertyNetworkExport struct { + OvfExport + + Network string `xml:"network"` +} + +func init() { + t["OvfPropertyNetworkExport"] = reflect.TypeOf((*OvfPropertyNetworkExport)(nil)).Elem() +} + +type OvfPropertyNetworkExportFault OvfPropertyNetworkExport + +func init() { + t["OvfPropertyNetworkExportFault"] = reflect.TypeOf((*OvfPropertyNetworkExportFault)(nil)).Elem() +} + +type OvfPropertyNetworkFault OvfPropertyNetwork + +func init() { + t["OvfPropertyNetworkFault"] = reflect.TypeOf((*OvfPropertyNetworkFault)(nil)).Elem() +} + +type OvfPropertyQualifier struct { + OvfProperty + + Qualifier string `xml:"qualifier"` +} + +func init() { + t["OvfPropertyQualifier"] = reflect.TypeOf((*OvfPropertyQualifier)(nil)).Elem() +} + +type OvfPropertyQualifierDuplicate struct { + OvfProperty + + Qualifier string `xml:"qualifier"` +} + +func init() { + t["OvfPropertyQualifierDuplicate"] = reflect.TypeOf((*OvfPropertyQualifierDuplicate)(nil)).Elem() +} + +type OvfPropertyQualifierDuplicateFault OvfPropertyQualifierDuplicate + +func init() { + t["OvfPropertyQualifierDuplicateFault"] = reflect.TypeOf((*OvfPropertyQualifierDuplicateFault)(nil)).Elem() +} + +type OvfPropertyQualifierFault OvfPropertyQualifier + +func init() { + t["OvfPropertyQualifierFault"] = reflect.TypeOf((*OvfPropertyQualifierFault)(nil)).Elem() +} + +type OvfPropertyQualifierIgnored struct { + OvfProperty + + Qualifier string `xml:"qualifier"` +} + +func init() { + t["OvfPropertyQualifierIgnored"] = reflect.TypeOf((*OvfPropertyQualifierIgnored)(nil)).Elem() +} + +type OvfPropertyQualifierIgnoredFault OvfPropertyQualifierIgnored + +func init() { + t["OvfPropertyQualifierIgnoredFault"] = reflect.TypeOf((*OvfPropertyQualifierIgnoredFault)(nil)).Elem() +} + +type OvfPropertyType struct { + OvfProperty +} + +func init() { + t["OvfPropertyType"] = reflect.TypeOf((*OvfPropertyType)(nil)).Elem() +} + +type OvfPropertyTypeFault OvfPropertyType + +func init() { + t["OvfPropertyTypeFault"] = reflect.TypeOf((*OvfPropertyTypeFault)(nil)).Elem() +} + +type OvfPropertyValue struct { + OvfProperty +} + +func init() { + t["OvfPropertyValue"] = reflect.TypeOf((*OvfPropertyValue)(nil)).Elem() +} + +type OvfPropertyValueFault OvfPropertyValue + +func init() { + t["OvfPropertyValueFault"] = reflect.TypeOf((*OvfPropertyValueFault)(nil)).Elem() +} + +type OvfResourceMap struct { + DynamicData + + Source string `xml:"source"` + Parent *ManagedObjectReference `xml:"parent,omitempty"` + ResourceSpec *ResourceConfigSpec `xml:"resourceSpec,omitempty"` + Datastore *ManagedObjectReference `xml:"datastore,omitempty"` +} + +func init() { + t["OvfResourceMap"] = reflect.TypeOf((*OvfResourceMap)(nil)).Elem() +} + +type OvfSystemFault struct { + OvfFault +} + +func init() { + t["OvfSystemFault"] = reflect.TypeOf((*OvfSystemFault)(nil)).Elem() +} + +type OvfSystemFaultFault BaseOvfSystemFault + +func init() { + t["OvfSystemFaultFault"] = reflect.TypeOf((*OvfSystemFaultFault)(nil)).Elem() +} + +type OvfToXmlUnsupportedElement struct { + OvfSystemFault + + Name string `xml:"name,omitempty"` +} + +func init() { + t["OvfToXmlUnsupportedElement"] = reflect.TypeOf((*OvfToXmlUnsupportedElement)(nil)).Elem() +} + +type OvfToXmlUnsupportedElementFault OvfToXmlUnsupportedElement + +func init() { + t["OvfToXmlUnsupportedElementFault"] = reflect.TypeOf((*OvfToXmlUnsupportedElementFault)(nil)).Elem() +} + +type OvfUnableToExportDisk struct { + OvfHardwareExport + + DiskName string `xml:"diskName"` +} + +func init() { + t["OvfUnableToExportDisk"] = reflect.TypeOf((*OvfUnableToExportDisk)(nil)).Elem() +} + +type OvfUnableToExportDiskFault OvfUnableToExportDisk + +func init() { + t["OvfUnableToExportDiskFault"] = reflect.TypeOf((*OvfUnableToExportDiskFault)(nil)).Elem() +} + +type OvfUnexpectedElement struct { + OvfElement +} + +func init() { + t["OvfUnexpectedElement"] = reflect.TypeOf((*OvfUnexpectedElement)(nil)).Elem() +} + +type OvfUnexpectedElementFault OvfUnexpectedElement + +func init() { + t["OvfUnexpectedElementFault"] = reflect.TypeOf((*OvfUnexpectedElementFault)(nil)).Elem() +} + +type OvfUnknownDevice struct { + OvfSystemFault + + Device BaseVirtualDevice `xml:"device,omitempty,typeattr"` + VmName string `xml:"vmName"` +} + +func init() { + t["OvfUnknownDevice"] = reflect.TypeOf((*OvfUnknownDevice)(nil)).Elem() +} + +type OvfUnknownDeviceBacking struct { + OvfHardwareExport + + Backing BaseVirtualDeviceBackingInfo `xml:"backing,typeattr"` +} + +func init() { + t["OvfUnknownDeviceBacking"] = reflect.TypeOf((*OvfUnknownDeviceBacking)(nil)).Elem() +} + +type OvfUnknownDeviceBackingFault OvfUnknownDeviceBacking + +func init() { + t["OvfUnknownDeviceBackingFault"] = reflect.TypeOf((*OvfUnknownDeviceBackingFault)(nil)).Elem() +} + +type OvfUnknownDeviceFault OvfUnknownDevice + +func init() { + t["OvfUnknownDeviceFault"] = reflect.TypeOf((*OvfUnknownDeviceFault)(nil)).Elem() +} + +type OvfUnknownEntity struct { + OvfSystemFault + + LineNumber int32 `xml:"lineNumber"` +} + +func init() { + t["OvfUnknownEntity"] = reflect.TypeOf((*OvfUnknownEntity)(nil)).Elem() +} + +type OvfUnknownEntityFault OvfUnknownEntity + +func init() { + t["OvfUnknownEntityFault"] = reflect.TypeOf((*OvfUnknownEntityFault)(nil)).Elem() +} + +type OvfUnsupportedAttribute struct { + OvfUnsupportedPackage + + ElementName string `xml:"elementName"` + AttributeName string `xml:"attributeName"` +} + +func init() { + t["OvfUnsupportedAttribute"] = reflect.TypeOf((*OvfUnsupportedAttribute)(nil)).Elem() +} + +type OvfUnsupportedAttributeFault BaseOvfUnsupportedAttribute + +func init() { + t["OvfUnsupportedAttributeFault"] = reflect.TypeOf((*OvfUnsupportedAttributeFault)(nil)).Elem() +} + +type OvfUnsupportedAttributeValue struct { + OvfUnsupportedAttribute + + Value string `xml:"value"` +} + +func init() { + t["OvfUnsupportedAttributeValue"] = reflect.TypeOf((*OvfUnsupportedAttributeValue)(nil)).Elem() +} + +type OvfUnsupportedAttributeValueFault OvfUnsupportedAttributeValue + +func init() { + t["OvfUnsupportedAttributeValueFault"] = reflect.TypeOf((*OvfUnsupportedAttributeValueFault)(nil)).Elem() +} + +type OvfUnsupportedDeviceBackingInfo struct { + OvfSystemFault + + ElementName string `xml:"elementName,omitempty"` + InstanceId string `xml:"instanceId,omitempty"` + DeviceName string `xml:"deviceName"` + BackingName string `xml:"backingName,omitempty"` +} + +func init() { + t["OvfUnsupportedDeviceBackingInfo"] = reflect.TypeOf((*OvfUnsupportedDeviceBackingInfo)(nil)).Elem() +} + +type OvfUnsupportedDeviceBackingInfoFault OvfUnsupportedDeviceBackingInfo + +func init() { + t["OvfUnsupportedDeviceBackingInfoFault"] = reflect.TypeOf((*OvfUnsupportedDeviceBackingInfoFault)(nil)).Elem() +} + +type OvfUnsupportedDeviceBackingOption struct { + OvfSystemFault + + ElementName string `xml:"elementName,omitempty"` + InstanceId string `xml:"instanceId,omitempty"` + DeviceName string `xml:"deviceName"` + BackingName string `xml:"backingName,omitempty"` +} + +func init() { + t["OvfUnsupportedDeviceBackingOption"] = reflect.TypeOf((*OvfUnsupportedDeviceBackingOption)(nil)).Elem() +} + +type OvfUnsupportedDeviceBackingOptionFault OvfUnsupportedDeviceBackingOption + +func init() { + t["OvfUnsupportedDeviceBackingOptionFault"] = reflect.TypeOf((*OvfUnsupportedDeviceBackingOptionFault)(nil)).Elem() +} + +type OvfUnsupportedDeviceExport struct { + OvfHardwareExport +} + +func init() { + t["OvfUnsupportedDeviceExport"] = reflect.TypeOf((*OvfUnsupportedDeviceExport)(nil)).Elem() +} + +type OvfUnsupportedDeviceExportFault OvfUnsupportedDeviceExport + +func init() { + t["OvfUnsupportedDeviceExportFault"] = reflect.TypeOf((*OvfUnsupportedDeviceExportFault)(nil)).Elem() +} + +type OvfUnsupportedDiskProvisioning struct { + OvfImport + + DiskProvisioning string `xml:"diskProvisioning"` + SupportedDiskProvisioning string `xml:"supportedDiskProvisioning"` +} + +func init() { + t["OvfUnsupportedDiskProvisioning"] = reflect.TypeOf((*OvfUnsupportedDiskProvisioning)(nil)).Elem() +} + +type OvfUnsupportedDiskProvisioningFault OvfUnsupportedDiskProvisioning + +func init() { + t["OvfUnsupportedDiskProvisioningFault"] = reflect.TypeOf((*OvfUnsupportedDiskProvisioningFault)(nil)).Elem() +} + +type OvfUnsupportedElement struct { + OvfUnsupportedPackage + + Name string `xml:"name"` +} + +func init() { + t["OvfUnsupportedElement"] = reflect.TypeOf((*OvfUnsupportedElement)(nil)).Elem() +} + +type OvfUnsupportedElementFault BaseOvfUnsupportedElement + +func init() { + t["OvfUnsupportedElementFault"] = reflect.TypeOf((*OvfUnsupportedElementFault)(nil)).Elem() +} + +type OvfUnsupportedElementValue struct { + OvfUnsupportedElement + + Value string `xml:"value"` +} + +func init() { + t["OvfUnsupportedElementValue"] = reflect.TypeOf((*OvfUnsupportedElementValue)(nil)).Elem() +} + +type OvfUnsupportedElementValueFault OvfUnsupportedElementValue + +func init() { + t["OvfUnsupportedElementValueFault"] = reflect.TypeOf((*OvfUnsupportedElementValueFault)(nil)).Elem() +} + +type OvfUnsupportedPackage struct { + OvfFault + + LineNumber int32 `xml:"lineNumber,omitempty"` +} + +func init() { + t["OvfUnsupportedPackage"] = reflect.TypeOf((*OvfUnsupportedPackage)(nil)).Elem() +} + +type OvfUnsupportedPackageFault BaseOvfUnsupportedPackage + +func init() { + t["OvfUnsupportedPackageFault"] = reflect.TypeOf((*OvfUnsupportedPackageFault)(nil)).Elem() +} + +type OvfUnsupportedSection struct { + OvfUnsupportedElement + + Info string `xml:"info"` +} + +func init() { + t["OvfUnsupportedSection"] = reflect.TypeOf((*OvfUnsupportedSection)(nil)).Elem() +} + +type OvfUnsupportedSectionFault OvfUnsupportedSection + +func init() { + t["OvfUnsupportedSectionFault"] = reflect.TypeOf((*OvfUnsupportedSectionFault)(nil)).Elem() +} + +type OvfUnsupportedSubType struct { + OvfUnsupportedPackage + + ElementName string `xml:"elementName"` + InstanceId string `xml:"instanceId"` + DeviceType int32 `xml:"deviceType"` + DeviceSubType string `xml:"deviceSubType"` +} + +func init() { + t["OvfUnsupportedSubType"] = reflect.TypeOf((*OvfUnsupportedSubType)(nil)).Elem() +} + +type OvfUnsupportedSubTypeFault OvfUnsupportedSubType + +func init() { + t["OvfUnsupportedSubTypeFault"] = reflect.TypeOf((*OvfUnsupportedSubTypeFault)(nil)).Elem() +} + +type OvfUnsupportedType struct { + OvfUnsupportedPackage + + Name string `xml:"name"` + InstanceId string `xml:"instanceId"` + DeviceType int32 `xml:"deviceType"` +} + +func init() { + t["OvfUnsupportedType"] = reflect.TypeOf((*OvfUnsupportedType)(nil)).Elem() +} + +type OvfUnsupportedTypeFault OvfUnsupportedType + +func init() { + t["OvfUnsupportedTypeFault"] = reflect.TypeOf((*OvfUnsupportedTypeFault)(nil)).Elem() +} + +type OvfValidateHostParams struct { + OvfManagerCommonParams +} + +func init() { + t["OvfValidateHostParams"] = reflect.TypeOf((*OvfValidateHostParams)(nil)).Elem() +} + +type OvfValidateHostResult struct { + DynamicData + + DownloadSize int64 `xml:"downloadSize,omitempty"` + FlatDeploymentSize int64 `xml:"flatDeploymentSize,omitempty"` + SparseDeploymentSize int64 `xml:"sparseDeploymentSize,omitempty"` + Error []LocalizedMethodFault `xml:"error,omitempty"` + Warning []LocalizedMethodFault `xml:"warning,omitempty"` + SupportedDiskProvisioning []string `xml:"supportedDiskProvisioning,omitempty"` +} + +func init() { + t["OvfValidateHostResult"] = reflect.TypeOf((*OvfValidateHostResult)(nil)).Elem() +} + +type OvfWrongElement struct { + OvfElement +} + +func init() { + t["OvfWrongElement"] = reflect.TypeOf((*OvfWrongElement)(nil)).Elem() +} + +type OvfWrongElementFault OvfWrongElement + +func init() { + t["OvfWrongElementFault"] = reflect.TypeOf((*OvfWrongElementFault)(nil)).Elem() +} + +type OvfWrongNamespace struct { + OvfInvalidPackage + + NamespaceName string `xml:"namespaceName"` +} + +func init() { + t["OvfWrongNamespace"] = reflect.TypeOf((*OvfWrongNamespace)(nil)).Elem() +} + +type OvfWrongNamespaceFault OvfWrongNamespace + +func init() { + t["OvfWrongNamespaceFault"] = reflect.TypeOf((*OvfWrongNamespaceFault)(nil)).Elem() +} + +type OvfXmlFormat struct { + OvfInvalidPackage + + Description string `xml:"description"` +} + +func init() { + t["OvfXmlFormat"] = reflect.TypeOf((*OvfXmlFormat)(nil)).Elem() +} + +type OvfXmlFormatFault OvfXmlFormat + +func init() { + t["OvfXmlFormatFault"] = reflect.TypeOf((*OvfXmlFormatFault)(nil)).Elem() +} + +type PMemDatastoreInfo struct { + DatastoreInfo + + Pmem HostPMemVolume `xml:"pmem"` +} + +func init() { + t["PMemDatastoreInfo"] = reflect.TypeOf((*PMemDatastoreInfo)(nil)).Elem() +} + +type ParaVirtualSCSIController struct { + VirtualSCSIController +} + +func init() { + t["ParaVirtualSCSIController"] = reflect.TypeOf((*ParaVirtualSCSIController)(nil)).Elem() +} + +type ParaVirtualSCSIControllerOption struct { + VirtualSCSIControllerOption +} + +func init() { + t["ParaVirtualSCSIControllerOption"] = reflect.TypeOf((*ParaVirtualSCSIControllerOption)(nil)).Elem() +} + +type ParseDescriptor ParseDescriptorRequestType + +func init() { + t["ParseDescriptor"] = reflect.TypeOf((*ParseDescriptor)(nil)).Elem() +} + +type ParseDescriptorRequestType struct { + This ManagedObjectReference `xml:"_this"` + OvfDescriptor string `xml:"ovfDescriptor"` + Pdp OvfParseDescriptorParams `xml:"pdp"` +} + +func init() { + t["ParseDescriptorRequestType"] = reflect.TypeOf((*ParseDescriptorRequestType)(nil)).Elem() +} + +type ParseDescriptorResponse struct { + Returnval OvfParseDescriptorResult `xml:"returnval"` +} + +type PassiveNodeDeploymentSpec struct { + NodeDeploymentSpec + + FailoverIpSettings *CustomizationIPSettings `xml:"failoverIpSettings,omitempty"` +} + +func init() { + t["PassiveNodeDeploymentSpec"] = reflect.TypeOf((*PassiveNodeDeploymentSpec)(nil)).Elem() +} + +type PassiveNodeNetworkSpec struct { + NodeNetworkSpec + + FailoverIpSettings *CustomizationIPSettings `xml:"failoverIpSettings,omitempty"` +} + +func init() { + t["PassiveNodeNetworkSpec"] = reflect.TypeOf((*PassiveNodeNetworkSpec)(nil)).Elem() +} + +type PasswordExpired struct { + InvalidLogin +} + +func init() { + t["PasswordExpired"] = reflect.TypeOf((*PasswordExpired)(nil)).Elem() +} + +type PasswordExpiredFault PasswordExpired + +func init() { + t["PasswordExpiredFault"] = reflect.TypeOf((*PasswordExpiredFault)(nil)).Elem() +} + +type PasswordField struct { + DynamicData + + Value string `xml:"value"` +} + +func init() { + t["PasswordField"] = reflect.TypeOf((*PasswordField)(nil)).Elem() +} + +type PatchAlreadyInstalled struct { + PatchNotApplicable +} + +func init() { + t["PatchAlreadyInstalled"] = reflect.TypeOf((*PatchAlreadyInstalled)(nil)).Elem() +} + +type PatchAlreadyInstalledFault PatchAlreadyInstalled + +func init() { + t["PatchAlreadyInstalledFault"] = reflect.TypeOf((*PatchAlreadyInstalledFault)(nil)).Elem() +} + +type PatchBinariesNotFound struct { + VimFault + + PatchID string `xml:"patchID"` + Binary []string `xml:"binary,omitempty"` +} + +func init() { + t["PatchBinariesNotFound"] = reflect.TypeOf((*PatchBinariesNotFound)(nil)).Elem() +} + +type PatchBinariesNotFoundFault PatchBinariesNotFound + +func init() { + t["PatchBinariesNotFoundFault"] = reflect.TypeOf((*PatchBinariesNotFoundFault)(nil)).Elem() +} + +type PatchInstallFailed struct { + PlatformConfigFault + + RolledBack bool `xml:"rolledBack"` +} + +func init() { + t["PatchInstallFailed"] = reflect.TypeOf((*PatchInstallFailed)(nil)).Elem() +} + +type PatchInstallFailedFault PatchInstallFailed + +func init() { + t["PatchInstallFailedFault"] = reflect.TypeOf((*PatchInstallFailedFault)(nil)).Elem() +} + +type PatchIntegrityError struct { + PlatformConfigFault +} + +func init() { + t["PatchIntegrityError"] = reflect.TypeOf((*PatchIntegrityError)(nil)).Elem() +} + +type PatchIntegrityErrorFault PatchIntegrityError + +func init() { + t["PatchIntegrityErrorFault"] = reflect.TypeOf((*PatchIntegrityErrorFault)(nil)).Elem() +} + +type PatchMetadataCorrupted struct { + PatchMetadataInvalid +} + +func init() { + t["PatchMetadataCorrupted"] = reflect.TypeOf((*PatchMetadataCorrupted)(nil)).Elem() +} + +type PatchMetadataCorruptedFault PatchMetadataCorrupted + +func init() { + t["PatchMetadataCorruptedFault"] = reflect.TypeOf((*PatchMetadataCorruptedFault)(nil)).Elem() +} + +type PatchMetadataInvalid struct { + VimFault + + PatchID string `xml:"patchID"` + MetaData []string `xml:"metaData,omitempty"` +} + +func init() { + t["PatchMetadataInvalid"] = reflect.TypeOf((*PatchMetadataInvalid)(nil)).Elem() +} + +type PatchMetadataInvalidFault BasePatchMetadataInvalid + +func init() { + t["PatchMetadataInvalidFault"] = reflect.TypeOf((*PatchMetadataInvalidFault)(nil)).Elem() +} + +type PatchMetadataNotFound struct { + PatchMetadataInvalid +} + +func init() { + t["PatchMetadataNotFound"] = reflect.TypeOf((*PatchMetadataNotFound)(nil)).Elem() +} + +type PatchMetadataNotFoundFault PatchMetadataNotFound + +func init() { + t["PatchMetadataNotFoundFault"] = reflect.TypeOf((*PatchMetadataNotFoundFault)(nil)).Elem() +} + +type PatchMissingDependencies struct { + PatchNotApplicable + + PrerequisitePatch []string `xml:"prerequisitePatch,omitempty"` + PrerequisiteLib []string `xml:"prerequisiteLib,omitempty"` +} + +func init() { + t["PatchMissingDependencies"] = reflect.TypeOf((*PatchMissingDependencies)(nil)).Elem() +} + +type PatchMissingDependenciesFault PatchMissingDependencies + +func init() { + t["PatchMissingDependenciesFault"] = reflect.TypeOf((*PatchMissingDependenciesFault)(nil)).Elem() +} + +type PatchNotApplicable struct { + VimFault + + PatchID string `xml:"patchID"` +} + +func init() { + t["PatchNotApplicable"] = reflect.TypeOf((*PatchNotApplicable)(nil)).Elem() +} + +type PatchNotApplicableFault BasePatchNotApplicable + +func init() { + t["PatchNotApplicableFault"] = reflect.TypeOf((*PatchNotApplicableFault)(nil)).Elem() +} + +type PatchSuperseded struct { + PatchNotApplicable + + Supersede []string `xml:"supersede,omitempty"` +} + +func init() { + t["PatchSuperseded"] = reflect.TypeOf((*PatchSuperseded)(nil)).Elem() +} + +type PatchSupersededFault PatchSuperseded + +func init() { + t["PatchSupersededFault"] = reflect.TypeOf((*PatchSupersededFault)(nil)).Elem() +} + +type PerfCompositeMetric struct { + DynamicData + + Entity BasePerfEntityMetricBase `xml:"entity,omitempty,typeattr"` + ChildEntity []BasePerfEntityMetricBase `xml:"childEntity,omitempty,typeattr"` +} + +func init() { + t["PerfCompositeMetric"] = reflect.TypeOf((*PerfCompositeMetric)(nil)).Elem() +} + +type PerfCounterInfo struct { + DynamicData + + Key int32 `xml:"key"` + NameInfo BaseElementDescription `xml:"nameInfo,typeattr"` + GroupInfo BaseElementDescription `xml:"groupInfo,typeattr"` + UnitInfo BaseElementDescription `xml:"unitInfo,typeattr"` + RollupType PerfSummaryType `xml:"rollupType"` + StatsType PerfStatsType `xml:"statsType"` + Level int32 `xml:"level,omitempty"` + PerDeviceLevel int32 `xml:"perDeviceLevel,omitempty"` + AssociatedCounterId []int32 `xml:"associatedCounterId,omitempty"` +} + +func init() { + t["PerfCounterInfo"] = reflect.TypeOf((*PerfCounterInfo)(nil)).Elem() +} + +type PerfEntityMetric struct { + PerfEntityMetricBase + + SampleInfo []PerfSampleInfo `xml:"sampleInfo,omitempty"` + Value []BasePerfMetricSeries `xml:"value,omitempty,typeattr"` +} + +func init() { + t["PerfEntityMetric"] = reflect.TypeOf((*PerfEntityMetric)(nil)).Elem() +} + +type PerfEntityMetricBase struct { + DynamicData + + Entity ManagedObjectReference `xml:"entity"` +} + +func init() { + t["PerfEntityMetricBase"] = reflect.TypeOf((*PerfEntityMetricBase)(nil)).Elem() +} + +type PerfEntityMetricCSV struct { + PerfEntityMetricBase + + SampleInfoCSV string `xml:"sampleInfoCSV"` + Value []PerfMetricSeriesCSV `xml:"value,omitempty"` +} + +func init() { + t["PerfEntityMetricCSV"] = reflect.TypeOf((*PerfEntityMetricCSV)(nil)).Elem() +} + +type PerfInterval struct { + DynamicData + + Key int32 `xml:"key"` + SamplingPeriod int32 `xml:"samplingPeriod"` + Name string `xml:"name"` + Length int32 `xml:"length"` + Level int32 `xml:"level,omitempty"` + Enabled bool `xml:"enabled"` +} + +func init() { + t["PerfInterval"] = reflect.TypeOf((*PerfInterval)(nil)).Elem() +} + +type PerfMetricId struct { + DynamicData + + CounterId int32 `xml:"counterId"` + Instance string `xml:"instance"` +} + +func init() { + t["PerfMetricId"] = reflect.TypeOf((*PerfMetricId)(nil)).Elem() +} + +type PerfMetricIntSeries struct { + PerfMetricSeries + + Value []int64 `xml:"value,omitempty"` +} + +func init() { + t["PerfMetricIntSeries"] = reflect.TypeOf((*PerfMetricIntSeries)(nil)).Elem() +} + +type PerfMetricSeries struct { + DynamicData + + Id PerfMetricId `xml:"id"` +} + +func init() { + t["PerfMetricSeries"] = reflect.TypeOf((*PerfMetricSeries)(nil)).Elem() +} + +type PerfMetricSeriesCSV struct { + PerfMetricSeries + + Value string `xml:"value,omitempty"` +} + +func init() { + t["PerfMetricSeriesCSV"] = reflect.TypeOf((*PerfMetricSeriesCSV)(nil)).Elem() +} + +type PerfProviderSummary struct { + DynamicData + + Entity ManagedObjectReference `xml:"entity"` + CurrentSupported bool `xml:"currentSupported"` + SummarySupported bool `xml:"summarySupported"` + RefreshRate int32 `xml:"refreshRate,omitempty"` +} + +func init() { + t["PerfProviderSummary"] = reflect.TypeOf((*PerfProviderSummary)(nil)).Elem() +} + +type PerfQuerySpec struct { + DynamicData + + Entity ManagedObjectReference `xml:"entity"` + StartTime *time.Time `xml:"startTime"` + EndTime *time.Time `xml:"endTime"` + MaxSample int32 `xml:"maxSample,omitempty"` + MetricId []PerfMetricId `xml:"metricId,omitempty"` + IntervalId int32 `xml:"intervalId,omitempty"` + Format string `xml:"format,omitempty"` +} + +func init() { + t["PerfQuerySpec"] = reflect.TypeOf((*PerfQuerySpec)(nil)).Elem() +} + +type PerfSampleInfo struct { + DynamicData + + Timestamp time.Time `xml:"timestamp"` + Interval int32 `xml:"interval"` +} + +func init() { + t["PerfSampleInfo"] = reflect.TypeOf((*PerfSampleInfo)(nil)).Elem() +} + +type PerformDvsProductSpecOperationRequestType struct { + This ManagedObjectReference `xml:"_this"` + Operation string `xml:"operation"` + ProductSpec *DistributedVirtualSwitchProductSpec `xml:"productSpec,omitempty"` +} + +func init() { + t["PerformDvsProductSpecOperationRequestType"] = reflect.TypeOf((*PerformDvsProductSpecOperationRequestType)(nil)).Elem() +} + +type PerformDvsProductSpecOperation_Task PerformDvsProductSpecOperationRequestType + +func init() { + t["PerformDvsProductSpecOperation_Task"] = reflect.TypeOf((*PerformDvsProductSpecOperation_Task)(nil)).Elem() +} + +type PerformDvsProductSpecOperation_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type PerformVsanUpgradePreflightCheck PerformVsanUpgradePreflightCheckRequestType + +func init() { + t["PerformVsanUpgradePreflightCheck"] = reflect.TypeOf((*PerformVsanUpgradePreflightCheck)(nil)).Elem() +} + +type PerformVsanUpgradePreflightCheckRequestType struct { + This ManagedObjectReference `xml:"_this"` + Cluster ManagedObjectReference `xml:"cluster"` + DowngradeFormat *bool `xml:"downgradeFormat"` +} + +func init() { + t["PerformVsanUpgradePreflightCheckRequestType"] = reflect.TypeOf((*PerformVsanUpgradePreflightCheckRequestType)(nil)).Elem() +} + +type PerformVsanUpgradePreflightCheckResponse struct { + Returnval VsanUpgradeSystemPreflightCheckResult `xml:"returnval"` +} + +type PerformVsanUpgradeRequestType struct { + This ManagedObjectReference `xml:"_this"` + Cluster ManagedObjectReference `xml:"cluster"` + PerformObjectUpgrade *bool `xml:"performObjectUpgrade"` + DowngradeFormat *bool `xml:"downgradeFormat"` + AllowReducedRedundancy *bool `xml:"allowReducedRedundancy"` + ExcludeHosts []ManagedObjectReference `xml:"excludeHosts,omitempty"` +} + +func init() { + t["PerformVsanUpgradeRequestType"] = reflect.TypeOf((*PerformVsanUpgradeRequestType)(nil)).Elem() +} + +type PerformVsanUpgrade_Task PerformVsanUpgradeRequestType + +func init() { + t["PerformVsanUpgrade_Task"] = reflect.TypeOf((*PerformVsanUpgrade_Task)(nil)).Elem() +} + +type PerformVsanUpgrade_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type PerformanceDescription struct { + DynamicData + + CounterType []BaseElementDescription `xml:"counterType,typeattr"` + StatsType []BaseElementDescription `xml:"statsType,typeattr"` +} + +func init() { + t["PerformanceDescription"] = reflect.TypeOf((*PerformanceDescription)(nil)).Elem() +} + +type PerformanceManagerCounterLevelMapping struct { + DynamicData + + CounterId int32 `xml:"counterId"` + AggregateLevel int32 `xml:"aggregateLevel,omitempty"` + PerDeviceLevel int32 `xml:"perDeviceLevel,omitempty"` +} + +func init() { + t["PerformanceManagerCounterLevelMapping"] = reflect.TypeOf((*PerformanceManagerCounterLevelMapping)(nil)).Elem() +} + +type PerformanceStatisticsDescription struct { + DynamicData + + Intervals []PerfInterval `xml:"intervals,omitempty"` +} + +func init() { + t["PerformanceStatisticsDescription"] = reflect.TypeOf((*PerformanceStatisticsDescription)(nil)).Elem() +} + +type Permission struct { + DynamicData + + Entity *ManagedObjectReference `xml:"entity,omitempty"` + Principal string `xml:"principal"` + Group bool `xml:"group"` + RoleId int32 `xml:"roleId"` + Propagate bool `xml:"propagate"` +} + +func init() { + t["Permission"] = reflect.TypeOf((*Permission)(nil)).Elem() +} + +type PermissionAddedEvent struct { + PermissionEvent + + Role RoleEventArgument `xml:"role"` + Propagate bool `xml:"propagate"` +} + +func init() { + t["PermissionAddedEvent"] = reflect.TypeOf((*PermissionAddedEvent)(nil)).Elem() +} + +type PermissionEvent struct { + AuthorizationEvent + + Entity ManagedEntityEventArgument `xml:"entity"` + Principal string `xml:"principal"` + Group bool `xml:"group"` +} + +func init() { + t["PermissionEvent"] = reflect.TypeOf((*PermissionEvent)(nil)).Elem() +} + +type PermissionProfile struct { + ApplyProfile + + Key string `xml:"key"` +} + +func init() { + t["PermissionProfile"] = reflect.TypeOf((*PermissionProfile)(nil)).Elem() +} + +type PermissionRemovedEvent struct { + PermissionEvent +} + +func init() { + t["PermissionRemovedEvent"] = reflect.TypeOf((*PermissionRemovedEvent)(nil)).Elem() +} + +type PermissionUpdatedEvent struct { + PermissionEvent + + Role RoleEventArgument `xml:"role"` + Propagate bool `xml:"propagate"` + PrevRole *RoleEventArgument `xml:"prevRole,omitempty"` + PrevPropagate *bool `xml:"prevPropagate"` +} + +func init() { + t["PermissionUpdatedEvent"] = reflect.TypeOf((*PermissionUpdatedEvent)(nil)).Elem() +} + +type PhysCompatRDMNotSupported struct { + RDMNotSupported +} + +func init() { + t["PhysCompatRDMNotSupported"] = reflect.TypeOf((*PhysCompatRDMNotSupported)(nil)).Elem() +} + +type PhysCompatRDMNotSupportedFault PhysCompatRDMNotSupported + +func init() { + t["PhysCompatRDMNotSupportedFault"] = reflect.TypeOf((*PhysCompatRDMNotSupportedFault)(nil)).Elem() +} + +type PhysicalNic struct { + DynamicData + + Key string `xml:"key,omitempty"` + Device string `xml:"device"` + Pci string `xml:"pci"` + Driver string `xml:"driver,omitempty"` + LinkSpeed *PhysicalNicLinkInfo `xml:"linkSpeed,omitempty"` + ValidLinkSpecification []PhysicalNicLinkInfo `xml:"validLinkSpecification,omitempty"` + Spec PhysicalNicSpec `xml:"spec"` + WakeOnLanSupported bool `xml:"wakeOnLanSupported"` + Mac string `xml:"mac"` + FcoeConfiguration *FcoeConfig `xml:"fcoeConfiguration,omitempty"` + VmDirectPathGen2Supported *bool `xml:"vmDirectPathGen2Supported"` + VmDirectPathGen2SupportedMode string `xml:"vmDirectPathGen2SupportedMode,omitempty"` + ResourcePoolSchedulerAllowed *bool `xml:"resourcePoolSchedulerAllowed"` + ResourcePoolSchedulerDisallowedReason []string `xml:"resourcePoolSchedulerDisallowedReason,omitempty"` + AutoNegotiateSupported *bool `xml:"autoNegotiateSupported"` + EnhancedNetworkingStackSupported *bool `xml:"enhancedNetworkingStackSupported"` + EnsInterruptSupported *bool `xml:"ensInterruptSupported"` + RdmaDevice string `xml:"rdmaDevice,omitempty"` +} + +func init() { + t["PhysicalNic"] = reflect.TypeOf((*PhysicalNic)(nil)).Elem() +} + +type PhysicalNicCdpDeviceCapability struct { + DynamicData + + Router bool `xml:"router"` + TransparentBridge bool `xml:"transparentBridge"` + SourceRouteBridge bool `xml:"sourceRouteBridge"` + NetworkSwitch bool `xml:"networkSwitch"` + Host bool `xml:"host"` + IgmpEnabled bool `xml:"igmpEnabled"` + Repeater bool `xml:"repeater"` +} + +func init() { + t["PhysicalNicCdpDeviceCapability"] = reflect.TypeOf((*PhysicalNicCdpDeviceCapability)(nil)).Elem() +} + +type PhysicalNicCdpInfo struct { + DynamicData + + CdpVersion int32 `xml:"cdpVersion,omitempty"` + Timeout int32 `xml:"timeout,omitempty"` + Ttl int32 `xml:"ttl,omitempty"` + Samples int32 `xml:"samples,omitempty"` + DevId string `xml:"devId,omitempty"` + Address string `xml:"address,omitempty"` + PortId string `xml:"portId,omitempty"` + DeviceCapability *PhysicalNicCdpDeviceCapability `xml:"deviceCapability,omitempty"` + SoftwareVersion string `xml:"softwareVersion,omitempty"` + HardwarePlatform string `xml:"hardwarePlatform,omitempty"` + IpPrefix string `xml:"ipPrefix,omitempty"` + IpPrefixLen int32 `xml:"ipPrefixLen,omitempty"` + Vlan int32 `xml:"vlan,omitempty"` + FullDuplex *bool `xml:"fullDuplex"` + Mtu int32 `xml:"mtu,omitempty"` + SystemName string `xml:"systemName,omitempty"` + SystemOID string `xml:"systemOID,omitempty"` + MgmtAddr string `xml:"mgmtAddr,omitempty"` + Location string `xml:"location,omitempty"` +} + +func init() { + t["PhysicalNicCdpInfo"] = reflect.TypeOf((*PhysicalNicCdpInfo)(nil)).Elem() +} + +type PhysicalNicConfig struct { + DynamicData + + Device string `xml:"device"` + Spec PhysicalNicSpec `xml:"spec"` +} + +func init() { + t["PhysicalNicConfig"] = reflect.TypeOf((*PhysicalNicConfig)(nil)).Elem() +} + +type PhysicalNicHint struct { + DynamicData + + VlanId int32 `xml:"vlanId,omitempty"` +} + +func init() { + t["PhysicalNicHint"] = reflect.TypeOf((*PhysicalNicHint)(nil)).Elem() +} + +type PhysicalNicHintInfo struct { + DynamicData + + Device string `xml:"device"` + Subnet []PhysicalNicIpHint `xml:"subnet,omitempty"` + Network []PhysicalNicNameHint `xml:"network,omitempty"` + ConnectedSwitchPort *PhysicalNicCdpInfo `xml:"connectedSwitchPort,omitempty"` + LldpInfo *LinkLayerDiscoveryProtocolInfo `xml:"lldpInfo,omitempty"` +} + +func init() { + t["PhysicalNicHintInfo"] = reflect.TypeOf((*PhysicalNicHintInfo)(nil)).Elem() +} + +type PhysicalNicIpHint struct { + PhysicalNicHint + + IpSubnet string `xml:"ipSubnet"` +} + +func init() { + t["PhysicalNicIpHint"] = reflect.TypeOf((*PhysicalNicIpHint)(nil)).Elem() +} + +type PhysicalNicLinkInfo struct { + DynamicData + + SpeedMb int32 `xml:"speedMb"` + Duplex bool `xml:"duplex"` +} + +func init() { + t["PhysicalNicLinkInfo"] = reflect.TypeOf((*PhysicalNicLinkInfo)(nil)).Elem() +} + +type PhysicalNicNameHint struct { + PhysicalNicHint + + Network string `xml:"network"` +} + +func init() { + t["PhysicalNicNameHint"] = reflect.TypeOf((*PhysicalNicNameHint)(nil)).Elem() +} + +type PhysicalNicProfile struct { + ApplyProfile + + Key string `xml:"key"` +} + +func init() { + t["PhysicalNicProfile"] = reflect.TypeOf((*PhysicalNicProfile)(nil)).Elem() +} + +type PhysicalNicSpec struct { + DynamicData + + Ip *HostIpConfig `xml:"ip,omitempty"` + LinkSpeed *PhysicalNicLinkInfo `xml:"linkSpeed,omitempty"` + EnableEnhancedNetworkingStack *bool `xml:"enableEnhancedNetworkingStack"` + EnsInterruptEnabled *bool `xml:"ensInterruptEnabled"` +} + +func init() { + t["PhysicalNicSpec"] = reflect.TypeOf((*PhysicalNicSpec)(nil)).Elem() +} + +type PlaceVm PlaceVmRequestType + +func init() { + t["PlaceVm"] = reflect.TypeOf((*PlaceVm)(nil)).Elem() +} + +type PlaceVmRequestType struct { + This ManagedObjectReference `xml:"_this"` + PlacementSpec PlacementSpec `xml:"placementSpec"` +} + +func init() { + t["PlaceVmRequestType"] = reflect.TypeOf((*PlaceVmRequestType)(nil)).Elem() +} + +type PlaceVmResponse struct { + Returnval PlacementResult `xml:"returnval"` +} + +type PlacementAction struct { + ClusterAction + + Vm *ManagedObjectReference `xml:"vm,omitempty"` + TargetHost *ManagedObjectReference `xml:"targetHost,omitempty"` + RelocateSpec *VirtualMachineRelocateSpec `xml:"relocateSpec,omitempty"` +} + +func init() { + t["PlacementAction"] = reflect.TypeOf((*PlacementAction)(nil)).Elem() +} + +type PlacementAffinityRule struct { + DynamicData + + RuleType string `xml:"ruleType"` + RuleScope string `xml:"ruleScope"` + Vms []ManagedObjectReference `xml:"vms,omitempty"` + Keys []string `xml:"keys,omitempty"` +} + +func init() { + t["PlacementAffinityRule"] = reflect.TypeOf((*PlacementAffinityRule)(nil)).Elem() +} + +type PlacementRankResult struct { + DynamicData + + Key string `xml:"key"` + Candidate ManagedObjectReference `xml:"candidate"` + ReservedSpaceMB int64 `xml:"reservedSpaceMB"` + UsedSpaceMB int64 `xml:"usedSpaceMB"` + TotalSpaceMB int64 `xml:"totalSpaceMB"` + Utilization float64 `xml:"utilization"` + Faults []LocalizedMethodFault `xml:"faults,omitempty"` +} + +func init() { + t["PlacementRankResult"] = reflect.TypeOf((*PlacementRankResult)(nil)).Elem() +} + +type PlacementRankSpec struct { + DynamicData + + Specs []PlacementSpec `xml:"specs"` + Clusters []ManagedObjectReference `xml:"clusters"` + Rules []PlacementAffinityRule `xml:"rules,omitempty"` + PlacementRankByVm []StorageDrsPlacementRankVmSpec `xml:"placementRankByVm,omitempty"` +} + +func init() { + t["PlacementRankSpec"] = reflect.TypeOf((*PlacementRankSpec)(nil)).Elem() +} + +type PlacementResult struct { + DynamicData + + Recommendations []ClusterRecommendation `xml:"recommendations,omitempty"` + DrsFault *ClusterDrsFaults `xml:"drsFault,omitempty"` +} + +func init() { + t["PlacementResult"] = reflect.TypeOf((*PlacementResult)(nil)).Elem() +} + +type PlacementSpec struct { + DynamicData + + Priority VirtualMachineMovePriority `xml:"priority,omitempty"` + Vm *ManagedObjectReference `xml:"vm,omitempty"` + ConfigSpec *VirtualMachineConfigSpec `xml:"configSpec,omitempty"` + RelocateSpec *VirtualMachineRelocateSpec `xml:"relocateSpec,omitempty"` + Hosts []ManagedObjectReference `xml:"hosts,omitempty"` + Datastores []ManagedObjectReference `xml:"datastores,omitempty"` + StoragePods []ManagedObjectReference `xml:"storagePods,omitempty"` + DisallowPrerequisiteMoves *bool `xml:"disallowPrerequisiteMoves"` + Rules []BaseClusterRuleInfo `xml:"rules,omitempty,typeattr"` + Key string `xml:"key,omitempty"` + PlacementType string `xml:"placementType,omitempty"` + CloneSpec *VirtualMachineCloneSpec `xml:"cloneSpec,omitempty"` + CloneName string `xml:"cloneName,omitempty"` +} + +func init() { + t["PlacementSpec"] = reflect.TypeOf((*PlacementSpec)(nil)).Elem() +} + +type PlatformConfigFault struct { + HostConfigFault + + Text string `xml:"text"` +} + +func init() { + t["PlatformConfigFault"] = reflect.TypeOf((*PlatformConfigFault)(nil)).Elem() +} + +type PlatformConfigFaultFault BasePlatformConfigFault + +func init() { + t["PlatformConfigFaultFault"] = reflect.TypeOf((*PlatformConfigFaultFault)(nil)).Elem() +} + +type PnicUplinkProfile struct { + ApplyProfile + + Key string `xml:"key"` +} + +func init() { + t["PnicUplinkProfile"] = reflect.TypeOf((*PnicUplinkProfile)(nil)).Elem() +} + +type PodDiskLocator struct { + DynamicData + + DiskId int32 `xml:"diskId"` + DiskMoveType string `xml:"diskMoveType,omitempty"` + DiskBackingInfo BaseVirtualDeviceBackingInfo `xml:"diskBackingInfo,omitempty,typeattr"` + Profile []BaseVirtualMachineProfileSpec `xml:"profile,omitempty,typeattr"` +} + +func init() { + t["PodDiskLocator"] = reflect.TypeOf((*PodDiskLocator)(nil)).Elem() +} + +type PodStorageDrsEntry struct { + DynamicData + + StorageDrsConfig StorageDrsConfigInfo `xml:"storageDrsConfig"` + Recommendation []ClusterRecommendation `xml:"recommendation,omitempty"` + DrsFault []ClusterDrsFaults `xml:"drsFault,omitempty"` + ActionHistory []ClusterActionHistory `xml:"actionHistory,omitempty"` +} + +func init() { + t["PodStorageDrsEntry"] = reflect.TypeOf((*PodStorageDrsEntry)(nil)).Elem() +} + +type PolicyOption struct { + DynamicData + + Id string `xml:"id"` + Parameter []KeyAnyValue `xml:"parameter,omitempty"` +} + +func init() { + t["PolicyOption"] = reflect.TypeOf((*PolicyOption)(nil)).Elem() +} + +type PortGroupProfile struct { + ApplyProfile + + Key string `xml:"key"` + Name string `xml:"name"` + Vlan VlanProfile `xml:"vlan"` + Vswitch VirtualSwitchSelectionProfile `xml:"vswitch"` + NetworkPolicy NetworkPolicyProfile `xml:"networkPolicy"` +} + +func init() { + t["PortGroupProfile"] = reflect.TypeOf((*PortGroupProfile)(nil)).Elem() +} + +type PosixUserSearchResult struct { + UserSearchResult + + Id int32 `xml:"id"` + ShellAccess *bool `xml:"shellAccess"` +} + +func init() { + t["PosixUserSearchResult"] = reflect.TypeOf((*PosixUserSearchResult)(nil)).Elem() +} + +type PostEvent PostEventRequestType + +func init() { + t["PostEvent"] = reflect.TypeOf((*PostEvent)(nil)).Elem() +} + +type PostEventRequestType struct { + This ManagedObjectReference `xml:"_this"` + EventToPost BaseEvent `xml:"eventToPost,typeattr"` + TaskInfo *TaskInfo `xml:"taskInfo,omitempty"` +} + +func init() { + t["PostEventRequestType"] = reflect.TypeOf((*PostEventRequestType)(nil)).Elem() +} + +type PostEventResponse struct { +} + +type PostHealthUpdates PostHealthUpdatesRequestType + +func init() { + t["PostHealthUpdates"] = reflect.TypeOf((*PostHealthUpdates)(nil)).Elem() +} + +type PostHealthUpdatesRequestType struct { + This ManagedObjectReference `xml:"_this"` + ProviderId string `xml:"providerId"` + Updates []HealthUpdate `xml:"updates,omitempty"` +} + +func init() { + t["PostHealthUpdatesRequestType"] = reflect.TypeOf((*PostHealthUpdatesRequestType)(nil)).Elem() +} + +type PostHealthUpdatesResponse struct { +} + +type PowerDownHostToStandByRequestType struct { + This ManagedObjectReference `xml:"_this"` + TimeoutSec int32 `xml:"timeoutSec"` + EvacuatePoweredOffVms *bool `xml:"evacuatePoweredOffVms"` +} + +func init() { + t["PowerDownHostToStandByRequestType"] = reflect.TypeOf((*PowerDownHostToStandByRequestType)(nil)).Elem() +} + +type PowerDownHostToStandBy_Task PowerDownHostToStandByRequestType + +func init() { + t["PowerDownHostToStandBy_Task"] = reflect.TypeOf((*PowerDownHostToStandBy_Task)(nil)).Elem() +} + +type PowerDownHostToStandBy_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type PowerOffVAppRequestType struct { + This ManagedObjectReference `xml:"_this"` + Force bool `xml:"force"` +} + +func init() { + t["PowerOffVAppRequestType"] = reflect.TypeOf((*PowerOffVAppRequestType)(nil)).Elem() +} + +type PowerOffVApp_Task PowerOffVAppRequestType + +func init() { + t["PowerOffVApp_Task"] = reflect.TypeOf((*PowerOffVApp_Task)(nil)).Elem() +} + +type PowerOffVApp_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type PowerOffVMRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["PowerOffVMRequestType"] = reflect.TypeOf((*PowerOffVMRequestType)(nil)).Elem() +} + +type PowerOffVM_Task PowerOffVMRequestType + +func init() { + t["PowerOffVM_Task"] = reflect.TypeOf((*PowerOffVM_Task)(nil)).Elem() +} + +type PowerOffVM_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type PowerOnFtSecondaryFailed struct { + VmFaultToleranceIssue + + Vm ManagedObjectReference `xml:"vm"` + VmName string `xml:"vmName"` + HostSelectionBy FtIssuesOnHostHostSelectionType `xml:"hostSelectionBy"` + HostErrors []LocalizedMethodFault `xml:"hostErrors,omitempty"` + RootCause LocalizedMethodFault `xml:"rootCause"` +} + +func init() { + t["PowerOnFtSecondaryFailed"] = reflect.TypeOf((*PowerOnFtSecondaryFailed)(nil)).Elem() +} + +type PowerOnFtSecondaryFailedFault PowerOnFtSecondaryFailed + +func init() { + t["PowerOnFtSecondaryFailedFault"] = reflect.TypeOf((*PowerOnFtSecondaryFailedFault)(nil)).Elem() +} + +type PowerOnFtSecondaryTimedout struct { + Timedout + + Vm ManagedObjectReference `xml:"vm"` + VmName string `xml:"vmName"` + Timeout int32 `xml:"timeout"` +} + +func init() { + t["PowerOnFtSecondaryTimedout"] = reflect.TypeOf((*PowerOnFtSecondaryTimedout)(nil)).Elem() +} + +type PowerOnFtSecondaryTimedoutFault PowerOnFtSecondaryTimedout + +func init() { + t["PowerOnFtSecondaryTimedoutFault"] = reflect.TypeOf((*PowerOnFtSecondaryTimedoutFault)(nil)).Elem() +} + +type PowerOnMultiVMRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm []ManagedObjectReference `xml:"vm"` + Option []BaseOptionValue `xml:"option,omitempty,typeattr"` +} + +func init() { + t["PowerOnMultiVMRequestType"] = reflect.TypeOf((*PowerOnMultiVMRequestType)(nil)).Elem() +} + +type PowerOnMultiVM_Task PowerOnMultiVMRequestType + +func init() { + t["PowerOnMultiVM_Task"] = reflect.TypeOf((*PowerOnMultiVM_Task)(nil)).Elem() +} + +type PowerOnMultiVM_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type PowerOnVAppRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["PowerOnVAppRequestType"] = reflect.TypeOf((*PowerOnVAppRequestType)(nil)).Elem() +} + +type PowerOnVApp_Task PowerOnVAppRequestType + +func init() { + t["PowerOnVApp_Task"] = reflect.TypeOf((*PowerOnVApp_Task)(nil)).Elem() +} + +type PowerOnVApp_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type PowerOnVMRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host *ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["PowerOnVMRequestType"] = reflect.TypeOf((*PowerOnVMRequestType)(nil)).Elem() +} + +type PowerOnVM_Task PowerOnVMRequestType + +func init() { + t["PowerOnVM_Task"] = reflect.TypeOf((*PowerOnVM_Task)(nil)).Elem() +} + +type PowerOnVM_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type PowerSystemCapability struct { + DynamicData + + AvailablePolicy []HostPowerPolicy `xml:"availablePolicy"` +} + +func init() { + t["PowerSystemCapability"] = reflect.TypeOf((*PowerSystemCapability)(nil)).Elem() +} + +type PowerSystemInfo struct { + DynamicData + + CurrentPolicy HostPowerPolicy `xml:"currentPolicy"` +} + +func init() { + t["PowerSystemInfo"] = reflect.TypeOf((*PowerSystemInfo)(nil)).Elem() +} + +type PowerUpHostFromStandByRequestType struct { + This ManagedObjectReference `xml:"_this"` + TimeoutSec int32 `xml:"timeoutSec"` +} + +func init() { + t["PowerUpHostFromStandByRequestType"] = reflect.TypeOf((*PowerUpHostFromStandByRequestType)(nil)).Elem() +} + +type PowerUpHostFromStandBy_Task PowerUpHostFromStandByRequestType + +func init() { + t["PowerUpHostFromStandBy_Task"] = reflect.TypeOf((*PowerUpHostFromStandBy_Task)(nil)).Elem() +} + +type PowerUpHostFromStandBy_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type PrepareCrypto PrepareCryptoRequestType + +func init() { + t["PrepareCrypto"] = reflect.TypeOf((*PrepareCrypto)(nil)).Elem() +} + +type PrepareCryptoRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["PrepareCryptoRequestType"] = reflect.TypeOf((*PrepareCryptoRequestType)(nil)).Elem() +} + +type PrepareCryptoResponse struct { +} + +type PrivilegeAvailability struct { + DynamicData + + PrivId string `xml:"privId"` + IsGranted bool `xml:"isGranted"` +} + +func init() { + t["PrivilegeAvailability"] = reflect.TypeOf((*PrivilegeAvailability)(nil)).Elem() +} + +type PrivilegePolicyDef struct { + DynamicData + + CreatePrivilege string `xml:"createPrivilege"` + ReadPrivilege string `xml:"readPrivilege"` + UpdatePrivilege string `xml:"updatePrivilege"` + DeletePrivilege string `xml:"deletePrivilege"` +} + +func init() { + t["PrivilegePolicyDef"] = reflect.TypeOf((*PrivilegePolicyDef)(nil)).Elem() +} + +type ProductComponentInfo struct { + DynamicData + + Id string `xml:"id"` + Name string `xml:"name"` + Version string `xml:"version"` + Release int32 `xml:"release"` +} + +func init() { + t["ProductComponentInfo"] = reflect.TypeOf((*ProductComponentInfo)(nil)).Elem() +} + +type ProfileApplyProfileElement struct { + ApplyProfile + + Key string `xml:"key"` +} + +func init() { + t["ProfileApplyProfileElement"] = reflect.TypeOf((*ProfileApplyProfileElement)(nil)).Elem() +} + +type ProfileApplyProfileProperty struct { + DynamicData + + PropertyName string `xml:"propertyName"` + Array bool `xml:"array"` + Profile []BaseApplyProfile `xml:"profile,omitempty,typeattr"` +} + +func init() { + t["ProfileApplyProfileProperty"] = reflect.TypeOf((*ProfileApplyProfileProperty)(nil)).Elem() +} + +type ProfileAssociatedEvent struct { + ProfileEvent +} + +func init() { + t["ProfileAssociatedEvent"] = reflect.TypeOf((*ProfileAssociatedEvent)(nil)).Elem() +} + +type ProfileChangedEvent struct { + ProfileEvent +} + +func init() { + t["ProfileChangedEvent"] = reflect.TypeOf((*ProfileChangedEvent)(nil)).Elem() +} + +type ProfileCompositeExpression struct { + ProfileExpression + + Operator string `xml:"operator"` + ExpressionName []string `xml:"expressionName"` +} + +func init() { + t["ProfileCompositeExpression"] = reflect.TypeOf((*ProfileCompositeExpression)(nil)).Elem() +} + +type ProfileCompositePolicyOptionMetadata struct { + ProfilePolicyOptionMetadata + + Option []string `xml:"option"` +} + +func init() { + t["ProfileCompositePolicyOptionMetadata"] = reflect.TypeOf((*ProfileCompositePolicyOptionMetadata)(nil)).Elem() +} + +type ProfileConfigInfo struct { + DynamicData + + Name string `xml:"name"` + Annotation string `xml:"annotation,omitempty"` + Enabled bool `xml:"enabled"` +} + +func init() { + t["ProfileConfigInfo"] = reflect.TypeOf((*ProfileConfigInfo)(nil)).Elem() +} + +type ProfileCreateSpec struct { + DynamicData + + Name string `xml:"name,omitempty"` + Annotation string `xml:"annotation,omitempty"` + Enabled *bool `xml:"enabled"` +} + +func init() { + t["ProfileCreateSpec"] = reflect.TypeOf((*ProfileCreateSpec)(nil)).Elem() +} + +type ProfileCreatedEvent struct { + ProfileEvent +} + +func init() { + t["ProfileCreatedEvent"] = reflect.TypeOf((*ProfileCreatedEvent)(nil)).Elem() +} + +type ProfileDeferredPolicyOptionParameter struct { + DynamicData + + InputPath ProfilePropertyPath `xml:"inputPath"` + Parameter []KeyAnyValue `xml:"parameter,omitempty"` +} + +func init() { + t["ProfileDeferredPolicyOptionParameter"] = reflect.TypeOf((*ProfileDeferredPolicyOptionParameter)(nil)).Elem() +} + +type ProfileDescription struct { + DynamicData + + Section []ProfileDescriptionSection `xml:"section"` +} + +func init() { + t["ProfileDescription"] = reflect.TypeOf((*ProfileDescription)(nil)).Elem() +} + +type ProfileDescriptionSection struct { + DynamicData + + Description ExtendedElementDescription `xml:"description"` + Message []LocalizableMessage `xml:"message,omitempty"` +} + +func init() { + t["ProfileDescriptionSection"] = reflect.TypeOf((*ProfileDescriptionSection)(nil)).Elem() +} + +type ProfileDissociatedEvent struct { + ProfileEvent +} + +func init() { + t["ProfileDissociatedEvent"] = reflect.TypeOf((*ProfileDissociatedEvent)(nil)).Elem() +} + +type ProfileEvent struct { + Event + + Profile ProfileEventArgument `xml:"profile"` +} + +func init() { + t["ProfileEvent"] = reflect.TypeOf((*ProfileEvent)(nil)).Elem() +} + +type ProfileEventArgument struct { + EventArgument + + Profile ManagedObjectReference `xml:"profile"` + Name string `xml:"name"` +} + +func init() { + t["ProfileEventArgument"] = reflect.TypeOf((*ProfileEventArgument)(nil)).Elem() +} + +type ProfileExecuteError struct { + DynamicData + + Path *ProfilePropertyPath `xml:"path,omitempty"` + Message LocalizableMessage `xml:"message"` +} + +func init() { + t["ProfileExecuteError"] = reflect.TypeOf((*ProfileExecuteError)(nil)).Elem() +} + +type ProfileExecuteResult struct { + DynamicData + + Status string `xml:"status"` + ConfigSpec *HostConfigSpec `xml:"configSpec,omitempty"` + InapplicablePath []string `xml:"inapplicablePath,omitempty"` + RequireInput []ProfileDeferredPolicyOptionParameter `xml:"requireInput,omitempty"` + Error []ProfileExecuteError `xml:"error,omitempty"` +} + +func init() { + t["ProfileExecuteResult"] = reflect.TypeOf((*ProfileExecuteResult)(nil)).Elem() +} + +type ProfileExpression struct { + DynamicData + + Id string `xml:"id"` + DisplayName string `xml:"displayName"` + Negated bool `xml:"negated"` +} + +func init() { + t["ProfileExpression"] = reflect.TypeOf((*ProfileExpression)(nil)).Elem() +} + +type ProfileExpressionMetadata struct { + DynamicData + + ExpressionId ExtendedElementDescription `xml:"expressionId"` + Parameter []ProfileParameterMetadata `xml:"parameter,omitempty"` +} + +func init() { + t["ProfileExpressionMetadata"] = reflect.TypeOf((*ProfileExpressionMetadata)(nil)).Elem() +} + +type ProfileMetadata struct { + DynamicData + + Key string `xml:"key"` + ProfileTypeName string `xml:"profileTypeName,omitempty"` + Description *ExtendedDescription `xml:"description,omitempty"` + SortSpec []ProfileMetadataProfileSortSpec `xml:"sortSpec,omitempty"` + ProfileCategory string `xml:"profileCategory,omitempty"` + ProfileComponent string `xml:"profileComponent,omitempty"` + OperationMessages []ProfileMetadataProfileOperationMessage `xml:"operationMessages,omitempty"` +} + +func init() { + t["ProfileMetadata"] = reflect.TypeOf((*ProfileMetadata)(nil)).Elem() +} + +type ProfileMetadataProfileOperationMessage struct { + DynamicData + + OperationName string `xml:"operationName"` + Message LocalizableMessage `xml:"message"` +} + +func init() { + t["ProfileMetadataProfileOperationMessage"] = reflect.TypeOf((*ProfileMetadataProfileOperationMessage)(nil)).Elem() +} + +type ProfileMetadataProfileSortSpec struct { + DynamicData + + PolicyId string `xml:"policyId"` + Parameter string `xml:"parameter"` +} + +func init() { + t["ProfileMetadataProfileSortSpec"] = reflect.TypeOf((*ProfileMetadataProfileSortSpec)(nil)).Elem() +} + +type ProfileParameterMetadata struct { + DynamicData + + Id ExtendedElementDescription `xml:"id"` + Type string `xml:"type"` + Optional bool `xml:"optional"` + DefaultValue AnyType `xml:"defaultValue,omitempty,typeattr"` + Hidden *bool `xml:"hidden"` + SecuritySensitive *bool `xml:"securitySensitive"` + ReadOnly *bool `xml:"readOnly"` + ParameterRelations []ProfileParameterMetadataParameterRelationMetadata `xml:"parameterRelations,omitempty"` +} + +func init() { + t["ProfileParameterMetadata"] = reflect.TypeOf((*ProfileParameterMetadata)(nil)).Elem() +} + +type ProfileParameterMetadataParameterRelationMetadata struct { + DynamicData + + RelationTypes []string `xml:"relationTypes,omitempty"` + Values []AnyType `xml:"values,omitempty,typeattr"` + Path *ProfilePropertyPath `xml:"path,omitempty"` + MinCount int32 `xml:"minCount"` + MaxCount int32 `xml:"maxCount"` +} + +func init() { + t["ProfileParameterMetadataParameterRelationMetadata"] = reflect.TypeOf((*ProfileParameterMetadataParameterRelationMetadata)(nil)).Elem() +} + +type ProfilePolicy struct { + DynamicData + + Id string `xml:"id"` + PolicyOption BasePolicyOption `xml:"policyOption,typeattr"` +} + +func init() { + t["ProfilePolicy"] = reflect.TypeOf((*ProfilePolicy)(nil)).Elem() +} + +type ProfilePolicyMetadata struct { + DynamicData + + Id ExtendedElementDescription `xml:"id"` + PossibleOption []BaseProfilePolicyOptionMetadata `xml:"possibleOption,typeattr"` +} + +func init() { + t["ProfilePolicyMetadata"] = reflect.TypeOf((*ProfilePolicyMetadata)(nil)).Elem() +} + +type ProfilePolicyOptionMetadata struct { + DynamicData + + Id ExtendedElementDescription `xml:"id"` + Parameter []ProfileParameterMetadata `xml:"parameter,omitempty"` +} + +func init() { + t["ProfilePolicyOptionMetadata"] = reflect.TypeOf((*ProfilePolicyOptionMetadata)(nil)).Elem() +} + +type ProfileProfileStructure struct { + DynamicData + + ProfileTypeName string `xml:"profileTypeName"` + Child []ProfileProfileStructureProperty `xml:"child,omitempty"` +} + +func init() { + t["ProfileProfileStructure"] = reflect.TypeOf((*ProfileProfileStructure)(nil)).Elem() +} + +type ProfileProfileStructureProperty struct { + DynamicData + + PropertyName string `xml:"propertyName"` + Array bool `xml:"array"` + Element ProfileProfileStructure `xml:"element"` +} + +func init() { + t["ProfileProfileStructureProperty"] = reflect.TypeOf((*ProfileProfileStructureProperty)(nil)).Elem() +} + +type ProfilePropertyPath struct { + DynamicData + + ProfilePath string `xml:"profilePath"` + PolicyId string `xml:"policyId,omitempty"` + ParameterId string `xml:"parameterId,omitempty"` + PolicyOptionId string `xml:"policyOptionId,omitempty"` +} + +func init() { + t["ProfilePropertyPath"] = reflect.TypeOf((*ProfilePropertyPath)(nil)).Elem() +} + +type ProfileReferenceHostChangedEvent struct { + ProfileEvent + + ReferenceHost *ManagedObjectReference `xml:"referenceHost,omitempty"` + ReferenceHostName string `xml:"referenceHostName,omitempty"` + PrevReferenceHostName string `xml:"prevReferenceHostName,omitempty"` +} + +func init() { + t["ProfileReferenceHostChangedEvent"] = reflect.TypeOf((*ProfileReferenceHostChangedEvent)(nil)).Elem() +} + +type ProfileRemovedEvent struct { + ProfileEvent +} + +func init() { + t["ProfileRemovedEvent"] = reflect.TypeOf((*ProfileRemovedEvent)(nil)).Elem() +} + +type ProfileSerializedCreateSpec struct { + ProfileCreateSpec + + ProfileConfigString string `xml:"profileConfigString"` +} + +func init() { + t["ProfileSerializedCreateSpec"] = reflect.TypeOf((*ProfileSerializedCreateSpec)(nil)).Elem() +} + +type ProfileSimpleExpression struct { + ProfileExpression + + ExpressionType string `xml:"expressionType"` + Parameter []KeyAnyValue `xml:"parameter,omitempty"` +} + +func init() { + t["ProfileSimpleExpression"] = reflect.TypeOf((*ProfileSimpleExpression)(nil)).Elem() +} + +type ProfileUpdateFailed struct { + VimFault + + Failure []ProfileUpdateFailedUpdateFailure `xml:"failure"` + Warnings []ProfileUpdateFailedUpdateFailure `xml:"warnings,omitempty"` +} + +func init() { + t["ProfileUpdateFailed"] = reflect.TypeOf((*ProfileUpdateFailed)(nil)).Elem() +} + +type ProfileUpdateFailedFault ProfileUpdateFailed + +func init() { + t["ProfileUpdateFailedFault"] = reflect.TypeOf((*ProfileUpdateFailedFault)(nil)).Elem() +} + +type ProfileUpdateFailedUpdateFailure struct { + DynamicData + + ProfilePath ProfilePropertyPath `xml:"profilePath"` + ErrMsg LocalizableMessage `xml:"errMsg"` +} + +func init() { + t["ProfileUpdateFailedUpdateFailure"] = reflect.TypeOf((*ProfileUpdateFailedUpdateFailure)(nil)).Elem() +} + +type PromoteDisksRequestType struct { + This ManagedObjectReference `xml:"_this"` + Unlink bool `xml:"unlink"` + Disks []VirtualDisk `xml:"disks,omitempty"` +} + +func init() { + t["PromoteDisksRequestType"] = reflect.TypeOf((*PromoteDisksRequestType)(nil)).Elem() +} + +type PromoteDisks_Task PromoteDisksRequestType + +func init() { + t["PromoteDisks_Task"] = reflect.TypeOf((*PromoteDisks_Task)(nil)).Elem() +} + +type PromoteDisks_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type PropertyChange struct { + DynamicData + + Name string `xml:"name"` + Op PropertyChangeOp `xml:"op"` + Val AnyType `xml:"val,typeattr"` +} + +func init() { + t["PropertyChange"] = reflect.TypeOf((*PropertyChange)(nil)).Elem() +} + +type PropertyFilterSpec struct { + DynamicData + + PropSet []PropertySpec `xml:"propSet"` + ObjectSet []ObjectSpec `xml:"objectSet"` + ReportMissingObjectsInResults *bool `xml:"reportMissingObjectsInResults"` +} + +func init() { + t["PropertyFilterSpec"] = reflect.TypeOf((*PropertyFilterSpec)(nil)).Elem() +} + +type PropertyFilterUpdate struct { + DynamicData + + Filter ManagedObjectReference `xml:"filter"` + ObjectSet []ObjectUpdate `xml:"objectSet,omitempty"` + MissingSet []MissingObject `xml:"missingSet,omitempty"` +} + +func init() { + t["PropertyFilterUpdate"] = reflect.TypeOf((*PropertyFilterUpdate)(nil)).Elem() +} + +type PropertySpec struct { + DynamicData + + Type string `xml:"type"` + All *bool `xml:"all"` + PathSet []string `xml:"pathSet,omitempty"` +} + +func init() { + t["PropertySpec"] = reflect.TypeOf((*PropertySpec)(nil)).Elem() +} + +type PutUsbScanCodes PutUsbScanCodesRequestType + +func init() { + t["PutUsbScanCodes"] = reflect.TypeOf((*PutUsbScanCodes)(nil)).Elem() +} + +type PutUsbScanCodesRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec UsbScanCodeSpec `xml:"spec"` +} + +func init() { + t["PutUsbScanCodesRequestType"] = reflect.TypeOf((*PutUsbScanCodesRequestType)(nil)).Elem() +} + +type PutUsbScanCodesResponse struct { + Returnval int32 `xml:"returnval"` +} + +type QuarantineModeFault struct { + VmConfigFault + + VmName string `xml:"vmName"` + FaultType string `xml:"faultType"` +} + +func init() { + t["QuarantineModeFault"] = reflect.TypeOf((*QuarantineModeFault)(nil)).Elem() +} + +type QuarantineModeFaultFault QuarantineModeFault + +func init() { + t["QuarantineModeFaultFault"] = reflect.TypeOf((*QuarantineModeFaultFault)(nil)).Elem() +} + +type QueryAnswerFileStatus QueryAnswerFileStatusRequestType + +func init() { + t["QueryAnswerFileStatus"] = reflect.TypeOf((*QueryAnswerFileStatus)(nil)).Elem() +} + +type QueryAnswerFileStatusRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host []ManagedObjectReference `xml:"host"` +} + +func init() { + t["QueryAnswerFileStatusRequestType"] = reflect.TypeOf((*QueryAnswerFileStatusRequestType)(nil)).Elem() +} + +type QueryAnswerFileStatusResponse struct { + Returnval []AnswerFileStatusResult `xml:"returnval,omitempty"` +} + +type QueryAssignedLicenses QueryAssignedLicensesRequestType + +func init() { + t["QueryAssignedLicenses"] = reflect.TypeOf((*QueryAssignedLicenses)(nil)).Elem() +} + +type QueryAssignedLicensesRequestType struct { + This ManagedObjectReference `xml:"_this"` + EntityId string `xml:"entityId,omitempty"` +} + +func init() { + t["QueryAssignedLicensesRequestType"] = reflect.TypeOf((*QueryAssignedLicensesRequestType)(nil)).Elem() +} + +type QueryAssignedLicensesResponse struct { + Returnval []LicenseAssignmentManagerLicenseAssignment `xml:"returnval,omitempty"` +} + +type QueryAvailableDisksForVmfs QueryAvailableDisksForVmfsRequestType + +func init() { + t["QueryAvailableDisksForVmfs"] = reflect.TypeOf((*QueryAvailableDisksForVmfs)(nil)).Elem() +} + +type QueryAvailableDisksForVmfsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datastore *ManagedObjectReference `xml:"datastore,omitempty"` +} + +func init() { + t["QueryAvailableDisksForVmfsRequestType"] = reflect.TypeOf((*QueryAvailableDisksForVmfsRequestType)(nil)).Elem() +} + +type QueryAvailableDisksForVmfsResponse struct { + Returnval []HostScsiDisk `xml:"returnval,omitempty"` +} + +type QueryAvailableDvsSpec QueryAvailableDvsSpecRequestType + +func init() { + t["QueryAvailableDvsSpec"] = reflect.TypeOf((*QueryAvailableDvsSpec)(nil)).Elem() +} + +type QueryAvailableDvsSpecRequestType struct { + This ManagedObjectReference `xml:"_this"` + Recommended *bool `xml:"recommended"` +} + +func init() { + t["QueryAvailableDvsSpecRequestType"] = reflect.TypeOf((*QueryAvailableDvsSpecRequestType)(nil)).Elem() +} + +type QueryAvailableDvsSpecResponse struct { + Returnval []DistributedVirtualSwitchProductSpec `xml:"returnval,omitempty"` +} + +type QueryAvailablePartition QueryAvailablePartitionRequestType + +func init() { + t["QueryAvailablePartition"] = reflect.TypeOf((*QueryAvailablePartition)(nil)).Elem() +} + +type QueryAvailablePartitionRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["QueryAvailablePartitionRequestType"] = reflect.TypeOf((*QueryAvailablePartitionRequestType)(nil)).Elem() +} + +type QueryAvailablePartitionResponse struct { + Returnval []HostDiagnosticPartition `xml:"returnval,omitempty"` +} + +type QueryAvailablePerfMetric QueryAvailablePerfMetricRequestType + +func init() { + t["QueryAvailablePerfMetric"] = reflect.TypeOf((*QueryAvailablePerfMetric)(nil)).Elem() +} + +type QueryAvailablePerfMetricRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity ManagedObjectReference `xml:"entity"` + BeginTime *time.Time `xml:"beginTime"` + EndTime *time.Time `xml:"endTime"` + IntervalId int32 `xml:"intervalId,omitempty"` +} + +func init() { + t["QueryAvailablePerfMetricRequestType"] = reflect.TypeOf((*QueryAvailablePerfMetricRequestType)(nil)).Elem() +} + +type QueryAvailablePerfMetricResponse struct { + Returnval []PerfMetricId `xml:"returnval,omitempty"` +} + +type QueryAvailableSsds QueryAvailableSsdsRequestType + +func init() { + t["QueryAvailableSsds"] = reflect.TypeOf((*QueryAvailableSsds)(nil)).Elem() +} + +type QueryAvailableSsdsRequestType struct { + This ManagedObjectReference `xml:"_this"` + VffsPath string `xml:"vffsPath,omitempty"` +} + +func init() { + t["QueryAvailableSsdsRequestType"] = reflect.TypeOf((*QueryAvailableSsdsRequestType)(nil)).Elem() +} + +type QueryAvailableSsdsResponse struct { + Returnval []HostScsiDisk `xml:"returnval,omitempty"` +} + +type QueryAvailableTimeZones QueryAvailableTimeZonesRequestType + +func init() { + t["QueryAvailableTimeZones"] = reflect.TypeOf((*QueryAvailableTimeZones)(nil)).Elem() +} + +type QueryAvailableTimeZonesRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["QueryAvailableTimeZonesRequestType"] = reflect.TypeOf((*QueryAvailableTimeZonesRequestType)(nil)).Elem() +} + +type QueryAvailableTimeZonesResponse struct { + Returnval []HostDateTimeSystemTimeZone `xml:"returnval,omitempty"` +} + +type QueryBootDevices QueryBootDevicesRequestType + +func init() { + t["QueryBootDevices"] = reflect.TypeOf((*QueryBootDevices)(nil)).Elem() +} + +type QueryBootDevicesRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["QueryBootDevicesRequestType"] = reflect.TypeOf((*QueryBootDevicesRequestType)(nil)).Elem() +} + +type QueryBootDevicesResponse struct { + Returnval *HostBootDeviceInfo `xml:"returnval,omitempty"` +} + +type QueryBoundVnics QueryBoundVnicsRequestType + +func init() { + t["QueryBoundVnics"] = reflect.TypeOf((*QueryBoundVnics)(nil)).Elem() +} + +type QueryBoundVnicsRequestType struct { + This ManagedObjectReference `xml:"_this"` + IScsiHbaName string `xml:"iScsiHbaName"` +} + +func init() { + t["QueryBoundVnicsRequestType"] = reflect.TypeOf((*QueryBoundVnicsRequestType)(nil)).Elem() +} + +type QueryBoundVnicsResponse struct { + Returnval []IscsiPortInfo `xml:"returnval,omitempty"` +} + +type QueryCandidateNics QueryCandidateNicsRequestType + +func init() { + t["QueryCandidateNics"] = reflect.TypeOf((*QueryCandidateNics)(nil)).Elem() +} + +type QueryCandidateNicsRequestType struct { + This ManagedObjectReference `xml:"_this"` + IScsiHbaName string `xml:"iScsiHbaName"` +} + +func init() { + t["QueryCandidateNicsRequestType"] = reflect.TypeOf((*QueryCandidateNicsRequestType)(nil)).Elem() +} + +type QueryCandidateNicsResponse struct { + Returnval []IscsiPortInfo `xml:"returnval,omitempty"` +} + +type QueryChangedDiskAreas QueryChangedDiskAreasRequestType + +func init() { + t["QueryChangedDiskAreas"] = reflect.TypeOf((*QueryChangedDiskAreas)(nil)).Elem() +} + +type QueryChangedDiskAreasRequestType struct { + This ManagedObjectReference `xml:"_this"` + Snapshot *ManagedObjectReference `xml:"snapshot,omitempty"` + DeviceKey int32 `xml:"deviceKey"` + StartOffset int64 `xml:"startOffset"` + ChangeId string `xml:"changeId"` +} + +func init() { + t["QueryChangedDiskAreasRequestType"] = reflect.TypeOf((*QueryChangedDiskAreasRequestType)(nil)).Elem() +} + +type QueryChangedDiskAreasResponse struct { + Returnval DiskChangeInfo `xml:"returnval"` +} + +type QueryCmmds QueryCmmdsRequestType + +func init() { + t["QueryCmmds"] = reflect.TypeOf((*QueryCmmds)(nil)).Elem() +} + +type QueryCmmdsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Queries []HostVsanInternalSystemCmmdsQuery `xml:"queries"` +} + +func init() { + t["QueryCmmdsRequestType"] = reflect.TypeOf((*QueryCmmdsRequestType)(nil)).Elem() +} + +type QueryCmmdsResponse struct { + Returnval string `xml:"returnval"` +} + +type QueryCompatibleHostForExistingDvs QueryCompatibleHostForExistingDvsRequestType + +func init() { + t["QueryCompatibleHostForExistingDvs"] = reflect.TypeOf((*QueryCompatibleHostForExistingDvs)(nil)).Elem() +} + +type QueryCompatibleHostForExistingDvsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Container ManagedObjectReference `xml:"container"` + Recursive bool `xml:"recursive"` + Dvs ManagedObjectReference `xml:"dvs"` +} + +func init() { + t["QueryCompatibleHostForExistingDvsRequestType"] = reflect.TypeOf((*QueryCompatibleHostForExistingDvsRequestType)(nil)).Elem() +} + +type QueryCompatibleHostForExistingDvsResponse struct { + Returnval []ManagedObjectReference `xml:"returnval,omitempty"` +} + +type QueryCompatibleHostForNewDvs QueryCompatibleHostForNewDvsRequestType + +func init() { + t["QueryCompatibleHostForNewDvs"] = reflect.TypeOf((*QueryCompatibleHostForNewDvs)(nil)).Elem() +} + +type QueryCompatibleHostForNewDvsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Container ManagedObjectReference `xml:"container"` + Recursive bool `xml:"recursive"` + SwitchProductSpec *DistributedVirtualSwitchProductSpec `xml:"switchProductSpec,omitempty"` +} + +func init() { + t["QueryCompatibleHostForNewDvsRequestType"] = reflect.TypeOf((*QueryCompatibleHostForNewDvsRequestType)(nil)).Elem() +} + +type QueryCompatibleHostForNewDvsResponse struct { + Returnval []ManagedObjectReference `xml:"returnval,omitempty"` +} + +type QueryComplianceStatus QueryComplianceStatusRequestType + +func init() { + t["QueryComplianceStatus"] = reflect.TypeOf((*QueryComplianceStatus)(nil)).Elem() +} + +type QueryComplianceStatusRequestType struct { + This ManagedObjectReference `xml:"_this"` + Profile []ManagedObjectReference `xml:"profile,omitempty"` + Entity []ManagedObjectReference `xml:"entity,omitempty"` +} + +func init() { + t["QueryComplianceStatusRequestType"] = reflect.TypeOf((*QueryComplianceStatusRequestType)(nil)).Elem() +} + +type QueryComplianceStatusResponse struct { + Returnval []ComplianceResult `xml:"returnval,omitempty"` +} + +type QueryConfigOption QueryConfigOptionRequestType + +func init() { + t["QueryConfigOption"] = reflect.TypeOf((*QueryConfigOption)(nil)).Elem() +} + +type QueryConfigOptionDescriptor QueryConfigOptionDescriptorRequestType + +func init() { + t["QueryConfigOptionDescriptor"] = reflect.TypeOf((*QueryConfigOptionDescriptor)(nil)).Elem() +} + +type QueryConfigOptionDescriptorRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["QueryConfigOptionDescriptorRequestType"] = reflect.TypeOf((*QueryConfigOptionDescriptorRequestType)(nil)).Elem() +} + +type QueryConfigOptionDescriptorResponse struct { + Returnval []VirtualMachineConfigOptionDescriptor `xml:"returnval,omitempty"` +} + +type QueryConfigOptionEx QueryConfigOptionExRequestType + +func init() { + t["QueryConfigOptionEx"] = reflect.TypeOf((*QueryConfigOptionEx)(nil)).Elem() +} + +type QueryConfigOptionExRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec *EnvironmentBrowserConfigOptionQuerySpec `xml:"spec,omitempty"` +} + +func init() { + t["QueryConfigOptionExRequestType"] = reflect.TypeOf((*QueryConfigOptionExRequestType)(nil)).Elem() +} + +type QueryConfigOptionExResponse struct { + Returnval *VirtualMachineConfigOption `xml:"returnval,omitempty"` +} + +type QueryConfigOptionRequestType struct { + This ManagedObjectReference `xml:"_this"` + Key string `xml:"key,omitempty"` + Host *ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["QueryConfigOptionRequestType"] = reflect.TypeOf((*QueryConfigOptionRequestType)(nil)).Elem() +} + +type QueryConfigOptionResponse struct { + Returnval *VirtualMachineConfigOption `xml:"returnval,omitempty"` +} + +type QueryConfigTarget QueryConfigTargetRequestType + +func init() { + t["QueryConfigTarget"] = reflect.TypeOf((*QueryConfigTarget)(nil)).Elem() +} + +type QueryConfigTargetRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host *ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["QueryConfigTargetRequestType"] = reflect.TypeOf((*QueryConfigTargetRequestType)(nil)).Elem() +} + +type QueryConfigTargetResponse struct { + Returnval *ConfigTarget `xml:"returnval,omitempty"` +} + +type QueryConfiguredModuleOptionString QueryConfiguredModuleOptionStringRequestType + +func init() { + t["QueryConfiguredModuleOptionString"] = reflect.TypeOf((*QueryConfiguredModuleOptionString)(nil)).Elem() +} + +type QueryConfiguredModuleOptionStringRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` +} + +func init() { + t["QueryConfiguredModuleOptionStringRequestType"] = reflect.TypeOf((*QueryConfiguredModuleOptionStringRequestType)(nil)).Elem() +} + +type QueryConfiguredModuleOptionStringResponse struct { + Returnval string `xml:"returnval"` +} + +type QueryConnectionInfo QueryConnectionInfoRequestType + +func init() { + t["QueryConnectionInfo"] = reflect.TypeOf((*QueryConnectionInfo)(nil)).Elem() +} + +type QueryConnectionInfoRequestType struct { + This ManagedObjectReference `xml:"_this"` + Hostname string `xml:"hostname"` + Port int32 `xml:"port"` + Username string `xml:"username"` + Password string `xml:"password"` + SslThumbprint string `xml:"sslThumbprint,omitempty"` +} + +func init() { + t["QueryConnectionInfoRequestType"] = reflect.TypeOf((*QueryConnectionInfoRequestType)(nil)).Elem() +} + +type QueryConnectionInfoResponse struct { + Returnval HostConnectInfo `xml:"returnval"` +} + +type QueryConnectionInfoViaSpec QueryConnectionInfoViaSpecRequestType + +func init() { + t["QueryConnectionInfoViaSpec"] = reflect.TypeOf((*QueryConnectionInfoViaSpec)(nil)).Elem() +} + +type QueryConnectionInfoViaSpecRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec HostConnectSpec `xml:"spec"` +} + +func init() { + t["QueryConnectionInfoViaSpecRequestType"] = reflect.TypeOf((*QueryConnectionInfoViaSpecRequestType)(nil)).Elem() +} + +type QueryConnectionInfoViaSpecResponse struct { + Returnval HostConnectInfo `xml:"returnval"` +} + +type QueryCryptoKeyStatus QueryCryptoKeyStatusRequestType + +func init() { + t["QueryCryptoKeyStatus"] = reflect.TypeOf((*QueryCryptoKeyStatus)(nil)).Elem() +} + +type QueryCryptoKeyStatusRequestType struct { + This ManagedObjectReference `xml:"_this"` + KeyIds []CryptoKeyId `xml:"keyIds,omitempty"` + CheckKeyBitMap int32 `xml:"checkKeyBitMap"` +} + +func init() { + t["QueryCryptoKeyStatusRequestType"] = reflect.TypeOf((*QueryCryptoKeyStatusRequestType)(nil)).Elem() +} + +type QueryCryptoKeyStatusResponse struct { + Returnval []CryptoManagerKmipCryptoKeyStatus `xml:"returnval,omitempty"` +} + +type QueryDatastorePerformanceSummary QueryDatastorePerformanceSummaryRequestType + +func init() { + t["QueryDatastorePerformanceSummary"] = reflect.TypeOf((*QueryDatastorePerformanceSummary)(nil)).Elem() +} + +type QueryDatastorePerformanceSummaryRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["QueryDatastorePerformanceSummaryRequestType"] = reflect.TypeOf((*QueryDatastorePerformanceSummaryRequestType)(nil)).Elem() +} + +type QueryDatastorePerformanceSummaryResponse struct { + Returnval []StoragePerformanceSummary `xml:"returnval,omitempty"` +} + +type QueryDateTime QueryDateTimeRequestType + +func init() { + t["QueryDateTime"] = reflect.TypeOf((*QueryDateTime)(nil)).Elem() +} + +type QueryDateTimeRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["QueryDateTimeRequestType"] = reflect.TypeOf((*QueryDateTimeRequestType)(nil)).Elem() +} + +type QueryDateTimeResponse struct { + Returnval time.Time `xml:"returnval"` +} + +type QueryDescriptions QueryDescriptionsRequestType + +func init() { + t["QueryDescriptions"] = reflect.TypeOf((*QueryDescriptions)(nil)).Elem() +} + +type QueryDescriptionsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host *ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["QueryDescriptionsRequestType"] = reflect.TypeOf((*QueryDescriptionsRequestType)(nil)).Elem() +} + +type QueryDescriptionsResponse struct { + Returnval []DiagnosticManagerLogDescriptor `xml:"returnval,omitempty"` +} + +type QueryDisksForVsan QueryDisksForVsanRequestType + +func init() { + t["QueryDisksForVsan"] = reflect.TypeOf((*QueryDisksForVsan)(nil)).Elem() +} + +type QueryDisksForVsanRequestType struct { + This ManagedObjectReference `xml:"_this"` + CanonicalName []string `xml:"canonicalName,omitempty"` +} + +func init() { + t["QueryDisksForVsanRequestType"] = reflect.TypeOf((*QueryDisksForVsanRequestType)(nil)).Elem() +} + +type QueryDisksForVsanResponse struct { + Returnval []VsanHostDiskResult `xml:"returnval,omitempty"` +} + +type QueryDisksUsingFilter QueryDisksUsingFilterRequestType + +func init() { + t["QueryDisksUsingFilter"] = reflect.TypeOf((*QueryDisksUsingFilter)(nil)).Elem() +} + +type QueryDisksUsingFilterRequestType struct { + This ManagedObjectReference `xml:"_this"` + FilterId string `xml:"filterId"` + CompRes ManagedObjectReference `xml:"compRes"` +} + +func init() { + t["QueryDisksUsingFilterRequestType"] = reflect.TypeOf((*QueryDisksUsingFilterRequestType)(nil)).Elem() +} + +type QueryDisksUsingFilterResponse struct { + Returnval []VirtualDiskId `xml:"returnval"` +} + +type QueryDvsByUuid QueryDvsByUuidRequestType + +func init() { + t["QueryDvsByUuid"] = reflect.TypeOf((*QueryDvsByUuid)(nil)).Elem() +} + +type QueryDvsByUuidRequestType struct { + This ManagedObjectReference `xml:"_this"` + Uuid string `xml:"uuid"` +} + +func init() { + t["QueryDvsByUuidRequestType"] = reflect.TypeOf((*QueryDvsByUuidRequestType)(nil)).Elem() +} + +type QueryDvsByUuidResponse struct { + Returnval *ManagedObjectReference `xml:"returnval,omitempty"` +} + +type QueryDvsCheckCompatibility QueryDvsCheckCompatibilityRequestType + +func init() { + t["QueryDvsCheckCompatibility"] = reflect.TypeOf((*QueryDvsCheckCompatibility)(nil)).Elem() +} + +type QueryDvsCheckCompatibilityRequestType struct { + This ManagedObjectReference `xml:"_this"` + HostContainer DistributedVirtualSwitchManagerHostContainer `xml:"hostContainer"` + DvsProductSpec *DistributedVirtualSwitchManagerDvsProductSpec `xml:"dvsProductSpec,omitempty"` + HostFilterSpec []BaseDistributedVirtualSwitchManagerHostDvsFilterSpec `xml:"hostFilterSpec,omitempty,typeattr"` +} + +func init() { + t["QueryDvsCheckCompatibilityRequestType"] = reflect.TypeOf((*QueryDvsCheckCompatibilityRequestType)(nil)).Elem() +} + +type QueryDvsCheckCompatibilityResponse struct { + Returnval []DistributedVirtualSwitchManagerCompatibilityResult `xml:"returnval,omitempty"` +} + +type QueryDvsCompatibleHostSpec QueryDvsCompatibleHostSpecRequestType + +func init() { + t["QueryDvsCompatibleHostSpec"] = reflect.TypeOf((*QueryDvsCompatibleHostSpec)(nil)).Elem() +} + +type QueryDvsCompatibleHostSpecRequestType struct { + This ManagedObjectReference `xml:"_this"` + SwitchProductSpec *DistributedVirtualSwitchProductSpec `xml:"switchProductSpec,omitempty"` +} + +func init() { + t["QueryDvsCompatibleHostSpecRequestType"] = reflect.TypeOf((*QueryDvsCompatibleHostSpecRequestType)(nil)).Elem() +} + +type QueryDvsCompatibleHostSpecResponse struct { + Returnval []DistributedVirtualSwitchHostProductSpec `xml:"returnval,omitempty"` +} + +type QueryDvsConfigTarget QueryDvsConfigTargetRequestType + +func init() { + t["QueryDvsConfigTarget"] = reflect.TypeOf((*QueryDvsConfigTarget)(nil)).Elem() +} + +type QueryDvsConfigTargetRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host *ManagedObjectReference `xml:"host,omitempty"` + Dvs *ManagedObjectReference `xml:"dvs,omitempty"` +} + +func init() { + t["QueryDvsConfigTargetRequestType"] = reflect.TypeOf((*QueryDvsConfigTargetRequestType)(nil)).Elem() +} + +type QueryDvsConfigTargetResponse struct { + Returnval DVSManagerDvsConfigTarget `xml:"returnval"` +} + +type QueryDvsFeatureCapability QueryDvsFeatureCapabilityRequestType + +func init() { + t["QueryDvsFeatureCapability"] = reflect.TypeOf((*QueryDvsFeatureCapability)(nil)).Elem() +} + +type QueryDvsFeatureCapabilityRequestType struct { + This ManagedObjectReference `xml:"_this"` + SwitchProductSpec *DistributedVirtualSwitchProductSpec `xml:"switchProductSpec,omitempty"` +} + +func init() { + t["QueryDvsFeatureCapabilityRequestType"] = reflect.TypeOf((*QueryDvsFeatureCapabilityRequestType)(nil)).Elem() +} + +type QueryDvsFeatureCapabilityResponse struct { + Returnval BaseDVSFeatureCapability `xml:"returnval,omitempty,typeattr"` +} + +type QueryEvents QueryEventsRequestType + +func init() { + t["QueryEvents"] = reflect.TypeOf((*QueryEvents)(nil)).Elem() +} + +type QueryEventsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Filter EventFilterSpec `xml:"filter"` +} + +func init() { + t["QueryEventsRequestType"] = reflect.TypeOf((*QueryEventsRequestType)(nil)).Elem() +} + +type QueryEventsResponse struct { + Returnval []BaseEvent `xml:"returnval,omitempty,typeattr"` +} + +type QueryExpressionMetadata QueryExpressionMetadataRequestType + +func init() { + t["QueryExpressionMetadata"] = reflect.TypeOf((*QueryExpressionMetadata)(nil)).Elem() +} + +type QueryExpressionMetadataRequestType struct { + This ManagedObjectReference `xml:"_this"` + ExpressionName []string `xml:"expressionName,omitempty"` + Profile *ManagedObjectReference `xml:"profile,omitempty"` +} + +func init() { + t["QueryExpressionMetadataRequestType"] = reflect.TypeOf((*QueryExpressionMetadataRequestType)(nil)).Elem() +} + +type QueryExpressionMetadataResponse struct { + Returnval []ProfileExpressionMetadata `xml:"returnval,omitempty"` +} + +type QueryExtensionIpAllocationUsage QueryExtensionIpAllocationUsageRequestType + +func init() { + t["QueryExtensionIpAllocationUsage"] = reflect.TypeOf((*QueryExtensionIpAllocationUsage)(nil)).Elem() +} + +type QueryExtensionIpAllocationUsageRequestType struct { + This ManagedObjectReference `xml:"_this"` + ExtensionKeys []string `xml:"extensionKeys,omitempty"` +} + +func init() { + t["QueryExtensionIpAllocationUsageRequestType"] = reflect.TypeOf((*QueryExtensionIpAllocationUsageRequestType)(nil)).Elem() +} + +type QueryExtensionIpAllocationUsageResponse struct { + Returnval []ExtensionManagerIpAllocationUsage `xml:"returnval,omitempty"` +} + +type QueryFaultToleranceCompatibility QueryFaultToleranceCompatibilityRequestType + +func init() { + t["QueryFaultToleranceCompatibility"] = reflect.TypeOf((*QueryFaultToleranceCompatibility)(nil)).Elem() +} + +type QueryFaultToleranceCompatibilityEx QueryFaultToleranceCompatibilityExRequestType + +func init() { + t["QueryFaultToleranceCompatibilityEx"] = reflect.TypeOf((*QueryFaultToleranceCompatibilityEx)(nil)).Elem() +} + +type QueryFaultToleranceCompatibilityExRequestType struct { + This ManagedObjectReference `xml:"_this"` + ForLegacyFt *bool `xml:"forLegacyFt"` +} + +func init() { + t["QueryFaultToleranceCompatibilityExRequestType"] = reflect.TypeOf((*QueryFaultToleranceCompatibilityExRequestType)(nil)).Elem() +} + +type QueryFaultToleranceCompatibilityExResponse struct { + Returnval []LocalizedMethodFault `xml:"returnval,omitempty"` +} + +type QueryFaultToleranceCompatibilityRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["QueryFaultToleranceCompatibilityRequestType"] = reflect.TypeOf((*QueryFaultToleranceCompatibilityRequestType)(nil)).Elem() +} + +type QueryFaultToleranceCompatibilityResponse struct { + Returnval []LocalizedMethodFault `xml:"returnval,omitempty"` +} + +type QueryFilterEntities QueryFilterEntitiesRequestType + +func init() { + t["QueryFilterEntities"] = reflect.TypeOf((*QueryFilterEntities)(nil)).Elem() +} + +type QueryFilterEntitiesRequestType struct { + This ManagedObjectReference `xml:"_this"` + FilterId string `xml:"filterId"` +} + +func init() { + t["QueryFilterEntitiesRequestType"] = reflect.TypeOf((*QueryFilterEntitiesRequestType)(nil)).Elem() +} + +type QueryFilterEntitiesResponse struct { + Returnval []ManagedObjectReference `xml:"returnval,omitempty"` +} + +type QueryFilterInfoIds QueryFilterInfoIdsRequestType + +func init() { + t["QueryFilterInfoIds"] = reflect.TypeOf((*QueryFilterInfoIds)(nil)).Elem() +} + +type QueryFilterInfoIdsRequestType struct { + This ManagedObjectReference `xml:"_this"` + FilterId string `xml:"filterId"` +} + +func init() { + t["QueryFilterInfoIdsRequestType"] = reflect.TypeOf((*QueryFilterInfoIdsRequestType)(nil)).Elem() +} + +type QueryFilterInfoIdsResponse struct { + Returnval []string `xml:"returnval,omitempty"` +} + +type QueryFilterList QueryFilterListRequestType + +func init() { + t["QueryFilterList"] = reflect.TypeOf((*QueryFilterList)(nil)).Elem() +} + +type QueryFilterListRequestType struct { + This ManagedObjectReference `xml:"_this"` + ProviderId string `xml:"providerId"` +} + +func init() { + t["QueryFilterListRequestType"] = reflect.TypeOf((*QueryFilterListRequestType)(nil)).Elem() +} + +type QueryFilterListResponse struct { + Returnval []string `xml:"returnval,omitempty"` +} + +type QueryFilterName QueryFilterNameRequestType + +func init() { + t["QueryFilterName"] = reflect.TypeOf((*QueryFilterName)(nil)).Elem() +} + +type QueryFilterNameRequestType struct { + This ManagedObjectReference `xml:"_this"` + FilterId string `xml:"filterId"` +} + +func init() { + t["QueryFilterNameRequestType"] = reflect.TypeOf((*QueryFilterNameRequestType)(nil)).Elem() +} + +type QueryFilterNameResponse struct { + Returnval string `xml:"returnval"` +} + +type QueryFirmwareConfigUploadURL QueryFirmwareConfigUploadURLRequestType + +func init() { + t["QueryFirmwareConfigUploadURL"] = reflect.TypeOf((*QueryFirmwareConfigUploadURL)(nil)).Elem() +} + +type QueryFirmwareConfigUploadURLRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["QueryFirmwareConfigUploadURLRequestType"] = reflect.TypeOf((*QueryFirmwareConfigUploadURLRequestType)(nil)).Elem() +} + +type QueryFirmwareConfigUploadURLResponse struct { + Returnval string `xml:"returnval"` +} + +type QueryHealthUpdateInfos QueryHealthUpdateInfosRequestType + +func init() { + t["QueryHealthUpdateInfos"] = reflect.TypeOf((*QueryHealthUpdateInfos)(nil)).Elem() +} + +type QueryHealthUpdateInfosRequestType struct { + This ManagedObjectReference `xml:"_this"` + ProviderId string `xml:"providerId"` +} + +func init() { + t["QueryHealthUpdateInfosRequestType"] = reflect.TypeOf((*QueryHealthUpdateInfosRequestType)(nil)).Elem() +} + +type QueryHealthUpdateInfosResponse struct { + Returnval []HealthUpdateInfo `xml:"returnval,omitempty"` +} + +type QueryHealthUpdates QueryHealthUpdatesRequestType + +func init() { + t["QueryHealthUpdates"] = reflect.TypeOf((*QueryHealthUpdates)(nil)).Elem() +} + +type QueryHealthUpdatesRequestType struct { + This ManagedObjectReference `xml:"_this"` + ProviderId string `xml:"providerId"` +} + +func init() { + t["QueryHealthUpdatesRequestType"] = reflect.TypeOf((*QueryHealthUpdatesRequestType)(nil)).Elem() +} + +type QueryHealthUpdatesResponse struct { + Returnval []HealthUpdate `xml:"returnval,omitempty"` +} + +type QueryHostConnectionInfo QueryHostConnectionInfoRequestType + +func init() { + t["QueryHostConnectionInfo"] = reflect.TypeOf((*QueryHostConnectionInfo)(nil)).Elem() +} + +type QueryHostConnectionInfoRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["QueryHostConnectionInfoRequestType"] = reflect.TypeOf((*QueryHostConnectionInfoRequestType)(nil)).Elem() +} + +type QueryHostConnectionInfoResponse struct { + Returnval HostConnectInfo `xml:"returnval"` +} + +type QueryHostPatchRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec *HostPatchManagerPatchManagerOperationSpec `xml:"spec,omitempty"` +} + +func init() { + t["QueryHostPatchRequestType"] = reflect.TypeOf((*QueryHostPatchRequestType)(nil)).Elem() +} + +type QueryHostPatch_Task QueryHostPatchRequestType + +func init() { + t["QueryHostPatch_Task"] = reflect.TypeOf((*QueryHostPatch_Task)(nil)).Elem() +} + +type QueryHostPatch_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type QueryHostProfileMetadata QueryHostProfileMetadataRequestType + +func init() { + t["QueryHostProfileMetadata"] = reflect.TypeOf((*QueryHostProfileMetadata)(nil)).Elem() +} + +type QueryHostProfileMetadataRequestType struct { + This ManagedObjectReference `xml:"_this"` + ProfileName []string `xml:"profileName,omitempty"` + Profile *ManagedObjectReference `xml:"profile,omitempty"` +} + +func init() { + t["QueryHostProfileMetadataRequestType"] = reflect.TypeOf((*QueryHostProfileMetadataRequestType)(nil)).Elem() +} + +type QueryHostProfileMetadataResponse struct { + Returnval []ProfileMetadata `xml:"returnval,omitempty"` +} + +type QueryHostStatus QueryHostStatusRequestType + +func init() { + t["QueryHostStatus"] = reflect.TypeOf((*QueryHostStatus)(nil)).Elem() +} + +type QueryHostStatusRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["QueryHostStatusRequestType"] = reflect.TypeOf((*QueryHostStatusRequestType)(nil)).Elem() +} + +type QueryHostStatusResponse struct { + Returnval VsanHostClusterStatus `xml:"returnval"` +} + +type QueryHostsWithAttachedLun QueryHostsWithAttachedLunRequestType + +func init() { + t["QueryHostsWithAttachedLun"] = reflect.TypeOf((*QueryHostsWithAttachedLun)(nil)).Elem() +} + +type QueryHostsWithAttachedLunRequestType struct { + This ManagedObjectReference `xml:"_this"` + LunUuid string `xml:"lunUuid"` +} + +func init() { + t["QueryHostsWithAttachedLunRequestType"] = reflect.TypeOf((*QueryHostsWithAttachedLunRequestType)(nil)).Elem() +} + +type QueryHostsWithAttachedLunResponse struct { + Returnval []ManagedObjectReference `xml:"returnval,omitempty"` +} + +type QueryIORMConfigOption QueryIORMConfigOptionRequestType + +func init() { + t["QueryIORMConfigOption"] = reflect.TypeOf((*QueryIORMConfigOption)(nil)).Elem() +} + +type QueryIORMConfigOptionRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host ManagedObjectReference `xml:"host"` +} + +func init() { + t["QueryIORMConfigOptionRequestType"] = reflect.TypeOf((*QueryIORMConfigOptionRequestType)(nil)).Elem() +} + +type QueryIORMConfigOptionResponse struct { + Returnval StorageIORMConfigOption `xml:"returnval"` +} + +type QueryIPAllocations QueryIPAllocationsRequestType + +func init() { + t["QueryIPAllocations"] = reflect.TypeOf((*QueryIPAllocations)(nil)).Elem() +} + +type QueryIPAllocationsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Dc ManagedObjectReference `xml:"dc"` + PoolId int32 `xml:"poolId"` + ExtensionKey string `xml:"extensionKey"` +} + +func init() { + t["QueryIPAllocationsRequestType"] = reflect.TypeOf((*QueryIPAllocationsRequestType)(nil)).Elem() +} + +type QueryIPAllocationsResponse struct { + Returnval []IpPoolManagerIpAllocation `xml:"returnval"` +} + +type QueryIoFilterInfo QueryIoFilterInfoRequestType + +func init() { + t["QueryIoFilterInfo"] = reflect.TypeOf((*QueryIoFilterInfo)(nil)).Elem() +} + +type QueryIoFilterInfoRequestType struct { + This ManagedObjectReference `xml:"_this"` + CompRes ManagedObjectReference `xml:"compRes"` +} + +func init() { + t["QueryIoFilterInfoRequestType"] = reflect.TypeOf((*QueryIoFilterInfoRequestType)(nil)).Elem() +} + +type QueryIoFilterInfoResponse struct { + Returnval []ClusterIoFilterInfo `xml:"returnval,omitempty"` +} + +type QueryIoFilterIssues QueryIoFilterIssuesRequestType + +func init() { + t["QueryIoFilterIssues"] = reflect.TypeOf((*QueryIoFilterIssues)(nil)).Elem() +} + +type QueryIoFilterIssuesRequestType struct { + This ManagedObjectReference `xml:"_this"` + FilterId string `xml:"filterId"` + CompRes ManagedObjectReference `xml:"compRes"` +} + +func init() { + t["QueryIoFilterIssuesRequestType"] = reflect.TypeOf((*QueryIoFilterIssuesRequestType)(nil)).Elem() +} + +type QueryIoFilterIssuesResponse struct { + Returnval IoFilterQueryIssueResult `xml:"returnval"` +} + +type QueryIpPools QueryIpPoolsRequestType + +func init() { + t["QueryIpPools"] = reflect.TypeOf((*QueryIpPools)(nil)).Elem() +} + +type QueryIpPoolsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Dc ManagedObjectReference `xml:"dc"` +} + +func init() { + t["QueryIpPoolsRequestType"] = reflect.TypeOf((*QueryIpPoolsRequestType)(nil)).Elem() +} + +type QueryIpPoolsResponse struct { + Returnval []IpPool `xml:"returnval,omitempty"` +} + +type QueryLicenseSourceAvailability QueryLicenseSourceAvailabilityRequestType + +func init() { + t["QueryLicenseSourceAvailability"] = reflect.TypeOf((*QueryLicenseSourceAvailability)(nil)).Elem() +} + +type QueryLicenseSourceAvailabilityRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host *ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["QueryLicenseSourceAvailabilityRequestType"] = reflect.TypeOf((*QueryLicenseSourceAvailabilityRequestType)(nil)).Elem() +} + +type QueryLicenseSourceAvailabilityResponse struct { + Returnval []LicenseAvailabilityInfo `xml:"returnval,omitempty"` +} + +type QueryLicenseUsage QueryLicenseUsageRequestType + +func init() { + t["QueryLicenseUsage"] = reflect.TypeOf((*QueryLicenseUsage)(nil)).Elem() +} + +type QueryLicenseUsageRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host *ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["QueryLicenseUsageRequestType"] = reflect.TypeOf((*QueryLicenseUsageRequestType)(nil)).Elem() +} + +type QueryLicenseUsageResponse struct { + Returnval LicenseUsageInfo `xml:"returnval"` +} + +type QueryLockdownExceptions QueryLockdownExceptionsRequestType + +func init() { + t["QueryLockdownExceptions"] = reflect.TypeOf((*QueryLockdownExceptions)(nil)).Elem() +} + +type QueryLockdownExceptionsRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["QueryLockdownExceptionsRequestType"] = reflect.TypeOf((*QueryLockdownExceptionsRequestType)(nil)).Elem() +} + +type QueryLockdownExceptionsResponse struct { + Returnval []string `xml:"returnval,omitempty"` +} + +type QueryManagedBy QueryManagedByRequestType + +func init() { + t["QueryManagedBy"] = reflect.TypeOf((*QueryManagedBy)(nil)).Elem() +} + +type QueryManagedByRequestType struct { + This ManagedObjectReference `xml:"_this"` + ExtensionKey string `xml:"extensionKey"` +} + +func init() { + t["QueryManagedByRequestType"] = reflect.TypeOf((*QueryManagedByRequestType)(nil)).Elem() +} + +type QueryManagedByResponse struct { + Returnval []ManagedObjectReference `xml:"returnval,omitempty"` +} + +type QueryMemoryOverhead QueryMemoryOverheadRequestType + +func init() { + t["QueryMemoryOverhead"] = reflect.TypeOf((*QueryMemoryOverhead)(nil)).Elem() +} + +type QueryMemoryOverheadEx QueryMemoryOverheadExRequestType + +func init() { + t["QueryMemoryOverheadEx"] = reflect.TypeOf((*QueryMemoryOverheadEx)(nil)).Elem() +} + +type QueryMemoryOverheadExRequestType struct { + This ManagedObjectReference `xml:"_this"` + VmConfigInfo VirtualMachineConfigInfo `xml:"vmConfigInfo"` +} + +func init() { + t["QueryMemoryOverheadExRequestType"] = reflect.TypeOf((*QueryMemoryOverheadExRequestType)(nil)).Elem() +} + +type QueryMemoryOverheadExResponse struct { + Returnval int64 `xml:"returnval"` +} + +type QueryMemoryOverheadRequestType struct { + This ManagedObjectReference `xml:"_this"` + MemorySize int64 `xml:"memorySize"` + VideoRamSize int32 `xml:"videoRamSize,omitempty"` + NumVcpus int32 `xml:"numVcpus"` +} + +func init() { + t["QueryMemoryOverheadRequestType"] = reflect.TypeOf((*QueryMemoryOverheadRequestType)(nil)).Elem() +} + +type QueryMemoryOverheadResponse struct { + Returnval int64 `xml:"returnval"` +} + +type QueryMigrationDependencies QueryMigrationDependenciesRequestType + +func init() { + t["QueryMigrationDependencies"] = reflect.TypeOf((*QueryMigrationDependencies)(nil)).Elem() +} + +type QueryMigrationDependenciesRequestType struct { + This ManagedObjectReference `xml:"_this"` + PnicDevice []string `xml:"pnicDevice"` +} + +func init() { + t["QueryMigrationDependenciesRequestType"] = reflect.TypeOf((*QueryMigrationDependenciesRequestType)(nil)).Elem() +} + +type QueryMigrationDependenciesResponse struct { + Returnval IscsiMigrationDependency `xml:"returnval"` +} + +type QueryModules QueryModulesRequestType + +func init() { + t["QueryModules"] = reflect.TypeOf((*QueryModules)(nil)).Elem() +} + +type QueryModulesRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["QueryModulesRequestType"] = reflect.TypeOf((*QueryModulesRequestType)(nil)).Elem() +} + +type QueryModulesResponse struct { + Returnval []KernelModuleInfo `xml:"returnval,omitempty"` +} + +type QueryMonitoredEntities QueryMonitoredEntitiesRequestType + +func init() { + t["QueryMonitoredEntities"] = reflect.TypeOf((*QueryMonitoredEntities)(nil)).Elem() +} + +type QueryMonitoredEntitiesRequestType struct { + This ManagedObjectReference `xml:"_this"` + ProviderId string `xml:"providerId"` +} + +func init() { + t["QueryMonitoredEntitiesRequestType"] = reflect.TypeOf((*QueryMonitoredEntitiesRequestType)(nil)).Elem() +} + +type QueryMonitoredEntitiesResponse struct { + Returnval []ManagedObjectReference `xml:"returnval,omitempty"` +} + +type QueryNFSUser QueryNFSUserRequestType + +func init() { + t["QueryNFSUser"] = reflect.TypeOf((*QueryNFSUser)(nil)).Elem() +} + +type QueryNFSUserRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["QueryNFSUserRequestType"] = reflect.TypeOf((*QueryNFSUserRequestType)(nil)).Elem() +} + +type QueryNFSUserResponse struct { + Returnval *HostNasVolumeUserInfo `xml:"returnval,omitempty"` +} + +type QueryNetConfig QueryNetConfigRequestType + +func init() { + t["QueryNetConfig"] = reflect.TypeOf((*QueryNetConfig)(nil)).Elem() +} + +type QueryNetConfigRequestType struct { + This ManagedObjectReference `xml:"_this"` + NicType string `xml:"nicType"` +} + +func init() { + t["QueryNetConfigRequestType"] = reflect.TypeOf((*QueryNetConfigRequestType)(nil)).Elem() +} + +type QueryNetConfigResponse struct { + Returnval *VirtualNicManagerNetConfig `xml:"returnval,omitempty"` +} + +type QueryNetworkHint QueryNetworkHintRequestType + +func init() { + t["QueryNetworkHint"] = reflect.TypeOf((*QueryNetworkHint)(nil)).Elem() +} + +type QueryNetworkHintRequestType struct { + This ManagedObjectReference `xml:"_this"` + Device []string `xml:"device,omitempty"` +} + +func init() { + t["QueryNetworkHintRequestType"] = reflect.TypeOf((*QueryNetworkHintRequestType)(nil)).Elem() +} + +type QueryNetworkHintResponse struct { + Returnval []PhysicalNicHintInfo `xml:"returnval,omitempty"` +} + +type QueryObjectsOnPhysicalVsanDisk QueryObjectsOnPhysicalVsanDiskRequestType + +func init() { + t["QueryObjectsOnPhysicalVsanDisk"] = reflect.TypeOf((*QueryObjectsOnPhysicalVsanDisk)(nil)).Elem() +} + +type QueryObjectsOnPhysicalVsanDiskRequestType struct { + This ManagedObjectReference `xml:"_this"` + Disks []string `xml:"disks"` +} + +func init() { + t["QueryObjectsOnPhysicalVsanDiskRequestType"] = reflect.TypeOf((*QueryObjectsOnPhysicalVsanDiskRequestType)(nil)).Elem() +} + +type QueryObjectsOnPhysicalVsanDiskResponse struct { + Returnval string `xml:"returnval"` +} + +type QueryOptions QueryOptionsRequestType + +func init() { + t["QueryOptions"] = reflect.TypeOf((*QueryOptions)(nil)).Elem() +} + +type QueryOptionsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name,omitempty"` +} + +func init() { + t["QueryOptionsRequestType"] = reflect.TypeOf((*QueryOptionsRequestType)(nil)).Elem() +} + +type QueryOptionsResponse struct { + Returnval []BaseOptionValue `xml:"returnval,omitempty,typeattr"` +} + +type QueryPartitionCreateDesc QueryPartitionCreateDescRequestType + +func init() { + t["QueryPartitionCreateDesc"] = reflect.TypeOf((*QueryPartitionCreateDesc)(nil)).Elem() +} + +type QueryPartitionCreateDescRequestType struct { + This ManagedObjectReference `xml:"_this"` + DiskUuid string `xml:"diskUuid"` + DiagnosticType string `xml:"diagnosticType"` +} + +func init() { + t["QueryPartitionCreateDescRequestType"] = reflect.TypeOf((*QueryPartitionCreateDescRequestType)(nil)).Elem() +} + +type QueryPartitionCreateDescResponse struct { + Returnval HostDiagnosticPartitionCreateDescription `xml:"returnval"` +} + +type QueryPartitionCreateOptions QueryPartitionCreateOptionsRequestType + +func init() { + t["QueryPartitionCreateOptions"] = reflect.TypeOf((*QueryPartitionCreateOptions)(nil)).Elem() +} + +type QueryPartitionCreateOptionsRequestType struct { + This ManagedObjectReference `xml:"_this"` + StorageType string `xml:"storageType"` + DiagnosticType string `xml:"diagnosticType"` +} + +func init() { + t["QueryPartitionCreateOptionsRequestType"] = reflect.TypeOf((*QueryPartitionCreateOptionsRequestType)(nil)).Elem() +} + +type QueryPartitionCreateOptionsResponse struct { + Returnval []HostDiagnosticPartitionCreateOption `xml:"returnval,omitempty"` +} + +type QueryPathSelectionPolicyOptions QueryPathSelectionPolicyOptionsRequestType + +func init() { + t["QueryPathSelectionPolicyOptions"] = reflect.TypeOf((*QueryPathSelectionPolicyOptions)(nil)).Elem() +} + +type QueryPathSelectionPolicyOptionsRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["QueryPathSelectionPolicyOptionsRequestType"] = reflect.TypeOf((*QueryPathSelectionPolicyOptionsRequestType)(nil)).Elem() +} + +type QueryPathSelectionPolicyOptionsResponse struct { + Returnval []HostPathSelectionPolicyOption `xml:"returnval,omitempty"` +} + +type QueryPerf QueryPerfRequestType + +func init() { + t["QueryPerf"] = reflect.TypeOf((*QueryPerf)(nil)).Elem() +} + +type QueryPerfComposite QueryPerfCompositeRequestType + +func init() { + t["QueryPerfComposite"] = reflect.TypeOf((*QueryPerfComposite)(nil)).Elem() +} + +type QueryPerfCompositeRequestType struct { + This ManagedObjectReference `xml:"_this"` + QuerySpec PerfQuerySpec `xml:"querySpec"` +} + +func init() { + t["QueryPerfCompositeRequestType"] = reflect.TypeOf((*QueryPerfCompositeRequestType)(nil)).Elem() +} + +type QueryPerfCompositeResponse struct { + Returnval PerfCompositeMetric `xml:"returnval"` +} + +type QueryPerfCounter QueryPerfCounterRequestType + +func init() { + t["QueryPerfCounter"] = reflect.TypeOf((*QueryPerfCounter)(nil)).Elem() +} + +type QueryPerfCounterByLevel QueryPerfCounterByLevelRequestType + +func init() { + t["QueryPerfCounterByLevel"] = reflect.TypeOf((*QueryPerfCounterByLevel)(nil)).Elem() +} + +type QueryPerfCounterByLevelRequestType struct { + This ManagedObjectReference `xml:"_this"` + Level int32 `xml:"level"` +} + +func init() { + t["QueryPerfCounterByLevelRequestType"] = reflect.TypeOf((*QueryPerfCounterByLevelRequestType)(nil)).Elem() +} + +type QueryPerfCounterByLevelResponse struct { + Returnval []PerfCounterInfo `xml:"returnval"` +} + +type QueryPerfCounterRequestType struct { + This ManagedObjectReference `xml:"_this"` + CounterId []int32 `xml:"counterId"` +} + +func init() { + t["QueryPerfCounterRequestType"] = reflect.TypeOf((*QueryPerfCounterRequestType)(nil)).Elem() +} + +type QueryPerfCounterResponse struct { + Returnval []PerfCounterInfo `xml:"returnval,omitempty"` +} + +type QueryPerfProviderSummary QueryPerfProviderSummaryRequestType + +func init() { + t["QueryPerfProviderSummary"] = reflect.TypeOf((*QueryPerfProviderSummary)(nil)).Elem() +} + +type QueryPerfProviderSummaryRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity ManagedObjectReference `xml:"entity"` +} + +func init() { + t["QueryPerfProviderSummaryRequestType"] = reflect.TypeOf((*QueryPerfProviderSummaryRequestType)(nil)).Elem() +} + +type QueryPerfProviderSummaryResponse struct { + Returnval PerfProviderSummary `xml:"returnval"` +} + +type QueryPerfRequestType struct { + This ManagedObjectReference `xml:"_this"` + QuerySpec []PerfQuerySpec `xml:"querySpec"` +} + +func init() { + t["QueryPerfRequestType"] = reflect.TypeOf((*QueryPerfRequestType)(nil)).Elem() +} + +type QueryPerfResponse struct { + Returnval []BasePerfEntityMetricBase `xml:"returnval,omitempty,typeattr"` +} + +type QueryPhysicalVsanDisks QueryPhysicalVsanDisksRequestType + +func init() { + t["QueryPhysicalVsanDisks"] = reflect.TypeOf((*QueryPhysicalVsanDisks)(nil)).Elem() +} + +type QueryPhysicalVsanDisksRequestType struct { + This ManagedObjectReference `xml:"_this"` + Props []string `xml:"props,omitempty"` +} + +func init() { + t["QueryPhysicalVsanDisksRequestType"] = reflect.TypeOf((*QueryPhysicalVsanDisksRequestType)(nil)).Elem() +} + +type QueryPhysicalVsanDisksResponse struct { + Returnval string `xml:"returnval"` +} + +type QueryPnicStatus QueryPnicStatusRequestType + +func init() { + t["QueryPnicStatus"] = reflect.TypeOf((*QueryPnicStatus)(nil)).Elem() +} + +type QueryPnicStatusRequestType struct { + This ManagedObjectReference `xml:"_this"` + PnicDevice string `xml:"pnicDevice"` +} + +func init() { + t["QueryPnicStatusRequestType"] = reflect.TypeOf((*QueryPnicStatusRequestType)(nil)).Elem() +} + +type QueryPnicStatusResponse struct { + Returnval IscsiStatus `xml:"returnval"` +} + +type QueryPolicyMetadata QueryPolicyMetadataRequestType + +func init() { + t["QueryPolicyMetadata"] = reflect.TypeOf((*QueryPolicyMetadata)(nil)).Elem() +} + +type QueryPolicyMetadataRequestType struct { + This ManagedObjectReference `xml:"_this"` + PolicyName []string `xml:"policyName,omitempty"` + Profile *ManagedObjectReference `xml:"profile,omitempty"` +} + +func init() { + t["QueryPolicyMetadataRequestType"] = reflect.TypeOf((*QueryPolicyMetadataRequestType)(nil)).Elem() +} + +type QueryPolicyMetadataResponse struct { + Returnval []ProfilePolicyMetadata `xml:"returnval,omitempty"` +} + +type QueryProductLockerLocation QueryProductLockerLocationRequestType + +func init() { + t["QueryProductLockerLocation"] = reflect.TypeOf((*QueryProductLockerLocation)(nil)).Elem() +} + +type QueryProductLockerLocationRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["QueryProductLockerLocationRequestType"] = reflect.TypeOf((*QueryProductLockerLocationRequestType)(nil)).Elem() +} + +type QueryProductLockerLocationResponse struct { + Returnval string `xml:"returnval"` +} + +type QueryProfileStructure QueryProfileStructureRequestType + +func init() { + t["QueryProfileStructure"] = reflect.TypeOf((*QueryProfileStructure)(nil)).Elem() +} + +type QueryProfileStructureRequestType struct { + This ManagedObjectReference `xml:"_this"` + Profile *ManagedObjectReference `xml:"profile,omitempty"` +} + +func init() { + t["QueryProfileStructureRequestType"] = reflect.TypeOf((*QueryProfileStructureRequestType)(nil)).Elem() +} + +type QueryProfileStructureResponse struct { + Returnval ProfileProfileStructure `xml:"returnval"` +} + +type QueryProviderList QueryProviderListRequestType + +func init() { + t["QueryProviderList"] = reflect.TypeOf((*QueryProviderList)(nil)).Elem() +} + +type QueryProviderListRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["QueryProviderListRequestType"] = reflect.TypeOf((*QueryProviderListRequestType)(nil)).Elem() +} + +type QueryProviderListResponse struct { + Returnval []string `xml:"returnval,omitempty"` +} + +type QueryProviderName QueryProviderNameRequestType + +func init() { + t["QueryProviderName"] = reflect.TypeOf((*QueryProviderName)(nil)).Elem() +} + +type QueryProviderNameRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id string `xml:"id"` +} + +func init() { + t["QueryProviderNameRequestType"] = reflect.TypeOf((*QueryProviderNameRequestType)(nil)).Elem() +} + +type QueryProviderNameResponse struct { + Returnval string `xml:"returnval"` +} + +type QueryResourceConfigOption QueryResourceConfigOptionRequestType + +func init() { + t["QueryResourceConfigOption"] = reflect.TypeOf((*QueryResourceConfigOption)(nil)).Elem() +} + +type QueryResourceConfigOptionRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["QueryResourceConfigOptionRequestType"] = reflect.TypeOf((*QueryResourceConfigOptionRequestType)(nil)).Elem() +} + +type QueryResourceConfigOptionResponse struct { + Returnval ResourceConfigOption `xml:"returnval"` +} + +type QueryServiceList QueryServiceListRequestType + +func init() { + t["QueryServiceList"] = reflect.TypeOf((*QueryServiceList)(nil)).Elem() +} + +type QueryServiceListRequestType struct { + This ManagedObjectReference `xml:"_this"` + ServiceName string `xml:"serviceName,omitempty"` + Location []string `xml:"location,omitempty"` +} + +func init() { + t["QueryServiceListRequestType"] = reflect.TypeOf((*QueryServiceListRequestType)(nil)).Elem() +} + +type QueryServiceListResponse struct { + Returnval []ServiceManagerServiceInfo `xml:"returnval,omitempty"` +} + +type QueryStorageArrayTypePolicyOptions QueryStorageArrayTypePolicyOptionsRequestType + +func init() { + t["QueryStorageArrayTypePolicyOptions"] = reflect.TypeOf((*QueryStorageArrayTypePolicyOptions)(nil)).Elem() +} + +type QueryStorageArrayTypePolicyOptionsRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["QueryStorageArrayTypePolicyOptionsRequestType"] = reflect.TypeOf((*QueryStorageArrayTypePolicyOptionsRequestType)(nil)).Elem() +} + +type QueryStorageArrayTypePolicyOptionsResponse struct { + Returnval []HostStorageArrayTypePolicyOption `xml:"returnval,omitempty"` +} + +type QuerySupportedFeatures QuerySupportedFeaturesRequestType + +func init() { + t["QuerySupportedFeatures"] = reflect.TypeOf((*QuerySupportedFeatures)(nil)).Elem() +} + +type QuerySupportedFeaturesRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host *ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["QuerySupportedFeaturesRequestType"] = reflect.TypeOf((*QuerySupportedFeaturesRequestType)(nil)).Elem() +} + +type QuerySupportedFeaturesResponse struct { + Returnval []LicenseFeatureInfo `xml:"returnval,omitempty"` +} + +type QuerySyncingVsanObjects QuerySyncingVsanObjectsRequestType + +func init() { + t["QuerySyncingVsanObjects"] = reflect.TypeOf((*QuerySyncingVsanObjects)(nil)).Elem() +} + +type QuerySyncingVsanObjectsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Uuids []string `xml:"uuids,omitempty"` +} + +func init() { + t["QuerySyncingVsanObjectsRequestType"] = reflect.TypeOf((*QuerySyncingVsanObjectsRequestType)(nil)).Elem() +} + +type QuerySyncingVsanObjectsResponse struct { + Returnval string `xml:"returnval"` +} + +type QuerySystemUsers QuerySystemUsersRequestType + +func init() { + t["QuerySystemUsers"] = reflect.TypeOf((*QuerySystemUsers)(nil)).Elem() +} + +type QuerySystemUsersRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["QuerySystemUsersRequestType"] = reflect.TypeOf((*QuerySystemUsersRequestType)(nil)).Elem() +} + +type QuerySystemUsersResponse struct { + Returnval []string `xml:"returnval,omitempty"` +} + +type QueryTargetCapabilities QueryTargetCapabilitiesRequestType + +func init() { + t["QueryTargetCapabilities"] = reflect.TypeOf((*QueryTargetCapabilities)(nil)).Elem() +} + +type QueryTargetCapabilitiesRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host *ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["QueryTargetCapabilitiesRequestType"] = reflect.TypeOf((*QueryTargetCapabilitiesRequestType)(nil)).Elem() +} + +type QueryTargetCapabilitiesResponse struct { + Returnval *HostCapability `xml:"returnval,omitempty"` +} + +type QueryTpmAttestationReport QueryTpmAttestationReportRequestType + +func init() { + t["QueryTpmAttestationReport"] = reflect.TypeOf((*QueryTpmAttestationReport)(nil)).Elem() +} + +type QueryTpmAttestationReportRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["QueryTpmAttestationReportRequestType"] = reflect.TypeOf((*QueryTpmAttestationReportRequestType)(nil)).Elem() +} + +type QueryTpmAttestationReportResponse struct { + Returnval *HostTpmAttestationReport `xml:"returnval,omitempty"` +} + +type QueryUnmonitoredHosts QueryUnmonitoredHostsRequestType + +func init() { + t["QueryUnmonitoredHosts"] = reflect.TypeOf((*QueryUnmonitoredHosts)(nil)).Elem() +} + +type QueryUnmonitoredHostsRequestType struct { + This ManagedObjectReference `xml:"_this"` + ProviderId string `xml:"providerId"` + Cluster ManagedObjectReference `xml:"cluster"` +} + +func init() { + t["QueryUnmonitoredHostsRequestType"] = reflect.TypeOf((*QueryUnmonitoredHostsRequestType)(nil)).Elem() +} + +type QueryUnmonitoredHostsResponse struct { + Returnval []ManagedObjectReference `xml:"returnval,omitempty"` +} + +type QueryUnownedFiles QueryUnownedFilesRequestType + +func init() { + t["QueryUnownedFiles"] = reflect.TypeOf((*QueryUnownedFiles)(nil)).Elem() +} + +type QueryUnownedFilesRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["QueryUnownedFilesRequestType"] = reflect.TypeOf((*QueryUnownedFilesRequestType)(nil)).Elem() +} + +type QueryUnownedFilesResponse struct { + Returnval []string `xml:"returnval,omitempty"` +} + +type QueryUnresolvedVmfsVolume QueryUnresolvedVmfsVolumeRequestType + +func init() { + t["QueryUnresolvedVmfsVolume"] = reflect.TypeOf((*QueryUnresolvedVmfsVolume)(nil)).Elem() +} + +type QueryUnresolvedVmfsVolumeRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["QueryUnresolvedVmfsVolumeRequestType"] = reflect.TypeOf((*QueryUnresolvedVmfsVolumeRequestType)(nil)).Elem() +} + +type QueryUnresolvedVmfsVolumeResponse struct { + Returnval []HostUnresolvedVmfsVolume `xml:"returnval,omitempty"` +} + +type QueryUnresolvedVmfsVolumes QueryUnresolvedVmfsVolumesRequestType + +func init() { + t["QueryUnresolvedVmfsVolumes"] = reflect.TypeOf((*QueryUnresolvedVmfsVolumes)(nil)).Elem() +} + +type QueryUnresolvedVmfsVolumesRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["QueryUnresolvedVmfsVolumesRequestType"] = reflect.TypeOf((*QueryUnresolvedVmfsVolumesRequestType)(nil)).Elem() +} + +type QueryUnresolvedVmfsVolumesResponse struct { + Returnval []HostUnresolvedVmfsVolume `xml:"returnval,omitempty"` +} + +type QueryUsedVlanIdInDvs QueryUsedVlanIdInDvsRequestType + +func init() { + t["QueryUsedVlanIdInDvs"] = reflect.TypeOf((*QueryUsedVlanIdInDvs)(nil)).Elem() +} + +type QueryUsedVlanIdInDvsRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["QueryUsedVlanIdInDvsRequestType"] = reflect.TypeOf((*QueryUsedVlanIdInDvsRequestType)(nil)).Elem() +} + +type QueryUsedVlanIdInDvsResponse struct { + Returnval []int32 `xml:"returnval,omitempty"` +} + +type QueryVMotionCompatibility QueryVMotionCompatibilityRequestType + +func init() { + t["QueryVMotionCompatibility"] = reflect.TypeOf((*QueryVMotionCompatibility)(nil)).Elem() +} + +type QueryVMotionCompatibilityExRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm []ManagedObjectReference `xml:"vm"` + Host []ManagedObjectReference `xml:"host"` +} + +func init() { + t["QueryVMotionCompatibilityExRequestType"] = reflect.TypeOf((*QueryVMotionCompatibilityExRequestType)(nil)).Elem() +} + +type QueryVMotionCompatibilityEx_Task QueryVMotionCompatibilityExRequestType + +func init() { + t["QueryVMotionCompatibilityEx_Task"] = reflect.TypeOf((*QueryVMotionCompatibilityEx_Task)(nil)).Elem() +} + +type QueryVMotionCompatibilityEx_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type QueryVMotionCompatibilityRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Host []ManagedObjectReference `xml:"host"` + Compatibility []string `xml:"compatibility,omitempty"` +} + +func init() { + t["QueryVMotionCompatibilityRequestType"] = reflect.TypeOf((*QueryVMotionCompatibilityRequestType)(nil)).Elem() +} + +type QueryVMotionCompatibilityResponse struct { + Returnval []HostVMotionCompatibility `xml:"returnval,omitempty"` +} + +type QueryVirtualDiskFragmentation QueryVirtualDiskFragmentationRequestType + +func init() { + t["QueryVirtualDiskFragmentation"] = reflect.TypeOf((*QueryVirtualDiskFragmentation)(nil)).Elem() +} + +type QueryVirtualDiskFragmentationRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` +} + +func init() { + t["QueryVirtualDiskFragmentationRequestType"] = reflect.TypeOf((*QueryVirtualDiskFragmentationRequestType)(nil)).Elem() +} + +type QueryVirtualDiskFragmentationResponse struct { + Returnval int32 `xml:"returnval"` +} + +type QueryVirtualDiskGeometry QueryVirtualDiskGeometryRequestType + +func init() { + t["QueryVirtualDiskGeometry"] = reflect.TypeOf((*QueryVirtualDiskGeometry)(nil)).Elem() +} + +type QueryVirtualDiskGeometryRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` +} + +func init() { + t["QueryVirtualDiskGeometryRequestType"] = reflect.TypeOf((*QueryVirtualDiskGeometryRequestType)(nil)).Elem() +} + +type QueryVirtualDiskGeometryResponse struct { + Returnval HostDiskDimensionsChs `xml:"returnval"` +} + +type QueryVirtualDiskUuid QueryVirtualDiskUuidRequestType + +func init() { + t["QueryVirtualDiskUuid"] = reflect.TypeOf((*QueryVirtualDiskUuid)(nil)).Elem() +} + +type QueryVirtualDiskUuidRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` +} + +func init() { + t["QueryVirtualDiskUuidRequestType"] = reflect.TypeOf((*QueryVirtualDiskUuidRequestType)(nil)).Elem() +} + +type QueryVirtualDiskUuidResponse struct { + Returnval string `xml:"returnval"` +} + +type QueryVmfsConfigOption QueryVmfsConfigOptionRequestType + +func init() { + t["QueryVmfsConfigOption"] = reflect.TypeOf((*QueryVmfsConfigOption)(nil)).Elem() +} + +type QueryVmfsConfigOptionRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["QueryVmfsConfigOptionRequestType"] = reflect.TypeOf((*QueryVmfsConfigOptionRequestType)(nil)).Elem() +} + +type QueryVmfsConfigOptionResponse struct { + Returnval []VmfsConfigOption `xml:"returnval,omitempty"` +} + +type QueryVmfsDatastoreCreateOptions QueryVmfsDatastoreCreateOptionsRequestType + +func init() { + t["QueryVmfsDatastoreCreateOptions"] = reflect.TypeOf((*QueryVmfsDatastoreCreateOptions)(nil)).Elem() +} + +type QueryVmfsDatastoreCreateOptionsRequestType struct { + This ManagedObjectReference `xml:"_this"` + DevicePath string `xml:"devicePath"` + VmfsMajorVersion int32 `xml:"vmfsMajorVersion,omitempty"` +} + +func init() { + t["QueryVmfsDatastoreCreateOptionsRequestType"] = reflect.TypeOf((*QueryVmfsDatastoreCreateOptionsRequestType)(nil)).Elem() +} + +type QueryVmfsDatastoreCreateOptionsResponse struct { + Returnval []VmfsDatastoreOption `xml:"returnval,omitempty"` +} + +type QueryVmfsDatastoreExpandOptions QueryVmfsDatastoreExpandOptionsRequestType + +func init() { + t["QueryVmfsDatastoreExpandOptions"] = reflect.TypeOf((*QueryVmfsDatastoreExpandOptions)(nil)).Elem() +} + +type QueryVmfsDatastoreExpandOptionsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["QueryVmfsDatastoreExpandOptionsRequestType"] = reflect.TypeOf((*QueryVmfsDatastoreExpandOptionsRequestType)(nil)).Elem() +} + +type QueryVmfsDatastoreExpandOptionsResponse struct { + Returnval []VmfsDatastoreOption `xml:"returnval,omitempty"` +} + +type QueryVmfsDatastoreExtendOptions QueryVmfsDatastoreExtendOptionsRequestType + +func init() { + t["QueryVmfsDatastoreExtendOptions"] = reflect.TypeOf((*QueryVmfsDatastoreExtendOptions)(nil)).Elem() +} + +type QueryVmfsDatastoreExtendOptionsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datastore ManagedObjectReference `xml:"datastore"` + DevicePath string `xml:"devicePath"` + SuppressExpandCandidates *bool `xml:"suppressExpandCandidates"` +} + +func init() { + t["QueryVmfsDatastoreExtendOptionsRequestType"] = reflect.TypeOf((*QueryVmfsDatastoreExtendOptionsRequestType)(nil)).Elem() +} + +type QueryVmfsDatastoreExtendOptionsResponse struct { + Returnval []VmfsDatastoreOption `xml:"returnval,omitempty"` +} + +type QueryVnicStatus QueryVnicStatusRequestType + +func init() { + t["QueryVnicStatus"] = reflect.TypeOf((*QueryVnicStatus)(nil)).Elem() +} + +type QueryVnicStatusRequestType struct { + This ManagedObjectReference `xml:"_this"` + VnicDevice string `xml:"vnicDevice"` +} + +func init() { + t["QueryVnicStatusRequestType"] = reflect.TypeOf((*QueryVnicStatusRequestType)(nil)).Elem() +} + +type QueryVnicStatusResponse struct { + Returnval IscsiStatus `xml:"returnval"` +} + +type QueryVsanObjectUuidsByFilter QueryVsanObjectUuidsByFilterRequestType + +func init() { + t["QueryVsanObjectUuidsByFilter"] = reflect.TypeOf((*QueryVsanObjectUuidsByFilter)(nil)).Elem() +} + +type QueryVsanObjectUuidsByFilterRequestType struct { + This ManagedObjectReference `xml:"_this"` + Uuids []string `xml:"uuids,omitempty"` + Limit *int32 `xml:"limit"` + Version int32 `xml:"version,omitempty"` +} + +func init() { + t["QueryVsanObjectUuidsByFilterRequestType"] = reflect.TypeOf((*QueryVsanObjectUuidsByFilterRequestType)(nil)).Elem() +} + +type QueryVsanObjectUuidsByFilterResponse struct { + Returnval []string `xml:"returnval,omitempty"` +} + +type QueryVsanObjects QueryVsanObjectsRequestType + +func init() { + t["QueryVsanObjects"] = reflect.TypeOf((*QueryVsanObjects)(nil)).Elem() +} + +type QueryVsanObjectsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Uuids []string `xml:"uuids,omitempty"` +} + +func init() { + t["QueryVsanObjectsRequestType"] = reflect.TypeOf((*QueryVsanObjectsRequestType)(nil)).Elem() +} + +type QueryVsanObjectsResponse struct { + Returnval string `xml:"returnval"` +} + +type QueryVsanStatistics QueryVsanStatisticsRequestType + +func init() { + t["QueryVsanStatistics"] = reflect.TypeOf((*QueryVsanStatistics)(nil)).Elem() +} + +type QueryVsanStatisticsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Labels []string `xml:"labels"` +} + +func init() { + t["QueryVsanStatisticsRequestType"] = reflect.TypeOf((*QueryVsanStatisticsRequestType)(nil)).Elem() +} + +type QueryVsanStatisticsResponse struct { + Returnval string `xml:"returnval"` +} + +type QueryVsanUpgradeStatus QueryVsanUpgradeStatusRequestType + +func init() { + t["QueryVsanUpgradeStatus"] = reflect.TypeOf((*QueryVsanUpgradeStatus)(nil)).Elem() +} + +type QueryVsanUpgradeStatusRequestType struct { + This ManagedObjectReference `xml:"_this"` + Cluster ManagedObjectReference `xml:"cluster"` +} + +func init() { + t["QueryVsanUpgradeStatusRequestType"] = reflect.TypeOf((*QueryVsanUpgradeStatusRequestType)(nil)).Elem() +} + +type QueryVsanUpgradeStatusResponse struct { + Returnval VsanUpgradeSystemUpgradeStatus `xml:"returnval"` +} + +type QuestionPending struct { + InvalidState + + Text string `xml:"text"` +} + +func init() { + t["QuestionPending"] = reflect.TypeOf((*QuestionPending)(nil)).Elem() +} + +type QuestionPendingFault QuestionPending + +func init() { + t["QuestionPendingFault"] = reflect.TypeOf((*QuestionPendingFault)(nil)).Elem() +} + +type QuiesceDatastoreIOForHAFailed struct { + ResourceInUse + + Host ManagedObjectReference `xml:"host"` + HostName string `xml:"hostName"` + Ds ManagedObjectReference `xml:"ds"` + DsName string `xml:"dsName"` +} + +func init() { + t["QuiesceDatastoreIOForHAFailed"] = reflect.TypeOf((*QuiesceDatastoreIOForHAFailed)(nil)).Elem() +} + +type QuiesceDatastoreIOForHAFailedFault QuiesceDatastoreIOForHAFailed + +func init() { + t["QuiesceDatastoreIOForHAFailedFault"] = reflect.TypeOf((*QuiesceDatastoreIOForHAFailedFault)(nil)).Elem() +} + +type RDMConversionNotSupported struct { + MigrationFault + + Device string `xml:"device"` +} + +func init() { + t["RDMConversionNotSupported"] = reflect.TypeOf((*RDMConversionNotSupported)(nil)).Elem() +} + +type RDMConversionNotSupportedFault RDMConversionNotSupported + +func init() { + t["RDMConversionNotSupportedFault"] = reflect.TypeOf((*RDMConversionNotSupportedFault)(nil)).Elem() +} + +type RDMNotPreserved struct { + MigrationFault + + Device string `xml:"device"` +} + +func init() { + t["RDMNotPreserved"] = reflect.TypeOf((*RDMNotPreserved)(nil)).Elem() +} + +type RDMNotPreservedFault RDMNotPreserved + +func init() { + t["RDMNotPreservedFault"] = reflect.TypeOf((*RDMNotPreservedFault)(nil)).Elem() +} + +type RDMNotSupported struct { + DeviceNotSupported +} + +func init() { + t["RDMNotSupported"] = reflect.TypeOf((*RDMNotSupported)(nil)).Elem() +} + +type RDMNotSupportedFault BaseRDMNotSupported + +func init() { + t["RDMNotSupportedFault"] = reflect.TypeOf((*RDMNotSupportedFault)(nil)).Elem() +} + +type RDMNotSupportedOnDatastore struct { + VmConfigFault + + Device string `xml:"device"` + Datastore ManagedObjectReference `xml:"datastore"` + DatastoreName string `xml:"datastoreName"` +} + +func init() { + t["RDMNotSupportedOnDatastore"] = reflect.TypeOf((*RDMNotSupportedOnDatastore)(nil)).Elem() +} + +type RDMNotSupportedOnDatastoreFault RDMNotSupportedOnDatastore + +func init() { + t["RDMNotSupportedOnDatastoreFault"] = reflect.TypeOf((*RDMNotSupportedOnDatastoreFault)(nil)).Elem() +} + +type RDMPointsToInaccessibleDisk struct { + CannotAccessVmDisk +} + +func init() { + t["RDMPointsToInaccessibleDisk"] = reflect.TypeOf((*RDMPointsToInaccessibleDisk)(nil)).Elem() +} + +type RDMPointsToInaccessibleDiskFault RDMPointsToInaccessibleDisk + +func init() { + t["RDMPointsToInaccessibleDiskFault"] = reflect.TypeOf((*RDMPointsToInaccessibleDiskFault)(nil)).Elem() +} + +type RawDiskNotSupported struct { + DeviceNotSupported +} + +func init() { + t["RawDiskNotSupported"] = reflect.TypeOf((*RawDiskNotSupported)(nil)).Elem() +} + +type RawDiskNotSupportedFault RawDiskNotSupported + +func init() { + t["RawDiskNotSupportedFault"] = reflect.TypeOf((*RawDiskNotSupportedFault)(nil)).Elem() +} + +type ReadEnvironmentVariableInGuest ReadEnvironmentVariableInGuestRequestType + +func init() { + t["ReadEnvironmentVariableInGuest"] = reflect.TypeOf((*ReadEnvironmentVariableInGuest)(nil)).Elem() +} + +type ReadEnvironmentVariableInGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + Names []string `xml:"names,omitempty"` +} + +func init() { + t["ReadEnvironmentVariableInGuestRequestType"] = reflect.TypeOf((*ReadEnvironmentVariableInGuestRequestType)(nil)).Elem() +} + +type ReadEnvironmentVariableInGuestResponse struct { + Returnval []string `xml:"returnval,omitempty"` +} + +type ReadHostResourcePoolTreeFailed struct { + HostConnectFault +} + +func init() { + t["ReadHostResourcePoolTreeFailed"] = reflect.TypeOf((*ReadHostResourcePoolTreeFailed)(nil)).Elem() +} + +type ReadHostResourcePoolTreeFailedFault ReadHostResourcePoolTreeFailed + +func init() { + t["ReadHostResourcePoolTreeFailedFault"] = reflect.TypeOf((*ReadHostResourcePoolTreeFailedFault)(nil)).Elem() +} + +type ReadNextEvents ReadNextEventsRequestType + +func init() { + t["ReadNextEvents"] = reflect.TypeOf((*ReadNextEvents)(nil)).Elem() +} + +type ReadNextEventsRequestType struct { + This ManagedObjectReference `xml:"_this"` + MaxCount int32 `xml:"maxCount"` +} + +func init() { + t["ReadNextEventsRequestType"] = reflect.TypeOf((*ReadNextEventsRequestType)(nil)).Elem() +} + +type ReadNextEventsResponse struct { + Returnval []BaseEvent `xml:"returnval,omitempty,typeattr"` +} + +type ReadNextTasks ReadNextTasksRequestType + +func init() { + t["ReadNextTasks"] = reflect.TypeOf((*ReadNextTasks)(nil)).Elem() +} + +type ReadNextTasksRequestType struct { + This ManagedObjectReference `xml:"_this"` + MaxCount int32 `xml:"maxCount"` +} + +func init() { + t["ReadNextTasksRequestType"] = reflect.TypeOf((*ReadNextTasksRequestType)(nil)).Elem() +} + +type ReadNextTasksResponse struct { + Returnval []TaskInfo `xml:"returnval,omitempty"` +} + +type ReadOnlyDisksWithLegacyDestination struct { + MigrationFault + + RoDiskCount int32 `xml:"roDiskCount"` + TimeoutDanger bool `xml:"timeoutDanger"` +} + +func init() { + t["ReadOnlyDisksWithLegacyDestination"] = reflect.TypeOf((*ReadOnlyDisksWithLegacyDestination)(nil)).Elem() +} + +type ReadOnlyDisksWithLegacyDestinationFault ReadOnlyDisksWithLegacyDestination + +func init() { + t["ReadOnlyDisksWithLegacyDestinationFault"] = reflect.TypeOf((*ReadOnlyDisksWithLegacyDestinationFault)(nil)).Elem() +} + +type ReadPreviousEvents ReadPreviousEventsRequestType + +func init() { + t["ReadPreviousEvents"] = reflect.TypeOf((*ReadPreviousEvents)(nil)).Elem() +} + +type ReadPreviousEventsRequestType struct { + This ManagedObjectReference `xml:"_this"` + MaxCount int32 `xml:"maxCount"` +} + +func init() { + t["ReadPreviousEventsRequestType"] = reflect.TypeOf((*ReadPreviousEventsRequestType)(nil)).Elem() +} + +type ReadPreviousEventsResponse struct { + Returnval []BaseEvent `xml:"returnval,omitempty,typeattr"` +} + +type ReadPreviousTasks ReadPreviousTasksRequestType + +func init() { + t["ReadPreviousTasks"] = reflect.TypeOf((*ReadPreviousTasks)(nil)).Elem() +} + +type ReadPreviousTasksRequestType struct { + This ManagedObjectReference `xml:"_this"` + MaxCount int32 `xml:"maxCount"` +} + +func init() { + t["ReadPreviousTasksRequestType"] = reflect.TypeOf((*ReadPreviousTasksRequestType)(nil)).Elem() +} + +type ReadPreviousTasksResponse struct { + Returnval []TaskInfo `xml:"returnval,omitempty"` +} + +type RebootGuest RebootGuestRequestType + +func init() { + t["RebootGuest"] = reflect.TypeOf((*RebootGuest)(nil)).Elem() +} + +type RebootGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RebootGuestRequestType"] = reflect.TypeOf((*RebootGuestRequestType)(nil)).Elem() +} + +type RebootGuestResponse struct { +} + +type RebootHostRequestType struct { + This ManagedObjectReference `xml:"_this"` + Force bool `xml:"force"` +} + +func init() { + t["RebootHostRequestType"] = reflect.TypeOf((*RebootHostRequestType)(nil)).Elem() +} + +type RebootHost_Task RebootHostRequestType + +func init() { + t["RebootHost_Task"] = reflect.TypeOf((*RebootHost_Task)(nil)).Elem() +} + +type RebootHost_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type RebootRequired struct { + VimFault + + Patch string `xml:"patch,omitempty"` +} + +func init() { + t["RebootRequired"] = reflect.TypeOf((*RebootRequired)(nil)).Elem() +} + +type RebootRequiredFault RebootRequired + +func init() { + t["RebootRequiredFault"] = reflect.TypeOf((*RebootRequiredFault)(nil)).Elem() +} + +type RecommendDatastores RecommendDatastoresRequestType + +func init() { + t["RecommendDatastores"] = reflect.TypeOf((*RecommendDatastores)(nil)).Elem() +} + +type RecommendDatastoresRequestType struct { + This ManagedObjectReference `xml:"_this"` + StorageSpec StoragePlacementSpec `xml:"storageSpec"` +} + +func init() { + t["RecommendDatastoresRequestType"] = reflect.TypeOf((*RecommendDatastoresRequestType)(nil)).Elem() +} + +type RecommendDatastoresResponse struct { + Returnval StoragePlacementResult `xml:"returnval"` +} + +type RecommendHostsForVm RecommendHostsForVmRequestType + +func init() { + t["RecommendHostsForVm"] = reflect.TypeOf((*RecommendHostsForVm)(nil)).Elem() +} + +type RecommendHostsForVmRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Pool *ManagedObjectReference `xml:"pool,omitempty"` +} + +func init() { + t["RecommendHostsForVmRequestType"] = reflect.TypeOf((*RecommendHostsForVmRequestType)(nil)).Elem() +} + +type RecommendHostsForVmResponse struct { + Returnval []ClusterHostRecommendation `xml:"returnval,omitempty"` +} + +type RecommissionVsanNodeRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RecommissionVsanNodeRequestType"] = reflect.TypeOf((*RecommissionVsanNodeRequestType)(nil)).Elem() +} + +type RecommissionVsanNode_Task RecommissionVsanNodeRequestType + +func init() { + t["RecommissionVsanNode_Task"] = reflect.TypeOf((*RecommissionVsanNode_Task)(nil)).Elem() +} + +type RecommissionVsanNode_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ReconcileDatastoreInventoryRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["ReconcileDatastoreInventoryRequestType"] = reflect.TypeOf((*ReconcileDatastoreInventoryRequestType)(nil)).Elem() +} + +type ReconcileDatastoreInventory_Task ReconcileDatastoreInventoryRequestType + +func init() { + t["ReconcileDatastoreInventory_Task"] = reflect.TypeOf((*ReconcileDatastoreInventory_Task)(nil)).Elem() +} + +type ReconcileDatastoreInventory_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ReconfigVMRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec VirtualMachineConfigSpec `xml:"spec"` +} + +func init() { + t["ReconfigVMRequestType"] = reflect.TypeOf((*ReconfigVMRequestType)(nil)).Elem() +} + +type ReconfigVM_Task ReconfigVMRequestType + +func init() { + t["ReconfigVM_Task"] = reflect.TypeOf((*ReconfigVM_Task)(nil)).Elem() +} + +type ReconfigVM_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ReconfigurationSatisfiable ReconfigurationSatisfiableRequestType + +func init() { + t["ReconfigurationSatisfiable"] = reflect.TypeOf((*ReconfigurationSatisfiable)(nil)).Elem() +} + +type ReconfigurationSatisfiableRequestType struct { + This ManagedObjectReference `xml:"_this"` + Pcbs []VsanPolicyChangeBatch `xml:"pcbs"` + IgnoreSatisfiability *bool `xml:"ignoreSatisfiability"` +} + +func init() { + t["ReconfigurationSatisfiableRequestType"] = reflect.TypeOf((*ReconfigurationSatisfiableRequestType)(nil)).Elem() +} + +type ReconfigurationSatisfiableResponse struct { + Returnval []VsanPolicySatisfiability `xml:"returnval"` +} + +type ReconfigureAlarm ReconfigureAlarmRequestType + +func init() { + t["ReconfigureAlarm"] = reflect.TypeOf((*ReconfigureAlarm)(nil)).Elem() +} + +type ReconfigureAlarmRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec BaseAlarmSpec `xml:"spec,typeattr"` +} + +func init() { + t["ReconfigureAlarmRequestType"] = reflect.TypeOf((*ReconfigureAlarmRequestType)(nil)).Elem() +} + +type ReconfigureAlarmResponse struct { +} + +type ReconfigureAutostart ReconfigureAutostartRequestType + +func init() { + t["ReconfigureAutostart"] = reflect.TypeOf((*ReconfigureAutostart)(nil)).Elem() +} + +type ReconfigureAutostartRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec HostAutoStartManagerConfig `xml:"spec"` +} + +func init() { + t["ReconfigureAutostartRequestType"] = reflect.TypeOf((*ReconfigureAutostartRequestType)(nil)).Elem() +} + +type ReconfigureAutostartResponse struct { +} + +type ReconfigureClusterRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec ClusterConfigSpec `xml:"spec"` + Modify bool `xml:"modify"` +} + +func init() { + t["ReconfigureClusterRequestType"] = reflect.TypeOf((*ReconfigureClusterRequestType)(nil)).Elem() +} + +type ReconfigureCluster_Task ReconfigureClusterRequestType + +func init() { + t["ReconfigureCluster_Task"] = reflect.TypeOf((*ReconfigureCluster_Task)(nil)).Elem() +} + +type ReconfigureCluster_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ReconfigureComputeResourceRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec BaseComputeResourceConfigSpec `xml:"spec,typeattr"` + Modify bool `xml:"modify"` +} + +func init() { + t["ReconfigureComputeResourceRequestType"] = reflect.TypeOf((*ReconfigureComputeResourceRequestType)(nil)).Elem() +} + +type ReconfigureComputeResource_Task ReconfigureComputeResourceRequestType + +func init() { + t["ReconfigureComputeResource_Task"] = reflect.TypeOf((*ReconfigureComputeResource_Task)(nil)).Elem() +} + +type ReconfigureComputeResource_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ReconfigureDVPortRequestType struct { + This ManagedObjectReference `xml:"_this"` + Port []DVPortConfigSpec `xml:"port"` +} + +func init() { + t["ReconfigureDVPortRequestType"] = reflect.TypeOf((*ReconfigureDVPortRequestType)(nil)).Elem() +} + +type ReconfigureDVPort_Task ReconfigureDVPortRequestType + +func init() { + t["ReconfigureDVPort_Task"] = reflect.TypeOf((*ReconfigureDVPort_Task)(nil)).Elem() +} + +type ReconfigureDVPort_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ReconfigureDVPortgroupRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec DVPortgroupConfigSpec `xml:"spec"` +} + +func init() { + t["ReconfigureDVPortgroupRequestType"] = reflect.TypeOf((*ReconfigureDVPortgroupRequestType)(nil)).Elem() +} + +type ReconfigureDVPortgroup_Task ReconfigureDVPortgroupRequestType + +func init() { + t["ReconfigureDVPortgroup_Task"] = reflect.TypeOf((*ReconfigureDVPortgroup_Task)(nil)).Elem() +} + +type ReconfigureDVPortgroup_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ReconfigureDatacenterRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec DatacenterConfigSpec `xml:"spec"` + Modify bool `xml:"modify"` +} + +func init() { + t["ReconfigureDatacenterRequestType"] = reflect.TypeOf((*ReconfigureDatacenterRequestType)(nil)).Elem() +} + +type ReconfigureDatacenter_Task ReconfigureDatacenterRequestType + +func init() { + t["ReconfigureDatacenter_Task"] = reflect.TypeOf((*ReconfigureDatacenter_Task)(nil)).Elem() +} + +type ReconfigureDatacenter_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ReconfigureDomObject ReconfigureDomObjectRequestType + +func init() { + t["ReconfigureDomObject"] = reflect.TypeOf((*ReconfigureDomObject)(nil)).Elem() +} + +type ReconfigureDomObjectRequestType struct { + This ManagedObjectReference `xml:"_this"` + Uuid string `xml:"uuid"` + Policy string `xml:"policy"` +} + +func init() { + t["ReconfigureDomObjectRequestType"] = reflect.TypeOf((*ReconfigureDomObjectRequestType)(nil)).Elem() +} + +type ReconfigureDomObjectResponse struct { +} + +type ReconfigureDvsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec BaseDVSConfigSpec `xml:"spec,typeattr"` +} + +func init() { + t["ReconfigureDvsRequestType"] = reflect.TypeOf((*ReconfigureDvsRequestType)(nil)).Elem() +} + +type ReconfigureDvs_Task ReconfigureDvsRequestType + +func init() { + t["ReconfigureDvs_Task"] = reflect.TypeOf((*ReconfigureDvs_Task)(nil)).Elem() +} + +type ReconfigureDvs_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ReconfigureHostForDASRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["ReconfigureHostForDASRequestType"] = reflect.TypeOf((*ReconfigureHostForDASRequestType)(nil)).Elem() +} + +type ReconfigureHostForDAS_Task ReconfigureHostForDASRequestType + +func init() { + t["ReconfigureHostForDAS_Task"] = reflect.TypeOf((*ReconfigureHostForDAS_Task)(nil)).Elem() +} + +type ReconfigureHostForDAS_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ReconfigureScheduledTask ReconfigureScheduledTaskRequestType + +func init() { + t["ReconfigureScheduledTask"] = reflect.TypeOf((*ReconfigureScheduledTask)(nil)).Elem() +} + +type ReconfigureScheduledTaskRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec BaseScheduledTaskSpec `xml:"spec,typeattr"` +} + +func init() { + t["ReconfigureScheduledTaskRequestType"] = reflect.TypeOf((*ReconfigureScheduledTaskRequestType)(nil)).Elem() +} + +type ReconfigureScheduledTaskResponse struct { +} + +type ReconfigureServiceConsoleReservation ReconfigureServiceConsoleReservationRequestType + +func init() { + t["ReconfigureServiceConsoleReservation"] = reflect.TypeOf((*ReconfigureServiceConsoleReservation)(nil)).Elem() +} + +type ReconfigureServiceConsoleReservationRequestType struct { + This ManagedObjectReference `xml:"_this"` + CfgBytes int64 `xml:"cfgBytes"` +} + +func init() { + t["ReconfigureServiceConsoleReservationRequestType"] = reflect.TypeOf((*ReconfigureServiceConsoleReservationRequestType)(nil)).Elem() +} + +type ReconfigureServiceConsoleReservationResponse struct { +} + +type ReconfigureSnmpAgent ReconfigureSnmpAgentRequestType + +func init() { + t["ReconfigureSnmpAgent"] = reflect.TypeOf((*ReconfigureSnmpAgent)(nil)).Elem() +} + +type ReconfigureSnmpAgentRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec HostSnmpConfigSpec `xml:"spec"` +} + +func init() { + t["ReconfigureSnmpAgentRequestType"] = reflect.TypeOf((*ReconfigureSnmpAgentRequestType)(nil)).Elem() +} + +type ReconfigureSnmpAgentResponse struct { +} + +type ReconfigureVirtualMachineReservation ReconfigureVirtualMachineReservationRequestType + +func init() { + t["ReconfigureVirtualMachineReservation"] = reflect.TypeOf((*ReconfigureVirtualMachineReservation)(nil)).Elem() +} + +type ReconfigureVirtualMachineReservationRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec VirtualMachineMemoryReservationSpec `xml:"spec"` +} + +func init() { + t["ReconfigureVirtualMachineReservationRequestType"] = reflect.TypeOf((*ReconfigureVirtualMachineReservationRequestType)(nil)).Elem() +} + +type ReconfigureVirtualMachineReservationResponse struct { +} + +type ReconnectHostRequestType struct { + This ManagedObjectReference `xml:"_this"` + CnxSpec *HostConnectSpec `xml:"cnxSpec,omitempty"` + ReconnectSpec *HostSystemReconnectSpec `xml:"reconnectSpec,omitempty"` +} + +func init() { + t["ReconnectHostRequestType"] = reflect.TypeOf((*ReconnectHostRequestType)(nil)).Elem() +} + +type ReconnectHost_Task ReconnectHostRequestType + +func init() { + t["ReconnectHost_Task"] = reflect.TypeOf((*ReconnectHost_Task)(nil)).Elem() +} + +type ReconnectHost_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type RecordReplayDisabled struct { + VimFault +} + +func init() { + t["RecordReplayDisabled"] = reflect.TypeOf((*RecordReplayDisabled)(nil)).Elem() +} + +type RecordReplayDisabledFault RecordReplayDisabled + +func init() { + t["RecordReplayDisabledFault"] = reflect.TypeOf((*RecordReplayDisabledFault)(nil)).Elem() +} + +type RecoveryEvent struct { + DvsEvent + + HostName string `xml:"hostName"` + PortKey string `xml:"portKey"` + DvsUuid string `xml:"dvsUuid,omitempty"` + Vnic string `xml:"vnic,omitempty"` +} + +func init() { + t["RecoveryEvent"] = reflect.TypeOf((*RecoveryEvent)(nil)).Elem() +} + +type RectifyDvsHostRequestType struct { + This ManagedObjectReference `xml:"_this"` + Hosts []ManagedObjectReference `xml:"hosts,omitempty"` +} + +func init() { + t["RectifyDvsHostRequestType"] = reflect.TypeOf((*RectifyDvsHostRequestType)(nil)).Elem() +} + +type RectifyDvsHost_Task RectifyDvsHostRequestType + +func init() { + t["RectifyDvsHost_Task"] = reflect.TypeOf((*RectifyDvsHost_Task)(nil)).Elem() +} + +type RectifyDvsHost_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type RectifyDvsOnHostRequestType struct { + This ManagedObjectReference `xml:"_this"` + Hosts []ManagedObjectReference `xml:"hosts"` +} + +func init() { + t["RectifyDvsOnHostRequestType"] = reflect.TypeOf((*RectifyDvsOnHostRequestType)(nil)).Elem() +} + +type RectifyDvsOnHost_Task RectifyDvsOnHostRequestType + +func init() { + t["RectifyDvsOnHost_Task"] = reflect.TypeOf((*RectifyDvsOnHost_Task)(nil)).Elem() +} + +type RectifyDvsOnHost_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type RecurrentTaskScheduler struct { + TaskScheduler + + Interval int32 `xml:"interval"` +} + +func init() { + t["RecurrentTaskScheduler"] = reflect.TypeOf((*RecurrentTaskScheduler)(nil)).Elem() +} + +type Refresh RefreshRequestType + +func init() { + t["Refresh"] = reflect.TypeOf((*Refresh)(nil)).Elem() +} + +type RefreshDVPortState RefreshDVPortStateRequestType + +func init() { + t["RefreshDVPortState"] = reflect.TypeOf((*RefreshDVPortState)(nil)).Elem() +} + +type RefreshDVPortStateRequestType struct { + This ManagedObjectReference `xml:"_this"` + PortKeys []string `xml:"portKeys,omitempty"` +} + +func init() { + t["RefreshDVPortStateRequestType"] = reflect.TypeOf((*RefreshDVPortStateRequestType)(nil)).Elem() +} + +type RefreshDVPortStateResponse struct { +} + +type RefreshDatastore RefreshDatastoreRequestType + +func init() { + t["RefreshDatastore"] = reflect.TypeOf((*RefreshDatastore)(nil)).Elem() +} + +type RefreshDatastoreRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RefreshDatastoreRequestType"] = reflect.TypeOf((*RefreshDatastoreRequestType)(nil)).Elem() +} + +type RefreshDatastoreResponse struct { +} + +type RefreshDatastoreStorageInfo RefreshDatastoreStorageInfoRequestType + +func init() { + t["RefreshDatastoreStorageInfo"] = reflect.TypeOf((*RefreshDatastoreStorageInfo)(nil)).Elem() +} + +type RefreshDatastoreStorageInfoRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RefreshDatastoreStorageInfoRequestType"] = reflect.TypeOf((*RefreshDatastoreStorageInfoRequestType)(nil)).Elem() +} + +type RefreshDatastoreStorageInfoResponse struct { +} + +type RefreshDateTimeSystem RefreshDateTimeSystemRequestType + +func init() { + t["RefreshDateTimeSystem"] = reflect.TypeOf((*RefreshDateTimeSystem)(nil)).Elem() +} + +type RefreshDateTimeSystemRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RefreshDateTimeSystemRequestType"] = reflect.TypeOf((*RefreshDateTimeSystemRequestType)(nil)).Elem() +} + +type RefreshDateTimeSystemResponse struct { +} + +type RefreshFirewall RefreshFirewallRequestType + +func init() { + t["RefreshFirewall"] = reflect.TypeOf((*RefreshFirewall)(nil)).Elem() +} + +type RefreshFirewallRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RefreshFirewallRequestType"] = reflect.TypeOf((*RefreshFirewallRequestType)(nil)).Elem() +} + +type RefreshFirewallResponse struct { +} + +type RefreshGraphicsManager RefreshGraphicsManagerRequestType + +func init() { + t["RefreshGraphicsManager"] = reflect.TypeOf((*RefreshGraphicsManager)(nil)).Elem() +} + +type RefreshGraphicsManagerRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RefreshGraphicsManagerRequestType"] = reflect.TypeOf((*RefreshGraphicsManagerRequestType)(nil)).Elem() +} + +type RefreshGraphicsManagerResponse struct { +} + +type RefreshHealthStatusSystem RefreshHealthStatusSystemRequestType + +func init() { + t["RefreshHealthStatusSystem"] = reflect.TypeOf((*RefreshHealthStatusSystem)(nil)).Elem() +} + +type RefreshHealthStatusSystemRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RefreshHealthStatusSystemRequestType"] = reflect.TypeOf((*RefreshHealthStatusSystemRequestType)(nil)).Elem() +} + +type RefreshHealthStatusSystemResponse struct { +} + +type RefreshNetworkSystem RefreshNetworkSystemRequestType + +func init() { + t["RefreshNetworkSystem"] = reflect.TypeOf((*RefreshNetworkSystem)(nil)).Elem() +} + +type RefreshNetworkSystemRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RefreshNetworkSystemRequestType"] = reflect.TypeOf((*RefreshNetworkSystemRequestType)(nil)).Elem() +} + +type RefreshNetworkSystemResponse struct { +} + +type RefreshRecommendation RefreshRecommendationRequestType + +func init() { + t["RefreshRecommendation"] = reflect.TypeOf((*RefreshRecommendation)(nil)).Elem() +} + +type RefreshRecommendationRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RefreshRecommendationRequestType"] = reflect.TypeOf((*RefreshRecommendationRequestType)(nil)).Elem() +} + +type RefreshRecommendationResponse struct { +} + +type RefreshRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RefreshRequestType"] = reflect.TypeOf((*RefreshRequestType)(nil)).Elem() +} + +type RefreshResponse struct { +} + +type RefreshRuntime RefreshRuntimeRequestType + +func init() { + t["RefreshRuntime"] = reflect.TypeOf((*RefreshRuntime)(nil)).Elem() +} + +type RefreshRuntimeRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RefreshRuntimeRequestType"] = reflect.TypeOf((*RefreshRuntimeRequestType)(nil)).Elem() +} + +type RefreshRuntimeResponse struct { +} + +type RefreshServices RefreshServicesRequestType + +func init() { + t["RefreshServices"] = reflect.TypeOf((*RefreshServices)(nil)).Elem() +} + +type RefreshServicesRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RefreshServicesRequestType"] = reflect.TypeOf((*RefreshServicesRequestType)(nil)).Elem() +} + +type RefreshServicesResponse struct { +} + +type RefreshStorageDrsRecommendation RefreshStorageDrsRecommendationRequestType + +func init() { + t["RefreshStorageDrsRecommendation"] = reflect.TypeOf((*RefreshStorageDrsRecommendation)(nil)).Elem() +} + +type RefreshStorageDrsRecommendationRequestType struct { + This ManagedObjectReference `xml:"_this"` + Pod ManagedObjectReference `xml:"pod"` +} + +func init() { + t["RefreshStorageDrsRecommendationRequestType"] = reflect.TypeOf((*RefreshStorageDrsRecommendationRequestType)(nil)).Elem() +} + +type RefreshStorageDrsRecommendationResponse struct { +} + +type RefreshStorageDrsRecommendationsForPodRequestType struct { + This ManagedObjectReference `xml:"_this"` + Pod ManagedObjectReference `xml:"pod"` +} + +func init() { + t["RefreshStorageDrsRecommendationsForPodRequestType"] = reflect.TypeOf((*RefreshStorageDrsRecommendationsForPodRequestType)(nil)).Elem() +} + +type RefreshStorageDrsRecommendationsForPod_Task RefreshStorageDrsRecommendationsForPodRequestType + +func init() { + t["RefreshStorageDrsRecommendationsForPod_Task"] = reflect.TypeOf((*RefreshStorageDrsRecommendationsForPod_Task)(nil)).Elem() +} + +type RefreshStorageDrsRecommendationsForPod_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type RefreshStorageInfo RefreshStorageInfoRequestType + +func init() { + t["RefreshStorageInfo"] = reflect.TypeOf((*RefreshStorageInfo)(nil)).Elem() +} + +type RefreshStorageInfoRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RefreshStorageInfoRequestType"] = reflect.TypeOf((*RefreshStorageInfoRequestType)(nil)).Elem() +} + +type RefreshStorageInfoResponse struct { +} + +type RefreshStorageSystem RefreshStorageSystemRequestType + +func init() { + t["RefreshStorageSystem"] = reflect.TypeOf((*RefreshStorageSystem)(nil)).Elem() +} + +type RefreshStorageSystemRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RefreshStorageSystemRequestType"] = reflect.TypeOf((*RefreshStorageSystemRequestType)(nil)).Elem() +} + +type RefreshStorageSystemResponse struct { +} + +type RegisterChildVMRequestType struct { + This ManagedObjectReference `xml:"_this"` + Path string `xml:"path"` + Name string `xml:"name,omitempty"` + Host *ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["RegisterChildVMRequestType"] = reflect.TypeOf((*RegisterChildVMRequestType)(nil)).Elem() +} + +type RegisterChildVM_Task RegisterChildVMRequestType + +func init() { + t["RegisterChildVM_Task"] = reflect.TypeOf((*RegisterChildVM_Task)(nil)).Elem() +} + +type RegisterChildVM_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type RegisterDisk RegisterDiskRequestType + +func init() { + t["RegisterDisk"] = reflect.TypeOf((*RegisterDisk)(nil)).Elem() +} + +type RegisterDiskRequestType struct { + This ManagedObjectReference `xml:"_this"` + Path string `xml:"path"` + Name string `xml:"name,omitempty"` +} + +func init() { + t["RegisterDiskRequestType"] = reflect.TypeOf((*RegisterDiskRequestType)(nil)).Elem() +} + +type RegisterDiskResponse struct { + Returnval VStorageObject `xml:"returnval"` +} + +type RegisterExtension RegisterExtensionRequestType + +func init() { + t["RegisterExtension"] = reflect.TypeOf((*RegisterExtension)(nil)).Elem() +} + +type RegisterExtensionRequestType struct { + This ManagedObjectReference `xml:"_this"` + Extension Extension `xml:"extension"` +} + +func init() { + t["RegisterExtensionRequestType"] = reflect.TypeOf((*RegisterExtensionRequestType)(nil)).Elem() +} + +type RegisterExtensionResponse struct { +} + +type RegisterHealthUpdateProvider RegisterHealthUpdateProviderRequestType + +func init() { + t["RegisterHealthUpdateProvider"] = reflect.TypeOf((*RegisterHealthUpdateProvider)(nil)).Elem() +} + +type RegisterHealthUpdateProviderRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + HealthUpdateInfo []HealthUpdateInfo `xml:"healthUpdateInfo,omitempty"` +} + +func init() { + t["RegisterHealthUpdateProviderRequestType"] = reflect.TypeOf((*RegisterHealthUpdateProviderRequestType)(nil)).Elem() +} + +type RegisterHealthUpdateProviderResponse struct { + Returnval string `xml:"returnval"` +} + +type RegisterKmipServer RegisterKmipServerRequestType + +func init() { + t["RegisterKmipServer"] = reflect.TypeOf((*RegisterKmipServer)(nil)).Elem() +} + +type RegisterKmipServerRequestType struct { + This ManagedObjectReference `xml:"_this"` + Server KmipServerSpec `xml:"server"` +} + +func init() { + t["RegisterKmipServerRequestType"] = reflect.TypeOf((*RegisterKmipServerRequestType)(nil)).Elem() +} + +type RegisterKmipServerResponse struct { +} + +type RegisterKmsCluster RegisterKmsClusterRequestType + +func init() { + t["RegisterKmsCluster"] = reflect.TypeOf((*RegisterKmsCluster)(nil)).Elem() +} + +type RegisterKmsClusterRequestType struct { + This ManagedObjectReference `xml:"_this"` + ClusterId KeyProviderId `xml:"clusterId"` + ManagementType string `xml:"managementType,omitempty"` +} + +func init() { + t["RegisterKmsClusterRequestType"] = reflect.TypeOf((*RegisterKmsClusterRequestType)(nil)).Elem() +} + +type RegisterKmsClusterResponse struct { +} + +type RegisterVMRequestType struct { + This ManagedObjectReference `xml:"_this"` + Path string `xml:"path"` + Name string `xml:"name,omitempty"` + AsTemplate bool `xml:"asTemplate"` + Pool *ManagedObjectReference `xml:"pool,omitempty"` + Host *ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["RegisterVMRequestType"] = reflect.TypeOf((*RegisterVMRequestType)(nil)).Elem() +} + +type RegisterVM_Task RegisterVMRequestType + +func init() { + t["RegisterVM_Task"] = reflect.TypeOf((*RegisterVM_Task)(nil)).Elem() +} + +type RegisterVM_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type Relation struct { + DynamicData + + Constraint string `xml:"constraint,omitempty"` + Name string `xml:"name"` + Version string `xml:"version,omitempty"` +} + +func init() { + t["Relation"] = reflect.TypeOf((*Relation)(nil)).Elem() +} + +type ReleaseCredentialsInGuest ReleaseCredentialsInGuestRequestType + +func init() { + t["ReleaseCredentialsInGuest"] = reflect.TypeOf((*ReleaseCredentialsInGuest)(nil)).Elem() +} + +type ReleaseCredentialsInGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` +} + +func init() { + t["ReleaseCredentialsInGuestRequestType"] = reflect.TypeOf((*ReleaseCredentialsInGuestRequestType)(nil)).Elem() +} + +type ReleaseCredentialsInGuestResponse struct { +} + +type ReleaseIpAllocation ReleaseIpAllocationRequestType + +func init() { + t["ReleaseIpAllocation"] = reflect.TypeOf((*ReleaseIpAllocation)(nil)).Elem() +} + +type ReleaseIpAllocationRequestType struct { + This ManagedObjectReference `xml:"_this"` + Dc ManagedObjectReference `xml:"dc"` + PoolId int32 `xml:"poolId"` + AllocationId string `xml:"allocationId"` +} + +func init() { + t["ReleaseIpAllocationRequestType"] = reflect.TypeOf((*ReleaseIpAllocationRequestType)(nil)).Elem() +} + +type ReleaseIpAllocationResponse struct { +} + +type ReleaseManagedSnapshot ReleaseManagedSnapshotRequestType + +func init() { + t["ReleaseManagedSnapshot"] = reflect.TypeOf((*ReleaseManagedSnapshot)(nil)).Elem() +} + +type ReleaseManagedSnapshotRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vdisk string `xml:"vdisk"` + Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` +} + +func init() { + t["ReleaseManagedSnapshotRequestType"] = reflect.TypeOf((*ReleaseManagedSnapshotRequestType)(nil)).Elem() +} + +type ReleaseManagedSnapshotResponse struct { +} + +type Reload ReloadRequestType + +func init() { + t["Reload"] = reflect.TypeOf((*Reload)(nil)).Elem() +} + +type ReloadRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["ReloadRequestType"] = reflect.TypeOf((*ReloadRequestType)(nil)).Elem() +} + +type ReloadResponse struct { +} + +type RelocateVMRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec VirtualMachineRelocateSpec `xml:"spec"` + Priority VirtualMachineMovePriority `xml:"priority,omitempty"` +} + +func init() { + t["RelocateVMRequestType"] = reflect.TypeOf((*RelocateVMRequestType)(nil)).Elem() +} + +type RelocateVM_Task RelocateVMRequestType + +func init() { + t["RelocateVM_Task"] = reflect.TypeOf((*RelocateVM_Task)(nil)).Elem() +} + +type RelocateVM_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type RelocateVStorageObjectRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + Spec VslmRelocateSpec `xml:"spec"` +} + +func init() { + t["RelocateVStorageObjectRequestType"] = reflect.TypeOf((*RelocateVStorageObjectRequestType)(nil)).Elem() +} + +type RelocateVStorageObject_Task RelocateVStorageObjectRequestType + +func init() { + t["RelocateVStorageObject_Task"] = reflect.TypeOf((*RelocateVStorageObject_Task)(nil)).Elem() +} + +type RelocateVStorageObject_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type RemoteDeviceNotSupported struct { + DeviceNotSupported +} + +func init() { + t["RemoteDeviceNotSupported"] = reflect.TypeOf((*RemoteDeviceNotSupported)(nil)).Elem() +} + +type RemoteDeviceNotSupportedFault RemoteDeviceNotSupported + +func init() { + t["RemoteDeviceNotSupportedFault"] = reflect.TypeOf((*RemoteDeviceNotSupportedFault)(nil)).Elem() +} + +type RemoteTSMEnabledEvent struct { + HostEvent +} + +func init() { + t["RemoteTSMEnabledEvent"] = reflect.TypeOf((*RemoteTSMEnabledEvent)(nil)).Elem() +} + +type RemoveAlarm RemoveAlarmRequestType + +func init() { + t["RemoveAlarm"] = reflect.TypeOf((*RemoveAlarm)(nil)).Elem() +} + +type RemoveAlarmRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RemoveAlarmRequestType"] = reflect.TypeOf((*RemoveAlarmRequestType)(nil)).Elem() +} + +type RemoveAlarmResponse struct { +} + +type RemoveAllSnapshotsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Consolidate *bool `xml:"consolidate"` +} + +func init() { + t["RemoveAllSnapshotsRequestType"] = reflect.TypeOf((*RemoveAllSnapshotsRequestType)(nil)).Elem() +} + +type RemoveAllSnapshots_Task RemoveAllSnapshotsRequestType + +func init() { + t["RemoveAllSnapshots_Task"] = reflect.TypeOf((*RemoveAllSnapshots_Task)(nil)).Elem() +} + +type RemoveAllSnapshots_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type RemoveAssignedLicense RemoveAssignedLicenseRequestType + +func init() { + t["RemoveAssignedLicense"] = reflect.TypeOf((*RemoveAssignedLicense)(nil)).Elem() +} + +type RemoveAssignedLicenseRequestType struct { + This ManagedObjectReference `xml:"_this"` + EntityId string `xml:"entityId"` +} + +func init() { + t["RemoveAssignedLicenseRequestType"] = reflect.TypeOf((*RemoveAssignedLicenseRequestType)(nil)).Elem() +} + +type RemoveAssignedLicenseResponse struct { +} + +type RemoveAuthorizationRole RemoveAuthorizationRoleRequestType + +func init() { + t["RemoveAuthorizationRole"] = reflect.TypeOf((*RemoveAuthorizationRole)(nil)).Elem() +} + +type RemoveAuthorizationRoleRequestType struct { + This ManagedObjectReference `xml:"_this"` + RoleId int32 `xml:"roleId"` + FailIfUsed bool `xml:"failIfUsed"` +} + +func init() { + t["RemoveAuthorizationRoleRequestType"] = reflect.TypeOf((*RemoveAuthorizationRoleRequestType)(nil)).Elem() +} + +type RemoveAuthorizationRoleResponse struct { +} + +type RemoveCustomFieldDef RemoveCustomFieldDefRequestType + +func init() { + t["RemoveCustomFieldDef"] = reflect.TypeOf((*RemoveCustomFieldDef)(nil)).Elem() +} + +type RemoveCustomFieldDefRequestType struct { + This ManagedObjectReference `xml:"_this"` + Key int32 `xml:"key"` +} + +func init() { + t["RemoveCustomFieldDefRequestType"] = reflect.TypeOf((*RemoveCustomFieldDefRequestType)(nil)).Elem() +} + +type RemoveCustomFieldDefResponse struct { +} + +type RemoveDatastore RemoveDatastoreRequestType + +func init() { + t["RemoveDatastore"] = reflect.TypeOf((*RemoveDatastore)(nil)).Elem() +} + +type RemoveDatastoreExRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datastore []ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["RemoveDatastoreExRequestType"] = reflect.TypeOf((*RemoveDatastoreExRequestType)(nil)).Elem() +} + +type RemoveDatastoreEx_Task RemoveDatastoreExRequestType + +func init() { + t["RemoveDatastoreEx_Task"] = reflect.TypeOf((*RemoveDatastoreEx_Task)(nil)).Elem() +} + +type RemoveDatastoreEx_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type RemoveDatastoreRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["RemoveDatastoreRequestType"] = reflect.TypeOf((*RemoveDatastoreRequestType)(nil)).Elem() +} + +type RemoveDatastoreResponse struct { +} + +type RemoveDiskMappingRequestType struct { + This ManagedObjectReference `xml:"_this"` + Mapping []VsanHostDiskMapping `xml:"mapping"` + MaintenanceSpec *HostMaintenanceSpec `xml:"maintenanceSpec,omitempty"` + Timeout int32 `xml:"timeout,omitempty"` +} + +func init() { + t["RemoveDiskMappingRequestType"] = reflect.TypeOf((*RemoveDiskMappingRequestType)(nil)).Elem() +} + +type RemoveDiskMapping_Task RemoveDiskMappingRequestType + +func init() { + t["RemoveDiskMapping_Task"] = reflect.TypeOf((*RemoveDiskMapping_Task)(nil)).Elem() +} + +type RemoveDiskMapping_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type RemoveDiskRequestType struct { + This ManagedObjectReference `xml:"_this"` + Disk []HostScsiDisk `xml:"disk"` + MaintenanceSpec *HostMaintenanceSpec `xml:"maintenanceSpec,omitempty"` + Timeout int32 `xml:"timeout,omitempty"` +} + +func init() { + t["RemoveDiskRequestType"] = reflect.TypeOf((*RemoveDiskRequestType)(nil)).Elem() +} + +type RemoveDisk_Task RemoveDiskRequestType + +func init() { + t["RemoveDisk_Task"] = reflect.TypeOf((*RemoveDisk_Task)(nil)).Elem() +} + +type RemoveDisk_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type RemoveEntityPermission RemoveEntityPermissionRequestType + +func init() { + t["RemoveEntityPermission"] = reflect.TypeOf((*RemoveEntityPermission)(nil)).Elem() +} + +type RemoveEntityPermissionRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity ManagedObjectReference `xml:"entity"` + User string `xml:"user"` + IsGroup bool `xml:"isGroup"` +} + +func init() { + t["RemoveEntityPermissionRequestType"] = reflect.TypeOf((*RemoveEntityPermissionRequestType)(nil)).Elem() +} + +type RemoveEntityPermissionResponse struct { +} + +type RemoveFailed struct { + VimFault +} + +func init() { + t["RemoveFailed"] = reflect.TypeOf((*RemoveFailed)(nil)).Elem() +} + +type RemoveFailedFault RemoveFailed + +func init() { + t["RemoveFailedFault"] = reflect.TypeOf((*RemoveFailedFault)(nil)).Elem() +} + +type RemoveFilter RemoveFilterRequestType + +func init() { + t["RemoveFilter"] = reflect.TypeOf((*RemoveFilter)(nil)).Elem() +} + +type RemoveFilterEntities RemoveFilterEntitiesRequestType + +func init() { + t["RemoveFilterEntities"] = reflect.TypeOf((*RemoveFilterEntities)(nil)).Elem() +} + +type RemoveFilterEntitiesRequestType struct { + This ManagedObjectReference `xml:"_this"` + FilterId string `xml:"filterId"` + Entities []ManagedObjectReference `xml:"entities,omitempty"` +} + +func init() { + t["RemoveFilterEntitiesRequestType"] = reflect.TypeOf((*RemoveFilterEntitiesRequestType)(nil)).Elem() +} + +type RemoveFilterEntitiesResponse struct { +} + +type RemoveFilterRequestType struct { + This ManagedObjectReference `xml:"_this"` + FilterId string `xml:"filterId"` +} + +func init() { + t["RemoveFilterRequestType"] = reflect.TypeOf((*RemoveFilterRequestType)(nil)).Elem() +} + +type RemoveFilterResponse struct { +} + +type RemoveGroup RemoveGroupRequestType + +func init() { + t["RemoveGroup"] = reflect.TypeOf((*RemoveGroup)(nil)).Elem() +} + +type RemoveGroupRequestType struct { + This ManagedObjectReference `xml:"_this"` + GroupName string `xml:"groupName"` +} + +func init() { + t["RemoveGroupRequestType"] = reflect.TypeOf((*RemoveGroupRequestType)(nil)).Elem() +} + +type RemoveGroupResponse struct { +} + +type RemoveGuestAlias RemoveGuestAliasRequestType + +func init() { + t["RemoveGuestAlias"] = reflect.TypeOf((*RemoveGuestAlias)(nil)).Elem() +} + +type RemoveGuestAliasByCert RemoveGuestAliasByCertRequestType + +func init() { + t["RemoveGuestAliasByCert"] = reflect.TypeOf((*RemoveGuestAliasByCert)(nil)).Elem() +} + +type RemoveGuestAliasByCertRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + Username string `xml:"username"` + Base64Cert string `xml:"base64Cert"` +} + +func init() { + t["RemoveGuestAliasByCertRequestType"] = reflect.TypeOf((*RemoveGuestAliasByCertRequestType)(nil)).Elem() +} + +type RemoveGuestAliasByCertResponse struct { +} + +type RemoveGuestAliasRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + Username string `xml:"username"` + Base64Cert string `xml:"base64Cert"` + Subject BaseGuestAuthSubject `xml:"subject,typeattr"` +} + +func init() { + t["RemoveGuestAliasRequestType"] = reflect.TypeOf((*RemoveGuestAliasRequestType)(nil)).Elem() +} + +type RemoveGuestAliasResponse struct { +} + +type RemoveInternetScsiSendTargets RemoveInternetScsiSendTargetsRequestType + +func init() { + t["RemoveInternetScsiSendTargets"] = reflect.TypeOf((*RemoveInternetScsiSendTargets)(nil)).Elem() +} + +type RemoveInternetScsiSendTargetsRequestType struct { + This ManagedObjectReference `xml:"_this"` + IScsiHbaDevice string `xml:"iScsiHbaDevice"` + Targets []HostInternetScsiHbaSendTarget `xml:"targets"` +} + +func init() { + t["RemoveInternetScsiSendTargetsRequestType"] = reflect.TypeOf((*RemoveInternetScsiSendTargetsRequestType)(nil)).Elem() +} + +type RemoveInternetScsiSendTargetsResponse struct { +} + +type RemoveInternetScsiStaticTargets RemoveInternetScsiStaticTargetsRequestType + +func init() { + t["RemoveInternetScsiStaticTargets"] = reflect.TypeOf((*RemoveInternetScsiStaticTargets)(nil)).Elem() +} + +type RemoveInternetScsiStaticTargetsRequestType struct { + This ManagedObjectReference `xml:"_this"` + IScsiHbaDevice string `xml:"iScsiHbaDevice"` + Targets []HostInternetScsiHbaStaticTarget `xml:"targets"` +} + +func init() { + t["RemoveInternetScsiStaticTargetsRequestType"] = reflect.TypeOf((*RemoveInternetScsiStaticTargetsRequestType)(nil)).Elem() +} + +type RemoveInternetScsiStaticTargetsResponse struct { +} + +type RemoveKey RemoveKeyRequestType + +func init() { + t["RemoveKey"] = reflect.TypeOf((*RemoveKey)(nil)).Elem() +} + +type RemoveKeyRequestType struct { + This ManagedObjectReference `xml:"_this"` + Key CryptoKeyId `xml:"key"` + Force bool `xml:"force"` +} + +func init() { + t["RemoveKeyRequestType"] = reflect.TypeOf((*RemoveKeyRequestType)(nil)).Elem() +} + +type RemoveKeyResponse struct { +} + +type RemoveKeys RemoveKeysRequestType + +func init() { + t["RemoveKeys"] = reflect.TypeOf((*RemoveKeys)(nil)).Elem() +} + +type RemoveKeysRequestType struct { + This ManagedObjectReference `xml:"_this"` + Keys []CryptoKeyId `xml:"keys,omitempty"` + Force bool `xml:"force"` +} + +func init() { + t["RemoveKeysRequestType"] = reflect.TypeOf((*RemoveKeysRequestType)(nil)).Elem() +} + +type RemoveKeysResponse struct { + Returnval []CryptoKeyResult `xml:"returnval,omitempty"` +} + +type RemoveKmipServer RemoveKmipServerRequestType + +func init() { + t["RemoveKmipServer"] = reflect.TypeOf((*RemoveKmipServer)(nil)).Elem() +} + +type RemoveKmipServerRequestType struct { + This ManagedObjectReference `xml:"_this"` + ClusterId KeyProviderId `xml:"clusterId"` + ServerName string `xml:"serverName"` +} + +func init() { + t["RemoveKmipServerRequestType"] = reflect.TypeOf((*RemoveKmipServerRequestType)(nil)).Elem() +} + +type RemoveKmipServerResponse struct { +} + +type RemoveLicense RemoveLicenseRequestType + +func init() { + t["RemoveLicense"] = reflect.TypeOf((*RemoveLicense)(nil)).Elem() +} + +type RemoveLicenseLabel RemoveLicenseLabelRequestType + +func init() { + t["RemoveLicenseLabel"] = reflect.TypeOf((*RemoveLicenseLabel)(nil)).Elem() +} + +type RemoveLicenseLabelRequestType struct { + This ManagedObjectReference `xml:"_this"` + LicenseKey string `xml:"licenseKey"` + LabelKey string `xml:"labelKey"` +} + +func init() { + t["RemoveLicenseLabelRequestType"] = reflect.TypeOf((*RemoveLicenseLabelRequestType)(nil)).Elem() +} + +type RemoveLicenseLabelResponse struct { +} + +type RemoveLicenseRequestType struct { + This ManagedObjectReference `xml:"_this"` + LicenseKey string `xml:"licenseKey"` +} + +func init() { + t["RemoveLicenseRequestType"] = reflect.TypeOf((*RemoveLicenseRequestType)(nil)).Elem() +} + +type RemoveLicenseResponse struct { +} + +type RemoveMonitoredEntities RemoveMonitoredEntitiesRequestType + +func init() { + t["RemoveMonitoredEntities"] = reflect.TypeOf((*RemoveMonitoredEntities)(nil)).Elem() +} + +type RemoveMonitoredEntitiesRequestType struct { + This ManagedObjectReference `xml:"_this"` + ProviderId string `xml:"providerId"` + Entities []ManagedObjectReference `xml:"entities,omitempty"` +} + +func init() { + t["RemoveMonitoredEntitiesRequestType"] = reflect.TypeOf((*RemoveMonitoredEntitiesRequestType)(nil)).Elem() +} + +type RemoveMonitoredEntitiesResponse struct { +} + +type RemoveNetworkResourcePool RemoveNetworkResourcePoolRequestType + +func init() { + t["RemoveNetworkResourcePool"] = reflect.TypeOf((*RemoveNetworkResourcePool)(nil)).Elem() +} + +type RemoveNetworkResourcePoolRequestType struct { + This ManagedObjectReference `xml:"_this"` + Key []string `xml:"key"` +} + +func init() { + t["RemoveNetworkResourcePoolRequestType"] = reflect.TypeOf((*RemoveNetworkResourcePoolRequestType)(nil)).Elem() +} + +type RemoveNetworkResourcePoolResponse struct { +} + +type RemoveNvmeOverRdmaAdapter RemoveNvmeOverRdmaAdapterRequestType + +func init() { + t["RemoveNvmeOverRdmaAdapter"] = reflect.TypeOf((*RemoveNvmeOverRdmaAdapter)(nil)).Elem() +} + +type RemoveNvmeOverRdmaAdapterRequestType struct { + This ManagedObjectReference `xml:"_this"` + HbaDeviceName string `xml:"hbaDeviceName"` +} + +func init() { + t["RemoveNvmeOverRdmaAdapterRequestType"] = reflect.TypeOf((*RemoveNvmeOverRdmaAdapterRequestType)(nil)).Elem() +} + +type RemoveNvmeOverRdmaAdapterResponse struct { +} + +type RemovePerfInterval RemovePerfIntervalRequestType + +func init() { + t["RemovePerfInterval"] = reflect.TypeOf((*RemovePerfInterval)(nil)).Elem() +} + +type RemovePerfIntervalRequestType struct { + This ManagedObjectReference `xml:"_this"` + SamplePeriod int32 `xml:"samplePeriod"` +} + +func init() { + t["RemovePerfIntervalRequestType"] = reflect.TypeOf((*RemovePerfIntervalRequestType)(nil)).Elem() +} + +type RemovePerfIntervalResponse struct { +} + +type RemovePortGroup RemovePortGroupRequestType + +func init() { + t["RemovePortGroup"] = reflect.TypeOf((*RemovePortGroup)(nil)).Elem() +} + +type RemovePortGroupRequestType struct { + This ManagedObjectReference `xml:"_this"` + PgName string `xml:"pgName"` +} + +func init() { + t["RemovePortGroupRequestType"] = reflect.TypeOf((*RemovePortGroupRequestType)(nil)).Elem() +} + +type RemovePortGroupResponse struct { +} + +type RemoveScheduledTask RemoveScheduledTaskRequestType + +func init() { + t["RemoveScheduledTask"] = reflect.TypeOf((*RemoveScheduledTask)(nil)).Elem() +} + +type RemoveScheduledTaskRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RemoveScheduledTaskRequestType"] = reflect.TypeOf((*RemoveScheduledTaskRequestType)(nil)).Elem() +} + +type RemoveScheduledTaskResponse struct { +} + +type RemoveServiceConsoleVirtualNic RemoveServiceConsoleVirtualNicRequestType + +func init() { + t["RemoveServiceConsoleVirtualNic"] = reflect.TypeOf((*RemoveServiceConsoleVirtualNic)(nil)).Elem() +} + +type RemoveServiceConsoleVirtualNicRequestType struct { + This ManagedObjectReference `xml:"_this"` + Device string `xml:"device"` +} + +func init() { + t["RemoveServiceConsoleVirtualNicRequestType"] = reflect.TypeOf((*RemoveServiceConsoleVirtualNicRequestType)(nil)).Elem() +} + +type RemoveServiceConsoleVirtualNicResponse struct { +} + +type RemoveSmartCardTrustAnchor RemoveSmartCardTrustAnchorRequestType + +func init() { + t["RemoveSmartCardTrustAnchor"] = reflect.TypeOf((*RemoveSmartCardTrustAnchor)(nil)).Elem() +} + +type RemoveSmartCardTrustAnchorByFingerprint RemoveSmartCardTrustAnchorByFingerprintRequestType + +func init() { + t["RemoveSmartCardTrustAnchorByFingerprint"] = reflect.TypeOf((*RemoveSmartCardTrustAnchorByFingerprint)(nil)).Elem() +} + +type RemoveSmartCardTrustAnchorByFingerprintRequestType struct { + This ManagedObjectReference `xml:"_this"` + Fingerprint string `xml:"fingerprint"` + Digest string `xml:"digest"` +} + +func init() { + t["RemoveSmartCardTrustAnchorByFingerprintRequestType"] = reflect.TypeOf((*RemoveSmartCardTrustAnchorByFingerprintRequestType)(nil)).Elem() +} + +type RemoveSmartCardTrustAnchorByFingerprintResponse struct { +} + +type RemoveSmartCardTrustAnchorRequestType struct { + This ManagedObjectReference `xml:"_this"` + Issuer string `xml:"issuer"` + Serial string `xml:"serial"` +} + +func init() { + t["RemoveSmartCardTrustAnchorRequestType"] = reflect.TypeOf((*RemoveSmartCardTrustAnchorRequestType)(nil)).Elem() +} + +type RemoveSmartCardTrustAnchorResponse struct { +} + +type RemoveSnapshotRequestType struct { + This ManagedObjectReference `xml:"_this"` + RemoveChildren bool `xml:"removeChildren"` + Consolidate *bool `xml:"consolidate"` +} + +func init() { + t["RemoveSnapshotRequestType"] = reflect.TypeOf((*RemoveSnapshotRequestType)(nil)).Elem() +} + +type RemoveSnapshot_Task RemoveSnapshotRequestType + +func init() { + t["RemoveSnapshot_Task"] = reflect.TypeOf((*RemoveSnapshot_Task)(nil)).Elem() +} + +type RemoveSnapshot_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type RemoveUser RemoveUserRequestType + +func init() { + t["RemoveUser"] = reflect.TypeOf((*RemoveUser)(nil)).Elem() +} + +type RemoveUserRequestType struct { + This ManagedObjectReference `xml:"_this"` + UserName string `xml:"userName"` +} + +func init() { + t["RemoveUserRequestType"] = reflect.TypeOf((*RemoveUserRequestType)(nil)).Elem() +} + +type RemoveUserResponse struct { +} + +type RemoveVirtualNic RemoveVirtualNicRequestType + +func init() { + t["RemoveVirtualNic"] = reflect.TypeOf((*RemoveVirtualNic)(nil)).Elem() +} + +type RemoveVirtualNicRequestType struct { + This ManagedObjectReference `xml:"_this"` + Device string `xml:"device"` +} + +func init() { + t["RemoveVirtualNicRequestType"] = reflect.TypeOf((*RemoveVirtualNicRequestType)(nil)).Elem() +} + +type RemoveVirtualNicResponse struct { +} + +type RemoveVirtualSwitch RemoveVirtualSwitchRequestType + +func init() { + t["RemoveVirtualSwitch"] = reflect.TypeOf((*RemoveVirtualSwitch)(nil)).Elem() +} + +type RemoveVirtualSwitchRequestType struct { + This ManagedObjectReference `xml:"_this"` + VswitchName string `xml:"vswitchName"` +} + +func init() { + t["RemoveVirtualSwitchRequestType"] = reflect.TypeOf((*RemoveVirtualSwitchRequestType)(nil)).Elem() +} + +type RemoveVirtualSwitchResponse struct { +} + +type RenameCustomFieldDef RenameCustomFieldDefRequestType + +func init() { + t["RenameCustomFieldDef"] = reflect.TypeOf((*RenameCustomFieldDef)(nil)).Elem() +} + +type RenameCustomFieldDefRequestType struct { + This ManagedObjectReference `xml:"_this"` + Key int32 `xml:"key"` + Name string `xml:"name"` +} + +func init() { + t["RenameCustomFieldDefRequestType"] = reflect.TypeOf((*RenameCustomFieldDefRequestType)(nil)).Elem() +} + +type RenameCustomFieldDefResponse struct { +} + +type RenameCustomizationSpec RenameCustomizationSpecRequestType + +func init() { + t["RenameCustomizationSpec"] = reflect.TypeOf((*RenameCustomizationSpec)(nil)).Elem() +} + +type RenameCustomizationSpecRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + NewName string `xml:"newName"` +} + +func init() { + t["RenameCustomizationSpecRequestType"] = reflect.TypeOf((*RenameCustomizationSpecRequestType)(nil)).Elem() +} + +type RenameCustomizationSpecResponse struct { +} + +type RenameDatastore RenameDatastoreRequestType + +func init() { + t["RenameDatastore"] = reflect.TypeOf((*RenameDatastore)(nil)).Elem() +} + +type RenameDatastoreRequestType struct { + This ManagedObjectReference `xml:"_this"` + NewName string `xml:"newName"` +} + +func init() { + t["RenameDatastoreRequestType"] = reflect.TypeOf((*RenameDatastoreRequestType)(nil)).Elem() +} + +type RenameDatastoreResponse struct { +} + +type RenameRequestType struct { + This ManagedObjectReference `xml:"_this"` + NewName string `xml:"newName"` +} + +func init() { + t["RenameRequestType"] = reflect.TypeOf((*RenameRequestType)(nil)).Elem() +} + +type RenameSnapshot RenameSnapshotRequestType + +func init() { + t["RenameSnapshot"] = reflect.TypeOf((*RenameSnapshot)(nil)).Elem() +} + +type RenameSnapshotRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name,omitempty"` + Description string `xml:"description,omitempty"` +} + +func init() { + t["RenameSnapshotRequestType"] = reflect.TypeOf((*RenameSnapshotRequestType)(nil)).Elem() +} + +type RenameSnapshotResponse struct { +} + +type RenameVStorageObject RenameVStorageObjectRequestType + +func init() { + t["RenameVStorageObject"] = reflect.TypeOf((*RenameVStorageObject)(nil)).Elem() +} + +type RenameVStorageObjectRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + Name string `xml:"name"` +} + +func init() { + t["RenameVStorageObjectRequestType"] = reflect.TypeOf((*RenameVStorageObjectRequestType)(nil)).Elem() +} + +type RenameVStorageObjectResponse struct { +} + +type Rename_Task RenameRequestType + +func init() { + t["Rename_Task"] = reflect.TypeOf((*Rename_Task)(nil)).Elem() +} + +type Rename_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ReplaceCACertificatesAndCRLs ReplaceCACertificatesAndCRLsRequestType + +func init() { + t["ReplaceCACertificatesAndCRLs"] = reflect.TypeOf((*ReplaceCACertificatesAndCRLs)(nil)).Elem() +} + +type ReplaceCACertificatesAndCRLsRequestType struct { + This ManagedObjectReference `xml:"_this"` + CaCert []string `xml:"caCert"` + CaCrl []string `xml:"caCrl,omitempty"` +} + +func init() { + t["ReplaceCACertificatesAndCRLsRequestType"] = reflect.TypeOf((*ReplaceCACertificatesAndCRLsRequestType)(nil)).Elem() +} + +type ReplaceCACertificatesAndCRLsResponse struct { +} + +type ReplaceSmartCardTrustAnchors ReplaceSmartCardTrustAnchorsRequestType + +func init() { + t["ReplaceSmartCardTrustAnchors"] = reflect.TypeOf((*ReplaceSmartCardTrustAnchors)(nil)).Elem() +} + +type ReplaceSmartCardTrustAnchorsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Certs []string `xml:"certs,omitempty"` +} + +func init() { + t["ReplaceSmartCardTrustAnchorsRequestType"] = reflect.TypeOf((*ReplaceSmartCardTrustAnchorsRequestType)(nil)).Elem() +} + +type ReplaceSmartCardTrustAnchorsResponse struct { +} + +type ReplicationConfigFault struct { + ReplicationFault +} + +func init() { + t["ReplicationConfigFault"] = reflect.TypeOf((*ReplicationConfigFault)(nil)).Elem() +} + +type ReplicationConfigFaultFault BaseReplicationConfigFault + +func init() { + t["ReplicationConfigFaultFault"] = reflect.TypeOf((*ReplicationConfigFaultFault)(nil)).Elem() +} + +type ReplicationConfigSpec struct { + DynamicData + + Generation int64 `xml:"generation"` + VmReplicationId string `xml:"vmReplicationId"` + Destination string `xml:"destination"` + Port int32 `xml:"port"` + Rpo int64 `xml:"rpo"` + QuiesceGuestEnabled bool `xml:"quiesceGuestEnabled"` + Paused bool `xml:"paused"` + OppUpdatesEnabled bool `xml:"oppUpdatesEnabled"` + NetCompressionEnabled *bool `xml:"netCompressionEnabled"` + NetEncryptionEnabled *bool `xml:"netEncryptionEnabled"` + EncryptionDestination string `xml:"encryptionDestination,omitempty"` + EncryptionPort int32 `xml:"encryptionPort,omitempty"` + RemoteCertificateThumbprint string `xml:"remoteCertificateThumbprint,omitempty"` + Disk []ReplicationInfoDiskSettings `xml:"disk,omitempty"` +} + +func init() { + t["ReplicationConfigSpec"] = reflect.TypeOf((*ReplicationConfigSpec)(nil)).Elem() +} + +type ReplicationDiskConfigFault struct { + ReplicationConfigFault + + Reason string `xml:"reason,omitempty"` + VmRef *ManagedObjectReference `xml:"vmRef,omitempty"` + Key int32 `xml:"key,omitempty"` +} + +func init() { + t["ReplicationDiskConfigFault"] = reflect.TypeOf((*ReplicationDiskConfigFault)(nil)).Elem() +} + +type ReplicationDiskConfigFaultFault ReplicationDiskConfigFault + +func init() { + t["ReplicationDiskConfigFaultFault"] = reflect.TypeOf((*ReplicationDiskConfigFaultFault)(nil)).Elem() +} + +type ReplicationFault struct { + VimFault +} + +func init() { + t["ReplicationFault"] = reflect.TypeOf((*ReplicationFault)(nil)).Elem() +} + +type ReplicationFaultFault BaseReplicationFault + +func init() { + t["ReplicationFaultFault"] = reflect.TypeOf((*ReplicationFaultFault)(nil)).Elem() +} + +type ReplicationGroupId struct { + DynamicData + + FaultDomainId FaultDomainId `xml:"faultDomainId"` + DeviceGroupId DeviceGroupId `xml:"deviceGroupId"` +} + +func init() { + t["ReplicationGroupId"] = reflect.TypeOf((*ReplicationGroupId)(nil)).Elem() +} + +type ReplicationIncompatibleWithFT struct { + ReplicationFault +} + +func init() { + t["ReplicationIncompatibleWithFT"] = reflect.TypeOf((*ReplicationIncompatibleWithFT)(nil)).Elem() +} + +type ReplicationIncompatibleWithFTFault ReplicationIncompatibleWithFT + +func init() { + t["ReplicationIncompatibleWithFTFault"] = reflect.TypeOf((*ReplicationIncompatibleWithFTFault)(nil)).Elem() +} + +type ReplicationInfoDiskSettings struct { + DynamicData + + Key int32 `xml:"key"` + DiskReplicationId string `xml:"diskReplicationId"` +} + +func init() { + t["ReplicationInfoDiskSettings"] = reflect.TypeOf((*ReplicationInfoDiskSettings)(nil)).Elem() +} + +type ReplicationInvalidOptions struct { + ReplicationFault + + Options string `xml:"options"` + Entity *ManagedObjectReference `xml:"entity,omitempty"` +} + +func init() { + t["ReplicationInvalidOptions"] = reflect.TypeOf((*ReplicationInvalidOptions)(nil)).Elem() +} + +type ReplicationInvalidOptionsFault ReplicationInvalidOptions + +func init() { + t["ReplicationInvalidOptionsFault"] = reflect.TypeOf((*ReplicationInvalidOptionsFault)(nil)).Elem() +} + +type ReplicationNotSupportedOnHost struct { + ReplicationFault +} + +func init() { + t["ReplicationNotSupportedOnHost"] = reflect.TypeOf((*ReplicationNotSupportedOnHost)(nil)).Elem() +} + +type ReplicationNotSupportedOnHostFault ReplicationNotSupportedOnHost + +func init() { + t["ReplicationNotSupportedOnHostFault"] = reflect.TypeOf((*ReplicationNotSupportedOnHostFault)(nil)).Elem() +} + +type ReplicationSpec struct { + DynamicData + + ReplicationGroupId ReplicationGroupId `xml:"replicationGroupId"` +} + +func init() { + t["ReplicationSpec"] = reflect.TypeOf((*ReplicationSpec)(nil)).Elem() +} + +type ReplicationVmConfigFault struct { + ReplicationConfigFault + + Reason string `xml:"reason,omitempty"` + VmRef *ManagedObjectReference `xml:"vmRef,omitempty"` +} + +func init() { + t["ReplicationVmConfigFault"] = reflect.TypeOf((*ReplicationVmConfigFault)(nil)).Elem() +} + +type ReplicationVmConfigFaultFault ReplicationVmConfigFault + +func init() { + t["ReplicationVmConfigFaultFault"] = reflect.TypeOf((*ReplicationVmConfigFaultFault)(nil)).Elem() +} + +type ReplicationVmFault struct { + ReplicationFault + + Reason string `xml:"reason"` + State string `xml:"state,omitempty"` + InstanceId string `xml:"instanceId,omitempty"` + Vm ManagedObjectReference `xml:"vm"` +} + +func init() { + t["ReplicationVmFault"] = reflect.TypeOf((*ReplicationVmFault)(nil)).Elem() +} + +type ReplicationVmFaultFault BaseReplicationVmFault + +func init() { + t["ReplicationVmFaultFault"] = reflect.TypeOf((*ReplicationVmFaultFault)(nil)).Elem() +} + +type ReplicationVmInProgressFault struct { + ReplicationVmFault + + RequestedActivity string `xml:"requestedActivity"` + InProgressActivity string `xml:"inProgressActivity"` +} + +func init() { + t["ReplicationVmInProgressFault"] = reflect.TypeOf((*ReplicationVmInProgressFault)(nil)).Elem() +} + +type ReplicationVmInProgressFaultFault ReplicationVmInProgressFault + +func init() { + t["ReplicationVmInProgressFaultFault"] = reflect.TypeOf((*ReplicationVmInProgressFaultFault)(nil)).Elem() +} + +type ReplicationVmProgressInfo struct { + DynamicData + + Progress int32 `xml:"progress"` + BytesTransferred int64 `xml:"bytesTransferred"` + BytesToTransfer int64 `xml:"bytesToTransfer"` + ChecksumTotalBytes int64 `xml:"checksumTotalBytes,omitempty"` + ChecksumComparedBytes int64 `xml:"checksumComparedBytes,omitempty"` +} + +func init() { + t["ReplicationVmProgressInfo"] = reflect.TypeOf((*ReplicationVmProgressInfo)(nil)).Elem() +} + +type RequestCanceled struct { + RuntimeFault +} + +func init() { + t["RequestCanceled"] = reflect.TypeOf((*RequestCanceled)(nil)).Elem() +} + +type RequestCanceledFault RequestCanceled + +func init() { + t["RequestCanceledFault"] = reflect.TypeOf((*RequestCanceledFault)(nil)).Elem() +} + +type RescanAllHba RescanAllHbaRequestType + +func init() { + t["RescanAllHba"] = reflect.TypeOf((*RescanAllHba)(nil)).Elem() +} + +type RescanAllHbaRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RescanAllHbaRequestType"] = reflect.TypeOf((*RescanAllHbaRequestType)(nil)).Elem() +} + +type RescanAllHbaResponse struct { +} + +type RescanHba RescanHbaRequestType + +func init() { + t["RescanHba"] = reflect.TypeOf((*RescanHba)(nil)).Elem() +} + +type RescanHbaRequestType struct { + This ManagedObjectReference `xml:"_this"` + HbaDevice string `xml:"hbaDevice"` +} + +func init() { + t["RescanHbaRequestType"] = reflect.TypeOf((*RescanHbaRequestType)(nil)).Elem() +} + +type RescanHbaResponse struct { +} + +type RescanVffs RescanVffsRequestType + +func init() { + t["RescanVffs"] = reflect.TypeOf((*RescanVffs)(nil)).Elem() +} + +type RescanVffsRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RescanVffsRequestType"] = reflect.TypeOf((*RescanVffsRequestType)(nil)).Elem() +} + +type RescanVffsResponse struct { +} + +type RescanVmfs RescanVmfsRequestType + +func init() { + t["RescanVmfs"] = reflect.TypeOf((*RescanVmfs)(nil)).Elem() +} + +type RescanVmfsRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RescanVmfsRequestType"] = reflect.TypeOf((*RescanVmfsRequestType)(nil)).Elem() +} + +type RescanVmfsResponse struct { +} + +type ResetCollector ResetCollectorRequestType + +func init() { + t["ResetCollector"] = reflect.TypeOf((*ResetCollector)(nil)).Elem() +} + +type ResetCollectorRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["ResetCollectorRequestType"] = reflect.TypeOf((*ResetCollectorRequestType)(nil)).Elem() +} + +type ResetCollectorResponse struct { +} + +type ResetCounterLevelMapping ResetCounterLevelMappingRequestType + +func init() { + t["ResetCounterLevelMapping"] = reflect.TypeOf((*ResetCounterLevelMapping)(nil)).Elem() +} + +type ResetCounterLevelMappingRequestType struct { + This ManagedObjectReference `xml:"_this"` + Counters []int32 `xml:"counters"` +} + +func init() { + t["ResetCounterLevelMappingRequestType"] = reflect.TypeOf((*ResetCounterLevelMappingRequestType)(nil)).Elem() +} + +type ResetCounterLevelMappingResponse struct { +} + +type ResetEntityPermissions ResetEntityPermissionsRequestType + +func init() { + t["ResetEntityPermissions"] = reflect.TypeOf((*ResetEntityPermissions)(nil)).Elem() +} + +type ResetEntityPermissionsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity ManagedObjectReference `xml:"entity"` + Permission []Permission `xml:"permission,omitempty"` +} + +func init() { + t["ResetEntityPermissionsRequestType"] = reflect.TypeOf((*ResetEntityPermissionsRequestType)(nil)).Elem() +} + +type ResetEntityPermissionsResponse struct { +} + +type ResetFirmwareToFactoryDefaults ResetFirmwareToFactoryDefaultsRequestType + +func init() { + t["ResetFirmwareToFactoryDefaults"] = reflect.TypeOf((*ResetFirmwareToFactoryDefaults)(nil)).Elem() +} + +type ResetFirmwareToFactoryDefaultsRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["ResetFirmwareToFactoryDefaultsRequestType"] = reflect.TypeOf((*ResetFirmwareToFactoryDefaultsRequestType)(nil)).Elem() +} + +type ResetFirmwareToFactoryDefaultsResponse struct { +} + +type ResetGuestInformation ResetGuestInformationRequestType + +func init() { + t["ResetGuestInformation"] = reflect.TypeOf((*ResetGuestInformation)(nil)).Elem() +} + +type ResetGuestInformationRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["ResetGuestInformationRequestType"] = reflect.TypeOf((*ResetGuestInformationRequestType)(nil)).Elem() +} + +type ResetGuestInformationResponse struct { +} + +type ResetListView ResetListViewRequestType + +func init() { + t["ResetListView"] = reflect.TypeOf((*ResetListView)(nil)).Elem() +} + +type ResetListViewFromView ResetListViewFromViewRequestType + +func init() { + t["ResetListViewFromView"] = reflect.TypeOf((*ResetListViewFromView)(nil)).Elem() +} + +type ResetListViewFromViewRequestType struct { + This ManagedObjectReference `xml:"_this"` + View ManagedObjectReference `xml:"view"` +} + +func init() { + t["ResetListViewFromViewRequestType"] = reflect.TypeOf((*ResetListViewFromViewRequestType)(nil)).Elem() +} + +type ResetListViewFromViewResponse struct { +} + +type ResetListViewRequestType struct { + This ManagedObjectReference `xml:"_this"` + Obj []ManagedObjectReference `xml:"obj,omitempty"` +} + +func init() { + t["ResetListViewRequestType"] = reflect.TypeOf((*ResetListViewRequestType)(nil)).Elem() +} + +type ResetListViewResponse struct { + Returnval []ManagedObjectReference `xml:"returnval,omitempty"` +} + +type ResetSystemHealthInfo ResetSystemHealthInfoRequestType + +func init() { + t["ResetSystemHealthInfo"] = reflect.TypeOf((*ResetSystemHealthInfo)(nil)).Elem() +} + +type ResetSystemHealthInfoRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["ResetSystemHealthInfoRequestType"] = reflect.TypeOf((*ResetSystemHealthInfoRequestType)(nil)).Elem() +} + +type ResetSystemHealthInfoResponse struct { +} + +type ResetVMRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["ResetVMRequestType"] = reflect.TypeOf((*ResetVMRequestType)(nil)).Elem() +} + +type ResetVM_Task ResetVMRequestType + +func init() { + t["ResetVM_Task"] = reflect.TypeOf((*ResetVM_Task)(nil)).Elem() +} + +type ResetVM_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ResignatureUnresolvedVmfsVolumeRequestType struct { + This ManagedObjectReference `xml:"_this"` + ResolutionSpec HostUnresolvedVmfsResignatureSpec `xml:"resolutionSpec"` +} + +func init() { + t["ResignatureUnresolvedVmfsVolumeRequestType"] = reflect.TypeOf((*ResignatureUnresolvedVmfsVolumeRequestType)(nil)).Elem() +} + +type ResignatureUnresolvedVmfsVolume_Task ResignatureUnresolvedVmfsVolumeRequestType + +func init() { + t["ResignatureUnresolvedVmfsVolume_Task"] = reflect.TypeOf((*ResignatureUnresolvedVmfsVolume_Task)(nil)).Elem() +} + +type ResignatureUnresolvedVmfsVolume_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ResolveInstallationErrorsOnClusterRequestType struct { + This ManagedObjectReference `xml:"_this"` + FilterId string `xml:"filterId"` + Cluster ManagedObjectReference `xml:"cluster"` +} + +func init() { + t["ResolveInstallationErrorsOnClusterRequestType"] = reflect.TypeOf((*ResolveInstallationErrorsOnClusterRequestType)(nil)).Elem() +} + +type ResolveInstallationErrorsOnCluster_Task ResolveInstallationErrorsOnClusterRequestType + +func init() { + t["ResolveInstallationErrorsOnCluster_Task"] = reflect.TypeOf((*ResolveInstallationErrorsOnCluster_Task)(nil)).Elem() +} + +type ResolveInstallationErrorsOnCluster_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ResolveInstallationErrorsOnHostRequestType struct { + This ManagedObjectReference `xml:"_this"` + FilterId string `xml:"filterId"` + Host ManagedObjectReference `xml:"host"` +} + +func init() { + t["ResolveInstallationErrorsOnHostRequestType"] = reflect.TypeOf((*ResolveInstallationErrorsOnHostRequestType)(nil)).Elem() +} + +type ResolveInstallationErrorsOnHost_Task ResolveInstallationErrorsOnHostRequestType + +func init() { + t["ResolveInstallationErrorsOnHost_Task"] = reflect.TypeOf((*ResolveInstallationErrorsOnHost_Task)(nil)).Elem() +} + +type ResolveInstallationErrorsOnHost_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ResolveMultipleUnresolvedVmfsVolumes ResolveMultipleUnresolvedVmfsVolumesRequestType + +func init() { + t["ResolveMultipleUnresolvedVmfsVolumes"] = reflect.TypeOf((*ResolveMultipleUnresolvedVmfsVolumes)(nil)).Elem() +} + +type ResolveMultipleUnresolvedVmfsVolumesExRequestType struct { + This ManagedObjectReference `xml:"_this"` + ResolutionSpec []HostUnresolvedVmfsResolutionSpec `xml:"resolutionSpec"` +} + +func init() { + t["ResolveMultipleUnresolvedVmfsVolumesExRequestType"] = reflect.TypeOf((*ResolveMultipleUnresolvedVmfsVolumesExRequestType)(nil)).Elem() +} + +type ResolveMultipleUnresolvedVmfsVolumesEx_Task ResolveMultipleUnresolvedVmfsVolumesExRequestType + +func init() { + t["ResolveMultipleUnresolvedVmfsVolumesEx_Task"] = reflect.TypeOf((*ResolveMultipleUnresolvedVmfsVolumesEx_Task)(nil)).Elem() +} + +type ResolveMultipleUnresolvedVmfsVolumesEx_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ResolveMultipleUnresolvedVmfsVolumesRequestType struct { + This ManagedObjectReference `xml:"_this"` + ResolutionSpec []HostUnresolvedVmfsResolutionSpec `xml:"resolutionSpec"` +} + +func init() { + t["ResolveMultipleUnresolvedVmfsVolumesRequestType"] = reflect.TypeOf((*ResolveMultipleUnresolvedVmfsVolumesRequestType)(nil)).Elem() +} + +type ResolveMultipleUnresolvedVmfsVolumesResponse struct { + Returnval []HostUnresolvedVmfsResolutionResult `xml:"returnval,omitempty"` +} + +type ResourceAllocationInfo struct { + DynamicData + + Reservation *int64 `xml:"reservation"` + ExpandableReservation *bool `xml:"expandableReservation"` + Limit *int64 `xml:"limit"` + Shares *SharesInfo `xml:"shares,omitempty"` + OverheadLimit *int64 `xml:"overheadLimit"` +} + +func init() { + t["ResourceAllocationInfo"] = reflect.TypeOf((*ResourceAllocationInfo)(nil)).Elem() +} + +type ResourceAllocationOption struct { + DynamicData + + SharesOption SharesOption `xml:"sharesOption"` +} + +func init() { + t["ResourceAllocationOption"] = reflect.TypeOf((*ResourceAllocationOption)(nil)).Elem() +} + +type ResourceConfigOption struct { + DynamicData + + CpuAllocationOption ResourceAllocationOption `xml:"cpuAllocationOption"` + MemoryAllocationOption ResourceAllocationOption `xml:"memoryAllocationOption"` +} + +func init() { + t["ResourceConfigOption"] = reflect.TypeOf((*ResourceConfigOption)(nil)).Elem() +} + +type ResourceConfigSpec struct { + DynamicData + + Entity *ManagedObjectReference `xml:"entity,omitempty"` + ChangeVersion string `xml:"changeVersion,omitempty"` + LastModified *time.Time `xml:"lastModified"` + CpuAllocation ResourceAllocationInfo `xml:"cpuAllocation"` + MemoryAllocation ResourceAllocationInfo `xml:"memoryAllocation"` + ScaleDescendantsShares string `xml:"scaleDescendantsShares,omitempty"` +} + +func init() { + t["ResourceConfigSpec"] = reflect.TypeOf((*ResourceConfigSpec)(nil)).Elem() +} + +type ResourceInUse struct { + VimFault + + Type string `xml:"type,omitempty"` + Name string `xml:"name,omitempty"` +} + +func init() { + t["ResourceInUse"] = reflect.TypeOf((*ResourceInUse)(nil)).Elem() +} + +type ResourceInUseFault BaseResourceInUse + +func init() { + t["ResourceInUseFault"] = reflect.TypeOf((*ResourceInUseFault)(nil)).Elem() +} + +type ResourceNotAvailable struct { + VimFault + + ContainerType string `xml:"containerType,omitempty"` + ContainerName string `xml:"containerName,omitempty"` + Type string `xml:"type,omitempty"` +} + +func init() { + t["ResourceNotAvailable"] = reflect.TypeOf((*ResourceNotAvailable)(nil)).Elem() +} + +type ResourceNotAvailableFault ResourceNotAvailable + +func init() { + t["ResourceNotAvailableFault"] = reflect.TypeOf((*ResourceNotAvailableFault)(nil)).Elem() +} + +type ResourcePoolCreatedEvent struct { + ResourcePoolEvent + + Parent ResourcePoolEventArgument `xml:"parent"` +} + +func init() { + t["ResourcePoolCreatedEvent"] = reflect.TypeOf((*ResourcePoolCreatedEvent)(nil)).Elem() +} + +type ResourcePoolDestroyedEvent struct { + ResourcePoolEvent +} + +func init() { + t["ResourcePoolDestroyedEvent"] = reflect.TypeOf((*ResourcePoolDestroyedEvent)(nil)).Elem() +} + +type ResourcePoolEvent struct { + Event + + ResourcePool ResourcePoolEventArgument `xml:"resourcePool"` +} + +func init() { + t["ResourcePoolEvent"] = reflect.TypeOf((*ResourcePoolEvent)(nil)).Elem() +} + +type ResourcePoolEventArgument struct { + EntityEventArgument + + ResourcePool ManagedObjectReference `xml:"resourcePool"` +} + +func init() { + t["ResourcePoolEventArgument"] = reflect.TypeOf((*ResourcePoolEventArgument)(nil)).Elem() +} + +type ResourcePoolMovedEvent struct { + ResourcePoolEvent + + OldParent ResourcePoolEventArgument `xml:"oldParent"` + NewParent ResourcePoolEventArgument `xml:"newParent"` +} + +func init() { + t["ResourcePoolMovedEvent"] = reflect.TypeOf((*ResourcePoolMovedEvent)(nil)).Elem() +} + +type ResourcePoolQuickStats struct { + DynamicData + + OverallCpuUsage int64 `xml:"overallCpuUsage,omitempty"` + OverallCpuDemand int64 `xml:"overallCpuDemand,omitempty"` + GuestMemoryUsage int64 `xml:"guestMemoryUsage,omitempty"` + HostMemoryUsage int64 `xml:"hostMemoryUsage,omitempty"` + DistributedCpuEntitlement int64 `xml:"distributedCpuEntitlement,omitempty"` + DistributedMemoryEntitlement int64 `xml:"distributedMemoryEntitlement,omitempty"` + StaticCpuEntitlement int32 `xml:"staticCpuEntitlement,omitempty"` + StaticMemoryEntitlement int32 `xml:"staticMemoryEntitlement,omitempty"` + PrivateMemory int64 `xml:"privateMemory,omitempty"` + SharedMemory int64 `xml:"sharedMemory,omitempty"` + SwappedMemory int64 `xml:"swappedMemory,omitempty"` + BalloonedMemory int64 `xml:"balloonedMemory,omitempty"` + OverheadMemory int64 `xml:"overheadMemory,omitempty"` + ConsumedOverheadMemory int64 `xml:"consumedOverheadMemory,omitempty"` + CompressedMemory int64 `xml:"compressedMemory,omitempty"` +} + +func init() { + t["ResourcePoolQuickStats"] = reflect.TypeOf((*ResourcePoolQuickStats)(nil)).Elem() +} + +type ResourcePoolReconfiguredEvent struct { + ResourcePoolEvent + + ConfigChanges *ChangesInfoEventArgument `xml:"configChanges,omitempty"` +} + +func init() { + t["ResourcePoolReconfiguredEvent"] = reflect.TypeOf((*ResourcePoolReconfiguredEvent)(nil)).Elem() +} + +type ResourcePoolResourceUsage struct { + DynamicData + + ReservationUsed int64 `xml:"reservationUsed"` + ReservationUsedForVm int64 `xml:"reservationUsedForVm"` + UnreservedForPool int64 `xml:"unreservedForPool"` + UnreservedForVm int64 `xml:"unreservedForVm"` + OverallUsage int64 `xml:"overallUsage"` + MaxUsage int64 `xml:"maxUsage"` +} + +func init() { + t["ResourcePoolResourceUsage"] = reflect.TypeOf((*ResourcePoolResourceUsage)(nil)).Elem() +} + +type ResourcePoolRuntimeInfo struct { + DynamicData + + Memory ResourcePoolResourceUsage `xml:"memory"` + Cpu ResourcePoolResourceUsage `xml:"cpu"` + OverallStatus ManagedEntityStatus `xml:"overallStatus"` + SharesScalable string `xml:"sharesScalable,omitempty"` +} + +func init() { + t["ResourcePoolRuntimeInfo"] = reflect.TypeOf((*ResourcePoolRuntimeInfo)(nil)).Elem() +} + +type ResourcePoolSummary struct { + DynamicData + + Name string `xml:"name"` + Config ResourceConfigSpec `xml:"config"` + Runtime ResourcePoolRuntimeInfo `xml:"runtime"` + QuickStats *ResourcePoolQuickStats `xml:"quickStats,omitempty"` + ConfiguredMemoryMB int32 `xml:"configuredMemoryMB,omitempty"` +} + +func init() { + t["ResourcePoolSummary"] = reflect.TypeOf((*ResourcePoolSummary)(nil)).Elem() +} + +type ResourceViolatedEvent struct { + ResourcePoolEvent +} + +func init() { + t["ResourceViolatedEvent"] = reflect.TypeOf((*ResourceViolatedEvent)(nil)).Elem() +} + +type RestartService RestartServiceRequestType + +func init() { + t["RestartService"] = reflect.TypeOf((*RestartService)(nil)).Elem() +} + +type RestartServiceConsoleVirtualNic RestartServiceConsoleVirtualNicRequestType + +func init() { + t["RestartServiceConsoleVirtualNic"] = reflect.TypeOf((*RestartServiceConsoleVirtualNic)(nil)).Elem() +} + +type RestartServiceConsoleVirtualNicRequestType struct { + This ManagedObjectReference `xml:"_this"` + Device string `xml:"device"` +} + +func init() { + t["RestartServiceConsoleVirtualNicRequestType"] = reflect.TypeOf((*RestartServiceConsoleVirtualNicRequestType)(nil)).Elem() +} + +type RestartServiceConsoleVirtualNicResponse struct { +} + +type RestartServiceRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id string `xml:"id"` +} + +func init() { + t["RestartServiceRequestType"] = reflect.TypeOf((*RestartServiceRequestType)(nil)).Elem() +} + +type RestartServiceResponse struct { +} + +type RestoreFirmwareConfiguration RestoreFirmwareConfigurationRequestType + +func init() { + t["RestoreFirmwareConfiguration"] = reflect.TypeOf((*RestoreFirmwareConfiguration)(nil)).Elem() +} + +type RestoreFirmwareConfigurationRequestType struct { + This ManagedObjectReference `xml:"_this"` + Force bool `xml:"force"` +} + +func init() { + t["RestoreFirmwareConfigurationRequestType"] = reflect.TypeOf((*RestoreFirmwareConfigurationRequestType)(nil)).Elem() +} + +type RestoreFirmwareConfigurationResponse struct { +} + +type RestrictedByAdministrator struct { + RuntimeFault + + Details string `xml:"details"` +} + +func init() { + t["RestrictedByAdministrator"] = reflect.TypeOf((*RestrictedByAdministrator)(nil)).Elem() +} + +type RestrictedByAdministratorFault RestrictedByAdministrator + +func init() { + t["RestrictedByAdministratorFault"] = reflect.TypeOf((*RestrictedByAdministratorFault)(nil)).Elem() +} + +type RestrictedVersion struct { + SecurityError +} + +func init() { + t["RestrictedVersion"] = reflect.TypeOf((*RestrictedVersion)(nil)).Elem() +} + +type RestrictedVersionFault RestrictedVersion + +func init() { + t["RestrictedVersionFault"] = reflect.TypeOf((*RestrictedVersionFault)(nil)).Elem() +} + +type RetrieveAllPermissions RetrieveAllPermissionsRequestType + +func init() { + t["RetrieveAllPermissions"] = reflect.TypeOf((*RetrieveAllPermissions)(nil)).Elem() +} + +type RetrieveAllPermissionsRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RetrieveAllPermissionsRequestType"] = reflect.TypeOf((*RetrieveAllPermissionsRequestType)(nil)).Elem() +} + +type RetrieveAllPermissionsResponse struct { + Returnval []Permission `xml:"returnval,omitempty"` +} + +type RetrieveAnswerFile RetrieveAnswerFileRequestType + +func init() { + t["RetrieveAnswerFile"] = reflect.TypeOf((*RetrieveAnswerFile)(nil)).Elem() +} + +type RetrieveAnswerFileForProfile RetrieveAnswerFileForProfileRequestType + +func init() { + t["RetrieveAnswerFileForProfile"] = reflect.TypeOf((*RetrieveAnswerFileForProfile)(nil)).Elem() +} + +type RetrieveAnswerFileForProfileRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host ManagedObjectReference `xml:"host"` + ApplyProfile HostApplyProfile `xml:"applyProfile"` +} + +func init() { + t["RetrieveAnswerFileForProfileRequestType"] = reflect.TypeOf((*RetrieveAnswerFileForProfileRequestType)(nil)).Elem() +} + +type RetrieveAnswerFileForProfileResponse struct { + Returnval *AnswerFile `xml:"returnval,omitempty"` +} + +type RetrieveAnswerFileRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host ManagedObjectReference `xml:"host"` +} + +func init() { + t["RetrieveAnswerFileRequestType"] = reflect.TypeOf((*RetrieveAnswerFileRequestType)(nil)).Elem() +} + +type RetrieveAnswerFileResponse struct { + Returnval *AnswerFile `xml:"returnval,omitempty"` +} + +type RetrieveArgumentDescription RetrieveArgumentDescriptionRequestType + +func init() { + t["RetrieveArgumentDescription"] = reflect.TypeOf((*RetrieveArgumentDescription)(nil)).Elem() +} + +type RetrieveArgumentDescriptionRequestType struct { + This ManagedObjectReference `xml:"_this"` + EventTypeId string `xml:"eventTypeId"` +} + +func init() { + t["RetrieveArgumentDescriptionRequestType"] = reflect.TypeOf((*RetrieveArgumentDescriptionRequestType)(nil)).Elem() +} + +type RetrieveArgumentDescriptionResponse struct { + Returnval []EventArgDesc `xml:"returnval,omitempty"` +} + +type RetrieveClientCert RetrieveClientCertRequestType + +func init() { + t["RetrieveClientCert"] = reflect.TypeOf((*RetrieveClientCert)(nil)).Elem() +} + +type RetrieveClientCertRequestType struct { + This ManagedObjectReference `xml:"_this"` + Cluster KeyProviderId `xml:"cluster"` +} + +func init() { + t["RetrieveClientCertRequestType"] = reflect.TypeOf((*RetrieveClientCertRequestType)(nil)).Elem() +} + +type RetrieveClientCertResponse struct { + Returnval string `xml:"returnval"` +} + +type RetrieveClientCsr RetrieveClientCsrRequestType + +func init() { + t["RetrieveClientCsr"] = reflect.TypeOf((*RetrieveClientCsr)(nil)).Elem() +} + +type RetrieveClientCsrRequestType struct { + This ManagedObjectReference `xml:"_this"` + Cluster KeyProviderId `xml:"cluster"` +} + +func init() { + t["RetrieveClientCsrRequestType"] = reflect.TypeOf((*RetrieveClientCsrRequestType)(nil)).Elem() +} + +type RetrieveClientCsrResponse struct { + Returnval string `xml:"returnval"` +} + +type RetrieveDasAdvancedRuntimeInfo RetrieveDasAdvancedRuntimeInfoRequestType + +func init() { + t["RetrieveDasAdvancedRuntimeInfo"] = reflect.TypeOf((*RetrieveDasAdvancedRuntimeInfo)(nil)).Elem() +} + +type RetrieveDasAdvancedRuntimeInfoRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RetrieveDasAdvancedRuntimeInfoRequestType"] = reflect.TypeOf((*RetrieveDasAdvancedRuntimeInfoRequestType)(nil)).Elem() +} + +type RetrieveDasAdvancedRuntimeInfoResponse struct { + Returnval BaseClusterDasAdvancedRuntimeInfo `xml:"returnval,omitempty,typeattr"` +} + +type RetrieveDescription RetrieveDescriptionRequestType + +func init() { + t["RetrieveDescription"] = reflect.TypeOf((*RetrieveDescription)(nil)).Elem() +} + +type RetrieveDescriptionRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RetrieveDescriptionRequestType"] = reflect.TypeOf((*RetrieveDescriptionRequestType)(nil)).Elem() +} + +type RetrieveDescriptionResponse struct { + Returnval *ProfileDescription `xml:"returnval,omitempty"` +} + +type RetrieveDiskPartitionInfo RetrieveDiskPartitionInfoRequestType + +func init() { + t["RetrieveDiskPartitionInfo"] = reflect.TypeOf((*RetrieveDiskPartitionInfo)(nil)).Elem() +} + +type RetrieveDiskPartitionInfoRequestType struct { + This ManagedObjectReference `xml:"_this"` + DevicePath []string `xml:"devicePath"` +} + +func init() { + t["RetrieveDiskPartitionInfoRequestType"] = reflect.TypeOf((*RetrieveDiskPartitionInfoRequestType)(nil)).Elem() +} + +type RetrieveDiskPartitionInfoResponse struct { + Returnval []HostDiskPartitionInfo `xml:"returnval,omitempty"` +} + +type RetrieveDynamicPassthroughInfo RetrieveDynamicPassthroughInfoRequestType + +func init() { + t["RetrieveDynamicPassthroughInfo"] = reflect.TypeOf((*RetrieveDynamicPassthroughInfo)(nil)).Elem() +} + +type RetrieveDynamicPassthroughInfoRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RetrieveDynamicPassthroughInfoRequestType"] = reflect.TypeOf((*RetrieveDynamicPassthroughInfoRequestType)(nil)).Elem() +} + +type RetrieveDynamicPassthroughInfoResponse struct { + Returnval []VirtualMachineDynamicPassthroughInfo `xml:"returnval,omitempty"` +} + +type RetrieveEntityPermissions RetrieveEntityPermissionsRequestType + +func init() { + t["RetrieveEntityPermissions"] = reflect.TypeOf((*RetrieveEntityPermissions)(nil)).Elem() +} + +type RetrieveEntityPermissionsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity ManagedObjectReference `xml:"entity"` + Inherited bool `xml:"inherited"` +} + +func init() { + t["RetrieveEntityPermissionsRequestType"] = reflect.TypeOf((*RetrieveEntityPermissionsRequestType)(nil)).Elem() +} + +type RetrieveEntityPermissionsResponse struct { + Returnval []Permission `xml:"returnval,omitempty"` +} + +type RetrieveEntityScheduledTask RetrieveEntityScheduledTaskRequestType + +func init() { + t["RetrieveEntityScheduledTask"] = reflect.TypeOf((*RetrieveEntityScheduledTask)(nil)).Elem() +} + +type RetrieveEntityScheduledTaskRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity *ManagedObjectReference `xml:"entity,omitempty"` +} + +func init() { + t["RetrieveEntityScheduledTaskRequestType"] = reflect.TypeOf((*RetrieveEntityScheduledTaskRequestType)(nil)).Elem() +} + +type RetrieveEntityScheduledTaskResponse struct { + Returnval []ManagedObjectReference `xml:"returnval,omitempty"` +} + +type RetrieveFreeEpcMemory RetrieveFreeEpcMemoryRequestType + +func init() { + t["RetrieveFreeEpcMemory"] = reflect.TypeOf((*RetrieveFreeEpcMemory)(nil)).Elem() +} + +type RetrieveFreeEpcMemoryRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RetrieveFreeEpcMemoryRequestType"] = reflect.TypeOf((*RetrieveFreeEpcMemoryRequestType)(nil)).Elem() +} + +type RetrieveFreeEpcMemoryResponse struct { + Returnval int64 `xml:"returnval"` +} + +type RetrieveHardwareUptime RetrieveHardwareUptimeRequestType + +func init() { + t["RetrieveHardwareUptime"] = reflect.TypeOf((*RetrieveHardwareUptime)(nil)).Elem() +} + +type RetrieveHardwareUptimeRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RetrieveHardwareUptimeRequestType"] = reflect.TypeOf((*RetrieveHardwareUptimeRequestType)(nil)).Elem() +} + +type RetrieveHardwareUptimeResponse struct { + Returnval int64 `xml:"returnval"` +} + +type RetrieveHostAccessControlEntries RetrieveHostAccessControlEntriesRequestType + +func init() { + t["RetrieveHostAccessControlEntries"] = reflect.TypeOf((*RetrieveHostAccessControlEntries)(nil)).Elem() +} + +type RetrieveHostAccessControlEntriesRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RetrieveHostAccessControlEntriesRequestType"] = reflect.TypeOf((*RetrieveHostAccessControlEntriesRequestType)(nil)).Elem() +} + +type RetrieveHostAccessControlEntriesResponse struct { + Returnval []HostAccessControlEntry `xml:"returnval,omitempty"` +} + +type RetrieveHostCustomizations RetrieveHostCustomizationsRequestType + +func init() { + t["RetrieveHostCustomizations"] = reflect.TypeOf((*RetrieveHostCustomizations)(nil)).Elem() +} + +type RetrieveHostCustomizationsForProfile RetrieveHostCustomizationsForProfileRequestType + +func init() { + t["RetrieveHostCustomizationsForProfile"] = reflect.TypeOf((*RetrieveHostCustomizationsForProfile)(nil)).Elem() +} + +type RetrieveHostCustomizationsForProfileRequestType struct { + This ManagedObjectReference `xml:"_this"` + Hosts []ManagedObjectReference `xml:"hosts,omitempty"` + ApplyProfile HostApplyProfile `xml:"applyProfile"` +} + +func init() { + t["RetrieveHostCustomizationsForProfileRequestType"] = reflect.TypeOf((*RetrieveHostCustomizationsForProfileRequestType)(nil)).Elem() +} + +type RetrieveHostCustomizationsForProfileResponse struct { + Returnval []StructuredCustomizations `xml:"returnval,omitempty"` +} + +type RetrieveHostCustomizationsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Hosts []ManagedObjectReference `xml:"hosts,omitempty"` +} + +func init() { + t["RetrieveHostCustomizationsRequestType"] = reflect.TypeOf((*RetrieveHostCustomizationsRequestType)(nil)).Elem() +} + +type RetrieveHostCustomizationsResponse struct { + Returnval []StructuredCustomizations `xml:"returnval,omitempty"` +} + +type RetrieveHostSpecification RetrieveHostSpecificationRequestType + +func init() { + t["RetrieveHostSpecification"] = reflect.TypeOf((*RetrieveHostSpecification)(nil)).Elem() +} + +type RetrieveHostSpecificationRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host ManagedObjectReference `xml:"host"` + FromHost bool `xml:"fromHost"` +} + +func init() { + t["RetrieveHostSpecificationRequestType"] = reflect.TypeOf((*RetrieveHostSpecificationRequestType)(nil)).Elem() +} + +type RetrieveHostSpecificationResponse struct { + Returnval HostSpecification `xml:"returnval"` +} + +type RetrieveKmipServerCert RetrieveKmipServerCertRequestType + +func init() { + t["RetrieveKmipServerCert"] = reflect.TypeOf((*RetrieveKmipServerCert)(nil)).Elem() +} + +type RetrieveKmipServerCertRequestType struct { + This ManagedObjectReference `xml:"_this"` + KeyProvider KeyProviderId `xml:"keyProvider"` + Server KmipServerInfo `xml:"server"` +} + +func init() { + t["RetrieveKmipServerCertRequestType"] = reflect.TypeOf((*RetrieveKmipServerCertRequestType)(nil)).Elem() +} + +type RetrieveKmipServerCertResponse struct { + Returnval CryptoManagerKmipServerCertInfo `xml:"returnval"` +} + +type RetrieveKmipServersStatusRequestType struct { + This ManagedObjectReference `xml:"_this"` + Clusters []KmipClusterInfo `xml:"clusters,omitempty"` +} + +func init() { + t["RetrieveKmipServersStatusRequestType"] = reflect.TypeOf((*RetrieveKmipServersStatusRequestType)(nil)).Elem() +} + +type RetrieveKmipServersStatus_Task RetrieveKmipServersStatusRequestType + +func init() { + t["RetrieveKmipServersStatus_Task"] = reflect.TypeOf((*RetrieveKmipServersStatus_Task)(nil)).Elem() +} + +type RetrieveKmipServersStatus_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type RetrieveObjectScheduledTask RetrieveObjectScheduledTaskRequestType + +func init() { + t["RetrieveObjectScheduledTask"] = reflect.TypeOf((*RetrieveObjectScheduledTask)(nil)).Elem() +} + +type RetrieveObjectScheduledTaskRequestType struct { + This ManagedObjectReference `xml:"_this"` + Obj *ManagedObjectReference `xml:"obj,omitempty"` +} + +func init() { + t["RetrieveObjectScheduledTaskRequestType"] = reflect.TypeOf((*RetrieveObjectScheduledTaskRequestType)(nil)).Elem() +} + +type RetrieveObjectScheduledTaskResponse struct { + Returnval []ManagedObjectReference `xml:"returnval,omitempty"` +} + +type RetrieveOptions struct { + DynamicData + + MaxObjects int32 `xml:"maxObjects,omitempty"` +} + +func init() { + t["RetrieveOptions"] = reflect.TypeOf((*RetrieveOptions)(nil)).Elem() +} + +type RetrieveProductComponents RetrieveProductComponentsRequestType + +func init() { + t["RetrieveProductComponents"] = reflect.TypeOf((*RetrieveProductComponents)(nil)).Elem() +} + +type RetrieveProductComponentsRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RetrieveProductComponentsRequestType"] = reflect.TypeOf((*RetrieveProductComponentsRequestType)(nil)).Elem() +} + +type RetrieveProductComponentsResponse struct { + Returnval []ProductComponentInfo `xml:"returnval,omitempty"` +} + +type RetrieveProperties RetrievePropertiesRequestType + +func init() { + t["RetrieveProperties"] = reflect.TypeOf((*RetrieveProperties)(nil)).Elem() +} + +type RetrievePropertiesEx RetrievePropertiesExRequestType + +func init() { + t["RetrievePropertiesEx"] = reflect.TypeOf((*RetrievePropertiesEx)(nil)).Elem() +} + +type RetrievePropertiesExRequestType struct { + This ManagedObjectReference `xml:"_this"` + SpecSet []PropertyFilterSpec `xml:"specSet"` + Options RetrieveOptions `xml:"options"` +} + +func init() { + t["RetrievePropertiesExRequestType"] = reflect.TypeOf((*RetrievePropertiesExRequestType)(nil)).Elem() +} + +type RetrievePropertiesExResponse struct { + Returnval *RetrieveResult `xml:"returnval,omitempty"` +} + +type RetrievePropertiesRequestType struct { + This ManagedObjectReference `xml:"_this"` + SpecSet []PropertyFilterSpec `xml:"specSet"` +} + +func init() { + t["RetrievePropertiesRequestType"] = reflect.TypeOf((*RetrievePropertiesRequestType)(nil)).Elem() +} + +type RetrievePropertiesResponse struct { + Returnval []ObjectContent `xml:"returnval,omitempty"` +} + +type RetrieveResult struct { + DynamicData + + Token string `xml:"token,omitempty"` + Objects []ObjectContent `xml:"objects"` +} + +func init() { + t["RetrieveResult"] = reflect.TypeOf((*RetrieveResult)(nil)).Elem() +} + +type RetrieveRolePermissions RetrieveRolePermissionsRequestType + +func init() { + t["RetrieveRolePermissions"] = reflect.TypeOf((*RetrieveRolePermissions)(nil)).Elem() +} + +type RetrieveRolePermissionsRequestType struct { + This ManagedObjectReference `xml:"_this"` + RoleId int32 `xml:"roleId"` +} + +func init() { + t["RetrieveRolePermissionsRequestType"] = reflect.TypeOf((*RetrieveRolePermissionsRequestType)(nil)).Elem() +} + +type RetrieveRolePermissionsResponse struct { + Returnval []Permission `xml:"returnval,omitempty"` +} + +type RetrieveSelfSignedClientCert RetrieveSelfSignedClientCertRequestType + +func init() { + t["RetrieveSelfSignedClientCert"] = reflect.TypeOf((*RetrieveSelfSignedClientCert)(nil)).Elem() +} + +type RetrieveSelfSignedClientCertRequestType struct { + This ManagedObjectReference `xml:"_this"` + Cluster KeyProviderId `xml:"cluster"` +} + +func init() { + t["RetrieveSelfSignedClientCertRequestType"] = reflect.TypeOf((*RetrieveSelfSignedClientCertRequestType)(nil)).Elem() +} + +type RetrieveSelfSignedClientCertResponse struct { + Returnval string `xml:"returnval"` +} + +type RetrieveServiceContent RetrieveServiceContentRequestType + +func init() { + t["RetrieveServiceContent"] = reflect.TypeOf((*RetrieveServiceContent)(nil)).Elem() +} + +type RetrieveServiceContentRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RetrieveServiceContentRequestType"] = reflect.TypeOf((*RetrieveServiceContentRequestType)(nil)).Elem() +} + +type RetrieveServiceContentResponse struct { + Returnval ServiceContent `xml:"returnval"` +} + +type RetrieveServiceProviderEntities RetrieveServiceProviderEntitiesRequestType + +func init() { + t["RetrieveServiceProviderEntities"] = reflect.TypeOf((*RetrieveServiceProviderEntities)(nil)).Elem() +} + +type RetrieveServiceProviderEntitiesRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RetrieveServiceProviderEntitiesRequestType"] = reflect.TypeOf((*RetrieveServiceProviderEntitiesRequestType)(nil)).Elem() +} + +type RetrieveServiceProviderEntitiesResponse struct { + Returnval []ManagedObjectReference `xml:"returnval,omitempty"` +} + +type RetrieveSnapshotDetails RetrieveSnapshotDetailsRequestType + +func init() { + t["RetrieveSnapshotDetails"] = reflect.TypeOf((*RetrieveSnapshotDetails)(nil)).Elem() +} + +type RetrieveSnapshotDetailsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + SnapshotId ID `xml:"snapshotId"` +} + +func init() { + t["RetrieveSnapshotDetailsRequestType"] = reflect.TypeOf((*RetrieveSnapshotDetailsRequestType)(nil)).Elem() +} + +type RetrieveSnapshotDetailsResponse struct { + Returnval VStorageObjectSnapshotDetails `xml:"returnval"` +} + +type RetrieveSnapshotInfo RetrieveSnapshotInfoRequestType + +func init() { + t["RetrieveSnapshotInfo"] = reflect.TypeOf((*RetrieveSnapshotInfo)(nil)).Elem() +} + +type RetrieveSnapshotInfoRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["RetrieveSnapshotInfoRequestType"] = reflect.TypeOf((*RetrieveSnapshotInfoRequestType)(nil)).Elem() +} + +type RetrieveSnapshotInfoResponse struct { + Returnval VStorageObjectSnapshotInfo `xml:"returnval"` +} + +type RetrieveUserGroups RetrieveUserGroupsRequestType + +func init() { + t["RetrieveUserGroups"] = reflect.TypeOf((*RetrieveUserGroups)(nil)).Elem() +} + +type RetrieveUserGroupsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Domain string `xml:"domain,omitempty"` + SearchStr string `xml:"searchStr"` + BelongsToGroup string `xml:"belongsToGroup,omitempty"` + BelongsToUser string `xml:"belongsToUser,omitempty"` + ExactMatch bool `xml:"exactMatch"` + FindUsers bool `xml:"findUsers"` + FindGroups bool `xml:"findGroups"` +} + +func init() { + t["RetrieveUserGroupsRequestType"] = reflect.TypeOf((*RetrieveUserGroupsRequestType)(nil)).Elem() +} + +type RetrieveUserGroupsResponse struct { + Returnval []BaseUserSearchResult `xml:"returnval,omitempty,typeattr"` +} + +type RetrieveVStorageInfrastructureObjectPolicy RetrieveVStorageInfrastructureObjectPolicyRequestType + +func init() { + t["RetrieveVStorageInfrastructureObjectPolicy"] = reflect.TypeOf((*RetrieveVStorageInfrastructureObjectPolicy)(nil)).Elem() +} + +type RetrieveVStorageInfrastructureObjectPolicyRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["RetrieveVStorageInfrastructureObjectPolicyRequestType"] = reflect.TypeOf((*RetrieveVStorageInfrastructureObjectPolicyRequestType)(nil)).Elem() +} + +type RetrieveVStorageInfrastructureObjectPolicyResponse struct { + Returnval []VslmInfrastructureObjectPolicy `xml:"returnval,omitempty"` +} + +type RetrieveVStorageObjSpec struct { + DynamicData + + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["RetrieveVStorageObjSpec"] = reflect.TypeOf((*RetrieveVStorageObjSpec)(nil)).Elem() +} + +type RetrieveVStorageObject RetrieveVStorageObjectRequestType + +func init() { + t["RetrieveVStorageObject"] = reflect.TypeOf((*RetrieveVStorageObject)(nil)).Elem() +} + +type RetrieveVStorageObjectAssociations RetrieveVStorageObjectAssociationsRequestType + +func init() { + t["RetrieveVStorageObjectAssociations"] = reflect.TypeOf((*RetrieveVStorageObjectAssociations)(nil)).Elem() +} + +type RetrieveVStorageObjectAssociationsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Ids []RetrieveVStorageObjSpec `xml:"ids,omitempty"` +} + +func init() { + t["RetrieveVStorageObjectAssociationsRequestType"] = reflect.TypeOf((*RetrieveVStorageObjectAssociationsRequestType)(nil)).Elem() +} + +type RetrieveVStorageObjectAssociationsResponse struct { + Returnval []VStorageObjectAssociations `xml:"returnval,omitempty"` +} + +type RetrieveVStorageObjectRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["RetrieveVStorageObjectRequestType"] = reflect.TypeOf((*RetrieveVStorageObjectRequestType)(nil)).Elem() +} + +type RetrieveVStorageObjectResponse struct { + Returnval VStorageObject `xml:"returnval"` +} + +type RetrieveVStorageObjectState RetrieveVStorageObjectStateRequestType + +func init() { + t["RetrieveVStorageObjectState"] = reflect.TypeOf((*RetrieveVStorageObjectState)(nil)).Elem() +} + +type RetrieveVStorageObjectStateRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["RetrieveVStorageObjectStateRequestType"] = reflect.TypeOf((*RetrieveVStorageObjectStateRequestType)(nil)).Elem() +} + +type RetrieveVStorageObjectStateResponse struct { + Returnval VStorageObjectStateInfo `xml:"returnval"` +} + +type RevertToCurrentSnapshotRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host *ManagedObjectReference `xml:"host,omitempty"` + SuppressPowerOn *bool `xml:"suppressPowerOn"` +} + +func init() { + t["RevertToCurrentSnapshotRequestType"] = reflect.TypeOf((*RevertToCurrentSnapshotRequestType)(nil)).Elem() +} + +type RevertToCurrentSnapshot_Task RevertToCurrentSnapshotRequestType + +func init() { + t["RevertToCurrentSnapshot_Task"] = reflect.TypeOf((*RevertToCurrentSnapshot_Task)(nil)).Elem() +} + +type RevertToCurrentSnapshot_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type RevertToSnapshotRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host *ManagedObjectReference `xml:"host,omitempty"` + SuppressPowerOn *bool `xml:"suppressPowerOn"` +} + +func init() { + t["RevertToSnapshotRequestType"] = reflect.TypeOf((*RevertToSnapshotRequestType)(nil)).Elem() +} + +type RevertToSnapshot_Task RevertToSnapshotRequestType + +func init() { + t["RevertToSnapshot_Task"] = reflect.TypeOf((*RevertToSnapshot_Task)(nil)).Elem() +} + +type RevertToSnapshot_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type RevertVStorageObjectRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + SnapshotId ID `xml:"snapshotId"` +} + +func init() { + t["RevertVStorageObjectRequestType"] = reflect.TypeOf((*RevertVStorageObjectRequestType)(nil)).Elem() +} + +type RevertVStorageObject_Task RevertVStorageObjectRequestType + +func init() { + t["RevertVStorageObject_Task"] = reflect.TypeOf((*RevertVStorageObject_Task)(nil)).Elem() +} + +type RevertVStorageObject_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type RewindCollector RewindCollectorRequestType + +func init() { + t["RewindCollector"] = reflect.TypeOf((*RewindCollector)(nil)).Elem() +} + +type RewindCollectorRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RewindCollectorRequestType"] = reflect.TypeOf((*RewindCollectorRequestType)(nil)).Elem() +} + +type RewindCollectorResponse struct { +} + +type RoleAddedEvent struct { + RoleEvent + + PrivilegeList []string `xml:"privilegeList,omitempty"` +} + +func init() { + t["RoleAddedEvent"] = reflect.TypeOf((*RoleAddedEvent)(nil)).Elem() +} + +type RoleEvent struct { + AuthorizationEvent + + Role RoleEventArgument `xml:"role"` +} + +func init() { + t["RoleEvent"] = reflect.TypeOf((*RoleEvent)(nil)).Elem() +} + +type RoleEventArgument struct { + EventArgument + + RoleId int32 `xml:"roleId"` + Name string `xml:"name"` +} + +func init() { + t["RoleEventArgument"] = reflect.TypeOf((*RoleEventArgument)(nil)).Elem() +} + +type RoleRemovedEvent struct { + RoleEvent +} + +func init() { + t["RoleRemovedEvent"] = reflect.TypeOf((*RoleRemovedEvent)(nil)).Elem() +} + +type RoleUpdatedEvent struct { + RoleEvent + + PrivilegeList []string `xml:"privilegeList,omitempty"` + PrevRoleName string `xml:"prevRoleName,omitempty"` + PrivilegesAdded []string `xml:"privilegesAdded,omitempty"` + PrivilegesRemoved []string `xml:"privilegesRemoved,omitempty"` +} + +func init() { + t["RoleUpdatedEvent"] = reflect.TypeOf((*RoleUpdatedEvent)(nil)).Elem() +} + +type RollbackEvent struct { + DvsEvent + + HostName string `xml:"hostName"` + MethodName string `xml:"methodName,omitempty"` +} + +func init() { + t["RollbackEvent"] = reflect.TypeOf((*RollbackEvent)(nil)).Elem() +} + +type RollbackFailure struct { + DvsFault + + EntityName string `xml:"entityName"` + EntityType string `xml:"entityType"` +} + +func init() { + t["RollbackFailure"] = reflect.TypeOf((*RollbackFailure)(nil)).Elem() +} + +type RollbackFailureFault RollbackFailure + +func init() { + t["RollbackFailureFault"] = reflect.TypeOf((*RollbackFailureFault)(nil)).Elem() +} + +type RuleViolation struct { + VmConfigFault + + Host *ManagedObjectReference `xml:"host,omitempty"` + Rule BaseClusterRuleInfo `xml:"rule,omitempty,typeattr"` +} + +func init() { + t["RuleViolation"] = reflect.TypeOf((*RuleViolation)(nil)).Elem() +} + +type RuleViolationFault RuleViolation + +func init() { + t["RuleViolationFault"] = reflect.TypeOf((*RuleViolationFault)(nil)).Elem() +} + +type RunScheduledTask RunScheduledTaskRequestType + +func init() { + t["RunScheduledTask"] = reflect.TypeOf((*RunScheduledTask)(nil)).Elem() +} + +type RunScheduledTaskRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["RunScheduledTaskRequestType"] = reflect.TypeOf((*RunScheduledTaskRequestType)(nil)).Elem() +} + +type RunScheduledTaskResponse struct { +} + +type RunScriptAction struct { + Action + + Script string `xml:"script"` +} + +func init() { + t["RunScriptAction"] = reflect.TypeOf((*RunScriptAction)(nil)).Elem() +} + +type RunVsanPhysicalDiskDiagnostics RunVsanPhysicalDiskDiagnosticsRequestType + +func init() { + t["RunVsanPhysicalDiskDiagnostics"] = reflect.TypeOf((*RunVsanPhysicalDiskDiagnostics)(nil)).Elem() +} + +type RunVsanPhysicalDiskDiagnosticsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Disks []string `xml:"disks,omitempty"` +} + +func init() { + t["RunVsanPhysicalDiskDiagnosticsRequestType"] = reflect.TypeOf((*RunVsanPhysicalDiskDiagnosticsRequestType)(nil)).Elem() +} + +type RunVsanPhysicalDiskDiagnosticsResponse struct { + Returnval []HostVsanInternalSystemVsanPhysicalDiskDiagnosticsResult `xml:"returnval"` +} + +type RuntimeFault struct { + MethodFault +} + +func init() { + t["RuntimeFault"] = reflect.TypeOf((*RuntimeFault)(nil)).Elem() +} + +type RuntimeFaultFault BaseRuntimeFault + +func init() { + t["RuntimeFaultFault"] = reflect.TypeOf((*RuntimeFaultFault)(nil)).Elem() +} + +type SAMLTokenAuthentication struct { + GuestAuthentication + + Token string `xml:"token"` + Username string `xml:"username,omitempty"` +} + +func init() { + t["SAMLTokenAuthentication"] = reflect.TypeOf((*SAMLTokenAuthentication)(nil)).Elem() +} + +type SDDCBase struct { + DynamicData +} + +func init() { + t["SDDCBase"] = reflect.TypeOf((*SDDCBase)(nil)).Elem() +} + +type SSLDisabledFault struct { + HostConnectFault +} + +func init() { + t["SSLDisabledFault"] = reflect.TypeOf((*SSLDisabledFault)(nil)).Elem() +} + +type SSLDisabledFaultFault SSLDisabledFault + +func init() { + t["SSLDisabledFaultFault"] = reflect.TypeOf((*SSLDisabledFaultFault)(nil)).Elem() +} + +type SSLVerifyFault struct { + HostConnectFault + + SelfSigned bool `xml:"selfSigned"` + Thumbprint string `xml:"thumbprint"` +} + +func init() { + t["SSLVerifyFault"] = reflect.TypeOf((*SSLVerifyFault)(nil)).Elem() +} + +type SSLVerifyFaultFault SSLVerifyFault + +func init() { + t["SSLVerifyFaultFault"] = reflect.TypeOf((*SSLVerifyFaultFault)(nil)).Elem() +} + +type SSPIAuthentication struct { + GuestAuthentication + + SspiToken string `xml:"sspiToken"` +} + +func init() { + t["SSPIAuthentication"] = reflect.TypeOf((*SSPIAuthentication)(nil)).Elem() +} + +type SSPIChallenge struct { + VimFault + + Base64Token string `xml:"base64Token"` +} + +func init() { + t["SSPIChallenge"] = reflect.TypeOf((*SSPIChallenge)(nil)).Elem() +} + +type SSPIChallengeFault SSPIChallenge + +func init() { + t["SSPIChallengeFault"] = reflect.TypeOf((*SSPIChallengeFault)(nil)).Elem() +} + +type ScanHostPatchRequestType struct { + This ManagedObjectReference `xml:"_this"` + Repository HostPatchManagerLocator `xml:"repository"` + UpdateID []string `xml:"updateID,omitempty"` +} + +func init() { + t["ScanHostPatchRequestType"] = reflect.TypeOf((*ScanHostPatchRequestType)(nil)).Elem() +} + +type ScanHostPatchV2RequestType struct { + This ManagedObjectReference `xml:"_this"` + MetaUrls []string `xml:"metaUrls,omitempty"` + BundleUrls []string `xml:"bundleUrls,omitempty"` + Spec *HostPatchManagerPatchManagerOperationSpec `xml:"spec,omitempty"` +} + +func init() { + t["ScanHostPatchV2RequestType"] = reflect.TypeOf((*ScanHostPatchV2RequestType)(nil)).Elem() +} + +type ScanHostPatchV2_Task ScanHostPatchV2RequestType + +func init() { + t["ScanHostPatchV2_Task"] = reflect.TypeOf((*ScanHostPatchV2_Task)(nil)).Elem() +} + +type ScanHostPatchV2_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ScanHostPatch_Task ScanHostPatchRequestType + +func init() { + t["ScanHostPatch_Task"] = reflect.TypeOf((*ScanHostPatch_Task)(nil)).Elem() +} + +type ScanHostPatch_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ScheduleReconcileDatastoreInventory ScheduleReconcileDatastoreInventoryRequestType + +func init() { + t["ScheduleReconcileDatastoreInventory"] = reflect.TypeOf((*ScheduleReconcileDatastoreInventory)(nil)).Elem() +} + +type ScheduleReconcileDatastoreInventoryRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datastore ManagedObjectReference `xml:"datastore"` +} + +func init() { + t["ScheduleReconcileDatastoreInventoryRequestType"] = reflect.TypeOf((*ScheduleReconcileDatastoreInventoryRequestType)(nil)).Elem() +} + +type ScheduleReconcileDatastoreInventoryResponse struct { +} + +type ScheduledHardwareUpgradeInfo struct { + DynamicData + + UpgradePolicy string `xml:"upgradePolicy,omitempty"` + VersionKey string `xml:"versionKey,omitempty"` + ScheduledHardwareUpgradeStatus string `xml:"scheduledHardwareUpgradeStatus,omitempty"` + Fault *LocalizedMethodFault `xml:"fault,omitempty"` +} + +func init() { + t["ScheduledHardwareUpgradeInfo"] = reflect.TypeOf((*ScheduledHardwareUpgradeInfo)(nil)).Elem() +} + +type ScheduledTaskCompletedEvent struct { + ScheduledTaskEvent +} + +func init() { + t["ScheduledTaskCompletedEvent"] = reflect.TypeOf((*ScheduledTaskCompletedEvent)(nil)).Elem() +} + +type ScheduledTaskCreatedEvent struct { + ScheduledTaskEvent +} + +func init() { + t["ScheduledTaskCreatedEvent"] = reflect.TypeOf((*ScheduledTaskCreatedEvent)(nil)).Elem() +} + +type ScheduledTaskDescription struct { + DynamicData + + Action []BaseTypeDescription `xml:"action,typeattr"` + SchedulerInfo []ScheduledTaskDetail `xml:"schedulerInfo"` + State []BaseElementDescription `xml:"state,typeattr"` + DayOfWeek []BaseElementDescription `xml:"dayOfWeek,typeattr"` + WeekOfMonth []BaseElementDescription `xml:"weekOfMonth,typeattr"` +} + +func init() { + t["ScheduledTaskDescription"] = reflect.TypeOf((*ScheduledTaskDescription)(nil)).Elem() +} + +type ScheduledTaskDetail struct { + TypeDescription + + Frequency string `xml:"frequency"` +} + +func init() { + t["ScheduledTaskDetail"] = reflect.TypeOf((*ScheduledTaskDetail)(nil)).Elem() +} + +type ScheduledTaskEmailCompletedEvent struct { + ScheduledTaskEvent + + To string `xml:"to"` +} + +func init() { + t["ScheduledTaskEmailCompletedEvent"] = reflect.TypeOf((*ScheduledTaskEmailCompletedEvent)(nil)).Elem() +} + +type ScheduledTaskEmailFailedEvent struct { + ScheduledTaskEvent + + To string `xml:"to"` + Reason LocalizedMethodFault `xml:"reason"` +} + +func init() { + t["ScheduledTaskEmailFailedEvent"] = reflect.TypeOf((*ScheduledTaskEmailFailedEvent)(nil)).Elem() +} + +type ScheduledTaskEvent struct { + Event + + ScheduledTask ScheduledTaskEventArgument `xml:"scheduledTask"` + Entity ManagedEntityEventArgument `xml:"entity"` +} + +func init() { + t["ScheduledTaskEvent"] = reflect.TypeOf((*ScheduledTaskEvent)(nil)).Elem() +} + +type ScheduledTaskEventArgument struct { + EntityEventArgument + + ScheduledTask ManagedObjectReference `xml:"scheduledTask"` +} + +func init() { + t["ScheduledTaskEventArgument"] = reflect.TypeOf((*ScheduledTaskEventArgument)(nil)).Elem() +} + +type ScheduledTaskFailedEvent struct { + ScheduledTaskEvent + + Reason LocalizedMethodFault `xml:"reason"` +} + +func init() { + t["ScheduledTaskFailedEvent"] = reflect.TypeOf((*ScheduledTaskFailedEvent)(nil)).Elem() +} + +type ScheduledTaskInfo struct { + ScheduledTaskSpec + + ScheduledTask ManagedObjectReference `xml:"scheduledTask"` + Entity ManagedObjectReference `xml:"entity"` + LastModifiedTime time.Time `xml:"lastModifiedTime"` + LastModifiedUser string `xml:"lastModifiedUser"` + NextRunTime *time.Time `xml:"nextRunTime"` + PrevRunTime *time.Time `xml:"prevRunTime"` + State TaskInfoState `xml:"state"` + Error *LocalizedMethodFault `xml:"error,omitempty"` + Result AnyType `xml:"result,omitempty,typeattr"` + Progress int32 `xml:"progress,omitempty"` + ActiveTask *ManagedObjectReference `xml:"activeTask,omitempty"` + TaskObject *ManagedObjectReference `xml:"taskObject,omitempty"` +} + +func init() { + t["ScheduledTaskInfo"] = reflect.TypeOf((*ScheduledTaskInfo)(nil)).Elem() +} + +type ScheduledTaskReconfiguredEvent struct { + ScheduledTaskEvent + + ConfigChanges *ChangesInfoEventArgument `xml:"configChanges,omitempty"` +} + +func init() { + t["ScheduledTaskReconfiguredEvent"] = reflect.TypeOf((*ScheduledTaskReconfiguredEvent)(nil)).Elem() +} + +type ScheduledTaskRemovedEvent struct { + ScheduledTaskEvent +} + +func init() { + t["ScheduledTaskRemovedEvent"] = reflect.TypeOf((*ScheduledTaskRemovedEvent)(nil)).Elem() +} + +type ScheduledTaskSpec struct { + DynamicData + + Name string `xml:"name"` + Description string `xml:"description"` + Enabled bool `xml:"enabled"` + Scheduler BaseTaskScheduler `xml:"scheduler,typeattr"` + Action BaseAction `xml:"action,typeattr"` + Notification string `xml:"notification,omitempty"` +} + +func init() { + t["ScheduledTaskSpec"] = reflect.TypeOf((*ScheduledTaskSpec)(nil)).Elem() +} + +type ScheduledTaskStartedEvent struct { + ScheduledTaskEvent +} + +func init() { + t["ScheduledTaskStartedEvent"] = reflect.TypeOf((*ScheduledTaskStartedEvent)(nil)).Elem() +} + +type ScsiLun struct { + HostDevice + + Key string `xml:"key,omitempty"` + Uuid string `xml:"uuid"` + Descriptor []ScsiLunDescriptor `xml:"descriptor,omitempty"` + CanonicalName string `xml:"canonicalName,omitempty"` + DisplayName string `xml:"displayName,omitempty"` + LunType string `xml:"lunType"` + Vendor string `xml:"vendor,omitempty"` + Model string `xml:"model,omitempty"` + Revision string `xml:"revision,omitempty"` + ScsiLevel int32 `xml:"scsiLevel,omitempty"` + SerialNumber string `xml:"serialNumber,omitempty"` + DurableName *ScsiLunDurableName `xml:"durableName,omitempty"` + AlternateName []ScsiLunDurableName `xml:"alternateName,omitempty"` + StandardInquiry []byte `xml:"standardInquiry,omitempty"` + QueueDepth int32 `xml:"queueDepth,omitempty"` + OperationalState []string `xml:"operationalState"` + Capabilities *ScsiLunCapabilities `xml:"capabilities,omitempty"` + VStorageSupport string `xml:"vStorageSupport,omitempty"` + ProtocolEndpoint *bool `xml:"protocolEndpoint"` + PerenniallyReserved *bool `xml:"perenniallyReserved"` + ClusteredVmdkSupported *bool `xml:"clusteredVmdkSupported"` +} + +func init() { + t["ScsiLun"] = reflect.TypeOf((*ScsiLun)(nil)).Elem() +} + +type ScsiLunCapabilities struct { + DynamicData + + UpdateDisplayNameSupported bool `xml:"updateDisplayNameSupported"` +} + +func init() { + t["ScsiLunCapabilities"] = reflect.TypeOf((*ScsiLunCapabilities)(nil)).Elem() +} + +type ScsiLunDescriptor struct { + DynamicData + + Quality string `xml:"quality"` + Id string `xml:"id"` +} + +func init() { + t["ScsiLunDescriptor"] = reflect.TypeOf((*ScsiLunDescriptor)(nil)).Elem() +} + +type ScsiLunDurableName struct { + DynamicData + + Namespace string `xml:"namespace"` + NamespaceId byte `xml:"namespaceId"` + Data []byte `xml:"data,omitempty"` +} + +func init() { + t["ScsiLunDurableName"] = reflect.TypeOf((*ScsiLunDurableName)(nil)).Elem() +} + +type SeSparseVirtualDiskSpec struct { + FileBackedVirtualDiskSpec + + GrainSizeKb int32 `xml:"grainSizeKb,omitempty"` +} + +func init() { + t["SeSparseVirtualDiskSpec"] = reflect.TypeOf((*SeSparseVirtualDiskSpec)(nil)).Elem() +} + +type SearchDatastoreRequestType struct { + This ManagedObjectReference `xml:"_this"` + DatastorePath string `xml:"datastorePath"` + SearchSpec *HostDatastoreBrowserSearchSpec `xml:"searchSpec,omitempty"` +} + +func init() { + t["SearchDatastoreRequestType"] = reflect.TypeOf((*SearchDatastoreRequestType)(nil)).Elem() +} + +type SearchDatastoreSubFoldersRequestType struct { + This ManagedObjectReference `xml:"_this"` + DatastorePath string `xml:"datastorePath"` + SearchSpec *HostDatastoreBrowserSearchSpec `xml:"searchSpec,omitempty"` +} + +func init() { + t["SearchDatastoreSubFoldersRequestType"] = reflect.TypeOf((*SearchDatastoreSubFoldersRequestType)(nil)).Elem() +} + +type SearchDatastoreSubFolders_Task SearchDatastoreSubFoldersRequestType + +func init() { + t["SearchDatastoreSubFolders_Task"] = reflect.TypeOf((*SearchDatastoreSubFolders_Task)(nil)).Elem() +} + +type SearchDatastoreSubFolders_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type SearchDatastore_Task SearchDatastoreRequestType + +func init() { + t["SearchDatastore_Task"] = reflect.TypeOf((*SearchDatastore_Task)(nil)).Elem() +} + +type SearchDatastore_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type SecondaryVmAlreadyDisabled struct { + VmFaultToleranceIssue + + InstanceUuid string `xml:"instanceUuid"` +} + +func init() { + t["SecondaryVmAlreadyDisabled"] = reflect.TypeOf((*SecondaryVmAlreadyDisabled)(nil)).Elem() +} + +type SecondaryVmAlreadyDisabledFault SecondaryVmAlreadyDisabled + +func init() { + t["SecondaryVmAlreadyDisabledFault"] = reflect.TypeOf((*SecondaryVmAlreadyDisabledFault)(nil)).Elem() +} + +type SecondaryVmAlreadyEnabled struct { + VmFaultToleranceIssue + + InstanceUuid string `xml:"instanceUuid"` +} + +func init() { + t["SecondaryVmAlreadyEnabled"] = reflect.TypeOf((*SecondaryVmAlreadyEnabled)(nil)).Elem() +} + +type SecondaryVmAlreadyEnabledFault SecondaryVmAlreadyEnabled + +func init() { + t["SecondaryVmAlreadyEnabledFault"] = reflect.TypeOf((*SecondaryVmAlreadyEnabledFault)(nil)).Elem() +} + +type SecondaryVmAlreadyRegistered struct { + VmFaultToleranceIssue + + InstanceUuid string `xml:"instanceUuid"` +} + +func init() { + t["SecondaryVmAlreadyRegistered"] = reflect.TypeOf((*SecondaryVmAlreadyRegistered)(nil)).Elem() +} + +type SecondaryVmAlreadyRegisteredFault SecondaryVmAlreadyRegistered + +func init() { + t["SecondaryVmAlreadyRegisteredFault"] = reflect.TypeOf((*SecondaryVmAlreadyRegisteredFault)(nil)).Elem() +} + +type SecondaryVmNotRegistered struct { + VmFaultToleranceIssue + + InstanceUuid string `xml:"instanceUuid"` +} + +func init() { + t["SecondaryVmNotRegistered"] = reflect.TypeOf((*SecondaryVmNotRegistered)(nil)).Elem() +} + +type SecondaryVmNotRegisteredFault SecondaryVmNotRegistered + +func init() { + t["SecondaryVmNotRegisteredFault"] = reflect.TypeOf((*SecondaryVmNotRegisteredFault)(nil)).Elem() +} + +type SecurityError struct { + RuntimeFault +} + +func init() { + t["SecurityError"] = reflect.TypeOf((*SecurityError)(nil)).Elem() +} + +type SecurityErrorFault BaseSecurityError + +func init() { + t["SecurityErrorFault"] = reflect.TypeOf((*SecurityErrorFault)(nil)).Elem() +} + +type SecurityProfile struct { + ApplyProfile + + Permission []PermissionProfile `xml:"permission,omitempty"` +} + +func init() { + t["SecurityProfile"] = reflect.TypeOf((*SecurityProfile)(nil)).Elem() +} + +type SelectActivePartition SelectActivePartitionRequestType + +func init() { + t["SelectActivePartition"] = reflect.TypeOf((*SelectActivePartition)(nil)).Elem() +} + +type SelectActivePartitionRequestType struct { + This ManagedObjectReference `xml:"_this"` + Partition *HostScsiDiskPartition `xml:"partition,omitempty"` +} + +func init() { + t["SelectActivePartitionRequestType"] = reflect.TypeOf((*SelectActivePartitionRequestType)(nil)).Elem() +} + +type SelectActivePartitionResponse struct { +} + +type SelectVnic SelectVnicRequestType + +func init() { + t["SelectVnic"] = reflect.TypeOf((*SelectVnic)(nil)).Elem() +} + +type SelectVnicForNicType SelectVnicForNicTypeRequestType + +func init() { + t["SelectVnicForNicType"] = reflect.TypeOf((*SelectVnicForNicType)(nil)).Elem() +} + +type SelectVnicForNicTypeRequestType struct { + This ManagedObjectReference `xml:"_this"` + NicType string `xml:"nicType"` + Device string `xml:"device"` +} + +func init() { + t["SelectVnicForNicTypeRequestType"] = reflect.TypeOf((*SelectVnicForNicTypeRequestType)(nil)).Elem() +} + +type SelectVnicForNicTypeResponse struct { +} + +type SelectVnicRequestType struct { + This ManagedObjectReference `xml:"_this"` + Device string `xml:"device"` +} + +func init() { + t["SelectVnicRequestType"] = reflect.TypeOf((*SelectVnicRequestType)(nil)).Elem() +} + +type SelectVnicResponse struct { +} + +type SelectionSet struct { + DynamicData +} + +func init() { + t["SelectionSet"] = reflect.TypeOf((*SelectionSet)(nil)).Elem() +} + +type SelectionSpec struct { + DynamicData + + Name string `xml:"name,omitempty"` +} + +func init() { + t["SelectionSpec"] = reflect.TypeOf((*SelectionSpec)(nil)).Elem() +} + +type SendEmailAction struct { + Action + + ToList string `xml:"toList"` + CcList string `xml:"ccList"` + Subject string `xml:"subject"` + Body string `xml:"body"` +} + +func init() { + t["SendEmailAction"] = reflect.TypeOf((*SendEmailAction)(nil)).Elem() +} + +type SendNMI SendNMIRequestType + +func init() { + t["SendNMI"] = reflect.TypeOf((*SendNMI)(nil)).Elem() +} + +type SendNMIRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["SendNMIRequestType"] = reflect.TypeOf((*SendNMIRequestType)(nil)).Elem() +} + +type SendNMIResponse struct { +} + +type SendSNMPAction struct { + Action +} + +func init() { + t["SendSNMPAction"] = reflect.TypeOf((*SendSNMPAction)(nil)).Elem() +} + +type SendTestNotification SendTestNotificationRequestType + +func init() { + t["SendTestNotification"] = reflect.TypeOf((*SendTestNotification)(nil)).Elem() +} + +type SendTestNotificationRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["SendTestNotificationRequestType"] = reflect.TypeOf((*SendTestNotificationRequestType)(nil)).Elem() +} + +type SendTestNotificationResponse struct { +} + +type ServerLicenseExpiredEvent struct { + LicenseEvent + + Product string `xml:"product"` +} + +func init() { + t["ServerLicenseExpiredEvent"] = reflect.TypeOf((*ServerLicenseExpiredEvent)(nil)).Elem() +} + +type ServerStartedSessionEvent struct { + SessionEvent +} + +func init() { + t["ServerStartedSessionEvent"] = reflect.TypeOf((*ServerStartedSessionEvent)(nil)).Elem() +} + +type ServiceConsolePortGroupProfile struct { + PortGroupProfile + + IpConfig IpAddressProfile `xml:"ipConfig"` +} + +func init() { + t["ServiceConsolePortGroupProfile"] = reflect.TypeOf((*ServiceConsolePortGroupProfile)(nil)).Elem() +} + +type ServiceConsoleReservationInfo struct { + DynamicData + + ServiceConsoleReservedCfg int64 `xml:"serviceConsoleReservedCfg"` + ServiceConsoleReserved int64 `xml:"serviceConsoleReserved"` + Unreserved int64 `xml:"unreserved"` +} + +func init() { + t["ServiceConsoleReservationInfo"] = reflect.TypeOf((*ServiceConsoleReservationInfo)(nil)).Elem() +} + +type ServiceContent struct { + DynamicData + + RootFolder ManagedObjectReference `xml:"rootFolder"` + PropertyCollector ManagedObjectReference `xml:"propertyCollector"` + ViewManager *ManagedObjectReference `xml:"viewManager,omitempty"` + About AboutInfo `xml:"about"` + Setting *ManagedObjectReference `xml:"setting,omitempty"` + UserDirectory *ManagedObjectReference `xml:"userDirectory,omitempty"` + SessionManager *ManagedObjectReference `xml:"sessionManager,omitempty"` + AuthorizationManager *ManagedObjectReference `xml:"authorizationManager,omitempty"` + ServiceManager *ManagedObjectReference `xml:"serviceManager,omitempty"` + PerfManager *ManagedObjectReference `xml:"perfManager,omitempty"` + ScheduledTaskManager *ManagedObjectReference `xml:"scheduledTaskManager,omitempty"` + AlarmManager *ManagedObjectReference `xml:"alarmManager,omitempty"` + EventManager *ManagedObjectReference `xml:"eventManager,omitempty"` + TaskManager *ManagedObjectReference `xml:"taskManager,omitempty"` + ExtensionManager *ManagedObjectReference `xml:"extensionManager,omitempty"` + CustomizationSpecManager *ManagedObjectReference `xml:"customizationSpecManager,omitempty"` + GuestCustomizationManager *ManagedObjectReference `xml:"guestCustomizationManager,omitempty"` + CustomFieldsManager *ManagedObjectReference `xml:"customFieldsManager,omitempty"` + AccountManager *ManagedObjectReference `xml:"accountManager,omitempty"` + DiagnosticManager *ManagedObjectReference `xml:"diagnosticManager,omitempty"` + LicenseManager *ManagedObjectReference `xml:"licenseManager,omitempty"` + SearchIndex *ManagedObjectReference `xml:"searchIndex,omitempty"` + FileManager *ManagedObjectReference `xml:"fileManager,omitempty"` + DatastoreNamespaceManager *ManagedObjectReference `xml:"datastoreNamespaceManager,omitempty"` + VirtualDiskManager *ManagedObjectReference `xml:"virtualDiskManager,omitempty"` + VirtualizationManager *ManagedObjectReference `xml:"virtualizationManager,omitempty"` + SnmpSystem *ManagedObjectReference `xml:"snmpSystem,omitempty"` + VmProvisioningChecker *ManagedObjectReference `xml:"vmProvisioningChecker,omitempty"` + VmCompatibilityChecker *ManagedObjectReference `xml:"vmCompatibilityChecker,omitempty"` + OvfManager *ManagedObjectReference `xml:"ovfManager,omitempty"` + IpPoolManager *ManagedObjectReference `xml:"ipPoolManager,omitempty"` + DvSwitchManager *ManagedObjectReference `xml:"dvSwitchManager,omitempty"` + HostProfileManager *ManagedObjectReference `xml:"hostProfileManager,omitempty"` + ClusterProfileManager *ManagedObjectReference `xml:"clusterProfileManager,omitempty"` + ComplianceManager *ManagedObjectReference `xml:"complianceManager,omitempty"` + LocalizationManager *ManagedObjectReference `xml:"localizationManager,omitempty"` + StorageResourceManager *ManagedObjectReference `xml:"storageResourceManager,omitempty"` + GuestOperationsManager *ManagedObjectReference `xml:"guestOperationsManager,omitempty"` + OverheadMemoryManager *ManagedObjectReference `xml:"overheadMemoryManager,omitempty"` + CertificateManager *ManagedObjectReference `xml:"certificateManager,omitempty"` + IoFilterManager *ManagedObjectReference `xml:"ioFilterManager,omitempty"` + VStorageObjectManager *ManagedObjectReference `xml:"vStorageObjectManager,omitempty"` + HostSpecManager *ManagedObjectReference `xml:"hostSpecManager,omitempty"` + CryptoManager *ManagedObjectReference `xml:"cryptoManager,omitempty"` + HealthUpdateManager *ManagedObjectReference `xml:"healthUpdateManager,omitempty"` + FailoverClusterConfigurator *ManagedObjectReference `xml:"failoverClusterConfigurator,omitempty"` + FailoverClusterManager *ManagedObjectReference `xml:"failoverClusterManager,omitempty"` + TenantManager *ManagedObjectReference `xml:"tenantManager,omitempty"` + SiteInfoManager *ManagedObjectReference `xml:"siteInfoManager,omitempty"` + StorageQueryManager *ManagedObjectReference `xml:"storageQueryManager,omitempty"` +} + +func init() { + t["ServiceContent"] = reflect.TypeOf((*ServiceContent)(nil)).Elem() +} + +type ServiceLocator struct { + DynamicData + + InstanceUuid string `xml:"instanceUuid"` + Url string `xml:"url"` + Credential BaseServiceLocatorCredential `xml:"credential,typeattr"` + SslThumbprint string `xml:"sslThumbprint,omitempty"` +} + +func init() { + t["ServiceLocator"] = reflect.TypeOf((*ServiceLocator)(nil)).Elem() +} + +type ServiceLocatorCredential struct { + DynamicData +} + +func init() { + t["ServiceLocatorCredential"] = reflect.TypeOf((*ServiceLocatorCredential)(nil)).Elem() +} + +type ServiceLocatorNamePassword struct { + ServiceLocatorCredential + + Username string `xml:"username"` + Password string `xml:"password"` +} + +func init() { + t["ServiceLocatorNamePassword"] = reflect.TypeOf((*ServiceLocatorNamePassword)(nil)).Elem() +} + +type ServiceLocatorSAMLCredential struct { + ServiceLocatorCredential + + Token string `xml:"token,omitempty"` +} + +func init() { + t["ServiceLocatorSAMLCredential"] = reflect.TypeOf((*ServiceLocatorSAMLCredential)(nil)).Elem() +} + +type ServiceManagerServiceInfo struct { + DynamicData + + ServiceName string `xml:"serviceName"` + Location []string `xml:"location,omitempty"` + Service ManagedObjectReference `xml:"service"` + Description string `xml:"description"` +} + +func init() { + t["ServiceManagerServiceInfo"] = reflect.TypeOf((*ServiceManagerServiceInfo)(nil)).Elem() +} + +type ServiceProfile struct { + ApplyProfile + + Key string `xml:"key"` +} + +func init() { + t["ServiceProfile"] = reflect.TypeOf((*ServiceProfile)(nil)).Elem() +} + +type SessionEvent struct { + Event +} + +func init() { + t["SessionEvent"] = reflect.TypeOf((*SessionEvent)(nil)).Elem() +} + +type SessionIsActive SessionIsActiveRequestType + +func init() { + t["SessionIsActive"] = reflect.TypeOf((*SessionIsActive)(nil)).Elem() +} + +type SessionIsActiveRequestType struct { + This ManagedObjectReference `xml:"_this"` + SessionID string `xml:"sessionID"` + UserName string `xml:"userName"` +} + +func init() { + t["SessionIsActiveRequestType"] = reflect.TypeOf((*SessionIsActiveRequestType)(nil)).Elem() +} + +type SessionIsActiveResponse struct { + Returnval bool `xml:"returnval"` +} + +type SessionManagerGenericServiceTicket struct { + DynamicData + + Id string `xml:"id"` + HostName string `xml:"hostName,omitempty"` + SslThumbprint string `xml:"sslThumbprint,omitempty"` +} + +func init() { + t["SessionManagerGenericServiceTicket"] = reflect.TypeOf((*SessionManagerGenericServiceTicket)(nil)).Elem() +} + +type SessionManagerHttpServiceRequestSpec struct { + SessionManagerServiceRequestSpec + + Method string `xml:"method,omitempty"` + Url string `xml:"url"` +} + +func init() { + t["SessionManagerHttpServiceRequestSpec"] = reflect.TypeOf((*SessionManagerHttpServiceRequestSpec)(nil)).Elem() +} + +type SessionManagerLocalTicket struct { + DynamicData + + UserName string `xml:"userName"` + PasswordFilePath string `xml:"passwordFilePath"` +} + +func init() { + t["SessionManagerLocalTicket"] = reflect.TypeOf((*SessionManagerLocalTicket)(nil)).Elem() +} + +type SessionManagerServiceRequestSpec struct { + DynamicData +} + +func init() { + t["SessionManagerServiceRequestSpec"] = reflect.TypeOf((*SessionManagerServiceRequestSpec)(nil)).Elem() +} + +type SessionManagerVmomiServiceRequestSpec struct { + SessionManagerServiceRequestSpec + + Method string `xml:"method"` +} + +func init() { + t["SessionManagerVmomiServiceRequestSpec"] = reflect.TypeOf((*SessionManagerVmomiServiceRequestSpec)(nil)).Elem() +} + +type SessionTerminatedEvent struct { + SessionEvent + + SessionId string `xml:"sessionId"` + TerminatedUsername string `xml:"terminatedUsername"` +} + +func init() { + t["SessionTerminatedEvent"] = reflect.TypeOf((*SessionTerminatedEvent)(nil)).Elem() +} + +type SetCollectorPageSize SetCollectorPageSizeRequestType + +func init() { + t["SetCollectorPageSize"] = reflect.TypeOf((*SetCollectorPageSize)(nil)).Elem() +} + +type SetCollectorPageSizeRequestType struct { + This ManagedObjectReference `xml:"_this"` + MaxCount int32 `xml:"maxCount"` +} + +func init() { + t["SetCollectorPageSizeRequestType"] = reflect.TypeOf((*SetCollectorPageSizeRequestType)(nil)).Elem() +} + +type SetCollectorPageSizeResponse struct { +} + +type SetCryptoMode SetCryptoModeRequestType + +func init() { + t["SetCryptoMode"] = reflect.TypeOf((*SetCryptoMode)(nil)).Elem() +} + +type SetCryptoModeRequestType struct { + This ManagedObjectReference `xml:"_this"` + CryptoMode string `xml:"cryptoMode"` +} + +func init() { + t["SetCryptoModeRequestType"] = reflect.TypeOf((*SetCryptoModeRequestType)(nil)).Elem() +} + +type SetCryptoModeResponse struct { +} + +type SetDefaultKmsCluster SetDefaultKmsClusterRequestType + +func init() { + t["SetDefaultKmsCluster"] = reflect.TypeOf((*SetDefaultKmsCluster)(nil)).Elem() +} + +type SetDefaultKmsClusterRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity *ManagedObjectReference `xml:"entity,omitempty"` + ClusterId *KeyProviderId `xml:"clusterId,omitempty"` +} + +func init() { + t["SetDefaultKmsClusterRequestType"] = reflect.TypeOf((*SetDefaultKmsClusterRequestType)(nil)).Elem() +} + +type SetDefaultKmsClusterResponse struct { +} + +type SetDisplayTopology SetDisplayTopologyRequestType + +func init() { + t["SetDisplayTopology"] = reflect.TypeOf((*SetDisplayTopology)(nil)).Elem() +} + +type SetDisplayTopologyRequestType struct { + This ManagedObjectReference `xml:"_this"` + Displays []VirtualMachineDisplayTopology `xml:"displays"` +} + +func init() { + t["SetDisplayTopologyRequestType"] = reflect.TypeOf((*SetDisplayTopologyRequestType)(nil)).Elem() +} + +type SetDisplayTopologyResponse struct { +} + +type SetEntityPermissions SetEntityPermissionsRequestType + +func init() { + t["SetEntityPermissions"] = reflect.TypeOf((*SetEntityPermissions)(nil)).Elem() +} + +type SetEntityPermissionsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity ManagedObjectReference `xml:"entity"` + Permission []Permission `xml:"permission,omitempty"` +} + +func init() { + t["SetEntityPermissionsRequestType"] = reflect.TypeOf((*SetEntityPermissionsRequestType)(nil)).Elem() +} + +type SetEntityPermissionsResponse struct { +} + +type SetExtensionCertificate SetExtensionCertificateRequestType + +func init() { + t["SetExtensionCertificate"] = reflect.TypeOf((*SetExtensionCertificate)(nil)).Elem() +} + +type SetExtensionCertificateRequestType struct { + This ManagedObjectReference `xml:"_this"` + ExtensionKey string `xml:"extensionKey"` + CertificatePem string `xml:"certificatePem,omitempty"` +} + +func init() { + t["SetExtensionCertificateRequestType"] = reflect.TypeOf((*SetExtensionCertificateRequestType)(nil)).Elem() +} + +type SetExtensionCertificateResponse struct { +} + +type SetField SetFieldRequestType + +func init() { + t["SetField"] = reflect.TypeOf((*SetField)(nil)).Elem() +} + +type SetFieldRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity ManagedObjectReference `xml:"entity"` + Key int32 `xml:"key"` + Value string `xml:"value"` +} + +func init() { + t["SetFieldRequestType"] = reflect.TypeOf((*SetFieldRequestType)(nil)).Elem() +} + +type SetFieldResponse struct { +} + +type SetLicenseEdition SetLicenseEditionRequestType + +func init() { + t["SetLicenseEdition"] = reflect.TypeOf((*SetLicenseEdition)(nil)).Elem() +} + +type SetLicenseEditionRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host *ManagedObjectReference `xml:"host,omitempty"` + FeatureKey string `xml:"featureKey,omitempty"` +} + +func init() { + t["SetLicenseEditionRequestType"] = reflect.TypeOf((*SetLicenseEditionRequestType)(nil)).Elem() +} + +type SetLicenseEditionResponse struct { +} + +type SetLocale SetLocaleRequestType + +func init() { + t["SetLocale"] = reflect.TypeOf((*SetLocale)(nil)).Elem() +} + +type SetLocaleRequestType struct { + This ManagedObjectReference `xml:"_this"` + Locale string `xml:"locale"` +} + +func init() { + t["SetLocaleRequestType"] = reflect.TypeOf((*SetLocaleRequestType)(nil)).Elem() +} + +type SetLocaleResponse struct { +} + +type SetMultipathLunPolicy SetMultipathLunPolicyRequestType + +func init() { + t["SetMultipathLunPolicy"] = reflect.TypeOf((*SetMultipathLunPolicy)(nil)).Elem() +} + +type SetMultipathLunPolicyRequestType struct { + This ManagedObjectReference `xml:"_this"` + LunId string `xml:"lunId"` + Policy BaseHostMultipathInfoLogicalUnitPolicy `xml:"policy,typeattr"` +} + +func init() { + t["SetMultipathLunPolicyRequestType"] = reflect.TypeOf((*SetMultipathLunPolicyRequestType)(nil)).Elem() +} + +type SetMultipathLunPolicyResponse struct { +} + +type SetNFSUser SetNFSUserRequestType + +func init() { + t["SetNFSUser"] = reflect.TypeOf((*SetNFSUser)(nil)).Elem() +} + +type SetNFSUserRequestType struct { + This ManagedObjectReference `xml:"_this"` + User string `xml:"user"` + Password string `xml:"password"` +} + +func init() { + t["SetNFSUserRequestType"] = reflect.TypeOf((*SetNFSUserRequestType)(nil)).Elem() +} + +type SetNFSUserResponse struct { +} + +type SetPublicKey SetPublicKeyRequestType + +func init() { + t["SetPublicKey"] = reflect.TypeOf((*SetPublicKey)(nil)).Elem() +} + +type SetPublicKeyRequestType struct { + This ManagedObjectReference `xml:"_this"` + ExtensionKey string `xml:"extensionKey"` + PublicKey string `xml:"publicKey"` +} + +func init() { + t["SetPublicKeyRequestType"] = reflect.TypeOf((*SetPublicKeyRequestType)(nil)).Elem() +} + +type SetPublicKeyResponse struct { +} + +type SetRegistryValueInGuest SetRegistryValueInGuestRequestType + +func init() { + t["SetRegistryValueInGuest"] = reflect.TypeOf((*SetRegistryValueInGuest)(nil)).Elem() +} + +type SetRegistryValueInGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + Value GuestRegValueSpec `xml:"value"` +} + +func init() { + t["SetRegistryValueInGuestRequestType"] = reflect.TypeOf((*SetRegistryValueInGuestRequestType)(nil)).Elem() +} + +type SetRegistryValueInGuestResponse struct { +} + +type SetScreenResolution SetScreenResolutionRequestType + +func init() { + t["SetScreenResolution"] = reflect.TypeOf((*SetScreenResolution)(nil)).Elem() +} + +type SetScreenResolutionRequestType struct { + This ManagedObjectReference `xml:"_this"` + Width int32 `xml:"width"` + Height int32 `xml:"height"` +} + +func init() { + t["SetScreenResolutionRequestType"] = reflect.TypeOf((*SetScreenResolutionRequestType)(nil)).Elem() +} + +type SetScreenResolutionResponse struct { +} + +type SetTaskDescription SetTaskDescriptionRequestType + +func init() { + t["SetTaskDescription"] = reflect.TypeOf((*SetTaskDescription)(nil)).Elem() +} + +type SetTaskDescriptionRequestType struct { + This ManagedObjectReference `xml:"_this"` + Description LocalizableMessage `xml:"description"` +} + +func init() { + t["SetTaskDescriptionRequestType"] = reflect.TypeOf((*SetTaskDescriptionRequestType)(nil)).Elem() +} + +type SetTaskDescriptionResponse struct { +} + +type SetTaskState SetTaskStateRequestType + +func init() { + t["SetTaskState"] = reflect.TypeOf((*SetTaskState)(nil)).Elem() +} + +type SetTaskStateRequestType struct { + This ManagedObjectReference `xml:"_this"` + State TaskInfoState `xml:"state"` + Result AnyType `xml:"result,omitempty,typeattr"` + Fault *LocalizedMethodFault `xml:"fault,omitempty"` +} + +func init() { + t["SetTaskStateRequestType"] = reflect.TypeOf((*SetTaskStateRequestType)(nil)).Elem() +} + +type SetTaskStateResponse struct { +} + +type SetVStorageObjectControlFlags SetVStorageObjectControlFlagsRequestType + +func init() { + t["SetVStorageObjectControlFlags"] = reflect.TypeOf((*SetVStorageObjectControlFlags)(nil)).Elem() +} + +type SetVStorageObjectControlFlagsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + ControlFlags []string `xml:"controlFlags,omitempty"` +} + +func init() { + t["SetVStorageObjectControlFlagsRequestType"] = reflect.TypeOf((*SetVStorageObjectControlFlagsRequestType)(nil)).Elem() +} + +type SetVStorageObjectControlFlagsResponse struct { +} + +type SetVirtualDiskUuid SetVirtualDiskUuidRequestType + +func init() { + t["SetVirtualDiskUuid"] = reflect.TypeOf((*SetVirtualDiskUuid)(nil)).Elem() +} + +type SetVirtualDiskUuidRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` + Uuid string `xml:"uuid"` +} + +func init() { + t["SetVirtualDiskUuidRequestType"] = reflect.TypeOf((*SetVirtualDiskUuidRequestType)(nil)).Elem() +} + +type SetVirtualDiskUuidResponse struct { +} + +type SharedBusControllerNotSupported struct { + DeviceNotSupported +} + +func init() { + t["SharedBusControllerNotSupported"] = reflect.TypeOf((*SharedBusControllerNotSupported)(nil)).Elem() +} + +type SharedBusControllerNotSupportedFault SharedBusControllerNotSupported + +func init() { + t["SharedBusControllerNotSupportedFault"] = reflect.TypeOf((*SharedBusControllerNotSupportedFault)(nil)).Elem() +} + +type SharesInfo struct { + DynamicData + + Shares int32 `xml:"shares"` + Level SharesLevel `xml:"level"` +} + +func init() { + t["SharesInfo"] = reflect.TypeOf((*SharesInfo)(nil)).Elem() +} + +type SharesOption struct { + DynamicData + + SharesOption IntOption `xml:"sharesOption"` + DefaultLevel SharesLevel `xml:"defaultLevel"` +} + +func init() { + t["SharesOption"] = reflect.TypeOf((*SharesOption)(nil)).Elem() +} + +type ShrinkDiskFault struct { + VimFault + + DiskId int32 `xml:"diskId,omitempty"` +} + +func init() { + t["ShrinkDiskFault"] = reflect.TypeOf((*ShrinkDiskFault)(nil)).Elem() +} + +type ShrinkDiskFaultFault ShrinkDiskFault + +func init() { + t["ShrinkDiskFaultFault"] = reflect.TypeOf((*ShrinkDiskFaultFault)(nil)).Elem() +} + +type ShrinkVirtualDiskRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` + Copy *bool `xml:"copy"` +} + +func init() { + t["ShrinkVirtualDiskRequestType"] = reflect.TypeOf((*ShrinkVirtualDiskRequestType)(nil)).Elem() +} + +type ShrinkVirtualDisk_Task ShrinkVirtualDiskRequestType + +func init() { + t["ShrinkVirtualDisk_Task"] = reflect.TypeOf((*ShrinkVirtualDisk_Task)(nil)).Elem() +} + +type ShrinkVirtualDisk_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ShutdownGuest ShutdownGuestRequestType + +func init() { + t["ShutdownGuest"] = reflect.TypeOf((*ShutdownGuest)(nil)).Elem() +} + +type ShutdownGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["ShutdownGuestRequestType"] = reflect.TypeOf((*ShutdownGuestRequestType)(nil)).Elem() +} + +type ShutdownGuestResponse struct { +} + +type ShutdownHostRequestType struct { + This ManagedObjectReference `xml:"_this"` + Force bool `xml:"force"` +} + +func init() { + t["ShutdownHostRequestType"] = reflect.TypeOf((*ShutdownHostRequestType)(nil)).Elem() +} + +type ShutdownHost_Task ShutdownHostRequestType + +func init() { + t["ShutdownHost_Task"] = reflect.TypeOf((*ShutdownHost_Task)(nil)).Elem() +} + +type ShutdownHost_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type SingleIp struct { + IpAddress + + Address string `xml:"address"` +} + +func init() { + t["SingleIp"] = reflect.TypeOf((*SingleIp)(nil)).Elem() +} + +type SingleMac struct { + MacAddress + + Address string `xml:"address"` +} + +func init() { + t["SingleMac"] = reflect.TypeOf((*SingleMac)(nil)).Elem() +} + +type SiteInfo struct { + DynamicData +} + +func init() { + t["SiteInfo"] = reflect.TypeOf((*SiteInfo)(nil)).Elem() +} + +type SnapshotCloneNotSupported struct { + SnapshotCopyNotSupported +} + +func init() { + t["SnapshotCloneNotSupported"] = reflect.TypeOf((*SnapshotCloneNotSupported)(nil)).Elem() +} + +type SnapshotCloneNotSupportedFault SnapshotCloneNotSupported + +func init() { + t["SnapshotCloneNotSupportedFault"] = reflect.TypeOf((*SnapshotCloneNotSupportedFault)(nil)).Elem() +} + +type SnapshotCopyNotSupported struct { + MigrationFault +} + +func init() { + t["SnapshotCopyNotSupported"] = reflect.TypeOf((*SnapshotCopyNotSupported)(nil)).Elem() +} + +type SnapshotCopyNotSupportedFault BaseSnapshotCopyNotSupported + +func init() { + t["SnapshotCopyNotSupportedFault"] = reflect.TypeOf((*SnapshotCopyNotSupportedFault)(nil)).Elem() +} + +type SnapshotDisabled struct { + SnapshotFault +} + +func init() { + t["SnapshotDisabled"] = reflect.TypeOf((*SnapshotDisabled)(nil)).Elem() +} + +type SnapshotDisabledFault SnapshotDisabled + +func init() { + t["SnapshotDisabledFault"] = reflect.TypeOf((*SnapshotDisabledFault)(nil)).Elem() +} + +type SnapshotFault struct { + VimFault +} + +func init() { + t["SnapshotFault"] = reflect.TypeOf((*SnapshotFault)(nil)).Elem() +} + +type SnapshotFaultFault BaseSnapshotFault + +func init() { + t["SnapshotFaultFault"] = reflect.TypeOf((*SnapshotFaultFault)(nil)).Elem() +} + +type SnapshotIncompatibleDeviceInVm struct { + SnapshotFault + + Fault LocalizedMethodFault `xml:"fault"` +} + +func init() { + t["SnapshotIncompatibleDeviceInVm"] = reflect.TypeOf((*SnapshotIncompatibleDeviceInVm)(nil)).Elem() +} + +type SnapshotIncompatibleDeviceInVmFault SnapshotIncompatibleDeviceInVm + +func init() { + t["SnapshotIncompatibleDeviceInVmFault"] = reflect.TypeOf((*SnapshotIncompatibleDeviceInVmFault)(nil)).Elem() +} + +type SnapshotLocked struct { + SnapshotFault +} + +func init() { + t["SnapshotLocked"] = reflect.TypeOf((*SnapshotLocked)(nil)).Elem() +} + +type SnapshotLockedFault SnapshotLocked + +func init() { + t["SnapshotLockedFault"] = reflect.TypeOf((*SnapshotLockedFault)(nil)).Elem() +} + +type SnapshotMoveFromNonHomeNotSupported struct { + SnapshotCopyNotSupported +} + +func init() { + t["SnapshotMoveFromNonHomeNotSupported"] = reflect.TypeOf((*SnapshotMoveFromNonHomeNotSupported)(nil)).Elem() +} + +type SnapshotMoveFromNonHomeNotSupportedFault SnapshotMoveFromNonHomeNotSupported + +func init() { + t["SnapshotMoveFromNonHomeNotSupportedFault"] = reflect.TypeOf((*SnapshotMoveFromNonHomeNotSupportedFault)(nil)).Elem() +} + +type SnapshotMoveNotSupported struct { + SnapshotCopyNotSupported +} + +func init() { + t["SnapshotMoveNotSupported"] = reflect.TypeOf((*SnapshotMoveNotSupported)(nil)).Elem() +} + +type SnapshotMoveNotSupportedFault SnapshotMoveNotSupported + +func init() { + t["SnapshotMoveNotSupportedFault"] = reflect.TypeOf((*SnapshotMoveNotSupportedFault)(nil)).Elem() +} + +type SnapshotMoveToNonHomeNotSupported struct { + SnapshotCopyNotSupported +} + +func init() { + t["SnapshotMoveToNonHomeNotSupported"] = reflect.TypeOf((*SnapshotMoveToNonHomeNotSupported)(nil)).Elem() +} + +type SnapshotMoveToNonHomeNotSupportedFault SnapshotMoveToNonHomeNotSupported + +func init() { + t["SnapshotMoveToNonHomeNotSupportedFault"] = reflect.TypeOf((*SnapshotMoveToNonHomeNotSupportedFault)(nil)).Elem() +} + +type SnapshotNoChange struct { + SnapshotFault +} + +func init() { + t["SnapshotNoChange"] = reflect.TypeOf((*SnapshotNoChange)(nil)).Elem() +} + +type SnapshotNoChangeFault SnapshotNoChange + +func init() { + t["SnapshotNoChangeFault"] = reflect.TypeOf((*SnapshotNoChangeFault)(nil)).Elem() +} + +type SnapshotRevertIssue struct { + MigrationFault + + SnapshotName string `xml:"snapshotName,omitempty"` + Event []BaseEvent `xml:"event,omitempty,typeattr"` + Errors bool `xml:"errors"` +} + +func init() { + t["SnapshotRevertIssue"] = reflect.TypeOf((*SnapshotRevertIssue)(nil)).Elem() +} + +type SnapshotRevertIssueFault SnapshotRevertIssue + +func init() { + t["SnapshotRevertIssueFault"] = reflect.TypeOf((*SnapshotRevertIssueFault)(nil)).Elem() +} + +type SoftRuleVioCorrectionDisallowed struct { + VmConfigFault + + VmName string `xml:"vmName"` +} + +func init() { + t["SoftRuleVioCorrectionDisallowed"] = reflect.TypeOf((*SoftRuleVioCorrectionDisallowed)(nil)).Elem() +} + +type SoftRuleVioCorrectionDisallowedFault SoftRuleVioCorrectionDisallowed + +func init() { + t["SoftRuleVioCorrectionDisallowedFault"] = reflect.TypeOf((*SoftRuleVioCorrectionDisallowedFault)(nil)).Elem() +} + +type SoftRuleVioCorrectionImpact struct { + VmConfigFault + + VmName string `xml:"vmName"` +} + +func init() { + t["SoftRuleVioCorrectionImpact"] = reflect.TypeOf((*SoftRuleVioCorrectionImpact)(nil)).Elem() +} + +type SoftRuleVioCorrectionImpactFault SoftRuleVioCorrectionImpact + +func init() { + t["SoftRuleVioCorrectionImpactFault"] = reflect.TypeOf((*SoftRuleVioCorrectionImpactFault)(nil)).Elem() +} + +type SoftwarePackage struct { + DynamicData + + Name string `xml:"name"` + Version string `xml:"version"` + Type string `xml:"type"` + Vendor string `xml:"vendor"` + AcceptanceLevel string `xml:"acceptanceLevel"` + Summary string `xml:"summary"` + Description string `xml:"description"` + ReferenceURL []string `xml:"referenceURL,omitempty"` + CreationDate *time.Time `xml:"creationDate"` + Depends []Relation `xml:"depends,omitempty"` + Conflicts []Relation `xml:"conflicts,omitempty"` + Replaces []Relation `xml:"replaces,omitempty"` + Provides []string `xml:"provides,omitempty"` + MaintenanceModeRequired *bool `xml:"maintenanceModeRequired"` + HardwarePlatformsRequired []string `xml:"hardwarePlatformsRequired,omitempty"` + Capability SoftwarePackageCapability `xml:"capability"` + Tag []string `xml:"tag,omitempty"` + Payload []string `xml:"payload,omitempty"` +} + +func init() { + t["SoftwarePackage"] = reflect.TypeOf((*SoftwarePackage)(nil)).Elem() +} + +type SoftwarePackageCapability struct { + DynamicData + + LiveInstallAllowed *bool `xml:"liveInstallAllowed"` + LiveRemoveAllowed *bool `xml:"liveRemoveAllowed"` + StatelessReady *bool `xml:"statelessReady"` + Overlay *bool `xml:"overlay"` +} + +func init() { + t["SoftwarePackageCapability"] = reflect.TypeOf((*SoftwarePackageCapability)(nil)).Elem() +} + +type SolutionUserRequired struct { + SecurityError +} + +func init() { + t["SolutionUserRequired"] = reflect.TypeOf((*SolutionUserRequired)(nil)).Elem() +} + +type SolutionUserRequiredFault SolutionUserRequired + +func init() { + t["SolutionUserRequiredFault"] = reflect.TypeOf((*SolutionUserRequiredFault)(nil)).Elem() +} + +type SourceNodeSpec struct { + DynamicData + + ManagementVc ServiceLocator `xml:"managementVc"` + ActiveVc ManagedObjectReference `xml:"activeVc"` +} + +func init() { + t["SourceNodeSpec"] = reflect.TypeOf((*SourceNodeSpec)(nil)).Elem() +} + +type SsdDiskNotAvailable struct { + VimFault + + DevicePath string `xml:"devicePath"` +} + +func init() { + t["SsdDiskNotAvailable"] = reflect.TypeOf((*SsdDiskNotAvailable)(nil)).Elem() +} + +type SsdDiskNotAvailableFault SsdDiskNotAvailable + +func init() { + t["SsdDiskNotAvailableFault"] = reflect.TypeOf((*SsdDiskNotAvailableFault)(nil)).Elem() +} + +type StageHostPatchRequestType struct { + This ManagedObjectReference `xml:"_this"` + MetaUrls []string `xml:"metaUrls,omitempty"` + BundleUrls []string `xml:"bundleUrls,omitempty"` + VibUrls []string `xml:"vibUrls,omitempty"` + Spec *HostPatchManagerPatchManagerOperationSpec `xml:"spec,omitempty"` +} + +func init() { + t["StageHostPatchRequestType"] = reflect.TypeOf((*StageHostPatchRequestType)(nil)).Elem() +} + +type StageHostPatch_Task StageHostPatchRequestType + +func init() { + t["StageHostPatch_Task"] = reflect.TypeOf((*StageHostPatch_Task)(nil)).Elem() +} + +type StageHostPatch_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type StampAllRulesWithUuidRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["StampAllRulesWithUuidRequestType"] = reflect.TypeOf((*StampAllRulesWithUuidRequestType)(nil)).Elem() +} + +type StampAllRulesWithUuid_Task StampAllRulesWithUuidRequestType + +func init() { + t["StampAllRulesWithUuid_Task"] = reflect.TypeOf((*StampAllRulesWithUuid_Task)(nil)).Elem() +} + +type StampAllRulesWithUuid_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type StandbyGuest StandbyGuestRequestType + +func init() { + t["StandbyGuest"] = reflect.TypeOf((*StandbyGuest)(nil)).Elem() +} + +type StandbyGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["StandbyGuestRequestType"] = reflect.TypeOf((*StandbyGuestRequestType)(nil)).Elem() +} + +type StandbyGuestResponse struct { +} + +type StartGuestNetworkRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` +} + +func init() { + t["StartGuestNetworkRequestType"] = reflect.TypeOf((*StartGuestNetworkRequestType)(nil)).Elem() +} + +type StartGuestNetwork_Task StartGuestNetworkRequestType + +func init() { + t["StartGuestNetwork_Task"] = reflect.TypeOf((*StartGuestNetwork_Task)(nil)).Elem() +} + +type StartGuestNetwork_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type StartProgramInGuest StartProgramInGuestRequestType + +func init() { + t["StartProgramInGuest"] = reflect.TypeOf((*StartProgramInGuest)(nil)).Elem() +} + +type StartProgramInGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + Spec BaseGuestProgramSpec `xml:"spec,typeattr"` +} + +func init() { + t["StartProgramInGuestRequestType"] = reflect.TypeOf((*StartProgramInGuestRequestType)(nil)).Elem() +} + +type StartProgramInGuestResponse struct { + Returnval int64 `xml:"returnval"` +} + +type StartRecordingRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + Description string `xml:"description,omitempty"` +} + +func init() { + t["StartRecordingRequestType"] = reflect.TypeOf((*StartRecordingRequestType)(nil)).Elem() +} + +type StartRecording_Task StartRecordingRequestType + +func init() { + t["StartRecording_Task"] = reflect.TypeOf((*StartRecording_Task)(nil)).Elem() +} + +type StartRecording_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type StartReplayingRequestType struct { + This ManagedObjectReference `xml:"_this"` + ReplaySnapshot ManagedObjectReference `xml:"replaySnapshot"` +} + +func init() { + t["StartReplayingRequestType"] = reflect.TypeOf((*StartReplayingRequestType)(nil)).Elem() +} + +type StartReplaying_Task StartReplayingRequestType + +func init() { + t["StartReplaying_Task"] = reflect.TypeOf((*StartReplaying_Task)(nil)).Elem() +} + +type StartReplaying_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type StartService StartServiceRequestType + +func init() { + t["StartService"] = reflect.TypeOf((*StartService)(nil)).Elem() +} + +type StartServiceRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id string `xml:"id"` +} + +func init() { + t["StartServiceRequestType"] = reflect.TypeOf((*StartServiceRequestType)(nil)).Elem() +} + +type StartServiceResponse struct { +} + +type StateAlarmExpression struct { + AlarmExpression + + Operator StateAlarmOperator `xml:"operator"` + Type string `xml:"type"` + StatePath string `xml:"statePath"` + Yellow string `xml:"yellow,omitempty"` + Red string `xml:"red,omitempty"` +} + +func init() { + t["StateAlarmExpression"] = reflect.TypeOf((*StateAlarmExpression)(nil)).Elem() +} + +type StaticRouteProfile struct { + ApplyProfile + + Key string `xml:"key,omitempty"` +} + +func init() { + t["StaticRouteProfile"] = reflect.TypeOf((*StaticRouteProfile)(nil)).Elem() +} + +type StopRecordingRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["StopRecordingRequestType"] = reflect.TypeOf((*StopRecordingRequestType)(nil)).Elem() +} + +type StopRecording_Task StopRecordingRequestType + +func init() { + t["StopRecording_Task"] = reflect.TypeOf((*StopRecording_Task)(nil)).Elem() +} + +type StopRecording_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type StopReplayingRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["StopReplayingRequestType"] = reflect.TypeOf((*StopReplayingRequestType)(nil)).Elem() +} + +type StopReplaying_Task StopReplayingRequestType + +func init() { + t["StopReplaying_Task"] = reflect.TypeOf((*StopReplaying_Task)(nil)).Elem() +} + +type StopReplaying_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type StopService StopServiceRequestType + +func init() { + t["StopService"] = reflect.TypeOf((*StopService)(nil)).Elem() +} + +type StopServiceRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id string `xml:"id"` +} + +func init() { + t["StopServiceRequestType"] = reflect.TypeOf((*StopServiceRequestType)(nil)).Elem() +} + +type StopServiceResponse struct { +} + +type StorageDrsAutomationConfig struct { + DynamicData + + SpaceLoadBalanceAutomationMode string `xml:"spaceLoadBalanceAutomationMode,omitempty"` + IoLoadBalanceAutomationMode string `xml:"ioLoadBalanceAutomationMode,omitempty"` + RuleEnforcementAutomationMode string `xml:"ruleEnforcementAutomationMode,omitempty"` + PolicyEnforcementAutomationMode string `xml:"policyEnforcementAutomationMode,omitempty"` + VmEvacuationAutomationMode string `xml:"vmEvacuationAutomationMode,omitempty"` +} + +func init() { + t["StorageDrsAutomationConfig"] = reflect.TypeOf((*StorageDrsAutomationConfig)(nil)).Elem() +} + +type StorageDrsCannotMoveDiskInMultiWriterMode struct { + VimFault +} + +func init() { + t["StorageDrsCannotMoveDiskInMultiWriterMode"] = reflect.TypeOf((*StorageDrsCannotMoveDiskInMultiWriterMode)(nil)).Elem() +} + +type StorageDrsCannotMoveDiskInMultiWriterModeFault StorageDrsCannotMoveDiskInMultiWriterMode + +func init() { + t["StorageDrsCannotMoveDiskInMultiWriterModeFault"] = reflect.TypeOf((*StorageDrsCannotMoveDiskInMultiWriterModeFault)(nil)).Elem() +} + +type StorageDrsCannotMoveFTVm struct { + VimFault +} + +func init() { + t["StorageDrsCannotMoveFTVm"] = reflect.TypeOf((*StorageDrsCannotMoveFTVm)(nil)).Elem() +} + +type StorageDrsCannotMoveFTVmFault StorageDrsCannotMoveFTVm + +func init() { + t["StorageDrsCannotMoveFTVmFault"] = reflect.TypeOf((*StorageDrsCannotMoveFTVmFault)(nil)).Elem() +} + +type StorageDrsCannotMoveIndependentDisk struct { + VimFault +} + +func init() { + t["StorageDrsCannotMoveIndependentDisk"] = reflect.TypeOf((*StorageDrsCannotMoveIndependentDisk)(nil)).Elem() +} + +type StorageDrsCannotMoveIndependentDiskFault StorageDrsCannotMoveIndependentDisk + +func init() { + t["StorageDrsCannotMoveIndependentDiskFault"] = reflect.TypeOf((*StorageDrsCannotMoveIndependentDiskFault)(nil)).Elem() +} + +type StorageDrsCannotMoveManuallyPlacedSwapFile struct { + VimFault +} + +func init() { + t["StorageDrsCannotMoveManuallyPlacedSwapFile"] = reflect.TypeOf((*StorageDrsCannotMoveManuallyPlacedSwapFile)(nil)).Elem() +} + +type StorageDrsCannotMoveManuallyPlacedSwapFileFault StorageDrsCannotMoveManuallyPlacedSwapFile + +func init() { + t["StorageDrsCannotMoveManuallyPlacedSwapFileFault"] = reflect.TypeOf((*StorageDrsCannotMoveManuallyPlacedSwapFileFault)(nil)).Elem() +} + +type StorageDrsCannotMoveManuallyPlacedVm struct { + VimFault +} + +func init() { + t["StorageDrsCannotMoveManuallyPlacedVm"] = reflect.TypeOf((*StorageDrsCannotMoveManuallyPlacedVm)(nil)).Elem() +} + +type StorageDrsCannotMoveManuallyPlacedVmFault StorageDrsCannotMoveManuallyPlacedVm + +func init() { + t["StorageDrsCannotMoveManuallyPlacedVmFault"] = reflect.TypeOf((*StorageDrsCannotMoveManuallyPlacedVmFault)(nil)).Elem() +} + +type StorageDrsCannotMoveSharedDisk struct { + VimFault +} + +func init() { + t["StorageDrsCannotMoveSharedDisk"] = reflect.TypeOf((*StorageDrsCannotMoveSharedDisk)(nil)).Elem() +} + +type StorageDrsCannotMoveSharedDiskFault StorageDrsCannotMoveSharedDisk + +func init() { + t["StorageDrsCannotMoveSharedDiskFault"] = reflect.TypeOf((*StorageDrsCannotMoveSharedDiskFault)(nil)).Elem() +} + +type StorageDrsCannotMoveTemplate struct { + VimFault +} + +func init() { + t["StorageDrsCannotMoveTemplate"] = reflect.TypeOf((*StorageDrsCannotMoveTemplate)(nil)).Elem() +} + +type StorageDrsCannotMoveTemplateFault StorageDrsCannotMoveTemplate + +func init() { + t["StorageDrsCannotMoveTemplateFault"] = reflect.TypeOf((*StorageDrsCannotMoveTemplateFault)(nil)).Elem() +} + +type StorageDrsCannotMoveVmInUserFolder struct { + VimFault +} + +func init() { + t["StorageDrsCannotMoveVmInUserFolder"] = reflect.TypeOf((*StorageDrsCannotMoveVmInUserFolder)(nil)).Elem() +} + +type StorageDrsCannotMoveVmInUserFolderFault StorageDrsCannotMoveVmInUserFolder + +func init() { + t["StorageDrsCannotMoveVmInUserFolderFault"] = reflect.TypeOf((*StorageDrsCannotMoveVmInUserFolderFault)(nil)).Elem() +} + +type StorageDrsCannotMoveVmWithMountedCDROM struct { + VimFault +} + +func init() { + t["StorageDrsCannotMoveVmWithMountedCDROM"] = reflect.TypeOf((*StorageDrsCannotMoveVmWithMountedCDROM)(nil)).Elem() +} + +type StorageDrsCannotMoveVmWithMountedCDROMFault StorageDrsCannotMoveVmWithMountedCDROM + +func init() { + t["StorageDrsCannotMoveVmWithMountedCDROMFault"] = reflect.TypeOf((*StorageDrsCannotMoveVmWithMountedCDROMFault)(nil)).Elem() +} + +type StorageDrsCannotMoveVmWithNoFilesInLayout struct { + VimFault +} + +func init() { + t["StorageDrsCannotMoveVmWithNoFilesInLayout"] = reflect.TypeOf((*StorageDrsCannotMoveVmWithNoFilesInLayout)(nil)).Elem() +} + +type StorageDrsCannotMoveVmWithNoFilesInLayoutFault StorageDrsCannotMoveVmWithNoFilesInLayout + +func init() { + t["StorageDrsCannotMoveVmWithNoFilesInLayoutFault"] = reflect.TypeOf((*StorageDrsCannotMoveVmWithNoFilesInLayoutFault)(nil)).Elem() +} + +type StorageDrsConfigInfo struct { + DynamicData + + PodConfig StorageDrsPodConfigInfo `xml:"podConfig"` + VmConfig []StorageDrsVmConfigInfo `xml:"vmConfig,omitempty"` +} + +func init() { + t["StorageDrsConfigInfo"] = reflect.TypeOf((*StorageDrsConfigInfo)(nil)).Elem() +} + +type StorageDrsConfigSpec struct { + DynamicData + + PodConfigSpec *StorageDrsPodConfigSpec `xml:"podConfigSpec,omitempty"` + VmConfigSpec []StorageDrsVmConfigSpec `xml:"vmConfigSpec,omitempty"` +} + +func init() { + t["StorageDrsConfigSpec"] = reflect.TypeOf((*StorageDrsConfigSpec)(nil)).Elem() +} + +type StorageDrsDatacentersCannotShareDatastore struct { + VimFault +} + +func init() { + t["StorageDrsDatacentersCannotShareDatastore"] = reflect.TypeOf((*StorageDrsDatacentersCannotShareDatastore)(nil)).Elem() +} + +type StorageDrsDatacentersCannotShareDatastoreFault StorageDrsDatacentersCannotShareDatastore + +func init() { + t["StorageDrsDatacentersCannotShareDatastoreFault"] = reflect.TypeOf((*StorageDrsDatacentersCannotShareDatastoreFault)(nil)).Elem() +} + +type StorageDrsDisabledOnVm struct { + VimFault +} + +func init() { + t["StorageDrsDisabledOnVm"] = reflect.TypeOf((*StorageDrsDisabledOnVm)(nil)).Elem() +} + +type StorageDrsDisabledOnVmFault StorageDrsDisabledOnVm + +func init() { + t["StorageDrsDisabledOnVmFault"] = reflect.TypeOf((*StorageDrsDisabledOnVmFault)(nil)).Elem() +} + +type StorageDrsHbrDiskNotMovable struct { + VimFault + + NonMovableDiskIds string `xml:"nonMovableDiskIds"` +} + +func init() { + t["StorageDrsHbrDiskNotMovable"] = reflect.TypeOf((*StorageDrsHbrDiskNotMovable)(nil)).Elem() +} + +type StorageDrsHbrDiskNotMovableFault StorageDrsHbrDiskNotMovable + +func init() { + t["StorageDrsHbrDiskNotMovableFault"] = reflect.TypeOf((*StorageDrsHbrDiskNotMovableFault)(nil)).Elem() +} + +type StorageDrsHmsMoveInProgress struct { + VimFault +} + +func init() { + t["StorageDrsHmsMoveInProgress"] = reflect.TypeOf((*StorageDrsHmsMoveInProgress)(nil)).Elem() +} + +type StorageDrsHmsMoveInProgressFault StorageDrsHmsMoveInProgress + +func init() { + t["StorageDrsHmsMoveInProgressFault"] = reflect.TypeOf((*StorageDrsHmsMoveInProgressFault)(nil)).Elem() +} + +type StorageDrsHmsUnreachable struct { + VimFault +} + +func init() { + t["StorageDrsHmsUnreachable"] = reflect.TypeOf((*StorageDrsHmsUnreachable)(nil)).Elem() +} + +type StorageDrsHmsUnreachableFault StorageDrsHmsUnreachable + +func init() { + t["StorageDrsHmsUnreachableFault"] = reflect.TypeOf((*StorageDrsHmsUnreachableFault)(nil)).Elem() +} + +type StorageDrsIoLoadBalanceConfig struct { + DynamicData + + ReservablePercentThreshold int32 `xml:"reservablePercentThreshold,omitempty"` + ReservableIopsThreshold int32 `xml:"reservableIopsThreshold,omitempty"` + ReservableThresholdMode string `xml:"reservableThresholdMode,omitempty"` + IoLatencyThreshold int32 `xml:"ioLatencyThreshold,omitempty"` + IoLoadImbalanceThreshold int32 `xml:"ioLoadImbalanceThreshold,omitempty"` +} + +func init() { + t["StorageDrsIoLoadBalanceConfig"] = reflect.TypeOf((*StorageDrsIoLoadBalanceConfig)(nil)).Elem() +} + +type StorageDrsIolbDisabledInternally struct { + VimFault +} + +func init() { + t["StorageDrsIolbDisabledInternally"] = reflect.TypeOf((*StorageDrsIolbDisabledInternally)(nil)).Elem() +} + +type StorageDrsIolbDisabledInternallyFault StorageDrsIolbDisabledInternally + +func init() { + t["StorageDrsIolbDisabledInternallyFault"] = reflect.TypeOf((*StorageDrsIolbDisabledInternallyFault)(nil)).Elem() +} + +type StorageDrsOptionSpec struct { + ArrayUpdateSpec + + Option BaseOptionValue `xml:"option,omitempty,typeattr"` +} + +func init() { + t["StorageDrsOptionSpec"] = reflect.TypeOf((*StorageDrsOptionSpec)(nil)).Elem() +} + +type StorageDrsPlacementRankVmSpec struct { + DynamicData + + VmPlacementSpec PlacementSpec `xml:"vmPlacementSpec"` + VmClusters []ManagedObjectReference `xml:"vmClusters"` +} + +func init() { + t["StorageDrsPlacementRankVmSpec"] = reflect.TypeOf((*StorageDrsPlacementRankVmSpec)(nil)).Elem() +} + +type StorageDrsPodConfigInfo struct { + DynamicData + + Enabled bool `xml:"enabled"` + IoLoadBalanceEnabled bool `xml:"ioLoadBalanceEnabled"` + DefaultVmBehavior string `xml:"defaultVmBehavior"` + LoadBalanceInterval int32 `xml:"loadBalanceInterval,omitempty"` + DefaultIntraVmAffinity *bool `xml:"defaultIntraVmAffinity"` + SpaceLoadBalanceConfig *StorageDrsSpaceLoadBalanceConfig `xml:"spaceLoadBalanceConfig,omitempty"` + IoLoadBalanceConfig *StorageDrsIoLoadBalanceConfig `xml:"ioLoadBalanceConfig,omitempty"` + AutomationOverrides *StorageDrsAutomationConfig `xml:"automationOverrides,omitempty"` + Rule []BaseClusterRuleInfo `xml:"rule,omitempty,typeattr"` + Option []BaseOptionValue `xml:"option,omitempty,typeattr"` +} + +func init() { + t["StorageDrsPodConfigInfo"] = reflect.TypeOf((*StorageDrsPodConfigInfo)(nil)).Elem() +} + +type StorageDrsPodConfigSpec struct { + DynamicData + + Enabled *bool `xml:"enabled"` + IoLoadBalanceEnabled *bool `xml:"ioLoadBalanceEnabled"` + DefaultVmBehavior string `xml:"defaultVmBehavior,omitempty"` + LoadBalanceInterval int32 `xml:"loadBalanceInterval,omitempty"` + DefaultIntraVmAffinity *bool `xml:"defaultIntraVmAffinity"` + SpaceLoadBalanceConfig *StorageDrsSpaceLoadBalanceConfig `xml:"spaceLoadBalanceConfig,omitempty"` + IoLoadBalanceConfig *StorageDrsIoLoadBalanceConfig `xml:"ioLoadBalanceConfig,omitempty"` + AutomationOverrides *StorageDrsAutomationConfig `xml:"automationOverrides,omitempty"` + Rule []ClusterRuleSpec `xml:"rule,omitempty"` + Option []StorageDrsOptionSpec `xml:"option,omitempty"` +} + +func init() { + t["StorageDrsPodConfigSpec"] = reflect.TypeOf((*StorageDrsPodConfigSpec)(nil)).Elem() +} + +type StorageDrsPodSelectionSpec struct { + DynamicData + + InitialVmConfig []VmPodConfigForPlacement `xml:"initialVmConfig,omitempty"` + StoragePod *ManagedObjectReference `xml:"storagePod,omitempty"` +} + +func init() { + t["StorageDrsPodSelectionSpec"] = reflect.TypeOf((*StorageDrsPodSelectionSpec)(nil)).Elem() +} + +type StorageDrsRelocateDisabled struct { + VimFault +} + +func init() { + t["StorageDrsRelocateDisabled"] = reflect.TypeOf((*StorageDrsRelocateDisabled)(nil)).Elem() +} + +type StorageDrsRelocateDisabledFault StorageDrsRelocateDisabled + +func init() { + t["StorageDrsRelocateDisabledFault"] = reflect.TypeOf((*StorageDrsRelocateDisabledFault)(nil)).Elem() +} + +type StorageDrsSpaceLoadBalanceConfig struct { + DynamicData + + SpaceThresholdMode string `xml:"spaceThresholdMode,omitempty"` + SpaceUtilizationThreshold int32 `xml:"spaceUtilizationThreshold,omitempty"` + FreeSpaceThresholdGB int32 `xml:"freeSpaceThresholdGB,omitempty"` + MinSpaceUtilizationDifference int32 `xml:"minSpaceUtilizationDifference,omitempty"` +} + +func init() { + t["StorageDrsSpaceLoadBalanceConfig"] = reflect.TypeOf((*StorageDrsSpaceLoadBalanceConfig)(nil)).Elem() +} + +type StorageDrsStaleHmsCollection struct { + VimFault +} + +func init() { + t["StorageDrsStaleHmsCollection"] = reflect.TypeOf((*StorageDrsStaleHmsCollection)(nil)).Elem() +} + +type StorageDrsStaleHmsCollectionFault StorageDrsStaleHmsCollection + +func init() { + t["StorageDrsStaleHmsCollectionFault"] = reflect.TypeOf((*StorageDrsStaleHmsCollectionFault)(nil)).Elem() +} + +type StorageDrsUnableToMoveFiles struct { + VimFault +} + +func init() { + t["StorageDrsUnableToMoveFiles"] = reflect.TypeOf((*StorageDrsUnableToMoveFiles)(nil)).Elem() +} + +type StorageDrsUnableToMoveFilesFault StorageDrsUnableToMoveFiles + +func init() { + t["StorageDrsUnableToMoveFilesFault"] = reflect.TypeOf((*StorageDrsUnableToMoveFilesFault)(nil)).Elem() +} + +type StorageDrsVmConfigInfo struct { + DynamicData + + Vm *ManagedObjectReference `xml:"vm,omitempty"` + Enabled *bool `xml:"enabled"` + Behavior string `xml:"behavior,omitempty"` + IntraVmAffinity *bool `xml:"intraVmAffinity"` + IntraVmAntiAffinity *VirtualDiskAntiAffinityRuleSpec `xml:"intraVmAntiAffinity,omitempty"` + VirtualDiskRules []VirtualDiskRuleSpec `xml:"virtualDiskRules,omitempty"` +} + +func init() { + t["StorageDrsVmConfigInfo"] = reflect.TypeOf((*StorageDrsVmConfigInfo)(nil)).Elem() +} + +type StorageDrsVmConfigSpec struct { + ArrayUpdateSpec + + Info *StorageDrsVmConfigInfo `xml:"info,omitempty"` +} + +func init() { + t["StorageDrsVmConfigSpec"] = reflect.TypeOf((*StorageDrsVmConfigSpec)(nil)).Elem() +} + +type StorageIOAllocationInfo struct { + DynamicData + + Limit *int64 `xml:"limit"` + Shares *SharesInfo `xml:"shares,omitempty"` + Reservation *int32 `xml:"reservation"` +} + +func init() { + t["StorageIOAllocationInfo"] = reflect.TypeOf((*StorageIOAllocationInfo)(nil)).Elem() +} + +type StorageIOAllocationOption struct { + DynamicData + + LimitOption LongOption `xml:"limitOption"` + SharesOption SharesOption `xml:"sharesOption"` +} + +func init() { + t["StorageIOAllocationOption"] = reflect.TypeOf((*StorageIOAllocationOption)(nil)).Elem() +} + +type StorageIORMConfigOption struct { + DynamicData + + EnabledOption BoolOption `xml:"enabledOption"` + CongestionThresholdOption IntOption `xml:"congestionThresholdOption"` + StatsCollectionEnabledOption *BoolOption `xml:"statsCollectionEnabledOption,omitempty"` + ReservationEnabledOption *BoolOption `xml:"reservationEnabledOption,omitempty"` +} + +func init() { + t["StorageIORMConfigOption"] = reflect.TypeOf((*StorageIORMConfigOption)(nil)).Elem() +} + +type StorageIORMConfigSpec struct { + DynamicData + + Enabled *bool `xml:"enabled"` + CongestionThresholdMode string `xml:"congestionThresholdMode,omitempty"` + CongestionThreshold int32 `xml:"congestionThreshold,omitempty"` + PercentOfPeakThroughput int32 `xml:"percentOfPeakThroughput,omitempty"` + StatsCollectionEnabled *bool `xml:"statsCollectionEnabled"` + ReservationEnabled *bool `xml:"reservationEnabled"` + StatsAggregationDisabled *bool `xml:"statsAggregationDisabled"` + ReservableIopsThreshold int32 `xml:"reservableIopsThreshold,omitempty"` +} + +func init() { + t["StorageIORMConfigSpec"] = reflect.TypeOf((*StorageIORMConfigSpec)(nil)).Elem() +} + +type StorageIORMInfo struct { + DynamicData + + Enabled bool `xml:"enabled"` + CongestionThresholdMode string `xml:"congestionThresholdMode,omitempty"` + CongestionThreshold int32 `xml:"congestionThreshold"` + PercentOfPeakThroughput int32 `xml:"percentOfPeakThroughput,omitempty"` + StatsCollectionEnabled *bool `xml:"statsCollectionEnabled"` + ReservationEnabled *bool `xml:"reservationEnabled"` + StatsAggregationDisabled *bool `xml:"statsAggregationDisabled"` + ReservableIopsThreshold int32 `xml:"reservableIopsThreshold,omitempty"` +} + +func init() { + t["StorageIORMInfo"] = reflect.TypeOf((*StorageIORMInfo)(nil)).Elem() +} + +type StorageMigrationAction struct { + ClusterAction + + Vm ManagedObjectReference `xml:"vm"` + RelocateSpec VirtualMachineRelocateSpec `xml:"relocateSpec"` + Source ManagedObjectReference `xml:"source"` + Destination ManagedObjectReference `xml:"destination"` + SizeTransferred int64 `xml:"sizeTransferred"` + SpaceUtilSrcBefore float32 `xml:"spaceUtilSrcBefore,omitempty"` + SpaceUtilDstBefore float32 `xml:"spaceUtilDstBefore,omitempty"` + SpaceUtilSrcAfter float32 `xml:"spaceUtilSrcAfter,omitempty"` + SpaceUtilDstAfter float32 `xml:"spaceUtilDstAfter,omitempty"` + IoLatencySrcBefore float32 `xml:"ioLatencySrcBefore,omitempty"` + IoLatencyDstBefore float32 `xml:"ioLatencyDstBefore,omitempty"` +} + +func init() { + t["StorageMigrationAction"] = reflect.TypeOf((*StorageMigrationAction)(nil)).Elem() +} + +type StoragePerformanceSummary struct { + DynamicData + + Interval int32 `xml:"interval"` + Percentile []int32 `xml:"percentile"` + DatastoreReadLatency []float64 `xml:"datastoreReadLatency"` + DatastoreWriteLatency []float64 `xml:"datastoreWriteLatency"` + DatastoreVmLatency []float64 `xml:"datastoreVmLatency"` + DatastoreReadIops []float64 `xml:"datastoreReadIops"` + DatastoreWriteIops []float64 `xml:"datastoreWriteIops"` + SiocActivityDuration int32 `xml:"siocActivityDuration"` +} + +func init() { + t["StoragePerformanceSummary"] = reflect.TypeOf((*StoragePerformanceSummary)(nil)).Elem() +} + +type StoragePlacementAction struct { + ClusterAction + + Vm *ManagedObjectReference `xml:"vm,omitempty"` + RelocateSpec VirtualMachineRelocateSpec `xml:"relocateSpec"` + Destination ManagedObjectReference `xml:"destination"` + SpaceUtilBefore float32 `xml:"spaceUtilBefore,omitempty"` + SpaceDemandBefore float32 `xml:"spaceDemandBefore,omitempty"` + SpaceUtilAfter float32 `xml:"spaceUtilAfter,omitempty"` + SpaceDemandAfter float32 `xml:"spaceDemandAfter,omitempty"` + IoLatencyBefore float32 `xml:"ioLatencyBefore,omitempty"` +} + +func init() { + t["StoragePlacementAction"] = reflect.TypeOf((*StoragePlacementAction)(nil)).Elem() +} + +type StoragePlacementResult struct { + DynamicData + + Recommendations []ClusterRecommendation `xml:"recommendations,omitempty"` + DrsFault *ClusterDrsFaults `xml:"drsFault,omitempty"` + Task *ManagedObjectReference `xml:"task,omitempty"` +} + +func init() { + t["StoragePlacementResult"] = reflect.TypeOf((*StoragePlacementResult)(nil)).Elem() +} + +type StoragePlacementSpec struct { + DynamicData + + Type string `xml:"type"` + Priority VirtualMachineMovePriority `xml:"priority,omitempty"` + Vm *ManagedObjectReference `xml:"vm,omitempty"` + PodSelectionSpec StorageDrsPodSelectionSpec `xml:"podSelectionSpec"` + CloneSpec *VirtualMachineCloneSpec `xml:"cloneSpec,omitempty"` + CloneName string `xml:"cloneName,omitempty"` + ConfigSpec *VirtualMachineConfigSpec `xml:"configSpec,omitempty"` + RelocateSpec *VirtualMachineRelocateSpec `xml:"relocateSpec,omitempty"` + ResourcePool *ManagedObjectReference `xml:"resourcePool,omitempty"` + Host *ManagedObjectReference `xml:"host,omitempty"` + Folder *ManagedObjectReference `xml:"folder,omitempty"` + DisallowPrerequisiteMoves *bool `xml:"disallowPrerequisiteMoves"` + ResourceLeaseDurationSec int32 `xml:"resourceLeaseDurationSec,omitempty"` +} + +func init() { + t["StoragePlacementSpec"] = reflect.TypeOf((*StoragePlacementSpec)(nil)).Elem() +} + +type StoragePodSummary struct { + DynamicData + + Name string `xml:"name"` + Capacity int64 `xml:"capacity"` + FreeSpace int64 `xml:"freeSpace"` +} + +func init() { + t["StoragePodSummary"] = reflect.TypeOf((*StoragePodSummary)(nil)).Elem() +} + +type StorageProfile struct { + ApplyProfile + + NasStorage []NasStorageProfile `xml:"nasStorage,omitempty"` +} + +func init() { + t["StorageProfile"] = reflect.TypeOf((*StorageProfile)(nil)).Elem() +} + +type StorageRequirement struct { + DynamicData + + Datastore ManagedObjectReference `xml:"datastore"` + FreeSpaceRequiredInKb int64 `xml:"freeSpaceRequiredInKb"` +} + +func init() { + t["StorageRequirement"] = reflect.TypeOf((*StorageRequirement)(nil)).Elem() +} + +type StorageResourceManagerStorageProfileStatistics struct { + DynamicData + + ProfileId string `xml:"profileId"` + TotalSpaceMB int64 `xml:"totalSpaceMB"` + UsedSpaceMB int64 `xml:"usedSpaceMB"` +} + +func init() { + t["StorageResourceManagerStorageProfileStatistics"] = reflect.TypeOf((*StorageResourceManagerStorageProfileStatistics)(nil)).Elem() +} + +type StorageVMotionNotSupported struct { + MigrationFeatureNotSupported +} + +func init() { + t["StorageVMotionNotSupported"] = reflect.TypeOf((*StorageVMotionNotSupported)(nil)).Elem() +} + +type StorageVMotionNotSupportedFault StorageVMotionNotSupported + +func init() { + t["StorageVMotionNotSupportedFault"] = reflect.TypeOf((*StorageVMotionNotSupportedFault)(nil)).Elem() +} + +type StorageVmotionIncompatible struct { + VirtualHardwareCompatibilityIssue + + Datastore *ManagedObjectReference `xml:"datastore,omitempty"` +} + +func init() { + t["StorageVmotionIncompatible"] = reflect.TypeOf((*StorageVmotionIncompatible)(nil)).Elem() +} + +type StorageVmotionIncompatibleFault StorageVmotionIncompatible + +func init() { + t["StorageVmotionIncompatibleFault"] = reflect.TypeOf((*StorageVmotionIncompatibleFault)(nil)).Elem() +} + +type StringExpression struct { + NegatableExpression + + Value string `xml:"value,omitempty"` +} + +func init() { + t["StringExpression"] = reflect.TypeOf((*StringExpression)(nil)).Elem() +} + +type StringOption struct { + OptionType + + DefaultValue string `xml:"defaultValue"` + ValidCharacters string `xml:"validCharacters,omitempty"` +} + +func init() { + t["StringOption"] = reflect.TypeOf((*StringOption)(nil)).Elem() +} + +type StringPolicy struct { + InheritablePolicy + + Value string `xml:"value,omitempty"` +} + +func init() { + t["StringPolicy"] = reflect.TypeOf((*StringPolicy)(nil)).Elem() +} + +type StructuredCustomizations struct { + HostProfilesEntityCustomizations + + Entity ManagedObjectReference `xml:"entity"` + Customizations *AnswerFile `xml:"customizations,omitempty"` +} + +func init() { + t["StructuredCustomizations"] = reflect.TypeOf((*StructuredCustomizations)(nil)).Elem() +} + +type SuspendVAppRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["SuspendVAppRequestType"] = reflect.TypeOf((*SuspendVAppRequestType)(nil)).Elem() +} + +type SuspendVApp_Task SuspendVAppRequestType + +func init() { + t["SuspendVApp_Task"] = reflect.TypeOf((*SuspendVApp_Task)(nil)).Elem() +} + +type SuspendVApp_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type SuspendVMRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["SuspendVMRequestType"] = reflect.TypeOf((*SuspendVMRequestType)(nil)).Elem() +} + +type SuspendVM_Task SuspendVMRequestType + +func init() { + t["SuspendVM_Task"] = reflect.TypeOf((*SuspendVM_Task)(nil)).Elem() +} + +type SuspendVM_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type SuspendedRelocateNotSupported struct { + MigrationFault +} + +func init() { + t["SuspendedRelocateNotSupported"] = reflect.TypeOf((*SuspendedRelocateNotSupported)(nil)).Elem() +} + +type SuspendedRelocateNotSupportedFault SuspendedRelocateNotSupported + +func init() { + t["SuspendedRelocateNotSupportedFault"] = reflect.TypeOf((*SuspendedRelocateNotSupportedFault)(nil)).Elem() +} + +type SwapDatastoreNotWritableOnHost struct { + DatastoreNotWritableOnHost +} + +func init() { + t["SwapDatastoreNotWritableOnHost"] = reflect.TypeOf((*SwapDatastoreNotWritableOnHost)(nil)).Elem() +} + +type SwapDatastoreNotWritableOnHostFault SwapDatastoreNotWritableOnHost + +func init() { + t["SwapDatastoreNotWritableOnHostFault"] = reflect.TypeOf((*SwapDatastoreNotWritableOnHostFault)(nil)).Elem() +} + +type SwapDatastoreUnset struct { + VimFault +} + +func init() { + t["SwapDatastoreUnset"] = reflect.TypeOf((*SwapDatastoreUnset)(nil)).Elem() +} + +type SwapDatastoreUnsetFault SwapDatastoreUnset + +func init() { + t["SwapDatastoreUnsetFault"] = reflect.TypeOf((*SwapDatastoreUnsetFault)(nil)).Elem() +} + +type SwapPlacementOverrideNotSupported struct { + InvalidVmConfig +} + +func init() { + t["SwapPlacementOverrideNotSupported"] = reflect.TypeOf((*SwapPlacementOverrideNotSupported)(nil)).Elem() +} + +type SwapPlacementOverrideNotSupportedFault SwapPlacementOverrideNotSupported + +func init() { + t["SwapPlacementOverrideNotSupportedFault"] = reflect.TypeOf((*SwapPlacementOverrideNotSupportedFault)(nil)).Elem() +} + +type SwitchIpUnset struct { + DvsFault +} + +func init() { + t["SwitchIpUnset"] = reflect.TypeOf((*SwitchIpUnset)(nil)).Elem() +} + +type SwitchIpUnsetFault SwitchIpUnset + +func init() { + t["SwitchIpUnsetFault"] = reflect.TypeOf((*SwitchIpUnsetFault)(nil)).Elem() +} + +type SwitchNotInUpgradeMode struct { + DvsFault +} + +func init() { + t["SwitchNotInUpgradeMode"] = reflect.TypeOf((*SwitchNotInUpgradeMode)(nil)).Elem() +} + +type SwitchNotInUpgradeModeFault SwitchNotInUpgradeMode + +func init() { + t["SwitchNotInUpgradeModeFault"] = reflect.TypeOf((*SwitchNotInUpgradeModeFault)(nil)).Elem() +} + +type SystemError struct { + RuntimeFault + + Reason string `xml:"reason"` +} + +func init() { + t["SystemError"] = reflect.TypeOf((*SystemError)(nil)).Elem() +} + +type SystemErrorFault SystemError + +func init() { + t["SystemErrorFault"] = reflect.TypeOf((*SystemErrorFault)(nil)).Elem() +} + +type SystemEventInfo struct { + DynamicData + + RecordId int64 `xml:"recordId"` + When string `xml:"when"` + SelType int64 `xml:"selType"` + Message string `xml:"message"` + SensorNumber int64 `xml:"sensorNumber"` +} + +func init() { + t["SystemEventInfo"] = reflect.TypeOf((*SystemEventInfo)(nil)).Elem() +} + +type Tag struct { + DynamicData + + Key string `xml:"key"` +} + +func init() { + t["Tag"] = reflect.TypeOf((*Tag)(nil)).Elem() +} + +type TaskDescription struct { + DynamicData + + MethodInfo []BaseElementDescription `xml:"methodInfo,typeattr"` + State []BaseElementDescription `xml:"state,typeattr"` + Reason []BaseTypeDescription `xml:"reason,typeattr"` +} + +func init() { + t["TaskDescription"] = reflect.TypeOf((*TaskDescription)(nil)).Elem() +} + +type TaskEvent struct { + Event + + Info TaskInfo `xml:"info"` +} + +func init() { + t["TaskEvent"] = reflect.TypeOf((*TaskEvent)(nil)).Elem() +} + +type TaskFilterSpec struct { + DynamicData + + Entity *TaskFilterSpecByEntity `xml:"entity,omitempty"` + Time *TaskFilterSpecByTime `xml:"time,omitempty"` + UserName *TaskFilterSpecByUsername `xml:"userName,omitempty"` + ActivationId []string `xml:"activationId,omitempty"` + State []TaskInfoState `xml:"state,omitempty"` + Alarm *ManagedObjectReference `xml:"alarm,omitempty"` + ScheduledTask *ManagedObjectReference `xml:"scheduledTask,omitempty"` + EventChainId []int32 `xml:"eventChainId,omitempty"` + Tag []string `xml:"tag,omitempty"` + ParentTaskKey []string `xml:"parentTaskKey,omitempty"` + RootTaskKey []string `xml:"rootTaskKey,omitempty"` +} + +func init() { + t["TaskFilterSpec"] = reflect.TypeOf((*TaskFilterSpec)(nil)).Elem() +} + +type TaskFilterSpecByEntity struct { + DynamicData + + Entity ManagedObjectReference `xml:"entity"` + Recursion TaskFilterSpecRecursionOption `xml:"recursion"` +} + +func init() { + t["TaskFilterSpecByEntity"] = reflect.TypeOf((*TaskFilterSpecByEntity)(nil)).Elem() +} + +type TaskFilterSpecByTime struct { + DynamicData + + TimeType TaskFilterSpecTimeOption `xml:"timeType"` + BeginTime *time.Time `xml:"beginTime"` + EndTime *time.Time `xml:"endTime"` +} + +func init() { + t["TaskFilterSpecByTime"] = reflect.TypeOf((*TaskFilterSpecByTime)(nil)).Elem() +} + +type TaskFilterSpecByUsername struct { + DynamicData + + SystemUser bool `xml:"systemUser"` + UserList []string `xml:"userList,omitempty"` +} + +func init() { + t["TaskFilterSpecByUsername"] = reflect.TypeOf((*TaskFilterSpecByUsername)(nil)).Elem() +} + +type TaskInProgress struct { + VimFault + + Task ManagedObjectReference `xml:"task"` +} + +func init() { + t["TaskInProgress"] = reflect.TypeOf((*TaskInProgress)(nil)).Elem() +} + +type TaskInProgressFault BaseTaskInProgress + +func init() { + t["TaskInProgressFault"] = reflect.TypeOf((*TaskInProgressFault)(nil)).Elem() +} + +type TaskInfo struct { + DynamicData + + Key string `xml:"key"` + Task ManagedObjectReference `xml:"task"` + Description *LocalizableMessage `xml:"description,omitempty"` + Name string `xml:"name,omitempty"` + DescriptionId string `xml:"descriptionId"` + Entity *ManagedObjectReference `xml:"entity,omitempty"` + EntityName string `xml:"entityName,omitempty"` + Locked []ManagedObjectReference `xml:"locked,omitempty"` + State TaskInfoState `xml:"state"` + Cancelled bool `xml:"cancelled"` + Cancelable bool `xml:"cancelable"` + Error *LocalizedMethodFault `xml:"error,omitempty"` + Result AnyType `xml:"result,omitempty,typeattr"` + Progress int32 `xml:"progress,omitempty"` + Reason BaseTaskReason `xml:"reason,typeattr"` + QueueTime time.Time `xml:"queueTime"` + StartTime *time.Time `xml:"startTime"` + CompleteTime *time.Time `xml:"completeTime"` + EventChainId int32 `xml:"eventChainId"` + ChangeTag string `xml:"changeTag,omitempty"` + ParentTaskKey string `xml:"parentTaskKey,omitempty"` + RootTaskKey string `xml:"rootTaskKey,omitempty"` + ActivationId string `xml:"activationId,omitempty"` +} + +func init() { + t["TaskInfo"] = reflect.TypeOf((*TaskInfo)(nil)).Elem() +} + +type TaskReason struct { + DynamicData +} + +func init() { + t["TaskReason"] = reflect.TypeOf((*TaskReason)(nil)).Elem() +} + +type TaskReasonAlarm struct { + TaskReason + + AlarmName string `xml:"alarmName"` + Alarm ManagedObjectReference `xml:"alarm"` + EntityName string `xml:"entityName"` + Entity ManagedObjectReference `xml:"entity"` +} + +func init() { + t["TaskReasonAlarm"] = reflect.TypeOf((*TaskReasonAlarm)(nil)).Elem() +} + +type TaskReasonSchedule struct { + TaskReason + + Name string `xml:"name"` + ScheduledTask ManagedObjectReference `xml:"scheduledTask"` +} + +func init() { + t["TaskReasonSchedule"] = reflect.TypeOf((*TaskReasonSchedule)(nil)).Elem() +} + +type TaskReasonSystem struct { + TaskReason +} + +func init() { + t["TaskReasonSystem"] = reflect.TypeOf((*TaskReasonSystem)(nil)).Elem() +} + +type TaskReasonUser struct { + TaskReason + + UserName string `xml:"userName"` +} + +func init() { + t["TaskReasonUser"] = reflect.TypeOf((*TaskReasonUser)(nil)).Elem() +} + +type TaskScheduler struct { + DynamicData + + ActiveTime *time.Time `xml:"activeTime"` + ExpireTime *time.Time `xml:"expireTime"` +} + +func init() { + t["TaskScheduler"] = reflect.TypeOf((*TaskScheduler)(nil)).Elem() +} + +type TaskTimeoutEvent struct { + TaskEvent +} + +func init() { + t["TaskTimeoutEvent"] = reflect.TypeOf((*TaskTimeoutEvent)(nil)).Elem() +} + +type TeamingMatchEvent struct { + DvsHealthStatusChangeEvent +} + +func init() { + t["TeamingMatchEvent"] = reflect.TypeOf((*TeamingMatchEvent)(nil)).Elem() +} + +type TeamingMisMatchEvent struct { + DvsHealthStatusChangeEvent +} + +func init() { + t["TeamingMisMatchEvent"] = reflect.TypeOf((*TeamingMisMatchEvent)(nil)).Elem() +} + +type TemplateBeingUpgradedEvent struct { + TemplateUpgradeEvent +} + +func init() { + t["TemplateBeingUpgradedEvent"] = reflect.TypeOf((*TemplateBeingUpgradedEvent)(nil)).Elem() +} + +type TemplateConfigFileInfo struct { + VmConfigFileInfo +} + +func init() { + t["TemplateConfigFileInfo"] = reflect.TypeOf((*TemplateConfigFileInfo)(nil)).Elem() +} + +type TemplateConfigFileQuery struct { + VmConfigFileQuery +} + +func init() { + t["TemplateConfigFileQuery"] = reflect.TypeOf((*TemplateConfigFileQuery)(nil)).Elem() +} + +type TemplateUpgradeEvent struct { + Event + + LegacyTemplate string `xml:"legacyTemplate"` +} + +func init() { + t["TemplateUpgradeEvent"] = reflect.TypeOf((*TemplateUpgradeEvent)(nil)).Elem() +} + +type TemplateUpgradeFailedEvent struct { + TemplateUpgradeEvent + + Reason LocalizedMethodFault `xml:"reason"` +} + +func init() { + t["TemplateUpgradeFailedEvent"] = reflect.TypeOf((*TemplateUpgradeFailedEvent)(nil)).Elem() +} + +type TemplateUpgradedEvent struct { + TemplateUpgradeEvent +} + +func init() { + t["TemplateUpgradedEvent"] = reflect.TypeOf((*TemplateUpgradedEvent)(nil)).Elem() +} + +type TerminateFaultTolerantVMRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm *ManagedObjectReference `xml:"vm,omitempty"` +} + +func init() { + t["TerminateFaultTolerantVMRequestType"] = reflect.TypeOf((*TerminateFaultTolerantVMRequestType)(nil)).Elem() +} + +type TerminateFaultTolerantVM_Task TerminateFaultTolerantVMRequestType + +func init() { + t["TerminateFaultTolerantVM_Task"] = reflect.TypeOf((*TerminateFaultTolerantVM_Task)(nil)).Elem() +} + +type TerminateFaultTolerantVM_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type TerminateProcessInGuest TerminateProcessInGuestRequestType + +func init() { + t["TerminateProcessInGuest"] = reflect.TypeOf((*TerminateProcessInGuest)(nil)).Elem() +} + +type TerminateProcessInGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` + Pid int64 `xml:"pid"` +} + +func init() { + t["TerminateProcessInGuestRequestType"] = reflect.TypeOf((*TerminateProcessInGuestRequestType)(nil)).Elem() +} + +type TerminateProcessInGuestResponse struct { +} + +type TerminateSession TerminateSessionRequestType + +func init() { + t["TerminateSession"] = reflect.TypeOf((*TerminateSession)(nil)).Elem() +} + +type TerminateSessionRequestType struct { + This ManagedObjectReference `xml:"_this"` + SessionId []string `xml:"sessionId"` +} + +func init() { + t["TerminateSessionRequestType"] = reflect.TypeOf((*TerminateSessionRequestType)(nil)).Elem() +} + +type TerminateSessionResponse struct { +} + +type TerminateVM TerminateVMRequestType + +func init() { + t["TerminateVM"] = reflect.TypeOf((*TerminateVM)(nil)).Elem() +} + +type TerminateVMRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["TerminateVMRequestType"] = reflect.TypeOf((*TerminateVMRequestType)(nil)).Elem() +} + +type TerminateVMResponse struct { +} + +type ThirdPartyLicenseAssignmentFailed struct { + RuntimeFault + + Host ManagedObjectReference `xml:"host"` + Module string `xml:"module"` + Reason string `xml:"reason,omitempty"` +} + +func init() { + t["ThirdPartyLicenseAssignmentFailed"] = reflect.TypeOf((*ThirdPartyLicenseAssignmentFailed)(nil)).Elem() +} + +type ThirdPartyLicenseAssignmentFailedFault ThirdPartyLicenseAssignmentFailed + +func init() { + t["ThirdPartyLicenseAssignmentFailedFault"] = reflect.TypeOf((*ThirdPartyLicenseAssignmentFailedFault)(nil)).Elem() +} + +type TicketedSessionAuthentication struct { + GuestAuthentication + + Ticket string `xml:"ticket"` +} + +func init() { + t["TicketedSessionAuthentication"] = reflect.TypeOf((*TicketedSessionAuthentication)(nil)).Elem() +} + +type TimedOutHostOperationEvent struct { + HostEvent +} + +func init() { + t["TimedOutHostOperationEvent"] = reflect.TypeOf((*TimedOutHostOperationEvent)(nil)).Elem() +} + +type Timedout struct { + VimFault +} + +func init() { + t["Timedout"] = reflect.TypeOf((*Timedout)(nil)).Elem() +} + +type TimedoutFault BaseTimedout + +func init() { + t["TimedoutFault"] = reflect.TypeOf((*TimedoutFault)(nil)).Elem() +} + +type TooManyConcurrentNativeClones struct { + FileFault +} + +func init() { + t["TooManyConcurrentNativeClones"] = reflect.TypeOf((*TooManyConcurrentNativeClones)(nil)).Elem() +} + +type TooManyConcurrentNativeClonesFault TooManyConcurrentNativeClones + +func init() { + t["TooManyConcurrentNativeClonesFault"] = reflect.TypeOf((*TooManyConcurrentNativeClonesFault)(nil)).Elem() +} + +type TooManyConsecutiveOverrides struct { + VimFault +} + +func init() { + t["TooManyConsecutiveOverrides"] = reflect.TypeOf((*TooManyConsecutiveOverrides)(nil)).Elem() +} + +type TooManyConsecutiveOverridesFault TooManyConsecutiveOverrides + +func init() { + t["TooManyConsecutiveOverridesFault"] = reflect.TypeOf((*TooManyConsecutiveOverridesFault)(nil)).Elem() +} + +type TooManyDevices struct { + InvalidVmConfig +} + +func init() { + t["TooManyDevices"] = reflect.TypeOf((*TooManyDevices)(nil)).Elem() +} + +type TooManyDevicesFault TooManyDevices + +func init() { + t["TooManyDevicesFault"] = reflect.TypeOf((*TooManyDevicesFault)(nil)).Elem() +} + +type TooManyDisksOnLegacyHost struct { + MigrationFault + + DiskCount int32 `xml:"diskCount"` + TimeoutDanger bool `xml:"timeoutDanger"` +} + +func init() { + t["TooManyDisksOnLegacyHost"] = reflect.TypeOf((*TooManyDisksOnLegacyHost)(nil)).Elem() +} + +type TooManyDisksOnLegacyHostFault TooManyDisksOnLegacyHost + +func init() { + t["TooManyDisksOnLegacyHostFault"] = reflect.TypeOf((*TooManyDisksOnLegacyHostFault)(nil)).Elem() +} + +type TooManyGuestLogons struct { + GuestOperationsFault +} + +func init() { + t["TooManyGuestLogons"] = reflect.TypeOf((*TooManyGuestLogons)(nil)).Elem() +} + +type TooManyGuestLogonsFault TooManyGuestLogons + +func init() { + t["TooManyGuestLogonsFault"] = reflect.TypeOf((*TooManyGuestLogonsFault)(nil)).Elem() +} + +type TooManyHosts struct { + HostConnectFault +} + +func init() { + t["TooManyHosts"] = reflect.TypeOf((*TooManyHosts)(nil)).Elem() +} + +type TooManyHostsFault TooManyHosts + +func init() { + t["TooManyHostsFault"] = reflect.TypeOf((*TooManyHostsFault)(nil)).Elem() +} + +type TooManyNativeCloneLevels struct { + FileFault +} + +func init() { + t["TooManyNativeCloneLevels"] = reflect.TypeOf((*TooManyNativeCloneLevels)(nil)).Elem() +} + +type TooManyNativeCloneLevelsFault TooManyNativeCloneLevels + +func init() { + t["TooManyNativeCloneLevelsFault"] = reflect.TypeOf((*TooManyNativeCloneLevelsFault)(nil)).Elem() +} + +type TooManyNativeClonesOnFile struct { + FileFault +} + +func init() { + t["TooManyNativeClonesOnFile"] = reflect.TypeOf((*TooManyNativeClonesOnFile)(nil)).Elem() +} + +type TooManyNativeClonesOnFileFault TooManyNativeClonesOnFile + +func init() { + t["TooManyNativeClonesOnFileFault"] = reflect.TypeOf((*TooManyNativeClonesOnFileFault)(nil)).Elem() +} + +type TooManySnapshotLevels struct { + SnapshotFault +} + +func init() { + t["TooManySnapshotLevels"] = reflect.TypeOf((*TooManySnapshotLevels)(nil)).Elem() +} + +type TooManySnapshotLevelsFault TooManySnapshotLevels + +func init() { + t["TooManySnapshotLevelsFault"] = reflect.TypeOf((*TooManySnapshotLevelsFault)(nil)).Elem() +} + +type ToolsAlreadyUpgraded struct { + VmToolsUpgradeFault +} + +func init() { + t["ToolsAlreadyUpgraded"] = reflect.TypeOf((*ToolsAlreadyUpgraded)(nil)).Elem() +} + +type ToolsAlreadyUpgradedFault ToolsAlreadyUpgraded + +func init() { + t["ToolsAlreadyUpgradedFault"] = reflect.TypeOf((*ToolsAlreadyUpgradedFault)(nil)).Elem() +} + +type ToolsAutoUpgradeNotSupported struct { + VmToolsUpgradeFault +} + +func init() { + t["ToolsAutoUpgradeNotSupported"] = reflect.TypeOf((*ToolsAutoUpgradeNotSupported)(nil)).Elem() +} + +type ToolsAutoUpgradeNotSupportedFault ToolsAutoUpgradeNotSupported + +func init() { + t["ToolsAutoUpgradeNotSupportedFault"] = reflect.TypeOf((*ToolsAutoUpgradeNotSupportedFault)(nil)).Elem() +} + +type ToolsConfigInfo struct { + DynamicData + + ToolsVersion int32 `xml:"toolsVersion,omitempty"` + ToolsInstallType string `xml:"toolsInstallType,omitempty"` + AfterPowerOn *bool `xml:"afterPowerOn"` + AfterResume *bool `xml:"afterResume"` + BeforeGuestStandby *bool `xml:"beforeGuestStandby"` + BeforeGuestShutdown *bool `xml:"beforeGuestShutdown"` + BeforeGuestReboot *bool `xml:"beforeGuestReboot"` + ToolsUpgradePolicy string `xml:"toolsUpgradePolicy,omitempty"` + PendingCustomization string `xml:"pendingCustomization,omitempty"` + CustomizationKeyId *CryptoKeyId `xml:"customizationKeyId,omitempty"` + SyncTimeWithHost *bool `xml:"syncTimeWithHost"` + LastInstallInfo *ToolsConfigInfoToolsLastInstallInfo `xml:"lastInstallInfo,omitempty"` +} + +func init() { + t["ToolsConfigInfo"] = reflect.TypeOf((*ToolsConfigInfo)(nil)).Elem() +} + +type ToolsConfigInfoToolsLastInstallInfo struct { + DynamicData + + Counter int32 `xml:"counter"` + Fault *LocalizedMethodFault `xml:"fault,omitempty"` +} + +func init() { + t["ToolsConfigInfoToolsLastInstallInfo"] = reflect.TypeOf((*ToolsConfigInfoToolsLastInstallInfo)(nil)).Elem() +} + +type ToolsImageCopyFailed struct { + VmToolsUpgradeFault +} + +func init() { + t["ToolsImageCopyFailed"] = reflect.TypeOf((*ToolsImageCopyFailed)(nil)).Elem() +} + +type ToolsImageCopyFailedFault ToolsImageCopyFailed + +func init() { + t["ToolsImageCopyFailedFault"] = reflect.TypeOf((*ToolsImageCopyFailedFault)(nil)).Elem() +} + +type ToolsImageNotAvailable struct { + VmToolsUpgradeFault +} + +func init() { + t["ToolsImageNotAvailable"] = reflect.TypeOf((*ToolsImageNotAvailable)(nil)).Elem() +} + +type ToolsImageNotAvailableFault ToolsImageNotAvailable + +func init() { + t["ToolsImageNotAvailableFault"] = reflect.TypeOf((*ToolsImageNotAvailableFault)(nil)).Elem() +} + +type ToolsImageSignatureCheckFailed struct { + VmToolsUpgradeFault +} + +func init() { + t["ToolsImageSignatureCheckFailed"] = reflect.TypeOf((*ToolsImageSignatureCheckFailed)(nil)).Elem() +} + +type ToolsImageSignatureCheckFailedFault ToolsImageSignatureCheckFailed + +func init() { + t["ToolsImageSignatureCheckFailedFault"] = reflect.TypeOf((*ToolsImageSignatureCheckFailedFault)(nil)).Elem() +} + +type ToolsInstallationInProgress struct { + MigrationFault +} + +func init() { + t["ToolsInstallationInProgress"] = reflect.TypeOf((*ToolsInstallationInProgress)(nil)).Elem() +} + +type ToolsInstallationInProgressFault ToolsInstallationInProgress + +func init() { + t["ToolsInstallationInProgressFault"] = reflect.TypeOf((*ToolsInstallationInProgressFault)(nil)).Elem() +} + +type ToolsUnavailable struct { + VimFault +} + +func init() { + t["ToolsUnavailable"] = reflect.TypeOf((*ToolsUnavailable)(nil)).Elem() +} + +type ToolsUnavailableFault ToolsUnavailable + +func init() { + t["ToolsUnavailableFault"] = reflect.TypeOf((*ToolsUnavailableFault)(nil)).Elem() +} + +type ToolsUpgradeCancelled struct { + VmToolsUpgradeFault +} + +func init() { + t["ToolsUpgradeCancelled"] = reflect.TypeOf((*ToolsUpgradeCancelled)(nil)).Elem() +} + +type ToolsUpgradeCancelledFault ToolsUpgradeCancelled + +func init() { + t["ToolsUpgradeCancelledFault"] = reflect.TypeOf((*ToolsUpgradeCancelledFault)(nil)).Elem() +} + +type TraversalSpec struct { + SelectionSpec + + Type string `xml:"type"` + Path string `xml:"path"` + Skip *bool `xml:"skip"` + SelectSet []BaseSelectionSpec `xml:"selectSet,omitempty,typeattr"` +} + +func init() { + t["TraversalSpec"] = reflect.TypeOf((*TraversalSpec)(nil)).Elem() +} + +type TurnDiskLocatorLedOffRequestType struct { + This ManagedObjectReference `xml:"_this"` + ScsiDiskUuids []string `xml:"scsiDiskUuids"` +} + +func init() { + t["TurnDiskLocatorLedOffRequestType"] = reflect.TypeOf((*TurnDiskLocatorLedOffRequestType)(nil)).Elem() +} + +type TurnDiskLocatorLedOff_Task TurnDiskLocatorLedOffRequestType + +func init() { + t["TurnDiskLocatorLedOff_Task"] = reflect.TypeOf((*TurnDiskLocatorLedOff_Task)(nil)).Elem() +} + +type TurnDiskLocatorLedOff_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type TurnDiskLocatorLedOnRequestType struct { + This ManagedObjectReference `xml:"_this"` + ScsiDiskUuids []string `xml:"scsiDiskUuids"` +} + +func init() { + t["TurnDiskLocatorLedOnRequestType"] = reflect.TypeOf((*TurnDiskLocatorLedOnRequestType)(nil)).Elem() +} + +type TurnDiskLocatorLedOn_Task TurnDiskLocatorLedOnRequestType + +func init() { + t["TurnDiskLocatorLedOn_Task"] = reflect.TypeOf((*TurnDiskLocatorLedOn_Task)(nil)).Elem() +} + +type TurnDiskLocatorLedOn_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type TurnOffFaultToleranceForVMRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["TurnOffFaultToleranceForVMRequestType"] = reflect.TypeOf((*TurnOffFaultToleranceForVMRequestType)(nil)).Elem() +} + +type TurnOffFaultToleranceForVM_Task TurnOffFaultToleranceForVMRequestType + +func init() { + t["TurnOffFaultToleranceForVM_Task"] = reflect.TypeOf((*TurnOffFaultToleranceForVM_Task)(nil)).Elem() +} + +type TurnOffFaultToleranceForVM_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type TypeDescription struct { + Description + + Key string `xml:"key"` +} + +func init() { + t["TypeDescription"] = reflect.TypeOf((*TypeDescription)(nil)).Elem() +} + +type UnSupportedDatastoreForVFlash struct { + UnsupportedDatastore + + DatastoreName string `xml:"datastoreName"` + Type string `xml:"type"` +} + +func init() { + t["UnSupportedDatastoreForVFlash"] = reflect.TypeOf((*UnSupportedDatastoreForVFlash)(nil)).Elem() +} + +type UnSupportedDatastoreForVFlashFault UnSupportedDatastoreForVFlash + +func init() { + t["UnSupportedDatastoreForVFlashFault"] = reflect.TypeOf((*UnSupportedDatastoreForVFlashFault)(nil)).Elem() +} + +type UnassignUserFromGroup UnassignUserFromGroupRequestType + +func init() { + t["UnassignUserFromGroup"] = reflect.TypeOf((*UnassignUserFromGroup)(nil)).Elem() +} + +type UnassignUserFromGroupRequestType struct { + This ManagedObjectReference `xml:"_this"` + User string `xml:"user"` + Group string `xml:"group"` +} + +func init() { + t["UnassignUserFromGroupRequestType"] = reflect.TypeOf((*UnassignUserFromGroupRequestType)(nil)).Elem() +} + +type UnassignUserFromGroupResponse struct { +} + +type UnbindVnic UnbindVnicRequestType + +func init() { + t["UnbindVnic"] = reflect.TypeOf((*UnbindVnic)(nil)).Elem() +} + +type UnbindVnicRequestType struct { + This ManagedObjectReference `xml:"_this"` + IScsiHbaName string `xml:"iScsiHbaName"` + VnicDevice string `xml:"vnicDevice"` + Force bool `xml:"force"` +} + +func init() { + t["UnbindVnicRequestType"] = reflect.TypeOf((*UnbindVnicRequestType)(nil)).Elem() +} + +type UnbindVnicResponse struct { +} + +type UncommittedUndoableDisk struct { + MigrationFault +} + +func init() { + t["UncommittedUndoableDisk"] = reflect.TypeOf((*UncommittedUndoableDisk)(nil)).Elem() +} + +type UncommittedUndoableDiskFault UncommittedUndoableDisk + +func init() { + t["UncommittedUndoableDiskFault"] = reflect.TypeOf((*UncommittedUndoableDiskFault)(nil)).Elem() +} + +type UnconfiguredPropertyValue struct { + InvalidPropertyValue +} + +func init() { + t["UnconfiguredPropertyValue"] = reflect.TypeOf((*UnconfiguredPropertyValue)(nil)).Elem() +} + +type UnconfiguredPropertyValueFault UnconfiguredPropertyValue + +func init() { + t["UnconfiguredPropertyValueFault"] = reflect.TypeOf((*UnconfiguredPropertyValueFault)(nil)).Elem() +} + +type UncustomizableGuest struct { + CustomizationFault + + UncustomizableGuestOS string `xml:"uncustomizableGuestOS"` +} + +func init() { + t["UncustomizableGuest"] = reflect.TypeOf((*UncustomizableGuest)(nil)).Elem() +} + +type UncustomizableGuestFault UncustomizableGuest + +func init() { + t["UncustomizableGuestFault"] = reflect.TypeOf((*UncustomizableGuestFault)(nil)).Elem() +} + +type UnexpectedCustomizationFault struct { + CustomizationFault +} + +func init() { + t["UnexpectedCustomizationFault"] = reflect.TypeOf((*UnexpectedCustomizationFault)(nil)).Elem() +} + +type UnexpectedCustomizationFaultFault UnexpectedCustomizationFault + +func init() { + t["UnexpectedCustomizationFaultFault"] = reflect.TypeOf((*UnexpectedCustomizationFaultFault)(nil)).Elem() +} + +type UnexpectedFault struct { + RuntimeFault + + FaultName string `xml:"faultName"` + Fault *LocalizedMethodFault `xml:"fault,omitempty"` +} + +func init() { + t["UnexpectedFault"] = reflect.TypeOf((*UnexpectedFault)(nil)).Elem() +} + +type UnexpectedFaultFault UnexpectedFault + +func init() { + t["UnexpectedFaultFault"] = reflect.TypeOf((*UnexpectedFaultFault)(nil)).Elem() +} + +type UninstallHostPatchRequestType struct { + This ManagedObjectReference `xml:"_this"` + BulletinIds []string `xml:"bulletinIds,omitempty"` + Spec *HostPatchManagerPatchManagerOperationSpec `xml:"spec,omitempty"` +} + +func init() { + t["UninstallHostPatchRequestType"] = reflect.TypeOf((*UninstallHostPatchRequestType)(nil)).Elem() +} + +type UninstallHostPatch_Task UninstallHostPatchRequestType + +func init() { + t["UninstallHostPatch_Task"] = reflect.TypeOf((*UninstallHostPatch_Task)(nil)).Elem() +} + +type UninstallHostPatch_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type UninstallIoFilterRequestType struct { + This ManagedObjectReference `xml:"_this"` + FilterId string `xml:"filterId"` + CompRes ManagedObjectReference `xml:"compRes"` +} + +func init() { + t["UninstallIoFilterRequestType"] = reflect.TypeOf((*UninstallIoFilterRequestType)(nil)).Elem() +} + +type UninstallIoFilter_Task UninstallIoFilterRequestType + +func init() { + t["UninstallIoFilter_Task"] = reflect.TypeOf((*UninstallIoFilter_Task)(nil)).Elem() +} + +type UninstallIoFilter_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type UninstallService UninstallServiceRequestType + +func init() { + t["UninstallService"] = reflect.TypeOf((*UninstallService)(nil)).Elem() +} + +type UninstallServiceRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id string `xml:"id"` +} + +func init() { + t["UninstallServiceRequestType"] = reflect.TypeOf((*UninstallServiceRequestType)(nil)).Elem() +} + +type UninstallServiceResponse struct { +} + +type UnlicensedVirtualMachinesEvent struct { + LicenseEvent + + Unlicensed int32 `xml:"unlicensed"` + Available int32 `xml:"available"` +} + +func init() { + t["UnlicensedVirtualMachinesEvent"] = reflect.TypeOf((*UnlicensedVirtualMachinesEvent)(nil)).Elem() +} + +type UnlicensedVirtualMachinesFoundEvent struct { + LicenseEvent + + Available int32 `xml:"available"` +} + +func init() { + t["UnlicensedVirtualMachinesFoundEvent"] = reflect.TypeOf((*UnlicensedVirtualMachinesFoundEvent)(nil)).Elem() +} + +type UnmapVmfsVolumeExRequestType struct { + This ManagedObjectReference `xml:"_this"` + VmfsUuid []string `xml:"vmfsUuid"` +} + +func init() { + t["UnmapVmfsVolumeExRequestType"] = reflect.TypeOf((*UnmapVmfsVolumeExRequestType)(nil)).Elem() +} + +type UnmapVmfsVolumeEx_Task UnmapVmfsVolumeExRequestType + +func init() { + t["UnmapVmfsVolumeEx_Task"] = reflect.TypeOf((*UnmapVmfsVolumeEx_Task)(nil)).Elem() +} + +type UnmapVmfsVolumeEx_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type UnmarkServiceProviderEntities UnmarkServiceProviderEntitiesRequestType + +func init() { + t["UnmarkServiceProviderEntities"] = reflect.TypeOf((*UnmarkServiceProviderEntities)(nil)).Elem() +} + +type UnmarkServiceProviderEntitiesRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity []ManagedObjectReference `xml:"entity,omitempty"` +} + +func init() { + t["UnmarkServiceProviderEntitiesRequestType"] = reflect.TypeOf((*UnmarkServiceProviderEntitiesRequestType)(nil)).Elem() +} + +type UnmarkServiceProviderEntitiesResponse struct { +} + +type UnmountDiskMappingRequestType struct { + This ManagedObjectReference `xml:"_this"` + Mapping []VsanHostDiskMapping `xml:"mapping"` +} + +func init() { + t["UnmountDiskMappingRequestType"] = reflect.TypeOf((*UnmountDiskMappingRequestType)(nil)).Elem() +} + +type UnmountDiskMapping_Task UnmountDiskMappingRequestType + +func init() { + t["UnmountDiskMapping_Task"] = reflect.TypeOf((*UnmountDiskMapping_Task)(nil)).Elem() +} + +type UnmountDiskMapping_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type UnmountForceMountedVmfsVolume UnmountForceMountedVmfsVolumeRequestType + +func init() { + t["UnmountForceMountedVmfsVolume"] = reflect.TypeOf((*UnmountForceMountedVmfsVolume)(nil)).Elem() +} + +type UnmountForceMountedVmfsVolumeRequestType struct { + This ManagedObjectReference `xml:"_this"` + VmfsUuid string `xml:"vmfsUuid"` +} + +func init() { + t["UnmountForceMountedVmfsVolumeRequestType"] = reflect.TypeOf((*UnmountForceMountedVmfsVolumeRequestType)(nil)).Elem() +} + +type UnmountForceMountedVmfsVolumeResponse struct { +} + +type UnmountToolsInstaller UnmountToolsInstallerRequestType + +func init() { + t["UnmountToolsInstaller"] = reflect.TypeOf((*UnmountToolsInstaller)(nil)).Elem() +} + +type UnmountToolsInstallerRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["UnmountToolsInstallerRequestType"] = reflect.TypeOf((*UnmountToolsInstallerRequestType)(nil)).Elem() +} + +type UnmountToolsInstallerResponse struct { +} + +type UnmountVffsVolume UnmountVffsVolumeRequestType + +func init() { + t["UnmountVffsVolume"] = reflect.TypeOf((*UnmountVffsVolume)(nil)).Elem() +} + +type UnmountVffsVolumeRequestType struct { + This ManagedObjectReference `xml:"_this"` + VffsUuid string `xml:"vffsUuid"` +} + +func init() { + t["UnmountVffsVolumeRequestType"] = reflect.TypeOf((*UnmountVffsVolumeRequestType)(nil)).Elem() +} + +type UnmountVffsVolumeResponse struct { +} + +type UnmountVmfsVolume UnmountVmfsVolumeRequestType + +func init() { + t["UnmountVmfsVolume"] = reflect.TypeOf((*UnmountVmfsVolume)(nil)).Elem() +} + +type UnmountVmfsVolumeExRequestType struct { + This ManagedObjectReference `xml:"_this"` + VmfsUuid []string `xml:"vmfsUuid"` +} + +func init() { + t["UnmountVmfsVolumeExRequestType"] = reflect.TypeOf((*UnmountVmfsVolumeExRequestType)(nil)).Elem() +} + +type UnmountVmfsVolumeEx_Task UnmountVmfsVolumeExRequestType + +func init() { + t["UnmountVmfsVolumeEx_Task"] = reflect.TypeOf((*UnmountVmfsVolumeEx_Task)(nil)).Elem() +} + +type UnmountVmfsVolumeEx_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type UnmountVmfsVolumeRequestType struct { + This ManagedObjectReference `xml:"_this"` + VmfsUuid string `xml:"vmfsUuid"` +} + +func init() { + t["UnmountVmfsVolumeRequestType"] = reflect.TypeOf((*UnmountVmfsVolumeRequestType)(nil)).Elem() +} + +type UnmountVmfsVolumeResponse struct { +} + +type UnrecognizedHost struct { + VimFault + + HostName string `xml:"hostName"` +} + +func init() { + t["UnrecognizedHost"] = reflect.TypeOf((*UnrecognizedHost)(nil)).Elem() +} + +type UnrecognizedHostFault UnrecognizedHost + +func init() { + t["UnrecognizedHostFault"] = reflect.TypeOf((*UnrecognizedHostFault)(nil)).Elem() +} + +type UnregisterAndDestroyRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["UnregisterAndDestroyRequestType"] = reflect.TypeOf((*UnregisterAndDestroyRequestType)(nil)).Elem() +} + +type UnregisterAndDestroy_Task UnregisterAndDestroyRequestType + +func init() { + t["UnregisterAndDestroy_Task"] = reflect.TypeOf((*UnregisterAndDestroy_Task)(nil)).Elem() +} + +type UnregisterAndDestroy_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type UnregisterExtension UnregisterExtensionRequestType + +func init() { + t["UnregisterExtension"] = reflect.TypeOf((*UnregisterExtension)(nil)).Elem() +} + +type UnregisterExtensionRequestType struct { + This ManagedObjectReference `xml:"_this"` + ExtensionKey string `xml:"extensionKey"` +} + +func init() { + t["UnregisterExtensionRequestType"] = reflect.TypeOf((*UnregisterExtensionRequestType)(nil)).Elem() +} + +type UnregisterExtensionResponse struct { +} + +type UnregisterHealthUpdateProvider UnregisterHealthUpdateProviderRequestType + +func init() { + t["UnregisterHealthUpdateProvider"] = reflect.TypeOf((*UnregisterHealthUpdateProvider)(nil)).Elem() +} + +type UnregisterHealthUpdateProviderRequestType struct { + This ManagedObjectReference `xml:"_this"` + ProviderId string `xml:"providerId"` +} + +func init() { + t["UnregisterHealthUpdateProviderRequestType"] = reflect.TypeOf((*UnregisterHealthUpdateProviderRequestType)(nil)).Elem() +} + +type UnregisterHealthUpdateProviderResponse struct { +} + +type UnregisterKmsCluster UnregisterKmsClusterRequestType + +func init() { + t["UnregisterKmsCluster"] = reflect.TypeOf((*UnregisterKmsCluster)(nil)).Elem() +} + +type UnregisterKmsClusterRequestType struct { + This ManagedObjectReference `xml:"_this"` + ClusterId KeyProviderId `xml:"clusterId"` +} + +func init() { + t["UnregisterKmsClusterRequestType"] = reflect.TypeOf((*UnregisterKmsClusterRequestType)(nil)).Elem() +} + +type UnregisterKmsClusterResponse struct { +} + +type UnregisterVM UnregisterVMRequestType + +func init() { + t["UnregisterVM"] = reflect.TypeOf((*UnregisterVM)(nil)).Elem() +} + +type UnregisterVMRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["UnregisterVMRequestType"] = reflect.TypeOf((*UnregisterVMRequestType)(nil)).Elem() +} + +type UnregisterVMResponse struct { +} + +type UnsharedSwapVMotionNotSupported struct { + MigrationFeatureNotSupported +} + +func init() { + t["UnsharedSwapVMotionNotSupported"] = reflect.TypeOf((*UnsharedSwapVMotionNotSupported)(nil)).Elem() +} + +type UnsharedSwapVMotionNotSupportedFault UnsharedSwapVMotionNotSupported + +func init() { + t["UnsharedSwapVMotionNotSupportedFault"] = reflect.TypeOf((*UnsharedSwapVMotionNotSupportedFault)(nil)).Elem() +} + +type UnsupportedDatastore struct { + VmConfigFault + + Datastore *ManagedObjectReference `xml:"datastore,omitempty"` +} + +func init() { + t["UnsupportedDatastore"] = reflect.TypeOf((*UnsupportedDatastore)(nil)).Elem() +} + +type UnsupportedDatastoreFault BaseUnsupportedDatastore + +func init() { + t["UnsupportedDatastoreFault"] = reflect.TypeOf((*UnsupportedDatastoreFault)(nil)).Elem() +} + +type UnsupportedGuest struct { + InvalidVmConfig + + UnsupportedGuestOS string `xml:"unsupportedGuestOS"` +} + +func init() { + t["UnsupportedGuest"] = reflect.TypeOf((*UnsupportedGuest)(nil)).Elem() +} + +type UnsupportedGuestFault UnsupportedGuest + +func init() { + t["UnsupportedGuestFault"] = reflect.TypeOf((*UnsupportedGuestFault)(nil)).Elem() +} + +type UnsupportedVimApiVersion struct { + VimFault + + Version string `xml:"version,omitempty"` +} + +func init() { + t["UnsupportedVimApiVersion"] = reflect.TypeOf((*UnsupportedVimApiVersion)(nil)).Elem() +} + +type UnsupportedVimApiVersionFault UnsupportedVimApiVersion + +func init() { + t["UnsupportedVimApiVersionFault"] = reflect.TypeOf((*UnsupportedVimApiVersionFault)(nil)).Elem() +} + +type UnsupportedVmxLocation struct { + VmConfigFault +} + +func init() { + t["UnsupportedVmxLocation"] = reflect.TypeOf((*UnsupportedVmxLocation)(nil)).Elem() +} + +type UnsupportedVmxLocationFault UnsupportedVmxLocation + +func init() { + t["UnsupportedVmxLocationFault"] = reflect.TypeOf((*UnsupportedVmxLocationFault)(nil)).Elem() +} + +type UnusedVirtualDiskBlocksNotScrubbed struct { + DeviceBackingNotSupported +} + +func init() { + t["UnusedVirtualDiskBlocksNotScrubbed"] = reflect.TypeOf((*UnusedVirtualDiskBlocksNotScrubbed)(nil)).Elem() +} + +type UnusedVirtualDiskBlocksNotScrubbedFault UnusedVirtualDiskBlocksNotScrubbed + +func init() { + t["UnusedVirtualDiskBlocksNotScrubbedFault"] = reflect.TypeOf((*UnusedVirtualDiskBlocksNotScrubbedFault)(nil)).Elem() +} + +type UpdateAnswerFileRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host ManagedObjectReference `xml:"host"` + ConfigSpec BaseAnswerFileCreateSpec `xml:"configSpec,typeattr"` +} + +func init() { + t["UpdateAnswerFileRequestType"] = reflect.TypeOf((*UpdateAnswerFileRequestType)(nil)).Elem() +} + +type UpdateAnswerFile_Task UpdateAnswerFileRequestType + +func init() { + t["UpdateAnswerFile_Task"] = reflect.TypeOf((*UpdateAnswerFile_Task)(nil)).Elem() +} + +type UpdateAnswerFile_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type UpdateAssignableHardwareConfig UpdateAssignableHardwareConfigRequestType + +func init() { + t["UpdateAssignableHardwareConfig"] = reflect.TypeOf((*UpdateAssignableHardwareConfig)(nil)).Elem() +} + +type UpdateAssignableHardwareConfigRequestType struct { + This ManagedObjectReference `xml:"_this"` + Config HostAssignableHardwareConfig `xml:"config"` +} + +func init() { + t["UpdateAssignableHardwareConfigRequestType"] = reflect.TypeOf((*UpdateAssignableHardwareConfigRequestType)(nil)).Elem() +} + +type UpdateAssignableHardwareConfigResponse struct { +} + +type UpdateAssignedLicense UpdateAssignedLicenseRequestType + +func init() { + t["UpdateAssignedLicense"] = reflect.TypeOf((*UpdateAssignedLicense)(nil)).Elem() +} + +type UpdateAssignedLicenseRequestType struct { + This ManagedObjectReference `xml:"_this"` + Entity string `xml:"entity"` + LicenseKey string `xml:"licenseKey"` + EntityDisplayName string `xml:"entityDisplayName,omitempty"` +} + +func init() { + t["UpdateAssignedLicenseRequestType"] = reflect.TypeOf((*UpdateAssignedLicenseRequestType)(nil)).Elem() +} + +type UpdateAssignedLicenseResponse struct { + Returnval LicenseManagerLicenseInfo `xml:"returnval"` +} + +type UpdateAuthorizationRole UpdateAuthorizationRoleRequestType + +func init() { + t["UpdateAuthorizationRole"] = reflect.TypeOf((*UpdateAuthorizationRole)(nil)).Elem() +} + +type UpdateAuthorizationRoleRequestType struct { + This ManagedObjectReference `xml:"_this"` + RoleId int32 `xml:"roleId"` + NewName string `xml:"newName"` + PrivIds []string `xml:"privIds,omitempty"` +} + +func init() { + t["UpdateAuthorizationRoleRequestType"] = reflect.TypeOf((*UpdateAuthorizationRoleRequestType)(nil)).Elem() +} + +type UpdateAuthorizationRoleResponse struct { +} + +type UpdateBootDevice UpdateBootDeviceRequestType + +func init() { + t["UpdateBootDevice"] = reflect.TypeOf((*UpdateBootDevice)(nil)).Elem() +} + +type UpdateBootDeviceRequestType struct { + This ManagedObjectReference `xml:"_this"` + Key string `xml:"key"` +} + +func init() { + t["UpdateBootDeviceRequestType"] = reflect.TypeOf((*UpdateBootDeviceRequestType)(nil)).Elem() +} + +type UpdateBootDeviceResponse struct { +} + +type UpdateChildResourceConfiguration UpdateChildResourceConfigurationRequestType + +func init() { + t["UpdateChildResourceConfiguration"] = reflect.TypeOf((*UpdateChildResourceConfiguration)(nil)).Elem() +} + +type UpdateChildResourceConfigurationRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec []ResourceConfigSpec `xml:"spec"` +} + +func init() { + t["UpdateChildResourceConfigurationRequestType"] = reflect.TypeOf((*UpdateChildResourceConfigurationRequestType)(nil)).Elem() +} + +type UpdateChildResourceConfigurationResponse struct { +} + +type UpdateClusterProfile UpdateClusterProfileRequestType + +func init() { + t["UpdateClusterProfile"] = reflect.TypeOf((*UpdateClusterProfile)(nil)).Elem() +} + +type UpdateClusterProfileRequestType struct { + This ManagedObjectReference `xml:"_this"` + Config BaseClusterProfileConfigSpec `xml:"config,typeattr"` +} + +func init() { + t["UpdateClusterProfileRequestType"] = reflect.TypeOf((*UpdateClusterProfileRequestType)(nil)).Elem() +} + +type UpdateClusterProfileResponse struct { +} + +type UpdateConfig UpdateConfigRequestType + +func init() { + t["UpdateConfig"] = reflect.TypeOf((*UpdateConfig)(nil)).Elem() +} + +type UpdateConfigRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name,omitempty"` + Config *ResourceConfigSpec `xml:"config,omitempty"` +} + +func init() { + t["UpdateConfigRequestType"] = reflect.TypeOf((*UpdateConfigRequestType)(nil)).Elem() +} + +type UpdateConfigResponse struct { +} + +type UpdateConsoleIpRouteConfig UpdateConsoleIpRouteConfigRequestType + +func init() { + t["UpdateConsoleIpRouteConfig"] = reflect.TypeOf((*UpdateConsoleIpRouteConfig)(nil)).Elem() +} + +type UpdateConsoleIpRouteConfigRequestType struct { + This ManagedObjectReference `xml:"_this"` + Config BaseHostIpRouteConfig `xml:"config,typeattr"` +} + +func init() { + t["UpdateConsoleIpRouteConfigRequestType"] = reflect.TypeOf((*UpdateConsoleIpRouteConfigRequestType)(nil)).Elem() +} + +type UpdateConsoleIpRouteConfigResponse struct { +} + +type UpdateCounterLevelMapping UpdateCounterLevelMappingRequestType + +func init() { + t["UpdateCounterLevelMapping"] = reflect.TypeOf((*UpdateCounterLevelMapping)(nil)).Elem() +} + +type UpdateCounterLevelMappingRequestType struct { + This ManagedObjectReference `xml:"_this"` + CounterLevelMap []PerformanceManagerCounterLevelMapping `xml:"counterLevelMap"` +} + +func init() { + t["UpdateCounterLevelMappingRequestType"] = reflect.TypeOf((*UpdateCounterLevelMappingRequestType)(nil)).Elem() +} + +type UpdateCounterLevelMappingResponse struct { +} + +type UpdateDVSHealthCheckConfigRequestType struct { + This ManagedObjectReference `xml:"_this"` + HealthCheckConfig []BaseDVSHealthCheckConfig `xml:"healthCheckConfig,typeattr"` +} + +func init() { + t["UpdateDVSHealthCheckConfigRequestType"] = reflect.TypeOf((*UpdateDVSHealthCheckConfigRequestType)(nil)).Elem() +} + +type UpdateDVSHealthCheckConfig_Task UpdateDVSHealthCheckConfigRequestType + +func init() { + t["UpdateDVSHealthCheckConfig_Task"] = reflect.TypeOf((*UpdateDVSHealthCheckConfig_Task)(nil)).Elem() +} + +type UpdateDVSHealthCheckConfig_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type UpdateDVSLacpGroupConfigRequestType struct { + This ManagedObjectReference `xml:"_this"` + LacpGroupSpec []VMwareDvsLacpGroupSpec `xml:"lacpGroupSpec"` +} + +func init() { + t["UpdateDVSLacpGroupConfigRequestType"] = reflect.TypeOf((*UpdateDVSLacpGroupConfigRequestType)(nil)).Elem() +} + +type UpdateDVSLacpGroupConfig_Task UpdateDVSLacpGroupConfigRequestType + +func init() { + t["UpdateDVSLacpGroupConfig_Task"] = reflect.TypeOf((*UpdateDVSLacpGroupConfig_Task)(nil)).Elem() +} + +type UpdateDVSLacpGroupConfig_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type UpdateDateTime UpdateDateTimeRequestType + +func init() { + t["UpdateDateTime"] = reflect.TypeOf((*UpdateDateTime)(nil)).Elem() +} + +type UpdateDateTimeConfig UpdateDateTimeConfigRequestType + +func init() { + t["UpdateDateTimeConfig"] = reflect.TypeOf((*UpdateDateTimeConfig)(nil)).Elem() +} + +type UpdateDateTimeConfigRequestType struct { + This ManagedObjectReference `xml:"_this"` + Config HostDateTimeConfig `xml:"config"` +} + +func init() { + t["UpdateDateTimeConfigRequestType"] = reflect.TypeOf((*UpdateDateTimeConfigRequestType)(nil)).Elem() +} + +type UpdateDateTimeConfigResponse struct { +} + +type UpdateDateTimeRequestType struct { + This ManagedObjectReference `xml:"_this"` + DateTime time.Time `xml:"dateTime"` +} + +func init() { + t["UpdateDateTimeRequestType"] = reflect.TypeOf((*UpdateDateTimeRequestType)(nil)).Elem() +} + +type UpdateDateTimeResponse struct { +} + +type UpdateDefaultPolicy UpdateDefaultPolicyRequestType + +func init() { + t["UpdateDefaultPolicy"] = reflect.TypeOf((*UpdateDefaultPolicy)(nil)).Elem() +} + +type UpdateDefaultPolicyRequestType struct { + This ManagedObjectReference `xml:"_this"` + DefaultPolicy HostFirewallDefaultPolicy `xml:"defaultPolicy"` +} + +func init() { + t["UpdateDefaultPolicyRequestType"] = reflect.TypeOf((*UpdateDefaultPolicyRequestType)(nil)).Elem() +} + +type UpdateDefaultPolicyResponse struct { +} + +type UpdateDiskPartitions UpdateDiskPartitionsRequestType + +func init() { + t["UpdateDiskPartitions"] = reflect.TypeOf((*UpdateDiskPartitions)(nil)).Elem() +} + +type UpdateDiskPartitionsRequestType struct { + This ManagedObjectReference `xml:"_this"` + DevicePath string `xml:"devicePath"` + Spec HostDiskPartitionSpec `xml:"spec"` +} + +func init() { + t["UpdateDiskPartitionsRequestType"] = reflect.TypeOf((*UpdateDiskPartitionsRequestType)(nil)).Elem() +} + +type UpdateDiskPartitionsResponse struct { +} + +type UpdateDnsConfig UpdateDnsConfigRequestType + +func init() { + t["UpdateDnsConfig"] = reflect.TypeOf((*UpdateDnsConfig)(nil)).Elem() +} + +type UpdateDnsConfigRequestType struct { + This ManagedObjectReference `xml:"_this"` + Config BaseHostDnsConfig `xml:"config,typeattr"` +} + +func init() { + t["UpdateDnsConfigRequestType"] = reflect.TypeOf((*UpdateDnsConfigRequestType)(nil)).Elem() +} + +type UpdateDnsConfigResponse struct { +} + +type UpdateDvsCapability UpdateDvsCapabilityRequestType + +func init() { + t["UpdateDvsCapability"] = reflect.TypeOf((*UpdateDvsCapability)(nil)).Elem() +} + +type UpdateDvsCapabilityRequestType struct { + This ManagedObjectReference `xml:"_this"` + Capability DVSCapability `xml:"capability"` +} + +func init() { + t["UpdateDvsCapabilityRequestType"] = reflect.TypeOf((*UpdateDvsCapabilityRequestType)(nil)).Elem() +} + +type UpdateDvsCapabilityResponse struct { +} + +type UpdateExtension UpdateExtensionRequestType + +func init() { + t["UpdateExtension"] = reflect.TypeOf((*UpdateExtension)(nil)).Elem() +} + +type UpdateExtensionRequestType struct { + This ManagedObjectReference `xml:"_this"` + Extension Extension `xml:"extension"` +} + +func init() { + t["UpdateExtensionRequestType"] = reflect.TypeOf((*UpdateExtensionRequestType)(nil)).Elem() +} + +type UpdateExtensionResponse struct { +} + +type UpdateFlags UpdateFlagsRequestType + +func init() { + t["UpdateFlags"] = reflect.TypeOf((*UpdateFlags)(nil)).Elem() +} + +type UpdateFlagsRequestType struct { + This ManagedObjectReference `xml:"_this"` + FlagInfo HostFlagInfo `xml:"flagInfo"` +} + +func init() { + t["UpdateFlagsRequestType"] = reflect.TypeOf((*UpdateFlagsRequestType)(nil)).Elem() +} + +type UpdateFlagsResponse struct { +} + +type UpdateGraphicsConfig UpdateGraphicsConfigRequestType + +func init() { + t["UpdateGraphicsConfig"] = reflect.TypeOf((*UpdateGraphicsConfig)(nil)).Elem() +} + +type UpdateGraphicsConfigRequestType struct { + This ManagedObjectReference `xml:"_this"` + Config HostGraphicsConfig `xml:"config"` +} + +func init() { + t["UpdateGraphicsConfigRequestType"] = reflect.TypeOf((*UpdateGraphicsConfigRequestType)(nil)).Elem() +} + +type UpdateGraphicsConfigResponse struct { +} + +type UpdateHostCustomizationsRequestType struct { + This ManagedObjectReference `xml:"_this"` + HostToConfigSpecMap []HostProfileManagerHostToConfigSpecMap `xml:"hostToConfigSpecMap,omitempty"` +} + +func init() { + t["UpdateHostCustomizationsRequestType"] = reflect.TypeOf((*UpdateHostCustomizationsRequestType)(nil)).Elem() +} + +type UpdateHostCustomizations_Task UpdateHostCustomizationsRequestType + +func init() { + t["UpdateHostCustomizations_Task"] = reflect.TypeOf((*UpdateHostCustomizations_Task)(nil)).Elem() +} + +type UpdateHostCustomizations_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type UpdateHostImageAcceptanceLevel UpdateHostImageAcceptanceLevelRequestType + +func init() { + t["UpdateHostImageAcceptanceLevel"] = reflect.TypeOf((*UpdateHostImageAcceptanceLevel)(nil)).Elem() +} + +type UpdateHostImageAcceptanceLevelRequestType struct { + This ManagedObjectReference `xml:"_this"` + NewAcceptanceLevel string `xml:"newAcceptanceLevel"` +} + +func init() { + t["UpdateHostImageAcceptanceLevelRequestType"] = reflect.TypeOf((*UpdateHostImageAcceptanceLevelRequestType)(nil)).Elem() +} + +type UpdateHostImageAcceptanceLevelResponse struct { +} + +type UpdateHostProfile UpdateHostProfileRequestType + +func init() { + t["UpdateHostProfile"] = reflect.TypeOf((*UpdateHostProfile)(nil)).Elem() +} + +type UpdateHostProfileRequestType struct { + This ManagedObjectReference `xml:"_this"` + Config BaseHostProfileConfigSpec `xml:"config,typeattr"` +} + +func init() { + t["UpdateHostProfileRequestType"] = reflect.TypeOf((*UpdateHostProfileRequestType)(nil)).Elem() +} + +type UpdateHostProfileResponse struct { +} + +type UpdateHostSpecification UpdateHostSpecificationRequestType + +func init() { + t["UpdateHostSpecification"] = reflect.TypeOf((*UpdateHostSpecification)(nil)).Elem() +} + +type UpdateHostSpecificationRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host ManagedObjectReference `xml:"host"` + HostSpec HostSpecification `xml:"hostSpec"` +} + +func init() { + t["UpdateHostSpecificationRequestType"] = reflect.TypeOf((*UpdateHostSpecificationRequestType)(nil)).Elem() +} + +type UpdateHostSpecificationResponse struct { +} + +type UpdateHostSubSpecification UpdateHostSubSpecificationRequestType + +func init() { + t["UpdateHostSubSpecification"] = reflect.TypeOf((*UpdateHostSubSpecification)(nil)).Elem() +} + +type UpdateHostSubSpecificationRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host ManagedObjectReference `xml:"host"` + HostSubSpec HostSubSpecification `xml:"hostSubSpec"` +} + +func init() { + t["UpdateHostSubSpecificationRequestType"] = reflect.TypeOf((*UpdateHostSubSpecificationRequestType)(nil)).Elem() +} + +type UpdateHostSubSpecificationResponse struct { +} + +type UpdateHppMultipathLunPolicy UpdateHppMultipathLunPolicyRequestType + +func init() { + t["UpdateHppMultipathLunPolicy"] = reflect.TypeOf((*UpdateHppMultipathLunPolicy)(nil)).Elem() +} + +type UpdateHppMultipathLunPolicyRequestType struct { + This ManagedObjectReference `xml:"_this"` + LunId string `xml:"lunId"` + Policy HostMultipathInfoHppLogicalUnitPolicy `xml:"policy"` +} + +func init() { + t["UpdateHppMultipathLunPolicyRequestType"] = reflect.TypeOf((*UpdateHppMultipathLunPolicyRequestType)(nil)).Elem() +} + +type UpdateHppMultipathLunPolicyResponse struct { +} + +type UpdateInternetScsiAdvancedOptions UpdateInternetScsiAdvancedOptionsRequestType + +func init() { + t["UpdateInternetScsiAdvancedOptions"] = reflect.TypeOf((*UpdateInternetScsiAdvancedOptions)(nil)).Elem() +} + +type UpdateInternetScsiAdvancedOptionsRequestType struct { + This ManagedObjectReference `xml:"_this"` + IScsiHbaDevice string `xml:"iScsiHbaDevice"` + TargetSet *HostInternetScsiHbaTargetSet `xml:"targetSet,omitempty"` + Options []HostInternetScsiHbaParamValue `xml:"options"` +} + +func init() { + t["UpdateInternetScsiAdvancedOptionsRequestType"] = reflect.TypeOf((*UpdateInternetScsiAdvancedOptionsRequestType)(nil)).Elem() +} + +type UpdateInternetScsiAdvancedOptionsResponse struct { +} + +type UpdateInternetScsiAlias UpdateInternetScsiAliasRequestType + +func init() { + t["UpdateInternetScsiAlias"] = reflect.TypeOf((*UpdateInternetScsiAlias)(nil)).Elem() +} + +type UpdateInternetScsiAliasRequestType struct { + This ManagedObjectReference `xml:"_this"` + IScsiHbaDevice string `xml:"iScsiHbaDevice"` + IScsiAlias string `xml:"iScsiAlias"` +} + +func init() { + t["UpdateInternetScsiAliasRequestType"] = reflect.TypeOf((*UpdateInternetScsiAliasRequestType)(nil)).Elem() +} + +type UpdateInternetScsiAliasResponse struct { +} + +type UpdateInternetScsiAuthenticationProperties UpdateInternetScsiAuthenticationPropertiesRequestType + +func init() { + t["UpdateInternetScsiAuthenticationProperties"] = reflect.TypeOf((*UpdateInternetScsiAuthenticationProperties)(nil)).Elem() +} + +type UpdateInternetScsiAuthenticationPropertiesRequestType struct { + This ManagedObjectReference `xml:"_this"` + IScsiHbaDevice string `xml:"iScsiHbaDevice"` + AuthenticationProperties HostInternetScsiHbaAuthenticationProperties `xml:"authenticationProperties"` + TargetSet *HostInternetScsiHbaTargetSet `xml:"targetSet,omitempty"` +} + +func init() { + t["UpdateInternetScsiAuthenticationPropertiesRequestType"] = reflect.TypeOf((*UpdateInternetScsiAuthenticationPropertiesRequestType)(nil)).Elem() +} + +type UpdateInternetScsiAuthenticationPropertiesResponse struct { +} + +type UpdateInternetScsiDigestProperties UpdateInternetScsiDigestPropertiesRequestType + +func init() { + t["UpdateInternetScsiDigestProperties"] = reflect.TypeOf((*UpdateInternetScsiDigestProperties)(nil)).Elem() +} + +type UpdateInternetScsiDigestPropertiesRequestType struct { + This ManagedObjectReference `xml:"_this"` + IScsiHbaDevice string `xml:"iScsiHbaDevice"` + TargetSet *HostInternetScsiHbaTargetSet `xml:"targetSet,omitempty"` + DigestProperties HostInternetScsiHbaDigestProperties `xml:"digestProperties"` +} + +func init() { + t["UpdateInternetScsiDigestPropertiesRequestType"] = reflect.TypeOf((*UpdateInternetScsiDigestPropertiesRequestType)(nil)).Elem() +} + +type UpdateInternetScsiDigestPropertiesResponse struct { +} + +type UpdateInternetScsiDiscoveryProperties UpdateInternetScsiDiscoveryPropertiesRequestType + +func init() { + t["UpdateInternetScsiDiscoveryProperties"] = reflect.TypeOf((*UpdateInternetScsiDiscoveryProperties)(nil)).Elem() +} + +type UpdateInternetScsiDiscoveryPropertiesRequestType struct { + This ManagedObjectReference `xml:"_this"` + IScsiHbaDevice string `xml:"iScsiHbaDevice"` + DiscoveryProperties HostInternetScsiHbaDiscoveryProperties `xml:"discoveryProperties"` +} + +func init() { + t["UpdateInternetScsiDiscoveryPropertiesRequestType"] = reflect.TypeOf((*UpdateInternetScsiDiscoveryPropertiesRequestType)(nil)).Elem() +} + +type UpdateInternetScsiDiscoveryPropertiesResponse struct { +} + +type UpdateInternetScsiIPProperties UpdateInternetScsiIPPropertiesRequestType + +func init() { + t["UpdateInternetScsiIPProperties"] = reflect.TypeOf((*UpdateInternetScsiIPProperties)(nil)).Elem() +} + +type UpdateInternetScsiIPPropertiesRequestType struct { + This ManagedObjectReference `xml:"_this"` + IScsiHbaDevice string `xml:"iScsiHbaDevice"` + IpProperties HostInternetScsiHbaIPProperties `xml:"ipProperties"` +} + +func init() { + t["UpdateInternetScsiIPPropertiesRequestType"] = reflect.TypeOf((*UpdateInternetScsiIPPropertiesRequestType)(nil)).Elem() +} + +type UpdateInternetScsiIPPropertiesResponse struct { +} + +type UpdateInternetScsiName UpdateInternetScsiNameRequestType + +func init() { + t["UpdateInternetScsiName"] = reflect.TypeOf((*UpdateInternetScsiName)(nil)).Elem() +} + +type UpdateInternetScsiNameRequestType struct { + This ManagedObjectReference `xml:"_this"` + IScsiHbaDevice string `xml:"iScsiHbaDevice"` + IScsiName string `xml:"iScsiName"` +} + +func init() { + t["UpdateInternetScsiNameRequestType"] = reflect.TypeOf((*UpdateInternetScsiNameRequestType)(nil)).Elem() +} + +type UpdateInternetScsiNameResponse struct { +} + +type UpdateIpConfig UpdateIpConfigRequestType + +func init() { + t["UpdateIpConfig"] = reflect.TypeOf((*UpdateIpConfig)(nil)).Elem() +} + +type UpdateIpConfigRequestType struct { + This ManagedObjectReference `xml:"_this"` + IpConfig HostIpConfig `xml:"ipConfig"` +} + +func init() { + t["UpdateIpConfigRequestType"] = reflect.TypeOf((*UpdateIpConfigRequestType)(nil)).Elem() +} + +type UpdateIpConfigResponse struct { +} + +type UpdateIpPool UpdateIpPoolRequestType + +func init() { + t["UpdateIpPool"] = reflect.TypeOf((*UpdateIpPool)(nil)).Elem() +} + +type UpdateIpPoolRequestType struct { + This ManagedObjectReference `xml:"_this"` + Dc ManagedObjectReference `xml:"dc"` + Pool IpPool `xml:"pool"` +} + +func init() { + t["UpdateIpPoolRequestType"] = reflect.TypeOf((*UpdateIpPoolRequestType)(nil)).Elem() +} + +type UpdateIpPoolResponse struct { +} + +type UpdateIpRouteConfig UpdateIpRouteConfigRequestType + +func init() { + t["UpdateIpRouteConfig"] = reflect.TypeOf((*UpdateIpRouteConfig)(nil)).Elem() +} + +type UpdateIpRouteConfigRequestType struct { + This ManagedObjectReference `xml:"_this"` + Config BaseHostIpRouteConfig `xml:"config,typeattr"` +} + +func init() { + t["UpdateIpRouteConfigRequestType"] = reflect.TypeOf((*UpdateIpRouteConfigRequestType)(nil)).Elem() +} + +type UpdateIpRouteConfigResponse struct { +} + +type UpdateIpRouteTableConfig UpdateIpRouteTableConfigRequestType + +func init() { + t["UpdateIpRouteTableConfig"] = reflect.TypeOf((*UpdateIpRouteTableConfig)(nil)).Elem() +} + +type UpdateIpRouteTableConfigRequestType struct { + This ManagedObjectReference `xml:"_this"` + Config HostIpRouteTableConfig `xml:"config"` +} + +func init() { + t["UpdateIpRouteTableConfigRequestType"] = reflect.TypeOf((*UpdateIpRouteTableConfigRequestType)(nil)).Elem() +} + +type UpdateIpRouteTableConfigResponse struct { +} + +type UpdateIpmi UpdateIpmiRequestType + +func init() { + t["UpdateIpmi"] = reflect.TypeOf((*UpdateIpmi)(nil)).Elem() +} + +type UpdateIpmiRequestType struct { + This ManagedObjectReference `xml:"_this"` + IpmiInfo HostIpmiInfo `xml:"ipmiInfo"` +} + +func init() { + t["UpdateIpmiRequestType"] = reflect.TypeOf((*UpdateIpmiRequestType)(nil)).Elem() +} + +type UpdateIpmiResponse struct { +} + +type UpdateKmipServer UpdateKmipServerRequestType + +func init() { + t["UpdateKmipServer"] = reflect.TypeOf((*UpdateKmipServer)(nil)).Elem() +} + +type UpdateKmipServerRequestType struct { + This ManagedObjectReference `xml:"_this"` + Server KmipServerSpec `xml:"server"` +} + +func init() { + t["UpdateKmipServerRequestType"] = reflect.TypeOf((*UpdateKmipServerRequestType)(nil)).Elem() +} + +type UpdateKmipServerResponse struct { +} + +type UpdateKmsSignedCsrClientCert UpdateKmsSignedCsrClientCertRequestType + +func init() { + t["UpdateKmsSignedCsrClientCert"] = reflect.TypeOf((*UpdateKmsSignedCsrClientCert)(nil)).Elem() +} + +type UpdateKmsSignedCsrClientCertRequestType struct { + This ManagedObjectReference `xml:"_this"` + Cluster KeyProviderId `xml:"cluster"` + Certificate string `xml:"certificate"` +} + +func init() { + t["UpdateKmsSignedCsrClientCertRequestType"] = reflect.TypeOf((*UpdateKmsSignedCsrClientCertRequestType)(nil)).Elem() +} + +type UpdateKmsSignedCsrClientCertResponse struct { +} + +type UpdateLicense UpdateLicenseRequestType + +func init() { + t["UpdateLicense"] = reflect.TypeOf((*UpdateLicense)(nil)).Elem() +} + +type UpdateLicenseLabel UpdateLicenseLabelRequestType + +func init() { + t["UpdateLicenseLabel"] = reflect.TypeOf((*UpdateLicenseLabel)(nil)).Elem() +} + +type UpdateLicenseLabelRequestType struct { + This ManagedObjectReference `xml:"_this"` + LicenseKey string `xml:"licenseKey"` + LabelKey string `xml:"labelKey"` + LabelValue string `xml:"labelValue"` +} + +func init() { + t["UpdateLicenseLabelRequestType"] = reflect.TypeOf((*UpdateLicenseLabelRequestType)(nil)).Elem() +} + +type UpdateLicenseLabelResponse struct { +} + +type UpdateLicenseRequestType struct { + This ManagedObjectReference `xml:"_this"` + LicenseKey string `xml:"licenseKey"` + Labels []KeyValue `xml:"labels,omitempty"` +} + +func init() { + t["UpdateLicenseRequestType"] = reflect.TypeOf((*UpdateLicenseRequestType)(nil)).Elem() +} + +type UpdateLicenseResponse struct { + Returnval LicenseManagerLicenseInfo `xml:"returnval"` +} + +type UpdateLinkedChildren UpdateLinkedChildrenRequestType + +func init() { + t["UpdateLinkedChildren"] = reflect.TypeOf((*UpdateLinkedChildren)(nil)).Elem() +} + +type UpdateLinkedChildrenRequestType struct { + This ManagedObjectReference `xml:"_this"` + AddChangeSet []VirtualAppLinkInfo `xml:"addChangeSet,omitempty"` + RemoveSet []ManagedObjectReference `xml:"removeSet,omitempty"` +} + +func init() { + t["UpdateLinkedChildrenRequestType"] = reflect.TypeOf((*UpdateLinkedChildrenRequestType)(nil)).Elem() +} + +type UpdateLinkedChildrenResponse struct { +} + +type UpdateLocalSwapDatastore UpdateLocalSwapDatastoreRequestType + +func init() { + t["UpdateLocalSwapDatastore"] = reflect.TypeOf((*UpdateLocalSwapDatastore)(nil)).Elem() +} + +type UpdateLocalSwapDatastoreRequestType struct { + This ManagedObjectReference `xml:"_this"` + Datastore *ManagedObjectReference `xml:"datastore,omitempty"` +} + +func init() { + t["UpdateLocalSwapDatastoreRequestType"] = reflect.TypeOf((*UpdateLocalSwapDatastoreRequestType)(nil)).Elem() +} + +type UpdateLocalSwapDatastoreResponse struct { +} + +type UpdateLockdownExceptions UpdateLockdownExceptionsRequestType + +func init() { + t["UpdateLockdownExceptions"] = reflect.TypeOf((*UpdateLockdownExceptions)(nil)).Elem() +} + +type UpdateLockdownExceptionsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Users []string `xml:"users,omitempty"` +} + +func init() { + t["UpdateLockdownExceptionsRequestType"] = reflect.TypeOf((*UpdateLockdownExceptionsRequestType)(nil)).Elem() +} + +type UpdateLockdownExceptionsResponse struct { +} + +type UpdateModuleOptionString UpdateModuleOptionStringRequestType + +func init() { + t["UpdateModuleOptionString"] = reflect.TypeOf((*UpdateModuleOptionString)(nil)).Elem() +} + +type UpdateModuleOptionStringRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + Options string `xml:"options"` +} + +func init() { + t["UpdateModuleOptionStringRequestType"] = reflect.TypeOf((*UpdateModuleOptionStringRequestType)(nil)).Elem() +} + +type UpdateModuleOptionStringResponse struct { +} + +type UpdateNetworkConfig UpdateNetworkConfigRequestType + +func init() { + t["UpdateNetworkConfig"] = reflect.TypeOf((*UpdateNetworkConfig)(nil)).Elem() +} + +type UpdateNetworkConfigRequestType struct { + This ManagedObjectReference `xml:"_this"` + Config HostNetworkConfig `xml:"config"` + ChangeMode string `xml:"changeMode"` +} + +func init() { + t["UpdateNetworkConfigRequestType"] = reflect.TypeOf((*UpdateNetworkConfigRequestType)(nil)).Elem() +} + +type UpdateNetworkConfigResponse struct { + Returnval HostNetworkConfigResult `xml:"returnval"` +} + +type UpdateNetworkResourcePool UpdateNetworkResourcePoolRequestType + +func init() { + t["UpdateNetworkResourcePool"] = reflect.TypeOf((*UpdateNetworkResourcePool)(nil)).Elem() +} + +type UpdateNetworkResourcePoolRequestType struct { + This ManagedObjectReference `xml:"_this"` + ConfigSpec []DVSNetworkResourcePoolConfigSpec `xml:"configSpec"` +} + +func init() { + t["UpdateNetworkResourcePoolRequestType"] = reflect.TypeOf((*UpdateNetworkResourcePoolRequestType)(nil)).Elem() +} + +type UpdateNetworkResourcePoolResponse struct { +} + +type UpdateOptions UpdateOptionsRequestType + +func init() { + t["UpdateOptions"] = reflect.TypeOf((*UpdateOptions)(nil)).Elem() +} + +type UpdateOptionsRequestType struct { + This ManagedObjectReference `xml:"_this"` + ChangedValue []BaseOptionValue `xml:"changedValue,typeattr"` +} + +func init() { + t["UpdateOptionsRequestType"] = reflect.TypeOf((*UpdateOptionsRequestType)(nil)).Elem() +} + +type UpdateOptionsResponse struct { +} + +type UpdatePassthruConfig UpdatePassthruConfigRequestType + +func init() { + t["UpdatePassthruConfig"] = reflect.TypeOf((*UpdatePassthruConfig)(nil)).Elem() +} + +type UpdatePassthruConfigRequestType struct { + This ManagedObjectReference `xml:"_this"` + Config []BaseHostPciPassthruConfig `xml:"config,typeattr"` +} + +func init() { + t["UpdatePassthruConfigRequestType"] = reflect.TypeOf((*UpdatePassthruConfigRequestType)(nil)).Elem() +} + +type UpdatePassthruConfigResponse struct { +} + +type UpdatePerfInterval UpdatePerfIntervalRequestType + +func init() { + t["UpdatePerfInterval"] = reflect.TypeOf((*UpdatePerfInterval)(nil)).Elem() +} + +type UpdatePerfIntervalRequestType struct { + This ManagedObjectReference `xml:"_this"` + Interval PerfInterval `xml:"interval"` +} + +func init() { + t["UpdatePerfIntervalRequestType"] = reflect.TypeOf((*UpdatePerfIntervalRequestType)(nil)).Elem() +} + +type UpdatePerfIntervalResponse struct { +} + +type UpdatePhysicalNicLinkSpeed UpdatePhysicalNicLinkSpeedRequestType + +func init() { + t["UpdatePhysicalNicLinkSpeed"] = reflect.TypeOf((*UpdatePhysicalNicLinkSpeed)(nil)).Elem() +} + +type UpdatePhysicalNicLinkSpeedRequestType struct { + This ManagedObjectReference `xml:"_this"` + Device string `xml:"device"` + LinkSpeed *PhysicalNicLinkInfo `xml:"linkSpeed,omitempty"` +} + +func init() { + t["UpdatePhysicalNicLinkSpeedRequestType"] = reflect.TypeOf((*UpdatePhysicalNicLinkSpeedRequestType)(nil)).Elem() +} + +type UpdatePhysicalNicLinkSpeedResponse struct { +} + +type UpdatePortGroup UpdatePortGroupRequestType + +func init() { + t["UpdatePortGroup"] = reflect.TypeOf((*UpdatePortGroup)(nil)).Elem() +} + +type UpdatePortGroupRequestType struct { + This ManagedObjectReference `xml:"_this"` + PgName string `xml:"pgName"` + Portgrp HostPortGroupSpec `xml:"portgrp"` +} + +func init() { + t["UpdatePortGroupRequestType"] = reflect.TypeOf((*UpdatePortGroupRequestType)(nil)).Elem() +} + +type UpdatePortGroupResponse struct { +} + +type UpdateProductLockerLocationRequestType struct { + This ManagedObjectReference `xml:"_this"` + Path string `xml:"path"` +} + +func init() { + t["UpdateProductLockerLocationRequestType"] = reflect.TypeOf((*UpdateProductLockerLocationRequestType)(nil)).Elem() +} + +type UpdateProductLockerLocation_Task UpdateProductLockerLocationRequestType + +func init() { + t["UpdateProductLockerLocation_Task"] = reflect.TypeOf((*UpdateProductLockerLocation_Task)(nil)).Elem() +} + +type UpdateProductLockerLocation_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type UpdateProgress UpdateProgressRequestType + +func init() { + t["UpdateProgress"] = reflect.TypeOf((*UpdateProgress)(nil)).Elem() +} + +type UpdateProgressRequestType struct { + This ManagedObjectReference `xml:"_this"` + PercentDone int32 `xml:"percentDone"` +} + +func init() { + t["UpdateProgressRequestType"] = reflect.TypeOf((*UpdateProgressRequestType)(nil)).Elem() +} + +type UpdateProgressResponse struct { +} + +type UpdateReferenceHost UpdateReferenceHostRequestType + +func init() { + t["UpdateReferenceHost"] = reflect.TypeOf((*UpdateReferenceHost)(nil)).Elem() +} + +type UpdateReferenceHostRequestType struct { + This ManagedObjectReference `xml:"_this"` + Host *ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["UpdateReferenceHostRequestType"] = reflect.TypeOf((*UpdateReferenceHostRequestType)(nil)).Elem() +} + +type UpdateReferenceHostResponse struct { +} + +type UpdateRuleset UpdateRulesetRequestType + +func init() { + t["UpdateRuleset"] = reflect.TypeOf((*UpdateRuleset)(nil)).Elem() +} + +type UpdateRulesetRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id string `xml:"id"` + Spec HostFirewallRulesetRulesetSpec `xml:"spec"` +} + +func init() { + t["UpdateRulesetRequestType"] = reflect.TypeOf((*UpdateRulesetRequestType)(nil)).Elem() +} + +type UpdateRulesetResponse struct { +} + +type UpdateScsiLunDisplayName UpdateScsiLunDisplayNameRequestType + +func init() { + t["UpdateScsiLunDisplayName"] = reflect.TypeOf((*UpdateScsiLunDisplayName)(nil)).Elem() +} + +type UpdateScsiLunDisplayNameRequestType struct { + This ManagedObjectReference `xml:"_this"` + LunUuid string `xml:"lunUuid"` + DisplayName string `xml:"displayName"` +} + +func init() { + t["UpdateScsiLunDisplayNameRequestType"] = reflect.TypeOf((*UpdateScsiLunDisplayNameRequestType)(nil)).Elem() +} + +type UpdateScsiLunDisplayNameResponse struct { +} + +type UpdateSelfSignedClientCert UpdateSelfSignedClientCertRequestType + +func init() { + t["UpdateSelfSignedClientCert"] = reflect.TypeOf((*UpdateSelfSignedClientCert)(nil)).Elem() +} + +type UpdateSelfSignedClientCertRequestType struct { + This ManagedObjectReference `xml:"_this"` + Cluster KeyProviderId `xml:"cluster"` + Certificate string `xml:"certificate"` +} + +func init() { + t["UpdateSelfSignedClientCertRequestType"] = reflect.TypeOf((*UpdateSelfSignedClientCertRequestType)(nil)).Elem() +} + +type UpdateSelfSignedClientCertResponse struct { +} + +type UpdateServiceConsoleVirtualNic UpdateServiceConsoleVirtualNicRequestType + +func init() { + t["UpdateServiceConsoleVirtualNic"] = reflect.TypeOf((*UpdateServiceConsoleVirtualNic)(nil)).Elem() +} + +type UpdateServiceConsoleVirtualNicRequestType struct { + This ManagedObjectReference `xml:"_this"` + Device string `xml:"device"` + Nic HostVirtualNicSpec `xml:"nic"` +} + +func init() { + t["UpdateServiceConsoleVirtualNicRequestType"] = reflect.TypeOf((*UpdateServiceConsoleVirtualNicRequestType)(nil)).Elem() +} + +type UpdateServiceConsoleVirtualNicResponse struct { +} + +type UpdateServiceMessage UpdateServiceMessageRequestType + +func init() { + t["UpdateServiceMessage"] = reflect.TypeOf((*UpdateServiceMessage)(nil)).Elem() +} + +type UpdateServiceMessageRequestType struct { + This ManagedObjectReference `xml:"_this"` + Message string `xml:"message"` +} + +func init() { + t["UpdateServiceMessageRequestType"] = reflect.TypeOf((*UpdateServiceMessageRequestType)(nil)).Elem() +} + +type UpdateServiceMessageResponse struct { +} + +type UpdateServicePolicy UpdateServicePolicyRequestType + +func init() { + t["UpdateServicePolicy"] = reflect.TypeOf((*UpdateServicePolicy)(nil)).Elem() +} + +type UpdateServicePolicyRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id string `xml:"id"` + Policy string `xml:"policy"` +} + +func init() { + t["UpdateServicePolicyRequestType"] = reflect.TypeOf((*UpdateServicePolicyRequestType)(nil)).Elem() +} + +type UpdateServicePolicyResponse struct { +} + +type UpdateSet struct { + DynamicData + + Version string `xml:"version"` + FilterSet []PropertyFilterUpdate `xml:"filterSet,omitempty"` + Truncated *bool `xml:"truncated"` +} + +func init() { + t["UpdateSet"] = reflect.TypeOf((*UpdateSet)(nil)).Elem() +} + +type UpdateSoftwareInternetScsiEnabled UpdateSoftwareInternetScsiEnabledRequestType + +func init() { + t["UpdateSoftwareInternetScsiEnabled"] = reflect.TypeOf((*UpdateSoftwareInternetScsiEnabled)(nil)).Elem() +} + +type UpdateSoftwareInternetScsiEnabledRequestType struct { + This ManagedObjectReference `xml:"_this"` + Enabled bool `xml:"enabled"` +} + +func init() { + t["UpdateSoftwareInternetScsiEnabledRequestType"] = reflect.TypeOf((*UpdateSoftwareInternetScsiEnabledRequestType)(nil)).Elem() +} + +type UpdateSoftwareInternetScsiEnabledResponse struct { +} + +type UpdateSystemResources UpdateSystemResourcesRequestType + +func init() { + t["UpdateSystemResources"] = reflect.TypeOf((*UpdateSystemResources)(nil)).Elem() +} + +type UpdateSystemResourcesRequestType struct { + This ManagedObjectReference `xml:"_this"` + ResourceInfo HostSystemResourceInfo `xml:"resourceInfo"` +} + +func init() { + t["UpdateSystemResourcesRequestType"] = reflect.TypeOf((*UpdateSystemResourcesRequestType)(nil)).Elem() +} + +type UpdateSystemResourcesResponse struct { +} + +type UpdateSystemSwapConfiguration UpdateSystemSwapConfigurationRequestType + +func init() { + t["UpdateSystemSwapConfiguration"] = reflect.TypeOf((*UpdateSystemSwapConfiguration)(nil)).Elem() +} + +type UpdateSystemSwapConfigurationRequestType struct { + This ManagedObjectReference `xml:"_this"` + SysSwapConfig HostSystemSwapConfiguration `xml:"sysSwapConfig"` +} + +func init() { + t["UpdateSystemSwapConfigurationRequestType"] = reflect.TypeOf((*UpdateSystemSwapConfigurationRequestType)(nil)).Elem() +} + +type UpdateSystemSwapConfigurationResponse struct { +} + +type UpdateSystemUsers UpdateSystemUsersRequestType + +func init() { + t["UpdateSystemUsers"] = reflect.TypeOf((*UpdateSystemUsers)(nil)).Elem() +} + +type UpdateSystemUsersRequestType struct { + This ManagedObjectReference `xml:"_this"` + Users []string `xml:"users,omitempty"` +} + +func init() { + t["UpdateSystemUsersRequestType"] = reflect.TypeOf((*UpdateSystemUsersRequestType)(nil)).Elem() +} + +type UpdateSystemUsersResponse struct { +} + +type UpdateUser UpdateUserRequestType + +func init() { + t["UpdateUser"] = reflect.TypeOf((*UpdateUser)(nil)).Elem() +} + +type UpdateUserRequestType struct { + This ManagedObjectReference `xml:"_this"` + User BaseHostAccountSpec `xml:"user,typeattr"` +} + +func init() { + t["UpdateUserRequestType"] = reflect.TypeOf((*UpdateUserRequestType)(nil)).Elem() +} + +type UpdateUserResponse struct { +} + +type UpdateVAppConfig UpdateVAppConfigRequestType + +func init() { + t["UpdateVAppConfig"] = reflect.TypeOf((*UpdateVAppConfig)(nil)).Elem() +} + +type UpdateVAppConfigRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec VAppConfigSpec `xml:"spec"` +} + +func init() { + t["UpdateVAppConfigRequestType"] = reflect.TypeOf((*UpdateVAppConfigRequestType)(nil)).Elem() +} + +type UpdateVAppConfigResponse struct { +} + +type UpdateVStorageInfrastructureObjectPolicyRequestType struct { + This ManagedObjectReference `xml:"_this"` + Spec VslmInfrastructureObjectPolicySpec `xml:"spec"` +} + +func init() { + t["UpdateVStorageInfrastructureObjectPolicyRequestType"] = reflect.TypeOf((*UpdateVStorageInfrastructureObjectPolicyRequestType)(nil)).Elem() +} + +type UpdateVStorageInfrastructureObjectPolicy_Task UpdateVStorageInfrastructureObjectPolicyRequestType + +func init() { + t["UpdateVStorageInfrastructureObjectPolicy_Task"] = reflect.TypeOf((*UpdateVStorageInfrastructureObjectPolicy_Task)(nil)).Elem() +} + +type UpdateVStorageInfrastructureObjectPolicy_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type UpdateVStorageObjectCryptoRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + Profile []BaseVirtualMachineProfileSpec `xml:"profile,omitempty,typeattr"` + DisksCrypto *DiskCryptoSpec `xml:"disksCrypto,omitempty"` +} + +func init() { + t["UpdateVStorageObjectCryptoRequestType"] = reflect.TypeOf((*UpdateVStorageObjectCryptoRequestType)(nil)).Elem() +} + +type UpdateVStorageObjectCrypto_Task UpdateVStorageObjectCryptoRequestType + +func init() { + t["UpdateVStorageObjectCrypto_Task"] = reflect.TypeOf((*UpdateVStorageObjectCrypto_Task)(nil)).Elem() +} + +type UpdateVStorageObjectCrypto_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type UpdateVStorageObjectPolicyRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + Profile []BaseVirtualMachineProfileSpec `xml:"profile,omitempty,typeattr"` +} + +func init() { + t["UpdateVStorageObjectPolicyRequestType"] = reflect.TypeOf((*UpdateVStorageObjectPolicyRequestType)(nil)).Elem() +} + +type UpdateVStorageObjectPolicy_Task UpdateVStorageObjectPolicyRequestType + +func init() { + t["UpdateVStorageObjectPolicy_Task"] = reflect.TypeOf((*UpdateVStorageObjectPolicy_Task)(nil)).Elem() +} + +type UpdateVStorageObjectPolicy_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type UpdateVVolVirtualMachineFilesRequestType struct { + This ManagedObjectReference `xml:"_this"` + FailoverPair []DatastoreVVolContainerFailoverPair `xml:"failoverPair,omitempty"` +} + +func init() { + t["UpdateVVolVirtualMachineFilesRequestType"] = reflect.TypeOf((*UpdateVVolVirtualMachineFilesRequestType)(nil)).Elem() +} + +type UpdateVVolVirtualMachineFiles_Task UpdateVVolVirtualMachineFilesRequestType + +func init() { + t["UpdateVVolVirtualMachineFiles_Task"] = reflect.TypeOf((*UpdateVVolVirtualMachineFiles_Task)(nil)).Elem() +} + +type UpdateVVolVirtualMachineFiles_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type UpdateVirtualMachineFilesRequestType struct { + This ManagedObjectReference `xml:"_this"` + MountPathDatastoreMapping []DatastoreMountPathDatastorePair `xml:"mountPathDatastoreMapping"` +} + +func init() { + t["UpdateVirtualMachineFilesRequestType"] = reflect.TypeOf((*UpdateVirtualMachineFilesRequestType)(nil)).Elem() +} + +type UpdateVirtualMachineFilesResult struct { + DynamicData + + FailedVmFile []UpdateVirtualMachineFilesResultFailedVmFileInfo `xml:"failedVmFile,omitempty"` +} + +func init() { + t["UpdateVirtualMachineFilesResult"] = reflect.TypeOf((*UpdateVirtualMachineFilesResult)(nil)).Elem() +} + +type UpdateVirtualMachineFilesResultFailedVmFileInfo struct { + DynamicData + + VmFile string `xml:"vmFile"` + Fault LocalizedMethodFault `xml:"fault"` +} + +func init() { + t["UpdateVirtualMachineFilesResultFailedVmFileInfo"] = reflect.TypeOf((*UpdateVirtualMachineFilesResultFailedVmFileInfo)(nil)).Elem() +} + +type UpdateVirtualMachineFiles_Task UpdateVirtualMachineFilesRequestType + +func init() { + t["UpdateVirtualMachineFiles_Task"] = reflect.TypeOf((*UpdateVirtualMachineFiles_Task)(nil)).Elem() +} + +type UpdateVirtualMachineFiles_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type UpdateVirtualNic UpdateVirtualNicRequestType + +func init() { + t["UpdateVirtualNic"] = reflect.TypeOf((*UpdateVirtualNic)(nil)).Elem() +} + +type UpdateVirtualNicRequestType struct { + This ManagedObjectReference `xml:"_this"` + Device string `xml:"device"` + Nic HostVirtualNicSpec `xml:"nic"` +} + +func init() { + t["UpdateVirtualNicRequestType"] = reflect.TypeOf((*UpdateVirtualNicRequestType)(nil)).Elem() +} + +type UpdateVirtualNicResponse struct { +} + +type UpdateVirtualSwitch UpdateVirtualSwitchRequestType + +func init() { + t["UpdateVirtualSwitch"] = reflect.TypeOf((*UpdateVirtualSwitch)(nil)).Elem() +} + +type UpdateVirtualSwitchRequestType struct { + This ManagedObjectReference `xml:"_this"` + VswitchName string `xml:"vswitchName"` + Spec HostVirtualSwitchSpec `xml:"spec"` +} + +func init() { + t["UpdateVirtualSwitchRequestType"] = reflect.TypeOf((*UpdateVirtualSwitchRequestType)(nil)).Elem() +} + +type UpdateVirtualSwitchResponse struct { +} + +type UpdateVmfsUnmapBandwidth UpdateVmfsUnmapBandwidthRequestType + +func init() { + t["UpdateVmfsUnmapBandwidth"] = reflect.TypeOf((*UpdateVmfsUnmapBandwidth)(nil)).Elem() +} + +type UpdateVmfsUnmapBandwidthRequestType struct { + This ManagedObjectReference `xml:"_this"` + VmfsUuid string `xml:"vmfsUuid"` + UnmapBandwidthSpec VmfsUnmapBandwidthSpec `xml:"unmapBandwidthSpec"` +} + +func init() { + t["UpdateVmfsUnmapBandwidthRequestType"] = reflect.TypeOf((*UpdateVmfsUnmapBandwidthRequestType)(nil)).Elem() +} + +type UpdateVmfsUnmapBandwidthResponse struct { +} + +type UpdateVmfsUnmapPriority UpdateVmfsUnmapPriorityRequestType + +func init() { + t["UpdateVmfsUnmapPriority"] = reflect.TypeOf((*UpdateVmfsUnmapPriority)(nil)).Elem() +} + +type UpdateVmfsUnmapPriorityRequestType struct { + This ManagedObjectReference `xml:"_this"` + VmfsUuid string `xml:"vmfsUuid"` + UnmapPriority string `xml:"unmapPriority"` +} + +func init() { + t["UpdateVmfsUnmapPriorityRequestType"] = reflect.TypeOf((*UpdateVmfsUnmapPriorityRequestType)(nil)).Elem() +} + +type UpdateVmfsUnmapPriorityResponse struct { +} + +type UpdateVsanRequestType struct { + This ManagedObjectReference `xml:"_this"` + Config VsanHostConfigInfo `xml:"config"` +} + +func init() { + t["UpdateVsanRequestType"] = reflect.TypeOf((*UpdateVsanRequestType)(nil)).Elem() +} + +type UpdateVsan_Task UpdateVsanRequestType + +func init() { + t["UpdateVsan_Task"] = reflect.TypeOf((*UpdateVsan_Task)(nil)).Elem() +} + +type UpdateVsan_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type UpdatedAgentBeingRestartedEvent struct { + HostEvent +} + +func init() { + t["UpdatedAgentBeingRestartedEvent"] = reflect.TypeOf((*UpdatedAgentBeingRestartedEvent)(nil)).Elem() +} + +type UpgradeEvent struct { + Event + + Message string `xml:"message"` +} + +func init() { + t["UpgradeEvent"] = reflect.TypeOf((*UpgradeEvent)(nil)).Elem() +} + +type UpgradeIoFilterRequestType struct { + This ManagedObjectReference `xml:"_this"` + FilterId string `xml:"filterId"` + CompRes ManagedObjectReference `xml:"compRes"` + VibUrl string `xml:"vibUrl"` +} + +func init() { + t["UpgradeIoFilterRequestType"] = reflect.TypeOf((*UpgradeIoFilterRequestType)(nil)).Elem() +} + +type UpgradeIoFilter_Task UpgradeIoFilterRequestType + +func init() { + t["UpgradeIoFilter_Task"] = reflect.TypeOf((*UpgradeIoFilter_Task)(nil)).Elem() +} + +type UpgradeIoFilter_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type UpgradeToolsRequestType struct { + This ManagedObjectReference `xml:"_this"` + InstallerOptions string `xml:"installerOptions,omitempty"` +} + +func init() { + t["UpgradeToolsRequestType"] = reflect.TypeOf((*UpgradeToolsRequestType)(nil)).Elem() +} + +type UpgradeTools_Task UpgradeToolsRequestType + +func init() { + t["UpgradeTools_Task"] = reflect.TypeOf((*UpgradeTools_Task)(nil)).Elem() +} + +type UpgradeTools_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type UpgradeVMRequestType struct { + This ManagedObjectReference `xml:"_this"` + Version string `xml:"version,omitempty"` +} + +func init() { + t["UpgradeVMRequestType"] = reflect.TypeOf((*UpgradeVMRequestType)(nil)).Elem() +} + +type UpgradeVM_Task UpgradeVMRequestType + +func init() { + t["UpgradeVM_Task"] = reflect.TypeOf((*UpgradeVM_Task)(nil)).Elem() +} + +type UpgradeVM_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type UpgradeVmLayout UpgradeVmLayoutRequestType + +func init() { + t["UpgradeVmLayout"] = reflect.TypeOf((*UpgradeVmLayout)(nil)).Elem() +} + +type UpgradeVmLayoutRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["UpgradeVmLayoutRequestType"] = reflect.TypeOf((*UpgradeVmLayoutRequestType)(nil)).Elem() +} + +type UpgradeVmLayoutResponse struct { +} + +type UpgradeVmfs UpgradeVmfsRequestType + +func init() { + t["UpgradeVmfs"] = reflect.TypeOf((*UpgradeVmfs)(nil)).Elem() +} + +type UpgradeVmfsRequestType struct { + This ManagedObjectReference `xml:"_this"` + VmfsPath string `xml:"vmfsPath"` +} + +func init() { + t["UpgradeVmfsRequestType"] = reflect.TypeOf((*UpgradeVmfsRequestType)(nil)).Elem() +} + +type UpgradeVmfsResponse struct { +} + +type UpgradeVsanObjects UpgradeVsanObjectsRequestType + +func init() { + t["UpgradeVsanObjects"] = reflect.TypeOf((*UpgradeVsanObjects)(nil)).Elem() +} + +type UpgradeVsanObjectsRequestType struct { + This ManagedObjectReference `xml:"_this"` + Uuids []string `xml:"uuids"` + NewVersion int32 `xml:"newVersion"` +} + +func init() { + t["UpgradeVsanObjectsRequestType"] = reflect.TypeOf((*UpgradeVsanObjectsRequestType)(nil)).Elem() +} + +type UpgradeVsanObjectsResponse struct { + Returnval []HostVsanInternalSystemVsanObjectOperationResult `xml:"returnval,omitempty"` +} + +type UplinkPortMtuNotSupportEvent struct { + DvsHealthStatusChangeEvent +} + +func init() { + t["UplinkPortMtuNotSupportEvent"] = reflect.TypeOf((*UplinkPortMtuNotSupportEvent)(nil)).Elem() +} + +type UplinkPortMtuSupportEvent struct { + DvsHealthStatusChangeEvent +} + +func init() { + t["UplinkPortMtuSupportEvent"] = reflect.TypeOf((*UplinkPortMtuSupportEvent)(nil)).Elem() +} + +type UplinkPortVlanTrunkedEvent struct { + DvsHealthStatusChangeEvent +} + +func init() { + t["UplinkPortVlanTrunkedEvent"] = reflect.TypeOf((*UplinkPortVlanTrunkedEvent)(nil)).Elem() +} + +type UplinkPortVlanUntrunkedEvent struct { + DvsHealthStatusChangeEvent +} + +func init() { + t["UplinkPortVlanUntrunkedEvent"] = reflect.TypeOf((*UplinkPortVlanUntrunkedEvent)(nil)).Elem() +} + +type UploadClientCert UploadClientCertRequestType + +func init() { + t["UploadClientCert"] = reflect.TypeOf((*UploadClientCert)(nil)).Elem() +} + +type UploadClientCertRequestType struct { + This ManagedObjectReference `xml:"_this"` + Cluster KeyProviderId `xml:"cluster"` + Certificate string `xml:"certificate"` + PrivateKey string `xml:"privateKey"` +} + +func init() { + t["UploadClientCertRequestType"] = reflect.TypeOf((*UploadClientCertRequestType)(nil)).Elem() +} + +type UploadClientCertResponse struct { +} + +type UploadKmipServerCert UploadKmipServerCertRequestType + +func init() { + t["UploadKmipServerCert"] = reflect.TypeOf((*UploadKmipServerCert)(nil)).Elem() +} + +type UploadKmipServerCertRequestType struct { + This ManagedObjectReference `xml:"_this"` + Cluster KeyProviderId `xml:"cluster"` + Certificate string `xml:"certificate"` +} + +func init() { + t["UploadKmipServerCertRequestType"] = reflect.TypeOf((*UploadKmipServerCertRequestType)(nil)).Elem() +} + +type UploadKmipServerCertResponse struct { +} + +type UsbScanCodeSpec struct { + DynamicData + + KeyEvents []UsbScanCodeSpecKeyEvent `xml:"keyEvents"` +} + +func init() { + t["UsbScanCodeSpec"] = reflect.TypeOf((*UsbScanCodeSpec)(nil)).Elem() +} + +type UsbScanCodeSpecKeyEvent struct { + DynamicData + + UsbHidCode int32 `xml:"usbHidCode"` + Modifiers *UsbScanCodeSpecModifierType `xml:"modifiers,omitempty"` +} + +func init() { + t["UsbScanCodeSpecKeyEvent"] = reflect.TypeOf((*UsbScanCodeSpecKeyEvent)(nil)).Elem() +} + +type UsbScanCodeSpecModifierType struct { + DynamicData + + LeftControl *bool `xml:"leftControl"` + LeftShift *bool `xml:"leftShift"` + LeftAlt *bool `xml:"leftAlt"` + LeftGui *bool `xml:"leftGui"` + RightControl *bool `xml:"rightControl"` + RightShift *bool `xml:"rightShift"` + RightAlt *bool `xml:"rightAlt"` + RightGui *bool `xml:"rightGui"` +} + +func init() { + t["UsbScanCodeSpecModifierType"] = reflect.TypeOf((*UsbScanCodeSpecModifierType)(nil)).Elem() +} + +type UserAssignedToGroup struct { + HostEvent + + UserLogin string `xml:"userLogin"` + Group string `xml:"group"` +} + +func init() { + t["UserAssignedToGroup"] = reflect.TypeOf((*UserAssignedToGroup)(nil)).Elem() +} + +type UserGroupProfile struct { + ApplyProfile + + Key string `xml:"key"` +} + +func init() { + t["UserGroupProfile"] = reflect.TypeOf((*UserGroupProfile)(nil)).Elem() +} + +type UserInputRequiredParameterMetadata struct { + ProfilePolicyOptionMetadata + + UserInputParameter []ProfileParameterMetadata `xml:"userInputParameter,omitempty"` +} + +func init() { + t["UserInputRequiredParameterMetadata"] = reflect.TypeOf((*UserInputRequiredParameterMetadata)(nil)).Elem() +} + +type UserLoginSessionEvent struct { + SessionEvent + + IpAddress string `xml:"ipAddress"` + UserAgent string `xml:"userAgent,omitempty"` + Locale string `xml:"locale"` + SessionId string `xml:"sessionId"` +} + +func init() { + t["UserLoginSessionEvent"] = reflect.TypeOf((*UserLoginSessionEvent)(nil)).Elem() +} + +type UserLogoutSessionEvent struct { + SessionEvent + + IpAddress string `xml:"ipAddress,omitempty"` + UserAgent string `xml:"userAgent,omitempty"` + CallCount int64 `xml:"callCount,omitempty"` + SessionId string `xml:"sessionId,omitempty"` + LoginTime *time.Time `xml:"loginTime"` +} + +func init() { + t["UserLogoutSessionEvent"] = reflect.TypeOf((*UserLogoutSessionEvent)(nil)).Elem() +} + +type UserNotFound struct { + VimFault + + Principal string `xml:"principal"` + Unresolved bool `xml:"unresolved"` +} + +func init() { + t["UserNotFound"] = reflect.TypeOf((*UserNotFound)(nil)).Elem() +} + +type UserNotFoundFault UserNotFound + +func init() { + t["UserNotFoundFault"] = reflect.TypeOf((*UserNotFoundFault)(nil)).Elem() +} + +type UserPasswordChanged struct { + HostEvent + + UserLogin string `xml:"userLogin"` +} + +func init() { + t["UserPasswordChanged"] = reflect.TypeOf((*UserPasswordChanged)(nil)).Elem() +} + +type UserPrivilegeResult struct { + DynamicData + + Entity ManagedObjectReference `xml:"entity"` + Privileges []string `xml:"privileges,omitempty"` +} + +func init() { + t["UserPrivilegeResult"] = reflect.TypeOf((*UserPrivilegeResult)(nil)).Elem() +} + +type UserProfile struct { + ApplyProfile + + Key string `xml:"key"` +} + +func init() { + t["UserProfile"] = reflect.TypeOf((*UserProfile)(nil)).Elem() +} + +type UserSearchResult struct { + DynamicData + + Principal string `xml:"principal"` + FullName string `xml:"fullName,omitempty"` + Group bool `xml:"group"` +} + +func init() { + t["UserSearchResult"] = reflect.TypeOf((*UserSearchResult)(nil)).Elem() +} + +type UserSession struct { + DynamicData + + Key string `xml:"key"` + UserName string `xml:"userName"` + FullName string `xml:"fullName"` + LoginTime time.Time `xml:"loginTime"` + LastActiveTime time.Time `xml:"lastActiveTime"` + Locale string `xml:"locale"` + MessageLocale string `xml:"messageLocale"` + ExtensionSession *bool `xml:"extensionSession"` + IpAddress string `xml:"ipAddress,omitempty"` + UserAgent string `xml:"userAgent,omitempty"` + CallCount int64 `xml:"callCount,omitempty"` +} + +func init() { + t["UserSession"] = reflect.TypeOf((*UserSession)(nil)).Elem() +} + +type UserUnassignedFromGroup struct { + HostEvent + + UserLogin string `xml:"userLogin"` + Group string `xml:"group"` +} + +func init() { + t["UserUnassignedFromGroup"] = reflect.TypeOf((*UserUnassignedFromGroup)(nil)).Elem() +} + +type UserUpgradeEvent struct { + UpgradeEvent +} + +func init() { + t["UserUpgradeEvent"] = reflect.TypeOf((*UserUpgradeEvent)(nil)).Elem() +} + +type VASAStorageArray struct { + DynamicData + + Name string `xml:"name"` + Uuid string `xml:"uuid"` + VendorId string `xml:"vendorId"` + ModelId string `xml:"modelId"` +} + +func init() { + t["VASAStorageArray"] = reflect.TypeOf((*VASAStorageArray)(nil)).Elem() +} + +type VAppCloneSpec struct { + DynamicData + + Location ManagedObjectReference `xml:"location"` + Host *ManagedObjectReference `xml:"host,omitempty"` + ResourceSpec *ResourceConfigSpec `xml:"resourceSpec,omitempty"` + VmFolder *ManagedObjectReference `xml:"vmFolder,omitempty"` + NetworkMapping []VAppCloneSpecNetworkMappingPair `xml:"networkMapping,omitempty"` + Property []KeyValue `xml:"property,omitempty"` + ResourceMapping []VAppCloneSpecResourceMap `xml:"resourceMapping,omitempty"` + Provisioning string `xml:"provisioning,omitempty"` +} + +func init() { + t["VAppCloneSpec"] = reflect.TypeOf((*VAppCloneSpec)(nil)).Elem() +} + +type VAppCloneSpecNetworkMappingPair struct { + DynamicData + + Source ManagedObjectReference `xml:"source"` + Destination ManagedObjectReference `xml:"destination"` +} + +func init() { + t["VAppCloneSpecNetworkMappingPair"] = reflect.TypeOf((*VAppCloneSpecNetworkMappingPair)(nil)).Elem() +} + +type VAppCloneSpecResourceMap struct { + DynamicData + + Source ManagedObjectReference `xml:"source"` + Parent *ManagedObjectReference `xml:"parent,omitempty"` + ResourceSpec *ResourceConfigSpec `xml:"resourceSpec,omitempty"` + Location *ManagedObjectReference `xml:"location,omitempty"` +} + +func init() { + t["VAppCloneSpecResourceMap"] = reflect.TypeOf((*VAppCloneSpecResourceMap)(nil)).Elem() +} + +type VAppConfigFault struct { + VimFault +} + +func init() { + t["VAppConfigFault"] = reflect.TypeOf((*VAppConfigFault)(nil)).Elem() +} + +type VAppConfigFaultFault BaseVAppConfigFault + +func init() { + t["VAppConfigFaultFault"] = reflect.TypeOf((*VAppConfigFaultFault)(nil)).Elem() +} + +type VAppConfigInfo struct { + VmConfigInfo + + EntityConfig []VAppEntityConfigInfo `xml:"entityConfig,omitempty"` + Annotation string `xml:"annotation"` + InstanceUuid string `xml:"instanceUuid,omitempty"` + ManagedBy *ManagedByInfo `xml:"managedBy,omitempty"` +} + +func init() { + t["VAppConfigInfo"] = reflect.TypeOf((*VAppConfigInfo)(nil)).Elem() +} + +type VAppConfigSpec struct { + VmConfigSpec + + EntityConfig []VAppEntityConfigInfo `xml:"entityConfig,omitempty"` + Annotation string `xml:"annotation,omitempty"` + InstanceUuid string `xml:"instanceUuid,omitempty"` + ManagedBy *ManagedByInfo `xml:"managedBy,omitempty"` +} + +func init() { + t["VAppConfigSpec"] = reflect.TypeOf((*VAppConfigSpec)(nil)).Elem() +} + +type VAppEntityConfigInfo struct { + DynamicData + + Key *ManagedObjectReference `xml:"key,omitempty"` + Tag string `xml:"tag,omitempty"` + StartOrder int32 `xml:"startOrder,omitempty"` + StartDelay int32 `xml:"startDelay,omitempty"` + WaitingForGuest *bool `xml:"waitingForGuest"` + StartAction string `xml:"startAction,omitempty"` + StopDelay int32 `xml:"stopDelay,omitempty"` + StopAction string `xml:"stopAction,omitempty"` + DestroyWithParent *bool `xml:"destroyWithParent"` +} + +func init() { + t["VAppEntityConfigInfo"] = reflect.TypeOf((*VAppEntityConfigInfo)(nil)).Elem() +} + +type VAppIPAssignmentInfo struct { + DynamicData + + SupportedAllocationScheme []string `xml:"supportedAllocationScheme,omitempty"` + IpAllocationPolicy string `xml:"ipAllocationPolicy,omitempty"` + SupportedIpProtocol []string `xml:"supportedIpProtocol,omitempty"` + IpProtocol string `xml:"ipProtocol,omitempty"` +} + +func init() { + t["VAppIPAssignmentInfo"] = reflect.TypeOf((*VAppIPAssignmentInfo)(nil)).Elem() +} + +type VAppNotRunning struct { + VmConfigFault +} + +func init() { + t["VAppNotRunning"] = reflect.TypeOf((*VAppNotRunning)(nil)).Elem() +} + +type VAppNotRunningFault VAppNotRunning + +func init() { + t["VAppNotRunningFault"] = reflect.TypeOf((*VAppNotRunningFault)(nil)).Elem() +} + +type VAppOperationInProgress struct { + RuntimeFault +} + +func init() { + t["VAppOperationInProgress"] = reflect.TypeOf((*VAppOperationInProgress)(nil)).Elem() +} + +type VAppOperationInProgressFault VAppOperationInProgress + +func init() { + t["VAppOperationInProgressFault"] = reflect.TypeOf((*VAppOperationInProgressFault)(nil)).Elem() +} + +type VAppOvfSectionInfo struct { + DynamicData + + Key int32 `xml:"key,omitempty"` + Namespace string `xml:"namespace,omitempty"` + Type string `xml:"type,omitempty"` + AtEnvelopeLevel *bool `xml:"atEnvelopeLevel"` + Contents string `xml:"contents,omitempty"` +} + +func init() { + t["VAppOvfSectionInfo"] = reflect.TypeOf((*VAppOvfSectionInfo)(nil)).Elem() +} + +type VAppOvfSectionSpec struct { + ArrayUpdateSpec + + Info *VAppOvfSectionInfo `xml:"info,omitempty"` +} + +func init() { + t["VAppOvfSectionSpec"] = reflect.TypeOf((*VAppOvfSectionSpec)(nil)).Elem() +} + +type VAppProductInfo struct { + DynamicData + + Key int32 `xml:"key"` + ClassId string `xml:"classId,omitempty"` + InstanceId string `xml:"instanceId,omitempty"` + Name string `xml:"name,omitempty"` + Vendor string `xml:"vendor,omitempty"` + Version string `xml:"version,omitempty"` + FullVersion string `xml:"fullVersion,omitempty"` + VendorUrl string `xml:"vendorUrl,omitempty"` + ProductUrl string `xml:"productUrl,omitempty"` + AppUrl string `xml:"appUrl,omitempty"` +} + +func init() { + t["VAppProductInfo"] = reflect.TypeOf((*VAppProductInfo)(nil)).Elem() +} + +type VAppProductSpec struct { + ArrayUpdateSpec + + Info *VAppProductInfo `xml:"info,omitempty"` +} + +func init() { + t["VAppProductSpec"] = reflect.TypeOf((*VAppProductSpec)(nil)).Elem() +} + +type VAppPropertyFault struct { + VmConfigFault + + Id string `xml:"id"` + Category string `xml:"category"` + Label string `xml:"label"` + Type string `xml:"type"` + Value string `xml:"value"` +} + +func init() { + t["VAppPropertyFault"] = reflect.TypeOf((*VAppPropertyFault)(nil)).Elem() +} + +type VAppPropertyFaultFault BaseVAppPropertyFault + +func init() { + t["VAppPropertyFaultFault"] = reflect.TypeOf((*VAppPropertyFaultFault)(nil)).Elem() +} + +type VAppPropertyInfo struct { + DynamicData + + Key int32 `xml:"key"` + ClassId string `xml:"classId,omitempty"` + InstanceId string `xml:"instanceId,omitempty"` + Id string `xml:"id,omitempty"` + Category string `xml:"category,omitempty"` + Label string `xml:"label,omitempty"` + Type string `xml:"type,omitempty"` + TypeReference string `xml:"typeReference,omitempty"` + UserConfigurable *bool `xml:"userConfigurable"` + DefaultValue string `xml:"defaultValue,omitempty"` + Value string `xml:"value,omitempty"` + Description string `xml:"description,omitempty"` +} + +func init() { + t["VAppPropertyInfo"] = reflect.TypeOf((*VAppPropertyInfo)(nil)).Elem() +} + +type VAppPropertySpec struct { + ArrayUpdateSpec + + Info *VAppPropertyInfo `xml:"info,omitempty"` +} + +func init() { + t["VAppPropertySpec"] = reflect.TypeOf((*VAppPropertySpec)(nil)).Elem() +} + +type VAppTaskInProgress struct { + TaskInProgress +} + +func init() { + t["VAppTaskInProgress"] = reflect.TypeOf((*VAppTaskInProgress)(nil)).Elem() +} + +type VAppTaskInProgressFault VAppTaskInProgress + +func init() { + t["VAppTaskInProgressFault"] = reflect.TypeOf((*VAppTaskInProgressFault)(nil)).Elem() +} + +type VFlashCacheHotConfigNotSupported struct { + VmConfigFault +} + +func init() { + t["VFlashCacheHotConfigNotSupported"] = reflect.TypeOf((*VFlashCacheHotConfigNotSupported)(nil)).Elem() +} + +type VFlashCacheHotConfigNotSupportedFault VFlashCacheHotConfigNotSupported + +func init() { + t["VFlashCacheHotConfigNotSupportedFault"] = reflect.TypeOf((*VFlashCacheHotConfigNotSupportedFault)(nil)).Elem() +} + +type VFlashModuleNotSupported struct { + VmConfigFault + + VmName string `xml:"vmName"` + ModuleName string `xml:"moduleName"` + Reason string `xml:"reason"` + HostName string `xml:"hostName"` +} + +func init() { + t["VFlashModuleNotSupported"] = reflect.TypeOf((*VFlashModuleNotSupported)(nil)).Elem() +} + +type VFlashModuleNotSupportedFault VFlashModuleNotSupported + +func init() { + t["VFlashModuleNotSupportedFault"] = reflect.TypeOf((*VFlashModuleNotSupportedFault)(nil)).Elem() +} + +type VFlashModuleVersionIncompatible struct { + VimFault + + ModuleName string `xml:"moduleName"` + VmRequestModuleVersion string `xml:"vmRequestModuleVersion"` + HostMinSupportedVerson string `xml:"hostMinSupportedVerson"` + HostModuleVersion string `xml:"hostModuleVersion"` +} + +func init() { + t["VFlashModuleVersionIncompatible"] = reflect.TypeOf((*VFlashModuleVersionIncompatible)(nil)).Elem() +} + +type VFlashModuleVersionIncompatibleFault VFlashModuleVersionIncompatible + +func init() { + t["VFlashModuleVersionIncompatibleFault"] = reflect.TypeOf((*VFlashModuleVersionIncompatibleFault)(nil)).Elem() +} + +type VMFSDatastoreCreatedEvent struct { + HostEvent + + Datastore DatastoreEventArgument `xml:"datastore"` + DatastoreUrl string `xml:"datastoreUrl,omitempty"` +} + +func init() { + t["VMFSDatastoreCreatedEvent"] = reflect.TypeOf((*VMFSDatastoreCreatedEvent)(nil)).Elem() +} + +type VMFSDatastoreExpandedEvent struct { + HostEvent + + Datastore DatastoreEventArgument `xml:"datastore"` +} + +func init() { + t["VMFSDatastoreExpandedEvent"] = reflect.TypeOf((*VMFSDatastoreExpandedEvent)(nil)).Elem() +} + +type VMFSDatastoreExtendedEvent struct { + HostEvent + + Datastore DatastoreEventArgument `xml:"datastore"` +} + +func init() { + t["VMFSDatastoreExtendedEvent"] = reflect.TypeOf((*VMFSDatastoreExtendedEvent)(nil)).Elem() +} + +type VMINotSupported struct { + DeviceNotSupported +} + +func init() { + t["VMINotSupported"] = reflect.TypeOf((*VMINotSupported)(nil)).Elem() +} + +type VMINotSupportedFault VMINotSupported + +func init() { + t["VMINotSupportedFault"] = reflect.TypeOf((*VMINotSupportedFault)(nil)).Elem() +} + +type VMOnConflictDVPort struct { + CannotAccessNetwork +} + +func init() { + t["VMOnConflictDVPort"] = reflect.TypeOf((*VMOnConflictDVPort)(nil)).Elem() +} + +type VMOnConflictDVPortFault VMOnConflictDVPort + +func init() { + t["VMOnConflictDVPortFault"] = reflect.TypeOf((*VMOnConflictDVPortFault)(nil)).Elem() +} + +type VMOnVirtualIntranet struct { + CannotAccessNetwork +} + +func init() { + t["VMOnVirtualIntranet"] = reflect.TypeOf((*VMOnVirtualIntranet)(nil)).Elem() +} + +type VMOnVirtualIntranetFault VMOnVirtualIntranet + +func init() { + t["VMOnVirtualIntranetFault"] = reflect.TypeOf((*VMOnVirtualIntranetFault)(nil)).Elem() +} + +type VMotionAcrossNetworkNotSupported struct { + MigrationFeatureNotSupported +} + +func init() { + t["VMotionAcrossNetworkNotSupported"] = reflect.TypeOf((*VMotionAcrossNetworkNotSupported)(nil)).Elem() +} + +type VMotionAcrossNetworkNotSupportedFault VMotionAcrossNetworkNotSupported + +func init() { + t["VMotionAcrossNetworkNotSupportedFault"] = reflect.TypeOf((*VMotionAcrossNetworkNotSupportedFault)(nil)).Elem() +} + +type VMotionInterfaceIssue struct { + MigrationFault + + AtSourceHost bool `xml:"atSourceHost"` + FailedHost string `xml:"failedHost"` + FailedHostEntity *ManagedObjectReference `xml:"failedHostEntity,omitempty"` +} + +func init() { + t["VMotionInterfaceIssue"] = reflect.TypeOf((*VMotionInterfaceIssue)(nil)).Elem() +} + +type VMotionInterfaceIssueFault BaseVMotionInterfaceIssue + +func init() { + t["VMotionInterfaceIssueFault"] = reflect.TypeOf((*VMotionInterfaceIssueFault)(nil)).Elem() +} + +type VMotionLicenseExpiredEvent struct { + LicenseEvent +} + +func init() { + t["VMotionLicenseExpiredEvent"] = reflect.TypeOf((*VMotionLicenseExpiredEvent)(nil)).Elem() +} + +type VMotionLinkCapacityLow struct { + VMotionInterfaceIssue + + Network string `xml:"network"` +} + +func init() { + t["VMotionLinkCapacityLow"] = reflect.TypeOf((*VMotionLinkCapacityLow)(nil)).Elem() +} + +type VMotionLinkCapacityLowFault VMotionLinkCapacityLow + +func init() { + t["VMotionLinkCapacityLowFault"] = reflect.TypeOf((*VMotionLinkCapacityLowFault)(nil)).Elem() +} + +type VMotionLinkDown struct { + VMotionInterfaceIssue + + Network string `xml:"network"` +} + +func init() { + t["VMotionLinkDown"] = reflect.TypeOf((*VMotionLinkDown)(nil)).Elem() +} + +type VMotionLinkDownFault VMotionLinkDown + +func init() { + t["VMotionLinkDownFault"] = reflect.TypeOf((*VMotionLinkDownFault)(nil)).Elem() +} + +type VMotionNotConfigured struct { + VMotionInterfaceIssue +} + +func init() { + t["VMotionNotConfigured"] = reflect.TypeOf((*VMotionNotConfigured)(nil)).Elem() +} + +type VMotionNotConfiguredFault VMotionNotConfigured + +func init() { + t["VMotionNotConfiguredFault"] = reflect.TypeOf((*VMotionNotConfiguredFault)(nil)).Elem() +} + +type VMotionNotLicensed struct { + VMotionInterfaceIssue +} + +func init() { + t["VMotionNotLicensed"] = reflect.TypeOf((*VMotionNotLicensed)(nil)).Elem() +} + +type VMotionNotLicensedFault VMotionNotLicensed + +func init() { + t["VMotionNotLicensedFault"] = reflect.TypeOf((*VMotionNotLicensedFault)(nil)).Elem() +} + +type VMotionNotSupported struct { + VMotionInterfaceIssue +} + +func init() { + t["VMotionNotSupported"] = reflect.TypeOf((*VMotionNotSupported)(nil)).Elem() +} + +type VMotionNotSupportedFault VMotionNotSupported + +func init() { + t["VMotionNotSupportedFault"] = reflect.TypeOf((*VMotionNotSupportedFault)(nil)).Elem() +} + +type VMotionProtocolIncompatible struct { + MigrationFault +} + +func init() { + t["VMotionProtocolIncompatible"] = reflect.TypeOf((*VMotionProtocolIncompatible)(nil)).Elem() +} + +type VMotionProtocolIncompatibleFault VMotionProtocolIncompatible + +func init() { + t["VMotionProtocolIncompatibleFault"] = reflect.TypeOf((*VMotionProtocolIncompatibleFault)(nil)).Elem() +} + +type VMwareDVSConfigInfo struct { + DVSConfigInfo + + VspanSession []VMwareVspanSession `xml:"vspanSession,omitempty"` + PvlanConfig []VMwareDVSPvlanMapEntry `xml:"pvlanConfig,omitempty"` + MaxMtu int32 `xml:"maxMtu"` + LinkDiscoveryProtocolConfig *LinkDiscoveryProtocolConfig `xml:"linkDiscoveryProtocolConfig,omitempty"` + IpfixConfig *VMwareIpfixConfig `xml:"ipfixConfig,omitempty"` + LacpGroupConfig []VMwareDvsLacpGroupConfig `xml:"lacpGroupConfig,omitempty"` + LacpApiVersion string `xml:"lacpApiVersion,omitempty"` + MulticastFilteringMode string `xml:"multicastFilteringMode,omitempty"` +} + +func init() { + t["VMwareDVSConfigInfo"] = reflect.TypeOf((*VMwareDVSConfigInfo)(nil)).Elem() +} + +type VMwareDVSConfigSpec struct { + DVSConfigSpec + + PvlanConfigSpec []VMwareDVSPvlanConfigSpec `xml:"pvlanConfigSpec,omitempty"` + VspanConfigSpec []VMwareDVSVspanConfigSpec `xml:"vspanConfigSpec,omitempty"` + MaxMtu int32 `xml:"maxMtu,omitempty"` + LinkDiscoveryProtocolConfig *LinkDiscoveryProtocolConfig `xml:"linkDiscoveryProtocolConfig,omitempty"` + IpfixConfig *VMwareIpfixConfig `xml:"ipfixConfig,omitempty"` + LacpApiVersion string `xml:"lacpApiVersion,omitempty"` + MulticastFilteringMode string `xml:"multicastFilteringMode,omitempty"` +} + +func init() { + t["VMwareDVSConfigSpec"] = reflect.TypeOf((*VMwareDVSConfigSpec)(nil)).Elem() +} + +type VMwareDVSFeatureCapability struct { + DVSFeatureCapability + + VspanSupported *bool `xml:"vspanSupported"` + LldpSupported *bool `xml:"lldpSupported"` + IpfixSupported *bool `xml:"ipfixSupported"` + IpfixCapability *VMwareDvsIpfixCapability `xml:"ipfixCapability,omitempty"` + MulticastSnoopingSupported *bool `xml:"multicastSnoopingSupported"` + VspanCapability *VMwareDVSVspanCapability `xml:"vspanCapability,omitempty"` + LacpCapability *VMwareDvsLacpCapability `xml:"lacpCapability,omitempty"` + NsxSupported *bool `xml:"nsxSupported"` +} + +func init() { + t["VMwareDVSFeatureCapability"] = reflect.TypeOf((*VMwareDVSFeatureCapability)(nil)).Elem() +} + +type VMwareDVSHealthCheckCapability struct { + DVSHealthCheckCapability + + VlanMtuSupported bool `xml:"vlanMtuSupported"` + TeamingSupported bool `xml:"teamingSupported"` +} + +func init() { + t["VMwareDVSHealthCheckCapability"] = reflect.TypeOf((*VMwareDVSHealthCheckCapability)(nil)).Elem() +} + +type VMwareDVSHealthCheckConfig struct { + DVSHealthCheckConfig +} + +func init() { + t["VMwareDVSHealthCheckConfig"] = reflect.TypeOf((*VMwareDVSHealthCheckConfig)(nil)).Elem() +} + +type VMwareDVSMtuHealthCheckResult struct { + HostMemberUplinkHealthCheckResult + + MtuMismatch bool `xml:"mtuMismatch"` + VlanSupportSwitchMtu []NumericRange `xml:"vlanSupportSwitchMtu,omitempty"` + VlanNotSupportSwitchMtu []NumericRange `xml:"vlanNotSupportSwitchMtu,omitempty"` +} + +func init() { + t["VMwareDVSMtuHealthCheckResult"] = reflect.TypeOf((*VMwareDVSMtuHealthCheckResult)(nil)).Elem() +} + +type VMwareDVSPortSetting struct { + DVPortSetting + + Vlan BaseVmwareDistributedVirtualSwitchVlanSpec `xml:"vlan,omitempty,typeattr"` + QosTag *IntPolicy `xml:"qosTag,omitempty"` + UplinkTeamingPolicy *VmwareUplinkPortTeamingPolicy `xml:"uplinkTeamingPolicy,omitempty"` + SecurityPolicy *DVSSecurityPolicy `xml:"securityPolicy,omitempty"` + IpfixEnabled *BoolPolicy `xml:"ipfixEnabled,omitempty"` + TxUplink *BoolPolicy `xml:"txUplink,omitempty"` + LacpPolicy *VMwareUplinkLacpPolicy `xml:"lacpPolicy,omitempty"` + MacManagementPolicy *DVSMacManagementPolicy `xml:"macManagementPolicy,omitempty"` + VNI *IntPolicy `xml:"VNI,omitempty"` +} + +func init() { + t["VMwareDVSPortSetting"] = reflect.TypeOf((*VMwareDVSPortSetting)(nil)).Elem() +} + +type VMwareDVSPortgroupPolicy struct { + DVPortgroupPolicy + + VlanOverrideAllowed bool `xml:"vlanOverrideAllowed"` + UplinkTeamingOverrideAllowed bool `xml:"uplinkTeamingOverrideAllowed"` + SecurityPolicyOverrideAllowed bool `xml:"securityPolicyOverrideAllowed"` + IpfixOverrideAllowed *bool `xml:"ipfixOverrideAllowed"` + MacManagementOverrideAllowed *bool `xml:"macManagementOverrideAllowed"` +} + +func init() { + t["VMwareDVSPortgroupPolicy"] = reflect.TypeOf((*VMwareDVSPortgroupPolicy)(nil)).Elem() +} + +type VMwareDVSPvlanConfigSpec struct { + DynamicData + + PvlanEntry VMwareDVSPvlanMapEntry `xml:"pvlanEntry"` + Operation string `xml:"operation"` +} + +func init() { + t["VMwareDVSPvlanConfigSpec"] = reflect.TypeOf((*VMwareDVSPvlanConfigSpec)(nil)).Elem() +} + +type VMwareDVSPvlanMapEntry struct { + DynamicData + + PrimaryVlanId int32 `xml:"primaryVlanId"` + SecondaryVlanId int32 `xml:"secondaryVlanId"` + PvlanType string `xml:"pvlanType"` +} + +func init() { + t["VMwareDVSPvlanMapEntry"] = reflect.TypeOf((*VMwareDVSPvlanMapEntry)(nil)).Elem() +} + +type VMwareDVSTeamingHealthCheckConfig struct { + VMwareDVSHealthCheckConfig +} + +func init() { + t["VMwareDVSTeamingHealthCheckConfig"] = reflect.TypeOf((*VMwareDVSTeamingHealthCheckConfig)(nil)).Elem() +} + +type VMwareDVSTeamingHealthCheckResult struct { + HostMemberHealthCheckResult + + TeamingStatus string `xml:"teamingStatus"` +} + +func init() { + t["VMwareDVSTeamingHealthCheckResult"] = reflect.TypeOf((*VMwareDVSTeamingHealthCheckResult)(nil)).Elem() +} + +type VMwareDVSVlanHealthCheckResult struct { + HostMemberUplinkHealthCheckResult + + TrunkedVlan []NumericRange `xml:"trunkedVlan,omitempty"` + UntrunkedVlan []NumericRange `xml:"untrunkedVlan,omitempty"` +} + +func init() { + t["VMwareDVSVlanHealthCheckResult"] = reflect.TypeOf((*VMwareDVSVlanHealthCheckResult)(nil)).Elem() +} + +type VMwareDVSVlanMtuHealthCheckConfig struct { + VMwareDVSHealthCheckConfig +} + +func init() { + t["VMwareDVSVlanMtuHealthCheckConfig"] = reflect.TypeOf((*VMwareDVSVlanMtuHealthCheckConfig)(nil)).Elem() +} + +type VMwareDVSVspanCapability struct { + DynamicData + + MixedDestSupported bool `xml:"mixedDestSupported"` + DvportSupported bool `xml:"dvportSupported"` + RemoteSourceSupported bool `xml:"remoteSourceSupported"` + RemoteDestSupported bool `xml:"remoteDestSupported"` + EncapRemoteSourceSupported bool `xml:"encapRemoteSourceSupported"` + ErspanProtocolSupported *bool `xml:"erspanProtocolSupported"` + MirrorNetstackSupported *bool `xml:"mirrorNetstackSupported"` +} + +func init() { + t["VMwareDVSVspanCapability"] = reflect.TypeOf((*VMwareDVSVspanCapability)(nil)).Elem() +} + +type VMwareDVSVspanConfigSpec struct { + DynamicData + + VspanSession VMwareVspanSession `xml:"vspanSession"` + Operation string `xml:"operation"` +} + +func init() { + t["VMwareDVSVspanConfigSpec"] = reflect.TypeOf((*VMwareDVSVspanConfigSpec)(nil)).Elem() +} + +type VMwareDvsIpfixCapability struct { + DynamicData + + IpfixSupported *bool `xml:"ipfixSupported"` + Ipv6ForIpfixSupported *bool `xml:"ipv6ForIpfixSupported"` + ObservationDomainIdSupported *bool `xml:"observationDomainIdSupported"` +} + +func init() { + t["VMwareDvsIpfixCapability"] = reflect.TypeOf((*VMwareDvsIpfixCapability)(nil)).Elem() +} + +type VMwareDvsLacpCapability struct { + DynamicData + + LacpSupported *bool `xml:"lacpSupported"` + MultiLacpGroupSupported *bool `xml:"multiLacpGroupSupported"` +} + +func init() { + t["VMwareDvsLacpCapability"] = reflect.TypeOf((*VMwareDvsLacpCapability)(nil)).Elem() +} + +type VMwareDvsLacpGroupConfig struct { + DynamicData + + Key string `xml:"key,omitempty"` + Name string `xml:"name,omitempty"` + Mode string `xml:"mode,omitempty"` + UplinkNum int32 `xml:"uplinkNum,omitempty"` + LoadbalanceAlgorithm string `xml:"loadbalanceAlgorithm,omitempty"` + Vlan *VMwareDvsLagVlanConfig `xml:"vlan,omitempty"` + Ipfix *VMwareDvsLagIpfixConfig `xml:"ipfix,omitempty"` + UplinkName []string `xml:"uplinkName,omitempty"` + UplinkPortKey []string `xml:"uplinkPortKey,omitempty"` +} + +func init() { + t["VMwareDvsLacpGroupConfig"] = reflect.TypeOf((*VMwareDvsLacpGroupConfig)(nil)).Elem() +} + +type VMwareDvsLacpGroupSpec struct { + DynamicData + + LacpGroupConfig VMwareDvsLacpGroupConfig `xml:"lacpGroupConfig"` + Operation string `xml:"operation"` +} + +func init() { + t["VMwareDvsLacpGroupSpec"] = reflect.TypeOf((*VMwareDvsLacpGroupSpec)(nil)).Elem() +} + +type VMwareDvsLagIpfixConfig struct { + DynamicData + + IpfixEnabled *bool `xml:"ipfixEnabled"` +} + +func init() { + t["VMwareDvsLagIpfixConfig"] = reflect.TypeOf((*VMwareDvsLagIpfixConfig)(nil)).Elem() +} + +type VMwareDvsLagVlanConfig struct { + DynamicData + + VlanId []NumericRange `xml:"vlanId,omitempty"` +} + +func init() { + t["VMwareDvsLagVlanConfig"] = reflect.TypeOf((*VMwareDvsLagVlanConfig)(nil)).Elem() +} + +type VMwareIpfixConfig struct { + DynamicData + + CollectorIpAddress string `xml:"collectorIpAddress,omitempty"` + CollectorPort int32 `xml:"collectorPort,omitempty"` + ObservationDomainId int64 `xml:"observationDomainId,omitempty"` + ActiveFlowTimeout int32 `xml:"activeFlowTimeout"` + IdleFlowTimeout int32 `xml:"idleFlowTimeout"` + SamplingRate int32 `xml:"samplingRate"` + InternalFlowsOnly bool `xml:"internalFlowsOnly"` +} + +func init() { + t["VMwareIpfixConfig"] = reflect.TypeOf((*VMwareIpfixConfig)(nil)).Elem() +} + +type VMwareUplinkLacpPolicy struct { + InheritablePolicy + + Enable *BoolPolicy `xml:"enable,omitempty"` + Mode *StringPolicy `xml:"mode,omitempty"` +} + +func init() { + t["VMwareUplinkLacpPolicy"] = reflect.TypeOf((*VMwareUplinkLacpPolicy)(nil)).Elem() +} + +type VMwareUplinkPortOrderPolicy struct { + InheritablePolicy + + ActiveUplinkPort []string `xml:"activeUplinkPort,omitempty"` + StandbyUplinkPort []string `xml:"standbyUplinkPort,omitempty"` +} + +func init() { + t["VMwareUplinkPortOrderPolicy"] = reflect.TypeOf((*VMwareUplinkPortOrderPolicy)(nil)).Elem() +} + +type VMwareVspanPort struct { + DynamicData + + PortKey []string `xml:"portKey,omitempty"` + UplinkPortName []string `xml:"uplinkPortName,omitempty"` + WildcardPortConnecteeType []string `xml:"wildcardPortConnecteeType,omitempty"` + Vlans []int32 `xml:"vlans,omitempty"` + IpAddress []string `xml:"ipAddress,omitempty"` +} + +func init() { + t["VMwareVspanPort"] = reflect.TypeOf((*VMwareVspanPort)(nil)).Elem() +} + +type VMwareVspanSession struct { + DynamicData + + Key string `xml:"key,omitempty"` + Name string `xml:"name,omitempty"` + Description string `xml:"description,omitempty"` + Enabled bool `xml:"enabled"` + SourcePortTransmitted *VMwareVspanPort `xml:"sourcePortTransmitted,omitempty"` + SourcePortReceived *VMwareVspanPort `xml:"sourcePortReceived,omitempty"` + DestinationPort *VMwareVspanPort `xml:"destinationPort,omitempty"` + EncapsulationVlanId int32 `xml:"encapsulationVlanId,omitempty"` + StripOriginalVlan bool `xml:"stripOriginalVlan"` + MirroredPacketLength int32 `xml:"mirroredPacketLength,omitempty"` + NormalTrafficAllowed bool `xml:"normalTrafficAllowed"` + SessionType string `xml:"sessionType,omitempty"` + SamplingRate int32 `xml:"samplingRate,omitempty"` + EncapType string `xml:"encapType,omitempty"` + ErspanId int32 `xml:"erspanId,omitempty"` + ErspanCOS int32 `xml:"erspanCOS,omitempty"` + ErspanGraNanosec *bool `xml:"erspanGraNanosec"` + Netstack string `xml:"netstack,omitempty"` +} + +func init() { + t["VMwareVspanSession"] = reflect.TypeOf((*VMwareVspanSession)(nil)).Elem() +} + +type VStorageObject struct { + DynamicData + + Config VStorageObjectConfigInfo `xml:"config"` +} + +func init() { + t["VStorageObject"] = reflect.TypeOf((*VStorageObject)(nil)).Elem() +} + +type VStorageObjectAssociations struct { + DynamicData + + Id ID `xml:"id"` + VmDiskAssociations []VStorageObjectAssociationsVmDiskAssociations `xml:"vmDiskAssociations,omitempty"` + Fault *LocalizedMethodFault `xml:"fault,omitempty"` +} + +func init() { + t["VStorageObjectAssociations"] = reflect.TypeOf((*VStorageObjectAssociations)(nil)).Elem() +} + +type VStorageObjectAssociationsVmDiskAssociations struct { + DynamicData + + VmId string `xml:"vmId"` + DiskKey int32 `xml:"diskKey"` +} + +func init() { + t["VStorageObjectAssociationsVmDiskAssociations"] = reflect.TypeOf((*VStorageObjectAssociationsVmDiskAssociations)(nil)).Elem() +} + +type VStorageObjectConfigInfo struct { + BaseConfigInfo + + CapacityInMB int64 `xml:"capacityInMB"` + ConsumptionType []string `xml:"consumptionType,omitempty"` + ConsumerId []ID `xml:"consumerId,omitempty"` +} + +func init() { + t["VStorageObjectConfigInfo"] = reflect.TypeOf((*VStorageObjectConfigInfo)(nil)).Elem() +} + +type VStorageObjectCreateSnapshotRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + Description string `xml:"description"` +} + +func init() { + t["VStorageObjectCreateSnapshotRequestType"] = reflect.TypeOf((*VStorageObjectCreateSnapshotRequestType)(nil)).Elem() +} + +type VStorageObjectCreateSnapshot_Task VStorageObjectCreateSnapshotRequestType + +func init() { + t["VStorageObjectCreateSnapshot_Task"] = reflect.TypeOf((*VStorageObjectCreateSnapshot_Task)(nil)).Elem() +} + +type VStorageObjectCreateSnapshot_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type VStorageObjectSnapshotDetails struct { + DynamicData + + Path string `xml:"path,omitempty"` + ChangedBlockTrackingId string `xml:"changedBlockTrackingId,omitempty"` +} + +func init() { + t["VStorageObjectSnapshotDetails"] = reflect.TypeOf((*VStorageObjectSnapshotDetails)(nil)).Elem() +} + +type VStorageObjectSnapshotInfo struct { + DynamicData + + Snapshots []VStorageObjectSnapshotInfoVStorageObjectSnapshot `xml:"snapshots,omitempty"` +} + +func init() { + t["VStorageObjectSnapshotInfo"] = reflect.TypeOf((*VStorageObjectSnapshotInfo)(nil)).Elem() +} + +type VStorageObjectSnapshotInfoVStorageObjectSnapshot struct { + DynamicData + + Id *ID `xml:"id,omitempty"` + BackingObjectId string `xml:"backingObjectId,omitempty"` + CreateTime time.Time `xml:"createTime"` + Description string `xml:"description"` +} + +func init() { + t["VStorageObjectSnapshotInfoVStorageObjectSnapshot"] = reflect.TypeOf((*VStorageObjectSnapshotInfoVStorageObjectSnapshot)(nil)).Elem() +} + +type VStorageObjectStateInfo struct { + DynamicData + + Tentative *bool `xml:"tentative"` +} + +func init() { + t["VStorageObjectStateInfo"] = reflect.TypeOf((*VStorageObjectStateInfo)(nil)).Elem() +} + +type VVolHostPE struct { + DynamicData + + Key ManagedObjectReference `xml:"key"` + ProtocolEndpoint []HostProtocolEndpoint `xml:"protocolEndpoint"` +} + +func init() { + t["VVolHostPE"] = reflect.TypeOf((*VVolHostPE)(nil)).Elem() +} + +type VVolVmConfigFileUpdateResult struct { + DynamicData + + SucceededVmConfigFile []KeyValue `xml:"succeededVmConfigFile,omitempty"` + FailedVmConfigFile []VVolVmConfigFileUpdateResultFailedVmConfigFileInfo `xml:"failedVmConfigFile,omitempty"` +} + +func init() { + t["VVolVmConfigFileUpdateResult"] = reflect.TypeOf((*VVolVmConfigFileUpdateResult)(nil)).Elem() +} + +type VVolVmConfigFileUpdateResultFailedVmConfigFileInfo struct { + DynamicData + + TargetConfigVVolId string `xml:"targetConfigVVolId"` + DsPath string `xml:"dsPath,omitempty"` + Fault LocalizedMethodFault `xml:"fault"` +} + +func init() { + t["VVolVmConfigFileUpdateResultFailedVmConfigFileInfo"] = reflect.TypeOf((*VVolVmConfigFileUpdateResultFailedVmConfigFileInfo)(nil)).Elem() +} + +type ValidateCredentialsInGuest ValidateCredentialsInGuestRequestType + +func init() { + t["ValidateCredentialsInGuest"] = reflect.TypeOf((*ValidateCredentialsInGuest)(nil)).Elem() +} + +type ValidateCredentialsInGuestRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm ManagedObjectReference `xml:"vm"` + Auth BaseGuestAuthentication `xml:"auth,typeattr"` +} + +func init() { + t["ValidateCredentialsInGuestRequestType"] = reflect.TypeOf((*ValidateCredentialsInGuestRequestType)(nil)).Elem() +} + +type ValidateCredentialsInGuestResponse struct { +} + +type ValidateHCIConfiguration ValidateHCIConfigurationRequestType + +func init() { + t["ValidateHCIConfiguration"] = reflect.TypeOf((*ValidateHCIConfiguration)(nil)).Elem() +} + +type ValidateHCIConfigurationRequestType struct { + This ManagedObjectReference `xml:"_this"` + HciConfigSpec *ClusterComputeResourceHCIConfigSpec `xml:"hciConfigSpec,omitempty"` + Hosts []ManagedObjectReference `xml:"hosts,omitempty"` +} + +func init() { + t["ValidateHCIConfigurationRequestType"] = reflect.TypeOf((*ValidateHCIConfigurationRequestType)(nil)).Elem() +} + +type ValidateHCIConfigurationResponse struct { + Returnval []BaseClusterComputeResourceValidationResultBase `xml:"returnval,omitempty,typeattr"` +} + +type ValidateHost ValidateHostRequestType + +func init() { + t["ValidateHost"] = reflect.TypeOf((*ValidateHost)(nil)).Elem() +} + +type ValidateHostProfileCompositionRequestType struct { + This ManagedObjectReference `xml:"_this"` + Source ManagedObjectReference `xml:"source"` + Targets []ManagedObjectReference `xml:"targets,omitempty"` + ToBeMerged *HostApplyProfile `xml:"toBeMerged,omitempty"` + ToReplaceWith *HostApplyProfile `xml:"toReplaceWith,omitempty"` + ToBeDeleted *HostApplyProfile `xml:"toBeDeleted,omitempty"` + EnableStatusToBeCopied *HostApplyProfile `xml:"enableStatusToBeCopied,omitempty"` + ErrorOnly *bool `xml:"errorOnly"` +} + +func init() { + t["ValidateHostProfileCompositionRequestType"] = reflect.TypeOf((*ValidateHostProfileCompositionRequestType)(nil)).Elem() +} + +type ValidateHostProfileComposition_Task ValidateHostProfileCompositionRequestType + +func init() { + t["ValidateHostProfileComposition_Task"] = reflect.TypeOf((*ValidateHostProfileComposition_Task)(nil)).Elem() +} + +type ValidateHostProfileComposition_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ValidateHostRequestType struct { + This ManagedObjectReference `xml:"_this"` + OvfDescriptor string `xml:"ovfDescriptor"` + Host ManagedObjectReference `xml:"host"` + Vhp OvfValidateHostParams `xml:"vhp"` +} + +func init() { + t["ValidateHostRequestType"] = reflect.TypeOf((*ValidateHostRequestType)(nil)).Elem() +} + +type ValidateHostResponse struct { + Returnval OvfValidateHostResult `xml:"returnval"` +} + +type ValidateMigration ValidateMigrationRequestType + +func init() { + t["ValidateMigration"] = reflect.TypeOf((*ValidateMigration)(nil)).Elem() +} + +type ValidateMigrationRequestType struct { + This ManagedObjectReference `xml:"_this"` + Vm []ManagedObjectReference `xml:"vm"` + State VirtualMachinePowerState `xml:"state,omitempty"` + TestType []string `xml:"testType,omitempty"` + Pool *ManagedObjectReference `xml:"pool,omitempty"` + Host *ManagedObjectReference `xml:"host,omitempty"` +} + +func init() { + t["ValidateMigrationRequestType"] = reflect.TypeOf((*ValidateMigrationRequestType)(nil)).Elem() +} + +type ValidateMigrationResponse struct { + Returnval []BaseEvent `xml:"returnval,omitempty,typeattr"` +} + +type ValidateStoragePodConfig ValidateStoragePodConfigRequestType + +func init() { + t["ValidateStoragePodConfig"] = reflect.TypeOf((*ValidateStoragePodConfig)(nil)).Elem() +} + +type ValidateStoragePodConfigRequestType struct { + This ManagedObjectReference `xml:"_this"` + Pod ManagedObjectReference `xml:"pod"` + Spec StorageDrsConfigSpec `xml:"spec"` +} + +func init() { + t["ValidateStoragePodConfigRequestType"] = reflect.TypeOf((*ValidateStoragePodConfigRequestType)(nil)).Elem() +} + +type ValidateStoragePodConfigResponse struct { + Returnval *LocalizedMethodFault `xml:"returnval,omitempty"` +} + +type VasaProviderContainerSpec struct { + DynamicData + + VasaProviderInfo []VimVasaProviderInfo `xml:"vasaProviderInfo,omitempty"` + ScId string `xml:"scId"` + Deleted bool `xml:"deleted"` +} + +func init() { + t["VasaProviderContainerSpec"] = reflect.TypeOf((*VasaProviderContainerSpec)(nil)).Elem() +} + +type VcAgentUninstallFailedEvent struct { + HostEvent + + Reason string `xml:"reason,omitempty"` +} + +func init() { + t["VcAgentUninstallFailedEvent"] = reflect.TypeOf((*VcAgentUninstallFailedEvent)(nil)).Elem() +} + +type VcAgentUninstalledEvent struct { + HostEvent +} + +func init() { + t["VcAgentUninstalledEvent"] = reflect.TypeOf((*VcAgentUninstalledEvent)(nil)).Elem() +} + +type VcAgentUpgradeFailedEvent struct { + HostEvent + + Reason string `xml:"reason,omitempty"` +} + +func init() { + t["VcAgentUpgradeFailedEvent"] = reflect.TypeOf((*VcAgentUpgradeFailedEvent)(nil)).Elem() +} + +type VcAgentUpgradedEvent struct { + HostEvent +} + +func init() { + t["VcAgentUpgradedEvent"] = reflect.TypeOf((*VcAgentUpgradedEvent)(nil)).Elem() +} + +type VchaClusterConfigInfo struct { + DynamicData + + FailoverNodeInfo1 *FailoverNodeInfo `xml:"failoverNodeInfo1,omitempty"` + FailoverNodeInfo2 *FailoverNodeInfo `xml:"failoverNodeInfo2,omitempty"` + WitnessNodeInfo *WitnessNodeInfo `xml:"witnessNodeInfo,omitempty"` + State string `xml:"state"` +} + +func init() { + t["VchaClusterConfigInfo"] = reflect.TypeOf((*VchaClusterConfigInfo)(nil)).Elem() +} + +type VchaClusterConfigSpec struct { + DynamicData + + PassiveIp string `xml:"passiveIp"` + WitnessIp string `xml:"witnessIp"` +} + +func init() { + t["VchaClusterConfigSpec"] = reflect.TypeOf((*VchaClusterConfigSpec)(nil)).Elem() +} + +type VchaClusterDeploymentSpec struct { + DynamicData + + PassiveDeploymentSpec PassiveNodeDeploymentSpec `xml:"passiveDeploymentSpec"` + WitnessDeploymentSpec BaseNodeDeploymentSpec `xml:"witnessDeploymentSpec,typeattr"` + ActiveVcSpec SourceNodeSpec `xml:"activeVcSpec"` + ActiveVcNetworkConfig *ClusterNetworkConfigSpec `xml:"activeVcNetworkConfig,omitempty"` +} + +func init() { + t["VchaClusterDeploymentSpec"] = reflect.TypeOf((*VchaClusterDeploymentSpec)(nil)).Elem() +} + +type VchaClusterHealth struct { + DynamicData + + RuntimeInfo VchaClusterRuntimeInfo `xml:"runtimeInfo"` + HealthMessages []LocalizableMessage `xml:"healthMessages,omitempty"` + AdditionalInformation []LocalizableMessage `xml:"additionalInformation,omitempty"` +} + +func init() { + t["VchaClusterHealth"] = reflect.TypeOf((*VchaClusterHealth)(nil)).Elem() +} + +type VchaClusterNetworkSpec struct { + DynamicData + + WitnessNetworkSpec BaseNodeNetworkSpec `xml:"witnessNetworkSpec,typeattr"` + PassiveNetworkSpec PassiveNodeNetworkSpec `xml:"passiveNetworkSpec"` +} + +func init() { + t["VchaClusterNetworkSpec"] = reflect.TypeOf((*VchaClusterNetworkSpec)(nil)).Elem() +} + +type VchaClusterRuntimeInfo struct { + DynamicData + + ClusterState string `xml:"clusterState"` + NodeInfo []VchaNodeRuntimeInfo `xml:"nodeInfo,omitempty"` + ClusterMode string `xml:"clusterMode"` +} + +func init() { + t["VchaClusterRuntimeInfo"] = reflect.TypeOf((*VchaClusterRuntimeInfo)(nil)).Elem() +} + +type VchaNodeRuntimeInfo struct { + DynamicData + + NodeState string `xml:"nodeState"` + NodeRole string `xml:"nodeRole"` + NodeIp string `xml:"nodeIp"` +} + +func init() { + t["VchaNodeRuntimeInfo"] = reflect.TypeOf((*VchaNodeRuntimeInfo)(nil)).Elem() +} + +type VimAccountPasswordChangedEvent struct { + HostEvent +} + +func init() { + t["VimAccountPasswordChangedEvent"] = reflect.TypeOf((*VimAccountPasswordChangedEvent)(nil)).Elem() +} + +type VimFault struct { + MethodFault +} + +func init() { + t["VimFault"] = reflect.TypeOf((*VimFault)(nil)).Elem() +} + +type VimFaultFault BaseVimFault + +func init() { + t["VimFaultFault"] = reflect.TypeOf((*VimFaultFault)(nil)).Elem() +} + +type VimVasaProvider struct { + DynamicData + + Uid string `xml:"uid,omitempty"` + Url string `xml:"url"` + Name string `xml:"name,omitempty"` + SelfSignedCertificate string `xml:"selfSignedCertificate,omitempty"` +} + +func init() { + t["VimVasaProvider"] = reflect.TypeOf((*VimVasaProvider)(nil)).Elem() +} + +type VimVasaProviderInfo struct { + DynamicData + + Provider VimVasaProvider `xml:"provider"` + ArrayState []VimVasaProviderStatePerArray `xml:"arrayState,omitempty"` +} + +func init() { + t["VimVasaProviderInfo"] = reflect.TypeOf((*VimVasaProviderInfo)(nil)).Elem() +} + +type VimVasaProviderStatePerArray struct { + DynamicData + + Priority int32 `xml:"priority"` + ArrayId string `xml:"arrayId"` + Active bool `xml:"active"` +} + +func init() { + t["VimVasaProviderStatePerArray"] = reflect.TypeOf((*VimVasaProviderStatePerArray)(nil)).Elem() +} + +type VirtualAHCIController struct { + VirtualSATAController +} + +func init() { + t["VirtualAHCIController"] = reflect.TypeOf((*VirtualAHCIController)(nil)).Elem() +} + +type VirtualAHCIControllerOption struct { + VirtualSATAControllerOption +} + +func init() { + t["VirtualAHCIControllerOption"] = reflect.TypeOf((*VirtualAHCIControllerOption)(nil)).Elem() +} + +type VirtualAppImportSpec struct { + ImportSpec + + Name string `xml:"name"` + VAppConfigSpec VAppConfigSpec `xml:"vAppConfigSpec"` + ResourcePoolSpec ResourceConfigSpec `xml:"resourcePoolSpec"` + Child []BaseImportSpec `xml:"child,omitempty,typeattr"` +} + +func init() { + t["VirtualAppImportSpec"] = reflect.TypeOf((*VirtualAppImportSpec)(nil)).Elem() +} + +type VirtualAppLinkInfo struct { + DynamicData + + Key ManagedObjectReference `xml:"key"` + DestroyWithParent *bool `xml:"destroyWithParent"` +} + +func init() { + t["VirtualAppLinkInfo"] = reflect.TypeOf((*VirtualAppLinkInfo)(nil)).Elem() +} + +type VirtualAppSummary struct { + ResourcePoolSummary + + Product *VAppProductInfo `xml:"product,omitempty"` + VAppState VirtualAppVAppState `xml:"vAppState,omitempty"` + Suspended *bool `xml:"suspended"` + InstallBootRequired *bool `xml:"installBootRequired"` + InstanceUuid string `xml:"instanceUuid,omitempty"` +} + +func init() { + t["VirtualAppSummary"] = reflect.TypeOf((*VirtualAppSummary)(nil)).Elem() +} + +type VirtualBusLogicController struct { + VirtualSCSIController +} + +func init() { + t["VirtualBusLogicController"] = reflect.TypeOf((*VirtualBusLogicController)(nil)).Elem() +} + +type VirtualBusLogicControllerOption struct { + VirtualSCSIControllerOption +} + +func init() { + t["VirtualBusLogicControllerOption"] = reflect.TypeOf((*VirtualBusLogicControllerOption)(nil)).Elem() +} + +type VirtualCdrom struct { + VirtualDevice +} + +func init() { + t["VirtualCdrom"] = reflect.TypeOf((*VirtualCdrom)(nil)).Elem() +} + +type VirtualCdromAtapiBackingInfo struct { + VirtualDeviceDeviceBackingInfo +} + +func init() { + t["VirtualCdromAtapiBackingInfo"] = reflect.TypeOf((*VirtualCdromAtapiBackingInfo)(nil)).Elem() +} + +type VirtualCdromAtapiBackingOption struct { + VirtualDeviceDeviceBackingOption +} + +func init() { + t["VirtualCdromAtapiBackingOption"] = reflect.TypeOf((*VirtualCdromAtapiBackingOption)(nil)).Elem() +} + +type VirtualCdromIsoBackingInfo struct { + VirtualDeviceFileBackingInfo +} + +func init() { + t["VirtualCdromIsoBackingInfo"] = reflect.TypeOf((*VirtualCdromIsoBackingInfo)(nil)).Elem() +} + +type VirtualCdromIsoBackingOption struct { + VirtualDeviceFileBackingOption +} + +func init() { + t["VirtualCdromIsoBackingOption"] = reflect.TypeOf((*VirtualCdromIsoBackingOption)(nil)).Elem() +} + +type VirtualCdromOption struct { + VirtualDeviceOption +} + +func init() { + t["VirtualCdromOption"] = reflect.TypeOf((*VirtualCdromOption)(nil)).Elem() +} + +type VirtualCdromPassthroughBackingInfo struct { + VirtualDeviceDeviceBackingInfo + + Exclusive bool `xml:"exclusive"` +} + +func init() { + t["VirtualCdromPassthroughBackingInfo"] = reflect.TypeOf((*VirtualCdromPassthroughBackingInfo)(nil)).Elem() +} + +type VirtualCdromPassthroughBackingOption struct { + VirtualDeviceDeviceBackingOption + + Exclusive BoolOption `xml:"exclusive"` +} + +func init() { + t["VirtualCdromPassthroughBackingOption"] = reflect.TypeOf((*VirtualCdromPassthroughBackingOption)(nil)).Elem() +} + +type VirtualCdromRemoteAtapiBackingInfo struct { + VirtualDeviceRemoteDeviceBackingInfo +} + +func init() { + t["VirtualCdromRemoteAtapiBackingInfo"] = reflect.TypeOf((*VirtualCdromRemoteAtapiBackingInfo)(nil)).Elem() +} + +type VirtualCdromRemoteAtapiBackingOption struct { + VirtualDeviceDeviceBackingOption +} + +func init() { + t["VirtualCdromRemoteAtapiBackingOption"] = reflect.TypeOf((*VirtualCdromRemoteAtapiBackingOption)(nil)).Elem() +} + +type VirtualCdromRemotePassthroughBackingInfo struct { + VirtualDeviceRemoteDeviceBackingInfo + + Exclusive bool `xml:"exclusive"` +} + +func init() { + t["VirtualCdromRemotePassthroughBackingInfo"] = reflect.TypeOf((*VirtualCdromRemotePassthroughBackingInfo)(nil)).Elem() +} + +type VirtualCdromRemotePassthroughBackingOption struct { + VirtualDeviceRemoteDeviceBackingOption + + Exclusive BoolOption `xml:"exclusive"` +} + +func init() { + t["VirtualCdromRemotePassthroughBackingOption"] = reflect.TypeOf((*VirtualCdromRemotePassthroughBackingOption)(nil)).Elem() +} + +type VirtualController struct { + VirtualDevice + + BusNumber int32 `xml:"busNumber"` + Device []int32 `xml:"device,omitempty"` +} + +func init() { + t["VirtualController"] = reflect.TypeOf((*VirtualController)(nil)).Elem() +} + +type VirtualControllerOption struct { + VirtualDeviceOption + + Devices IntOption `xml:"devices"` + SupportedDevice []string `xml:"supportedDevice,omitempty"` +} + +func init() { + t["VirtualControllerOption"] = reflect.TypeOf((*VirtualControllerOption)(nil)).Elem() +} + +type VirtualDevice struct { + DynamicData + + Key int32 `xml:"key"` + DeviceInfo BaseDescription `xml:"deviceInfo,omitempty,typeattr"` + Backing BaseVirtualDeviceBackingInfo `xml:"backing,omitempty,typeattr"` + Connectable *VirtualDeviceConnectInfo `xml:"connectable,omitempty"` + SlotInfo BaseVirtualDeviceBusSlotInfo `xml:"slotInfo,omitempty,typeattr"` + ControllerKey int32 `xml:"controllerKey,omitempty"` + UnitNumber *int32 `xml:"unitNumber"` +} + +func init() { + t["VirtualDevice"] = reflect.TypeOf((*VirtualDevice)(nil)).Elem() +} + +type VirtualDeviceBackingInfo struct { + DynamicData +} + +func init() { + t["VirtualDeviceBackingInfo"] = reflect.TypeOf((*VirtualDeviceBackingInfo)(nil)).Elem() +} + +type VirtualDeviceBackingOption struct { + DynamicData + + Type string `xml:"type"` +} + +func init() { + t["VirtualDeviceBackingOption"] = reflect.TypeOf((*VirtualDeviceBackingOption)(nil)).Elem() +} + +type VirtualDeviceBusSlotInfo struct { + DynamicData +} + +func init() { + t["VirtualDeviceBusSlotInfo"] = reflect.TypeOf((*VirtualDeviceBusSlotInfo)(nil)).Elem() +} + +type VirtualDeviceBusSlotOption struct { + DynamicData + + Type string `xml:"type"` +} + +func init() { + t["VirtualDeviceBusSlotOption"] = reflect.TypeOf((*VirtualDeviceBusSlotOption)(nil)).Elem() +} + +type VirtualDeviceConfigSpec struct { + DynamicData + + Operation VirtualDeviceConfigSpecOperation `xml:"operation,omitempty"` + FileOperation VirtualDeviceConfigSpecFileOperation `xml:"fileOperation,omitempty"` + Device BaseVirtualDevice `xml:"device,typeattr"` + Profile []BaseVirtualMachineProfileSpec `xml:"profile,omitempty,typeattr"` + Backing *VirtualDeviceConfigSpecBackingSpec `xml:"backing,omitempty"` +} + +func init() { + t["VirtualDeviceConfigSpec"] = reflect.TypeOf((*VirtualDeviceConfigSpec)(nil)).Elem() +} + +type VirtualDeviceConfigSpecBackingSpec struct { + DynamicData + + Parent *VirtualDeviceConfigSpecBackingSpec `xml:"parent,omitempty"` + Crypto BaseCryptoSpec `xml:"crypto,omitempty,typeattr"` +} + +func init() { + t["VirtualDeviceConfigSpecBackingSpec"] = reflect.TypeOf((*VirtualDeviceConfigSpecBackingSpec)(nil)).Elem() +} + +type VirtualDeviceConnectInfo struct { + DynamicData + + MigrateConnect string `xml:"migrateConnect,omitempty"` + StartConnected bool `xml:"startConnected"` + AllowGuestControl bool `xml:"allowGuestControl"` + Connected bool `xml:"connected"` + Status string `xml:"status,omitempty"` +} + +func init() { + t["VirtualDeviceConnectInfo"] = reflect.TypeOf((*VirtualDeviceConnectInfo)(nil)).Elem() +} + +type VirtualDeviceConnectOption struct { + DynamicData + + StartConnected BoolOption `xml:"startConnected"` + AllowGuestControl BoolOption `xml:"allowGuestControl"` +} + +func init() { + t["VirtualDeviceConnectOption"] = reflect.TypeOf((*VirtualDeviceConnectOption)(nil)).Elem() +} + +type VirtualDeviceDeviceBackingInfo struct { + VirtualDeviceBackingInfo + + DeviceName string `xml:"deviceName"` + UseAutoDetect *bool `xml:"useAutoDetect"` +} + +func init() { + t["VirtualDeviceDeviceBackingInfo"] = reflect.TypeOf((*VirtualDeviceDeviceBackingInfo)(nil)).Elem() +} + +type VirtualDeviceDeviceBackingOption struct { + VirtualDeviceBackingOption + + AutoDetectAvailable BoolOption `xml:"autoDetectAvailable"` +} + +func init() { + t["VirtualDeviceDeviceBackingOption"] = reflect.TypeOf((*VirtualDeviceDeviceBackingOption)(nil)).Elem() +} + +type VirtualDeviceFileBackingInfo struct { + VirtualDeviceBackingInfo + + FileName string `xml:"fileName"` + Datastore *ManagedObjectReference `xml:"datastore,omitempty"` + BackingObjectId string `xml:"backingObjectId,omitempty"` +} + +func init() { + t["VirtualDeviceFileBackingInfo"] = reflect.TypeOf((*VirtualDeviceFileBackingInfo)(nil)).Elem() +} + +type VirtualDeviceFileBackingOption struct { + VirtualDeviceBackingOption + + FileNameExtensions *ChoiceOption `xml:"fileNameExtensions,omitempty"` +} + +func init() { + t["VirtualDeviceFileBackingOption"] = reflect.TypeOf((*VirtualDeviceFileBackingOption)(nil)).Elem() +} + +type VirtualDeviceOption struct { + DynamicData + + Type string `xml:"type"` + ConnectOption *VirtualDeviceConnectOption `xml:"connectOption,omitempty"` + BusSlotOption *VirtualDeviceBusSlotOption `xml:"busSlotOption,omitempty"` + ControllerType string `xml:"controllerType,omitempty"` + AutoAssignController *BoolOption `xml:"autoAssignController,omitempty"` + BackingOption []BaseVirtualDeviceBackingOption `xml:"backingOption,omitempty,typeattr"` + DefaultBackingOptionIndex int32 `xml:"defaultBackingOptionIndex,omitempty"` + LicensingLimit []string `xml:"licensingLimit,omitempty"` + Deprecated bool `xml:"deprecated"` + PlugAndPlay bool `xml:"plugAndPlay"` + HotRemoveSupported *bool `xml:"hotRemoveSupported"` +} + +func init() { + t["VirtualDeviceOption"] = reflect.TypeOf((*VirtualDeviceOption)(nil)).Elem() +} + +type VirtualDevicePciBusSlotInfo struct { + VirtualDeviceBusSlotInfo + + PciSlotNumber int32 `xml:"pciSlotNumber"` +} + +func init() { + t["VirtualDevicePciBusSlotInfo"] = reflect.TypeOf((*VirtualDevicePciBusSlotInfo)(nil)).Elem() +} + +type VirtualDevicePipeBackingInfo struct { + VirtualDeviceBackingInfo + + PipeName string `xml:"pipeName"` +} + +func init() { + t["VirtualDevicePipeBackingInfo"] = reflect.TypeOf((*VirtualDevicePipeBackingInfo)(nil)).Elem() +} + +type VirtualDevicePipeBackingOption struct { + VirtualDeviceBackingOption +} + +func init() { + t["VirtualDevicePipeBackingOption"] = reflect.TypeOf((*VirtualDevicePipeBackingOption)(nil)).Elem() +} + +type VirtualDeviceRemoteDeviceBackingInfo struct { + VirtualDeviceBackingInfo + + DeviceName string `xml:"deviceName"` + UseAutoDetect *bool `xml:"useAutoDetect"` +} + +func init() { + t["VirtualDeviceRemoteDeviceBackingInfo"] = reflect.TypeOf((*VirtualDeviceRemoteDeviceBackingInfo)(nil)).Elem() +} + +type VirtualDeviceRemoteDeviceBackingOption struct { + VirtualDeviceBackingOption + + AutoDetectAvailable BoolOption `xml:"autoDetectAvailable"` +} + +func init() { + t["VirtualDeviceRemoteDeviceBackingOption"] = reflect.TypeOf((*VirtualDeviceRemoteDeviceBackingOption)(nil)).Elem() +} + +type VirtualDeviceURIBackingInfo struct { + VirtualDeviceBackingInfo + + ServiceURI string `xml:"serviceURI"` + Direction string `xml:"direction"` + ProxyURI string `xml:"proxyURI,omitempty"` +} + +func init() { + t["VirtualDeviceURIBackingInfo"] = reflect.TypeOf((*VirtualDeviceURIBackingInfo)(nil)).Elem() +} + +type VirtualDeviceURIBackingOption struct { + VirtualDeviceBackingOption + + Directions ChoiceOption `xml:"directions"` +} + +func init() { + t["VirtualDeviceURIBackingOption"] = reflect.TypeOf((*VirtualDeviceURIBackingOption)(nil)).Elem() +} + +type VirtualDisk struct { + VirtualDevice + + CapacityInKB int64 `xml:"capacityInKB"` + CapacityInBytes int64 `xml:"capacityInBytes,omitempty"` + Shares *SharesInfo `xml:"shares,omitempty"` + StorageIOAllocation *StorageIOAllocationInfo `xml:"storageIOAllocation,omitempty"` + DiskObjectId string `xml:"diskObjectId,omitempty"` + VFlashCacheConfigInfo *VirtualDiskVFlashCacheConfigInfo `xml:"vFlashCacheConfigInfo,omitempty"` + Iofilter []string `xml:"iofilter,omitempty"` + VDiskId *ID `xml:"vDiskId,omitempty"` + NativeUnmanagedLinkedClone *bool `xml:"nativeUnmanagedLinkedClone"` +} + +func init() { + t["VirtualDisk"] = reflect.TypeOf((*VirtualDisk)(nil)).Elem() +} + +type VirtualDiskAntiAffinityRuleSpec struct { + ClusterRuleInfo + + DiskId []int32 `xml:"diskId"` +} + +func init() { + t["VirtualDiskAntiAffinityRuleSpec"] = reflect.TypeOf((*VirtualDiskAntiAffinityRuleSpec)(nil)).Elem() +} + +type VirtualDiskBlocksNotFullyProvisioned struct { + DeviceBackingNotSupported +} + +func init() { + t["VirtualDiskBlocksNotFullyProvisioned"] = reflect.TypeOf((*VirtualDiskBlocksNotFullyProvisioned)(nil)).Elem() +} + +type VirtualDiskBlocksNotFullyProvisionedFault VirtualDiskBlocksNotFullyProvisioned + +func init() { + t["VirtualDiskBlocksNotFullyProvisionedFault"] = reflect.TypeOf((*VirtualDiskBlocksNotFullyProvisionedFault)(nil)).Elem() +} + +type VirtualDiskConfigSpec struct { + VirtualDeviceConfigSpec + + DiskMoveType string `xml:"diskMoveType,omitempty"` + MigrateCache *bool `xml:"migrateCache"` +} + +func init() { + t["VirtualDiskConfigSpec"] = reflect.TypeOf((*VirtualDiskConfigSpec)(nil)).Elem() +} + +type VirtualDiskDeltaDiskFormatsSupported struct { + DynamicData + + DatastoreType string `xml:"datastoreType"` + DeltaDiskFormat ChoiceOption `xml:"deltaDiskFormat"` +} + +func init() { + t["VirtualDiskDeltaDiskFormatsSupported"] = reflect.TypeOf((*VirtualDiskDeltaDiskFormatsSupported)(nil)).Elem() +} + +type VirtualDiskFlatVer1BackingInfo struct { + VirtualDeviceFileBackingInfo + + DiskMode string `xml:"diskMode"` + Split *bool `xml:"split"` + WriteThrough *bool `xml:"writeThrough"` + ContentId string `xml:"contentId,omitempty"` + Parent *VirtualDiskFlatVer1BackingInfo `xml:"parent,omitempty"` +} + +func init() { + t["VirtualDiskFlatVer1BackingInfo"] = reflect.TypeOf((*VirtualDiskFlatVer1BackingInfo)(nil)).Elem() +} + +type VirtualDiskFlatVer1BackingOption struct { + VirtualDeviceFileBackingOption + + DiskMode ChoiceOption `xml:"diskMode"` + Split BoolOption `xml:"split"` + WriteThrough BoolOption `xml:"writeThrough"` + Growable bool `xml:"growable"` +} + +func init() { + t["VirtualDiskFlatVer1BackingOption"] = reflect.TypeOf((*VirtualDiskFlatVer1BackingOption)(nil)).Elem() +} + +type VirtualDiskFlatVer2BackingInfo struct { + VirtualDeviceFileBackingInfo + + DiskMode string `xml:"diskMode"` + Split *bool `xml:"split"` + WriteThrough *bool `xml:"writeThrough"` + ThinProvisioned *bool `xml:"thinProvisioned"` + EagerlyScrub *bool `xml:"eagerlyScrub"` + Uuid string `xml:"uuid,omitempty"` + ContentId string `xml:"contentId,omitempty"` + ChangeId string `xml:"changeId,omitempty"` + Parent *VirtualDiskFlatVer2BackingInfo `xml:"parent,omitempty"` + DeltaDiskFormat string `xml:"deltaDiskFormat,omitempty"` + DigestEnabled *bool `xml:"digestEnabled"` + DeltaGrainSize int32 `xml:"deltaGrainSize,omitempty"` + DeltaDiskFormatVariant string `xml:"deltaDiskFormatVariant,omitempty"` + Sharing string `xml:"sharing,omitempty"` + KeyId *CryptoKeyId `xml:"keyId,omitempty"` +} + +func init() { + t["VirtualDiskFlatVer2BackingInfo"] = reflect.TypeOf((*VirtualDiskFlatVer2BackingInfo)(nil)).Elem() +} + +type VirtualDiskFlatVer2BackingOption struct { + VirtualDeviceFileBackingOption + + DiskMode ChoiceOption `xml:"diskMode"` + Split BoolOption `xml:"split"` + WriteThrough BoolOption `xml:"writeThrough"` + Growable bool `xml:"growable"` + HotGrowable bool `xml:"hotGrowable"` + Uuid bool `xml:"uuid"` + ThinProvisioned *BoolOption `xml:"thinProvisioned,omitempty"` + EagerlyScrub *BoolOption `xml:"eagerlyScrub,omitempty"` + DeltaDiskFormat *ChoiceOption `xml:"deltaDiskFormat,omitempty"` + DeltaDiskFormatsSupported []VirtualDiskDeltaDiskFormatsSupported `xml:"deltaDiskFormatsSupported,omitempty"` +} + +func init() { + t["VirtualDiskFlatVer2BackingOption"] = reflect.TypeOf((*VirtualDiskFlatVer2BackingOption)(nil)).Elem() +} + +type VirtualDiskId struct { + DynamicData + + Vm ManagedObjectReference `xml:"vm"` + DiskId int32 `xml:"diskId"` +} + +func init() { + t["VirtualDiskId"] = reflect.TypeOf((*VirtualDiskId)(nil)).Elem() +} + +type VirtualDiskLocalPMemBackingInfo struct { + VirtualDeviceFileBackingInfo + + DiskMode string `xml:"diskMode"` + Uuid string `xml:"uuid,omitempty"` + VolumeUUID string `xml:"volumeUUID,omitempty"` + ContentId string `xml:"contentId,omitempty"` +} + +func init() { + t["VirtualDiskLocalPMemBackingInfo"] = reflect.TypeOf((*VirtualDiskLocalPMemBackingInfo)(nil)).Elem() +} + +type VirtualDiskLocalPMemBackingOption struct { + VirtualDeviceFileBackingOption + + DiskMode ChoiceOption `xml:"diskMode"` + Growable bool `xml:"growable"` + HotGrowable bool `xml:"hotGrowable"` + Uuid bool `xml:"uuid"` +} + +func init() { + t["VirtualDiskLocalPMemBackingOption"] = reflect.TypeOf((*VirtualDiskLocalPMemBackingOption)(nil)).Elem() +} + +type VirtualDiskModeNotSupported struct { + DeviceNotSupported + + Mode string `xml:"mode"` +} + +func init() { + t["VirtualDiskModeNotSupported"] = reflect.TypeOf((*VirtualDiskModeNotSupported)(nil)).Elem() +} + +type VirtualDiskModeNotSupportedFault VirtualDiskModeNotSupported + +func init() { + t["VirtualDiskModeNotSupportedFault"] = reflect.TypeOf((*VirtualDiskModeNotSupportedFault)(nil)).Elem() +} + +type VirtualDiskOption struct { + VirtualDeviceOption + + CapacityInKB LongOption `xml:"capacityInKB"` + IoAllocationOption *StorageIOAllocationOption `xml:"ioAllocationOption,omitempty"` + VFlashCacheConfigOption *VirtualDiskOptionVFlashCacheConfigOption `xml:"vFlashCacheConfigOption,omitempty"` +} + +func init() { + t["VirtualDiskOption"] = reflect.TypeOf((*VirtualDiskOption)(nil)).Elem() +} + +type VirtualDiskOptionVFlashCacheConfigOption struct { + DynamicData + + CacheConsistencyType ChoiceOption `xml:"cacheConsistencyType"` + CacheMode ChoiceOption `xml:"cacheMode"` + ReservationInMB LongOption `xml:"reservationInMB"` + BlockSizeInKB LongOption `xml:"blockSizeInKB"` +} + +func init() { + t["VirtualDiskOptionVFlashCacheConfigOption"] = reflect.TypeOf((*VirtualDiskOptionVFlashCacheConfigOption)(nil)).Elem() +} + +type VirtualDiskPartitionedRawDiskVer2BackingInfo struct { + VirtualDiskRawDiskVer2BackingInfo + + Partition []int32 `xml:"partition"` +} + +func init() { + t["VirtualDiskPartitionedRawDiskVer2BackingInfo"] = reflect.TypeOf((*VirtualDiskPartitionedRawDiskVer2BackingInfo)(nil)).Elem() +} + +type VirtualDiskPartitionedRawDiskVer2BackingOption struct { + VirtualDiskRawDiskVer2BackingOption +} + +func init() { + t["VirtualDiskPartitionedRawDiskVer2BackingOption"] = reflect.TypeOf((*VirtualDiskPartitionedRawDiskVer2BackingOption)(nil)).Elem() +} + +type VirtualDiskRawDiskMappingVer1BackingInfo struct { + VirtualDeviceFileBackingInfo + + LunUuid string `xml:"lunUuid,omitempty"` + DeviceName string `xml:"deviceName,omitempty"` + CompatibilityMode string `xml:"compatibilityMode,omitempty"` + DiskMode string `xml:"diskMode,omitempty"` + Uuid string `xml:"uuid,omitempty"` + ContentId string `xml:"contentId,omitempty"` + ChangeId string `xml:"changeId,omitempty"` + Parent *VirtualDiskRawDiskMappingVer1BackingInfo `xml:"parent,omitempty"` + DeltaDiskFormat string `xml:"deltaDiskFormat,omitempty"` + DeltaGrainSize int32 `xml:"deltaGrainSize,omitempty"` + Sharing string `xml:"sharing,omitempty"` +} + +func init() { + t["VirtualDiskRawDiskMappingVer1BackingInfo"] = reflect.TypeOf((*VirtualDiskRawDiskMappingVer1BackingInfo)(nil)).Elem() +} + +type VirtualDiskRawDiskMappingVer1BackingOption struct { + VirtualDeviceDeviceBackingOption + + DescriptorFileNameExtensions *ChoiceOption `xml:"descriptorFileNameExtensions,omitempty"` + CompatibilityMode ChoiceOption `xml:"compatibilityMode"` + DiskMode ChoiceOption `xml:"diskMode"` + Uuid bool `xml:"uuid"` +} + +func init() { + t["VirtualDiskRawDiskMappingVer1BackingOption"] = reflect.TypeOf((*VirtualDiskRawDiskMappingVer1BackingOption)(nil)).Elem() +} + +type VirtualDiskRawDiskVer2BackingInfo struct { + VirtualDeviceDeviceBackingInfo + + DescriptorFileName string `xml:"descriptorFileName"` + Uuid string `xml:"uuid,omitempty"` + ChangeId string `xml:"changeId,omitempty"` + Sharing string `xml:"sharing,omitempty"` +} + +func init() { + t["VirtualDiskRawDiskVer2BackingInfo"] = reflect.TypeOf((*VirtualDiskRawDiskVer2BackingInfo)(nil)).Elem() +} + +type VirtualDiskRawDiskVer2BackingOption struct { + VirtualDeviceDeviceBackingOption + + DescriptorFileNameExtensions ChoiceOption `xml:"descriptorFileNameExtensions"` + Uuid bool `xml:"uuid"` +} + +func init() { + t["VirtualDiskRawDiskVer2BackingOption"] = reflect.TypeOf((*VirtualDiskRawDiskVer2BackingOption)(nil)).Elem() +} + +type VirtualDiskRuleSpec struct { + ClusterRuleInfo + + DiskRuleType string `xml:"diskRuleType"` + DiskId []int32 `xml:"diskId,omitempty"` +} + +func init() { + t["VirtualDiskRuleSpec"] = reflect.TypeOf((*VirtualDiskRuleSpec)(nil)).Elem() +} + +type VirtualDiskSeSparseBackingInfo struct { + VirtualDeviceFileBackingInfo + + DiskMode string `xml:"diskMode"` + WriteThrough *bool `xml:"writeThrough"` + Uuid string `xml:"uuid,omitempty"` + ContentId string `xml:"contentId,omitempty"` + ChangeId string `xml:"changeId,omitempty"` + Parent *VirtualDiskSeSparseBackingInfo `xml:"parent,omitempty"` + DeltaDiskFormat string `xml:"deltaDiskFormat,omitempty"` + DigestEnabled *bool `xml:"digestEnabled"` + GrainSize int32 `xml:"grainSize,omitempty"` + KeyId *CryptoKeyId `xml:"keyId,omitempty"` +} + +func init() { + t["VirtualDiskSeSparseBackingInfo"] = reflect.TypeOf((*VirtualDiskSeSparseBackingInfo)(nil)).Elem() +} + +type VirtualDiskSeSparseBackingOption struct { + VirtualDeviceFileBackingOption + + DiskMode ChoiceOption `xml:"diskMode"` + WriteThrough BoolOption `xml:"writeThrough"` + Growable bool `xml:"growable"` + HotGrowable bool `xml:"hotGrowable"` + Uuid bool `xml:"uuid"` + DeltaDiskFormatsSupported []VirtualDiskDeltaDiskFormatsSupported `xml:"deltaDiskFormatsSupported"` +} + +func init() { + t["VirtualDiskSeSparseBackingOption"] = reflect.TypeOf((*VirtualDiskSeSparseBackingOption)(nil)).Elem() +} + +type VirtualDiskSparseVer1BackingInfo struct { + VirtualDeviceFileBackingInfo + + DiskMode string `xml:"diskMode"` + Split *bool `xml:"split"` + WriteThrough *bool `xml:"writeThrough"` + SpaceUsedInKB int64 `xml:"spaceUsedInKB,omitempty"` + ContentId string `xml:"contentId,omitempty"` + Parent *VirtualDiskSparseVer1BackingInfo `xml:"parent,omitempty"` +} + +func init() { + t["VirtualDiskSparseVer1BackingInfo"] = reflect.TypeOf((*VirtualDiskSparseVer1BackingInfo)(nil)).Elem() +} + +type VirtualDiskSparseVer1BackingOption struct { + VirtualDeviceFileBackingOption + + DiskModes ChoiceOption `xml:"diskModes"` + Split BoolOption `xml:"split"` + WriteThrough BoolOption `xml:"writeThrough"` + Growable bool `xml:"growable"` +} + +func init() { + t["VirtualDiskSparseVer1BackingOption"] = reflect.TypeOf((*VirtualDiskSparseVer1BackingOption)(nil)).Elem() +} + +type VirtualDiskSparseVer2BackingInfo struct { + VirtualDeviceFileBackingInfo + + DiskMode string `xml:"diskMode"` + Split *bool `xml:"split"` + WriteThrough *bool `xml:"writeThrough"` + SpaceUsedInKB int64 `xml:"spaceUsedInKB,omitempty"` + Uuid string `xml:"uuid,omitempty"` + ContentId string `xml:"contentId,omitempty"` + ChangeId string `xml:"changeId,omitempty"` + Parent *VirtualDiskSparseVer2BackingInfo `xml:"parent,omitempty"` + KeyId *CryptoKeyId `xml:"keyId,omitempty"` +} + +func init() { + t["VirtualDiskSparseVer2BackingInfo"] = reflect.TypeOf((*VirtualDiskSparseVer2BackingInfo)(nil)).Elem() +} + +type VirtualDiskSparseVer2BackingOption struct { + VirtualDeviceFileBackingOption + + DiskMode ChoiceOption `xml:"diskMode"` + Split BoolOption `xml:"split"` + WriteThrough BoolOption `xml:"writeThrough"` + Growable bool `xml:"growable"` + HotGrowable bool `xml:"hotGrowable"` + Uuid bool `xml:"uuid"` +} + +func init() { + t["VirtualDiskSparseVer2BackingOption"] = reflect.TypeOf((*VirtualDiskSparseVer2BackingOption)(nil)).Elem() +} + +type VirtualDiskSpec struct { + DynamicData + + DiskType string `xml:"diskType"` + AdapterType string `xml:"adapterType"` +} + +func init() { + t["VirtualDiskSpec"] = reflect.TypeOf((*VirtualDiskSpec)(nil)).Elem() +} + +type VirtualDiskVFlashCacheConfigInfo struct { + DynamicData + + VFlashModule string `xml:"vFlashModule,omitempty"` + ReservationInMB int64 `xml:"reservationInMB,omitempty"` + CacheConsistencyType string `xml:"cacheConsistencyType,omitempty"` + CacheMode string `xml:"cacheMode,omitempty"` + BlockSizeInKB int64 `xml:"blockSizeInKB,omitempty"` +} + +func init() { + t["VirtualDiskVFlashCacheConfigInfo"] = reflect.TypeOf((*VirtualDiskVFlashCacheConfigInfo)(nil)).Elem() +} + +type VirtualE1000 struct { + VirtualEthernetCard +} + +func init() { + t["VirtualE1000"] = reflect.TypeOf((*VirtualE1000)(nil)).Elem() +} + +type VirtualE1000Option struct { + VirtualEthernetCardOption +} + +func init() { + t["VirtualE1000Option"] = reflect.TypeOf((*VirtualE1000Option)(nil)).Elem() +} + +type VirtualE1000e struct { + VirtualEthernetCard +} + +func init() { + t["VirtualE1000e"] = reflect.TypeOf((*VirtualE1000e)(nil)).Elem() +} + +type VirtualE1000eOption struct { + VirtualEthernetCardOption +} + +func init() { + t["VirtualE1000eOption"] = reflect.TypeOf((*VirtualE1000eOption)(nil)).Elem() +} + +type VirtualEnsoniq1371 struct { + VirtualSoundCard +} + +func init() { + t["VirtualEnsoniq1371"] = reflect.TypeOf((*VirtualEnsoniq1371)(nil)).Elem() +} + +type VirtualEnsoniq1371Option struct { + VirtualSoundCardOption +} + +func init() { + t["VirtualEnsoniq1371Option"] = reflect.TypeOf((*VirtualEnsoniq1371Option)(nil)).Elem() +} + +type VirtualEthernetCard struct { + VirtualDevice + + AddressType string `xml:"addressType,omitempty"` + MacAddress string `xml:"macAddress,omitempty"` + WakeOnLanEnabled *bool `xml:"wakeOnLanEnabled"` + ResourceAllocation *VirtualEthernetCardResourceAllocation `xml:"resourceAllocation,omitempty"` + ExternalId string `xml:"externalId,omitempty"` + UptCompatibilityEnabled *bool `xml:"uptCompatibilityEnabled"` +} + +func init() { + t["VirtualEthernetCard"] = reflect.TypeOf((*VirtualEthernetCard)(nil)).Elem() +} + +type VirtualEthernetCardDVPortBackingOption struct { + VirtualDeviceBackingOption +} + +func init() { + t["VirtualEthernetCardDVPortBackingOption"] = reflect.TypeOf((*VirtualEthernetCardDVPortBackingOption)(nil)).Elem() +} + +type VirtualEthernetCardDistributedVirtualPortBackingInfo struct { + VirtualDeviceBackingInfo + + Port DistributedVirtualSwitchPortConnection `xml:"port"` +} + +func init() { + t["VirtualEthernetCardDistributedVirtualPortBackingInfo"] = reflect.TypeOf((*VirtualEthernetCardDistributedVirtualPortBackingInfo)(nil)).Elem() +} + +type VirtualEthernetCardLegacyNetworkBackingInfo struct { + VirtualDeviceDeviceBackingInfo +} + +func init() { + t["VirtualEthernetCardLegacyNetworkBackingInfo"] = reflect.TypeOf((*VirtualEthernetCardLegacyNetworkBackingInfo)(nil)).Elem() +} + +type VirtualEthernetCardLegacyNetworkBackingOption struct { + VirtualDeviceDeviceBackingOption +} + +func init() { + t["VirtualEthernetCardLegacyNetworkBackingOption"] = reflect.TypeOf((*VirtualEthernetCardLegacyNetworkBackingOption)(nil)).Elem() +} + +type VirtualEthernetCardNetworkBackingInfo struct { + VirtualDeviceDeviceBackingInfo + + Network *ManagedObjectReference `xml:"network,omitempty"` + InPassthroughMode *bool `xml:"inPassthroughMode"` +} + +func init() { + t["VirtualEthernetCardNetworkBackingInfo"] = reflect.TypeOf((*VirtualEthernetCardNetworkBackingInfo)(nil)).Elem() +} + +type VirtualEthernetCardNetworkBackingOption struct { + VirtualDeviceDeviceBackingOption +} + +func init() { + t["VirtualEthernetCardNetworkBackingOption"] = reflect.TypeOf((*VirtualEthernetCardNetworkBackingOption)(nil)).Elem() +} + +type VirtualEthernetCardNotSupported struct { + DeviceNotSupported +} + +func init() { + t["VirtualEthernetCardNotSupported"] = reflect.TypeOf((*VirtualEthernetCardNotSupported)(nil)).Elem() +} + +type VirtualEthernetCardNotSupportedFault VirtualEthernetCardNotSupported + +func init() { + t["VirtualEthernetCardNotSupportedFault"] = reflect.TypeOf((*VirtualEthernetCardNotSupportedFault)(nil)).Elem() +} + +type VirtualEthernetCardOpaqueNetworkBackingInfo struct { + VirtualDeviceBackingInfo + + OpaqueNetworkId string `xml:"opaqueNetworkId"` + OpaqueNetworkType string `xml:"opaqueNetworkType"` +} + +func init() { + t["VirtualEthernetCardOpaqueNetworkBackingInfo"] = reflect.TypeOf((*VirtualEthernetCardOpaqueNetworkBackingInfo)(nil)).Elem() +} + +type VirtualEthernetCardOpaqueNetworkBackingOption struct { + VirtualDeviceBackingOption +} + +func init() { + t["VirtualEthernetCardOpaqueNetworkBackingOption"] = reflect.TypeOf((*VirtualEthernetCardOpaqueNetworkBackingOption)(nil)).Elem() +} + +type VirtualEthernetCardOption struct { + VirtualDeviceOption + + SupportedOUI ChoiceOption `xml:"supportedOUI"` + MacType ChoiceOption `xml:"macType"` + WakeOnLanEnabled BoolOption `xml:"wakeOnLanEnabled"` + VmDirectPathGen2Supported *bool `xml:"vmDirectPathGen2Supported"` + UptCompatibilityEnabled *BoolOption `xml:"uptCompatibilityEnabled,omitempty"` +} + +func init() { + t["VirtualEthernetCardOption"] = reflect.TypeOf((*VirtualEthernetCardOption)(nil)).Elem() +} + +type VirtualEthernetCardResourceAllocation struct { + DynamicData + + Reservation *int64 `xml:"reservation"` + Share SharesInfo `xml:"share"` + Limit *int64 `xml:"limit"` +} + +func init() { + t["VirtualEthernetCardResourceAllocation"] = reflect.TypeOf((*VirtualEthernetCardResourceAllocation)(nil)).Elem() +} + +type VirtualFloppy struct { + VirtualDevice +} + +func init() { + t["VirtualFloppy"] = reflect.TypeOf((*VirtualFloppy)(nil)).Elem() +} + +type VirtualFloppyDeviceBackingInfo struct { + VirtualDeviceDeviceBackingInfo +} + +func init() { + t["VirtualFloppyDeviceBackingInfo"] = reflect.TypeOf((*VirtualFloppyDeviceBackingInfo)(nil)).Elem() +} + +type VirtualFloppyDeviceBackingOption struct { + VirtualDeviceDeviceBackingOption +} + +func init() { + t["VirtualFloppyDeviceBackingOption"] = reflect.TypeOf((*VirtualFloppyDeviceBackingOption)(nil)).Elem() +} + +type VirtualFloppyImageBackingInfo struct { + VirtualDeviceFileBackingInfo +} + +func init() { + t["VirtualFloppyImageBackingInfo"] = reflect.TypeOf((*VirtualFloppyImageBackingInfo)(nil)).Elem() +} + +type VirtualFloppyImageBackingOption struct { + VirtualDeviceFileBackingOption +} + +func init() { + t["VirtualFloppyImageBackingOption"] = reflect.TypeOf((*VirtualFloppyImageBackingOption)(nil)).Elem() +} + +type VirtualFloppyOption struct { + VirtualDeviceOption +} + +func init() { + t["VirtualFloppyOption"] = reflect.TypeOf((*VirtualFloppyOption)(nil)).Elem() +} + +type VirtualFloppyRemoteDeviceBackingInfo struct { + VirtualDeviceRemoteDeviceBackingInfo +} + +func init() { + t["VirtualFloppyRemoteDeviceBackingInfo"] = reflect.TypeOf((*VirtualFloppyRemoteDeviceBackingInfo)(nil)).Elem() +} + +type VirtualFloppyRemoteDeviceBackingOption struct { + VirtualDeviceRemoteDeviceBackingOption +} + +func init() { + t["VirtualFloppyRemoteDeviceBackingOption"] = reflect.TypeOf((*VirtualFloppyRemoteDeviceBackingOption)(nil)).Elem() +} + +type VirtualHardware struct { + DynamicData + + NumCPU int32 `xml:"numCPU"` + NumCoresPerSocket int32 `xml:"numCoresPerSocket,omitempty"` + MemoryMB int32 `xml:"memoryMB"` + VirtualICH7MPresent *bool `xml:"virtualICH7MPresent"` + VirtualSMCPresent *bool `xml:"virtualSMCPresent"` + Device []BaseVirtualDevice `xml:"device,omitempty,typeattr"` +} + +func init() { + t["VirtualHardware"] = reflect.TypeOf((*VirtualHardware)(nil)).Elem() +} + +type VirtualHardwareCompatibilityIssue struct { + VmConfigFault +} + +func init() { + t["VirtualHardwareCompatibilityIssue"] = reflect.TypeOf((*VirtualHardwareCompatibilityIssue)(nil)).Elem() +} + +type VirtualHardwareCompatibilityIssueFault BaseVirtualHardwareCompatibilityIssue + +func init() { + t["VirtualHardwareCompatibilityIssueFault"] = reflect.TypeOf((*VirtualHardwareCompatibilityIssueFault)(nil)).Elem() +} + +type VirtualHardwareOption struct { + DynamicData + + HwVersion int32 `xml:"hwVersion"` + VirtualDeviceOption []BaseVirtualDeviceOption `xml:"virtualDeviceOption,typeattr"` + DeviceListReadonly bool `xml:"deviceListReadonly"` + NumCPU []int32 `xml:"numCPU"` + NumCoresPerSocket *IntOption `xml:"numCoresPerSocket,omitempty"` + NumCpuReadonly bool `xml:"numCpuReadonly"` + MemoryMB LongOption `xml:"memoryMB"` + NumPCIControllers IntOption `xml:"numPCIControllers"` + NumIDEControllers IntOption `xml:"numIDEControllers"` + NumUSBControllers IntOption `xml:"numUSBControllers"` + NumUSBXHCIControllers *IntOption `xml:"numUSBXHCIControllers,omitempty"` + NumSIOControllers IntOption `xml:"numSIOControllers"` + NumPS2Controllers IntOption `xml:"numPS2Controllers"` + LicensingLimit []string `xml:"licensingLimit,omitempty"` + NumSupportedWwnPorts *IntOption `xml:"numSupportedWwnPorts,omitempty"` + NumSupportedWwnNodes *IntOption `xml:"numSupportedWwnNodes,omitempty"` + ResourceConfigOption *ResourceConfigOption `xml:"resourceConfigOption,omitempty"` + NumNVDIMMControllers *IntOption `xml:"numNVDIMMControllers,omitempty"` + NumTPMDevices *IntOption `xml:"numTPMDevices,omitempty"` + NumWDTDevices *IntOption `xml:"numWDTDevices,omitempty"` + NumPrecisionClockDevices *IntOption `xml:"numPrecisionClockDevices,omitempty"` + EpcMemoryMB *LongOption `xml:"epcMemoryMB,omitempty"` +} + +func init() { + t["VirtualHardwareOption"] = reflect.TypeOf((*VirtualHardwareOption)(nil)).Elem() +} + +type VirtualHardwareVersionNotSupported struct { + VirtualHardwareCompatibilityIssue + + HostName string `xml:"hostName"` + Host ManagedObjectReference `xml:"host"` +} + +func init() { + t["VirtualHardwareVersionNotSupported"] = reflect.TypeOf((*VirtualHardwareVersionNotSupported)(nil)).Elem() +} + +type VirtualHardwareVersionNotSupportedFault VirtualHardwareVersionNotSupported + +func init() { + t["VirtualHardwareVersionNotSupportedFault"] = reflect.TypeOf((*VirtualHardwareVersionNotSupportedFault)(nil)).Elem() +} + +type VirtualHdAudioCard struct { + VirtualSoundCard +} + +func init() { + t["VirtualHdAudioCard"] = reflect.TypeOf((*VirtualHdAudioCard)(nil)).Elem() +} + +type VirtualHdAudioCardOption struct { + VirtualSoundCardOption +} + +func init() { + t["VirtualHdAudioCardOption"] = reflect.TypeOf((*VirtualHdAudioCardOption)(nil)).Elem() +} + +type VirtualIDEController struct { + VirtualController +} + +func init() { + t["VirtualIDEController"] = reflect.TypeOf((*VirtualIDEController)(nil)).Elem() +} + +type VirtualIDEControllerOption struct { + VirtualControllerOption + + NumIDEDisks IntOption `xml:"numIDEDisks"` + NumIDECdroms IntOption `xml:"numIDECdroms"` +} + +func init() { + t["VirtualIDEControllerOption"] = reflect.TypeOf((*VirtualIDEControllerOption)(nil)).Elem() +} + +type VirtualKeyboard struct { + VirtualDevice +} + +func init() { + t["VirtualKeyboard"] = reflect.TypeOf((*VirtualKeyboard)(nil)).Elem() +} + +type VirtualKeyboardOption struct { + VirtualDeviceOption +} + +func init() { + t["VirtualKeyboardOption"] = reflect.TypeOf((*VirtualKeyboardOption)(nil)).Elem() +} + +type VirtualLsiLogicController struct { + VirtualSCSIController +} + +func init() { + t["VirtualLsiLogicController"] = reflect.TypeOf((*VirtualLsiLogicController)(nil)).Elem() +} + +type VirtualLsiLogicControllerOption struct { + VirtualSCSIControllerOption +} + +func init() { + t["VirtualLsiLogicControllerOption"] = reflect.TypeOf((*VirtualLsiLogicControllerOption)(nil)).Elem() +} + +type VirtualLsiLogicSASController struct { + VirtualSCSIController +} + +func init() { + t["VirtualLsiLogicSASController"] = reflect.TypeOf((*VirtualLsiLogicSASController)(nil)).Elem() +} + +type VirtualLsiLogicSASControllerOption struct { + VirtualSCSIControllerOption +} + +func init() { + t["VirtualLsiLogicSASControllerOption"] = reflect.TypeOf((*VirtualLsiLogicSASControllerOption)(nil)).Elem() +} + +type VirtualMachineAffinityInfo struct { + DynamicData + + AffinitySet []int32 `xml:"affinitySet"` +} + +func init() { + t["VirtualMachineAffinityInfo"] = reflect.TypeOf((*VirtualMachineAffinityInfo)(nil)).Elem() +} + +type VirtualMachineBootOptions struct { + DynamicData + + BootDelay int64 `xml:"bootDelay,omitempty"` + EnterBIOSSetup *bool `xml:"enterBIOSSetup"` + EfiSecureBootEnabled *bool `xml:"efiSecureBootEnabled"` + BootRetryEnabled *bool `xml:"bootRetryEnabled"` + BootRetryDelay int64 `xml:"bootRetryDelay,omitempty"` + BootOrder []BaseVirtualMachineBootOptionsBootableDevice `xml:"bootOrder,omitempty,typeattr"` + NetworkBootProtocol string `xml:"networkBootProtocol,omitempty"` +} + +func init() { + t["VirtualMachineBootOptions"] = reflect.TypeOf((*VirtualMachineBootOptions)(nil)).Elem() +} + +type VirtualMachineBootOptionsBootableCdromDevice struct { + VirtualMachineBootOptionsBootableDevice +} + +func init() { + t["VirtualMachineBootOptionsBootableCdromDevice"] = reflect.TypeOf((*VirtualMachineBootOptionsBootableCdromDevice)(nil)).Elem() +} + +type VirtualMachineBootOptionsBootableDevice struct { + DynamicData +} + +func init() { + t["VirtualMachineBootOptionsBootableDevice"] = reflect.TypeOf((*VirtualMachineBootOptionsBootableDevice)(nil)).Elem() +} + +type VirtualMachineBootOptionsBootableDiskDevice struct { + VirtualMachineBootOptionsBootableDevice + + DeviceKey int32 `xml:"deviceKey"` +} + +func init() { + t["VirtualMachineBootOptionsBootableDiskDevice"] = reflect.TypeOf((*VirtualMachineBootOptionsBootableDiskDevice)(nil)).Elem() +} + +type VirtualMachineBootOptionsBootableEthernetDevice struct { + VirtualMachineBootOptionsBootableDevice + + DeviceKey int32 `xml:"deviceKey"` +} + +func init() { + t["VirtualMachineBootOptionsBootableEthernetDevice"] = reflect.TypeOf((*VirtualMachineBootOptionsBootableEthernetDevice)(nil)).Elem() +} + +type VirtualMachineBootOptionsBootableFloppyDevice struct { + VirtualMachineBootOptionsBootableDevice +} + +func init() { + t["VirtualMachineBootOptionsBootableFloppyDevice"] = reflect.TypeOf((*VirtualMachineBootOptionsBootableFloppyDevice)(nil)).Elem() +} + +type VirtualMachineCapability struct { + DynamicData + + SnapshotOperationsSupported bool `xml:"snapshotOperationsSupported"` + MultipleSnapshotsSupported bool `xml:"multipleSnapshotsSupported"` + SnapshotConfigSupported bool `xml:"snapshotConfigSupported"` + PoweredOffSnapshotsSupported bool `xml:"poweredOffSnapshotsSupported"` + MemorySnapshotsSupported bool `xml:"memorySnapshotsSupported"` + RevertToSnapshotSupported bool `xml:"revertToSnapshotSupported"` + QuiescedSnapshotsSupported bool `xml:"quiescedSnapshotsSupported"` + DisableSnapshotsSupported bool `xml:"disableSnapshotsSupported"` + LockSnapshotsSupported bool `xml:"lockSnapshotsSupported"` + ConsolePreferencesSupported bool `xml:"consolePreferencesSupported"` + CpuFeatureMaskSupported bool `xml:"cpuFeatureMaskSupported"` + S1AcpiManagementSupported bool `xml:"s1AcpiManagementSupported"` + SettingScreenResolutionSupported bool `xml:"settingScreenResolutionSupported"` + ToolsAutoUpdateSupported bool `xml:"toolsAutoUpdateSupported"` + VmNpivWwnSupported bool `xml:"vmNpivWwnSupported"` + NpivWwnOnNonRdmVmSupported bool `xml:"npivWwnOnNonRdmVmSupported"` + VmNpivWwnDisableSupported *bool `xml:"vmNpivWwnDisableSupported"` + VmNpivWwnUpdateSupported *bool `xml:"vmNpivWwnUpdateSupported"` + SwapPlacementSupported bool `xml:"swapPlacementSupported"` + ToolsSyncTimeSupported bool `xml:"toolsSyncTimeSupported"` + VirtualMmuUsageSupported bool `xml:"virtualMmuUsageSupported"` + DiskSharesSupported bool `xml:"diskSharesSupported"` + BootOptionsSupported bool `xml:"bootOptionsSupported"` + BootRetryOptionsSupported *bool `xml:"bootRetryOptionsSupported"` + SettingVideoRamSizeSupported bool `xml:"settingVideoRamSizeSupported"` + SettingDisplayTopologySupported *bool `xml:"settingDisplayTopologySupported"` + RecordReplaySupported *bool `xml:"recordReplaySupported"` + ChangeTrackingSupported *bool `xml:"changeTrackingSupported"` + MultipleCoresPerSocketSupported *bool `xml:"multipleCoresPerSocketSupported"` + HostBasedReplicationSupported *bool `xml:"hostBasedReplicationSupported"` + GuestAutoLockSupported *bool `xml:"guestAutoLockSupported"` + MemoryReservationLockSupported *bool `xml:"memoryReservationLockSupported"` + FeatureRequirementSupported *bool `xml:"featureRequirementSupported"` + PoweredOnMonitorTypeChangeSupported *bool `xml:"poweredOnMonitorTypeChangeSupported"` + SeSparseDiskSupported *bool `xml:"seSparseDiskSupported"` + NestedHVSupported *bool `xml:"nestedHVSupported"` + VPMCSupported *bool `xml:"vPMCSupported"` + SecureBootSupported *bool `xml:"secureBootSupported"` + PerVmEvcSupported *bool `xml:"perVmEvcSupported"` + VirtualMmuUsageIgnored *bool `xml:"virtualMmuUsageIgnored"` + VirtualExecUsageIgnored *bool `xml:"virtualExecUsageIgnored"` + DiskOnlySnapshotOnSuspendedVMSupported *bool `xml:"diskOnlySnapshotOnSuspendedVMSupported"` +} + +func init() { + t["VirtualMachineCapability"] = reflect.TypeOf((*VirtualMachineCapability)(nil)).Elem() +} + +type VirtualMachineCdromInfo struct { + VirtualMachineTargetInfo + + Description string `xml:"description,omitempty"` +} + +func init() { + t["VirtualMachineCdromInfo"] = reflect.TypeOf((*VirtualMachineCdromInfo)(nil)).Elem() +} + +type VirtualMachineCloneSpec struct { + DynamicData + + Location VirtualMachineRelocateSpec `xml:"location"` + Template bool `xml:"template"` + Config *VirtualMachineConfigSpec `xml:"config,omitempty"` + Customization *CustomizationSpec `xml:"customization,omitempty"` + PowerOn bool `xml:"powerOn"` + Snapshot *ManagedObjectReference `xml:"snapshot,omitempty"` + Memory *bool `xml:"memory"` +} + +func init() { + t["VirtualMachineCloneSpec"] = reflect.TypeOf((*VirtualMachineCloneSpec)(nil)).Elem() +} + +type VirtualMachineConfigInfo struct { + DynamicData + + ChangeVersion string `xml:"changeVersion"` + Modified time.Time `xml:"modified"` + Name string `xml:"name"` + GuestFullName string `xml:"guestFullName"` + Version string `xml:"version"` + Uuid string `xml:"uuid"` + CreateDate *time.Time `xml:"createDate"` + InstanceUuid string `xml:"instanceUuid,omitempty"` + NpivNodeWorldWideName []int64 `xml:"npivNodeWorldWideName,omitempty"` + NpivPortWorldWideName []int64 `xml:"npivPortWorldWideName,omitempty"` + NpivWorldWideNameType string `xml:"npivWorldWideNameType,omitempty"` + NpivDesiredNodeWwns int16 `xml:"npivDesiredNodeWwns,omitempty"` + NpivDesiredPortWwns int16 `xml:"npivDesiredPortWwns,omitempty"` + NpivTemporaryDisabled *bool `xml:"npivTemporaryDisabled"` + NpivOnNonRdmDisks *bool `xml:"npivOnNonRdmDisks"` + LocationId string `xml:"locationId,omitempty"` + Template bool `xml:"template"` + GuestId string `xml:"guestId"` + AlternateGuestName string `xml:"alternateGuestName"` + Annotation string `xml:"annotation,omitempty"` + Files VirtualMachineFileInfo `xml:"files"` + Tools *ToolsConfigInfo `xml:"tools,omitempty"` + Flags VirtualMachineFlagInfo `xml:"flags"` + ConsolePreferences *VirtualMachineConsolePreferences `xml:"consolePreferences,omitempty"` + DefaultPowerOps VirtualMachineDefaultPowerOpInfo `xml:"defaultPowerOps"` + Hardware VirtualHardware `xml:"hardware"` + VcpuConfig []VirtualMachineVcpuConfig `xml:"vcpuConfig,omitempty"` + CpuAllocation *ResourceAllocationInfo `xml:"cpuAllocation,omitempty"` + MemoryAllocation *ResourceAllocationInfo `xml:"memoryAllocation,omitempty"` + LatencySensitivity *LatencySensitivity `xml:"latencySensitivity,omitempty"` + MemoryHotAddEnabled *bool `xml:"memoryHotAddEnabled"` + CpuHotAddEnabled *bool `xml:"cpuHotAddEnabled"` + CpuHotRemoveEnabled *bool `xml:"cpuHotRemoveEnabled"` + HotPlugMemoryLimit int64 `xml:"hotPlugMemoryLimit,omitempty"` + HotPlugMemoryIncrementSize int64 `xml:"hotPlugMemoryIncrementSize,omitempty"` + CpuAffinity *VirtualMachineAffinityInfo `xml:"cpuAffinity,omitempty"` + MemoryAffinity *VirtualMachineAffinityInfo `xml:"memoryAffinity,omitempty"` + NetworkShaper *VirtualMachineNetworkShaperInfo `xml:"networkShaper,omitempty"` + ExtraConfig []BaseOptionValue `xml:"extraConfig,omitempty,typeattr"` + CpuFeatureMask []HostCpuIdInfo `xml:"cpuFeatureMask,omitempty"` + DatastoreUrl []VirtualMachineConfigInfoDatastoreUrlPair `xml:"datastoreUrl,omitempty"` + SwapPlacement string `xml:"swapPlacement,omitempty"` + BootOptions *VirtualMachineBootOptions `xml:"bootOptions,omitempty"` + FtInfo BaseFaultToleranceConfigInfo `xml:"ftInfo,omitempty,typeattr"` + RepConfig *ReplicationConfigSpec `xml:"repConfig,omitempty"` + VAppConfig BaseVmConfigInfo `xml:"vAppConfig,omitempty,typeattr"` + VAssertsEnabled *bool `xml:"vAssertsEnabled"` + ChangeTrackingEnabled *bool `xml:"changeTrackingEnabled"` + Firmware string `xml:"firmware,omitempty"` + MaxMksConnections int32 `xml:"maxMksConnections,omitempty"` + GuestAutoLockEnabled *bool `xml:"guestAutoLockEnabled"` + ManagedBy *ManagedByInfo `xml:"managedBy,omitempty"` + MemoryReservationLockedToMax *bool `xml:"memoryReservationLockedToMax"` + InitialOverhead *VirtualMachineConfigInfoOverheadInfo `xml:"initialOverhead,omitempty"` + NestedHVEnabled *bool `xml:"nestedHVEnabled"` + VPMCEnabled *bool `xml:"vPMCEnabled"` + ScheduledHardwareUpgradeInfo *ScheduledHardwareUpgradeInfo `xml:"scheduledHardwareUpgradeInfo,omitempty"` + ForkConfigInfo *VirtualMachineForkConfigInfo `xml:"forkConfigInfo,omitempty"` + VFlashCacheReservation int64 `xml:"vFlashCacheReservation,omitempty"` + VmxConfigChecksum []byte `xml:"vmxConfigChecksum,omitempty"` + MessageBusTunnelEnabled *bool `xml:"messageBusTunnelEnabled"` + VmStorageObjectId string `xml:"vmStorageObjectId,omitempty"` + SwapStorageObjectId string `xml:"swapStorageObjectId,omitempty"` + KeyId *CryptoKeyId `xml:"keyId,omitempty"` + GuestIntegrityInfo *VirtualMachineGuestIntegrityInfo `xml:"guestIntegrityInfo,omitempty"` + MigrateEncryption string `xml:"migrateEncryption,omitempty"` + SgxInfo *VirtualMachineSgxInfo `xml:"sgxInfo,omitempty"` + ContentLibItemInfo *VirtualMachineContentLibraryItemInfo `xml:"contentLibItemInfo,omitempty"` + GuestMonitoringModeInfo *VirtualMachineGuestMonitoringModeInfo `xml:"guestMonitoringModeInfo,omitempty"` +} + +func init() { + t["VirtualMachineConfigInfo"] = reflect.TypeOf((*VirtualMachineConfigInfo)(nil)).Elem() +} + +type VirtualMachineConfigInfoDatastoreUrlPair struct { + DynamicData + + Name string `xml:"name"` + Url string `xml:"url"` +} + +func init() { + t["VirtualMachineConfigInfoDatastoreUrlPair"] = reflect.TypeOf((*VirtualMachineConfigInfoDatastoreUrlPair)(nil)).Elem() +} + +type VirtualMachineConfigInfoOverheadInfo struct { + DynamicData + + InitialMemoryReservation int64 `xml:"initialMemoryReservation,omitempty"` + InitialSwapReservation int64 `xml:"initialSwapReservation,omitempty"` +} + +func init() { + t["VirtualMachineConfigInfoOverheadInfo"] = reflect.TypeOf((*VirtualMachineConfigInfoOverheadInfo)(nil)).Elem() +} + +type VirtualMachineConfigOption struct { + DynamicData + + Version string `xml:"version"` + Description string `xml:"description"` + GuestOSDescriptor []GuestOsDescriptor `xml:"guestOSDescriptor"` + GuestOSDefaultIndex int32 `xml:"guestOSDefaultIndex"` + HardwareOptions VirtualHardwareOption `xml:"hardwareOptions"` + Capabilities VirtualMachineCapability `xml:"capabilities"` + Datastore DatastoreOption `xml:"datastore"` + DefaultDevice []BaseVirtualDevice `xml:"defaultDevice,omitempty,typeattr"` + SupportedMonitorType []string `xml:"supportedMonitorType"` + SupportedOvfEnvironmentTransport []string `xml:"supportedOvfEnvironmentTransport,omitempty"` + SupportedOvfInstallTransport []string `xml:"supportedOvfInstallTransport,omitempty"` + PropertyRelations []VirtualMachinePropertyRelation `xml:"propertyRelations,omitempty"` +} + +func init() { + t["VirtualMachineConfigOption"] = reflect.TypeOf((*VirtualMachineConfigOption)(nil)).Elem() +} + +type VirtualMachineConfigOptionDescriptor struct { + DynamicData + + Key string `xml:"key"` + Description string `xml:"description,omitempty"` + Host []ManagedObjectReference `xml:"host,omitempty"` + CreateSupported *bool `xml:"createSupported"` + DefaultConfigOption *bool `xml:"defaultConfigOption"` + RunSupported *bool `xml:"runSupported"` + UpgradeSupported *bool `xml:"upgradeSupported"` +} + +func init() { + t["VirtualMachineConfigOptionDescriptor"] = reflect.TypeOf((*VirtualMachineConfigOptionDescriptor)(nil)).Elem() +} + +type VirtualMachineConfigSpec struct { + DynamicData + + ChangeVersion string `xml:"changeVersion,omitempty"` + Name string `xml:"name,omitempty"` + Version string `xml:"version,omitempty"` + CreateDate *time.Time `xml:"createDate"` + Uuid string `xml:"uuid,omitempty"` + InstanceUuid string `xml:"instanceUuid,omitempty"` + NpivNodeWorldWideName []int64 `xml:"npivNodeWorldWideName,omitempty"` + NpivPortWorldWideName []int64 `xml:"npivPortWorldWideName,omitempty"` + NpivWorldWideNameType string `xml:"npivWorldWideNameType,omitempty"` + NpivDesiredNodeWwns int16 `xml:"npivDesiredNodeWwns,omitempty"` + NpivDesiredPortWwns int16 `xml:"npivDesiredPortWwns,omitempty"` + NpivTemporaryDisabled *bool `xml:"npivTemporaryDisabled"` + NpivOnNonRdmDisks *bool `xml:"npivOnNonRdmDisks"` + NpivWorldWideNameOp string `xml:"npivWorldWideNameOp,omitempty"` + LocationId string `xml:"locationId,omitempty"` + GuestId string `xml:"guestId,omitempty"` + AlternateGuestName string `xml:"alternateGuestName,omitempty"` + Annotation string `xml:"annotation,omitempty"` + Files *VirtualMachineFileInfo `xml:"files,omitempty"` + Tools *ToolsConfigInfo `xml:"tools,omitempty"` + Flags *VirtualMachineFlagInfo `xml:"flags,omitempty"` + ConsolePreferences *VirtualMachineConsolePreferences `xml:"consolePreferences,omitempty"` + PowerOpInfo *VirtualMachineDefaultPowerOpInfo `xml:"powerOpInfo,omitempty"` + NumCPUs int32 `xml:"numCPUs,omitempty"` + VcpuConfig []VirtualMachineVcpuConfig `xml:"vcpuConfig,omitempty"` + NumCoresPerSocket int32 `xml:"numCoresPerSocket,omitempty"` + MemoryMB int64 `xml:"memoryMB,omitempty"` + MemoryHotAddEnabled *bool `xml:"memoryHotAddEnabled"` + CpuHotAddEnabled *bool `xml:"cpuHotAddEnabled"` + CpuHotRemoveEnabled *bool `xml:"cpuHotRemoveEnabled"` + VirtualICH7MPresent *bool `xml:"virtualICH7MPresent"` + VirtualSMCPresent *bool `xml:"virtualSMCPresent"` + DeviceChange []BaseVirtualDeviceConfigSpec `xml:"deviceChange,omitempty,typeattr"` + CpuAllocation *ResourceAllocationInfo `xml:"cpuAllocation,omitempty"` + MemoryAllocation *ResourceAllocationInfo `xml:"memoryAllocation,omitempty"` + LatencySensitivity *LatencySensitivity `xml:"latencySensitivity,omitempty"` + CpuAffinity *VirtualMachineAffinityInfo `xml:"cpuAffinity,omitempty"` + MemoryAffinity *VirtualMachineAffinityInfo `xml:"memoryAffinity,omitempty"` + NetworkShaper *VirtualMachineNetworkShaperInfo `xml:"networkShaper,omitempty"` + CpuFeatureMask []VirtualMachineCpuIdInfoSpec `xml:"cpuFeatureMask,omitempty"` + ExtraConfig []BaseOptionValue `xml:"extraConfig,omitempty,typeattr"` + SwapPlacement string `xml:"swapPlacement,omitempty"` + BootOptions *VirtualMachineBootOptions `xml:"bootOptions,omitempty"` + VAppConfig BaseVmConfigSpec `xml:"vAppConfig,omitempty,typeattr"` + FtInfo BaseFaultToleranceConfigInfo `xml:"ftInfo,omitempty,typeattr"` + RepConfig *ReplicationConfigSpec `xml:"repConfig,omitempty"` + VAppConfigRemoved *bool `xml:"vAppConfigRemoved"` + VAssertsEnabled *bool `xml:"vAssertsEnabled"` + ChangeTrackingEnabled *bool `xml:"changeTrackingEnabled"` + Firmware string `xml:"firmware,omitempty"` + MaxMksConnections int32 `xml:"maxMksConnections,omitempty"` + GuestAutoLockEnabled *bool `xml:"guestAutoLockEnabled"` + ManagedBy *ManagedByInfo `xml:"managedBy,omitempty"` + MemoryReservationLockedToMax *bool `xml:"memoryReservationLockedToMax"` + NestedHVEnabled *bool `xml:"nestedHVEnabled"` + VPMCEnabled *bool `xml:"vPMCEnabled"` + ScheduledHardwareUpgradeInfo *ScheduledHardwareUpgradeInfo `xml:"scheduledHardwareUpgradeInfo,omitempty"` + VmProfile []BaseVirtualMachineProfileSpec `xml:"vmProfile,omitempty,typeattr"` + MessageBusTunnelEnabled *bool `xml:"messageBusTunnelEnabled"` + Crypto BaseCryptoSpec `xml:"crypto,omitempty,typeattr"` + MigrateEncryption string `xml:"migrateEncryption,omitempty"` + SgxInfo *VirtualMachineSgxInfo `xml:"sgxInfo,omitempty"` + GuestMonitoringModeInfo *VirtualMachineGuestMonitoringModeInfo `xml:"guestMonitoringModeInfo,omitempty"` +} + +func init() { + t["VirtualMachineConfigSpec"] = reflect.TypeOf((*VirtualMachineConfigSpec)(nil)).Elem() +} + +type VirtualMachineConfigSummary struct { + DynamicData + + Name string `xml:"name"` + Template bool `xml:"template"` + VmPathName string `xml:"vmPathName"` + MemorySizeMB int32 `xml:"memorySizeMB,omitempty"` + CpuReservation int32 `xml:"cpuReservation,omitempty"` + MemoryReservation int32 `xml:"memoryReservation,omitempty"` + NumCpu int32 `xml:"numCpu,omitempty"` + NumEthernetCards int32 `xml:"numEthernetCards,omitempty"` + NumVirtualDisks int32 `xml:"numVirtualDisks,omitempty"` + Uuid string `xml:"uuid,omitempty"` + InstanceUuid string `xml:"instanceUuid,omitempty"` + GuestId string `xml:"guestId,omitempty"` + GuestFullName string `xml:"guestFullName,omitempty"` + Annotation string `xml:"annotation,omitempty"` + Product *VAppProductInfo `xml:"product,omitempty"` + InstallBootRequired *bool `xml:"installBootRequired"` + FtInfo BaseFaultToleranceConfigInfo `xml:"ftInfo,omitempty,typeattr"` + ManagedBy *ManagedByInfo `xml:"managedBy,omitempty"` + TpmPresent *bool `xml:"tpmPresent"` + NumVmiopBackings int32 `xml:"numVmiopBackings,omitempty"` + HwVersion string `xml:"hwVersion,omitempty"` +} + +func init() { + t["VirtualMachineConfigSummary"] = reflect.TypeOf((*VirtualMachineConfigSummary)(nil)).Elem() +} + +type VirtualMachineConsolePreferences struct { + DynamicData + + PowerOnWhenOpened *bool `xml:"powerOnWhenOpened"` + EnterFullScreenOnPowerOn *bool `xml:"enterFullScreenOnPowerOn"` + CloseOnPowerOffOrSuspend *bool `xml:"closeOnPowerOffOrSuspend"` +} + +func init() { + t["VirtualMachineConsolePreferences"] = reflect.TypeOf((*VirtualMachineConsolePreferences)(nil)).Elem() +} + +type VirtualMachineContentLibraryItemInfo struct { + DynamicData + + ContentLibraryItemUuid string `xml:"contentLibraryItemUuid"` + ContentLibraryItemVersion string `xml:"contentLibraryItemVersion,omitempty"` +} + +func init() { + t["VirtualMachineContentLibraryItemInfo"] = reflect.TypeOf((*VirtualMachineContentLibraryItemInfo)(nil)).Elem() +} + +type VirtualMachineCpuIdInfoSpec struct { + ArrayUpdateSpec + + Info *HostCpuIdInfo `xml:"info,omitempty"` +} + +func init() { + t["VirtualMachineCpuIdInfoSpec"] = reflect.TypeOf((*VirtualMachineCpuIdInfoSpec)(nil)).Elem() +} + +type VirtualMachineDatastoreInfo struct { + VirtualMachineTargetInfo + + Datastore DatastoreSummary `xml:"datastore"` + Capability DatastoreCapability `xml:"capability"` + MaxFileSize int64 `xml:"maxFileSize"` + MaxVirtualDiskCapacity int64 `xml:"maxVirtualDiskCapacity,omitempty"` + MaxPhysicalRDMFileSize int64 `xml:"maxPhysicalRDMFileSize,omitempty"` + MaxVirtualRDMFileSize int64 `xml:"maxVirtualRDMFileSize,omitempty"` + Mode string `xml:"mode"` + VStorageSupport string `xml:"vStorageSupport,omitempty"` +} + +func init() { + t["VirtualMachineDatastoreInfo"] = reflect.TypeOf((*VirtualMachineDatastoreInfo)(nil)).Elem() +} + +type VirtualMachineDatastoreVolumeOption struct { + DynamicData + + FileSystemType string `xml:"fileSystemType"` + MajorVersion int32 `xml:"majorVersion,omitempty"` +} + +func init() { + t["VirtualMachineDatastoreVolumeOption"] = reflect.TypeOf((*VirtualMachineDatastoreVolumeOption)(nil)).Elem() +} + +type VirtualMachineDefaultPowerOpInfo struct { + DynamicData + + PowerOffType string `xml:"powerOffType,omitempty"` + SuspendType string `xml:"suspendType,omitempty"` + ResetType string `xml:"resetType,omitempty"` + DefaultPowerOffType string `xml:"defaultPowerOffType,omitempty"` + DefaultSuspendType string `xml:"defaultSuspendType,omitempty"` + DefaultResetType string `xml:"defaultResetType,omitempty"` + StandbyAction string `xml:"standbyAction,omitempty"` +} + +func init() { + t["VirtualMachineDefaultPowerOpInfo"] = reflect.TypeOf((*VirtualMachineDefaultPowerOpInfo)(nil)).Elem() +} + +type VirtualMachineDefaultProfileSpec struct { + VirtualMachineProfileSpec +} + +func init() { + t["VirtualMachineDefaultProfileSpec"] = reflect.TypeOf((*VirtualMachineDefaultProfileSpec)(nil)).Elem() +} + +type VirtualMachineDefinedProfileSpec struct { + VirtualMachineProfileSpec + + ProfileId string `xml:"profileId"` + ReplicationSpec *ReplicationSpec `xml:"replicationSpec,omitempty"` + ProfileData *VirtualMachineProfileRawData `xml:"profileData,omitempty"` + ProfileParams []KeyValue `xml:"profileParams,omitempty"` +} + +func init() { + t["VirtualMachineDefinedProfileSpec"] = reflect.TypeOf((*VirtualMachineDefinedProfileSpec)(nil)).Elem() +} + +type VirtualMachineDeviceRuntimeInfo struct { + DynamicData + + RuntimeState BaseVirtualMachineDeviceRuntimeInfoDeviceRuntimeState `xml:"runtimeState,typeattr"` + Key int32 `xml:"key"` +} + +func init() { + t["VirtualMachineDeviceRuntimeInfo"] = reflect.TypeOf((*VirtualMachineDeviceRuntimeInfo)(nil)).Elem() +} + +type VirtualMachineDeviceRuntimeInfoDeviceRuntimeState struct { + DynamicData +} + +func init() { + t["VirtualMachineDeviceRuntimeInfoDeviceRuntimeState"] = reflect.TypeOf((*VirtualMachineDeviceRuntimeInfoDeviceRuntimeState)(nil)).Elem() +} + +type VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState struct { + VirtualMachineDeviceRuntimeInfoDeviceRuntimeState + + VmDirectPathGen2Active bool `xml:"vmDirectPathGen2Active"` + VmDirectPathGen2InactiveReasonVm []string `xml:"vmDirectPathGen2InactiveReasonVm,omitempty"` + VmDirectPathGen2InactiveReasonOther []string `xml:"vmDirectPathGen2InactiveReasonOther,omitempty"` + VmDirectPathGen2InactiveReasonExtended string `xml:"vmDirectPathGen2InactiveReasonExtended,omitempty"` + ReservationStatus string `xml:"reservationStatus,omitempty"` + AttachmentStatus string `xml:"attachmentStatus,omitempty"` + FeatureRequirement []VirtualMachineFeatureRequirement `xml:"featureRequirement,omitempty"` +} + +func init() { + t["VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState"] = reflect.TypeOf((*VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState)(nil)).Elem() +} + +type VirtualMachineDiskDeviceInfo struct { + VirtualMachineTargetInfo + + Capacity int64 `xml:"capacity,omitempty"` + Vm []ManagedObjectReference `xml:"vm,omitempty"` +} + +func init() { + t["VirtualMachineDiskDeviceInfo"] = reflect.TypeOf((*VirtualMachineDiskDeviceInfo)(nil)).Elem() +} + +type VirtualMachineDisplayTopology struct { + DynamicData + + X int32 `xml:"x"` + Y int32 `xml:"y"` + Width int32 `xml:"width"` + Height int32 `xml:"height"` +} + +func init() { + t["VirtualMachineDisplayTopology"] = reflect.TypeOf((*VirtualMachineDisplayTopology)(nil)).Elem() +} + +type VirtualMachineDynamicPassthroughInfo struct { + VirtualMachineTargetInfo + + VendorName string `xml:"vendorName"` + DeviceName string `xml:"deviceName"` + CustomLabel string `xml:"customLabel,omitempty"` + VendorId int32 `xml:"vendorId"` + DeviceId int32 `xml:"deviceId"` +} + +func init() { + t["VirtualMachineDynamicPassthroughInfo"] = reflect.TypeOf((*VirtualMachineDynamicPassthroughInfo)(nil)).Elem() +} + +type VirtualMachineEmptyProfileSpec struct { + VirtualMachineProfileSpec +} + +func init() { + t["VirtualMachineEmptyProfileSpec"] = reflect.TypeOf((*VirtualMachineEmptyProfileSpec)(nil)).Elem() +} + +type VirtualMachineFeatureRequirement struct { + DynamicData + + Key string `xml:"key"` + FeatureName string `xml:"featureName"` + Value string `xml:"value"` +} + +func init() { + t["VirtualMachineFeatureRequirement"] = reflect.TypeOf((*VirtualMachineFeatureRequirement)(nil)).Elem() +} + +type VirtualMachineFileInfo struct { + DynamicData + + VmPathName string `xml:"vmPathName,omitempty"` + SnapshotDirectory string `xml:"snapshotDirectory,omitempty"` + SuspendDirectory string `xml:"suspendDirectory,omitempty"` + LogDirectory string `xml:"logDirectory,omitempty"` + FtMetadataDirectory string `xml:"ftMetadataDirectory,omitempty"` +} + +func init() { + t["VirtualMachineFileInfo"] = reflect.TypeOf((*VirtualMachineFileInfo)(nil)).Elem() +} + +type VirtualMachineFileLayout struct { + DynamicData + + ConfigFile []string `xml:"configFile,omitempty"` + LogFile []string `xml:"logFile,omitempty"` + Disk []VirtualMachineFileLayoutDiskLayout `xml:"disk,omitempty"` + Snapshot []VirtualMachineFileLayoutSnapshotLayout `xml:"snapshot,omitempty"` + SwapFile string `xml:"swapFile,omitempty"` +} + +func init() { + t["VirtualMachineFileLayout"] = reflect.TypeOf((*VirtualMachineFileLayout)(nil)).Elem() +} + +type VirtualMachineFileLayoutDiskLayout struct { + DynamicData + + Key int32 `xml:"key"` + DiskFile []string `xml:"diskFile"` +} + +func init() { + t["VirtualMachineFileLayoutDiskLayout"] = reflect.TypeOf((*VirtualMachineFileLayoutDiskLayout)(nil)).Elem() +} + +type VirtualMachineFileLayoutEx struct { + DynamicData + + File []VirtualMachineFileLayoutExFileInfo `xml:"file,omitempty"` + Disk []VirtualMachineFileLayoutExDiskLayout `xml:"disk,omitempty"` + Snapshot []VirtualMachineFileLayoutExSnapshotLayout `xml:"snapshot,omitempty"` + Timestamp time.Time `xml:"timestamp"` +} + +func init() { + t["VirtualMachineFileLayoutEx"] = reflect.TypeOf((*VirtualMachineFileLayoutEx)(nil)).Elem() +} + +type VirtualMachineFileLayoutExDiskLayout struct { + DynamicData + + Key int32 `xml:"key"` + Chain []VirtualMachineFileLayoutExDiskUnit `xml:"chain,omitempty"` +} + +func init() { + t["VirtualMachineFileLayoutExDiskLayout"] = reflect.TypeOf((*VirtualMachineFileLayoutExDiskLayout)(nil)).Elem() +} + +type VirtualMachineFileLayoutExDiskUnit struct { + DynamicData + + FileKey []int32 `xml:"fileKey"` +} + +func init() { + t["VirtualMachineFileLayoutExDiskUnit"] = reflect.TypeOf((*VirtualMachineFileLayoutExDiskUnit)(nil)).Elem() +} + +type VirtualMachineFileLayoutExFileInfo struct { + DynamicData + + Key int32 `xml:"key"` + Name string `xml:"name"` + Type string `xml:"type"` + Size int64 `xml:"size"` + UniqueSize int64 `xml:"uniqueSize,omitempty"` + BackingObjectId string `xml:"backingObjectId,omitempty"` + Accessible *bool `xml:"accessible"` +} + +func init() { + t["VirtualMachineFileLayoutExFileInfo"] = reflect.TypeOf((*VirtualMachineFileLayoutExFileInfo)(nil)).Elem() +} + +type VirtualMachineFileLayoutExSnapshotLayout struct { + DynamicData + + Key ManagedObjectReference `xml:"key"` + DataKey int32 `xml:"dataKey"` + MemoryKey int32 `xml:"memoryKey,omitempty"` + Disk []VirtualMachineFileLayoutExDiskLayout `xml:"disk,omitempty"` +} + +func init() { + t["VirtualMachineFileLayoutExSnapshotLayout"] = reflect.TypeOf((*VirtualMachineFileLayoutExSnapshotLayout)(nil)).Elem() +} + +type VirtualMachineFileLayoutSnapshotLayout struct { + DynamicData + + Key ManagedObjectReference `xml:"key"` + SnapshotFile []string `xml:"snapshotFile"` +} + +func init() { + t["VirtualMachineFileLayoutSnapshotLayout"] = reflect.TypeOf((*VirtualMachineFileLayoutSnapshotLayout)(nil)).Elem() +} + +type VirtualMachineFlagInfo struct { + DynamicData + + DisableAcceleration *bool `xml:"disableAcceleration"` + EnableLogging *bool `xml:"enableLogging"` + UseToe *bool `xml:"useToe"` + RunWithDebugInfo *bool `xml:"runWithDebugInfo"` + MonitorType string `xml:"monitorType,omitempty"` + HtSharing string `xml:"htSharing,omitempty"` + SnapshotDisabled *bool `xml:"snapshotDisabled"` + SnapshotLocked *bool `xml:"snapshotLocked"` + DiskUuidEnabled *bool `xml:"diskUuidEnabled"` + VirtualMmuUsage string `xml:"virtualMmuUsage,omitempty"` + VirtualExecUsage string `xml:"virtualExecUsage,omitempty"` + SnapshotPowerOffBehavior string `xml:"snapshotPowerOffBehavior,omitempty"` + RecordReplayEnabled *bool `xml:"recordReplayEnabled"` + FaultToleranceType string `xml:"faultToleranceType,omitempty"` + CbrcCacheEnabled *bool `xml:"cbrcCacheEnabled"` + VvtdEnabled *bool `xml:"vvtdEnabled"` + VbsEnabled *bool `xml:"vbsEnabled"` +} + +func init() { + t["VirtualMachineFlagInfo"] = reflect.TypeOf((*VirtualMachineFlagInfo)(nil)).Elem() +} + +type VirtualMachineFloppyInfo struct { + VirtualMachineTargetInfo +} + +func init() { + t["VirtualMachineFloppyInfo"] = reflect.TypeOf((*VirtualMachineFloppyInfo)(nil)).Elem() +} + +type VirtualMachineForkConfigInfo struct { + DynamicData + + ParentEnabled *bool `xml:"parentEnabled"` + ChildForkGroupId string `xml:"childForkGroupId,omitempty"` + ParentForkGroupId string `xml:"parentForkGroupId,omitempty"` + ChildType string `xml:"childType,omitempty"` +} + +func init() { + t["VirtualMachineForkConfigInfo"] = reflect.TypeOf((*VirtualMachineForkConfigInfo)(nil)).Elem() +} + +type VirtualMachineGuestIntegrityInfo struct { + DynamicData + + Enabled *bool `xml:"enabled"` +} + +func init() { + t["VirtualMachineGuestIntegrityInfo"] = reflect.TypeOf((*VirtualMachineGuestIntegrityInfo)(nil)).Elem() +} + +type VirtualMachineGuestMonitoringModeInfo struct { + DynamicData + + GmmFile string `xml:"gmmFile,omitempty"` + GmmAppliance string `xml:"gmmAppliance,omitempty"` +} + +func init() { + t["VirtualMachineGuestMonitoringModeInfo"] = reflect.TypeOf((*VirtualMachineGuestMonitoringModeInfo)(nil)).Elem() +} + +type VirtualMachineGuestQuiesceSpec struct { + DynamicData + + Timeout int32 `xml:"timeout,omitempty"` +} + +func init() { + t["VirtualMachineGuestQuiesceSpec"] = reflect.TypeOf((*VirtualMachineGuestQuiesceSpec)(nil)).Elem() +} + +type VirtualMachineGuestSummary struct { + DynamicData + + GuestId string `xml:"guestId,omitempty"` + GuestFullName string `xml:"guestFullName,omitempty"` + ToolsStatus VirtualMachineToolsStatus `xml:"toolsStatus,omitempty"` + ToolsVersionStatus string `xml:"toolsVersionStatus,omitempty"` + ToolsVersionStatus2 string `xml:"toolsVersionStatus2,omitempty"` + ToolsRunningStatus string `xml:"toolsRunningStatus,omitempty"` + HostName string `xml:"hostName,omitempty"` + IpAddress string `xml:"ipAddress,omitempty"` + HwVersion string `xml:"hwVersion,omitempty"` +} + +func init() { + t["VirtualMachineGuestSummary"] = reflect.TypeOf((*VirtualMachineGuestSummary)(nil)).Elem() +} + +type VirtualMachineIdeDiskDeviceInfo struct { + VirtualMachineDiskDeviceInfo + + PartitionTable []VirtualMachineIdeDiskDevicePartitionInfo `xml:"partitionTable,omitempty"` +} + +func init() { + t["VirtualMachineIdeDiskDeviceInfo"] = reflect.TypeOf((*VirtualMachineIdeDiskDeviceInfo)(nil)).Elem() +} + +type VirtualMachineIdeDiskDevicePartitionInfo struct { + DynamicData + + Id int32 `xml:"id"` + Capacity int32 `xml:"capacity"` +} + +func init() { + t["VirtualMachineIdeDiskDevicePartitionInfo"] = reflect.TypeOf((*VirtualMachineIdeDiskDevicePartitionInfo)(nil)).Elem() +} + +type VirtualMachineImportSpec struct { + ImportSpec + + ConfigSpec VirtualMachineConfigSpec `xml:"configSpec"` + ResPoolEntity *ManagedObjectReference `xml:"resPoolEntity,omitempty"` +} + +func init() { + t["VirtualMachineImportSpec"] = reflect.TypeOf((*VirtualMachineImportSpec)(nil)).Elem() +} + +type VirtualMachineInstantCloneSpec struct { + DynamicData + + Name string `xml:"name"` + Location VirtualMachineRelocateSpec `xml:"location"` + Config []BaseOptionValue `xml:"config,omitempty,typeattr"` + BiosUuid string `xml:"biosUuid,omitempty"` +} + +func init() { + t["VirtualMachineInstantCloneSpec"] = reflect.TypeOf((*VirtualMachineInstantCloneSpec)(nil)).Elem() +} + +type VirtualMachineLegacyNetworkSwitchInfo struct { + DynamicData + + Name string `xml:"name"` +} + +func init() { + t["VirtualMachineLegacyNetworkSwitchInfo"] = reflect.TypeOf((*VirtualMachineLegacyNetworkSwitchInfo)(nil)).Elem() +} + +type VirtualMachineMemoryReservationInfo struct { + DynamicData + + VirtualMachineMin int64 `xml:"virtualMachineMin"` + VirtualMachineMax int64 `xml:"virtualMachineMax"` + VirtualMachineReserved int64 `xml:"virtualMachineReserved"` + AllocationPolicy string `xml:"allocationPolicy"` +} + +func init() { + t["VirtualMachineMemoryReservationInfo"] = reflect.TypeOf((*VirtualMachineMemoryReservationInfo)(nil)).Elem() +} + +type VirtualMachineMemoryReservationSpec struct { + DynamicData + + VirtualMachineReserved int64 `xml:"virtualMachineReserved,omitempty"` + AllocationPolicy string `xml:"allocationPolicy,omitempty"` +} + +func init() { + t["VirtualMachineMemoryReservationSpec"] = reflect.TypeOf((*VirtualMachineMemoryReservationSpec)(nil)).Elem() +} + +type VirtualMachineMessage struct { + DynamicData + + Id string `xml:"id"` + Argument []AnyType `xml:"argument,omitempty,typeattr"` + Text string `xml:"text,omitempty"` +} + +func init() { + t["VirtualMachineMessage"] = reflect.TypeOf((*VirtualMachineMessage)(nil)).Elem() +} + +type VirtualMachineMetadataManagerVmMetadata struct { + DynamicData + + VmId string `xml:"vmId"` + Metadata string `xml:"metadata,omitempty"` +} + +func init() { + t["VirtualMachineMetadataManagerVmMetadata"] = reflect.TypeOf((*VirtualMachineMetadataManagerVmMetadata)(nil)).Elem() +} + +type VirtualMachineMetadataManagerVmMetadataInput struct { + DynamicData + + Operation string `xml:"operation"` + VmMetadata VirtualMachineMetadataManagerVmMetadata `xml:"vmMetadata"` +} + +func init() { + t["VirtualMachineMetadataManagerVmMetadataInput"] = reflect.TypeOf((*VirtualMachineMetadataManagerVmMetadataInput)(nil)).Elem() +} + +type VirtualMachineMetadataManagerVmMetadataOwner struct { + DynamicData + + Name string `xml:"name"` +} + +func init() { + t["VirtualMachineMetadataManagerVmMetadataOwner"] = reflect.TypeOf((*VirtualMachineMetadataManagerVmMetadataOwner)(nil)).Elem() +} + +type VirtualMachineMetadataManagerVmMetadataResult struct { + DynamicData + + VmMetadata VirtualMachineMetadataManagerVmMetadata `xml:"vmMetadata"` + Error *LocalizedMethodFault `xml:"error,omitempty"` +} + +func init() { + t["VirtualMachineMetadataManagerVmMetadataResult"] = reflect.TypeOf((*VirtualMachineMetadataManagerVmMetadataResult)(nil)).Elem() +} + +type VirtualMachineMksTicket struct { + DynamicData + + Ticket string `xml:"ticket"` + CfgFile string `xml:"cfgFile"` + Host string `xml:"host,omitempty"` + Port int32 `xml:"port,omitempty"` + SslThumbprint string `xml:"sslThumbprint,omitempty"` +} + +func init() { + t["VirtualMachineMksTicket"] = reflect.TypeOf((*VirtualMachineMksTicket)(nil)).Elem() +} + +type VirtualMachineNetworkInfo struct { + VirtualMachineTargetInfo + + Network BaseNetworkSummary `xml:"network,typeattr"` + Vswitch string `xml:"vswitch,omitempty"` +} + +func init() { + t["VirtualMachineNetworkInfo"] = reflect.TypeOf((*VirtualMachineNetworkInfo)(nil)).Elem() +} + +type VirtualMachineNetworkShaperInfo struct { + DynamicData + + Enabled *bool `xml:"enabled"` + PeakBps int64 `xml:"peakBps,omitempty"` + AverageBps int64 `xml:"averageBps,omitempty"` + BurstSize int64 `xml:"burstSize,omitempty"` +} + +func init() { + t["VirtualMachineNetworkShaperInfo"] = reflect.TypeOf((*VirtualMachineNetworkShaperInfo)(nil)).Elem() +} + +type VirtualMachineParallelInfo struct { + VirtualMachineTargetInfo +} + +func init() { + t["VirtualMachineParallelInfo"] = reflect.TypeOf((*VirtualMachineParallelInfo)(nil)).Elem() +} + +type VirtualMachinePciPassthroughInfo struct { + VirtualMachineTargetInfo + + PciDevice HostPciDevice `xml:"pciDevice"` + SystemId string `xml:"systemId"` +} + +func init() { + t["VirtualMachinePciPassthroughInfo"] = reflect.TypeOf((*VirtualMachinePciPassthroughInfo)(nil)).Elem() +} + +type VirtualMachinePciSharedGpuPassthroughInfo struct { + VirtualMachineTargetInfo + + Vgpu string `xml:"vgpu"` +} + +func init() { + t["VirtualMachinePciSharedGpuPassthroughInfo"] = reflect.TypeOf((*VirtualMachinePciSharedGpuPassthroughInfo)(nil)).Elem() +} + +type VirtualMachinePrecisionClockInfo struct { + VirtualMachineTargetInfo + + SystemClockProtocol string `xml:"systemClockProtocol,omitempty"` +} + +func init() { + t["VirtualMachinePrecisionClockInfo"] = reflect.TypeOf((*VirtualMachinePrecisionClockInfo)(nil)).Elem() +} + +type VirtualMachineProfileDetails struct { + DynamicData + + Profile []BaseVirtualMachineProfileSpec `xml:"profile,omitempty,typeattr"` + DiskProfileDetails []VirtualMachineProfileDetailsDiskProfileDetails `xml:"diskProfileDetails,omitempty"` +} + +func init() { + t["VirtualMachineProfileDetails"] = reflect.TypeOf((*VirtualMachineProfileDetails)(nil)).Elem() +} + +type VirtualMachineProfileDetailsDiskProfileDetails struct { + DynamicData + + DiskId int32 `xml:"diskId"` + Profile []BaseVirtualMachineProfileSpec `xml:"profile,omitempty,typeattr"` +} + +func init() { + t["VirtualMachineProfileDetailsDiskProfileDetails"] = reflect.TypeOf((*VirtualMachineProfileDetailsDiskProfileDetails)(nil)).Elem() +} + +type VirtualMachineProfileRawData struct { + DynamicData + + ExtensionKey string `xml:"extensionKey"` + ObjectData string `xml:"objectData,omitempty"` +} + +func init() { + t["VirtualMachineProfileRawData"] = reflect.TypeOf((*VirtualMachineProfileRawData)(nil)).Elem() +} + +type VirtualMachineProfileSpec struct { + DynamicData +} + +func init() { + t["VirtualMachineProfileSpec"] = reflect.TypeOf((*VirtualMachineProfileSpec)(nil)).Elem() +} + +type VirtualMachinePropertyRelation struct { + DynamicData + + Key DynamicProperty `xml:"key"` + Relations []DynamicProperty `xml:"relations,omitempty"` +} + +func init() { + t["VirtualMachinePropertyRelation"] = reflect.TypeOf((*VirtualMachinePropertyRelation)(nil)).Elem() +} + +type VirtualMachineQuestionInfo struct { + DynamicData + + Id string `xml:"id"` + Text string `xml:"text"` + Choice ChoiceOption `xml:"choice"` + Message []VirtualMachineMessage `xml:"message,omitempty"` +} + +func init() { + t["VirtualMachineQuestionInfo"] = reflect.TypeOf((*VirtualMachineQuestionInfo)(nil)).Elem() +} + +type VirtualMachineQuickStats struct { + DynamicData + + OverallCpuUsage int32 `xml:"overallCpuUsage,omitempty"` + OverallCpuDemand int32 `xml:"overallCpuDemand,omitempty"` + OverallCpuReadiness int32 `xml:"overallCpuReadiness,omitempty"` + GuestMemoryUsage int32 `xml:"guestMemoryUsage,omitempty"` + HostMemoryUsage int32 `xml:"hostMemoryUsage,omitempty"` + GuestHeartbeatStatus ManagedEntityStatus `xml:"guestHeartbeatStatus"` + DistributedCpuEntitlement int32 `xml:"distributedCpuEntitlement,omitempty"` + DistributedMemoryEntitlement int32 `xml:"distributedMemoryEntitlement,omitempty"` + StaticCpuEntitlement int32 `xml:"staticCpuEntitlement,omitempty"` + StaticMemoryEntitlement int32 `xml:"staticMemoryEntitlement,omitempty"` + GrantedMemory int32 `xml:"grantedMemory,omitempty"` + PrivateMemory int32 `xml:"privateMemory,omitempty"` + SharedMemory int32 `xml:"sharedMemory,omitempty"` + SwappedMemory int32 `xml:"swappedMemory,omitempty"` + BalloonedMemory int32 `xml:"balloonedMemory,omitempty"` + ConsumedOverheadMemory int32 `xml:"consumedOverheadMemory,omitempty"` + FtLogBandwidth int32 `xml:"ftLogBandwidth,omitempty"` + FtSecondaryLatency int32 `xml:"ftSecondaryLatency,omitempty"` + FtLatencyStatus ManagedEntityStatus `xml:"ftLatencyStatus,omitempty"` + CompressedMemory int64 `xml:"compressedMemory,omitempty"` + UptimeSeconds int32 `xml:"uptimeSeconds,omitempty"` + SsdSwappedMemory int64 `xml:"ssdSwappedMemory,omitempty"` +} + +func init() { + t["VirtualMachineQuickStats"] = reflect.TypeOf((*VirtualMachineQuickStats)(nil)).Elem() +} + +type VirtualMachineRelocateSpec struct { + DynamicData + + Service *ServiceLocator `xml:"service,omitempty"` + Folder *ManagedObjectReference `xml:"folder,omitempty"` + Datastore *ManagedObjectReference `xml:"datastore,omitempty"` + DiskMoveType string `xml:"diskMoveType,omitempty"` + Pool *ManagedObjectReference `xml:"pool,omitempty"` + Host *ManagedObjectReference `xml:"host,omitempty"` + Disk []VirtualMachineRelocateSpecDiskLocator `xml:"disk,omitempty"` + Transform VirtualMachineRelocateTransformation `xml:"transform,omitempty"` + DeviceChange []BaseVirtualDeviceConfigSpec `xml:"deviceChange,omitempty,typeattr"` + Profile []BaseVirtualMachineProfileSpec `xml:"profile,omitempty,typeattr"` + CryptoSpec BaseCryptoSpec `xml:"cryptoSpec,omitempty,typeattr"` +} + +func init() { + t["VirtualMachineRelocateSpec"] = reflect.TypeOf((*VirtualMachineRelocateSpec)(nil)).Elem() +} + +type VirtualMachineRelocateSpecDiskLocator struct { + DynamicData + + DiskId int32 `xml:"diskId"` + Datastore ManagedObjectReference `xml:"datastore"` + DiskMoveType string `xml:"diskMoveType,omitempty"` + DiskBackingInfo BaseVirtualDeviceBackingInfo `xml:"diskBackingInfo,omitempty,typeattr"` + Profile []BaseVirtualMachineProfileSpec `xml:"profile,omitempty,typeattr"` + Backing *VirtualMachineRelocateSpecDiskLocatorBackingSpec `xml:"backing,omitempty"` +} + +func init() { + t["VirtualMachineRelocateSpecDiskLocator"] = reflect.TypeOf((*VirtualMachineRelocateSpecDiskLocator)(nil)).Elem() +} + +type VirtualMachineRelocateSpecDiskLocatorBackingSpec struct { + DynamicData + + Parent *VirtualMachineRelocateSpecDiskLocatorBackingSpec `xml:"parent,omitempty"` + Crypto BaseCryptoSpec `xml:"crypto,omitempty,typeattr"` +} + +func init() { + t["VirtualMachineRelocateSpecDiskLocatorBackingSpec"] = reflect.TypeOf((*VirtualMachineRelocateSpecDiskLocatorBackingSpec)(nil)).Elem() +} + +type VirtualMachineRuntimeInfo struct { + DynamicData + + Device []VirtualMachineDeviceRuntimeInfo `xml:"device,omitempty"` + Host *ManagedObjectReference `xml:"host,omitempty"` + ConnectionState VirtualMachineConnectionState `xml:"connectionState"` + PowerState VirtualMachinePowerState `xml:"powerState"` + FaultToleranceState VirtualMachineFaultToleranceState `xml:"faultToleranceState,omitempty"` + DasVmProtection *VirtualMachineRuntimeInfoDasProtectionState `xml:"dasVmProtection,omitempty"` + ToolsInstallerMounted bool `xml:"toolsInstallerMounted"` + SuspendTime *time.Time `xml:"suspendTime"` + BootTime *time.Time `xml:"bootTime"` + SuspendInterval int64 `xml:"suspendInterval,omitempty"` + Question *VirtualMachineQuestionInfo `xml:"question,omitempty"` + MemoryOverhead int64 `xml:"memoryOverhead,omitempty"` + MaxCpuUsage int32 `xml:"maxCpuUsage,omitempty"` + MaxMemoryUsage int32 `xml:"maxMemoryUsage,omitempty"` + NumMksConnections int32 `xml:"numMksConnections"` + RecordReplayState VirtualMachineRecordReplayState `xml:"recordReplayState,omitempty"` + CleanPowerOff *bool `xml:"cleanPowerOff"` + NeedSecondaryReason string `xml:"needSecondaryReason,omitempty"` + OnlineStandby *bool `xml:"onlineStandby"` + MinRequiredEVCModeKey string `xml:"minRequiredEVCModeKey,omitempty"` + ConsolidationNeeded *bool `xml:"consolidationNeeded"` + OfflineFeatureRequirement []VirtualMachineFeatureRequirement `xml:"offlineFeatureRequirement,omitempty"` + FeatureRequirement []VirtualMachineFeatureRequirement `xml:"featureRequirement,omitempty"` + FeatureMask []HostFeatureMask `xml:"featureMask,omitempty"` + VFlashCacheAllocation int64 `xml:"vFlashCacheAllocation,omitempty"` + Paused *bool `xml:"paused"` + SnapshotInBackground *bool `xml:"snapshotInBackground"` + QuiescedForkParent *bool `xml:"quiescedForkParent"` + InstantCloneFrozen *bool `xml:"instantCloneFrozen"` + CryptoState string `xml:"cryptoState,omitempty"` +} + +func init() { + t["VirtualMachineRuntimeInfo"] = reflect.TypeOf((*VirtualMachineRuntimeInfo)(nil)).Elem() +} + +type VirtualMachineRuntimeInfoDasProtectionState struct { + DynamicData + + DasProtected bool `xml:"dasProtected"` +} + +func init() { + t["VirtualMachineRuntimeInfoDasProtectionState"] = reflect.TypeOf((*VirtualMachineRuntimeInfoDasProtectionState)(nil)).Elem() +} + +type VirtualMachineScsiDiskDeviceInfo struct { + VirtualMachineDiskDeviceInfo + + Disk *HostScsiDisk `xml:"disk,omitempty"` + TransportHint string `xml:"transportHint,omitempty"` + LunNumber int32 `xml:"lunNumber,omitempty"` +} + +func init() { + t["VirtualMachineScsiDiskDeviceInfo"] = reflect.TypeOf((*VirtualMachineScsiDiskDeviceInfo)(nil)).Elem() +} + +type VirtualMachineScsiPassthroughInfo struct { + VirtualMachineTargetInfo + + ScsiClass string `xml:"scsiClass"` + Vendor string `xml:"vendor"` + PhysicalUnitNumber int32 `xml:"physicalUnitNumber"` +} + +func init() { + t["VirtualMachineScsiPassthroughInfo"] = reflect.TypeOf((*VirtualMachineScsiPassthroughInfo)(nil)).Elem() +} + +type VirtualMachineSerialInfo struct { + VirtualMachineTargetInfo +} + +func init() { + t["VirtualMachineSerialInfo"] = reflect.TypeOf((*VirtualMachineSerialInfo)(nil)).Elem() +} + +type VirtualMachineSgxInfo struct { + DynamicData + + EpcSize int64 `xml:"epcSize"` + FlcMode string `xml:"flcMode,omitempty"` + LePubKeyHash string `xml:"lePubKeyHash,omitempty"` +} + +func init() { + t["VirtualMachineSgxInfo"] = reflect.TypeOf((*VirtualMachineSgxInfo)(nil)).Elem() +} + +type VirtualMachineSgxTargetInfo struct { + VirtualMachineTargetInfo + + MaxEpcSize int64 `xml:"maxEpcSize"` + FlcModes []string `xml:"flcModes,omitempty"` + LePubKeyHashes []string `xml:"lePubKeyHashes,omitempty"` +} + +func init() { + t["VirtualMachineSgxTargetInfo"] = reflect.TypeOf((*VirtualMachineSgxTargetInfo)(nil)).Elem() +} + +type VirtualMachineSnapshotInfo struct { + DynamicData + + CurrentSnapshot *ManagedObjectReference `xml:"currentSnapshot,omitempty"` + RootSnapshotList []VirtualMachineSnapshotTree `xml:"rootSnapshotList"` +} + +func init() { + t["VirtualMachineSnapshotInfo"] = reflect.TypeOf((*VirtualMachineSnapshotInfo)(nil)).Elem() +} + +type VirtualMachineSnapshotTree struct { + DynamicData + + Snapshot ManagedObjectReference `xml:"snapshot"` + Vm ManagedObjectReference `xml:"vm"` + Name string `xml:"name"` + Description string `xml:"description"` + Id int32 `xml:"id,omitempty"` + CreateTime time.Time `xml:"createTime"` + State VirtualMachinePowerState `xml:"state"` + Quiesced bool `xml:"quiesced"` + BackupManifest string `xml:"backupManifest,omitempty"` + ChildSnapshotList []VirtualMachineSnapshotTree `xml:"childSnapshotList,omitempty"` + ReplaySupported *bool `xml:"replaySupported"` +} + +func init() { + t["VirtualMachineSnapshotTree"] = reflect.TypeOf((*VirtualMachineSnapshotTree)(nil)).Elem() +} + +type VirtualMachineSoundInfo struct { + VirtualMachineTargetInfo +} + +func init() { + t["VirtualMachineSoundInfo"] = reflect.TypeOf((*VirtualMachineSoundInfo)(nil)).Elem() +} + +type VirtualMachineSriovDevicePoolInfo struct { + DynamicData + + Key string `xml:"key"` +} + +func init() { + t["VirtualMachineSriovDevicePoolInfo"] = reflect.TypeOf((*VirtualMachineSriovDevicePoolInfo)(nil)).Elem() +} + +type VirtualMachineSriovInfo struct { + VirtualMachinePciPassthroughInfo + + VirtualFunction bool `xml:"virtualFunction"` + Pnic string `xml:"pnic,omitempty"` + DevicePool BaseVirtualMachineSriovDevicePoolInfo `xml:"devicePool,omitempty,typeattr"` +} + +func init() { + t["VirtualMachineSriovInfo"] = reflect.TypeOf((*VirtualMachineSriovInfo)(nil)).Elem() +} + +type VirtualMachineSriovNetworkDevicePoolInfo struct { + VirtualMachineSriovDevicePoolInfo + + SwitchKey string `xml:"switchKey,omitempty"` + SwitchUuid string `xml:"switchUuid,omitempty"` +} + +func init() { + t["VirtualMachineSriovNetworkDevicePoolInfo"] = reflect.TypeOf((*VirtualMachineSriovNetworkDevicePoolInfo)(nil)).Elem() +} + +type VirtualMachineStorageInfo struct { + DynamicData + + PerDatastoreUsage []VirtualMachineUsageOnDatastore `xml:"perDatastoreUsage,omitempty"` + Timestamp time.Time `xml:"timestamp"` +} + +func init() { + t["VirtualMachineStorageInfo"] = reflect.TypeOf((*VirtualMachineStorageInfo)(nil)).Elem() +} + +type VirtualMachineStorageSummary struct { + DynamicData + + Committed int64 `xml:"committed"` + Uncommitted int64 `xml:"uncommitted"` + Unshared int64 `xml:"unshared"` + Timestamp time.Time `xml:"timestamp"` +} + +func init() { + t["VirtualMachineStorageSummary"] = reflect.TypeOf((*VirtualMachineStorageSummary)(nil)).Elem() +} + +type VirtualMachineSummary struct { + DynamicData + + Vm *ManagedObjectReference `xml:"vm,omitempty"` + Runtime VirtualMachineRuntimeInfo `xml:"runtime"` + Guest *VirtualMachineGuestSummary `xml:"guest,omitempty"` + Config VirtualMachineConfigSummary `xml:"config"` + Storage *VirtualMachineStorageSummary `xml:"storage,omitempty"` + QuickStats VirtualMachineQuickStats `xml:"quickStats"` + OverallStatus ManagedEntityStatus `xml:"overallStatus"` + CustomValue []BaseCustomFieldValue `xml:"customValue,omitempty,typeattr"` +} + +func init() { + t["VirtualMachineSummary"] = reflect.TypeOf((*VirtualMachineSummary)(nil)).Elem() +} + +type VirtualMachineTargetInfo struct { + DynamicData + + Name string `xml:"name"` + ConfigurationTag []string `xml:"configurationTag,omitempty"` +} + +func init() { + t["VirtualMachineTargetInfo"] = reflect.TypeOf((*VirtualMachineTargetInfo)(nil)).Elem() +} + +type VirtualMachineTicket struct { + DynamicData + + Ticket string `xml:"ticket"` + CfgFile string `xml:"cfgFile"` + Host string `xml:"host,omitempty"` + Port int32 `xml:"port,omitempty"` + SslThumbprint string `xml:"sslThumbprint,omitempty"` + Url string `xml:"url,omitempty"` +} + +func init() { + t["VirtualMachineTicket"] = reflect.TypeOf((*VirtualMachineTicket)(nil)).Elem() +} + +type VirtualMachineUsageOnDatastore struct { + DynamicData + + Datastore ManagedObjectReference `xml:"datastore"` + Committed int64 `xml:"committed"` + Uncommitted int64 `xml:"uncommitted"` + Unshared int64 `xml:"unshared"` +} + +func init() { + t["VirtualMachineUsageOnDatastore"] = reflect.TypeOf((*VirtualMachineUsageOnDatastore)(nil)).Elem() +} + +type VirtualMachineUsbInfo struct { + VirtualMachineTargetInfo + + Description string `xml:"description"` + Vendor int32 `xml:"vendor"` + Product int32 `xml:"product"` + PhysicalPath string `xml:"physicalPath"` + Family []string `xml:"family,omitempty"` + Speed []string `xml:"speed,omitempty"` + Summary *VirtualMachineSummary `xml:"summary,omitempty"` +} + +func init() { + t["VirtualMachineUsbInfo"] = reflect.TypeOf((*VirtualMachineUsbInfo)(nil)).Elem() +} + +type VirtualMachineVFlashModuleInfo struct { + VirtualMachineTargetInfo + + VFlashModule HostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption `xml:"vFlashModule"` +} + +func init() { + t["VirtualMachineVFlashModuleInfo"] = reflect.TypeOf((*VirtualMachineVFlashModuleInfo)(nil)).Elem() +} + +type VirtualMachineVMCIDevice struct { + VirtualDevice + + Id int64 `xml:"id,omitempty"` + AllowUnrestrictedCommunication *bool `xml:"allowUnrestrictedCommunication"` + FilterEnable *bool `xml:"filterEnable"` + FilterInfo *VirtualMachineVMCIDeviceFilterInfo `xml:"filterInfo,omitempty"` +} + +func init() { + t["VirtualMachineVMCIDevice"] = reflect.TypeOf((*VirtualMachineVMCIDevice)(nil)).Elem() +} + +type VirtualMachineVMCIDeviceFilterInfo struct { + DynamicData + + Filters []VirtualMachineVMCIDeviceFilterSpec `xml:"filters,omitempty"` +} + +func init() { + t["VirtualMachineVMCIDeviceFilterInfo"] = reflect.TypeOf((*VirtualMachineVMCIDeviceFilterInfo)(nil)).Elem() +} + +type VirtualMachineVMCIDeviceFilterSpec struct { + DynamicData + + Rank int64 `xml:"rank"` + Action string `xml:"action"` + Protocol string `xml:"protocol"` + Direction string `xml:"direction"` + LowerDstPortBoundary int64 `xml:"lowerDstPortBoundary,omitempty"` + UpperDstPortBoundary int64 `xml:"upperDstPortBoundary,omitempty"` +} + +func init() { + t["VirtualMachineVMCIDeviceFilterSpec"] = reflect.TypeOf((*VirtualMachineVMCIDeviceFilterSpec)(nil)).Elem() +} + +type VirtualMachineVMCIDeviceOption struct { + VirtualDeviceOption + + AllowUnrestrictedCommunication BoolOption `xml:"allowUnrestrictedCommunication"` + FilterSpecOption *VirtualMachineVMCIDeviceOptionFilterSpecOption `xml:"filterSpecOption,omitempty"` + FilterSupported *BoolOption `xml:"filterSupported,omitempty"` +} + +func init() { + t["VirtualMachineVMCIDeviceOption"] = reflect.TypeOf((*VirtualMachineVMCIDeviceOption)(nil)).Elem() +} + +type VirtualMachineVMCIDeviceOptionFilterSpecOption struct { + DynamicData + + Action ChoiceOption `xml:"action"` + Protocol ChoiceOption `xml:"protocol"` + Direction ChoiceOption `xml:"direction"` + LowerDstPortBoundary LongOption `xml:"lowerDstPortBoundary"` + UpperDstPortBoundary LongOption `xml:"upperDstPortBoundary"` +} + +func init() { + t["VirtualMachineVMCIDeviceOptionFilterSpecOption"] = reflect.TypeOf((*VirtualMachineVMCIDeviceOptionFilterSpecOption)(nil)).Elem() +} + +type VirtualMachineVMIROM struct { + VirtualDevice +} + +func init() { + t["VirtualMachineVMIROM"] = reflect.TypeOf((*VirtualMachineVMIROM)(nil)).Elem() +} + +type VirtualMachineVcpuConfig struct { + DynamicData + + LatencySensitivity *LatencySensitivity `xml:"latencySensitivity,omitempty"` +} + +func init() { + t["VirtualMachineVcpuConfig"] = reflect.TypeOf((*VirtualMachineVcpuConfig)(nil)).Elem() +} + +type VirtualMachineVideoCard struct { + VirtualDevice + + VideoRamSizeInKB int64 `xml:"videoRamSizeInKB,omitempty"` + NumDisplays int32 `xml:"numDisplays,omitempty"` + UseAutoDetect *bool `xml:"useAutoDetect"` + Enable3DSupport *bool `xml:"enable3DSupport"` + Use3dRenderer string `xml:"use3dRenderer,omitempty"` + GraphicsMemorySizeInKB int64 `xml:"graphicsMemorySizeInKB,omitempty"` +} + +func init() { + t["VirtualMachineVideoCard"] = reflect.TypeOf((*VirtualMachineVideoCard)(nil)).Elem() +} + +type VirtualMachineWindowsQuiesceSpec struct { + VirtualMachineGuestQuiesceSpec + + VssBackupType int32 `xml:"vssBackupType,omitempty"` + VssBootableSystemState *bool `xml:"vssBootableSystemState"` + VssPartialFileSupport *bool `xml:"vssPartialFileSupport"` + VssBackupContext string `xml:"vssBackupContext,omitempty"` +} + +func init() { + t["VirtualMachineWindowsQuiesceSpec"] = reflect.TypeOf((*VirtualMachineWindowsQuiesceSpec)(nil)).Elem() +} + +type VirtualMachineWipeResult struct { + DynamicData + + DiskId int32 `xml:"diskId"` + ShrinkableDiskSpace int64 `xml:"shrinkableDiskSpace"` +} + +func init() { + t["VirtualMachineWipeResult"] = reflect.TypeOf((*VirtualMachineWipeResult)(nil)).Elem() +} + +type VirtualNVDIMM struct { + VirtualDevice + + CapacityInMB int64 `xml:"capacityInMB"` +} + +func init() { + t["VirtualNVDIMM"] = reflect.TypeOf((*VirtualNVDIMM)(nil)).Elem() +} + +type VirtualNVDIMMBackingInfo struct { + VirtualDeviceFileBackingInfo + + Parent *VirtualNVDIMMBackingInfo `xml:"parent,omitempty"` + ChangeId string `xml:"changeId,omitempty"` +} + +func init() { + t["VirtualNVDIMMBackingInfo"] = reflect.TypeOf((*VirtualNVDIMMBackingInfo)(nil)).Elem() +} + +type VirtualNVDIMMController struct { + VirtualController +} + +func init() { + t["VirtualNVDIMMController"] = reflect.TypeOf((*VirtualNVDIMMController)(nil)).Elem() +} + +type VirtualNVDIMMControllerOption struct { + VirtualControllerOption + + NumNVDIMMControllers IntOption `xml:"numNVDIMMControllers"` +} + +func init() { + t["VirtualNVDIMMControllerOption"] = reflect.TypeOf((*VirtualNVDIMMControllerOption)(nil)).Elem() +} + +type VirtualNVDIMMOption struct { + VirtualDeviceOption + + CapacityInMB LongOption `xml:"capacityInMB"` + Growable bool `xml:"growable"` + HotGrowable bool `xml:"hotGrowable"` + GranularityInMB int64 `xml:"granularityInMB"` +} + +func init() { + t["VirtualNVDIMMOption"] = reflect.TypeOf((*VirtualNVDIMMOption)(nil)).Elem() +} + +type VirtualNVMEController struct { + VirtualController +} + +func init() { + t["VirtualNVMEController"] = reflect.TypeOf((*VirtualNVMEController)(nil)).Elem() +} + +type VirtualNVMEControllerOption struct { + VirtualControllerOption + + NumNVMEDisks IntOption `xml:"numNVMEDisks"` +} + +func init() { + t["VirtualNVMEControllerOption"] = reflect.TypeOf((*VirtualNVMEControllerOption)(nil)).Elem() +} + +type VirtualNicManagerNetConfig struct { + DynamicData + + NicType string `xml:"nicType"` + MultiSelectAllowed bool `xml:"multiSelectAllowed"` + CandidateVnic []HostVirtualNic `xml:"candidateVnic,omitempty"` + SelectedVnic []string `xml:"selectedVnic,omitempty"` +} + +func init() { + t["VirtualNicManagerNetConfig"] = reflect.TypeOf((*VirtualNicManagerNetConfig)(nil)).Elem() +} + +type VirtualPCIController struct { + VirtualController +} + +func init() { + t["VirtualPCIController"] = reflect.TypeOf((*VirtualPCIController)(nil)).Elem() +} + +type VirtualPCIControllerOption struct { + VirtualControllerOption + + NumSCSIControllers IntOption `xml:"numSCSIControllers"` + NumEthernetCards IntOption `xml:"numEthernetCards"` + NumVideoCards IntOption `xml:"numVideoCards"` + NumSoundCards IntOption `xml:"numSoundCards"` + NumVmiRoms IntOption `xml:"numVmiRoms"` + NumVmciDevices *IntOption `xml:"numVmciDevices,omitempty"` + NumPCIPassthroughDevices *IntOption `xml:"numPCIPassthroughDevices,omitempty"` + NumSasSCSIControllers *IntOption `xml:"numSasSCSIControllers,omitempty"` + NumVmxnet3EthernetCards *IntOption `xml:"numVmxnet3EthernetCards,omitempty"` + NumParaVirtualSCSIControllers *IntOption `xml:"numParaVirtualSCSIControllers,omitempty"` + NumSATAControllers *IntOption `xml:"numSATAControllers,omitempty"` + NumNVMEControllers *IntOption `xml:"numNVMEControllers,omitempty"` + NumVmxnet3VrdmaEthernetCards *IntOption `xml:"numVmxnet3VrdmaEthernetCards,omitempty"` +} + +func init() { + t["VirtualPCIControllerOption"] = reflect.TypeOf((*VirtualPCIControllerOption)(nil)).Elem() +} + +type VirtualPCIPassthrough struct { + VirtualDevice +} + +func init() { + t["VirtualPCIPassthrough"] = reflect.TypeOf((*VirtualPCIPassthrough)(nil)).Elem() +} + +type VirtualPCIPassthroughAllowedDevice struct { + DynamicData + + VendorId int32 `xml:"vendorId"` + DeviceId int32 `xml:"deviceId"` + SubVendorId int32 `xml:"subVendorId,omitempty"` + SubDeviceId int32 `xml:"subDeviceId,omitempty"` + RevisionId int16 `xml:"revisionId,omitempty"` +} + +func init() { + t["VirtualPCIPassthroughAllowedDevice"] = reflect.TypeOf((*VirtualPCIPassthroughAllowedDevice)(nil)).Elem() +} + +type VirtualPCIPassthroughDeviceBackingInfo struct { + VirtualDeviceDeviceBackingInfo + + Id string `xml:"id"` + DeviceId string `xml:"deviceId"` + SystemId string `xml:"systemId"` + VendorId int16 `xml:"vendorId"` +} + +func init() { + t["VirtualPCIPassthroughDeviceBackingInfo"] = reflect.TypeOf((*VirtualPCIPassthroughDeviceBackingInfo)(nil)).Elem() +} + +type VirtualPCIPassthroughDeviceBackingOption struct { + VirtualDeviceDeviceBackingOption +} + +func init() { + t["VirtualPCIPassthroughDeviceBackingOption"] = reflect.TypeOf((*VirtualPCIPassthroughDeviceBackingOption)(nil)).Elem() +} + +type VirtualPCIPassthroughDynamicBackingInfo struct { + VirtualDeviceDeviceBackingInfo + + AllowedDevice []VirtualPCIPassthroughAllowedDevice `xml:"allowedDevice,omitempty"` + CustomLabel string `xml:"customLabel,omitempty"` + AssignedId string `xml:"assignedId,omitempty"` +} + +func init() { + t["VirtualPCIPassthroughDynamicBackingInfo"] = reflect.TypeOf((*VirtualPCIPassthroughDynamicBackingInfo)(nil)).Elem() +} + +type VirtualPCIPassthroughDynamicBackingOption struct { + VirtualDeviceDeviceBackingOption +} + +func init() { + t["VirtualPCIPassthroughDynamicBackingOption"] = reflect.TypeOf((*VirtualPCIPassthroughDynamicBackingOption)(nil)).Elem() +} + +type VirtualPCIPassthroughOption struct { + VirtualDeviceOption +} + +func init() { + t["VirtualPCIPassthroughOption"] = reflect.TypeOf((*VirtualPCIPassthroughOption)(nil)).Elem() +} + +type VirtualPCIPassthroughPluginBackingInfo struct { + VirtualDeviceBackingInfo +} + +func init() { + t["VirtualPCIPassthroughPluginBackingInfo"] = reflect.TypeOf((*VirtualPCIPassthroughPluginBackingInfo)(nil)).Elem() +} + +type VirtualPCIPassthroughPluginBackingOption struct { + VirtualDeviceBackingOption +} + +func init() { + t["VirtualPCIPassthroughPluginBackingOption"] = reflect.TypeOf((*VirtualPCIPassthroughPluginBackingOption)(nil)).Elem() +} + +type VirtualPCIPassthroughVmiopBackingInfo struct { + VirtualPCIPassthroughPluginBackingInfo + + Vgpu string `xml:"vgpu,omitempty"` +} + +func init() { + t["VirtualPCIPassthroughVmiopBackingInfo"] = reflect.TypeOf((*VirtualPCIPassthroughVmiopBackingInfo)(nil)).Elem() +} + +type VirtualPCIPassthroughVmiopBackingOption struct { + VirtualPCIPassthroughPluginBackingOption + + Vgpu StringOption `xml:"vgpu"` + MaxInstances int32 `xml:"maxInstances"` +} + +func init() { + t["VirtualPCIPassthroughVmiopBackingOption"] = reflect.TypeOf((*VirtualPCIPassthroughVmiopBackingOption)(nil)).Elem() +} + +type VirtualPCNet32 struct { + VirtualEthernetCard +} + +func init() { + t["VirtualPCNet32"] = reflect.TypeOf((*VirtualPCNet32)(nil)).Elem() +} + +type VirtualPCNet32Option struct { + VirtualEthernetCardOption + + SupportsMorphing bool `xml:"supportsMorphing"` +} + +func init() { + t["VirtualPCNet32Option"] = reflect.TypeOf((*VirtualPCNet32Option)(nil)).Elem() +} + +type VirtualPS2Controller struct { + VirtualController +} + +func init() { + t["VirtualPS2Controller"] = reflect.TypeOf((*VirtualPS2Controller)(nil)).Elem() +} + +type VirtualPS2ControllerOption struct { + VirtualControllerOption + + NumKeyboards IntOption `xml:"numKeyboards"` + NumPointingDevices IntOption `xml:"numPointingDevices"` +} + +func init() { + t["VirtualPS2ControllerOption"] = reflect.TypeOf((*VirtualPS2ControllerOption)(nil)).Elem() +} + +type VirtualParallelPort struct { + VirtualDevice +} + +func init() { + t["VirtualParallelPort"] = reflect.TypeOf((*VirtualParallelPort)(nil)).Elem() +} + +type VirtualParallelPortDeviceBackingInfo struct { + VirtualDeviceDeviceBackingInfo +} + +func init() { + t["VirtualParallelPortDeviceBackingInfo"] = reflect.TypeOf((*VirtualParallelPortDeviceBackingInfo)(nil)).Elem() +} + +type VirtualParallelPortDeviceBackingOption struct { + VirtualDeviceDeviceBackingOption +} + +func init() { + t["VirtualParallelPortDeviceBackingOption"] = reflect.TypeOf((*VirtualParallelPortDeviceBackingOption)(nil)).Elem() +} + +type VirtualParallelPortFileBackingInfo struct { + VirtualDeviceFileBackingInfo +} + +func init() { + t["VirtualParallelPortFileBackingInfo"] = reflect.TypeOf((*VirtualParallelPortFileBackingInfo)(nil)).Elem() +} + +type VirtualParallelPortFileBackingOption struct { + VirtualDeviceFileBackingOption +} + +func init() { + t["VirtualParallelPortFileBackingOption"] = reflect.TypeOf((*VirtualParallelPortFileBackingOption)(nil)).Elem() +} + +type VirtualParallelPortOption struct { + VirtualDeviceOption +} + +func init() { + t["VirtualParallelPortOption"] = reflect.TypeOf((*VirtualParallelPortOption)(nil)).Elem() +} + +type VirtualPointingDevice struct { + VirtualDevice +} + +func init() { + t["VirtualPointingDevice"] = reflect.TypeOf((*VirtualPointingDevice)(nil)).Elem() +} + +type VirtualPointingDeviceBackingOption struct { + VirtualDeviceDeviceBackingOption + + HostPointingDevice ChoiceOption `xml:"hostPointingDevice"` +} + +func init() { + t["VirtualPointingDeviceBackingOption"] = reflect.TypeOf((*VirtualPointingDeviceBackingOption)(nil)).Elem() +} + +type VirtualPointingDeviceDeviceBackingInfo struct { + VirtualDeviceDeviceBackingInfo + + HostPointingDevice string `xml:"hostPointingDevice"` +} + +func init() { + t["VirtualPointingDeviceDeviceBackingInfo"] = reflect.TypeOf((*VirtualPointingDeviceDeviceBackingInfo)(nil)).Elem() +} + +type VirtualPointingDeviceOption struct { + VirtualDeviceOption +} + +func init() { + t["VirtualPointingDeviceOption"] = reflect.TypeOf((*VirtualPointingDeviceOption)(nil)).Elem() +} + +type VirtualPrecisionClock struct { + VirtualDevice +} + +func init() { + t["VirtualPrecisionClock"] = reflect.TypeOf((*VirtualPrecisionClock)(nil)).Elem() +} + +type VirtualPrecisionClockOption struct { + VirtualDeviceOption +} + +func init() { + t["VirtualPrecisionClockOption"] = reflect.TypeOf((*VirtualPrecisionClockOption)(nil)).Elem() +} + +type VirtualPrecisionClockSystemClockBackingInfo struct { + VirtualDeviceBackingInfo + + Protocol string `xml:"protocol,omitempty"` +} + +func init() { + t["VirtualPrecisionClockSystemClockBackingInfo"] = reflect.TypeOf((*VirtualPrecisionClockSystemClockBackingInfo)(nil)).Elem() +} + +type VirtualPrecisionClockSystemClockBackingOption struct { + VirtualDeviceBackingOption + + Protocol ChoiceOption `xml:"protocol"` +} + +func init() { + t["VirtualPrecisionClockSystemClockBackingOption"] = reflect.TypeOf((*VirtualPrecisionClockSystemClockBackingOption)(nil)).Elem() +} + +type VirtualSATAController struct { + VirtualController +} + +func init() { + t["VirtualSATAController"] = reflect.TypeOf((*VirtualSATAController)(nil)).Elem() +} + +type VirtualSATAControllerOption struct { + VirtualControllerOption + + NumSATADisks IntOption `xml:"numSATADisks"` + NumSATACdroms IntOption `xml:"numSATACdroms"` +} + +func init() { + t["VirtualSATAControllerOption"] = reflect.TypeOf((*VirtualSATAControllerOption)(nil)).Elem() +} + +type VirtualSCSIController struct { + VirtualController + + HotAddRemove *bool `xml:"hotAddRemove"` + SharedBus VirtualSCSISharing `xml:"sharedBus"` + ScsiCtlrUnitNumber int32 `xml:"scsiCtlrUnitNumber,omitempty"` +} + +func init() { + t["VirtualSCSIController"] = reflect.TypeOf((*VirtualSCSIController)(nil)).Elem() +} + +type VirtualSCSIControllerOption struct { + VirtualControllerOption + + NumSCSIDisks IntOption `xml:"numSCSIDisks"` + NumSCSICdroms IntOption `xml:"numSCSICdroms"` + NumSCSIPassthrough IntOption `xml:"numSCSIPassthrough"` + Sharing []VirtualSCSISharing `xml:"sharing"` + DefaultSharedIndex int32 `xml:"defaultSharedIndex"` + HotAddRemove BoolOption `xml:"hotAddRemove"` + ScsiCtlrUnitNumber int32 `xml:"scsiCtlrUnitNumber"` +} + +func init() { + t["VirtualSCSIControllerOption"] = reflect.TypeOf((*VirtualSCSIControllerOption)(nil)).Elem() +} + +type VirtualSCSIPassthrough struct { + VirtualDevice +} + +func init() { + t["VirtualSCSIPassthrough"] = reflect.TypeOf((*VirtualSCSIPassthrough)(nil)).Elem() +} + +type VirtualSCSIPassthroughDeviceBackingInfo struct { + VirtualDeviceDeviceBackingInfo +} + +func init() { + t["VirtualSCSIPassthroughDeviceBackingInfo"] = reflect.TypeOf((*VirtualSCSIPassthroughDeviceBackingInfo)(nil)).Elem() +} + +type VirtualSCSIPassthroughDeviceBackingOption struct { + VirtualDeviceDeviceBackingOption +} + +func init() { + t["VirtualSCSIPassthroughDeviceBackingOption"] = reflect.TypeOf((*VirtualSCSIPassthroughDeviceBackingOption)(nil)).Elem() +} + +type VirtualSCSIPassthroughOption struct { + VirtualDeviceOption +} + +func init() { + t["VirtualSCSIPassthroughOption"] = reflect.TypeOf((*VirtualSCSIPassthroughOption)(nil)).Elem() +} + +type VirtualSIOController struct { + VirtualController +} + +func init() { + t["VirtualSIOController"] = reflect.TypeOf((*VirtualSIOController)(nil)).Elem() +} + +type VirtualSIOControllerOption struct { + VirtualControllerOption + + NumFloppyDrives IntOption `xml:"numFloppyDrives"` + NumSerialPorts IntOption `xml:"numSerialPorts"` + NumParallelPorts IntOption `xml:"numParallelPorts"` +} + +func init() { + t["VirtualSIOControllerOption"] = reflect.TypeOf((*VirtualSIOControllerOption)(nil)).Elem() +} + +type VirtualSerialPort struct { + VirtualDevice + + YieldOnPoll bool `xml:"yieldOnPoll"` +} + +func init() { + t["VirtualSerialPort"] = reflect.TypeOf((*VirtualSerialPort)(nil)).Elem() +} + +type VirtualSerialPortDeviceBackingInfo struct { + VirtualDeviceDeviceBackingInfo +} + +func init() { + t["VirtualSerialPortDeviceBackingInfo"] = reflect.TypeOf((*VirtualSerialPortDeviceBackingInfo)(nil)).Elem() +} + +type VirtualSerialPortDeviceBackingOption struct { + VirtualDeviceDeviceBackingOption +} + +func init() { + t["VirtualSerialPortDeviceBackingOption"] = reflect.TypeOf((*VirtualSerialPortDeviceBackingOption)(nil)).Elem() +} + +type VirtualSerialPortFileBackingInfo struct { + VirtualDeviceFileBackingInfo +} + +func init() { + t["VirtualSerialPortFileBackingInfo"] = reflect.TypeOf((*VirtualSerialPortFileBackingInfo)(nil)).Elem() +} + +type VirtualSerialPortFileBackingOption struct { + VirtualDeviceFileBackingOption +} + +func init() { + t["VirtualSerialPortFileBackingOption"] = reflect.TypeOf((*VirtualSerialPortFileBackingOption)(nil)).Elem() +} + +type VirtualSerialPortOption struct { + VirtualDeviceOption + + YieldOnPoll BoolOption `xml:"yieldOnPoll"` +} + +func init() { + t["VirtualSerialPortOption"] = reflect.TypeOf((*VirtualSerialPortOption)(nil)).Elem() +} + +type VirtualSerialPortPipeBackingInfo struct { + VirtualDevicePipeBackingInfo + + Endpoint string `xml:"endpoint"` + NoRxLoss *bool `xml:"noRxLoss"` +} + +func init() { + t["VirtualSerialPortPipeBackingInfo"] = reflect.TypeOf((*VirtualSerialPortPipeBackingInfo)(nil)).Elem() +} + +type VirtualSerialPortPipeBackingOption struct { + VirtualDevicePipeBackingOption + + Endpoint ChoiceOption `xml:"endpoint"` + NoRxLoss BoolOption `xml:"noRxLoss"` +} + +func init() { + t["VirtualSerialPortPipeBackingOption"] = reflect.TypeOf((*VirtualSerialPortPipeBackingOption)(nil)).Elem() +} + +type VirtualSerialPortThinPrintBackingInfo struct { + VirtualDeviceBackingInfo +} + +func init() { + t["VirtualSerialPortThinPrintBackingInfo"] = reflect.TypeOf((*VirtualSerialPortThinPrintBackingInfo)(nil)).Elem() +} + +type VirtualSerialPortThinPrintBackingOption struct { + VirtualDeviceBackingOption +} + +func init() { + t["VirtualSerialPortThinPrintBackingOption"] = reflect.TypeOf((*VirtualSerialPortThinPrintBackingOption)(nil)).Elem() +} + +type VirtualSerialPortURIBackingInfo struct { + VirtualDeviceURIBackingInfo +} + +func init() { + t["VirtualSerialPortURIBackingInfo"] = reflect.TypeOf((*VirtualSerialPortURIBackingInfo)(nil)).Elem() +} + +type VirtualSerialPortURIBackingOption struct { + VirtualDeviceURIBackingOption +} + +func init() { + t["VirtualSerialPortURIBackingOption"] = reflect.TypeOf((*VirtualSerialPortURIBackingOption)(nil)).Elem() +} + +type VirtualSoundBlaster16 struct { + VirtualSoundCard +} + +func init() { + t["VirtualSoundBlaster16"] = reflect.TypeOf((*VirtualSoundBlaster16)(nil)).Elem() +} + +type VirtualSoundBlaster16Option struct { + VirtualSoundCardOption +} + +func init() { + t["VirtualSoundBlaster16Option"] = reflect.TypeOf((*VirtualSoundBlaster16Option)(nil)).Elem() +} + +type VirtualSoundCard struct { + VirtualDevice +} + +func init() { + t["VirtualSoundCard"] = reflect.TypeOf((*VirtualSoundCard)(nil)).Elem() +} + +type VirtualSoundCardDeviceBackingInfo struct { + VirtualDeviceDeviceBackingInfo +} + +func init() { + t["VirtualSoundCardDeviceBackingInfo"] = reflect.TypeOf((*VirtualSoundCardDeviceBackingInfo)(nil)).Elem() +} + +type VirtualSoundCardDeviceBackingOption struct { + VirtualDeviceDeviceBackingOption +} + +func init() { + t["VirtualSoundCardDeviceBackingOption"] = reflect.TypeOf((*VirtualSoundCardDeviceBackingOption)(nil)).Elem() +} + +type VirtualSoundCardOption struct { + VirtualDeviceOption +} + +func init() { + t["VirtualSoundCardOption"] = reflect.TypeOf((*VirtualSoundCardOption)(nil)).Elem() +} + +type VirtualSriovEthernetCard struct { + VirtualEthernetCard + + AllowGuestOSMtuChange *bool `xml:"allowGuestOSMtuChange"` + SriovBacking *VirtualSriovEthernetCardSriovBackingInfo `xml:"sriovBacking,omitempty"` +} + +func init() { + t["VirtualSriovEthernetCard"] = reflect.TypeOf((*VirtualSriovEthernetCard)(nil)).Elem() +} + +type VirtualSriovEthernetCardOption struct { + VirtualEthernetCardOption +} + +func init() { + t["VirtualSriovEthernetCardOption"] = reflect.TypeOf((*VirtualSriovEthernetCardOption)(nil)).Elem() +} + +type VirtualSriovEthernetCardSriovBackingInfo struct { + VirtualDeviceBackingInfo + + PhysicalFunctionBacking *VirtualPCIPassthroughDeviceBackingInfo `xml:"physicalFunctionBacking,omitempty"` + VirtualFunctionBacking *VirtualPCIPassthroughDeviceBackingInfo `xml:"virtualFunctionBacking,omitempty"` + VirtualFunctionIndex int32 `xml:"virtualFunctionIndex,omitempty"` +} + +func init() { + t["VirtualSriovEthernetCardSriovBackingInfo"] = reflect.TypeOf((*VirtualSriovEthernetCardSriovBackingInfo)(nil)).Elem() +} + +type VirtualSriovEthernetCardSriovBackingOption struct { + VirtualDeviceBackingOption +} + +func init() { + t["VirtualSriovEthernetCardSriovBackingOption"] = reflect.TypeOf((*VirtualSriovEthernetCardSriovBackingOption)(nil)).Elem() +} + +type VirtualSwitchProfile struct { + ApplyProfile + + Key string `xml:"key"` + Name string `xml:"name"` + Link LinkProfile `xml:"link"` + NumPorts NumPortsProfile `xml:"numPorts"` + NetworkPolicy NetworkPolicyProfile `xml:"networkPolicy"` +} + +func init() { + t["VirtualSwitchProfile"] = reflect.TypeOf((*VirtualSwitchProfile)(nil)).Elem() +} + +type VirtualSwitchSelectionProfile struct { + ApplyProfile +} + +func init() { + t["VirtualSwitchSelectionProfile"] = reflect.TypeOf((*VirtualSwitchSelectionProfile)(nil)).Elem() +} + +type VirtualTPM struct { + VirtualDevice + + EndorsementKeyCertificateSigningRequest [][]byte `xml:"endorsementKeyCertificateSigningRequest,omitempty"` + EndorsementKeyCertificate [][]byte `xml:"endorsementKeyCertificate,omitempty"` +} + +func init() { + t["VirtualTPM"] = reflect.TypeOf((*VirtualTPM)(nil)).Elem() +} + +type VirtualTPMOption struct { + VirtualDeviceOption + + SupportedFirmware []string `xml:"supportedFirmware,omitempty"` +} + +func init() { + t["VirtualTPMOption"] = reflect.TypeOf((*VirtualTPMOption)(nil)).Elem() +} + +type VirtualUSB struct { + VirtualDevice + + Connected bool `xml:"connected"` + Vendor int32 `xml:"vendor,omitempty"` + Product int32 `xml:"product,omitempty"` + Family []string `xml:"family,omitempty"` + Speed []string `xml:"speed,omitempty"` +} + +func init() { + t["VirtualUSB"] = reflect.TypeOf((*VirtualUSB)(nil)).Elem() +} + +type VirtualUSBController struct { + VirtualController + + AutoConnectDevices *bool `xml:"autoConnectDevices"` + EhciEnabled *bool `xml:"ehciEnabled"` +} + +func init() { + t["VirtualUSBController"] = reflect.TypeOf((*VirtualUSBController)(nil)).Elem() +} + +type VirtualUSBControllerOption struct { + VirtualControllerOption + + AutoConnectDevices BoolOption `xml:"autoConnectDevices"` + EhciSupported BoolOption `xml:"ehciSupported"` + SupportedSpeeds []string `xml:"supportedSpeeds,omitempty"` +} + +func init() { + t["VirtualUSBControllerOption"] = reflect.TypeOf((*VirtualUSBControllerOption)(nil)).Elem() +} + +type VirtualUSBControllerPciBusSlotInfo struct { + VirtualDevicePciBusSlotInfo + + EhciPciSlotNumber int32 `xml:"ehciPciSlotNumber,omitempty"` +} + +func init() { + t["VirtualUSBControllerPciBusSlotInfo"] = reflect.TypeOf((*VirtualUSBControllerPciBusSlotInfo)(nil)).Elem() +} + +type VirtualUSBOption struct { + VirtualDeviceOption +} + +func init() { + t["VirtualUSBOption"] = reflect.TypeOf((*VirtualUSBOption)(nil)).Elem() +} + +type VirtualUSBRemoteClientBackingInfo struct { + VirtualDeviceRemoteDeviceBackingInfo + + Hostname string `xml:"hostname"` +} + +func init() { + t["VirtualUSBRemoteClientBackingInfo"] = reflect.TypeOf((*VirtualUSBRemoteClientBackingInfo)(nil)).Elem() +} + +type VirtualUSBRemoteClientBackingOption struct { + VirtualDeviceRemoteDeviceBackingOption +} + +func init() { + t["VirtualUSBRemoteClientBackingOption"] = reflect.TypeOf((*VirtualUSBRemoteClientBackingOption)(nil)).Elem() +} + +type VirtualUSBRemoteHostBackingInfo struct { + VirtualDeviceDeviceBackingInfo + + Hostname string `xml:"hostname"` +} + +func init() { + t["VirtualUSBRemoteHostBackingInfo"] = reflect.TypeOf((*VirtualUSBRemoteHostBackingInfo)(nil)).Elem() +} + +type VirtualUSBRemoteHostBackingOption struct { + VirtualDeviceDeviceBackingOption +} + +func init() { + t["VirtualUSBRemoteHostBackingOption"] = reflect.TypeOf((*VirtualUSBRemoteHostBackingOption)(nil)).Elem() +} + +type VirtualUSBUSBBackingInfo struct { + VirtualDeviceDeviceBackingInfo +} + +func init() { + t["VirtualUSBUSBBackingInfo"] = reflect.TypeOf((*VirtualUSBUSBBackingInfo)(nil)).Elem() +} + +type VirtualUSBUSBBackingOption struct { + VirtualDeviceDeviceBackingOption +} + +func init() { + t["VirtualUSBUSBBackingOption"] = reflect.TypeOf((*VirtualUSBUSBBackingOption)(nil)).Elem() +} + +type VirtualUSBXHCIController struct { + VirtualController + + AutoConnectDevices *bool `xml:"autoConnectDevices"` +} + +func init() { + t["VirtualUSBXHCIController"] = reflect.TypeOf((*VirtualUSBXHCIController)(nil)).Elem() +} + +type VirtualUSBXHCIControllerOption struct { + VirtualControllerOption + + AutoConnectDevices BoolOption `xml:"autoConnectDevices"` + SupportedSpeeds []string `xml:"supportedSpeeds"` +} + +func init() { + t["VirtualUSBXHCIControllerOption"] = reflect.TypeOf((*VirtualUSBXHCIControllerOption)(nil)).Elem() +} + +type VirtualVMIROMOption struct { + VirtualDeviceOption +} + +func init() { + t["VirtualVMIROMOption"] = reflect.TypeOf((*VirtualVMIROMOption)(nil)).Elem() +} + +type VirtualVideoCardOption struct { + VirtualDeviceOption + + VideoRamSizeInKB *LongOption `xml:"videoRamSizeInKB,omitempty"` + NumDisplays *IntOption `xml:"numDisplays,omitempty"` + UseAutoDetect *BoolOption `xml:"useAutoDetect,omitempty"` + Support3D *BoolOption `xml:"support3D,omitempty"` + Use3dRendererSupported *BoolOption `xml:"use3dRendererSupported,omitempty"` + GraphicsMemorySizeInKB *LongOption `xml:"graphicsMemorySizeInKB,omitempty"` + GraphicsMemorySizeSupported *BoolOption `xml:"graphicsMemorySizeSupported,omitempty"` +} + +func init() { + t["VirtualVideoCardOption"] = reflect.TypeOf((*VirtualVideoCardOption)(nil)).Elem() +} + +type VirtualVmxnet struct { + VirtualEthernetCard +} + +func init() { + t["VirtualVmxnet"] = reflect.TypeOf((*VirtualVmxnet)(nil)).Elem() +} + +type VirtualVmxnet2 struct { + VirtualVmxnet +} + +func init() { + t["VirtualVmxnet2"] = reflect.TypeOf((*VirtualVmxnet2)(nil)).Elem() +} + +type VirtualVmxnet2Option struct { + VirtualVmxnetOption +} + +func init() { + t["VirtualVmxnet2Option"] = reflect.TypeOf((*VirtualVmxnet2Option)(nil)).Elem() +} + +type VirtualVmxnet3 struct { + VirtualVmxnet +} + +func init() { + t["VirtualVmxnet3"] = reflect.TypeOf((*VirtualVmxnet3)(nil)).Elem() +} + +type VirtualVmxnet3Option struct { + VirtualVmxnetOption +} + +func init() { + t["VirtualVmxnet3Option"] = reflect.TypeOf((*VirtualVmxnet3Option)(nil)).Elem() +} + +type VirtualVmxnet3Vrdma struct { + VirtualVmxnet3 + + DeviceProtocol string `xml:"deviceProtocol,omitempty"` +} + +func init() { + t["VirtualVmxnet3Vrdma"] = reflect.TypeOf((*VirtualVmxnet3Vrdma)(nil)).Elem() +} + +type VirtualVmxnet3VrdmaOption struct { + VirtualVmxnet3Option + + DeviceProtocol *ChoiceOption `xml:"deviceProtocol,omitempty"` +} + +func init() { + t["VirtualVmxnet3VrdmaOption"] = reflect.TypeOf((*VirtualVmxnet3VrdmaOption)(nil)).Elem() +} + +type VirtualVmxnetOption struct { + VirtualEthernetCardOption +} + +func init() { + t["VirtualVmxnetOption"] = reflect.TypeOf((*VirtualVmxnetOption)(nil)).Elem() +} + +type VirtualWDT struct { + VirtualDevice + + RunOnBoot bool `xml:"runOnBoot"` + Running bool `xml:"running"` +} + +func init() { + t["VirtualWDT"] = reflect.TypeOf((*VirtualWDT)(nil)).Elem() +} + +type VirtualWDTOption struct { + VirtualDeviceOption + + RunOnBoot BoolOption `xml:"runOnBoot"` +} + +func init() { + t["VirtualWDTOption"] = reflect.TypeOf((*VirtualWDTOption)(nil)).Elem() +} + +type VlanProfile struct { + ApplyProfile +} + +func init() { + t["VlanProfile"] = reflect.TypeOf((*VlanProfile)(nil)).Elem() +} + +type VmAcquiredMksTicketEvent struct { + VmEvent +} + +func init() { + t["VmAcquiredMksTicketEvent"] = reflect.TypeOf((*VmAcquiredMksTicketEvent)(nil)).Elem() +} + +type VmAcquiredTicketEvent struct { + VmEvent + + TicketType string `xml:"ticketType"` +} + +func init() { + t["VmAcquiredTicketEvent"] = reflect.TypeOf((*VmAcquiredTicketEvent)(nil)).Elem() +} + +type VmAlreadyExistsInDatacenter struct { + InvalidFolder + + Host ManagedObjectReference `xml:"host"` + Hostname string `xml:"hostname"` + Vm []ManagedObjectReference `xml:"vm"` +} + +func init() { + t["VmAlreadyExistsInDatacenter"] = reflect.TypeOf((*VmAlreadyExistsInDatacenter)(nil)).Elem() +} + +type VmAlreadyExistsInDatacenterFault VmAlreadyExistsInDatacenter + +func init() { + t["VmAlreadyExistsInDatacenterFault"] = reflect.TypeOf((*VmAlreadyExistsInDatacenterFault)(nil)).Elem() +} + +type VmAutoRenameEvent struct { + VmEvent + + OldName string `xml:"oldName"` + NewName string `xml:"newName"` +} + +func init() { + t["VmAutoRenameEvent"] = reflect.TypeOf((*VmAutoRenameEvent)(nil)).Elem() +} + +type VmBeingClonedEvent struct { + VmCloneEvent + + DestFolder FolderEventArgument `xml:"destFolder"` + DestName string `xml:"destName"` + DestHost HostEventArgument `xml:"destHost"` +} + +func init() { + t["VmBeingClonedEvent"] = reflect.TypeOf((*VmBeingClonedEvent)(nil)).Elem() +} + +type VmBeingClonedNoFolderEvent struct { + VmCloneEvent + + DestName string `xml:"destName"` + DestHost HostEventArgument `xml:"destHost"` +} + +func init() { + t["VmBeingClonedNoFolderEvent"] = reflect.TypeOf((*VmBeingClonedNoFolderEvent)(nil)).Elem() +} + +type VmBeingCreatedEvent struct { + VmEvent + + ConfigSpec *VirtualMachineConfigSpec `xml:"configSpec,omitempty"` +} + +func init() { + t["VmBeingCreatedEvent"] = reflect.TypeOf((*VmBeingCreatedEvent)(nil)).Elem() +} + +type VmBeingDeployedEvent struct { + VmEvent + + SrcTemplate VmEventArgument `xml:"srcTemplate"` +} + +func init() { + t["VmBeingDeployedEvent"] = reflect.TypeOf((*VmBeingDeployedEvent)(nil)).Elem() +} + +type VmBeingHotMigratedEvent struct { + VmEvent + + DestHost HostEventArgument `xml:"destHost"` + DestDatacenter *DatacenterEventArgument `xml:"destDatacenter,omitempty"` + DestDatastore *DatastoreEventArgument `xml:"destDatastore,omitempty"` +} + +func init() { + t["VmBeingHotMigratedEvent"] = reflect.TypeOf((*VmBeingHotMigratedEvent)(nil)).Elem() +} + +type VmBeingMigratedEvent struct { + VmEvent + + DestHost HostEventArgument `xml:"destHost"` + DestDatacenter *DatacenterEventArgument `xml:"destDatacenter,omitempty"` + DestDatastore *DatastoreEventArgument `xml:"destDatastore,omitempty"` +} + +func init() { + t["VmBeingMigratedEvent"] = reflect.TypeOf((*VmBeingMigratedEvent)(nil)).Elem() +} + +type VmBeingRelocatedEvent struct { + VmRelocateSpecEvent + + DestHost HostEventArgument `xml:"destHost"` + DestDatacenter *DatacenterEventArgument `xml:"destDatacenter,omitempty"` + DestDatastore *DatastoreEventArgument `xml:"destDatastore,omitempty"` +} + +func init() { + t["VmBeingRelocatedEvent"] = reflect.TypeOf((*VmBeingRelocatedEvent)(nil)).Elem() +} + +type VmCloneEvent struct { + VmEvent +} + +func init() { + t["VmCloneEvent"] = reflect.TypeOf((*VmCloneEvent)(nil)).Elem() +} + +type VmCloneFailedEvent struct { + VmCloneEvent + + DestFolder FolderEventArgument `xml:"destFolder"` + DestName string `xml:"destName"` + DestHost HostEventArgument `xml:"destHost"` + Reason LocalizedMethodFault `xml:"reason"` +} + +func init() { + t["VmCloneFailedEvent"] = reflect.TypeOf((*VmCloneFailedEvent)(nil)).Elem() +} + +type VmClonedEvent struct { + VmCloneEvent + + SourceVm VmEventArgument `xml:"sourceVm"` +} + +func init() { + t["VmClonedEvent"] = reflect.TypeOf((*VmClonedEvent)(nil)).Elem() +} + +type VmConfigFault struct { + VimFault +} + +func init() { + t["VmConfigFault"] = reflect.TypeOf((*VmConfigFault)(nil)).Elem() +} + +type VmConfigFaultFault BaseVmConfigFault + +func init() { + t["VmConfigFaultFault"] = reflect.TypeOf((*VmConfigFaultFault)(nil)).Elem() +} + +type VmConfigFileEncryptionInfo struct { + DynamicData + + KeyId *CryptoKeyId `xml:"keyId,omitempty"` +} + +func init() { + t["VmConfigFileEncryptionInfo"] = reflect.TypeOf((*VmConfigFileEncryptionInfo)(nil)).Elem() +} + +type VmConfigFileInfo struct { + FileInfo + + ConfigVersion int32 `xml:"configVersion,omitempty"` + Encryption *VmConfigFileEncryptionInfo `xml:"encryption,omitempty"` +} + +func init() { + t["VmConfigFileInfo"] = reflect.TypeOf((*VmConfigFileInfo)(nil)).Elem() +} + +type VmConfigFileQuery struct { + FileQuery + + Filter *VmConfigFileQueryFilter `xml:"filter,omitempty"` + Details *VmConfigFileQueryFlags `xml:"details,omitempty"` +} + +func init() { + t["VmConfigFileQuery"] = reflect.TypeOf((*VmConfigFileQuery)(nil)).Elem() +} + +type VmConfigFileQueryFilter struct { + DynamicData + + MatchConfigVersion []int32 `xml:"matchConfigVersion,omitempty"` + Encrypted *bool `xml:"encrypted"` +} + +func init() { + t["VmConfigFileQueryFilter"] = reflect.TypeOf((*VmConfigFileQueryFilter)(nil)).Elem() +} + +type VmConfigFileQueryFlags struct { + DynamicData + + ConfigVersion bool `xml:"configVersion"` + Encryption *bool `xml:"encryption"` +} + +func init() { + t["VmConfigFileQueryFlags"] = reflect.TypeOf((*VmConfigFileQueryFlags)(nil)).Elem() +} + +type VmConfigIncompatibleForFaultTolerance struct { + VmConfigFault + + Fault *LocalizedMethodFault `xml:"fault,omitempty"` +} + +func init() { + t["VmConfigIncompatibleForFaultTolerance"] = reflect.TypeOf((*VmConfigIncompatibleForFaultTolerance)(nil)).Elem() +} + +type VmConfigIncompatibleForFaultToleranceFault VmConfigIncompatibleForFaultTolerance + +func init() { + t["VmConfigIncompatibleForFaultToleranceFault"] = reflect.TypeOf((*VmConfigIncompatibleForFaultToleranceFault)(nil)).Elem() +} + +type VmConfigIncompatibleForRecordReplay struct { + VmConfigFault + + Fault *LocalizedMethodFault `xml:"fault,omitempty"` +} + +func init() { + t["VmConfigIncompatibleForRecordReplay"] = reflect.TypeOf((*VmConfigIncompatibleForRecordReplay)(nil)).Elem() +} + +type VmConfigIncompatibleForRecordReplayFault VmConfigIncompatibleForRecordReplay + +func init() { + t["VmConfigIncompatibleForRecordReplayFault"] = reflect.TypeOf((*VmConfigIncompatibleForRecordReplayFault)(nil)).Elem() +} + +type VmConfigInfo struct { + DynamicData + + Product []VAppProductInfo `xml:"product,omitempty"` + Property []VAppPropertyInfo `xml:"property,omitempty"` + IpAssignment VAppIPAssignmentInfo `xml:"ipAssignment"` + Eula []string `xml:"eula,omitempty"` + OvfSection []VAppOvfSectionInfo `xml:"ovfSection,omitempty"` + OvfEnvironmentTransport []string `xml:"ovfEnvironmentTransport,omitempty"` + InstallBootRequired bool `xml:"installBootRequired"` + InstallBootStopDelay int32 `xml:"installBootStopDelay"` +} + +func init() { + t["VmConfigInfo"] = reflect.TypeOf((*VmConfigInfo)(nil)).Elem() +} + +type VmConfigMissingEvent struct { + VmEvent +} + +func init() { + t["VmConfigMissingEvent"] = reflect.TypeOf((*VmConfigMissingEvent)(nil)).Elem() +} + +type VmConfigSpec struct { + DynamicData + + Product []VAppProductSpec `xml:"product,omitempty"` + Property []VAppPropertySpec `xml:"property,omitempty"` + IpAssignment *VAppIPAssignmentInfo `xml:"ipAssignment,omitempty"` + Eula []string `xml:"eula,omitempty"` + OvfSection []VAppOvfSectionSpec `xml:"ovfSection,omitempty"` + OvfEnvironmentTransport []string `xml:"ovfEnvironmentTransport,omitempty"` + InstallBootRequired *bool `xml:"installBootRequired"` + InstallBootStopDelay int32 `xml:"installBootStopDelay,omitempty"` +} + +func init() { + t["VmConfigSpec"] = reflect.TypeOf((*VmConfigSpec)(nil)).Elem() +} + +type VmConnectedEvent struct { + VmEvent +} + +func init() { + t["VmConnectedEvent"] = reflect.TypeOf((*VmConnectedEvent)(nil)).Elem() +} + +type VmCreatedEvent struct { + VmEvent +} + +func init() { + t["VmCreatedEvent"] = reflect.TypeOf((*VmCreatedEvent)(nil)).Elem() +} + +type VmDasBeingResetEvent struct { + VmEvent + + Reason string `xml:"reason,omitempty"` +} + +func init() { + t["VmDasBeingResetEvent"] = reflect.TypeOf((*VmDasBeingResetEvent)(nil)).Elem() +} + +type VmDasBeingResetWithScreenshotEvent struct { + VmDasBeingResetEvent + + ScreenshotFilePath string `xml:"screenshotFilePath"` +} + +func init() { + t["VmDasBeingResetWithScreenshotEvent"] = reflect.TypeOf((*VmDasBeingResetWithScreenshotEvent)(nil)).Elem() +} + +type VmDasResetFailedEvent struct { + VmEvent +} + +func init() { + t["VmDasResetFailedEvent"] = reflect.TypeOf((*VmDasResetFailedEvent)(nil)).Elem() +} + +type VmDasUpdateErrorEvent struct { + VmEvent +} + +func init() { + t["VmDasUpdateErrorEvent"] = reflect.TypeOf((*VmDasUpdateErrorEvent)(nil)).Elem() +} + +type VmDasUpdateOkEvent struct { + VmEvent +} + +func init() { + t["VmDasUpdateOkEvent"] = reflect.TypeOf((*VmDasUpdateOkEvent)(nil)).Elem() +} + +type VmDateRolledBackEvent struct { + VmEvent +} + +func init() { + t["VmDateRolledBackEvent"] = reflect.TypeOf((*VmDateRolledBackEvent)(nil)).Elem() +} + +type VmDeployFailedEvent struct { + VmEvent + + DestDatastore BaseEntityEventArgument `xml:"destDatastore,typeattr"` + Reason LocalizedMethodFault `xml:"reason"` +} + +func init() { + t["VmDeployFailedEvent"] = reflect.TypeOf((*VmDeployFailedEvent)(nil)).Elem() +} + +type VmDeployedEvent struct { + VmEvent + + SrcTemplate VmEventArgument `xml:"srcTemplate"` +} + +func init() { + t["VmDeployedEvent"] = reflect.TypeOf((*VmDeployedEvent)(nil)).Elem() +} + +type VmDisconnectedEvent struct { + VmEvent +} + +func init() { + t["VmDisconnectedEvent"] = reflect.TypeOf((*VmDisconnectedEvent)(nil)).Elem() +} + +type VmDiscoveredEvent struct { + VmEvent +} + +func init() { + t["VmDiscoveredEvent"] = reflect.TypeOf((*VmDiscoveredEvent)(nil)).Elem() +} + +type VmDiskFailedEvent struct { + VmEvent + + Disk string `xml:"disk"` + Reason LocalizedMethodFault `xml:"reason"` +} + +func init() { + t["VmDiskFailedEvent"] = reflect.TypeOf((*VmDiskFailedEvent)(nil)).Elem() +} + +type VmDiskFileEncryptionInfo struct { + DynamicData + + KeyId *CryptoKeyId `xml:"keyId,omitempty"` +} + +func init() { + t["VmDiskFileEncryptionInfo"] = reflect.TypeOf((*VmDiskFileEncryptionInfo)(nil)).Elem() +} + +type VmDiskFileInfo struct { + FileInfo + + DiskType string `xml:"diskType,omitempty"` + CapacityKb int64 `xml:"capacityKb,omitempty"` + HardwareVersion int32 `xml:"hardwareVersion,omitempty"` + ControllerType string `xml:"controllerType,omitempty"` + DiskExtents []string `xml:"diskExtents,omitempty"` + Thin *bool `xml:"thin"` + Encryption *VmDiskFileEncryptionInfo `xml:"encryption,omitempty"` +} + +func init() { + t["VmDiskFileInfo"] = reflect.TypeOf((*VmDiskFileInfo)(nil)).Elem() +} + +type VmDiskFileQuery struct { + FileQuery + + Filter *VmDiskFileQueryFilter `xml:"filter,omitempty"` + Details *VmDiskFileQueryFlags `xml:"details,omitempty"` +} + +func init() { + t["VmDiskFileQuery"] = reflect.TypeOf((*VmDiskFileQuery)(nil)).Elem() +} + +type VmDiskFileQueryFilter struct { + DynamicData + + DiskType []string `xml:"diskType,omitempty"` + MatchHardwareVersion []int32 `xml:"matchHardwareVersion,omitempty"` + ControllerType []string `xml:"controllerType,omitempty"` + Thin *bool `xml:"thin"` + Encrypted *bool `xml:"encrypted"` +} + +func init() { + t["VmDiskFileQueryFilter"] = reflect.TypeOf((*VmDiskFileQueryFilter)(nil)).Elem() +} + +type VmDiskFileQueryFlags struct { + DynamicData + + DiskType bool `xml:"diskType"` + CapacityKb bool `xml:"capacityKb"` + HardwareVersion bool `xml:"hardwareVersion"` + ControllerType *bool `xml:"controllerType"` + DiskExtents *bool `xml:"diskExtents"` + Thin *bool `xml:"thin"` + Encryption *bool `xml:"encryption"` +} + +func init() { + t["VmDiskFileQueryFlags"] = reflect.TypeOf((*VmDiskFileQueryFlags)(nil)).Elem() +} + +type VmEmigratingEvent struct { + VmEvent +} + +func init() { + t["VmEmigratingEvent"] = reflect.TypeOf((*VmEmigratingEvent)(nil)).Elem() +} + +type VmEndRecordingEvent struct { + VmEvent +} + +func init() { + t["VmEndRecordingEvent"] = reflect.TypeOf((*VmEndRecordingEvent)(nil)).Elem() +} + +type VmEndReplayingEvent struct { + VmEvent +} + +func init() { + t["VmEndReplayingEvent"] = reflect.TypeOf((*VmEndReplayingEvent)(nil)).Elem() +} + +type VmEvent struct { + Event + + Template bool `xml:"template"` +} + +func init() { + t["VmEvent"] = reflect.TypeOf((*VmEvent)(nil)).Elem() +} + +type VmEventArgument struct { + EntityEventArgument + + Vm ManagedObjectReference `xml:"vm"` +} + +func init() { + t["VmEventArgument"] = reflect.TypeOf((*VmEventArgument)(nil)).Elem() +} + +type VmFailedMigrateEvent struct { + VmEvent + + DestHost HostEventArgument `xml:"destHost"` + Reason LocalizedMethodFault `xml:"reason"` + DestDatacenter *DatacenterEventArgument `xml:"destDatacenter,omitempty"` + DestDatastore *DatastoreEventArgument `xml:"destDatastore,omitempty"` +} + +func init() { + t["VmFailedMigrateEvent"] = reflect.TypeOf((*VmFailedMigrateEvent)(nil)).Elem() +} + +type VmFailedRelayoutEvent struct { + VmEvent + + Reason LocalizedMethodFault `xml:"reason"` +} + +func init() { + t["VmFailedRelayoutEvent"] = reflect.TypeOf((*VmFailedRelayoutEvent)(nil)).Elem() +} + +type VmFailedRelayoutOnVmfs2DatastoreEvent struct { + VmEvent +} + +func init() { + t["VmFailedRelayoutOnVmfs2DatastoreEvent"] = reflect.TypeOf((*VmFailedRelayoutOnVmfs2DatastoreEvent)(nil)).Elem() +} + +type VmFailedStartingSecondaryEvent struct { + VmEvent + + Reason string `xml:"reason,omitempty"` +} + +func init() { + t["VmFailedStartingSecondaryEvent"] = reflect.TypeOf((*VmFailedStartingSecondaryEvent)(nil)).Elem() +} + +type VmFailedToPowerOffEvent struct { + VmEvent + + Reason LocalizedMethodFault `xml:"reason"` +} + +func init() { + t["VmFailedToPowerOffEvent"] = reflect.TypeOf((*VmFailedToPowerOffEvent)(nil)).Elem() +} + +type VmFailedToPowerOnEvent struct { + VmEvent + + Reason LocalizedMethodFault `xml:"reason"` +} + +func init() { + t["VmFailedToPowerOnEvent"] = reflect.TypeOf((*VmFailedToPowerOnEvent)(nil)).Elem() +} + +type VmFailedToRebootGuestEvent struct { + VmEvent + + Reason LocalizedMethodFault `xml:"reason"` +} + +func init() { + t["VmFailedToRebootGuestEvent"] = reflect.TypeOf((*VmFailedToRebootGuestEvent)(nil)).Elem() +} + +type VmFailedToResetEvent struct { + VmEvent + + Reason LocalizedMethodFault `xml:"reason"` +} + +func init() { + t["VmFailedToResetEvent"] = reflect.TypeOf((*VmFailedToResetEvent)(nil)).Elem() +} + +type VmFailedToShutdownGuestEvent struct { + VmEvent + + Reason LocalizedMethodFault `xml:"reason"` +} + +func init() { + t["VmFailedToShutdownGuestEvent"] = reflect.TypeOf((*VmFailedToShutdownGuestEvent)(nil)).Elem() +} + +type VmFailedToStandbyGuestEvent struct { + VmEvent + + Reason LocalizedMethodFault `xml:"reason"` +} + +func init() { + t["VmFailedToStandbyGuestEvent"] = reflect.TypeOf((*VmFailedToStandbyGuestEvent)(nil)).Elem() +} + +type VmFailedToSuspendEvent struct { + VmEvent + + Reason LocalizedMethodFault `xml:"reason"` +} + +func init() { + t["VmFailedToSuspendEvent"] = reflect.TypeOf((*VmFailedToSuspendEvent)(nil)).Elem() +} + +type VmFailedUpdatingSecondaryConfig struct { + VmEvent +} + +func init() { + t["VmFailedUpdatingSecondaryConfig"] = reflect.TypeOf((*VmFailedUpdatingSecondaryConfig)(nil)).Elem() +} + +type VmFailoverFailed struct { + VmEvent + + Reason *LocalizedMethodFault `xml:"reason,omitempty"` +} + +func init() { + t["VmFailoverFailed"] = reflect.TypeOf((*VmFailoverFailed)(nil)).Elem() +} + +type VmFaultToleranceConfigIssue struct { + VmFaultToleranceIssue + + Reason string `xml:"reason,omitempty"` + EntityName string `xml:"entityName,omitempty"` + Entity *ManagedObjectReference `xml:"entity,omitempty"` +} + +func init() { + t["VmFaultToleranceConfigIssue"] = reflect.TypeOf((*VmFaultToleranceConfigIssue)(nil)).Elem() +} + +type VmFaultToleranceConfigIssueFault VmFaultToleranceConfigIssue + +func init() { + t["VmFaultToleranceConfigIssueFault"] = reflect.TypeOf((*VmFaultToleranceConfigIssueFault)(nil)).Elem() +} + +type VmFaultToleranceConfigIssueWrapper struct { + VmFaultToleranceIssue + + EntityName string `xml:"entityName,omitempty"` + Entity *ManagedObjectReference `xml:"entity,omitempty"` + Error *LocalizedMethodFault `xml:"error,omitempty"` +} + +func init() { + t["VmFaultToleranceConfigIssueWrapper"] = reflect.TypeOf((*VmFaultToleranceConfigIssueWrapper)(nil)).Elem() +} + +type VmFaultToleranceConfigIssueWrapperFault VmFaultToleranceConfigIssueWrapper + +func init() { + t["VmFaultToleranceConfigIssueWrapperFault"] = reflect.TypeOf((*VmFaultToleranceConfigIssueWrapperFault)(nil)).Elem() +} + +type VmFaultToleranceInvalidFileBacking struct { + VmFaultToleranceIssue + + BackingType string `xml:"backingType,omitempty"` + BackingFilename string `xml:"backingFilename,omitempty"` +} + +func init() { + t["VmFaultToleranceInvalidFileBacking"] = reflect.TypeOf((*VmFaultToleranceInvalidFileBacking)(nil)).Elem() +} + +type VmFaultToleranceInvalidFileBackingFault VmFaultToleranceInvalidFileBacking + +func init() { + t["VmFaultToleranceInvalidFileBackingFault"] = reflect.TypeOf((*VmFaultToleranceInvalidFileBackingFault)(nil)).Elem() +} + +type VmFaultToleranceIssue struct { + VimFault +} + +func init() { + t["VmFaultToleranceIssue"] = reflect.TypeOf((*VmFaultToleranceIssue)(nil)).Elem() +} + +type VmFaultToleranceIssueFault BaseVmFaultToleranceIssue + +func init() { + t["VmFaultToleranceIssueFault"] = reflect.TypeOf((*VmFaultToleranceIssueFault)(nil)).Elem() +} + +type VmFaultToleranceOpIssuesList struct { + VmFaultToleranceIssue + + Errors []LocalizedMethodFault `xml:"errors,omitempty"` + Warnings []LocalizedMethodFault `xml:"warnings,omitempty"` +} + +func init() { + t["VmFaultToleranceOpIssuesList"] = reflect.TypeOf((*VmFaultToleranceOpIssuesList)(nil)).Elem() +} + +type VmFaultToleranceOpIssuesListFault VmFaultToleranceOpIssuesList + +func init() { + t["VmFaultToleranceOpIssuesListFault"] = reflect.TypeOf((*VmFaultToleranceOpIssuesListFault)(nil)).Elem() +} + +type VmFaultToleranceStateChangedEvent struct { + VmEvent + + OldState VirtualMachineFaultToleranceState `xml:"oldState"` + NewState VirtualMachineFaultToleranceState `xml:"newState"` +} + +func init() { + t["VmFaultToleranceStateChangedEvent"] = reflect.TypeOf((*VmFaultToleranceStateChangedEvent)(nil)).Elem() +} + +type VmFaultToleranceTooManyFtVcpusOnHost struct { + InsufficientResourcesFault + + HostName string `xml:"hostName,omitempty"` + MaxNumFtVcpus int32 `xml:"maxNumFtVcpus"` +} + +func init() { + t["VmFaultToleranceTooManyFtVcpusOnHost"] = reflect.TypeOf((*VmFaultToleranceTooManyFtVcpusOnHost)(nil)).Elem() +} + +type VmFaultToleranceTooManyFtVcpusOnHostFault VmFaultToleranceTooManyFtVcpusOnHost + +func init() { + t["VmFaultToleranceTooManyFtVcpusOnHostFault"] = reflect.TypeOf((*VmFaultToleranceTooManyFtVcpusOnHostFault)(nil)).Elem() +} + +type VmFaultToleranceTooManyVMsOnHost struct { + InsufficientResourcesFault + + HostName string `xml:"hostName,omitempty"` + MaxNumFtVms int32 `xml:"maxNumFtVms"` +} + +func init() { + t["VmFaultToleranceTooManyVMsOnHost"] = reflect.TypeOf((*VmFaultToleranceTooManyVMsOnHost)(nil)).Elem() +} + +type VmFaultToleranceTooManyVMsOnHostFault VmFaultToleranceTooManyVMsOnHost + +func init() { + t["VmFaultToleranceTooManyVMsOnHostFault"] = reflect.TypeOf((*VmFaultToleranceTooManyVMsOnHostFault)(nil)).Elem() +} + +type VmFaultToleranceTurnedOffEvent struct { + VmEvent +} + +func init() { + t["VmFaultToleranceTurnedOffEvent"] = reflect.TypeOf((*VmFaultToleranceTurnedOffEvent)(nil)).Elem() +} + +type VmFaultToleranceVmTerminatedEvent struct { + VmEvent + + Reason string `xml:"reason,omitempty"` +} + +func init() { + t["VmFaultToleranceVmTerminatedEvent"] = reflect.TypeOf((*VmFaultToleranceVmTerminatedEvent)(nil)).Elem() +} + +type VmGuestOSCrashedEvent struct { + VmEvent +} + +func init() { + t["VmGuestOSCrashedEvent"] = reflect.TypeOf((*VmGuestOSCrashedEvent)(nil)).Elem() +} + +type VmGuestRebootEvent struct { + VmEvent +} + +func init() { + t["VmGuestRebootEvent"] = reflect.TypeOf((*VmGuestRebootEvent)(nil)).Elem() +} + +type VmGuestShutdownEvent struct { + VmEvent +} + +func init() { + t["VmGuestShutdownEvent"] = reflect.TypeOf((*VmGuestShutdownEvent)(nil)).Elem() +} + +type VmGuestStandbyEvent struct { + VmEvent +} + +func init() { + t["VmGuestStandbyEvent"] = reflect.TypeOf((*VmGuestStandbyEvent)(nil)).Elem() +} + +type VmHealthMonitoringStateChangedEvent struct { + ClusterEvent + + State string `xml:"state"` + PrevState string `xml:"prevState,omitempty"` +} + +func init() { + t["VmHealthMonitoringStateChangedEvent"] = reflect.TypeOf((*VmHealthMonitoringStateChangedEvent)(nil)).Elem() +} + +type VmHostAffinityRuleViolation struct { + VmConfigFault + + VmName string `xml:"vmName"` + HostName string `xml:"hostName"` +} + +func init() { + t["VmHostAffinityRuleViolation"] = reflect.TypeOf((*VmHostAffinityRuleViolation)(nil)).Elem() +} + +type VmHostAffinityRuleViolationFault VmHostAffinityRuleViolation + +func init() { + t["VmHostAffinityRuleViolationFault"] = reflect.TypeOf((*VmHostAffinityRuleViolationFault)(nil)).Elem() +} + +type VmInstanceUuidAssignedEvent struct { + VmEvent + + InstanceUuid string `xml:"instanceUuid"` +} + +func init() { + t["VmInstanceUuidAssignedEvent"] = reflect.TypeOf((*VmInstanceUuidAssignedEvent)(nil)).Elem() +} + +type VmInstanceUuidChangedEvent struct { + VmEvent + + OldInstanceUuid string `xml:"oldInstanceUuid"` + NewInstanceUuid string `xml:"newInstanceUuid"` +} + +func init() { + t["VmInstanceUuidChangedEvent"] = reflect.TypeOf((*VmInstanceUuidChangedEvent)(nil)).Elem() +} + +type VmInstanceUuidConflictEvent struct { + VmEvent + + ConflictedVm VmEventArgument `xml:"conflictedVm"` + InstanceUuid string `xml:"instanceUuid"` +} + +func init() { + t["VmInstanceUuidConflictEvent"] = reflect.TypeOf((*VmInstanceUuidConflictEvent)(nil)).Elem() +} + +type VmLimitLicense struct { + NotEnoughLicenses + + Limit int32 `xml:"limit"` +} + +func init() { + t["VmLimitLicense"] = reflect.TypeOf((*VmLimitLicense)(nil)).Elem() +} + +type VmLimitLicenseFault VmLimitLicense + +func init() { + t["VmLimitLicenseFault"] = reflect.TypeOf((*VmLimitLicenseFault)(nil)).Elem() +} + +type VmLogFileInfo struct { + FileInfo +} + +func init() { + t["VmLogFileInfo"] = reflect.TypeOf((*VmLogFileInfo)(nil)).Elem() +} + +type VmLogFileQuery struct { + FileQuery +} + +func init() { + t["VmLogFileQuery"] = reflect.TypeOf((*VmLogFileQuery)(nil)).Elem() +} + +type VmMacAssignedEvent struct { + VmEvent + + Adapter string `xml:"adapter"` + Mac string `xml:"mac"` +} + +func init() { + t["VmMacAssignedEvent"] = reflect.TypeOf((*VmMacAssignedEvent)(nil)).Elem() +} + +type VmMacChangedEvent struct { + VmEvent + + Adapter string `xml:"adapter"` + OldMac string `xml:"oldMac"` + NewMac string `xml:"newMac"` +} + +func init() { + t["VmMacChangedEvent"] = reflect.TypeOf((*VmMacChangedEvent)(nil)).Elem() +} + +type VmMacConflictEvent struct { + VmEvent + + ConflictedVm VmEventArgument `xml:"conflictedVm"` + Mac string `xml:"mac"` +} + +func init() { + t["VmMacConflictEvent"] = reflect.TypeOf((*VmMacConflictEvent)(nil)).Elem() +} + +type VmMaxFTRestartCountReached struct { + VmEvent +} + +func init() { + t["VmMaxFTRestartCountReached"] = reflect.TypeOf((*VmMaxFTRestartCountReached)(nil)).Elem() +} + +type VmMaxRestartCountReached struct { + VmEvent +} + +func init() { + t["VmMaxRestartCountReached"] = reflect.TypeOf((*VmMaxRestartCountReached)(nil)).Elem() +} + +type VmMessageErrorEvent struct { + VmEvent + + Message string `xml:"message"` + MessageInfo []VirtualMachineMessage `xml:"messageInfo,omitempty"` +} + +func init() { + t["VmMessageErrorEvent"] = reflect.TypeOf((*VmMessageErrorEvent)(nil)).Elem() +} + +type VmMessageEvent struct { + VmEvent + + Message string `xml:"message"` + MessageInfo []VirtualMachineMessage `xml:"messageInfo,omitempty"` +} + +func init() { + t["VmMessageEvent"] = reflect.TypeOf((*VmMessageEvent)(nil)).Elem() +} + +type VmMessageWarningEvent struct { + VmEvent + + Message string `xml:"message"` + MessageInfo []VirtualMachineMessage `xml:"messageInfo,omitempty"` +} + +func init() { + t["VmMessageWarningEvent"] = reflect.TypeOf((*VmMessageWarningEvent)(nil)).Elem() +} + +type VmMetadataManagerFault struct { + VimFault +} + +func init() { + t["VmMetadataManagerFault"] = reflect.TypeOf((*VmMetadataManagerFault)(nil)).Elem() +} + +type VmMetadataManagerFaultFault VmMetadataManagerFault + +func init() { + t["VmMetadataManagerFaultFault"] = reflect.TypeOf((*VmMetadataManagerFaultFault)(nil)).Elem() +} + +type VmMigratedEvent struct { + VmEvent + + SourceHost HostEventArgument `xml:"sourceHost"` + SourceDatacenter *DatacenterEventArgument `xml:"sourceDatacenter,omitempty"` + SourceDatastore *DatastoreEventArgument `xml:"sourceDatastore,omitempty"` +} + +func init() { + t["VmMigratedEvent"] = reflect.TypeOf((*VmMigratedEvent)(nil)).Elem() +} + +type VmMonitorIncompatibleForFaultTolerance struct { + VimFault +} + +func init() { + t["VmMonitorIncompatibleForFaultTolerance"] = reflect.TypeOf((*VmMonitorIncompatibleForFaultTolerance)(nil)).Elem() +} + +type VmMonitorIncompatibleForFaultToleranceFault VmMonitorIncompatibleForFaultTolerance + +func init() { + t["VmMonitorIncompatibleForFaultToleranceFault"] = reflect.TypeOf((*VmMonitorIncompatibleForFaultToleranceFault)(nil)).Elem() +} + +type VmNoCompatibleHostForSecondaryEvent struct { + VmEvent +} + +func init() { + t["VmNoCompatibleHostForSecondaryEvent"] = reflect.TypeOf((*VmNoCompatibleHostForSecondaryEvent)(nil)).Elem() +} + +type VmNoNetworkAccessEvent struct { + VmEvent + + DestHost HostEventArgument `xml:"destHost"` +} + +func init() { + t["VmNoNetworkAccessEvent"] = reflect.TypeOf((*VmNoNetworkAccessEvent)(nil)).Elem() +} + +type VmNvramFileInfo struct { + FileInfo +} + +func init() { + t["VmNvramFileInfo"] = reflect.TypeOf((*VmNvramFileInfo)(nil)).Elem() +} + +type VmNvramFileQuery struct { + FileQuery +} + +func init() { + t["VmNvramFileQuery"] = reflect.TypeOf((*VmNvramFileQuery)(nil)).Elem() +} + +type VmOrphanedEvent struct { + VmEvent +} + +func init() { + t["VmOrphanedEvent"] = reflect.TypeOf((*VmOrphanedEvent)(nil)).Elem() +} + +type VmPodConfigForPlacement struct { + DynamicData + + StoragePod ManagedObjectReference `xml:"storagePod"` + Disk []PodDiskLocator `xml:"disk,omitempty"` + VmConfig *StorageDrsVmConfigInfo `xml:"vmConfig,omitempty"` + InterVmRule []BaseClusterRuleInfo `xml:"interVmRule,omitempty,typeattr"` +} + +func init() { + t["VmPodConfigForPlacement"] = reflect.TypeOf((*VmPodConfigForPlacement)(nil)).Elem() +} + +type VmPortGroupProfile struct { + PortGroupProfile +} + +func init() { + t["VmPortGroupProfile"] = reflect.TypeOf((*VmPortGroupProfile)(nil)).Elem() +} + +type VmPowerOffOnIsolationEvent struct { + VmPoweredOffEvent + + IsolatedHost HostEventArgument `xml:"isolatedHost"` +} + +func init() { + t["VmPowerOffOnIsolationEvent"] = reflect.TypeOf((*VmPowerOffOnIsolationEvent)(nil)).Elem() +} + +type VmPowerOnDisabled struct { + InvalidState +} + +func init() { + t["VmPowerOnDisabled"] = reflect.TypeOf((*VmPowerOnDisabled)(nil)).Elem() +} + +type VmPowerOnDisabledFault VmPowerOnDisabled + +func init() { + t["VmPowerOnDisabledFault"] = reflect.TypeOf((*VmPowerOnDisabledFault)(nil)).Elem() +} + +type VmPoweredOffEvent struct { + VmEvent +} + +func init() { + t["VmPoweredOffEvent"] = reflect.TypeOf((*VmPoweredOffEvent)(nil)).Elem() +} + +type VmPoweredOnEvent struct { + VmEvent +} + +func init() { + t["VmPoweredOnEvent"] = reflect.TypeOf((*VmPoweredOnEvent)(nil)).Elem() +} + +type VmPoweringOnWithCustomizedDVPortEvent struct { + VmEvent + + Vnic []VnicPortArgument `xml:"vnic"` +} + +func init() { + t["VmPoweringOnWithCustomizedDVPortEvent"] = reflect.TypeOf((*VmPoweringOnWithCustomizedDVPortEvent)(nil)).Elem() +} + +type VmPrimaryFailoverEvent struct { + VmEvent + + Reason string `xml:"reason,omitempty"` +} + +func init() { + t["VmPrimaryFailoverEvent"] = reflect.TypeOf((*VmPrimaryFailoverEvent)(nil)).Elem() +} + +type VmReconfiguredEvent struct { + VmEvent + + ConfigSpec VirtualMachineConfigSpec `xml:"configSpec"` + ConfigChanges *ChangesInfoEventArgument `xml:"configChanges,omitempty"` +} + +func init() { + t["VmReconfiguredEvent"] = reflect.TypeOf((*VmReconfiguredEvent)(nil)).Elem() +} + +type VmRegisteredEvent struct { + VmEvent +} + +func init() { + t["VmRegisteredEvent"] = reflect.TypeOf((*VmRegisteredEvent)(nil)).Elem() +} + +type VmRelayoutSuccessfulEvent struct { + VmEvent +} + +func init() { + t["VmRelayoutSuccessfulEvent"] = reflect.TypeOf((*VmRelayoutSuccessfulEvent)(nil)).Elem() +} + +type VmRelayoutUpToDateEvent struct { + VmEvent +} + +func init() { + t["VmRelayoutUpToDateEvent"] = reflect.TypeOf((*VmRelayoutUpToDateEvent)(nil)).Elem() +} + +type VmReloadFromPathEvent struct { + VmEvent + + ConfigPath string `xml:"configPath"` +} + +func init() { + t["VmReloadFromPathEvent"] = reflect.TypeOf((*VmReloadFromPathEvent)(nil)).Elem() +} + +type VmReloadFromPathFailedEvent struct { + VmEvent + + ConfigPath string `xml:"configPath"` +} + +func init() { + t["VmReloadFromPathFailedEvent"] = reflect.TypeOf((*VmReloadFromPathFailedEvent)(nil)).Elem() +} + +type VmRelocateFailedEvent struct { + VmRelocateSpecEvent + + DestHost HostEventArgument `xml:"destHost"` + Reason LocalizedMethodFault `xml:"reason"` + DestDatacenter *DatacenterEventArgument `xml:"destDatacenter,omitempty"` + DestDatastore *DatastoreEventArgument `xml:"destDatastore,omitempty"` +} + +func init() { + t["VmRelocateFailedEvent"] = reflect.TypeOf((*VmRelocateFailedEvent)(nil)).Elem() +} + +type VmRelocateSpecEvent struct { + VmEvent +} + +func init() { + t["VmRelocateSpecEvent"] = reflect.TypeOf((*VmRelocateSpecEvent)(nil)).Elem() +} + +type VmRelocatedEvent struct { + VmRelocateSpecEvent + + SourceHost HostEventArgument `xml:"sourceHost"` + SourceDatacenter *DatacenterEventArgument `xml:"sourceDatacenter,omitempty"` + SourceDatastore *DatastoreEventArgument `xml:"sourceDatastore,omitempty"` +} + +func init() { + t["VmRelocatedEvent"] = reflect.TypeOf((*VmRelocatedEvent)(nil)).Elem() +} + +type VmRemoteConsoleConnectedEvent struct { + VmEvent +} + +func init() { + t["VmRemoteConsoleConnectedEvent"] = reflect.TypeOf((*VmRemoteConsoleConnectedEvent)(nil)).Elem() +} + +type VmRemoteConsoleDisconnectedEvent struct { + VmEvent +} + +func init() { + t["VmRemoteConsoleDisconnectedEvent"] = reflect.TypeOf((*VmRemoteConsoleDisconnectedEvent)(nil)).Elem() +} + +type VmRemovedEvent struct { + VmEvent +} + +func init() { + t["VmRemovedEvent"] = reflect.TypeOf((*VmRemovedEvent)(nil)).Elem() +} + +type VmRenamedEvent struct { + VmEvent + + OldName string `xml:"oldName"` + NewName string `xml:"newName"` +} + +func init() { + t["VmRenamedEvent"] = reflect.TypeOf((*VmRenamedEvent)(nil)).Elem() +} + +type VmRequirementsExceedCurrentEVCModeEvent struct { + VmEvent +} + +func init() { + t["VmRequirementsExceedCurrentEVCModeEvent"] = reflect.TypeOf((*VmRequirementsExceedCurrentEVCModeEvent)(nil)).Elem() +} + +type VmResettingEvent struct { + VmEvent +} + +func init() { + t["VmResettingEvent"] = reflect.TypeOf((*VmResettingEvent)(nil)).Elem() +} + +type VmResourcePoolMovedEvent struct { + VmEvent + + OldParent ResourcePoolEventArgument `xml:"oldParent"` + NewParent ResourcePoolEventArgument `xml:"newParent"` +} + +func init() { + t["VmResourcePoolMovedEvent"] = reflect.TypeOf((*VmResourcePoolMovedEvent)(nil)).Elem() +} + +type VmResourceReallocatedEvent struct { + VmEvent + + ConfigChanges *ChangesInfoEventArgument `xml:"configChanges,omitempty"` +} + +func init() { + t["VmResourceReallocatedEvent"] = reflect.TypeOf((*VmResourceReallocatedEvent)(nil)).Elem() +} + +type VmRestartedOnAlternateHostEvent struct { + VmPoweredOnEvent + + SourceHost HostEventArgument `xml:"sourceHost"` +} + +func init() { + t["VmRestartedOnAlternateHostEvent"] = reflect.TypeOf((*VmRestartedOnAlternateHostEvent)(nil)).Elem() +} + +type VmResumingEvent struct { + VmEvent +} + +func init() { + t["VmResumingEvent"] = reflect.TypeOf((*VmResumingEvent)(nil)).Elem() +} + +type VmSecondaryAddedEvent struct { + VmEvent +} + +func init() { + t["VmSecondaryAddedEvent"] = reflect.TypeOf((*VmSecondaryAddedEvent)(nil)).Elem() +} + +type VmSecondaryDisabledBySystemEvent struct { + VmEvent + + Reason *LocalizedMethodFault `xml:"reason,omitempty"` +} + +func init() { + t["VmSecondaryDisabledBySystemEvent"] = reflect.TypeOf((*VmSecondaryDisabledBySystemEvent)(nil)).Elem() +} + +type VmSecondaryDisabledEvent struct { + VmEvent +} + +func init() { + t["VmSecondaryDisabledEvent"] = reflect.TypeOf((*VmSecondaryDisabledEvent)(nil)).Elem() +} + +type VmSecondaryEnabledEvent struct { + VmEvent +} + +func init() { + t["VmSecondaryEnabledEvent"] = reflect.TypeOf((*VmSecondaryEnabledEvent)(nil)).Elem() +} + +type VmSecondaryStartedEvent struct { + VmEvent +} + +func init() { + t["VmSecondaryStartedEvent"] = reflect.TypeOf((*VmSecondaryStartedEvent)(nil)).Elem() +} + +type VmShutdownOnIsolationEvent struct { + VmPoweredOffEvent + + IsolatedHost HostEventArgument `xml:"isolatedHost"` + ShutdownResult string `xml:"shutdownResult,omitempty"` +} + +func init() { + t["VmShutdownOnIsolationEvent"] = reflect.TypeOf((*VmShutdownOnIsolationEvent)(nil)).Elem() +} + +type VmSmpFaultToleranceTooManyVMsOnHost struct { + InsufficientResourcesFault + + HostName string `xml:"hostName,omitempty"` + MaxNumSmpFtVms int32 `xml:"maxNumSmpFtVms"` +} + +func init() { + t["VmSmpFaultToleranceTooManyVMsOnHost"] = reflect.TypeOf((*VmSmpFaultToleranceTooManyVMsOnHost)(nil)).Elem() +} + +type VmSmpFaultToleranceTooManyVMsOnHostFault VmSmpFaultToleranceTooManyVMsOnHost + +func init() { + t["VmSmpFaultToleranceTooManyVMsOnHostFault"] = reflect.TypeOf((*VmSmpFaultToleranceTooManyVMsOnHostFault)(nil)).Elem() +} + +type VmSnapshotFileInfo struct { + FileInfo +} + +func init() { + t["VmSnapshotFileInfo"] = reflect.TypeOf((*VmSnapshotFileInfo)(nil)).Elem() +} + +type VmSnapshotFileQuery struct { + FileQuery +} + +func init() { + t["VmSnapshotFileQuery"] = reflect.TypeOf((*VmSnapshotFileQuery)(nil)).Elem() +} + +type VmStartRecordingEvent struct { + VmEvent +} + +func init() { + t["VmStartRecordingEvent"] = reflect.TypeOf((*VmStartRecordingEvent)(nil)).Elem() +} + +type VmStartReplayingEvent struct { + VmEvent +} + +func init() { + t["VmStartReplayingEvent"] = reflect.TypeOf((*VmStartReplayingEvent)(nil)).Elem() +} + +type VmStartingEvent struct { + VmEvent +} + +func init() { + t["VmStartingEvent"] = reflect.TypeOf((*VmStartingEvent)(nil)).Elem() +} + +type VmStartingSecondaryEvent struct { + VmEvent +} + +func init() { + t["VmStartingSecondaryEvent"] = reflect.TypeOf((*VmStartingSecondaryEvent)(nil)).Elem() +} + +type VmStaticMacConflictEvent struct { + VmEvent + + ConflictedVm VmEventArgument `xml:"conflictedVm"` + Mac string `xml:"mac"` +} + +func init() { + t["VmStaticMacConflictEvent"] = reflect.TypeOf((*VmStaticMacConflictEvent)(nil)).Elem() +} + +type VmStoppingEvent struct { + VmEvent +} + +func init() { + t["VmStoppingEvent"] = reflect.TypeOf((*VmStoppingEvent)(nil)).Elem() +} + +type VmSuspendedEvent struct { + VmEvent +} + +func init() { + t["VmSuspendedEvent"] = reflect.TypeOf((*VmSuspendedEvent)(nil)).Elem() +} + +type VmSuspendingEvent struct { + VmEvent +} + +func init() { + t["VmSuspendingEvent"] = reflect.TypeOf((*VmSuspendingEvent)(nil)).Elem() +} + +type VmTimedoutStartingSecondaryEvent struct { + VmEvent + + Timeout int64 `xml:"timeout,omitempty"` +} + +func init() { + t["VmTimedoutStartingSecondaryEvent"] = reflect.TypeOf((*VmTimedoutStartingSecondaryEvent)(nil)).Elem() +} + +type VmToolsUpgradeFault struct { + VimFault +} + +func init() { + t["VmToolsUpgradeFault"] = reflect.TypeOf((*VmToolsUpgradeFault)(nil)).Elem() +} + +type VmToolsUpgradeFaultFault BaseVmToolsUpgradeFault + +func init() { + t["VmToolsUpgradeFaultFault"] = reflect.TypeOf((*VmToolsUpgradeFaultFault)(nil)).Elem() +} + +type VmUnsupportedStartingEvent struct { + VmStartingEvent + + GuestId string `xml:"guestId"` +} + +func init() { + t["VmUnsupportedStartingEvent"] = reflect.TypeOf((*VmUnsupportedStartingEvent)(nil)).Elem() +} + +type VmUpgradeCompleteEvent struct { + VmEvent + + Version string `xml:"version"` +} + +func init() { + t["VmUpgradeCompleteEvent"] = reflect.TypeOf((*VmUpgradeCompleteEvent)(nil)).Elem() +} + +type VmUpgradeFailedEvent struct { + VmEvent +} + +func init() { + t["VmUpgradeFailedEvent"] = reflect.TypeOf((*VmUpgradeFailedEvent)(nil)).Elem() +} + +type VmUpgradingEvent struct { + VmEvent + + Version string `xml:"version"` +} + +func init() { + t["VmUpgradingEvent"] = reflect.TypeOf((*VmUpgradingEvent)(nil)).Elem() +} + +type VmUuidAssignedEvent struct { + VmEvent + + Uuid string `xml:"uuid"` +} + +func init() { + t["VmUuidAssignedEvent"] = reflect.TypeOf((*VmUuidAssignedEvent)(nil)).Elem() +} + +type VmUuidChangedEvent struct { + VmEvent + + OldUuid string `xml:"oldUuid"` + NewUuid string `xml:"newUuid"` +} + +func init() { + t["VmUuidChangedEvent"] = reflect.TypeOf((*VmUuidChangedEvent)(nil)).Elem() +} + +type VmUuidConflictEvent struct { + VmEvent + + ConflictedVm VmEventArgument `xml:"conflictedVm"` + Uuid string `xml:"uuid"` +} + +func init() { + t["VmUuidConflictEvent"] = reflect.TypeOf((*VmUuidConflictEvent)(nil)).Elem() +} + +type VmValidateMaxDevice struct { + VimFault + + Device string `xml:"device"` + Max int32 `xml:"max"` + Count int32 `xml:"count"` +} + +func init() { + t["VmValidateMaxDevice"] = reflect.TypeOf((*VmValidateMaxDevice)(nil)).Elem() +} + +type VmValidateMaxDeviceFault VmValidateMaxDevice + +func init() { + t["VmValidateMaxDeviceFault"] = reflect.TypeOf((*VmValidateMaxDeviceFault)(nil)).Elem() +} + +type VmVnicPoolReservationViolationClearEvent struct { + DvsEvent + + VmVnicResourcePoolKey string `xml:"vmVnicResourcePoolKey"` + VmVnicResourcePoolName string `xml:"vmVnicResourcePoolName,omitempty"` +} + +func init() { + t["VmVnicPoolReservationViolationClearEvent"] = reflect.TypeOf((*VmVnicPoolReservationViolationClearEvent)(nil)).Elem() +} + +type VmVnicPoolReservationViolationRaiseEvent struct { + DvsEvent + + VmVnicResourcePoolKey string `xml:"vmVnicResourcePoolKey"` + VmVnicResourcePoolName string `xml:"vmVnicResourcePoolName,omitempty"` +} + +func init() { + t["VmVnicPoolReservationViolationRaiseEvent"] = reflect.TypeOf((*VmVnicPoolReservationViolationRaiseEvent)(nil)).Elem() +} + +type VmWwnAssignedEvent struct { + VmEvent + + NodeWwns []int64 `xml:"nodeWwns"` + PortWwns []int64 `xml:"portWwns"` +} + +func init() { + t["VmWwnAssignedEvent"] = reflect.TypeOf((*VmWwnAssignedEvent)(nil)).Elem() +} + +type VmWwnChangedEvent struct { + VmEvent + + OldNodeWwns []int64 `xml:"oldNodeWwns,omitempty"` + OldPortWwns []int64 `xml:"oldPortWwns,omitempty"` + NewNodeWwns []int64 `xml:"newNodeWwns,omitempty"` + NewPortWwns []int64 `xml:"newPortWwns,omitempty"` +} + +func init() { + t["VmWwnChangedEvent"] = reflect.TypeOf((*VmWwnChangedEvent)(nil)).Elem() +} + +type VmWwnConflict struct { + InvalidVmConfig + + Vm *ManagedObjectReference `xml:"vm,omitempty"` + Host *ManagedObjectReference `xml:"host,omitempty"` + Name string `xml:"name,omitempty"` + Wwn int64 `xml:"wwn,omitempty"` +} + +func init() { + t["VmWwnConflict"] = reflect.TypeOf((*VmWwnConflict)(nil)).Elem() +} + +type VmWwnConflictEvent struct { + VmEvent + + ConflictedVms []VmEventArgument `xml:"conflictedVms,omitempty"` + ConflictedHosts []HostEventArgument `xml:"conflictedHosts,omitempty"` + Wwn int64 `xml:"wwn"` +} + +func init() { + t["VmWwnConflictEvent"] = reflect.TypeOf((*VmWwnConflictEvent)(nil)).Elem() +} + +type VmWwnConflictFault VmWwnConflict + +func init() { + t["VmWwnConflictFault"] = reflect.TypeOf((*VmWwnConflictFault)(nil)).Elem() +} + +type VmfsAlreadyMounted struct { + VmfsMountFault +} + +func init() { + t["VmfsAlreadyMounted"] = reflect.TypeOf((*VmfsAlreadyMounted)(nil)).Elem() +} + +type VmfsAlreadyMountedFault VmfsAlreadyMounted + +func init() { + t["VmfsAlreadyMountedFault"] = reflect.TypeOf((*VmfsAlreadyMountedFault)(nil)).Elem() +} + +type VmfsAmbiguousMount struct { + VmfsMountFault +} + +func init() { + t["VmfsAmbiguousMount"] = reflect.TypeOf((*VmfsAmbiguousMount)(nil)).Elem() +} + +type VmfsAmbiguousMountFault VmfsAmbiguousMount + +func init() { + t["VmfsAmbiguousMountFault"] = reflect.TypeOf((*VmfsAmbiguousMountFault)(nil)).Elem() +} + +type VmfsConfigOption struct { + DynamicData + + BlockSizeOption int32 `xml:"blockSizeOption"` + UnmapGranularityOption []int32 `xml:"unmapGranularityOption,omitempty"` + UnmapBandwidthFixedValue *LongOption `xml:"unmapBandwidthFixedValue,omitempty"` + UnmapBandwidthDynamicMin *LongOption `xml:"unmapBandwidthDynamicMin,omitempty"` + UnmapBandwidthDynamicMax *LongOption `xml:"unmapBandwidthDynamicMax,omitempty"` + UnmapBandwidthIncrement int64 `xml:"unmapBandwidthIncrement,omitempty"` +} + +func init() { + t["VmfsConfigOption"] = reflect.TypeOf((*VmfsConfigOption)(nil)).Elem() +} + +type VmfsDatastoreAllExtentOption struct { + VmfsDatastoreSingleExtentOption +} + +func init() { + t["VmfsDatastoreAllExtentOption"] = reflect.TypeOf((*VmfsDatastoreAllExtentOption)(nil)).Elem() +} + +type VmfsDatastoreBaseOption struct { + DynamicData + + Layout HostDiskPartitionLayout `xml:"layout"` + PartitionFormatChange *bool `xml:"partitionFormatChange"` +} + +func init() { + t["VmfsDatastoreBaseOption"] = reflect.TypeOf((*VmfsDatastoreBaseOption)(nil)).Elem() +} + +type VmfsDatastoreCreateSpec struct { + VmfsDatastoreSpec + + Partition HostDiskPartitionSpec `xml:"partition"` + Vmfs HostVmfsSpec `xml:"vmfs"` + Extent []HostScsiDiskPartition `xml:"extent,omitempty"` +} + +func init() { + t["VmfsDatastoreCreateSpec"] = reflect.TypeOf((*VmfsDatastoreCreateSpec)(nil)).Elem() +} + +type VmfsDatastoreExpandSpec struct { + VmfsDatastoreSpec + + Partition HostDiskPartitionSpec `xml:"partition"` + Extent HostScsiDiskPartition `xml:"extent"` +} + +func init() { + t["VmfsDatastoreExpandSpec"] = reflect.TypeOf((*VmfsDatastoreExpandSpec)(nil)).Elem() +} + +type VmfsDatastoreExtendSpec struct { + VmfsDatastoreSpec + + Partition HostDiskPartitionSpec `xml:"partition"` + Extent []HostScsiDiskPartition `xml:"extent"` +} + +func init() { + t["VmfsDatastoreExtendSpec"] = reflect.TypeOf((*VmfsDatastoreExtendSpec)(nil)).Elem() +} + +type VmfsDatastoreInfo struct { + DatastoreInfo + + MaxPhysicalRDMFileSize int64 `xml:"maxPhysicalRDMFileSize,omitempty"` + MaxVirtualRDMFileSize int64 `xml:"maxVirtualRDMFileSize,omitempty"` + Vmfs *HostVmfsVolume `xml:"vmfs,omitempty"` +} + +func init() { + t["VmfsDatastoreInfo"] = reflect.TypeOf((*VmfsDatastoreInfo)(nil)).Elem() +} + +type VmfsDatastoreMultipleExtentOption struct { + VmfsDatastoreBaseOption + + VmfsExtent []HostDiskPartitionBlockRange `xml:"vmfsExtent"` +} + +func init() { + t["VmfsDatastoreMultipleExtentOption"] = reflect.TypeOf((*VmfsDatastoreMultipleExtentOption)(nil)).Elem() +} + +type VmfsDatastoreOption struct { + DynamicData + + Info BaseVmfsDatastoreBaseOption `xml:"info,typeattr"` + Spec BaseVmfsDatastoreSpec `xml:"spec,typeattr"` +} + +func init() { + t["VmfsDatastoreOption"] = reflect.TypeOf((*VmfsDatastoreOption)(nil)).Elem() +} + +type VmfsDatastoreSingleExtentOption struct { + VmfsDatastoreBaseOption + + VmfsExtent HostDiskPartitionBlockRange `xml:"vmfsExtent"` +} + +func init() { + t["VmfsDatastoreSingleExtentOption"] = reflect.TypeOf((*VmfsDatastoreSingleExtentOption)(nil)).Elem() +} + +type VmfsDatastoreSpec struct { + DynamicData + + DiskUuid string `xml:"diskUuid"` +} + +func init() { + t["VmfsDatastoreSpec"] = reflect.TypeOf((*VmfsDatastoreSpec)(nil)).Elem() +} + +type VmfsMountFault struct { + HostConfigFault + + Uuid string `xml:"uuid"` +} + +func init() { + t["VmfsMountFault"] = reflect.TypeOf((*VmfsMountFault)(nil)).Elem() +} + +type VmfsMountFaultFault BaseVmfsMountFault + +func init() { + t["VmfsMountFaultFault"] = reflect.TypeOf((*VmfsMountFaultFault)(nil)).Elem() +} + +type VmfsUnmapBandwidthSpec struct { + DynamicData + + Policy string `xml:"policy"` + FixedValue int64 `xml:"fixedValue"` + DynamicMin int64 `xml:"dynamicMin"` + DynamicMax int64 `xml:"dynamicMax"` +} + +func init() { + t["VmfsUnmapBandwidthSpec"] = reflect.TypeOf((*VmfsUnmapBandwidthSpec)(nil)).Elem() +} + +type VmotionInterfaceNotEnabled struct { + HostPowerOpFailed +} + +func init() { + t["VmotionInterfaceNotEnabled"] = reflect.TypeOf((*VmotionInterfaceNotEnabled)(nil)).Elem() +} + +type VmotionInterfaceNotEnabledFault VmotionInterfaceNotEnabled + +func init() { + t["VmotionInterfaceNotEnabledFault"] = reflect.TypeOf((*VmotionInterfaceNotEnabledFault)(nil)).Elem() +} + +type VmwareDistributedVirtualSwitchPvlanSpec struct { + VmwareDistributedVirtualSwitchVlanSpec + + PvlanId int32 `xml:"pvlanId"` +} + +func init() { + t["VmwareDistributedVirtualSwitchPvlanSpec"] = reflect.TypeOf((*VmwareDistributedVirtualSwitchPvlanSpec)(nil)).Elem() +} + +type VmwareDistributedVirtualSwitchTrunkVlanSpec struct { + VmwareDistributedVirtualSwitchVlanSpec + + VlanId []NumericRange `xml:"vlanId,omitempty"` +} + +func init() { + t["VmwareDistributedVirtualSwitchTrunkVlanSpec"] = reflect.TypeOf((*VmwareDistributedVirtualSwitchTrunkVlanSpec)(nil)).Elem() +} + +type VmwareDistributedVirtualSwitchVlanIdSpec struct { + VmwareDistributedVirtualSwitchVlanSpec + + VlanId int32 `xml:"vlanId"` +} + +func init() { + t["VmwareDistributedVirtualSwitchVlanIdSpec"] = reflect.TypeOf((*VmwareDistributedVirtualSwitchVlanIdSpec)(nil)).Elem() +} + +type VmwareDistributedVirtualSwitchVlanSpec struct { + InheritablePolicy +} + +func init() { + t["VmwareDistributedVirtualSwitchVlanSpec"] = reflect.TypeOf((*VmwareDistributedVirtualSwitchVlanSpec)(nil)).Elem() +} + +type VmwareUplinkPortTeamingPolicy struct { + InheritablePolicy + + Policy *StringPolicy `xml:"policy,omitempty"` + ReversePolicy *BoolPolicy `xml:"reversePolicy,omitempty"` + NotifySwitches *BoolPolicy `xml:"notifySwitches,omitempty"` + RollingOrder *BoolPolicy `xml:"rollingOrder,omitempty"` + FailureCriteria *DVSFailureCriteria `xml:"failureCriteria,omitempty"` + UplinkPortOrder *VMwareUplinkPortOrderPolicy `xml:"uplinkPortOrder,omitempty"` +} + +func init() { + t["VmwareUplinkPortTeamingPolicy"] = reflect.TypeOf((*VmwareUplinkPortTeamingPolicy)(nil)).Elem() +} + +type VnicPortArgument struct { + DynamicData + + Vnic string `xml:"vnic"` + Port DistributedVirtualSwitchPortConnection `xml:"port"` +} + +func init() { + t["VnicPortArgument"] = reflect.TypeOf((*VnicPortArgument)(nil)).Elem() +} + +type VolumeEditorError struct { + CustomizationFault +} + +func init() { + t["VolumeEditorError"] = reflect.TypeOf((*VolumeEditorError)(nil)).Elem() +} + +type VolumeEditorErrorFault VolumeEditorError + +func init() { + t["VolumeEditorErrorFault"] = reflect.TypeOf((*VolumeEditorErrorFault)(nil)).Elem() +} + +type VramLimitLicense struct { + NotEnoughLicenses + + Limit int32 `xml:"limit"` +} + +func init() { + t["VramLimitLicense"] = reflect.TypeOf((*VramLimitLicense)(nil)).Elem() +} + +type VramLimitLicenseFault VramLimitLicense + +func init() { + t["VramLimitLicenseFault"] = reflect.TypeOf((*VramLimitLicenseFault)(nil)).Elem() +} + +type VsanClusterConfigInfo struct { + DynamicData + + Enabled *bool `xml:"enabled"` + DefaultConfig *VsanClusterConfigInfoHostDefaultInfo `xml:"defaultConfig,omitempty"` +} + +func init() { + t["VsanClusterConfigInfo"] = reflect.TypeOf((*VsanClusterConfigInfo)(nil)).Elem() +} + +type VsanClusterConfigInfoHostDefaultInfo struct { + DynamicData + + Uuid string `xml:"uuid,omitempty"` + AutoClaimStorage *bool `xml:"autoClaimStorage"` + ChecksumEnabled *bool `xml:"checksumEnabled"` +} + +func init() { + t["VsanClusterConfigInfoHostDefaultInfo"] = reflect.TypeOf((*VsanClusterConfigInfoHostDefaultInfo)(nil)).Elem() +} + +type VsanClusterUuidMismatch struct { + CannotMoveVsanEnabledHost + + HostClusterUuid string `xml:"hostClusterUuid"` + DestinationClusterUuid string `xml:"destinationClusterUuid"` +} + +func init() { + t["VsanClusterUuidMismatch"] = reflect.TypeOf((*VsanClusterUuidMismatch)(nil)).Elem() +} + +type VsanClusterUuidMismatchFault VsanClusterUuidMismatch + +func init() { + t["VsanClusterUuidMismatchFault"] = reflect.TypeOf((*VsanClusterUuidMismatchFault)(nil)).Elem() +} + +type VsanDiskFault struct { + VsanFault + + Device string `xml:"device,omitempty"` +} + +func init() { + t["VsanDiskFault"] = reflect.TypeOf((*VsanDiskFault)(nil)).Elem() +} + +type VsanDiskFaultFault BaseVsanDiskFault + +func init() { + t["VsanDiskFaultFault"] = reflect.TypeOf((*VsanDiskFaultFault)(nil)).Elem() +} + +type VsanFault struct { + VimFault +} + +func init() { + t["VsanFault"] = reflect.TypeOf((*VsanFault)(nil)).Elem() +} + +type VsanFaultFault BaseVsanFault + +func init() { + t["VsanFaultFault"] = reflect.TypeOf((*VsanFaultFault)(nil)).Elem() +} + +type VsanHostClusterStatus struct { + DynamicData + + Uuid string `xml:"uuid,omitempty"` + NodeUuid string `xml:"nodeUuid,omitempty"` + Health string `xml:"health"` + NodeState VsanHostClusterStatusState `xml:"nodeState"` + MemberUuid []string `xml:"memberUuid,omitempty"` +} + +func init() { + t["VsanHostClusterStatus"] = reflect.TypeOf((*VsanHostClusterStatus)(nil)).Elem() +} + +type VsanHostClusterStatusState struct { + DynamicData + + State string `xml:"state"` + Completion *VsanHostClusterStatusStateCompletionEstimate `xml:"completion,omitempty"` +} + +func init() { + t["VsanHostClusterStatusState"] = reflect.TypeOf((*VsanHostClusterStatusState)(nil)).Elem() +} + +type VsanHostClusterStatusStateCompletionEstimate struct { + DynamicData + + CompleteTime *time.Time `xml:"completeTime"` + PercentComplete int32 `xml:"percentComplete,omitempty"` +} + +func init() { + t["VsanHostClusterStatusStateCompletionEstimate"] = reflect.TypeOf((*VsanHostClusterStatusStateCompletionEstimate)(nil)).Elem() +} + +type VsanHostConfigInfo struct { + DynamicData + + Enabled *bool `xml:"enabled"` + HostSystem *ManagedObjectReference `xml:"hostSystem,omitempty"` + ClusterInfo *VsanHostConfigInfoClusterInfo `xml:"clusterInfo,omitempty"` + StorageInfo *VsanHostConfigInfoStorageInfo `xml:"storageInfo,omitempty"` + NetworkInfo *VsanHostConfigInfoNetworkInfo `xml:"networkInfo,omitempty"` + FaultDomainInfo *VsanHostFaultDomainInfo `xml:"faultDomainInfo,omitempty"` +} + +func init() { + t["VsanHostConfigInfo"] = reflect.TypeOf((*VsanHostConfigInfo)(nil)).Elem() +} + +type VsanHostConfigInfoClusterInfo struct { + DynamicData + + Uuid string `xml:"uuid,omitempty"` + NodeUuid string `xml:"nodeUuid,omitempty"` +} + +func init() { + t["VsanHostConfigInfoClusterInfo"] = reflect.TypeOf((*VsanHostConfigInfoClusterInfo)(nil)).Elem() +} + +type VsanHostConfigInfoNetworkInfo struct { + DynamicData + + Port []VsanHostConfigInfoNetworkInfoPortConfig `xml:"port,omitempty"` +} + +func init() { + t["VsanHostConfigInfoNetworkInfo"] = reflect.TypeOf((*VsanHostConfigInfoNetworkInfo)(nil)).Elem() +} + +type VsanHostConfigInfoNetworkInfoPortConfig struct { + DynamicData + + IpConfig *VsanHostIpConfig `xml:"ipConfig,omitempty"` + Device string `xml:"device"` +} + +func init() { + t["VsanHostConfigInfoNetworkInfoPortConfig"] = reflect.TypeOf((*VsanHostConfigInfoNetworkInfoPortConfig)(nil)).Elem() +} + +type VsanHostConfigInfoStorageInfo struct { + DynamicData + + AutoClaimStorage *bool `xml:"autoClaimStorage"` + DiskMapping []VsanHostDiskMapping `xml:"diskMapping,omitempty"` + DiskMapInfo []VsanHostDiskMapInfo `xml:"diskMapInfo,omitempty"` + ChecksumEnabled *bool `xml:"checksumEnabled"` +} + +func init() { + t["VsanHostConfigInfoStorageInfo"] = reflect.TypeOf((*VsanHostConfigInfoStorageInfo)(nil)).Elem() +} + +type VsanHostDecommissionMode struct { + DynamicData + + ObjectAction string `xml:"objectAction"` +} + +func init() { + t["VsanHostDecommissionMode"] = reflect.TypeOf((*VsanHostDecommissionMode)(nil)).Elem() +} + +type VsanHostDiskMapInfo struct { + DynamicData + + Mapping VsanHostDiskMapping `xml:"mapping"` + Mounted bool `xml:"mounted"` +} + +func init() { + t["VsanHostDiskMapInfo"] = reflect.TypeOf((*VsanHostDiskMapInfo)(nil)).Elem() +} + +type VsanHostDiskMapResult struct { + DynamicData + + Mapping VsanHostDiskMapping `xml:"mapping"` + DiskResult []VsanHostDiskResult `xml:"diskResult,omitempty"` + Error *LocalizedMethodFault `xml:"error,omitempty"` +} + +func init() { + t["VsanHostDiskMapResult"] = reflect.TypeOf((*VsanHostDiskMapResult)(nil)).Elem() +} + +type VsanHostDiskMapping struct { + DynamicData + + Ssd HostScsiDisk `xml:"ssd"` + NonSsd []HostScsiDisk `xml:"nonSsd"` +} + +func init() { + t["VsanHostDiskMapping"] = reflect.TypeOf((*VsanHostDiskMapping)(nil)).Elem() +} + +type VsanHostDiskResult struct { + DynamicData + + Disk HostScsiDisk `xml:"disk"` + State string `xml:"state"` + VsanUuid string `xml:"vsanUuid,omitempty"` + Error *LocalizedMethodFault `xml:"error,omitempty"` + Degraded *bool `xml:"degraded"` +} + +func init() { + t["VsanHostDiskResult"] = reflect.TypeOf((*VsanHostDiskResult)(nil)).Elem() +} + +type VsanHostFaultDomainInfo struct { + DynamicData + + Name string `xml:"name"` +} + +func init() { + t["VsanHostFaultDomainInfo"] = reflect.TypeOf((*VsanHostFaultDomainInfo)(nil)).Elem() +} + +type VsanHostIpConfig struct { + DynamicData + + UpstreamIpAddress string `xml:"upstreamIpAddress"` + DownstreamIpAddress string `xml:"downstreamIpAddress"` +} + +func init() { + t["VsanHostIpConfig"] = reflect.TypeOf((*VsanHostIpConfig)(nil)).Elem() +} + +type VsanHostMembershipInfo struct { + DynamicData + + NodeUuid string `xml:"nodeUuid"` + Hostname string `xml:"hostname"` +} + +func init() { + t["VsanHostMembershipInfo"] = reflect.TypeOf((*VsanHostMembershipInfo)(nil)).Elem() +} + +type VsanHostRuntimeInfo struct { + DynamicData + + MembershipList []VsanHostMembershipInfo `xml:"membershipList,omitempty"` + DiskIssues []VsanHostRuntimeInfoDiskIssue `xml:"diskIssues,omitempty"` + AccessGenNo int32 `xml:"accessGenNo,omitempty"` +} + +func init() { + t["VsanHostRuntimeInfo"] = reflect.TypeOf((*VsanHostRuntimeInfo)(nil)).Elem() +} + +type VsanHostRuntimeInfoDiskIssue struct { + DynamicData + + DiskId string `xml:"diskId"` + Issue string `xml:"issue"` +} + +func init() { + t["VsanHostRuntimeInfoDiskIssue"] = reflect.TypeOf((*VsanHostRuntimeInfoDiskIssue)(nil)).Elem() +} + +type VsanHostVsanDiskInfo struct { + DynamicData + + VsanUuid string `xml:"vsanUuid"` + FormatVersion int32 `xml:"formatVersion"` +} + +func init() { + t["VsanHostVsanDiskInfo"] = reflect.TypeOf((*VsanHostVsanDiskInfo)(nil)).Elem() +} + +type VsanIncompatibleDiskMapping struct { + VsanDiskFault +} + +func init() { + t["VsanIncompatibleDiskMapping"] = reflect.TypeOf((*VsanIncompatibleDiskMapping)(nil)).Elem() +} + +type VsanIncompatibleDiskMappingFault VsanIncompatibleDiskMapping + +func init() { + t["VsanIncompatibleDiskMappingFault"] = reflect.TypeOf((*VsanIncompatibleDiskMappingFault)(nil)).Elem() +} + +type VsanNewPolicyBatch struct { + DynamicData + + Size []int64 `xml:"size,omitempty"` + Policy string `xml:"policy,omitempty"` +} + +func init() { + t["VsanNewPolicyBatch"] = reflect.TypeOf((*VsanNewPolicyBatch)(nil)).Elem() +} + +type VsanPolicyChangeBatch struct { + DynamicData + + Uuid []string `xml:"uuid,omitempty"` + Policy string `xml:"policy,omitempty"` +} + +func init() { + t["VsanPolicyChangeBatch"] = reflect.TypeOf((*VsanPolicyChangeBatch)(nil)).Elem() +} + +type VsanPolicyCost struct { + DynamicData + + ChangeDataSize int64 `xml:"changeDataSize,omitempty"` + CurrentDataSize int64 `xml:"currentDataSize,omitempty"` + TempDataSize int64 `xml:"tempDataSize,omitempty"` + CopyDataSize int64 `xml:"copyDataSize,omitempty"` + ChangeFlashReadCacheSize int64 `xml:"changeFlashReadCacheSize,omitempty"` + CurrentFlashReadCacheSize int64 `xml:"currentFlashReadCacheSize,omitempty"` + CurrentDiskSpaceToAddressSpaceRatio float32 `xml:"currentDiskSpaceToAddressSpaceRatio,omitempty"` + DiskSpaceToAddressSpaceRatio float32 `xml:"diskSpaceToAddressSpaceRatio,omitempty"` +} + +func init() { + t["VsanPolicyCost"] = reflect.TypeOf((*VsanPolicyCost)(nil)).Elem() +} + +type VsanPolicySatisfiability struct { + DynamicData + + Uuid string `xml:"uuid,omitempty"` + IsSatisfiable bool `xml:"isSatisfiable"` + Reason *LocalizableMessage `xml:"reason,omitempty"` + Cost *VsanPolicyCost `xml:"cost,omitempty"` +} + +func init() { + t["VsanPolicySatisfiability"] = reflect.TypeOf((*VsanPolicySatisfiability)(nil)).Elem() +} + +type VsanUpgradeSystemAPIBrokenIssue struct { + VsanUpgradeSystemPreflightCheckIssue + + Hosts []ManagedObjectReference `xml:"hosts"` +} + +func init() { + t["VsanUpgradeSystemAPIBrokenIssue"] = reflect.TypeOf((*VsanUpgradeSystemAPIBrokenIssue)(nil)).Elem() +} + +type VsanUpgradeSystemAutoClaimEnabledOnHostsIssue struct { + VsanUpgradeSystemPreflightCheckIssue + + Hosts []ManagedObjectReference `xml:"hosts"` +} + +func init() { + t["VsanUpgradeSystemAutoClaimEnabledOnHostsIssue"] = reflect.TypeOf((*VsanUpgradeSystemAutoClaimEnabledOnHostsIssue)(nil)).Elem() +} + +type VsanUpgradeSystemHostsDisconnectedIssue struct { + VsanUpgradeSystemPreflightCheckIssue + + Hosts []ManagedObjectReference `xml:"hosts"` +} + +func init() { + t["VsanUpgradeSystemHostsDisconnectedIssue"] = reflect.TypeOf((*VsanUpgradeSystemHostsDisconnectedIssue)(nil)).Elem() +} + +type VsanUpgradeSystemMissingHostsInClusterIssue struct { + VsanUpgradeSystemPreflightCheckIssue + + Hosts []ManagedObjectReference `xml:"hosts"` +} + +func init() { + t["VsanUpgradeSystemMissingHostsInClusterIssue"] = reflect.TypeOf((*VsanUpgradeSystemMissingHostsInClusterIssue)(nil)).Elem() +} + +type VsanUpgradeSystemNetworkPartitionInfo struct { + DynamicData + + Hosts []ManagedObjectReference `xml:"hosts"` +} + +func init() { + t["VsanUpgradeSystemNetworkPartitionInfo"] = reflect.TypeOf((*VsanUpgradeSystemNetworkPartitionInfo)(nil)).Elem() +} + +type VsanUpgradeSystemNetworkPartitionIssue struct { + VsanUpgradeSystemPreflightCheckIssue + + Partitions []VsanUpgradeSystemNetworkPartitionInfo `xml:"partitions"` +} + +func init() { + t["VsanUpgradeSystemNetworkPartitionIssue"] = reflect.TypeOf((*VsanUpgradeSystemNetworkPartitionIssue)(nil)).Elem() +} + +type VsanUpgradeSystemNotEnoughFreeCapacityIssue struct { + VsanUpgradeSystemPreflightCheckIssue + + ReducedRedundancyUpgradePossible bool `xml:"reducedRedundancyUpgradePossible"` +} + +func init() { + t["VsanUpgradeSystemNotEnoughFreeCapacityIssue"] = reflect.TypeOf((*VsanUpgradeSystemNotEnoughFreeCapacityIssue)(nil)).Elem() +} + +type VsanUpgradeSystemPreflightCheckIssue struct { + DynamicData + + Msg string `xml:"msg"` +} + +func init() { + t["VsanUpgradeSystemPreflightCheckIssue"] = reflect.TypeOf((*VsanUpgradeSystemPreflightCheckIssue)(nil)).Elem() +} + +type VsanUpgradeSystemPreflightCheckResult struct { + DynamicData + + Issues []BaseVsanUpgradeSystemPreflightCheckIssue `xml:"issues,omitempty,typeattr"` + DiskMappingToRestore *VsanHostDiskMapping `xml:"diskMappingToRestore,omitempty"` +} + +func init() { + t["VsanUpgradeSystemPreflightCheckResult"] = reflect.TypeOf((*VsanUpgradeSystemPreflightCheckResult)(nil)).Elem() +} + +type VsanUpgradeSystemRogueHostsInClusterIssue struct { + VsanUpgradeSystemPreflightCheckIssue + + Uuids []string `xml:"uuids"` +} + +func init() { + t["VsanUpgradeSystemRogueHostsInClusterIssue"] = reflect.TypeOf((*VsanUpgradeSystemRogueHostsInClusterIssue)(nil)).Elem() +} + +type VsanUpgradeSystemUpgradeHistoryDiskGroupOp struct { + VsanUpgradeSystemUpgradeHistoryItem + + Operation string `xml:"operation"` + DiskMapping VsanHostDiskMapping `xml:"diskMapping"` +} + +func init() { + t["VsanUpgradeSystemUpgradeHistoryDiskGroupOp"] = reflect.TypeOf((*VsanUpgradeSystemUpgradeHistoryDiskGroupOp)(nil)).Elem() +} + +type VsanUpgradeSystemUpgradeHistoryItem struct { + DynamicData + + Timestamp time.Time `xml:"timestamp"` + Host *ManagedObjectReference `xml:"host,omitempty"` + Message string `xml:"message"` + Task *ManagedObjectReference `xml:"task,omitempty"` +} + +func init() { + t["VsanUpgradeSystemUpgradeHistoryItem"] = reflect.TypeOf((*VsanUpgradeSystemUpgradeHistoryItem)(nil)).Elem() +} + +type VsanUpgradeSystemUpgradeHistoryPreflightFail struct { + VsanUpgradeSystemUpgradeHistoryItem + + PreflightResult VsanUpgradeSystemPreflightCheckResult `xml:"preflightResult"` +} + +func init() { + t["VsanUpgradeSystemUpgradeHistoryPreflightFail"] = reflect.TypeOf((*VsanUpgradeSystemUpgradeHistoryPreflightFail)(nil)).Elem() +} + +type VsanUpgradeSystemUpgradeStatus struct { + DynamicData + + InProgress bool `xml:"inProgress"` + History []BaseVsanUpgradeSystemUpgradeHistoryItem `xml:"history,omitempty,typeattr"` + Aborted *bool `xml:"aborted"` + Completed *bool `xml:"completed"` + Progress int32 `xml:"progress,omitempty"` +} + +func init() { + t["VsanUpgradeSystemUpgradeStatus"] = reflect.TypeOf((*VsanUpgradeSystemUpgradeStatus)(nil)).Elem() +} + +type VsanUpgradeSystemV2ObjectsPresentDuringDowngradeIssue struct { + VsanUpgradeSystemPreflightCheckIssue + + Uuids []string `xml:"uuids"` +} + +func init() { + t["VsanUpgradeSystemV2ObjectsPresentDuringDowngradeIssue"] = reflect.TypeOf((*VsanUpgradeSystemV2ObjectsPresentDuringDowngradeIssue)(nil)).Elem() +} + +type VsanUpgradeSystemWrongEsxVersionIssue struct { + VsanUpgradeSystemPreflightCheckIssue + + Hosts []ManagedObjectReference `xml:"hosts"` +} + +func init() { + t["VsanUpgradeSystemWrongEsxVersionIssue"] = reflect.TypeOf((*VsanUpgradeSystemWrongEsxVersionIssue)(nil)).Elem() +} + +type VslmCloneSpec struct { + VslmMigrateSpec + + Name string `xml:"name"` + KeepAfterDeleteVm *bool `xml:"keepAfterDeleteVm"` + Metadata []KeyValue `xml:"metadata,omitempty"` +} + +func init() { + t["VslmCloneSpec"] = reflect.TypeOf((*VslmCloneSpec)(nil)).Elem() +} + +type VslmCreateSpec struct { + DynamicData + + Name string `xml:"name"` + KeepAfterDeleteVm *bool `xml:"keepAfterDeleteVm"` + BackingSpec BaseVslmCreateSpecBackingSpec `xml:"backingSpec,typeattr"` + CapacityInMB int64 `xml:"capacityInMB"` + Profile []BaseVirtualMachineProfileSpec `xml:"profile,omitempty,typeattr"` + Crypto BaseCryptoSpec `xml:"crypto,omitempty,typeattr"` + Metadata []KeyValue `xml:"metadata,omitempty"` +} + +func init() { + t["VslmCreateSpec"] = reflect.TypeOf((*VslmCreateSpec)(nil)).Elem() +} + +type VslmCreateSpecBackingSpec struct { + DynamicData + + Datastore ManagedObjectReference `xml:"datastore"` + Path string `xml:"path,omitempty"` +} + +func init() { + t["VslmCreateSpecBackingSpec"] = reflect.TypeOf((*VslmCreateSpecBackingSpec)(nil)).Elem() +} + +type VslmCreateSpecDiskFileBackingSpec struct { + VslmCreateSpecBackingSpec + + ProvisioningType string `xml:"provisioningType,omitempty"` +} + +func init() { + t["VslmCreateSpecDiskFileBackingSpec"] = reflect.TypeOf((*VslmCreateSpecDiskFileBackingSpec)(nil)).Elem() +} + +type VslmCreateSpecRawDiskMappingBackingSpec struct { + VslmCreateSpecBackingSpec + + LunUuid string `xml:"lunUuid"` + CompatibilityMode string `xml:"compatibilityMode"` +} + +func init() { + t["VslmCreateSpecRawDiskMappingBackingSpec"] = reflect.TypeOf((*VslmCreateSpecRawDiskMappingBackingSpec)(nil)).Elem() +} + +type VslmMigrateSpec struct { + DynamicData + + BackingSpec BaseVslmCreateSpecBackingSpec `xml:"backingSpec,typeattr"` + Profile []BaseVirtualMachineProfileSpec `xml:"profile,omitempty,typeattr"` + Consolidate *bool `xml:"consolidate"` + DisksCrypto *DiskCryptoSpec `xml:"disksCrypto,omitempty"` +} + +func init() { + t["VslmMigrateSpec"] = reflect.TypeOf((*VslmMigrateSpec)(nil)).Elem() +} + +type VslmRelocateSpec struct { + VslmMigrateSpec +} + +func init() { + t["VslmRelocateSpec"] = reflect.TypeOf((*VslmRelocateSpec)(nil)).Elem() +} + +type VslmTagEntry struct { + DynamicData + + TagName string `xml:"tagName"` + ParentCategoryName string `xml:"parentCategoryName"` +} + +func init() { + t["VslmTagEntry"] = reflect.TypeOf((*VslmTagEntry)(nil)).Elem() +} + +type VspanDestPortConflict struct { + DvsFault + + VspanSessionKey1 string `xml:"vspanSessionKey1"` + VspanSessionKey2 string `xml:"vspanSessionKey2"` + PortKey string `xml:"portKey"` +} + +func init() { + t["VspanDestPortConflict"] = reflect.TypeOf((*VspanDestPortConflict)(nil)).Elem() +} + +type VspanDestPortConflictFault VspanDestPortConflict + +func init() { + t["VspanDestPortConflictFault"] = reflect.TypeOf((*VspanDestPortConflictFault)(nil)).Elem() +} + +type VspanPortConflict struct { + DvsFault + + VspanSessionKey1 string `xml:"vspanSessionKey1"` + VspanSessionKey2 string `xml:"vspanSessionKey2"` + PortKey string `xml:"portKey"` +} + +func init() { + t["VspanPortConflict"] = reflect.TypeOf((*VspanPortConflict)(nil)).Elem() +} + +type VspanPortConflictFault VspanPortConflict + +func init() { + t["VspanPortConflictFault"] = reflect.TypeOf((*VspanPortConflictFault)(nil)).Elem() +} + +type VspanPortMoveFault struct { + DvsFault + + SrcPortgroupName string `xml:"srcPortgroupName"` + DestPortgroupName string `xml:"destPortgroupName"` + PortKey string `xml:"portKey"` +} + +func init() { + t["VspanPortMoveFault"] = reflect.TypeOf((*VspanPortMoveFault)(nil)).Elem() +} + +type VspanPortMoveFaultFault VspanPortMoveFault + +func init() { + t["VspanPortMoveFaultFault"] = reflect.TypeOf((*VspanPortMoveFaultFault)(nil)).Elem() +} + +type VspanPortPromiscChangeFault struct { + DvsFault + + PortKey string `xml:"portKey"` +} + +func init() { + t["VspanPortPromiscChangeFault"] = reflect.TypeOf((*VspanPortPromiscChangeFault)(nil)).Elem() +} + +type VspanPortPromiscChangeFaultFault VspanPortPromiscChangeFault + +func init() { + t["VspanPortPromiscChangeFaultFault"] = reflect.TypeOf((*VspanPortPromiscChangeFaultFault)(nil)).Elem() +} + +type VspanPortgroupPromiscChangeFault struct { + DvsFault + + PortgroupName string `xml:"portgroupName"` +} + +func init() { + t["VspanPortgroupPromiscChangeFault"] = reflect.TypeOf((*VspanPortgroupPromiscChangeFault)(nil)).Elem() +} + +type VspanPortgroupPromiscChangeFaultFault VspanPortgroupPromiscChangeFault + +func init() { + t["VspanPortgroupPromiscChangeFaultFault"] = reflect.TypeOf((*VspanPortgroupPromiscChangeFaultFault)(nil)).Elem() +} + +type VspanPortgroupTypeChangeFault struct { + DvsFault + + PortgroupName string `xml:"portgroupName"` +} + +func init() { + t["VspanPortgroupTypeChangeFault"] = reflect.TypeOf((*VspanPortgroupTypeChangeFault)(nil)).Elem() +} + +type VspanPortgroupTypeChangeFaultFault VspanPortgroupTypeChangeFault + +func init() { + t["VspanPortgroupTypeChangeFaultFault"] = reflect.TypeOf((*VspanPortgroupTypeChangeFaultFault)(nil)).Elem() +} + +type VspanPromiscuousPortNotSupported struct { + DvsFault + + VspanSessionKey string `xml:"vspanSessionKey"` + PortKey string `xml:"portKey"` +} + +func init() { + t["VspanPromiscuousPortNotSupported"] = reflect.TypeOf((*VspanPromiscuousPortNotSupported)(nil)).Elem() +} + +type VspanPromiscuousPortNotSupportedFault VspanPromiscuousPortNotSupported + +func init() { + t["VspanPromiscuousPortNotSupportedFault"] = reflect.TypeOf((*VspanPromiscuousPortNotSupportedFault)(nil)).Elem() +} + +type VspanSameSessionPortConflict struct { + DvsFault + + VspanSessionKey string `xml:"vspanSessionKey"` + PortKey string `xml:"portKey"` +} + +func init() { + t["VspanSameSessionPortConflict"] = reflect.TypeOf((*VspanSameSessionPortConflict)(nil)).Elem() +} + +type VspanSameSessionPortConflictFault VspanSameSessionPortConflict + +func init() { + t["VspanSameSessionPortConflictFault"] = reflect.TypeOf((*VspanSameSessionPortConflictFault)(nil)).Elem() +} + +type VstorageObjectVCenterQueryChangedDiskAreas VstorageObjectVCenterQueryChangedDiskAreasRequestType + +func init() { + t["VstorageObjectVCenterQueryChangedDiskAreas"] = reflect.TypeOf((*VstorageObjectVCenterQueryChangedDiskAreas)(nil)).Elem() +} + +type VstorageObjectVCenterQueryChangedDiskAreasRequestType struct { + This ManagedObjectReference `xml:"_this"` + Id ID `xml:"id"` + Datastore ManagedObjectReference `xml:"datastore"` + SnapshotId ID `xml:"snapshotId"` + StartOffset int64 `xml:"startOffset"` + ChangeId string `xml:"changeId"` +} + +func init() { + t["VstorageObjectVCenterQueryChangedDiskAreasRequestType"] = reflect.TypeOf((*VstorageObjectVCenterQueryChangedDiskAreasRequestType)(nil)).Elem() +} + +type VstorageObjectVCenterQueryChangedDiskAreasResponse struct { + Returnval DiskChangeInfo `xml:"returnval"` +} + +type VvolDatastoreInfo struct { + DatastoreInfo + + VvolDS *HostVvolVolume `xml:"vvolDS,omitempty"` +} + +func init() { + t["VvolDatastoreInfo"] = reflect.TypeOf((*VvolDatastoreInfo)(nil)).Elem() +} + +type WaitForUpdates WaitForUpdatesRequestType + +func init() { + t["WaitForUpdates"] = reflect.TypeOf((*WaitForUpdates)(nil)).Elem() +} + +type WaitForUpdatesEx WaitForUpdatesExRequestType + +func init() { + t["WaitForUpdatesEx"] = reflect.TypeOf((*WaitForUpdatesEx)(nil)).Elem() +} + +type WaitForUpdatesExRequestType struct { + This ManagedObjectReference `xml:"_this"` + Version string `xml:"version,omitempty"` + Options *WaitOptions `xml:"options,omitempty"` +} + +func init() { + t["WaitForUpdatesExRequestType"] = reflect.TypeOf((*WaitForUpdatesExRequestType)(nil)).Elem() +} + +type WaitForUpdatesExResponse struct { + Returnval *UpdateSet `xml:"returnval,omitempty"` +} + +type WaitForUpdatesRequestType struct { + This ManagedObjectReference `xml:"_this"` + Version string `xml:"version,omitempty"` +} + +func init() { + t["WaitForUpdatesRequestType"] = reflect.TypeOf((*WaitForUpdatesRequestType)(nil)).Elem() +} + +type WaitForUpdatesResponse struct { + Returnval UpdateSet `xml:"returnval"` +} + +type WaitOptions struct { + DynamicData + + MaxWaitSeconds *int32 `xml:"maxWaitSeconds"` + MaxObjectUpdates int32 `xml:"maxObjectUpdates,omitempty"` +} + +func init() { + t["WaitOptions"] = reflect.TypeOf((*WaitOptions)(nil)).Elem() +} + +type WakeOnLanNotSupported struct { + VirtualHardwareCompatibilityIssue +} + +func init() { + t["WakeOnLanNotSupported"] = reflect.TypeOf((*WakeOnLanNotSupported)(nil)).Elem() +} + +type WakeOnLanNotSupportedByVmotionNIC struct { + HostPowerOpFailed +} + +func init() { + t["WakeOnLanNotSupportedByVmotionNIC"] = reflect.TypeOf((*WakeOnLanNotSupportedByVmotionNIC)(nil)).Elem() +} + +type WakeOnLanNotSupportedByVmotionNICFault WakeOnLanNotSupportedByVmotionNIC + +func init() { + t["WakeOnLanNotSupportedByVmotionNICFault"] = reflect.TypeOf((*WakeOnLanNotSupportedByVmotionNICFault)(nil)).Elem() +} + +type WakeOnLanNotSupportedFault WakeOnLanNotSupported + +func init() { + t["WakeOnLanNotSupportedFault"] = reflect.TypeOf((*WakeOnLanNotSupportedFault)(nil)).Elem() +} + +type WarningUpgradeEvent struct { + UpgradeEvent +} + +func init() { + t["WarningUpgradeEvent"] = reflect.TypeOf((*WarningUpgradeEvent)(nil)).Elem() +} + +type WeeklyTaskScheduler struct { + DailyTaskScheduler + + Sunday bool `xml:"sunday"` + Monday bool `xml:"monday"` + Tuesday bool `xml:"tuesday"` + Wednesday bool `xml:"wednesday"` + Thursday bool `xml:"thursday"` + Friday bool `xml:"friday"` + Saturday bool `xml:"saturday"` +} + +func init() { + t["WeeklyTaskScheduler"] = reflect.TypeOf((*WeeklyTaskScheduler)(nil)).Elem() +} + +type WillLoseHAProtection struct { + MigrationFault + + Resolution string `xml:"resolution"` +} + +func init() { + t["WillLoseHAProtection"] = reflect.TypeOf((*WillLoseHAProtection)(nil)).Elem() +} + +type WillLoseHAProtectionFault WillLoseHAProtection + +func init() { + t["WillLoseHAProtectionFault"] = reflect.TypeOf((*WillLoseHAProtectionFault)(nil)).Elem() +} + +type WillModifyConfigCpuRequirements struct { + MigrationFault +} + +func init() { + t["WillModifyConfigCpuRequirements"] = reflect.TypeOf((*WillModifyConfigCpuRequirements)(nil)).Elem() +} + +type WillModifyConfigCpuRequirementsFault WillModifyConfigCpuRequirements + +func init() { + t["WillModifyConfigCpuRequirementsFault"] = reflect.TypeOf((*WillModifyConfigCpuRequirementsFault)(nil)).Elem() +} + +type WillResetSnapshotDirectory struct { + MigrationFault +} + +func init() { + t["WillResetSnapshotDirectory"] = reflect.TypeOf((*WillResetSnapshotDirectory)(nil)).Elem() +} + +type WillResetSnapshotDirectoryFault WillResetSnapshotDirectory + +func init() { + t["WillResetSnapshotDirectoryFault"] = reflect.TypeOf((*WillResetSnapshotDirectoryFault)(nil)).Elem() +} + +type WinNetBIOSConfigInfo struct { + NetBIOSConfigInfo + + PrimaryWINS string `xml:"primaryWINS"` + SecondaryWINS string `xml:"secondaryWINS,omitempty"` +} + +func init() { + t["WinNetBIOSConfigInfo"] = reflect.TypeOf((*WinNetBIOSConfigInfo)(nil)).Elem() +} + +type WipeDiskFault struct { + VimFault +} + +func init() { + t["WipeDiskFault"] = reflect.TypeOf((*WipeDiskFault)(nil)).Elem() +} + +type WipeDiskFaultFault WipeDiskFault + +func init() { + t["WipeDiskFaultFault"] = reflect.TypeOf((*WipeDiskFaultFault)(nil)).Elem() +} + +type WitnessNodeInfo struct { + DynamicData + + IpSettings CustomizationIPSettings `xml:"ipSettings"` + BiosUuid string `xml:"biosUuid,omitempty"` +} + +func init() { + t["WitnessNodeInfo"] = reflect.TypeOf((*WitnessNodeInfo)(nil)).Elem() +} + +type XmlToCustomizationSpecItem XmlToCustomizationSpecItemRequestType + +func init() { + t["XmlToCustomizationSpecItem"] = reflect.TypeOf((*XmlToCustomizationSpecItem)(nil)).Elem() +} + +type XmlToCustomizationSpecItemRequestType struct { + This ManagedObjectReference `xml:"_this"` + SpecItemXml string `xml:"specItemXml"` +} + +func init() { + t["XmlToCustomizationSpecItemRequestType"] = reflect.TypeOf((*XmlToCustomizationSpecItemRequestType)(nil)).Elem() +} + +type XmlToCustomizationSpecItemResponse struct { + Returnval CustomizationSpecItem `xml:"returnval"` +} + +type ZeroFillVirtualDiskRequestType struct { + This ManagedObjectReference `xml:"_this"` + Name string `xml:"name"` + Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` +} + +func init() { + t["ZeroFillVirtualDiskRequestType"] = reflect.TypeOf((*ZeroFillVirtualDiskRequestType)(nil)).Elem() +} + +type ZeroFillVirtualDisk_Task ZeroFillVirtualDiskRequestType + +func init() { + t["ZeroFillVirtualDisk_Task"] = reflect.TypeOf((*ZeroFillVirtualDisk_Task)(nil)).Elem() +} + +type ZeroFillVirtualDisk_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type ConfigureVchaRequestType struct { + This ManagedObjectReference `xml:"_this"` + ConfigSpec VchaClusterConfigSpec `xml:"configSpec"` +} + +func init() { + t["configureVchaRequestType"] = reflect.TypeOf((*ConfigureVchaRequestType)(nil)).Elem() +} + +type ConfigureVcha_Task ConfigureVchaRequestType + +func init() { + t["configureVcha_Task"] = reflect.TypeOf((*ConfigureVcha_Task)(nil)).Elem() +} + +type ConfigureVcha_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreatePassiveNodeRequestType struct { + This ManagedObjectReference `xml:"_this"` + PassiveDeploymentSpec PassiveNodeDeploymentSpec `xml:"passiveDeploymentSpec"` + SourceVcSpec SourceNodeSpec `xml:"sourceVcSpec"` +} + +func init() { + t["createPassiveNodeRequestType"] = reflect.TypeOf((*CreatePassiveNodeRequestType)(nil)).Elem() +} + +type CreatePassiveNode_Task CreatePassiveNodeRequestType + +func init() { + t["createPassiveNode_Task"] = reflect.TypeOf((*CreatePassiveNode_Task)(nil)).Elem() +} + +type CreatePassiveNode_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type CreateWitnessNodeRequestType struct { + This ManagedObjectReference `xml:"_this"` + WitnessDeploymentSpec BaseNodeDeploymentSpec `xml:"witnessDeploymentSpec,typeattr"` + SourceVcSpec SourceNodeSpec `xml:"sourceVcSpec"` +} + +func init() { + t["createWitnessNodeRequestType"] = reflect.TypeOf((*CreateWitnessNodeRequestType)(nil)).Elem() +} + +type CreateWitnessNode_Task CreateWitnessNodeRequestType + +func init() { + t["createWitnessNode_Task"] = reflect.TypeOf((*CreateWitnessNode_Task)(nil)).Elem() +} + +type CreateWitnessNode_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type DeployVchaRequestType struct { + This ManagedObjectReference `xml:"_this"` + DeploymentSpec VchaClusterDeploymentSpec `xml:"deploymentSpec"` +} + +func init() { + t["deployVchaRequestType"] = reflect.TypeOf((*DeployVchaRequestType)(nil)).Elem() +} + +type DeployVcha_Task DeployVchaRequestType + +func init() { + t["deployVcha_Task"] = reflect.TypeOf((*DeployVcha_Task)(nil)).Elem() +} + +type DeployVcha_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type DestroyVchaRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["destroyVchaRequestType"] = reflect.TypeOf((*DestroyVchaRequestType)(nil)).Elem() +} + +type DestroyVcha_Task DestroyVchaRequestType + +func init() { + t["destroyVcha_Task"] = reflect.TypeOf((*DestroyVcha_Task)(nil)).Elem() +} + +type DestroyVcha_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type FetchSoftwarePackages FetchSoftwarePackagesRequestType + +func init() { + t["fetchSoftwarePackages"] = reflect.TypeOf((*FetchSoftwarePackages)(nil)).Elem() +} + +type FetchSoftwarePackagesRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["fetchSoftwarePackagesRequestType"] = reflect.TypeOf((*FetchSoftwarePackagesRequestType)(nil)).Elem() +} + +type FetchSoftwarePackagesResponse struct { + Returnval []SoftwarePackage `xml:"returnval,omitempty"` +} + +type GetClusterMode GetClusterModeRequestType + +func init() { + t["getClusterMode"] = reflect.TypeOf((*GetClusterMode)(nil)).Elem() +} + +type GetClusterModeRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["getClusterModeRequestType"] = reflect.TypeOf((*GetClusterModeRequestType)(nil)).Elem() +} + +type GetClusterModeResponse struct { + Returnval string `xml:"returnval"` +} + +type GetVchaConfig GetVchaConfigRequestType + +func init() { + t["getVchaConfig"] = reflect.TypeOf((*GetVchaConfig)(nil)).Elem() +} + +type GetVchaConfigRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["getVchaConfigRequestType"] = reflect.TypeOf((*GetVchaConfigRequestType)(nil)).Elem() +} + +type GetVchaConfigResponse struct { + Returnval VchaClusterConfigInfo `xml:"returnval"` +} + +type InitiateFailoverRequestType struct { + This ManagedObjectReference `xml:"_this"` + Planned bool `xml:"planned"` +} + +func init() { + t["initiateFailoverRequestType"] = reflect.TypeOf((*InitiateFailoverRequestType)(nil)).Elem() +} + +type InitiateFailover_Task InitiateFailoverRequestType + +func init() { + t["initiateFailover_Task"] = reflect.TypeOf((*InitiateFailover_Task)(nil)).Elem() +} + +type InitiateFailover_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type InstallDate InstallDateRequestType + +func init() { + t["installDate"] = reflect.TypeOf((*InstallDate)(nil)).Elem() +} + +type InstallDateRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["installDateRequestType"] = reflect.TypeOf((*InstallDateRequestType)(nil)).Elem() +} + +type InstallDateResponse struct { + Returnval time.Time `xml:"returnval"` +} + +type PrepareVchaRequestType struct { + This ManagedObjectReference `xml:"_this"` + NetworkSpec VchaClusterNetworkSpec `xml:"networkSpec"` +} + +func init() { + t["prepareVchaRequestType"] = reflect.TypeOf((*PrepareVchaRequestType)(nil)).Elem() +} + +type PrepareVcha_Task PrepareVchaRequestType + +func init() { + t["prepareVcha_Task"] = reflect.TypeOf((*PrepareVcha_Task)(nil)).Elem() +} + +type PrepareVcha_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type QueryDatacenterConfigOptionDescriptor QueryDatacenterConfigOptionDescriptorRequestType + +func init() { + t["queryDatacenterConfigOptionDescriptor"] = reflect.TypeOf((*QueryDatacenterConfigOptionDescriptor)(nil)).Elem() +} + +type QueryDatacenterConfigOptionDescriptorRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["queryDatacenterConfigOptionDescriptorRequestType"] = reflect.TypeOf((*QueryDatacenterConfigOptionDescriptorRequestType)(nil)).Elem() +} + +type QueryDatacenterConfigOptionDescriptorResponse struct { + Returnval []VirtualMachineConfigOptionDescriptor `xml:"returnval,omitempty"` +} + +type ReloadVirtualMachineFromPathRequestType struct { + This ManagedObjectReference `xml:"_this"` + ConfigurationPath string `xml:"configurationPath"` +} + +func init() { + t["reloadVirtualMachineFromPathRequestType"] = reflect.TypeOf((*ReloadVirtualMachineFromPathRequestType)(nil)).Elem() +} + +type ReloadVirtualMachineFromPath_Task ReloadVirtualMachineFromPathRequestType + +func init() { + t["reloadVirtualMachineFromPath_Task"] = reflect.TypeOf((*ReloadVirtualMachineFromPath_Task)(nil)).Elem() +} + +type ReloadVirtualMachineFromPath_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type SetClusterModeRequestType struct { + This ManagedObjectReference `xml:"_this"` + Mode string `xml:"mode"` +} + +func init() { + t["setClusterModeRequestType"] = reflect.TypeOf((*SetClusterModeRequestType)(nil)).Elem() +} + +type SetClusterMode_Task SetClusterModeRequestType + +func init() { + t["setClusterMode_Task"] = reflect.TypeOf((*SetClusterMode_Task)(nil)).Elem() +} + +type SetClusterMode_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type SetCustomValue SetCustomValueRequestType + +func init() { + t["setCustomValue"] = reflect.TypeOf((*SetCustomValue)(nil)).Elem() +} + +type SetCustomValueRequestType struct { + This ManagedObjectReference `xml:"_this"` + Key string `xml:"key"` + Value string `xml:"value"` +} + +func init() { + t["setCustomValueRequestType"] = reflect.TypeOf((*SetCustomValueRequestType)(nil)).Elem() +} + +type SetCustomValueResponse struct { +} + +type UnregisterVAppRequestType struct { + This ManagedObjectReference `xml:"_this"` +} + +func init() { + t["unregisterVAppRequestType"] = reflect.TypeOf((*UnregisterVAppRequestType)(nil)).Elem() +} + +type UnregisterVApp_Task UnregisterVAppRequestType + +func init() { + t["unregisterVApp_Task"] = reflect.TypeOf((*UnregisterVApp_Task)(nil)).Elem() +} + +type UnregisterVApp_TaskResponse struct { + Returnval ManagedObjectReference `xml:"returnval"` +} + +type VersionURI string + +func init() { + t["versionURI"] = reflect.TypeOf((*VersionURI)(nil)).Elem() +} + +type VslmInfrastructureObjectPolicy struct { + DynamicData + + Name string `xml:"name"` + BackingObjectId string `xml:"backingObjectId"` + ProfileId string `xml:"profileId"` + Error *LocalizedMethodFault `xml:"error,omitempty"` +} + +func init() { + t["vslmInfrastructureObjectPolicy"] = reflect.TypeOf((*VslmInfrastructureObjectPolicy)(nil)).Elem() +} + +type VslmInfrastructureObjectPolicySpec struct { + DynamicData + + Datastore ManagedObjectReference `xml:"datastore"` + Profile []BaseVirtualMachineProfileSpec `xml:"profile,omitempty,typeattr"` +} + +func init() { + t["vslmInfrastructureObjectPolicySpec"] = reflect.TypeOf((*VslmInfrastructureObjectPolicySpec)(nil)).Elem() +} diff --git a/vendor/github.com/vmware/govmomi/vim25/xml/LICENSE b/vendor/github.com/vmware/govmomi/vim25/xml/LICENSE new file mode 100644 index 0000000..6a66aea --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/xml/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/vmware/govmomi/vim25/xml/extras.go b/vendor/github.com/vmware/govmomi/vim25/xml/extras.go new file mode 100644 index 0000000..9a15b7c --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/xml/extras.go @@ -0,0 +1,99 @@ +/* +Copyright (c) 2014 VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package xml + +import ( + "reflect" + "time" +) + +var xmlSchemaInstance = Name{Space: "http://www.w3.org/2001/XMLSchema-instance", Local: "type"} + +var xsiType = Name{Space: "xsi", Local: "type"} + +var stringToTypeMap = map[string]reflect.Type{ + "xsd:boolean": reflect.TypeOf((*bool)(nil)).Elem(), + "xsd:byte": reflect.TypeOf((*int8)(nil)).Elem(), + "xsd:short": reflect.TypeOf((*int16)(nil)).Elem(), + "xsd:int": reflect.TypeOf((*int32)(nil)).Elem(), + "xsd:long": reflect.TypeOf((*int64)(nil)).Elem(), + "xsd:unsignedByte": reflect.TypeOf((*uint8)(nil)).Elem(), + "xsd:unsignedShort": reflect.TypeOf((*uint16)(nil)).Elem(), + "xsd:unsignedInt": reflect.TypeOf((*uint32)(nil)).Elem(), + "xsd:unsignedLong": reflect.TypeOf((*uint64)(nil)).Elem(), + "xsd:float": reflect.TypeOf((*float32)(nil)).Elem(), + "xsd:double": reflect.TypeOf((*float64)(nil)).Elem(), + "xsd:string": reflect.TypeOf((*string)(nil)).Elem(), + "xsd:dateTime": reflect.TypeOf((*time.Time)(nil)).Elem(), + "xsd:base64Binary": reflect.TypeOf((*[]byte)(nil)).Elem(), +} + +// Return a reflect.Type for the specified type. Nil if unknown. +func stringToType(s string) reflect.Type { + return stringToTypeMap[s] +} + +// Return a string for the specified reflect.Type. Panic if unknown. +func typeToString(typ reflect.Type) string { + switch typ.Kind() { + case reflect.Bool: + return "xsd:boolean" + case reflect.Int8: + return "xsd:byte" + case reflect.Int16: + return "xsd:short" + case reflect.Int32: + return "xsd:int" + case reflect.Int, reflect.Int64: + return "xsd:long" + case reflect.Uint8: + return "xsd:unsignedByte" + case reflect.Uint16: + return "xsd:unsignedShort" + case reflect.Uint32: + return "xsd:unsignedInt" + case reflect.Uint, reflect.Uint64: + return "xsd:unsignedLong" + case reflect.Float32: + return "xsd:float" + case reflect.Float64: + return "xsd:double" + case reflect.String: + name := typ.Name() + if name == "string" { + return "xsd:string" + } + return name + case reflect.Struct: + if typ == stringToTypeMap["xsd:dateTime"] { + return "xsd:dateTime" + } + + // Expect any other struct to be handled... + return typ.Name() + case reflect.Slice: + if typ.Elem().Kind() == reflect.Uint8 { + return "xsd:base64Binary" + } + case reflect.Array: + if typ.Elem().Kind() == reflect.Uint8 { + return "xsd:base64Binary" + } + } + + panic("don't know what to do for type: " + typ.String()) +} diff --git a/vendor/github.com/vmware/govmomi/vim25/xml/marshal.go b/vendor/github.com/vmware/govmomi/vim25/xml/marshal.go new file mode 100644 index 0000000..92c6371 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/xml/marshal.go @@ -0,0 +1,1058 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package xml + +import ( + "bufio" + "bytes" + "encoding" + "fmt" + "io" + "reflect" + "strconv" + "strings" +) + +const ( + // Header is a generic XML header suitable for use with the output of Marshal. + // This is not automatically added to any output of this package, + // it is provided as a convenience. + Header = `` + "\n" +) + +// Marshal returns the XML encoding of v. +// +// Marshal handles an array or slice by marshaling each of the elements. +// Marshal handles a pointer by marshaling the value it points at or, if the +// pointer is nil, by writing nothing. Marshal handles an interface value by +// marshaling the value it contains or, if the interface value is nil, by +// writing nothing. Marshal handles all other data by writing one or more XML +// elements containing the data. +// +// The name for the XML elements is taken from, in order of preference: +// - the tag on the XMLName field, if the data is a struct +// - the value of the XMLName field of type Name +// - the tag of the struct field used to obtain the data +// - the name of the struct field used to obtain the data +// - the name of the marshaled type +// +// The XML element for a struct contains marshaled elements for each of the +// exported fields of the struct, with these exceptions: +// - the XMLName field, described above, is omitted. +// - a field with tag "-" is omitted. +// - a field with tag "name,attr" becomes an attribute with +// the given name in the XML element. +// - a field with tag ",attr" becomes an attribute with the +// field name in the XML element. +// - a field with tag ",chardata" is written as character data, +// not as an XML element. +// - a field with tag ",cdata" is written as character data +// wrapped in one or more tags, not as an XML element. +// - a field with tag ",innerxml" is written verbatim, not subject +// to the usual marshaling procedure. +// - a field with tag ",comment" is written as an XML comment, not +// subject to the usual marshaling procedure. It must not contain +// the "--" string within it. +// - a field with a tag including the "omitempty" option is omitted +// if the field value is empty. The empty values are false, 0, any +// nil pointer or interface value, and any array, slice, map, or +// string of length zero. +// - an anonymous struct field is handled as if the fields of its +// value were part of the outer struct. +// - a field implementing Marshaler is written by calling its MarshalXML +// method. +// - a field implementing encoding.TextMarshaler is written by encoding the +// result of its MarshalText method as text. +// +// If a field uses a tag "a>b>c", then the element c will be nested inside +// parent elements a and b. Fields that appear next to each other that name +// the same parent will be enclosed in one XML element. +// +// If the XML name for a struct field is defined by both the field tag and the +// struct's XMLName field, the names must match. +// +// See MarshalIndent for an example. +// +// Marshal will return an error if asked to marshal a channel, function, or map. +func Marshal(v interface{}) ([]byte, error) { + var b bytes.Buffer + if err := NewEncoder(&b).Encode(v); err != nil { + return nil, err + } + return b.Bytes(), nil +} + +// Marshaler is the interface implemented by objects that can marshal +// themselves into valid XML elements. +// +// MarshalXML encodes the receiver as zero or more XML elements. +// By convention, arrays or slices are typically encoded as a sequence +// of elements, one per entry. +// Using start as the element tag is not required, but doing so +// will enable Unmarshal to match the XML elements to the correct +// struct field. +// One common implementation strategy is to construct a separate +// value with a layout corresponding to the desired XML and then +// to encode it using e.EncodeElement. +// Another common strategy is to use repeated calls to e.EncodeToken +// to generate the XML output one token at a time. +// The sequence of encoded tokens must make up zero or more valid +// XML elements. +type Marshaler interface { + MarshalXML(e *Encoder, start StartElement) error +} + +// MarshalerAttr is the interface implemented by objects that can marshal +// themselves into valid XML attributes. +// +// MarshalXMLAttr returns an XML attribute with the encoded value of the receiver. +// Using name as the attribute name is not required, but doing so +// will enable Unmarshal to match the attribute to the correct +// struct field. +// If MarshalXMLAttr returns the zero attribute Attr{}, no attribute +// will be generated in the output. +// MarshalXMLAttr is used only for struct fields with the +// "attr" option in the field tag. +type MarshalerAttr interface { + MarshalXMLAttr(name Name) (Attr, error) +} + +// MarshalIndent works like Marshal, but each XML element begins on a new +// indented line that starts with prefix and is followed by one or more +// copies of indent according to the nesting depth. +func MarshalIndent(v interface{}, prefix, indent string) ([]byte, error) { + var b bytes.Buffer + enc := NewEncoder(&b) + enc.Indent(prefix, indent) + if err := enc.Encode(v); err != nil { + return nil, err + } + return b.Bytes(), nil +} + +// An Encoder writes XML data to an output stream. +type Encoder struct { + p printer +} + +// NewEncoder returns a new encoder that writes to w. +func NewEncoder(w io.Writer) *Encoder { + e := &Encoder{printer{Writer: bufio.NewWriter(w)}} + e.p.encoder = e + return e +} + +// Indent sets the encoder to generate XML in which each element +// begins on a new indented line that starts with prefix and is followed by +// one or more copies of indent according to the nesting depth. +func (enc *Encoder) Indent(prefix, indent string) { + enc.p.prefix = prefix + enc.p.indent = indent +} + +// Encode writes the XML encoding of v to the stream. +// +// See the documentation for Marshal for details about the conversion +// of Go values to XML. +// +// Encode calls Flush before returning. +func (enc *Encoder) Encode(v interface{}) error { + err := enc.p.marshalValue(reflect.ValueOf(v), nil, nil) + if err != nil { + return err + } + return enc.p.Flush() +} + +// EncodeElement writes the XML encoding of v to the stream, +// using start as the outermost tag in the encoding. +// +// See the documentation for Marshal for details about the conversion +// of Go values to XML. +// +// EncodeElement calls Flush before returning. +func (enc *Encoder) EncodeElement(v interface{}, start StartElement) error { + err := enc.p.marshalValue(reflect.ValueOf(v), nil, &start) + if err != nil { + return err + } + return enc.p.Flush() +} + +var ( + begComment = []byte("") + endProcInst = []byte("?>") +) + +// EncodeToken writes the given XML token to the stream. +// It returns an error if StartElement and EndElement tokens are not properly matched. +// +// EncodeToken does not call Flush, because usually it is part of a larger operation +// such as Encode or EncodeElement (or a custom Marshaler's MarshalXML invoked +// during those), and those will call Flush when finished. +// Callers that create an Encoder and then invoke EncodeToken directly, without +// using Encode or EncodeElement, need to call Flush when finished to ensure +// that the XML is written to the underlying writer. +// +// EncodeToken allows writing a ProcInst with Target set to "xml" only as the first token +// in the stream. +func (enc *Encoder) EncodeToken(t Token) error { + + p := &enc.p + switch t := t.(type) { + case StartElement: + if err := p.writeStart(&t); err != nil { + return err + } + case EndElement: + if err := p.writeEnd(t.Name); err != nil { + return err + } + case CharData: + escapeText(p, t, false) + case Comment: + if bytes.Contains(t, endComment) { + return fmt.Errorf("xml: EncodeToken of Comment containing --> marker") + } + p.WriteString("") + return p.cachedWriteError() + case ProcInst: + // First token to be encoded which is also a ProcInst with target of xml + // is the xml declaration. The only ProcInst where target of xml is allowed. + if t.Target == "xml" && p.Buffered() != 0 { + return fmt.Errorf("xml: EncodeToken of ProcInst xml target only valid for xml declaration, first token encoded") + } + if !isNameString(t.Target) { + return fmt.Errorf("xml: EncodeToken of ProcInst with invalid Target") + } + if bytes.Contains(t.Inst, endProcInst) { + return fmt.Errorf("xml: EncodeToken of ProcInst containing ?> marker") + } + p.WriteString(" 0 { + p.WriteByte(' ') + p.Write(t.Inst) + } + p.WriteString("?>") + case Directive: + if !isValidDirective(t) { + return fmt.Errorf("xml: EncodeToken of Directive containing wrong < or > markers") + } + p.WriteString("") + default: + return fmt.Errorf("xml: EncodeToken of invalid token type") + + } + return p.cachedWriteError() +} + +// isValidDirective reports whether dir is a valid directive text, +// meaning angle brackets are matched, ignoring comments and strings. +func isValidDirective(dir Directive) bool { + var ( + depth int + inquote uint8 + incomment bool + ) + for i, c := range dir { + switch { + case incomment: + if c == '>' { + if n := 1 + i - len(endComment); n >= 0 && bytes.Equal(dir[n:i+1], endComment) { + incomment = false + } + } + // Just ignore anything in comment + case inquote != 0: + if c == inquote { + inquote = 0 + } + // Just ignore anything within quotes + case c == '\'' || c == '"': + inquote = c + case c == '<': + if i+len(begComment) < len(dir) && bytes.Equal(dir[i:i+len(begComment)], begComment) { + incomment = true + } else { + depth++ + } + case c == '>': + if depth == 0 { + return false + } + depth-- + } + } + return depth == 0 && inquote == 0 && !incomment +} + +// Flush flushes any buffered XML to the underlying writer. +// See the EncodeToken documentation for details about when it is necessary. +func (enc *Encoder) Flush() error { + return enc.p.Flush() +} + +type printer struct { + *bufio.Writer + encoder *Encoder + seq int + indent string + prefix string + depth int + indentedIn bool + putNewline bool + attrNS map[string]string // map prefix -> name space + attrPrefix map[string]string // map name space -> prefix + prefixes []string + tags []Name +} + +// createAttrPrefix finds the name space prefix attribute to use for the given name space, +// defining a new prefix if necessary. It returns the prefix. +func (p *printer) createAttrPrefix(url string) string { + if prefix := p.attrPrefix[url]; prefix != "" { + return prefix + } + + // The "http://www.w3.org/XML/1998/namespace" name space is predefined as "xml" + // and must be referred to that way. + // (The "http://www.w3.org/2000/xmlns/" name space is also predefined as "xmlns", + // but users should not be trying to use that one directly - that's our job.) + if url == xmlURL { + return xmlPrefix + } + + // Need to define a new name space. + if p.attrPrefix == nil { + p.attrPrefix = make(map[string]string) + p.attrNS = make(map[string]string) + } + + // Pick a name. We try to use the final element of the path + // but fall back to _. + prefix := strings.TrimRight(url, "/") + if i := strings.LastIndex(prefix, "/"); i >= 0 { + prefix = prefix[i+1:] + } + if prefix == "" || !isName([]byte(prefix)) || strings.Contains(prefix, ":") { + prefix = "_" + } + if strings.HasPrefix(prefix, "xml") { + // xmlanything is reserved. + prefix = "_" + prefix + } + if p.attrNS[prefix] != "" { + // Name is taken. Find a better one. + for p.seq++; ; p.seq++ { + if id := prefix + "_" + strconv.Itoa(p.seq); p.attrNS[id] == "" { + prefix = id + break + } + } + } + + p.attrPrefix[url] = prefix + p.attrNS[prefix] = url + + p.WriteString(`xmlns:`) + p.WriteString(prefix) + p.WriteString(`="`) + EscapeText(p, []byte(url)) + p.WriteString(`" `) + + p.prefixes = append(p.prefixes, prefix) + + return prefix +} + +// deleteAttrPrefix removes an attribute name space prefix. +func (p *printer) deleteAttrPrefix(prefix string) { + delete(p.attrPrefix, p.attrNS[prefix]) + delete(p.attrNS, prefix) +} + +func (p *printer) markPrefix() { + p.prefixes = append(p.prefixes, "") +} + +func (p *printer) popPrefix() { + for len(p.prefixes) > 0 { + prefix := p.prefixes[len(p.prefixes)-1] + p.prefixes = p.prefixes[:len(p.prefixes)-1] + if prefix == "" { + break + } + p.deleteAttrPrefix(prefix) + } +} + +var ( + marshalerType = reflect.TypeOf((*Marshaler)(nil)).Elem() + marshalerAttrType = reflect.TypeOf((*MarshalerAttr)(nil)).Elem() + textMarshalerType = reflect.TypeOf((*encoding.TextMarshaler)(nil)).Elem() +) + +// marshalValue writes one or more XML elements representing val. +// If val was obtained from a struct field, finfo must have its details. +func (p *printer) marshalValue(val reflect.Value, finfo *fieldInfo, startTemplate *StartElement) error { + if startTemplate != nil && startTemplate.Name.Local == "" { + return fmt.Errorf("xml: EncodeElement of StartElement with missing name") + } + + if !val.IsValid() { + return nil + } + if finfo != nil && finfo.flags&fOmitEmpty != 0 && isEmptyValue(val) { + return nil + } + + // Drill into interfaces and pointers. + // This can turn into an infinite loop given a cyclic chain, + // but it matches the Go 1 behavior. + for val.Kind() == reflect.Interface || val.Kind() == reflect.Ptr { + if val.IsNil() { + return nil + } + val = val.Elem() + } + + kind := val.Kind() + typ := val.Type() + + // Check for marshaler. + if val.CanInterface() && typ.Implements(marshalerType) { + return p.marshalInterface(val.Interface().(Marshaler), defaultStart(typ, finfo, startTemplate)) + } + if val.CanAddr() { + pv := val.Addr() + if pv.CanInterface() && pv.Type().Implements(marshalerType) { + return p.marshalInterface(pv.Interface().(Marshaler), defaultStart(pv.Type(), finfo, startTemplate)) + } + } + + // Check for text marshaler. + if val.CanInterface() && typ.Implements(textMarshalerType) { + return p.marshalTextInterface(val.Interface().(encoding.TextMarshaler), defaultStart(typ, finfo, startTemplate)) + } + if val.CanAddr() { + pv := val.Addr() + if pv.CanInterface() && pv.Type().Implements(textMarshalerType) { + return p.marshalTextInterface(pv.Interface().(encoding.TextMarshaler), defaultStart(pv.Type(), finfo, startTemplate)) + } + } + + // Slices and arrays iterate over the elements. They do not have an enclosing tag. + if (kind == reflect.Slice || kind == reflect.Array) && typ.Elem().Kind() != reflect.Uint8 { + for i, n := 0, val.Len(); i < n; i++ { + if err := p.marshalValue(val.Index(i), finfo, startTemplate); err != nil { + return err + } + } + return nil + } + + tinfo, err := getTypeInfo(typ) + if err != nil { + return err + } + + // Create start element. + // Precedence for the XML element name is: + // 0. startTemplate + // 1. XMLName field in underlying struct; + // 2. field name/tag in the struct field; and + // 3. type name + var start StartElement + + if startTemplate != nil { + start.Name = startTemplate.Name + start.Attr = append(start.Attr, startTemplate.Attr...) + } else if tinfo.xmlname != nil { + xmlname := tinfo.xmlname + if xmlname.name != "" { + start.Name.Space, start.Name.Local = xmlname.xmlns, xmlname.name + } else if v, ok := xmlname.value(val).Interface().(Name); ok && v.Local != "" { + start.Name = v + } + } + if start.Name.Local == "" && finfo != nil { + start.Name.Space, start.Name.Local = finfo.xmlns, finfo.name + } + if start.Name.Local == "" { + name := typ.Name() + if name == "" { + return &UnsupportedTypeError{typ} + } + start.Name.Local = name + } + + // Add type attribute if necessary + if finfo != nil && finfo.flags&fTypeAttr != 0 { + start.Attr = append(start.Attr, Attr{xmlSchemaInstance, typeToString(typ)}) + } + + // Attributes + for i := range tinfo.fields { + finfo := &tinfo.fields[i] + if finfo.flags&fAttr == 0 { + continue + } + fv := finfo.value(val) + + if finfo.flags&fOmitEmpty != 0 && isEmptyValue(fv) { + continue + } + + if fv.Kind() == reflect.Interface && fv.IsNil() { + continue + } + + name := Name{Space: finfo.xmlns, Local: finfo.name} + if err := p.marshalAttr(&start, name, fv); err != nil { + return err + } + } + + if err := p.writeStart(&start); err != nil { + return err + } + + if val.Kind() == reflect.Struct { + err = p.marshalStruct(tinfo, val) + } else { + s, b, err1 := p.marshalSimple(typ, val) + if err1 != nil { + err = err1 + } else if b != nil { + EscapeText(p, b) + } else { + p.EscapeString(s) + } + } + if err != nil { + return err + } + + if err := p.writeEnd(start.Name); err != nil { + return err + } + + return p.cachedWriteError() +} + +// marshalAttr marshals an attribute with the given name and value, adding to start.Attr. +func (p *printer) marshalAttr(start *StartElement, name Name, val reflect.Value) error { + if val.CanInterface() && val.Type().Implements(marshalerAttrType) { + attr, err := val.Interface().(MarshalerAttr).MarshalXMLAttr(name) + if err != nil { + return err + } + if attr.Name.Local != "" { + start.Attr = append(start.Attr, attr) + } + return nil + } + + if val.CanAddr() { + pv := val.Addr() + if pv.CanInterface() && pv.Type().Implements(marshalerAttrType) { + attr, err := pv.Interface().(MarshalerAttr).MarshalXMLAttr(name) + if err != nil { + return err + } + if attr.Name.Local != "" { + start.Attr = append(start.Attr, attr) + } + return nil + } + } + + if val.CanInterface() && val.Type().Implements(textMarshalerType) { + text, err := val.Interface().(encoding.TextMarshaler).MarshalText() + if err != nil { + return err + } + start.Attr = append(start.Attr, Attr{name, string(text)}) + return nil + } + + if val.CanAddr() { + pv := val.Addr() + if pv.CanInterface() && pv.Type().Implements(textMarshalerType) { + text, err := pv.Interface().(encoding.TextMarshaler).MarshalText() + if err != nil { + return err + } + start.Attr = append(start.Attr, Attr{name, string(text)}) + return nil + } + } + + // Dereference or skip nil pointer, interface values. + switch val.Kind() { + case reflect.Ptr, reflect.Interface: + if val.IsNil() { + return nil + } + val = val.Elem() + } + + // Walk slices. + if val.Kind() == reflect.Slice && val.Type().Elem().Kind() != reflect.Uint8 { + n := val.Len() + for i := 0; i < n; i++ { + if err := p.marshalAttr(start, name, val.Index(i)); err != nil { + return err + } + } + return nil + } + + if val.Type() == attrType { + start.Attr = append(start.Attr, val.Interface().(Attr)) + return nil + } + + s, b, err := p.marshalSimple(val.Type(), val) + if err != nil { + return err + } + if b != nil { + s = string(b) + } + start.Attr = append(start.Attr, Attr{name, s}) + return nil +} + +// defaultStart returns the default start element to use, +// given the reflect type, field info, and start template. +func defaultStart(typ reflect.Type, finfo *fieldInfo, startTemplate *StartElement) StartElement { + var start StartElement + // Precedence for the XML element name is as above, + // except that we do not look inside structs for the first field. + if startTemplate != nil { + start.Name = startTemplate.Name + start.Attr = append(start.Attr, startTemplate.Attr...) + } else if finfo != nil && finfo.name != "" { + start.Name.Local = finfo.name + start.Name.Space = finfo.xmlns + } else if typ.Name() != "" { + start.Name.Local = typ.Name() + } else { + // Must be a pointer to a named type, + // since it has the Marshaler methods. + start.Name.Local = typ.Elem().Name() + } + + // Add type attribute if necessary + if finfo != nil && finfo.flags&fTypeAttr != 0 { + start.Attr = append(start.Attr, Attr{xmlSchemaInstance, typeToString(typ)}) + } + + return start +} + +// marshalInterface marshals a Marshaler interface value. +func (p *printer) marshalInterface(val Marshaler, start StartElement) error { + // Push a marker onto the tag stack so that MarshalXML + // cannot close the XML tags that it did not open. + p.tags = append(p.tags, Name{}) + n := len(p.tags) + + err := val.MarshalXML(p.encoder, start) + if err != nil { + return err + } + + // Make sure MarshalXML closed all its tags. p.tags[n-1] is the mark. + if len(p.tags) > n { + return fmt.Errorf("xml: %s.MarshalXML wrote invalid XML: <%s> not closed", receiverType(val), p.tags[len(p.tags)-1].Local) + } + p.tags = p.tags[:n-1] + return nil +} + +// marshalTextInterface marshals a TextMarshaler interface value. +func (p *printer) marshalTextInterface(val encoding.TextMarshaler, start StartElement) error { + if err := p.writeStart(&start); err != nil { + return err + } + text, err := val.MarshalText() + if err != nil { + return err + } + EscapeText(p, text) + return p.writeEnd(start.Name) +} + +// writeStart writes the given start element. +func (p *printer) writeStart(start *StartElement) error { + if start.Name.Local == "" { + return fmt.Errorf("xml: start tag with no name") + } + + p.tags = append(p.tags, start.Name) + p.markPrefix() + + p.writeIndent(1) + p.WriteByte('<') + p.WriteString(start.Name.Local) + + if start.Name.Space != "" { + p.WriteString(` xmlns="`) + p.EscapeString(start.Name.Space) + p.WriteByte('"') + } + + // Attributes + for _, attr := range start.Attr { + name := attr.Name + if name.Local == "" { + continue + } + p.WriteByte(' ') + if name.Space != "" { + p.WriteString(p.createAttrPrefix(name.Space)) + p.WriteByte(':') + } + p.WriteString(name.Local) + p.WriteString(`="`) + p.EscapeString(attr.Value) + p.WriteByte('"') + } + p.WriteByte('>') + return nil +} + +func (p *printer) writeEnd(name Name) error { + if name.Local == "" { + return fmt.Errorf("xml: end tag with no name") + } + if len(p.tags) == 0 || p.tags[len(p.tags)-1].Local == "" { + return fmt.Errorf("xml: end tag without start tag", name.Local) + } + if top := p.tags[len(p.tags)-1]; top != name { + if top.Local != name.Local { + return fmt.Errorf("xml: end tag does not match start tag <%s>", name.Local, top.Local) + } + return fmt.Errorf("xml: end tag in namespace %s does not match start tag <%s> in namespace %s", name.Local, name.Space, top.Local, top.Space) + } + p.tags = p.tags[:len(p.tags)-1] + + p.writeIndent(-1) + p.WriteByte('<') + p.WriteByte('/') + p.WriteString(name.Local) + p.WriteByte('>') + p.popPrefix() + return nil +} + +func (p *printer) marshalSimple(typ reflect.Type, val reflect.Value) (string, []byte, error) { + switch val.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return strconv.FormatInt(val.Int(), 10), nil, nil + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return strconv.FormatUint(val.Uint(), 10), nil, nil + case reflect.Float32, reflect.Float64: + return strconv.FormatFloat(val.Float(), 'g', -1, val.Type().Bits()), nil, nil + case reflect.String: + return val.String(), nil, nil + case reflect.Bool: + return strconv.FormatBool(val.Bool()), nil, nil + case reflect.Array: + if typ.Elem().Kind() != reflect.Uint8 { + break + } + // [...]byte + var bytes []byte + if val.CanAddr() { + bytes = val.Slice(0, val.Len()).Bytes() + } else { + bytes = make([]byte, val.Len()) + reflect.Copy(reflect.ValueOf(bytes), val) + } + return "", bytes, nil + case reflect.Slice: + if typ.Elem().Kind() != reflect.Uint8 { + break + } + // []byte + return "", val.Bytes(), nil + } + return "", nil, &UnsupportedTypeError{typ} +} + +var ddBytes = []byte("--") + +// indirect drills into interfaces and pointers, returning the pointed-at value. +// If it encounters a nil interface or pointer, indirect returns that nil value. +// This can turn into an infinite loop given a cyclic chain, +// but it matches the Go 1 behavior. +func indirect(vf reflect.Value) reflect.Value { + for vf.Kind() == reflect.Interface || vf.Kind() == reflect.Ptr { + if vf.IsNil() { + return vf + } + vf = vf.Elem() + } + return vf +} + +func (p *printer) marshalStruct(tinfo *typeInfo, val reflect.Value) error { + s := parentStack{p: p} + for i := range tinfo.fields { + finfo := &tinfo.fields[i] + if finfo.flags&fAttr != 0 { + continue + } + vf := finfo.value(val) + + switch finfo.flags & fMode { + case fCDATA, fCharData: + emit := EscapeText + if finfo.flags&fMode == fCDATA { + emit = emitCDATA + } + if err := s.trim(finfo.parents); err != nil { + return err + } + if vf.CanInterface() && vf.Type().Implements(textMarshalerType) { + data, err := vf.Interface().(encoding.TextMarshaler).MarshalText() + if err != nil { + return err + } + if err := emit(p, data); err != nil { + return err + } + continue + } + if vf.CanAddr() { + pv := vf.Addr() + if pv.CanInterface() && pv.Type().Implements(textMarshalerType) { + data, err := pv.Interface().(encoding.TextMarshaler).MarshalText() + if err != nil { + return err + } + if err := emit(p, data); err != nil { + return err + } + continue + } + } + + var scratch [64]byte + vf = indirect(vf) + switch vf.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + if err := emit(p, strconv.AppendInt(scratch[:0], vf.Int(), 10)); err != nil { + return err + } + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + if err := emit(p, strconv.AppendUint(scratch[:0], vf.Uint(), 10)); err != nil { + return err + } + case reflect.Float32, reflect.Float64: + if err := emit(p, strconv.AppendFloat(scratch[:0], vf.Float(), 'g', -1, vf.Type().Bits())); err != nil { + return err + } + case reflect.Bool: + if err := emit(p, strconv.AppendBool(scratch[:0], vf.Bool())); err != nil { + return err + } + case reflect.String: + if err := emit(p, []byte(vf.String())); err != nil { + return err + } + case reflect.Slice: + if elem, ok := vf.Interface().([]byte); ok { + if err := emit(p, elem); err != nil { + return err + } + } + } + continue + + case fComment: + if err := s.trim(finfo.parents); err != nil { + return err + } + vf = indirect(vf) + k := vf.Kind() + if !(k == reflect.String || k == reflect.Slice && vf.Type().Elem().Kind() == reflect.Uint8) { + return fmt.Errorf("xml: bad type for comment field of %s", val.Type()) + } + if vf.Len() == 0 { + continue + } + p.writeIndent(0) + p.WriteString("" is invalid grammar. Make it "- -->" + p.WriteByte(' ') + } + p.WriteString("-->") + continue + + case fInnerXml: + vf = indirect(vf) + iface := vf.Interface() + switch raw := iface.(type) { + case []byte: + p.Write(raw) + continue + case string: + p.WriteString(raw) + continue + } + + case fElement, fElement | fAny: + if err := s.trim(finfo.parents); err != nil { + return err + } + if len(finfo.parents) > len(s.stack) { + if vf.Kind() != reflect.Ptr && vf.Kind() != reflect.Interface || !vf.IsNil() { + if err := s.push(finfo.parents[len(s.stack):]); err != nil { + return err + } + } + } + } + if err := p.marshalValue(vf, finfo, nil); err != nil { + return err + } + } + s.trim(nil) + return p.cachedWriteError() +} + +// return the bufio Writer's cached write error +func (p *printer) cachedWriteError() error { + _, err := p.Write(nil) + return err +} + +func (p *printer) writeIndent(depthDelta int) { + if len(p.prefix) == 0 && len(p.indent) == 0 { + return + } + if depthDelta < 0 { + p.depth-- + if p.indentedIn { + p.indentedIn = false + return + } + p.indentedIn = false + } + if p.putNewline { + p.WriteByte('\n') + } else { + p.putNewline = true + } + if len(p.prefix) > 0 { + p.WriteString(p.prefix) + } + if len(p.indent) > 0 { + for i := 0; i < p.depth; i++ { + p.WriteString(p.indent) + } + } + if depthDelta > 0 { + p.depth++ + p.indentedIn = true + } +} + +type parentStack struct { + p *printer + stack []string +} + +// trim updates the XML context to match the longest common prefix of the stack +// and the given parents. A closing tag will be written for every parent +// popped. Passing a zero slice or nil will close all the elements. +func (s *parentStack) trim(parents []string) error { + split := 0 + for ; split < len(parents) && split < len(s.stack); split++ { + if parents[split] != s.stack[split] { + break + } + } + for i := len(s.stack) - 1; i >= split; i-- { + if err := s.p.writeEnd(Name{Local: s.stack[i]}); err != nil { + return err + } + } + s.stack = s.stack[:split] + return nil +} + +// push adds parent elements to the stack and writes open tags. +func (s *parentStack) push(parents []string) error { + for i := 0; i < len(parents); i++ { + if err := s.p.writeStart(&StartElement{Name: Name{Local: parents[i]}}); err != nil { + return err + } + } + s.stack = append(s.stack, parents...) + return nil +} + +// UnsupportedTypeError is returned when Marshal encounters a type +// that cannot be converted into XML. +type UnsupportedTypeError struct { + Type reflect.Type +} + +func (e *UnsupportedTypeError) Error() string { + return "xml: unsupported type: " + e.Type.String() +} + +func isEmptyValue(v reflect.Value) bool { + switch v.Kind() { + case reflect.Array, reflect.Map, reflect.Slice, reflect.String: + return v.Len() == 0 + case reflect.Bool: + return !v.Bool() + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return v.Int() == 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return v.Uint() == 0 + case reflect.Float32, reflect.Float64: + return v.Float() == 0 + case reflect.Interface, reflect.Ptr: + return v.IsNil() + } + return false +} diff --git a/vendor/github.com/vmware/govmomi/vim25/xml/read.go b/vendor/github.com/vmware/govmomi/vim25/xml/read.go new file mode 100644 index 0000000..60f7158 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/xml/read.go @@ -0,0 +1,837 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package xml + +import ( + "bytes" + "encoding" + "errors" + "fmt" + "reflect" + "strconv" + "strings" +) + +// BUG(rsc): Mapping between XML elements and data structures is inherently flawed: +// an XML element is an order-dependent collection of anonymous +// values, while a data structure is an order-independent collection +// of named values. +// See package json for a textual representation more suitable +// to data structures. + +// Unmarshal parses the XML-encoded data and stores the result in +// the value pointed to by v, which must be an arbitrary struct, +// slice, or string. Well-formed data that does not fit into v is +// discarded. +// +// Because Unmarshal uses the reflect package, it can only assign +// to exported (upper case) fields. Unmarshal uses a case-sensitive +// comparison to match XML element names to tag values and struct +// field names. +// +// Unmarshal maps an XML element to a struct using the following rules. +// In the rules, the tag of a field refers to the value associated with the +// key 'xml' in the struct field's tag (see the example above). +// +// * If the struct has a field of type []byte or string with tag +// ",innerxml", Unmarshal accumulates the raw XML nested inside the +// element in that field. The rest of the rules still apply. +// +// * If the struct has a field named XMLName of type Name, +// Unmarshal records the element name in that field. +// +// * If the XMLName field has an associated tag of the form +// "name" or "namespace-URL name", the XML element must have +// the given name (and, optionally, name space) or else Unmarshal +// returns an error. +// +// * If the XML element has an attribute whose name matches a +// struct field name with an associated tag containing ",attr" or +// the explicit name in a struct field tag of the form "name,attr", +// Unmarshal records the attribute value in that field. +// +// * If the XML element has an attribute not handled by the previous +// rule and the struct has a field with an associated tag containing +// ",any,attr", Unmarshal records the attribute value in the first +// such field. +// +// * If the XML element contains character data, that data is +// accumulated in the first struct field that has tag ",chardata". +// The struct field may have type []byte or string. +// If there is no such field, the character data is discarded. +// +// * If the XML element contains comments, they are accumulated in +// the first struct field that has tag ",comment". The struct +// field may have type []byte or string. If there is no such +// field, the comments are discarded. +// +// * If the XML element contains a sub-element whose name matches +// the prefix of a tag formatted as "a" or "a>b>c", unmarshal +// will descend into the XML structure looking for elements with the +// given names, and will map the innermost elements to that struct +// field. A tag starting with ">" is equivalent to one starting +// with the field name followed by ">". +// +// * If the XML element contains a sub-element whose name matches +// a struct field's XMLName tag and the struct field has no +// explicit name tag as per the previous rule, unmarshal maps +// the sub-element to that struct field. +// +// * If the XML element contains a sub-element whose name matches a +// field without any mode flags (",attr", ",chardata", etc), Unmarshal +// maps the sub-element to that struct field. +// +// * If the XML element contains a sub-element that hasn't matched any +// of the above rules and the struct has a field with tag ",any", +// unmarshal maps the sub-element to that struct field. +// +// * An anonymous struct field is handled as if the fields of its +// value were part of the outer struct. +// +// * A struct field with tag "-" is never unmarshaled into. +// +// If Unmarshal encounters a field type that implements the Unmarshaler +// interface, Unmarshal calls its UnmarshalXML method to produce the value from +// the XML element. Otherwise, if the value implements +// encoding.TextUnmarshaler, Unmarshal calls that value's UnmarshalText method. +// +// Unmarshal maps an XML element to a string or []byte by saving the +// concatenation of that element's character data in the string or +// []byte. The saved []byte is never nil. +// +// Unmarshal maps an attribute value to a string or []byte by saving +// the value in the string or slice. +// +// Unmarshal maps an attribute value to an Attr by saving the attribute, +// including its name, in the Attr. +// +// Unmarshal maps an XML element or attribute value to a slice by +// extending the length of the slice and mapping the element or attribute +// to the newly created value. +// +// Unmarshal maps an XML element or attribute value to a bool by +// setting it to the boolean value represented by the string. Whitespace +// is trimmed and ignored. +// +// Unmarshal maps an XML element or attribute value to an integer or +// floating-point field by setting the field to the result of +// interpreting the string value in decimal. There is no check for +// overflow. Whitespace is trimmed and ignored. +// +// Unmarshal maps an XML element to a Name by recording the element +// name. +// +// Unmarshal maps an XML element to a pointer by setting the pointer +// to a freshly allocated value and then mapping the element to that value. +// +// A missing element or empty attribute value will be unmarshaled as a zero value. +// If the field is a slice, a zero value will be appended to the field. Otherwise, the +// field will be set to its zero value. +func Unmarshal(data []byte, v interface{}) error { + return NewDecoder(bytes.NewReader(data)).Decode(v) +} + +// Decode works like Unmarshal, except it reads the decoder +// stream to find the start element. +func (d *Decoder) Decode(v interface{}) error { + return d.DecodeElement(v, nil) +} + +// DecodeElement works like Unmarshal except that it takes +// a pointer to the start XML element to decode into v. +// It is useful when a client reads some raw XML tokens itself +// but also wants to defer to Unmarshal for some elements. +func (d *Decoder) DecodeElement(v interface{}, start *StartElement) error { + val := reflect.ValueOf(v) + if val.Kind() != reflect.Ptr { + return errors.New("non-pointer passed to Unmarshal") + } + return d.unmarshal(val.Elem(), start) +} + +// An UnmarshalError represents an error in the unmarshaling process. +type UnmarshalError string + +func (e UnmarshalError) Error() string { return string(e) } + +// Unmarshaler is the interface implemented by objects that can unmarshal +// an XML element description of themselves. +// +// UnmarshalXML decodes a single XML element +// beginning with the given start element. +// If it returns an error, the outer call to Unmarshal stops and +// returns that error. +// UnmarshalXML must consume exactly one XML element. +// One common implementation strategy is to unmarshal into +// a separate value with a layout matching the expected XML +// using d.DecodeElement, and then to copy the data from +// that value into the receiver. +// Another common strategy is to use d.Token to process the +// XML object one token at a time. +// UnmarshalXML may not use d.RawToken. +type Unmarshaler interface { + UnmarshalXML(d *Decoder, start StartElement) error +} + +// UnmarshalerAttr is the interface implemented by objects that can unmarshal +// an XML attribute description of themselves. +// +// UnmarshalXMLAttr decodes a single XML attribute. +// If it returns an error, the outer call to Unmarshal stops and +// returns that error. +// UnmarshalXMLAttr is used only for struct fields with the +// "attr" option in the field tag. +type UnmarshalerAttr interface { + UnmarshalXMLAttr(attr Attr) error +} + +// receiverType returns the receiver type to use in an expression like "%s.MethodName". +func receiverType(val interface{}) string { + t := reflect.TypeOf(val) + if t.Name() != "" { + return t.String() + } + return "(" + t.String() + ")" +} + +// unmarshalInterface unmarshals a single XML element into val. +// start is the opening tag of the element. +func (d *Decoder) unmarshalInterface(val Unmarshaler, start *StartElement) error { + // Record that decoder must stop at end tag corresponding to start. + d.pushEOF() + + d.unmarshalDepth++ + err := val.UnmarshalXML(d, *start) + d.unmarshalDepth-- + if err != nil { + d.popEOF() + return err + } + + if !d.popEOF() { + return fmt.Errorf("xml: %s.UnmarshalXML did not consume entire <%s> element", receiverType(val), start.Name.Local) + } + + return nil +} + +// unmarshalTextInterface unmarshals a single XML element into val. +// The chardata contained in the element (but not its children) +// is passed to the text unmarshaler. +func (d *Decoder) unmarshalTextInterface(val encoding.TextUnmarshaler) error { + var buf []byte + depth := 1 + for depth > 0 { + t, err := d.Token() + if err != nil { + return err + } + switch t := t.(type) { + case CharData: + if depth == 1 { + buf = append(buf, t...) + } + case StartElement: + depth++ + case EndElement: + depth-- + } + } + return val.UnmarshalText(buf) +} + +// unmarshalAttr unmarshals a single XML attribute into val. +func (d *Decoder) unmarshalAttr(val reflect.Value, attr Attr) error { + if val.Kind() == reflect.Ptr { + if val.IsNil() { + val.Set(reflect.New(val.Type().Elem())) + } + val = val.Elem() + } + if val.CanInterface() && val.Type().Implements(unmarshalerAttrType) { + // This is an unmarshaler with a non-pointer receiver, + // so it's likely to be incorrect, but we do what we're told. + return val.Interface().(UnmarshalerAttr).UnmarshalXMLAttr(attr) + } + if val.CanAddr() { + pv := val.Addr() + if pv.CanInterface() && pv.Type().Implements(unmarshalerAttrType) { + return pv.Interface().(UnmarshalerAttr).UnmarshalXMLAttr(attr) + } + } + + // Not an UnmarshalerAttr; try encoding.TextUnmarshaler. + if val.CanInterface() && val.Type().Implements(textUnmarshalerType) { + // This is an unmarshaler with a non-pointer receiver, + // so it's likely to be incorrect, but we do what we're told. + return val.Interface().(encoding.TextUnmarshaler).UnmarshalText([]byte(attr.Value)) + } + if val.CanAddr() { + pv := val.Addr() + if pv.CanInterface() && pv.Type().Implements(textUnmarshalerType) { + return pv.Interface().(encoding.TextUnmarshaler).UnmarshalText([]byte(attr.Value)) + } + } + + if val.Type().Kind() == reflect.Slice && val.Type().Elem().Kind() != reflect.Uint8 { + // Slice of element values. + // Grow slice. + n := val.Len() + val.Set(reflect.Append(val, reflect.Zero(val.Type().Elem()))) + + // Recur to read element into slice. + if err := d.unmarshalAttr(val.Index(n), attr); err != nil { + val.SetLen(n) + return err + } + return nil + } + + if val.Type() == attrType { + val.Set(reflect.ValueOf(attr)) + return nil + } + + return copyValue(val, []byte(attr.Value)) +} + +var ( + attrType = reflect.TypeOf(Attr{}) + unmarshalerType = reflect.TypeOf((*Unmarshaler)(nil)).Elem() + unmarshalerAttrType = reflect.TypeOf((*UnmarshalerAttr)(nil)).Elem() + textUnmarshalerType = reflect.TypeOf((*encoding.TextUnmarshaler)(nil)).Elem() +) + +// Find reflect.Type for an element's type attribute. +func (p *Decoder) typeForElement(val reflect.Value, start *StartElement) reflect.Type { + t := "" + for _, a := range start.Attr { + if a.Name == xmlSchemaInstance || a.Name == xsiType { + t = a.Value + break + } + } + + if t == "" { + // No type attribute; fall back to looking up type by interface name. + t = val.Type().Name() + } + + // Maybe the type is a basic xsd:* type. + typ := stringToType(t) + if typ != nil { + return typ + } + + // Maybe the type is a custom type. + if p.TypeFunc != nil { + if typ, ok := p.TypeFunc(t); ok { + return typ + } + } + + return nil +} + +// Unmarshal a single XML element into val. +func (d *Decoder) unmarshal(val reflect.Value, start *StartElement) error { + // Find start element if we need it. + if start == nil { + for { + tok, err := d.Token() + if err != nil { + return err + } + if t, ok := tok.(StartElement); ok { + start = &t + break + } + } + } + + // Try to figure out type for empty interface values. + if val.Kind() == reflect.Interface && val.IsNil() { + typ := d.typeForElement(val, start) + if typ != nil { + pval := reflect.New(typ).Elem() + err := d.unmarshal(pval, start) + if err != nil { + return err + } + + for i := 0; i < 2; i++ { + if typ.Implements(val.Type()) { + val.Set(pval) + return nil + } + + typ = reflect.PtrTo(typ) + pval = pval.Addr() + } + + val.Set(pval) + return nil + } + } + + // Load value from interface, but only if the result will be + // usefully addressable. + if val.Kind() == reflect.Interface && !val.IsNil() { + e := val.Elem() + if e.Kind() == reflect.Ptr && !e.IsNil() { + val = e + } + } + + if val.Kind() == reflect.Ptr { + if val.IsNil() { + val.Set(reflect.New(val.Type().Elem())) + } + val = val.Elem() + } + + if val.CanInterface() && val.Type().Implements(unmarshalerType) { + // This is an unmarshaler with a non-pointer receiver, + // so it's likely to be incorrect, but we do what we're told. + return d.unmarshalInterface(val.Interface().(Unmarshaler), start) + } + + if val.CanAddr() { + pv := val.Addr() + if pv.CanInterface() && pv.Type().Implements(unmarshalerType) { + return d.unmarshalInterface(pv.Interface().(Unmarshaler), start) + } + } + + if val.CanInterface() && val.Type().Implements(textUnmarshalerType) { + return d.unmarshalTextInterface(val.Interface().(encoding.TextUnmarshaler)) + } + + if val.CanAddr() { + pv := val.Addr() + if pv.CanInterface() && pv.Type().Implements(textUnmarshalerType) { + return d.unmarshalTextInterface(pv.Interface().(encoding.TextUnmarshaler)) + } + } + + var ( + data []byte + saveData reflect.Value + comment []byte + saveComment reflect.Value + saveXML reflect.Value + saveXMLIndex int + saveXMLData []byte + saveAny reflect.Value + sv reflect.Value + tinfo *typeInfo + err error + ) + + switch v := val; v.Kind() { + default: + return errors.New("unknown type " + v.Type().String()) + + case reflect.Interface: + // TODO: For now, simply ignore the field. In the near + // future we may choose to unmarshal the start + // element on it, if not nil. + return d.Skip() + + case reflect.Slice: + typ := v.Type() + if typ.Elem().Kind() == reflect.Uint8 { + // []byte + saveData = v + break + } + + // Slice of element values. + // Grow slice. + n := v.Len() + v.Set(reflect.Append(val, reflect.Zero(v.Type().Elem()))) + + // Recur to read element into slice. + if err := d.unmarshal(v.Index(n), start); err != nil { + v.SetLen(n) + return err + } + return nil + + case reflect.Bool, reflect.Float32, reflect.Float64, reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr, reflect.String: + saveData = v + + case reflect.Struct: + typ := v.Type() + if typ == nameType { + v.Set(reflect.ValueOf(start.Name)) + break + } + + sv = v + tinfo, err = getTypeInfo(typ) + if err != nil { + return err + } + + // Validate and assign element name. + if tinfo.xmlname != nil { + finfo := tinfo.xmlname + if finfo.name != "" && finfo.name != start.Name.Local { + return UnmarshalError("expected element type <" + finfo.name + "> but have <" + start.Name.Local + ">") + } + if finfo.xmlns != "" && finfo.xmlns != start.Name.Space { + e := "expected element <" + finfo.name + "> in name space " + finfo.xmlns + " but have " + if start.Name.Space == "" { + e += "no name space" + } else { + e += start.Name.Space + } + return UnmarshalError(e) + } + fv := finfo.value(sv) + if _, ok := fv.Interface().(Name); ok { + fv.Set(reflect.ValueOf(start.Name)) + } + } + + // Assign attributes. + for _, a := range start.Attr { + handled := false + any := -1 + for i := range tinfo.fields { + finfo := &tinfo.fields[i] + switch finfo.flags & fMode { + case fAttr: + strv := finfo.value(sv) + if a.Name.Local == finfo.name && (finfo.xmlns == "" || finfo.xmlns == a.Name.Space) { + needTypeAttr := (finfo.flags & fTypeAttr) != 0 + // HACK: avoid using xsi:type value for a "type" attribute, such as ManagedObjectReference.Type for example. + if needTypeAttr || (a.Name != xmlSchemaInstance && a.Name != xsiType) { + if err := d.unmarshalAttr(strv, a); err != nil { + return err + } + } + handled = true + } + + case fAny | fAttr: + if any == -1 { + any = i + } + } + } + if !handled && any >= 0 { + finfo := &tinfo.fields[any] + strv := finfo.value(sv) + if err := d.unmarshalAttr(strv, a); err != nil { + return err + } + } + } + + // Determine whether we need to save character data or comments. + for i := range tinfo.fields { + finfo := &tinfo.fields[i] + switch finfo.flags & fMode { + case fCDATA, fCharData: + if !saveData.IsValid() { + saveData = finfo.value(sv) + } + + case fComment: + if !saveComment.IsValid() { + saveComment = finfo.value(sv) + } + + case fAny, fAny | fElement: + if !saveAny.IsValid() { + saveAny = finfo.value(sv) + } + + case fInnerXml: + if !saveXML.IsValid() { + saveXML = finfo.value(sv) + if d.saved == nil { + saveXMLIndex = 0 + d.saved = new(bytes.Buffer) + } else { + saveXMLIndex = d.savedOffset() + } + } + } + } + } + + // Find end element. + // Process sub-elements along the way. +Loop: + for { + var savedOffset int + if saveXML.IsValid() { + savedOffset = d.savedOffset() + } + tok, err := d.Token() + if err != nil { + return err + } + switch t := tok.(type) { + case StartElement: + consumed := false + if sv.IsValid() { + consumed, err = d.unmarshalPath(tinfo, sv, nil, &t) + if err != nil { + return err + } + if !consumed && saveAny.IsValid() { + consumed = true + if err := d.unmarshal(saveAny, &t); err != nil { + return err + } + } + } + if !consumed { + if err := d.Skip(); err != nil { + return err + } + } + + case EndElement: + if saveXML.IsValid() { + saveXMLData = d.saved.Bytes()[saveXMLIndex:savedOffset] + if saveXMLIndex == 0 { + d.saved = nil + } + } + break Loop + + case CharData: + if saveData.IsValid() { + data = append(data, t...) + } + + case Comment: + if saveComment.IsValid() { + comment = append(comment, t...) + } + } + } + + if saveData.IsValid() && saveData.CanInterface() && saveData.Type().Implements(textUnmarshalerType) { + if err := saveData.Interface().(encoding.TextUnmarshaler).UnmarshalText(data); err != nil { + return err + } + saveData = reflect.Value{} + } + + if saveData.IsValid() && saveData.CanAddr() { + pv := saveData.Addr() + if pv.CanInterface() && pv.Type().Implements(textUnmarshalerType) { + if err := pv.Interface().(encoding.TextUnmarshaler).UnmarshalText(data); err != nil { + return err + } + saveData = reflect.Value{} + } + } + + if err := copyValue(saveData, data); err != nil { + return err + } + + switch t := saveComment; t.Kind() { + case reflect.String: + t.SetString(string(comment)) + case reflect.Slice: + t.Set(reflect.ValueOf(comment)) + } + + switch t := saveXML; t.Kind() { + case reflect.String: + t.SetString(string(saveXMLData)) + case reflect.Slice: + if t.Type().Elem().Kind() == reflect.Uint8 { + t.Set(reflect.ValueOf(saveXMLData)) + } + } + + return nil +} + +func copyValue(dst reflect.Value, src []byte) (err error) { + dst0 := dst + + if dst.Kind() == reflect.Ptr { + if dst.IsNil() { + dst.Set(reflect.New(dst.Type().Elem())) + } + dst = dst.Elem() + } + + // Save accumulated data. + switch dst.Kind() { + case reflect.Invalid: + // Probably a comment. + default: + return errors.New("cannot unmarshal into " + dst0.Type().String()) + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + if len(src) == 0 { + dst.SetInt(0) + return nil + } + itmp, err := strconv.ParseInt(strings.TrimSpace(string(src)), 10, dst.Type().Bits()) + if err != nil { + return err + } + dst.SetInt(itmp) + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + var utmp uint64 + if len(src) > 0 && src[0] == '-' { + // Negative value for unsigned field. + // Assume it was serialized following two's complement. + itmp, err := strconv.ParseInt(string(src), 10, dst.Type().Bits()) + if err != nil { + return err + } + // Reinterpret value based on type width. + switch dst.Type().Bits() { + case 8: + utmp = uint64(uint8(itmp)) + case 16: + utmp = uint64(uint16(itmp)) + case 32: + utmp = uint64(uint32(itmp)) + case 64: + utmp = uint64(uint64(itmp)) + } + } else { + if len(src) == 0 { + dst.SetUint(0) + return nil + } + + utmp, err = strconv.ParseUint(strings.TrimSpace(string(src)), 10, dst.Type().Bits()) + if err != nil { + return err + } + } + dst.SetUint(utmp) + case reflect.Float32, reflect.Float64: + if len(src) == 0 { + dst.SetFloat(0) + return nil + } + ftmp, err := strconv.ParseFloat(strings.TrimSpace(string(src)), dst.Type().Bits()) + if err != nil { + return err + } + dst.SetFloat(ftmp) + case reflect.Bool: + if len(src) == 0 { + dst.SetBool(false) + return nil + } + value, err := strconv.ParseBool(strings.TrimSpace(string(src))) + if err != nil { + return err + } + dst.SetBool(value) + case reflect.String: + dst.SetString(string(src)) + case reflect.Slice: + if len(src) == 0 { + // non-nil to flag presence + src = []byte{} + } + dst.SetBytes(src) + } + return nil +} + +// unmarshalPath walks down an XML structure looking for wanted +// paths, and calls unmarshal on them. +// The consumed result tells whether XML elements have been consumed +// from the Decoder until start's matching end element, or if it's +// still untouched because start is uninteresting for sv's fields. +func (d *Decoder) unmarshalPath(tinfo *typeInfo, sv reflect.Value, parents []string, start *StartElement) (consumed bool, err error) { + recurse := false +Loop: + for i := range tinfo.fields { + finfo := &tinfo.fields[i] + if finfo.flags&fElement == 0 || len(finfo.parents) < len(parents) || finfo.xmlns != "" && finfo.xmlns != start.Name.Space { + continue + } + for j := range parents { + if parents[j] != finfo.parents[j] { + continue Loop + } + } + if len(finfo.parents) == len(parents) && finfo.name == start.Name.Local { + // It's a perfect match, unmarshal the field. + return true, d.unmarshal(finfo.value(sv), start) + } + if len(finfo.parents) > len(parents) && finfo.parents[len(parents)] == start.Name.Local { + // It's a prefix for the field. Break and recurse + // since it's not ok for one field path to be itself + // the prefix for another field path. + recurse = true + + // We can reuse the same slice as long as we + // don't try to append to it. + parents = finfo.parents[:len(parents)+1] + break + } + } + if !recurse { + // We have no business with this element. + return false, nil + } + // The element is not a perfect match for any field, but one + // or more fields have the path to this element as a parent + // prefix. Recurse and attempt to match these. + for { + var tok Token + tok, err = d.Token() + if err != nil { + return true, err + } + switch t := tok.(type) { + case StartElement: + consumed2, err := d.unmarshalPath(tinfo, sv, parents, &t) + if err != nil { + return true, err + } + if !consumed2 { + if err := d.Skip(); err != nil { + return true, err + } + } + case EndElement: + return true, nil + } + } +} + +// Skip reads tokens until it has consumed the end element +// matching the most recent start element already consumed. +// It recurs if it encounters a start element, so it can be used to +// skip nested structures. +// It returns nil if it finds an end element matching the start +// element; otherwise it returns an error describing the problem. +func (d *Decoder) Skip() error { + for { + tok, err := d.Token() + if err != nil { + return err + } + switch tok.(type) { + case StartElement: + if err := d.Skip(); err != nil { + return err + } + case EndElement: + return nil + } + } +} diff --git a/vendor/github.com/vmware/govmomi/vim25/xml/typeinfo.go b/vendor/github.com/vmware/govmomi/vim25/xml/typeinfo.go new file mode 100644 index 0000000..0d240b1 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/xml/typeinfo.go @@ -0,0 +1,367 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package xml + +import ( + "fmt" + "reflect" + "strings" + "sync" +) + +// typeInfo holds details for the xml representation of a type. +type typeInfo struct { + xmlname *fieldInfo + fields []fieldInfo +} + +// fieldInfo holds details for the xml representation of a single field. +type fieldInfo struct { + idx []int + name string + xmlns string + flags fieldFlags + parents []string +} + +type fieldFlags int + +const ( + fElement fieldFlags = 1 << iota + fAttr + fCDATA + fCharData + fInnerXml + fComment + fAny + + fOmitEmpty + fTypeAttr + + fMode = fElement | fAttr | fCDATA | fCharData | fInnerXml | fComment | fAny + + xmlName = "XMLName" +) + +var tinfoMap sync.Map // map[reflect.Type]*typeInfo + +var nameType = reflect.TypeOf(Name{}) + +// getTypeInfo returns the typeInfo structure with details necessary +// for marshaling and unmarshaling typ. +func getTypeInfo(typ reflect.Type) (*typeInfo, error) { + if ti, ok := tinfoMap.Load(typ); ok { + return ti.(*typeInfo), nil + } + + tinfo := &typeInfo{} + if typ.Kind() == reflect.Struct && typ != nameType { + n := typ.NumField() + for i := 0; i < n; i++ { + f := typ.Field(i) + if (f.PkgPath != "" && !f.Anonymous) || f.Tag.Get("xml") == "-" { + continue // Private field + } + + // For embedded structs, embed its fields. + if f.Anonymous { + t := f.Type + if t.Kind() == reflect.Ptr { + t = t.Elem() + } + if t.Kind() == reflect.Struct { + inner, err := getTypeInfo(t) + if err != nil { + return nil, err + } + if tinfo.xmlname == nil { + tinfo.xmlname = inner.xmlname + } + for _, finfo := range inner.fields { + finfo.idx = append([]int{i}, finfo.idx...) + if err := addFieldInfo(typ, tinfo, &finfo); err != nil { + return nil, err + } + } + continue + } + } + + finfo, err := structFieldInfo(typ, &f) + if err != nil { + return nil, err + } + + if f.Name == xmlName { + tinfo.xmlname = finfo + continue + } + + // Add the field if it doesn't conflict with other fields. + if err := addFieldInfo(typ, tinfo, finfo); err != nil { + return nil, err + } + } + } + + ti, _ := tinfoMap.LoadOrStore(typ, tinfo) + return ti.(*typeInfo), nil +} + +// structFieldInfo builds and returns a fieldInfo for f. +func structFieldInfo(typ reflect.Type, f *reflect.StructField) (*fieldInfo, error) { + finfo := &fieldInfo{idx: f.Index} + + // Split the tag from the xml namespace if necessary. + tag := f.Tag.Get("xml") + if i := strings.Index(tag, " "); i >= 0 { + finfo.xmlns, tag = tag[:i], tag[i+1:] + } + + // Parse flags. + tokens := strings.Split(tag, ",") + if len(tokens) == 1 { + finfo.flags = fElement + } else { + tag = tokens[0] + for _, flag := range tokens[1:] { + switch flag { + case "attr": + finfo.flags |= fAttr + case "cdata": + finfo.flags |= fCDATA + case "chardata": + finfo.flags |= fCharData + case "innerxml": + finfo.flags |= fInnerXml + case "comment": + finfo.flags |= fComment + case "any": + finfo.flags |= fAny + case "omitempty": + finfo.flags |= fOmitEmpty + case "typeattr": + finfo.flags |= fTypeAttr + } + } + + // Validate the flags used. + valid := true + switch mode := finfo.flags & fMode; mode { + case 0: + finfo.flags |= fElement + case fAttr, fCDATA, fCharData, fInnerXml, fComment, fAny, fAny | fAttr: + if f.Name == xmlName || tag != "" && mode != fAttr { + valid = false + } + default: + // This will also catch multiple modes in a single field. + valid = false + } + if finfo.flags&fMode == fAny { + finfo.flags |= fElement + } + if finfo.flags&fOmitEmpty != 0 && finfo.flags&(fElement|fAttr) == 0 { + valid = false + } + if !valid { + return nil, fmt.Errorf("xml: invalid tag in field %s of type %s: %q", + f.Name, typ, f.Tag.Get("xml")) + } + } + + // Use of xmlns without a name is not allowed. + if finfo.xmlns != "" && tag == "" { + return nil, fmt.Errorf("xml: namespace without name in field %s of type %s: %q", + f.Name, typ, f.Tag.Get("xml")) + } + + if f.Name == xmlName { + // The XMLName field records the XML element name. Don't + // process it as usual because its name should default to + // empty rather than to the field name. + finfo.name = tag + return finfo, nil + } + + if tag == "" { + // If the name part of the tag is completely empty, get + // default from XMLName of underlying struct if feasible, + // or field name otherwise. + if xmlname := lookupXMLName(f.Type); xmlname != nil { + finfo.xmlns, finfo.name = xmlname.xmlns, xmlname.name + } else { + finfo.name = f.Name + } + return finfo, nil + } + + // Prepare field name and parents. + parents := strings.Split(tag, ">") + if parents[0] == "" { + parents[0] = f.Name + } + if parents[len(parents)-1] == "" { + return nil, fmt.Errorf("xml: trailing '>' in field %s of type %s", f.Name, typ) + } + finfo.name = parents[len(parents)-1] + if len(parents) > 1 { + if (finfo.flags & fElement) == 0 { + return nil, fmt.Errorf("xml: %s chain not valid with %s flag", tag, strings.Join(tokens[1:], ",")) + } + finfo.parents = parents[:len(parents)-1] + } + + // If the field type has an XMLName field, the names must match + // so that the behavior of both marshaling and unmarshaling + // is straightforward and unambiguous. + if finfo.flags&fElement != 0 { + ftyp := f.Type + xmlname := lookupXMLName(ftyp) + if xmlname != nil && xmlname.name != finfo.name { + return nil, fmt.Errorf("xml: name %q in tag of %s.%s conflicts with name %q in %s.XMLName", + finfo.name, typ, f.Name, xmlname.name, ftyp) + } + } + return finfo, nil +} + +// lookupXMLName returns the fieldInfo for typ's XMLName field +// in case it exists and has a valid xml field tag, otherwise +// it returns nil. +func lookupXMLName(typ reflect.Type) (xmlname *fieldInfo) { + for typ.Kind() == reflect.Ptr { + typ = typ.Elem() + } + if typ.Kind() != reflect.Struct { + return nil + } + for i, n := 0, typ.NumField(); i < n; i++ { + f := typ.Field(i) + if f.Name != xmlName { + continue + } + finfo, err := structFieldInfo(typ, &f) + if err == nil && finfo.name != "" { + return finfo + } + // Also consider errors as a non-existent field tag + // and let getTypeInfo itself report the error. + break + } + return nil +} + +func min(a, b int) int { + if a <= b { + return a + } + return b +} + +// addFieldInfo adds finfo to tinfo.fields if there are no +// conflicts, or if conflicts arise from previous fields that were +// obtained from deeper embedded structures than finfo. In the latter +// case, the conflicting entries are dropped. +// A conflict occurs when the path (parent + name) to a field is +// itself a prefix of another path, or when two paths match exactly. +// It is okay for field paths to share a common, shorter prefix. +func addFieldInfo(typ reflect.Type, tinfo *typeInfo, newf *fieldInfo) error { + var conflicts []int +Loop: + // First, figure all conflicts. Most working code will have none. + for i := range tinfo.fields { + oldf := &tinfo.fields[i] + if oldf.flags&fMode != newf.flags&fMode { + continue + } + if oldf.xmlns != "" && newf.xmlns != "" && oldf.xmlns != newf.xmlns { + continue + } + minl := min(len(newf.parents), len(oldf.parents)) + for p := 0; p < minl; p++ { + if oldf.parents[p] != newf.parents[p] { + continue Loop + } + } + if len(oldf.parents) > len(newf.parents) { + if oldf.parents[len(newf.parents)] == newf.name { + conflicts = append(conflicts, i) + } + } else if len(oldf.parents) < len(newf.parents) { + if newf.parents[len(oldf.parents)] == oldf.name { + conflicts = append(conflicts, i) + } + } else { + if newf.name == oldf.name { + conflicts = append(conflicts, i) + } + } + } + // Without conflicts, add the new field and return. + if conflicts == nil { + tinfo.fields = append(tinfo.fields, *newf) + return nil + } + + // If any conflict is shallower, ignore the new field. + // This matches the Go field resolution on embedding. + for _, i := range conflicts { + if len(tinfo.fields[i].idx) < len(newf.idx) { + return nil + } + } + + // Otherwise, if any of them is at the same depth level, it's an error. + for _, i := range conflicts { + oldf := &tinfo.fields[i] + if len(oldf.idx) == len(newf.idx) { + f1 := typ.FieldByIndex(oldf.idx) + f2 := typ.FieldByIndex(newf.idx) + return &TagPathError{typ, f1.Name, f1.Tag.Get("xml"), f2.Name, f2.Tag.Get("xml")} + } + } + + // Otherwise, the new field is shallower, and thus takes precedence, + // so drop the conflicting fields from tinfo and append the new one. + for c := len(conflicts) - 1; c >= 0; c-- { + i := conflicts[c] + copy(tinfo.fields[i:], tinfo.fields[i+1:]) + tinfo.fields = tinfo.fields[:len(tinfo.fields)-1] + } + tinfo.fields = append(tinfo.fields, *newf) + return nil +} + +// A TagPathError represents an error in the unmarshaling process +// caused by the use of field tags with conflicting paths. +type TagPathError struct { + Struct reflect.Type + Field1, Tag1 string + Field2, Tag2 string +} + +func (e *TagPathError) Error() string { + return fmt.Sprintf("%s field %q with tag %q conflicts with field %q with tag %q", e.Struct, e.Field1, e.Tag1, e.Field2, e.Tag2) +} + +// value returns v's field value corresponding to finfo. +// It's equivalent to v.FieldByIndex(finfo.idx), but initializes +// and dereferences pointers as necessary. +func (finfo *fieldInfo) value(v reflect.Value) reflect.Value { + for i, x := range finfo.idx { + if i > 0 { + t := v.Type() + if t.Kind() == reflect.Ptr && t.Elem().Kind() == reflect.Struct { + if v.IsNil() { + v.Set(reflect.New(v.Type().Elem())) + } + v = v.Elem() + } + } + v = v.Field(x) + } + return v +} diff --git a/vendor/github.com/vmware/govmomi/vim25/xml/xml.go b/vendor/github.com/vmware/govmomi/vim25/xml/xml.go new file mode 100644 index 0000000..50117a0 --- /dev/null +++ b/vendor/github.com/vmware/govmomi/vim25/xml/xml.go @@ -0,0 +1,2053 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package xml implements a simple XML 1.0 parser that +// understands XML name spaces. +package xml + +// References: +// Annotated XML spec: https://www.xml.com/axml/testaxml.htm +// XML name spaces: https://www.w3.org/TR/REC-xml-names/ + +// TODO(rsc): +// Test error handling. + +import ( + "bufio" + "bytes" + "errors" + "fmt" + "io" + "reflect" + "strconv" + "strings" + "unicode" + "unicode/utf8" +) + +// A SyntaxError represents a syntax error in the XML input stream. +type SyntaxError struct { + Msg string + Line int +} + +func (e *SyntaxError) Error() string { + return "XML syntax error on line " + strconv.Itoa(e.Line) + ": " + e.Msg +} + +// A Name represents an XML name (Local) annotated +// with a name space identifier (Space). +// In tokens returned by Decoder.Token, the Space identifier +// is given as a canonical URL, not the short prefix used +// in the document being parsed. +type Name struct { + Space, Local string +} + +// An Attr represents an attribute in an XML element (Name=Value). +type Attr struct { + Name Name + Value string +} + +// A Token is an interface holding one of the token types: +// StartElement, EndElement, CharData, Comment, ProcInst, or Directive. +type Token interface{} + +// A StartElement represents an XML start element. +type StartElement struct { + Name Name + Attr []Attr +} + +// Copy creates a new copy of StartElement. +func (e StartElement) Copy() StartElement { + attrs := make([]Attr, len(e.Attr)) + copy(attrs, e.Attr) + e.Attr = attrs + return e +} + +// End returns the corresponding XML end element. +func (e StartElement) End() EndElement { + return EndElement{e.Name} +} + +// An EndElement represents an XML end element. +type EndElement struct { + Name Name +} + +// A CharData represents XML character data (raw text), +// in which XML escape sequences have been replaced by +// the characters they represent. +type CharData []byte + +func makeCopy(b []byte) []byte { + b1 := make([]byte, len(b)) + copy(b1, b) + return b1 +} + +// Copy creates a new copy of CharData. +func (c CharData) Copy() CharData { return CharData(makeCopy(c)) } + +// A Comment represents an XML comment of the form . +// The bytes do not include the comment markers. +type Comment []byte + +// Copy creates a new copy of Comment. +func (c Comment) Copy() Comment { return Comment(makeCopy(c)) } + +// A ProcInst represents an XML processing instruction of the form +type ProcInst struct { + Target string + Inst []byte +} + +// Copy creates a new copy of ProcInst. +func (p ProcInst) Copy() ProcInst { + p.Inst = makeCopy(p.Inst) + return p +} + +// A Directive represents an XML directive of the form . +// The bytes do not include the markers. +type Directive []byte + +// Copy creates a new copy of Directive. +func (d Directive) Copy() Directive { return Directive(makeCopy(d)) } + +// CopyToken returns a copy of a Token. +func CopyToken(t Token) Token { + switch v := t.(type) { + case CharData: + return v.Copy() + case Comment: + return v.Copy() + case Directive: + return v.Copy() + case ProcInst: + return v.Copy() + case StartElement: + return v.Copy() + } + return t +} + +// A TokenReader is anything that can decode a stream of XML tokens, including a +// Decoder. +// +// When Token encounters an error or end-of-file condition after successfully +// reading a token, it returns the token. It may return the (non-nil) error from +// the same call or return the error (and a nil token) from a subsequent call. +// An instance of this general case is that a TokenReader returning a non-nil +// token at the end of the token stream may return either io.EOF or a nil error. +// The next Read should return nil, io.EOF. +// +// Implementations of Token are discouraged from returning a nil token with a +// nil error. Callers should treat a return of nil, nil as indicating that +// nothing happened; in particular it does not indicate EOF. +type TokenReader interface { + Token() (Token, error) +} + +// A Decoder represents an XML parser reading a particular input stream. +// The parser assumes that its input is encoded in UTF-8. +type Decoder struct { + // Strict defaults to true, enforcing the requirements + // of the XML specification. + // If set to false, the parser allows input containing common + // mistakes: + // * If an element is missing an end tag, the parser invents + // end tags as necessary to keep the return values from Token + // properly balanced. + // * In attribute values and character data, unknown or malformed + // character entities (sequences beginning with &) are left alone. + // + // Setting: + // + // d.Strict = false + // d.AutoClose = xml.HTMLAutoClose + // d.Entity = xml.HTMLEntity + // + // creates a parser that can handle typical HTML. + // + // Strict mode does not enforce the requirements of the XML name spaces TR. + // In particular it does not reject name space tags using undefined prefixes. + // Such tags are recorded with the unknown prefix as the name space URL. + Strict bool + + // When Strict == false, AutoClose indicates a set of elements to + // consider closed immediately after they are opened, regardless + // of whether an end element is present. + AutoClose []string + + // Entity can be used to map non-standard entity names to string replacements. + // The parser behaves as if these standard mappings are present in the map, + // regardless of the actual map content: + // + // "lt": "<", + // "gt": ">", + // "amp": "&", + // "apos": "'", + // "quot": `"`, + Entity map[string]string + + // CharsetReader, if non-nil, defines a function to generate + // charset-conversion readers, converting from the provided + // non-UTF-8 charset into UTF-8. If CharsetReader is nil or + // returns an error, parsing stops with an error. One of the + // CharsetReader's result values must be non-nil. + CharsetReader func(charset string, input io.Reader) (io.Reader, error) + + // DefaultSpace sets the default name space used for unadorned tags, + // as if the entire XML stream were wrapped in an element containing + // the attribute xmlns="DefaultSpace". + DefaultSpace string + + // TypeFunc is used to map type names to actual types. + TypeFunc func(string) (reflect.Type, bool) + + r io.ByteReader + t TokenReader + buf bytes.Buffer + saved *bytes.Buffer + stk *stack + free *stack + needClose bool + toClose Name + nextToken Token + nextByte int + ns map[string]string + err error + line int + offset int64 + unmarshalDepth int +} + +// NewDecoder creates a new XML parser reading from r. +// If r does not implement io.ByteReader, NewDecoder will +// do its own buffering. +func NewDecoder(r io.Reader) *Decoder { + d := &Decoder{ + ns: make(map[string]string), + nextByte: -1, + line: 1, + Strict: true, + } + d.switchToReader(r) + return d +} + +// NewTokenDecoder creates a new XML parser using an underlying token stream. +func NewTokenDecoder(t TokenReader) *Decoder { + // Is it already a Decoder? + if d, ok := t.(*Decoder); ok { + return d + } + d := &Decoder{ + ns: make(map[string]string), + t: t, + nextByte: -1, + line: 1, + Strict: true, + } + return d +} + +// Token returns the next XML token in the input stream. +// At the end of the input stream, Token returns nil, io.EOF. +// +// Slices of bytes in the returned token data refer to the +// parser's internal buffer and remain valid only until the next +// call to Token. To acquire a copy of the bytes, call CopyToken +// or the token's Copy method. +// +// Token expands self-closing elements such as
+// into separate start and end elements returned by successive calls. +// +// Token guarantees that the StartElement and EndElement +// tokens it returns are properly nested and matched: +// if Token encounters an unexpected end element +// or EOF before all expected end elements, +// it will return an error. +// +// Token implements XML name spaces as described by +// https://www.w3.org/TR/REC-xml-names/. Each of the +// Name structures contained in the Token has the Space +// set to the URL identifying its name space when known. +// If Token encounters an unrecognized name space prefix, +// it uses the prefix as the Space rather than report an error. +func (d *Decoder) Token() (Token, error) { + var t Token + var err error + if d.stk != nil && d.stk.kind == stkEOF { + return nil, io.EOF + } + if d.nextToken != nil { + t = d.nextToken + d.nextToken = nil + } else if t, err = d.rawToken(); err != nil { + if err == io.EOF && d.stk != nil && d.stk.kind != stkEOF { + err = d.syntaxError("unexpected EOF") + } + return t, err + } + + if !d.Strict { + if t1, ok := d.autoClose(t); ok { + d.nextToken = t + t = t1 + } + } + switch t1 := t.(type) { + case StartElement: + // In XML name spaces, the translations listed in the + // attributes apply to the element name and + // to the other attribute names, so process + // the translations first. + for _, a := range t1.Attr { + if a.Name.Space == xmlnsPrefix { + v, ok := d.ns[a.Name.Local] + d.pushNs(a.Name.Local, v, ok) + d.ns[a.Name.Local] = a.Value + } + if a.Name.Space == "" && a.Name.Local == xmlnsPrefix { + // Default space for untagged names + v, ok := d.ns[""] + d.pushNs("", v, ok) + d.ns[""] = a.Value + } + } + + d.translate(&t1.Name, true) + for i := range t1.Attr { + d.translate(&t1.Attr[i].Name, false) + } + d.pushElement(t1.Name) + t = t1 + + case EndElement: + d.translate(&t1.Name, true) + if !d.popElement(&t1) { + return nil, d.err + } + t = t1 + } + return t, err +} + +const ( + xmlURL = "http://www.w3.org/XML/1998/namespace" + xmlnsPrefix = "xmlns" + xmlPrefix = "xml" +) + +// Apply name space translation to name n. +// The default name space (for Space=="") +// applies only to element names, not to attribute names. +func (d *Decoder) translate(n *Name, isElementName bool) { + switch { + case n.Space == xmlnsPrefix: + return + case n.Space == "" && !isElementName: + return + case n.Space == xmlPrefix: + n.Space = xmlURL + case n.Space == "" && n.Local == xmlnsPrefix: + return + } + if v, ok := d.ns[n.Space]; ok { + n.Space = v + } else if n.Space == "" { + n.Space = d.DefaultSpace + } +} + +func (d *Decoder) switchToReader(r io.Reader) { + // Get efficient byte at a time reader. + // Assume that if reader has its own + // ReadByte, it's efficient enough. + // Otherwise, use bufio. + if rb, ok := r.(io.ByteReader); ok { + d.r = rb + } else { + d.r = bufio.NewReader(r) + } +} + +// Parsing state - stack holds old name space translations +// and the current set of open elements. The translations to pop when +// ending a given tag are *below* it on the stack, which is +// more work but forced on us by XML. +type stack struct { + next *stack + kind int + name Name + ok bool +} + +const ( + stkStart = iota + stkNs + stkEOF +) + +func (d *Decoder) push(kind int) *stack { + s := d.free + if s != nil { + d.free = s.next + } else { + s = new(stack) + } + s.next = d.stk + s.kind = kind + d.stk = s + return s +} + +func (d *Decoder) pop() *stack { + s := d.stk + if s != nil { + d.stk = s.next + s.next = d.free + d.free = s + } + return s +} + +// Record that after the current element is finished +// (that element is already pushed on the stack) +// Token should return EOF until popEOF is called. +func (d *Decoder) pushEOF() { + // Walk down stack to find Start. + // It might not be the top, because there might be stkNs + // entries above it. + start := d.stk + for start.kind != stkStart { + start = start.next + } + // The stkNs entries below a start are associated with that + // element too; skip over them. + for start.next != nil && start.next.kind == stkNs { + start = start.next + } + s := d.free + if s != nil { + d.free = s.next + } else { + s = new(stack) + } + s.kind = stkEOF + s.next = start.next + start.next = s +} + +// Undo a pushEOF. +// The element must have been finished, so the EOF should be at the top of the stack. +func (d *Decoder) popEOF() bool { + if d.stk == nil || d.stk.kind != stkEOF { + return false + } + d.pop() + return true +} + +// Record that we are starting an element with the given name. +func (d *Decoder) pushElement(name Name) { + s := d.push(stkStart) + s.name = name +} + +// Record that we are changing the value of ns[local]. +// The old value is url, ok. +func (d *Decoder) pushNs(local string, url string, ok bool) { + s := d.push(stkNs) + s.name.Local = local + s.name.Space = url + s.ok = ok +} + +// Creates a SyntaxError with the current line number. +func (d *Decoder) syntaxError(msg string) error { + return &SyntaxError{Msg: msg, Line: d.line} +} + +// Record that we are ending an element with the given name. +// The name must match the record at the top of the stack, +// which must be a pushElement record. +// After popping the element, apply any undo records from +// the stack to restore the name translations that existed +// before we saw this element. +func (d *Decoder) popElement(t *EndElement) bool { + s := d.pop() + name := t.Name + switch { + case s == nil || s.kind != stkStart: + d.err = d.syntaxError("unexpected end element ") + return false + case s.name.Local != name.Local: + if !d.Strict { + d.needClose = true + d.toClose = t.Name + t.Name = s.name + return true + } + d.err = d.syntaxError("element <" + s.name.Local + "> closed by ") + return false + case s.name.Space != name.Space: + d.err = d.syntaxError("element <" + s.name.Local + "> in space " + s.name.Space + + "closed by in space " + name.Space) + return false + } + + // Pop stack until a Start or EOF is on the top, undoing the + // translations that were associated with the element we just closed. + for d.stk != nil && d.stk.kind != stkStart && d.stk.kind != stkEOF { + s := d.pop() + if s.ok { + d.ns[s.name.Local] = s.name.Space + } else { + delete(d.ns, s.name.Local) + } + } + + return true +} + +// If the top element on the stack is autoclosing and +// t is not the end tag, invent the end tag. +func (d *Decoder) autoClose(t Token) (Token, bool) { + if d.stk == nil || d.stk.kind != stkStart { + return nil, false + } + name := strings.ToLower(d.stk.name.Local) + for _, s := range d.AutoClose { + if strings.ToLower(s) == name { + // This one should be auto closed if t doesn't close it. + et, ok := t.(EndElement) + if !ok || et.Name.Local != name { + return EndElement{d.stk.name}, true + } + break + } + } + return nil, false +} + +var errRawToken = errors.New("xml: cannot use RawToken from UnmarshalXML method") + +// RawToken is like Token but does not verify that +// start and end elements match and does not translate +// name space prefixes to their corresponding URLs. +func (d *Decoder) RawToken() (Token, error) { + if d.unmarshalDepth > 0 { + return nil, errRawToken + } + return d.rawToken() +} + +func (d *Decoder) rawToken() (Token, error) { + if d.t != nil { + return d.t.Token() + } + if d.err != nil { + return nil, d.err + } + if d.needClose { + // The last element we read was self-closing and + // we returned just the StartElement half. + // Return the EndElement half now. + d.needClose = false + return EndElement{d.toClose}, nil + } + + b, ok := d.getc() + if !ok { + return nil, d.err + } + + if b != '<' { + // Text section. + d.ungetc(b) + data := d.text(-1, false) + if data == nil { + return nil, d.err + } + return CharData(data), nil + } + + if b, ok = d.mustgetc(); !ok { + return nil, d.err + } + switch b { + case '/': + // ' { + d.err = d.syntaxError("invalid characters between ") + return nil, d.err + } + return EndElement{name}, nil + + case '?': + // ' { + break + } + b0 = b + } + data := d.buf.Bytes() + data = data[0 : len(data)-2] // chop ?> + + if target == "xml" { + content := string(data) + ver := procInst("version", content) + if ver != "" && ver != "1.0" { + d.err = fmt.Errorf("xml: unsupported version %q; only version 1.0 is supported", ver) + return nil, d.err + } + enc := procInst("encoding", content) + if enc != "" && enc != "utf-8" && enc != "UTF-8" && !strings.EqualFold(enc, "utf-8") { + if d.CharsetReader == nil { + d.err = fmt.Errorf("xml: encoding %q declared but Decoder.CharsetReader is nil", enc) + return nil, d.err + } + newr, err := d.CharsetReader(enc, d.r.(io.Reader)) + if err != nil { + d.err = fmt.Errorf("xml: opening charset %q: %v", enc, err) + return nil, d.err + } + if newr == nil { + panic("CharsetReader returned a nil Reader for charset " + enc) + } + d.switchToReader(newr) + } + } + return ProcInst{target, data}, nil + + case '!': + // ' { + d.err = d.syntaxError( + `invalid sequence "--" not allowed in comments`) + return nil, d.err + } + break + } + b0, b1 = b1, b + } + data := d.buf.Bytes() + data = data[0 : len(data)-3] // chop --> + return Comment(data), nil + + case '[': // . + data := d.text(-1, true) + if data == nil { + return nil, d.err + } + return CharData(data), nil + } + + // Probably a directive: , , etc. + // We don't care, but accumulate for caller. Quoted angle + // brackets do not count for nesting. + d.buf.Reset() + d.buf.WriteByte(b) + inquote := uint8(0) + depth := 0 + for { + if b, ok = d.mustgetc(); !ok { + return nil, d.err + } + if inquote == 0 && b == '>' && depth == 0 { + break + } + HandleB: + d.buf.WriteByte(b) + switch { + case b == inquote: + inquote = 0 + + case inquote != 0: + // in quotes, no special action + + case b == '\'' || b == '"': + inquote = b + + case b == '>' && inquote == 0: + depth-- + + case b == '<' && inquote == 0: + // Look for